ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL0NPUFlJTkcuTUlUCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjk1MGRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IAotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIAotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIAotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIAotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIAotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiAKLVRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTA1ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGlzIGxheWVyIGRlcGVuZHMgb246Ci0KLVVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybyAKLXJldmlzaW9uOiBIRUFECi0KLVVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWxheWVyczogbWV0YS1vZSwgbWV0YS1weXRob24KLWJyYW5jaDogcHlybyAKLXJldmlzaW9uOiBIRUFECi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1lZmxdW3B5cm9dJyBpbiB0aGUgc3ViamVjdCcKLQotV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZWZsXVtweXJvXVtQQVRDSCcKLQotcHlybyBicmFuY2ggbWFpbnRhaW5lcihzKToKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS1iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS1iYXNlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYWUyMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2UtYmFzZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lbmxpZ2h0ZW5tZW50Lm9yZyIKLVNSQ05BTUUgPz0gIiR7QlBOfSIKLVNSQ1ZFUiA/PSAiJHtQVn0iCi0KLUVGTF9TUkNSRVYgPz0gIjgyMDcwIgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9IgotCi0jIGVhY2ggZWZsIG9yIGUxNyBtb2R1bGUgaXMgaW5zdGFsbGluZyBtb2R1bGUuc28gaW4gZGlmZmVyZW50IGRpcmVjdG9yeSwgZGlzYWJsZSBzaGxpYnMgcHJvdmlkZXJzIGZvciB0aGVtCi0jIGV2YXMtZW5naW5lLWdsLXgxMS0xLjcuNyBldmFzLWVuZ2luZS1zb2Z0d2FyZS0xNi0xLjcuNyBldmFzLWVuZ2luZS1zb2Z0d2FyZS0xNi14MTEtMS43LjcgZXZhcy1lbmdpbmUtc29mdHdhcmUteDExLTEuNy43IGV2YXMtZW5naW5lLXdheWxhbmQtc2htLTEuNy43IGV2YXMtY3NlcnZlMi1ibXAtMS43LjcgZXZhcy1jc2VydmUyLWVldC0xLjcuNyBldmFzLWNzZXJ2ZTItaWNvLTEuNy43IGV2YXMtY3NlcnZlMi1qcGVnLTEuNy43IGV2YXMtY3NlcnZlMi1wbWFwcy0xLjcuNyBldmFzLWNzZXJ2ZTItcG5nLTEuNy43IGV2YXMtY3NlcnZlMi1wc2QtMS43LjcgZXZhcy1jc2VydmUyLXRnYS0xLjcuNyBldmFzLWNzZXJ2ZTItdGlmZi0xLjcuNyBldmFzLWNzZXJ2ZTItd2JtcC0xLjcuNyBldmFzLWNzZXJ2ZTIteHBtLTEuNy43IGV2YXMtbG9hZGVyLWJtcC0xLjcuNyBldmFzLWxvYWRlci1nZW5lcmljLTEuNy43IGV2YXMtbG9hZGVyLWdpZi0xLjcuNyBldmFzLWxvYWRlci1pY28tMS43LjcgZXZhcy1sb2FkZXItanBlZy0xLjcuNyBldmFzLWxvYWRlci1wbWFwcy0xLjcuNyBldmFzLWxvYWRlci1wbmctMS43LjcgZXZhcy1sb2FkZXItcHNkLTEuNy43IGV2YXMtbG9hZGVyLXRnYS0xLjcuNyBldmFzLWxvYWRlci10aWZmLTEuNy43IGV2YXMtbG9hZGVyLXdibXAtMS43LjcgZXZhcy1sb2FkZXIteHBtLTEuNy43IGV2YXMtc2F2ZXItanBlZy0xLjcuNyBldmFzLXNhdmVyLXBuZy0xLjcuNyBldmFzLXNhdmVyLXRpZmYtMS43LjcgZXZhcy1lbmdpbmUtZmItMS43LjcKLSMgZW1vdGlvbi0xLjcuNyBlbGVtZW50YXJ5LTEuNy43IGVsZW1lbnRhcnktdGVzdHMtMS43LjcgZWxlbWVudGFyeS1hY2Nlc3NpYmlsaXR5LTEuNy43IGUtd20tMC4xNy4zIGVsZmUtMC4wLjErc3ZucjgyMDcwIHNoci1lLWdhZGdldHMtMC4wLjArZ2l0cjErMjdiNmMxN2Q3MyBjcHUtMC4wLjErc3ZucjgyMDcwIHBsYWNlcy0wLjEuMCtzdm5yODIwNzAgZm9yZWNhc3RzLTAuMi4wK3N2bnI4MjA3MCB1cHRpbWUtMC4wLjIrc3ZucjgyMDcwIHNjcmVlbnNob3QtMC4zLjArc3ZucjgyMDcwIGV4YWx0LWNsaWVudC0wLjAuMStzdm5yODIwNzAgZGlza2lvLTAuMC4xK3N2bnI4MjA3MCByYWluLTAuMC4zK3N2bnI4MjA3MCBuZXdzLTAuMS4wK3N2bnI4MjA3MCBmbGFtZS0wLjAuMytzdm5yODIwNzAKLVBSSVZBVEVfTElCUyA9ICJtb2R1bGUuc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2UuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlODBiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU0VDVElPTiA9ICJlL2FwcHMiCi0KLWluaGVyaXQgZS1iYXNlIGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCi0KLWRvX3ByZXBzb3VyY2VzICgpIHsKLSAgICBtYWtlIGNsZWFuIGRpc3RjbGVhbiB8fCB0cnVlCi19Ci1hZGR0YXNrIHByZXBzb3VyY2VzIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkkKGluY2x1ZGVkaXIpJzonLUkuJzpnCi19Ci0KLWV4cG9ydCBDVVJMX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXJsLWNvbmZpZyIKLWV4cG9ydCBGUkVFVFlQRV9DT05GSUcgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZnJlZXR5cGUtY29uZmlnIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGhlbWVzIgotUEFDS0FHRVMgKz0gIiR7UE59LWxpYiIKLQotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS10aGVtZXMgPSAiJHtkYXRhZGlyfS8ke1BOfS90aGVtZXMgJHtkYXRhZGlyfS8ke1BOfS9kYXRhICR7ZGF0YWRpcn0vJHtQTn0vZm9udHMgJHtkYXRhZGlyfS8ke1BOfS9wb2ludGVycyAke2RhdGFkaXJ9LyR7UE59L2ltYWdlcyAke2RhdGFkaXJ9LyR7UE59L3VzZXJzICR7ZGF0YWRpcn0vJHtQTn0vaW1hZ2VzICR7ZGF0YWRpcn0vJHtQTn0vc3R5bGVzIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqLnNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2VmbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2VmbC5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjQwZTRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvY2xhc3Nlcy9lZmwuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNFQ1RJT04gPSAiZS9saWJzIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1ERVBFTkRTICs9ICJwa2djb25maWctbmF0aXZlIgotCi0jIHJldmlzaW9uIDBkOTNlYzg0YjMwYmMxYmVlMmNhYWVlNzJkNjY3Zjg3YmM0NjhhNzAgbWFkZSBTUkNEQVRFIGFuZCBoZW5jZSBQViBnbyBiYWNrd2FyZHMsIHNvIHdlIG5lZWQgdG8gdXAgUEUgdG8gdW5icmVhayBidWlsZHMgYW5kIGZlZWRzIDooCi1QRSA9ICIyIgotCi1pbmhlcml0IGUtYmFzZSBhdXRvdG9vbHMKLQotIyBldmFzLW5hdGl2ZSBsb29rcyBhdCB0aGlzIHZhciwgc28ga2VlcCBpdAotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCAoKSB7Ci0gICAgZm9yIGkgaW4gYGZpbmQgJHtCfS8gLW5hbWUgIioucGMiIC10eXBlIGZgIDsgZG8gXAotICAgICAgICBzZWQgLWkgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTotTFwkXHtsaWJkaXJcfTpnJyAtZSAnczotSSR7U1RBR0lOR19MSUJESVJ9Oi1JXCRce2xpYmRpclx9OmcnIC1lICdzOi1JJHtTVEFHSU5HX0lOQ0RJUn06LUlcJFx7aW5jbHVkZWRpclx9OmcnICRpCi0gICAgZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGhlbWVzIgotUEFDS0FHRVMgKz0gIiR7UE59LXRlc3RzIgotUEFDS0FHRVMgKz0gIiR7UE59LWVvbGlhbiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vZWRqZS9tb2R1bGVzLyR7UE59LyovbW9kdWxlLnNvIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS9wbHVnaW5zLyouc28gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKiBcCi0iCi0KLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIiR7ZGF0YWRpcn0vJHtQTn0vdGhlbWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L2RhdGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS9wbHVnaW5zL2RhdGEvKi5lZGogXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vZm9udHMgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vcG9pbnRlcnMgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vaW1hZ2VzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L3VzZXJzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L2ltYWdlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS9zdHlsZXMiCi0KLUZJTEVTXyR7UE59LWRldiAgICs9ICIke2JpbmRpcn0vJHtQTn0tY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWIqLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS8qLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vZWRqZV9leHRlcm5hbHMgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9lZGplL21vZHVsZXMvJHtQTn0vKi9tb2R1bGUubGEgXAotIgotCi1GSUxFU18ke1BOfS1lb2xpYW4gPSAiIFwKLSAgICAke2RhdGFkaXJ9L2VvbGlhbi9pbmNsdWRlIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyovKi5hIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gICAiJHtsaWJkaXJ9LyR7UE59Ly5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59LyovLmRlYnVnIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZWRqZS9tb2R1bGVzLyR7UE59LyovLmRlYnVnL21vZHVsZS5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LXRlc3RzICA9ICIke2JpbmRpcn0vJHtQTn0gXAotICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS8qXyogXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvZGlzdHJvL2luY2x1ZGUvZWZsLWZyb20tc3ZuLXJlY2lwZXMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jb25mL2Rpc3Ryby9pbmNsdWRlL2VmbC1mcm9tLXN2bi1yZWNpcGVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhOGVhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvZGlzdHJvL2luY2x1ZGUvZWZsLWZyb20tc3ZuLXJlY2lwZXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRUZMX1BSRUZFUlJFRF9WRVJTSU9OID89ICIxLjcuNCtzdm4lIgotRUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTiA/PSAiMS43LjArc3ZuJSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fZS13bSA/PSAiMC4xNy4wK3N2bnIlIgotCi1QUkVGRVJSRURfVkVSU0lPTl9lY29yZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWNvcmUtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGJ1cyA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWRidXMtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGplID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGplLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWRqZS1uYXRpdmVzZGsgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VlemUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VlemUtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZnJlZXQgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VmcmVldC1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VpbmEgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VpbmEtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lbWJyeW8gPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VtYnJ5by1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V2YXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V2YXMtZ2VuZXJpYy1sb2FkZXJzID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9ldmFzLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZXhwZWRpdGUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V4cGVkaXRlLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotCi1QUkVGRVJSRURfVkVSU0lPTl9lZXQgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VldC1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fZWlvID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9laW8tbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lbW90aW9uID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9ldGh1bWIgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VsZW1lbnRhcnkgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLWVsZW1lbnRhcnkgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWNvcmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWRidXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWRqZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1BZVEhPTl9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbi1lbW90aW9uID89ICIke0VGTF9QUkVGRVJSRURfUFlUSE9OX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLWV2YXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi0KLVBSRUZFUlJFRF9WRVJTSU9OX3Rlcm1pbm9sb2d5ID89ICIwLjIuMCtzdm4lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5MGNlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvbGF5ZXIuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRIIAotQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCi0KLSMgV2UgaGF2ZSBhIHJlY2lwZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gImVmbC1sYXllciIKLUJCRklMRV9QQVRURVJOX2VmbC1sYXllciA6PSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV9lZmwtbGF5ZXIgPSAiNyIKLQotIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCi0jIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCi1MQVlFUlZFUlNJT05fZWZsLWxheWVyID0gIjEiCi0KLUxBWUVSREVQRU5EU19lZmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCi0KLUVfTUlSUk9SID0gImh0dHA6Ly9kb3dubG9hZC5lbmxpZ2h0ZW5tZW50Lm9yZy9yZWxlYXNlcyIKLUVfUkVMRUFTRVMgPSAiaHR0cDovL2Rvd25sb2FkLmVubGlnaHRlbm1lbnQub3JnL3JlbCIKLUVfU1ZOID0gInN2bjovL3N2bi5lbmxpZ2h0ZW5tZW50Lm9yZy9zdm4vZSIKLQotIyBSREVQRU5EUyBvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHByb3ZpZGVyIG9wa2ctdXRpbHMKLVNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIlwKLSAgZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS0+b3BrZy11dGlscyBcCi0iCi0KLSMgUkRFUEVORFMgb24gZS13bQotU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiXAotICBlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodC0+ZS13bSBcCi0gIGUtd20tdGhlbWUtaWxsdW1lLW5lby0+ZS13bSBcCi0gIGUtd20tdGhlbWUtYi1hbmQtdy0+ZS13bSBcCi0iCi0KLVNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCi0gIHBhY2thZ2Vncm91cC1lZmwtc2RrLT5wYWNrYWdlZ3JvdXAtY29yZS1zZGsgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXRvb2xjaGFpbi1lZmwuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtdG9vbGNoYWluLWVmbC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdiN2ZjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtdG9vbGNoYWluLWVmbC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotVE9PTENIQUlOX1RBUkdFVF9FRkxUQVNLID89ICJwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldCBwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC1kYmciCi1UT09MQ0hBSU5fVEFSR0VUX1RBU0sgPSAiJHtUT09MQ0hBSU5fVEFSR0VUX0VGTFRBU0t9IgotVE9PTENIQUlOX09VVFBVVE5BTUUgPSAiJHtTREtfTkFNRX0tdG9vbGNoYWluLWVmbC0ke0RJU1RST19WRVJTSU9OfSIKLXJlcXVpcmUgcmVjaXBlcy1jb3JlL21ldGEvbWV0YS10b29sY2hhaW4uYmIKLQotVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRSArPSAiemxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkYnVzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkYnVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M2MDA4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1cy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICIke1BOfSBiaW5kaW5ncyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLUFVVEhPUiA9ICJHdXN0YXZvIFN2ZXJ6dXQgQmFyYmllcmkgPGJhcmJpZXJpQGdtYWlsLmNvbT4iCi0jIE5PVEU6IER1ZSB0byBhIGJ1ZyBpbiBkaXN0dXRpbHMsIGV2ZW4gaWYgd2UgZG9uJ3QgdXNlIHB5cmV4IGJ1dCBjeXRob24sCi0jIHdlIG5lZWQgdG8gYnVpbGQgcHlyZXggb3RoZXJ3aXNlIGN5dGhvbiBkb2Vzbid0IGdldCBjYWxsZWQgdG8gYnVpbGQKLSMgdGhlIGV4dGVuc2lvbiBtb2R1bGVzLgotREVQRU5EUyA9ICJweXRob24tY3l0aG9uLW5hdGl2ZSBweXRob24tcHlyZXgtbmF0aXZlIHB5dGhvbi1udW1lcmljIGVpbmEgZWRidXMgcHl0aG9uLWRidXMiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWxhbmcgcHl0aG9uLWRidXMiCi0KLWluaGVyaXQgZS1iYXNlIGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzLWJhc2UKLQotU1JDTkFNRSA9ICJweXRob24tZV9kYnVzIgotU1JDVkVSID0gIiR7UFZ9IgotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfTUlSUk9SfS9CSU5ESU5HUy9weXRob24vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmJ6MiBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0iCi0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBwcmVmaXggQ1lUSE9OXy4qX0lOQ0xVREVESVIgd2l0aCBwYXRoIHRvIFNUQUdJTkdfRElSX0hPU1QgYWxzbyB1c2UgJFBLR19DT05GSUcgaW5zdGVhZCBvZiBwa2ctY29uZmlnIGRpcmVjdGx5Ci0gICAgc2VkIC1pICJzIz1cYFwkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgXCJweXRob24tZXZhcyM9JHtTVEFHSU5HX0RJUl9IT1NUfVxgXCRQS0dfQ09ORklHIC0tdmFyaWFibGU9aW5jbHVkZWRpciBcInB5dGhvbi1ldmFzI2ciICR7U30vY29uZmlndXJlLmFjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgLWUgZXhhbXBsZXMgXTsgdGhlbgotICAgICAgICBmb3IgaSBpbiBgZmluZCBleGFtcGxlcyAtbmFtZSAiKi5lZGMiYDsgZG8KLSAgICAgICAgICAgIGNkICR7U30vYGRpcm5hbWUgJGlgCi0gICAgICAgICAgICBlY2hvICJHZW5lcmF0aW5nIC5lZGogZmlsZSBmb3IgJGkuLi4iCi0gICAgICAgICAgICBlZGplX2NjIGBiYXNlbmFtZSAkaWAKLSAgICAgICAgICAgIGVjaG8gIlJlbW92aW5nIHNvdXJjZXMgaW4gdGhpcyBkaXJlY3RvcnkuLi4iCi0gICAgICAgICAgICBybSAtZiAqLmVkYyAqLnBuZyAqLnR0ZiAqLmpwZWcKLSAgICAgICAgZG9uZQotICAgICAgICBjZCAke1N9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtQTn0vCi0gICAgICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12IGV4YW1wbGVzICR7RH0ke2RhdGFkaXJ9LyR7UE59LwotICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIC1uYW1lICIuc3ZuIiB8IHhhcmdzIHJtIC1yZgotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8qLmVnZy8qLyovLmRlYnVnIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tZXhhbXBsZXMiCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRidXNfMS43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1c18xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhY2Y4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1c18xLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVBSID0gInIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDBiNDc5NDQ0YmIwNjE0NzQyOWEyNzYxMjc5ODE4OTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzhlNWNhMzM0ZWUyNTE4NTc0ODY2MGI0ZTYxMmY5ODRmNGQzYmNlZDAxOGYwNjIyNzg3MDE0Mjk4NjhmMTE3YiIKLQotUE5CTEFDS0xJU1RbcHl0aG9uLWVkYnVzXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwMC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzN2RhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiJHtQTn0gYmluZGluZ3MiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0jIHRoZXJlIGlzIGFsc28gR1BMdjMuMCBpbiBDT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBidXQgbm8gZmlsZSBzZWVtcyB0byB1c2UgdGhhdAotCi1BVVRIT1IgPSAiR3VzdGF2byBTdmVyenV0IEJhcmJpZXJpIDxiYXJiaWVyaUBnbWFpbC5jb20+IgotIyBOT1RFOiBEdWUgdG8gYSBidWcgaW4gZGlzdHV0aWxzLCBldmVuIGlmIHdlIGRvbid0IHVzZSBweXJleCBidXQgY3l0aG9uLAotIyB3ZSBuZWVkIHRvIGJ1aWxkIHB5cmV4IG90aGVyd2lzZSBjeXRob24gZG9lc24ndCBnZXQgY2FsbGVkIHRvIGJ1aWxkCi0jIHRoZSBleHRlbnNpb24gbW9kdWxlcy4KLURFUEVORFMgPSAicHl0aG9uLWN5dGhvbi1uYXRpdmUgcHl0aG9uLXB5cmV4LW5hdGl2ZSBweXRob24tbnVtZXJpYyBweXRob24tZGJ1cyBsdWEgZWZsIGVsZW1lbnRhcnkiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWxhbmciCi0KLVBST1ZJREVTID0gInB5dGhvbi1lY29yZSBweXRob24tZWxkYnVzIHB5dGhvbi1lZGplIHB5dGhvbi1lbGVtZW50YXJ5IHB5dGhvbi1lbW90aW9uIHB5dGhvbi1ldmFzIgotCi1pbmhlcml0IGUtYmFzZSBkaXN0dXRpbHMgcGtnY29uZmlnCi0KLVNSQ1ZFUiA9ICIke1BWfSIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9iaW5kaW5ncy9weXRob24vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7U1JDVkVSfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBkcm9wIGFsbCAucHlvLCBweWMgZmlsZXMKLSAgICBmaW5kICR7RH0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIC1uYW1lIFwqLnB5byAtbyAtbmFtZSBcKi5weWMgfCB4YXJncyBybSAtZgotfQotCi1QQUNLQUdFUyArPSAicHl0aG9uLWVjb3JlIHB5dGhvbi1lbGRidXMgcHl0aG9uLWVkamUgcHl0aG9uLWVsZW1lbnRhcnkgcHl0aG9uLWVtb3Rpb24gcHl0aG9uLWV2YXMgcHl0aG9uLWV0aHVtYiAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3B5dGhvbl9lZmwqZWdnLWluZm8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2VvLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC91dGlscyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvX19pbml0X18ucHkgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLyouZWdnLyovKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvKi8qLmxhIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIgotCi1GSUxFU19weXRob24tZWNvcmUgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2Vjb3JlLyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvZWNvcmUqLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9lY29yZSBcCi0iCi1GSUxFU19weXRob24tZWxkYnVzID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lX2RidXMvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9kYnVzX21haW5sb29wLnNvIFwKLSIKLUZJTEVTX3B5dGhvbi1lZGplID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZGplLyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvZWRqZSouc28gXAotIgotRklMRVNfcHl0aG9uLWVsZW1lbnRhcnkgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VsZW1lbnRhcnkvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9lbGVtZW50YXJ5LyBcCi0iCi1GSUxFU19weXRob24tZW1vdGlvbiA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZW1vdGlvbi8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2Vtb3Rpb24uc28gXAotIgotRklMRVNfcHl0aG9uLWV2YXMgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2V2YXMvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9ldmFzLnNvIFwKLSIKLUZJTEVTX3B5dGhvbi1ldGh1bWIgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2V0aHVtYi8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2V0aHVtYipzbyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsXzEuMTUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlhNzliMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfMS4xNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImY3YzVkNTU3MzM2ZWE5ZGY2OWJjY2EwOWM0MjA3MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExZTYwN2I0NjVjYjY2ZGFmZTA1YzY2ZTAyZDYxZTA5MzM1YjM3MGZlOWZkMmE3NGQ4ODI4MmIzZWU1OTdiY2MiCi0KLVBOQkxBQ0tMSVNUW3B5dGhvbi1lZmxdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyYjllYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ1JFViA9ICI3MWVkMjBlYmY2NjJhN2I3MmU2MDkxM2RmOTRjZTY5MzMyMzZiZjA5IgotUFYgPSAiMS4xMi4wK2dpdCR7U1JDUFZ9IgotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9iaW5kaW5ncy9weXRob24vJHtCUE59LmdpdDticmFuY2g9cHl0aG9uLWVmbC0xLjEyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QTkJMQUNLTElTVFtweXRob24tZWZsXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvY3B1L2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdS9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Yzg1ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvY3B1L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBjcHUvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3B1Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjA6Mzk6NDguMDAwMDAwMDAwICswMDAwCi0rKysgY3B1L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjM5OjU1LjMyMDU1NTg2OCArMDAwMAotQEAgLTEwLDcgKzEwLDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42KQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9jcHVfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmZiOTg4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdV9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWM5MTBiNjQ1ZWRhMDAwNWNjZWM0NmY3NTIwM2RjOTZlIgotCi1QViA9ICIwLjAuMStzdm5yJHtTUkNSRVZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW2NwdV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Rpc2tpb19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9kaXNraW9fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Zjc3OGQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Rpc2tpb19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PTY4YmU3NmQ4MTI2ZmFjZTJmYmJlY2RmMWJjYmUyYjEwIgotCi1QViA9ICIwLjAuMStzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotUE5CTEFDS0xJU1RbZGlza2lvXSA/PSAiYnJva2VuOiBzd2l0Y2ggdG8gaHR0cHM6Ly9naXQuZW5saWdodGVubWVudC5vcmcvZW5saWdodGVubWVudC9tb2R1bGVzL2Rpc2tpby5naXQvIGFuZCBmaXggMC4wLjErc3ZucjgyMDcwLXIwLjAvRS1NT0RVTEVTLUVYVFJBL2Rpc2tpby9lLW1vZHVsZS1kaXNraW8uZWRjOjU4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdvZmYnLiAiZGVmYXVsdCIgc3RhdGUgbXVzdCBhbHdheXMgYmUgZmlyc3QuIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS1tb2R1bGUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS1tb2R1bGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzBmNzk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtbW9kdWxlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkUxNyAke1BOfSBtb2R1bGUiCi1TRUNUSU9OID0gIngxMS9tdWx0aW1lZGlhIgotREVQRU5EUyA9ICJlLXdtIgotCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLUlOQ19QUiA9ICJyMCIKLQotU1JDTkFNRSA9ICJFLU1PRFVMRVMtRVhUUkEvJHtCUE59IgotCi1pbmhlcml0IGUgZ2V0dGV4dAotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuazttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59IgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59LyovLmRlYnVnIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59LyovKi5hIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzLzAwMDEtZGJ1cy1zdHVmZi1Db252ZXJ0LXRvLWVsZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtdGFza3MvMDAwMS1kYnVzLXN0dWZmLUNvbnZlcnQtdG8tZWxkYnVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTJhNzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtdGFza3MvMDAwMS1kYnVzLXN0dWZmLUNvbnZlcnQtdG8tZWxkYnVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLUZyb20gMzcyMjMyODliM2Q4NWVhODg3NmU3YmE3YzlmZjk3ZWM0MjgwNzNiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjIgRmViIDIwMTQgMTQ6MzY6MzggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGJ1cy1zdHVmZjogQ29udmVydCB0byBlbGRidXMKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICB8ICAyICstCi0gc3JjL01ha2VmaWxlLmFtICB8ICAyICstCi0gc3JjL2RidXMtc3R1ZmYuYyB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2RidXMtc3R1ZmYuaCB8IDEzICsrLS0tLS0tCi0gc3JjL21haW4uYyAgICAgICB8ICAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjNlNGQxMi4uNGFjZTMyYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUsNyArMTUsNyBAQCBBQ19IRUFERVJfU1REQwotIAotIEFNX1BST0dfTElCVE9PTAotIAotLVBLR19DSEVDS19NT0RVTEVTKFRBU0tTLCBbZWxlbWVudGFyeSBlaW5hIGRidXMtMSBlZGJ1cyBzcWxpdGUzXSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhUQVNLUywgW2VsZW1lbnRhcnkgZWluYSBkYnVzLTEgZWxkYnVzIHNxbGl0ZTNdKQotIAotIEFDX09VVFBVVChbCi0gTWFrZWZpbGUKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDIxNDNkYzkuLjMxZDUyNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTgsNyArOCw3IEBAIEFNX0NQUEZMQUdTID0gXAotIAkkKFRBU0tTX0NGTEFHUykKLSAKLSBBTV9DRkxBR1MgPVwKLS0gICAgICAgICAkKEVEQlVTX0NGTEFHUykgXAotKyAgICAgICAgICQoRUxEQlVTX0NGTEFHUykgXAotIAkgLVdhbGxcCi0gCSAtZwotIAotZGlmZiAtLWdpdCBhL3NyYy9kYnVzLXN0dWZmLmMgYi9zcmMvZGJ1cy1zdHVmZi5jCi1pbmRleCA1MDgwOWJjLi45ZjAyZWYzIDEwMDY0NAotLS0tIGEvc3JjL2RidXMtc3R1ZmYuYwotKysrIGIvc3JjL2RidXMtc3R1ZmYuYwotQEAgLTEsOCArMSw3IEBACi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqICAgICAgICAgICAgZGJ1cy1zdHVmZi5jCi0gICoKLS0gKiAgQ29weXJpZ2h0ICAyMDA5ICBjY2hhbmRlbAotLSAqICA8Y2NoYW5kZWxAeWFob28uY29tPgotKyAqICBDb3B5cmlnaHQgIDIwMDkgIGNjaGFuZGVsIDxjY2hhbmRlbEB5YWhvby5jb20+Ci0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi0gLyoKLUBAIC0yMSw1MSArMjAsNjcgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgIFVTQQotICAqLwotICNpbmNsdWRlICJkYnVzLXN0dWZmLmgiCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxFX0RCdXMuaD4KLS0jaW5jbHVkZSA8RWxlbWVudGFyeS5oPgotKyNpbmNsdWRlICJFbGRidXMuaCIKLSAKLS12b2lkIG9jY3VweV9jcHUodm9pZCkKLSt2b2lkIG9uX3VzYWdlX2NiKHZvaWQgKmRhdGEgRUlOQV9VTlVTRUQsIGNvbnN0IEVsZGJ1c19NZXNzYWdlICptc2csIEVsZGJ1c19QZW5kaW5nICpwZW5kaW5nIEVJTkFfVU5VU0VEKQotK3sKLSsgICAgICAgIGNvbnN0IGNoYXIgKmVycm5hbWUsICplcnJtc2c7Ci0rICAgICAgICBpZiAoZWxkYnVzX21lc3NhZ2VfZXJyb3JfZ2V0KG1zZywgJmVycm5hbWUsICZlcnJtc2cpKQotKwkgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzICVzXG4iLCBlcnJuYW1lLCBlcnJtc2cpOwotK30KLSsKLStpbnQgb3VzYWdlZF9yZXNvdXJjZShjb25zdCBjaGFyICpyZXNvdXJjZSwgaW50IHVzZWQpCi0gewkKLS0JZV9kYnVzX2luaXQoKTsKLS0JY29ubiA9IGVfZGJ1c19idXNfZ2V0KERCVVNfQlVTX1NZU1RFTSk7Ci0tCQotLQlEQnVzTWVzc2FnZSAqbXNnOwotLQltc2cgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9jYWxsKAotLQkJIm9yZy5mcmVlc21hcnRwaG9uZS5vdXNhZ2VkIiwKLS0JCSIvb3JnL2ZyZWVzbWFydHBob25lL1VzYWdlIiwKLS0JCSJvcmcuZnJlZXNtYXJ0cGhvbmUuVXNhZ2UiLAotLQkJIlJlcXVlc3RSZXNvdXJjZSIKLS0JKTsKLS0JCi0tCWNvbnN0IGNoYXIgKnJlc291cmNlID0gIkNQVSI7Ci0tCWRidXNfbWVzc2FnZV9hcHBlbmRfYXJncyAobXNnLCBEQlVTX1RZUEVfU1RSSU5HLCAmcmVzb3VyY2UsIERCVVNfVFlQRV9JTlZBTElEKTsKLSsJZWxkYnVzX2luaXQoKTsKLSsJY29uc3QgY2hhciAqUkVRVUVTVCA9ICJSZXF1ZXN0UmVzb3VyY2UiOwotKwljb25zdCBjaGFyICpSRUxFQVNFID0gIlJlbGVhc2VSZXNvdXJjZSI7Ci0rCWNvbnN0IGludCAgIFBSRVFVRVNUID0gMTsKLSAKLS0JZV9kYnVzX21lc3NhZ2Vfc2VuZChjb25uLCBtc2csIGRidXNfcmVwbHlfY2IsIC0xLCBOVUxMKTsKLS0JZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7Ci0tfQotKyAgICAgICAgRWxkYnVzX0Nvbm5lY3Rpb24gKmNvbm47Ci0rICAgICAgICBFbGRidXNfT2JqZWN0ICpvYmo7Ci0rICAgICAgICBFbGRidXNfUHJveHkgKnVzYWdlOwotKyAgICAgICAgRWxkYnVzX1BlbmRpbmcgKnBlbmRpbmc7Ci0rCWNvbm4gPSBlbGRidXNfY29ubmVjdGlvbl9nZXQoRUxEQlVTX0NPTk5FQ1RJT05fVFlQRV9TWVNURU0pOwotKyAgICAgICAgaWYgKCFjb25uKQotKyAgICAgICAgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBjb3VsZCBub3QgZ2V0IHN5c3RlbSBidXNcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgfQotIAotLXZvaWQgcmVsZWFzZV9jcHUodm9pZCkKLS17Ci0tCURCdXNNZXNzYWdlICptc2c7Ci0tCW1zZyA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwoCi0tCQkib3JnLmZyZWVzbWFydHBob25lLm91c2FnZWQiLAotLQkJIi9vcmcvZnJlZXNtYXJ0cGhvbmUvVXNhZ2UiLAotLQkJIm9yZy5mcmVlc21hcnRwaG9uZS5Vc2FnZSIsCi0tCQkiUmVsZWFzZVJlc291cmNlIgotLQkpOwotLQkKLS0JY29uc3QgY2hhciAqcmVzb3VyY2UgPSAiQ1BVIjsKLS0JZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdzIChtc2csIERCVVNfVFlQRV9TVFJJTkcsICZyZXNvdXJjZSwgREJVU19UWVBFX0lOVkFMSUQpOwotKyAgICAgICAgb2JqID0gZWxkYnVzX29iamVjdF9nZXQoY29ubiwgIm9yZy5mcmVlc21hcnRwaG9uZS5vdXNhZ2VkIiwgIi9vcmcvZnJlZXNtYXJ0cGhvbmUvVXNhZ2UiKTsKLSsgICAgICAgIGlmICghb2JqKQotKyAgICAgICAgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBjb3VsZCBub3QgZ2V0IG9iamVjdFxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICB9Ci0gCi0tCWVfZGJ1c19tZXNzYWdlX3NlbmQoY29ubiwgbXNnLCBkYnVzX3JlcGx5X2NiLCAtMSwgTlVMTCk7Ci0tCWRidXNfbWVzc2FnZV91bnJlZihtc2cpOwotKyAgICAgICAgdXNhZ2UgPSBlbGRidXNfcHJveHlfZ2V0KG9iaiwgIm9yZy5mcmVlc21hcnRwaG9uZS5Vc2FnZSIpOwotKyAgICAgICAgaWYgKCF1c2FnZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogY291bGQgbm90IGdldCBwcm94eVxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBwZW5kaW5nID0gZWxkYnVzX3Byb3h5X2NhbGwodXNhZ2UsIHVzZWQgPT0gUFJFUVVFU1QgPyBSRVFVRVNUIDogUkVMRUFTRSwgb25fdXNhZ2VfY2IsIE5VTEwsIC0xLCAic3MiLCByZXNvdXJjZSk7Ci0rICAgICAgICBpZiAoIXBlbmRpbmcpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IGNvdWxkIG5vdCBjYWxsXG4iKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsZGJ1c19wcm94eV91bnJlZih1c2FnZSk7Ci0rICAgICAgICBlbGRidXNfb2JqZWN0X3VucmVmKG9iaik7Ci0rICAgICAgICBlbGRidXNfY29ubmVjdGlvbl91bnJlZihjb25uKTsKLSsKLSsgICAgICAgIGVsZGJ1c19zaHV0ZG93bigpOwotKwlyZXR1cm4gRVhJVF9TVUNDRVNTOwotIH0KLSAKLS12b2lkIGRidXNfcmVwbHlfY2Iodm9pZCAqZGF0YSwgREJ1c01lc3NhZ2UgKnJlcGx5bXNnLCBEQnVzRXJyb3IgKmVycm9yKQotK2ludCByZXF1ZXN0X2NwdSh2b2lkKQotIHsKLS0JaWYgKGRidXNfZXJyb3JfaXNfc2V0KGVycm9yKSkgewotLQkJcHJpbnRmKCJFcnJvcjogJXMgLSAlc1xuIiwgZXJyb3ItPm5hbWUsIGVycm9yLT5tZXNzYWdlKTsKLS0JfQotKyAgICAgICAgcmV0dXJuIG91c2FnZWRfcmVzb3VyY2UoIkNQVSIsIDEpOwotIH0KLSAKLStpbnQgcmVsZWFzZV9jcHUodm9pZCkKLSt7Ci0rICAgICAgICByZXR1cm4gb3VzYWdlZF9yZXNvdXJjZSgiQ1BVIiAsIDApOwotK30KLWRpZmYgLS1naXQgYS9zcmMvZGJ1cy1zdHVmZi5oIGIvc3JjL2RidXMtc3R1ZmYuaAotaW5kZXggODNkNDc3OC4uYTNjNzJjYiAxMDA2NDQKLS0tLSBhL3NyYy9kYnVzLXN0dWZmLmgKLSsrKyBiL3NyYy9kYnVzLXN0dWZmLmgKLUBAIC0yLDggKzIsNyBAQAotICAqICAgICAgICAgICAgZGJ1cy5oCi0gICoKLSAgKiAgRnJpIE1hciAgNiAxMjozMjo1NyAyMDA5Ci0tICogIENvcHlyaWdodCAgMjAwOSAgbmlkaGluCi0tICogIDxuaWRoaW5Abmlkcy1sYXB0b3AuaG9tZT4KLSsgKiAgQ29weXJpZ2h0ICAyMDA5ICBuaWRoaW4gPG5pZGhpbkBuaWRzLWxhcHRvcC5ob21lPgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotIC8qCi1AQCAtMjIsMTEgKzIxLDUgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgIFVTQQotICAqLwotIAotLSNpbmNsdWRlIDxFX0RCdXMuaD4KLS0jaW5jbHVkZSA8RWxlbWVudGFyeS5oPgotLQotLXZvaWQgb2NjdXB5X2NwdSh2b2lkKTsKLS12b2lkIHJlbGVhc2VfY3B1KHZvaWQpOwotLXZvaWQgZGJ1c19yZXBseV9jYih2b2lkICpkYXRhLCBEQnVzTWVzc2FnZSAqcmVwbHltc2csIERCdXNFcnJvciAqZXJyb3IpOwotLQotLUVfREJ1c19Db25uZWN0aW9uICpjb25uOwotK2ludCByZXF1ZXN0X2NwdSh2b2lkKTsKLStpbnQgcmVsZWFzZV9jcHUodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKLWluZGV4IDkyZDIxZGUuLjRlNGJiZTIgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jCi0rKysgYi9zcmMvbWFpbi5jCi1AQCAtNzYsNyArNzYsNyBAQCBlbG1fbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCS8vcmVzdG9yZSBzdGF0ZQotIAlyZXN0b3JlX3N0YXRlKCk7Ci0gCi0tCW9jY3VweV9jcHUoKTsKLSsJcmVxdWVzdF9jcHUoKTsKLSAKLSAJZWxtX3J1bigpOwotIAkvL2NsZWFuIHVwIHN0dWZmCi0tLSAKLTEuOC41LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS10YXNrc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VhYjZkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiZS10YXNrcyBpcyBhIHRvZG8gcHJvZ3JhbSBmb3IgT3Blbm1va28gcGhvbmVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2UtdGFza3MvIgotQVVUSE9SID0gImNjaGFuZGVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThmMGUyY2Q0MGUwNTE4OWVjODEyMzJkYTg0YmQ2ZTFhIgotU0VDVElPTiA9ICJlL2FwcHMiCi1ERVBFTkRTID0gImVsZW1lbnRhcnkgZWluYSBlbGRidXMgc3FsaXRlMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotU1JDUkVWID0gIjg5MGY1ZWUzN2QxYTVmZDFjZWIyNDk1OTUwZDE1MTUxZDRjZjc1NmIiCi1QViA9ICIwLjAuMitnaXRyJHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zaHItcHJvamVjdC9lLXRhc2tzLmdpdCIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRidXMtc3R1ZmYtQ29udmVydC10by1lbGRidXMucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0vJHtkYXRhZGlyfS9waXhtYXBzIgotICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS9yZXNvdXJjZXMvZS10YXNrcy5wbmciICIke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcyIKLSAgICBpbnN0YWxsIC1kICIke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgotICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS9yZXNvdXJjZXMvZS10YXNrcy5kZXNrdG9wIiAiJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKLSAgICBpbnN0YWxsIC1kICAiJHtEfS8ke2RhdGFkaXJ9L2UtdGFza3MiCi0gICAgZm9yIGljbyBpbiAiJHtTfS9yZXNvdXJjZXMvIioucG5nOyBkbwotICAgICAgICBpZiBbICIkKGJhc2VuYW1lICRpY28pIiAhPSAiZS10YXNrcy5wbmciIF07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAkaWNvICIke0R9LyR7ZGF0YWRpcn0vZS10YXNrcyIKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIvdXNyL3NoYXJlL2UtdGFza3MvKiAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucy8qIC91c3Ivc2hhcmUvcGl4bWFwcy8qIgotCi1QTkJMQUNLTElTVFtlLXRhc2tzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1iLWFuZC13X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20tdGhlbWUtYi1hbmQtd19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNmU5ZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1iLWFuZC13X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImItYW5kLXcgdGhlbWUgd2FzIGRlZmF1bHQgRTE3IHRoZW1lIGJlZm9yZSBhbHBoYTMgYW5kIHNvbWUgcGVvcGxlIHN0aWxsIHByZWZlcnMgaXQuIgotU0VDVElPTiA9ICJlL3V0aWxzIgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImUtd20iCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLSMgdXBzdHJlYW0gd2FzIGFza2VkIHRvIGluY2x1ZGUgbGljZW5zZSBpbmZvciBpbiBUSEVNRSBkaXIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLVBWID0gIjAuMCtzdm5yJHtTUkNQVn0iCi0KLWluaGVyaXQgZS1iYXNlCi0KLVNSQ05BTUUgPSAiYl9hbmRfdyIKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bmsvVEhFTUVTO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS9lIgotCi1kb19jb21waWxlKCkgewotICAgICMgdW5mb3J0dW5hdGVseSBoYXJkY29kZWQgZWRqZV9jYyBpbiBNYWtlZmlsZQotICAgIHNlZCAtaSAicyNcdGVkamVfY2MjXHQke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyNnIiBNYWtlZmlsZQotICAgIG1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS90aGVtZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vYl9hbmRfdy5lZGogJHtEfSR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL3RoZW1lcy8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLyIKLQotUE5CTEFDS0xJU1RbZS13bS10aGVtZS1iLWFuZC13XSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Utd20tdGhlbWUtYi1hbmQtd10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWItYW5kLXcgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Utd20tdGhlbWUtYi1hbmQtd10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWItYW5kLXctZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQvTElDRU5TRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20tdGhlbWUtaWxsdW1lLWVmZW5uaWh0L0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmIyZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTIxMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZWZlbm5paHQgaWxsdW1lIHRoZW1lIC0gRWZlbm5paHQgd2FzIGRldmlzZWQgdG8gYmUgY2xlYW4gXAotYW5kIG5ldXRyYWwuIEl0cyBuYW1lICh3aGljaCBtZWFucyBlcXVpbm94KSBjb21lcyBmcm9tIHRoZSBjaHJvbWF0aWMgZHVhbGl0eSBcCi10aGF0IHdhcyBkZWNpZGVkIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZywgd2l0aCBhIGRhcmsgdGhlbWUgKGJsYWNrIGFuZCBvcmFuZ2UpIFwKLWFuZCBhIGJyaWdodCBvbmUgKHdoaXRlIGFuZCBibHVlKSB0byBiZSBkZXZlbG9wZWQgc28gdGhhdCBtb3JlIHBlb3BsZSBmZWVsIFwKLWNvbWZvcnRhYmxlIHVzaW5nIGl0LiBFZmVubmlodCB1c2VzIGZldyBhbmltYXRpb25zLCBkaXNjcmV0ZSBjb250cmFzdHMgYmV0d2VlbiBcCi1zaGFkZXMgb2YgZ3JheSBhbmQgZmluZSBsaW5lcyAoY29sb3JlZCkgdGhhdCBvdXRsaW5lIHRoZSBzZWxlY3RlZCBlbGVtZW50cy4iCi1TRUNUSU9OID0gImUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vdHJhYy5lbmxpZ2h0ZW5tZW50Lm9yZy9lL3dpa2kvVGhlbWVzI0VmZW5uaWh0IgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImUtd20iCi1SU1VHR0VTVFNfJHtQTn0gPSAiZWxlbWVudGFyeS10aGVtZS1lZmVubmlodCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9MSUNFTlNFO21kNT1mNTIzYWI1OTg2Y2M3OWI1MmE5MGQyYWMzZDU0NTRhMiIKLQotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi1QViA9ICIwLjArc3ZuciR7U1JDUFZ9IgotCi1pbmhlcml0IGUtYmFzZSBhbGxhcmNoCi0KLVNSQ05BTUUgPSAiZWZlbm5paHQiCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1RIRU1FUzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwIFwKLSAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UgXAotIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgLWlkICR7U30vaW1hZ2VzICR7U30vZWZlbm5paHQuZWRjIC1vICR7U30vZWZlbm5paHQuZWRqCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2VmZW5uaWh0LmVkaiAke0R9JHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS90aGVtZXMvIgotCi1QTkJMQUNLTElTVFtlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZTk2NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEVubGlnaHRlbm1lbnQgV2luZG93IE1hbmFnZXIgVmVyc2lvbiAxNyIKLURFUEVORFMgPSAiZWV0IGV2YXMgZWluYSBlY29yZSBlZGplIGVmcmVldCBlZGJ1cyBlZXplIGVpbyBlbGVtZW50YXJ5IGxpYnhjYiB4Y2ItdXRpbC1rZXlzeW1zIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmRlMjkwZWIzZmRkYTEyMTIxODMwMTkxYzE1MmE3ZCIKLVNSQ05BTUUgPSAiZSIKLQotaW5oZXJpdCBlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dCBwa2djb25maWcKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLC0tZGlzYWJsZS1wYW0sbGlicGFtIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lZXQtZWV0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZXQgXAotICAgIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfS9YMTEgXAotICAgIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgIC0tZW5hYmxlLXNpbXBsZS14MTEgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdHJ1ZQotICAgIHNlZCAnL14gKkVGTF9QS0dfQ0hFQ0tfVkFSLyBzL3N5c3RlbWR1c2VydW5pdGRpci9zeXN0ZW1kc3lzdGVtdW5pdGRpci9nJyAtaSAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGN1c3RvbWlzaW5nIC0gc2hvdWxkIHJhdGhlciBtYWtlIHRoaXMgc2ltcGxlIHVwc3RyZWFtCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lICR7RH0vJHtiaW5kaXJ9Ci0KLSAgICAjIHNlY3VyaXR5IHJlYXNvbnMsIGUtd20gY2hlY2tzIHRoYXQgaW4gcnVudGltZQotICAgICMgeGluaXRbNDE4XTogRVJST1I6IENPTkZJR1VSQVRJT04gRklMRSBIQVMgQkFEIFBFUk1JU1NJT05TCi0gICAgY2htb2QgNjAwICR7RH0vJHtzeXNjb25mZGlyfS9lbmxpZ2h0ZW5tZW50L3N5c2FjdGlvbnMuY29uZgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0veGRnL21lbnVzCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9hcHBsaWNhdGlvbnMubWVudSAke0R9LyR7c3lzY29uZmRpcn0veGRnL21lbnVzLwotICAgIGZvciBJIGluIGBmaW5kICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQgLW5hbWUgIiouYSIgLXByaW50YDsgZG8gcm0gLWYgJEk7IGRvbmUKLSAgICBmb3IgSSBpbiBgZmluZCAke0R9LyR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50IC1uYW1lICIqLmxhIiAtcHJpbnRgOyBkbyBybSAtZiAkSTsgZG9uZQotCi0gICAgIyB3b3JrIGFyb3VuZCBmb3IgaXNzdWUgY2F1c2VkIGluIHI3ODk3OCwgbW9yZSBpbmZvciBpbjoKLSAgICAjIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMTIxMTE4MTk0OTA0LkdBMzQzOCU0MGphbWEuamFtYS5uZXQmZm9ydW1fbmFtZT1lbmxpZ2h0ZW5tZW50LWRldmVsCi0gICAgbXYgJHtEfS8ke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL3BvbGljaWVzICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUyLyBcCi0gICAgICB8fCBlY2hvICJpbGx1bWUyIHBvbGljaWVzIGFyZSBpbiBjb3JyZWN0IHBsYWNlIG5vdyIKLSAgICBtdiAke0R9LyR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMva2V5Ym9hcmRzICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUyLyBcCi0gICAgICB8fCBlY2hvICJpbGx1bWUyIGtleWJvYXJkcyBhcmUgaW4gY29ycmVjdCBwbGFjZSBub3ciCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgc2hhcmVkLW1pbWUtaW5mbyBcCi0gICAgbWltZS1zdXBwb3J0IFwKLSAgICBzZXR4a2JtYXAgXAotICAgIGVkamUtdXRpbHMgXAotICAgICR7UE59LXV0aWxzIFwKLSAgICBkYnVzLXgxMSBcCi0iCi0KLSMgVWNsaWJjIGJ1aWxkIGRvbid0IGhhdmUgJ2dsaWJjLXV0aWxzJwotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzICIKLQotIyBUaGUgc3lzdHJheSBtb2R1bGUgdXNlZCB0byBiZSBleHRlcm5hbCwgYnV0IGlzIHBhcnQgb2YgZS13bSBub3cKLVJSRVBMQUNFU18ke1BOfSA9ICJzeXN0cmF5IgotCi1SUkVQTEFDRVNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke1BOfS1jb25maWctaWxsdW1lMiIKLVJDT05GTElDVFNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke1BOfS1jb25maWctaWxsdW1lMiIKLVJQUk9WSURFU18ke1BOfS1jb25maWctbW9iaWxlID0gIiR7UE59LWNvbmZpZy1pbGx1bWUyIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWNvbmZpZy1kZWZhdWx0IFwKLSAgICAke1BOfS1jb25maWctbW9iaWxlIFwKLSAgICAke1BOfS1jb25maWctbWluaW1hbGlzdCBcCi0gICAgJHtQTn0tY29uZmlnLW5ldGJvb2sgXAotICAgICR7UE59LWNvbmZpZy1zY2FsZWFibGUgXAotICAgICR7UE59LWNvbmZpZy1zdGFuZGFyZCBcCi0gICAgJHtQTn0tY29uZmlnLXRpbGluZyBcCi0gICAgJHtQTn0tdGhlbWUtZGVmYXVsdCBcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50IFwKLSAgICAke1BOfS1iYWNrZ3JvdW5kLWxpZ2h0LWdyYWRpZW50IFwKLSAgICAke1BOfS1iYWNrZ3JvdW5kcyBcCi0gICAgJHtQTn0taW1hZ2VzIFwKLSAgICAke1BOfS1pY29ucyBcCi0gICAgJHtQTn0tb3RoZXIgXAotICAgICR7UE59LWlucHV0LW1ldGhvZHMgXAotICAgICR7UE59LXN5c2FjdGlvbnMgXAotICAgICR7UE59LXV0aWxzIFwKLSAgICAke1BOfS1tZW51IFwKLSAgICBlZm0tZGVza3RvcC1pY29uIFwKLSAgICBpbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtdGVybWluYWwgXAotIgotCi1FU1lTQUNUSU9OUyA/PSAiJHtQTn0tc3lzYWN0aW9ucyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiXAotICAgICR7UE59LWNvbmZpZy1kZWZhdWx0IFwKLSAgICAke1BOfS1pbWFnZXMgXAotICAgICR7UE59LWljb25zIFwKLSAgICAke1BOfS1vdGhlciBcCi0gICAgJHtQTn0taW5wdXQtbWV0aG9kcyBcCi0gICAgJHtFU1lTQUNUSU9OU30gXAotICAgIGVmcmVldCBcCi0gICAgZXZhcy1nZW5lcmljLWxvYWRlci1zdmcgXAotIgotCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtiaW5kaXJ9LyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3V0aWxzLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLiogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLy5vcmRlciBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9rZXlib2FyZHMvaWdub3JlX2J1aWx0X2luX2tleWJvYXJkcyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvKnBsdWdpbnMvKi8qLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3ByZWxvYWQvZV9wcmVjYWNoZS5zbyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvaWNvbnMgXAotICAgICR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2Zhdm9yaXRlcyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvaW5wdXRfbWV0aG9kcyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL3Byb2ZpbGUuY2ZnIFwKLSAgICAke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvQVVUSE9SUyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L0NPUFlJTkcgXAotICAgICR7ZGF0YWRpcn0veHNlc3Npb25zL2VubGlnaHRlbm1lbnQuZGVza3RvcCBcCi0gICAgJHtzeXNjb25mZGlyfS94ZGcgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfSBcCi0iCi0KLUZJTEVTXyR7UE59LWNvbmZpZy1kZWZhdWx0ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2NvbmZpZy9kZWZhdWx0IgotRklMRVNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvbW9iaWxlIgotRklMRVNfJHtQTn0tY29uZmlnLW1pbmltYWxpc3QgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL21pbmltYWxpc3QiCi1GSUxFU18ke1BOfS1jb25maWctbmV0Ym9vayA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvbmV0Ym9vayIKLUZJTEVTXyR7UE59LWNvbmZpZy1zY2FsZWFibGUgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL3NjYWxlYWJsZSIKLUZJTEVTXyR7UE59LWNvbmZpZy1zdGFuZGFyZCA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvc3RhbmRhcmQiCi1GSUxFU18ke1BOfS1jb25maWctdGlsaW5nID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2NvbmZpZy90aWxpbmciCi1GSUxFU18ke1BOfS10aGVtZS1kZWZhdWx0ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL3RoZW1lcy9kZWZhdWx0LmVkaiIKLUZJTEVTXyR7UE59LXRoZW1lLWRlZmF1bHQgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzL2RlZmF1bHQuZWRqIgotRklMRVNfJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2JhY2tncm91bmRzL0RhcmtfR3JhZGllbnQuZWRqIgotRklMRVNfJHtQTn0tYmFja2dyb3VuZC1saWdodC1ncmFkaWVudCA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9iYWNrZ3JvdW5kcy9MaWdodF9HcmFkaWVudC5lZGoiCi1GSUxFU18ke1BOfS1iYWNrZ3JvdW5kcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9iYWNrZ3JvdW5kcy8qLmVkaiIKLUZJTEVTXyR7UE59LWltYWdlcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pbWFnZXMgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvZmxhZ3MiCi1GSUxFU18ke1BOfS1pY29ucyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pY29ucyIKLUZJTEVTXyR7UE59LW90aGVyID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL290aGVyIgotRklMRVNfJHtQTn0taW5wdXQtbWV0aG9kcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pbnB1dF9tZXRob2RzIgotRklMRVNfJHtQTn0tc3lzYWN0aW9ucyA9ICIke3N5c2NvbmZkaXJ9L2VubGlnaHRlbm1lbnQvc3lzYWN0aW9ucy5jb25mIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvdXRpbHMvKiIKLUZJTEVTXyR7UE59LW1lbnUgPSAiJHtzeXNjb25mZGlyfS94ZGcvbWVudXMvYXBwbGljYXRpb25zLm1lbnUiCi0KLUZJTEVTX2VmbS1kZXNrdG9wLWljb24gPSAiXAotICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2VmbS5kZXNrdG9wIFwKLSAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9lbmxpZ2h0ZW5tZW50X2ZpbGVtYW5hZ2VyLmRlc2t0b3AgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMvZS1tb2R1bGUtZmlsZW1hbi5wbmcgXAotIgotCi1LRVlCT0FSRFNfRElSPSIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS1rZXlib2FyZC9rZXlib2FyZHMiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9EZWZhdWx0LmtiZCBcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9hbHBoYS5wbmcgXAotIgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9OdW1iZXJzLmtiZCBcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9udW1lcmljLnBuZyBcCi0iCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC10ZXJtaW5hbCA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9UZXJtaW5hbC5rYmQgXAotICAgICR7S0VZQk9BUkRTX0RJUn0vcXdlcnR5LnBuZyBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1kZWZhdWx0ID0gIiR7UE59LXRoZW1lLWRlZmF1bHQiCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbW9iaWxlID0gIlwKLSAgICBpbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtdGVybWluYWwgXAotIgotCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbWluaW1hbGlzdCA9ICJcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1saWdodC1ncmFkaWVudCBcCi0gICAgJHtQTn0tdGhlbWUtZGVmYXVsdCBcCi0iCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbmV0Ym9vayA9ICJcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50IFwKLSAgICAke1BOfS10aGVtZS1kZWZhdWx0IFwKLSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1zY2FsZWFibGUgPSAiJHtQTn0tdGhlbWUtZGVmYXVsdCIKLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1zdGFuZGFyZCA9ICIke1BOfS10aGVtZS1kZWZhdWx0IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8uZGVidWcvIFwKLSAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL3BvbGljaWVzLy5kZWJ1Zy8gXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3ByZWxvYWQvLmRlYnVnLyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvdXRpbHMvLmRlYnVnLyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvKnBsdWdpbnMvKi8qLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRvYyArPSAiXAotICAgICR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kb2MgXAotIgotCi1DT05GRklMRVNfJHtQTn0tbWVudSA9ICIke3N5c2NvbmZkaXJ9L3hkZy9tZW51cy9hcHBsaWNhdGlvbnMubWVudSIKLUNPTkZGSUxFU18ke1BOfS1zeXNhY3Rpb25zID0gIi9ldGMvZW5saWdodGVubWVudC9zeXNhY3Rpb25zLmNvbmYiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIngtd2luZG93LW1hbmFnZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbeC13aW5kb3ctbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L2VubGlnaHRlbm1lbnRfc3RhcnQub2UiCi1BTFRFUk5BVElWRV9QUklPUklUWVt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIxNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxOGVmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLzAwMDEtRml4LWluY29ycmVjdC1tZXNzYWdlLXR5cGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDBhZWY0M2M5Y2QxNjU2NDEzY2YyZWIzZGM3YzE5YjM1NWVlN2VkNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBTdW4sIDEgSnVuIDIwMTQgMTQ6NDU6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluY29ycmVjdCBtZXNzYWdlIHR5cGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLS0tLQotIHNyYy9iaW4vZV9kZXNrLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmluL2VfZGVzay5jIGIvc3JjL2Jpbi9lX2Rlc2suYwotaW5kZXggYjE1NmUxOS4uNzdkNzUyMCAxMDA2NDQKLS0tLSBhL3NyYy9iaW4vZV9kZXNrLmMKLSsrKyBiL3NyYy9iaW4vZV9kZXNrLmMKLUBAIC0yMjEsNyArMjIxLDcgQEAgZV9kZXNrX3Nob3coRV9EZXNrICpkZXNrKQotICAgIEVfRXZlbnRfRGVza19TaG93ICpldjsKLSAgICBFX0V2ZW50X0Rlc2tfQmVmb3JlX1Nob3cgKmVldjsKLSAgICBFX0V2ZW50X0Rlc2tfQWZ0ZXJfU2hvdyAqZWVldjsKLS0gICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0ICptc2c7Ci0rICAgRWRqZV9NZXNzYWdlX0ludF9TZXQgKm1zZzsKLSAgICBFaW5hX0xpc3QgKmw7Ci0gICAgRV9TaGVsZiAqZXM7Ci0gICAgaW50IHdhc196b25lID0gMCwgeCwgeSwgZHggPSAwLCBkeSA9IDA7Ci0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1jb25maWd1cmUuYWMtYWRkLWZvcmVpZ24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YTU3NGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtZm9yZWlnbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMTllNTliNmU4MTQ4Mzg4ZTdhMTdmMTBkNDM5MDE3NmE1MGUyOTE3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjUgQXVnIDIwMTQgMTY6MDY6MDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgZm9yZWlnbgotCi0qIGZpeGVzOgotICB8IGNvbmZpZ3VyZS5hYzozMTI6IGVycm9yOiByZXF1aXJlZCBmaWxlICcuL0FCT1VULU5MUycgbm90IGZvdW5kCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTFhZDBiYS4uY2Q3NzczOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQsNyArMzQsNyBAQCBBSF9CT1RUT00oWwotICNlbmRpZiAvKiBFRkxfQ09ORklHX0hfXyAqLwotIF0pCi0gCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMSBkaXN0LWJ6aXAyIGRpc3QteHogLVduby1wb3J0YWJpbGl0eV0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMSBkaXN0LWJ6aXAyIGRpc3QteHogLVduby1wb3J0YWJpbGl0eSBmb3JlaWduXSkKLSBBTV9TSUxFTlRfUlVMRVMoW3llc10pCi0gCi0gQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0tLSAKLTIuMy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vYXBwbGljYXRpb25zLm1lbnUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2FwcGxpY2F0aW9ucy5tZW51CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDliOTA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vYXBwbGljYXRpb25zLm1lbnUKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08IURPQ1RZUEUgTWVudSBQVUJMSUMgIi0vL2ZyZWVkZXNrdG9wLy9EVEQgTWVudSAxLjAvL0VOIiAiaHR0cDovL3N0YW5kYXJkcy5mcmVlZGVza3RvcC5vcmcvbWVudS1zcGVjL21lbnUtMS4wLmR0ZCI+Ci08TWVudT4KLSAgPE5hbWU+QXBwbGljYXRpb25zPC9OYW1lPgotICA8IS0tICAgPERpcmVjdG9yeT5BcHBsaWNhdGlvbnMuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+IC0tPgotCi0gIDwhLS0gUmVhZCBzdGFuZGFyZCAuZGlyZWN0b3J5IGFuZCAuZGVza3RvcCBmaWxlIGxvY2F0aW9ucyAtLT4KLSAgPERlZmF1bHRBcHBEaXJzPi91c3Ivc2hhcmUvYXBwbGljYXRpb25zPC9EZWZhdWx0QXBwRGlycz4KLSAgPERlZmF1bHREaXJlY3RvcnlEaXJzLz4KLQotICA8TWVudT4KLSAgICA8TmFtZT5PZmZpY2U8L05hbWU+Ci0gICAgPERpcmVjdG9yeT5PZmZpY2UuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8Q2F0ZWdvcnk+T2ZmaWNlPC9DYXRlZ29yeT4KLSAgICAgIDwvQW5kPgotICAgIDwvSW5jbHVkZT4KLSAgPC9NZW51PgotICAKLSAgPE1lbnU+Ci0gICAgPE5hbWU+TXVsdGltZWRpYTwvTmFtZT4KLSAgICA8RGlyZWN0b3J5Pk11bHRpbWVkaWEuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8Q2F0ZWdvcnk+QXVkaW9WaWRlbzwvQ2F0ZWdvcnk+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5HcmFwaGljczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PkdyYXBoaWNzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPENhdGVnb3J5PkdyYXBoaWNzPC9DYXRlZ29yeT4KLSAgICAgIDwvQW5kPgotICAgIDwvSW5jbHVkZT4KLSAgPC9NZW51PgotCi0gIDxNZW51PgotICAgIDxOYW1lPkdhbWVzPC9OYW1lPgotICAgIDxEaXJlY3Rvcnk+R2FtZXMuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8T3I+Ci0gICAgICAgICA8Q2F0ZWdvcnk+R2FtZTwvQ2F0ZWdvcnk+Ci0gICAgICAgICA8Q2F0ZWdvcnk+R2FtZXM8L0NhdGVnb3J5PgotICAgICAgICA8L09yPgotICAgICAgPC9BbmQ+Ci0gICAgPC9JbmNsdWRlPgotICA8L01lbnU+Ci0KLSAgPE1lbnU+Ci0gICAgPE5hbWU+SW50ZXJuZXQ8L05hbWU+Ci0gICAgPERpcmVjdG9yeT5JbnRlcm5ldC5kaXJlY3Rvcnk8L0RpcmVjdG9yeT4KLSAgICA8SW5jbHVkZT4KLSAgICAgIDxBbmQ+Ci0gICAgICAgIDxPcj4KLSAgICAgICAgIDxDYXRlZ29yeT5JbnRlcm5ldDwvQ2F0ZWdvcnk+Ci0gICAgICAgICA8Q2F0ZWdvcnk+TmV0d29yazwvQ2F0ZWdvcnk+Ci0gICAgICAgIDwvT3I+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5TZXR0aW5nczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PlNldHRpbmdzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPE9yPgotICAgICAgICAgIDxDYXRlZ29yeT5TeXN0ZW1TZXR0aW5nczwvQ2F0ZWdvcnk+Ci0gICAgICAgICAgPENhdGVnb3J5PlNldHRpbmdzPC9DYXRlZ29yeT4KLSAgICAgICAgPC9Pcj4KLSAgICAgICAgPE5vdD4KLSAgICAgICAgICA8Q2F0ZWdvcnk+U3lzdGVtPC9DYXRlZ29yeT4KLSAgICAgICAgPC9Ob3Q+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5BY2Nlc3NvcmllczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PkFjY2Vzc29yaWVzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPE9yPgotICAgICAgICAgIDxDYXRlZ29yeT5BcHBsaWNhdGlvbnM8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5VdGlsaXR5PC9DYXRlZ29yeT4KLSAgICAgICAgPC9Pcj4KLSAgICAgICAgPE5vdD4KLSAgICAgICAgICA8Q2F0ZWdvcnk+U3lzdGVtPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+T2ZmaWNlPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+SW50ZXJuZXQ8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5BdWRpb1ZpZGVvPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+R3JhcGhpY3M8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5HYW1lczwvQ2F0ZWdvcnk+Ci0gICAgICAgIDwvTm90PgotICAgICAgPC9BbmQ+Ci0gICAgPC9JbmNsdWRlPgotICA8L01lbnU+Ci0gIAotPC9NZW51PgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2VubGlnaHRlbm1lbnRfc3RhcnQub2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2VubGlnaHRlbm1lbnRfc3RhcnQub2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmODYxNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0jIS9iaW4vc2gKLQotRV9QUk9GSUxFPSIiCi1pZiBbIC1yIC9ldGMvZW5saWdodGVubWVudC9kZWZhdWx0X3Byb2ZpbGUgXTsgdGhlbgotICAuIC9ldGMvZW5saWdodGVubWVudC9kZWZhdWx0X3Byb2ZpbGUKLWZpCi0KLXJlbmljZSAtMiAtcCAkJAotZXhlYyBlbmxpZ2h0ZW5tZW50X3N0YXJ0ICRFX1BST0ZJTEUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd21fMC4xOC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE4LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMThiNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE4LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDTkFNRSA9ICJlbmxpZ2h0ZW5tZW50IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9hcHBzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSAgICBmaWxlOi8vZW5saWdodGVubWVudF9zdGFydC5vZSBcCi0gICAgZmlsZTovL2FwcGxpY2F0aW9ucy5tZW51IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3OWM5ZjUyNGUxZDA1MTAwNjFjNjJjNGIwMzhhOGVjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGM5YmRlNDMzNGQyZjhiMDc3NmM2MTEzZDAyYjkyM2FiMTU5ZWVhMWNiZjcwMTM0ODllNGYzYmYzN2E1MWJiIgotCi1QTkJMQUNLTElTVFtlLXdtXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE5LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE5LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTZhN2I4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd21fMC4xOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNOQU1FID0gImVubGlnaHRlbm1lbnQiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi0jIGNvdXBsZSBvZiBtb2R1bGVzIG5lZWRlZCBmb3IgaWxsdW1lMiAobW9iaWxlKSBwcm9maWxlIHdlcmUgcmVtb3ZlZCBpbgotIyBodHRwOi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2NvcmUvZW5saWdodGVubWVudC5naXQvY29tbWl0L3NyYy9tb2R1bGVzL01ha2VmaWxlLm1rP2lkPTFiZTc2ZDU5OWNhMjdmODIwYjU4YjgxODZjNWY3M2Q5ODQ0YzY3Y2EKLSMgYW5kIHJlcGxhY2VtZW50cyBhcmVuJ3QgaW5jbHVkZWQgeWV0LCBpZiB5b3Ugd2FudCB0byB1c2UgZS13bSBvbiBkZXZpY2Ugd2l0aCBzbWFsbCBzY3JlZW4sIGJldHRlciBzdGF5IHdpdGggMC4xOCByZWxlYXNlCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9SRUxFQVNFU30vYXBwcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0gICAgZmlsZTovL2VubGlnaHRlbm1lbnRfc3RhcnQub2UgXAotICAgIGZpbGU6Ly9hcHBsaWNhdGlvbnMubWVudSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MDYzNjE3NzYwMzI5NDQ1YWRhODYzNTI3MGE0ZTYyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODRkMzA1YmNmNDAzMzAzYjE4YzQ2YTNhNDk4NDQ1YjkzNjg5Y2QzMjUwMTBhZThkMDYwMTU1MTkyNjQ2OWQ4IgotCi1QTkJMQUNLTElTVFtlLXdtXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyNWZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1QViA9ICIwLjE5LjQrZ2l0JHtTUkNQVn0iCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvY29yZS9lbmxpZ2h0ZW5tZW50LmdpdDticmFuY2g9ZW5saWdodGVubWVudC0wLjE5IFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLWZvcmVpZ24ucGF0Y2ggXAotICAgIGZpbGU6Ly9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lIFwKLSAgICBmaWxlOi8vYXBwbGljYXRpb25zLm1lbnUgXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDUkVWID0gIjQ1NDVkNGE3MDAzMWUwYjI1NjViOGQ4M2Q1Zjc1NmJmZjFhNTg0ZDAiCi0KLVBOQkxBQ0tMSVNUW2Utd21dID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lZGplLXZpZXdlcl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lZGplLXZpZXdlcl9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkM2VmZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWRqZS12aWV3ZXJfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJFZGplX1ZpZXdlciBpcyBqdXN0IHRoYXQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWUwMTM1OTA0MTAwMWU4YmYyNGMwOWFjY2E1NTZlNzkyIgotCi1ERVBFTkRTID0gImVsZW1lbnRhcnkiCi1QViA9ICIwLjAuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlCi0KLVNSQ05BTUUgPSAiZWRqZV92aWV3ZXIiCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotCi1QTkJMQUNLTElTVFtlZGplLXZpZXdlcl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsYm93X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsYm93X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJhODUzOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGJvd19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkVGTCBiYXNlZCBicm93c2VyIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgotREVQRU5EUyA9ICJldmFzIGVjb3JlIGVkamUgZWluYSBlbGVtZW50YXJ5IHdlYmtpdC1lZmwgc3FsaXRlMyIKLQotUFYgPSAiMC4wLjErZ2l0ciR7U1JDUFZ9IgotU1JDUkVWID0gImI0MWZkMGJjOTUxNGZmNjFiYjJhNTBkOTU3ZWZlNDE1NWZhM2U2YTgiCi0KLSMgd2Via2l0LWVmbCBpc24ndCBhdmFpbGFibGUgZm9yIDwgYXJtdjdhCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKC0pIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4NiA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4Ni02NCA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3YSA9ICIoLiopIgotCi1pbmhlcml0IGUgZ2V0dGV4dCBjbWFrZQotCi1FWFRSQV9PRUNNQUtFID0gIi1EREFUQV9JTlNUQUxMX0RJUj0ke2RhdGFkaXJ9IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9idW5oZXJlL2VsYm93LmdpdDtwcm90b2NvbD1odHRwcyBcCi0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90aGVtZXMiCi0KLVBOQkxBQ0tMSVNUW2VsYm93XSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCB3ZWJraXQtZWZsIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWxmZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGZlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlmN2Y5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGZlX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi1QViA9ICIwLjAuMStnaXRyJHtTUkNQVn0iCi1QRSA9ICIxIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2VubGlnaHRlbm1lbnQvbW9kdWxlcy8ke0JQTn0uZ2l0IFwKLSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ1JFViA9ICIxZWMwZTc3MTNjM2NhOTAxMDE0ODExZmY3ODI3N2Q5ZTJhYWFjOTgxIgotCi1ERVBFTkRTICs9ICJlbGVtZW50YXJ5IgotCi1QTkJMQUNLTElTVFtlbGZlXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWxtZGVudGljYS9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhOTgxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBlbG1kZW50aWNhL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsbWRlbnRpY2Eub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTo0NjoxNC43MTI1NjYyMDcgKzAwMDAKLSsrKyBlbG1kZW50aWNhL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUxOjM0Ljk2MDU3NDkzNSArMDAwMAotQEAgLTMsNyArMyw3IEBACi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIAotIEFDX1BST0dfQ0MKLSBBQ19HTlVfU09VUkNFCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsbWRlbnRpY2Ffc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTcxMjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsbWRlbnRpY2Ffc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGluZGVudGkuY2EgY2xpZW50IGZvciBFIgotREVQRU5EUyA9ICJnbGliLTIuMCBnY29uZiBjdXJsIGVsZW1lbnRhcnkgc3FsaXRlMy1uYXRpdmUgYXp5IgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU0VDVElPTiA9ICJlL2FwcHMiCi1IT01FUEFHRSA9ICJodHRwOi8vZWxtZGVudGljYS5nb29nbGVjb2RlLmNvbSIKLUFVVEhPUiA9ICJzZWFicmEiCi0KLWluaGVyaXQgZSBnZXR0ZXh0Ci1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyIKLQotUFYgPSAiMC45Ljkrc3ZuciR7U1JDUFZ9IgotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LXRoZW1lcyIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotUE5CTEFDS0xJU1RbZWxtZGVudGljYV0gPz0gIk9MRCBhbmQgZGVwZW5kcyBvbiBicm9rZW4gYXp5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW1wcmludF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbXByaW50X3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1ZGM3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbXByaW50X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkVtcHJpbnQgaXMgYSB1dGlsaXR5IGZvciB0YWtpbmcgc2NyZWVuc2hvdHMgb2YgdGhlIGVudGlyZSBzY3JlZW4sIGEgc3BlY2lmaWMgd2luZG93LCBvciBhIHNwZWNpZmljIHJlZ2lvbi4iCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLURFUEVORFMgPSAiaW1saWIyIHZpcnR1YWwvbGlieDExIGVjb3JlIGV2YXMgZWRqZSBlaW5hIgotUFYgPSAiMC4wLjErc3ZuciR7U1JDUFZ9IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UE59L21vZHVsZXMvLmRlYnVnIgotCi1QTkJMQUNLTElTVFtlbXByaW50XSA/PSAiaWYgeW91IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgd2l0aCBFMTgsIHRoZW4geW91IG5lZWQgdG8gdXBkYXRlIGl0IHRvIGdpdCByZWNpcGUgZmV0Y2hpbmcgbmV3ZXIgc291cmNlcyBmcm9tIGh0dHA6Ly9naXQuZW5saWdodGVubWVudC5vcmcvYXBwcy9lbXByaW50LmdpdC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveS8wMDAxLWFsd2F5cy11c2UtcG9zaXRpb24tYXMtcGVyY2VudC1hbmQtZGVmaW5lLWEtMS1zZWNvbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveS8wMDAxLWFsd2F5cy11c2UtcG9zaXRpb24tYXMtcGVyY2VudC1hbmQtZGVmaW5lLWEtMS1zZWNvbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NjI0NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvMDAwMS1hbHdheXMtdXNlLXBvc2l0aW9uLWFzLXBlcmNlbnQtYW5kLWRlZmluZS1hLTEtc2Vjb25kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLUZyb20gNzUxNTA1NTAxZTBkYjMxY2Y3NjZlYzBhZTk1YTY5NjhiNGQxZWI5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYmFuIEJyb3dhZXlzIDxwcmFoYWxAeWFob28uY29tPgotRGF0ZTogV2VkLCA1IFNlcCAyMDEyIDAyOjU4OjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsd2F5cyB1c2UgcG9zaXRpb24gYXMgcGVyY2VudCBhbmQgZGVmaW5lIGEgMSBzZWNvbmRzCi0gdG9sZXJhbmNlLgotCi1GaXggInJldmVyYiIgZWZmZWN0OiBpZSBsb29wIGJldHdlZW4gc2V0dGluZyB0aGUgc2xpZGVyIHRvIG1hdGNoCi10aGUgcG9zaXRpb24gYW5kIGhhbmRsaW5nIHNsaWRlciB0byBwb3NpdGlvbiAoc2VlaykuCi0tLS0KLSBkYXRhL3RoZW1lcy9kZWZhdWx0LmVkYyB8ICA4ICsrKy0tLS0tCi0gc3JjL2Jpbi93aW4uYyAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvdGhlbWVzL2RlZmF1bHQuZWRjIGIvZGF0YS90aGVtZXMvZGVmYXVsdC5lZGMKLWluZGV4IGViZjhiYTQuLjdhOTA2YjEgMTAwNjQ0Ci0tLS0gYS9kYXRhL3RoZW1lcy9kZWZhdWx0LmVkYwotKysrIGIvZGF0YS90aGVtZXMvZGVmYXVsdC5lZGMKLUBAIC0xODYsNyArMTg2LDYgQEAgY29sbGVjdGlvbnMgewotICAgIGdyb3VwIHsKLSAgICAgICBuYW1lOiAibm93cGxheWluZyI7Ci0gICAgICAgc2NyaXB0IHsKLS0gICAgICAgICBwdWJsaWMgY3VyX2xlbmd0aDsKLSAgICAgICAgICBwdWJsaWMgbXV0ZTsKLSAKLSAgICAgICAgICBwdWJsaWMgZ2V0X3RpbWVfc3RyKEZsb2F0OnRpbWUsIHRpbWVfc3RyWzZdKQotQEAgLTIwMSwxNiArMjAwLDE1IEBAIGNvbGxlY3Rpb25zIHsKLSAgICAgICAgICAgICAgICBuZXcgRmxvYXQ6cG9zaXRpb24gPSBnZXRmYXJnKDIpOwotICAgICAgICAgICAgICAgIG5ldyBGbG9hdDpsZW5ndGggPSBnZXRmYXJnKDMpOwotICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiAwKQotLSAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3BhcmFtX3NldF9mbG9hdChQQVJUOiJwcm9ncmVzcy5zbGlkZXIiLCAidmFsdWUiLCBwb3NpdGlvbiAvIGxlbmd0aCAqIDEwMCk7Ci0rICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfcGFyYW1fc2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIsIHBvc2l0aW9uICogMTAwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfcGFyYW1fc2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIsIDApOwotIAotICAgICAgICAgICAgICAgIG5ldyB0aW1lX3N0cls2XTsKLS0gICAgICAgICAgICAgICBnZXRfdGltZV9zdHIocG9zaXRpb24sIHRpbWVfc3RyKTsKLSsgICAgICAgICAgICAgICBnZXRfdGltZV9zdHIocG9zaXRpb24gKiBsZW5ndGgsIHRpbWVfc3RyKTsKLSAgICAgICAgICAgICAgICBzZXRfdGV4dChQQVJUOiJlankudGV4dC5jdXJyZW50X3RpbWUiLCB0aW1lX3N0cik7Ci0gICAgICAgICAgICAgICAgZ2V0X3RpbWVfc3RyKGxlbmd0aCwgdGltZV9zdHIpOwotICAgICAgICAgICAgICAgIHNldF90ZXh0KFBBUlQ6ImVqeS50ZXh0LnRvdGFsX3RpbWUiLCB0aW1lX3N0cik7Ci0tICAgICAgICAgICAgICAgc2V0X2Zsb2F0KGN1cl9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1TR19JTlQgJiYgaWQgPT0gTVNHX1NIVUZGTEUpIHsKLSAgICAgICAgICAgICAgICBleHRlcm5hbF9wYXJhbV9zZXRfYm9vbChQQVJUOiJidXR0b25zLnNodWZmbGUiLCAic3RhdGUiLCBnZXRhcmcoMikpOwotICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBNU0dfSU5UICYmIGlkID09IE1TR19MT09QKSB7Ci1AQCAtNjg5LDcgKzY4Nyw3IEBAIGNvbGxlY3Rpb25zIHsKLSAgICAgICAgICAgICBzb3VyY2U6ICJwcm9ncmVzcy5zbGlkZXIiOwotICAgICAgICAgICAgIHNpZ25hbDogImNoYW5nZWQiOwotICAgICAgICAgICAgIHNjcmlwdCB7Ci0tICAgICAgICAgICAgICAgc2VuZF9tZXNzYWdlKE1TR19GTE9BVCwgTVNHX1BPU0lUSU9OLCAoZXh0ZXJuYWxfcGFyYW1fZ2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIpICogZ2V0X2Zsb2F0KGN1cl9sZW5ndGgpIC8gMTAwKSk7Ci0rICAgICAgICAgICAgICAgc2VuZF9tZXNzYWdlKE1TR19GTE9BVCwgTVNHX1BPU0lUSU9OLCAoZXh0ZXJuYWxfcGFyYW1fZ2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIpIC8gMTAwKSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBwcm9ncmFtIHsKLWRpZmYgLS1naXQgYS9zcmMvYmluL3dpbi5jIGIvc3JjL2Jpbi93aW4uYwotaW5kZXggMmY2NTk1My4uNDI4ZTI2OCAxMDA2NDQKLS0tLSBhL3NyYy9iaW4vd2luLmMKLSsrKyBiL3NyYy9iaW4vd2luLmMKLUBAIC0xOTQsOCArMTk0LDggQEAgX3dpbl9wbGF5X2V2YWwoV2luICp3KQotIHsKLSAgICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0ICptZjsKLSAKLS0gICB3LT5wbGF5LnBvc2l0aW9uID0gZW1vdGlvbl9vYmplY3RfcG9zaXRpb25fZ2V0KHctPmVtb3Rpb24pOwotICAgIHctPnBsYXkubGVuZ3RoID0gZW1vdGlvbl9vYmplY3RfcGxheV9sZW5ndGhfZ2V0KHctPmVtb3Rpb24pOwotKyAgIHctPnBsYXkucG9zaXRpb24gPSBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9nZXQody0+ZW1vdGlvbikgLyB3LT5wbGF5Lmxlbmd0aDsKLSAKLSAgICBpZiAoKHctPnNvbmcpICYmICh3LT5zb25nLT5sZW5ndGggIT0gKGludCl3LT5wbGF5Lmxlbmd0aCkpCi0gICAgICAgZGJfc29uZ19sZW5ndGhfc2V0KHctPmRiLCB3LT5zb25nLCB3LT5wbGF5Lmxlbmd0aCk7Ci1AQCAtNTQyLDggKzU0MiwxNCBAQCBfd2luX2VkamVfbXNnKHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvIF9fVU5VU0VEX18sIEVkamVfTWVzc2FnZV9UeXBlIHR5cGUsIGludAotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIEVkamVfTWVzc2FnZV9GbG9hdCAqbSA9IG1zZzsKLSsKLSsgICAgICAgICAgICAgIGlmICgoKChtLT52YWwgLSB3LT5wbGF5LnBvc2l0aW9uKSAqIHctPnBsYXkubGVuZ3RoKSA8IDEuMCkKLSsgICAgICAgICAgICAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbS0+dmFsKSAqIHctPnBsYXkubGVuZ3RoKSA8IDEuMCkpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuOwotKwotICAgICAgICAgICAgICAgdy0+cGxheS5wb3NpdGlvbiA9IG0tPnZhbDsKLS0gICAgICAgICAgICAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICAgICAgICAgICAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3LT5wbGF5Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotQEAgLTYxNywxNiArNjIzLDIxIEBAIGVuam95X2NvbnRyb2xfc2Vlayh1aW50NjRfdCBwb3NpdGlvbikKLSB7Ci0gICAgV2luICp3ID0gJl93aW47Ci0gICAgZG91YmxlIHNlZWtfdG87Ci0rICAgZG91YmxlIG5ld19wb3MgPSB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSAKLSAgICBpZiAoIXctPmRiKSByZXR1cm47Ci0tICAgc2Vla190byA9IHctPnBsYXkucG9zaXRpb24gKyB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSsKLSsgICBpZiAoKCgobmV3X3BvcyAtIHctPnBsYXkucG9zaXRpb24pICogdy0+cGxheS5sZW5ndGgpIDwgMS4wKQotKyAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbmV3X3BvcykgKiB3LT5wbGF5Lmxlbmd0aCkgPCAxLjApKSByZXR1cm47Ci0rCi0rICAgc2Vla190byA9IHctPnBsYXkucG9zaXRpb24gKyBuZXdfcG9zOwotICAgIGlmIChzZWVrX3RvIDw9IDAuMCkKLSAgICAgIHNlZWtfdG8gPSAwLjA7Ci0gICAgZWxzZSBpZiAoc2Vla190byA+PSAxLjApCi0gICAgICBzZWVrX3RvID0gMS4wOwotIAotICAgIHctPnBsYXkucG9zaXRpb24gPSBzZWVrX3RvOwotLSAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9zZXQody0+ZW1vdGlvbiwgdy0+cGxheS5wb3NpdGlvbiAqIHctPnBsYXkubGVuZ3RoKTsKLSAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi1AQCAtNjkyLDE1ICs3MDMsMjAgQEAgRUFQSSB2b2lkCi0gZW5qb3lfcG9zaXRpb25fc2V0KGludDMyX3QgcG9zaXRpb24pCi0gewotICAgIFdpbiAqdyA9ICZfd2luOwotKyAgIGRvdWJsZSBuZXdfcG9zID0gdy0+cGxheS5sZW5ndGggLyAoKGRvdWJsZSlwb3NpdGlvbiAvIDFlNik7Ci0gCi0gICAgaWYgKCF3LT5kYikgcmV0dXJuOwotLSAgIHctPnBsYXkucG9zaXRpb24gPSB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSsKLSsgICBpZiAoKCgobmV3X3BvcyAtIHctPnBsYXkucG9zaXRpb24pICogdy0+cGxheS5sZW5ndGgpIDwgMS4wKQotKyAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbmV3X3BvcykgKiB3LT5wbGF5Lmxlbmd0aCkgPCAxLjApKSByZXR1cm47Ci0rCi0rICAgdy0+cGxheS5wb3NpdGlvbiA9IG5ld19wb3M7Ci0gICAgaWYgKHctPnBsYXkucG9zaXRpb24gPCAwLjApCi0gICAgICB3LT5wbGF5LnBvc2l0aW9uID0gMC4wOwotICAgIGVsc2UgaWYgKHctPnBsYXkucG9zaXRpb24gPiAxLjApCi0gICAgICB3LT5wbGF5LnBvc2l0aW9uID0gMS4wOwotIAotLSAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9zZXQody0+ZW1vdGlvbiwgdy0+cGxheS5wb3NpdGlvbiAqIHctPnBsYXkubGVuZ3RoKTsKLSAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi0tLSAKLTEuOC41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTBlZDc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDg6NTEuMjg0NTcwNDc0ICswMDAwCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUzOjM5LjEwNDU3ODMxOCArMDAwMAotQEAgLTI2LDcgKzI2LDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42IGRpc3QtYnppcDIpCi0rQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMiBmb3JlaWduXSkKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLSBfWFRFUk1fQ09MT1JTCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE2ZDczZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkVuam95IG11c2ljIHBsYXllciIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi1ERVBFTkRTID0gImV2YXMgZWNvcmUgZWRqZSBlbGVtZW50YXJ5IGVtb3Rpb24gbGlnaHRtZWRpYXNjYW5uZXIgZWxkYnVzIGdzdC1wbHVnaW5zLWdvb2QiCi0KLVNSQ1JFViA9ICJhYThmZWM2OWU4ODVlZWMwNDhhODQ5YzJiMzQwNTllYzU4NDA0ZTAyIgotUFYgPSAiMC4xLjArZ2l0ciR7U1JDUFZ9IgotCi0jMXN0IG5lZWRlZCBmb3IgYWxsIGZvcm1hdHMKLSMybmQgbmVlZGVkIGZvciBtcDMgcGxheWJhY2sKLSMzZCBuZWVkZWQgZm9yIG9nZyBwbGF5YmFjawotIzR0aCBuZWVkZWQgZm9yIGZsYWMgcGxheWJhY2sKLSM1dGggbmVlZGVkIGJpbmFyeSB0byBjcmVhdGUgZGIKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgICAgZ3N0LXBsdWdpbnMtYmFzZS10eXBlZmluZGZ1bmN0aW9ucyBnc3QtcGx1Z2lucy1iYXNlLXBsYXliaW4gZ3N0LXBsdWdpbnMtYmFzZS12b2x1bWUgZ3N0LXBsdWdpbnMtYmFzZS1kZWNvZGViaW4yIGdzdC1wbHVnaW5zLWdvb2QtYXV0b2RldGVjdCBcCi0gICAgICAgZ3N0LXBsdWdpbnMtYmFzZS1vZ2cgZ3N0LXBsdWdpbnMtYmFzZS1pdm9yYmlzZGVjIFwKLSAgICAgICBnc3QtcGx1Z2lucy1nb29kLWZsYWMgXAotICAgICAgIGxpZ2h0bWVkaWFzY2FubmVyLXRlc3QgXAotIgotCi1pbmhlcml0IGUgZ2V0dGV4dAotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9hcHBzL2Vuam95LmdpdCBcCi0gICAgZmlsZTovLzAwMDEtYWx3YXlzLXVzZS1wb3NpdGlvbi1hcy1wZXJjZW50LWFuZC1kZWZpbmUtYS0xLXNlY29uZC5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy8iCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotIgotCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLCxnc3QtcGx1Z2lucy11Z2x5LGdzdC1wbHVnaW5zLXVnbHktbWFkIgotUEFDS0FHRUNPTkZJR1tpZDNkZW11eF0gPSAiLCwsZ3N0LXBsdWdpbnMtZ29vZC1pZDNkZW11eCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgYXV0b3BvaW50IHx8IHRvdWNoIGNvbmZpZy5ycGF0aAotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGVjaG8gImVuam95OiAgICBTQ0FOIGFuZCBMSUJSQVJZIE1BTkFHRVIgYXJlIG5vdCBpbXBsZW1ldGVkIHlldCEiCi0gICAgZWNobyAiZW5qb3k6ICAgIE1lYW53aGlsZSBwbGVhc2UgcnVuOiIKLSAgICBlY2hvICJlbmpveTogICAgdGVzdC1sbXMgLW0gbW9ubyAtcCBpZDMgLWkgNTAwMCAtcyAvcGF0aC90by95b3VyL211c2ljL2RpciAvaG9tZS9yb290Ly5jb25maWcvZW5qb3kvbWVkaWEuZGIiCi0gICAgZWNobyAiZW5qb3k6IgotICAgIGVjaG8gImVuam95OiAgICBVc2UgdGVzdC1sbXMgLVAgdG8gc2VlIGF2YWlsYWJsZSBmb3JtYXRzIHRoYXQgY2FuIGJlIHNjYW5uZWQiCi19Ci0KLVBOQkxBQ0tMSVNUW2Vuam95XSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXBob3RvL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90by9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDY2ZjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXBob3RvL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBlcGhvdG8vY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXBob3RvLm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDg6NTEuMDI4NTcwNDY3ICswMDAwCi0rKysgZXBob3RvL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUyOjU2LjEyMDU3NzE0NiArMDAwMAotQEAgLTI3LDcgKzI3LDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42IGRpc3QtYnppcDIpCi0rQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMiBmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKHNyYy9iaW4vY29uZmlnLmgpCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90b19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lcGhvdG9fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODZmZmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90b19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1MSUNFTlNFID0gIk1JVCAmIEdQTC0zLjAiCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNSRVZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZkZmZjZGRiMzY2ZDBjYzc4ZTBlNDZjNGVhNzBjOGQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuaWNvbnM7bWQ1PThmMGUyY2Q0MGUwNTE4OWVjODEyMzJkYTg0YmQ2ZTFhIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1pbmhlcml0IGdldHRleHQKLQotREVQRU5EUyArPSAiZWxlbWVudGFyeSBldGh1bWIgZWNvcmUgZWlvIgotCi1TUkNOQU1FID0gIiR7UE59IgotCi0jIGF1dG90b29scy1icm9rZW5zZXAKLUIgPSAiJHtTfSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotUE5CTEFDS0xJU1RbZXBob3RvXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4YWx0LWNsaWVudC9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZmY4MDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUluZGV4OiBleGFsdC1jbGllbnQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXhhbHQtY2xpZW50Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDY6MTQuNzEyNTY2MjA3ICswMDAwCi0rKysgZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjQ3OjU2Ljg4MDU2ODk5MSArMDAwMAotQEAgLTEwLDcgKzEwLDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS44KQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0gCi0gQUNfUFJPR19DQwotQEAgLTI5LDcgKzI5LDYgQEAKLSAKLSBtNF9pZmRlZihbQU1fR05VX0dFVFRFWFRdLCBbCi0gQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKLS1wb19tYWtlZmlsZV9pbj1wby9NYWtlZmlsZS5pbgotIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BPXSwgW3RydWVdKQotIF0sWwotIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BPXSwgW2ZhbHNlXSkKLUBAIC0xMDEsNiArMTAwLDUgQEAKLSBzcmMvTWFrZWZpbGUKLSBtb2R1bGUuZGVza3RvcAotIGVfbW9kdWxlcy1leGFsdC1jbGllbnQuc3BlYwotLSRwb19tYWtlZmlsZV9pbgotIF0sIFsKLSBdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4YWx0LWNsaWVudF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNzhhMmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotUFYgPSAiMC4wLjErc3ZuciR7U1JDUFZ9IgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1ERVBFTkRTICs9ICJlbGVtZW50YXJ5IGV4YWx0IGVkamUtbmF0aXZlIgotCi1DRkxBR1MgKz0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L2V4YWx0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vZXhhbHRfZGJ1cyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kICR7U30vY29uZmlndXJlLmFjCi0gICAgc2VkIC1pIC1lIHM6XCBwbzo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi5kZXNrdG9wIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi5lZGogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLyouc28iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy8qLyovKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8qLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8uZGVidWciCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi1QTkJMQUNLTElTVFtleGFsdC1jbGllbnRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leGFsdF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leGFsdF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNjNmMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJFeGFsdCBpcyBhIG5ldHdvcmsgbWFuYWdlciBmb3IgdGhlIHdpbmRvd3MgbWFuYWdlciBFbmxpZ2h0ZW5tZW50IERSMTciCi1IT01FUEFHRSA9ICJodHRwOi8vd2F0Y2h3b2xmLmZyL3dpa2kvZG9rdS5waHA/aWQ9ZXhhbHQiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotREVQRU5EUyA9ICJlbGVtZW50YXJ5IHZwbmMgd3BhLXN1cHBsaWNhbnQgZWNvcmUgZWV0IGVkYnVzIgotUkRFUEVORFNfJHtQTn0gPSAidnBuYyB3cGEtc3VwcGxpY2FudCIKLQotUFYgPSAiMC45K3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0tLXdpdGgtd3BhX3N1cHBsaWNhbnQ9JHtzYmluZGlyfS93cGFfc3VwcGxpY2FudCBcCi0tLXdpdGgtdnBuYz0ke3NiaW5kaXJ9L3ZwbmMgXAotLS13aXRoLXZwbmMtZGlzY29ubmVjdD0ke3NiaW5kaXJ9L3ZwbmMtZGlzY29ubmVjdCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgaW5zdGFsbCBkYnVzIGNvbmZpZyBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGF0YS9kYWVtb24vZGJ1cy9leGFsdC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9leGFsdC5jb25mCi0KLSAgICAjIGluc3RhbGwgZGJ1cyBzZXJ2aWNlIGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vb3JnLmUuRXhhbHQuc2VydmljZSAke0R9JHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzLwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi0KLQotUE5CTEFDS0xJU1RbZXhhbHRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUtdGhlbWUtaWxsdW1lLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkwNjNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUtdGhlbWUtaWxsdW1lLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRERFU0NSSVBUSU9OID0gIkEgdGhlbWUgZm9yIGV4cXVpc2l0ZSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9MSUNFTlNFO21kNT1mNTIzYWI1OTg2Y2M3OWI1MmE5MGQyYWMzZDU0NTRhMiIKLVNFQ1RJT04gPSAieDExIgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVBWID0gIjEuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlLWJhc2UgdXBkYXRlLWFsdGVybmF0aXZlcyBhbGxhcmNoCi0KLUFMVEVSTkFUSVZFX05BTUUgPSAiZXhxdWlzaXRlLWNvbmZpZyIKLUFMVEVSTkFUSVZFX0xJTksgPSAiJHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnIgotQUxURVJOQVRJVkVfUEFUSCA9ICIke3N5c2NvbmZkaXJ9L2V4cXVpc2l0ZS9jb25maWctaWxsdW1lIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAiCi0KLVNSQ05BTUUgPSAiYl9hbmRfdyIKLQotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9USEVNRVM7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFIFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1kb19jb21waWxlKCkgewotICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjIGV4cXVpc2l0ZS5lZGMgaWxsdW1lLmVkagotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZXhxdWlzaXRlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9leHF1aXNpdGUvZGF0YS90aGVtZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbGx1bWUuZWRqICR7RH0ke2RhdGFkaXJ9L2V4cXVpc2l0ZS9kYXRhL3RoZW1lcy8KLSAgICBlY2hvICdUSEVNRT0iLXQgaWxsdW1lIicgPiAke0R9JHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnLWlsbHVtZQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnLWlsbHVtZSIKLUZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZXhxdWlzaXRlICR7ZGF0YWRpcn0vZXhxdWlzaXRlL2RhdGEvdGhlbWVzIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGUtdGhlbWUtaWxsdW1lXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlZGplLW5hdGl2ZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhxdWlzaXRlLXRoZW1lLWlsbHVtZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHF1aXNpdGUtdGhlbWUtaWxsdW1lIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGUtdGhlbWUtaWxsdW1lXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV4cXVpc2l0ZS10aGVtZS1pbGx1bWUtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS9MSUNFTlNFIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJiMmY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4cXVpc2l0ZS10aGVtZS1pbGx1bWUvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUvZXhxdWlzaXRlLWluaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUvZXhxdWlzaXRlLWluaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZTY3NzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL2V4cXVpc2l0ZS1pbml0CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyEvYmluL3NoCi0KLWZvciB4IGluICQoY2F0IC9wcm9jL2NtZGxpbmUpOyBkbwotICBjYXNlICR4IGluCi0gICAgc3BsYXNoPWZhbHNlKQotICAgICAgZWNobyAiU3BsYXNoIERpc2FibGVkIgotICAgICAgZXhpdCAwOwotICAgICAgOzsKLSAgZXNhYwotZG9uZQotCi0uIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotCi0jIyMgRGVmYXVsdCBjb25maWcgaGVyZSAtIGdldHMgb3ZlcnJpZGVuIGxhdGVyCi1USEVNRT0iLXQgZGVmYXVsdCIKLUZQUz0iLWZwcyAzMCIKLSMjIyBPdmVycmlkZSBjb25maWcgLSBpZiB0aGVyZSBpcyBhIGNvbmZpZyBmaWxlIC0gbG9hZCBpdC4KLWlmIHRlc3QgLWYgL2V0Yy9leHF1aXNpdGUvY29uZmlnOyB0aGVuCi0gIC4gL2V0Yy9leHF1aXNpdGUvY29uZmlnCi1maQotCi1hcmdzPScnCi1jYXNlIGBtYWNoaW5lX2lkYCBpbgotICAiaHBfaXBhcV9oMzEwMCJ8ImhwX2lwYXFfaDM4MDAiKQotICAgICBhcmdzPSctcm90IDkwJyA7OwotICAiaHBfaXBhcV8zNjAwInwiaHBfaXBhcV8zNzAwInwiaHBfaXBhcV9oMzkwMCJ8Imh0Y191bml2ZXJzYWwifCpjb2xsaWV8KnBvb2RsZXwqYWtpdGF8KnNwaXR6fCpib3J6b2kpCi0gICAgIGFyZ3M9Jy1yb3QgMjcwJyA7OwotZXNhYwotYXJncz0kYXJncyIgJEZQUyAkVEhFTUUiCi0KLWV4cG9ydCBFWERJUj0vbW50Ly5zcGxhc2gKLWV4cG9ydCBFWFFVSVNJVEVfSVBDPSRFWERJUi9leHF1aXNpdGUKLW1vdW50IHRtcGZzIC10IHRtcGZzICRFWERJUiAtbyxzaXplPTQwawotZXhxdWlzaXRlIC1mYiAtZnMgJGFyZ3MgJgotCi1leHF1aXNpdGUtd3JpdGUgLXdhaXQgMTIwCi1leHF1aXNpdGUtd3JpdGUgIlBVTFNBVEUiCi1zZXR0ZXJtIC1ibGFuayAwCi1zZXR0ZXJtIC1wb3dlcnNhdmUgb2ZmCi1zZXR0ZXJtIC1wb3dlcmRvd24gMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL3NwbGFzaGZ1bmNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL3NwbGFzaGZ1bmNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGEyYTk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4cXVpc2l0ZS9zcGxhc2hmdW5jcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXN0YXR1cygpIHsKLSAgaWYgdHlwZSBzcGxhc2gtd3JpdGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgKFRNUERJUj0iL21udC8uc3BsYXNoIiBFWFFVSVNJVEVfSVBDPSIkVE1QRElSL2V4cXVpc2l0ZSIgc3BsYXNoLXdyaXRlICIkMSIgfHwgdHJ1ZSkgJgotICBmaQotfQotCi1zdGF0dXNfcG9zaXRpb24oKSB7Ci0gIHN0YXR1cyAiUFJPR1JFU1MgJDEiCi19Ci0KLXN0YXR1c190aXRsZSgpIHsKLSAgc3RhdHVzICJUSVRMRSAkMSIKLX0KLQotc3RhdHVzX3RleHQoKSB7Ci0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotICAgIHN0YXR1cyAiTVNHICQxIgotICBlbHNlCi0gICAgc3RhdHVzICJDTEVBUiIKLSAgZmkKLX0KLQotc3RhdHVzX3B1bHNlKCkgewotICBzdGF0dXMgIlBVTFNBVEUiCi19Ci0KLXN0YXR1c190aWNrKCkgewotICBzdGF0dXMgIlRJQ0siCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGVfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI2Y2Q0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBzcGxhc2ggcmVwbGFjZW1lbnQgZm9yIGRpc3BsYXkiCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0ZGVmYTM3MmE5MTExOGU3NTUxMzNiYzhlNmFmZjgzIgotREVQRU5EUyA9ICJlZXQgZXZhcyBlY29yZSBlbWJyeW8gZWRqZSIKLVBWID0gIjAuMC4xK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZXhxdWlzaXRlLXRoZW1lcyIKLVJDT05GTElDVFNfJHtQTn0gPSAicHNwbGFzaCB2aXJ0dWFsLXBzcGxhc2giCi0KLVNSQ05BTUUgPSAiZXhxdWlzaXRlIgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1lZGplLWNjPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZXhxdWlzaXRlLWluaXQiCi1TUkNfVVJJICs9ICJmaWxlOi8vc3BsYXNoZnVuY3MiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS9tbnQvLnNwbGFzaC8KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V4cXVpc2l0ZS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9leHF1aXNpdGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zcGxhc2hmdW5jcyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NwbGFzaGZ1bmNzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgbG4gLXMgZXhxdWlzaXRlLXdyaXRlICR7RH0ke2JpbmRpcn0vc3BsYXNoLXdyaXRlCi19Ci0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2V4cXVpc2l0ZS9kYXRhL2ZvbnRzLyoKLX0KLQotSU5JVFNDUklQVF9OQU1FID0gImV4cXVpc2l0ZSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAxIFMgLiBzdG9wIDIwIDAgMSA2IC4iCi0KLUZJTEVTXyR7UE59ICs9ICIvbW50Ly5zcGxhc2gvIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGVdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjE5LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZsYW1lL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZsYW1lL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjODVkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZS9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODNkMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZmxhbWVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotUFYgPSAiMC4wLjMrc3ZuciR7U1JDUFZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAvcG8vZCAke1N9L2NvbmZpZ3VyZS5hYwotICAgIHNlZCAtaSAtZSBzOlwgcG86OmcgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFtmbGFtZV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZvcmVjYXN0cy9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHMvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M4NWRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZvcmVjYXN0cy9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHNfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZm9yZWNhc3RzX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1ZjMxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHNfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT01MTMyOGNmYjczYmZlYzNlZWQ3Y2ZkM2RiZWQ3Mzk4OCIKLQotUFYgPSAiMC4yLjArc3ZuciR7U1JDUkVWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFtmb3JlY2FzdHNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNoci8wMDAxLU1ha2VmaWxlLXVwZGF0ZS1LRVlCT0FSRFNfRElSLWZvci1uZXctaWxsdW1lMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyLzAwMDEtTWFrZWZpbGUtdXBkYXRlLUtFWUJPQVJEU19ESVItZm9yLW5ldy1pbGx1bWUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMThhNjliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyLzAwMDEtTWFrZWZpbGUtdXBkYXRlLUtFWUJPQVJEU19ESVItZm9yLW5ldy1pbGx1bWUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbSA5MzE2ZTM5NzNjNDRiOTgxZTczYjk1M2IyODYxMDYwYzY5MDJkZTQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBBdWcgMjAxMCAxMjo1NDowNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogdXBkYXRlIEtFWUJPQVJEU19ESVIgZm9yIG5ldyBpbGx1bWUyCi0KLS0tLQotIE1ha2VmaWxlIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNDZlOTQyMC4uM2Q4NzU3YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsNSArMSw1IEBACi0gCi0tSU5TVEJBU0UgPSAvdXNyL2xpYi9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2tleWJvYXJkcwotK0lOU1RCQVNFID0gL3Vzci9saWIvZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS1rZXlib2FyZC9rZXlib2FyZHMKLSAKLSBGSUxFUy1hcmFiaWMgPSBBcmFiaWMua2JkIEFyYWJpYy5wbmcKLSBGSUxFUy1wZXJzaWFuID0gUGVyc2lhbi5rYmQgUGVyc2lhbi5wbmcKLS0tIAotMS43LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHIvTElDRU5TRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmIyZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHIvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNocl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNocl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjVjODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVNFQ1RJT04gPSAieDExL2RhdGEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNoci1wcm9qZWN0Lm9yZy9yZXBvL2lsbHVtZS1rZXlib2FyZHMuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLXVwZGF0ZS1LRVlCT0FSRFNfRElSLWZvci1uZXctaWxsdW1lMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDUkVWID0gIjQwNjQ0ODlmMzU5YTFhZGRmNTcyMDg5YjU4MmYzMTdkZmY1ZjUwZTEiCi1QViA9ICIwLjArZ2l0ciR7U1JDUFZ9IgotUEUgPSAiMSIKLVBSID0gInI1IgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0xJQ0VOU0U7bWQ1PWY1MjNhYjU5ODZjYzc5YjUyYTkwZDJhYzNkNTQ1NGEyIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1QQUNLQUdFUyA9ICJcCi1pbGx1bWUta2V5Ym9hcmQtYWxwaGEgXAotaWxsdW1lLWtleWJvYXJkLWFyYWJpYyBcCi1pbGx1bWUta2V5Ym9hcmQtYnJvd3NlIFwKLWlsbHVtZS1rZXlib2FyZC1kYW5pc2ggXAotaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0IFwKLWlsbHVtZS1rZXlib2FyZC1kdXRjaCBcCi1pbGx1bWUta2V5Ym9hcmQtZHZvcmFrIFwKLWlsbHVtZS1rZXlib2FyZC1maW5uaXNoIFwKLWlsbHVtZS1rZXlib2FyZC1mcmVuY2ggXAotaWxsdW1lLWtleWJvYXJkLWdlcm1hbiBcCi1pbGx1bWUta2V5Ym9hcmQtaGVicmV3IFwKLWlsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCBcCi1pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbiBcCi1pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCBcCi1pbGx1bWUta2V5Ym9hcmQtcGVyc2lhbiBcCi0iCi0KLWluaGVyaXQgYWxsYXJjaAotS0VZQk9BUkRTX0RJUj0iJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUta2V5Ym9hcmQva2V5Ym9hcmRzIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWFscGhhID0gIkplc3VzIE1jQ2xvdWQiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtYWxwaGEgPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggcGhvbmUtbGlrZSBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtYWxwaGEgPSAiJHtLRVlCT0FSRFNfRElSfS9BbHBoYS5rYmQiCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIk1vaGFtbWFkIEZhaG1pIC8gVG9tIEhhY29oZW4iCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGFyYWJpYyBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIiR7S0VZQk9BUkRTX0RJUn0vQXJhYmljLmtiZCAke0tFWUJPQVJEU19ESVJ9L0FyYWJpYy5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtYnJvd3NlID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1icm93c2UgPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggYSBsYXlvdXQgb3B0aW1pemVkIGZvciBicm93c2luZyIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1icm93c2UgPSAiJHtLRVlCT0FSRFNfRElSfS9Ccm93c2Uua2JkICR7S0VZQk9BUkRTX0RJUn0vZW5kLWJyb3dzZS5wbmcgJHtLRVlCT0FSRFNfRElSfS9wYWdlZG93bi1icm93c2UucG5nICR7S0VZQk9BUkRTX0RJUn0vYnJvd3NlLnBuZyAke0tFWUJPQVJEU19ESVJ9L2hvbWUtYnJvd3NlLnBuZyAke0tFWUJPQVJEU19ESVJ9L3BhZ2V1cC1icm93c2UucG5nICR7S0VZQk9BUkRTX0RJUn0vc3BhY2UtYnJvd3NlLnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1kYW5pc2ggPSAiRXNiZW4gRGFtZ2FhcmQiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtZGFuaXNoID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGRhbmlzaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGFuaXNoID0gIiR7S0VZQk9BUkRTX0RJUn0vRGFuaXNoLmtiZCAke0tFWUJPQVJEU19ESVJ9L2RhbmlzaC5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHQgPSAiUGFuZGVyIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0ID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGFuIGFsdGVybmF0aXZlIGRlZmF1bHQgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0ID0gIiR7S0VZQk9BUkRTX0RJUn0vRGVmYXVsdC1hbHQua2JkIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWR1dGNoID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1kdXRjaCA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBkdXRjaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZHV0Y2ggPSAiJHtLRVlCT0FSRFNfRElSfS9jYXBzbG9jay1uZWdhdGl2ZS5wbmcgJHtLRVlCT0FSRFNfRElSfS9lbmQucG5nICR7S0VZQk9BUkRTX0RJUn0vcGFnZWRvd24ucG5nICR7S0VZQk9BUkRTX0RJUn0vcXdlcnR5LWR1dGNoLW5sLnBuZyAke0tFWUJPQVJEU19ESVJ9L1Rlcm1pbmFsLWR1dGNoLW5sLmtiZCAke0tFWUJPQVJEU19ESVJ9L2NhcHNsb2NrLnBuZyAke0tFWUJPQVJEU19ESVJ9L2hvbWUucG5nICR7S0VZQk9BUkRTX0RJUn0vcGFnZXVwLnBuZyAke0tFWUJPQVJEU19ESVJ9L3NwYWNlLnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1kdm9yYWsgPSAiR2Fib3IgQWRhbSBUT1RIIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWR2b3JhayA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBkdm9yYWsgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWR2b3JhayA9ICIke0tFWUJPQVJEU19ESVJ9L0R2b3Jhay5rYmQgJHtLRVlCT0FSRFNfRElSfS9kdm9yYWsucG5nIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWZpbm5pc2ggPSAiT2xvZiBTasO2YmVyZ2ggLyBKdXNzaSBUaW1wZXJpIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWZpbm5pc2ggPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggZmlubmlzaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZmlubmlzaCA9ICIke0tFWUJPQVJEU19ESVJ9L0Zpbm5pc2gua2JkICR7S0VZQk9BUkRTX0RJUn0vRmlubmlzaC5wbmciCi0KLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1mcmVuY2ggPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggZnJlbmNoIGxheW91dCIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1mcmVuY2ggPSAiJHtLRVlCT0FSRFNfRElSfS9BemVydHkua2JkICR7S0VZQk9BUkRTX0RJUn0vQXplcnR5LnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1nZXJtYW4gPSAiRmxvcmlhbiBIYWNrZW5iZXJnZXIiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtZ2VybWFuID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGdlcm1hbiBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZ2VybWFuID0gIiR7S0VZQk9BUkRTX0RJUn0vR2VybWFuLmtiZCAke0tFWUJPQVJEU19ESVJ9L0dlcm1hbi5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtaGVicmV3ID0gIlRvbSBIYWNvaGVuIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWhlYnJldyA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBoZWJyZXcgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWhlYnJldyA9ICIke0tFWUJPQVJEU19ESVJ9L0hlYnJldy5rYmQgJHtLRVlCT0FSRFNfRElSfS9BbHBoYS1oZWJyZXctaWwucG5nIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLW51bWVyaWMtYWx0ID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBhbiBhbHRlcm5hdGl2ZSBudW1lcmljIGxheW91dCIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCA9ICIke0tFWUJPQVJEU19ESVJ9L051bWJlcnMtYWx0LmtiZCAke0tFWUJPQVJEU19ESVJ9L251bWVyaWMtYWx0LnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1ydXNzaWFuID0gImx1Y2t5IgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLXJ1c3NpYW4gPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggcnVzc2lhbiBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbiA9ICIke0tFWUJPQVJEU19ESVJ9L1g4X1J1c3NpYW4ua2JkICR7S0VZQk9BUkRTX0RJUn0vWDgtcnVzc2lhbi1ydS5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCA9ICJsdWNreSIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1ydXNzaWFuLXRlcm1pbmFsID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIHJ1c3NpYW4gbGF5b3V0IGZvciB0aGUgVGVybWluYWwiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCA9ICIke0tFWUJPQVJEU19ESVJ9L1Rlcm1pbmFsX1J1c3NpYW4ua2JkICR7S0VZQk9BUkRTX0RJUn0vVGVybWluYWwtcnVzc2lhbi1ydS5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtcGVyc2lhbiA9ICJzbGF2ZSIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1wZXJzaWFuID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIHBlcnNpYW4gbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLXBlcnNpYW4gPSAiJHtLRVlCT0FSRFNfRElSfS9QZXJzaWFuLmtiZCAke0tFWUJPQVJEU19ESVJ9L1BlcnNpYW4ucG5nIgotCi1kb19pbnN0YWxsKCkgewotICAgIG1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvbmV3c19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9uZXdzX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0OWUwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9uZXdzX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotcmVxdWlyZSBlLW1vZHVsZS5pbmMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kIGNvbmZpZ3VyZS5hYwotICAgIHNlZCAtaSAtZSBzOlwgcG86OmcgTWFrZWZpbGUuYW0KLX0KLQotUE5CTEFDS0xJU1RbbmV3c10gPz0gImlmIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIHdpdGggRTE4LCB0aGVuIHlvdSBuZWVkIHRvIHVwZGF0ZSBpdCB0byBnaXQgcmVjaXBlIGZldGNoaW5nIG5ld2VyIHNvdXJjZXMgZnJvbSBodHRwOi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2VubGlnaHRlbm1lbnQvbW9kdWxlcy9uZXdzLmdpdC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9wbGFjZXMvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmNDgzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9wbGFjZXMvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IHBsYWNlcy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwbGFjZXMub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTo1MTowMS4yNzY1NzQwMTcgKzAwMDAKLSsrKyBwbGFjZXMvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NTI6MDcuMDk2NTc1ODEwICswMDAwCi1AQCAtMTAsNyArMTAsNyBAQAotIEFDX0NBTk9OSUNBTF9IT1NUCi0gQUNfSVNDX1BPU0lYCi0gCi0tQU1fSU5JVF9BVVRPTUFLRSgxLjgpCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3BsYWNlc19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODRmODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi0KLVBWID0gIjAuMS4wK3N2bnIke1NSQ1BWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoCi19Ci0KLSMgQ2FsbHMgL3Vzci9iaW4vZWplY3QgZm9yIG1lZGlhCi1SUkVDT01NRU5EU18ke1BOfSArPSAiZWplY3QiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW3BsYWNlc10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhZ2Vfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFnZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOTBmZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFnZV9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlJhZ2UgaXMgYSBtZWRpYSBjZW50ZXIgYXBwbGljYXRpb24gYmFzZWQgb24gRUZMIgotQVVUSE9SID0gIkNhcnN0ZW4gJ1RoZSBSYXN0ZXJtYW4nIEhhaXR6bGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yYXN0ZXJtYW4uY29tIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSIKLURFUEVORFMgPSAiZW1vdGlvbiBldmFzIGVjb3JlIGVkamUiCi1TRUNUSU9OID0gIngxMS9tdWx0aW1lZGlhIgotUFYgPSAiMC4zLjAuMDQyK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbcmFnZV0gPz0gImlmIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIHdpdGggRTE4LCB0aGVuIHlvdSBuZWVkIHRvIHVwZGF0ZSBpdCB0byBnaXQgcmVjaXBlIGZldGNoaW5nIG5ld2VyIHNvdXJjZXMgZnJvbSAgaHR0cDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9hcHBzL3JhZ2UuZ2l0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW4vY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFpbi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Yzg1ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFpbi9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9yYWluX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW5fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGFhMmVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW5fc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWM5MTBiNjQ1ZWRhMDAwNWNjZWM0NmY3NTIwM2RjOTZlIgotCi1QViA9ICIwLjAuMytzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotcmVxdWlyZSBlLW1vZHVsZS5pbmMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kICR7U30vY29uZmlndXJlLmFjCi0gICAgc2VkIC1pIC1lIHM6XCBwbzo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW3JhaW5dID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9zY3JlZW5zaG90L3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9zY3JlZW5zaG90L3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZjExNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdC9zY3JlZW5zaG90LWZpeC1ta2luc3RhbGxkaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbTogRG1pdHJ5IEVyZW1pbi1Tb2xlbmlrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPgotU3ViamVjdDogZml4IHNjcmVlbnNob3QgcG8vIGJ1aWxkaW5nCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU29tZWhvdyBjb25maWd1cmUgZG9lc24ndCBzdWJzdGl0dXRlIEBNS0lOU1RBTExESVJTQCBieSBkZWZhdWx0IGFueW1vcmUsCi1ob3dldmVyIHRoaXMgc3Vic3RpdHV0aW9uIGlzIHJlcXVpcmVkIGZvciBwby9NYWtlZmlsZQotCi1GaXggdGhhdCBieSBjYWxsaW5nIEFNX01LSU5TVEFMTERJUlMgZnJvbSBjb25maWd1cmUuYWMKLQotU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEVyZW1pbi1Tb2xlbmlrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPgotCi1JbmRleDogRS1NT0RVTEVTLUVYVFJBL3NjcmVlbnNob3QvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gRS1NT0RVTEVTLUVYVFJBLm9yaWcvc2NyZWVuc2hvdC9jb25maWd1cmUuYWMJMjAxMS0wOC0xNyAxNTo0OToyMi4wMDAwMDAwMDAgKzA0MDAKLSsrKyBFLU1PRFVMRVMtRVhUUkEvc2NyZWVuc2hvdC9jb25maWd1cmUuYWMJMjAxMS0wOC0xNyAxNTo0OTozNC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0yNCw2ICsyNCw3IEBACi0gZGVmaW5lKFtBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJR10sIFs6XSlkbmwKLSBBQ19QUk9HX0xJQlRPT0wKLSAKLStBTV9NS0lOU1RBTExESVJTCi0gbTRfaWZkZWYoW0FNX0dOVV9HRVRURVhUX1ZFUlNJT05dLCBbCi0gQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbMC4xNF0pCi0gXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3NjcmVlbnNob3Rfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzM2Y3NzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdF9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLVBWID0gIjAuMy4wK3N2bnIke1NSQ1JFVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IgotU1JDX1VSSSArPSAiZmlsZTovL3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2giCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLURFUEVORFMgKz0gImVtcHJpbnQiCi1SREVQRU5EU18ke1BOfSArPSAiZW1wcmludCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOkFDX01TR19FUlJPUihlbXByaW50IG5vdCBmb3VuZCk6ZWNobyBmb286ZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotUE5CTEFDS0xJU1Rbc2NyZWVuc2hvdF0gPz0gImRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZW1wcmludCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRmNzg5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy90ZXJtaW5vbG9neS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbmxpZ2h0ZW5tZW50IFRlcm1pbmFsIEVtdWxhdG9yIgotTElDRU5TRSA9ICJNSVQgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZWZhYzZiMDViMzI1NmJhN2RhNjYzMDFhYzFlZTZjNiIKLURFUEVORFMgPSAiZXZhcyBlY29yZSBlZGplIGVsZW1lbnRhcnkgZWluYSBlZXQgZW1vdGlvbiIKLQotaW5oZXJpdCBlIGdldHRleHQKLQotIyBCZWNhdXNlIGxhdGVzdCByZWxlYXNlIHdlIGhhdmUgaXMgMC4xLjAgd2hpY2ggc29ydHMgbG93ZXIgdGhlbiAwLjEuMCtzdm5yJHtTUkNQVn0gYWxyZWFkeSBpbiBmZWVkcwotUEUgPSAiMiIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtkYXRhZGlyfS9pY29ucy90ZXJtaW5vbG9neS5wbmcgXAotIgotCi0jIGRvZXNuJ3Qgc3RhcnQgd2l0aG91dCBvd24gdGhlbWUKLSMgRVJSPDc3MD46dGVybWlub2xvZ3kgdXRpbHMuYzoyNiB0aGVtZV9hcHBseSgpIENvdWxkIG5vdCBsb2FkIGFueSB0aGVtZSBmb3IgZ3JvdXA9dGVybWlub2xvZ3kvYmFja2dyb3VuZDogTm8gRXJyb3IKLSMgQ1JJPDc3MD46dGVybWlub2xvZ3kgbWFpbi5jOjQ0OCBlbG1fbWFpbigpIENvdWxkbid0IGZpbmQgdGVybWlub2xvZ3kgdGhlbWUhIEZvcmdvdCAnbWFrZSBpbnN0YWxsJz8KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS10aGVtZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy90ZXJtaW5vbG9neV8wLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5XzAuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2RkMjIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5XzAuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9SRUxFQVNFU30vYXBwcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjN2NlMmU4ZWJjNWYzMTFkM2QzZjU5ZWNmZGYxOGY2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmI4NjRhMTQyMDI0OTBlOTE4MWM1ZjI1NGE3ZTc3MjAxOTIxNmEzYWE3NWMzOTUyZDBmMTJjZDMyMTEzODk2IgotCi1QTkJMQUNLTElTVFt0ZXJtaW5vbG9neV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3VwdGltZS9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWUvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M4NWRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3VwdGltZS9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWVfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvdXB0aW1lX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBkNDhhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotUFYgPSAiMC4wLjIrc3ZuciR7U1JDUkVWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFt1cHRpbWVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9henlfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvYXp5X3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiYzIwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9henlfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQXp5IGlzIGEgbGlicmFyeSBtZWFudCBmb3IgaW1wbGVtZW50aW5nIHJwYyBjbGllbnRzIGFuZCBzZXJ2ZXJzIGluIGEgc2ltcGxlIG1hbm5lci4iCi1ERVBFTkRTID0gInBrZ2NvbmZpZyB6bGliIG9wZW5zc2wgZWluYSBnbnV0bHMgZWNvcmUgbGlieG1sMiByZTJjLW5hdGl2ZSBteXNxbDUgYXp5LW5hdGl2ZSBnbGliLTIuMCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInBrZ2NvbmZpZy1uYXRpdmUgemxpYi1uYXRpdmUgb3BlbnNzbC1uYXRpdmUgZWluYS1uYXRpdmUgZ251dGxzLW5hdGl2ZSBlY29yZS1uYXRpdmUgbGlieG1sMi1uYXRpdmUgcmUyYy1uYXRpdmUgbXlzcWw1LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1QViA9ICIxLjAuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLSMgdG8gcHJvdmlkZSBuYXRpdmUgbGVtb24gYmluYXJ5Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLW15c3FsLXRlc3RzIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgc2VkIC1pICJzI1wuL2xlbW9uIyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9henlfbGVtb24jZyIgJHtTfS9zcmMvYmluL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pICJzI1wkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9henlfcGFyc2VyIC1IIC1wIC1vIyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9henlfcGFyc2VyIC1IIC1wIC1vI2ciICR7U30vc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pICJzI1wkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9henlfcGFyc2VyIC1lSG4gLW0jJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2F6eV9wYXJzZXIgLWVIbiAtbSNnIiAke1N9L3NyYy90ZXN0cy9pZGVudGkuY2EvTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvYmluL2xlbW9uICR7RH0vJHtiaW5kaXJ9L2F6eV9sZW1vbgotfQotCi1pbmhlcml0IGVmbAotCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1BST1RPO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLSMgYXp5LzJfMS4wLjArc3ZucjgyMDcwLXIyL2F6eS9zcmMvbGliL2V4dHJhcy9wdWdpeG1sLmNwcDozMzoKLSMgc3lzcm9vdHMvcWVtdWFybS91c3IvaW5jbHVkZS9jKysvNS4yLjAvYml0cy9iYXNpY19zdHJpbmcuaDo0NzgwOjU6IGVycm9yOiByZWZlcmVuY2UgdG8gJ2Jhc2ljX3N0cmluZycgaXMgYW1iaWd1b3VzCi0jICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ci0jICAgICBeCi1QTkJMQUNLTElTVFthenldID89ICJPTEQgYW5kIGRvZXNuJ3QgYnVpbGQgd2l0aCBnY2MtNSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Utd20taWxsdW1lLWRpY3QtcGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZS13bS1pbGx1bWUtZGljdC1wbF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1N2FkY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZS13bS1pbGx1bWUtZGljdC1wbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlBvbGlzaCBkaWN0aW9uYXJ5IGZvciBJbGx1bWUga2V5Ym9hcmQiCi1TRUNUSU9OID0gIngxMS9kYXRhIgotU1JDUkVWID0gIjM4ZmRkOWJiMGQ4Mjk2ZTk4NGJiNjQ0MzQ2NjgwMWVlYTZmNjJmMDAiCi1QViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgotUEUgPSAiMSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjUyM2FiNTk4NmNjNzliNTJhOTBkMmFjM2Q1NDU0YTIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNoci1wcm9qZWN0Lm9yZy9yZXBvL3Noci10aGVtZXMuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPW1hc3RlciIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9lLXdtLyR7UE59IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS9kaWN0cy9Qb2xpc2guZGljIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2RpY3RzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vUG9saXNoLmRpYyAgICAgICAgJHtEfSR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2RpY3RzL1BvbGlzaC5kaWMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vjb3JlL2ZpeC1lY29yZS1mYi1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vjb3JlL2ZpeC1lY29yZS1mYi1pbml0aWFsaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3NzNhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lY29yZS9maXgtZWNvcmUtZmItaW5pdGlhbGl6YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY1NzU3MTE5N2M5ZDM2OWUxMmFlMzFiNjc3N2ExOTI5ZmUzNjgwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI5IE9jdCAyMDExIDAwOjE2OjU1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVjb3JlLWZiOiBmaXggdHMgaW5pdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIHdob2xlIGVjb3JlLWZiIGluaXQgbG9naWMgaXMgc29tZXdoYXQgZmxhd2VkOyB3aXRoIHRoaXMgcGF0Y2ggd2UKLWdldCBhdCBsZWFzdCBhIHdvcmtpbmcgdG91Y2hzY3JlZW4gdy8gdHNsaWIgYWdhaW4uCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gZWNvcmUvc3JjL2xpYi9lY29yZV9mYi9lY29yZV9mYi5jIHwgICAgNCArKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMgYi9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMKLWluZGV4IDViMmI4NGIuLmExOTA0YjMgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMKLSsrKyBiL3NyYy9saWIvZWNvcmVfZmIvZWNvcmVfZmIuYwotQEAgLTQ2LDYgKzQ2LDkgQEAgZWNvcmVfZmJfaW5pdChjb25zdCBjaGFyICpuYW1lIF9fVU5VU0VEX18pCi0gICAgaWYgKCFlY29yZV9mYl92dF9pbml0KCkpCi0gICAgICAgcmV0dXJuIC0tX2Vjb3JlX2ZiX2luaXRfY291bnQ7Ci0gCi0rICAgaWYgKCFlY29yZV9mYl90c19pbml0KCkpCi0rICAgICAgcmV0dXJuIC0tX2Vjb3JlX2ZiX2luaXRfY291bnQ7Ci0rCi0gICAgaWYgKCFvbGRoYW5kKQotICAgICAgewotICAgICAgICAgb2xkaGFuZCA9IHNpZ25hbChTSUdJTlQsIG5vc2lnaW50KTsKLUBAIC03Nyw2ICs4MCw3IEBAIGVjb3JlX2ZiX3NodXRkb3duKHZvaWQpCi0gICAgICAgICBvbGRoYW5kID0gTlVMTDsKLSAgICAgIH0KLSAgICAKLSsgICBlY29yZV9mYl90c19zaHV0ZG93bigpOwotICAgIGVjb3JlX2ZiX3Z0X3NodXRkb3duKCk7Ci0gCi0gICAgcmV0dXJuIF9lY29yZV9mYl9pbml0X2NvdW50OwotLS0gCi0xLjcuOC42Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzZhYmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYl9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkVkYiBpcyB0aGUgRW5saWdodGVubWVudCBkYXRhYmFzZSBsaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGE3YzA4ZGYzYmMzMjgwMjA4Yjk1OWJlNzIxNWMyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1mNTljYWNjMDgyMzVhNTQ2YjBjMzRhNTQyMjEzMzAzNSIKLQotREVQRU5EUyA9ICJ6bGliIgotUFYgPSAiMS4wLjUuMDUwK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGVmbAotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzLC0tZGlzYWJsZS1uY3Vyc2VzLG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiJHtFX1NWTn0vT0xEO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1cy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZDBlZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRidXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiREJ1cyBhbmQgSEFMIGNvbnZlbmllbmNlIHdyYXBwZXJzIGZvciBFRkwiCi1ERVBFTkRTID0gImRidXMgZWNvcmUgZWluYSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTUwYjhjZWExM2RhY2M0YmYwMDUwOGE4Y2NlMTA3NGMiCi0KLWluaGVyaXQgZWZsCi0KLSMgLWRldiBhbmQgLWRiZyBwYWNrYWdlcyB3YW50cyAke1BOfSB3aGljaCBpcyBlbXB0eSBoZXJlCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLUlOQ19QUiA9ICJyMCIKLQotU1JDTkFNRSA9ICJlX2RidXMiCi0KLSMgaXQgbmVlZHMgdG8gYmUgZGlzYWJsZWQsIGJlY2F1c2UgY3JlYXRlcyBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGVsZW1lbnRhcnkKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWVkYnVzLXBlcmZvcm1hbmNlLXRlc3QiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lbm90aWZ5ICR7UE59LWVkYnVzICR7UE59LWVubSAke1BOfS1laGFsICR7UE59LWVjb25ubWFuICR7UE59LWVvZm9ubyAke1BOfS1ldWtpdCAke1BOfS1lYmx1ZXoiCi1GSUxFU18ke1BOfS1lbm90aWZ5ID0gIiR7bGliZGlyfS9saWJlbm90aWZ5LnNvLiogJHtiaW5kaXJ9L2Utbm90aWZ5LXNlbmQiCi1GSUxFU18ke1BOfS1lZGJ1cyA9ICIke2xpYmRpcn0vbGliZWRidXMuc28uKiIKLUZJTEVTXyR7UE59LWVubSA9ICIke2xpYmRpcn0vbGliZW5tLnNvLioiCi1GSUxFU18ke1BOfS1laGFsID0gIiR7bGliZGlyfS9saWJlaGFsLnNvLioiCi1GSUxFU18ke1BOfS1lY29ubm1hbiA9ICIke2xpYmRpcn0vbGliZWNvbm5tYW4uc28uKiAke2xpYmRpcn0vbGliZWNvbm5tYW4wXzd4LnNvLioiCi1GSUxFU18ke1BOfS1lb2Zvbm8gPSAiJHtsaWJkaXJ9L2xpYmVvZm9uby5zby4qIgotRklMRVNfJHtQTn0tZXVraXQgPSAiJHtsaWJkaXJ9L2xpYmV1a2l0LnNvLioiCi1GSUxFU18ke1BOfS1lYmx1ZXogPSAiJHtsaWJkaXJ9L2xpYmVibHVlei5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZV9kYnVzL2xvZ28ucG5nIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1c18xLjcuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYnVzXzEuNy45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODAzM2FjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYnVzXzEuNy45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9NSVJST1J9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjcyZGExNGU1NjY0YWFkOGM0NWVlZWNhMGUzZmY1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzI4YzRjZjE0MjQ2MjljYjY3YzgzNjg5Y2NjMWY5NTk2N2FiY2I0YzAzZGZmZDQzN2U5M2I3OTlmZjE1MWMxIgotCi1QTkJMQUNLTElTVFtlZGJ1c10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWNvcmUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2VkYnVzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlaW5hIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlZGJ1c10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlZGJ1cyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZWRidXNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWRidXMtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRqZS1mcHUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRqZS1mcHUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmE2ZGFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkamUtZnB1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1kZWYgZ2V0X2VkamVfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKLSAgICAgICAgcmV0dXJuICItLWVuYWJsZS1maXhlZC1wb2ludCIKLSAgICByZXR1cm4gIiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZDIxYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI5MCArMCwwIEBACi1TVU1NQVJZID0gIkVGTCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYTc4NzMyMTA1MjNkY2ZkMzI2OTRiOTQyODZkY2E2MCIKLQotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZnJlZXR5cGUtbmF0aXZlIGxpYnhleHQtbmF0aXZlIGxpYnBuZy1uYXRpdmUganBlZy1uYXRpdmUgdGlmZi1uYXRpdmUgbGliZnJpYmlkaS1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIGRidXMtbmF0aXZlIG9wZW5zc2wtbmF0aXZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IHRzbGliIGN1cmwgZ2xpYi0yLjAgZ251dGxzIHBrZ2NvbmZpZyB6bGliIGpwZWcgb3BlbnNzbCBsaWJzbmRmaWxlMSBkYnVzIGxpYmV4aWYgbGlicnN2ZyBmcmVldHlwZSBsaWJwbmcgdGlmZiBsaWJ4ZXh0IHZpcnR1YWwvbGlieDExIGxpYnhkYW1hZ2UgbGlieHJlbmRlciBmb250Y29uZmlnIGxpYmZyaWJpZGkgZ2lmbGliIHVkZXYgbGlieGN1cnNvciBsaWJ4Y29tcG9zaXRlIGxpYnhpbmVyYW1hIGxpYnhyYW5kciBsaWJ4dHN0IGxpYnhzY3Juc2F2ZXIgZWZsLW5hdGl2ZSB1dGlsLWxpbnV4IGxpYnVud2luZCIKLQotaW5oZXJpdCBlZmwgZ2V0dGV4dCBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVBST1ZJREVTICs9ICJlY29yZSBlZGplIGVldCBlZXplIGVmcmVldCBlaW5hIGVpbyBlbWJyeW8gZW1vdGlvbiBldGh1bWIgZXZhcyBlbGRidXMiCi0KLSMgd2UgZG9uJ3QgaGF2ZSBidWxsZXQgZm9yIHBoeXNpY3MKLSMgWW91IGhhdmUgY2hvc2VuIHRvIGRpc2FibGUgcGh5c2ljcyBzdXBwb3J0LiBUaGlzIGRpc2FibGVzIGxvdHMgb2YKLSMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBpcyBlZmZlY3RpdmVseSBuZXZlciB0ZXN0ZWQuIFlvdSBhcmUgZ29pbmcKLSMgdG8gZmluZCBmZWF0dXJlcyB0aGF0IHN1ZGRlbmx5IGRvbid0IHdvcmsgYW5kIGFzIGEgcmVzdWx0IGNhdXNlCi0jIGEgc2VyaWVzIG9mIGJyZWFrYWdlcy4gVGhpcyBpcyBzaW1wbHkgbm90IHRlc3RlZCBzbyB5b3UgYXJlIG9uCi0jIHlvdXIgb3duIGluIHRlcm1zIG9mIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgd29ya3MgaWYgeW91IGRvIHRoaXMKLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1waHlzaWNzIFwKLSAgICAtLWVuYWJsZS1pLXJlYWxseS1rbm93LXdoYXQtaS1hbS1kb2luZy1hbmQtdGhhdC10aGlzLXdpbGwtcHJvYmFibHktYnJlYWstdGhpbmdzLWFuZC1pLXdpbGwtZml4LXRoZW0tbXlzZWxmLWFuZC1zZW5kLXBhdGNoZXMtYWJhIFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lb2xpYW4tZ2VuPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lb2xpYW5fZ2VuIFwKLSAgICAtLXdpdGgtZW9saWFuLWN4eD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZW9saWFuX2N4eCBcCi0gICAgLS13aXRoLWVsdWE9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VsdWEgXAotIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAtLWRpc2FibGUtZm9udGNvbmZpZyBcCi0gICAgLS1kaXNhYmxlLWF1ZGlvIFwKLSAgICAtLWRpc2FibGUtcGh5c2ljcyBcCi0gICAgLS1kaXNhYmxlLW11bHRpc2Vuc2UgXAotICAgIC0tZGlzYWJsZS1jc2VydmUgXAotICAgIC0tZGlzYWJsZS1saWJlZXplIFwKLSAgICAtLXdpdGgteDExPW5vbmUgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItYm1wIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWVldCBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1nZW5lcmljIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWdpZiBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1pY28gXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItanAyayBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1wbWFwcyBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1wc2QgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItdGdhIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLXdibXAgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItd2VicCBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci14cG0gXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItdGd2IFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWRkcyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImVnbCBvcGVuZ2wtZXMgZ3N0cmVhbWVyMSBwdWxzZWF1ZGlvIGx1YWppdCAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAibHVhaml0IgotCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQgLS1lbmFibGUtd2F5bGFuZC1pdmktc2hlbGwsLS1kaXNhYmxlLXdheWxhbmQgLS1kaXNhYmxlLXdheWxhbmQtaXZpLXNoZWxsLHdheWxhbmQiCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCi0jIHNvcnQgb2YgdHJpLXN0YXRlCi1QQUNLQUdFQ09ORklHW29wZW5nbC1mdWxsXSA9ICItLXdpdGgtb3BlbmdsPWZ1bGwsLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW29wZW5nbC1lc10gPSAiLS13aXRoLW9wZW5nbD1lcywsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsLW5vbmVdID0gIi0td2l0aC1vcGVuZ2w9bm9uZSwsIgotIyBiZSBhd2FyZSB3aGVuIGVuYWJsaW5nIHRoaXMgZm9yIGVmbC1uYXRpdmUsIHdlIGRvbid0IHByb3ZpZGUgZ2NjLW5hdGl2ZSBzbyB5b3UgbmVlZCB0byBtYWtlCi0jIHN1cmUgdGhhdCBhbGwgeW91ciBidWlsZGVycyBoYXZlIGcrKyB3aGljaCBzdXBwb3J0cyAtc3RkPWdudSsrMTEKLVBBQ0tBR0VDT05GSUdbYysrMTFdID0gIi0tZW5hYmxlLWN4eC1iaW5kaW5ncywtLWRpc2FibGUtY3h4LWJpbmRpbmdzIgotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi0tZW5hYmxlLWdzdHJlYW1lciwtLWRpc2FibGUtZ3N0cmVhbWVyLGdzdHJlYW1lciIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyMV0gPSAiLS1lbmFibGUtZ3N0cmVhbWVyMSwtLWRpc2FibGUtZ3N0cmVhbWVyMSxnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2x1YWppdF0gPSAiLS1kaXNhYmxlLWx1YS1vbGQsLS1lbmFibGUtbHVhLW9sZCxsdWFqaXQiCi1QQUNLQUdFQ09ORklHW2x1YS1vbGRdID0gIi0tZW5hYmxlLWx1YS1vbGQsLS1kaXNhYmxlLWx1YS1vbGQsbHVhIgotUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotIyBjdXJyZW50bHkgd2UgZG9uJ3QgcHJvdmlkZSBkb3h5Z2VuLW5hdGl2ZQotUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0tZW5hYmxlLWRvYywtLWRpc2FibGUtZG9jLGRveHlnZW4tbmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGRvbid0IHNoaXAgcHJlY29tcGlsZWQgbHVhIGZpbGVzCi0gICAgcm0gLWYgJHtkYXRhZGlyfS9lbHVhLyovKi5sdWFjCi19Ci0KLVBBQ0tBR0VTID0rICJlZGplLXV0aWxzIGVtYnJ5by11dGlscyBlbWJyeW8tdGVzdHMgZWZyZWV0LXRyYXNoIGVmcmVldC1taW1lIGxpYmVldCBsaWJlZnJlZXQgZWNvcmUtYXVkaW8gZWNvcmUtaW5wdXQtZXZhcyBlY29yZS1pbnB1dCBlY29yZS1pbWYtZXZhcyBlY29yZS1pbWYgZWNvcmUtZmlsZSBlY29yZS1jb24gZWNvcmUtaXBjIGVjb3JlLXggZWNvcmUtZXZhcyBsaWJlbW90aW9uIGVvIGVjb3JlIGVkamUgZWV0IGVlemUgZWZyZWV0IGVpbmEgZWlvIGVtYnJ5byBlbW90aW9uIGV0aHVtYiBldmFzIGVsZGJ1cyBlbHVhIgotCi0jIHVwZ3JhZGUgcGF0aCBmcm9tIDEuNwotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtYXVkaW8gPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlucHV0LWV2YXMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlucHV0ID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1pbWYtZXZhcyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtaW1mID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1maWxlID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1jb24gPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlwYyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUteCA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtZXZhcyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZW1icnlvID0gIjEiCi0KLUFMTE9XX0VNUFRZX2Vjb3JlID0gIjEiCi1SREVQRU5EU19lY29yZSA9ICJlY29yZS1hdWRpbyBlY29yZS1pbnB1dC1ldmFzIGVjb3JlLWlucHV0IGVjb3JlLWltZi1ldmFzIGVjb3JlLWltZiBlY29yZS1maWxlIGVjb3JlLWNvbiBlY29yZS1pcGMgZWNvcmUteCBlY29yZS1ldmFzIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZm9yIHBsdWdpbl90eXBlIGluICJlbmdpbmVzIGxvYWRlcnMgc2F2ZXJzIi5zcGxpdCgpOgotICAgICAgICBiYi5ub3RlKCAic3BsaXR0aW5nIHBhY2thZ2VzIGZvciBldmFzICVzLi4uIiAlIHBsdWdpbl90eXBlICkKLSAgICAgICAgYmFzZWRpciA9IGQuZXhwYW5kKCAnJHtsaWJkaXJ9L2V2YXMvbW9kdWxlcy8lcycgJSBwbHVnaW5fdHlwZSkKLQotICAgICAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYXNlZGlyLCAnXiguKiknLAotICAgICAgICBvdXRwdXRfcGF0dGVybiA9ICdldmFzLScgKyBwbHVnaW5fdHlwZVs6LTFdICsgIi0lcyIsCi0gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgbW9kdWxlICVzJywKLSAgICAgICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotCi0gICAgICAgIHBsdWdpbl90eXBlID0gImNzZXJ2ZTIiCi0gICAgICAgIGJiLm5vdGUoICJzcGxpdHRpbmcgcGFja2FnZXMgZm9yIGV2YXMgJXMuLi4iICUgcGx1Z2luX3R5cGUgKQotICAgICAgICBiYXNlZGlyID0gZC5leHBhbmQoICcke2xpYmRpcn0vZXZhcy8lcy9sb2FkZXJzJyAlIHBsdWdpbl90eXBlKQotCi0gICAgICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhc2VkaXIsICdeKC4qKScsCi0gICAgICAgIG91dHB1dF9wYXR0ZXJuID0gJ2V2YXMtJyArIHBsdWdpbl90eXBlICsgIi0lcyIsCi0gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgY3NldmVyMiBsb2FkZXIgbW9kdWxlICVzJywKLSAgICAgICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotfQotCi1QQUNLQUdFUyArPSAiZXZhcy1sb2FkZXItcG5nIGV2YXMtZW5naW5lLXNvZnR3YXJlLWdlbmVyaWMgZXZhcy1lbmdpbmUtZmIiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZXZhcy1lbmdpbmUtLiogXmV2YXMtbG9hZGVyLS4qIF5ldmFzLXNhdmVyLS4qIF5ldmFzLWNzZXJ2ZTItLioiCi0KLSMgUEFDS0FHRVNfRFlOQU1JQyArIGRvX3NwbGl0X3BhY2thZ2VzIGlzbid0IHVzZWQgZm9yIGFsbCBsaWJlIGxpYnMsCi0jIGJlY2F1c2UgUEFDS0FHRVNfRFlOQU1JQyB3b3VsZCBiZSBjYXRjaGluZyB0b28gbWFueSBwYXR0ZXJucwotIyAob3IgbmVlZCB0byBsaXN0IGFsbCBwb3NzaWJsZSBwcmVmaXhlcykgYW5kIG5vdCBhbGwgb3JpZ2luYWwgcGFja2FnZXMKLSMgd2VyZSBzcGxpdHRlZCBsaWtlIHRoYXQsIHNvIGl0IHdvdWxkIG5lZWQgUkNPTkZMSUNUUy9SUFJPVklERVMvUlJFUExBQ0VTCi0jIGNvbWJvcyBhdCBsZWFzdCBpbiBmZXcgcGxhY2VzIGZvciB1cGdyYWRlIHBhdGguCi0KLUZJTEVTX2VmcmVldC10cmFzaCA9ICIgXAotICAgICR7bGliZGlyfS9saWJlZnJlZXRfdHJhc2gke1NPTElCU30gXAotIgotRklMRVNfZWZyZWV0LW1pbWUgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWZyZWV0X21pbWUke1NPTElCU30gXAotIgotRklMRVNfbGliZWV0ID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVldCR7U09MSUJTfSBcCi0iCi1GSUxFU19saWJlZnJlZXQgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWZyZWV0JHtTT0xJQlN9IFwKLSIKLUZJTEVTX2Vjb3JlLWF1ZGlvID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfYXVkaW8ke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaW5wdXQtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2lucHV0X2V2YXMke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaW5wdXQgPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9pbnB1dCR7U09MSUJTfSBcCi0iCi1GSUxFU19lY29yZS1pbWYtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2ltZl9ldmFzJHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vZWNvcmUtaW1mL21vZHVsZXMvKi8qL21vZHVsZS5zbyBcCi0iCi1GSUxFU19lY29yZS1pbWYgPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9pbWYke1NPTElCU30gXAotIgotCi1GSUxFU19lY29yZS1maWxlID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfZmlsZSR7U09MSUJTfSBcCi0iCi1GSUxFU19lY29yZS1jb24gPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9jb24ke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaXBjID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfaXBjJHtTT0xJQlN9IFwKLSIKLUZJTEVTX2Vjb3JlLXggPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV94JHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vZWNvcmVfeC9iaW4vdi0qL2Vjb3JlX3hfdnN5bmMgXAotIgotRklMRVNfZWNvcmUtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2V2YXMke1NPTElCU30gXAotICAgICR7bGliZGlyfS9lY29yZS1ldmFzL2VuZ2luZXMvKi8qL21vZHVsZS5zbyBcCi0iCi1GSUxFU19laW8gPSAiXAotICAgICR7bGliZGlyfS9saWJlaW8ke1NPTElCU30gXAotIgotRklMRVNfZWluYSA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVpbmEke1NPTElCU30gXAotICAgICR7YmluZGlyfS9laW5hLWJlbmNoLWNtcCBcCi0iCi1GSUxFU19lZGplLXV0aWxzID0gIlwKLSAgICAke2JpbmRpcn0vZWRqZV8qIFwKLSAgICAke2RhdGFkaXJ9L2VkamUvaW5jbHVkZS9lZGplLmluYyBcCi0iCi1GSUxFU19lbGRidXMgPSAiXAotICAgICR7bGliZGlyfS9saWJlbGRidXMke1NPTElCU30gXAotIgotRklMRVNfZW8gPSAiXAotICAgICR7bGliZGlyfS9saWJlbyR7U09MSUJTfSBcCi0iCi1GSUxFU19saWJlbW90aW9uID0gIlwKLSAgICAke2xpYmRpcn0vbGliZW1vdGlvbiR7U09MSUJTfSBcCi0iCi1GSUxFU19lZnJlZXQgPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qRWZyZWV0KiBcCi0gICAgJHtsaWJkaXJ9L2VmcmVldC8qL2VmcmVldCpjcmVhdGUgXAotICAgICR7YmluZGlyfS9lZnJlZXRkIFwKLSAgICAke2RhdGFkaXJ9L2VmcmVldCBcCi0iCi1GSUxFU19lZXQgPSAiIFwKLSAgICAke2JpbmRpcn0vZWV0IFwKLSAgICAke2JpbmRpcn0vZWV0cGFjayBcCi0gICAgJHtiaW5kaXJ9L3ZpZWV0IFwKLSAgICAke2JpbmRpcn0vZGlmZmVldCBcCi0gICAgJHtsaWJkaXJ9L2xpYmVldCR7U09MSUJTfSBcCi0iCi1GSUxFU19lbW90aW9uID0gIiBcCi0gICAgJHtkYXRhZGlyfS9lbW90aW9uIFwKLSAgICAke2xpYmRpcn0vZW1vdGlvbi9tb2R1bGVzL2dzdHJlYW1lcjEvKi9tb2R1bGUuc28gXAotIgotRklMRVNfZW1icnlvLXRlc3RzID0gIiBcCi0gICAgJHtkYXRhZGlyfS9lbWJyeW8vIFwKLSIKLUZJTEVTX2VtYnJ5by11dGlscyA9ICIgXAotICAgICR7YmluZGRpcn0vZW1icnlvXyogXAotIgotRklMRVNfZW1icnlvID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVtYnJ5byR7U09MSUJTfSBcCi0iCi1GSUxFU19ldGh1bWIgPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qRXRodW1iKiBcCi0gICAgJHtsaWJkaXJ9L2xpYmV0aHVtYiR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2xpYmV0aHVtYl9jbGllbnQke1NPTElCU30gXAotICAgICR7YmluZGlyfS9ldGh1bWJkIFwKLSAgICAke2JpbmRpcn0vZXRodW1iZF9jbGllbnQgXAotICAgICR7YmluZGlyfS9ldGh1bWIgXAotICAgICR7bGliZGlyfS9ldGh1bWIvKi8qLyovbW9kdWxlLnNvIFwKLSAgICAke2xpYmRpcn0vZXRodW1iLyovKi8qLyouZWRqIFwKLSAgICAke2xpYmRpcn0vZXRodW1iX2NsaWVudC91dGlscy8qL2V0aHVtYmRfc2xhdmUgXAotICAgICR7ZGF0YWRpcn0vZXRodW1iKiBcCi0iCi1GSUxFU19lY29yZSA9ICIgXAotICAgICR7bGliZGlyfS9saWJlY29yZSR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2Vjb3JlKi8qLyovKi9tb2R1bGUuc28gXAotICAgICR7ZGF0YWRpcn0vZWNvcmUqIFwKLSIKLUZJTEVTX2V2YXMgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZXZhcyR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2V2YXMqLyovKi8qLyovbW9kdWxlLnNvIFwKLSAgICAke2xpYmRpcn0vZXZhcyovKi8qLyovKi8qLmVkaiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvY3NlcnZlMi9iaW4vKi9ldmFzX2NzZXJ2ZTIqIFwKLSAgICAke2RhdGFkaXJ9L2V2YXMqIFwKLSAgICAke2JpbmRpcn0vZXZhc19jc2VydmUyXyogXAotIgotCi1GSUxFU19lZXplID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVlemUke1NPTElCU30gXAotICAgICR7bGliZGlyfS9lZXplKi8qLyovKi8qL21vZHVsZS5zbyBcCi0gICAgJHtkYXRhZGlyfS9lZXplIFwKLSAgICAke2JpbmRpcn0vZWV6ZV8qIFwKLSIKLUZJTEVTX2VkamUgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWRqZSR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2VkamUqLyovKi8qL21vZHVsZS5zbyBcCi0gICAgJHtsaWJkaXJ9L2VkamUvdXRpbHMvKi9lcHAgXAotICAgICR7ZGF0YWRpcn0vZWRqZSBcCi0gICAgJHtkYXRhZGlyfS9taW1lIFwKLSIKLUZJTEVTX2VsdWEgPSAiIFwKLSAgICAke2JpbmRpcn0vZWx1YSBcCi0gICAgJHtkYXRhZGlyfS9lbHVhIFwKLSIKLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSAgICAke2xpYmRpcn0vZWZyZWV0LyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZWNvcmUqLyovKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2Vjb3JlKi8qLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZXZhcyovKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9ldmFzL2NzZXJ2ZTIvYmluLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZWV6ZSovKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lZGplKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lZGplL3V0aWxzLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZXRodW1iLyovKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2V0aHVtYl9jbGllbnQvdXRpbHMvKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lbW90aW9uL21vZHVsZXMvZ3N0cmVhbWVyMS8qLy5kZWJ1ZyBcCi0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2NtYWtlIFwKLSAgICAke2xpYmRpcn0vZWNvcmUqLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2V2YXMqLyovKi8qLyovbW9kdWxlLmxhIFwKLSAgICAke2xpYmRpcn0vZXRodW1iKi8qLyovKi9tb2R1bGUubGEgXAotICAgICR7bGliZGlyfS9lZXplKi8qLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2VkamUqLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2Vtb3Rpb24vbW9kdWxlcy9nc3RyZWFtZXIxLyovbW9kdWxlLmxhIFwKLSAgICAke2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWQgXAotICAgICR7ZGF0YWRpcn0vZW8vZ2RiIFwKLSAgICAke2JpbmRpcn0vZWxkYnVzLWNvZGVnZW4gXAotIgotCi1QTkJMQUNLTElTVFtlZmxdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBlZmwtbmF0aXZlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotUE5CTEFDS0xJU1RbZWZsLW5hdGl2ZV0gPz0gIkJyb2tlbjogZmFpbHMgdG8gYnVpbGQgd2l0aCBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTM4MjQwLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4NWY4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZmwvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtY2hlY2stZm9yLVhwcmludC1leHRlbnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDI3YWVkY2RjZGFmYmYwNzlkYzAyMmJhYjcyZWMzMDljZjdkYjMxNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEwIEphbiAyMDE0IDE3OjA3OjEzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBjb25maWd1cmUuYWM6IERvbid0IGNoZWNrIGZvciBYcHJpbnQgZXh0ZW5zaW9uCi0KLSogaXQncyBsb25nIGdvbmUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzEwOGIxYi4uZjAxOWJmYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ3NCw3ICszNDc0LDYgQEAgaWYgdGVzdCAieCR7d2FudF94MTFfeGxpYn0iID0gInh5ZXMiIDsgdGhlbgotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYZHBtc10sIFtkcG1zLmhdLCBbWGV4dF0sIFtEUE1TUXVlcnlFeHRlbnNpb25dKQotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYZml4ZXNdLCBbWGZpeGVzLmhdLCBbWGZpeGVzXSwgW1hGaXhlc0V4cGFuZFJlZ2lvbl0pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hpbmVyYW1hXSwgW1hpbmVyYW1hLmhdLCBbWGluZXJhbWFdLCBbWGluZXJhbWFRdWVyeVNjcmVlbnNdKQotLSAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYcHJpbnRdLCBbUHJpbnQuaF0sIFtYcF0sIFtYcFF1ZXJ5U2NyZWVuc10pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hyYW5kcl0sIFtYcmFuZHIuaF0sIFtYcmFuZHJdLCBbWFJSR2V0U2NyZWVuUmVzb3VyY2VzQ3VycmVudF0pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hyZW5kZXJdLCBbWHJlbmRlci5oXSwgW1hyZW5kZXJdLCBbWFJlbmRlckZpbmRWaXN1YWxGb3JtYXRdKQotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYdGVzdF0sIFtYVGVzdC5oXSwgW1h0c3RdLCBbWFRlc3RGYWtlS2V5RXZlbnRdKQotLS0gCi0yLjMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZmwvMDAwMS1ldmFzXzNkLUFkZC1FZXQuaC1pbmNsdWRlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWV2YXNfM2QtQWRkLUVldC5oLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGYyNmM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWV2YXNfM2QtQWRkLUVldC5oLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyZTUwZmQyZGZjNjhiNzdlN2FjZGRjNzk1NTBmMjI5ODc3NzhhODk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIERlYyAyMDE0IDEyOjIxOjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGV2YXNfM2Q6IEFkZCBFZXQuaCBpbmNsdWRlcwotCi0qIHdpdGggc29tZSB2ZXJ5IHJlc3RyaWN0aXZlIG9wdGlvbnMgbGlrZSB3ZSB1c2UgaW4gZWZsLW5hdGl2ZSwgdGhlIGJ1aWxkIGlzIGNvbXBsYWluaW5nCi0gIGFib3V0IG1pc3Npbmcgc3ltYm9scyBmcm9tIEVldC5oLCBhZGQgaW5jbHVkZSB3aGVyZSBuZWVkZWQKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2xpYi9ldmFzL2NhbnZhcy9ldmFzX2NhbnZhczNkX2VldC5jICAgICAgICAgICAgICAgICAgfCAxICsKLSBzcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYyB8IDEgKwotIHNyYy9tb2R1bGVzL2V2YXMvbW9kZWxfc2F2ZXJzL2VldC9ldmFzX21vZGVsX3NhdmVfZWV0LmMgIHwgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYyBiL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYwotaW5kZXggMjgxZjY5ZC4uYTYwNDA3NiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYwotKysrIGIvc3JjL2xpYi9ldmFzL2NhbnZhcy9ldmFzX2NhbnZhczNkX2VldC5jCi1AQCAtMSwzICsxLDQgQEAKLSsjaW5jbHVkZSA8RWV0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgImV2YXNfY29tbW9uX3ByaXZhdGUuaCIKLSAjaW5jbHVkZSAiZXZhc19wcml2YXRlLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9sb2FkZXJzL2VldC9ldmFzX21vZGVsX2xvYWRfZWV0LmMgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYwotaW5kZXggODAzODQ2ZC4uN2ViYWY4ZSAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2V2YXMvbW9kZWxfbG9hZGVycy9lZXQvZXZhc19tb2RlbF9sb2FkX2VldC5jCi0rKysgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYwotQEAgLTMsNiArMyw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPEVvLmg+Ci0rI2luY2x1ZGUgPEVldC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJldmFzX2NvbW1vbl9wcml2YXRlLmgiCi0gI2luY2x1ZGUgImV2YXNfcHJpdmF0ZS5oIgotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2V2YXMvbW9kZWxfc2F2ZXJzL2VldC9ldmFzX21vZGVsX3NhdmVfZWV0LmMgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX3NhdmVycy9lZXQvZXZhc19tb2RlbF9zYXZlX2VldC5jCi1pbmRleCA3MWUwOTRhLi40ZDU2OTc3IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9zYXZlcnMvZWV0L2V2YXNfbW9kZWxfc2F2ZV9lZXQuYwotKysrIGIvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9zYXZlcnMvZWV0L2V2YXNfbW9kZWxfc2F2ZV9lZXQuYwotQEAgLTIsNiArMiw3IEBACi0gICAgI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxFZXQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSAiZXZhc19jb21tb25fcHJpdmF0ZS5oIgotICNpbmNsdWRlICJldmFzX3ByaXZhdGUuaCIKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsXzEuMTUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbF8xLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMTg1MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsXzEuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZXZhc18zZC1BZGQtRWV0LmgtaW5jbHVkZXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGM5MWJjYWI3MzI3NWY2NzhlMTc0OGEyZGVhOGQ4OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE2ZDBhYjI4MDIwYjQ3NDFiZTIwYjMyYWQwZmZlYjhmOTdmNzY2YzVjMzIxNzViYWNjMmYyZDBkYzUyZjk4YyIKLQotIyBUZW1wb3JhcnkgZGlzYWJsZSB1bnRpbCBlcnJvciBsaWtlIHRoZSBvbmUgZm9sbG93aW5nIGFyZSBmaXhlZAotIyBlZmwtbmF0aXZlLzJfMS44LjQtcjAvZWZsLTEuOC40L3NyYy9saWIvZWV0Ly5saWJzL2xpYmVldC5zbzogZmlsZSBub3QgcmVjb2duaXplZDogRmlsZSB0cnVuY2F0ZWQKLSMgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0jIHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBtb2R1bGVzL2V2YXMvc2F2ZXJzL3RpZmYvbW9kdWxlLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jIE1ha2VmaWxlOjExMDMxOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zYXZlcnRpZmZwa2dMVExJQlJBUklFUycgZmFpbGVkCi1QQVJBTExFTF9NQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLSNFRkxfUlVOX0lOX1RSRUU9MSAuLi9zcmMvYmluL2VvbGlhbi9lb2xpYW5fZ2VuIC0tZW8gLS1sZWdhY3kgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL3g4Nl82NC1saW51eC9lZmwtbmF0aXZlLzJfMS4xMC4wLXIwL2VmbC0xLjEwLjAvc3JjL2xpYi9lbyAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2V2YXMvY2FudmFzIC1JL09FL2J1aWxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay94ODZfNjQtbGludXgvZWZsLW5hdGl2ZS8yXzEuMTAuMC1yMC9lZmwtMS4xMC4wL3NyYy9saWIvZWRqZSAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2Vjb3JlX2F1ZGlvIC0tZ2MgLW8gbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jIC9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lbwotI0VSUjwzMjQzOT46ZW9saWFuX2dlbiAvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL3g4Nl82NC1saW51eC9lZmwtbmF0aXZlLzJfMS4xMC4wLXIwL2VmbC0xLjEwLjAvc3JjL2Jpbi9lb2xpYW4vbWFpbi5jOjEwMyBfZ2VuZXJhdGVfY19maWxlKCkgQ291bGRudCBvcGVuIGZpbGUgbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jIGZvciB3cml0aW5nCi0jTWFrZWZpbGU6MzA3Mzg6IHJlY2lwZSBmb3IgdGFyZ2V0ICdsaWIvZXZhcy9jYW52YXMvZXZhc19saW5lLmVvLmMnIGZhaWxlZAotI21ha2VbMl06ICoqKiBbbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jXSBFcnJvciAxCi0jTWFrZWZpbGU6MjE2MzogcmVjaXBlIGZvciB0YXJnZXQgJ2FsbC1yZWN1cnNpdmUnIGZhaWxlZAotIyBhdXRvdG9vbHMtYnJva2Vuc2VwCi1CID0gIiR7U30iCi0KLSNsZDogZXJyb3I6IG1vZHVsZXMvZXZhcy9pbWFnZV9sb2FkZXJzL3BuZy9iaW5fZXZhc19ldmFzX2NzZXJ2ZTJfc2xhdmUtZXZhc19pbWFnZV9sb2FkX3BuZy5vOiByZXF1aXJlcyB1bnN1cHBvcnRlZCBkeW5hbWljIHJlbG9jIFJfQVJNX01PVldfQUJTX05DOyByZWNvbXBpbGUgd2l0aCAtZlBJQwotI2xkOiBlcnJvcjogbW9kdWxlcy9ldmFzL2ltYWdlX2xvYWRlcnMvcG5nL2Jpbl9ldmFzX2V2YXNfY3NlcnZlMl9zbGF2ZS1ldmFzX2ltYWdlX2xvYWRfcG5nLm86IHJlcXVpcmVzIHVuc3VwcG9ydGVkIGR5bmFtaWMgcmVsb2MgUl9BUk1fTU9WV19BQlNfTkM7IHJlY29tcGlsZSB3aXRoIC1mUElDCi1DRkxBR1MgKz0gIi1mUElDIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC9MSUNFTlNFIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJiMmY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHQvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbGVtZW50YXJ5LXRoZW1lLWVmZW5uaWh0X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODNkMTIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZWZlbm5paHQgZWxlbWVudGFyeSB0aGVtZSAtIEVmZW5uaWh0IHdhcyBkZXZpc2VkIHRvIGJlIGNsZWFuIFwKLWFuZCBuZXV0cmFsLiBJdHMgbmFtZSAod2hpY2ggbWVhbnMgZXF1aW5veCkgY29tZXMgZnJvbSB0aGUgY2hyb21hdGljIGR1YWxpdHkgXAotdGhhdCB3YXMgZGVjaWRlZCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcsIHdpdGggYSBkYXJrIHRoZW1lIChibGFjayBhbmQgb3JhbmdlKSBcCi1hbmQgYSBicmlnaHQgb25lICh3aGl0ZSBhbmQgYmx1ZSkgdG8gYmUgZGV2ZWxvcGVkIHNvIHRoYXQgbW9yZSBwZW9wbGUgZmVlbCBcCi1jb21mb3J0YWJsZSB1c2luZyBpdC4gRWZlbm5paHQgdXNlcyBmZXcgYW5pbWF0aW9ucywgZGlzY3JldGUgY29udHJhc3RzIGJldHdlZW4gXAotc2hhZGVzIG9mIGdyYXkgYW5kIGZpbmUgbGluZXMgKGNvbG9yZWQpIHRoYXQgb3V0bGluZSB0aGUgc2VsZWN0ZWQgZWxlbWVudHMuIgotU0VDVElPTiA9ICJlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3RyYWMuZW5saWdodGVubWVudC5vcmcvZS93aWtpL1RoZW1lcyNFZmVubmlodCIKLURFUEVORFMgPSAiZWRqZS1uYXRpdmUiCi1SU1VHR0VTVFNfJHtQTn0gPSAiZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQiCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vTElDRU5TRTttZDU9ZjUyM2FiNTk4NmNjNzliNTJhOTBkMmFjM2Q1NDU0YTIiCi0KLVNSQ1JFVl9USE1fUkVWID89ICIke0VGTF9TUkNSRVZ9IgotU1JDUkVWX0VMTV9SRVYgPz0gIiR7RUZMX1NSQ1JFVn0iCi0KLVNSQ1JFVl9GT1JNQVQgPSAiVEhNX1JFViIKLVBWID0gIjAuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBlLWJhc2UgYWxsYXJjaAotCi1TUkNOQU1FID0gImVmZW5uaWh0IgotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9USEVNRVM7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtuYW1lPVRITV9SRVYiCi1TUkNfVVJJICs9ICIke0VfU1ZOfS90cnVuay9lbGVtZW50YXJ5L2RhdGE7bW9kdWxlPXRoZW1lcztwcm90b2NvbD1odHRwO25hbWU9RUxNX1JFViIKLVNSQ19VUkkgKz0gImZpbGU6Ly9MSUNFTlNFIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgLWlkICR7U30vaW1hZ2VzIC1pZCAke1dPUktESVJ9L3RoZW1lcy9pbWFnZXMgJHtTfS9lbG0tZWZlbm5paHQuZWRjIC1vICR7U30vZWxtLWVmZW5uaWh0LmVkagotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZWxlbWVudGFyeS90aGVtZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZWxtLWVmZW5uaWh0LmVkaiAke0R9JHtkYXRhZGlyfS9lbGVtZW50YXJ5L3RoZW1lcy8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9lbGVtZW50YXJ5L3RoZW1lcy8iCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVkamUtbmF0aXZlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlbGVtZW50YXJ5LXRoZW1lLWVmZW5uaWh0XSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnktdGhlbWUtZWZlbm5paHQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbGVtZW50YXJ5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWM2N2FhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRUZMIGJhc2VkIHdpZGdldCBzZXQgZm9yIG1vYmlsZSBkZXZpY2VzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExNzMwNTRhOTM4OTZlOTMzZGY1M2UzMzgyZDQ3MmMyIgotREVQRU5EUyA9ICJlZXQtbmF0aXZlIGVkamUtbmF0aXZlIGVsZW1lbnRhcnktbmF0aXZlIGVmcmVldCBldmFzIGVjb3JlIGVkamUgZWV0IGVsZGJ1cyBldGh1bWIgZWlvIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZWZsLW5hdGl2ZSIKLQotaW5oZXJpdCBlZmwgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lZXQtZWV0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZXQgXAotICAgIC0td2l0aC1lbGVtZW50YXJ5LWNvZGVnZW49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VsZW1lbnRhcnlfY29kZWdlbiBcCi0gICAgLS13aXRoLWVsbS1wcmVmcy1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWxtX3ByZWZzX2NjIFwKLSAgICAtLXdpdGgtZW9saWFuLWdlbj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZW9saWFuX2dlbiBcCi0gICAgLS13aXRoLWVvbGlhbi1jeHg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VvbGlhbl9jeHggXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJR1tld2VhdGhlcl0gPSAiLS1lbmFibGUtZXdlYXRoZXIsLS1kaXNhYmxlLWV3ZWF0aGVyLGxpYmV3ZWF0aGVyIgotUEFDS0FHRUNPTkZJR1tld2Via2l0XSA9ICItLXdpdGgtZWxlbWVudGFyeS13ZWItYmFja2VuZD1ld2Via2l0LC0td2l0aC1lbGVtZW50YXJ5LXdlYi1iYWNrZW5kPW5vbmUsd2Via2l0LWVmbCIKLSMgYmUgYXdhcmUgd2hlbiBlbmFibGluZyB0aGlzIGZvciBlZmwtbmF0aXZlLCB3ZSBkb24ndCBwcm92aWRlIGdjYy1uYXRpdmUgc28geW91IG5lZWQgdG8gbWFrZQotIyBzdXJlIHRoYXQgYWxsIHlvdXIgYnVpbGRlcnMgaGF2ZSBnKysgd2hpY2ggc3VwcG9ydHMgLXN0ZD1nbnUrKzExCi1QQUNLQUdFQ09ORklHW2MrKzExXSA9ICItLWVuYWJsZS1jeHgtYmluZGluZ3MsLS1kaXNhYmxlLWN4eC1iaW5kaW5ncyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBwcmVmaXggcmV0dXJuZWQgZW9saWFuIHBhdGhzIHdpdGggU1RBR0lOR19ESVJfSE9TVAotICAgIHNlZCAtaSAncyVeXChERVBTX0VPTElBTl9GTEFHUz1gLipcKWAkJVwxIHwgc2VkICJzIy1JXFwke3ByZWZpeH0jLUlcXCR7U1RBR0lOR19ESVJfSE9TVH1cXCR7cHJlZml4fSNnImAlZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZyBcCi0gICAgICAgICAgIC1lIHM6LyR7VEFSR0VUX1NZU306OmcgXAotICAgICAgICAgICAgICBlbGVtZW50YXJ5LnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1jb25maWdzICR7UE59LWFjY2Vzc2liaWxpdHkiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BOfS10aGVtZXMgXAotICAgICR7UE59LWNvbmZpZ3MgXAotIgotUlNVR0dFU1RTXyR7UE59ID0gIiR7UE59LXRlc3RzICR7UE59LWFjY2Vzc2liaWxpdHkiCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtsaWJkaXJ9L2VkamUvbW9kdWxlcy9lbG0gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvZGF0ZXRpbWVfaW5wdXRfY3R4cG9wdXAvKi9tb2R1bGUuc28gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvcHJlZnMvKi9tb2R1bGUuc28gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvcHJlZnMvKi8qLmVkaiBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7YmluZGlyfS9lbG1fcHJlZnNfY2MgXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2NtYWtlIFwKLSIKLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIlwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvdGhlbWVzIFwKLSIKLQotRklMRVNfJHtQTn0tY29uZmlncyA9ICJcCi0gICAgJHtkYXRhZGlyfS9lbGVtZW50YXJ5L2NvbmZpZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2VkamUvbW9kdWxlcy9lbG0vKi8uZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS10ZXN0cyA9ICJcCi0gICAgJHtiaW5kaXJ9L2VsZW1lbnRhcnkqIFwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvaW1hZ2VzIFwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvb2JqZWN0cyBcCi0gICAgJHtkYXRhZGlyfS9lbGVtZW50YXJ5L2V4YW1wbGVzIFwKLSAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8qIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zLyogXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvdGVzdF9lbnRyeS8qIFwKLSAgICAke2xpYmRpcn0vZWxlbWVudGFyeS9tb2R1bGVzL3Rlc3RfbWFwLyogXAotIgotCi1GSUxFU18ke1BOfS1hY2Nlc3NpYmlsaXR5ID0gIlwKLSAgICAke2xpYmRpcn0vZWxlbWVudGFyeS9tb2R1bGVzL2FjY2Vzc19vdXRwdXQvKiBcCi0iCi0KLSMgU29tZSB1cGdyYWRlIHBhdGggdHdlYWtpbmcsIGFzIGluIGV2YXMKLUFVVE9fTElCTkFNRV9QS0dTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkvMDAwMS1NYWtlZmlsZS1Vc2UtZWxlbWVudGFyeV9jb2RlZ2VuLWRlZmluZWQtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS8wMDAxLU1ha2VmaWxlLVVzZS1lbGVtZW50YXJ5X2NvZGVnZW4tZGVmaW5lZC1pbi1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MjRjNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS8wMDAxLU1ha2VmaWxlLVVzZS1lbGVtZW50YXJ5X2NvZGVnZW4tZGVmaW5lZC1pbi1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDc1ZDEwNGQxMDVhYTAzZGQ5ZDQ0NmZhN2Q4NGZhOTVlMGY1NjZjZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDExIEphbiAyMDE0IDEyOjU1OjU5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBVc2UgZWxlbWVudGFyeV9jb2RlZ2VuIGRlZmluZWQgaW4gY29uZmlndXJlCi0KLSogdXNpbmcgYmluYXJpZXMgZnJvbSB0b3BfYnVpbGRpciBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcgZWxlbWVudGFyeQotICB3aGVyZSB3ZSBuZWVkIHRvIHBhc3MgbmF0aXZlIGJpbmFyaWVzIGluIGNvbmZpZ3VyZSBwYXJhbXMKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtCi1pbmRleCBmYzM1Yzc1Li4xZTEwYjBiIDEwMDY0NAotLS0tIGEvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIExEQUREID0gXAotIEBFTEVNRU5UQVJZX1hfTElCU0AgXAotICQodG9wX2J1aWxkZGlyKS9zcmMvbGliL2xpYmVsZW1lbnRhcnkubGEKLSAKLS1FTEVNRU5UQVJZX0NPREVHRU4gPSAkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9ARUxFTUVOVEFSWV9DT0RFR0VOX1BSR0AKLStFTEVNRU5UQVJZX0NPREVHRU4gPSBAZWxlbWVudGFyeV9jb2RlZ2VuQAotIEVMRU1FTlRBUllfQ09ERUdFTl9GTEFHUyA9IC0tcHJlZml4PWNvZGVnZW5fZXhhbXBsZQotIAotIFNSQ1MgPSBcCi0tLSAKLTEuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnlfMS4xNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeV8xLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZGQ4YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeV8xLjE1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9saWJzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLQotIyBvbmx5IGZvciB0YXJnZXQsIGJlY2F1c2UgY29uZmlndXJlIGRvZXNuJ3QgZGVmYXVsdCB0byBzYW5lIGRlZmF1bHQgd2hlbgotIyB0aGVzZSBwYXRocyBhcmVuJ3QgcGFzc2VkIGluIC1uYXRpdmUgYnVpbGQKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtTWFrZWZpbGUtVXNlLWVsZW1lbnRhcnlfY29kZWdlbi1kZWZpbmVkLWluLWNvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImJkZTRkODVmYTEwZWU4YTdjMGFlYjc0ZTY5ZDdjZDA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlNTU0MGMyMTAzZmNkYzY5ZmQ3NDY5Mjc3Y2UyNWE4YTAwYTBmNzAxZmMyYzIwNzcxZGMwMTA4NDAxZTUzYTAiCi0KLSMgYXV0b3Rvb2xzLWJyb2tlbnNlcCAtIGNvbmZpZ3VyZSB1cGRhdGVzIEVsZW1lbnRhcnkuaCBjb3JyZWN0bHkgaW4gJHtCfSwgYnV0IHRoZW4gYnVpbGQgaXMgdXNpbmcgRWxlbWVudGFyeS5oIGZyb20gJHtTfQotIyB3aGljaCBpbmNsdWRlcyAjZGVmaW5lIEVMTV9FTUFQIChpbnN0ZWFkIG9mICN1bmRlZiBFTE1fRU1BUCkgYW5kIGJ1aWxkaW5nIGZhaWxzCi1CID0gIiR7U30iCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnldID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTg0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFiODlhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbW90aW9uLWdlbmVyaWMtcGxheWVycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbW90aW9uIGdlbmVyaWMgcGxheWVycyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMGYxMWVlZGY4NzA2YmY2ZDRkNjYzOWZiNjdlYjhhZSIKLQotREVQRU5EUyA9ICJlbW90aW9uIgotCi1pbmhlcml0IGVmbAotCi1TUkNOQU1FID0gImVtb3Rpb25fZ2VuZXJpY19wbGF5ZXJzIgotCi0jIGNyZWF0ZXMgZW1wdHkgcGFja2FnZXMgdW50aWwgeW91IGdldCB2bGMtMiBhbmQgZW5hYmxlIGl0IGhlcmUKLVBBQ0tBR0VDT05GSUcgPz0gIiIKLSMgbmVlZHMgZWluYSBhbmQgZWNvcmUgZnJvbSBlZmwgYW5kIHZsYy0yIChjdXJyZW50bHkgd2UgaGF2ZSAxLjExKQotUEFDS0FHRUNPTkZJR1t2bGNdID0gIi0td2l0aC12bGMsLS13aXRob3V0LXZsYyx2bGMgZWZsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW1vdGlvbi1nZW5lcmljLXBsYXllcnNfMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW1vdGlvbi1nZW5lcmljLXBsYXllcnNfMS4xNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmRkMjY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzXzEuMTUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg2MjdjMWFhYmY1YjdmZTA4NDI5OWFkY2MwYjczYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBiYWQ2MzM0ODBhNjkxNTg1YjBiYTQ3MGM1NzNiMTRkYTBhMDEwMDA4ZDlkNTlkMDc5MmNlYThjNjIxZDQyMyIKLQotUE5CTEFDS0xJU1RbZW1vdGlvbi1nZW5lcmljLXBsYXllcnNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVtb3Rpb24gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlbW90aW9uLWdlbmVyaWMtcGxheWVyc10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbW90aW9uLWdlbmVyaWMtcGxheWVycy1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbmdyYXZlX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VuZ3JhdmVfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTUwOTM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VuZ3JhdmVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmdyYXZlIGlzIGFuIEVkamUgRWRpdGluZyBMaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZGYyZDk2OGI5ZWIwMjZiZmE4MmNjY2JkMGU2ZjlmNSIKLSMgYWxzbyByZXF1aXJlcyB5YWNjIGFuZCBsZXggb24gaG9zdAotREVQRU5EUyA9ICJldmFzIGVjb3JlIGZsZXgiCi1QViA9ICIwLjAuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlZmwgYXV0b3Rvb2xzLWJyb2tlbnNlcAotU1JDX1VSSSA9ICIke0VfU1ZOfS9PTEQ7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotIyBlbmdyYXZlLmw6NTozNTogZmF0YWwgZXJyb3I6IGxpYmVuZ3JhdmVfbGEtZW5ncmF2ZS5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy81NjU5Ny8KLVBOQkxBQ0tMSVNUW2VuZ3JhdmVdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggbGF0ZXN0IG9lLWNvcmUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZS8wMDAxLXBhbS11c2UtY29tbW9uLWF1dGgtaW5zdGVhZC1vZi1zeXN0ZW0tYXV0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODJkMWVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSAxNDM5NmM1MmEyNTU2YjFhYjc3OGEzMTBhMzE4ZWMxOWMyODI5NzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVGh1LCAyNCBOb3YgMjAxMSAxMzoyNTozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBwYW06IHVzZSBjb21tb24tYXV0aCBpbnN0ZWFkIG9mIHN5c3RlbS1hdXRoCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFBST1RPL2VudHJhbmNlL2RhdGEvZW50cmFuY2UgfCAgICA4ICsrKystLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kYXRhL2VudHJhbmNlIGIvZGF0YS9lbnRyYW5jZQotaW5kZXggODcyYzgzZC4uMmI5OGMzYSAxMDA2NDQKLS0tLSBhL2RhdGEvZW50cmFuY2UKLSsrKyBiL2RhdGEvZW50cmFuY2UKLUBAIC0xLDQgKzEsNCBAQAotLWF1dGgJaW5jbHVkZQkJc3lzdGVtLWF1dGgKLS1hY2NvdW50CWluY2x1ZGUJCXN5c3RlbS1hdXRoCi0tcGFzc3dvcmQJaW5jbHVkZQkJc3lzdGVtLWF1dGgKLS1zZXNzaW9uCWluY2x1ZGUJCXN5c3RlbS1hdXRoCi0rYXV0aAlpbmNsdWRlCQljb21tb24tYXV0aAotK2FjY291bnQJaW5jbHVkZQkJY29tbW9uLWFjY291bnQKLStwYXNzd29yZAlpbmNsdWRlCQljb21tb24tcGFzc3dvcmQKLStzZXNzaW9uCWluY2x1ZGUJCWNvbW1vbi1zZXNzaW9uCi0tLSAKLTEuNy44LjYKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2UvZW50cmFuY2Uuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlL2VudHJhbmNlLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Mjg2ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2UvZW50cmFuY2Uuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Mb2dpbiBtYW5hZ2VyIGZvciBFbmxpZ2h0ZW5tZW50Ci0KLVtTZXJ2aWNlXQotRXhlY1N0YXJ0PS91c3Ivc2Jpbi9lbnRyYW5jZQotCi1bSW5zdGFsbF0KLUFsaWFzPWRpc3BsYXktbWFuYWdlci5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZTU4MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2Vfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJMb2dpbiBtYW5hZ2VyIGZvciBFbmxpZ2h0ZW5tZW50IgotREVQRU5EUyA9ICJlZnJlZXQgZWluYSBlZXQgZWNvcmUgZWxlbWVudGFyeSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImUvYXBwcyIKLQotaW5oZXJpdCBlIGdldHRleHQgc3lzdGVtZAotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9QUk9UTzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCBcCi0gICAgZmlsZTovLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoIFwKLSAgICBmaWxlOi8vZW50cmFuY2Uuc2VydmljZSBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbZW50cmFuY2VdID89ICJicm9rZW46IHN3aXRjaCB0byBodHRwczovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9taXNjL2VudHJhbmNlLmdpdCBhbmQgZml4IDAuMC40K3N2bnI4MjA3MC1yNy9lbnRyYW5jZS9kYXRhL3RoZW1lcy9vbGQvZGVmYXVsdC5lZGM6Njc4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdkZWZhYXVsdCcuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0tZW5hYmxlLWNvbnNvbGVraXQsLS1kaXNhYmxlLWNvbnNvbGVraXQsY29uc29sZWtpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1lZGplLWNjPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGFtJywgZCl9IgotCi1QUiA9ICJyNyIKLVBWID0gIjAuMC40K3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tdGhlbWVzIHNlc3NyZWcgeGF1dGgiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vZW50cmFuY2UuY29uZiIKLQotUkNPTkZMSUNUU18ke1BOfSArPSAieHNlcnZlci1ub2RtLWluaXQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gInhzZXJ2ZXItbm9kbS1pbml0IgotCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJ4c2VydmVyLW5vZG0taW5pdC1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICJ4c2VydmVyLW5vZG0taW5pdC1zeXN0ZW1kIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZW50cmFuY2Uuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2VudHJhbmNlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VwZGYvMDAwMS1yZW1vdmUtYW50aWFsaWFzLWZ1bmN0aW9ucy1wb3BwbGVyLWhhcy1kcm9wcGVkLXRoZW0tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAxLXJlbW92ZS1hbnRpYWxpYXMtZnVuY3Rpb25zLXBvcHBsZXItaGFzLWRyb3BwZWQtdGhlbS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOGZmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAxLXJlbW92ZS1hbnRpYWxpYXMtZnVuY3Rpb25zLXBvcHBsZXItaGFzLWRyb3BwZWQtdGhlbS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotRnJvbSA2NjkxYWM1ZmNiYWMwZTc2NmQ0NDEwYWU2NDlhMTM5NTdhZTg1Mjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAyMiBPY3QgMjAxNSAxNjoyNzo1MiArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gcmVtb3ZlIGFudGlhbGlhcyBmdW5jdGlvbnMgLSBwb3BwbGVyIGhhcyBkcm9wcGVkIHRoZW0gaW4KLSB0aGUgQVBJCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBmdW5jdGlvbnMgcmVtb3ZlZCB3ZXJlIG5vdCB1c2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL2xpYi9lcGRmX21haW4uaCAgICAgICAgICAgICAgICAgICB8IDQ1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYyAgICAgICB8IDE4IC0tLS0tLS0tLS0tLS0tCi0gc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9tYWluLmNwcCB8IDIxIC0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDg0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9lcGRmX21haW4uaCBiL3NyYy9saWIvZXBkZl9tYWluLmgKLWluZGV4IDU0YTU3Y2EuLjBhNzliYWQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2VwZGZfbWFpbi5oCi0rKysgYi9zcmMvbGliL2VwZGZfbWFpbi5oCi1AQCAtMjksNDkgKzI5LDQgQEAgRUFQSSBpbnQgZXBkZl9zaHV0ZG93bigpOwotICAqLwotIEVBUEkgY29uc3QgY2hhciAqZXBkZl9iYWNrZW5kX3ZlcnNpb25fZ2V0ICh2b2lkKTsKLSAKLS0vKioKLS0gKiBAYnJpZWYgUmV0dXJuIHRoZSBzdGF0ZSBvZiBmb250cyBhbnRpYWxpYXNpbmcgaW4gUG9wcGxlcgotLSAqCi0tICogQHJldHVybiBFSU5BX1RSVUUgaWYgZm9udHMgYW50aWFsaWFzaW5nIGVuYWJsZWQsIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotLSAqCi0tICogUmV0dXJuIEVJTkFfVFJVRSBpZiB0aGUgc3RhdGUgb2YgZm9udHMgYW50aWFsaWFzaW5nIGlzIGVuYWJsZWQgaW4KLS0gKiBQb3BwbGVyLCBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLS0gKgotLSAqIEBpbmdyb3VwIEVwZGZfTWFpbgotLSAqLwotLUVBUEkgRWluYV9Cb29sIGVwZGZfZm9udHNfYW50aWFsaWFzX2dldCAodm9pZCk7Ci0tCi0tLyoqCi0tICogQGJyaWVmIFNldHMgZm9udHMgYW50aWFsaWFzaW5nIG1vZGUgaW4gUG9wcGxlcgotLSAqCi0tICogQHBhcmFtIG9uIEVJTkFfVFJVRSB0byBlbmFibGUgZm9udHMgYW50aWFsaWFzaW5nLCBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLS0gKgotLSAqIFNldCBAcCBvbiB0byBFSU5BX1RSVUUgdG8gZW5hYmxlIGZvbnRzIGFudGlhbGlhc2luZyBpbiBQb3BwbGVyLAotLSAqIEVJTkFfRkFMU0UgdG8gZGlzYWJsZSBpdC4KLS0gKi8KLS1FQVBJIHZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0IChFaW5hX0Jvb2wgb24pOwotLQotLS8qKgotLSAqIEBicmllZiBSZXR1cm4gdGhlIHN0YXRlIG9mIGxpbmVzIGFudGlhbGlhc2luZyBpbiBQb3BwbGVyCi0tICoKLS0gKiBAcmV0dXJuIEVJTkFfVFJVRSBpZiBsaW5lcyBhbnRpYWxpYXNpbmcgZW5hYmxlZCwgRUlOQV9GQUxTRSBvdGhlcndpc2UuCi0tICoKLS0gKiBSZXR1cm4gRUlOQV9UUlVFIGlmIHRoZSBzdGF0ZSBvZiBsaW5lcyBhbnRpYWxpYXNpbmcgaXMgZW5hYmxlZCBpbgotLSAqIFBvcHBsZXIsIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotLSAqCi0tICogQGluZ3JvdXAgRXBkZl9NYWluCi0tICovCi0tRUFQSSBFaW5hX0Jvb2wgZXBkZl9saW5lc19hbnRpYWxpYXNfZ2V0ICh2b2lkKTsKLS0KLS0vKioKLS0gKiBAYnJpZWYgU2V0cyBsaW5lcyBhbnRpYWxpYXNpbmcgbW9kZSBpbiBQb3BwbGVyCi0tICoKLS0gKiBAcGFyYW0gb24gRUlOQV9UUlVFIHRvIGVuYWJsZSBsaW5lcyBhbnRpYWxpYXNpbmcsIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotLSAqCi0tICogU2V0IEBwIG9uIHRvIEVJTkFfVFJVRSB0byBlbmFibGUgbGluZXMgYW50aWFsaWFzaW5nIGluIFBvcHBsZXIsCi0tICogRUlOQV9GQUxTRSB0byBkaXNhYmxlIGl0LgotLSAqLwotLUVBUEkgdm9pZCBlcGRmX2xpbmVzX2FudGlhbGlhc19zZXQgKEVpbmFfQm9vbCBvbik7Ci0tCi0tCi0gI2VuZGlmIC8qIF9fRVBERl9NQUlOX0hfXyAqLwotZGlmZiAtLWdpdCBhL3NyYy9saWIvbXVwZGYvZXBkZl9tdXBkZl9tYWluLmMgYi9zcmMvbGliL211cGRmL2VwZGZfbXVwZGZfbWFpbi5jCi1pbmRleCAxN2JiODMwLi4yN2M2ZGUyIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYwotKysrIGIvc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYwotQEAgLTM3LDIxICszNywzIEBAIGVwZGZfYmFja2VuZF92ZXJzaW9uX2dldCAodm9pZCkKLSB7Ci0gICAgcmV0dXJuICIwLjUiOwotIH0KLS0KLS1FaW5hX0Jvb2wgZXBkZl9mb250c19hbnRpYWxpYXNfZ2V0KHZvaWQpCi0tewotLSAgIHJldHVybiBFSU5BX1RSVUU7Ci0tfQotLQotLXZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0KEVpbmFfQm9vbCBvbikKLS17Ci0tfQotLQotLUVpbmFfQm9vbCBlcGRmX2xpbmVzX2FudGlhbGlhc19nZXQodm9pZCkKLS17Ci0tICAgcmV0dXJuIEVJTkFfVFJVRTsKLS19Ci0tCi0tdm9pZCBlcGRmX2xpbmVzX2FudGlhbGlhc19zZXQoRWluYV9Cb29sIG9uKQotLXsKLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9tYWluLmNwcCBiL3NyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfbWFpbi5jcHAKLWluZGV4IDk4NDE5ODcuLjllZmRiZTggMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX21haW4uY3BwCi0rKysgYi9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX21haW4uY3BwCi1AQCAtNDYsMjQgKzQ2LDMgQEAgZXBkZl9iYWNrZW5kX3ZlcnNpb25fZ2V0ICh2b2lkKQotIHsKLSAgIHJldHVybiBQT1BQTEVSX1ZFUlNJT047Ci0gfQotLQotLUVpbmFfQm9vbCBlcGRmX2ZvbnRzX2FudGlhbGlhc19nZXQgKHZvaWQpCi0tewotLSAgcmV0dXJuIGdsb2JhbFBhcmFtcy0+Z2V0QW50aWFsaWFzKCk7Ci0tfQotLQotLXZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0IChFaW5hX0Jvb2wgb24pCi0tewotLSAgLyogTmljZSBBUEkgKi8KLS0gIGdsb2JhbFBhcmFtcy0+c2V0QW50aWFsaWFzKChjaGFyKikob24gPyAieWVzIiA6ICJubyIpKTsKLS19Ci0tCi0tRWluYV9Cb29sIGVwZGZfbGluZXNfYW50aWFsaWFzX2dldCAodm9pZCkKLS17Ci0tICAgIHJldHVybiBnbG9iYWxQYXJhbXMtPmdldFZlY3RvckFudGlhbGlhcygpOwotLX0KLS0KLS12b2lkIGVwZGZfbGluZXNfYW50aWFsaWFzX3NldCAoRWluYV9Cb29sIG9uKQotLXsKLS0gICAgZ2xvYmFsUGFyYW1zLT5zZXRWZWN0b3JBbnRpYWxpYXMoKGNoYXIqKShvbiA/ICJ5ZXMiIDogIm5vIikpOwotLX0KLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAyLWVwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcC1maXgtYnVpbGQtZm9yLXBvcHBsZXItQVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhZGFhNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gYTg0YzE2ZmRjNjA2ZjIyYjk5M2Y4NzBiMWNlYTU2ZGQwNjBhMzVlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMjIgT2N0IDIwMTUgMTY6NTU6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGVwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcDogZml4IGJ1aWxkIGZvciBwb3BwbGVyIEFQSQotIGNoYW5nZQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qb3BwbGVyIEFQSSB3YXMgY2hhbmdlZCBpbiBbMV0uIFRoZSBwYXRjaCBub3Qgb25seSBzaG93cyB0aGUgY2hhbmdlIGJ1dCBhbHNvCi1pbnNwaXJlcyBob3cgdG8gZml4LgotCi1bMV0gaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3BvcHBsZXIvcG9wcGxlci9jb21taXQvP2lkPTljYWY3NTI1NDA5ZDY5OWMxNjg5NjY1MzUyODQ4NjQ1MTEyM2I0ODUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHNyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfcG9zdHNjcmlwdC5jcHAgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcCBiL3NyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfcG9zdHNjcmlwdC5jcHAKLWluZGV4IDBjMjgzNmIuLjY1NjE5M2IgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwCi0rKysgYi9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwCi1AQCAtODIsMTEgKzgyLDE0IEBAIGVwZGZfcG9zdHNjcmlwdF9wcmludCAoY29uc3QgRXBkZl9Qb3N0c2NyaXB0ICpwb3N0c2NyaXB0KQotIAotICAgLy8gRklYTUU6IGZpeCBwb3N0c2NyaXB0IHRpdGxlCi0gI2lmZGVmIEhBVkVfUE9QUExFUl8wXzIwCi0rICBzdGQ6OnZlY3RvcjxpbnQ+IHBhZ2VzOwotKyAgZm9yIChpbnQgaSA9IHBvc3RzY3JpcHQtPmZpcnN0X3BhZ2U7IGkgPD0gcG9zdHNjcmlwdC0+bGFzdF9wYWdlOyArK2kpIHsKLSsgICAgcGFnZXMucHVzaF9iYWNrKGkpOwotKyAgfQotICAgUFNPdXRwdXREZXYgcHNfZGV2KHBvc3RzY3JpcHQtPmZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHBvc3RzY3JpcHQtPnBkZmRvYywKLSAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSJQUyB0aXRsZSIsCi0tICAgICAgICAgICAgICAgICAgICAgcG9zdHNjcmlwdC0+Zmlyc3RfcGFnZSwKLS0gICAgICAgICAgICAgICAgICAgICBwb3N0c2NyaXB0LT5sYXN0X3BhZ2UsCi0rICAgICAgICAgICAgICAgICAgICAgcGFnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgcHNNb2RlUFMsCi0gICAgICAgICAgICAgICAgICAgICAgKGludClwb3N0c2NyaXB0LT53aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAoaW50KXBvc3RzY3JpcHQtPmhlaWdodCwKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2NGJhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRXBkZiBpcyB0aGUgZ2x1ZSBiZXR3ZWVuIEVGTCBhbmQgbGlicG9wcGxlciIKLQotREVQRU5EUyA9ICJwb3BwbGVyIGV2YXMgZWNvcmUiCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlZmwKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAke0VfU1ZOfS90cnVuay9QUk9UTzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLWFudGlhbGlhcy1mdW5jdGlvbnMtcG9wcGxlci1oYXMtZHJvcHBlZC10aGVtLS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1wb3BwbGVyIFwKLSAgICAtLWRpc2FibGUtbXVwZGYgXAotIgotCi0jIFNvbWUgdXBncmFkZSBwYXRoIHR3ZWFraW5nLCBhcyBpbiBldmFzCi1BVVRPX0xJQk5BTUVfUEtHUyA9ICIiCi0KLVBOQkxBQ0tMSVNUW2VwZGZdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVjb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVwZGYtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVwZGYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNzdjMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXZhcy1nZW5lcmljLWxvYWRlcnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRXZhcyBnZW5lcmljIGxvYWRlcnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTg3NTYzZWQzMGFkZDJiMGUzNDYwMjcyZDMxMzhhMDAiCi1ERVBFTkRTID0gImVpbmEgbGlicnN2ZyBjYWlybyIKLQotaW5oZXJpdCBlZmwKLQotU1JDTkFNRSA9ICJldmFzX2dlbmVyaWNfbG9hZGVycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc3ZnIFwKLSAgICAtLWRpc2FibGUtZ3N0cmVhbWVyIFwKLSAgICAtLWRpc2FibGUtbGlicmF3IFwKLSAgICAtLWRpc2FibGUtc3BlY3RyZSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3BvcHBsZXJdID0gIi0tZW5hYmxlLXBvcHBsZXIsLS1kaXNhYmxlLXBvcHBsZXIscG9wcGxlciIKLQotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9ldmFzX2xvYWRlcl9wYWNrYWdlcyAiCi0KLXB5dGhvbiBzcGxpdF9ldmFzX2xvYWRlcl9wYWNrYWdlcyAoKSB7Ci0gICAgYmIubm90ZSggInNwbGl0dGluZyBwYWNrYWdlcyBmb3IgZXZhcyBnZW5lcmljIGxvYWRlcnMiICkKLSAgICBiYXNlZGlyID0gZC5leHBhbmQoICcke2xpYmRpcn0vZXZhcy91dGlscycpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYXNlZGlyLCAnZXZhc19pbWFnZV9sb2FkZXJcLiguKikkJywKLSAgICBvdXRwdXRfcGF0dGVybiA9ICJldmFzLWdlbmVyaWMtbG9hZGVyLSVzIiwKLSAgICBkZXNjcmlwdGlvbiA9ICdFdmFzIGdlbmVyaWMgbG9hZGVycyAtIG1vZHVsZSAlcycsCi0gICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFzZWRpciwgJ2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyXC4oLiopJCcsCi0gICAgb3V0cHV0X3BhdHRlcm4gPSAiZXZhcy1nZW5lcmljLXBkZi1sb2FkZXItJXMiLAotICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgZ2VuZXJpYyBwZGYgbG9hZGVycyAtIG1vZHVsZSAlcycsCi0gICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotfQotCi0jIGFkZCBzeW1saW5rcyBmb3IgZGlmZmVyZW50IGZvcm1hdCAoaXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gcGFja2FnZSB0aGVtIGluIHNlcGFyYXRlIHBhY2thZ2VzKQotRklMRVNfZXZhcy1nZW5lcmljLWxvYWRlci14Y2YgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIueGNmLmd6IFwKLSIKLUZJTEVTX2V2YXMtZ2VuZXJpYy1sb2FkZXItc3ZnICs9ICIgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnN2Zy5neiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIuc3ZneiBcCi0iCi1GSUxFU19ldmFzLWdlbmVyaWMtbG9hZGVyLXBkZiArPSAiIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci5kb2MgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLmRvY3ggXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLm9kcCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIub2RzIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci5vZHQgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnBwdCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIucHB0eCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIucnRmIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci54bHMgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnhsc3ggXAotIgotRklMRVNfZXZhcy1nZW5lcmljLXBkZi1sb2FkZXItbGlicmVvZmZpY2UgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIuZG9jIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5kb2N4IFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5vZHAgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLm9kcyBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIub2R0IFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5wcHQgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLnBwdHggXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLnJ0ZiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIueGxzIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci54bHN4IFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZXZhcy91dGlscy8uZGVidWciCi0KLVBBQ0tBR0VTICs9ICJldmFzLWdlbmVyaWMtbG9hZGVyLXN2ZyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ldmFzLWdlbmVyaWMtbG9hZGVyLS4qIF5ldmFzLWdlbmVyaWMtcGRmLWxvYWRlci0uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V2YXMtZ2VuZXJpYy1sb2FkZXJzXzEuMTUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V2YXMtZ2VuZXJpYy1sb2FkZXJzXzEuMTUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNkYmNlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVyc18xLjE1LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9saWJzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjYTg0NDNiOGNiZjE3Nzg0NTU5NWM1ZTAyZmJjNDljIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYTIyYzliYTFhZTk2MjljMTZhM2ZlODA5ZWE5MjdmNjBiOGYwZDgwY2RiN2YxNDUxNTliOTk3YjlhZTJiY2QiCi0KLVBOQkxBQ0tMSVNUW2V2YXMtZ2VuZXJpYy1sb2FkZXJzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlaW5hIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtldmFzLWdlbmVyaWMtbG9hZGVyc10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWdlbmVyaWMtbG9hZGVycyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXZhcy1nZW5lcmljLWxvYWRlcnNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1nZW5lcmljLWxvYWRlcnMtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGU4NTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V4cGVkaXRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkV4cGVkaXRlIGlzIGEgY29tcHJlaGVuc2l2ZSBiZW5jaG1hcmtpbmcgc3VpdGUgZm9yIEV2YXMiCi1ERVBFTkRTID0gImVldCBldmFzIGxpYnNkbCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDcwYmM2NWQ0NjIzN2U0ZWYzODZiZWViZTdkMGZlNWIiCi0KLUlOQ19QUiA9ICJyMCIKLQotaW5oZXJpdCBlCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9L1gxMSBcCi0gICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgLS1lbmFibGUtc2ltcGxlLXgxMSBcCi1cCi0gICAgLS1lbmFibGUtc29mdHdhcmUteDExIFwKLSAgICAtLWVuYWJsZS14cmVuZGVyLXgxMSBcCi0gICAgLS1lbmFibGUtc29mdHdhcmUtMTYteDExIFwKLSAgICAtLWVuYWJsZS1vcGVuZ2wteDExIFwKLSAgICAtLWVuYWJsZS1mYiBcCi0gICAgLS1kaXNhYmxlLXNvZnR3YXJlLWRkcmF3IFwKLSAgICAtLWRpc2FibGUtZGlyZWN0M2QgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKLVJERVBFTkRTXyR7UE59ID0gImV4cGVkaXRlLXRoZW1lcyBldmFzLWVuZ2luZS1mYiBldmFzLWVuZ2luZS1zb2Z0d2FyZS1nZW5lcmljIGV2YXMtZW5naW5lLXNvZnR3YXJlLXgxMSBldmFzLWVuZ2luZS1nbC14MTEgZXZhcy1sb2FkZXItcG5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGVfMS43LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV8xLjcuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMyY2QwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV8xLjcuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfTUlSUk9SfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTU0ZmU4ZTQwZmVjNmE1NjExOTBmZjBmYjc1YjZiZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA1YmUwOTZjOTExZTBkNjZkNGJkYzQ5N2ViYjkzNWEwNGFkMjM2OTZkZTkwODRhZWQ5OTU5YjUxNzJhNTkzZSIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtbG9hZGVyLXBuZyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV4cGVkaXRlLXRoZW1lcyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1lbmdpbmUtZ2wteDExIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWVuZ2luZS1zb2Z0d2FyZS1nZW5lcmljIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHBlZGl0ZS1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLXNvZnR3YXJlLXgxMSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1lbmdpbmUtZmIgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YzJkNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGVfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ1JFViA9ICJhNWU2YWY5MTdhZjUyODc3YjM3ODA5MDgxMWNmODM2YzE2ZDBiZmJiIgotUFYgPSAiMS43Ljk5K2dpdHIke1NSQ1BWfSIKLQotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvdG9vbHMvJHtCUE59LmdpdCBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtbG9hZGVyLXBuZyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLXNvZnR3YXJlLWdlbmVyaWMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLWZiIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWVuZ2luZS1zb2Z0d2FyZS14MTEgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLWdsLXgxMSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHBlZGl0ZS10aGVtZXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9pbWxpYjJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvaW1saWIyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1YjMzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9pbWxpYjJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGdyYXBoaWMgbGlicmFyeSBmb3IgZmlsZSBsb2FkaW5nLCBzYXZpbmcsIHJlbmRlcmluZywgYW5kIG1hbmlwdWxhdGlvbiIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi0KLURFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgdmlydHVhbC9saWJ4MTEgbGlieGV4dCIKLVBST1ZJREVTID0gInZpcnR1YWwvaW1saWIyIgotUFYgPSAiMS40LjYrZ2l0ciR7U1JDUFZ9IgotU1JDUkVWID0gIjU2MGE1OGU2MTc3OGQ4NDk1Mzk0NGY3NDRhMDI1YWY2Y2U5ODYzMzQiCi0KLWluaGVyaXQgZWZsIGJpbmNvbmZpZwotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvbGVnYWN5LyR7QlBOfS5naXQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIGF1dG90b29scy1icm9rZW5zZXAKLUIgPSAiJHtTfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLXdpdGgtZ2lmLC0td2l0aG91dC1naWYsZ2lmbGliIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtdGlmZiwtLXdpdGhvdXQtdGlmZix0aWZmIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbaWQzXSA9ICItLXdpdGgtaWQzLC0td2l0aG91dC1pZDMsbGliaWQzdGFnIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXggXAotICAgICAgICAgICAgICAgIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSAiCi0KLSMgVE9ETzogVXNlIG1vcmUgZmluZSBncmFudWxhciB2ZXJzaW9uCi0jT0VfTFRfUlBBVEhfQUxMT1c9Ijoke2xpYmRpcn0vaW1saWIyL2xvYWRlcnM6JHtsaWJkaXJ9L2ltbGliMi9maWx0ZXJzOiIKLU9FX0xUX1JQQVRIX0FMTE9XID0gImFueSIKLU9FX0xUX1JQQVRIX0FMTE9XW2V4cG9ydF09IjEiCi0KLVBBQ0tBR0VTID0rICJpbWxpYjItbG9hZGVycy1kYmcgaW1saWIyLWZpbHRlcnMtZGJnIGltbGliMi1sb2FkZXJzIGltbGliMi1maWx0ZXJzIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiAke2xpYmRpcn0vaW1saWIyLyovKi5zbyIKLUZJTEVTXyR7UE59LWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnLyAke2JpbmRpcn0vLmRlYnVnLyAke3ByZWZpeH0vc3JjL2RlYnVnLyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2ltbGliMi1jb25maWcgJHtsaWJkaXJ9Lyouc28gJHtpbmNsdWRlZGlyfSIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU19pbWxpYjItbG9hZGVycyA9ICIke2xpYmRpcn0vaW1saWIyL2xvYWRlcnMvKi5zbyIKLUZJTEVTX2ltbGliMi1maWx0ZXJzID0gIiR7bGliZGlyfS9pbWxpYjIvZmlsdGVycy8qLnNvIgotRklMRVNfaW1saWIyLWxvYWRlcnMtZGJnICs9ICIke2xpYmRpcn0vaW1saWIyL2xvYWRlcnMvLmRlYnVnIgotRklMRVNfaW1saWIyLWZpbHRlcnMtZGJnICs9ICIke2xpYmRpcn0vaW1saWIyL2ZpbHRlcnMvLmRlYnVnIgotCi0jIHBuZy5zbyBqcGVnLnNvIGlkMy5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBsaWdodG1lZGlhc2Nhbm5lcgotUFJJVkFURV9MSUJTX2ltbGliMi1sb2FkZXJzID0gInBubS5zbyBsYm0uc28gYXJnYi5zbyB0aWZmLnNvIHpsaWIuc28gYm1wLnNvIHRnYS5zbyBnaWYuc28geHBtLnNvIGJ6Mi5zbyIKLQotUFJJVkFURV9MSUJTX2ltbGliMi1maWx0ZXJzID0gImJ1bXBtYXAuc28gY29sb3Jtb2Quc28gdGVzdGZpbHRlci5zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2xpYmVmbHZhbGEvZGlzYWJsZS5laW5hLnRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhL2Rpc2FibGUuZWluYS50ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGJlMTMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2xpYmVmbHZhbGEvZGlzYWJsZS5laW5hLnRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1JdCBjYXVzZXMgdGVzdGVpbmEuYyBidWlsZCB0byBmYWlsIGxpbmtpbmcgdG8gaW50ZXJuYWwgZWluYV8uKl97aW5pdCxzaHV0ZG93bn0gc3ltYm9scwotYXMgcmVwb3J0ZWQgaW46Ci1odHRwOi8vbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmcvcGlwZXJtYWlsL3BrZy1mc28tbWFpbnQvMjAxMC1NYXkvMDAzMDU2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLQotZGlmZiAtdU5yIHZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYSAuLi8uLi8uLi9hcm05MjB0dC1vZS1saW51eC1nbnVlYWJpL2xpYmVmbHZhbGEvMV8yMDExLjAxLjEzLjErc3ZucjgyMDcwLXIyL3ZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYQotLS0tIHZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYQkyMDE0LTAxLTEzIDE2OjE2OjUzLjk4NDk5OTAzNSArMDEwMAotKysrIC4uLy4uLy4uL2FybTkyMHR0LW9lLWxpbnV4LWdudWVhYmkvbGliZWZsdmFsYS8xXzIwMTEuMDEuMTMuMStzdm5yODIwNzAtcjIvdmFsYS90ZXN0cy90ZXN0ZWluYS52YWxhCTIwMTAtMDItMjYgMDk6MDI6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTUzLDIyICsxNTMsMjIgQEAKLSAKLSB2b2lkIHRlc3RfZWluYV9iZW5jaG1hcmsoKQotIHsKLS0gICAgYXNzZXJ0KCBFaW5hLk1vZHVsZS5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLkxpc3QuaW5pdCgpICk7Ci0tICAgIGFzc2VydCggRWluYS5BcnJheS5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLkJlbmNobWFyay5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLk1lbXBvb2wuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5Nb2R1bGUuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5MaXN0LmluaXQoKSApOwotKy8vICBhc3NlcnQoIEVpbmEuQXJyYXkuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5CZW5jaG1hcmsuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5NZW1wb29sLmluaXQoKSApOwotICAgICB2YXIgYiA9IG5ldyBFaW5hLkJlbmNobWFyayggInRlc3QiLCAidGVzdCIpOwotICAgICBhc3NlcnQoIGIucmVnaXN0ZXIoICJib2d1cyIsIHNwZWNfb25lLCAwLCAxMDAsIDUgKSApOwotICAgICB1bm93bmVkIEVpbmEuQXJyYXk8c3RyaW5nPiByZXN1bHQgPSBiLnJ1bigpOwotICAgICBhc3NlcnQoIHJlc3VsdC5jb3VudF9nZXQoKSA9PSAyICk7Ci0gICAgIHJlc3VsdCA9IG51bGw7Ci0gICAgIGIgPSBudWxsOwotLSAgICBhc3NlcnQoIEVpbmEuTWVtcG9vbC5zaHV0ZG93bigpICk7Ci0tICAgIGFzc2VydCggRWluYS5CZW5jaG1hcmsuc2h1dGRvd24oKSApOwotLSAgICBhc3NlcnQoIEVpbmEuQXJyYXkuc2h1dGRvd24oKSApOwotLSAgICBhc3NlcnQoIEVpbmEuTGlzdC5zaHV0ZG93bigpICk7Ci0tICAgIGFzc2VydCggRWluYS5Nb2R1bGUuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuTWVtcG9vbC5zaHV0ZG93bigpICk7Ci0rLy8gIGFzc2VydCggRWluYS5CZW5jaG1hcmsuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuQXJyYXkuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuTGlzdC5zaHV0ZG93bigpICk7Ci0rLy8gIGFzc2VydCggRWluYS5Nb2R1bGUuc2h1dGRvd24oKSApOwotIH0KLSAKLSAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvbGliZWZsdmFsYV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFmNDg5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiVmFsYSBtZWV0cyB0aGUgRW5saWdodGVubWVudCBGb3VuZGF0aW9uIExpYnJhcmllcyIKLUFVVEhPUiA9ICJNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJ2YWxhLW5hdGl2ZSBnbGliLTIuMCBkYnVzIGRidXMtZ2xpYiBlaW5hIGVldCBldmFzIGVjb3JlIGVkamUgZWxlbWVudGFyeSB0aWZmIgotUFYgPSAiMjAxMS4wMS4xMy4xK3N2bnIke1NSQ1BWfSIKLVBFID0gIjEiCi1QUiA9ICJyMiIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotU1JDTkFNRSA9ICJ2YWxhIgotCi1pbmhlcml0IGUtYmFzZSBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyB2YWxhCi0KLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bmsvQklORElOR1M7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL2Rpc2FibGUuZWluYS50ZXN0LnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9L2xpYmVmbHZhbGEgJHtiaW5kaXJ9LyoiCi0KLVBOQkxBQ0tMSVNUW2xpYmVmbHZhbGFdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJld2VhdGhlcl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJld2VhdGhlcl9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOTg4YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvbGliZXdlYXRoZXJfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJFRkwtYmFzZWQgd2VhdGhlciB3aWRnZXQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotREVQRU5EUyA9ICJlY29yZSBlZGplIgotUFYgPSAiMC4wLjArc3ZuciR7U1JDUFZ9IgotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLWluaGVyaXQgZWZsCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1BST1RPO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyIKLQotUlNVR0dFU1RTXyR7UE59ID0gImVsZW1lbnRhcnktdGVzdHMiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZyBcCi0gICAgICAgICAgIC1lIHM6LyR7VEFSR0VUX1NZU306OmcgXAotICAgICAgICAgICAgICBld2VhdGhlci5wYwotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tcGx1Z2lucyIKLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIlwKLSAgICAke2RhdGFkaXJ9IFwKLSIKLQotRklMRVNfJHtQTn0tcGx1Z2lucyA9ICJcCi0gICAgJHtsaWJkaXJ9L2V3ZWF0aGVyL3BsdWdpbnMvKi5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9ld2VhdGhlci9wbHVnaW5zLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7bGliZGlyfS9ld2VhdGhlci9wbHVnaW5zLyouYSBcCi0gICAgJHtsaWJkaXJ9L2V3ZWF0aGVyL3BsdWdpbnMvKi5sYSBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKLSAgICAke1BOfS10aGVtZXMgXAotICAgICR7UE59LXBsdWdpbnMgXAotIgotCi1QTkJMQUNLTElTVFtsaWJld2VhdGhlcl0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDkvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTRlMmM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXNkay5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiRWZsIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVBSID0gInIxIgotCi1yZXF1aXJlIHBhY2thZ2Vncm91cC1lZmwtc2RrLmluYwotCi1QQUNLQUdFUyA9ICIke1BOfSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXNkayBcCi0gICAgJHtTREstRUZMfSBcCi0gICAgJHtTREstRVhUUkFTfSIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLWVmbC1zZGtdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeS1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zZGsuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiMDQ1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zZGsuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU0RLLUVGTCA9ICIgXAotICAgICBlZmwtZGV2IFwKLSAgICAgZWxlbWVudGFyeS1kZXYgXAotICAgICBlZGJ1cy1kZXYgXAotICAgICBsdWFqaXQtZGV2IFwKLSIKLQotU0RLLUVYVFJBUyA/PSAiIgotU0RLLUVYVFJBU19xZW11eDg2ID89ICIgdmFsZ3JpbmQgbHR0bmctdXN0LWRldiIKLVNESy1FWFRSQVNfcWVtdXg4Ni02NCA/PSAiIGx0dG5nLXVzdC1kZXYiCi1TREstRVhUUkFTX3FlbXVwcGMgPz0gIiBsdHRuZy11c3QtZGV2IgotU0RLLUVYVFJBU19xZW11YXJtID89ICIgbHR0bmctdXN0LWRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ5ZGRlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkVmbCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QUiA9ICJyMSIKLQotcmVxdWlyZSBwYWNrYWdlZ3JvdXAtZWZsLXNkay5pbmMKLQotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZGJnIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0IFwKLSAgICAke1NESy1FRkx9IFwKLSAgICAke1NESy1FWFRSQVN9IgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5LWRldiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteDExLWlsbHVtZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteDExLWlsbHVtZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlYmNhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXgxMS1pbGx1bWUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgSWxsdW1lIFdpbmRvd2luZyBFbnZpcm9ubWVudCAtLSBpbnN0YWxsIHRoaXMgdGFzayB0byBnZXQgdGhlIEVubGlnaHRlbm1lbnQgV2luZG93IE1hbmFnZXIgKyB0aGUgSWxsdW1lIGVudmlyb25tZW50LiIKLVNFQ1RJT04gPSAieDExL3dtIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1RPUERJUn0vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotUFYgPSAiMS4wIgotUFIgPSAicjUiCi0KLWluaGVyaXQgcGFja2FnZWdyb3VwIGFsbGFyY2gKLQotIyBEZWZhdWx0IHRoZW1lIGFuZCBjb25maWcKLUVUSEVNRSA/PSAiZS13bS10aGVtZS1kZWZhdWx0IgotRUNPTkZJRyA/PSAiZS13bS1jb25maWctbW9iaWxlIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJcCi0gICAgJHtFVEhFTUV9IFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXgxMS14c2VydmVyIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS14MTEtdXRpbHMgXAotICAgIFwKLSAgICBlLXdtIFwKLSAgICAke0VDT05GSUd9IFwKLSIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLXgxMS1pbGx1bWVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLXgxMS1pbGx1bWVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bS1jb25maWctbW9iaWxlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAteDExLWlsbHVtZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWRlZmF1bHQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDlmMmVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiV2Via2l0IGJyb3dzZXIgZW5naW5lLCBFRkwgZWRpdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCi0gICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKLSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKLSIKLQotIyB5b3UgbmVlZCBoYXJmYnV6eiB3aXRoIGljdSBlbmFibGVkLCB5b3UgY2FuIGFkZCB0aGlzIHRvIHlvdXIgY29uZmlnOgotIyBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1oYXJmYnV6eiA9ICIgaWN1IgotREVQRU5EUyA9ICJpY3UgbGlieHNsdCBzcWxpdGUzIGdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUganBlZyBcCi0gICAgICAgICAgIGxpYnBuZyBsaWJ4dCBmb250Y29uZmlnIGNhaXJvIGZyZWV0eXBlIGdsaWItMi4wIGxpYnNvdXAtMi40IFwKLSAgICAgICAgICAgbGlieG1sMiBwYW5nbyBlaW5hIGVjb3JlIGV2YXMgZWRqZSBlbGRidXMgaGFyZmJ1enogZW5jaGFudCBcCi0gICAgICAgICAgIHJ1YnktbmF0aXZlIGVsZW1lbnRhcnkiCi0KLVBFID0gIjEiCi0KLVNSQ1ZFUiA/PSAiJHtQVn0iCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvd2Via2l0LWVmbC9ld2Via2l0LSR7U1JDVkVSfS50YXIueHogXAotIgotUyA9ICIke1dPUktESVJ9L2V3ZWJraXQiCi0KLWluaGVyaXQgY21ha2UgbGliX3BhY2thZ2UgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgLURQT1JUPUVmbCBcCi0gICAgLURTSEFSRURfQ09SRT1PbiBcCi0gICAgLURFTkFCTEVfRFJBR19TVVBQT1JUPU9uIFwKLSAgICAtREVOQUJMRV9XRUJfQVVESU89T2ZmIFwKLSAgICAtREVOQUJMRV9WSURFTz1PZmYgXAotICAgIC1ERU5BQkxFX1ZJREVPX1RSQUNLPU9mZiBcCi0gICAgLURFTkFCTEVfQUNDRVNTSUJJTElUWT1PZmYgXAotICAgIC1ERU5BQkxFX0JBVFRFUllfU1RBVFVTPU9mZiBcCi0iCi0jIGdlbmVyYXRlZCBBU00gY29kZSBpc24ndCBjb21wYXRpYmxlIHdpdGggYXJtdls0NV0KLSMgaXQgd2FzIHJlbW92ZWQgZnJvbSBtYWNybyBhc3NlbWJsZXIgaW4gdXBzdHJlYW0gY29tbWl0IDEyMTg4NQotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxOTgKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY0ID0gIiAtREVOQUJMRV9MTElOVD1PZmYgLURFTkFCTEVfSklUPU9mZiAtREVOQUJMRV9ERkdfSklUPU9mZiAtREVOQUJMRV9GVExfSklUPU9mZiIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY1ID0gIiAtREVOQUJMRV9MTElOVD1PZmYgLURFTkFCTEVfSklUPU9mZiAtREVOQUJMRV9ERkdfSklUPU9mZiAtREVOQUJMRV9GVExfSklUPU9mZiIKLQotIyBoYWNrIGl0IGluIE9wdGlvbnNFZmwuY21ha2UgYmVjYXVzZSB0aGF0IG92ZXJydWxlcyAtREVOQUJMRV9MTElOVD1PZmYKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2FybXY0KCkgewotICAgIHNlZCAtaSAncy9XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTExJTlQgT04pL1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MTElOVCBPRkYpL2cnICR7U30vU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLX0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2FybXY1KCkgewotICAgIHNlZCAtaSAncy9XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTExJTlQgT04pL1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MTElOVCBPRkYpL2cnICR7U30vU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLX0KLQotIyBhbmQgZGlzYWJsZWQgTExJTlQgY3VycmVudGx5IGlzbid0IHN1cHBvcnRlZCwgc28gcmVzdHJpY3QgdG8gYXJtdjdhIGFuZCB4ODYqCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKC0pIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4NiA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4Ni02NCA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3YSA9ICIoLiopIgotCi1MRUFEX1NPTkFNRSA9ICJsaWJld2Via2l0LnNvIgotUEFDS0FHRVMgPSsgIiR7UE59bGF1bmNoZXItZGJnICR7UE59bGF1bmNoZXIgJHtQTn0taW5zcGVjdG9yIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ld2Via2l0Mi0xL3RoZW1lcy9kZWZhdWx0LmVkaiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotRklMRVNfJHtQTn1sYXVuY2hlciA9ICIke2JpbmRpcn0vRVdlYkxhdW5jaGVyIgotRklMRVNfJHtQTn1sYXVuY2hlci1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9FV2ViTGF1bmNoZXIiCi1GSUxFU18ke1BOfS1pbnNwZWN0b3IgKz0gIiR7ZGF0YWRpcn0vZXdlYmtpdDItMS9pbnNwZWN0b3IiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzQwNjU5LwotUE5CTEFDS0xJU1Rbd2Via2l0LWVmbF0gPz0gIk9sZCBhbmQgdW5tYWludGFuZWQgZm9yayB3aXRoIG1hbnkgc2VjdXJpdHkgaXNzdWVzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDAxLU9wdGlvbnNDb21tb24uY21ha2UtZG9uLXQtbWl4LUNYWF9GTEFHUy1pbnRvLUNfRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDEtT3B0aW9uc0NvbW1vbi5jbWFrZS1kb24tdC1taXgtQ1hYX0ZMQUdTLWludG8tQ19GTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTliN2JiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDEtT3B0aW9uc0NvbW1vbi5jbWFrZS1kb24tdC1taXgtQ1hYX0ZMQUdTLWludG8tQ19GTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTZjYWFmNmU4MGI5YzgwZGMyYjg2MGI0NzFhOGYwNWU4MjVmNmRmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTQgQXVnIDIwMTQgMDE6MDA6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIE9wdGlvbnNDb21tb24uY21ha2U6IGRvbid0IG1peCBDWFhfRkxBR1MgaW50byBDX0ZMQUdTCi0KLSogaXQgd2FzIGFkZGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAyNjEKLSogY2F1c2VzIGJ1aWxkIGZhaWx1cmVzIGluIHVkaXM4NiB3aGljaCBleHBsaWNpdGx5IGFza3MgZm9yIGdjYyBidXQgdGhlbgotICBnZXRzIGcrKyBmbGFncyBmcm9tIENNQUtFX0NYWF9GTEFHUy4KLQotY2MxOiBlcnJvcjogY29tbWFuZCBsaW5lIG9wdGlvbiAnLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuJyBpcyB2YWxpZAotZm9yIEMrKy9PYmpDKysgYnV0IG5vdCBmb3IgQyBbLVdlcnJvcl0KLWNjMTogZXJyb3I6IGNvbW1hbmQgbGluZSBvcHRpb24gJy1mcGVybWlzc2l2ZScgaXMgdmFsaWQgZm9yIEMrKy9PYmpDKysKLWJ1dCBub3QgZm9yIEMgWy1XZXJyb3JdCi1jYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlRmlsZXMvSmF2YVNjcmlwdENvcmUuZGlyL2J1aWxkLm1ha2U6MTExODI6Ci1yZWNpcGUgZm9yIHRhcmdldAotJ1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUZpbGVzL0phdmFTY3JpcHRDb3JlLmRpci9kaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5jLm8nCi1mYWlsZWQKLW1ha2VbMl06ICoqKgotW1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUZpbGVzL0phdmFTY3JpcHRDb3JlLmRpci9kaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5jLm9dCi1FcnJvciAxCi1tYWtlWzJdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkKLScvT0UvYnVpbGQvb2UtY29yZS90bXAtZWdsaWJjL3dvcmsvY29yZTItNjQtb2UtbGludXgvd2Via2l0LWVmbC8xXzEuMTAuMCsxLjExLjAtYmV0YTEtcjAvYnVpbGQnCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQotaW5kZXggZTMwNGE5OS4uMDQ1YzYxNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCi0rKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQotQEAgLTI1LDcgKzI1LDcgQEAgZW5kaWYgKCkKLSBzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIFVTRV9GT0xERVJTIE9OKQotIAotIGlmIChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFggT1IgIiR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIikKLS0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmciKQotKyAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmciKQotICAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jKysxMSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1ydHRpIikKLSBlbmRpZiAoKQotIAotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDItV2ViS2l0SGVscGVycy5jbWFrZS1BZGQtV25vLWVycm9yLWRlcHJlY2F0ZWQtZGVjbGFyYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdhOWU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBkZTkzOTUxZjg5ZTg1MWI2Njg5NzE4MDIyZWViYjRiOGIxZDE0YzA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBKYW4gMjAxNCAxNzoyMToyNSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvM10gV2ViS2l0SGVscGVycy5jbWFrZTogQWRkCi0gLVduby1lcnJvcj1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLWVycm9yPWNhc3QtYWxpZ24KLSAtV25vLWVycm9yPXR5cGUtbGltaXRzCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlIHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0SGVscGVycy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlCi1pbmRleCAyMjdiOWVlLi5hZTUyZWY2IDEwMDY0NAotLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEhlbHBlcnMuY21ha2UKLSsrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlCi1AQCAtNDAsNiArNDAsMjUgQEAgbWFjcm8oV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyBfdGFyZ2V0KQotICAgICAgICAgICAgICMgRklYTUU6IFdoZW4gd2UgdXNlIC1mbm8tdHJlZS1kY2UgdG8gc3VwcG9ydCB0aGUganNDU3RhY2sgYnJhbmNoIG1lcmdlLCBidWlsZCBlcnJvciBvY2N1cnMgZHVlIHRvIHRoZSB1bmluaXRpYWxpemF0aW9uLiBUZW1wb3JhcmlseSB3ZSBzZXQKLSAgICAgICAgICAgICAjIHVuaW5pdGlhbGl6ZWQgYXMgYnVpbGQgd2FybmluZyBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBqc0NTdGFjayBtZXJnZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzc3Ny4KLSAgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1XZXJyb3IgLVduby1lcnJvcj11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tZXJyb3I9dW5pbml0aWFsaXplZCAtV25vLWVycm9yPWxpdGVyYWwtc3VmZml4ICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIGxpYnNvdXAtMi40L2xpYnNvdXAvc291cC1wcm94eS11cmktcmVzb2x2ZXIuaDoxMzo4NDogZXJyb3I6ICdHVHlwZSBzb3VwX3Byb3h5X3VyaV9yZXNvbHZlcl9nZXRfdHlwZSgpJyBpcyBkZXByZWNhdGVkIChkZWNsYXJlZCBhdCAvT0UvYnVpbGQvb2UtY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2luY2x1ZGUvbGlic291cC0yLjQvbGlic291cC9zb3VwLXByb3h5LXVyaS1yZXNvbHZlci5oOjQ4KSBbLVdlcnJvcj1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc10KLSsgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1Xbm8tZXJyb3I9ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgJHtPTERfQ09NUElMRV9GTEFHU30iKQotKyAgICAgICAgICAgICMgd2Via2l0LWVmbC8xXzEuMTAuMCsxLjExLjAtYmV0YTEtcjAvZXdlYmtpdC9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaDo3NDI6ODc6IGVycm9yOiBjYXN0IGZyb20gJ3VpbnQ4X3QqIHtha2EgdW5zaWduZWQgY2hhcip9JyB0byAnV1RGOjpTdHJpbmdJbXBsKionIGluY3JlYXNlcyByZXF1aXJlZCBhbGlnbm1lbnQgb2YgdGFyZ2V0IHR5cGUgWy1XZXJyb3I9Y2FzdC1hbGlnbl0KLSsgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1Xbm8tZXJyb3I9Y2FzdC1hbGlnbiAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMC4wKzEuMTEuMC1iZXRhMS1yMC9ld2Via2l0L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwOjcwOjE2OiBlcnJvcjogY29tcGFyaXNvbiBpcyBhbHdheXMgZmFsc2UgZHVlIHRvIGxpbWl0ZWQgcmFuZ2Ugb2YgZGF0YSB0eXBlIFstV2Vycm9yPXR5cGUtbGltaXRzXQotKyAgICAgICAgICAgIHNldChPTERfQ09NUElMRV9GTEFHUyAiLVduby1lcnJvcj10eXBlLWxpbWl0cyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMS4wLXIwL2V3ZWJraXQvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6ODMyOjU6IGVycm9yOiBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBtZW1iZXIgJ19FdmFzX0dMX0NvbmZpZzo6Z2xlc192ZXJzaW9uJyBbLVdlcnJvcj1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVyc10KLSsgICAgICAgICAgICAjIHRoaXMgb25lIGlzIG5ldyB3aXRoIGVmbC0xLjEyCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIHdlYmtpdC1lZmwvMV8xLjExLjAtcjAvZXdlYmtpdC9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2JpZ251bS5jYzoxMDU6MTA6IGVycm9yOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qgb2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZSBbLVdlcnJvcj1zdHJpY3Qtb3ZlcmZsb3ddCi0rICAgICAgICAgICAgIyB0aGlzIG9uZSBpcyBuZXcgd2l0aCBnY2MtNS4yCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPXN0cmljdC1vdmVyZmxvdyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMS4wLXIwL2V3ZWJraXQvU291cmNlL1dURi93dGYvU2F0dXJhdGVkQXJpdGhtZXRpYy5oOjQ2OjI2OiBlcnJvcjogc3VnZ2VzdCBwYXJlbnRoZXNlcyBhcm91bmQgb3BlcmFuZCBvZiAnIScgb3IgY2hhbmdlICcmJyB0byAnJiYnIG9yICchJyB0byAnficgWy1XZXJyb3I9cGFyZW50aGVzZXNdCi0rICAgICAgICAgICAgIyB0aGlzIG9uZSBpcyBuZXcgd2l0aCBnY2MtNS4yCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPXBhcmVudGhlc2VzICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIHdlYmtpdC1lZmwvMV8xLjExLjAtcjAvZXdlYmtpdC9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoxMDM6MTA4OiBlcnJvcjogbG9naWNhbCBub3QgaXMgb25seSBhcHBsaWVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiBjb21wYXJpc29uIFstV2Vycm9yPWxvZ2ljYWwtbm90LXBhcmVudGhlc2VzXQotKyAgICAgICAgICAgICMgdGhpcyBvbmUgaXMgbmV3IHdpdGggZ2NjLTUuMgotKyAgICAgICAgICAgIHNldChPTERfQ09NUElMRV9GTEFHUyAiLVduby1lcnJvcj1sb2dpY2FsLW5vdC1wYXJlbnRoZXNlcyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rCi0gICAgICAgICBlbmRpZiAoKQotIAotICAgICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7X3RhcmdldH0gUFJPUEVSVElFUwotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDMtRkVCbGVuZE5FT04uaC1maXgtbWlzc2luZy1zZW1pY29sb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDMtRkVCbGVuZE5FT04uaC1maXgtbWlzc2luZy1zZW1pY29sb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MThlZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDAzLUZFQmxlbmRORU9OLmgtZml4LW1pc3Npbmctc2VtaWNvbG9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBhMDc2ZDc2YjhlODg2MmJkNjQxY2Q5OTExOTBlODJjZmQ0NzhjYzY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBBdWcgMjAxNCAwMDo1MjowMyArMDIwMAotU3ViamVjdDogW1BBVENIIDMvM10gRkVCbGVuZE5FT04uaDogZml4IG1pc3Npbmcgc2VtaWNvbG9uCi0KLSogT3RoZXJ3aXNlIGZhaWxzIHdpdGg6Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gZXdlYmtpdC9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOjI5OjA6Ci1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ3ZpcnR1YWwgdm9pZCBXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSc6Ci1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOjEzMDo1OiBlcnJvcjogZXhwZWN0ZWQgcHJpbWFyeS1leHByZXNzaW9uIGJlZm9yZSAnfScgdG9rZW4KLSAgICAgfQotICAgICBeCi1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOjEzMDo1OiBlcnJvcjogcmV0dXJuLXN0YXRlbWVudCB3aXRoIGEgdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyAndm9pZCcgWy1mcGVybWlzc2l2ZV0KLWV3ZWJraXQvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmg6MTMwOjU6IGVycm9yOiBleHBlY3RlZCAnOycgYmVmb3JlICd9JyB0b2tlbgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKLWluZGV4IDFjNTA3NjUuLmY0YjZmNDYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAotKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKLUBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQotIAotICAgICBpZiAocGl4ZWxBcnJheUxlbmd0aCA+PSA4KSB7Ci0gICAgICAgICBwbGF0Zm9ybUFwcGx5TkVPTihzcmNQaXhlbEFycmF5QS0+ZGF0YSgpLCBzcmNQaXhlbEFycmF5Qi0+ZGF0YSgpLCBkc3RQaXhlbEFycmF5LT5kYXRhKCksIHBpeGVsQXJyYXlMZW5ndGgpOwotLSAgICAgICAgcmV0dXJuCi0rICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgLy8gSWYgdGhlcmUgaXMganVzdCBvbmUgcGl4ZWwgd2UgZXhwYW5kIGl0IHRvIHR3by4KLSAgICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5ndGggPiAwKTsKLS0tIAotMi4xLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDA0LUZpeC10aGUtYnVpbGQtd2l0aC1FRkwtMS4xMi1odHRwcy1idWdzLndlYmtpdC5vcmctc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhMzA1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi1Gcm9tIGJhZWJjMDA0MTExMjg5ZWY2NThjNzhhNDJmODMzMmYzZGNlZWY0MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAicnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tIiA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgotRGF0ZTogVGh1LCAxMyBOb3YgMjAxNCAwNzowNzoxNiArMDAwMAotU3ViamVjdDogW1BBVENIIDQvNF0gRml4IHRoZSBidWlsZCB3aXRoIEVGTCAxLjEyCi0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODI0NQotCi1SZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLVNvdXJjZS9XZWJLaXQyOgotCi0qIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgotRmlyc3QsIG1vZGlmaWVkIHRvIHVzZSBFdmFzX0dMIHJhdyBwb2ludGVyIGluc3RlYWQgb2YgVW5pcXVlUHRyRWZsIGJlY2F1c2UKLUV2YXNfR0wuaCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBVbmlxdWVQdHJFZmwuaAotSXQgc2hvdWxkIGJlIG1vdmVkIGludG8gRXZhc0dMQ29udGV4dCBiZWNhdXNlIFdlYktpdC9FRkwgdXNlIG9ubHkgb25lIEV2YXNfR0wuCi1TZWNvbmQsIHByb3ZpZGVkIHRoZSB2ZXJzaW9uIG9mIEdMRVMgaW4gRXZhc19HTF9Db25maWcgbm90IHRvIGJyZWFrIGJ1aWxkIHdpdGgKLUVGTCAxLjEyCi0oRXdrVmlldzo6RXdrVmlldyk6Ci0oRXdrVmlldzo6fkV3a1ZpZXcpOgotKEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKToKLShFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UpOgotKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6Ci0KLVNvdXJjZS9XVEY6Ci0KLSogd3RmL2VmbC9VbmlxdWVQdHJFZmwuaDoKLVJlbW92ZWQgRXZhc19HTC5oIGZyb20gVW5pcXVlUHRyRWZsLmgsIHdoaWNoIGlzIGNvbW1vbmx5IGluY2x1ZGVkLCBiZWNhdXNlCi1pdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIHdpdGggb2ZmaWNpYWwgR0wgaGVhZGVycy4KLQotZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDE3NjA2NiAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKLS0tLQotIFNvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaCAgICAgICAgICAgIHwgIDIgLS0KLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCB8IDI0ICsrKysrKysrKysrKysrKystLS0tLS0tLQotIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCAgIHwgIDMgKystCi0gMyBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaAotaW5kZXggYmEwMTEwYS4uMDM4ZDNmYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaAotKysrIGIvU291cmNlL1dURi93dGYvZWZsL1VuaXF1ZVB0ckVmbC5oCi1AQCAtMzMsNyArMzMsNiBAQAotICNpbmNsdWRlIDxFY29yZV9JTUYuaD4KLSAjaW5jbHVkZSA8RWluYS5oPgotICNpbmNsdWRlIDxFdmFzLmg+Ci0tI2luY2x1ZGUgPEV2YXNfR0wuaD4KLSAKLSBuYW1lc3BhY2UgV1RGIHsKLSAKLUBAIC01MSw3ICs1MCw2IEBAIHVzaW5nIEVmbFVuaXF1ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBFZmxQdHJEZWxldGVyPFQ+PjsKLSAgICAgbWFjcm8oRWluYV9IYXNoLCBlaW5hX2hhc2hfZnJlZSkgXAotICAgICBtYWNybyhFaW5hX01vZHVsZSwgZWluYV9tb2R1bGVfZnJlZSkgXAotICAgICBtYWNybyhFdmFzX09iamVjdCwgZXZhc19vYmplY3RfZGVsKSBcCi0tICAgIG1hY3JvKEV2YXNfR0wsIGV2YXNfZ2xfZnJlZSkKLSAKLSAjZGVmaW5lIFdURl9ERUZJTkVfRUZMUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCi0gICAgIHRlbXBsYXRlPD4gc3RydWN0IEVmbFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKLWRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCi1pbmRleCA1MGQzNGVkLi42ZmYzMzk0IDEwMDc1NQotLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKLSsrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCi1AQCAtMjk5LDkgKzI5OSwxMSBAQCBFd2tWaWV3OjpFd2tWaWV3KFdLVmlld1JlZiB2aWV3LCBFdmFzX09iamVjdCogZXZhc09iamVjdCkKLSAKLSAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIHBvc3NpYmxlLgotICAgICBzdGF0aWNfY2FzdDxXZWJWaWV3RWZsKj4od2ViVmlldygpKS0+c2V0RXdrVmlldyh0aGlzKTsKLS0gICAgbV9ldmFzR0wgPSBFZmxVbmlxdWVQdHI8RXZhc19HTD4oZXZhc19nbF9uZXcoZXZhc19vYmplY3RfZXZhc19nZXQobV9ldmFzT2JqZWN0KSkpOwotKwotKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgaXQgdG8gbW92ZSBpbnRvIEV2YXNHTENvbnRleHQuCi0rICAgIG1fZXZhc0dMID0gZXZhc19nbF9uZXcoZXZhc19vYmplY3RfZXZhc19nZXQobV9ldmFzT2JqZWN0KSk7Ci0gICAgIGlmIChtX2V2YXNHTCkKLS0gICAgICAgIG1fZXZhc0dMQ29udGV4dCA9IEV2YXNHTENvbnRleHQ6OmNyZWF0ZShtX2V2YXNHTC5nZXQoKSk7Ci0rICAgICAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUobV9ldmFzR0wpOwotIAotICAgICBpZiAoIW1fZXZhc0dMQ29udGV4dCkgewotICAgICAgICAgV0FSTigiRmFpbGVkIHRvIGNyZWF0ZSBFdmFzX0dMLCBmYWxsaW5nIGJhY2sgdG8gc29mdHdhcmUgbW9kZS4iKTsKLUBAIC0zMzMsNiArMzM1LDkgQEAgRXdrVmlldzo6fkV3a1ZpZXcoKQotIHsKLSAgICAgQVNTRVJUKHdrUGFnZVRvRXZhc09iamVjdE1hcCgpLmdldCh3a1BhZ2UoKSkgPT0gbV9ldmFzT2JqZWN0KTsKLSAgICAgd2tQYWdlVG9FdmFzT2JqZWN0TWFwKCkucmVtb3ZlKHdrUGFnZSgpKTsKLSsKLSsgICAgaWYgKG1fZXZhc0dMKQotKyAgICAgICAgZXZhc19nbF9mcmVlKG1fZXZhc0dMKTsKLSB9Ci0gCi0gRXdrVmlldyogRXdrVmlldzo6Y3JlYXRlKFdLVmlld1JlZiB3ZWJWaWV3LCBFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQotQEAgLTU4Nyw3ICs1OTIsNyBAQCB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1ZpZXc+KikKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSsgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7Ci0gCi0gICAgIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KHdrVmlldygpKTsKLSAKLUBAIC04MjgsMjEgKzgzMywyNCBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCi0gICAgICAgICBFVkFTX0dMX0RFUFRIX0JJVF84LAotICAgICAgICAgRVZBU19HTF9TVEVOQ0lMX05PTkUsCi0gICAgICAgICBFVkFTX0dMX09QVElPTlNfTk9ORSwKLS0gICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQotKyAgICAgICAgRVZBU19HTF9NVUxUSVNBTVBMRV9OT05FLAotKyNpZiBkZWZpbmVkKEVWQVNfR0xfQVBJX1ZFUlNJT04pICYmIEVWQVNfR0xfQVBJX1ZFUlNJT04gPj0gMgotKyAgICAgICAgRVZBU19HTF9HTEVTXzJfWAotKyNlbmRpZgotICAgICB9OwotIAotICAgICAvLyBSZWNyZWF0ZSB0byBjdXJyZW50IHNpemU6IFJlcGxhY2VzIGlmIG5vbi1udWxsLCBhbmQgZnJlZXMgZXhpc3Rpbmcgc3VyZmFjZSBhZnRlciAoT3duUHRyKS4KLS0gICAgbV9ldmFzR0xTdXJmYWNlID0gRXZhc0dMU3VyZmFjZTo6Y3JlYXRlKG1fZXZhc0dMLmdldCgpLCAmZXZhc0dMQ29uZmlnLCBkZXZpY2VTaXplKCkpOwotKyAgICBtX2V2YXNHTFN1cmZhY2UgPSBFdmFzR0xTdXJmYWNlOjpjcmVhdGUobV9ldmFzR0wsICZldmFzR0xDb25maWcsIGRldmljZVNpemUoKSk7Ci0gICAgIGlmICghbV9ldmFzR0xTdXJmYWNlKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZhY2U7Ci0tICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgJm5hdGl2ZVN1cmZhY2UpOwotKyAgICBldmFzX2dsX25hdGl2ZV9zdXJmYWNlX2dldChtX2V2YXNHTCwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksICZuYXRpdmVTdXJmYWNlKTsKLSAgICAgZXZhc19vYmplY3RfaW1hZ2VfbmF0aXZlX3N1cmZhY2Vfc2V0KHNtYXJ0RGF0YSgpLT5pbWFnZSwgJm5hdGl2ZVN1cmZhY2UpOwotIAotLSAgICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSsgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7Ci0gCi0tICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSk7Ci0rICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTCk7Ci0gCi0gICAgIFdLUG9pbnQgYm91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9TY2VuZSh3a1ZpZXcoKSwgV0tQb2ludE1ha2UoZGV2aWNlU2l6ZSgpLndpZHRoKCksIGRldmljZVNpemUoKS5oZWlnaHQoKSkpOwotICAgICBnbC0+Z2xWaWV3cG9ydCgwLCAwLCBib3VuZHNFbmQueCwgYm91bmRzRW5kLnkpOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAotaW5kZXggMWM0ODJjZi4uNjhkYWI4NyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAotKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCi1AQCAtMzksNiArMzksNyBAQAotICNlbmRpZgotIAotIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKLSt0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOwotIAotIG5hbWVzcGFjZSBXZWJLaXQgewotIGNsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsOwotQEAgLTI0MSw3ICsyNDIsNyBAQCBwcml2YXRlOgotICAgICBFdmFzX09iamVjdCogbV9ldmFzT2JqZWN0OwotICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250ZXh0OwotICAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBtX3BhZ2VHcm91cDsKLS0gICAgRWZsVW5pcXVlUHRyPEV2YXNfR0w+IG1fZXZhc0dMOwotKyAgICBFdmFzX0dMKiBtX2V2YXNHTDsKLSAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKLSAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKLSAgICAgYm9vbCBtX3BlbmRpbmdTdXJmYWNlUmVzaXplOwotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlOGUyOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDA1LUZpeC10aGUtYnVpbGQtd2l0aC1jbWFrZS0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLUZyb20gYTAwYTcwOTdiODU1NjdhZTZlYjdhMDBiM2NlN2VmMDIxODQxMjAzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjQgU2VwIDIwMTUgMTg6MDM6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIEZpeCB0aGUgYnVpbGQgd2l0aCBjbWFrZSAzCi0KLSogdGhlIHNhbWUgaXNzdWUgYXMgaW4gR1RLIHBvcnQ6Ci0gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3OTYKLSAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgwNTAyCi0KLSogb3RoZXJ3aXNlIGxpbmtpbmcgZmFpbHMgd2l0aCBjb3VwbGUgdW5kZWZpbmVkIHN5bWJvbHMKLXwgQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0Ojp3ZWJraXRYRXJyb3IoX1hEaXNwbGF5KiwgWEVycm9yRXZlbnQqKSc6Ci18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6NjM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhHZXRFcnJvclRleHQnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW46OnBhcnNlQ29tbWFuZExpbmUoaW50LCBjaGFyKiopJzoKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoxMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTZXRFcnJvckhhbmRsZXInCi18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6MTAyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYU2V0RXJyb3JIYW5kbGVyJwotfCBDTWFrZUZpbGVzL1dlYktpdDIuZGlyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0OjpXZWJQcm9jZXNzTWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcDo2NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWFNldEV4dGVuc2lvbkVycm9ySGFuZGxlcicKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6Njc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTZXRFeHRlbnNpb25FcnJvckhhbmRsZXInCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sLCB1bnNpZ25lZCBsb25nKSc6Ci18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6MTcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYRmx1c2gnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjE5NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWEdldFZpc3VhbEluZm8nCi18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6MTk5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYRnJlZScKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhDcmVhdGVDb2xvcm1hcCcKLXwgQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI1MTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWEZyZWVDb2xvcm1hcCcKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyNTU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhGcmVlUGl4bWFwJwotfCBDTWFrZUZpbGVzL1dlYktpdDIuZGlyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwLm86IEluIGZ1bmN0aW9uIGBXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI5MzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWENyZWF0ZVBpeG1hcCcKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyODY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhGcmVlUGl4bWFwJwotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI5NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWFN5bmMnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6SW50UmVjdCBjb25zdCYsIGJvb2wpJzoKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDozNDM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTeW5jJwotfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLXwgU291cmNlL1dlYktpdDIvQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9idWlsZC5tYWtlOjE2MTQ1OiByZWNpcGUgZm9yIHRhcmdldCAnbGliL2xpYmV3ZWJraXQyLnNvLjEuMTEuMCcgZmFpbGVkCi18IG1ha2VbMl06ICoqKiBbbGliL2xpYmV3ZWJraXQyLnNvLjEuMTEuMF0gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSAgICAgICAgIHwgMSArCi0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgICAgICAgICB8IDMgKysrCi0gU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgICAgICAgICAgICB8IDEgKwotIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQotaW5kZXggNDFmZmMxNS4uNjNiNzg2MSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCi0rKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQotQEAgLTQwNCw2ICs0MDQsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKLSAgICAgICAgICkKLSAgICAgZW5kaWYgKCkKLSAKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKLSAgICAgICAgICR7WDExX1gxMV9MSUJ9Ci0gICAgICkKLWRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCi1pbmRleCA4YzY2ZDFiLi5kOTZmMGJkIDEwMDY0NAotLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKLSsrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCi1AQCAtMzMxLDEyICszMzEsMTUgQEAgaWYgKEVOQUJMRV9TRUNDT01QX0ZJTFRFUlMpCi0gZW5kaWYgKCkKLSAKLSBpZiAoRU5BQkxFX0VDT1JFX1gpCi0rICAgIGZpbmRfcGFja2FnZShYMTEgUkVRVUlSRUQpCi0gICAgIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfTElCUkFSSUVTCi0gICAgICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQotICAgICAgICAgJHtYMTFfWGV4dF9MSUJ9Ci0gICAgICkKLSAgICAgbGlzdChBUFBFTkQgV2ViS2l0Ml9MSUJSQVJJRVMKLSAgICAgICAgICR7RUNPUkVfWF9MSUJSQVJJRVN9Ci0rICAgICAgICAke1gxMV9YMTFfTElCfQotKyAgICAgICAgJHtYMTFfWGV4dF9MSUJ9Ci0gICAgICkKLSBlbmRpZiAoKQotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLWluZGV4IDg1ODVmMTkuLjFhYTkwMDIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQotKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLUBAIC0xODEsNiArMTgxLDcgQEAgZW5kaWYgKCkKLSAKLSBpZiAoV1RGX09TX1VOSVgpCi0gICAgIHNldChFTkFCTEVfWDExX1RBUkdFVCBPTikKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgYWRkX2RlZmluaXRpb25zKC1EWFBfVU5JWCkKLSBlbmRpZiAoV1RGX09TX1VOSVgpCi0gCi1kaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UKLWluZGV4IDE4NzMyNzkuLmE5MDVmMmEgMTAwNjQ0Ci0tLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCi0rKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCi1AQCAtNTMsNiArNTMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfTElCUkFSSUVTCi0gKQotIAotIGlmIChFTkFCTEVfRUNPUkVfWCkKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgICAgICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQotICAgICApCi0tLSAKLTIuNi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwNi1PcHRpb25zRWZsLmNtYWtlLUZpeC1idWlsZC13aXRoLW5ld2VyLUNNYWtlLTMuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwNi1PcHRpb25zRWZsLmNtYWtlLUZpeC1idWlsZC13aXRoLW5ld2VyLUNNYWtlLTMuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2MjYzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDYtT3B0aW9uc0VmbC5jbWFrZS1GaXgtYnVpbGQtd2l0aC1uZXdlci1DTWFrZS0zLjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDk5Mzg4MmY4MWZlOTkxYjhiYWYxMDk5MzkyNzAzMzM3Y2MxM2ZhYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI3IEphbiAyMDE2IDE4OjQwOjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE9wdGlvbnNFZmwuY21ha2U6IEZpeCBidWlsZCB3aXRoIG5ld2VyIENNYWtlIDMuNAotCi0qIG90aGVyd2lzZSBpdCBmYWlscyB3aXRoOgotICB8IENNYWtlIEVycm9yIGF0IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOjI1MSAoQ0hFQ0tfSU5DTFVERV9GSUxFUyk6Ci0gIHwgICBVbmtub3duIENNYWtlIGNvbW1hbmQgIkNIRUNLX0lOQ0xVREVfRklMRVMiLgotKiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTE3Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCi1pbmRleCAxYWE5MDAyLi4wNTIxNmQwIDEwMDY0NAotLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLSsrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCi1AQCAtMjUzLDYgKzI1Myw3IEBAIGlmIChFTkFCTEVfV0VCR0wgT1IgV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICAgICAgc2V0KFdURl9VU0VfRUdMIDEpCi0gICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0VHTD0xKQotICAgICBlbHNlICgpCi0rICAgICAgICBpbmNsdWRlKENoZWNrSW5jbHVkZUZpbGVzKQotICAgICAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFUygiR0wvZ2x4LmgiIE9QRU5HTFhfRk9VTkQpCi0gICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dMWD0xKQotICAgICBlbmRpZiAoKQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsXzEuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmxfMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmFkODMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmxfMS4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1PcHRpb25zQ29tbW9uLmNtYWtlLWRvbi10LW1peC1DWFhfRkxBR1MtaW50by1DX0ZMQUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1GRUJsZW5kTkVPTi5oLWZpeC1taXNzaW5nLXNlbWljb2xvbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LU9wdGlvbnNFZmwuY21ha2UtRml4LWJ1aWxkLXdpdGgtbmV3ZXItQ01ha2UtMy40LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MGZhOTcwZWJmODY0NjMxOWQyOTJjMmJiNWJmZjVkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGQyMWUyN2Y0YTIxY2Q3N2M0MTkxNDU0OGMxODRkZGI5ODY5M2JhMjM4NTFhYTY2YzhlNTFjMGJlNGI5MGI3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvZmlsZXMvMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzLzAwMDEtRGVmaW5lLWNvbXBhcmlzb25fZm5fdC1mb3Itbm9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZDRiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvZmlsZXMvMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNWJjNWI4YzVkYWQzZWRlYzY3MzZmZDdlN2NlNjEyNTBjNGNlMzcyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE3OjEzOjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBjb21wYXJpc29uX2ZuX3QgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCi0KLWxpZ2h0bWVkaWFzY2FubmVyLmM6MzI0OjEyOiBlcnJvcjogJ2NvbXBhcmlzb25fZm5fdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgICAgICAgIChjb21wYXJpc29uX2ZuX3QpX3BsdWdpbl9zb3J0KTsKLSAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2xpYi9saWdodG1lZGlhc2Nhbm5lci5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYyBiL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYwotaW5kZXggMzQ0YjI0Ny4uYjg2Njg4MyAxMDA2NDQKLS0tLSBhL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYwotKysrIGIvc3JjL2xpYi9saWdodG1lZGlhc2Nhbm5lci5jCi1AQCAtMzcsNiArMzcsMTEgQEAKLSAjZGVmaW5lIERFRkFVTFRfU0xBVkVfVElNRU9VVCAxMDAwCi0gI2RlZmluZSBERUZBVUxUX0NPTU1JVF9JTlRFUlZBTCAxMDAKLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0rdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKLSsjZW5kaWYKLSsKLSAjaWZkZWYgSEFWRV9NQUdJQ19ICi0gc3RhdGljIG1hZ2ljX3QgX21hZ2ljX2hhbmRsZTsKLSAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzL2lkMy1wbHVnaW4tc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzL2lkMy1wbHVnaW4tc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUyOGJlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9maWxlcy9pZDMtcGx1Z2luLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQkyMDE1LTEwLTI1IDE2OjEyOjI5LjMzMTQxNTgyMyArMDAwMAotKysrIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0JMjAxNS0xMC0yNSAxNjoxNDozNy41OTM0MTU4MDggKzAwMDAKLUBAIC05Myw3ICs5Myw3IEBACi0gaWQzX2lkM19sYV9TT1VSQ0VTID0gaWQzL2lkMy5jIGlkMy9pZDN2MV9nZW5yZXMuYwotIGlkM19pZDNfbGFfTElCQUREID0gJChQTFVHSU5TX0xJQkFERCkKLSAKLS1pZDMvaWQzdjFfZ2VucmVzLmM6ICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzLmRlZiAkKHNyY2RpcikvaWQzL2lkM3YxX2dlbnJlc19nZW4uYXdrCi0rJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuYzogJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuZGVmICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzX2dlbi5hd2sKLSAJJChBV0spIC1mICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzX2dlbi5hd2sgJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuZGVmID4gJEAKLSAKLSBFWFRSQV9ESVNUICs9IGlkMy9pZDN2MV9nZW5yZXMuZGVmIGlkMy9pZDN2MV9nZW5yZXNfZ2VuLmF3awpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvbGlnaHRtZWRpYXNjYW5uZXJfMC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9saWdodG1lZGlhc2Nhbm5lcl8wLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIxNTg3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9saWdodG1lZGlhc2Nhbm5lcl8wLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgbWVkaWEgc2Nhbm5lciIKLURFU0NSSVBUSU9OID0gIkxpZ2h0d2VpZ2h0IG1lZGlhIHNjYW5uZXIgbWVhbnQgdG8gYmUgdXNlZCBpbiBub3Qtc28tcG93ZXJmdWwgZGV2aWNlcywgbGlrZSBlbWJlZGRlZCBzeXN0ZW1zIG9yIG9sZCBtYWNoaW5lcy4iCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbGliL2xpZ2h0bWVkaWFzY2FubmVyLmM7ZW5kbGluZT0yMTttZDU9NmQ4ODg5YmNjYjRjNmMyN2U4Yjc4NjM0MmEzZWIyNjciCi0KLURFUEVORFMgPSAiZmlsZSBnYXdrIGdsaWItMi4wIHNxbGl0ZTMiCi0KLVBWID0gIjAuNS4xK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImFkZmRkYjM0ODYyNzZhNWVkMmY1MDA4YzllNDNhODExZTEyNzFjYzkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvZnVzaW9uL2xpZ2h0bWVkaWFzY2FubmVyLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9pZDMtcGx1Z2luLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXRpYyAtLWRpc2FibGUtbXA0IgotCi1QQUNLQUdFQ09ORklHID8/PSAib2dnIGZsYWMgd2F2ZSBpZDMgbTN1IHBscyBhc2Ygcm0ganBlZyBwbmciCi1QQUNLQUdFQ09ORklHW2dlbmVyaWNdID0gIi0tZW5hYmxlLWdlbmVyaWMsLS1kaXNhYmxlLWdlbmVyaWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW29nZ10gPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIGxpYnZvcmJpcyBsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbd2F2ZV0gPSAiLS1lbmFibGUtd2F2ZSwtLWRpc2FibGUtd2F2ZSIKLVBBQ0tBR0VDT05GSUdbaWQzXSA9ICItLWVuYWJsZS1pZDMsLS1kaXNhYmxlLWlkMyIKLVBBQ0tBR0VDT05GSUdbbTN1XSA9ICItLWVuYWJsZS1tM3UsLS1kaXNhYmxlLW0zdSIKLVBBQ0tBR0VDT05GSUdbcGxzXSA9ICItLWVuYWJsZS1wbHMsLS1kaXNhYmxlLXBscyIKLVBBQ0tBR0VDT05GSUdbYXNmXSA9ICItLWVuYWJsZS1hc2YsLS1kaXNhYmxlLWFzZiIKLVBBQ0tBR0VDT05GSUdbcm1dID0gIi0tZW5hYmxlLXJtLC0tZGlzYWJsZS1ybSIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIyBJbnN0YWxsICJ0ZXN0IiBiaW5hcnkgZm9yIGNvcnJlc3BvbmRpbmcgcGFja2FnZQotICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3NyYy9iaW4vLmxpYnMvdGVzdCAke0R9LyR7YmluZGlyfS90ZXN0LWxtcwotICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcwotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9LyR7UE59L3BsdWdpbnMvKi5sYQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke1BOfS9wbHVnaW5zLy5kZWJ1ZyIKLQotUEFDS0FHRVNfcHJlcGVuZCA9ICIke1BOfS10ZXN0ICIKLUZJTEVTXyR7UE59LXRlc3RfcHJlcGVuZCA9ICIke2JpbmRpcn0vdGVzdC1sbXMgIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKLUFMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxtc19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9LyR7UE59JykKLSAgICBwa2dzID0gW10KLQotICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKGxtc19saWJkaXIsICJwbHVnaW5zIiksICdeKC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnTGlnaHRNZWRpYVNjYW5uZXIgcGx1Z2luIGZvciAlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKLSAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1ldGEnCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihwa2dzKSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1uYXZpZ2F0aW9uL21jbmF2aS9tY25hdmlfMC4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbmF2aWdhdGlvbi9tY25hdmkvbWNuYXZpXzAuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDBlMDA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1uYXZpZ2F0aW9uL21jbmF2aS9tY25hdmlfMC4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWUgR1BTIG5hdmlnYXRpb24gZm9yIGNhciBhbmQgb3V0ZG9vciB3aXRoIE9wZW5TdHJlZXRNYXAgbWFwcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3BzLXJvdXRlcy5pbmZvL2luZGV4LnBocD9uYW1lPUNvbnRlbnQmcGE9c2hvd3BhZ2UmcGlkPTEiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGYwZTJjZDQwZTA1MTg5ZWM4MTIzMmRhODRiZDZlMWEiCi1ERVBFTkRTID0gImVjb3JlIGV2YXMgaW1saWIyIGdwc2QgZWRqZSBlZGplLW5hdGl2ZSBteXNxbDUgaW50bHRvb2wtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZ3BzLXJvdXRlcy5pbmZvL2RlYmlhbi9wb29sL21haW4vbS9tY25hdmkvbWNuYXZpXyR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODYwY2RlNWMwMmE5ZjkzYzgyOWRhNGIxMGU1YTIyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTdmNjUxNTVlOTEzODYxNzU4NzVmYzRmNzJmNGJjOTRlNGU5Y2RiODI1ODExMjYzMmRhOTQ1MjBlZjJjMzQ5IgotCi1TID0gIiR7V09SS0RJUn0vJHtQTn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBOQkxBQ0tMSVNUW21jbmF2aV0gPz0gIkJST0tFTjogbGF0ZXN0IHZlcnNpb24gMC4zLjQgaXMgMyB5ZWFycyBvbGQgYW5kIG5vdyBicm9rZW4gd2l0aCBtb3JlIHN0cmljdCBlamRlX2NjIGZyb20gZWZsLTEuMTMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0jIHwgZWRqZV9jYzogRXJyb3IuIHBhcnNlIGVycm9yIDAuMy40LXIwL21jbmF2aS9kYXRhL3RoZW1lcy9EZWZhdWx0L21haW4uZWRjOjEyNi4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvaXRpbmVyYXJ5LmVkYzo4NC4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvdGV4dC5lZGM6MTEyOS4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvZmlsZW9wZW4uZWRjOjc4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdvZmYnLiAiZGVmYXVsdCIgc3RhdGUgbXVzdCBhbHdheXMgYmUgZmlyc3QuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL1JFQURNRQppbmRleCA0OGZlMTVmLi4wZjdjYzliIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9SRUFETUUKQEAgLTEwLDIyICsxMCwyMiBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiAgIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZQotICBicmFuY2g6IDEuMjgKKyAgYnJhbmNoOiAxLjM2CiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZQogICBsYXllcnM6IG1ldGEKLSAgYnJhbmNoOiBweXJvCisgIGJyYW5jaDogcm9ja28KIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkCiAgIGxheWVyczogbWV0YS1vZQotICBicmFuY2g6IHB5cm8KKyAgYnJhbmNoOiByb2NrbwogCiBQYXRjaGVzCiA9PT09PT09CiAKIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUgZmlsZXN5c3RlbXMgbGF5ZXIgdG8gdGhlCiBPcGVuRW1iZWRkZWQgZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0IChvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykKLXdpdGggJ1ttZXRhLWZpbGVzeXN0ZW1zXVtweXJvXScgaW4gdGhlIHN1YmplY3QuCit3aXRoICdbbWV0YS1maWxlc3lzdGVtc11bcm9ja29dJyBpbiB0aGUgc3ViamVjdC4KIAogTWFpbnRhaW5lcnMgTGlzdDoKICAgcGh5c2ZzICAgICAgQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgpAQCAtNjYsOSArNjYsOSBAQAogCiAgICBnaXQgc2VuZC1lbWFpbCAtMSAtTSBcCiAgICAgICAgIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgXAotICAgICAgICAtLXN1YmplY3QtcHJlZml4PW1ldGEtZmlsZXN5c3RlbXNdW3B5cm9dW1BBVENICisgICAgICAgIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1maWxlc3lzdGVtc11bcm9ja29dW1BBVENICiAKLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Cityb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIFRhYmxlIG9mIENvbnRlbnRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9Vc2luZy1QS0dfQ0hFQ0tfTU9EVUxFUy10by1mb3VuZC1oZWFkZXJzLWFuZC1saWJyYXJpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9Vc2luZy1QS0dfQ0hFQ0tfTU9EVUxFUy10by1mb3VuZC1oZWFkZXJzLWFuZC1saWJyYXJpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNWYwOWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc21ibmV0ZnMvc21ibmV0ZnMvVXNpbmctUEtHX0NIRUNLX01PRFVMRVMtdG8tZm91bmQtaGVhZGVycy1hbmQtbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA3YTUyNGQ0OWIzZDQ0NTkyODBmMTg5NDJkZjI5ODA2MDM0MDBlYzUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDE5IEp1biAyMDE1IDExOjU0OjQ0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzaW5nIFBLR19DSEVDS19NT0RVTEVTIHRvIGZvdW5kIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBvZgotIHNtYmNsaWVudAotCi1TaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiAgICB8IDUgKysrKysKLSBzcmMvTWFrZWZpbGUuYW0gfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGNlMjFhZWYuLmVjZDcxMTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTEyNSw2ICsxMjUsMTEgQEAgQUNfQ0hFQ0tfTElCKHNtYmNsaWVudCwgc21iY19zZXRPcHRpb25Vc2VyRGF0YSwKLSAgICAgKV0KLSApCi0gCi0rZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rZG5sICoqKiBDaGVjayBsaWJzbWJjbGllbnQgYnkgcGtnY29uZmlnIHRvIGdldCBjZmxhZ3MgYW5kIGxkZmxhZ3MgKioqCi0rZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rUEtHX0NIRUNLX01PRFVMRVMoU01CQ0xJRU5ULCBzbWJjbGllbnQpCi0rCi0gZG5sICoqKioqKioqKioqKioqKioqKgotIGRubCAqKiogRmluYWwgc3RlcCAqKioKLSBkbmwgKioqKioqKioqKioqKioqKioqCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA0MTUxOWQ4Li45ZmM5N2U5IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0xNiwzICsxNiw2IEBAIHNtYm5ldGZzX1NPVVJDRVMgPSBcCi0gCWV2ZW50LmMJCQlldmVudC5oCQkJXAotIAlyZWNvbmZpZ3VyZS5jCQlyZWNvbmZpZ3VyZS5oCQlcCi0gCW1haW4uYwotKwotK3NtYm5ldGZzX0NGTEFHUz0ke1NNQkNMSUVOVF9DRkxBR1N9Ci0rc21ibmV0ZnNfTERGTEFHUz0ke1NNQkNMSUVOVF9MREZMQUdTfQotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgwZmVkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5pbgkyMDE0LTA2LTE4IDE2OjA2OjE2LjA0MDcyMTM0OSArMDAwMAotKysrIGdpdC9jb25maWd1cmUuaW4JMjAxNC0wNy0xOCAwNzo0OToxNy4wODU1NTIyNTYgKzAwMDAKLUBAIC0xLDUgKzEsNSBAQAotIEFDX0lOSVQoW1NNQk5ldEZTXSxbMC41LjPQsF0pCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFDX0NPTkZJR19IRUFERVJTKFtzcmMvY29uZmlnLmhdKQotIEFDX1BST0dfQ0MKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk5NWFkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkZVU0UgbW9kdWxlIGZvciBtb3VudGluZyBhbiBlbnRpcmUgU01CL05NQiBuZXR3b3JrIGluIGEgc2luZ2xlIGRpcmVjdG9yeSIKLURFU0NSSVBUSU9OID0gIlNNQk5ldEZTIGlzIGEgTGludXgvRnJlZUJTRCBmaWxlc3lzdGVtIHRoYXQgYWxsb3cgeW91IHRvIHVzZSBcCi0gICAgICAgICAgICAgICBzYW1iYS9taWNyb3NvZnQgbmV0d29yayBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhlIG5ldHdvcmsgXAotICAgICAgICAgICAgICAgbmVpZ2hib3Job29kIGluIE1pY3Jvc29mdCBXaW5kb3dzLiBQbGVhc2UgZG9uYXRlIG1lIHRvIGhlbHAgXAotICAgICAgICAgICAgICAgaW4gU01CTmV0RlMgZGV2ZWxvcG1lbnQuIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi1IT01FUEFHRSA9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc21ibmV0ZnMiCi0KLURFUEVORFMgPSAiZnVzZSBzYW1iYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2l0cGtndiBwa2djb25maWcKLQotUEtHViA9ICIke0dJVFBLR1ZUQUd9IgotCi1TUkNSRVYgPSAiYWNlMWM1MTlkNDVmZTQ4OGI5YjdlNmNjNzdhMmJjYWRiNmM4MzQ2NCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9zbWJuZXRmcy5naXQuc291cmNlZm9yZ2UubmV0L2dpdHJvb3Qvc21ibmV0ZnMvc21ibmV0ZnM7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vVXNpbmctUEtHX0NIRUNLX01PRFVMRVMtdG8tZm91bmQtaGVhZGVycy1hbmQtbGlicmFyaWVzLnBhdGNoIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZz15ZXMsLS13aXRoLWdub21lLWtleXJpbmc9bm8sbGliZ25vbWUta2V5cmluZyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUE5CTEFDS0xJU1Rbc21ibmV0ZnNdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMyODI3LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzNjNjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNDQ5Y2VjMzRjMTIzYjg2Yjc5MjYyNzU1M2M2ZWM3NDcxZDJlZTdlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTQ6NDY6NTEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBjcm9zcyBjb21waWxpbmcKKworRG8gbm90IG92ZXJyaWRlIE9FIENNQUtFIHZhcmlhYmxlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTAsOSArMTAsOSBAQCBJRihOT1QgQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUyBBTkQgTk9UIENNQUtFX0JVSUxEX1RZUEUpCisgRU5ESUYoTk9UIENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMgQU5EIE5PVCBDTUFLRV9CVUlMRF9UWVBFKQorIAorICMgU2VsZWN0IGZsYWdzLgorLVNFVChDTUFLRV9DX0ZMQUdTICItcGlwZSAtVyAtV2FsbCAtREZPUlRJRllfU09VUkNFPTIiKQorK1NFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1waXBlIC1XIC1XYWxsIC1ERk9SVElGWV9TT1VSQ0U9MiIpCisgU0VUKENNQUtFX0NfRkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyIpCistU0VUKENNQUtFX0NfRkxBR1NfUkVMRUFTRSAiLU8yIikKKytTRVQoQ01BS0VfQ19GTEFHU19SRUxFQVNFICIke0NNQUtFX0NfRkxBR1NfUkVMRUFTRX0gLU8yIikKKyBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiLU8wIC1nIC1EREVCVUciKQorIAorIGlmIChVTklYIEFORCBBUFBMRSkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOTkxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvZmlsZXMvMDAwMS11bmlvbmZzLURlZmluZS1JT0NQQVJNX0xFTi1pZi11bmRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSAxMDQxMWZhODY1ODYyMTgyMmFlMzk0MTYwZGFmZmFjZWQ0YTRjZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MDc6MjkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdW5pb25mczogRGVmaW5lIElPQ1BBUk1fTEVOIGlmIHVuZGVmaW5lZAorCittdXNsIGRvZXMgbm90IGhhdmUgc3lzY3RsLmggd2hpY2ggZGVmaW5lcyB0aGlzCitmb3IgZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy91bmlvbmZzLmMgfCAgOCAtLS0tLS0tLQorIHNyYy91bmlvbmZzLmggfCAxNSArKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5jIGIvc3JjL3VuaW9uZnMuYworaW5kZXggYTM0ZDM0ZS4uNTE2ODRhNyAxMDA2NDQKKy0tLSBhL3NyYy91bmlvbmZzLmMKKysrKyBiL3NyYy91bmlvbmZzLmMKK0BAIC0yMSwxNCArMjEsNiBAQAorICNpbmNsdWRlICJvcHRzLmgiCisgI2luY2x1ZGUgInVzeXNsb2cuaCIKKyAKKy0jaWZuZGVmIF9JT0NfU0laRQorLSNpZmRlZiBJT0NQQVJNX0xFTgorLSNkZWZpbmUgX0lPQ19TSVpFKHgpIElPQ1BBUk1fTEVOKHgpCistI2Vsc2UKKy0jZXJyb3IgIk5vIG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgaW9jdGwgbGVuZ3RoIGZvdW5kLiIKKy0jZW5kaWYKKy0jZW5kaWYKKy0KKyBzdGF0aWMgc3RydWN0IGZ1c2Vfb3B0IHVuaW9uZnNfb3B0c1tdID0geworIAlGVVNFX09QVF9LRVkoImNocm9vdD0lcywiLCBLRVlfQ0hST09UKSwKKyAJRlVTRV9PUFRfS0VZKCJjb3ciLCBLRVlfQ09XKSwKK2RpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5oIGIvc3JjL3VuaW9uZnMuaAoraW5kZXggOGY1ZTBiZi4uYjAyZGU1YSAxMDA2NDQKKy0tLSBhL3NyYy91bmlvbmZzLmgKKysrKyBiL3NyYy91bmlvbmZzLmgKK0BAIC0xNyw2ICsxNywyMSBAQAorICNkZWZpbmUgRlVTRV9NRVRBX0ZJTEUgIi5mdXNlX2hpZGRlbiIKKyAjZGVmaW5lIEZVU0VfTUVUQV9MRU5HVEggMTIKKyAKKysjaWZuZGVmIElPQ1BBUk1fTUFTSworKyNkZWZpbmUgSU9DUEFSTV9NQVNLICAgICAgMHgxRkZGCisrI2VuZGlmCisrI2lmbmRlZiBJT0NQQVJNX0xFTgorKyNkZWZpbmUgSU9DUEFSTV9MRU4oYSkgICAgKCgoYSkgPj4gMTYpICYgSU9DUEFSTV9NQVNLKQorKyNlbmRpZgorKworKyNpZm5kZWYgX0lPQ19TSVpFCisrI2lmZGVmIElPQ1BBUk1fTEVOCisrI2RlZmluZSBfSU9DX1NJWkUoeCkgSU9DUEFSTV9MRU4oeCkKKysjZWxzZQorKyNlcnJvciAiTm8gbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyBpb2N0bCBsZW5ndGggZm91bmQuIgorKyNlbmRpZgorKyNlbmRpZgorKworIC8vIGZpbGUgYWNjZXNzIHByb3RlY3Rpb24gbWFzaworICNkZWZpbmUgU19QUk9UX01BU0sgKFNfSVNVSUR8IFNfSVNHSUQgfCBTX0lTVlRYIHwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8wLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8wLjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTIwNDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMC4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBGVVNFIGJhc2VkIGltcGxlbWVudGlvbiBvZiB1bmlvbmZzIgotSE9NRVBBR0UgPSAiaHR0cDovL3BvZGdvcm55LmN6L21vaW4vVW5pb25Gc0Z1c2UiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotREVQRU5EUyA9ICJmdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3VuaW9uZnMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTg7bWQ1PTMwZmE4ZGU3MGZkOGFiYWIwMGI0ODNhMWI3OTQzYTMyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb2Rnb3JueS5jei91bmlvbmZzLWZ1c2UvcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg5YzYzNjQ4NDc1NmY2ZjdhNzI4ZWYzNTRjYmVhYzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ1YzlkY2I1MWVjYjlhOWIwMzg5MGUxNmQxN2UzN2Q2MDJiMGMxZjIzZWQ2YTlkZGVjMmIwZjcxOWM5ZjY2MiIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke2V4ZWNfcHJlZml4fQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotUE5CTEFDS0xJU1RbdW5pb25mcy1mdXNlXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY0OC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZWRmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkEgRlVTRSBiYXNlZCBpbXBsZW1lbnRpb24gb2YgdW5pb25mcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvdW5pb25mcy1mdXNlIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy91bmlvbmZzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT0zMGZhOGRlNzBmZDhhYmFiMDBiNDgzYTFiNzk0M2EzMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT03ZTVhMzdmY2UxNzMwNzA2NmVlYzZiMjM1NDZkYTNiMyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvJHtCUE59LmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11bmlvbmZzLURlZmluZS1JT0NQQVJNX0xFTi1pZi11bmRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiYzhkMjNhOWE3NWYxYTYyOTg4NTkzNjcxODM5ZThhMTY4YTc5ZjNlNSIKKworREVQRU5EUyA9ICJmdXNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM2MjgxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCi0gICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCi0gICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKLSAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCi0gICAgICAgICAgICAgICIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdXNlLnNmLm5ldCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2Z1c2UvZnVzZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZ29sZC11bnZlcnNpb25lZC1zeW1ib2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1c2UtZml4LXRoZS1yZXR1cm4tdmFsdWUtb2YtaGVscC1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnVzZS5jb25mIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlY2I3MTJiNWZmYzZkZmZkNTRmNGE0MDVjOWIzNzJkOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YmU5YzBiZmY2YWY4YzY3NzQxNDkzNWYzMTY5OWVhNWE3ZjhmNWY3OTFjZmE1MjA1YmUwMmVhMTg2Yjk3Y2UxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1JTklUU0NSSVBUX05BTUUgPSAiZnVzZSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMgUyAuIHN0b3AgMjAgMCA2IC4iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIiCi0KLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCi0KLVBBQ0tBR0VTID0rICJmdXNlLXV0aWxzLWRiZyBmdXNlLXV0aWxzIGxpYnVsb2NrbWdyIGxpYnVsb2NrbWdyLWRldiBsaWJ1bG9ja21nci1kYmciCi0KLVJSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJrZXJuZWwtbW9kdWxlLWZ1c2UgbGlidWxvY2ttZ3IgZnVzZS11dGlscyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmdXNlKi5sYSIKLQotRklMRVNfbGlidWxvY2ttZ3IgPSAiJHtsaWJkaXJ9L2xpYnVsb2NrbWdyLnNvLioiCi1GSUxFU19saWJ1bG9ja21nci1kZXYgKz0gIiR7bGliZGlyfS9saWJ1bG9jayoubGEiCi1GSUxFU19saWJ1bG9ja21nci1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlidWxvY2sqIgotCi0jIEZvcmJpZCBhdXRvLXJlbmFtaW5nIHRvIGxpYmZ1c2UtdXRpbHMKLUZJTEVTX2Z1c2UtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKLUZJTEVTX2Z1c2UtdXRpbHMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcgJHtiYXNlX3NiaW5kaXJ9Ly5kZWJ1ZyIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMtZGJnID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtiYXNlX3ByZWZpeH0vZGV2Ci0KLSAgICAjIHN5c3RlbWQgY2xhc3MgcmVtb3ZlIHRoZSBzeXN2X2luaXRkZGlyIG9ubHkgaWYgc3lzdGVtZF9zeXN0ZW1fdW5pdGRpcgotICAgICMgY29udGFpbnMgYW55dGhpbmcsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgaWYgc3lzdmluaXQgaXMgbm90IGluIERJU1RST19GRUFUVVJFUwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotICAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGZpCi0KLSAgICAjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZnVzZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJkNGMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJJbXBsZW1lbnRhdGlvbiBvZiBhIGZ1bGx5IGZ1bmN0aW9uYWwgZmlsZXN5c3RlbSBpbiBhIHVzZXJzcGFjZSBwcm9ncmFtIgorREVTQ1JJUFRJT04gPSAiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGlzIGEgc2ltcGxlIGludGVyZmFjZSBmb3IgdXNlcnNwYWNlIFwKKyAgICAgICAgICAgICAgIHByb2dyYW1zIHRvIGV4cG9ydCBhIHZpcnR1YWwgZmlsZXN5c3RlbSB0byB0aGUgTGludXgga2VybmVsLiBGVVNFIFwKKyAgICAgICAgICAgICAgIGFsc28gYWltcyB0byBwcm92aWRlIGEgc2VjdXJlIG1ldGhvZCBmb3Igbm9uIHByaXZpbGVnZWQgdXNlcnMgdG8gXAorICAgICAgICAgICAgICAgY3JlYXRlIGFuZCBtb3VudCB0aGVpciBvd24gZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFwKKyAgICAgICAgICAgICAgIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZ29sZC11bnZlcnNpb25lZC1zeW1ib2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1c2UtZml4LXRoZS1yZXR1cm4tdmFsdWUtb2YtaGVscC1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZnVzZS5jb25mIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YmQ0Y2U4MTg0NzQ1ZmQzZDAwMGNhMjY5MmFkYWNkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzI0MzJkMWFkNGY4MzNjMjBlMTNiNTdjZjQwY2U1Mjc3YTlkMzNlNDgzMjA1ZmM2M2M3ODExMWIzMzU4ODc0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAiZnVzZSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMgUyAuIHN0b3AgMjAgMCA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIiCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCisKK1BBQ0tBR0VTID0rICJmdXNlLXV0aWxzLWRiZyBmdXNlLXV0aWxzIGxpYnVsb2NrbWdyIGxpYnVsb2NrbWdyLWRldiBsaWJ1bG9ja21nci1kYmciCisKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJrZXJuZWwtbW9kdWxlLWZ1c2UgbGlidWxvY2ttZ3IgZnVzZS11dGlscyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmdXNlKi5sYSIKKworRklMRVNfbGlidWxvY2ttZ3IgPSAiJHtsaWJkaXJ9L2xpYnVsb2NrbWdyLnNvLioiCitGSUxFU19saWJ1bG9ja21nci1kZXYgKz0gIiR7bGliZGlyfS9saWJ1bG9jayoubGEiCitGSUxFU19saWJ1bG9ja21nci1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlidWxvY2sqIgorCisjIEZvcmJpZCBhdXRvLXJlbmFtaW5nIHRvIGxpYmZ1c2UtdXRpbHMKK0ZJTEVTX2Z1c2UtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKK0ZJTEVTX2Z1c2UtdXRpbHMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcgJHtiYXNlX3NiaW5kaXJ9Ly5kZWJ1ZyIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMtZGJnID0gIjEiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgTWFrZSB0aGlzIGV4cGxpY2l0IHNvIG92ZXJyaWRpbmcgYmFzZV9zYmluZGlyIHByb3BhZ2F0ZXMgcHJvcGVybHkuCisgICAgZXhwb3J0IE1PVU5UX0ZVU0VfUEFUSD0iJHtiYXNlX3NiaW5kaXJ9IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfSR7YmFzZV9wcmVmaXh9L2RldgorCisgICAgIyBzeXN0ZW1kIGNsYXNzIHJlbW92ZSB0aGUgc3lzdl9pbml0ZGRpciBvbmx5IGlmIHN5c3RlbWRfc3lzdGVtX3VuaXRkaXIKKyAgICAjIGNvbnRhaW5zIGFueXRoaW5nLCBidXQgaXQncyBub3QgbmVlZGVkIGlmIHN5c3Zpbml0IGlzIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBmaQorCisgICAgIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Z1c2UuY29uZiAke0R9JHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZAorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvMDAwMS1saWJhdS1EZWZpbmUtU1RSSVAtd2Vha2x5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC8wMDAxLWxpYmF1LURlZmluZS1TVFJJUC13ZWFrbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmZWE4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvMDAwMS1saWJhdS1EZWZpbmUtU1RSSVAtd2Vha2x5LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYmI4ODAxZmIyMWFjOGQ3M2UzYjFhMTFhODU1NWFhZjgyMjE4MmE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDUgU2VwIDIwMTcgMTA6MzY6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliYXU6IERlZmluZSBTVFJJUCB3ZWFrbHkKKworU1RSSVAgY2FuIGJlIHNldCBvbiBlbnZpcm9ubWVudCB0byB1c2UgY3Jvc3MgdmVyc2lvbiBvZiBzdHJpcCB1dGlsaXR5CitoYXJkY29kaW5nIHRvIHN0cmlwIGlzIG5vdCB3b3JraW5nIGluIGNyb3NzIGVudmlyb25tZW50CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBsaWJhdS9NYWtlZmlsZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXUvTWFrZWZpbGUgYi9saWJhdS9NYWtlZmlsZQoraW5kZXggODE1MjBhYy4uYzI1ZWVmMiAxMDA2NDQKKy0tLSBhL2xpYmF1L01ha2VmaWxlCisrKysgYi9saWJhdS9NYWtlZmlsZQorQEAgLTI1LDYgKzI1LDcgQEAgTGliU29IZHIgPSBsaWJhdS5oIHJkdS5oCisgTGliU29FeHBvcnQgPSAkKGFkZHN1ZmZpeCAuZXhwLCAkKGJhc2VuYW1lICR7TGliU29PYmp9KSkKKyBMaWJTb0V4cG9ydEVyciA9ICQoYWRkc3VmZml4IC5lcnIsICR7TGliU29FeHBvcnR9KQorIExpYlNvVmVyU2NyaXB0ID0gdmVyc2NyaXB0CisrU1RSSVAgPz0gc3RyaXAKKyAKKyBhbGw6ICR7TGliU299CisgCitAQCAtNzcsNyArNzgsNyBAQCAke0xpYlNvfS4ke0xpYlNvTWFqb3J9LiR7TGliU29NaW5vcn06ICR7TGliU29PYmp9CisgCSR7Q0N9IC0tc2hhcmVkIC1XbCwtc29uYW1lLCR7TGliU299LiR7TGliU29NYWpvcn0gXAorIAkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJHtMaWJTb1ZlclNjcmlwdH0gXAorIAkJJHtMREZMQUdTfSAtbyAkQCAkXiAke0xETElCU30KKy0Jc3RyaXAgLVIgRVhQICRACisrCSR7U1RSSVB9IC1SIEVYUCAkQAorICMJcmVhZGVsZiAtLXN5bXMgLS11c2UtZHluYW1pYyBsaWJhdS5zbworIAorIGluc3RhbGxfdWxpYjogRmlsZSA9ICR7TGliU299LiR7TGliU29NYWpvcn0uJHtMaWJTb01pbm9yfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzX3R5cGUuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvYXVmc190eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NDgwMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzX3R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTUgSnVuamlybyBSLiBPa2FqaW1hCi0gKgotICogVGhpcyBwcm9ncmFtLCBhdWZzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqLwotCi0jaWZuZGVmIF9fQVVGU19UWVBFX0hfXwotI2RlZmluZSBfX0FVRlNfVFlQRV9IX18KLQotI2RlZmluZSBBVUZTX05BTUUJImF1ZnMiCi0KLSNpZmRlZiBfX0tFUk5FTF9fCi0vKgotICogZGVmaW5lIGl0IGJlZm9yZSBpbmNsdWRpbmcgYWxsIG90aGVyIGhlYWRlcnMuCi0gKiBzY2hlZC5oIG1heSB1c2UgcHJfKiBtYWNyb3MgYmVmb3JlIGRlZmluaW5nICJjdXJyZW50Iiwgc28gZGVmaW5lIHRoZQotICogbm8tY3VycmVudCB2ZXJzaW9uIGZpcnN0LCBhbmQgcmUtZGVmaW5lIGxhdGVyLgotICovCi0jZGVmaW5lIHByX2ZtdChmbXQpCUFVRlNfTkFNRSAiICVzOiVkOiAiIGZtdCwgX19mdW5jX18sIF9fTElORV9fCi0jaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KLSN1bmRlZiBwcl9mbXQKLSNkZWZpbmUgcHJfZm10KGZtdCkgXAotCQlBVUZTX05BTUUgIiAlczolZDolLipzWyVkXTogIiBmbXQsIF9fZnVuY19fLCBfX0xJTkVfXywgXAotCQkoaW50KXNpemVvZihjdXJyZW50LT5jb21tKSwgY3VycmVudC0+Y29tbSwgY3VycmVudC0+cGlkCi0jZWxzZQotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2xpbWl0cy5oPgotCi0jZGVmaW5lIEFVRlNfVkVSU0lPTgkiMy4xOC0yMDE1MDQwNiIKLQotLyogdG9kbz8gbW92ZSB0aGlzIHRvIGxpbnV4LTIuNi4xOS9pbmNsdWRlL21hZ2ljLmggKi8KLSNkZWZpbmUgQVVGU19TVVBFUl9NQUdJQwkoJ2EnIDw8IDI0IHwgJ3UnIDw8IDE2IHwgJ2YnIDw8IDggfCAncycpCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmZGVmIENPTkZJR19BVUZTX0JSQU5DSF9NQVhfMTI3Ci10eXBlZGVmIGludDhfdCBhdWZzX2JpbmRleF90OwotI2RlZmluZSBBVUZTX0JSQU5DSF9NQVggMTI3Ci0jZWxzZQotdHlwZWRlZiBpbnQxNl90IGF1ZnNfYmluZGV4X3Q7Ci0jaWZkZWYgQ09ORklHX0FVRlNfQlJBTkNIX01BWF81MTEKLSNkZWZpbmUgQVVGU19CUkFOQ0hfTUFYIDUxMQotI2VsaWYgZGVmaW5lZChDT05GSUdfQVVGU19CUkFOQ0hfTUFYXzEwMjMpCi0jZGVmaW5lIEFVRlNfQlJBTkNIX01BWCAxMDIzCi0jZWxpZiBkZWZpbmVkKENPTkZJR19BVUZTX0JSQU5DSF9NQVhfMzI3NjcpCi0jZGVmaW5lIEFVRlNfQlJBTkNIX01BWCAzMjc2NwotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fS0VSTkVMX18KLSNpZm5kZWYgQVVGU19CUkFOQ0hfTUFYCi0jZXJyb3IgdW5rbm93biBDT05GSUdfQVVGU19CUkFOQ0hfTUFYIHZhbHVlCi0jZW5kaWYKLSNlbmRpZiAvKiBfX0tFUk5FTF9fICovCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBBVUZTX0ZTVFlQRQkJQVVGU19OQU1FCi0KLSNkZWZpbmUgQVVGU19ST09UX0lOTwkJMgotI2RlZmluZSBBVUZTX0ZJUlNUX0lOTwkJMTEKLQotI2RlZmluZSBBVUZTX1dIX1BGWAkJIi53aC4iCi0jZGVmaW5lIEFVRlNfV0hfUEZYX0xFTgkJKChpbnQpc2l6ZW9mKEFVRlNfV0hfUEZYKSAtIDEpCi0jZGVmaW5lIEFVRlNfV0hfVE1QX0xFTgkJNAotLyogYSBsaW1pdCBmb3Igcm1kaXIvcmVuYW1lIGEgZGlyIGFuZCBjb3B5dXAgKi8KLSNkZWZpbmUgQVVGU19NQVhfTkFNRUxFTgkoTkFNRV9NQVggXAotCQkJCS0gQVVGU19XSF9QRlhfTEVOICogMgkvKiBkb3VibHkgd2hpdGVvdXRlZCAqL1wKLQkJCQktIDEJCQkvKiBkb3QgKi9cCi0JCQkJLSBBVUZTX1dIX1RNUF9MRU4pCS8qIGhleCAqLwotI2RlZmluZSBBVUZTX1hJTk9fRk5BTUUJCSIuIiBBVUZTX05BTUUgIi54aW5vIgotI2RlZmluZSBBVUZTX1hJTk9fREVGUEFUSAkiL3RtcC8iIEFVRlNfWElOT19GTkFNRQotI2RlZmluZSBBVUZTX1hJTk9fREVGX1NFQwkzMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfWElOT19ERUZfVFJVTkMJNDUgLyogcGVyY2VudGFnZSAqLwotI2RlZmluZSBBVUZTX0RJUldIX0RFRgkJMwotI2RlZmluZSBBVUZTX1JEQ0FDSEVfREVGCTEwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19SRENBQ0hFX01BWAkzNjAwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19SREJMS19ERUYJCTUxMiAvKiBieXRlcyAqLwotI2RlZmluZSBBVUZTX1JESEFTSF9ERUYJCTMyCi0jZGVmaW5lIEFVRlNfV0tRX05BTUUJCUFVRlNfTkFNRSAiZCIKLSNkZWZpbmUgQVVGU19NRlNfREVGX1NFQwkzMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfTUZTX01BWF9TRUMJMzYwMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfRkhTTV9DQUNIRV9ERUZfU0VDCTMwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19QTElOS19XQVJOCQk1MCAvKiBudW1iZXIgb2YgcGxpbmtzIGluIGEgc2luZ2xlIGJ1Y2tldCAqLwotCi0vKiBwc2V1ZG8tbGluayBtYWludGVuYWNlIHVuZGVyIC9wcm9jICovCi0jZGVmaW5lIEFVRlNfUExJTktfTUFJTlRfTkFNRQkicGxpbmtfbWFpbnQiCi0jZGVmaW5lIEFVRlNfUExJTktfTUFJTlRfRElSCSJmcy8iIEFVRlNfTkFNRQotI2RlZmluZSBBVUZTX1BMSU5LX01BSU5UX1BBVEgJQVVGU19QTElOS19NQUlOVF9ESVIgIi8iIEFVRlNfUExJTktfTUFJTlRfTkFNRQotCi0jZGVmaW5lIEFVRlNfRElST1BRX05BTUUJQVVGU19XSF9QRlggIi5vcHEiIC8qIHdoaXRlb3V0ZWQgZG91Ymx5ICovCi0jZGVmaW5lIEFVRlNfV0hfRElST1BRCQlBVUZTX1dIX1BGWCBBVUZTX0RJUk9QUV9OQU1FCi0KLSNkZWZpbmUgQVVGU19CQVNFX05BTUUJCUFVRlNfV0hfUEZYIEFVRlNfTkFNRQotI2RlZmluZSBBVUZTX1BMSU5LRElSX05BTUUJQVVGU19XSF9QRlggInBsbmsiCi0jZGVmaW5lIEFVRlNfT1JQSERJUl9OQU1FCUFVRlNfV0hfUEZYICJvcnBoIgotCi0vKiBkb3VibHkgd2hpdGVvdXRlZCAqLwotI2RlZmluZSBBVUZTX1dIX0JBU0UJCUFVRlNfV0hfUEZYIEFVRlNfQkFTRV9OQU1FCi0jZGVmaW5lIEFVRlNfV0hfUExJTktESVIJQVVGU19XSF9QRlggQVVGU19QTElOS0RJUl9OQU1FCi0jZGVmaW5lIEFVRlNfV0hfT1JQSERJUgkJQVVGU19XSF9QRlggQVVGU19PUlBIRElSX05BTUUKLQotLyogYnJhbmNoIHBlcm1pc3Npb25zIGFuZCBhdHRyaWJ1dGVzICovCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JXCQkicnciCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JPCQkicm8iCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JSCQkicnIiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0NPT19SRUcJImNvb19yZWciCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0NPT19BTEwJImNvb19hbGwiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0ZIU00JImZoc20iCi0jZGVmaW5lIEFVRlNfQlJBVFRSX1VOUElOCSJ1bnBpbiIKLSNkZWZpbmUgQVVGU19CUkFUVFJfSUNFWAkiaWNleCIKLSNkZWZpbmUgQVVGU19CUkFUVFJfSUNFWF9TRUMJImljZXhzZWMiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0lDRVhfU1lTCSJpY2V4c3lzIgotI2RlZmluZSBBVUZTX0JSQVRUUl9JQ0VYX1RSCSJpY2V4dHIiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0lDRVhfVVNSCSJpY2V4dXNyIgotI2RlZmluZSBBVUZTX0JSQVRUUl9JQ0VYX09USAkiaWNleG90aCIKLSNkZWZpbmUgQVVGU19CUlJBVFRSX1dICQkid2giCi0jZGVmaW5lIEFVRlNfQlJXQVRUUl9OTFdICSJub2x3aCIKLSNkZWZpbmUgQVVGU19CUldBVFRSX01PTwkibW9vIgotCi0jZGVmaW5lIEF1QnJQZXJtX1JXCQkxCQkvKiB3cml0YWJsZSwgaGFyZGxpbmthYmxlIHdoICovCi0jZGVmaW5lIEF1QnJQZXJtX1JPCQkoMSA8PCAxKQkvKiByZWFkb25seSAqLwotI2RlZmluZSBBdUJyUGVybV9SUgkJKDEgPDwgMikJLyogbmF0aXZlbHkgcmVhZG9ubHkgKi8KLSNkZWZpbmUgQXVCclBlcm1fTWFzawkJKEF1QnJQZXJtX1JXIHwgQXVCclBlcm1fUk8gfCBBdUJyUGVybV9SUikKLQotI2RlZmluZSBBdUJyQXR0cl9DT09fUkVHCSgxIDw8IDMpCS8qIGNvcHktdXAgb24gb3BlbiAqLwotI2RlZmluZSBBdUJyQXR0cl9DT09fQUxMCSgxIDw8IDQpCi0jZGVmaW5lIEF1QnJBdHRyX0NPT19NYXNrCShBdUJyQXR0cl9DT09fUkVHIHwgQXVCckF0dHJfQ09PX0FMTCkKLQotI2RlZmluZSBBdUJyQXR0cl9GSFNNCQkoMSA8PCA1KQkvKiBmaWxlLWJhc2VkIGhzbSAqLwotI2RlZmluZSBBdUJyQXR0cl9VTlBJTgkJKDEgPDwgNikJLyogcmVuYW1lLWFibGUgdG9wIGRpciBvZgotCQkJCQkJICAgYnJhbmNoLiBtZWFuaW5nbGVzcyBzaW5jZQotCQkJCQkJICAgbGludXgtMy4xOC1yYzEgKi8KLQotLyogaWdub3JlIGVycm9yIGluIGNvcHlpbmcgWEFUVFIgKi8KLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TRUMJKDEgPDwgNykKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TWVMJKDEgPDwgOCkKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9UUgkoMSA8PCA5KQotI2RlZmluZSBBdUJyQXR0cl9JQ0VYX1VTUgkoMSA8PCAxMCkKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9PVEgJKDEgPDwgMTEpCi0jZGVmaW5lIEF1QnJBdHRyX0lDRVgJCShBdUJyQXR0cl9JQ0VYX1NFQwlcCi0JCQkJIHwgQXVCckF0dHJfSUNFWF9TWVMJXAotCQkJCSB8IEF1QnJBdHRyX0lDRVhfVFIJXAotCQkJCSB8IEF1QnJBdHRyX0lDRVhfVVNSCVwKLQkJCQkgfCBBdUJyQXR0cl9JQ0VYX09USCkKLQotI2RlZmluZSBBdUJyUkF0dHJfV0gJCSgxIDw8IDEyKQkvKiB3aGl0ZW91dC1hYmxlICovCi0jZGVmaW5lIEF1QnJSQXR0cl9NYXNrCQlBdUJyUkF0dHJfV0gKLQotI2RlZmluZSBBdUJyV0F0dHJfTm9MaW5rV0gJKDEgPDwgMTMpCS8qIHVuLWhhcmRsaW5rYWJsZSB3aGl0ZW91dHMgKi8KLSNkZWZpbmUgQXVCcldBdHRyX01PTwkJKDEgPDwgMTQpCS8qIG1vdmUtdXAgb24gb3BlbiAqLwotI2RlZmluZSBBdUJyV0F0dHJfTWFzawkJKEF1QnJXQXR0cl9Ob0xpbmtXSCB8IEF1QnJXQXR0cl9NT08pCi0KLSNkZWZpbmUgQXVCckF0dHJfQ01PT19NYXNrCShBdUJyQXR0cl9DT09fTWFzayB8IEF1QnJXQXR0cl9NT08pCi0KLS8qICN3YXJuaW5nIHRlc3QgdXNlcnNwYWNlICovCi0jaWZkZWYgX19LRVJORUxfXwotI2lmbmRlZiBDT05GSUdfQVVGU19GSFNNCi0jdW5kZWYgQXVCckF0dHJfRkhTTQotI2RlZmluZSBBdUJyQXR0cl9GSFNNCQkwCi0jZW5kaWYKLSNpZm5kZWYgQ09ORklHX0FVRlNfWEFUVFIKLSN1bmRlZglBdUJyQXR0cl9JQ0VYCi0jZGVmaW5lIEF1QnJBdHRyX0lDRVgJCTAKLSN1bmRlZglBdUJyQXR0cl9JQ0VYX1NFQwotI2RlZmluZSBBdUJyQXR0cl9JQ0VYX1NFQwkwCi0jdW5kZWYJQXVCckF0dHJfSUNFWF9TWVMKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TWVMJMAotI3VuZGVmCUF1QnJBdHRyX0lDRVhfVFIKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9UUgkwCi0jdW5kZWYJQXVCckF0dHJfSUNFWF9VU1IKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9VU1IJMAotI3VuZGVmCUF1QnJBdHRyX0lDRVhfT1RICi0jZGVmaW5lIEF1QnJBdHRyX0lDRVhfT1RICTAKLSNlbmRpZgotI2VuZGlmCi0KLS8qIHRoZSBsb25nZXN0IGNvbWJpbmF0aW9uICovCi0vKiBBVUZTX0JSQVRUUl9JQ0VYIGFuZCBBVUZTX0JSQVRUUl9JQ0VYX1RSIGRvbid0IGFmZmVjdCBoZXJlICovCi0jZGVmaW5lIEF1QnJQZXJtU3RyU3oJc2l6ZW9mKEFVRlNfQlJQRVJNX1JXCQkJXAotCQkJICAgICAgICIrIiBBVUZTX0JSQVRUUl9DT09fUkVHCQlcCi0JCQkgICAgICAgIisiIEFVRlNfQlJBVFRSX0ZIU00JCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfVU5QSU4JCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9TRUMJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9TWVMJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9VU1IJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9PVEgJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUldBVFRSX05MV0gpCi0KLXR5cGVkZWYgc3RydWN0IHsKLQljaGFyIGFbQXVCclBlcm1TdHJTel07Ci19IGF1X2JyX3Blcm1fc3RyX3Q7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGF1X2JyX3dyaXRhYmxlKGludCBicnBlcm0pCi17Ci0JcmV0dXJuIGJycGVybSAmIEF1QnJQZXJtX1JXOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBhdV9icl93aGFibGUoaW50IGJycGVybSkKLXsKLQlyZXR1cm4gYnJwZXJtICYgKEF1QnJQZXJtX1JXIHwgQXVCclJBdHRyX1dIKTsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgYXVfYnJfd2hfbGlua2FibGUoaW50IGJycGVybSkKLXsKLQlyZXR1cm4gIShicnBlcm0gJiBBdUJyV0F0dHJfTm9MaW5rV0gpOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBhdV9icl9jbW9vKGludCBicnBlcm0pCi17Ci0JcmV0dXJuIGJycGVybSAmIEF1QnJBdHRyX0NNT09fTWFzazsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgYXVfYnJfZmhzbShpbnQgYnJwZXJtKQotewotCXJldHVybiBicnBlcm0gJiBBdUJyQXR0cl9GSFNNOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIGlvY3RsICovCi1lbnVtIHsKLQkvKiByZWFkZGlyIGluIHVzZXJzcGFjZSAqLwotCUF1Q3RsX1JEVSwKLQlBdUN0bF9SRFVfSU5PLAotCi0JQXVDdGxfV0JSX0ZELAkvKiBwYXRoY29uZiB3cmFwcGVyICovCi0JQXVDdGxfSUJVU1ksCS8qIGJ1c3kgaW5vZGUgKi8KLQlBdUN0bF9NVkRPV04sCS8qIG1vdmUtZG93biAqLwotCUF1Q3RsX0JSLAkvKiBpbmZvIGFib3V0IGJyYW5jaGVzICovCi0JQXVDdGxfRkhTTV9GRAkvKiBjb25uZWN0aW9uIGZvciBmaHNtICovCi19OwotCi0vKiBib3Jyb3dlZCBmcm9tIGxpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmggKi8KLSNpZm5kZWYgQUxJR04KLSNkZWZpbmUgQUxJR04oeCwgYSkJCV9fQUxJR05fTUFTSyh4LCAodHlwZW9mKHgpKShhKS0xKQotI2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaykJKCgoeCkrKG1hc2spKSZ+KG1hc2spKQotI2VuZGlmCi0KLS8qIGJvcnJvd2VkIGZyb20gbGludXgvaW5jbHVkZS9saW51eC9jb21waWxlci1nY2MzLmggKi8KLSNpZm5kZWYgX19hbGlnbmVkCi0jZGVmaW5lIF9fYWxpZ25lZCh4KQkJCV9fYXR0cmlidXRlX18oKGFsaWduZWQoeCkpKQotI2VuZGlmCi0KLSNpZmRlZiBfX0tFUk5FTF9fCi0jaWZuZGVmIF9fcGFja2VkCi0jZGVmaW5lIF9fcGFja2VkCQkJX19hdHRyaWJ1dGVfXygocGFja2VkKSkKLSNlbmRpZgotI2VuZGlmCi0KLXN0cnVjdCBhdV9yZHVfY29va2llIHsKLQl1aW50NjRfdAloX3BvczsKLQlpbnQxNl90CQliaW5kZXg7Ci0JdWludDhfdAkJZmxhZ3M7Ci0JdWludDhfdAkJcGFkOwotCXVpbnQzMl90CWdlbmVyYXRpb247Ci19IF9fYWxpZ25lZCg4KTsKLQotc3RydWN0IGF1X3JkdV9lbnQgewotCXVpbnQ2NF90CWlubzsKLQlpbnQxNl90CQliaW5kZXg7Ci0JdWludDhfdAkJdHlwZTsKLQl1aW50OF90CQlubGVuOwotCXVpbnQ4X3QJCXdoOwotCWNoYXIJCW5hbWVbMF07Ci19IF9fYWxpZ25lZCg4KTsKLQotc3RhdGljIGlubGluZSBpbnQgYXVfcmR1X2xlbihpbnQgbmxlbikKLXsKLQkvKiBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyBOVUxMICovCi0JcmV0dXJuIEFMSUdOKHNpemVvZihzdHJ1Y3QgYXVfcmR1X2VudCkgKyBubGVuICsgMSwKLQkJICAgICBzaXplb2YodWludDY0X3QpKTsKLX0KLQotdW5pb24gYXVfcmR1X2VudF91bCB7Ci0Jc3RydWN0IGF1X3JkdV9lbnQJKmU7Ci0JdWludDY0X3QJCQl1bDsKLX07Ci0KLWVudW0gewotCUF1ZnNDdGxSZHVWX1NaLAotCUF1ZnNDdGxSZHVWX0VuZAotfTsKLQotc3RydWN0IGF1ZnNfcmR1IHsKLQkvKiBpbnB1dCAqLwotCXVuaW9uIHsKLQkJdWludDY0X3QJc3o7CS8qIEF1Q3RsX1JEVSAqLwotCQl1aW50NjRfdAluZW50OwkvKiBBdUN0bF9SRFVfSU5PICovCi0JfTsKLQl1bmlvbiBhdV9yZHVfZW50X3VsCWVudDsKLQl1aW50MTZfdAkJdmVyaWZ5W0F1ZnNDdGxSZHVWX0VuZF07Ci0KLQkvKiBpbnB1dC9vdXRwdXQgKi8KLQl1aW50MzJfdAkJYmxrOwotCi0JLyogb3V0cHV0ICovCi0JdW5pb24gYXVfcmR1X2VudF91bAl0YWlsOwotCS8qIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIHdlcmUgYWRkZWQgaW4gYSBzaW5nbGUgY2FsbCAqLwotCXVpbnQ2NF90CQlyZW50OwotCXVpbnQ4X3QJCQlmdWxsOwotCXVpbnQ4X3QJCQlzaHdoOwotCi0Jc3RydWN0IGF1X3JkdV9jb29raWUJY29va2llOwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RydWN0IGF1ZnNfd2JyX2ZkIHsKLQl1aW50MzJfdAlvZmxhZ3M7Ci0JaW50MTZfdAkJYnJpZDsKLX0gX19hbGlnbmVkKDgpOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXN0cnVjdCBhdWZzX2lidXN5IHsKLQl1aW50NjRfdAlpbm8sIGhfaW5vOwotCWludDE2X3QJCWJpbmRleDsKLX0gX19hbGlnbmVkKDgpOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIGVycm9yIGNvZGUgZm9yIG1vdmUtZG93biAqLwotLyogdGhlIGFjdHVhbCBtZXNzYWdlIHN0cmluZ3MgYXJlIGltcGxlbWVudGVkIGluIGF1ZnMtdXRpbC5naXQgKi8KLWVudW0gewotCUVBVV9NVkRPV05fT1BBUVVFID0gMSwKLQlFQVVfTVZET1dOX1dISVRFT1VULAotCUVBVV9NVkRPV05fVVBQRVIsCi0JRUFVX01WRE9XTl9CT1RUT00sCi0JRUFVX01WRE9XTl9OT1VQUEVSLAotCUVBVV9NVkRPV05fTk9MT1dFUkJSLAotCUVBVV9MYXN0Ci19OwotCi0vKiBmbGFncyBmb3IgbW92ZS1kb3duICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0RNU0cJMQotI2RlZmluZSBBVUZTX01WRE9XTl9PV0xPV0VSCSgxIDw8IDEpCS8qIG92ZXJ3cml0ZSBsb3dlciAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9LVVBQRVIJKDEgPDwgMikJLyoga2VlcCB1cHBlciAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9ST0xPV0VSCSgxIDw8IDMpCS8qIGRvIGV2ZW4gaWYgbG93ZXIgaXMgUk8gKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fUk9MT1dFUl9SCSgxIDw8IDQpCS8qIGRpZCBvbiBsb3dlciBSTyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9ST1VQUEVSCSgxIDw8IDUpCS8qIGRvIGV2ZW4gaWYgdXBwZXIgaXMgUk8gKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fUk9VUFBFUl9SCSgxIDw8IDYpCS8qIGRpZCBvbiB1cHBlciBSTyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9CUklEX1VQUEVSCSgxIDw8IDcpCS8qIHVwcGVyIGJyaWQgKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fQlJJRF9MT1dFUgkoMSA8PCA4KQkvKiBsb3dlciBicmlkICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0ZIU01fTE9XRVIJKDEgPDwgOSkJLyogZmluZCBmaHNtIGF0dHIgZm9yIGxvd2VyICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX1NURlMJKDEgPDwgMTApCS8qIHJlcS4gc3RmcyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9TVEZTX0ZBSUxFRAkoMSA8PCAxMSkJLyogb3V0cHV0OiBzdGZzIGlzIHVudXNhYmxlICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0JPVFRPTQkoMSA8PCAxMikJLyogb3V0cHV0OiBubyBtb3JlIGxvd2VycyAqLwotCi0vKiBpbmRleCBmb3IgbW92ZS1kb3duICovCi1lbnVtIHsKLQlBVUZTX01WRE9XTl9VUFBFUiwKLQlBVUZTX01WRE9XTl9MT1dFUiwKLQlBVUZTX01WRE9XTl9OQVJSQVkKLX07Ci0KLS8qCi0gKiBhZGRpdGlvbmFsIGluZm8gb2YgbW92ZS1kb3duCi0gKiBudW1iZXIgb2YgZnJlZSBibG9ja3MgYW5kIGlub2Rlcy4KLSAqIHN1YnNldCBvZiBzdHJ1Y3Qga3N0YXRmcywgYnV0IHNtYWxsZXIgYW5kIGFsd2F5cyA2NGJpdC4KLSAqLwotc3RydWN0IGF1ZnNfc3RmcyB7Ci0JdWludDY0X3QJZl9ibG9ja3M7Ci0JdWludDY0X3QJZl9iYXZhaWw7Ci0JdWludDY0X3QJZl9maWxlczsKLQl1aW50NjRfdAlmX2ZmcmVlOwotfTsKLQotc3RydWN0IGF1ZnNfc3RiciB7Ci0JaW50MTZfdAkJCWJyaWQ7CS8qIG9wdGlvbmFsIGlucHV0ICovCi0JaW50MTZfdAkJCWJpbmRleDsJLyogb3V0cHV0ICovCi0Jc3RydWN0IGF1ZnNfc3RmcwlzdGZzOwkvKiBvdXRwdXQgd2hlbiBBVUZTX01WRE9XTl9TVEZTIHNldCAqLwotfSBfX2FsaWduZWQoOCk7Ci0KLXN0cnVjdCBhdWZzX212ZG93biB7Ci0JdWludDMyX3QJCWZsYWdzOwkJCS8qIGlucHV0L291dHB1dCAqLwotCXN0cnVjdCBhdWZzX3N0YnIJc3RicltBVUZTX01WRE9XTl9OQVJSQVldOyAvKiBpbnB1dC9vdXRwdXQgKi8KLQlpbnQ4X3QJCQlhdV9lcnJubzsJCS8qIG91dHB1dCAqLwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotdW5pb24gYXVmc19icmluZm8gewotCS8qIFBBVEhfTUFYIG1heSBkaWZmZXIgYmV0d2VlbiBrZXJuZWwtc3BhY2UgYW5kIHVzZXItc3BhY2UgKi8KLQljaGFyCV9zcGFjZXJbNDA5Nl07Ci0Jc3RydWN0IHsKLQkJaW50MTZfdAlpZDsKLQkJaW50CXBlcm07Ci0JCWNoYXIJcGF0aFswXTsKLQl9OwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBBdUN0bFR5cGUJCSdBJwotI2RlZmluZSBBVUZTX0NUTF9SRFUJCV9JT1dSKEF1Q3RsVHlwZSwgQXVDdGxfUkRVLCBzdHJ1Y3QgYXVmc19yZHUpCi0jZGVmaW5lIEFVRlNfQ1RMX1JEVV9JTk8JX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9SRFVfSU5PLCBzdHJ1Y3QgYXVmc19yZHUpCi0jZGVmaW5lIEFVRlNfQ1RMX1dCUl9GRAkJX0lPVyhBdUN0bFR5cGUsIEF1Q3RsX1dCUl9GRCwgXAotCQkJCSAgICAgc3RydWN0IGF1ZnNfd2JyX2ZkKQotI2RlZmluZSBBVUZTX0NUTF9JQlVTWQkJX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9JQlVTWSwgc3RydWN0IGF1ZnNfaWJ1c3kpCi0jZGVmaW5lIEFVRlNfQ1RMX01WRE9XTgkJX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9NVkRPV04sIFwKLQkJCQkgICAgICBzdHJ1Y3QgYXVmc19tdmRvd24pCi0jZGVmaW5lIEFVRlNfQ1RMX0JSSU5GTwkJX0lPVyhBdUN0bFR5cGUsIEF1Q3RsX0JSLCB1bmlvbiBhdWZzX2JyaW5mbykKLSNkZWZpbmUgQVVGU19DVExfRkhTTV9GRAlfSU9XKEF1Q3RsVHlwZSwgQXVDdGxfRkhTTV9GRCwgaW50KQotCi0jZW5kaWYgLyogX19BVUZTX1RZUEVfSF9fICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCmluZGV4IDUwZDhiOTAuLjJlODU1ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCkBAIC00LDIyICs0LDI0IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCiAKLURFUEVORFMgPSAiYXVmcy11dGlsLW5hdGl2ZSIKK0RFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSBhdWZzLXV0aWwtbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgogCi1TUkNSRVYgPSAiYjU5YTIxNjdhMTM1Y2VlYTM3NTgxZWUzMzk5N2RlMjc4Y2Y4YTMwYSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvYXVmcy9hdWZzLXV0aWw7cHJvdG9jb2w9Z2l0O2JyYW5jaD1hdWZzMy4xNCBcCitTUkNSRVYgPSAiODlhZmIxODA2YzNkMmVlZDhkYjI2NjZhZTI1NGI3NzUxOGFlM2NlYiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvYXVmcy9hdWZzLXV0aWw7cHJvdG9jb2w9Z2l0O2JyYW5jaD1hdWZzNC40IFwKKyAgICAgICAgICAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NmanJvL2F1ZnM0LWxpbnV4L2F1ZnM0LjQvaW5jbHVkZS91YXBpL2xpbnV4L2F1ZnNfdHlwZS5oO25hbWU9YXVmc190eXBlIFwKICAgICAgICAgICAgZmlsZTovL2F1ZnMtdXRpbC1kb24tdC1zdHJpcC1leGVjdXRhYmxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hdWZzLXV0aWwtYWRkLXRvb2wtY29uY2VwdC10by1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1ZnNfdHlwZS5oIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaCBcCiAiCitTUkNfVVJJW2F1ZnNfdHlwZS5tZDVzdW1dID0gImY3YjRhMjU1ZGNiNTVmZTdiMDk2N2Y1ZjU5YjQ0ZjE5IgorU1JDX1VSSVthdWZzX3R5cGUuc2hhMjU2c3VtXSA9ICI4NWJjOGU0YzFhOTRhN2Q1MjZjMzgyZTRiMDQ3YjQyNTZjYWI4YzRhNjVmYzAzOTYyOTE3MDdhZDlhMzI3YTE4IgogCi1QViA9ICIzLjE0K2dpdCR7U1JDUFZ9IgorUFYgPSAiNC40K2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBleHBvcnQgSE9TVENDID0gIiR7QlVJTERfQ0N9IgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICMgUmVwbGFjZSBzYmluLGJpbiBwYXRocyB3aXRoIGJpdGJha2UgZW52aXJvbm1lbnQKICAgIHNlZCAtaSAtZSAncztpbnN0YWxsX3NiaW46IFRndCA9ICR7REVTVERJUn0vc2JpbjtpbnN0YWxsX3NiaW46IFRndCA9ICR7REVTVERJUn0vJHtiYXNlX3NiaW5kaXJ9OycgXApAQCAtMzAsMTEgKzMyLDEyIEBACiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKICAgICBpbnN0YWxsIC1kICR7U30vaW5jbHVkZS9saW51eC8KICAgICBjcCAke1dPUktESVJ9L2F1ZnNfdHlwZS5oICR7U30vaW5jbHVkZS9saW51eC8KKyAgICBzZWQgLWkgLWUgJ3M7X191c2VyOzsnICR7U30vaW5jbHVkZS9saW51eC9hdWZzX3R5cGUuaAogfQogCiBkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CiAgICAgZm9yIGkgaW4gdmVyIGMyc2ggYzJ0bWFjOyBkbwotICAgICAgICBjcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vYXVmcy11dGlsLSR7UFZ9LyRpIC4vCisgICAgICAgIGNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9hdWZzLXV0aWwtJHtQVn0vJGkgJHtCfQogICAgIGRvbmUKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZG1hcGkvZG1hcGlfMi4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZG1hcGkvZG1hcGlfMi4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzJmNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2RtYXBpXzIuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmdW5jdGlvbnMgdG8gZ2V0IGF0dHJpYnV0ZSBiaXRzIgotREVTQ1JJUFRJT04gPSAiVGhlIERhdGEgTWFuYWdlbWVudCBBUEkgKERNQVBJL1hEU00pIGFsbG93cyBpbXBsZW1lbnRhdGlvbiBcCi0gICAgICAgICAgICAgICBvZiBoaWVyYXJjaGljYWwgc3RvcmFnZSBtYW5hZ2VtZW50IHNvZnR3YXJlIHdpdGggbm8ga2VybmVsIFwKLSAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgYXMgd2VsbCBhcyBoaWdoLXBlcmZvcm1hbmNlIGR1bXAgcHJvZ3JhbXMgXAotICAgICAgICAgICAgICAgd2l0aG91dCByZXF1aXJpbmcgInJhdyIgYWNjZXNzIHRvIHRoZSBkaXNrIGFuZCBrbm93bGVkZ2UgXAotICAgICAgICAgICAgICAgb2YgZmlsZXN5c3RlbSBzdHJ1Y3R1cmVzLlRoaXMgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIGJ5IFwKLSAgICAgICAgICAgICAgIHRoZSBsaWJkbSBsaWJyYXJ5LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTY3OGVkZmU4ZGU5YmU5NTY0ZDIzNzYxYWUyZmE3OTQiCi1ERVBFTkRTID0gInhmc3Byb2dzIgotCi1TUkNfVVJJID0gImZ0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcy9jbWRfdGFycy9kbWFwaS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kbWFwaV9hYXJjaDY0X2NvbmZpZ3VyZV9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2Q4MjVkNGUxNDFjMTYwMTEzNjdlMGEwZGQ5OGM5YzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE4ZTM0ZjQ3Mzc0ZjZhZGY3YzE2NDk5M2MyNmRmMzY5ODZhMDA5Yjg2YWEwMDRlZjk0NDQxMDI2NTNhZWE2OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotRVhUUkFfT0VNQUtFICs9ICJMSUJUT09MPSIke0hPU1RfU1lTfS1saWJ0b29sIC0tdGFnPUNDIiBWPTEiCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGV4cG9ydCBESVNUX1JPT1Q9JHtEfQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWRldiBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0KLX0KLQotUE5CTEFDS0xJU1RbZG1hcGldID89ICJEZXBlbmRzIG9uIGJyb2tlbiB4ZnNwcm9ncyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL2RtYXBpX2FhcmNoNjRfY29uZmlndXJlX3N1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9kbWFwaS9maWxlcy9kbWFwaV9hYXJjaDY0X2NvbmZpZ3VyZV9zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODc1M2I3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL2RtYXBpX2FhcmNoNjRfY29uZmlndXJlX3N1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1BZGQgY29uZmlnIHN1cHBvcnQgdG8gY3Jvc3MgY29tcGlsZSBkbWFwaSBmb3IgCi1hYXJjaDY0IGFyY2hpdGVjdHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotCi0tLS0gZG1hcGktMi4yLjEyX29yZy9jb25maWcuc3ViCTIwMTItMTItMTIgMjM6MDM6MDUuMDAwMDAwMDAwICswNTMwCi0rKysgZG1hcGktMi4yLjEyL2NvbmZpZy5zdWIJMjAxNC0wMy0yNCAxNjo0OTo1Ni43NzE5OTM1MjMgKzA1MzAKLUBAIC0yNDYsNiArMjQ2LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAotIAl8IGFtMzNfMi4wIFwKLSAJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCi0rCXwgYWFyY2g2NCB8IGFhcmNoNjRiZSBcCi0gCXwgYmZpbiBcCi0gCXwgYzR4IHwgY2xpcHBlciBcCi0gCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKLUBAIC0zMjYsNiArMzI3LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IGFscGhhNjQtKiB8IGFscGhhNjRldls0LThdLSogfCBhbHBoYTY0ZXY1Ni0qIHwgYWxwaGE2NGV2Nls3OF0tKiBcCi0gCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCi0gCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCi0rCXwgYWFyY2g2NC0qIHwgYWFyY2g2NGJlLSogXAotIAl8IGF2ci0qIHwgYXZyMzItKiBcCi0gCXwgYmZpbi0qIHwgYnMyMDAwLSogXAotIAl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAotLS0tIGRtYXBpLTIuMi4xMl9vcmcvY29uZmlnLmd1ZXNzCTIwMTItMTItMTIgMjM6MDM6MDUuMDAwMDAwMDAwICswNTMwCi0rKysgZG1hcGktMi4yLjEyL2NvbmZpZy5ndWVzcwkyMDE0LTAzLTI0IDE2OjQ5OjU2Ljc3MTk5MzUyMyArMDUzMAotQEAgLTg2NCw2ICs4NjQsOSBAQCBFT0YKLSAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKLSAJZmkKLSAJZXhpdCA7OwotKyAgICBhYXJjaDY0KjpMaW51eDoqOiopCi0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwlleGl0OzsKLSAgICAgYXZyMzIqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0gCWV4aXQgOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9kbWFwaS9maWxlcy9yZW1vdmUtaW5zdGFsbC1hcy11c2VyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzYxZGIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotcmVtb3ZlIGluc3RhbGwgYXMgdXNlcgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGluY2x1ZGUvYnVpbGRtYWNyb3MgfCAgMiArLQotIGluY2x1ZGUvaW5zdGFsbC1zaCAgfCA5NSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2J1aWxkbWFjcm9zIGIvaW5jbHVkZS9idWlsZG1hY3JvcwotaW5kZXggN2EwMTg4MC4uMDg0MGQ1NSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnVpbGRtYWNyb3MKLSsrKyBiL2luY2x1ZGUvYnVpbGRtYWNyb3MKLUBAIC0zMCw3ICszMCw3IEBAIE9CSkVDVFMgPSAkKEFTRklMRVM6LnM9Lm8pIFwKLSAJICAkKExGSUxFUzoubD0ubykgXAotIAkgICQoWUZJTEVTOiUueT0lLnRhYi5vKQotIAotLUlOU1RBTEwJPSAkKFRPUERJUikvaW5zdGFsbC1zaCAtbyAkKFBLR19VU0VSKSAtZyAkKFBLR19HUk9VUCkKLStJTlNUQUxMCT0gJChUT1BESVIpL2luc3RhbGwtc2gKLSAKLSBJTUFHRVNfRElSID0gJChUT1BESVIpL2FsbC1pbWFnZXMKLSBESVNUX0RJUiA9ICQoVE9QRElSKS9kaXN0Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9pbnN0YWxsLXNoIGIvaW5jbHVkZS9pbnN0YWxsLXNoCi1pbmRleCBjOTUyYTcxLi5iOWQ2NmY3IDEwMDc1NQotLS0tIGEvaW5jbHVkZS9pbnN0YWxsLXNoCi0rKysgYi9pbmNsdWRlL2luc3RhbGwtc2gKLUBAIC0yNCwxMSArMjQsMTEgQEAKLSAjICAgICAgIHNldCAgICAgICAgICAgc2V0ICAgICAgfCAgICB5ZXMgICAgICAgIHllcwotICMKLSBfdXNhZ2UoKSB7Ci0tICAgIGVjaG8gIlVzYWdlOiAkcHJvZyBbLW8gb3duZXJdIFstZyBncm91cF0gWy1tIG1vZGVdIC1kIGRpcmVjdG9yeSIKLS0gICAgZWNobyAib3IgICAgICRwcm9nIFstRF0gWy1vIG93bmVyXSBbLWcgZ3JvdXBdIFstbSBtb2RlXSBmaWxlIGRpcmVjdG9yeS9maWxlIgotLSAgICBlY2hvICJvciAgICAgJHByb2cgWy1vIG93bmVyXSBbLWcgZ3JvdXBdIFstbSBtb2RlXSBmaWxlIFtmaWxlIC4uLl0gZGlyZWN0b3J5IgotKyAgICBlY2hvICJVc2FnZTogJHByb2cgWy1tIG1vZGVdIC1kIGRpcmVjdG9yeSIKLSsgICAgZWNobyAib3IgICAgICRwcm9nIFstbSBtb2RlXSBmaWxlIGRpcmVjdG9yeS9maWxlIgotKyAgICBlY2hvICJvciAgICAgJHByb2cgWy1tIG1vZGVdIGZpbGUgW2ZpbGUgLi4uXSBkaXJlY3RvcnkiCi0gICAgIGVjaG8gIm9yICAgICAkcHJvZyAtUyBmaWxlIHRhcmdldCAgKGNyZWF0ZXMgXCJ0YXJnZXRcIiBzeW1saW5rKSIKLS0gICAgZWNobyAib3IgICAgICRwcm9nIC1UIGx0X2FyZyBbLW8gb3duZXJdIFstZyBncm91cF0gWy1tIG1vZGVdIGxpYnRvb2wubGFpIGRpcmVjdG9yeSIKLSsgICAgZWNobyAib3IgICAgICRwcm9nIC1UIGx0X2FyZyBbLW0gbW9kZV0gbGlidG9vbC5sYWkgZGlyZWN0b3J5IgotICAgICBlY2hvICIiCi0gICAgIGVjaG8gIlRoZSBcJERJU1RfTUFOSUZFU1QgYW5kIFwkRElTVF9ST09UIGVudmlyb25tZW50IHZhcmlhYmxlcyBhZmZlY3QgdGhlIgotICAgICBlY2hvICJiZWhhdmlvdXIgb2YgdGhpcyBjb21tYW5kIC0gc2VlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQuIgotQEAgLTM4LDMyICszOCw2IEBAIF91c2FnZSgpIHsKLSAgICAgZXhpdCAxCi0gfQotIAotLV9jaG93biAoKQotLXsKLS0gICAgX3N0PTI1NQotLSAgICBpZiBbICQjIC1lcSAzIF0gOyB0aGVuCi0tCWNob3duICQxOiQyICQzCi0tCV9zdD0kPwotLQlpZiBbICRfc3QgLW5lIDAgXSA7IHRoZW4KLS0JICAgIGlmIFsgJFJFQUxfVUlEICE9ICcwJyBdIDsgdGhlbgotLQkJaWYgWyAhIC1mICRESVNUX1JPT1QvLmNob3duLnF1aWV0IF0gOyB0aGVuCi0tCQkgICAgZWNobyAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nCi0tCQkgICAgZWNobyBPd25lcnNoaXAgb2YgZmlsZXMgdW5kZXIgJHtESVNUX1JPT1Q6LS99Ci0tCQkgICAgZWNobyBjYW5ub3QgYmUgY2hhbmdlZAotLQkJICAgIGVjaG8gJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwotLQkJICAgIGlmIFsgLW4gIiRESVNUX1JPT1QiIF0gOyB0aGVuCi0tCQkJdG91Y2ggJERJU1RfUk9PVC8uY2hvd24ucXVpZXQKLS0JCSAgICBmaQotLQkJZmkKLS0JICAgICAgIF9zdD0wCi0tCSAgICBmaSAgICAgCi0tCWZpCi0tICAgIGZpCi0tCi0tICAgIHJldHVybiAkX3N0Ci0tfQotLQotLQotIF9tYW5pZmVzdCAoKQotIHsgCi0gICAgIGVjaG8gJCogfCBzZWQgLWUgJ3MvXC9cLy9cLy9nJyA+PiR7RElTVF9NQU5JRkVTVDotL2Rldi9udWxsfQotQEAgLTc3LDkgKzUxLDYgQEAgU2ZsYWc9ZmFsc2UKLSBUZmxhZz1mYWxzZQotIERJUk1PREU9NzU1Ci0gRklMRU1PREU9NjQ0Ci0tT1dORVI9YGlkIC11YAotLUdST1VQPWBpZCAtZ2AKLS1SRUFMX1VJRD0kT1dORVIKLSAKLSAjIGRlZmF1bHQgaXMgdG8gaW5zdGFsbCBhbmQgZG9uJ3QgYXBwZW5kIG1hbmlmZXN0Ci0gSU5TVEFMTD10cnVlCi1AQCAtOTQsMjQgKzY1LDE2IEBAIE1BTklGRVNUPToKLSAKLSBpZiAkSU5TVEFMTAotIHRoZW4KLS0gICAgQ1A9Y3A7IExOPWxuOyBNS0RJUj1ta2RpcjsgQ0hNT0Q9Y2htb2Q7IENIT1dOPV9jaG93bgotKyAgICBDUD1jcDsgTE49bG47IE1LRElSPW1rZGlyOyBDSE1PRD1jaG1vZDsKLSBlbHNlCi0tICAgIENQPXRydWU7IExOPXRydWU7IE1LRElSPXRydWU7IENITU9EPXRydWU7IENIT1dOPXRydWUKLSsgICAgQ1A9dHJ1ZTsgTE49dHJ1ZTsgTUtESVI9dHJ1ZTsgQ0hNT0Q9dHJ1ZTsKLSBmaQotIAotLVsgLW4gIiRESVNUX1JPT1QiIC1hICRSRUFMX1VJRCAtbmUgMCBdICYmIENIT1dOPXRydWUKLS0KLS13aGlsZSBnZXRvcHRzICJEY206ZDpTOm86ZzpUOiIgYyAkKgotK3doaWxlIGdldG9wdHMgIkRjbTpkOlM6VDoiIGMgJCoKLSBkbwotICAgIGNhc2UgJGMgaW4KLSAgICBjKQotIAk7OwotLSAgIGcpCi0tCUdST1VQPSRPUFRBUkcKLS0JOzsKLS0gICBvKQotLQlPV05FUj0kT1BUQVJHCi0tCTs7Ci0gICAgbSkKLSAJRElSTU9ERT1gZXhwciAkT1BUQVJHYAotIAlGSUxFTU9ERT0kRElSTU9ERQotQEAgLTE0NiwxOCArMTA5LDcgQEAgdGhlbgotICAgICAjIGZpcnN0IHVzYWdlCi0gICAgICMKLSAgICAgJE1LRElSIC1wICRkaXIgCi0tICAgIHN0YXR1cz0kPwotLSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotLSAgICB0aGVuCi0tCSRDSE1PRCAkRElSTU9ERSAkZGlyCi0tCXN0YXR1cz0kPwotLSAgICBmaQotLSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotLSAgICB0aGVuCi0tCSRDSE9XTiAkT1dORVIgJEdST1VQICRkaXIKLS0Jc3RhdHVzPSQ/Ci0tICAgIGZpCi0tICAgICRNQU5JRkVTVCBkICRESVJNT0RFICRPV05FUiAkR1JPVVAgJHtkaXIjJERJU1RfUk9PVH0KLSsgICAgJE1BTklGRVNUIGQgJERJUk1PREUgJHtkaXIjJERJU1RfUk9PVH0KLSBlbGlmICRTZmxhZwotIHRoZW4KLSAgICAgIwotQEAgLTIwMyw3ICsxNTUsNyBAQCB0aGVuCi0gCQkJaW5zdGFsbF9uYW1lPSR0YXJnZXQvJHNvbGliCi0gCQkJJENQICRzb2xpYiAkaW5zdGFsbF9uYW1lCi0gCQkJc3RhdHVzPSQ/Ci0tCQkJJE1BTklGRVNUIGYgJEZJTEVNT0RFICRPV05FUiAkR1JPVVAgJEhFUkUvJHNvbGliICR7aW5zdGFsbF9uYW1lIyRESVNUX1JPT1R9Ci0rCQkJJE1BTklGRVNUIGYgJEZJTEVNT0RFICRIRVJFLyRzb2xpYiAke2luc3RhbGxfbmFtZSMkRElTVF9ST09UfQotIAkJCWJyZWFrCi0gCQlmaQotIAlkb25lCi1AQCAtMjU0LDcgKzIwNiw3IEBAIHRoZW4KLSAJaW5zdGFsbF9uYW1lPSR0YXJnZXQvJG9sZF9saWJyYXJ5Ci0gCSRDUCAkb2xkX2xpYnJhcnkgJGluc3RhbGxfbmFtZQotIAlzdGF0dXM9JD8KLS0JJE1BTklGRVNUIGYgJEZJTEVNT0RFICRPV05FUiAkR1JPVVAgJEhFUkUvJG9sZF9saWJyYXJ5ICR7aW5zdGFsbF9uYW1lIyRESVNUX1JPT1R9Ci0rCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkSEVSRS8kb2xkX2xpYnJhcnkgJHtpbnN0YWxsX25hbWUjJERJU1RfUk9PVH0KLSAJOzsKLSAgICAgKikKLSAJZWNobyAiJHByb2c6IC1UICRsdF9pbnN0YWxsIGludmFsaWQiCi1AQCAtMjY3LDcgKzIxOSw2IEBAIHRoZW4KLSAJaWYgWyAkc3RhdHVzIC1lcSAwIF0KLSAJdGhlbgotIAkJJENITU9EICRGSUxFTU9ERSAkaW5zdGFsbF9uYW1lCi0tCQkkQ0hPV04gJE9XTkVSICRHUk9VUCAkaW5zdGFsbF9uYW1lCi0gCWZpCi0gCTs7Ci0gICAgIGVzYWMKLUBAIC0yOTIsMjMgKzI0MywxMCBAQCBlbHNlCi0gCXRoZW4gCi0gCSAgICBpZiBbIC1mICRkaXIvJGYgXQotIAkgICAgdGhlbgotLQkJJENITU9EICRGSUxFTU9ERSAkZGlyLyRmCi0tCQlzdGF0dXM9JD8KLS0JCWlmIFsgJHN0YXR1cyAtZXEgMCBdCi0tCQl0aGVuCi0tCQkgICAgJENIT1dOICRPV05FUiAkR1JPVVAgJGRpci8kZgotLQkJICAgIHN0YXR1cz0kPwotLQkJZmkKLS0JCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkT1dORVIgJEdST1VQICRIRVJFLyRmICR7ZGlyIyRESVNUX1JPT1R9LyRmCi0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGYgJHtkaXIjJERJU1RfUk9PVH0vJGYKLSAJICAgIGVsc2UKLSAJCSRDSE1PRCAkRklMRU1PREUgJGRpcgotLQkJc3RhdHVzPSQ/Ci0tCQlpZiBbICRzdGF0dXMgLWVxIDAgXQotLQkJdGhlbgotLQkJICAgICRDSE9XTiAkT1dORVIgJEdST1VQICRkaXIKLS0JCSAgICBzdGF0dXM9JD8KLS0JCWZpCi0tCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJE9XTkVSICRHUk9VUCAkSEVSRS8kZGlyICR7ZGlyIyRESVNUX1JPT1R9Ci0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGRpciAke2RpciMkRElTVF9ST09UfQotIAkgICAgZmkKLSAJZmkKLSAgICAgZWxzZQotQEAgLTMzNCwxNCArMjcyLDcgQEAgZWxzZQotIAkgICAgc3RhdHVzPSQ/Ci0gCSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotIAkgICAgdGhlbgotLQkJJENITU9EICRGSUxFTU9ERSAkZGlyLyRmCi0tCQlzdGF0dXM9JD8KLS0JCWlmIFsgJHN0YXR1cyAtZXEgMCBdCi0tCQl0aGVuCi0tCQkgICAgJENIT1dOICRPV05FUiAkR1JPVVAgJGRpci8kZgotLQkJICAgIHN0YXR1cz0kPwotLQkJZmkKLS0JCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkT1dORVIgJEdST1VQICRIRVJFLyRmICR7ZGlyIyRESVNUX1JPT1R9LyRmCi0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGYgJHtkaXIjJERJU1RfUk9PVH0vJGYKLSAJICAgIGZpCi0gCSAgICBbICRzdGF0dXMgLW5lIDAgXSAmJiBicmVhawotIAlkb25lCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDEtdWRldmlsLTAuNC4zLWZpeC1jb21waWxlLXdpdGgtZ2NjNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC9maWxlcy8wMDAxLXVkZXZpbC0wLjQuMy1maXgtY29tcGlsZS13aXRoLWdjYzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU1ZTkzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC9maWxlcy8wMDAxLXVkZXZpbC0wLjQuMy1maXgtY29tcGlsZS13aXRoLWdjYzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorRml4IGNvbXBpbGF0aW9uIHdpdGggR0NDNgorCistLS0gYS9zcmMvZGV2aWNlLWluZm8uYwkyMDEzLTEyLTA5IDE0OjU5OjI3LjAwMDAwMDAwMCArMDEwMAorKysrIGIvc3JjL2RldmljZS1pbmZvLmMJMjAxNy0wMy0xMyAwNzowNjoyNS41MDY2NjY2ODAgKzAxMDAKK0BAIC0zLDYgKzMsNyBAQAorICAqIGNvbnRhaW5zIGNvZGUgZXhjZXJwdHMgZnJvbSB1ZGlza3MgdjEuMC40CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAKKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSAiZGV2aWNlLWluZm8uaCIKKyAKKyBzdGF0aWMgY2hhciAqCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvZmlsZXMvMDAwMi1ldGMtTWFrZWZpbGUuYW0tVXNlLXN5c3RlbWRfdW5pdGRpci1pbnN0ZWFkLW9mLWxpYmRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE0YTBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDgwYjA4NzE5MzY5ODYzMmU1MjViOTBkNDViNGE0OWU2MWUzNDNlMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitEYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDIxOjMwOjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGV0YzogTWFrZWZpbGUuYW06IFVzZSBzeXN0ZW1kX3VuaXRkaXIgaW5zdGVhZCBvZiBsaWJkaXIKKworUHJvcGVyIGRpcmVjdG9yeSBmb3IgaW5zdGFsbGluZyBzeXN0ZW1kIHNlcnZpY2VzIGlzIHN5c3RlbWRfdW5pdGRpciwgbm90CitsaWJkaXIuCisKK1NpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KKy0tLQorIGV0Yy9NYWtlZmlsZS5hbSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V0Yy9NYWtlZmlsZS5hbSBiL2V0Yy9NYWtlZmlsZS5hbQoraW5kZXggOWI2ZTc1MjJjMjBmLi42ZDY2MzI0MWE3MmYgMTAwNjQ0CistLS0gYS9ldGMvTWFrZWZpbGUuYW0KKysrKyBiL2V0Yy9NYWtlZmlsZS5hbQorQEAgLTE2LDggKzE2LDggQEAgaWYgQUREX1NZU1RFTUQKKyAJdGVzdCAtZiAkKERFU1RESVIpLyQoc3lzY29uZmRpcikvY29uZi5kL2Rldm1vbiB8fCAkKElOU1RBTExfREFUQSkgXAorIAkJCQkkKHNyY2Rpcikvc3lzdGVtZC9kZXZtb24gXAorIAkJCQkkKERFU1RESVIpLyQoc3lzY29uZmRpcikvY29uZi5kL2Rldm1vbgorLQl0ZXN0IC1kICQoREVTVERJUikvJChsaWJkaXIpL3N5c3RlbWQvc3lzdGVtIHx8IFwKKy0JCQkJbWtkaXIgLXAgLS0gJChERVNURElSKS8kKGxpYmRpcikvc3lzdGVtZC9zeXN0ZW0KKysJdGVzdCAtZCAkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0gfHwgXAorKwkJCQlta2RpciAtcCAtLSAkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0KKyAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9zeXN0ZW1kL2Rldm1vbkAuc2VydmljZSBcCistCQkJCSQoREVTVERJUikvJChsaWJkaXIpL3N5c3RlbWQvc3lzdGVtL2Rldm1vbkAuc2VydmljZQorKwkJCQkkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0vZGV2bW9uQC5zZXJ2aWNlCisgZW5kaWYKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC91ZGV2aWxfMC40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvdWRldmlsXzAuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjg0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvdWRldmlsXzAuNC40LmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiQSBjb21tYW5kIGxpbmUgTGludXggcHJvZ3JhbSB3aGljaCBtb3VudHMgYW5kIHVubW91bnRzIHJlbW92YWJsZSBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL2lnbm9yYW50Z3VydS5naXRodWIuaW8vdWRldmlsLyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBcCisgICAgZ2xpYi0yLjAtbmF0aXZlIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIHVkZXYgXAorIgorUkRFUEVORFNfJHtQTn0gPSAidWRldiBiYXNoIgorCitMSUNFTlNFID0gIkdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9JZ25vcmFudEd1cnUvdWRldmlsL3Jhdy9wa2cvJHtQVn0vdWRldmlsLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtdWRldmlsLTAuNC4zLWZpeC1jb21waWxlLXdpdGgtZ2NjNi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzFjNDg5YjYwM2EwNTAwYTA0ZGM3ZTE4MDVhYzFkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZThjNTFmZDRkNTg5Y2RhN2JlNTZlNzViNDIxODhkZWViMjU4YzY2ZmM5MTFhOWIzYTcwYTM5NDVjMTU3NzM5IgorCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJycsZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkZXZtb25ALnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1PX0VYQ0wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1PX0VYQ0wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwNDY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLU9fRVhDTC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDhjZjQ4ZGE1ZjY0NWRkN2JiYjFjY2JlYWI1YmIwOTY0ZjQwZjE3ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoxODo0NyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNV0gSW5jbHVkZSBmY250bC5oIGZvciBPX0VYQ0wKKworRml4CitlcnJvcjogJ09fQ1JFQVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW52dXRpbC9pbnZpZHguYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaW52dXRpbC9pbnZpZHguYyBiL2ludnV0aWwvaW52aWR4LmMKK2luZGV4IDY3ZWZkZjcuLjMyNWE5YTEgMTAwNjQ0CistLS0gYS9pbnZ1dGlsL2ludmlkeC5jCisrKysgYi9pbnZ1dGlsL2ludmlkeC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dXVpZC91dWlkLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgI2luY2x1ZGUgInR5cGVzLmgiCisgI2luY2x1ZGUgIm1sb2cuaCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtVXNlLWM5OS1kZWZpbmVkLWludDY0X3QtaW5zdGVhZC1vZi1fX2ludDY0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMWJkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjFlODIyZDU0NmUwOGNjMTk1ZWFlYjM4Y2ExNzJiZDBjMzgwMGFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDkgU2VwIDIwMTcgMDc6NDg6NDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0geGZzZHVtcDogVXNlIGM5OSBkZWZpbmVkIGludDY0X3QgaW5zdGVhZCBvZiBfX2ludDY0X3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGNvbW1vbi9oc21hcGkuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9oc21hcGkuYyBiL2NvbW1vbi9oc21hcGkuYworaW5kZXggNjA1NDc3My4uMDcwOWRiZSAxMDA2NDQKKy0tLSBhL2NvbW1vbi9oc21hcGkuYworKysrIGIvY29tbW9uL2hzbWFwaS5jCitAQCAtNTg1LDcgKzU4NSw3IEBAIEhzbU1vZGlmeUV4dGVudE1hcCgKKyAJc3RydWN0IGdldGJtYXB4CSpibWFwKQorIHsKKyAJZG1mX2ZfY3R4dF90CSpkbWZfZl9jdHh0cCA9IChkbWZfZl9jdHh0X3QgKiljb250ZXh0cDsKKy0JX19pbnQ2NF90CWxlbmd0aDsKKysJaW50NjRfdAkJbGVuZ3RoOworIAorIAlpZiAoYm1hcFswXS5ibXZfZW50cmllcyA8PSAwKSB7CisgCQlyZXR1cm4gMTsJLyogY2FsbGVyIG11c3QgYWxyZWFkeSBiZSBhdCBFT0YgKi8KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDNlMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAyLVJlcGxhY2UtX191aW50MzJfdC13aXRoLXVpbnQzMl90LnBhdGNoCkBAIC0wLDAgKzEsMTIyIEBACitGcm9tIGY3NmQyMTQyOTA1ZjBlNWJkODMwZDVkNTc2YzIzNWFmMTE3MWM2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoyMzozMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNV0gUmVwbGFjZSBfX3VpbnQzMl90IHdpdGggdWludDMyX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbW1vbi9jb250ZW50X2lub2RlLmggfCA0ICsrLS0KKyBkb2MveGZzZHVtcC5odG1sICAgICAgIHwgOCArKysrLS0tLQorIGludmVudG9yeS9pbnZfb3JlZi5oICAgfCAyICstCisgaW52ZW50b3J5L2ludl9wcml2LmggICB8IDQgKystLQorIGludmVudG9yeS9pbnZlbnRvcnkuaCAgfCAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9jb250ZW50X2lub2RlLmggYi9jb21tb24vY29udGVudF9pbm9kZS5oCitpbmRleCBhNjlhOWEwLi42OTM2ZTA1IDEwMDY0NAorLS0tIGEvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAorKysrIGIvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAorQEAgLTE5MSwxMCArMTkxLDEwIEBAIHR5cGVkZWYgc3RydWN0IGJzdGF0IGJzdGF0X3Q7CisgICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCisgICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCisgICovCistc3RhdGljIGlubGluZSBfX3VpbnQzMl90Cisrc3RhdGljIGlubGluZSB1aW50MzJfdAorIGJzdGF0X3Byb2ppZChzdHJ1Y3QgYnN0YXQgKmJzKQorIHsKKy0gICAgICAgIHJldHVybiAoX191aW50MzJfdClicy0+YnNfcHJvamlkX2hpIDw8IDE2IHwgYnMtPmJzX3Byb2ppZF9sbzsKKysgICAgICAgIHJldHVybiAodWludDMyX3QpYnMtPmJzX3Byb2ppZF9oaSA8PCAxNiB8IGJzLT5ic19wcm9qaWRfbG87CisgfQorIAorIAorZGlmZiAtLWdpdCBhL2RvYy94ZnNkdW1wLmh0bWwgYi9kb2MveGZzZHVtcC5odG1sCitpbmRleCA5YzY3MjJlLi5mODUxMjhmIDEwMDY0NAorLS0tIGEvZG9jL3hmc2R1bXAuaHRtbAorKysrIGIvZG9jL3hmc2R1bXAuaHRtbAorQEAgLTE5MzUsNyArMTkzNSw3IEBAIFRoZSBmaWxlcyBhcmUgY29uc3RydWN0ZWQgbGlrZSBzbzoKKyA8cHJlPgorIHR5cGVkZWYgc3RydWN0IGludnRfY291bnRlciB7CisgICAgIElOVlRfQ09VTlRFUl9GSUVMRFMKKy0gICAgICAgIF9fdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKKysgICAgICAgIHVpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisgICAgICAgICB1X2ludCAgICAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbyBmYXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICB1X2ludCAgICAgICAgIGljX21heG51bTsvKiBtYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucy9pbnZfaW5kaWNlcyBcCitAQCAtMTk3NSw3ICsxOTc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaW52dF9mc3RhYiB7CisgPHByZT4KKyB0eXBlZGVmIHN0cnVjdCBpbnZ0X2NvdW50ZXIgeworICAgICBJTlZUX0NPVU5URVJfRklFTERTCistICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisrICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorICAgICAgICAgdV9pbnQgICAgICAgICBpY19jdXJudW07LyogbnVtYmVyIG9mIHNlc3Npb25zL2ludmluZGljZXMgcmVjb3JkZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gZmFyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgdV9pbnQgICAgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAorQEAgLTIwMTIsNyArMjAxMiw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgeworIDxwcmU+CisgdHlwZWRlZiBzdHJ1Y3QgaW52dF9zZXNjb3VudGVyIHsKKyAgICAgSU5WVF9DT1VOVEVSX0ZJRUxEUworLSAgICAgICAgX191aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorKyAgICAgICAgdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKKyAgICAgICAgIHVfaW50ICAgICAgICAgaWNfY3VybnVtOy8qIG51bWJlciBvZiBzZXNzaW9ucy9pbnZpbmRpY2VzIHJlY29yZGVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGZhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIHVfaW50ICAgICAgICAgaWNfbWF4bnVtOy8qIG1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zL2ludl9pbmRpY2VzIFwKK0BAIC0yMDM0LDcgKzIwMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7CisgICAgIG9mZjY0X3QgICAgc2hfc3RyZWFtc19vZmY7IC8qIG9mZnNldCB0byBzdGFydCBvZiB0aGUgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBoZHJzICovCisgICAgIHRpbWVfdCAgICAgc2hfdGltZTsgICAgICAgIC8qIHRpbWUgb2YgdGhlIGR1bXAgKi8KKy0gICAgX191aW50MzJfdCBzaF9mbGFnOyAgICAgICAgLyogZm9yIG1pc2MgZmxhZ3MgKi8KKysgICAgdWludDMyX3Qgc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCisgICAgIHVfY2hhciAgICAgc2hfbGV2ZWw7ICAgICAgIC8qIGR1bXAgbGV2ZWwgKi8KKyAgICAgdV9jaGFyICAgICBzaF9wcnVuZWQ7ICAgICAgLyogcHJ1bmVkIGJ5IGludnV0aWwgZmxhZyAqLworICAgICBjaGFyICAgICAgIHNoX3BhZGRpbmdbMjJdOworZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZfb3JlZi5oIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKK2luZGV4IGUxNjY4NGQuLjM4MzAzYTQgMTAwNjQ0CistLS0gYS9pbnZlbnRvcnkvaW52X29yZWYuaAorKysrIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKK0BAIC00Niw3ICs0Niw3IEBACisgCisgCisgCistdHlwZWRlZiBfX3VpbnQzMl90CWludnRfb2JqdHlwZV90OworK3R5cGVkZWYgdWludDMyX3QJaW52dF9vYmp0eXBlX3Q7CisgCisgI2RlZmluZSBJTlZUX0xPQ0tFRAkJMHgwMDAxCisgCitkaWZmIC0tZ2l0IGEvaW52ZW50b3J5L2ludl9wcml2LmggYi9pbnZlbnRvcnkvaW52X3ByaXYuaAoraW5kZXggMTY5MDI3MS4uMzY0ZmZiYyAxMDA2NDQKKy0tLSBhL2ludmVudG9yeS9pbnZfcHJpdi5oCisrKysgYi9pbnZlbnRvcnkvaW52X3ByaXYuaAorQEAgLTEyMCw3ICsxMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7CisgCW9mZjY0X3QJCXNoX3N0cmVhbXNfb2ZmOyAvKiBvZmZzZXQgdG8gc3RhcnQgb2YgdGhlIHNldCBvZiAKKyAJCQkJCSAgIHN0cmVhbSBoZHJzICovCisgCXRpbWUzMl90CXNoX3RpbWU7ICAgICAgICAvKiB0aW1lIG9mIHRoZSBkdW1wICovCistCV9fdWludDMyX3QJc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCisrCXVpbnQzMl90CXNoX2ZsYWc7ICAgICAgICAvKiBmb3IgbWlzYyBmbGFncyAqLworIAl1X2NoYXIJCXNoX2xldmVsOyAgICAgICAvKiBkdW1wIGxldmVsICovCisgCXVfY2hhcgkJc2hfcHJ1bmVkOyAgICAgIC8qIHBydW5lZCBieSBpbnZ1dGlsIGZsYWcgKi8KKyAJY2hhcgkJc2hfcGFkZGluZ1syMl07CitAQCAtMTg0LDcgKzE4NCw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgeworIAorIC8qIENoZWFwIEluaGVyaXRhbmNlLCBhbmQgYW4gYXR0ZW1wdCB0byBhdm9pZCBhIG5lc3RlZCB0eXBlICovCisgI2RlZmluZSBJTlZUX0NPVU5URVJfRklFTERTICBcCistICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisrICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorIAl1aW50CSAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCisgCQkJCSAgIHNvIGZhciAqLwkJCQkgIFwKKyAJdWludAkgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAorZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZlbnRvcnkuaCBiL2ludmVudG9yeS9pbnZlbnRvcnkuaAoraW5kZXggMTM0YjliYS4uYzFkNzQwMyAxMDA2NDQKKy0tLSBhL2ludmVudG9yeS9pbnZlbnRvcnkuaAorKysrIGIvaW52ZW50b3J5L2ludmVudG9yeS5oCitAQCAtNDMsNyArNDMsNyBAQAorIC8qIGxlbmd0aCBvZiBsYWJlbHMsIG1udHB0cywgZXRjICovCisgI2RlZmluZSBJTlZfU1RSTEVOICAgICAgICAgICAgICBHTE9CQUxfSERSX1NUUklOR19TWgorIAorLXR5cGVkZWYgX191aW50MzJfdAkJaW52X3ZlcnNpb25fdDsKKyt0eXBlZGVmIHVpbnQzMl90CQlpbnZfdmVyc2lvbl90OworIAorIC8qIFRoaXMgaXMgdGhlIGdlbmVyYWwgaW52ZW50b3J5IHZlcnNpb24uIAorICAqLworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAzLXJlcGxhY2UtdXNlLW9mLVNJR0NMRC13aXRoLVNJR0NITEQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDMtcmVwbGFjZS11c2Utb2YtU0lHQ0xELXdpdGgtU0lHQ0hMRC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTMwM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAzLXJlcGxhY2UtdXNlLW9mLVNJR0NMRC13aXRoLVNJR0NITEQucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBmY2MwY2YxNWEzMDk5NDcxMDNhMDY5NWI4YTFmNDg2NWI4MjBlYjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MjY6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIHJlcGxhY2UgdXNlIG9mIFNJR0NMRCB3aXRoIFNJR0NITEQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbW1vbi9tYWluLmMgICAgfCAyICstCisgZG9jL3hmc2R1bXAuaHRtbCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9tYWluLmMgYi9jb21tb24vbWFpbi5jCitpbmRleCAzODQ4NDk5Li5mYWE2NmVlIDEwMDY0NAorLS0tIGEvY29tbW9uL21haW4uYworKysrIGIvY29tbW9uL21haW4uYworQEAgLTIyMjUsNyArMjIyNSw3IEBAIHN0YXRpYyBzaWdfcHJpbnRtYXBfdCBzaWdfcHJpbnRtYXBbIF0gPSB7CisgCXtTSUdURVJNLAkiU0lHVEVSTSJ9LAorIAl7U0lHVVNSMSwJIlNJR1VTUjEifSwKKyAJe1NJR1VTUjIsCSJTSUdVU1IyIn0sCistCXtTSUdDTEQsCSJTSUdDTEQifSwKKysJe1NJR0NITEQsCSJTSUdDSExEIn0sCisgCXtTSUdQV1IsCSJTSUdQV1IifSwKKyAJe1NJR1VSRywJIlNJR1VSRyJ9LAorIAl7U0lHUE9MTCwJIlNJR1BPTEwifSwKK2RpZmYgLS1naXQgYS9kb2MveGZzZHVtcC5odG1sIGIvZG9jL3hmc2R1bXAuaHRtbAoraW5kZXggZjg1MTI4Zi4uZDk2ZjAzNyAxMDA2NDQKKy0tLSBhL2RvYy94ZnNkdW1wLmh0bWwKKysrKyBiL2RvYy94ZnNkdW1wLmh0bWwKK0BAIC0zMzQsNyArMzM0LDcgQEAgdGhlIHJpbmcgYnVmZmVyLiBJdCBpZ25vcmVzIHNpZ25hbHMgYW5kIGRvZXMgbm90IHRlcm1pbmF0ZSB1bnRpbCBpdAorIHJlY2VpdmVzIGEgUklOR19PUF9ESUUgbWVzc2FnZS4gSXQgdGhlbiBleGl0cyAwLgorIDxwPgorIFRoZSBtYWluIHByb2Nlc3Mgc2xlZXBzIHdhaXRpbmcgZm9yIGFueSBvZiBpdHMgY2hpbGRyZW4gdG8gZGllCistKGllLiB3YWl0aW5nIGZvciBhIFNJR0NMRCkuIEFsbCBjaGlsZHJlbiB0aGF0IGl0IGNhcmVzIGFib3V0IChzdHJlYW0KKysoaWUuIHdhaXRpbmcgZm9yIGEgU0lHQ0hMRCkuIEFsbCBjaGlsZHJlbiB0aGF0IGl0IGNhcmVzIGFib3V0IChzdHJlYW0KKyBtYW5hZ2VycyBhbmQgcmluZyBidWZmZXIgc2xhdmVzKSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBjaGlsZAorIG1hbmFnZXIgYWJzdHJhY3Rpb24uIFdoZW4gYSBjaGlsZCBkaWVzIHdhaXQgc3RhdHVzIGFuZCBvdGhlciBpbmZvIGlzCisgc3RvcmVkIHdpdGggaXRzIGVudHJ5IGluIHRoZSBjaGlsZCBtYW5hZ2VyLiBtYWluKCkgaWdub3JlcyB0aGUgZGVhdGhzCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwNC1pbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZWExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDk4YzdkOTZmMGYyYzZlZGRmNjBhYTRhMWEwOGQ3ZDQ0Njc2NDU5MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoyODoxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNV0gaW5jbHVkZSBsaW1pdC5oIGZvciBQQVRIX01BWAorCitmaXhlZAordmFyLmM6NDI6MTI6IGVycm9yOiAnUEFUSF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdSQU5EX01BWCc/CisgIGNoYXIgcGF0aFtQQVRIX01BWF07YAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZHVtcC92YXIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZHVtcC92YXIuYyBiL2R1bXAvdmFyLmMKK2luZGV4IDY0NWNhYWIuLjgxNTZkMzcgMTAwNjQ0CistLS0gYS9kdW1wL3Zhci5jCisrKysgYi9kdW1wL3Zhci5jCitAQCAtMTYsNiArMTYsNyBAQAorICAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDUtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9pbnQzMl90LWluLWF0dHItYXR0cmlidXRlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjZlNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkOTVmNDk0ZGUxYWE4MTIzYzc0MTcwZmZlYmFlZDhlYTg5NjQ5ZGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MzM6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfaW50MzJfdCBpbiBhdHRyL2F0dHJpYnV0ZXMuaAorCitlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3VfaW50MzJfdCcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJlc3RvcmUvY29udGVudC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZXN0b3JlL2NvbnRlbnQuYyBiL3Jlc3RvcmUvY29udGVudC5jCitpbmRleCA3YzRhODFmLi4xZDVkZTFiIDEwMDY0NAorLS0tIGEvcmVzdG9yZS9jb250ZW50LmMKKysrKyBiL3Jlc3RvcmUvY29udGVudC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KKyAjaW5jbHVkZSA8eGZzL2hhbmRsZS5oPgorICNpbmNsdWRlIDx0aW1lLmg+CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWQwYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAotICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAotICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAotICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCi0gICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKLURFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKLQotU1JDX1VSSSA9ICJmdHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMvY21kX3RhcnMvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImE4YjE3NjFiZTVmZWIzNjMxMzFlN2I1MDY2MzlhZDRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MGVhZmQwNzIxNTE1YmRkNzljYjBlMjk1YjcwMWQ0OWNkZjgxZTcxYTBhMGZmMGRmNmQ0YzVjYzE5NjA5NDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1QQVJBTExFTF9NQUtFID0gIiIKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi0tZW5hYmxlLWdldHRleHQ9eWVzLC0tZW5hYmxlLWdldHRleHQ9bm8sZ2V0dGV4dCIKLQotRVhUUkFfT0VNQUtFICs9ICInTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sJyBWPTEiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGV4cG9ydCBESVNUX1JPT1Q9JHtEfQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotICAgIG9lX3J1bm1ha2UgaW5zdGFsbC1kZXYKLX0KLQotUE5CTEFDS0xJU1RbeGZzZHVtcF0gPz0gIkRlcGVuZHMgb24gYnJva2VuIHhmc3Byb2dzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzk5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjcuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCitERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAorICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAorICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAorICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCisgICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKK0RFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9mcy94ZnMveGZzZHVtcC8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItT19FWENMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1fX3VpbnQzMl90LXdpdGgtdWludDMyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1yZXBsYWNlLXVzZS1vZi1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImM2ZTkxZjJhYzhiNzZjNzk2ZGIyZDIzNmY1Y2E1OTQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5ZTZkNGRmMjU3ZWJjNmQyOWNhOWU5NzBjYTIwNjcyYzJlYTAzNDgxYWQ5NDliYzY4Zjk4ZGUzZTRkNTZkY2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitQQVJBTExFTF9NQUtFID0gIiIKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi0tZW5hYmxlLWdldHRleHQ9eWVzLC0tZW5hYmxlLWdldHRleHQ9bm8sZ2V0dGV4dCIKKworQ0ZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitFWFRSQV9PRU1BS0UgKz0gIidMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wnIFY9MSIKKworZG9fY29uZmlndXJlICgpIHsKKyAgICBleHBvcnQgREVCVUc9Ii1ETkRFQlVHIgorICAgIG9lX3J1bmNvbmYKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgZXhwb3J0IERJU1RfUk9PVD0ke0R9CisgICAgb2VfcnVubWFrZSBpbnN0YWxsCisgICAgb2VfcnVubWFrZSBpbnN0YWxsLWRldgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmcy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDdjNDg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2gKQEAgLTAsMCArMSwyMDgyIEBACitGcm9tIDRhNDkyZTcyNTE1NTA5ZWU3MDIyODZhNDJhZmU3ZDhmODlkMzc2MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRGFycmljayBKLiBXb25nIiA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitEYXRlOiBNb24sIDMxIEp1bCAyMDE3IDE1OjA4OjEwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhmczogcmVtb3ZlIGRvdWJsZS11bmRlcnNjb3JlIGludGVnZXIgdHlwZXMKKworU291cmNlIGtlcm5lbCBjb21taXQ6IGM4Y2U1NDBkYjVmNjdkMjU0YWFmYjE0YjVkNzY0MjJjNjJhOTA2ZGYKKworVGhpcyBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHBhdGNoIHRoYXQgcmVtb3ZlcyB0aGUgcHJpdmF0ZQorX197dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIHN5c3RlbQore3UsfWludHs4LDE2LDMyLDY0fV90IHR5cGVkZWZzLiAgVGhpcyBpcyB0aGUgc2VkIHNjcmlwdCB1c2VkIHRvIHBlcmZvcm0KK3RoZSB0cmFuc2Zvcm1hdGlvbiBhbmQgZml4IHRoZSByZXN1bHRpbmcgd2hpdGVzcGFjZSBhbmQgaW5kZW50YXRpb24KK2Vycm9yczoKKworcy90eXBlZGVmXHRfX3VpbnQ4X3QvdHlwZWRlZiBfX3VpbnQ4X3RcdC9nCitzL3R5cGVkZWZcdF9fdWludC90eXBlZGVmIF9fdWludC9nCitzL3R5cGVkZWZcdF9faW50XChbMC05XSpcKV90L3R5cGVkZWYgaW50XDFfdFx0L2cKK3MvX191aW50OF90XHQvX191aW50OF90XHRcdC9nCitzL19fdWludC91aW50L2cKK3MvX19pbnRcKFswLTldKlwpX3RcdC9fX2ludFwxX3RcdFx0L2cKK3MvX19pbnQvaW50L2cKKy9edHlwZWRlZi4qaW50WzAtOV0qX3Q7JC9kCisKK1NpZ25lZC1vZmYtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitSZXZpZXdlZC1ieTogQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5Ac2FuZGVlbi5uZXQ+CistLS0KKyBsaWJ4ZnMvbGlieGZzX3ByaXYuaCAgICAgICAgfCAgIDEgKworIGxpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYyAgICB8ICAyMCArKy0tCisgbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jICAgIHwgICA4ICstCisgbGlieGZzL3hmc19hdHRyX3NmLmggICAgICAgIHwgIDEwICstCisgbGlieGZzL3hmc19iaXQuaCAgICAgICAgICAgIHwgIDI0ICsrLS0tCisgbGlieGZzL3hmc19ibWFwX2J0cmVlLmMgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19idHJlZS5jICAgICAgICAgIHwgIDIyICsrLS0KKyBsaWJ4ZnMveGZzX2J0cmVlLmggICAgICAgICAgfCAgMTggKystLQorIGxpYnhmcy94ZnNfY2tzdW0uaCAgICAgICAgICB8ICAxNiArLS0KKyBsaWJ4ZnMveGZzX2RhX2J0cmVlLmMgICAgICAgfCAgIDIgKy0KKyBsaWJ4ZnMveGZzX2RhX2J0cmVlLmggICAgICAgfCAgIDggKy0KKyBsaWJ4ZnMveGZzX2RhX2Zvcm1hdC5jICAgICAgfCAgMjggKystLS0KKyBsaWJ4ZnMveGZzX2RhX2Zvcm1hdC5oICAgICAgfCAgNjQgKysrKystLS0tLS0KKyBsaWJ4ZnMveGZzX2RpcjIuaCAgICAgICAgICAgfCAgIDggKy0KKyBsaWJ4ZnMveGZzX2RpcjJfbGVhZi5jICAgICAgfCAgMTIgKy0tCisgbGlieGZzL3hmc19kaXIyX3ByaXYuaCAgICAgIHwgICAyICstCisgbGlieGZzL3hmc19kaXIyX3NmLmMgICAgICAgIHwgICA0ICstCisgbGlieGZzL3hmc19mb3JtYXQuaCAgICAgICAgIHwgMTEyICsrKysrKysrKy0tLS0tLS0tLS0KKyBsaWJ4ZnMveGZzX2ZzLmggICAgICAgICAgICAgfCAgMTIgKy0tCisgbGlieGZzL3hmc19pYWxsb2MuYyAgICAgICAgIHwgICA2ICstCisgbGlieGZzL3hmc19pYWxsb2NfYnRyZWUuYyAgIHwgICA0ICstCisgbGlieGZzL3hmc19pbm9kZV9idWYuYyAgICAgIHwgICAyICstCisgbGlieGZzL3hmc19pbm9kZV9idWYuaCAgICAgIHwgIDI4ICsrLS0tCisgbGlieGZzL3hmc19sb2dfZm9ybWF0LmggICAgIHwgMjU2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbGlieGZzL3hmc19xdW90YV9kZWZzLmggICAgIHwgICA0ICstCisgbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwLmMgICAgICAgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwLmggICAgICAgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwX2J0cmVlLmMgICAgIHwgIDMwICsrKy0tLQorIGxpYnhmcy94ZnNfcnRiaXRtYXAuYyAgICAgICB8ICAgMiArLQorIGxpYnhmcy94ZnNfc2IuYyAgICAgICAgICAgICB8ICAgNCArLQorIGxpYnhmcy94ZnNfdHlwZXMuaCAgICAgICAgICB8ICA0NiArKysrLS0tLQorIDMyIGZpbGVzIGNoYW5nZWQsIDM5MyBpbnNlcnRpb25zKCspLCAzOTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ4ZnMvbGlieGZzX3ByaXYuaCBiL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCitpbmRleCAwYjRjNDg5MC4uYjNjYzdlNTMgMTAwNjQ0CistLS0gYS9saWJ4ZnMvbGlieGZzX3ByaXYuaAorKysrIGIvbGlieGZzL2xpYnhmc19wcml2LmgKK0BAIC01MDQsNSArNTA0LDYgQEAgYm9vbCB4ZnNfbG9nX2NoZWNrX2xzbihzdHJ1Y3QgeGZzX21vdW50ICosIHhmc19sc25fdCk7CisgI2RlZmluZSBYRlNfU1RBVFNfSU5DX09GRihtcCwgb2ZmKQorICNkZWZpbmUgWEZTX1NUQVRTX0FERF9PRkYobXAsIG9mZiwgdmFsKQorIAorK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKyAKKyAjZW5kaWYJLyogX19MSUJYRlNfSU5URVJOQUxfWEZTX0hfXyAqLworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYyBiL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYworaW5kZXggZTExZDg5YTMuLjhlNzdlNmUzIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19hbGxvY19idHJlZS5jCisrKysgYi9saWJ4ZnMveGZzX2FsbG9jX2J0cmVlLmMKK0BAIC0yNTEsNyArMjUxLDcgQEAgeGZzX2FsbG9jYnRfaW5pdF9wdHJfZnJvbV9jdXIoCisgCXB0ci0+cyA9IGFnZi0+YWdmX3Jvb3RzW2N1ci0+YmNfYnRudW1dOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm5vYnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKK0BAIC0yNTksNDIgKzI1OSw0MiBAQCB4ZnNfYm5vYnRfa2V5X2RpZmYoCisgCXhmc19hbGxvY19yZWNfaW5jb3JlX3QJKnJlYyA9ICZjdXItPmJjX3JlYy5hOworIAl4ZnNfYWxsb2Nfa2V5X3QJCSprcCA9ICZrZXktPmFsbG9jOworIAorLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7CisrCXJldHVybiAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19jbnRidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorIHsKKyAJeGZzX2FsbG9jX3JlY19pbmNvcmVfdAkqcmVjID0gJmN1ci0+YmNfcmVjLmE7CisgCXhmc19hbGxvY19rZXlfdAkJKmtwID0gJmtleS0+YWxsb2M7CistCV9faW50NjRfdAkJZGlmZjsKKysJaW50NjRfdAkJCWRpZmY7CisgCistCWRpZmYgPSAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9ibG9ja2NvdW50KSAtIHJlYy0+YXJfYmxvY2tjb3VudDsKKysJZGlmZiA9IChpbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9ibG9ja2NvdW50KSAtIHJlYy0+YXJfYmxvY2tjb3VudDsKKyAJaWYgKGRpZmYpCisgCQlyZXR1cm4gZGlmZjsKKyAKKy0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX3N0YXJ0YmxvY2spIC0gcmVjLT5hcl9zdGFydGJsb2NrOworKwlyZXR1cm4gKGludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX3N0YXJ0YmxvY2spIC0gcmVjLT5hcl9zdGFydGJsb2NrOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm5vYnRfZGlmZl90d29fa2V5cygKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsyKQorIHsKKy0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoazEtPmFsbG9jLmFyX3N0YXJ0YmxvY2spIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5hbGxvYy5hcl9zdGFydGJsb2NrKSAtCisgCQkJICBiZTMyX3RvX2NwdShrMi0+YWxsb2MuYXJfc3RhcnRibG9jayk7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19jbnRidF9kaWZmX3R3b19rZXlzKAorIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMSwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazIpCisgeworLQlfX2ludDY0X3QJCWRpZmY7CisrCWludDY0X3QJCQlkaWZmOworIAorIAlkaWZmID0gIGJlMzJfdG9fY3B1KGsxLT5hbGxvYy5hcl9ibG9ja2NvdW50KSAtCisgCQliZTMyX3RvX2NwdShrMi0+YWxsb2MuYXJfYmxvY2tjb3VudCk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jIGIvbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jCitpbmRleCBhYmUxNzA1Mi4uMWYyNWUzNjMgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMKKysrKyBiL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYworQEAgLTI0OCw3ICsyNDgsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfY29weW91dCgKKyAJeGZzX2lub190CWlubywKKyAJaW50CQkqb2Zmc2V0LAorIAlpbnQJCSp2YWx1ZWxlbiwKKy0JX191aW50OF90CSoqZHN0KQorKwl1aW50OF90CQkqKmRzdCkKKyB7CisgCWNoYXIJCSpzcmMgPSBicC0+Yl9hZGRyOworIAl4ZnNfZGFkZHJfdAlibm8gPSBicC0+Yl9ibjsKK0BAIC0yOTYsNyArMjk2LDcgQEAgeGZzX2F0dHJfcm10dmFsX2NvcHlpbigKKyAJeGZzX2lub190CWlubywKKyAJaW50CQkqb2Zmc2V0LAorIAlpbnQJCSp2YWx1ZWxlbiwKKy0JX191aW50OF90CSoqc3JjKQorKwl1aW50OF90CQkqKnNyYykKKyB7CisgCWNoYXIJCSpkc3QgPSBicC0+Yl9hZGRyOworIAl4ZnNfZGFkZHJfdAlibm8gPSBicC0+Yl9ibjsKK0BAIC0zNTAsNyArMzUwLDcgQEAgeGZzX2F0dHJfcm10dmFsX2dldCgKKyAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBhcmdzLT5kcC0+aV9tb3VudDsKKyAJc3RydWN0IHhmc19idWYJCSpicDsKKyAJeGZzX2RhYmxrX3QJCWxibGtubyA9IGFyZ3MtPnJtdGJsa25vOworLQlfX3VpbnQ4X3QJCSpkc3QgPSBhcmdzLT52YWx1ZTsKKysJdWludDhfdAkJCSpkc3QgPSBhcmdzLT52YWx1ZTsKKyAJaW50CQkJdmFsdWVsZW47CisgCWludAkJCW5tYXA7CisgCWludAkJCWVycm9yOworQEAgLTQxNiw3ICs0MTYsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfc2V0KAorIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwltYXA7CisgCXhmc19kYWJsa190CQlsYmxrbm87CisgCXhmc19maWxlb2ZmX3QJCWxmaWxlb2ZmID0gMDsKKy0JX191aW50OF90CQkqc3JjID0gYXJncy0+dmFsdWU7CisrCXVpbnQ4X3QJCQkqc3JjID0gYXJncy0+dmFsdWU7CisgCWludAkJCWJsa2NudDsKKyAJaW50CQkJdmFsdWVsZW47CisgCWludAkJCW5tYXA7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19hdHRyX3NmLmggYi9saWJ4ZnMveGZzX2F0dHJfc2YuaAoraW5kZXggOTA5MjhiYmUuLmFmZDY4NGFlIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19hdHRyX3NmLmgKKysrKyBiL2xpYnhmcy94ZnNfYXR0cl9zZi5oCitAQCAtMzEsMTAgKzMxLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3NmX2VudHJ5IHhmc19hdHRyX3NmX2VudHJ5X3Q7CisgICogV2UgZ2VuZXJhdGUgdGhpcyB0aGVuIHNvcnQgaXQsIGF0dHJfbGlzdCgpIG11c3QgcmV0dXJuIHRoaW5ncyBpbiBoYXNoLW9yZGVyLgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3NmX3NvcnQgeworLQlfX3VpbnQ4X3QJZW50bm87CQkvKiBlbnRyeSBudW1iZXIgaW4gb3JpZ2luYWwgbGlzdCAqLworLQlfX3VpbnQ4X3QJbmFtZWxlbjsJLyogbGVuZ3RoIG9mIG5hbWUgdmFsdWUgKG5vIG51bGwpICovCistCV9fdWludDhfdAl2YWx1ZWxlbjsJLyogbGVuZ3RoIG9mIHZhbHVlICovCistCV9fdWludDhfdAlmbGFnczsJCS8qIGZsYWdzIGJpdHMgKHNlZSB4ZnNfYXR0cl9sZWFmLmgpICovCisrCXVpbnQ4X3QJCWVudG5vOwkJLyogZW50cnkgbnVtYmVyIGluIG9yaWdpbmFsIGxpc3QgKi8KKysJdWludDhfdAkJbmFtZWxlbjsJLyogbGVuZ3RoIG9mIG5hbWUgdmFsdWUgKG5vIG51bGwpICovCisrCXVpbnQ4X3QJCXZhbHVlbGVuOwkvKiBsZW5ndGggb2YgdmFsdWUgKi8KKysJdWludDhfdAkJZmxhZ3M7CQkvKiBmbGFncyBiaXRzIChzZWUgeGZzX2F0dHJfbGVhZi5oKSAqLworIAl4ZnNfZGFoYXNoX3QJaGFzaDsJCS8qIHRoaXMgZW50cnkncyBoYXNoIHZhbHVlICovCisgCXVuc2lnbmVkIGNoYXIJKm5hbWU7CQkvKiBuYW1lIHZhbHVlLCBwb2ludGVyIGludG8gYnVmZmVyICovCisgfSB4ZnNfYXR0cl9zZl9zb3J0X3Q7CitAQCAtNDIsNyArNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYXR0cl9zZl9zb3J0IHsKKyAjZGVmaW5lIFhGU19BVFRSX1NGX0VOVFNJWkVfQllOQU1FKG5sZW4sdmxlbikJLyogc3BhY2UgbmFtZS92YWx1ZSB1c2VzICovIFwKKyAJKCgoaW50KXNpemVvZih4ZnNfYXR0cl9zZl9lbnRyeV90KS0xICsgKG5sZW4pKyh2bGVuKSkpCisgI2RlZmluZSBYRlNfQVRUUl9TRl9FTlRTSVpFX01BWAkJCS8qIG1heCBzcGFjZSBmb3IgbmFtZSZ2YWx1ZSAqLyBcCistCSgoMSA8PCAoTkJCWSooaW50KXNpemVvZihfX3VpbnQ4X3QpKSkgLSAxKQorKwkoKDEgPDwgKE5CQlkqKGludClzaXplb2YodWludDhfdCkpKSAtIDEpCisgI2RlZmluZSBYRlNfQVRUUl9TRl9FTlRTSVpFKHNmZXApCQkvKiBzcGFjZSBhbiBlbnRyeSB1c2VzICovIFwKKyAJKChpbnQpc2l6ZW9mKHhmc19hdHRyX3NmX2VudHJ5X3QpLTEgKyAoc2ZlcCktPm5hbWVsZW4rKHNmZXApLT52YWx1ZWxlbikKKyAjZGVmaW5lIFhGU19BVFRSX1NGX05FWFRFTlRSWShzZmVwKQkJLyogbmV4dCBlbnRyeSBpbiBzdHJ1Y3QgKi8gXAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYml0LmggYi9saWJ4ZnMveGZzX2JpdC5oCitpbmRleCBlMTY0OWMwZC4uNjFjNmIyMDIgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2JpdC5oCisrKysgYi9saWJ4ZnMveGZzX2JpdC5oCitAQCAtMjUsNDcgKzI1LDQ3IEBACisgLyoKKyAgKiBtYXNrcyB3aXRoIG4gaGlnaC9sb3cgYml0cyBzZXQsIDY0LWJpdCB2YWx1ZXMKKyAgKi8KKy1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QgeGZzX21hc2s2NGhpKGludCBuKQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgeGZzX21hc2s2NGhpKGludCBuKQorIHsKKy0JcmV0dXJuIChfX3VpbnQ2NF90KS0xIDw8ICg2NCAtIChuKSk7CisrCXJldHVybiAodWludDY0X3QpLTEgPDwgKDY0IC0gKG4pKTsKKyB9Cistc3RhdGljIGlubGluZSBfX3VpbnQzMl90IHhmc19tYXNrMzJsbyhpbnQgbikKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IHhmc19tYXNrMzJsbyhpbnQgbikKKyB7CistCXJldHVybiAoKF9fdWludDMyX3QpMSA8PCAobikpIC0gMTsKKysJcmV0dXJuICgodWludDMyX3QpMSA8PCAobikpIC0gMTsKKyB9Cistc3RhdGljIGlubGluZSBfX3VpbnQ2NF90IHhmc19tYXNrNjRsbyhpbnQgbikKKytzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHhmc19tYXNrNjRsbyhpbnQgbikKKyB7CistCXJldHVybiAoKF9fdWludDY0X3QpMSA8PCAobikpIC0gMTsKKysJcmV0dXJuICgodWludDY0X3QpMSA8PCAobikpIC0gMTsKKyB9CisgCisgLyogR2V0IGhpZ2ggYml0IHNldCBvdXQgb2YgMzItYml0IGFyZ3VtZW50LCAtMSBpZiBub25lIHNldCAqLworLXN0YXRpYyBpbmxpbmUgaW50IHhmc19oaWdoYml0MzIoX191aW50MzJfdCB2KQorK3N0YXRpYyBpbmxpbmUgaW50IHhmc19oaWdoYml0MzIodWludDMyX3QgdikKKyB7CisgCXJldHVybiBmbHModikgLSAxOworIH0KKyAKKyAvKiBHZXQgaGlnaCBiaXQgc2V0IG91dCBvZiA2NC1iaXQgYXJndW1lbnQsIC0xIGlmIG5vbmUgc2V0ICovCistc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQ2NChfX3VpbnQ2NF90IHYpCisrc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQ2NCh1aW50NjRfdCB2KQorIHsKKyAJcmV0dXJuIGZsczY0KHYpIC0gMTsKKyB9CisgCisgLyogR2V0IGxvdyBiaXQgc2V0IG91dCBvZiAzMi1iaXQgYXJndW1lbnQsIC0xIGlmIG5vbmUgc2V0ICovCistc3RhdGljIGlubGluZSBpbnQgeGZzX2xvd2JpdDMyKF9fdWludDMyX3QgdikKKytzdGF0aWMgaW5saW5lIGludCB4ZnNfbG93Yml0MzIodWludDMyX3QgdikKKyB7CisgCXJldHVybiBmZnModikgLSAxOworIH0KKyAKKyAvKiBHZXQgbG93IGJpdCBzZXQgb3V0IG9mIDY0LWJpdCBhcmd1bWVudCwgLTEgaWYgbm9uZSBzZXQgKi8KKy1zdGF0aWMgaW5saW5lIGludCB4ZnNfbG93Yml0NjQoX191aW50NjRfdCB2KQorK3N0YXRpYyBpbmxpbmUgaW50IHhmc19sb3diaXQ2NCh1aW50NjRfdCB2KQorIHsKKy0JX191aW50MzJfdAl3ID0gKF9fdWludDMyX3QpdjsKKysJdWludDMyX3QJdyA9ICh1aW50MzJfdCl2OworIAlpbnQJCW4gPSAwOworIAorIAlpZiAodykgewkvKiBsb3dlciBiaXRzICovCisgCQluID0gZmZzKHcpOworIAl9IGVsc2UgewkvKiB1cHBlciBiaXRzICovCistCQl3ID0gKF9fdWludDMyX3QpKHYgPj4gMzIpOworKwkJdyA9ICh1aW50MzJfdCkodiA+PiAzMik7CisgCQlpZiAodykgeworIAkJCW4gPSBmZnModyk7CisgCQkJaWYgKG4pCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ibWFwX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2JtYXBfYnRyZWUuYworaW5kZXggYzQ4Y2JlYzEuLjllZTQwZDhiIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ibWFwX2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfYm1hcF9idHJlZS5jCitAQCAtOTEsOCArOTEsOCBAQCB4ZnNfYm1kcl90b19ibWJ0KAorICAqLworIFNUQVRJQyB2b2lkCisgX194ZnNfYm1idF9nZXRfYWxsKAorLQkJX191aW50NjRfdCBsMCwKKy0JCV9fdWludDY0X3QgbDEsCisrCQl1aW50NjRfdCBsMCwKKysJCXVpbnQ2NF90IGwxLAorIAkJeGZzX2JtYnRfaXJlY190ICpzKQorIHsKKyAJaW50CWV4dF9mbGFnOworQEAgLTU4NSwxMiArNTg1LDEyIEBAIHhmc19ibWJ0X2luaXRfcHRyX2Zyb21fY3VyKAorIAlwdHItPmwgPSAwOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm1idF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorIHsKKy0JcmV0dXJuIChfX2ludDY0X3QpYmU2NF90b19jcHUoa2V5LT5ibWJ0LmJyX3N0YXJ0b2ZmKSAtCisrCXJldHVybiAoaW50NjRfdCliZTY0X3RvX2NwdShrZXktPmJtYnQuYnJfc3RhcnRvZmYpIC0KKyAJCQkJICAgICAgY3VyLT5iY19yZWMuYi5icl9zdGFydG9mZjsKKyB9CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19idHJlZS5jIGIvbGlieGZzL3hmc19idHJlZS5jCitpbmRleCAzZDI5MzUyMC4uNTZiNTBhNWIgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfYnRyZWUuYworQEAgLTM5LDcgKzM5LDcgQEAga21lbV96b25lX3QJKnhmc19idHJlZV9jdXJfem9uZTsKKyAvKgorICAqIEJ0cmVlIG1hZ2ljIG51bWJlcnMuCisgICovCistc3RhdGljIGNvbnN0IF9fdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKytzdGF0aWMgY29uc3QgdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKyAJeyBYRlNfQUJUQl9NQUdJQywgWEZTX0FCVENfTUFHSUMsIDAsIFhGU19CTUFQX01BR0lDLCBYRlNfSUJUX01BR0lDLAorIAkgIFhGU19GSUJUX01BR0lDLCAwIH0sCisgCXsgWEZTX0FCVEJfQ1JDX01BR0lDLCBYRlNfQUJUQ19DUkNfTUFHSUMsIFhGU19STUFQX0NSQ19NQUdJQywKK0BAIC00NywxMiArNDcsMTIgQEAgc3RhdGljIGNvbnN0IF9fdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKyAJICBYRlNfUkVGQ19DUkNfTUFHSUMgfQorIH07CisgCistX191aW50MzJfdAorK3VpbnQzMl90CisgeGZzX2J0cmVlX21hZ2ljKAorIAlpbnQJCQljcmMsCisgCXhmc19idG51bV90CQlidG51bSkKKyB7CistCV9fdWludDMyX3QJCW1hZ2ljID0geGZzX21hZ2ljc1tjcmNdW2J0bnVtXTsKKysJdWludDMyX3QJCW1hZ2ljID0geGZzX21hZ2ljc1tjcmNdW2J0bnVtXTsKKyAKKyAJLyogRW5zdXJlIHdlIGFza2VkIGZvciBjcmMgZm9yIGNyYy1vbmx5IG1hZ2ljcy4gKi8KKyAJQVNTRVJUKG1hZ2ljICE9IDApOworQEAgLTc3NCwxNCArNzc0LDE0IEBAIHhmc19idHJlZV9sYXN0cmVjKAorICAqLworIHZvaWQKKyB4ZnNfYnRyZWVfb2Zmc2V0cygKKy0JX19pbnQ2NF90CWZpZWxkcywJCS8qIGJpdG1hc2sgb2YgZmllbGRzICovCisrCWludDY0X3QJCWZpZWxkcywJCS8qIGJpdG1hc2sgb2YgZmllbGRzICovCisgCWNvbnN0IHNob3J0CSpvZmZzZXRzLAkvKiB0YWJsZSBvZiBmaWVsZCBvZmZzZXRzICovCisgCWludAkJbmJpdHMsCQkvKiBudW1iZXIgb2YgYml0cyB0byBpbnNwZWN0ICovCisgCWludAkJKmZpcnN0LAkJLyogb3V0cHV0OiBmaXJzdCBieXRlIG9mZnNldCAqLworIAlpbnQJCSpsYXN0KQkJLyogb3V0cHV0OiBsYXN0IGJ5dGUgb2Zmc2V0ICovCisgeworIAlpbnQJCWk7CQkvKiBjdXJyZW50IGJpdCBudW1iZXIgKi8KKy0JX19pbnQ2NF90CWltYXNrOwkJLyogbWFzayBmb3IgY3VycmVudCBiaXQgbnVtYmVyICovCisrCWludDY0X3QJCWltYXNrOwkJLyogbWFzayBmb3IgY3VycmVudCBiaXQgbnVtYmVyICovCisgCisgCUFTU0VSVChmaWVsZHMgIT0gMCk7CisgCS8qCitAQCAtMTg0Miw3ICsxODQyLDcgQEAgeGZzX2J0cmVlX2xvb2t1cCgKKyAJaW50CQkJKnN0YXQpCS8qIHN1Y2Nlc3MvZmFpbHVyZSAqLworIHsKKyAJc3RydWN0IHhmc19idHJlZV9ibG9jawkqYmxvY2s7CS8qIGN1cnJlbnQgYnRyZWUgYmxvY2sgKi8KKy0JX19pbnQ2NF90CQlkaWZmOwkvKiBkaWZmZXJlbmNlIGZvciB0aGUgY3VycmVudCBrZXkgKi8KKysJaW50NjRfdAkJCWRpZmY7CS8qIGRpZmZlcmVuY2UgZm9yIHRoZSBjdXJyZW50IGtleSAqLworIAlpbnQJCQllcnJvcjsJLyogZXJyb3IgcmV0dXJuIHZhbHVlICovCisgCWludAkJCWtleW5vOwkvKiBjdXJyZW50IGtleSBudW1iZXIgKi8KKyAJaW50CQkJbGV2ZWw7CS8qIGxldmVsIGluIHRoZSBidHJlZSAqLworQEAgLTQ0MzUsNyArNDQzNSw3IEBAIHhmc19idHJlZV92aXNpdF9ibG9ja3MoCisgICogcmVjb3ZlcnkgY29tcGxldGlvbiB3cml0ZXMgdGhlIGNoYW5nZXMgdG8gZGlzay4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrX2NoYW5nZV9vd25lcl9pbmZvIHsKKy0JX191aW50NjRfdAkJbmV3X293bmVyOworKwl1aW50NjRfdAkJbmV3X293bmVyOworIAlzdHJ1Y3QgbGlzdF9oZWFkCSpidWZmZXJfbGlzdDsKKyB9OworIAorQEAgLTQ0ODEsNyArNDQ4MSw3IEBAIHhmc19idHJlZV9ibG9ja19jaGFuZ2Vfb3duZXIoCisgaW50CisgeGZzX2J0cmVlX2NoYW5nZV9vd25lcigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKy0JX191aW50NjRfdAkJbmV3X293bmVyLAorKwl1aW50NjRfdAkJbmV3X293bmVyLAorIAlzdHJ1Y3QgbGlzdF9oZWFkCSpidWZmZXJfbGlzdCkKKyB7CisgCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2tfY2hhbmdlX293bmVyX2luZm8JYmJjb2k7CitAQCAtNDU4NSw3ICs0NTg1LDcgQEAgeGZzX2J0cmVlX3NpbXBsZV9xdWVyeV9yYW5nZSgKKyB7CisgCXVuaW9uIHhmc19idHJlZV9yZWMJCSpyZWNwOworIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CQlyZWNfa2V5OworLQlfX2ludDY0X3QJCQlkaWZmOworKwlpbnQ2NF90CQkJCWRpZmY7CisgCWludAkJCQlzdGF0OworIAlib29sCQkJCWZpcnN0cmVjID0gdHJ1ZTsKKyAJaW50CQkJCWVycm9yOworQEAgLTQ2ODIsOCArNDY4Miw4IEBAIHhmc19idHJlZV9vdmVybGFwcGVkX3F1ZXJ5X3JhbmdlKAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CQkqaGtwOworIAl1bmlvbiB4ZnNfYnRyZWVfcmVjCQkqcmVjcDsKKyAJc3RydWN0IHhmc19idHJlZV9ibG9jawkJKmJsb2NrOworLQlfX2ludDY0X3QJCQlsZGlmZjsKKy0JX19pbnQ2NF90CQkJaGRpZmY7CisrCWludDY0X3QJCQkJbGRpZmY7CisrCWludDY0X3QJCQkJaGRpZmY7CisgCWludAkJCQlsZXZlbDsKKyAJc3RydWN0IHhmc19idWYJCQkqYnA7CisgCWludAkJCQlpOworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYnRyZWUuaCBiL2xpYnhmcy94ZnNfYnRyZWUuaAoraW5kZXggMDVjZjM1YjUuLjNjMWZlZDIzIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19idHJlZS5oCisrKysgYi9saWJ4ZnMveGZzX2J0cmVlLmgKK0BAIC03Niw3ICs3Niw3IEBAIHVuaW9uIHhmc19idHJlZV9yZWMgeworICNkZWZpbmUJWEZTX0JUTlVNX1JNQVAJKCh4ZnNfYnRudW1fdClYRlNfQlROVU1fUk1BUGkpCisgI2RlZmluZQlYRlNfQlROVU1fUkVGQwkoKHhmc19idG51bV90KVhGU19CVE5VTV9SRUZDaSkKKyAKKy1fX3VpbnQzMl90IHhmc19idHJlZV9tYWdpYyhpbnQgY3JjLCB4ZnNfYnRudW1fdCBidG51bSk7CisrdWludDMyX3QgeGZzX2J0cmVlX21hZ2ljKGludCBjcmMsIHhmc19idG51bV90IGJ0bnVtKTsKKyAKKyAvKgorICAqIEZvciBsb2dnaW5nIHJlY29yZCBmaWVsZHMuCitAQCAtMTUwLDE0ICsxNTAsMTQgQEAgc3RydWN0IHhmc19idHJlZV9vcHMgeworIAkJCQkJICB1bmlvbiB4ZnNfYnRyZWVfcmVjICpyZWMpOworIAorIAkvKiBkaWZmZXJlbmNlIGJldHdlZW4ga2V5IHZhbHVlIGFuZCBjdXJzb3IgdmFsdWUgKi8KKy0JX19pbnQ2NF90ICgqa2V5X2RpZmYpKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsCisrCWludDY0X3QgKCprZXlfZGlmZikoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKKyAJCQkgICAgICB1bmlvbiB4ZnNfYnRyZWVfa2V5ICprZXkpOworIAorIAkvKgorIAkgKiBEaWZmZXJlbmNlIGJldHdlZW4ga2V5MiBhbmQga2V5MSAtLSBwb3NpdGl2ZSBpZiBrZXkxID4ga2V5MiwKKyAJICogbmVnYXRpdmUgaWYga2V5MSA8IGtleTIsIGFuZCB6ZXJvIGlmIGVxdWFsLgorIAkgKi8KKy0JX19pbnQ2NF90ICgqZGlmZl90d29fa2V5cykoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKKysJaW50NjRfdCAoKmRpZmZfdHdvX2tleXMpKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsCisgCQkJCSAgIHVuaW9uIHhmc19idHJlZV9rZXkgKmtleTEsCisgCQkJCSAgIHVuaW9uIHhmc19idHJlZV9rZXkgKmtleTIpOworIAorQEAgLTIxMywxMSArMjEzLDExIEBAIHR5cGVkZWYgc3RydWN0IHhmc19idHJlZV9jdXIKKyAJdW5pb24geGZzX2J0cmVlX2lyZWMJYmNfcmVjOwkvKiBjdXJyZW50IGluc2VydC9zZWFyY2ggcmVjb3JkIHZhbHVlICovCisgCXN0cnVjdCB4ZnNfYnVmCSpiY19idWZzW1hGU19CVFJFRV9NQVhMRVZFTFNdOwkvKiBidWYgcHRyIHBlciBsZXZlbCAqLworIAlpbnQJCWJjX3B0cnNbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIGtleS9yZWNvcmQgIyAqLworLQlfX3VpbnQ4X3QJYmNfcmFbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIHJlYWRhaGVhZCBiaXRzICovCisrCXVpbnQ4X3QJCWJjX3JhW1hGU19CVFJFRV9NQVhMRVZFTFNdOwkvKiByZWFkYWhlYWQgYml0cyAqLworICNkZWZpbmUJWEZTX0JUQ1VSX0xFRlRSQQkxCS8qIGxlZnQgc2libGluZyBoYXMgYmVlbiByZWFkLWFoZWFkICovCisgI2RlZmluZQlYRlNfQlRDVVJfUklHSFRSQQkyCS8qIHJpZ2h0IHNpYmxpbmcgaGFzIGJlZW4gcmVhZC1haGVhZCAqLworLQlfX3VpbnQ4X3QJYmNfbmxldmVsczsJLyogbnVtYmVyIG9mIGxldmVscyBpbiB0aGUgdHJlZSAqLworLQlfX3VpbnQ4X3QJYmNfYmxvY2tsb2c7CS8qIGxvZzIoYmxvY2tzaXplKSBvZiBidHJlZSBibG9ja3MgKi8KKysJdWludDhfdAkJYmNfbmxldmVsczsJLyogbnVtYmVyIG9mIGxldmVscyBpbiB0aGUgdHJlZSAqLworKwl1aW50OF90CQliY19ibG9ja2xvZzsJLyogbG9nMihibG9ja3NpemUpIG9mIGJ0cmVlIGJsb2NrcyAqLworIAl4ZnNfYnRudW1fdAliY19idG51bTsJLyogaWRlbnRpZmllcyB3aGljaCBidHJlZSB0eXBlICovCisgCWludAkJYmNfc3RhdG9mZjsJLyogb2Zmc2V0IG9mIGJ0cmUgc3RhdHMgYXJyYXkgKi8KKyAJdW5pb24geworQEAgLTMzMCw3ICszMzAsNyBAQCB4ZnNfYnRyZWVfaXNsYXN0YmxvY2soCisgICovCisgdm9pZAorIHhmc19idHJlZV9vZmZzZXRzKAorLQlfX2ludDY0X3QJCWZpZWxkcywJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KKysJaW50NjRfdAkJCWZpZWxkcywJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KKyAJY29uc3Qgc2hvcnQJCSpvZmZzZXRzLC8qIHRhYmxlIG9mIGZpZWxkIG9mZnNldHMgKi8KKyAJaW50CQkJbmJpdHMsCS8qIG51bWJlciBvZiBiaXRzIHRvIGluc3BlY3QgKi8KKyAJaW50CQkJKmZpcnN0LAkvKiBvdXRwdXQ6IGZpcnN0IGJ5dGUgb2Zmc2V0ICovCitAQCAtNDA4LDcgKzQwOCw3IEBAIGludCB4ZnNfYnRyZWVfbmV3X2lyb290KHN0cnVjdCB4ZnNfYnRyZWVfY3VyICosIGludCAqLCBpbnQgKik7CisgaW50IHhmc19idHJlZV9pbnNlcnQoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgaW50ICopOworIGludCB4ZnNfYnRyZWVfZGVsZXRlKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICosIGludCAqKTsKKyBpbnQgeGZzX2J0cmVlX2dldF9yZWMoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgdW5pb24geGZzX2J0cmVlX3JlYyAqKiwgaW50ICopOworLWludCB4ZnNfYnRyZWVfY2hhbmdlX293bmVyKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsIF9fdWludDY0X3QgbmV3X293bmVyLAorK2ludCB4ZnNfYnRyZWVfY2hhbmdlX293bmVyKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsIHVpbnQ2NF90IG5ld19vd25lciwKKyAJCQkgICBzdHJ1Y3QgbGlzdF9oZWFkICpidWZmZXJfbGlzdCk7CisgCisgLyoKK0BAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgeGZzX2J0cmVlX2dldF9udW1yZWNzKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sgKmJsb2NrKQorIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgeGZzX2J0cmVlX3NldF9udW1yZWNzKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sgKmJsb2NrLAorLQkJX191aW50MTZfdCBudW1yZWNzKQorKwkJdWludDE2X3QgbnVtcmVjcykKKyB7CisgCWJsb2NrLT5iYl9udW1yZWNzID0gY3B1X3RvX2JlMTYobnVtcmVjcyk7CisgfQorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfY2tzdW0uaCBiL2xpYnhmcy94ZnNfY2tzdW0uaAoraW5kZXggYTQxNmM3Y2IuLjgyMTFmNDhiIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ja3N1bS5oCisrKysgYi9saWJ4ZnMveGZzX2Nrc3VtLmgKK0BAIC0xLDcgKzEsNyBAQAorICNpZm5kZWYgX1hGU19DS1NVTV9ICisgI2RlZmluZSBfWEZTX0NLU1VNX0ggMQorIAorLSNkZWZpbmUgWEZTX0NSQ19TRUVECSh+KF9fdWludDMyX3QpMCkKKysjZGVmaW5lIFhGU19DUkNfU0VFRAkofih1aW50MzJfdCkwKQorIAorIC8qCisgICogQ2FsY3VsYXRlIHRoZSBpbnRlcm1lZGlhdGUgY2hlY2tzdW0gZm9yIGEgYnVmZmVyIHRoYXQgaGFzIHRoZSBDUkMgZmllbGQKK0BAIC05LDExICs5LDExIEBACisgICogY2tzdW1fb2Zmc2V0IHBhcmFtZXRlci4gV2UgZG8gbm90IG1vZGlmeSB0aGUgYnVmZmVyIGR1cmluZyB2ZXJpZmljYXRpb24sCisgICogaGVuY2Ugd2UgaGF2ZSB0byBzcGxpdCB0aGUgQ1JDIGNhbGN1bGF0aW9uIGFjcm9zcyB0aGUgY2tzdW1fb2Zmc2V0LgorICAqLworLXN0YXRpYyBpbmxpbmUgX191aW50MzJfdAorK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKKyB4ZnNfc3RhcnRfY2tzdW1fc2FmZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorIHsKKy0JX191aW50MzJfdCB6ZXJvID0gMDsKKy0JX191aW50MzJfdCBjcmM7CisrCXVpbnQzMl90IHplcm8gPSAwOworKwl1aW50MzJfdCBjcmM7CisgCisgCS8qIENhbGN1bGF0ZSBDUkMgdXAgdG8gdGhlIGNoZWNrc3VtLiAqLworIAljcmMgPSBjcmMzMmMoWEZTX0NSQ19TRUVELCBidWZmZXIsIGNrc3VtX29mZnNldCk7CitAQCAtMzAsNyArMzAsNyBAQCB4ZnNfc3RhcnRfY2tzdW1fc2FmZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorICAqIEZhc3QgQ1JDIG1ldGhvZCB3aGVyZSB0aGUgYnVmZmVyIGlzIG1vZGlmaWVkLiBDYWxsZXJzIG11c3QgaGF2ZSBleGNsdXNpdmUKKyAgKiBhY2Nlc3MgdG8gdGhlIGJ1ZmZlciB3aGlsZSB0aGUgY2FsY3VsYXRpb24gdGFrZXMgcGxhY2UuCisgICovCistc3RhdGljIGlubGluZSBfX3VpbnQzMl90Cisrc3RhdGljIGlubGluZSB1aW50MzJfdAorIHhmc19zdGFydF9ja3N1bV91cGRhdGUoY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKKyB7CisgCS8qIHplcm8gdGhlIENSQyBmaWVsZCAqLworQEAgLTQ4LDcgKzQ4LDcgQEAgeGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorICAqIHNvIHRoYXQgaXQgaXMgY29uc2lzdGVudCBvbiBkaXNrLgorICAqLworIHN0YXRpYyBpbmxpbmUgX19sZTMyCisteGZzX2VuZF9ja3N1bShfX3VpbnQzMl90IGNyYykKKyt4ZnNfZW5kX2Nrc3VtKHVpbnQzMl90IGNyYykKKyB7CisgCXJldHVybiB+Y3B1X3RvX2xlMzIoY3JjKTsKKyB9CitAQCAtNjIsNyArNjIsNyBAQCB4ZnNfZW5kX2Nrc3VtKF9fdWludDMyX3QgY3JjKQorIHN0YXRpYyBpbmxpbmUgdm9pZAorIHhmc191cGRhdGVfY2tzdW0oY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKKyB7CistCV9fdWludDMyX3QgY3JjID0geGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKysJdWludDMyX3QgY3JjID0geGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKyAKKyAJKihfX2xlMzIgKikoYnVmZmVyICsgY2tzdW1fb2Zmc2V0KSA9IHhmc19lbmRfY2tzdW0oY3JjKTsKKyB9CitAQCAtNzMsNyArNzMsNyBAQCB4ZnNfdXBkYXRlX2Nrc3VtKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCisgc3RhdGljIGlubGluZSBpbnQKKyB4ZnNfdmVyaWZ5X2Nrc3VtKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCisgeworLQlfX3VpbnQzMl90IGNyYyA9IHhmc19zdGFydF9ja3N1bV9zYWZlKGJ1ZmZlciwgbGVuZ3RoLCBja3N1bV9vZmZzZXQpOworKwl1aW50MzJfdCBjcmMgPSB4ZnNfc3RhcnRfY2tzdW1fc2FmZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKyAKKyAJcmV0dXJuICooX19sZTMyICopKGJ1ZmZlciArIGNrc3VtX29mZnNldCkgPT0geGZzX2VuZF9ja3N1bShjcmMpOworIH0KK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RhX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmMKK2luZGV4IGJjMTJmNThmLi4wODQ0N2JlOCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuYworKysrIGIvbGlieGZzL3hmc19kYV9idHJlZS5jCitAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgeGZzX2RhM19wYXRoX3NoaWZ0KAorICAqIFRoaXMgaXMgaW1wbGVtZW50ZWQgd2l0aCBzb21lIHNvdXJjZS1sZXZlbCBsb29wIHVucm9sbGluZy4KKyAgKi8KKyB4ZnNfZGFoYXNoX3QKKy14ZnNfZGFfaGFzaG5hbWUoY29uc3QgX191aW50OF90ICpuYW1lLCBpbnQgbmFtZWxlbikKKyt4ZnNfZGFfaGFzaG5hbWUoY29uc3QgdWludDhfdCAqbmFtZSwgaW50IG5hbWVsZW4pCisgeworIAl4ZnNfZGFoYXNoX3QgaGFzaDsKKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RhX2J0cmVlLmggYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmgKK2luZGV4IDRlMjljYjZhLi5hZTZkZTE3NCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuaAorKysrIGIvbGlieGZzL3hmc19kYV9idHJlZS5oCitAQCAtNjAsMTAgKzYwLDEwIEBAIGVudW0geGZzX2RhY21wIHsKKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGFfYXJncyB7CisgCXN0cnVjdCB4ZnNfZGFfZ2VvbWV0cnkgKmdlbzsJLyogZGEgYmxvY2sgZ2VvbWV0cnkgKi8KKy0JY29uc3QgX191aW50OF90CSpuYW1lOwkJLyogc3RyaW5nIChtYXliZSBub3QgTlVMTCB0ZXJtaW5hdGVkKSAqLworKwljb25zdCB1aW50OF90CQkqbmFtZTsJCS8qIHN0cmluZyAobWF5YmUgbm90IE5VTEwgdGVybWluYXRlZCkgKi8KKyAJaW50CQluYW1lbGVuOwkvKiBsZW5ndGggb2Ygc3RyaW5nIChtYXliZSBubyBOVUxMKSAqLworLQlfX3VpbnQ4X3QJZmlsZXR5cGU7CS8qIGZpbGV0eXBlIG9mIGlub2RlIGZvciBkaXJlY3RvcmllcyAqLworLQlfX3VpbnQ4X3QJKnZhbHVlOwkJLyogc2V0IG9mIGJ5dGVzIChtYXliZSBjb250YWluIE5VTExzKSAqLworKwl1aW50OF90CQlmaWxldHlwZTsJLyogZmlsZXR5cGUgb2YgaW5vZGUgZm9yIGRpcmVjdG9yaWVzICovCisrCXVpbnQ4X3QJCSp2YWx1ZTsJCS8qIHNldCBvZiBieXRlcyAobWF5YmUgY29udGFpbiBOVUxMcykgKi8KKyAJaW50CQl2YWx1ZWxlbjsJLyogbGVuZ3RoIG9mIHZhbHVlICovCisgCWludAkJZmxhZ3M7CQkvKiBhcmd1bWVudCBmbGFncyAoZWc6IEFUVFJfTk9DUkVBVEUpICovCisgCXhmc19kYWhhc2hfdAloYXNodmFsOwkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgKi8KK0BAIC0yMDcsNyArMjA3LDcgQEAgaW50CXhmc19kYV9yZWFkYV9idWYoc3RydWN0IHhmc19pbm9kZSAqZHAsIHhmc19kYWJsa190IGJubywKKyBpbnQJeGZzX2RhX3Nocmlua19pbm9kZSh4ZnNfZGFfYXJnc190ICphcmdzLCB4ZnNfZGFibGtfdCBkZWFkX2Jsa25vLAorIAkJCQkJICBzdHJ1Y3QgeGZzX2J1ZiAqZGVhZF9idWYpOworIAorLXVpbnQgeGZzX2RhX2hhc2huYW1lKGNvbnN0IF9fdWludDhfdCAqbmFtZV9zdHJpbmcsIGludCBuYW1lX2xlbmd0aCk7CisrdWludCB4ZnNfZGFfaGFzaG5hbWUoY29uc3QgdWludDhfdCAqbmFtZV9zdHJpbmcsIGludCBuYW1lX2xlbmd0aCk7CisgZW51bSB4ZnNfZGFjbXAgeGZzX2RhX2NvbXBuYW1lKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncywKKyAJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqbmFtZSwgaW50IGxlbik7CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kYV9mb3JtYXQuYyBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKK2luZGV4IDJiNzMyYjNjLi5mMzAwMDRmNiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKKysrKyBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKK0BAIC00OSw3ICs0OSw3IEBAIHhmc19kaXIzX3NmX2VudHNpemUoCisgCXN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIJKmhkciwKKyAJaW50CQkJbGVuKQorIHsKKy0JcmV0dXJuIHhmc19kaXIyX3NmX2VudHNpemUoaGRyLCBsZW4pICsgc2l6ZW9mKF9fdWludDhfdCk7CisrCXJldHVybiB4ZnNfZGlyMl9zZl9lbnRzaXplKGhkciwgbGVuKSArIHNpemVvZih1aW50OF90KTsKKyB9CisgCisgc3RhdGljIHN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqCitAQCAtNzcsNyArNzcsNyBAQCB4ZnNfZGlyM19zZl9uZXh0ZW50cnkoCisgICogbm90IG5lY2Vzc2FyeS4gRm9yIG5vbi1maWxldHlwZSBlbmFibGUgZGlyZWN0b3JpZXMsIHRoZSB0eXBlIGlzIGFsd2F5cworICAqIHVua25vd24gYW5kIHdlIG5ldmVyIHN0b3JlIHRoZSB2YWx1ZS4KKyAgKi8KKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyMl9zZmVfZ2V0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApCisgeworQEAgLTg3LDE2ICs4NywxNiBAQCB4ZnNfZGlyMl9zZmVfZ2V0X2Z0eXBlKAorIHN0YXRpYyB2b2lkCisgeGZzX2RpcjJfc2ZlX3B1dF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAlBU1NFUlQoZnR5cGUgPCBYRlNfRElSM19GVF9NQVgpOworIH0KKyAKKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyM19zZmVfZ2V0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApCisgeworLQlfX3VpbnQ4X3QJZnR5cGU7CisrCXVpbnQ4X3QJCWZ0eXBlOworIAorIAlmdHlwZSA9IHNmZXAtPm5hbWVbc2ZlcC0+bmFtZWxlbl07CisgCWlmIChmdHlwZSA+PSBYRlNfRElSM19GVF9NQVgpCitAQCAtMTA3LDcgKzEwNyw3IEBAIHhmc19kaXIzX3NmZV9nZXRfZnR5cGUoCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyM19zZmVfcHV0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXAsCistCV9fdWludDhfdAkJZnR5cGUpCisrCXVpbnQ4X3QJCQlmdHlwZSkKKyB7CisgCUFTU0VSVChmdHlwZSA8IFhGU19ESVIzX0ZUX01BWCk7CisgCitAQCAtMTI0LDcgKzEyNCw3IEBAIHhmc19kaXIzX3NmZV9wdXRfZnR5cGUoCisgc3RhdGljIHhmc19pbm9fdAorIHhmc19kaXIyX3NmX2dldF9pbm8oCisgCXN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIJKmhkciwKKy0JX191aW50OF90CQkqZnJvbSkKKysJdWludDhfdAkJCSpmcm9tKQorIHsKKyAJaWYgKGhkci0+aThjb3VudCkKKyAJCXJldHVybiBnZXRfdW5hbGlnbmVkX2JlNjQoZnJvbSkgJiAweDAwZmZmZmZmZmZmZmZmZmZVTEw7CitAQCAtMTM1LDcgKzEzNSw3IEBAIHhmc19kaXIyX3NmX2dldF9pbm8oCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyMl9zZl9wdXRfaW5vKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyCSpoZHIsCistCV9fdWludDhfdAkJKnRvLAorKwl1aW50OF90CQkJKnRvLAorIAl4ZnNfaW5vX3QJCWlubykKKyB7CisgCUFTU0VSVCgoaW5vICYgMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA9PSAwKTsKK0BAIC0yMjUsNyArMjI1LDcgQEAgeGZzX2RpcjNfc2ZlX3B1dF9pbm8oCisgCisgI2RlZmluZSBYRlNfRElSM19EQVRBX0VOVFNJWkUobikJCQkJCVwKKyAJcm91bmRfdXAoKG9mZnNldG9mKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5LCBuYW1lWzBdKSArIChuKSArCVwKKy0JCSBzaXplb2YoeGZzX2RpcjJfZGF0YV9vZmZfdCkgKyBzaXplb2YoX191aW50OF90KSksCVwKKysJCSBzaXplb2YoeGZzX2RpcjJfZGF0YV9vZmZfdCkgKyBzaXplb2YodWludDhfdCkpLAlcCisgCQlYRlNfRElSMl9EQVRBX0FMSUdOKQorIAorIHN0YXRpYyBpbnQKK0BAIC0yNDIsNyArMjQyLDcgQEAgeGZzX2RpcjNfZGF0YV9lbnRzaXplKAorIAlyZXR1cm4gWEZTX0RJUjNfREFUQV9FTlRTSVpFKG4pOworIH0KKyAKKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyMl9kYXRhX2dldF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCkKKyB7CitAQCAtMjUyLDE2ICsyNTIsMTYgQEAgeGZzX2RpcjJfZGF0YV9nZXRfZnR5cGUoCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyMl9kYXRhX3B1dF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCwKKy0JX191aW50OF90CQlmdHlwZSkKKysJdWludDhfdAkJCWZ0eXBlKQorIHsKKyAJQVNTRVJUKGZ0eXBlIDwgWEZTX0RJUjNfRlRfTUFYKTsKKyB9CisgCistc3RhdGljIF9fdWludDhfdAorK3N0YXRpYyB1aW50OF90CisgeGZzX2RpcjNfZGF0YV9nZXRfZnR5cGUoCisgCXN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApCisgeworLQlfX3VpbnQ4X3QJZnR5cGUgPSBkZXAtPm5hbWVbZGVwLT5uYW1lbGVuXTsKKysJdWludDhfdAkJZnR5cGUgPSBkZXAtPm5hbWVbZGVwLT5uYW1lbGVuXTsKKyAKKyAJaWYgKGZ0eXBlID49IFhGU19ESVIzX0ZUX01BWCkKKyAJCXJldHVybiBYRlNfRElSM19GVF9VTktOT1dOOworQEAgLTI3MSw3ICsyNzEsNyBAQCB4ZnNfZGlyM19kYXRhX2dldF9mdHlwZSgKKyBzdGF0aWMgdm9pZAorIHhmc19kaXIzX2RhdGFfcHV0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9lbnRyeSAqZGVwLAorLQlfX3VpbnQ4X3QJCXR5cGUpCisrCXVpbnQ4X3QJCQl0eXBlKQorIHsKKyAJQVNTRVJUKHR5cGUgPCBYRlNfRElSM19GVF9NQVgpOworIAlBU1NFUlQoZGVwLT5uYW1lbGVuICE9IDApOworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmggYi9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCitpbmRleCA5YTQ5MmE5ZS4uMzc3MWVkY2IgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCisrKysgYi9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCitAQCAtMTExLDExICsxMTEsMTEgQEAgc3RydWN0IHhmc19kYTNfaW50bm9kZSB7CisgICogYXBwcm9wcmlhdGUuCisgICovCisgc3RydWN0IHhmc19kYTNfaWNub2RlX2hkciB7CistCV9fdWludDMyX3QJZm9ydzsKKy0JX191aW50MzJfdAliYWNrOworLQlfX3VpbnQxNl90CW1hZ2ljOworLQlfX3VpbnQxNl90CWNvdW50OworLQlfX3VpbnQxNl90CWxldmVsOworKwl1aW50MzJfdAlmb3J3OworKwl1aW50MzJfdAliYWNrOworKwl1aW50MTZfdAltYWdpYzsKKysJdWludDE2X3QJY291bnQ7CisrCXVpbnQxNl90CWxldmVsOworIH07CisgCisgLyoKK0BAIC0xODcsMTQgKzE4NywxNCBAQCBzdHJ1Y3QgeGZzX2RhM19pY25vZGVfaGRyIHsKKyAvKgorICAqIEJ5dGUgb2Zmc2V0IGluIGRhdGEgYmxvY2sgYW5kIHNob3J0Zm9ybSBlbnRyeS4KKyAgKi8KKy10eXBlZGVmCV9fdWludDE2X3QJeGZzX2RpcjJfZGF0YV9vZmZfdDsKKyt0eXBlZGVmIHVpbnQxNl90CXhmc19kaXIyX2RhdGFfb2ZmX3Q7CisgI2RlZmluZQlOVUxMREFUQU9GRgkweGZmZmZVCisgdHlwZWRlZiB1aW50CQl4ZnNfZGlyMl9kYXRhX2FvZmZfdDsJLyogYXJndW1lbnQgZm9ybSAqLworIAorIC8qCisgICogT2Zmc2V0IGluIGRhdGEgc3BhY2Ugb2YgYSBkYXRhIGVudHJ5LgorICAqLworLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGlyMl9kYXRhcHRyX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGlyMl9kYXRhcHRyX3Q7CisgI2RlZmluZQlYRlNfRElSMl9NQVhfREFUQVBUUgkoKHhmc19kaXIyX2RhdGFwdHJfdCkweGZmZmZmZmZmKQorICNkZWZpbmUJWEZTX0RJUjJfTlVMTF9EQVRBUFRSCSgoeGZzX2RpcjJfZGF0YXB0cl90KTApCisgCitAQCAtMjA2LDcgKzIwNiw3IEBAIHR5cGVkZWYJeGZzX29mZl90CXhmc19kaXIyX29mZl90OworIC8qCisgICogRGlyZWN0b3J5IGJsb2NrIG51bWJlciAobG9naWNhbCBkaXJibGsgaW4gZmlsZSkKKyAgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2RpcjJfZGJfdDsKKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kaXIyX2RiX3Q7CisgCisgI2RlZmluZSBYRlNfSU5PMzJfU0laRQk0CisgI2RlZmluZSBYRlNfSU5PNjRfU0laRQk4CitAQCAtMjI2LDkgKzIyNiw5IEBAIHR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGlyMl9kYl90OworICAqIG92ZXIgdGhlbS4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIgeworLQlfX3VpbnQ4X3QJCWNvdW50OwkJLyogY291bnQgb2YgZW50cmllcyAqLworLQlfX3VpbnQ4X3QJCWk4Y291bnQ7CS8qIGNvdW50IG9mIDgtYnl0ZSBpbm9kZSAjcyAqLworLQlfX3VpbnQ4X3QJCXBhcmVudFs4XTsJLyogcGFyZW50IGRpciBpbm9kZSBudW1iZXIgKi8KKysJdWludDhfdAkJCWNvdW50OwkJLyogY291bnQgb2YgZW50cmllcyAqLworKwl1aW50OF90CQkJaThjb3VudDsJLyogY291bnQgb2YgOC1ieXRlIGlub2RlICNzICovCisrCXVpbnQ4X3QJCQlwYXJlbnRbOF07CS8qIHBhcmVudCBkaXIgaW5vZGUgbnVtYmVyICovCisgfSBfX3BhY2tlZCB4ZnNfZGlyMl9zZl9oZHJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSB7CitAQCAtNDQ3LDExICs0NDcsMTEgQEAgc3RydWN0IHhmc19kaXIzX2xlYWZfaGRyIHsKKyB9OworIAorIHN0cnVjdCB4ZnNfZGlyM19pY2xlYWZfaGRyIHsKKy0JX191aW50MzJfdAkJZm9ydzsKKy0JX191aW50MzJfdAkJYmFjazsKKy0JX191aW50MTZfdAkJbWFnaWM7CistCV9fdWludDE2X3QJCWNvdW50OworLQlfX3VpbnQxNl90CQlzdGFsZTsKKysJdWludDMyX3QJCWZvcnc7CisrCXVpbnQzMl90CQliYWNrOworKwl1aW50MTZfdAkJbWFnaWM7CisrCXVpbnQxNl90CQljb3VudDsKKysJdWludDE2X3QJCXN0YWxlOworIH07CisgCisgLyoKK0BAIC01MzgsMTAgKzUzOCwxMCBAQCBzdHJ1Y3QgeGZzX2RpcjNfZnJlZSB7CisgICogeGZzX2RpcjNfZnJlZV9oZHJfZnJvbV9kaXNrL3hmc19kaXIzX2ZyZWVfaGRyX3RvX2Rpc2suCisgICovCisgc3RydWN0IHhmc19kaXIzX2ljZnJlZV9oZHIgeworLQlfX3VpbnQzMl90CW1hZ2ljOworLQlfX3VpbnQzMl90CWZpcnN0ZGI7CistCV9fdWludDMyX3QJbnZhbGlkOworLQlfX3VpbnQzMl90CW51c2VkOworKwl1aW50MzJfdAltYWdpYzsKKysJdWludDMyX3QJZmlyc3RkYjsKKysJdWludDMyX3QJbnZhbGlkOworKwl1aW50MzJfdAludXNlZDsKKyAKKyB9OworIAorQEAgLTYzMiwxMCArNjMyLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3Nob3J0Zm9ybSB7CisgCQlfX3U4CXBhZGRpbmc7CisgCX0gaGRyOworIAlzdHJ1Y3QgeGZzX2F0dHJfc2ZfZW50cnkgeworLQkJX191aW50OF90IG5hbWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgbmFtZSAobm8gTlVMTCkgKi8KKy0JCV9fdWludDhfdCB2YWx1ZWxlbjsJLyogYWN0dWFsIGxlbmd0aCBvZiB2YWx1ZSAobm8gTlVMTCkgKi8KKy0JCV9fdWludDhfdCBmbGFnczsJLyogZmxhZ3MgYml0cyAoc2VlIHhmc19hdHRyX2xlYWYuaCkgKi8KKy0JCV9fdWludDhfdCBuYW1ldmFsWzFdOwkvKiBuYW1lICYgdmFsdWUgYnl0ZXMgY29uY2F0ZW5hdGVkICovCisrCQl1aW50OF90IG5hbWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgbmFtZSAobm8gTlVMTCkgKi8KKysJCXVpbnQ4X3QgdmFsdWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgdmFsdWUgKG5vIE5VTEwpICovCisrCQl1aW50OF90IGZsYWdzOwkvKiBmbGFncyBiaXRzIChzZWUgeGZzX2F0dHJfbGVhZi5oKSAqLworKwkJdWludDhfdCBuYW1ldmFsWzFdOwkvKiBuYW1lICYgdmFsdWUgYnl0ZXMgY29uY2F0ZW5hdGVkICovCisgCX0gbGlzdFsxXTsJCQkvKiB2YXJpYWJsZSBzaXplZCBhcnJheSAqLworIH0geGZzX2F0dHJfc2hvcnRmb3JtX3Q7CisgCitAQCAtNzI1LDIyICs3MjUsMjIgQEAgc3RydWN0IHhmc19hdHRyM19sZWFmYmxvY2sgeworICAqIGluY29yZSwgbmV1dHJhbCB2ZXJzaW9uIG9mIHRoZSBhdHRyaWJ1dGUgbGVhZiBoZWFkZXIKKyAgKi8KKyBzdHJ1Y3QgeGZzX2F0dHIzX2ljbGVhZl9oZHIgeworLQlfX3VpbnQzMl90CWZvcnc7CistCV9fdWludDMyX3QJYmFjazsKKy0JX191aW50MTZfdAltYWdpYzsKKy0JX191aW50MTZfdAljb3VudDsKKy0JX191aW50MTZfdAl1c2VkYnl0ZXM7CisrCXVpbnQzMl90CWZvcnc7CisrCXVpbnQzMl90CWJhY2s7CisrCXVpbnQxNl90CW1hZ2ljOworKwl1aW50MTZfdAljb3VudDsKKysJdWludDE2X3QJdXNlZGJ5dGVzOworIAkvKgorIAkgKiBmaXJzdHVzZWQgaXMgMzItYml0IGhlcmUgaW5zdGVhZCBvZiAxNi1iaXQgbGlrZSB0aGUgb24tZGlzayB2YXJpYW50CisgCSAqIHRvIHN1cHBvcnQgbWF4aW11bSBmc2Igc2l6ZSBvZiA2NGsgd2l0aG91dCBvdmVyZmxvdyBpc3N1ZXMgdGhyb3VnaG91dAorIAkgKiB0aGUgYXR0ciBjb2RlLiBJbnN0ZWFkLCB0aGUgb3ZlcmZsb3cgY29uZGl0aW9uIGlzIGhhbmRsZWQgb24KKyAJICogY29udmVyc2lvbiB0by9mcm9tIGRpc2suCisgCSAqLworLQlfX3VpbnQzMl90CWZpcnN0dXNlZDsKKysJdWludDMyX3QJZmlyc3R1c2VkOworIAlfX3U4CQlob2xlczsKKyAJc3RydWN0IHsKKy0JCV9fdWludDE2X3QJYmFzZTsKKy0JCV9fdWludDE2X3QJc2l6ZTsKKysJCXVpbnQxNl90CWJhc2U7CisrCQl1aW50MTZfdAlzaXplOworIAl9IGZyZWVtYXBbWEZTX0FUVFJfTEVBRl9NQVBTSVpFXTsKKyB9OworIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGlyMi5oIGIvbGlieGZzL3hmc19kaXIyLmgKK2luZGV4IGQ2ZTZkOWQxLi4yMWM4ZjhiZiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMi5oCisrKysgYi9saWJ4ZnMveGZzX2RpcjIuaAorQEAgLTQ3LDkgKzQ3LDkgQEAgc3RydWN0IHhmc19kaXJfb3BzIHsKKyAJc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICoKKyAJCSgqc2ZfbmV4dGVudHJ5KShzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICpoZHIsCisgCQkJCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCk7CistCV9fdWludDhfdCAoKnNmX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwKTsKKysJdWludDhfdCAoKnNmX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwKTsKKyAJdm9pZAkoKnNmX3B1dF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwLAorLQkJCQlfX3VpbnQ4X3QgZnR5cGUpOworKwkJCQl1aW50OF90IGZ0eXBlKTsKKyAJeGZzX2lub190ICgqc2ZfZ2V0X2lubykoc3RydWN0IHhmc19kaXIyX3NmX2hkciAqaGRyLAorIAkJCQlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApOworIAl2b2lkCSgqc2ZfcHV0X2lubykoc3RydWN0IHhmc19kaXIyX3NmX2hkciAqaGRyLAorQEAgLTYwLDkgKzYwLDkgQEAgc3RydWN0IHhmc19kaXJfb3BzIHsKKyAJCQkJICAgICB4ZnNfaW5vX3QgaW5vKTsKKyAKKyAJaW50CSgqZGF0YV9lbnRzaXplKShpbnQgbGVuKTsKKy0JX191aW50OF90ICgqZGF0YV9nZXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworKwl1aW50OF90ICgqZGF0YV9nZXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworIAl2b2lkCSgqZGF0YV9wdXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXAsCistCQkJCV9fdWludDhfdCBmdHlwZSk7CisrCQkJCXVpbnQ4X3QgZnR5cGUpOworIAlfX2JlMTYgKiAoKmRhdGFfZW50cnlfdGFnX3ApKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9mcmVlICoKKyAJCSgqZGF0YV9iZXN0ZnJlZV9wKShzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9oZHIgKmhkcik7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX2xlYWYuYyBiL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKK2luZGV4IGY4MGQ5MWZjLi40MGEzNWI4NCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKK0BAIC0xNDIsNyArMTQyLDcgQEAgeGZzX2RpcjNfbGVhZl9jaGVja19pbnQoCisgc3RhdGljIGJvb2wKKyB4ZnNfZGlyM19sZWFmX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYJCSpicCwKKy0JX191aW50MTZfdAkJbWFnaWMpCisrCXVpbnQxNl90CQltYWdpYykKKyB7CisgCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudDsKKyAJc3RydWN0IHhmc19kaXIyX2xlYWYJKmxlYWYgPSBicC0+Yl9hZGRyOworQEAgLTE1MSw3ICsxNTEsNyBAQCB4ZnNfZGlyM19sZWFmX3ZlcmlmeSgKKyAKKyAJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpKSB7CisgCQlzdHJ1Y3QgeGZzX2RpcjNfbGVhZl9oZHIgKmxlYWYzID0gYnAtPmJfYWRkcjsKKy0JCV9fdWludDE2X3QJCW1hZ2ljMzsKKysJCXVpbnQxNl90CQltYWdpYzM7CisgCisgCQltYWdpYzMgPSAobWFnaWMgPT0gWEZTX0RJUjJfTEVBRjFfTUFHSUMpID8gWEZTX0RJUjNfTEVBRjFfTUFHSUMKKyAJCQkJCQkJIDogWEZTX0RJUjNfTEVBRk5fTUFHSUM7CitAQCAtMTc1LDcgKzE3NSw3IEBAIHhmc19kaXIzX2xlYWZfdmVyaWZ5KAorIHN0YXRpYyB2b2lkCisgX19yZWFkX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYgICpicCwKKy0JX191aW50MTZfdAltYWdpYykKKysJdWludDE2X3QJbWFnaWMpCisgeworIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisgCitAQCAtMTkyLDcgKzE5Miw3IEBAIF9fcmVhZF92ZXJpZnkoCisgc3RhdGljIHZvaWQKKyBfX3dyaXRlX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYgICpicCwKKy0JX191aW50MTZfdAltYWdpYykKKysJdWludDE2X3QJbWFnaWMpCisgeworIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisgCXN0cnVjdCB4ZnNfYnVmX2xvZ19pdGVtCSpiaXAgPSBicC0+Yl9mc3ByaXY7CitAQCAtMjk2LDcgKzI5Niw3IEBAIHhmc19kaXIzX2xlYWZfaW5pdCgKKyAJc3RydWN0IHhmc190cmFucwkqdHAsCisgCXN0cnVjdCB4ZnNfYnVmCQkqYnAsCisgCXhmc19pbm9fdAkJb3duZXIsCistCV9fdWludDE2X3QJCXR5cGUpCisrCXVpbnQxNl90CQl0eXBlKQorIHsKKyAJc3RydWN0IHhmc19kaXIyX2xlYWYJKmxlYWYgPSBicC0+Yl9hZGRyOworIAorQEAgLTM0MCw3ICszNDAsNyBAQCB4ZnNfZGlyM19sZWFmX2dldF9idWYoCisgCXhmc19kYV9hcmdzX3QJCSphcmdzLAorIAl4ZnNfZGlyMl9kYl90CQlibm8sCisgCXN0cnVjdCB4ZnNfYnVmCQkqKmJwcCwKKy0JX191aW50MTZfdAkJbWFnaWMpCisrCXVpbnQxNl90CQltYWdpYykKKyB7CisgCXN0cnVjdCB4ZnNfaW5vZGUJKmRwID0gYXJncy0+ZHA7CisgCXN0cnVjdCB4ZnNfdHJhbnMJKnRwID0gYXJncy0+dHJhbnM7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX3ByaXYuaCBiL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKK2luZGV4IDM5Zjg2MDRmLi4wMTFkZjRkYSAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKK0BAIC02OSw3ICs2OSw3IEBAIGV4dGVybiB2b2lkIHhmc19kaXIzX2xlYWZfY29tcGFjdF94MShzdHJ1Y3QgeGZzX2RpcjNfaWNsZWFmX2hkciAqbGVhZmhkciwKKyAJCXN0cnVjdCB4ZnNfZGlyMl9sZWFmX2VudHJ5ICplbnRzLCBpbnQgKmluZGV4cCwKKyAJCWludCAqbG93c3RhbGVwLCBpbnQgKmhpZ2hzdGFsZXAsIGludCAqbG93bG9ncCwgaW50ICpoaWdobG9ncCk7CisgZXh0ZXJuIGludCB4ZnNfZGlyM19sZWFmX2dldF9idWYoc3RydWN0IHhmc19kYV9hcmdzICphcmdzLCB4ZnNfZGlyMl9kYl90IGJubywKKy0JCXN0cnVjdCB4ZnNfYnVmICoqYnBwLCBfX3VpbnQxNl90IG1hZ2ljKTsKKysJCXN0cnVjdCB4ZnNfYnVmICoqYnBwLCB1aW50MTZfdCBtYWdpYyk7CisgZXh0ZXJuIHZvaWQgeGZzX2RpcjNfbGVhZl9sb2dfZW50cyhzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsCisgCQlzdHJ1Y3QgeGZzX2J1ZiAqYnAsIGludCBmaXJzdCwgaW50IGxhc3QpOworIGV4dGVybiB2b2lkIHhmc19kaXIzX2xlYWZfbG9nX2hlYWRlcihzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX3NmLmMgYi9saWJ4ZnMveGZzX2RpcjJfc2YuYworaW5kZXggMTk1ZjgxNmQuLjBjNDUzOTg4IDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19kaXIyX3NmLmMKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9zZi5jCitAQCAtMTI1LDcgKzEyNSw3IEBAIHhmc19kaXIyX2Jsb2NrX3Nmc2l6ZSgKKyAJCSAqIENhbGN1bGF0ZSB0aGUgbmV3IHNpemUsIHNlZSBpZiB3ZSBzaG91bGQgZ2l2ZSB1cCB5ZXQuCisgCQkgKi8KKyAJCXNpemUgPSB4ZnNfZGlyMl9zZl9oZHJfc2l6ZShpOGNvdW50KSArCS8qIGhlYWRlciAqLworLQkJICAgICAgIGNvdW50ICogMyAqIHNpemVvZihfX3U4KSArCS8qIG5hbWVsZW4gKyBvZmZzZXQgKi8KKysJCSAgICAgICBjb3VudCAqIDMgKiBzaXplb2YodTgpICsJCS8qIG5hbWVsZW4gKyBvZmZzZXQgKi8KKyAJCSAgICAgICBuYW1lbGVuICsJCQkvKiBuYW1lICovCisgCQkgICAgICAgKGk4Y291bnQgPwkJCS8qIGludW1iZXIgKi8KKyAJCQkJY291bnQgKiBYRlNfSU5PNjRfU0laRSA6CitAQCAtNjQ1LDcgKzY0NSw3IEBAIHhmc19kaXIyX3NmX3ZlcmlmeSgKKyAJaW50CQkJCW9mZnNldDsKKyAJaW50CQkJCXNpemU7CisgCWludAkJCQllcnJvcjsKKy0JX191aW50OF90CQkJZmlsZXR5cGU7CisrCXVpbnQ4X3QJCQkJZmlsZXR5cGU7CisgCisgCUFTU0VSVChpcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCk7CisgCS8qCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19mb3JtYXQuaCBiL2xpYnhmcy94ZnNfZm9ybWF0LmgKK2luZGV4IDRjM2VkMWZkLi5hNTNmMDM1ZiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZm9ybWF0LmgKKysrKyBiL2xpYnhmcy94ZnNfZm9ybWF0LmgKK0BAIC0xMDMsOCArMTAzLDggQEAgc3RydWN0IHhmc19pZm9yazsKKyAgKiBNdXN0IGJlIHBhZGRlZCB0byA2NCBiaXQgYWxpZ25tZW50LgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19zYiB7CistCV9fdWludDMyX3QJc2JfbWFnaWNudW07CS8qIG1hZ2ljIG51bWJlciA9PSBYRlNfU0JfTUFHSUMgKi8KKy0JX191aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGxvZ2ljYWwgYmxvY2sgc2l6ZSwgYnl0ZXMgKi8KKysJdWludDMyX3QJc2JfbWFnaWNudW07CS8qIG1hZ2ljIG51bWJlciA9PSBYRlNfU0JfTUFHSUMgKi8KKysJdWludDMyX3QJc2JfYmxvY2tzaXplOwkvKiBsb2dpY2FsIGJsb2NrIHNpemUsIGJ5dGVzICovCisgCXhmc19yZnNibG9ja190CXNiX2RibG9ja3M7CS8qIG51bWJlciBvZiBkYXRhIGJsb2NrcyAqLworIAl4ZnNfcmZzYmxvY2tfdAlzYl9yYmxvY2tzOwkvKiBudW1iZXIgb2YgcmVhbHRpbWUgYmxvY2tzICovCisgCXhmc19ydGJsb2NrX3QJc2JfcmV4dGVudHM7CS8qIG51bWJlciBvZiByZWFsdGltZSBleHRlbnRzICovCitAQCAtMTE4LDQ1ICsxMTgsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3NiIHsKKyAJeGZzX2FnbnVtYmVyX3QJc2JfYWdjb3VudDsJLyogbnVtYmVyIG9mIGFsbG9jYXRpb24gZ3JvdXBzICovCisgCXhmc19leHRsZW5fdAlzYl9yYm1ibG9ja3M7CS8qIG51bWJlciBvZiBydCBiaXRtYXAgYmxvY2tzICovCisgCXhmc19leHRsZW5fdAlzYl9sb2dibG9ja3M7CS8qIG51bWJlciBvZiBsb2cgYmxvY2tzICovCistCV9fdWludDE2X3QJc2JfdmVyc2lvbm51bTsJLyogaGVhZGVyIHZlcnNpb24gPT0gWEZTX1NCX1ZFUlNJT04gKi8KKy0JX191aW50MTZfdAlzYl9zZWN0c2l6ZTsJLyogdm9sdW1lIHNlY3RvciBzaXplLCBieXRlcyAqLworLQlfX3VpbnQxNl90CXNiX2lub2Rlc2l6ZTsJLyogaW5vZGUgc2l6ZSwgYnl0ZXMgKi8KKy0JX191aW50MTZfdAlzYl9pbm9wYmxvY2s7CS8qIGlub2RlcyBwZXIgYmxvY2sgKi8KKysJdWludDE2X3QJc2JfdmVyc2lvbm51bTsJLyogaGVhZGVyIHZlcnNpb24gPT0gWEZTX1NCX1ZFUlNJT04gKi8KKysJdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSwgYnl0ZXMgKi8KKysJdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplLCBieXRlcyAqLworKwl1aW50MTZfdAlzYl9pbm9wYmxvY2s7CS8qIGlub2RlcyBwZXIgYmxvY2sgKi8KKyAJY2hhcgkJc2JfZm5hbWVbMTJdOwkvKiBmaWxlIHN5c3RlbSBuYW1lICovCistCV9fdWludDhfdAlzYl9ibG9ja2xvZzsJLyogbG9nMiBvZiBzYl9ibG9ja3NpemUgKi8KKy0JX191aW50OF90CXNiX3NlY3Rsb2c7CS8qIGxvZzIgb2Ygc2Jfc2VjdHNpemUgKi8KKy0JX191aW50OF90CXNiX2lub2RlbG9nOwkvKiBsb2cyIG9mIHNiX2lub2Rlc2l6ZSAqLworLQlfX3VpbnQ4X3QJc2JfaW5vcGJsb2c7CS8qIGxvZzIgb2Ygc2JfaW5vcGJsb2NrICovCistCV9fdWludDhfdAlzYl9hZ2Jsa2xvZzsJLyogbG9nMiBvZiBzYl9hZ2Jsb2NrcyAocm91bmRlZCB1cCkgKi8KKy0JX191aW50OF90CXNiX3JleHRzbG9nOwkvKiBsb2cyIG9mIHNiX3JleHRlbnRzICovCistCV9fdWludDhfdAlzYl9pbnByb2dyZXNzOwkvKiBta2ZzIGlzIGluIHByb2dyZXNzLCBkb24ndCBtb3VudCAqLworLQlfX3VpbnQ4X3QJc2JfaW1heF9wY3Q7CS8qIG1heCAlIG9mIGZzIGZvciBpbm9kZSBzcGFjZSAqLworKwl1aW50OF90CQlzYl9ibG9ja2xvZzsJLyogbG9nMiBvZiBzYl9ibG9ja3NpemUgKi8KKysJdWludDhfdAkJc2Jfc2VjdGxvZzsJLyogbG9nMiBvZiBzYl9zZWN0c2l6ZSAqLworKwl1aW50OF90CQlzYl9pbm9kZWxvZzsJLyogbG9nMiBvZiBzYl9pbm9kZXNpemUgKi8KKysJdWludDhfdAkJc2JfaW5vcGJsb2c7CS8qIGxvZzIgb2Ygc2JfaW5vcGJsb2NrICovCisrCXVpbnQ4X3QJCXNiX2FnYmxrbG9nOwkvKiBsb2cyIG9mIHNiX2FnYmxvY2tzIChyb3VuZGVkIHVwKSAqLworKwl1aW50OF90CQlzYl9yZXh0c2xvZzsJLyogbG9nMiBvZiBzYl9yZXh0ZW50cyAqLworKwl1aW50OF90CQlzYl9pbnByb2dyZXNzOwkvKiBta2ZzIGlzIGluIHByb2dyZXNzLCBkb24ndCBtb3VudCAqLworKwl1aW50OF90CQlzYl9pbWF4X3BjdDsJLyogbWF4ICUgb2YgZnMgZm9yIGlub2RlIHNwYWNlICovCisgCQkJCQkvKiBzdGF0aXN0aWNzICovCisgCS8qCisgCSAqIFRoZXNlIGZpZWxkcyBtdXN0IHJlbWFpbiBjb250aWd1b3VzLiAgSWYgeW91IHJlYWxseQorIAkgKiB3YW50IHRvIGNoYW5nZSB0aGVpciBsYXlvdXQsIG1ha2Ugc3VyZSB5b3UgZml4IHRoZQorIAkgKiBjb2RlIGluIHhmc190cmFuc19hcHBseV9zYl9kZWx0YXMoKS4KKyAJICovCistCV9fdWludDY0X3QJc2JfaWNvdW50OwkvKiBhbGxvY2F0ZWQgaW5vZGVzICovCistCV9fdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCistCV9fdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KKy0JX191aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworKwl1aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCBpbm9kZXMgKi8KKysJdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCisrCXVpbnQ2NF90CXNiX2ZkYmxvY2tzOwkvKiBmcmVlIGRhdGEgYmxvY2tzICovCisrCXVpbnQ2NF90CXNiX2ZyZXh0ZW50czsJLyogZnJlZSByZWFsdGltZSBleHRlbnRzICovCisgCS8qCisgCSAqIEVuZCBjb250aWd1b3VzIGZpZWxkcy4KKyAJICovCisgCXhmc19pbm9fdAlzYl91cXVvdGlubzsJLyogdXNlciBxdW90YSBpbm9kZSAqLworIAl4ZnNfaW5vX3QJc2JfZ3F1b3Rpbm87CS8qIGdyb3VwIHF1b3RhIGlub2RlICovCistCV9fdWludDE2X3QJc2JfcWZsYWdzOwkvKiBxdW90YSBmbGFncyAqLworLQlfX3VpbnQ4X3QJc2JfZmxhZ3M7CS8qIG1pc2MuIGZsYWdzICovCistCV9fdWludDhfdAlzYl9zaGFyZWRfdm47CS8qIHNoYXJlZCB2ZXJzaW9uIG51bWJlciAqLworKwl1aW50MTZfdAlzYl9xZmxhZ3M7CS8qIHF1b3RhIGZsYWdzICovCisrCXVpbnQ4X3QJCXNiX2ZsYWdzOwkvKiBtaXNjLiBmbGFncyAqLworKwl1aW50OF90CQlzYl9zaGFyZWRfdm47CS8qIHNoYXJlZCB2ZXJzaW9uIG51bWJlciAqLworIAl4ZnNfZXh0bGVuX3QJc2JfaW5vYWxpZ25tdDsJLyogaW5vZGUgY2h1bmsgYWxpZ25tZW50LCBmc2Jsb2NrcyAqLworLQlfX3VpbnQzMl90CXNiX3VuaXQ7CS8qIHN0cmlwZSBvciByYWlkIHVuaXQgKi8KKy0JX191aW50MzJfdAlzYl93aWR0aDsJLyogc3RyaXBlIG9yIHJhaWQgd2lkdGggKi8KKy0JX191aW50OF90CXNiX2RpcmJsa2xvZzsJLyogbG9nMiBvZiBkaXIgYmxvY2sgc2l6ZSAoZnNicykgKi8KKy0JX191aW50OF90CXNiX2xvZ3NlY3Rsb2c7CS8qIGxvZzIgb2YgdGhlIGxvZyBzZWN0b3Igc2l6ZSAqLworLQlfX3VpbnQxNl90CXNiX2xvZ3NlY3RzaXplOwkvKiBzZWN0b3Igc2l6ZSBmb3IgdGhlIGxvZywgYnl0ZXMgKi8KKy0JX191aW50MzJfdAlzYl9sb2dzdW5pdDsJLyogc3RyaXBlIHVuaXQgc2l6ZSBmb3IgdGhlIGxvZyAqLworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzMjsJLyogYWRkaXRpb25hbCBmZWF0dXJlIGJpdHMgKi8KKysJdWludDMyX3QJc2JfdW5pdDsJLyogc3RyaXBlIG9yIHJhaWQgdW5pdCAqLworKwl1aW50MzJfdAlzYl93aWR0aDsJLyogc3RyaXBlIG9yIHJhaWQgd2lkdGggKi8KKysJdWludDhfdAkJc2JfZGlyYmxrbG9nOwkvKiBsb2cyIG9mIGRpciBibG9jayBzaXplIChmc2JzKSAqLworKwl1aW50OF90CQlzYl9sb2dzZWN0bG9nOwkvKiBsb2cyIG9mIHRoZSBsb2cgc2VjdG9yIHNpemUgKi8KKysJdWludDE2X3QJc2JfbG9nc2VjdHNpemU7CS8qIHNlY3RvciBzaXplIGZvciB0aGUgbG9nLCBieXRlcyAqLworKwl1aW50MzJfdAlzYl9sb2dzdW5pdDsJLyogc3RyaXBlIHVuaXQgc2l6ZSBmb3IgdGhlIGxvZyAqLworKwl1aW50MzJfdAlzYl9mZWF0dXJlczI7CS8qIGFkZGl0aW9uYWwgZmVhdHVyZSBiaXRzICovCisgCisgCS8qCisgCSAqIGJhZCBmZWF0dXJlczIgZmllbGQgYXMgYSByZXN1bHQgb2YgZmFpbGluZyB0byBwYWQgdGhlIHNiIHN0cnVjdHVyZSB0bworQEAgLTE2NywxNyArMTY3LDE3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19zYiB7CisgCSAqIHRoZSB2YWx1ZSBpbiBzYl9mZWF0dXJlczIgd2hlbiBmb3JtYXR0aW5nIHRoZSBpbmNvcmUgc3VwZXJibG9jayB0bworIAkgKiB0aGUgZGlzayBidWZmZXIuCisgCSAqLworLQlfX3VpbnQzMl90CXNiX2JhZF9mZWF0dXJlczI7CisrCXVpbnQzMl90CXNiX2JhZF9mZWF0dXJlczI7CisgCisgCS8qIHZlcnNpb24gNSBzdXBlcmJsb2NrIGZpZWxkcyBzdGFydCBoZXJlICovCisgCisgCS8qIGZlYXR1cmUgbWFza3MgKi8KKy0JX191aW50MzJfdAlzYl9mZWF0dXJlc19jb21wYXQ7CistCV9fdWludDMyX3QJc2JfZmVhdHVyZXNfcm9fY29tcGF0OworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzX2luY29tcGF0OworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzX2xvZ19pbmNvbXBhdDsKKysJdWludDMyX3QJc2JfZmVhdHVyZXNfY29tcGF0OworKwl1aW50MzJfdAlzYl9mZWF0dXJlc19yb19jb21wYXQ7CisrCXVpbnQzMl90CXNiX2ZlYXR1cmVzX2luY29tcGF0OworKwl1aW50MzJfdAlzYl9mZWF0dXJlc19sb2dfaW5jb21wYXQ7CisgCistCV9fdWludDMyX3QJc2JfY3JjOwkJLyogc3VwZXJibG9jayBjcmMgKi8KKysJdWludDMyX3QJc2JfY3JjOwkJLyogc3VwZXJibG9jayBjcmMgKi8KKyAJeGZzX2V4dGxlbl90CXNiX3NwaW5vX2FsaWduOwkvKiBzcGFyc2UgaW5vZGUgY2h1bmsgYWxpZ25tZW50ICovCisgCisgCXhmc19pbm9fdAlzYl9wcXVvdGlubzsJLyogcHJvamVjdCBxdW90YSBpbm9kZSAqLworQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGZzX3NiX3ZlcnNpb25fYWRkcHJvamlkMzJiaXQoc3RydWN0IHhmc19zYiAqc2JwKQorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfY29tcGF0X2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX2NvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTQ2NSw3ICs0NjUsNyBAQCB4ZnNfc2JfaGFzX2NvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfcm9fY29tcGF0X2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX3JvX2NvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTQ4Miw3ICs0ODIsNyBAQCB4ZnNfc2JfaGFzX3JvX2NvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfaW5jb21wYXRfZmVhdHVyZSgKKyAJc3RydWN0IHhmc19zYgkqc2JwLAorLQlfX3VpbnQzMl90CWZlYXR1cmUpCisrCXVpbnQzMl90CWZlYXR1cmUpCisgeworIAlyZXR1cm4gKHNicC0+c2JfZmVhdHVyZXNfaW5jb21wYXQgJiBmZWF0dXJlKSAhPSAwOworIH0KK0BAIC00OTIsNyArNDkyLDcgQEAgeGZzX3NiX2hhc19pbmNvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfaW5jb21wYXRfbG9nX2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX2xvZ19pbmNvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTU5NCw4ICs1OTQsOCBAQCB4ZnNfaXNfcXVvdGFfaW5vZGUoc3RydWN0IHhmc19zYiAqc2JwLCB4ZnNfaW5vX3QgaW5vKQorICAqLworICNkZWZpbmUgWEZTX0ZTQl9UT19CKG1wLGZzYm5vKQkoKHhmc19mc2l6ZV90KShmc2JubykgPDwgKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKyAjZGVmaW5lIFhGU19CX1RPX0ZTQihtcCxiKQlcCistCSgoKChfX3VpbnQ2NF90KShiKSkgKyAobXApLT5tX2Jsb2NrbWFzaykgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKy0jZGVmaW5lIFhGU19CX1RPX0ZTQlQobXAsYikJKCgoX191aW50NjRfdCkoYikpID4+IChtcCktPm1fc2Iuc2JfYmxvY2tsb2cpCisrCSgoKCh1aW50NjRfdCkoYikpICsgKG1wKS0+bV9ibG9ja21hc2spID4+IChtcCktPm1fc2Iuc2JfYmxvY2tsb2cpCisrI2RlZmluZSBYRlNfQl9UT19GU0JUKG1wLGIpCSgoKHVpbnQ2NF90KShiKSkgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKyAjZGVmaW5lIFhGU19CX0ZTQl9PRkZTRVQobXAsYikJKChiKSAmIChtcCktPm1fYmxvY2ttYXNrKQorIAorIC8qCitAQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHhmc19kaW5vZGVfcHV0X3JkZXYoc3RydWN0IHhmc19kaW5vZGUgKmRpcCwgeGZzX2Rldl90IHJkZXYpCisgICogbmV4dCBhZ25vX2xvZyBiaXRzIC0gYWcgbnVtYmVyCisgICogaGlnaCBhZ25vX2xvZy1hZ2Jsa2xvZy1pbm9wYmxvZyBiaXRzIC0gMAorICAqLworLSNkZWZpbmUJWEZTX0lOT19NQVNLKGspCQkJKF9fdWludDMyX3QpKCgxVUxMIDw8IChrKSkgLSAxKQorKyNkZWZpbmUJWEZTX0lOT19NQVNLKGspCQkJKHVpbnQzMl90KSgoMVVMTCA8PCAoaykpIC0gMSkKKyAjZGVmaW5lCVhGU19JTk9fT0ZGU0VUX0JJVFMobXApCQkobXApLT5tX3NiLnNiX2lub3BibG9nCisgI2RlZmluZQlYRlNfSU5PX0FHQk5PX0JJVFMobXApCQkobXApLT5tX3NiLnNiX2FnYmxrbG9nCisgI2RlZmluZQlYRlNfSU5PX0FHSU5PX0JJVFMobXApCQkobXApLT5tX2FnaW5vX2xvZworQEAgLTEyNjksMTYgKzEyNjksMTYgQEAgdHlwZWRlZiBfX2JlMzIgeGZzX2FsbG9jX3B0cl90OworICNkZWZpbmUJWEZTX0ZJQlRfTUFHSUMJCTB4NDY0OTQyNTQJLyogJ0ZJQlQnICovCisgI2RlZmluZQlYRlNfRklCVF9DUkNfTUFHSUMJMHg0NjQ5NDIzMwkvKiAnRklCMycgKi8KKyAKKy10eXBlZGVmCV9fdWludDY0X3QJeGZzX2lub2ZyZWVfdDsKKyt0eXBlZGVmIHVpbnQ2NF90CXhmc19pbm9mcmVlX3Q7CisgI2RlZmluZQlYRlNfSU5PREVTX1BFUl9DSFVOSwkJKE5CQlkgKiBzaXplb2YoeGZzX2lub2ZyZWVfdCkpCisgI2RlZmluZQlYRlNfSU5PREVTX1BFUl9DSFVOS19MT0cJKFhGU19OQkJZTE9HICsgMykKKyAjZGVmaW5lCVhGU19JTk9CVF9BTExfRlJFRQkJKCh4ZnNfaW5vZnJlZV90KS0xKQorICNkZWZpbmUJWEZTX0lOT0JUX01BU0soaSkJCSgoeGZzX2lub2ZyZWVfdCkxIDw8IChpKSkKKyAKKyAjZGVmaW5lIFhGU19JTk9CVF9IT0xFTUFTS19GVUxMCQkwCS8qIGhvbGVtYXNrIGZvciBmdWxsIGNodW5rICovCistI2RlZmluZSBYRlNfSU5PQlRfSE9MRU1BU0tfQklUUwkJKE5CQlkgKiBzaXplb2YoX191aW50MTZfdCkpCisrI2RlZmluZSBYRlNfSU5PQlRfSE9MRU1BU0tfQklUUwkJKE5CQlkgKiBzaXplb2YodWludDE2X3QpKQorICNkZWZpbmUgWEZTX0lOT0RFU19QRVJfSE9MRU1BU0tfQklUCVwKKy0JKFhGU19JTk9ERVNfUEVSX0NIVU5LIC8gKE5CQlkgKiBzaXplb2YoX191aW50MTZfdCkpKQorKwkoWEZTX0lOT0RFU19QRVJfQ0hVTksgLyAoTkJCWSAqIHNpemVvZih1aW50MTZfdCkpKQorIAorIHN0YXRpYyBpbmxpbmUgeGZzX2lub2ZyZWVfdCB4ZnNfaW5vYnRfbWFza24oaW50IGksIGludCBuKQorIHsKK0BAIC0xMzEyLDkgKzEzMTIsOSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vYnRfcmVjIHsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vYnRfcmVjX2luY29yZSB7CisgCXhmc19hZ2lub190CWlyX3N0YXJ0aW5vOwkvKiBzdGFydGluZyBpbm9kZSBudW1iZXIgKi8KKy0JX191aW50MTZfdAlpcl9ob2xlbWFzazsJLyogaG9sZSBtYXNrIGZvciBzcGFyc2UgY2h1bmtzICovCistCV9fdWludDhfdAlpcl9jb3VudDsJLyogdG90YWwgaW5vZGUgY291bnQgKi8KKy0JX191aW50OF90CWlyX2ZyZWVjb3VudDsJLyogY291bnQgb2YgZnJlZSBpbm9kZXMgKHNldCBiaXRzKSAqLworKwl1aW50MTZfdAlpcl9ob2xlbWFzazsJLyogaG9sZSBtYXNrIGZvciBzcGFyc2UgY2h1bmtzICovCisrCXVpbnQ4X3QJCWlyX2NvdW50OwkvKiB0b3RhbCBpbm9kZSBjb3VudCAqLworKwl1aW50OF90CQlpcl9mcmVlY291bnQ7CS8qIGNvdW50IG9mIGZyZWUgaW5vZGVzIChzZXQgYml0cykgKi8KKyAJeGZzX2lub2ZyZWVfdAlpcl9mcmVlOwkvKiBmcmVlIGlub2RlIG1hc2sgKi8KKyB9IHhmc19pbm9idF9yZWNfaW5jb3JlX3Q7CisgCitAQCAtMTM5NywxNSArMTM5NywxNSBAQCBzdHJ1Y3QgeGZzX3JtYXBfcmVjIHsKKyAgKiAgcm1fb2Zmc2V0OjU0LTYwIGFyZW4ndCB1c2VkIGFuZCBzaG91bGQgYmUgemVybworICAqICBybV9vZmZzZXQ6MC01MyBpcyB0aGUgYmxvY2sgb2Zmc2V0IHdpdGhpbiB0aGUgaW5vZGUKKyAgKi8KKy0jZGVmaW5lIFhGU19STUFQX09GRl9BVFRSX0ZPUksJKChfX3VpbnQ2NF90KTFVTEwgPDwgNjMpCistI2RlZmluZSBYRlNfUk1BUF9PRkZfQk1CVF9CTE9DSwkoKF9fdWludDY0X3QpMVVMTCA8PCA2MikKKy0jZGVmaW5lIFhGU19STUFQX09GRl9VTldSSVRURU4JKChfX3VpbnQ2NF90KTFVTEwgPDwgNjEpCisrI2RlZmluZSBYRlNfUk1BUF9PRkZfQVRUUl9GT1JLCSgodWludDY0X3QpMVVMTCA8PCA2MykKKysjZGVmaW5lIFhGU19STUFQX09GRl9CTUJUX0JMT0NLCSgodWludDY0X3QpMVVMTCA8PCA2MikKKysjZGVmaW5lIFhGU19STUFQX09GRl9VTldSSVRURU4JKCh1aW50NjRfdCkxVUxMIDw8IDYxKQorIAorLSNkZWZpbmUgWEZTX1JNQVBfTEVOX01BWAkoKF9fdWludDMyX3QpfjBVKQorKyNkZWZpbmUgWEZTX1JNQVBfTEVOX01BWAkoKHVpbnQzMl90KX4wVSkKKyAjZGVmaW5lIFhGU19STUFQX09GRl9GTEFHUwkoWEZTX1JNQVBfT0ZGX0FUVFJfRk9SSyB8IFwKKyAJCQkJIFhGU19STUFQX09GRl9CTUJUX0JMT0NLIHwgXAorIAkJCQkgWEZTX1JNQVBfT0ZGX1VOV1JJVFRFTikKKy0jZGVmaW5lIFhGU19STUFQX09GRl9NQVNLCSgoX191aW50NjRfdCkweDNGRkZGRkZGRkZGRkZGVUxMKQorKyNkZWZpbmUgWEZTX1JNQVBfT0ZGX01BU0sJKCh1aW50NjRfdCkweDNGRkZGRkZGRkZGRkZGVUxMKQorIAorICNkZWZpbmUgWEZTX1JNQVBfT0ZGKG9mZikJCSgob2ZmKSAmIFhGU19STUFQX09GRl9NQVNLKQorIAorQEAgLTE0MzEsOCArMTQzMSw4IEBAIHN0cnVjdCB4ZnNfcm1hcF9yZWMgeworIHN0cnVjdCB4ZnNfcm1hcF9pcmVjIHsKKyAJeGZzX2FnYmxvY2tfdAlybV9zdGFydGJsb2NrOwkvKiBleHRlbnQgc3RhcnQgYmxvY2sgKi8KKyAJeGZzX2V4dGxlbl90CXJtX2Jsb2NrY291bnQ7CS8qIGV4dGVudCBsZW5ndGggKi8KKy0JX191aW50NjRfdAlybV9vd25lcjsJLyogZXh0ZW50IG93bmVyICovCistCV9fdWludDY0X3QJcm1fb2Zmc2V0OwkvKiBvZmZzZXQgd2l0aGluIHRoZSBvd25lciAqLworKwl1aW50NjRfdAlybV9vd25lcjsJLyogZXh0ZW50IG93bmVyICovCisrCXVpbnQ2NF90CXJtX29mZnNldDsJLyogb2Zmc2V0IHdpdGhpbiB0aGUgb3duZXIgKi8KKyAJdW5zaWduZWQgaW50CXJtX2ZsYWdzOwkvKiBzdGF0ZSBmbGFncyAqLworIH07CisgCitAQCAtMTU0NCwxMSArMTU0NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYm1idF9yZWMgeworIAlfX2JlNjQJCQlsMCwgbDE7CisgfSB4ZnNfYm1idF9yZWNfdDsKKyAKKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2JtYnRfcmVjX2Jhc2VfdDsJLyogdXNlIHRoaXMgZm9yIGNhc3RzICovCisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfYm1idF9yZWNfYmFzZV90OwkvKiB1c2UgdGhpcyBmb3IgY2FzdHMgKi8KKyB0eXBlZGVmIHhmc19ibWJ0X3JlY190IHhmc19ibWRyX3JlY190OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19ibWJ0X3JlY19ob3N0IHsKKy0JX191aW50NjRfdAkJbDAsIGwxOworKwl1aW50NjRfdAkJbDAsIGwxOworIH0geGZzX2JtYnRfcmVjX2hvc3RfdDsKKyAKKyAvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZnMuaCBiL2xpYnhmcy94ZnNfZnMuaAoraW5kZXggOTlmN2Y4ODEuLjhhMGMwZWVjIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19mcy5oCisrKysgYi9saWJ4ZnMveGZzX2ZzLmgKK0BAIC0zMjMsMTAgKzMyMywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYnN0YXQgeworICAqIGFuZCB1c2luZyB0d28gMTZiaXQgdmFsdWVzIHRvIGhvbGQgbmV3IDMyYml0IHByb2ppZCB3YXMgY2hvb3NlbgorICAqIHRvIHJldGFpbiBjb21wYXRpYmlsaXR5IHdpdGggIm9sZCIgZmlsZXN5c3RlbXMpLgorICAqLworLXN0YXRpYyBpbmxpbmUgX191aW50MzJfdAorK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKKyBic3RhdF9nZXRfcHJvamlkKHN0cnVjdCB4ZnNfYnN0YXQgKmJzKQorIHsKKy0JcmV0dXJuIChfX3VpbnQzMl90KWJzLT5ic19wcm9qaWRfaGkgPDwgMTYgfCBicy0+YnNfcHJvamlkX2xvOworKwlyZXR1cm4gKHVpbnQzMl90KWJzLT5ic19wcm9qaWRfaGkgPDwgMTYgfCBicy0+YnNfcHJvamlkX2xvOworIH0KKyAKKyAvKgorQEAgLTQ3MiwxMCArNDcyLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19oYW5kbGUgeworICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19zd2FwZXh0CisgeworLQlfX2ludDY0X3QJc3hfdmVyc2lvbjsJLyogdmVyc2lvbiAqLworKwlpbnQ2NF90CQlzeF92ZXJzaW9uOwkvKiB2ZXJzaW9uICovCisgI2RlZmluZSBYRlNfU1hfVkVSU0lPTgkJMAorLQlfX2ludDY0X3QJc3hfZmR0YXJnZXQ7CS8qIGZkIG9mIHRhcmdldCBmaWxlICovCistCV9faW50NjRfdAlzeF9mZHRtcDsJLyogZmQgb2YgdG1wIGZpbGUgKi8KKysJaW50NjRfdAkJc3hfZmR0YXJnZXQ7CS8qIGZkIG9mIHRhcmdldCBmaWxlICovCisrCWludDY0X3QJCXN4X2ZkdG1wOwkvKiBmZCBvZiB0bXAgZmlsZSAqLworIAl4ZnNfb2ZmX3QJc3hfb2Zmc2V0OwkvKiBvZmZzZXQgaW50byBmaWxlICovCisgCXhmc19vZmZfdAlzeF9sZW5ndGg7CS8qIGxlbmcgZnJvbSBvZmZzZXQgKi8KKyAJY2hhcgkJc3hfcGFkWzE2XTsJLyogcGFkIHNwYWNlLCB1bnVzZWQgKi8KK0BAIC01NjIsNyArNTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3N3YXBleHQKKyAjZGVmaW5lIFhGU19JT0NfQVRUUkxJU1RfQllfSEFORExFICAgX0lPVyAoJ1gnLCAxMjIsIHN0cnVjdCB4ZnNfZnNvcF9hdHRybGlzdF9oYW5kbGVyZXEpCisgI2RlZmluZSBYRlNfSU9DX0FUVFJNVUxUSV9CWV9IQU5ETEUgIF9JT1cgKCdYJywgMTIzLCBzdHJ1Y3QgeGZzX2Zzb3BfYXR0cm11bHRpX2hhbmRsZXJlcSkKKyAjZGVmaW5lIFhGU19JT0NfRlNHRU9NRVRSWQkgICAgIF9JT1IgKCdYJywgMTI0LCBzdHJ1Y3QgeGZzX2Zzb3BfZ2VvbSkKKy0jZGVmaW5lIFhGU19JT0NfR09JTkdET1dOCSAgICAgX0lPUiAoJ1gnLCAxMjUsIF9fdWludDMyX3QpCisrI2RlZmluZSBYRlNfSU9DX0dPSU5HRE9XTgkgICAgIF9JT1IgKCdYJywgMTI1LCB1aW50MzJfdCkKKyAvKglYRlNfSU9DX0dFVEZTVVVJRCAtLS0tLS0tLS0tIGRlcHJlY2F0ZWQgMTQwCSAqLworIAorIC8qIHJlZmxpbmsgaW9jdGxzOyB0aGVzZSBNVVNUIG1hdGNoIHRoZSBidHJmcyBpb2N0bCBkZWZpbml0aW9ucyAqLworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaWFsbG9jLmMgYi9saWJ4ZnMveGZzX2lhbGxvYy5jCitpbmRleCA1NWNjNDUwNy4uOGQyNDUxODQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lhbGxvYy5jCisrKysgYi9saWJ4ZnMveGZzX2lhbGxvYy5jCitAQCAtMTM0LDkgKzEzNCw5IEBAIHhmc19pbm9idF9nZXRfcmVjKAorIFNUQVRJQyBpbnQKKyB4ZnNfaW5vYnRfaW5zZXJ0X3JlYygKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKy0JX191aW50MTZfdAkJaG9sZW1hc2ssCistCV9fdWludDhfdAkJY291bnQsCistCV9faW50MzJfdAkJZnJlZWNvdW50LAorKwl1aW50MTZfdAkJaG9sZW1hc2ssCisrCXVpbnQ4X3QJCQljb3VudCwKKysJaW50MzJfdAkJCWZyZWVjb3VudCwKKyAJeGZzX2lub2ZyZWVfdAkJZnJlZSwKKyAJaW50CQkJKnN0YXQpCisgeworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCitpbmRleCA3YjRiZTc2Ni4uNWIyODEwNTQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCisrKysgYi9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCitAQCAtMjE4LDEyICsyMTgsMTIgQEAgeGZzX2Zpbm9idF9pbml0X3B0cl9mcm9tX2N1cigKKyAJcHRyLT5zID0gYWdpLT5hZ2lfZnJlZV9yb290OworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfaW5vYnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKKyB7CistCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtleS0+aW5vYnQuaXJfc3RhcnRpbm8pIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGtleS0+aW5vYnQuaXJfc3RhcnRpbm8pIC0KKyAJCQkgIGN1ci0+YmNfcmVjLmkuaXJfc3RhcnRpbm87CisgfQorIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmMgYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCitpbmRleCAyOTcyNzAxZC4uZmNjNmZiOGUgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCisrKysgYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCitAQCAtNDQyLDcgKzQ0Miw3IEBAIHhmc19kaW5vZGVfY2FsY19jcmMoCisgCXN0cnVjdCB4ZnNfbW91bnQJKm1wLAorIAlzdHJ1Y3QgeGZzX2Rpbm9kZQkqZGlwKQorIHsKKy0JX191aW50MzJfdAkJY3JjOworKwl1aW50MzJfdAkJY3JjOworIAorIAlpZiAoZGlwLT5kaV92ZXJzaW9uIDwgMykKKyAJCXJldHVybjsKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2lub2RlX2J1Zi5oIGIvbGlieGZzL3hmc19pbm9kZV9idWYuaAoraW5kZXggNjg0OGEwYWYuLjA4MjdkN2RlIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19pbm9kZV9idWYuaAorKysrIGIvbGlieGZzL3hmc19pbm9kZV9idWYuaAorQEAgLTI4LDI2ICsyOCwyNiBAQCBzdHJ1Y3QgeGZzX2Rpbm9kZTsKKyAgKiBmb3JtYXQgc3BlY2lmaWMgc3RydWN0dXJlcyBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2ljZGlub2RlIHsKKy0JX19pbnQ4X3QJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLworLQlfX2ludDhfdAlkaV9mb3JtYXQ7CS8qIGZvcm1hdCBvZiBkaV9jIGRhdGEgKi8KKy0JX191aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCistCV9fdWludDMyX3QJZGlfdWlkOwkJLyogb3duZXIncyB1c2VyIGlkICovCistCV9fdWludDMyX3QJZGlfZ2lkOwkJLyogb3duZXIncyBncm91cCBpZCAqLworLQlfX3VpbnQxNl90CWRpX3Byb2ppZF9sbzsJLyogbG93ZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKy0JX191aW50MTZfdAlkaV9wcm9qaWRfaGk7CS8qIGhpZ2hlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLworKwlpbnQ4X3QJCWRpX3ZlcnNpb247CS8qIGlub2RlIHZlcnNpb24gKi8KKysJaW50OF90CQlkaV9mb3JtYXQ7CS8qIGZvcm1hdCBvZiBkaV9jIGRhdGEgKi8KKysJdWludDE2X3QJZGlfZmx1c2hpdGVyOwkvKiBpbmNyZW1lbnRlZCBvbiBmbHVzaCAqLworKwl1aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KKysJdWludDMyX3QJZGlfZ2lkOwkJLyogb3duZXIncyBncm91cCBpZCAqLworKwl1aW50MTZfdAlkaV9wcm9qaWRfbG87CS8qIGxvd2VyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCisrCXVpbnQxNl90CWRpX3Byb2ppZF9oaTsJLyogaGlnaGVyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCisgCXhmc19mc2l6ZV90CWRpX3NpemU7CS8qIG51bWJlciBvZiBieXRlcyBpbiBmaWxlICovCisgCXhmc19yZnNibG9ja190CWRpX25ibG9ja3M7CS8qICMgb2YgZGlyZWN0ICYgYnRyZWUgYmxvY2tzIHVzZWQgKi8KKyAJeGZzX2V4dGxlbl90CWRpX2V4dHNpemU7CS8qIGJhc2ljL21pbmltdW0gZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAJeGZzX2V4dG51bV90CWRpX25leHRlbnRzOwkvKiBudW1iZXIgb2YgZXh0ZW50cyBpbiBkYXRhIGZvcmsgKi8KKyAJeGZzX2FleHRudW1fdAlkaV9hbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGF0dHJpYnV0ZSBmb3JrKi8KKy0JX191aW50OF90CWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworLQlfX2ludDhfdAlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworLQlfX3VpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKy0JX191aW50MTZfdAlkaV9kbXN0YXRlOwkvKiBETUlHIHN0YXRlIGluZm8gKi8KKy0JX191aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworKwl1aW50OF90CQlkaV9mb3Jrb2ZmOwkvKiBhdHRyIGZvcmsgb2ZmcywgPDwzIGZvciA2NGIgYWxpZ24gKi8KKysJaW50OF90CQlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworKwl1aW50MzJfdAlkaV9kbWV2bWFzazsJLyogRE1JRyBldmVudCBtYXNrICovCisrCXVpbnQxNl90CWRpX2Rtc3RhdGU7CS8qIERNSUcgc3RhdGUgaW5mbyAqLworKwl1aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworIAorLQlfX3VpbnQ2NF90CWRpX2ZsYWdzMjsJLyogbW9yZSByYW5kb20gZmxhZ3MgKi8KKy0JX191aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKysJdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLworKwl1aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAKKyAJeGZzX2ljdGltZXN0YW1wX3QgZGlfY3J0aW1lOwkvKiB0aW1lIGNyZWF0ZWQgKi8KKyB9OworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfbG9nX2Zvcm1hdC5oIGIvbGlieGZzL3hmc19sb2dfZm9ybWF0LmgKK2luZGV4IDdhZTU3MWY4Li44MzcyZTliYyAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfbG9nX2Zvcm1hdC5oCisrKysgYi9saWJ4ZnMveGZzX2xvZ19mb3JtYXQuaAorQEAgLTMxLDcgKzMxLDcgQEAgc3RydWN0IHhmc190cmFuc19yZXM7CisgICogdGhyb3VnaCBhbGwgdGhlIGxvZyBpdGVtcyBkZWZpbml0aW9ucyBhbmQgZXZlcnl0aGluZyB0aGV5IGVuY29kZSBpbnRvIHRoZQorICAqIGxvZy4KKyAgKi8KKy10eXBlZGVmIF9fdWludDMyX3QgeGxvZ190aWRfdDsKKyt0eXBlZGVmIHVpbnQzMl90IHhsb2dfdGlkX3Q7CisgCisgI2RlZmluZSBYTE9HX01JTl9JQ0xPR1MJCTIKKyAjZGVmaW5lIFhMT0dfTUFYX0lDTE9HUwkJOAorQEAgLTIxMSw3ICsyMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfbG9nX2lvdmVjIHsKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfdHJhbnNfaGVhZGVyIHsKKyAJdWludAkJdGhfbWFnaWM7CQkvKiBtYWdpYyBudW1iZXIgKi8KKyAJdWludAkJdGhfdHlwZTsJCS8qIHRyYW5zYWN0aW9uIHR5cGUgKi8KKy0JX19pbnQzMl90CXRoX3RpZDsJCQkvKiB0cmFuc2FjdGlvbiBpZCAodW51c2VkKSAqLworKwlpbnQzMl90CQl0aF90aWQ7CQkJLyogdHJhbnNhY3Rpb24gaWQgKHVudXNlZCkgKi8KKyAJdWludAkJdGhfbnVtX2l0ZW1zOwkJLyogbnVtIGl0ZW1zIGxvZ2dlZCBieSB0cmFucyAqLworIH0geGZzX3RyYW5zX2hlYWRlcl90OworIAorQEAgLTI2NSw1MiArMjY1LDUyIEBAIHR5cGVkZWYgc3RydWN0IHhmc190cmFuc19oZWFkZXIgeworICAqIG11c3QgYmUgYWRkZWQgb24gdG8gdGhlIGVuZC4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGVfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLworLQlfX3VpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCistCV9fdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCistCV9fdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworKwl1aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KKysJdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KKysJdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCisrCXVpbnQ2NF90CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KKyAJdW5pb24geworLQkJX191aW50MzJfdAlpbGZ1X3JkZXY7CS8qIHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCisrCQl1aW50MzJfdAlpbGZ1X3JkZXY7CS8qIHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCisgCQl1dWlkX3QJCWlsZnVfdXVpZDsJLyogbW91bnQgcG9pbnQgdmFsdWUgKi8KKyAJfSBpbGZfdTsKKy0JX19pbnQ2NF90CQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9sZW47CS8qIGxlbiBvZiBpbm9kZSBidWZmZXIgKi8KKy0JX19pbnQzMl90CQlpbGZfYm9mZnNldDsJLyogb2ZmIG9mIGlub2RlIGluIGJ1ZmZlciAqLworKwlpbnQ2NF90CQkJaWxmX2Jsa25vOwkvKiBibGtubyBvZiBpbm9kZSBidWZmZXIgKi8KKysJaW50MzJfdAkJCWlsZl9sZW47CS8qIGxlbiBvZiBpbm9kZSBidWZmZXIgKi8KKysJaW50MzJfdAkJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisgfSB4ZnNfaW5vZGVfbG9nX2Zvcm1hdF90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyIHsKKy0JX191aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCistCV9fdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KKy0JX191aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KKy0JX191aW50NjRfdAkJaWxmX2lubzsJLyogaW5vZGUgbnVtYmVyICovCisrCXVpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLworKwl1aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLworKwl1aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KKysJdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworIAl1bmlvbiB7CistCQlfX3VpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKysJCXVpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKyAJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLworIAl9IGlsZl91OworLQlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCistCV9faW50MzJfdAkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KKyB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyX3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlX2xvZ19mb3JtYXRfNjQgeworLQlfX3VpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KKy0JX191aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLworLQlfX3VpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLworLQlfX3VpbnQzMl90CQlpbGZfcGFkOwkvKiBwYWQgZm9yIDY0IGJpdCBib3VuZGFyeSAqLworLQlfX3VpbnQ2NF90CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KKysJdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCisrCXVpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCisrCXVpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLworKwl1aW50MzJfdAkJaWxmX3BhZDsJLyogcGFkIGZvciA2NCBiaXQgYm91bmRhcnkgKi8KKysJdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworIAl1bmlvbiB7CistCQlfX3VpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKysJCXVpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKyAJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLworIAl9IGlsZl91OworLQlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCistCV9faW50MzJfdAkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KKyB9IHhmc19pbm9kZV9sb2dfZm9ybWF0XzY0X3Q7CisgCisgCitAQCAtMzc5LDggKzM3OSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHhmc19pbG9nX2ZkYXRhKGludCB3KQorICAqIGluZm9ybWF0aW9uLgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19pY3RpbWVzdGFtcCB7CistCV9faW50MzJfdAl0X3NlYzsJCS8qIHRpbWVzdGFtcCBzZWNvbmRzICovCistCV9faW50MzJfdAl0X25zZWM7CQkvKiB0aW1lc3RhbXAgbmFub3NlY29uZHMgKi8KKysJaW50MzJfdAkJdF9zZWM7CQkvKiB0aW1lc3RhbXAgc2Vjb25kcyAqLworKwlpbnQzMl90CQl0X25zZWM7CQkvKiB0aW1lc3RhbXAgbmFub3NlY29uZHMgKi8KKyB9IHhmc19pY3RpbWVzdGFtcF90OworIAorIC8qCitAQCAtMzg4LDE4ICszODgsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2ljdGltZXN0YW1wIHsKKyAgKiBrZXB0IGlkZW50aWNhbCB0byBzdHJ1Y3QgeGZzX2Rpbm9kZSBleGNlcHQgZm9yIHRoZSBlbmRpYW5uZXNzIGFubm90YXRpb25zLgorICAqLworIHN0cnVjdCB4ZnNfbG9nX2Rpbm9kZSB7CistCV9fdWludDE2X3QJZGlfbWFnaWM7CS8qIGlub2RlIG1hZ2ljICMgPSBYRlNfRElOT0RFX01BR0lDICovCistCV9fdWludDE2X3QJZGlfbW9kZTsJLyogbW9kZSBhbmQgdHlwZSBvZiBmaWxlICovCistCV9faW50OF90CWRpX3ZlcnNpb247CS8qIGlub2RlIHZlcnNpb24gKi8KKy0JX19pbnQ4X3QJZGlfZm9ybWF0OwkvKiBmb3JtYXQgb2YgZGlfYyBkYXRhICovCistCV9fdWludDhfdAlkaV9wYWQzWzJdOwkvKiB1bnVzZWQgaW4gdjIvMyBpbm9kZXMgKi8KKy0JX191aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KKy0JX191aW50MzJfdAlkaV9naWQ7CQkvKiBvd25lcidzIGdyb3VwIGlkICovCistCV9fdWludDMyX3QJZGlfbmxpbms7CS8qIG51bWJlciBvZiBsaW5rcyB0byBmaWxlICovCistCV9fdWludDE2X3QJZGlfcHJvamlkX2xvOwkvKiBsb3dlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLworLQlfX3VpbnQxNl90CWRpX3Byb2ppZF9oaTsJLyogaGlnaGVyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCistCV9fdWludDhfdAlkaV9wYWRbNl07CS8qIHVudXNlZCwgemVyb2VkIHNwYWNlICovCistCV9fdWludDE2X3QJZGlfZmx1c2hpdGVyOwkvKiBpbmNyZW1lbnRlZCBvbiBmbHVzaCAqLworKwl1aW50MTZfdAlkaV9tYWdpYzsJLyogaW5vZGUgbWFnaWMgIyA9IFhGU19ESU5PREVfTUFHSUMgKi8KKysJdWludDE2X3QJZGlfbW9kZTsJLyogbW9kZSBhbmQgdHlwZSBvZiBmaWxlICovCisrCWludDhfdAkJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLworKwlpbnQ4X3QJCWRpX2Zvcm1hdDsJLyogZm9ybWF0IG9mIGRpX2MgZGF0YSAqLworKwl1aW50OF90CQlkaV9wYWQzWzJdOwkvKiB1bnVzZWQgaW4gdjIvMyBpbm9kZXMgKi8KKysJdWludDMyX3QJZGlfdWlkOwkJLyogb3duZXIncyB1c2VyIGlkICovCisrCXVpbnQzMl90CWRpX2dpZDsJCS8qIG93bmVyJ3MgZ3JvdXAgaWQgKi8KKysJdWludDMyX3QJZGlfbmxpbms7CS8qIG51bWJlciBvZiBsaW5rcyB0byBmaWxlICovCisrCXVpbnQxNl90CWRpX3Byb2ppZF9sbzsJLyogbG93ZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKysJdWludDE2X3QJZGlfcHJvamlkX2hpOwkvKiBoaWdoZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKysJdWludDhfdAkJZGlfcGFkWzZdOwkvKiB1bnVzZWQsIHplcm9lZCBzcGFjZSAqLworKwl1aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCisgCXhmc19pY3RpbWVzdGFtcF90IGRpX2F0aW1lOwkvKiB0aW1lIGxhc3QgYWNjZXNzZWQgKi8KKyAJeGZzX2ljdGltZXN0YW1wX3QgZGlfbXRpbWU7CS8qIHRpbWUgbGFzdCBtb2RpZmllZCAqLworIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9jdGltZTsJLyogdGltZSBjcmVhdGVkL2lub2RlIG1vZGlmaWVkICovCitAQCAtNDA4LDIzICs0MDgsMjMgQEAgc3RydWN0IHhmc19sb2dfZGlub2RlIHsKKyAJeGZzX2V4dGxlbl90CWRpX2V4dHNpemU7CS8qIGJhc2ljL21pbmltdW0gZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAJeGZzX2V4dG51bV90CWRpX25leHRlbnRzOwkvKiBudW1iZXIgb2YgZXh0ZW50cyBpbiBkYXRhIGZvcmsgKi8KKyAJeGZzX2FleHRudW1fdAlkaV9hbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGF0dHJpYnV0ZSBmb3JrKi8KKy0JX191aW50OF90CWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworLQlfX2ludDhfdAlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworLQlfX3VpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKy0JX191aW50MTZfdAlkaV9kbXN0YXRlOwkvKiBETUlHIHN0YXRlIGluZm8gKi8KKy0JX191aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworLQlfX3VpbnQzMl90CWRpX2dlbjsJCS8qIGdlbmVyYXRpb24gbnVtYmVyICovCisrCXVpbnQ4X3QJCWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworKwlpbnQ4X3QJCWRpX2Fmb3JtYXQ7CS8qIGZvcm1hdCBvZiBhdHRyIGZvcmsncyBkYXRhICovCisrCXVpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKysJdWludDE2X3QJZGlfZG1zdGF0ZTsJLyogRE1JRyBzdGF0ZSBpbmZvICovCisrCXVpbnQxNl90CWRpX2ZsYWdzOwkvKiByYW5kb20gZmxhZ3MsIFhGU19ESUZMQUdfLi4uICovCisrCXVpbnQzMl90CWRpX2dlbjsJCS8qIGdlbmVyYXRpb24gbnVtYmVyICovCisgCisgCS8qIGRpX25leHRfdW5saW5rZWQgaXMgdGhlIG9ubHkgbm9uLWNvcmUgZmllbGQgaW4gdGhlIG9sZCBkaW5vZGUgKi8KKyAJeGZzX2FnaW5vX3QJZGlfbmV4dF91bmxpbmtlZDsvKiBhZ2kgdW5saW5rZWQgbGlzdCBwdHIgKi8KKyAKKyAJLyogc3RhcnQgb2YgdGhlIGV4dGVuZGVkIGRpbm9kZSwgd3JpdGFibGUgZmllbGRzICovCistCV9fdWludDMyX3QJZGlfY3JjOwkJLyogQ1JDIG9mIHRoZSBpbm9kZSAqLworLQlfX3VpbnQ2NF90CWRpX2NoYW5nZWNvdW50OwkvKiBudW1iZXIgb2YgYXR0cmlidXRlIGNoYW5nZXMgKi8KKysJdWludDMyX3QJZGlfY3JjOwkJLyogQ1JDIG9mIHRoZSBpbm9kZSAqLworKwl1aW50NjRfdAlkaV9jaGFuZ2Vjb3VudDsJLyogbnVtYmVyIG9mIGF0dHJpYnV0ZSBjaGFuZ2VzICovCisgCXhmc19sc25fdAlkaV9sc247CQkvKiBmbHVzaCBzZXF1ZW5jZSAqLworLQlfX3VpbnQ2NF90CWRpX2ZsYWdzMjsJLyogbW9yZSByYW5kb20gZmxhZ3MgKi8KKy0JX191aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKy0JX191aW50OF90CWRpX3BhZDJbMTJdOwkvKiBtb3JlIHBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKysJdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLworKwl1aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKysJdWludDhfdAkJZGlfcGFkMlsxMl07CS8qIG1vcmUgcGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworIAorIAkvKiBmaWVsZHMgb25seSB3cml0dGVuIHRvIGR1cmluZyBpbm9kZSBjcmVhdGlvbiAqLworIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9jcnRpbWU7CS8qIHRpbWUgY3JlYXRlZCAqLworQEAgLTQ4Myw3ICs0ODMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgeworIAl1bnNpZ25lZCBzaG9ydAlibGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKyAJdW5zaWduZWQgc2hvcnQJYmxmX2ZsYWdzOwkvKiBtaXNjIHN0YXRlICovCisgCXVuc2lnbmVkIHNob3J0CWJsZl9sZW47CS8qIG51bWJlciBvZiBibG9ja3MgaW4gdGhpcyBidWYgKi8KKy0JX19pbnQ2NF90CWJsZl9ibGtubzsJLyogc3RhcnRpbmcgYmxrbm8gb2YgdGhpcyBidWYgKi8KKysJaW50NjRfdAkJYmxmX2Jsa25vOwkvKiBzdGFydGluZyBibGtubyBvZiB0aGlzIGJ1ZiAqLworIAl1bnNpZ25lZCBpbnQJYmxmX21hcF9zaXplOwkvKiB1c2VkIHNpemUgb2YgZGF0YSBiaXRtYXAgaW4gd29yZHMgKi8KKyAJdW5zaWduZWQgaW50CWJsZl9kYXRhX21hcFtYRlNfQkxGX0RBVEFNQVBfU0laRV07IC8qIGRpcnR5IGJpdG1hcCAqLworIH0geGZzX2J1Zl9sb2dfZm9ybWF0X3Q7CitAQCAtNTMzLDcgKzUzMyw3IEBAIHhmc19ibGZ0X3RvX2ZsYWdzKHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgKmJsZiwgZW51bSB4ZnNfYmxmdCB0eXBlKQorIAlibGYtPmJsZl9mbGFncyB8PSAoKHR5cGUgPDwgWEZTX0JMRlRfU0hJRlQpICYgWEZTX0JMRlRfTUFTSyk7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgX191aW50MTZfdAorK3N0YXRpYyBpbmxpbmUgdWludDE2X3QKKyB4ZnNfYmxmdF9mcm9tX2ZsYWdzKHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgKmJsZikKKyB7CisgCXJldHVybiAoYmxmLT5ibGZfZmxhZ3MgJiBYRlNfQkxGVF9NQVNLKSA+PiBYRlNfQkxGVF9TSElGVDsKK0BAIC01NTQsMTQgKzU1NCwxNCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50IHsKKyAgKiBjb252ZXJzaW9uIHJvdXRpbmUuCisgICovCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2V4dGVudF8zMiB7CistCV9fdWludDY0X3QJZXh0X3N0YXJ0OworLQlfX3VpbnQzMl90CWV4dF9sZW47CisrCXVpbnQ2NF90CWV4dF9zdGFydDsKKysJdWludDMyX3QJZXh0X2xlbjsKKyB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHhmc19leHRlbnRfMzJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzY0IHsKKy0JX191aW50NjRfdAlleHRfc3RhcnQ7CistCV9fdWludDMyX3QJZXh0X2xlbjsKKy0JX191aW50MzJfdAlleHRfcGFkOworKwl1aW50NjRfdAlleHRfc3RhcnQ7CisrCXVpbnQzMl90CWV4dF9sZW47CisrCXVpbnQzMl90CWV4dF9wYWQ7CisgfSB4ZnNfZXh0ZW50XzY0X3Q7CisgCisgLyoKK0BAIC01NzAsMjYgKzU3MCwyNiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzY0IHsKKyAgKiBzaXplIGlzIGdpdmVuIGJ5IGVmaV9uZXh0ZW50cy4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXQgeworLQlfX3VpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKy0JX191aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KKysJdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCisrCXVpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLworIAl4ZnNfZXh0ZW50X3QJCWVmaV9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGZyZWUgKi8KKyB9IHhmc19lZmlfbG9nX2Zvcm1hdF90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19lZmlfbG9nX2Zvcm1hdF8zMiB7CistCV9fdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCisgCXhmc19leHRlbnRfMzJfdAkJZWZpX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gZnJlZSAqLworIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2VmaV9sb2dfZm9ybWF0XzMyX3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmaV9sb2dfZm9ybWF0XzY0IHsKKy0JX191aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCistCV9fdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCisrCXVpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworKwl1aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KKyAJeGZzX2V4dGVudF82NF90CQllZmlfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyB0byBmcmVlICovCisgfSB4ZnNfZWZpX2xvZ19mb3JtYXRfNjRfdDsKKyAKK0BAIC01OTksMjYgKzU5OSwyNiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXRfNjQgeworICAqIHNpemUgaXMgZ2l2ZW4gYnkgZWZkX25leHRlbnRzOworICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19lZmRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KKy0JX191aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KKysJdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworKwl1aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KKyAJeGZzX2V4dGVudF90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLworIH0geGZzX2VmZF9sb2dfZm9ybWF0X3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0XzMyIHsKKy0JX191aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworLQlfX3VpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLworKwl1aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCisrCXVpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLworIAl4ZnNfZXh0ZW50XzMyX3QJCWVmZF9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIGZyZWVkICovCisgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB4ZnNfZWZkX2xvZ19mb3JtYXRfMzJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZkX2xvZ19mb3JtYXRfNjQgeworLQlfX3VpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCistCV9fdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisrCXVpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KKysJdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisgCXhmc19leHRlbnRfNjRfdAkJZWZkX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgZnJlZWQgKi8KKyB9IHhmc19lZmRfbG9nX2Zvcm1hdF82NF90OworIAorQEAgLTYyNiwxMSArNjI2LDExIEBAIHR5cGVkZWYgc3RydWN0IHhmc19lZmRfbG9nX2Zvcm1hdF82NCB7CisgICogUlVJL1JVRCAocmV2ZXJzZSBtYXBwaW5nKSBsb2cgZm9ybWF0IGRlZmluaXRpb25zCisgICovCisgc3RydWN0IHhmc19tYXBfZXh0ZW50IHsKKy0JX191aW50NjRfdAkJbWVfb3duZXI7CistCV9fdWludDY0X3QJCW1lX3N0YXJ0YmxvY2s7CistCV9fdWludDY0X3QJCW1lX3N0YXJ0b2ZmOworLQlfX3VpbnQzMl90CQltZV9sZW47CistCV9fdWludDMyX3QJCW1lX2ZsYWdzOworKwl1aW50NjRfdAkJbWVfb3duZXI7CisrCXVpbnQ2NF90CQltZV9zdGFydGJsb2NrOworKwl1aW50NjRfdAkJbWVfc3RhcnRvZmY7CisrCXVpbnQzMl90CQltZV9sZW47CisrCXVpbnQzMl90CQltZV9mbGFnczsKKyB9OworIAorIC8qIHJtYXAgbWVfZmxhZ3M6IHVwcGVyIGJpdHMgYXJlIGZsYWdzLCBsb3dlciBieXRlIGlzIHR5cGUgY29kZSAqLworQEAgLTY1OSwxMCArNjU5LDEwIEBAIHN0cnVjdCB4ZnNfbWFwX2V4dGVudCB7CisgICogc2l6ZSBpcyBnaXZlbiBieSBydWlfbmV4dGVudHMuCisgICovCisgc3RydWN0IHhmc19ydWlfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCXJ1aV90eXBlOwkvKiBydWkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlydWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJcnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQlydWlfaWQ7CQkvKiBydWkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJcnVpX3R5cGU7CS8qIHJ1aSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlydWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCXJ1aV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCXJ1aV9pZDsJCS8qIHJ1aSBpZGVudGlmaWVyICovCisgCXN0cnVjdCB4ZnNfbWFwX2V4dGVudAlydWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIHJtYXAgKi8KKyB9OworIAorQEAgLTY4MCwxOSArNjgwLDE5IEBAIHhmc19ydWlfbG9nX2Zvcm1hdF9zaXplb2YoCisgICogc2l6ZSBpcyBnaXZlbiBieSBydWRfbmV4dGVudHM7CisgICovCisgc3RydWN0IHhmc19ydWRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCXJ1ZF90eXBlOwkvKiBydWQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlydWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJX19wYWQ7CistCV9fdWludDY0X3QJCXJ1ZF9ydWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgcnVpICovCisrCXVpbnQxNl90CQlydWRfdHlwZTsJLyogcnVkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCXJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJX19wYWQ7CisrCXVpbnQ2NF90CQlydWRfcnVpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIHJ1aSAqLworIH07CisgCisgLyoKKyAgKiBDVUkvQ1VEIChyZWZjb3VudCB1cGRhdGUpIGxvZyBmb3JtYXQgZGVmaW5pdGlvbnMKKyAgKi8KKyBzdHJ1Y3QgeGZzX3BoeXNfZXh0ZW50IHsKKy0JX191aW50NjRfdAkJcGVfc3RhcnRibG9jazsKKy0JX191aW50MzJfdAkJcGVfbGVuOworLQlfX3VpbnQzMl90CQlwZV9mbGFnczsKKysJdWludDY0X3QJCXBlX3N0YXJ0YmxvY2s7CisrCXVpbnQzMl90CQlwZV9sZW47CisrCXVpbnQzMl90CQlwZV9mbGFnczsKKyB9OworIAorIC8qIHJlZmNvdW50IHBlX2ZsYWdzOiB1cHBlciBiaXRzIGFyZSBmbGFncywgbG93ZXIgYnl0ZSBpcyB0eXBlIGNvZGUgKi8KK0BAIC03MDcsMTAgKzcwNywxMCBAQCBzdHJ1Y3QgeGZzX3BoeXNfZXh0ZW50IHsKKyAgKiBzaXplIGlzIGdpdmVuIGJ5IGN1aV9uZXh0ZW50cy4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2N1aV9sb2dfZm9ybWF0IHsKKy0JX191aW50MTZfdAkJY3VpX3R5cGU7CS8qIGN1aSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWN1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQljdWlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCistCV9fdWludDY0X3QJCWN1aV9pZDsJCS8qIGN1aSBpZGVudGlmaWVyICovCisrCXVpbnQxNl90CQljdWlfdHlwZTsJLyogY3VpIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWN1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJY3VpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworKwl1aW50NjRfdAkJY3VpX2lkOwkJLyogY3VpIGlkZW50aWZpZXIgKi8KKyAJc3RydWN0IHhmc19waHlzX2V4dGVudAljdWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzICovCisgfTsKKyAKK0BAIC03MjgsMTAgKzcyOCwxMCBAQCB4ZnNfY3VpX2xvZ19mb3JtYXRfc2l6ZW9mKAorICAqIHNpemUgaXMgZ2l2ZW4gYnkgY3VkX25leHRlbnRzOworICAqLworIHN0cnVjdCB4ZnNfY3VkX2xvZ19mb3JtYXQgeworLQlfX3VpbnQxNl90CQljdWRfdHlwZTsJLyogY3VkIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJY3VkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCV9fcGFkOworLQlfX3VpbnQ2NF90CQljdWRfY3VpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGN1aSAqLworKwl1aW50MTZfdAkJY3VkX3R5cGU7CS8qIGN1ZCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQljdWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCV9fcGFkOworKwl1aW50NjRfdAkJY3VkX2N1aV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBjdWkgKi8KKyB9OworIAorIC8qCitAQCAtNzU1LDEwICs3NTUsMTAgQEAgc3RydWN0IHhmc19jdWRfbG9nX2Zvcm1hdCB7CisgICogc2l6ZSBpcyBnaXZlbiBieSBidWlfbmV4dGVudHMuCisgICovCisgc3RydWN0IHhmc19idWlfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWJ1aV90eXBlOwkvKiBidWkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlidWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJYnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQlidWlfaWQ7CQkvKiBidWkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJYnVpX3R5cGU7CS8qIGJ1aSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlidWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWJ1aV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCWJ1aV9pZDsJCS8qIGJ1aSBpZGVudGlmaWVyICovCisgCXN0cnVjdCB4ZnNfbWFwX2V4dGVudAlidWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGJtYXAgKi8KKyB9OworIAorQEAgLTc3NiwxMCArNzc2LDEwIEBAIHhmc19idWlfbG9nX2Zvcm1hdF9zaXplb2YoCisgICogc2l6ZSBpcyBnaXZlbiBieSBidWRfbmV4dGVudHM7CisgICovCisgc3RydWN0IHhmc19idWRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWJ1ZF90eXBlOwkvKiBidWQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlidWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJX19wYWQ7CistCV9fdWludDY0X3QJCWJ1ZF9idWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgYnVpICovCisrCXVpbnQxNl90CQlidWRfdHlwZTsJLyogYnVkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJX19wYWQ7CisrCXVpbnQ2NF90CQlidWRfYnVpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGJ1aSAqLworIH07CisgCisgLyoKK0BAIC03ODksMTIgKzc4OSwxMiBAQCBzdHJ1Y3QgeGZzX2J1ZF9sb2dfZm9ybWF0IHsKKyAgKiAzMiBiaXRzIDogbG9nX3JlY292ZXJ5IGNvZGUgYXNzdW1lcyB0aGF0LgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19kcV9sb2dmb3JtYXQgeworLQlfX3VpbnQxNl90CQlxbGZfdHlwZTsgICAgICAvKiBkcXVvdCBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCXFsZl9zaXplOyAgICAgIC8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQxNl90CQlxbGZfdHlwZTsgICAgICAvKiBkcXVvdCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlxbGZfc2l6ZTsgICAgICAvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworIAl4ZnNfZHFpZF90CQlxbGZfaWQ7CSAgICAgICAvKiB1c3IvZ3JwL3Byb2ogaWQgOiAzMiBiaXRzICovCistCV9faW50NjRfdAkJcWxmX2Jsa25vOyAgICAgLyogYmxrbm8gb2YgZHF1b3QgYnVmZmVyICovCistCV9faW50MzJfdAkJcWxmX2xlbjsgICAgICAgLyogbGVuIG9mIGRxdW90IGJ1ZmZlciAqLworLQlfX3VpbnQzMl90CQlxbGZfYm9mZnNldDsgICAvKiBvZmYgb2YgZHF1b3QgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlxbGZfYmxrbm87ICAgICAvKiBibGtubyBvZiBkcXVvdCBidWZmZXIgKi8KKysJaW50MzJfdAkJCXFsZl9sZW47ICAgICAgIC8qIGxlbiBvZiBkcXVvdCBidWZmZXIgKi8KKysJdWludDMyX3QJCXFsZl9ib2Zmc2V0OyAgIC8qIG9mZiBvZiBkcXVvdCBpbiBidWZmZXIgKi8KKyB9IHhmc19kcV9sb2dmb3JtYXRfdDsKKyAKKyAvKgorQEAgLTg1Myw4ICs4NTMsOCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcW9mZl9sb2dmb3JtYXQgeworICAqIGRlY29kaW5nIGNhbiBiZSBkb25lIGNvcnJlY3RseS4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2ljcmVhdGVfbG9nIHsKKy0JX191aW50MTZfdAlpY2xfdHlwZTsJLyogdHlwZSBvZiBsb2cgZm9ybWF0IHN0cnVjdHVyZSAqLworLQlfX3VpbnQxNl90CWljbF9zaXplOwkvKiBzaXplIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisrCXVpbnQxNl90CWljbF90eXBlOwkvKiB0eXBlIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisrCXVpbnQxNl90CWljbF9zaXplOwkvKiBzaXplIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisgCV9fYmUzMgkJaWNsX2FnOwkJLyogYWcgYmVpbmcgYWxsb2NhdGVkIGluICovCisgCV9fYmUzMgkJaWNsX2FnYm5vOwkvKiBzdGFydCBibG9jayBvZiBpbm9kZSByYW5nZSAqLworIAlfX2JlMzIJCWljbF9jb3VudDsJLyogbnVtYmVyIG9mIGlub2RlcyB0byBpbml0aWFsaXNlICovCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19xdW90YV9kZWZzLmggYi9saWJ4ZnMveGZzX3F1b3RhX2RlZnMuaAoraW5kZXggOGVlZDUxMjcuLmQ2OWM3NzIyIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19xdW90YV9kZWZzLmgKKysrKyBiL2xpYnhmcy94ZnNfcXVvdGFfZGVmcy5oCitAQCAtMjcsOCArMjcsOCBAQAorICAqIHRoZXkgbWF5IG5lZWQgNjQtYml0IGFjY291bnRpbmcuIEhlbmNlLCA2NC1iaXQgcXVvdGEtY291bnRlcnMsCisgICogYW5kIHF1b3RhLWxpbWl0cy4gVGhpcyBpcyBhIHdhc3RlIGluIHRoZSBjb21tb24gY2FzZSwgYnV0IGhleSAuLi4KKyAgKi8KKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX3FjbnRfdDsKKy10eXBlZGVmIF9fdWludDE2X3QJeGZzX3F3YXJuY250X3Q7CisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfcWNudF90OworK3R5cGVkZWYgdWludDE2X3QJeGZzX3F3YXJuY250X3Q7CisgCisgLyoKKyAgKiBmbGFncyBmb3IgcV9mbGFncyBmaWVsZCBpbiB0aGUgZHF1b3QuCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jIGIvbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jCitpbmRleCAyODE0Zjk0Zi4uYmQxYThmMmQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JlZmNvdW50X2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfcmVmY291bnRfYnRyZWUuYworQEAgLTIwMSw3ICsyMDEsNyBAQCB4ZnNfcmVmY291bnRidF9pbml0X3B0cl9mcm9tX2N1cigKKyAJcHRyLT5zID0gYWdmLT5hZ2ZfcmVmY291bnRfcm9vdDsKKyB9CisgCistU1RBVElDIF9faW50NjRfdAorK1NUQVRJQyBpbnQ2NF90CisgeGZzX3JlZmNvdW50YnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKK0BAIC0yMDksMTYgKzIwOSwxNiBAQCB4ZnNfcmVmY291bnRidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19yZWZjb3VudF9pcmVjCSpyZWMgPSAmY3VyLT5iY19yZWMucmM7CisgCXN0cnVjdCB4ZnNfcmVmY291bnRfa2V5CQkqa3AgPSAma2V5LT5yZWZjOworIAorLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+cmNfc3RhcnRibG9jaykgLSByZWMtPnJjX3N0YXJ0YmxvY2s7CisrCXJldHVybiAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+cmNfc3RhcnRibG9jaykgLSByZWMtPnJjX3N0YXJ0YmxvY2s7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19yZWZjb3VudGJ0X2RpZmZfdHdvX2tleXMoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsxLAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMikKKyB7CistCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5yZWZjLnJjX3N0YXJ0YmxvY2spIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5yZWZjLnJjX3N0YXJ0YmxvY2spIC0KKyAJCQkgIGJlMzJfdG9fY3B1KGsyLT5yZWZjLnJjX3N0YXJ0YmxvY2spOworIH0KKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JtYXAuYyBiL2xpYnhmcy94ZnNfcm1hcC5jCitpbmRleCBmNzg3NzFkMS4uMGQ2YjVkNDEgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JtYXAuYworKysrIGIvbGlieGZzL3hmc19ybWFwLmMKK0BAIC0yMDU5LDcgKzIwNTksNyBAQCBpbnQKKyB4ZnNfcm1hcF9maW5pc2hfb25lKAorIAlzdHJ1Y3QgeGZzX3RyYW5zCQkqdHAsCisgCWVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUJdHlwZSwKKy0JX191aW50NjRfdAkJCW93bmVyLAorKwl1aW50NjRfdAkJCW93bmVyLAorIAlpbnQJCQkJd2hpY2hmb3JrLAorIAl4ZnNfZmlsZW9mZl90CQkJc3RhcnRvZmYsCisgCXhmc19mc2Jsb2NrX3QJCQlzdGFydGJsb2NrLAorQEAgLTIxODAsNyArMjE4MCw3IEBAIF9feGZzX3JtYXBfYWRkKAorIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCisgCXN0cnVjdCB4ZnNfZGVmZXJfb3BzCQkqZGZvcHMsCisgCWVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUJdHlwZSwKKy0JX191aW50NjRfdAkJCW93bmVyLAorKwl1aW50NjRfdAkJCW93bmVyLAorIAlpbnQJCQkJd2hpY2hmb3JrLAorIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwkJKmJtYXApCisgeworQEAgLTIyNjQsNyArMjI2NCw3IEBAIHhmc19ybWFwX2FsbG9jX2V4dGVudCgKKyAJeGZzX2FnbnVtYmVyX3QJCWFnbm8sCisgCXhmc19hZ2Jsb2NrX3QJCWJubywKKyAJeGZzX2V4dGxlbl90CQlsZW4sCistCV9fdWludDY0X3QJCW93bmVyKQorKwl1aW50NjRfdAkJb3duZXIpCisgeworIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwlibWFwOworIAorQEAgLTIyODgsNyArMjI4OCw3IEBAIHhmc19ybWFwX2ZyZWVfZXh0ZW50KAorIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKKyAJeGZzX2FnYmxvY2tfdAkJYm5vLAorIAl4ZnNfZXh0bGVuX3QJCWxlbiwKKy0JX191aW50NjRfdAkJb3duZXIpCisrCXVpbnQ2NF90CQlvd25lcikKKyB7CisgCXN0cnVjdCB4ZnNfYm1idF9pcmVjCWJtYXA7CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ybWFwLmggYi9saWJ4ZnMveGZzX3JtYXAuaAoraW5kZXggOThmOTA4ZmUuLjI2NTExNmQwIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ybWFwLmgKKysrKyBiL2xpYnhmcy94ZnNfcm1hcC5oCitAQCAtMTc5LDcgKzE3OSw3IEBAIGVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUgeworIHN0cnVjdCB4ZnNfcm1hcF9pbnRlbnQgeworIAlzdHJ1Y3QgbGlzdF9oZWFkCQkJcmlfbGlzdDsKKyAJZW51bSB4ZnNfcm1hcF9pbnRlbnRfdHlwZQkJcmlfdHlwZTsKKy0JX191aW50NjRfdAkJCQlyaV9vd25lcjsKKysJdWludDY0X3QJCQkJcmlfb3duZXI7CisgCWludAkJCQkJcmlfd2hpY2hmb3JrOworIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwkJCXJpX2JtYXA7CisgfTsKK0BAIC0xOTYsMTUgKzE5NiwxNSBAQCBpbnQgeGZzX3JtYXBfY29udmVydF9leHRlbnQoc3RydWN0IHhmc19tb3VudCAqbXAsIHN0cnVjdCB4ZnNfZGVmZXJfb3BzICpkZm9wcywKKyAJCXN0cnVjdCB4ZnNfYm1idF9pcmVjICppbWFwKTsKKyBpbnQgeGZzX3JtYXBfYWxsb2NfZXh0ZW50KHN0cnVjdCB4ZnNfbW91bnQgKm1wLCBzdHJ1Y3QgeGZzX2RlZmVyX29wcyAqZGZvcHMsCisgCQl4ZnNfYWdudW1iZXJfdCBhZ25vLCB4ZnNfYWdibG9ja190IGJubywgeGZzX2V4dGxlbl90IGxlbiwKKy0JCV9fdWludDY0X3Qgb3duZXIpOworKwkJdWludDY0X3Qgb3duZXIpOworIGludCB4ZnNfcm1hcF9mcmVlX2V4dGVudChzdHJ1Y3QgeGZzX21vdW50ICptcCwgc3RydWN0IHhmc19kZWZlcl9vcHMgKmRmb3BzLAorIAkJeGZzX2FnbnVtYmVyX3QgYWdubywgeGZzX2FnYmxvY2tfdCBibm8sIHhmc19leHRsZW5fdCBsZW4sCistCQlfX3VpbnQ2NF90IG93bmVyKTsKKysJCXVpbnQ2NF90IG93bmVyKTsKKyAKKyB2b2lkIHhmc19ybWFwX2ZpbmlzaF9vbmVfY2xlYW51cChzdHJ1Y3QgeGZzX3RyYW5zICp0cCwKKyAJCXN0cnVjdCB4ZnNfYnRyZWVfY3VyICpyY3VyLCBpbnQgZXJyb3IpOworIGludCB4ZnNfcm1hcF9maW5pc2hfb25lKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBlbnVtIHhmc19ybWFwX2ludGVudF90eXBlIHR5cGUsCistCQlfX3VpbnQ2NF90IG93bmVyLCBpbnQgd2hpY2hmb3JrLCB4ZnNfZmlsZW9mZl90IHN0YXJ0b2ZmLAorKwkJdWludDY0X3Qgb3duZXIsIGludCB3aGljaGZvcmssIHhmc19maWxlb2ZmX3Qgc3RhcnRvZmYsCisgCQl4ZnNfZnNibG9ja190IHN0YXJ0YmxvY2ssIHhmc19maWxibGtzX3QgYmxvY2tjb3VudCwKKyAJCXhmc19leG50c3RfdCBzdGF0ZSwgc3RydWN0IHhmc19idHJlZV9jdXIgKipwY3VyKTsKKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JtYXBfYnRyZWUuYyBiL2xpYnhmcy94ZnNfcm1hcF9idHJlZS5jCitpbmRleCBhMTg2Yzg3Mi4uNDVhYzQzNmYgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JtYXBfYnRyZWUuYworKysrIGIvbGlieGZzL3hmc19ybWFwX2J0cmVlLmMKK0BAIC0xOTcsNyArMTk3LDcgQEAgeGZzX3JtYXBidF9pbml0X2hpZ2hfa2V5X2Zyb21fcmVjKAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprZXksCisgCXVuaW9uIHhmc19idHJlZV9yZWMJKnJlYykKKyB7CistCV9fdWludDY0X3QJCW9mZjsKKysJdWludDY0X3QJCW9mZjsKKyAJaW50CQkJYWRqOworIAorIAlhZGogPSBiZTMyX3RvX2NwdShyZWMtPnJtYXAucm1fYmxvY2tjb3VudCkgLSAxOworQEAgLTIzOSw3ICsyMzksNyBAQCB4ZnNfcm1hcGJ0X2luaXRfcHRyX2Zyb21fY3VyKAorIAlwdHItPnMgPSBhZ2YtPmFnZl9yb290c1tjdXItPmJjX2J0bnVtXTsKKyB9CisgCistU1RBVElDIF9faW50NjRfdAorK1NUQVRJQyBpbnQ2NF90CisgeGZzX3JtYXBidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorQEAgLTI0Nyw5ICsyNDcsOSBAQCB4ZnNfcm1hcGJ0X2tleV9kaWZmKAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqcmVjID0gJmN1ci0+YmNfcmVjLnI7CisgCXN0cnVjdCB4ZnNfcm1hcF9rZXkJKmtwID0gJmtleS0+cm1hcDsKKyAJX191NjQJCQl4LCB5OworLQlfX2ludDY0X3QJCWQ7CisrCWludDY0X3QJCQlkOworIAorLQlkID0gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+cm1fc3RhcnRibG9jaykgLSByZWMtPnJtX3N0YXJ0YmxvY2s7CisrCWQgPSAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+cm1fc3RhcnRibG9jaykgLSByZWMtPnJtX3N0YXJ0YmxvY2s7CisgCWlmIChkKQorIAkJcmV0dXJuIGQ7CisgCitAQCAtMjY5LDcgKzI2OSw3IEBAIHhmc19ybWFwYnRfa2V5X2RpZmYoCisgCXJldHVybiAwOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfcm1hcGJ0X2RpZmZfdHdvX2tleXMoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsxLAorQEAgLTI3NywxMCArMjc3LDEwIEBAIHhmc19ybWFwYnRfZGlmZl90d29fa2V5cygKKyB7CisgCXN0cnVjdCB4ZnNfcm1hcF9rZXkJKmtwMSA9ICZrMS0+cm1hcDsKKyAJc3RydWN0IHhmc19ybWFwX2tleQkqa3AyID0gJmsyLT5ybWFwOworLQlfX2ludDY0X3QJCWQ7CisrCWludDY0X3QJCQlkOworIAlfX3U2NAkJCXgsIHk7CisgCistCWQgPSAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwMS0+cm1fc3RhcnRibG9jaykgLQorKwlkID0gKGludDY0X3QpYmUzMl90b19jcHUoa3AxLT5ybV9zdGFydGJsb2NrKSAtCisgCQkgICAgICAgYmUzMl90b19jcHUoa3AyLT5ybV9zdGFydGJsb2NrKTsKKyAJaWYgKGQpCisgCQlyZXR1cm4gZDsKK0BAIC0zODIsMTAgKzM4MiwxMCBAQCB4ZnNfcm1hcGJ0X2tleXNfaW5vcmRlcigKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsyKQorIHsKKy0JX191aW50MzJfdAkJeDsKKy0JX191aW50MzJfdAkJeTsKKy0JX191aW50NjRfdAkJYTsKKy0JX191aW50NjRfdAkJYjsKKysJdWludDMyX3QJCXg7CisrCXVpbnQzMl90CQl5OworKwl1aW50NjRfdAkJYTsKKysJdWludDY0X3QJCWI7CisgCisgCXggPSBiZTMyX3RvX2NwdShrMS0+cm1hcC5ybV9zdGFydGJsb2NrKTsKKyAJeSA9IGJlMzJfdG9fY3B1KGsyLT5ybWFwLnJtX3N0YXJ0YmxvY2spOworQEAgLTQxMiwxMCArNDEyLDEwIEBAIHhmc19ybWFwYnRfcmVjc19pbm9yZGVyKAorIAl1bmlvbiB4ZnNfYnRyZWVfcmVjCSpyMSwKKyAJdW5pb24geGZzX2J0cmVlX3JlYwkqcjIpCisgeworLQlfX3VpbnQzMl90CQl4OworLQlfX3VpbnQzMl90CQl5OworLQlfX3VpbnQ2NF90CQlhOworLQlfX3VpbnQ2NF90CQliOworKwl1aW50MzJfdAkJeDsKKysJdWludDMyX3QJCXk7CisrCXVpbnQ2NF90CQlhOworKwl1aW50NjRfdAkJYjsKKyAKKyAJeCA9IGJlMzJfdG9fY3B1KHIxLT5ybWFwLnJtX3N0YXJ0YmxvY2spOworIAl5ID0gYmUzMl90b19jcHUocjItPnJtYXAucm1fc3RhcnRibG9jayk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ydGJpdG1hcC5jIGIvbGlieGZzL3hmc19ydGJpdG1hcC5jCitpbmRleCBkYmQyZjg4MS4uOGY4YTk5ZDYgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3J0Yml0bWFwLmMKKysrKyBiL2xpYnhmcy94ZnNfcnRiaXRtYXAuYworQEAgLTEwMDYsNyArMTAwNiw3IEBAIHhmc19ydGZyZWVfZXh0ZW50KAorIAkgICAgbXAtPm1fc2Iuc2JfcmV4dGVudHMpIHsKKyAJCWlmICghKG1wLT5tX3JibWlwLT5pX2QuZGlfZmxhZ3MgJiBYRlNfRElGTEFHX05FV1JUQk0pKQorIAkJCW1wLT5tX3JibWlwLT5pX2QuZGlfZmxhZ3MgfD0gWEZTX0RJRkxBR19ORVdSVEJNOworLQkJKihfX3VpbnQ2NF90ICopJlZGU19JKG1wLT5tX3JibWlwKS0+aV9hdGltZSA9IDA7CisrCQkqKHVpbnQ2NF90ICopJlZGU19JKG1wLT5tX3JibWlwKS0+aV9hdGltZSA9IDA7CisgCQl4ZnNfdHJhbnNfbG9nX2lub2RlKHRwLCBtcC0+bV9yYm1pcCwgWEZTX0lMT0dfQ09SRSk7CisgCX0KKyAJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19zYi5jIGIvbGlieGZzL3hmc19zYi5jCitpbmRleCA5M2ExODE5MC4uNTFmNjk3MDQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3NiLmMKKysrKyBiL2xpYnhmcy94ZnNfc2IuYworQEAgLTQzMCw3ICs0MzAsNyBAQCB4ZnNfc2JfcXVvdGFfdG9fZGlzaygKKyAJc3RydWN0IHhmc19kc2IJKnRvLAorIAlzdHJ1Y3QgeGZzX3NiCSpmcm9tKQorIHsKKy0JX191aW50MTZfdAlxZmxhZ3MgPSBmcm9tLT5zYl9xZmxhZ3M7CisrCXVpbnQxNl90CXFmbGFncyA9IGZyb20tPnNiX3FmbGFnczsKKyAKKyAJdG8tPnNiX3VxdW90aW5vID0gY3B1X3RvX2JlNjQoZnJvbS0+c2JfdXF1b3Rpbm8pOworIAlpZiAoeGZzX3NiX3ZlcnNpb25faGFzX3BxdW90aW5vKGZyb20pKSB7CitAQCAtNzM4LDcgKzczOCw3IEBAIHhmc19zYl9tb3VudF9jb21tb24oCisgCW1wLT5tX3JlZmNfbW5yWzFdID0gbXAtPm1fcmVmY19teHJbMV0gLyAyOworIAorIAltcC0+bV9ic2l6ZSA9IFhGU19GU0JfVE9fQkIobXAsIDEpOworLQltcC0+bV9pYWxsb2NfaW5vcyA9IChpbnQpTUFYKChfX3VpbnQxNl90KVhGU19JTk9ERVNfUEVSX0NIVU5LLAorKwltcC0+bV9pYWxsb2NfaW5vcyA9IChpbnQpTUFYKCh1aW50MTZfdClYRlNfSU5PREVTX1BFUl9DSFVOSywKKyAJCQkJCXNicC0+c2JfaW5vcGJsb2NrKTsKKyAJbXAtPm1faWFsbG9jX2Jsa3MgPSBtcC0+bV9pYWxsb2NfaW5vcyA+PiBzYnAtPnNiX2lub3BibG9nOworIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfdHlwZXMuaCBiL2xpYnhmcy94ZnNfdHlwZXMuaAoraW5kZXggNzE3OTA5ZjIuLjAyMjAxNTliIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc190eXBlcy5oCisrKysgYi9saWJ4ZnMveGZzX3R5cGVzLmgKK0BAIC0xOCwzNCArMTgsMzQgQEAKKyAjaWZuZGVmIF9fWEZTX1RZUEVTX0hfXworICNkZWZpbmUJX19YRlNfVFlQRVNfSF9fCisgCistdHlwZWRlZiBfX3VpbnQzMl90CXByaWRfdDsJCS8qIHByb2plY3QgSUQgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXByaWRfdDsJCS8qIHByb2plY3QgSUQgKi8KKyAKKy10eXBlZGVmIF9fdWludDMyX3QJeGZzX2FnYmxvY2tfdDsJLyogYmxvY2tubyBpbiBhbGxvYy4gZ3JvdXAgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2FnaW5vX3Q7CS8qIGlub2RlICMgd2l0aGluIGFsbG9jYXRpb24gZ3JwICovCistdHlwZWRlZglfX3VpbnQzMl90CXhmc19leHRsZW5fdDsJLyogZXh0ZW50IGxlbmd0aCBpbiBibG9ja3MgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2FnbnVtYmVyX3Q7CS8qIGFsbG9jYXRpb24gZ3JvdXAgbnVtYmVyICovCistdHlwZWRlZiBfX2ludDMyX3QJeGZzX2V4dG51bV90OwkvKiAjIG9mIGV4dGVudHMgaW4gYSBmaWxlICovCistdHlwZWRlZiBfX2ludDE2X3QJeGZzX2FleHRudW1fdDsJLyogIyBleHRlbnRzIGluIGFuIGF0dHJpYnV0ZSBmb3JrICovCistdHlwZWRlZglfX2ludDY0X3QJeGZzX2ZzaXplX3Q7CS8qIGJ5dGVzIGluIGEgZmlsZSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfdWZzaXplX3Q7CS8qIHVuc2lnbmVkIGJ5dGVzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2FnYmxvY2tfdDsJLyogYmxvY2tubyBpbiBhbGxvYy4gZ3JvdXAgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXhmc19hZ2lub190OwkvKiBpbm9kZSAjIHdpdGhpbiBhbGxvY2F0aW9uIGdycCAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2V4dGxlbl90OwkvKiBleHRlbnQgbGVuZ3RoIGluIGJsb2NrcyAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2FnbnVtYmVyX3Q7CS8qIGFsbG9jYXRpb24gZ3JvdXAgbnVtYmVyICovCisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfZXh0bnVtX3Q7CS8qICMgb2YgZXh0ZW50cyBpbiBhIGZpbGUgKi8KKyt0eXBlZGVmIGludDE2X3QJCXhmc19hZXh0bnVtX3Q7CS8qICMgZXh0ZW50cyBpbiBhbiBhdHRyaWJ1dGUgZm9yayAqLworK3R5cGVkZWYgaW50NjRfdAkJeGZzX2ZzaXplX3Q7CS8qIGJ5dGVzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3Vmc2l6ZV90OwkvKiB1bnNpZ25lZCBieXRlcyBpbiBhIGZpbGUgKi8KKyAKKy10eXBlZGVmCV9faW50MzJfdAl4ZnNfc3VtaW5mb190OwkvKiB0eXBlIG9mIGJpdG1hcCBzdW1tYXJ5IGluZm8gKi8KKy10eXBlZGVmCV9faW50MzJfdAl4ZnNfcnR3b3JkX3Q7CS8qIHdvcmQgdHlwZSBmb3IgYml0bWFwIG1hbmlwdWxhdGlvbnMgKi8KKyt0eXBlZGVmIGludDMyX3QJCXhmc19zdW1pbmZvX3Q7CS8qIHR5cGUgb2YgYml0bWFwIHN1bW1hcnkgaW5mbyAqLworK3R5cGVkZWYgaW50MzJfdAkJeGZzX3J0d29yZF90OwkvKiB3b3JkIHR5cGUgZm9yIGJpdG1hcCBtYW5pcHVsYXRpb25zICovCisgCistdHlwZWRlZglfX2ludDY0X3QJeGZzX2xzbl90OwkvKiBsb2cgc2VxdWVuY2UgbnVtYmVyICovCistdHlwZWRlZglfX2ludDMyX3QJeGZzX3RpZF90OwkvKiB0cmFuc2FjdGlvbiBpZGVudGlmaWVyICovCisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfbHNuX3Q7CS8qIGxvZyBzZXF1ZW5jZSBudW1iZXIgKi8KKyt0eXBlZGVmIGludDMyX3QJCXhmc190aWRfdDsJLyogdHJhbnNhY3Rpb24gaWRlbnRpZmllciAqLworIAorLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGFibGtfdDsJLyogZGlyL2F0dHIgYmxvY2sgbnVtYmVyIChpbiBmaWxlKSAqLworLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGFoYXNoX3Q7CS8qIGRpci9hdHRyIGhhc2ggdmFsdWUgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kYWJsa190OwkvKiBkaXIvYXR0ciBibG9jayBudW1iZXIgKGluIGZpbGUpICovCisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGFoYXNoX3Q7CS8qIGRpci9hdHRyIGhhc2ggdmFsdWUgKi8KKyAKKy10eXBlZGVmCV9fdWludDY0X3QJeGZzX2ZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChhZ25vfGFnYm5vKSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfcmZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChyYXcpICovCistdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19ydGJsb2NrX3Q7CS8qIGV4dGVudCAoYmxvY2spIGluIHJlYWx0aW1lIGFyZWEgKi8KKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2ZpbGVvZmZfdDsJLyogYmxvY2sgbnVtYmVyIGluIGEgZmlsZSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfZmlsYmxrc190OwkvKiBudW1iZXIgb2YgYmxvY2tzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChhZ25vfGFnYm5vKSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3Jmc2Jsb2NrX3Q7CS8qIGJsb2Nrbm8gaW4gZmlsZXN5c3RlbSAocmF3KSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3J0YmxvY2tfdDsJLyogZXh0ZW50IChibG9jaykgaW4gcmVhbHRpbWUgYXJlYSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZpbGVvZmZfdDsJLyogYmxvY2sgbnVtYmVyIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZpbGJsa3NfdDsJLyogbnVtYmVyIG9mIGJsb2NrcyBpbiBhIGZpbGUgKi8KKyAKKy10eXBlZGVmCV9faW50NjRfdAl4ZnNfc3J0YmxvY2tfdDsJLyogc2lnbmVkIHZlcnNpb24gb2YgeGZzX3J0YmxvY2tfdCAqLworLXR5cGVkZWYgX19pbnQ2NF90CXhmc19zZmlsb2ZmX3Q7CS8qIHNpZ25lZCBibG9jayBudW1iZXIgaW4gYSBmaWxlICovCisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfc3J0YmxvY2tfdDsJLyogc2lnbmVkIHZlcnNpb24gb2YgeGZzX3J0YmxvY2tfdCAqLworK3R5cGVkZWYgaW50NjRfdAkJeGZzX3NmaWxvZmZfdDsJLyogc2lnbmVkIGJsb2NrIG51bWJlciBpbiBhIGZpbGUgKi8KKyAKKyAvKgorICAqIE51bGwgdmFsdWVzIGZvciB0aGUgdHlwZXMuCitAQCAtMTI1LDcgKzEyNSw3IEBAIHN0cnVjdCB4ZnNfbmFtZSB7CisgICogdWlkX3QgYW5kIGdpZF90IGFyZSBoYXJkLWNvZGVkIHRvIDMyIGJpdHMgaW4gdGhlIGlub2RlLgorICAqIEhlbmNlLCBhbiAnaWQnIGluIGEgZHF1b3QgaXMgMzIgYml0cy4uCisgICovCistdHlwZWRlZiBfX3VpbnQzMl90CXhmc19kcWlkX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZHFpZF90OworIAorIC8qCisgICogQ29uc3RhbnRzIGZvciBiaXQgbWFuaXB1bGF0aW9ucy4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEteGZzcHJvZ3MtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMDhmMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoCkBAIC0wLDAgKzEsMzgwMCBAQAorRnJvbSAxNGY4YjY4MTBiZDI0MGNjNTgxMzE0ODM3OTBhMDk5ZmNmNTZjMDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjMzOjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhmc3Byb2dzOiByZW1vdmUgZG91YmxlLXVuZGVyc2NvcmUgaW50ZWdlciB0eXBlcworCitUaGlzIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcGF0Y2ggdGhhdCByZW1vdmVzIHRoZSBwcml2YXRlCitfX3t1LH1pbnR7OCwxNiwzMiw2NH1fdCB0eXBlZGVmcyBpbiBmYXZvciBvZiB1c2luZyB0aGUgc3lzdGVtCit7dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMuICBUaGlzIGlzIHRoZSBzZWQgc2NyaXB0IHVzZWQgdG8gcGVyZm9ybQordGhlIHRyYW5zZm9ybWF0aW9uIGFuZCBmaXggdGhlIHJlc3VsdGluZyB3aGl0ZXNwYWNlIGFuZCBpbmRlbnRhdGlvbgorZXJyb3JzOgorCitzL3R5cGVkZWZcdF9fdWludDhfdC90eXBlZGVmIF9fdWludDhfdFx0L2cKK3MvdHlwZWRlZlx0X191aW50L3R5cGVkZWYgX191aW50L2cKK3MvdHlwZWRlZlx0X19pbnRcKFswLTldKlwpX3QvdHlwZWRlZiBpbnRcMV90XHQvZworcy9fX3VpbnQ4X3RcdC9fX3VpbnQ4X3RcdFx0L2cKK3MvX191aW50L3VpbnQvZworcy9fX2ludFwoWzAtOV0qXClfdFx0L19faW50XDFfdFx0XHQvZworcy9fX2ludC9pbnQvZworL150eXBlZGVmLippbnRbMC05XSpfdDskL2QKKworU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KK1Jldmlld2VkLWJ5OiBDYXJsb3MgTWFpb2xpbm8gPGNtYWlvbGlub0ByZWRoYXQuY29tPgorW3NhbmRlZW46IGZpeCB3aGl0ZXNwYWNlIGluY2lkZW50YWxzXQorUmV2aWV3ZWQtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5Ac2FuZGVlbi5uZXQ+CistLS0KKyBjb3B5L3hmc19jb3B5LmMgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCisgY29weS94ZnNfY29weS5oICAgICAgICAgICB8ICAyICstCisgZGIvYXR0ci5jICAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCisgZGIvYXR0cnNob3J0LmMgICAgICAgICAgICB8ICA0ICstLQorIGRiL2JpdC5jICAgICAgICAgICAgICAgICAgfCAgNCArLS0KKyBkYi9iaXQuaCAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBkYi9ibG9jay5jICAgICAgICAgICAgICAgIHwgIDggKystLS0KKyBkYi9jaGVjay5jICAgICAgICAgICAgICAgIHwgMTggKysrKystLS0tLS0KKyBkYi9jb252ZXJ0LmMgICAgICAgICAgICAgIHwgMjggKysrKysrKystLS0tLS0tLS0KKyBkYi9mYWRkci5jICAgICAgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCisgZGIvZmllbGQuYyAgICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIGRiL2ZwcmludC5jICAgICAgICAgICAgICAgfCAgOCArKy0tLQorIGRiL2ZyYWcuYyAgICAgICAgICAgICAgICAgfCAgOCArKy0tLQorIGRiL2lub2RlLmMgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrLS0tLS0tLS0tLS0KKyBkYi9pby5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBkYi9pby5oICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQorIGRiL21ldGFkdW1wLmMgICAgICAgICAgICAgfCAxMiArKysrLS0tLQorIGRiL3NiLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCisgZnNyL3hmc19mc3IuYyAgICAgICAgICAgICB8ICAyICstCisgaW5jbHVkZS9kYXJ3aW4uaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCisgaW5jbHVkZS9mcmVlYnNkLmggICAgICAgICB8ICA2ICsrLS0KKyBpbmNsdWRlL2dudWtmcmVlYnNkLmggICAgIHwgIDYgKystLQorIGluY2x1ZGUvbGlieGNtZC5oICAgICAgICAgfCAgNiArKy0tCisgaW5jbHVkZS9saW51eC5oICAgICAgICAgICB8ICA4ICsrLS0tCisgaW5jbHVkZS94ZnNfYXJjaC5oICAgICAgICB8IDIyICsrKysrKystLS0tLS0tCisgaW5jbHVkZS94ZnNfaW5vZGUuaCAgICAgICB8ICA0ICstLQorIGluY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggfCAgMiArLQorIGluY2x1ZGUveGZzX21ldGFkdW1wLmggICAgfCAgNCArLS0KKyBpbmNsdWRlL3hmc19tb3VudC5oICAgICAgIHwgMjIgKysrKysrKy0tLS0tLS0KKyBsaWJoYW5kbGUvaGFuZGxlLmMgICAgICAgIHwgIDIgKy0KKyBsaWJoYW5kbGUvamRtLmMgICAgICAgICAgIHwgIDIgKy0KKyBsaWJ4Y21kL3RvcG9sb2d5LmMgICAgICAgIHwgMTQgKysrKy0tLS0tCisgbGlieGZzL2Rhcndpbi5jICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2ZyZWVic2QuYyAgICAgICAgICB8ICAyICstCisgbGlieGZzL2luaXQuYyAgICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2lyaXguYyAgICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2xpYnhmc19wcml2LmggICAgICB8ICA0ICstLQorIGxpYnhmcy9saW51eC5jICAgICAgICAgICAgfCAgMiArLQorIGxpYnhmcy9sb2dpdGVtLmMgICAgICAgICAgfCAgMiArLQorIGxpYnhmcy9yYWRpeC10cmVlLmMgICAgICAgfCAgOCArKy0tLQorIGxpYnhmcy9yZHdyLmMgICAgICAgICAgICAgfCAgNiArKy0tCisgbGlieGZzL3V0aWwuYyAgICAgICAgICAgICB8ICA4ICsrLS0tCisgbG9ncHJpbnQvbG9nX21pc2MuYyAgICAgICB8ICA2ICsrLS0KKyBtZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jIHwgIDIgKy0KKyBta2ZzL3Byb3RvLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyBta2ZzL3hmc19ta2ZzLmMgICAgICAgICAgIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBxdW90YS9lZGl0LmMgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcXVvdGEvZnJlZS5jICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIHF1b3RhL3F1b3QuYyAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KKyBxdW90YS9xdW90YS5jICAgICAgICAgICAgIHwgIDQgKy0tCisgcXVvdGEvcXVvdGEuaCAgICAgICAgICAgICB8IDEyICsrKystLS0tCisgcXVvdGEvcmVwb3J0LmMgICAgICAgICAgICB8ICA0ICstLQorIHF1b3RhL3N0YXRlLmMgICAgICAgICAgICAgfCAgMiArLQorIHF1b3RhL3V0aWwuYyAgICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVwYWlyL1JFQURNRSAgICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL2FnaGVhZGVyLmggICAgICAgICB8IDE0ICsrKystLS0tLQorIHJlcGFpci9hdHRyX3JlcGFpci5oICAgICAgfCAyNiArKysrKysrKy0tLS0tLS0tCisgcmVwYWlyL2F2bDY0LmMgICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHJlcGFpci9hdmw2NC5oICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQorIHJlcGFpci9kaW5vZGUuYyAgICAgICAgICAgfCAzOCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyByZXBhaXIvZGlub2RlLmggICAgICAgICAgIHwgIDQgKy0tCisgcmVwYWlyL2RpcjIuYyAgICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL2dsb2JhbHMuaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCisgcmVwYWlyL2luY29yZS5jICAgICAgICAgICB8IDEwICsrKy0tLS0KKyByZXBhaXIvaW5jb3JlLmggICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIHJlcGFpci9pbmNvcmVfZXh0LmMgICAgICAgfCAgNiArKy0tCisgcmVwYWlyL2luY29yZV9pbm8uYyAgICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVwYWlyL3BoYXNlMi5jICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL3BoYXNlMy5jICAgICAgICAgICB8ICA2ICsrLS0KKyByZXBhaXIvcGhhc2U0LmMgICAgICAgICAgIHwgIDQgKy0tCisgcmVwYWlyL3BoYXNlNS5jICAgICAgICAgICB8IDI4ICsrKysrKysrLS0tLS0tLS0tCisgcmVwYWlyL3BoYXNlNi5jICAgICAgICAgICB8IDE2ICsrKysrLS0tLS0KKyByZXBhaXIvcGhhc2U3LmMgICAgICAgICAgIHwgIDYgKystLQorIHJlcGFpci9wcm9ncmVzcy5jICAgICAgICAgfCAzMCArKysrKysrKystLS0tLS0tLS0tCisgcmVwYWlyL3Byb2dyZXNzLmggICAgICAgICB8ICA0ICstLQorIHJlcGFpci9ybWFwLmMgICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQorIHJlcGFpci9ybWFwLmggICAgICAgICAgICAgfCAgMiArLQorIHJlcGFpci9zYi5jICAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KKyByZXBhaXIvc2Nhbi5jICAgICAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIHJlcGFpci9zY2FuLmggICAgICAgICAgICAgfCAxMiArKysrLS0tLQorIDgwIGZpbGVzIGNoYW5nZWQsIDU5MCBpbnNlcnRpb25zKCspLCA1OTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb3B5L3hmc19jb3B5LmMgYi9jb3B5L3hmc19jb3B5LmMKK2luZGV4IGE3ZGE4MjRmLi4zM2UwNWRmZCAxMDA2NDQKKy0tLSBhL2NvcHkveGZzX2NvcHkuYworKysrIGIvY29weS94ZnNfY29weS5jCitAQCAtNDMsNyArNDMsNyBAQCB1bnNpZ25lZCBpbnQJc291cmNlX3NlY3RvcnNpemU7CS8qIHNvdXJjZSBkaXNrIHNlY3RvcnNpemUgKi8KKyAKKyB4ZnNfYWdibG9ja190CWZpcnN0X2FnYm5vOworIAorLV9fdWludDY0X3QJYmFyY291bnRbMTFdOworK3VpbnQ2NF90CWJhcmNvdW50WzExXTsKKyAKKyB1bnNpZ25lZCBpbnQJbnVtX3RhcmdldHM7CisgdGFyZ2V0X2NvbnRyb2wJKnRhcmdldDsKK0BAIC0zMTMsNyArMzEzLDcgQEAgdXNhZ2Uodm9pZCkKKyB9CisgCisgdm9pZAorLWluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKKytpbml0X2Jhcih1aW50NjRfdCBzb3VyY2VfYmxvY2tzKQorIHsKKyAJaW50CWk7CisgCitAQCAtMzIyLDcgKzMyMiw3IEBAIGluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKKyB9CisgCisgaW50CistYnVtcF9iYXIoaW50IHRlbnRocywgX191aW50NjRfdCBudW1ibG9ja3MpCisrYnVtcF9iYXIoaW50IHRlbnRocywgdWludDY0X3QgbnVtYmxvY2tzKQorIHsKKyAJc3RhdGljIGNoYXIgKmJhclsxMV0gPSB7CisgCQkiIDAlICIsCitAQCAtNTM0LDggKzUzNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAl4ZnNfb2ZmX3QJcG9zOworIAlzaXplX3QJCWxlbmd0aDsKKyAJaW50CQljOworLQlfX3VpbnQ2NF90CXNpemUsIHNpemViOworLQlfX3VpbnQ2NF90CW51bWJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CXNpemUsIHNpemViOworKwl1aW50NjRfdAludW1ibG9ja3MgPSAwOworIAlpbnQJCXdibG9ja3MgPSAwOworIAlpbnQJCW51bV90aHJlYWRzID0gMDsKKyAJc3RydWN0IGRpb2F0dHIJZDsKK0BAIC05NTEsOCArOTUxLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCW51bV9hZ3MgPSBtcC0+bV9zYi5zYl9hZ2NvdW50OworIAorIAlpbml0X2JhcihtcC0+bV9zYi5zYl9ibG9ja3NpemUgLyBCQlNJWkUKKy0JCQkqICgoX191aW50NjRfdCltcC0+bV9zYi5zYl9kYmxvY2tzCistCQkJICAgIC0gKF9fdWludDY0X3QpbXAtPm1fc2Iuc2JfZmRibG9ja3MgKyAxMCAqIG51bV9hZ3MpKTsKKysJCQkqICgodWludDY0X3QpbXAtPm1fc2Iuc2JfZGJsb2NrcworKwkJCSAgICAtICh1aW50NjRfdCltcC0+bV9zYi5zYl9mZGJsb2NrcyArIDEwICogbnVtX2FncykpOworIAorIAlraWRzID0gbnVtX3RhcmdldHM7CisgCitkaWZmIC0tZ2l0IGEvY29weS94ZnNfY29weS5oIGIvY29weS94ZnNfY29weS5oCitpbmRleCAyNzM3MDY4OC4uNTNjNmU0MmMgMTAwNjQ0CistLS0gYS9jb3B5L3hmc19jb3B5LmgKKysrKyBiL2NvcHkveGZzX2NvcHkuaAorQEAgLTc2LDcgKzc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAorIHR5cGVkZWYgaW50IHRocmVhZF9pZDsKKyB0eXBlZGVmIGludCB0bV9pbmRleDsJCQkvKiBpbmRleCBpbnRvIHRocmVhZCBtYXNrIGFycmF5ICovCistdHlwZWRlZiBfX3VpbnQzMl90IHRocmVhZF9tYXNrOwkJLyogYSB0aHJlYWQgbWFzayAqLworK3R5cGVkZWYgdWludDMyX3QgdGhyZWFkX21hc2s7CQkvKiBhIHRocmVhZCBtYXNrICovCisgCisgdHlwZWRlZiBzdHJ1Y3QgeworIAljaGFyCQkqbmFtZTsKK2RpZmYgLS1naXQgYS9kYi9hdHRyLmMgYi9kYi9hdHRyLmMKK2luZGV4IDMxNTM2YThiLi4yM2ZmY2Q1ZiAxMDA2NDQKKy0tLSBhL2RiL2F0dHIuYworKysrIGIvZGIvYXR0ci5jCitAQCAtNzcsMTYgKzc3LDE2IEBAIGNvbnN0IGZpZWxkX3QJYXR0cl9sZWFmX2VudHJ5X2ZsZHNbXSA9IHsKKyAJeyAibmFtZWlkeCIsIEZMRFRfVUlOVDE2RCwgT0koTEVPRkYobmFtZWlkeCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKKyAJeyAiZmxhZ3MiLCBGTERUX1VJTlQ4WCwgT0koTEVPRkYoZmxhZ3MpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAorIAl7ICJpbmNvbXBsZXRlIiwgRkxEVF9VSU5UMSwKKy0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfSU5DT01QTEVURV9CSVQgLSAxKSwgQzEsCisrCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9JTkNPTVBMRVRFX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJyb290IiwgRkxEVF9VSU5UMSwKKy0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCisrCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9ST09UX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJzZWN1cmUiLCBGTERUX1VJTlQxLAorLQkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDhfdCkgLSBYRlNfQVRUUl9TRUNVUkVfQklUIC0gMSksIEMxLCAwLAorKwkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJsb2NhbCIsIEZMRFRfVUlOVDEsCistCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3ooX191aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKKysJICBPSShMRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJwYWQyIiwgRkxEVF9VSU5UOFgsIE9JKExFT0ZGKHBhZDIpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAorIAl7IE5VTEwgfQorZGlmZiAtLWdpdCBhL2RiL2F0dHJzaG9ydC5jIGIvZGIvYXR0cnNob3J0LmMKK2luZGV4IGQ4MjU1OWNjLi4yZWYzNThmNSAxMDA2NDQKKy0tLSBhL2RiL2F0dHJzaG9ydC5jCisrKysgYi9kYi9hdHRyc2hvcnQuYworQEAgLTUxLDEwICs1MSwxMCBAQCBjb25zdCBmaWVsZF90CWF0dHJfc2ZfZW50cnlfZmxkc1tdID0geworIAl7ICJ2YWx1ZWxlbiIsIEZMRFRfVUlOVDhELCBPSShFT0ZGKHZhbHVlbGVuKSksIEMxLCAwLCBUWVBfTk9ORSB9LAorIAl7ICJmbGFncyIsIEZMRFRfVUlOVDhYLCBPSShFT0ZGKGZsYWdzKSksIEMxLCBGTERfU0tJUEFMTCwgVFlQX05PTkUgfSwKKyAJeyAicm9vdCIsIEZMRFRfVUlOVDEsCistCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCisrCSAgT0koRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX1JPT1RfQklUIC0gMSksIEMxLCAwLAorIAkgIFRZUF9OT05FIH0sCisgCXsgInNlY3VyZSIsIEZMRFRfVUlOVDEsCistCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKysJICBPSShFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJuYW1lIiwgRkxEVF9DSEFSTlMsIE9JKEVPRkYobmFtZXZhbCkpLCBhdHRyX3NmX2VudHJ5X25hbWVfY291bnQsCisgCSAgRkxEX0NPVU5ULCBUWVBfTk9ORSB9LAorZGlmZiAtLWdpdCBhL2RiL2JpdC5jIGIvZGIvYml0LmMKK2luZGV4IDI0ODcyYmY3Li5mNWViZjY4MSAxMDA2NDQKKy0tLSBhL2RiL2JpdC5jCisrKysgYi9kYi9iaXQuYworQEAgLTYwLDcgKzYwLDcgQEAgc2V0Yml0KAorIAl9CisgfQorIAorLV9faW50NjRfdAorK2ludDY0X3QKKyBnZXRiaXR2YWwoCisgCXZvaWQJCSpvYmosCisgCWludAkJYml0b2ZmLAorQEAgLTcwLDcgKzcwLDcgQEAgZ2V0Yml0dmFsKAorIAlpbnQJCWJpdDsKKyAJaW50CQlpOworIAljaGFyCQkqcDsKKy0JX19pbnQ2NF90CXJ2YWw7CisrCWludDY0X3QJCXJ2YWw7CisgCWludAkJc2lnbmV4dDsKKyAJaW50CQl6MSwgejIsIHozLCB6NDsKKyAKK2RpZmYgLS1naXQgYS9kYi9iaXQuaCBiL2RiL2JpdC5oCitpbmRleCA4MGJhMjRjNC4uOWZkNzFmNGIgMTAwNjQ0CistLS0gYS9kYi9iaXQuaAorKysrIGIvZGIvYml0LmgKK0BAIC0yNSw1ICsyNSw1IEBACisgI2RlZmluZQlCVlVOU0lHTkVECTAKKyAjZGVmaW5lCUJWU0lHTkVECTEKKyAKKy1leHRlcm4gX19pbnQ2NF90CWdldGJpdHZhbCh2b2lkICpvYmosIGludCBiaXRvZmYsIGludCBuYml0cywgaW50IGZsYWdzKTsKKytleHRlcm4gaW50NjRfdAkJZ2V0Yml0dmFsKHZvaWQgKm9iaiwgaW50IGJpdG9mZiwgaW50IG5iaXRzLCBpbnQgZmxhZ3MpOworIGV4dGVybiB2b2lkICAgICAgICAgICAgIHNldGJpdHZhbCh2b2lkICpvYnVmLCBpbnQgYml0b2ZmLCBpbnQgbmJpdHMsIHZvaWQgKmlidWYpOworZGlmZiAtLWdpdCBhL2RiL2Jsb2NrLmMgYi9kYi9ibG9jay5jCitpbmRleCA0YTM1N2NlZC4uNWVjZDY4N2EgMTAwNjQ0CistLS0gYS9kYi9ibG9jay5jCisrKysgYi9kYi9ibG9jay5jCitAQCAtOTgsNyArOTgsNyBAQCBhYmxvY2tfZigKKyAJfQorIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKKyAJQVNTRVJUKHR5cHRhYltUWVBfQVRUUl0udHlwbm0gPT0gVFlQX0FUVFIpOworLQlzZXRfY3VyKCZ0eXB0YWJbVFlQX0FUVFJdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisrCXNldF9jdXIoJnR5cHRhYltUWVBfQVRUUl0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisgCQlibGtiYiwgREJfUklOR19BREQsIE5VTEwpOworIAlyZXR1cm4gMDsKKyB9CitAQCAtMTI4LDE0ICsxMjgsMTQgQEAgZGFkZHJfZigKKyAJaW50CQlhcmdjLAorIAljaGFyCQkqKmFyZ3YpCisgeworLQlfX2ludDY0X3QJZDsKKysJaW50NjRfdAkJZDsKKyAJY2hhcgkJKnA7CisgCisgCWlmIChhcmdjID09IDEpIHsKKyAJCWRicHJpbnRmKF8oImN1cnJlbnQgZGFkZHIgaXMgJWxsZFxuIiksIGlvY3VyX3RvcC0+b2ZmID4+IEJCU0hJRlQpOworIAkJcmV0dXJuIDA7CisgCX0KKy0JZCA9IChfX2ludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOworKwlkID0gKGludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOworIAlpZiAoKnAgIT0gJ1wwJyB8fAorIAkgICAgZCA+PSBtcC0+bV9zYi5zYl9kYmxvY2tzIDw8IChtcC0+bV9zYi5zYl9ibG9ja2xvZyAtIEJCU0hJRlQpKSB7CisgCQlkYnByaW50ZihfKCJiYWQgZGFkZHIgJXNcbiIpLCBhcmd2WzFdKTsKK0BAIC0xOTcsNyArMTk3LDcgQEAgZGJsb2NrX2YoCisgCUFTU0VSVCh0eXB0YWJbdHlwZV0udHlwbm0gPT0gdHlwZSk7CisgCWlmIChuZXggPiAxKQorIAkJbWFrZV9iYm1hcCgmYmJtYXAsIG5leCwgYm1wKTsKKy0Jc2V0X2N1cigmdHlwdGFiW3R5cGVdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisrCXNldF9jdXIoJnR5cHRhYlt0eXBlXSwgKGludDY0X3QpWEZTX0ZTQl9UT19EQUREUihtcCwgZGZzYm5vKSwKKyAJCW5iICogYmxrYmIsIERCX1JJTkdfQURELCBuZXggPiAxID8gJmJibWFwIDogTlVMTCk7CisgCWZyZWUoYm1wKTsKKyAJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvZGIvY2hlY2suYyBiL2RiL2NoZWNrLmMKK2luZGV4IDhlNjE4YTIzLi44MWJhNjNhNiAxMDA2NDQKKy0tLSBhL2RiL2NoZWNrLmMKKysrKyBiL2RiL2NoZWNrLmMKK0BAIC0xMTQsOCArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgZGlyaGFzaCB7CisgCisgc3RhdGljIHhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKKyBzdGF0aWMgeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7Cistc3RhdGljIF9fdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLworLXN0YXRpYyBfX3VpbnQzMl90CWFnZmJ0cmVlYmxrczsKKytzdGF0aWMgdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLworK3N0YXRpYyB1aW50MzJfdAlhZ2ZidHJlZWJsa3M7Cisgc3RhdGljIGludAkJbGF6eWNvdW50OworIHN0YXRpYyB4ZnNfYWdpbm9fdAlhZ2ljb3VudDsKKyBzdGF0aWMgeGZzX2FnaW5vX3QJYWdpZnJlZWNvdW50OworQEAgLTEyNCwxMCArMTI0LDEwIEBAIHN0YXRpYyBpbnQJCWJsaXN0X3NpemU7Cisgc3RhdGljIGNoYXIJCSoqZGJtYXA7CS8qIHJlYWxseSBkYm1fdDo4ICovCisgc3RhdGljIGRpcmhhc2hfdAkqKmRpcmhhc2g7Cisgc3RhdGljIGludAkJZXJyb3I7Cistc3RhdGljIF9fdWludDY0X3QJZmRibG9ja3M7Cistc3RhdGljIF9fdWludDY0X3QJZnJleHRlbnRzOworLXN0YXRpYyBfX3VpbnQ2NF90CWljb3VudDsKKy1zdGF0aWMgX191aW50NjRfdAlpZnJlZTsKKytzdGF0aWMgdWludDY0X3QJZmRibG9ja3M7Cisrc3RhdGljIHVpbnQ2NF90CWZyZXh0ZW50czsKKytzdGF0aWMgdWludDY0X3QJaWNvdW50OworK3N0YXRpYyB1aW50NjRfdAlpZnJlZTsKKyBzdGF0aWMgaW5vZGF0YV90CSoqKmlub2RhdGE7Cisgc3RhdGljIGludAkJaW5vZGF0YV9oYXNoX3NpemU7Cisgc3RhdGljIGlub2RhdGFfdAkqKippbm9tYXA7CitAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgYmxvY2t0cmFzaF9mKAorIAkJZ290byBvdXQ7CisgCX0KKyAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKy0JCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChfX2ludDY0X3QpcmFuZG9tKCkgPDwgMzIpIHwKKysJCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChpbnQ2NF90KXJhbmRvbSgpIDw8IDMyKSB8CisgCQkJCQkgcmFuZG9tKCkpICUgYmxvY2tzKTsKKyAJCWZvciAoYmkgPSAwLCBhZ25vID0gMCwgZG9uZSA9IDA7CisgCQkgICAgICFkb25lICYmIGFnbm8gPCBtcC0+bV9zYi5zYl9hZ2NvdW50OworQEAgLTMwMzIsNyArMzAzMiw3IEBAIHByb2Nlc3NfbGVhZl9ub2RlX2Rpcl92MigKKyAJCX0KKyAJCWlmICh2KQorIAkJCWRicHJpbnRmKF8oImRpciBpbm9kZSAlbGxkIGJsb2NrICV1PSVsbHVcbiIpLCBpZC0+aW5vLAorLQkJCQkoX191aW50MzJfdClkYm5vLAorKwkJCQkodWludDMyX3QpZGJubywKKyAJCQkJKHhmc19mc2Jsb2NrX3QpYm1wLT5zdGFydGJsb2NrKTsKKyAJCXB1c2hfY3VyKCk7CisgCQlpZiAobmV4ID4gMSkKK0BAIC0zMDQ1LDcgKzMwNDUsNyBAQCBwcm9jZXNzX2xlYWZfbm9kZV9kaXJfdjIoCisgCQkJaWYgKCFzZmxhZyB8fCB2KQorIAkJCQlkYnByaW50ZihfKCJjYW4ndCByZWFkIGJsb2NrICV1IGZvciBkaXJlY3RvcnkgIgorIAkJCQkJICJpbm9kZSAlbGxkXG4iKSwKKy0JCQkJCShfX3VpbnQzMl90KWRibm8sIGlkLT5pbm8pOworKwkJCQkJKHVpbnQzMl90KWRibm8sIGlkLT5pbm8pOworIAkJCWVycm9yKys7CisgCQkJcG9wX2N1cigpOworIAkJCWRibm8gKz0gbXAtPm1fZGlyX2dlby0+ZnNiY291bnQgLSAxOworZGlmZiAtLWdpdCBhL2RiL2NvbnZlcnQuYyBiL2RiL2NvbnZlcnQuYworaW5kZXggYTMzN2FiZWEuLmZhNGY5NjIzIDEwMDY0NAorLS0tIGEvZGIvY29udmVydC5jCisrKysgYi9kYi9jb252ZXJ0LmMKK0BAIC0yNCwxMyArMjQsMTMgQEAKKyAKKyAjZGVmaW5lCU0oQSkJKDEgPDwgQ1RfICMjIEEpCisgI2RlZmluZQlhZ2Jsb2NrX3RvX2J5dGVzKHgpCVwKKy0JKChfX3VpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9ibG9ja2xvZykKKysJKCh1aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfYmxvY2tsb2cpCisgI2RlZmluZQlhZ2lub190b19ieXRlcyh4KQlcCistCSgoX191aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfaW5vZGVsb2cpCisrCSgodWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQorICNkZWZpbmUJYWdudW1iZXJfdG9fYnl0ZXMoeCkJXAorLQlhZ2Jsb2NrX3RvX2J5dGVzKChfX3VpbnQ2NF90KSh4KSAqIG1wLT5tX3NiLnNiX2FnYmxvY2tzKQorKwlhZ2Jsb2NrX3RvX2J5dGVzKCh1aW50NjRfdCkoeCkgKiBtcC0+bV9zYi5zYl9hZ2Jsb2NrcykKKyAjZGVmaW5lCWRhZGRyX3RvX2J5dGVzKHgpCVwKKy0JKChfX3VpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQorKwkoKHVpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQorICNkZWZpbmUJZnNibG9ja190b19ieXRlcyh4KQlcCisgCShhZ251bWJlcl90b19ieXRlcyhYRlNfRlNCX1RPX0FHTk8obXAsICh4KSkpICsgXAorIAkgYWdibG9ja190b19ieXRlcyhYRlNfRlNCX1RPX0FHQk5PKG1wLCAoeCkpKSkKK0BAIC0zOCw3ICszOCw3IEBACisgCShhZ251bWJlcl90b19ieXRlcyhYRlNfSU5PX1RPX0FHTk8obXAsICh4KSkpICsgXAorIAkgYWdpbm9fdG9fYnl0ZXMoWEZTX0lOT19UT19BR0lOTyhtcCwgKHgpKSkpCisgI2RlZmluZQlpbm9pZHhfdG9fYnl0ZXMoeCkJXAorLQkoKF9fdWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQorKwkoKHVpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9pbm9kZWxvZykKKyAKKyB0eXBlZGVmIGVudW0geworIAlDVF9OT05FID0gLTEsCitAQCAtNjgsNyArNjgsNyBAQCB0eXBlZGVmIHVuaW9uIHsKKyAJeGZzX2FnbnVtYmVyX3QJYWdudW1iZXI7CisgCWludAkJYmJvZmY7CisgCWludAkJYmxrb2ZmOworLQlfX3VpbnQ2NF90CWJ5dGU7CisrCXVpbnQ2NF90CWJ5dGU7CisgCXhmc19kYWRkcl90CWRhZGRyOworIAl4ZnNfZnNibG9ja190CWZzYmxvY2s7CisgCXhmc19pbm9fdAlpbm87CitAQCAtNzYsNyArNzYsNyBAQCB0eXBlZGVmIHVuaW9uIHsKKyAJaW50CQlpbm9vZmY7CisgfSBjdmFsX3Q7CisgCistc3RhdGljIF9fdWludDY0X3QJCWJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCk7Cisrc3RhdGljIHVpbnQ2NF90CQlieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpOworIHN0YXRpYyBpbnQJCWNvbnZlcnRfZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworIHN0YXRpYyBpbnQJCWdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKTsKKyBzdGF0aWMgY3R5cGVfdAkJbG9va3VwY3R5KGNoYXIgKmN0eW5hbWUpOworQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgY29uc3QgY21kaW5mb190CWNvbnZlcnRfY21kID0KKyAJeyAiY29udmVydCIsIE5VTEwsIGNvbnZlcnRfZiwgMywgOSwgMCwgInR5cGUgbnVtIFt0eXBlIG51bV0uLi4gdHlwZSIsCisgCSAgImNvbnZlcnQgZnJvbSBvbmUgYWRkcmVzcyBmb3JtIHRvIGFub3RoZXIiLCBOVUxMIH07CisgCistc3RhdGljIF9fdWludDY0X3QKKytzdGF0aWMgdWludDY0X3QKKyBieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpCisgeworIAlzd2l0Y2ggKGN0eXBlKSB7CitAQCAtMTI5LDkgKzEyOSw5IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyAJY2FzZSBDVF9BR05VTUJFUjoKKyAJCXJldHVybiBhZ251bWJlcl90b19ieXRlcyh2YWwtPmFnbnVtYmVyKTsKKyAJY2FzZSBDVF9CQk9GRjoKKy0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJib2ZmOworKwkJcmV0dXJuICh1aW50NjRfdCl2YWwtPmJib2ZmOworIAljYXNlIENUX0JMS09GRjoKKy0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJsa29mZjsKKysJCXJldHVybiAodWludDY0X3QpdmFsLT5ibGtvZmY7CisgCWNhc2UgQ1RfQllURToKKyAJCXJldHVybiB2YWwtPmJ5dGU7CisgCWNhc2UgQ1RfREFERFI6CitAQCAtMTQzLDcgKzE0Myw3IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyAJY2FzZSBDVF9JTk9JRFg6CisgCQlyZXR1cm4gaW5vaWR4X3RvX2J5dGVzKHZhbC0+aW5vaWR4KTsKKyAJY2FzZSBDVF9JTk9PRkY6CistCQlyZXR1cm4gKF9fdWludDY0X3QpdmFsLT5pbm9vZmY7CisrCQlyZXR1cm4gKHVpbnQ2NF90KXZhbC0+aW5vb2ZmOworIAljYXNlIENUX05PTkU6CisgCWNhc2UgTkNUUzoKKyAJCWJyZWFrOworQEAgLTE2MCw3ICsxNjAsNyBAQCBjb252ZXJ0X2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAljdmFsX3QJCWN2YWxzW05DVFNdID0ge307CisgCWludAkJaTsKKyAJaW50CQltYXNrOworLQlfX3VpbnQ2NF90CXY7CisrCXVpbnQ2NF90CXY7CisgCWN0eXBlX3QJCXd0eXBlOworIAorIAkvKiBtb3ZlIHBhc3QgdGhlICJjb252ZXJ0IiBjb21tYW5kICovCitAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbnQKKyBnZXR2YWx1ZShjaGFyICpzLCBjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyB7CisgCWNoYXIJCSpwOworLQlfX3VpbnQ2NF90CXY7CisrCXVpbnQ2NF90CXY7CisgCisgCXYgPSBzdHJ0b3VsbChzLCAmcCwgMCk7CisgCWlmICgqcCAhPSAnXDAnKSB7CitAQCAtMjg2LDcgKzI4Niw3IEBAIGdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKQorIAkJdmFsLT5ibGtvZmYgPSAoaW50KXY7CisgCQlicmVhazsKKyAJY2FzZSBDVF9CWVRFOgorLQkJdmFsLT5ieXRlID0gKF9fdWludDY0X3QpdjsKKysJCXZhbC0+Ynl0ZSA9ICh1aW50NjRfdCl2OworIAkJYnJlYWs7CisgCWNhc2UgQ1RfREFERFI6CisgCQl2YWwtPmRhZGRyID0gKHhmc19kYWRkcl90KXY7CitkaWZmIC0tZ2l0IGEvZGIvZmFkZHIuYyBiL2RiL2ZhZGRyLmMKK2luZGV4IDg3NzIwMGJmLi41NjIwNzY0OCAxMDA2NDQKKy0tLSBhL2RiL2ZhZGRyLmMKKysrKyBiL2RiL2ZhZGRyLmMKK0BAIC03OSwxMSArNzksMTEgQEAgZmFfYXR0cmJsb2NrKAorIAl0eXBubV90CQluZXh0KQorIHsKKyAJYm1hcF9leHRfdAlibTsKKy0JX191aW50MzJfdAlibm87CisrCXVpbnQzMl90CWJubzsKKyAJeGZzX2ZzYmxvY2tfdAlkZnNibm87CisgCWludAkJbmV4OworIAorLQlibm8gPSAoX191aW50MzJfdClnZXRiaXR2YWwob2JqLCBiaXQsIGJpdHN6KGJubyksIEJWVU5TSUdORUQpOworKwlibm8gPSAodWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKKyAJaWYgKGJubyA9PSAwKSB7CisgCQlkYnByaW50ZihfKCJudWxsIGF0dHJpYnV0ZSBibG9jayBudW1iZXIsIGNhbm5vdCBzZXQgbmV3IGFkZHJcbiIpKTsKKyAJCXJldHVybjsKK0BAIC05Niw3ICs5Niw3IEBAIGZhX2F0dHJibG9jaygKKyAJfQorIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKKyAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKKy0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAorIAkJREJfUklOR19BREQsIE5VTEwpOworIH0KKyAKK0BAIC0yNzYsMTEgKzI3NiwxMSBAQCBmYV9kaXJibG9jaygKKyB7CisgCWJibWFwX3QJCWJibWFwOworIAlibWFwX2V4dF90CSpibXA7CistCV9fdWludDMyX3QJYm5vOworKwl1aW50MzJfdAlibm87CisgCXhmc19mc2Jsb2NrX3QJZGZzYm5vOworIAlpbnQJCW5leDsKKyAKKy0JYm5vID0gKF9fdWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKKysJYm5vID0gKHVpbnQzMl90KWdldGJpdHZhbChvYmosIGJpdCwgYml0c3ooYm5vKSwgQlZVTlNJR05FRCk7CisgCWlmIChibm8gPT0gMCkgeworIAkJZGJwcmludGYoXygibnVsbCBkaXJlY3RvcnkgYmxvY2sgbnVtYmVyLCBjYW5ub3Qgc2V0IG5ldyBhZGRyXG4iKSk7CisgCQlyZXR1cm47CitAQCAtMjk3LDcgKzI5Nyw3IEBAIGZhX2RpcmJsb2NrKAorIAlBU1NFUlQodHlwdGFiW25leHRdLnR5cG5tID09IG5leHQpOworIAlpZiAobmV4ID4gMSkKKyAJCW1ha2VfYmJtYXAoJmJibWFwLCBuZXgsIGJtcCk7CistCXNldF9jdXIoJnR5cHRhYltuZXh0XSwgKF9faW50NjRfdClYRlNfRlNCX1RPX0RBRERSKG1wLCBkZnNibm8pLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisgCQlYRlNfRlNCX1RPX0JCKG1wLCBtcC0+bV9kaXJfZ2VvLT5mc2Jjb3VudCksIERCX1JJTkdfQURELAorIAkJbmV4ID4gMSA/ICZiYm1hcCA6IE5VTEwpOworIAlmcmVlKGJtcCk7CitAQCAtMzE3LDcgKzMxNyw3IEBAIGZhX2RyZnNibm8oCisgCQlyZXR1cm47CisgCX0KKyAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKKy0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAorIAkJREJfUklOR19BREQsIE5VTEwpOworIH0KKyAKK2RpZmYgLS1naXQgYS9kYi9maWVsZC5jIGIvZGIvZmllbGQuYworaW5kZXggODY1YjBiNzEuLmYxZTVmMzVlIDEwMDY0NAorLS0tIGEvZGIvZmllbGQuYworKysrIGIvZGIvZmllbGQuYworQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgZnRhdHRyX3QJZnRhdHRydGFiW10gPSB7CisgCSAgYXR0cl9zZl9lbnRyeV9zaXplLCBGVEFSR19TSVpFLCBOVUxMLCBhdHRyX3NmX2VudHJ5X2ZsZHMgfSwKKyAJeyBGTERUX0FUVFJfU0ZfSERSLCAiYXR0cl9zZl9oZHIiLCBOVUxMLCAoY2hhciAqKWF0dHJfc2ZfaGRyX2ZsZHMsCisgCSAgU0koYml0c3ooc3RydWN0IHhmc19hdHRyX3NmX2hkcikpLCAwLCBOVUxMLCBhdHRyX3NmX2hkcl9mbGRzIH0sCistCXsgRkxEVF9BVFRSQkxPQ0ssICJhdHRyYmxvY2siLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KF9fdWludDMyX3QpKSwgMCwKKysJeyBGTERUX0FUVFJCTE9DSywgImF0dHJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKKyAJICBmYV9hdHRyYmxvY2ssIE5VTEwgfSwKKyAJeyBGTERUX0FUVFJTSE9SVCwgImF0dHJzaG9ydCIsIE5VTEwsIChjaGFyICopYXR0cl9zaG9ydGZvcm1fZmxkcywKKyAJICBhdHRyc2hvcnRfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgYXR0cl9zaG9ydGZvcm1fZmxkcyB9LAorQEAgLTE5OSw3ICsxOTksNyBAQCBjb25zdCBmdGF0dHJfdAlmdGF0dHJ0YWJbXSA9IHsKKyAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX3JlZmNvdW50X3JlYykpLCAwLCBOVUxMLCByZWZjYnRfcmVjX2ZsZHMgfSwKKyAKKyAvKiBDUkMgZmllbGQgKi8KKy0JeyBGTERUX0NSQywgImNyYyIsIGZwX2NyYywgIiUjeCAoJXMpIiwgU0koYml0c3ooX191aW50MzJfdCkpLAorKwl7IEZMRFRfQ1JDLCAiY3JjIiwgZnBfY3JjLCAiJSN4ICglcykiLCBTSShiaXRzeih1aW50MzJfdCkpLAorIAkgIDAsIE5VTEwsIE5VTEwgfSwKKyAKKyAJeyBGTERUX0RFViwgImRldiIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHhmc19kZXZfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCitAQCAtMjE0LDcgKzIxNCw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfRElOT0RFX0NPUkUsICJkaW5vZGVfY29yZSIsIE5VTEwsIChjaGFyICopaW5vZGVfY29yZV9mbGRzLAorIAkgIFNJKGJpdHN6KHhmc19kaW5vZGVfdCkpLCAwLCBOVUxMLCBpbm9kZV9jb3JlX2ZsZHMgfSwKKyAJeyBGTERUX0RJTk9ERV9GTVQsICJkaW5vZGVfZm10IiwgZnBfZGlub2RlX2ZtdCwgTlVMTCwKKy0JICBTSShiaXRzeihfX2ludDhfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCisrCSAgU0koYml0c3ooaW50OF90KSksIDAsIE5VTEwsIE5VTEwgfSwKKyAJeyBGTERUX0RJTk9ERV9VLCAiZGlub2RlX3UiLCBOVUxMLCAoY2hhciAqKWlub2RlX3VfZmxkcywgaW5vZGVfdV9zaXplLAorIAkgIEZUQVJHX1NJWkV8RlRBUkdfT0tFTVBUWSwgTlVMTCwgaW5vZGVfdV9mbGRzIH0sCisgCXsgRkxEVF9ESU5PREVfVjMsICJkaW5vZGVfdjMiLCBOVUxMLCAoY2hhciAqKWlub2RlX3YzX2ZsZHMsCitAQCAtMjk1LDcgKzI5NSw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfREEzX05PREVfSERSLCAiZGlyX25vZGVfaGRyIiwgTlVMTCwgKGNoYXIgKilkYTNfbm9kZV9oZHJfZmxkcywKKyAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX2RhM19ub2RlX2hkcikpLCAwLCBOVUxMLCBkYTNfbm9kZV9oZHJfZmxkcyB9LAorIAorLQl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLAorKwl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKKyAJICBmYV9kaXJibG9jaywgTlVMTCB9LAorIAl7IEZMRFRfRElTS19EUVVPVCwgImRpc2tfZHF1b3QiLCBOVUxMLCAoY2hhciAqKWRpc2tfZHF1b3RfZmxkcywKKyAJICBTSShiaXRzeih4ZnNfZGlza19kcXVvdF90KSksIDAsIE5VTEwsIGRpc2tfZHF1b3RfZmxkcyB9LAorQEAgLTMzNSwxNSArMzM1LDE1IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAkgIEZUQVJHX1NJWkUsIE5VTEwsIGlub2RlX2NyY19mbGRzIH0sCisgCXsgRkxEVF9JTk9GUkVFLCAiaW5vZnJlZSIsIGZwX251bSwgIiUjbGx4IiwgU0koYml0c3ooeGZzX2lub2ZyZWVfdCkpLCAwLAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDE2RCwgImludDE2ZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQxNl90KSksCisrCXsgRkxEVF9JTlQxNkQsICJpbnQxNmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDE2X3QpKSwKKyAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDMyRCwgImludDMyZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQzMl90KSksCisrCXsgRkxEVF9JTlQzMkQsICJpbnQzMmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDMyX3QpKSwKKyAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihfX2ludDY0X3QpKSwKKysJeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihpbnQ2NF90KSksCisgCSAgRlRBUkdfU0lHTkVELCBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihfX2ludDhfdCkpLCBGVEFSR19TSUdORUQsCisrCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihpbnQ4X3QpKSwgRlRBUkdfU0lHTkVELAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX05TRUMsICJuc2VjIiwgZnBfbnVtLCAiJTA5ZCIsIFNJKGJpdHN6KF9faW50MzJfdCkpLCBGVEFSR19TSUdORUQsCisrCXsgRkxEVF9OU0VDLCAibnNlYyIsIGZwX251bSwgIiUwOWQiLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKKyAJICBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9RQ05ULCAicWNudCIsIGZwX251bSwgIiVsbHUiLCBTSShiaXRzeih4ZnNfcWNudF90KSksIDAsIE5VTEwsCisgCSAgTlVMTCB9LAorQEAgLTM1NiwzNCArMzU2LDM0IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfU1lNTElOS19DUkMsICJzeW1saW5rIiwgTlVMTCwgKGNoYXIgKilzeW1saW5rX2NyY19mbGRzLAorIAkgIHN5bWxpbmtfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgc3ltbGlua19jcmNfZmxkcyB9LAorIAorLQl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihfX2ludDMyX3QpKSwgRlRBUkdfU0lHTkVELAorKwl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKKyAJICBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9USU1FU1RBTVAsICJ0aW1lc3RhbXAiLCBOVUxMLCAoY2hhciAqKXRpbWVzdGFtcF9mbGRzLAorIAkgIFNJKGJpdHN6KHhmc190aW1lc3RhbXBfdCkpLCAwLCBOVUxMLCB0aW1lc3RhbXBfZmxkcyB9LAorIAl7IEZMRFRfVUlOVDEsICJ1aW50MSIsIGZwX251bSwgIiV1IiwgU0koMSksIDAsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX1VJTlQxNkQsICJ1aW50MTZkIiwgZnBfbnVtLCAiJXUiLCBTSShiaXRzeihfX3VpbnQxNl90KSksIDAsIE5VTEwsCisrCXsgRkxEVF9VSU5UMTZELCAidWludDE2ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UMTZPLCAidWludDE2byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKKysJeyBGTERUX1VJTlQxNk8sICJ1aW50MTZvIiwgZnBfbnVtLCAiJSNvIiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UMTZYLCAidWludDE2eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKKysJeyBGTERUX1VJTlQxNlgsICJ1aW50MTZ4IiwgZnBfbnVtLCAiJSN4IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UMzJELCAidWludDMyZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLCBOVUxMLAorKwl7IEZMRFRfVUlOVDMyRCwgInVpbnQzMmQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsIE5VTEwsCisgCSAgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDMyTywgInVpbnQzMm8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCisrCXsgRkxEVF9VSU5UMzJPLCAidWludDMybyIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDMyWCwgInVpbnQzMngiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCisrCXsgRkxEVF9VSU5UMzJYLCAidWludDMyeCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAorKwl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3oodWludDY0X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UNjRPLCAidWludDY0byIsIGZwX251bSwgIiUjbGxvIiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAorKwl7IEZMRFRfVUlOVDY0TywgInVpbnQ2NG8iLCBmcF9udW0sICIlI2xsbyIsIFNJKGJpdHN6KHVpbnQ2NF90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDY0WCwgInVpbnQ2NHgiLCBmcF9udW0sICIlI2xseCIsIFNJKGJpdHN6KF9fdWludDY0X3QpKSwgMCwKKysJeyBGTERUX1VJTlQ2NFgsICJ1aW50NjR4IiwgZnBfbnVtLCAiJSNsbHgiLCBTSShiaXRzeih1aW50NjRfdCkpLCAwLAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX1VJTlQ4RCwgInVpbnQ4ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50OF90KSksIDAsIE5VTEwsCisrCXsgRkxEVF9VSU5UOEQsICJ1aW50OGQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UOE8sICJ1aW50OG8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKKysJeyBGTERUX1VJTlQ4TywgInVpbnQ4byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UOFgsICJ1aW50OHgiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKKysJeyBGTERUX1VJTlQ4WCwgInVpbnQ4eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCisgCXsgRkxEVF9VVUlELCAidXVpZCIsIGZwX3V1aWQsIE5VTEwsIFNJKGJpdHN6KHV1aWRfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9aWlosIE5VTEwgfQorZGlmZiAtLWdpdCBhL2RiL2ZwcmludC5jIGIvZGIvZnByaW50LmMKK2luZGV4IGZkN2U3ZjQ1Li4yNjFhMzFlZiAxMDA2NDQKKy0tLSBhL2RiL2ZwcmludC5jCisrKysgYi9kYi9mcHJpbnQuYworQEAgLTgwLDcgKzgwLDcgQEAgZnBfbnVtKAorIAlpbnQJCWJpdHBvczsKKyAJaW50CQlpOworIAlpbnQJCWlzbnVsbDsKKy0JX19pbnQ2NF90CXZhbDsKKysJaW50NjRfdAkJdmFsOworIAorIAlmb3IgKGkgPSAwLCBiaXRwb3MgPSBiaXQ7CisgCSAgICAgaSA8IGNvdW50ICYmICFzZWVuaW50KCk7CitAQCAtMTAwLDcgKzEwMCw3IEBAIGZwX251bSgKKyAJCWVsc2UgaWYgKHNpemUgPiAzMikKKyAJCQlkYnByaW50ZihmbXRzdHIsIHZhbCk7CisgCQllbHNlCistCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCk7CisrCQkJZGJwcmludGYoZm10c3RyLCAoaW50MzJfdCl2YWwpOworIAkJaWYgKGkgPCBjb3VudCAtIDEpCisgCQkJZGJwcmludGYoIiAiKTsKKyAJfQorQEAgLTIwMyw3ICsyMDMsNyBAQCBmcF9jcmMoCisgeworIAlpbnQJCWJpdHBvczsKKyAJaW50CQlpOworLQlfX2ludDY0X3QJdmFsOworKwlpbnQ2NF90CQl2YWw7CisgCWNoYXIJCSpvazsKKyAKKyAJc3dpdGNoIChpb2N1cl9jcmNfdmFsaWQoKSkgeworQEAgLTIzMCw3ICsyMzAsNyBAQCBmcF9jcmMoCisgCQlpZiAoc2l6ZSA+IDMyKQorIAkJCWRicHJpbnRmKGZtdHN0ciwgdmFsLCBvayk7CisgCQllbHNlCistCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCwgb2spOworKwkJCWRicHJpbnRmKGZtdHN0ciwgKGludDMyX3QpdmFsLCBvayk7CisgCQlpZiAoaSA8IGNvdW50IC0gMSkKKyAJCQlkYnByaW50ZigiICIpOworIAl9CitkaWZmIC0tZ2l0IGEvZGIvZnJhZy5jIGIvZGIvZnJhZy5jCitpbmRleCA4MDA1ZTQ1ZC4uZDIyNGYwYzIgMTAwNjQ0CistLS0gYS9kYi9mcmFnLmMKKysrKyBiL2RiL2ZyYWcuYworQEAgLTQyLDggKzQyLDggQEAgdHlwZWRlZglzdHJ1Y3QgZXh0bWFwIHsKKyAKKyBzdGF0aWMgaW50CQlhZmxhZzsKKyBzdGF0aWMgaW50CQlkZmxhZzsKKy1zdGF0aWMgX191aW50NjRfdAlleHRjb3VudF9hY3R1YWw7Cistc3RhdGljIF9fdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Cisrc3RhdGljIHVpbnQ2NF90CWV4dGNvdW50X2FjdHVhbDsKKytzdGF0aWMgdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Cisgc3RhdGljIGludAkJZmZsYWc7Cisgc3RhdGljIGludAkJbGZsYWc7Cisgc3RhdGljIGludAkJcWZsYWc7CitAQCAtMzEwLDggKzMxMCw4IEBAIHByb2Nlc3NfaW5vZGUoCisgCXhmc19hZ2lub190CQlhZ2lubywKKyAJeGZzX2Rpbm9kZV90CQkqZGlwKQorIHsKKy0JX191aW50NjRfdAkJYWN0dWFsOworLQlfX3VpbnQ2NF90CQlpZGVhbDsKKysJdWludDY0X3QJCWFjdHVhbDsKKysJdWludDY0X3QJCWlkZWFsOworIAl4ZnNfaW5vX3QJCWlubzsKKyAJaW50CQkJc2tpcGE7CisgCWludAkJCXNraXBkOworZGlmZiAtLWdpdCBhL2RiL2lub2RlLmMgYi9kYi9pbm9kZS5jCitpbmRleCA4YjdhNDFlNC4uNmNjNDdkNmEgMTAwNjQ0CistLS0gYS9kYi9pbm9kZS5jCisrKysgYi9kYi9pbm9kZS5jCitAQCAtMTE5LDQ5ICsxMTksNDkgQEAgY29uc3QgZmllbGRfdAlpbm9kZV9jb3JlX2ZsZHNbXSA9IHsKKyAJeyAiZG1zdGF0ZSIsIEZMRFRfVUlOVDE2RCwgT0koQ09GRihkbXN0YXRlKSksIEMxLCAwLCBUWVBfTk9ORSB9LAorIAl7ICJmbGFncyIsIEZMRFRfVUlOVDE2WCwgT0koQ09GRihmbGFncykpLCBDMSwgRkxEX1NLSVBBTEwsIFRZUF9OT05FIH0sCisgCXsgIm5ld3J0Ym0iLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05FV1JUQk1fQklUIC0gMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19ORVdSVEJNX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJwcmVhbGxvYyIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJFQUxMT0NfQklUIC0gMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUkVBTExPQ19CSVQgLSAxKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAicmVhbHRpbWUiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JFQUxUSU1FX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfUkVBTFRJTUVfQklUIC0gMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImltbXV0YWJsZSIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfSU1NVVRBQkxFX0JJVC0xKSwgQzEsCisrCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX0lNTVVUQUJMRV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImFwcGVuZCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJzeW5jIiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19TWU5DX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfU1lOQ19CSVQgLSAxKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAibm9hdGltZSIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9BVElNRV9CSVQgLSAxKSwgQzEsCisrCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX05PQVRJTUVfQklUIC0gMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgIm5vZHVtcCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJydGluaGVyaXQiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JUSU5IRVJJVF9CSVQtMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19SVElOSEVSSVRfQklULTEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJwcm9qaW5oZXJpdCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJPSklOSEVSSVRfQklULTEpLEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUk9KSU5IRVJJVF9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgIm5vc3ltbGlua3MiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PU1lNTElOS1NfQklULTEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9TWU1MSU5LU19CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImV4dHN6IiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19FWFRTSVpFX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU0laRV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImV4dHN6aW5oZXJpdCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAibm9kZWZyYWciLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PREVGUkFHX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9ERUZSQUdfQklULTEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJmaWxlc3RyZWFtIiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19GSUxFU1RSRUFNX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRklMRVNUUkVBTV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImdlbiIsIEZMRFRfVUlOVDMyRCwgT0koQ09GRihnZW4pKSwgQzEsIDAsIFRZUF9OT05FIH0sCisgCXsgTlVMTCB9CitAQCAtMTc3LDEwICsxNzcsMTAgQEAgY29uc3QgZmllbGRfdAlpbm9kZV92M19mbGRzW10gPSB7CisgCXsgImludW1iZXIiLCBGTERUX0lOTywgT0koQ09GRihpbm8pKSwgQzEsIDAsIFRZUF9OT05FIH0sCisgCXsgInV1aWQiLCBGTERUX1VVSUQsIE9JKENPRkYodXVpZCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKKyAJeyAicmVmbGluayIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFnczIpICsgYml0c3ooX191aW50NjRfdCkgLSBYRlNfRElGTEFHMl9SRUZMSU5LX0JJVC0xKSwgQzEsCisrCSAgT0koQ09GRihmbGFnczIpICsgYml0c3oodWludDY0X3QpIC0gWEZTX0RJRkxBRzJfUkVGTElOS19CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImNvd2V4dHN6IiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeihfX3VpbnQ2NF90KSAtIFhGU19ESUZMQUcyX0NPV0VYVFNJWkVfQklULTEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeih1aW50NjRfdCkgLSBYRlNfRElGTEFHMl9DT1dFWFRTSVpFX0JJVC0xKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyBOVUxMIH0KKyB9OworZGlmZiAtLWdpdCBhL2RiL2lvLmMgYi9kYi9pby5jCitpbmRleCAxZjI3ZjZiMy4uZmQ5YjlmNGIgMTAwNjQ0CistLS0gYS9kYi9pby5jCisrKysgYi9kYi9pby5jCitAQCAtNTQ1LDcgKzU0NSw3IEBAIHNldF9jdXIoCisgCXN0cnVjdCB4ZnNfYnVmCSpicDsKKyAJeGZzX2lub190CWRpcmlubzsKKyAJeGZzX2lub190CWlubzsKKy0JX191aW50MTZfdAltb2RlOworKwl1aW50MTZfdAltb2RlOworIAljb25zdCBzdHJ1Y3QgeGZzX2J1Zl9vcHMgKm9wcyA9IHR5cGUgPyB0eXBlLT5ib3BzIDogTlVMTDsKKyAKKyAJaWYgKGlvY3VyX3NwIDwgMCkgeworZGlmZiAtLWdpdCBhL2RiL2lvLmggYi9kYi9pby5oCitpbmRleCA5OTczMDA0OC4uZGYwZmRkNzUgMTAwNjQ0CistLS0gYS9kYi9pby5oCisrKysgYi9kYi9pby5oCitAQCAtMjUsNyArMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBiYm1hcCB7CisgfSBiYm1hcF90OworIAorIHR5cGVkZWYgc3RydWN0IGlvY3VyIHsKKy0JX19pbnQ2NF90CQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCisrCWludDY0X3QJCQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCisgCWludAkJCWJsZW47CS8qIGxlbmd0aCBvZiAiYnVmIiwgYmIncyAqLworIAlpbnQJCQlib2ZmOwkvKiBkYXRhIC0gYnVmICovCisgCXZvaWQJCQkqYnVmOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYnVmZmVyICovCitAQCAtMzMsNyArMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBpb2N1ciB7CisgCXhmc19pbm9fdAkJZGlyaW5vOwkvKiBjdXJyZW50IGRpcmVjdG9yeSBpbm9kZSBudW1iZXIgKi8KKyAJeGZzX2lub190CQlpbm87CS8qIGN1cnJlbnQgaW5vZGUgbnVtYmVyICovCisgCWludAkJCWxlbjsJLyogbGVuZ3RoIG9mICJkYXRhIiwgYnl0ZXMgKi8KKy0JX191aW50MTZfdAkJbW9kZTsJLyogY3VycmVudCBpbm9kZSdzIG1vZGUgKi8KKysJdWludDE2X3QJCW1vZGU7CS8qIGN1cnJlbnQgaW5vZGUncyBtb2RlICovCisgCXhmc19vZmZfdAkJb2ZmOwkvKiBmcyBvZmZzZXQgb2YgImRhdGEiIGluIGJ5dGVzICovCisgCWNvbnN0IHN0cnVjdCB0eXAJKnR5cDsJLyogdHlwZSBvZiAiZGF0YSIgKi8KKyAJYmJtYXBfdAkJCSpiYm1hcDsJLyogbWFwIGRhZGRyIGlmIGZyYWdtZW50ZWQgKi8KK0BAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiB2b2lkCW9mZl9jdXIoaW50IG9mZiwgaW50IGxlbik7CisgZXh0ZXJuIHZvaWQJcG9wX2N1cih2b2lkKTsKKyBleHRlcm4gdm9pZAlwcmludF9pb2N1cihjaGFyICp0YWcsIGlvY3VyX3QgKmlvYyk7CisgZXh0ZXJuIHZvaWQJcHVzaF9jdXIodm9pZCk7CistZXh0ZXJuIGludAlyZWFkX2J1ZihfX2ludDY0X3QgZGFkZHIsIGludCBjb3VudCwgdm9pZCAqYnVmcCk7CisrZXh0ZXJuIGludAlyZWFkX2J1ZihpbnQ2NF90IGRhZGRyLCBpbnQgY291bnQsIHZvaWQgKmJ1ZnApOworIGV4dGVybiB2b2lkICAgICB3cml0ZV9jdXIodm9pZCk7CisgZXh0ZXJuIHZvaWQJc2V0X2N1cihjb25zdCBzdHJ1Y3QgdHlwICp0eXBlLCB4ZnNfZGFkZHJfdCBibGtudW0sCisgCQkJaW50IGxlbiwgaW50IHJpbmdfYWRkLCBiYm1hcF90ICpiYm1hcCk7CitkaWZmIC0tZ2l0IGEvZGIvbWV0YWR1bXAuYyBiL2RiL21ldGFkdW1wLmMKK2luZGV4IDMxYmI1OTU5Li42N2JkZjE0ZSAxMDA2NDQKKy0tLSBhL2RiL21ldGFkdW1wLmMKKysrKyBiL2RiL21ldGFkdW1wLmMKK0BAIC0xNzUsNyArMTc1LDcgQEAgd3JpdGVfaW5kZXgodm9pZCkKKyBzdGF0aWMgaW50Cisgd3JpdGVfYnVmX3NlZ21lbnQoCisgCWNoYXIJCSpkYXRhLAorLQlfX2ludDY0X3QJb2ZmLAorKwlpbnQ2NF90CQlvZmYsCisgCWludAkJbGVuKQorIHsKKyAJaW50CQlpOworQEAgLTEyNTYsNyArMTI1Niw3IEBAIHByb2Nlc3Nfc2ZfZGlyKAorIHsKKyAJc3RydWN0IHhmc19kaXIyX3NmX2hkcgkqc2ZwOworIAl4ZnNfZGlyMl9zZl9lbnRyeV90CSpzZmVwOworLQlfX3VpbnQ2NF90CQlpbm9fZGlyX3NpemU7CisrCXVpbnQ2NF90CQlpbm9fZGlyX3NpemU7CisgCWludAkJCWk7CisgCisgCXNmcCA9IChzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICopWEZTX0RGT1JLX0RQVFIoZGlwKTsKK0BAIC0xMzIyLDcgKzEzMjIsNyBAQCBwcm9jZXNzX3NmX2RpcigKKyBzdGF0aWMgdm9pZAorIG9iZnVzY2F0ZV9wYXRoX2NvbXBvbmVudHMoCisgCWNoYXIJCQkqYnVmLAorLQlfX3VpbnQ2NF90CQlsZW4pCisrCXVpbnQ2NF90CQlsZW4pCisgeworIAl1bnNpZ25lZCBjaGFyCQkqY29tcCA9ICh1bnNpZ25lZCBjaGFyICopYnVmOworIAl1bnNpZ25lZCBjaGFyCQkqZW5kID0gY29tcCArIGxlbjsKK0BAIC0xMzU5LDcgKzEzNTksNyBAQCBzdGF0aWMgdm9pZAorIHByb2Nlc3Nfc2Zfc3ltbGluaygKKyAJeGZzX2Rpbm9kZV90CQkqZGlwKQorIHsKKy0JX191aW50NjRfdAkJbGVuOworKwl1aW50NjRfdAkJbGVuOworIAljaGFyCQkJKmJ1ZjsKKyAKKyAJbGVuID0gYmU2NF90b19jcHUoZGlwLT5kaV9zaXplKTsKK0BAIC0xNjMxLDcgKzE2MzEsNyBAQCBwcm9jZXNzX2F0dHJfYmxvY2soCisgCXhmc19hdHRyX2xlYWZfZW50cnlfdCAJCSplbnRyeTsKKyAJeGZzX2F0dHJfbGVhZl9uYW1lX2xvY2FsX3QgCSpsb2NhbDsKKyAJeGZzX2F0dHJfbGVhZl9uYW1lX3JlbW90ZV90IAkqcmVtb3RlOworLQlfX3VpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisrCXVpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisgCWNoYXIJCQkJKmZpcnN0X25hbWU7CisgCisgCitAQCAtMjI3MCw3ICsyMjcwLDcgQEAgZG9uZToKKyAJcmV0dXJuIHN1Y2Nlc3M7CisgfQorIAorLXN0YXRpYyBfX3VpbnQzMl90CWlub2Rlc19jb3BpZWQgPSAwOworK3N0YXRpYyB1aW50MzJfdAlpbm9kZXNfY29waWVkOworIAorIHN0YXRpYyBpbnQKKyBjb3B5X2lub2RlX2NodW5rKAorZGlmZiAtLWdpdCBhL2RiL3NiLmMgYi9kYi9zYi5jCitpbmRleCA4ZTc3MjJjZC4uZjE5MjQ4ZDcgMTAwNjQ0CistLS0gYS9kYi9zYi5jCisrKysgYi9kYi9zYi5jCitAQCAtNjA2LDcgKzYwNiw3IEBAIHZlcnNpb25faGVscCh2b2lkKQorIH0KKyAKKyBzdGF0aWMgaW50CistZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCBfX3VpbnQxNl90IHZlcnNpb24sIF9fdWludDMyX3QgZmVhdHVyZXMpCisrZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50MTZfdCB2ZXJzaW9uLCB1aW50MzJfdCBmZWF0dXJlcykKKyB7CisgCXhmc19zYl90CXRzYjsKKyAKK0BAIC03MTAsOCArNzEwLDggQEAgdmVyc2lvbl9mKAorIAlpbnQJCWFyZ2MsCisgCWNoYXIJCSoqYXJndikKKyB7CistCV9fdWludDE2X3QJdmVyc2lvbiA9IDA7CistCV9fdWludDMyX3QJZmVhdHVyZXMgPSAwOworKwl1aW50MTZfdAl2ZXJzaW9uID0gMDsKKysJdWludDMyX3QJZmVhdHVyZXMgPSAwOworIAl4ZnNfYWdudW1iZXJfdAlhZzsKKyAKKyAJaWYgKGFyZ2MgPT0gMikgewkvKiBXUklURSBWRVJTSU9OICovCitkaWZmIC0tZ2l0IGEvZnNyL3hmc19mc3IuYyBiL2Zzci94ZnNfZnNyLmMKK2luZGV4IDUxN2I3NWYwLi5kNDg0NmEzMiAxMDA2NDQKKy0tLSBhL2Zzci94ZnNfZnNyLmMKKysrKyBiL2Zzci94ZnNfZnNyLmMKK0BAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBnZXRibWFwICAqb3V0bWFwID0gTlVMTDsKKyBpbnQgICAgICAgICAgICAgb3V0bWFwX3NpemUgPSAwOworIGludAkJUmVhbFVpZDsKKyBpbnQJCXRtcF9hZ2k7Cistc3RhdGljIF9faW50NjRfdAltaW5pbXVtZnJlZSA9IDIwNDg7Cisrc3RhdGljIGludDY0X3QJCW1pbmltdW1mcmVlID0gMjA0ODsKKyAKKyAjZGVmaW5lIE1OVFRZUEVfWEZTICAgICAgICAgICAgICJ4ZnMiCisgCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kYXJ3aW4uaCBiL2luY2x1ZGUvZGFyd2luLmgKK2luZGV4IDdiYmQ1NzY0Li41MTAzMWM0MiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZGFyd2luLmgKKysrKyBiL2luY2x1ZGUvZGFyd2luLmgKK0BAIC0xMjUsMTUgKzEyNSwxNSBAQCB0eXBlZGVmIHNpZ25lZCBpbnQJCV9fczMyOworIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKKyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OworIAorLSNkZWZpbmUgX19pbnQ4X3QJaW50OF90CistI2RlZmluZSBfX2ludDE2X3QJaW50MTZfdAorLSNkZWZpbmUgX19pbnQzMl90CWludDMyX3QKKy0jZGVmaW5lIF9faW50MzJfdAlpbnQzMl90CistI2RlZmluZSBfX2ludDY0X3QJaW50NjRfdAorLSNkZWZpbmUgX191aW50OF90CXVfaW50OF90CistI2RlZmluZSBfX3VpbnQxNl90CXVfaW50MTZfdAorLSNkZWZpbmUgX191aW50MzJfdAl1X2ludDMyX3QKKy0jZGVmaW5lIF9fdWludDY0X3QJdV9pbnQ2NF90CisrI2RlZmluZSBpbnQ4X3QJCWludDhfdAorKyNkZWZpbmUgaW50MTZfdAkJaW50MTZfdAorKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAorKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAorKyNkZWZpbmUgaW50NjRfdAkJaW50NjRfdAorKyNkZWZpbmUgdWludDhfdAkJdV9pbnQ4X3QKKysjZGVmaW5lIHVpbnQxNl90CXVfaW50MTZfdAorKyNkZWZpbmUgdWludDMyX3QJdV9pbnQzMl90CisrI2RlZmluZSB1aW50NjRfdAl1X2ludDY0X3QKKyAKKyB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7CisgdHlwZWRlZiB1X2ludDY0X3QJeGZzX2lub190OworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZWJzZC5oIGIvaW5jbHVkZS9mcmVlYnNkLmgKK2luZGV4IGZiMzE4Yjg5Li5mNTJlZDBhOSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZnJlZWJzZC5oCisrKysgYi9pbmNsdWRlL2ZyZWVic2QuaAorQEAgLTUwLDkgKzUwLDkgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CV9fdTY0OworIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQJX19zNjQ7CisgCisgdHlwZWRlZiBvZmZfdAkJeGZzX29mZl90OworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfaW5vX3Q7CistdHlwZWRlZiBfX3VpbnQzMl90CXhmc19kZXZfdDsKKy10eXBlZGVmIF9faW50NjRfdAl4ZnNfZGFkZHJfdDsKKyt0eXBlZGVmIHVpbnQ2NF90CXhmc19pbm9fdDsKKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kZXZfdDsKKyt0eXBlZGVmIGludDY0X3QJCXhmc19kYWRkcl90OworIHR5cGVkZWYgX191MzIJCXhmc19ubGlua190OworIAorICNkZWZpbmUJT19MQVJHRUZJTEUJMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ251a2ZyZWVic2QuaCBiL2luY2x1ZGUvZ251a2ZyZWVic2QuaAoraW5kZXggNjkxNmU2NWEuLjFkYjNmNGYwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9nbnVrZnJlZWJzZC5oCisrKysgYi9pbmNsdWRlL2dudWtmcmVlYnNkLmgKK0BAIC00Niw5ICs0Niw5IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKKyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OworIAorIHR5cGVkZWYgb2ZmX3QJCXhmc19vZmZfdDsKKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2lub190OworLXR5cGVkZWYgX191aW50MzJfdAl4ZnNfZGV2X3Q7CistdHlwZWRlZiBfX2ludDY0X3QJeGZzX2RhZGRyX3Q7CisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfaW5vX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGV2X3Q7CisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfZGFkZHJfdDsKKyB0eXBlZGVmIF9fdTMyCQl4ZnNfbmxpbmtfdDsKKyAKKyAjZGVmaW5lIEhBVkVfRklECTEKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpYnhjbWQuaCBiL2luY2x1ZGUvbGlieGNtZC5oCitpbmRleCBlOGQyZmZjOC4uNjgwNjM4MGMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpYnhjbWQuaAorKysrIGIvaW5jbHVkZS9saWJ4Y21kLmgKK0BAIC00MiwxMCArNDIsMTAgQEAgZ2V0X3RvcG9sb2d5KAorIGV4dGVybiB2b2lkCisgY2FsY19kZWZhdWx0X2FnX2dlb21ldHJ5KAorIAlpbnQJCWJsb2NrbG9nLAorLQlfX3VpbnQ2NF90CWRibG9ja3MsCisrCXVpbnQ2NF90CWRibG9ja3MsCisgCWludAkJbXVsdGlkaXNrLAorLQlfX3VpbnQ2NF90CSphZ3NpemUsCistCV9fdWludDY0X3QJKmFnY291bnQpOworKwl1aW50NjRfdAkqYWdzaXplLAorKwl1aW50NjRfdAkqYWdjb3VudCk7CisgCisgZXh0ZXJuIGludAorIGNoZWNrX292ZXJ3cml0ZSgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LmggYi9pbmNsdWRlL2xpbnV4LmgKK2luZGV4IDk2MTFhMzdmLi42Y2UzNDRjNSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXguaAorKysrIGIvaW5jbHVkZS9saW51eC5oCitAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgcGxhdGZvcm1fdXVpZF9jb3B5KHV1aWRfdCAqZHN0LCB1dWlkX3QgKnNyYykKKyBzdGF0aWMgX19pbmxpbmVfXyBpbnQKKyBwbGF0Zm9ybV9kaXNjYXJkX2Jsb2NrcyhpbnQgZmQsIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pCisgeworLQlfX3VpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07CisrCXVpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07CisgCisgCWlmIChpb2N0bChmZCwgQkxLRElTQ0FSRCwgJnJhbmdlKSA8IDApCisgCQlyZXR1cm4gZXJybm87CitAQCAtMTQ0LDkgKzE0NCw5IEBAIHBsYXRmb3JtX2Rpc2NhcmRfYmxvY2tzKGludCBmZCwgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbikKKyAjZGVmaW5lIEVGU0JBRENSQwlFQkFETVNHCS8qIEJhZCBDUkMgZGV0ZWN0ZWQgKi8KKyAKKyB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7CistdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19pbm9fdDsKKy10eXBlZGVmIF9fdWludDMyX3QJeGZzX2Rldl90OworLXR5cGVkZWYgX19pbnQ2NF90CXhmc19kYWRkcl90OworK3R5cGVkZWYgdWludDY0X3QJeGZzX2lub190OworK3R5cGVkZWYgdWludDMyX3QJeGZzX2Rldl90OworK3R5cGVkZWYgaW50NjRfdAkJeGZzX2RhZGRyX3Q7CisgdHlwZWRlZiBfX3UzMgkJeGZzX25saW5rX3Q7CisgCisgLyoqCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfYXJjaC5oIGIvaW5jbHVkZS94ZnNfYXJjaC5oCitpbmRleCAxMmNkNDNlNi4uMTg2Y2FkYmEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3hmc19hcmNoLmgKKysrKyBiL2luY2x1ZGUveGZzX2FyY2guaAorQEAgLTI0NCwzOSArMjQ0LDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiZTY0X2FkZF9jcHUoX19iZTY0ICphLCBfX3M2NCBiKQorIAkqYSA9IGNwdV90b19iZTY0KGJlNjRfdG9fY3B1KCphKSArIGIpOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDE2X3QgZ2V0X3VuYWxpZ25lZF9iZTE2KHZvaWQgKnApCisrc3RhdGljIGlubGluZSB1aW50MTZfdCBnZXRfdW5hbGlnbmVkX2JlMTYodm9pZCAqcCkKKyB7CistCV9fdWludDhfdCAqX19wID0gcDsKKysJdWludDhfdCAqX19wID0gcDsKKyAJcmV0dXJuIF9fcFswXSA8PCA4IHwgX19wWzFdOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDMyX3QgZ2V0X3VuYWxpZ25lZF9iZTMyKHZvaWQgKnApCisrc3RhdGljIGlubGluZSB1aW50MzJfdCBnZXRfdW5hbGlnbmVkX2JlMzIodm9pZCAqcCkKKyB7CistCV9fdWludDhfdCAqX19wID0gcDsKKysJdWludDhfdCAqX19wID0gcDsKKyAgICAgICAgIHJldHVybiBfX3BbMF0gPDwgMjQgfCBfX3BbMV0gPDwgMTYgfCBfX3BbMl0gPDwgOCB8IF9fcFszXTsKKyB9CisgCistc3RhdGljIGlubGluZSBfX3VpbnQ2NF90IGdldF91bmFsaWduZWRfYmU2NCh2b2lkICpwKQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2V0X3VuYWxpZ25lZF9iZTY0KHZvaWQgKnApCisgeworLQlyZXR1cm4gKF9fdWludDY0X3QpZ2V0X3VuYWxpZ25lZF9iZTMyKHApIDw8IDMyIHwKKysJcmV0dXJuICh1aW50NjRfdClnZXRfdW5hbGlnbmVkX2JlMzIocCkgPDwgMzIgfAorIAkJCSAgIGdldF91bmFsaWduZWRfYmUzMihwICsgNCk7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMTYoX191aW50MTZfdCB2YWwsIHZvaWQgKnApCisrc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUxNih1aW50MTZfdCB2YWwsIHZvaWQgKnApCisgeworLQlfX3VpbnQ4X3QgKl9fcCA9IHA7CisrCXVpbnQ4X3QgKl9fcCA9IHA7CisgCSpfX3ArKyA9IHZhbCA+PiA4OworIAkqX19wKysgPSB2YWw7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMzIoX191aW50MzJfdCB2YWwsIHZvaWQgKnApCisrc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUzMih1aW50MzJfdCB2YWwsIHZvaWQgKnApCisgeworLQlfX3VpbnQ4X3QgKl9fcCA9IHA7CisrCXVpbnQ4X3QgKl9fcCA9IHA7CisgCXB1dF91bmFsaWduZWRfYmUxNih2YWwgPj4gMTYsIF9fcCk7CisgCXB1dF91bmFsaWduZWRfYmUxNih2YWwsIF9fcCArIDIpOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X3VuYWxpZ25lZF9iZTY0KF9fdWludDY0X3QgdmFsLCB2b2lkICpwKQorK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlNjQodWludDY0X3QgdmFsLCB2b2lkICpwKQorIHsKKyAJcHV0X3VuYWxpZ25lZF9iZTMyKHZhbCA+PiAzMiwgcCk7CisgCXB1dF91bmFsaWduZWRfYmUzMih2YWwsIHAgKyA0KTsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19pbm9kZS5oIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAoraW5kZXggZmI2YjU0MjkuLjg3NjYwMjRlIDEwMDY0NAorLS0tIGEvaW5jbHVkZS94ZnNfaW5vZGUuaAorKysrIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAorQEAgLTEyMyw4ICsxMjMsOCBAQCB4ZnNfZ2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCkKKyBzdGF0aWMgaW5saW5lIHZvaWQKKyB4ZnNfc2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCwgcHJpZF90IHByb2ppZCkKKyB7CistCWlkLT5kaV9wcm9qaWRfaGkgPSAoX191aW50MTZfdCkgKHByb2ppZCA+PiAxNik7CistCWlkLT5kaV9wcm9qaWRfbG8gPSAoX191aW50MTZfdCkgKHByb2ppZCAmIDB4ZmZmZik7CisrCWlkLT5kaV9wcm9qaWRfaGkgPSAodWludDE2X3QpIChwcm9qaWQgPj4gMTYpOworKwlpZC0+ZGlfcHJvamlkX2xvID0gKHVpbnQxNl90KSAocHJvamlkICYgMHhmZmZmKTsKKyB9CisgCisgc3RhdGljIGlubGluZSBib29sIHhmc19pc19yZWZsaW5rX2lub2RlKHN0cnVjdCB4ZnNfaW5vZGUgKmlwKQorZGlmZiAtLWdpdCBhL2luY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCitpbmRleCA3NTgyNjc2Yi4uMGQwOTg2MjggMTAwNjQ0CistLS0gYS9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCisrKysgYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCitAQCAtMjYsNyArMjYsNyBAQAorICNkZWZpbmUgWExPR19SSEFTSF9TSVpFCTE2CisgI2RlZmluZSBYTE9HX1JIQVNIX1NISUZUIDIKKyAjZGVmaW5lIFhMT0dfUkhBU0godGlkKQlcCistCSgoKChfX3VpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKKysJKCgoKHVpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKKyAKKyAjZGVmaW5lIFhMT0dfTUFYX1JFR0lPTlNfSU5fSVRFTSAgIChYRlNfTUFYX0JMT0NLU0laRSAvIFhGU19CTEZfQ0hVTksgLyAyICsgMSkKKyAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19tZXRhZHVtcC5oIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAoraW5kZXggN2YzMDM5ZWIuLjEzYWZiOGRkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAorKysrIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAorQEAgLTI0LDggKzI0LDggQEAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfbWV0YWJsb2NrIHsKKyAJX19iZTMyCQltYl9tYWdpYzsKKyAJX19iZTE2CQltYl9jb3VudDsKKy0JX191aW50OF90CW1iX2Jsb2NrbG9nOworLQlfX3VpbnQ4X3QJbWJfaW5mbzsKKysJdWludDhfdAkJbWJfYmxvY2tsb2c7CisrCXVpbnQ4X3QJCW1iX2luZm87CisgCS8qIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIHhmc19kYWRkcl90ICovCisgfSB4ZnNfbWV0YWJsb2NrX3Q7CisgCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfbW91bnQuaCBiL2luY2x1ZGUveGZzX21vdW50LmgKK2luZGV4IDVmZjI0ZWJmLi41YjMyM2JiMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUveGZzX21vdW50LmgKKysrKyBiL2luY2x1ZGUveGZzX21vdW50LmgKK0BAIC00OCwxMiArNDgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX21vdW50IHsKKyAjZGVmaW5lIG1fZGV2CQltX2RkZXZfdGFyZ3AKKyAjZGVmaW5lIG1fbG9nZGV2CW1fbG9nZGV2X3RhcmdwCisgI2RlZmluZSBtX3J0ZGV2CQltX3J0ZGV2X3RhcmdwCistCV9fdWludDhfdAkJbV9kaXJjb29rX2Vsb2c7CS8qIGxvZyBkLWNvb2tpZSBlbnRyeSBiaXRzICovCistCV9fdWludDhfdAkJbV9ibGtiaXRfbG9nOwkvKiBibG9ja2xvZyArIE5CQlkgKi8KKy0JX191aW50OF90CQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCistCV9fdWludDhfdAkJbV9zZWN0YmJfbG9nOwkvKiBzZWN0b3Jsb2cgLSBCQlNISUZUICovCistCV9fdWludDhfdAkJbV9hZ25vX2xvZzsJLyogbG9nICNhZydzICovCistCV9fdWludDhfdAkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCisrCXVpbnQ4X3QJCQltX2RpcmNvb2tfZWxvZzsJLyogbG9nIGQtY29va2llIGVudHJ5IGJpdHMgKi8KKysJdWludDhfdAkJCW1fYmxrYml0X2xvZzsJLyogYmxvY2tsb2cgKyBOQkJZICovCisrCXVpbnQ4X3QJCQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCisrCXVpbnQ4X3QJCQltX3NlY3RiYl9sb2c7CS8qIHNlY3RvcmxvZyAtIEJCU0hJRlQgKi8KKysJdWludDhfdAkJCW1fYWdub19sb2c7CS8qIGxvZyAjYWcncyAqLworKwl1aW50OF90CQkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCisgCXVpbnQJCQltX2lub2RlX2NsdXN0ZXJfc2l6ZTsvKiBtaW4gaW5vZGUgYnVmIHNpemUgKi8KKyAJdWludAkJCW1fYmxvY2ttYXNrOwkvKiBzYl9ibG9ja3NpemUtMSAqLworIAl1aW50CQkJbV9ibG9ja3dzaXplOwkvKiBzYl9ibG9ja3NpemUgaW4gd29yZHMgKi8KK0BAIC04OCw3ICs4OCw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19tb3VudCB7CisgCWludAkJCW1fbGl0aW5vOwkvKiBzaXplIG9mIGlub2RlIHVuaW9uIGFyZWEgKi8KKyAJaW50CQkJbV9pbm9hbGlnbl9tYXNrOy8qIG1hc2sgc2JfaW5vYWxpZ25tdCBpZiB1c2VkICovCisgCXN0cnVjdCB4ZnNfdHJhbnNfcmVzdgltX3Jlc3Y7CQkvKiBwcmVjb21wdXRlZCByZXMgdmFsdWVzICovCistCV9fdWludDY0X3QJCW1fbWF4aWNvdW50OwkvKiBtYXhpbXVtIGlub2RlIGNvdW50ICovCisrCXVpbnQ2NF90CQltX21heGljb3VudDsJLyogbWF4aW11bSBpbm9kZSBjb3VudCAqLworIAlpbnQJCQltX2RhbGlnbjsJLyogc3RyaXBlIHVuaXQgKi8KKyAJaW50CQkJbV9zd2lkdGg7CS8qIHN0cmlwZSB3aWR0aCAqLworIAlpbnQJCQltX3Npbm9hbGlnbjsJLyogc3RyaXBlIHVuaXQgaW5vZGUgYWxpZ25tbnQgKi8KK0BAIC0xNDQsMTIgKzE0NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgeworIAljaGFyCQlwYWdpX2luaXQ7CS8qIHRoaXMgYWdpJ3MgZW50cnkgaXMgaW5pdGlhbGl6ZWQgKi8KKyAJY2hhcgkJcGFnZl9tZXRhZGF0YTsJLyogdGhlIGFnZiBpcyBwcmVmZXJyZWQgdG8gYmUgbWV0YWRhdGEgKi8KKyAJY2hhcgkJcGFnaV9pbm9kZW9rOwkvKiBUaGUgYWdpIGlzIG9rIGZvciBpbm9kZXMgKi8KKy0JX191aW50OF90CXBhZ2ZfbGV2ZWxzW1hGU19CVE5VTV9BR0ZdOworKwl1aW50OF90CQlwYWdmX2xldmVsc1tYRlNfQlROVU1fQUdGXTsKKyAJCQkJCS8qICMgb2YgbGV2ZWxzIGluIGJubyAmIGNudCBidHJlZSAqLworLQlfX3VpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCisrCXVpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCisgCXhmc19leHRsZW5fdAlwYWdmX2ZyZWVibGtzOwkvKiB0b3RhbCBmcmVlIGJsb2NrcyAqLworIAl4ZnNfZXh0bGVuX3QJcGFnZl9sb25nZXN0OwkvKiBsb25nZXN0IGZyZWUgc3BhY2UgKi8KKy0JX191aW50MzJfdAlwYWdmX2J0cmVlYmxrczsJLyogIyBvZiBibG9ja3MgaGVsZCBpbiBBR0YgYnRyZWVzICovCisrCXVpbnQzMl90CXBhZ2ZfYnRyZWVibGtzOwkvKiAjIG9mIGJsb2NrcyBoZWxkIGluIEFHRiBidHJlZXMgKi8KKyAJeGZzX2FnaW5vX3QJcGFnaV9mcmVlY291bnQ7CS8qIG51bWJlciBvZiBmcmVlIGlub2RlcyAqLworIAl4ZnNfYWdpbm9fdAlwYWdpX2NvdW50OwkvKiBudW1iZXIgb2YgYWxsb2NhdGVkIGlub2RlcyAqLworIAorQEAgLTE2OSw3ICsxNjksNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgeworIAlzdHJ1Y3QgeGZzX2FnX3Jlc3YJcGFnX2FnZmxfcmVzdjsKKyAKKyAJLyogcmVmZXJlbmNlIGNvdW50ICovCistCV9fdWludDhfdAlwYWdmX3JlZmNvdW50X2xldmVsOworKwl1aW50OF90CQlwYWdmX3JlZmNvdW50X2xldmVsOworIH0geGZzX3BlcmFnX3Q7CisgCisgc3RhdGljIGlubGluZSBzdHJ1Y3QgeGZzX2FnX3Jlc3YgKgorZGlmZiAtLWdpdCBhL2xpYmhhbmRsZS9oYW5kbGUuYyBiL2xpYmhhbmRsZS9oYW5kbGUuYworaW5kZXggMjM2ZWQyMmEuLjAwMTI3YjNjIDEwMDY0NAorLS0tIGEvbGliaGFuZGxlL2hhbmRsZS5jCisrKysgYi9saWJoYW5kbGUvaGFuZGxlLmMKK0BAIC0yMzIsNyArMjMyLDcgQEAgb2JqX3RvX2hhbmRsZSgKKyB7CisgCWNoYXIJCWhidWYgW01BWEhBTlNJWl07CisgCWludAkJcmV0OworLQlfX3VpbnQzMl90CWhhbmRsZW47CisrCXVpbnQzMl90CWhhbmRsZW47CisgCXhmc19mc29wX2hhbmRsZXJlcV90IGhyZXE7CisgCisgCWlmIChvcGNvZGUgPT0gWEZTX0lPQ19GRF9UT19IQU5ETEUpIHsKK2RpZmYgLS1naXQgYS9saWJoYW5kbGUvamRtLmMgYi9saWJoYW5kbGUvamRtLmMKK2luZGV4IGU1MmY1ZDgzLi44MjEwNjFiNCAxMDA2NDQKKy0tLSBhL2xpYmhhbmRsZS9qZG0uYworKysrIGIvbGliaGFuZGxlL2pkbS5jCitAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBmaWxlaGFuZGxlIHsKKyAJZnNoYW5kbGVfdCBmaF9mc2hhbmRsZTsJCS8qIGhhbmRsZSBvZiBmcyBjb250YWluaW5nIHRoaXMgaW5vZGUgKi8KKyAJaW50MTZfdCBmaF9zel9mb2xsb3dpbmc7CS8qIGJ5dGVzIGluIGhhbmRsZSBhZnRlciB0aGlzIG1lbWJlciAqLworIAljaGFyIGZoX3BhZFtGSUxFSEFORExFX1NaX1BBRF07CS8qIHBhZGRpbmcsIG11c3QgYmUgemVyb2VkICovCistCV9fdWludDMyX3QgZmhfZ2VuOwkJLyogZ2VuZXJhdGlvbiBjb3VudCAqLworKwl1aW50MzJfdCBmaF9nZW47CQkvKiBnZW5lcmF0aW9uIGNvdW50ICovCisgCXhmc19pbm9fdCBmaF9pbm87CQkvKiA2NCBiaXQgaW5vICovCisgfSBmaWxlaGFuZGxlX3Q7CisgCitkaWZmIC0tZ2l0IGEvbGlieGNtZC90b3BvbG9neS5jIGIvbGlieGNtZC90b3BvbG9neS5jCitpbmRleCA4YjAyNzZhNy4uZjY2ZGQxYmMgMTAwNjQ0CistLS0gYS9saWJ4Y21kL3RvcG9sb2d5LmMKKysrKyBiL2xpYnhjbWQvdG9wb2xvZ3kuYworQEAgLTIzLDE5ICsyMywxOSBAQAorICNlbmRpZiAvKiBFTkFCTEVfQkxLSUQgKi8KKyAjaW5jbHVkZSAieGZzX211bHRpZGlzay5oIgorIAorLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQorLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQorLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKKysjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCisrI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorIAorIHZvaWQKKyBjYWxjX2RlZmF1bHRfYWdfZ2VvbWV0cnkoCisgCWludAkJYmxvY2tsb2csCistCV9fdWludDY0X3QJZGJsb2NrcywKKysJdWludDY0X3QJZGJsb2NrcywKKyAJaW50CQltdWx0aWRpc2ssCistCV9fdWludDY0X3QJKmFnc2l6ZSwKKy0JX191aW50NjRfdAkqYWdjb3VudCkKKysJdWludDY0X3QJKmFnc2l6ZSwKKysJdWludDY0X3QJKmFnY291bnQpCisgeworLQlfX3VpbnQ2NF90CWJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CWJsb2NrcyA9IDA7CisgCWludAkJc2hpZnQgPSAwOworIAorIAkvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy9kYXJ3aW4uYyBiL2xpYnhmcy9kYXJ3aW4uYworaW5kZXggNzQ1MDdlODEuLjE2ZDJjMzVjIDEwMDY0NAorLS0tIGEvbGlieGZzL2Rhcndpbi5jCisrKysgYi9saWJ4ZnMvZGFyd2luLmMKK0BAIC02OCw3ICs2OCw3IEBAIHBsYXRmb3JtX2ZsdXNoX2RldmljZShpbnQgZmQsIGRldl90IGRldmljZSkKKyB2b2lkCisgcGxhdGZvcm1fZmluZHNpemVzKGNoYXIgKnBhdGgsIGludCBmZCwgbG9uZyBsb25nICpzeiwgaW50ICpic3opCisgeworLQlfX3VpbnQ2NF90CXNpemU7CisrCXVpbnQ2NF90CXNpemU7CisgCXN0cnVjdCBzdGF0CXN0OworIAorIAlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2ZyZWVic2QuYyBiL2xpYnhmcy9mcmVlYnNkLmMKK2luZGV4IDQ2NjdkMWY1Li5kN2JjYTE0MiAxMDA2NDQKKy0tLSBhL2xpYnhmcy9mcmVlYnNkLmMKKysrKyBiL2xpYnhmcy9mcmVlYnNkLmMKK0BAIC0xMDksNyArMTA5LDcgQEAgdm9pZAorIHBsYXRmb3JtX2ZpbmRzaXplcyhjaGFyICpwYXRoLCBpbnQgZmQsIGxvbmcgbG9uZyAqc3osIGludCAqYnN6KQorIHsKKyAJc3RydWN0IHN0YXQJc3Q7CistCV9faW50NjRfdAlzaXplOworKwlpbnQ2NF90CQlzaXplOworIAl1X2ludAkJc3NpemU7CisgCisgCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKK2RpZmYgLS1naXQgYS9saWJ4ZnMvaW5pdC5jIGIvbGlieGZzL2luaXQuYworaW5kZXggZmMxNGM1ZTQuLjBmNDFhODUzIDEwMDY0NAorLS0tIGEvbGlieGZzL2luaXQuYworKysrIGIvbGlieGZzL2luaXQuYworQEAgLTU0Niw3ICs1NDYsNyBAQCBsaWJ4ZnNfaW5pdGlhbGl6ZV9wZXJhZygKKyAJCSAqIHRoZSBtYXggaW5vZGUgcGVyY2VudGFnZS4KKyAJCSAqLworIAkJaWYgKG1wLT5tX21heGljb3VudCkgeworLQkJCV9fdWludDY0X3QJaWNvdW50OworKwkJCXVpbnQ2NF90CWljb3VudDsKKyAKKyAJCQlpY291bnQgPSBzYnAtPnNiX2RibG9ja3MgKiBzYnAtPnNiX2ltYXhfcGN0OworIAkJCWRvX2RpdihpY291bnQsIDEwMCk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2lyaXguYyBiL2xpYnhmcy9pcml4LmMKK2luZGV4IDMyZmNiM2U1Li4wZjE0YWVjNyAxMDA2NDQKKy0tLSBhL2xpYnhmcy9pcml4LmMKKysrKyBiL2xpYnhmcy9pcml4LmMKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgaW50IHBsYXRmb3JtX2hhc191dWlkID0gMDsKKyBleHRlcm4gY2hhciAqcHJvZ25hbWU7CistZXh0ZXJuIF9faW50NjRfdCBmaW5kc2l6ZShjaGFyICopOworK2V4dGVybiBpbnQ2NF90IGZpbmRzaXplKGNoYXIgKik7CisgCisgaW50CisgcGxhdGZvcm1fY2hlY2tfaXNtb3VudGVkKGNoYXIgKm5hbWUsIGNoYXIgKmJsb2NrLCBzdHJ1Y3Qgc3RhdCAqcywgaW50IHZlcmJvc2UpCitkaWZmIC0tZ2l0IGEvbGlieGZzL2xpYnhmc19wcml2LmggYi9saWJ4ZnMvbGlieGZzX3ByaXYuaAoraW5kZXggYjRmNzY2ZGIuLmQ1MjViNjY3IDEwMDY0NAorLS0tIGEvbGlieGZzL2xpYnhmc19wcml2LmgKKysrKyBiL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCitAQCAtMjk2LDggKzI5Niw4IEBAIHJvdW5kdXBfcG93X29mX3R3byh1aW50IHYpCisgCXJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QKKy1yb3VuZHVwXzY0KF9fdWludDY0X3QgeCwgX191aW50MzJfdCB5KQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QKKytyb3VuZHVwXzY0KHVpbnQ2NF90IHgsIHVpbnQzMl90IHkpCisgeworIAl4ICs9IHkgLSAxOworIAlkb19kaXYoeCwgeSk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2xpbnV4LmMgYi9saWJ4ZnMvbGludXguYworaW5kZXggNjlmMDRhZDkuLjBiYWNlM2ViIDEwMDY0NAorLS0tIGEvbGlieGZzL2xpbnV4LmMKKysrKyBiL2xpYnhmcy9saW51eC5jCitAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQKKyBwbGF0Zm9ybV9maW5kc2l6ZXMoY2hhciAqcGF0aCwgaW50IGZkLCBsb25nIGxvbmcgKnN6LCBpbnQgKmJzeikKKyB7CisgCXN0cnVjdCBzdGF0CXN0OworLQlfX3VpbnQ2NF90CXNpemU7CisrCXVpbnQ2NF90CXNpemU7CisgCWludAkJZXJyb3I7CisgCisgCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKK2RpZmYgLS1naXQgYS9saWJ4ZnMvbG9naXRlbS5jIGIvbGlieGZzL2xvZ2l0ZW0uYworaW5kZXggN2U5M2Y2MDkuLjQ2NmI0NDIxIDEwMDY0NAorLS0tIGEvbGlieGZzL2xvZ2l0ZW0uYworKysrIGIvbGlieGZzL2xvZ2l0ZW0uYworQEAgLTEyMSw3ICsxMjEsNyBAQCB4ZnNfYnVmX2l0ZW1faW5pdCgKKyAJYmlwLT5ibGlfaXRlbS5saV9tb3VudHAgPSBtcDsKKyAJYmlwLT5ibGlfYnVmID0gYnA7CisgCWJpcC0+YmxpX2Zvcm1hdC5ibGZfdHlwZSA9IFhGU19MSV9CVUY7CistCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoX19pbnQ2NF90KVhGU19CVUZfQUREUihicCk7CisrCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoaW50NjRfdClYRlNfQlVGX0FERFIoYnApOworIAliaXAtPmJsaV9mb3JtYXQuYmxmX2xlbiA9ICh1bnNpZ25lZCBzaG9ydClCVE9CQihYRlNfQlVGX0NPVU5UKGJwKSk7CisgCVhGU19CVUZfU0VUX0ZTUFJJVkFURShicCwgYmlwKTsKKyB9CitkaWZmIC0tZ2l0IGEvbGlieGZzL3JhZGl4LXRyZWUuYyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKK2luZGV4IGVlZjljMzZkLi4zZjAyNTdmZSAxMDA2NDQKKy0tLSBhL2xpYnhmcy9yYWRpeC10cmVlLmMKKysrKyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKK0BAIC02NiwyMSArNjYsMjEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaGVpZ2h0X3RvX21heGluZGV4W1JBRElYX1RSRUVfTUFYX1BBVEhdOworIHN0YXRpYyBpbmxpbmUgdm9pZCB0YWdfc2V0KHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCisgCQlpbnQgb2Zmc2V0KQorIHsKKy0JKigoX191aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOworKwkqKCh1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOworIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgdGFnX2NsZWFyKHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCisgCQlpbnQgb2Zmc2V0KQorIHsKKy0JX191aW50MzJfdCAJKnAgPSAoX191aW50MzJfdCopbm9kZS0+dGFnc1t0YWddICsgKG9mZnNldCA+PiA1KTsKKy0JX191aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKKysJdWludDMyX3QgCSpwID0gKHVpbnQzMl90Kilub2RlLT50YWdzW3RhZ10gKyAob2Zmc2V0ID4+IDUpOworKwl1aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKKyAJKnAgJj0gfm07CisgfQorIAorIHN0YXRpYyBpbmxpbmUgaW50IHRhZ19nZXQoc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IHRhZywKKyAJCWludCBvZmZzZXQpCisgeworLQlyZXR1cm4gMSAmICgoKGNvbnN0IF9fdWludDMyX3QgKilub2RlLT50YWdzW3RhZ10pW29mZnNldCA+PiA1XSA+PiAob2Zmc2V0ICYgMzEpKTsKKysJcmV0dXJuIDEgJiAoKChjb25zdCB1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSlbb2Zmc2V0ID4+IDVdID4+IChvZmZzZXQgJiAzMSkpOworIH0KKyAKKyAvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy9yZHdyLmMgYi9saWJ4ZnMvcmR3ci5jCitpbmRleCAyMWM0MmYxNC4uNDc0ZTVlYmMgMTAwNjQ0CistLS0gYS9saWJ4ZnMvcmR3ci5jCisrKysgYi9saWJ4ZnMvcmR3ci5jCitAQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyB2b2lkIHVubW91bnRfcmVjb3JkKHZvaWQgKnApCisgCXhsb2dfb3BfaGVhZGVyX3QJKm9wID0gKHhsb2dfb3BfaGVhZGVyX3QgKilwOworIAkvKiB0aGUgZGF0YSBzZWN0aW9uIG11c3QgYmUgMzIgYml0IHNpemUgYWxpZ25lZCAqLworIAlzdHJ1Y3QgeworLQkgICAgX191aW50MTZfdCBtYWdpYzsKKy0JICAgIF9fdWludDE2X3QgcGFkMTsKKy0JICAgIF9fdWludDMyX3QgcGFkMjsgLyogbWF5IGFzIHdlbGwgbWFrZSBpdCA2NCBiaXRzICovCisrCSAgICB1aW50MTZfdCBtYWdpYzsKKysJICAgIHVpbnQxNl90IHBhZDE7CisrCSAgICB1aW50MzJfdCBwYWQyOyAvKiBtYXkgYXMgd2VsbCBtYWtlIGl0IDY0IGJpdHMgKi8KKyAJfSBtYWdpYyA9IHsgWExPR19VTk1PVU5UX1RZUEUsIDAsIDAgfTsKKyAKKyAJbWVtc2V0KHAsIDAsIEJCU0laRSk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3V0aWwuYyBiL2xpYnhmcy91dGlsLmMKK2luZGV4IGRjZmNhMzk3Li43OTM4ZTMxNyAxMDA2NDQKKy0tLSBhL2xpYnhmcy91dGlsLmMKKysrKyBiL2xpYnhmcy91dGlsLmMKK0BAIC0xNzAsOCArMTcwLDggQEAgbGlieGZzX3RyYW5zX2ljaGd0aW1lKAorIAlpZiAoZmxhZ3MgJiBYRlNfSUNIR1RJTUVfQ0hHKQorIAkJVkZTX0koaXApLT5pX2N0aW1lID0gdHY7CisgCWlmIChmbGFncyAmIFhGU19JQ0hHVElNRV9DUkVBVEUpIHsKKy0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfc2VjID0gKF9faW50MzJfdCl0di50dl9zZWM7CistCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoX19pbnQzMl90KXR2LnR2X25zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KXR2LnR2X3NlYzsKKysJCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChpbnQzMl90KXR2LnR2X25zZWM7CisgCX0KKyB9CisgCitAQCAtMjYxLDggKzI2MSw4IEBAIGxpYnhmc19pYWxsb2MoCisgCQlBU1NFUlQodXVpZF9lcXVhbCgmaXAtPmlfZC5kaV91dWlkLCAmbXAtPm1fc2Iuc2JfbWV0YV91dWlkKSk7CisgCQlWRlNfSShpcCktPmlfdmVyc2lvbiA9IDE7CisgCQlpcC0+aV9kLmRpX2ZsYWdzMiA9IDA7CistCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X3NlYzsKKy0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X25zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KVZGU19JKGlwKS0+aV9tdGltZS50dl9zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoaW50MzJfdClWRlNfSShpcCktPmlfbXRpbWUudHZfbnNlYzsKKyAJfQorIAorIAlmbGFncyA9IFhGU19JTE9HX0NPUkU7CitkaWZmIC0tZ2l0IGEvbG9ncHJpbnQvbG9nX21pc2MuYyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKK2luZGV4IDBkZmNmZDE5Li4yZmQwMWNlYiAxMDA2NDQKKy0tLSBhL2xvZ3ByaW50L2xvZ19taXNjLmMKKysrKyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKK0BAIC0xNjYsMTIgKzE2NiwxMiBAQCB4bG9nX3ByaW50X3RyYW5zX2hlYWRlcihjaGFyICoqcHRyLCBpbnQgbGVuKQorIHsKKyAgICAgeGZzX3RyYW5zX2hlYWRlcl90ICAqaDsKKyAgICAgY2hhcgkJKmNwdHIgPSAqcHRyOworLSAgICBfX3VpbnQzMl90ICAgICAgICAgIG1hZ2ljOworKyAgICB1aW50MzJfdCAgICAgICAgICBtYWdpYzsKKyAgICAgY2hhciAgICAgICAgICAgICAgICAqbWFnaWNfYyA9IChjaGFyICopJm1hZ2ljOworIAorICAgICAqcHRyICs9IGxlbjsKKyAKKy0gICAgbWFnaWM9KihfX3VpbnQzMl90KiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLworKyAgICBtYWdpYyA9ICoodWludDMyX3QgKiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLworIAorICAgICBpZiAobGVuID49IDQpIHsKKyAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgorQEAgLTIwMSw3ICsyMDEsNyBAQCB4bG9nX3ByaW50X3RyYW5zX2J1ZmZlcihjaGFyICoqcHRyLCBpbnQgbGVuLCBpbnQgKmksIGludCBudW1fb3BzKQorICAgICBpbnQJCQkgbnVtLCBza2lwOworICAgICBpbnQJCQkgc3VwZXJfYmxvY2sgPSAwOworICAgICBpbnQJCQkgYnVja2V0LCBjb2wsIGJ1Y2tldHM7CistICAgIF9faW50NjRfdAkJIGJsa25vOworKyAgICBpbnQ2NF90CQkJIGJsa25vOworICAgICB4ZnNfYnVmX2xvZ19mb3JtYXRfdCBsYnVmOworICAgICBpbnQJCQkgc2l6ZSwgYmxlbiwgbWFwX3NpemUsIHN0cnVjdF9zaXplOworICAgICBfX2JlNjQJCSB4LCB5OworZGlmZiAtLWdpdCBhL21kcmVzdG9yZS94ZnNfbWRyZXN0b3JlLmMgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCitpbmRleCA5ZDFiNGU4MC4uYzQ5YzEzYWEgMTAwNjQ0CistLS0gYS9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCisrKysgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCitAQCAtNjYsNyArNjYsNyBAQCBwZXJmb3JtX3Jlc3RvcmUoCisgCWludAkJCW1iX2NvdW50OworIAl4ZnNfbWV0YWJsb2NrX3QJCXRtYjsKKyAJeGZzX3NiX3QJCXNiOworLQlfX2ludDY0X3QJCWJ5dGVzX3JlYWQ7CisrCWludDY0X3QJCQlieXRlc19yZWFkOworIAorIAkvKgorIAkgKiByZWFkIGluIGZpcnN0IGJsb2NrcyAoc3VwZXJibG9jayAwKSwgc2V0ICJpbnByb2dyZXNzIiBmbGFnIGZvciBpdCwKK2RpZmYgLS1naXQgYS9ta2ZzL3Byb3RvLmMgYi9ta2ZzL3Byb3RvLmMKK2luZGV4IDg5Y2QyMzc5Li5jZjhjYzM5MSAxMDA2NDQKKy0tLSBhL21rZnMvcHJvdG8uYworKysrIGIvbWtmcy9wcm90by5jCitAQCAtNjY3LDcgKzY2Nyw3IEBAIHJ0aW5pdCgKKyAJbXAtPm1fc2Iuc2JfcmJtaW5vID0gcmJtaXAtPmlfaW5vOworIAlyYm1pcC0+aV9kLmRpX3NpemUgPSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKiBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisgCXJibWlwLT5pX2QuZGlfZmxhZ3MgPSBYRlNfRElGTEFHX05FV1JUQk07CistCSooX191aW50NjRfdCAqKSZWRlNfSShyYm1pcCktPmlfYXRpbWUgPSAwOworKwkqKHVpbnQ2NF90ICopJlZGU19JKHJibWlwKS0+aV9hdGltZSA9IDA7CisgCWxpYnhmc190cmFuc19sb2dfaW5vZGUodHAsIHJibWlwLCBYRlNfSUxPR19DT1JFKTsKKyAJbGlieGZzX2xvZ19zYih0cCk7CisgCW1wLT5tX3JibWlwID0gcmJtaXA7CitkaWZmIC0tZ2l0IGEvbWtmcy94ZnNfbWtmcy5jIGIvbWtmcy94ZnNfbWtmcy5jCitpbmRleCBiNWMzYTU3ZS4uN2JiNjQwOGYgMTAwNjQ0CistLS0gYS9ta2ZzL3hmc19ta2ZzLmMKKysrKyBiL21rZnMveGZzX21rZnMuYworQEAgLTcwNSw5ICs3MDUsOSBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBtb3B0cyA9IHsKKyAJfSwKKyB9OworIAorLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQorLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQorLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKKysjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCisrI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorIAorIC8qCisgICogVXNlIHRoaXMgbWFjcm8gYmVmb3JlIHdlIGhhdmUgc3VwZXJibG9jayBhbmQgbW91bnQgc3RydWN0dXJlCitAQCAtODc4LDcgKzg3OCw3IEBAIGZpeHVwX2xvZ19zdHJpcGVfdW5pdCgKKyAJeGZzX3Jmc2Jsb2NrX3QJKmxvZ2Jsb2NrcywKKyAJaW50CQlibG9ja2xvZykKKyB7CistCV9fdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKKysJdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKKyAKKyAJLyoKKyAJICogTWFrZSBzdXJlIHRoYXQgdGhlIGxvZyBzaXplIGlzIGEgbXVsdGlwbGUgb2YgdGhlIHN0cmlwZSB1bml0CitAQCAtOTEwLDcgKzkxMCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCisgCXhmc19tb3VudF90CSptcCwKKyAJaW50CQlsc2ZsYWcsCisgCXhmc19mc2Jsb2NrX3QJbG9nc3RhcnQsCistCV9fdWludDY0X3QJYWdzaXplLAorKwl1aW50NjRfdAlhZ3NpemUsCisgCWludAkJc3VuaXQsCisgCXhmc19yZnNibG9ja190CSpsb2dibG9ja3MsCisgCWludAkJYmxvY2tsb2csCitAQCAtOTM0LDcgKzkzNCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCisgfQorIAorIHZvaWQKKy12YWxpZGF0ZV9sb2dfc2l6ZShfX3VpbnQ2NF90IGxvZ2Jsb2NrcywgaW50IGJsb2NrbG9nLCBpbnQgbWluX2xvZ2Jsb2NrcykKKyt2YWxpZGF0ZV9sb2dfc2l6ZSh1aW50NjRfdCBsb2dibG9ja3MsIGludCBibG9ja2xvZywgaW50IG1pbl9sb2dibG9ja3MpCisgeworIAlpZiAobG9nYmxvY2tzIDwgbWluX2xvZ2Jsb2NrcykgeworIAkJZnByaW50ZihzdGRlcnIsCitAQCAtOTU5LDcgKzk1OSw3IEBAIHZhbGlkYXRlX2xvZ19zaXplKF9fdWludDY0X3QgbG9nYmxvY2tzLCBpbnQgYmxvY2tsb2csIGludCBtaW5fbG9nYmxvY2tzKQorIHN0YXRpYyBpbnQKKyBjYWxjX2RlZmF1bHRfaW1heHBjdCgKKyAJaW50CQlibG9ja2xvZywKKy0JX191aW50NjRfdAlkYmxvY2tzKQorKwl1aW50NjRfdAlkYmxvY2tzKQorIHsKKyAJLyoKKyAJICogVGhpcyByZXR1cm5zIHRoZSAlIG9mIHRoZSBkaXNrIHNwYWNlIHRoYXQgaXMgdXNlZCBmb3IKK0BAIC05ODEsOSArOTgxLDkgQEAgY2FsY19kZWZhdWx0X2ltYXhwY3QoCisgc3RhdGljIHZvaWQKKyB2YWxpZGF0ZV9hZ19nZW9tZXRyeSgKKyAJaW50CQlibG9ja2xvZywKKy0JX191aW50NjRfdAlkYmxvY2tzLAorLQlfX3VpbnQ2NF90CWFnc2l6ZSwKKy0JX191aW50NjRfdAlhZ2NvdW50KQorKwl1aW50NjRfdAlkYmxvY2tzLAorKwl1aW50NjRfdAlhZ3NpemUsCisrCXVpbnQ2NF90CWFnY291bnQpCisgeworIAlpZiAoYWdzaXplIDwgWEZTX0FHX01JTl9CTE9DS1MoYmxvY2tsb2cpKSB7CisgCQlmcHJpbnRmKHN0ZGVyciwKK0BAIC0xMDU5LDcgKzEwNTksNyBAQCB6ZXJvX29sZF94ZnNfc3RydWN0dXJlcygKKyB7CisgCXZvaWQgCQkJKmJ1ZjsKKyAJeGZzX3NiX3QgCQlzYjsKKy0JX191aW50MzJfdAkJYnNpemU7CisrCXVpbnQzMl90CQlic2l6ZTsKKyAJaW50CQkJaTsKKyAJeGZzX29mZl90CQlvZmY7CisgCitAQCAtMTExMiw4ICsxMTEyLDggQEAgemVyb19vbGRfeGZzX3N0cnVjdHVyZXMoCisgCQkJaSAhPSBzYi5zYl9ibG9ja2xvZykKKyAJCWdvdG8gZG9uZTsKKyAKKy0JaWYgKHNiLnNiX2RibG9ja3MgPiAoKF9fdWludDY0X3Qpc2Iuc2JfYWdjb3VudCAqIHNiLnNiX2FnYmxvY2tzKSB8fAorLQkJCXNiLnNiX2RibG9ja3MgPCAoKF9fdWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCisrCWlmIChzYi5zYl9kYmxvY2tzID4gKCh1aW50NjRfdClzYi5zYl9hZ2NvdW50ICogc2Iuc2JfYWdibG9ja3MpIHx8CisrCQkJc2Iuc2JfZGJsb2NrcyA8ICgodWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCisgCQkJCQkgc2Iuc2JfYWdibG9ja3MgKyBYRlNfTUlOX0FHX0JMT0NLUykpCisgCQlnb3RvIGRvbmU7CisgCitAQCAtMTEzMyw3ICsxMTMzLDcgQEAgZG9uZToKKyB9CisgCisgc3RhdGljIHZvaWQKKy1kaXNjYXJkX2Jsb2NrcyhkZXZfdCBkZXYsIF9fdWludDY0X3QgbnNlY3RvcnMpCisrZGlzY2FyZF9ibG9ja3MoZGV2X3QgZGV2LCB1aW50NjRfdCBuc2VjdG9ycykKKyB7CisgCWludCBmZDsKKyAKK0BAIC0xMzk1LDExICsxMzk1LDExIEBAIG1haW4oCisgCWludAkJCWFyZ2MsCisgCWNoYXIJCQkqKmFyZ3YpCisgeworLQlfX3VpbnQ2NF90CQlhZ2NvdW50OworKwl1aW50NjRfdAkJYWdjb3VudDsKKyAJeGZzX2FnZl90CQkqYWdmOworIAl4ZnNfYWdpX3QJCSphZ2k7CisgCXhmc19hZ251bWJlcl90CQlhZ25vOworLQlfX3VpbnQ2NF90CQlhZ3NpemU7CisrCXVpbnQ2NF90CQlhZ3NpemU7CisgCXhmc19hbGxvY19yZWNfdAkJKmFyZWM7CisgCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrOworIAlpbnQJCQlibGZsYWc7CitAQCAtMTQ3NSwxMCArMTQ3NSwxMCBAQCBtYWluKAorIAljaGFyCQkJKnJ0c2l6ZTsKKyAJeGZzX3NiX3QJCSpzYnA7CisgCWludAkJCXNlY3RvcmxvZzsKKy0JX191aW50NjRfdAkJc2VjdG9yX21hc2s7CisrCXVpbnQ2NF90CQlzZWN0b3JfbWFzazsKKyAJaW50CQkJc2xmbGFnOworIAlpbnQJCQlzc2ZsYWc7CistCV9fdWludDY0X3QJCXRtcF9hZ3NpemU7CisrCXVpbnQ2NF90CQl0bXBfYWdzaXplOworIAl1dWlkX3QJCQl1dWlkOworIAlpbnQJCQl3b3JzdF9mcmVlbGlzdDsKKyAJbGlieGZzX2luaXRfdAkJeGk7CitAQCAtMjE2Nyw3ICsyMTY3LDcgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7CisgCisgCisgCWlmIChkc2l6ZSkgeworLQkJX191aW50NjRfdCBkYnl0ZXM7CisrCQl1aW50NjRfdCBkYnl0ZXM7CisgCisgCQlkYnl0ZXMgPSBnZXRudW0oZHNpemUsICZkb3B0cywgRF9TSVpFKTsKKyAJCWlmIChkYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgeworQEAgLTIxOTksNyArMjE5OSw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOworIAl9CisgCisgCWlmIChsb2dzaXplKSB7CistCQlfX3VpbnQ2NF90IGxvZ2J5dGVzOworKwkJdWludDY0X3QgbG9nYnl0ZXM7CisgCisgCQlsb2dieXRlcyA9IGdldG51bShsb2dzaXplLCAmbG9wdHMsIExfU0laRSk7CisgCQlpZiAobG9nYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgeworQEAgLTIyMTYsNyArMjIxNiw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOworIAkJCQkobG9uZyBsb25nKShsb2dibG9ja3MgPDwgYmxvY2tsb2cpKTsKKyAJfQorIAlpZiAocnRzaXplKSB7CistCQlfX3VpbnQ2NF90IHJ0Ynl0ZXM7CisrCQl1aW50NjRfdCBydGJ5dGVzOworIAorIAkJcnRieXRlcyA9IGdldG51bShydHNpemUsICZyb3B0cywgUl9TSVpFKTsKKyAJCWlmIChydGJ5dGVzICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKK0BAIC0yMjM2LDcgKzIyMzYsNyBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKKyAJICogSWYgc3BlY2lmaWVkLCBjaGVjayBydCBleHRlbnQgc2l6ZSBhZ2FpbnN0IGl0cyBjb25zdHJhaW50cy4KKyAJICovCisgCWlmIChydGV4dHNpemUpIHsKKy0JCV9fdWludDY0X3QgcnRleHRieXRlczsKKysJCXVpbnQ2NF90IHJ0ZXh0Ynl0ZXM7CisgCisgCQlydGV4dGJ5dGVzID0gZ2V0bnVtKHJ0ZXh0c2l6ZSwgJnJvcHRzLCBSX0VYVFNJWkUpOworIAkJaWYgKHJ0ZXh0Ynl0ZXMgJSBibG9ja3NpemUpIHsKK0BAIC0yMjUyLDggKzIyNTIsOCBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKKyAJCSAqIGFuZCB0aGUgdW5kZXJseWluZyB2b2x1bWUgaXMgc3RyaXBlZCwgdGhlbiBzZXQgcnRleHRibG9ja3MKKyAJCSAqIHRvIHRoZSBzdHJpcGUgd2lkdGguCisgCQkgKi8KKy0JCV9fdWludDY0X3QJcnN3aWR0aDsKKy0JCV9fdWludDY0X3QJcnRleHRieXRlczsKKysJCXVpbnQ2NF90CXJzd2lkdGg7CisrCQl1aW50NjRfdAlydGV4dGJ5dGVzOworIAorIAkJaWYgKCFub3JzZmxhZyAmJiAheGkucmlzZmlsZSAmJiAhKCFydHNpemUgJiYgeGkuZGlzZmlsZSkpCisgCQkJcnN3aWR0aCA9IGZ0LnJ0c3dpZHRoOworQEAgLTIzMzUsMTAgKzIzMzUsMTAgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7CisgCSAqIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZSwgb3IgMTAyNCwgd2hpY2hldmVyIGlzIGxhcmdlci4KKyAJICovCisgCistCXNlY3Rvcl9tYXNrID0gKF9fdWludDY0X3QpLTEgPDwgKE1BWChzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOworKwlzZWN0b3JfbWFzayA9ICh1aW50NjRfdCktMSA8PCAoTUFYKHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7CisgCXhpLmRzaXplICY9IHNlY3Rvcl9tYXNrOworIAl4aS5ydHNpemUgJj0gc2VjdG9yX21hc2s7CistCXhpLmxvZ0JCc2l6ZSAmPSAoX191aW50NjRfdCktMSA8PCAoTUFYKGxzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOworKwl4aS5sb2dCQnNpemUgJj0gKHVpbnQ2NF90KS0xIDw8IChNQVgobHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7CisgCisgCisgCS8qIGRvbid0IGRvIGRpc2NhcmRzIG9uIHByaW50LW9ubHkgcnVucyBvciBvbiBmaWxlcyAqLworQEAgLTI2OTYsOSArMjY5Niw5IEBAIF8oInNpemUgJXMgc3BlY2lmaWVkIGZvciBsb2cgc3Vidm9sdW1lIGlzIHRvbyBsYXJnZSwgbWF4aW11bSBpcyAlbGxkIGJsb2Nrc1xuIiksCisgCW1wID0gJm1idWY7CisgCXNicCA9ICZtcC0+bV9zYjsKKyAJbWVtc2V0KG1wLCAwLCBzaXplb2YoeGZzX21vdW50X3QpKTsKKy0Jc2JwLT5zYl9ibG9ja2xvZyA9IChfX3VpbnQ4X3QpYmxvY2tsb2c7CistCXNicC0+c2Jfc2VjdGxvZyA9IChfX3VpbnQ4X3Qpc2VjdG9ybG9nOworLQlzYnAtPnNiX2FnYmxrbG9nID0gKF9fdWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKKysJc2JwLT5zYl9ibG9ja2xvZyA9ICh1aW50OF90KWJsb2NrbG9nOworKwlzYnAtPnNiX3NlY3Rsb2cgPSAodWludDhfdClzZWN0b3Jsb2c7CisrCXNicC0+c2JfYWdibGtsb2cgPSAodWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKKyAJc2JwLT5zYl9hZ2Jsb2NrcyA9ICh4ZnNfYWdibG9ja190KWFnc2l6ZTsKKyAJbXAtPm1fYmxrYmJfbG9nID0gc2JwLT5zYl9ibG9ja2xvZyAtIEJCU0hJRlQ7CisgCW1wLT5tX3NlY3RiYl9sb2cgPSBzYnAtPnNiX3NlY3Rsb2cgLSBCQlNISUZUOworQEAgLTI4MDUsMTQgKzI4MDUsMTQgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKKyAJc2JwLT5zYl9hZ2NvdW50ID0gKHhmc19hZ251bWJlcl90KWFnY291bnQ7CisgCXNicC0+c2JfcmJtYmxvY2tzID0gbmJtYmxvY2tzOworIAlzYnAtPnNiX2xvZ2Jsb2NrcyA9ICh4ZnNfZXh0bGVuX3QpbG9nYmxvY2tzOworLQlzYnAtPnNiX3NlY3RzaXplID0gKF9fdWludDE2X3Qpc2VjdG9yc2l6ZTsKKy0Jc2JwLT5zYl9pbm9kZXNpemUgPSAoX191aW50MTZfdClpc2l6ZTsKKy0Jc2JwLT5zYl9pbm9wYmxvY2sgPSAoX191aW50MTZfdCkoYmxvY2tzaXplIC8gaXNpemUpOworLQlzYnAtPnNiX3NlY3Rsb2cgPSAoX191aW50OF90KXNlY3RvcmxvZzsKKy0Jc2JwLT5zYl9pbm9kZWxvZyA9IChfX3VpbnQ4X3QpaW5vZGVsb2c7CistCXNicC0+c2JfaW5vcGJsb2cgPSAoX191aW50OF90KShibG9ja2xvZyAtIGlub2RlbG9nKTsKKysJc2JwLT5zYl9zZWN0c2l6ZSA9ICh1aW50MTZfdClzZWN0b3JzaXplOworKwlzYnAtPnNiX2lub2Rlc2l6ZSA9ICh1aW50MTZfdClpc2l6ZTsKKysJc2JwLT5zYl9pbm9wYmxvY2sgPSAodWludDE2X3QpKGJsb2Nrc2l6ZSAvIGlzaXplKTsKKysJc2JwLT5zYl9zZWN0bG9nID0gKHVpbnQ4X3Qpc2VjdG9ybG9nOworKwlzYnAtPnNiX2lub2RlbG9nID0gKHVpbnQ4X3QpaW5vZGVsb2c7CisrCXNicC0+c2JfaW5vcGJsb2cgPSAodWludDhfdCkoYmxvY2tsb2cgLSBpbm9kZWxvZyk7CisgCXNicC0+c2JfcmV4dHNsb2cgPQorLQkJKF9fdWludDhfdCkocnRleHRlbnRzID8KKysJCSh1aW50OF90KShydGV4dGVudHMgPworIAkJCWxpYnhmc19oaWdoYml0MzIoKHVuc2lnbmVkIGludClydGV4dGVudHMpIDogMCk7CisgCXNicC0+c2JfaW5wcm9ncmVzcyA9IDE7CS8qIG1rZnMgaXMgaW4gcHJvZ3Jlc3MgKi8KKyAJc2JwLT5zYl9pbWF4X3BjdCA9IGltYXhwY3Q7CitAQCAtMjg0MCw4ICsyODQwLDggQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKKyAJfSBlbHNlCisgCQlzYnAtPnNiX2lub2FsaWdubXQgPSAwOworIAlpZiAobHNlY3RvcnNpemUgIT0gQkJTSVpFIHx8IHNlY3RvcnNpemUgIT0gQkJTSVpFKSB7CistCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAoX191aW50OF90KWxzZWN0b3Jsb2c7CistCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gKF9fdWludDE2X3QpbHNlY3RvcnNpemU7CisrCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAodWludDhfdClsc2VjdG9ybG9nOworKwkJc2JwLT5zYl9sb2dzZWN0c2l6ZSA9ICh1aW50MTZfdClsc2VjdG9yc2l6ZTsKKyAJfSBlbHNlIHsKKyAJCXNicC0+c2JfbG9nc2VjdGxvZyA9IDA7CisgCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gMDsKK2RpZmYgLS1naXQgYS9xdW90YS9lZGl0LmMgYi9xdW90YS9lZGl0LmMKK2luZGV4IDM2YjMyN2E1Li44NDE4ZTg1OCAxMDA2NDQKKy0tLSBhL3F1b3RhL2VkaXQuYworKysrIGIvcXVvdGEvZWRpdC5jCitAQCAtMTE1LDE2ICsxMTUsMTYgQEAgd2Fybl9oZWxwKHZvaWQpCisgCisgc3RhdGljIHZvaWQKKyBzZXRfbGltaXRzKAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKyAJY2hhcgkJKmRldiwKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJZnNfZGlza19xdW90YV90CWQ7CisgCitAQCAtMTUyLDEyICsxNTIsMTIgQEAgc2V0X3VzZXJfbGltaXRzKAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJdWlkX3QJCXVpZCA9IHVpZF9mcm9tX3N0cmluZyhuYW1lKTsKKyAKK0BAIC0xNzUsMTIgKzE3NSwxMiBAQCBzZXRfZ3JvdXBfbGltaXRzKAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJZ2lkX3QJCWdpZCA9IGdpZF9mcm9tX3N0cmluZyhuYW1lKTsKKyAKK0BAIC0xOTgsMTIgKzE5OCwxMiBAQCBzZXRfcHJvamVjdF9saW1pdHMoCisgCWNoYXIJCSpuYW1lLAorIAl1aW50CQl0eXBlLAorIAl1aW50CQltYXNrLAorLQlfX3VpbnQ2NF90CSpic29mdCwKKy0JX191aW50NjRfdAkqYmhhcmQsCistCV9fdWludDY0X3QJKmlzb2Z0LAorLQlfX3VpbnQ2NF90CSppaGFyZCwKKy0JX191aW50NjRfdAkqcnRic29mdCwKKy0JX191aW50NjRfdAkqcnRiaGFyZCkKKysJdWludDY0X3QJKmJzb2Z0LAorKwl1aW50NjRfdAkqYmhhcmQsCisrCXVpbnQ2NF90CSppc29mdCwKKysJdWludDY0X3QJKmloYXJkLAorKwl1aW50NjRfdAkqcnRic29mdCwKKysJdWludDY0X3QJKnJ0YmhhcmQpCisgeworIAlwcmlkX3QJCXByaWQgPSBwcmlkX2Zyb21fc3RyaW5nKG5hbWUpOworIAorQEAgLTIyNCw3ICsyMjQsNyBAQCBleHRyYWN0YigKKyAJaW50CQlsZW5ndGgsCisgCXVpbnQJCWJsb2Nrc2l6ZSwKKyAJdWludAkJc2VjdG9yc2l6ZSwKKy0JX191aW50NjRfdAkqdmFsdWUpCisrCXVpbnQ2NF90CSp2YWx1ZSkKKyB7CisgCWxvbmcgbG9uZwl2OworIAljaGFyCQkqcyA9IHN0cmluZzsKK0BAIC0yMzgsNyArMjM4LDcgQEAgZXh0cmFjdGIoCisgCQkJCXByb2duYW1lLCBzKTsKKyAJCQlyZXR1cm4gMDsKKyAJCX0KKy0JCSp2YWx1ZSA9IChfX3VpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLworKwkJKnZhbHVlID0gKHVpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLworIAkJaWYgKHYgPiAwICYmICp2YWx1ZSA9PSAwKQorIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV2FybmluZzogYCVzJyBpbiBxdW90YSBibG9ja3MgaXMgMCAodW5saW1pdGVkKS5cbiIpLCBwcm9nbmFtZSwgcyk7CisgCQlyZXR1cm4gMTsKK0BAIC0yNTIsNyArMjUyLDcgQEAgZXh0cmFjdGkoCisgCWNoYXIJCSpzdHJpbmcsCisgCWNvbnN0IGNoYXIJKnByZWZpeCwKKyAJaW50CQlsZW5ndGgsCistCV9fdWludDY0X3QJKnZhbHVlKQorKwl1aW50NjRfdAkqdmFsdWUpCisgeworIAljaGFyCQkqc3AsICpzID0gc3RyaW5nOworIAorQEAgLTI3MCw3ICsyNzAsNyBAQCBsaW1pdF9mKAorIAljaGFyCQkqKmFyZ3YpCisgeworIAljaGFyCQkqbmFtZTsKKy0JX191aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKKysJdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7CisgCWludAkJYywgdHlwZSA9IDAsIG1hc2sgPSAwLCBmbGFncyA9IDA7CisgCXVpbnQJCWJzaXplLCBzc2l6ZSwgZW5kb3B0aW9uczsKKyAKK0BAIC0zODQsOCArMzg0LDggQEAgcmVzdG9yZV9maWxlKAorIAljaGFyCQkqZGV2ID0gTlVMTDsKKyAJdWludAkJbWFzazsKKyAJaW50CQljbnQ7CistCV9fdWludDMyX3QJaWQ7CistCV9fdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7CisrCXVpbnQzMl90CWlkOworKwl1aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKKyAKKyAJd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZwKSAhPSBOVUxMKSB7CisgCQlpZiAoc3RybmNtcCgiZnMgPSAiLCBidWZmZXIsIDUpID09IDApIHsKK0BAIC01NDYsNyArNTQ2LDcgQEAgdGltZXJfZigKKyAKKyBzdGF0aWMgdm9pZAorIHNldF93YXJuaW5ncygKKy0JX191aW50MzJfdAlpZCwKKysJdWludDMyX3QJaWQsCisgCXVpbnQJCXR5cGUsCisgCXVpbnQJCW1hc2ssCisgCWNoYXIJCSpkZXYsCitkaWZmIC0tZ2l0IGEvcXVvdGEvZnJlZS5jIGIvcXVvdGEvZnJlZS5jCitpbmRleCBjZWUxNWVlOS4uMWY4Mzc4ZDIgMTAwNjQ0CistLS0gYS9xdW90YS9mcmVlLmMKKysrKyBiL3F1b3RhL2ZyZWUuYworQEAgLTQ5LDIwICs0OSwyMCBAQCBmcmVlX2hlbHAodm9pZCkKKyBzdGF0aWMgaW50CisgbW91bnRfZnJlZV9zcGFjZV9kYXRhKAorIAlzdHJ1Y3QgZnNfcGF0aAkJKm1vdW50LAorLQlfX3VpbnQ2NF90CQkqYmNvdW50LAorLQlfX3VpbnQ2NF90CQkqYnVzZWQsCistCV9fdWludDY0X3QJCSpiZnJlZSwKKy0JX191aW50NjRfdAkJKmljb3VudCwKKy0JX191aW50NjRfdAkJKml1c2VkLAorLQlfX3VpbnQ2NF90CQkqaWZyZWUsCistCV9fdWludDY0X3QJCSpyY291bnQsCistCV9fdWludDY0X3QJCSpydXNlZCwKKy0JX191aW50NjRfdAkJKnJmcmVlKQorKwl1aW50NjRfdAkJKmJjb3VudCwKKysJdWludDY0X3QJCSpidXNlZCwKKysJdWludDY0X3QJCSpiZnJlZSwKKysJdWludDY0X3QJCSppY291bnQsCisrCXVpbnQ2NF90CQkqaXVzZWQsCisrCXVpbnQ2NF90CQkqaWZyZWUsCisrCXVpbnQ2NF90CQkqcmNvdW50LAorKwl1aW50NjRfdAkJKnJ1c2VkLAorKwl1aW50NjRfdAkJKnJmcmVlKQorIHsKKyAJc3RydWN0IHhmc19mc29wX2NvdW50cwlmc2NvdW50czsKKyAJc3RydWN0IHhmc19mc29wX2dlb20JZnNnZW87CisgCXN0cnVjdCBzdGF0ZnMJCXN0OworLQlfX3VpbnQ2NF90CQlsb2dzaXplLCBjb3VudCwgZnJlZTsKKysJdWludDY0X3QJCWxvZ3NpemUsIGNvdW50LCBmcmVlOworIAlpbnQJCQlmZDsKKyAKKyAJaWYgKChmZCA9IG9wZW4obW91bnQtPmZzX2RpciwgT19SRE9OTFkpKSA8IDApIHsKK0BAIC0xMzIsMTUgKzEzMiwxNSBAQCBtb3VudF9mcmVlX3NwYWNlX2RhdGEoCisgc3RhdGljIGludAorIHByb2plY3RzX2ZyZWVfc3BhY2VfZGF0YSgKKyAJc3RydWN0IGZzX3BhdGgJCSpwYXRoLAorLQlfX3VpbnQ2NF90CQkqYmNvdW50LAorLQlfX3VpbnQ2NF90CQkqYnVzZWQsCistCV9fdWludDY0X3QJCSpiZnJlZSwKKy0JX191aW50NjRfdAkJKmljb3VudCwKKy0JX191aW50NjRfdAkJKml1c2VkLAorLQlfX3VpbnQ2NF90CQkqaWZyZWUsCistCV9fdWludDY0X3QJCSpyY291bnQsCistCV9fdWludDY0X3QJCSpydXNlZCwKKy0JX191aW50NjRfdAkJKnJmcmVlKQorKwl1aW50NjRfdAkJKmJjb3VudCwKKysJdWludDY0X3QJCSpidXNlZCwKKysJdWludDY0X3QJCSpiZnJlZSwKKysJdWludDY0X3QJCSppY291bnQsCisrCXVpbnQ2NF90CQkqaXVzZWQsCisrCXVpbnQ2NF90CQkqaWZyZWUsCisrCXVpbnQ2NF90CQkqcmNvdW50LAorKwl1aW50NjRfdAkJKnJ1c2VkLAorKwl1aW50NjRfdAkJKnJmcmVlKQorIHsKKyAJZnNfcXVvdGFfc3RhdF90CQlxZnM7CisgCWZzX2Rpc2tfcXVvdGFfdAkJZDsKK0BAIC0yMjYsOSArMjI2LDkgQEAgZnJlZV9zcGFjZSgKKyAJZnNfcGF0aF90CSpwYXRoLAorIAl1aW50CQlmbGFncykKKyB7CistCV9fdWludDY0X3QJYmNvdW50LCBidXNlZCwgYmZyZWU7CistCV9fdWludDY0X3QJaWNvdW50LCBpdXNlZCwgaWZyZWU7CistCV9fdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7CisrCXVpbnQ2NF90CWJjb3VudCwgYnVzZWQsIGJmcmVlOworKwl1aW50NjRfdAlpY291bnQsIGl1c2VkLCBpZnJlZTsKKysJdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7CisgCWNoYXIJCWFbOF0sIHNbOF0sIHVbOF0sIHBbOF07CisgCWludAkJY291bnQ7CisgCitkaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdC5jIGIvcXVvdGEvcXVvdC5jCitpbmRleCBjY2MxNTRmNS4uNjM3OGZiYjcgMTAwNjQ0CistLS0gYS9xdW90YS9xdW90LmMKKysrKyBiL3F1b3RhL3F1b3QuYworQEAgLTI2LDE3ICsyNiwxNyBAQAorIAorIHR5cGVkZWYgc3RydWN0IGR1IHsKKyAJc3RydWN0IGR1CSpuZXh0OworLQlfX3VpbnQ2NF90CWJsb2NrczsKKy0JX191aW50NjRfdAlibG9ja3MzMDsKKy0JX191aW50NjRfdAlibG9ja3M2MDsKKy0JX191aW50NjRfdAlibG9ja3M5MDsKKy0JX191aW50NjRfdAluZmlsZXM7CistCV9fdWludDMyX3QJaWQ7CisrCXVpbnQ2NF90CWJsb2NrczsKKysJdWludDY0X3QJYmxvY2tzMzA7CisrCXVpbnQ2NF90CWJsb2NrczYwOworKwl1aW50NjRfdAlibG9ja3M5MDsKKysJdWludDY0X3QJbmZpbGVzOworKwl1aW50MzJfdAlpZDsKKyB9IGR1X3Q7CisgCisgI2RlZmluZQlUU0laRQkJNTAwCistc3RhdGljIF9fdWludDY0X3QJc2l6ZXNbVFNJWkVdOworLXN0YXRpYyBfX3VpbnQ2NF90CW92ZXJmbG93OworK3N0YXRpYyB1aW50NjRfdAlzaXplc1tUU0laRV07Cisrc3RhdGljIHVpbnQ2NF90CW92ZXJmbG93OworIAorICNkZWZpbmUJTkRVCQk2MDAwMAorICNkZWZpbmUJRFVIQVNICQk4MjA5CitAQCAtODQsOCArODQsOCBAQCBxdW90X2J1bGtzdGF0X2FkZCgKKyB7CisgCWR1X3QJCSpkcDsKKyAJZHVfdAkJKipocDsKKy0JX191aW50NjRfdAlzaXplOworLQlfX3VpbnQzMl90CWksIGlkOworKwl1aW50NjRfdAlzaXplOworKwl1aW50MzJfdAlpLCBpZDsKKyAKKyAJaWYgKChwLT5ic19tb2RlICYgU19JRk1UKSA9PSAwKQorIAkJcmV0dXJuOworQEAgLTIwMyw3ICsyMDMsNyBAQCBxY29tcGFyZSgKKyAJcmV0dXJuIDA7CisgfQorIAorLXR5cGVkZWYgY2hhciAqKCppZHRvbmFtZV90KShfX3VpbnQzMl90KTsKKyt0eXBlZGVmIGNoYXIgKigqaWR0b25hbWVfdCkodWludDMyX3QpOworIAorIHN0YXRpYyB2b2lkCisgcXVvdF9yZXBvcnRfbW91bnRfYW55X3R5cGUoCitAQCAtMjkxLDcgKzI5MSw3IEBAIHF1b3RfaGlzdG9ncmFtX21vdW50KAorIAlmc19wYXRoX3QJKm1vdW50LAorIAl1aW50CQlmbGFncykKKyB7CistCV9fdWludDY0X3QJdCA9IDA7CisrCXVpbnQ2NF90CXQgPSAwOworIAlpbnQJCWk7CisgCisgCWZwcmludGYoZnAsIF8oIiVzICglcyk6XG4iKSwgbW91bnQtPmZzX25hbWUsIG1vdW50LT5mc19kaXIpOworZGlmZiAtLWdpdCBhL3F1b3RhL3F1b3RhLmMgYi9xdW90YS9xdW90YS5jCitpbmRleCBkMDllMjM5Yi4uNDc5Yjk3MGUgMTAwNjQ0CistLS0gYS9xdW90YS9xdW90YS5jCisrKysgYi9xdW90YS9xdW90YS5jCitAQCAtNTIsNyArNTIsNyBAQCBxdW90YV9oZWxwKHZvaWQpCisgc3RhdGljIGludAorIHF1b3RhX21vdW50KAorIAlGSUxFCQkqZnAsCistCV9fdWludDMyX3QJaWQsCisrCXVpbnQzMl90CWlkLAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJZm9ybSwKKyAJdWludAkJdHlwZSwKK0BAIC0xODEsNyArMTgxLDcgQEAgcXVvdGFfbW91bnQoCisgc3RhdGljIHZvaWQKKyBxdW90YSgKKyAJRklMRQkJKmZwLAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJY2hhcgkJKm5hbWUsCisgCXVpbnQJCWZvcm0sCisgCXVpbnQJCXR5cGUsCitkaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdGEuaCBiL3F1b3RhL3F1b3RhLmgKK2luZGV4IDRiZGUzNTEzLi45ZWQyOGJlZSAxMDA2NDQKKy0tLSBhL3F1b3RhL3F1b3RhLmgKKysrKyBiL3F1b3RhL3F1b3RhLmgKK0BAIC01Myw5ICs1Myw5IEBAIGVudW0geworIGV4dGVybiBjaGFyICp0eXBlX3RvX3N0cmluZyh1aW50IF9fdHlwZSk7CisgZXh0ZXJuIGNoYXIgKmZvcm1fdG9fc3RyaW5nKHVpbnQgX19mb3JtKTsKKyBleHRlcm4gY2hhciAqdGltZV90b19zdHJpbmcodGltZV90IF9fdGltZSwgdWludCBfX2ZsYWdzKTsKKy1leHRlcm4gY2hhciAqYmJzX3RvX3N0cmluZyhfX3VpbnQ2NF90IF9fdiwgY2hhciAqX19jLCB1aW50IF9fc2l6ZSk7CistZXh0ZXJuIGNoYXIgKm51bV90b19zdHJpbmcoX191aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOworLWV4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKF9fdWludDY0X3QgX192LCBfX3VpbnQ2NF90IF9fdCwgY2hhciAqX19jLCB1aW50IF9fcyk7CisrZXh0ZXJuIGNoYXIgKmJic190b19zdHJpbmcodWludDY0X3QgX192LCBjaGFyICpfX2MsIHVpbnQgX19zaXplKTsKKytleHRlcm4gY2hhciAqbnVtX3RvX3N0cmluZyh1aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOworK2V4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKHVpbnQ2NF90IF9fdiwgdWludDY0X3QgX190LCBjaGFyICpfX2MsIHVpbnQgX19zKTsKKyAKKyBleHRlcm4gRklMRSAqZm9wZW5fd3JpdGVfc2VjdXJlKGNoYXIgKl9fZmlsZW5hbWUpOworIAorQEAgLTgxLDcgKzgxLDcgQEAgZW51bSB7CisgICogSWRlbnRpZmllciAodWlkL2dpZC9wcmlkKSBjYWNoZSByb3V0aW5lcworICAqLworICNkZWZpbmUgTk1BWCAzMgorLWV4dGVybiBjaGFyICp1aWRfdG9fbmFtZShfX3VpbnQzMl90IF9fdWlkKTsKKy1leHRlcm4gY2hhciAqZ2lkX3RvX25hbWUoX191aW50MzJfdCBfX2dpZCk7CistZXh0ZXJuIGNoYXIgKnByaWRfdG9fbmFtZShfX3VpbnQzMl90IF9fcHJpZCk7CisrZXh0ZXJuIGNoYXIgKnVpZF90b19uYW1lKHVpbnQzMl90IF9fdWlkKTsKKytleHRlcm4gY2hhciAqZ2lkX3RvX25hbWUodWludDMyX3QgX19naWQpOworK2V4dGVybiBjaGFyICpwcmlkX3RvX25hbWUodWludDMyX3QgX19wcmlkKTsKKyBleHRlcm4gYm9vbCBpc2RpZ2l0c19vbmx5KGNvbnN0IGNoYXIgKik7CitkaWZmIC0tZ2l0IGEvcXVvdGEvcmVwb3J0LmMgYi9xdW90YS9yZXBvcnQuYworaW5kZXggZDA1MDljMjUuLmIyZWEzYmJlIDEwMDY0NAorLS0tIGEvcXVvdGEvcmVwb3J0LmMKKysrKyBiL3F1b3RhL3JlcG9ydC5jCitAQCAtMzMzLDkgKzMzMyw5IEBAIHJlcG9ydF9oZWFkZXIoCisgc3RhdGljIGludAorIHJlcG9ydF9tb3VudCgKKyAJRklMRQkJKmZwLAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJY2hhcgkJKm5hbWUsCistCV9fdWludDMyX3QJKm9pZCwKKysJdWludDMyX3QJKm9pZCwKKyAJdWludAkJZm9ybSwKKyAJdWludAkJdHlwZSwKKyAJZnNfcGF0aF90CSptb3VudCwKK2RpZmYgLS1naXQgYS9xdW90YS9zdGF0ZS5jIGIvcXVvdGEvc3RhdGUuYworaW5kZXggMDlkZmE3MDUuLmIwOGJmNTBiIDEwMDY0NAorLS0tIGEvcXVvdGEvc3RhdGUuYworKysrIGIvcXVvdGEvc3RhdGUuYworQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZAorIHN0YXRlX3RpbWVsaW1pdCgKKyAJRklMRQkJKmZwLAorIAl1aW50CQlmb3JtLAorLQlfX3VpbnQzMl90CXRpbWVsaW1pdCkKKysJdWludDMyX3QJdGltZWxpbWl0KQorIHsKKyAJZnByaW50ZihmcCwgXygiJXMgZ3JhY2UgdGltZTogJXNcbiIpLAorIAkJZm9ybV90b19zdHJpbmcoZm9ybSksCitkaWZmIC0tZ2l0IGEvcXVvdGEvdXRpbC5jIGIvcXVvdGEvdXRpbC5jCitpbmRleCBjYWZkNDVmNS4uMzc4NDBhODYgMTAwNjQ0CistLS0gYS9xdW90YS91dGlsLmMKKysrKyBiL3F1b3RhL3V0aWwuYworQEAgLTk0LDggKzk0LDggQEAgcm91bmRfc25wcmludGYoCisgCXNpemVfdAkJc2l6ZSwKKyAJY29uc3QgY2hhcgkqZm10X3JvdW5kLAorIAljb25zdCBjaGFyCSpmbXRfbm90X3JvdW5kLAorLQlfX3VpbnQ2NF90CXZhbHVlLAorLQlfX3VpbnQ2NF90CWRpdmlzb3IpCisrCXVpbnQ2NF90CXZhbHVlLAorKwl1aW50NjRfdAlkaXZpc29yKQorIHsKKyAJZG91YmxlCQl2ID0gKGRvdWJsZSl2YWx1ZSAvIGRpdmlzb3I7CisgCitAQCAtMTA3LDIzICsxMDcsMjMgQEAgcm91bmRfc25wcmludGYoCisgfQorIAorIC8qIEJhc2ljIGJsb2NrcyAoNTEyKSBieXRlcyBhcmUgcmV0dXJuZWQgZnJvbSBxdW90YWN0bCAqLworLSNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj41MSkKKy0jZGVmaW5lIEJCU19UT19QRVRBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjQxKQorLSNkZWZpbmUgQkJTX1RPX1RFUkFCWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MzEpCistI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj4yMSkKKy0jZGVmaW5lIEJCU19UT19NRUdBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjExKQorLSNkZWZpbmUgQkJTX1RPX0tJTE9CWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MSkKKy0KKy0jZGVmaW5lIEJCRVhBQllURQkJKChfX3VpbnQ2NF90KTE8PDUxKQorLSNkZWZpbmUgQkJQRVRBQllURQkJKChfX3VpbnQ2NF90KTE8PDQxKQorLSNkZWZpbmUgQkJURVJBQllURQkJKChfX3VpbnQ2NF90KTE8PDMxKQorLSNkZWZpbmUgQkJHSUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDIxKQorLSNkZWZpbmUgQkJNRUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDExKQorLSNkZWZpbmUgQkJLSUxPQllURQkJKChfX3VpbnQ2NF90KTE8PCAxKQorKyNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NTEpCisrI2RlZmluZSBCQlNfVE9fUEVUQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NDEpCisrI2RlZmluZSBCQlNfVE9fVEVSQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MzEpCisrI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MjEpCisrI2RlZmluZSBCQlNfVE9fTUVHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MTEpCisrI2RlZmluZSBCQlNfVE9fS0lMT0JZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MSkKKysKKysjZGVmaW5lIEJCRVhBQllURQkJKCh1aW50NjRfdCkxPDw1MSkKKysjZGVmaW5lIEJCUEVUQUJZVEUJCSgodWludDY0X3QpMTw8NDEpCisrI2RlZmluZSBCQlRFUkFCWVRFCQkoKHVpbnQ2NF90KTE8PDMxKQorKyNkZWZpbmUgQkJHSUdBQllURQkJKCh1aW50NjRfdCkxPDwyMSkKKysjZGVmaW5lIEJCTUVHQUJZVEUJCSgodWludDY0X3QpMTw8MTEpCisrI2RlZmluZSBCQktJTE9CWVRFCQkoKHVpbnQ2NF90KTE8PCAxKQorIAorIGNoYXIgKgorIGJic190b19zdHJpbmcoCistCV9fdWludDY0X3QJdiwKKysJdWludDY0X3QJdiwKKyAJY2hhcgkJKnNwLAorIAl1aW50CQlzaXplKQorIHsKK0BAIC0xNDYsMTcgKzE0NiwxNyBAQCBiYnNfdG9fc3RyaW5nKAorIAlyZXR1cm4gc3A7CisgfQorIAorLSNkZWZpbmUgVEhPVVNBTkQJCSgoX191aW50NjRfdCkxMDAwKQorLSNkZWZpbmUgTUlMTElPTgkJCSgoX191aW50NjRfdCkxMDAwKjEwMDApCistI2RlZmluZSBCSUxMSU9OCQkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgVFJJTExJT04JCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgR0FaSUxMSU9OCQkoKF9fdWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgUklESUNVTE9VUwkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgU1RPUEFMUkVBRFkJCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgVEhPVVNBTkQJCSgodWludDY0X3QpMTAwMCkKKysjZGVmaW5lIE1JTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCkKKysjZGVmaW5lIEJJTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgVFJJTExJT04JCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCkKKysjZGVmaW5lIEdBWklMTElPTgkJKCh1aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDApCisrI2RlZmluZSBSSURJQ1VMT1VTCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgU1RPUEFMUkVBRFkJCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCkKKyAKKyBjaGFyICoKKyBudW1fdG9fc3RyaW5nKAorLQlfX3VpbnQ2NF90CXYsCisrCXVpbnQ2NF90CXYsCisgCWNoYXIJCSpzcCwKKyAJdWludAkJc2l6ZSkKKyB7CitAQCAtMTgzLDggKzE4Myw4IEBAIG51bV90b19zdHJpbmcoCisgCisgY2hhciAqCisgcGN0X3RvX3N0cmluZygKKy0JX191aW50NjRfdAlwb3J0aW9uLAorLQlfX3VpbnQ2NF90CXdob2xlLAorKwl1aW50NjRfdAlwb3J0aW9uLAorKwl1aW50NjRfdAl3aG9sZSwKKyAJY2hhcgkJKmJ1ZiwKKyAJdWludAkJc2l6ZSkKKyB7CitAQCAtMjM3LDcgKzIzNyw3IEBAIHR5cGVfdG9fc3RyaW5nKAorICNkZWZpbmUgSURNQVNLCQkoTklELTEpCisgCisgdHlwZWRlZiBzdHJ1Y3QgeworLQlfX3VpbnQzMl90CWlkOworKwl1aW50MzJfdAlpZDsKKyAJY2hhcgkJbmFtZVtOTUFYKzFdOworIH0gaWRjYWNoZV90OworIAorQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgaW50CQlwZW50cmllc2xlZnQgPSBOSUQ7CisgCisgc3RhdGljIGlkY2FjaGVfdCAqCisgZ2V0bmV4dHB3ZW50KAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJaW50CQlieWlkKQorIHsKKyAJc3RydWN0IHBhc3N3ZAkqcHc7CitAQCAtMjY2LDcgKzI2Niw3IEBAIGdldG5leHRwd2VudCgKKyAKKyBzdGF0aWMgaWRjYWNoZV90ICoKKyBnZXRuZXh0Z3JlbnQoCistCV9fdWludDMyX3QJaWQsCisrCXVpbnQzMl90CWlkLAorIAlpbnQJCWJ5aWQpCisgeworIAlzdHJ1Y3QgZ3JvdXAJKmdyOworQEAgLTI4MSw3ICsyODEsNyBAQCBnZXRuZXh0Z3JlbnQoCisgCisgc3RhdGljIGlkY2FjaGVfdCAqCisgZ2V0bmV4dHByZW50KAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJaW50CQlieWlkKQorIHsKKyAJZnNfcHJvamVjdF90CSpwcjsKK0BAIC0yOTYsNyArMjk2LDcgQEAgZ2V0bmV4dHByZW50KAorIAorIGNoYXIgKgorIHVpZF90b19uYW1lKAorLQlfX3VpbnQzMl90CWlkKQorKwl1aW50MzJfdAlpZCkKKyB7CisgCWlkY2FjaGVfdAkqbmNwLCAqaWRwOworIAorQEAgLTMzMyw3ICszMzMsNyBAQCB1aWRfdG9fbmFtZSgKKyAKKyBjaGFyICoKKyBnaWRfdG9fbmFtZSgKKy0JX191aW50MzJfdAlpZCkKKysJdWludDMyX3QJaWQpCisgeworIAlpZGNhY2hlX3QJKm5jcCwgKmlkcDsKKyAKK0BAIC0zNzAsNyArMzcwLDcgQEAgZ2lkX3RvX25hbWUoCisgCisgY2hhciAqCisgcHJpZF90b19uYW1lKAorLQlfX3VpbnQzMl90CWlkKQorKwl1aW50MzJfdAlpZCkKKyB7CisgCWlkY2FjaGVfdAkqbmNwLCAqaWRwOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9SRUFETUUgYi9yZXBhaXIvUkVBRE1FCitpbmRleCA3ZjE2OGU2OS4uNDY5MjQ2M2QgMTAwNjQ0CistLS0gYS9yZXBhaXIvUkVBRE1FCisrKysgYi9yZXBhaXIvUkVBRE1FCitAQCAtMTg5LDcgKzE4OSw3IEBAIEQgLSAwKSBsb29rIGF0IHVzYWdlIG9mIFhGU19NQUtFX0lQVFIoKS4gIEl0IGRvZXMgdGhlIHJpZ2h0CisgCisgCisgRCAtIDApIGxvb2sgYXQgcmVmZXJlbmNlcyB0byBYRlNfSU5PREVTX1BFUl9DSFVOSy4gIGNoYW5nZSB0aGUKKy0Jb25lcyB0aGF0IHJlYWxseSBtZWFuIHNpemVvZihfX3VpbnQ2NF90KSpOQkJZIHRvCisrCW9uZXMgdGhhdCByZWFsbHkgbWVhbiBzaXplb2YodWludDY0X3QpKk5CQlkgdG8KKyAJc29tZXRoaW5nIGVsc2UgKGxpa2UgdGhhdCBvbmx5IGRlZmluZWQgYXMgYSBjb25zdGFudAorIAlJTk9TX1BFUl9JUkVDLiB0aGlzIGlzbid0IGFzIGltcG9ydGFudCBzaW5jZQorIAlYRlNfSU5PREVTX1BFUl9DSFVOSyB3aWxsIG5ldmVyIGNoYW5nCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2FnaGVhZGVyLmggYi9yZXBhaXIvYWdoZWFkZXIuaAoraW5kZXggNmIyOTc0Y2EuLjJmNzI0NmQyIDEwMDY0NAorLS0tIGEvcmVwYWlyL2FnaGVhZGVyLmgKKysrKyBiL3JlcGFpci9hZ2hlYWRlci5oCitAQCAtMjAsNyArMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAkvKgorIAkgKiB0aGVzZSB0eXBlcyBzaG91bGQgbWF0Y2ggdGhlIHN1cGVyYmxvY2sgdHlwZXMKKyAJICovCistCV9fdWludDMyX3QJc2JfYmxvY2tzaXplOwkvKiBibG9ja3NpemUgKGJ5dGVzKSAqLworKwl1aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGJsb2Nrc2l6ZSAoYnl0ZXMpICovCisgCXhmc19yZnNibG9ja190CXNiX2RibG9ja3M7CS8qICMgZGF0YSBibG9ja3MgKi8KKyAJeGZzX3Jmc2Jsb2NrX3QJc2JfcmJsb2NrczsJLyogIyByZWFsdGltZSBibG9ja3MgKi8KKyAJeGZzX3J0YmxvY2tfdAlzYl9yZXh0ZW50czsJLyogIyByZWFsdGltZSBleHRlbnRzICovCitAQCAtMzAsOSArMzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAl4ZnNfYWdudW1iZXJfdAlzYl9hZ2NvdW50OwkvKiAjIG9mIGFncyAqLworIAl4ZnNfZXh0bGVuX3QJc2JfcmJtYmxvY2tzOwkvKiAjIG9mIHJ0IGJpdG1hcCBibG9ja3MgKi8KKyAJeGZzX2V4dGxlbl90CXNiX2xvZ2Jsb2NrczsJLyogIyBvZiBsb2cgYmxvY2tzICovCistCV9fdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCistCV9fdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplIChieXRlcykgKi8KKy0JX191aW50OF90CXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KKysJdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCisrCXVpbnQxNl90CXNiX2lub2Rlc2l6ZTsJLyogaW5vZGUgc2l6ZSAoYnl0ZXMpICovCisrCXVpbnQ4X3QJCXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KKyAKKyAJLyoKKyAJICogdGhlc2UgZG9uJ3QgaGF2ZSB0byBtYXRjaCB0aGUgc3VwZXJibG9jayB0eXBlcyBidXQgYXJlIHBsYWNlZAorQEAgLTQ5LDEwICs0OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAkvKgorIAkgKiBmaWVsZHMgYWZ0ZXIgdGhpcyBwb2ludCBoYXZlIHRvIGJlIGNoZWNrZWQgbWFudWFsbHkgaW4gY29tcGFyZV9zYigpCisgCSAqLworLQlfX3VpbnQ4X3QJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KKysJdWludDhfdAkJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KKyAJeGZzX2V4dGxlbl90CXNiX2lub2FsaWdubXQ7CS8qIGlub2RlIGNodW5rIGFsaWdubWVudCwgZnNibG9ja3MgKi8KKy0JX191aW50MzJfdAlzYl91bml0OwkvKiBzdHJpcGUgb3IgcmFpZCB1bml0ICovCistCV9fdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCisrCXVpbnQzMl90CXNiX3VuaXQ7CS8qIHN0cmlwZSBvciByYWlkIHVuaXQgKi8KKysJdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCisgCisgCS8qCisgCSAqIHRoZXNlIGRvbid0IGhhdmUgdG8gbWF0Y2gsIHRoZXkgdHJhY2sgc3VwZXJibG9jayBwcm9wZXJ0aWVzCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2F0dHJfcmVwYWlyLmggYi9yZXBhaXIvYXR0cl9yZXBhaXIuaAoraW5kZXggNzAxMGU0ZmYuLjI5NGZhZDQ0IDEwMDY0NAorLS0tIGEvcmVwYWlyL2F0dHJfcmVwYWlyLmgKKysrKyBiL3JlcGFpci9hdHRyX3JlcGFpci5oCitAQCAtMzIsMTAgKzMyLDEwIEBACisgI2RlZmluZSBBQ0xfV1JJVEUJMDIKKyAjZGVmaW5lIEFDTF9FWEVDVVRFCTAxCisgCistdHlwZWRlZiBfX3VpbnQxNl90CXhmc19hY2xfcGVybV90OworLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdHlwZV90OworLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdGFnX3Q7CistdHlwZWRlZiBfX2ludDMyX3QJeGZzX2FjbF9pZF90OworK3R5cGVkZWYgdWludDE2X3QJeGZzX2FjbF9wZXJtX3Q7CisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX3R5cGVfdDsKKyt0eXBlZGVmIGludDMyX3QJCXhmc19hY2xfdGFnX3Q7CisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX2lkX3Q7CisgCisgLyoKKyAgKiAiaWNhY2wiID0gaW4tY29yZSBBQ0wuIFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgaW4gdGhlIFhGUyBrZXJuZWwgY29kZSwKK0BAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCB4ZnNfaWNhY2xfZW50cnkgeworIH07CisgCisgc3RydWN0IHhmc19pY2FjbCB7CistCV9faW50MzJfdAkJYWNsX2NudDsKKysJaW50MzJfdAkJCWFjbF9jbnQ7CisgCXN0cnVjdCB4ZnNfaWNhY2xfZW50cnkJYWNsX2VudHJ5WzBdOworIH07CisgCitAQCAtNTksMTQgKzU5LDE0IEBAIHN0cnVjdCB4ZnNfaWNhY2wgeworICAqLworICNkZWZpbmUgWEZTX01BQ19NQVhfU0VUUwkyNTAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKKy0JX191aW50OF90ICAgICAgIG1sX21zZW5fdHlwZTsJLyogTVNFTiBsYWJlbCB0eXBlICovCistCV9fdWludDhfdCAgICAgICBtbF9taW50X3R5cGU7CS8qIE1JTlQgbGFiZWwgdHlwZSAqLworLQlfX3VpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLworLQlfX3VpbnQ4X3QgICAgICAgbWxfZ3JhZGU7CS8qIEhpZXJhcmNoaWNhbCBncmFkZSAqLworLQlfX3VpbnQxNl90ICAgICAgbWxfY2F0Y291bnQ7CS8qIENhdGVnb3J5IGNvdW50ICovCistCV9fdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KKysJdWludDhfdCAgICAgICBtbF9tc2VuX3R5cGU7CS8qIE1TRU4gbGFiZWwgdHlwZSAqLworKwl1aW50OF90ICAgICAgIG1sX21pbnRfdHlwZTsJLyogTUlOVCBsYWJlbCB0eXBlICovCisrCXVpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLworKwl1aW50OF90ICAgICAgIG1sX2dyYWRlOwkvKiBIaWVyYXJjaGljYWwgZ3JhZGUgKi8KKysJdWludDE2X3QgICAgICBtbF9jYXRjb3VudDsJLyogQ2F0ZWdvcnkgY291bnQgKi8KKysJdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KKyAJCQkJCS8qIENhdGVnb3J5IHNldCwgdGhlbiBEaXZpc2lvbiBzZXQgKi8KKy0JX191aW50MTZfdCAgICAgIG1sX2xpc3RbWEZTX01BQ19NQVhfU0VUU107CisrCXVpbnQxNl90ICAgICAgbWxfbGlzdFtYRlNfTUFDX01BWF9TRVRTXTsKKyB9IHhmc19tYWNfbGFiZWxfdDsKKyAKKyAvKiBNU0VOIGxhYmVsIHR5cGUgbmFtZXMuIENob29zZSBhbiB1cHBlciBjYXNlIEFTQ0lJIGNoYXJhY3Rlci4gICovCitAQCAtOTMsNyArOTMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKKyAvKgorICAqIENhcGFiaWxpdGllcyAoSVJJWCkKKyAgKi8KKy10eXBlZGVmIF9fdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OworK3R5cGVkZWYgdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19jYXBfc2V0IHsKKyAJeGZzX2NhcF92YWx1ZV90CWNhcF9lZmZlY3RpdmU7ICAvKiB1c2UgaW4gY2FwYWJpbGl0eSBjaGVja3MgKi8KK2RpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuYyBiL3JlcGFpci9hdmw2NC5jCitpbmRleCA1MWNkNjI0Yy4uOGY0YTEyMTEgMTAwNjQ0CistLS0gYS9yZXBhaXIvYXZsNjQuYworKysrIGIvcmVwYWlyL2F2bDY0LmMKK0BAIC03MCw4ICs3MCw4IEBAIGF2bDY0X2NoZWNrdHJlZSgKKyAJYXZsNjRub2RlX3QgKnJvb3QpCisgeworIAlhdmw2NG5vZGVfdCAqbmxhc3QsICpubmV4dCwgKm5wOworLQlfX3VpbnQ2NF90IG9mZnNldCA9IDA7CistCV9fdWludDY0X3QgZW5kOworKwl1aW50NjRfdCBvZmZzZXQgPSAwOworKwl1aW50NjRfdCBlbmQ7CisgCisgCW5sYXN0ID0gbm5leHQgPSByb290OworIAorQEAgLTU4Myw4ICs1ODMsOCBAQCBhdHRhY2g6CisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRhbnlyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCBzdGFydCwKKy0JX191aW50NjRfdCBlbmQsCisrCXVpbnQ2NF90IHN0YXJ0LAorKwl1aW50NjRfdCBlbmQsCisgCWludAljaGVja2xlbikKKyB7CisgCWF2bDY0bm9kZV90ICpucCA9IHRyZWUtPmF2bF9yb290OworQEAgLTY1NSw3ICs2NTUsNyBAQCBhdmw2NF9maW5kYW55cmFuZ2UoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSkKKysJdWludDY0X3QgdmFsdWUpCisgeworIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKKyAKK0BAIC02ODIsMTAgKzY4MiwxMCBAQCBhdmw2NF9maW5kcmFuZ2UoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmQoCisgCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCV9fdWludDY0X3QgdmFsdWUpCisrCXVpbnQ2NF90IHZhbHVlKQorIHsKKyAJYXZsNjRub2RlX3QgKm5wID0gdHJlZS0+YXZsX3Jvb3Q7CistCV9fdWludDY0X3QgbnZhbHVlOworKwl1aW50NjRfdCBudmFsdWU7CisgCisgCXdoaWxlIChucCkgeworIAkJbnZhbHVlID0gQVZMX1NUQVJUKHRyZWUsIG5wKTsKK0BAIC05MDksOCArOTA5LDggQEAgc3RhdGljCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2luc2VydF9maW5kX2dyb3d0aCgKKyAJCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCQlfX3VpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KKy0JCV9fdWludDY0X3QgZW5kLAkvKiBleGNsdXNpdmUgKi8KKysJCXVpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KKysJCXVpbnQ2NF90IGVuZCwJLyogZXhjbHVzaXZlICovCisgCQlpbnQgICAqZ3Jvd3RocCkJLyogT1VUICovCisgeworIAlhdmw2NG5vZGVfdCAqcm9vdCA9IHRyZWUtPmF2bF9yb290OworQEAgLTk2Myw3ICs5NjMsNyBAQCBhdmw2NF9pbnNlcnRfZ3JvdygKKyAJaW50IGdyb3d0aCkKKyB7CisgCWF2bDY0bm9kZV90ICpubmV4dDsKKy0JX191aW50NjRfdCBzdGFydCA9IEFWTF9TVEFSVCh0cmVlLCBuZXdub2RlKTsKKysJdWludDY0X3Qgc3RhcnQgPSBBVkxfU1RBUlQodHJlZSwgbmV3bm9kZSk7CisgCisgCWlmIChncm93dGggPT0gQVZMX0JBQ0spIHsKKyAKK0BAIC0xMDA1LDggKzEwMDUsOCBAQCBhdmw2NF9pbnNlcnQoCisgCWF2bDY0bm9kZV90ICpuZXdub2RlKQorIHsKKyAJYXZsNjRub2RlX3QgKm5wOworLQlfX3VpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOworLQlfX3VpbnQ2NF90IGVuZCA9IEFWTF9FTkQodHJlZSwgbmV3bm9kZSk7CisrCXVpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOworKwl1aW50NjRfdCBlbmQgPSBBVkxfRU5EKHRyZWUsIG5ld25vZGUpOworIAlpbnQgZ3Jvd3RoOworIAorIAlBU1NFUlQobmV3bm9kZSk7CitAQCAtMTE1OSwxNiArMTE1OSwxNiBAQCBhdmw2NG9wc190IGF2bF9kZWJ1Z19vcHMgPSB7CisgCWF2bF9kZWJ1Z19lbmQsCisgfQorIAorLXN0YXRpYyBfX3VpbnQ2NF90Cisrc3RhdGljIHVpbnQ2NF90CisgYXZsNjRfZGVidWdfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworLQlyZXR1cm4gKF9fdWludDY0X3QpKHN0cnVjdCBhdmxfZGVidWdfbm9kZSAqKW5vZGUtPmF2bF9zdGFydDsKKysJcmV0dXJuICh1aW50NjRfdCkoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0OworIH0KKyAKKy1zdGF0aWMgX191aW50NjRfdAorK3N0YXRpYyB1aW50NjRfdAorIGF2bDY0X2RlYnVnX2VuZChhdmw2NG5vZGVfdCAqbm9kZSkKKyB7CistCXJldHVybiAoX191aW50NjRfdCkKKysJcmV0dXJuICh1aW50NjRfdCkKKyAJCSgoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0ICsKKyAJCSAoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3NpemUpOworIH0KK0BAIC0xMzA0LDcgKzEzMDQsNyBAQCBtYWluKCkKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZGFkamFjZW50KAorIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAorLQlfX3VpbnQ2NF90IHZhbHVlLAorKwl1aW50NjRfdCB2YWx1ZSwKKyAJaW50CQlkaXIpCisgeworIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKK0BAIC0xMzc4LDggKzEzNzgsOCBAQCBhdmw2NF9maW5kYWRqYWNlbnQoCisgdm9pZAorIGF2bDY0X2ZpbmRyYW5nZXMoCisgCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCV9fdWludDY0X3Qgc3RhcnQsCistCV9fdWludDY0X3QgZW5kLAorKwl1aW50NjRfdCBzdGFydCwKKysJdWludDY0X3QgZW5kLAorIAlhdmw2NG5vZGVfdAkgICAgICAgICoqc3RhcnRwLAorIAlhdmw2NG5vZGVfdAkJKiplbmRwKQorIHsKK2RpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuaCBiL3JlcGFpci9hdmw2NC5oCitpbmRleCBmZDE5MzIxOC4uY2QwNzlhMDAgMTAwNjQ0CistLS0gYS9yZXBhaXIvYXZsNjQuaAorKysrIGIvcmVwYWlyL2F2bDY0LmgKK0BAIC0zMiw4ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0CWF2bDY0bm9kZSB7CisgICogYXZsLXRyZWUgb3BlcmF0aW9ucworICAqLworIHR5cGVkZWYgc3RydWN0IGF2bDY0b3BzIHsKKy0JX191aW50NjRfdAkoKmF2bF9zdGFydCkoYXZsNjRub2RlX3QgKik7CistCV9fdWludDY0X3QJKCphdmxfZW5kKShhdmw2NG5vZGVfdCAqKTsKKysJdWludDY0X3QJKCphdmxfc3RhcnQpKGF2bDY0bm9kZV90ICopOworKwl1aW50NjRfdAkoKmF2bF9lbmQpKGF2bDY0bm9kZV90ICopOworIH0gYXZsNjRvcHNfdDsKKyAKKyAvKgorQEAgLTg5LDMyICs4OSwzMiBAQCBhdmw2NF9pbml0X3RyZWUoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSk7CisrCXVpbnQ2NF90IHZhbHVlKTsKKyAKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZCgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSk7CisrCXVpbnQ2NF90IHZhbHVlKTsKKyAKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZGFueXJhbmdlKAorIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAorLQlfX3VpbnQ2NF90CXN0YXJ0LAorLQlfX3VpbnQ2NF90CWVuZCwKKysJdWludDY0X3QJc3RhcnQsCisrCXVpbnQ2NF90CWVuZCwKKyAJaW50ICAgICBjaGVja2xlbik7CisgCisgCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRhZGphY2VudCgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdAl2YWx1ZSwKKysJdWludDY0X3QJdmFsdWUsCisgCWludAkJZGlyKTsKKyAKKyB2b2lkCisgYXZsNjRfZmluZHJhbmdlcygKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdAlzdGFydCwKKy0JX191aW50NjRfdAllbmQsCisrCXVpbnQ2NF90CXN0YXJ0LAorKwl1aW50NjRfdAllbmQsCisgCWF2bDY0bm9kZV90CSAgICAgICAgKipzdGFydHAsCisgCWF2bDY0bm9kZV90CQkqKmVuZHApOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9kaW5vZGUuYyBiL3JlcGFpci9kaW5vZGUuYworaW5kZXggZDY2NGY4N2EuLmRhODcyMTc4IDEwMDY0NAorLS0tIGEvcmVwYWlyL2Rpbm9kZS5jCisrKysgYi9yZXBhaXIvZGlub2RlLmMKK0BAIC03NDYsNyArNzQ2LDcgQEAgXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGR1cCBleHRlbnQsICIKKyAJCQljYXNlIFhSX0VfRlJFRTE6CisgCQkJCWRvX3dhcm4oCisgXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGZyZWUgYmxvY2sgJSIgUFJJdTY0ICJcbiIpLAorLQkJCQkJZm9ya25hbWUsIGlubywgKF9fdWludDY0X3QpIGIpOworKwkJCQkJZm9ya25hbWUsIGlubywgKHVpbnQ2NF90KSBiKTsKKyAJCQkJLyogZmFsbCB0aHJvdWdoIC4uLiAqLworIAkJCWNhc2UgWFJfRV9JTlVTRTE6CS8qIHNlZW4gYnkgcm1hcCAqLworIAkJCWNhc2UgWFJfRV9VTktOT1dOOgorQEAgLTkyMyw3ICs5MjMsNyBAQCBwcm9jZXNzX2J0aW5vZGUoCisgCWludAkJCXR5cGUsCisgCWludAkJCSpkaXJ0eSwKKyAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCV9fdWludDY0X3QJCSpuZXgsCisrCXVpbnQ2NF90CQkqbmV4LAorIAlibGttYXBfdAkJKipibGttYXBwLAorIAlpbnQJCQl3aGljaGZvcmssCisgCWludAkJCWNoZWNrX2R1cHMpCitAQCAtOTM5LDcgKzkzOSw3IEBAIHByb2Nlc3NfYnRpbm9kZSgKKyAJaW50CQkJbGV2ZWw7CisgCWludAkJCW51bXJlY3M7CisgCWJtYXBfY3Vyc29yX3QJCWN1cnNvcjsKKy0JX191aW50NjRfdAkJbWFnaWM7CisrCXVpbnQ2NF90CQltYWdpYzsKKyAKKyAJZGliID0gKHhmc19ibWRyX2Jsb2NrX3QgKilYRlNfREZPUktfUFRSKGRpcCwgd2hpY2hmb3JrKTsKKyAJbGlubyA9IFhGU19BR0lOT19UT19JTk8obXAsIGFnbm8sIGlubyk7CitAQCAtMTA5OCw3ICsxMDk4LDcgQEAgcHJvY2Vzc19leGlub2RlKAorIAlpbnQJCQl0eXBlLAorIAlpbnQJCQkqZGlydHksCisgCXhmc19yZnNibG9ja190CQkqdG90LAorLQlfX3VpbnQ2NF90CQkqbmV4LAorKwl1aW50NjRfdAkJKm5leCwKKyAJYmxrbWFwX3QJCSoqYmxrbWFwcCwKKyAJaW50CQkJd2hpY2hmb3JrLAorIAlpbnQJCQljaGVja19kdXBzKQorQEAgLTEyMDAsMTQgKzEyMDAsMTQgQEAgcHJvY2Vzc19zeW1saW5rX2V4dGxpc3QoeGZzX21vdW50X3QgKm1wLCB4ZnNfaW5vX3QgbGlubywgeGZzX2Rpbm9kZV90ICpkaW5vKQorIAkJZG9fd2FybigKKyBfKCJtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCAoJWQpIGFuZCBzaXplICglIiBQUklkNjQgIikgaW4gc3ltbGluayBpbm8gJSIgUFJJdTY0ICJcbiIpLAorIAkJCWRpbm8tPmRpX2Zvcm1hdCwKKy0JCQkoX19pbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLCBsaW5vKTsKKysJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7CisgCQlyZXR1cm4gMTsKKyAJfQorIAlpZiAoZGluby0+ZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7CisgCQlkb193YXJuKAorIF8oIm1pc21hdGNoIGJldHdlZW4gZm9ybWF0ICglZCkgYW5kIHNpemUgKCUiIFBSSWQ2NCAiKSBpbiBzeW1saW5rIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKKyAJCQlkaW5vLT5kaV9mb3JtYXQsCistCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7CisrCQkJKGludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksIGxpbm8pOworIAkJcmV0dXJuIDE7CisgCX0KKyAKK0BAIC0xNDU0LDIyICsxNDU0LDIyIEBAIF8oImlub2RlICUiIFBSSXU2NCAiIGhhcyBiYWQgaW5vZGUgdHlwZSAoSUZNTlQpXG4iKSwgbGlubyk7CisgCQljYXNlIFhSX0lOT19DSFJERVY6CisgCQkJZG9fd2FybigKKyBfKCJzaXplIG9mIGNoYXJhY3RlciBkZXZpY2UgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWNhc2UgWFJfSU5PX0JMS0RFVjoKKyAJCQlkb193YXJuKAorIF8oInNpemUgb2YgYmxvY2sgZGV2aWNlIGlub2RlICUiIFBSSXU2NCAiICE9IDAgKCUiIFBSSWQ2NCAiIGJ5dGVzKVxuIiksIGxpbm8sCistCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSkpOworKwkJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisgCQkJYnJlYWs7CisgCQljYXNlIFhSX0lOT19TT0NLOgorIAkJCWRvX3dhcm4oCisgXygic2l6ZSBvZiBzb2NrZXQgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWNhc2UgWFJfSU5PX0ZJRk86CisgCQkJZG9fd2FybigKKyBfKCJzaXplIG9mIGZpZm8gaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJZG9fd2FybihfKCJJbnRlcm5hbCBlcnJvciAtIHByb2Nlc3NfbWlzY19pbm9fdHlwZXMsICIKK0BAIC0xNzQzLDEyICsxNzQzLDEyIEBAIF8oImZvdW5kIGlub2RlICUiIFBSSXU2NCAiIGNsYWltaW5nIHRvIGJlIGEgcmVhbC10aW1lIGZpbGVcbiIpLCBsaW5vKTsKKyAJCWJyZWFrOworIAorIAljYXNlIFhSX0lOT19SVEJJVE1BUDoKKy0JCWlmIChzaXplICE9IChfX2ludDY0X3QpbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKKysJCWlmIChzaXplICE9IChpbnQ2NF90KW1wLT5tX3NiLnNiX3JibWJsb2NrcyAqCisgCQkJCQltcC0+bV9zYi5zYl9ibG9ja3NpemUpIHsKKyAJCQlkb193YXJuKAorIF8oInJlYWx0aW1lIGJpdG1hcCBpbm9kZSAlIiBQUkl1NjQgIiBoYXMgYmFkIHNpemUgJSIgUFJJZDY0ICIgKHNob3VsZCBiZSAlIiBQUkl1NjQgIilcbiIpLAorIAkJCQlsaW5vLCBzaXplLAorLQkJCQkoX19pbnQ2NF90KSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKgorKwkJCQkoaW50NjRfdCkgbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKKyAJCQkJCW1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7CisgCQkJcmV0dXJuIDE7CisgCQl9CitAQCAtMTgxNyw4ICsxODE3LDggQEAgc3RhdGljIGludAorIHByb2Nlc3NfaW5vZGVfYmxvY2tzX2FuZF9leHRlbnRzKAorIAl4ZnNfZGlub2RlX3QJKmRpbm8sCisgCXhmc19yZnNibG9ja190CW5ibG9ja3MsCistCV9fdWludDY0X3QJbmV4dGVudHMsCistCV9fdWludDY0X3QJYW5leHRlbnRzLAorKwl1aW50NjRfdAluZXh0ZW50cywKKysJdWludDY0X3QJYW5leHRlbnRzLAorIAl4ZnNfaW5vX3QJbGlubywKKyAJaW50CQkqZGlydHkpCisgeworQEAgLTE5MDgsNyArMTkwOCw3IEBAIHByb2Nlc3NfaW5vZGVfZGF0YV9mb3JrKAorIAlpbnQJCXR5cGUsCisgCWludAkJKmRpcnR5LAorIAl4ZnNfcmZzYmxvY2tfdAkqdG90YmxvY2tzLAorLQlfX3VpbnQ2NF90CSpuZXh0ZW50cywKKysJdWludDY0X3QJKm5leHRlbnRzLAorIAlibGttYXBfdAkqKmRibGttYXAsCisgCWludAkJY2hlY2tfZHVwcykKKyB7CitAQCAtMjAxNyw3ICsyMDE3LDcgQEAgcHJvY2Vzc19pbm9kZV9hdHRyX2ZvcmsoCisgCWludAkJdHlwZSwKKyAJaW50CQkqZGlydHksCisgCXhmc19yZnNibG9ja190CSphdG90YmxvY2tzLAorLQlfX3VpbnQ2NF90CSphbmV4dGVudHMsCisrCXVpbnQ2NF90CSphbmV4dGVudHMsCisgCWludAkJY2hlY2tfZHVwcywKKyAJaW50CQlleHRyYV9hdHRyX2NoZWNrLAorIAlpbnQJCSpyZXR2YWwpCitAQCAtMjIyOCw4ICsyMjI4LDggQEAgcHJvY2Vzc19kaW5vZGVfaW50KHhmc19tb3VudF90ICptcCwKKyAJaW50CQkJZGlfbW9kZTsKKyAJaW50CQkJdHlwZTsKKyAJaW50CQkJcmV0dmFsID0gMDsKKy0JX191aW50NjRfdAkJbmV4dGVudHM7CistCV9fdWludDY0X3QJCWFuZXh0ZW50czsKKysJdWludDY0X3QJCW5leHRlbnRzOworKwl1aW50NjRfdAkJYW5leHRlbnRzOworIAl4ZnNfaW5vX3QJCWxpbm87CisgCWNvbnN0IGludAkJaXNfZnJlZSA9IDA7CisgCWNvbnN0IGludAkJaXNfdXNlZCA9IDE7CitAQCAtMjM0Niw3ICsyMzQ2LDcgQEAgXygiaW5vZGUgaWRlbnRpZmllciAlbGx1IG1pc21hdGNoIG9uIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKKyAJCWlmICghdW5jZXJ0YWluKQorIAkJCWRvX3dhcm4oCisgXygiYmFkIChuZWdhdGl2ZSkgc2l6ZSAlIiBQUklkNjQgIiBvbiBpbm9kZSAlIiBQUkl1NjQgIlxuIiksCistCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksCisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLAorIAkJCQlsaW5vKTsKKyAJCWlmICh2ZXJpZnlfbW9kZSkKKyAJCQlyZXR1cm4gMTsKK2RpZmYgLS1naXQgYS9yZXBhaXIvZGlub2RlLmggYi9yZXBhaXIvZGlub2RlLmgKK2luZGV4IDYxZDA3MzYzLi4zOWQ2YTcyZiAxMDA2NDQKKy0tLSBhL3JlcGFpci9kaW5vZGUuaAorKysrIGIvcmVwYWlyL2Rpbm9kZS5oCitAQCAtNDYsOCArNDYsOCBAQCBwcm9jZXNzX2JtYnRfcmVjbGlzdCh4ZnNfbW91bnRfdAkqbXAsCisgCQl4ZnNfaW5vX3QJCWlubywKKyAJCXhmc19yZnNibG9ja190CQkqdG90LAorIAkJc3RydWN0IGJsa21hcAkJKipibGttYXBwLAorLQkJX191aW50NjRfdAkJKmZpcnN0X2tleSwKKy0JCV9fdWludDY0X3QJCSpsYXN0X2tleSwKKysJCXVpbnQ2NF90CQkqZmlyc3Rfa2V5LAorKwkJdWludDY0X3QJCSpsYXN0X2tleSwKKyAJCWludAkJCXdoaWNoZm9yayk7CisgCisgaW50CitkaWZmIC0tZ2l0IGEvcmVwYWlyL2RpcjIuYyBiL3JlcGFpci9kaXIyLmMKK2luZGV4IGU2NDE1ZTQ5Li43M2RmZjkwMiAxMDA2NDQKKy0tLSBhL3JlcGFpci9kaXIyLmMKKysrKyBiL3JlcGFpci9kaXIyLmMKK0BAIC0xNjAsNyArMTYwLDcgQEAgcHJvY2Vzc19zZl9kaXIyKAorIAlpbnQJCQliYWRfc2ZuYW1lbGVuOworIAlpbnQJCQlpOworIAlpbnQJCQlpODsKKy0JX19pbnQ2NF90CQlpbm9fZGlyX3NpemU7CisrCWludDY0X3QJCQlpbm9fZGlyX3NpemU7CisgCWludAkJCWlub19vZmY7CisgCWlub190cmVlX25vZGVfdAkJKmlyZWNfcDsKKyAJaW50CQkJanVua2l0OworZGlmZiAtLWdpdCBhL3JlcGFpci9nbG9iYWxzLmggYi9yZXBhaXIvZ2xvYmFscy5oCitpbmRleCA0MDg1Y2NjNC4uYzdiYmU2ZjEgMTAwNjQ0CistLS0gYS9yZXBhaXIvZ2xvYmFscy5oCisrKysgYi9yZXBhaXIvZ2xvYmFscy5oCitAQCAtMTQxLDcgKzE0MSw3IEBAIEVYVEVSTiBpbnQJCWlub2Rlc19wZXJfY2x1c3RlcjsKKyBFWFRFUk4gdW5zaWduZWQgaW50CWdsb2JfYWdjb3VudDsKKyBFWFRFUk4gaW50CQljaHVua3NfcGJsb2NrOwkvKiAjIG9mIDY0LWlubyBjaHVua3MgcGVyIGFsbG9jYXRpb24gKi8KKyBFWFRFUk4gaW50CQltYXhfc3ltbGlua19ibG9ja3M7CistRVhURVJOIF9faW50NjRfdAlmc19tYXhfZmlsZV9vZmZzZXQ7CisrRVhURVJOIGludDY0X3QJCWZzX21heF9maWxlX29mZnNldDsKKyAKKyAvKiByZWFsdGltZSBpbmZvICovCisgCitAQCAtMTYxLDI0ICsxNjEsMjQgQEAgRVhURVJOIGludAkJZnVsbF9pbm9fZXhfZGF0YTsvKgorIAorIC8qIHN1cGVyYmxvY2sgY291bnRlcnMgKi8KKyAKKy1FWFRFUk4gX191aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCistRVhURVJOIF9fdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCistRVhURVJOIF9fdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KKy1FWFRFUk4gX191aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCisrRVhURVJOIHVpbnQ2NF90CXNiX2lmcmVlOwkvKiBmcmVlIGlub2RlcyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9mZGJsb2NrczsJLyogZnJlZSBkYXRhIGJsb2NrcyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworIAorIC8qIHN1cGVyYmxvY2sgZ2VvbWV0cnkgaW5mbyAqLworIAorIEVYVEVSTiB4ZnNfZXh0bGVuX3QJc2JfaW5vYWxpZ25tdDsKKy1FWFRFUk4gX191aW50MzJfdAlzYl91bml0OworLUVYVEVSTiBfX3VpbnQzMl90CXNiX3dpZHRoOworK0VYVEVSTiB1aW50MzJfdAlzYl91bml0OworK0VYVEVSTiB1aW50MzJfdAlzYl93aWR0aDsKKyAKKyBzdHJ1Y3QgYWdsb2NrIHsKKyAJcHRocmVhZF9tdXRleF90CWxvY2sgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7CisgfTsKKyBFWFRFUk4gc3RydWN0IGFnbG9jawkqYWdfbG9ja3M7CisgCistRVhURVJOIGludCAJCXJlcG9ydF9pbnRlcnZhbDsKKy1FWFRFUk4gX191aW50NjRfdCAJKnByb2dfcnB0X2RvbmU7CisrRVhURVJOIGludAkJcmVwb3J0X2ludGVydmFsOworK0VYVEVSTiB1aW50NjRfdAkJKnByb2dfcnB0X2RvbmU7CisgCisgRVhURVJOIGludAkJYWdfc3RyaWRlOworIEVYVEVSTiBpbnQJCXRocmVhZF9jb3VudDsKK2RpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmMgYi9yZXBhaXIvaW5jb3JlLmMKK2luZGV4IGNiNTczMTY1Li5hOTE5MWFlMiAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmUuYworKysrIGIvcmVwYWlyL2luY29yZS5jCitAQCAtMTc5LDcgKzE3OSw3IEBAIGdldF9ibWFwX2V4dCgKKyBzdGF0aWMgdWludDY0X3QJCSpydF9ibWFwOworIHN0YXRpYyBzaXplX3QJCXJ0X2JtYXBfc2l6ZTsKKyAKKy0vKiBibG9jayByZWNvcmRzIGZpdCBpbnRvIF9fdWludDY0X3QncyB1bml0cyAqLworKy8qIGJsb2NrIHJlY29yZHMgZml0IGludG8gdWludDY0X3QncyB1bml0cyAqLworICNkZWZpbmUgWFJfQkJfVU5JVAk2NAkJCS8qIG51bWJlciBvZiBiaXRzL3VuaXQgKi8KKyAjZGVmaW5lIFhSX0JCCQk0CQkJLyogYml0cyBwZXIgYmxvY2sgcmVjb3JkICovCisgI2RlZmluZSBYUl9CQl9OVU0JKFhSX0JCX1VOSVQvWFJfQkIpCS8qIG51bWJlciBvZiByZWNvcmRzIHBlciB1bml0ICovCitAQCAtMjAzLDggKzIwMyw4IEBAIHNldF9ydGJtYXAoCisgeworIAkqKHJ0X2JtYXAgKyBibm8gLyBYUl9CQl9OVU0pID0KKyAJICgoKihydF9ibWFwICsgYm5vIC8gWFJfQkJfTlVNKSAmCistCSAgKH4oKF9fdWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKKy0JICgoKF9fdWludDY0X3QpIHN0YXRlKSA8PCAoKGJubyAlIFhSX0JCX05VTSkgKiBYUl9CQikpKTsKKysJICAofigodWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKKysJICgoKHVpbnQ2NF90KSBzdGF0ZSkgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMjIyLDkgKzIyMiw5IEBAIGluaXRfcnRfYm1hcCgKKyAJCXJldHVybjsKKyAKKyAJcnRfYm1hcF9zaXplID0gcm91bmR1cChtcC0+bV9zYi5zYl9yZXh0ZW50cyAvIChOQkJZIC8gWFJfQkIpLAorLQkJCSAgICAgICBzaXplb2YoX191aW50NjRfdCkpOworKwkJCSAgICAgICBzaXplb2YodWludDY0X3QpKTsKKyAKKy0JcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZihfX3VpbnQ2NF90KSwgcnRfYm1hcF9zaXplKTsKKysJcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZih1aW50NjRfdCksIHJ0X2JtYXBfc2l6ZSk7CisgCWlmICghcnRfYm1hcCkgeworIAkJZG9fZXJyb3IoCisgCV8oImNvdWxkbid0IGFsbG9jYXRlIHJlYWx0aW1lIGJsb2NrIG1hcCwgc2l6ZSA9ICUiIFBSSXU2NCAiXG4iKSwKK2RpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmggYi9yZXBhaXIvaW5jb3JlLmgKK2luZGV4IGMyM2EzYTNjLi5mZDY2MDg0ZiAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmUuaAorKysrIGIvcmVwYWlyL2luY29yZS5oCitAQCAtMjU3LDcgKzI1Nyw3IEBAIHR5cGVkZWYgeGZzX2lub190IHBhcmVudF9lbnRyeV90OworIHN0cnVjdCBubGlua19vcHM7CisgCisgdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKKy0JX191aW50NjRfdAkJcG1hc2s7CisrCXVpbnQ2NF90CQlwbWFzazsKKyAJcGFyZW50X2VudHJ5X3QJCSpwZW50cmllczsKKyAjaWZkZWYgREVCVUcKKyAJc2hvcnQJCQljbnQ7CitAQCAtMjY1LDE0ICsyNjUsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKKyB9IHBhcmVudF9saXN0X3Q7CisgCisgdW5pb24gaW5vX25saW5rIHsKKy0JX191aW50OF90CSp1bjg7CistCV9fdWludDE2X3QJKnVuMTY7CistCV9fdWludDMyX3QJKnVuMzI7CisrCXVpbnQ4X3QJCSp1bjg7CisrCXVpbnQxNl90CSp1bjE2OworKwl1aW50MzJfdAkqdW4zMjsKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IGlub19leF9kYXRhICB7CistCV9fdWludDY0X3QJCWlub19yZWFjaGVkOwkvKiBiaXQgPT0gMSBpZiByZWFjaGVkICovCistCV9fdWludDY0X3QJCWlub19wcm9jZXNzZWQ7CS8qIHJlZmVyZW5jZSBjaGVja2VkIGJpdCBtYXNrICovCisrCXVpbnQ2NF90CQlpbm9fcmVhY2hlZDsJLyogYml0ID09IDEgaWYgcmVhY2hlZCAqLworKwl1aW50NjRfdAkJaW5vX3Byb2Nlc3NlZDsJLyogcmVmZXJlbmNlIGNoZWNrZWQgYml0IG1hc2sgKi8KKyAJcGFyZW50X2xpc3RfdAkJKnBhcmVudHM7CisgCXVuaW9uIGlub19ubGluawkJY291bnRlZF9ubGlua3M7LyogY291bnRlZCBubGlua3MgaW4gUDYgKi8KKyB9IGlub19leF9kYXRhX3Q7CitAQCAtMjgxLDIyICsyODEsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAgeworIAlhdmxub2RlX3QJCWF2bF9ub2RlOworIAl4ZnNfYWdpbm9fdAkJaW5vX3N0YXJ0bnVtOwkvKiBzdGFydGluZyBpbm9kZSAjICovCisgCXhmc19pbm9mcmVlX3QJCWlyX2ZyZWU7CS8qIGlub2RlIGZyZWUgYml0IG1hc2sgKi8KKy0JX191aW50NjRfdAkJaXJfc3BhcnNlOwkvKiBzcGFyc2UgaW5vZGUgYml0bWFzayAqLworLQlfX3VpbnQ2NF90CQlpbm9fY29uZmlybWVkOwkvKiBjb25maXJtZWQgYml0bWFzayAqLworLQlfX3VpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KKy0JX191aW50NjRfdAkJaW5vX3dhc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNldCAqLworLQlfX3VpbnQ2NF90CQlpbm9faXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzaG91bGQgYmUgc2V0ICovCistCV9fdWludDhfdAkJbmxpbmtfc2l6ZTsKKysJdWludDY0X3QJCWlyX3NwYXJzZTsJLyogc3BhcnNlIGlub2RlIGJpdG1hc2sgKi8KKysJdWludDY0X3QJCWlub19jb25maXJtZWQ7CS8qIGNvbmZpcm1lZCBiaXRtYXNrICovCisrCXVpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KKysJdWludDY0X3QJCWlub193YXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzZXQgKi8KKysJdWludDY0X3QJCWlub19pc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNob3VsZCBiZSBzZXQgKi8KKysJdWludDhfdAkJCW5saW5rX3NpemU7CisgCXVuaW9uIGlub19ubGluawkJZGlza19ubGlua3M7CS8qIG9uLWRpc2sgbmxpbmtzLCBzZXQgaW4gUDMgKi8KKyAJdW5pb24gIHsKKyAJCWlub19leF9kYXRhX3QJKmV4X2RhdGE7CS8qIHBoYXNlcyA2LDcgKi8KKyAJCXBhcmVudF9saXN0X3QJKnBsaXN0OwkJLyogcGhhc2VzIDItNSAqLworIAl9IGlub191bjsKKy0JX191aW50OF90CQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCisrCXVpbnQ4X3QJCQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCisgfSBpbm9fdHJlZV9ub2RlX3Q7CisgCistI2RlZmluZSBJTk9TX1BFUl9JUkVDCShzaXplb2YoX191aW50NjRfdCkgKiBOQkJZKQorLSNkZWZpbmUJSVJFQ19NQVNLKGkpCSgoX191aW50NjRfdCkxIDw8IChpKSkKKysjZGVmaW5lIElOT1NfUEVSX0lSRUMJKHNpemVvZih1aW50NjRfdCkgKiBOQkJZKQorKyNkZWZpbmUJSVJFQ19NQVNLKGkpCSgodWludDY0X3QpMSA8PCAoaSkpCisgCisgdm9pZAkJYWRkX2lub19leF9kYXRhKHhmc19tb3VudF90ICptcCk7CisgCitAQCAtNTQzLDEwICs1NDMsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgaW5vZGVfaXNfcmwoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCisgICovCisgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKy1fX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyt1aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7CisgCistdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIF9fdWludDMyX3QgbmxpbmtzKTsKKy1fX3VpbnQzMl90IGdldF9pbm9kZV9kaXNrX25saW5rcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7Cisrdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIHVpbnQzMl90IG5saW5rcyk7CisrdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyAKKyBzdGF0aWMgaW5saW5lIGludCBpc19pbm9kZV9yZWFjaGVkKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KQorIHsKK0BAIC01NjcsMTMgKzU2NywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2lub2RlX3JlYWNoZWQoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCisgc3RhdGljIGlubGluZSB2b2lkCisgc2V0X2lub2RlX2Z0eXBlKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLAorIAlpbnQJCWlub19vZmZzZXQsCistCV9fdWludDhfdAlmdHlwZSkKKysJdWludDhfdAkJZnR5cGUpCisgeworIAlpZiAoaXJlYy0+ZnR5cGVzKQorIAkJaXJlYy0+ZnR5cGVzW2lub19vZmZzZXRdID0gZnR5cGU7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgX191aW50OF90Cisrc3RhdGljIGlubGluZSB1aW50OF90CisgZ2V0X2lub2RlX2Z0eXBlKAorIAlzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywKKyAJaW50CQlpbm9fb2Zmc2V0KQorQEAgLTYwNiwxMSArNjA2LDExIEBAIHR5cGVkZWYgc3RydWN0IGJtX2xldmVsX3N0YXRlICB7CisgCXhmc19mc2Jsb2NrX3QJCWZzYm5vOworIAl4ZnNfZnNibG9ja190CQlsZWZ0X2ZzYm5vOworIAl4ZnNfZnNibG9ja190CQlyaWdodF9mc2JubzsKKy0JX191aW50NjRfdAkJZmlyc3Rfa2V5OworLQlfX3VpbnQ2NF90CQlsYXN0X2tleTsKKysJdWludDY0X3QJCWZpcnN0X2tleTsKKysJdWludDY0X3QJCWxhc3Rfa2V5OworIC8qCisgCWludAkJCWxldmVsOworLQlfX3VpbnQ2NF90CQlwcmV2X2xhc3Rfa2V5OworKwl1aW50NjRfdAkJcHJldl9sYXN0X2tleTsKKyAJeGZzX2J1Zl90CQkqYnA7CisgCXhmc19ibWJ0X2Jsb2NrX3QJKmJsb2NrOworICovCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2luY29yZV9leHQuYyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKK2luZGV4IDdlNjc4NmM1Li4wYTgxMzhhOSAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmVfZXh0LmMKKysrKyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKK0BAIC03MjEsMTMgKzcyMSwxMyBAQCBzZWFyY2hfcnRfZHVwX2V4dGVudCh4ZnNfbW91bnRfdCAqbXAsIHhmc19ydGJsb2NrX3QgYm5vKQorIAlyZXR1cm4ocmV0KTsKKyB9CisgCistc3RhdGljIF9fdWludDY0X3QKKytzdGF0aWMgdWludDY0X3QKKyBhdmw2NF9ydF9leHRfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2spOworIH0KKyAKKy1zdGF0aWMgX191aW50NjRfdAorK3N0YXRpYyB1aW50NjRfdAorIGF2bDY0X2V4dF9lbmQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2sgKworQEAgLTgzNCw3ICs4MzQsNyBAQCBjb3VudF9leHRlbnRzKHhmc19hZ251bWJlcl90IGFnbm8sIGF2bHRyZWVfZGVzY190ICp0cmVlLCBpbnQgd2hpY2h0cmVlKQorIGludAorIGNvdW50X2Jub19leHRlbnRzX2Jsb2Nrcyh4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50ICpudW1ibG9ja3MpCisgeworLQlfX3VpbnQ2NF90IG5ibG9ja3M7CisrCXVpbnQ2NF90IG5ibG9ja3M7CisgCWV4dGVudF90cmVlX25vZGVfdCAqbm9kZTsKKyAJaW50IGkgPSAwOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9pbmNvcmVfaW5vLmMgYi9yZXBhaXIvaW5jb3JlX2luby5jCitpbmRleCAyZWMxNzY1Ny4uM2I2YjQ0ZDQgMTAwNjQ0CistLS0gYS9yZXBhaXIvaW5jb3JlX2luby5jCisrKysgYi9yZXBhaXIvaW5jb3JlX2luby5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgYXZsdHJlZV9kZXNjX3QJKippbm9kZV91bmNlcnRhaW5fdHJlZV9wdHJzOworIC8qIG1lbW9yeSBvcHRpbWlzZWQgbmxpbmsgY291bnRpbmcgZm9yIGFsbCBpbm9kZXMgKi8KKyAKKyBzdGF0aWMgdm9pZCAqCistYWxsb2NfbmxpbmtfYXJyYXkoX191aW50OF90IG5saW5rX3NpemUpCisrYWxsb2NfbmxpbmtfYXJyYXkodWludDhfdCBubGlua19zaXplKQorIHsKKyAJdm9pZCAqcHRyOworIAorQEAgLTUxLDEwICs1MSwxMCBAQCBhbGxvY19ubGlua19hcnJheShfX3VpbnQ4X3Qgbmxpbmtfc2l6ZSkKKyBzdGF0aWMgdm9pZAorIG5saW5rX2dyb3dfOF90b18xNihpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCisgeworLQlfX3VpbnQxNl90CSpuZXdfbmxpbmtzOworKwl1aW50MTZfdAkqbmV3X25saW5rczsKKyAJaW50CQlpOworIAorLQlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKF9fdWludDE2X3QpOworKwlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKHVpbnQxNl90KTsKKyAKKyAJbmV3X25saW5rcyA9IGFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOworIAlmb3IgKGkgPSAwOyBpIDwgWEZTX0lOT0RFU19QRVJfQ0hVTks7IGkrKykKK0BAIC03NiwxMCArNzYsMTAgQEAgbmxpbmtfZ3Jvd184X3RvXzE2KGlub190cmVlX25vZGVfdCAqaXJlYykKKyBzdGF0aWMgdm9pZAorIG5saW5rX2dyb3dfMTZfdG9fMzIoaW5vX3RyZWVfbm9kZV90ICppcmVjKQorIHsKKy0JX191aW50MzJfdAkqbmV3X25saW5rczsKKysJdWludDMyX3QJKm5ld19ubGlua3M7CisgCWludAkJaTsKKyAKKy0JaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZihfX3VpbnQzMl90KTsKKysJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CisgCisgCW5ld19ubGlua3MgPSBhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKKyAJZm9yIChpID0gMDsgaSA8IFhGU19JTk9ERVNfUEVSX0NIVU5LOyBpKyspCitAQCAtMTA0LDIxICsxMDQsMjEgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOworIAorIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlpZiAoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA8IDB4ZmYpIHsKKyAJCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdKys7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzhfdG9fMTYoaXJlYyk7CisgCQkvKkZBTExUSFJVKi8KKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCWlmIChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XSA8IDB4ZmZmZikgeworIAkJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdKys7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOworIAkJLypGQUxMVEhSVSovCistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XSsrOworIAkJYnJlYWs7CisgCWRlZmF1bHQ6CitAQCAtMTI4LDIwICsxMjgsMjAgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyAKKyB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyB7CistCV9fdWludDMyX3QJcmVmcyA9IDA7CisrCXVpbnQzMl90CXJlZnMgPSAwOworIAorIAlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEgIT0gTlVMTCk7CisgCisgCXN3aXRjaCAoaXJlYy0+bmxpbmtfc2l6ZSkgeworLQljYXNlIHNpemVvZihfX3VpbnQ4X3QpOgorKwljYXNlIHNpemVvZih1aW50OF90KToKKyAJCUFTU0VSVChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdID4gMCk7CisgCQlyZWZzID0gLS1pcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgorKwljYXNlIHNpemVvZih1aW50MTZfdCk6CisgCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPiAwKTsKKyAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzJbaW5vX29mZnNldF0gPiAwKTsKKyAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjMyW2lub19vZmZzZXRdOworIAkJYnJlYWs7CitAQCAtMTUzLDE2ICsxNTMsMTYgQEAgdm9pZCBkcm9wX2lub2RlX3JlZihzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCisgCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+aW5vX3JlYWNoZWQgJj0gfklSRUNfTUFTSyhpbm9fb2Zmc2V0KTsKKyB9CisgCistX191aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCisrdWludDMyX3QgbnVtX2lub2RlX3JlZmVyZW5jZXMoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIHsKKyAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOworIAorIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlyZXR1cm4gaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MzJfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQzMl90KToKKyAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XTsKKyAJZGVmYXVsdDoKKyAJCUFTU0VSVCgwKTsKK0BAIC0xNzEsMjQgKzE3MSwyNCBAQCBfX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyB9CisgCisgdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAorLQkJX191aW50MzJfdCBubGlua3MpCisrCQl1aW50MzJfdCBubGlua3MpCisgeworIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlpZiAobmxpbmtzIDwgMHhmZikgeworIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA9IG5saW5rczsKKyAJCQlicmVhazsKKyAJCX0KKyAJCW5saW5rX2dyb3dfOF90b18xNihpcmVjKTsKKyAJCS8qRkFMTFRIUlUqLworLQljYXNlIHNpemVvZihfX3VpbnQxNl90KToKKysJY2FzZSBzaXplb2YodWludDE2X3QpOgorIAkJaWYgKG5saW5rcyA8IDB4ZmZmZikgeworIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPSBubGlua3M7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOworIAkJLypGQUxMVEhSVSovCistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlpcmVjLT5kaXNrX25saW5rcy51bjMyW2lub19vZmZzZXRdID0gbmxpbmtzOworIAkJYnJlYWs7CisgCWRlZmF1bHQ6CitAQCAtMTk2LDE0ICsxOTYsMTQgQEAgdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAorIAl9CisgfQorIAorLV9fdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyt1aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIHsKKyAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7CistCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgorIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCXJldHVybiBpcmVjLT5kaXNrX25saW5rcy51bjE2W2lub19vZmZzZXRdOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuMzJbaW5vX29mZnNldF07CisgCWRlZmF1bHQ6CisgCQlBU1NFUlQoMCk7CitAQCAtMjExLDExICsyMTEsMTEgQEAgX191aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIAlyZXR1cm4gMDsKKyB9CisgCistc3RhdGljIF9fdWludDhfdCAqCisrc3RhdGljIHVpbnQ4X3QgKgorIGFsbG9jX2Z0eXBlc19hcnJheSgKKyAJc3RydWN0IHhmc19tb3VudCAqbXApCisgeworLQlfX3VpbnQ4X3QJKnB0cjsKKysJdWludDhfdAkJKnB0cjsKKyAKKyAJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNmdHlwZSgmbXAtPm1fc2IpKQorIAkJcmV0dXJuIE5VTEw7CitAQCAtMjYyLDIzICsyNjIsMjMgQEAgYWxsb2NfaW5vX25vZGUoCisgCWlyZWMtPmlyX2ZyZWUgPSAoeGZzX2lub2ZyZWVfdCkgLSAxOworIAlpcmVjLT5pcl9zcGFyc2UgPSAwOworIAlpcmVjLT5pbm9fdW4uZXhfZGF0YSA9IE5VTEw7CistCWlyZWMtPm5saW5rX3NpemUgPSBzaXplb2YoX191aW50OF90KTsKKysJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50OF90KTsKKyAJaXJlYy0+ZGlza19ubGlua3MudW44ID0gYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7CisgCWlyZWMtPmZ0eXBlcyA9IGFsbG9jX2Z0eXBlc19hcnJheShtcCk7CisgCXJldHVybiBpcmVjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWZyZWVfbmxpbmtfYXJyYXkodW5pb24gaW5vX25saW5rIG5saW5rcywgX191aW50OF90IG5saW5rX3NpemUpCisrZnJlZV9ubGlua19hcnJheSh1bmlvbiBpbm9fbmxpbmsgbmxpbmtzLCB1aW50OF90IG5saW5rX3NpemUpCisgeworIAlzd2l0Y2ggKG5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlmcmVlKG5saW5rcy51bjgpOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgorKwljYXNlIHNpemVvZih1aW50MTZfdCk6CisgCQlmcmVlKG5saW5rcy51bjE2KTsKKyAJCWJyZWFrOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJZnJlZShubGlua3MudW4zMik7CisgCQlicmVhazsKKyAJZGVmYXVsdDoKK0BAIC02MDksNyArNjA5LDcgQEAgc2V0X2lub2RlX3BhcmVudCgKKyAJaW50CQkJaTsKKyAJaW50CQkJY250OworIAlpbnQJCQl0YXJnZXQ7CistCV9fdWludDY0X3QJCWJpdG1hc2s7CisrCXVpbnQ2NF90CQliaXRtYXNrOworIAlwYXJlbnRfZW50cnlfdAkJKnRtcDsKKyAKKyAJaWYgKGZ1bGxfaW5vX2V4X2RhdGEpCitAQCAtNjk5LDcgKzY5OSw3IEBAIHNldF9pbm9kZV9wYXJlbnQoCisgeGZzX2lub190CisgZ2V0X2lub2RlX3BhcmVudChpbm9fdHJlZV9ub2RlX3QgKmlyZWMsIGludCBvZmZzZXQpCisgeworLQlfX3VpbnQ2NF90CWJpdG1hc2s7CisrCXVpbnQ2NF90CWJpdG1hc2s7CisgCXBhcmVudF9saXN0X3QJKnB0Ymw7CisgCWludAkJaTsKKyAJaW50CQl0YXJnZXQ7CitAQCAtNzQwLDE1ICs3NDAsMTUgQEAgYWxsb2NfZXhfZGF0YShpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCisgCWlyZWMtPmlub191bi5leF9kYXRhLT5wYXJlbnRzID0gcHRibDsKKyAKKyAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7CistCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgorIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOCA9CisgCQkJYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7CisgCQlicmVhazsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2ID0KKyAJCQlhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKKyAJCWJyZWFrOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzIgPQorIAkJCWFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOworIAkJYnJlYWs7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMi5jIGIvcmVwYWlyL3BoYXNlMi5jCitpbmRleCBjMjE3NzhiOC4uMDA4NTczMmIgMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2UyLmMKKysrKyBiL3JlcGFpci9waGFzZTIuYworQEAgLTE3OSw3ICsxNzksNyBAQCBwaGFzZTIoCisgCisgCWJhZF9pbm9fYnRyZWUgPSAwOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKKyAKKyAJc2Nhbl9hZ3MobXAsIHNjYW5fdGhyZWFkcyk7CisgCitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMy5jIGIvcmVwYWlyL3BoYXNlMy5jCitpbmRleCAwODkwYTI3ZC4uMTdiMWMyOGQgMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2UzLmMKKysrKyBiL3JlcGFpci9waGFzZTMuYworQEAgLTEyMiw3ICsxMjIsNyBAQCBwaGFzZTMoCisgCWVsc2UKKyAJCWRvX2xvZyhfKCIgICAgICAgIC0gc2NhbiAoYnV0IGRvbid0IGNsZWFyKSBhZ2kgdW5saW5rZWQgbGlzdHMuLi5cbiIpKTsKKyAKKy0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9BR0lfVU5MSU5LRUQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0FHSV9VTkxJTktFRCwgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAkvKiBmaXJzdCBjbGVhciB0aGUgYWdpIHVubGlua2VkIEFHSSBsaXN0ICovCisgCWlmICghbm9fbW9kaWZ5KSB7CitAQCAtMTQyLDcgKzE0Miw3IEBAIHBoYXNlMygKKyAJZG9fbG9nKF8oCisgCSAgICAiICAgICAgICAtIHByb2Nlc3Mga25vd24gaW5vZGVzIGFuZCBwZXJmb3JtIGlub2RlIGRpc2NvdmVyeS4uLlxuIikpOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1BST0NFU1NfSU5PLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKKysJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9QUk9DRVNTX0lOTywgKHVpbnQ2NF90KSBtcC0+bV9zYi5zYl9pY291bnQpOworIAorIAlwcm9jZXNzX2FncyhtcCk7CisgCitAQCAtMTUyLDcgKzE1Miw3IEBAIHBoYXNlMygKKyAJICogcHJvY2VzcyBuZXdseSBkaXNjb3ZlcmVkIGlub2RlIGNodW5rcworIAkgKi8KKyAJZG9fbG9nKF8oIiAgICAgICAgLSBwcm9jZXNzIG5ld2x5IGRpc2NvdmVyZWQgaW5vZGVzLi4uXG4iKSk7CistCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7CisrCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAljb3VudHMgPSBjYWxsb2Moc2l6ZW9mKCpjb3VudHMpLCBtcC0+bV9zYi5zYl9hZ2NvdW50KTsKKyAJaWYgKCFjb3VudHMpIHsKK2RpZmYgLS1naXQgYS9yZXBhaXIvcGhhc2U0LmMgYi9yZXBhaXIvcGhhc2U0LmMKK2luZGV4IGU1OTQ2NGIxLi5jYzE3ZWMwMyAxMDA2NDQKKy0tLSBhL3JlcGFpci9waGFzZTQuYworKysrIGIvcmVwYWlyL3BoYXNlNC5jCitAQCAtMjkwLDcgKzI5MCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCisgCWRvX2xvZyhfKCJQaGFzZSA0IC0gY2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKKyAJZG9fbG9nKF8oIiAgICAgICAgLSBzZXR0aW5nIHVwIGR1cGxpY2F0ZSBleHRlbnQgbGlzdC4uLlxuIikpOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKKyAKKyAJaXJlYyA9IGZpbmRfaW5vZGVfcmVjKG1wLCBYRlNfSU5PX1RPX0FHTk8obXAsIG1wLT5tX3NiLnNiX3Jvb3Rpbm8pLAorIAkJCQlYRlNfSU5PX1RPX0FHSU5PKG1wLCBtcC0+bV9zYi5zYl9yb290aW5vKSk7CitAQCAtNDA0LDcgKzQwNCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCisgCXJlc2V0X2JtYXBzKG1wKTsKKyAKKyAJZG9fbG9nKF8oIiAgICAgICAgLSBjaGVjayBmb3IgaW5vZGVzIGNsYWltaW5nIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKKy0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKKysJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAodWludDY0X3QpIG1wLT5tX3NiLnNiX2ljb3VudCk7CisgCisgCS8qCisgCSAqIG9rLCBub3cgcHJvY2VzcyB0aGUgaW5vZGVzIC0tIHNpZ25hbCAyLXBhc3MgY2hlY2sgcGVyIGlub2RlLgorZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTUuYyBiL3JlcGFpci9waGFzZTUuYworaW5kZXggMGI4MzNmMTMuLjIxZGNlNjdhIDEwMDY0NAorLS0tIGEvcmVwYWlyL3BoYXNlNS5jCisrKysgYi9yZXBhaXIvcGhhc2U1LmMKK0BAIC04Niw5ICs4Niw5IEBAIHN0cnVjdCBhZ2lfc3RhdCB7CisgCXhmc19hZ2lub190CQlmcmVlY291bnQ7CisgfTsKKyAKKy1zdGF0aWMgX191aW50NjRfdAkqc2JfaWNvdW50X2FnOwkJLyogYWxsb2NhdGVkIGlub2RlcyBwZXIgYWcgKi8KKy1zdGF0aWMgX191aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KKy1zdGF0aWMgX191aW50NjRfdAkqc2JfZmRibG9ja3NfYWc7CS8qIGZyZWUgZGF0YSBibG9ja3MgcGVyIGFnICovCisrc3RhdGljIHVpbnQ2NF90CSpzYl9pY291bnRfYWc7CQkvKiBhbGxvY2F0ZWQgaW5vZGVzIHBlciBhZyAqLworK3N0YXRpYyB1aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KKytzdGF0aWMgdWludDY0X3QJKnNiX2ZkYmxvY2tzX2FnOwkvKiBmcmVlIGRhdGEgYmxvY2tzIHBlciBhZyAqLworIAorIHN0YXRpYyBpbnQKKyBta19pbmNvcmVfZnN0cmVlKHhmc19tb3VudF90ICptcCwgeGZzX2FnbnVtYmVyX3QgYWdubykKK0BAIC04ODYsMTAgKzg4NiwxMCBAQCBidWlsZF9mcmVlc3BhY2VfdHJlZSh4ZnNfbW91bnRfdCAqbXAsIHhmc19hZ251bWJlcl90IGFnbm8sCisgICovCisgc3RhdGljIHZvaWQKKyBpbml0X2lub19jdXJzb3IoeGZzX21vdW50X3QgKm1wLCB4ZnNfYWdudW1iZXJfdCBhZ25vLCBidF9zdGF0dXNfdCAqYnRyZWVfY3VycywKKy0JCV9fdWludDY0X3QgKm51bV9pbm9zLCBfX3VpbnQ2NF90ICpudW1fZnJlZV9pbm9zLCBpbnQgZmlub2J0KQorKwkJdWludDY0X3QgKm51bV9pbm9zLCB1aW50NjRfdCAqbnVtX2ZyZWVfaW5vcywgaW50IGZpbm9idCkKKyB7CistCV9fdWludDY0X3QJCW5pbm9zOworLQlfX3VpbnQ2NF90CQluZmlub3M7CisrCXVpbnQ2NF90CQluaW5vczsKKysJdWludDY0X3QJCW5maW5vczsKKyAJaW50CQkJcmVjX25maW5vczsKKyAJaW50CQkJcmVjX25pbm9zOworIAlpbm9fdHJlZV9ub2RlX3QJCSppbm9fcmVjOworQEAgLTIxOTMsMTAgKzIxOTMsMTAgQEAgcGhhc2U1X2Z1bmMoCisgCXhmc19hZ251bWJlcl90CWFnbm8sCisgCXN0cnVjdCB4ZnNfc2xhYgkqbG9zdF9mc2IpCisgeworLQlfX3VpbnQ2NF90CW51bV9pbm9zOworLQlfX3VpbnQ2NF90CW51bV9mcmVlX2lub3M7CistCV9fdWludDY0X3QJZmlub2J0X251bV9pbm9zOworLQlfX3VpbnQ2NF90CWZpbm9idF9udW1fZnJlZV9pbm9zOworKwl1aW50NjRfdAludW1faW5vczsKKysJdWludDY0X3QJbnVtX2ZyZWVfaW5vczsKKysJdWludDY0X3QJZmlub2J0X251bV9pbm9zOworKwl1aW50NjRfdAlmaW5vYnRfbnVtX2ZyZWVfaW5vczsKKyAJYnRfc3RhdHVzX3QJYm5vX2J0cmVlX2N1cnM7CisgCWJ0X3N0YXR1c190CWJjbnRfYnRyZWVfY3VyczsKKyAJYnRfc3RhdHVzX3QJaW5vX2J0cmVlX2N1cnM7CitAQCAtMjQ3MSw3ICsyNDcxLDcgQEAgcGhhc2U1KHhmc19tb3VudF90ICptcCkKKyAJaW50CQkJZXJyb3I7CisgCisgCWRvX2xvZyhfKCJQaGFzZSA1IC0gcmVidWlsZCBBRyBoZWFkZXJzIGFuZCB0cmVlcy4uLlxuIikpOworLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsIChfX3VpbnQ2NF90IClnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsICh1aW50NjRfdClnbG9iX2FnY291bnQpOworIAorICNpZmRlZiBYUl9CTERfRlJFRV9UUkFDRQorIAlmcHJpbnRmKHN0ZGVyciwgImlub2J0IGxldmVsIDEsIG1heHJlYyA9ICVkLCBtaW5yZWMgPSAlZFxuIiwKK0BAIC0yNDk3LDE1ICsyNDk3LDE1IEBAIHBoYXNlNSh4ZnNfbW91bnRfdCAqbXApCisgCWtlZXBfZnNpbm9zKG1wKTsKKyAKKyAJLyogYWxsb2NhdGUgcGVyIGFnIGNvdW50ZXJzICovCistCXNiX2ljb3VudF9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9pY291bnRfYWcgPSBjYWxsb2MobXAtPm1fc2Iuc2JfYWdjb3VudCwgc2l6ZW9mKHVpbnQ2NF90KSk7CisgCWlmIChzYl9pY291bnRfYWcgPT0gTlVMTCkKKyAJCWRvX2Vycm9yKF8oImNhbm5vdCBhbGxvYyBzYl9pY291bnRfYWcgYnVmZmVyc1xuIikpOworIAorLQlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKKyAJaWYgKHNiX2lmcmVlX2FnID09IE5VTEwpCisgCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfaWZyZWVfYWcgYnVmZmVyc1xuIikpOworIAorLQlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKKyAJaWYgKHNiX2ZkYmxvY2tzX2FnID09IE5VTEwpCisgCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfZmRibG9ja3NfYWcgYnVmZmVyc1xuIikpOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTYuYyBiL3JlcGFpci9waGFzZTYuYworaW5kZXggMDg2MzZkY2YuLjM3M2IxYTViIDEwMDY0NAorLS0tIGEvcmVwYWlyL3BoYXNlNi5jCisrKysgYi9yZXBhaXIvcGhhc2U2LmMKK0BAIC04Miw3ICs4Miw3IEBAIHR5cGVkZWYgc3RydWN0IGRpcl9oYXNoX2VudCB7CisgCXN0cnVjdCBkaXJfaGFzaF9lbnQJKm5leHRieWhhc2g7CS8qIG5leHQgaW4gbmFtZSBidWNrZXQgKi8KKyAJc3RydWN0IGRpcl9oYXNoX2VudAkqbmV4dGJ5b3JkZXI7CS8qIG5leHQgaW4gb3JkZXIgYWRkZWQgKi8KKyAJeGZzX2RhaGFzaF90CQloYXNodmFsOwkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgKi8KKy0JX191aW50MzJfdAkJYWRkcmVzczsJLyogb2Zmc2V0IG9mIGRhdGEgZW50cnkgKi8KKysJdWludDMyX3QJCWFkZHJlc3M7CS8qIG9mZnNldCBvZiBkYXRhIGVudHJ5ICovCisgCXhmc19pbm9fdCAJCWludW07CQkvKiBpbm9kZSBudW0gb2YgZW50cnkgKi8KKyAJc2hvcnQJCQlqdW5raXQ7CQkvKiBuYW1lIHN0YXJ0cyB3aXRoIC8gKi8KKyAJc2hvcnQJCQlzZWVuOwkJLyogaGF2ZSBzZWVuIGxlYWYgZW50cnkgKi8KK0BAIC0xNzAsMTEgKzE3MCwxMSBAQCBzdGF0aWMgaW50CisgZGlyX2hhc2hfYWRkKAorIAl4ZnNfbW91bnRfdAkJKm1wLAorIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCistCV9fdWludDMyX3QJCWFkZHIsCisrCXVpbnQzMl90CQlhZGRyLAorIAl4ZnNfaW5vX3QJCWludW0sCisgCWludAkJCW5hbWVsZW4sCisgCXVuc2lnbmVkIGNoYXIJCSpuYW1lLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAl4ZnNfZGFoYXNoX3QJCWhhc2ggPSAwOworIAlpbnQJCQlieWFkZHI7CitAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkCisgZGlyX2hhc2hfdXBkYXRlX2Z0eXBlKAorIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCisgCXhmc19kaXIyX2RhdGFwdHJfdAlhZGRyLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAlpbnQJCQlpOworIAlkaXJfaGFzaF9lbnRfdAkJKnA7CitAQCAtMTc5MSw4ICsxNzkxLDggQEAgbG9uZ2Zvcm1fZGlyMl9lbnRyeV9jaGVja19kYXRhKAorIAorIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCisgCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgeworLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7CistCQkJX191aW50OF90IGlub19mdHlwZTsKKysJCQl1aW50OF90IGRpcl9mdHlwZTsKKysJCQl1aW50OF90IGlub19mdHlwZTsKKyAKKyAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPmRhdGFfZ2V0X2Z0eXBlKGRlcCk7CisgCQkJaW5vX2Z0eXBlID0gZ2V0X2lub2RlX2Z0eXBlKGlyZWMsIGlub19vZmZzZXQpOworQEAgLTI3MDMsOCArMjcwMyw4IEBAIF8oImVudHJ5IFwiJXNcIiAoaW5vICUiIFBSSXU2NCAiKSBpbiBkaXIgJSIgUFJJdTY0ICIgaXMgYSBkdXBsaWNhdGUgbmFtZSIpLAorIAorIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCisgCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgeworLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7CistCQkJX191aW50OF90IGlub19mdHlwZTsKKysJCQl1aW50OF90IGRpcl9mdHlwZTsKKysJCQl1aW50OF90IGlub19mdHlwZTsKKyAKKyAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPnNmX2dldF9mdHlwZShzZmVwKTsKKyAJCQlpbm9fZnR5cGUgPSBnZXRfaW5vZGVfZnR5cGUoaXJlYywgaW5vX29mZnNldCk7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlNy5jIGIvcmVwYWlyL3BoYXNlNy5jCitpbmRleCA4YmNlMTE3ZC4uNGZmYjgxYTggMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2U3LmMKKysrKyBiL3JlcGFpci9waGFzZTcuYworQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIHZvaWQKKyB1cGRhdGVfaW5vZGVfbmxpbmtzKAorIAl4ZnNfbW91bnRfdCAJCSptcCwKKyAJeGZzX2lub190CQlpbm8sCistCV9fdWludDMyX3QJCW5saW5rcykKKysJdWludDMyX3QJCW5saW5rcykKKyB7CisgCXhmc190cmFuc190CQkqdHA7CisgCXhmc19pbm9kZV90CQkqaXA7CitAQCAtMTA0LDcgKzEwNCw3IEBAIGRvX2xpbmtfdXBkYXRlcygKKyB7CisgCWlub190cmVlX25vZGVfdAkJKmlyZWM7CisgCWludAkJCWo7CistCV9fdWludDMyX3QJCW5yZWZzOworKwl1aW50MzJfdAkJbnJlZnM7CisgCisgCWZvciAoaXJlYyA9IGZpbmRmaXJzdF9pbm9kZV9yZWMoYWdubyk7IGlyZWM7CisgCSAgICAgaXJlYyA9IG5leHRfaW5vX3JlYyhpcmVjKSkgeworQEAgLTE0Myw3ICsxNDMsNyBAQCBwaGFzZTcoCisgCWVsc2UKKyAJCWRvX2xvZyhfKCJQaGFzZSA3IC0gdmVyaWZ5IGxpbmsgY291bnRzLi4uXG4iKSk7CisgCistCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7CisrCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAljcmVhdGVfd29ya19xdWV1ZSgmd3EsIG1wLCBzY2FuX3RocmVhZHMpOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9wcm9ncmVzcy5jIGIvcmVwYWlyL3Byb2dyZXNzLmMKK2luZGV4IDJhMDliMjM5Li45OWQyNjU4YyAxMDA2NDQKKy0tLSBhL3JlcGFpci9wcm9ncmVzcy5jCisrKysgYi9yZXBhaXIvcHJvZ3Jlc3MuYworQEAgLTg1LDggKzg1LDggQEAgcHRocmVhZF90CXJlcG9ydF90aHJlYWQ7CisgdHlwZWRlZiBzdHJ1Y3QgbXNnX2Jsb2NrX3MgeworIAlwdGhyZWFkX211dGV4X3QJbXV0ZXg7CisgCXByb2dyZXNzX3JwdF90CSpmb3JtYXQ7CistCV9fdWludDY0X3QJKmRvbmU7CistCV9fdWludDY0X3QJKnRvdGFsOworKwl1aW50NjRfdAkqZG9uZTsKKysJdWludDY0X3QJKnRvdGFsOworIAlpbnQJCWNvdW50OworIAlpbnQJCWludGVydmFsOworIH0gbXNnX2Jsb2NrX3Q7CitAQCAtOTYsMTQgKzk2LDE0IEBAIHR5cGVkZWYgc3RydWN0IHBoYXNlX3RpbWVzX3MgeworIAl0aW1lX3QJCXN0YXJ0OworIAl0aW1lX3QJCWVuZDsKKyAJdGltZV90CQlkdXJhdGlvbjsKKy0JX191aW50NjRfdAlpdGVtX2NvdW50c1s0XTsKKysJdWludDY0X3QJaXRlbV9jb3VudHNbNF07CisgfSBwaGFzZV90aW1lc190OworIHN0YXRpYyBwaGFzZV90aW1lc190IHBoYXNlX3RpbWVzWzhdOworIAorIHN0YXRpYyB2b2lkICpwcm9ncmVzc19ycHRfdGhyZWFkKHZvaWQgKik7Cisgc3RhdGljIGludCBjdXJyZW50X3BoYXNlOworIHN0YXRpYyBpbnQgcnVubmluZzsKKy1zdGF0aWMgX191aW50NjRfdCBwcm9nX3JwdF90b3RhbDsKKytzdGF0aWMgdWludDY0X3QgcHJvZ19ycHRfdG90YWw7CisgCisgdm9pZAorIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQorQEAgLTExMywxMSArMTEzLDExIEBAIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQorIAkgKiAgYWxsb2NhdGUgdGhlIGRvbmUgdmVjdG9yCisgCSAqLworIAorLQlpZiAoKHByb2dfcnB0X2RvbmUgPSAoX191aW50NjRfdCAqKQorLQkJbWFsbG9jKHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpKSA9PSBOVUxMICkgeworKwlpZiAoKHByb2dfcnB0X2RvbmUgPSAodWludDY0X3QgKikKKysJCW1hbGxvYyhzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCkpID09IE5VTEwpIHsKKyAJCWRvX2Vycm9yKF8oImNhbm5vdCBtYWxsb2MgcG9pbnRlciB0byBkb25lIHZlY3RvclxuIikpOworIAl9CistCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpOworKwliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCk7CisgCisgCS8qCisgCSAqICBTZXR1cCBjb21tIGJsb2NrLCBzdGFydCB0aGUgdGhyZWFkCitAQCAtMTY1LDEwICsxNjUsMTAgQEAgcHJvZ3Jlc3NfcnB0X3RocmVhZCAodm9pZCAqcCkKKyAJdGltZXJfdCB0aW1lcmlkOworIAlzdHJ1Y3QgaXRpbWVyc3BlYyB0aW1lc3BlYzsKKyAJY2hhciAqbXNnYnVmOworLQlfX3VpbnQ2NF90ICpkb25lcDsKKy0JX191aW50NjRfdCBzdW07CisrCXVpbnQ2NF90ICpkb25lcDsKKysJdWludDY0X3Qgc3VtOworIAltc2dfYmxvY2tfdCAqbXNncCA9IChtc2dfYmxvY2tfdCAqKXA7CistCV9fdWludDY0X3QgcGVyY2VudDsKKysJdWludDY0X3QgcGVyY2VudDsKKyAKKyAJLyogSXQncyBwb3NzaWJsZSB0byBnZXQgaGVyZSB2ZXJ5IGVhcmx5IHcvIG5vIHByb2dyZXNzIG1zZyBzZXQgKi8KKyAJaWYgKCFtc2dwLT5mb3JtYXQpCitAQCAtMjg2LDcgKzI4Niw3IEBAIHByb2dyZXNzX3JwdF90aHJlYWQgKHZvaWQgKnApCisgfQorIAorIGludAorLXNldF9wcm9ncmVzc19tc2cgKGludCByZXBvcnQsIF9fdWludDY0X3QgdG90YWwpCisrc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCkKKyB7CisgCisgCWlmICghYWdfc3RyaWRlKQorQEAgLTMwMCw3ICszMDAsNyBAQCBzZXRfcHJvZ3Jlc3NfbXNnIChpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKQorIAorIAkvKiByZXNldCBhbGwgdGhlIGFjY3VtdWxhdGl2ZSB0b3RhbHMgKi8KKyAJaWYgKHByb2dfcnB0X2RvbmUpCistCQliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YoX191aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKKysJCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZih1aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKKyAKKyAJaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnbG9iYWxfbXNncy5tdXRleCkpCisgCQlkb19lcnJvcihfKCJzZXRfcHJvZ3Jlc3NfbXNnOiBjYW5ub3QgdW5sb2NrIHByb2dyZXNzIG11dGV4XG4iKSk7CitAQCAtMzA4LDE0ICszMDgsMTQgQEAgc2V0X3Byb2dyZXNzX21zZyAoaW50IHJlcG9ydCwgX191aW50NjRfdCB0b3RhbCkKKyAJcmV0dXJuICgwKTsKKyB9CisgCistX191aW50NjRfdAorK3VpbnQ2NF90CisgcHJpbnRfZmluYWxfcnB0KHZvaWQpCisgeworIAlpbnQgaTsKKyAJc3RydWN0IHRtICp0bXA7CisgCXRpbWVfdCBub3c7CistCV9fdWludDY0X3QgKmRvbmVwOworLQlfX3VpbnQ2NF90IHN1bTsKKysJdWludDY0X3QgKmRvbmVwOworKwl1aW50NjRfdCBzdW07CisgCW1zZ19ibG9ja190IAkqbXNncCA9ICZnbG9iYWxfbXNnczsKKyAJY2hhcgkJbXNnYnVmW0RVUkFUSU9OX0JVRl9TSVpFXTsKKyAKK2RpZmYgLS1naXQgYS9yZXBhaXIvcHJvZ3Jlc3MuaCBiL3JlcGFpci9wcm9ncmVzcy5oCitpbmRleCAzM2RiODM0NC4uNTE1MjY0ODMgMTAwNjQ0CistLS0gYS9yZXBhaXIvcHJvZ3Jlc3MuaAorKysrIGIvcmVwYWlyL3Byb2dyZXNzLmgKK0BAIC0zMiw4ICszMiw4IEBACisgZXh0ZXJuIHZvaWQgaW5pdF9wcm9ncmVzc19ycHQodm9pZCk7CisgZXh0ZXJuIHZvaWQgc3RvcF9wcm9ncmVzc19ycHQodm9pZCk7CisgZXh0ZXJuIHZvaWQgc3VtbWFyeV9yZXBvcnQodm9pZCk7CistZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKTsKKy1leHRlcm4gX191aW50NjRfdCBwcmludF9maW5hbF9ycHQodm9pZCk7CisrZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCk7CisrZXh0ZXJuIHVpbnQ2NF90IHByaW50X2ZpbmFsX3JwdCh2b2lkKTsKKyBleHRlcm4gY2hhciAqdGltZXN0YW1wKGludCBlbmQsIGludCBwaGFzZSwgY2hhciAqYnVmKTsKKyBleHRlcm4gY2hhciAqZHVyYXRpb24oaW50IHZhbCwgY2hhciAqYnVmKTsKKyBleHRlcm4gaW50IGRvX3BhcmFsbGVsOworZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmMgYi9yZXBhaXIvcm1hcC5jCitpbmRleCBhYjZlNTgzOS4uMDFkNmYwZmMgMTAwNjQ0CistLS0gYS9yZXBhaXIvcm1hcC5jCisrKysgYi9yZXBhaXIvcm1hcC5jCitAQCAtMzQzLDcgKzM0Myw3IEBAIGVycjoKKyAKKyBzdGF0aWMgaW50CisgZmluZF9maXJzdF96ZXJvX2JpdCgKKy0JX191aW50NjRfdAltYXNrKQorKwl1aW50NjRfdAltYXNrKQorIHsKKyAJaW50CQluOworIAlpbnQJCWIgPSAwOworQEAgLTM1Niw3ICszNTYsNyBAQCBmaW5kX2ZpcnN0X3plcm9fYml0KAorIAorIHN0YXRpYyBpbnQKKyBwb3BjbnQoCistCV9fdWludDY0X3QJbWFzaykKKysJdWludDY0X3QJbWFzaykKKyB7CisgCWludAkJbjsKKyAJaW50CQliID0gMDsKK0BAIC0xMDY0LDE0ICsxMDY0LDE0IEBAIGVycjoKKyAgKiBDb21wYXJlIHRoZSBrZXkgZmllbGRzIG9mIHR3byBybWFwIHJlY29yZHMgLS0gcG9zaXRpdmUgaWYga2V5MSA+IGtleTIsCisgICogbmVnYXRpdmUgaWYga2V5MSA8IGtleTIsIGFuZCB6ZXJvIGlmIGVxdWFsLgorICAqLworLV9faW50NjRfdAorK2ludDY0X3QKKyBybWFwX2RpZmZrZXlzKAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AxLAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AyKQorIHsKKyAJX191NjQJCQlvYTsKKyAJX191NjQJCQlvYjsKKy0JX19pbnQ2NF90CQlkOworKwlpbnQ2NF90CQkJZDsKKyAJc3RydWN0IHhmc19ybWFwX2lyZWMJdG1wOworIAorIAl0bXAgPSAqa3AxOworQEAgLTEwODEsNyArMTA4MSw3IEBAIHJtYXBfZGlmZmtleXMoCisgCXRtcC5ybV9mbGFncyAmPSB+WEZTX1JNQVBfUkVDX0ZMQUdTOworIAlvYiA9IGxpYnhmc19ybWFwX2lyZWNfb2Zmc2V0X3BhY2soJnRtcCk7CisgCistCWQgPSAoX19pbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKKysJZCA9IChpbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKKyAJaWYgKGQpCisgCQlyZXR1cm4gZDsKKyAKK0BAIC0xMTkyLDEwICsxMTkyLDEwIEBAIGZpeF9pbm9kZV9yZWZsaW5rX2ZsYWdzKAorIHsKKyAJc3RydWN0IGlub190cmVlX25vZGUJKmlyZWM7CisgCWludAkJCWJpdDsKKy0JX191aW50NjRfdAkJd2FzOworLQlfX3VpbnQ2NF90CQlpczsKKy0JX191aW50NjRfdAkJZGlmZjsKKy0JX191aW50NjRfdAkJbWFzazsKKysJdWludDY0X3QJCXdhczsKKysJdWludDY0X3QJCWlzOworKwl1aW50NjRfdAkJZGlmZjsKKysJdWludDY0X3QJCW1hc2s7CisgCWludAkJCWVycm9yID0gMDsKKyAJeGZzX2FnaW5vX3QJCWFnaW5vOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmggYi9yZXBhaXIvcm1hcC5oCitpbmRleCA3NTJlY2U4Mi4uMTYxNmFiN2QgMTAwNjQ0CistLS0gYS9yZXBhaXIvcm1hcC5oCisrKysgYi9yZXBhaXIvcm1hcC5oCitAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gaW50IHJtYXBfaW5pdF9jdXJzb3IoeGZzX2FnbnVtYmVyX3QsIHN0cnVjdCB4ZnNfc2xhYl9jdXJzb3IgKiopOworIGV4dGVybiB2b2lkIHJtYXBfYXZvaWRfY2hlY2sodm9pZCk7CisgZXh0ZXJuIGludCBybWFwc192ZXJpZnlfYnRyZWUoc3RydWN0IHhmc19tb3VudCAqLCB4ZnNfYWdudW1iZXJfdCk7CisgCistZXh0ZXJuIF9faW50NjRfdCBybWFwX2RpZmZrZXlzKHN0cnVjdCB4ZnNfcm1hcF9pcmVjICprcDEsCisrZXh0ZXJuIGludDY0X3Qgcm1hcF9kaWZma2V5cyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqa3AxLAorIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtwMik7CisgZXh0ZXJuIHZvaWQgcm1hcF9oaWdoX2tleV9mcm9tX3JlYyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqcmVjLAorIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtleSk7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3NiLmMgYi9yZXBhaXIvc2IuYworaW5kZXggNzdlNTE1NDYuLmFjYzkyODM5IDEwMDY0NAorLS0tIGEvcmVwYWlyL3NiLmMKKysrKyBiL3JlcGFpci9zYi5jCitAQCAtNDAsNyArNDAsNyBAQCBjb3B5X3NiKHhmc19zYl90ICpzb3VyY2UsIHhmc19zYl90ICpkZXN0KQorIAl4ZnNfaW5vX3QJdXF1b3Rpbm87CisgCXhmc19pbm9fdAlncXVvdGlubzsKKyAJeGZzX2lub190CXBxdW90aW5vOworLQlfX3VpbnQxNl90CXZlcnNpb25udW07CisrCXVpbnQxNl90CXZlcnNpb25udW07CisgCisgCXJvb3Rpbm8gPSBkZXN0LT5zYl9yb290aW5vOworIAlyYm1pbm8gPSBkZXN0LT5zYl9yYm1pbm87CitAQCAtMTA2LDggKzEwNiw4IEBAIHZlcmlmeV9zYl9ibG9ja3NpemUoeGZzX3NiX3QgKnNiKQorIHN0YXRpYyBpbnQKKyBfX2ZpbmRfc2Vjb25kYXJ5X3NiKAorIAl4ZnNfc2JfdAkqcnNiLAorLQlfX3VpbnQ2NF90CXN0YXJ0LAorLQlfX3VpbnQ2NF90CXNraXApCisrCXVpbnQ2NF90CXN0YXJ0LAorKwl1aW50NjRfdAlza2lwKQorIHsKKyAJeGZzX29mZl90CW9mZjsKKyAJeGZzX3NiX3QJKnNiOworQEAgLTE4NywxMyArMTg3LDEzIEBAIF9fZmluZF9zZWNvbmRhcnlfc2IoCisgCisgc3RhdGljIGludAorIGd1ZXNzX2RlZmF1bHRfZ2VvbWV0cnkoCistCV9fdWludDY0X3QJCSphZ3NpemUsCistCV9fdWludDY0X3QJCSphZ2NvdW50LAorKwl1aW50NjRfdAkJKmFnc2l6ZSwKKysJdWludDY0X3QJCSphZ2NvdW50LAorIAlsaWJ4ZnNfaW5pdF90CQkqeCkKKyB7CisgCXN0cnVjdCBmc190b3BvbG9neQlmdDsKKyAJaW50CQkJYmxvY2tsb2c7CistCV9fdWludDY0X3QJCWRibG9ja3M7CisrCXVpbnQ2NF90CQlkYmxvY2tzOworIAlpbnQJCQltdWx0aWRpc2s7CisgCisgCW1lbXNldCgmZnQsIDAsIHNpemVvZihmdCkpOworQEAgLTIxNiw5ICsyMTYsOSBAQCBpbnQKKyBmaW5kX3NlY29uZGFyeV9zYih4ZnNfc2JfdCAqcnNiKQorIHsKKyAJaW50CQlyZXR2YWwgPSAwOworLQlfX3VpbnQ2NF90CWFnY291bnQ7CistCV9fdWludDY0X3QJYWdzaXplOworLQlfX3VpbnQ2NF90CXNraXA7CisrCXVpbnQ2NF90CWFnY291bnQ7CisrCXVpbnQ2NF90CWFnc2l6ZTsKKysJdWludDY0X3QJc2tpcDsKKyAJaW50CQlibG9ja2xvZzsKKyAKKyAJLyoKK0BAIC0yMjksNyArMjI5LDcgQEAgZmluZF9zZWNvbmRhcnlfc2IoeGZzX3NiX3QgKnJzYikKKyAJZG9fd2FybihfKCJcbmF0dGVtcHRpbmcgdG8gZmluZCBzZWNvbmRhcnkgc3VwZXJibG9jay4uLlxuIikpOworIAorIAlpZiAodmVyaWZ5X3NiX2Jsb2Nrc2l6ZShyc2IpID09IDApIHsKKy0JCXNraXAgPSAoX191aW50NjRfdClyc2ItPnNiX2FnYmxvY2tzICogcnNiLT5zYl9ibG9ja3NpemU7CisrCQlza2lwID0gKHVpbnQ2NF90KXJzYi0+c2JfYWdibG9ja3MgKiByc2ItPnNiX2Jsb2Nrc2l6ZTsKKyAJCWlmIChza2lwID49IFhGU19BR19NSU5fQllURVMgJiYgc2tpcCA8PSBYRlNfQUdfTUFYX0JZVEVTKQorIAkJCXJldHZhbCA9IF9fZmluZF9zZWNvbmRhcnlfc2IocnNiLCBza2lwLCBza2lwKTsKKyAJfQorQEAgLTM0Myw3ICszNDMsNyBAQCBzYl92YWxpZGF0ZV9pbm9fYWxpZ24oc3RydWN0IHhmc19zYiAqc2IpCisgaW50CisgdmVyaWZ5X3NiKGNoYXIgKnNiX2J1ZiwgeGZzX3NiX3QgKnNiLCBpbnQgaXNfcHJpbWFyeV9zYikKKyB7CistCV9fdWludDMyX3QJYnNpemU7CisrCXVpbnQzMl90CWJzaXplOworIAlpbnQJCWk7CisgCWludAkJcmV0OworIAorQEAgLTM5OSw3ICszOTksNyBAQCB2ZXJpZnlfc2IoY2hhciAqc2JfYnVmLCB4ZnNfc2JfdCAqc2IsIGludCBpc19wcmltYXJ5X3NiKQorIAkJc2ItPnNiX2RibG9ja3MgPCBYRlNfTUlOX0RCTE9DS1Moc2IpKQorIAkJcmV0dXJuKFhSX0JBRF9GU19TSVpFX0RBVEEpOworIAorLQlpZiAoc2ItPnNiX2FnYmxrbG9nICE9IChfX3VpbnQ4X3QpbGlieGZzX2xvZzJfcm91bmR1cChzYi0+c2JfYWdibG9ja3MpKQorKwlpZiAoc2ItPnNiX2FnYmxrbG9nICE9ICh1aW50OF90KWxpYnhmc19sb2cyX3JvdW5kdXAoc2ItPnNiX2FnYmxvY2tzKSkKKyAJCXJldHVybihYUl9CQURfRlNfU0laRV9EQVRBKTsKKyAKKyAJaWYgKHNiLT5zYl9pbm9kZXNpemUgPCBYRlNfRElOT0RFX01JTl9TSVpFICAgICAgICAgICAgICAgICAgICAgfHwKK2RpZmYgLS1naXQgYS9yZXBhaXIvc2Nhbi5jIGIvcmVwYWlyL3NjYW4uYworaW5kZXggYjllZjRkYzMuLjQ0NzYxMWFjIDEwMDY0NAorLS0tIGEvcmVwYWlyL3NjYW4uYworKysrIGIvcmVwYWlyL3NjYW4uYworQEAgLTQyLDEzICs0MiwxMyBAQCBzdHJ1Y3QgYWdoZHJfY250cyB7CisgCXhmc19hZ251bWJlcl90CWFnbm87CisgCXhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKKyAJeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7CistCV9fdWludDY0X3QJYWdmYnRyZWVibGtzOworLQlfX3VpbnQzMl90CWFnaWNvdW50OworLQlfX3VpbnQzMl90CWFnaWZyZWVjb3VudDsKKy0JX191aW50NjRfdAlmZGJsb2NrczsKKy0JX191aW50NjRfdAl1c2VkYmxvY2tzOworLQlfX3VpbnQ2NF90CWlmcmVlY291bnQ7CistCV9fdWludDMyX3QJZmlidGZyZWVjb3VudDsKKysJdWludDY0X3QJYWdmYnRyZWVibGtzOworKwl1aW50MzJfdAlhZ2ljb3VudDsKKysJdWludDMyX3QJYWdpZnJlZWNvdW50OworKwl1aW50NjRfdAlmZGJsb2NrczsKKysJdWludDY0X3QJdXNlZGJsb2NrczsKKysJdWludDY0X3QJaWZyZWVjb3VudDsKKysJdWludDMyX3QJZmlidGZyZWVjb3VudDsKKyB9OworIAorIHZvaWQKK0BAIC03MCwxMCArNzAsMTAgQEAgc2Nhbl9zYnRyZWUoCisgCQkJCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAkJCQlpbnQJCQlzdXNwZWN0LAorIAkJCQlpbnQJCQlpc3Jvb3QsCistCQkJCV9fdWludDMyX3QJCW1hZ2ljLAorKwkJCQl1aW50MzJfdAkJbWFnaWMsCisgCQkJCXZvaWQJCQkqcHJpdiksCisgCWludAkJaXNyb290LAorLQlfX3VpbnQzMl90CW1hZ2ljLAorKwl1aW50MzJfdAltYWdpYywKKyAJdm9pZAkJKnByaXYsCisgCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKQorIHsKK0BAIC0xMTAsMjMgKzExMCwyMyBAQCBzY2FuX2xidHJlZSgKKyAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAkJCQl4ZnNfaW5vX3QJCWlubywKKyAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCQkJCV9fdWludDY0X3QJCSpuZXgsCisrCQkJCXVpbnQ2NF90CQkqbmV4LAorIAkJCQlibGttYXBfdAkJKipibGttYXBwLAorIAkJCQlibWFwX2N1cnNvcl90CQkqYm1fY3Vyc29yLAorIAkJCQlpbnQJCQlpc3Jvb3QsCisgCQkJCWludAkJCWNoZWNrX2R1cHMsCisgCQkJCWludAkJCSpkaXJ0eSwKKy0JCQkJX191aW50NjRfdAkJbWFnaWMpLAorKwkJCQl1aW50NjRfdAkJbWFnaWMpLAorIAlpbnQJCXR5cGUsCisgCWludAkJd2hpY2hmb3JrLAorIAl4ZnNfaW5vX3QJaW5vLAorIAl4ZnNfcmZzYmxvY2tfdAkqdG90LAorLQlfX3VpbnQ2NF90CSpuZXgsCisrCXVpbnQ2NF90CSpuZXgsCisgCWJsa21hcF90CSoqYmxrbWFwcCwKKyAJYm1hcF9jdXJzb3JfdAkqYm1fY3Vyc29yLAorIAlpbnQJCWlzcm9vdCwKKyAJaW50CQljaGVja19kdXBzLAorLQlfX3VpbnQ2NF90CW1hZ2ljLAorKwl1aW50NjRfdAltYWdpYywKKyAJY29uc3Qgc3RydWN0IHhmc19idWZfb3BzICpvcHMpCisgeworIAl4ZnNfYnVmX3QJKmJwOworQEAgLTE3OSwxMyArMTc5LDEzIEBAIHNjYW5fYm1hcGJ0KAorIAl4ZnNfZnNibG9ja190CQlibm8sCisgCXhmc19pbm9fdAkJaW5vLAorIAl4ZnNfcmZzYmxvY2tfdAkJKnRvdCwKKy0JX191aW50NjRfdAkJKm5leCwKKysJdWludDY0X3QJCSpuZXgsCisgCWJsa21hcF90CQkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCWludAkJCWlzcm9vdCwKKyAJaW50CQkJY2hlY2tfZHVwcywKKyAJaW50CQkJKmRpcnR5LAorLQlfX3VpbnQ2NF90CQltYWdpYykKKysJdWludDY0X3QJCW1hZ2ljKQorIHsKKyAJaW50CQkJaTsKKyAJaW50CQkJZXJyOworQEAgLTU0OCw3ICs1NDgsNyBAQCBzY2FuX2FsbG9jYnQoCisgCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAlpbnQJCQlzdXNwZWN0LAorIAlpbnQJCQlpc3Jvb3QsCistCV9fdWludDMyX3QJCW1hZ2ljLAorKwl1aW50MzJfdAkJbWFnaWMsCisgCXZvaWQJCQkqcHJpdikKKyB7CisgCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMgPSBwcml2OworQEAgLTkzMCw3ICs5MzAsNyBAQCBzY2FuX3JtYXBidCgKKyAJeGZzX2FnbnVtYmVyX3QJCWFnbm8sCisgCWludAkJCXN1c3BlY3QsCisgCWludAkJCWlzcm9vdCwKKy0JX191aW50MzJfdAkJbWFnaWMsCisrCXVpbnQzMl90CQltYWdpYywKKyAJdm9pZAkJCSpwcml2KQorIHsKKyAJY29uc3QgY2hhcgkJKm5hbWUgPSAicm1hcCI7CitAQCAtMTIzMyw3ICsxMjMzLDcgQEAgc2Nhbl9yZWZjYnQoCisgCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAlpbnQJCQlzdXNwZWN0LAorIAlpbnQJCQlpc3Jvb3QsCistCV9fdWludDMyX3QJCW1hZ2ljLAorKwl1aW50MzJfdAkJbWFnaWMsCisgCXZvaWQJCQkqcHJpdikKKyB7CisgCWNvbnN0IGNoYXIJCSpuYW1lID0gInJlZmNvdW50IjsKK0BAIC0xOTM5LDcgKzE5MzksNyBAQCBzY2FuX2lub2J0KAorIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKKyAJaW50CQkJc3VzcGVjdCwKKyAJaW50CQkJaXNyb290LAorLQlfX3VpbnQzMl90CQltYWdpYywKKysJdWludDMyX3QJCW1hZ2ljLAorIAl2b2lkCQkJKnByaXYpCisgeworIAlzdHJ1Y3QgYWdoZHJfY250cwkqYWdjbnRzID0gcHJpdjsKK0BAIC0yMTc2LDcgKzIxNzYsNyBAQCB2YWxpZGF0ZV9hZ2YoCisgCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMpCisgeworIAl4ZnNfYWdibG9ja190CQlibm87CistCV9fdWludDMyX3QJCW1hZ2ljOworKwl1aW50MzJfdAkJbWFnaWM7CisgCisgCWJubyA9IGJlMzJfdG9fY3B1KGFnZi0+YWdmX3Jvb3RzW1hGU19CVE5VTV9CTk9dKTsKKyAJaWYgKGJubyAhPSAwICYmIHZlcmlmeV9hZ2JubyhtcCwgYWdubywgYm5vKSkgeworQEAgLTIyNzQsNyArMjI3NCw3IEBAIHZhbGlkYXRlX2FnaSgKKyB7CisgCXhmc19hZ2Jsb2NrX3QJCWJubzsKKyAJaW50CQkJaTsKKy0JX191aW50MzJfdAkJbWFnaWM7CisrCXVpbnQzMl90CQltYWdpYzsKKyAKKyAJYm5vID0gYmUzMl90b19jcHUoYWdpLT5hZ2lfcm9vdCk7CisgCWlmIChibm8gIT0gMCAmJiB2ZXJpZnlfYWdibm8obXAsIGFnbm8sIGJubykpIHsKK0BAIC0yNDk5LDEwICsyNDk5LDEwIEBAIHNjYW5fYWdzKAorIAlpbnQJCQlzY2FuX3RocmVhZHMpCisgeworIAlzdHJ1Y3QgYWdoZHJfY250cyAqYWdjbnRzOworLQlfX3VpbnQ2NF90CWZkYmxvY2tzID0gMDsKKy0JX191aW50NjRfdAlpY291bnQgPSAwOworLQlfX3VpbnQ2NF90CWlmcmVlY291bnQgPSAwOworLQlfX3VpbnQ2NF90CXVzZWRibG9ja3MgPSAwOworKwl1aW50NjRfdAlmZGJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CWljb3VudCA9IDA7CisrCXVpbnQ2NF90CWlmcmVlY291bnQgPSAwOworKwl1aW50NjRfdAl1c2VkYmxvY2tzID0gMDsKKyAJeGZzX2FnbnVtYmVyX3QJaTsKKyAJd29ya19xdWV1ZV90CXdxOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9zY2FuLmggYi9yZXBhaXIvc2Nhbi5oCitpbmRleCBlYThjMGJmMi4uOWJiZTFlNjkgMTAwNjQ0CistLS0gYS9yZXBhaXIvc2Nhbi5oCisrKysgYi9yZXBhaXIvc2Nhbi5oCitAQCAtMzAsMjMgKzMwLDIzIEBAIGludCBzY2FuX2xidHJlZSgKKyAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAkJCQl4ZnNfaW5vX3QJCWlubywKKyAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCQkJCV9fdWludDY0X3QJCSpuZXgsCisrCQkJCXVpbnQ2NF90CQkqbmV4LAorIAkJCQlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCisgCQkJCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCQkJCWludAkJCWlzcm9vdCwKKyAJCQkJaW50CQkJY2hlY2tfZHVwcywKKyAJCQkJaW50CQkJKmRpcnR5LAorLQkJCQlfX3VpbnQ2NF90CQltYWdpYyksCisrCQkJCXVpbnQ2NF90CQltYWdpYyksCisgCWludAkJdHlwZSwKKyAJaW50CQl3aGljaGZvcmssCisgCXhmc19pbm9fdAlpbm8sCisgCXhmc19yZnNibG9ja190CSp0b3QsCistCV9fdWludDY0X3QJKm5leCwKKysJdWludDY0X3QJKm5leCwKKyAJc3RydWN0IGJsa21hcAkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJKmJtX2N1cnNvciwKKyAJaW50CQlpc3Jvb3QsCisgCWludAkJY2hlY2tfZHVwcywKKy0JX191aW50NjRfdAltYWdpYywKKysJdWludDY0X3QJbWFnaWMsCisgCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKTsKKyAKKyBpbnQgc2Nhbl9ibWFwYnQoCitAQCAtNTcsMTMgKzU3LDEzIEBAIGludCBzY2FuX2JtYXBidCgKKyAJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAl4ZnNfaW5vX3QJCWlubywKKyAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCV9fdWludDY0X3QJCSpuZXgsCisrCXVpbnQ2NF90CQkqbmV4LAorIAlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCWludAkJCWlzcm9vdCwKKyAJaW50CQkJY2hlY2tfZHVwcywKKyAJaW50CQkJKmRpcnR5LAorLQlfX3VpbnQ2NF90CQltYWdpYyk7CisrCXVpbnQ2NF90CQltYWdpYyk7CisgCisgdm9pZAorIHNjYW5fYWdzKAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvbGlua19uZWVkZWRfbGlicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL2xpbmtfbmVlZGVkX2xpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTYzNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvbGlua19uZWVkZWRfbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvbGlieGNtZC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2xpYnhjbWQvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGNtZC9NYWtlZmlsZQotQEAgLTMwLDEwICszMCwyMSBAQCBMQ0ZMQUdTICs9IC1ERU5BQkxFX0VESVRMSU5FCi0gTFRMSUJTICs9ICQoTElCRURJVExJTkUpICQoTElCVEVSTUNBUCkKLSBlbmRpZgotIAotK2lmZXEgKCQoRU5BQkxFX0JMS0lEKSx5ZXMpCi0rTENGTEFHUyArPSAtREVOQUJMRV9CTEtJRAotK0xUTElCUyArPSAkKExJQkJMS0lEKQotK2VuZGlmCi0rCi0rTFRMSUJTICs9ICQoTElCWEZTKQotKwotIGRlZmF1bHQ6IGx0ZGVwZW5kICQoTFRMSUJSQVJZKQotIAotIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotLWluc3RhbGwgaW5zdGFsbC1kZXY6IGRlZmF1bHQKLStpbnN0YWxsOiBkZWZhdWx0Ci0rCSQoSU5TVEFMTF9MVExJQikKLSsKLStpbnN0YWxsLWRldjogZGVmYXVsdAotKwkkKElOU1RBTExfTFRMSUJfREVWKQotIAotIC1pbmNsdWRlIC5sdGRlcAotSW5kZXg6IHhmc3Byb2dzLTQuMTAuMC9saWJ4ZnMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4ZnNwcm9ncy00LjEwLjAub3JpZy9saWJ4ZnMvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGZzL01ha2VmaWxlCi1AQCAtMTM3LDYgKzEzNyw3IEBAIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotIGluc3RhbGw6IGRlZmF1bHQKLSAJJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfSU5DX0RJUikKLSsJJChJTlNUQUxMX0xUTElCKQotIAotIGluc3RhbGwtaGVhZGVyczogJChhZGRzdWZmaXggLWhkcnMsICQoUEtHSEZJTEVTKSkKLSAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvbGlieGxvZy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2xpYnhsb2cvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGxvZy9NYWtlZmlsZQotQEAgLTE5LDYgKzE5LDEwIEBAIGRlZmF1bHQ6IGx0ZGVwZW5kICQoTFRMSUJSQVJZKQotIAotIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotLWluc3RhbGwgaW5zdGFsbC1kZXY6IGRlZmF1bHQKLStpbnN0YWxsOiBkZWZhdWx0Ci0rCSQoSU5TVEFMTF9MVExJQikKLSsKLStpbnN0YWxsLWRldjogZGVmYXVsdAotKwkkKElOU1RBTExfTFRMSUJfREVWKQotIAotIC1pbmNsdWRlIC5sdGRlcAotSW5kZXg6IHhmc3Byb2dzLTQuMTAuMC9pby9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2lvL01ha2VmaWxlCi0rKysgeGZzcHJvZ3MtNC4xMC4wL2lvL01ha2VmaWxlCi1AQCAtMTMsNyArMTMsNyBAQAotIAlnZXRydXNhZ2UuYyBpbWFwLmMgbGluay5jIG1tYXAuYyBvcGVuLmMgcGFyZW50LmMgcHJlYWQuYyBwcmVhbGxvYy5jIFwKLSAJcHdyaXRlLmMgcmVmbGluay5jIHNlZWsuYyBzaHV0ZG93bi5jIHN5bmMuYyB0cnVuY2F0ZS5jIHV0aW1lcy5jCi0gCi0tTExETElCUyA9ICQoTElCWENNRCkgJChMSUJIQU5ETEUpICQoTElCUFRIUkVBRCkKLStMTERMSUJTID0gJChMSUJYQ01EKSAkKExJQkhBTkRMRSkgJChMSUJVVUlEKSAkKExJQlBUSFJFQUQpCi0gTFRERVBFTkRFTkNJRVMgPSAkKExJQlhDTUQpICQoTElCSEFORExFKQotIExMREZMQUdTID0gLXN0YXRpYy1saWJ0b29sLWxpYnMKLSAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvcXVvdGEvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4ZnNwcm9ncy00LjEwLjAub3JpZy9xdW90YS9NYWtlZmlsZQotKysrIHhmc3Byb2dzLTQuMTAuMC9xdW90cS9NYWtlZmlsZQotQEAgLTE0LDcgKzE0LDcgQEAKLSBQQ0ZJTEVTID0gZGFyd2luLmMgZnJlZWJzZC5jIGlyaXguYyBsaW51eC5jCi0gTFNSQ0ZJTEVTID0gJChzaGVsbCBlY2hvICQoUENGSUxFUykgfCBzZWQgLWUgInMvJChQS0dfUExBVEZPUk0pLmMvL2ciKQotIAotLUxMRExJQlMgPSAkKExJQlhDTUQpCi0rTExETElCUyA9ICQoTElCWENNRCkgJChMSUJVVUlEKQotIExUREVQRU5ERU5DSUVTID0gJChMSUJYQ01EKQotIExMREZMQUdTID0gLXN0YXRpYwotIAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL3JlbW92ZV9mbGFnc19mcm9tX2J1aWxkX2ZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTlhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaApAQCAtMCwwICsxLDEzIEBACitJbmRleDogeGZzcHJvZ3MtNC4xMi4wL2luY2x1ZGUvYnVpbGRkZWZzLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geGZzcHJvZ3MtNC4xMi4wLm9yaWcvaW5jbHVkZS9idWlsZGRlZnMuaW4KKysrKyB4ZnNwcm9ncy00LjEyLjAvaW5jbHVkZS9idWlsZGRlZnMuaW4KK0BAIC0xNjQsNyArMTY0LDcgQEAgaWZlcSAoJChFTkFCTEVfR0VUVEVYVCkseWVzKQorIEdDRkxBR1MgKz0gLURFTkFCTEVfR0VUVEVYVAorIGVuZGlmCisgCistQlVJTERfQ0ZMQUdTICs9ICQoR0NGTEFHUykgJChQQ0ZMQUdTKQorK0JVSUxEX0NGTEFHUyArPSAkKEdDRkxBR1MpCisgIyBGaXJzdCwgR2xvYmFsLCBQbGF0Zm9ybSwgTG9jYWwgQ0ZMQUdTCisgQ0ZMQUdTICs9ICQoRkNGTEFHUykgJChPUFRJTUlaRVIpICQoR0NGTEFHUykgJChQQ0ZMQUdTKSAkKExDRkxBR1MpCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjNTdlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL3hmc3Byb2dzLTQuMTIuMC1maXhfbXVzbC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSAyMTI1MzYxMGY5ZWY4N2RiOGUyYTc1Yjg2M2I3ZmNmYmQwY2RiNDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxMzo0NTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBJbiBwYXRjaCA0OTQ0ZGVmYWQ0ICgieGZzX2RiOiByZWRpcmVjdCBwcmludGZzIHdoZW4KKyBtZXRhZHVtcGluZyB0byBzdGRvdXQiKSwgd2Ugc29sdmVkIHRoZSBwcm9ibGVtIG9mIHhmc19kYiBwcmludGZzIGVuZGluZyB1cCBpbgorIHRoZSBtZXRhZHVtcCBzdHJlYW0gYnkgcmVhc3NpZ25pbmcgc3Rkb3V0IGZvciB0aGUgZHVyYXRpb24gb2YgYSBzdGRvdXQKKyBtZXRhZHVtcC4gIFVuZm9ydHVuYXRlbHksIG11c2wgZG9lc24ndCBhbGxvdyBzdGRvdXQgdG8gYmUgcmVhc3NpZ25lZCAoaW4KKyB0aGVpciB2aWV3ICJleHRlcm4gRklMRSAqc3Rkb3V0IiBtZWFucyAiZXh0ZXJuIEZJTEUgKiBjb25zdCBzdGRvdXQiKSwgc28gd2UKKyBhYmFuZG9uIHRoZSBvbGQgYXBwcm9hY2ggaW4gZmF2b3Igb2YgcGxheWluZyBnYW1lcyB3aXRoIGR1cCgpIHRvIHN3aXRjaCB0aGUKKyByYXcgZmlsZSBkZXNjcmlwdG9ycy4KKworV2hpbGUgd2UncmUgYXQgaXQsIGZpeCBhIHJlZ3Jlc3Npb24gd2hlcmUgYW4gdW5jb252ZXJ0ZWQgb3V0ZiB0ZXN0CithbGxvd3MgcHJvZ3Jlc3MgaW5mbyB0byBlbmQgdXAgaW4gdGhlIG1ldGFkdW1wIHN0cmVhbS4KKworU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KKy0tLQorIGRiL21ldGFkdW1wLmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RiL21ldGFkdW1wLmMgYi9kYi9tZXRhZHVtcC5jCitpbmRleCA5NjY0MWUwLi40ZTJmNjQ4IDEwMDY0NAorLS0tIGEvZGIvbWV0YWR1bXAuYworKysrIGIvZGIvbWV0YWR1bXAuYworQEAgLTc4LDYgKzc4LDcgQEAgc3RhdGljIGludAkJb2JmdXNjYXRlID0gMTsKKyBzdGF0aWMgaW50CQl6ZXJvX3N0YWxlX2RhdGEgPSAxOworIHN0YXRpYyBpbnQJCXNob3dfd2FybmluZ3MgPSAwOworIHN0YXRpYyBpbnQJCXByb2dyZXNzX3NpbmNlX3dhcm5pbmcgPSAwOworK3N0YXRpYyBib29sCQlzdGRvdXRfbWV0YWR1bXA7CisgCisgdm9pZAorIG1ldGFkdW1wX2luaXQodm9pZCkKK0BAIC0xMzcsNyArMTM4LDcgQEAgcHJpbnRfcHJvZ3Jlc3MoY29uc3QgY2hhciAqZm10LCAuLi4pCisgCXZhX2VuZChhcCk7CisgCWJ1ZltzaXplb2YoYnVmKS0xXSA9ICdcMCc7CisgCistCWYgPSAob3V0ZiA9PSBzdGRvdXQpID8gc3RkZXJyIDogc3Rkb3V0OworKwlmID0gc3Rkb3V0X21ldGFkdW1wID8gc3RkZXJyIDogc3Rkb3V0OworIAlmcHJpbnRmKGYsICJcciUtNTlzIiwgYnVmKTsKKyAJZmZsdXNoKGYpOworIAlwcm9ncmVzc19zaW5jZV93YXJuaW5nID0gMTsKK0BAIC0yNzUwLDcgKzI3NTEsOCBAQCBtZXRhZHVtcF9mKAorIAl4ZnNfYWdudW1iZXJfdAlhZ25vOworIAlpbnQJCWM7CisgCWludAkJc3RhcnRfaW9jdXJfc3A7CistCWJvb2wJCXN0ZG91dF9tZXRhZHVtcCA9IGZhbHNlOworKwlpbnQJCW91dGZkID0gLTE7CisrCWludAkJcmV0OworIAljaGFyCQkqcDsKKyAKKyAJZXhpdGNvZGUgPSAxOworQEAgLTI4NzAsMTYgKzI4NzIsMzUgQEAgbWV0YWR1bXBfZigKKyAJCSAqIG1ldGFkdW1wIG9wZXJhdGlvbiBzbyB0aGF0IGRicHJpbnRmIGFuZCBvdGhlciBtZXNzYWdlcworIAkJICogYXJlIHNlbnQgdG8gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiBwb2xsdXRpbmcgdGhlCisgCQkgKiBtZXRhZHVtcCBzdHJlYW0uCisrCQkgKgorKwkJICogV2UgZ2V0IHRvIGRvIHRoaXMgdGhlIGhhcmQgd2F5IGJlY2F1c2UgbXVzbCBkb2Vzbid0CisrCQkgKiBhbGxvdyByZWFzc2lnbm1lbnQgb2Ygc3Rkb3V0LgorIAkJICovCistCQlvdXRmID0gc3Rkb3V0OworLQkJc3Rkb3V0ID0gc3RkZXJyOworKwkJZmZsdXNoKHN0ZG91dCk7CisrCQlvdXRmZCA9IGR1cChTVERPVVRfRklMRU5PKTsKKysJCWlmIChvdXRmZCA8IDApIHsKKysJCQlwZXJyb3IoIm9wZW5pbmcgZHVtcCBzdHJlYW0iKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKysJCXJldCA9IGR1cDIoU1RERVJSX0ZJTEVOTywgU1RET1VUX0ZJTEVOTyk7CisrCQlpZiAocmV0IDwgMCkgeworKwkJCXBlcnJvcigicmVkaXJlY3Rpbmcgc3Rkb3V0Iik7CisrCQkJY2xvc2Uob3V0ZmQpOworKwkJCWdvdG8gb3V0OworKwkJfQorKwkJb3V0ZiA9IGZkb3BlbihvdXRmZCwgImEiKTsKKysJCWlmIChvdXRmID09IE5VTEwpIHsKKysJCQlmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBjcmVhdGUgZHVtcCBzdHJlYW1cbiIpOworKwkJCWR1cDIob3V0ZmQsIDEpOworKwkJCWNsb3NlKG91dGZkKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKyAJCXN0ZG91dF9tZXRhZHVtcCA9IHRydWU7CisgCX0gZWxzZSB7CisgCQlvdXRmID0gZm9wZW4oYXJndltvcHRpbmRdLCAid2IiKTsKKyAJCWlmIChvdXRmID09IE5VTEwpIHsKKyAJCQlwcmludF93YXJuaW5nKCJjYW5ub3QgY3JlYXRlIGR1bXAgZmlsZSIpOworLQkJCWZyZWUobWV0YWJsb2NrKTsKKy0JCQlyZXR1cm4gMDsKKysJCQlnb3RvIG91dDsKKyAJCX0KKyAJfQorIAorQEAgLTI5MDcsMTUgKzI5MjgsMTkgQEAgbWV0YWR1bXBfZigKKyAJaWYgKHByb2dyZXNzX3NpbmNlX3dhcm5pbmcpCisgCQlmcHV0YygnXG4nLCBzdGRvdXRfbWV0YWR1bXAgPyBzdGRlcnIgOiBzdGRvdXQpOworIAorLQlpZiAoc3Rkb3V0X21ldGFkdW1wKQorLQkJc3Rkb3V0ID0gb3V0ZjsKKy0JZWxzZQorLQkJZmNsb3NlKG91dGYpOworKwlpZiAoc3Rkb3V0X21ldGFkdW1wKSB7CisrCQlmZmx1c2gob3V0Zik7CisrCQlmZmx1c2goc3Rkb3V0KTsKKysJCXJldCA9IGR1cDIob3V0ZmQsIFNURE9VVF9GSUxFTk8pOworKwkJaWYgKHJldCA8IDApCisrCQkJcGVycm9yKCJ1bi1yZWRpcmVjdGluZyBzdGRvdXQiKTsKKysJfQorKwlmY2xvc2Uob3V0Zik7CisgCisgCS8qIGNsZWFudXAgaW9jdXIgc3RhY2sgKi8KKyAJd2hpbGUgKGlvY3VyX3NwID4gc3RhcnRfaW9jdXJfc3ApCisgCQlwb3BfY3VyKCk7CistCisrb3V0OgorIAlmcmVlKG1ldGFibG9jayk7CisgCisgCXJldHVybiAwOworLS0gCisyLjEzLjMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdlMTBjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIFV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNFTlNFX2xpYmhhbmRsZSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xMDJmN2ZlYzNkNTNjN2M4ZjBiN2JhZjliZjlkNzZhOCIKLURFUEVORFMgPSAidXRpbC1saW51eCB1dGlsLWxpbnV4LW5hdGl2ZSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc3Byb2dzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rX25lZWRlZF9saWJzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZGJiMDQ0OTNhZGRmMDE0ZGIwN2E3ZTJiOTZiMjgwNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGNiOWFiMmM2ODY2OTlkMzc5MTQzNTRjZTM5OTJiNGFmZjM2NzcwOTNjYmNlMDZhZDE4YmY3OThkYThhOGE3IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotUEFDS0FHRVMgPSsgIiR7UE59LWZzY2sgJHtQTn0tbWtmcyAke1BOfS1yZXBhaXIgbGliaGFuZGxlIgotCi1ERVBFTkRTICs9ICJ1dGlsLWxpbnV4IgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIgotCi1GSUxFU18ke1BOfS1mc2NrID0gIiR7YmFzZV9zYmluZGlyfS9mc2NrLnhmcyIKLUZJTEVTXyR7UE59LW1rZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZnMueGZzIgotRklMRVNfJHtQTn0tcmVwYWlyID0gIiR7YmFzZV9zYmluZGlyfS94ZnNfcmVwYWlyIgotCi1GSUxFU19saWJoYW5kbGUgPSAiJHtiYXNlX2xpYmRpcn0vbGliaGFuZGxlJHtTT0xJQlN9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZ2V0dGV4dD1ubyBcCi0gICAgICAgICAgICAgICAgSU5TVEFMTF9VU0VSPXJvb3QgXAotICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKLSIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9tNCAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIGJsa2lkIgotCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZT15ZXMsLS1lbmFibGUtcmVhZGxpbmU9bm8scmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2Jsa2lkXSA9ICItLWVuYWJsZS1ibGtpZD15ZXMsLS1lbmFibGUtYmxraWQ9bm8sdXRpbC1saW51eCIKLQotZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKLQotRVhUUkFfT0VNQUtFID0gIkRJU1RfUk9PVD0nJHtEfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBleHBvcnQgQlVJTERfQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSIKLSAgICAjIFByZXZlbnQgTWFrZWZpbGUgZnJvbSBjYWxsaW5nIGNvbmZpZ3VyZSB3aXRob3V0IGFyZ3VtZW50cywKLSAgICAjIHdoZW4gZG9fY29uZmlndXJlIGdldHMgY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lLgotICAgIHJtIC1mICR7Qn0vaW5jbHVkZS9idWlsZGRlZnMgJHtCfS9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaCAke0J9L2NvbmZpZ3VyZQotICAgICMgUmVjcmVhdGUgY29uZmlndXJlIHNjcmlwdC4KLSAgICBvZV9ydW5tYWtlIGNvbmZpZ3VyZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGwtZGV2Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4ODY5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTIuMC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIFV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNFTlNFX2xpYmhhbmRsZSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xMDJmN2ZlYzNkNTNjN2M4ZjBiN2JhZjliZjlkNzZhOCIKK0RFUEVORFMgPSAidXRpbC1saW51eCB1dGlsLWxpbnV4LW5hdGl2ZSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc3Byb2dzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEteGZzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZV9mbGFnc19mcm9tX2J1aWxkX2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3hmc3Byb2dzLTQuMTIuMC1maXhfbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzQ4YjBlMWQ3YmQxY2Q4MmQ2NGI5MWZmMzdlNzI3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzMwYWQ4ZDczN2Y0MTUyYWU1MTE1ODAxMDJlMmZjNDkyMTJiYjUxZGZiNGI2MTQwODQzNDRhYmFlNDZkMGRmIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRVMgPSsgIiR7UE59LWZzY2sgJHtQTn0tbWtmcyAke1BOfS1yZXBhaXIgbGliaGFuZGxlIgorCitERVBFTkRTICs9ICJ1dGlsLWxpbnV4IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIgorCitGSUxFU18ke1BOfS1mc2NrID0gIiR7YmFzZV9zYmluZGlyfS9mc2NrLnhmcyIKK0ZJTEVTXyR7UE59LW1rZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZnMueGZzIgorRklMRVNfJHtQTn0tcmVwYWlyID0gIiR7YmFzZV9zYmluZGlyfS94ZnNfcmVwYWlyIgorCitGSUxFU19saWJoYW5kbGUgPSAiJHtiYXNlX2xpYmRpcn0vbGliaGFuZGxlJHtTT0xJQlN9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZ2V0dGV4dD1ubyBcCisgICAgICAgICAgICAgICAgSU5TVEFMTF9VU0VSPXJvb3QgXAorICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKKyIKKworRElTQUJMRV9TVEFUSUMgPSAiIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9tNCAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIGJsa2lkIgorCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZT15ZXMsLS1lbmFibGUtcmVhZGxpbmU9bm8scmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2Jsa2lkXSA9ICItLWVuYWJsZS1ibGtpZD15ZXMsLS1lbmFibGUtYmxraWQ9bm8sdXRpbC1saW51eCIKKworZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKK2V4cG9ydCBCVUlMRF9WRVJCT1NFPSIxIgorZXhwb3J0IHRhZ25hbWU9IkNDIgorCitFWFRSQV9PRU1BS0UgPSAiRElTVF9ST09UPScke0R9JyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGV4cG9ydCBCVUlMRF9DQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9IgorICAgICMgUHJldmVudCBNYWtlZmlsZSBmcm9tIGNhbGxpbmcgY29uZmlndXJlIHdpdGhvdXQgYXJndW1lbnRzLAorICAgICMgd2hlbiBkb19jb25maWd1cmUgZ2V0cyBjYWxsZWQgZm9yIGEgc2Vjb25kIHRpbWUuCisgICAgcm0gLWYgJHtCfS9pbmNsdWRlL2J1aWxkZGVmcyAke0J9L2luY2x1ZGUvcGxhdGZvcm1fZGVmcy5oICR7Qn0vY29uZmlndXJlCisgICAgIyBSZWNyZWF0ZSBjb25maWd1cmUgc2NyaXB0LgorICAgIG9lX3J1bm1ha2UgY29uZmlndXJlCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtZGV2CisgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vKi5sYQorICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQppbmRleCA3ZWVlMGUxLi4yNWVmODVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9SRUFETUUKQEAgLTEsMTcgKzEsMTcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCiticmFuY2g6IHJvY2tvCiByZXZpc2lvbjogSEVBRAogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1nbm9tZV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLWdub21lXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JwogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bcHlyb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZ25vbWVdW3JvY2tvXVtQQVRDSCcKIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCmluZGV4IGZjZTU2MjcuLmExMzg4MTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTIsNiArMTIsNiBAQAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX2dub21lLWxheWVyID0gIjEiCiAKLUxBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciIKK0xBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciBuZXR3b3JraW5nLWxheWVyIgogCiBBVkFISV9HVEtfcG4tYXZhaGktdWkgPSAiZ3RrIGd0azMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2NoZWVzZS9jaGVlc2VfMi4zMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9jaGVlc2UvY2hlZXNlXzIuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y1YTViMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2NoZWVzZS9jaGVlc2VfMi4zMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJUYWtlIHBob3RvcyBhbmQgdmlkZW9zIHdpdGggeW91ciB3ZWJjYW0sIHdpdGggZnVuIGdyYXBoaWNhbCBlZmZlY3RzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExN2NiMGE4NzNkMjUyNDQwYWNmZGY5YjNkMGU3ZmJmIgotCi1ERVBFTkRTID0gImd0aysgZ3N0cmVhbWVyIGdzdC1wbHVnaW5zLWJhc2UgbGliY2FuYmVycmEgdWRldiBsaWJyc3ZnIGdub21lLWRlc2t0b3AgZXZvbHV0aW9uLWRhdGEtc2VydmVyIGludGx0b29sLW5hdGl2ZSIKLQotUFIgPSAicjIiCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTU5OWZkZWQ4YTE3OTdlYTUxZmIwMTBhZjRlNmM0NWIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0OGYwMzQ3MGM2ZjUyN2NhYTBlM2IyNjlkM2FmY2ZmODZhZTA5MzlhNzRmNjZjZTAzMGQ0ZWVkM2JjM2NiZDlhIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnc3QtcGx1Z2lucy1nb29kLW1ldGEgZ3N0LXBsdWdpbnMtYmFzZS1tZXRhIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAiczogaGVscCA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBOQkxBQ0tMSVNUW2NoZWVzZV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ3N0cmVhbWVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtjaGVlc2VdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdub21lLWRlc2t0b3AgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2Jyb3dzZXJfY29tbWFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvYnJvd3Nlcl9jb21tYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWU0NWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvYnJvd3Nlcl9jb21tYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBEZWJpYW4gMC4xLjgtMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL3NyYy9Db25maWcuY3h4IGIvc3JjL0NvbmZpZy5jeHgKLWluZGV4IDI4ZjM3YWIuLmJjNTg4MTkgMTAwNjQ0Ci0tLS0gYS9zcmMvQ29uZmlnLmN4eAotKysrIGIvc3JjL0NvbmZpZy5jeHgKLUBAIC0yMiw3ICsyMiw3IEBACi0gdXNpbmcgbmFtZXNwYWNlIGVQREZWaWV3OwotIAotIC8vIENvbnN0YW50cwotLXN0YXRpYyBjb25zdCBnY2hhciAqREVGQVVMVF9FWFRFUk5BTF9CUk9XU0VSX0NPTU1BTkRfTElORSA9ICJmaXJlZm94ICVzIjsKLStzdGF0aWMgY29uc3QgZ2NoYXIgKkRFRkFVTFRfRVhURVJOQUxfQlJPV1NFUl9DT01NQU5EX0xJTkUgPSAieC13d3ctYnJvd3NlciAlcyI7Ci0gc3RhdGljIGNvbnN0IGdjaGFyICpERUZBVUxUX09QRU5fRklMRV9GT0xERVIgPSBOVUxMOwotIHN0YXRpYyBjb25zdCBnY2hhciAqREVGQVVMVF9TQVZFX0ZJTEVfRk9MREVSID0gTlVMTDsKLSBzdGF0aWMgY29uc3QgZ2Jvb2xlYW4gREVGQVVMVF9TSE9XX1NUQVRVU0JBUiA9IFRSVUU7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2ZpeC1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2ZpeC1mb3JtYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDViOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9maXgtZm9ybWF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBEZWJpYW4gMC4xLjgtMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL3NyYy9ndGsvTWFpblZpZXcuY3h4IGIvc3JjL2d0ay9NYWluVmlldy5jeHgKLWluZGV4IGI5ODNiZmYuLmY4N2RlMjggMTAwNjQ0Ci0tLS0gYS9zcmMvZ3RrL01haW5WaWV3LmN4eAotKysrIGIvc3JjL2d0ay9NYWluVmlldy5jeHgKLUBAIC02MzQsOCArNjM0LDkgQEAgTWFpblZpZXc6OnNob3dFcnJvck1lc3NhZ2UgKGNvbnN0IGdjaGFyICp0aXRsZSwgY29uc3QgZ2NoYXIgKmJvZHkpCi0gICAgICAgICAgICAgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAotICAgICAgICAgICAgIEdUS19NRVNTQUdFX0VSUk9SLAotICAgICAgICAgICAgIEdUS19CVVRUT05TX09LLAotKyAgICAgICAgICAgICIlcyIsCi0gICAgICAgICAgICAgdGl0bGUpOwotLSAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0IChHVEtfTUVTU0FHRV9ESUFMT0coZXJyb3JEaWFsb2cpLAotKyAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0IChHVEtfTUVTU0FHRV9ESUFMT0coZXJyb3JEaWFsb2cpLCAiJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5KTsKLSAgICAgZ3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGVycm9yRGlhbG9nKSk7Ci0gICAgIGd0a193aWRnZXRfZGVzdHJveSAoZXJyb3JEaWFsb2cpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9nbGliLXNpbmdsZS1pbmNsdWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9nbGliLXNpbmdsZS1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGE0OTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvZ2xpYi1zaW5nbGUtaW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUltcG9ydGVkIGZyb20gRGViaWFuIDAuMS44LTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLS1naXQgYS9zcmMvZ3RrL1N0b2NrSWNvbnMuaCBiL3NyYy9ndGsvU3RvY2tJY29ucy5oCi1pbmRleCBjMTQyYTdhLi41OGZjZjJlIDEwMDY0NAotLS0tIGEvc3JjL2d0ay9TdG9ja0ljb25zLmgKLSsrKyBiL3NyYy9ndGsvU3RvY2tJY29ucy5oCi1AQCAtMTgsNyArMTgsNyBAQAotICNpZiAhZGVmaW5lZCAoX19TVE9DS19JQ09OU19IX18pCi0gI2RlZmluZSBfX1NUT0NLX0lDT05TX0hfXwotIAotLSNpbmNsdWRlIDxnbGliL2dtYWNyb3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotIEdfQkVHSU5fREVDTFMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvc3dhcC1jb2xvcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L3N3YXAtY29sb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODJiZmIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvc3dhcC1jb2xvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1JbXBvcnRlZCBmcm9tIERlYmlhbiAwLjEuOC0zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogdHJ1bmsvc3JjL1BERkRvY3VtZW50LmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRydW5rL3NyYy9QREZEb2N1bWVudC5jeHgJKHJldmlzaW9uIDM2MSkKLSsrKyB0cnVuay9zcmMvUERGRG9jdW1lbnQuY3h4CShyZXZpc2lvbiAzNjcpCi1AQCAtMjEsNCArMjEsNSBAQAotICNpbmNsdWRlIDxwb3BwbGVyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxhbGdvcml0aG0+Ci0gI2luY2x1ZGUgImVwZGZ2aWV3LmgiCi0gCi1AQCAtMzMsNCArMzQsMjIgQEAKLSBzdGF0aWMgUGFnZU1vZGUgY29udmVydFBhZ2VNb2RlIChnaW50IHBhZ2VNb2RlKTsKLSBzdGF0aWMgZ2NoYXIgKmdldEFic29sdXRlRmlsZU5hbWUgKGNvbnN0IGdjaGFyICpmaWxlTmFtZSk7Ci0rCi0rbmFtZXNwYWNlCi0rewotKyAgICB2b2lkCi0rICAgIGNvbnZlcnRfYmdyYV90b19yZ2JhIChndWludDggKmRhdGEsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLSsgICAgewotKyAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwotKwotKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICBzd2FwKGRhdGFbMF0sIGRhdGFbMl0pOwotKyAgICAgICAgICAgICAgICBkYXRhICs9IDQ7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rfQotIAotIC8vLwotQEAgLTY1MSw0ICs2NzAsNSBAQAotICAgICAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKLSAgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSAoc3VyZmFjZSk7Ci0rICAgICAgICBjb252ZXJ0X2JncmFfdG9fcmdiYShyZW5kZXJlZFBhZ2UtPmdldERhdGEgKCksIHdpZHRoLCBoZWlnaHQpOwotICNlbHNlIC8vICFIQVZFX1BPUFBMRVJfMF8xN18wCi0gICAgICAgICAvLyBDcmVhdGUgdGhlIHBpeGJ1ZiBmcm9tIHRoZSBkYXRhIGFuZCByZW5kZXIgdG8gaXQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3XzAuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlld18wLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxMWE5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3XzAuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpZ2h0d2VpZ2h0IFBERiB2aWV3ZXIgYmFzZWQgb24gZ3RrIGFuZCBwb3BwbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lbW1hLXNvZnQuY29tL3Byb2plY3RzL2VwZGZ2aWV3LyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbnMiCi1ERVBFTkRTID0gImd0aysgcG9wcGxlciIKLQotUFIgPSAicjMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWN1cHMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVtbWEtc29mdC5jb20vcHJvamVjdHMvJHtCUE59L2Nocm9tZS9zaXRlL3JlbGVhc2VzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYnJvd3Nlcl9jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2xpYi1zaW5nbGUtaW5jbHVkZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zd2FwLWNvbG9ycy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTUwMjg1YjAxNjEyMTY5YjI1OTRmZWEzNzVmNTNhZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQ4NjQ4YWU3YzlkN2IzYjQwOGQ3MzhiZDRmNDhkODczNzViMTE5NmNhZTExMjlkNmI4NDZhOGRlMGYyZjhmMCIKLQotUE5CTEFDS0xJU1RbZXBkZnZpZXddID89ICJCUk9LRU46IGltYWdlcyBhcmUgbm90IGRpc3BsYXllZCBhbnltb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotIyBUaGVyZSB3aWxsIGJlIG5vIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgLyB1cHN0cmVhbSBpcyBnb25lIFsxXQotIyBbMV0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05MDYxMjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbXRrXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9nbm9tZS1tcGxheWVyL2dtdGtfMS4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZDczN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9nbm9tZS1tcGxheWVyL2dtdGtfMS4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgd2lkZ2V0IGFuZCBmdW5jdGlvbiBsaWJyYXJpZXMgZm9yIGdub21lLW1wbGF5ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ210ayIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gImd0aysgYWxzYS1saWIgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgaW50bHRvb2wtbmF0aXZlIHB1bHNlYXVkaW8gZ3RrKzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovLyR7QlBOfS5nb29nbGVjb2RlLmNvbS9maWxlcy8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTA2ZTljYThkNjFkNzQ5MTAzNDNiYjNlZjQzNDhmN2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA3MTMwZDYyNzE5ZThjMTI0NGY4NDA1ZGQ5NzQ0NTc5OGRmNTIwNGZjMGYzZjJmMmI2NjliMTI1MTE0YjQ2OCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nY29uZiAtLXdpdGgtZ2lvIC0td2l0aC1hbHNhIC0tZW5hYmxlLWtleXN0b3JlIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBnY29uZgotCi1QTkJMQUNLTElTVFtnbXRrXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY2MS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2dub21lLW1wbGF5ZXIvZ25vbWUtbXBsYXllcl8xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbm9tZS1tcGxheWVyXzEuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjliODMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbm9tZS1tcGxheWVyXzEuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEdUSysgaW50ZXJmYWNlIHRvIE1QbGF5ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ25vbWUtbXBsYXllciIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUE5CTEFDS0xJU1RbZ25vbWUtbXBsYXllcl0gPz0gInJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIG1wbGF5ZXIgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1QUiA9ICJyMiIKLQotREVQRU5EUyA9ICJnbXRrIGd0aysgYWxzYS1saWIgbGlibm90aWZ5IGdsaWItMi4wIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYngxMSBsaWJ4c2NybnNhdmVyIgotCi1TUkNfVVJJID0gImh0dHA6Ly8ke0JQTn0uZ29vZ2xlY29kZS5jb20vZmlsZXMvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjFkM2FiMjRjNTUwMWI1NTI4ZTM1NzkzMWNhNGRjNmRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjM2MxNzkzNDViYWVjYjRjYTUyMzc3ODJhYTMzZTgzMjUzYTg3YmY4YjQyY2U2ZWIzYTkyMDdhMzQwZjYxYjIiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2lvIC0td2l0aC1hbHNhIC0td2l0aC1kYnVzIC0td2l0aC1saWJub3RpZnkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyL2RlZmF1bHQtYXBwcy8ke1BOfS54bWwiCi1QQUNLQUdFUyA9KyAiJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uIgotRklMRVNfJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5hIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMy4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8uZGVidWciCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgbWltZSBndGstaWNvbi1jYWNoZSBhdXRvdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAibXBsYXllciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvcGlucG9pbnQvcGlucG9pbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKaW5kZXggNWU5MDJhMS4uYmY1MTc4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKQEAgLTksNyArOSwxMCBAQAogCiBERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYgY29nbC0xLjAgY2x1dHRlci0xLjAgY2x1dHRlci1nc3QtMy4wIGxpYnJzdmciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBjb2dsIHJlcXVpcmVzIG9wZW5nbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL3BpbnBvaW50IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjQuNC5iYgppbmRleCA1YWQxMDcwLi4xNGIzMzZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS40LjQuYmIKQEAgLTE3LDEwICsxNywxMiBAQAogUEFDS0FHRUNPTkZJR1ttb2RlbW1hbmFnZXJdID0gIi0td2l0aC13d2FuLC0td2l0aG91dC13d2FuLG1vZGVtbWFuYWdlciIKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiAKK0dJX0RBVEFfRU5BQkxFRF9saWJjLW11c2wgPSAiRmFsc2UiCisKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAgICAgIyBTaWdoLi4uIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gZG9lc24ndCBhY3R1YWxseSB0dXJuIG9mZiAtV2Vycm9yCiAgICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIk1ha2VmaWxlIikgOyBkbwotICAgICAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICRpCisgICAgICAgIHNlZCAtaSAtZSBzJS1XZXJyb3JbXls6c3BhY2U6XV0qJSVnICRpCiAgICAgZG9uZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4yNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyMTA2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4yNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBhcnRpdGlvbiBlZGl0b3IgdG8gZ3JhcGhpY2FsbHkgbWFuYWdlIGRpc2sgcGFydGl0aW9ucyAiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3BhcnRlZC5vcmcvaW5kZXgucGhwIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKLQotU1JDX1VSSSA9ICIgXAotICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgXAotICAgIGZpbGU6Ly9ncGFydGVkX3BvbGtpdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzI2ZjUzOWY3NzRiNDQyNjcwMDI4YWY2NTZmMjcwYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjA4Y2Y2MGMwNjFiODZiZWU0ZjY1OGQ1NjhhM2I1ZDg0M2RjZTNhYjk4NDdmNjZiNDUyMjk4MjY4Nzk5ZTdiZCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3RrbW0gcGFydGVkIGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQWRkIGEgc2NyaXB0IHdoaWNoIGNoZWNrcyBpZiBwb2xraXQgaXMgaW5zdGFsbGVkLgotICAgICMgSWYgeWVzOiBhIHBvbGljeSBpcyByZXF1ZXN0ZWQgZnJvbSBwb2xraXQgLyBvdGhlcndpc2Ugc3RhcnQgYXMgdXN1YWwKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vZ3BhcnRlZF9wb2xraXQgJHtEfSR7c2JpbmRpcn0KLSAgICBzZWQgLWkgJ3M6JXNiaW5kaXIlOiR7c2JpbmRpcn06ZycgJHtEfSR7c2JpbmRpcn0vZ3BhcnRlZF9wb2xraXQKLSAgICAjIHJlbGluayBtZW51IGVudHJ5IHRvIHVzZSBvdXIgc2NyaXB0Ci0gICAgc2VkIC1pICdzOiR7c2JpbmRpcn0vZ3BhcnRlZDoke3NiaW5kaXJ9L2dwYXJ0ZWRfcG9sa2l0OmcnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9ncGFydGVkLmRlc2t0b3AKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kKLX0KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiZG9zZnN0b29scyBtdG9vbHMgZTJmc3Byb2dzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNhYjZmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjI4LjEuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJBIHBhcnRpdGlvbiBlZGl0b3IgdG8gZ3JhcGhpY2FsbHkgbWFuYWdlIGRpc2sgcGFydGl0aW9ucyAiCitIT01FUEFHRSA9ICJodHRwOi8vZ3BhcnRlZC5vcmcvaW5kZXgucGhwIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKKworU1JDX1VSSSA9ICIgXAorICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgXAorICAgIGZpbGU6Ly9ncGFydGVkX3BvbGtpdCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYWI3MjQ2NGEzYWIyMTM3NjY0ZDlkZjg0NjJiZWZkM2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY4OTFmMTQzOTQ3NTRmN2Q2ZWNjZWJhMmFmMGU1ODViZjg5ZjlkNzgwYzM4OWEyNTVkY2Q0MWEyZjQ1ZDMzMyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3RrbW0gcGFydGVkIGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQWRkIGEgc2NyaXB0IHdoaWNoIGNoZWNrcyBpZiBwb2xraXQgaXMgaW5zdGFsbGVkLgorICAgICMgSWYgeWVzOiBhIHBvbGljeSBpcyByZXF1ZXN0ZWQgZnJvbSBwb2xraXQgLyBvdGhlcndpc2Ugc3RhcnQgYXMgdXN1YWwKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vZ3BhcnRlZF9wb2xraXQgJHtEfSR7c2JpbmRpcn0KKyAgICBzZWQgLWkgJ3M6JXNiaW5kaXIlOiR7c2JpbmRpcn06ZycgJHtEfSR7c2JpbmRpcn0vZ3BhcnRlZF9wb2xraXQKKyAgICAjIHJlbGluayBtZW51IGVudHJ5IHRvIHVzZSBvdXIgc2NyaXB0CisgICAgc2VkIC1pICdzOiR7c2JpbmRpcn0vZ3BhcnRlZDoke3NiaW5kaXJ9L2dwYXJ0ZWRfcG9sa2l0OmcnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9ncGFydGVkLmRlc2t0b3AKKworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucworICAgIGluc3RhbGwgJHtXT1JLRElSfS9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kKK30KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiZG9zZnN0b29scyBtdG9vbHMgZTJmc3Byb2dzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3RrLXRoZW1lLXRvcnR1cmVyL2d0ay10aGVtZS10b3J0dXJlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ndGstdGhlbWUtdG9ydHVyZXIvZ3RrLXRoZW1lLXRvcnR1cmVyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQxOWQwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ndGstdGhlbWUtdG9ydHVyZXIvZ3RrLXRoZW1lLXRvcnR1cmVyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBUaGVtZSBiZW5jaG1hcmsgcHJvZ3JhbSIKLURFUEVORFMgPSAiZ3RrKyIKLUhPTUVQQUdFID0gImh0dHA6Ly93aWtpLmxhcHRvcC5vcmcvZ28vR1RLX2Zvcl9PTFBDIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9hcHB3aW5kb3cuYztlbmRsaW5lPTEzO21kNT04YzA5OTIwZGU0NjBjN2VhMWY2NGVlNTY5ODZhYWJkOSIKLQotU1JDUkVWID0gIjk5OTYyYWUzOWJiNWFhZGIzMTkyOWIyNWM1OGUxYTA1M2Y5Yzk1NDUiCi1QViA9ICIwLjAuMCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9kZXYubGFwdG9wLm9yZy9wcm9qZWN0cy9zb2MtZ3RrLyIKLVMgPSAiJHtXT1JLRElSfS9naXQvZ3RrLXRoZW1lLXRvcnR1cmVyIgotCi1DRkxBR1MgKz0gIi1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSB0b3J0dXJlciAke0R9JHtiaW5kaXJ9Ci19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzM1MTMyLwotUE5CTEFDS0xJU1RbZ3RrLXRoZW1lLXRvcnR1cmVyXSA/PSAiQlJPS0VOOiBnbWFjcm9zLmg6MTgyOjUzOiBlcnJvcjogc2l6ZSBvZiBhcnJheSAnX0dTdGF0aWNBc3NlcnRDb21waWxlVGltZUFzc2VydGlvbl8yJyBpcyBuZWdhdGl2ZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZC8wMDAyLUJ1Zy0xMzc1NC1GaXgtYnVpbGQtb24tZ2NjLTYtZGVmYXVsdC10by1DLTExLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDItQnVnLTEzNzU0LUZpeC1idWlsZC1vbi1nY2MtNi1kZWZhdWx0LXRvLUMtMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NWVlOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDItQnVnLTEzNzU0LUZpeC1idWlsZC1vbi1nY2MtNi1kZWZhdWx0LXRvLUMtMTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIGE4M2U2ZjUwZGJkNWVmYTE2ZmIzOWVmZTMyYjlkZTM3MGYxMDMxMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIdWJlcnQgRmlndWllcmUgPGh1YkBmaWd1aWVyZS5uZXQ+Ci1EYXRlOiBTYXQsIDIzIEphbiAyMDE2IDIwOjQ2OjAyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAxMzc1NCAtIEZpeCBidWlsZCBvbiBnY2MtNiAoZGVmYXVsdCB0byBDKysxMSkuCi0KLVRoaXMgaXMgZGViaWFuIGJ1ZyBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTgxMTM4MQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vc3ZuLmFiaXNvdXJjZS5jb20vc3Zucm9vdC9hYml3b3JkL3RydW5rQDM1MTgyIGJjYmE4OTc2LTJkMjQtMDQxMC05YzljLWFhYjNiZDVmZGZkNgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBwbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL1JlYWxtUHJvdG9jb2wuY3BwIHwgNCArKy0tCi0gcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9zb2Ffc291cC5jcHAgICAgICB8IDIgKy0KLSBwbHVnaW5zL2xhdGV4L3hwL2llX2V4cF9MYVRlWC5jcHAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHBsdWdpbnMveHNsZm8veHAvaWVfZXhwX1hTTC1GTy5jcHAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL1JlYWxtUHJvdG9jb2wuY3BwIGIvcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9SZWFsbVByb3RvY29sLmNwcAotaW5kZXggZmI0MjZlYi4uMzQ3YTQ5YyAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvUmVhbG1Qcm90b2NvbC5jcHAKLSsrKyBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvUmVhbG1Qcm90b2NvbC5jcHAKLUBAIC02LDggKzYsOCBAQCBuYW1lc3BhY2UgcHJvdG9jb2x2MSB7Ci0gCi0gI2RlZmluZSBNQVhfUEFDS0VUX0RBVEFfU0laRSA2NCoxMDI0KjEwMjQKLSAJCQotLSNkZWZpbmUgUlBWMV9QQUNLRVRfTk9ORVhJU1RFTlQgLTIKLS0jZGVmaW5lIFJQVjFfUEFDS0VUX1ZBUklBQkxFIC0xCi0rI2RlZmluZSBSUFYxX1BBQ0tFVF9OT05FWElTVEVOVCB1aW50MzJfdCgtMikKLSsjZGVmaW5lIFJQVjFfUEFDS0VUX1ZBUklBQkxFIHVpbnQzMl90KC0xKQotIAkKLSBzdGF0aWMgdWludDMyX3QgYm9keV9zaXplWzZdID0gewotIAlSUFYxX1BBQ0tFVF9OT05FWElTVEVOVCwgLyogMDogcmVzZXJ2ZWQgKi8KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL3NvYV9zb3VwLmNwcCBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvc29hX3NvdXAuY3BwCi1pbmRleCA0YjgxNzM1Li5mNGY1MTM0IDEwMDY0NAotLS0tIGEvcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9zb2Ffc291cC5jcHAKLSsrKyBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvc29hX3NvdXAuY3BwCi1AQCAtMTYzLDcgKzE2Myw3IEBAIG5hbWVzcGFjZSBzb3VwX3NvYSB7Ci0gCQotIAlzdGF0aWMgYm9vbCBfaW52b2tlKGNvbnN0IHN0ZDo6c3RyaW5nJiAvKnVybCovLCBjb25zdCBzb2E6Om1ldGhvZF9pbnZvY2F0aW9uJiAvKm1pKi8sIFNvYVNvdXBTZXNzaW9uJiBzZXNzLCBzdGQ6OnN0cmluZyYgcmVzdWx0KSB7Ci0gCQlpZiAoIXNlc3MubV9zZXNzaW9uIHx8ICFzZXNzLm1fbXNnICkKLS0JCQlyZXR1cm4gc29hOjpHZW5lcmljUHRyKCk7Ci0rCQkJcmV0dXJuIGZhbHNlOwotIAotIAkJZ3VpbnQgc3RhdHVzID0gc291cF9zZXNzaW9uX3NlbmRfbWVzc2FnZSAoc2Vzcy5tX3Nlc3Npb24sIHNlc3MubV9tc2cpOwotIAkJaWYgKCEoU09VUF9TVEFUVVNfSVNfU1VDQ0VTU0ZVTCAoc3RhdHVzKSB8fAotZGlmZiAtLWdpdCBhL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcCBiL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcAotaW5kZXggN2FhZjNhOS4uOGJjYzI1MCAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcAotKysrIGIvcGx1Z2lucy9sYXRleC94cC9pZV9leHBfTGFUZVguY3BwCi1AQCAtMTMzMCw3ICsxMzMwLDcgQEAgdm9pZCBzX0xhVGVYX0xpc3RlbmVyOjpfb3V0cHV0RGF0YShjb25zdCBVVF9VQ1NDaGFyICogZGF0YSwgVVRfdWludDMyIGxlbmd0aCkKLSAJbV9waWUtPndyaXRlKHNCdWYuY19zdHIoKSxzQnVmLnNpemUoKSk7Ci0gfQotIAotLSNkZWZpbmUgU1VCKGEsd2hvKSBjYXNlIGE6IHN1YnN0ID0gIlxcKFxcIndobyJcXCkiOyByZXR1cm4gdHJ1ZTsKLSsjZGVmaW5lIFNVQihhLHdobykgY2FzZSBhOiBzdWJzdCA9ICJcXChcXCIgd2hvIlxcKSI7IHJldHVybiB0cnVlOwotICNkZWZpbmUgU1VCZChhLHdobykgY2FzZSBhOiBzdWJzdCA9IHdobzsgcmV0dXJuIHRydWU7Ci0gc3RhdGljIGJvb2wgX2NvbnZlcnRMZXR0ZXJzVG9TeW1ib2xzKGNoYXIgYywgY29uc3QgY2hhciAqJiBzdWJzdCkKLSB7Ci1kaWZmIC0tZ2l0IGEvcGx1Z2lucy94c2xmby94cC9pZV9leHBfWFNMLUZPLmNwcCBiL3BsdWdpbnMveHNsZm8veHAvaWVfZXhwX1hTTC1GTy5jcHAKLWluZGV4IGNjNWU0ZTYuLjk1NzIyNmUgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL3hzbGZvL3hwL2llX2V4cF9YU0wtRk8uY3BwCi0rKysgYi9wbHVnaW5zL3hzbGZvL3hwL2llX2V4cF9YU0wtRk8uY3BwCi1AQCAtMTQ1MSw3ICsxNDUxLDcgQEAgdm9pZCBzX1hTTF9GT19MaXN0ZW5lcjo6X29wZW5TZWN0aW9uKFBUX0F0dHJQcm9wSW5kZXggYXBpKQotIAl7IFwKLSAJCVVUX1VURjhTdHJpbmcgZXNjID0gc3pWYWx1ZTsgXAotIAkJZXNjLmVzY2FwZVhNTCgpOyBcCi0tCQlidWYgKz0gIiAieCI9XCIiOyBcCi0rCQlidWYgKz0gIiAiIHgiPVwiIjsgXAotIAkJYnVmICs9IGVzYy51dGY4X3N0cigpOyBcCi0gCQlidWYgKz0gIlwiIjsgXAotIAl9Ci0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmYzk3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBYmlXb3JkIGlzIGZyZWUgd29yZCBwcm9jZXNzaW5nIHByb2dyYW0gc2ltaWxhciB0byBNaWNyb3NvZnQocikgV29yZCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWJpd29yZC5vcmciCi1TRUNUSU9OID0gIngxMS9vZmZpY2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNkM2FjMzI5ZmNhNzdlMmQwZTQxMmJlYzM4ZTFjMjAiCi1ERVBFTkRTICA9ICIgXAotICAgIHBlcmwtbmF0aXZlIFwKLSAgICBndGsrIFwKLSAgICBndGttYXRodmlldyBcCi0gICAgd3YgXAotICAgIGxpYmdsYWRlIFwKLSAgICBsaWJmcmliaWRpIFwKLSAgICBqcGVnIFwKLSAgICBsaWJwbmcgXAotICAgIGxpYnJzdmcgXAotICAgIGxpYndtZi1uYXRpdmUgXAotICAgIGFzaW8gXAotICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCi0gICAgbGlieHNsdCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdvZmZpY2UtbGF5ZXInLCAncmVkbGFuZCByYXNxYWwnLCAnJywgZCl9IFwKLSIKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCi0gICAgZ2xpYmMtZ2NvbnYtaWJtODUwIGdsaWJjLWdjb252LWNwMTI1MiBcCi0gICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSBnbGliYy1nY29udi1pc284ODU5LTEgXAotIgotUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1lbWJlZGRlZCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvJHtCUE59LyR7UFZ9L3NvdXJjZS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtYWlrc2F1cnVzLU1ha2VmaWxlLmFtLXJlbW92ZS11bmNvbXBsZXRlLW9wdGkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUJ1Zy0xMzc1NC1GaXgtYnVpbGQtb24tZ2NjLTYtZGVmYXVsdC10by1DLTExLnBhdGNoIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzVlZGNjM2NjZDg2NGIxOTAwNGQxNGU5YzFjOWEyNmEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmM2Y4MDUyZTdiNDk3OWE0M2I3NTc3NWEzODFlNmNiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDk0ZjZmYmYwYWZjNWM1NTM4YjQ4OTQ4ODhlN2MzNDZmOGVlOGY0OWM5ZDI0ODIxZGQ2OTZkMDczNDg2NWM2IgotCi0jd2FudCAzLnggZnJvbSAzLngueSBmb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIGNvbGxhYi1iYWNrZW5kLXhtcHAgY29sbGFiLWJhY2tlbmQtdGNwIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ29mZmljZS1sYXllcicsICdsaWJpY2FsJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYmljYWxdID0gIi0td2l0aC1saWJpY2FsLC0td2l0aG91dC1saWJpY2FsLGxpYmljYWwgcmFwdG9yMiIKLVBBQ0tBR0VDT05GSUdbc3BlbGxdID0gIi0tZW5hYmxlLXNwZWxsLC0tZGlzYWJsZS1zcGVsbCxlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC14bXBwXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC14bXBwLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC14bXBwLGxpYmdzZiBsaWJ4bWwyIGxvdWRtb3V0aCIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtdGNwXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC10Y3AsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXRjcCxsaWJnc2YgbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtc2VydmljZV0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtc2VydmljZSwtLWRpc2FibGUtY29sbGFiLWJhY2tlbmQtc2VydmljZSxsaWJnc2YgbGlieG1sMiBsaWJzb3VwLTIuNCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2NvbGxhYi1iYWNrZW5kLXRlbGVwYXRoeV0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtdGVsZXBhdGh5LC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC10ZWxlcGF0aHksbGliZ3NmIGxpYnhtbDIgdGVsZXBhdGh5LWdsaWIgdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbCIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtc3VnYXJdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXN1Z2FyLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC1zdWdhcixsaWJnc2YgbGlieG1sMiBkYnVzLWdsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLXN0YXRpYyAgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wbHVnaW5zIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xpcGFydCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRlbXBsYXRlcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1nbm9tZXZmcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1ndGsyIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYndtZi1jb25maWc9JHtTVEFHSU5HX0RJUn0gXAotIgotCi1MREZMQUdTICs9ICItbGdtb2R1bGUtMi4wIgotCi1kb19jb21waWxlKCkgewotICAgIGNkIGdvZmZpY2UtYml0czIKLSAgICBtYWtlIGdvZmZpY2UtcGF0aHMuaAotICAgIG1ha2UgbGliZ29mZmljZS5sYQotICAgIGNkICR7Qn0KLSAgICBvZV9ydW5tYWtlCi19Ci0KLVBBQ0tBR0VTICs9ICIgJHtQTn0tY2xpcGFydCAke1BOfS1zdHJpbmdzICR7UE59LXN5c3RlbXByb2ZpbGVzICR7UE59LXRlbXBsYXRlcyAiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWIke1BOfS0qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L21pbWUtaW5mbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucy8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L2dsYWRlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3NjcmlwdHMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUtZW4gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUtZW5fR0IgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL25vcm1hbC5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL25vcm1hbC5hd3QtZW5fR0IgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0VtcGxveWVlLURpcmVjdG9yeS5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0J1c2luZXNzLVJlcG9ydC5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0ZheC1Db3ZlcnNoZWV0LmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvUmVzdW1lLmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvVHdvLUNvbHVtbnMuYXd0IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9NZW1vLmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvUHJlc3MtUmVsZWFzZS5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vY2VydHMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdWkgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0veHNsKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9taW1lLWluZm8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vUHIqLnhtbCBcCi0iCi0KLSMgZG9uJ3Qgc3RlYWwgL3Vzci9saWIvbGliYWJpd29yZC0zLjAuc28gZnJvbSAke1BOfQotIyBpbiB0aGlzIGNhc2UgaXQncyBuZWVkZWQgaW4gJHtQTn0KLUZJTEVTXyR7UE59LWRldiA9ICIgXAotICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfSBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfSoubGEgXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYiR7UE59Ki5sYSBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucy8qLmxhIFwKLSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9LyR7UE59LSovcmVhZG1lKiIKLQotRklMRVNfJHtQTn0tc3RyaW5ncyAgICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3RyaW5ncyIKLUZJTEVTXyR7UE59LXN5c3RlbXByb2ZpbGVzICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3N5c3RlbS5wcm9maWxlKiIKLUZJTEVTXyR7UE59LWNsaXBhcnQgICAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L2NsaXBhcnQiCi1GSUxFU18ke1BOfS1zdHJpbmdzICAgICAgICArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9BYmlXb3JkL3N0cmluZ3MiCi1GSUxFU18ke1BOfS1zeXN0ZW1wcm9maWxlcyArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9BYmlXb3JkL3N5c3RlbS5wcm9maWxlKiIKLUZJTEVTXyR7UE59LXRlbXBsYXRlcyAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcyIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LW1ldGEuKiBeJHtQTn0tcGx1Z2luLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgYWJpd29yZF9saWJkaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3BsdWdpbnMnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGFiaXdvcmRfbGliZGlyLCAnKC4qKVwuc28kJywgJ2FiaXdvcmQtcGx1Z2luLSVzJywgJ0FiaXdvcmQgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi0KLSAgICBtZXRhcGtnID0gImFiaXdvcmQtbWV0YSIKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQotICAgIGJsYWNrbGlzdCA9IFsgJ2FiaXdvcmQtcGx1Z2lucy1kYmcnLCAnYWJpd29yZC1wbHVnaW5zJywgJ2FiaXdvcmQtcGx1Z2lucy1kb2MnLCAnYWJpd29yZC1wbHVnaW5zLWRldicsICdhYml3b3JkLXBsdWdpbnMtbG9jYWxlJyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIikgYW5kIG5vdCBwa2cuY291bnQoImFiaXdvcmQtZG9jIik6Ci0gICAgICAgICAgICBwcmludCgiTW9kaWZ5aW5nICVzIiAlIHBrZykKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgJ2FiaXdvcmQtcGx1Z2luIG1ldGEgcGFja2FnZScpCi0gICAgcGFja2FnZXMuYXBwZW5kKG1ldGFwa2cpCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotfQotCi1GSUxFU18ke1BOfS1wbHVnaW4tb3BlbnhtbCArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9vbW1sX3hzbHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmExM2U0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMi5iYgpAQCAtMCwwICsxLDE0MSBAQAorU1VNTUFSWSA9ICJBYmlXb3JkIGlzIGZyZWUgd29yZCBwcm9jZXNzaW5nIHByb2dyYW0gc2ltaWxhciB0byBNaWNyb3NvZnQocikgV29yZCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWJpd29yZC5vcmciCitTRUNUSU9OID0gIngxMS9vZmZpY2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNkM2FjMzI5ZmNhNzdlMmQwZTQxMmJlYzM4ZTFjMjAiCitERVBFTkRTICA9ICIgXAorICAgIHBlcmwtbmF0aXZlIFwKKyAgICBndGsrIFwKKyAgICBndGttYXRodmlldyBcCisgICAgd3YgXAorICAgIGxpYmdsYWRlIFwKKyAgICBsaWJmcmliaWRpIFwKKyAgICBqcGVnIFwKKyAgICBsaWJwbmcgXAorICAgIGxpYnJzdmcgXAorICAgIGxpYndtZi1uYXRpdmUgXAorICAgIGFzaW8gXAorICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCisgICAgbGlieHNsdCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdvZmZpY2UtbGF5ZXInLCAncmVkbGFuZCByYXNxYWwnLCAnJywgZCl9IFwKKyIKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCisgICAgZ2xpYmMtZ2NvbnYtaWJtODUwIGdsaWJjLWdjb252LWNwMTI1MiBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSBnbGliYy1nY29udi1pc284ODU5LTEgXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1lbWJlZGRlZCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvJHtCUE59LyR7UFZ9L3NvdXJjZS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtYWlrc2F1cnVzLU1ha2VmaWxlLmFtLXJlbW92ZS11bmNvbXBsZXRlLW9wdGkucGF0Y2ggXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNWVkY2MzY2NkODY0YjE5MDA0ZDE0ZTljMWM5YTI2YSIKKworU1JDX1VSSVttZDVzdW1dID0gImNkYTZkZDU4Yzc0N2MxMzNiNDIxY2M3ZWIxOGY1Nzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmYmZkNDU4ZmQwMjk4OWQ4YjBjNjM2MmJhOGE0YzE0Njg2ZDg5NjY2ZjU0Y2ZkYjU1MDFiZDIwOTBjZjM1MjIiCisKKyN3YW50IDMueCBmcm9tIDMueC55IGZvciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQorU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgY29sbGFiLWJhY2tlbmQteG1wcCBjb2xsYWItYmFja2VuZC10Y3AgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAnb2ZmaWNlLWxheWVyJywgJ2xpYmljYWwnLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGliaWNhbF0gPSAiLS13aXRoLWxpYmljYWwsLS13aXRob3V0LWxpYmljYWwsbGliaWNhbCByYXB0b3IyIgorUEFDS0FHRUNPTkZJR1tzcGVsbF0gPSAiLS1lbmFibGUtc3BlbGwsLS1kaXNhYmxlLXNwZWxsLGVuY2hhbnQiCitQQUNLQUdFQ09ORklHW2NvbGxhYi1iYWNrZW5kLXhtcHBdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXhtcHAsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXhtcHAsbGliZ3NmIGxpYnhtbDIgbG91ZG1vdXRoIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC10Y3BdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXRjcCwtLWRpc2FibGUtY29sbGFiLWJhY2tlbmQtdGNwLGxpYmdzZiBsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC1zZXJ2aWNlXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC1zZXJ2aWNlLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC1zZXJ2aWNlLGxpYmdzZiBsaWJ4bWwyIGxpYnNvdXAtMi40IGdudXRscyIKK1BBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtdGVsZXBhdGh5XSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC10ZWxlcGF0aHksLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXRlbGVwYXRoeSxsaWJnc2YgbGlieG1sMiB0ZWxlcGF0aHktZ2xpYiB0ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC1zdWdhcl0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtc3VnYXIsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXN1Z2FyLGxpYmdzZiBsaWJ4bWwyIGRidXMtZ2xpYiIKKworRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtc3RhdGljICBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBsdWdpbnMgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbGlwYXJ0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGVtcGxhdGVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdub21ldmZzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWd0azIgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGlid21mLWNvbmZpZz0ke1NUQUdJTkdfRElSfSBcCisiCisKK0xERkxBR1MgKz0gIi1sZ21vZHVsZS0yLjAiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgY2QgZ29mZmljZS1iaXRzMgorICAgIG1ha2UgZ29mZmljZS1wYXRocy5oCisgICAgbWFrZSBsaWJnb2ZmaWNlLmxhCisgICAgY2QgJHtCfQorICAgIG9lX3J1bm1ha2UKK30KKworUEFDS0FHRVMgKz0gIiAke1BOfS1jbGlwYXJ0ICR7UE59LXN0cmluZ3MgJHtQTn0tc3lzdGVtcHJvZmlsZXMgJHtQTn0tdGVtcGxhdGVzICIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYiR7UE59LSouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWltZS1pbmZvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zLyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vZ2xhZGUgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc2NyaXB0cyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zeXN0ZW0ucHJvZmlsZS1lbiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zeXN0ZW0ucHJvZmlsZS1lbl9HQiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvbm9ybWFsLmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvbm9ybWFsLmF3dC1lbl9HQiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvRW1wbG95ZWUtRGlyZWN0b3J5LmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvQnVzaW5lc3MtUmVwb3J0LmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvRmF4LUNvdmVyc2hlZXQuYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9SZXN1bWUuYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9Ud28tQ29sdW1ucy5hd3QgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL01lbW8uYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9QcmVzcy1SZWxlYXNlLmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9jZXJ0cyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS91aSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS94c2wqIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L21pbWUtaW5mbyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9QcioueG1sIFwKKyIKKworIyBkb24ndCBzdGVhbCAvdXNyL2xpYi9saWJhYml3b3JkLTMuMC5zbyBmcm9tICR7UE59CisjIGluIHRoaXMgY2FzZSBpdCdzIG5lZWRlZCBpbiAke1BOfQorRklMRVNfJHtQTn0tZGV2ID0gIiBcCisgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59Ki5sYSBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliJHtQTn0qLmxhIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9wbHVnaW5zLyoubGEgXAorIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucy8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tKi9yZWFkbWUqIgorCitGSUxFU18ke1BOfS1zdHJpbmdzICAgICAgICArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zdHJpbmdzIgorRklMRVNfJHtQTn0tc3lzdGVtcHJvZmlsZXMgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUqIgorRklMRVNfJHtQTn0tY2xpcGFydCAgICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vY2xpcGFydCIKK0ZJTEVTXyR7UE59LXN0cmluZ3MgICAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L0FiaVdvcmQvc3RyaW5ncyIKK0ZJTEVTXyR7UE59LXN5c3RlbXByb2ZpbGVzICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L0FiaVdvcmQvc3lzdGVtLnByb2ZpbGUqIgorRklMRVNfJHtQTn0tdGVtcGxhdGVzICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tbWV0YS4qIF4ke1BOfS1wbHVnaW4tLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBhYml3b3JkX2xpYmRpciAgICA9IGQuZXhwYW5kKCcke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYWJpd29yZF9saWJkaXIsICcoLiopXC5zbyQnLCAnYWJpd29yZC1wbHVnaW4tJXMnLCAnQWJpd29yZCBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKworICAgIG1ldGFwa2cgPSAiYWJpd29yZC1tZXRhIgorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQorICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCisgICAgYmxhY2tsaXN0ID0gWyAnYWJpd29yZC1wbHVnaW5zLWRiZycsICdhYml3b3JkLXBsdWdpbnMnLCAnYWJpd29yZC1wbHVnaW5zLWRvYycsICdhYml3b3JkLXBsdWdpbnMtZGV2JywgJ2FiaXdvcmQtcGx1Z2lucy1sb2NhbGUnIF0KKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5jb3VudCgiLWRldiIpIGFuZCBub3QgcGtnLmNvdW50KCItZGJnIikgYW5kIG5vdCBwa2cuY291bnQoInN0YXRpYyIpIGFuZCBub3QgcGtnLmNvdW50KCJsb2NhbGUiKSBhbmQgbm90IHBrZy5jb3VudCgiYWJpd29yZC1kb2MiKToKKyAgICAgICAgICAgIHByaW50KCJNb2RpZnlpbmcgJXMiICUgcGtnKQorICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisgICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnYWJpd29yZC1wbHVnaW4gbWV0YSBwYWNrYWdlJykKKyAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCit9CisKK0ZJTEVTXyR7UE59LXBsdWdpbi1vcGVueG1sICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L29tbWxfeHNsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMS1pbWFweC1GaXgtc2lnbmF0dXJlLWZvci1pbWFweF90b2tlbmlzZV9zdHJ1Y3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmE3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMGUxMGU5NzYwMjViMjFkMTJkZjA5OWU4Mjk1MWY3NTkwMjRhZDY0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI0IEF1ZyAyMDE3IDIyOjA0OjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGltYXB4OiBGaXggc2lnbmF0dXJlIGZvciBpbWFweF90b2tlbmlzZV9zdHJ1Y3QoKQorCitjbGFuZyBjb21wbGFpbnMgYWJvdXQgZGlmZmVyZW50IHNpZ25hdHVyZSBmb3IgdGhpcyBwYXRjaAorCitGaXhlcworY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQ6NTY6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAnaW1hcHhfdG9rZW5pc2Vfc3RydWN0JworfCBpbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgc2l6ZV90IGxlbikKK3wgXgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dCBiL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0CitpbmRleCBkNDg1MDE4NjUuLjk5NGMzNjhjMCAxMDA2NDQKKy0tLSBhL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0CisrKysgYi9jYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dAorQEAgLTEsNyArMSw3IEBACisgLyogVGhpcyBjb250YWlucyBhbGwgb2YgdGhlIGtleXdvcmRzIHdlIGNhcmUgYWJvdXQuICBUaGVzZQorICAgIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gaWQgdmVyeSBlZmZpY2llbnRseSAqLworIHN0cnVjdCBfaW1hcHhfa2V5d29yZCB7Y29uc3QgZ2NoYXIgKm5hbWU7IGNhbWVsX2ltYXB4X2lkX3QgaWQ7IH07Cistc3RydWN0IF9pbWFweF9rZXl3b3JkICppbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7Cisrc3RydWN0IF9pbWFweF9rZXl3b3JkICppbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgc2l6ZV90IGxlbik7CisgJSUKKyBBTEVSVCwgICAgICAgICAgSU1BUFhfQUxFUlQKKyBBUFBFTkRVSUQsCUlNQVBYX0FQUEVORFVJRAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgppbmRleCBmZjMzNjViLi5hYWRjNGI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgpAQCAtMTUsMTYgKzE1LDE2IEBACiAjIDMuNCBzZXJpZXMgbmVlZHMgbGliZ2RhdGEtMC4xMCosIDMuOCBzZXJpZXMgbmVlZHMgYWxzbyBsaWJzZWNyZXQgaW5zdGVhZCBvZiBnbm9tZS1rZXlyaW5nCiBQViA9ICIzLjIuMytnaXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdC5nbm9tZS5vcmcvZXZvbHV0aW9uLWRhdGEtc2VydmVyO2JyYW5jaD1nbm9tZS0zLTIgXAotICAgIGZpbGU6Ly8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUZpeC1mb3ItYXV0b21ha2UtMS4xMi54LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1EaXNhYmxlLVdlcnJvci1mb3ItYXV0b21ha2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LXNvdXAtYWRhcHQtdG8tbmV3LWxpYnhtbDItQVBJLWZyb20tMi45LjAucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LWNvbmZpZ3VyZS5hYy1kby1ub3Qtb3ZlcndyaXRlLWxvY2FsZWRpci5wYXRjaCBcCi0gICAgZmlsZTovL2ljb252LWRldGVjdC5oIFwKLSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmdub21lLm9yZy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXI7YnJhbmNoPWdub21lLTMtMiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZm9yLWF1dG9tYWtlLTEuMTIueC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLURpc2FibGUtV2Vycm9yLWZvci1hdXRvbWFrZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1zb3VwLWFkYXB0LXRvLW5ldy1saWJ4bWwyLUFQSS1mcm9tLTIuOS4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtY29uZmlndXJlLmFjLWRvLW5vdC1vdmVyd3JpdGUtbG9jYWxlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ljb252LWRldGVjdC5oIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCmluZGV4IGFhZThlNzEuLjc4YTk0OTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCkBAIC0yLDEzICsyLDExIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTZmMmY4ZDVlZTU3NmEyMTYzOTc3OTM4ZWEzNmZhN2IiCiBTRUNUSU9OID0gIngxMS9vZmZpY2UiCi1ERVBFTkRTID0gImd0ayszIGxpYnNlY3JldCBnbm9tZS1kZXNrdG9wMyBwb3BwbGVyIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2Ugb3JjIGFkd2FpdGEtaWNvbi10aGVtZSBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKK0RFUEVORFMgPSAiZ3RrKzMgbGlic2VjcmV0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdnbm9tZS1kZXNrdG9wMycsJycsZCl9IHBvcHBsZXIgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBvcmMgYWR3YWl0YS1pY29uLXRoZW1lIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIgogUFIgPSAicjUiCiAKIGluaGVyaXQgZ25vbWUgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHN5c3RlbWQKIAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1yZW1vdmUtWUVMUC1tYWNyby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1mb3JtYXQtYXR0cmlidXRlLXRvLV9zeW5jdGV4X21hbGxvYy5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nY2FsY3Rvb2wvZ2NhbGN0b29sXzUuMzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2djYWxjdG9vbC9nY2FsY3Rvb2xfNS4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDI4ZjJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2djYWxjdG9vbC9nY2FsY3Rvb2xfNS4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJnY2FsY3Rvb2wgaXMgYSBwb3dlcmZ1bCBjYWxjdWxhdG9yIgotU0VDVElPTiA9ICJ4MTEiCi1ERVBFTkRTID0gImd0aysgZ25vbWUtZG9jLXV0aWxzIgotCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vJHtTSFJUX1ZFUn0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDhkYjkyN2M2ZTdlZTFkNTM5NWY5NTNhOGMxODRjOTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzQ2ZjY0NWMwZmRlZjkwMDY0MmY2ZTlhMmMxOGU3YmE5YTdjYTliYzYyZmUyYjA4ZWI0MThmMDY1YTQyNWM4OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdzZXR0aW5ncwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgInM6IGhlbHA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBOQkxBQ0tMSVNUW2djYWxjdG9vbF0gPz0gImJyb2tlbiBhdCBsZWFzdCBzaW5jZSBBcHJpbCAyMDEzIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmNvbXAuaGFuZGhlbGRzLm9wZW5lbWJlZGRlZC81NzkyMCBhbmQgbm9ib2R5IGNvbXBsYWluZWQsIGl0J3MgYWxzbyByZXBsYWNlZCBieSBnbm9tZSBjYWxjdWxhdG9yIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8wMDAxLVJlbW92ZS11c2VyLXN3aXRjaC1hcHBsZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDEtUmVtb3ZlLXVzZXItc3dpdGNoLWFwcGxldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVhZmY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDEtUmVtb3ZlLXVzZXItc3dpdGNoLWFwcGxldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyODEgKzAsMCBAQAotRnJvbSAwYTRmZTgwMmVkYmQyZThhMDE2MTYxZjA4MjgzZTRiNDY3YzY3NjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFR1ZSwgMjEgSnVuIDIwMTEgMTI6NDg6MzkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVzZXIgc3dpdGNoIGFwcGxldAotCi1UaGlzIGhhc24ndCBiZWVuIHVwZGF0ZWQgdG8gd29yayB3aXRoIGdub21lLXBhbmVsID4gMi4zMC4wLCBzbyBqdXN0IGRyb3AgaXQKLQotVXBzdHJlYW0tU3RhdHVzOiB1bmFjY2VwdGFibGUsIGJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggLQotIGd1aS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAtCi0gLi4uL0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnNlcnZlci5pbi5pbiAgICAgICAgfCAgIDM4IC0KLSAuLi4vR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sICAgICAgICAgICAgICAgICB8ICAgMjAgLQotIGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgIHwgICA2NyAtCi0gZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9hcHBsZXQuYyAgICAgICAgICAgICAgICAgICAgfCAxNjYyIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMgICAgICAgfCAgMzA0IC0tLS0KLSBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaCAgICAgICB8ICAgNTEgLQotIHBvL1BPVEZJTEVTLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCi0gcG8vUE9URklMRVMuc2tpcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSAxMCBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDIxNTcgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0KLSBkZWxldGUgbW9kZSAxMDA2NDQgZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9hcHBsZXQuYwotIGRlbGV0ZSBtb2RlIDEwMDY0NCBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uYwotIGRlbGV0ZSBtb2RlIDEwMDY0NCBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4NDFlZmUwLi5hODM0MTEwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNDksMTMgKzE0OSw2IEBAIFBLR19DSEVDS19NT0RVTEVTKFNJTVBMRV9DSE9PU0VSLAotIEFDX1NVQlNUKFNJTVBMRV9DSE9PU0VSX0NGTEFHUykKLSBBQ19TVUJTVChTSU1QTEVfQ0hPT1NFUl9MSUJTKQotIAotLVBLR19DSEVDS19NT0RVTEVTKEFQUExFVCwKLS0gICAgICAgIGRidXMtZ2xpYi0xID49ICREQlVTX0dMSUJfUkVRVUlSRURfVkVSU0lPTgotLSAgICAgICAgZ3RrKy0yLjAgPj0gJEdUS19SRVFVSVJFRF9WRVJTSU9OCi0tICAgICAgICBsaWJwYW5lbGFwcGxldC0yLjAgPj0gJEdOT01FX1BBTkVMX1JFUVVJUkVEX1ZFUlNJT04pCi0tQUNfU1VCU1QoQVBQTEVUX0NGTEFHUykKLS1BQ19TVUJTVChBUFBMRVRfTElCUykKLS0KLSBQTFVHSU5fTElCVE9PTF9GTEFHUz0iLWV4cG9ydF9keW5hbWljIC1tb2R1bGUgLWF2b2lkLXZlcnNpb24iCi0gQUNfU1VCU1QoUExVR0lOX0xJQlRPT0xfRkxBR1MpCi0gCi1AQCAtMTM0MCw3ICsxMzMzLDYgQEAgZ3VpL01ha2VmaWxlCi0gZ3VpL3NpbXBsZS1ncmVldGVyL01ha2VmaWxlCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2xpYm5vdGlmaWNhdGlvbmFyZWEvTWFrZWZpbGUKLSBndWkvc2ltcGxlLWNob29zZXIvTWFrZWZpbGUKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L01ha2VmaWxlCi0gdXRpbHMvTWFrZWZpbGUKLSBkYXRhL2dkbS5jb25mCi0gZGF0YS9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL2d1aS9NYWtlZmlsZS5hbSBiL2d1aS9NYWtlZmlsZS5hbQotaW5kZXggMzI2MjM5Zi4uYmRhM2Y3YSAxMDA2NDQKLS0tLSBhL2d1aS9NYWtlZmlsZS5hbQotKysrIGIvZ3VpL01ha2VmaWxlLmFtCi1AQCAtMiw3ICsyLDYgQEAgTlVMTCA9Ci0gCi0gU1VCRElSUyA9CQkJXAotIAlzaW1wbGUtZ3JlZXRlcgkJXAotLQl1c2VyLXN3aXRjaC1hcHBsZXQJXAotIAkkKE5VTEwpCi0gCi0gaWYgWERNQ1BfU1VQUE9SVAotQEAgLTEyLDUgKzExLDQgQEAgZW5kaWYKLSBESVNUX1NVQkRJUlMgPQkJCVwKLSAJc2ltcGxlLWNob29zZXIJCVwKLSAJc2ltcGxlLWdyZWV0ZXIJCVwKLS0JdXNlci1zd2l0Y2gtYXBwbGV0CVwKLSAJJChOVUxMKQotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluIGIvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4uaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTliNzc1Zi4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4uaW4KLSsrKyAvZGV2L251bGwKLUBAIC0xLDM4ICswLDAgQEAKLS08b2FmX2luZm8+Ci0tICA8b2FmX3NlcnZlciBpaWQ9Ik9BRklJRDpHTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldF9GYWN0b3J5IiB0eXBlPSJleGUiCi0tICAgICAgICAgICAgICBsb2NhdGlvbj0iQExJQkVYRUNESVJAL2dkbS11c2VyLXN3aXRjaC1hcHBsZXQiPgotLQotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJyZXBvX2lkcyIgdHlwZT0ic3RyaW5ndiI+Ci0tICAgICAgPGl0ZW0gdmFsdWU9IklETDpCb25vYm8vR2VuZXJpY0ZhY3Rvcnk6MS4wIi8+Ci0tICAgICAgPGl0ZW0gdmFsdWU9IklETDpCb25vYm8vVW5rbm93bjoxLjAiLz4KLS0gICAgPC9vYWZfYXR0cmlidXRlPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciIF92YWx1ZT0iVXNlciBTd2l0Y2hlciBBcHBsZXQgRmFjdG9yeSIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0ic3RyaW5nIiBfdmFsdWU9IlVzZXIgU3dpdGNoZXIgQXBwbGV0IEZhY3RvcnkiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYm9ub2JvOmVudmlyb25tZW50IiB0eXBlPSJzdHJpbmd2Ij4KLS0gICAgICAgPGl0ZW0gdmFsdWU9IkRCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyIvPgotLSAgICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6YnVnemlsbGEiIHR5cGU9InN0cmluZyIgdmFsdWU9IkdOT01FIi8+Ci0tICAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpwcm9kdWN0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSJnZG0iLz4KLS0gICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOmNvbXBvbmVudCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZ2VuZXJhbCIvPgotLSAgICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6dmVyc2lvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iQFZFUlNJT05AIi8+Ci0tICAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpvdGhlcl9iaW5hcmllcyIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZ2RtLXVzZXItc3dpdGNoLWFwcGxldCIvPgotLSAgICA8L29hZl9hdHRyaWJ1dGU+Ci0tICA8L29hZl9zZXJ2ZXI+Ci0tCi0tICA8b2FmX3NlcnZlciBpaWQ9Ik9BRklJRDpHTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldCIgdHlwZT0iZmFjdG9yeSIKLS0gICAgICAgICAgICAgIGxvY2F0aW9uPSJPQUZJSUQ6R05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXRfRmFjdG9yeSI+Ci0tCi0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9InJlcG9faWRzIiB0eXBlPSJzdHJpbmd2Ij4KLS0gICAgICA8aXRlbSB2YWx1ZT0iSURMOkdOT01FL1ZlcnRpZ28vUGFuZWxBcHBsZXRTaGVsbDoxLjAiLz4KLS0gICAgICA8aXRlbSB2YWx1ZT0iSURMOkJvbm9iby9Db250cm9sOjEuMCIvPgotLSAgICAgIDxpdGVtIHZhbHVlPSJJREw6Qm9ub2JvL1Vua25vd246MS4wIi8+Ci0tICAgIDwvb2FmX2F0dHJpYnV0ZT4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiBfdmFsdWU9IlVzZXIgU3dpdGNoZXIiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyIgX3ZhbHVlPSJBIG1lbnUgdG8gcXVpY2tseSBzd2l0Y2ggYmV0d2VlbiB1c2VycyIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJwYW5lbDppY29uIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJzdG9ja19wZW9wbGUiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6YnVnemlsbGEiIHR5cGU9InN0cmluZyIgdmFsdWU9IkdOT01FIi8+Ci0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOnByb2R1Y3QiIHR5cGU9InN0cmluZyIgdmFsdWU9ImdkbSIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpjb21wb25lbnQiIHR5cGU9InN0cmluZyIgdmFsdWU9ImdlbmVyYWwiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6dmVyc2lvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iQFZFUlNJT05AIi8+Ci0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOm90aGVyX2JpbmFyaWVzIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJnZG0tdXNlci1zd2l0Y2gtYXBwbGV0Ii8+Ci0tICA8L29hZl9zZXJ2ZXI+Ci0tPC9vYWZfaW5mbz4KLWRpZmYgLS1naXQgYS9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnhtbCBiL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGUxODQ1YzguLjAwMDAwMDAKLS0tLSBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0rKysgL2Rldi9udWxsCi1AQCAtMSwyMCArMCwwIEBACi0tPFJvb3Q+Ci0tICA8cG9wdXBzPgotLSAgICA8cG9wdXAgbmFtZT0iYnV0dG9uMyI+Ci0tICAgICAgPG1lbnVpdGVtCi0tICAgICAgIG5hbWU9IkFib3V0IE1lIEl0ZW0iCi0tICAgICAgIHZlcmI9IkdkbUFib3V0TWUiCi0tICAgICAgIF9sYWJlbD0iRWRpdCBQZXJzb25hbCBfSW5mb3JtYXRpb24iLz4KLS0gICAgICA8bWVudWl0ZW0KLS0gICAgICAgbmFtZT0iVXNlcnMgYW5kIEdyb3VwcyBBZG1pbiBJdGVtIgotLSAgICAgICB2ZXJiPSJHZG1Vc2Vyc0dyb3Vwc0FkbWluIgotLSAgICAgICBfbGFiZWw9Il9FZGl0IFVzZXJzIGFuZCBHcm91cHMiLz4KLS0gICAgICA8bWVudWl0ZW0KLS0gICAgICAgbmFtZT0iQWJvdXQgSXRlbSIKLS0gICAgICAgdmVyYj0iR2RtQWJvdXQiCi0tICAgICAgIF9sYWJlbD0iX0Fib3V0IgotLSAgICAgICBwaXh0eXBlPSJzdG9jayIKLS0gICAgICAgcGl4bmFtZT0iZ3RrLWFib3V0Ii8+Ci0tICAgIDwvcG9wdXA+Ci0tICA8L3BvcHVwcz4KLS08L1Jvb3Q+Ci1kaWZmIC0tZ2l0IGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9NYWtlZmlsZS5hbSBiL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMmQyY2RjMC4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9NYWtlZmlsZS5hbQotKysrIC9kZXYvbnVsbAotQEAgLTEsNjcgKzAsMCBAQAotLU5VTEwgPQotLQotLUFNX0NQUEZMQUdTID0gXAotLQktSSQodG9wX3NyY2RpcikvZ3VpL3NpbXBsZS1ncmVldGVyCQlcCi0tCS1JJCh0b3Bfc3JjZGlyKS9jb21tb24JCQkJXAotLQktRFBSRUZJWD1cIiIkKHByZWZpeCkiXCIgCQkJXAotLQktRExJQkRJUj1cIiIkKGxpYmRpcikiXCIgCQkJXAotLQktRERBVEFESVI9XCIiJChkYXRhZGlyKSJcIgkJIAlcCi0tCS1EU1lTQ09ORkRJUj1cIiIkKHN5c2NvbmZkaXIpIlwiCQlcCi0tCS1ETElCTE9DQUxFRElSPVwiIiQocHJlZml4KS9saWIvbG9jYWxlIlwiCVwKLS0JLURHTk9NRUxPQ0FMRURJUj1cIiIkKGRhdGFkaXIpL2xvY2FsZSJcIglcCi0tCS1ER0xBREVESVI9XCIiJChwa2dkYXRhZGlyKSJcIiAJCQlcCi0tCS1ETElCRVhFQ0RJUj1cIiIkKGxpYmV4ZWNkaXIpIlwiIAkJXAotLQktRFNCSU5ESVI9XCIiJChzYmluZGlyKSJcIgkJIAlcCi0tCS1ER0RNQ09ORkRJUj1cIiQoZ2RtY29uZmRpcilcIgkJCVwKLS0JJChHVEtfQ0ZMQUdTKQkJCQkJXAotLQkkKEFQUExFVF9DRkxBR1MpCQkJCVwKLS0JJChOVUxMKQotLQotLWxpYmV4ZWNfUFJPR1JBTVMgPQkJCVwKLS0JZ2RtLXVzZXItc3dpdGNoLWFwcGxldAkJXAotLQkkKE5VTEwpCi0tCi0tZ2RtX3VzZXJfc3dpdGNoX2FwcGxldF9TT1VSQ0VTID0gIAlcCi0tCWFwcGxldC5jIAkJCVwKLS0JZ2RtLWVudHJ5LW1lbnUtaXRlbS5oCQlcCi0tCWdkbS1lbnRyeS1tZW51LWl0ZW0uYwkJXAotLQkkKE5VTEwpCi0tCi0tZ2RtX3VzZXJfc3dpdGNoX2FwcGxldF9MREFERCA9IAkJXAotLQkkKHRvcF9idWlsZGRpcikvZ3VpL3NpbXBsZS1ncmVldGVyL2xpYmdkbXVzZXIubGEJXAotLQkkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmdkbWNvbW1vbi5sYQkJXAotLQkkKENPTU1PTl9MSUJTKQkJCQkJXAotLQkkKEFQUExFVF9MSUJTKQkJCQkJXAotLQkkKE5VTEwpCi0tCi0tIyBCb25vYm8gVUkKLS11aWRpciA9CSQoZGF0YWRpcikvZ25vbWUtMi4wL3VpCi0tdWlfREFUQSA9CQkJCQlcCi0tCUdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnhtbAkJXAotLQkkKE5VTEwpCi0tCi0tIyBCb25vYm8gLnNlcnZlcgotLXNlcnZlcmRpciA9ICQobGliZGlyKS9ib25vYm8vc2VydmVycwotLXNlcnZlcl9pbl9maWxlcyA9CQkJCVwKLS0JR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluCVwKLS0JJChOVUxMKQotLXNlcnZlcl9EQVRBID0gJChzZXJ2ZXJfaW5fZmlsZXM6LnNlcnZlci5pbj0uc2VydmVyKQotLQotLSQoc2VydmVyX2luX2ZpbGVzKTogJChzZXJ2ZXJfaW5fZmlsZXM6LnNlcnZlci5pbj0uc2VydmVyLmluLmluKQotLQlzZWQgLWUgInN8XEBMSUJFWEVDRElSXEB8JChsaWJleGVjZGlyKXwiIC1lICJzfFxAVkVSU0lPTlxAfCQoVkVSU0lPTil8IiAkPCA+ICRACi0tCi0tQElOVExUT09MX1NFUlZFUl9SVUxFQAotLQotLUVYVFJBX0RJU1QgPSAJCQlcCi0tCSQodWlfREFUQSkJCVwKLS0JR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluCVwKLS0JJChOVUxMKQotLQotLURJU1RDTEVBTkZJTEVTID0gICAgICAgICAgICAgICAgICAgICAgICBcCi0tCSQoc2VydmVyX2luX2ZpbGVzKQkJXAotLQkkKHNlcnZlcl9EQVRBKQkJCVwKLS0gICAgICAgICQoTlVMTCkKLS0KLS1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgKn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICBNYWtlZmlsZS5pbgotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvYXBwbGV0LmMgYi9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2FwcGxldC5jCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGI0Zjk0NGMuLjAwMDAwMDAKLS0tLSBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvYXBwbGV0LmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE2NjIgKzAsMCBAQAotLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDggLSotCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4uCi0tICogQ29weXJpZ2h0IChDKSAyMDA4ICAgICAgUmVkIEhhdCwgSW5jLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tICoKLS0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotLSAqLwotLQotLSNpbmNsdWRlICJjb25maWcuaCIKLS0KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2luY2x1ZGUgPGdsaWIvZ2kxOG4uaD4KLS0jaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KLS0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotLQotLSNpbmNsdWRlIDxnY29uZi9nY29uZi5oPgotLSNpbmNsdWRlIDxnY29uZi9nY29uZi1jbGllbnQuaD4KLS0KLS0jaW5jbHVkZSA8ZGJ1cy9kYnVzLWdsaWIuaD4KLS0KLS0jaW5jbHVkZSA8Ym9ub2JvL2Jvbm9iby1tYWluLmg+Ci0tI2luY2x1ZGUgPGJvbm9iby9ib25vYm8tdWktdXRpbC5oPgotLQotLSNpbmNsdWRlIDxwYW5lbC1hcHBsZXQuaD4KLS0jaW5jbHVkZSA8cGFuZWwtYXBwbGV0LWdjb25mLmg+Ci0tCi0tI2luY2x1ZGUgImdkbS11c2VyLW1hbmFnZXIuaCIKLS0jaW5jbHVkZSAiZ2RtLWVudHJ5LW1lbnUtaXRlbS5oIgotLSNpbmNsdWRlICJnZG0tc2V0dGluZ3MtY2xpZW50LmgiCi0tCi0tI2RlZmluZSBMT0NLRE9XTl9ESVIgICAgIi9kZXNrdG9wL2dub21lL2xvY2tkb3duIgotLSNkZWZpbmUgTE9DS0RPV05fVVNFUl9TV0lUQ0hJTkdfS0VZIExPQ0tET1dOX0RJUiAiL2Rpc2FibGVfdXNlcl9zd2l0Y2hpbmciCi0tI2RlZmluZSBMT0NLRE9XTl9MT0NLX1NDUkVFTl9LRVkgICAgTE9DS0RPV05fRElSICIvZGlzYWJsZV9sb2NrX3NjcmVlbiIKLS0jZGVmaW5lIExPQ0tET1dOX0NPTU1BTkRfTElORV9LRVkgICBMT0NLRE9XTl9ESVIgIi9kaXNhYmxlX2NvbW1hbmRfbGluZSIKLS0KLS10eXBlZGVmIGVudW0gewotLSAgICAgICAgR1NNX1BSRVNFTkNFX1NUQVRVU19BVkFJTEFCTEUgPSAwLAotLSAgICAgICAgR1NNX1BSRVNFTkNFX1NUQVRVU19JTlZJU0lCTEUsCi0tICAgICAgICBHU01fUFJFU0VOQ0VfU1RBVFVTX0JVU1ksCi0tICAgICAgICBHU01fUFJFU0VOQ0VfU1RBVFVTX0lETEUsCi0tfSBHc21QcmVzZW5jZVN0YXR1czsKLS0KLS10eXBlZGVmIHN0cnVjdCBfR2RtQXBwbGV0RGF0YQotLXsKLS0gICAgICAgIFBhbmVsQXBwbGV0ICAgICphcHBsZXQ7Ci0tCi0tICAgICAgICBHQ29uZkNsaWVudCAgICAqY2xpZW50OwotLSAgICAgICAgR2RtVXNlck1hbmFnZXIgKm1hbmFnZXI7Ci0tICAgICAgICBHZG1Vc2VyICAgICAgICAqdXNlcjsKLS0KLS0gICAgICAgIEd0a1dpZGdldCAgICAgICptZW51YmFyOwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKm1lbnVpdGVtOwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKm1lbnU7Ci0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBHdGtXaWRnZXQgICAgICAqdXNlcl9pdGVtOwotLSNlbmRpZgotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKmNvbnRyb2xfcGFuZWxfaXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICphY2NvdW50X2l0ZW07Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICAqbG9ja19zY3JlZW5faXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICpsb2dpbl9zY3JlZW5faXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICpxdWl0X3Nlc3Npb25faXRlbTsKLS0KLS0gICAgICAgIGd1aW50ICAgICAgICAgICBjbGllbnRfbm90aWZ5X2xvY2tkb3duX2lkOwotLQotLSAgICAgICAgZ3VpbnQgICAgICAgICAgIGN1cnJlbnRfc3RhdHVzOwotLSAgICAgICAgZ3VpbnQgICAgICAgICAgIHVzZXJfbG9hZGVkX25vdGlmeV9pZDsKLS0gICAgICAgIGd1aW50ICAgICAgICAgICB1c2VyX2NoYW5nZWRfbm90aWZ5X2lkOwotLSAgICAgICAgZ2ludDggICAgICAgICAgIHBpeGVsX3NpemU7Ci0tICAgICAgICBnaW50ICAgICAgICAgICAgcGFuZWxfc2l6ZTsKLS0gICAgICAgIEd0a0ljb25TaXplICAgICBpY29uX3NpemU7Ci0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBEQnVzR1Byb3h5ICAgICAqcHJlc2VuY2VfcHJveHk7Ci0tI2VuZGlmCi0tfSBHZG1BcHBsZXREYXRhOwotLQotLXR5cGVkZWYgc3RydWN0IF9TZWxlY3RvclJlc3BvbnNlRGF0YQotLXsKLS0gICAgICAgIEdkbUFwcGxldERhdGEgICphZGF0YTsKLS0gICAgICAgIEd0a1JhZGlvQnV0dG9uICpyYWRpbzsKLS19IFNlbGVjdG9yUmVzcG9uc2VEYXRhOwotLQotLXN0YXRpYyB2b2lkIHJlc2V0X2ljb24gICAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpOwotLXN0YXRpYyB2b2lkIHVwZGF0ZV9sYWJlbCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpOwotLQotLXN0YXRpYyBnYm9vbGVhbiBhcHBsZXRfZmFjdG9yeSAoUGFuZWxBcHBsZXQgICAqYXBwbGV0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqaWlkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgZGF0YSk7Ci0tCi0tUEFORUxfQVBQTEVUX0JPTk9CT19GQUNUT1JZICgiT0FGSUlEOkdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0X0ZhY3RvcnkiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFORUxfVFlQRV9BUFBMRVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2RtLXVzZXItc3dpdGNoLWFwcGxldCIsICIwIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQYW5lbEFwcGxldEZhY3RvcnlDYWxsYmFjaylhcHBsZXRfZmFjdG9yeSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpCi0tCi0tc3RhdGljIHZvaWQKLS1hYm91dF9tZV9jYiAoQm9ub2JvVUlDb21wb25lbnQgKnVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgIGRhdGEsCi0tICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICpjbmFtZSkKLS17Ci0tICAgICAgICBHRXJyb3IgKmVycjsKLS0KLS0gICAgICAgIGVyciA9IE5VTEw7Ci0tICAgICAgICBpZiAoISBnX3NwYXduX2NvbW1hbmRfbGluZV9hc3luYyAoImdub21lLWFib3V0LW1lIiwgJmVycikpIHsKLS0gICAgICAgICAgICAgICAgZ19jcml0aWNhbCAoIkNvdWxkIG5vdCBydW4gYGdub21lLWFib3V0LW1lJzogJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb21tYW5kcy9HZG1BYm91dE1lIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpZGRlbiIsICIxIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICB9Ci0tfQotLQotLS8qCi0tICogZ25vbWUtcGFuZWwvYXBwbGV0cy93bmNrbGV0L3dpbmRvdy1tZW51LmM6d2luZG93X2ZpbHRlcl9idXR0b25fcHJlc3MoKQotLSAqCi0tICogQ29weXJpZ2h0IChDKSAyMDA1IEphbWVzIE0uIENhcGUuCi0tICogQ29weXJpZ2h0IChDKSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICogQ29weXJpZ2h0IChDKSAyMDAwIEhlbGl4IENvZGUsIEluYy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1tZW51YmFyX2J1dHRvbl9wcmVzc19ldmVudF9jYiAoR3RrV2lkZ2V0ICAgICAgKm1lbnViYXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50QnV0dG9uICpldmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAgKmFkYXRhKQotLXsKLS0gICAgICAgIGlmIChldmVudC0+YnV0dG9uICE9IDEpIHsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lIChtZW51YmFyLCAiYnV0dG9uLXByZXNzLWV2ZW50Iik7Ci0tICAgICAgICAgICAgICAgIC8qIFJlc2V0IHRoZSBsb2dpbiB3aW5kb3cgaXRlbSAqLwotLSAgICAgICAgfQotLQotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWFib3V0X2NiIChCb25vYm9VSUNvbXBvbmVudCAqdWlfY29udGFpbmVyLAotLSAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgZGF0YSwKLS0gICAgICAgICAgY29uc3QgY2hhciAgICAgICAgKmNuYW1lKQotLXsKLS0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICphdXRob3JzW10gPSB7Ci0tICAgICAgICAgICAgICAgICJKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4iLAotLSAgICAgICAgICAgICAgICAiVGhvbWFzIFRodXJtYW4gPHRob21hc0B0aHVybWFuLm9yZy51az4iLAotLSAgICAgICAgICAgICAgICAiV2lsbGlhbSBKb24gTWNDYW5uIDxqbWNjYW5uQHJlZGhhdC5jb20+IiwKLS0gICAgICAgICAgICAgICAgTlVMTAotLSAgICAgICAgfTsKLS0gICAgICAgIHN0YXRpYyBjaGFyICpsaWNlbnNlW10gPSB7Ci0tICAgICAgICAgICAgICAgIE5fKCJUaGUgVXNlciBTd2l0Y2ggQXBwbGV0IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgIgotLSAgICAgICAgICAgICAgICAgICAiaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgIgotLSAgICAgICAgICAgICAgICAgICAidGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgIgotLSAgICAgICAgICAgICAgICAgICAiKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4iKSwKLS0gICAgICAgICAgICAgICAgTl8oIlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAiCi0tICAgICAgICAgICAgICAgICAgICJidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAiCi0tICAgICAgICAgICAgICAgICAgICJNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICIKLS0gICAgICAgICAgICAgICAgICAgIkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuIiksCi0tICAgICAgICAgICAgICAgIE5fKCJZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAiCi0tICAgICAgICAgICAgICAgICAgICJhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAiCi0tICAgICAgICAgICAgICAgICAgICJGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQSAiKSwKLS0gICAgICAgICAgICAgICAgTlVMTAotLSAgICAgICAgfTsKLS0gICAgICAgIGNoYXIgKmxpY2Vuc2VfaTE4bjsKLS0KLS0gICAgICAgIGxpY2Vuc2VfaTE4biA9IGdfc3RyY29uY2F0IChfKGxpY2Vuc2VbMF0pLCAiXG5cbiIsIF8obGljZW5zZVsxXSksICJcblxuIiwgXyhsaWNlbnNlWzJdKSwgTlVMTCk7IAotLQotLSAgICAgICAgZ3RrX3Nob3dfYWJvdXRfZGlhbG9nIChOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiIsIFZFUlNJT04sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3B5cmlnaHQiLCAiQ29weXJpZ2h0IFx4YzJceGE5IDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlLlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29weXJpZ2h0IFx4YzJceGE5IDIwMDYgVGhvbWFzIFRodXJtYW4uXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3B5cmlnaHQgXHhjMlx4YTkgMjAwOCBSZWQgSGF0LCBJbmMuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lbnRzIiwgXygiQSBtZW51IHRvIHF1aWNrbHkgc3dpdGNoIGJldHdlZW4gdXNlcnMuIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIiwgYXV0aG9ycywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiLCBsaWNlbnNlX2kxOG4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cmFwLWxpY2Vuc2UiLCBUUlVFLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNsYXRvci1jcmVkaXRzIiwgXygidHJhbnNsYXRvci1jcmVkaXRzIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2dvLWljb24tbmFtZSIsICJzdG9ja19wZW9wbGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0gICAgICAgIGdfZnJlZSAobGljZW5zZV9pMThuKTsKLS19Ci0tCi0tCi0tc3RhdGljIHZvaWQKLS1hZG1pbl9jYiAoQm9ub2JvVUlDb21wb25lbnQgKnVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgIGRhdGEsCi0tICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICpjbmFtZSkKLS17Ci0tI2lmZGVmIFVTRVJTX0FETUlOCi0tICAgICAgICBjaGFyICAgKiphcmdzOwotLSAgICAgICAgZ2Jvb2xlYW4gcmVzOwotLSAgICAgICAgR0Vycm9yICAqZXJyOwotLQotLSAgICAgICAgZXJyID0gTlVMTDsKLS0gICAgICAgIGlmICghZ19zaGVsbF9wYXJzZV9hcmd2IChVU0VSU19BRE1JTiwgTlVMTCwgJmFyZ3MsICZlcnIpKSB7Ci0tICAgICAgICAgICAgICAgIGdfY3JpdGljYWwgKCJDb3VsZCBub3QgcGFyc2UgdXNlcnMgYW5kIGdyb3VwcyBtYW5hZ2VtZW50IGNvbW1hbmQgbGluZSBgJXMnOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRVJTX0FETUlOLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXMgPSBnX3NwYXduX2FzeW5jIChnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdfU1BBV05fU1RET1VUX1RPX0RFVl9OVUxMIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCB8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19TUEFXTl9TRUFSQ0hfUEFUSCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX2NyaXRpY2FsICgiQ291bGQgbm90IHJ1biBgJXMnIHRvIG1hbmFnZSB1c2VycyBhbmQgZ3JvdXBzOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRVJTX0FETUlOLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICB9Ci0tICAgICAgICBnX3N0cmZyZWV2IChhcmdzKTsKLS0jZW5kaWYgLyogVVNFUlNfQURNSU4gKi8KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXRfbWVudWl0ZW1faWNvbiAoQm9ub2JvVUlDb21wb25lbnQgKmNvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgKml0ZW1fcGF0aCwKLS0gICAgICAgICAgICAgICAgICAgR3RrSWNvblRoZW1lICAgICAgKnRoZW1lLAotLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAqaWNvbl9uYW1lLAotLSAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgaWNvbl9zaXplKQotLXsKLS0gICAgICAgIEdka1BpeGJ1ZiAqcGl4YnVmOwotLSAgICAgICAgaW50ICAgICAgICB3aWR0aDsKLS0gICAgICAgIGludCAgICAgICAgaGVpZ2h0OwotLQotLSAgICAgICAgcGl4YnVmID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uICh0aGVtZSwgaWNvbl9uYW1lLCBpY29uX3NpemUsIDAsIE5VTEwpOwotLSAgICAgICAgaWYgKHBpeGJ1ZiA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHdpZHRoID0gZ2RrX3BpeGJ1Zl9nZXRfd2lkdGggKHBpeGJ1Zik7Ci0tICAgICAgICBoZWlnaHQgPSBnZGtfcGl4YnVmX2dldF9oZWlnaHQgKHBpeGJ1Zik7Ci0tICAgICAgICBpZiAod2lkdGggPiBpY29uX3NpemUgKyA0IHx8IGhlaWdodCA+IGljb25fc2l6ZSArIDQpIHsKLS0gICAgICAgICAgICAgICAgR2RrUGl4YnVmICp0bXA7Ci0tICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiB3aWR0aCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICo9IChnZG91YmxlKSBpY29uX3NpemUgLyAoZ2RvdWJsZSkgaGVpZ2h0OwotLSAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGljb25fc2l6ZTsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gKGdkb3VibGUpIGljb25fc2l6ZSAvIChnZG91YmxlKSB3aWR0aDsKLS0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGljb25fc2l6ZTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICB0bXAgPSBnZGtfcGl4YnVmX3NjYWxlX3NpbXBsZSAocGl4YnVmLCB3aWR0aCwgaGVpZ2h0LCBHREtfSU5URVJQX0JJTElORUFSKTsKLS0gICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tICAgICAgICAgICAgICAgIHBpeGJ1ZiA9IHRtcDsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGJvbm9ib191aV91dGlsX3NldF9waXhidWYgKGNvbXBvbmVudCwgaXRlbV9wYXRoLCBwaXhidWYsIE5VTEwpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tYXBwbGV0X3N0eWxlX3NldF9jYiAoR3RrV2lkZ2V0ICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgR3RrU3R5bGUgICpvbGRfc3R5bGUsCi0tICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICBkYXRhKQotLXsKLS0gICAgICAgIEJvbm9ib1VJQ29tcG9uZW50ICpjb21wb25lbnQ7Ci0tICAgICAgICBHZGtTY3JlZW4gICAgICAgICAqc2NyZWVuOwotLSAgICAgICAgR3RrSWNvblRoZW1lICAgICAgKnRoZW1lOwotLSAgICAgICAgaW50ICAgICAgICAgICAgICAgIHdpZHRoOwotLSAgICAgICAgaW50ICAgICAgICAgICAgICAgIGhlaWdodDsKLS0gICAgICAgIGludCAgICAgICAgICAgICAgICBpY29uX3NpemU7Ci0tCi0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9oYXNfc2NyZWVuICh3aWRnZXQpKSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbiAod2lkZ2V0KTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoZ3RrX2ljb25fc2l6ZV9sb29rdXBfZm9yX3NldHRpbmdzIChndGtfc2V0dGluZ3NfZ2V0X2Zvcl9zY3JlZW4gKHNjcmVlbiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfSUNPTl9TSVpFX01FTlUsICZ3aWR0aCwgJmhlaWdodCkpIHsKLS0gICAgICAgICAgICAgICAgaWNvbl9zaXplID0gTUFYICh3aWR0aCwgaGVpZ2h0KTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGljb25fc2l6ZSA9IDE2OwotLSAgICAgICAgfQotLQotLSAgICAgICAgdGhlbWUgPSBndGtfaWNvbl90aGVtZV9nZXRfZm9yX3NjcmVlbiAoc2NyZWVuKTsKLS0gICAgICAgIGNvbXBvbmVudCA9IHBhbmVsX2FwcGxldF9nZXRfcG9wdXBfY29tcG9uZW50IChQQU5FTF9BUFBMRVQgKHdpZGdldCkpOwotLQotLSAgICAgICAgc2V0X21lbnVpdGVtX2ljb24gKGNvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAiL2NvbW1hbmRzL0dkbUFib3V0TWUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyLWluZm8iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25fc2l6ZSk7Ci0tICAgICAgICBzZXRfbWVudWl0ZW1faWNvbiAoY29tcG9uZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtVXNlcnNHcm91cHNBZG1pbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b2NrX3Blb3BsZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9zaXplKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1hcHBsZXRfY2hhbmdlX2JhY2tncm91bmRfY2IgKFBhbmVsQXBwbGV0ICAgICAgICAgICAgICAgKmFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsQXBwbGV0QmFja2dyb3VuZFR5cGUgIHR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtDb2xvciAgICAgICAgICAgICAgICAgICpjb2xvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1BpeG1hcCAgICAgICAgICAgICAgICAgKnBpeG1hcCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICAgICAgICAgICAgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1JjU3R5bGUgKnJjX3N0eWxlOwotLSAgICAgICAgR3RrU3R5bGUgICAqc3R5bGU7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF9zdHlsZSAoYWRhdGEtPm1lbnViYXIsIE5VTEwpOwotLSAgICAgICAgcmNfc3R5bGUgPSBndGtfcmNfc3R5bGVfbmV3ICgpOwotLSAgICAgICAgZ3RrX3dpZGdldF9tb2RpZnlfc3R5bGUgKEdUS19XSURHRVQgKGFkYXRhLT5tZW51YmFyKSwgcmNfc3R5bGUpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHJjX3N0eWxlKTsKLS0KLS0gICAgICAgIHN3aXRjaCAodHlwZSkgewotLSAgICAgICAgY2FzZSBQQU5FTF9OT19CQUNLR1JPVU5EOgotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgUEFORUxfQ09MT1JfQkFDS0dST1VORDoKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9tb2RpZnlfYmcgKGFkYXRhLT5tZW51YmFyLCBHVEtfU1RBVEVfTk9STUFMLCBjb2xvcik7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBQQU5FTF9QSVhNQVBfQkFDS0dST1VORDoKLS0gICAgICAgICAgICAgICAgc3R5bGUgPSBndGtfc3R5bGVfY29weSAoZ3RrX3dpZGdldF9nZXRfc3R5bGUgKGFkYXRhLT5tZW51YmFyKSk7Ci0tICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+YmdfcGl4bWFwW0dUS19TVEFURV9OT1JNQUxdKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHN0eWxlLT5iZ19waXhtYXBbR1RLX1NUQVRFX05PUk1BTF0pOwotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICAgICAgICAgIHN0eWxlLT5iZ19waXhtYXBbR1RLX1NUQVRFX05PUk1BTF0gPSBnX29iamVjdF9yZWYgKHBpeG1hcCk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3N0eWxlIChhZGF0YS0+bWVudWJhciwgc3R5bGUpOwotLSAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAoc3R5bGUpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tLyoKLS0gKiBnbm9tZS1wYW5lbC9hcHBsZXRzL3duY2tsZXQvd2luZG93LW1lbnUuYzp3aW5kb3dfbWVudV9rZXlfcHJlc3NfZXZlbnQoKQotLSAqCi0tICogQ29weXJpZ2h0IChDKSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICogQ29weXJpZ2h0IChDKSAyMDAwIEhlbGl4IENvZGUsIEluYy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1hcHBsZXRfa2V5X3ByZXNzX2V2ZW50X2NiIChHdGtXaWRnZXQgICAgICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRLZXkgICAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrTWVudVNoZWxsICptZW51X3NoZWxsOwotLQotLSAgICAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7Ci0tICAgICAgICBjYXNlIEdES19LUF9FbnRlcjoKLS0gICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKLS0gICAgICAgIGNhc2UgR0RLXzMyNzBfRW50ZXI6Ci0tICAgICAgICBjYXNlIEdES19SZXR1cm46Ci0tICAgICAgICBjYXNlIEdES19zcGFjZToKLS0gICAgICAgIGNhc2UgR0RLX0tQX1NwYWNlOgotLSAgICAgICAgICAgICAgICBtZW51X3NoZWxsID0gR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51YmFyKTsKLS0gICAgICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgICAgICogV2UgbmVlZCB0byBjYWxsIF9ndGtfbWVudV9zaGVsbF9hY3RpdmF0ZSgpIGhlcmUgYXMgaXMgZG9uZSBpbgotLSAgICAgICAgICAgICAgICAgKiB3aW5kb3dfa2V5X3ByZXNzX2hhbmRsZXIgaW4gZ3RrbWVudWJhci5jIHdoaWNoIHBvcHMgdXAgbWVudQotLSAgICAgICAgICAgICAgICAgKiB3aGVuIEYxMCBpcyBwcmVzc2VkLgotLSAgICAgICAgICAgICAgICAgKgotLSAgICAgICAgICAgICAgICAgKiBBcyB0aGF0IGZ1bmN0aW9uIGlzIHByaXZhdGUgaXRzIGNvZGUgaXMgcmVwbGljYXRlZCBoZXJlLgotLSAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgaWYgKCFtZW51X3NoZWxsLT5hY3RpdmUpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBndGtfZ3JhYl9hZGQgKEdUS19XSURHRVQgKG1lbnVfc2hlbGwpKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBtZW51X3NoZWxsLT5oYXZlX2dyYWIgPSBUUlVFOwotLSAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfc2hlbGwtPmFjdGl2ZSA9IFRSVUU7Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2ZpcnN0IChtZW51X3NoZWxsLCBGQUxTRSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotLSAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2l0ZW1fdGV4dF9hbmdsZV9hbmRfYWxpZ25tZW50IChHdGtXaWRnZXQgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgIHRleHRfYW5nbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAgICAgIHhhbGlnbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICAgICAgeWFsaWduKQotLXsKLS0gICAgICAgIEd0a1dpZGdldCAqbGFiZWw7Ci0tCi0tICAgICAgICBsYWJlbCA9IGd0a19iaW5fZ2V0X2NoaWxkIChHVEtfQklOIChpdGVtKSk7Ci0tCi0tICAgICAgICBndGtfbGFiZWxfc2V0X2FuZ2xlIChHVEtfTEFCRUwgKGxhYmVsKSwgdGV4dF9hbmdsZSk7Ci0tCi0tICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50IChHVEtfTUlTQyAobGFiZWwpLCB4YWxpZ24sIHlhbGlnbik7Ci0tfQotLQotLS8qCi0tICogZ25vbWUtcGFuZWwvYXBwbGV0cy93bmNrbGV0L3dpbmRvdy1tZW51LmM6d2luZG93X21lbnVfc2l6ZV9hbGxvY2F0ZSgpCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgotLSAqIENvcHlyaWdodCAoQykgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgSGVsaXggQ29kZSwgSW5jLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tYXBwbGV0X3NpemVfYWxsb2NhdGVfY2IgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrQWxsb2NhdGlvbiAqYWxsb2NhdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR0xpc3QgICAgICAgICAgICAqY2hpbGRyZW47Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICAgICp0b3BfaXRlbTsKLS0gICAgICAgIFBhbmVsQXBwbGV0T3JpZW50IG9yaWVudDsKLS0gICAgICAgIGdpbnQgICAgICAgICAgICAgIHBpeGVsX3NpemU7Ci0tICAgICAgICBnZG91YmxlICAgICAgICAgICB0ZXh0X2FuZ2xlOwotLSAgICAgICAgR3RrUGFja0RpcmVjdGlvbiAgcGFja19kaXJlY3Rpb247Ci0tICAgICAgICBmbG9hdCAgICAgICAgICAgICB0ZXh0X3hhbGlnbjsKLS0gICAgICAgIGZsb2F0ICAgICAgICAgICAgIHRleHRfeWFsaWduOwotLQotLSAgICAgICAgcGFja19kaXJlY3Rpb24gPSBHVEtfUEFDS19ESVJFQ1RJT05fTFRSOwotLSAgICAgICAgdGV4dF9hbmdsZSA9IDAuMDsKLS0gICAgICAgIHRleHRfeGFsaWduID0gMC4wOwotLSAgICAgICAgdGV4dF95YWxpZ24gPSAwLjU7Ci0tCi0tICAgICAgICBjaGlsZHJlbiA9IGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuIChHVEtfQ09OVEFJTkVSIChhZGF0YS0+bWVudWJhcikpOwotLSAgICAgICAgdG9wX2l0ZW0gPSBHVEtfV0lER0VUIChjaGlsZHJlbi0+ZGF0YSk7Ci0tICAgICAgICBnX2xpc3RfZnJlZSAoY2hpbGRyZW4pOwotLQotLSAgICAgICAgb3JpZW50ID0gcGFuZWxfYXBwbGV0X2dldF9vcmllbnQgKFBBTkVMX0FQUExFVCAod2lkZ2V0KSk7Ci0tCi0tICAgICAgICBzd2l0Y2ggKG9yaWVudCkgewotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX1VQOgotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX0RPV046Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdCAodG9wX2l0ZW0sIC0xLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwotLSAgICAgICAgICAgICAgICBwaXhlbF9zaXplID0gYWxsb2NhdGlvbi0+aGVpZ2h0IC0gZ3RrX3dpZGdldF9nZXRfc3R5bGUgKHRvcF9pdGVtKS0+eXRoaWNrbmVzcyAqIDI7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX0xFRlQ6Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdCAodG9wX2l0ZW0sIGFsbG9jYXRpb24tPndpZHRoLCAtMSk7Ci0tICAgICAgICAgICAgICAgIHBpeGVsX3NpemUgPSBhbGxvY2F0aW9uLT53aWR0aCAtIGd0a193aWRnZXRfZ2V0X3N0eWxlICh0b3BfaXRlbSktPnh0aGlja25lc3MgKiAyOwotLSAgICAgICAgICAgICAgICBwYWNrX2RpcmVjdGlvbiA9IEdUS19QQUNLX0RJUkVDVElPTl9UVEI7Ci0tICAgICAgICAgICAgICAgIHRleHRfYW5nbGUgPSAyNzAuMDsKLS0gICAgICAgICAgICAgICAgdGV4dF94YWxpZ24gPSAwLjU7Ci0tICAgICAgICAgICAgICAgIHRleHRfeWFsaWduID0gMC4wOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgUEFORUxfQVBQTEVUX09SSUVOVF9SSUdIVDoKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0ICh0b3BfaXRlbSwgYWxsb2NhdGlvbi0+d2lkdGgsIC0xKTsKLS0gICAgICAgICAgICAgICAgcGl4ZWxfc2l6ZSA9IGFsbG9jYXRpb24tPndpZHRoIC0gZ3RrX3dpZGdldF9nZXRfc3R5bGUgKHRvcF9pdGVtKS0+eHRoaWNrbmVzcyAqIDI7Ci0tICAgICAgICAgICAgICAgIHBhY2tfZGlyZWN0aW9uID0gR1RLX1BBQ0tfRElSRUNUSU9OX0JUVDsKLS0gICAgICAgICAgICAgICAgdGV4dF9hbmdsZSA9IDkwLjA7Ci0tICAgICAgICAgICAgICAgIHRleHRfeGFsaWduID0gMC41OwotLSAgICAgICAgICAgICAgICB0ZXh0X3lhbGlnbiA9IDAuMDsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBndGtfbWVudV9iYXJfc2V0X3BhY2tfZGlyZWN0aW9uIChHVEtfTUVOVV9CQVIgKGFkYXRhLT5tZW51YmFyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tfZGlyZWN0aW9uKTsKLS0gICAgICAgIGd0a19tZW51X2Jhcl9zZXRfY2hpbGRfcGFja19kaXJlY3Rpb24gKEdUS19NRU5VX0JBUiAoYWRhdGEtPm1lbnViYXIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja19kaXJlY3Rpb24pOwotLQotLSAgICAgICAgc2V0X2l0ZW1fdGV4dF9hbmdsZV9hbmRfYWxpZ25tZW50IChhZGF0YS0+bWVudWl0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfYW5nbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfeGFsaWduLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X3lhbGlnbik7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnBhbmVsX3NpemUgIT0gcGl4ZWxfc2l6ZSkgewotLSAgICAgICAgICAgICAgICBhZGF0YS0+cGFuZWxfc2l6ZSA9IHBpeGVsX3NpemU7Ci0tICAgICAgICAgICAgICAgIHJlc2V0X2ljb24gKGFkYXRhKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tCi0tc3RhdGljIHZvaWQKLS1nZG1fYXBwbGV0X2RhdGFfZnJlZSAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgZ2NvbmZfY2xpZW50X25vdGlmeV9yZW1vdmUgKGFkYXRhLT5jbGllbnQsIGFkYXRhLT5jbGllbnRfbm90aWZ5X2xvY2tkb3duX2lkKTsKLS0KLS0gICAgICAgIGlmIChhZGF0YS0+dXNlcl9sb2FkZWRfbm90aWZ5X2lkICE9IDApIHsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChhZGF0YS0+dXNlciwgYWRhdGEtPnVzZXJfbG9hZGVkX25vdGlmeV9pZCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXJfY2hhbmdlZF9ub3RpZnlfaWQgIT0gMCkgewotLSAgICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGFkYXRhLT51c2VyLCBhZGF0YS0+dXNlcl9jaGFuZ2VkX25vdGlmeV9pZCk7Ci0tICAgICAgICB9Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBpZiAoYWRhdGEtPnByZXNlbmNlX3Byb3h5ICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSk7Ci0tICAgICAgICB9Ci0tI2VuZGlmCi0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXIgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAoYWRhdGEtPnVzZXIpOwotLSAgICAgICAgfQotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5jbGllbnQpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5tYW5hZ2VyKTsKLS0KLS0gICAgICAgIGdfZnJlZSAoYWRhdGEpOwotLX0KLS0KLS0KLS0vKgotLSAqIGdub21lLXBhbmVsL2FwcGxldHMvd25ja2xldC93aW5kb3ctbWVudS5jOndpbmRvd19tZW51X29uX2V4cG9zZSgpCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgotLSAqIENvcHlyaWdodCAoQykgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgSGVsaXggQ29kZSwgSW5jLgotLSAqLwotLXN0YXRpYyBnYm9vbGVhbgotLW1lbnViYXJfZXhwb3NlX2V2ZW50X2NiIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudEV4cG9zZSAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICphZGF0YSkKLS17Ci0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9oYXNfZm9jdXMgKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkKLS0gICAgICAgICAgICAgICAgZ3RrX3BhaW50X2ZvY3VzIChndGtfd2lkZ2V0X2dldF9zdHlsZSAod2lkZ2V0KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2dldF93aW5kb3cgKHdpZGdldCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfc3RhdGUgKHdpZGdldCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgd2lkZ2V0LCAibWVudS1hcHBsZXQiLCAwLCAwLCAtMSwgLTEpOwotLQotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW1lbnVfc3R5bGVfc2V0X2NiIChHdGtXaWRnZXQgICAgICptZW51LAotLSAgICAgICAgICAgICAgICAgICBHdGtTdHlsZSAgICAgICpvbGRfc3R5bGUsCi0tICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1NldHRpbmdzICpzZXR0aW5nczsKLS0gICAgICAgIGludCAgICAgICAgICB3aWR0aDsKLS0gICAgICAgIGludCAgICAgICAgICBoZWlnaHQ7Ci0tCi0tICAgICAgICBhZGF0YS0+aWNvbl9zaXplID0gZ3RrX2ljb25fc2l6ZV9mcm9tX25hbWUgKCJwYW5lbC1tZW51Iik7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPmljb25fc2l6ZSA9PSBHVEtfSUNPTl9TSVpFX0lOVkFMSUQpIHsKLS0gICAgICAgICAgICAgICAgYWRhdGEtPmljb25fc2l6ZSA9IGd0a19pY29uX3NpemVfcmVnaXN0ZXIgKCJwYW5lbC1tZW51IiwgMjQsIDI0KTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKG1lbnUpKSB7Ci0tICAgICAgICAgICAgICAgIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9mb3Jfc2NyZWVuIChndGtfd2lkZ2V0X2dldF9zY3JlZW4gKG1lbnUpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0ICgpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKCFndGtfaWNvbl9zaXplX2xvb2t1cF9mb3Jfc2V0dGluZ3MgKHNldHRpbmdzLCBhZGF0YS0+aWNvbl9zaXplLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3aWR0aCwgJmhlaWdodCkpIHsKLS0gICAgICAgICAgICAgICAgYWRhdGEtPnBpeGVsX3NpemUgPSAtMTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGFkYXRhLT5waXhlbF9zaXplID0gTUFYICh3aWR0aCwgaGVpZ2h0KTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1tZW51aXRlbV9zdHlsZV9zZXRfY2IgKEd0a1dpZGdldCAgICAgKm1lbnVpdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgR3RrU3R5bGUgICAgICAqb2xkX3N0eWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICppbWFnZTsKLS0KLS0gICAgICAgIGlmIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChtZW51aXRlbSkpIHsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmljb25fbmFtZTsKLS0KLS0gICAgICAgICAgICAgICAgaWYgKG1lbnVpdGVtID09IGFkYXRhLT5sb2dpbl9zY3JlZW5faXRlbSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25fbmFtZSA9ICJzeXN0ZW0tdXNlcnMiOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lbnVpdGVtID09IGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInN5c3RlbS1sb2NrLXNjcmVlbiI7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVudWl0ZW0gPT0gYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInN5c3RlbS1sb2ctb3V0IjsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZW51aXRlbSA9PSBhZGF0YS0+YWNjb3VudF9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInVzZXItaW5mbyI7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVudWl0ZW0gPT0gYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25fbmFtZSA9ICJwcmVmZXJlbmNlcy1kZXNrdG9wIjsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBpY29uX25hbWUgPSBHVEtfU1RPQ0tfTUlTU0lOR19JTUFHRTsKLS0gICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fZ2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChtZW51aXRlbSkpOwotLSAgICAgICAgICAgICAgICBndGtfaW1hZ2Vfc2V0X3BpeGVsX3NpemUgKEdUS19JTUFHRSAoaW1hZ2UpLCBhZGF0YS0+cGl4ZWxfc2l6ZSk7Ci0tICAgICAgICAgICAgICAgIGd0a19pbWFnZV9zZXRfZnJvbV9pY29uX25hbWUgKEdUS19JTUFHRSAoaW1hZ2UpLCBpY29uX25hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhLT5pY29uX3NpemUpOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3VzZXJfY2hhbmdlZCAoR2RtVXNlciAgICAgICAgICp1c2VyLAotLSAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAgICphZGF0YSkKLS17Ci0tICAgICAgICBnX2RlYnVnICgidXNlciBjaGFuZ2VkIik7Ci0tICAgICAgICB1cGRhdGVfbGFiZWwgKGFkYXRhKTsKLS0gICAgICAgIHJlc2V0X2ljb24gKGFkYXRhKTsKLS19Ci0tCi0tLyogQ2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIG1lbnUgaXMgZGlzcGxheWVkIChhbmQgYWxzbyBmb3Igc29tZSByZWFzb24KLS0gKiBpbW1lZGlhdGVseSBpdCdzIGNyZWF0ZWQsIHdoaWNoIGRvZXMgbm8gaGFybSkuIEFsbCB3ZSBoYXZlIHRvIGRvCi0tICogaGVyZSBpcyBraWNrIG9mZiBhIHJlcXVlc3QgdG8gR0RNIHRvIGxldCB1cyBrbm93IHdoaWNoIHVzZXJzIGFyZQotLSAqIGxvZ2dlZCBpbiwgc28gd2UgY2FuIGRpc3BsYXkgY2hlY2sgbWFya3MgbmV4dCB0byB0aGVpciBuYW1lcy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1tZW51X2V4cG9zZV9jYiAoR3RrV2lkZ2V0ICptZW51LAotLSAgICAgICAgICAgICAgICBncG9pbnRlciAgIGRhdGEpCi0tewotLSAgICAgICAgY2hhciAqcHJvZ3JhbTsKLS0gICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhID0gZGF0YTsKLS0KLS0gICAgICAgIHByb2dyYW0gPSBnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoICgiZ25vbWUtY29udHJvbC1jZW50ZXIiKTsKLS0gICAgICAgIGlmIChwcm9ncmFtICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfaGlkZSAoYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBnX2ZyZWUgKHByb2dyYW0pOwotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW1heWJlX2xvY2tfc2NyZWVuIChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBjaGFyICAgICAgKmFyZ3NbM107Ci0tICAgICAgICBHRXJyb3IgICAgKmVycjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICB1c2VfZ3NjcmVlbnNhdmVyID0gVFJVRTsKLS0gICAgICAgIGdib29sZWFuICAgcmVzOwotLQotLSAgICAgICAgZ19kZWJ1ZyAoIkF0dGVtcHRpbmcgdG8gbG9jayBzY3JlZW4iKTsKLS0KLS0gICAgICAgIGFyZ3NbMF0gPSBnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoICgiZ25vbWUtc2NyZWVuc2F2ZXItY29tbWFuZCIpOwotLSAgICAgICAgaWYgKGFyZ3NbMF0gPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoInhzY3JlZW5zYXZlci1jb21tYW5kIik7Ci0tICAgICAgICAgICAgICAgIHVzZV9nc2NyZWVuc2F2ZXIgPSBGQUxTRTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmIChhcmdzWzBdID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKHVzZV9nc2NyZWVuc2F2ZXIpIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItLWxvY2siOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItbG9jayI7Ci0tICAgICAgICB9Ci0tICAgICAgICBhcmdzWzJdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnIgPSBOVUxMOwotLSAgICAgICAgcmVzID0gZ2RrX3NwYXduX29uX3NjcmVlbiAoc2NyZWVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19nZXRfaG9tZV9kaXIgKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKF8oIkNhbid0IGxvY2sgc2NyZWVuOiAlcyIpLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAodXNlX2dzY3JlZW5zYXZlcikgewotLSAgICAgICAgICAgICAgICBhcmdzWzFdID0gIi0tdGhyb3R0bGUiOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItdGhyb3R0bGUiOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZXJyID0gTlVMTDsKLS0gICAgICAgIHJlcyA9IGdka19zcGF3bl9vbl9zY3JlZW4gKHNjcmVlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZ2V0X2hvbWVfZGlyICgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR19TUEFXTl9TVERFUlJfVE9fREVWX05VTEwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR19TUEFXTl9TVERPVVRfVE9fREVWX05VTEwpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCB0ZW1wb3JhcmlseSBzZXQgc2NyZWVuc2F2ZXIgdG8gYmxhbmsgc2NyZWVuOiAlcyIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAoYXJnc1swXSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZG9fc3dpdGNoIChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgIEdkbVVzZXIgICAgICAgKnVzZXIpCi0tewotLSAgICAgICAgZ3VpbnQgbnVtX3Nlc3Npb25zOwotLQotLSAgICAgICAgZ19kZWJ1ZyAoIkRvIHVzZXIgc3dpdGNoIik7Ci0tCi0tICAgICAgICBpZiAodXNlciA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGdkbV91c2VyX21hbmFnZXJfZ290b19sb2dpbl9zZXNzaW9uIChhZGF0YS0+bWFuYWdlcik7Ci0tICAgICAgICAgICAgICAgIGdvdG8gb3V0OwotLSAgICAgICAgfQotLQotLSAgICAgICAgbnVtX3Nlc3Npb25zID0gZ2RtX3VzZXJfZ2V0X251bV9zZXNzaW9ucyAodXNlcik7Ci0tICAgICAgICBpZiAobnVtX3Nlc3Npb25zID4gMCkgewotLSAgICAgICAgICAgICAgICBnZG1fdXNlcl9tYW5hZ2VyX2FjdGl2YXRlX3VzZXJfc2Vzc2lvbiAoYWRhdGEtPm1hbmFnZXIsIHVzZXIpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ2RtX3VzZXJfbWFuYWdlcl9nb3RvX2xvZ2luX3Nlc3Npb24gKGFkYXRhLT5tYW5hZ2VyKTsKLS0gICAgICAgIH0KLS0gb3V0OgotLSAgICAgICAgbWF5YmVfbG9ja19zY3JlZW4gKGFkYXRhKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS11cGRhdGVfc3dpdGNoX3VzZXIgKEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGdib29sZWFuIGNhbl9zd2l0Y2g7Ci0tICAgICAgICBnYm9vbGVhbiBoYXNfb3RoZXJfdXNlcnM7Ci0tCi0tICAgICAgICBjYW5fc3dpdGNoID0gZ2RtX3VzZXJfbWFuYWdlcl9jYW5fc3dpdGNoIChhZGF0YS0+bWFuYWdlcik7Ci0tICAgICAgICBnX29iamVjdF9nZXQgKGFkYXRhLT5tYW5hZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAiaGFzLW11bHRpcGxlLXVzZXJzIiwgJmhhc19vdGhlcl91c2VycywKLS0gICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tCi0tICAgICAgICBpZiAoY2FuX3N3aXRjaCAmJiBoYXNfb3RoZXJfdXNlcnMpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgfSBlbHNlIHsKLS0KLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9oaWRlIChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX21hbmFnZXJfaXNfbG9hZGVkX2NoYW5nZWQgKEdkbVVzZXJNYW5hZ2VyICptYW5hZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICpwc3BlYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICAqYWRhdGEpCi0tewotLSAgICAgICAgdXBkYXRlX3N3aXRjaF91c2VyIChhZGF0YSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbWFuYWdlcl9oYXNfbXVsdGlwbGVfdXNlcnNfY2hhbmdlZCAoR2RtVXNlck1hbmFnZXIgICAgICAgKm1hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICAgKnBzcGVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICAgICAgICphZGF0YSkKLS17Ci0tICAgICAgICB1cGRhdGVfc3dpdGNoX3VzZXIgKGFkYXRhKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1vbl91c2VyX2l0ZW1fYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUgKGl0ZW0sICJhY3RpdmF0ZSIpOwotLX0KLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLW9uX2NvbnRyb2xfcGFuZWxfYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgY2hhciAgICAgICphcmdzWzJdOwotLSAgICAgICAgR0Vycm9yICAgICplcnJvcjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICByZXM7Ci0tCi0tICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLWNvbnRyb2wtY2VudGVyIik7Ci0tICAgICAgICBpZiAoYXJnc1swXSA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0gICAgICAgIGFyZ3NbMV0gPSBOVUxMOwotLQotLSAgICAgICAgaWYgKGd0a193aWRnZXRfaGFzX3NjcmVlbiAoR1RLX1dJREdFVCAoYWRhdGEtPmFwcGxldCkpKSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbiAoR1RLX1dJREdFVCAoYWRhdGEtPmFwcGxldCkpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCAoKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgIHJlcyA9IGdka19zcGF3bl9vbl9zY3JlZW4gKHNjcmVlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZ2V0X2hvbWVfZGlyICgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKF8oIkNhbid0IGxvY2sgc2NyZWVuOiAlcyIpLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19mcmVlIChhcmdzWzBdKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9hY2NvdW50X2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGNoYXIgICAgICAqYXJnc1syXTsKLS0gICAgICAgIEdFcnJvciAgICAqZXJyb3I7Ci0tICAgICAgICBHZGtTY3JlZW4gKnNjcmVlbjsKLS0gICAgICAgIGdib29sZWFuICAgcmVzOwotLQotLSAgICAgICAgYXJnc1swXSA9IGdfZmluZF9wcm9ncmFtX2luX3BhdGggKCJhY2NvdW50cy1kaWFsb2ciKTsKLS0gICAgICAgIGlmIChhcmdzWzBdID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgYXJnc1swXSA9IGdfZmluZF9wcm9ncmFtX2luX3BhdGggKCJnbm9tZS1hYm91dC1tZSIpOwotLSAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBhcmdzWzFdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICByZXMgPSBnZGtfc3Bhd25fb25fc2NyZWVuIChzY3JlZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCBsb2NrIHNjcmVlbjogJXMiKSwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAoYXJnc1swXSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbG9ja19zY3JlZW5fYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIG1heWJlX2xvY2tfc2NyZWVuIChhZGF0YSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbG9naW5fc2NyZWVuX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR2RtVXNlciAqdXNlcjsKLS0KLS0gICAgICAgIHVzZXIgPSBOVUxMOwotLQotLSAgICAgICAgZG9fc3dpdGNoIChhZGF0YSwgdXNlcik7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fcXVpdF9zZXNzaW9uX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgY2hhciAgICAgICphcmdzWzNdOwotLSAgICAgICAgR0Vycm9yICAgICplcnJvcjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICByZXM7Ci0tCi0tICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLXNlc3Npb24tc2F2ZSIpOwotLSAgICAgICAgaWYgKGFyZ3NbMF0gPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBhcmdzWzFdID0gIi0tbG9nb3V0LWRpYWxvZyI7Ci0tICAgICAgICBhcmdzWzJdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICByZXMgPSBnZGtfc3Bhd25fb25fc2NyZWVuIChzY3JlZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCBsb2cgb3V0OiAlcyIpLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19mcmVlIChhcmdzWzBdKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIGdib29sZWFuCi0tb25fbWVudV9rZXlfcHJlc3NfZXZlbnQgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRLZXkgICAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1dpZGdldCAqZW50cnk7Ci0tCi0tICAgICAgICBlbnRyeSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5IChHRE1fRU5UUllfTUVOVV9JVEVNIChhZGF0YS0+dXNlcl9pdGVtKSk7Ci0tCi0tICAgICAgICBpZiAoR1RLX1dJREdFVF9IQVNfRk9DVVMgKGVudHJ5KSkgewotLSAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2V2ZW50IChlbnRyeSwgKEdka0V2ZW50ICopZXZlbnQpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zYXZlX3N0YXR1cyAoR2RtQXBwbGV0RGF0YSAqYWRhdGEsCi0tICAgICAgICAgICAgIGd1aW50ICAgICAgICAgIHN0YXR1cykKLS17Ci0tICAgICAgICBpZiAoYWRhdGEtPmN1cnJlbnRfc3RhdHVzICE9IHN0YXR1cykgewotLSAgICAgICAgICAgICAgICBHRXJyb3IgKmVycm9yOwotLQotLSAgICAgICAgICAgICAgICBhZGF0YS0+Y3VycmVudF9zdGF0dXMgPSBzdGF0dXM7Ci0tCi0tICAgICAgICAgICAgICAgIGdfZGVidWcgKCJTYXZpbmcgc3RhdHVzOiAldSIsIHN0YXR1cyk7Ci0tICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2NhbGwgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXRTdGF0dXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1VJTlQsIHN0YXR1cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IHNhdmUgcHJlc2VuY2Ugc3RhdHVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3N0YXR1c19hdmFpbGFibGVfYWN0aXZhdGUgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tCi0tICAgICAgICBpZiAoZ3RrX2NoZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNICh3aWRnZXQpKSkgewotLSAgICAgICAgICAgICAgICBzYXZlX3N0YXR1cyAoYWRhdGEsIEdTTV9QUkVTRU5DRV9TVEFUVVNfQVZBSUxBQkxFKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9zdGF0dXNfYnVzeV9hY3RpdmF0ZSAoR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICAgaWYgKGd0a19jaGVja19tZW51X2l0ZW1fZ2V0X2FjdGl2ZSAoR1RLX0NIRUNLX01FTlVfSVRFTSAod2lkZ2V0KSkpIHsKLS0gICAgICAgICAgICAgICAgIHNhdmVfc3RhdHVzIChhZGF0YSwgR1NNX1BSRVNFTkNFX1NUQVRVU19CVVNZKTsKLS0gICAgICAgICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fc3RhdHVzX2ludmlzaWJsZV9hY3RpdmF0ZSAoR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgICBpZiAoZ3RrX2NoZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNICh3aWRnZXQpKSkgewotLSAgICAgICAgICAgICAgICAgc2F2ZV9zdGF0dXMgKGFkYXRhLCBHU01fUFJFU0VOQ0VfU1RBVFVTX0lOVklTSUJMRSk7Ci0tICAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgc3RydWN0IHsKLS0gICAgICAgIGNoYXIgICAgICAqaWNvbl9uYW1lOwotLSAgICAgICAgY2hhciAgICAgICpkaXNwbGF5X25hbWU7Ci0tICAgICAgICB2b2lkICAgICAgKm1lbnVfY2FsbGJhY2s7Ci0tICAgICAgICBHdGtXaWRnZXQgKndpZGdldDsKLS19IHN0YXR1c2VzW10gPSB7Ci0tICAgICAgICB7ICJ1c2VyLW9ubGluZSIsIE5fKCJBdmFpbGFibGUiKSwgb25fc3RhdHVzX2F2YWlsYWJsZV9hY3RpdmF0ZSwgTlVMTCB9LAotLSAgICAgICAgeyAidXNlci1pbnZpc2libGUiLCBOXygiSW52aXNpYmxlIiksIG9uX3N0YXR1c19pbnZpc2libGVfYWN0aXZhdGUsIE5VTEwgfSwKLS0gICAgICAgIHsgInVzZXItYnVzeSIsIE5fKCJCdXN5IiksIG9uX3N0YXR1c19idXN5X2FjdGl2YXRlLCBOVUxMIH0sCi0tICAgICAgICB7ICJ1c2VyLWF3YXkiLCBOXygiQXdheSIpLCBOVUxMLCBOVUxMIH0sCi0tfTsKLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLXVwZGF0ZV9sYWJlbCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICpsYWJlbDsKLS0gICAgICAgIGNoYXIgICAgICAqbWFya3VwOwotLQotLSAgICAgICAgbGFiZWwgPSBndGtfYmluX2dldF9jaGlsZCAoR1RLX0JJTiAoYWRhdGEtPm1lbnVpdGVtKSk7Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBtYXJrdXAgPSBnX3N0cmR1cF9wcmludGYgKCI8Yj4lczwvYj4gPHNtYWxsPiglcyk8L3NtYWxsPiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkbV91c2VyX2dldF9yZWFsX25hbWUgKEdETV9VU0VSIChhZGF0YS0+dXNlcikpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKHN0YXR1c2VzW2FkYXRhLT5jdXJyZW50X3N0YXR1c10uZGlzcGxheV9uYW1lKSk7Ci0tI2Vsc2UKLS0gICAgICAgIG1hcmt1cCA9IGdfc3RyZHVwX3ByaW50ZiAoIjxiPiVzPC9iPiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkbV91c2VyX2dldF9yZWFsX25hbWUgKEdETV9VU0VSIChhZGF0YS0+dXNlcikpKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19sYWJlbF9zZXRfbWFya3VwIChHVEtfTEFCRUwgKGxhYmVsKSwgbWFya3VwKTsKLS0gICAgICAgIGdfZnJlZSAobWFya3VwKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1zYXZlX3N0YXR1c190ZXh0IChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICplbnRyeTsKLS0gICAgICAgIEd0a1RleHRCdWZmZXIgKmJ1ZmZlcjsKLS0gICAgICAgIGNoYXIgICAgICAgICAgKmVzY2FwZWRfdGV4dDsKLS0gICAgICAgIGNoYXIgICAgICAgICAgKnRleHQ7Ci0tICAgICAgICBHdGtUZXh0SXRlciAgICBzdGFydCwgZW5kOwotLQotLSAgICAgICAgZW50cnkgPSBnZG1fZW50cnlfbWVudV9pdGVtX2dldF9lbnRyeSAoR0RNX0VOVFJZX01FTlVfSVRFTSAoYWRhdGEtPnVzZXJfaXRlbSkpOwotLSAgICAgICAgYnVmZmVyID0gZ3RrX3RleHRfdmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXIChlbnRyeSkpOwotLSAgICAgICAgZ3RrX3RleHRfYnVmZmVyX2dldF9ib3VuZHMgKGJ1ZmZlciwgJnN0YXJ0LCAmZW5kKTsKLS0gICAgICAgIHRleHQgPSBndGtfdGV4dF9idWZmZXJfZ2V0X3RleHQgKGJ1ZmZlciwgJnN0YXJ0LCAmZW5kLCBGQUxTRSk7Ci0tICAgICAgICBlc2NhcGVkX3RleHQgPSBnX21hcmt1cF9lc2NhcGVfdGV4dCAodGV4dCwgLTEpOwotLQotLSAgICAgICAgaWYgKGVzY2FwZWRfdGV4dCAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIEdFcnJvciAqZXJyb3I7Ci0tCi0tICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2NhbGwgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXRTdGF0dXNUZXh0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGVzY2FwZWRfdGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IHNldCBwcmVzZW5jZSBzdGF0dXMgdGV4dDogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAodGV4dCk7Ci0tICAgICAgICBnX2ZyZWUgKGVzY2FwZWRfdGV4dCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fdXNlcl9pdGVtX2Rlc2VsZWN0IChHdGtXaWRnZXQgICAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgc2F2ZV9zdGF0dXNfdGV4dCAoYWRhdGEpOwotLX0KLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLWNyZWF0ZV9zdWJfbWVudSAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICppdGVtOwotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgaW50ICAgICAgICBpOwotLSAgICAgICAgR1NMaXN0ICAgICpyYWRpb19ncm91cDsKLS0jZW5kaWYKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51ID0gZ3RrX21lbnVfbmV3ICgpOwotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5LXByZXNzLWV2ZW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX21lbnVfa2V5X3ByZXNzX2V2ZW50KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUgKEdUS19NRU5VX0lURU0gKGFkYXRhLT5tZW51aXRlbSksIGFkYXRhLT5tZW51KTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5tZW51LCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVfc3R5bGVfc2V0X2NiKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnUsICJzaG93IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVfZXhwb3NlX2NiKSwgYWRhdGEpOwotLQotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgYWRhdGEtPnVzZXJfaXRlbSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fbmV3ICgpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+dXNlcl9pdGVtKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2hvdyAoYWRhdGEtPnVzZXJfaXRlbSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+dXNlcl9pdGVtLCAiYWN0aXZhdGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fdXNlcl9pdGVtX2FjdGl2YXRlKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPnVzZXJfaXRlbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNlbGVjdCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl91c2VyX2l0ZW1fZGVzZWxlY3QpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEpOwotLQotLSAgICAgICAgaXRlbSA9IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldyAoKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwgaXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0pOwotLQotLSAgICAgICAgcmFkaW9fZ3JvdXAgPSBOVUxMOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoc3RhdHVzZXMpOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgR3RrV2lkZ2V0ICpoYm94OwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKmxhYmVsOwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKmltYWdlOwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKml0ZW07Ci0tCi0tICAgICAgICAgICAgICAgIGlmIChzdGF0dXNlc1tpXS5tZW51X2NhbGxiYWNrID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLS0gICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICBpdGVtID0gZ3RrX3JhZGlvX21lbnVfaXRlbV9uZXcgKHJhZGlvX2dyb3VwKTsKLS0gICAgICAgICAgICAgICAgcmFkaW9fZ3JvdXAgPSBndGtfcmFkaW9fbWVudV9pdGVtX2dldF9ncm91cCAoR1RLX1JBRElPX01FTlVfSVRFTSAoaXRlbSkpOwotLSAgICAgICAgICAgICAgICBoYm94ID0gZ3RrX2hib3hfbmV3IChGQUxTRSwgMyk7Ci0tICAgICAgICAgICAgICAgIGxhYmVsID0gZ3RrX2xhYmVsX25ldyAoXyhzdGF0dXNlc1tpXS5kaXNwbGF5X25hbWUpKTsKLS0gICAgICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF9qdXN0aWZ5IChHVEtfTEFCRUwobGFiZWwpLCBHVEtfSlVTVElGWV9MRUZUKTsKLS0gICAgICAgICAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudCAoR1RLX01JU0MgKGxhYmVsKSwgMC4wLCAwLjUpOwotLSAgICAgICAgICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGhib3gpLCBsYWJlbCwgVFJVRSwgVFJVRSwgMCk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyAobGFiZWwpOwotLSAgICAgICAgICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUgKHN0YXR1c2VzW2ldLmljb25fbmFtZSwgR1RLX0lDT05fU0laRV9NRU5VKTsKLS0gICAgICAgICAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChoYm94KSwgaW1hZ2UsIEZBTFNFLCBUUlVFLCAwKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpbWFnZSk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyAoaGJveCk7Ci0tICAgICAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChpdGVtKSwgaGJveCk7Ci0tCi0tICAgICAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKTsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoc3RhdHVzZXNbaV0ubWVudV9jYWxsYmFjayksIGFkYXRhKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtKTsKLS0KLS0gICAgICAgICAgICAgICAgc3RhdHVzZXNbaV0ud2lkZ2V0ID0gaXRlbTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGl0ZW0gPSBndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcgKCk7Ci0tICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQgKEdUS19NRU5VX1NIRUxMIChhZGF0YS0+bWVudSksIGl0ZW0pOwotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtKTsKLS0jZW5kaWYKLS0KLS0gICAgICAgIGFkYXRhLT5hY2NvdW50X2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJBY2NvdW50IEluZm9ybWF0aW9uIikpOwotLSAgICAgICAgZ3RrX2ltYWdlX21lbnVfaXRlbV9zZXRfaW1hZ2UgKEdUS19JTUFHRV9NRU5VX0lURU0gKGFkYXRhLT5hY2NvdW50X2l0ZW0pLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19pbWFnZV9uZXcgKCkpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+YWNjb3VudF9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5hY2NvdW50X2l0ZW0sICJzdHlsZS1zZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAobWVudWl0ZW1fc3R5bGVfc2V0X2NiKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmFjY291bnRfaXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2FjY291bnRfYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5hY2NvdW50X2l0ZW0pOwotLQotLQotLSAgICAgICAgYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKF8oIlN5c3RlbSBQcmVmZXJlbmNlcyIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5jb250cm9sX3BhbmVsX2l0ZW0sICJhY3RpdmF0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9jb250cm9sX3BhbmVsX2FjdGl2YXRlKSwgYWRhdGEpOwotLQotLSAgICAgICAgaXRlbSA9IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldyAoKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwgaXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0pOwotLQotLSAgICAgICAgYWRhdGEtPmxvY2tfc2NyZWVuX2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJMb2NrIFNjcmVlbiIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2ltYWdlX25ldyAoKSk7Ci0tICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQgKEdUS19NRU5VX1NIRUxMIChhZGF0YS0+bWVudSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtLCAiYWN0aXZhdGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fbG9ja19zY3JlZW5fYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICAvKiBPbmx5IHNob3cgaWYgbm90IGxvY2tlZCBkb3duICovCi0tCi0tICAgICAgICBhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJTd2l0Y2ggVXNlciIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19pbWFnZV9uZXcgKCkpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmxvZ2luX3NjcmVlbl9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2dpbl9zY3JlZW5faXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2xvZ2luX3NjcmVlbl9hY3RpdmF0ZSksIGFkYXRhKTsKLS0gICAgICAgIC8qIE9ubHkgc2hvdyBzd2l0Y2ggdXNlciBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlcnMgKi8KLS0KLS0gICAgICAgIGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKF8oIlF1aXTigKYiKSk7Ci0tICAgICAgICBndGtfaW1hZ2VfbWVudV9pdGVtX3NldF9pbWFnZSAoR1RLX0lNQUdFX01FTlVfSVRFTSAoYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSwgInN0eWxlLXNldCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChtZW51aXRlbV9zdHlsZV9zZXRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+cXVpdF9zZXNzaW9uX2l0ZW0sICJhY3RpdmF0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9xdWl0X3Nlc3Npb25fYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5tZW51KTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1kZXN0cm95X3N1Yl9tZW51IChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBndGtfbWVudV9pdGVtX3NldF9zdWJtZW51IChHVEtfTUVOVV9JVEVNIChhZGF0YS0+bWVudWl0ZW0pLCBOVUxMKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXRfbWVudV92aXNpYmlsaXR5IChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICB2aXNpYmxlKQotLXsKLS0KLS0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0tICAgICAgICAgICAgICAgIGNyZWF0ZV9zdWJfbWVudSAoYWRhdGEpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZGVzdHJveV9zdWJfbWVudSAoYWRhdGEpOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWNsaWVudF9ub3RpZnlfbG9ja2Rvd25fZnVuYyAoR0NvbmZDbGllbnQgICAqY2xpZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgY254bl9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDb25mRW50cnkgICAgKmVudHJ5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR0NvbmZWYWx1ZSAqdmFsdWU7Ci0tICAgICAgICBjb25zdCBjaGFyICprZXk7Ci0tCi0tICAgICAgICB2YWx1ZSA9IGdjb25mX2VudHJ5X2dldF92YWx1ZSAoZW50cnkpOwotLSAgICAgICAga2V5ID0gZ2NvbmZfZW50cnlfZ2V0X2tleSAoZW50cnkpOwotLQotLSAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKHN0cmNtcCAoa2V5LCBMT0NLRE9XTl9VU0VSX1NXSVRDSElOR19LRVkpID09IDApIHsKLS0gICAgICAgICAgICAgICAgaWYgKGdjb25mX3ZhbHVlX2dldF9ib29sICh2YWx1ZSkpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfbWVudV92aXNpYmlsaXR5IChhZGF0YSwgRkFMU0UpOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9tZW51X3Zpc2liaWxpdHkgKGFkYXRhLCBUUlVFKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAgKGtleSwgTE9DS0RPV05fTE9DS19TQ1JFRU5fS0VZKSA9PSAwKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChnY29uZl92YWx1ZV9nZXRfYm9vbCAodmFsdWUpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9oaWRlIChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1yZXNldF9pY29uIChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBHZGtQaXhidWYgKnBpeGJ1ZjsKLS0gICAgICAgIEd0a1dpZGdldCAqaW1hZ2U7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXIgPT0gTlVMTCB8fCAhZ3RrX3dpZGdldF9oYXNfc2NyZWVuIChHVEtfV0lER0VUIChhZGF0YS0+bWVudWl0ZW0pKSkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXJfaXRlbSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGltYWdlID0gZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfaW1hZ2UgKEdETV9FTlRSWV9NRU5VX0lURU0gKGFkYXRhLT51c2VyX2l0ZW0pKTsKLS0gICAgICAgICAgICAgICAgcGl4YnVmID0gZ2RtX3VzZXJfcmVuZGVyX2ljb24gKGFkYXRhLT51c2VyLCBhZGF0YS0+cGFuZWxfc2l6ZSAqIDMpOwotLSAgICAgICAgICAgICAgICBpZiAocGl4YnVmID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgZ3RrX2ltYWdlX3NldF9mcm9tX3BpeGJ1ZiAoR1RLX0lNQUdFIChpbWFnZSksIHBpeGJ1Zik7Ci0tICAgICAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwaXhidWYpOwotLSAgICAgICAgfQotLSNlbHNlCi0tICAgICAgICBwaXhidWYgPSBnZG1fdXNlcl9yZW5kZXJfaWNvbiAoYWRhdGEtPnVzZXIsIGFkYXRhLT5wYW5lbF9zaXplKTsKLS0KLS0gICAgICAgIGlmIChwaXhidWYgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fZ2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bWVudWl0ZW0pKTsKLS0gICAgICAgIGd0a19pbWFnZV9zZXRfZnJvbV9waXhidWYgKEdUS19JTUFHRSAoaW1hZ2UpLCBwaXhidWYpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tI2VuZGlmCi0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0dXBfY3VycmVudF91c2VyX25vdyAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgZ19hc3NlcnQgKGFkYXRhLT51c2VyICE9IE5VTEwpOwotLQotLSAgICAgICAgaWYgKGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgIT0gMCkgewotLSAgICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGFkYXRhLT51c2VyLCBhZGF0YS0+dXNlcl9sb2FkZWRfbm90aWZ5X2lkKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgPSAwOwotLQotLSAgICAgICAgdXBkYXRlX2xhYmVsIChhZGF0YSk7Ci0tICAgICAgICByZXNldF9pY29uIChhZGF0YSk7Ci0tICAgICAgICBhZGF0YS0+dXNlcl9jaGFuZ2VkX25vdGlmeV9pZCA9Ci0tICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPnVzZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX3VzZXJfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX2N1cnJlbnRfdXNlcl9sb2FkZWQgKEdkbVVzZXIgICAgICAgKnVzZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAqcHNwZWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgaWYgKCFnZG1fdXNlcl9pc19sb2FkZWQgKHVzZXIpKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHNldHVwX2N1cnJlbnRfdXNlcl9ub3cgKGFkYXRhKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXR1cF9jdXJyZW50X3VzZXIgKEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGFkYXRhLT51c2VyID0gZ2RtX3VzZXJfbWFuYWdlcl9nZXRfdXNlcl9ieV91aWQgKGFkYXRhLT5tYW5hZ2VyLCBnZXR1aWQgKCkpOwotLQotLSAgICAgICAgaWYgKGFkYXRhLT51c2VyID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nICgiQ291bGQgbm90IHNldHVwIGN1cnJlbnQgdXNlciIpOwotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBnX29iamVjdF9yZWYgKGFkYXRhLT51c2VyKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51aXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKCIiKTsKLS0jaWZuZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBndGtfaW1hZ2VfbWVudV9pdGVtX3NldF9pbWFnZSAoR1RLX0lNQUdFX01FTlVfSVRFTSAoYWRhdGEtPm1lbnVpdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51YmFyKSwgYWRhdGEtPm1lbnVpdGVtKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2hvdyAoYWRhdGEtPm1lbnVpdGVtKTsKLS0KLS0gICAgICAgIGlmIChnZG1fdXNlcl9pc19sb2FkZWQgKGFkYXRhLT51c2VyKSkgewotLSAgICAgICAgICAgICAgICBzZXR1cF9jdXJyZW50X3VzZXJfbm93IChhZGF0YSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+dXNlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90aWZ5Ojppcy1sb2FkZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2N1cnJlbnRfdXNlcl9sb2FkZWQpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1zZXRfc3RhdHVzIChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgICBndWludCBzdGF0dXMpCi0tewotLSAgICAgICAgaW50IGk7Ci0tCi0tICAgICAgICBnX2RlYnVnICgiU2V0dGluZyBjdXJyZW50IHN0YXR1czogJXUiLCBzdGF0dXMpOwotLSAgICAgICAgYWRhdGEtPmN1cnJlbnRfc3RhdHVzID0gc3RhdHVzOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoc3RhdHVzZXMpOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgaWYgKHN0YXR1c2VzW2ldLndpZGdldCA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgaWYgKGkgPT0gc3RhdHVzKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNIChzdGF0dXNlc1tpXS53aWRnZXQpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHVwZGF0ZV9sYWJlbCAoYWRhdGEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3ByZXNlbmNlX3N0YXR1c19jaGFuZ2VkIChEQnVzR1Byb3h5ICAgICpwcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgc3RhdHVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBnX2RlYnVnICgiU3RhdHVzIGNoYW5nZWQ6ICV1Iiwgc3RhdHVzKTsKLS0KLS0gICAgICAgIHNldF9zdGF0dXMgKGFkYXRhLCBzdGF0dXMpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9zdGF0dXNfdGV4dCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEsCi0tICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpzdGF0dXNfdGV4dCkKLS17Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICplbnRyeTsKLS0gICAgICAgIEd0a1RleHRCdWZmZXIgKmJ1ZmZlcjsKLS0KLS0gICAgICAgIGdfZGVidWcgKCJTdGF0dXMgdGV4dCBjaGFuZ2VkOiAlcyIsIHN0YXR1c190ZXh0KTsKLS0KLS0gICAgICAgIGVudHJ5ID0gZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfZW50cnkgKEdETV9FTlRSWV9NRU5VX0lURU0gKGFkYXRhLT51c2VyX2l0ZW0pKTsKLS0gICAgICAgIGJ1ZmZlciA9IGd0a190ZXh0X3ZpZXdfZ2V0X2J1ZmZlciAoR1RLX1RFWFRfVklFVyAoZW50cnkpKTsKLS0gICAgICAgIGd0a190ZXh0X2J1ZmZlcl9zZXRfdGV4dCAoYnVmZmVyLCBzdGF0dXNfdGV4dCwgLTEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3ByZXNlbmNlX3N0YXR1c190ZXh0X2NoYW5nZWQgKERCdXNHUHJveHkgICAgKnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnN0YXR1c190ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIHNldF9zdGF0dXNfdGV4dCAoYWRhdGEsIHN0YXR1c190ZXh0KTsKLS19Ci0tI2VuZGlmCi0tCi0tc3RhdGljIGdib29sZWFuCi0tZmlsbF9hcHBsZXQgKFBhbmVsQXBwbGV0ICphcHBsZXQpCi0tewotLSAgICAgICAgc3RhdGljIGNvbnN0IEJvbm9ib1VJVmVyYiBtZW51X3ZlcmJzW10gPSB7Ci0tICAgICAgICAgICAgICAgIEJPTk9CT19VSV9WRVJCICgiR2RtQWJvdXRNZSIsIGFib3V0X21lX2NiKSwKLS0gICAgICAgICAgICAgICAgQk9OT0JPX1VJX1ZFUkIgKCJHZG1Vc2Vyc0dyb3Vwc0FkbWluIiwgYWRtaW5fY2IpLAotLSAgICAgICAgICAgICAgICBCT05PQk9fVUlfVkVSQiAoIkdkbUFib3V0IiwgYWJvdXRfY2IpLAotLSAgICAgICAgICAgICAgICBCT05PQk9fVUlfVkVSQl9FTkQKLS0gICAgICAgIH07Ci0tICAgICAgICBzdGF0aWMgZ2Jvb2xlYW4gICAgZmlyc3RfdGltZSA9IEZBTFNFOwotLSAgICAgICAgY2hhciAgICAgICAgICAgICAgKnRtcDsKLS0gICAgICAgIEJvbm9ib1VJQ29tcG9uZW50ICpwb3B1cF9jb21wb25lbnQ7Ci0tICAgICAgICBHZG1BcHBsZXREYXRhICAgICAqYWRhdGE7Ci0tICAgICAgICBHRXJyb3IgICAgICAgICAgICAqZXJyb3I7Ci0tICAgICAgICBEQnVzR0Nvbm5lY3Rpb24gICAqYnVzOwotLQotLSAgICAgICAgaWYgKCFmaXJzdF90aW1lKSB7Ci0tICAgICAgICAgICAgICAgIGZpcnN0X3RpbWUgPSBUUlVFOwotLQotLSAgICAgICAgICAgICAgICAvKiBEbyB0aGlzIGhlcmUgc28gaXQncyBvbmx5IGRvbmUgb25jZS4gKi8KLS0gICAgICAgICAgICAgICAgZ3RrX3JjX3BhcnNlX3N0cmluZyAoInN0eWxlIFwiZ2RtLXVzZXItc3dpdGNoLW1lbnViYXItc3R5bGVcIlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3RrTWVudUJhcjo6c2hhZG93LXR5cGUgPSBub25lXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHdGtNZW51QmFyOjppbnRlcm5hbC1wYWRkaW5nID0gMFxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3R5bGUgXCJnZG0tdXNlci1zd2l0Y2gtYXBwbGV0LXN0eWxlXCJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkd0a1dpZGdldDo6Zm9jdXMtbGluZS13aWR0aCA9IDBcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkd0a1dpZGdldDo6Zm9jdXMtcGFkZGluZyA9IDBcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZGdldCBcIiouZ2RtLXVzZXItc3dpdGNoLW1lbnViYXJcIiBzdHlsZSBcImdkbS11c2VyLXN3aXRjaC1tZW51YmFyLXN0eWxlXCJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZGdldCBcIiouZ2RtLXVzZXItc3dpdGNoLWFwcGxldFwiIHN0eWxlIFwiZ2RtLXVzZXItc3dpdGNoLWFwcGxldC1zdHlsZVwiXG4iKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9pY29uX25hbWUgKCJzdG9ja19wZW9wbGUiKTsKLS0gICAgICAgICAgICAgICAgZ19zZXRfYXBwbGljYXRpb25fbmFtZSAoXygiVXNlciBTd2l0Y2ggQXBwbGV0IikpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoISBnZG1fc2V0dGluZ3NfY2xpZW50X2luaXQgKERBVEFESVIgIi9nZG0vZ2RtLnNjaGVtYXMiLCAiLyIpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19jcml0aWNhbCAoIlVuYWJsZSB0byBpbml0aWFsaXplIHNldHRpbmdzIGNsaWVudCIpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQgKDEpOwotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICB9Ci0tCi0tICAgICAgICBhZGF0YSA9IGdfbmV3MCAoR2RtQXBwbGV0RGF0YSwgMSk7Ci0tICAgICAgICBhZGF0YS0+YXBwbGV0ID0gYXBwbGV0OwotLSAgICAgICAgYWRhdGEtPnBhbmVsX3NpemUgPSAyNDsKLS0KLS0gICAgICAgIGFkYXRhLT5jbGllbnQgPSBnY29uZl9jbGllbnRfZ2V0X2RlZmF1bHQgKCk7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF90b29sdGlwX3RleHQgKEdUS19XSURHRVQgKGFwcGxldCksIF8oIkNoYW5nZSBhY2NvdW50IHNldHRpbmdzIGFuZCBzdGF0dXMiKSk7Ci0tICAgICAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGggKEdUS19DT05UQUlORVIgKGFwcGxldCksIDApOwotLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfbmFtZSAoR1RLX1dJREdFVCAoYXBwbGV0KSwgImdkbS11c2VyLXN3aXRjaC1hcHBsZXQiKTsKLS0gICAgICAgIHBhbmVsX2FwcGxldF9zZXRfZmxhZ3MgKGFwcGxldCwgUEFORUxfQVBQTEVUX0VYUEFORF9NSU5PUik7Ci0tICAgICAgICBwYW5lbF9hcHBsZXRfc2V0dXBfbWVudV9mcm9tX2ZpbGUgKGFwcGxldCwgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQURJUiAiL2dub21lLTIuMC91aS9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC54bWwiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBtZW51X3ZlcmJzLCBhZGF0YSk7Ci0tCi0tICAgICAgICBwb3B1cF9jb21wb25lbnQgPSBwYW5lbF9hcHBsZXRfZ2V0X3BvcHVwX2NvbXBvbmVudCAoYXBwbGV0KTsKLS0KLS0gICAgICAgIC8qIEhpZGUgdGhlIGFkbWluIGNvbnRleHQgbWVudSBpdGVtcyBpZiBsb2NrZWQgZG93biBvciBubyBjbWQtbGluZSAqLwotLSAgICAgICAgaWYgKGdjb25mX2NsaWVudF9nZXRfYm9vbCAoYWRhdGEtPmNsaWVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQ0tET1dOX0NPTU1BTkRfTElORV9LRVksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSB8fAotLSAgICAgICAgICAgIHBhbmVsX2FwcGxldF9nZXRfbG9ja2VkX2Rvd24gKGFwcGxldCkpIHsKLS0gICAgICAgICAgICAgICAgYm9ub2JvX3VpX2NvbXBvbmVudF9zZXRfcHJvcCAocG9wdXBfY29tcG9uZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3BvcHVwcy9idXR0b24zL0dkbVNlcGFyYXRvciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsIE5VTEwpOwotLSAgICAgICAgICAgICAgICBib25vYm9fdWlfY29tcG9uZW50X3NldF9wcm9wIChwb3B1cF9jb21wb25lbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtVXNlcnNHcm91cHNBZG1pbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsIE5VTEwpOwotLSAgICAgICAgfSBlbHNlIHsKLS0jaWZuZGVmIFVTRVJTX0FETUlOCi0tIyAgaWZkZWYgR0RNX1NFVFVQCi0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHBvcHVwX2NvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9wb3B1cHMvYnV0dG9uMy9HZG1TZXBhcmF0b3IiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlkZGVuIiwgIjEiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0jICBlbmRpZiAvKiAhR0RNX1NFVFVQICovCi0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHBvcHVwX2NvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb21tYW5kcy9HZG1Vc2Vyc0dyb3Vwc0FkbWluIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpZGRlbiIsICIxIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tI2VuZGlmIC8qICFVU0VSU19BRE1JTiAqLwotLSAgICAgICAgfQotLQotLSAgICAgICAgLyogSGlkZSB0aGUgZ2RtcGhvdG9zZXR1cCBpdGVtIGlmIGl0IGNhbid0IGJlIGZvdW5kIGluIHRoZSBwYXRoLiAqLwotLSAgICAgICAgdG1wID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLWFib3V0LW1lIik7Ci0tICAgICAgICBpZiAoIXRtcCkgewotLSAgICAgICAgICAgICAgICBib25vYm9fdWlfY29tcG9uZW50X3NldF9wcm9wIChwb3B1cF9jb21wb25lbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtQWJvdXRNZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ19mcmVlICh0bXApOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZS1zZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoYXBwbGV0X3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2UtYmFja2dyb3VuZCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChhcHBsZXRfY2hhbmdlX2JhY2tncm91bmRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhcHBsZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZS1hbGxvY2F0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChhcHBsZXRfc2l6ZV9hbGxvY2F0ZV9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJrZXktcHJlc3MtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoYXBwbGV0X2tleV9wcmVzc19ldmVudF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1cy1pbi1ldmVudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChndGtfd2lkZ2V0X3F1ZXVlX2RyYXcpLCBOVUxMKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1cy1vdXQtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KSwgTlVMTCk7Ci0tICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsIChHX09CSkVDVCAoYXBwbGV0KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZG0tYXBwbGV0LWRhdGEiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdkbV9hcHBsZXRfZGF0YV9mcmVlKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51YmFyID0gZ3RrX21lbnVfYmFyX25ldyAoKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2V0X25hbWUgKGFkYXRhLT5tZW51YmFyLCAiZ2RtLXVzZXItc3dpdGNoLW1lbnViYXIiKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2V0X2Nhbl9mb2N1cyAoYWRhdGEtPm1lbnViYXIsIFRSVUUpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnViYXIsICJidXR0b24tcHJlc3MtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAobWVudWJhcl9idXR0b25fcHJlc3NfZXZlbnRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0X2FmdGVyIChhZGF0YS0+bWVudWJhciwgImV4cG9zZS1ldmVudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChtZW51YmFyX2V4cG9zZV9ldmVudF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChhcHBsZXQpLCBhZGF0YS0+bWVudWJhcik7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5tZW51YmFyKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tYW5hZ2VyID0gZ2RtX3VzZXJfbWFuYWdlcl9yZWZfZGVmYXVsdCAoKTsKLS0gICAgICAgIGdfb2JqZWN0X3NldCAoYWRhdGEtPm1hbmFnZXIsICJpbmNsdWRlLWFsbCIsIFRSVUUsIE5VTEwpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAibm90aWZ5Ojppcy1sb2FkZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fbWFuYWdlcl9pc19sb2FkZWRfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+bWFuYWdlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJub3RpZnk6Omhhcy1tdWx0aXBsZS11c2VycyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9tYW5hZ2VyX2hhc19tdWx0aXBsZV91c2Vyc19jaGFuZ2VkKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS0KLS0gICAgICAgIGdkbV91c2VyX21hbmFnZXJfcXVldWVfbG9hZCAoYWRhdGEtPm1hbmFnZXIpOwotLSAgICAgICAgc2V0dXBfY3VycmVudF91c2VyIChhZGF0YSk7Ci0tCi0tICAgICAgICBnY29uZl9jbGllbnRfYWRkX2RpciAoYWRhdGEtPmNsaWVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0NLRE9XTl9ESVIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NPTkZfQ0xJRU5UX1BSRUxPQURfT05FTEVWRUwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tCi0tICAgICAgICBhZGF0YS0+Y2xpZW50X25vdGlmeV9sb2NrZG93bl9pZCA9IGdjb25mX2NsaWVudF9ub3RpZnlfYWRkIChhZGF0YS0+Y2xpZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9DS0RPV05fRElSLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdDb25mQ2xpZW50Tm90aWZ5RnVuYyljbGllbnRfbm90aWZ5X2xvY2tkb3duX2Z1bmMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0gICAgICAgIGlmIChnY29uZl9jbGllbnRfZ2V0X2Jvb2wgKGFkYXRhLT5jbGllbnQsIExPQ0tET1dOX1VTRVJfU1dJVENISU5HX0tFWSwgTlVMTCkpIHsKLS0gICAgICAgICAgICAgICAgc2V0X21lbnVfdmlzaWJpbGl0eSAoYWRhdGEsIEZBTFNFKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNldF9tZW51X3Zpc2liaWxpdHkgKGFkYXRhLCBUUlVFKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGlmIChnY29uZl9jbGllbnRfZ2V0X2Jvb2wgKGFkYXRhLT5jbGllbnQsIExPQ0tET1dOX0xPQ0tfU0NSRUVOX0tFWSwgTlVMTCkpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2hpZGUgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICBidXMgPSBkYnVzX2dfYnVzX2dldCAoREJVU19CVVNfU0VTU0lPTiwgJmVycm9yKTsKLS0gICAgICAgIGlmIChidXMgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJVbmFibGUgdG8gZ2V0IHNlc3Npb24gYnVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLS0gICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLS0gICAgICAgIH0KLS0KLS0jaWZkZWYgQlVJTERfUFJFU0VOU0VfU1RVRkYKLS0gICAgICAgIGFkYXRhLT5wcmVzZW5jZV9wcm94eSA9IGRidXNfZ19wcm94eV9uZXdfZm9yX25hbWUgKGJ1cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2dub21lL1Nlc3Npb25NYW5hZ2VyL1ByZXNlbmNlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlci5QcmVzZW5jZSIpOwotLSAgICAgICAgaWYgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIERCdXNHUHJveHkgKnByb3h5OwotLQotLSAgICAgICAgICAgICAgICBkYnVzX2dfcHJveHlfYWRkX3NpZ25hbCAoYWRhdGEtPnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c0NoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1VJTlQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfSU5WQUxJRCk7Ci0tICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9jb25uZWN0X3NpZ25hbCAoYWRhdGEtPnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGF0dXNDaGFuZ2VkIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9wcmVzZW5jZV9zdGF0dXNfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9hZGRfc2lnbmFsIChhZGF0YS0+cHJlc2VuY2VfcHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzVGV4dENoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElEKTsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2Nvbm5lY3Rfc2lnbmFsIChhZGF0YS0+cHJlc2VuY2VfcHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c1RleHRDaGFuZ2VkIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9wcmVzZW5jZV9zdGF0dXNfdGV4dF9jaGFuZ2VkKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0KLS0gICAgICAgICAgICAgICAgcHJveHkgPSBkYnVzX2dfcHJveHlfbmV3X2Zyb21fcHJveHkgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2dub21lL1Nlc3Npb25NYW5hZ2VyL1ByZXNlbmNlIik7Ci0tICAgICAgICAgICAgICAgIGlmIChwcm94eSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgc3RhdHVzOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXR1c190ZXh0OwotLSAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgIHZhbHVlID0geyAwLCB9OwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3RleHQgPSBOVUxMOwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkYnVzX2dfcHJveHlfY2FsbCAocHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJvcmcuZ25vbWUuU2Vzc2lvbk1hbmFnZXIuUHJlc2VuY2UiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLCAic3RhdHVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9WQUxVRSwgJnZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfSU5WQUxJRCk7Ci0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IGdldCBwcmVzZW5jZSBzdGF0dXM6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGdfdmFsdWVfZ2V0X3VpbnQgKCZ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7Ci0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBOVUxMOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9jYWxsIChwcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlci5QcmVzZW5jZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJzdGF0dXMtdGV4dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfVkFMVUUsICZ2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJDb3VsZG4ndCBnZXQgcHJlc2VuY2Ugc3RhdHVzIHRleHQ6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ZXh0ID0gZ192YWx1ZV9nZXRfc3RyaW5nICgmdmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdHVzIChhZGF0YSwgc3RhdHVzKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdHVzX3RleHQgKGFkYXRhLCBzdGF0dXNfdGV4dCk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBnZXQgc2Vzc2lvbiBwcmVzZW5jZSBwcm94eSIpOwotLSAgICAgICAgfQotLSNlbmRpZgotLQotLSBkb25lOgotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChHVEtfV0lER0VUIChhZGF0YS0+YXBwbGV0KSk7Ci0tCi0tICAgICAgICByZXR1cm4gVFJVRTsKLS19Ci0tCi0tc3RhdGljIGdib29sZWFuCi0tYXBwbGV0X2ZhY3RvcnkgKFBhbmVsQXBwbGV0ICAgKmFwcGxldCwKLS0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqaWlkLAotLSAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICBkYXRhKQotLXsKLS0gICAgICAgIGdib29sZWFuIHJldDsKLS0gICAgICAgIHJldCA9IEZBTFNFOwotLSAgICAgICAgaWYgKHN0cmNtcCAoaWlkLCAiT0FGSUlEOkdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0IikgPT0gMCkgewotLSAgICAgICAgICAgICAgICByZXQgPSBmaWxsX2FwcGxldCAoYXBwbGV0KTsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiByZXQ7Ci0tfQotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvZ2RtLWVudHJ5LW1lbnUtaXRlbS5jIGIvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZDY1N2U3YS4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDMwNCArMCwwIEBACi0tLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogOCAtKi0KLS0gKgotLSAqIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMuCi0tICoKLS0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0gKgotLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0tICovCi0tCi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLQotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLQotLSNpbmNsdWRlIDxnbGliL2dpMThuLmg+Ci0tI2luY2x1ZGUgPGd0ay9ndGsuaD4KLS0KLS0jaW5jbHVkZSAiZ2RtLWVudHJ5LW1lbnUtaXRlbS5oIgotLQotLS8qIHNhbWUgYXMgdHdpdHRlciAqLwotLSNkZWZpbmUgVEVYVF9CVUZGRVJfTUFYX0NIQVJTIDY0Ci0tCi0tZW51bQotLXsKLS0gICAgICAgIFBST1BfMCwKLS19OwotLQotLXN0cnVjdCBfR2RtRW50cnlNZW51SXRlbQotLXsKLS0gICAgICAgIEd0a01lbnVJdGVtICAgICAgcGFyZW50OwotLQotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICpoYm94OwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICppbWFnZTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICAqZW50cnk7Ci0tfTsKLS0KLS1zdHJ1Y3QgX0dkbUVudHJ5TWVudUl0ZW1DbGFzcwotLXsKLS0gICAgICAgIEd0a01lbnVJdGVtQ2xhc3MgcGFyZW50X2NsYXNzOwotLX07Ci0tCi0tR19ERUZJTkVfVFlQRSAoR2RtRW50cnlNZW51SXRlbSwgZ2RtX2VudHJ5X21lbnVfaXRlbSwgR1RLX1RZUEVfTUVOVV9JVEVNKQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9zZXRfcHJvcGVydHkgKEdPYmplY3QgICAgICAqb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgIHBhcmFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgKnZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgKnBzcGVjKQotLXsKLS0gICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW07Ci0tCi0tICAgICAgICBpdGVtID0gR0RNX0VOVFJZX01FTlVfSVRFTSAob2JqZWN0KTsKLS0KLS0gICAgICAgIHN3aXRjaCAocGFyYW1faWQpIHsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwYXJhbV9pZCwgcHNwZWMpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX2dldF9wcm9wZXJ0eSAoR09iamVjdCAgICAqb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICBwYXJhbV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAqdmFsdWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgKnBzcGVjKQotLXsKLS0gICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW07Ci0tCi0tICAgICAgICBpdGVtID0gR0RNX0VOVFJZX01FTlVfSVRFTSAob2JqZWN0KTsKLS0KLS0gICAgICAgIHN3aXRjaCAocGFyYW1faWQpIHsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwYXJhbV9pZCwgcHNwZWMpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX2Rpc3Bvc2UgKEdPYmplY3QgKm9iamVjdCkKLS17Ci0tCi0tICAgICAgICAoKkdfT0JKRUNUX0NMQVNTIChnZG1fZW50cnlfbWVudV9pdGVtX3BhcmVudF9jbGFzcyktPmRpc3Bvc2UpIChvYmplY3QpOwotLX0KLS0KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1nZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9yZWxlYXNlIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50QnV0dG9uICpldmVudCkKLS17Ci0tICAgICAgICByZXR1cm4gVFJVRTsKLS19Ci0tCi0tLyogQ3V0IGFuZCBwYXN0ZSBmcm9tIGd0a3dpbmRvdy5jICovCi0tc3RhdGljIHZvaWQKLS1zZW5kX2ZvY3VzX2NoYW5nZSAoR3RrV2lkZ2V0ICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgaW4pCi0tewotLSAgICAgICAgR2RrRXZlbnQgKmZldmVudCA9IGdka19ldmVudF9uZXcgKEdES19GT0NVU19DSEFOR0UpOwotLQotLSAgICAgICAgZ19vYmplY3RfcmVmICh3aWRnZXQpOwotLQotLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzICh3aWRnZXQsIGluKTsKLS0KLS0gICAgICAgIGZldmVudC0+Zm9jdXNfY2hhbmdlLnR5cGUgPSBHREtfRk9DVVNfQ0hBTkdFOwotLSAgICAgICAgZmV2ZW50LT5mb2N1c19jaGFuZ2Uud2luZG93ID0gZ19vYmplY3RfcmVmIChndGtfd2lkZ2V0X2dldF93aW5kb3cgKHdpZGdldCkpOwotLSAgICAgICAgZmV2ZW50LT5mb2N1c19jaGFuZ2UuaW4gPSBpbjsKLS0KLS0gICAgICAgIGd0a193aWRnZXRfZXZlbnQgKHdpZGdldCwgZmV2ZW50KTsKLS0KLS0gICAgICAgIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHdpZGdldCksICJoYXMtZm9jdXMiKTsKLS0KLS0gICAgICAgIGdfb2JqZWN0X3VucmVmICh3aWRnZXQpOwotLSAgICAgICAgZ2RrX2V2ZW50X2ZyZWUgKGZldmVudCk7Ci0tfQotLQotLXN0YXRpYyBnYm9vbGVhbgotLWdkbV9lbnRyeV9tZW51X2l0ZW1fYnV0dG9uX3ByZXNzIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudEJ1dHRvbiAqZXZlbnQpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICplbnRyeTsKLS0KLS0gICAgICAgIGVudHJ5ID0gR0RNX0VOVFJZX01FTlVfSVRFTSAod2lkZ2V0KS0+ZW50cnk7Ci0tCi0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9nZXRfd2luZG93IChlbnRyeSkgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnZGtfd2luZG93X3JhaXNlIChndGtfd2lkZ2V0X2dldF93aW5kb3cgKGVudHJ5KSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoIWd0a193aWRnZXRfaGFzX2ZvY3VzIChlbnRyeSkpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzIChlbnRyeSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9yZWFsaXplIChHdGtXaWRnZXQgKndpZGdldCkKLS17Ci0tICAgICAgICBpZiAoR1RLX1dJREdFVF9DTEFTUyAoZ2RtX2VudHJ5X21lbnVfaXRlbV9wYXJlbnRfY2xhc3MpLT5yZWFsaXplKSB7Ci0tICAgICAgICAgICAgICAgIEdUS19XSURHRVRfQ0xBU1MgKGdkbV9lbnRyeV9tZW51X2l0ZW1fcGFyZW50X2NsYXNzKS0+cmVhbGl6ZSAod2lkZ2V0KTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX3NlbGVjdCAoR3RrSXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBnX3JldHVybl9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSk7Ci0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAoR1RLX1dJREdFVCAoR0RNX0VOVFJZX01FTlVfSVRFTSAoaXRlbSktPmVudHJ5KSwgVFJVRSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9kZXNlbGVjdCAoR3RrSXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBnX3JldHVybl9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSk7Ci0tCi0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAoR1RLX1dJREdFVCAoR0RNX0VOVFJZX01FTlVfSVRFTSAoaXRlbSktPmVudHJ5KSwgRkFMU0UpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWdkbV9lbnRyeV9tZW51X2l0ZW1fY2xhc3NfaW5pdCAoR2RtRW50cnlNZW51SXRlbUNsYXNzICprbGFzcykKLS17Ci0tICAgICAgICBHT2JqZWN0Q2xhc3MgICAgICpnb2JqZWN0X2NsYXNzOwotLSAgICAgICAgR3RrV2lkZ2V0Q2xhc3MgICAqd2lkZ2V0X2NsYXNzOwotLSAgICAgICAgR3RrTWVudUl0ZW1DbGFzcyAqbWVudV9pdGVtX2NsYXNzOwotLSAgICAgICAgR3RrSXRlbUNsYXNzICAgICAqaXRlbV9jbGFzczsKLS0KLS0gICAgICAgIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgd2lkZ2V0X2NsYXNzID0gR1RLX1dJREdFVF9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgbWVudV9pdGVtX2NsYXNzID0gR1RLX01FTlVfSVRFTV9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgaXRlbV9jbGFzcyA9IEdUS19JVEVNX0NMQVNTIChrbGFzcyk7Ci0tCi0tICAgICAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnZG1fZW50cnlfbWVudV9pdGVtX3NldF9wcm9wZXJ0eTsKLS0gICAgICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X3Byb3BlcnR5OwotLSAgICAgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZGlzcG9zZTsKLS0KLS0gICAgICAgIHdpZGdldF9jbGFzcy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSBnZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9yZWxlYXNlOwotLSAgICAgICAgd2lkZ2V0X2NsYXNzLT5idXR0b25fcHJlc3NfZXZlbnQgPSBnZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9wcmVzczsKLS0gICAgICAgIHdpZGdldF9jbGFzcy0+cmVhbGl6ZSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fcmVhbGl6ZTsKLS0KLS0gICAgICAgIGl0ZW1fY2xhc3MtPnNlbGVjdCA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fc2VsZWN0OwotLSAgICAgICAgaXRlbV9jbGFzcy0+ZGVzZWxlY3QgPSBnZG1fZW50cnlfbWVudV9pdGVtX2Rlc2VsZWN0OwotLQotLSAgICAgICAgbWVudV9pdGVtX2NsYXNzLT5oaWRlX29uX2FjdGl2YXRlID0gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fZW50cnlfc2hvdyAoR3RrV2lkZ2V0ICAgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgaWYgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAod2lkZ2V0KSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGdka193aW5kb3dfcmFpc2UgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAod2lkZ2V0KSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAod2lkZ2V0LCBUUlVFKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl90ZXh0X2J1ZmZlcl9jaGFuZ2VkIChHdGtUZXh0QnVmZmVyICAgICpidWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2RtRW50cnlNZW51SXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBpbnQgbGVuOwotLQotLSAgICAgICAgbGVuID0gZ3RrX3RleHRfYnVmZmVyX2dldF9jaGFyX2NvdW50IChidWZmZXIpOwotLSAgICAgICAgaWYgKGxlbiA+IFRFWFRfQlVGRkVSX01BWF9DSEFSUykgewotLSAgICAgICAgICAgICAgICBnZGtfd2luZG93X2JlZXAgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAoR1RLX1dJREdFVCAoaXRlbSkpKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9lbnRyeV9tb3ZlX2ZvY3VzIChHdGtXaWRnZXQgICAgICAgICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgR3RrRGlyZWN0aW9uVHlwZSAgZGlyZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgZ19kZWJ1ZyAoImZvY3VzIG1vdmUiKTsKLS0gICAgICAgIHNlbmRfZm9jdXNfY2hhbmdlIChHVEtfV0lER0VUIChHRE1fRU5UUllfTUVOVV9JVEVNIChpdGVtKS0+ZW50cnkpLCBGQUxTRSk7Ci0tICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKGl0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3ZlLWZvY3VzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJUl9UQUJfRk9SV0FSRCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9pbml0IChHZG1FbnRyeU1lbnVJdGVtICppdGVtKQotLXsKLS0gICAgICAgIFBhbmdvRm9udERlc2NyaXB0aW9uICpmb250ZGVzYzsKLS0gICAgICAgIFBhbmdvRm9udE1ldHJpY3MgICAgICptZXRyaWNzOwotLSAgICAgICAgUGFuZ29Db250ZXh0ICAgICAgICAgKmNvbnRleHQ7Ci0tICAgICAgICBQYW5nb0xhbmd1YWdlICAgICAgICAqbGFuZzsKLS0gICAgICAgIGludCAgICAgICAgICAgICAgICAgICBhc2NlbnQ7Ci0tICAgICAgICBHdGtUZXh0QnVmZmVyICAgICAgICAqYnVmZmVyOwotLQotLSAgICAgICAgaXRlbS0+aGJveCA9IGd0a19oYm94X25ldyAoRkFMU0UsIDYpOwotLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKGl0ZW0pLCBpdGVtLT5oYm94KTsKLS0KLS0gICAgICAgIGl0ZW0tPmltYWdlID0gZ3RrX2ltYWdlX25ldyAoKTsKLS0gICAgICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAoaXRlbS0+aGJveCksIGl0ZW0tPmltYWdlLCBGQUxTRSwgRkFMU0UsIDApOwotLQotLSAgICAgICAgaXRlbS0+ZW50cnkgPSBndGtfdGV4dF92aWV3X25ldyAoKTsKLS0gICAgICAgIGd0a190ZXh0X3ZpZXdfc2V0X2FjY2VwdHNfdGFiIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksIEZBTFNFKTsKLS0gICAgICAgIGd0a190ZXh0X3ZpZXdfc2V0X2VkaXRhYmxlIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksIFRSVUUpOwotLSAgICAgICAgZ3RrX3RleHRfdmlld19zZXRfd3JhcF9tb2RlIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XUkFQX1dPUkQpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbS0+ZW50cnksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9lbnRyeV9zaG93KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0pOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbS0+ZW50cnksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAibW92ZS1mb2N1cyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9lbnRyeV9tb3ZlX2ZvY3VzKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0pOwotLQotLSAgICAgICAgYnVmZmVyID0gZ3RrX3RleHRfdmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSkpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fdGV4dF9idWZmZXJfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKTsKLS0KLS0gICAgICAgIC8qIGdldCB0aGUgZm9udCBhc2NlbnQgZm9yIHRoZSBjdXJyZW50IGZvbnQgYW5kIGxhbmd1YWdlICovCi0tICAgICAgICBjb250ZXh0ID0gZ3RrX3dpZGdldF9nZXRfcGFuZ29fY29udGV4dCAoaXRlbS0+ZW50cnkpOwotLSAgICAgICAgZm9udGRlc2MgPSBwYW5nb19jb250ZXh0X2dldF9mb250X2Rlc2NyaXB0aW9uIChjb250ZXh0KTsKLS0gICAgICAgIGxhbmcgPSBwYW5nb19jb250ZXh0X2dldF9sYW5ndWFnZSAoY29udGV4dCk7Ci0tICAgICAgICBtZXRyaWNzID0gcGFuZ29fY29udGV4dF9nZXRfbWV0cmljcyAoY29udGV4dCwgZm9udGRlc2MsIGxhbmcpOwotLSAgICAgICAgYXNjZW50ID0gcGFuZ29fZm9udF9tZXRyaWNzX2dldF9hc2NlbnQgKG1ldHJpY3MpICogMS41IC8gUEFOR09fU0NBTEU7Ci0tICAgICAgICBwYW5nb19mb250X21ldHJpY3NfdW5yZWYgKG1ldHJpY3MpOwotLQotLSAgICAgICAgLyogc2l6ZSBvdXIgcHJvZ3Jlc3MgYmFyIHRvIGJlIGZpdmUgYXNjZW50cyBsb25nICovCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QgKGl0ZW0tPmVudHJ5LCBhc2NlbnQgKiA1LCAtMSk7Ci0tCi0tICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGl0ZW0tPmhib3gpLCBpdGVtLT5lbnRyeSwgVFJVRSwgVFJVRSwgMCk7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0tPmhib3gpOwotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtLT5pbWFnZSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0tPmVudHJ5KTsKLS19Ci0tCi0tR3RrV2lkZ2V0ICoKLS1nZG1fZW50cnlfbWVudV9pdGVtX25ldyAodm9pZCkKLS17Ci0tICAgICAgICByZXR1cm4gZ19vYmplY3RfbmV3IChHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIE5VTEwpOwotLX0KLS0KLS1HdGtXaWRnZXQgKgotLWdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5IChHZG1FbnRyeU1lbnVJdGVtICppdGVtKQotLXsKLS0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSwgTlVMTCk7Ci0tCi0tICAgICAgICByZXR1cm4gaXRlbS0+ZW50cnk7Ci0tfQotLQotLUd0a1dpZGdldCAqCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfaW1hZ2UgKEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdETV9JU19FTlRSWV9NRU5VX0lURU0gKGl0ZW0pLCBOVUxMKTsKLS0KLS0gICAgICAgIHJldHVybiBpdGVtLT5pbWFnZTsKLS19Ci1kaWZmIC0tZ2l0IGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmggYi9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAzMDMxNjA5Li4wMDAwMDAwCi0tLS0gYS9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNTEgKzAsMCBAQAotLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDggLSotCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4uCi0tICoKLS0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0gKgotLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0tICovCi0tCi0tI2lmbmRlZiBfX0dETV9FTlRSWV9NRU5VX0lURU1fXwotLSNkZWZpbmUgX19HRE1fRU5UUllfTUVOVV9JVEVNX18KLS0KLS0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotLQotLUdfQkVHSU5fREVDTFMKLS0KLS0jZGVmaW5lIEdETV9UWVBFX0VOVFJZX01FTlVfSVRFTSBcCi0tICAoZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfdHlwZSAoKSkKLS0jZGVmaW5lIEdETV9FTlRSWV9NRU5VX0lURU0ob2JqZWN0KSBcCi0tICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmplY3QpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW0pKQotLSNkZWZpbmUgR0RNX0VOVFJZX01FTlVfSVRFTV9DTEFTUyhrbGFzcykgXAotLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW1DbGFzcykpCi0tI2RlZmluZSBHRE1fSVNfRU5UUllfTUVOVV9JVEVNKG9iamVjdCkgXAotLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqZWN0KSwgR0RNX1RZUEVfRU5UUllfTUVOVV9JVEVNKSkKLS0jZGVmaW5lIEdETV9JU19FTlRSWV9NRU5VX0lURU1fQ0xBU1Moa2xhc3MpIFwKLS0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR0RNX1RZUEVfRU5UUllfTUVOVV9JVEVNKSkKLS0jZGVmaW5lIEdETV9FTlRSWV9NRU5VX0lURU1fR0VUX0NMQVNTKG9iamVjdCkgXAotLSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmplY3QpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW1DbGFzcykpCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgX0dkbUVudHJ5TWVudUl0ZW0gR2RtRW50cnlNZW51SXRlbTsKLS10eXBlZGVmIHN0cnVjdCBfR2RtRW50cnlNZW51SXRlbUNsYXNzIEdkbUVudHJ5TWVudUl0ZW1DbGFzczsKLS0KLS1HVHlwZSAgICAgIGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X3R5cGUgICAgICAodm9pZCkgR19HTlVDX0NPTlNUOwotLQotLUd0a1dpZGdldCAqZ2RtX2VudHJ5X21lbnVfaXRlbV9uZXcgICAgICAgICAgICh2b2lkKTsKLS1HdGtXaWRnZXQgKmdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5ICAgICAoR2RtRW50cnlNZW51SXRlbSAqaXRlbSk7Ci0tR3RrV2lkZ2V0ICpnZG1fZW50cnlfbWVudV9pdGVtX2dldF9pbWFnZSAgICAgKEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pOwotLQotLUdfRU5EX0RFQ0xTCi0tCi0tI2VuZGlmIC8qIF9fR0RNX0VOVFJZX01FTlVfSVRFTV9fICovCi1kaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuaW4gYi9wby9QT1RGSUxFUy5pbgotaW5kZXggMWZjY2I5MC4uY2MxYTNmZCAxMDA2NDQKLS0tLSBhL3BvL1BPVEZJTEVTLmluCi0rKysgYi9wby9QT1RGSUxFUy5pbgotQEAgLTg0LDEwICs4NCw2IEBAIGd1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdGltZXIuYwotIGd1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdXNlci5jCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLWNob29zZXItd2lkZ2V0LmMKLSBndWkvc2ltcGxlLWdyZWV0ZXIvZ3JlZXRlci1tYWluLmMKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2FwcGxldC5jCi0tZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnNlcnZlci5pbi5pbgotLWd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0gdXRpbHMvZ2RtZmxleGlzZXJ2ZXIuYwotIHV0aWxzL2dkbS1zY3JlZW5zaG90LmMKLSAKLWRpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5za2lwIGIvcG8vUE9URklMRVMuc2tpcAotaW5kZXggMDI2OWEwZi4uZWUzZDc1MyAxMDA2NDQKLS0tLSBhL3BvL1BPVEZJTEVTLnNraXAKLSsrKyBiL3BvL1BPVEZJTEVTLnNraXAKLUBAIC03LDcgKzcsNiBAQAotICMgcmVtb3ZlIHRoZXNlIHVubGVzcyB5b3UgZml4ICJtYWtlIGRpc3RjaGVjayIgYSBkaWZmZXJlbnQgd2F5LgotICMKLSBkYXRhL2dkbS5zY2hlbWFzLmluCi0tZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4KLSBkYXRhL2dyZWV0ZXItYXV0b3N0YXJ0L2F0LXNwaS1yZWdpc3RyeWQtd3JhcHBlci5kZXNrdG9wLmluCi0gZGF0YS9ncmVldGVyLWF1dG9zdGFydC9nZG0tc2ltcGxlLWdyZWV0ZXIuZGVza3RvcC5pbgotIGRhdGEvZ3JlZXRlci1hdXRvc3RhcnQvZ25vbWUtcG93ZXItbWFuYWdlci5kZXNrdG9wLmluCi0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8wMDAyLWdkbS11c2VyLW1hbmFnZXIuYy1hdm9pZC1kaXNwbGF5aW5nLXN5c3RlbS11c2Vycy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDItZ2RtLXVzZXItbWFuYWdlci5jLWF2b2lkLWRpc3BsYXlpbmctc3lzdGVtLXVzZXJzLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQyMTA3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDItZ2RtLXVzZXItbWFuYWdlci5jLWF2b2lkLWRpc3BsYXlpbmctc3lzdGVtLXVzZXJzLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNDNlNTlmM2RlYWRiMzkxNGExY2M5MzFhZTE4ZDQwMjM4NzRjZGVjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYgQXByIDIwMTMgMTc6MTU6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2RtLXVzZXItbWFuYWdlci5jOiBhdm9pZCBkaXNwbGF5aW5nIHN5c3RlbSB1c2VycyBpbgotIGdyZWV0ZXIncyBsaXN0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXlvY3RvIGVudmlyb25tZW50IHN5c3RlbSB1c2VycyBoYXZlIFVJRCBiZWxvdyAxMDAwCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYyB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2d1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdXNlci1tYW5hZ2VyLmMgYi9ndWkvc2ltcGxlLWdyZWV0ZXIvZ2RtLXVzZXItbWFuYWdlci5jCi1pbmRleCBjNjMxOTg5Li5mMThlNDc4IDEwMDY0NAotLS0tIGEvZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYwotKysrIGIvZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYwotQEAgLTYzLDcgKzYzLDcgQEAKLSAjaWZkZWYgX19zdW4KLSAjZGVmaW5lIEZBTExCQUNLX01JTklNQUxfVUlEICAgICAxMDAKLSAjZWxzZQotLSNkZWZpbmUgRkFMTEJBQ0tfTUlOSU1BTF9VSUQgICAgIDUwMAotKyNkZWZpbmUgRkFMTEJBQ0tfTUlOSU1BTF9VSUQgICAgIDEwMDAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIF9QQVRIX1NIRUxMUwotLS0gCi0xLjcuNC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjlmYTJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1JbiBjcm9zcyBlbnZpcm9ubWVudCB3ZSBoYXZlIHRvIHByZXBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIHBhdGggZm91bmQgYnkKLXBrZ2NvbmZpZyBzaW5jZSB0aGUgcGF0aCByZXR1cm5lZCBmcm9tIHBrZ2NvbmZpZyBkb2VzIG5vdCBoYXZlIHN5c3Jvb3QgcHJlZml4ZWQKLWl0IGVuZHMgdXAgdXNpbmcgdGhlIGZpbGVzIGZyb20gaG9zdCBzeXN0ZW0uIE5vdyB1c3VhbGx5IHBlb3BsZSBoYXZlIGdub21lIGluc3RhbGxlZAotc28gdGhlIGJ1aWxkIHN1Y2NlZWRzIGJ1dCBpZiB5b3UgZG9udCBoYXZlIGdub21lIGluc3RhbGxlZCBvbiBidWlsZCBob3N0IHRoZW4KLWl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gaG9zdCBzeXN0ZW0gYW5kIHBhY2thZ2VzIHVzaW5nIGdub21lLWRvYy11dGlscyB3b250Ci1jb21waWxlLgotCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnZG0tMi4zMi4yL2dub21lLWRvYy11dGlscy5tYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RtLTIuMzIuMi5vcmlnL2dub21lLWRvYy11dGlscy5tYWtlCTIwMTEtMDUtMzEgMDg6MDY6NTkuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ2RtLTIuMzIuMi9nbm9tZS1kb2MtdXRpbHMubWFrZQkyMDExLTA5LTI1IDE1OjMyOjM5LjU0MDk5MjUyMSAtMDcwMAotQEAgLTEzMywxMiArMTMzLDEyIEBACi0gX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotIF94bWwycG9fbW9kZSA9ICQoaWYgJChET0NfSUQpLG1hbGxhcmQsZG9jYm9vaykKLSAKLS1fZGIyaHRtbCA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotLV9kYjJvbWYgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyb21mIGdub21lLWRvYy11dGlsc2AKLS1fbWFscm5nICA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIG1hbHJuZyBnbm9tZS1kb2MtdXRpbHNgCi0tX2NodW5rcyAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY2h1bmtzLnhzbAotLV9jcmVkaXRzID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0tX2lkcyA/PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzKS9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotK19kYjJodG1sID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotK19kYjJvbWYgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0rX21hbHJuZyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgbWFscm5nIGdub21lLWRvYy11dGlsc2AKLStfY2h1bmtzICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY2h1bmtzLnhzbAotK19jcmVkaXRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jcmVkaXRzLnhzbAotK19pZHMgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSQoc2hlbGwgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHMpL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG1fMi4zMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbV8yLjMyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0Nzg1Y2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbV8yLjMyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotU1VNTUFSWSA9ICJHcmFwaGljYWwgbG9naW4gbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ4aW5wdXQgZ25vbWUtcGFuZWwgdGNwLXdyYXBwZXJzIGxpYmNhbmJlcnJhIGxpYnhrbGF2aWVyIGdyZXAgY29uc29sZWtpdCBsaWJwYW0gZ25vbWUtZG9jLXV0aWxzIGd0aysgeHJkYiIKLQotUFIgPSAicjE4IgotCi1pbmhlcml0IGdub21lIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZAotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9jcm9zcy14ZGV0ZWN0aW9uLmRpZmYgXAotICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11c2VyLXN3aXRjaC1hcHBsZXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWdkbS11c2VyLW1hbmFnZXIuYy1hdm9pZC1kaXNwbGF5aW5nLXN5c3RlbS11c2Vycy1pbi0ucGF0Y2ggXAotICAgIGZpbGU6Ly9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovLyVnY29uZi10cmVlLnhtbCBcCi0gICAgZmlsZTovL2dkbSBcCi0gICAgZmlsZTovL2dkbS5jb25mIFwKLSAgICBmaWxlOi8vZ2RtLXBhbSBcCi0gICAgZmlsZTovL0RlZmF1bHQgXAotICAgIGZpbGU6Ly9nZG0uc2VydmljZS5pbiBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRiZTUxODdhMmUxNzg4MWNjNDU0ZTMxM2UwYWU4ZDFlIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDM0ZDIzYWYwZWExOGQ4NmU1NTQzZTcwNzIxMmQ5Mjk3ZWM3ZDgzZjIyMTgwODk2OGFmMjY2ZGJlYmMwZTcwMyIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtYXV0aGVudGljYXRpb24tc2NoZW1lPXNoYWRvdyBcCi0gICAgLS1lbmFibGUtZGVidWc9eWVzIFwKLSAgICAtLXdpdGgtY29uc29sZS1raXQgXAotICAgIC0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgInM6XGJkb2NzOjpnIiAke1N9L01ha2VmaWxlLmFtCi0gICAgcm0gLWYgJHtTfS9tNC9nbm9tZS1kb2MtdXRpbHMubTQKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0vLmdjb25mLm1hbmRhdG9yeQotICAgIGluc3RhbGwgJHtXT1JLRElSfS8lZ2NvbmYtdHJlZS54bWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0vLmdjb25mLm1hbmRhdG9yeS8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZ2RtICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9nZG0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nZG0uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vZ2RtLwotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9nZG0tcGFtICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9nZG0KLSAgICBybSAtZiAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvZ2RtLWF1dG9sb2dpbgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZ2RtL0luaXQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9EZWZhdWx0ICR7RH0vJHtzeXNjb25mZGlyfS9nZG0vSW5pdAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtZSAncywlc2JpbmRpciUsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgIDwgJHtXT1JLRElSfS9nZG0uc2VydmljZS5pbiBcCi0gICAgICAgID4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ2RtLnNlcnZpY2UKLQotICAgIGNob3duIC1SIGdkbTpnZG0gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2dkbQotICAgIGNobW9kIDA3NTAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2dkbQotCi0gICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2RtL2F1dG9zdGFydC9Mb2dpbldpbmRvdy9hdC1zcGktcmVnaXN0cnlkLXdyYXBwZXIuZGVza3RvcAotICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L2dkbS9hdXRvc3RhcnQvTG9naW5XaW5kb3cvb3JjYS1zY3JlZW4tcmVhZGVyLmRlc2t0b3AKLSAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9nZG0vYXV0b3N0YXJ0L0xvZ2luV2luZG93L2dub21lLW1hZy5kZXNrdG9wCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2RtL2F1dG9zdGFydC9Mb2dpbldpbmRvdy9nb2suZGVza3RvcAotICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L2dkbS9hdXRvc3RhcnQvTG9naW5XaW5kb3cvbWV0YWNpdHkuZGVza3RvcAotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29uKiBcCi0gICAgJHtkYXRhZGlyfS94c2Vzc2lvbiogXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3JlcCBkYnVzLXgxMSBzaGFkb3ciCi0jICJsaWJwYW0tYmFzZS1maWxlcyIKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9nZG0vZ2RtLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvZ2RtIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIm9wZW5zc2gtbWlzYyBkZXNrdG9wLWZpbGUtdXRpbHMgZ2xpYi0yLjAtdXRpbHMgbWV0YWNpdHkgZ25vbWUtc2Vzc2lvbiBwb2xraXQtZ25vbWUgY29uc29sZWtpdCIKLQotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJnZG0uc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gImdkbSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDUgLiBzdG9wIDIwIDAgMSAyIDMgNiAuIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0gLS11c2VyLWdyb3VwIGdkbSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSMgUmVnaXN0ZXIgdXAgYXMgZGVmYXVsdCBkbQotbWtkaXIgLXAgJEQke3N5c2NvbmZkaXJ9L1gxMS8KLWVjaG8gIiR7YmluZGlyfS9nZG0iID4gJEQke3N5c2NvbmZkaXJ9L1gxMS9kZWZhdWx0LWRpc3BsYXktbWFuYWdlcgotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLSAgICBkZWx1c2VyIGdkbSB8fCB0cnVlCi0gICAgZGVsZ3JvdXAgZ2RtIHx8IHRydWUKLSAgICBzZWQgLWkgL2dkbS9kICR7c3lzY29uZmRpcn0vWDExL2RlZmF1bHQtZGlzcGxheS1tYW5hZ2VyIHx8IHRydWUKLX0KLQotUE5CTEFDS0xJU1RbZ2RtXSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gZ25vbWUtcGFuZWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1iYWNrZ3JvdW5kcy9nbm9tZS1iYWNrZ3JvdW5kc18yLjMyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1iYWNrZ3JvdW5kcy9nbm9tZS1iYWNrZ3JvdW5kc18yLjMyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNWIwMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmFja2dyb3VuZHMvZ25vbWUtYmFja2dyb3VuZHNfMi4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJHbm9tZSBiYWNrZ3JvdW5kIGltYWdlcyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotIyBnbGliLTIuMCBmb3IgZ2xpYi1nZXR0ZXh0Lm00IHdoaWNoIHByb3ZpZGVzIEFNX0dMSUJfR05VX0dFVFRFWFQKLSMgaW50bHRvb2wtbmF0aXZlIGZvciBJVF9QUk9HX0lOVExUT09MKDAuMzUuMCkKLURFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZGYyNjYyNjQ4M2IwMmU1MWFkZWZjNmFiNTk0NWE4ZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjRkN2I2MGI1YmE3NjhiZjg4MzRiNWZhM2EzNDcxY2Q5YTllMTRiNTg4NGJjMjEwZGMyZDNjZGJmMWZhZGRjZWYiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lLWJhY2tncm91bmQtcHJvcGVydGllcyIKLQotCi1QTkJMQUNLTElTVFtnbm9tZS1iYWNrZ3JvdW5kc10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDcvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDE3ODNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgY29udHJvbCBjZW50ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAiZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSBnbm9tZS1tZW51cyBsaWJ1bmlxdWUgZGJ1cy1nbGliIGdub21lLWRlc2t0b3AgbGlieG1sMiBtZXRhY2l0eSBnY29uZiBnbm9tZS1zZXR0aW5ncy1kYWVtb24gbGlicnN2ZyBwYW5nbyBsaWJnbm9tZWtiZCBsaWJ4a2xhdmllciBsaWJjYW5iZXJyYSBsaWJndG9wIGxpYnhzY3Juc2F2ZXIiCi0KLVBSID0gInIxIgotCi1pbmhlcml0IGdub21lCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImI0ZThhYjVjNzU1NmFlMDdhZGRiZmNmYjRmYTJmNzYxIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiN2M1NjhiNTczNThlNWMwOGY0ZDhkZDc2ZGJhYzdkZjI1MzkxMzVhZDA4MTg3MmI2MDUxNGI3YThhYzc5N2U2NiIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotTERGTEFHUyArPSAiLWxndGhyZWFkLTIuMCAtbHhtbDIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSBzOmhlbHA6OmcgJHtTfS9NYWtlZmlsZS5hbQotICAgIHJtIC1mICR7U30vbTQvZ25vbWUtZG9jLXV0aWxzLm00Ci19Ci1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vbWltZQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29uKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94c2Vzc2lvbiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5kb3ctbWFuYWdlci1zZXR0aW5ncy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Rlc2t0b3AtZGlyZWN0b3JpZXMgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vd2luZG93LW1hbmFnZXItc2V0dGluZ3MvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vd2luZG93LW1hbmFnZXItc2V0dGluZ3MvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3dpbmRvdy1tYW5hZ2VyLXNldHRpbmdzLyouYSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtY29udHJvbC1jZW50ZXJdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBnbm9tZS1tZW51cyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcF8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3BfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRhZmFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcF8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVBSID0gInI2IgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZwotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1YzgwZDYyOGEyNDBlYjlkOWZmNzg5MTNiMzFmMmY2NyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjU1Y2JlY2Y2N2VmZTFmYTFlNTdhYzk2NjUyMGE3YzQ2ZDc5OWM4YmEzYzY1MmExMjE5ZjYwY2FmY2NiMzczOWQiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLURFUEVORFMgKz0gImdjb25mIGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBndGsrIGdsaWItMi4wIGdub21lLWRvYy11dGlscyBzdGFydHVwLW5vdGlmaWNhdGlvbiBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyAtLWRpc2FibGUtZ25vbWUtYWJvdXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBzZWQgLWkgLWUgczpeIyFAUFlUSE9OQDojISR7YmluZGlyfS9weXRob246ICR7U30vZ25vbWUtYWJvdXQvZ25vbWUtYWJvdXQuaW4KLSAgICBybSAtZiAke1N9L200L2dub21lLWRvYy11dGlscy5tNAotfQotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcCIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wL3BucC5pZHMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nbm9tZS1hYm91dCIKLQotUE5CTEFDS0xJU1RbZ25vbWUtZGVza3RvcF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA1OTUvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAxLUFkZC1zdXBwb3J0LWZvci1EZXZpY2VBdXRvbW91bnRIaW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAxLUFkZC1zdXBwb3J0LWZvci1EZXZpY2VBdXRvbW91bnRIaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDVlOTM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvMDAwMS1BZGQtc3VwcG9ydC1mb3ItRGV2aWNlQXV0b21vdW50SGludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gN2RkZTViYzc1YTFkOTZiZTk1MTBjZTFlOThkMjhmOWQzMzUyMDkxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIFpldXRoZW4gPGRhdmlkekByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA4IEp1bCAyMDExIDExOjAzOjUyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBEZXZpY2VBdXRvbW91bnRIaW50Ci0KLUJhc2VkIG9uIHRoZSBwYXRjaCBpbiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMTg0Ci0KLVVwc3RyZWFtLVN0YXR1czogQXBwbGllZCBbMV0KLQotWzFdIGh0dHBzOi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMvY29tbWl0cy1saXN0LzIwMTEtSnVseS9tc2cwMzIwNy5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IERhdmlkIFpldXRoZW4gPGRhdmlkekByZWRoYXQuY29tPgotLS0tCi0gc3JjL2dkdS9nZHUtZGV2aWNlLmMgfCAgIDEwICsrKysrKysrKysKLSBzcmMvZ2R1L2dkdS1kZXZpY2UuaCB8ICAgIDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nZHUvZ2R1LWRldmljZS5jIGIvc3JjL2dkdS9nZHUtZGV2aWNlLmMKLWluZGV4IDZhNWFmYWQuLjRiZTM5Y2YgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2R1L2dkdS1kZXZpY2UuYwotKysrIGIvc3JjL2dkdS9nZHUtZGV2aWNlLmMKLUBAIC04Miw2ICs4Miw3IEBAIHR5cGVkZWYgc3RydWN0Ci0gICBnYm9vbGVhbiBkZXZpY2VfcHJlc2VudGF0aW9uX25vcG9saWN5OwotICAgY2hhciAqZGV2aWNlX3ByZXNlbnRhdGlvbl9uYW1lOwotICAgY2hhciAqZGV2aWNlX3ByZXNlbnRhdGlvbl9pY29uX25hbWU7Ci0rICBjaGFyICpkZXZpY2VfYXV0b21vdW50X2hpbnQ7Ci0gICBndWludDY0IGRldmljZV9zaXplOwotICAgZ3VpbnQ2NCBkZXZpY2VfYmxvY2tfc2l6ZTsKLSAKLUBAIC0yNzksNiArMjgwLDggQEAgY29sbGVjdF9wcm9wcyAoY29uc3QgY2hhciAqa2V5LAotICAgICBwcm9wcy0+ZGV2aWNlX3ByZXNlbnRhdGlvbl9uYW1lID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSAgIGVsc2UgaWYgKHN0cmNtcCAoa2V5LCAiRGV2aWNlUHJlc2VudGF0aW9uSWNvbk5hbWUiKSA9PSAwKQotICAgICBwcm9wcy0+ZGV2aWNlX3ByZXNlbnRhdGlvbl9pY29uX25hbWUgPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwotKyAgZWxzZSBpZiAoc3RyY21wIChrZXksICJEZXZpY2VBdXRvbW91bnRIaW50IikgPT0gMCkKLSsgICAgcHJvcHMtPmRldmljZV9hdXRvbW91bnRfaGludCA9IGdfc3RyZHVwIChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0gICBlbHNlIGlmIChzdHJjbXAgKGtleSwgIkRldmljZVNpemUiKSA9PSAwKQotICAgICBwcm9wcy0+ZGV2aWNlX3NpemUgPSBnX3ZhbHVlX2dldF91aW50NjQgKHZhbHVlKTsKLSAgIGVsc2UgaWYgKHN0cmNtcCAoa2V5LCAiRGV2aWNlQmxvY2tTaXplIikgPT0gMCkKLUBAIC01NDksNiArNTUyLDcgQEAgZGV2aWNlX3Byb3BlcnRpZXNfZnJlZSAoRGV2aWNlUHJvcGVydGllcyAqcHJvcHMpCi0gICBnX3N0cmZyZWV2IChwcm9wcy0+ZGV2aWNlX21vdW50X3BhdGhzKTsKLSAgIGdfZnJlZSAocHJvcHMtPmRldmljZV9wcmVzZW50YXRpb25fbmFtZSk7Ci0gICBnX2ZyZWUgKHByb3BzLT5kZXZpY2VfcHJlc2VudGF0aW9uX2ljb25fbmFtZSk7Ci0rICBnX2ZyZWUgKHByb3BzLT5kZXZpY2VfYXV0b21vdW50X2hpbnQpOwotICAgZ19mcmVlIChwcm9wcy0+am9iX2lkKTsKLSAgIGdfZnJlZSAocHJvcHMtPmlkX3VzYWdlKTsKLSAgIGdfZnJlZSAocHJvcHMtPmlkX3R5cGUpOwotQEAgLTEyOTQsNiArMTI5OCwxMiBAQCBnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYV9jb21wYXRpYmlsaXR5IChHZHVEZXZpY2UgKmRldmljZSkKLSB9Ci0gCi0gY29uc3QgY2hhciAqCi0rZ2R1X2RldmljZV9nZXRfYXV0b21vdW50X2hpbnQgKEdkdURldmljZSAqZGV2aWNlKQotK3sKLSsgICAgICAgIHJldHVybiBkZXZpY2UtPnByaXYtPnByb3BzLT5kZXZpY2VfYXV0b21vdW50X2hpbnQ7Ci0rfQotKwotK2NvbnN0IGNoYXIgKgotIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X21lZGlhIChHZHVEZXZpY2UgKmRldmljZSkKLSB7Ci0gICAgICAgICByZXR1cm4gZGV2aWNlLT5wcml2LT5wcm9wcy0+ZHJpdmVfbWVkaWE7Ci1kaWZmIC0tZ2l0IGEvc3JjL2dkdS9nZHUtZGV2aWNlLmggYi9zcmMvZ2R1L2dkdS1kZXZpY2UuaAotaW5kZXggNGMxMzAyYi4uOGNmZDdhOSAxMDA2NDQKLS0tLSBhL3NyYy9nZHUvZ2R1LWRldmljZS5oCi0rKysgYi9zcmMvZ2R1L2dkdS1kZXZpY2UuaAotQEAgLTE0Myw2ICsxNDMsNyBAQCBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF93d24gKEdkdURldmljZSAqZGV2aWNlKTsKLSBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF9jb25uZWN0aW9uX2ludGVyZmFjZSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGd1aW50NjQgZ2R1X2RldmljZV9kcml2ZV9nZXRfY29ubmVjdGlvbl9zcGVlZCAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGNoYXIgKipnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYV9jb21wYXRpYmlsaXR5IChHZHVEZXZpY2UgKmRldmljZSk7Ci0rY29uc3QgZ2NoYXIgKmdkdV9kZXZpY2VfZ2V0X2F1dG9tb3VudF9oaW50KEdkdURldmljZSAqZGV2aWNlKTsKLSBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGdib29sZWFuIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X2lzX21lZGlhX2VqZWN0YWJsZSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGdib29sZWFuIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X3JlcXVpcmVzX2VqZWN0IChHZHVEZXZpY2UgKmRldmljZSk7Ci0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAyLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAyLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmM5NzA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvMDAwMi1SZXF1aXJlLWxpYm5vdGlmeS0wLjYuMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gZjhkZWE4ZGQ0MTFjYmExMGE1NGVjMDgzYzNkNWM5ZDY0MWVjMzZjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdpbGxpYW0gSm9uIE1jQ2FubiA8am1jY2FubkByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAxMiBPY3QgMjAxMCAwMDoxMjo0OSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBSZXF1aXJlIGxpYm5vdGlmeSAwLjYuMQotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMxOTQwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzFdCi0KLVsxXSBodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2dub21lLWRpc2stdXRpbGl0eS9jb21taXQvP2lkPWY4ZGVhOGRkNDExY2JhMTBhNTRlYzA4M2MzZDVjOWQ2NDFlYzM2YzAKLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgWmV1dGhlbiA8ZGF2aWR6QHJlZGhhdC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gc3JjL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tbWFpbi5jIHwgNSArLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjNjEyMTJlLi4zNzkwZmNmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMjgsNyArMTI4LDcgQEAgREJVU19HTElCX1JFUVVJUkVEPTAuNzQKLSBHTk9NRV9LRVlSSU5HX1JFUVVJUkVEPTIuMjIKLSBHVEsyX1JFUVVJUkVEPTIuMjAuMAotIFVOSVFVRV9SRVFVSVJFRD0xLjAKLS1MSUJOT1RJRllfUkVRVUlSRUQ9MC4zLjAKLStMSUJOT1RJRllfUkVRVUlSRUQ9MC42LjEKLSBOQVVUSUxVU19SRVFVSVJFRD0yLjI0LjAKLSBBVkFISV9VSV9SRVFVSVJFRD0wLjYuMjUKLSAKLWRpZmYgLS1naXQgYS9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMgYi9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMKLWluZGV4IDE4ZTk2NzIuLmI2YTcxM2YgMTAwNjQ0Ci0tLS0gYS9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMKLSsrKyBiL3NyYy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLW1haW4uYwotQEAgLTUzNSwxMCArNTM1LDcgQEAgdXBkYXRlX3N0YXR1c19pY29uIChOb3RpZmljYXRpb25EYXRhICpkYXRhKQotICAgICAgICAgICAgICAgICAgICAgXygiQSBoYXJkIGRpc2sgbWF5IGJlIGZhaWxpbmciKSwKLSAgICAgICAgICAgICAgICAgICAgIC8qIFRyYW5zbGF0b3JzOiBUaGlzIGlzIHVzZWQgYXMgdGhlIHRleHQgb2YgdGhlIG5vdGlmaWNhdGlvbiovCi0gICAgICAgICAgICAgICAgICAgICBfKCJPbmUgb3IgbW9yZSBoYXJkIGRpc2tzIHJlcG9ydCBoZWFsdGggcHJvYmxlbXMuIENsaWNrIHRoZSBpY29uIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uLiIpLAotLSAgICAgICAgICAgICAgICAgICAgImd0ay1kaWFsb2ctd2FybmluZyIsCi0tICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0gICAgICAgICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9hdHRhY2hfdG9fc3RhdHVzX2ljb24gKGRhdGEtPmF0YV9zbWFydF9ub3RpZmljYXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0dXNfaWNvbik7Ci0rICAgICAgICAgICAgICAgICAgICAiZ3RrLWRpYWxvZy13YXJuaW5nIik7Ci0gICAgICAgICAgICAgICAgIG5vdGlmeV9ub3RpZmljYXRpb25fc2V0X3VyZ2VuY3kgKGRhdGEtPmF0YV9zbWFydF9ub3RpZmljYXRpb24sIE5PVElGWV9VUkdFTkNZX0NSSVRJQ0FMKTsKLSAgICAgICAgICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zZXRfdGltZW91dCAoZGF0YS0+YXRhX3NtYXJ0X25vdGlmaWNhdGlvbiwgTk9USUZZX0VYUElSRVNfTkVWRVIpOwotICAgICAgICAgICAgICAgICBzaG93X25vdGlmaWNhdGlvbiAoZGF0YSk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZGlzYWJsZS1zY3JvbGxrZWVwZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kaXNrLXV0aWxpdHkvZ25vbWUtZGlzay11dGlsaXR5L2Rpc2FibGUtc2Nyb2xsa2VlcGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY5NDJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZGlzYWJsZS1zY3JvbGxrZWVwZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tOiBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiA8ZGJhcnlzaGtvdkBnbWFpbC5jb20+Ci1TdWJqZWN0OiBEaXNhYmxlIHNjcm9sbGtlZXBlci1jb25maWcgbm90IGZvdW5kIG1lc3NhZ2UKLVVwc3RyZWFtLVN0YXR1czogTm90LUFwcGxpY2FibGUKLQotSWYgc2Nyb2xsa2VlcGVyLWNvbmZpZyBpc24ndCBmb3VuZCwgY29uZmlndXJlIGZhaWxzIHdpdGggYW4gZXJyb3IuCi1GaXggdGhhdCBieSBjb21tZW50aW5nIG91dCB0aGUgY2hlY2suCi0KLVNpZ25lZC1PZmYtQnk6IERtaXRyeSBFcmVtaW4tU29sZW5pa292IDxkYmFyeXNoa292QGdtYWlsLmNvbT4KLQotCi1JbmRleDogZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wLm9yaWcvY29uZmlndXJlLmFjCTIwMTAtMDktMTUgMTk6MDc6MjUuMDAwMDAwMDAwICswNDAwCi0rKysgZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9jb25maWd1cmUuYWMJMjAxMS0wOC0yMCAwMToyOTo0OC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0xODgsOSArMTg4LDkgQEAKLSAjICoqKioqKioqKioqKioKLQotIEFDX1BBVEhfUFJPRyhTQ1JPTExLRUVQRVJfQ09ORklHLCBzY3JvbGxrZWVwZXItY29uZmlnLG5vKQotLWlmIHRlc3QgeCRTQ1JPTExLRUVQRVJfQ09ORklHID0geG5vOyB0aGVuCi0tICBBQ19NU0dfRVJST1IoQ291bGRuJ3QgZmluZCBzY3JvbGxrZWVwZXItY29uZmlnLCBwbGVhc2UgaW5zdGFsbCB0aGUgc2Nyb2xsa2VlcGVyIHBhY2thZ2UpCi0tZmkKLStkbmwgaWYgdGVzdCB4JFNDUk9MTEtFRVBFUl9DT05GSUcgPSB4bm87IHRoZW4KLStkbmwgIEFDX01TR19FUlJPUihbQ291bGRuJ3QgZmluZCBzY3JvbGxrZWVwZXItY29uZmlnLCBwbGVhc2UgaW5zdGFsbCB0aGUgc2Nyb2xsa2VlcGVyIHBhY2thZ2VdKQotK2RubCBmaQotCi0gIyAqKioqKioqKioqKioqKioqKioqKgotICMgSW50ZXJuYXRpb25hbGl6YXRpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJhMzk3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kaXNrLXV0aWxpdHkvZ25vbWUtZGlzay11dGlsaXR5L2ZpeC1kYnVzLWludGVyZmFjZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1JbmRleDogZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9zcmMvZ2R1L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC5vcmlnL3NyYy9nZHUvTWFrZWZpbGUuYW0JMjAxMS0wOC0yMCAwMTo1OToxNi4wMDAwMDAwMDAgKzA0MDAKLSsrKyBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wL3NyYy9nZHUvTWFrZWZpbGUuYW0JMjAxMS0wOC0yMCAwMjowODoxOC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0xNCwyMCArMTQsMjAgQEAKLSBnZHUtbWFyc2hhbC5jOiBnZHUtbWFyc2hhbC5saXN0Ci0JZWNobyAiI2luY2x1ZGUgXCJnZHUtbWFyc2hhbC5oXCIiID4gJEAgJiYgZ2xpYi1nZW5tYXJzaGFsICQ8IC0tcHJlZml4PWdkdV9tYXJzaGFsIC0tYm9keSA+PiAkQAotCi0tdWRpc2tzLWRhZW1vbi1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWRhZW1vbi1nbHVlLmggL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbAotK3VkaXNrcy1kYWVtb24tZ2x1ZS5oOiAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtZGFlbW9uLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbAotCi0tdWRpc2tzLWRldmljZS1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5EZXZpY2UueG1sIE1ha2VmaWxlLmFtCi0tCWRidXMtYmluZGluZy10b29sIC0tcHJlZml4PWRldmtpdF9kaXNrc19kYWVtb24gLS1tb2RlPWdsaWItY2xpZW50IC0tb3V0cHV0PXVkaXNrcy1kZXZpY2UtZ2x1ZS5oIC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5EZXZpY2UueG1sCi0rdWRpc2tzLWRldmljZS1nbHVlLmg6ICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuRGV2aWNlLnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtZGV2aWNlLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkRldmljZS54bWwKLQotLXVkaXNrcy1hZGFwdGVyLWdsdWUuaDogL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkFkYXB0ZXIueG1sIE1ha2VmaWxlLmFtCi0tCWRidXMtYmluZGluZy10b29sIC0tcHJlZml4PWRldmtpdF9kaXNrc19kYWVtb24gLS1tb2RlPWdsaWItY2xpZW50IC0tb3V0cHV0PXVkaXNrcy1hZGFwdGVyLWdsdWUuaCAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwKLSt1ZGlza3MtYWRhcHRlci1nbHVlLmg6ICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwgTWFrZWZpbGUuYW0KLSsJZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWFkYXB0ZXItZ2x1ZS5oICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwKLQotLXVkaXNrcy1leHBhbmRlci1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5FeHBhbmRlci54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWV4cGFuZGVyLWdsdWUuaCAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuRXhwYW5kZXIueG1sCi0rdWRpc2tzLWV4cGFuZGVyLWdsdWUuaDogJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5FeHBhbmRlci54bWwgTWFrZWZpbGUuYW0KLSsJZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWV4cGFuZGVyLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkV4cGFuZGVyLnhtbAotCi0tdWRpc2tzLXBvcnQtZ2x1ZS5oOiAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuUG9ydC54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLXBvcnQtZ2x1ZS5oIC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbAotK3VkaXNrcy1wb3J0LWdsdWUuaDogJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtcG9ydC1nbHVlLmggJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbAotCi0gbGliX0xUTElCUkFSSUVTPWxpYmdkdS5sYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZTYzYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gTm93IHVzdWFsbHkgcGVvcGxlIGhhdmUgZ25vbWUgaW5zdGFsbGVkCi1zbyB0aGUgYnVpbGQgc3VjY2VlZHMgYnV0IGlmIHlvdSBkb250IGhhdmUgZ25vbWUgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBob3N0IHN5c3RlbSBhbmQgcGFja2FnZXMgdXNpbmcgZ25vbWUtZG9jLXV0aWxzIHdvbnQKLWNvbXBpbGUuCi0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UgaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUgotd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGdub21lLWRpc2stdXRpbGl0eS0yLjMyLjAvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wLm9yaWcvZ25vbWUtZG9jLXV0aWxzLm1ha2UJMjAxMC0wOS0xNSAwODoyNzo0Ni4wMDAwMDAwMDAgLTA3MDAKLSsrKyBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wL2dub21lLWRvYy11dGlscy5tYWtlCTIwMTEtMDktMjUgMTY6MDQ6MzAuNjkzNzk1NTkxIC0wNzAwCi1AQCAtMTMzLDEyICsxMzMsMTIgQEAKLSBfeG1sMnBvID89IGB3aGljaCB4bWwycG9gCi0gX3htbDJwb19tb2RlID0gJChpZiAkKERPQ19JRCksbWFsbGFyZCxkb2Nib29rKQotIAotLV9kYjJodG1sID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyaHRtbCBnbm9tZS1kb2MtdXRpbHNgCi0tX2RiMm9tZiAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotLV9tYWxybmcgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgbWFscm5nIGdub21lLWRvYy11dGlsc2AKLS1fY2h1bmtzICA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jaHVua3MueHNsCi0tX2NyZWRpdHMgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLS1faWRzID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2lkcy54c2wKLStfZGIyaHRtbCA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLStfZGIyb21mICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotK19tYWxybmcgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIG1hbHJuZyBnbm9tZS1kb2MtdXRpbHNgCi0rX2NodW5rcyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLStfY3JlZGl0cyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLStfaWRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHlfMi4zMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eV8yLjMyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YTU4OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eV8yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGRpc2sgdXRpbGl0eSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOTExNWQxMTc5N2E1ZTZiNzQ2YjRlOWI5MDE5NDU2NCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrIGxpYm5vdGlmeSBsaWJ1bmlxdWUgdWRpc2tzIGF2YWhpLXVpIFwKLSAgICB2aXJ0dWFsL2xpYngxMSBsaWJhdGFzbWFydCBnbm9tZS1kb2MtdXRpbHMgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBnbm9tZS1jb21tb24tbmF0aXZlIGxpYmdub21lLWtleXJpbmcgZGJ1cy1nbGliLW5hdGl2ZSBcCi0iCi0KLVBSID0gInI0IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjAzNjZjOGJhZWJjYTA0MDRkMTkwYjJkNzhmMzU4MmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwM2U0NjFiNmJkYTdmNzczZjgwMThkMjVmYTMyMTNkMzA3M2Q0ZGM4M2E3NmU2YjM5ZDk2MjY1MmY0ZGU2YTk4IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2Rpc2FibGUtc2Nyb2xsa2VlcGVyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaCBcCi0gICAgZmlsZTovL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItRGV2aWNlQXV0b21vdW50SGludC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItUmVxdWlyZS1saWJub3RpZnktMC42LjEucGF0Y2ggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItLWVuYWJsZS1uYXV0aWx1cywtLWRpc2FibGUtbmF1dGlsdXMsbmF1dGlsdXMiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAiczogaGVscCA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gJHtQTn0tbGlicyIKLUZJTEVTXyR7UE59LW5hdXRpbHVzLWV4dGVuc2lvbiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouc28iCi1GSUxFU18ke1BOfS1saWJzICs9ICIke2xpYmRpcn0vbGliZ2R1Ki5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLy5kZWJ1ZyIKLQotUE5CTEFDS0xJU1RbZ25vbWUtZGlzay11dGlsaXR5XSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMjgyNC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmcvbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MGI4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmcvbXVzbC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitpbmNsdWRlIHN5cy9zZWxlY3QuaCBmb3IgRkRfKiBtYWNyb3MKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ25vbWUta2V5cmluZy0yLjMyLjEvcGtjczExL3JwYy1sYXllci9na20tcnBjLWRhZW1vbi1zdGFuZGFsb25lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbm9tZS1rZXlyaW5nLTIuMzIuMS5vcmlnL3BrY3MxMS9ycGMtbGF5ZXIvZ2ttLXJwYy1kYWVtb24tc3RhbmRhbG9uZS5jCisrKysgZ25vbWUta2V5cmluZy0yLjMyLjEvcGtjczExL3JwYy1sYXllci9na20tcnBjLWRhZW1vbi1zdGFuZGFsb25lLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAKKyAjaW5jbHVkZSA8ZGxmY24uaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZ18yLjMyLjEuYmIKaW5kZXggNGFjNzVjYi4uZmQ2Y2E3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmdfMi4zMi4xLmJiCkBAIC0xNSwxMSArMTUsMTUgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ25vbWUgZ3RrLWRvYyBwa2djb25maWcgZ3NldHRpbmdzCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9lZ2ctYXNuMXgucGF0Y2giCitTUkNfVVJJICs9ICJmaWxlOi8vZWdnLWFzbjF4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKKyIKIAogREVQRU5EUyA9ICJndGsrIGxpYmdjcnlwdCBsaWJ0YXNuMSBsaWJ0YXNuMS1uYXRpdmUgZ2NvbmYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSBpbnRsdG9vbC1uYXRpdmUiCiBSREVQRU5EU18ke1BOfSA9ICJsaWJnbm9tZS1rZXlyaW5nIGdsaWItMi4wLXV0aWxzIgogCitMREZMQUdTICs9ICItbGdtb2R1bGUtMi4wIgorCiBFWFRSQV9PRUNPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtIC0td2l0aC1wYW0tZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjlhOGFhNzRlMDMzNjE2NzZmMjlkNmU3MzE1NTc4NmZjIgpAQCAtNDIsNCArNDYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS9kZXZlbC8uZGVidWcvIFwKICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnLyIKIAotUE5CTEFDS0xJU1RbZ25vbWUta2V5cmluZ10gPz0gIlRoaXMgdmVyc2lvbiBjb25mbGljdHMgd2l0aCBnY3IgZnJvbSBvZS1jb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgorIyBNYWtlIGNvbXBhdGlibGUgd2l0aCBnY3IgdmVyc2lvbiAzIG9yIG5ld2VyIGJ5IHJlbW92aW5nCisjIG9yZy5nbm9tZS5jcnlwdG8ucGdwLiosIHdoaWNoIGlzIHRoZSBwcm92aWRlciBmb3IgdGhpcyBvcHRpb25hbAorIyBmdW5jdGlvbmFsaXR5LgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtkYXRhZGlyfS9HQ29uZi9nc2V0dGluZ3Mvb3JnLmdub21lLmNyeXB0by5wZ3AuY29udmVydAorCXJtICR7RH0ke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvb3JnLmdub21lLmNyeXB0by5wZ3AuZ3NjaGVtYS54bWwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzXzIuMzAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzXzIuMzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjOWU0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1tZW51cy9nbm9tZS1tZW51c18yLjMwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIG1lbnVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotUFIgPSAicjEiCi0KLURFUEVORFMgPSAicHl0aG9uIGxpYnhtbDIgZ2NvbmYgcG9wdCBndGsrIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgcGtnY29uZmlnIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYWE2NzcyZTYzZWQ1ODcwY2Y0M2RjM2QzNTRlMDYyNCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjZkY2M1NjUwMDZkNmU4YzIwMjVhZTgzYWIxZjgyZWRmNmJkMDRkNjFjODA0YzBkYzliZjVlYTUwNjI5YzRjYWEiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCi0gICAgIyB0aGlzIGV4cGFuZHMgdG8gbmF0aXZlLXB0aG9uIHdoaWNoIHdlIGRvbid0IHdhbnQuCi0gICAgc2VkIC1pICdzOlxAUFlUSE9OXEA6L3Vzci9iaW4vZW52IHB5dGhvbjonICR7U30vc2ltcGxlLWVkaXRvci9nbWVudS1zaW1wbGUtZWRpdG9yLmluCi0KLX0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24gJHtQTn0tcHl0aG9uLXN0YXRpY2RldiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2Rlc2t0b3AtZGlyZWN0b3JpZXMvIgotRklMRVNfJHtQTn0tcHl0aG9uLXN0YXRpY2RldiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9nbWVudS5hICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dtZW51LmxhIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dtZW51LnNvICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L0dNZW51U2ltcGxlRWRpdG9yICIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzgxMDAxLwotUE5CTEFDS0xJU1RbZ25vbWUtbWVudXNdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIGJlY2F1c2Ugb2YgcHl0aG9uICsgY29uZmxpY3RzIHdpdGggZ25vbWUtbWVudTMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC8wMDAxLUFkZC1nbm9tZS1kb2MtdXRpbHMubWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGNjY2I5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMwICswLDAgQEAKLUZyb20gNzM0NTczMGFjODgyZWU1YTQ5MzI1NGU1Y2Y5MTYyYzk2YzY0OGVmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNyBNYXkgMjAxNiAxNDo0MDozMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgZ25vbWUtZG9jLXV0aWxzLm1ha2UKLQotU2luY2UgdGhlIHNvdXJjZXMgYXJlIHRha2VuIGZyb20gZ2l0LCB0aGUgZmlsZSBpcyBhYnNlbnQKLShhbmQgaXMgaW5zdGFsbGVkIGJ5IHRvb2xzIGZyb20gZ25vbWUtZG9jLXV0aWxzIHdoaWNoCi1hcmUgbm8gbG9uZ2VyIHByb3ZpZGVkKS4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBnbm9tZS1kb2MtdXRpbHMubWFrZSB8IDcwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNzA2IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ25vbWUtZG9jLXV0aWxzLm1ha2UKLQotZGlmZiAtLWdpdCBhL2dub21lLWRvYy11dGlscy5tYWtlIGIvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMmUwZmExCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nbm9tZS1kb2MtdXRpbHMubWFrZQotQEAgLTAsMCArMSw3MDYgQEAKLSsjIGdub21lLWRvYy11dGlscy5tYWtlIC0gbWFrZSBtYWdpYyBmb3IgYnVpbGRpbmcgZG9jdW1lbnRhdGlvbgotKyMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUgU2hhdW4gTWNDYW5jZSA8c2hhdW5tQGdub21lLm9yZz4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSsjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSsjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIEdlbmVyYXRpbmcgSGVhZGVyIEZpbGVzCi0rCi0rIyMgQCBET0NfSF9GSUxFCi0rIyMgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciBmaWxlIHRvIGdlbmVyYXRlCi0rRE9DX0hfRklMRSA/PQotKwotKyMjIEAgRE9DX0hfRE9DUwotKyMjIFRoZSBpbnB1dCBEb2NCb29rIGZpbGVzIGZvciBnZW5lcmF0aW5nIHRoZSBoZWFkZXIgZmlsZQotK0RPQ19IX0RPQ1MgPz0KLSsKLSskKERPQ19IX0ZJTEUpOiAkKERPQ19IX0RPQ1MpOwotKwlAcm0gLWYgJEAudG1wOyB0b3VjaCAkQC50bXA7Ci0rCWVjaG8gJ2NvbnN0IGdjaGFyKiBkb2N1bWVudGF0aW9uX2NyZWRpdHNbXSA9IHsnID4+ICRALnRtcAotKwlsaXN0PSckKERPQ19IX0RPQ1MpJzsgZm9yIGRvYyBpbiAkJGxpc3Q7IGRvIFwKLSsJICB4bWxwYXRoPSJgZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOiQoc3JjZGlyKS9gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgIjsgXAotKwkgIGlmICEgdGVzdCAtZiAiJCRkb2MiOyB0aGVuIGRvYz0iJChzcmNkaXIpLyQkZG9jIjsgZmk7IFwKLSsJICB4c2x0cHJvYyAtbm9uZXQgLS1wYXRoICIkJHhtbHBhdGgiICQoX2NyZWRpdHMpICQkZG9jOyBcCi0rCWRvbmUgfCBzb3J0IHwgdW5pcSBcCi0rCSAgfCBhd2sgJ0JFR0lOe3M9IiJ9e249c3BsaXQoJCQwLHcsIjwiKTtpZihzIT0iIiYmcyE9c3Vic3RyKHdbMV0sMSxsZW5ndGgod1sxXSktMSkpe3ByaW50IHN9O2lmKG4+MSl7cHJpbnQgJCQwO3M9IiJ9ZWxzZXtzPSQkMH19O0VORHtpZihzIT0iIil7cHJpbnQgc319JyBcCi0rCSAgfCBzZWQgLWUgJ3MvXFwvXFxcXC8nIC1lICdzLyIvXFwiLycgLWUgJ3MvXCguKlwpL1x0IlwxIiwvJyA+PiAkQC50bXAKLSsJZWNobyAnCU5VTEwnID4+ICRALnRtcAotKwllY2hvICd9OycgPj4gJEAudG1wCi0rCWVjaG8gPj4gJEAudG1wCi0rCWxpc3Q9JyQoRE9DX0hfRE9DUyknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIHhtbHBhdGg9ImBlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2A6JChzcmNkaXIpL2BlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2AiOyBcCi0rCSAgaWYgISB0ZXN0IC1mICIkJGRvYyI7IHRoZW4gZG9jPSIkKHNyY2RpcikvJCRkb2MiOyBmaTsgXAotKwkgIGRvY2lkPWBlY2hvICIkJGRvYyIgfCBzZWQgLWUgJ3MvLipcL1woW14vXSpcKVwueG1sL1wxLycgXAotKwkgICAgfCBzZWQgLWUgJ3MvW15hLXpBLVpfXS9fL2cnIHwgdHIgJ2EteicgJ0EtWidgOyBcCi0rCSAgZWNobyAkJHhtbHBhdGg7IFwKLSsJICBpZHM9YHhzbHRwcm9jIC1ub25ldCAtLXhpbmNsdWRlIC0tcGF0aCAiJCR4bWxwYXRoIiAkKF9pZHMpICQkZG9jYDsgXAotKwkgIGZvciBpZCBpbiAkJGlkczsgZG8gXAotKwkgICAgZWNobyAnI2RlZmluZSBIRUxQXydgZWNobyAkJGRvY2lkYCdfJ2BlY2hvICQkaWQgXAotKwkgICAgICB8IHNlZCAtZSAncy9bXmEtekEtWl9dL18vZycgfCB0ciAnYS16JyAnQS1aJ2AnICInJCRpZCciJyA+PiAkQC50bXA7IFwKLSsJICBkb25lOyBcCi0rCSAgZWNobyA+PiAkQC50bXA7IFwKLSsJZG9uZTsKLSsJY3AgJEAudG1wICRAICYmIHJtIC1mICRALnRtcAotKwotK2Rpc3QtY2hlY2stZ2R1OgotK2lmICFIQVZFX0dOT01FX0RPQ19VVElMUwotKwlAZWNobyAiKioqIEdOT01FIERvYyBVdGlscyBtdXN0IGJlIGluc3RhbGxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0rCUBmYWxzZQotK2VuZGlmCi0rCi0rLlBIT05ZOiBkaXN0LWRvYy1oZWFkZXIKLStkaXN0LWRvYy1oZWFkZXI6ICQoRE9DX0hfRklMRSkKLSsJQGlmIHRlc3QgLWYgIiQoRE9DX0hfRklMRSkiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwllY2hvICIkKElOU1RBTExfREFUQSkgJCR7ZH0kKERPQ19IX0ZJTEUpICQoZGlzdGRpcikvJChET0NfSF9GSUxFKSI7IFwKLSsJJChJTlNUQUxMX0RBVEEpICIkJHtkfSQoRE9DX0hfRklMRSkiICIkKGRpc3RkaXIpLyQoRE9DX0hfRklMRSkiOwotKwotK2RvYy1kaXN0LWhvb2s6IGRpc3QtY2hlY2stZ2R1ICQoaWYgJChET0NfSF9GSUxFKSxkaXN0LWRvYy1oZWFkZXIpCi0rCi0rLlBIT05ZOiBjbGVhbi1kb2MtaGVhZGVyCi0rX2NsZWFuX2RvY19oZWFkZXIgPSAkKGlmICQoRE9DX0hfRklMRSksY2xlYW4tZG9jLWhlYWRlcikKLStjbGVhbi1sb2NhbDogJChfY2xlYW5fZG9jX2hlYWRlcikKLStkaXN0Y2xlYW4tbG9jYWw6ICQoX2NsZWFuX2RvY19oZWFkZXIpCi0rbW9zdGx5Y2xlYW4tbG9jYWw6ICQoX2NsZWFuX2RvY19oZWFkZXIpCi0rbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogJChfY2xlYW5fZG9jX2hlYWRlcikKLStjbGVhbi1kb2MtaGVhZGVyOgotKwlybSAtZiAkKERPQ19IX0ZJTEUpCi0rCi0rYWxsOiAkKERPQ19IX0ZJTEUpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBAQCBHZW5lcmF0aW5nIERvY3VtZW50YXRpb24gRmlsZXMKLSsKLSsjIyBAIERPQ19NT0RVTEUKLSsjIyBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgYnVpbHQKLStET0NfTU9EVUxFID89Ci0rCi0rIyMgQCBET0NfSUQKLSsjIyBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgTWFsbGFyZCBkb2N1bWVudAotK0RPQ19JRCA/PQotKwotKyMjIEAgRE9DX1BBR0VTCi0rIyMgUGFnZSBmaWxlcyBpbiBhIE1hbGxhcmQgZG9jdW1lbnQKLStET0NfUEFHRVMgPz0KLSsKLSsjIyBAIERPQ19FTlRJVElFUwotKyMjIEZpbGVzIGluY2x1ZGVkIHdpdGggYSBTWVNURU0gZW50aXR5Ci0rRE9DX0VOVElUSUVTID89Ci0rCi0rIyMgQCBET0NfSU5DTFVERVMKLSsjIyBGaWxlcyBpbmNsdWRlZCB3aXRoIFhJbmNsdWRlCi0rRE9DX0lOQ0xVREVTID89Ci0rCi0rIyMgQCBET0NfRklHVVJFUwotKyMjIEZpZ3VyZXMgYW5kIG90aGVyIGV4dGVybmFsIGRhdGEKLStET0NfRklHVVJFUyA/PQotKwotKyMjIEAgRE9DX0ZPUk1BVFMKLSsjIyBUaGUgZGVmYXVsdCBmb3JtYXRzIHRvIGJlIGJ1aWx0IGFuZCBpbnN0YWxsZWQKLStET0NfRk9STUFUUyA/PSBkb2Nib29rCi0rX0RPQ19SRUFMX0ZPUk1BVFMgPSAkKGlmICQoRE9DX1VTRVJfRk9STUFUUyksJChET0NfVVNFUl9GT1JNQVRTKSwkKERPQ19GT1JNQVRTKSkKLSsKLSsjIyBAIERPQ19MSU5HVUFTCi0rIyMgVGhlIGxhbmd1YWdlcyB0aGlzIGRvY3VtZW50IGlzIHRyYW5zbGF0ZWQgaW50bwotK0RPQ19MSU5HVUFTID89Ci0rX0RPQ19SRUFMX0xJTkdVQVMgPSAkKGlmICQoZmlsdGVyIGVudmlyb25tZW50LCQob3JpZ2luIExJTkdVQVMpKSwJCVwKLSsJJChmaWx0ZXIgJChMSU5HVUFTKSwkKERPQ19MSU5HVUFTKSksCQkJCQlcCi0rCSQoRE9DX0xJTkdVQVMpKQotKwotK19ET0NfQUJTX1NSQ0RJUiA9IEBhYnNfc3JjZGlyQAotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgVmFyaWFibGVzIGZvciBCb290c3RyYXBwaW5nCi0rCi0rX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotK194bWwycG9fbW9kZSA9ICQoaWYgJChET0NfSUQpLG1hbGxhcmQsZG9jYm9vaykKLSsKLStfZGIyaHRtbCA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLStfZGIyb21mICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotK19jaHVua3MgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jaHVua3MueHNsCi0rX2NyZWRpdHMgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0rX2lkcyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JChzaGVsbCAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlscykvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2lkcy54c2wKLSsKLStpZiBFTkFCTEVfU0sKLStfRU5BQkxFX1NLID0gdHJ1ZQotK19za3BrZ2RhdGFkaXIgPz0gYHNjcm9sbGtlZXBlci1jb25maWcgLS1wa2dkYXRhZGlyYAotK19za2xvY2Fsc3RhdGVkaXIgPz0gYHNjcm9sbGtlZXBlci1jb25maWcgLS1wa2dsb2NhbHN0YXRlZGlyYAotK19za2NvbnRlbnRzbGlzdCA/PSAkKF9za3BrZ2RhdGFkaXIpL1RlbXBsYXRlcy9DL3Njcm9sbGtlZXBlcl9jbC54bWwKLStlbmRpZgotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgU3VwcG9ydCBmb3IgYXV0b21ha2Ugc2lsZW50LXJ1bGVzCi0rR0RVX1ZfWE1MMlBPPSQoR0RVX192X1hNTDJQT18kKFYpKQotK0dEVV9fdl9YTUwyUE9fPSQoR0RVX192X1hNTDJQT18kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKLStHRFVfX3ZfWE1MMlBPXzA9QGVjaG8gIiAgWE1MMlBPIiAkQDsKLSsKLStHRFVfVl9NU0dGTVQ9JChHRFVfX3ZfTVNHRk1UXyQoVikpCi0rR0RVX192X01TR0ZNVF89JChHRFVfX3ZfTVNHRk1UXyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpKQotK0dEVV9fdl9NU0dGTVRfMD1AZWNobyAiICBNU0dGTVQiICRAOwotKwotK0dEVV9WX0RCMk9NRj0kKEdEVV9fdl9EQjJPTUZfJChWKSkKLStHRFVfX3ZfREIyT01GXz0kKEdEVV9fdl9EQjJPTUZfJChBTV9ERUZBVUxUX1ZFUkJPU0lUWSkpCi0rR0RVX192X0RCMk9NRl8wPUBlY2hvICIgIERCMk9NRiIgJEA7Ci0rCi0rR0RVX1ZfREIySFRNPSQoR0RVX192X0RCMkhUTV8kKFYpKQotK0dEVV9fdl9EQjJIVE1fPSQoR0RVX192X0RCMkhUTV8kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKLStHRFVfX3ZfREIySFRNXzA9QGVjaG8gIiAgREIySFRNIiAkQDsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIFJ1bGVzIGZvciBPTUYgRmlsZXMKLSsKLStkYjJvbWZfYXJncyA9CQkJCQkJCQkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5iYXNlbmFtZSAkKERPQ19NT0RVTEUpCQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYuZm9ybWF0ICQoMykJCQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYuZHRkCQkJCQkJXAotKwkkKHNoZWxsIHhtbGxpbnQgLS1mb3JtYXQgJCgyKSB8IGdyZXAgLWggUFVCTElDIHwgaGVhZCAtbiAxIAkJXAotKwkJfCBzZWQgLWUgJ3MvLipQVUJMSUMgXChcIlteXCJdKlwiXCkuKi9cMS8nKQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYubGFuZyAkKG5vdGRpciAkKHBhdHN1YnN0ICUvJChub3RkaXIgJCgyKSksJSwkKDIpKSkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfZGlyICIkKE9NRl9ESVIpIgkJCQlcCi0rCS0tc3RyaW5ncGFyYW0gZGIyb21mLmhlbHBfZGlyICIkKEhFTFBfRElSKSIJCQkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfaW4gIiQoX0RPQ19PTUZfSU4pIgkJCQlcCi0rCSQoaWYgJChfRU5BQkxFX1NLKSwJCQkJCQkJXAotKwkgIC0tc3RyaW5ncGFyYW0gZGIyb21mLnNjcm9sbGtlZXBlcl9jbCAiJChfc2tjb250ZW50c2xpc3QpIikJCVwKLSsJJChfZGIyb21mKSAkKDIpCi0rCi0rIyMgQCBfRE9DX09NRl9JTgotKyMjIFRoZSBPTUYgaW5wdXQgZmlsZQotK19ET0NfT01GX0lOID0gJChpZiAkKERPQ19NT0RVTEUpLCQod2lsZGNhcmQgJChfRE9DX0FCU19TUkNESVIpLyQoRE9DX01PRFVMRSkub21mLmluKSkKLSsKLSsjIyBAIF9ET0NfT01GX0RCCi0rIyMgVGhlIE9NRiBmaWxlcyBmb3IgRG9jQm9vayBvdXRwdXQKLStfRE9DX09NRl9EQiA9ICQoaWYgJChfRE9DX09NRl9JTiksCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKERPQ19NT0RVTEUpLSQobGMpLm9tZikpCi0rCi0rJChfRE9DX09NRl9EQikgOiAkKF9ET0NfT01GX0lOKQotKyQoX0RPQ19PTUZfREIpIDogJChET0NfTU9EVUxFKS0lLm9tZiA6ICUvJChET0NfTU9EVUxFKS54bWwKLSsJQHRlc3QgIngkKF9FTkFCTEVfU0spIiAhPSAieHRydWUiIC1vIC1mICIkKF9za2NvbnRlbnRzbGlzdCkiIHx8IHsJXAotKwkgIGVjaG8gIlRoZSBmaWxlICckKF9za2NvbnRlbnRzbGlzdCknIGRvZXMgbm90IGV4aXN0LiIgPiYyOwkJXAotKwkgIGVjaG8gIlBsZWFzZSBjaGVjayB5b3VyIFNjcm9sbEtlZXBlciBpbnN0YWxsYXRpb24uIiA+JjI7CQlcCi0rCSAgZXhpdCAxOyB9Ci0rCSQoR0RVX1ZfREIyT01GKXhzbHRwcm9jIC1ub25ldCAtbyAkQCAkKGNhbGwgZGIyb21mX2FyZ3MsJEAsJDwsJ2RvY2Jvb2snKSB8fCB7IHJtIC1mICIkQCI7IGV4aXQgMTsgfQotKwotKyMjIEAgX0RPQ19PTUZfSFRNTAotKyMjIFRoZSBPTUYgZmlsZXMgZm9yIEhUTUwgb3V0cHV0Ci0rX0RPQ19PTUZfSFRNTCA9ICQoaWYgJChfRE9DX09NRl9JTiksCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKERPQ19NT0RVTEUpLWh0bWwtJChsYykub21mKSkKLSsKLSskKF9ET0NfT01GX0hUTUwpIDogJChfRE9DX09NRl9JTikKLSskKF9ET0NfT01GX0hUTUwpIDogJChET0NfTU9EVUxFKS1odG1sLSUub21mIDogJS8kKERPQ19NT0RVTEUpLnhtbAotK2lmIEVOQUJMRV9TSwotKwlAdGVzdCAieCQoX0VOQUJMRV9TSykiICE9ICJ4dHJ1ZSIgLW8gLWYgIiQoX3NrY29udGVudHNsaXN0KSIgfHwgewlcCi0rCSAgZWNobyAiVGhlIGZpbGUgJyQoX3NrY29udGVudHNsaXN0KScgZG9lcyBub3QgZXhpc3QiID4mMjsJCVwKLSsJICBlY2hvICJQbGVhc2UgY2hlY2sgeW91ciBTY3JvbGxLZWVwZXIgaW5zdGFsbGF0aW9uLiIgPiYyOwkJXAotKwkgIGV4aXQgMTsgfQotK2VuZGlmCi0rCSQoR0RVX1ZfREIyT01GKXhzbHRwcm9jIC1ub25ldCAtbyAkQCAkKGNhbGwgZGIyb21mX2FyZ3MsJEAsJDwsJ3hodG1sJykgfHwgeyBybSAtZiAiJEAiOyBleGl0IDE7IH0KLSsKLSsjIyBAIF9ET0NfT01GX0FMTAotKyMjIEFsbCBPTUYgb3V0cHV0IGZpbGVzIHRvIGJlIGJ1aWx0Ci0rIyBGSVhNRQotK19ET0NfT01GX0FMTCA9CQkJCQkJCQkJXAotKwkkKGlmICQoZmlsdGVyIGRvY2Jvb2ssJChfRE9DX1JFQUxfRk9STUFUUykpLCQoX0RPQ19PTUZfREIpKQkJXAotKwkkKGlmICQoZmlsdGVyIGh0bWwgSFRNTCwkKF9ET0NfUkVBTF9GT1JNQVRTKSksJChfRE9DX09NRl9IVE1MKSkKLSsKLSsuUEhPTlk6IG9tZgotK29tZjogJChfRE9DX09NRl9BTEwpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBAQCBDIExvY2FsZSBEb2N1bWVudHMKLSsKLSsjIyBAIF9ET0NfQ19NT0RVTEUKLSsjIyBUaGUgdG9wLWxldmVsIGRvY3VtZW50YXRpb24gZmlsZSBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfTU9EVUxFID0gJChpZiAkKERPQ19NT0RVTEUpLEMvJChET0NfTU9EVUxFKS54bWwpCi0rCi0rIyMgQCBfRE9DX0NfUEFHRVMKLSsjIyBQYWdlIGZpbGVzIGluIGEgTWFsbGFyZCBkb2N1bWVudCBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfUEFHRVMgPSAkKGZvcmVhY2ggcGFnZSwkKERPQ19QQUdFUyksQy8kKHBhZ2UpKQotKwotKyMjIEAgX0RPQ19DX0VOVElUSUVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBhIFNZU1RFTSBlbnRpdHkgaW4gdGhlIEMgbG9jYWxlCi0rX0RPQ19DX0VOVElUSUVTID0gJChmb3JlYWNoIGVudCwkKERPQ19FTlRJVElFUyksQy8kKGVudCkpCi0rCi0rIyMgQCBfRE9DX0NfWElOQ0xVREVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBYSW5jbHVkZSBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfSU5DTFVERVMgPSAkKGZvcmVhY2ggaW5jLCQoRE9DX0lOQ0xVREVTKSxDLyQoaW5jKSkKLSsKLSsjIyBAIF9ET0NfQ19ET0NTCi0rIyMgQWxsIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gdGhlIEMgbG9jYWxlCi0rX0RPQ19DX0RPQ1MgPQkJCQkJCQkJXAotKwkkKF9ET0NfQ19FTlRJVElFUykJJChfRE9DX0NfSU5DTFVERVMpCQkJXAotKwkkKF9ET0NfQ19QQUdFUykJCSQoX0RPQ19DX01PRFVMRSkKLSsKLSsjIyBAIF9ET0NfQ19ET0NTX05PRU5UCi0rIyMgQWxsIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gdGhlIEMgbG9jYWxlLAotKyMjIGV4Y2VwdCBmaWxlcyBpbmNsdWRlZCB3aXRoIGEgU1lTVEVNIGVudGl0eQotK19ET0NfQ19ET0NTX05PRU5UID0JCQkJCQkJXAotKwkkKF9ET0NfQ19NT0RVTEUpCSQoX0RPQ19DX0lOQ0xVREVTKQkJCVwKLSsJJChfRE9DX0NfUEFHRVMpCi0rCi0rIyMgQCBfRE9DX0NfRklHVVJFUwotKyMjIEFsbCBmaWd1cmVzIGFuZCBvdGhlciBleHRlcm5hbCBkYXRhIGluIHRoZSBDIGxvY2FsZQotK19ET0NfQ19GSUdVUkVTID0gJChpZiAkKERPQ19GSUdVUkVTKSwJCQkJCVwKLSsJJChmb3JlYWNoIGZpZywkKERPQ19GSUdVUkVTKSxDLyQoZmlnKSksCQkJCVwKLSsJJChwYXRzdWJzdCAkKHNyY2RpcikvJSwlLCQod2lsZGNhcmQgJChzcmNkaXIpL0MvZmlndXJlcy8qLnBuZykpKQotKwotKyMjIEAgX0RPQ19DX0hUTUwKLSsjIyBBbGwgSFRNTCBkb2N1bWVudGF0aW9uIGluIHRoZSBDIGxvY2FsZQotKyMgRklYTUU6IHByb2JhYmx5IGhhdmUgdG8gc2hlbGwgZXNjYXBlIHRvIGRldGVybWluZSB0aGUgZmlsZSBuYW1lcwotK19ET0NfQ19IVE1MID0gJChmb3JlYWNoIGYsCQkJCQkJXAotKwkkKHNoZWxsIHhzbHRwcm9jIC1ub25ldCAtLXhpbmNsdWRlIAkJCQkJXAotKwkgIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuYmFzZW5hbWUgIiQoRE9DX01PRFVMRSkiCQlcCi0rCSAgJChfY2h1bmtzKSAiQy8kKERPQ19NT0RVTEUpLnhtbCIpLAkJCQlcCi0rCUMvJChmKS54aHRtbCkKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgQEAgT3RoZXIgTG9jYWxlIERvY3VtZW50YXRpb24KLSsKLSsjIyBAIF9ET0NfUE9GSUxFUwotKyMjIFRoZSAucG8gZmlsZXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIGRvY3VtZW50Ci0rX0RPQ19QT0ZJTEVTID0gJChpZiAkKERPQ19NT0RVTEUpJChET0NfSUQpLAkJCQkJXAotKwkkKGZvcmVhY2ggbGMsJChfRE9DX1JFQUxfTElOR1VBUyksJChsYykvJChsYykucG8pKQotKwotKy5QSE9OWTogcG8KLStwbzogJChfRE9DX1BPRklMRVMpCi0rCi0rIyMgQCBfRE9DX01PRklMRVMKLSsjIyBUaGUgLm1vIGZpbGVzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBkb2N1bWVudAotK19ET0NfTU9GSUxFUyA9ICQocGF0c3Vic3QgJS5wbywlLm1vLCQoX0RPQ19QT0ZJTEVTKSkKLSsKLSsuUEhPTlk6IG1vCi0rbW86ICQoX0RPQ19NT0ZJTEVTKQotKwotKyMjIEAgX0RPQ19MQ19NT0RVTEVTCi0rIyMgVGhlIHRvcC1sZXZlbCBkb2N1bWVudGF0aW9uIGZpbGVzIGluIGFsbCBvdGhlciBsb2NhbGVzCi0rX0RPQ19MQ19NT0RVTEVTID0gJChpZiAkKERPQ19NT0RVTEUpLAkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQobGMpLyQoRE9DX01PRFVMRSkueG1sKSkKLSsKLSsjIyBAIF9ET0NfTENfUEFHRVMKLSsjIyBQYWdlIGZpbGVzIGluIGEgTWFsbGFyZCBkb2N1bWVudCBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfUEFHRVMgPQkJCQkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQoZm9yZWFjaCBwYWdlLCQoX0RPQ19DX1BBR0VTKSwJXAotKwkJJChsYykvJChub3RkaXIgJChwYWdlKSkgKSkKLSsKLSsjIyBAIF9ET0NfTENfWElOQ0xVREVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBYSW5jbHVkZSBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfSU5DTFVERVMgPQkJCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsJChfRE9DX1JFQUxfTElOR1VBUyksJChmb3JlYWNoIGluYywkKF9ET0NfQ19JTkNMVURFUyksCVwKLSsJCSQobGMpLyQobm90ZGlyICQoaW5jKSkgKSkKLSsKLSsjIyBAIF9ET0NfTENfSFRNTAotKyMjIEFsbCBIVE1MIGRvY3VtZW50YXRpb24gaW4gYWxsIG90aGVyIGxvY2FsZXMKLSsjIEZJWE1FOiBwcm9iYWJseSBoYXZlIHRvIHNoZWxsIGVzY2FwZSB0byBkZXRlcm1pbmUgdGhlIGZpbGUgbmFtZXMKLStfRE9DX0xDX0hUTUwgPQkJCQkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQoZm9yZWFjaCBkb2MsJChfRE9DX0NfSFRNTCksCQlcCi0rCQkkKGxjKS8kKG5vdGRpciAkKGRvYykpICkpCi0rCi0rIyMgQCBfRE9DX0xDX0RPQ1MKLSsjIyBBbGwgZG9jdW1lbnRhdGlvbiBmaWxlcyBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfRE9DUyA9CQkJCQkJCQkJXAotKwkkKF9ET0NfTENfTU9EVUxFUykJJChfRE9DX0xDX0lOQ0xVREVTKQkkKF9ET0NfTENfUEFHRVMpCVwKLSsJJChpZiAkKGZpbHRlciBodG1sIEhUTUwsJChfRE9DX1JFQUxfRk9STUFUUykpLCQoX0RPQ19MQ19IVE1MKSkKLSsKLSsjIyBAIF9ET0NfTENfRklHVVJFUwotKyMjIEFsbCBmaWd1cmVzIGFuZCBvdGhlciBleHRlcm5hbCBkYXRhIGluIGFsbCBvdGhlciBsb2NhbGVzCi0rX0RPQ19MQ19GSUdVUkVTID0gJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLAkJCQlcCi0rCSQocGF0c3Vic3QgQy8lLCQobGMpLyUsJChfRE9DX0NfRklHVVJFUykpICkKLSsKLStfRE9DX1NSQ19GSUdVUkVTID0JCQkJCQkJCVwKLSsJJChmb3JlYWNoIGZpZywkKF9ET0NfQ19GSUdVUkVTKSwgJChmb3JlYWNoIGxjLEMgJChfRE9DX1JFQUxfTElOR1VBUyksCVwKLSsJCSQod2lsZGNhcmQgJChzcmNkaXIpLyQobGMpLyQocGF0c3Vic3QgQy8lLCUsJChmaWcpKSkgKSkKLSsKLSskKF9ET0NfUE9GSUxFUyk6Ci0rCUBpZiAhIHRlc3QgLWQgJChkaXIgJEApOyB0aGVuIFwKLSsJICBlY2hvICJta2RpciAkKGRpciAkQCkiOyBcCi0rCSAgbWtkaXIgIiQoZGlyICRAKSI7IFwKLSsJZmkKLSsJQGlmIHRlc3QgISAtZiAkQCAtYSAtZiAkKHNyY2RpcikvJEA7IHRoZW4gXAotKwkgIGVjaG8gImNwICQoc3JjZGlyKS8kQCAkQCI7IFwKLSsJICBjcCAiJChzcmNkaXIpLyRAIiAiJEAiOyBcCi0rCWZpOwotKwlAZG9jcz07IFwKLSsJbGlzdD0nJChfRE9DX0NfRE9DU19OT0VOVCknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGRvY3M9IiQkZG9jcyAkKF9ET0NfQUJTX1NSQ0RJUikvJCRkb2MiOyBcCi0rCWRvbmU7IFwKLSsJaWYgISB0ZXN0IC1mICRAOyB0aGVuIFwKLSsJICBlY2hvICIoY2QgJChkaXIgJEApICYmIFwKLSsJICAgICQoX3htbDJwbykgLW0gJChfeG1sMnBvX21vZGUpIC1lICQkZG9jcyA+ICQobm90ZGlyICRAKS50bXAgJiYgXAotKwkgICAgY3AgJChub3RkaXIgJEApLnRtcCAkKG5vdGRpciAkQCkgJiYgcm0gLWYgJChub3RkaXIgJEApLnRtcCkiOyBcCi0rCSAgKGNkICQoZGlyICRAKSAmJiBcCi0rCSAgICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAkJGRvY3MgPiAkKG5vdGRpciAkQCkudG1wICYmIFwKLSsJICAgIGNwICQobm90ZGlyICRAKS50bXAgJChub3RkaXIgJEApICYmIHJtIC1mICQobm90ZGlyICRAKS50bXApOyBcCi0rCWVsc2UgXAotKwkgIGVjaG8gIihjZCAkKGRpciAkQCkgJiYgXAotKwkgICAgJChfeG1sMnBvKSAtbSAkKF94bWwycG9fbW9kZSkgLWUgLXUgJChub3RkaXIgJEApICQkZG9jcykiOyBcCi0rCSAgKGNkICQoZGlyICRAKSAmJiBcCi0rCSAgICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAtdSAkKG5vdGRpciAkQCkgJCRkb2NzKTsgXAotKwlmaQotKwotKyQoX0RPQ19NT0ZJTEVTKTogJS5tbzogJS5wbwotKwkkKEFNX1ZfYXQpaWYgISB0ZXN0IC1kICQoZGlyICRAKTsgdGhlbiBta2RpciAiJChkaXIgJEApIjsgZmkKLSsJJChHRFVfVl9NU0dGTVQpbXNnZm10IC1vICRAICQ8Ci0rCi0rIyBGSVhNRTogZml4IHRoZSBkZXBlbmRhbmN5Ci0rIyBGSVhNRTogaG9vayB4bWwycG8gdXAKLSskKF9ET0NfTENfRE9DUykgOiAkKF9ET0NfTU9GSUxFUykKLSskKF9ET0NfTENfRE9DUykgOiAkKF9ET0NfQ19ET0NTKQotKwkkKEFNX1ZfYXQpaWYgISB0ZXN0IC1kICQoZGlyICRAKTsgdGhlbiBta2RpciAkKGRpciAkQCk7IGZpCi0rCSQoR0RVX1ZfWE1MMlBPKWlmIFsgLWYgIkMvJChub3RkaXIgJEApIiBdOyB0aGVuIGQ9Ii4uLyI7IGVsc2UgZD0iJChfRE9DX0FCU19TUkNESVIpLyI7IGZpOyBcCi0rCW1vPSIkKGRpciAkQCkkKHBhdHN1YnN0ICUvJChub3RkaXIgJEApLCUsJEApLm1vIjsgXAotKwlpZiBbIC1mICIkJHttb30iIF07IHRoZW4gbW89Ii4uLyQke21vfSI7IGVsc2UgbW89IiQoX0RPQ19BQlNfU1JDRElSKS8kJHttb30iOyBmaTsgXAotKwkoY2QgJChkaXIgJEApICYmIFwKLSsJICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAtdCAiJCR7bW99IiBcCi0rCSAgICAiJCR7ZH1DLyQobm90ZGlyICRAKSIgPiAkKG5vdGRpciAkQCkudG1wICYmIFwKLSsJICAgIGNwICQobm90ZGlyICRAKS50bXAgJChub3RkaXIgJEApICYmIHJtIC1mICQobm90ZGlyICRAKS50bXApCi0rCi0rIyMgQCBfRE9DX1BPVAotKyMjIEEgcG90IGZpbGUKLStfRE9DX1BPVCA9ICQoaWYgJChET0NfTU9EVUxFKSwkKERPQ19NT0RVTEUpLnBvdCwkKGlmICQoRE9DX0lEKSwkKERPQ19JRCkucG90KSkKLSsuUEhPTlk6IHBvdAotK3BvdDogJChfRE9DX1BPVCkKLSskKF9ET0NfUE9UKTogJChfRE9DX0NfRE9DU19OT0VOVCkKLSsJJChHRFVfVl9YTUwyUE8pJChfeG1sMnBvKSAtbSAkKF94bWwycG9fbW9kZSkgLWUgLW8gJEAgJF4KLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIEFsbCBEb2N1bWVudGF0aW9uCi0rCi0rIyMgQCBfRE9DX0hUTUxfQUxMCi0rIyMgQWxsIEhUTUwgZG9jdW1lbnRhdGlvbiwgb25seSBpZiBpdCdzIGJ1aWx0Ci0rX0RPQ19IVE1MX0FMTCA9ICQoaWYgJChmaWx0ZXIgaHRtbCBIVE1MLCQoX0RPQ19SRUFMX0ZPUk1BVFMpKSwgXAotKwkkKF9ET0NfQ19IVE1MKSAkKF9ET0NfTENfSFRNTCkpCi0rCi0rX0RPQ19IVE1MX1RPUFMgPSAkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKGxjKS8kKERPQ19NT0RVTEUpLnhodG1sKQotKwotKyQoX0RPQ19IVE1MX1RPUFMpOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykKLSsJJChHRFVfVl9EQjJIVE0peHNsdHByb2MgLW5vbmV0IC1vICRAIC0teGluY2x1ZGUgLS1wYXJhbSBkYi5jaHVuay5jaHVua190b3AgImZhbHNlKCkiIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuYmFzZW5hbWUgIiQoRE9DX01PRFVMRSkiIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuZXh0ZW5zaW9uICIueGh0bWwiICQoX2RiMmh0bWwpICQocGF0c3Vic3QgJS54aHRtbCwlLnhtbCwkQCkKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEFsbAotKwotK2FsbDoJCQkJCQkJXAotKwkkKF9ET0NfQ19ET0NTKQkJJChfRE9DX0xDX0RPQ1MpCQlcCi0rCSQoX0RPQ19PTUZfQUxMKQkJJChfRE9DX0RTS19BTEwpCQlcCi0rCSQoX0RPQ19IVE1MX0FMTCkJJChfRE9DX1BPRklMRVMpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBDbGVhbgotKwotKy5QSE9OWTogY2xlYW4tZG9jLW9tZiBjbGVhbi1kb2MtZHNrIGNsZWFuLWRvYy1sYyBjbGVhbi1kb2MtZGlyCi0rCi0rY2xlYW4tZG9jLW9tZjogOyBybSAtZiAkKF9ET0NfT01GX0RCKSAkKF9ET0NfT01GX0hUTUwpCi0rY2xlYW4tZG9jLWRzazogOyBybSAtZiAkKF9ET0NfRFNLX0RCKSAkKF9ET0NfRFNLX0hUTUwpCi0rY2xlYW4tZG9jLWxjOgotKwlybSAtZiAkKF9ET0NfTENfRE9DUykKLSsJcm0gLWYgJChfRE9DX01PRklMRVMpCi0rCUBsaXN0PSckKF9ET0NfUE9GSUxFUyknOyBmb3IgcG8gaW4gJCRsaXN0OyBkbyBcCi0rCSAgaWYgISB0ZXN0ICIkJHBvIiAtZWYgIiQoc3JjZGlyKS8kJHBvIjsgdGhlbiBcCi0rCSAgICBlY2hvICJybSAtZiAkJHBvIjsgXAotKwkgICAgcm0gLWYgIiQkcG8iOyBcCi0rCSAgZmk7IFwKLSsJZG9uZQotKyMJLnhtbDIucG8ubW8gY2xlYW5pbmcgaXMgb2Jzb2xldGUgYXMgb2YgMC4xOC4xIGFuZCBjb3VsZCBiZSByZW1vdmVkIGluIDAuMjAueAotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGxjLy54bWwycG8ubW8iOyB0aGVuIFwKLSsJICAgIGVjaG8gInJtIC1mICQkbGMvLnhtbDJwby5tbyI7IFwKLSsJICAgIHJtIC1mICIkJGxjLy54bWwycG8ubW8iOyBcCi0rCSAgZmk7IFwKLSsJZG9uZQotK2NsZWFuLWRvYy1kaXI6IGNsZWFuLWRvYy1sYwotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBmb3IgZGlyIGluIGBmaW5kICQkbGMgLWRlcHRoIC10eXBlIGRgOyBkbyBcCi0rCSAgICBpZiAhIHRlc3QgJCRkaXIgLWVmICQoc3JjZGlyKS8kJGRpcjsgdGhlbiBcCi0rCSAgICAgIGVjaG8gInJtZGlyICQkZGlyIjsgXAotKwkgICAgICBybWRpciAiJCRkaXIiOyBcCi0rCSAgIGZpOyBcCi0rCSAgZG9uZTsgXAotKwlkb25lCi0rCi0rX2NsZWFuX29tZiA9ICQoaWYgJChfRE9DX09NRl9JTiksY2xlYW4tZG9jLW9tZikKLStfY2xlYW5fZHNrID0gJChpZiAkKF9ET0NfRFNLX0lOKSxjbGVhbi1kb2MtZHNrKQotK19jbGVhbl9sYyAgPSAkKGlmICQoX0RPQ19SRUFMX0xJTkdVQVMpLGNsZWFuLWRvYy1sYykKLStfY2xlYW5fZGlyID0gJChpZiAkKERPQ19NT0RVTEUpJChET0NfSUQpLGNsZWFuLWRvYy1kaXIpCi0rCi0rY2xlYW4tbG9jYWw6CQkJCQkJXAotKwkkKF9jbGVhbl9vbWYpCQkkKF9jbGVhbl9kc2spCQlcCi0rCSQoX2NsZWFuX2xjKQkJJChfY2xlYW5fZGlyKQotK2Rpc3RjbGVhbi1sb2NhbDoJCQkJCVwKLSsJJChfY2xlYW5fb21mKQkJJChfY2xlYW5fZHNrKQkJXAotKwkkKF9jbGVhbl9sYykJCSQoX2NsZWFuX2RpcikKLSttb3N0bHljbGVhbi1sb2NhbDoJCQkJCVwKLSsJJChfY2xlYW5fb21mKQkJJChfY2xlYW5fZHNrKQkJXAotKwkkKF9jbGVhbl9sYykJCSQoX2NsZWFuX2RpcikKLSttYWludGFpbmVyLWNsZWFuLWxvY2FsOgkJCQkJXAotKwkkKF9jbGVhbl9vbWYpCQkkKF9jbGVhbl9kc2spCQlcCi0rCSQoX2NsZWFuX2xjKQkJJChfY2xlYW5fZGlyKQotKwotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgRGlzdAotKwotKy5QSE9OWTogZGlzdC1kb2MtZG9jcyBkaXN0LWRvYy1wYWdlcyBkaXN0LWRvYy1maWdzIGRpc3QtZG9jLW9tZiBkaXN0LWRvYy1kc2sKLStkb2MtZGlzdC1ob29rOiAJCQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSQoRE9DX0lEKSxkaXN0LWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0NfRklHVVJFUyksZGlzdC1kb2MtZmlncykJCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxkaXN0LWRvYy1vbWYpCi0rIwkkKGlmICQoX0RPQ19EU0tfSU4pLGRpc3QtZG9jLWRzaykKLSsKLStkaXN0LWRvYy1kb2NzOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykgJChfRE9DX1BPRklMRVMpCi0rCUBmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgIGVjaG8gIiAkKG1raW5zdGFsbGRpcnMpICQoZGlzdGRpcikvJCRsYyI7IFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkbGMiOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19DX0RPQ1MpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwlAbGlzdD0nJChfRE9DX0xDX0RPQ1MpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwlAbGlzdD0nJChfRE9DX1BPRklMRVMpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwotK2Rpc3QtZG9jLWZpZ3M6ICQoX0RPQ19TUkNfRklHVVJFUykKLSsJQGxpc3Q9JyQoX0RPQ19DX0ZJR1VSRVMpICQoX0RPQ19MQ19GSUdVUkVTKSc7IFwKLSsJZm9yIGZpZyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGZpZyI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRkJCRmaWciOyB0aGVuIFwKLSsJICAgIGZpZ2Rpcj1gZWNobyAkJGZpZyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWdkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZmlnZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZmlnZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICAgIGVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGQkJGZpZyAkKGRpc3RkaXIpLyQkZmlnIjsgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQkJGZpZyIgIiQoZGlzdGRpcikvJCRmaWciOyBcCi0rCSAgZmk7IFwKLSsJZG9uZTsKLSsKLStkaXN0LWRvYy1vbWY6Ci0rCUBpZiB0ZXN0IC1mICIkKF9ET0NfT01GX0lOKSI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCWVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGQkKF9ET0NfT01GX0lOKSAkKGRpc3RkaXIpLyQobm90ZGlyICQoX0RPQ19PTUZfSU4pKSI7IFwKLSsJJChJTlNUQUxMX0RBVEEpICIkJGQkKF9ET0NfT01GX0lOKSIgIiQoZGlzdGRpcikvJChub3RkaXIgJChfRE9DX09NRl9JTikpIgotKwotK2Rpc3QtZG9jLWRzazoKLSsJQGlmIHRlc3QgLWYgIiQoX0RPQ19EU0tfSU4pIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJZWNobyAiJChJTlNUQUxMX0RBVEEpICQkZCQoX0RPQ19EU0tfSU4pICQoZGlzdGRpcikvJChub3RkaXIgJChfRE9DX0RTS19JTikpIjsgXAotKwkkKElOU1RBTExfREFUQSkgIiQkZCQoX0RPQ19EU0tfSU4pIiAiJChkaXN0ZGlyKS8kKG5vdGRpciAkKF9ET0NfRFNLX0lOKSkiCi0rCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBDaGVjawotKwotKy5QSE9OWTogY2hlY2stZG9jLWRvY3MgY2hlY2stZG9jLW9tZgotK2NoZWNrOgkJCQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSxjaGVjay1kb2MtZG9jcykJCVwKLSsJJChpZiAkKERPQ19JRCksY2hlY2stZG9jLXBhZ2VzKQkJCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxjaGVjay1kb2Mtb21mKQotKwotK2NoZWNrLWRvYy1kb2NzOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykKLSsJQGZvciBsYyBpbiBDICQoX0RPQ19SRUFMX0xJTkdVQVMpOyBkbyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRsYyI7IFwKLSsJICAgIHRoZW4gZD07IFwKLSsJICAgIHhtbHBhdGg9IiQkbGMiOyBcCi0rCSAgZWxzZSBcCi0rCSAgICBkPSIkKHNyY2RpcikvIjsgXAotKwkgICAgeG1scGF0aD0iJCRsYzokKHNyY2RpcikvJCRsYyI7IFwKLSsJICBmaTsgXAotKwkgIGVjaG8gInhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAkJHhtbHBhdGggLS14aW5jbHVkZSAtLXBvc3R2YWxpZCAkJGQkJGxjLyQoRE9DX01PRFVMRSkueG1sIjsgXAotKwkgIHhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAiJCR4bWxwYXRoIiAtLXhpbmNsdWRlIC0tcG9zdHZhbGlkICIkJGQkJGxjLyQoRE9DX01PRFVMRSkueG1sIjsgXAotKwlkb25lCi0rCi0rY2hlY2stZG9jLXBhZ2VzOiAkKF9ET0NfQ19QQUdFUykgJChfRE9DX0xDX1BBR0VTKQotKwlmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkbGMiOyBcCi0rCSAgICB0aGVuIGQ9OyBcCi0rCSAgICB4bWxwYXRoPSIkJGxjIjsgXAotKwkgIGVsc2UgXAotKwkgICAgZD0iJChzcmNkaXIpLyI7IFwKLSsJICAgIHhtbHBhdGg9IiQkbGM6JChzcmNkaXIpLyQkbGMiOyBcCi0rCSAgZmk7IFwKLSsJICBmb3IgcGFnZSBpbiAkKERPQ19QQUdFUyk7IGRvIFwKLSsJICAgIGVjaG8gInhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAkJHhtbHBhdGggLS14aW5jbHVkZSAkJGQkJGxjLyQkcGFnZSI7IFwKLSsJICAgIHhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAiJCR4bWxwYXRoIiAtLXhpbmNsdWRlICIkJGQkJGxjLyQkcGFnZSI7IFwKLSsJICBkb25lOyBcCi0rCWRvbmUKLSsKLStjaGVjay1kb2Mtb21mOiAkKF9ET0NfT01GX0FMTCkKLSsJQGxpc3Q9JyQoX0RPQ19PTUZfQUxMKSc7IGZvciBvbWYgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAieG1sbGludCAtLW5vb3V0IC0teGluY2x1ZGUgLS1kdGR2YWxpZCAnaHR0cDovL3Njcm9sbGtlZXBlci5zb3VyY2Vmb3JnZS5uZXQvZHRkcy9zY3JvbGxrZWVwZXItb21mLTEuMC9zY3JvbGxrZWVwZXItb21mLmR0ZCcgJCRvbWYiOyBcCi0rCSAgeG1sbGludCAtLW5vb3V0IC0teGluY2x1ZGUgLS1kdGR2YWxpZCAnaHR0cDovL3Njcm9sbGtlZXBlci5zb3VyY2Vmb3JnZS5uZXQvZHRkcy9zY3JvbGxrZWVwZXItb21mLTEuMC9zY3JvbGxrZWVwZXItb21mLmR0ZCcgJCRvbWY7IFwKLSsJZG9uZQotKwotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgSW5zdGFsbAotKwotKy5QSE9OWTogaW5zdGFsbC1kb2MtZG9jcyBpbnN0YWxsLWRvYy1odG1sIGluc3RhbGwtZG9jLWZpZ3MgaW5zdGFsbC1kb2Mtb21mIGluc3RhbGwtZG9jLWRzawotKwotK19kb2NfaW5zdGFsbF9kaXIgPSAkKGlmICQoRE9DX0lEKSwkKERPQ19JRCksJChET0NfTU9EVUxFKSkKLSsKLStpbnN0YWxsLWRhdGEtbG9jYWw6CQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSQoRE9DX0lEKSxpbnN0YWxsLWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0hUTUxfQUxMKSxpbnN0YWxsLWRvYy1odG1sKQkJXAotKwkkKGlmICQoX0RPQ19DX0ZJR1VSRVMpLGluc3RhbGwtZG9jLWZpZ3MpCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxpbnN0YWxsLWRvYy1vbWYpCi0rIwkkKGlmICQoX0RPQ19EU0tfSU4pLGluc3RhbGwtZG9jLWRzaykKLSsKLStpbnN0YWxsLWRvYy1kb2NzOgotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBlY2hvICIkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkbGMiOyBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGxjOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19DX0RPQ1MpJzsgZm9yIGRvYyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGRvYyI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCSAgZG9jZGlyPSIkJGxjLyJgZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgZG9jZGlyPSIkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvY2RpciI7IFwKLSsJICBpZiAhIHRlc3QgLWQgIiQkZG9jZGlyIjsgdGhlbiBcCi0rCSAgICBlY2hvICIkKG1raW5zdGFsbGRpcnMpICQkZG9jZGlyIjsgXAotKwkgICAgJChta2luc3RhbGxkaXJzKSAiJCRkb2NkaXIiOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2MiOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQkZCQkZG9jICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19MQ19ET0NTKSc7IGZvciBkb2MgaW4gJCRsaXN0OyBkbyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRkb2MiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwkgIGRvY2Rpcj0iJCRsYy8iYGVjaG8gJCRkb2MgfCBzZWQgLWUgJ3MvXlwoLipcL1wpLiovXDEvJyAtZSAnL1wvLyFzLy4qLy8nYDsgXAotKwkgIGRvY2Rpcj0iJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2NkaXIiOyBcCi0rCSAgaWYgISB0ZXN0IC1kICIkJGRvY2RpciI7IHRoZW4gXAotKwkgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkJGRvY2RpciI7IFwKLSsJICAgICQobWtpbnN0YWxsZGlycykgIiQkZG9jZGlyIjsgXAotKwkgIGZpOyBcCi0rCSAgZWNobyAiJChJTlNUQUxMX0RBVEEpICQkZCQkZG9jICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jIjsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkJGQkJGRvYyAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYzsgXAotKwlkb25lCi0rCi0raW5zdGFsbC1kb2MtZmlnczoKLSsJQGxpc3Q9JyQocGF0c3Vic3QgQy8lLCUsJChfRE9DX0NfRklHVVJFUykpJzsgZm9yIGZpZyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgICAgZmlnc3ltbGluaz1mYWxzZTsgXAotKwkgICAgaWYgdGVzdCAtZiAiJCRsYy8kJGZpZyI7IHRoZW4gXAotKwkgICAgICBmaWdmaWxlPSIkJGxjLyQkZmlnIjsgXAotKwkgICAgZWxpZiB0ZXN0IC1mICIkKHNyY2RpcikvJCRsYy8kJGZpZyI7IHRoZW4gXAotKwkgICAgICBmaWdmaWxlPSIkKHNyY2RpcikvJCRsYy8kJGZpZyI7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICBmaWdzeW1saW5rPXRydWU7IFwKLSsJICAgIGZpOyBcCi0rCSAgICBmaWdkaXI9IiQkbGMvImBlY2hvICQkZmlnIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2A7IFwKLSsJICAgIGZpZ2Rpcj0iJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRmaWdkaXIiOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQkZmlnZGlyIjsgdGhlbiBcCi0rCSAgICAgIGVjaG8gIiQobWtpbnN0YWxsZGlycykgJCRmaWdkaXIiOyBcCi0rCSAgICAgICQobWtpbnN0YWxsZGlycykgIiQkZmlnZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICAgIGZpZ2Jhc2U9YGVjaG8gJCRmaWcgfCBzZWQgLWUgJ3MvXi4qXC8vLydgOyBcCi0rCSAgICBpZiAkJGZpZ3N5bWxpbms7IHRoZW4gXAotKwkgICAgICBlY2hvICJjZCAkJGZpZ2RpciAmJiAkKExOX1MpIC1mIC4uLy4uL0MvJCRmaWcgJCRmaWdiYXNlIjsgXAotKwkgICAgICAoIGNkICIkJGZpZ2RpciIgJiYgJChMTl9TKSAtZiAiLi4vLi4vQy8kJGZpZyIgIiQkZmlnYmFzZSIgKTsgXAotKwkgICAgZWxzZSBcCi0rCSAgICAgIGVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGZpZ2ZpbGUgJCRmaWdkaXIkJGZpZ2Jhc2UiOyBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAiJCRmaWdmaWxlIiAiJCRmaWdkaXIkJGZpZ2Jhc2UiOyBcCi0rCSAgICBmaTsgXAotKwkgIGRvbmU7IFwKLSsJZG9uZQotKwotK2luc3RhbGwtZG9jLWh0bWw6Ci0rCWVjaG8gaW5zdGFsbC1odG1sCi0rCi0raW5zdGFsbC1kb2Mtb21mOgotKwkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikKLSsJQGxpc3Q9JyQoX0RPQ19PTUZfQUxMKSc7IGZvciBvbWYgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAiJChJTlNUQUxMX0RBVEEpICQkb21mICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWYiOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQkb21mICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWY7IFwKLSsJZG9uZQotKwlAaWYgdGVzdCAieCQoX0VOQUJMRV9TSykiID0gInh0cnVlIjsgdGhlbiBcCi0rCSAgZWNobyAic2Nyb2xsa2VlcGVyLXVwZGF0ZSAtcCAkKERFU1RESVIpJChfc2tsb2NhbHN0YXRlZGlyKSAtbyAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpIjsgXAotKwkgIHNjcm9sbGtlZXBlci11cGRhdGUgLXAgIiQoREVTVERJUikkKF9za2xvY2Fsc3RhdGVkaXIpIiAtbyAiJChERVNURElSKSQoT01GX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKSI7IFwKLSsJZmk7Ci0rCi0raW5zdGFsbC1kb2MtZHNrOgotKwllY2hvIGluc3RhbGwtZHNrCi0rCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBVbmluc3RhbGwKLSsKLSsuUEhPTlk6IHVuaW5zdGFsbC1kb2MtZG9jcyB1bmluc3RhbGwtZG9jLWh0bWwgdW5pbnN0YWxsLWRvYy1maWdzIHVuaW5zdGFsbC1kb2Mtb21mIHVuaW5zdGFsbC1kb2MtZHNrCi0rdW5pbnN0YWxsLWxvY2FsOgkJCQkJXAotKwkkKGlmICQoRE9DX01PRFVMRSkkKERPQ19JRCksdW5pbnN0YWxsLWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0hUTUxfQUxMKSx1bmluc3RhbGwtZG9jLWh0bWwpCVwKLSsJJChpZiAkKF9ET0NfQ19GSUdVUkVTKSx1bmluc3RhbGwtZG9jLWZpZ3MpCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSx1bmluc3RhbGwtZG9jLW9tZikKLSsjCSQoaWYgJChfRE9DX0RTS19JTiksdW5pbnN0YWxsLWRvYy1kc2spCi0rCi0rdW5pbnN0YWxsLWRvYy1kb2NzOgotKwlAbGlzdD0nJChfRE9DX0NfRE9DUyknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGVjaG8gIiBybSAtZiAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYyI7IFwKLSsJICBybSAtZiAiJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2MiOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19MQ19ET0NTKSc7IGZvciBkb2MgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAiIHJtIC1mICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jIjsgXAotKwkgIHJtIC1mICIkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwotK3VuaW5zdGFsbC1kb2MtZmlnczoKLSsJQGxpc3Q9JyQoX0RPQ19DX0ZJR1VSRVMpICQoX0RPQ19MQ19GSUdVUkVTKSc7IGZvciBmaWcgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAicm0gLWYgJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRmaWciOyBcCi0rCSAgcm0gLWYgIiQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZmlnIjsgXAotKwlkb25lOwotKwotK3VuaW5zdGFsbC1kb2Mtb21mOgotKwlAbGlzdD0nJChfRE9DX09NRl9BTEwpJzsgZm9yIG9tZiBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0ICJ4JChfRU5BQkxFX1NLKSIgPSAieHRydWUiOyB0aGVuIFwKLSsJICAgIGVjaG8gInNjcm9sbGtlZXBlci11bmluc3RhbGwgLXAgJChfc2tsb2NhbHN0YXRlZGlyKSAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwkgICAgc2Nyb2xsa2VlcGVyLXVuaW5zdGFsbCAtcCAiJChfc2tsb2NhbHN0YXRlZGlyKSIgIiQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWYiOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICJybSAtZiAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwkgIHJtIC1mICIkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwlkb25lCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ2NjLTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC8wMDAxLUZpeC1idWlsZC13aXRoLWdjYy01LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjdmYzViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ2NjLTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDIwODEwZmNmMzI5YzZlMGI0OGI4ZTc2MDI1NjVjY2M3MGM3Y2U2MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMCBNYXkgMjAxNSAwMjoxMDo1OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBnY2MgNQotCi1jYzE6IGVycm9yOiAuLi8uLi9nbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXRzLXByaXZhdGU6IE5vIHN1Y2ggZmlsZSBvcgotZGlyZWN0b3J5IFstV2Vycm9yPW1pc3NpbmctaW5jbHVkZS1kaXJzXQotY2MxOiBlcnJvcjogLi4vLi4vZ25vbWUtcGFuZWwvbGlicGFuZWwtYXBwbGV0cy1wcml2YXRlOiBObyBzdWNoIGZpbGUgb3IKLWRpcmVjdG9yeSBbLVdlcnJvcj1taXNzaW5nLWluY2x1ZGUtZGlyc10KLWNjMTogZXJyb3I6IC4uLy4uL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldHMtcHJpdmF0ZTogTm8gc3VjaCBmaWxlIG9yCi1kaXJlY3RvcnkgWy1XZXJyb3I9bWlzc2luZy1pbmNsdWRlLWRpcnNdCi1jYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXQtcHJpdmF0ZS9NYWtlZmlsZS5hbSB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXQtcHJpdmF0ZS9NYWtlZmlsZS5hbSBiL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldC1wcml2YXRlL01ha2VmaWxlLmFtCi1pbmRleCBmMTJkZWU4Li5kNTU2ZjEyIDEwMDY0NAotLS0tIGEvZ25vbWUtcGFuZWwvbGlicGFuZWwtYXBwbGV0LXByaXZhdGUvTWFrZWZpbGUuYW0KLSsrKyBiL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldC1wcml2YXRlL01ha2VmaWxlLmFtCi1AQCAtOCw3ICs4LDYgQEAgQU1fQ1BQRkxBR1MgPQkJCQkJCQlcCi0gCS1JJChzcmNkaXIpCQkJCQkJXAotIAktSSQodG9wX3NyY2RpcikvZ25vbWUtcGFuZWwJCQkJXAotIAktSSQodG9wX2J1aWxkZGlyKS9nbm9tZS1wYW5lbAkJCQlcCi0tCS1JJCh0b3BfYnVpbGRkaXIpL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldHMtcHJpdmF0ZQlcCi0gCS1JJCh0b3BfYnVpbGRkaXIpL2dub21lLXBhbmVsL2xpYnBhbmVsLXV0aWwJCVwKLSAJLUREQVRBRElSPVwiIiQoZGF0YWRpcikiXCIJCQkJXAotIAktRFBBTkVMX0FQUExFVFNfRElSPVwiJChhcHBsZXRzZGlyKVwiCQkJXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9hcy1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9hcy1uZWVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OGUzZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwvYXMtbmVlZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBjNjVmMWFlMzQ3MmNmZDRjZDk2ZmQzNzZiN2JiZDk1ZmJhNWVlZjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmluY2VudCBVbnR6IDx2dW50ekBnbm9tZS5vcmc+Ci1EYXRlOiBGcmksIDI3IE1heSAyMDExIDE3OjAwOjE0ICswMDAwCi1TdWJqZWN0OiBidWlsZDogRml4IGJ1aWxkIHdpdGggLS1hcy1uZWVkZWQKLQotdXBzdHJlYW0tc3RhdHVzOiBiYWNrcG9ydAotCi0tLS0KLWRpZmYgLS1naXQgYS9hcHBsZXRzL25vdGlmaWNhdGlvbl9hcmVhL01ha2VmaWxlLmFtIGIvYXBwbGV0cy9ub3RpZmljYXRpb25fYXJlYS9NYWtlZmlsZS5hbQotaW5kZXggMGFmYzZjNS4uOTczNDUzNiAxMDA2NDQKLS0tLSBhL2FwcGxldHMvbm90aWZpY2F0aW9uX2FyZWEvTWFrZWZpbGUuYW0KLSsrKyBiL2FwcGxldHMvbm90aWZpY2F0aW9uX2FyZWEvTWFrZWZpbGUuYW0KLUBAIC0yOSwxNyArMjksMTcgQEAgbGlidHJheV9sYV9TT1VSQ0VTID0JCVwKLSBOT1RJRklDQVRJT05fQVJFQV9TT1VSQ0VTID0gbWFpbi5jIG1haW4uaAotIAotIE5PVElGSUNBVElPTl9BUkVBX0xEQUREID0JCQkJXAotKwlsaWJ0cmF5LmxhCQkJCQlcCi0gCS4uLy4uL2xpYnBhbmVsLWFwcGxldC9saWJwYW5lbC1hcHBsZXQtNC5sYQlcCi0gCSQoWF9MSUJTKQkJCQkJXAotIAkkKE5PVElGSUNBVElPTl9BUkVBX0xJQlMpCQkJXAotLQkkKExJQlBBTkVMX0FQUExFVF9MSUJTKQkJCQlcCi0tCWxpYnRyYXkubGEKLSsJJChMSUJQQU5FTF9BUFBMRVRfTElCUykKLSAKLSB0ZXN0dHJheV9TT1VSQ0VTID0gdGVzdHRyYXkuYwotIHRlc3R0cmF5X0xEQUREID0JCQlcCi0rCWxpYnRyYXkubGEJCQlcCi0gCSQoWF9MSUJTKQkJCVwKLS0JJChOT1RJRklDQVRJT05fQVJFQV9MSUJTKQlcCi0tCWxpYnRyYXkubGEKLSsJJChOT1RJRklDQVRJT05fQVJFQV9MSUJTKQotIAotIGlmIE5PVElGSUNBVElPTl9BUkVBX0lOUFJPQ0VTUwotIEFQUExFVF9JTl9QUk9DRVNTID0gdHJ1ZQotLS0KLWNnaXQgdjAuOQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwvaWRsLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9pZGwtc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0Y2Q4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9pZGwtc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS0tLSAvdG1wL01ha2VmaWxlLmFtCTIwMDktMTAtMjYgMTY6NTM6MjAuMDAwMDAwMDAwICswMTAwCi0rKysgZ25vbWUtcGFuZWwtMi4yOC4wL2dub21lLXBhbmVsL01ha2VmaWxlLmFtCTIwMDktMTAtMjYgMTY6NTM6NTEuMDAwMDAwMDAwICswMTAwCi1AQCAtNDMsNyArNDMsNyBAQAotIAkkKE5VTEwpCi0gCi0gJChDT1JCQV9TUkNMSVNUKTogJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsICQoT1JCSVRfSURMKQotLQkkKEFNX1ZfR0VOKSQoT1JCSVRfSURMKSAtSSAkKEJPTk9CT19JRExESVIpIC1JICQoQk9OT0JPX0FDVF9JRExESVIpICQodG9wX3NyY2RpcikvaWRsL0dOT01FX1BhbmVsLmlkbAotKwkkKEFNX1ZfR0VOKSQoT1JCSVRfSURMKSAtSSAkKFNZU1JPT1QpJChCT05PQk9fSURMRElSKSAtSSAkKFNZU1JPT1QpJChCT05PQk9fQUNUX0lETERJUikgJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsCi0gCi0gQlVJTFRfU09VUkNFUyA9IFwKLSAJJChDT1JCQV9TUkNMSVNUKQlcCi0tLS0gL3RtcC9NYWtlZmlsZS5hbQkyMDA5LTEwLTI2IDE2OjU0OjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdub21lLXBhbmVsLTIuMjguMC9saWJwYW5lbC1hcHBsZXQvTWFrZWZpbGUuYW0JMjAwOS0xMC0yNiAxNjo1NDozNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gCUdOT01FX1BhbmVsLmgKLSAKLSAkKENPUkJBX1NSQ0xJU1QpOiAkKHRvcF9zcmNkaXIpL2lkbC9HTk9NRV9QYW5lbC5pZGwgJChPUkJJVF9JREwpCi0tCSQoQU1fVl9HRU4pJChPUkJJVF9JREwpIC1JICQoQk9OT0JPX0lETERJUikgLUkgJChCT05PQk9fQUNUX0lETERJUikgJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsCi0rCSQoQU1fVl9HRU4pJChPUkJJVF9JREwpIC1JICQoU1lTUk9PVCkkKEJPTk9CT19JRExESVIpIC1JICQoU1lTUk9PVCkkKEJPTk9CT19BQ1RfSURMRElSKSAkKHRvcF9zcmNkaXIpL2lkbC9HTk9NRV9QYW5lbC5pZGwKLSAKLSBub2luc3RfUFJPR1JBTVMgPSB0ZXN0LWJvbm9iby1hcHBsZXQKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsM18zLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsM18zLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjZmFiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbDNfMy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIHBhbmVsIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiAmIEdGREwtMS4xIgotCi1CUE4gPSAiZ25vbWUtcGFuZWwiCi1QUiA9ICJyMSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWwzXSA/PSAiQ09ORkxJQ1Q6IGRlcGVuZHMgb24gbGliZ3dlYXRoZXIzIHdoaWNoIGNvbmZsaWN0cyB3aXRoIGxpYmd3ZWF0aGVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi0jIGNvbmZsaWN0cyB3aXRoIGdub21lLXBhbmVsLCBiZWNhdXNlIHRoZXkgcHJvdmlkZSB0aGUgc2FtZSBwYWNrYWdlCi0jIGh0dHA6Ly9wYXRjaGVzLm9wZW5lbWJlZGRlZC5vcmcvcGF0Y2gvNDMxMDUvCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1ET0NTO21kNT1jOTIxMWRhYjNhZTYxZTU4MGY0ODQzMjAyMDc4NDMyNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1ERVBFTkRTID0gImdub21lLWRvYy11dGlscy1uYXRpdmUgZ3RrKzMgZGNvbmYgZ2NvbmYgZ2xpYi0yLjAgZ25vbWUtZGVza3RvcDMgZ3RrKyBwYW5nbyBsaWJ3bmNrMyBnbm9tZS1tZW51cyBjYWlybyBsaWJnd2VhdGhlcjMgZGJ1cy1nbGliIGxpYnJzdmcgbGliY2FuYmVycmEiCi0KLWluaGVyaXQgZ3RrLWRvYyBnbm9tZSBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYXMtbmVlZGVkLnBhdGNoICIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGYyZjY0NGRjNDA4MWI3MmY2ZGY3YTY1MjgyYWY3YzYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyNWRiOGVjMDI2YzRiZjQ3ZjBlZjVjYzdlMjcxMmYyYWFkMTc1YmQ3ZmI4ZTQ5NTJlZjVmOGIyMDBmMTdmMTk2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLWRpc2FibGUtZWRzIC0tZW5hYmxlLWJvbm9ibz1ubyAtLXdpdGgtaW4tcHJvY2Vzcy1hcHBsZXRzPW5vbmUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGdub21lLWRvYy1wcmVwYXJlIC0tYXV0b21ha2UKLSAgICBzZWQgLWkgLWUgczpoZWxwOjogJHtTfS9NYWtlZmlsZS5hbQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn1fYXBwZW5kICgpIHsKLSAgICBnY29uZnRvb2wtMiAtLWNvbmZpZy1zb3VyY2U9eG1sOnJlYWR3cml0ZTovZXRjL2djb25mL2djb25mLnhtbC5kZWZhdWx0cyBcCi0gICAgICAgIC0tZGlyZWN0IC0tbG9hZCAvZXRjL2djb25mL3NjaGVtYXMvcGFuZWwtZGVmYXVsdC1zZXR1cC5lbnRyaWVzCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJwYW5lbC1hcHBsZXQiCi1GSUxFU19saWJwYW5lbC1hcHBsZXQgPSAiJHtsaWJkaXJ9L2xpYnBhbmVsLWFwcGxldC0zLnNvLioiCi0KLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vUG9saWN5S2l0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYm9ub2JvIFwKLSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWwzXSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gZ25vbWUtbWVudXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbF8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbF8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjhiOWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWxfMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBwYW5lbCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4wICYgR0ZETC0xLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctRE9DUzttZDU9YzkyMTFkYWIzYWU2MWU1ODBmNDg0MzIwMjA3ODQzMjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotUFIgPSAicjciCi0KLURFUEVORFMgPSAiZ25vbWUtZG9jLXV0aWxzIGdjb25mIGdsaWItMi4wIGdub21lLWRlc2t0b3AgZ3RrKyBcCi0gICAgcGFuZ28gbGlid25jayBnbm9tZS1tZW51cyBjYWlybyBsaWJnd2VhdGhlciBkYnVzIGRidXMtZ2xpYiBcCi0gICAgbGlicnN2ZyBsaWJjYW5iZXJyYSBcCi0iCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24iCi0KLWluaGVyaXQgZ3RrLWRvYyBnbm9tZSBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcGtnY29uZmlnIGdjb25mIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNSRVYgPSAiODI5MmJkMmI4YTM2ZGY3ZWVkM2M3NjA4OTk0MDA3OTBjZGU2ODU5MCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmdub21lLm9yZy9nbm9tZS1wYW5lbDticmFuY2g9Z25vbWUtMi0zMiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWdjYy01LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWVkcyAtLWVuYWJsZS1ib25vYm89bm8gLS13aXRoLWluLXByb2Nlc3MtYXBwbGV0cz1ub25lIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrbWFuYWdlcl0gPSAiLS1lbmFibGUtbmV0d29yay1tYW5hZ2VyLC0tZGlzYWJsZS1uZXR3b3JrLW1hbmFnZXIsbmV0d29ya21hbmFnZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOmhlbHA6OiAke1N9L01ha2VmaWxlLmFtCi0gICAgc2VkIC1pIC1lIHM6XiMhQFBZVEhPTkA6IyEvdXNyL2Jpbi9weXRob246ICR7U30vZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwtYWRkLmluCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJwYW5lbC1hcHBsZXQiCi1GSUxFU19saWJwYW5lbC1hcHBsZXQgPSAiJHtsaWJkaXJ9L2xpYnBhbmVsLWFwcGxldC0qLnNvLioiCi0KLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vUG9saWN5S2l0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYm9ub2JvIFwKLSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWxdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBsaWJnd2VhdGhlciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLW1hbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLW1hbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZkNDliYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC1tYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDNlZDE1YTNjNmFlNGFiOTRjN2UzYWYzMDY2NDRiYjVkN2YzZmQxZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI5IEFwciAyMDEzIDEzOjA4OjEwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBkb24ndCBidWlsZCBoZWxwL21hbgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1oZWxwIGNyYXNoZXMgd2l0aDoKLQotfCB4c2x0cHJvYyAtbyBnbm9tZS1wb3dlci1tYW5hZ2VyLUMub21mIC0tc3RyaW5ncGFyYW0gZGIyb21mLmJhc2VuYW1lIGdub21lLXBvd2VyLW1hbmFnZXIgLS1zdHJpbmdwYXJhbSBkYjJvbWYuZm9ybWF0ICdkb2Nib29rJyAtLXN0cmluZ3BhcmFtIGRiMm9tZi5kdGQgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMy8vRU4iIC0tc3RyaW5ncGFyYW0gZGIyb21mLmxhbmcgQyAtLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfZGlyICIvdXNyL3NoYXJlL29tZiIgLS1zdHJpbmdwYXJhbSBkYjJvbWYuaGVscF9kaXIgIi91c3Ivc2hhcmUvZ25vbWUvaGVscCIgLS1zdHJpbmdwYXJhbSBkYjJvbWYub21mX2luICIvaG9tZS9qZW5raW5zL29lL3Noci1jb3JlLWJyYW5jaGVzL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvZ25vbWUtcG93ZXItbWFuYWdlci8yLjMyLjAtcjIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvaGVscC9nbm9tZS1wb3dlci1tYW5hZ2VyLm9tZi5pbiIgIC9ob21lL2plbmtpbnMvb2Uvc2hyLWNvcmUtYnJhbmNoZXMvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9xZW11YXJtYC9ob21lL2plbmtpbnMvb2Uvc2hyLWNvcmUtYnJhbmNoZXMvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9wa2ctY29uZmlnIC0tdmFyaWFibGUgZGIyb21mIGdub21lLWRvYy11dGlsc2AgQy9nbm9tZS1wb3dlci1tYW5hZ2VyLnhtbCB8fCB7IHJtIC1mICJnbm9tZS1wb3dlci1tYW5hZ2VyLUMub21mIjsgZXhpdCAxOyB9Ci18IHVuYWJsZSB0byBwYXJzZSBmci9nbm9tZS1wb3dlci1tYW5hZ2VyLnhtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgICAgMiAtLQotIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMDA1YjhhMC4uNWI5ZTMxOCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTUsOSArNSw3IEBAIFNVQkRJUlMgPSAJCQkJCQlcCi0gCXNyYwkJCQkJCVwKLSAJcG8JCQkJCQlcCi0gCWRvY3MJCQkJCQlcCi0tCW1hbgkJCQkJCVwKLSAJZGF0YQkJCQkJCVwKLS0JaGVscAkJCQkJCVwKLSAJcG9saWN5CQkJCQkJXAotIAl0b29scwotIAotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2RiN2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1JbiBjcm9zcyBlbnZpcm9ubWVudCB3ZSBoYXZlIHRvIHByZXBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIHBhdGggZm91bmQgYnkKLXBrZ2NvbmZpZyBzaW5jZSB0aGUgcGF0aCByZXR1cm5lZCBmcm9tIHBrZ2NvbmZpZyBkb2VzIG5vdCBoYXZlIHN5c3Jvb3QgcHJlZml4ZWQKLWl0IGVuZHMgdXAgdXNpbmcgdGhlIGZpbGVzIGZyb20gaG9zdCBzeXN0ZW0uIE5vdyB1c3VhbGx5IHBlb3BsZSBoYXZlIGdub21lIGluc3RhbGxlZAotc28gdGhlIGJ1aWxkIHN1Y2NlZWRzIGJ1dCBpZiB5b3UgZG9udCBoYXZlIGdub21lIGluc3RhbGxlZCBvbiBidWlsZCBob3N0IHRoZW4KLWl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gaG9zdCBzeXN0ZW0gYW5kIHBhY2thZ2VzIHVzaW5nIGdub21lLWRvYy11dGlscyB3b250Ci1jb21waWxlLgotCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnbm9tZS1wb3dlci1tYW5hZ2VyLTIuMzIuMC9nbm9tZS1kb2MtdXRpbHMubWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wLm9yaWcvZ25vbWUtZG9jLXV0aWxzLm1ha2UJMjAxMC0wMS0yNyAwODoyODozMS4wMDAwMDAwMDAgLTA4MDAKLSsrKyBnbm9tZS1wb3dlci1tYW5hZ2VyLTIuMzIuMC9nbm9tZS1kb2MtdXRpbHMubWFrZQkyMDExLTA5LTI1IDE2OjE2OjA0LjkxNDgxMzgwMCAtMDcwMAotQEAgLTEyNCwxMSArMTI0LDExIEBACi0gCi0gX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotIAotLV9kYjJodG1sID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyaHRtbCBnbm9tZS1kb2MtdXRpbHNgCi0tX2RiMm9tZiAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotLV9jaHVua3MgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLS1fY3JlZGl0cyA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jcmVkaXRzLnhzbAotLV9pZHMgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotK19kYjJodG1sID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotK19kYjJvbWYgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0rX2NodW5rcyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLStfY3JlZGl0cyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLStfaWRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlcl8yLjMyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXJfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzIxMTA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlcl8yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIlBvd2VyIG1hbmFnZW1lbnQgZGFlbW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QUiA9ICJyNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrIGdjb25mIGxpYmdub21lLWtleXJpbmcgZGJ1cyBkYnVzLWdsaWIgbGlibm90aWZ5IGxpYnduY2sgY2Fpcm8gbGlidW5pcXVlIHhyYW5kciB2aXJ0dWFsL2xpYngxMSBsaWJ4cmVuZGVyIGxpYmNhbmJlcnJhIHVwb3dlciBnbm9tZS1kb2MtdXRpbHMiCi1SUkVDT01NRU5EU18ke1BOfSArPSAiZ25vbWUta2V5cmluZyIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC1tYW4ucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5YTA4ZTg1ZGNlM2ZmYjkwNzc1ZjE1ZTNiZGE0YWRkYSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjE3ZmEzMDFiZjdlMTMzMjg1YzBlMDU0YWUzYmUyYjBmNjkwYzQ4ZjU5YjA5ZjY3ZTA0ZDZlZDMzOWIzMzA0NzYiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLXNjcm9sbGtlZXBlciBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1hcHBsZXRzIFwKLSAgICAgICAgICAgICAgICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfWDExX2V4dGVuc2lvbnNfZHBtc19oPXllcyBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgIyBTaWdoLi4uIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gZG9lc24ndCBhY3R1YWxseSB0dXJuIG9mZiAtV2Vycm9yCi0gICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIk1ha2VmaWxlIikgOyBkbwotICAgICAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICRpCi0gICAgZG9uZQotICAgIHNlZCAtZSAicy9saWJ0b29sIC0tLyR7VEFSR0VUX1NZU30tbGlidG9vbCAtLS8iIC1pICR7Qn0vc3JjL01ha2VmaWxlCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1hcHBsZXRzIgotCi1GSUxFU18ke1BOfS1hcHBsZXRzID0gIiR7YmluZGlyfS8qYXBwbGV0KiBcCi0gICAgJHtsaWJkaXJ9L2Jvbm9iby9zZXJ2ZXJzIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLTIuMC91aSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS9hdXRvc3RhcnQgXAotIgotCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vb21mIFwKLSAgICAke2RhdGFkaXJ9L2dub21lL2hlbHAgXAotIgotCi0jIGdub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wL3NyYy9ncG0tbWFuYWdlci5jOjQ4ODoxODogZXJyb3I6IHRvbyBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnbm90aWZ5X25vdGlmaWNhdGlvbl9uZXcnCi1QTkJMQUNLTElTVFtnbm9tZS1wb3dlci1tYW5hZ2VyXSA/PSAiQlJPS0VOOiBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgbGlibm90aWZ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2Vzc2lvbi9nbm9tZS1zZXNzaW9uL3VzZV9HX0dJTlQ2NF9GT1JNQVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb24vdXNlX0dfR0lOVDY0X0ZPUk1BVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5ZjhkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb24vdXNlX0dfR0lOVDY0X0ZPUk1BVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVRoaXMgcGF0Y2ggZml4ZXMgdGhlIGJ1aWxkIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGdub21lLXNlc3Npb24gZm9yIDY0Yml0IHRhcmdldCB1c2luZyBnY2MgNC44Ci0KLXwgZ3MtaWRsZS1tb25pdG9yLmM6IEluIGZ1bmN0aW9uICdoYW5kbGVfYWxhcm1fbm90aWZ5X2V2ZW50JzoKLXwgZ3MtaWRsZS1tb25pdG9yLmM6MTk2Ojk6IGVycm9yOiBmb3JtYXQgJyVsbGQnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyBsb25nIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdnaW50NjQnIFstV2Vycm9yPWZvcm1hdD1dCi18ICAgICAgICAgIGdfZGVidWcgKCJXYXRjaCAlZCBmaXJlZCwgaWRsZSB0aW1lID0gJWxsZCIsCi18ICAgICAgICAgIF4KLXwgZ3MtaWRsZS1tb25pdG9yLmM6IEluIGZ1bmN0aW9uICdfeHN5bmNfYWxhcm1fc2V0JzoKLXwgZ3MtaWRsZS1tb25pdG9yLmM6NDUzOjE3OiBlcnJvcjogZm9ybWF0ICclbGxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnZ2ludDY0JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiB1cGRhdGluZyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSVsbGQiLAotfCAgICAgICAgICAgICAgICAgIF4KLXwgZ3MtaWRsZS1tb25pdG9yLmM6NDU3OjE3OiBlcnJvcjogZm9ybWF0ICclbGxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnZ2ludDY0JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiBjcmVhdGluZyBuZXcgYWxhcm0gZm9yIHBvc2l0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLXwgICAgICAgICAgICAgICAgICBeCi18IGdzLWlkbGUtbW9uaXRvci5jOjQ2NDoxNzogZXJyb3I6IGZvcm1hdCAnJWxsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIGxvbmcgaW50JywgYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgJ2dpbnQ2NCcgWy1XZXJyb3I9Zm9ybWF0PV0KLXwgICAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogdXBkYXRpbmcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLXwgICAgICAgICAgICAgICAgICBeCi18IGdzLWlkbGUtbW9uaXRvci5jOjQ2ODoxNzogZXJyb3I6IGZvcm1hdCAnJWxsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIGxvbmcgaW50JywgYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgJ2dpbnQ2NCcgWy1XZXJyb3I9Zm9ybWF0PV0KLQotVXBzdHJlYW0tU3RhdHVzOiBVbmtub3duCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogZ25vbWUtc2Vzc2lvbi0yLjMyLjEvZ25vbWUtc2Vzc2lvbi9ncy1pZGxlLW1vbml0b3IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLXNlc3Npb24tMi4zMi4xLm9yaWcvZ25vbWUtc2Vzc2lvbi9ncy1pZGxlLW1vbml0b3IuYwkyMDEwLTExLTE3IDAzOjE3OjA0LjAwMDAwMDAwMCAtMDgwMAotKysrIGdub21lLXNlc3Npb24tMi4zMi4xL2dub21lLXNlc3Npb24vZ3MtaWRsZS1tb25pdG9yLmMJMjAxMy0wNi0xMSAyMzozMzoxMi4yMzk5NjAwODIgLTA3MDAKLUBAIC0xOTMsNyArMTkzLDcgQEAKLSAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotIAotLSAgICAgICAgZ19kZWJ1ZyAoIldhdGNoICVkIGZpcmVkLCBpZGxlIHRpbWUgPSAlbGxkIiwKLSsgICAgICAgIGdfZGVidWcgKCJXYXRjaCAlZCBmaXJlZCwgaWRsZSB0aW1lID0gJSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgd2F0Y2gtPmlkLAotICAgICAgICAgICAgICAgICAgX3hzeW5jdmFsdWVfdG9faW50NjQgKGFsYXJtX2V2ZW50LT5jb3VudGVyX3ZhbHVlKSk7Ci0gCi1AQCAtNDUwLDIyICs0NTAsMjIgQEAKLSAKLSAgICAgICAgIGF0dHIudHJpZ2dlci50ZXN0X3R5cGUgPSBYU3luY1Bvc2l0aXZlVHJhbnNpdGlvbjsKLSAgICAgICAgIGlmICh3YXRjaC0+eGFsYXJtX3Bvc2l0aXZlICE9IE5vbmUpIHsKLS0gICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IHVwZGF0aW5nIGFsYXJtIGZvciBwb3NpdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JWxsZCIsCi0rICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiB1cGRhdGluZyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSUiIEdfR0lOVDY0X0ZPUk1BVCAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3hzeW5jdmFsdWVfdG9faW50NjQgKGF0dHIudHJpZ2dlci53YWl0X3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgIFhTeW5jQ2hhbmdlQWxhcm0gKEdES19ESVNQTEFZICgpLCB3YXRjaC0+eGFsYXJtX3Bvc2l0aXZlLCBmbGFncywgJmF0dHIpOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IGNyZWF0aW5nIG5ldyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSVsbGQiLAotKyAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogY3JlYXRpbmcgbmV3IGFsYXJtIGZvciBwb3NpdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfeHN5bmN2YWx1ZV90b19pbnQ2NCAoYXR0ci50cmlnZ2VyLndhaXRfdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgd2F0Y2gtPnhhbGFybV9wb3NpdGl2ZSA9IFhTeW5jQ3JlYXRlQWxhcm0gKEdES19ESVNQTEFZICgpLCBmbGFncywgJmF0dHIpOwotICAgICAgICAgfQotIAotICAgICAgICAgYXR0ci50cmlnZ2VyLnRlc3RfdHlwZSA9IFhTeW5jTmVnYXRpdmVUcmFuc2l0aW9uOwotICAgICAgICAgaWYgKHdhdGNoLT54YWxhcm1fbmVnYXRpdmUgIT0gTm9uZSkgewotLSAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogdXBkYXRpbmcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLSsgICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IHVwZGF0aW5nIGFsYXJtIGZvciBuZWdhdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfeHN5bmN2YWx1ZV90b19pbnQ2NCAoYXR0ci50cmlnZ2VyLndhaXRfdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgWFN5bmNDaGFuZ2VBbGFybSAoR0RLX0RJU1BMQVkgKCksIHdhdGNoLT54YWxhcm1fbmVnYXRpdmUsIGZsYWdzLCAmYXR0cik7Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogY3JlYXRpbmcgbmV3IGFsYXJtIGZvciBuZWdhdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JWxsZCIsCi0rICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiBjcmVhdGluZyBuZXcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lIiBHX0dJTlQ2NF9GT1JNQVQgIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF94c3luY3ZhbHVlX3RvX2ludDY0IChhdHRyLnRyaWdnZXIud2FpdF92YWx1ZSkpOwotICAgICAgICAgICAgICAgICB3YXRjaC0+eGFsYXJtX25lZ2F0aXZlID0gWFN5bmNDcmVhdGVBbGFybSAoR0RLX0RJU1BMQVkgKCksIGZsYWdzLCAmYXR0cik7Ci0gICAgICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb25fMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2Vzc2lvbi9nbm9tZS1zZXNzaW9uXzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5ZjJkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb25fMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJHbm9tZSBzZXNzaW9uIG1hbmFnZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVBSID0gInIzIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLURFUEVORFMgPSAibGlieHRzdCBndGsrIGdsaWItMi4wIHVwb3dlciBkYnVzLWdsaWIgZ2NvbmYgcGFuZ28gZ2RrLXBpeGJ1Zi1uYXRpdmUgc3RhcnR1cC1ub3RpZmljYXRpb24iCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSSArPSAiZmlsZTovL3VzZV9HX0dJTlQ2NF9GT1JNQVQucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjIyMmJhZDZiNDQ2Y2IxOWE2YjkwMjhlYTI0NTM4MDAyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjJkOTNjZTQzM2ZjZjljN2NlNmI1ZjM2ZGQ4MWY2NGU2OTJlYTBlNDFmYWFhMGY2MTE1OWRkYWMyOGMzNjg2YSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtZ3RrPTIuMCBhY19jdl9wYXRoX0dDT05GX1NBTklUWV9DSEVDSz1zZXQgLS1kaXNhYmxlLWRvY2Jvb2stZG9jcyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAkKGZpbmQgJHtTfSAtbmFtZSAiTWFrZWZpbGUiKSA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSBzOiJHQ09ORlRPT0wgPSAuKi91c3IvYmluL2djb25mdG9vbC0yIjoiR0NPTkZUT09MID0gL3Vzci9iaW4vZ2NvbmZ0b29sLTIiOmcgJGkKLSAgICAgICAgc2VkIC1pIC1lIHM6IkdDT05GX1NBTklUWV9DSEVDSyA9IHNldCI6IkdDT05GX1NBTklUWV9DSEVDSyA9IC91c3IvbGliZXhlYy9nY29uZi1zYW5pdHktY2hlY2stMiI6ZyAkaQotICAgIGRvbmUKLX0KLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tY2stY29ubmVjdG9yJywgJycsIGQpfSIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hzZXNzaW9ucyAke2RhdGFkaXJ9L2ljb25zICR7ZGF0YWRpcn0vZ25vbWUgJHtsaWJkaXJ9L2dub21lLXNlc3Npb24vaGVscGVycyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9nbm9tZS1zZXNzaW9uL2hlbHBlcnMvLmRlYnVnIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy82ODYyMS8KLVBOQkxBQ0tMSVNUW2dub21lLXNlc3Npb25dID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXR0aW5ncy1kYWVtb24vZmlsZXMvMDAwMS1SZXF1aXJlLWxpYm5vdGlmeS0wLjYuMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9maWxlcy8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQzM2YzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9maWxlcy8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSBlMWFiNTcwYjBkY2U0NzliYTIzNWU1NTQyZWEwN2QxYjViYWZjNGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2lsbGlhbSBKb24gTWNDYW5uIDxqbWNjYW5uQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDExIE9jdCAyMDEwIDIzOjM1OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlcXVpcmUgbGlibm90aWZ5IDAuNi4wCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBwbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jIHwgIDggKystLS0tLS0KLSBwbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYyAgICAgICAgICAgICAgIHwgMTMgKysrLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGE5MDA1My4uODYyNGIyYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTQsNyArNTQsNyBAQCBHVEtfUkVRVUlSRURfVkVSU0lPTj0yLjkxLjAKLSBHQ09ORl9SRVFVSVJFRF9WRVJTSU9OPTIuNi4xCi0gR0lPX1JFUVVJUkVEX1ZFUlNJT049Mi4xNy4zCi0gR05PTUVfREVTS1RPUF9SRVFVSVJFRF9WRVJTSU9OPTIuMjkuOTIKLS1MSUJOT1RJRllfUkVRVUlSRURfVkVSU0lPTj0wLjQuMwotK0xJQk5PVElGWV9SRVFVSVJFRF9WRVJTSU9OPTAuNi4xCi0gCi0gRVhUUkFfQ09NUElMRV9XQVJOSU5HUyh5ZXMpCi0gCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9hMTF5LWtleWJvYXJkL2dzZC1hMTF5LWtleWJvYXJkLW1hbmFnZXIuYyBiL3BsdWdpbnMvYTExeS1rZXlib2FyZC9nc2QtYTExeS1rZXlib2FyZC1tYW5hZ2VyLmMKLWluZGV4IDljYTgyMGEuLmY1OTY0YjkgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jCi0rKysgYi9wbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jCi1AQCAtNjA4LDkgKzYwOCw3IEBAIGF4X3Nsb3drZXlzX3dhcm5pbmdfcG9zdF9idWJibGUgKEdzZEExMXlLZXlib2FyZE1hbmFnZXIgKm1hbmFnZXIsCi0gICAgICAgICBnc2RfYTExeV9rZXlib2FyZF9tYW5hZ2VyX2Vuc3VyZV9zdGF0dXNfaWNvbiAobWFuYWdlcik7Ci0gICAgICAgICBtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAodGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZmVyZW5jZXMtZGVza3RvcC1hY2Nlc3NpYmlsaXR5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0gICAgICAgIG5vdGlmeV9ub3RpZmljYXRpb25fYXR0YWNoX3RvX3N0YXR1c19pY29uIChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sIG1hbmFnZXItPnByaXYtPnN0YXR1c19pY29uKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZmVyZW5jZXMtZGVza3RvcC1hY2Nlc3NpYmlsaXR5Iik7Ci0gICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX3NldF90aW1lb3V0IChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sIE5PVElGSUNBVElPTl9USU1FT1VUICogMTAwMCk7Ci0gCi0gICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX2FkZF9hY3Rpb24gKG1hbmFnZXItPnByaXYtPm5vdGlmaWNhdGlvbiwKLUBAIC03NDcsOSArNzQ1LDcgQEAgYXhfc3RpY2t5a2V5c193YXJuaW5nX3Bvc3RfYnViYmxlIChHc2RBMTF5S2V5Ym9hcmRNYW5hZ2VyICptYW5hZ2VyLAotICAgICAgICAgZ3NkX2ExMXlfa2V5Ym9hcmRfbWFuYWdlcl9lbnN1cmVfc3RhdHVzX2ljb24gKG1hbmFnZXIpOwotICAgICAgICAgbWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uID0gbm90aWZ5X25vdGlmaWNhdGlvbl9uZXcgKHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWZlcmVuY2VzLWRlc2t0b3AtYWNjZXNzaWJpbGl0eSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX2F0dGFjaF90b19zdGF0dXNfaWNvbiAobWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uLCBtYW5hZ2VyLT5wcml2LT5zdGF0dXNfaWNvbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWZlcmVuY2VzLWRlc2t0b3AtYWNjZXNzaWJpbGl0eSIpOwotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zZXRfdGltZW91dCAobWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uLCBOT1RJRklDQVRJT05fVElNRU9VVCAqIDEwMDApOwotIAotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9hZGRfYWN0aW9uIChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy94cmFuZHIvZ3NkLXhyYW5kci1tYW5hZ2VyLmMgYi9wbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYwotaW5kZXggMDI1MzZhMy4uZWY1N2Q1YiAxMDA2NDQKLS0tLSBhL3BsdWdpbnMveHJhbmRyL2dzZC14cmFuZHItbWFuYWdlci5jCi0rKysgYi9wbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYwotQEAgLTEwODQsMTYgKzEwODQsOSBAQCBlcnJvcl9tZXNzYWdlIChHc2RYcmFuZHJNYW5hZ2VyICptZ3IsIGNvbnN0IGNoYXIgKnByaW1hcnlfdGV4dCwgR0Vycm9yICplcnJvcl90bwotIAotICAgICAgICAgZ19hc3NlcnQgKGVycm9yX3RvX2Rpc3BsYXkgPT0gTlVMTCB8fCBzZWNvbmRhcnlfdGV4dCA9PSBOVUxMKTsKLSAKLS0gICAgICAgIGlmIChwcml2LT5zdGF0dXNfaWNvbikKLS0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbm90aWZ5X25vdGlmaWNhdGlvbl9uZXdfd2l0aF9zdGF0dXNfaWNvbiAocHJpbWFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90b19kaXNwbGF5ID8gZXJyb3JfdG9fZGlzcGxheS0+bWVzc2FnZSA6IHNlY29uZGFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU0RfWFJBTkRSX0lDT05fTkFNRSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+c3RhdHVzX2ljb24pOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAocHJpbWFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdG9fZGlzcGxheSA/IGVycm9yX3RvX2Rpc3BsYXktPm1lc3NhZ2UgOiBzZWNvbmRhcnlfdGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTRF9YUkFORFJfSUNPTl9OQU1FLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgICBub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAocHJpbWFyeV90ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3RvX2Rpc3BsYXkgPyBlcnJvcl90b19kaXNwbGF5LT5tZXNzYWdlIDogc2Vjb25kYXJ5X3RleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NEX1hSQU5EUl9JQ09OX05BTUUpOwotIAotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zaG93IChub3RpZmljYXRpb24sIE5VTEwpOyAvKiBOVUxMLUdFcnJvciAqLwotICNlbHNlCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9nbm9tZS1zZXR0aW5ncy1kYWVtb25fMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2V0dGluZ3MtZGFlbW9uL2dub21lLXNldHRpbmdzLWRhZW1vbl8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZGI2ZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2V0dGluZ3MtZGFlbW9uL2dub21lLXNldHRpbmdzLWRhZW1vbl8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIHNldHRpbmdzIGRhZW1vbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUFIgPSAicjciCi0KLURFUEVORFMgPSAiaW50bHRvb2wgbGlieHhmODZtaXNjIGxpYnNuZGZpbGUxIGxpYnh0c3QgZ2xpYi0yLjAgcG9sa2l0IGd0aysgZ2NvbmYgZGJ1cy1nbGliIGxpYm5vdGlmeSBsaWJnbm9tZWtiZCBsaWJ4a2xhdmllciBnbm9tZS1kb2MtdXRpbHMgZ25vbWUtZGVza3RvcCIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0Lmdub21lLm9yZy9nbm9tZS1zZXR0aW5ncy1kYWVtb247YnJhbmNoPWdub21lLTItMzIgXAotICAgIGZpbGU6Ly8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICIwMTYwZjY3MjVjZmI4NzJlMDE3ZjM5NThmMTA4NzkyYzNiODgyODcyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8gZ2xpYi0yLjAgbGliY2FuYmVycmEiCi1QQUNLQUdFQ09ORklHW3NtYXJ0Y2FyZF0gPSAiLS1lbmFibGUtc21hcnRjYXJkLXN1cHBvcnQsLS1kaXNhYmxlLXNtYXJ0Y2FyZC1zdXBwb3J0LG5zcyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAtLWVuYWJsZS1wb2xraXQgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6LUwkbGliZGlyOjpnJyAtZSAnczotSSRpbmNsdWRlZGlyOjpnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5zbyAke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTIuMC8qcGx1Z2luIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbiogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0veHNlc3Npb24qIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMi4wLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5hIgotCi0KLVBOQkxBQ0tMSVNUW2dub21lLXNldHRpbmdzLWRhZW1vbl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ25vbWVrYmQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2dub21lLXNldHRpbmdzLWRhZW1vbl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ25vbWUtZGVza3RvcCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy8wMDAxLUZpeC1nbGliLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2UxYjAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotRnJvbSA4NTg3ZTM1YWY1MmY3NzczZjYyMzYxYmUyZTcyZGRmMjg2YTU5MTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAxNSBNYXkgMjAxMiAxMzowMjowMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggZ2xpYiBpbmNsdWRlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotVXBzdHJlYW0tU3RhdHVzOiB1bmtub3duCi0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL2ludGVyZmFjZS5oICAgICAgIHwgICAgMiArLQotIHNyYy9sb2FkLWdyYXBoLmggICAgICB8ICAgIDIgKy0KLSBzcmMvbHNvZi5oICAgICAgICAgICAgfCAgICAyICstCi0gc3JjL29wZW5maWxlcy5oICAgICAgIHwgICAgMiArLQotIHNyYy9wcm9jbWFuX2dub21lc3UuaCB8ICAgIDIgKy0KLSBzcmMvdXRpbC5jcHAgICAgICAgICAgfCAgICAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlLmggYi9zcmMvaW50ZXJmYWNlLmgKLWluZGV4IDRiZGEzNWEuLmIyNmI2NzAgMTAwNjQ0Ci0tLS0gYS9zcmMvaW50ZXJmYWNlLmgKLSsrKyBiL3NyYy9pbnRlcmZhY2UuaAotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaWZuZGVmIF9QUk9DTUFOX0lOVEVSRkFDRV9IXwotICNkZWZpbmUgX1BST0NNQU5fSU5URVJGQUNFX0hfCi0gCi0tI2luY2x1ZGUgPGdsaWIvZ3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xvYWQtZ3JhcGguaCBiL3NyYy9sb2FkLWdyYXBoLmgKLWluZGV4IDYxMTFjNzguLjZlN2E1OTkgMTAwNjQ0Ci0tLS0gYS9zcmMvbG9hZC1ncmFwaC5oCi0rKysgYi9zcmMvbG9hZC1ncmFwaC5oCi1AQCAtMSw3ICsxLDcgQEAKLSAjaWZuZGVmIF9QUk9DTUFOX0xPQURfR1JBUEhfSF8KLSAjZGVmaW5lIF9QUk9DTUFOX0xPQURfR1JBUEhfSF8KLSAKLS0jaW5jbHVkZSA8Z2xpYi9ndHlwZXMuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxnbGlidG9wL2NwdS5oPgotIAotIGVudW0KLWRpZmYgLS1naXQgYS9zcmMvbHNvZi5oIGIvc3JjL2xzb2YuaAotaW5kZXggYWQ3ZjExMS4uZGE0MjBlMiAxMDA2NDQKLS0tLSBhL3NyYy9sc29mLmgKLSsrKyBiL3NyYy9sc29mLmgKLUBAIC0xLDcgKzEsNyBAQAotICNpZm5kZWYgSF9QUk9DTUFOX0xTT0ZfMTE2MTE3OTIwMgotICNkZWZpbmUgSF9QUk9DTUFOX0xTT0ZfMTE2MTE3OTIwMgotIAotLSNpbmNsdWRlIDxnbGliL2dtYWNyb3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi0gdm9pZCBwcm9jbWFuX2xzb2YoUHJvY0RhdGEgKmRhdGEpOwotZGlmZiAtLWdpdCBhL3NyYy9vcGVuZmlsZXMuaCBiL3NyYy9vcGVuZmlsZXMuaAotaW5kZXggMzhiMWNjOC4uYThiN2IwNSAxMDA2NDQKLS0tLSBhL3NyYy9vcGVuZmlsZXMuaAotKysrIGIvc3JjL29wZW5maWxlcy5oCi1AQCAtMSw3ICsxLDcgQEAKLSAjaWZuZGVmIF9PUEVORklMRVNfSF8KLSAjZGVmaW5lIF9PUEVORklMRVNfSF8KLSAKLS0jaW5jbHVkZSA8Z2xpYi9ndHlwZXMuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb2NtYW5fZ25vbWVzdS5oIGIvc3JjL3Byb2NtYW5fZ25vbWVzdS5oCi1pbmRleCBmZWMyNjUwLi40NzRjYTlhIDEwMDY0NAotLS0tIGEvc3JjL3Byb2NtYW5fZ25vbWVzdS5oCi0rKysgYi9zcmMvcHJvY21hbl9nbm9tZXN1LmgKLUBAIC0xLDcgKzEsNyBAQAotICNpZm5kZWYgSF9HTk9NRV9TWVNURU1fTU9OSVRPUl9HTk9NRVNVX0hfMTEzMjE3MTkxNwotICNkZWZpbmUgSF9HTk9NRV9TWVNURU1fTU9OSVRPUl9HTk9NRVNVX0hfMTEzMjE3MTkxNwotIAotLSNpbmNsdWRlIDxnbGliL2d0eXBlcy5oPgotKyNpbmNsdWRlIDxnbGliLmg+Ci0gCi0gZ2Jvb2xlYW4KLSBwcm9jbWFuX2dub21lc3VfY3JlYXRlX3Jvb3RfcGFzc3dvcmRfZGlhbG9nKGNvbnN0IGNoYXIgKiBtZXNzYWdlKTsKLWRpZmYgLS1naXQgYS9zcmMvdXRpbC5jcHAgYi9zcmMvdXRpbC5jcHAKLWluZGV4IDliMWM5ZjUuLjkwMDczZmUgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jcHAKLSsrKyBiL3NyYy91dGlsLmNwcAotQEAgLTEsNyArMSw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlIDxnbGliL2dpMThuLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ3N0cmluZy5oPgotKyNpbmNsdWRlIDxnbGliLmg+Ci0gI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSAKLSAjaW5jbHVkZSA8Z2xpYnRvcC9wcm9jdGltZS5oPgotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDItc3JjLXByb2NtYW4uY3BwLWluY2x1ZGUtbWFpbi1ndGttbS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMi1zcmMtcHJvY21hbi5jcHAtaW5jbHVkZS1tYWluLWd0a21tLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNjcyODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMi1zcmMtcHJvY21hbi5jcHAtaW5jbHVkZS1tYWluLWd0a21tLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGFjZmY3MTk5ODNhYTEyOTQxNDhkYzRhMzY3YzQ4OTU3ZjU1MTBlZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE3IE1heSAyMDEzIDE4OjI1OjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9wcm9jbWFuLmNwcDogaW5jbHVkZSBtYWluIGd0a21tLmgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotYWZ0ZXIgdXBkYXRlIG9mIGd0a21tIGJ1aWxkIGZhaWxlZCB3aXRoOgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9ndGttbS0yLjQvZ3RrbW0vbWFpbi5oOjMzOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gcHJvY21hbi5jcHA6MjY6Ci0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjc6IGVycm9yOiAnVmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjU0OiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjU0OiBlcnJvcjogZXhwZWN0ZWQgJ3snIGJlZm9yZSAnPCcgdG9rZW4KLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6OTI6NTQ6IGVycm9yOiBleHBlY3RlZCB1bnF1YWxpZmllZC1pZCBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjE3NDo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoxNzQ6MzA6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6MTc0OjU4OiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjIwNzo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoyMDc6MjQ6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6MjA3OjUxOiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjI3NDo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoyNzQ6MzI6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLTwuLi4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL3Byb2NtYW4uY3BwIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb2NtYW4uY3BwIGIvc3JjL3Byb2NtYW4uY3BwCi1pbmRleCBiNWMwZDBhLi5kOWI0YjNmIDEwMDY0NAotLS0tIGEvc3JjL3Byb2NtYW4uY3BwCi0rKysgYi9zcmMvcHJvY21hbi5jcHAKLUBAIC0yMyw3ICsyMyw3IEBACi0gCi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotLSNpbmNsdWRlIDxndGttbS9tYWluLmg+Ci0rI2luY2x1ZGUgPGd0a21tLmg+Ci0gI2luY2x1ZGUgPGdpb21tL3ZvbHVtZW1vbml0b3IuaD4KLSAjaW5jbHVkZSA8Z2lvbW0vaW5pdC5oPgotICNpbmNsdWRlIDxnbGliLmg+Ci0tLSAKLTEuNy40LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvUmVtb3ZlLXBrZy1jb25maWctY2hlY2stZm9yLWdub21lLWljb24tdGhlbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy9SZW1vdmUtcGtnLWNvbmZpZy1jaGVjay1mb3ItZ25vbWUtaWNvbi10aGVtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M1MTY5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy9SZW1vdmUtcGtnLWNvbmZpZy1jaGVjay1mb3ItZ25vbWUtaWNvbi10aGVtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMzZmZDJhYTIzZTcxMmYwNWYwY2NlNGExYmUzNDUzZmNmNDA1ZDAyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDE2OjI4OjE4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBwa2ctY29uZmlnIGNoZWNrIGZvciBnbm9tZS1pY29uLXRoZW1lCi0KLVRoZW1lIGlzIG5vdCByZXF1aXJlZCBmb3IgYnVpbGRpbmcsIGFuZCB0aGUgaWNvbnMgYXJlIHByb3ZpZGVkIGJ5Ci1hZHdhaXRhLWljb24tdGhlbWUgYW55d2F5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRml4ZWQgaW4gY3VycmVudCB2ZXJzaW9uc10KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDM2MDA4MjMuLjQyMjYyZjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTM3LDcgKzM3LDcgQEAgTElCWE1MX1JFUVVJUkVEPTIuMAotIFJTVkdfUkVRVUlSRUQ9Mi4xMgotIERCVVNfUkVRVUlSRUQ9MC43Ci0gCi0tUEtHX0NIRUNLX01PRFVMRVMoUFJPQ01BTiwgZ2xpYi0yLjAgPj0gJEdMSUJfUkVRVUlSRUQgZ2NvbmYtMi4wID49ICRHQ09ORl9SRVFVSVJFRCBsaWJndG9wLTIuMCA+PSAkTElCR1RPUF9SRVFVSVJFRCBsaWJ3bmNrLTEuMCA+PSAkTElCV05DS19SRVFVSVJFRCBndGsrLTIuMCA+PSAkR1RLX1JFUVVJUkVEIGdub21lLWljb24tdGhlbWUgPj0gJEdOT01FX0lDT05fVEhFTUVfUkVRVUlSRUQgZ3RrbW0tMi40ID49ICRHVEtNTV9SRVFVSVJFRCBsaWJ4bWwtMi4wID49ICRMSUJYTUxfUkVRVUlSRUQgbGlicnN2Zy0yLjAgPj0gJFJTVkdfUkVRVUlSRUQgZ2xpYm1tLTIuNCA+PSAkR0xJQk1NX1JFUVVJUkVEIGdpb21tLTIuNCA+PSAkR0lPTU1fUkVRVUlSRUQgZGJ1cy1nbGliLTEgPj0gJERCVVNfUkVRVUlSRUQpCi0rUEtHX0NIRUNLX01PRFVMRVMoUFJPQ01BTiwgZ2xpYi0yLjAgPj0gJEdMSUJfUkVRVUlSRUQgZ2NvbmYtMi4wID49ICRHQ09ORl9SRVFVSVJFRCBsaWJndG9wLTIuMCA+PSAkTElCR1RPUF9SRVFVSVJFRCBsaWJ3bmNrLTEuMCA+PSAkTElCV05DS19SRVFVSVJFRCBndGsrLTIuMCA+PSAkR1RLX1JFUVVJUkVEIGd0a21tLTIuNCA+PSAkR1RLTU1fUkVRVUlSRUQgbGlieG1sLTIuMCA+PSAkTElCWE1MX1JFUVVJUkVEIGxpYnJzdmctMi4wID49ICRSU1ZHX1JFUVVJUkVEIGdsaWJtbS0yLjQgPj0gJEdMSUJNTV9SRVFVSVJFRCBnaW9tbS0yLjQgPj0gJEdJT01NX1JFUVVJUkVEIGRidXMtZ2xpYi0xID49ICREQlVTX1JFUVVJUkVEKQotIAotIAotIEFDX0FSR19FTkFCTEUobW9yZS13YXJuaW5ncywKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZ25vbWUtc3lzdGVtLW1vbml0b3JfMi4yOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZ25vbWUtc3lzdGVtLW1vbml0b3JfMi4yOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjM5N2JmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2dub21lLXN5c3RlbS1tb25pdG9yXzIuMjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiR25vbWUgc3lzdGVtIG1vbml0b3IiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLVBSID0gInIyIgotCi1ERVBFTkRTID0gImxpYmd0b3AgZ3RrbW0gZ2xpYm1tIGdub21lLWRvYy11dGlscyBsaWJ3bmNrIGd0aysgZGJ1cy1nbGliIGxpYnJzdmcgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWUKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjNmMGJjYTliMGViYzdhMzY1NDY2ODUxY2Q1ODBkMTY3IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYjYyOGVkZmQzOWUzYTZiMzc0Y2UxMzNmMzY3ZDM1Njg0NzVlYjRlOTgxYTM2N2Y0ZjlkNjJhOTc4NGU1YWU1OSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXNyYy1wcm9jbWFuLmNwcC1pbmNsdWRlLW1haW4tZ3RrbW0uaC5wYXRjaCBcCi0gICAgZmlsZTovL1JlbW92ZS1wa2ctY29uZmlnLWNoZWNrLWZvci1nbm9tZS1pY29uLXRoZW1lLnBhdGNoIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUNYWEZMQUdTICs9ICItLXN0ZD1jKysxMSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUvYXV0b3N0YXJ0IFwKLSIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L29tZiBcCi0gICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUvaGVscCAiCi0KLVBOQkxBQ0tMSVNUW2dub21lLXN5c3RlbS1tb25pdG9yXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMTYzNS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbC8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGVybWluYWwvMDAwMS1NYWtlZmlsZS5hbS1kby1ub3QtYnVpbGQtaGVscC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc4NzRlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbC8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBkMjU0OWQzZWYwODUzNmJlNmQxNDE1MjRlMzM4MmZlZjA3ZmVhOGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAzMCBBcHIgMjAxMyAxOTo0ODoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZG8gbm90IGJ1aWxkIGhlbHAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDg5ZjdlZTQuLjMxZTExYWIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLVNVQkRJUlMgPSBzcmMgcG8gaGVscAotK1NVQkRJUlMgPSBzcmMgcG8KLSAKLSBOVUxMID0KLSAKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbF8yLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbF8yLjMwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiM2JmNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGVybWluYWxfMi4zMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBUZXJtaW5hbCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTViNTFlYmE0YmE0Y2FmZTY0MDczMjI3NTMwYzA2MWVkIgotREVQRU5EUyA9ICJndGsrIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMtZ2xpYiB2dGU5IGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoIFwKLSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc2Nyb2xsa2VlcGVyIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3NGM0NTI4ZjAwMDY3MDcyYzJiZDg2N2QxZjhmZTg0NCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjJjN2FmMjI1MDY5OGI5ZjlmNTNjNmVhYTkzMjExYzExMThjZjJjN2UyOWNiYmFjZmQxZThhNmExMDA2OWUwN2EiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJnbm9tZS1jb21tb24tc2NoZW1hcyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MzYvCi1QTkJMQUNLTElTVFtnbm9tZS10ZXJtaW5hbF0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwc18wLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwc18wLjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4MDcxMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZWN1cHNfMC4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTj0iR25vbWUgQ3VwcyBNYW5hZ2VyIgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUz0iZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjdXBzIGludGx0b29sIGxpYmdub21ldWkiCi0KLVBSID0gInIyIgotCi1pbmhlcml0IGdub21lYmFzZSBwa2djb25maWcKLQotZG9fY29tcGlsZV9hcHBlbmQgKCkgewotICAgIGNwIGxpYmdub21lY3Vwcy0xLjAucGMgbGliZ25vbWVjdXBzLTEuMC5wYy5vbGQKLSAgICBzZWQgJ3M6JHtTVEFHSU5HX0RJUl9IT1NUfTo6JyA8IGxpYmdub21lY3Vwcy0xLjAucGMub2xkID4gbGliZ25vbWVjdXBzLTEuMC5wYwotfQotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2xpYmdub21lY3Vwcy0wLjIuMy1nbGliLmgucGF0Y2ggXAotICAgIGZpbGU6Ly9saWJnbm9tZWN1cHMtMC4yLjMtY3Vwcy0xLjYucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYzQ5MjBjMTVjOWY4ODZmNzNlYTc0ZmJmZjBhZTQ4YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImUxMzBlODA5NDJiMzg2ZGUxOWEyODhhNGMxOTRmZjNkYmU5MTQwMzE1YjMxZTk4MjA1OGM4YmZmYmI2YTFkMjkiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLVBOQkxBQ0tMSVNUW2xpYmdub21lY3Vwc10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ25vbWV1aSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50LzAwMDEtY29uZmlndXJlLXVzZS1wa2djb25maWctZm9yLWZyZWV0eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzQ5ODVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGVkMzFmZDg5ZjRjNzdkODkzOTA3NzRkMjk0Mjc4OThhODViMjVhYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogRnJpLCAxIEF1ZyAyMDE0IDEzOjU4OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlIHBrZ2NvbmZpZyBmb3IgZnJlZXR5cGUKLQotVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotLS0tCi0gY29uZmlndXJlLmluIHwgMTIgKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNzI5Mjc4ZC4uZTU2OTQyOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY0LDEzICsxNjQsMTEgQEAgZG5sIENoZWNraW5nIGZvciBmcmVldHlwZTIKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gRlJFRVRZUEVfTElCUz0KLSBGUkVFVFlQRV9DRkxBR1M9Ci0tQUNfUEFUSF9QUk9HKEZSRUVUWVBFX0NPTkZJRywgZnJlZXR5cGUtY29uZmlnLCBubykKLS1pZiB0ZXN0ICJ4JEZSRUVUWVBFX0NPTkZJRyIgPSAieG5vIiA7IHRoZW4KLS0JQUNfTVNHX0VSUk9SKFlvdSBuZWVkIEZyZWVUeXBlMiAoZnJlZXR5cGUtZGV2ZWwgdiAyLnggcGFja2FnZSkgZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJnbm9tZXByaW50KQotLWVsc2UKLS0JRlJFRVRZUEVfQ0ZMQUdTPWAkRlJFRVRZUEVfQ09ORklHIC0tY2ZsYWdzYAotLQlGUkVFVFlQRV9MSUJTPWAkRlJFRVRZUEVfQ09ORklHIC0tbGlic2AKLS1maQotK1BLR19DSEVDS19NT0RVTEVTKEZSRUVUWVBFMiwgZnJlZXR5cGUyLCAKLSsgICAgRlJFRVRZUEVfQ0ZMQUdTPSIkQ0ZMQUdTICRGUkVFVFlQRTJfQ0ZMQUdTIgotKyAgICBGUkVFVFlQRV9MSUJTPSIkTElCUyAkRlJFRVRZUEUyX0xJQlMiLAotKyAgICBBQ19NU0dfRVJST1IoWyoqKiBVbmFibGUgdG8gZmluZCBGcmVlVHlwZTIgbGlicmFyeSAoaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvKV0pCi0rKQotIAotIGxpYmdub21lcHJpbnRfc2F2ZV9sZGZsYWdzPSRMREZMQUdTCi0gTERGTEFHUz0iJExERkxBR1MgJEZSRUVUWVBFX0xJQlMiCi0tLSAKLTEuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvYmlzb24zLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50L2Jpc29uMy1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWQ0MTBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvYmlzb24zLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1JbmRleDogbGliZ25vbWVwcmludC0yLjE4LjgvbGliZ25vbWVwcmludC9ncmFtbWFyLnkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJnbm9tZXByaW50LTIuMTguOC5vcmlnL2xpYmdub21lcHJpbnQvZ3JhbW1hci55Ci0rKysgbGliZ25vbWVwcmludC0yLjE4LjgvbGliZ25vbWVwcmludC9ncmFtbWFyLnkKLUBAIC05OSw3ICs5OSw3IEBAIGdub21lX3ByaW50X2ZpbHRlcl9wYXJzZV9wcm9wIChHbm9tZVByaW4KLSB9Ci0gCi0gc3RhdGljIGludCB5eWxleCAodm9pZCAqbHZhbHApOwotLXN0YXRpYyBpbnQgeXllcnJvciAoY29uc3QgY2hhciAqcyk7Ci0rc3RhdGljIGludCB5eWVycm9yIChncmFwaF90ICpnLCBjb25zdCBjaGFyICpzKTsKLSAlfQotIAotICV1bmlvbiB7Ci1AQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBpbnQgeXllcnJvciAoY29uc3QgY2hhciAqcyk7Ci0gJXR5cGUgPHA+IHBvb2wKLSAKLSAlcHVyZV9wYXJzZXIKLSslcGFyc2UtcGFyYW0geyBncmFwaF90ICpncmFwaCB9Ci0gCi0gJXN0YXJ0IGdyYXBoCi0gJSUKLUBAIC0xODUsNyArMTg2LDcgQEAgZ3JhcGg6IGZpbHRlciB7Ci0gJSUKLSAKLSBzdGF0aWMgaW50Ci0teXllcnJvciAoY29uc3QgY2hhciAqcykKLSt5eWVycm9yIChncmFwaF90ICpnLCBjb25zdCBjaGFyICpzKQotIHsKLSAJcmV0dXJuIC0xOwotIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvZml4LmluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9maXguaW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMjM1YTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9maXguaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1kaWZmIC11TnIgbGliZ25vbWVwcmludC0yLjE4Ljcub3JpZy9saWJnbm9tZXByaW50L21vZHVsZXMvY3Vwcy9nbm9tZS1wcmludC1jdXBzLXRyYW5zcG9ydC5jIGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvbW9kdWxlcy9jdXBzL2dub21lLXByaW50LWN1cHMtdHJhbnNwb3J0LmMKLS0tLSBsaWJnbm9tZXByaW50LTIuMTguNy5vcmlnL2xpYmdub21lcHJpbnQvbW9kdWxlcy9jdXBzL2dub21lLXByaW50LWN1cHMtdHJhbnNwb3J0LmMJMjAwOS0wNC0xOSAxOTo0NTozNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJnbm9tZXByaW50LTIuMTguNy9saWJnbm9tZXByaW50L21vZHVsZXMvY3Vwcy9nbm9tZS1wcmludC1jdXBzLXRyYW5zcG9ydC5jCTIwMTItMTItMjMgMTI6MzQ6NTIuMDU4NjQzNTM3ICswMTAwCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gI2luY2x1ZGUgPGN1cHMvY3Vwcy5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9mcmVldHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvZnJlZXR5cGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMjdlY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9mcmVldHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVzZSBwcm9wZXIgbWV0aG9kIHRvIGluY2x1ZGUgZnJlZXR5cGUgaGVhZGVycwotCi1GcmVlVHlwZSB3YW50cyB0byB1c2UgdGhlc2Ugc3BlY2lhbCBtYWNyb3MgdG8gaW5jbHVkZSBpdHMgQVBJcwotc28gYmUgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvZ25vbWUtZm9udC1mYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJnbm9tZXByaW50LTIuMTguNy5vcmlnL2xpYmdub21lcHJpbnQvZ25vbWUtZm9udC1mYWNlLmMKLSsrKyBsaWJnbm9tZXByaW50LTIuMTguNy9saWJnbm9tZXByaW50L2dub21lLWZvbnQtZmFjZS5jCi1AQCAtMzYsNyArMzYsOSBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0tI2luY2x1ZGUgPGZyZWV0eXBlL2Z0b3V0bG4uaD4KLSsjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KLSsjaW5jbHVkZSBGVF9GUkVFVFlQRV9ICi0rCi0gCi0gI2luY2x1ZGUgPGxpYmdub21lcHJpbnQvZ25vbWUtcHJpbnQtcHJpdmF0ZS5oPgotICNpbmNsdWRlIDxsaWJnbm9tZXByaW50L2dub21lLWZvbnQtcHJpdmF0ZS5oPgotSW5kZXg6IGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvZ25vbWUtcmZvbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmdub21lcHJpbnQtMi4xOC43Lm9yaWcvbGliZ25vbWVwcmludC9nbm9tZS1yZm9udC5jCi0rKysgbGliZ25vbWVwcmludC0yLjE4LjcvbGliZ25vbWVwcmludC9nbm9tZS1yZm9udC5jCi1AQCAtMjgsOCArMjgsOCBAQAotIAotICNpbmNsdWRlIDxmdDJidWlsZC5oPgotICNpbmNsdWRlIEZUX0ZSRUVUWVBFX0gKLS0jaW5jbHVkZSA8ZnJlZXR5cGUvZnRnbHlwaC5oPgotLSNpbmNsdWRlIDxmcmVldHlwZS9mdGJib3guaD4KLSsjaW5jbHVkZSBGVF9HTFlQSF9ICi0rI2luY2x1ZGUgRlRfQkJPWF9ICi0gI2luY2x1ZGUgPGxpYmFydF9sZ3BsL2FydF9taXNjLmg+Ci0gI2luY2x1ZGUgPGxpYmFydF9sZ3BsL2FydF9hZmZpbmUuaD4KLSAjaW5jbHVkZSA8bGliYXJ0X2xncGwvYXJ0X3ZwYXRoLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50XzIuMTguOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnRfMi4xOC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDYyYTRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnRfMi4xOC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIGxpYnhtbDIgbGliZ25vbWVjdXBzIGdsaWItMi4wIHBhbmdvIGxpYmFydC1sZ3BsIGZvbnRjb25maWcgcG9wdCBnbm9tZS1jb21tb24gZnJlZXR5cGUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGdub21lYmFzZQotCi1TUkNfVVJJICs9ICJmaWxlOi8vZml4LmluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9mcmVldHlwZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Jpc29uMy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjNiMDVmZmI1Mzg2ZTEzMTQ4N2M2YWYzMGY0YzU2YWMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxMDM0ZWM4NjUxMDUxZjg0ZDI0MjRlN2ExZGE2MWM1MzA0MjJjYzIwY2U1YjJkOWUxMDdlMWU0Njc3OGQ5NjkxIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vbW9kdWxlcy8uZGVidWcgXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS9tb2R1bGVzLyovLmRlYnVnIFwKLSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS9tb2R1bGVzLyouYSBcCi0gICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9L21vZHVsZXMvKi8qLmEgXAotIgotCi1QTkJMQUNLTElTVFtsaWJnbm9tZXByaW50XSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gbGliZ25vbWVjdXBzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTRkMmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dudW1lcmljL2dudW1lcmljLzAwMDEtY29uZmlndXJlLmluLWRyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtcmVwbGFjZS10aGVtLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gZGU1ZjBhNTM1ZDZlYTE5MzJkMmM3ZGU1M2JkMzM1MTBjODY4MmVlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAxNjozNDowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IGRyb3AgaW50cm9zcGVjdGlvbiBtYWNyb3MsIHJlcGxhY2UgdGhlbSB3aXRoIGEKLSBzdGFuZGFyZCBvbmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDU3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDhlMWFhMzcuLjMwODY1MDMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTkzNCw2MyArOTM0LDggQEAgQUNfU1VCU1QoTU9OT19DRkxBR1MpCi0gQUNfU1VCU1QoTU9OT19MSUJTKQotIF0pCi0gCi0tIyBHT2JqZWN0IEludHJvc3BlY3Rpb24KLS1HSVJfUkVRPTEuMC4wCi0tQUNfQVJHX0VOQUJMRShpbnRyb3NwZWN0aW9uLAotLSAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaW50cm9zcGVjdGlvbls9QDw6QG5vL2F1dG8veWVzQDo+QF1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbRW5hYmxlIGludHJvc3BlY3Rpb24gZm9yIHRoaXMgYnVpbGRdKSwsIAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlX2ludHJvc3BlY3Rpb249bm9dKQotLQotLUFDX01TR19DSEVDS0lORyhbZm9yIGdvYmplY3QtaW50cm9zcGVjdGlvbl0pCi0tCi0tZG5sIHByZXNlbmNlL3ZlcnNpb24gY2hlY2tpbmcKLS1BU19DQVNFKFskZW5hYmxlX2ludHJvc3BlY3Rpb25dLAotLVtub10sIFsKLS0gICAgZm91bmRfaW50cm9zcGVjdGlvbj0ibm8gKGRpc2FibGVkLCB1c2UgLS1lbmFibGUtaW50cm9zcGVjdGlvbiB0byBlbmFibGUpIgotLV0sCi0tW3llc10sWwotLSAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wXSwsCi0tICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wIGlzIG5vdCBpbnN0YWxsZWRdKSkKLS0gICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSAkR0lSX1JFUV0sCi0tICAgICAgICAgICAgICAgICAgICAgZm91bmRfaW50cm9zcGVjdGlvbj15ZXMsCi0tICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtZb3UgbmVlZCB0byBoYXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbiA+PSAkMSBpbnN0YWxsZWQgdG8gYnVpbGQgQUNfUEFDS0FHRV9OQU1FXSkpCi0tXSwKLS1bYXV0b10sWwotLSAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wID49ICRHSVJfUkVRXSwgZm91bmRfaW50cm9zcGVjdGlvbj15ZXMsIGZvdW5kX2ludHJvc3BlY3Rpb249bm8pCi0tZG5sIENhbm9uaWNhbGl6ZSBlbmFibGVfaW50cm9zcGVjdGlvbgotLWVuYWJsZV9pbnRyb3NwZWN0aW9uPSRmb3VuZF9pbnRyb3NwZWN0aW9uCi0tXSwKLS1bCQotLSAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIC0tZW5hYmxlLWludHJvc3BlY3Rpb24sIHNob3VsZCBiZSBvbmUgb2YgQDw6QG5vL2F1dG8veWVzQDo+QF0pCi0tXSkKLStHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzEuNDYuMF0pCi0gCi0tQUNfTVNHX1JFU1VMVChbJGZvdW5kX2ludHJvc3BlY3Rpb25dKQotLQotLUlOVFJPU1BFQ1RJT05fU0NBTk5FUj0KLS1JTlRST1NQRUNUSU9OX0NPTVBJTEVSPQotLUlOVFJPU1BFQ1RJT05fR0VORVJBVEU9Ci0tSU5UUk9TUEVDVElPTl9HSVJESVI9Ci0tSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotLWlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLS0gICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPSIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9dHlwZWxpYmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKSIKLS0gICBJTlRST1NQRUNUSU9OX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYC9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLS1maQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0VORVJBVEUpCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HSVJESVIpCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9UWVBFTElCRElSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ0ZMQUdTKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTElCUykKLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX01BS0VGSUxFKQotLQotLUFNX0NPTkRJVElPTkFMKEhBVkVfSU5UUk9TUEVDVElPTiwgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIikKLSBkbmwgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGluc3RhbGwgZGlyZWN0b3JpZXMgZm9yIGRpc3RjaGVjawotIEFDX0FSR19XSVRIKFtnaXItZGlyXSwKLSAJQVNfSEVMUF9TVFJJTkcoCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dudW1lcmljL2dudW1lcmljL2RvLW5vdC11c2Utc3JjZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvZG8tbm90LXVzZS1zcmNkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjODFiMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvZG8tbm90LXVzZS1zcmNkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1JbmRleDogZ251bWVyaWMtMS4xMi4wL3Rlc3QvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVtZXJpYy0xLjEyLjAub3JpZy90ZXN0L01ha2VmaWxlLmFtCTIwMTEtMDUtMTcgMTc6NTQ6MjQuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ251bWVyaWMtMS4xMi4wL3Rlc3QvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAyMDoyODoxOS45MjA2MTg1OTYgLTA3MDAKLUBAIC0yNSw3ICsyNSw5IEBACi0gIwotICMgOTB4eDogTWlzYyBzdHVmZi4KLSAKLS1URVNUUyA9ICQoc29ydCAkKHdpbGRjYXJkICQoc3JjZGlyKS90WzAtOV1bMC05XVswLTldWzAtOV0tKi5wbCkpCi0rVEVTVFNfRVhURU5TSU9OUz0ucGwKLStURVNUUyA9IEBhdXRvX2ZpbmRfdGVzdHNACi0rCi0gU1VQUFMgPSBjb21tb24uc3VwcCBjb21tb25kb3RzLnN1cHAgZ3VpLnN1cHAgdDgwMDMtdmFsZ3JpbmQtcGRmLnN1cHAKLSAKLSBpbXBvcnQtZGI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbnVtZXJpYy9nbnVtZXJpY18xLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbnVtZXJpYy9nbnVtZXJpY18xLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZDBmZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWNfMS4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiB8IEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmUwZGU0MTdhZjc4ZGQzNDA1NTg4MTBkMWNlZDUyZTYiCi1TRUNUSU9OID0gIngxMS91dGlscyIKLVMgPSAiJHtXT1JLRElSfS9nbnVtZXJpYy0ke1BWfSIKLURFUEVORFMgPSAiZ2RrLXBpeGJ1ZiBsaWJnc2YgZ3RrKzMgbGlieG1sMiBsaWJnbGFkZSBsaWJhcnQtbGdwbCBpbnRsdG9vbC1uYXRpdmUgbGliZ25vbWVjYW52YXMgbGliZ25vbWVwcmludCBsaWJib25vYm91aSBvcmJpdDItbmF0aXZlIGdvZmZpY2UiCi1TVU1NQVJZID0gIkdudW1lcmljIHNwcmVhZHNoZWV0IGZvciBHTk9NRSIKLQotR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKLQotaW5oZXJpdCBnbm9tZSBweXRob25uYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kby1ub3QtdXNlLXNyY2Rpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZmQ4N2NjYTk1MzM0YjVkOGFjOTIyOTg5NjcwZmUyNyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAzN2I1M2Q5MDllNWQxNDU0YjJhZmRhOGM0ZmIxZTc4MzhlMjYwMzQzZTM2ZDRlMzYyNDVmNGE1ZDBlMDQxMTEiCi0KLQotRVhUUkFfT0VDT05GPSIgLS13aXRob3V0LXBlcmwgIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJnbnVtZXJpYy1wbHVnaW4tKiIKLVBBQ0tBR0VTICs9ICJsaWJzcHJlYWRzaGVldCBsaWJzcHJlYWRzaGVldC1kZXYgZ251bWVyaWMtZ29mZmljZSBnbnVtZXJpYy1nb2ZmaWNlLWRiZyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ251bWVyaWMvJHtQVn0vcGx1Z2lucy8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9wa2djb25maWciCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYnNwcmVhZHNoZWV0LmxhIgotRklMRVNfbGlic3ByZWFkc2hlZXQgPSAiJHtsaWJkaXJ9L2xpYnNwcmVhZHNoZWV0LSR7UFZ9LnNvIgotRklMRVNfbGlic3ByZWFkc2hlZXQtZGV2ID0gIiR7bGliZGlyfS9saWJzcHJlYWRzaGVldC5zbyIKLUZJTEVTX2dudW1lcmljLWdvZmZpY2UtZGJnICs9ICIke2xpYmRpcn0vZ29mZmljZS8qL3BsdWdpbnMvZ251bWVyaWMvLmRlYnVnIgotRklMRVNfZ251bWVyaWMtZ29mZmljZSA9ICIke2xpYmRpcn0vZ29mZmljZS8qL3BsdWdpbnMvZ251bWVyaWMvKiIKLQotIyBUaGlzIGhhY2sgd29ya3MgYXJvdW5kIHRoZSBwcm9ibGVtIG1lbnRpb25lZCBoZXJlOgotIyBodHRwczovL21haWwuZ25vbWUub3JnL2FyY2hpdmVzL2dudW1lcmljLWxpc3QvMjAxMC1GZWJydWFyeS9tc2cwMDAwNi5odG1sCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pICR7Qn0vZG9jL0MvTWFrZWZpbGUgLWUgJ3MvXHRmb3IgZmlsZSBpbiAkKG9tZmZpbGUpOyBkby9cdC1mb3IgZmlsZSBpbiAkKG9tZmZpbGUpOyBkby8nCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBnbnVtZXJpY19saWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9L2dudW1lcmljLyR7UFZ9L3BsdWdpbnMnLCBkKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ251bWVyaWNfbGliZGlyLCAnXiguKikvLiokJywKLSAgICAgICAgb3V0cHV0X3BhdHRlcm49J2dudW1lcmljLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdHbnVtZXJpYyBwbHVnaW4gJXMnLAotICAgICAgICBleHRyYV9kZXBlbmRzPScnLAotICAgICAgICByZWN1cnNpdmU9VHJ1ZSwKLSAgICAgICAgcHJlcGVuZD1UcnVlKQotfQotCi1QTkJMQUNLTElTVFtnbnVtZXJpY10gPz0gIkRlcGVuZHMgb24gYnJva2VuIGxpYmdub21lcHJpbnQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGh1bWIvZmlsZXMvMDAwMS1Ecm9wLWhlbHAtZGlyZWN0b3J5LWZyb20tYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGh1bWIvZmlsZXMvMDAwMS1Ecm9wLWhlbHAtZGlyZWN0b3J5LWZyb20tYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMTY5NjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzLzAwMDEtRHJvcC1oZWxwLWRpcmVjdG9yeS1mcm9tLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA0OGNiODc4Y2I3MjRlN2E1MDkyNjBmMDE0ZGI2MzY1NTEwYjhiNTQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE3IE1heSAyMDE2IDE0OjA1OjI5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERyb3AgaGVscCBkaXJlY3RvcnkgZnJvbSBidWlsZAotCi1JdCBoYXJkY29kZXMgdGhlIHVzZSBvZiB4bWwycG8gdG9vbCBmb3JtIGdub21lLWRvYy11dGlscwotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggZDA1Njg3NS4uM2ZjNGE0MSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tU1VCRElSUyA9IG00IGNvcHktbi1wYXN0ZSBkYXRhIHBvIGd0aHVtYiBleHRlbnNpb25zIHRlc3RzIGhlbHAKLStTVUJESVJTID0gbTQgY29weS1uLXBhc3RlIGRhdGEgcG8gZ3RodW1iIGV4dGVuc2lvbnMgdGVzdHMKLSAKLSBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotIEFNQ0ZMQUdTID0gLWZQSUMgLURQSUMKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNlNWM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0aHVtYi9maWxlcy9wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1Gcm9tIDM0OTY5Y2RlMWRjYjc3NDBiNGE3YzNiNmUzZDA0ZDQ4MWU1OTgwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAzMSBKdWwgMjAxMiAxNzoyNjoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogRml4IHBhcmFsbGVsIGJ1aWxkIHByb2JsZW1zIHdpdGggZW51bSBnZW5lcmF0aW9uCi0KLVRoaXMgaXMgYSBiYWNrcG9ydCBmcm9tIGEgcGF0Y2ggYWdhaW5zdCBtYXN0ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwOTI1XQotLS0tCi0gZXh0ZW5zaW9ucy9maWxlX3Rvb2xzL01ha2VmaWxlLmFtICAgIHwgICAxMCArKysrLS0tLS0tCi0gZXh0ZW5zaW9ucy9pbXBvcnRlci9NYWtlZmlsZS5hbSAgICAgIHwgICAxMCArKysrLS0tLS0tCi0gZXh0ZW5zaW9ucy9waXhidWZfc2F2ZXJzL01ha2VmaWxlLmFtIHwgICAxMCArKysrLS0tLS0tCi0gZ3RodW1iL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysrLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbQotaW5kZXggNzc4NWVmZi4uZDcwYThhNSAxMDA2NDQKLS0tLSBhL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbQotKysrIGIvZXh0ZW5zaW9ucy9maWxlX3Rvb2xzL01ha2VmaWxlLmFtCi1AQCAtMjQsMTcgKzI0LDE2IEBAIEhFQURFUl9GSUxFUyA9IAkJCQlcCi0gCWd0aC1maWxlLXRvb2wtdW5kby5oCQlcCi0gCXByZWZlcmVuY2VzLmgKLSAKLS1lbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKSAkKEdMSUJfTUtFTlVNUykKLStlbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgRU5VTV9UWVBFU19IXG4jZGVmaW5lIEVOVU1fVFlQRVNfSFxuXG4jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cblxuR19CRUdJTl9ERUNMU1xuIiBcCi0gCQktLWZwcm9kICIvKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuIiBcCi0gCQktLXZoZWFkICJHVHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZCk7XG4jZGVmaW5lIEdUSF9UWVBFX0BFTlVNU0hPUlRAIChAZW51bV9uYW1lQF9nZXRfdHlwZSgpKVxuIiBcCi0gCQktLWZ0YWlsICJHX0VORF9ERUNMU1xuXG4jZW5kaWYgLyogRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmggfHwgY3AgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmggKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCApCi0gCi0tZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZW51bS10eXBlcy5oCi0rZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykKLSAJJChBTV9WX0dFTikoICQoR0xJQl9NS0VOVU1TKSBcCi0gCQktLWZoZWFkICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiIgXAotIAkJLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuI2luY2x1ZGUgXCJAZmlsZW5hbWVAXCIiIFwKLUBAIC00Miw4ICs0MSw3IEBAIGVudW0tdHlwZXMuYzogJChIRUFERVJfRklMRVMpIGVudW0tdHlwZXMuaAotIAkJLS12cHJvZCAiICAgICAgeyBAVkFMVUVOQU1FQCwgXCJAVkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKLSAJCS0tdnRhaWwgIiAgICAgIHsgMCwgTlVMTCwgTlVMTCB9XG4gICAgfTtcbiAgICBldHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyAoXCJARW51bU5hbWVAXCIsIHZhbHVlcyk7XG4gIH1cbiAgcmV0dXJuIGV0eXBlO1xufVxuIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmMgfHwgY3AgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmMgKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyApCi0gCi0gbGliZmlsZV90b29sc19sYV9TT1VSQ0VTID0gCQlcCi0gCSQoRU5VTV9UWVBFUykJCQlcCi1kaWZmIC0tZ2l0IGEvZXh0ZW5zaW9ucy9pbXBvcnRlci9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvaW1wb3J0ZXIvTWFrZWZpbGUuYW0KLWluZGV4IDI5ZTdmMmMuLjA3YzFlYmEgMTAwNjQ0Ci0tLS0gYS9leHRlbnNpb25zL2ltcG9ydGVyL01ha2VmaWxlLmFtCi0rKysgYi9leHRlbnNpb25zL2ltcG9ydGVyL01ha2VmaWxlLmFtCi1AQCAtMTQsMTcgKzE0LDE2IEBAIEhFQURFUl9GSUxFUyA9IAkJCQkJXAotIAlwcmVmZXJlbmNlcy5oCQkJCVwKLSAJdXRpbHMuaAotIAotLWd0aC1pbXBvcnQtZW51bS10eXBlcy5oOiAkKEhFQURFUl9GSUxFUykgJChHTElCX01LRU5VTVMpCi0rZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgRU5VTV9UWVBFU19IXG4jZGVmaW5lIEVOVU1fVFlQRVNfSFxuXG4jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cblxuR19CRUdJTl9ERUNMU1xuIiBcCi0gCQktLWZwcm9kICIvKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuIiBcCi0gCQktLXZoZWFkICJHVHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZCk7XG4jZGVmaW5lIEdUSF9UWVBFX0BFTlVNU0hPUlRAIChAZW51bV9uYW1lQF9nZXRfdHlwZSgpKVxuIiBcCi0gCQktLWZ0YWlsICJHX0VORF9ERUNMU1xuXG4jZW5kaWYgLyogRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaCB8fCBjcCB4Z2VuLSQoQEYpIGd0aC1pbXBvcnQtZW51bS10eXBlcy5oICkgXAotLQkmJiBybSAtZiB4Z2VuLSQoQEYpICkKLSsJJiYgbXYgLWYgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaCApCi0gCi0tZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaAotK2d0aC1pbXBvcnQtZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykKLSAJJChBTV9WX0dFTikoICQoR0xJQl9NS0VOVU1TKSBcCi0gCQktLWZoZWFkICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiIgXAotIAkJLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuI2luY2x1ZGUgXCJAZmlsZW5hbWVAXCIiIFwKLUBAIC0zMiw4ICszMSw3IEBAIGd0aC1pbXBvcnQtZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmgKLSAJCS0tdnByb2QgIiAgICAgIHsgQFZBTFVFTkFNRUAsIFwiQFZBTFVFTkFNRUBcIiwgXCJAdmFsdWVuaWNrQFwiIH0sIiBcCi0gCQktLXZ0YWlsICIgICAgICB7IDAsIE5VTEwsIE5VTEwgfVxuICAgIH07XG4gICAgZXR5cGUgPSBnX0B0eXBlQF9yZWdpc3Rlcl9zdGF0aWMgKFwiQEVudW1OYW1lQFwiLCB2YWx1ZXMpO1xuICB9XG4gIHJldHVybiBldHlwZTtcbn1cbiIgXAotIAkJJF4+IHhnZW4tJChARikgXAotLQkmJiAoY21wIC1zIHhnZW4tJChARikgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmMgfHwgY3AgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuYyApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmMgKQotIAotIGxpYmltcG9ydGVyX2xhX1NPVVJDRVMgPSAJCQlcCi0gCSQoRU5VTV9UWVBFUykJCQkJXAotZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbQotaW5kZXggYmZlOWYzNC4uNDc2NGMzMiAxMDA2NDQKLS0tLSBhL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbQotKysrIGIvZXh0ZW5zaW9ucy9waXhidWZfc2F2ZXJzL01ha2VmaWxlLmFtCi1AQCAtMTAsMTcgKzEwLDE2IEBAIEVOVU1fVFlQRVMgPQkJCQlcCi0gSEVBREVSX0ZJTEVTID0gCQkJCVwKLSAJcHJlZmVyZW5jZXMuaAotIAotLWVudW0tdHlwZXMuaDogJChIRUFERVJfRklMRVMpICQoR0xJQl9NS0VOVU1TKQotK2VudW0tdHlwZXMuaDogJChIRUFERVJfRklMRVMpCi0gCSQoQU1fVl9HRU4pKCAkKEdMSUJfTUtFTlVNUykgXAotIAkJLS1maGVhZCAiI2lmbmRlZiBFTlVNX1RZUEVTX0hcbiNkZWZpbmUgRU5VTV9UWVBFU19IXG5cbiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG5HX0JFR0lOX0RFQ0xTXG4iIFwKLSAJCS0tZnByb2QgIi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4iIFwKLSAJCS0tdmhlYWQgIkdUeXBlIEBlbnVtX25hbWVAX2dldF90eXBlICh2b2lkKTtcbiNkZWZpbmUgR1RIX1RZUEVfQEVOVU1TSE9SVEAgKEBlbnVtX25hbWVAX2dldF90eXBlKCkpXG4iIFwKLSAJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiNlbmRpZiAvKiBFTlVNX1RZUEVTX0ggKi8iIFwKLSAJCSRePiB4Z2VuLSQoQEYpIFwKLS0JJiYgKGNtcCAtcyB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCB8fCBjcCB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZW51bS10eXBlcy5oICkKLSAKLS1lbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKSBlbnVtLXR5cGVzLmgKLStlbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIiBcCi0gCQktLWZwcm9kICJcbi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4jaW5jbHVkZSBcIkBmaWxlbmFtZUBcIiIgXAotQEAgLTI4LDggKzI3LDcgQEAgZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZW51bS10eXBlcy5oCi0gCQktLXZwcm9kICIgICAgICB7IEBWQUxVRU5BTUVALCBcIkBWQUxVRU5BTUVAXCIsIFwiQHZhbHVlbmlja0BcIiB9LCIgXAotIAkJLS12dGFpbCAiICAgICAgeyAwLCBOVUxMLCBOVUxMIH1cbiAgICB9O1xuICAgIGV0eXBlID0gZ19AdHlwZUBfcmVnaXN0ZXJfc3RhdGljIChcIkBFbnVtTmFtZUBcIiwgdmFsdWVzKTtcbiAgfVxuICByZXR1cm4gZXR5cGU7XG59XG4iIFwKLSAJCSRePiB4Z2VuLSQoQEYpIFwKLS0JJiYgKGNtcCAtcyB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyB8fCBjcCB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZW51bS10eXBlcy5jICkKLSAKLSBsaWJwaXhidWZfc2F2ZXJzX2xhX1NPVVJDRVMgPSAJXAotIAkkKEVOVU1fVFlQRVMpCQlcCi1kaWZmIC0tZ2l0IGEvZ3RodW1iL01ha2VmaWxlLmFtIGIvZ3RodW1iL01ha2VmaWxlLmFtCi1pbmRleCBlOWUzODVlLi4yZjE0ZTAzIDEwMDY0NAotLS0tIGEvZ3RodW1iL01ha2VmaWxlLmFtCi0rKysgYi9ndGh1bWIvTWFrZWZpbGUuYW0KLUBAIC0yOTYsMTcgKzI5NiwxNiBAQCBndGh1bWJfQ0ZMQUdTID0JCQkJCQkJXAotIAktREdUSFVNQl9FWFRFTlNJT05TX0RJUj1cIiQoZXh0ZW5zaW9uc19kaXIpXCIJCVwKLSAJJChOVUxMKQotIAotLWd0aC1lbnVtLXR5cGVzLmg6ICQoUFVCTElDX0hFQURFUl9GSUxFUykgJChHTElCX01LRU5VTVMpCi0rZ3RoLWVudW0tdHlwZXMuaDogJChQVUJMSUNfSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgR1RIX0VOVU1fVFlQRVNfSFxuI2RlZmluZSBHVEhfRU5VTV9UWVBFU19IXG5cbiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG5HX0JFR0lOX0RFQ0xTXG4iIFwKLSAJCS0tZnByb2QgIi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4iIFwKLSAJCS0tdmhlYWQgIkdUeXBlIEBlbnVtX25hbWVAX2dldF90eXBlICh2b2lkKTtcbiNkZWZpbmUgR1RIX1RZUEVfQEVOVU1TSE9SVEAgKEBlbnVtX25hbWVAX2dldF90eXBlKCkpXG4iIFwKLSAJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiNlbmRpZiAvKiBHVEhfRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBndGgtZW51bS10eXBlcy5oIHx8IGNwIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuaCApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuaCApCi0gCi0tZ3RoLWVudW0tdHlwZXMuYzogJChQVUJMSUNfSEVBREVSX0ZJTEVTKSBndGgtZW51bS10eXBlcy5oCi0rZ3RoLWVudW0tdHlwZXMuYzogJChQVUJMSUNfSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIiBcCi0gCQktLWZwcm9kICJcbi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4jaW5jbHVkZSBcIkBmaWxlbmFtZUBcIiIgXAotQEAgLTMxNCw4ICszMTMsNyBAQCBndGgtZW51bS10eXBlcy5jOiAkKFBVQkxJQ19IRUFERVJfRklMRVMpIGd0aC1lbnVtLXR5cGVzLmgKLSAJCS0tdnByb2QgIiAgICAgIHsgQFZBTFVFTkFNRUAsIFwiQFZBTFVFTkFNRUBcIiwgXCJAdmFsdWVuaWNrQFwiIH0sIiBcCi0gCQktLXZ0YWlsICIgICAgICB7IDAsIE5VTEwsIE5VTEwgfVxuICAgIH07XG4gICAgZXR5cGUgPSBnX0B0eXBlQF9yZWdpc3Rlcl9zdGF0aWMgKFwiQEVudW1OYW1lQFwiLCB2YWx1ZXMpO1xuICB9XG4gIHJldHVybiBldHlwZTtcbn1cbiIgXAotIAkJJF4+IHhnZW4tJChARikgXAotLQkmJiAoY21wIC1zIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuYyB8fCBjcCB4Z2VuLSQoQEYpIGd0aC1lbnVtLXR5cGVzLmMgKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGd0aC1lbnVtLXR5cGVzLmMgKQotIAotIGd0aC1tYXJzaGFsLmg6IGd0aC1tYXJzaGFsLmxpc3QgJChHTElCX0dFTk1BUlNIQUwpCi0gCSQoQU1fVl9HRU4pKCAkKEdMSUJfR0VOTUFSU0hBTCkgJChzcmNkaXIpL2d0aC1tYXJzaGFsLmxpc3QgLS1oZWFkZXIgLS1wcmVmaXg9Z3RoX21hcnNoYWwgPiAkQCApCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0aHVtYi9ndGh1bWJfMi4xMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2d0aHVtYl8yLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZDNkZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2d0aHVtYl8yLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gImdUaHVtYiBpcyBhbiBpbWFnZSB2aWV3ZXIgYW5kIGJyb3dzZXIgZm9yIHRoZSBHTk9NRSBEZXNrdG9wIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1ERVBFTkRTID0gImdub21lLWNvbW1vbi1uYXRpdmUgZ2xpYi0yLjAgZ3RrKyBsaWJ4bWwyIGdub21lLWRvYy11dGlscyBsaWJ1bmlxdWUgZ2NvbmYgbGlicG5nIGdzdHJlYW1lciBqcGVnIHRpZmYgZ3N0LXBsdWdpbnMtYmFzZSBpbnRsdG9vbC1uYXRpdmUgZ2NvbmYtbmF0aXZlIgotCi1QUiA9ICJyNCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nbm9tZS1rZXlyaW5nIC0tZGlzYWJsZS1saWJzb3VwIC0tZGlzYWJsZS1leGl2MiAtLWRpc2FibGUtY2x1dHRlciIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTdmYzEzMjIxYjBjNWQ4MGMyN2EyZTI1YTNhM2FjNmYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZjgwOTY5NTIzMGFiODg5MmEwNzhiZTQ1NGE0MmFkZTg2NTc1NGM3MmVjMWRhN2MzZDc0ZDQzMTBkZTU0ZjFkIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1oZWxwLWRpcmVjdG9yeS1mcm9tLWJ1aWxkLnBhdGNoIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtTfS9tNC9nbm9tZS1kb2MtdXRpbHMubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvKi5hCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vZXh0ZW5zaW9ucy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvKi5leHRlbnNpb24iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vZXh0ZW5zaW9ucy8qLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvLmRlYnVnLyIKLQotCi1QTkJMQUNLTElTVFtndGh1bWJdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdzdHJlYW1lciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjI4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndmZzL2d2ZnNfMS4yOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmI3NTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjI4LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJndmZzIGlzIGEgdXNlcnNwYWNlIHZpcnR1YWwgZmlsZXN5c3RlbSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDVkZjM4ZGQ3N2MzNWVjODQzMWYyMTI0MTBhMzMyOWUiCi0KLWluaGVyaXQgZ25vbWUgYmFzaC1jb21wbGV0aW9uCi0KLURFUEVORFMgKz0gImxpYnNlY3JldCBnbGliLTIuMCBnY29uZiBpbnRsdG9vbC1uYXRpdmUgbGliZ3VkZXYgdWRpc2tzMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMjM5OWExYTIxN2RkNTAzMGU4ODMwYzdlN2M4MTNjMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjQ1OGM0Y2I2ODU3MGY2ZWY0YTllMTUyOTk1YzYyZDAwNTdjM2UwYTA3ZWQ2NGQ4NGM3MjAwY2RkMjJmMGJkMTciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1nZHUgXAotICAgIC0tZW5hYmxlLXVkaXNrczIgXAotICAgIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIFwKLSAgICAtLXdpdGgtYXJjaGl2ZS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgLS13aXRoLWFyY2hpdmUtbGlicz0ke1NUQUdJTkdfTElCRElSfSBcCi0iCi0KLVBBQ0tBR0VTID0rICJndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9nbGliLTIuMCBcCi0gICAgJHtkYXRhZGlyfS9HQ29uZiBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKLSAgICAke2xpYmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotUkRFUEVORFNfJHtQTn0gPSAidWRpc2tzMiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnLyoiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIgotCi1GSUxFU19ndmZzZC1mdHAgPSAiJHtsaWJleGVjZGlyfS9ndmZzZC1mdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9mdHAubW91bnQiCi1GSUxFU19ndmZzZC1zZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2Qtc2Z0cCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3NmdHAubW91bnQiCi1GSUxFU19ndmZzZC10cmFzaCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXRyYXNoICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvdHJhc2gubW91bnQiCi0KLVJSRUNPTU1FTkRTX2d2ZnNkLWZ0cCArPSAib3BlbnNzaC1zZnRwIG9wZW5zc2gtc3NoIgotCi1QQUNLQUdFQ09ORklHID89ICJsaWJncGhvdG8yICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWZjXSA9ICItLWVuYWJsZS1hZmMsIC0tZGlzYWJsZS1hZmMsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0tZW5hYmxlLWFyY2hpdmUsIC0tZGlzYWJsZS1hcmNoaXZlLCBsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksIC0tZGlzYWJsZS1hdmFoaSwgYXZhaGkiCi1QQUNLQUdFQ09ORklHW2djcl0gPSAiLS1lbmFibGUtZ2NyLCAtLWRpc2FibGUtZ2NyLCBnY3IiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLCAtLWRpc2FibGUtZ3RrLCBndGsrMyIKLVBBQ0tBR0VDT05GSUdbaHR0cF0gPSAiLS1lbmFibGUtaHR0cCwgLS1kaXNhYmxlLWh0dHAsIGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1tsaWJtdHBdID0gIi0tZW5hYmxlLWxpYm10cCwgLS1kaXNhYmxlLWxpYm10cCwgbGlibXRwIgotUEFDS0FHRUNPTkZJR1tsaWJncGhvdG8yXSA9ICItLWVuYWJsZS1ncGhvdG8yLCAtLWRpc2FibGUtZ3Bob3RvMiwgbGliZ3Bob3RvMiIKLVBBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0tZW5hYmxlLXNhbWJhLCAtLWRpc2FibGUtc2FtYmEsIHNhbWJhIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kdXNlcnVuaXRkaXIsc3lzdGVtZCIKLQotIyBuZWVkcyBtZXRhLWZpbGVzeXN0ZW1zCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gIi0tZW5hYmxlLWZ1c2UsIC0tZGlzYWJsZS1mdXNlLCBmdXNlIgotCi0jIGxpYmNkaW8tcGFyYW5vaWEgcmVjaXBlIGRvZXNuJ3QgZXhpc3QgeWV0Ci1QQUNLQUdFQ09ORklHW2NkZGFdID0gIi0tZW5hYmxlLWNkZGEsIC0tZGlzYWJsZS1jZGRhLCBsaWJjZGlvLXBhcmFub2lhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjMyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4MDY4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjMyLjEuYmIKQEAgLTAsMCArMSw2NiBAQAorREVTQ1JJUFRJT04gPSAiZ3ZmcyBpcyBhIHVzZXJzcGFjZSB2aXJ0dWFsIGZpbGVzeXN0ZW0iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA1ZGYzOGRkNzdjMzVlYzg0MzFmMjEyNDEwYTMzMjllIgorCitpbmhlcml0IGdub21lIGJhc2gtY29tcGxldGlvbiBnZXR0ZXh0CisKK0RFUEVORFMgKz0gImxpYnNlY3JldCBnbGliLTIuMCBnY29uZiBpbnRsdG9vbC1uYXRpdmUgbGliZ3VkZXYgdWRpc2tzMiBwb2xraXQgc2hhZG93LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYmU3NjZiNDZmMzI0ZTE3ZDdhYmNmYjRhODlhMTY4NCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQwYjZjOWVkYWIwOWQ1MjQ3MjM1NTY1N2EyZjBhMTQ4MzFiMmU2YzU4Y2FiYTM5NWY3MjFhYjY4M2Y4MzZhZGUiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1nZHUgXAorICAgIC0tZW5hYmxlLXVkaXNrczIgXAorICAgIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIFwKKyAgICAtLXdpdGgtYXJjaGl2ZS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgLS13aXRoLWFyY2hpdmUtbGlicz0ke1NUQUdJTkdfTElCRElSfSBcCisiCisKK1BBQ0tBR0VTID0rICJndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9nbGliLTIuMCBcCisgICAgJHtkYXRhZGlyfS9HQ29uZiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKKyAgICAke2xpYmRpcn0vdG1wZmlsZXMuZCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgorUkRFUEVORFNfJHtQTn0gPSAidWRpc2tzMiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnLyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIgorCitGSUxFU19ndmZzZC1mdHAgPSAiJHtsaWJleGVjZGlyfS9ndmZzZC1mdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9mdHAubW91bnQiCitGSUxFU19ndmZzZC1zZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2Qtc2Z0cCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3NmdHAubW91bnQiCitGSUxFU19ndmZzZC10cmFzaCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXRyYXNoICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvdHJhc2gubW91bnQiCisKK1JSRUNPTU1FTkRTX2d2ZnNkLWZ0cCArPSAib3BlbnNzaC1zZnRwIG9wZW5zc2gtc3NoIgorCitQQUNLQUdFQ09ORklHID89ICJsaWJncGhvdG8yICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWZjXSA9ICItLWVuYWJsZS1hZmMsIC0tZGlzYWJsZS1hZmMsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0tZW5hYmxlLWFyY2hpdmUsIC0tZGlzYWJsZS1hcmNoaXZlLCBsaWJhcmNoaXZlIgorUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksIC0tZGlzYWJsZS1hdmFoaSwgYXZhaGkiCitQQUNLQUdFQ09ORklHW2djcl0gPSAiLS1lbmFibGUtZ2NyLCAtLWRpc2FibGUtZ2NyLCBnY3IiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLCAtLWRpc2FibGUtZ3RrLCBndGsrMyIKK1BBQ0tBR0VDT05GSUdbaHR0cF0gPSAiLS1lbmFibGUtaHR0cCwgLS1kaXNhYmxlLWh0dHAsIGxpYnNvdXAtMi40IgorUEFDS0FHRUNPTkZJR1tsaWJtdHBdID0gIi0tZW5hYmxlLWxpYm10cCwgLS1kaXNhYmxlLWxpYm10cCwgbGlibXRwIgorUEFDS0FHRUNPTkZJR1tsaWJncGhvdG8yXSA9ICItLWVuYWJsZS1ncGhvdG8yLCAtLWRpc2FibGUtZ3Bob3RvMiwgbGliZ3Bob3RvMiIKK1BBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0tZW5hYmxlLXNhbWJhLCAtLWRpc2FibGUtc2FtYmEsIHNhbWJhIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kdXNlcnVuaXRkaXIsc3lzdGVtZCIKKworIyBuZWVkcyBtZXRhLWZpbGVzeXN0ZW1zCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gIi0tZW5hYmxlLWZ1c2UsIC0tZGlzYWJsZS1mdXNlLCBmdXNlIgorCisjIGxpYmNkaW8tcGFyYW5vaWEgcmVjaXBlIGRvZXNuJ3QgZXhpc3QgeWV0CitQQUNLQUdFQ09ORklHW2NkZGFdID0gIi0tZW5hYmxlLWNkZGEsIC0tZGlzYWJsZS1jZGRhLCBsaWJjZGlvLXBhcmFub2lhIgorCisjIEZpeCB1cCBwZXJtaXNzaW9ucyBvbiBwb2xraXQgcnVsZXMuZCB0byB3b3JrIHdpdGggcnBtNCBjb25zdHJhaW50cworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJY2htb2QgNzAwICR7RH0vJHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0vJHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcjNfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcjNfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjBmMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3dlYXRoZXIvbGliZ3dlYXRoZXIzXzMuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotREVQRU5EUyA9ICJsaWJ4bWwyIGdjb25mIGxpYnNvdXAtMi40IGd0ayszIgotCi1QTkJMQUNLTElTVFtsaWJnd2VhdGhlcjNdID89ICJDT05GTElDVDogODc2IGZpbGVzIGFyZSBjb25mbGljdGluZyB3aXRoIGxpYmd3ZWF0aGVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotIyBlLmcuIHN5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL3NoYXJlL2xpYmd3ZWF0aGVyL2xvY2F0aW9ucy5kdGQKLSMgICAgICBzeXNyb290cy9xZW11eDg2LTY0L3Vzci9zaGFyZS9saWJnd2VhdGhlci9Mb2NhdGlvbnMuemhfVFcueG1sCi0KLUJQTiA9ICJsaWJnd2VhdGhlciIKLQotaW5oZXJpdCBnbm9tZQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjFhOTZjNmYxOWM5YTBiYzZiNGUxMmFjYzlhOGE4NWQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MDQxNTI2ZmEwNDY2Yjk5ZGFlNWNmMDZjMmNjNzAzNzZmMjU1MzFlZWM1ZDU4YjFlMTM3OGFjZmIzMDI0MTBjIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6IGRvYyA6IDpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxvY2F0aW9uZGF0YSIKLUZJTEVTXyR7UE59LWxvY2F0aW9uZGF0YSA9ICIke2RhdGFkaXJ9L2xpYmd3ZWF0aGVyLypvY2F0aW9ucyoiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcl8yLjMwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcl8yLjMwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjlmMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3dlYXRoZXIvbGliZ3dlYXRoZXJfMi4zMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotREVQRU5EUyA9ICJsaWJ4bWwyIGdjb25mIGxpYnNvdXAtMi40IGd0aysgbGliZ25vbWUta2V5cmluZyIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiZjZhMGEwNTA1MTM0MWVjYjI1MGYzMzJlM2VkZmI4OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImI4MzUzNzQ2NjE0MjNmMzdjNDZhYThlMzczNjhhZTI0YTY4ODU2ZjExN2I3YzIxZTQ3NWEyMWVmZGJhNTI2NGMiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczogZG9jIDogOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ25vbWUqIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbG9jYXRpb25kYXRhIgotRklMRVNfJHtQTn0tbG9jYXRpb25kYXRhID0gIiR7ZGF0YWRpcn0vbGliZ3dlYXRoZXIvTG9jYXRpb25zKiIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MDgvCi1QTkJMQUNLTElTVFtsaWJnd2VhdGhlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL01ha2VmaWxlLmFtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvTWFrZWZpbGUuYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MGJhOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvTWFrZWZpbGUuYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJhcnRfbGdwbC0yLjMuMjEvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhcnRfbGdwbC0yLjMuMjEub3JpZy9NYWtlZmlsZS5hbQkyMDA5LTA0LTE4IDA1OjI5OjI1LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmFydF9sZ3BsLTIuMy4yMS9NYWtlZmlsZS5hbQkyMDEwLTExLTIzIDIzOjEyOjMyLjQ0NTQ1MDA3NSAtMDgwMAotQEAgLTcsOCArNyw4IEBACi0gCi0gQlVJTFRfU09VUkNFUyA9IGFydF9jb25maWcuaAotIAotLWFydF9jb25maWcuaDoKLS0JLi9nZW5fYXJ0X2NvbmZpZy5zaCA+IGFydF9jb25maWcuaAotKyNhcnRfY29uZmlnLmg6Ci0rIwkuL2dlbl9hcnRfY29uZmlnLnNoID4gYXJ0X2NvbmZpZy5oCi0gCi0gRVhUUkFfRElTVCA9IAkJCVwKLSAJbGliYXJ0LmRlZgkJXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYWFyY2g2NC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0L2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwZmZjMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FhcmNoNjRiZS9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmUvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBmZmMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FhcmNoNjRiZS9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmVfMzIvYXJ0X2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYWFyY2g2NGJlXzMyL2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmVfMzIvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYXJtL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybS9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTc0YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYXJtL2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgNAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybWViL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybWViL2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hcm1lYi9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pMzg2L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2kzODYvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2kzODYvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTU4Ni9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pNTg2L2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pNTg2L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgNAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2k2ODYvYXJ0X2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTY4Ni9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTc0YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTY4Ni9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHMvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHMvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHM2NC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMGNkOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzNjRlbC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzNjRlbC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMGNkOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0ZWwvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHNlbC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzZWwvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHNlbC9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9wb3dlcnBjL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGMvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGMvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvcG93ZXJwYzY0L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGM2NC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMGZmYzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvcG93ZXJwYzY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3g4Nl82NC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC94ODZfNjQvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBmZmMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3g4Nl82NC9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbF8yLjMuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbF8yLjMuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMjk1MDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGxfMi4zLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIGZ1bmN0aW9ucyBmb3IgMkQgZ3JhcGhpY3MiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi1QUiA9ICJyMiIKLQotQVJUX0NPTkZJRyA9ICIke0hPU1RfQVJDSH0vYXJ0X2NvbmZpZy5oIgotCi0jIGNhbid0IHVzZSBnbm9tZS5vZWNsYXNzIGR1ZSB0byBfIGluIGZpbGVuYW1lCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJhcnRfbGdwbC8yLjMvbGliYXJ0X2xncGwtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgZmlsZTovLyR7QVJUX0NPTkZJR30gXAotICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5hbS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4NTU5ZmYzYzY3ZmQ5NWQ1N2IwYzVlOTFhNmI0MzAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkYzExZTc0YzEwZmM5ZmZlNDE4ODUzN2UyYjM3MGMwYWJhY2NhN2Q4OTAyMWQ0ZDMwM2FmZGY3ZmQ3NDc2ZmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1ERVBFTkRTID0gIiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2xpYmFydDItY29uZmlnIgotCi1TID0gIiR7V09SS0RJUn0vbGliYXJ0X2xncGwtJHtQVn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNwICR7V09SS0RJUn0vJHtBUlRfQ09ORklHfSAke1N9L2FydF9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMi4zMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJkOGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUga2V5Ym9hcmQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZlMjljNjg4ZDkxMmRhMTJiNjZiNzNlMzJiMDNkODEyIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotCi1ERVBFTkRTID0gImdjb25mIGd0aysgZ2xpYi0yLjAgbGlieGtsYXZpZXIgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGUzMmE2ZTNlMzQ2NGI1NjZlZWNkYzQzMzJiZjM0YmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGQ1MmM0Y2M3ZDgzYWQ3ZWY5NjRhMWJjYjRkYjg3NDA3ZTY1YjAwZmZjM2U3MGMwODhjYTRlZTczODNkMjU2IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSSQoaW5jbHVkZWRpciknOictSS4nOmcKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkvdXNyL2luY2x1ZGUnOictSSR7U1RBR0lOR19JTkNESVJ9JzpnCi19Ci0KLVBOQkxBQ0tMSVNUW2xpYmdub21la2JkXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwOC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlZDgxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzMuMjIuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdOT01FIGtleWJvYXJkIGxpYnJhcnkiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT02ZTI5YzY4OGQ5MTJkYTEyYjY2YjczZTMyYjAzZDgxMiIKKworU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKKworREVQRU5EUyA9ICJnY29uZiBnbGliLTIuMCBsaWJ4a2xhdmllciBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWUgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKKworR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2IxZWJmOTlmNDI1NGM5OTkyMjE2M2MyNjJjN2ZmMDQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzNDBiMzBkYWJmZWJiZDRlMGU2YzBmZTM0YTM3ODk2NmRkNTY0MGI1ZDQ0NTk1YWI4YTE5YjBiZTI1NWQ3N2RmIgorCitFWFRSQV9PRUNPTkZfcmVtb3ZlID0gIi0tZGlzYWJsZS1zY2hlbWFzLWluc3RhbGwiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKaW5kZXggYTQwMjAzNy4uMWE1YzgxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKQEAgLTEsNCArMSw1IEBACiBERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXJzaW5nIENPUkJBIElETCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbmRyZXd0di5vcmcvbGliSURMLyIKIFNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCiBMSUNFTlNFID0gIkxHUEx2MisiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnRpbWV6b25lbWFwL2xpYnRpbWV6b25lbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlidGltZXpvbmVtYXAvbGlidGltZXpvbmVtYXBfMC40LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZhZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnRpbWV6b25lbWFwL2xpYnRpbWV6b25lbWFwXzAuNC41LmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gIlRpbWUgem9uZSBtYXAgd2lkZ2V0IGZvciBHdGsrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3RpbWV6b25lbWFwIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC9tYWluL2xpYnQvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIuZ3ogXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjA1NDMwNmZhOTk4ZmU1ODBmMTdiNjhhYTFlMTY1NTFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyN2U2NGExN2M2NzZjMWJjZGEzYjZiYTMzOTRkM2QwMTI1MGU1YWM5YTQ5MjIyYjlmZjU3MzdkOTBiMTUzODMiCisKKworREVQRU5EUyA9ICJndGsrMyBnZGstcGl4YnVmIGxpYnNvdXAtMi40IGpzb24tZ2xpYiBnbm9tZS1jb21tb24tbmF0aXZlIFwKKyIKKworQiA9ICIke1N9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCShjZCAke1N9OyBOT0NPTkZJR1VSRT0ieWVzIiAuICR7U30vYXV0b2dlbi5zaCkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzL2lkbC1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvaWRsLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNjJjZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvaWRsLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUluZGV4OiBuYXV0aWx1cy0yLjI0LjIvYWRkLWluY2x1ZGUtcHJlZml4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmF1dGlsdXMtMi4yNC4yLm9yaWcvYWRkLWluY2x1ZGUtcHJlZml4CTIwMDgtMTAtMDYgMTc6MjI6MjEuMDAwMDAwMDAwICswMDAwCi0rKysgbmF1dGlsdXMtMi4yNC4yL2FkZC1pbmNsdWRlLXByZWZpeAkyMDA5LTA0LTA5IDE2OjAwOjA1LjAwMDAwMDAwMCArMDAwMAotQEAgLTEgKzEgQEAKLS1zZWQgLWUgJ3MvXi8gLycgLWUgJ3MvICAqLyAvZycgLWUgJ3MvIC8gLUkgL2cnIC1lICdzLyAtSSAkLy8nCi0rc2VkIC1lICdzOl46IDonIC1lICdzOiAgKjogOmcnIC1lICdzOiA6IC1JICciJFNZU1JPT1QiJzpnJyAtZSAnczogLUkgJyIkU1lTUk9PVCInJDo6JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvbm8tR19ESVNBQkxFX0RFUFJFQ0FURUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby1HX0RJU0FCTEVfREVQUkVDQVRFRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhNjE1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby1HX0RJU0FCTEVfREVQUkVDQVRFRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gZTcyMzNkOThjMTE0YjAzYzdjOGI5NmQxZjQxNzcwNDUyZGExNGFhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbXguZGU+Ci1EYXRlOiBNb24sIDE3IE9jdCAyMDExIDAwOjU5OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5hdXRpbHVzIGJ1aWxkIGZhaWxzIGZvciBuZXdlciBnbGliIHZlcnNpb25zCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWJ1aWxkIHdpdGggZ2xpYi0yLjAgdjIuMzAuMCBydW4gaW50byBlcnJvcnMgZm9yIGF0IGxlYXN0IEdfQ09OU1RfUkVUVVJOIG1pc3NpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdteC5kZT4KLS0tLQotIGNvbmZpZ3VyZS5pbiAgICB8ICAgIDIgKy0KLSBlZWwvTWFrZWZpbGUuYW0gfCAgICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggOTdlMTcxZS4uODU5YTA5NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMzQyLDcgKzM0Miw3IEBAIEFDX1NVQlNUKENPUkVfQ0ZMQUdTKQotIENPUkVfTElCUz0iYCRQS0dfQ09ORklHIC0tbGlicyAkQ09SRV9NT0RVTEVTYCAkeF9saWJzIgotIEFDX1NVQlNUKENPUkVfTElCUykKLSAKLS1ESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTPSItREdfRElTQUJMRV9ERVBSRUNBVEVEIC1ER0RLX1BJWEJVRl9ESVNBQkxFX0RFUFJFQ0FURUQiCi0rRElTQUJMRV9ERVBSRUNBVEVEX0NGTEFHUz0iLURHREtfUElYQlVGX0RJU0FCTEVfREVQUkVDQVRFRCIKLSBBQ19TVUJTVChESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTKQotIAotIGRubCBNdWx0aW1lZGlhIGtleXMKLWRpZmYgLS1naXQgYS9lZWwvTWFrZWZpbGUuYW0gYi9lZWwvTWFrZWZpbGUuYW0KLWluZGV4IGIxZmUzNTYuLmMxZDU2Y2QgMTAwNjQ0Ci0tLS0gYS9lZWwvTWFrZWZpbGUuYW0KLSsrKyBiL2VlbC9NYWtlZmlsZS5hbQotQEAgLTEwLDcgKzEwLDYgQEAgSU5DTFVERVMgPQkJCQkJCVwKLSAJLUREQVRBRElSPVwiIiQoZGF0YWRpcikiXCIJCQlcCi0gCS1EU09VUkNFX0RBVEFESVI9XCIiJCh0b3Bfc3JjZGlyKS9kYXRhIlwiCVwKLSAJLURHTk9NRUxPQ0FMRURJUj1cIiIkKHByZWZpeCkvJHtEQVRBRElSTkFNRX0vbG9jYWxlIlwiCVwKLS0JLURHX0RJU0FCTEVfREVQUkVDQVRFRAkJCQlcCi0gCS1ER0RLX1BJWEJVRl9ESVNBQkxFX0RFUFJFQ0FURUQJCQlcCi0gCS1ER01FTlVfSV9LTk9XX1RISVNfSVNfVU5TVEFCTEUJCQlcCi0gCSQoTlVMTCkKLS0tIAotMS43LjQuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1czNfMy4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1czNfMy4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ODBmOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMzXzMuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyBuYXV0aWx1cyBPRSBidWlsZCBmaWxlCi0jIENvcHlyaWdodCAoQykgMjAwNSwgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBwYWNrYWdlcy9DT1BZSU5HKQotCi1MSUNFTlNFPSJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSIKLQotUFIgPSAicjQiCi0KLURFUEVORFMgPSAibGlibm90aWZ5IGd0ayszIGxpYnVuaXF1ZSBndmZzIGxpYnJzdmcgbGliZXhpZiBnbm9tZS1kZXNrdG9wMyIKLSMgb3B0aW9uYWw6IHRyYWNrZXIKLQotIyB0byBpbmNsdWRlIG5hdXRpbHVzMy9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYgYmVmb3JlIHRoZSByZXN0Ci1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke0JQTn06IgotQlBOID0gIm5hdXRpbHVzIgotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICJmaWxlOi8vbm8tdHJ5LXJ1bi1zdHJmdGltZS5kaWZmIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTIzMTQzMjhiNTlhYTFkZmQ4MzYxOWY3MThiODFiZDUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjNDgyZDZlN2JhYmNjMjM4MzA0Y2Y1NTU4NmNkZjdlMmIyODA2MDI1MjE0YTE0M2VkMzU1ZjBkODliMzNiMTU0IgotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1ndGstZG9jICAtLWRpc2FibGUtdXBkYXRlLW1pbWVkYiAtLWVuYWJsZS1uc3QtZXh0ZW5zaW9uIgotZXhwb3J0IFNZU1JPT1QgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIHNlZCAtaSAtZSAvZG9jcy9kICR7U30vTWFrZWZpbGUuYW0KLSAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gImd2ZnMgZ3Zmc2QtZnRwIGd2ZnNkLXNmdHAgZ3Zmc2QtdHJhc2ggZ2xpYi0yLjAtdXRpbHMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgL3Vzci9saWJleGVjLyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9uYXV0aWx1cyogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucyovKi5zbyBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3IvbGliZXhlYy8uZGVidWcgXAotICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zKi8uZGVidWciCi0KLSMgRG9uJ3QgbWFrZSBuYXV0aWxzIGRyYWcgdXMgaW4KLVBSSVZBVEVfTElCUyA9ICJsaWJuYXV0aWx1cy1leHRlbnNpb24uc28uMSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLWlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgZXhpdCAxCi1maQotCi1nbGliLWNvbXBpbGUtc2NoZW1hcyAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMKLX0KLQotIyAzLjIuMS1yNC9uYXV0aWx1cy0zLjIuMS9lZWwvZWVsLWdub21lLWV4dGVuc2lvbnMuYzozNDo1MDogZmF0YWwgZXJyb3I6IGxpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC11dGlscy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jIDMuMi4xLXI0L25hdXRpbHVzLTMuMi4xL2VlbC9lZWwtZWRpdGFibGUtbGFiZWwuYzozMTA1OjU1OiBlcnJvcjogJ0dUS19TVE9DS19DVVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotUE5CTEFDS0xJU1RbbmF1dGlsdXMzXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCwgbWF5YmUgbWlzc2luZyBkZXBlbmRlbmN5IG9uIGdub21lLWRlc2t0b3AtdXRpbHMuaCBwcm92aWRlciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzIuMzIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzIuMzIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FmN2Y1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1c18yLjMyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIG5hdXRpbHVzIE9FIGJ1aWxkIGZpbGUKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLUxJQ0VOU0U9IkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2MwMDQ4NTM2ZTQzNjQyYTFmM2E3MjRjMjkwOTg3MmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWYzMGE5NzE2ZWYzNzYyZTM0NjdhMmY2MmJmNzkwZjBhIgotCi1QUiA9ICJyNiIKLQotREVQRU5EUyA9ICJnZGstcGl4YnVmIGd0aysgbGlidW5pcXVlIGd2ZnMgbGlicnN2ZyBsaWJleGlmIGVzb3VuZCBnbm9tZS1kZXNrdG9wIG9yYml0Mi1uYXRpdmUiCi0jIG9wdGlvbmFsOiB0cmFja2VyCi0KLWluaGVyaXQgZ25vbWUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUxNTY1YWExMGQxNjI1ZGZmNTZlMzgxMjI4MzQ2OTExIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMmQ0ZmYyOGM3YTdhYTVkNDBlYjI0NjgxNDk5NTRhNTY0YzI1N2EzMDUxODM3NzMwNTc1ODRkMjJkMTUzNDdhMiIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotU1JDX1VSSSArPSAiZmlsZTovL2lkbC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL25vLUdfRElTQUJMRV9ERVBSRUNBVEVELnBhdGNoIFwKLSIKLQotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1ndGstZG9jICAtLWRpc2FibGUtdXBkYXRlLW1pbWVkYiAiCi1leHBvcnQgU1lTUk9PVCA9ICIke1NUQUdJTkdfRElSX0hPU1R9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgc2VkIC1pIC1lIC9kb2NzL2QgJHtTfS9NYWtlZmlsZS5hbQotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLSAgICAjIFdlIG5lZWQgbmF0aXZlIG9yYml0LWlkbCB3aXRoIHRhcmdldCBpZGwgZmlsZXMuIE5vIHdheSB0byBzYXkgaXQgaW4gYSBjbGVhbiB3YXk6Ci0gICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIC1leGVjIHNlZCAtaSAnL1wvdXNyXC9iaW5cL29yYml0LWlkbC0yL3tzOi91c3IvYmluOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfTo7czovdXNyL3NoYXJlOiR7U1RBR0lOR19EQVRBRElSfTpnfScge30gXDsKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCBnbGliLW5ldHdvcmtpbmciCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKLQotIyBEb24ndCBtYWtlIG5hdXRpbHMzIGRyYWcgdXMgaW4KLVBSSVZBVEVfTElCUyA9ICJsaWJuYXV0aWx1cy1leHRlbnNpb24uc28uMSIKLQotCi1QTkJMQUNLTElTVFtuYXV0aWx1c10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ25vbWUtZGVza3RvcCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDJfMi4xNC4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDJfMi4xNC4xOS5iYgppbmRleCBmOWFmMmVlLi5lYjQzOTcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9vcmJpdDIvb3JiaXQyXzIuMTQuMTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Ml8yLjE0LjE5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJDT1JCQSBPUkIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy9wcm9qZWN0cy9PUkJpdDIiCiBTRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWRkMjIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQWRkcmVzcy1ib29rIGFwcGxpY2F0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9waW1saWNvLXByb2plY3Qub3JnL2NvbnRhY3RzLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIEdQTHYzKyAiCi1TRUNUSU9OID0gIngxMSIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKyBldm9sdXRpb24tZGF0YS1zZXJ2ZXIgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAibGliZWRhdGEtYm9vayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdjb25mCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdub21lLXZmcyIKLUVYVFJBX09FTUFLRSArPSAiR0NPTkZfRElTQUJMRV9NQUtFRklMRV9TQ0hFTUFfSU5TVEFMTD0xIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N0b2NrX2NvbnRhY3QucG5nICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3RvY2tfcGVyc29uLnBuZyAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9waXhtYXBzL3N0b2NrX2NvbnRhY3QucG5nIFwKLSAgICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N0b2NrX3BlcnNvbi5wbmcgXAotICAgICAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IiCi0KLVNSQ19VUkkgPSAiZmlsZTovL3N0b2NrX2NvbnRhY3QucG5nIFwKLSAgICAgICAgICAgZmlsZTovL3N0b2NrX3BlcnNvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vY29udGFjdHMtY29uZGl0aW9uYWxseS1pbnN0YWxsLXNjaGVtYS5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzL2NvbnRhY3RzLWNvbmRpdGlvbmFsbHktaW5zdGFsbC1zY2hlbWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzL2NvbnRhY3RzLWNvbmRpdGlvbmFsbHktaW5zdGFsbC1zY2hlbWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYjc4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9jb250YWN0cy1jb25kaXRpb25hbGx5LWluc3RhbGwtc2NoZW1hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotSW5zdGFsbCBzY2hlbWEgc2hvdWxkIHJlc3BlY3QgdG8gR0NPTkZfRElTQUJMRV9NQUtFRklMRV9TQ0hFTUFfSU5TVEFMTAotCi1JZiBHQ09ORl9ESVNBQkxFX01BS0VGSUxFX1NDSEVNQV9JTlNUQUxMIGlzIHNldCwgdGhlIHNjaGVtYSBzaG91bGQgbm90Ci1iZSBpbnN0YWxsZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGRhdGEvTWFrZWZpbGUuYW0gfCAgICA3ICsrKystLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvTWFrZWZpbGUuYW0gYi9kYXRhL01ha2VmaWxlLmFtCi1pbmRleCBmNzkwODIzLi5iNmZkNjQzIDEwMDY0NAotLS0tIGEvZGF0YS9NYWtlZmlsZS5hbQotKysrIGIvZGF0YS9NYWtlZmlsZS5hbQotQEAgLTE0LDEzICsxNCwxNCBAQCBkaXN0X21hbjFfTUFOUyA9IGNvbnRhY3RzLjEKLSAKLSBpZiBIQVZFX0dDT05GCi0gaW5zdGFsbC1kYXRhLWxvY2FsOgotLQlHQ09ORl9DT05GSUdfU09VUkNFPSQoR0NPTkZfU0NIRU1BX0NPTkZJR19TT1VSQ0UpIFwKLSsJaWYgWyAiJChHQ09ORl9ESVNBQkxFX01BS0VGSUxFX1NDSEVNQV9JTlNUQUxMKSIgIT0gIjEiIF07IHRoZW4gXAotKwkJR0NPTkZfQ09ORklHX1NPVVJDRT0kKEdDT05GX1NDSEVNQV9DT05GSUdfU09VUkNFKSBcCi0gCQkkKEdDT05GVE9PTCkgLS1tYWtlZmlsZS1pbnN0YWxsLXJ1bGUgJChzY2hlbWFfREFUQSkgfHwgXAotIAkJKGVjaG8gO1wKLSAJCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsgXAotIAkJZWNobyAiSW5zdGFsbGF0aW9uIG9mIHNjaGVtYXMgZmFpbGVkLCBpbnN0YWxsIHRoZW0gbWFudWFsbHkiOyBcCi0tCQllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiI7KQotLQkJQHRydWUKLSsJCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjspOyBcCi0rCWZpCi0gZW5kaWYKLSAKLSBDTEVBTkZJTEVTID0gJChkZXNrdG9wX0RBVEEpCi0tLSAKLTEuNy43LjYKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9tYWtlLTM4Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMvbWFrZS0zODIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3Y2ZlZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9tYWtlLTM4Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUZpeCBmb3Igc3RyaWN0ZXIgcGFyc2VyIGluIG1ha2UgMy44Mi4gVGhpcyBmaXggaGFzIGJlZW4gcHVzaGVkIHRvIHVwc3RyZWFtIGdpdC4KLQotSkwgLSAxNS8xMi8xMAotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLUluZGV4OiBnaXQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZS5hbQotKysrIGdpdC9NYWtlZmlsZS5hbQotQEAgLTExLDQgKzExLDQgQEAgRElTVENMRUFORklMRVMgPSAkKElOVExUT09MX0JVSUxUKQotIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gYWNsb2NhbC5tNCBjb21waWxlIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGNvbmZpZ3VyZSBkZXBjb21wICQoSU5UTFRPT0xfQlVJTFQ6PS5pbikgaW5zdGFsbC1zaCBsdG1haW4uc2ggbWtpbnN0YWxsZGlycyBNYWtlZmlsZS5pbiBtaXNzaW5nCi0gCi0gc25hcHNob3Q6Ci0tICAgICAgICAkKE1BS0UpIGRpc3QgZGlzdGRpcj0kKFBBQ0tBR0UpLXNuYXBgZGF0ZSArIiVZJW0lZCJgCi0rCSQoTUFLRSkgZGlzdCBkaXN0ZGlyPSQoUEFDS0FHRSktc25hcGBkYXRlICsiJVklbSVkImAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfMC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0c18wLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNmNmOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0c18wLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIGNvbnRhY3RzLmluYwotCi1QUiA9ICJyOCIKLQotU1JDX1VSSSA9KyAiaHR0cDovL3BpbWxpY28tcHJvamVjdC5vcmcvc291cmNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhYjVhZmZiZjkzZDZmYTdiOTc4YjMyM2E4ZDQ0ZGUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljYWNlYzk4ZjgxMjM5OTMwMzNhYWEyNTVmM2Y0YzA0Yzg2YTFiZTY1ZTQ4N2RkMjFmMGFhYTU0Mzg0YTZmNmQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb250YWN0cy1tYWluLmg7ZW5kbGluZT0xODttZDU9MDM3MWFmNDZmYmM3MmUzMzU3NWUwMDcyZGNhNWZiMTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NvbnRhY3RzLWRidXMuYztlbmRsaW5lPTE4O21kNT1lNGRhOWFjMWEwNTM5ZmFmYzdkZjQzMTAxMDkwNGZkNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY29udGFjdHMtZ3RrLmM7ZW5kbGluZT0yMTttZDU9MWMyZTNmNTViMjE1NjM1ZWZmNGJhNzZmNzY5NmY4ZWUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAjIEl0IHVzZWQgOCBzcGFjZXMgdG8gaW5zdGVhZCBvZiBhIHRhYiwgYnV0IGl0IGRvZXNuJ3Qgd29yayBmb3IgdXMKLSAgICBzZWQgLWkgJ3MvXiAgICAgICAgJChNQUtFKSBkaXN0IGRpc3RkaXI9L1x0JChNQUtFKSBkaXN0IGRpc3RkaXIvJyBNYWtlZmlsZS5hbQotfQotCi1QTkJMQUNLTElTVFtjb250YWN0c10gPz0gIkZhaWxzIHRvIGZldGNoLCBwaW1saWNvLXByb2plY3Qub3JnIGlzIGdvbmUgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMjg1NC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDZlOWQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBjb250YWN0cy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NvbnRhY3RzLW1haW4uaDtlbmRsaW5lPTIwO21kNT05ZGMzNTMxYzkxNGZiNmQ2ZDRhOGQxYWVlNDUxOWZlZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY29udGFjdHMtZGJ1cy5jO2VuZGxpbmU9MjA7bWQ1PTk1ZTAyZDc3ZjE1NWZiZDA3YTE0ZGJhMzM0OGI5YjAzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb250YWN0cy1ndGsuYztlbmRsaW5lPTIzO21kNT1lMWVlOWI5ZTcyMDQ1ZjJkM2FhNDRjZjE3MzEzYjQ2ZSIKLQotU1JDUkVWID0gIjE5ODUzODkzZmRiNTk1ZGU2YWE1OWRiMGQ5ZGMyZjk0NTFlZDI5MzMiCi1QViA9ICIwLjEyK2dpdCR7U1JDUFZ9IgotUFIgPSAicjQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSsgImdpdDovL2dpdC5nbm9tZS5vcmcvJHtCUE59IFwKLSAgICAgICAgZmlsZTovL21ha2UtMzgyLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QTkJMQUNLTElTVFtjb250YWN0c10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzI4MjYvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgyMTdkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRhc2sgbGlzdCBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9waW1saWNvLXByb2plY3Qub3JnL3Rhc2tzLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyIKLQotU0VDVElPTiA9ICJ4MTEiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0aysgZXZvbHV0aW9uLWRhdGEtc2VydmVyIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzXzAuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzXzAuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyYzIwYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc18wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSB0YXNrcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2d0ay9tYWluLmM7ZW5kbGluZT0xOTttZDU9ODY1OWQwYjdmZDY4YTJhZDZhYzMwYzY1MzllYTViODIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29tb2tvL29wZW5tb2tvLXRhc2tzLmM7ZW5kbGluZT0yMDttZDU9MDRkNTZhNDY4NjNjOWY0MjQ3Njk0ZjQwMjU3YTgzNmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hpbGRvbi9oaWxkb24tdGFza3MuYztlbmRsaW5lPTIxO21kNT00ODhkZGYzMWRjMTRiMjE5NmRlYzdjYzczNjIxMWI1MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGltbGljby1wcm9qZWN0Lm9yZy9zb3VyY2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGFmZDk2OTc1ODU2MTU5OWZkNzgyZTFlZmZiMzljMDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE3ZmRjNWY5NWEyMTkzYTFhMjVmZGIxM2YwNzE4NjdmYjdlNDIyNDVjZTE5Y2NlZTRiY2NjYjY5ZTU1N2YyZSIKLQotUFIgPSAicjMiCi0KLSMgdGFza3MtMC4xOS9saWJrb3RvL2tvdG8tdXRpbHMuYzo4MTozOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBhcmd1bWVudCB0eXBlcyBub3QgY2hlY2tlZCBbLVdlcnJvcj1mb3JtYXQtbm9ubGl0ZXJhbF0KLVBOQkxBQ0tMSVNUW3Rhc2tzXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vdGFza3NfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MWYxZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIHRhc2tzLmluYwotCi1TUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvJHtCUE59IgotCi1TUkNSRVYgPSAiZWE1MmQ0NmQ2OTFjNWZjZTQ0NzNlYTRlMjRhMzU0MTEzODFmM2E2NSIKLVBWID0gIjAuMTMrZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotIyAuLi8uLi9naXQvbGlia290by9rb3RvLXV0aWxzLmM6ODE6MzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCwgYXJndW1lbnQgdHlwZXMgbm90IGNoZWNrZWQgWy1XZXJyb3I9Zm9ybWF0LW5vbmxpdGVyYWxdCi1QTkJMQUNLTElTVFt0YXNrc10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9zeXN0ZW0tdG9vbHMvc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMTAuMi9hZGQtYW5nc3Ryb20tZGlzdHJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kcy0yLjEwLjIvYWRkLWFuZ3N0cm9tLWRpc3Ryby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwM2ZkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9zeXN0ZW0tdG9vbHMvc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMTAuMi9hZGQtYW5nc3Ryb20tZGlzdHJvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBiNTA4NDYxNmEzYmMyYTBkNDg1ZjQzYWVhZTY5YzYwMjVmM2Y4NTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IEZyaSwgMTAgSnVuIDIwMTEgMTg6NDQ6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIHRoZSBhbmdzdHJvbSBkaXN0cmlidGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotLS0tCi0gVXRpbHMvUGxhdGZvcm0ucG0gfCAgICAzICsrKwotIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvVXRpbHMvUGxhdGZvcm0ucG0gYi9VdGlscy9QbGF0Zm9ybS5wbQotaW5kZXggZmM3NjM2MC4uOGI4Yzc3MCAxMDA2NDQKLS0tLSBhL1V0aWxzL1BsYXRmb3JtLnBtCi0rKysgYi9VdGlscy9QbGF0Zm9ybS5wbQotQEAgLTkyLDYgKzkyLDcgQEAgbXkgJFBMQVRGT1JNX0lORk8gPSB7Ci0gICAibmV4ZW50YS0xLjAiICAgICA9PiBbICJOZXhlbnRhIEdOVS9Tb2xhcmlzIiwgIjEuMCIsICJFbGxhdGUiIF0sCi0gICAieWVsbG93ZG9nLTQuMSIgICA9PiBbICJZZWxsb3cgRG9nIExpbnV4IiwgIjQuMSIsICJTYWdpdHRhIiBdLAotICAgImd1YWRhbGluZXgtdjQiICAgPT4gWyAiR3VhZGFsaW5leCIsICJ2NCIsICJUb3JvIiBdLAotKyAgImFuZ3N0cm9tIiAgICAgICAgPT4gWyAiQW5nc3Ryb20iLCAiIiwgIiIgXSwKLSB9OwotIAotIHN1YiBnZXRfcGxhdGZvcm1faW5mbwotQEAgLTE0Myw2ICsxNDQsNyBAQCBzdWIgZW5zdXJlX2Rpc3Ryb19tYXAKLSAgICAgICJ2aW5lLTMuMSIgICAgICAgICA9PiAidmluZS0zLjAiLAotICAgICAgInZsb3MtMS4yIiAgICAgICAgID0+ICJnZW50b28iLAotICAgICAgIm5leGVudGEtMS4wIiAgICAgID0+ICJzb2xhcmlzLTIuMTEiLAotKyAgICAgImFuZ3N0cm9tIiAgICAgICAgID0+ICJkZWJpYW4iLAotICAgICAgKTsKLSAKLSAgIHJldHVybiAkbWV0YW1hcHskZGlzdHJvfSBpZiAoJG1ldGFtYXB7JGRpc3Ryb30pOwotQEAgLTM3NSw2ICszNzcsNyBAQCBzdWIgZ3Vlc3MKLSAgICAgICAgICAgICAgICAgICBbIFwmY2hlY2tfYXJrIF0sCi0gICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX3lvcGVyIF0sCi0gICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX2Rpc3Ryb19maWxlLCAiL2V0Yy95ZWxsb3dkb2ctcmVsZWFzZSIsICJ5ZWxsb3dkb2ciLCAiXlllbGxvdyBEb2cgTGludXggcmVsZWFzZSAoXFxTKykiIF0sCi0rICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX2ZpbGVfZXhpc3RzLCAiL2V0Yy9hbmdzdHJvbS12ZXJzaW9uIiwgImFuZ3N0cm9tIiBdLAotICAgICAgICAgICAgICAgICAgXSwKLSAgICAgIkZyZWVCU0QiID0+IFtbIFwmY2hlY2tfZnJlZWJzZCBdXSwKLSAgICAgIlN1bk9TIiAgID0+IFtbIFwmY2hlY2tfc29sYXJpcyBdXQotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3N5c3RlbS10b29scy9zeXN0ZW0tdG9vbHMtYmFja2VuZHNfMi4xMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kc18yLjEwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MmMwZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kc18yLjEwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gImdub21lIHN5c3RlbSB0b29scyBiYWNrZW5kcyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBnbGliLTIuMCBwb2xraXQiCi0KLWluaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWRhZTE0OGIzMTM0MmFlY2FlMDM1MDUxYWRjNzBjNzQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZGJlNTE3N2RmNDZhOWM3MjUwNzM1ZTA1ZTc3MTI5ZmU3ZWMwNDg0MDc3MWFjY2ZhODc2OTAxMTFjYTJjNjcwIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovL3N5c3RlbS10b29scy1iYWNrZW5kcyBcCi0iCi0KLSMgVGhpcyBuZWVkcyB0byBtb3ZlIHRvIG1ldGEtYW5nc3Ryb20KLVNSQ19VUklfYXBwZW5kX2FuZ3N0cm9tID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLWFuZ3N0cm9tLWRpc3Ryby5wYXRjaCBcCi0iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLW5ldC1kYnVzPSR7bGliZGlyfS9wZXJsNSAiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBybSBtaXNzaW5nIHx8IHRydWUKLSAgICBhdXRvbWFrZSAtLWFkZC1taXNzaW5nCi0gICAgc2VkIC1pIC1lICdzOkNDPSQoQ0MpOkNDPSIkKENDKSI6ZycgJHtTfS9OZXQtREJ1cy9NYWtlZmlsZS5hbQotICAgIHNlZCAtaSAtZSAnczpDQz0kKENDKTpDQz0iJChDQykiOmcnICR7U30vTmV0LURCdXMvTWFrZWZpbGUuaW4KLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1pbnN0YWxsCi0gICAgYWNsb2NhbAotICAgIGdudS1jb25maWdpemUKLSAgICBvZV9ydW5jb25mCi0gICAgY3AgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCAke1N9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zeXN0ZW0tdG9vbHMtYmFja2VuZHMgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLX0KLQotSU5JVFNDUklQVF9OQU1FID0gInN5c3RlbS10b29scy1iYWNrZW5kcyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDUwIDIgMyA0IDUgLiBzdG9wIDcwIDEgLiIKLQotIyBTaGFkb3cgYWRkZWQgc28gdGhlcmUgaXMgYSBmdWxsIGFkZHVzZXIvZGVsdXNlcgotIyAoR25vbWUgaW1hZ2VzIHRlbmQgdG8gcHVsbCBpbiBzaGFkb3cgYW55d2F5KQotUkRFUEVORFNfJHtQTn0gPSAic2hhZG93IgotCi1GSUxFU18ke1BOfSArPSAiICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kIgotRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0vcGtnY29uZmlnIgotRklMRVNfJHtQTn0gKz0gIiAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMiCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMC9maWxlcyIKLUZJTEVTXyR7UE59ICs9ICIgJHtkYXRhZGlyfS9zeXN0ZW0tdG9vbHMtYmFja2VuZHMtMi4wL3NjcmlwdHMiCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vcG9sa2l0KiIKLQotUE5CTEFDS0xJU1Rbc3lzdGVtLXRvb2xzLWJhY2tlbmRzXSA/PSAiZG9lcyBub3QgYnVpbGQgd2l0aCBkaXN0cm9sZXNzIHFlbXVhcm0gYXMgcmVwb3J0ZWQgaW4gJ1N0YXRlIG9mIGJpdGJha2Ugd29ybGQnIHRocmVhZCwgbm9ib2R5IHZvbHVudGVlcmVkIHRvIGZpeCB0aGVtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3plbml0eS9maWxlcy8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWJ1aWxkLWhlbHAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYzljYjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMTdlNTYwNmY4YzRjOGZmMjZiYTE4NDg5YWFkNGM0ODRjZjhlMjk0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTMgMTE6MzQ6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGJ1aWxkIGhlbHAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotaXQgY3Jhc2hlcyB3aXRoOgotCi18IHdhcm5pbmc6IGZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGVudGl0eSAiL3Vzci9zaGFyZS94bWwvZ25vbWUveHNsdC9kb2Nib29rL29tZi9kYjJvbWYueHNsIgotfCBjYW5ub3QgcGFyc2UgL3Vzci9zaGFyZS94bWwvZ25vbWUveHNsdC9kb2Nib29rL29tZi9kYjJvbWYueHNsCi18IG1ha2VbMl06ICoqKiBbemVuaXR5LWJnLm9tZl0gRXJyb3IgMQotfCBtYWtlWzJdOiBMZWF2aW5nIGRpcmVjdG9yeSBgL2hvbWUvYW5kcmVhcy90bXAvb2UtY29yZS1lZ2xpYmMvd29yay9hcm12N2EtdmZwLW5lb24tYW5nc3Ryb20tbGludXgtZ251ZWFiaS96ZW5pdHkvMi4zMi4xLXIyL3plbml0eS0yLjMyLjEvaGVscCcKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8ICAgIDMgKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAwM2FjY2MxLi5jYWVjN2YwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw4ICsxLDcgQEAKLSBTVUJESVJTID0gXAotIAlzcmMJXAotIAlwbwlcCi0tCWRhdGEJXAotLQloZWxwCi0rCWRhdGEKLSAKLSBFWFRSQV9ESVNUID0gXAotIAlhdXRvZ2VuLnNoCQlcCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L3plbml0eV8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS96ZW5pdHkvemVuaXR5XzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ5ZjdhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS96ZW5pdHkvemVuaXR5XzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBkaWFsb2cgYm94ZXMgZnJvbSB0aGUgY29tbWFuZGxpbmUgYW5kIHNoZWxsIHNjcmlwdHMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1QUiA9ICJyMiIKLQotUE5CTEFDS0xJU1RbemVuaXR5XSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotREVQRU5EUyA9ICJndGsrIGdsaWItMi4wIGxpYm5vdGlmeSBnbm9tZS1kb2MtdXRpbHMiCi0KLWluaGVyaXQgZ25vbWViYXNlCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYWE2NmVjMzU0NTFiMTZlNDI0NTE5YjQ5NzMwODIxNzAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4ODM4YmUwNDFhMDczNjRiNjJhNDI4MWM5NzEzOTJlNGEwOWJiMDFiYjMyMzdhODM2ZWMwNDU3ZWMwZWExOGFjIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0jIHJlbW92ZSAtSS91c3IvaW5jbHVkZSBmcm9tIHplbml0eV9DUFBGTEFHUwotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICcvLUkkKGluY2x1ZGVkaXIpL2QnIHNyYy9NYWtlZmlsZS5hbQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTU5OGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9maWxlcy8wMDAxLUZpeC1nbGliLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBjODQxOWVmMDVmZjkyZmZhM2RlMmU2MjZlYjZhY2Q1ZDJkZjNiYWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAxNSBNYXkgMjAxMiAxMzo0MDowNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggZ2xpYiBpbmNsdWRlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotVXBzdHJlYW0tU3RhdHVzOiB1bmtub3duCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHNyYy90cmFjZS5jIHwgICAgNSArLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3RyYWNlLmMgYi9zcmMvdHJhY2UuYwotaW5kZXggNWVhNWMxMy4uNzc0YzU2ZCAxMDA2NDQKLS0tLSBhL3NyYy90cmFjZS5jCi0rKysgYi9zcmMvdHJhY2UuYwotQEAgLTIxLDEwICsyMSw3IEBACi0gCi0gI2luY2x1ZGUgInRyYWNlLmgiCi0gI2luY2x1ZGUgInN5c3RlbS5oIgotLSNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KLS0jaW5jbHVkZSA8Z2xpYi9ndXRpbHMuaD4KLS0jaW5jbHVkZSA8Z2xpYi9nc2xpc3QuaD4KLS0jaW5jbHVkZSA8Z2xpYi9nc3RyZnVuY3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzL2ZpeC1uby1hdHNwaS1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9maWxlcy9maXgtbm8tYXRzcGktY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiNWRlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzL2ZpeC1uby1hdHNwaS1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3NyYy9mbG9yZW5jZS5jIGIvc3JjL2Zsb3JlbmNlLmMKLWluZGV4IGIyN2MzMWIuLmZlYWRlZmUgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxvcmVuY2UuYwotKysrIGIvc3JjL2Zsb3JlbmNlLmMKLUBAIC00NCwxMiArNDQsNiBAQAotIC8qIGV4aXQgc2lnbmFsICovCi0gc3RhdGljIGludCBmbG9fZXhpdD1GQUxTRTsKLSAKLS0jaWZkZWYgRU5BQkxFX0FUX1NQSTIKLS12b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBdHNwaUFjY2Vzc2libGUgKm9iaik7Ci0tI2Vsc2UKLS12b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBY2Nlc3NpYmxlICpvYmopOwotLSNlbmRpZgotLQotIC8qIENhbGxlZCBvbiBkZXN0cm95IGV2ZW50IChzeXN0cmF5IHF1aXQgb3IgY2xvc2Ugd2luZG93KSAqLwotIHZvaWQgZmxvX2Rlc3Ryb3kgKHZvaWQpCi0gewotQEAgLTYxLDYgKzU1LDEyIEBAIHZvaWQgZmxvX2Rlc3Ryb3kgKHZvaWQpCi0gfQotIAotICNpZmRlZiBBVF9TUEkKLSsjaWZkZWYgRU5BQkxFX0FUX1NQSTIKLSt2b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBdHNwaUFjY2Vzc2libGUgKm9iaik7Ci0rI2Vsc2UKLSt2b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBY2Nlc3NpYmxlICpvYmopOwotKyNlbmRpZgotKwotIC8qIENhbGxlZCB0byBkZXN0cm95IHRoZSBpY29uICovCi0gdm9pZCBmbG9faWNvbl9kZXN0cm95IChHdGtXaWRnZXQgKndpZGdldCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2Zsb3JlbmNlXzAuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2U4NWM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJGbG9yZW5jZSBpcyBhIHZpcnR1YWwga2V5Ym9hcmQgKGFsc28gY2FsbGVkIG9uLXNjcmVlbi1rZXlib2FyZCksIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBpbnB1dCB0ZXh0IHRocm91Z2ggYSB0b3VjaHNjcmVlbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZmxvcmVuY2Uuc291cmNlZm9yZ2UubmV0L2VuZ2xpc2guaHRtbCIKLQotI05PVElDRTogSWYgZmxvcmVuY2UgY2FuJ3QgZmluZCBpdHMgZ2NvbmYgc2V0dGluZ3MsIHlvdSBuZWVkIHRvIHN0YXJ0IGZsb3JlbmNlIHdpdGggLS1jb25maWcgZm9yIG9uZSB0aW1lIGFuZCBzYXZlIHRoZSBjb25maWd1cmF0aW9uIG9uY2UuCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUFIgPSAicjEiCi0KLURFUEVORFMgPSAiZ3RrKyBsaWJ4bWwyIGxpYmdsYWRlIGxpYnJzdmcgbGlieHRzdCBnY29uZiBnY29uZi1uYXRpdmUgY2Fpcm8gaW50bHRvb2wtbmF0aXZlIGdub21lLWRvYy11dGlscyBsaWJub3RpZnkgZ3N0cmVhbWVyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mbG9yZW5jZS9mbG9yZW5jZS8ke1BWfS1ndGsyL2Zsb3JlbmNlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZml4LW5vLWF0c3BpLWNvbXBpbGUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiOGQ1YzIzNjdhMjg0ODViZmNmNTc3NjUwYjBiYWRhYjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjZkMzNhYTIwZDVmYmYzNGNlZWRlZDRjNDFjYjkyMmQyOTg4YjYwODJlMzNkOWFjYzQ2ZGQ3YmZlNTZkMzFhMSIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBnY29uZiBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS13aXRob3V0LWRvY3MgLS13aXRob3V0LWF0LXNwaSAtLXdpdGhvdXQtcGFuZWxhcHBsZXQgLS13aXRob3V0LXhyZWNvcmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2Zsb3JlbmNlXzAuNi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9mbG9yZW5jZV8wLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWI3ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9mbG9yZW5jZV8wLjYuMy5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkZsb3JlbmNlIGlzIGEgdmlydHVhbCBrZXlib2FyZCBmb3IgdG91Y2ggc2NyZWVucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9mbG9yZW5jZS5zb3VyY2Vmb3JnZS5uZXQvZW5nbGlzaC5odG1sIgorCisjTk9USUNFOiBJZiBmbG9yZW5jZSBjYW4ndCBmaW5kIGl0cyBnY29uZiBzZXR0aW5ncywgeW91IG5lZWQgdG8gc3RhcnQgZmxvcmVuY2Ugd2l0aCAtLWNvbmZpZyBmb3Igb25lIHRpbWUgYW5kIHNhdmUgdGhlIGNvbmZpZ3VyYXRpb24gb25jZS4KKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gImd0ayszIGxpYnhtbDIgbGliZ2xhZGUgbGlicnN2ZyBsaWJ4dHN0IGdjb25mIGdjb25mLW5hdGl2ZSBjYWlybyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtZG9jLXV0aWxzIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtQTn0vJHtQTn0vJHtQVn0vJHtQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Nzc1MDUxZDczNTJmNzVkZWM1YTg2ZGM5OTY0ZThlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjI5OTJmZDA3ZDI4NWJlNzNjY2U3MjFhMjAzZTIyY2VlMjEzMjBkNjliMGZkYTE1NzljZTYyOTQ0YzUwOTFlIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIGdjb25mIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLXdpdGhvdXQtZG9jcyAtLXdpdGhvdXQtYXQtc3BpIC0td2l0aG91dC1wYW5lbGFwcGxldCAtLXdpdGhvdXQteHJlY29yZCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZ29mZmljZS9nb2ZmaWNlLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wYXRocy10by1pbnRyb3NwZWN0aW9uLXRvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2UvMDAwMS1jb25maWd1cmUuYWMtZml4LXBhdGhzLXRvLWludHJvc3BlY3Rpb24tdG9vbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NDU5NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2UvMDAwMS1jb25maWd1cmUuYWMtZml4LXBhdGhzLXRvLWludHJvc3BlY3Rpb24tdG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDhlMTU4YzE2Y2QxNWZmZjA4YjQyZWQ4NmVkYzU1ODE2ZDMzODc4MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTkgRmViIDIwMTYgMTY6MDQ6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggcGF0aHMgdG8gaW50cm9zcGVjdGlvbiB0b29scwotCi1UaGV5IG5lZWQgdG8gYmUgcHJlZml4ZWQgd2l0aCAkUEtHX0NPTkZJR19TWVNST09UX0RJUgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2ZDJiNzQ3Li4zYjI4NDYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MDYsOSArNzA2LDkgQEAgaWYgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIjsgdGhlbgotICAgIGRubCBweXRob24gd2hlcmUgdG8gZmluZCBsaWJnb2ZmaWNlLCBzbyB5b3UgbWlnaHQgYWxzbyBuZWVkIHRvIHNldAotICAgIGRubCBMRF9MSUJSQVJZX1BBVEguCi0gCi0tICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICBpZiB0ZXN0ICJ4JElOVFJPU1BFQ1RJT05fR0lSRElSIiA9IHg7IHRoZW4KLSAgICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpcmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgIGZpCi1AQCAtNzE3LDcgKzcxNyw3IEBAIGlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLSAgICBmaQotICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgIElOVFJPU1BFQ1RJT05fTElCUz1gJFBLR19DT05GSUcgLS1saWJzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotKyAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotIGVsc2UKLSAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9Ci0gICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2VfMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2VfMC4xMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTIwODBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZ29mZmljZS9nb2ZmaWNlXzAuMTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLURFU0NSSVBUSU9OPSJHbm9tZSBPZmZpY2UgTGlicmFyeSIKLQotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZGMzM2ZmMjFlMWJhMWFjMWEyYTEwNjlkMzYxZTI5ZSIKLQotREVQRU5EUyA9ICJsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIGdsaWItMi4wIGd0ayszIHBhbmdvIGNhaXJvIGxpYmdzZiBsaWJwY3JlIGxpYnhtbDIgbGliYXJ0LWxncGwgbGlicnN2ZyBpbnRsdG9vbCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgcGtnY29uZmlnIHBlcmxuYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtcGF0aHMtdG8taW50cm9zcGVjdGlvbi10b29scy5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTBmZDE3YzZmZTIwNWI3Nzk1NzFlMDBkOWIwYjQ3MjciCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1YzM4ZjRlODFlODc0Y2M4ZTg5NDgxYjA4MGY3N2M0N2M3MmJmZDZmZTI1MjZmNGZjMmVmODdjMTdmOTZjYWQwIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2ZmaWNlLyR7UFZ9L3BsdWdpbnMvKi8uZGVidWciCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIiBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC1iYXJjb2wgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3QtZGlzdHJpYiBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC1waWUgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3QtcmFkYXIgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3Qtc3VyZmFjZSBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC14eSBcCi0gICAgZ29mZmljZS1wbHVnaW4tcmVnLWxpbmVhciBcCi0gICAgZ29mZmljZS1wbHVnaW4tcmVnLWxvZ2ZpdCBcCi0gICAgZ29mZmljZS1wbHVnaW4tc21vb3RoaW5nIFwKLSIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtzYmluZGlyfS8qICR7bGliZXhlY2Rpcn0vKiAke2xpYmRpcn0vbGliKiR7U09MSUJTfSBcCi0gICAgJHtzeXNjb25mZGlyfSAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAke2Jhc2VfYmluZGlyfS8qICR7YmFzZV9zYmluZGlyfS8qIFwKLSAgICAke2Jhc2VfbGliZGlyfS8qJHtTT0xJQlN9IFwKLSAgICAke2RhdGFkaXJ9LyR7UE59IFwKLSAgICAke2RhdGFkaXJ9L3BpeG1hcHMgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAotICAgICR7ZGF0YWRpcn0vaWRsICR7ZGF0YWRpcn0vb21mICR7ZGF0YWRpcn0vc291bmRzIFwKLSAgICAke2xpYmRpcn0vYm9ub2JvL3NlcnZlcnMiCi0KLUZJTEVTXyR7UE59LWxvY2FsZSA9ICIke2xpYmRpcn0vbG9jYWxlIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ29mZmljZS1wbHVnaW4tLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBnb2ZmaWNlX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ29mZmljZS8ke1BWfS9wbHVnaW5zLycpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnb2ZmaWNlX2xpYmRpciwgJyguKiknLCAnZ29mZmljZS1wbHVnaW4tJXMnLCAnR29mZmljZSBwbHVnaW4gZm9yICVzJywgYWxsb3dfZGlycz1UcnVlKQotfQotCi0jIHwgLi4vLi4vZ29mZmljZS0wLjEwLjEvZ29mZmljZS9tYXRoL2dvLWNvbXBsZXguYzo3NTozOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBhcmd1bWVudCB0eXBlcyBub3QgY2hlY2tlZCBbLVdlcnJvcj1mb3JtYXQtbm9ubGl0ZXJhbF0KLVBOQkxBQ0tMSVNUW2dvZmZpY2VdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2tleWJpbmRlci9rZXliaW5kZXJfMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9rZXliaW5kZXIva2V5YmluZGVyXzMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjc0NGEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9rZXliaW5kZXIva2V5YmluZGVyXzMuMC5iYgpAQCAtMCwwICsxLDI2IEBACitERVNDUklQVElPTiA9ICJrZXliaW5kZXIgaXMgYSBsaWJyYXJ5IGZvciByZWdpc3RlcmluZyBnbG9iYWwga2V5IGJpbmRpbmdzLCBmb3IgZ3RrLWJhc2VkIGFwcGxpY2F0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZW5nbGEva2V5YmluZGVyIgorTElDRU5TRSA9ICJYMTEiCitTRUNUSU9OID0gImRldmVsL2xpYiIKK0RFUEVORFMgPSAiZ3RrKzMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBcCisgICAgICAgICAgIGd0aysgXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZjE4ZjljNmQ4YjRjZmNjN2Q3ODA0YTI0M2E0YzBiNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjczNmNjZWY0MGQzOTYwM2I4MTExYzhhM2EwYmNhMDMxOWJiYWZkYzAiCitQViA9ICIzLjArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZW5nbGEva2V5YmluZGVyLmdpdDticmFuY2g9a2V5YmluZGVyLTMuMCBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gImd0aysiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwl0b3VjaCAke1N9L0NoYW5nZUxvZworfQorCitTUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiWDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmQvMDAwMS1weXByZWRpY3QtbG0tRGVmaW5lLWVycm9yLUFQSS1pZi1wbGF0Zm9ybS1kb2VzLW5vdC1oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmQvMDAwMS1weXByZWRpY3QtbG0tRGVmaW5lLWVycm9yLUFQSS1pZi1wbGF0Zm9ybS1kb2VzLW5vdC1oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZC8wMDAxLXB5cHJlZGljdC1sbS1EZWZpbmUtZXJyb3ItQVBJLWlmLXBsYXRmb3JtLWRvZXMtbm90LWgucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSAxYzk1ZjY0YWEzNDIxNDczODdjZTRiMWI3MjY5YTVjOGIzNGJkODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMDk6MDE6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHlwcmVkaWN0L2xtOiBEZWZpbmUgZXJyb3IgQVBJIGlmIHBsYXRmb3JtIGRvZXMgbm90IGhhdmUgaXQKKworZXJyb3IoKSBBUEkgaXMgbm90IGltcGxlbWVudGVkIGFjcm9zcyBhbGwgbGliY3Mgb24gbGludXgKK2UuZy4gbXVzbCBkb2VzIG5vdCBwcm92aWRlIGl0LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG0uY3BwICAgICAgICAgfCAgMSAtCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaCAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG1fZHluYW1pYy5jcHAgfCAgMiAtLQorIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcCBiL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcAoraW5kZXggMmU2NDI5Ni4uMzdhZTI0MSAxMDA2NDQKKy0tLSBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcAorKysrIGIvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uY3BwCitAQCAtMTksNyArMTksNiBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorICNpbmNsdWRlIDxjbWF0aD4KKyAjaW5jbHVkZSA8c3RyaW5nPgorZGlmZiAtLWdpdCBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmggYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbS5oCitpbmRleCBlZDQxNjRhLi5iOGI2M2VlIDEwMDY0NAorLS0tIGEvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaAorKysrIGIvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaAorQEAgLTMyLDYgKzMyLDE5IEBACisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8c3RyaW5nPgorIAorKyNpZiBkZWZpbmVkKEhBVkVfRVJST1JfSCkKKysjaW5jbHVkZSA8ZXJyb3IuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxlcnIuaD4KKysjZGVmaW5lIF9vbmJvYXJkX2Vycm9yKFMsIEUsIEYsIC4uLikgZG8geyBcCisrICAgICAgIGlmIChFKSBcCisrICAgICAgICAgICAgICAgZXJyKFMsIEYgIjogJXMiLCAjI19fVkFfQVJHU19fLCBzdHJlcnJvcihFKSk7IFwKKysgICAgICAgZWxzZSBcCisrICAgICAgICAgICAgICAgZXJyKFMsIEYsICMjX19WQV9BUkdTX18pOyBcCisrfSB3aGlsZSgwKQorKworKyNkZWZpbmUgZXJyb3IgX29uYm9hcmRfZXJyb3IKKysjZW5kaWYKKyAKKyAvLyBicmVhayBpbnRvIGRlYnVnZ2VyCisgLy8gc3RlcCB0d2ljZSB0byBjb21lIGJhY2sgb3V0IG9mIHRoZSByYWlzZSgpIGNhbGwgaW50byBrbm93biBjb2RlCitkaWZmIC0tZ2l0IGEvT25ib2FyZC9weXByZWRpY3QvbG0vbG1fZHluYW1pYy5jcHAgYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbV9keW5hbWljLmNwcAoraW5kZXggN2M2MjgyNC4uZTdjN2Y0MCAxMDA2NDQKKy0tLSBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtX2R5bmFtaWMuY3BwCisrKysgYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbV9keW5hbWljLmNwcAorQEAgLTE3LDggKzE3LDYgQEAKKyAgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLworIAorLSNpbmNsdWRlIDxlcnJvci5oPgorLQorICNpbmNsdWRlICJsbV9keW5hbWljLmgiCisgCisgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZjBhNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkFuIG9uc2NyZWVuIGtleWJvYXJkIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMMzttZDU9ODUyMWZhNGRkNTE5MDliNDA3YzUxNTA0OThkMzRmNGUiCi0KLURFUEVORFMgKz0gImd0ayszIGh1bnNwZWxsIGxpYmNhbmJlcnJhIGxpYnhrYmZpbGUgZGNvbmYgcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvb25ib2FyZC8xLjMvJHtQVn0vK2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiODAwMGRmM2U3ODk1MTJhOTBmY2IyMjc1ODBmZDYwZmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ3NGI1NGI4YmQ3YTA3NWNmNWY2ZTFhOGNhM2U2ZGU1Y2QyNjYzNTA3YWRiNjkwZDdiMWE4NWU3MWFmYTJlNCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUgZ3NldHRpbmdzCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLXNoZWxsIFwKLSAgICAke2RhdGFkaXJ9L2hlbHAgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBuY3Vyc2VzIFwKLSAgICBweXRob24zLWRidXMgXAotICAgIHB5dGhvbjMtcHljYWlybyBcCi0gICAgcHl0aG9uMy1weWdvYmplY3QgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDc2NWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBbiBvbnNjcmVlbiBrZXlib2FyZCIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTDM7bWQ1PTg1MjFmYTRkZDUxOTA5YjQwN2M1MTUwNDk4ZDM0ZjRlIgorCitERVBFTkRTICs9ICJndGsrMyBodW5zcGVsbCBsaWJjYW5iZXJyYSBsaWJ4a2JmaWxlIGRjb25mIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L29uYm9hcmQvMS40LyR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHlwcmVkaWN0LWxtLURlZmluZS1lcnJvci1BUEktaWYtcGxhdGZvcm0tZG9lcy1ub3QtaC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTJmYmU4MmU5MzRmNWIzNzg0MWQxN2ZmNTFlODBlOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWNhZTFhYzViMWVmMWFiOTg1YmQyZDJkNzlkZWQ2ZmM5OWVlMDRiMTUzNWNjMWJiMTkxZTQzYTIzMWEzODY1IgorCitpbmhlcml0IHNldHVwdG9vbHMzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZSBnc2V0dGluZ3MKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwgXAorICAgICR7ZGF0YWRpcn0vaGVscCBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIG5jdXJzZXMgXAorICAgIHB5dGhvbjMtZGJ1cyBcCisgICAgcHl0aG9uMy1weWNhaXJvIFwKKyAgICBweXRob24zLXB5Z29iamVjdCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYWRkYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL3RyYWNrZXItMC4xNC4yL2VuYWJsZS1zcWxpdGUtY3Jvc3Njb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IHRyYWNrZXItMC4xMC4xNy9tNC9zcWxpdGUtdGhyZWFkc2FmZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRyYWNrZXItMC4xMC4xNy5vcmlnL200L3NxbGl0ZS10aHJlYWRzYWZlLm00Ci0rKysgdHJhY2tlci0wLjEwLjE3L200L3NxbGl0ZS10aHJlYWRzYWZlLm00Ci1AQCAtNDUsNyArNDUsNyBAQCBpbnQgbWFpbiAoKQotICAgXV0pXSwKLSAgICAgICAgW2F4X2N2X3NxbGl0ZV90aHJlYWRzYWZlPXllc10sCi0gICAgICAgIFtheF9jdl9zcWxpdGVfdGhyZWFkc2FmZT1ub10sCi0tICAgICAgIFtheF9jdl9zcWxpdGVfdGhyZWFkc2FmZT1ub10pXSkKLSsgICAgICAgW2F4X2N2X3NxbGl0ZV90aHJlYWRzYWZlPXllc10pXSkKLSAKLSAgIExJQlM9IiRzYXZlX0xJQlMiCi0gXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9maXgtcmVtb3ZhYmxlLW1lZGlhLWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9maXgtcmVtb3ZhYmxlLW1lZGlhLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMzZDlkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZml4LXJlbW92YWJsZS1tZWRpYS1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1JbmRleDogdHJhY2tlci0wLjE0LjIvc3JjL2xpYnRyYWNrZXItbWluZXIvdHJhY2tlci1zdG9yYWdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0cmFja2VyLTAuMTQuMi5vcmlnL3NyYy9saWJ0cmFja2VyLW1pbmVyL3RyYWNrZXItc3RvcmFnZS5jCTIwMTEtMDgtMDMgMTM6NTM6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgdHJhY2tlci0wLjE0LjIvc3JjL2xpYnRyYWNrZXItbWluZXIvdHJhY2tlci1zdG9yYWdlLmMJMjAxMi0wOS0xMCAwODoyNToxOC4zMjIyMTUxMjYgKzAxMDAKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAKLSAjaW5jbHVkZSA8Z2lvL2dpby5oPgotICNpbmNsdWRlIDxnaW8vZ3VuaXhtb3VudHMuaD4KLUBAIC02NDYsNiArNjQ3LDE3IEBACi0gCQkJCWdjaGFyICpjb250ZW50X3R5cGU7Ci0gCQkJCWdib29sZWFuIGlzX211bHRpbWVkaWE7Ci0gCQkJCWdib29sZWFuIGlzX2JsYW5rOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29uc2lkZXIgYWxsIGZpbGVzIHVuZGVyIC9tZWRpYSB0byBiZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVtb3ZhYmxlIHVubGVzcyB0aGUgZmlsZSAudGhpcy1pcy1yb290IGlzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmVzZW50LgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cm5jbXAgKG1vdW50X3BhdGgsICIvbWVkaWEvIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuICgiL21lZGlhLyIpKSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQgKCIvbWVkaWEvLnRoaXMtaXMtcm9vdCIsICZzdCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3JlbW92YWJsZSA9IFRSVUU7Ci0gCi0gCQkJCWNvbnRlbnRfdHlwZSA9IG1vdW50X2d1ZXNzX2NvbnRlbnRfdHlwZSAobW91bnQsICZpc19vcHRpY2FsLCAmaXNfbXVsdGltZWRpYSwgJmlzX2JsYW5rKTsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9naWZsaWI1LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZ2lmbGliNS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWIzMzcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9naWZsaWI1LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotIHNyYy90cmFja2VyLWV4dHJhY3QvdHJhY2tlci1leHRyYWN0LWdpZi5jIHwgICAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspCi0tLS0gYS9zcmMvdHJhY2tlci1leHRyYWN0L3RyYWNrZXItZXh0cmFjdC1naWYuYwkKLSsrKyBhL3NyYy90cmFja2VyLWV4dHJhY3QvdHJhY2tlci1leHRyYWN0LWdpZi5jCQotQEAgLTc1LDYgKzc1LDM5IEBACi0gCXJldHVybiAoR0lGX09LKTsKLSB9Ci0gCi0rI2lmIEdJRkxJQl9NQUpPUiA+PSA1Ci0rc3RhdGljIGlubGluZSB2b2lkCi0rZ2lmX2Vycm9yIChjb25zdCBnY2hhciAqYWN0aW9uLCBpbnQgZXJyKQotK3sKLSsJY29uc3QgY2hhciAqc3RyID0gR2lmRXJyb3JTdHJpbmcgKGVycik7Ci0rCWlmIChzdHIgIT0gTlVMTCkgewotKwkJZ19tZXNzYWdlICgiJXMsIGVycm9yOiAnJXMnIiwgYWN0aW9uLCBzdHIpOwotKwl9IGVsc2UgewotKwkJZ19tZXNzYWdlICgiJXMsIHVuZGVmaW5lZCBlcnJvciAlZCIsIGFjdGlvbiwgZXJyKTsKLSsJfQotK30KLSsjZWxzZSAvKiBHSUZMSUJfTUFKT1IgPj0gNSAqLwotK3N0YXRpYyBpbmxpbmUgdm9pZCBwcmludF9naWZfZXJyb3IoKQotK3sKLSsjaWYgZGVmaW5lZChHSUZMSUJfTUFKT1IpICYmIGRlZmluZWQoR0lGTElCX01JTk9SKSAmJiAoKEdJRkxJQl9NQUpPUiA9PSA0ICYmIEdJRkxJQl9NSU5PUiA+PSAyKSB8fCBHSUZMSUJfTUFKT1IgPiA0KQotKwljb25zdCBjaGFyICpzdHIgPSBHaWZFcnJvclN0cmluZyAoKTsKLSsJaWYgKHN0ciAhPSBOVUxMKSB7Ci0rCQlnX21lc3NhZ2UgKCJHSUYsIGVycm9yOiAnJXMnIiwgc3RyKTsKLSsJfSBlbHNlIHsKLSsJCWdfbWVzc2FnZSAoIkdJRiwgdW5kZWZpbmVkIGVycm9yIik7Ci0rCX0KLSsjZWxzZQotKwlQcmludEdpZkVycm9yKCk7Ci0rI2VuZGlmCi0rfQotKyNlbmRpZiAvKiBHSUZMSUJfTUFKT1IgPj0gNSAqLwotKwotKy8qIGdpZmxpYiA1LjEgY2hhbmdlZCB0aGUgQVBJIG9mIERHaWZDbG9zZUZpbGUgdG8gdGFrZSB0d28gYXJndW1lbnRzICovCi0rI2lmICFkZWZpbmVkKEdJRkxJQl9NQUpPUikgfHwgXAotKyAgICAhKEdJRkxJQl9NQUpPUiA+IDUgfHwgKEdJRkxJQl9NQUpPUiA9PSA1ICYmIEdJRkxJQl9NSU5PUiA+PSAxKSkKLSsjZGVmaW5lIERHaWZDbG9zZUZpbGUoYSwgYikgREdpZkNsb3NlRmlsZShhKQotKyNlbmRpZgotKwotIHN0YXRpYyB2b2lkCi0gcmVhZF9tZXRhZGF0YSAoVHJhY2tlclNwYXJxbEJ1aWxkZXIgKnByZXVwZGF0ZSwKLSAgICAgICAgICAgICAgICBUcmFja2VyU3BhcnFsQnVpbGRlciAqbWV0YWRhdGEsCi1AQCAtMTAwLDE0ICsxMzMsMjIgQEAKLSAJCUV4dEJsb2NrIGV4dEJsb2NrOwotIAotIAkJaWYgKERHaWZHZXRSZWNvcmRUeXBlKGdpZkZpbGUsICZSZWNvcmRUeXBlKSA9PSBHSUZfRVJST1IpIHsKLS0JCQlQcmludEdpZkVycm9yKCk7Ci0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSsJCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rI2Vsc2UgIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCQlnaWZfZXJyb3IgKCJDb3VsZCBub3QgcmVhZCBuZXh0IEdJRiByZWNvcmQgdHlwZSIsIGdpZkZpbGUtPkVycm9yKTsKLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAkJCXJldHVybjsKLSAJCX0KLSAKLSAJCXN3aXRjaCAoUmVjb3JkVHlwZSkgewotIAkJCWNhc2UgSU1BR0VfREVTQ19SRUNPUkRfVFlQRToKLSAJCQlpZiAoREdpZkdldEltYWdlRGVzYyhnaWZGaWxlKSA9PSBHSUZfRVJST1IpIHsKLS0JCQkJUHJpbnRHaWZFcnJvcigpOwotKyNpZiBHSUZMSUJfTUFKT1IgPCA1Ci0rCQkJCXByaW50X2dpZl9lcnJvcigpOwotKyNlbHNlICAvKiBHSUZMSUJfTUFKT1IgPCA1ICovCi0rCQkJCWdpZl9lcnJvciAoIkNvdWxkIG5vdCBnZXQgR0lGIHJlY29yZCBpbmZvcm1hdGlvbiIsIGdpZkZpbGUtPkVycm9yKTsKLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAkJCQlyZXR1cm47Ci0gCQkJfQotIAotQEAgLTExNyw3ICsxNTgsMTEgQEAKLSAJCQlmcmFtZWRhdGEgPSBnX21hbGxvYyAoZnJhbWV3aWR0aCpmcmFtZWhlaWdodCk7Ci0gCi0gCQkJaWYgKERHaWZHZXRMaW5lKGdpZkZpbGUsIGZyYW1lZGF0YSwgZnJhbWV3aWR0aCpmcmFtZWhlaWdodCk9PUdJRl9FUlJPUikgewotLQkJCQlQcmludEdpZkVycm9yKCk7Ci0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSsJCQkJcHJpbnRfZ2lmX2Vycm9yKCk7Ci0rI2Vsc2UgIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCQkJZ2lmX2Vycm9yICgiQ291bGQgbm90IGxvYWQgYSBibG9jayBvZiBHSUYgcGl4ZXMiLCBnaWZGaWxlLT5FcnJvcik7Ci0rI2VuZGlmIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSAJCQkJcmV0dXJuOwotIAkJCX0KLSAKLUBAIC01OTMsNiArNjM4LDkgQEAKLSAJZ2NoYXIgKmZpbGVuYW1lLCAqdXJpOwotIAlHRmlsZSAqZmlsZTsKLSAJaW50IGZkOwotKyNpZiBHSUZMSUJfTUFKT1IgPj0gNQotKwlpbnQgZXJyOwotKyNlbmRpZgotIAotIAlwcmV1cGRhdGUgPSB0cmFja2VyX2V4dHJhY3RfaW5mb19nZXRfcHJldXBkYXRlX2J1aWxkZXIgKGluZm8pOwotIAltZXRhZGF0YSA9IHRyYWNrZXJfZXh0cmFjdF9pbmZvX2dldF9tZXRhZGF0YV9idWlsZGVyIChpbmZvKTsKLUBAIC02MTcsOCArNjY1LDE0IEBACi0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0JCi0gCi0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSAJaWYgKChnaWZGaWxlID0gREdpZk9wZW5GaWxlSGFuZGxlIChmZCkpID09IE5VTEwpIHsKLS0JCVByaW50R2lmRXJyb3IgKCk7Ci0rCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rI2Vsc2UgICAvKiBHSUZMSUJfTUFKT1IgPCA1ICovCi0rCWlmICgoZ2lmRmlsZSA9IERHaWZPcGVuRmlsZUhhbmRsZSAoZmQsICZlcnIpKSA9PSBOVUxMKSB7Ci0rCQlnaWZfZXJyb3IgKCJDb3VsZCBub3Qgb3BlbiBHSUYgZmlsZSB3aXRoIGhhbmRsZSIsIGVycik7Ci0rI2VuZGlmIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCWdfZnJlZSAoZmlsZW5hbWUpOwotIAkJY2xvc2UgKGZkKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotQEAgLTYzNywxMCArNjkxLDE1IEBACi0gCWdfc3RyaW5nX2ZyZWUgKHdoZXJlLCBUUlVFKTsKLSAKLSAJZ19mcmVlICh1cmkpOwotLQotKyNpZiBHSUZMSUJfTUFKT1IgPCA1Ci0gCWlmIChER2lmQ2xvc2VGaWxlIChnaWZGaWxlKSAhPSBHSUZfT0spIHsKLS0JCVByaW50R2lmRXJyb3IgKCk7Ci0rCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rCX0KLSsjZWxzZSAgLyogR0lGTElCX01BSk9SIDwgNSAqLwotKwlpZiAoREdpZkNsb3NlRmlsZSAoZ2lmRmlsZSwgTlVMTCkgIT0gR0lGX09LKSB7Ci0rCQlnaWZfZXJyb3IgKCJDb3VsZCBub3QgY2xvc2UgR0lGIGZpbGUiLCBnaWZGaWxlLT5FcnJvcik7Ci0gCX0KLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAotIAlyZXR1cm4gVFJVRTsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlcl8wLjE0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlcl8wLjE0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzZhMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL3RyYWNrZXJfMC4xNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVHJhY2tlciBpcyBhIHRvb2wgZGVzaWduZWQgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBhbmQgbWV0YWRhdGEgYWJvdXQgeW91ciBwZXJzb25hbCBkYXRhIHNvIHRoYXQgaXQgY2FuIGJlIHNlYXJjaGVkIGVhc2lseSBhbmQgcXVpY2tseS4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWUzMTAxMmJmOTBlN2I4YzEwOGM2OWYxOTdmM2UzYTQiCi1ERVBFTkRTID0gImZpbGUgZ3N0cmVhbWVyIGRidXMgbGliZXhpZiBnZXR0ZXh0IHNxbGl0ZTMgaWN1IGdzdC1wbHVnaW5zLWJhc2UgbGliZ25vbWUta2V5cmluZyBwb3BwbGVyIHRpZmYgZW5jYSBsaWJnc2YgbGlidW5pc3RyaW5nIGdpZmxpYiB0YWdsaWIgYnppcDIgdXBvd2VyIGd0ayszIGxpYmdlZSBuZXR3b3JrbWFuYWdlciBpbnRsdG9vbC1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgZ3ZmcyBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgotCi1SREVQRU5EU18ke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gKz0gIm5hdXRpbHVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3Byb2plY3RzLmdub21lLm9yZy90cmFja2VyLyIKLQotUFIgPSAicjciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ2V0dGV4dCBnc2V0dGluZ3Mgc3lzdGVtZCBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotVkVSX0RJUiA9ICIke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9IgotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy90cmFja2VyLyR7VkVSX0RJUn0vdHJhY2tlci0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXJlbW92YWJsZS1tZWRpYS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2lmbGliNS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzkwdHJhY2tlciBcCi0gICAgICAgICAgIGZpbGU6Ly90cmFja2VyLXN0b3JlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3RyYWNrZXItZGJ1cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIHRyYWNrZXItc3RvcmUuc2VydmljZSB0cmFja2VyLW1pbmVyLWZzLnNlcnZpY2UgdHJhY2tlci1kYnVzLnNlcnZpY2UgIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1FWFRSQV9PRUNPTkYgKz0gIiB0cmFja2VyX2N2X2hhdmVfaW9wcmlvPXllcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAibmF1dGlsdXMiCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItLWVuYWJsZS1uYXV0aWx1cy1leHRlbnNpb24sLS1kaXNhYmxlLW5hdXRpbHVzLWV4dGVuc2lvbixuYXV0aWx1cyIKLQotIyBEaXNhYmxlIHRoZSBkZXNrdG9wLWNlbnRyaWMgbWluZXJzCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1taW5lci10aHVuZGVyYmlyZCAtLWRpc2FibGUtbWluZXItZmlyZWZveCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1taW5lci1ldm9sdXRpb24gLS1kaXNhYmxlLW1pbmVyLWZsaWNrciIKLQotTEVBRF9TT05BTUUgPSAibGlidHJhY2tlcmNsaWVudC5zby4wIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy9saWJ0cmFja2VyLXNwYXJxbC1iYWNrZW5kLy5saWJzOiR7Qn0vc3JjL2xpYnRyYWNrZXItZGF0YS8ubGliczoke0J9L3NyYy9saWJ0cmFja2VyLWNvbW1vbi8ubGlicyIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3AgLVBwUiAke0R9JHtTVEFHSU5HX0RBVEFESVJ9LyogJHtEfSR7ZGF0YWRpcn0vIHx8IHRydWUKLSMgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLSMgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS85MHRyYWNrZXIgICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLXN0b3JlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLW1pbmVyLWZzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLWRidXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS12YWxhICR7UE59LW5hdXRpbHVzLWV4dGVuc2lvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RyYWNrZXItJHtWRVJfRElSfS8qLnNvLiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vZXh0cmFjdC1tb2R1bGVzLyouc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vd3JpdGViYWNrLW1vZHVsZXMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLyovYXBwcy90cmFja2VyLiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTIuMC8qLmxhIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS90cmFja2VyLXN0b3JlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RyYWNrZXItZGJ1cy5zZXJ2aWNlIFwKLSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9Lyouc28gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9LyovKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vZXh0cmFjdC1tb2R1bGVzLyoubGEiCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyovKi8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi8uZGVidWciCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2RhdGFkaXJ9L3RyYWNrZXItdGVzdHMvIgotRklMRVNfJHtQTn0tdmFsYSA9ICIke2RhdGFkaXJ9L3ZhbGEvIgotRklMRVNfJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5zbyIKLQotU1JDX1VSSVttZDVzdW1dID0gImYzYTg3MWJlZWViZjg2ZmQ3NTI4NjNlYmQyMmFmOWFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliNTkzMzBhYTJlOWUwOWZlZWU1ODdkZWQ4OTVlOTI0N2Y3MWZjMjVmNDZiMDIzZDYxNmQ5OTY5MzE0YmM3ZjEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzgxMDA3LwotUE5CTEFDS0xJU1RbdHJhY2tlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBuZXcgYmludXRpbHMtMi4yNyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGUvMDAwMS1NYWtlZmlsZS5hbS1MaW5rLXdpdGgtbGlibS1mb3ItcG93bC1BUEkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtTWFrZWZpbGUuYW0tTGluay13aXRoLWxpYm0tZm9yLXBvd2wtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NjQwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtTWFrZWZpbGUuYW0tTGluay13aXRoLWxpYm0tZm9yLXBvd2wtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gZmRhMGZmNDk5NjhhZWJjN2IyN2Y5NzExY2Y2ZWI3ZjZjNTYwYWRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI1IEp1bCAyMDE3IDE4OjI4OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBMaW5rIHdpdGggbGlibSBmb3IgcG93bCgpIEFQSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0MjE5ZjI4Li4yYTVjZWFjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNjksNyArNjksNyBAQCBkaXN0X3BrZ2RhdGFfREFUQSA9IHVzZXJtb2RlLnVpCisgdXNlcmhlbHBlcl9TT1VSQ0VTID0gdXNlcmhlbHBlci5jIHVzZXJoZWxwZXIuaCBzaHZhci5jIHNodmFyLmgKKyB1c2VyaGVscGVyX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURTWVNDT05GRElSPSciJChzeXNjb25mZGlyKSInCisgdXNlcmhlbHBlcl9MREFERCA9IGxpYmxpYi5hICQoTElCVVNFUl9MSUJTKSAkKEdMSUJfTElCUykgJChQQU1fTElCUykgXAorLQkkKFNFTElOVVhfTElCUykgJChFRkVOQ0VfTElCUykKKysJJChTRUxJTlVYX0xJQlMpICQoRUZFTkNFX0xJQlMpIC1sbQorIAorIHVzZXJpbmZvX1NPVVJDRVMgPSB1c2VyaW5mby5jCisgdXNlcmluZm9fQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAkKFBJWE1BUERJUl9DUFBGTEFHUykgJChTQklORElSX0NQUEZMQUdTKSBcCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjE5ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGM3N2UzZjBkNDU2MDc5N2Y3ZGM1NjU0OWFlNWViY2MwMzU3MTRhNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDIzOjIwOjUzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWx1cmUgYWdhaW5zdCBtdXNsIEMgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdXNlcm1vdW50LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3VzZXJtb3VudC5jIGIvdXNlcm1vdW50LmMKK2luZGV4IDNhYWZhZGQuLjQxMDcwMjcgMTAwNjQ0CistLS0gYS91c2VybW91bnQuYworKysrIGIvdXNlcm1vdW50LmMKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8bW50ZW50Lmg+CisrI2luY2x1ZGUgPHBhdGhzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTEyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA3YTMxNmRhZDA2OTdhZjJlZjRlODA3OWE1YWY1MTU2NWE4MTk1YWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAwMTo0MjozMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSB1c2VyaGVscGVyLmM6IGZpeCBmb3JtYXR0aW5nIGlzc3VlcworCitGaXhlZCB3aGVuIGNvbXBpbGUgd2l0aCAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiOgorfC4uL3VzZXJtb2RlLTEuMTExL3VzZXJoZWxwZXIuYzo1ODU6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcKK2xpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKGRnZXR0ZXh0KGRhdGEtPmRvbWFpbiwgZGF0YS0+YmFubmVyKSk7Cit8ICAgIF5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHVzZXJoZWxwZXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VzZXJoZWxwZXIuYyBiL3VzZXJoZWxwZXIuYworaW5kZXggNzZhZDQ5Mi4uZWUwZGE0OSAxMDA2NDQKKy0tLSBhL3VzZXJoZWxwZXIuYworKysrIGIvdXNlcmhlbHBlci5jCitAQCAtNTgyLDcgKzU4Miw3IEBAIGNvbnZlcnNlX2NvbnNvbGUoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1zZywKKyAKKyAJaWYgKGJhbm5lciA9PSAwKSB7CisgCQlpZiAoKGRhdGEtPmJhbm5lciAhPSBOVUxMKSAmJiAoZGF0YS0+ZG9tYWluICE9IE5VTEwpKSB7CistCQkJdGV4dCA9IGdfc3RyZHVwX3ByaW50ZihkZ2V0dGV4dChkYXRhLT5kb21haW4sIGRhdGEtPmJhbm5lcikpOworKwkJCXRleHQgPSBnX3N0cmR1cF9wcmludGYoIiVzIiwgZGdldHRleHQoZGF0YS0+ZG9tYWluLCBkYXRhLT5iYW5uZXIpKTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKChzZXJ2aWNlICE9IE5VTEwpICYmIChzdHJsZW4oc2VydmljZSkgPiAwKSkgeworIAkJCQlpZiAoZGF0YS0+ZmFsbGJhY2tfYWxsb3dlZCkgeworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmQ3MzI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYgpAQCAtMCwwICsxLDI5IEBACitERVNDUklQVElPTiA9ICJUaGUgdXNlcm1vZGUgY29udGFpbnMgdGhlIHVzZXJoZWxwZXIgcHJvZ3JhbSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYWxsb3cgY29uZmlndXJlZCBcCitwcm9ncmFtcyB0byBiZSBydW4gd2l0aCBzdXBlcnVzZXIgcHJpdmlsZWdlcyBieSBvcmRpbmFyeSB1c2VycywgYW5kIHNldmVyYWwgXAorZ3JhcGhpY2FsIHRvb2xzIGZvciB1c2VyczogXAorKiB1c2VyaW5mbyBhbGxvd3MgdXNlcnMgdG8gY2hhbmdlIHRoZWlyIGZpbmdlciBpbmZvcm1hdGlvbi4gXAorKiB1c2VybW91bnQgbGV0cyB1c2VycyBtb3VudCwgdW5tb3VudCwgYW5kIGZvcm1hdCBmaWxlc3lzdGVtcy4gXAorKiB1c2VycGFzc3dkIGFsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlaXIgcGFzc3dvcmRzLiBcCisiCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby91c2VybW9kZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorREVQRU5EUyA9ICJsaWJ1c2VyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBndGsrIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUgXAorICAgICAgICAgICBzdGFydHVwLW5vdGlmaWNhdGlvbiBpbnRsdG9vbC1uYXRpdmUgXAorICAgICAgICAgICB1dGlsLWxpbnV4IFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUxpbmstd2l0aC1saWJtLWZvci1wb3dsLUFQSS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOGJhNTEwZmJkOGRhOWY0ZTg2ZTU3ZDZjMzFjZmYyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQwYjk2MzliNWJkMzk2YjdlYTVmYWRhNmFhYTY5NGRiZmRhYTNhZDA2ZWI5NWE2ZWFiY2RmZDAyZjg3NWM2IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFICs9ICJJTlNUQUxMPSdpbnN0YWxsIC1wJyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQyOTk3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KLXJldmlzaW9uOiBIRUFECi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1ncGVdW3B5cm9dJyBpbiB0aGUgc3ViamVjdCcKLQotV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZ3BlXVtweXJvXVtQQVRDSCcKLQotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvY29uZi9sYXllci5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGYzOTI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJncGUtbGF5ZXIiCi1CQkZJTEVfUEFUVEVSTl9ncGUtbGF5ZXIgOj0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfZ3BlLWxheWVyID0gIjciCi0KLSMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAotIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwotTEFZRVJWRVJTSU9OX2dwZS1sYXllciA9ICIxIgotCi1MQVlFUkRFUEVORFNfZ3BlLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcC8wMDAxLUZpeC10aGUtb3JkZXJpbmctb2YtTERBREQtb3B0aW9ucy10by1maXgtYS1jb21waWxhdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NzZmZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYzU1MWRlY2U2NzY4ZjY3Yjc0YjUwOGU5YzAxMzMzMjAyMDVlZjJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBNb24sIDIzIE1heSAyMDExIDE1OjAzOjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aGUgb3JkZXJpbmcgb2YgTERBREQgb3B0aW9ucyB0byBmaXggYSBjb21waWxhdGlvbiBmYWlsdXJlLgotCi0iaW52YWxpZCBEU08gZm9yIHN5bWJvbCBgWFVuZ3JhYlNlcnZlcicgZGVmaW5pdGlvbiAiCi0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAgICAyICstCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDJmZGRjOTguLjQ1YmQ4NTAgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTYsNyArNiw3IEBAIElOQ0xVREVTID0gLURQS0dEQVRBRElSPVwiJChwa2dkYXRhZGlyKVwiIFwKLSAJICAgJChHTEFERV9DRkxBR1MpIFwKLSAgICAgICAgLURfR05VX1NPVVJDRQotIAotLUxJQlMgPSAkKEdUS19MSUJTKSAkKEdMQURFX0xJQlMpICQoWFNIQVBFX0xJQlMpCi0rTElCUyA9IC1sWDExICQoWFNIQVBFX0xJQlMpICQoR0xBREVfTElCUykgJChHVEtfTElCUykgCi0gCi0gYmluX1BST0dSQU1TID0gZ3BlLXNjYXAKLSBncGVfc2NhcF9TT1VSQ0VTID0gc2NyLWkxOG4uaCBcCi0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwL3VzZS5saWJzb3VwLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcC91c2UubGlic291cC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmU1ZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwL3VzZS5saWJzb3VwLTIuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLWRpZmYgLXVOciBncGUtc2NhcC0xLjQub3JpZy9jb25maWd1cmUuYWMgZ3BlLXNjYXAtMS40L2NvbmZpZ3VyZS5hYwotLS0tIGdwZS1zY2FwLTEuNC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA5LTAzLTA1IDE4OjUzOjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdwZS1zY2FwLTEuNC9jb25maWd1cmUuYWMJMjAxMi0wNS0wNiAxMDoxODoyOS4zNDgzMDgzMjIgKzAyMDAKLUBAIC0yNCw3ICsyNCw3IEBACi0gQUNfU1VCU1QoTERGTEFHUykKLSAKLSBkbmwgbGlicmFyaWVzCi0tR1RLX01PRFVMRVM9Imd0aystMi4wID49IDIuNi4wIGd0aHJlYWQtMi4wIGxpYnNvdXAtMi4yIgotK0dUS19NT0RVTEVTPSJndGsrLTIuMCA+PSAyLjYuMCBndGhyZWFkLTIuMCBsaWJzb3VwLTIuNCIKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssICRHVEtfTU9EVUxFUykKLSBBQ19TVUJTVChHVEtfQ0ZMQUdTKQotIEFDX1NVQlNUKEdUS19MSUJTKQotZGlmZiAtdU5yIGdwZS1zY2FwLTEuNC5vcmlnL3NyYy9zY3Itc2hvdC1jb21tb24uYyBncGUtc2NhcC0xLjQvc3JjL3Njci1zaG90LWNvbW1vbi5jCi0tLS0gZ3BlLXNjYXAtMS40Lm9yaWcvc3JjL3Njci1zaG90LWNvbW1vbi5jCTIwMDktMDMtMDUgMTI6MTM6MjAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3BlLXNjYXAtMS40L3NyYy9zY3Itc2hvdC1jb21tb24uYwkyMDEyLTA1LTA2IDEwOjMwOjUyLjI5OTM3MTU3NiArMDIwMAotQEAgLTE4MiwxMiArMTgyLDEyIEBACi0gICAvKiBjcmVhdGUgc2Vzc2lvbiBhbmQgbWVzc2FnZSAqLwotICAgc2Vzc2lvbiA9IHNvdXBfc2Vzc2lvbl9zeW5jX25ldyAoKTsKLSAgIG1lc3NhZ2UgPSBzb3VwX21lc3NhZ2VfbmV3ICgiUE9TVCIsIHVybCk7Ci0tICBzb3VwX21lc3NhZ2VfYWRkX2hlYWRlciAobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiVXNlci1BZ2VudCIsICJncGUtc2NhcC8iIFZFUlNJT04pOwotLSAgc291cF9tZXNzYWdlX2FkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIsCi0rICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIlVzZXItQWdlbnQiLCAiZ3BlLXNjYXAvIiBWRVJTSU9OKTsKLSsgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZCAobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IiwKLSAJCQkgICAidGV4dC94bWwsYXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxpbWFnZS9wbmcsKi8qO3E9MC41Iik7Ci0tLyogIHNvdXBfbWVzc2FnZV9hZGRfaGVhZGVyIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQtQ2hhcnNldCIsICJBY2NlcHQtQ2hhcnNldD1JU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjciKTsKLS0gIHNvdXBfbWVzc2FnZV9hZGRfaGVhZGVyIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJLZWVwLUFsaXZlIiwgIjEwMCIpOwotLSAgc291cF9tZXNzYWdlX2FkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkNvbm5lY3Rpb24iLCAia2VlcC1hbGl2ZSIpOwotKy8qICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdC1DaGFyc2V0IiwgIkFjY2VwdC1DaGFyc2V0PUlTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNyIpOwotKyAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJLZWVwLUFsaXZlIiwgIjEwMCIpOwotKyAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJDb25uZWN0aW9uIiwgImtlZXAtYWxpdmUiKTsKLSAgIHNvdXBfbWVzc2FnZV93aXJlCWFkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdC1FbmNvZGluZyIsICJnemlwLGRlZmxhdGUiKTsKLSAqLwotICAgLyogYnVpbGQgbWVzc2FnZSBib2R5ICovCi1AQCAtMjA3LDcgKzIwNyw3IEBACi0gICBtZW1jcHkgKGJvZHkgKyBzdHJsZW4gKGNtZCkgKyBsZW4sIHRhaWwsIHN0cmxlbiAodGFpbCkpOwotIAotICAgc291cF9tZXNzYWdlX3NldF9yZXF1ZXN0IChtZXNzYWdlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IlNFUCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9CVUZGRVJfU1lTVEVNX09XTkVELCBib2R5LCBjb250ZW50X2xlbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX1RBS0UsIGJvZHksIGNvbnRlbnRfbGVuKTsKLSAKLSAgIHNvdXBfc2Vzc2lvbl9zZW5kX21lc3NhZ2UgKHNlc3Npb24sIG1lc3NhZ2UpOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcF8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNTBlMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBHUEUgYXBwbGljYXRpb24gdGhhdCBhbGxvd3MgeW91IHRvIHRha2Ugc2NyZWVuc2hvdHMiCi1TRUNUSU9OID0gImdwZSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGd0aysgbGliZ3Bld2lkZ2V0IGxpYmdsYWRlIGxpYnNvdXAtMi40IgotCi1QUiA9ICJyMyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVhZjU0NTU2MWIwYWQ5ODFjOWQwMTgzM2YzMGZjZjk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2Mjc3ODQyMWZhZTdjNjJkNWVjNmE5ZDI3OTg2MTY2YzBkYmJlMmZmNTFmYzEwYmI5YjhiYWZmNWMzNjc1MzQiCi0KLUdQRV9UQVJCQUxMX1NVRkZJWCA9ICJiejIiCi0KLWluaGVyaXQgZ3BlIGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaCBcCi0gICAgZmlsZTovL3VzZS5saWJzb3VwLTIuNC5wYXRjaCBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJncGUtc2NyZWVuc2hvdCIKLQotUE5CTEFDS0xJU1RbZ3BlLXNjYXBdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxpYmdwZXdpZGdldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L2dsaWItMi4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L2dsaWItMi4zMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5MGNhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ3Bld2lkZ2V0L2xpYmdwZXdpZGdldC9nbGliLTIuMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1kaWZmIC11TnIgbGliZ3Bld2lkZ2V0LTAuMTE3Lm9yaWcvZ3BlaGVscC5jIGxpYmdwZXdpZGdldC0wLjExNy9ncGVoZWxwLmMKLS0tLSBsaWJncGV3aWRnZXQtMC4xMTcub3JpZy9ncGVoZWxwLmMJMjAwNi0xMC0xMiAxMjoyMDozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJncGV3aWRnZXQtMC4xMTcvZ3BlaGVscC5jCTIwMTItMDQtMzAgMDc6NDU6NTcuODEzMjkzNzkyICswMjAwCi1AQCAtMzMsNyArMzMsNiBAQAotICNpbmNsdWRlIDxnZGstcGl4YnVmL2dkay1waXhidWYuaD4KLSAjaW5jbHVkZSA8Z2RrL2dkay5oPgotICNpbmNsdWRlIDxnbGliLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ2tleWZpbGUuaD4KLSAKLSAKLSAvKiBoZWxwZXIgZnVuY3Rpb24gZGVmaW5pdGlvbnMqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXQvcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXQvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTdlMDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBjb25maWd1cmUuYWMub3JpZwkyMDA2LTAyLTA0IDE3OjM3OjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGNvbmZpZ3VyZS5hYwkyMDA2LTAyLTA2IDAwOjU2OjI4LjAwMDAwMDAwMCArMDEwMAotQEAgLTM2LDcgKzM2LDcgQEAKLSAJRU5BQkxFX0NBSVJPPSRlbmFibGV2YWwKLSBdLAotIFsKLS0gICAgICAgCVBLR19DSEVDS19FWElTVFMoY2Fpcm8sIFtFTkFCTEVfQ0FJUk89eWVzXSwgW0VOQUJMRV9DQUlSTz1ub10pCi0rICAgICAgIAlQS0dfQ0hFQ0tfTU9EVUxFUyhjYWlybywgW0VOQUJMRV9DQUlSTz15ZXNdLCBbRU5BQkxFX0NBSVJPPW5vXSkKLSBdKQotIAotIEVOQUJMRV9ISUxET049ZmFsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0XzAuMTE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXRfMC4xMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZTI0N2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXRfMC4xMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJncGV3aWRnZXQgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIHdpZGdldHMgYW5kIG90aGVyIGNvbW1vbiBjb2RlIHNoYXJlZCBieSBtYW55IEdQRSBhcHBsaWNhdGlvbnMuIgotU0VDVElPTiA9ICJncGUvbGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLQotREVQRU5EUyA9ICJndGsrIGNhaXJvIGxpYnhpbmVyYW1hIGxpYnhjb21wb3NpdGUgbGlieHJlbmRlciIKLVBSID0gInI1IgotCi1pbmhlcml0IGdwZSBwa2djb25maWcgYXV0b3Rvb2xzIGd0ay1kb2MKLQotU1JDX1VSSSArPSAiZmlsZTovL3BrZ2NvbmZpZy5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgIGZpbGU6Ly9nbGliLTIuMzIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImI4NWE4MzkyNjRhMzVkMGZhZjlhMWEzOGM0ODZlMTg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5NmQzMGMwOWIwMzk1ZWE0ZTE0NjczMGZkNTJkOWVhMzAzYjYxOWJiMTM5MDUxZDlmMTJkM2Y4NjhhOWUxOGMiCi0KLUdQRV9UQVJCQUxMX1NVRkZJWCA9ICJiejIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1jYWlybyAtLWRpc2FibGUtZ3RrLWRvYyIKLUxERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tYmluIgotCi1QTkJMQUNLTElTVFtsaWJncGV3aWRnZXRdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTk0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZS9tYWtlZmlsZS1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbWluaWxpdGUvbWluaWxpdGUvbWFrZWZpbGUtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmU2Y2VhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZS9tYWtlZmlsZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gL3RtcC9NYWtlZmlsZS5vbGQJMjAwNi0wMS0xNiAyMjo1MTozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBtaW5pbGl0ZS0wNTAvTWFrZWZpbGUJMjAwOS0wNS0wMSAxNjozNjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gCi0gaW5zdGFsbC1wcm9ncmFtOiBhbGwKLSAJbWtkaXIgLXAgJChERVNURElSKSQoUFJFRklYKS9iaW4KLS0JJChJTlNUQUxMKSAtcyAkKFBBQ0tBR0UpICQoREVTVERJUikkKFBSRUZJWCkvYmluLyQoUEFDS0FHRSkKLSsJJChJTlNUQUxMKSAkKFBBQ0tBR0UpICQoREVTVERJUikkKFBSRUZJWCkvYmluLyQoUEFDS0FHRSkKLSAJbWtkaXIgLXAgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9hcHBsaWNhdGlvbnMKLSAJJChJTlNUQUxMKSAtbSA2NDQgJChQQUNLQUdFKS5kZXNrdG9wICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvYXBwbGljYXRpb25zLyQoUEFDS0FHRSkuZGVza3RvcAotIAlta2RpciAtcCAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3BpeG1hcHMvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbWluaWxpdGUvbWluaWxpdGVfMC41MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZV8wLjUwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTA2NGZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZV8wLjUwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHUEUgU2NyZWVuIGxpZ2h0IGNvbnRyb2wgZG9ja2FwcCIKLVNFQ1RJT04gPSAiZ3BlIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWluaWxpdGUuYztiZWdpbmxpbmU9ODtlbmRsaW5lPTExO21kNT1mZTkzMzJhYWVjYmNlOWY3NGNlMmJmZWI5MTY4MGVkMSIKLQotREVQRU5EUyA9ICJsaWJncGV3aWRnZXQiCi0KLWluaGVyaXQgZ3BlCi0KLVNSQ19VUkkgPSAiJHtHUEVfTUlSUk9SfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtZml4LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImQ4MWNlY2YyNjlhZDdiYWIwZGE5NjBlNmU3MjI4MzMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiMjk5NDI1MjAzMjQ2MDkwYTQ5NDllMDM0ZjFkMGVmYjNmZjk5Y2QxNTkxZDBlMTZjNTczNzBhNTMwYjM2MWUiCi0KLWV4cG9ydCBDVlNCVUlMRD0ibm8iCi0KLVBOQkxBQ0tMSVNUW21pbmlsaXRlXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBsaWJncGV3aWRnZXQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL01ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXItMC4xMi4xMC9NYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU0OThjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL01ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotZGlmZiAtdXJpIGZicmVhZGVyLTAuMTIuMS5vcmlnL2ZicmVhZGVyL01ha2VmaWxlIGZicmVhZGVyLTAuMTIuMS9mYnJlYWRlci9NYWtlZmlsZQotLS0tIGZicmVhZGVyLTAuMTIuMS5vcmlnL2ZicmVhZGVyL01ha2VmaWxlCTIwMDktMTItMTMgMDk6MDM6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZmJyZWFkZXItMC4xMi4xL2ZicmVhZGVyL01ha2VmaWxlCTIwMDktMTItMTQgMTc6MTg6NDcuNTQ4NjM4NzgzICswMTAwCi1AQCAtMzcsNyArMzcsNiBAQAotIAlAaW5zdGFsbCAkKFRBUkdFVCkgJChERVNURElSKSQoQklORElSKS9GQlJlYWRlcgotIAlAaW5zdGFsbCAtZCAkKEZCU0hBUkVESVIpCi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvaGVscAotLQlALi9zY3JpcHRzL2luc3RhbGxfaGVscC5zaCAkKFZBUklBTlQpICQoRkJTSEFSRURJUikvaGVscAotIAlAaW5zdGFsbCAtZCAkKEZCU0hBUkVESVIpL25ldHdvcmsKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvbmV0d29yay8qLnhtbCkgJChGQlNIQVJFRElSKS9uZXR3b3JrCi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvbmV0d29yay9jZXJ0aWZpY2F0ZXMKLUBAIC01OCw4ICs1Nyw4IEBACi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvcmVzb3VyY2VzCi0gCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL3Jlc291cmNlcy8qLnhtbCkgJChGQlNIQVJFRElSKS9yZXNvdXJjZXMKLSAJQGluc3RhbGwgLWQgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLS0JQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvdG9vbGJhci8kKFZBUklBTlQpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLS0JQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvZmlsZXRyZWUvJChWQVJJQU5UKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0rCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL3Rvb2xiYXIvJChUQVJHRVRfQVJDSCkvKi4qKSAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotKwlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy9maWxldHJlZS8kKFRBUkdFVF9BUkNIKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0gCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL2Jvb2t0cmVlL25ldy8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0gCUBtYWtlIC1DICQoVEFSR0VUX0FSQ0gpIFJFU09MVVRJT049JChSRVNPTFVUSU9OKSBpbnN0YWxsCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1jZmxhZ3MtZnJpYmlkaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZml4LWNmbGFncy1mcmliaWRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzJmYThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZml4LWNmbGFncy1mcmliaWRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGZicmVhZGVyLTAuMTIuMTAvbWFrZWZpbGVzL2NvbmZpZy5tay5vcmlnCTIwMTYtMDUtMDMgMTE6MTE6MDcuMjU5NzM0NTYxIC0wNDAwCi0rKysgZmJyZWFkZXItMC4xMi4xMC9tYWtlZmlsZXMvY29uZmlnLm1rCTIwMTYtMDUtMDMgMTE6MTE6MzcuNDQ3NzM1Nzg2IC0wNDAwCi1AQCAtMzgsNyArMzgsNyBAQAotIAlMREZMQUdTICs9IC1wZwotIGVuZGlmCi0gCi0tWklOQ0xVREUgPSAtSSAkKFJPT1RESVIpL3psaWJyYXJ5L2NvcmUvaW5jbHVkZSAtSSAkKFJPT1RESVIpL3psaWJyYXJ5L3RleHQvaW5jbHVkZQotK1pJTkNMVURFID0gJChzaGVsbCBwa2ctY29uZmlnIC0tY2ZsYWdzIGZyaWJpZGkpIC1JICQoUk9PVERJUikvemxpYnJhcnkvY29yZS9pbmNsdWRlIC1JICQoUk9PVERJUikvemxpYnJhcnkvdGV4dC9pbmNsdWRlCi0gCi0gWkxTSEFSRUQgPz0geWVzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXItMC4xMi4xMC9maXgtcmV0dXJuLWNvZGUtZ2NjNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdhYjRkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2RhdGFiYXNlL2Jvb2tzZGIvQm9va3NEQi5jcHAub3JpZwkyMDE2LTA2LTA4IDE0OjU0OjA0LjIwNjE5NjUwMSAtMDQwMAotKysrIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2RhdGFiYXNlL2Jvb2tzZGIvQm9va3NEQi5jcHAJMjAxNi0wNi0wOCAxNDo1NDoxNy42ODYxOTYzMjIgLTA0MDAKLUBAIC0xNDUsNyArMTQ1LDcgQEAKLSAKLSAJbXlGaW5kRmlsZUlkLT5zZXRGaWxlTmFtZShmaWxlTmFtZSk7Ci0gCWlmICghbXlGaW5kRmlsZUlkLT5ydW4oKSkgewotLQkJcmV0dXJuIGZhbHNlOwotKwkJcmV0dXJuIDA7Ci0gCX0KLSAJKChEQkludFZhbHVlJikqbXlMb2FkQm9vay0+cGFyYW1ldGVyKCJAZmlsZV9pZCIpLnZhbHVlKCkpID0gbXlGaW5kRmlsZUlkLT5maWxlSWQoKTsKLSAJc2hhcmVkX3B0cjxEQkRhdGFSZWFkZXI+IHJlYWRlciA9IG15TG9hZEJvb2stPmV4ZWN1dGVSZWFkZXIoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZ2NjNDUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2djYzQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGNiYTEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZ2NjNDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0gIEZpeCBjb21waWxhdGlvbiB3aXRoIGdjYyA0LjUKLQotICBbRkJyZWFkZXIgVGlja2V0ICMzNDBdIC0tIGh0dHA6Ly9vbGQuZmJyZWFkZXIub3JnL21hbnRpcy92aWV3LnBocD9pZD0zNDAKLQotICBXaXRob3V0IHRoYXQgcGF0Y2ggd2UgaGF2ZToKLSAgICBDb21waWxpbmcgTGlicmFyeS5vIC4uLkxpYnJhcnkuY3BwOjQyOjE6IGVycm9yOiAnTGlicmFyeTo6TGlicmFyeScgbmFtZXMgdGhlIGNvbnN0cnVjdG9yLCBub3QgdGhlIHR5cGUKLQotICBVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtGaXhlZCBpbiBWZXJzaW9uIDAuMTQuMF0KLQotLS0tIGZicmVhZGVyLTAuMTIuMTAtb3JpZy9mYnJlYWRlci9zcmMvbGlicmFyeS9MaWJyYXJ5LmNwcAkyMDEwLTA0LTAxIDE1OjE0OjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2xpYnJhcnkvTGlicmFyeS5jcHAJMjAxMC0wNC0xMyAxMzozNDowNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zOSw3ICszOSw3IEBACi0gc2hhcmVkX3B0cjxMaWJyYXJ5PiBMaWJyYXJ5OjpvdXJJbnN0YW5jZTsKLSBjb25zdCBzaXplX3QgTGlicmFyeTo6TWF4UmVjZW50TGlzdFNpemUgPSAxMDsKLSAKLS1MaWJyYXJ5OjpMaWJyYXJ5ICZMaWJyYXJ5OjpJbnN0YW5jZSgpIHsKLStMaWJyYXJ5ICZMaWJyYXJ5OjpJbnN0YW5jZSgpIHsKLSAJaWYgKG91ckluc3RhbmNlLmlzTnVsbCgpKSB7Ci0gCQlvdXJJbnN0YW5jZSA9IG5ldyBMaWJyYXJ5KCk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyXzAuMTIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlcl8wLjEyLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGJjZWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyXzAuMTIuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkZCcmVhZGVyIGlzIGFuIGVib29rIHJlYWRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZmJyZWFkZXIub3JnIgotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ZicmVhZGVyL0xJQ0VOU0U7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJndGsrIGVuY2EgZXhwYXQgYnppcDIgbGliZ3Bld2lkZ2V0IHZpcnR1YWwvbGliaWNvbnYgbGlibGluZWJyZWFrIGxpYmZyaWJpZGkgY3VybCBzcWxpdGUzIgotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZicmVhZGVyLm9yZy9mYnJlYWRlci1zb3VyY2VzLSR7UFZ9LnRneiBcCi1maWxlOi8vTWFrZWZpbGUucGF0Y2ggXAotZmlsZTovL2djYzQ1LnBhdGNoIFwKLWZpbGU6Ly9maXgtY2ZsYWdzLWZyaWJpZGkucGF0Y2ggXAotZmlsZTovL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoIgotCi0jIFNldCB0aGUgZGVmYXVsdHMKLVJFQURFUl9SRVNPTFVUSU9OID89ICIxMDI0eDYwMCIKLVJFQURFUl9BUkNIICAgICAgID89ICJkZXNrdG9wIgotUkVBREVSX1VJICAgICAgICAgPz0gImd0ayIKLVJFQURFUl9TVEFUVVMgICAgID89ICJyZWxlYXNlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9GQlJlYWRlciAke2RhdGFkaXJ9L3psaWJyYXJ5ICR7bGliZGlyfS96bGlicmFyeSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3psaWJyYXJ5L3VpLy5kZWJ1Zy8iCi0KLUNGTEFHU19hcHBlbmQgPSAiIFJFU09MVVRJT049JHtSRUFERVJfUkVTT0xVVElPTn0gSU5TVEFMTERJUj0ke3ByZWZpeH0iCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q1hYfScgTEQ9JyR7Q1hYfScgTERGTEFHUz0nJHtMREZMQUdTfScgSU5DUEFUSD0nJHtTVEFHSU5HX0lOQ0RJUn0nIExJQlBBVEg9JyR7U1RBR0lOR19MSUJESVJ9JyIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7V09SS0RJUn0vJHtQTn0tJHtQVn0KLSAgICBtdiBtYWtlZmlsZXMvdGFyZ2V0Lm1rIG1ha2VmaWxlcy90YXJnZXQubWsub3JpZwotCi0gICAgZWNobyAiVEFSR0VUX0FSQ0ggPSAke1JFQURFUl9BUkNIfSIgPiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi0gICAgZWNobyAiVUlfVFlQRSA9ICR7UkVBREVSX1VJfSIgPj4gbWFrZWZpbGVzL3RhcmdldC5tawotICAgIGVjaG8gIlRBUkdFVF9TVEFUVVMgPSAke1JFQURFUl9TVEFUVVN9IiA+PiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBSRVNPTFVUSU9OPSR7UkVBREVSX1JFU09MVVRJT059Ci19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYTllYzQ3MjFlZmRiMGVjMGFhYTE4MmJmZjE2YWQ4MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjhhZWM0NTRkYjgwZTIyNWFhMGI1YzMxYWRlZjc0YmY2MmExNDM1NzQ4Mjk0N2U4N2U5NzMxNjg2YjNjNjI0IgotCi1QTkJMQUNLTElTVFtmYnJlYWRlcl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ3Bld2lkZ2V0IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2U3OTQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiRkJyZWFkZXIgaXMgYW4gZWJvb2sgcmVhZGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mYnJlYWRlci5vcmciCi1TRUNUSU9OID0gIngxMS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZmJyZWFkZXIvTElDRU5TRTttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImd0aysgZW5jYSBleHBhdCBiemlwMiBsaWJncGV3aWRnZXQgdmlydHVhbC9saWJpY29udiBsaWJsaW5lYnJlYWsgbGliZnJpYmlkaSBjdXJsIHNxbGl0ZTMiCi1TUkNSRVYgPSAiMmNmMWVjMGUzMDZlMTEyMmRiZWQ4NTBiZmEwMDVjZDU5YTYxNjhlZSIKLVBWID0gIjAuOTkuNStnaXRyJHtTUkNQVn0iCi0KLVBSID0gInIxIgotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nZW9tZXRlci9GQlJlYWRlci5naXQ7cHJvdG9jb2w9aHR0cDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaCIKLQotIyBTZXQgdGhlIGRlZmF1bHRzCi1SRUFERVJfUkVTT0xVVElPTiA/PSAiMTAyNHg2MDAiCi1SRUFERVJfQVJDSCAgICAgICA/PSAiZGVza3RvcCIKLVJFQURFUl9VSSAgICAgICAgID89ICJndGsiCi1SRUFERVJfU1RBVFVTICAgICA/PSAicmVsZWFzZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vRkJSZWFkZXIgJHtkYXRhZGlyfS96bGlicmFyeSAke2xpYmRpcn0vemxpYnJhcnkiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS96bGlicmFyeS91aS8uZGVidWcvIgotCi1DRkxBR1NfYXBwZW5kID0gIiBSRVNPTFVUSU9OPSR7UkVBREVSX1JFU09MVVRJT059IElOU1RBTExESVI9JHtwcmVmaXh9IgotRVhUUkFfT0VNQUtFID0gIkNDPScke0NYWH0nIExEPScke0NYWH0nIElOQ1BBVEg9JyR7U1RBR0lOR19JTkNESVJ9JyBMSUJQQVRIPScke1NUQUdJTkdfTElCRElSfSciCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY2QgIiR7U30iCi0KLSAgICBlY2hvICJUQVJHRVRfQVJDSCA9ICR7UkVBREVSX0FSQ0h9IiA+IG1ha2VmaWxlcy90YXJnZXQubWsKLSAgICBlY2hvICJVSV9UWVBFID0gJHtSRUFERVJfVUl9IiA+PiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi0gICAgZWNobyAiVEFSR0VUX1NUQVRVUyA9ICR7UkVBREVSX1NUQVRVU30iID4+IG1ha2VmaWxlcy90YXJnZXQubWsKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFJFU09MVVRJT049JHtSRUFERVJfUkVTT0xVVElPTn0KLX0KLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MTgvCi1QTkJMQUNLTElTVFtmYnJlYWRlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZpbGVzLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZpbGVzLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZlMTIwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9maWxlcy8wMDAxLUZpeC1pbnN0YWxsYXRpb24tb2YtdGhlLWljb25zLXdoZW4tUkVTT0xVVElPTi1pcy1zZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGRhNDE3MGI2MWJiNDFlZmYwYWYxNzBkMWQ3N2JmZDkwZjllYmU1ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5pcyAnR05VdG9vJyBDYXJpa2xpIDxHTlV0b29Abm8tbG9nLm9yZz4KLURhdGU6IEZyaSwgMjAgSmFuIDIwMTIgMTE6MzQ6NDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluc3RhbGxhdGlvbiBvZiB0aGUgaWNvbnMgd2hlbiBSRVNPTFVUSU9OIGlzIHNldAotCi1XaGVuIHJlc29sdXRpb24gaXMgc2V0LCB0aGUgZm9sbG93aW5nIGNvZGUoaW4gZmJyZWFkZXIvTWFrZWZpbGUpIGlzIGV4ZWN1dGVkOgotICBWQVJJQU5UID0gJChUQVJHRVRfQVJDSCkKLSAgaWZuZXEgIiQoUkVTT0xVVElPTikiICIiCi0gICAgVkFSSUFOVCA9ICQoVEFSR0VUX0FSQ0gpXyQoUkVTT0xVVElPTikKLSAgZW5kaWYKLQotVGhpcyBmaXggaXMgYmFzZWQgb24gYSBwYXRjaCBmcm9tIHRoZSBvcGVuZW1iZWRkZWQgcHJvamVjdCwKLSAgd2hpY2ggY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQvdHJlZS9yZWNpcGVzL2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMS9NYWtlZmlsZS5wYXRjaAotCi1TaWduZWQtb2ZmLWJ5OiBEZW5pcyAnR05VdG9vJyBDYXJpa2xpIDxHTlV0b29Abm8tbG9nLm9yZz4KLS0tLQotIFN1Ym1pdHRlZCB0cm91Z2ggZ2l0aHViIHRvIGdpdDovL2dpdGh1Yi5jb20vZ2VvbWV0ZXIvRkJSZWFkZXIuZ2l0IGFzIGEgcHVsbCByZXF1ZXN0Ci0KLSBmYnJlYWRlci9NYWtlZmlsZSB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZmJyZWFkZXIvTWFrZWZpbGUgYi9mYnJlYWRlci9NYWtlZmlsZQotaW5kZXggYmZhOTI0Mi4uMDNlNmNjMyAxMDA2NDQKLS0tLSBhL2ZicmVhZGVyL01ha2VmaWxlCi0rKysgYi9mYnJlYWRlci9NYWtlZmlsZQotQEAgLTYwLDggKzYwLDggQEAgZG9faW5zdGFsbDoKLSAJQGluc3RhbGwgLWQgJChGQlNIQVJFRElSKS9yZXNvdXJjZXMKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvcmVzb3VyY2VzLyoueG1sKSAkKEZCU0hBUkVESVIpL3Jlc291cmNlcwotIAlAaW5zdGFsbCAtZCAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotLQlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy90b29sYmFyLyQoVkFSSUFOVCkvKi4qKSAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotLQlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy9maWxldHJlZS8kKFZBUklBTlQpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSsJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvdG9vbGJhci8kKFRBUkdFVF9BUkNIKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0rCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL2ZpbGV0cmVlLyQoVEFSR0VUX0FSQ0gpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvYm9va3RyZWUvbmV3LyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSAJQG1ha2UgLUMgJChUQVJHRVRfQVJDSCkgUkVTT0xVVElPTj0kKFJFU09MVVRJT04pIGluc3RhbGwKLSAKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FCmluZGV4IDljMDVlMWYuLmI3ZGJmZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FCkBAIC0xMiw3ICsxMiw3IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybworYnJhbmNoOiByb2NrbwogcmV2aXNpb246IEhFQUQKIAogCkBAIC0yMCwxMiArMjAsMTIgQEAKIC0tLS0tLS0tLS0tCiAKIFNlbmQgcGF0Y2hlcyAvIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKLXdpdGggJ1ttZXRhLWluaXRyYW1mc11bcHlyb10nIGluIHRoZSBzdWJqZWN0Lgord2l0aCAnW21ldGEtaW5pdHJhbWZzXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0LgogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1pbml0cmFtZnNdW3B5cm9dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWluaXRyYW1mc11bcm9ja29dW1BBVENIJwogCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgorcm9ja28gQnJhbmNoIE1haW50YWluZXI6CiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY2xhc3Nlcy9rbGliYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jbGFzc2VzL2tsaWJjLmJiY2xhc3MKaW5kZXggZjg2NDEwNC4uYjdiNzJiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jbGFzc2VzL2tsaWJjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jbGFzc2VzL2tsaWJjLmJiY2xhc3MKQEAgLTMsMTMgKzMsMTQgQEAKIAogIyBEZWZhdWx0IGZvciBrbGNjIGlzIHRvIGJ1aWxkIHN0YXRpYyBiaW5hcmllcy4KICMgU2V0IENDID0gIiR7VEFSR0VUX1BSRUZJWH1rbGNjIC1zaGFyZWQiIHRvIGJ1aWxkIHRoZSBkeW5hbWljIHZlcnNpb24uCitDQ19mb3JjZXZhcmlhYmxlID0gIiR7VEFSR0VUX1BSRUZJWH1rbGNjICR7VE9PTENIQUlOX09QVElPTlN9IgorQ0NfZm9yY2V2YXJpYWJsZV9hcm12NF9saW51eC1nbnVlYWJpID0gIiR7VEFSR0VUX1BSRUZJWH1rbGNjICR7VE9PTENIQUlOX09QVElPTlN9IC1tYXJjaD1hcm12NCAtbXRodW1iLWludGVyd29yayIKK0NDX2FwcGVuZF9hcm12N3ZlID0gIiAke0AnIC1tZmxvYXQtYWJpPSR7VFVORV9DQ0FSR1NfTUZMT0FUfScgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRkxPQVQnKSAhPSAnJykgZWxzZSAnJ30iCitDQ19hcHBlbmRfYXJtdjdhID0gIiAke0AnIC1tZmxvYXQtYWJpPSR7VFVORV9DQ0FSR1NfTUZMT0FUfScgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRkxPQVQnKSAhPSAnJykgZWxzZSAnJ30iCiAKLWV4cG9ydCBDQyA9ICIke1RBUkdFVF9QUkVGSVh9a2xjYyAke1RPT0xDSEFJTl9PUFRJT05TfSIKLWV4cG9ydCBDQ19hcm12NF9saW51eC1nbnVlYWJpID0gIiR7VEFSR0VUX1BSRUZJWH1rbGNjICR7VE9PTENIQUlOX09QVElPTlN9IC1tYXJjaD1hcm12NCAtbXRodW1iLWludGVyd29yayIKLQotZXhwb3J0IENQUCA9ICIke0NDfSAtRSIKK0NQUF9mb3JjZXZhcmlhYmxlID0gIiR7Q0N9IC1FIgogCiAjIGtsY2MgdXNlcyBvd24gb3B0aW1pemF0aW9ucyBieSBkZWZhdWx0LiBTZWUga2xjYygxKSBtYW4gZmlsZS4KLWV4cG9ydCBDRkxBR1M9IiIKLWV4cG9ydCBDUFBGTEFHUz0iIgotZXhwb3J0IExERkxBR1M9IiIKK2V4cG9ydCBDRkxBR1M9IiR7VFVORV9DQ0FSR1N9IgorZXhwb3J0IENQUEZMQUdTPSIke1RVTkVfQ0NBUkdTfSIKK2V4cG9ydCBMREZMQUdTPSIke1RVTkVfQ0NBUkdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWltYWdlLmJiCmluZGV4IDgzNWIzMDcuLjI1NzNlYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1pbWFnZS5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiSW5pdHJhbWZzIGltYWdlIGZvciBrZXhlY2Jvb3Qga2VybmVsIgogREVTQ1JJUFRJT04gPSAiVGhpcyBpbWFnZSBwcm92aWRlcyBrZXhlY2Jvb3QgKGxpbnV4IGFzIGJvb3Rsb2FkZXIpIGFuZCBoZWxwZXJzLiIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogaW5oZXJpdCBpbWFnZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCmluZGV4IGI3ZGVmZmYuLjY2NzY5MGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJFeHRyZW1lbHkgYmFzaWMgbGl2ZSBpbWFnZSBpbml0IHNjcmlwdCIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIFNSQ19VUkkgPSAiZmlsZTovL2luaXQtZGVidWcuc2giCiAKIFMgPSAiJHtXT1JLRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDEta2V4ZWNib290LWZpeC1idWlsZC13aGVuLVMtQi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDEta2V4ZWNib290LWZpeC1idWlsZC13aGVuLVMtQi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQzMjcwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAxLWtleGVjYm9vdC1maXgtYnVpbGQtd2hlbi1TLUIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDg1MTlkNjFhNzA5NzQ5OGIwZWU5M2ZiOGRjODI2MjI4NjgyNWYzZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEgTWF5IDIwMTQgMjM6NTg6NTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIGtleGVjYm9vdDogZml4IGJ1aWxkIHdoZW4gUyAhPSBCCi0KLSogZmF0YWwgZXJyb3I6IC4uL2NvbmZpZy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIG1hY2hpbmUvemF1cnVzLmMgfCAyICstCi0gcmVzL3RoZW1lLWd1aS5oICB8IDIgKy0KLSByZXMvdGhlbWUtdHVpLmggIHwgNCArKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tYWNoaW5lL3phdXJ1cy5jIGIvbWFjaGluZS96YXVydXMuYwotaW5kZXggZWEyMTA0Ny4uODNiZTEzYiAxMDA2NDQKLS0tLSBhL21hY2hpbmUvemF1cnVzLmMKLSsrKyBiL21hY2hpbmUvemF1cnVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gICoKLSAgKi8KLSAKLS0jaW5jbHVkZSAiLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotIAotICNpZmRlZiBVU0VfWkFVUlVTCi0gCi1kaWZmIC0tZ2l0IGEvcmVzL3RoZW1lLWd1aS5oIGIvcmVzL3RoZW1lLWd1aS5oCi1pbmRleCBmOGZlZjdmLi43OWJlZDM5IDEwMDY0NAotLS0tIGEvcmVzL3RoZW1lLWd1aS5oCi0rKysgYi9yZXMvdGhlbWUtZ3VpLmgKLUBAIC0xNSw3ICsxNSw3IEBACi0gICoKLSAgKi8KLSAKLS0jaW5jbHVkZSAiLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotIAotICNpZmRlZiBVU0VfSUNPTlMKLSAvKiogSWNvbnMgKiovCi1kaWZmIC0tZ2l0IGEvcmVzL3RoZW1lLXR1aS5oIGIvcmVzL3RoZW1lLXR1aS5oCi1pbmRleCA5NGU3NjkzLi45MDliZTU2IDEwMDY0NAotLS0tIGEvcmVzL3RoZW1lLXR1aS5oCi0rKysgYi9yZXMvdGhlbWUtdHVpLmgKLUBAIC0xNSwxMSArMTUsMTEgQEAKLSAgKgotICAqLwotIAotLSNpbmNsdWRlICIuLi9jb25maWcuaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gI2lmZGVmIFVTRV9URVhUVUkKLSAvKiogVEVYVCBVSSBjb2xvcnMgKiovCi0tI2luY2x1ZGUgIi4uL3Rlcm1zZXEuaCIKLSsjaW5jbHVkZSAidGVybXNlcS5oIgotIAotIC8qIEJhY2tncm91bmQgY29sb3IgcGFpciAqLwotICNkZWZpbmUgVFVJX0NMUl9CRwkJVEVSTV9DU0kgVEVSTV9CR19CTEFDSyAiOyIgVEVSTV9GR19XSElURSBURVJNX1NHUgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAyLWtleGVjYm9vdC1maXgtY29uZmlndXJlLXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMi1rZXhlY2Jvb3QtZml4LWNvbmZpZ3VyZS13YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmNDIyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAyLWtleGVjYm9vdC1maXgtY29uZmlndXJlLXdhcm5pbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiODkzOGFjYzNmMWFiMzUyNzNmYTlhMmZhNzcyODA1MGVmNzJmZjY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIE1heSAyMDE0IDAwOjE5OjI0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBrZXhlY2Jvb3Q6IGZpeCBjb25maWd1cmUgd2FybmluZ3MKLQotTWFrZWZpbGUuYW06NTogd2FybmluZzogc291cmNlIGZpbGUgJ2ZzdHlwZS9mc3R5cGUuYycgaXMgaW4gYSBzdWJkaXJlY3RvcnksCi1NYWtlZmlsZS5hbTo1OiBidXQgb3B0aW9uICdzdWJkaXItb2JqZWN0cycgaXMgZGlzYWJsZWQKLWF1dG9tYWtlOiB3YXJuaW5nOiBwb3NzaWJsZSBmb3J3YXJkLWluY29tcGF0aWJpbGl0eS4KLS4uLgotTWFrZWZpbGUuYW06NTogd2FybmluZzogc291cmNlIGZpbGUgJ21hY2hpbmUvemF1cnVzLmMnIGlzIGluIGEgc3ViZGlyZWN0b3J5LAotLi4uCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGNhNGI4MS4uNjZlYzU0ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMSw3ICsxLDcgQEAKLSBBQ19QUkVSRVEoMi41MykKLSBBQ19JTklUKFtrZXhlY2Jvb3RdLCBbMC42XSwgW2tleGVjYm9vdC1kZXZlbEBsaW51eHRvZ28ub3JnXSkKLSBBQ19DQU5PTklDQUxfSE9TVAotLUFNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ25dKQotK0FNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ25dIFtzdWJkaXItb2JqZWN0c10pCi0gQUNfQ09ORklHX1NSQ0RJUihrZXhlY2Jvb3QuYykKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLSBBTV9NQUlOVEFJTkVSX01PREUKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMy1rZXhlY2Jvb3QtZG8tbm90LWhhcmRjb2RlLU1PVU5UUE9JTlQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAzLWtleGVjYm9vdC1kby1ub3QtaGFyZGNvZGUtTU9VTlRQT0lOVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNhYTBkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAzLWtleGVjYm9vdC1kby1ub3QtaGFyZGNvZGUtTU9VTlRQT0lOVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLUZyb20gODAwZGFlMGQzNGY4NjI5YTM0YzYzOGE2MTIxNjZiNzZkZGEwM2UyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMiBBdWcgMjAxNCAwMToxMzowOCArMDIwMAotU3ViamVjdDogW1BBVENIIDMvNF0ga2V4ZWNib290OiBkbyBub3QgaGFyZGNvZGUgTU9VTlRQT0lOVAotCi1Bdm9pZCB0byBoYXJkY29kZSBpdDogY291bGQgYmUgcmVxdWVzdGVkIGFzIGEgbmV3IGNvbmZpZ3VyZSBvcHRpb24uCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIGNmZ3BhcnNlci5jIHwgIDYgKysrLS0tCi0ga2V4ZWNib290LmMgfCAxOCArKysrKysrKysrLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2ZncGFyc2VyLmMgYi9jZmdwYXJzZXIuYwotaW5kZXggOGY2Njg4Yy4uZGVjMjdiMSAxMDA2NDQKLS0tLSBhL2NmZ3BhcnNlci5jCi0rKysgYi9jZmdwYXJzZXIuYwotQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IHNldF9rZXJuZWwoc3RydWN0IGNmZ2RhdGFfdCAqY2ZnZGF0YSwgY2hhciAqdmFsdWUpCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLS0Jc3RyY3B5KHNjLT5rZXJuZWxwYXRoLCAiL21udCIpOwotKwlzdHJjcHkoc2MtPmtlcm5lbHBhdGgsIE1PVU5UUE9JTlQpOwotIAlzdHJjYXQoc2MtPmtlcm5lbHBhdGgsIHZhbHVlKTsKLSAJcmV0dXJuIDA7Ci0gfQotQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgaW50IHNldF9pY29uKHN0cnVjdCBjZmdkYXRhX3QgKmNmZ2RhdGEsIGNoYXIgKnZhbHVlKQotIAotIAlkaXNwb3NlKHNjLT5pY29ucGF0aCk7Ci0gCS8qIEFkZCBvdXIgbW91bnRwb2ludCwgc2luY2UgdGhlIGVuZHVzZXIgd29uJ3Qga25vdyBpdCAqLwotLQlzYy0+aWNvbnBhdGggPSBtYWxsb2Moc2l6ZW9mKE1PVU5UUE9JTlQpK3N0cmxlbih2YWx1ZSkpOwotKwlzYy0+aWNvbnBhdGggPSBtYWxsb2Moc3RybGVuKE1PVU5UUE9JTlQpK3N0cmxlbih2YWx1ZSkrMSk7Ci0gCWlmIChOVUxMID09IHNjLT5pY29ucGF0aCkgewotIAkJRFBSSU5URigiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHN0b3JlIGljb25wYXRoICclcyciLCB2YWx1ZSk7Ci0gCQlyZXR1cm4gLTE7Ci1AQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgc2V0X2luaXRyZChzdHJ1Y3QgY2ZnZGF0YV90ICpjZmdkYXRhLCBjaGFyICp2YWx1ZSkKLSAJCXJldHVybiAtMTsKLSAJfQotIAotLQlzdHJjcHkoc2MtPmluaXRyZCwgIi9tbnQiKTsKLSsJc3RyY3B5KHNjLT5pbml0cmQsIE1PVU5UUE9JTlQpOwotIAlzdHJjYXQoc2MtPmluaXRyZCwgdmFsdWUpOwotIAlyZXR1cm4gMDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWNib290LmMgYi9rZXhlY2Jvb3QuYwotaW5kZXggZDY2NTdhMC4uNzI2OGQ2YiAxMDA2NDQKLS0tLSBhL2tleGVjYm9vdC5jCi0rKysgYi9rZXhlY2Jvb3QuYwotQEAgLTU3LDIwICs1NywyMiBAQAotICNlbmRpZgotIAotICNpZmRlZiBVU0VfTUFDSElORV9LRVJORUwKLS0vKiBNYWNoaW5lLWRlcGVuZGVudCBrZXJuZWwgcGF0Y2ggKi8KLSsvKiBNYWNoaW5lLWRlcGVuZGVudCBrZXJuZWwgcGF0aCAqLwotIGNoYXIgKm1hY2hpbmVfa2VybmVsID0gTlVMTDsKLSAjZW5kaWYKLSAKLSsjZGVmaW5lIFBSRVBFTkRfTU9VTlRQQVRIKHN0cmluZykgTU9VTlRQT0lOVCIic3RyaW5nCi0rCi0gLyogTlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIGtlcm5lbCBzZWFyY2ggcGF0aHMKLSAgKiBGaXJzdCBpdGVtIHNob3VsZCBiZSBmaWxsZWQgd2l0aCBtYWNoaW5lLWRlcGVuZGVudCBwYXRoICovCi0gY2hhciAqZGVmYXVsdF9rZXJuZWxzW10gPSB7Ci0gI2lmZGVmIFVTRV9aSU1BR0UKLS0JIi9tbnQvYm9vdC96SW1hZ2UiLAotLQkiL21udC96SW1hZ2UiLAotKwlQUkVQRU5EX01PVU5UUEFUSCgiL2Jvb3QvekltYWdlIiksCi0rCVBSRVBFTkRfTU9VTlRQQVRIKCIvekltYWdlIiksCi0gI2VuZGlmCi0gI2lmZGVmIFVTRV9VSU1BR0UKLS0JIi9tbnQvYm9vdC91SW1hZ2UiLAotLQkiL21udC91SW1hZ2UiLAotKwlQUkVQRU5EX01PVU5UUEFUSCgiL2Jvb3QvdUltYWdlIiksCi0rCVBSRVBFTkRfTU9VTlRQQVRIKCIvdUltYWdlIiksCi0gI2VuZGlmCi0gCU5VTEwKLSB9OwotQEAgLTE0OSwxNCArMTUxLDE0IEBAIGNoYXIgKmdldF9tYWNoaW5lX2tlcm5lbHBhdGgoKSB7Ci0gCQkJKyt0bXA7Ci0gCQl9Ci0gCi0tCQkvKiBQcmVwZW5kICIvbW50L2Jvb3QvekltYWdlLSIgdG8gaHcgKi8KLS0JCXRtcCA9IG1hbGxvYyhzdHJsZW4oaHcpICsgMTcgKyAxKTsJLyogc3RybGVuKCIvbW50L2Jvb3QvekltYWdlLSIpICovCi0rCQkvKiBQcmVwZW5kICBNT1VOVFBPSU5UIi9ib290L3pJbWFnZS0iIHRvIGh3ICovCi0rCQl0bXAgPSBtYWxsb2Moc3RybGVuKFBSRVBFTkRfTU9VTlRQQVRIKCIvYm9vdC96SW1hZ2UtIikpICsgc3RybGVuKGh3KSArIDEpOwotIAkJaWYgKE5VTEwgPT0gdG1wKSB7Ci0gCQkJRFBSSU5URigiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBtYWNoaW5lLXNwZWNpZmljIGtlcm5lbCBwYXRoIik7Ci0gCQkJcmV0dXJuIE5VTEw7Ci0gCQl9Ci0gCi0tCQlzdHJjcHkodG1wLCAiL21udC9ib290L3pJbWFnZS0iKTsKLSsJCXN0cmNweSh0bXAsIFBSRVBFTkRfTU9VTlRQQVRIKCIvYm9vdC96SW1hZ2UtIikpOwotIAkJc3RyY2F0KHRtcCwgaHcpOwotIAotIAkJcmV0dXJuIHRtcDsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwNC1rZXhlY2Jvb3QuYy13b3JrYXJvdW5kLWZvci1hYnNvbHV0ZS1rZXJuZWwtYW5kLWluaXRyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwNC1rZXhlY2Jvb3QuYy13b3JrYXJvdW5kLWZvci1hYnNvbHV0ZS1rZXJuZWwtYW5kLWluaXRyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDgxZDgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDQta2V4ZWNib290LmMtd29ya2Fyb3VuZC1mb3ItYWJzb2x1dGUta2VybmVsLWFuZC1pbml0ci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1Gcm9tIGRlOWE2Mjg0ZGY4YWRkNmVjMDNlMWQ5OTgxZDBiNmQwNTk1YmJjNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEwIE5vdiAyMDE0IDIzOjM3OjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBrZXhlY2Jvb3QuYzogd29ya2Fyb3VuZCBmb3IgYWJzb2x1dGUga2VybmVsIGFuZCBpbml0cmQKLSBzeW1saW5rcwotCi1BZGQgTU9VTlRQT0lOVCBwcmVmaXggaWYgdGhlIGtlcm5lbC9pbml0cmQgc3ltbGlua3Mgc3RhcnQgd2l0aCAnLycuCi1EbyBub3RoaW5nIGlmIHRoZSBwYXRoIGlzIGEgcmVsYXRpdmUgc3ltYm9saWMgbGluayBvciBub3QgYSBzeW1saW5rLgotCi1GaXggZm9sbG93aW5nIHNpdHVhdGlvbjoKLQotcm9vdEBtaXphcjovdmFyL3RtcCMgbHMgLWFsIGJvb3QvCi10b3RhbCAyMDc2Ci1kcnd4ci14ci14IDIgcm9vdCByb290ICAgIDQwOTYgbHVnICA1IDAxOjM4IC4KLWRyd3hyd3hyd3QgNCByb290IHJvb3QgICAgNDA5NiBsdWcgIDUgMTI6MjYgLi4KLS1ydy1yLS1yLS0gMSByb290IHJvb3QgICAgIDgzMSBsdWcgIDUgMDE6MjQgYm9vdC5jZmcKLS1ydy1yLS1yLS0gMSByb290IHJvb3QgICAgMTMyMiBsdWcgIDUgMDE6MjQgaWNvbi54cG0KLWxyd3hyd3hyd3ggMSByb290IHJvb3QgICAgICAzNCBsdWcgIDUgMTI6MjYgekltYWdlIC0+Ci0vYm9vdC96SW1hZ2UtMy4xNC41LXlvY3RvLXN0YW5kYXJkCi0tcnctci0tci0tIDEgcm9vdCByb290IDIxMDY4MzIgbHVnICA1IDAxOjIwIHpJbWFnZS0zLjE0LjUteW9jdG8tc3RhbmRhcmQKLQotQ2Fubm90IG9wZW4gYC9tbnQvYm9vdC96SW1hZ2UnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1Ob3RoaW5nIGhhcyBiZWVuIGxvYWRlZCEKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotLS0tCi0ga2V4ZWNib290LmMgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWNib290LmMgYi9rZXhlY2Jvb3QuYwotaW5kZXggNzI2OGQ2Yi4uOGE3YTdkMiAxMDA2NDQKLS0tLSBhL2tleGVjYm9vdC5jCi0rKysgYi9rZXhlY2Jvb3QuYwotQEAgLTIwOCwxMSArMjA4LDE2IEBAIHZvaWQgc3RhcnRfa2VybmVsKHN0cnVjdCBwYXJhbXNfdCAqcGFyYW1zLCBpbnQgY2hvaWNlKQotIAljb25zdCBjaGFyICpsb2FkX2FyZ3ZbXSA9IHsgTlVMTCwgIi1sIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9OwotIAljb25zdCBjaGFyICpleGVjX2FyZ3ZbXSA9IHsgTlVMTCwgIi1lIiwgTlVMTCwgTlVMTH07Ci0gCi0tCWNoYXIgKmNtZGxpbmVfYXJnID0gTlVMTCwgKmluaXRyZF9hcmcgPSBOVUxMOwotKwljaGFyICpjbWRsaW5lX2FyZyA9IE5VTEwsICppbml0cmRfYXJnID0gTlVMTCwgKmtlcm5lbF9hcmcgPSBOVUxMOwotIAlpbnQgbiwgaWR4LCB1OwotIAlzdHJ1Y3Qgc3RhdCBzaW5mbzsKLSAJc3RydWN0IGJvb3RfaXRlbV90ICppdGVtOwotIAotKwkvKiBidWZmZXIgZm9yIHJlYWRsaW5rIChjb3VsZCBiZSB0cnVuY2F0ZWQpICovCi0rCWNoYXIgYnVmWzUxMl07Ci0rCWludCBsZW47Ci0rCi0rCi0gCWl0ZW0gPSBwYXJhbXMtPmJvb3RjZmctPmxpc3RbY2hvaWNlXTsKLSAKLSAJZXhlY19hcmd2WzBdID0ga2V4ZWNfcGF0aDsKLUBAIC0zMDYsMTAgKzMxMSwxNyBAQCB2b2lkIHN0YXJ0X2tlcm5lbChzdHJ1Y3QgcGFyYW1zX3QgKnBhcmFtcywgaW50IGNob2ljZSkKLSAJCX0KLSAJfQotIAotKwkvKiBNb3VudCBib290IGRldmljZSAqLwotKwlpZiAoIC0xID09IG1vdW50KG1vdW50X2RldiwgbW91bnRfcG9pbnQsIG1vdW50X2ZzdHlwZSwKLSsJCQlNU19SRE9OTFksIE5VTEwpICkgewotKwkJcGVycm9yKCJDYW4ndCBtb3VudCBib290IGRldmljZSIpOwotKwkJZXhpdCgtMSk7Ci0rCX0KLSsKLSAJLyogZmlsbCAnLS1pbml0cmQnIG9wdGlvbiAqLwotIAlpZiAoaXRlbS0+aW5pdHJkKSB7Ci0gCQkvKiBhbGxvY2F0ZSBzcGFjZSAqLwotLQkJbiA9IHNpemVvZihzdHJfaW5pdHJkX3N0YXJ0KSArIHN0cmxlbihpdGVtLT5pbml0cmQpOwotKwkJbiA9IHNpemVvZihzdHJfaW5pdHJkX3N0YXJ0KSArIHN0cmxlbihpdGVtLT5pbml0cmQpICsgMSArIHNpemVvZihtb3VudF9wb2ludCkgKyBzaXplb2YoYnVmKTsKLSAKLSAJCWluaXRyZF9hcmcgPSAoY2hhciAqKW1hbGxvYyhuKTsKLSAJCWlmIChOVUxMID09IGluaXRyZF9hcmcpIHsKLUBAIC0zMTcsMjQgKzMyOSw0NiBAQCB2b2lkIHN0YXJ0X2tlcm5lbChzdHJ1Y3QgcGFyYW1zX3QgKnBhcmFtcywgaW50IGNob2ljZSkKLSAJCX0gZWxzZSB7Ci0gCQkJc3RyY3B5KGluaXRyZF9hcmcsIHN0cl9pbml0cmRfc3RhcnQpOwkvKiAtLWluaXRyZD0gKi8KLSAJCQlzdHJjYXQoaW5pdHJkX2FyZywgaXRlbS0+aW5pdHJkKTsKLSsKLSsJCQlpZiAoKGxlbiA9IHJlYWRsaW5rKGl0ZW0tPmluaXRyZCwgYnVmLCBzaXplb2YoYnVmKS0xKSkgIT0gLTEpIHsKLSsJCQkJYnVmW2xlbl0gPSAnXDAnOwotKwkJCQkvKiBGaXggYWJzb2x1dGUgc3ltbGlua3M6IHByZXBlbmQgTU9VTlRQT0lOVCAqLwotKwkJCQlpZiAoYnVmWzBdID09ICcvJykgewotKwkJCQkJc3RyY3B5KGluaXRyZF9hcmcsIHN0cl9pbml0cmRfc3RhcnQpOwkvKiAtLWluaXRyZD0gKi8KLSsJCQkJCXN0cmNhdChpbml0cmRfYXJnLCBtb3VudF9wb2ludCk7Ci0rCQkJCQlzdHJjYXQoaW5pdHJkX2FyZywgYnVmKTsKLSsJCQkJfQotKwkJCX0KLSAJCQlsb2FkX2FyZ3ZbaWR4XSA9IGluaXRyZF9hcmc7Ci0gCQkJKytpZHg7Ci0gCQl9Ci0gCX0KLSAKLSAJLyogQXBwZW5kIGtlcm5lbHBhdGggYXMgbGFzdCBhcmcgb2Yga2V4ZWMgKi8KLS0JbG9hZF9hcmd2W2lkeF0gPSBpdGVtLT5rZXJuZWxwYXRoOwotKwkJLyogYWxsb2NhdGUgc3BhY2UgKi8KLSsJCW4gPSBzdHJsZW4oaXRlbS0+a2VybmVscGF0aCkgKyAxICsgc2l6ZW9mKG1vdW50X3BvaW50KSArIHNpemVvZihidWYpOwotKwotKwkJa2VybmVsX2FyZyA9IChjaGFyICopbWFsbG9jKG4pOwotKwkJaWYgKE5VTEwgPT0ga2VybmVsX2FyZykgewotKwkJCXBlcnJvcigiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBrZXJuZWxfYXJnIik7Ci0rCQl9IGVsc2UgewotKwkJCXN0cmNweShrZXJuZWxfYXJnLCBpdGVtLT5rZXJuZWxwYXRoKTsKLSsKLSsJCQlpZiAoKGxlbiA9IHJlYWRsaW5rKGl0ZW0tPmtlcm5lbHBhdGgsIGJ1Ziwgc2l6ZW9mKGJ1ZiktMSkpICE9IC0xKSB7Ci0rCQkJCWJ1ZltsZW5dID0gJ1wwJzsKLSsJCQkJLyogRml4IGFic29sdXRlIHN5bWxpbmtzOiBwcmVwZW5kIE1PVU5UUE9JTlQgKi8KLSsJCQkJaWYgKGJ1ZlswXSA9PSAnLycpIHsKLSsJCQkJCXN0cmNweShrZXJuZWxfYXJnLCBtb3VudF9wb2ludCk7Ci0rCQkJCQlzdHJjYXQoa2VybmVsX2FyZywgYnVmKTsKLSsJCQkJfQotKwkJCX0KLSsJCQlsb2FkX2FyZ3ZbaWR4XSA9IGtlcm5lbF9hcmc7Ci0rCQl9Ci0gCi0gCURQUklOVEYoImxvYWRfYXJndjogJXMsICVzLCAlcywgJXMsICVzIiwgbG9hZF9hcmd2WzBdLAotIAkJCWxvYWRfYXJndlsxXSwgbG9hZF9hcmd2WzJdLAotIAkJCWxvYWRfYXJndlszXSwgbG9hZF9hcmd2WzRdKTsKLSAKLS0JLyogTW91bnQgYm9vdCBkZXZpY2UgKi8KLS0JaWYgKCAtMSA9PSBtb3VudChtb3VudF9kZXYsIG1vdW50X3BvaW50LCBtb3VudF9mc3R5cGUsCi0tCQkJTVNfUkRPTkxZLCBOVUxMKSApIHsKLS0JCXBlcnJvcigiQ2FuJ3QgbW91bnQgYm9vdCBkZXZpY2UiKTsKLS0JCWV4aXQoLTEpOwotLQl9Ci0gCi0gCS8qIExvYWQga2VybmVsICovCi0gCW4gPSBmZXhlY3coa2V4ZWNfcGF0aCwgKGNoYXIgKmNvbnN0ICopbG9hZF9hcmd2LCBlbnZwKTsKLUBAIC0zNDcsNiArMzgxLDcgQEAgdm9pZCBzdGFydF9rZXJuZWwoc3RydWN0IHBhcmFtc190ICpwYXJhbXMsIGludCBjaG9pY2UpCi0gCi0gCWRpc3Bvc2UoY21kbGluZV9hcmcpOwotIAlkaXNwb3NlKGluaXRyZF9hcmcpOwotKwlkaXNwb3NlKGtlcm5lbF9hcmcpOwotIAotIAkvKiBDaGVjayAvcHJvYy9zeXMvbmV0IHByZXNlbmNlICovCi0gCWlmICggLTEgPT0gc3RhdCgiL3Byb2Mvc3lzL25ldCIsICZzaW5mbykgKSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDUtcmdiLmgtZml4LWJ1aWxkLXdpdGgtZ2NjNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDUtcmdiLmgtZml4LWJ1aWxkLXdpdGgtZ2NjNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0MTk5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDA1LXJnYi5oLWZpeC1idWlsZC13aXRoLWdjYzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGIyYzRmYzY5ODY4YTQ4MzFlYzc5OGFkOThmNWU3ZmNlMjAwY2YwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI0IFNlcCAyMDE1IDAwOjAyOjQ4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJnYi5oOiBmaXggYnVpbGQgd2l0aCBnY2MgNSAoQzk5IGlubGluZSBzZW1hbnRpYykKLQotQnVpbGRpbmcgd2l0aCBnY2MgNS4yIHdlIHRyaWdnZXIgdGhlIGZvbGxvd2luZyBlcnJvcjoKLQotcmdiLmg6NTU6MTogd2FybmluZzogaW5saW5lIGZ1bmN0aW9uICdyZ2JhMmNvbXAnIGRlY2xhcmVkIGJ1dCBuZXZlciBkZWZpbmVkCi18ICByZ2JhMmNvbXAoa3hfcmdiYSByZ2JhLCBreF9jY29tcCAqcmVkLCBreF9jY29tcCAqZ3JlZW4sCi18ICBeCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTUvcG9ydGluZ190by5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIHJnYi5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmdiLmggYi9yZ2IuaAotaW5kZXggMGJhOTg3YS4uNGY2NDYyMiAxMDA2NDQKLS0tLSBhL3JnYi5oCi0rKysgYi9yZ2IuaAotQEAgLTUxLDggKzUxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIH0ga3hfbmFtZWRfY29sb3I7Ci0gCi0gLyogQ29udmVydCBSR0JBIHVpbnQzMiB0byByZWQvZ3JlZW4vYmx1ZS9hbHBoYSBjb21wb25lbnRzICovCi0taW5saW5lIHZvaWQKLS1yZ2JhMmNvbXAoa3hfcmdiYSByZ2JhLCBreF9jY29tcCAqcmVkLCBreF9jY29tcCAqZ3JlZW4sCi0rdm9pZCByZ2JhMmNvbXAoa3hfcmdiYSByZ2JhLCBreF9jY29tcCAqcmVkLCBreF9jY29tcCAqZ3JlZW4sCi0gCQlreF9jY29tcCAqYmx1ZSwga3hfY2NvbXAgKmFscGhhKTsKLSAKLSAvKiBDb252ZXJ0IGhleCByZ2IgY29sb3IgdG8gcmdiYSBjb2xvciAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3QtY2ZnXzAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdC1jZmdfMC4yLmJiCmluZGV4IDA4NTk1NWMuLjgwNGVjMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdC1jZmdfMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdC1jZmdfMC4yLmJiCkBAIC0yLDcgKzIsNyBAQAogREVTQ1JJUFRJT04gPSAiRGVmYXVsdCBpY29uIGFuZCBib290LmNmZyBmb3Iga2V4ZWNib290IGxpbnV4LWFzLWJvb3Rsb2FkZXIuIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiBTUkNfVVJJID0gImZpbGU6Ly9pY29uLnhwbSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290XzAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF8wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MDk1ZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290XzAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb25maWd1cmUgb3B0aW9uczoKLSMKLSMgIC0tZW5hYmxlLXN0YXRpYy1saW5raW5nIGNvbXBpbGUga2V4ZWNib290IGFzIHN0YXRpYyBleGVjdXRhYmxlIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZmJ1aSAgICAgICAgICAgc3VwcG9ydCBmcmFtZWJ1ZmZlciBtZW51IFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLWZidWktd2lkdGggICAgIGxpbWl0IEZCIFVJIHdpZHRoIHRvIHNwZWNpZmllZCB2YWx1ZSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWZidWktaGVpZ2h0ICAgIGxpbWl0IEZCIFVJIGhlaWdodCB0byBzcGVjaWZpZWQgdmFsdWUgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS10ZXh0dWkgICAgICAgICBzdXBwb3J0IGNvbnNvbGUgdGV4dCB1c2VyIGludGVyZmFjZSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWNmZ2ZpbGVzICAgICAgIHN1cHBvcnQgY29uZmlnIGZpbGVzIFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLWljb25zICAgICAgICAgIHN1cHBvcnQgY3VzdG9tIGljb25zIChkZXBlbmRzIG9uIGZidWkpIFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLXphdXJ1cyAgICAgICAgIGNvbXBpbGUgU2hhcnAgWmF1cnVzIHNwZWNpZmljIGNvZGUgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS16aW1hZ2UgICAgICAgICBjb21waWxlIHdpdGggekltYWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXQotIyAgLS1lbmFibGUtdWltYWdlICAgICAgICAgY29tcGlsZSB3aXRoIHVJbWFnZSBzdXBwb3J0IFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtbWFjaGluZS1rZXJuZWwgbG9vayBmb3IgbWFjaGluZS1zcGVjaWZpYyB6SW1hZ2Uga2VybmVsIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZGV2aWNlcy1yZWNyZWF0aW5nCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgZGV2aWNlcyByZS1jcmVhdGluZyBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBlbmFibGUgZGVidWcgb3V0cHV0IFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtaG9zdC1kZWJ1ZyAgICAgYWxsb3cgZm9yIG5vbi1kZXN0cnVjdGl2ZSBleGVjdXRpbmcgb2Yga2V4ZWNib290IG9uCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtbnVta2V5cyAgICAgICAgZW5hYmxlIG1lbnUgaXRlbSBzZWxlY3Rpb24gYnkga2V5cyBbMC05XSBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1iZy1idWZmZXIgICAgICBlbmFibGUgYnVmZmVyIGZvciBwcmUtZHJhd2VkIEZCIEdVSSBiYWNrZ3JvdW5kCi0jCi0jICAtLWVuYWJsZS10aW1lb3V0ICAgICAgICBhbGxvdyB0byBib290IDFzdCBrZXJuZWwgYWZ0ZXIgdGltZW91dCBpbiBzZWNvbmRzCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZGVsYXkgICAgICAgICAgc3BlY2lmeSBkZWxheSBiZWZvcmUgZGV2aWNlIHNjYW5uaW5nLCBhbGxvd2luZwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiBvbGQgQ0YvU0QgY2FyZHMgW2RlZmF1bHQ9MV0KLSMgIC0tZW5hYmxlLWJwcCAgICAgICAgICAgIGVuYWJsZSBzdXBwb3J0IG9mIHNwZWNpZmllZCBicHAgbW9kZXMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsbCwzMiwyNCwxOCwxNiw0LDIsMSkgW2RlZmF1bHQ9YWxsXQotIyAgLS1lbmFibGUtZXZkZXYtcmF0ZSAgICAgY2hhbmdlIGV2ZGV2IChrZXlib2FyZC9tb3VzZSkgcmVwZWF0IHJhdGUKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzIGUuZy4gIjEwMDAsMjUwIiBbZGVmYXVsdD1ub10KLSMgIC0td2l0aC1rZXhlYy1iaW5hcnkgICAgIGxvb2sgZm9yIGtleGVjIGJpbmFyeSBhdCBwYXRoCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PSIvdXNyL3NiaW4va2V4ZWMiXQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLVNVTU1BUlkgPSAia2V4ZWNib290IGxpbnV4LWFzLWJvb3Rsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJrZXhlY2Jvb3QgaXMgYSBncmFwaGljYWwgbGludXgtYXMtYm9vdGxvYWRlciBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBrZXhlYy4iCi1IT01FUEFHRSA9ICJodHRwOi8va2V4ZWNib290Lm9yZyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotUyA9ICIke1dPUktESVJ9L2tleGVjYm9vdC0ke1BWfSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tleGVjYm9vdC9rZXhlY2Jvb3QvYXJjaGl2ZS92JHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ2YjdjMWE2ZjIwNTMxYmU1NjQ0NWViYjg2NjlhMmI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiMzYwYjhhYTU5YmM1ZDY4YTk2NzA1MzQ5YTBkZDQxNmY4ZWQ3MDRlOTMxZmEwYWM3ODQ5Mjk4MjU4ZjBmMTUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtleGVjYm9vdC1maXgtYnVpbGQtd2hlbi1TLUIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDIta2V4ZWNib290LWZpeC1jb25maWd1cmUtd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMta2V4ZWNib290LWRvLW5vdC1oYXJkY29kZS1NT1VOVFBPSU5ULnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWtleGVjYm9vdC5jLXdvcmthcm91bmQtZm9yLWFic29sdXRlLWtlcm5lbC1hbmQtaW5pdHIucGF0Y2ggXAotICAgICAgICAgICAgXAotICAgICAgICAgICAgZmlsZTovLzAwMDUtcmdiLmgtZml4LWJ1aWxkLXdpdGgtZ2NjNS5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXh0dWkgLS1lbmFibGUtZGVsYXk9MiAtLWVuYWJsZS1ldmRldi1yYXRlPTEwMDAsMjUwIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUga2V4ZWNib290ICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vcHJvYwotICAgIGluc3RhbGwgLWQgJHtEfS9tbnQKLSAgICBpbnN0YWxsIC1kICR7RH0vZGV2Ci0gICAgaW5zdGFsbCAtZCAke0R9L3N5cwotfQotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1GSUxFU18ke1BOfSArPSAiICR7YmluZGlyfS9rZXhlY2Jvb3QgL2luaXQgL3Byb2MgL21udCAvZGV2IC9zeXMiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgbG4gLXNmICR7YmluZGlyfS9rZXhlY2Jvb3QgJEQvaW5pdAotfQotCi1CQkNMQVNTRVhURU5EID0gImtsaWJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1ZGFkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF9naXQuYmIKQEAgLTAsMCArMSw2NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbmZpZ3VyZSBvcHRpb25zOgorIworIyAgLS1lbmFibGUtc3RhdGljLWxpbmtpbmcgY29tcGlsZSBrZXhlY2Jvb3QgYXMgc3RhdGljIGV4ZWN1dGFibGUgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1mYnVpICAgICAgICAgICBzdXBwb3J0IGZyYW1lYnVmZmVyIG1lbnUgW2RlZmF1bHQ9eWVzXQorIyAgLS1lbmFibGUtZmJ1aS13aWR0aCAgICAgbGltaXQgRkIgVUkgd2lkdGggdG8gc3BlY2lmaWVkIHZhbHVlIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtZmJ1aS1oZWlnaHQgICAgbGltaXQgRkIgVUkgaGVpZ2h0IHRvIHNwZWNpZmllZCB2YWx1ZSBbZGVmYXVsdD1ub10KKyMgIC0tZW5hYmxlLXRleHR1aSAgICAgICAgIHN1cHBvcnQgY29uc29sZSB0ZXh0IHVzZXIgaW50ZXJmYWNlIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtY2ZnZmlsZXMgICAgICAgc3VwcG9ydCBjb25maWcgZmlsZXMgW2RlZmF1bHQ9eWVzXQorIyAgLS1lbmFibGUtaWNvbnMgICAgICAgICAgc3VwcG9ydCBjdXN0b20gaWNvbnMgKGRlcGVuZHMgb24gZmJ1aSkgW2RlZmF1bHQ9eWVzXQorIyAgLS1lbmFibGUtemF1cnVzICAgICAgICAgY29tcGlsZSBTaGFycCBaYXVydXMgc3BlY2lmaWMgY29kZSBbZGVmYXVsdD1ub10KKyMgIC0tZW5hYmxlLXppbWFnZSAgICAgICAgIGNvbXBpbGUgd2l0aCB6SW1hZ2Ugc3VwcG9ydCBbZGVmYXVsdD15ZXNdCisjICAtLWVuYWJsZS11aW1hZ2UgICAgICAgICBjb21waWxlIHdpdGggdUltYWdlIHN1cHBvcnQgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1tYWNoaW5lLWtlcm5lbCBsb29rIGZvciBtYWNoaW5lLXNwZWNpZmljIHpJbWFnZSBrZXJuZWwgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1kZXZpY2VzLXJlY3JlYXRpbmcKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSBkZXZpY2VzIHJlLWNyZWF0aW5nIFtkZWZhdWx0PXllc10KKyMgIC0tZW5hYmxlLWRlYnVnICAgICAgICAgIGVuYWJsZSBkZWJ1ZyBvdXRwdXQgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1ob3N0LWRlYnVnICAgICBhbGxvdyBmb3Igbm9uLWRlc3RydWN0aXZlIGV4ZWN1dGluZyBvZiBrZXhlY2Jvb3Qgb24KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBzeXN0ZW0gW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1udW1rZXlzICAgICAgICBlbmFibGUgbWVudSBpdGVtIHNlbGVjdGlvbiBieSBrZXlzIFswLTldIFtkZWZhdWx0PXllc10KKyMgIC0tZW5hYmxlLWJnLWJ1ZmZlciAgICAgIGVuYWJsZSBidWZmZXIgZm9yIHByZS1kcmF3ZWQgRkIgR1VJIGJhY2tncm91bmQKKyMKKyMgIC0tZW5hYmxlLXRpbWVvdXQgICAgICAgIGFsbG93IHRvIGJvb3QgMXN0IGtlcm5lbCBhZnRlciB0aW1lb3V0IGluIHNlY29uZHMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS1kZWxheSAgICAgICAgICBzcGVjaWZ5IGRlbGF5IGJlZm9yZSBkZXZpY2Ugc2Nhbm5pbmcsIGFsbG93aW5nCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIG9sZCBDRi9TRCBjYXJkcyBbZGVmYXVsdD0xXQorIyAgLS1lbmFibGUtYnBwICAgICAgICAgICAgZW5hYmxlIHN1cHBvcnQgb2Ygc3BlY2lmaWVkIGJwcCBtb2RlcworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxsLDMyLDI0LDE4LDE2LDQsMiwxKSBbZGVmYXVsdD1hbGxdCisjICAtLWVuYWJsZS1ldmRldi1yYXRlICAgICBjaGFuZ2UgZXZkZXYgKGtleWJvYXJkL21vdXNlKSByZXBlYXQgcmF0ZQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBtaWxsaXNlY29uZHMgZS5nLiAiMTAwMCwyNTAiIFtkZWZhdWx0PW5vXQorIyAgLS13aXRoLWtleGVjLWJpbmFyeSAgICAgbG9vayBmb3Iga2V4ZWMgYmluYXJ5IGF0IHBhdGgKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHQ9Ii91c3Ivc2Jpbi9rZXhlYyJdCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworU1VNTUFSWSA9ICJrZXhlY2Jvb3QgbGludXgtYXMtYm9vdGxvYWRlciIKK0RFU0NSSVBUSU9OID0gImtleGVjYm9vdCBpcyBhIGdyYXBoaWNhbCBsaW51eC1hcy1ib290bG9hZGVyIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGtleGVjLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZXhlY2Jvb3Qub3JnIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorUFYgPSAiMC42K2dpdCR7U1JDUFZ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rZXhlY2Jvb3Qva2V4ZWNib290LmdpdCIKK1NSQ1JFViA9ICI0YzRmMTI3ZTc5YWM1YjhkNmI2ZTJmYmI5MzhjY2JmMTJiMDRjNTMxIgoraW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRleHR1aSAtLWVuYWJsZS1kZWxheT0yIC0tZW5hYmxlLWV2ZGV2LXJhdGU9MTAwMCwyNTAiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBrZXhlY2Jvb3QgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS9wcm9jCisgICAgaW5zdGFsbCAtZCAke0R9L21udAorICAgIGluc3RhbGwgLWQgJHtEfS9kZXYKKyAgICBpbnN0YWxsIC1kICR7RH0vc3lzCit9CisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK0ZJTEVTXyR7UE59ICs9ICIgJHtiaW5kaXJ9L2tleGVjYm9vdCAvaW5pdCAvcHJvYyAvbW50IC9kZXYgL3N5cyIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBsbiAtc2YgJHtiaW5kaXJ9L2tleGVjYm9vdCAkRC9pbml0Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAia2xpYmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dC8wMDAxLXV0aWwuaC1pbmNsdWRlLXN5cy1yZWcuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dC8wMDAxLXV0aWwuaC1pbmNsdWRlLXN5cy1yZWcuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3MTQwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0LzAwMDEtdXRpbC5oLWluY2x1ZGUtc3lzLXJlZy5oLXdoZW4tbGliYy1nbGliYy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDA2MDExY2U1NWIxZTg5MmU4NjM1NjhhNzNkNjRlZWJjNjM4OTU0NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAxNzoxNDowNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1dGlsLmg6IGluY2x1ZGUgPHN5cy9yZWcuaD4gd2hlbiBsaWJjICE9IGdsaWJjCisKK0ZvciBtdXNsIGxpYmMgaXQgaXMgcmVxdWlyZWQgdG8gaW5jbHVkZSA8c3lzL3JlZy5oPiB0bworaGF2ZSBfX1dPUkRTSVpFIGRlZmluZWQgdG8gZS5nLiAzMiBmb3IgYXJtKi1tdXNsLgorCitUYWtlbiBmcm9tIHZvaWQtbGludXgKK2h0dHBzOi8vZ2l0aHViLmNvbS92b2lkbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9zcmNwa2dzL2RyYWN1dC9wYXRjaGVzL211c2wtX193b3Jkc2l6ZS5wYXRjaAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW5zdGFsbC91dGlsLmggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2luc3RhbGwvdXRpbC5oIGIvaW5zdGFsbC91dGlsLmgKK2luZGV4IDJhZDMyNTRkLi4wNjI2MjZlYyAxMDA2NDQKKy0tLSBhL2luc3RhbGwvdXRpbC5oCisrKysgYi9pbnN0YWxsL3V0aWwuaAorQEAgLTM2LDYgKzM2LDkgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2luY2x1ZGUgPHN5cy9yZWcuaD4KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYgppbmRleCBiOTFmM2ZhLi5lMTg0MDlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXRfZ2l0LmJiCkBAIC0xLDE3ICsxLDIzIEBACiBTVU1NQVJZID0gIkluaXRyYW1mcyBnZW5lcmF0b3IgdXNpbmcgdWRldiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZHJhY3V0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvTWFpbl9QYWdlIgogREVTQ1JJUFRJT04gPSAiRHJhY3V0IGlzIGFuIGV2ZW50IGRyaXZlbiBpbml0cmFtZnMgaW5mcmFzdHJ1Y3R1cmUuIGRyYWN1dCAodGhlIHRvb2wpIGlzIHVzZWQgdG8gY3JlYXRlIGFuIGluaXRyYW1mcyBpbWFnZSBieSBjb3B5aW5nIHRvb2xzIGFuZCBmaWxlcyBmcm9tIGFuIGluc3RhbGxlZCBzeXN0ZW0gYW5kIGNvbWJpbmluZyBpdCB3aXRoIHRoZSBkcmFjdXQgZnJhbWV3b3JrLCB1c3VhbGx5IGZvdW5kIGluIC91c3IvbGliL2RyYWN1dC9tb2R1bGVzLmQuIgogCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIFBFID0gIjEiCi1QViA9ICIwNDQrZ2l0JHtTUkNSRVZ9IgorUFYgPSAiMDQ1K2dpdCR7U1JDUkVWfSIKIAotIyB2MDQ0IHRhZwotU1JDUkVWID0gIjFiYzNlNzMzZjk2MDMzYTUwODg0MWU5N2ZlMDhkYTdhMTI4NTE3ODIiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYm9vdC9kcmFjdXQvZHJhY3V0LmdpdDtwcm90b2NvbD1odHRwIgorIyB2MDQ1IHRhZworU1JDUkVWID0gIjM5YzliNjdmODYxNDU5NTNhYTMwZGVmOWQ3N2M2ODU5N2E0Y2NmZTgiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYm9vdC9kcmFjdXQvZHJhY3V0LmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXRpbC5oLWluY2x1ZGUtc3lzLXJlZy5oLXdoZW4tbGliYy1nbGliYy5wYXRjaCBcCisgICAgICAgICAgICIKIAotaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KK0RFUEVORFMgKz0gImttb2QiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTMwLDcgKzM2LDkgQEAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgogUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8sLCxzeXN0ZW1kIgogCi1FWFRSQV9PRU1BS0UgKz0gJ2xpYmRpcj0ke3ByZWZpeH0vbGliJworRVhUUkFfT0VNQUtFICs9ICdsaWJkaXI9JHtwcmVmaXh9L2xpYiBMRExJQlM9IiR7TERMSUJTfSInCisKK0xETElCU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGZ0cyIKIAogZG9fY29uZmlndXJlKCkgewogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvMDAwMS1BZGQtYW5vdGhlci12YXJpYWJsZS1MSUJTLXRvLXByb3ZpZGVzLWxpYnJhcmllcy1mcm9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvMDAwMS1BZGQtYW5vdGhlci12YXJpYWJsZS1MSUJTLXRvLXByb3ZpZGVzLWxpYnJhcmllcy1mcm9tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMWE5OTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieS8wMDAxLUFkZC1hbm90aGVyLXZhcmlhYmxlLUxJQlMtdG8tcHJvdmlkZXMtbGlicmFyaWVzLWZyb20ucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAyMmFmYWEyMWI0YjI1ODA4MmJlNTkxZTU0Yzk5ZTFiYTZmYmQ3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTA6MTk6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBhbm90aGVyIHZhcmlhYmxlIExJQlMgdG8gcHJvdmlkZXMgbGlicmFyaWVzIGZyb20gZW52CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGFjMTQ0MDQuLjkyYThlNzMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yNyw3ICsyNyw3IEBAIFJQTV9PUFRfRkxBR1MgPz0gLU8yIC1nIC1waXBlIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mc3RhY2stcHJvdGVjdG9yCisgQ0ZMQUdTICs9ICQoUlBNX09QVF9GTEFHUykgLXN0ZD1nbnU5OSAtV2FsbCAtV2Vycm9yIC1Xbm8tZXJyb3I9dW51c2VkLWZ1bmN0aW9uIC1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1nZ2RiCisgTERGTEFHUyA6PSAKKyAKKy1ncnViYnlfTElCUyA9IC1sYmxraWQgLWxwb3B0CisrZ3J1YmJ5X0xJQlMgPSAtbGJsa2lkIC1scG9wdCAke0xJQlN9CisgCisgYWxsOiBncnViYnkKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDItaW5jbHVkZS1wYXRocy5oLWZvci1fUEFUSF9NT1VOVEVELnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvMDAwMi1pbmNsdWRlLXBhdGhzLmgtZm9yLV9QQVRIX01PVU5URUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4MTMzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDItaW5jbHVkZS1wYXRocy5oLWZvci1fUEFUSF9NT1VOVEVELnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGY4NDRhYzdmNDRiOGRjNDI4ZDA2Y2Q2OTU4YzVmMzJkMzgzZDAxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDEwOjE5OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBpbmNsdWRlIHBhdGhzLmggZm9yIF9QQVRIX01PVU5URUQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdydWJieS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9ncnViYnkuYyBiL2dydWJieS5jCitpbmRleCA0N2ExYTE1Li41OWY3NGE5IDEwMDY0NAorLS0tIGEvZ3J1YmJ5LmMKKysrKyBiL2dydWJieS5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlIDxsaWJnZW4uaD4KKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUgPHBhdGhzLmg+CisgI2luY2x1ZGUgPGJsa2lkL2Jsa2lkLmg+CisgCisgI2luY2x1ZGUgImxvZy5oIgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfOC40MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5XzguNDAuYmIKaW5kZXggMGU5Mzc5MC4uNWE5OTgyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfOC40MC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieV84LjQwLmJiCkBAIC05LDExICs5LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTJmNTY5YTU1NWJhOWMwN2E1NjhhN2MwYzRmYTYzYSIKIAogREVQRU5EUyA9ICJwb3B0IHV0aWwtbGludXgiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYmV4ZWNpbmZvIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci8ke0JQTn0vYXJjaGl2ZS8ke1BWfS0xLnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlBOfS0ke1BWfS0xLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ncnViYnktcmVuYW1lLWdydWIyLWVkaXRlbnYtdG8tZ3J1Yi1lZGl0ZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbm90aGVyLXZhcmlhYmxlLUxJQlMtdG8tcHJvdmlkZXMtbGlicmFyaWVzLWZyb20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1pbmNsdWRlLXBhdGhzLmgtZm9yLV9QQVRIX01PVU5URUQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxMDA1OTA3YjI3NWQ2ZDkzMzY4ZDA0NTI3NDUzN2Q4NiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWYxYzY3ODQ4NGY3NGM4OTc4ZTg2NDM0NTE1OTQ5NjdkZWZjZTQ2M2E4NmMzNWNiMWVlNTZkMTI3NjdhOWRmIgpAQCAtMjQsOCArMjcsMTAgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CiAKLUVYVFJBX09FTUFLRSA9ICItZSAnQ0M9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFID0gIi1lICdDQz0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgTElCUz0nJHtMSUJTfSciCiAKK0xJQlNfbGliYy1tdXNsID0gIi1sZXhlY2luZm8iCitMSUJTID89ICIiCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KICAgICBjcCAtciAke1N9L3Rlc3QgJHtTfS90ZXN0LnNoICR7RH0ke1BURVNUX1BBVEh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtQWRkLXBhdGgtdG8tY29tcGlsZXItaGVhZGVycy12aWEtaXN5c3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLUFkZC1wYXRoLXRvLWNvbXBpbGVyLWhlYWRlcnMtdmlhLWlzeXN0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2Q0YzBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLUFkZC1wYXRoLXRvLWNvbXBpbGVyLWhlYWRlcnMtdmlhLWlzeXN0ZS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDEwZmI0NDA3OTVhNzc5NjE0MGJkNjU3ZWUwMjg4NDdlYzdjMzQ0NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDIzOjEwOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEtidWlsZC5rbGliYzogQWRkIHBhdGggdG8gY29tcGlsZXIgaGVhZGVycyB2aWEgLWlzeXN0ZW0KKworV2UgbmVlZCB0byBpbmNsdWRlIHRoaXMgcGF0aCBzbyBpdCBjYW4gZmluZCBjb21waWxlciBoZWFkZXJzIGUuZy4KK3N0ZGFyZy5oIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHdyYXBwZXIgc3RkYXJnLmggdXNpbmcgaW5jbHVkZV9uZXh0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzY3JpcHRzL0tidWlsZC5rbGliYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9LYnVpbGQua2xpYmMgYi9zY3JpcHRzL0tidWlsZC5rbGliYworaW5kZXggZjUwMGQ1MzUuLjFkNWNkYzQzIDEwMDY0NAorLS0tIGEvc2NyaXB0cy9LYnVpbGQua2xpYmMKKysrKyBiL3NjcmlwdHMvS2J1aWxkLmtsaWJjCitAQCAtMTA1LDcgKzEwNSw4IEBAIEtMSUJDT0JKQ09QWSAgICAgOj0gJChPQkpDT1BZKQorIEtMSUJDT0JKRFVNUCAgICAgOj0gJChPQkpEVU1QKQorIAorICMga2xpYmMgaW5jbHVkZSBwYXRocworLUtMSUJDQ1BQRkxBR1MgICAgOj0gLW5vc3RkaW5jIC1pd2l0aHByZWZpeCBpbmNsdWRlIFwKKytLTElCQ0NQUEZMQUdTICAgIDo9IC1ub3N0ZGluYyAtaXdpdGhwcmVmaXggaW5jbHVkZSAgICAgIFwKKysJCSAgICAtaXN5c3RlbSAkKHNoZWxsICQoQ0MpIC1wcmludC1maWxlLW5hbWU9aW5jbHVkZSkgXAorIAkJICAgIC1JJChLTElCQ0lOQykvYXJjaC8kKEtMSUJDQVJDSERJUikJXAorICAgICAgICAgICAgICAgICAgICAgLUkkKEtMSUJDSU5DKS9iaXRzJChLTElCQ0JJVFNJWkUpCVwKKyAJCSAgICAtSSQoS0xJQkNPQkopLy4uL2luY2x1ZGUJCVwKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1Vc2UtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZS1pbnN0ZWFkLW9mLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtVXNlLXByaW50LWxpYmdjYy1maWxlLW5hbWUtaW5zdGVhZC1vZi1wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxY2MxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtVXNlLXByaW50LWxpYmdjYy1maWxlLW5hbWUtaW5zdGVhZC1vZi1wLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZjY2ZWRkZThhNzA0MTMxZDk4ZTg3ODNlYThkNGM4NDhlODExOWIyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDE2OjEzOjE2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBLYnVpbGQua2xpYmM6IFVzZSAtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZSBpbnN0ZWFkIG9mCisgLS1wcmludC1saWJnY2MKKworLXByaW50LWxpYmdjYy1maWxlLW5hbWUgd29ya3Mgd2l0aCBjbGFuZyBhbmQgZ2NjIHVubGlrZSAtLXByaW50LWxpYmdjYword2hpY2ggaXMgZ2NjIHNwZWNpZmljCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzY3JpcHRzL0tidWlsZC5rbGliYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvS2J1aWxkLmtsaWJjIGIvc2NyaXB0cy9LYnVpbGQua2xpYmMKK2luZGV4IGY1MDBkNTM1Li4xMDFmODZmNSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvS2J1aWxkLmtsaWJjCisrKysgYi9zY3JpcHRzL0tidWlsZC5rbGliYworQEAgLTEyOCw3ICsxMjgsNyBAQCBLTElCQ0NGTEFHUyAgICAgICs9ICQoS0xJQkNDUFBGTEFHUykgJChLTElCQ1JFUUZMQUdTKSAkKEtMSUJDQVJDSFJFUUZMQUdTKSAgXAorIEtMSUJDQUZMQUdTICAgICAgKz0gLURfX0FTU0VNQkxZX18gJChLTElCQ0NGTEFHUykKKyBLTElCQ1NUUklQRkxBR1MgICs9IC0tc3RyaXAtYWxsIC1SIC5jb21tZW50IC1SIC5ub3RlCisgCistS0xJQkNMSUJHQ0NfREVGICA6PSAkKHNoZWxsICQoS0xJQkNDQykgJChLTElCQ0NGTEFHUykgLS1wcmludC1saWJnY2MpCisrS0xJQkNMSUJHQ0NfREVGICA6PSAkKHNoZWxsICQoS0xJQkNDQykgJChLTElCQ0NGTEFHUykgLXByaW50LWxpYmdjYy1maWxlLW5hbWUpCisgS0xJQkNMSUJHQ0MJID89ICQoS0xJQkNMSUJHQ0NfREVGKQorIEtMSUJDQ1JUMCAgICAgICAgOj0gJChLTElCQ09CSikvYXJjaC8kKEtMSUJDQVJDSERJUikvY3J0MC5vCisgS0xJQkNMSUJDICAgICAgICA6PSAkKEtMSUJDT0JKKS9saWJjLmEKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWFybS1Eby1ub3Qtc2V0LWEtZmFsbGJhY2stbWFyY2gtYW5kLW10dW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYXJtLURvLW5vdC1zZXQtYS1mYWxsYmFjay1tYXJjaC1hbmQtbXR1bmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwZWE2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWFybS1Eby1ub3Qtc2V0LWEtZmFsbGJhY2stbWFyY2gtYW5kLW10dW5lLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYTQ2YTE0NGFjODgzODk4ZDljZWRmN2EwYjEzYWVjNmQxMDExNjEyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IFNlcCAyMDE3IDIzOjExOjUzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFybTogRG8gbm90IHNldCBhIGZhbGxiYWNrIG1hcmNoIGFuZCBtdHVuZQorCitJbiBPRSB3ZSBwYXNzIHRoZSBvcHRpb25zIGV4cGxpY2l0bHksIHRoZXJlIGlzCitubyBuZWVkIHRvIHNldCBpdCBpbnNpZGUgdGhlIG1ha2VmaWxlcywgd2Ugd2lsbAorbmVlZCB0byBjb21wdXRlIHZhbHVlcyBmb3IgQ1BVX0FSQ0ggYW5kIENQVV9UVU5FCit3aGljaCBpcyBhIGJpdCBoYXJkZXIgaW4gT0UKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB1c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHIGIvdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcKK2luZGV4IDUzYmMxZGMzLi44NTdlMmYyZCAxMDA2NDQKKy0tLSBhL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHCisrKysgYi91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRworQEAgLTEwLDcgKzEwLDcgQEAKKyBDUFVfQVJDSCA/PSBhcm12NAorIENQVV9UVU5FID89IHN0cm9uZ2FybQorIAorLUtMSUJDT1BURkxBR1MgKz0gLU9zIC1tYXJjaD0kKENQVV9BUkNIKSAtbXR1bmU9JChDUFVfVFVORSkKKytLTElCQ09QVEZMQUdTICs9IC1PcworIEtMSUJDQklUU0laRSAgPSAzMgorIEtMSUJDUkVRRkxBR1MgKz0gLWZuby1leGNlcHRpb25zCisgS0xJQkNTVFJJUEZMQUdTICs9IC1SIC5BUk0uZXhpZHgKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCmluZGV4IGNkM2YzOTguLjMwMjk0YjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYwpAQCAtMTcsNiArMTcsOSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN5c2luZm8uaC1kaXJlY3RseS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1rZmlmby1JbXBsZW1lbnQtbWtmaWZvLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYWx3YXlzLXVzZS1iZmQtbGlua2VyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtS2J1aWxkLmtsaWJjLVVzZS1wcmludC1saWJnY2MtZmlsZS1uYW1lLWluc3RlYWQtb2YtcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUtidWlsZC5rbGliYy1BZGQtcGF0aC10by1jb21waWxlci1oZWFkZXJzLXZpYS1pc3lzdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm0tRG8tbm90LXNldC1hLWZhbGxiYWNrLW1hcmNoLWFuZC1tdHVuZS5wYXRjaCBcCiAiCiAKIEFSTVBBVENIRVMgPz0gIiIKQEAgLTM4LDcgKzQxLDggQEAKICAgICAgICAgICAgICAgICAnSU5TVEFMTERJUj0ke2xpYmRpcn0va2xpYmMnIFwKICAgICAgICAgICAgICAgICAnU0hMSUJESVI9JHtsaWJkaXJ9JyBcCiAgICAgICAgICAgICAgICAgJyR7S0xJQkNUSFVNQn0nIFwKLSAgICAgICAgICAgICAgICAnS0xJQkNPUFRGTEFHUz0ke1RVTkVfQ0NBUkdTfScgXAorICAgICAgICAgICAgICAgICdLTElCQ09QVEZMQUdTPSR7VFVORV9DQ0FSR1N9IC1PcycgXAorICAgICAgICAgICAgICAgICBWPTEgXAogICAgICAgICAgICAgICAgICIKIAogZXhwb3J0IEZJWF9BUk1WNF9FQUJJX0JYID0gIiR7RklYX1Y0Qlh9IgpAQCAtNDgsNiArNTIsMTAgQEAKICAgICBsbiAtc2YgIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IiBsaW51eAogfQogCitkb19jb21waWxlX3ByZXBlbmRfdG9vbGNoYWluLWNsYW5nKCkgeworICAgIHNlZCAtaSAtZSAncyMkKEtMSUJDUk9TUylnY2MjJChLTElCQ1JPU1MpY2xhbmcjZycgJHtTfS9NYWtlZmlsZQorfQorCiBJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKIElOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgogSU5TQU5FX1NLSVBfJHtQTn0gPSAiYWxyZWFkeS1zdHJpcHBlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAxLU1ha2VmaWxlLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoCmluZGV4IDlkNWU0ZWIuLjZlMWI5ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwMS1NYWtlZmlsZS1vbmx5LWJ1aWxkLXViaS11dGlscy5wYXRjaApAQCAtMjUsMTEgKzI1LDExIEBACiAgTWFrZWZpbGUgfCAyNCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGVhZGUyMzQuLjIyNzU4NjUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xNiwyOCArMTYsMTMgQEAgZW5kaWYKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQorQEAgLTE2LDI4ICsxNiwxMSBAQCBlbmRpZgogIAogIFRFU1RTID0gdGVzdHMKICAKQEAgLTM3LDcgKzM3LDcgQEAKIC0JZnRsX2Zvcm1hdCBmbGFzaF9lcmFzZSBuYW5kZHVtcCBkb2NfbG9hZGJpb3MgXAogLQlmdGxfY2hlY2sgbWtmcy5qZmZzMiBmbGFzaF9sb2NrIGZsYXNoX3VubG9jayBcCiAtCWZsYXNoX290cF9pbmZvIGZsYXNoX290cF9kdW1wIGZsYXNoX290cF9sb2NrIGZsYXNoX290cF93cml0ZSBcCi0tCW10ZF9kZWJ1ZyBmbGFzaGNwIG5hbmR3cml0ZSBuYW5kdGVzdCBcCistCW10ZF9kZWJ1ZyBmbGFzaGNwIG5hbmR3cml0ZSBuYW5kdGVzdCBtdGRwYXJ0IFwKIC0JamZmczJkdW1wIFwKIC0JbmZ0bGR1bXAgbmZ0bF9mb3JtYXQgZG9jZmRpc2sgXAogLQlyZmRkdW1wIHJmZGZvcm1hdCBcCkBAIC01MSwxNSArNTEsMTUgQEAKIC1CSU5TICs9IG1rZnMudWJpZnMvbWtmcy51YmlmcwogLUJJTlMgKz0gJChhZGRwcmVmaXggdWJpLXV0aWxzLywkKFVCSV9CSU5TKSkKIC1TQ1JJUFRTID0gZmxhc2hfZXJhc2VhbGwKLStCSU5TID0gJChhZGRwcmVmaXggdWJpLXV0aWxzLywkKFVCSV9CSU5TKSkKLSAKLSBUQVJHRVRTID0gJChCSU5TKQorLQorLVRBUkdFVFMgPSAkKEJJTlMpCiAtVEFSR0VUUyArPSBsaWIvbGlibXRkLmEKIC1UQVJHRVRTICs9IHViaS11dGlscy9saWJ1YmkuYQorK0JJTlMgPSAkKGFkZHByZWZpeCB1YmktdXRpbHMvLCQoVUJJX0JJTlMpKQogIAogIE9CSkRFUFMgPSAkKEJVSUxERElSKS9pbmNsdWRlL3ZlcnNpb24uaAogIAotQEAgLTYxLDEyICs0Niw5IEBAIGVuZGlmCitAQCAtNjEsMTIgKzQ0LDkgQEAgZW5kaWYKICAJcm0gLWYgJChCVUlMRERJUikvaW5jbHVkZS92ZXJzaW9uLmgKICAJJChNQUtFKSAtQyAkKFRFU1RTKSBjbGVhbgogIApAQCAtNzMsNyArNzMsNyBAQAogIAogIHRlc3RzOjoKICAJJChNQUtFKSAtQyAkKFRFU1RTKQotQEAgLTkxLDggKzczLDYgQEAgTERMSUJTX21rZnMuamZmczIgID0gLWx6ICQoTFpPTERMSUJTKQorQEAgLTkxLDggKzcxLDYgQEAgTERMSUJTX21rZnMuamZmczIgID0gLWx6ICQoTFpPTERMSUJTKQogIExERkxBR1NfamZmczJyZWFkZXIgPSAkKFpMSUJMREZMQUdTKSAkKExaT0xERkxBR1MpCiAgTERMSUJTX2pmZnMycmVhZGVyICA9IC1seiAkKExaT0xETElCUykKICAKQEAgLTgyLDYgKzgyLDMgQEAKICAjCiAgIyBDb21tb24gbGlibXRkCiAgIwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDA1LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDA1LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTIucGF0Y2gKaW5kZXggMmU0M2Q1ZC4uNmIwOWMxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDUtY29tbW9uLmgta2xpYmMtZml4ZXMtMi5wYXRjaApAQCAtMjIsMjAgKzIyLDExIEBACiAgaW5jbHVkZS9jb21tb24uaCB8IDEwICsrKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKLWluZGV4IDc3ZjNmN2QuLjJjYmVlMGYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2NvbW1vbi5oCi1AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBjaGFyIF9fUFJJeG9mZl90X3N0YXRpY19hc3NlcnRbc2l6ZW9mKG9mZl90KSA9PSA4ID8gMSA6IC0xXTsKLSAJZnByaW50ZihzdGRlcnIsICIlczogd2FybmluZyE6ICIgZm10ICJcbiIsIFBST0dSQU1fTkFNRSwgIyNfX1ZBX0FSR1NfXyk7IFwKLSB9IHdoaWxlKDApCi0gCi0tI2lmIGRlZmluZWQoX19VQ0xJQkNfXykKLSsjaWYgZGVmaW5lZChfX1VDTElCQ19fKSB8fCBkZWZpbmVkKF9fS0xJQkNfXykKLSAvKiB1Q2xpYmMgdmVyc2lvbnMgYmVmb3JlIDAuOS4zNCBkb24ndCBoYXZlIHJwbWF0Y2goKSAqLwotICNpZiBfX1VDTElCQ19NQUpPUl9fID09IDAgJiYgXAotIAkJKF9fVUNMSUJDX01JTk9SX18gPCA5IHx8IFwKLUBAIC0xNDYsMTUgKzE0NiwxNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX3JwbWF0Y2goY29uc3QgY2hhciAqcmVzcCkKK0luZGV4OiBnaXQvaW5jbHVkZS9jb21tb24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2luY2x1ZGUvY29tbW9uLmgKKysrKyBnaXQvaW5jbHVkZS9jb21tb24uaAorQEAgLTE2MSwxNSArMTYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fcnBtYXRjaChjb25zdCBjaGFyICoKICAgKi8KICBzdGF0aWMgaW5saW5lIGJvb2wgcHJvbXB0KGNvbnN0IGNoYXIgKm1zZywgYm9vbCBkZWYpCiAgewpAQCAtNTYsNiArNDcsMyBAQAogIAkJCXByaW50ZigiZmFpbGVkIHRvIHJlYWQgcHJvbXB0OyBhc3N1bWluZyAnJXMnXG4iLAogIAkJCQlkZWYgPyAieWVzIiA6ICJubyIpOwogIAkJCWJyZWFrOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Njc0MDc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJVQkkgdXRpbHMgc3RhdGljYWxseSBjb21waWxlZCBhZ2FpbnN0IGtsaWJjIgotREVTQ1JJUFRJT04gPSAiU21hbGwgc2l6ZWQgdG9vbHMgZnJvbSBtdGQtdXRpbHMgZm9yIHVzZSB3aXRoIGluaXRyYW1mcy4iCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gInpsaWIgbHpvIGUyZnNwcm9ncyB1dGlsLWxpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvY29tbW9uLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9YmEwNWIwNzkxMmE0NGVhMmJmODFjZTQwOTM4MDA0OWMiCi0KLWluaGVyaXQga2xpYmMKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0O3RhZz1iNzQ1NWQ4NDdhYjRmOWVlZWI2YTcyOWVmYzMwNmJmZGE3YmRkYzk5IFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1vbmx5LWJ1aWxkLXViaS11dGlscy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDItY29tbW9uLm1rLWZvci1rbGliYy1DQy1pcy1rbGNjLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMy1saWJ1YmkuYy1hZGQta2xpYmMtc3BlY2lmaWMtZml4ZXMucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTEucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTIucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWxpYmluaXBhcnNlci1yZW1vdmUtdW51c2VkLWZ1bmN0aW9uLW5lZWRpbmctZmxvYXQucGF0Y2ggXAotICAgICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdC8iCi0KLUVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdSQU5MSUI9JHtSQU5MSUJ9JyAnQVI9JHtBUn0nICdDRkxBR1M9JHtDRkxBR1N9IC1JJHtTfWluY2x1ZGUgLURXSVRIT1VUX1hBVFRSJyAnQlVJTERESVI9JHtTfSciCi1DRkxBR1MgKz0gIiR7VFVORV9DQ0FSR1N9IgotCi1kb19pbnN0YWxsICgpIHsKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIGluc3RhbGwKLQotfQotCi1QQUNLQUdFUyA9ICJ1YmktdXRpbHMta2xpYmMtZGJnIgotCi1QQUNLQUdFUyA9KyAibXRkaW5mby1rbGliYyB1YmlhdHRhY2gta2xpYmMgdWJpYmxvY2sta2xpYmMgdWJpY3JjMzIta2xpYmMgdWJpZGV0YWNoLWtsaWJjIFwKLSAgICAgICAgICAgICB1Ymlmb3JtYXQta2xpYmMgdWJpbWt2b2wta2xpYmMgdWJpbmZvLWtsaWJjIHViaW5pemUta2xpYmMgdWJpcmVuYW1lLWtsaWJjIFwKLSAgICAgICAgICAgICB1YmlybXZvbC1rbGliYyB1Ymlyc3ZvbC1rbGliYyB1Yml1cGRhdGV2b2wta2xpYmMiCi0KLUZJTEVTX210ZGluZm8ta2xpYmMgPSAiJHtzYmluZGlyfS9tdGRpbmZvIgotRklMRVNfdWJpYXR0YWNoLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpYXR0YWNoIgotRklMRVNfdWJpYmxvY2sta2xpYmMgPSAiJHtzYmluZGlyfS91YmlibG9jayIKLUZJTEVTX3ViaWNyYzMyLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpY3JjMzIiCi1GSUxFU191YmlkZXRhY2gta2xpYmMgPSAiJHtzYmluZGlyfS91YmlkZXRhY2giCi1GSUxFU191Ymlmb3JtYXQta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlmb3JtYXQiCi1GSUxFU191Ymlta3ZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW1rdm9sIgotRklMRVNfdWJpbmZvLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbmZvIgotRklMRVNfdWJpbml6ZS1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW5pemUiCi1GSUxFU191YmlyZW5hbWUta2xpYmMgPSAiJHtzYmluZGlyfS91YmlyZW5hbWUiCi1GSUxFU191YmlybXZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJtdm9sIgotRklMRVNfdWJpcnN2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlyc3ZvbCIKLUZJTEVTX3ViaXVwZGF0ZXZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXVwZGF0ZXZvbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4YzAyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4yLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVUJJIHV0aWxzIHN0YXRpY2FsbHkgY29tcGlsZWQgYWdhaW5zdCBrbGliYyIKK0RFU0NSSVBUSU9OID0gIlNtYWxsIHNpemVkIHRvb2xzIGZyb20gbXRkLXV0aWxzIGZvciB1c2Ugd2l0aCBpbml0cmFtZnMuIgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ6bGliIGx6byBlMmZzcHJvZ3MgdXRpbC1saW51eCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtbXRkLmluZnJhZGVhZC5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2NvbW1vbi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PWJhMDViMDc5MTJhNDRlYTJiZjgxY2U0MDkzODAwNDljIgorCitpbmhlcml0IGtsaWJjCisKK1NSQ1JFViA9ICJhZWEzNjQxNzA2N2RhZGU3NTE5MmJhZmEwM2FmNzBiNmViMjY3N2IxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1vbmx5LWJ1aWxkLXViaS11dGlscy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDItY29tbW9uLm1rLWZvci1rbGliYy1DQy1pcy1rbGNjLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMy1saWJ1YmkuYy1hZGQta2xpYmMtc3BlY2lmaWMtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTEucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTIucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWxpYmluaXBhcnNlci1yZW1vdmUtdW51c2VkLWZ1bmN0aW9uLW5lZWRpbmctZmxvYXQucGF0Y2ggXAorICAgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdC8iCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdSQU5MSUI9JHtSQU5MSUJ9JyAnQVI9JHtBUn0nICdDRkxBR1M9JHtDRkxBR1N9IC1JJHtTfWluY2x1ZGUgLURXSVRIT1VUX1hBVFRSJyAnQlVJTERESVI9JHtTfSciCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9Cit9CisKK1BBQ0tBR0VTID0gInViaS11dGlscy1rbGliYy1kYmciCisKK1BBQ0tBR0VTID0rICJtdGRpbmZvLWtsaWJjIHViaWF0dGFjaC1rbGliYyB1YmlibG9jay1rbGliYyB1YmljcmMzMi1rbGliYyB1YmlkZXRhY2gta2xpYmMgXAorICAgICAgICAgICAgIHViaWZvcm1hdC1rbGliYyB1Ymlta3ZvbC1rbGliYyB1YmluZm8ta2xpYmMgdWJpbml6ZS1rbGliYyB1YmlyZW5hbWUta2xpYmMgXAorICAgICAgICAgICAgIHViaXJtdm9sLWtsaWJjIHViaXJzdm9sLWtsaWJjIHViaXVwZGF0ZXZvbC1rbGliYyIKKworRklMRVNfbXRkaW5mby1rbGliYyA9ICIke3NiaW5kaXJ9L210ZGluZm8iCitGSUxFU191YmlhdHRhY2gta2xpYmMgPSAiJHtzYmluZGlyfS91YmlhdHRhY2giCitGSUxFU191YmlibG9jay1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWJsb2NrIgorRklMRVNfdWJpY3JjMzIta2xpYmMgPSAiJHtzYmluZGlyfS91YmljcmMzMiIKK0ZJTEVTX3ViaWRldGFjaC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWRldGFjaCIKK0ZJTEVTX3ViaWZvcm1hdC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWZvcm1hdCIKK0ZJTEVTX3ViaW1rdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbWt2b2wiCitGSUxFU191YmluZm8ta2xpYmMgPSAiJHtzYmluZGlyfS91YmluZm8iCitGSUxFU191YmluaXplLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbml6ZSIKK0ZJTEVTX3ViaXJlbmFtZS1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJlbmFtZSIKK0ZJTEVTX3ViaXJtdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcm12b2wiCitGSUxFU191Ymlyc3ZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJzdm9sIgorRklMRVNfdWJpdXBkYXRldm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpdXBkYXRldm9sIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCmluZGV4IGFiZGMxYTIuLmI1OWRmZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKQEAgLTEsMjAgKzEsMjAgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCiticmFuY2g6IHJvY2tvCiByZXZpc2lvbjogSEVBRAogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1sYXllcnM6IG1ldGEtb2UsIG1ldGEtcnVieQotYnJhbmNoOiBweXJvCitsYXllcnM6IG1ldGEtb2UKK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1tdWx0aW1lZGlhXVtweXJvXScgaW4gdGhlIHN1YmplY3QnCitTZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtbXVsdGltZWRpYV1bcm9ja29dJyBpbiB0aGUgc3ViamVjdCcKIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW11bHRpbWVkaWFdW3B5cm9dW1BBVENICisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtbXVsdGltZWRpYV1bcm9ja29dW1BBVENICiAKIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBmb3JrIHRoZSBtaXJyb3Igb24gZ2l0aHViIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS8gdG8gc2hhcmUgeW91ciBwYXRjaGVzLCB0aGlzIGlzIHByZWZlcnJlZCBmb3IgcGF0Y2ggc2V0cyBjb25zaXN0aW5nIG9mIG1vcmUgdGhhbiBvbmUgcGF0Y2guIE90aGVyIHNlcnZpY2VzIGxpa2UgZ2l0b3Jpb3VzLCByZXBvLm9yLmN6IG9yIHNlbGYgaG9zdGVkIHNldHVwcyBhcmUgb2YgY291cnNlIGFjY2VwdGVkIGFzIHdlbGwsICdnaXQgZmV0Y2ggPHJlbW90ZT4nIHdvcmtzIHRoZSBzYW1lIG9uIGFsbCBvZiB0aGVtLiBXZSByZWNvbW1lbmQgZ2l0aHViIGJlY2F1c2UgaXQgaXMgZnJlZSwgZWFzeSB0byB1c2UsIGhhcyBiZWVuIHByb3ZlbiB0byBiZSByZWxpYWJsZSBhbmQgaGFzIGEgcmVhbGx5IGdvb2Qgd2ViIEdVSS4KIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NsYXNzZXMvanVjZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY2xhc3Nlcy9qdWNlLmJiY2xhc3MKaW5kZXggNzE1MjgyZi4uMzkyNzIzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY2xhc3Nlcy9qdWNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY2xhc3Nlcy9qdWNlLmJiY2xhc3MKQEAgLTEsOCArMSw4IEBACiBpbmhlcml0IHBrZ2NvbmZpZwogCisjIExpc3Qgb2YgSlVDRSBtb2R1bGVzIHRoYXQgcmVxdWlyZXMgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzCiBKVUNFX01PRFVMRVMgPz89ICIgXAogICBqdWNlX2NvcmUgXAotICBqdWNlX2V2ZW50cyBcCiAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsICdqdWNlX2F1ZGlvX2RldmljZXMnLCAnJywgZCl9IFwKICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnanVjZV9ncmFwaGljcyBqdWNlX2d1aV9iYXNpY3MnLCAnJywgZCl9IFwKICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnanVjZV9vcGVuZ2wnLCAnJywgZCl9IFwKQEAgLTExLDcgKzExLDYgQEAKIAogUEFDS0FHRUNPTkZJR19wcmVwZW5kPSAiJHtKVUNFX01PRFVMRVN9ICIKIFBBQ0tBR0VDT05GSUdbanVjZV9jb3JlXSA9ICIsLGN1cmwsIgotUEFDS0FHRUNPTkZJR1tqdWNlX2V2ZW50c10gPSAiLCxsaWJ4MTEsIgogUEFDS0FHRUNPTkZJR1tqdWNlX2F1ZGlvX2RldmljZXNdID0gIiwsYWxzYS1saWIsIgogUEFDS0FHRUNPTkZJR1tqdWNlX2dyYXBoaWNzXSA9ICIsLCR7SlVDRV9YMTFfREVQU30gZnJlZXR5cGUsIgogUEFDS0FHRUNPTkZJR1tqdWNlX2d1aV9iYXNpY3NdID0gIiwsJHtKVUNFX1gxMV9ERVBTfSwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9maWxlcy9tb3ZlX3ZhcGlnZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9maWxlcy9tb3ZlX3ZhcGlnZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJmYzMxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2ZpbGVzL21vdmVfdmFwaWdlbi5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorT0UtQ29yZSdzIHZhbGEgY2xhc3Mga25vd24gb25lIHR5cGUgb2YgdmFwaWdlbi5tNCBhbmQgZGVsZXRlcyBpdCBzaW5jZSBpdHMKK25vdCBjcm9zcyBjb21waWxlIGZyaWVuZGx5LCBidXQgdGhpcyBpcyBhIGRpZmZlcmVudCBjYXNlIGhlcmUgd2hlcmUgaXRzIG5vdAorc2FtZSB2YXBpZ2VuLm00IGp1c3QgbmFtZSBpcyBzYW1lIGFuZCBpdCB0ZW5kcyB0byBpbmhlcml0IHZhbGEgYmJjbGFzcyBzbworc2F2ZSBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorSW5kZXg6IGd1cG5wLWRsbmEtMC4xMC41L200L3ZhcGlnZW4tY3VzdG9tLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgZ3VwbnAtZGxuYS0wLjEwLjUvbTQvdmFwaWdlbi1jdXN0b20ubTQKK0BAIC0wLDAgKzEsNDMgQEAKKysKKytkbmwgdmFsYS5tNAorK2RubAorK2RubCBDb3B5cmlnaHQgMjAxMCBNYXJjLUFuZHJlIEx1cmVhdQorK2RubCBDb3B5cmlnaHQgMjAxMSBSb2RuZXkgRGF3ZXMgPGRvYmV5LnB3bnNAZ21haWwuY29tPgorK2RubAorK2RubCBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrZG5sIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKytkbmwgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrZG5sIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorK2RubAorK2RubCBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKytkbmwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKytkbmwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKytkbmwgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKytkbmwKKytkbmwgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworK2RubCBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrZG5sIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSAgVVNBCisrCisrZG5sIGRyb3BwZWQgZXZlcnl0aGluZyBidXQgVkFMQV9QUk9HX1ZBUElHRU4gLSBKZW5zIEdlb3JnIDxtYWlsQGplbnNnZS5vcmc+CisrCisrIyBDaGVjayB3aGV0aGVyIHRoZSBWYWxhIEFQSSBHZW5lcmF0b3IgZXhpc3RzIGluIGBQQVRIJy4gSWYgaXQgaXMgZm91bmQsCisrIyB0aGUgdmFyaWFibGUgVkFQSUdFTiBpcyBzZXQuIE9wdGlvbmFsbHkgYSBtaW5pbXVtIHJlbGVhc2UgbnVtYmVyIG9mIHRoZQorKyMgZ2VuZXJhdG9yIGNhbiBiZSByZXF1ZXN0ZWQuCisrIworKyMgVkFMQV9QUk9HX1ZBUElHRU4oW01JTklNVU0tVkVSU0lPTl0pCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytBQ19ERUZVTihbR1VQTlBfUFJPR19WQVBJR0VOXSwKKytbQUNfUEFUSF9QUk9HKFtWQVBJR0VOXSwgW3ZhcGlnZW5dLCBbXSkKKysgIEFTX0lGKFt0ZXN0IC16ICIkVkFQSUdFTiJdLAorKyAgICBbQUNfTVNHX1dBUk4oW05vIFZhbGEgQVBJIEdlbmVyYXRvciBmb3VuZC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gZ2VuZXJhdGUgLnZhcGkgZmlsZXMuXSldLAorKyAgICBbQVNfSUYoW3Rlc3QgLW4gIiQxIl0sCisrICAgICAgICBbQUNfTVNHX0NIRUNLSU5HKFskVkFQSUdFTiBpcyBhdCBsZWFzdCB2ZXJzaW9uICQxXSkKKysgICAgICAgICBhbV9fdmFwaWdlbl92ZXJzaW9uPWAkVkFQSUdFTiAtLXZlcnNpb24gfCBzZWQgJ3MvVmFsYSBBUEkgR2VuZXJhdG9yICAqLy8nYAorKyAgICAgICAgIEFTX1ZFUlNJT05fQ09NUEFSRShbJDFdLCBbIiRhbV9fdmFwaWdlbl92ZXJzaW9uIl0sCisrICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSldLAorKyAgICAgICAgICAgW0FDX01TR19SRVNVTFQoW3llc10pXSwKKysgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pCisrICAgICAgICAgICAgQUNfTVNHX1dBUk4oW1ZhbGEgQVBJIEdlbmVyYXRvciAkMSBub3QgZm91bmQuXSkKKysgICAgICAgICAgICBWQVBJR0VOPSIiCisrICAgICAgICAgICBdKV0pXSkKKytdKQorSW5kZXg6IGd1cG5wLWRsbmEtMC4xMC41L200L3ZhcGlnZW4ubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBndXBucC1kbG5hLTAuMTAuNS5vcmlnL200L3ZhcGlnZW4ubTQKKysrKyAvZGV2L251bGwKK0BAIC0xLDQzICswLDAgQEAKKy0KKy1kbmwgdmFsYS5tNAorLWRubAorLWRubCBDb3B5cmlnaHQgMjAxMCBNYXJjLUFuZHJlIEx1cmVhdQorLWRubCBDb3B5cmlnaHQgMjAxMSBSb2RuZXkgRGF3ZXMgPGRvYmV5LnB3bnNAZ21haWwuY29tPgorLWRubAorLWRubCBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistZG5sIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKy1kbmwgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCistZG5sIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLWRubAorLWRubCBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy1kbmwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy1kbmwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy1kbmwgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy1kbmwKKy1kbmwgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworLWRubCBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistZG5sIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSAgVVNBCistCistZG5sIGRyb3BwZWQgZXZlcnl0aGluZyBidXQgVkFMQV9QUk9HX1ZBUElHRU4gLSBKZW5zIEdlb3JnIDxtYWlsQGplbnNnZS5vcmc+CistCistIyBDaGVjayB3aGV0aGVyIHRoZSBWYWxhIEFQSSBHZW5lcmF0b3IgZXhpc3RzIGluIGBQQVRIJy4gSWYgaXQgaXMgZm91bmQsCistIyB0aGUgdmFyaWFibGUgVkFQSUdFTiBpcyBzZXQuIE9wdGlvbmFsbHkgYSBtaW5pbXVtIHJlbGVhc2UgbnVtYmVyIG9mIHRoZQorLSMgZ2VuZXJhdG9yIGNhbiBiZSByZXF1ZXN0ZWQuCistIworLSMgVkFMQV9QUk9HX1ZBUElHRU4oW01JTklNVU0tVkVSU0lPTl0pCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy1BQ19ERUZVTihbR1VQTlBfUFJPR19WQVBJR0VOXSwKKy1bQUNfUEFUSF9QUk9HKFtWQVBJR0VOXSwgW3ZhcGlnZW5dLCBbXSkKKy0gIEFTX0lGKFt0ZXN0IC16ICIkVkFQSUdFTiJdLAorLSAgICBbQUNfTVNHX1dBUk4oW05vIFZhbGEgQVBJIEdlbmVyYXRvciBmb3VuZC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gZ2VuZXJhdGUgLnZhcGkgZmlsZXMuXSldLAorLSAgICBbQVNfSUYoW3Rlc3QgLW4gIiQxIl0sCistICAgICAgICBbQUNfTVNHX0NIRUNLSU5HKFskVkFQSUdFTiBpcyBhdCBsZWFzdCB2ZXJzaW9uICQxXSkKKy0gICAgICAgICBhbV9fdmFwaWdlbl92ZXJzaW9uPWAkVkFQSUdFTiAtLXZlcnNpb24gfCBzZWQgJ3MvVmFsYSBBUEkgR2VuZXJhdG9yICAqLy8nYAorLSAgICAgICAgIEFTX1ZFUlNJT05fQ09NUEFSRShbJDFdLCBbIiRhbV9fdmFwaWdlbl92ZXJzaW9uIl0sCistICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSldLAorLSAgICAgICAgICAgW0FDX01TR19SRVNVTFQoW3llc10pXSwKKy0gICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pCistICAgICAgICAgICAgQUNfTVNHX1dBUk4oW1ZhbGEgQVBJIEdlbmVyYXRvciAkMSBub3QgZm91bmQuXSkKKy0gICAgICAgICAgICBWQVBJR0VOPSIiCistICAgICAgICAgICBdKV0pXSkKKy1dKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3NzZHBfMC4xNC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3NzZHBfMC4xNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDU3YWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzAuMTQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBnc3NkcC5pbmMKLQotaW5oZXJpdCBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrLC0td2l0aG91dC1ndGssZ3RrKzMiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8wLjE0LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjg2NThlNDgwZDA0N2NhZjJkOTJiYWE0YTUxYjlhZTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGMzZmZhMDE0MzVlODRkYzMxYzk1NGU2NjllMWNhMDc0OWI5NjJmNzZhMzMzZTc0ZjVjMmNiMGRlNTgwM2ExMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzEuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3NzZHBfMS4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYwZDFlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzEuMC4yLmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBnc3NkcC5pbmMKKworaW5oZXJpdCBndGstZG9jCisKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrLC0td2l0aG91dC1ndGssZ3RrKzMiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjAvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMzBjOWE0MDY4NTNjNmEzYTAxMmQxNTFkNmU3YWQyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWUxN2MwOWM3ZTFhMTg1YjBiZDg0ZmQ2ZmYzNzk0MDQ1YTNjZDcyOWI3MDdjMjNlNDIyZmY2NjQ3MTUzNWRjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkMDIyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTAuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGd1cG5wLWF2LmluYworCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjIxNWY2MjY1MDhkNzZiNzY3ZjVkYTdjOWI5MmU4N2Q4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwMzhlZjg0ZGRkYmU3YWQ5MWMyMDViZjkxZGRkZjY4NGYwNzJkZjg2MjNmMzliNjU1NWE2YmI3MjgzN2I4NWEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNmYTI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBndXBucC1hdi5pbmMKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzAuMTIvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTZjZGIyNjkzNzZhOWU2Y2IwNjJlYjk5NjBjY2Y1NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDU1M2Q2MGRkN2M3Mjc3YzY1YzAyYTY4YTI3MGM0ZGNiOTAzNmE0YzcwNzVjOTAyZmM4MTExYzZhNWU2YTQ0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjEwLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1kbG5hXzAuMTAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2FmZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjEwLjUuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBBViBhcHBsaWNhdGlvbnMgdXNpbmcgRExOQSIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtZGxuYS9ndXBucC1kbG5hLXByb2ZpbGUuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT0xYjg1NDU5ZjY1Y2IxZTczYTg4NWNhMTM3YWFiNjI3NCIKKworREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4xMC8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL21vdmVfdmFwaWdlbi5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMmQwZGMxZTQxODlkMDI0M2FjMzgzOGVjZTFlOGZlYTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTIzZTM2ODIyN2MxMWQ1YzE3ZmMxYWE3NmNiZGFmZmEzNDUzNTVlYjUxZDE3MmNkMzlmYzc0YTViNDY4ZmY2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhCisKK1BBQ0tBR0VDT05GSUcgPz0gImdzdHJlYW1lciIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3RyZWFtZXItbWV0YWRhdGEtYmFja2VuZCwtLWRpc2FibGUtZ3N0cmVhbWVyLW1ldGFkYXRhLWJhY2tlbmQsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2d1cG5wLWRsbmEtMi4wL2RsbmEtcHJvZmlsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1kbG5hXzAuOS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzNjA0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1kbG5hXzAuOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBBViBhcHBsaWNhdGlvbnMgdXNpbmcgRExOQSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtZGxuYS9ndXBucC1kbG5hLXByb2ZpbGUuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT0xYjg1NDU5ZjY1Y2IxZTczYTg4NWNhMTM3YWFiNjI3NCIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC45LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjkzNjY1ZTUzNWE1MTJlNGQ1MTVhODYzMTE0MzVjYjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjk5Njk3MTNmMzZjMGU4MTVmYmJiY2ZkZmIzYWQ5YmQ0NDdjZmQxMGQwZmQ4NjIyN2Q4MmRmZDhlZGI2YzgwNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhCi0KLVBBQ0tBR0VDT05GSUcgPz0gImdzdHJlYW1lciIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3RyZWFtZXItbWV0YWRhdGEtYmFja2VuZCwtLWRpc2FibGUtZ3N0cmVhbWVyLW1ldGFkYXRhLWJhY2tlbmQsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2d1cG5wLWRsbmEtMi4wL2RsbmEtcHJvZmlsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MGU4MjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIEludGVybmV0IEdhdGV3YXkgRGV2aWNlcyBvdmVyIFVQblAiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWlnZC9ndXBucC1zaW1wbGUtaWdkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9YWEyOTJjMGQ5MzkwNDYzYTZlMTA1NWRjNWZjNjhlODAiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3VwbnAgc3FsaXRlMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuMi8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImY4ODEzMjMzMDQxODVjMDI2MzQwMzRlM2JkYTcxNGJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczYjZhOThhMGYxM2IyOWIzNGMzYmZjMDdmOTlmNzhiMTMxOTIxMWNiOTVhODU4NTc1Mjg3M2FmMmI5MDY3ZDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUE5CTEFDS0xJU1RbZ3VwbnAtaWdkXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY0NS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhNTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWlnZF8wLjIuNC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIkhlbHBlcnMgZm9yIGludGVyYWN0aW5nIHdpdGggSW50ZXJuZXQgR2F0ZXdheSBEZXZpY2VzIG92ZXIgVVBuUCIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtaWdkL2d1cG5wLXNpbXBsZS1pZ2QuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1hYTI5MmMwZDkzOTA0NjNhNmUxMDU1ZGM1ZmM2OGU4MCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBndXBucCBzcWxpdGUzIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4yLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMTI0MzcxMTM2YjVhN2IxMDU2YTM2ODE3ODBhNjI3NzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhjNGE2ZDc3MThkMTdlYWMxN2RmOTVhM2E4YzMzNzY3N2VkYTc3ZTU4OTc4MTI5YWQzMTgyZDc2OWMzOGU0NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTdmODI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIEdVUG5QIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0d29yay1saWdodC9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9MmMzOWIzYTAwMDQ5NWRhYmQ0OTMyZjIzMWM3ZWZlZDgiCi1ERVBFTkRTID0gImd1cG5wIGd1cG5wLWF2IGd0ayszIGludGx0b29sLW5hdGl2ZSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImFkd2FpdGEtaWNvbi10aGVtZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuOC8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFkODQyM2QwMzZlOThiYzZmODc3NTI4ZDZiODQ2ZjZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MmM1MzI4OWZmMWNkNzBlNjc2NDA1YzU2Y2E4N2IyOGQyZGEzN2EzODVkMzRhM2JiOWI5NDRiYTkxMDhkMTciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QTkJMQUNLTElTVFtndXBucC10b29sc10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NzAvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNjBkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC10b29sc18wLjguMTMuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgR1VQblAiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXR3b3JrLWxpZ2h0L21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT0yYzM5YjNhMDAwNDk1ZGFiZDQ5MzJmMjMxYzdlZmVkOCIKK0RFUEVORFMgPSAiZ3VwbnAgZ3VwbnAtYXYgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC44LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMjEyZDg1ZWJjZTg5YjMyNDY4YjU5ZTExNjQwNTBkNDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWEzZGVjYjlkNTMyYzBlMmU1MDVhZGM1OTJmNDMxZmQ4MWMwMjMxZGVkMjk4MTEyOWU4N2RhMTM3MTI0NzllZCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8wLjIwLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMC4yMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQwNzE3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8wLjIwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIGd1cG5wLmluYwotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4yMC8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjYzMzQ2ZWY5MGFjNWNkOTI1YzNhOTQxZjUxZDhiY2E2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3ZmZiOTQwYmE3N2M0YTY0MjZkMDlkNDEwMDRjNzVkOTI2NTJkY2JkZTg2Yzg0YWMxYzg0N2RiZDlhZDU5YmQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wL2d1cG5wLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZDc4YTY5ZDliNmU2M2VlMmRjNzJlN2I2NzRkOTc1MjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZGY3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjAuMi5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgZ3VwbnAuaW5jCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjAvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZmQ5NmZlNzM4NTZiMzhhYWYxYmFmNzUyNmUwOGVkZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MTczZmRhNzc5MTExYzZiMDFjZDRhNWU0MWI1OTQzMjJiZTlkMDRmOGM3NGQzMzYxZjBhMGMyMDY5Yzc3NjEwIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC9ndXBucC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWQ3OGE2OWQ5YjZlNjNlZTJkYzcyZTdiNjc0ZDk3NTIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL0NWRS0yMDE2LTg4NjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAvQ1ZFLTIwMTYtODg2My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJiNGE3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAvQ1ZFLTIwMTYtODg2My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLWxpYnVwbnAtMS42LjE5OiBGaXggQ1ZFLTIwMTYtODg2MwotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODc3MQotCi1nZW5hX2RldmljZTogRml4IG91dC1vZi1ib3VuZCBhY2Nlc3MgaW4gY3JlYXRlX3VybF9saXN0KCkKLQotSWYgdGhlcmUgaXMgYW4gaW52YWxpZCBVUkwgaW4gVVJMUy0+YnVmIGFmdGVyIGEgdmFsaWQgb25lLCB1cmlfcGFyc2UgaXMKLWNhbGxlZCB3aXRoIG91dCBwb2ludGluZyBhZnRlciB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gQXMgdXJpX3BhcnNlIHdyaXRlcwotdG8gKm91dCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yIHRoZSBsb29wIGluIGNyZWF0ZV91cmxfbGlzdCBtdXN0IGJlCi1zdG9wcGVkIGVhcmx5IHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kIGFjY2VzcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcHVwbnAvY29kZS9jaS85YzA5OWMyOTIzYWI0ZDk4NTMwYWI1MjA0YWYxNzM4YmU1YmRkYmE3XQotQ1ZFOiBDVkUtMjAxNi04ODYzCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3VwbnAvc3JjL2dlbmEvZ2VuYV9kZXZpY2UuYyBiL3VwbnAvc3JjL2dlbmEvZ2VuYV9kZXZpY2UuYwotaW5kZXggMzllZGMwYi4uMGZkNjBhZCAxMDA2NDQKLS0tLSBhL3VwbnAvc3JjL2dlbmEvZ2VuYV9kZXZpY2UuYwotKysrIGIvdXBucC9zcmMvZ2VuYS9nZW5hX2RldmljZS5jCi1AQCAtMTEzMyw3ICsxMTMzLDcgQEAgc3RhdGljIGludCBjcmVhdGVfdXJsX2xpc3QoCi0gCS8qISBbb3V0XSAuICovCi0gCVVSTF9saXN0ICpvdXQpCi0gewotLSAgICBzaXplX3QgVVJMY291bnQgPSAwOwotKyAgICBzaXplX3QgVVJMY291bnQgPSAwLCBVUkxjb3VudDIgPSAwOwotICAgICBzaXplX3QgaTsKLSAgICAgaW50IHJldHVybl9jb2RlID0gMDsKLSAgICAgdXJpX3R5cGUgdGVtcDsKLUBAIC0xMTc1LDE2ICsxMTc1LDIzIEBAIHN0YXRpYyBpbnQgY3JlYXRlX3VybF9saXN0KAotICAgICAgICAgfQotICAgICAgICAgbWVtY3B5KCBvdXQtPlVSTHMsIFVSTFMtPmJ1ZmYsIFVSTFMtPnNpemUgKTsKLSAgICAgICAgIG91dC0+VVJMc1tVUkxTLT5zaXplXSA9IDA7Ci0tICAgICAgICBVUkxjb3VudCA9IDA7Ci0gICAgICAgICBmb3IoIGkgPSAwOyBpIDwgVVJMUy0+c2l6ZTsgaSsrICkgewotICAgICAgICAgICAgIGlmKCAoIFVSTFMtPmJ1ZmZbaV0gPT0gJzwnICkgJiYgKCBpICsgMSA8IFVSTFMtPnNpemUgKSApIHsKLSAgICAgICAgICAgICAgICAgaWYoICggKCByZXR1cm5fY29kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfdXJpKCAmb3V0LT5VUkxzW2kgKyAxXSwgVVJMUy0+c2l6ZSAtIGkgKyAxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dC0+cGFyc2VkVVJMc1tVUkxjb3VudF0gKSApID09Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LT5wYXJzZWRVUkxzW1VSTGNvdW50Ml0gKSApID09Ci0gICAgICAgICAgICAgICAgICAgICAgIEhUVFBfU1VDQ0VTUyApCi0tICAgICAgICAgICAgICAgICAgICAmJiAoIG91dC0+cGFyc2VkVVJMc1tVUkxjb3VudF0uaG9zdHBvcnQudGV4dC5zaXplICE9Ci0rICAgICAgICAgICAgICAgICAgICAmJiAoIG91dC0+cGFyc2VkVVJMc1tVUkxjb3VudDJdLmhvc3Rwb3J0LnRleHQuc2l6ZSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAwICkgKSB7Ci0tICAgICAgICAgICAgICAgICAgICBVUkxjb3VudCsrOwotKyAgICAgICAgICAgICAgICAgICAgVVJMY291bnQyKys7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoVVJMY291bnQyID49IFVSTGNvdW50KQotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICAgICAgICAgICAgICogYnJlYWsgZWFybHkgaGVyZSBpbiBjYXNlIHRoZXJlIGlzIGEgYm9ndXMgVVJMIHRoYXQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgKiB3YXMgc2tpcHBlZCBhYm92ZS4gVGhpcyBwcmV2ZW50cyB0byBhY2Nlc3MKLSsgICAgICAgICAgICAgICAgICAgICAgICAgKiBvdXQtPnBhcnNlZFVSTHNbVVJMY291bnRdIHdoaWNoIGlzIGJleW9uZCB0aGUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbGxvY2F0aW9uLgotKyAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgaWYoIHJldHVybl9jb2RlID09IFVQTlBfRV9PVVRPRl9NRU1PUlkgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSggb3V0LT5VUkxzICk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAvYXZvaWQtcmVkZWZpbmluZy1zdHJubGVuLWFuZC1zdHJuZHVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL2F2b2lkLXJlZGVmaW5pbmctc3Rybmxlbi1hbmQtc3RybmR1cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MzZjIzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAvYXZvaWQtcmVkZWZpbmluZy1zdHJubGVuLWFuZC1zdHJuZHVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAyMmZiYTRmMjc2NWY5MmNkNTkyYTU4ZTFmZTVjNDUwYjE4N2UzMGUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMyBKdW4gMjAxNSAyMTozOTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCByZWRlZmluaW5nIHN0cm5sZW4oKSBhbmQgc3RybmR1cCgpCi0KLVJlbHkgb24gc3RyaW5nLmggZGVmaW5pdGlvbnMgaW5zdGVhZC4gV29ya2Fyb3VuZCBmb3IgY29tcGlsZXIgZXJyb3JzIHN1Y2ggYXM6Ci0KLSAgfCBpNjg2LXJkay1saW51eC1saWJ0b29sOiBjb21waWxlOiAgaTY4Ni1yZGstbGludXgtZ2NjIC1tMzIgLW1hcmNoPWF0b20gLW10dW5lPWF0b20gLWZzY2hlZHVsZS1pbnNucyAtZnNjaGVkLXByZXNzdXJlIC1tc3NlMyAtbWZwbWF0aD1zc2UgLS1zeXNyb290PS9ob21lL2FuZHJlL2J1aWxkL3RtcC9zeXNyb290cy83NDAxIC1ESEFWRV9DT05GSUdfSCAtSS4gLUkvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvdXBucCAtSS4uIC1JLi4vdXBucC9pbmMgLUkvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvdXBucC9pbmMgLUkvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvdGhyZWFkdXRpbC9pbmMgLUkvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvaXhtbC9pbmMgLUkvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvdXBucC9zcmMvaW5jIC1wdGhyZWFkIC1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLU9zIC1XYWxsIC1jIC9ob21lL2FuZHJlL2J1aWxkL3RtcC93b3JrL2NvcmUyLTMyLXJkay1saW51eC9saWJ1cG5wLzEuNi4xOS1yMC9saWJ1cG5wLTEuNi4xOS91cG5wL3NyYy9nZW5hL2dlbmFfY2FsbGJhY2syLmMgLW8gc3JjL2dlbmEvbGlidXBucF9sYS1nZW5hX2NhbGxiYWNrMi5vID4vZGV2L251bGwgMj4mMQotICB8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvNzQwMS91c3IvaW5jbHVkZS9zdHJpbmcuaDo2MzQ6MCwKLSAgfCAgICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3VwbnAvc3JjL2FwaS9VcG5wU3RyaW5nLmM6MjM6Ci0gIHwgL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3VwbnAvc3JjL2FwaS9VcG5wU3RyaW5nLmM6NDc6MTU6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIG9yICcoJyBiZWZvcmUgJ19fZXh0ZW5zaW9uX18nCi0gIHwgICBleHRlcm4gY2hhciAqc3RybmR1cChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKTsKLSAgfCAgICAgICAgICAgICAgICBeCi0gIHwgbWFrZVszXTogKioqIFtzcmMvYXBpL2xpYnVwbnBfbGEtVXBucFN0cmluZy5sb10gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIHVwbnAvc3JjL2FwaS9VcG5wU3RyaW5nLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdXBucC9zcmMvYXBpL1VwbnBTdHJpbmcuYyBiL3VwbnAvc3JjL2FwaS9VcG5wU3RyaW5nLmMKLWluZGV4IDQxYzk4OTguLjJmYTA5ZDcgMTAwNjQ0Ci0tLS0gYS91cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jCi0rKysgYi91cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jCi1AQCAtMzIsNyArMzIsNyBAQAotIAkvKiBWQyBoYXMgc3RybmxlbiB3aGljaCBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ1dCB3aXRoIChwb3RlbnRpYWxseSkgZGlmZmVyZW50IGxpbmthZ2UgKi8KLSAJLyogc3RybmxlbigpIGlzIGEgR05VIGV4dGVuc2lvbi4gKi8KLSAJI2lmIEhBVkVfU1RSTkxFTgotLQkJZXh0ZXJuIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBtYXhsZW4pOwotKy8vCQlleHRlcm4gc2l6ZV90IHN0cm5sZW4oY29uc3QgY2hhciAqcywgc2l6ZV90IG1heGxlbik7Ci0gCSNlbHNlIC8qIEhBVkVfU1RSTkxFTiAqLwotIAkJc3RhdGljIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBuKQotIAkJewotQEAgLTQ0LDcgKzQ0LDcgQEAKLSAKLSAvKiBzdHJuZHVwKCkgaXMgYSBHTlUgZXh0ZW5zaW9uLiAqLwotICNpZiBIQVZFX1NUUk5EVVAgJiYgIWRlZmluZWQoV0lOMzIpCi0tCWV4dGVybiBjaGFyICpzdHJuZHVwKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pOwotKy8vCWV4dGVybiBjaGFyICpzdHJuZHVwKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pOwotICNlbHNlIC8qIEhBVkVfU1RSTkRVUCAmJiAhZGVmaW5lZChXSU4zMikgKi8KLSAJc3RhdGljIGNoYXIgKnN0cm5kdXAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCi0gCXsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL3NlcGJ1aWxkZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL3NlcGJ1aWxkZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDk3NjhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucC9zZXBidWlsZGZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gZTE5OGYwYTg3NjYwYTA0ODE2NGNhMGUxNmQxODUxN2QwYWVlODQ2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIwMTUgMTI6MjA6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkcyB3aGVuIHVzaW5nIHNlcGFyYXRlIHNvdXJjZSBhbmQgYnVpbGQgZGlyZWN0b3JpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICB8IDggKysrKy0tLS0KLSBpeG1sL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQotIHRocmVhZHV0aWwvTWFrZWZpbGUuYW0gfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGUyYzNmNDcuLjExZDVlMjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcxNCw4ICs3MTQsOCBAQCBBQ19PVVRQVVQKLSAjCi0gIyBGaWxlcyBjb3BpZWQgZm9yIHdpbmRvd3MgY29tcGlsYXRpb24uCi0gIwotLWVjaG8gImNvbmZpZ3VyZTogY29weWluZyBcImF1dG9jb25maWcuaFwiICAgICAgICAgIHRvIFwiYnVpbGQvaW5jL2F1dG9jb25maWcuaFwiIgotLWNwIGF1dG9jb25maWcuaCBidWlsZC9pbmMvYXV0b2NvbmZpZy5oCi0tZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwidXBucC9pbmMvdXBucGNvbmZpZy5oXCIgdG8gXCJidWlsZC9pbmMvdXBucGNvbmZpZy5oXCIiCi0tY3AgdXBucC9pbmMvdXBucGNvbmZpZy5oIGJ1aWxkL2luYy91cG5wY29uZmlnLmgKLStlY2hvICJjb25maWd1cmU6IGNvcHlpbmcgXCJhdXRvY29uZmlnLmhcIiAgICAgICAgICB0byBcIlwkc3JjZGlyL2J1aWxkL2luYy9hdXRvY29uZmlnLmhcIiIKLStjcCBhdXRvY29uZmlnLmggJHNyY2Rpci9idWlsZC9pbmMvYXV0b2NvbmZpZy5oCi0rZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwidXBucC9pbmMvdXBucGNvbmZpZy5oXCIgdG8gXCJcJHNyY2Rpci9idWlsZC9pbmMvdXBucGNvbmZpZy5oXCIiCi0rY3AgdXBucC9pbmMvdXBucGNvbmZpZy5oICRzcmNkaXIvYnVpbGQvaW5jL3VwbnBjb25maWcuaAotIAotZGlmZiAtLWdpdCBhL2l4bWwvTWFrZWZpbGUuYW0gYi9peG1sL01ha2VmaWxlLmFtCi1pbmRleCA0OWRhNzY2Li4wZTlhYjJjIDEwMDY0NAotLS0tIGEvaXhtbC9NYWtlZmlsZS5hbQotKysrIGIvaXhtbC9NYWtlZmlsZS5hbQotQEAgLTcsNyArNyw3IEBACi0gCi0gU1VCRElSUyAJCT0gZG9jCi0gCi0tQU1fQ1BQRkxBR1MJCT0gLUkkKHNyY2RpcikvaW5jIC1JJChzcmNkaXIpL3NyYy9pbmMKLStBTV9DUFBGTEFHUwkJPSAtSSQodG9wX3NyY2RpcikvdXBucC9pbmMgLUkkKHNyY2RpcikvaW5jIC1JJChzcmNkaXIpL3NyYy9pbmMKLSBBTV9DRkxBR1MJCT0gCi0gCi0gTERBREQJCQk9IGxpYml4bWwubGEKLWRpZmYgLS1naXQgYS90aHJlYWR1dGlsL01ha2VmaWxlLmFtIGIvdGhyZWFkdXRpbC9NYWtlZmlsZS5hbQotaW5kZXggYTRlZDMyNS4uNDJkMDcyNiAxMDA2NDQKLS0tLSBhL3RocmVhZHV0aWwvTWFrZWZpbGUuYW0KLSsrKyBiL3RocmVhZHV0aWwvTWFrZWZpbGUuYW0KLUBAIC00LDcgKzQsNyBAQAotICMgKEMpIENvcHlyaWdodCAyMDA1IFJlbWkgVHVyYm91bHQgPHIzbWlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotICMKLSAKLS1BTV9DUFBGTEFHUwkJPSAtSSQoc3JjZGlyKS9pbmMgLUkkKHNyY2Rpcikvc3JjL2luYwotK0FNX0NQUEZMQUdTCQk9IC1JJCh0b3Bfc3JjZGlyKS91cG5wL2luYyAtSSQoc3JjZGlyKS9pbmMgLUkkKHNyY2Rpcikvc3JjL2luYwotIAotIGlmIEVOQUJMRV9ERUJVRwotICAgICBBTV9DUFBGTEFHUwkJKz0gLURERUJVRyAtRFNUQVRTCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNi9zZXBidWlsZGZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNi9zZXBidWlsZGZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDkzY2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42L3NlcGJ1aWxkZml4LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZTE5OGYwYTg3NjYwYTA0ODE2NGNhMGUxNmQxODUxN2QwYWVlODQ2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDkgSnVuIDIwMTUgMTI6MjA6NDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkcyB3aGVuIHVzaW5nIHNlcGFyYXRlIHNvdXJjZSBhbmQgYnVpbGQgZGlyZWN0b3JpZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTg3MzFiNS4uNTRhM2MzZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzQ0LDkgKzc0NCw5IEBAIEFDX09VVFBVVAorICMKKyAjIEZpbGVzIGNvcGllZCBmb3Igd2luZG93cyBjb21waWxhdGlvbi4KKyAjCistZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwiYXV0b2NvbmZpZy5oXCIgICAgICAgICAgdG8gXCJidWlsZC9pbmMvYXV0b2NvbmZpZy5oXCIiCistdGVzdCAtZCBidWlsZC9pbmMgfHwgbWtkaXIgLXAgYnVpbGQvaW5jCistY3AgYXV0b2NvbmZpZy5oIGJ1aWxkL2luYy9hdXRvY29uZmlnLmgKKy1lY2hvICJjb25maWd1cmU6IGNvcHlpbmcgXCJ1cG5wL2luYy91cG5wY29uZmlnLmhcIiB0byBcImJ1aWxkL2luYy91cG5wY29uZmlnLmhcIiIKKy1jcCB1cG5wL2luYy91cG5wY29uZmlnLmggYnVpbGQvaW5jL3VwbnBjb25maWcuaAorK2VjaG8gImNvbmZpZ3VyZTogY29weWluZyBcImF1dG9jb25maWcuaFwiICAgICAgICAgIHRvIFwiXCRzcmNkaXIvYnVpbGQvaW5jL2F1dG9jb25maWcuaFwiIgorK3Rlc3QgLWQgJHNyY2Rpci9idWlsZC9pbmMgfHwgbWtkaXIgLXAgJHNyY2Rpci9idWlsZC9pbmMKKytjcCBhdXRvY29uZmlnLmggJHNyY2Rpci9idWlsZC9pbmMvYXV0b2NvbmZpZy5oCisrZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwidXBucC9pbmMvdXBucGNvbmZpZy5oXCIgdG8gXCJcJHNyY2Rpci9idWlsZC9pbmMvdXBucGNvbmZpZy5oXCIiCisrY3AgdXBucC9pbmMvdXBucGNvbmZpZy5oICRzcmNkaXIvYnVpbGQvaW5jL3VwbnBjb25maWcuaAorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAxLjZfMS42LjIxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42XzEuNi4yMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWIwNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42XzEuNi4yMS5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlBvcnRhYmxlIFNESyBmb3IgVVBuUCogRGV2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBQb3J0YWJsZSBTREsgZm9yIFVQblAgRGV2aWNlcyBpcyBhbiBTREsgZm9yIGRldmVsb3BtZW50IG9mIFwKK1VQblAgZGV2aWNlIGFuZCBjb250cm9sIHBvaW50IGFwcGxpY2F0aW9ucy4gSXQgY29uc2lzdHMgb2YgdGhlIGNvcmUgVVBuUCBcCitwcm90b2NvbHMgYWxvbmcgd2l0aCBhIFVQblAtc3BlY2lmaWMgZVh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkgcGFyc2VyIFwKK3N1cHBvcnRpbmcgdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbCAoRE9NKSBMZXZlbCAyIEFQSSBhbmQgYW4gb3B0aW9uYWwsIFwKK2ludGVncmF0ZWQgbWluaSB3ZWIgc2VydmVyIGZvciBzZXJ2aW5nIFVQblAgcmVsYXRlZCBkb2N1bWVudHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3B1cG5wLnNvdXJjZWZvcmdlLm5ldC8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIzMTkwZDUyNDRlMDhlNzhlNGM4ZWU3ODU0NGY0ODYzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wdXBucC9saWJ1cG5wLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vc2VwYnVpbGRmaXgucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTEzYWRhZGIwN2ZhMDM5YThhZWIwY2ViN2I3YjBmNmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWYzZjNjMDg0NmExZDc1YmFlYWRhZTRhYTVhMmJkYTQyNzU2N2UyYTFmYjQ1NTliZjczY2NmZjBhNGY5YTM5YiIKKworUyA9ICIke1dPUktESVJ9L2xpYnVwbnAtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnBfMS42LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wXzEuNi4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmYzcwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnBfMS42LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3J0YWJsZSBTREsgZm9yIFVQblAqIERldmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgUG9ydGFibGUgU0RLIGZvciBVUG5QIERldmljZXMgaXMgYW4gU0RLIGZvciBkZXZlbG9wbWVudCBvZiBcCi1VUG5QIGRldmljZSBhbmQgY29udHJvbCBwb2ludCBhcHBsaWNhdGlvbnMuIEl0IGNvbnNpc3RzIG9mIHRoZSBjb3JlIFVQblAgXAotcHJvdG9jb2xzIGFsb25nIHdpdGggYSBVUG5QLXNwZWNpZmljIGVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlIChYTUwpIHBhcnNlciBcCi1zdXBwb3J0aW5nIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMiBBUEkgYW5kIGFuIG9wdGlvbmFsLCBcCi1pbnRlZ3JhdGVkIG1pbmkgd2ViIHNlcnZlciBmb3Igc2VydmluZyBVUG5QIHJlbGF0ZWQgZG9jdW1lbnRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wdXBucC5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMzE5MGQ1MjQ0ZTA4ZTc4ZTRjOGVlNzg1NDRmNDg2MyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHVwbnAvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1yZWRlZmluaW5nLXN0cm5sZW4tYW5kLXN0cm5kdXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VwYnVpbGRmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtODg2My5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZTE2ZTVkMzNhM2VhNzUwNmYzOGQ3MWZhY2MwNTdkZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzE0MmIzOTYwMTI0M2I1MDUzMmVlYzkwZjRhMjdkYmE4NWViODZmNThkNGI4NDlhYzk0ZWRlYjI5ZDliMjJhIgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E1MjRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucF9naXQuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJQb3J0YWJsZSBTREsgZm9yIFVQblAqIERldmljZXMiCitERVNDUklQVElPTiA9ICJUaGUgUG9ydGFibGUgU0RLIGZvciBVUG5QIERldmljZXMgaXMgYW4gU0RLIGZvciBkZXZlbG9wbWVudCBvZiBcCitVUG5QIGRldmljZSBhbmQgY29udHJvbCBwb2ludCBhcHBsaWNhdGlvbnMuIEl0IGNvbnNpc3RzIG9mIHRoZSBjb3JlIFVQblAgXAorcHJvdG9jb2xzIGFsb25nIHdpdGggYSBVUG5QLXNwZWNpZmljIGVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlIChYTUwpIHBhcnNlciBcCitzdXBwb3J0aW5nIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMiBBUEkgYW5kIGFuIG9wdGlvbmFsLCBcCitpbnRlZ3JhdGVkIG1pbmkgd2ViIHNlcnZlciBmb3Igc2VydmluZyBVUG5QIHJlbGF0ZWQgZG9jdW1lbnRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wdXBucC5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIzMTkwZDUyNDRlMDhlNzhlNGM4ZWU3ODU0NGY0ODYzIgorCitQViA9ICIxLjguMitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI1NmQ2MDQyYWJhZTg2MWU4ODM4YTRlNmI2YjViNTc1Yjk5ZTM4ZjM0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21yamltZW5lei9wdXBucC5naXQ7cHJvdG9jb2w9aHR0cHMiCisKK1M9IiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXJldXNlYWRkciIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjM2MWExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWdodHdlaWdodCBVUG5QIElHRCBkYWVtb24iCi1ERVNDUklQVElPTiA9ICJUaGUgbWluaVVQblAgZGFlbW9uIGlzIGFuIFVQblAgSUdEIChpbnRlcm5ldCBnYXRld2F5IGRldmljZSkgXAotd2hpY2ggcHJvdmlkZSBOQVQgdHJhdmVyc2FsIHNlcnZpY2VzIHRvIGFueSBVUG5QIGVuYWJsZWQgY2xpZW50IG9uIFwKLXRoZSBuZXR3b3JrLiIKLQotU0VDVElPTiA9ICJuZXR3b3JraW5nIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hYTcxYzc4YzM3M2NjZmUwZmYyMDdhZjBjZDk2NmQ5MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKLQotREVQRU5EUyArPSAiaXB0YWJsZXMgbmV0LXRvb2xzIHV0aWwtbGludXggbGlibW5sIGxpYm5ldGZpbHRlci1jb25udHJhY2siCi0KLVNSQ19VUkkgPSAiaHR0cDovL21pbml1cG5wLnR1eGZhbWlseS5vcmcvZmlsZXMvZG93bmxvYWQucGhwP2ZpbGU9JHtQfS50YXIuZ3ogXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjFjMDdhMjE1ZGQ5YjM2MmU3NWE5ZWZjMDVlMmZiM2I0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NmFhM2EwMGUwZjU0OTA4MjZiYmEzY2I5N2U2OGNkMjc0NzllNTgzOWFkYWM0YjliY2I2NmVhZTc4NmJmYjciCi0KLUlQVjYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJy0taXB2NicsICcnLCBkKX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgY2QgJHtTfQotICAgIENPTkZJR19PUFRJT05TPSIke0lQVjZ9IC0tbGVhc2VmaWxlIiAuL2dlbmNvbmZpZy5zaAotICAgIG9lX3J1bm1ha2UgLWYgTWFrZWZpbGUubGludXgKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotICAgIGluc3RhbGwgJHtTfS9taW5pdXBucGQgJHtEfS8ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19pbml0LnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwdGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcDZ0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcDZ0YWJsZXNfcmVtb3ZlYWxsLnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgLWIgJHtTfS9taW5pdXBucGQuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAke1N9L2xpbnV4L21pbml1cG5wZC5pbml0LmQuc2NyaXB0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvbWluaXVwbnBkCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjI4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjI4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZmFjNjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4yOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFVQblAgQVYgbWVkaWEgc2VydmVyIGFuZCByZW5kZXJlciIKLURFU0NSSVBUSU9OID0gIlJ5Z2VsIGlzIGEgaG9tZSBtZWRpYSBzb2x1dGlvbiAoVVBuUCBBViBNZWRpYVNlcnZlcikgdGhhdCBcCi1hbGxvdyB5b3UgdG8gZWFzaWx5IHNoYXJlIGF1ZGlvLCB2aWRlbyBhbmQgcGljdHVyZXMgdG8gb3RoZXIgZGV2aWNlcy4gXAotQWRkaXRpb25hbGx5LCBtZWRpYSBwbGF5ZXIgc29mdHdhcmUgbWF5IHVzZSBSeWdlbCB0byBiZWNvbWUgYSBNZWRpYVJlbmRlcmVyIFwKLXRoYXQgbWF5IGJlIGNvbnRyb2xsZWQgcmVtb3RlbHkgYnkgYSBVUG5QIG9yIERMTkEgQ29udHJvbGxlci4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvUnlnZWwiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9yeWdlbC9yeWdlbC1tYWluLnZhbGE7ZW5kbGluZT0yNzttZDU9OTkzMjQxMThkYTRjMDEyZDI1ZWRhZTJmNzc5YWU5YjMiCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIG9zc3AtdXVpZCBsaWJnZWUgbGlic291cC0yLjQgbGlibWVkaWFhcnQtMi4wIGxpYnVuaXN0cmluZyBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2sgc2hhcmVkLW1pbWUtaW5mbyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInJ5Z2VsLXBsdWdpbi1tZWRpYS1leHBvcnQiCi0KLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5ZmJlNGZiNTNiNmNmYTJmM2YzNzIzYjc2NDlhMjIxNSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjllYTIzZGY3MTg2Y2FhYzVmMWFhZDMxMzdlZGY2ZDUwN2QzMzliOWE0NjlmYzMxMzNkZjQwNDNmYTY2YjYxZjUiCi0KLWluaGVyaXQgZ25vbWViYXNlIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdHJhY2tlci1wbHVnaW4gLS13aXRoLW1lZGlhLWVuZ2luZT1nc3RyZWFtZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz0gImV4dGVybmFsIG1wcmlzIG1lZGlhdGhlayBydWloIG1lZGlhLWV4cG9ydCBnc3QtbGF1bmNoIGd0ayszIgotUEFDS0FHRUNPTkZJR1tleHRlcm5hbF0gPSAiLS1lbmFibGUtZXh0ZXJuYWwtcGx1Z2luLC0tZGlzYWJsZS1leHRlcm5hbC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21wcmlzXSA9ICItLWVuYWJsZS1tcHJpcy1wbHVnaW4sLS1kaXNhYmxlLW1wcmlzLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbbWVkaWF0aGVrXSA9ICItLWVuYWJsZS1tZWRpYXRoZWstcGx1Z2luLC0tZGlzYWJsZS1tZWRpYXRoZWstcGx1Z2luIgotUEFDS0FHRUNPTkZJR1tydWloXSA9ICItLWVuYWJsZS1ydWloLXBsdWdpbiwtLWRpc2FibGUtcnVpaC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21lZGlhLWV4cG9ydF0gPSAiLS1lbmFibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiwtLWRpc2FibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbZ3N0LWxhdW5jaF0gPSAiLS1lbmFibGUtZ3N0LWxhdW5jaC1wbHVnaW4sLS1kaXNhYmxlLWdzdC1sYXVuY2gtcGx1Z2luIgotUEFDS0FHRUNPTkZJR1tndGsrM10gPSAiLC0td2l0aG91dC11aSxndGsrMyIKLQotTElCViA9ICIyLjYiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcwotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8qLmxhCi0gICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9wbHVnaW5zLyoubGEKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMgJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9pY29ucyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8uZGVidWcgJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vcGx1Z2lucy8uZGVidWciCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1tZXRhIgotQUxMT1dfRU1QVFlfJHtQTn0tbWV0YSA9ICIxIgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiR7UE59LXBsdWdpbi0qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcnlnZWxfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9JykKLSAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwbHVnaW5fcG9zdGluc3QnKQotICAgIHBrZ3MgPSBbXQotCi0gICAgcGtncyArPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBvZS5wYXRoLmpvaW4ocnlnZWxfbGliZGlyLCAicGx1Z2lucyIpLCAnbGlicnlnZWwtKC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnUnlnZWwgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPWQuZXhwYW5kKCcke1BOfScpKQotICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKHJ5Z2VsX2xpYmRpciwgInBsdWdpbnMiKSwgJyguKilcLnBsdWdpbiQnLCBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJyksICdSeWdlbCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59JykpCi0KLSAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1ldGEnCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihwa2dzKSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmVkYTZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4zNC4wLmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiQSBVUG5QIEFWIG1lZGlhIHNlcnZlciBhbmQgcmVuZGVyZXIiCitERVNDUklQVElPTiA9ICJSeWdlbCBpcyBhIGhvbWUgbWVkaWEgc29sdXRpb24gKFVQblAgQVYgTWVkaWFTZXJ2ZXIpIHRoYXQgXAorYWxsb3cgeW91IHRvIGVhc2lseSBzaGFyZSBhdWRpbywgdmlkZW8gYW5kIHBpY3R1cmVzIHRvIG90aGVyIGRldmljZXMuIFwKK0FkZGl0aW9uYWxseSwgbWVkaWEgcGxheWVyIHNvZnR3YXJlIG1heSB1c2UgUnlnZWwgdG8gYmVjb21lIGEgTWVkaWFSZW5kZXJlciBcCit0aGF0IG1heSBiZSBjb250cm9sbGVkIHJlbW90ZWx5IGJ5IGEgVVBuUCBvciBETE5BIENvbnRyb2xsZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL1J5Z2VsIgorCitMSUNFTlNFID0gIkxHUEwxLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIG9zc3AtdXVpZCBsaWJnZWUgbGlic291cC0yLjQgbGlibWVkaWFhcnQtMi4wIGxpYnVuaXN0cmluZyBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2sgc2hhcmVkLW1pbWUtaW5mbyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInJ5Z2VsLXBsdWdpbi1tZWRpYS1leHBvcnQiCisKK0dOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3ZDg5MjMzMjRiMjgwY2Q1NDUyODAzZDYxMTc2YTM0YSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZiYjJkNDZjYmU0ZTc1MGRmNjYxMGI0YzY2YjIyNzhmMDZkMWY3MWEyNTdjNzkwM2U2NzZjY2IzOTRkYWQ0MTgiCisKK2luaGVyaXQgZ25vbWViYXNlIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRyYWNrZXItcGx1Z2luIC0td2l0aC1tZWRpYS1lbmdpbmU9Z3N0cmVhbWVyIgorCitQQUNLQUdFQ09ORklHID89ICJleHRlcm5hbCBtcHJpcyBydWloIG1lZGlhLWV4cG9ydCBnc3QtbGF1bmNoIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIgZ3RrKzMiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2V4dGVybmFsXSA9ICItLWVuYWJsZS1leHRlcm5hbC1wbHVnaW4sLS1kaXNhYmxlLWV4dGVybmFsLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbXByaXNdID0gIi0tZW5hYmxlLW1wcmlzLXBsdWdpbiwtLWRpc2FibGUtbXByaXMtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tydWloXSA9ICItLWVuYWJsZS1ydWloLXBsdWdpbiwtLWRpc2FibGUtcnVpaC1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21lZGlhLWV4cG9ydF0gPSAiLS1lbmFibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiwtLWRpc2FibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbZ3N0LWxhdW5jaF0gPSAiLS1lbmFibGUtZ3N0LWxhdW5jaC1wbHVnaW4sLS1kaXNhYmxlLWdzdC1sYXVuY2gtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tndGsrM10gPSAiLC0td2l0aG91dC11aSxndGsrMyIKKworTElCViA9ICIyLjYiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcworICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8qLmxhCisgICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9wbHVnaW5zLyoubGEKKyAgICAgICBpZiBbIC1lICR7RH0ke2xpYmRpcn0vc3lzdGVtZC91c2VyL3J5Z2VsLnNlcnZpY2UgXTsgdGhlbgorICAgICAgICAgICAgICAgbWtkaXIgLXAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vc3lzdGVtZC91c2VyL3J5Z2VsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke2xpYmRpcn0vc3lzdGVtZC91c2VyICR7RH0ke2xpYmRpcn0vc3lzdGVtZAorICAgICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vaWNvbnMiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvLmRlYnVnICR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvLmRlYnVnIgorCitQQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKK0FMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJ5Z2VsLnNlcnZpY2UiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICByeWdlbF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0nKQorICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCisgICAgcGtncyA9IFtdCisKKyAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICdsaWJyeWdlbC0oLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJyksICdSeWdlbCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59JykpCisgICAgcGtncyArPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBvZS5wYXRoLmpvaW4ocnlnZWxfbGliZGlyLCAicGx1Z2lucyIpLCAnKC4qKVwucGx1Z2luJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKKworICAgIG1ldGFwa2cgPSBkLmdldFZhcignUE4nKSArICctbWV0YScKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKHBrZ3MpKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvZHZiLWFwcHMvZHZiLWFwcHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi9kdmItYXBwcy9kdmItYXBwc18xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ZWQ5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi9kdmItYXBwcy9kdmItYXBwc18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4dHYub3JnIgotU1VNTUFSWSA9ICJMaW51eCBEVkIgQVBJIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAidjRsLXV0aWxzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIgXAotICAgICAgICAgICAgaGc6Ly9saW51eHR2Lm9yZy9oZzttb2R1bGU9ZHZiLWFwcHM7cHJvdG9jb2w9aHR0cDtuYW1lPWFwcHMgXAotICAgICAgICAgICAgZ2l0Oi8vbGludXh0di5vcmcvZ2l0L2R0di1zY2FuLXRhYmxlcy5naXQ7cHJvdG9jb2w9aHR0cDtkZXN0c3VmZml4PWR2Yi1hcHBzL2luaXRpYWwtc2Nhbi10YWJsZXM7bmFtZT1zY2FudGFibGVzIFwKLSAgICAgICAgICAiCi1TUkNSRVZfYXBwcyA9ICIzZDQzYjI4MDI5OGMiCi1TUkNSRVZfc2NhbnRhYmxlcyA9ICJjZWIxMTgzM2IzNWYwNTgxM2IxZjAzOTdhNjBlMGYzYjk5NDMwYWFiIgotU1JDUkVWX0ZPUk1BVCA9ICJhcHBzX3NjYW50YWJsZXMiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotRVhUUkFfT0VNQUtFID0gIlZFUlNJT05fRklMRT0nJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvZHZiL3ZlcnNpb24uaCciCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBzZWQgLWkgLWUgczovdXNyL2luY2x1ZGU6JHtTVEFHSU5HX0lOQ0RJUn06ZyB1dGlsL2F2NzExMF9sb2Fka2V5cy9nZW5lcmF0ZS1rZXluYW1lcy5zaAotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLSMgZHZiLWFwcHMgb25seSBzdXBwb3J0IERWQkFQSSB2Mywgc28gZ2VuZXJhdGUgdGhlbSBmcm9tIHRoZSBEVkJBUEkgdjUgZG93bmxvYWRlZCBmaWxlcwotICAgIG1ha2UgLUMgaW5pdGlhbC1zY2FuLXRhYmxlcyBjbGVhbgotICAgIG1ha2UgLUMgaW5pdGlhbC1zY2FuLXRhYmxlcyBkdmJ2MwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLSMgZHZiLWFwcHMgb25seSBzdXBwb3J0IERWQkFQSSB2Mywgc28gb25seSBpbnN0YWxsIHRoZSBnZW5lcmF0ZWQgRFZCQVBJIHYzIGZpbGVzCi0gICAgbWFrZSAtQyBpbml0aWFsLXNjYW4tdGFibGVzIERBVEFESVI9JHtEfS8ke2RhdGFkaXJ9IERWQlYzRElSPWR2YiBpbnN0YWxsX3YzCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZG9jZGlyfS9kdmItYXBwcwotICAgIGluc3RhbGwgLWQgJHtEfS8ke2RvY2Rpcn0vZHZiLWFwcHMvc3phcAotICAgIGNobW9kIGErcnggJHtEfS8ke2xpYmRpcn0vKi5zbyoKLQotICAgICMgSW5zdGFsbCB0ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3Qvc2V0dm9sdGFnZSAgICAgICR7RH0ke2JpbmRpcn0vdGVzdF9zZXR2b2x0YWdlCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC9zZXQyMmsgICAgICAgICAgJHtEfSR7YmluZGlyfS90ZXN0X3NldDIyawotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3Qvc2VuZGJ1cnN0ICAgICAgICR7RH0ke2JpbmRpcn0vdGVzdF9zZW5kYnVyc3QKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L2Rpc2VxYyAgICAgICAgICAke0R9JHtiaW5kaXJ9L3Rlc3RfZGlzZXFjCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X3NlY3Rpb25zICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3RfYXZfcGxheSAgICAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9zdGlsbGltYWdlICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X2R2cl9wbGF5ICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3RfdHQgICAgICAgICAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9zZWNfbmUgICAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X3N0YyAgICAgICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3RfYXYgICAgICAgICAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF92ZXZlbnQgICAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X3BlcyAgICAgICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3RfZHZyICAgICAgICAke0R9JHtiaW5kaXJ9LwotCi0gICAgY3AgLXBQUiAke1N9L3V0aWwvc3phcC9jaGFubmVscy1jb25mKiAke0R9LyR7ZG9jZGlyfS9kdmItYXBwcy9zemFwLwotICAgIGNwIC1wUFIgJHtTfS91dGlsL3N6YXAvUkVBRE1FICAgJHtEfS8ke2RvY2Rpcn0vZHZiLWFwcHMvc3phcC8KLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGR2Yl9saWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9JywgZCkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBkdmJfbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcycsICdEVkIgJXMgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZHZiX2xpYmRpciwgJ15saWIoLiopXC5sYSQnLCAnbGliJXMtZGV2JywgJ0RWQiAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBkdmJfbGliZGlyLCAnXmxpYiguKilcLmEkJywgJ2xpYiVzLWRldicsICdEVkIgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZHZiX2xpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdEVkIgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLVBBQ0tBR0VTID0rICJkdmItZXZ0ZXN0IGR2Yi1ldnRlc3QtZGJnIFwKLSAgICAgICAgICAgICBkdmJhcHAtdGVzdHMgZHZiYXBwLXRlc3RzLWRiZyBcCi0gICAgICAgICAgICAgZHZiZGF0ZSBkdmJkYXRlLWRiZyBcCi0gICAgICAgICAgICAgZHZidHJhZmZpYyBkdmJ0cmFmZmljLWRiZyBcCi0gICAgICAgICAgICAgZHZibmV0IGR2Ym5ldC1kYmcgXAotICAgICAgICAgICAgIGR2Yi1zY2FuIGR2Yi1zY2FuLWRiZyBkdmItc2Nhbi1kYXRhIFwKLSAgICAgICAgICAgICBkdmItYXphcCBkdmItYXphcC1kYmcgXAotICAgICAgICAgICAgIGR2Yi1jemFwIGR2Yi1jemFwLWRiZyBcCi0gICAgICAgICAgICAgZHZiLXN6YXAgZHZiLXN6YXAtZGJnIFwKLSAgICAgICAgICAgICBkdmItdHphcCBkdmItdHphcC1kYmcgXAotICAgICAgICAgICAgIGR2Yi1mZW1vbiBkdmItZmVtb24tZGJnIFwKLSAgICAgICAgICAgICBkdmItemFwLWRhdGEiCi0KLSMgRXhwb3NlIHRoZSBwYWNrYWdlcyBmcm9tIHRoZSBhYm92ZSBzcGl0dGluZwotUEFDS0FHRVMgPSsgImxpYmR2YmFwaSBsaWJkdmJjZmcgbGliZHZiZW41MDIyMSBcCi0gICAgICAgICAgICAgbGliZXNnIGxpYnVjc2kgbGliZHZic2VjIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS9kdmIiCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0iCi0KLUZJTEVTX2R2Yi1ldnRlc3QgPSAiJHtiaW5kaXJ9L2V2dGVzdCIKLUZJTEVTX2R2Yi1ldnRlc3QtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvZXZ0ZXN0IgotUkNPTkZMSUNUU19kdmItZXZ0ZXN0ID0gImV2dGVzdCIKLQotRklMRVNfZHZiYXBwLXRlc3RzID0gIiR7YmluZGlyfS8qdGVzdCogIgotRklMRVNfZHZiYXBwLXRlc3RzLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnLyp0ZXN0KiIKLQotRklMRVNfZHZiZGF0ZSA9ICIke2JpbmRpcn0vZHZiZGF0ZSIKLUZJTEVTX2R2YmRhdGUtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvZHZiZGF0ZSIKLQotRklMRVNfZHZidHJhZmZpYyA9ICIke2JpbmRpcn0vZHZidHJhZmZpYyIKLUZJTEVTX2R2YnRyYWZmaWMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvZHZidHJhZmZpYyIKLQotRklMRVNfZHZibmV0ID0gIiR7YmluZGlyfS9kdmJuZXQiCi1GSUxFU19kdmJuZXQtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvZHZibmV0IgotCi1GSUxFU19kdmItc2NhbiA9ICIke2JpbmRpcn0vKnNjYW4gIgotRklMRVNfZHZiLXNjYW4tZGJnID0gIiR7YmluZGlyfS8uZGVidWcvKnNjYW4iCi1GSUxFU19kdmItc2Nhbi1kYXRhID0gIiR7ZGF0YWRpcn0vZHZiIgotCi1GSUxFU19kdmItYXphcCA9ICIke2JpbmRpcn0vYXphcCIKLUZJTEVTX2R2Yi1hemFwLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2F6YXAiCi0KLUZJTEVTX2R2Yi1jemFwID0gIiR7YmluZGlyfS9jemFwIgotRklMRVNfZHZiLWN6YXAtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvY3phcCIKLQotRklMRVNfZHZiLXN6YXAgPSAiJHtiaW5kaXJ9L3N6YXAiCi1GSUxFU19kdmItc3phcC1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9zemFwIgotCi1GSUxFU19kdmItdHphcCA9ICIke2JpbmRpcn0vdHphcCIKLUZJTEVTX2R2Yi10emFwLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL3R6YXAiCi0KLUZJTEVTX2R2Yi1mZW1vbiA9ICIke2JpbmRpcn0vZmVtb24iCi1GSUxFU19kdmItZmVtb24tZGJnID0gIiR7YmluZGlyfS8uZGVidWcvZmVtb24iCi0KLUZJTEVTX2R2Yi16YXAtZGF0YSA9ICIke2RvY2Rpcn0vZHZiLWFwcHMvc3phcCIKLQotUkRFUEVORFNfZHZiZGF0ZSA9KyAibGliZHZiYXBpIGxpYnVjc2kiCi1SREVQRU5EU19kdmJ0cmFmZmljID0rICJsaWJkdmJhcGkiCi1SREVQRU5EU19kdmItc2NhbiA9KyAibGliZHZiYXBpIGxpYmR2YmNmZyBsaWJkdmJzZWMiCi1SREVQRU5EU19kdmItYXBwcyA9KyAibGliZHZiYXBpIGxpYmR2YmNmZyBsaWJkdmJzZWMgbGliZHZiZW41MDIyMSBsaWJ1Y3NpIgotUkRFUEVORFNfZHZiLWZlbW9uID0rICJsaWJkdmJhcGkiCi1SREVQRU5EU19kdmJuZXQgPSsgImxpYmR2YmFwaSIKLQotUE5CTEFDS0xJU1RbZHZiLWFwcHNdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjAzLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1GaXgtY2hlY2tzLWZvci1zc2UyLW1teC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1GaXgtY2hlY2tzLWZvci1zc2UyLW1teC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI4M2E1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtRml4LWNoZWNrcy1mb3Itc3NlMi1tbXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGYwZGFiNmQ2ZmU0YjBhYWU0Mzk0ZWVlOTNiZTg2ZTk3NDdjNmVkNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMiBOb3YgMjAxNiAwNTowNzozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggY2hlY2tzIGZvciBzc2UyL21teAotCi1KdXN0IGNoZWNraW5nIGZvciBjbWRsaW5lIG9wdGlvbnMgaXMgbm90IGVub3VnaAotaXRzIGJldHRlciB0byBjaGVjayBmb3IgYnVpbHRpbiBkZWZpbmVzIHRvIGJlCi1zdXJlLCBjbGFuZyBkb2VzIG5vdCBlcnJvciBvdXQgb24gc3NlMiBvcHRpb25zIG9uCi1hcm0gZS5nLiBhbmQgaXQgZW5kcyB1cCBkb2luZyBTU0UyIHN0dWZmIGZvciBhcm0KLXdoaWNoIGlzIG5vdCBkZXNpcmVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggNDdkMmNmMi4uNGJlMDAwYyAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMTE4LDggKzExOCwxNCBAQCBmaQotICMgVmFsaWF0ZSBjb21waWxlcgotIGNoZWNrX2NjIHx8IGRpZSAnTm8gQyBjb21waWxlciBmb3VuZCcKLSBjaGVja19jY19oZWFkZXIgZXhlY2luZm8KLS1jaGVja19jY19vcHRpb24gbW14Ci0tY2hlY2tfY2Nfb3B0aW9uIHNzZTIKLStjaGVja19jY19zbmlwcGV0IG1teCAnI2lmbmRlZiBfX01NWF9fCi0rZXJyb3IgIk1NWCBub3Qgc3VwcG9ydGVkIgotKyNlbmRpZgotKycKLStjaGVja19jY19zbmlwcGV0IHNzZTIgJyNpZm5kZWYgX19TU0UyX18KLStlcnJvciAiU1NFMiBub3Qgc3VwcG9ydGVkIgotKyNlbmRpZgotKycKLSAKLSBpZiBjaGVja19jYyAnCi0gI2lmICFkZWZpbmVkKF9fY2xhbmdfXykKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLU1ha2VmaWxlLUlnbm9yZS13YXJuaW5nLWFib3V0LXdyb25nLWluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLU1ha2VmaWxlLUlnbm9yZS13YXJuaW5nLWFib3V0LXdyb25nLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDhhNWU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1NYWtlZmlsZS1JZ25vcmUtd2FybmluZy1hYm91dC13cm9uZy1pbmNsdWRlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gN2Q2NzIzMDVjN2FkMmY3MTZkZmUxYzQ4N2I1MjVhMWE5Mjk1NGQ0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE5vdiAyMDE2IDA2OjIyOjM2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBJZ25vcmUgd2FybmluZyBhYm91dCB3cm9uZyBpbmNsdWRlcwotCi1JdCBoYXBwZW5zIG9uIG11c2wgZXNwZWNpYWxseQotdXNyL2luY2x1ZGUvc3lzL3BvbGwuaDoxOjI6IGVycm9yOiByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+IFstV2Vycm9yLC1XI3dhcm5pbmdzXQotfCAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+Ci18ICBeCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzcmMvYXZhaGkuYzo0ODoKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBmNDFlZjFhLi5jYzdiMjQ5IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNTQsNiArNTQsNyBAQCBDRkxBR1MgICs9IC1Xbm8tbWljcm9zb2Z0IC1RdW51c2VkLWFyZ3VtZW50cyAtV25vLXVudXNlZC1mdW5jdGlvbgotIENGTEFHUyAgKz0gLVduby11bnVzZWQtdmFsdWUgLVduby10YXV0b2xvZ2ljYWwtY29uc3RhbnQtb3V0LW9mLXJhbmdlLWNvbXBhcmUKLSBDRkxBR1MgICs9IC1Xbm8tcGFyZW50aGVzZXMtZXF1YWxpdHkgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcwotIENGTEFHUyAgKz0gLVduby1lcnJvcj12YXJhcmdzCi0rQ0ZMQUdTICArPSAtV25vLWVycm9yPVwjd2FybmluZ3MKLSBlbmRpZgotIAotIGlmZXEgKCQoQ09ORklHX0xJQkZGTVBFR19TVEFUSUMpLHllcykKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtZGlzYWJsZS12YXJhcmdzLXdhcm5pbmctb24tY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtZGlzYWJsZS12YXJhcmdzLXdhcm5pbmctb24tY2xhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YzRjNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWRpc2FibGUtdmFyYXJncy13YXJuaW5nLW9uLWNsYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5MDZkOTU2OTVhZjk1OTcwYmY1NTFlYTU1YjZjM2U3MDMzMmM2Yjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjIgTm92IDIwMTYgMDU6MjI6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGlzYWJsZSB2YXJhcmdzIHdhcm5pbmcgb24gY2xhbmcKLQotVGhlIGlzc3VlIGlzIHRoYXQgJ2xlbicgaXMgYW4gdW5zaWduZWQgY2hhciBhbmQgd2UgdmlvbGF0ZSB0aGUgcHJvbW90aW9uIHJ1bGVzCi1mb3IgcGFzc2luZyB0aGUgdmFsdWUgdG8gdmFfc3RhcnQuCi0KLXBhc3NpbmcgYW4gb2JqZWN0IHRoYXQgdW5kZXJnb2VzIGRlZmF1Ci1sdCBhcmd1bWVudCBwcm9tb3Rpb24gdG8gJ3ZhX3N0YXJ0JyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIFstV3ZhcmFyZ3NdCi18ICAgdmFfc3RhcnQoYXAsIGxlbik7Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggOGM1ZTM4MC4uZjQxZWYxYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTUzLDYgKzUzLDcgQEAgaWZlcSAoJChDT01QSUxFUiksIGNsYW5nKQotIENGTEFHUyAgKz0gLVduby1taWNyb3NvZnQgLVF1bnVzZWQtYXJndW1lbnRzIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCi0gQ0ZMQUdTICArPSAtV25vLXVudXNlZC12YWx1ZSAtV25vLXRhdXRvbG9naWNhbC1jb25zdGFudC1vdXQtb2YtcmFuZ2UtY29tcGFyZQotIENGTEFHUyAgKz0gLVduby1wYXJlbnRoZXNlcy1lcXVhbGl0eSAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCi0rQ0ZMQUdTICArPSAtV25vLWVycm9yPXZhcmFyZ3MKLSBlbmRpZgotIAotIGlmZXEgKCQoQ09ORklHX0xJQkZGTVBFR19TVEFUSUMpLHllcykKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWR2ci1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1kdnItVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMzRjZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWR2ci1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gYTcxNTY3MWVhZGNiZjk4OWZkYWYwNWY2MmU3MWI5M2FjMTc0OTYxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE5vdiAyMDE2IDA2OjA4OjMxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGR2cjogVXNlIGxhYnMoKSBpbnN0ZWFkIG9mIGFicygpCi0KLU1ha2VzIGNsYW5nIGhhcHB5Ci0KLWR2ci9kdnJfZGIuYzo4NTM6MTA6IGVycm9yOiBhYnNvbHV0ZSB2YWx1ZSBmdW5jdGlvbgotJ2FicycgZ2l2ZW4gYW4gYXJndW1lbnQgb2YgdHlwZSAnbG9uZycgYnV0IGhhcyBwYXJhbWV0ZXIgb2YgdHlwZSAnaW50JyB3aGljaCBtYXkgY2F1c2UgdHJ1bmNhdGlvbiBvZiB2YWx1ZSBbLVdlcnJvciwtV2Fic29sdXRlLXZhbHVlXQotaWYgKChhYnMoZGUtPmRlX3N0YXJ0IC0gZS0+c3RhcnQpIDwgNjAwKSAmJiAoYWJzKGRlLT5kZV9zdG9wIC0gZS0+c3RvcCkgPCA2MDApKSB7Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZHZyL2R2cl9kYi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9kdnIvZHZyX2RiLmMgYi9zcmMvZHZyL2R2cl9kYi5jCi1pbmRleCAxNjVjYWE2Li41NjU2NTY5IDEwMDY0NAotLS0tIGEvc3JjL2R2ci9kdnJfZGIuYwotKysrIGIvc3JjL2R2ci9kdnJfZGIuYwotQEAgLTQxNCwxMSArNDE0LDExIEBAIGR2cl9lbnRyeV9mdXp6eV9tYXRjaChkdnJfZW50cnlfdCAqZGUsIGVwZ19icm9hZGNhc3RfdCAqZSkKLSAgIC8qIFdyb25nIGxlbmd0aCAoKy8tMjAlKSAqLwotICAgdDEgPSBkZS0+ZGVfc3RvcCAtIGRlLT5kZV9zdGFydDsKLSAgIHQyICA9IGUtPnN0b3AgLSBlLT5zdGFydDsKLS0gIGlmICggYWJzKHQyIC0gdDEpID4gKHQxIC8gNSkgKQotKyAgaWYgKCBsYWJzKHQyIC0gdDEpID4gKHQxIC8gNSkgKQotICAgICByZXR1cm4gMDsKLSAKLSAgIC8qIE91dHNpZGUgb2Ygd2luZG93ICovCi0tICBpZiAoYWJzKGUtPnN0YXJ0IC0gZGUtPmRlX3N0YXJ0KSA+IGRlLT5kZV9jb25maWctPmR2cl91cGRhdGVfd2luZG93KQotKyAgaWYgKGxhYnMoZS0+c3RhcnQgLSBkZS0+ZGVfc3RhcnQpID4gZGUtPmRlX2NvbmZpZy0+ZHZyX3VwZGF0ZV93aW5kb3cpCi0gICAgIHJldHVybiAwOwotICAgCi0gICAvKiBUaXRsZSBtYXRjaCAob3IgY29udGFpbnM/KSAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtaGRob21lcnVuLU92ZXJyaWRlLWZvcmNlZC1vdmVycmRpaW5nLW9nLUNDLVNUUklQLWFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1oZGhvbWVydW4tT3ZlcnJpZGUtZm9yY2VkLW92ZXJyZGlpbmctb2ctQ0MtU1RSSVAtYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRlNzIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1oZGhvbWVydW4tT3ZlcnJpZGUtZm9yY2VkLW92ZXJyZGlpbmctb2ctQ0MtU1RSSVAtYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBjMzc2N2UxODllOTA5NjU0MDc5MzdiNjE3OGFkYmJkOGNkYWZlMzFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjIgTm92IDIwMTYgMDU6NTk6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaGRob21lcnVuOiBPdmVycmlkZSBmb3JjZWQgb3ZlcnJkaWluZyBvZyBDQy9TVFJJUCBhbmQgQ0ZMQUdTCi0KLVRoaXMgaXMgcmVxdWlyZWQgZm9yIGNyb3NzIGNvbXBpbGluZyBvdGhlcndpc2UgaXQgZW5kcyB1cAotdXNpbmcgYnVpbGQgaG9zdCBnY2MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmhkaG9tZXJ1biB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmhkaG9tZXJ1biBiL01ha2VmaWxlLmhkaG9tZXJ1bgotaW5kZXggOTQzZmZlYy4uOGJkMTRmZiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmhkaG9tZXJ1bgotKysrIGIvTWFrZWZpbGUuaGRob21lcnVuCi1AQCAtMTgsOCArMTgsOCBAQAotIAotIGluY2x1ZGUgJChkaXIgJChsYXN0d29yZCAkKE1BS0VGSUxFX0xJU1QpKSkuY29uZmlnLm1rCi0gCi0tdW5leHBvcnQgQ0ZMQUdTCi0tdW5leHBvcnQgTERGTEFHUwotKyN1bmV4cG9ydCBDRkxBR1MKLSsjdW5leHBvcnQgTERGTEFHUwotIAotIGRlZmluZSBET1dOTE9BRAotIAlAbWtkaXIgLXAgJChMSUJIREhSRElSKS9idWlsZAotQEAgLTc1LDYgKzc1LDggQEAgJChMSUJIREhSRElSKS8kKExJQkhESFIpLy50dmhfZG93bmxvYWQ6Ci0gCSQoY2FsbCBET1dOTE9BRCwkKExJQkhESFJfVVJMKSwkKExJQkhESFJESVIpLyQoTElCSERIUl9UQiksJChMSUJIREhSX1NIQTEpKQotIAkkKGNhbGwgVU5UQVIsJChMSUJIREhSX1RCKSx6KQotIAlsbiAtc2YgbGliaGRob21lcnVuICQoTElCSERIUkRJUikvJChMSUJIREhSKQotKwlAc2VkIC1pIC1lICJzL0NDLio6PS9DQyA/PS8iICQoTElCSERIUkRJUikvJChMSUJIREhSKS9NYWtlZmlsZQotKwlAc2VkIC1pIC1lICJzL1NUUklQLio6PS9TVFJJUCA/PS8iICQoTElCSERIUkRJUikvJChMSUJIREhSKS9NYWtlZmlsZQotIAlAdG91Y2ggJEAKLSAKLSAkKExJQkhESFJESVIpLyQoTElCSERIUikvLnR2aF9idWlsZDogXAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmRfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjczNTQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmRfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJUdmhlYWRlbmQgVFYgc3RyZWFtaW5nIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmxvbmVseWNvZGVyLmNvbS9yZWRtaW5lL3Byb2plY3RzL3R2aGVhZGVuZCIKLQotREVQRU5EUyA9ICJhdmFoaSB6bGliIG9wZW5zc2wgcHl0aG9uLW5hdGl2ZSBkdmItYXBwcyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT05Y2FlNWFjYWMyZTllZTJmYzNhZWMwMWFjODhjZTVkYiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3R2aGVhZGVuZC90dmhlYWRlbmQuZ2l0O2JyYW5jaD1yZWxlYXNlLzQuMCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1jaGVja3MtZm9yLXNzZTItbW14LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzYWJsZS12YXJhcmdzLXdhcm5pbmctb24tY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZGhvbWVydW4tT3ZlcnJpZGUtZm9yY2VkLW92ZXJyZGlpbmctb2ctQ0MtU1RSSVAtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZHZyLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtSWdub3JlLXdhcm5pbmctYWJvdXQtd3JvbmctaW5jbHVkZXMucGF0Y2ggXAotIgotU1JDUkVWID0gIjY0ZmVjODEyMDE1OGRlNTg1ZTE4YmU3MDUwNTUyNTk0ODQ1MThkOTQiCi1QViA9ICI0LjAuOStnaXQke1NSQ1JFVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbdXJpcGFyc2VyXSA9ICItLWVuYWJsZS11cmlwYXJzZXIsLS1kaXNhYmxlLXVyaXBhcnNlcix1cmlwYXJzZXIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAuL2NvbmZpZ3VyZSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLSAgICAgICAgICAgICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgLS1iaW5kaXI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfSBcCi0gICAgICAgICAgICAgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZHZic2NhbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWJ1bmRsZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59IgotCi1SREVQRU5EU18ke1BOfSArPSAibGliZHZiZW41MDIyMSBsaWJ1Y3NpIGxpYmR2YmFwaSIKLQotUE5CTEFDS0xJU1RbdHZoZWFkZW5kXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBkdmItYXBwcyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLWFkZG9uLXB2ci1odHMvMDAwMS1VcGRhdGUtdG8tcDgtcGxhdGZvcm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1hZGRvbi1wdnItaHRzLzAwMDEtVXBkYXRlLXRvLXA4LXBsYXRmb3JtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGE2YWU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLWFkZG9uLXB2ci1odHMvMDAwMS1VcGRhdGUtdG8tcDgtcGxhdGZvcm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MjcgKzAsMCBAQAotRnJvbSAwNmE4MjI0Yzk5MjgyYWMxYTYwNmVkZDllOGVhM2Y1OTExMTI5NDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFRodSwgMTggRmViIDIwMTYgMTQ6MDQ6MzEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIHRvIHA4LXBsYXRmb3JtCi0KLS0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCi0gcHZyLmh0cy9jaGFuZ2Vsb2cudHh0ICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL0F1dG9SZWNvcmRpbmdzLmNwcCAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9IVFNQQ29ubmVjdGlvbi5jcHAgICAgICAgICAgICAgICAgIHwgIDggKysrLS0tLQotIHNyYy9IVFNQRGVtdXhlci5jcHAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvSFRTUFZGUy5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQotIHNyYy9UaW1lUmVjb3JkaW5ncy5jcHAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvVHZoZWFkZW5kLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvVHZoZWFkZW5kLmggICAgICAgICAgICAgICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY2xpZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvY2xpZW50LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5jcHAgICAgICAgICB8ICAyICstCi0gc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uaCAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5jcHAgfCAgNCArKy0tCi0gc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5oICAgfCAgNiArKystLS0KLSAxNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDA4NDI2ODIuLmNiMDQ5NDIgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC02LDEwICs2LDEwIEBAIGVuYWJsZV9sYW5ndWFnZShDWFgpCi0gCi0gZmluZF9wYWNrYWdlKGtvZGkgUkVRVUlSRUQpCi0gZmluZF9wYWNrYWdlKGtvZGlwbGF0Zm9ybSBSRVFVSVJFRCkKLS1maW5kX3BhY2thZ2UocGxhdGZvcm0gUkVRVUlSRUQpCi0rZmluZF9wYWNrYWdlKHA4LXBsYXRmb3JtIFJFUVVJUkVEKQotIAotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtrb2RpcGxhdGZvcm1fSU5DTFVERV9ESVJTfQotLSAgICAgICAgICAgICAgICAgICAgJHtwbGF0Zm9ybV9JTkNMVURFX0RJUlN9Ci0rICAgICAgICAgICAgICAgICAgICAke3A4LXBsYXRmb3JtX0lOQ0xVREVfRElSU30KLSAgICAgICAgICAgICAgICAgICAgICR7S09ESV9JTkNMVURFX0RJUn0KLSAgICAgICAgICAgICAgICAgICAgICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9saWIpCi0gCi1AQCAtOTUsNyArOTUsNyBAQCBsaXN0KEFQUEVORCBIVFNfU09VUkNFUwotIAotIGFkZF9zdWJkaXJlY3RvcnkobGliL2xpYmh0cykKLSAKLS1zZXQoREVQTElCUyAke3BsYXRmb3JtX0xJQlJBUklFU30gaHRzKQotK3NldChERVBMSUJTICR7cDgtcGxhdGZvcm1fTElCUkFSSUVTfSBodHMpCi0gaWYoV0lOMzIpCi0gICBsaXN0KEFQUEVORCBERVBMSUJTIHdzMl8zMikKLSBlbmRpZigpCi1kaWZmIC0tZ2l0IGEvcHZyLmh0cy9jaGFuZ2Vsb2cudHh0IGIvcHZyLmh0cy9jaGFuZ2Vsb2cudHh0Ci1pbmRleCA5ZmZhMzNjLi4xZTdmZTMwIDEwMDY0NAotLS0tIGEvcHZyLmh0cy9jaGFuZ2Vsb2cudHh0Ci0rKysgYi9wdnIuaHRzL2NoYW5nZWxvZy50eHQKLUBAIC00OSw3ICs0OSw3IEBACi0gLSBmaXhlZDogQXV0b3JlYzogU3RhcnQgYW5kIHN0b3AgdGltZSBoYW5kbGluZy4KLSAtIGZpeGVkOiBMb2NhbHRpbWVUb1VUQyBjb252ZXJzaW9uICh0aW1lciBzZXR0aW5ncyBjbG9jayBkaXNwbGF5IGluY29ycmVjdCkuCi0gLSBmaXhlZDogU2V2ZXJhbCBpc3N1ZXMgd2l0aCBwcmVkaWN0aXZlIHR1bmluZy4KLS0tIGFkZGVkOiBidWlsZDogQXV0b21hdGljYWxseSBmaWxsIGluIHBsYXRmb3JtIGFuZCBsaWJyYXJ5IG5hbWUuCi0rLSBhZGRlZDogYnVpbGQ6IEF1dG9tYXRpY2FsbHkgZmlsbCBpbiBwOC1wbGF0Zm9ybSBhbmQgbGlicmFyeSBuYW1lLgotIC0gZml4ZWQ6IFVzZSBlcGcgZGF0YSBvbmx5IGZvciBjcmVhdGlvbiBvZiBlcGctYmFzZWQgdGltZXJzLgotIC0gaW1wcm92ZWQ6IERvIG5vdCB0cnkgdG8gcmVjb25uZWN0IHRvIHR2aCB3aGlsZSBzdXNwZW5kaW5nIG9yIG5vdCBmdWxseSBhd2FrZSBhZ2Fpbi4KLSAKLUBAIC05Nyw3ICs5Nyw3IEBACi0gLSBhZGRlZDogc3VwcG9ydCBmb3IgY3JlYXRpbmcgcmVwZWF0aW5nIHRpbWVycywgYWthIHRpbWUgc2NoZWR1bGVzCi0gLSBmaXhlZDogY29uZGl0aW9ucyBmb3IgYWRkb24gcmVzdGFydCBhZnRlciBzZXR0aW5ncyBjaGFuZ2VzCi0gLSBpbnRlcm5hbDogZml4ZWQgYnVpbGQgc3lzdGVtIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgd2l0aCBtb3ZlIHRvIGNtYWtlCi0tLSBpbnRlcm5hbDogdXBkYXRlZCB0byB1c2UgbGlicGxhdGZvcm0KLSstIGludGVybmFsOiB1cGRhdGVkIHRvIHVzZSBsaWJwOC1wbGF0Zm9ybQotIAotIDIuMS43Ci0gLSBhZGRlZDogc3VwcG9ydCBmb3IgcmFkaW8gY2hhbm5lbCBncm91cHMKLWRpZmYgLS1naXQgYS9zcmMvQXV0b1JlY29yZGluZ3MuY3BwIGIvc3JjL0F1dG9SZWNvcmRpbmdzLmNwcAotaW5kZXggNWZhNjBhMC4uZDllNWUxZCAxMDA2NDQKLS0tLSBhL3NyYy9BdXRvUmVjb3JkaW5ncy5jcHAKLSsrKyBiL3NyYy9BdXRvUmVjb3JkaW5ncy5jcHAKLUBAIC0yNiw3ICsyNiw3IEBACi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvVXRpbGl0aWVzLmgiCi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvTG9nZ2VyLmgiCi0gCi0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6ZW50aXR5OwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLWRpZmYgLS1naXQgYS9zcmMvSFRTUENvbm5lY3Rpb24uY3BwIGIvc3JjL0hUU1BDb25uZWN0aW9uLmNwcAotaW5kZXggYWVjMTI5Ni4uODZmNTAwNCAxMDA2NDQKLS0tLSBhL3NyYy9IVFNQQ29ubmVjdGlvbi5jcHAKLSsrKyBiL3NyYy9IVFNQQ29ubmVjdGlvbi5jcHAKLUBAIC0xOSw5ICsxOSw5IEBACi0gICoKLSAgKi8KLSAKLS0jaW5jbHVkZSAicGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotLSNpbmNsdWRlICJwbGF0Zm9ybS91dGlsL1N0cmluZ1V0aWxzLmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3NvY2tldHMvdGNwLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdXRpbC9TdHJpbmdVdGlscy5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS9zb2NrZXRzL3RjcC5oIgotIAotIGV4dGVybiAiQyIgewotICNpbmNsdWRlICJsaWJodHMvaHRzbXNnX2JpbmFyeS5oIgotQEAgLTMzLDcgKzMzLDcgQEAgZXh0ZXJuICJDIiB7Ci0gCi0gdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSB1c2luZyBuYW1lc3BhY2UgQURET047Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6dXRpbGl0aWVzOwotIAotZGlmZiAtLWdpdCBhL3NyYy9IVFNQRGVtdXhlci5jcHAgYi9zcmMvSFRTUERlbXV4ZXIuY3BwCi1pbmRleCBhNmUxZjEyLi43ZjQ1MzQ1IDEwMDY0NAotLS0tIGEvc3JjL0hUU1BEZW11eGVyLmNwcAotKysrIGIvc3JjL0hUU1BEZW11eGVyLmNwcAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSB1c2luZyBuYW1lc3BhY2Ugc3RkOwotIHVzaW5nIG5hbWVzcGFjZSBBRERPTjsKLS11c2luZyBuYW1lc3BhY2UgUExBVEZPUk07Ci0rdXNpbmcgbmFtZXNwYWNlIFA4UExBVEZPUk07Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL0hUU1BWRlMuY3BwIGIvc3JjL0hUU1BWRlMuY3BwCi1pbmRleCAwNDYzZjU2Li4wNDA0YmFiIDEwMDY0NAotLS0tIGEvc3JjL0hUU1BWRlMuY3BwCi0rKysgYi9zcmMvSFRTUFZGUy5jcHAKLUBAIC0xOSw4ICsxOSw4IEBACi0gICoKLSAgKi8KLSAKLS0jaW5jbHVkZSAicGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotLSNpbmNsdWRlICJwbGF0Zm9ybS91dGlsL1N0cmluZ1V0aWxzLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdXRpbC9TdHJpbmdVdGlscy5oIgotICNpbmNsdWRlICJ0dmhlYWRlbmQvdXRpbGl0aWVzL0xvZ2dlci5oIgotIAotIGV4dGVybiAiQyIgewotQEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuICJDIiB7Ci0gI2luY2x1ZGUgIlR2aGVhZGVuZC5oIgotIAotIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLSAKLSAvKgotZGlmZiAtLWdpdCBhL3NyYy9UaW1lUmVjb3JkaW5ncy5jcHAgYi9zcmMvVGltZVJlY29yZGluZ3MuY3BwCi1pbmRleCA1ZDM0OTM4Li45N2FhZTA5IDEwMDY0NAotLS0tIGEvc3JjL1RpbWVSZWNvcmRpbmdzLmNwcAotKysrIGIvc3JjL1RpbWVSZWNvcmRpbmdzLmNwcAotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSAidHZoZWFkZW5kL3V0aWxpdGllcy9VdGlsaXRpZXMuaCIKLSAjaW5jbHVkZSAidHZoZWFkZW5kL3V0aWxpdGllcy9Mb2dnZXIuaCIKLSAKLS11c2luZyBuYW1lc3BhY2UgUExBVEZPUk07Ci0rdXNpbmcgbmFtZXNwYWNlIFA4UExBVEZPUk07Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjplbnRpdHk7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6dXRpbGl0aWVzOwotZGlmZiAtLWdpdCBhL3NyYy9UdmhlYWRlbmQuY3BwIGIvc3JjL1R2aGVhZGVuZC5jcHAKLWluZGV4IDIwNTcyNDEuLjE0YzNiZDQgMTAwNjQ0Ci0tLS0gYS9zcmMvVHZoZWFkZW5kLmNwcAotKysrIGIvc3JjL1R2aGVhZGVuZC5jcHAKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGN0aW1lPgotICNpbmNsdWRlIDxtZW1vcnk+Ci0gCi0tI2luY2x1ZGUgInBsYXRmb3JtL3V0aWwvU3RyaW5nVXRpbHMuaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdXRpbC9TdHJpbmdVdGlscy5oIgotIAotICNpbmNsdWRlICJUdmhlYWRlbmQuaCIKLSAjaW5jbHVkZSAidHZoZWFkZW5kL3V0aWxpdGllcy9VdGlsaXRpZXMuaCIKLUBAIC0zMSw3ICszMSw3IEBACi0gCi0gdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSB1c2luZyBuYW1lc3BhY2UgQURET047Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6ZW50aXR5OwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLWRpZmYgLS1naXQgYS9zcmMvVHZoZWFkZW5kLmggYi9zcmMvVHZoZWFkZW5kLmgKLWluZGV4IDJjZTQ1NTIuLmU3OTQ3MTYgMTAwNjQ0Ci0tLS0gYS9zcmMvVHZoZWFkZW5kLmgKLSsrKyBiL3NyYy9UdmhlYWRlbmQuaAotQEAgLTIyLDEwICsyMiwxMCBAQAotICAqLwotIAotICNpbmNsdWRlICJjbGllbnQuaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vc29ja2V0cy90Y3AuaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vdGhyZWFkcy90aHJlYWRzLmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vdXRpbC9idWZmZXIuaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vc29ja2V0cy90Y3AuaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdGhyZWFkcy90aHJlYWRzLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdXRpbC9idWZmZXIuaCIKLSAjaW5jbHVkZSAia29kaS94Ym1jX2NvZGVjX3R5cGVzLmgiCi0gI2luY2x1ZGUgImtvZGkveGJtY19zdHJlYW1fdXRpbHMuaHBwIgotICNpbmNsdWRlICJrb2RpL2xpYlhCTUNfYWRkb24uaCIKLUBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIENIVFNQTWVzc2FnZTsKLSAKLSAvKiBUeXBlZGVmcyAqLwotIHR5cGVkZWYgc3RkOjptYXA8dWludDMyX3QsQ0hUU1BSZXNwb25zZSo+IENIVFNQUmVzcG9uc2VMaXN0OwotLXR5cGVkZWYgUExBVEZPUk06OlN5bmNlZEJ1ZmZlcjxDSFRTUE1lc3NhZ2U+IENIVFNQTWVzc2FnZVF1ZXVlOwotK3R5cGVkZWYgUDhQTEFURk9STTo6U3luY2VkQnVmZmVyPENIVFNQTWVzc2FnZT4gQ0hUU1BNZXNzYWdlUXVldWU7Ci0gCi0gLyoKLSAgKiBIVFNQIFJlc3BvbnNlIGhhbmRsZXIKLUBAIC05OCwxMCArOTgsMTAgQEAgY2xhc3MgQ0hUU1BSZXNwb25zZQotIHB1YmxpYzoKLSAgIENIVFNQUmVzcG9uc2UoKTsKLSAgIH5DSFRTUFJlc3BvbnNlKCk7Ci0tICBodHNtc2dfdCAqR2V0ICggUExBVEZPUk06OkNNdXRleCAmbXV0ZXgsIHVpbnQzMl90IHRpbWVvdXQgKTsKLSsgIGh0c21zZ190ICpHZXQgKCBQOFBMQVRGT1JNOjpDTXV0ZXggJm11dGV4LCB1aW50MzJfdCB0aW1lb3V0ICk7Ci0gICB2b2lkICAgICAgU2V0ICggaHRzbXNnX3QgKm0gKTsKLSBwcml2YXRlOgotLSAgUExBVEZPUk06OkNDb25kaXRpb248dm9sYXRpbGUgYm9vbD4gbV9jb25kOwotKyAgUDhQTEFURk9STTo6Q0NvbmRpdGlvbjx2b2xhdGlsZSBib29sPiBtX2NvbmQ7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZsYWc7Ci0gICBodHNtc2dfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICptX21zZzsKLSB9OwotQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6Ci0gICogSFRTUCBDb25uZWN0aW9uIHJlZ2lzdHJhdGlvbiB0aHJlYWQKLSAgKi8KLSBjbGFzcyBDSFRTUFJlZ2lzdGVyCi0tICA6IHB1YmxpYyBQTEFURk9STTo6Q1RocmVhZAotKyAgOiBwdWJsaWMgUDhQTEFURk9STTo6Q1RocmVhZAotIHsKLSAgIGZyaWVuZCBjbGFzcyBDSFRTUENvbm5lY3Rpb247Ci0gCi1AQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6Ci0gICogSFRTUCBDb25uZWN0aW9uCi0gICovCi0gY2xhc3MgQ0hUU1BDb25uZWN0aW9uCi0tICA6IHB1YmxpYyBQTEFURk9STTo6Q1RocmVhZAotKyAgOiBwdWJsaWMgUDhQTEFURk9STTo6Q1RocmVhZAotIHsKLSAgIGZyaWVuZCBjbGFzcyBDSFRTUFJlZ2lzdGVyOwotIAotQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6Ci0gICBpbmxpbmUgYm9vbCBJc0Nvbm5lY3RlZCAgICAgICAoIHZvaWQgKSBjb25zdCB7IHJldHVybiBtX3JlYWR5OyB9Ci0gICBib29sICAgICAgICBXYWl0Rm9yQ29ubmVjdGlvbiAoIHZvaWQgKTsKLSAKLS0gIGlubGluZSBQTEFURk9STTo6Q011dGV4JiBNdXRleCAoIHZvaWQgKSB7IHJldHVybiBtX211dGV4OyB9Ci0rICBpbmxpbmUgUDhQTEFURk9STTo6Q011dGV4JiBNdXRleCAoIHZvaWQgKSB7IHJldHVybiBtX211dGV4OyB9Ci0gCi0gICB2b2lkICAgICAgICBPblNsZWVwICggdm9pZCApOwotICAgdm9pZCAgICAgICAgT25XYWtlICAoIHZvaWQgKTsKLUBAIC0yMDIsMTAgKzIwMiwxMCBAQCBwcml2YXRlOgotICAgYm9vbCAgICAgICAgU2VuZEhlbGxvICAgICAgICAoIHZvaWQgKTsKLSAgIGJvb2wgICAgICAgIFNlbmRBdXRoICAgICAgICAgKCBjb25zdCBzdGQ6OnN0cmluZyAmdSwgY29uc3Qgc3RkOjpzdHJpbmcgJnAgKTsKLSAKLS0gIFBMQVRGT1JNOjpDVGNwU29ja2V0ICAgICAgICAgICAgICAgKm1fc29ja2V0OwotLSAgUExBVEZPUk06OkNNdXRleCAgICAgICAgICAgICAgICAgICAgbV9tdXRleDsKLSsgIFA4UExBVEZPUk06OkNUY3BTb2NrZXQgICAgICAgICAgICAgICAqbV9zb2NrZXQ7Ci0rICBQOFBMQVRGT1JNOjpDTXV0ZXggICAgICAgICAgICAgICAgICAgIG1fbXV0ZXg7Ci0gICBDSFRTUFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICBtX3JlZ1RocmVhZDsKLS0gIFBMQVRGT1JNOjpDQ29uZGl0aW9uPHZvbGF0aWxlIGJvb2w+IG1fcmVnQ29uZDsKLSsgIFA4UExBVEZPUk06OkNDb25kaXRpb248dm9sYXRpbGUgYm9vbD4gbV9yZWdDb25kOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWFkeTsKLSAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2VxOwotICAgc3RkOjpzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgbV9zZXJ2ZXJOYW1lOwotQEAgLTI3MywxMyArMjczLDEzIEBAIHB1YmxpYzoKLSAgIHZvaWQgU2V0U3RyZWFtaW5nUHJvZmlsZShjb25zdCBzdGQ6OnN0cmluZyAmcHJvZmlsZSk7Ci0gCi0gcHJpdmF0ZToKLS0gIFBMQVRGT1JNOjpDTXV0ZXggICAgICAgICAgICAgICAgICAgICAgICBtX211dGV4OwotKyAgUDhQTEFURk9STTo6Q011dGV4ICAgICAgICAgICAgICAgICAgICAgICAgbV9tdXRleDsKLSAgIENIVFNQQ29ubmVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICZtX2Nvbm47Ci0tICBQTEFURk9STTo6U3luY2VkQnVmZmVyPERlbXV4UGFja2V0Kj4gICAgbV9wa3RCdWZmZXI7Ci0rICBQOFBMQVRGT1JNOjpTeW5jZWRCdWZmZXI8RGVtdXhQYWNrZXQqPiAgICBtX3BrdEJ1ZmZlcjsKLSAgIEFERE9OOjpYYm1jU3RyZWFtUHJvcGVydGllcyAgICAgICAgICAgICBtX3N0cmVhbXM7Ci0gICBzdGQ6Om1hcDxpbnQsaW50PiAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJlYW1TdGF0OwotICAgaW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Vla1RpbWU7Ci0tICBQTEFURk9STTo6Q0NvbmRpdGlvbjx2b2xhdGlsZSBpbnQ2NF90PiAgbV9zZWVrQ29uZDsKLSsgIFA4UExBVEZPUk06OkNDb25kaXRpb248dm9sYXRpbGUgaW50NjRfdD4gIG1fc2Vla0NvbmQ7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zZWVraW5nOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3BlZWRDaGFuZ2U7Ci0gICB0dmhlYWRlbmQ6OnN0YXR1czo6U291cmNlSW5mbyAgICAgICAgICAgbV9zb3VyY2VJbmZvOwotQEAgLTM1MCw3ICszNTAsNyBAQCBwcml2YXRlOgotICAqIFJvb3Qgb2JqZWN0IGZvciBUdmhlYWRlbmQgY29ubmVjdGlvbgotICAqLwotIGNsYXNzIENUdmhlYWRlbmQKLS0gIDogcHVibGljIFBMQVRGT1JNOjpDVGhyZWFkCi0rICA6IHB1YmxpYyBQOFBMQVRGT1JNOjpDVGhyZWFkCi0gewotIHB1YmxpYzoKLSAgIENUdmhlYWRlbmQoKTsKLUBAIC00MjIsNyArNDIyLDcgQEAgcHJpdmF0ZToKLSAgICAqLwotICAgdHZoZWFkZW5kOjpQcm9maWxlcyAgICAgICAgIG1fcHJvZmlsZXM7Ci0gCi0tICBQTEFURk9STTo6Q011dGV4ICAgICAgICAgICAgbV9tdXRleDsKLSsgIFA4UExBVEZPUk06OkNNdXRleCAgICAgICAgICAgIG1fbXV0ZXg7Ci0gCi0gICBDSFRTUENvbm5lY3Rpb24gICAgICAgICAgICAgbV9jb25uOwotIAotQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6Ci0gICAgKi8KLSAgIGJvb2wgV2FpdEZvckNvbm5lY3Rpb24gKCB2b2lkICkKLSAgIHsKLS0gICAgUExBVEZPUk06OkNMb2NrT2JqZWN0IGxvY2sobV9jb25uLk11dGV4KCkpOwotKyAgICBQOFBMQVRGT1JNOjpDTG9ja09iamVjdCBsb2NrKG1fY29ubi5NdXRleCgpKTsKLSAgICAgcmV0dXJuIG1fY29ubi5XYWl0Rm9yQ29ubmVjdGlvbigpOwotICAgfQotICAgc3RkOjpzdHJpbmcgR2V0U2VydmVyTmFtZSAgICAoIHZvaWQgKQotZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQuY3BwIGIvc3JjL2NsaWVudC5jcHAKLWluZGV4IDk0ZDJkYjkuLjMyOTU5MTQgMTAwNjQ0Ci0tLS0gYS9zcmMvY2xpZW50LmNwcAotKysrIGIvc3JjL2NsaWVudC5jcHAKLUBAIC0yMiwxNCArMjIsMTQgQEAKLSAjaW5jbHVkZSAiY2xpZW50LmgiCi0gI2luY2x1ZGUgImtvZGkveGJtY19wdnJfZGxsLmgiCi0gI2luY2x1ZGUgImtvZGkvbGliS09ESV9ndWlsaWIuaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vdXRpbC91dGlsLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3V0aWwvdXRpbC5oIgotICNpbmNsdWRlICJUdmhlYWRlbmQuaCIKLSAjaW5jbHVkZSAidHZoZWFkZW5kL1NldHRpbmdzLmgiCi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvTG9nZ2VyLmgiCi0gCi0gdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSB1c2luZyBuYW1lc3BhY2UgQURET047Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6dXRpbGl0aWVzOwotIAotZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQuaCBiL3NyYy9jbGllbnQuaAotaW5kZXggM2E1Zjk1MC4uYTEwNjU5YiAxMDA2NDQKLS0tLSBhL3NyYy9jbGllbnQuaAotKysrIGIvc3JjL2NsaWVudC5oCi1AQCAtMjAsOCArMjAsOCBAQAotICAqCi0gICovCi0gCi0tI2luY2x1ZGUgInBsYXRmb3JtL29zLmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vb3MuaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotICNpbmNsdWRlICJrb2RpL2xpYlhCTUNfYWRkb24uaCIKLSAjaW5jbHVkZSAia29kaS9saWJYQk1DX3B2ci5oIgotICNpbmNsdWRlICJrb2RpL2xpYlhCTUNfY29kZWMuaCIKLWRpZmYgLS1naXQgYS9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5jcHAgYi9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5jcHAKLWluZGV4IDE4MmNhN2YuLmUxOGFmMWUgMTAwNjQ0Ci0tLS0gYS9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5jcHAKLSsrKyBiL3NyYy90dmhlYWRlbmQvU3Vic2NyaXB0aW9uLmNwcAotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSAidXRpbGl0aWVzL0xvZ2dlci5oIgotICNpbmNsdWRlICIuLi9UdmhlYWRlbmQuaCIKLSAKLS11c2luZyBuYW1lc3BhY2UgUExBVEZPUk07Ci0rdXNpbmcgbmFtZXNwYWNlIFA4UExBVEZPUk07Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uaCBiL3NyYy90dmhlYWRlbmQvU3Vic2NyaXB0aW9uLmgKLWluZGV4IGIwM2JjY2UuLjM2M2U1ZWYgMTAwNjQ0Ci0tLS0gYS9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5oCi0rKysgYi9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5oCi1AQCAtMjIsNyArMjIsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxzdHJpbmc+Ci0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotIAotIGV4dGVybiAiQyIKLSB7Ci1AQCAtMTQ2LDYgKzE0Niw2IEBAIG5hbWVzcGFjZSB0dmhlYWRlbmQKLSAgICAgc3RkOjpzdHJpbmcgICAgICAgbV9wcm9maWxlOwotICAgICBDSFRTUENvbm5lY3Rpb24gICAmbV9jb25uOwotIAotLSAgICBtdXRhYmxlIFBMQVRGT1JNOjpDTXV0ZXggIG1fbXV0ZXg7Ci0rICAgIG11dGFibGUgUDhQTEFURk9STTo6Q011dGV4ICBtX211dGV4OwotICAgfTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5jcHAgYi9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmNwcAotaW5kZXggMGMzMGE5My4uMWY0ZmRmMyAxMDA2NDQKLS0tLSBhL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuY3BwCi0rKysgYi9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmNwcAotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSAiQXN5bmNTdGF0ZS5oIgotIAotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLS11c2luZyBuYW1lc3BhY2UgUExBVEZPUk07Ci0rdXNpbmcgbmFtZXNwYWNlIFA4UExBVEZPUk07Ci0gCi0gc3RydWN0IFBhcmFtIHsKLSAgIGVBc3luY1N0YXRlIHN0YXRlOwotQEAgLTM3LDcgKzM3LDcgQEAgQXN5bmNTdGF0ZTo6QXN5bmNTdGF0ZShpbnQgdGltZW91dCkKLSAKLSBlQXN5bmNTdGF0ZSBBc3luY1N0YXRlOjpHZXRTdGF0ZSgpCi0gewotLSAgUExBVEZPUk06OkNMb2NrT2JqZWN0IGxvY2sobV9tdXRleCk7Ci0rICBQOFBMQVRGT1JNOjpDTG9ja09iamVjdCBsb2NrKG1fbXV0ZXgpOwotICAgcmV0dXJuIG1fc3RhdGU7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuaCBiL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuaAotaW5kZXggMWQ2NzJkYS4uMDgxOWNkOCAxMDA2NDQKLS0tLSBhL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuaAotKysrIGIvc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5oCi1AQCAtMjIsNyArMjIsNyBAQAotICNpZm5kZWYgQVNZTkNTVEFURV9ICi0gI2RlZmluZQlBU1lOQ1NUQVRFX0gKLSAKLS0jaW5jbHVkZSAicGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0gCi0gbmFtZXNwYWNlIHR2aGVhZGVuZCB7Ci0gICBuYW1lc3BhY2UgdXRpbGl0aWVzIHsKLUBAIC03NSw4ICs3NSw4IEBAIG5hbWVzcGFjZSB0dmhlYWRlbmQgewotICAgICAgIHN0YXRpYyBib29sIFByZWRpY2F0ZUNhbGxiYWNrICggdm9pZCAqcGFyYW0gKTsKLSAKLSAgICAgICBlQXN5bmNTdGF0ZSBtX3N0YXRlOwotLSAgICAgIFBMQVRGT1JNOjpDTXV0ZXggbV9tdXRleDsKLS0gICAgICBQTEFURk9STTo6Q0NvbmRpdGlvbjxib29sPiBtX2NvbmRpdGlvbjsKLSsgICAgICBQOFBMQVRGT1JNOjpDTXV0ZXggbV9tdXRleDsKLSsgICAgICBQOFBMQVRGT1JNOjpDQ29uZGl0aW9uPGJvb2w+IG1fY29uZGl0aW9uOwotICAgICAgIGludCBtX3RpbWVvdXQ7Ci0gCi0gICAgIH07Ci0tLSAKLTIuMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLWFkZG9uLXB2ci1odHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktYWRkb24tcHZyLWh0c19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYWZlYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktYWRkb24tcHZyLWh0c19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIktvZGkgTWVkaWEgQ2VudGVyIFBWUiBwbHVnaW5zIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9jbGllbnQuY3BwO21kNT1jOGY2YjczYzViYzEwNDhhM2Q2NTA2NzAwYTdhOTFkMiIKLQotREVQRU5EUyA9ICIgXAotICAgICAgICAgICAgemlwLW5hdGl2ZSBcCi0gICAgICAgICAgICBwOHBsYXRmb3JtIFwKLSAgICAgICAgICAgIGtvZGktcGxhdGZvcm0gXAotICAgICAgICAgICIKLQotU1JDUkVWX3B2cmh0cyA9ICI3Zjc1YjcwNTI3OTIyYWVmOTUzMTIzZmY5N2ViYWEyMmQ5ZmI3Y2I0IgotCi1TUkNSRVZfRk9STUFUID0gInB2cmh0cyIKLQotUFYgPSAiMi4yLjEzK2dpdHIke1NSQ1BWfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rb2RpLXB2ci9wdnIuaHRzLmdpdDticmFuY2g9SmFydmlzO2Rlc3RzdWZmaXg9cHZyLmh0cztuYW1lPXB2cmh0cyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVwZGF0ZS10by1wOC1wbGF0Zm9ybS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLVMgPSAiJHtXT1JLRElSfS9wdnIuaHRzIgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0JICAtREFERE9OU19UT19CVUlMRD1wdnIuaHRzIFwKLQkgIC1EQURET05fU1JDX1BSRUZJWD0ke1dPUktESVJ9L2dpdCBcCi0JICAtRENNQUtFX0JVSUxEX1RZUEU9RGVidWcgXAotCSAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke2RhdGFkaXJ9L2tvZGkvYWRkb25zIFwKLSAgICAgICAgICAtRENNQUtFX01PRFVMRV9QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmRpcn0va29kaSBcCi0gICAgICAgICAgLURDTUFLRV9QUkVGSVhfUEFUSD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAtRFBBQ0tBR0VfWklQPTEgXAotICAgICAgICAiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlzZWQgLWkgLWUgJ3M6SS91c3IvaW5jbHVkZTpJJHtTVEFHSU5HX0lOQ0RJUn06ZycgXAotCSAgICAgICAtZSAnczotcGlwZToke0hPU1RfQ0NfQVJDSH0gJHtUT09MQ0hBSU5fT1BUSU9OU30gLXBpcGU6ZycgXAotCSAgICAgICAgICAke0J9L0NNYWtlRmlsZXMvKi9mbGFncy5tYWtlCi0Jc2VkIC1pIC1lICdzOi1waXBlOiR7SE9TVF9DQ19BUkNIfSAke1RPT0xDSEFJTl9PUFRJT05TfSAtcGlwZTpnJ1wKLQkgICAgICAgICAgJHtCfS9DTWFrZUZpbGVzLyovbGluay50eHQKLX0KLQotIyBNYWtlIHppcCBwYWNrYWdlIGZvciBtYW51YWwgaW5zdGFsbGF0aW9uCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2tvZGkvYWRkb25zL3BhY2thZ2VzLwotCSggY2QgJHtEfSR7ZGF0YWRpcn0va29kaS9hZGRvbnMKLQkgIHppcCAtciAke0R9JHtkYXRhZGlyfS9rb2RpL2FkZG9ucy9wYWNrYWdlcy9wdnIuaHRzLSR7UFZ9LnppcCBwdnIuaHRzIC14ICcqLmRlYnVnKicgKQotfQotCi0jIERvZXNuJ3QgZ2V0IGFkZGVkIGF1dG9tYWdpY2FsbHksIGRsb3BlbigpPwotUkRFUEVORFNfJHtQTn0gPSAibGlia29kaXBsYXRmb3JtIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9rb2RpIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L2tvZGkvYWRkb25zLyovLmRlYnVnLyIKLQotUE5CTEFDS0xJU1Rba29kaS1hZGRvbi1wdnItaHRzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBrb2RpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm0vMDAwMS1maXgtY3Jvc3MtY29tcGlsZS1iYWRuZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm0vMDAwMS1maXgtY3Jvc3MtY29tcGlsZS1iYWRuZXNzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2U5ZDIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtLzAwMDEtZml4LWNyb3NzLWNvbXBpbGUtYmFkbmVzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMzEzNjMxN2YwOTZlYTdmZGE0ZmI5MDdlNzc1YTAxOTUyYzRhYWUzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBTYXJhZXYgPHN0ZWZhbkBzYXJhZXYuY2E+Ci1EYXRlOiBGcmksIDE5IEZlYiAyMDE2IDEwOjMzOjAwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBjcm9zcyBjb21waWxlIGJhZG5lc3MKLQotRnJvbSBodHRwczovL2dpdGh1Yi5jb20vT3BlbkVMRUMvT3BlbkVMRUMudHYvYmxvYi9tYXN0ZXIvcGFja2FnZXMvbWVkaWFjZW50ZXIva29kaS1wbGF0Zm9ybS9wYXRjaGVzL2tvZGktcGxhdGZvcm0tMDFfY3Jvc3Njb21waWxlLWJhZG5lc3MucGF0Y2gKLS0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgfCAyICstCi0ga29kaXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbiB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGJmNmI2NTkuLjlhYmU3NzMgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yMiw3ICsyMiw3IEBAIGlmKE5PVCBXSU4zMikKLSAgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZlBJQyIpCi0gZW5kaWYoKQotIAotLXNldChrb2RpcGxhdGZvcm1fSU5DTFVERV9ESVJTICR7VElOWVhNTF9JTkNMVURFX0RJUn0gIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2luY2x1ZGUva29kaSIpCi0rc2V0KGtvZGlwbGF0Zm9ybV9JTkNMVURFX0RJUlMgJHtUSU5ZWE1MX0lOQ0xVREVfRElSfSAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWF9UT09MQ0hBSU59L2luY2x1ZGUva29kaSIpCi0gSUYoV0lOMzIpCi0gICBMSVNUKEFQUEVORCBrb2RpcGxhdGZvcm1fSU5DTFVERV9ESVJTICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9pbmNsdWRlL2tvZGkvd2luZG93cyIpCi0gRU5ESUYoV0lOMzIpCi1kaWZmIC0tZ2l0IGEva29kaXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbiBiL2tvZGlwbGF0Zm9ybS1jb25maWcuY21ha2UuaW4KLWluZGV4IDNmYzUyNzMuLjYwYmRmMWIgMTAwNjQ0Ci0tLS0gYS9rb2RpcGxhdGZvcm0tY29uZmlnLmNtYWtlLmluCi0rKysgYi9rb2RpcGxhdGZvcm0tY29uZmlnLmNtYWtlLmluCi1AQCAtMTAsNyArMTAsNyBAQAotICMKLSAjIHByb3BhZ2F0ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gb25lIGJ1aWxkIHN5c3RlbSB0byB0aGUgb3RoZXIKLSBzZXQgKGtvZGlwbGF0Zm9ybV9WRVJTSU9OICJAa29kaXBsYXRmb3JtX1ZFUlNJT05fTUFKT1JALkBrb2RpcGxhdGZvcm1fVkVSU0lPTl9NSU5PUkAiKQotLXNldCAoa29kaXBsYXRmb3JtX0lOQ0xVREVfRElSUyBAa29kaXBsYXRmb3JtX0lOQ0xVREVfRElSU0AgQENNQUtFX0lOU1RBTExfUFJFRklYQC9pbmNsdWRlKQotK3NldCAoa29kaXBsYXRmb3JtX0lOQ0xVREVfRElSUyBAa29kaXBsYXRmb3JtX0lOQ0xVREVfRElSU0AgQENNQUtFX0lOU1RBTExfUFJFRklYX1RPT0xDSEFJTkAvaW5jbHVkZSkKLSBzZXQgKGtvZGlwbGF0Zm9ybV9MSUJSQVJZX0RJUlMgIkBDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUllAIikKLSBzZXQgKGtvZGlwbGF0Zm9ybV9MSU5LRVJfRkxBR1MgIkBrb2RpcGxhdGZvcm1fTElOS0VSX0ZMQUdTQCIpCi0gc2V0IChrb2RpcGxhdGZvcm1fQ09ORklHX1ZBUlMgIkBrb2RpcGxhdGZvcm1fQ09ORklHX1ZBUlNAIikKLS0tIAotMi4wLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm0va29kaS1wbGF0Zm9ybS0wMl9uby1tdWx0aS1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybS9rb2RpLXBsYXRmb3JtLTAyX25vLW11bHRpLWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzYzUzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybS9rb2RpLXBsYXRmb3JtLTAyX25vLW11bHRpLWxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA5YWJlNzczLi5hZTQzM2ZjIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtOSw3ICs5LDYgQEAgZmluZF9wYWNrYWdlKGtvZGkgUkVRVUlSRUQpCi0gZmluZF9wYWNrYWdlKFRpbnlYTUwgUkVRVUlSRUQpCi0gZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCi0gZmluZF9wYWNrYWdlKHA4LXBsYXRmb3JtIFJFUVVJUkVEKQotLWluY2x1ZGUoVXNlTXVsdGlBcmNoLmNtYWtlKQotIGluY2x1ZGUoQ2hlY2tBdG9taWMuY21ha2UpCi0gCi0gc2V0KGtvZGlwbGF0Zm9ybV9OQU1FIGtvZGlwbGF0Zm9ybSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI1NTRlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlBsYXRmb3JtIHN1cHBvcnQgbGlicmFyeSB1c2VkIGJ5IGxpYkNFQyBhbmQgYmluYXJ5IGFkZC1vbnMgZm9yIEtvZGkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGliY2VjLnB1bHNlLWVpZ2h0LmNvbS8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3V0aWwvWE1MVXRpbHMuY3BwO2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWRhZThlODQ2NTAwZTcwZGQ4ZWNlZTU1ZjNmMDE4YzMwIgotCi1ERVBFTkRTID0gImxpYnRpbnl4bWwga29kaSIKLQotUFYgPSAiMTYuMC4wIgotCi1TUkNSRVYgPSAiYzgxODhkODI2NzhmZWM2Yjc4NDU5N2RiNjlhNjhlNzRmZjQ5ODZiNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94Ym1jL2tvZGktcGxhdGZvcm0uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWNyb3NzLWNvbXBpbGUtYmFkbmVzcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9rb2RpLXBsYXRmb3JtLTAyX25vLW11bHRpLWxpYi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNNQUtFID0gIiAtRENNQUtFX0lOU1RBTExfUFJFRklYX1RPT0xDSEFJTj0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUl9OT0FSQ0g9JHtsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1ES09ESV9JTkNMVURFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9rb2RpIFwKLSAgICAgICAgICAgICAgICAgIC1ES09ESV9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSfS9rb2RpIFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlzZWQgLWkgLWUgJ3M6SS91c3IvaW5jbHVkZTpJJHtTVEFHSU5HX0lOQ0RJUn06ZycgXAotCSAgICAgICAtZSAnczotcGlwZToke0hPU1RfQ0NfQVJDSH0gJHtUT09MQ0hBSU5fT1BUSU9OU30gLXBpcGU6ZycgXAotCSAgICAgICAgICAke0J9L0NNYWtlRmlsZXMva29kaXBsYXRmb3JtLmRpci9mbGFncy5tYWtlCi0Jc2VkIC1pIC1lICdzOi1waXBlOiR7SE9TVF9DQ19BUkNIfSAke1RPT0xDSEFJTl9PUFRJT05TfSAtcGlwZTpnJ1wKLQkgICAgICAgICAgJHtCfS9DTWFrZUZpbGVzL2tvZGlwbGF0Zm9ybS5kaXIvbGluay50eHQKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICJsaWJrb2RpcGxhdGZvcm0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qcGxhdGZvcm0iCi0KLVBOQkxBQ0tMSVNUW2tvZGktcGxhdGZvcm1dID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGtvZGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1zdGFydHVwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktc3RhcnR1cC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlOGYzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1zdGFydHVwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW1kIHNlcnZpY2UgZm9yIGtvZGkgc3RhcnR1cCIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKLQotUFYgPSAiMS4wIgotCi1TUkNfVVJJID0gImZpbGU6Ly9rb2RpLnNlcnZpY2UiCi0KLWluaGVyaXQgc3lzdGVtZAotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfS9saWIvc3lzdGVtZC9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rb2RpLnNlcnZpY2UgJHtEfS9saWIvc3lzdGVtZC9zeXN0ZW0vIAotfQotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImtvZGkuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhpbml0IGtvZGkiCi0KLVBOQkxBQ0tMSVNUW2tvZGktc3RhcnR1cF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBrb2RpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtrb2RpLXN0YXJ0dXBdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQga29kaS1zdGFydHVwLWRldiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGlfMTcuYmIKaW5kZXggNDNjMzJmYi4uNTE1OGYwNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGlfMTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGlfMTcuYmIKQEAgLTE4LDYgKzE4LDcgQEAKICAgICAgICAgICAgIGF2YWhpIFwKICAgICAgICAgICAgIGJvb3N0IFwKICAgICAgICAgICAgIGJ6aXAyIFwKKyAgICAgICAgICAgIGNyb3NzZ3VpZCBcCiAgICAgICAgICAgICBjdXJsIFwKICAgICAgICAgICAgIGRjYWRlYyBcCiAgICAgICAgICAgICBlbmNhIFwKQEAgLTYyLDExICs2MywxMSBAQAogCiBQUk9WSURFUyA9ICJ4Ym1jIgogCi1TUkNSRVYgPSAiNjYxZGQwOGQyMjFmNWIyYmY1MDlhNjk2YTZhY2E1ZWU3ZDQ1YmIyNyIKLUJBU0VQViA9ICIxNy4xIgotUFYgPSAiJHtCQVNFUFZ9K2dpdHIke1NSQ1BWfSIKK1NSQ1JFViA9ICI2YWJlZWJkNWJhMzcxNTQ3YzhmMDQyNzIyOTY0MzNmNWU0ZTI4ZTg2IgorUFYgPSAiMTcuMytnaXRyJHtTUkNQVn0iCitBRERPTlNQViA9ICIxNy4xIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hibWMveGJtYy5naXQ7YnJhbmNoPUtyeXB0b24gXAotICAgICAgICAgICBodHRwczovL3JlcG8udm9pZGxpbnV4LmV1L2Rpc3RmaWxlcy8ke0JQTn0tJHtCQVNFUFZ9LWdlbmVyYXRlZC1hZGRvbnMudGFyLnh6O25hbWU9YWRkb25zO3VucGFjaz0wIFwKKyAgICAgICAgICAgaHR0cHM6Ly9yZXBvLnZvaWRsaW51eC5ldS9kaXN0ZmlsZXMvJHtCUE59LSR7QURET05TUFZ9LWdlbmVyYXRlZC1hZGRvbnMudGFyLnh6O25hbWU9YWRkb25zO3VucGFjaz0wIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLWRvbi10LXRyeS10by1ydW4tc3R1ZmYtdG8tZmluZC10aW55eG1sLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtaGFuZGxlLVNJR1RFUk0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1hZGQtc3VwcG9ydC10by1yZWFkLWZyZXF1ZW5jeS1vdXRwdXQtaWYtdXNpbmctaW50ZWwtLnBhdGNoIFwKQEAgLTEzMSw2ICsxMzIsMTEgQEAKIEZVTExfT1BUSU1JWkFUSU9OX2FybXY3dmUgPSAiLWZleHBlbnNpdmUtb3B0aW1pemF0aW9ucyAtZm9taXQtZnJhbWUtcG9pbnRlciAtTzMgLWZmYXN0LW1hdGgiCiBCVUlMRF9PUFRJTUlaQVRJT04gPSAiJHtGVUxMX09QVElNSVpBVElPTn0iCiAKK0xERkxBR1NfYXBwZW5kX21pcHMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfYXJtID0gIiAtbGF0b21pYyIKKwogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgogCiAjIGZvciBweXRob24gbW9kdWxlcwpAQCAtMTQ2LDE1ICsxNTIsMTQgQEAKICAgICByZXR1cm4gIiIKIAogZG9fY29uZmlndXJlKCkgewotICAgIHRhciB4ZiAke1dPUktESVJ9LyR7QlBOfS0ke0JBU0VQVn0tZ2VuZXJhdGVkLWFkZG9ucy50YXIueHogLUMgJHtTfS8KKyAgICB0YXIgeGYgJHtXT1JLRElSfS8ke0JQTn0tJHtBRERPTlNQVn0tZ2VuZXJhdGVkLWFkZG9ucy50YXIueHogLUMgJHtTfS8KIAotICAgICggZm9yIGkgaW4gJChmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZS4qIiApIDsgZG8KKyAgICAoIGZvciBpIGluICQoZmluZCAke1N9IC1uYW1lIGNvbmZpZ3VyZS5hYyAtb3IgLW5hbWUgY29uZmlndXJlLmlufGdyZXAgLXYgIi5wYyIpIDsgZG8KICAgICAgICBjZCAkKGRpcm5hbWUgJGkpICYmIGdudS1jb25maWdpemUgLS1mb3JjZSB8fCB0cnVlCiAgICAgZG9uZSApCiAgICAgKCBmb3IgZiBpbiAke1N9L3hibWMvaW50ZXJmYWNlcy9weXRob24vZ2VuZXJhdGVkLyouY3BwOyBkbwogICAgICAgIHRvdWNoIGBlY2hvICRmfHNlZCAtZSAncy8uY3BwJC8ueG1sL2cnYAogICAgIGRvbmUgKQotICAgIG1ha2UgLUMgdG9vbHMvZGVwZW5kcy90YXJnZXQvY3Jvc3NndWlkIFBSRUZJWD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9CiAKICAgICBCT09UU1RSQVBfU1RBTkRBTE9ORT0xIG1ha2UgLWYgYm9vdHN0cmFwLm1rIEpTT05fQlVJTERFUj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L0pzb25TY2hlbWFCdWlsZGVyIgogICAgIEJPT1RTVFJBUF9TVEFOREFMT05FPTEgbWFrZSBKQVZBPS9iaW4vdHJ1ZSAtZiBjb2RlZ2VuZXJhdG9yLm1rIEpTT05fQlVJTERFUj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L0pzb25TY2hlbWFCdWlsZGVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1ta3YvbGliZWJtbC9saWJlYm1sXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1ta3YvbGliZWJtbC9saWJlYm1sXzEuMy4wLmJiCmluZGV4IGJiYmU1NjMuLjE2ZTE3ZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWt2L2xpYmVibWwvbGliZWJtbF8xLjMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1rdi9saWJlYm1sL2xpYmVibWxfMS4zLjAuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gImxpYmVibWwgaXMgYSBDKysgbGliYXJ5IHRvIHBhcnNlIEVCTUwgZmlsZXMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMO21kNT1mMTQ1OTlhMmYwODlmNmZmOGM5N2UyYmFhNGUzZDU3NSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCiAKIFNSQ19VUkkgPSAiXAogICAgIGh0dHA6Ly9kbC5tYXRyb3NrYS5vcmcvZG93bmxvYWRzL2xpYmVibWwvbGliZWJtbC0ke1BWfS50YXIuYnoyIFwKQEAgLTEwLDE1ICsxMCw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZWZlYzcyOWJmNWE1MWU2NDllMWQ5ZDFmNjFjMGFlN2EiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODNiMDc0ZDZiNjI3MTVhYTAwODA0MDZlYTg0ZDMzZGYyZTQ0YjVkODc0MDk2NjQwMjMzYTRkYjQ5YjgwOTZkZSIKIAotZG9fdW5wYWNrW3Bvc3RmdW5jc10gKz0gImRvczJ1bml4IgotCi1kb3MydW5peCAoKSB7Ci0gICAgY3I9IiQocHJpbnRmICdccicpIgotICAgIGZvciBmIGluICR7U30vbWFrZS8qL01ha2VmaWxlOyBkbwotICAgICAgICB0ciAtZCAiJGNyIiA8IiRmIiA+IiRmLm5ldyIgJiYgXAotICAgICAgICAgICAgbXYgIiRmLm5ldyIgIiRmIgotICAgIGRvbmUKLX0KK2luaGVyaXQgZG9zMnVuaXgKIAogTElCRUJNTF9PUyA9ICJVbmtub3duIgogTElCRUJNTF9PU19saW51eCA9ICJMaW51eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWt2L21rdnRvb2xuaXgvbWt2dG9vbG5peF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1rdi9ta3Z0b29sbml4L21rdnRvb2xuaXhfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTE0MjY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWt2L21rdnRvb2xuaXgvbWt2dG9vbG5peF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIk1LVlRvb2xOaXggLS0gQ3Jvc3MtcGxhdGZvcm0gdG9vbHMgZm9yIE1hdHJvc2thIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5idW5rdXMub3JnL3ZpZGVvdG9vbHMvbWt2dG9vbG5peC9zb3VyY2UuaHRtbCIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1ERVBFTkRTID0gImN1cmwgYm9vc3QgZXhwYXQgemxpYiBsaWJlYm1sIGxpYm1hdHJvc2thIGxpYm9nZyBsaWJ2b3JiaXMgYnppcDIgbHpvIGZpbGUgcnVieS1uYXRpdmUiCi0KLVBWID0gIjguNC4wK2dpdCR7U1JDUFZ9IgotU1JDUkVWX21rdnRvb2xuaXggPSAiN2Y2M2VhNDhlZTQ3NDc1NGE5NTgzOGYzN2FiYThmNjExOGM5NGE2NSIKLVNSQ1JFVl9saWJlYm1sID0gIjA0YjM0YjBkYmRlZDQwZTBjZWM5M2NhZmE2YTRmNGM4ZTkwYzMyMDYiCi1TUkNSRVZfbGlibWF0cm9za2EgPSAiZGI1ZDYyN2I1YmY0ODUxNmM5ZTBiNTQwMjU0YzBkMzY1OTU3NjBjMyIKLVNSQ1JFVl9GT1JNQVQgPSAibWt2dG9vbG5peCIKLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9tYnVua3VzL21rdnRvb2xuaXguZ2l0O25hbWU9bWt2dG9vbG5peCBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vTWF0cm9za2EtT3JnL2xpYmVibWwuZ2l0O25hbWU9bGliZWJtbDtkZXN0c3VmZml4PWdpdC9saWIvbGliZWJtbCBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vTWF0cm9za2EtT3JnL2xpYm1hdHJvc2thLmdpdDtuYW1lPWxpYm1hdHJvc2thO2Rlc3RzdWZmaXg9Z2l0L2xpYi9saWJtYXRyb3NrYSBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAotCi0jIG1ha2Ugc3VyZSByYiBmaWxlcyBhcmUgdXNlZCBmcm9tIHN5c3Jvb3QsIG5vdCBmcm9tIGhvc3QKLSMgcnVieS0xLjkuMy1hbHdheXMtdXNlLWkzODYucGF0Y2ggaXMgZG9pbmcgdGFyZ2V0X2NwdT1gZWNobyAkdGFyZ2V0X2NwdSB8IHNlZCBzL2kuODYvaTM4Ni9gCi0jIHdlIG5lZWQgdG8gcmVwbGFjZSBpdCB0b28gKGEgYml0IGxvbmdlciB2ZXJzaW9uIHdpdGhvdXQgaW1wb3J0aW5nIHJlKQotUlVCWV9TWVMgPSAiJHtAICcke0JVSUxEX1NZU30nLnJlcGxhY2UoJ2k0ODYnLCAnaTM4NicpLnJlcGxhY2UoJ2k1ODYnLCAnaTM4NicpLnJlcGxhY2UoJ2k2ODYnLCAnaTM4NicpIH0iCi1leHBvcnQgUlVCWUxJQj0iJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ydWJ5Z2Vtczoke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnVieToke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnVieS8ke1JVQllfU1lTfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImZsYWMgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1JywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZmxhY10gPSAiLS13aXRoLWZsYWMsLS13aXRob3V0LWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItLWVuYWJsZS1xdCAtLXdpdGgtbW9jPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9xdDUvbW9jIC0td2l0aC11aWM9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3F0NS91aWMgLS13aXRoLXJjYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcXQ1L3JjYywtLWRpc2FibGUtcXQscXRiYXNlIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1ib29zdC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKLQotIyByZW1vdmUgc29tZSBoYXJkY29kZWQgc2VhcmNocGF0aHMKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi91c3IvbG9jYWwvbGliOiR7U1RBR0lOR19MSUJESVJ9OmcgLWUgczovdXNyL2xvY2FsL2luY2x1ZGU6JHtTVEFHSU5HX0lOQ0RJUn06ZyAke1N9L2FjL3F0NS5tNAotfQotCi0jIFllYWgsIG5vIG1ha2VmaWxlCi1kb19jb21waWxlKCkgewotICAgIExDX0FMTD0iZW5fVVMuVVRGLTgiICR7U30vZHJha2UgJHtQQVJBTExFTF9NQUtFfQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIExDX0FMTD0iZW5fVVMuVVRGLTgiICR7U30vZHJha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotIyB8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzcmMvY29tbW9uL3V0ZjhfY29kZWN2dF9mYWNldC5jcHA6MjI6MDoKLSMgfCBzcmMvY29tbW9uLy4uLy4uL2xpYi9ib29zdC91dGY4X2NvZGVjdnRfZmFjZXQvdXRmOF9jb2RlY3Z0X2ZhY2V0LmNwcDoxNzQ6NTogZXJyb3I6ICdpbnQgbXR4Ojp1dGY4X2NvZGVjdnRfZmFjZXQ6OmRvX2xlbmd0aCcgaXMgbm90IGEgc3RhdGljIGRhdGEgbWVtYmVyIG9mICdzdHJ1Y3QgbXR4Ojp1dGY4X2NvZGVjdnRfZmFjZXQnCi0jIHwgICAgICBCT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVCBzdGQ6Om1ic3RhdGVfdCAmLAotIyB8ICAgICAgXgotUE5CTEFDS0xJU1RbbWt2dG9vbG5peF0gPz0gIkJST0tFTjogRmFpbHggdG8gYnVpbGQgd2l0aCBnY2MtNSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NhcHMvY2Fwc18wLjkuMjQuYmIKaW5kZXggZDc4ODc2My4uMjkxNjdkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NhcHMvY2Fwc18wLjkuMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NhcHMvY2Fwc18wLjkuMjQuYmIKQEAgLTE3LDYgKzE3LDcgQEAKIEVYVFJBX09FTUFLRSA9ICIgXAogICAgIENDPScke0NYWH0nIFwKICAgICBDRkxBR1M9JyR7Q0ZMQUdTfSAtZmZhc3QtbWF0aCAtZnVucm9sbC1sb29wcyAtZlBJQyAtRFBJQycgXAorICAgIEFSQ0g9JycgXAogIgogZG9fY29tcGlsZSgpIHsKICAgICBvZV9ydW5tYWtlIGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NvcmlhbmRlci9jb3JpYW5kZXIvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyL2Nyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MzUwZmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NvcmlhbmRlci9jb3JpYW5kZXIvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUluIGEgY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudCBhZGRpbmcgcGF0aHMgbGlrZSAvdXNyIGFyZSBub3QgY29ycmVjdC4KLVdpdGggdGhpcyBwYXRjaCB3ZSBtYWtlIGl0IHNvIHRoYXQgaXRzIHJlbGF0aXZlIHRvIHN5c3Jvb3QgaWYgdGhlIGNvbXBpbGVyCi1kZWZpbmVzIG9uZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IGEvc3JjL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0JMjAxMy0wMi0wOCAyMjozNTowOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQkyMDEzLTEwLTEzIDAxOjMxOjM4LjgxMjg2OTA4MCAtMDcwMAotQEAgLTMzLDUgKzMzLDUgQEAKLSAJdmlkZW9fZW5jb2RlLmMgdmlkZW9fZW5jb2RlLmggXAotIAlzdWJ0aXRsZXMuYyBzdWJ0aXRsZXMuaCAKLSAKLS1jb3JpYW5kZXJfTERBREQgPSAtTC91c3IvWDExUjYvbGliLyBAUEFDS0FHRV9MSUJTQCAkKElOVExMSUJTKSAkKExJQlRJRkZfTElCUykgJChGVFBMSUJfTElCUykgJChTRExMSUJfTElCUykgJChMSUJEQ19MSUJTKSAkKExJQlJBV19MSUJTKSAkKFhWX0xJQlMpICQoQ09SX0xGU19MREZMQUdTKSAtbGd0aHJlYWQtMi4wICQoRkZNUEVHX0xJQlMpICQoWDExX0xJQlMpCi0rY29yaWFuZGVyX0xEQUREID0gLUw9L3Vzci9YMTFSNi9saWIvIEBQQUNLQUdFX0xJQlNAICQoSU5UTExJQlMpICQoTElCVElGRl9MSUJTKSAkKEZUUExJQl9MSUJTKSAkKFNETExJQl9MSUJTKSAkKExJQkRDX0xJQlMpICQoTElCUkFXX0xJQlMpICQoWFZfTElCUykgJChDT1JfTEZTX0xERkxBR1MpIC1sZ3RocmVhZC0yLjAgJChGRk1QRUdfTElCUykgJChYMTFfTElCUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyXzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NvcmlhbmRlci9jb3JpYW5kZXJfMi4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDFkZGQ5YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NvcmlhbmRlci9jb3JpYW5kZXJfMi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkNvbnRyb2wgYW5kIGNhcHR1cmUgR1VJIGZvciBJSURDIGNvbXBsaWFudCBjYW1lcmFzIgotSE9NRVBBR0UgPSAiaHR0cDovL2RhbWllbi5kb3V4Y2hhbXBzLm5ldC9pZWVlMTM5NC9jb3JpYW5kZXIvIgotU0VDVElPTiA9ICJhcHBsaWNhdGlvbnMiCi1MSUNFTlNFID0gIkdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAiZ3RrKyBsaWJnbm9tZXVpIGxpYnJhdzEzOTQgbGliZGMxMzk0IGxpYnh2IHRpZmYiCi0KLVBOQkxBQ0tMSVNUW2NvcmlhbmRlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gdXNlIFNETCBwcm9iYWJseSBiZWNhdXNlIGxpYnNkbC1jb25maWcgd2FzIHJlbW92ZWQsIGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnU0RMX092ZXJsYXknIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS9jb3JpYW5kZXItMi8ke1BWfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDMxZDk4ZmIwMTMyMTc2ODFmOTdhZGUxNjgyMDFmYjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM3ZmQzMWNiNThkMzk4ZTI3NDIzNTJiZjFmZmJkMmNhMjJlMDY2ODZjNjY2OGVjZmQ0Mzc3MzVjMmI3OTEyMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiCmluZGV4IGFlMTY3NjUuLmE4ZTU0MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXNlcnZlcl8wLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1zZXJ2ZXJfMC42LjAuYmIKQEAgLTYsMTMgKzYsMTMgQEAKIAogTElDRU5TRSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJkbGV5bmEvc2VydmVyL3NlcnZlci5jO2VuZGxpbmU9MjI7bWQ1PWRmYTZkYzNmOTE0MjA2YzI0MDhjMDUxMGMyMzRmOGM4IgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL3NlcnZlci9zZXJ2ZXIuYztlbmRsaW5lPTIyO21kNT00Mzc0NTVkOGFlZmY2OWViZDA5OTZhNzZjNjczOTdiYiIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGxpYnNvdXAtMi40IGxpYnhtbDIgZGxleW5hLWNvcmUiCiBSREVQRU5EU18ke1BOfSA9ICJkbGV5bmEtY29ubmVjdG9yLWRidXMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy8ke0JQTn0uZ2l0IgotU1JDUkVWID0gIjM4NjUxNzgzOTE0Yzc2YmQ4NjFmN2ZlODY1MWIyNWUzOTg2ZDdiZTgiCitTUkNSRVYgPSAiNzc2OTUwZDVkOTZhYzlkYmY1YzVjNDdiZGU4YWMwNmY1MGEzY2Y0NiIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9tZWRpYS1zZXJ2aWNlLXVwbnBfMC41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL21lZGlhLXNlcnZpY2UtdXBucF8wLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFhZjQyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL21lZGlhLXNlcnZpY2UtdXBucF8wLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiZGlzY292ZXIsIGJyb3dzZSBhbmQgc2VhcmNoIFVQTlAvRExOQSBtZWRpYSBzZXJ2ZXJzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvZGxleW5hLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tZWRpYS1zZXJ2aWNlLXVwbnAuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01ODRlYjEwM2I0ZjZmMzQzMmM0M2QxNjliNmExMjNhMSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdzc2RwIGd1cG5wIGd1cG5wLWF2IGd1cG5wLWRsbmEgbGlic291cC0yLjQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy8ke0JQTn0uZ2l0IgotU1JDUkVWID0gIjBkYmM3NGE3OWFhMDdhOGY4YzdkMzJlMWQyZGU2YzRkM2EwZjk1YmMiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGRtcy1pbmZvICR7RH0ke2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9L2Rtcy1pbmZvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9yZW5kZXJlci1zZXJ2aWNlLXVwbnBfMC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL3JlbmRlcmVyLXNlcnZpY2UtdXBucF8wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQwNmQyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL3JlbmRlcmVyLXNlcnZpY2UtdXBucF8wLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiZGlzY292ZXIgYW5kIG1hbmlwdWxhdGUgVVBOUC9ETE5BIG1lZGlhIHJlbmRlcmVycyIKLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2RsZXluYS8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcmVuZGVyZXItc2VydmljZS11cG5wLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9YzI1YzMwODI2ODRlYjRjYTg3NDc0Yjc1MjhjNmRjMTUiCi0KLVBOQkxBQ0tMSVNUW3JlbmRlcmVyLXNlcnZpY2UtdXBucF0gPz0gIkJST0tFTjogZG9lc24ndCBidWlsZCB3aXRoIEIhPVMgKHRyeWluZyB0byBpbnN0YWxsIHJlbmRlcmVyY29uc29sZS5weSBmcm9tICR7Qn0gaW5zdGVhZCBvZiAke1N9KSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdzc2RwIGd1cG5wIGd1cG5wLWF2IGd1cG5wLWRsbmEgbGlic291cC0yLjQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy8ke0JQTn0uZ2l0IgotU1JDUkVWID0gIjRhMGIxZDdjZDhlMjJkM2NiMGUwOWM3N2MzNDRjZWNjYmNiYmQzNGYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHRlc3QvcmVuZGVyZXJjb25zb2xlLnB5ICR7RH0ke2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9ICJweXRob24tZGJ1cyBweXRob24tanNvbiBweXRob24tbWlzYyBweXRob24tcGtndXRpbCBweXRob24teG1sIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIgotIyBXaGVuIHdlIGhhdmUgR0ksIHBhY2thZ2UgY2FwCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vcmVuZGVyZXJjb25zb2xlLnB5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmFhY18xLjI4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmFhY18xLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Yzk0NzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZXdhcmUgQWR2YW5jZWQgQXVkaW8gQ29kZXIgKE1QRUcyLUFBQywgTVBFRzQtQUFDKSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmZhYWMvY29kZXIuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT1mYTFmZDZhNWZhOGNkYzg3N2Q2M2ExMjUzMGQyNzNlMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZhYWMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGRyZXNzLWdjYy02LW5hcnJvd2luZy1lcnJvcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mcm9udGVuZC1GaXgtZm9ybWF0LXN0cmluZy1zZWN1cml0eS1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1wNHYyLURlZmluZS1fX1NUUklORy1pZi1jZGVmcy5oLWRvZXMtbm90LWV4aXN0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODA3NjM3MjhkMzkyYzdkNzg5Y2RlMjU2MTRjODc4ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzUxNDExOTlmNGNmYjE3ZDc0OWMzNmJhOGNmZTRiMjVmODM4ZGE2N2MyMmYwZmVjNDAyMjhiNmI5YzNkMTlkZiIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbXA0djIiCi0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0gbGliJHtCUE59LWRldiIKLQotRklMRVNfJHtQTn0gPSAiICR7YmluZGlyfS9mYWFjICIKLUZJTEVTX2xpYiR7UE59ID0gIiAke2xpYmRpcn0vbGliZmFhYy5zby4qIgotRklMRVNfbGliJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0vZmFhYy5oICR7aW5jbHVkZWRpcn0vZmFhY2NmZy5oICR7bGliZGlyfS9saWJmYWFjLnNvICR7bGliZGlyfS9saWJmYWFjLmxhIgotRklMRVNfbGliJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJmYWFjLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9mYWFjXzEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9mYWFjXzEuMjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc2NWM2YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkZyZWV3YXJlIEFkdmFuY2VkIEF1ZGlvIENvZGVyIChNUEVHMi1BQUMsIE1QRUc0LUFBQykiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJmYWFjL2NvZGVyLmg7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ZmExZmQ2YTVmYThjZGM4NzdkNjNhMTI1MzBkMjczZTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1NSQ19VUkkgPSAiIFwKKyAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vZmFhYy8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLW1wNHYyLURlZmluZS1fX1NUUklORy1pZi1jZGVmcy5oLWRvZXMtbm90LWV4aXN0LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4NjAzNzIwZjY1NTE4MDA1OWQ2OTcwYzU4MmEzMDA1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjYzdiMDNjZWIyNzIyMjIzYTY0NTdlOTVkNGM5OTQ3MzFkODAyMTRhMDNiYTMzZDFhZjc2YmE1M2Y0YjMxOTciCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LW1wNHYyIgorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IGxpYiR7QlBOfS1kZXYiCisKK0ZJTEVTXyR7UE59ID0gIiAke2JpbmRpcn0vZmFhYyAiCitGSUxFU19saWIke1BOfSA9ICIgJHtsaWJkaXJ9Lyouc28uKiIKK0ZJTEVTX2xpYiR7UE59LWRldiA9ICIgXAorICAgICR7aW5jbHVkZWRpcn0gXAorICAgICR7bGliZGlyfS8qLnNvIFwKKyAgICAke2xpYmRpcn0vKi5sYSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy8wMDAxLWZyb250ZW5kLUZpeC1mb3JtYXQtc3RyaW5nLXNlY3VyaXR5LWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMS1mcm9udGVuZC1GaXgtZm9ybWF0LXN0cmluZy1zZWN1cml0eS1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVlMDAzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy8wMDAxLWZyb250ZW5kLUZpeC1mb3JtYXQtc3RyaW5nLXNlY3VyaXR5LWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSBjMWQ3YThiOTkyZGMzNmQwMDEyY2MzZDU0YjdkM2FiZjRhZDRkNWQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMjE6MzM6MDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZyb250ZW5kOiBGaXggZm9ybWF0IHN0cmluZyBzZWN1cml0eSBlcnJvcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZnJvbnRlbmQvbWFpbi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZnJvbnRlbmQvbWFpbi5jIGIvZnJvbnRlbmQvbWFpbi5jCi1pbmRleCAwMjE0NmE4Li5jYjkzMjljIDEwMDY0NAotLS0tIGEvZnJvbnRlbmQvbWFpbi5jCi0rKysgYi9mcm9udGVuZC9tYWluLmMKLUBAIC03MTUsNyArNzE1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAgIGJyZWFrOwotICNlbmRpZgotICAgICAgICAgY2FzZSAnTCc6Ci0tICAgICAgICBmcHJpbnRmKHN0ZGVyciwgZmFhY19jb3B5cmlnaHRfc3RyaW5nKTsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBmYWFjX2NvcHlyaWdodF9zdHJpbmcpOwotICAgICAgICAgZGllTWVzc2FnZSA9IGxpY2Vuc2U7Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSAnWCc6Ci0tLSAKLTIuMTIuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy8wMDAyLW1wNHYyLURlZmluZS1fX1NUUklORy1pZi1jZGVmcy5oLWRvZXMtbm90LWV4aXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMS1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMi1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMS1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvYWRkcmVzcy1nY2MtNi1uYXJyb3dpbmctZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvYWRkcmVzcy1nY2MtNi1uYXJyb3dpbmctZXJyb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmZkZDliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzL2FkZHJlc3MtZ2NjLTYtbmFycm93aW5nLWVycm9ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS0tLSBmYWFjLTEuMjgvY29tbW9uL21wNHYyL2F0b21fc3RhbmRhcmQuY3BwLm9yaWcJMjAxNi0wNi0xNiAwNzo1OToyMS42NTcwNDA3NjEgLTA0MDAKLSsrKyBmYWFjLTEuMjgvY29tbW9uL21wNHYyL2F0b21fc3RhbmRhcmQuY3BwCTIwMTYtMDYtMTYgMDg6MDE6NTAuNjEzMDM2NzI0IC0wNDAwCi1AQCAtMjIsMTUgKzIyLDE1IEBACi0gI2luY2x1ZGUgIm1wNGNvbW1vbi5oIgotICNpbmNsdWRlICJhdG9tcy5oIgotIAotLXN0YXRpYyBjb25zdCBjaGFyIG5hbWVbNV09ezAyNTEsJ24nLCAnYScsICdtJywgJ1wwJ307Ci0tc3RhdGljIGNvbnN0IGNoYXIgYXJ0WzVdPXswMjUxLCdBJywgJ1InLCAnVCcsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIHdydFs1XT17MDI1MSwndycsICdyJywgJ3QnLCAnXDAnfTsKLS1zdGF0aWMgY29uc3QgY2hhciBhbGJbNV09ezAyNTEsJ2EnLCAnbCcsICdiJywgJ1wwJ307Ci0tc3RhdGljIGNvbnN0IGNoYXIgZGF5WzVdPXswMjUxLCdkJywgJ2EnLCAneScsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIHRvb1s1XT17MDI1MSwndCcsICdvJywgJ28nLCAnXDAnfTsKLS1zdGF0aWMgY29uc3QgY2hhciBjbXRbNV09ezAyNTEsJ2MnLCAnbScsICd0JywgJ1wwJ307Ci0tc3RhdGljIGNvbnN0IGNoYXIgZ2VuWzVdPXswMjUxLCdnJywgJ2UnLCAnbicsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIGdycFs1XT17MDI1MSwnZycsICdyJywgJ3AnLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciBuYW1lWzVdPXsoY2hhcikwMjUxLCduJywgJ2EnLCAnbScsICdcMCd9OwotK3N0YXRpYyBjb25zdCBjaGFyIGFydFs1XT17KGNoYXIpMDI1MSwnQScsICdSJywgJ1QnLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciB3cnRbNV09eyhjaGFyKTAyNTEsJ3cnLCAncicsICd0JywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgYWxiWzVdPXsoY2hhcikwMjUxLCdhJywgJ2wnLCAnYicsICdcMCd9OwotK3N0YXRpYyBjb25zdCBjaGFyIGRheVs1XT17KGNoYXIpMDI1MSwnZCcsICdhJywgJ3knLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciB0b29bNV09eyhjaGFyKTAyNTEsJ3QnLCAnbycsICdvJywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgY210WzVdPXsoY2hhcikwMjUxLCdjJywgJ20nLCAndCcsICdcMCd9OwotK3N0YXRpYyBjb25zdCBjaGFyIGdlbls1XT17KGNoYXIpMDI1MSwnZycsICdlJywgJ24nLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciBncnBbNV09eyhjaGFyKTAyNTEsJ2cnLCAncicsICdwJywgJ1wwJ307Ci0gCi0gTVA0U3RhbmRhcmRBdG9tOjpNUDRTdGFuZGFyZEF0b20gKGNvbnN0IGNoYXIgKnR5cGUpIDogTVA0QXRvbSh0eXBlKQotIHsKLS0tLSBmYWFjLTEuMjgvY29tbW9uL21wNHYyL21wNGF0b20uY3BwLm9yaWcJMjAxNi0wNi0xNiAwODowMzowNy43NzcwMzQ2MzMgLTA0MDAKLSsrKyBmYWFjLTEuMjgvY29tbW9uL21wNHYyL21wNGF0b20uY3BwCTIwMTYtMDYtMTYgMDg6MDM6NTQuNjI5MDMzMzYzIC0wNDAwCi1AQCAtMjY0LDExICsyNjQsMTEgQEAKLSAgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMDI1MToKLS0gICAgICBzdGF0aWMgY29uc3QgY2hhciBuYW1lWzVdPXswMjUxLCduJywgJ2EnLCAnbScsICdcMCd9OwotLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGNtdFs1XT17MDI1MSwnYycsICdtJywgJ3QnLCAnXDAnfTsKLS0gICAgICBzdGF0aWMgY29uc3QgY2hhciBjcHlbNV09ezAyNTEsJ2MnLCAncCcsICd5JywgJ1wwJ307Ci0tICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZGVzWzVdPXswMjUxLCdkJywgJ2UnLCAncycsJ1wwJ307Ci0tICAgICAgc3RhdGljIGNvbnN0IGNoYXIgcHJkWzVdPXswMjUxLCAncCcsICdyJywgJ2QnLCAnXDAnfTsKLSsgICAgICBzdGF0aWMgY29uc3QgY2hhciBuYW1lWzVdPXsoY2hhcikwMjUxLCduJywgJ2EnLCAnbScsICdcMCd9OwotKyAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGNtdFs1XT17KGNoYXIpMDI1MSwnYycsICdtJywgJ3QnLCAnXDAnfTsKLSsgICAgICBzdGF0aWMgY29uc3QgY2hhciBjcHlbNV09eyhjaGFyKTAyNTEsJ2MnLCAncCcsICd5JywgJ1wwJ307Ci0rICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZGVzWzVdPXsoY2hhcikwMjUxLCdkJywgJ2UnLCAncycsJ1wwJ307Ci0rICAgICAgc3RhdGljIGNvbnN0IGNoYXIgcHJkWzVdPXsoY2hhcikwMjUxLCAncCcsICdyJywgJ2QnLCAnXDAnfTsKLSAgICAgICBpZiAoQVRPTUlEKHR5cGUpID09IEFUT01JRChuYW1lKSB8fAotIAkgIEFUT01JRCh0eXBlKSA9PSBBVE9NSUQoY210KSB8fAotIAkgIEFUT01JRCh0eXBlKSA9PSBBVE9NSUQoY3B5KSB8fAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy9idWlsZC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy9idWlsZC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2ZmOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvYnVpbGQtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMyICswLDAgQEAKLVBhdGNoIGZpeGluZyBidWlsZCBlcnJvciBhbmQgd2FybmluZ3MuIEVycm9yIGNvbnNpc3RlZCBvZiByZWRlZmluaW5nCi1zdHJjYXNlc3RyIGZ1bmN0aW9uIGZyb20gc3RyaW5nLmguIFdhcm5pbmdzIGNvbnNpc3RlZCBvZiBkZXByZWNhdGVkIGNvbnZlcnNpb25zCi1vZiBzdHJpbmcgY29uc3RhbnRzIHRvIGNoYXIqLCB1c2luZyAnJWxsdScgZm9yIHR5cGUgdWludDY0X3QgKHdoaWNoIG9uIDY0IGJpdAotc3lzdGVtcywgaXMgZGVmaW5lZCBhcyB1bnNpZ25lZCBsb25nIGludCBieSBzdGRpbnQuaCksIGFuZCB1c2luZyAnPT0nIGZvcgotZXF1YWxpdHkgb2YgdHdvIHN0cmluZ3MuCi0KLVBhdGNoIG9yaWdpbmFsbHkgZnJvbSBEZWJpYW4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvY29tbW9uL21wNHYyL21wZWc0aXAuaAotKysrIGIvY29tbW9uL21wNHYyL21wZWc0aXAuaAotQEAgLTEyMCwxNCArMTIwLDYgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tY2hhciAqc3RyY2FzZXN0cihjb25zdCBjaGFyICpoYXlzdGFjaywgY29uc3QgY2hhciAqbmVlZGxlKTsKLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0tCi0gI2RlZmluZSBPUEVOX1JEV1IgT19SRFdSCi0gI2RlZmluZSBPUEVOX0NSRUFUIE9fQ1JFQVQgCi0gI2RlZmluZSBPUEVOX1JET05MWSBPX1JET05MWQotQEAgLTEzNSw3ICsxMjcsNiBAQAotICNkZWZpbmUgY2xvc2Vzb2NrZXQgY2xvc2UKLSAjZGVmaW5lIElPU0JJTkFSWSBpb3M6OmJpbgotIAotLSNpZiBTSVpFT0ZfTE9ORyA9PSA4Ci0gI2RlZmluZSBNQVhfVUlOVDY0IC0xTFUKLSAjZGVmaW5lIEQ2NEYgImxkIgotICNkZWZpbmUgVTY0RiAgImx1IgotQEAgLTE0MywxNSArMTM0LDYgQEAKLSAKLSAjZGVmaW5lIFRPX0Q2NChhKSAoYSMjTCkKLSAjZGVmaW5lIFRPX1U2NChhKSAoYSMjTFUpCi0tI2Vsc2UKLS0jZGVmaW5lIE1BWF9VSU5UNjQgLTFMTFUKLS0jZGVmaW5lIEQ2NEYgImxsZCIKLS0jZGVmaW5lIFU2NEYgICJsbHUiCi0tI2RlZmluZSBYNjRGICJsbHgiCi0tCi0tI2RlZmluZSBUT19ENjQoYSkgKGEjI0xMKQotLSNkZWZpbmUgVE9fVTY0KGEpIChhIyNMTFUpCi0tI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfRlBPU19UX19fUE9TCi0gI2RlZmluZSBGUE9TX1RPX1ZBUihmcG9zLCB0eXBlZCwgdmFyKSAodmFyKSA9ICh0eXBlZCkoKGZwb3MpLl9fcG9zKQotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC00LDYgKzQsOSBAQAotIEFNX0lOSVRfQVVUT01BS0UKLSAKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotK0FIX1RPUChbI2lmbmRlZiBDT05GSUdfSAotKyNkZWZpbmUgQ09ORklHX0hdKQotK0FIX0JPVFRPTShbI2VuZGlmIC8qIENPTkZJR19IICovXSkKLSAKLSBBQ19BUkdfV0lUSCggbXA0djIsICBbICAtLXdpdGgtbXA0djIgICAgICAgICAgICBjb21waWxlIGxpYm1wNHYyXSxXSVRITVA0VjI9JHdpdGh2YWwsIFdJVEhNUDRWMj15ZXMpCi0gQUNfQVJHX0VOQUJMRSggZHJtLCAgWyAgLS1lbmFibGUtZHJtICAgICAgICAgICAgRGlnaXRhbCBSYWRpbyBNb25kaWFsZSBzdXBwb3J0XSwgZW5hYmxlX2RybT0kZW5hYmxldmFsLCBlbmFibGVfZHJtPW5vKQotLS0tIGEvY29tbW9uL21wNHYyL2F0b21fYXZjQy5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9hdG9tX2F2Y0MuY3BwCi1AQCAtMjksNyArMjksNyBAQAotIGNsYXNzIFNpemVUYWJsZVByb3BlcnR5IDogcHVibGljIE1QNFRhYmxlUHJvcGVydHkgCi0gewotICBwdWJsaWM6Ci0tICBTaXplVGFibGVQcm9wZXJ0eShjaGFyICpuYW1lLCBNUDRJbnRlZ2VyUHJvcGVydHkgKnBDb3VudFByb3BlcnR5KSA6Ci0rICBTaXplVGFibGVQcm9wZXJ0eShjb25zdCBjaGFyICpuYW1lLCBNUDRJbnRlZ2VyUHJvcGVydHkgKnBDb3VudFByb3BlcnR5KSA6Ci0gICAgIE1QNFRhYmxlUHJvcGVydHkobmFtZSwgcENvdW50UHJvcGVydHkpIHt9OwotICBwcm90ZWN0ZWQ6Ci0gICB2b2lkIFJlYWRFbnRyeShNUDRGaWxlICpwRmlsZSwgdV9pbnQzMl90IGluZGV4KSB7Ci0tLS0gYS9jb21tb24vbXA0djIvYXRvbV9vaGRyLmNwcAotKysrIGIvY29tbW9uL21wNHYyL2F0b21fb2hkci5jcHAKLUBAIC0yMSw3ICsyMSw3IEBACi0gICAgICAgXHBhcmFtIHVzZUNvdW50ZWRGb3JtYXQgICAgY291bnRlZCBmb3JtYXQgZmxhZy4KLSAgICAgICBccGFyYW0gdXNlVW5pY29kZSAgICAgICAgICB1bmljb2RlIGZsYWcuCi0gICAqLwotLQlPaGRyTVA0U3RyaW5nUHJvcGVydHkoY2hhciogbmFtZSwgYm9vbCB1c2VDb3VudGVkRm9ybWF0ID0gZmFsc2UsCi0rCU9oZHJNUDRTdHJpbmdQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHVzZUNvdW50ZWRGb3JtYXQgPSBmYWxzZSwKLSAgICAgYm9vbCB1c2VVbmljb2RlID0gZmFsc2UpOiBNUDRTdHJpbmdQcm9wZXJ0eShuYW1lLCB1c2VDb3VudGVkRm9ybWF0LAotICAgICB1c2VVbmljb2RlKSB7Ci0gICB9Ci0tLS0gYS9jb21tb24vbXA0djIvYXRvbV9zdHoyLmNwcAotKysrIGIvY29tbW9uL21wNHYyL2F0b21fc3R6Mi5jcHAKLUBAIC0zMCw3ICszMCw3IEBACi0gY2xhc3MgTVA0SGFsZlNpemVUYWJsZVByb3BlcnR5IDogcHVibGljIE1QNFRhYmxlUHJvcGVydHkKLSB7Ci0gcHVibGljOgotLSAgTVA0SGFsZlNpemVUYWJsZVByb3BlcnR5KGNoYXIgKm5hbWUsIE1QNEludGVnZXJQcm9wZXJ0eSAqcENvdW50UHJvcGVydHkpIDoKLSsgIE1QNEhhbGZTaXplVGFibGVQcm9wZXJ0eShjb25zdCBjaGFyICpuYW1lLCBNUDRJbnRlZ2VyUHJvcGVydHkgKnBDb3VudFByb3BlcnR5KSA6Ci0gICAgIE1QNFRhYmxlUHJvcGVydHkobmFtZSwgcENvdW50UHJvcGVydHkpIHt9OwotIAotICAgLy8gVGhlIGNvdW50IGlzIGhhbGYgdGhlIGFjdHVhbCBzaXplCi0tLS0gYS9jb21tb24vbXA0djIvbXA0YXRvbS5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDRhdG9tLmNwcAotQEAgLTgwNiw3ICs4MDYsNyBAQAotIAlBZGRQcm9wZXJ0eShuZXcgTVA0SW50ZWdlcjI0UHJvcGVydHkoImZsYWdzIikpOwotIH0KLSAKLS12b2lkIE1QNEF0b206OkFkZFJlc2VydmVkKGNoYXIqIG5hbWUsIHVfaW50MzJfdCBzaXplKSAKLSt2b2lkIE1QNEF0b206OkFkZFJlc2VydmVkKGNvbnN0IGNoYXIqIG5hbWUsIHVfaW50MzJfdCBzaXplKQotIHsKLSAJTVA0Qnl0ZXNQcm9wZXJ0eSogcFJlc2VydmVkID0gbmV3IE1QNEJ5dGVzUHJvcGVydHkobmFtZSwgc2l6ZSk7IAotIAlwUmVzZXJ2ZWQtPlNldFJlYWRPbmx5KCk7Ci0tLS0gYS9jb21tb24vbXA0djIvbXA0YXRvbS5oCi0rKysgYi9jb21tb24vbXA0djIvbXA0YXRvbS5oCi1AQCAtMjA0LDcgKzIwNCw3IEBACi0gCi0gCXZvaWQgQWRkVmVyc2lvbkFuZEZsYWdzKCk7Ci0gCi0tCXZvaWQgQWRkUmVzZXJ2ZWQoY2hhciogbmFtZSwgdV9pbnQzMl90IHNpemUpOwotKwl2b2lkIEFkZFJlc2VydmVkKGNvbnN0IGNoYXIqIG5hbWUsIHVfaW50MzJfdCBzaXplKTsKLSAKLSAJdm9pZCBFeHBlY3RDaGlsZEF0b20oY29uc3QgY2hhciogbmFtZSwgCi0gCQlib29sIG1hbmRhdG9yeSwgYm9vbCBvbmx5T25lID0gdHJ1ZSk7Ci0tLS0gYS9jb21tb24vbXA0djIvbXA0ZmlsZS5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDRmaWxlLmNwcAotQEAgLTcxOCw3ICs3MTgsNyBAQAotIAl9Ci0gfQotIAotLXZvaWQgTVA0RmlsZTo6UHJvdGVjdFdyaXRlT3BlcmF0aW9uKGNoYXIqIHdoZXJlKQotK3ZvaWQgTVA0RmlsZTo6UHJvdGVjdFdyaXRlT3BlcmF0aW9uKGNvbnN0IGNoYXIqIHdoZXJlKQotIHsKLSAJaWYgKG1fbW9kZSA9PSAncicpIHsKLSAJCXRocm93IG5ldyBNUDRFcnJvcigib3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgaW4gcmVhZCBtb2RlIiwgd2hlcmUpOwotQEAgLTEyNzQsNyArMTI3NCw3IEBACi0gfQotIAotIC8vIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIGJyYW5kcyB3aGljaCByZXF1aXJlIHRoZSBJT0RTIGF0b20KLS1jaGFyICpicmFuZHNXaXRoSW9kc1tdID0geyAibXA0MiIsCi0rY29uc3QgY2hhciAqYnJhbmRzV2l0aElvZHNbXSA9IHsgIm1wNDIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc29tIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMfTsKLSAKLUBAIC0yMjExLDExICsyMjExLDExIEBACi0gCWZvciAodV9pbnQzMl90IGkgPSAwOyBpIDwgbV9wVHJhY2tzLlNpemUoKTsgaSsrKSB7Ci0gCQlpZiAoIXN0cmNtcChub3JtVHlwZSwgbV9wVHJhY2tzW2ldLT5HZXRUeXBlKCkpKSB7Ci0gCQkJaWYgKHN1YlR5cGUpIHsKLS0JCQkJaWYgKG5vcm1UeXBlID09IE1QNF9BVURJT19UUkFDS19UWVBFKSB7Ci0rCQkJCWlmICghc3RyY21wKG5vcm1UeXBlLE1QNF9BVURJT19UUkFDS19UWVBFKSkgewotIAkJCQkJaWYgKHN1YlR5cGUgIT0gR2V0VHJhY2tFc2RzT2JqZWN0VHlwZUlkKG1fcFRyYWNrc1tpXS0+R2V0SWQoKSkpIHsKLSAJCQkJCQljb250aW51ZTsKLSAJCQkJCX0KLS0JCQkJfSBlbHNlIGlmIChub3JtVHlwZSA9PSBNUDRfVklERU9fVFJBQ0tfVFlQRSkgewotKwkJCQl9IGVsc2UgaWYgKCFzdHJjbXAobm9ybVR5cGUsTVA0X1ZJREVPX1RSQUNLX1RZUEUpKSB7Ci0gCQkJCQlpZiAoc3ViVHlwZSAhPSBHZXRUcmFja0VzZHNPYmplY3RUeXBlSWQobV9wVHJhY2tzW2ldLT5HZXRJZCgpKSkgewotIAkJCQkJCWNvbnRpbnVlOwotIAkJCQkJfQotQEAgLTIyNzgsMTEgKzIyNzgsMTEgQEAKLSAgIGZvciAodV9pbnQzMl90IGkgPSAwOyBpIDwgbV9wVHJhY2tzLlNpemUoKTsgaSsrKSB7Ci0gICAgIGlmICghc3RyY21wKG5vcm1UeXBlLCBtX3BUcmFja3NbaV0tPkdldFR5cGUoKSkpIHsKLSAgICAgICBpZiAoc3ViVHlwZSkgewotLQlpZiAobm9ybVR5cGUgPT0gTVA0X0FVRElPX1RSQUNLX1RZUEUpIHsKLSsJaWYgKCFzdHJjbXAobm9ybVR5cGUsTVA0X0FVRElPX1RSQUNLX1RZUEUpKSB7Ci0gCSAgaWYgKHN1YlR5cGUgIT0gR2V0VHJhY2tFc2RzT2JqZWN0VHlwZUlkKG1fcFRyYWNrc1tpXS0+R2V0SWQoKSkpIHsKLSAJICAgIGNvbnRpbnVlOwotIAkgIH0KLS0JfSBlbHNlIGlmIChub3JtVHlwZSA9PSBNUDRfVklERU9fVFJBQ0tfVFlQRSkgewotKwl9IGVsc2UgaWYgKCFzdHJjbXAobm9ybVR5cGUsTVA0X1ZJREVPX1RSQUNLX1RZUEUpKSB7Ci0gCSAgaWYgKHN1YlR5cGUgIT0gR2V0VHJhY2tFc2RzT2JqZWN0VHlwZUlkKG1fcFRyYWNrc1tpXS0+R2V0SWQoKSkpIHsKLSAJICAgIGNvbnRpbnVlOwotIAkgIH0KLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcDRmaWxlLmgKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDRmaWxlLmgKLUBAIC03MDAsNyArNzAwLDcgQEAKLSAJY29uc3QgY2hhciogVGVtcEZpbGVOYW1lKCk7Ci0gCXZvaWQgUmVuYW1lKGNvbnN0IGNoYXIqIGV4aXN0aW5nRmlsZU5hbWUsIGNvbnN0IGNoYXIqIG5ld0ZpbGVOYW1lKTsKLSAKLS0Jdm9pZCBQcm90ZWN0V3JpdGVPcGVyYXRpb24oY2hhciogd2hlcmUpOwotKwl2b2lkIFByb3RlY3RXcml0ZU9wZXJhdGlvbihjb25zdCBjaGFyKiB3aGVyZSk7Ci0gCi0gCXZvaWQgRmluZEludGVnZXJQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCAKLSAJCU1QNFByb3BlcnR5KiogcHBQcm9wZXJ0eSwgdV9pbnQzMl90KiBwSW5kZXggPSBOVUxMKTsKLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcDRwcm9wZXJ0eS5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDRwcm9wZXJ0eS5jcHAKLUBAIC0zMTMsNyArMzEzLDcgQEAKLSAKLSAvLyBNUDRTdHJpbmdQcm9wZXJ0eQotIAotLU1QNFN0cmluZ1Byb3BlcnR5OjpNUDRTdHJpbmdQcm9wZXJ0eShjaGFyKiBuYW1lLCAKLStNUDRTdHJpbmdQcm9wZXJ0eTo6TVA0U3RyaW5nUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwKLSAJYm9vbCB1c2VDb3VudGVkRm9ybWF0LCBib29sIHVzZVVuaWNvZGUpCi0gCTogTVA0UHJvcGVydHkobmFtZSkKLSB7Ci1AQCAtNDIwLDcgKzQyMCw3IEBACi0gCi0gLy8gTVA0Qnl0ZXNQcm9wZXJ0eQotIAotLU1QNEJ5dGVzUHJvcGVydHk6Ok1QNEJ5dGVzUHJvcGVydHkoY2hhciogbmFtZSwgdV9pbnQzMl90IHZhbHVlU2l6ZSwKLStNUDRCeXRlc1Byb3BlcnR5OjpNUDRCeXRlc1Byb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIHVfaW50MzJfdCB2YWx1ZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludDMyX3QgZGVmYXVsdFZhbHVlU2l6ZSkKLSAJOiBNUDRQcm9wZXJ0eShuYW1lKQotIHsKLUBAIC01NDksNyArNTQ5LDcgQEAKLSAKLSAvLyBNUDRUYWJsZVByb3BlcnR5Ci0gCi0tTVA0VGFibGVQcm9wZXJ0eTo6TVA0VGFibGVQcm9wZXJ0eShjaGFyKiBuYW1lLCBNUDRJbnRlZ2VyUHJvcGVydHkqIHBDb3VudFByb3BlcnR5KQotK01QNFRhYmxlUHJvcGVydHk6Ok1QNFRhYmxlUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5KiBwQ291bnRQcm9wZXJ0eSkKLSAJOiBNUDRQcm9wZXJ0eShuYW1lKSAKLSB7Ci0gCW1fcENvdW50UHJvcGVydHkgPSBwQ291bnRQcm9wZXJ0eTsKLUBAIC03MjUsNyArNzI1LDcgQEAKLSAKLSAvLyBNUDREZXNjcmlwdG9yUHJvcGVydHkKLSAgIAotLU1QNERlc2NyaXB0b3JQcm9wZXJ0eTo6TVA0RGVzY3JpcHRvclByb3BlcnR5KGNoYXIqIG5hbWUsIAotK01QNERlc2NyaXB0b3JQcm9wZXJ0eTo6TVA0RGVzY3JpcHRvclByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsCi0gCXVfaW50OF90IHRhZ3NTdGFydCwgdV9pbnQ4X3QgdGFnc0VuZCwgYm9vbCBtYW5kYXRvcnksIGJvb2wgb25seU9uZSkKLSAJOiBNUDRQcm9wZXJ0eShuYW1lKSAKLSB7IAotLS0tIGEvY29tbW9uL21wNHYyL21wNHByb3BlcnR5LmgKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDRwcm9wZXJ0eS5oCi1AQCAtMTAwLDcgKzEwMCw3IEBACi0gCi0gY2xhc3MgTVA0SW50ZWdlclByb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwcm90ZWN0ZWQ6Ci0tCU1QNEludGVnZXJQcm9wZXJ0eShjaGFyKiBuYW1lKQotKwlNUDRJbnRlZ2VyUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSkKLSAJCTogTVA0UHJvcGVydHkobmFtZSkgeyB9OwotIAotIHB1YmxpYzoKLUBAIC0xMTgsNyArMTE4LDcgQEAKLSAjZGVmaW5lIE1QNElOVEVHRVJfUFJPUEVSVFlfREVDTDIoaXNpemUsIHhzaXplKSBcCi0gCWNsYXNzIE1QNEludGVnZXIjI3hzaXplIyNQcm9wZXJ0eSA6IHB1YmxpYyBNUDRJbnRlZ2VyUHJvcGVydHkgeyBcCi0gCXB1YmxpYzogXAotLQkJTVA0SW50ZWdlciMjeHNpemUjI1Byb3BlcnR5KGNoYXIqIG5hbWUpIFwKLSsJCU1QNEludGVnZXIjI3hzaXplIyNQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lKSBcCi0gCQkJOiBNUDRJbnRlZ2VyUHJvcGVydHkobmFtZSkgeyBcCi0gCQkJU2V0Q291bnQoMSk7IFwKLSAJCQltX3ZhbHVlc1swXSA9IDA7IFwKLUBAIC0xODgsNyArMTg4LDcgQEAKLSAKLSBjbGFzcyBNUDRCaXRmaWVsZFByb3BlcnR5IDogcHVibGljIE1QNEludGVnZXI2NFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNEJpdGZpZWxkUHJvcGVydHkoY2hhciogbmFtZSwgdV9pbnQ4X3QgbnVtQml0cykKLSsJTVA0Qml0ZmllbGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCB1X2ludDhfdCBudW1CaXRzKQotIAkJOiBNUDRJbnRlZ2VyNjRQcm9wZXJ0eShuYW1lKSB7Ci0gCQlBU1NFUlQobnVtQml0cyAhPSAwKTsKLSAJCUFTU0VSVChudW1CaXRzIDw9IDY0KTsKLUBAIC0yMTMsNyArMjEzLDcgQEAKLSAKLSBjbGFzcyBNUDRGbG9hdDMyUHJvcGVydHkgOiBwdWJsaWMgTVA0UHJvcGVydHkgewotIHB1YmxpYzoKLS0JTVA0RmxvYXQzMlByb3BlcnR5KGNoYXIqIG5hbWUpCi0rCU1QNEZsb2F0MzJQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lKQotIAkJOiBNUDRQcm9wZXJ0eShuYW1lKSB7Ci0gCQltX3VzZUZpeGVkMTZGb3JtYXQgPSBmYWxzZTsKLSAJCW1fdXNlRml4ZWQzMkZvcm1hdCA9IGZhbHNlOwotQEAgLTI4MCw3ICsyODAsNyBAQAotIAotIGNsYXNzIE1QNFN0cmluZ1Byb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNFN0cmluZ1Byb3BlcnR5KGNoYXIqIG5hbWUsIAotKwlNUDRTdHJpbmdQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLAotIAkgIGJvb2wgdXNlQ291bnRlZEZvcm1hdCA9IGZhbHNlLCBib29sIHVzZVVuaWNvZGUgPSBmYWxzZSk7Ci0gCi0gCX5NUDRTdHJpbmdQcm9wZXJ0eSgpOwotQEAgLTM1NSw3ICszNTUsNyBAQAotIAotIGNsYXNzIE1QNEJ5dGVzUHJvcGVydHkgOiBwdWJsaWMgTVA0UHJvcGVydHkgewotIHB1YmxpYzoKLS0JTVA0Qnl0ZXNQcm9wZXJ0eShjaGFyKiBuYW1lLCB1X2ludDMyX3QgdmFsdWVTaXplID0gMCwKLSsJTVA0Qnl0ZXNQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCB1X2ludDMyX3QgdmFsdWVTaXplID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGRlZmF1bHRWYWx1ZVNpemUgPSAwKTsKLSAKLSAJfk1QNEJ5dGVzUHJvcGVydHkoKTsKLUBAIC00MTksNyArNDE5LDcgQEAKLSAKLSBjbGFzcyBNUDRUYWJsZVByb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNFRhYmxlUHJvcGVydHkoY2hhciogbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5KiBwQ291bnRQcm9wZXJ0eSk7Ci0rCU1QNFRhYmxlUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5KiBwQ291bnRQcm9wZXJ0eSk7Ci0gCi0gCX5NUDRUYWJsZVByb3BlcnR5KCk7Ci0gCi1AQCAtNDY5LDcgKzQ2OSw3IEBACi0gCi0gY2xhc3MgTVA0RGVzY3JpcHRvclByb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNERlc2NyaXB0b3JQcm9wZXJ0eShjaGFyKiBuYW1lID0gTlVMTCwgCi0rCU1QNERlc2NyaXB0b3JQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lID0gTlVMTCwKLSAJICB1X2ludDhfdCB0YWdzU3RhcnQgPSAwLCB1X2ludDhfdCB0YWdzRW5kID0gMCwKLSAJICBib29sIG1hbmRhdG9yeSA9IGZhbHNlLCBib29sIG9ubHlPbmUgPSBmYWxzZSk7Ci0gCi1AQCAtNTMxLDcgKzUzMSw3IEBACi0gCi0gY2xhc3MgTVA0UW9zUXVhbGlmaWVyUHJvcGVydHkgOiBwdWJsaWMgTVA0RGVzY3JpcHRvclByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNFFvc1F1YWxpZmllclByb3BlcnR5KGNoYXIqIG5hbWUgPSBOVUxMLCAKLSsJTVA0UW9zUXVhbGlmaWVyUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSA9IE5VTEwsCi0gCSAgdV9pbnQ4X3QgdGFnc1N0YXJ0ID0gMCwgdV9pbnQ4X3QgdGFnc0VuZCA9IDAsCi0gCSAgYm9vbCBtYW5kYXRvcnkgPSBmYWxzZSwgYm9vbCBvbmx5T25lID0gZmFsc2UpIDoKLSAJTVA0RGVzY3JpcHRvclByb3BlcnR5KG5hbWUsIHRhZ3NTdGFydCwgdGFnc0VuZCwgbWFuZGF0b3J5LCBvbmx5T25lKSB7IH0KLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcDR0cmFjay5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcDR0cmFjay5jcHAKLUBAIC0xMzYwLDcgKzEzNjAsNyBAQAotICAgfQotIH0KLSAKLS1NUDRBdG9tKiBNUDRUcmFjazo6QWRkQXRvbShjaGFyKiBwYXJlbnROYW1lLCBjaGFyKiBjaGlsZE5hbWUpCi0rTVA0QXRvbSogTVA0VHJhY2s6OkFkZEF0b20oY29uc3QgY2hhciogcGFyZW50TmFtZSwgY29uc3QgY2hhciogY2hpbGROYW1lKQotIHsKLSAJTVA0QXRvbSogcENoaWxkQXRvbSA9IE1QNEF0b206OkNyZWF0ZUF0b20oY2hpbGROYW1lKTsKLSAKLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcDR0cmFjay5oCi0rKysgYi9jb21tb24vbXA0djIvbXA0dHJhY2suaAotQEAgLTE2OCw3ICsxNjgsNyBAQAotIAl2b2lkIFVwZGF0ZVN5bmNTYW1wbGVzKE1QNFNhbXBsZUlkIHNhbXBsZUlkLCAKLSAJCWJvb2wgaXNTeW5jU2FtcGxlKTsKLSAKLS0JTVA0QXRvbSogQWRkQXRvbShjaGFyKiBwYXJlbnROYW1lLCBjaGFyKiBjaGlsZE5hbWUpOwotKwlNUDRBdG9tKiBBZGRBdG9tKGNvbnN0IGNoYXIqIHBhcmVudE5hbWUsIGNvbnN0IGNoYXIqIGNoaWxkTmFtZSk7Ci0gCi0gCXZvaWQgVXBkYXRlRHVyYXRpb25zKE1QNER1cmF0aW9uIGR1cmF0aW9uKTsKLSAJTVA0RHVyYXRpb24gVG9Nb3ZpZUR1cmF0aW9uKE1QNER1cmF0aW9uIHRyYWNrRHVyYXRpb24pOwotLS0tIGEvY29tbW9uL21wNHYyL29jaWRlc2NyaXB0b3JzLmNwcAotKysrIGIvY29tbW9uL21wNHYyL29jaWRlc2NyaXB0b3JzLmNwcAotQEAgLTE3MSw3ICsxNzEsNyBAQAotIAotIGNsYXNzIE1QNENyZWF0b3JUYWJsZVByb3BlcnR5IDogcHVibGljIE1QNFRhYmxlUHJvcGVydHkgewotIHB1YmxpYzoKLS0JTVA0Q3JlYXRvclRhYmxlUHJvcGVydHkoY2hhciogbmFtZSwgTVA0SW50ZWdlcjhQcm9wZXJ0eSogcENvdW50UHJvcGVydHkpIDoKLSsJTVA0Q3JlYXRvclRhYmxlUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgTVA0SW50ZWdlcjhQcm9wZXJ0eSogcENvdW50UHJvcGVydHkpIDoKLSAJCU1QNFRhYmxlUHJvcGVydHkobmFtZSwgcENvdW50UHJvcGVydHkpIHsKLSAJfTsKLSBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9maWxlcy9nZXJiZXJhLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9maWxlcy9nZXJiZXJhLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YTNhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nZXJiZXJhL2ZpbGVzL2dlcmJlcmEuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVN0YXJ0IEdlcmJlcmEsIGFuIFVQblAgbWVkaWEgc2VydmVyCitBZnRlcj1tdWx0aS11c2VyLnRhcmdldCBuZXR3b3JrLW9ubGluZS50YXJnZXQKK1dhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldAorCitbU2VydmljZV0KK0V4ZWNTdGFydD0vdXNyL2Jpbi9nZXJiZXJhCitFbnZpcm9ubWVudD0nSE9NRT0vcm9vdCcKK1R5cGU9c2ltcGxlCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9nZXJiZXJhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nZXJiZXJhL2dlcmJlcmFfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NjNjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9nZXJiZXJhX2dpdC5iYgpAQCAtMCwwICsxLDMyIEBACitEZXNjcmlwdGlvbiA9ICJHZXJiZXJhIC0gQW4gVVBuUCBtZWRpYSBzZXJ2ZXIiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT0yNWNkZWM5YWZlM2YxZjI2MjEyZWFkNmJkMmY3ZmFjOCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3YwMGQwMC9nZXJiZXJhLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgZmlsZTovL2dlcmJlcmEuc2VydmljZSBcCisiCisKK1BWID0gIjEuMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0NDM1YjE2NWQxMjExOTVhZWZkNjdkMDI4N2Y3ZjkzNDllMTgxZDQ1IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIgY3VybCBsaWJ1cG5wIGUyZnNwcm9ncyBzcWxpdGUzICIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImdlcmJlcmEuc2VydmljZSIKKworaW5oZXJpdCBjbWFrZSBzeXN0ZW1kCisKK1BBQ0tBR0VDT05GSUcgPSAiIgorUEFDS0FHRUNPTkZJR1t0YWdsaWJdID0gIi1EV0lUSF9UQUdMSUI9VFJVRSwtRFdJVEhfVEFHTElCPUZBTFNFLHRhZ2xpYiIKKworRVhUUkFfT0VDTUFLRSA9ICItRFdJVEhfSlM9RkFMU0UgLURXSVRIX01BR0lDPUZBTFNFIC1EV0lUSF9FWElGPUZBTFNFIC1ETElCVVVJRF9JTkNMVURFX0RJUlM9JHtTVEFHSU5HX0lOQ0RJUn0gLURMSUJVVUlEX0xJQlJBUklFUz0tbHV1aWQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS9yb290Ly5jb25maWcvCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2dlcmJlcmEuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KK30KKworRklMRVNfJHtQTn0gKz0gIi9yb290Ly5jb25maWcvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFhY2RlYy1jaGVjay1jaGFubmVsLWNvdW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFhY2RlYy1jaGVjay1jaGFubmVsLWNvdW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGEwZTE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hYWNkZWMtY2hlY2stY2hhbm5lbC1jb3VudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLWdzdC1mZm1wZWc6IGFhY2RlYzogY2hlY2sgY2hhbm5lbCBjb3VudAotCi1QcmV2ZW50IG91dCBvZiBhcnJheSBhY2Nlc3NlcwotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5NmY0NTJhYzY0N2RhZTMzYzUzYzI0MmVmMzI2NmI2NWE5YmVhZmI2KQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL2FhY2RlYy5jIHwgICAgNSArKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hYWNkZWMuYyBiL2xpYmF2Y29kZWMvYWFjZGVjLmMKLWluZGV4IDIzOTE1M2EuLjZjMTdjMzMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hYWNkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWFjZGVjLmMKLUBAIC05MTQsNiArOTE0LDExIEBAIHN0YXRpYyBhdl9jb2xkIGludCBhYWNfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIGlmIChhdmN0eC0+Y2hhbm5lbHMgPiBNQVhfQ0hBTk5FTFMpIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVG9vIG1hbnkgY2hhbm5lbHNcbiIpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgIH0KLSsKLSAgICAgQUFDX0lOSVRfVkxDX1NUQVRJQyggMCwgMzA0KTsKLSAgICAgQUFDX0lOSVRfVkxDX1NUQVRJQyggMSwgMjcwKTsKLSAgICAgQUFDX0lOSVRfVkxDX1NUQVRJQyggMiwgNTUwKTsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYWxhYy1maXgtbmJfc2FtcGxlcy1vcmRlci1jYXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFsYWMtZml4LW5iX3NhbXBsZXMtb3JkZXItY2FzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjZTBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYWxhYy1maXgtbmJfc2FtcGxlcy1vcmRlci1jYXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBlMDg4NGVhZGY2YTE1ZTkzMTQyMTMxYjY5NWY0ODc3NmY5YTBhYzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFNhdCwgMTAgTm92IDIwMTIgMTc6MTQ6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWxhYzogZml4IG5iX3NhbXBsZXMgPCBvcmRlciBjYXNlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IGUwODg0ZWFkZjZhMTVlOTMxNDIxMzFiNjk1ZjQ4Nzc2ZjlhMGFjMzEgcmVsZWFzZS8xLjAKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZmQ0ZjQ5MjNjY2U2YTJjYmY0ZjQ4NjQwYjRhYzcwNmU2MTRhMTU5NCkKLS0tLQotIGxpYmF2Y29kZWMvYWxhYy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGFjLmMgYi9saWJhdmNvZGVjL2FsYWMuYwotaW5kZXggOWNkMTczNy4uZThlODQ0YSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWxhYy5jCi1AQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyB2b2lkIHByZWRpY3Rvcl9kZWNvbXByZXNzX2Zpcl9hZGEKLSAKLSAgICAgLyogcmVhZCB3YXJtLXVwIHNhbXBsZXMgKi8KLSAgICAgaWYgKHByZWRpY3Rvcl9jb2VmX251bSA+IDApCi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZGljdG9yX2NvZWZfbnVtOyBpKyspIHsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVkaWN0b3JfY29lZl9udW0gJiYgaSA8IG91dHB1dF9zaXplOyBpKyspIHsKLSAgICAgICAgICAgICBpbnQzMl90IHZhbDsKLSAKLSAgICAgICAgICAgICB2YWwgPSBidWZmZXJfb3V0W2ldICsgZXJyb3JfYnVmZmVyW2krMV07Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hbHNkZWMtY2hlY2stYmxvY2stbGVuZ3RoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFsc2RlYy1jaGVjay1ibG9jay1sZW5ndGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOTgwZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFsc2RlYy1jaGVjay1ibG9jay1sZW5ndGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDZkZjBkM2UyOTE2YzIyM2RiZTQyNjJiZjFiODc2ZGZmMWNiM2Y5ODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogV2VkLCAxMiBEZWMgMjAxMiAxMjoyODo0NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhbHNkZWM6IGNoZWNrIGJsb2NrIGxlbmd0aAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCA2ZGYwZDNlMjkxNmMyMjNkYmU0MjYyYmYxYjg3NmRmZjFjYjNmOTgwIHJlbGVhc2UvMS4wCi0KLUZpeCB3cml0aW5nIG92ZXIgdGhlIGVuZAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwY2VjYTI2OWI2NmVjMTJhMjNiZjA5MDdiZDJjMjIwNTEzY2RiZjE2KQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9hbHNkZWMuYyB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHNkZWMuYyBiL2xpYmF2Y29kZWMvYWxzZGVjLmMKLWluZGV4IDQ2ZGQwYjQuLjEwOTViMDEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hbHNkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWxzZGVjLmMKLUBAIC01NTIsMTIgKzU1MiwxNSBAQCBzdGF0aWMgdm9pZCBnZXRfYmxvY2tfc2l6ZXMoQUxTRGVjQ29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgKmRpdl9ibG9ja3MsCi0gCi0gLyoqIFJlYWQgdGhlIGJsb2NrIGRhdGEgZm9yIGEgY29uc3RhbnQgYmxvY2sKLSAgKi8KLS1zdGF0aWMgdm9pZCByZWFkX2NvbnN0X2Jsb2NrX2RhdGEoQUxTRGVjQ29udGV4dCAqY3R4LCBBTFNCbG9ja0RhdGEgKmJkKQotK3N0YXRpYyBpbnQgcmVhZF9jb25zdF9ibG9ja19kYXRhKEFMU0RlY0NvbnRleHQgKmN0eCwgQUxTQmxvY2tEYXRhICpiZCkKLSB7Ci0gICAgIEFMU1NwZWNpZmljQ29uZmlnICpzY29uZiA9ICZjdHgtPnNjb25mOwotICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHggICAgPSBjdHgtPmF2Y3R4OwotICAgICBHZXRCaXRDb250ZXh0ICpnYiAgICAgICAgPSAmY3R4LT5nYjsKLSAKLSsgICAgaWYgKGJkLT5ibG9ja19sZW5ndGggPD0gMCkKLSsgICAgICAgIHJldHVybiAtMTsKLSsKLSAgICAgKmJkLT5yYXdfc2FtcGxlcyA9IDA7Ci0gICAgICpiZC0+Y29uc3RfYmxvY2sgPSBnZXRfYml0czEoZ2IpOyAgICAvLyAxID0gY29uc3RhbnQgdmFsdWUsIDAgPSB6ZXJvIGJsb2NrIChzaWxlbmNlKQotICAgICBiZC0+anNfYmxvY2tzICAgID0gZ2V0X2JpdHMxKGdiKTsKLUBAIC01NzIsNiArNTc1LDggQEAgc3RhdGljIHZvaWQgcmVhZF9jb25zdF9ibG9ja19kYXRhKEFMU0RlY0NvbnRleHQgKmN0eCwgQUxTQmxvY2tEYXRhICpiZCkKLSAKLSAgICAgLy8gZW5zdXJlIGNvbnN0YW50IGJsb2NrIGRlY29kaW5nIGJ5IHJldXNpbmcgdGhpcyBmaWVsZAotICAgICAqYmQtPmNvbnN0X2Jsb2NrID0gMTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0gfQotIAotIAotQEAgLTk3MSw3ICs5NzYsOCBAQCBzdGF0aWMgaW50IHJlYWRfYmxvY2soQUxTRGVjQ29udGV4dCAqY3R4LCBBTFNCbG9ja0RhdGEgKmJkKQotICAgICAgICAgaWYgKHJlYWRfdmFyX2Jsb2NrX2RhdGEoY3R4LCBiZCkpCi0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9IGVsc2UgewotLSAgICAgICAgcmVhZF9jb25zdF9ibG9ja19kYXRhKGN0eCwgYmQpOwotKyAgICAgICAgaWYgKHJlYWRfY29uc3RfYmxvY2tfZGF0YShjdHgsIGJkKSA8IDApCi0rICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0gICAgIHJldHVybiAwOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXRyYWMzZGVjLUNoZWNrLWNvZGluZy1tb2RlLWFnYWluc3QtY2hhbm5lbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXRyYWMzZGVjLUNoZWNrLWNvZGluZy1tb2RlLWFnYWluc3QtY2hhbm5lbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyY2I1ZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF0cmFjM2RlYy1DaGVjay1jb2RpbmctbW9kZS1hZ2FpbnN0LWNoYW5uZWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAyNTAyOTE0YzVmOGViNzc2NTlkN2MwODY4Mzk2ODYyNTU3YTYzMjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgOSBOb3YgMjAxMiAxMzoyNjoyMCArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdHJhYzNkZWM6IENoZWNrIGNvZGluZyBtb2RlIGFnYWluc3QgY2hhbm5lbHMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IDI1MDI5MTRjNWY4ZWI3NzY1OWQ3YzA4NjgzOTY4NjI1NTdhNjMyNDUgcmVsZWFzZS8xLjAKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTM0NTFmNTUyMGNlNmIwYWZkZTg2MWIyMjg1ZGRhNjU5ZjhkNGZiNCkKLQotQ29uZmxpY3RzOgotCi0JbGliYXZjb2RlYy9hdHJhYzMuYwotLS0tCi0gbGliYXZjb2RlYy9hdHJhYzMuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2F0cmFjMy5jIGIvbGliYXZjb2RlYy9hdHJhYzMuYwotaW5kZXggN2QwNzZiZS4uMWRhNGM3OCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2F0cmFjMy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hdHJhYzMuYwotQEAgLTk1NSw2ICs5NTUsMTEgQEAgc3RhdGljIGF2X2NvbGQgaW50IGF0cmFjM19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIH0KLSAgICAgLyogQ2hlY2sgdGhlIGV4dHJhZGF0YS4gKi8KLSAKLSsgICAgaWYgKHEtPmNvZGluZ01vZGUgPT0gSk9JTlRfU1RFUkVPICYmIGF2Y3R4LT5jaGFubmVscyA8IDIpIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBjb2RpbmcgbW9kZVxuIik7Ci0rICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgfQotKwotICAgICBpZiAocS0+YXRyYWMzdmVyc2lvbiAhPSA0KSB7Ci0gICAgICAgICBhdl9sb2coYXZjdHgsQVZfTE9HX0VSUk9SLCJWZXJzaW9uICVkICE9IDQuXG4iLHEtPmF0cmFjM3ZlcnNpb24pOwotICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLWRzcHV0aWwtZml4LXNpZ25lZG5lc3MtaW4tc2l6ZW9mLWNvbXBhcmlzc2lvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtZHNwdXRpbC1maXgtc2lnbmVkbmVzcy1pbi1zaXplb2YtY29tcGFyaXNzaW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZmE1MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtZHNwdXRpbC1maXgtc2lnbmVkbmVzcy1pbi1zaXplb2YtY29tcGFyaXNzaW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGE5OWFmZjRlNGJiZWY4ZTY0YjUxZjI2N2NkMTc2OTIxNGUxYjRlODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzMCBBdWcgMjAxMyAyMzo0MDo0NyArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL2RzcHV0aWw6IGZpeCBzaWduZWRuZXNzIGluIHNpemVvZigpIGNvbXBhcmlzc2lvbnMKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDQ1NGExMWExYzljNjg2Yzc4YWE5Nzk1NDMwNmZiNjM0NTMyOTk3NjApCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvZHNwdXRpbC5jIHwgICAgNCArKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RzcHV0aWwuYyBiL2xpYmF2Y29kZWMvZHNwdXRpbC5jCi1pbmRleCA1M2RjMmViLi42MjY0ODMyIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvZHNwdXRpbC5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9kc3B1dGlsLmMKLUBAIC0xOTEyLDcgKzE5MTIsNyBAQCB2b2lkIGZmX3NldF9jbXAoRFNQQ29udGV4dCogYywgbWVfY21wX2Z1bmMgKmNtcCwgaW50IHR5cGUpewotIAotIHN0YXRpYyB2b2lkIGFkZF9ieXRlc19jKHVpbnQ4X3QgKmRzdCwgdWludDhfdCAqc3JjLCBpbnQgdyl7Ci0gICAgIGxvbmcgaTsKLS0gICAgZm9yKGk9MDsgaTw9dy1zaXplb2YobG9uZyk7IGkrPXNpemVvZihsb25nKSl7Ci0rICAgIGZvcihpPTA7IGk8PXctKGludClzaXplb2YobG9uZyk7IGkrPXNpemVvZihsb25nKSl7Ci0gICAgICAgICBsb25nIGEgPSAqKGxvbmcqKShzcmMraSk7Ci0gICAgICAgICBsb25nIGIgPSAqKGxvbmcqKShkc3QraSk7Ci0gICAgICAgICAqKGxvbmcqKShkc3QraSkgPSAoKGEmcGJfN2YpICsgKGImcGJfN2YpKSBeICgoYV5iKSZwYl84MCk7Ci1AQCAtMTkzNyw3ICsxOTM3LDcgQEAgc3RhdGljIHZvaWQgZGlmZl9ieXRlc19jKHVpbnQ4X3QgKmRzdCwgdWludDhfdCAqc3JjMSwgdWludDhfdCAqc3JjMiwgaW50IHcpewotICAgICAgICAgfQotICAgICB9ZWxzZQotICNlbmRpZgotLSAgICBmb3IoaT0wOyBpPD13LXNpemVvZihsb25nKTsgaSs9c2l6ZW9mKGxvbmcpKXsKLSsgICAgZm9yKGk9MDsgaTw9dy0oaW50KXNpemVvZihsb25nKTsgaSs9c2l6ZW9mKGxvbmcpKXsKLSAgICAgICAgIGxvbmcgYSA9ICoobG9uZyopKHNyYzEraSk7Ci0gICAgICAgICBsb25nIGIgPSAqKGxvbmcqKShzcmMyK2kpOwotICAgICAgICAgKihsb25nKikoZHN0K2kpID0gKChhfHBiXzgwKSAtIChiJnBiXzdmKSkgXiAoKGFeYl5wYl84MCkmcGJfODApOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLW1zcmxlLXVzZS1hdl9pbWFnZV9nZXRfbGluZXNpemUtdG8tY2FsY3VsYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtbXNybGUtdXNlLWF2X2ltYWdlX2dldF9saW5lc2l6ZS10by1jYWxjdWxhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYTNmYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtbXNybGUtdXNlLWF2X2ltYWdlX2dldF9saW5lc2l6ZS10by1jYWxjdWxhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDU3M2Q1ZmRlZGFlNzJiZjU5ZDhjMGIwNzY2ZmRlZTE3MTA2M2QzNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogU3VuLCAxNiBGZWIgMjAxNCAyMzowODo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL21zcmxlOiB1c2UgYXZfaW1hZ2VfZ2V0X2xpbmVzaXplKCkgdG8gY2FsY3VsYXRlIHRoZQotIGxpbmVzaXplCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IDU3M2Q1ZmRlZGFlNzJiZjU5ZDhjMGIwNzY2ZmRlZTE3MTA2M2QzNmYgcmVsZWFzZS8wLjkKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2VzcwotRml4ZXM6IDE0YTc0YTBhMmRjNjdlZGU1NDNmMGUzNWQ4MzRmYmJlLWFzYW5faGVhcC1vb2JfNDk1NzJjXzU1Nl9jb3ZfMjE1NDY2NDQ0XzQ0XzAwMV9lbmdpbmVfcm9vbS5tb3YKLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGM5MTllMWNhMmVjZmM0N2Q3OTYzODI5NzNiYTBlNDhiOGY2ZjkyYTIpCi0KLUNvbmZsaWN0czoKLQotCWxpYmF2Y29kZWMvbXNybGUuYwotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYmMxYzhlYzVlNjUwOThmZDJjY2Q4NDU2ZjY2NzE1MWRmYzljZGE0MikKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvbXNybGUuYyB8ICAgIDMgKystCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21zcmxlLmMgYi9saWJhdmNvZGVjL21zcmxlLmMKLWluZGV4IDMwMTU5YmIuLmMzOWFlN2IgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tc3JsZS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tc3JsZS5jCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNsdWRlICJhdmNvZGVjLmgiCi0gI2luY2x1ZGUgImRzcHV0aWwuaCIKLSAjaW5jbHVkZSAibXNybGVkZWMuaCIKLSsjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgTXNybGVDb250ZXh0IHsKLSAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4OwotQEAgLTEwNyw3ICsxMDgsNyBAQCBzdGF0aWMgaW50IG1zcmxlX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gCi0gICAgIC8qIEZJWE1FIGhvdyB0byBjb3JyZWN0bHkgZGV0ZWN0IFJMRSA/Pz8gKi8KLSAgICAgaWYgKGF2Y3R4LT5oZWlnaHQgKiBpc3RyaWRlID09IGF2cGt0LT5zaXplKSB7IC8qIGFzc3VtZSB1bmNvbXByZXNzZWQgKi8KLS0gICAgICAgIGludCBsaW5lc2l6ZSA9IGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgLyA4OwotKyAgICAgICAgaW50IGxpbmVzaXplID0gYXZfaW1hZ2VfZ2V0X2xpbmVzaXplKGF2Y3R4LT5waXhfZm10LCBhdmN0eC0+d2lkdGgsIDApOwotICAgICAgICAgdWludDhfdCAqcHRyID0gcy0+ZnJhbWUuZGF0YVswXTsKLSAgICAgICAgIHVpbnQ4X3QgKmJ1ZiA9IGF2cGt0LT5kYXRhICsgKGF2Y3R4LT5oZWlnaHQtMSkqaXN0cmlkZTsKLSAgICAgICAgIGludCBpLCBqOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXBhcnNlci1yZXNldC1pbmRleGVzLW9uLXJlYWxsb2MtZmFpbHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXBhcnNlci1yZXNldC1pbmRleGVzLW9uLXJlYWxsb2MtZmFpbHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmNjU4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1wYXJzZXItcmVzZXQtaW5kZXhlcy1vbi1yZWFsbG9jLWZhaWx1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1nc3QtZmZtcGVnOiBhdmNvZGVjL3BhcnNlcjogcmVzZXQgaW5kZXhlcyBvbiByZWFsbG9jIGZhaWx1cmUKLQotRml4ZXMgVGlja2V0Mjk4MgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZjMxMDExZTlhYmZiMmFlNzViYjMyYmM0NGUyYzM0MTk0YzhkYzQwYSkKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJhdmNvZGVjL3BhcnNlci5jIHwgICAxMCArKysrKysrLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3BhcnNlci5jIGIvbGliYXZjb2RlYy9wYXJzZXIuYwotaW5kZXggMmM2ZGU2ZS4uNjZlY2EwNiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3BhcnNlci5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wYXJzZXIuYwotQEAgLTI0MSw4ICsyNDEsMTAgQEAgaW50IGZmX2NvbWJpbmVfZnJhbWUoUGFyc2VDb250ZXh0ICpwYywgaW50IG5leHQsIGNvbnN0IHVpbnQ4X3QgKipidWYsIGludCAqYnVmX3MKLSAgICAgaWYobmV4dCA9PSBFTkRfTk9UX0ZPVU5EKXsKLSAgICAgICAgIHZvaWQqIG5ld19idWZmZXIgPSBhdl9mYXN0X3JlYWxsb2MocGMtPmJ1ZmZlciwgJnBjLT5idWZmZXJfc2l6ZSwgKCpidWZfc2l6ZSkgKyBwYy0+aW5kZXggKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLSAKLS0gICAgICAgIGlmKCFuZXdfYnVmZmVyKQotKyAgICAgICAgaWYoIW5ld19idWZmZXIpIHsKLSsgICAgICAgICAgICBwYy0+aW5kZXggPSAwOwotICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBwYy0+YnVmZmVyID0gbmV3X2J1ZmZlcjsKLSAgICAgICAgIG1lbWNweSgmcGMtPmJ1ZmZlcltwYy0+aW5kZXhdLCAqYnVmLCAqYnVmX3NpemUpOwotICAgICAgICAgcGMtPmluZGV4ICs9ICpidWZfc2l6ZTsKLUBAIC0yNTUsOSArMjU3LDExIEBAIGludCBmZl9jb21iaW5lX2ZyYW1lKFBhcnNlQ29udGV4dCAqcGMsIGludCBuZXh0LCBjb25zdCB1aW50OF90ICoqYnVmLCBpbnQgKmJ1Zl9zCi0gICAgIC8qIGFwcGVuZCB0byBidWZmZXIgKi8KLSAgICAgaWYocGMtPmluZGV4KXsKLSAgICAgICAgIHZvaWQqIG5ld19idWZmZXIgPSBhdl9mYXN0X3JlYWxsb2MocGMtPmJ1ZmZlciwgJnBjLT5idWZmZXJfc2l6ZSwgbmV4dCArIHBjLT5pbmRleCArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotLQotLSAgICAgICAgaWYoIW5ld19idWZmZXIpCi0rICAgICAgICBpZighbmV3X2J1ZmZlcikgewotKyAgICAgICAgICAgIHBjLT5vdmVycmVhZF9pbmRleCA9Ci0rICAgICAgICAgICAgcGMtPmluZGV4ID0gMDsKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotKyAgICAgICAgfQotICAgICAgICAgcGMtPmJ1ZmZlciA9IG5ld19idWZmZXI7Ci0gICAgICAgICBpZiAobmV4dCA+IC1GRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKQotICAgICAgICAgICAgIG1lbWNweSgmcGMtPmJ1ZmZlcltwYy0+aW5kZXhdLCAqYnVmLAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXJwemEtUGVyZm9ybS1wb2ludGVyLWFkdmFuY2UtYW5kLWNoZWNrcy1iZWZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtcnB6YS1QZXJmb3JtLXBvaW50ZXItYWR2YW5jZS1hbmQtY2hlY2tzLWJlZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNmViNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtcnB6YS1QZXJmb3JtLXBvaW50ZXItYWR2YW5jZS1hbmQtY2hlY2tzLWJlZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1nc3QtZmZtcGVnOiBhdmNvZGVjL3JwemE6IFBlcmZvcm0gcG9pbnRlciBhZHZhbmNlIGFuZCBjaGVja3MgYmVmb3JlCi0gdXNpbmcgdGhlIHBvaW50ZXJzCi0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3NlcwotRml4ZXMgVGlja2V0Mjg1MAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMzgxOWRiNzQ1ZGEyYWM3ZmIzZmFhY2IxMTY3ODhjMzJmNDc1M2YzNCkKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2luZ2VkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJhdmNvZGVjL3JwemEuYyB8ICAgIDggKysrKy0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcnB6YS5jIGIvbGliYXZjb2RlYy9ycHphLmMKLWluZGV4IDYzNWI0MDYuLmYyOTFhOTUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9ycHphLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3JwemEuYwotQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgcnB6YV9kZWNvZGVfc3RyZWFtKFJwemFDb250ZXh0ICpzKQotICAgICB1bnNpZ25lZCBzaG9ydCAqcGl4ZWxzID0gKHVuc2lnbmVkIHNob3J0ICopcy0+ZnJhbWUuZGF0YVswXTsKLSAKLSAgICAgaW50IHJvd19wdHIgPSAwOwotLSAgICBpbnQgcGl4ZWxfcHRyID0gMDsKLSsgICAgaW50IHBpeGVsX3B0ciA9IC00OwotICAgICBpbnQgYmxvY2tfcHRyOwotICAgICBpbnQgcGl4ZWxfeCwgcGl4ZWxfeTsKLSAgICAgaW50IHRvdGFsX2Jsb2NrczsKLUBAIC0xMzksNiArMTM5LDcgQEAgc3RhdGljIHZvaWQgcnB6YV9kZWNvZGVfc3RyZWFtKFJwemFDb250ZXh0ICpzKQotICAgICAgICAgICAgIGNvbG9yQSA9IEFWX1JCMTYgKCZzLT5idWZbc3RyZWFtX3B0cl0pOwotICAgICAgICAgICAgIHN0cmVhbV9wdHIgKz0gMjsKLSAgICAgICAgICAgICB3aGlsZSAobl9ibG9ja3MtLSkgewotKyAgICAgICAgICAgICAgICBBRFZBTkNFX0JMT0NLKCkKLSAgICAgICAgICAgICAgICAgYmxvY2tfcHRyID0gcm93X3B0ciArIHBpeGVsX3B0cjsKLSAgICAgICAgICAgICAgICAgZm9yIChwaXhlbF95ID0gMDsgcGl4ZWxfeSA8IDQ7IHBpeGVsX3krKykgewotICAgICAgICAgICAgICAgICAgICAgZm9yIChwaXhlbF94ID0gMDsgcGl4ZWxfeCA8IDQ7IHBpeGVsX3grKyl7Ci1AQCAtMTQ3LDcgKzE0OCw2IEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3B0ciArPSByb3dfaW5jOwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIEFEVkFOQ0VfQkxPQ0soKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gCi1AQCAtMTg0LDYgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgICAgICAgICBjb2xvcjRbMl0gfD0gKCgyMSAqIHRhICsgMTEgKiB0YikgPj4gNSk7Ci0gCi0gICAgICAgICAgICAgd2hpbGUgKG5fYmxvY2tzLS0pIHsKLSsgICAgICAgICAgICAgICAgQURWQU5DRV9CTE9DSygpOwotICAgICAgICAgICAgICAgICBibG9ja19wdHIgPSByb3dfcHRyICsgcGl4ZWxfcHRyOwotICAgICAgICAgICAgICAgICBmb3IgKHBpeGVsX3kgPSAwOyBwaXhlbF95IDwgNDsgcGl4ZWxfeSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHMtPmJ1ZltzdHJlYW1fcHRyKytdOwotQEAgLTE5NCwxMiArMTk1LDEyIEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3B0ciArPSByb3dfaW5jOwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIEFEVkFOQ0VfQkxPQ0soKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKiBGaWxsIGJsb2NrIHdpdGggMTYgY29sb3JzICovCi0gICAgICAgICBjYXNlIDB4MDA6Ci0rICAgICAgICAgICAgQURWQU5DRV9CTE9DSygpOwotICAgICAgICAgICAgIGJsb2NrX3B0ciA9IHJvd19wdHIgKyBwaXhlbF9wdHI7Ci0gICAgICAgICAgICAgZm9yIChwaXhlbF95ID0gMDsgcGl4ZWxfeSA8IDQ7IHBpeGVsX3krKykgewotICAgICAgICAgICAgICAgICBmb3IgKHBpeGVsX3ggPSAwOyBwaXhlbF94IDwgNDsgcGl4ZWxfeCsrKXsKLUBAIC0yMTMsNyArMjE0LDYgQEAgc3RhdGljIHZvaWQgcnB6YV9kZWNvZGVfc3RyZWFtKFJwemFDb250ZXh0ICpzKQotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGJsb2NrX3B0ciArPSByb3dfaW5jOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBBRFZBTkNFX0JMT0NLKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKiBVbmtub3duIG9wY29kZSAqLwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXNtYy1maXgtb2ZmLWJ5LTEtZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1zbWMtZml4LW9mZi1ieS0xLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2E2ZmM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXNtYy1maXgtb2ZmLWJ5LTEtZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGMxN2EwYWQxZGYxNWE5NGQwYjEyMzlhZGMyYWZiNTkzYmRmMGExNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDIyOjUwOjQ1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBhdmNvZGVjL3NtYzogZml4IG9mZiBieSAxIGVycm9yCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2VzcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfMTY4NWJmMF81X2FzYW5faGVhcC1vb2JfMWYzNTExNl80MzBfc21jLm1vdgotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL3NtYy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvc21jLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9zbWMuYwotaW5kZXggM2NkNWU1My4uZGVjOWY3MSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3NtYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9zbWMuYwotQEAgLTY5LDcgKzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU21jQ29udGV4dCB7Ci0gICAgICAgICByb3dfcHRyICs9IHN0cmlkZSAqIDQ7IFwKLSAgICAgfSBcCi0gICAgIHRvdGFsX2Jsb2Nrcy0tOyBcCi0tICAgIGlmICh0b3RhbF9ibG9ja3MgPCAwKSBcCi0rICAgIGlmICh0b3RhbF9ibG9ja3MgPCAwICsgISFuX2Jsb2NrcykgXAotICAgICB7IFwKLSAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0lORk8sICJ3YXJuaW5nOiBibG9jayBjb3VudGVyIGp1c3Qgd2VudCBuZWdhdGl2ZSAodGhpcyBzaG91bGQgbm90IGhhcHBlbilcbiIpOyBcCi0gICAgICAgICByZXR1cm47IFwKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Zm9ybWF0LW1wZWd0c2VuYy1DaGVjay1kYXRhLWFycmF5LXNpemUtaW4tbXBlZ3RzX3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZmb3JtYXQtbXBlZ3RzZW5jLUNoZWNrLWRhdGEtYXJyYXktc2l6ZS1pbi1tcGVndHNfdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiYjY2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZmb3JtYXQtbXBlZ3RzZW5jLUNoZWNrLWRhdGEtYXJyYXktc2l6ZS1pbi1tcGVndHNfdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gMTI3NzA3MDE4NTZhMDViNmIzY2Q3MDZmNzA4ZjhlOWE0ZThhMTMzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBUaHUsIDEzIEZlYiAyMDE0IDEzOjU5OjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L21wZWd0c2VuYzogQ2hlY2sgZGF0YSBhcnJheSBzaXplIGluCi0gbXBlZ3RzX3dyaXRlX3BtdCgpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ09tbWl0IDEyNzcwNzAxODU2YTA1YjZiM2NkNzA2ZjcwOGY4ZTlhNGU4YTEzMzYgcmVsZWFzZS8wLjExCi0KLVByZXZlbnRzIG91dCBvZiBhcnJheSB3cml0ZXMKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDg0MmI2YzE0YmNmYzFjNWRhMWEyZDI4OGZkNjUzODZlYjhjMTU4YWQpCi0KLUNvbmZsaWN0czoKLQotCWxpYmF2Zm9ybWF0L21wZWd0c2VuYy5jCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBlODdkZTNmNTBiNzY1MTM0NTg4ZDBiMDQ4YzMyZWQ0YjhhY2MxNmZiKQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZmb3JtYXQvbXBlZ3RzZW5jLmMgfCAgICA5ICsrKysrKystLQotIDEgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXBlZ3RzZW5jLmMgYi9saWJhdmZvcm1hdC9tcGVndHNlbmMuYwotaW5kZXggNzkzZTIwNS4uYTEyZDE5ZiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tcGVndHNlbmMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Zm9ybWF0L21wZWd0c2VuYy5jCi1AQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIG1wZWd0c193cml0ZV9wYXQoQVZGb3JtYXRDb250ZXh0ICpzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgcSAtIGRhdGEpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBtcGVndHNfd3JpdGVfcG10KEFWRm9ybWF0Q29udGV4dCAqcywgTXBlZ1RTU2VydmljZSAqc2VydmljZSkKLStzdGF0aWMgaW50IG1wZWd0c193cml0ZV9wbXQoQVZGb3JtYXRDb250ZXh0ICpzLCBNcGVnVFNTZXJ2aWNlICpzZXJ2aWNlKQotIHsKLSAgICAgLy8gICAgTXBlZ1RTV3JpdGUgKnRzID0gcy0+cHJpdl9kYXRhOwotICAgICB1aW50OF90IGRhdGFbMTAxMl0sICpxLCAqZGVzY19sZW5ndGhfcHRyLCAqcHJvZ3JhbV9pbmZvX2xlbmd0aF9wdHI7Ci1AQCAtMjkzLDYgKzI5MywxMCBAQCBzdGF0aWMgdm9pZCBtcGVndHNfd3JpdGVfcG10KEFWRm9ybWF0Q29udGV4dCAqcywgTXBlZ1RTU2VydmljZSAqc2VydmljZSkKLSAgICAgICAgICAgICBzdHJlYW1fdHlwZSA9IFNUUkVBTV9UWVBFX1BSSVZBVEVfREFUQTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChxIC0gZGF0YSA+IHNpemVvZihkYXRhKSAtIDMyKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0rCi0gICAgICAgICAqcSsrID0gc3RyZWFtX3R5cGU7Ci0gICAgICAgICBwdXQxNigmcSwgMHhlMDAwIHwgdHNfc3QtPnBpZCk7Ci0gICAgICAgICBkZXNjX2xlbmd0aF9wdHIgPSBxOwotQEAgLTMyNCw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBtcGVndHNfd3JpdGVfcG10KEFWRm9ybWF0Q29udGV4dCAqcywgTXBlZ1RTU2VydmljZSAqc2VydmljZSkKLSAgICAgICAgICAgICAgICAgbGVuX3B0ciA9IHErKzsKLSAgICAgICAgICAgICAgICAgKmxlbl9wdHIgPSAwOwotIAotLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBsYW5nLT52YWx1ZTsgbmV4dCAmJiAqbGVuX3B0ciA8IDI1NSAvIDQgKiA0OyBwID0gbmV4dCArIDEpIHsKLSsgICAgICAgICAgICAgICAgZm9yIChwID0gbGFuZy0+dmFsdWU7IG5leHQgJiYgKmxlbl9wdHIgPCAyNTUgLyA0ICogNCAmJiBxIC0gZGF0YSA8IHNpemVvZihkYXRhKSAtIDQ7IHAgPSBuZXh0ICsgMSkgewotICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHN0cmNocihwLCAnLCcpOwotICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmxlbihwKSAhPSAzICYmICghbmV4dCB8fCBuZXh0ICE9IHAgKyAzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogbm90IGEgMy1sZXR0ZXIgY29kZSAqLwotQEAgLTM4Niw2ICszOTAsNyBAQCBzdGF0aWMgdm9pZCBtcGVndHNfd3JpdGVfcG10KEFWRm9ybWF0Q29udGV4dCAqcywgTXBlZ1RTU2VydmljZSAqc2VydmljZSkKLSAgICAgfQotICAgICBtcGVndHNfd3JpdGVfc2VjdGlvbjEoJnNlcnZpY2UtPnBtdCwgUE1UX1RJRCwgc2VydmljZS0+c2lkLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgcSAtIGRhdGEpOwotKyAgICByZXR1cm4gMDsKLSB9Ci0gCi0gLyogTk9URTogc3RyID09IE5VTEwgaXMgYWNjZXB0ZWQgZm9yIGFuIGVtcHR5IHN0cmluZyAqLwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lYW1hZC1maXgtb3V0LW9mLWFycmF5LWFjY2Vzc2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVhbWFkLWZpeC1vdXQtb2YtYXJyYXktYWNjZXNzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NWUzZmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVhbWFkLWZpeC1vdXQtb2YtYXJyYXktYWNjZXNzZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDYzYWM2NDg2NGM2ZTBlODQzNTVhYTNjYWE1YjkyMjA4OTk3YTlhOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogU2F0LCAxNyBOb3YgMjAxMiAxNjoyNjo1NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBlYW1hZDogZml4IG91dCBvZiBhcnJheSBhY2Nlc3NlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCA2M2FjNjQ4NjRjNmUwZTg0MzU1YWEzY2FhNWI5MjIwODk5N2E5YThkIHJlbGVhc2UvMS4xCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvZWFtYWQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZWFtYWQuYyBiL2xpYmF2Y29kZWMvZWFtYWQuYwotaW5kZXggMjgwNTE5NS4uZTM4NjUwZSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2VhbWFkLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2VhbWFkLmMKLUBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIGludCBkZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICBpbnQgY2h1bmtfdHlwZTsKLSAgICAgaW50IGludGVyOwotIAotLSAgICBpZiAoYnVmX3NpemUgPCAxNykgewotKyAgICBpZiAoYnVmX3NpemUgPCAyNikgewotICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnB1dCBidWZmZXIgdG9vIHNtYWxsXG4iKTsKLSAgICAgICAgICpkYXRhX3NpemUgPSAwOwotICAgICAgICAgcmV0dXJuIC0xOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZXJyb3ItY29uY2VhbG1lbnQtaW5pdGlhbGl6ZS1ibG9jay1pbmRleC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lcnJvci1jb25jZWFsbWVudC1pbml0aWFsaXplLWJsb2NrLWluZGV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGU0MjM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lcnJvci1jb25jZWFsbWVudC1pbml0aWFsaXplLWJsb2NrLWluZGV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotZ3N0LWZmbXBlZzogZXJyb3IgY29uY2VhbG1lbnQ6IGluaXRpYWxpemUgYmxvY2sgaW5kZXguCi0KLUZpeGVzIENWRS0yMDExLTM5NDEgKG91dCBvZiBib3VuZHMgd3JpdGUpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jIHwgICAgMyArKysKLSAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jIGIvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLWluZGV4IDhiYjVkMGMuLmQ1NWMwMDAgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYwotQEAgLTQ1LDYgKzQ1LDkgQEAgc3RhdGljIHZvaWQgZGVjb2RlX21iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgcmVmKXsKLSAgICAgcy0+ZGVzdFsxXSA9IHMtPmN1cnJlbnRfcGljdHVyZS5kYXRhWzFdICsgKHMtPm1iX3kgKiAoMTY+PnMtPmNocm9tYV95X3NoaWZ0KSAqIHMtPnV2bGluZXNpemUpICsgcy0+bWJfeCAqICgxNj4+cy0+Y2hyb21hX3hfc2hpZnQpOwotICAgICBzLT5kZXN0WzJdID0gcy0+Y3VycmVudF9waWN0dXJlLmRhdGFbMl0gKyAocy0+bWJfeSAqICgxNj4+cy0+Y2hyb21hX3lfc2hpZnQpICogcy0+dXZsaW5lc2l6ZSkgKyBzLT5tYl94ICogKDE2Pj5zLT5jaHJvbWFfeF9zaGlmdCk7Ci0gCi0rICAgIGZmX2luaXRfYmxvY2tfaW5kZXgocyk7Ci0rICAgIGZmX3VwZGF0ZV9ibG9ja19pbmRleChzKTsKLSsKLSAgICAgaWYoQ09ORklHX0gyNjRfREVDT0RFUiAmJiBzLT5jb2RlY19pZCA9PSBDT0RFQ19JRF9IMjY0KXsKLSAgICAgICAgIEgyNjRDb250ZXh0ICpoPSAodm9pZCopczsKLSAgICAgICAgIGgtPm1iX3h5PSBzLT5tYl94ICsgcy0+bWJfeSpzLT5tYl9zdHJpZGU7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVycm9yX2NvbmNlYWxtZW50LUNoZWNrLXRoYXQtdGhlLXBpY3R1cmUtaXMtbm90LWluLWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZXJyb3JfY29uY2VhbG1lbnQtQ2hlY2stdGhhdC10aGUtcGljdHVyZS1pcy1ub3QtaW4tYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVlZjZlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZXJyb3JfY29uY2VhbG1lbnQtQ2hlY2stdGhhdC10aGUtcGljdHVyZS1pcy1ub3QtaW4tYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWdzdC1mZm1wZWc6IGVycm9yX2NvbmNlYWxtZW50OiBDaGVjayB0aGF0IHRoZSBwaWN0dXJlIGlzIG5vdCBpbiBhIGhhbGYKLQotRml4ZXMgc3RhdGUgYmVjb21pbmcgaW5jb25zaXN0ZW50Ci1GaXhlcyBhIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZQotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyMzMxOGE1NzM1ODM1OGU3YTRkYzU1MWU4MzBlNDUwM2YwNjM4Y2ZlKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jIHwgICAgNiArKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jIGIvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLWluZGV4IDAxZjc0MjQuLjJiNmJjNDIgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYwotQEAgLTc5Myw2ICs3OTMsMTIgQEAgdm9pZCBmZl9lcl9mcmFtZV9lbmQoTXBlZ0VuY0NvbnRleHQgKnMpewotICAgICAgICBzLT5waWN0dXJlX3N0cnVjdHVyZSAhPSBQSUNUX0ZSQU1FIHx8IC8vIHdlIGRvbnQgc3VwcG9ydCBFUiBvZiBmaWVsZCBwaWN0dXJlcyB5ZXQsIHRob3VnaCBpdCBzaG91bGQgbm90IGNyYXNoIGlmIGVuYWJsZWQKLSAgICAgICAgcy0+ZXJyb3JfY291bnQ9PTMqcy0+bWJfd2lkdGgqKHMtPmF2Y3R4LT5za2lwX3RvcCArIHMtPmF2Y3R4LT5za2lwX2JvdHRvbSkpIHJldHVybjsKLSAKLSsgICAgaWYgKCAgIHMtPnBpY3R1cmVfc3RydWN0dXJlID09IFBJQ1RfRlJBTUUKLSsgICAgICAgICYmIHMtPmN1cnJlbnRfcGljdHVyZS5saW5lc2l6ZVswXSAhPSBzLT5jdXJyZW50X3BpY3R1cmVfcHRyLT5saW5lc2l6ZVswXSkgewotKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJFcnJvciBjb25jZWFsbWVudCBub3QgcG9zc2libGUsIGZyYW1lIG5vdCBmdWxseSBpbml0aWFsaXplZFxuIik7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgICAgaWYocy0+Y3VycmVudF9waWN0dXJlLm1vdGlvbl92YWxbMF0gPT0gTlVMTCl7Ci0gICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIldhcm5pbmcgTVZzIG5vdCBhdmFpbGFibGVcbiIpOwotIAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1mZnNlcnZlci1zZXQtb2Zvcm1hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1mZnNlcnZlci1zZXQtb2Zvcm1hdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzMjVkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZmZzZXJ2ZXItc2V0LW9mb3JtYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1nc3QtZmZtcGVnOiBmZnNlcnZlcjogc2V0IG9mb3JtYXQKLQotRml4IFRpY2tldDE5ODYKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGNiZTQzZTYyYzlhYzdkNGFlZmRjMTM0NzZmNmY2OTFiZDYyNjUyNWYpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLS0tLQotIGZmc2VydmVyLmMgfCAgICA0ICsrKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Zmc2VydmVyLmMgYi9mZnNlcnZlci5jCi1pbmRleCA0MDQ0ZDBmLi44NzQwMTQwIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2Zmc2VydmVyLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9mZnNlcnZlci5jCi1AQCAtMjkzNywxMiArMjkzNywxNCBAQCBzdGF0aWMgaW50IHByZXBhcmVfc2RwX2Rlc2NyaXB0aW9uKEZGU3RyZWFtICpzdHJlYW0sIHVpbnQ4X3QgKipwYnVmZmVyLAotIHsKLSAgICAgQVZGb3JtYXRDb250ZXh0ICphdmM7Ci0gICAgIEFWU3RyZWFtICphdnMgPSBOVUxMOwotKyAgICBBVk91dHB1dEZvcm1hdCAqcnRwX2Zvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgicnRwIiwgTlVMTCwgTlVMTCk7Ci0gICAgIGludCBpOwotIAotICAgICBhdmMgPSAgYXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOwotLSAgICBpZiAoYXZjID09IE5VTEwpIHsKLSsgICAgaWYgKGF2YyA9PSBOVUxMIHx8ICFydHBfZm9ybWF0KSB7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSsgICAgYXZjLT5vZm9ybWF0ID0gcnRwX2Zvcm1hdDsKLSAgICAgYXZfZGljdF9zZXQoJmF2Yy0+bWV0YWRhdGEsICJ0aXRsZSIsCi0gICAgICAgICAgICAgICAgc3RyZWFtLT50aXRsZVswXSA/IHN0cmVhbS0+dGl0bGUgOiAiTm8gVGl0bGUiLCAwKTsKLSAgICAgYXZjLT5uYl9zdHJlYW1zID0gc3RyZWFtLT5uYl9zdHJlYW1zOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LWNvcnJlY3QtcmVmLWNvdW50LWNoZWNrLWFuZC1saW1pdC1maXgtb3V0LW9mLWFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtY29ycmVjdC1yZWYtY291bnQtY2hlY2stYW5kLWxpbWl0LWZpeC1vdXQtb2YtYXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZjU1YjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtY29ycmVjdC1yZWYtY291bnQtY2hlY2stYW5kLWxpbWl0LWZpeC1vdXQtb2YtYXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGQ2YzE4NDg4MGVlMmUwOWZkNjhjMGFlMjE3MTczODMyY2VlNWFmYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogU3VuLCAxOCBOb3YgMjAxMiAxNjoyOTowNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBoMjY0OiBjb3JyZWN0IHJlZiBjb3VudCBjaGVjayBhbmQgbGltaXQsIGZpeCBvdXQgb2YgYXJyYXkKLSBhY2Nlc3Nlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL2gyNjQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2NC5jIGIvbGliYXZjb2RlYy9oMjY0LmMKLWluZGV4IGRhNDNmMWUuLjMyY2VkZTUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuYwotQEAgLTI4NzAsNiArMjg3MCw5IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3NsaWNlX2hlYWRlcihIMjY0Q29udGUKLSAgICAgICAgICAgICBoLT5yZWZfY291bnRbMF09IGdldF91ZV9nb2xvbWIoJnMtPmdiKSArIDE7Ci0gICAgICAgICAgICAgaWYoaC0+c2xpY2VfdHlwZV9ub3M9PUFWX1BJQ1RVUkVfVFlQRV9CKQotICAgICAgICAgICAgICAgICBoLT5yZWZfY291bnRbMV09IGdldF91ZV9nb2xvbWIoJnMtPmdiKSArIDE7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAvLyBmdWxsIHJhbmdlIGlzIHNwZWMtb2sgaW4gdGhpcyBjYXNlLCBldmVuIGZvciBmcmFtZXMKLSsgICAgICAgICAgICAgICAgaC0+cmVmX2NvdW50WzFdID0gMTsKLSAKLSAgICAgICAgICAgICBpZihoLT5yZWZfY291bnRbMF0tMSA+IDMyLTEgfHwgaC0+cmVmX2NvdW50WzFdLTEgPiAzMi0xKXsKLSAgICAgICAgICAgICAgICAgYXZfbG9nKGgtPnMuYXZjdHgsIEFWX0xPR19FUlJPUiwgInJlZmVyZW5jZSBvdmVyZmxvd1xuIik7Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LXNldC1wYXJhbWV0ZXJzLWZyb20tU1BTLXdoZW5ldmVyLWl0LWNoYW5nZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1zZXQtcGFyYW1ldGVycy1mcm9tLVNQUy13aGVuZXZlci1pdC1jaGFuZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWE5ZGUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LXNldC1wYXJhbWV0ZXJzLWZyb20tU1BTLXdoZW5ldmVyLWl0LWNoYW5nZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotZ3N0LWZmbXBlZzogaDI2NDogc2V0IHBhcmFtZXRlcnMgZnJvbSBTUFMgd2hlbmV2ZXIgaXQgY2hhbmdlcwotICAgIAotRml4ZXMgYSBjcmFzaCBpbiB0aGUgZnV6emVkIHNhbXBsZSBzYW1wbGVfdmFyUEFSLmF2aV9zMjY2Mzggd2l0aAotYWx0ZXJuYXRpbmcgYml0IGRlcHRocy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmMub2xkIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jCi1pbmRleCAzNjIxZjQxLi43MTg5MDZhIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jLm9sZAotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jCi1AQCAtMjQ5MSw2ICsyNDkxLDM0IEBAIGludCBmZl9oMjY0X2dldF9wcm9maWxlKFNQUyAqc3BzKQotICAgICByZXR1cm4gcHJvZmlsZTsKLSB9Ci0gCi0rc3RhdGljIGludCBoMjY0X3NldF9wYXJhbWV0ZXJfZnJvbV9zcHMoSDI2NENvbnRleHQgKmgpCi0rewotKyAgICBNcGVnRW5jQ29udGV4dCAqcyA9ICZoLT5zOwotKyAgICBBVkNvZGVjQ29udGV4dCAqIGF2Y3R4PSBzLT5hdmN0eDsKLSsKLSsgICAgaWYgKHMtPmZsYWdzJiBDT0RFQ19GTEFHX0xPV19ERUxBWSB8fAotKyAgICAgICAgKGgtPnNwcy5iaXRzdHJlYW1fcmVzdHJpY3Rpb25fZmxhZyAmJiAhaC0+c3BzLm51bV9yZW9yZGVyX2ZyYW1lcykpCi0rICAgICAgICBzLT5sb3dfZGVsYXk9MTsKLSsKLSsgICAgaWYoYXZjdHgtPmhhc19iX2ZyYW1lcyA8IDIpCi0rICAgICAgICBhdmN0eC0+aGFzX2JfZnJhbWVzPSAhcy0+bG93X2RlbGF5OwotKwotKyAgICBpZiAoYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgIT0gaC0+c3BzLmJpdF9kZXB0aF9sdW1hKSB7Ci0rICAgICAgICBpZiAoaC0+c3BzLmJpdF9kZXB0aF9sdW1hID49IDggJiYgaC0+c3BzLmJpdF9kZXB0aF9sdW1hIDw9IDEwKSB7Ci0rICAgICAgICAgICAgYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgPSBoLT5zcHMuYml0X2RlcHRoX2x1bWE7Ci0rICAgICAgICAgICAgaC0+cGl4ZWxfc2hpZnQgPSBoLT5zcHMuYml0X2RlcHRoX2x1bWEgPiA4OwotKwotKyAgICAgICAgICAgIGZmX2gyNjRkc3BfaW5pdCgmaC0+aDI2NGRzcCwgaC0+c3BzLmJpdF9kZXB0aF9sdW1hKTsKLSsgICAgICAgICAgICBmZl9oMjY0X3ByZWRfaW5pdCgmaC0+aHBjLCBzLT5jb2RlY19pZCwgaC0+c3BzLmJpdF9kZXB0aF9sdW1hKTsKLSsgICAgICAgICAgICBkc3B1dGlsX2luaXQoJnMtPmRzcCwgcy0+YXZjdHgpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlVuc3VwcG9ydGVkIGJpdCBkZXB0aDogJWRcbiIsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiAwOwotK30KLSsKLSAvKioKLSAgKiBkZWNvZGVzIGEgc2xpY2UgaGVhZGVyLgotICAqIFRoaXMgd2lsbCBhbHNvIGNhbGwgTVBWX2NvbW1vbl9pbml0KCkgYW5kIGZyYW1lX3N0YXJ0KCkgYXMgbmVlZGVkLgotQEAgLTI1MDUsNyArMjUzMyw3IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3NsaWNlX2hlYWRlcihIMjY0Q29udGV4dCAqaCwgSDI2NENvbnRleHQgKmgwKXsKLSAgICAgTXBlZ0VuY0NvbnRleHQgKiBjb25zdCBzMCA9ICZoMC0+czsKLSAgICAgdW5zaWduZWQgaW50IGZpcnN0X21iX2luX3NsaWNlOwotICAgICB1bnNpZ25lZCBpbnQgcHBzX2lkOwotLSAgICBpbnQgbnVtX3JlZl9pZHhfYWN0aXZlX292ZXJyaWRlX2ZsYWc7Ci0rICAgIGludCBudW1fcmVmX2lkeF9hY3RpdmVfb3ZlcnJpZGVfZmxhZywgcmV0OwotICAgICB1bnNpZ25lZCBpbnQgc2xpY2VfdHlwZSwgdG1wLCBpLCBqOwotICAgICBpbnQgZGVmYXVsdF9yZWZfbGlzdF9kb25lID0gMDsKLSAgICAgaW50IGxhc3RfcGljX3N0cnVjdHVyZTsKLUBAIC0yNTY5LDcgKzI1OTcsMTcgQEAgc3RhdGljIGludCBkZWNvZGVfc2xpY2VfaGVhZGVyKEgyNjRDb250ZXh0ICpoLCBIMjY0Q29udGV4dCAqaDApewotICAgICAgICAgYXZfbG9nKGgtPnMuYXZjdHgsIEFWX0xPR19FUlJPUiwgIm5vbi1leGlzdGluZyBTUFMgJXUgcmVmZXJlbmNlZFxuIiwgaC0+cHBzLnNwc19pZCk7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLS0gICAgaC0+c3BzID0gKmgwLT5zcHNfYnVmZmVyc1toLT5wcHMuc3BzX2lkXTsKLSsKLSsgICAgaWYgKGgtPnBwcy5zcHNfaWQgIT0gaC0+Y3VycmVudF9zcHNfaWQgfHwKLSsgICAgICAgIGgwLT5zcHNfYnVmZmVyc1toLT5wcHMuc3BzX2lkXS0+bmV3KSB7Ci0rICAgICAgICBoMC0+c3BzX2J1ZmZlcnNbaC0+cHBzLnNwc19pZF0tPm5ldyA9IDA7Ci0rCi0rICAgICAgICBoLT5jdXJyZW50X3Nwc19pZCA9IGgtPnBwcy5zcHNfaWQ7Ci0rICAgICAgICBoLT5zcHMgICAgICAgICAgICA9ICpoMC0+c3BzX2J1ZmZlcnNbaC0+cHBzLnNwc19pZF07Ci0rCi0rICAgICAgICBpZiAoKHJldCA9IGgyNjRfc2V0X3BhcmFtZXRlcl9mcm9tX3NwcyhoKSkgPCAwKQotKyAgICAgICAgICAgIHJldHVybiByZXQ7Ci0rICAgIH0KLSAKLSAgICAgcy0+YXZjdHgtPnByb2ZpbGUgPSBmZl9oMjY0X2dldF9wcm9maWxlKCZoLT5zcHMpOwotICAgICBzLT5hdmN0eC0+bGV2ZWwgICA9IGgtPnNwcy5sZXZlbF9pZGM7Ci1AQCAtMzgxMSwyNiArMzgxMSw4IEBAIHN0YXRpYyBpbnQgZGVjb2RlX25hbF91bml0cyhIMjY0Q29udGV4dCAqaCwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpewotICAgICAgICAgY2FzZSBOQUxfU1BTOgotICAgICAgICAgICAgIGluaXRfZ2V0X2JpdHMoJnMtPmdiLCBwdHIsIGJpdF9sZW5ndGgpOwotICAgICAgICAgICAgIGZmX2gyNjRfZGVjb2RlX3NlcV9wYXJhbWV0ZXJfc2V0KGgpOwotLQotLSAgICAgICAgICAgIGlmIChzLT5mbGFncyYgQ09ERUNfRkxBR19MT1dfREVMQVkgfHwKLS0gICAgICAgICAgICAgICAgKGgtPnNwcy5iaXRzdHJlYW1fcmVzdHJpY3Rpb25fZmxhZyAmJiAhaC0+c3BzLm51bV9yZW9yZGVyX2ZyYW1lcykpCi0tICAgICAgICAgICAgICAgIHMtPmxvd19kZWxheT0xOwotLQotLSAgICAgICAgICAgIGlmKGF2Y3R4LT5oYXNfYl9mcmFtZXMgPCAyKQotLSAgICAgICAgICAgICAgICBhdmN0eC0+aGFzX2JfZnJhbWVzPSAhcy0+bG93X2RlbGF5OwotLQotLSAgICAgICAgICAgIGlmIChhdmN0eC0+Yml0c19wZXJfcmF3X3NhbXBsZSAhPSBoLT5zcHMuYml0X2RlcHRoX2x1bWEpIHsKLS0gICAgICAgICAgICAgICAgaWYgKGgtPnNwcy5iaXRfZGVwdGhfbHVtYSA+PSA4ICYmIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSA8PSAxMCkgewotLSAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgPSBoLT5zcHMuYml0X2RlcHRoX2x1bWE7Ci0tICAgICAgICAgICAgICAgICAgICBoLT5waXhlbF9zaGlmdCA9IGgtPnNwcy5iaXRfZGVwdGhfbHVtYSA+IDg7Ci0tCi0tICAgICAgICAgICAgICAgICAgICBmZl9oMjY0ZHNwX2luaXQoJmgtPmgyNjRkc3AsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0tICAgICAgICAgICAgICAgICAgICBmZl9oMjY0X3ByZWRfaW5pdCgmaC0+aHBjLCBzLT5jb2RlY19pZCwgaC0+c3BzLmJpdF9kZXB0aF9sdW1hKTsKLS0gICAgICAgICAgICAgICAgICAgIGRzcHV0aWxfaW5pdCgmcy0+ZHNwLCBzLT5hdmN0eCk7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlVuc3VwcG9ydGVkIGJpdCBkZXB0aDogJWRcbiIsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0tICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoaDI2NF9zZXRfcGFyYW1ldGVyX2Zyb21fc3BzKGgpIDwgMCkgewotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBOQUxfUFBTOgotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuaC5vbGQgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmgKLWluZGV4IGUzY2M4MTUuLmI3N2FkOTggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0Lmgub2xkCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmgKLUBAIC0yMDIsNiArMjAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU1BTewotICAgICBpbnQgYml0X2RlcHRoX2Nocm9tYTsgICAgICAgICAgICAgIC8vLzwgYml0X2RlcHRoX2Nocm9tYV9taW51czggKyA4Ci0gICAgIGludCByZXNpZHVhbF9jb2xvcl90cmFuc2Zvcm1fZmxhZzsgLy8vPCByZXNpZHVhbF9jb2xvdXJfdHJhbnNmb3JtX2ZsYWcKLSAgICAgaW50IGNvbnN0cmFpbnRfc2V0X2ZsYWdzOyAgICAgICAgICAvLy88IGNvbnN0cmFpbnRfc2V0WzAtM11fZmxhZwotKyAgICBpbnQgbmV3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgZmxhZyB0byBrZWVwIHRyYWNrIGlmIHRoZSBkZWNvZGVyIGNvbnRleHQgbmVlZHMgcmUtaW5pdCBkdWUgdG8gY2hhbmdlZCBTUFMKLSB9U1BTOwotIAotIC8qKgotQEAgLTMzMyw2ICszMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBIMjY0Q29udGV4dHsKLSAgICAgaW50IGVtdV9lZGdlX3dpZHRoOwotICAgICBpbnQgZW11X2VkZ2VfaGVpZ2h0OwotIAotKyAgICB1bnNpZ25lZCBjdXJyZW50X3Nwc19pZDsgLy8vPCBpZCBvZiB0aGUgY3VycmVudCBTUFMKLSAgICAgU1BTIHNwczsgLy8vPCBjdXJyZW50IHNwcwotIAotICAgICAvKioKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0X3BzLmMub2xkIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9wcy5jCi1pbmRleCA3NDkxODA3Li4wOTI5MDk4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9wcy5jLm9sZAotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9wcy5jCi1AQCAtNDM4LDEwICs0MzgsMTMgQEAgaW50IGZmX2gyNjRfZGVjb2RlX3NlcV9wYXJhbWV0ZXJfc2V0KEgyNjRDb250ZXh0ICpoKXsKLSAgICAgICAgICAgICAgICBzcHMtPnRpbWluZ19pbmZvX3ByZXNlbnRfZmxhZyA/IHNwcy0+dGltZV9zY2FsZSA6IDAKLSAgICAgICAgICAgICAgICApOwotICAgICB9Ci0rICAgIHNwcy0+bmV3ID0gMTsKLSAKLSAgICAgYXZfZnJlZShoLT5zcHNfYnVmZmVyc1tzcHNfaWRdKTsKLS0gICAgaC0+c3BzX2J1ZmZlcnNbc3BzX2lkXT0gc3BzOwotLSAgICBoLT5zcHMgPSAqc3BzOwotKyAgICBoLT5zcHNfYnVmZmVyc1tzcHNfaWRdID0gc3BzOwotKyAgICBoLT5zcHMgICAgICAgICAgICAgICAgID0gKnNwczsKLSsgICAgaC0+Y3VycmVudF9zcHNfaWQgICAgICA9IHNwc19pZDsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gZmFpbDoKLSAgICAgYXZfZnJlZShzcHMpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtc2tpcC1lcnJvci1jb25jZWFsbWVudC13aGVuLVNQUy1hbmQtc2xpY2VzLWFyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1za2lwLWVycm9yLWNvbmNlYWxtZW50LXdoZW4tU1BTLWFuZC1zbGljZXMtYXJlLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0NWMxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1za2lwLWVycm9yLWNvbmNlYWxtZW50LXdoZW4tU1BTLWFuZC1zbGljZXMtYXJlLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLWdzdC1mZm1wZWc6IGgyNjQ6IHNraXAgZXJyb3IgY29uY2VhbG1lbnQgd2hlbiBTUFMgYW5kIHNsaWNlcyBhcmUKLSBtaXNtYXRjaGluZwotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNjk1YWY4ZWVkNjQyZmYwMTA0ODM0NDk1NjUyZDFlZTc4NGE0YzE0ZCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9oMjY0LmMgfCAgICAyICstCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjQuYyBiL2xpYmF2Y29kZWMvaDI2NC5jCi1pbmRleCBkYTE0NGRiLi4wYWFiNGU3IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmMKLUBAIC0yMzUxLDcgKzIzNTEsNyBAQCBzdGF0aWMgaW50IGZpZWxkX2VuZChIMjY0Q29udGV4dCAqaCwgaW50IGluX3NldHVwKQotICAgICAgKiBwYXN0IGVuZCBieSBvbmUgKGNhbGxlcnMgZmF1bHQpIGFuZCByZXN5bmNfbWJfeSAhPSAwCi0gICAgICAqIGNhdXNlcyBwcm9ibGVtcyBmb3IgdGhlIGZpcnN0IE1CIGxpbmUsIHRvby4KLSAgICAgICovCi0tICAgIGlmICghRklFTERfUElDVFVSRSkKLSsgICAgaWYgKCFGSUVMRF9QSUNUVVJFICYmIGgtPmN1cnJlbnRfc2xpY2UgJiYgIWgtPnNwcy5uZXcpCi0gICAgICAgICBmZl9lcl9mcmFtZV9lbmQocyk7Ci0gCi0gICAgIGZmX01QVl9mcmFtZV9lbmQocyk7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjRfc2VpLUZpeC1pbmZpbml0ZS1sb29wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjRfc2VpLUZpeC1pbmZpbml0ZS1sb29wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTYyYjUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0X3NlaS1GaXgtaW5maW5pdGUtbG9vcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLWdzdC1mZm1wZWc6IGgyNjRfc2VpOiBGaXggaW5maW5pdGUgbG9vcC4KLQotRml4c290IHlldCBmaXhlZCBwYXJ0cyBvZiBDVkUtMjAxMS0zOTQ2LgotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZjb2RlYy9oMjY0X3NlaS5jIHwgICAgNCArKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2NF9zZWkuYyBiL2xpYmF2Y29kZWMvaDI2NF9zZWkuYwotaW5kZXggMzc0ZTUzZC4uODBkNzBlNSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfc2VpLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfc2VpLmMKLUBAIC0xNjksMTEgKzE2OSwxNSBAQCBpbnQgZmZfaDI2NF9kZWNvZGVfc2VpKEgyNjRDb250ZXh0ICpoKXsKLSAKLSAgICAgICAgIHR5cGU9MDsKLSAgICAgICAgIGRvewotKyAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KCZzLT5nYikgPCA4KQotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgdHlwZSs9IHNob3dfYml0cygmcy0+Z2IsIDgpOwotICAgICAgICAgfXdoaWxlKGdldF9iaXRzKCZzLT5nYiwgOCkgPT0gMjU1KTsKLSAKLSAgICAgICAgIHNpemU9MDsKLSAgICAgICAgIGRvewotKyAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KCZzLT5nYikgPCA4KQotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgc2l6ZSs9IHNob3dfYml0cygmcy0+Z2IsIDgpOwotICAgICAgICAgfXdoaWxlKGdldF9iaXRzKCZzLT5nYiwgOCkgPT0gMjU1KTsKLSAKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaHVmZnl1dmRlYy1DaGVjay1pbml0X3ZsYy1yZXR1cm4tY29kZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaHVmZnl1dmRlYy1DaGVjay1pbml0X3ZsYy1yZXR1cm4tY29kZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NTllNDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWh1ZmZ5dXZkZWMtQ2hlY2staW5pdF92bGMtcmV0dXJuLWNvZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBiNjY2ZGViZmZlYzFmY2JiMTllZjM3NzYzNWE1M2I5YTU4YmNhOGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMTg6Mjk6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gaHVmZnl1dmRlYzogQ2hlY2sgaW5pdF92bGMoKSByZXR1cm4gY29kZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IGI2NjZkZWJmZmVjMWZjYmIxOWVmMzc3NjM1YTUzYjlhNThiY2E4YTQgcmVsZWFzZS8xLjAKLQotUHJldmVudHMgb3V0IG9mIGFycmF5IHdyaXRlcwotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBmNjdhMGQxMTUyNTQ0NjE2NDk0NzA0NTIwNThmYTNjMjhjMGRmMjk0KQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9odWZmeXV2LmMgfCAxNCArKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9odWZmeXV2LmMgYi9saWJhdmNvZGVjL2h1ZmZ5dXYuYwotaW5kZXggNThkYTc4OS4uOTkzZTUyNCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2h1ZmZ5dXYuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaHVmZnl1di5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJwdXRfYml0cy5oIgotICNpbmNsdWRlICJkc3B1dGlsLmgiCi0gI2luY2x1ZGUgInRocmVhZC5oIgotKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKLSAKLSAjZGVmaW5lIFZMQ19CSVRTIDExCi0gCi1AQCAtMjg3LDYgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhIWXV2Q28KLSAgICAgICAgICAgICAgICAgICAgIGludCBsZW4xID0gcy0+bGVuW3BdW3VdOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbjEgPiBsaW1pdCB8fCAhbGVuMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaSA8ICgxIDw8IFZMQ19CSVRTKSk7Ci0gICAgICAgICAgICAgICAgICAgICBsZW5baV0gPSBsZW4wICsgbGVuMTsKLSAgICAgICAgICAgICAgICAgICAgIGJpdHNbaV0gPSAocy0+Yml0c1swXVt5XSA8PCBsZW4xKSArIHMtPmJpdHNbcF1bdV07Ci0gICAgICAgICAgICAgICAgICAgICBzeW1ib2xzW2ldID0gKHk8PDgpICsgdTsKLUBAIC0zMjAsNiArMzIxLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfam9pbnRfdGFibGVzKEhZdXZDbwotICAgICAgICAgICAgICAgICAgICAgaW50IGxlbjIgPSBzLT5sZW5bMl1bciYyNTVdOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbjIgPiBsaW1pdDEgfHwgIWxlbjIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGkgPCAoMSA8PCBWTENfQklUUykpOwotICAgICAgICAgICAgICAgICAgICAgbGVuW2ldID0gbGVuMCArIGxlbjEgKyBsZW4yOwotICAgICAgICAgICAgICAgICAgICAgYml0c1tpXSA9IChjb2RlIDw8IGxlbjIpICsgcy0+Yml0c1syXVtyJjI1NV07Ci0gICAgICAgICAgICAgICAgICAgICBpZihzLT5kZWNvcnJlbGF0ZSl7Ci1AQCAtMzQzLDYgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhIWXV2Q28KLSBzdGF0aWMgaW50IHJlYWRfaHVmZm1hbl90YWJsZXMoSFl1dkNvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYywgaW50IGxlbmd0aCl7Ci0gICAgIEdldEJpdENvbnRleHQgZ2I7Ci0gICAgIGludCBpOwotKyAgICBpbnQgcmV0OwotIAotICAgICBpbml0X2dldF9iaXRzKCZnYiwgc3JjLCBsZW5ndGgqOCk7Ci0gCi1AQCAtMzUzLDcgKzM1Niw5IEBAIHN0YXRpYyBpbnQgcmVhZF9odWZmbWFuX3RhYmxlcyhIWXV2Q29udGUKLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gICAgICAgICBmcmVlX3ZsYygmcy0+dmxjW2ldKTsKLS0gICAgICAgIGluaXRfdmxjKCZzLT52bGNbaV0sIFZMQ19CSVRTLCAyNTYsIHMtPmxlbltpXSwgMSwgMSwgcy0+Yml0c1tpXSwgNCwgNCwgMCk7Ci0rICAgICAgICBpZiAoKHJldCA9IGluaXRfdmxjKCZzLT52bGNbaV0sIFZMQ19CSVRTLCAyNTYsIHMtPmxlbltpXSwgMSwgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5iaXRzW2ldLCA0LCA0LCAwKSkgPCAwKQotKyAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0KLSAKLSAgICAgZ2VuZXJhdGVfam9pbnRfdGFibGVzKHMpOwotQEAgLTM2NSw2ICszNzAsNyBAQCBzdGF0aWMgaW50IHJlYWRfb2xkX2h1ZmZtYW5fdGFibGVzKEhZdXZDCi0gI2lmIDEKLSAgICAgR2V0Qml0Q29udGV4dCBnYjsKLSAgICAgaW50IGk7Ci0rICAgIGludCByZXQ7Ci0gCi0gICAgIGluaXRfZ2V0X2JpdHMoJmdiLCBjbGFzc2ljX3NoaWZ0X2x1bWEsIHNpemVvZihjbGFzc2ljX3NoaWZ0X2x1bWEpKjgpOwotICAgICBpZihyZWFkX2xlbl90YWJsZShzLT5sZW5bMF0sICZnYik8MCkKLUBAIC0zODUsNyArMzkxLDkgQEAgc3RhdGljIGludCByZWFkX29sZF9odWZmbWFuX3RhYmxlcyhIWXV2QwotIAotICAgICBmb3IoaT0wOyBpPDM7IGkrKyl7Ci0gICAgICAgICBmcmVlX3ZsYygmcy0+dmxjW2ldKTsKLS0gICAgICAgIGluaXRfdmxjKCZzLT52bGNbaV0sIFZMQ19CSVRTLCAyNTYsIHMtPmxlbltpXSwgMSwgMSwgcy0+Yml0c1tpXSwgNCwgNCwgMCk7Ci0rICAgICAgICBpZiAoKHJldCA9IGluaXRfdmxjKCZzLT52bGNbaV0sIFZMQ19CSVRTLCAyNTYsIHMtPmxlbltpXSwgMSwgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yml0c1tpXSwgNCwgNCwgMCkpIDwgMCkKLSsgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICB9Ci0gCi0gICAgIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhzKTsKLS0tIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWh1ZmZ5dXZkZWMtU2tpcC1sZW4tMC1jYXNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1odWZmeXV2ZGVjLVNraXAtbGVuLTAtY2FzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YmY0YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWh1ZmZ5dXZkZWMtU2tpcC1sZW4tMC1jYXNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZGIwZjdmNzM5NGUxZjk5NGVkMzhkYjA0M2Y3OGVkMGYxMGJkZTBkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBUdWUsIDI5IEphbiAyMDEzIDE5OjIyOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGh1ZmZ5dXZkZWM6IFNraXAgbGVuPT0wIGNhc2VzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IGRiMGY3ZjczOTRlMWY5OTRlZDM4ZGIwNDNmNzhlZDBmMTBiZGUwZGEgcmVsZWFzZS8xLjAKLQotRml4ZXMgdmxjIGRlY29kaW5nIGZvciBoeXBvdGhldGljYWwgZmlsZXMgdGhhdCB3b3VsZCBjb250YWluIHN1Y2ggY2FzZXMuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwZGZjMDFjMmJiZjRiNzFiYjU2MjAxYmM0YTM5MzMyMWUxNWQxYjMxKQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9odWZmeXV2LmMgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHVmZnl1di5jIGIvbGliYXZjb2RlYy9odWZmeXV2LmMKLWluZGV4IDk5M2U1MjQuLjcyZWQzNTEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9odWZmeXV2LmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2h1ZmZ5dXYuYwotQEAgLTI4MSwxMSArMjgxLDExIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhIWXV2Q28KLSAgICAgICAgICAgICBmb3IoaT15PTA7IHk8MjU2OyB5KyspewotICAgICAgICAgICAgICAgICBpbnQgbGVuMCA9IHMtPmxlblswXVt5XTsKLSAgICAgICAgICAgICAgICAgaW50IGxpbWl0ID0gVkxDX0JJVFMgLSBsZW4wOwotLSAgICAgICAgICAgICAgICBpZihsaW1pdCA8PSAwKQotKyAgICAgICAgICAgICAgICBpZihsaW1pdCA8PSAwIHx8ICFsZW4wKQotICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgIGZvcih1PTA7IHU8MjU2OyB1KyspewotICAgICAgICAgICAgICAgICAgICAgaW50IGxlbjEgPSBzLT5sZW5bcF1bdV07Ci0tICAgICAgICAgICAgICAgICAgICBpZihsZW4xID4gbGltaXQpCi0rICAgICAgICAgICAgICAgICAgICBpZiAobGVuMSA+IGxpbWl0IHx8ICFsZW4xKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgbGVuW2ldID0gbGVuMCArIGxlbjE7Ci0gICAgICAgICAgICAgICAgICAgICBiaXRzW2ldID0gKHMtPmJpdHNbMF1beV0gPDwgbGVuMSkgKyBzLT5iaXRzW3BdW3VdOwotQEAgLTMwOCwxNyArMzA4LDE3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhIWXV2Q28KLSAgICAgICAgIGZvcihpPTAsIGc9LTE2OyBnPDE2OyBnKyspewotICAgICAgICAgICAgIGludCBsZW4wID0gcy0+bGVuW3AwXVtnJjI1NV07Ci0gICAgICAgICAgICAgaW50IGxpbWl0MCA9IFZMQ19CSVRTIC0gbGVuMDsKLS0gICAgICAgICAgICBpZihsaW1pdDAgPCAyKQotKyAgICAgICAgICAgIGlmIChsaW1pdDAgPCAyIHx8ICFsZW4wKQotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICBmb3IoYj0tMTY7IGI8MTY7IGIrKyl7Ci0gICAgICAgICAgICAgICAgIGludCBsZW4xID0gcy0+bGVuW3AxXVtiJjI1NV07Ci0gICAgICAgICAgICAgICAgIGludCBsaW1pdDEgPSBsaW1pdDAgLSBsZW4xOwotLSAgICAgICAgICAgICAgICBpZihsaW1pdDEgPCAxKQotKyAgICAgICAgICAgICAgICBpZiAobGltaXQxIDwgMSB8fCAhbGVuMSkKLSAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICBjb2RlID0gKHMtPmJpdHNbcDBdW2cmMjU1XSA8PCBsZW4xKSArIHMtPmJpdHNbcDFdW2ImMjU1XTsKLSAgICAgICAgICAgICAgICAgZm9yKHI9LTE2OyByPDE2OyByKyspewotICAgICAgICAgICAgICAgICAgICAgaW50IGxlbjIgPSBzLT5sZW5bMl1bciYyNTVdOwotLSAgICAgICAgICAgICAgICAgICAgaWYobGVuMiA+IGxpbWl0MSkKLSsgICAgICAgICAgICAgICAgICAgIGlmIChsZW4yID4gbGltaXQxIHx8ICFsZW4yKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgbGVuW2ldID0gbGVuMCArIGxlbjEgKyBsZW4yOwotICAgICAgICAgICAgICAgICAgICAgYml0c1tpXSA9IChjb2RlIDw8IGxlbjIpICsgcy0+Yml0c1syXVtyJjI1NV07Ci0tLSAKLTEuOC41LjIuMjMzLmc5MzJmN2U0Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1sYXZmLWNvbXB1dGUtcHJvYmUtYnVmZmVyLXNpemUtbW9yZS1yZWxpYWJseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1sYXZmLWNvbXB1dGUtcHJvYmUtYnVmZmVyLXNpemUtbW9yZS1yZWxpYWJseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE0YWEyMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtbGF2Zi1jb21wdXRlLXByb2JlLWJ1ZmZlci1zaXplLW1vcmUtcmVsaWFibHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1nc3QtZmZtcGVnOiBsYXZmOiBjb21wdXRlIHByb2JlIGJ1ZmZlciBzaXplIG1vcmUgcmVsaWFibHkuCi0KLVRoZSBwcmV2aW91cyBjb2RlIGNvbXB1dGVzIHRoZSBvZmZzZXQgYnkgcmV2ZXJzaW5nIHRoZSBncm93dGgKLW9mIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHNpemU6IGl0IGlzIGNvbXBsZXggYW5kIGRpZCBsZWFkIHRvCi1pbmNvbnNpc3RlbmNpZXMgd2hlbiB0aGUgc2l6ZSBsaW1pdCBpcyByZWFjaGVkLgotCi1GaXggdHJhYyB0aWNrZXQgIzE5OTEuCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwMzg0N2ViODI1OTI5MWI0ZmYxYmQ4NDBiZDc3OWQwNjk5ZDcxZjk2KQotCi1Db25mbGljdHM6Ci0JbGliYXZmb3JtYXQvdXRpbHMuYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZmb3JtYXQvdXRpbHMuYyB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdXRpbHMuYyBiL2xpYmF2Zm9ybWF0L3V0aWxzLmMKLWluZGV4IDc5NDAwMzcuLmJlNzNjNGEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvdXRpbHMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Zm9ybWF0L3V0aWxzLmMKLUBAIC00NTksNyArNDU5LDcgQEAgaW50IGF2X3Byb2JlX2lucHV0X2J1ZmZlcihBVklPQ29udGV4dCAqcGIsIEFWSW5wdXRGb3JtYXQgKipmbXQsCi0gewotICAgICBBVlByb2JlRGF0YSBwZCA9IHsgZmlsZW5hbWUgPyBmaWxlbmFtZSA6ICIiLCBOVUxMLCAtb2Zmc2V0IH07Ci0gICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7Ci0tICAgIGludCByZXQgPSAwLCBwcm9iZV9zaXplOwotKyAgICBpbnQgcmV0ID0gMCwgcHJvYmVfc2l6ZSwgYnVmX29mZnNldCA9IDA7Ci0gCi0gICAgIGlmICghbWF4X3Byb2JlX3NpemUpIHsKLSAgICAgICAgIG1heF9wcm9iZV9zaXplID0gUFJPQkVfQlVGX01BWDsKLUBAIC00OTksNyArNDk5LDcgQEAgaW50IGF2X3Byb2JlX2lucHV0X2J1ZmZlcihBVklPQ29udGV4dCAqcGIsIEFWSW5wdXRGb3JtYXQgKipmbXQsCi0gICAgICAgICAgICAgc2NvcmUgPSAwOwotICAgICAgICAgICAgIHJldCA9IDA7ICAgICAgICAgICAgLyogZXJyb3Igd2FzIGVuZCBvZiBmaWxlLCBub3RoaW5nIHJlYWQgKi8KLSAgICAgICAgIH0KLS0gICAgICAgIHBkLmJ1Zl9zaXplICs9IHJldDsKLSsgICAgICAgIHBkLmJ1Zl9zaXplID0gYnVmX29mZnNldCArPSByZXQ7Ci0gICAgICAgICBwZC5idWYgPSAmYnVmW29mZnNldF07Ci0gCi0gICAgICAgICBtZW1zZXQocGQuYnVmICsgcGQuYnVmX3NpemUsIDAsIEFWUFJPQkVfUEFERElOR19TSVpFKTsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtbWpwZWdkZWMtY2hlY2stU0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtbWpwZWdkZWMtY2hlY2stU0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MGJhZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLW1qcGVnZGVjLWNoZWNrLVNFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAxZjQxY2ZmZTFlM2U3OTYyMGY1ODc1NDViZGZjYmQ3ZTZlNjhlZDI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFN1biwgMTEgTm92IDIwMTIgMDA6MDE6MjQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWpwZWdkZWM6IGNoZWNrIFNFLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCAxZjQxY2ZmZTFlM2U3OTYyMGY1ODc1NDViZGZjYmQ3ZTZlNjhlZDI5IHJlbGVhc2UvMS4xCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvbWpwZWdkZWMuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21qcGVnZGVjLmMgYi9saWJhdmNvZGVjL21qcGVnZGVjLmMKLWluZGV4IDZiNTI2NmQuLjBhNzFhNmYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tanBlZ2RlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tanBlZ2RlYy5jCi1AQCAtOTA1LDYgKzkwNSwxMSBAQCBzdGF0aWMgaW50IG1qcGVnX2RlY29kZV9zY2FuX3Byb2dyZXNzaXZlCi0gICAgIGludDE2X3QgKnF1YW50X21hdHJpeCA9IHMtPnF1YW50X21hdHJpeGVzWyBzLT5xdWFudF9pbmRleFtjXSBdOwotICAgICBHZXRCaXRDb250ZXh0IG1iX2JpdG1hc2tfZ2I7Ci0gCi0rICAgIGlmIChzZSA+IDYzKSB7Ci0rICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIlNFICVkIGlzIHRvbyBsYXJnZVxuIiwgc2UpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgIH0KLSsKLSAgICAgaWYgKG1iX2JpdG1hc2spIHsKLSAgICAgICAgIGluaXRfZ2V0X2JpdHMoJm1iX2JpdG1hc2tfZ2IsIG1iX2JpdG1hc2ssIHMtPm1iX3dpZHRoKnMtPm1iX2hlaWdodCk7Ci0gICAgIH0KLS0tIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXBnc3N1YmRlYy1jaGVjay1STEUtc2l6ZS1iZWZvcmUtY29weWluZy4tRml4LW91dC1vZi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcGdzc3ViZGVjLWNoZWNrLVJMRS1zaXplLWJlZm9yZS1jb3B5aW5nLi1GaXgtb3V0LW9mLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA0MTM0Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcGdzc3ViZGVjLWNoZWNrLVJMRS1zaXplLWJlZm9yZS1jb3B5aW5nLi1GaXgtb3V0LW9mLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gMjhiZjY4NWJmYzZkMGM3NDQzNjljZGYzNjdmNjFhNzhkODBkMGIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBUaHUsIDE1IE5vdiAyMDEyIDE2OjQxOjI4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBnc3N1YmRlYzogY2hlY2sgUkxFIHNpemUgYmVmb3JlIGNvcHlpbmcuIEZpeCBvdXQgb2YgYXJyYXkKLSBhY2Nlc3NlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCAyOGJmNjg1YmZjNmQwYzc0NDM2OWNkZjM2N2Y2MWE3OGQ4MGQwYjAxIHJlbGVhc2UvMS4xCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGMwZDY4YmU1NTVmNTg1ODcwMzM4MzA0MGUwNGZjZDY1Mjk3NzcwNjEpCi0tLS0KLSBsaWJhdmNvZGVjL3Bnc3N1YmRlYy5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcGdzc3ViZGVjLmMgYi9saWJhdmNvZGVjL3Bnc3N1YmRlYy5jCi1pbmRleCA3MjhmMTc4Li4yNmEzYzJhIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcGdzc3ViZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3Bnc3N1YmRlYy5jCi1AQCAtMjAyLDYgKzIwMiwxMSBAQCBzdGF0aWMgaW50IHBhcnNlX3BpY3R1cmVfc2VnbWVudChBVkNvZGVjCi0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAKLSsgICAgaWYgKGJ1Zl9zaXplID4gcmxlX2JpdG1hcF9sZW4pIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAidG9vIG11Y2ggUkxFIGRhdGFcbiIpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgIH0KLSsKLSAgICAgY3R4LT5waWN0dXJlLncgPSB3aWR0aDsKLSAgICAgY3R4LT5waWN0dXJlLmggPSBoZWlnaHQ7Ci0gCi0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1wbmdkZWMtZmlsdGVyLWRvbnQtYWNjZXNzLW91dC1vZi1hcnJheS1lbGVtZW50cy1hdC10LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXBuZ2RlYy1maWx0ZXItZG9udC1hY2Nlc3Mtb3V0LW9mLWFycmF5LWVsZW1lbnRzLWF0LXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNWZiN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXBuZ2RlYy1maWx0ZXItZG9udC1hY2Nlc3Mtb3V0LW9mLWFycmF5LWVsZW1lbnRzLWF0LXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1nc3QtZmZtcGVnOiBwbmdkZWMvZmlsdGVyOiBkb250IGFjY2VzcyBvdXQgb2YgYXJyYXkgZWxlbWVudHMgYXQgdGhlIGVuZAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9wbmdkZWMuYyB8ICAgMTIgKysrKy0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3BuZ2RlYy5jIGIvbGliYXZjb2RlYy9wbmdkZWMuYwotaW5kZXggOTdjMGFkMS4uMTkzZTM1ZSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3BuZ2RlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wbmdkZWMuYwotQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIGZmX2FkZF9wbmdfcGFldGhfcHJlZGljdGlvbih1aW50OF90ICpkc3QsIHVpbnQ4X3QgKnNyYywgdWludDhfdCAqdG9wLCBpbnQgdwotICAgICBpZihicHAgPj0gMikgZyA9IGRzdFsxXTtcCi0gICAgIGlmKGJwcCA+PSAzKSBiID0gZHN0WzJdO1wKLSAgICAgaWYoYnBwID49IDQpIGEgPSBkc3RbM107XAotLSAgICBmb3IoOyBpIDwgc2l6ZTsgaSs9YnBwKSB7XAotKyAgICBmb3IoOyBpIDw9IHNpemUgLSBicHA7IGkrPWJwcCkge1wKLSAgICAgICAgIGRzdFtpKzBdID0gciA9IG9wKHIsIHNyY1tpKzBdLCBsYXN0W2krMF0pO1wKLSAgICAgICAgIGlmKGJwcCA9PSAxKSBjb250aW51ZTtcCi0gICAgICAgICBkc3RbaSsxXSA9IGcgPSBvcChnLCBzcmNbaSsxXSwgbGFzdFtpKzFdKTtcCi1AQCAtMjA2LDEzICsyMDYsOSBAQCB2b2lkIGZmX2FkZF9wbmdfcGFldGhfcHJlZGljdGlvbih1aW50OF90ICpkc3QsIHVpbnQ4X3QgKnNyYywgdWludDhfdCAqdG9wLCBpbnQgdwotICAgICBlbHNlIGlmKGJwcCA9PSAyKSBVTlJPTEwxKDIsIG9wKVwKLSAgICAgZWxzZSBpZihicHAgPT0gMykgVU5ST0xMMSgzLCBvcClcCi0gICAgIGVsc2UgaWYoYnBwID09IDQpIFVOUk9MTDEoNCwgb3ApXAotLSAgICBlbHNlIHtcCi0tICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkgKz0gYnBwKSB7XAotLSAgICAgICAgICAgIGludCBqO1wKLS0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYnBwOyBqKyspXAotLSAgICAgICAgICAgICAgICBkc3RbaStqXSA9IG9wKGRzdFtpK2otYnBwXSwgc3JjW2kral0sIGxhc3RbaStqXSk7XAotLSAgICAgICAgfVwKLS0gICAgfQotKyAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykge1wKLSsgICAgICAgIGRzdFtpXSA9IG9wKGRzdFtpLWJwcF0sIHNyY1tpXSwgbGFzdFtpXSk7XAotKyAgICB9XAotIAotIC8qIE5PVEU6ICdkc3QnIGNhbiBiZSBlcXVhbCB0byAnbGFzdCcgKi8KLSBzdGF0aWMgdm9pZCBwbmdfZmlsdGVyX3JvdyhQTkdEU1BDb250ZXh0ICpkc3AsIHVpbnQ4X3QgKmRzdCwgaW50IGZpbHRlcl90eXBlLAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yLWNoZWNrLWFycmF5LWluZGV4LWJlZm9yZS11c2UtZml4LW91dC1vZi1hcnJheS1hLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXFkbTItY2hlY2stYXJyYXktaW5kZXgtYmVmb3JlLXVzZS1maXgtb3V0LW9mLWFycmF5LWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTQyMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXFkbTItY2hlY2stYXJyYXktaW5kZXgtYmVmb3JlLXVzZS1maXgtb3V0LW9mLWFycmF5LWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1nc3QtZmZtcGVnOiBxZG0yOiBjaGVjayBhcnJheSBpbmRleCBiZWZvcmUgdXNlLCBmaXggb3V0IG9mIGFycmF5Ci0gYWNjZXNzZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9xZG0yLmMgfCAgICA1ICsrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3FkbTIuYyBiL2xpYmF2Y29kZWMvcWRtMi5jCi1pbmRleCA0Y2Y0YjJmLi4xZGZiOGQ1IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcWRtMi5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9xZG0yLmMKLUBAIC0xMjU3LDYgKzEyNTcsMTEgQEAgc3RhdGljIHZvaWQgcWRtMl9kZWNvZGVfc3VwZXJfYmxvY2sgKFFETTJDb250ZXh0ICpxKQotICAgICBmb3IgKGkgPSAwOyBwYWNrZXRfYnl0ZXMgPiAwOyBpKyspIHsKLSAgICAgICAgIGludCBqOwotIAotKyAgICAgICAgaWYgKGk+PUZGX0FSUkFZX0VMRU1TKHEtPnN1Yl9wYWNrZXRfbGlzdF9BKSkgewotKyAgICAgICAgICAgIFNBTVBMRVNfTkVFREVEXzIoInRvbyBtYW55IHBhY2tldCBieXRlcyIpOwotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHEtPnN1Yl9wYWNrZXRfbGlzdF9BW2ldLm5leHQgPSBOVUxMOwotIAotICAgICAgICAgaWYgKGkgPiAwKSB7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXFkbTJkZWMtZml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yZGVjLWZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZmZjMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXFkbTJkZWMtZml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLWdzdC1mZm1wZWc6IHFkbTJkZWM6IGZpeCBidWZmZXIgb3ZlcmZsb3cuIEZpeGVzIE5HUzAwMTQ0Ci0KLVRoaXMgYWxzbyBhZGRzIGEgZmV3IGxpbmVzIG9mIGNvZGUgZnJvbSBtYXN0ZXIgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGlzIGZpeC4KLQotVGhhbmtzIHRvIFBoaWxsaXAgZm9yIHN1Z2dlc3Rpb25zIHRvIGltcHJvdmUgdGhlIHBhdGNoLgotRm91bmQtYnk6IFBoaWxsaXAgTGFuZ2xvaXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvcWRtMi5jIHwgICAgOSArKysrKysrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcWRtMi5jIGIvbGliYXZjb2RlYy9xZG0yLmMKLWluZGV4IDNhYTllNWIuLmUwMDBkZjggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9xZG0yLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3FkbTIuYwotQEAgLTc2LDYgKzc2LDcgQEAgZG8geyBcCi0gI2RlZmluZSBTQU1QTEVTX05FRURFRF8yKHdoeSkgXAotICAgICAgYXZfbG9nIChOVUxMLEFWX0xPR19JTkZPLCJUaGlzIGZpbGUgdHJpZ2dlcnMgc29tZSBtaXNzaW5nIGNvZGUuIFBsZWFzZSBjb250YWN0IHRoZSBkZXZlbG9wZXJzLlxuUG9zaXRpb246ICVzXG4iLHdoeSk7Ci0gCi0rI2RlZmluZSBRRE0yX01BWF9GUkFNRV9TSVpFIDUxMgotIAotIHR5cGVkZWYgaW50OF90IHNiX2ludDhfYXJyYXlbMl1bMzBdWzY0XTsKLSAKLUBAIC0xNjgsNyArMTY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgICAvLy8gSS9PIGRhdGEKLSAgICAgY29uc3QgdWludDhfdCAqY29tcHJlc3NlZF9kYXRhOwotICAgICBpbnQgY29tcHJlc3NlZF9zaXplOwotLSAgICBmbG9hdCBvdXRwdXRfYnVmZmVyWzEwMjRdOwotKyAgICBmbG9hdCBvdXRwdXRfYnVmZmVyW1FETTJfTUFYX0ZSQU1FX1NJWkUgKiBNUEFfTUFYX0NIQU5ORUxTICogMl07Ci0gCi0gICAgIC8vLyBTeW50aGVzaXMgZmlsdGVyCi0gICAgIE1QQURTUENvbnRleHQgbXBhZHNwOwotQEAgLTE4MTksNiArMTgyMCw5IEBAIHN0YXRpYyBhdl9jb2xkIGludCBxZG0yX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgcy0+Z3JvdXBfb3JkZXIgPSBhdl9sb2cyKHMtPmdyb3VwX3NpemUpICsgMTsKLSAgICAgcy0+ZnJhbWVfc2l6ZSA9IHMtPmdyb3VwX3NpemUgLyAxNjsgLy8gMTYgaXRlcmF0aW9ucyBwZXIgc3VwZXIgYmxvY2sKLSAKLSsgICAgaWYgKHMtPmZyYW1lX3NpemUgPiBRRE0yX01BWF9GUkFNRV9TSVpFKQotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rCi0gICAgIHMtPnN1Yl9zYW1wbGluZyA9IHMtPmZmdF9vcmRlciAtIDc7Ci0gICAgIHMtPmZyZXF1ZW5jeV9yYW5nZSA9IDI1NSAvICgxIDw8ICgyIC0gcy0+c3ViX3NhbXBsaW5nKSk7Ci0gCi1AQCAtMTg4Nyw2ICsxODkxLDkgQEAgc3RhdGljIGludCBxZG0yX2RlY29kZSAoUURNMkNvbnRleHQgKnEsIGNvbnN0IHVpbnQ4X3QgKmluLCBpbnQxNl90ICpvdXQpCi0gICAgIGludCBjaCwgaTsKLSAgICAgY29uc3QgaW50IGZyYW1lX3NpemUgPSAocS0+ZnJhbWVfc2l6ZSAqIHEtPmNoYW5uZWxzKTsKLSAKLSsgICAgaWYoKHVuc2lnbmVkKWZyYW1lX3NpemUgPiBGRl9BUlJBWV9FTEVNUyhxLT5vdXRwdXRfYnVmZmVyKS8yKQotKyAgICAgICAgcmV0dXJuIC0xOwotKwotICAgICAvKiBzZWxlY3QgaW5wdXQgYnVmZmVyICovCi0gICAgIHEtPmNvbXByZXNzZWRfZGF0YSA9IGluOwotICAgICBxLT5jb21wcmVzc2VkX3NpemUgPSBxLT5jaGVja3N1bV9zaXplOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1yb3F2aWRlb2RlYy1jaGVjay1kaW1lbnNpb25zLXZhbGlkaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXJvcXZpZGVvZGVjLWNoZWNrLWRpbWVuc2lvbnMtdmFsaWRpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNThhZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXJvcXZpZGVvZGVjLWNoZWNrLWRpbWVuc2lvbnMtdmFsaWRpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDM5MWUwZmM2YzkwY2VkNjY1NmI3NGY1MGYzYTQ4N2I2ZGM3NmVhNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogVGh1LCAyOSBOb3YgMjAxMiAxNToxODoxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSByb3F2aWRlb2RlYzogY2hlY2sgZGltZW5zaW9ucyB2YWxpZGl0eQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCAzOTFlMGZjNmM5MGNlZDY2NTZiNzRmNTBmM2E0ODdiNmRjNzZlYTYzIHJlbGVhc2UvMC43Ci0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDNhZTYxMDQ1MTE3MGNkNWEyOGIzMzk1MDAwNmZmMGJkMjMwMzY4NDUpCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL3JvcXZpZGVvZGVjLmMgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcm9xdmlkZW9kZWMuYyBiL2xpYmF2Y29kZWMvcm9xdmlkZW9kZWMuYwotaW5kZXggZjA5NzdmNi4uNGUzNDIzMSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3JvcXZpZGVvZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3JvcXZpZGVvZGVjLmMKLUBAIC0xNTcsNiArMTU3LDEyIEBAIHN0YXRpYyBhdl9jb2xkIGludCByb3FfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICBSb3FDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKLSAKLSAgICAgcy0+YXZjdHggPSBhdmN0eDsKLSsKLSsgICAgaWYgKGF2Y3R4LT53aWR0aCUxNiB8fCBhdmN0eC0+aGVpZ2h0JTE2KSB7Ci0rICAgICAgICAgYXZfbG9nX2Fza19mb3Jfc2FtcGxlKGF2Y3R4LCAiZGltZW5zaW9ucyBub3QgYmVpbmcgYSBtdWx0aXBsZSBvZiAxNiBhcmUgdW5zdXBwb3J0ZWRcbiIpOwotKyAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKLSsgICAgfQotKwotICAgICBzLT53aWR0aCA9IGF2Y3R4LT53aWR0aDsKLSAgICAgcy0+aGVpZ2h0ID0gYXZjdHgtPmhlaWdodDsKLSAgICAgYXZjb2RlY19nZXRfZnJhbWVfZGVmYXVsdHMoJnMtPmZyYW1lc1swXSk7Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1zbWFja2VyZGVjLUNoZWNrLXRoYXQtdGhlLWxhc3QtaW5kZXhlcy1hcmUtd2l0aGluLXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXNtYWNrZXJkZWMtQ2hlY2stdGhhdC10aGUtbGFzdC1pbmRleGVzLWFyZS13aXRoaW4tdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YjE2MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXNtYWNrZXJkZWMtQ2hlY2stdGhhdC10aGUtbGFzdC1pbmRleGVzLWFyZS13aXRoaW4tdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1nc3QtZmZtcGVnOiBzbWFja2VyZGVjOiBDaGVjayB0aGF0IHRoZSBsYXN0IGluZGV4ZXMgYXJlIHdpdGhpbiB0aGUKLSB0YWJsZS4KLQotRml4ZXMgQ1ZFLTIwMTEtMzk0NAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL3NtYWNrZXIuYyB8ICAgIDUgKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc21hY2tlci5jIGIvbGliYXZjb2RlYy9zbWFja2VyLmMKLWluZGV4IDMwZjk5YjQuLjJhOGJhZTggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9zbWFja2VyLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3NtYWNrZXIuYwotQEAgLTI1OSw2ICsyNTksMTEgQEAgc3RhdGljIGludCBzbWFja2VyX2RlY29kZV9oZWFkZXJfdHJlZShTbWFja1ZDb250ZXh0ICpzbWssIEdldEJpdENvbnRleHQgKmdiLCBpbnQKLSAgICAgaWYoY3R4Lmxhc3RbMF0gPT0gLTEpIGN0eC5sYXN0WzBdID0gaHVmZi5jdXJyZW50Kys7Ci0gICAgIGlmKGN0eC5sYXN0WzFdID09IC0xKSBjdHgubGFzdFsxXSA9IGh1ZmYuY3VycmVudCsrOwotICAgICBpZihjdHgubGFzdFsyXSA9PSAtMSkgY3R4Lmxhc3RbMl0gPSBodWZmLmN1cnJlbnQrKzsKLSsgICAgaWYoaHVmZi5jdXJyZW50ID4gaHVmZi5sZW5ndGgpewotKyAgICAgICAgY3R4Lmxhc3RbMF0gPSBjdHgubGFzdFsxXSA9IGN0eC5sYXN0WzJdID0gMTsKLSsgICAgICAgIGF2X2xvZyhzbWstPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJiaWd0cmVlIGRhbWFnZWRcbiIpOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0gCi0gICAgICpyZWNvZGVzID0gaHVmZi52YWx1ZXM7Ci0gCi0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1Db3B5LWFsbC0zLWZyYW1lcy1mb3ItdGhyZWFkLXVwZGF0ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnAzLUNvcHktYWxsLTMtZnJhbWVzLWZvci10aHJlYWQtdXBkYXRlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE5ODljZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnAzLUNvcHktYWxsLTMtZnJhbWVzLWZvci10aHJlYWQtdXBkYXRlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLWdzdC1mZm1wZWc6IHZwMzogQ29weSBhbGwgMyBmcmFtZXMgZm9yIHRocmVhZCB1cGRhdGVzLgotCi1UaGlzIGZpeGVzIGEgZG91YmxlIHJlbGVhc2Ugb2YgdGhlIGN1cnJlbnQgZnJhbWUgb24gZGVpbml0LgotRml4ZXMgQ1ZFLTIwMTEtMzkzNAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWXVlLlRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJhdmNvZGVjL3ZwMy5jIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDMuYyBiL2xpYmF2Y29kZWMvdnAzLmMKLWluZGV4IDczOGFlOWYuLmI1ZGFhZmMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92cDMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnAzLmMKLUBAIC0xODU5LDcgKzE4NTksNyBAQCBzdGF0aWMgaW50IHZwM191cGRhdGVfdGhyZWFkX2NvbnRleHQoQVZDb2RlY0NvbnRleHQgKmRzdCwgY29uc3QgQVZDb2RlY0NvbnRleHQgKgotICAgICAgICAgfHxzLT53aWR0aCAhPSBzMS0+d2lkdGgKLSAgICAgICAgIHx8cy0+aGVpZ2h0IT0gczEtPmhlaWdodCkgewotICAgICAgICAgaWYgKHMgIT0gczEpCi0tICAgICAgICAgICAgY29weV9maWVsZHMocywgczEsIGdvbGRlbl9mcmFtZSwgY3VycmVudF9mcmFtZSk7Ci0rICAgICAgICAgICAgY29weV9maWVsZHMocywgczEsIGdvbGRlbl9mcmFtZSwga2V5ZnJhbWUpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1maXgtb29iLXJlYWQtZm9yLW5lZ2F0aXZlLXRva2Vucy1hbmQtbWVtbGVha3Mtb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnAzLWZpeC1vb2ItcmVhZC1mb3ItbmVnYXRpdmUtdG9rZW5zLWFuZC1tZW1sZWFrcy1vbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgzZDhmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnAzLWZpeC1vb2ItcmVhZC1mb3ItbmVnYXRpdmUtdG9rZW5zLWFuZC1tZW1sZWFrcy1vbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1nc3QtZmZtcGVnOiB2cDM6IGZpeCBvb2IgcmVhZCBmb3IgbmVnYXRpdmUgdG9rZW5zIGFuZCBtZW1sZWFrcyBvbiBlcnJvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlLlRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJhdmNvZGVjL3ZwMy5jIHwgICA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZwMy5jIGIvbGliYXZjb2RlYy92cDMuYwotaW5kZXggMzY3MTViYi4uY2UxNGU2MyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZwMy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92cDMuYwotQEAgLTQ1LDYgKzQ1LDcgQEAKLSAjZGVmaW5lIEZSQUdNRU5UX1BJWEVMUyA4Ci0gCi0gc3RhdGljIGF2X2NvbGQgaW50IHZwM19kZWNvZGVfZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Ci0rc3RhdGljIHZvaWQgdnAzX2RlY29kZV9mbHVzaChBVkNvZGVjQ29udGV4dCAqYXZjdHgpOwotIAotIC8vRklYTUUgc3BsaXQgdGhpbmdzIG91dCBpbnRvIHRoZWlyIG93biBhcnJheXMKLSB0eXBlZGVmIHN0cnVjdCBWcDNGcmFnbWVudCB7Ci1AQCAtODkwLDcgKzg5MSw3IEBAIHN0YXRpYyBpbnQgdW5wYWNrX3ZsY3MoVnAzRGVjb2RlQ29udGV4dCAqcywgR2V0Qml0Q29udGV4dCAqZ2IsCi0gICAgICAgICAgICAgLyogZGVjb2RlIGEgVkxDIGludG8gYSB0b2tlbiAqLwotICAgICAgICAgICAgIHRva2VuID0gZ2V0X3ZsYzIoZ2IsIHZsY190YWJsZSwgMTEsIDMpOwotICAgICAgICAgICAgIC8qIHVzZSB0aGUgdG9rZW4gdG8gZ2V0IGEgemVybyBydW4sIGEgY29lZmZpY2llbnQsIGFuZCBhbiBlb2IgcnVuICovCi0tICAgICAgICAgICAgaWYgKHRva2VuIDw9IDYpIHsKLSsgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKSB0b2tlbiA8PSA2VSkgewotICAgICAgICAgICAgICAgICBlb2JfcnVuID0gZW9iX3J1bl9iYXNlW3Rva2VuXTsKLSAgICAgICAgICAgICAgICAgaWYgKGVvYl9ydW5fZ2V0X2JpdHNbdG9rZW5dKQotICAgICAgICAgICAgICAgICAgICAgZW9iX3J1biArPSBnZXRfYml0cyhnYiwgZW9iX3J1bl9nZXRfYml0c1t0b2tlbl0pOwotQEAgLTkwOCw3ICs5MDksNyBAQCBzdGF0aWMgaW50IHVucGFja192bGNzKFZwM0RlY29kZUNvbnRleHQgKnMsIEdldEJpdENvbnRleHQgKmdiLAotICAgICAgICAgICAgICAgICAgICAgY29lZmZfaSAgICAgICAgKz0gZW9iX3J1bjsKLSAgICAgICAgICAgICAgICAgICAgIGVvYl9ydW4gPSAwOwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKHRva2VuID49IDApIHsKLSAgICAgICAgICAgICAgICAgYml0c190b19nZXQgPSBjb2VmZl9nZXRfYml0c1t0b2tlbl07Ci0gICAgICAgICAgICAgICAgIGlmIChiaXRzX3RvX2dldCkKLSAgICAgICAgICAgICAgICAgICAgIGJpdHNfdG9fZ2V0ID0gZ2V0X2JpdHMoZ2IsIGJpdHNfdG9fZ2V0KTsKLUBAIC05NDIsNiArOTQzLDEwIEBAIHN0YXRpYyBpbnQgdW5wYWNrX3ZsY3MoVnAzRGVjb2RlQ29udGV4dCAqcywgR2V0Qml0Q29udGV4dCAqZ2IsCi0gICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvZWZmX2luZGV4KzE7IGkgPD0gY29lZmZfaW5kZXgremVyb19ydW47IGkrKykKLSAgICAgICAgICAgICAgICAgICAgIHMtPm51bV9jb2RlZF9mcmFnc1twbGFuZV1baV0tLTsKLSAgICAgICAgICAgICAgICAgY29lZmZfaSsrOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgdG9rZW4gJWRcbiIsIHRva2VuKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIH0KLSAgICAgfQotIAotQEAgLTk5MSw2ICs5OTYsOCBAQCBzdGF0aWMgaW50IHVucGFja19kY3RfY29lZmZzKFZwM0RlY29kZUNvbnRleHQgKnMsIEdldEJpdENvbnRleHQgKmdiKQotICAgICAvKiB1bnBhY2sgdGhlIFkgcGxhbmUgREMgY29lZmZpY2llbnRzICovCi0gICAgIHJlc2lkdWFsX2VvYl9ydW4gPSB1bnBhY2tfdmxjcyhzLCBnYiwgJnMtPmRjX3ZsY1tkY195X3RhYmxlXSwgMCwKLSAgICAgICAgIDAsIHJlc2lkdWFsX2VvYl9ydW4pOwotKyAgICBpZiAocmVzaWR1YWxfZW9iX3J1biA8IDApCi0rICAgICAgICByZXR1cm4gcmVzaWR1YWxfZW9iX3J1bjsKLSAKLSAgICAgLyogcmV2ZXJzZSBwcmVkaWN0aW9uIG9mIHRoZSBZLXBsYW5lIERDIGNvZWZmaWNpZW50cyAqLwotICAgICByZXZlcnNlX2RjX3ByZWRpY3Rpb24ocywgMCwgcy0+ZnJhZ21lbnRfd2lkdGhbMF0sIHMtPmZyYWdtZW50X2hlaWdodFswXSk7Ci1AQCAtOTk4LDggKzEwMDUsMTIgQEAgc3RhdGljIGludCB1bnBhY2tfZGN0X2NvZWZmcyhWcDNEZWNvZGVDb250ZXh0ICpzLCBHZXRCaXRDb250ZXh0ICpnYikKLSAgICAgLyogdW5wYWNrIHRoZSBDIHBsYW5lIERDIGNvZWZmaWNpZW50cyAqLwotICAgICByZXNpZHVhbF9lb2JfcnVuID0gdW5wYWNrX3ZsY3MocywgZ2IsICZzLT5kY192bGNbZGNfY190YWJsZV0sIDAsCi0gICAgICAgICAxLCByZXNpZHVhbF9lb2JfcnVuKTsKLSsgICAgaWYgKHJlc2lkdWFsX2VvYl9ydW4gPCAwKQotKyAgICAgICAgcmV0dXJuIHJlc2lkdWFsX2VvYl9ydW47Ci0gICAgIHJlc2lkdWFsX2VvYl9ydW4gPSB1bnBhY2tfdmxjcyhzLCBnYiwgJnMtPmRjX3ZsY1tkY19jX3RhYmxlXSwgMCwKLSAgICAgICAgIDIsIHJlc2lkdWFsX2VvYl9ydW4pOwotKyAgICBpZiAocmVzaWR1YWxfZW9iX3J1biA8IDApCi0rICAgICAgICByZXR1cm4gcmVzaWR1YWxfZW9iX3J1bjsKLSAKLSAgICAgLyogcmV2ZXJzZSBwcmVkaWN0aW9uIG9mIHRoZSBDLXBsYW5lIERDIGNvZWZmaWNpZW50cyAqLwotICAgICBpZiAoIShzLT5hdmN0eC0+ZmxhZ3MgJiBDT0RFQ19GTEFHX0dSQVkpKQotQEAgLTEwMzYsMTEgKzEwNDcsMTcgQEAgc3RhdGljIGludCB1bnBhY2tfZGN0X2NvZWZmcyhWcDNEZWNvZGVDb250ZXh0ICpzLCBHZXRCaXRDb250ZXh0ICpnYikKLSAgICAgZm9yIChpID0gMTsgaSA8PSA2MzsgaSsrKSB7Ci0gICAgICAgICAgICAgcmVzaWR1YWxfZW9iX3J1biA9IHVucGFja192bGNzKHMsIGdiLCB5X3RhYmxlc1tpXSwgaSwKLSAgICAgICAgICAgICAgICAgMCwgcmVzaWR1YWxfZW9iX3J1bik7Ci0rICAgICAgICAgICAgaWYgKHJlc2lkdWFsX2VvYl9ydW4gPCAwKQotKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzaWR1YWxfZW9iX3J1bjsKLSAKLSAgICAgICAgICAgICByZXNpZHVhbF9lb2JfcnVuID0gdW5wYWNrX3ZsY3MocywgZ2IsIGNfdGFibGVzW2ldLCBpLAotICAgICAgICAgICAgICAgICAxLCByZXNpZHVhbF9lb2JfcnVuKTsKLSsgICAgICAgICAgICBpZiAocmVzaWR1YWxfZW9iX3J1biA8IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiByZXNpZHVhbF9lb2JfcnVuOwotICAgICAgICAgICAgIHJlc2lkdWFsX2VvYl9ydW4gPSB1bnBhY2tfdmxjcyhzLCBnYiwgY190YWJsZXNbaV0sIGksCi0gICAgICAgICAgICAgICAgIDIsIHJlc2lkdWFsX2VvYl9ydW4pOwotKyAgICAgICAgICAgIGlmIChyZXNpZHVhbF9lb2JfcnVuIDwgMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHJlc2lkdWFsX2VvYl9ydW47Ci0gICAgIH0KLSAKLSAgICAgcmV0dXJuIDA7Ci1AQCAtMTc3NywxMCArMTc5NCwxNSBAQCBzdGF0aWMgaW50IHZwM191cGRhdGVfdGhyZWFkX2NvbnRleHQoQVZDb2RlY0NvbnRleHQgKmRzdCwgY29uc3QgQVZDb2RlY0NvbnRleHQgKgotICAgICBWcDNEZWNvZGVDb250ZXh0ICpzID0gZHN0LT5wcml2X2RhdGEsICpzMSA9IHNyYy0+cHJpdl9kYXRhOwotICAgICBpbnQgcXBzX2NoYW5nZWQgPSAwLCBpLCBlcnI7Ci0gCi0rI2RlZmluZSBjb3B5X2ZpZWxkcyh0bywgZnJvbSwgc3RhcnRfZmllbGQsIGVuZF9maWVsZCkgbWVtY3B5KCZ0by0+c3RhcnRfZmllbGQsICZmcm9tLT5zdGFydF9maWVsZCwgKGNoYXIqKSZ0by0+ZW5kX2ZpZWxkIC0gKGNoYXIqKSZ0by0+c3RhcnRfZmllbGQpCi0rCi0gICAgIGlmICghczEtPmN1cnJlbnRfZnJhbWUuZGF0YVswXQotICAgICAgICAgfHxzLT53aWR0aCAhPSBzMS0+d2lkdGgKLS0gICAgICAgIHx8cy0+aGVpZ2h0IT0gczEtPmhlaWdodCkKLSsgICAgICAgIHx8cy0+aGVpZ2h0IT0gczEtPmhlaWdodCkgewotKyAgICAgICAgaWYgKHMgIT0gczEpCi0rICAgICAgICAgICAgY29weV9maWVsZHMocywgczEsIGdvbGRlbl9mcmFtZSwgY3VycmVudF9mcmFtZSk7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSAKLSAgICAgaWYgKHMgIT0gczEpIHsKLSAgICAgICAgIC8vIGluaXQgdGFibGVzIGlmIHRoZSBmaXJzdCBmcmFtZSBoYXNuJ3QgYmVlbiBkZWNvZGVkCi1AQCAtMTc5Niw4ICsxODE4LDYgQEAgc3RhdGljIGludCB2cDNfdXBkYXRlX3RocmVhZF9jb250ZXh0KEFWQ29kZWNDb250ZXh0ICpkc3QsIGNvbnN0IEFWQ29kZWNDb250ZXh0ICoKLSAgICAgICAgICAgICBtZW1jcHkocy0+bW90aW9uX3ZhbFsxXSwgczEtPm1vdGlvbl92YWxbMV0sIGNfZnJhZ21lbnRfY291bnQgKiBzaXplb2YoKnMtPm1vdGlvbl92YWxbMV0pKTsKLSAgICAgICAgIH0KLSAKLS0jZGVmaW5lIGNvcHlfZmllbGRzKHRvLCBmcm9tLCBzdGFydF9maWVsZCwgZW5kX2ZpZWxkKSBtZW1jcHkoJnRvLT5zdGFydF9maWVsZCwgJmZyb20tPnN0YXJ0X2ZpZWxkLCAoY2hhciopJnRvLT5lbmRfZmllbGQgLSAoY2hhciopJnRvLT5zdGFydF9maWVsZCkKLS0KLSAgICAgICAgIC8vIGNvcHkgcHJldmlvdXMgZnJhbWUgZGF0YQotICAgICAgICAgY29weV9maWVsZHMocywgczEsIGdvbGRlbl9mcmFtZSwgZHNwKTsKLSAKLUBAIC0xOTg3LDkgKzIwMDcsNiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgdnAzX2RlY29kZV9lbmQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICBWcDNEZWNvZGVDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKLSAgICAgaW50IGk7Ci0gCi0tICAgIGlmIChhdmN0eC0+aXNfY29weSAmJiAhcy0+Y3VycmVudF9mcmFtZS5kYXRhWzBdKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tCi0gICAgIGF2X2ZyZWUocy0+c3VwZXJibG9ja19jb2RpbmcpOwotICAgICBhdl9mcmVlKHMtPmFsbF9mcmFnbWVudHMpOwotICAgICBhdl9mcmVlKHMtPmNvZGVkX2ZyYWdtZW50X2xpc3RbMF0pOwotQEAgLTIwMTYsMTIgKzIwMzMsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgdnAzX2RlY29kZV9lbmQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICBmcmVlX3ZsYygmcy0+bW90aW9uX3ZlY3Rvcl92bGMpOwotIAotICAgICAvKiByZWxlYXNlIGFsbCBmcmFtZXMgKi8KLS0gICAgaWYgKHMtPmdvbGRlbl9mcmFtZS5kYXRhWzBdKQotLSAgICAgICAgZmZfdGhyZWFkX3JlbGVhc2VfYnVmZmVyKGF2Y3R4LCAmcy0+Z29sZGVuX2ZyYW1lKTsKLS0gICAgaWYgKHMtPmxhc3RfZnJhbWUuZGF0YVswXSAmJiBzLT5sYXN0X2ZyYW1lLnR5cGUgIT0gRkZfQlVGRkVSX1RZUEVfQ09QWSkKLS0gICAgICAgIGZmX3RocmVhZF9yZWxlYXNlX2J1ZmZlcihhdmN0eCwgJnMtPmxhc3RfZnJhbWUpOwotLSAgICAvKiBubyBuZWVkIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnRfZnJhbWUgc2luY2UgaXQgd2lsbCBhbHdheXMgYmUgcG9pbnRpbmcKLS0gICAgICogdG8gdGhlIHNhbWUgZnJhbWUgYXMgZWl0aGVyIHRoZSBnb2xkZW4gb3IgbGFzdCBmcmFtZSAqLwotKyAgICB2cDNfZGVjb2RlX2ZsdXNoKGF2Y3R4KTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTIzNDEsNiArMjM1MywyMyBAQCBzdGF0aWMgdm9pZCB2cDNfZGVjb2RlX2ZsdXNoKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgICAgIGZmX3RocmVhZF9yZWxlYXNlX2J1ZmZlcihhdmN0eCwgJnMtPmN1cnJlbnRfZnJhbWUpOwotIH0KLSAKLStzdGF0aWMgaW50IHZwM19pbml0X3RocmVhZF9jb3B5KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSt7Ci0rICAgIFZwM0RlY29kZUNvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwotKwotKyAgICBzLT5zdXBlcmJsb2NrX2NvZGluZyAgICAgID0gTlVMTDsKLSsgICAgcy0+YWxsX2ZyYWdtZW50cyAgICAgICAgICA9IE5VTEw7Ci0rICAgIHMtPmNvZGVkX2ZyYWdtZW50X2xpc3RbMF0gPSBOVUxMOwotKyAgICBzLT5kY3RfdG9rZW5zX2Jhc2UgICAgICAgID0gTlVMTDsKLSsgICAgcy0+c3VwZXJibG9ja19mcmFnbWVudHMgICA9IE5VTEw7Ci0rICAgIHMtPm1hY3JvYmxvY2tfY29kaW5nICAgICAgPSBOVUxMOwotKyAgICBzLT5tb3Rpb25fdmFsWzBdICAgICAgICAgID0gTlVMTDsKLSsgICAgcy0+bW90aW9uX3ZhbFsxXSAgICAgICAgICA9IE5VTEw7Ci0rICAgIHMtPmVkZ2VfZW11X2J1ZmZlciAgICAgICAgPSBOVUxMOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gQVZDb2RlYyBmZl90aGVvcmFfZGVjb2RlciA9IHsKLSAgICAgLm5hbWUgICAgICAgICAgID0gInRoZW9yYSIsCi0gICAgIC50eXBlICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKLUBAIC0yMzUyLDYgKzIzODEsNyBAQCBBVkNvZGVjIGZmX3RoZW9yYV9kZWNvZGVyID0gewotICAgICAuY2FwYWJpbGl0aWVzICAgPSBDT0RFQ19DQVBfRFIxIHwgQ09ERUNfQ0FQX0RSQVdfSE9SSVpfQkFORCB8IENPREVDX0NBUF9GUkFNRV9USFJFQURTLAotICAgICAuZmx1c2ggPSB2cDNfZGVjb2RlX2ZsdXNoLAotICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIlRoZW9yYSIpLAotKyAgICAuaW5pdF90aHJlYWRfY29weSAgICAgID0gT05MWV9JRl9USFJFQURTX0VOQUJMRUQodnAzX2luaXRfdGhyZWFkX2NvcHkpLAotICAgICAudXBkYXRlX3RocmVhZF9jb250ZXh0ID0gT05MWV9JRl9USFJFQURTX0VOQUJMRUQodnAzX3VwZGF0ZV90aHJlYWRfY29udGV4dCkKLSB9OwotICNlbmRpZgotQEAgLTIzNjcsNSArMjM5Nyw2IEBAIEFWQ29kZWMgZmZfdnAzX2RlY29kZXIgPSB7Ci0gICAgIC5jYXBhYmlsaXRpZXMgICA9IENPREVDX0NBUF9EUjEgfCBDT0RFQ19DQVBfRFJBV19IT1JJWl9CQU5EIHwgQ09ERUNfQ0FQX0ZSQU1FX1RIUkVBRFMsCi0gICAgIC5mbHVzaCA9IHZwM19kZWNvZGVfZmx1c2gsCi0gICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiT24yIFZQMyIpLAotKyAgICAuaW5pdF90aHJlYWRfY29weSAgICAgID0gT05MWV9JRl9USFJFQURTX0VOQUJMRUQodnAzX2luaXRfdGhyZWFkX2NvcHkpLAotICAgICAudXBkYXRlX3RocmVhZF9jb250ZXh0ID0gT05MWV9JRl9USFJFQURTX0VOQUJMRUQodnAzX3VwZGF0ZV90aHJlYWRfY29udGV4dCkKLSB9OwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS12cWF2aWRlby1jaGVjay1jaHVuay1zaXplcy1iZWZvcmUtcmVhZGluZy1jaHVua3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnFhdmlkZW8tY2hlY2stY2h1bmstc2l6ZXMtYmVmb3JlLXJlYWRpbmctY2h1bmtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTRmNjgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS12cWF2aWRlby1jaGVjay1jaHVuay1zaXplcy1iZWZvcmUtcmVhZGluZy1jaHVua3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDJjYWMzNTA4NmM5ZTEwM2ZhOTg5NjBjNTQ2ZDUwMTdlNzM2MzgwM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAyNSBKYW4gMjAxMyAwNjoxMTo1OSArMDEwMAotU3ViamVjdDogW1BBVENIXSB2cWF2aWRlbzogY2hlY2sgY2h1bmsgc2l6ZXMgYmVmb3JlIHJlYWRpbmcgY2h1bmtzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ29tbWl0IDJjYWMzNTA4NmM5ZTEwM2ZhOTg5NjBjNTQ2ZDUwMTdlNzM2MzgwM2EgcmVsZWFzZS8wLjcKLQotRml4ZXMgb3V0IG9mIGFycmF5IHdyaXRlcwotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhYjZjOTMzMmJmYTFlMjAxMjdhMTYzOTJhMGI4NWE0YWE0ODQwODg5KQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy92cWF2aWRlby5jIHwgICAxMCArKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cWF2aWRlby5jIGIvbGliYXZjb2RlYy92cWF2aWRlby5jCi1pbmRleCBkMWVhYjViLi42ZTFjZTZjIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnFhdmlkZW8uYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnFhdmlkZW8uYwotQEAgLTUyNyw2ICs1MjcsMTEgQEAgc3RhdGljIHZvaWQgdnFhX2RlY29kZV9jaHVuayhWcWFDb250ZXh0ICpzKQotICAgICAgICAgY2h1bmtfc2l6ZSA9IEFWX1JCMzIoJnMtPmJ1ZltjYnAwX2NodW5rICsgNF0pOwotICAgICAgICAgY2JwMF9jaHVuayArPSBDSFVOS19QUkVBTUJMRV9TSVpFOwotIAotKyAgICAgICAgaWYgKGNodW5rX3NpemUgPiBNQVhfQ09ERUJPT0tfU0laRSAtIHMtPm5leHRfY29kZWJvb2tfYnVmZmVyX2luZGV4KSB7Ci0rICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJjYnAwIGNodW5rIHRvbyBsYXJnZSAoMHglWCBieXRlcylcbiIsIGNodW5rX3NpemUpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfQotKwotICAgICAgICAgLyogYWNjdW11bGF0ZSBwYXJ0aWFsIGNvZGVib29rICovCi0gICAgICAgICBtZW1jcHkoJnMtPm5leHRfY29kZWJvb2tfYnVmZmVyW3MtPm5leHRfY29kZWJvb2tfYnVmZmVyX2luZGV4XSwKLSAgICAgICAgICAgICAmcy0+YnVmW2NicDBfY2h1bmtdLCBjaHVua19zaXplKTsKLUBAIC01NTAsNiArNTU1LDExIEBAIHN0YXRpYyB2b2lkIHZxYV9kZWNvZGVfY2h1bmsoVnFhQ29udGV4dCAqcykKLSAgICAgICAgIGNodW5rX3NpemUgPSBBVl9SQjMyKCZzLT5idWZbY2Jwel9jaHVuayArIDRdKTsKLSAgICAgICAgIGNicHpfY2h1bmsgKz0gQ0hVTktfUFJFQU1CTEVfU0laRTsKLSAKLSsgICAgICAgIGlmIChjaHVua19zaXplID4gTUFYX0NPREVCT09LX1NJWkUgLSBzLT5uZXh0X2NvZGVib29rX2J1ZmZlcl9pbmRleCkgewotKyAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2JweiBjaHVuayB0b28gbGFyZ2UgKDB4JVggYnl0ZXMpXG4iLCBjaHVua19zaXplKTsKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIC8qIGFjY3VtdWxhdGUgcGFydGlhbCBjb2RlYm9vayAqLwotICAgICAgICAgbWVtY3B5KCZzLT5uZXh0X2NvZGVib29rX2J1ZmZlcltzLT5uZXh0X2NvZGVib29rX2J1ZmZlcl9pbmRleF0sCi0gICAgICAgICAgICAgJnMtPmJ1ZltjYnB6X2NodW5rXSwgY2h1bmtfc2l6ZSk7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAyLWF2Y29kZWMtbWpwZWdkZWMtY2hlY2stYml0cy1wZXItcGl4ZWwtZm9yLWNoYW5nZXMtc2kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDItYXZjb2RlYy1tanBlZ2RlYy1jaGVjay1iaXRzLXBlci1waXhlbC1mb3ItY2hhbmdlcy1zaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiYWZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDItYXZjb2RlYy1tanBlZ2RlYy1jaGVjay1iaXRzLXBlci1waXhlbC1mb3ItY2hhbmdlcy1zaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gNjA0M2M0MzFjOTdkNTUxNzNmMzM5ZmFmYmQwMzNkM2MwNjQyZTJlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMDE6NTA6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGF2Y29kZWMvbWpwZWdkZWM6IGNoZWNrIGJpdHMgcGVyIHBpeGVsIGZvciBjaGFuZ2VzCi0gc2ltaWxhciB0byBkaW1lbnNpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2Vzc2VzCi1GaXhlczogYXNhbl9oZWFwLW9vYl8xNjY2OGU5XzJfYXNhbl9oZWFwLW9vYl8xNjY2OGU5XzM0Nl9taXNzX2NvbmdlbmlhbGl0eV9wZWdhc3VzX21qcGcuYXZpCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLQotQ29uZmxpY3RzOgotCWxpYmF2Y29kZWMvbWpwZWdkZWMuYwotLS0tCi0gbGliYXZjb2RlYy9tanBlZ2RlYy5jIHwgMTUgKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21qcGVnZGVjLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tanBlZ2RlYy5jCi1pbmRleCA4NDM0M2MwLi5jMDEzN2Q4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWpwZWdkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWpwZWdkZWMuYwotQEAgLTIxMCwxNiArMjEwLDE2IEBAIGludCBmZl9tanBlZ19kZWNvZGVfZGh0KE1KcGVnRGVjb2RlQ29udGV4dCAqcykKLSAKLSBpbnQgZmZfbWpwZWdfZGVjb2RlX3NvZihNSnBlZ0RlY29kZUNvbnRleHQgKnMpCi0gewotLSAgICBpbnQgbGVuLCBuYl9jb21wb25lbnRzLCBpLCB3aWR0aCwgaGVpZ2h0LCBwaXhfZm10X2lkOwotKyAgICBpbnQgbGVuLCBuYl9jb21wb25lbnRzLCBpLCBiaXRzLCB3aWR0aCwgaGVpZ2h0LCBwaXhfZm10X2lkOwotIAotICAgICAvKiBYWFg6IHZlcmlmeSBsZW4gZmllbGQgdmFsaWRpdHkgKi8KLSAgICAgbGVuID0gZ2V0X2JpdHMoJnMtPmdiLCAxNik7Ci0tICAgIHMtPmJpdHM9IGdldF9iaXRzKCZzLT5nYiwgOCk7Ci0rICAgIGJpdHM9IGdldF9iaXRzKCZzLT5nYiwgOCk7Ci0gCi0tICAgIGlmKHMtPnBlZ2FzdXNfcmN0KSBzLT5iaXRzPTk7Ci0tICAgIGlmKHMtPmJpdHM9PTkgJiYgIXMtPnBlZ2FzdXNfcmN0KSBzLT5yY3Q9MTsgICAgLy9GSVhNRSB1Z2x5Ci0rICAgIGlmKHMtPnBlZ2FzdXNfcmN0KSBiaXRzPTk7Ci0rICAgIGlmKGJpdHM9PTkgJiYgIXMtPnBlZ2FzdXNfcmN0KSBzLT5yY3Q9MTsgICAgLy9GSVhNRSB1Z2x5Ci0gCi0tICAgIGlmIChzLT5iaXRzICE9IDggJiYgIXMtPmxvc3NsZXNzKXsKLSsgICAgaWYgKGJpdHMgIT0gOCAmJiAhcy0+bG9zc2xlc3MpewotICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJvbmx5IDggYml0cy9jb21wb25lbnQgYWNjZXB0ZWRcbiIpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci1AQCAtMjM5LDcgKzIzOSw3IEBAIGludCBmZl9tanBlZ19kZWNvZGVfc29mKE1KcGVnRGVjb2RlQ29udGV4dCAqcykKLSAgICAgaWYgKG5iX2NvbXBvbmVudHMgPD0gMCB8fAotICAgICAgICAgbmJfY29tcG9uZW50cyA+IE1BWF9DT01QT05FTlRTKQotICAgICAgICAgcmV0dXJuIC0xOwotLSAgICBpZiAocy0+bHMgJiYgIShzLT5iaXRzIDw9IDggfHwgbmJfY29tcG9uZW50cyA9PSAxKSl7Ci0rICAgIGlmIChzLT5scyAmJiAhKGJpdHMgPD0gOCB8fCBuYl9jb21wb25lbnRzID09IDEpKXsKLSAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAib25seSA8PSA4IGJpdHMvY29tcG9uZW50IG9yIDE2LWJpdCBncmF5IGFjY2VwdGVkIGZvciBKUEVHLUxTXG4iKTsKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotQEAgLTI3MiwxMCArMjcyLDExIEBAIGludCBmZl9tanBlZ19kZWNvZGVfc29mKE1KcGVnRGVjb2RlQ29udGV4dCAqcykKLSAKLSAgICAgLyogaWYgZGlmZmVyZW50IHNpemUsIHJlYWxsb2MvYWxsb2MgcGljdHVyZSAqLwotICAgICAvKiBYWFg6IGFsc28gY2hlY2sgaF9jb3VudCBhbmQgdl9jb3VudCAqLwotLSAgICBpZiAod2lkdGggIT0gcy0+d2lkdGggfHwgaGVpZ2h0ICE9IHMtPmhlaWdodCkgewotKyAgICBpZiAod2lkdGggIT0gcy0+d2lkdGggfHwgaGVpZ2h0ICE9IHMtPmhlaWdodCB8fCBiaXRzICE9IHMtPmJpdHMpIHsKLSAgICAgICAgIGF2X2ZyZWVwKCZzLT5xc2NhbGVfdGFibGUpOwotIAotICAgICAgICAgcy0+d2lkdGggPSB3aWR0aDsKLSsgICAgICAgIHMtPmJpdHM9IGJpdHM7Ci0gICAgICAgICBzLT5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICBzLT5pbnRlcmxhY2VkID0gMDsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvY29uZmlndXJlLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvY29uZmlndXJlLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVmNmY3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2NvbmZpZ3VyZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1EaXNhYmxlIHlhc20gZm9yIGxpYmF2IHdoZW4gLS1kaXNhYmxlLXlhc20KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KLQotZGlmZiAtciBmMmY4Zjc0YzZlMzAgY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJVGh1IERlYyAyMiAyMzo1NjowOSAyMDExICswODAwCi0rKysgYi9jb25maWd1cmUuYWMJVGh1IERlYyAyMiAyMzo1NzozNyAyMDExICswODAwCi1AQCAtMzI1LDYgKzMyNSwxMiBAQAotICAgICAgICAgLS1lbmFibGUtZ3BsIgotICAgZmkKLSAKLSsgQUNfQVJHX0VOQUJMRSh5YXNtLAotKyAgICAgICAgICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUteWFzbV0sIFtkaXNhYmxlIHVzZSBvZiB5YXNtIGFzc2VtYmxlcl0pXSkKLSsgIGlmIHRlc3QgIngkZW5hYmxlX3lhc20iID0gInhubyI7IHRoZW4KLSsgICAgZW1iZmZtcGVnX2NvbmZpZ3VyZV9hcmdzPSIkZW1iZmZtcGVnX2NvbmZpZ3VyZV9hcmdzIC0tZGlzYWJsZS15YXNtIgotKyAgZmkKLSsKLSAgICMgaWYgd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgdGVsbCBmZm1wZWcgc28KLSAgIHRhcmdldF9vcz1gZWNobyAkaG9zdF9vcyB8IHNlZCAncy8tZ251Ly8nYAotICAgaWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0geHllczsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLUNWRS0yMDEzLTA4NTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMDg1NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M4ZDhlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMDg1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1nc3QtZmZtcGVnOiBTZWN1cml0eSBBZHZpc29yeSAtIGZmbXBlZyAtIENWRS0yMDEzLTA4NTUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWxhYy5jLm9sZCBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYwotaW5kZXggMmEwZGY4Yy4uYmNiZDU2ZCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYy5vbGQKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYwotQEAgLTg3LDE4ICs4Nyw0NCBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgIGludCB3YXN0ZWRfYml0czsKLSB9IEFMQUNDb250ZXh0OwotIAotLXN0YXRpYyB2b2lkIGFsbG9jYXRlX2J1ZmZlcnMoQUxBQ0NvbnRleHQgKmFsYWMpCi0rc3RhdGljIGF2X2NvbGQgaW50IGFsYWNfZGVjb2RlX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSt7Ci0rICAgIEFMQUNDb250ZXh0ICphbGFjID0gYXZjdHgtPnByaXZfZGF0YTsKLSsKLSsgICAgaW50IGNoYW47Ci0rICAgIGZvciAoY2hhbiA9IDA7IGNoYW4gPCBNQVhfQ0hBTk5FTFM7IGNoYW4rKykgewotKyAgICAgICAgYXZfZnJlZXAoJmFsYWMtPnByZWRpY3RlcnJvcl9idWZmZXJbY2hhbl0pOwotKyAgICAgICAgYXZfZnJlZXAoJmFsYWMtPm91dHB1dHNhbXBsZXNfYnVmZmVyW2NoYW5dKTsKLSsgICAgICAgIGF2X2ZyZWVwKCZhbGFjLT53YXN0ZWRfYml0c19idWZmZXJbY2hhbl0pOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IGFsbG9jYXRlX2J1ZmZlcnMoQUxBQ0NvbnRleHQgKmFsYWMpCi0gewotICAgICBpbnQgY2hhbjsKLSsgICAgaW50IGJ1Zl9zaXplOwotKwotKyAgICBpZiAoYWxhYy0+c2V0aW5mb19tYXhfc2FtcGxlc19wZXJfZnJhbWUgPiBJTlRfTUFYIC8gc2l6ZW9mKGludDMyX3QpKQotKyAgICAgICAgZ290byBidWZfYWxsb2NfZmFpbDsKLSsgICAgYnVmX3NpemUgPSBhbGFjLT5zZXRpbmZvX21heF9zYW1wbGVzX3Blcl9mcmFtZSAqIHNpemVvZihpbnQzMl90KTsKLSsKLSAgICAgZm9yIChjaGFuID0gMDsgY2hhbiA8IE1BWF9DSEFOTkVMUzsgY2hhbisrKSB7Ci0tICAgICAgICBhbGFjLT5wcmVkaWN0ZXJyb3JfYnVmZmVyW2NoYW5dID0KLS0gICAgICAgICAgICBhdl9tYWxsb2MoYWxhYy0+c2V0aW5mb19tYXhfc2FtcGxlc19wZXJfZnJhbWUgKiA0KTsKLSAKLS0gICAgICAgIGFsYWMtPm91dHB1dHNhbXBsZXNfYnVmZmVyW2NoYW5dID0KLS0gICAgICAgICAgICBhdl9tYWxsb2MoYWxhYy0+c2V0aW5mb19tYXhfc2FtcGxlc19wZXJfZnJhbWUgKiA0KTsKLSsgICAgICAgIEZGX0FMTE9DX09SX0dPVE8oYWxhYy0+YXZjdHgsIGFsYWMtPnByZWRpY3RlcnJvcl9idWZmZXJbY2hhbl0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBidWZfYWxsb2NfZmFpbCk7Ci0gCi0tICAgICAgICBhbGFjLT53YXN0ZWRfYml0c19idWZmZXJbY2hhbl0gPSBhdl9tYWxsb2MoYWxhYy0+c2V0aW5mb19tYXhfc2FtcGxlc19wZXJfZnJhbWUgKiA0KTsKLSsgICAgICAgIEZGX0FMTE9DX09SX0dPVE8oYWxhYy0+YXZjdHgsIGFsYWMtPm91dHB1dHNhbXBsZXNfYnVmZmVyW2NoYW5dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgYnVmX2FsbG9jX2ZhaWwpOwotKwotKyAgICAgICAgRkZfQUxMT0NfT1JfR09UTyhhbGFjLT5hdmN0eCwgYWxhYy0+d2FzdGVkX2JpdHNfYnVmZmVyW2NoYW5dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgYnVmX2FsbG9jX2ZhaWwpOwotICAgICB9Ci0rICAgIHJldHVybiAwOwotK2J1Zl9hbGxvY19mYWlsOgotKyAgICBhbGFjX2RlY29kZV9jbG9zZShhbGFjLT5hdmN0eCk7Ci0rICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0gfQotIAotIHN0YXRpYyBpbnQgYWxhY19zZXRfaW5mbyhBTEFDQ29udGV4dCAqYWxhYykKLUBAIC0xMzEsOCArMTU3LDYgQEAgc3RhdGljIGludCBhbGFjX3NldF9pbmZvKEFMQUNDb250ZXh0ICphbGFjKQotICAgICBieXRlc3RyZWFtX2dldF9iZTMyKCZwdHIpOyAgICAgIC8qIGJpdHJhdGUgPyAqLwotICAgICBieXRlc3RyZWFtX2dldF9iZTMyKCZwdHIpOyAgICAgIC8qIHNhbXBsZXJhdGUgKi8KLSAKLS0gICAgYWxsb2NhdGVfYnVmZmVycyhhbGFjKTsKLS0KLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTY1OSw2ICs2ODMsNyBAQCBzdGF0aWMgaW50IGFsYWNfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAKLSBzdGF0aWMgYXZfY29sZCBpbnQgYWxhY19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqIGF2Y3R4KQotIHsKLSsgICAgaW50IHJldDsKLSAgICAgQUxBQ0NvbnRleHQgKmFsYWMgPSBhdmN0eC0+cHJpdl9kYXRhOwotICAgICBhbGFjLT5hdmN0eCA9IGF2Y3R4OwotICAgICBhbGFjLT5udW1jaGFubmVscyA9IGFsYWMtPmF2Y3R4LT5jaGFubmVsczsKLUBAIC02NzQsMTggKzY5OSw5IEBAIHN0YXRpYyBhdl9jb2xkIGludCBhbGFjX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICogYXZjdHgpCi0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAKLS0gICAgcmV0dXJuIDA7Ci0tfQotLQotLXN0YXRpYyBhdl9jb2xkIGludCBhbGFjX2RlY29kZV9jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0tewotLSAgICBBTEFDQ29udGV4dCAqYWxhYyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0tCi0tICAgIGludCBjaGFuOwotLSAgICBmb3IgKGNoYW4gPSAwOyBjaGFuIDwgTUFYX0NIQU5ORUxTOyBjaGFuKyspIHsKLS0gICAgICAgIGF2X2ZyZWVwKCZhbGFjLT5wcmVkaWN0ZXJyb3JfYnVmZmVyW2NoYW5dKTsKLS0gICAgICAgIGF2X2ZyZWVwKCZhbGFjLT5vdXRwdXRzYW1wbGVzX2J1ZmZlcltjaGFuXSk7Ci0tICAgICAgICBhdl9mcmVlcCgmYWxhYy0+d2FzdGVkX2JpdHNfYnVmZmVyW2NoYW5dKTsKLSsgICAgaWYgKChyZXQgPSBhbGxvY2F0ZV9idWZmZXJzKGFsYWMpKSA8IDApIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgYWxsb2NhdGluZyBidWZmZXJzXG4iKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0KLSAKLSAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMzY3NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1DVkUtMjAxMy0zNjc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTM4NWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1DVkUtMjAxMy0zNjc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotYXZjb2RlYy9jZGdyYXBoaWNzOiBjaGVjayBidWZmZXIgc2l6ZSBiZWZvcmUgdXNlCi0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3NlcwotCi1CYWNrcG9ydGVkIGZyb206aHR0cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZtcGVnLmdpdDthPWNvbW1pdDtoPWFkMDAyZTFhMTNhOGRmOTM0YmQ2Y2IyYzg0MTc1YTQ3ODBhYjg5NDIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtdXJwTiBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2NkZ3JhcGhpY3MuYyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2NkZ3JhcGhpY3MuYwotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvY2RncmFwaGljcy5jCTIwMTMtMDctMTggMTM6MTc6MDguMzk5ODc2NTc1ICswODAwCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9jZGdyYXBoaWNzLmMJMjAxMy0wNy0xOCAxMzoxODowNS44ODA1MDIyNjcgKzA4MDAKLUBAIC0yOTEsNyArMjkxLDkgQEAgc3RhdGljIGludCBjZGdfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZQotICAgICBpbnN0ICAgID0gYnl0ZXN0cmVhbV9nZXRfYnl0ZSgmYnVmKTsKLSAgICAgaW5zdCAgICAmPSBDREdfTUFTSzsKLSAgICAgYnVmICs9IDI7ICAvLy8gc2tpcHBpbmcgMiB1bm5lZWRlZCBieXRlcwotLSAgICBieXRlc3RyZWFtX2dldF9idWZmZXIoJmJ1ZiwgY2RnX2RhdGEsIGJ1Zl9zaXplIC0gQ0RHX0hFQURFUl9TSVpFKTsKLSsKLSsgICAgaWYgKGJ1Zl9zaXplID4gQ0RHX0hFQURFUl9TSVpFKQotKyAgICAgICAgYnl0ZXN0cmVhbV9nZXRfYnVmZmVyKCZidWYsIGNkZ19kYXRhLCBidWZfc2l6ZSAtIENER19IRUFERVJfU0laRSk7Ci0gCi0gICAgIGlmICgoY29tbWFuZCAmIENER19NQVNLKSA9PSBDREdfQ09NTUFORCkgewotICAgICAgICAgc3dpdGNoIChpbnN0KSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDExLTQzNTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDExLTQzNTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZjNmZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxMS00MzUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA4Yjk0ZGYwZjIwNDdlOTcyOGNiODcyYWRjOWU2NDU1N2I3YTUxNTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmVpbmhhcmQgVGFydGxlciA8c2lyZXRhcnRAdGF1d2FyZS5kZT4KLURhdGU6IFN1biwgNCBEZWMgMjAxMSAxMDoxMDozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSB2cDNkZWM6IENoZWNrIGNvZWZmaWNpZW50IGluZGV4IGluIHZwM19kZXF1YW50KCkKLQotQmFzZWQgb24gYSBwYXRjaCBieSBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotCi1GaXhlcyBOR1MwMDE0NSwgQ1ZFLTIwMTEtNDM1MgotCi1Gb3VuZC1ieTogUGhpbGxpcCBMYW5nbG9pcwotU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgVGFydGxlciA8c2lyZXRhcnRAdGF1d2FyZS5kZT4KLQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy5naXQ7YT1jb21taXQ7aD04Yjk0ZGYwZjIwNDdlOTcyOGNiODcyYWRjOWU2NDU1N2I3YTUxNTJmCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy92cDMuYyB8IDE0ICsrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZwMy5jIGIvbGliYXZjb2RlYy92cDMuYwotaW5kZXggNTFhYjA0OC4uZjQ0ZDA4NCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZwMy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92cDMuYwotQEAgLTEzNjMsNiArMTM2MywxMCBAQCBzdGF0aWMgaW5saW5lIGludCB2cDNfZGVxdWFudChWcDNEZWNvZGVDb250ZXh0ICpzLCBWcDNGcmFnbWVudCAqZnJhZywKLSAgICAgICAgIGNhc2UgMTogLy8gemVybyBydW4KLSAgICAgICAgICAgICBzLT5kY3RfdG9rZW5zW3BsYW5lXVtpXSsrOwotICAgICAgICAgICAgIGkgKz0gKHRva2VuID4+IDIpICYgMHg3ZjsKLSsgICAgICAgICAgICBpZiAoaSA+IDYzKSB7Ci0rICAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQ29lZmZpY2llbnQgaW5kZXggb3ZlcmZsb3dcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgYmxvY2tbcGVybVtpXV0gPSAodG9rZW4gPj4gOSkgKiBkZXF1YW50aXplcltwZXJtW2ldXTsKLSAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtMTU2Niw3ICsxNTcwLDEwIEBAIHN0YXRpYyB2b2lkIHJlbmRlcl9zbGljZShWcDNEZWNvZGVDb250ZXh0ICpzLCBpbnQgc2xpY2UpCi0gICAgICAgICAgICAgICAgICAgICAvKiBpbnZlcnQgRENUIGFuZCBwbGFjZSAob3IgYWRkKSBpbiBmaW5hbCBvdXRwdXQgKi8KLSAKLSAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5hbGxfZnJhZ21lbnRzW2ldLmNvZGluZ19tZXRob2QgPT0gTU9ERV9JTlRSQSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHZwM19kZXF1YW50KHMsIHMtPmFsbF9mcmFnbWVudHMgKyBpLCBwbGFuZSwgMCwgYmxvY2spOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHZwM19kZXF1YW50KHMsIHMtPmFsbF9mcmFnbWVudHMgKyBpLCBwbGFuZSwgMCwgYmxvY2spOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDYzKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZihzLT5hdmN0eC0+aWRjdF9hbGdvIT1GRl9JRENUX1ZQMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tbMF0gKz0gMTI4PDwzOwotICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRzcC5pZGN0X3B1dCgKLUBAIC0xNTc0LDcgKzE1ODEsMTAgQEAgc3RhdGljIHZvaWQgcmVuZGVyX3NsaWNlKFZwM0RlY29kZUNvbnRleHQgKnMsIGludCBzbGljZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2cDNfZGVxdWFudChzLCBzLT5hbGxfZnJhZ21lbnRzICsgaSwgcGxhbmUsIDEsIGJsb2NrKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IHZwM19kZXF1YW50KHMsIHMtPmFsbF9mcmFnbWVudHMgKyBpLCBwbGFuZSwgMSwgYmxvY2spOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDYzKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZHNwLmlkY3RfYWRkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGxhbmUgKyBmaXJzdF9waXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlLAotLS0gCi0yLjEuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTc5MzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTc5MzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNTM3YzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC03OTMzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAyMjY2YjhiYzMzNzA4NTZkODc0MzM0YmE2MmIzMzdjZTRmMWViMjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDEzIE1heSAyMDE1IDE2OjQ2OjA2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBnc3QtZmZtcGVnOiBmaXggQ1ZFLTIwMTQtNzkzMwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy5naXQ7YT1jb21taXQ7aD0zMzMwMWYwMAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCi1pbmRleCA1OWRjZTRmLi5lNWY1ZmMxIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Zm9ybWF0L21hdHJvc2thZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCi1AQCAtMTkxNiw3ICsxOTE2LDcgQEAgc3RhdGljIGludCBtYXRyb3NrYV9yZWFkX3NlZWsoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgc3RyZWFtX2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdGltZXN0YW1wLCBpbnQgZmxhZ3MpCi0gewotICAgICBNYXRyb3NrYURlbXV4Q29udGV4dCAqbWF0cm9za2EgPSBzLT5wcml2X2RhdGE7Ci0tICAgIE1hdHJvc2thVHJhY2sgKnRyYWNrcyA9IG1hdHJvc2thLT50cmFja3MuZWxlbTsKLSsgICAgTWF0cm9za2FUcmFjayAqdHJhY2tzID0gTlVMTDsKLSAgICAgQVZTdHJlYW0gKnN0ID0gcy0+c3RyZWFtc1tzdHJlYW1faW5kZXhdOwotICAgICBpbnQgaSwgaW5kZXgsIGluZGV4X3N1YiwgaW5kZXhfbWluOwotIAotQEAgLTE5MzksNiArMTkzOSw3IEBAIHN0YXRpYyBpbnQgbWF0cm9za2FfcmVhZF9zZWVrKEFWRm9ybWF0Q29udGV4dCAqcywgaW50IHN0cmVhbV9pbmRleCwKLSAgICAgICAgIHJldHVybiAwOwotIAotICAgICBpbmRleF9taW4gPSBpbmRleDsKLSsgICAgdHJhY2tzID0gbWF0cm9za2EtPnRyYWNrcy5lbGVtOwotICAgICBmb3IgKGk9MDsgaSA8IG1hdHJvc2thLT50cmFja3MubmJfZWxlbTsgaSsrKSB7Ci0gICAgICAgICB0cmFja3NbaV0uYXVkaW8ucGt0X2NudCA9IDA7Ci0gICAgICAgICB0cmFja3NbaV0uYXVkaW8uc3ViX3BhY2tldF9jbnQgPSAwOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNDdjODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAxMDU2NTRlMzc2YTczNmQyNDNhZWY0YTFkMTIxYWJlYmNlOTEyZTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMyBPY3QgMjAxNCAwNDozMDo1OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3V0aWxzOiBBZGQgY2FzZSBmb3IganYgdG8KLSBhdmNvZGVjX2FsaWduX2RpbWVuc2lvbnMyKCkKLQotKFVwc3RyZWFtIGNvbW1pdCAxMDU2NTRlMzc2YTczNmQyNDNhZWY0YTFkMTIxYWJlYmNlOTEyZTZiKQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLUZpeGVzOiBhc2FuX2hlYXAtb29iXzEyMzA0YWFfOF9hc2FuX2hlYXAtb29iXzRkYTRmM18zMDBfaW50cm8uanYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL3V0aWxzLmMgfCAgICA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3V0aWxzLmMgYi9saWJhdmNvZGVjL3V0aWxzLmMKLWluZGV4IGQ0ZjU1MzIuLmMyYzU1NzkgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy91dGlscy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy91dGlscy5jCi1AQCAtMTczLDYgKzE3MywxMCBAQCB2b2lkIGF2Y29kZWNfYWxpZ25fZGltZW5zaW9uczIoQVZDb2RlY0NvbnRleHQgKnMsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0LCBpbnQgbAotICAgICAgICAgICAgIHdfYWxpZ249NDsKLSAgICAgICAgICAgICBoX2FsaWduPTQ7Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQ09ERUNfSURfSlYpewotKyAgICAgICAgICAgIHdfYWxpZ24gPSA4OwotKyAgICAgICAgICAgIGhfYWxpZ24gPSA4OwotKyAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgUElYX0ZNVF9CR1IyNDoKLSAgICAgICAgIGlmKChzLT5jb2RlY19pZCA9PSBDT0RFQ19JRF9NU1pIKSB8fCAocy0+Y29kZWNfaWQgPT0gQ09ERUNfSURfWkxJQikpewotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0My5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY1ZTU1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDhiMGU5NmUxZjIxYjc2MWNhMTVkYmI0NzBjZDYxOWExZWJmODZjM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDE0OjQ1OjA0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvbW12aWRlbzogQm91bmRzIGNoZWNrIDJuZCBsaW5lIG9mIEhIViBJbnRyYSBibG9ja3MKLQotKFVwc3RyZWFtIGNvbW1pdCA4YjBlOTZlMWYyMWI3NjFjYTE1ZGJiNDcwY2Q2MTlhMWViZjg2YzNlKQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzCi1GaXhlczogYXNhbl9oZWFwLW9vYl80ZGE0ZjNfOF9hc2FuX2hlYXAtb29iXzRkYTRmM180MTlfc2NlbmUxYS5tbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvbW12aWRlby5jIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tbXZpZGVvLmMgYi9saWJhdmNvZGVjL21tdmlkZW8uYwotaW5kZXggMDI2ZDQ2My4uOWZmNjM5MyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21tdmlkZW8uYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbW12aWRlby5jCi1AQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIG1tX2RlY29kZV9pbnRyYShNbUNvbnRleHQgKiBzLCBpbnQgaGFsZl9ob3JpeiwgaW50IGhhbGZfdmVydCwgY29uc3QKLSAKLSAgICAgICAgIGlmIChjb2xvcikgewotICAgICAgICAgICAgIG1lbXNldChzLT5mcmFtZS5kYXRhWzBdICsgeSpzLT5mcmFtZS5saW5lc2l6ZVswXSArIHgsIGNvbG9yLCBydW5fbGVuZ3RoKTsKLS0gICAgICAgICAgICBpZiAoaGFsZl92ZXJ0KQotKyAgICAgICAgICAgIGlmIChoYWxmX3ZlcnQgJiYgeSArIGhhbGZfdmVydCA8IHMtPmF2Y3R4LT5oZWlnaHQpCi0gICAgICAgICAgICAgICAgIG1lbXNldChzLT5mcmFtZS5kYXRhWzBdICsgKHkrMSkqcy0+ZnJhbWUubGluZXNpemVbMF0gKyB4LCBjb2xvciwgcnVuX2xlbmd0aCk7Ci0gICAgICAgICB9Ci0gICAgICAgICB4Kz0gcnVuX2xlbmd0aDsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMjRlM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBlMWMwY2ZhYTQxOWFhNWQzMjA1NDBkNWExYjNmOGZkOWI4MmFiN2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMyBPY3QgMjAxNCAxNjowODozMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3RpZmY6IG1vcmUgY29tcGxldGVseSBjaGVjayBicHAvYnBwY291bnQKLQotKFVwc3RyZWFtIGNvbW1pdCBlMWMwY2ZhYTQxOWFhNWQzMjA1NDBkNWExYjNmOGZkOWI4MmFiN2U1KQotCi1GaXhlcyBwaXhlbCBmb3JtYXQgc2VsZWN0aW9uCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLUZpeGVzOiBhc2FuX2hlYXAtb29iXzE3NjYwMjlfNl9hc2FuX2hlYXAtb29iXzIwYWEwNDVfMzMyX2Nvdl8xODIzMjE2NzU3X20yLWQxZDM2NmQ3OTY1ZGI3NjZjMTlhNjZjN2EyY2NiYjZiLnRpZgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvdGlmZi5jIHwgICAxMyArKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3RpZmYuYyBiL2xpYmF2Y29kZWMvdGlmZi5jCi1pbmRleCA2ZTIwOTZmLi4wODcwZTMxIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdGlmZi5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy90aWZmLmMKLUBAIC0zMjQsMTEgKzMyNCwxMSBAQCBzdGF0aWMgaW50IHRpZmZfZGVjb2RlX3RhZyhUaWZmQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3RhcnQsIGNvbnN0IHVpbnQ4X3QgKgotICAgICAgICAgcy0+aGVpZ2h0ID0gdmFsdWU7Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBUSUZGX0JQUDoKLS0gICAgICAgIHMtPmJwcGNvdW50ID0gY291bnQ7Ci0tICAgICAgICBpZihjb3VudCA+IDQpewotLSAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiVGhpcyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCAoYnBwPSVkLCAlZCBjb21wb25lbnRzKVxuIiwgcy0+YnBwLCBjb3VudCk7Ci0rICAgICAgICBpZihjb3VudCA+IDRVKXsKLSsgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIlRoaXMgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQgKGJwcD0lZCwgJWQgY29tcG9uZW50cylcbiIsIHZhbHVlLCBjb3VudCk7Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotKyAgICAgICAgcy0+YnBwY291bnQgPSBjb3VudDsKLSAgICAgICAgIGlmKGNvdW50ID09IDEpIHMtPmJwcCA9IHZhbHVlOwotICAgICAgICAgZWxzZXsKLSAgICAgICAgICAgICBzd2l0Y2godHlwZSl7Ci1AQCAtMzQ0LDYgKzM0NCwxMyBAQCBzdGF0aWMgaW50IHRpZmZfZGVjb2RlX3RhZyhUaWZmQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3RhcnQsIGNvbnN0IHVpbnQ4X3QgKgotICAgICAgICAgICAgICAgICBzLT5icHAgPSAtMTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAocy0+YnBwID4gNjRVKSB7Ci0rICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICJUaGlzIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkIChicHA9JWQsICVkIGNvbXBvbmVudHMpXG4iLAotKyAgICAgICAgICAgICAgICAgICBzLT5icHAsIGNvdW50KTsKLSsgICAgICAgICAgICBzLT5icHAgPSAwOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVElGRl9TQU1QTEVTX1BFUl9QSVhFTDoKLSAgICAgICAgIGlmIChjb3VudCAhPSAxKSB7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWQ1Zjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2UyYjc0NTAyMGMyZGJmMDIwMWZlN2RmM2RhZDllN2UwYjJlMWJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMTc6MzU6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9wbmdkZWM6IENoZWNrIGJpdHMgcGVyIHBpeGVsIGJlZm9yZSBzZXR0aW5nCi0gbW9ub2JsYWNrIHBpeGVsIGZvcm1hdAotCi0oVXBzdHJlYW0gY29tbWl0IDNlMmI3NDUwMjBjMmRiZjAyMDFmZTdkZjNkYWQ5ZTdlMGIyZTFiYjYpCi0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3NlcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfMTRkYmZjZl80X2FzYW5faGVhcC1vb2JfMWNlNTc2N18xNzlfYWRkX21ldGhvZF9zbWFsbC5wbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL3BuZ2RlYy5jIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9wbmdkZWMuYyBiL2xpYmF2Y29kZWMvcG5nZGVjLmMKLWluZGV4IGRhOTFhYWIuLmYzNjAzYjMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wbmdkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcG5nZGVjLmMKLUBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIGludCBkZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMtPmJpdF9kZXB0aCA9PSAxNiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCKSB7Ci0gICAgICAgICAgICAgICAgICAgICBhdmN0eC0+cGl4X2ZtdCA9IFBJWF9GTVRfUkdCNDhCRTsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLT5iaXRfZGVwdGggPT0gMSAmJgotKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMtPmJpdF9kZXB0aCA9PSAxICYmIHMtPmJpdHNfcGVyX3BpeGVsID09IDEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVkpIHsKLSAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5waXhfZm10ID0gUElYX0ZNVF9NT05PQkxBQ0s7Ci0gICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocy0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9QQUxFVFRFKSB7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTVkOWViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZTdlNTExNGM1MDY5NTdmNDBhYWZkNzk0ZTA2ZGUxYTdlMzQxZTlkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMTk6MzM6MDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9jaW5lcGFrOiBmaXggaW50ZWdlciB1bmRlcmZsb3cKLQotKFVwc3RyZWFtIGNvbW1pdCBlN2U1MTE0YzUwNjk1N2Y0MGFhZmQ3OTRlMDZkZTFhN2UzNDFlOWQ1KQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzCi1GaXhlczogYXNhbl9oZWFwLW9vYl80ZGEwYmFfNl9hc2FuX2hlYXAtb29iXzRkYTBiYV8yNDFfY3ZpZF9jcmFzaC5hdmkKLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL2NpbmVwYWsuYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2luZXBhay5jIGIvbGliYXZjb2RlYy9jaW5lcGFrLmMKLWluZGV4IDQ3NDYyODkuLmY2NTFjNDggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9jaW5lcGFrLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2NpbmVwYWsuYwotQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgaW50IGNpbmVwYWtfZGVjb2RlX3ZlY3RvcnMgKENpbmVwYWtDb250ZXh0ICpzLCBjdmlkX3N0cmlwICpzdHJpcCwKLSAgICAgY29uc3QgdWludDhfdCAgICplb2QgPSAoZGF0YSArIHNpemUpOwotICAgICB1aW50MzJfdCAgICAgICAgIGZsYWcsIG1hc2s7Ci0gICAgIGN2aWRfY29kZWJvb2sgICAqY29kZWJvb2s7Ci0tICAgIHVuc2lnbmVkIGludCAgICAgeCwgeTsKLSsgICAgaW50ICAgICAgICAgICAgIHgsIHk7Ci0gICAgIHVpbnQzMl90ICAgICAgICAgaXlbNF07Ci0gICAgIHVpbnQzMl90ICAgICAgICAgaXVbMl07Ci0gICAgIHVpbnQzMl90ICAgICAgICAgaXZbMl07Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODYxNmZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gOGYxNDU3ODY0YmU4ZmI5NjUzNjQzNTE5ZGVhMWM2NDkyZjFkZGU1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMjA6MTU6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9naWZkZWM6IGZhY3Rvcml6ZSBpbnRlcmxlYXZlIGVuZCBoYW5kbGluZyBvdXQKLQotKFVwc3RyZWFtIGNvbW1pdCA4ZjE0NTc4NjRiZThmYjk2NTM2NDM1MTlkZWExYzY0OTJmMWRkZTU3KQotCi1hbHNvIGNoYW5nZSBpdCB0byBhIGxvb3AKLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3MKLUZpeGVzOiBhc2FuX2hlYXAtb29iX2NhNTQxMF84X2FzYW5faGVhcC1vb2JfY2E1NDEwXzk3X0lEX0xTRF9TaXplX0xlc3NfVGhlbl9EYXRhX0ludGVyXzMuZ2lmCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9naWZkZWMuYyB8ICAgMTUgKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2dpZmRlYy5jIGIvbGliYXZjb2RlYy9naWZkZWMuYwotaW5kZXggZGVlNDhmNS4uOTBkZTM4YiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2dpZmRlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9naWZkZWMuYwotQEAgLTI3MSwyNiArMjcxLDIxIEBAIHN0YXRpYyBpbnQgZ2lmX3JlYWRfaW1hZ2UoR2lmU3RhdGUgKnMsIEFWRnJhbWUgKmZyYW1lKQotICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgeTEgKz0gODsKLSAgICAgICAgICAgICAgICAgcHRyICs9IGxpbmVzaXplICogODsKLS0gICAgICAgICAgICAgICAgaWYgKHkxID49IGhlaWdodCkgewotLSAgICAgICAgICAgICAgICAgICAgeTEgPSBwYXNzID8gMiA6IDQ7Ci0tICAgICAgICAgICAgICAgICAgICBwdHIgPSBwdHIxICsgbGluZXNpemUgKiB5MTsKLS0gICAgICAgICAgICAgICAgICAgIHBhc3MrKzsKLS0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgIHkxICs9IDQ7Ci0gICAgICAgICAgICAgICAgIHB0ciArPSBsaW5lc2l6ZSAqIDQ7Ci0tICAgICAgICAgICAgICAgIGlmICh5MSA+PSBoZWlnaHQpIHsKLS0gICAgICAgICAgICAgICAgICAgIHkxID0gMTsKLS0gICAgICAgICAgICAgICAgICAgIHB0ciA9IHB0cjEgKyBsaW5lc2l6ZTsKLS0gICAgICAgICAgICAgICAgICAgIHBhc3MrKzsKLS0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgIHkxICs9IDI7Ci0gICAgICAgICAgICAgICAgIHB0ciArPSBsaW5lc2l6ZSAqIDI7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB3aGlsZSAoeTEgPj0gaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgICAgIHkxID0gNCA+PiBwYXNzOwotKyAgICAgICAgICAgICAgICBwdHIgPSBwdHIxICsgbGluZXNpemUgKiB5MTsKLSsgICAgICAgICAgICAgICAgcGFzcysrOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgcHRyICs9IGxpbmVzaXplOwotICAgICAgICAgfQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTMxOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTMxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU1M2NlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTkzMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDBkM2EzYjlmODkwNzYyNWIzNjE0MjBkNDhmZTA1NzE2ODU5NjIwZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogV2VkLCAyNiBOb3YgMjAxNCAxODo1NjozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3Jhd2RlYzogQ2hlY2sgdGhlIHJldHVybiBjb2RlIG9mCi0gYXZwaWN0dXJlX2dldF9zaXplKCkKLQotKFVwc3RyZWFtIGNvbW1pdCAxZDNhM2I5Zjg5MDc2MjViMzYxNDIwZDQ4ZmUwNTcxNjg1OTYyMGZmKQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzCi1GaXhlczogYXNhbl9oZWFwLW9vYl8yMjM4OGQwXzM0MzVfY292XzMyOTcxMjg5MTBfc21hbGxfcm9sbDVfRmxhc2hDaW5lMS5jaW5lCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9yYXdkZWMuYyB8ICAgIDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9yYXdkZWMuYyBiL2xpYmF2Y29kZWMvcmF3ZGVjLmMKLWluZGV4IDI4NzkyYTEuLjY0N2RmYTkgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9yYXdkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcmF3ZGVjLmMKLUBAIC04Nyw2ICs4Nyw5IEBAIHN0YXRpYyBhdl9jb2xkIGludCByYXdfaW5pdF9kZWNvZGVyKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAKLSAgICAgZmZfc2V0X3N5c3RlbWF0aWNfcGFsMihjb250ZXh0LT5wYWxldHRlLCBhdmN0eC0+cGl4X2ZtdCk7Ci0gICAgIGNvbnRleHQtPmxlbmd0aCA9IGF2cGljdHVyZV9nZXRfc2l6ZShhdmN0eC0+cGl4X2ZtdCwgYXZjdHgtPndpZHRoLCBhdmN0eC0+aGVpZ2h0KTsKLSsgICAgaWYgKGNvbnRleHQtPmxlbmd0aCA8IDApCi0rICAgICAgICByZXR1cm4gY29udGV4dC0+bGVuZ3RoOwotKwotICAgICBpZigoYXZjdHgtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSA9PSA0IHx8IGF2Y3R4LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgPT0gMikgJiYKLSAgICAgICAgYXZjdHgtPnBpeF9mbXQ9PVBJWF9GTVRfUEFMOCAmJgotICAgICAgICAoIWF2Y3R4LT5jb2RlY190YWcgfHwgYXZjdHgtPmNvZGVjX3RhZyA9PSBNS1RBRygncicsJ2EnLCd3JywnICcpKSl7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC05NjAzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC05NjAzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGRhNGNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTYwMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gZGM2OGZhZjgzMzlhODg1YmM1NWZhYmU1YjAxZjFkZTRmOGYzNzgyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxMyBNYXkgMjAxNSAxNjozMDo1MyArMDgwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ3N0LWZmbXBlZzogZml4IENWRS0yMDE0LTk2MDMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1VcHN0cmVhbSBpcyB2ZXJzaW9uIDIueCBhbmQgdm1kYXYuYyBpcyBzcGxpdHRlZCBpbnRvIDIgZmlsZXMgdm1kYXVkaW8uYwotYW5kIHZtZHZpZGVvLmMuIEJlY3Vhc2Ugc291cmNlIGNvZGUgY2hhbmdlcywganVzdCBwYXJ0bHkgYmFja3BvcnQgY29tbWl0IHdoaWNoCi1pcyBhcHBsaWNhYmxlIHRvIHZlcnNpb24gMC4xMC4xMyB0byBmaXggQ1ZFLTIwMTQtOTYwMy4KLQotaHR0cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZtcGVnLmdpdDthPWNvbW1pdDtoPTMwMzBmYjdlMGQ0MTgzNmY4YWRkNjM5OWU5YTdjN2I3NDBiNDhiZmQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92bWRhdi5jIHwgNyArKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZtZGF2LmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92bWRhdi5jCi1pbmRleCBkMjU4MjUyLi5iYTg4YWQ4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdm1kYXYuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdm1kYXYuYwotQEAgLTI5NCwxMCArMjk0LDEzIEBAIHN0YXRpYyB2b2lkIHZtZF9kZWNvZGUoVm1kVmlkZW9Db250ZXh0ICpzKQotICAgICAgICAgICAgICAgICAgICAgbGVuID0gKnBiKys7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAobGVuICYgMHg4MCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IChsZW4gJiAweDdGKSArIDE7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwYisrID09IDB4RkYpCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwYisrID09IDB4RkYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gcmxlX3VucGFjayhwYiwgJmRwW29mc10sIGxlbiwgZnJhbWVfd2lkdGggLSBvZnMpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2ZzICsgbGVuID4gZnJhbWVfd2lkdGgpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmZHBbb2ZzXSwgcGIsIGxlbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIHBiICs9IGxlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICBvZnMgKz0gbGVuOwotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9oMjY0X3FwZWxfbW14LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9oMjY0X3FwZWxfbW14LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGUyNGRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvaDI2NF9xcGVsX21teC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUJhY2twb3J0IGh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy5naXQ7YT1jb21taXRkaWZmO2g9NWY2NTQ4OTdlMzI1MzQ5ZGFjZjI1NDY2NzRlMDUxMGJiNzJlY2I1MDtocD0yNTBjZWJlYjNiMzQ4YzNkYTcxZjk5NzJlYjUwMGQ2MDA1ZGMwMWYxCi0KLUZpeGVzIHRoZXNlIGVycm9ycyBvbiB4ODYKLQotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci1saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmM6MTI5NDogRXJyb3I6IG9wZXJhbmQgdHlwZSBtaXNtYXRjaCBmb3IgYGNtcCcKLWxpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYzoxMjk0OiBFcnJvcjogb3BlcmFuZCB0eXBlIG1pc21hdGNoIGZvciBgY21wJwotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOjEyOTg6IEVycm9yOiBvcGVyYW5kIHR5cGUgbWlzbWF0Y2ggZm9yIGBjbXAnCi1saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmM6MTI5ODogRXJyb3I6IG9wZXJhbmQgdHlwZSBtaXNtYXRjaCBmb3IgYGNtcCcKLWxpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYzo5NjQ6IEVycm9yOiBvcGVyYW5kIHR5cGUgbWlzbWF0Y2ggZm9yIGBjbXAnCi1saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmM6OTY0OiBFcnJvcjogb3BlcmFuZCB0eXBlIG1pc21hdGNoIGZvciBgY21wJwotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOjk2NDogRXJyb3I6IG9wZXJhbmQgdHlwZSBtaXNtYXRjaCBmb3IgYGNtcCcKLW1ha2VbNV06ICoqKiBbbGliYXZjb2RlYy94ODYvZHNwdXRpbF9tbXgub10gRXJyb3IgMQotCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1JbmRleDogZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jCTIwMTItMDMtMzAgMTE6Mzk6NDEuMzI0NTIyMDUxIC0wNzAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmMJMjAxMi0wMy0zMCAxMTo1NDowOC4xNTI1NjQwNzUgLTA3MDAKLUBAIC0zOTgsNyArMzk4LDcgQEAKLSAgICAgICAgICAgICAiMjogICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCJcCi0gICAgICAgICAgICAgXAotICAgICAgICAgICAgIDogIithIihzcmMpLCAiK2MiKGRzdClcCi0tICAgICAgICAgICAgOiAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgIkQiKCh4ODZfcmVnKWRzdFN0cmlkZSksICJnIihoKVwKLSsgICAgICAgICAgICA6ICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAiRCIoKHg4Nl9yZWcpZHN0U3RyaWRlKSwgInJtIihoKVwKLSAgICAgICAgICAgICA6ICJtZW1vcnkiXAotICAgICAgICAgKTtcCi0gICAgICAgICBzcmMgKz0gNC0oaCs1KSpzcmNTdHJpZGU7XAotQEAgLTQ0Niw3ICs0NDYsNyBAQAotICAgICAgICAgICAgIFFQRUxfSDI2NEhWKCUlbW0zLCAlJW1tNCwgJSVtbTUsICUlbW0wLCAlJW1tMSwgJSVtbTIsIDE1KjQ4KVwKLSAgICAgICAgICAgICAiMjogICAgICAgICAgICAgICAgICAgICBcblx0IlwKLSAgICAgICAgICAgICA6ICIrYSIoc3JjKVwKLS0gICAgICAgICAgICA6ICJjIih0bXApLCAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgImciKHNpemUpXAotKyAgICAgICAgICAgIDogImMiKHRtcCksICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAicm0iKHNpemUpXAotICAgICAgICAgICAgIDogIm1lbW9yeSJcCi0gICAgICAgICAgICAgKTtcCi0gICAgICAgICB0bXAgKz0gNDtcCi1AQCAtODIzLDcgKzgyMyw3IEBACi0gICAgICAgICAiMjogICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiXAotICAgICAgICAgXAotICAgICAgICAgOiAiK2EiKHNyYyksICIrYyIoZHN0KVwKLS0gICAgICAgIDogIlMiKCh4ODZfcmVnKXNyY1N0cmlkZSksICJEIigoeDg2X3JlZylkc3RTdHJpZGUpLCAiZyIoaClcCi0rICAgICAgICA6ICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAiRCIoKHg4Nl9yZWcpZHN0U3RyaWRlKSwgInJtIihoKVwKLSAgICAgICAgIDogWE1NX0NMT0JCRVJTKCIleG1tMCIsICIleG1tMSIsICIleG1tMiIsICIleG1tMyIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIleG1tNCIsICIleG1tNSIsICIleG1tNiIsICIleG1tNyIsKVwKLSAgICAgICAgICAgIm1lbW9yeSJcCi1AQCAtODc4LDcgKzg3OCw3IEBACi0gICAgICAgICAgICAgUVBFTF9IMjY0SFZfWE1NKCUleG1tMywgJSV4bW00LCAlJXhtbTUsICUleG1tMCwgJSV4bW0xLCAlJXhtbTIsIDE1KjQ4KQotICAgICAgICAgICAgICIyOiAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgIDogIithIihzcmMpCi0tICAgICAgICAgICAgOiAiYyIodG1wKSwgIlMiKCh4ODZfcmVnKXNyY1N0cmlkZSksICJnIihzaXplKQotKyAgICAgICAgICAgIDogImMiKHRtcCksICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAicm0iKHNpemUpCi0gICAgICAgICAgICAgOiBYTU1fQ0xPQkJFUlMoIiV4bW0wIiwgIiV4bW0xIiwgIiV4bW0yIiwgIiV4bW0zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXhtbTQiLCAiJXhtbTUiLCAiJXhtbTYiLCAiJXhtbTciLCkKLSAgICAgICAgICAgICAgICJtZW1vcnkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2LTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2LTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NjA3NTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdi05LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMwNCArMCwwIEBACi1UYWtlbiBmcm9tIGdlbnRvbyBwYXRjaHNldDoKLWh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+dGV0cm9taW5vL2Rpc3RmaWxlcy9nc3QtcGx1Z2lucy1mZm1wZWcvZ3N0LWZmbXBlZy0wLjEwLjEzX3AyMDEyLjExLWxpYmF2LTktcGF0Y2hlcy50YXIueHoKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUNvbnRhaW5zIGZvbGxvd2luZyBjaGFuZ2VzLCByZWJhc2VkIHRvIGFwcGx5IG9uIHRvcCBvZiBvdXIgY2hhbmdlcwotMDAwMi1GaXgtaW5jbHVkZXMtZm9yLXN5c3RlbXdpZGUtYnVpbGQucGF0Y2gKLTAwMDMtbGliYXYtU3dpdGNoLXRvLW5vbi1kZXByZWNhdGVkLXN5bWJvbHMucGF0Y2gKLTAwMDUtYXYtVXBkYXRlLWZvci1zb21lLWNvbnN0YW50LWNoYW5nZXMucGF0Y2gKLTAwMDYtYXYtUmVtb3ZlLXBhbGV0dGUtc3VwcG9ydC1mb3Itbm93LnBhdGNoCi0wMDA3LWF2LVBvcnQtcmVtYWluaW5nLXNpbXBsZS1iaXRzLnBhdGNoCi0wMDA4LWF2LVVzZS1hdl9jb2RlY19pc18tZW4tZGUtY29kZXItQVBJLWluc3RlYWQtb2YtcHJpdmEucGF0Y2gKLTAwMDktYXZwcm90b2NvbC1Qb3J0LWZyb20tdGhlLVVSTC1wcm90b2NvbC1oYW5kbGVyLXRvLXNhbi5wYXRjaAotMDAxMC1hdmRlYy1kb24tdC13YWl0LWZvci1rZXlmcmFtZS5wYXRjaAotCi1Gb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIHNraXBwZWQ6Ci0wMDAxLVBhcnRpYWxseS1yZXZlcnQtY29tbWl0LTAzMDA4MDFiLnBhdGNoCi0wMDA0LWF2LXVwZGF0ZS10by11c2UtQVZPcHRpb24tdmFyaWFudHMucGF0Y2gKLTAwMTEtYXZfZ2V0X2JpdHNfcGVyX3NhbXBsZV9mb3JtYXQtd2FzLXJlbW92ZWQtaW4tbGliYXYtOS5wYXRjaAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZy5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZy5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuYwkyMDExLTEwLTMxIDExOjE0OjAzLjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZy5jCTIwMTQtMDgtMDggMTU6MjY6MDcuODcyODU3NTU1ICswMjAwCi1AQCAtMTUxLDkgKzE1MSw2IEBACi0gI2VuZGlmCi0gICBnc3RfZmZtcGVnYXVkaW9yZXNhbXBsZV9yZWdpc3RlciAocGx1Z2luKTsKLSAKLS0gIGF2X3JlZ2lzdGVyX3Byb3RvY29sMiAoJmdzdHJlYW1lcl9wcm90b2NvbCwgc2l6ZW9mIChVUkxQcm90b2NvbCkpOwotLSAgYXZfcmVnaXN0ZXJfcHJvdG9jb2wyICgmZ3N0cGlwZV9wcm90b2NvbCwgc2l6ZW9mIChVUkxQcm90b2NvbCkpOwotLQotICAgLyogTm93IHdlIGNhbiByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgUGx1Z2luIG9iamVjdC4gKi8KLSAgIHJldHVybiBUUlVFOwotIH0KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZy5oIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZy5oCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuaAkyMDExLTA1LTE3IDEwOjUzOjE2LjAwMDAwMDAwMCArMDIwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZy5oCTIwMTQtMDgtMDggMTU6MjY6MDcuODcyODU3NTU1ICswMjAwCi1AQCAtNTgsMTAgKzU4LDEzIEBACi0gaW50IGdzdF9mZm1wZWdfYXZjb2RlY19jbG9zZSAoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKLSBpbnQgZ3N0X2ZmbXBlZ19hdl9maW5kX3N0cmVhbV9pbmZvKEFWRm9ybWF0Q29udGV4dCAqaWMpOwotIAotLUdfRU5EX0RFQ0xTCi0raW50IGdzdF9mZm1wZWdkYXRhX29wZW4gKEdzdFBhZCAqIHBhZCwgaW50IGZsYWdzLCBBVklPQ29udGV4dCAqKiBjb250ZXh0KTsKLStpbnQgZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UgKEFWSU9Db250ZXh0ICogaCk7Ci0rdHlwZWRlZiBzdHJ1Y3QgX0dzdEZGTXBlZ1BpcGUgR3N0RkZNcGVnUGlwZTsKLStpbnQgZ3N0X2ZmbXBlZ19waXBlX29wZW4gKEdzdEZGTXBlZ1BpcGUgKmZmcGlwZSwgaW50IGZsYWdzLCBBVklPQ29udGV4dCAqKiBjb250ZXh0KTsKLStpbnQgZ3N0X2ZmbXBlZ19waXBlX2Nsb3NlIChBVklPQ29udGV4dCAqIGgpOwotIAotLWV4dGVybiBVUkxQcm90b2NvbCBnc3RyZWFtZXJfcHJvdG9jb2w7Ci0tZXh0ZXJuIFVSTFByb3RvY29sIGdzdHBpcGVfcHJvdG9jb2w7Ci0rR19FTkRfREVDTFMKLSAKLSAvKiB1c2UgR1NUX0ZGTVBFRyBVUkxfU1RSRUFNSEVBREVSIHdpdGggVVJMX1dST05MWSBpZiB0aGUgZmlyc3QKLSAgKiBidWZmZXIgc2hvdWxkIGJlIHVzZWQgYXMgc3RyZWFtaGVhZGVyIHByb3BlcnR5IG9uIHRoZSBwYWQncyBjYXBzLiAqLwotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY2ZnLmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY2ZnLmMKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NmZy5jCTIwMTEtMDctMTIgMTY6MzU6MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY2ZnLmMJMjAxNC0wOC0wOCAxNToyNDoxNy44OTk4NTM2MTIgKzAyMDAKLUBAIC0xNDcsNyArMTQ3LDYgQEAKLSAgICAgICB7RkZfRENUX0ZBU1RJTlQsICJGYXN0IEludGVnZXIiLCAiZmFzdGludCJ9LAotICAgICAgIHtGRl9EQ1RfSU5ULCAiQWNjdXJhdGUgSW50ZWdlciIsICJpbnQifSwKLSAgICAgICB7RkZfRENUX01NWCwgIk1NWCIsICJtbXgifSwKLS0gICAgICB7RkZfRENUX01MSUIsICJNTElCIiwgIm1saWIifSwKLSAgICAgICB7RkZfRENUX0FMVElWRUMsICJBTFRJVkVDIiwgImFsdGl2ZWMifSwKLSAgICAgICB7RkZfRENUX0ZBQU4sICJGQUFOIiwgImZhYW4ifSwKLSAgICAgICB7MCwgTlVMTCwgTlVMTH0sCi1AQCAtMTczLDggKzE3Miw2IEBACi0gICAgICAge0ZGX0lEQ1RfU0lNUExFLCAiU2ltcGxlIiwgInNpbXBsZSJ9LAotICAgICAgIHtGRl9JRENUX1NJTVBMRU1NWCwgIlNpbXBsZSBNTVgiLCAic2ltcGxlbW14In0sCi0gICAgICAge0ZGX0lEQ1RfTElCTVBFRzJNTVgsICJMSUJNUEVHMk1NWCIsICJsaWJtcGVnMm1teCJ9LAotLSAgICAgIHtGRl9JRENUX1BTMiwgIlBTMiIsICJwczIifSwKLS0gICAgICB7RkZfSURDVF9NTElCLCAiTUxJQiIsICJtbGliIn0sCi0gICAgICAge0ZGX0lEQ1RfQVJNLCAiQVJNIiwgImFybSJ9LAotICAgICAgIHtGRl9JRENUX0FMVElWRUMsICJBTFRJVkVDIiwgImFsdGl2ZWMifSwKLSAgICAgICB7RkZfSURDVF9TSDQsICJTSDQiLCAic2g0In0sCi1AQCAtMjYzLDE2ICsyNjAsMTEgQEAKLSAKLSAgIGlmICghZmZtcGVnX2ZsYWdzX3R5cGUpIHsKLSAgICAgc3RhdGljIGNvbnN0IEdGbGFnc1ZhbHVlIGZmbXBlZ19mbGFnc1tdID0gewotLSAgICAgIHtDT0RFQ19GTEFHX09CTUMsICJVc2Ugb3ZlcmxhcHBlZCBibG9jayBtb3Rpb24gY29tcGVuc2F0aW9uIChoMjYzKykiLAotLSAgICAgICAgICAib2JtYyJ9LAotICAgICAgIHtDT0RFQ19GTEFHX1FTQ0FMRSwgIlVzZSBmaXhlZCBxc2NhbGUiLCAicXNjYWxlIn0sCi0gICAgICAge0NPREVDX0ZMQUdfNE1WLCAiQWxsb3cgNCBNViBwZXIgTUIiLCAiNG12In0sCi0tICAgICAge0NPREVDX0ZMQUdfSDI2M1BfQUlWLCAiSC4yNjMgYWx0ZXJuYXRpdmUgaW50ZXIgVkxDIiwgImFpdiJ9LAotICAgICAgIHtDT0RFQ19GTEFHX1FQRUwsICJRdWFydGVsIFBlbCBNb3Rpb24gQ29tcGVuc2F0aW9uIiwgInFwZWwifSwKLSAgICAgICB7Q09ERUNfRkxBR19HTUMsICJHTUMiLCAiZ21jIn0sCi0gICAgICAge0NPREVDX0ZMQUdfTVYwLCAiQWx3YXlzIHRyeSBhIE1CIHdpdGggTVYgKDAsMCkiLCAibXYwIn0sCi0tICAgICAge0NPREVDX0ZMQUdfUEFSVCwKLS0gICAgICAgICAgIlN0b3JlIE1WLCBEQyBhbmQgQUMgY29lZmZpY2llbnRzIGluIHNlcGVyYXRlIHBhcnRpdGlvbnMiLCAicGFydCJ9LAotICAgICAgIHtDT0RFQ19GTEFHX0xPT1BfRklMVEVSLCAiTG9vcCBmaWx0ZXIiLCAibG9vcC1maWx0ZXIifSwKLSAgICAgICB7Q09ERUNfRkxBR19HUkFZLCAiT25seSBkZWNvZGUvZW5jb2RlIGdyYXlzY2FsZSIsICJncmF5In0sCi0gICAgICAge0NPREVDX0ZMQUdfTk9STUFMSVpFX0FRUCwKLUBAIC0yODIsMTMgKzI3NCw5IEBACi0gICAgICAgICAgICJnbG9iYWwtaGVhZGVycyJ9LAotICAgICAgIHtDT0RFQ19GTEFHX0FDX1BSRUQsICJIMjYzIEFkdmFuY2VkIEludHJhIENvZGluZyAvIE1QRUc0IEFDIHByZWRpY3Rpb24iLAotICAgICAgICAgICAiYWljIn0sCi0tICAgICAge0NPREVDX0ZMQUdfSDI2M1BfVU1WLCAiVW5saW1pdGVkIE1vdGlvbiBWZWN0b3IiLCAidW12In0sCi0gICAgICAge0NPREVDX0ZMQUdfQ0JQX1JELCAiUmF0ZSBEaXN0b3JhdGlvbiBPcHRpbWl6YXRpb24gZm9yIENCUCIsICJjYnAtcmQifSwKLSAgICAgICB7Q09ERUNfRkxBR19RUF9SRCwgIlJhdGUgRGlzdG9yYXRpb24gT3B0aW1pemF0aW9uIGZvciBRUCBzZWxlY3Rpb24iLAotICAgICAgICAgICAicXAtcmQifSwKLS0gICAgICB7Q09ERUNfRkxBR19IMjYzUF9TTElDRV9TVFJVQ1QsICJIMjYzIHNsaWNlIHN0cnVjdCIsICJzcyJ9LAotLSAgICAgIHtDT0RFQ19GTEFHX1NWQ0RfU0NBTl9PRkZTRVQsCi0tICAgICAgICAgICJSZXNlcnZlIHNwYWNlIGZvciBTVkNEIHNjYW4gb2Zmc2V0IHVzZXIgZGF0YSIsICJzY2Fub2Zmc2V0In0sCi0gICAgICAge0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCwgIkNsb3NlZCBHT1AiLCAiY2xvc2VkZ29wIn0sCi0gICAgICAgezAsIE5VTEwsIE5VTEx9LAotICAgICB9OwotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jCTIwMTEtMTAtMzEgMTE6MTQ6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYwkyMDE0LTA4LTA4IDE1OjMxOjMwLjk2ODg2OTEzOSArMDIwMAotQEAgLTI1LDggKzI1LDEwIEBACi0gI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSAjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSAjaW5jbHVkZSA8YXZjb2RlYy5oPgotKyNpbmNsdWRlIDxjaGFubmVsX2xheW91dC5oPgotICNlbHNlCi0gI2luY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgotKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi1AQCAtMzUsNDMgKzM3LDYgQEAKLSAKLSAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvY29kZWMtdXRpbHMuaD4KLSAKLS0vKgotLSAqIFJlYWQgYSBwYWxldHRlIGZyb20gYSBjYXBzLgotLSAqLwotLQotLXN0YXRpYyB2b2lkCi0tZ3N0X2ZmbXBlZ19nZXRfcGFsZXR0ZSAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCkKLS17Ci0tICBHc3RTdHJ1Y3R1cmUgKnN0ciA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotLSAgY29uc3QgR1ZhbHVlICpwYWxldHRlX3Y7Ci0tICBjb25zdCBHc3RCdWZmZXIgKnBhbGV0dGU7Ci0tCi0tICAvKiBkbyB3ZSBoYXZlIGEgcGFsZXR0ZT8gKi8KLS0gIGlmICgocGFsZXR0ZV92ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0ciwgInBhbGV0dGVfZGF0YSIpKSAmJiBjb250ZXh0KSB7Ci0tICAgIHBhbGV0dGUgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAocGFsZXR0ZV92KTsKLS0gICAgaWYgKEdTVF9CVUZGRVJfU0laRSAocGFsZXR0ZSkgPj0gQVZQQUxFVFRFX1NJWkUpIHsKLS0gICAgICBpZiAoY29udGV4dC0+cGFsY3RybCkKLS0gICAgICAgIGF2X2ZyZWUgKGNvbnRleHQtPnBhbGN0cmwpOwotLSAgICAgIGNvbnRleHQtPnBhbGN0cmwgPSBhdl9tYWxsb2MgKHNpemVvZiAoQVZQYWxldHRlQ29udHJvbCkpOwotLSAgICAgIGNvbnRleHQtPnBhbGN0cmwtPnBhbGV0dGVfY2hhbmdlZCA9IDE7Ci0tICAgICAgbWVtY3B5IChjb250ZXh0LT5wYWxjdHJsLT5wYWxldHRlLCBHU1RfQlVGRkVSX0RBVEEgKHBhbGV0dGUpLAotLSAgICAgICAgICBBVlBBTEVUVEVfU0laRSk7Ci0tICAgIH0KLS0gIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nc3RfZmZtcGVnX3NldF9wYWxldHRlIChHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotLXsKLS0gIGlmIChjb250ZXh0LT5wYWxjdHJsKSB7Ci0tICAgIEdzdEJ1ZmZlciAqcGFsZXR0ZSA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoQVZQQUxFVFRFX1NJWkUpOwotLQotLSAgICBtZW1jcHkgKEdTVF9CVUZGRVJfREFUQSAocGFsZXR0ZSksIGNvbnRleHQtPnBhbGN0cmwtPnBhbGV0dGUsCi0tICAgICAgICBBVlBBTEVUVEVfU0laRSk7Ci0tICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJwYWxldHRlX2RhdGEiLCBHU1RfVFlQRV9CVUZGRVIsIHBhbGV0dGUsIE5VTEwpOwotLSAgfQotLX0KLS0KLSAvKiBJTVBPUlRBTlQ6IEtlZXAgdGhpcyBzb3J0ZWQgYnkgdGhlIGZmbXBlZyBjaGFubmVsIG1hc2tzICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdAotIHsKLUBAIC03OSwyNiArNDQsMjYgQEAKLSAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGdzdDsKLSB9IF9mZl90b19nc3RfbGF5b3V0W10gPSB7Ci0gICB7Ci0tICBDSF9GUk9OVF9MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUfSwgewotLSAgQ0hfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwgewotLSAgQ0hfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVJ9LCB7Ci0tICBDSF9MT1dfRlJFUVVFTkNZLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkV9LCB7Ci0tICBDSF9CQUNLX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVH0sIHsKLS0gIENIX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFR9LCB7Ci0tICBDSF9GUk9OVF9MRUZUX09GX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVF9PRl9DRU5URVJ9LCB7Ci0tICBDSF9GUk9OVF9SSUdIVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUX09GX0NFTlRFUn0sIHsKLS0gIENIX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0NFTlRFUn0sIHsKLS0gIENIX1NJREVfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZUfSwgewotLSAgQ0hfU0lERV9SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9SSUdIVH0sIHsKLS0gIENIX1RPUF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0tICBDSF9UT1BfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLS0gIENIX1RPUF9GUk9OVF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0tICBDSF9UT1BfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0tICBDSF9UT1BfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfVE9QX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfVE9QX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0tICBDSF9TVEVSRU9fTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLS0gIENIX1NURVJFT19SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9Ci0rICBBVl9DSF9GUk9OVF9MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUfSwgewotKyAgQVZfQ0hfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwgewotKyAgQVZfQ0hfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVJ9LCB7Ci0rICBBVl9DSF9MT1dfRlJFUVVFTkNZLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkV9LCB7Ci0rICBBVl9DSF9CQUNLX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVH0sIHsKLSsgIEFWX0NIX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFR9LCB7Ci0rICBBVl9DSF9GUk9OVF9MRUZUX09GX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVF9PRl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9GUk9OVF9SSUdIVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUX09GX0NFTlRFUn0sIHsKLSsgIEFWX0NIX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0NFTlRFUn0sIHsKLSsgIEFWX0NIX1NJREVfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZUfSwgewotKyAgQVZfQ0hfU0lERV9SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9SSUdIVH0sIHsKLSsgIEFWX0NIX1RPUF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9GUk9OVF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9TVEVSRU9fTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLSsgIEFWX0NIX1NURVJFT19SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9Ci0gfTsKLSAKLSBzdGF0aWMgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKgotQEAgLTM0Miw4ICszMDcsOCBAQAotIAotICAgICBpZiAoY2hhbm5lbF9sYXlvdXQgPT0gMCkgewotICAgICAgIGNvbnN0IGd1aW50NjQgZGVmYXVsdF9jaGFubmVsX3NldFtdID0gewotLSAgICAgICAgMCwgMCwgQ0hfTEFZT1VUX1NVUlJPVU5ELCBDSF9MQVlPVVRfUVVBRCwgQ0hfTEFZT1VUXzVQT0lOVDAsCi0tICAgICAgICBDSF9MQVlPVVRfNVBPSU5UMSwgMCwgQ0hfTEFZT1VUXzdQT0lOVDEKLSsgICAgICAgIDAsIDAsIEFWX0NIX0xBWU9VVF9TVVJST1VORCwgQVZfQ0hfTEFZT1VUX1FVQUQsIEFWX0NIX0xBWU9VVF81UE9JTlQwLAotKyAgICAgICAgQVZfQ0hfTEFZT1VUXzVQT0lOVDEsIDAsIEFWX0NIX0xBWU9VVF83UE9JTlQxCi0gICAgICAgfTsKLSAKLSAgICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci1AQCAtMTI2Nyw4ICsxMjMyLDYgQEAKLSAgICAgY2FzZSBDT0RFQ19JRF9GTElDOgotICAgICBjYXNlIENPREVDX0lEX1ZNRFZJREVPOgotICAgICBjYXNlIENPREVDX0lEX1ZNREFVRElPOgotLSAgICBjYXNlIENPREVDX0lEX1NPTklDOgotLSAgICBjYXNlIENPREVDX0lEX1NPTklDX0xTOgotICAgICBjYXNlIENPREVDX0lEX1NOT1c6Ci0gICAgIGNhc2UgQ09ERUNfSURfVklYTDoKLSAgICAgY2FzZSBDT0RFQ19JRF9RUEVHOgotQEAgLTE2ODksMTEgKzE2NTIsNiBAQAotICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGRhdGEpOwotICAgICB9Ci0gCi0tICAgIC8qIHBhbGV0dGUgKi8KLS0gICAgaWYgKGNvbnRleHQpIHsKLS0gICAgICBnc3RfZmZtcGVnX3NldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLS0gICAgfQotLQotICAgICBHU1RfTE9HICgiY2FwcyBmb3IgY29kZWNfaWQ9JWQ6ICUiIEdTVF9QVFJfRk9STUFULCBjb2RlY19pZCwgY2Fwcyk7Ci0gCi0gICB9IGVsc2UgewotQEAgLTE4MzAsOSArMTc4OCw2IEBACi0gICAgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGJwcCwKLSAgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwKLSAgICAgICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIGVuZGlhbm5lc3MsIE5VTEwpOwotLSAgICAgICAgaWYgKGNhcHMgJiYgY29udGV4dCkgewotLSAgICAgICAgICBnc3RfZmZtcGVnX3NldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLS0gICAgICAgIH0KLSAgICAgICB9Ci0gICAgIH0gZWxzZSBpZiAoZm10KSB7Ci0gICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1yYXcteXV2IiwKLUBAIC0xODU3LDcgKzE4MTIsNyBAQAotICAqLwotIAotIHN0YXRpYyBHc3RDYXBzICoKLS1nc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChlbnVtIFNhbXBsZUZvcm1hdCBzYW1wbGVfZm10LAotK2dzdF9mZm1wZWdfc21wZm10X3RvX2NhcHMgKGVudW0gQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2ZtdCwKLSAgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBlbnVtIENvZGVjSUQgY29kZWNfaWQpCi0gewotICAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci1AQCAtMTg2NywyMiArMTgyMiwyMiBAQAotICAgZ2Jvb2xlYW4gc2lnbmVkbmVzcyA9IEZBTFNFOwotIAotICAgc3dpdGNoIChzYW1wbGVfZm10KSB7Ci0tICAgIGNhc2UgU0FNUExFX0ZNVF9TMTY6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMTY6Ci0gICAgICAgc2lnbmVkbmVzcyA9IFRSVUU7Ci0gICAgICAgYnBwID0gMTY7Ci0gICAgICAgYnJlYWs7Ci0gCi0tICAgIGNhc2UgU0FNUExFX0ZNVF9TMzI6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMzI6Ci0gICAgICAgc2lnbmVkbmVzcyA9IFRSVUU7Ci0gICAgICAgYnBwID0gMzI7Ci0gICAgICAgYnJlYWs7Ci0gCi0tICAgIGNhc2UgU0FNUExFX0ZNVF9GTFQ6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9GTFQ6Ci0gICAgICAgaW50ZWdlciA9IEZBTFNFOwotICAgICAgIGJwcCA9IDMyOwotICAgICAgIGJyZWFrOwotIAotLSAgICBjYXNlIFNBTVBMRV9GTVRfREJMOgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfREJMOgotICAgICAgIGludGVnZXIgPSBGQUxTRTsKLSAgICAgICBicHAgPSA2NDsKLSAgICAgICBicmVhazsKLUBAIC0xOTQxLDEyICsxODk2LDEyIEBACi0gICAgIH0KLSAgIH0gZWxzZSB7Ci0gICAgIEdzdENhcHMgKnRlbXA7Ci0tICAgIGVudW0gU2FtcGxlRm9ybWF0IGk7Ci0rICAgIGVudW0gQVZTYW1wbGVGb3JtYXQgaTsKLSAgICAgQVZDb2RlY0NvbnRleHQgY3R4ID0geyAwLCB9OwotIAotICAgICBjdHguY2hhbm5lbHMgPSAtMTsKLSAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLS0gICAgZm9yIChpID0gMDsgaSA8PSBTQU1QTEVfRk1UX0RCTDsgaSsrKSB7Ci0rICAgIGZvciAoaSA9IDA7IGkgPD0gQVZfU0FNUExFX0ZNVF9EQkw7IGkrKykgewotICAgICAgIHRlbXAgPSBnc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChpLCBlbmNvZGUgPyAmY3R4IDogTlVMTCwgY29kZWNfaWQpOwotICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgdGVtcCk7Ci1AQCAtMjA0OSw5ICsyMDA0LDkgQEAKLSAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZW5kaWFubmVzcyIsICZlbmRpYW5uZXNzKSkgewotICAgICAgIGlmIChlbmRpYW5uZXNzID09IEdfQllURV9PUkRFUikgewotICAgICAgICAgaWYgKHdpZHRoID09IDMyKQotLSAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gU0FNUExFX0ZNVF9GTFQ7Ci0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX0ZMVDsKLSAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDY0KQotLSAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gU0FNUExFX0ZNVF9EQkw7Ci0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX0RCTDsKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0gZWxzZSB7Ci1AQCAtMjA2Miw5ICsyMDE3LDkgQEAKLSAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZW5kaWFubmVzcyIsICZlbmRpYW5uZXNzKSkgewotICAgICAgIGlmICgoZW5kaWFubmVzcyA9PSBHX0JZVEVfT1JERVIpICYmIChzaWduZWRuZXNzID09IFRSVUUpKSB7Ci0gICAgICAgICBpZiAoKHdpZHRoID09IDE2KSAmJiAoZGVwdGggPT0gMTYpKQotLSAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gU0FNUExFX0ZNVF9TMTY7Ci0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MxNjsKLSAgICAgICAgIGVsc2UgaWYgKCh3aWR0aCA9PSAzMikgJiYgKGRlcHRoID09IDMyKSkKLS0gICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IFNBTVBMRV9GTVRfUzMyOwotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMzI7Ci0gICAgICAgfQotICAgICB9Ci0gICB9Ci1AQCAtMjE5MCw3ICsyMTQ1LDYgQEAKLSAgICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKGJwcCA9PSA4KSB7Ci0gICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1BBTDg7Ci0tICAgICAgICAgIGdzdF9mZm1wZWdfZ2V0X3BhbGV0dGUgKGNhcHMsIGNvbnRleHQpOwotICAgICAgICAgfQotICAgICAgIH0KLSAgICAgfQotQEAgLTI1NzYsNyArMjUzMCw2IEBACi0gICBzd2l0Y2ggKGNvZGVjX3R5cGUpIHsKLSAgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0gICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3BpeGZtdCAoY2FwcywgY29udGV4dCwgY29kZWNfaWQgPT0gQ09ERUNfSURfUkFXVklERU8pOwotLSAgICAgIGdzdF9mZm1wZWdfZ2V0X3BhbGV0dGUgKGNhcHMsIGNvbnRleHQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSAgICAgICBnc3RfZmZtcGVnX2NhcHNfdG9fc21wZm10IChjYXBzLCBjb250ZXh0LCBGQUxTRSk7Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLm9yaWcgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5vcmlnCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLm9yaWcJMjAxNC0wOC0wOCAxNTozMDozNC4wMDY4NjcwOTcgKzAyMDAKLUBAIC0wLDAgKzEsMzQ0NyBAQAotKy8qIEdTdHJlYW1lcgotKyAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+Ci0rICogVGhpcyBmaWxlOgotKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0IFJvbmFsZCBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSsjaW5jbHVkZSA8Z3N0L2dzdC5oPgotKyNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotKyNpbmNsdWRlIDxhdmNvZGVjLmg+Ci0rI2luY2x1ZGUgPGNoYW5uZWxfbGF5b3V0Lmg+PgotKyNlbHNlCi0rI2luY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgotKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgImdzdGZmbXBlZy5oIgotKyNpbmNsdWRlICJnc3RmZm1wZWdjb2RlY21hcC5oIgotKwotKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9jb2RlYy11dGlscy5oPgotKwotKy8qCi0rICogUmVhZCBhIHBhbGV0dGUgZnJvbSBhIGNhcHMuCi0rICovCi0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnX2dldF9wYWxldHRlIChjb25zdCBHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIEdzdFN0cnVjdHVyZSAqc3RyID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0rICBjb25zdCBHVmFsdWUgKnBhbGV0dGVfdjsKLSsgIGNvbnN0IEdzdEJ1ZmZlciAqcGFsZXR0ZTsKLSsKLSsgIC8qIGRvIHdlIGhhdmUgYSBwYWxldHRlPyAqLwotKyAgaWYgKChwYWxldHRlX3YgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RyLCAicGFsZXR0ZV9kYXRhIikpICYmIGNvbnRleHQpIHsKLSsgICAgcGFsZXR0ZSA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyIChwYWxldHRlX3YpOwotKyAgICBpZiAoR1NUX0JVRkZFUl9TSVpFIChwYWxldHRlKSA+PSBBVlBBTEVUVEVfU0laRSkgewotKyAgICAgIGlmIChjb250ZXh0LT5wYWxjdHJsKQotKyAgICAgICAgYXZfZnJlZSAoY29udGV4dC0+cGFsY3RybCk7Ci0rICAgICAgY29udGV4dC0+cGFsY3RybCA9IGF2X21hbGxvYyAoc2l6ZW9mIChBVlBhbGV0dGVDb250cm9sKSk7Ci0rICAgICAgY29udGV4dC0+cGFsY3RybC0+cGFsZXR0ZV9jaGFuZ2VkID0gMTsKLSsgICAgICBtZW1jcHkgKGNvbnRleHQtPnBhbGN0cmwtPnBhbGV0dGUsIEdTVF9CVUZGRVJfREFUQSAocGFsZXR0ZSksCi0rICAgICAgICAgIEFWUEFMRVRURV9TSVpFKTsKLSsgICAgfQotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdfc2V0X3BhbGV0dGUgKEdzdENhcHMgKiBjYXBzLCBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQpCi0rewotKyAgaWYgKGNvbnRleHQtPnBhbGN0cmwpIHsKLSsgICAgR3N0QnVmZmVyICpwYWxldHRlID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChBVlBBTEVUVEVfU0laRSk7Ci0rCi0rICAgIG1lbWNweSAoR1NUX0JVRkZFUl9EQVRBIChwYWxldHRlKSwgY29udGV4dC0+cGFsY3RybC0+cGFsZXR0ZSwKLSsgICAgICAgIEFWUEFMRVRURV9TSVpFKTsKLSsgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInBhbGV0dGVfZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgcGFsZXR0ZSwgTlVMTCk7Ci0rICB9Ci0rfQotKwotKy8qIElNUE9SVEFOVDogS2VlcCB0aGlzIHNvcnRlZCBieSB0aGUgZmZtcGVnIGNoYW5uZWwgbWFza3MgKi8KLStzdGF0aWMgY29uc3Qgc3RydWN0Ci0rewotKyAgZ3VpbnQ2NCBmZjsKLSsgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGdzdDsKLSt9IF9mZl90b19nc3RfbGF5b3V0W10gPSB7Ci0rICB7Ci0rICBBVl9DSF9GUk9OVF9MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUfSwgewotKyAgQVZfQ0hfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwgewotKyAgQVZfQ0hfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVJ9LCB7Ci0rICBBVl9DSF9MT1dfRlJFUVVFTkNZLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkV9LCB7Ci0rICBBVl9DSF9CQUNLX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVH0sIHsKLSsgIEFWX0NIX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFR9LCB7Ci0rICBBVl9DSF9GUk9OVF9MRUZUX09GX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVF9PRl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9GUk9OVF9SSUdIVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUX09GX0NFTlRFUn0sIHsKLSsgIEFWX0NIX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0NFTlRFUn0sIHsKLSsgIEFWX0NIX1NJREVfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZUfSwgewotKyAgQVZfQ0hfU0lERV9SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9SSUdIVH0sIHsKLSsgIEFWX0NIX1RPUF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9GUk9OVF9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9TVEVSRU9fTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLSsgIEFWX0NIX1NURVJFT19SSUdIVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9Ci0rfTsKLSsKLStzdGF0aWMgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKgotK2dzdF9mZl9jaGFubmVsX2xheW91dF90b19nc3QgKGd1aW50NjQgY2hhbm5lbF9sYXlvdXQsIGd1aW50IGNoYW5uZWxzKQotK3sKLSsgIGd1aW50IG5jaGFubmVscyA9IDAsIGksIGo7Ci0rICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiAqcG9zID0gTlVMTDsKLSsgIGdib29sZWFuIG5vbmVfbGF5b3V0ID0gRkFMU0U7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgewotKyAgICBpZiAoKGNoYW5uZWxfbGF5b3V0ICYgKEdfR1VJTlQ2NF9DT05TVEFOVCAoMSkgPDwgaSkpICE9IDApIHsKLSsgICAgICBuY2hhbm5lbHMrKzsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKGNoYW5uZWxfbGF5b3V0ID09IDApIHsKLSsgICAgbmNoYW5uZWxzID0gY2hhbm5lbHM7Ci0rICAgIG5vbmVfbGF5b3V0ID0gVFJVRTsKLSsgIH0KLSsKLSsgIGlmIChuY2hhbm5lbHMgIT0gY2hhbm5lbHMpIHsKLSsgICAgR1NUX0VSUk9SICgiTnVtYmVyIG9mIGNoYW5uZWxzIGlzIGRpZmZlcmVudCAoJXUgIT0gJXUpIiwgY2hhbm5lbHMsCi0rICAgICAgICBuY2hhbm5lbHMpOwotKyAgICByZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIHBvcyA9IGdfbmV3IChHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiwgbmNoYW5uZWxzKTsKLSsKLSsgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgR19OX0VMRU1FTlRTIChfZmZfdG9fZ3N0X2xheW91dCk7IGkrKykgewotKyAgICBpZiAoKGNoYW5uZWxfbGF5b3V0ICYgX2ZmX3RvX2dzdF9sYXlvdXRbaV0uZmYpICE9IDApIHsKLSsgICAgICBwb3NbaisrXSA9IF9mZl90b19nc3RfbGF5b3V0W2ldLmdzdDsKLSsKLSsgICAgICBpZiAoX2ZmX3RvX2dzdF9sYXlvdXRbaV0uZ3N0ID09IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkUpCi0rICAgICAgICBub25lX2xheW91dCA9IFRSVUU7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChqICE9IG5jaGFubmVscykgewotKyAgICBHU1RfV0FSTklORyAoIlVua25vd24gY2hhbm5lbHMgaW4gY2hhbm5lbCBsYXlvdXQgLSBhc3N1bWluZyBOT05FIGxheW91dCIpOwotKyAgICBub25lX2xheW91dCA9IFRSVUU7Ci0rICB9Ci0rCi0rICBpZiAoIW5vbmVfbGF5b3V0ICYmICFnc3RfYXVkaW9fY2hlY2tfY2hhbm5lbF9wb3NpdGlvbnMgKHBvcywgbmNoYW5uZWxzKSkgewotKyAgICBHU1RfRVJST1IgKCJJbnZhbGlkIGNoYW5uZWwgbGF5b3V0ICUiIEdfR1VJTlQ2NF9GT1JNQVQKLSsgICAgICAgICIgLSBhc3N1bWluZyBOT05FIGxheW91dCIsIGNoYW5uZWxfbGF5b3V0KTsKLSsgICAgbm9uZV9sYXlvdXQgPSBUUlVFOwotKyAgfQotKwotKyAgaWYgKG5vbmVfbGF5b3V0KSB7Ci0rICAgIGlmIChuY2hhbm5lbHMgPT0gMSkgewotKyAgICAgIHBvc1swXSA9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX01PTk87Ci0rICAgIH0gZWxzZSBpZiAobmNoYW5uZWxzID09IDIpIHsKLSsgICAgICBwb3NbMF0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOwotKyAgICAgIHBvc1sxXSA9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOwotKyAgICB9IGVsc2UgaWYgKGNoYW5uZWxfbGF5b3V0ID09IDApIHsKLSsgICAgICBnX2ZyZWUgKHBvcyk7Ci0rICAgICAgcG9zID0gTlVMTDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbmNoYW5uZWxzOyBpKyspCi0rICAgICAgICBwb3NbaV0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FOwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAobmNoYW5uZWxzID09IDEgJiYgcG9zWzBdID09IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NFTlRFUikgewotKyAgICBHU1RfREVCVUcgKCJtb25vIGNvbW1vbiBjYXNlOyB3b24ndCBzZXQgY2hhbm5lbCBwb3NpdGlvbnMiKTsKLSsgICAgZ19mcmVlIChwb3MpOwotKyAgICBwb3MgPSBOVUxMOwotKyAgfSBlbHNlIGlmIChuY2hhbm5lbHMgPT0gMiAmJiBwb3NbMF0gPT0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVAotKyAgICAgICYmIHBvc1sxXSA9PSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVCkgewotKyAgICBHU1RfREVCVUcgKCJzdGVyZW8gY29tbW9uIGNhc2U7IHdvbid0IHNldCBjaGFubmVsIHBvc2l0aW9ucyIpOwotKyAgICBnX2ZyZWUgKHBvcyk7Ci0rICAgIHBvcyA9IE5VTEw7Ci0rICB9Ci0rCi0rICByZXR1cm4gcG9zOwotK30KLSsKLSsvKiB0aGlzIG1hY3JvIG1ha2VzIGEgY2FwcyB3aWR0aCBmaXhlZCBvciB1bmZpeGVkIHdpZHRoL2hlaWdodAotKyAqIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UndmUgZ290IGEgY29udGV4dC4KLSsgKgotKyAqIFNlZSBiZWxvdyBmb3Igd2h5IHdlIHVzZSB0aGlzLgotKyAqCi0rICogV2Ugc2hvdWxkIGFjdHVhbGx5IGRvIHRoaXMgc3R1ZmYgYXQgdGhlIGVuZCwgbGlrZSBpbiByaWZmLW1lZGlhLmMsCi0rICogYnV0IEknbSB0b28gbGF6eSB0b2RheS4gTWF5YmUgbGF0ZXIuCi0rICovCi0rc3RhdGljIEdzdENhcHMgKgotK2dzdF9mZl92aWRfY2Fwc19uZXcgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZW51bSBDb2RlY0lEIGNvZGVjX2lkLAotKyAgICBjb25zdCBjaGFyICptaW1ldHlwZSwgY29uc3QgY2hhciAqZmllbGRuYW1lLCAuLi4pCi0rewotKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBOVUxMOwotKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci0rICB2YV9saXN0IHZhcl9hcmdzOwotKyAgZ2ludCBpOwotKwotKyAgR1NUX0xPRyAoImNvbnRleHQ6JXAsIGNvZGVjX2lkOiVkLCBtaW1ldHlwZTolcyIsIGNvbnRleHQsIGNvZGVjX2lkLCBtaW1ldHlwZSk7Ci0rCi0rICAvKiBmaXhlZCwgbm9uIHByb2JpbmcgY29udGV4dCAqLwotKyAgaWYgKGNvbnRleHQgIT0gTlVMTCAmJiBjb250ZXh0LT53aWR0aCAhPSAtMSkgewotKyAgICBnaW50IG51bSwgZGVub207Ci0rCi0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPndpZHRoLAotKyAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmhlaWdodCwgTlVMTCk7Ci0rCi0rICAgIG51bSA9IGNvbnRleHQtPnRpbWVfYmFzZS5kZW4gLyBjb250ZXh0LT50aWNrc19wZXJfZnJhbWU7Ci0rICAgIGRlbm9tID0gY29udGV4dC0+dGltZV9iYXNlLm51bTsKLSsKLSsgICAgaWYgKCFkZW5vbSkgewotKyAgICAgIEdTVF9MT0cgKCJpbnZhbGlkIGZyYW1lcmF0ZTogJWQvMCwgLT4gJWQvMSIsIG51bSwgbnVtKTsKLSsgICAgICBkZW5vbSA9IDE7Ci0rICAgIH0KLSsgICAgaWYgKGdzdF91dGlsX2ZyYWN0aW9uX2NvbXBhcmUgKG51bSwgZGVub20sIDEwMDAsIDEpID4gMCkgewotKyAgICAgIEdTVF9MT0cgKCJleGNlc3NpdmUgZnJhbWVyYXRlOiAlZC8lZCwgLT4gMC8xIiwgbnVtLCBkZW5vbSk7Ci0rICAgICAgbnVtID0gMDsKLSsgICAgICBkZW5vbSA9IDE7Ci0rICAgIH0KLSsgICAgR1NUX0xPRyAoInNldHRpbmcgZnJhbWVyYXRlOiAlZC8lZCIsIG51bSwgZGVub20pOwotKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBudW0sIGRlbm9tLCBOVUxMKTsKLSsgIH0gZWxzZSB7Ci0rICAgIC8qIHNvIHdlIGFyZSBhZnRlciByZXN0cmljdGVkIGNhcHMgaW4gdGhpcyBjYXNlICovCi0rICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICBjYXNlIENPREVDX0lEX0gyNjE6Ci0rICAgICAgewotKyAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDM1MiwKLSsgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgMjg4LAotKyAgICAgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwgR19NQVhJTlQsIDEsIE5VTEwpOwotKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgMTc2LAotKyAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgMTQ0LAotKyAgICAgICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9IMjYzOgotKyAgICAgIHsKLSsgICAgICAgIC8qIDEyOHg5NiwgMTc2eDE0NCwgMzUyeDI4OCwgNzA0eDU3NiwgYW5kIDE0MDh4MTE1Mi4gc2xpZ2h0bHkgcmVvcmRlcmVkCi0rICAgICAgICAgKiBiZWNhdXNlIHdlIHdhbnQgYXV0b21hdGljIG5lZ290aWF0aW9uIHRvIGdvIGFzIGNsb3NlIHRvIDMyMHgyNDAgYXMKLSsgICAgICAgICAqIHBvc3NpYmxlLiAqLwotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgd2lkdGhzW10gPSB7IDM1MiwgNzA0LCAxNzYsIDE0MDgsIDEyOCB9OwotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgaGVpZ2h0c1tdID0geyAyODgsIDU3NiwgMTQ0LCAxMTUyLCA5NiB9OwotKyAgICAgICAgR3N0Q2FwcyAqdGVtcDsKLSsgICAgICAgIGdpbnQgbl9zaXplcyA9IEdfTl9FTEVNRU5UUyAod2lkdGhzKTsKLSsKLSsgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9zaXplczsgaSsrKSB7Ci0rICAgICAgICAgIHRlbXAgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoc1tpXSwKLSsgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBoZWlnaHRzW2ldLAotKyAgICAgICAgICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OX1JBTkdFLCAwLCAxLCBHX01BWElOVCwgMSwgTlVMTCk7Ci0rCi0rICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgdGVtcCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9EVlZJREVPOgotKyAgICAgIHsKLSsgICAgICAgIHN0YXRpYyBzdHJ1Y3QKLSsgICAgICAgIHsKLSsgICAgICAgICAgZ3VpbnQzMiBjc3A7Ci0rICAgICAgICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKLSsgICAgICAgICAgZ2ludCBwYXJfbiwgcGFyX2Q7Ci0rICAgICAgICAgIGdpbnQgZnJhbWVyYXRlX24sIGZyYW1lcmF0ZV9kOwotKyAgICAgICAgfSBwcm9maWxlc1tdID0gewotKyAgICAgICAgICB7Ci0rICAgICAgICAgIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcxJywgJ0InKSwgNzIwLCA0ODAsIDEwLCAxMSwgMzAwMDAsIDEwMDF9LCB7Ci0rICAgICAgICAgIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcxJywgJ0InKSwgNzIwLCA0ODAsIDQwLCAzMywgMzAwMDAsIDEwMDF9LCB7Ci0rICAgICAgICAgIEdTVF9NQUtFX0ZPVVJDQyAoJ0knLCAnNCcsICcyJywgJzAnKSwgNzIwLCA1NzYsIDU5LCA1NCwgMjUsIDF9LCB7Ci0rICAgICAgICAgIEdTVF9NQUtFX0ZPVVJDQyAoJ0knLCAnNCcsICcyJywgJzAnKSwgNzIwLCA1NzYsIDExOCwgODEsIDI1LCAxfSwgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyksIDcyMCwgNTc2LCA1OSwgNTQsIDI1LCAxfSwgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyksIDcyMCwgNTc2LCAxMTgsIDgxLCAyNSwgMX0KLSsgICAgICAgIH07Ci0rICAgICAgICBHc3RDYXBzICp0ZW1wOwotKyAgICAgICAgZ2ludCBuX3NpemVzID0gR19OX0VMRU1FTlRTIChwcm9maWxlcyk7Ci0rCi0rICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fc2l6ZXM7IGkrKykgewotKyAgICAgICAgICB0ZW1wID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBwcm9maWxlc1tpXS53aWR0aCwKLSsgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBwcm9maWxlc1tpXS5oZWlnaHQsCi0rICAgICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIHByb2ZpbGVzW2ldLmZyYW1lcmF0ZV9uLAotKyAgICAgICAgICAgICAgcHJvZmlsZXNbaV0uZnJhbWVyYXRlX2QsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwKLSsgICAgICAgICAgICAgIHByb2ZpbGVzW2ldLnBhcl9uLCBwcm9maWxlc1tpXS5wYXJfZCwgTlVMTCk7Ci0rCi0rICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgdGVtcCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9ETlhIRDoKLSsgICAgICB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgMTkyMCwKLSsgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgMTA4MCwKLSsgICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKTsKLSsgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDEyODAsCi0rICAgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCA3MjAsCi0rICAgICAgICAgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwgR19NQVhJTlQsIDEsIE5VTEwpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIC8qIG5vIGZpeGVkIGNhcHMgb3Igc3BlY2lhbCByZXN0cmljdGlvbnMgYXBwbGllZDsKLSsgICAqIGRlZmF1bHQgdW5maXhlZCBzZXR0aW5nICovCi0rICBpZiAoIWNhcHMpIHsKLSsgICAgR1NUX0RFQlVHICgiQ3JlYXRpbmcgZGVmYXVsdCBjYXBzIik7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICJ3aWR0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMTYsIDQwOTYsCi0rICAgICAgICAiaGVpZ2h0IiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxNiwgNDA5NiwKLSsgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwgR19NQVhJTlQsIDEsIE5VTEwpOwotKyAgfQotKwotKyAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChjYXBzKTsgaSsrKSB7Ci0rICAgIHZhX3N0YXJ0ICh2YXJfYXJncywgZmllbGRuYW1lKTsKLSsgICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSk7Ci0rICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbGlzdCAoc3RydWN0dXJlLCBmaWVsZG5hbWUsIHZhcl9hcmdzKTsKLSsgICAgdmFfZW5kICh2YXJfYXJncyk7Ci0rICB9Ci0rCi0rICByZXR1cm4gY2FwczsKLSt9Ci0rCi0rLyogc2FtZSBmb3IgYXVkaW8gLSBub3cgd2l0aCBjaGFubmVscy9zYW1wbGUgcmF0ZQotKyAqLwotK3N0YXRpYyBHc3RDYXBzICoKLStnc3RfZmZfYXVkX2NhcHNfbmV3IChBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsIGVudW0gQ29kZWNJRCBjb2RlY19pZCwKLSsgICAgY29uc3QgY2hhciAqbWltZXR5cGUsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgLi4uKQotK3sKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBOVUxMOwotKyAgZ2ludCBpOwotKyAgdmFfbGlzdCB2YXJfYXJnczsKLSsKLSsgIC8qIGZpeGVkLCBub24tcHJvYmluZyBjb250ZXh0ICovCi0rICBpZiAoY29udGV4dCAhPSBOVUxMICYmIGNvbnRleHQtPmNoYW5uZWxzICE9IC0xKSB7Ci0rICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uICpwb3M7Ci0rICAgIGd1aW50NjQgY2hhbm5lbF9sYXlvdXQgPSBjb250ZXh0LT5jaGFubmVsX2xheW91dDsKLSsKLSsgICAgaWYgKGNoYW5uZWxfbGF5b3V0ID09IDApIHsKLSsgICAgICBjb25zdCBndWludDY0IGRlZmF1bHRfY2hhbm5lbF9zZXRbXSA9IHsKLSsgICAgICAgIDAsIDAsIEFWX0NIX0xBWU9VVF9TVVJST1VORCwgQVZfQ0hfTEFZT1VUX1FVQUQsIEFWX0NIX0xBWU9VVF81UE9JTlQwLAotKyAgICAgICAgQVZfQ0hfTEFZT1VUXzVQT0lOVDEsIDAsIEFWX0NIX0xBWU9VVF83UE9JTlQxCi0rICAgICAgfTsKLSsKLSsgICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0VBQzM6Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FDMzoKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfRFRTOgotKyAgICAgICAgICBpZiAoY29udGV4dC0+Y2hhbm5lbHMgPiAwCi0rICAgICAgICAgICAgICAmJiBjb250ZXh0LT5jaGFubmVscyA8IEdfTl9FTEVNRU5UUyAoZGVmYXVsdF9jaGFubmVsX3NldCkpCi0rICAgICAgICAgICAgY2hhbm5lbF9sYXlvdXQgPSBkZWZhdWx0X2NoYW5uZWxfc2V0W2NvbnRleHQtPmNoYW5uZWxzIC0gMV07Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICJyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+c2FtcGxlX3JhdGUsCi0rICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5jaGFubmVscywgTlVMTCk7Ci0rCi0rICAgIHBvcyA9IGdzdF9mZl9jaGFubmVsX2xheW91dF90b19nc3QgKGNoYW5uZWxfbGF5b3V0LCBjb250ZXh0LT5jaGFubmVscyk7Ci0rICAgIGlmIChwb3MgIT0gTlVMTCkgewotKyAgICAgIGdzdF9hdWRpb19zZXRfY2hhbm5lbF9wb3NpdGlvbnMgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApLCBwb3MpOwotKyAgICAgIGdfZnJlZSAocG9zKTsKLSsgICAgfQotKyAgfSBlbHNlIHsKLSsgICAgZ2ludCBtYXhjaGFubmVscyA9IDI7Ci0rICAgIGNvbnN0IGdpbnQgKnJhdGVzID0gTlVMTDsKLSsgICAgZ2ludCBuX3JhdGVzID0gMDsKLSsKLSsgICAgLyogc28gd2UgbXVzdCBiZSBhZnRlciByZXN0cmljdGVkIGNhcHMgaW4gdGhpcyBjYXNlICovCi0rICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICBjYXNlIENPREVDX0lEX0FBQzoKLSsgICAgICBjYXNlIENPREVDX0lEX0FBQ19MQVRNOgotKyAgICAgIGNhc2UgQ09ERUNfSURfRFRTOgotKyAgICAgICAgbWF4Y2hhbm5lbHMgPSA2OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9NUDI6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0KLSsgICAgICAgICAgICB7IDQ4MDAwLCA0NDEwMCwgMzIwMDAsIDI0MDAwLCAyMjA1MCwgMTYwMDAgfTsKLSsgICAgICAgIG5fcmF0ZXMgPSBHX05fRUxFTUVOVFMgKGxfcmF0ZXMpOwotKyAgICAgICAgcmF0ZXMgPSBsX3JhdGVzOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfRUFDMzoKLSsgICAgICBjYXNlIENPREVDX0lEX0FDMzoKLSsgICAgICB7Ci0rICAgICAgICBjb25zdCBzdGF0aWMgZ2ludCBsX3JhdGVzW10gPSB7IDQ4MDAwLCA0NDEwMCwgMzIwMDAgfTsKLSsgICAgICAgIG1heGNoYW5uZWxzID0gNjsKLSsgICAgICAgIG5fcmF0ZXMgPSBHX05fRUxFTUVOVFMgKGxfcmF0ZXMpOwotKyAgICAgICAgcmF0ZXMgPSBsX3JhdGVzOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRzcyMjoKLSsgICAgICB7Ci0rICAgICAgICBjb25zdCBzdGF0aWMgZ2ludCBsX3JhdGVzW10gPSB7IDE2MDAwIH07Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIG1heGNoYW5uZWxzID0gMTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0c3MjY6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyA4MDAwIH07Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIG1heGNoYW5uZWxzID0gMTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1NXRjoKLSsgICAgICB7Ci0rICAgICAgICBjb25zdCBzdGF0aWMgZ2ludCBsX3JhdGVzW10gPSB7IDExMDI1LCAyMjA1MCwgNDQxMDAgfTsKLSsgICAgICAgIG5fcmF0ZXMgPSBHX05fRUxFTUVOVFMgKGxfcmF0ZXMpOwotKyAgICAgICAgcmF0ZXMgPSBsX3JhdGVzOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfUk9RX0RQQ006Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyAyMjA1MCB9OwotKyAgICAgICAgbl9yYXRlcyA9IEdfTl9FTEVNRU5UUyAobF9yYXRlcyk7Ci0rICAgICAgICByYXRlcyA9IGxfcmF0ZXM7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BTVJfTkI6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyA4MDAwIH07Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDE7Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX0FNUl9XQjoKLSsgICAgICB7Ci0rICAgICAgICBjb25zdCBzdGF0aWMgZ2ludCBsX3JhdGVzW10gPSB7IDE2MDAwIH07Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDE7Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgLyogVE9ETzogaGFuZGxlIGNvbnRleHQtPmNoYW5uZWxfbGF5b3V0cyBoZXJlIHRvIHNldAotKyAgICAgKiB0aGUgbGlzdCBvZiBjaGFubmVsIGxheW91dHMgc3VwcG9ydGVkIGJ5IHRoZSBlbmNvZGVyLgotKyAgICAgKiBVbmZvcnR1bmF0ZWx5IG5vIGVuY29kZXIgdXNlcyB0aGlzIHlldC4uLi4KLSsgICAgICovCi0rICAgIC8qIHJlZ2FyZGxlc3Mgb2YgZW5jb2RlL2RlY29kZSwgb3BlbiB1cCBjaGFubmVscyBpZiBhcHBsaWNhYmxlICovCi0rICAgIC8qIFVudGlsIGRlY29kZXJzL2VuY29kZXJzIGV4cG9zZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMKLSsgICAgICogdGhleSBzdXBwb3J0LCB3ZSB3aGl0ZWxpc3QgdGhlbSBoZXJlLiAqLwotKyAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9XTUFQUk86Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9UUlVFSEQ6Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDg7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKG1heGNoYW5uZWxzID09IDEpCi0rICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBtYXhjaGFubmVscywgTlVMTCk7Ci0rICAgIGVsc2UKLSsgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICJjaGFubmVscyIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgbWF4Y2hhbm5lbHMsIE5VTEwpOwotKyAgICBpZiAobl9yYXRlcykgewotKyAgICAgIEdWYWx1ZSBsaXN0ID0geyAwLCB9OwotKyAgICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotKwotKyAgICAgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3JhdGVzOyBpKyspIHsKLSsgICAgICAgIEdWYWx1ZSB2ID0geyAwLCB9OwotKwotKyAgICAgICAgZ192YWx1ZV9pbml0ICgmdiwgR19UWVBFX0lOVCk7Ci0rICAgICAgICBnX3ZhbHVlX3NldF9pbnQgKCZ2LCByYXRlc1tpXSk7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdik7Ci0rICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmdik7Ci0rICAgICAgfQotKyAgICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKyAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJyYXRlIiwgJmxpc3QpOwotKyAgICAgIGdfdmFsdWVfdW5zZXQgKCZsaXN0KTsKLSsgICAgfSBlbHNlCi0rICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInJhdGUiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDQwMDAsIDk2MDAwLCBOVUxMKTsKLSsgIH0KLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7IGkrKykgewotKyAgICB2YV9zdGFydCAodmFyX2FyZ3MsIGZpZWxkbmFtZSk7Ci0rICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIGkpOwotKyAgICBnc3Rfc3RydWN0dXJlX3NldF92YWxpc3QgKHN0cnVjdHVyZSwgZmllbGRuYW1lLCB2YXJfYXJncyk7Ci0rICAgIHZhX2VuZCAodmFyX2FyZ3MpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIENvbnZlcnQgYSBGRk1QRUcgY29kZWMgSUQgYW5kIG9wdGlvbmFsIEFWQ29kZWNDb250ZXh0Ci0rICogdG8gYSBHc3RDYXBzLiBJZiB0aGUgY29udGV4dCBpcyBvbW1pdHRlZCwgbm8gZml4ZWQgdmFsdWVzCi0rICogZm9yIHZpZGVvL2F1ZGlvIHNpemUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgR3N0Q2FwcwotKyAqCi0rICogQ29kZWNJRCBpcyBwcmltYXJpbHkgbWVhbnQgZm9yIGNvbXByZXNzZWQgZGF0YSBHc3RDYXBzIQotKyAqCi0rICogZW5jb2RlIGlzIGEgc3BlY2lhbCBwYXJhbWV0ZXIuIGdzdGZmbXBlZ2RlYyB3aWxsIHNheQotKyAqIEZBTFNFLCBnc3RmZm1wZWdlbmMgd2lsbCBzYXkgVFJVRS4gVGhlIG91dHB1dCBjYXBzCi0rICogZGVwZW5kcyBvbiB0aGlzLCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgd2lsbCBiZSB2ZXJ5Ci0rICogc3BlY2lmaWMsIGRlZmluZWQsIGZpeGVkIGFuZCBjb3JyZWN0IGNhcHMgZm9yIGVuY29kZXJzLAotKyAqIHlldCB2ZXJ5IHdpZGUsICJmb3JnaXZpbmciIGNhcHMgZm9yIGRlY29kZXJzLiBFeGFtcGxlCi0rICogZm9yIG1wMzogZGVjb2RlOiBhdWRpby9tcGVnLG1wZWd2ZXJzaW9uPTEsbGF5ZXI9WzEtM10KLSsgKiBidXQgZW5jb2RlOiBhdWRpby9tcGVnLG1wZWd2ZXJzaW9uPTEsbGF5ZXI9MyxiaXRyYXRlPXgsCi0rICogcmF0ZT14LGNoYW5uZWxzPXguCi0rICovCi0rCi0rR3N0Q2FwcyAqCi0rZ3N0X2ZmbXBlZ19jb2RlY2lkX3RvX2NhcHMgKGVudW0gQ29kZWNJRCBjb2RlY19pZCwKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBnYm9vbGVhbiBlbmNvZGUpCi0rewotKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci0rICBnYm9vbGVhbiBidWlsZGNhcHMgPSBGQUxTRTsKLSsKLSsgIEdTVF9MT0cgKCJjb2RlY19pZDolZCwgY29udGV4dDolcCwgZW5jb2RlOiVkIiwgY29kZWNfaWQsIGNvbnRleHQsIGVuY29kZSk7Ci0rCi0rICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgIGNhc2UgQ09ERUNfSURfTVBFRzFWSURFTzoKLSsgICAgICAvKiBGSVhNRTogYml0cmF0ZSAqLwotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL21wZWciLAotKyAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLAotKyAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NUEVHMlZJREVPOgotKyAgICAgIGlmIChlbmNvZGUpIHsKLSsgICAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby9tcGVnIiwKLSsgICAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAyLAotKyAgICAgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsIE5VTEwpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAvKiBkZWNvZGUgYm90aCBNUEVHLTEgYW5kIE1QRUctMjsgd2lkdGgvaGVpZ2h0L2ZwcyBhcmUgYWxsIGluCi0rICAgICAgICAgKiB0aGUgTVBFRyB2aWRlbyBzdHJlYW0gaGVhZGVycywgc28gbWF5IGJlIG9taXR0ZWQgZnJvbSBjYXBzLiAqLwotKyAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby9tcGVnIiwKLSsgICAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIDIsCi0rICAgICAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01QRUcyVklERU9fWFZNQzoKLSsgICAgICAvKiB0aGlzIGlzIGEgc3BlY2lhbCBJRCAtIGRvbid0IG5lZWQgaXQgaW4gR1N0cmVhbWVyLCBJIHRoaW5rICovCi0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSDI2MzoKLSsgICAgICBpZiAoZW5jb2RlKSB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWgyNjMiLAotKyAgICAgICAgICAgICJ2YXJpYW50IiwgR19UWVBFX1NUUklORywgIml0dSIsCi0rICAgICAgICAgICAgImgyNjN2ZXJzaW9uIiwgR19UWVBFX1NUUklORywgImgyNjMiLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogZG9uJ3QgcGFzcyBjb2RlY19pZCwgd2UgY2FuIGRlY29kZSBvdGhlciB2YXJpYW50cyB3aXRoIHRoZSBIMjYzCi0rICAgICAgICAgKiBkZWNvZGVyIHRoYXQgZG9uJ3QgaGF2ZSBzcGVjaWZpYyBzaXplIHJlcXVpcmVtZW50cwotKyAgICAgICAgICovCi0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgQ09ERUNfSURfTk9ORSwgInZpZGVvL3gtaDI2MyIsCi0rICAgICAgICAgICAgInZhcmlhbnQiLCBHX1RZUEVfU1RSSU5HLCAiaXR1IiwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0gyNjNQOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaDI2MyIsCi0rICAgICAgICAgICJ2YXJpYW50IiwgR19UWVBFX1NUUklORywgIml0dSIsCi0rICAgICAgICAgICJoMjYzdmVyc2lvbiIsIEdfVFlQRV9TVFJJTkcsICJoMjYzcCIsIE5VTEwpOwotKyAgICAgIGlmIChlbmNvZGUgJiYgY29udGV4dCkgewotKwotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiYW5uZXgtZiIsIEdfVFlQRV9CT09MRUFOLCBjb250ZXh0LT5mbGFncyAmIENPREVDX0ZMQUdfNE1WLAotKyAgICAgICAgICAgICJhbm5leC1qIiwgR19UWVBFX0JPT0xFQU4sIGNvbnRleHQtPmZsYWdzICYgQ09ERUNfRkxBR19MT09QX0ZJTFRFUiwKLSsgICAgICAgICAgICAiYW5uZXgtaSIsIEdfVFlQRV9CT09MRUFOLCBjb250ZXh0LT5mbGFncyAmIENPREVDX0ZMQUdfQUNfUFJFRCwKLSsgICAgICAgICAgICAiYW5uZXgtdCIsIEdfVFlQRV9CT09MRUFOLCBjb250ZXh0LT5mbGFncyAmIENPREVDX0ZMQUdfQUNfUFJFRCwKLSsgICAgICAgICAgICBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSDI2M0k6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1pbnRlbC1oMjYzIiwKLSsgICAgICAgICAgInZhcmlhbnQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZWwiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9IMjYxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaDI2MSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1JWMTA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlYyMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjMwOgotKyAgICBjYXNlIENPREVDX0lEX1JWNDA6Ci0rICAgIHsKLSsgICAgICBnaW50IHZlcnNpb247Ci0rCi0rICAgICAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9SVjQwOgotKyAgICAgICAgICB2ZXJzaW9uID0gNDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1JWMzA6Ci0rICAgICAgICAgIHZlcnNpb24gPSAzOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUlYyMDoKLSsgICAgICAgICAgdmVyc2lvbiA9IDI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgdmVyc2lvbiA9IDE7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsKLSsgICAgICAvKiBGSVhNRTogY29udGV4dC0+c3ViX2lkIG11c3QgYmUgZmlsbGVkIGluIGR1cmluZyBkZWNvZGluZyAqLwotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcG4tcmVhbHZpZGVvIiwKLSsgICAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwKLSsgICAgICAgICAgInJtdmVyc2lvbiIsIEdfVFlQRV9JTlQsIHZlcnNpb24sIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiZm9ybWF0IiwgR19UWVBFX0lOVCwgY29udGV4dC0+c3ViX2lkLCBOVUxMKTsKLSsgICAgICAgIGlmIChjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA+PSA4KSB7Ci0rICAgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgICAic3ViZm9ybWF0IiwgR19UWVBFX0lOVCwgR1NUX1JFQURfVUlOVDMyX0JFIChjb250ZXh0LT5leHRyYWRhdGEpLAotKyAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVAxOgotKyAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8vbXBlZyIsCi0rICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsICJsYXllciIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01QMjoKLSsgICAgICAvKiBGSVhNRTogYml0cmF0ZSAqLwotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL21wZWciLAotKyAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCAibGF5ZXIiLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NUDM6Ci0rICAgICAgaWYgKGVuY29kZSkgewotKyAgICAgICAgLyogRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL21wZWciLAotKyAgICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsICJsYXllciIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAvKiBEZWNvZGVzIE1QRUctMSBsYXllciAxLzIvMy4gU2FtcGxlcmF0ZSwgY2hhbm5lbHMgZXQgYWwgYXJlCi0rICAgICAgICAgKiBpbiB0aGUgTVBFRyBhdWRpbyBoZWFkZXIsIHNvIG1heSBiZSBvbWl0dGVkIGZyb20gY2Fwcy4gKi8KLSsgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8vbXBlZyIsCi0rICAgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwKLSsgICAgICAgICAgICAibGF5ZXIiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIDMsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NVVNFUEFDSzc6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICAiYXVkaW8veC1mZm1wZWctcGFyc2VkLW11c2VwYWNrIiwgInN0cmVhbXZlcnNpb24iLCBHX1RZUEVfSU5ULCA3LAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NVVNFUEFDSzg6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICAiYXVkaW8veC1mZm1wZWctcGFyc2VkLW11c2VwYWNrIiwgInN0cmVhbXZlcnNpb24iLCBHX1RZUEVfSU5ULCA4LAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9BQzM6Ci0rICAgICAgLyogRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWFjMyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0VBQzM6Ci0rICAgICAgLyogRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWVhYzMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9UUlVFSEQ6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC10cnVlLWhkIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQVRSQUMxOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtdm5kLnNvbnkuYXRyYWMxIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQVRSQUMzOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtdm5kLnNvbnkuYXRyYWMzIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRFRTOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtZHRzIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQVBFOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtZmZtcGVnLXBhcnNlZC1hcGUiLAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NTFA6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1tbHAiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9JTUM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1pbWMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgICAvKiBNSlBFRyBpcyBub3JtYWwgSlBFRywgTW90aW9uLUpQRUcgYW5kIFF1aWNrdGltZSBNSlBFRy1BLiBNSlBFR0IKLSsgICAgICAgKiBpcyBRdWlja3RpbWUncyBNSlBFRy1CLiBMSlBFRyBpcyBsb3NzbGVzcyBKUEVHLiBJIGRvbid0IGtub3cgd2hhdAotKyAgICAgICAqIHNwNXggaXMsIGJ1dCBpdCdzIGFwcGFyZW50bHkgc29tZXRoaW5nIEpQRUcuLi4gV2UgZG9uJ3Qgc2VwYXJhdGUKLSsgICAgICAgKiBiZXR3ZWVuIHRob3NlIGluIEdTdHJlYW1lci4gU2hvdWxkIHdlIChhdCBsZWFzdCBiZXR3ZWVuIE1KUEVHLAotKyAgICAgICAqIE1KUEVHLUIgYW5kIHNwNXggZGVjb2RpbmcuLi4pPyAqLwotKyAgICBjYXNlIENPREVDX0lEX01KUEVHOgotKyAgICBjYXNlIENPREVDX0lEX0xKUEVHOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL2pwZWciLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9TUDVYOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3NwNXgiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NSlBFR0I6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1tanBlZy1iIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVBFRzQ6Ci0rICAgICAgaWYgKGVuY29kZSAmJiBjb250ZXh0ICE9IE5VTEwpIHsKLSsgICAgICAgIC8qIEknbSBub3QgZXhhY3RseSBzdXJlIHdoYXQgZmZtcGVnIG91dHB1dHMuLi4gZmZtcGVnIGl0c2VsZiB1c2VzCi0rICAgICAgICAgKiB0aGUgQVZJIGZvdXJjYyAnRElWWCcsIGJ1dCAnbXA0dicgZm9yIFF1aWNrdGltZS4uLiAqLwotKyAgICAgICAgc3dpdGNoIChjb250ZXh0LT5jb2RlY190YWcpIHsKLSsgICAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdEJywgJ0knLCAnVicsICdYJyk6Ci0rICAgICAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1kaXZ4IiwKLSsgICAgICAgICAgICAgICAgImRpdnh2ZXJzaW9uIiwgR19UWVBFX0lOVCwgNSwgTlVMTCk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnbScsICdwJywgJzQnLCAndicpOgotKyAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8vbXBlZyIsCi0rICAgICAgICAgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsCi0rICAgICAgICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDQsIE5VTEwpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAvKiBUaGUgdHJpY2sgaGVyZSBpcyB0byBzZXBhcmF0ZSB4dmlkLCBkaXZ4LCBtcGVnNCwgM2l2eCBldCBhbCAqLwotKyAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8vbXBlZyIsCi0rICAgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgNCwKLSsgICAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLCBOVUxMKTsKLSsgICAgICAgIGlmIChlbmNvZGUpIHsKLSsgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgICAgICAgICAidmlkZW8veC1kaXZ4IiwgImRpdnh2ZXJzaW9uIiwgR19UWVBFX0lOVCwgNSwgTlVMTCkpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgICAgICAgICAidmlkZW8veC1kaXZ4IiwgImRpdnh2ZXJzaW9uIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCA0LCA1LAotKyAgICAgICAgICAgICAgICAgIE5VTEwpKTsKLSsgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgICAgICAgICAidmlkZW8veC14dmlkIiwgTlVMTCkpOwotKyAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICAgICAgICAgICJ2aWRlby94LTNpdngiLCBOVUxMKSk7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1JBV1ZJREVPOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZtcGVnX2NvZGVjdHlwZV90b19jYXBzIChBVk1FRElBX1RZUEVfVklERU8sIGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICBlbmNvZGUpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01TTVBFRzRWMToKLSsgICAgY2FzZSBDT0RFQ19JRF9NU01QRUc0VjI6Ci0rICAgIGNhc2UgQ09ERUNfSURfTVNNUEVHNFYzOgotKyAgICB7Ci0rICAgICAgZ2ludCB2ZXJzaW9uID0gNDEgKyBjb2RlY19pZCAtIENPREVDX0lEX01TTVBFRzRWMTsKLSsKLSsgICAgICAvKiBlbmNvZGUtRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LW1zbXBlZyIsCi0rICAgICAgICAgICJtc21wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwgTlVMTCk7Ci0rICAgICAgaWYgKCFlbmNvZGUgJiYgY29kZWNfaWQgPT0gQ09ERUNfSURfTVNNUEVHNFYzKSB7Ci0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICAgICAgICAidmlkZW8veC1kaXZ4IiwgImRpdnh2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgTlVMTCkpOwotKyAgICAgIH0KLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1dNVjE6Ci0rICAgIGNhc2UgQ09ERUNfSURfV01WMjoKLSsgICAgewotKyAgICAgIGdpbnQgdmVyc2lvbiA9IChjb2RlY19pZCA9PSBDT0RFQ19JRF9XTVYxKSA/IDEgOiAyOwotKwotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtd212IiwKLSsgICAgICAgICAgIndtdnZlcnNpb24iLCBHX1RZUEVfSU5ULCB2ZXJzaW9uLCBOVUxMKTsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0ZMVjE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1mbGFzaC12aWRlbyIsCi0rICAgICAgICAgICJmbHZ2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU1ZRMToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXN2cSIsCi0rICAgICAgICAgICJzdnF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU1ZRMzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXN2cSIsCi0rICAgICAgICAgICJzdnF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRFZBVURJTzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWR2IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRFZWSURFTzoKLSsgICAgewotKyAgICAgIGlmIChlbmNvZGUgJiYgY29udGV4dCkgewotKyAgICAgICAgZ3VpbnQzMiBmb3VyY2M7Ci0rCi0rICAgICAgICBzd2l0Y2ggKGNvbnRleHQtPnBpeF9mbXQpIHsKLSsgICAgICAgICAgY2FzZSBQSVhfRk1UX1lVWVY0MjI6Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1knLCAnMicpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIFBJWF9GTVRfWVVWNDIwUDoKLSsgICAgICAgICAgICBmb3VyY2MgPSBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgUElYX0ZNVF9ZVVZBNDIwUDoKLSsgICAgICAgICAgICBmb3VyY2MgPSBHU1RfTUFLRV9GT1VSQ0MgKCdBJywgJzQnLCAnMicsICcwJyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgUElYX0ZNVF9ZVVY0MTFQOgotKyAgICAgICAgICAgIGZvdXJjYyA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcxJywgJ0InKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBQSVhfRk1UX1lVVjQyMlA6Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzInLCAnQicpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIFBJWF9GTVRfWVVWNDEwUDoKLSsgICAgICAgICAgICBmb3VyY2MgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJ1UnLCAnVicsICc5Jyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgR1NUX1dBUk5JTkcKLSsgICAgICAgICAgICAgICAgKCJDb3VsZG50JyBmaW5kIGZvdXJjYyBmb3IgcGl4Zm10ICVkLCBkZWZhdWx0aW5nIHRvIEk0MjAiLAotKyAgICAgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10KTsKLSsgICAgICAgICAgICBmb3VyY2MgPSBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWR2IiwKLSsgICAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLAotKyAgICAgICAgICAgICJmb3JtYXQiLCBHU1RfVFlQRV9GT1VSQ0MsIGZvdXJjYywgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZHYiLAotKyAgICAgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1dNQVYxOgotKyAgICBjYXNlIENPREVDX0lEX1dNQVYyOgotKyAgICB7Ci0rICAgICAgZ2ludCB2ZXJzaW9uID0gKGNvZGVjX2lkID09IENPREVDX0lEX1dNQVYxKSA/IDEgOiAyOwotKwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXdtYSIsCi0rICAgICAgICAgICAgIndtYXZlcnNpb24iLCBHX1RZUEVfSU5ULCB2ZXJzaW9uLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXdtYSIsCi0rICAgICAgICAgICAgIndtYXZlcnNpb24iLCBHX1RZUEVfSU5ULCB2ZXJzaW9uLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMCwgR19NQVhJTlQsCi0rICAgICAgICAgICAgImJpdHJhdGUiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDAsIEdfTUFYSU5ULCBOVUxMKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9XTUFQUk86Ci0rICAgIHsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXdtYSIsCi0rICAgICAgICAgICJ3bWF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9XTUFWT0lDRToKLSsgICAgewotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtd21zIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NQUNFMzoKLSsgICAgY2FzZSBDT0RFQ19JRF9NQUNFNjoKLSsgICAgewotKyAgICAgIGdpbnQgdmVyc2lvbiA9IChjb2RlY19pZCA9PSBDT0RFQ19JRF9NQUNFMykgPyAzIDogNjsKLSsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LW1hY2UiLAotKyAgICAgICAgICAibWFjZXZlcnNpb24iLCBHX1RZUEVfSU5ULCB2ZXJzaW9uLCBOVUxMKTsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0hVRkZZVVY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1odWZmeXV2IiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0NZVVY6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1jb21wcmVzc2VkLXl1diIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0gyNjQ6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1oMjY0IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSU5ERU81OgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaW5kZW8iLAotKyAgICAgICAgICAiaW5kZW92ZXJzaW9uIiwgR19UWVBFX0lOVCwgNSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSU5ERU8zOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaW5kZW8iLAotKyAgICAgICAgICAiaW5kZW92ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSU5ERU8yOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaW5kZW8iLAotKyAgICAgICAgICAiaW5kZW92ZXJzaW9uIiwgR19UWVBFX0lOVCwgMiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRkxBU0hTVjoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWZsYXNoLXNjcmVlbiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZQMzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZwMyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZQNToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZwNSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZQNjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZwNiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZQNkY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC12cDYtZmxhc2giLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WUDZBOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdnA2LWFscGhhIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVlA4OgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdnA4IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVEhFT1JBOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdGhlb3JhIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQUFDOgotKyAgICB7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8vbXBlZyIsIE5VTEwpOwotKwotKyAgICAgIGlmICghZW5jb2RlKSB7Ci0rICAgICAgICBHVmFsdWUgYXJyID0geyAwLCB9OwotKyAgICAgICAgR1ZhbHVlIGl0ZW0gPSB7IDAsIH07Ci0rCi0rICAgICAgICBnX3ZhbHVlX2luaXQgKCZhcnIsIEdTVF9UWVBFX0xJU1QpOwotKyAgICAgICAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX0lOVCk7Ci0rICAgICAgICBnX3ZhbHVlX3NldF9pbnQgKCZpdGVtLCAyKTsKLSsgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmFyciwgJml0ZW0pOwotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICgmaXRlbSwgNCk7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZhcnIsICZpdGVtKTsKLSsgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKLSsKLSsgICAgICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoY2FwcywgIm1wZWd2ZXJzaW9uIiwgJmFycik7Ci0rICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmYXJyKTsKLSsKLSsgICAgICAgIGdfdmFsdWVfaW5pdCAoJmFyciwgR1NUX1RZUEVfTElTVCk7Ci0rICAgICAgICBnX3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfU1RSSU5HKTsKLSsgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJml0ZW0sICJyYXciKTsKLSsgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmFyciwgJml0ZW0pOwotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmaXRlbSwgImFkdHMiKTsKLSsgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmFyciwgJml0ZW0pOwotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmaXRlbSwgImFkaWYiKTsKLSsgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmFyciwgJml0ZW0pOwotKyAgICAgICAgZ192YWx1ZV91bnNldCAoJml0ZW0pOwotKwotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChjYXBzLCAic3RyZWFtLWZvcm1hdCIsICZhcnIpOwotKyAgICAgICAgZ192YWx1ZV91bnNldCAoJmFycik7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDQsCi0rICAgICAgICAgICAgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAicmF3IiwKLSsgICAgICAgICAgICAiYmFzZS1wcm9maWxlIiwgR19UWVBFX1NUUklORywgImxjIiwgTlVMTCk7Ci0rCi0rICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA+IDApCi0rICAgICAgICAgIGdzdF9jb2RlY191dGlsc19hYWNfY2Fwc19zZXRfbGV2ZWxfYW5kX3Byb2ZpbGUgKGNhcHMsCi0rICAgICAgICAgICAgICBjb250ZXh0LT5leHRyYWRhdGEsIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplKTsKLSsgICAgICB9Ci0rCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBDT0RFQ19JRF9BQUNfTEFUTTogICAgLyogTEFUTS9MT0FTIEFBQyBzeW50YXggKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9tcGVnIiwKLSsgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgNCwgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAibG9hcyIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FTVjE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1hc3VzIiwKLSsgICAgICAgICAgImFzdXN2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfQVNWMjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWFzdXMiLAotKyAgICAgICAgICAiYXN1c3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9GRlYxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZmZ2IiwKLSsgICAgICAgICAgImZmdnZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF80WE06Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC00eG0iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9YQU5fV0MzOgotKyAgICBjYXNlIENPREVDX0lEX1hBTl9XQzQ6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC14YW4iLAotKyAgICAgICAgICAid2N2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMyAtIENPREVDX0lEX1hBTl9XQzMgKyBjb2RlY19pZCwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQ0xKUjoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsCi0rICAgICAgICAgICJ2aWRlby94LWNpcnJ1cy1sb2dpYy1hY2N1cGFrIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRlJBUFM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1mcmFwcyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01ERUM6Ci0rICAgIGNhc2UgQ09ERUNfSURfUk9ROgotKyAgICBjYXNlIENPREVDX0lEX0lOVEVSUExBWV9WSURFTzoKLSsgICAgICBidWlsZGNhcHMgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZDUjE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1hdGktdmNyIiwKLSsgICAgICAgICAgInZjcnZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9SUFpBOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtYXBwbGUtdmlkZW8iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9DSU5FUEFLOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtY2luZXBhayIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICAgIC8qIFdTX1ZRQSBiZWxvZ25zIGhlcmUgKG9yZGVyKSAqLwotKwotKyAgICBjYXNlIENPREVDX0lEX01TUkxFOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmxlIiwKLSsgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJtaWNyb3NvZnQiLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCAoZ2ludCkgY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImRlcHRoIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCA2NCwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1FUUkxFOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmxlIiwKLSsgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJxdWlja3RpbWUiLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCAoZ2ludCkgY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImRlcHRoIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCA2NCwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01TVklERU8xOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtbXN2aWRlb2NvZGVjIiwKLSsgICAgICAgICAgIm1zdmlkZW92ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfV01WMzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXdtdiIsCi0rICAgICAgICAgICJ3bXZ2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfVkMxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtd212IiwKLSsgICAgICAgICAgIndtdnZlcnNpb24iLCBHX1RZUEVfSU5ULCAzLCAiZm9ybWF0IiwgR1NUX1RZUEVfRk9VUkNDLAotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdXJywgJ1YnLCAnQycsICcxJyksIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX1FETTI6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1xZG0yIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVNaSDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LW1zemgiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9aTElCOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtemxpYiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1RSVUVNT1RJT04xOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdHJ1ZW1vdGlvbiIsCi0rICAgICAgICAgICJ0cnVldmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX1RSVUVNT1RJT04yOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdHJ1ZW1vdGlvbiIsCi0rICAgICAgICAgICJ0cnVldmVyc2lvbiIsIEdfVFlQRV9JTlQsIDIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1VMVEk6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC11bHRpbW90aW9uIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVFNDQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWNhbXRhc2lhIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgKGdpbnQpIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJkZXB0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgOCwgMzIsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9LTVZDOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gta212YyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX05VVjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LW51diIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0dJRjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS9naWYiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9QTkc6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UvcG5nIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUFBNOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3BwbSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1BCTToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS9wYm0iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9QQU06Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAiLAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9QR006Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUENYOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtcGN4IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU0dJOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtc2dpIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVEFSR0E6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UveC10Z2EiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9USUZGOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3RpZmYiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9TVU5SQVNUOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtc3VuLXJhc3RlciIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1NNQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXNtYyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1FEUkFXOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcWRydyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0ROWEhEOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZG54aGQiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NSU1JQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LW1pbWljIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVk1OQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZtbmMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9UUlVFU1BFRUNIOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtdHJ1ZXNwZWVjaCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1FDRUxQOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3FjZWxwIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQU1WOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtYW12IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQUFTQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWFhc2MiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9MT0NPOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtbG9jbyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1pNQlY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC16bWJ2IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTEFHQVJJVEg6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1sYWdhcml0aCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0NTQ0Q6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1jYW1zdHVkaW8iLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCAoZ2ludCkgY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImRlcHRoIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCA4LCAzMiwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1dTX1ZRQToKLSsgICAgY2FzZSBDT0RFQ19JRF9JRENJTjoKLSsgICAgY2FzZSBDT0RFQ19JRF84QlBTOgotKyAgICBjYXNlIENPREVDX0lEX0ZMSUM6Ci0rICAgIGNhc2UgQ09ERUNfSURfVk1EVklERU86Ci0rICAgIGNhc2UgQ09ERUNfSURfVk1EQVVESU86Ci0rICAgIGNhc2UgQ09ERUNfSURfU05PVzoKLSsgICAgY2FzZSBDT0RFQ19JRF9WSVhMOgotKyAgICBjYXNlIENPREVDX0lEX1FQRUc6Ci0rICAgIGNhc2UgQ09ERUNfSURfUEdNWVVWOgotKyAgICBjYXNlIENPREVDX0lEX0ZGVkhVRkY6Ci0rICAgIGNhc2UgQ09ERUNfSURfV05WMToKLSsgICAgY2FzZSBDT0RFQ19JRF9NUDNBRFU6Ci0rICAgIGNhc2UgQ09ERUNfSURfTVAzT040OgotKyAgICBjYXNlIENPREVDX0lEX1dFU1RXT09EX1NORDE6Ci0rICAgIGNhc2UgQ09ERUNfSURfTU1WSURFTzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BVlM6Ci0rICAgIGNhc2UgQ09ERUNfSURfQ0FWUzoKLSsgICAgICBidWlsZGNhcHMgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICAgIC8qIHdlaXJkIHF1YXNpLWNvZGVjcyBmb3IgdGhlIGRlbXV4ZXJzIG9ubHkgKi8KLSsgICAgY2FzZSBDT0RFQ19JRF9QQ01fUzE2TEU6Ci0rICAgIGNhc2UgQ09ERUNfSURfUENNX1MxNkJFOgotKyAgICBjYXNlIENPREVDX0lEX1BDTV9VMTZMRToKLSsgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTE2QkU6Ci0rICAgIGNhc2UgQ09ERUNfSURfUENNX1M4OgotKyAgICBjYXNlIENPREVDX0lEX1BDTV9VODoKLSsgICAgewotKyAgICAgIGdpbnQgd2lkdGggPSAwLCBkZXB0aCA9IDAsIGVuZGlhbm5lc3MgPSAwOwotKyAgICAgIGdib29sZWFuIHNpZ25lZG5lc3MgPSBGQUxTRTsgICAgICAvKiBibGFibGEgKi8KLSsKLSsgICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9TMTZMRToKLSsgICAgICAgICAgd2lkdGggPSAxNjsKLSsgICAgICAgICAgZGVwdGggPSAxNjsKLSsgICAgICAgICAgZW5kaWFubmVzcyA9IEdfTElUVExFX0VORElBTjsKLSsgICAgICAgICAgc2lnbmVkbmVzcyA9IFRSVUU7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fUzE2QkU6Ci0rICAgICAgICAgIHdpZHRoID0gMTY7Ci0rICAgICAgICAgIGRlcHRoID0gMTY7Ci0rICAgICAgICAgIGVuZGlhbm5lc3MgPSBHX0JJR19FTkRJQU47Ci0rICAgICAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1UxNkxFOgotKyAgICAgICAgICB3aWR0aCA9IDE2OwotKyAgICAgICAgICBkZXB0aCA9IDE2OwotKyAgICAgICAgICBlbmRpYW5uZXNzID0gR19MSVRUTEVfRU5ESUFOOwotKyAgICAgICAgICBzaWduZWRuZXNzID0gRkFMU0U7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTE2QkU6Ci0rICAgICAgICAgIHdpZHRoID0gMTY7Ci0rICAgICAgICAgIGRlcHRoID0gMTY7Ci0rICAgICAgICAgIGVuZGlhbm5lc3MgPSBHX0JJR19FTkRJQU47Ci0rICAgICAgICAgIHNpZ25lZG5lc3MgPSBGQUxTRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9TODoKLSsgICAgICAgICAgd2lkdGggPSA4OwotKyAgICAgICAgICBkZXB0aCA9IDg7Ci0rICAgICAgICAgIGVuZGlhbm5lc3MgPSBHX0JZVEVfT1JERVI7Ci0rICAgICAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1U4OgotKyAgICAgICAgICB3aWR0aCA9IDg7Ci0rICAgICAgICAgIGRlcHRoID0gODsKLSsgICAgICAgICAgZW5kaWFubmVzcyA9IEdfQllURV9PUkRFUjsKLSsgICAgICAgICAgc2lnbmVkbmVzcyA9IEZBTFNFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIGdfYXNzZXJ0ICgwKTsgICAgICAgICAvKiBkb24ndCB3b3JyeSwgd2UgbmV2ZXIgZ2V0IGhlcmUgKi8KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKwotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtcmF3LWludCIsCi0rICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLAotKyAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwKLSsgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBlbmRpYW5uZXNzLAotKyAgICAgICAgICAic2lnbmVkIiwgR19UWVBFX0JPT0xFQU4sIHNpZ25lZG5lc3MsIE5VTEwpOwotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUENNX01VTEFXOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtbXVsYXciLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9QQ01fQUxBVzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWFsYXciLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9HNzIyOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL0c3MjIiLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImJsb2NrX2FsaWduIiwgR19UWVBFX0lOVCwgY29udGV4dC0+YmxvY2tfYWxpZ24sCi0rICAgICAgICAgICAgImJpdHJhdGUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRfcmF0ZSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRzcyNjoKLSsgICAgewotKyAgICAgIC8qIHRoZSBHNzI2IGRlY29kZXIgY2FuIGFsc28gaGFuZGxlIEc3MjEgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWFkcGNtIiwKLSsgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJnNzI2IiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpCi0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKwotKyAgICAgIGlmICghZW5jb2RlKSB7Ci0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby94LWFkcGNtIiwKLSsgICAgICAgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJnNzIxIiwKLSsgICAgICAgICAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwgInJhdGUiLCBHX1RZUEVfSU5ULCA4MDAwLCBOVUxMKSk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX1FUOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9XQVY6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0RLMzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfREs0OgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9XUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfU01KUEVHOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9BTVY6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0lTUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfRUFfRUFDUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfRUFfU0VBRDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9NUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV80WE06Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fWEE6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fQURYOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0NUOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX1NXRjoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9ZQU1BSEE6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fU0JQUk9fMjoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TQlBST18zOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX1NCUFJPXzQ6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfUjE6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfUjI6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfUjM6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfTUFYSVNfWEE6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfWEFTOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX1RIUDoKLSsgICAgewotKyAgICAgIGNvbnN0IGdjaGFyICpsYXlvdXQgPSBOVUxMOwotKwotKyAgICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX1FUOgotKyAgICAgICAgICBsYXlvdXQgPSAicXVpY2t0aW1lIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9XQVY6Ci0rICAgICAgICAgIGxheW91dCA9ICJkdmkiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0RLMzoKLSsgICAgICAgICAgbGF5b3V0ID0gImRrMyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfREs0OgotKyAgICAgICAgICBsYXlvdXQgPSAiZGs0IjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9XUzoKLSsgICAgICAgICAgbGF5b3V0ID0gIndlc3R3b29kIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9TTUpQRUc6Ci0rICAgICAgICAgIGxheW91dCA9ICJzbWpwZWciOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0FNVjoKLSsgICAgICAgICAgbGF5b3V0ID0gImFtdiI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfSVNTOgotKyAgICAgICAgICBsYXlvdXQgPSAiaXNzIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9FQV9FQUNTOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEtZWFjcyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfRUFfU0VBRDoKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLXNlYWQiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fTVM6Ci0rICAgICAgICAgIGxheW91dCA9ICJtaWNyb3NvZnQiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fNFhNOgotKyAgICAgICAgICBsYXlvdXQgPSAiNHhtIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1hBOgotKyAgICAgICAgICBsYXlvdXQgPSAieGEiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fQURYOgotKyAgICAgICAgICBsYXlvdXQgPSAiYWR4IjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fQ1Q6Ci0rICAgICAgICAgIGxheW91dCA9ICJjdCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TV0Y6Ci0rICAgICAgICAgIGxheW91dCA9ICJzd2YiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fWUFNQUhBOgotKyAgICAgICAgICBsYXlvdXQgPSAieWFtYWhhIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1NCUFJPXzI6Ci0rICAgICAgICAgIGxheW91dCA9ICJzYnBybzIiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fU0JQUk9fMzoKLSsgICAgICAgICAgbGF5b3V0ID0gInNicHJvMyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TQlBST180OgotKyAgICAgICAgICBsYXlvdXQgPSAic2Jwcm80IjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1IxOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEtcjEiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfUjI6Ci0rICAgICAgICAgIGxheW91dCA9ICJlYS1yMyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9FQV9SMzoKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLXIzIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX01BWElTX1hBOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEtbWF4aXMteGEiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfWEFTOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEteGFzIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1RIUDoKLSsgICAgICAgICAgbGF5b3V0ID0gInRocCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgZ19hc3NlcnQgKDApOyAgICAgICAgIC8qIGRvbid0IHdvcnJ5LCB3ZSBuZXZlciBnZXQgaGVyZSAqLwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogRklYTUU6IHNvbWVvbmUgcGxlYXNlIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMKLSsgICAgICAgKiBpbiB0aGlzIGNhcHMgZGVmaW5pdGlvbi4gKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWFkcGNtIiwKLSsgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsIGxheW91dCwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpCi0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQU1SX05COgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL0FNUiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FNUl9XQjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9BTVItV0IiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9HU006Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1nc20iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9HU01fTVM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8vbXMtZ3NtIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTkVMTFlNT1NFUjoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LW5lbGx5bW9zZXIiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9TSVBSOgotKyAgICB7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1zaXBybyIsIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJsZWFmX3NpemUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9SQV8xNDQ6Ci0rICAgIGNhc2UgQ09ERUNfSURfUkFfMjg4OgotKyAgICBjYXNlIENPREVDX0lEX0NPT0s6Ci0rICAgIHsKLSsgICAgICBnaW50IHZlcnNpb24gPSAwOwotKwotKyAgICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUkFfMTQ0OgotKyAgICAgICAgICB2ZXJzaW9uID0gMTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1JBXzI4ODoKLSsgICAgICAgICAgdmVyc2lvbiA9IDI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9DT09LOgotKyAgICAgICAgICB2ZXJzaW9uID0gODsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogRklYTUU6IHByb3BlcnRpZXM/ICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1wbi1yZWFsYXVkaW8iLAotKyAgICAgICAgICAicmF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImxlYWZfc2l6ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1JPUV9EUENNOgotKyAgICBjYXNlIENPREVDX0lEX0lOVEVSUExBWV9EUENNOgotKyAgICBjYXNlIENPREVDX0lEX1hBTl9EUENNOgotKyAgICBjYXNlIENPREVDX0lEX1NPTF9EUENNOgotKyAgICB7Ci0rICAgICAgY29uc3QgZ2NoYXIgKmxheW91dCA9IE5VTEw7Ci0rCi0rICAgICAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9ST1FfRFBDTToKLSsgICAgICAgICAgbGF5b3V0ID0gInJvcSI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9JTlRFUlBMQVlfRFBDTToKLSsgICAgICAgICAgbGF5b3V0ID0gImludGVycGxheSI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9YQU5fRFBDTToKLSsgICAgICAgICAgbGF5b3V0ID0gInhhbiI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9TT0xfRFBDTToKLSsgICAgICAgICAgbGF5b3V0ID0gInNvbCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgZ19hc3NlcnQgKDApOyAgICAgICAgIC8qIGRvbid0IHdvcnJ5LCB3ZSBuZXZlciBnZXQgaGVyZSAqLwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogRklYTUU6IHNvbWVvbmUgcGxlYXNlIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMKLSsgICAgICAgKiBpbiB0aGlzIGNhcHMgZGVmaW5pdGlvbi4gKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWRwY20iLAotKyAgICAgICAgICAibGF5b3V0IiwgR19UWVBFX1NUUklORywgbGF5b3V0LCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImJsb2NrX2FsaWduIiwgR19UWVBFX0lOVCwgY29udGV4dC0+YmxvY2tfYWxpZ24sCi0rICAgICAgICAgICAgImJpdHJhdGUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRfcmF0ZSwgTlVMTCk7Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9TSE9SVEVOOgotKyAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1zaG9ydGVuIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQUxBQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWFsYWMiLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAic2FtcGxlc2l6ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0ZMQUM6Ci0rICAgICAgLyogTm90ZSB0aGF0IGZmbXBlZyBoYXMgbm8gZW5jb2RlciB5ZXQsIGJ1dCBqdXN0IGZvciBzYWZldHkuIEluIHRoZQotKyAgICAgICAqIGVuY29kZXIgY2FzZSwgd2Ugd2FudCB0byBhZGQgdGhpbmdzIGxpa2Ugc2FtcGxlcmF0ZSwgY2hhbm5lbHMuLi4gKi8KLSsgICAgICBpZiAoIWVuY29kZSkgewotKyAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby94LWZsYWMiLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRFZEX1NVQlRJVExFOgotKyAgICBjYXNlIENPREVDX0lEX0RWQl9TVUJUSVRMRToKLSsgICAgICBjYXBzID0gTlVMTDsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9CTVA6Ci0rICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJpbWFnZS9ibXAiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9UVEE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC10dGEiLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAic2FtcGxlc2l6ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX1RXSU5WUToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXR3aW4tdnEiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHU1RfREVCVUcgKCJVbmtub3duIGNvZGVjIElEICVkLCBwbGVhc2UgYWRkIG1hcHBpbmcgaGVyZSIsIGNvZGVjX2lkKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGlmIChidWlsZGNhcHMpIHsKLSsgICAgQVZDb2RlYyAqY29kZWM7Ci0rCi0rICAgIGlmICgoY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciAoY29kZWNfaWQpKSB8fAotKyAgICAgICAgKGNvZGVjID0gYXZjb2RlY19maW5kX2VuY29kZXIgKGNvZGVjX2lkKSkpIHsKLSsgICAgICBnY2hhciAqbWltZSA9IE5VTEw7Ci0rCi0rICAgICAgR1NUX0xPRyAoIkNvdWxkIG5vdCBjcmVhdGUgc3RyZWFtIGZvcm1hdCBjYXBzIGZvciAlcyIsIGNvZGVjLT5uYW1lKTsKLSsKLSsgICAgICBzd2l0Y2ggKGNvZGVjLT50eXBlKSB7Ci0rICAgICAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICAgICAgbWltZSA9IGdfc3RyZHVwX3ByaW50ZiAoInZpZGVvL3gtZ3N0X2ZmLSVzIiwgY29kZWMtPm5hbWUpOwotKyAgICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsIG1pbWUsIE5VTEwpOwotKyAgICAgICAgICBnX2ZyZWUgKG1pbWUpOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgotKyAgICAgICAgICBtaW1lID0gZ19zdHJkdXBfcHJpbnRmICgiYXVkaW8veC1nc3RfZmYtJXMiLCBjb2RlYy0+bmFtZSk7Ci0rICAgICAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgbWltZSwgTlVMTCk7Ci0rICAgICAgICAgIGlmIChjb250ZXh0KQotKyAgICAgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsgICAgICAgICAgZ19mcmVlIChtaW1lKTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChjYXBzICE9IE5VTEwpIHsKLSsKLSsgICAgLyogc2V0IHByaXZhdGUgZGF0YSAqLwotKyAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA+IDApIHsKLSsgICAgICBHc3RCdWZmZXIgKmRhdGEgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGNvbnRleHQtPmV4dHJhZGF0YV9zaXplKTsKLSsKLSsgICAgICBtZW1jcHkgKEdTVF9CVUZGRVJfREFUQSAoZGF0YSksIGNvbnRleHQtPmV4dHJhZGF0YSwKLSsgICAgICAgICAgY29udGV4dC0+ZXh0cmFkYXRhX3NpemUpOwotKyAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJjb2RlY19kYXRhIiwgR1NUX1RZUEVfQlVGRkVSLCBkYXRhLCBOVUxMKTsKLSsgICAgICBnc3RfYnVmZmVyX3VucmVmIChkYXRhKTsKLSsgICAgfQotKwotKyAgICAvKiBwYWxldHRlICovCi0rICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoY2FwcywgY29udGV4dCk7Ci0rICAgIH0KLSsKLSsgICAgR1NUX0xPRyAoImNhcHMgZm9yIGNvZGVjX2lkPSVkOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY29kZWNfaWQsIGNhcHMpOwotKwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0xPRyAoIk5vIGNhcHMgZm91bmQgZm9yIGNvZGVjX2lkPSVkIiwgY29kZWNfaWQpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIENvbnZlcnQgYSBGRk1QRUcgUGl4ZWwgRm9ybWF0IGFuZCBvcHRpb25hbCBBVkNvZGVjQ29udGV4dAotKyAqIHRvIGEgR3N0Q2Fwcy4gSWYgdGhlIGNvbnRleHQgaXMgb21taXR0ZWQsIG5vIGZpeGVkIHZhbHVlcwotKyAqIGZvciB2aWRlby9hdWRpbyBzaXplIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIEdzdENhcHMKLSsgKgotKyAqIFNlZSBiZWxvdyBmb3IgdXNlZnVsbG5lc3MKLSsgKi8KLSsKLStHc3RDYXBzICoKLStnc3RfZmZtcGVnX3BpeGZtdF90b19jYXBzIChlbnVtIFBpeGVsRm9ybWF0IHBpeF9mbXQsIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwKLSsgICAgZW51bSBDb2RlY0lEIGNvZGVjX2lkKQotK3sKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKwotKyAgaW50IGJwcCA9IDAsIGRlcHRoID0gMCwgZW5kaWFubmVzcyA9IDA7Ci0rICBndWxvbmcgZ19tYXNrID0gMCwgcl9tYXNrID0gMCwgYl9tYXNrID0gMCwgYV9tYXNrID0gMDsKLSsgIGd1aW50MzIgZm10ID0gMDsKLSsKLSsgIHN3aXRjaCAocGl4X2ZtdCkgewotKyAgICBjYXNlIFBJWF9GTVRfWVVWSjQyMFA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0MjBQOgotKyAgICAgIGZtdCA9IEdTVF9NQUtFX0ZPVVJDQyAoJ0knLCAnNCcsICcyJywgJzAnKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVkE0MjBQOgotKyAgICAgIGZtdCA9IEdTVF9NQUtFX0ZPVVJDQyAoJ0EnLCAnNCcsICcyJywgJzAnKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1lVWVY0MjI6Ci0rICAgICAgZm10ID0gR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1knLCAnMicpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfUkdCMjQ6Ci0rICAgICAgYnBwID0gZGVwdGggPSAyNDsKLSsgICAgICBlbmRpYW5uZXNzID0gR19CSUdfRU5ESUFOOwotKyAgICAgIHJfbWFzayA9IDB4ZmYwMDAwOwotKyAgICAgIGdfbWFzayA9IDB4MDBmZjAwOwotKyAgICAgIGJfbWFzayA9IDB4MDAwMGZmOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfQkdSMjQ6Ci0rICAgICAgYnBwID0gZGVwdGggPSAyNDsKLSsgICAgICBlbmRpYW5uZXNzID0gR19CSUdfRU5ESUFOOwotKyAgICAgIHJfbWFzayA9IDB4MDAwMGZmOwotKyAgICAgIGdfbWFzayA9IDB4MDBmZjAwOwotKyAgICAgIGJfbWFzayA9IDB4ZmYwMDAwOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfWVVWSjQyMlA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0MjJQOgotKyAgICAgIGZtdCA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcyJywgJ0InKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVko0NDRQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDQ0UDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnNCcsICc0Jyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0IzMjoKLSsgICAgICBicHAgPSAzMjsKLSsgICAgICBkZXB0aCA9IDMyOwotKyAgICAgIGVuZGlhbm5lc3MgPSBHX0JJR19FTkRJQU47Ci0rI2lmIChHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOKQotKyAgICAgIHJfbWFzayA9IDB4MDBmZjAwMDA7Ci0rICAgICAgZ19tYXNrID0gMHgwMDAwZmYwMDsKLSsgICAgICBiX21hc2sgPSAweDAwMDAwMGZmOwotKyAgICAgIGFfbWFzayA9IDB4ZmYwMDAwMDA7Ci0rI2Vsc2UKLSsgICAgICByX21hc2sgPSAweDAwMDBmZjAwOwotKyAgICAgIGdfbWFzayA9IDB4MDBmZjAwMDA7Ci0rICAgICAgYl9tYXNrID0gMHhmZjAwMDAwMDsKLSsgICAgICBhX21hc2sgPSAweDAwMDAwMGZmOwotKyNlbmRpZgotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDEwUDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJ1UnLCAnVicsICc5Jyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0MTFQOgotKyAgICAgIGZtdCA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcxJywgJ0InKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1JHQjU2NToKLSsgICAgICBicHAgPSBkZXB0aCA9IDE2OwotKyAgICAgIGVuZGlhbm5lc3MgPSBHX0JZVEVfT1JERVI7Ci0rICAgICAgcl9tYXNrID0gMHhmODAwOwotKyAgICAgIGdfbWFzayA9IDB4MDdlMDsKLSsgICAgICBiX21hc2sgPSAweDAwMWY7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0I1NTU6Ci0rICAgICAgYnBwID0gMTY7Ci0rICAgICAgZGVwdGggPSAxNTsKLSsgICAgICBlbmRpYW5uZXNzID0gR19CWVRFX09SREVSOwotKyAgICAgIHJfbWFzayA9IDB4N2MwMDsKLSsgICAgICBnX21hc2sgPSAweDAzZTA7Ci0rICAgICAgYl9tYXNrID0gMHgwMDFmOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfUEFMODoKLSsgICAgICBicHAgPSBkZXB0aCA9IDg7Ci0rICAgICAgZW5kaWFubmVzcyA9IEdfQllURV9PUkRFUjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX0dSQVk4OgotKyAgICAgIGJwcCA9IGRlcHRoID0gODsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXJhdy1ncmF5IiwKLSsgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGJwcCwgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIC8qIGdpdmUgdXAgLi4uICovCi0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBpZiAoY2FwcyA9PSBOVUxMKSB7Ci0rICAgIGlmIChicHAgIT0gMCkgewotKyAgICAgIGlmIChyX21hc2sgIT0gMCkgewotKyAgICAgICAgaWYgKGFfbWFzaykgewotKyAgICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXJhdy1yZ2IiLAotKyAgICAgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGJwcCwKLSsgICAgICAgICAgICAgICJkZXB0aCIsIEdfVFlQRV9JTlQsIGRlcHRoLAotKyAgICAgICAgICAgICAgInJlZF9tYXNrIiwgR19UWVBFX0lOVCwgcl9tYXNrLAotKyAgICAgICAgICAgICAgImdyZWVuX21hc2siLCBHX1RZUEVfSU5ULCBnX21hc2ssCi0rICAgICAgICAgICAgICAiYmx1ZV9tYXNrIiwgR19UWVBFX0lOVCwgYl9tYXNrLAotKyAgICAgICAgICAgICAgImFscGhhX21hc2siLCBHX1RZUEVfSU5ULCBhX21hc2ssCi0rICAgICAgICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIGVuZGlhbm5lc3MsIE5VTEwpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1yYXctcmdiIiwKLSsgICAgICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBicHAsCi0rICAgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwKLSsgICAgICAgICAgICAgICJyZWRfbWFzayIsIEdfVFlQRV9JTlQsIHJfbWFzaywKLSsgICAgICAgICAgICAgICJncmVlbl9tYXNrIiwgR19UWVBFX0lOVCwgZ19tYXNrLAotKyAgICAgICAgICAgICAgImJsdWVfbWFzayIsIEdfVFlQRV9JTlQsIGJfbWFzaywKLSsgICAgICAgICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgZW5kaWFubmVzcywgTlVMTCk7Ci0rICAgICAgICB9Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmF3LXJnYiIsCi0rICAgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGJwcCwKLSsgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwKLSsgICAgICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIGVuZGlhbm5lc3MsIE5VTEwpOwotKyAgICAgICAgaWYgKGNhcHMgJiYgY29udGV4dCkgewotKyAgICAgICAgICBnc3RfZmZtcGVnX3NldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgIH0gZWxzZSBpZiAoZm10KSB7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1yYXcteXV2IiwKLSsgICAgICAgICAgImZvcm1hdCIsIEdTVF9UWVBFX0ZPVVJDQywgZm10LCBOVUxMKTsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKGNhcHMgIT0gTlVMTCkgewotKyAgICBHU1RfREVCVUcgKCJjYXBzIGZvciBwaXhfZm10PSVkOiAlIiBHU1RfUFRSX0ZPUk1BVCwgcGl4X2ZtdCwgY2Fwcyk7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfTE9HICgiTm8gY2FwcyBmb3VuZCBmb3IgcGl4X2ZtdD0lZCIsIHBpeF9mbXQpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIENvbnZlcnQgYSBGRk1QRUcgU2FtcGxlIEZvcm1hdCBhbmQgb3B0aW9uYWwgQVZDb2RlY0NvbnRleHQKLSsgKiB0byBhIEdzdENhcHMuIElmIHRoZSBjb250ZXh0IGlzIG9tbWl0dGVkLCBubyBmaXhlZCB2YWx1ZXMKLSsgKiBmb3IgdmlkZW8vYXVkaW8gc2l6ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBHc3RDYXBzCi0rICoKLSsgKiBTZWUgYmVsb3cgZm9yIHVzZWZ1bGxuZXNzCi0rICovCi0rCi0rc3RhdGljIEdzdENhcHMgKgotK2dzdF9mZm1wZWdfc21wZm10X3RvX2NhcHMgKGVudW0gQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2ZtdCwKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBlbnVtIENvZGVjSUQgY29kZWNfaWQpCi0rewotKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci0rCi0rICBpbnQgYnBwID0gMDsKLSsgIGdib29sZWFuIGludGVnZXIgPSBUUlVFOwotKyAgZ2Jvb2xlYW4gc2lnbmVkbmVzcyA9IEZBTFNFOwotKwotKyAgc3dpdGNoIChzYW1wbGVfZm10KSB7Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMTY6Ci0rICAgICAgc2lnbmVkbmVzcyA9IFRSVUU7Ci0rICAgICAgYnBwID0gMTY7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMzI6Ci0rICAgICAgc2lnbmVkbmVzcyA9IFRSVUU7Ci0rICAgICAgYnBwID0gMzI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9GTFQ6Ci0rICAgICAgaW50ZWdlciA9IEZBTFNFOwotKyAgICAgIGJwcCA9IDMyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfREJMOgotKyAgICAgIGludGVnZXIgPSBGQUxTRTsKLSsgICAgICBicHAgPSA2NDsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAvKiAuLiAqLwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgaWYgKGJwcCkgewotKyAgICBpZiAoaW50ZWdlcikgewotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtcmF3LWludCIsCi0rICAgICAgICAgICJzaWduZWQiLCBHX1RZUEVfQk9PTEVBTiwgc2lnbmVkbmVzcywKLSsgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0rICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIGJwcCwgImRlcHRoIiwgR19UWVBFX0lOVCwgYnBwLCBOVUxMKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXJhdy1mbG9hdCIsCi0rICAgICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09SREVSLAotKyAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBicHAsIE5VTEwpOwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAoY2FwcyAhPSBOVUxMKSB7Ci0rICAgIEdTVF9MT0cgKCJjYXBzIGZvciBzYW1wbGVfZm10PSVkOiAlIiBHU1RfUFRSX0ZPUk1BVCwgc2FtcGxlX2ZtdCwgY2Fwcyk7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfTE9HICgiTm8gY2FwcyBmb3VuZCBmb3Igc2FtcGxlX2ZtdD0lZCIsIHNhbXBsZV9mbXQpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotK0dzdENhcHMgKgotK2dzdF9mZm1wZWdfY29kZWN0eXBlX3RvX2F1ZGlvX2NhcHMgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwKLSsgICAgZW51bSBDb2RlY0lEIGNvZGVjX2lkLCBnYm9vbGVhbiBlbmNvZGUsIEFWQ29kZWMgKiBjb2RlYykKLSt7Ci0rICBHc3RDYXBzICpjYXBzID0gTlVMTDsKLSsKLSsgIEdTVF9ERUJVRyAoImNvbnRleHQ6JXAsIGNvZGVjX2lkOiVkLCBlbmNvZGU6JWQsIGNvZGVjOiVwIiwKLSsgICAgICBjb250ZXh0LCBjb2RlY19pZCwgZW5jb2RlLCBjb2RlYyk7Ci0rICBpZiAoY29kZWMpCi0rICAgIEdTVF9ERUJVRyAoInNhbXBsZV9mbXRzOiVwLCBzYW1wbGVyYXRlczolcCIsCi0rICAgICAgICBjb2RlYy0+c2FtcGxlX2ZtdHMsIGNvZGVjLT5zdXBwb3J0ZWRfc2FtcGxlcmF0ZXMpOwotKwotKyAgaWYgKGNvbnRleHQpIHsKLSsgICAgLyogU3BlY2lmaWMgY29kZWMgY29udGV4dCAqLwotKyAgICBjYXBzID0gZ3N0X2ZmbXBlZ19zbXBmbXRfdG9fY2FwcyAoY29udGV4dC0+c2FtcGxlX2ZtdCwgY29udGV4dCwgY29kZWNfaWQpOwotKyAgfSBlbHNlIGlmIChjb2RlYyAmJiBjb2RlYy0+c2FtcGxlX2ZtdHMpIHsKLSsgICAgR3N0Q2FwcyAqdGVtcDsKLSsgICAgaW50IGk7Ci0rCi0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0rICAgIGZvciAoaSA9IDA7IGNvZGVjLT5zYW1wbGVfZm10c1tpXSAhPSAtMTsgaSsrKSB7Ci0rICAgICAgdGVtcCA9Ci0rICAgICAgICAgIGdzdF9mZm1wZWdfc21wZm10X3RvX2NhcHMgKGNvZGVjLT5zYW1wbGVfZm10c1tpXSwgY29udGV4dCwgY29kZWNfaWQpOwotKyAgICAgIGlmICh0ZW1wICE9IE5VTEwpCi0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotKyAgICB9Ci0rICB9IGVsc2UgewotKyAgICBHc3RDYXBzICp0ZW1wOwotKyAgICBlbnVtIEFWU2FtcGxlRm9ybWF0IGk7Ci0rICAgIEFWQ29kZWNDb250ZXh0IGN0eCA9IHsgMCwgfTsKLSsKLSsgICAgY3R4LmNoYW5uZWxzID0gLTE7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPD0gQVZfU0FNUExFX0ZNVF9EQkw7IGkrKykgewotKyAgICAgIHRlbXAgPSBnc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChpLCBlbmNvZGUgPyAmY3R4IDogTlVMTCwgY29kZWNfaWQpOwotKyAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSsgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgdGVtcCk7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rICByZXR1cm4gY2FwczsKLSt9Ci0rCi0rR3N0Q2FwcyAqCi0rZ3N0X2ZmbXBlZ19jb2RlY3R5cGVfdG9fdmlkZW9fY2FwcyAoQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LAotKyAgICBlbnVtIENvZGVjSUQgY29kZWNfaWQsIGdib29sZWFuIGVuY29kZSwgQVZDb2RlYyAqIGNvZGVjKQotK3sKLSsgIEdzdENhcHMgKmNhcHM7Ci0rCi0rICBHU1RfTE9HICgiY29udGV4dDolcCwgY29kZWNfaWQ6JWQsIGVuY29kZTolZCwgY29kZWM6JXAiLAotKyAgICAgIGNvbnRleHQsIGNvZGVjX2lkLCBlbmNvZGUsIGNvZGVjKTsKLSsKLSsgIGlmIChjb250ZXh0KSB7Ci0rICAgIGNhcHMgPSBnc3RfZmZtcGVnX3BpeGZtdF90b19jYXBzIChjb250ZXh0LT5waXhfZm10LCBjb250ZXh0LCBjb2RlY19pZCk7Ci0rICB9IGVsc2UgewotKyAgICBHc3RDYXBzICp0ZW1wOwotKyAgICBlbnVtIFBpeGVsRm9ybWF0IGk7Ci0rICAgIEFWQ29kZWNDb250ZXh0IGN0eCA9IHsgMCwgfTsKLSsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLSsgICAgZm9yIChpID0gMDsgaSA8IFBJWF9GTVRfTkI7IGkrKykgewotKyAgICAgIGN0eC53aWR0aCA9IC0xOwotKyAgICAgIGN0eC5waXhfZm10ID0gaTsKLSsgICAgICB0ZW1wID0gZ3N0X2ZmbXBlZ19waXhmbXRfdG9fY2FwcyAoaSwgZW5jb2RlID8gJmN0eCA6IE5VTEwsIGNvZGVjX2lkKTsKLSsgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIENvbnZlcnQgYSBGRk1QRUcgY29kZWMgVHlwZSBhbmQgb3B0aW9uYWwgQVZDb2RlY0NvbnRleHQKLSsgKiB0byBhIEdzdENhcHMuIElmIHRoZSBjb250ZXh0IGlzIG9tbWl0dGVkLCBubyBmaXhlZCB2YWx1ZXMKLSsgKiBmb3IgdmlkZW8vYXVkaW8gc2l6ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBHc3RDYXBzCi0rICoKLSsgKiBBVk1lZGlhVHlwZSBpcyBwcmltYXJpbHkgbWVhbnQgZm9yIHVuY29tcHJlc3NlZCBkYXRhIEdzdENhcHMhCi0rICovCi0rCi0rR3N0Q2FwcyAqCi0rZ3N0X2ZmbXBlZ19jb2RlY3R5cGVfdG9fY2FwcyAoZW51bSBBVk1lZGlhVHlwZSBjb2RlY190eXBlLAotKyAgICBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsIGVudW0gQ29kZWNJRCBjb2RlY19pZCwgZ2Jvb2xlYW4gZW5jb2RlKQotK3sKLSsgIEdzdENhcHMgKmNhcHM7Ci0rCi0rICBzd2l0Y2ggKGNvZGVjX3R5cGUpIHsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZm1wZWdfY29kZWN0eXBlX3RvX3ZpZGVvX2NhcHMgKGNvbnRleHQsIGNvZGVjX2lkLCBlbmNvZGUsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ19jb2RlY3R5cGVfdG9fYXVkaW9fY2FwcyAoY29udGV4dCwgY29kZWNfaWQsIGVuY29kZSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgY2FwcyA9IE5VTEw7Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICByZXR1cm4gY2FwczsKLSt9Ci0rCi0rLyogQ29udmVydCBhIEdzdENhcHMgKGF1ZGlvL3JhdykgdG8gYSBGRk1QRUcgU2FtcGxlRm10Ci0rICogYW5kIG90aGVyIGF1ZGlvIHByb3BlcnRpZXMgaW4gYSBBVkNvZGVjQ29udGV4dC4KLSsgKgotKyAqIEZvciB1c2VmdWxsbmVzcywgc2VlIGJlbG93Ci0rICovCi0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnX2NhcHNfdG9fc21wZm10IChjb25zdCBHc3RDYXBzICogY2FwcywKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBnYm9vbGVhbiByYXcpCi0rewotKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0rICBnaW50IGRlcHRoID0gMCwgd2lkdGggPSAwLCBlbmRpYW5uZXNzID0gMDsKLSsgIGdib29sZWFuIHNpZ25lZG5lc3MgPSBGQUxTRTsKLSsgIGNvbnN0IGdjaGFyICpuYW1lOwotKwotKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpID09IDEpOwotKyAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0rCi0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImNoYW5uZWxzIiwgJmNvbnRleHQtPmNoYW5uZWxzKTsKLSsgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAicmF0ZSIsICZjb250ZXh0LT5zYW1wbGVfcmF0ZSk7Ci0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImJsb2NrX2FsaWduIiwgJmNvbnRleHQtPmJsb2NrX2FsaWduKTsKLSsgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiYml0cmF0ZSIsICZjb250ZXh0LT5iaXRfcmF0ZSk7Ci0rCi0rICBpZiAoIXJhdykKLSsgICAgcmV0dXJuOwotKwotKyAgbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSk7Ci0rCi0rICBpZiAoIXN0cmNtcCAobmFtZSwgImF1ZGlvL3gtcmF3LWZsb2F0IikpIHsKLSsgICAgLyogRkxPQVQgKi8KLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykpIHsKLSsgICAgICBpZiAoZW5kaWFubmVzcyA9PSBHX0JZVEVfT1JERVIpIHsKLSsgICAgICAgIGlmICh3aWR0aCA9PSAzMikKLSsgICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9GTVRfRkxUOwotKyAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gNjQpCi0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX0RCTDsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0gZWxzZSB7Ci0rICAgIC8qIElOVCAqLwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgJiYKLSsgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZGVwdGgiLCAmZGVwdGgpICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHJ1Y3R1cmUsICJzaWduZWQiLCAmc2lnbmVkbmVzcykgJiYKLSsgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZW5kaWFubmVzcyIsICZlbmRpYW5uZXNzKSkgewotKyAgICAgIGlmICgoZW5kaWFubmVzcyA9PSBHX0JZVEVfT1JERVIpICYmIChzaWduZWRuZXNzID09IFRSVUUpKSB7Ci0rICAgICAgICBpZiAoKHdpZHRoID09IDE2KSAmJiAoZGVwdGggPT0gMTYpKQotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7Ci0rICAgICAgICBlbHNlIGlmICgod2lkdGggPT0gMzIpICYmIChkZXB0aCA9PSAzMikpCi0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MzMjsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSt9Ci0rCi0rCi0rLyogQ29udmVydCBhIEdzdENhcHMgKHZpZGVvL3JhdykgdG8gYSBGRk1QRUcgUGl4Rm10Ci0rICogYW5kIG90aGVyIHZpZGVvIHByb3BlcnRpZXMgaW4gYSBBVkNvZGVjQ29udGV4dC4KLSsgKgotKyAqIEZvciB1c2VmdWxsbmVzcywgc2VlIGJlbG93Ci0rICovCi0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnX2NhcHNfdG9fcGl4Zm10IChjb25zdCBHc3RDYXBzICogY2FwcywKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBnYm9vbGVhbiByYXcpCi0rewotKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0rICBjb25zdCBHVmFsdWUgKmZwczsKLSsgIGNvbnN0IEdWYWx1ZSAqcGFyID0gTlVMTDsKLSsKLSsgIEdTVF9ERUJVRyAoImNvbnZlcnRpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0rICBnX3JldHVybl9pZl9mYWlsIChnc3RfY2Fwc19nZXRfc2l6ZSAoY2FwcykgPT0gMSk7Ci0rICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSsKLSsgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmY29udGV4dC0+d2lkdGgpOwotKyAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmY29udGV4dC0+aGVpZ2h0KTsKLSsgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiYnBwIiwgJmNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSk7Ci0rCi0rICBmcHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAiZnJhbWVyYXRlIik7Ci0rICBpZiAoZnBzICE9IE5VTEwgJiYgR1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OIChmcHMpKSB7Ci0rCi0rICAgIC8qIHNvbWVob3cgdGhlc2Ugc2VlbSBtaXhlZCB1cC4uICovCi0rICAgIGNvbnRleHQtPnRpbWVfYmFzZS5kZW4gPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX251bWVyYXRvciAoZnBzKTsKLSsgICAgY29udGV4dC0+dGltZV9iYXNlLm51bSA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IgKGZwcyk7Ci0rICAgIGNvbnRleHQtPnRpY2tzX3Blcl9mcmFtZSA9IDE7Ci0rCi0rICAgIEdTVF9ERUJVRyAoInNldHRpbmcgZnJhbWVyYXRlICVkLyVkID0gJWxmIiwKLSsgICAgICAgIGNvbnRleHQtPnRpbWVfYmFzZS5kZW4sIGNvbnRleHQtPnRpbWVfYmFzZS5udW0sCi0rICAgICAgICAxLiAqIGNvbnRleHQtPnRpbWVfYmFzZS5kZW4gLyBjb250ZXh0LT50aW1lX2Jhc2UubnVtKTsKLSsgIH0KLSsKLSsgIHBhciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iKTsKLSsgIGlmIChwYXIgJiYgR1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OIChwYXIpKSB7Ci0rCi0rICAgIGNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1lcmF0b3IgKHBhcik7Ci0rICAgIGNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9kZW5vbWluYXRvciAocGFyKTsKLSsKLSsgICAgR1NUX0RFQlVHICgic2V0dGluZyBwaXhlbC1hc3BlY3QtcmF0aW8gJWQvJWQgPSAlbGYiLAotKyAgICAgICAgY29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4sIGNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtLAotKyAgICAgICAgMS4gKiBjb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbiAvCi0rICAgICAgICBjb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSk7Ci0rICB9Ci0rCi0rICBpZiAoIXJhdykKLSsgICAgcmV0dXJuOwotKwotKyAgZ19yZXR1cm5faWZfZmFpbCAoZnBzICE9IE5VTEwgJiYgR1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OIChmcHMpKTsKLSsKLSsgIGlmIChzdHJjbXAgKGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSksICJ2aWRlby94LXJhdy15dXYiKSA9PSAwKSB7Ci0rICAgIGd1aW50MzIgZm91cmNjOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZm91cmNjIChzdHJ1Y3R1cmUsICJmb3JtYXQiLCAmZm91cmNjKSkgewotKyAgICAgIHN3aXRjaCAoZm91cmNjKSB7Ci0rICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnVScsICdZJywgJzInKToKLSsgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVZVjQyMjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ0knLCAnNCcsICcyJywgJzAnKToKLSsgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWNDIwUDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ0EnLCAnNCcsICcyJywgJzAnKToKLSsgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWQTQyMFA7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVjQxMVA7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMicsICdCJyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVjQyMlA7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJ1UnLCAnVicsICc5Jyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVjQxMFA7Ci0rICAgICAgICAgIGJyZWFrOwotKyNpZiAwCi0rICAgICAgICBjYXNlIEZJWE1FOgotKyAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0NDRQOwotKyAgICAgICAgICBicmVhazsKLSsjZW5kaWYKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoc3RyY21wIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpLAotKyAgICAgICAgICAidmlkZW8veC1yYXctcmdiIikgPT0gMCkgewotKyAgICBnaW50IGJwcCA9IDAsIHJtYXNrID0gMCwgZW5kaWFubmVzcyA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImJwcCIsICZicHApICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykpIHsKLSsgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJyZWRfbWFzayIsICZybWFzaykpIHsKLSsgICAgICAgIHN3aXRjaCAoYnBwKSB7Ci0rICAgICAgICAgIGNhc2UgMzI6Ci0rI2lmIChHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOKQotKyAgICAgICAgICAgIGlmIChybWFzayA9PSAweDAwZmYwMDAwKQotKyNlbHNlCi0rICAgICAgICAgICAgaWYgKHJtYXNrID09IDB4MDAwMGZmMDApCi0rI2VuZGlmCi0rICAgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9SR0IzMjsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSAyNDoKLSsgICAgICAgICAgICBpZiAocm1hc2sgPT0gMHgwMDAwRkYpCi0rICAgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9CR1IyNDsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9SR0IyNDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSAxNjoKLSsgICAgICAgICAgICBpZiAoZW5kaWFubmVzcyA9PSBHX0JZVEVfT1JERVIpCi0rICAgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9SR0I1NjU7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgMTU6Ci0rICAgICAgICAgICAgaWYgKGVuZGlhbm5lc3MgPT0gR19CWVRFX09SREVSKQotKyAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfUkdCNTU1OwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIG5vdGhpbmcgKi8KLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgaWYgKGJwcCA9PSA4KSB7Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1BBTDg7Ci0rICAgICAgICAgIGdzdF9mZm1wZWdfZ2V0X3BhbGV0dGUgKGNhcHMsIGNvbnRleHQpOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsgICAgfQotKyAgfSBlbHNlIGlmIChzdHJjbXAgKGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSksCi0rICAgICAgICAgICJ2aWRlby94LXJhdy1ncmF5IikgPT0gMCkgewotKyAgICBnaW50IGJwcCA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImJwcCIsICZicHApKSB7Ci0rICAgICAgc3dpdGNoIChicHApIHsKLSsgICAgICAgIGNhc2UgODoKLSsgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfR1JBWTg7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotK30KLSsKLSsvKiBDb252ZXJ0IGEgR3N0Q2FwcyBhbmQgYSBGRk1QRUcgY29kZWMgVHlwZSB0byBhCi0rICogQVZDb2RlY0NvbnRleHQuIElmIHRoZSBjb250ZXh0IGlzIG9tbWl0dGVkLCBubyBmaXhlZCB2YWx1ZXMKLSsgKiBmb3IgdmlkZW8vYXVkaW8gc2l6ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBjb250ZXh0Ci0rICoKLSsgKiBBVk1lZGlhVHlwZSBpcyBwcmltYXJpbHkgbWVhbnQgZm9yIHVuY29tcHJlc3NlZCBkYXRhIEdzdENhcHMhCi0rICovCi0rCi0rdm9pZAotK2dzdF9mZm1wZWdfY2Fwc193aXRoX2NvZGVjdHlwZSAoZW51bSBBVk1lZGlhVHlwZSB0eXBlLAotKyAgICBjb25zdCBHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIGlmIChjb250ZXh0ID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIHN3aXRjaCAodHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICBnc3RfZmZtcGVnX2NhcHNfdG9fcGl4Zm10IChjYXBzLCBjb250ZXh0LCBUUlVFKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3NtcGZtdCAoY2FwcywgY29udGV4dCwgVFJVRSk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgLyogdW5rbm93biAqLwotKyAgICAgIGJyZWFrOwotKyAgfQotK30KLSsKLSsjaWYgMAotK3N0YXRpYyB2b2lkCi0rbmFsX2VzY2FwZSAoZ3VpbnQ4ICogZHN0LCBndWludDggKiBzcmMsIGd1aW50IHNpemUsIGd1aW50ICogZGVzdHNpemUpCi0rewotKyAgZ3VpbnQ4ICpkc3RwID0gZHN0OwotKyAgZ3VpbnQ4ICpzcmNwID0gc3JjOwotKyAgZ3VpbnQ4ICplbmQgPSBzcmMgKyBzaXplOwotKyAgZ2ludCBjb3VudCA9IDA7Ci0rCi0rICB3aGlsZSAoc3JjcCA8IGVuZCkgewotKyAgICBpZiAoY291bnQgPT0gMiAmJiAqc3JjcCA8PSAweDAzKSB7Ci0rICAgICAgR1NUX0RFQlVHICgiYWRkZWQgZXNjYXBlIGNvZGUiKTsKLSsgICAgICAqZHN0cCsrID0gMHgwMzsKLSsgICAgICBjb3VudCA9IDA7Ci0rICAgIH0KLSsgICAgaWYgKCpzcmNwID09IDApCi0rICAgICAgY291bnQrKzsKLSsgICAgZWxzZQotKyAgICAgIGNvdW50ID0gMDsKLSsKLSsgICAgR1NUX0RFQlVHICgiY29weSAlMDJ4LCBjb3VudCAlZCIsICpzcmNwLCBjb3VudCk7Ci0rICAgICpkc3RwKysgPSAqc3JjcCsrOwotKyAgfQotKyAgKmRlc3RzaXplID0gZHN0cCAtIGRzdDsKLSt9Ci0rCi0rLyogY29weSB0aGUgY29uZmlnLCBlc2NhcGluZyBOQUwgdW5pdHMgYXMgd2UgaXRlcmF0ZSB0aGVtLCBpZiBzb21ldGhpbmcgZmFpbHMgd2UKLSsgKiBjb3B5IGV2ZXJ5dGhpbmcgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LiAqLwotK3N0YXRpYyB2b2lkCi0rY29weV9jb25maWcgKGd1aW50OCAqIGRzdCwgZ3VpbnQ4ICogc3JjLCBndWludCBzaXplLCBndWludCAqIGRlc3RzaXplKQotK3sKLSsgIGd1aW50OCAqZHN0cCA9IGRzdDsKLSsgIGd1aW50OCAqc3JjcCA9IHNyYzsKLSsgIGdpbnQgY250LCBpOwotKyAgZ3VpbnQgbmFsc2l6ZSwgZXNpemU7Ci0rCi0rICAvKiBjaGVjayBzaXplICovCi0rICBpZiAoc2l6ZSA8IDcpCi0rICAgIGdvdG8gZnVsbF9jb3B5OwotKwotKyAgLyogY2hlY2sgdmVyc2lvbiAqLwotKyAgaWYgKCpzcmNwICE9IDEpCi0rICAgIGdvdG8gZnVsbF9jb3B5OwotKwotKyAgY250ID0gKihzcmNwICsgNSkgJiAweDFmOyAgICAgLyogTnVtYmVyIG9mIHNwcyAqLwotKwotKyAgR1NUX0RFQlVHICgibnVtIFNQUyAlZCIsIGNudCk7Ci0rCi0rICBtZW1jcHkgKGRzdHAsIHNyY3AsIDYpOwotKyAgc3JjcCArPSA2OwotKyAgZHN0cCArPSA2OwotKwotKyAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7Ci0rICAgIEdTVF9ERUJVRyAoImNvcHkgU1BTICVkIiwgaSk7Ci0rICAgIG5hbHNpemUgPSAoc3JjcFswXSA8PCA4KSB8IHNyY3BbMV07Ci0rICAgIG5hbF9lc2NhcGUgKGRzdHAgKyAyLCBzcmNwICsgMiwgbmFsc2l6ZSwgJmVzaXplKTsKLSsgICAgZHN0cFswXSA9IGVzaXplID4+IDg7Ci0rICAgIGRzdHBbMV0gPSBlc2l6ZSAmIDB4ZmY7Ci0rICAgIGRzdHAgKz0gZXNpemUgKyAyOwotKyAgICBzcmNwICs9IG5hbHNpemUgKyAyOwotKyAgfQotKwotKyAgY250ID0gKihkc3RwKyspID0gKihzcmNwKyspOyAgLyogTnVtYmVyIG9mIHBwcyAqLwotKwotKyAgR1NUX0RFQlVHICgibnVtIFBQUyAlZCIsIGNudCk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKLSsgICAgR1NUX0RFQlVHICgiY29weSBQUFMgJWQiLCBpKTsKLSsgICAgbmFsc2l6ZSA9IChzcmNwWzBdIDw8IDgpIHwgc3JjcFsxXTsKLSsgICAgbmFsX2VzY2FwZSAoZHN0cCArIDIsIHNyY3AgKyAyLCBuYWxzaXplLCAmZXNpemUpOwotKyAgICBkc3RwWzBdID0gZXNpemUgPj4gODsKLSsgICAgZHN0cFsxXSA9IGVzaXplICYgMHhmZjsKLSsgICAgZHN0cCArPSBlc2l6ZSArIDI7Ci0rICAgIHNyY3AgKz0gbmFsc2l6ZSArIDI7Ci0rICB9Ci0rICAqZGVzdHNpemUgPSBkc3RwIC0gZHN0OwotKwotKyAgcmV0dXJuOwotKwotK2Z1bGxfY29weToKLSsgIHsKLSsgICAgR1NUX0RFQlVHICgic29tZXRoaW5nIHVuZXhwZWN0ZWQsIGRvaW5nIGZ1bGwgY29weSIpOwotKyAgICBtZW1jcHkgKGRzdCwgc3JjLCBzaXplKTsKLSsgICAgKmRlc3RzaXplID0gc2l6ZTsKLSsgICAgcmV0dXJuOwotKyAgfQotK30KLSsjZW5kaWYKLSsKLSsvKgotKyAqIGNhcHNfd2l0aF9jb2RlY2lkICgpIHRyYW5zZm9ybXMgYSBHc3RDYXBzIGZvciBhIGtub3duIGNvZGVjCi0rICogSUQgaW50byBhIGZpbGxlZC1pbiBjb250ZXh0LgotKyAqIGNvZGVjX2RhdGEgZnJvbSBjYXBzIHdpbGwgb3ZlcnJpZGUgcG9zc2libGUgZXh0cmFkYXRhIGFscmVhZHkgaW4gdGhlIGNvbnRleHQKLSsgKi8KLSsKLSt2b2lkCi0rZ3N0X2ZmbXBlZ19jYXBzX3dpdGhfY29kZWNpZCAoZW51bSBDb2RlY0lEIGNvZGVjX2lkLAotKyAgICBlbnVtIEFWTWVkaWFUeXBlIGNvZGVjX3R5cGUsIGNvbnN0IEdzdENhcHMgKiBjYXBzLCBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQpCi0rewotKyAgR3N0U3RydWN0dXJlICpzdHI7Ci0rICBjb25zdCBHVmFsdWUgKnZhbHVlOwotKyAgY29uc3QgR3N0QnVmZmVyICpidWY7Ci0rCi0rICBHU1RfTE9HICgiY29kZWNfaWQ6JWQsIGNvZGVjX3R5cGU6JWQsIGNhcHM6JSIgR1NUX1BUUl9GT1JNQVQgIiBjb250ZXh0OiVwIiwKLSsgICAgICBjb2RlY19pZCwgY29kZWNfdHlwZSwgY2FwcywgY29udGV4dCk7Ci0rCi0rICBpZiAoIWNvbnRleHQgfHwgIWdzdF9jYXBzX2dldF9zaXplIChjYXBzKSkKLSsgICAgcmV0dXJuOwotKwotKyAgc3RyID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0rCi0rICAvKiBleHRyYWRhdGEgcGFyc2luZyAoZXNkcyBbbXBlZzRdLCB3bWEvd212LCBtc21wZWc0djEvMi8zLCBldGMuKSAqLwotKyAgaWYgKCh2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHIsICJjb2RlY19kYXRhIikpKSB7Ci0rICAgIGd1aW50IHNpemU7Ci0rICAgIGd1aW50OCAqZGF0YTsKLSsKLSsgICAgYnVmID0gR1NUX0JVRkZFUl9DQVNUIChnc3RfdmFsdWVfZ2V0X21pbmlfb2JqZWN0ICh2YWx1ZSkpOwotKyAgICBzaXplID0gR1NUX0JVRkZFUl9TSVpFIChidWYpOwotKyAgICBkYXRhID0gR1NUX0JVRkZFUl9EQVRBIChidWYpOwotKwotKyAgICAvKiBmcmVlIHRoZSBvbGQgb25lIGlmIGl0IGlzIHRoZXJlICovCi0rICAgIGlmIChjb250ZXh0LT5leHRyYWRhdGEpCi0rICAgICAgYXZfZnJlZSAoY29udGV4dC0+ZXh0cmFkYXRhKTsKLSsKLSsjaWYgMAotKyAgICBpZiAoY29kZWNfaWQgPT0gQ09ERUNfSURfSDI2NCkgewotKyAgICAgIGd1aW50IGV4dHJhc2l6ZTsKLSsKLSsgICAgICBHU1RfREVCVUcgKCJjb3B5LCBlc2NhcGluZyBjb2RlY19kYXRhICVkIiwgc2l6ZSk7Ci0rICAgICAgLyogZmZtcGVnIGgyNjQgZXhwZWN0cyB0aGUgY29kZWNfZGF0YSB0byBiZSBlc2NhcGVkLCB0aGVyZSBpcyBubyByZWFsCi0rICAgICAgICogcmVhc29uIGZvciB0aGlzIGJ1dCBsZXQncyBqdXN0IGVzY2FwZSBpdCBmb3Igbm93LiBTdGFydCBieSBhbGxvY2F0aW5nCi0rICAgICAgICogZW5vdWdoIHNwYWNlLCB4MiBpcyBtb3JlIHRoYW4gZW5vdWdoLgotKyAgICAgICAqCi0rICAgICAgICogRklYTUUsIHdlIGRpc2FibGVkIGVzY2FwaW5nIGJlY2F1c2Ugc29tZSBmaWxlIGFscmVhZHkgY29udGFpbiBlc2NhcGVkCi0rICAgICAgICogY29kZWNfZGF0YSBhbmQgdGhlbiB3ZSBlc2NhcGUgdHdpY2UgYW5kIGZhaWwuIEl0J3MgYmV0dGVyIHRvIGxlYXZlIGl0Ci0rICAgICAgICogYXMgaXMsIGFzIHRoYXQgaXMgd2hhdCBtb3N0IHBsYXllcnMgZG8uICovCi0rICAgICAgY29udGV4dC0+ZXh0cmFkYXRhID0KLSsgICAgICAgICAgYXZfbWFsbG9jeiAoR1NUX1JPVU5EX1VQXzE2IChzaXplICogMiArCi0rICAgICAgICAgICAgICBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKSk7Ci0rICAgICAgY29weV9jb25maWcgKGNvbnRleHQtPmV4dHJhZGF0YSwgZGF0YSwgc2l6ZSwgJmV4dHJhc2l6ZSk7Ci0rICAgICAgR1NUX0RFQlVHICgiZXNjYXBlZCBzaXplOiAlZCIsIGV4dHJhc2l6ZSk7Ci0rICAgICAgY29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPSBleHRyYXNpemU7Ci0rICAgIH0gZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAgICAgLyogYWxsb2NhdGUgd2l0aCBlbm91Z2ggcGFkZGluZyAqLwotKyAgICAgIEdTVF9ERUJVRyAoImNvcHkgY29kZWNfZGF0YSIpOwotKyAgICAgIGNvbnRleHQtPmV4dHJhZGF0YSA9Ci0rICAgICAgICAgIGF2X21hbGxvY3ogKEdTVF9ST1VORF9VUF8xNiAoc2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpKTsKLSsgICAgICBtZW1jcHkgKGNvbnRleHQtPmV4dHJhZGF0YSwgZGF0YSwgc2l6ZSk7Ci0rICAgICAgY29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPSBzaXplOwotKyAgICB9Ci0rCi0rICAgIC8qIEhhY2sgZm9yIFZDMS4gU29tZXRpbWVzIHRoZSBmaXJzdCAobGVuZ3RoKSBieXRlIGlzIDAgZm9yIHNvbWUgZmlsZXMgKi8KLSsgICAgaWYgKGNvZGVjX2lkID09IENPREVDX0lEX1ZDMSAmJiBzaXplID4gMCAmJiBkYXRhWzBdID09IDApIHsKLSsgICAgICBjb250ZXh0LT5leHRyYWRhdGFbMF0gPSAoZ3VpbnQ4KSBzaXplOwotKyAgICB9Ci0rCi0rICAgIEdTVF9ERUJVRyAoImhhdmUgY29kZWMgZGF0YSBvZiBzaXplICVkIiwgc2l6ZSk7Ci0rICB9IGVsc2UgaWYgKGNvbnRleHQtPmV4dHJhZGF0YSA9PSBOVUxMICYmIGNvZGVjX2lkICE9IENPREVDX0lEX0FBQ19MQVRNICYmCi0rICAgICAgY29kZWNfaWQgIT0gQ09ERUNfSURfRkxBQykgewotKyAgICAvKiBubyBleHRyYWRhdGEsIGFsbG9jIGR1bW15IHdpdGggMCBzaXplZCwgc29tZSBjb2RlY3MgaW5zaXN0IG9uIHJlYWRpbmcKLSsgICAgICogZXh0cmFkYXRhIGFueXdheSB3aGljaCBtYWtlcyB0aGVuIHNlZ2ZhdWx0LiAqLwotKyAgICBjb250ZXh0LT5leHRyYWRhdGEgPQotKyAgICAgICAgYXZfbWFsbG9jeiAoR1NUX1JPVU5EX1VQXzE2IChGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKSk7Ci0rICAgIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplID0gMDsKLSsgICAgR1NUX0RFQlVHICgibm8gY29kZWMgZGF0YSIpOwotKyAgfQotKwotKyAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICBjYXNlIENPREVDX0lEX01QRUc0OgotKyAgICB7Ci0rICAgICAgY29uc3QgZ2NoYXIgKm1pbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHIpOwotKwotKyAgICAgIGlmICghc3RyY21wIChtaW1lLCAidmlkZW8veC1kaXZ4IikpCi0rICAgICAgICBjb250ZXh0LT5jb2RlY190YWcgPSBHU1RfTUFLRV9GT1VSQ0MgKCdEJywgJ0knLCAnVicsICdYJyk7Ci0rICAgICAgZWxzZSBpZiAoIXN0cmNtcCAobWltZSwgInZpZGVvL3gteHZpZCIpKQotKyAgICAgICAgY29udGV4dC0+Y29kZWNfdGFnID0gR1NUX01BS0VfRk9VUkNDICgnWCcsICdWJywgJ0knLCAnRCcpOwotKyAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKG1pbWUsICJ2aWRlby94LTNpdngiKSkKLSsgICAgICAgIGNvbnRleHQtPmNvZGVjX3RhZyA9IEdTVF9NQUtFX0ZPVVJDQyAoJzMnLCAnSScsICdWJywgJzEnKTsKLSsgICAgICBlbHNlIGlmICghc3RyY21wIChtaW1lLCAidmlkZW8vbXBlZyIpKQotKyAgICAgICAgY29udGV4dC0+Y29kZWNfdGFnID0gR1NUX01BS0VfRk9VUkNDICgnbScsICdwJywgJzQnLCAndicpOwotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU1ZRMzoKLSsgICAgICAvKiBGSVhNRTogdGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIG9sZGVyIGdzdC1wbHVnaW5zIHJlbGVhc2VzCi0rICAgICAgICogKDw9IDAuOC45KS4gVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LCBiZWNhdXNlCi0rICAgICAgICogaXQgY2F1c2VzIHdyb25nIGRlY29kZWQgZnJhbWUgb3JkZXIuICovCi0rICAgICAgaWYgKCFjb250ZXh0LT5leHRyYWRhdGEpIHsKLSsgICAgICAgIGdpbnQgaGFsZnBlbF9mbGFnLCB0aGlyZHBlbF9mbGFnLCBsb3dfZGVsYXksIHVua25vd25fc3ZxM19mbGFnOwotKyAgICAgICAgZ3VpbnQxNiBmbGFnczsKLSsKLSsgICAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgImhhbGZwZWxfZmxhZyIsICZoYWxmcGVsX2ZsYWcpIHx8Ci0rICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHIsICJ0aGlyZHBlbF9mbGFnIiwgJnRoaXJkcGVsX2ZsYWcpIHx8Ci0rICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHIsICJsb3dfZGVsYXkiLCAmbG93X2RlbGF5KSB8fAotKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAidW5rbm93bl9zdnEzX2ZsYWciLAotKyAgICAgICAgICAgICAgICAmdW5rbm93bl9zdnEzX2ZsYWcpKSB7Ci0rICAgICAgICAgIGNvbnRleHQtPmV4dHJhZGF0YSA9IChndWludDggKikgYXZfbWFsbG9jeiAoMHg2NCk7Ci0rICAgICAgICAgIGdfc3RwY3B5ICgoZ2NoYXIgKikgY29udGV4dC0+ZXh0cmFkYXRhLCAiU1ZRMyIpOwotKyAgICAgICAgICBmbGFncyA9IDEgPDwgMzsKLSsgICAgICAgICAgZmxhZ3MgfD0gbG93X2RlbGF5OwotKyAgICAgICAgICBmbGFncyA9IGZsYWdzIDw8IDI7Ci0rICAgICAgICAgIGZsYWdzIHw9IHVua25vd25fc3ZxM19mbGFnOwotKyAgICAgICAgICBmbGFncyA9IGZsYWdzIDw8IDY7Ci0rICAgICAgICAgIGZsYWdzIHw9IGhhbGZwZWxfZmxhZzsKLSsgICAgICAgICAgZmxhZ3MgPSBmbGFncyA8PCAxOwotKyAgICAgICAgICBmbGFncyB8PSB0aGlyZHBlbF9mbGFnOwotKyAgICAgICAgICBmbGFncyA9IGZsYWdzIDw8IDM7Ci0rCi0rICAgICAgICAgIGZsYWdzID0gR1VJTlQxNl9GUk9NX0xFIChmbGFncyk7Ci0rCi0rICAgICAgICAgIG1lbWNweSAoKGdjaGFyICopIGNvbnRleHQtPmV4dHJhZGF0YSArIDB4NjIsICZmbGFncywgMik7Ci0rICAgICAgICAgIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplID0gMHg2NDsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVNSTEU6Ci0rICAgIGNhc2UgQ09ERUNfSURfUVRSTEU6Ci0rICAgIGNhc2UgQ09ERUNfSURfVFNDQzoKLSsgICAgY2FzZSBDT0RFQ19JRF9DU0NEOgotKyAgICBjYXNlIENPREVDX0lEX0FQRToKLSsgICAgewotKyAgICAgIGdpbnQgZGVwdGg7Ci0rCi0rICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAiZGVwdGgiLCAmZGVwdGgpKSB7Ci0rICAgICAgICBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgPSBkZXB0aDsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgR1NUX1dBUk5JTkcgKCJObyBkZXB0aCBmaWVsZCBpbiBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSsgICAgICB9Ci0rCi0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjEwOgotKyAgICBjYXNlIENPREVDX0lEX1JWMjA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlYzMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjQwOgotKyAgICB7Ci0rICAgICAgZ2ludCBmb3JtYXQ7Ci0rCi0rICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAiZm9ybWF0IiwgJmZvcm1hdCkpCi0rICAgICAgICBjb250ZXh0LT5zdWJfaWQgPSBmb3JtYXQ7Ci0rCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBDT0RFQ19JRF9DT09LOgotKyAgICBjYXNlIENPREVDX0lEX1JBXzI4ODoKLSsgICAgY2FzZSBDT0RFQ19JRF9SQV8xNDQ6Ci0rICAgIGNhc2UgQ09ERUNfSURfU0lQUjoKLSsgICAgewotKyAgICAgIGdpbnQgbGVhZl9zaXplOwotKyAgICAgIGdpbnQgYml0cmF0ZTsKLSsKLSsgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHIsICJsZWFmX3NpemUiLCAmbGVhZl9zaXplKSkKLSsgICAgICAgIGNvbnRleHQtPmJsb2NrX2FsaWduID0gbGVhZl9zaXplOwotKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgImJpdHJhdGUiLCAmYml0cmF0ZSkpCi0rICAgICAgICBjb250ZXh0LT5iaXRfcmF0ZSA9IGJpdHJhdGU7Ci0rICAgIH0KLSsgICAgY2FzZSBDT0RFQ19JRF9BTEFDOgotKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAic2FtcGxlc2l6ZSIsCi0rICAgICAgICAgICZjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0RWVklERU86Ci0rICAgIHsKLSsgICAgICBndWludDMyIGZvdXJjYzsKLSsKLSsgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZm91cmNjIChzdHIsICJmb3JtYXQiLCAmZm91cmNjKSkKLSsgICAgICAgIHN3aXRjaCAoZm91cmNjKSB7Ci0rICAgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1knLCAnMicpOgotKyAgICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVWVY0MjI7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnSScsICc0JywgJzInLCAnMCcpOgotKyAgICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVjQyMFA7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnQScsICc0JywgJzInLCAnMCcpOgotKyAgICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVkE0MjBQOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcxJywgJ0InKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MTFQOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcyJywgJ0InKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MjJQOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnVScsICdWJywgJzknKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MTBQOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiY291bGRuJ3QgY29udmVydCBmb3VyY2MgJSIgR1NUX0ZPVVJDQ19GT1JNQVQKLSsgICAgICAgICAgICAgICAgIiB0byBhIHBpeGVsIGZvcm1hdCIsIEdTVF9GT1VSQ0NfQVJHUyAoZm91cmNjKSk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBDT0RFQ19JRF9IMjYzUDoKLSsgICAgewotKyAgICAgIGdib29sZWFuIHZhbDsKLSsKLSsgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0ciwgImFubmV4LWYiLCAmdmFsKSB8fCB2YWwpCi0rICAgICAgICBjb250ZXh0LT5mbGFncyB8PSBDT0RFQ19GTEFHXzRNVjsKLSsgICAgICBlbHNlCi0rICAgICAgICBjb250ZXh0LT5mbGFncyAmPSB+Q09ERUNfRkxBR180TVY7Ci0rICAgICAgaWYgKCghZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RyLCAiYW5uZXgtaSIsICZ2YWwpIHx8IHZhbCkgJiYKLSsgICAgICAgICAgKCFnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHIsICJhbm5leC10IiwgJnZhbCkgfHwgdmFsKSkKLSsgICAgICAgIGNvbnRleHQtPmZsYWdzIHw9IENPREVDX0ZMQUdfQUNfUFJFRDsKLSsgICAgICBlbHNlCi0rICAgICAgICBjb250ZXh0LT5mbGFncyAmPSB+Q09ERUNfRkxBR19BQ19QUkVEOwotKyAgICAgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RyLCAiYW5uZXgtaiIsICZ2YWwpIHx8IHZhbCkKLSsgICAgICAgIGNvbnRleHQtPmZsYWdzIHw9IENPREVDX0ZMQUdfTE9PUF9GSUxURVI7Ci0rICAgICAgZWxzZQotKyAgICAgICAgY29udGV4dC0+ZmxhZ3MgJj0gfkNPREVDX0ZMQUdfTE9PUF9GSUxURVI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9HNzI2OgotKyAgICB7Ci0rICAgICAgY29uc3QgZ2NoYXIgKmxheW91dDsKLSsKLSsgICAgICBpZiAoKGxheW91dCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RyLCAibGF5b3V0IikpKSB7Ci0rICAgICAgICBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZzcyMSIpKSB7Ci0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9yYXRlID0gODAwMDsKLSsgICAgICAgICAgY29udGV4dC0+Y2hhbm5lbHMgPSAxOwotKyAgICAgICAgICBjb250ZXh0LT5iaXRfcmF0ZSA9IDMyMDAwOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgaWYgKCFnc3RfY2Fwc19pc19maXhlZCAoY2FwcykpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIGNvbW1vbiBwcm9wZXJ0aWVzICh3aWR0aCwgaGVpZ2h0LCBmcHMpICovCi0rICBzd2l0Y2ggKGNvZGVjX3R5cGUpIHsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3BpeGZtdCAoY2FwcywgY29udGV4dCwgY29kZWNfaWQgPT0gQ09ERUNfSURfUkFXVklERU8pOwotKyAgICAgIGdzdF9mZm1wZWdfZ2V0X3BhbGV0dGUgKGNhcHMsIGNvbnRleHQpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgICBnc3RfZmZtcGVnX2NhcHNfdG9fc21wZm10IChjYXBzLCBjb250ZXh0LCBGQUxTRSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiBmaXh1cCBvZiBkZWZhdWx0IHNldHRpbmdzICovCi0rICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgIGNhc2UgQ09ERUNfSURfUUNFTFA6Ci0rICAgICAgLyogUUNFTFAgaXMgYWx3YXlzIG1vbm8sIG5vIG1hdHRlciB3aGF0IHRoZSBjYXBzIHNheSAqLwotKyAgICAgIGNvbnRleHQtPmNoYW5uZWxzID0gMTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rLyogX2Zvcm1hdGlkX3RvX2NhcHMgKCkgaXMgbWVhbnQgZm9yIG11eGVycy9kZW11eGVycywgaXQKLSsgKiB0cmFuc2Zvcm1zIGEgbmFtZSAoZmZtcGVnIHdheSBvZiBJRCdpbmcgdGhlc2UsIHdoeSBkb24ndAotKyAqIHRoZXkgaGF2ZSB1bmlxdWUgbnVtZXJpY2FsIElEcz8pIHRvIHRoZSBjb3JyZXNwb25kaW5nCi0rICogY2FwcyBiZWxvbmdpbmcgdG8gdGhhdCBtdXgtZm9ybWF0Ci0rICoKLSsgKiBOb3RlOiB3ZSBkb24ndCBuZWVkIGFueSBhZGRpdGlvbmFsIGluZm8gYmVjYXVzZSB0aGUgY2FwcwotKyAqIGlzbid0IHN1cHBvc2VkIHRvIGNvbnRhaW4gYW55IHVzZWZ1bCBpbmZvIGJlc2lkZXMgdGhlCi0rICogbWVkaWEgdHlwZSBhbnl3YXkKLSsgKi8KLSsKLStHc3RDYXBzICoKLStnc3RfZmZtcGVnX2Zvcm1hdGlkX3RvX2NhcHMgKGNvbnN0IGdjaGFyICogZm9ybWF0X25hbWUpCi0rewotKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci0rCi0rICBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtcGVnIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby9tcGVnIiwKLSsgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXBlZ3RzIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby9tcGVndHMiLAotKyAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBUUlVFLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJybSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXBwbGljYXRpb24veC1wbi1yZWFsbWVkaWEiLAotKyAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBUUlVFLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJhc2YiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtbXMtYXNmIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYXZpIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LW1zdmlkZW8iLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ3YXYiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtd2F2IiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYXBlIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhcHBsaWNhdGlvbi94LWFwZSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgInN3ZiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJhdSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1hdSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImR2IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LWR2IiwKLSsgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiNHhtIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LTR4bSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1hdHJvc2thIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LW1hdHJvc2thIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXAzIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhcHBsaWNhdGlvbi94LWlkMyIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImZsaWMiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtZmxpIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZmx2IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LWZsdiIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgInR0YSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC10dGFmaWxlIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYWlmZiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1haWZmIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibW92X21wNF9tNGFfM2dwXzNnMiIpKSB7Ci0rICAgIGNhcHMgPQotKyAgICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcKLSsgICAgICAgICgiYXBwbGljYXRpb24veC0zZ3A7IHZpZGVvL3F1aWNrdGltZTsgYXVkaW8veC1tNGEiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtb3YiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby9xdWlja3RpbWUsdmFyaWFudD0oc3RyaW5nKWFwcGxlIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXA0IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8vcXVpY2t0aW1lLHZhcmlhbnQ9KHN0cmluZylpc28iKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICIzZ3AiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby9xdWlja3RpbWUsdmFyaWFudD0oc3RyaW5nKTNncHAiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICIzZzIiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby9xdWlja3RpbWUsdmFyaWFudD0oc3RyaW5nKTNnMiIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgInBzcCIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3F1aWNrdGltZSx2YXJpYW50PShzdHJpbmcpcHNwIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiaXBvZCIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3F1aWNrdGltZSx2YXJpYW50PShzdHJpbmcpaXBvZCIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImFhYyIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8vbXBlZyIsCi0rICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCA0LCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJnaWYiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJpbWFnZS9naWYiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJvZ2ciKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhcHBsaWNhdGlvbi9vZ2ciKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJteGYiKSB8fCAhc3RyY21wIChmb3JtYXRfbmFtZSwgIm14Zl9kMTAiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhcHBsaWNhdGlvbi9teGYiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJneGYiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhcHBsaWNhdGlvbi9neGYiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ5dXY0bXBlZ3BpcGUiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImFwcGxpY2F0aW9uL3gteXV2NG1wZWciLAotKyAgICAgICAgInk0bXZlcnNpb24iLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtcGMiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhdWRpby94LW11c2VwYWNrLCBzdHJlYW12ZXJzaW9uID0gKGludCkgNyIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgInZxZiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoImF1ZGlvL3gtdnFmIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibnN2IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1uc3YiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJhbXIiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhdWRpby94LWFtci1uYi1zaCIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIndlYm0iKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby93ZWJtIik7Ci0rICB9IGVsc2UgewotKyAgICBnY2hhciAqbmFtZTsKLSsKLSsgICAgR1NUX0xPRyAoIkNvdWxkIG5vdCBjcmVhdGUgc3RyZWFtIGZvcm1hdCBjYXBzIGZvciAlcyIsIGZvcm1hdF9uYW1lKTsKLSsgICAgbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImFwcGxpY2F0aW9uL3gtZ3N0X2ZmLSVzIiwgZm9ybWF0X25hbWUpOwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobmFtZSwgTlVMTCk7Ci0rICAgIGdfZnJlZSAobmFtZSk7Ci0rICB9Ci0rCi0rICByZXR1cm4gY2FwczsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3RfZmZtcGVnX2Zvcm1hdGlkX2dldF9jb2RlY2lkcyAoY29uc3QgZ2NoYXIgKiBmb3JtYXRfbmFtZSwKLSsgICAgZW51bSBDb2RlY0lEICoqIHZpZGVvX2NvZGVjX2xpc3QsIGVudW0gQ29kZWNJRCAqKiBhdWRpb19jb2RlY19saXN0LAotKyAgICBBVk91dHB1dEZvcm1hdCAqIHBsdWdpbikKLSt7Ci0rICBzdGF0aWMgZW51bSBDb2RlY0lEIHRtcF92bGlzdFtdID0gewotKyAgICBDT0RFQ19JRF9OT05FLAotKyAgICBDT0RFQ19JRF9OT05FCi0rICB9OwotKyAgc3RhdGljIGVudW0gQ29kZWNJRCB0bXBfYWxpc3RbXSA9IHsKLSsgICAgQ09ERUNfSURfTk9ORSwKLSsgICAgQ09ERUNfSURfTk9ORQotKyAgfTsKLSsKLSsgIEdTVF9MT0cgKCJmb3JtYXRfbmFtZSA6ICVzIiwgZm9ybWF0X25hbWUpOwotKwotKyAgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXA0IikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcDRfdmlkZW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX01QRUc0LCBDT0RFQ19JRF9IMjY0LAotKyAgICAgIENPREVDX0lEX01KUEVHLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcDRfYXVkaW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX0FBQywgQ09ERUNfSURfTVAzLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBtcDRfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBtcDRfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtcGVnIikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcGVnX3ZpZGVvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVBFRzFWSURFTywKLSsgICAgICBDT0RFQ19JRF9NUEVHMlZJREVPLAotKyAgICAgIENPREVDX0lEX0gyNjQsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIG1wZWdfYXVkaW9fbGlzdFtdID0geyBDT0RFQ19JRF9NUDEsCi0rICAgICAgQ09ERUNfSURfTVAyLAotKyAgICAgIENPREVDX0lEX01QMywKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gbXBlZ192aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IG1wZWdfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJkdmQiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIG1wZWdfdmlkZW9fbGlzdFtdID0geyBDT0RFQ19JRF9NUEVHMlZJREVPLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcGVnX2F1ZGlvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVAyLAotKyAgICAgIENPREVDX0lEX0FDMywKLSsgICAgICBDT0RFQ19JRF9EVFMsCi0rICAgICAgQ09ERUNfSURfUENNX1MxNkJFLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBtcGVnX3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gbXBlZ19hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1wZWd0cyIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbXBlZ3RzX3ZpZGVvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVBFRzFWSURFTywKLSsgICAgICBDT0RFQ19JRF9NUEVHMlZJREVPLAotKyAgICAgIENPREVDX0lEX0gyNjQsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIG1wZWd0c19hdWRpb19saXN0W10gPSB7IENPREVDX0lEX01QMiwKLSsgICAgICBDT0RFQ19JRF9NUDMsCi0rICAgICAgQ09ERUNfSURfQUMzLAotKyAgICAgIENPREVDX0lEX0RUUywKLSsgICAgICBDT0RFQ19JRF9BQUMsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IG1wZWd0c192aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IG1wZWd0c19hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgInZvYiIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgdm9iX3ZpZGVvX2xpc3RbXSA9Ci0rICAgICAgICB7IENPREVDX0lEX01QRUcyVklERU8sIENPREVDX0lEX05PTkUgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCB2b2JfYXVkaW9fbGlzdFtdID0geyBDT0RFQ19JRF9NUDIsIENPREVDX0lEX0FDMywKLSsgICAgICBDT0RFQ19JRF9EVFMsIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSB2b2JfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSB2b2JfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJmbHYiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIGZsdl92aWRlb19saXN0W10gPSB7IENPREVDX0lEX0ZMVjEsIENPREVDX0lEX05PTkUgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBmbHZfYXVkaW9fbGlzdFtdID0geyBDT0RFQ19JRF9NUDMsIENPREVDX0lEX05PTkUgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBmbHZfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBmbHZfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJhc2YiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIGFzZl92aWRlb19saXN0W10gPQotKyAgICAgICAgeyBDT0RFQ19JRF9XTVYxLCBDT0RFQ19JRF9XTVYyLCBDT0RFQ19JRF9NU01QRUc0VjMsIENPREVDX0lEX05PTkUgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBhc2ZfYXVkaW9fbGlzdFtdID0KLSsgICAgICAgIHsgQ09ERUNfSURfV01BVjEsIENPREVDX0lEX1dNQVYyLCBDT0RFQ19JRF9NUDMsIENPREVDX0lEX05PTkUgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBhc2ZfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBhc2ZfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJkdiIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgZHZfdmlkZW9fbGlzdFtdID0geyBDT0RFQ19JRF9EVlZJREVPLCBDT0RFQ19JRF9OT05FIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgZHZfYXVkaW9fbGlzdFtdID0geyBDT0RFQ19JRF9QQ01fUzE2TEUsIENPREVDX0lEX05PTkUgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBkdl92aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IGR2X2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibW92IikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtb3ZfdmlkZW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX1NWUTEsIENPREVDX0lEX1NWUTMsIENPREVDX0lEX01QRUc0LAotKyAgICAgIENPREVDX0lEX0gyNjMsIENPREVDX0lEX0gyNjNQLAotKyAgICAgIENPREVDX0lEX0gyNjQsIENPREVDX0lEX0RWVklERU8sCi0rICAgICAgQ09ERUNfSURfTUpQRUcsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIG1vdl9hdWRpb19saXN0W10gPSB7Ci0rICAgICAgQ09ERUNfSURfUENNX01VTEFXLCBDT0RFQ19JRF9QQ01fQUxBVywgQ09ERUNfSURfQURQQ01fSU1BX1FULAotKyAgICAgIENPREVDX0lEX01BQ0UzLCBDT0RFQ19JRF9NQUNFNiwgQ09ERUNfSURfQUFDLAotKyAgICAgIENPREVDX0lEX0FNUl9OQiwgQ09ERUNfSURfQU1SX1dCLAotKyAgICAgIENPREVDX0lEX1BDTV9TMTZCRSwgQ09ERUNfSURfUENNX1MxNkxFLAotKyAgICAgIENPREVDX0lEX01QMywgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IG1vdl92aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IG1vdl9hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICgoIXN0cmNtcCAoZm9ybWF0X25hbWUsICIzZ3AiKSB8fCAhc3RyY21wIChmb3JtYXRfbmFtZSwgIjNnMiIpKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIHRncF92aWRlb19saXN0W10gPSB7Ci0rICAgICAgQ09ERUNfSURfTVBFRzQsIENPREVDX0lEX0gyNjMsIENPREVDX0lEX0gyNjNQLCBDT0RFQ19JRF9IMjY0LAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCB0Z3BfYXVkaW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX0FNUl9OQiwgQ09ERUNfSURfQU1SX1dCLAotKyAgICAgIENPREVDX0lEX0FBQywKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gdGdwX3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gdGdwX2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibW1mIikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtbWZfYXVkaW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX0FEUENNX1lBTUFIQSwgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IE5VTEw7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gbW1mX2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYW1yIikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBhbXJfYXVkaW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX0FNUl9OQiwgQ09ERUNfSURfQU1SX1dCLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBOVUxMOwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IGFtcl9hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImdpZiIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgZ2lmX2ltYWdlX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9SQVdWSURFTywgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IGdpZl9pbWFnZV9saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IE5VTEw7Ci0rICB9IGVsc2UgaWYgKChwbHVnaW4tPmF1ZGlvX2NvZGVjICE9IENPREVDX0lEX05PTkUpIHx8Ci0rICAgICAgKHBsdWdpbi0+dmlkZW9fY29kZWMgIT0gQ09ERUNfSURfTk9ORSkpIHsKLSsgICAgdG1wX3ZsaXN0WzBdID0gcGx1Z2luLT52aWRlb19jb2RlYzsKLSsgICAgdG1wX2FsaXN0WzBdID0gcGx1Z2luLT5hdWRpb19jb2RlYzsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSB0bXBfdmxpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gdG1wX2FsaXN0OwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0xPRyAoIkZvcm1hdCAlcyBub3QgZm91bmQiLCBmb3JtYXRfbmFtZSk7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLSsvKiBDb252ZXJ0IGEgR3N0Q2FwcyB0byBhIEZGTVBFRyBjb2RlYyBJRC4gU2l6ZSBldCBhbGwKLSsgKiBhcmUgb21pdHRlZCwgdGhhdCBjYW4gYmUgcXVlcmllZCBieSB0aGUgdXNlciBpdHNlbGYsCi0rICogd2UncmUgbm90IGVhdGluZyB0aGUgR3N0Q2FwcyBvciBhbnl0aGluZwotKyAqIEEgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgY29udGV4dCBpcyBhbHNvIG5lZWRlZCBmb3IKLSsgKiBvcHRpb25hbCBleHRyYSBpbmZvCi0rICovCi0rCi0rZW51bSBDb2RlY0lECi0rZ3N0X2ZmbXBlZ19jYXBzX3RvX2NvZGVjaWQgKGNvbnN0IEdzdENhcHMgKiBjYXBzLCBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQpCi0rewotKyAgZW51bSBDb2RlY0lEIGlkID0gQ09ERUNfSURfTk9ORTsKLSsgIGNvbnN0IGdjaGFyICptaW1ldHlwZTsKLSsgIGNvbnN0IEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotKyAgZ2Jvb2xlYW4gdmlkZW8gPSBGQUxTRSwgYXVkaW8gPSBGQUxTRTsgICAgICAgIC8qIHdlIHdhbnQgdG8gYmUgc3VyZSEgKi8KLSsKLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjYXBzICE9IE5VTEwsIENPREVDX0lEX05PTkUpOwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9jYXBzX2dldF9zaXplIChjYXBzKSA9PSAxLCBDT0RFQ19JRF9OT05FKTsKLSsgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKwotKyAgbWltZXR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpOwotKwotKyAgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1yYXctcmdiIikgfHwKLSsgICAgICAhc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtcmF3LXl1diIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfUkFXVklERU87Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXJhdy1pbnQiKSkgewotKyAgICBnaW50IGRlcHRoLCB3aWR0aCwgZW5kaWFubmVzczsKLSsgICAgZ2Jvb2xlYW4gc2lnbmVkbmVzczsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZW5kaWFubmVzcyIsICZlbmRpYW5uZXNzKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RydWN0dXJlLCAic2lnbmVkIiwgJnNpZ25lZG5lc3MpICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJkZXB0aCIsICZkZXB0aCkgJiYgZGVwdGggPT0gd2lkdGgpIHsKLSsgICAgICBzd2l0Y2ggKGRlcHRoKSB7Ci0rICAgICAgICBjYXNlIDg6Ci0rICAgICAgICAgIGlmIChzaWduZWRuZXNzKSB7Ci0rICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9QQ01fUzg7Ci0rICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9QQ01fVTg7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDE2OgotKyAgICAgICAgICBzd2l0Y2ggKGVuZGlhbm5lc3MpIHsKLSsgICAgICAgICAgICBjYXNlIEdfQklHX0VORElBTjoKLSsgICAgICAgICAgICAgIGlmIChzaWduZWRuZXNzKSB7Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1MxNkJFOwotKyAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9QQ01fVTE2QkU7Ci0rICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIEdfTElUVExFX0VORElBTjoKLSsgICAgICAgICAgICAgIGlmIChzaWduZWRuZXNzKSB7Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1MxNkxFOwotKyAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9QQ01fVTE2TEU7Ci0rICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgfQotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgICBhdWRpbyA9IFRSVUU7Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LW11bGF3IikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9QQ01fTVVMQVc7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWFsYXciKSkgewotKyAgICBpZCA9IENPREVDX0lEX1BDTV9BTEFXOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1kdiIpKSB7Ci0rICAgIGdib29sZWFuIHN5c19zdHJtOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RydWN0dXJlLCAic3lzdGVtc3RyZWFtIiwgJnN5c19zdHJtKSAmJgotKyAgICAgICAgIXN5c19zdHJtKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9EVlZJREVPOwotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZHYiKSkgeyAgICAgICAgLyogPz8/ICovCi0rICAgIGlkID0gQ09ERUNfSURfRFZBVURJTzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtaDI2MyIpKSB7Ci0rICAgIGNvbnN0IGdjaGFyICpoMjYzdmVyc2lvbiA9Ci0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImgyNjN2ZXJzaW9uIik7Ci0rICAgIGlmIChoMjYzdmVyc2lvbiAmJiAhc3RyY21wIChoMjYzdmVyc2lvbiwgImgyNjNwIikpCi0rICAgICAgaWQgPSBDT0RFQ19JRF9IMjYzUDsKLSsgICAgZWxzZQotKyAgICAgIGlkID0gQ09ERUNfSURfSDI2MzsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtaW50ZWwtaDI2MyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfSDI2M0k7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWgyNjEiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0gyNjE7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby9tcGVnIikpIHsKLSsgICAgZ2Jvb2xlYW4gc3lzX3N0cm07Ci0rICAgIGdpbnQgbXBlZ3ZlcnNpb247Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHJ1Y3R1cmUsICJzeXN0ZW1zdHJlYW0iLCAmc3lzX3N0cm0pICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIm1wZWd2ZXJzaW9uIiwgJm1wZWd2ZXJzaW9uKSAmJgotKyAgICAgICAgIXN5c19zdHJtKSB7Ci0rICAgICAgc3dpdGNoIChtcGVndmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01QRUcxVklERU87Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAyOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01QRUcyVklERU87Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSA0OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01QRUc0OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImltYWdlL2pwZWciKSkgewotKyAgICBpZCA9IENPREVDX0lEX01KUEVHOyAgICAgICAgLyogQS4uLiBCLi4uICovCi0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWpwZWctYiIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfTUpQRUdCOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC13bXYiKSkgewotKyAgICBnaW50IHdtdnZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3bXZ2ZXJzaW9uIiwgJndtdnZlcnNpb24pKSB7Ci0rICAgICAgc3dpdGNoICh3bXZ2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfV01WMTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDI6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfV01WMjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICB7Ci0rICAgICAgICAgIGd1aW50MzIgZm91cmNjOwotKwotKyAgICAgICAgICAvKiBXTVYzIHVubGVzcyB0aGUgZm91cmNjIGV4aXN0cyBhbmQgc2F5cyBvdGhlcndpc2UgKi8KLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9XTVYzOwotKwotKyAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZm91cmNjIChzdHJ1Y3R1cmUsICJmb3JtYXQiLCAmZm91cmNjKSkgewotKyAgICAgICAgICAgIGlmICgoZm91cmNjID09IEdTVF9NQUtFX0ZPVVJDQyAoJ1cnLCAnVicsICdDJywgJzEnKSkgfHwKLSsgICAgICAgICAgICAgICAgKGZvdXJjYyA9PSBHU1RfTUFLRV9GT1VSQ0MgKCdXJywgJ00nLCAnVicsICdBJykpKSB7Ci0rICAgICAgICAgICAgICBpZCA9IENPREVDX0lEX1ZDMTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXZvcmJpcyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfVk9SQklTOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1xZG0yIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9RRE0yOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8vbXBlZyIpKSB7Ci0rICAgIGdpbnQgbGF5ZXIgPSAwOwotKyAgICBnaW50IG1wZWd2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAibXBlZ3ZlcnNpb24iLCAmbXBlZ3ZlcnNpb24pKSB7Ci0rICAgICAgc3dpdGNoIChtcGVndmVyc2lvbikgewotKyAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAvKiBmZm1wZWcgdXNlcyBmYWFkIGZvciBib3RoLi4uICovCi0rICAgICAgICBjYXNlIDQ6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfQUFDOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAibGF5ZXIiLCAmbGF5ZXIpKSB7Ci0rICAgICAgICAgICAgc3dpdGNoIChsYXllcikgewotKyAgICAgICAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICAgICAgICBpZCA9IENPREVDX0lEX01QMTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICBjYXNlIDI6Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfTVAyOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUDM7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgfQotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1tdXNlcGFjayIpKSB7Ci0rICAgIGdpbnQgc3RyZWFtdmVyc2lvbiA9IC0xOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJzdHJlYW12ZXJzaW9uIiwgJnN0cmVhbXZlcnNpb24pKSB7Ci0rICAgICAgaWYgKHN0cmVhbXZlcnNpb24gPT0gNykKLSsgICAgICAgIGlkID0gQ09ERUNfSURfTVVTRVBBQ0s3OwotKyAgICB9IGVsc2UgewotKyAgICAgIGlkID0gQ09ERUNfSURfTVVTRVBBQ0s3OwotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC13bWEiKSkgewotKyAgICBnaW50IHdtYXZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3bWF2ZXJzaW9uIiwgJndtYXZlcnNpb24pKSB7Ci0rICAgICAgc3dpdGNoICh3bWF2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfV01BVjE7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAyOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1dNQVYyOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9XTUFQUk87Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC13bXMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1dNQVZPSUNFOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1hYzMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0FDMzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZWFjMyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfRUFDMzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtdm5kLnNvbnkuYXRyYWMzIikgfHwKLSsgICAgICAhc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL2F0cmFjMyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfQVRSQUMzOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1kdHMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0RUUzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImFwcGxpY2F0aW9uL3gtYXBlIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9BUEU7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LW1zbXBlZyIpKSB7Ci0rICAgIGdpbnQgbXNtcGVndmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIm1zbXBlZ3ZlcnNpb24iLCAmbXNtcGVndmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKG1zbXBlZ3ZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgNDE6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTVNNUEVHNFYxOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDI6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTVNNUEVHNFYyOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTVNNUEVHNFYzOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtc3ZxIikpIHsKLSsgICAgZ2ludCBzdnF2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAic3ZxdmVyc2lvbiIsICZzdnF2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAoc3ZxdmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1NWUTE7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAzOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1NWUTM7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1odWZmeXV2IikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9IVUZGWVVWOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1tYWNlIikpIHsKLSsgICAgZ2ludCBtYWNldmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIm1hY2V2ZXJzaW9uIiwgJm1hY2V2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAobWFjZXZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NQUNFMzsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDY6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTUFDRTY7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC10aGVvcmEiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1RIRU9SQTsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtdnAzIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9WUDM7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXZwNSIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfVlA1OwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC12cDYiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1ZQNjsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtdnA2LWZsYXNoIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9WUDZGOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC12cDYtYWxwaGEiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1ZQNkE7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXZwOCIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfVlA4OwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1mbGFzaC1zY3JlZW4iKSkgewotKyAgICBpZCA9IENPREVDX0lEX0ZMQVNIU1Y7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWluZGVvIikpIHsKLSsgICAgZ2ludCBpbmRlb3ZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJpbmRlb3ZlcnNpb24iLCAmaW5kZW92ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAoaW5kZW92ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDU6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfSU5ERU81OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9JTkRFTzM7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAyOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX0lOREVPMjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgICAgdmlkZW8gPSBUUlVFOwotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1kaXZ4IikpIHsKLSsgICAgZ2ludCBkaXZ4dmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImRpdnh2ZXJzaW9uIiwgJmRpdnh2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAoZGl2eHZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NU01QRUc0VjM7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSA0OgotKyAgICAgICAgY2FzZSA1OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01QRUc0OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtM2l2eCIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfTVBFRzQ7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXh2aWQiKSkgewotKyAgICBpZCA9IENPREVDX0lEX01QRUc0OwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1mZnYiKSkgewotKyAgICBnaW50IGZmdnZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJmZnZ2ZXJzaW9uIiwgJmZmdnZlcnNpb24pICYmCi0rICAgICAgICBmZnZ2ZXJzaW9uID09IDEpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0ZGVjE7Ci0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1hZHBjbSIpKSB7Ci0rICAgIGNvbnN0IGdjaGFyICpsYXlvdXQ7Ci0rCi0rICAgIGxheW91dCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAibGF5b3V0Iik7Ci0rICAgIGlmIChsYXlvdXQgPT0gTlVMTCkgewotKyAgICAgIC8qIGJyZWFrICovCi0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAicXVpY2t0aW1lIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9RVDsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJtaWNyb3NvZnQiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fTVM7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZHZpIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9XQVY7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiNHhtIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNXzRYTTsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzbWpwZWciKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fSU1BX1NNSlBFRzsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJkazMiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fSU1BX0RLMzsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJkazQiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fSU1BX0RLNDsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJ3ZXN0d29vZCIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9JTUFfV1M7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiaXNzIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9JU1M7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAieGEiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fWEE7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiYWR4IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0FEWDsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJlYSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9FQTsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJnNzI2IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0c3MjY7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZzcyMSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9HNzI2OwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImN0IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0NUOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgInN3ZiIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9TV0Y7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAieWFtYWhhIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX1lBTUFIQTsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzYnBybzIiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fU0JQUk9fMjsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzYnBybzMiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fU0JQUk9fMzsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzYnBybzQiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fU0JQUk9fNDsKLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC00eG0iKSkgewotKyAgICBpZCA9IENPREVDX0lEXzRYTTsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZHBjbSIpKSB7Ci0rICAgIGNvbnN0IGdjaGFyICpsYXlvdXQ7Ci0rCi0rICAgIGxheW91dCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAibGF5b3V0Iik7Ci0rICAgIGlmICghbGF5b3V0KSB7Ci0rICAgICAgLyogLi4gKi8KLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJyb3EiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfUk9RX0RQQ007Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiaW50ZXJwbGF5IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0lOVEVSUExBWV9EUENNOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgInhhbiIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9YQU5fRFBDTTsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzb2wiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfU09MX0RQQ007Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZmxhYyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfRkxBQzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtc2hvcnRlbiIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfU0hPUlRFTjsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtYWxhYyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfQUxBQzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtY2luZXBhayIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfQ0lORVBBSzsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtcG4tcmVhbHZpZGVvIikpIHsKLSsgICAgZ2ludCBybXZlcnNpb247Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgInJtdmVyc2lvbiIsICZybXZlcnNpb24pKSB7Ci0rICAgICAgc3dpdGNoIChybXZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9SVjEwOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9SVjIwOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9SVjMwOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9SVjQwOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtc2lwcm8iKSkgewotKyAgICBpZCA9IENPREVDX0lEX1NJUFI7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXBuLXJlYWxhdWRpbyIpKSB7Ci0rICAgIGdpbnQgcmF2ZXJzaW9uOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJyYXZlcnNpb24iLCAmcmF2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAocmF2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUkFfMTQ0OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9SQV8yODg7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSA4OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX0NPT0s7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1ybGUiKSkgewotKyAgICBjb25zdCBnY2hhciAqbGF5b3V0OwotKwotKyAgICBpZiAoKGxheW91dCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAibGF5b3V0IikpKSB7Ci0rICAgICAgaWYgKCFzdHJjbXAgKGxheW91dCwgIm1pY3Jvc29mdCIpKSB7Ci0rICAgICAgICBpZCA9IENPREVDX0lEX01TUkxFOwotKyAgICAgICAgdmlkZW8gPSBUUlVFOwotKyAgICAgIH0KLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gteGFuIikpIHsKLSsgICAgZ2ludCB3Y3ZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2N2ZXJzaW9uIiwgJndjdmVyc2lvbikpKSB7Ci0rICAgICAgc3dpdGNoICh3Y3ZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9YQU5fV0MzOwotKyAgICAgICAgICB2aWRlbyA9IFRSVUU7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSA0OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1hBTl9XQzQ7Ci0rICAgICAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby9BTVIiKSkgewotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICAgIGlkID0gQ09ERUNfSURfQU1SX05COwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL0FNUi1XQiIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfQU1SX1dCOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8vcWNlbHAiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1FDRUxQOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1oMjY0IikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9IMjY0OwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1mbGFzaC12aWRlbyIpKSB7Ci0rICAgIGdpbnQgZmx2dmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmICgoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJmbHZ2ZXJzaW9uIiwgJmZsdnZlcnNpb24pKSkgewotKyAgICAgIHN3aXRjaCAoZmx2dmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX0ZMVjE7Ci0rICAgICAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LW5lbGx5bW9zZXIiKSkgewotKyAgICBpZCA9IENPREVDX0lEX05FTExZTU9TRVI7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cm5jbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1nc3RfZmYtIiwgMTUpKSB7Ci0rICAgIGdjaGFyIGV4dFsxNl07Ci0rICAgIEFWQ29kZWMgKmNvZGVjOwotKwotKyAgICBpZiAoc3RybGVuIChtaW1ldHlwZSkgPD0gMzAgJiYKLSsgICAgICAgIHNzY2FuZiAobWltZXR5cGUsICJhdWRpby94LWdzdF9mZi0lcyIsIGV4dCkgPT0gMSkgewotKyAgICAgIGlmICgoY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcl9ieV9uYW1lIChleHQpKSB8fAotKyAgICAgICAgICAoY29kZWMgPSBhdmNvZGVjX2ZpbmRfZW5jb2Rlcl9ieV9uYW1lIChleHQpKSkgewotKyAgICAgICAgaWQgPSBjb2RlYy0+aWQ7Ci0rICAgICAgICBhdWRpbyA9IFRSVUU7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJuY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZ3N0X2ZmLSIsIDE1KSkgewotKyAgICBnY2hhciBleHRbMTZdOwotKyAgICBBVkNvZGVjICpjb2RlYzsKLSsKLSsgICAgaWYgKHN0cmxlbiAobWltZXR5cGUpIDw9IDMwICYmCi0rICAgICAgICBzc2NhbmYgKG1pbWV0eXBlLCAidmlkZW8veC1nc3RfZmYtJXMiLCBleHQpID09IDEpIHsKLSsgICAgICBpZiAoKGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXJfYnlfbmFtZSAoZXh0KSkgfHwKLSsgICAgICAgICAgKGNvZGVjID0gYXZjb2RlY19maW5kX2VuY29kZXJfYnlfbmFtZSAoZXh0KSkpIHsKLSsgICAgICAgIGlkID0gY29kZWMtPmlkOwotKyAgICAgICAgdmlkZW8gPSBUUlVFOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKwotKyAgaWYgKGNvbnRleHQgIT0gTlVMTCkgewotKyAgICBpZiAodmlkZW8gPT0gVFJVRSkgewotKyAgICAgIGNvbnRleHQtPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfVklERU87Ci0rICAgIH0gZWxzZSBpZiAoYXVkaW8gPT0gVFJVRSkgewotKyAgICAgIGNvbnRleHQtPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgY29udGV4dC0+Y29kZWNfdHlwZSA9IEFWTUVESUFfVFlQRV9VTktOT1dOOwotKyAgICB9Ci0rICAgIGNvbnRleHQtPmNvZGVjX2lkID0gaWQ7Ci0rICAgIGdzdF9mZm1wZWdfY2Fwc193aXRoX2NvZGVjaWQgKGlkLCBjb250ZXh0LT5jb2RlY190eXBlLCBjYXBzLCBjb250ZXh0KTsKLSsgIH0KLSsKLSsgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKSB7Ci0rICAgIEdTVF9ERUJVRyAoIlRoZSBpZD0lZCBiZWxvbmdzIHRvIHRoZSBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBpZCwgY2Fwcyk7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfV0FSTklORyAoIkNvdWxkbid0IGZpZ3VyZSBvdXQgdGhlIGlkIGZvciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSsgIH0KLSsKLSsgIHJldHVybiBpZDsKLSt9Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLnJlaiBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLnJlagotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5yZWoJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jLnJlagkyMDE0LTA4LTA4IDE1OjMxOjA2LjA1NTg2ODI0NiArMDIwMAotQEAgLTAsMCArMSwxMiBAQAotKy0tLSBleHQvZmZtcGVnL2dzdGZmbXBlZ2NvZGVjbWFwLmMKLSsrKysgZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jCi0rQEAgLTE4ODQsOSArMTg0Miw2IEBACi0rICAgICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCBlbmNvZGUsICJ2aWRlby94LXJhdy1yZ2IiLAotKyAgICAgICAgICAgICAiYnBwIiwgR19UWVBFX0lOVCwgYnBwLCAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwgImVuZGlhbm5lc3MiLAotKyAgICAgICAgICAgICBHX1RZUEVfSU5ULCBlbmRpYW5uZXNzLCBOVUxMKTsKLSstICAgICAgICBpZiAoY2FwcyAmJiBjb250ZXh0KSB7Ci0rLSAgICAgICAgICBnc3RfZmZtcGVnX3NldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSstICAgICAgICB9Ci0rICAgICAgIH0KLSsgICAgIH0gZWxzZSBpZiAoZm10KSB7Ci0rICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgZW5jb2RlLCAidmlkZW8veC1yYXcteXV2IiwKLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYwkyMDE0LTA4LTA4IDE0OjQ2OjMxLjQ2Mjc3MjM1MSArMDIwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jCTIwMTQtMDgtMDggMTU6MzI6MTguNjA4ODcwODQ3ICswMjAwCi1AQCAtODgsNyArODgsNiBAQAotICAgICAgIGdpbnQgZGVwdGg7Ci0gICAgIH0gYXVkaW87Ci0gICB9IGZvcm1hdDsKLS0gIGdib29sZWFuIHdhaXRpbmdfZm9yX2tleTsKLSAgIGdib29sZWFuIGRpc2NvbnQ7Ci0gICBnYm9vbGVhbiBjbGVhcl90czsKLSAKLUBAIC00MzgsNyArNDM3LDYgQEAKLSAgIGZmbXBlZ2RlYy0+cGNhY2hlID0gTlVMTDsKLSAgIGZmbXBlZ2RlYy0+cGFyID0gTlVMTDsKLSAgIGZmbXBlZ2RlYy0+b3BlbmVkID0gRkFMU0U7Ci0tICBmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSA9IFRSVUU7Ci0gICBmZm1wZWdkZWMtPnNraXBfZnJhbWUgPSBmZm1wZWdkZWMtPmxvd3JlcyA9IDA7Ci0gICBmZm1wZWdkZWMtPmRpcmVjdF9yZW5kZXJpbmcgPSBERUZBVUxUX0RJUkVDVF9SRU5ERVJJTkc7Ci0gICBmZm1wZWdkZWMtPmRvX3BhZGRpbmcgPSBERUZBVUxUX0RPX1BBRERJTkc7Ci1AQCAtNjA4LDExICs2MDYsNiBAQAotICAgICBnc3RfZmZtcGVnX2F2Y29kZWNfY2xvc2UgKGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0gICBmZm1wZWdkZWMtPm9wZW5lZCA9IEZBTFNFOwotIAotLSAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+cGFsY3RybCkgewotLSAgICBhdl9mcmVlIChmZm1wZWdkZWMtPmNvbnRleHQtPnBhbGN0cmwpOwotLSAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnBhbGN0cmwgPSBOVUxMOwotLSAgfQotLQotICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhKSB7Ci0gICAgIGF2X2ZyZWUgKGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhKTsKLSAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5leHRyYWRhdGEgPSBOVUxMOwotQEAgLTg2NCw3ICs4NTcsNyBAQAotIAotICAgLyogd29ya2Fyb3VuZCBlbmNvZGVyIGJ1Z3MgKi8KLSAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+d29ya2Fyb3VuZF9idWdzIHw9IEZGX0JVR19BVVRPREVURUNUOwotLSAgZmZtcGVnZGVjLT5jb250ZXh0LT5lcnJvcl9yZWNvZ25pdGlvbiA9IDE7Ci0rICBmZm1wZWdkZWMtPmNvbnRleHQtPmVycl9yZWNvZ25pdGlvbiA9IDE7Ci0gCi0gICAvKiBmb3Igc2xvdyBjcHVzICovCi0gICBmZm1wZWdkZWMtPmNvbnRleHQtPmxvd3JlcyA9IGZmbXBlZ2RlYy0+bG93cmVzOwotQEAgLTk0NCw3ICs5MzcsNyBAQAotICAgZnNpemUgPSBnc3RfZmZtcGVnX2F2cGljdHVyZV9nZXRfc2l6ZSAoZmZtcGVnZGVjLT5jb250ZXh0LT5waXhfZm10LAotICAgICAgIHdpZHRoLCBoZWlnaHQpOwotIAotLSAgaWYgKCFmZm1wZWdkZWMtPmNvbnRleHQtPnBhbGN0cmwgJiYgZmZtcGVnZGVjLT5jYW5fYWxsb2NhdGVfYWxpZ25lZCkgewotKyAgaWYgKGZmbXBlZ2RlYy0+Y2FuX2FsbG9jYXRlX2FsaWduZWQpIHsKLSAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImNhbGxpbmcgcGFkX2FsbG9jIik7Ci0gICAgIC8qIG5vIHBhbGxldGUsIHdlIGNhbiB1c2UgdGhlIGJ1ZmZlciBzaXplIHRvIGFsbG9jICovCi0gICAgIHJldCA9IGdzdF9wYWRfYWxsb2NfYnVmZmVyX2FuZF9zZXRfY2FwcyAoZmZtcGVnZGVjLT5zcmNwYWQsCi1AQCAtMTA4Myw3ICsxMDc2LDYgQEAKLSAgIC8qIHRlbGwgZmZtcGVnIHdlIG93biB0aGlzIGJ1ZmZlciwgdHJhbmZlciB0aGUgcmVmIHdlIGhhdmUgb24gdGhlIGJ1ZmZlciB0bwotICAgICogdGhlIG9wYXF1ZSBkYXRhLiAqLwotICAgcGljdHVyZS0+dHlwZSA9IEZGX0JVRkZFUl9UWVBFX1VTRVI7Ci0tICBwaWN0dXJlLT5hZ2UgPSAyNTYgKiAyNTYgKiAyNTYgKiA2NDsKLSAgIHBpY3R1cmUtPm9wYXF1ZSA9IGJ1ZjsKLSAKLSAjaWZkZWYgRVhUUkFfUkVGCi1AQCAtMTQxNCwxMCArMTQwNiw2IEBACi0gICB9IGVsc2UgewotICAgICBpZiAoZGlmZiA+PSAwKSB7Ci0gICAgICAgLyogd2UncmUgdG9vIHNsb3csIHRyeSB0byBzcGVlZCB1cCAqLwotLSAgICAgIGlmIChmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSkgewotLSAgICAgICAgLyogd2Ugd2VyZSB3YWl0aW5nIGZvciBhIGtleWZyYW1lLCB0aGF0J3Mgb2sgKi8KLS0gICAgICAgIGdvdG8gc2tpcHBpbmc7Ci0tICAgICAgfQotICAgICAgIC8qIHN3aXRjaCB0byBza2lwX2ZyYW1lIG1vZGUgKi8KLSAgICAgICBnb3RvIHNraXBfZnJhbWU7Ci0gICAgIH0KLUBAIC0xNDI3LDExICsxNDE1LDYgQEAKLSAgIGZmbXBlZ2RlYy0+cHJvY2Vzc2VkKys7Ci0gICByZXR1cm4gVFJVRTsKLSAKLS1za2lwcGluZzoKLS0gIHsKLS0gICAgcmVzID0gRkFMU0U7Ci0tICAgIGdvdG8gZHJvcF9xb3M7Ci0tICB9Ci0gbm9ybWFsX21vZGU6Ci0gICB7Ci0gICAgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgIT0gQVZESVNDQVJEX0RFRkFVTFQpIHsKLUBAIC0xNTI4LDQzICsxNTExLDYgQEAKLSB9Ci0gCi0gCi0tLyogZmlndXJlIG91dCBpZiB0aGUgY3VycmVudCBwaWN0dXJlIGlzIGEga2V5ZnJhbWUsIHJldHVybiBUUlVFIGlmIHRoYXQgaXMKLS0gKiB0aGUgY2FzZS4gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1jaGVja19rZXlmcmFtZSAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotLXsKLS0gIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0tICBnYm9vbGVhbiBpc19pdHlwZSA9IEZBTFNFOwotLSAgZ2Jvb2xlYW4gaXNfcmVmZXJlbmNlID0gRkFMU0U7Ci0tICBnYm9vbGVhbiBpc2tleWZyYW1lOwotLQotLSAgLyogZmlndXJlIG91dCBpZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEga2V5ZnJhbWUgKi8KLS0gIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLS0KLS0gIC8qIHJlbWVtYmVyIHRoYXQgd2UgaGF2ZSBCIGZyYW1lcywgd2UgbmVlZCB0aGlzIGZvciB0aGUgRFRTIC0+IFBUUyBjb252ZXJzaW9uCi0tICAgKiBjb2RlICovCi0tICBpZiAoIWZmbXBlZ2RlYy0+aGFzX2JfZnJhbWVzICYmIGZmbXBlZ2RlYy0+cGljdHVyZS0+cGljdF90eXBlID09IEZGX0JfVFlQRSkgewotLSAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJ3ZSBoYXZlIEIgZnJhbWVzIik7Ci0tICAgIGZmbXBlZ2RlYy0+aGFzX2JfZnJhbWVzID0gVFJVRTsKLS0gIH0KLS0KLS0gIGlzX2l0eXBlID0gKGZmbXBlZ2RlYy0+cGljdHVyZS0+cGljdF90eXBlID09IEZGX0lfVFlQRSk7Ci0tICBpc19yZWZlcmVuY2UgPSAoZmZtcGVnZGVjLT5waWN0dXJlLT5yZWZlcmVuY2UgPT0gMSk7Ci0tCi0tICBpc2tleWZyYW1lID0gKGlzX2l0eXBlIHx8IGlzX3JlZmVyZW5jZSB8fCBmZm1wZWdkZWMtPnBpY3R1cmUtPmtleV9mcmFtZSkKLS0gICAgICB8fCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0lOREVPMykKLS0gICAgICB8fCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX01TWkgpCi0tICAgICAgfHwgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9aTElCKQotLSAgICAgIHx8IChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfVlAzKQotLSAgICAgIHx8IChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfSFVGRllVVik7Ci0tCi0tICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotLSAgICAgICJjdXJyZW50IHBpY3R1cmU6IHR5cGU6ICVkLCBpc19rZXlmcmFtZTolZCwgaXNfaXR5cGU6JWQsIGlzX3JlZmVyZW5jZTolZCIsCi0tICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5waWN0X3R5cGUsIGlza2V5ZnJhbWUsIGlzX2l0eXBlLCBpc19yZWZlcmVuY2UpOwotLQotLSAgcmV0dXJuIGlza2V5ZnJhbWU7Ci0tfQotLQotIC8qIGdldCBhbiBvdXRidWYgYnVmZmVyIHdpdGggdGhlIGN1cnJlbnQgcGljdHVyZSAqLwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gZ2V0X291dHB1dF9idWZmZXIgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgR3N0QnVmZmVyICoqIG91dGJ1ZikKLUBAIC0xNjk0LDcgKzE2NDAsNiBAQAotIHsKLSAgIGdpbnQgbGVuID0gLTE7Ci0gICBnaW50IGhhdmVfZGF0YTsKLS0gIGdib29sZWFuIGlza2V5ZnJhbWU7Ci0gICBnYm9vbGVhbiBtb2RlX3N3aXRjaDsKLSAgIGdib29sZWFuIGRlY29kZTsKLSAgIGdpbnQgc2tpcF9mcmFtZSA9IEFWRElTQ0FSRF9ERUZBVUxUOwotQEAgLTE4MDksNyArMTc1NCw2IEBACi0gICAgIGdzdF9mZm1wZWdkZWNfbmVnb3RpYXRlIChmZm1wZWdkZWMsIFRSVUUpOwotICAgfQotIAotLQotICAgLyogV2hldGhlciBhIGZyYW1lIGlzIGludGVybGFjZWQgb3Igbm90IGlzIHVua25vd24gYXQgdGhlIHRpbWUgb2YKLSAgICAgIGJ1ZmZlciBhbGxvY2F0aW9uLCBzbyBjYXBzIG9uIHRoZSBidWZmZXIgaW4gb3BhcXVlIHdpbGwgaGF2ZQotICAgICAgdGhlIHByZXZpb3VzIGZyYW1lJ3MgaW50ZXJsYWNlZCBmbGFnIHNldC4gU28gaWYgaW50ZXJsYWNlZG5lc3MKLUBAIC0xODMxLDEwICsxNzc1LDYgQEAKLSAgICAgfQotICAgfQotIAotLSAgLyogY2hlY2sgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGtleWZyYW1lIGhlcmUsIHRoaXMgd2lsbCBhbHNvIGNoZWNrIGlmIHdlCi0tICAgKiBhcmUgZGVhbGluZyB3aXRoIEIgZnJhbWVzLiAqLwotLSAgaXNrZXlmcmFtZSA9IGNoZWNrX2tleWZyYW1lIChmZm1wZWdkZWMpOwotLQotICAgLyogY2hlY2sgdGhhdCB0aGUgdGltZXN0YW1wcyBnbyB1cHdhcmRzICovCi0gICBpZiAoZmZtcGVnZGVjLT5sYXN0X291dCAhPSAtMSAmJiBmZm1wZWdkZWMtPmxhc3Rfb3V0ID4gb3V0X3B0cykgewotICAgICAvKiB0aW1lc3RhbXBzIGdvIGJhY2t3YXJkcywgdGhpcyBtZWFucyBmcmFtZXMgd2VyZSByZW9yZGVyZWQgYW5kIHdlIG11c3QKLUBAIC0xODY1LDcgKzE4MDUsNyBAQAotICAgICogdGltZXN0YW1wcyAqLwotICAgaWYgKCFmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiAmJiBmZm1wZWdkZWMtPnJlb3JkZXJlZF9vdXQpIHsKLSAgICAgLyogUFRTIGFuZCBEVFMgYXJlIHRoZSBzYW1lIGZvciBrZXlmcmFtZXMgKi8KLS0gICAgaWYgKCFpc2tleWZyYW1lICYmIGZmbXBlZ2RlYy0+bmV4dF9vdXQgIT0gLTEpIHsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+bmV4dF9vdXQgIT0gLTEpIHsKLSAgICAgICAvKiBpbnRlcnBvbGF0ZSBhbGwgdGltZXN0YW1wcyBleGNlcHQgZm9yIGtleWZyYW1lcywgRklYTUUsIHRoaXMgaXMKLSAgICAgICAgKiB3cm9uZyB3aGVuIFFvUyBpcyBhY3RpdmUuICovCi0gICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiaW50ZXJwb2xhdGUgdGltZXN0YW1wcyIpOwotQEAgLTE4NzQsMTYgKzE4MTQsNiBAQAotICAgICB9Ci0gICB9Ci0gCi0tICAvKiB3aGVuIHdlJ3JlIHdhaXRpbmcgZm9yIGEga2V5ZnJhbWUsIHNlZSBpZiB3ZSBoYXZlIG9uZSBvciBkcm9wIHRoZSBjdXJyZW50Ci0tICAgKiBub24ta2V5ZnJhbWUgKi8KLS0gIGlmIChHX1VOTElLRUxZIChmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSkpIHsKLS0gICAgaWYgKEdfTElLRUxZICghaXNrZXlmcmFtZSkpCi0tICAgICAgZ290byBkcm9wX25vbl9rZXlmcmFtZTsKLS0KLS0gICAgLyogd2UgaGF2ZSBhIGtleWZyYW1lLCB3ZSBjYW4gc3RvcCB3YWl0aW5nIGZvciBvbmUgKi8KLS0gICAgZmZtcGVnZGVjLT53YWl0aW5nX2Zvcl9rZXkgPSBGQUxTRTsKLS0gIH0KLS0KLSAgIC8qIGdldCBhIGhhbmRsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlciAqLwotICAgKnJldCA9IGdldF9vdXRwdXRfYnVmZmVyIChmZm1wZWdkZWMsIG91dGJ1Zik7Ci0gICBpZiAoR19VTkxJS0VMWSAoKnJldCAhPSBHU1RfRkxPV19PSykpCi1AQCAtMjAwMCwyMCArMTkzMCwxMSBAQAotICAgZWxzZQotICAgICBmZm1wZWdkZWMtPm5leHRfb3V0ID0gLTE7Ci0gCi0tICAvKiBwYWxldHRlIGlzIG5vdCBwYXJ0IG9mIHJhdyB2aWRlbyBmcmFtZSBpbiBnc3QgYW5kIHRoZSBzaXplCi0tICAgKiBvZiB0aGUgb3V0Z29pbmcgYnVmZmVyIG5lZWRzIHRvIGJlIGFkanVzdGVkIGFjY29yZGluZ2x5ICovCi0tICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5wYWxjdHJsICE9IE5VTEwpCi0tICAgIEdTVF9CVUZGRVJfU0laRSAoKm91dGJ1ZikgLT0gQVZQQUxFVFRFX1NJWkU7Ci0tCi0gICAvKiBub3cgc2VlIGlmIHdlIG5lZWQgdG8gY2xpcCB0aGUgYnVmZmVyIGFnYWluc3QgdGhlIHNlZ21lbnQgYm91bmRhcmllcy4gKi8KLSAgIGlmIChHX1VOTElLRUxZICghY2xpcF92aWRlb19idWZmZXIgKGZmbXBlZ2RlYywgKm91dGJ1Ziwgb3V0X3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgIG91dF9kdXJhdGlvbikpKQotICAgICBnb3RvIGNsaXBwZWQ7Ci0gCi0tICAvKiBtYXJrIGFzIGtleWZyYW1lIG9yIGRlbHRhIHVuaXQgKi8KLS0gIGlmICghaXNrZXlmcmFtZSkKLS0gICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoKm91dGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpOwotLQotICAgaWYgKGZmbXBlZ2RlYy0+cGljdHVyZS0+dG9wX2ZpZWxkX2ZpcnN0KQotICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUICgqb3V0YnVmLCBHU1RfVklERU9fQlVGRkVSX1RGRik7Ci0gCi1AQCAtMjAyNCwxMSArMTk0NSw2IEBACi0gICByZXR1cm4gbGVuOwotIAotICAgLyogc3BlY2lhbCBjYXNlcyAqLwotLWRyb3Bfbm9uX2tleWZyYW1lOgotLSAgewotLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkRyb3BwaW5nIG5vbi1rZXlmcmFtZSAoc2Vlay9pbml0KSIpOwotLSAgICBnb3RvIGJlYWNoOwotLSAgfQotIG5vX291dHB1dDoKLSAgIHsKLSAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAibm8gb3V0cHV0IGJ1ZmZlciIpOwotQEAgLTI0MjIsNyArMjMzOCw2IEBACi0gICAgICAgZ3N0X2ZmbXBlZ2RlY19yZXNldF90cyAoZmZtcGVnZGVjKTsKLSAgICAgICBnc3RfZmZtcGVnZGVjX3Jlc2V0X3FvcyAoZmZtcGVnZGVjKTsKLSAgICAgICBnc3RfZmZtcGVnZGVjX2ZsdXNoX3BjYWNoZSAoZmZtcGVnZGVjKTsKLS0gICAgICBmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSA9IFRSVUU7Ci0gICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJmZmbXBlZ2RlYy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKLSAgICAgICBjbGVhcl9xdWV1ZWQgKGZmbXBlZ2RlYyk7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMjU2MCwxNyArMjQ3NSw2IEBACi0gCi0gICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0gCi0tICAvKiBkbyBlYXJseSBrZXlmcmFtZSBjaGVjayBwcmV0dHkgYmFkIHRvIHJlbHkgb24gdGhlIGtleWZyYW1lIGZsYWcgaW4gdGhlCi0tICAgKiBzb3VyY2UgZm9yIHRoaXMgYXMgaXQgbWlnaHQgbm90IGV2ZW4gYmUgcGFyc2VkIChVRFAvZmlsZS8uLikuICAqLwotLSAgaWYgKEdfVU5MSUtFTFkgKGZmbXBlZ2RlYy0+d2FpdGluZ19mb3Jfa2V5KSkgewotLSAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJ3YWl0aW5nIGZvciBrZXlmcmFtZSIpOwotLSAgICBpZiAoR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoaW5idWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKSAmJgotLSAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPnR5cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPKQotLSAgICAgIGdvdG8gc2tpcF9rZXlmcmFtZTsKLS0KLS0gICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZ290IGtleWZyYW1lIik7Ci0tICAgIGZmbXBlZ2RlYy0+d2FpdGluZ19mb3Jfa2V5ID0gRkFMU0U7Ci0tICB9Ci0gICAvKiBwYXJzZSBjYWNoZSBqb2luaW5nLiBJZiB0aGVyZSBpcyBjYWNoZWQgZGF0YSAqLwotICAgaWYgKGZmbXBlZ2RlYy0+cGNhY2hlKSB7Ci0gICAgIC8qIGpvaW4gd2l0aCBwcmV2aW91cyBkYXRhICovCi1AQCAtMjgwNSwxMiArMjcwOSw2IEBACi0gICAgIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmKTsKLSAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwotICAgfQotLXNraXBfa2V5ZnJhbWU6Ci0tICB7Ci0tICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInNraXBwaW5nIG5vbiBrZXlmcmFtZSIpOwotLSAgICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7Ci0tICAgIHJldHVybiBHU1RfRkxPV19PSzsKLS0gIH0KLSB9Ci0gCi0gc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1AQCAtMjkzNiw3ICsyODM0LDcgQEAKLSAgICAgZ2NoYXIgKnBsdWdpbl9uYW1lOwotIAotICAgICAvKiBvbmx5IGRlY29kZXJzICovCi0tICAgIGlmICghaW5fcGx1Z2luLT5kZWNvZGUpIHsKLSsgICAgaWYgKCFhdl9jb2RlY19pc19kZWNvZGVyIChpbl9wbHVnaW4pKSB7Ci0gICAgICAgZ290byBuZXh0OwotICAgICB9Ci0gCi1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5vcmlnIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jLm9yaWcKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5vcmlnCTIwMTQtMDgtMDggMTU6MzE6MDYuMDU3ODY4MjQ2ICswMjAwCi1AQCAtMCwwICsxLDI5NzMgQEAKLSsvKiBHU3RyZWFtZXIKLSsgKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2lmZGVmIEhBVkVfRkZNUEVHX1VOSU5TVEFMTEVECi0rI2luY2x1ZGUgPGF2Y29kZWMuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8Z3N0L2dzdC5oPgotKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSsKLSsjaW5jbHVkZSAiZ3N0ZmZtcGVnLmgiCi0rI2luY2x1ZGUgImdzdGZmbXBlZ2NvZGVjbWFwLmgiCi0rI2luY2x1ZGUgImdzdGZmbXBlZ3V0aWxzLmgiCi0rCi0rLyogZGVmaW5lIHRvIGVuYWJsZSBhbHRlcm5hdGl2ZSBidWZmZXIgcmVmY291bnRpbmcgYWxnb3JpdGhtICovCi0rI3VuZGVmIEVYVFJBX1JFRgotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdEZWMgR3N0RkZNcGVnRGVjOwotKwotKyNkZWZpbmUgTUFYX1RTX01BU0sgMHhmZgotKwotKy8qIGZvciBlYWNoIGluY29tbWluZyBidWZmZXIgd2Uga2VlcCBhbGwgdGltaW5nIGluZm8gaW4gYSBzdHJ1Y3R1cmUgbGlrZSB0aGlzLgotKyAqIFdlIGtlZXAgYSBjaXJjdWxhciBhcnJheSBvZiB0aGVzZSBzdHJ1Y3R1cmVzIGFyb3VuZCB0byBzdG9yZSB0aGUgdGltaW5nIGluZm8uCi0rICogVGhlIGluZGV4IGluIHRoZSBhcnJheSBpcyB3aGF0IHdlIHBhc3MgYXMgb3BhcXVlIGRhdGEgKHRvIHBpY3R1cmVzKSBhbmQKLSsgKiBwdHMgKHRvIHBhcnNlcnMpIHNvIHRoYXQgZmZtcGVnIGNhbiByZW1lbWJlciB0aGVtIGZvciB1cy4gKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGdpbnQgaWR4OwotKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKLSsgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKLSsgIGdpbnQ2NCBvZmZzZXQ7Ci0rfSBHc3RUU0luZm87Ci0rCi0rc3RydWN0IF9Hc3RGRk1wZWdEZWMKLSt7Ci0rICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0rCi0rICAvKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygb3VyIHBhZHMsIHNvIHdlIGRvIHNvIGhlcmUuICovCi0rICBHc3RQYWQgKnNyY3BhZDsKLSsgIEdzdFBhZCAqc2lua3BhZDsKLSsKLSsgIC8qIGRlY29kaW5nICovCi0rICBBVkNvZGVjQ29udGV4dCAqY29udGV4dDsKLSsgIEFWRnJhbWUgKnBpY3R1cmU7Ci0rICBnYm9vbGVhbiBvcGVuZWQ7Ci0rICB1bmlvbgotKyAgewotKyAgICBzdHJ1Y3QKLSsgICAgewotKyAgICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKLSsgICAgICBnaW50IGNsaXBfd2lkdGgsIGNsaXBfaGVpZ2h0OwotKyAgICAgIGdpbnQgcGFyX24sIHBhcl9kOwotKyAgICAgIGdpbnQgZnBzX24sIGZwc19kOwotKyAgICAgIGdpbnQgb2xkX2Zwc19uLCBvbGRfZnBzX2Q7Ci0rICAgICAgZ2Jvb2xlYW4gaW50ZXJsYWNlZDsKLSsKLSsgICAgICBlbnVtIFBpeGVsRm9ybWF0IHBpeF9mbXQ7Ci0rICAgIH0gdmlkZW87Ci0rICAgIHN0cnVjdAotKyAgICB7Ci0rICAgICAgZ2ludCBjaGFubmVsczsKLSsgICAgICBnaW50IHNhbXBsZXJhdGU7Ci0rICAgICAgZ2ludCBkZXB0aDsKLSsgICAgfSBhdWRpbzsKLSsgIH0gZm9ybWF0OwotKyAgZ2Jvb2xlYW4gZGlzY29udDsKLSsgIGdib29sZWFuIGNsZWFyX3RzOwotKwotKyAgLyogZm9yIHRyYWNraW5nIERUUy9QVFMgKi8KLSsgIGdib29sZWFuIGhhc19iX2ZyYW1lczsKLSsgIGdib29sZWFuIHJlb3JkZXJlZF9pbjsKLSsgIEdzdENsb2NrVGltZSBsYXN0X2luOwotKyAgR3N0Q2xvY2tUaW1lIGxhc3RfZGlmZjsKLSsgIGd1aW50IGxhc3RfZnJhbWVzOwotKyAgZ2Jvb2xlYW4gcmVvcmRlcmVkX291dDsKLSsgIEdzdENsb2NrVGltZSBsYXN0X291dDsKLSsgIEdzdENsb2NrVGltZSBuZXh0X291dDsKLSsKLSsgIC8qIHBhcnNpbmcgKi8KLSsgIGdib29sZWFuIHR1cm5vZmZfcGFyc2VyOyAgICAgIC8qIHVzZWQgZm9yIHR1cm5pbmcgb2ZmIGFhYyByYXcgcGFyc2luZwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU2VlIGJ1ZyAjNTY2MjUwICovCi0rICBBVkNvZGVjUGFyc2VyQ29udGV4dCAqcGN0eDsKLSsgIEdzdEJ1ZmZlciAqcGNhY2hlOwotKyAgZ3VpbnQ4ICpwYWRkZWQ7Ci0rICBndWludCBwYWRkZWRfc2l6ZTsKLSsKLSsgIEdWYWx1ZSAqcGFyOyAgICAgICAgICAgICAgICAgIC8qIHBpeGVsIGFzcGVjdCByYXRpbyBvZiBpbmNvbWluZyBkYXRhICovCi0rICBnYm9vbGVhbiBjdXJyZW50X2RyOyAgICAgICAgICAvKiBpZiBkaXJlY3QgcmVuZGVyaW5nIGlzIGVuYWJsZWQgKi8KLSsgIGdib29sZWFuIGV4dHJhX3JlZjsgICAgICAgICAgIC8qIGtlZXAgZXh0cmEgcmVmIGFyb3VuZCBpbiBnZXQvcmVsZWFzZSAqLwotKwotKyAgLyogc29tZSBwcm9wZXJ0aWVzICovCi0rICBlbnVtIEFWRGlzY2FyZCBza2lwX2ZyYW1lOwotKyAgZ2ludCBsb3dyZXM7Ci0rICBnYm9vbGVhbiBkaXJlY3RfcmVuZGVyaW5nOwotKyAgZ2Jvb2xlYW4gZG9fcGFkZGluZzsKLSsgIGdib29sZWFuIGRlYnVnX212OwotKyAgZ2Jvb2xlYW4gY3JvcDsKLSsgIGludCBtYXhfdGhyZWFkczsKLSsKLSsgIC8qIFFvUyBzdHVmZiAqLy8qIHdpdGggTE9DSyAqLwotKyAgZ2RvdWJsZSBwcm9wb3J0aW9uOwotKyAgR3N0Q2xvY2tUaW1lIGVhcmxpZXN0X3RpbWU7Ci0rICBnaW50NjQgcHJvY2Vzc2VkOwotKyAgZ2ludDY0IGRyb3BwZWQ7Ci0rCi0rICAvKiBjbGlwcGluZyBzZWdtZW50ICovCi0rICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci0rCi0rICBnYm9vbGVhbiBpc19yZWFsdmlkZW87Ci0rCi0rICBHc3RUU0luZm8gdHNfaW5mb1tNQVhfVFNfTUFTSyArIDFdOwotKyAgZ2ludCB0c19pZHg7Ci0rCi0rICAvKiByZXZlcnNlIHBsYXliYWNrIHF1ZXVlICovCi0rICBHTGlzdCAqcXVldWVkOwotKwotKyAgLyogQ2FuIGRvd25zdHJlYW0gYWxsb2NhdGUgMTZieXRlcyBhbGlnbmVkIGRhdGEuICovCi0rICBnYm9vbGVhbiBjYW5fYWxsb2NhdGVfYWxpZ25lZDsKLSt9OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdEZWNDbGFzcyBHc3RGRk1wZWdEZWNDbGFzczsKLSsKLStzdHJ1Y3QgX0dzdEZGTXBlZ0RlY0NsYXNzCi0rewotKyAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKLSsKLSsgIEFWQ29kZWMgKmluX3BsdWdpbjsKLSsgIEdzdFBhZFRlbXBsYXRlICpzcmN0ZW1wbCwgKnNpbmt0ZW1wbDsKLSt9OwotKwotKyNkZWZpbmUgR1NUX1RTX0lORk9fTk9ORSAmdHNfaW5mb19ub25lCi0rc3RhdGljIGNvbnN0IEdzdFRTSW5mbyB0c19pbmZvX25vbmUgPSB7IC0xLCAtMSwgLTEsIC0xIH07Ci0rCi0rc3RhdGljIGNvbnN0IEdzdFRTSW5mbyAqCi0rZ3N0X3RzX2luZm9fc3RvcmUgKEdzdEZGTXBlZ0RlYyAqIGRlYywgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwKLSsgICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uLCBnaW50NjQgb2Zmc2V0KQotK3sKLSsgIGdpbnQgaWR4ID0gZGVjLT50c19pZHg7Ci0rICBkZWMtPnRzX2luZm9baWR4XS5pZHggPSBpZHg7Ci0rICBkZWMtPnRzX2luZm9baWR4XS50aW1lc3RhbXAgPSB0aW1lc3RhbXA7Ci0rICBkZWMtPnRzX2luZm9baWR4XS5kdXJhdGlvbiA9IGR1cmF0aW9uOwotKyAgZGVjLT50c19pbmZvW2lkeF0ub2Zmc2V0ID0gb2Zmc2V0OwotKyAgZGVjLT50c19pZHggPSAoaWR4ICsgMSkgJiBNQVhfVFNfTUFTSzsKLSsKLSsgIHJldHVybiAmZGVjLT50c19pbmZvW2lkeF07Ci0rfQotKwotK3N0YXRpYyBjb25zdCBHc3RUU0luZm8gKgotK2dzdF90c19pbmZvX2dldCAoR3N0RkZNcGVnRGVjICogZGVjLCBnaW50IGlkeCkKLSt7Ci0rICBpZiAoR19VTkxJS0VMWSAoaWR4IDwgMCB8fCBpZHggPiBNQVhfVFNfTUFTSykpCi0rICAgIHJldHVybiBHU1RfVFNfSU5GT19OT05FOwotKwotKyAgcmV0dXJuICZkZWMtPnRzX2luZm9baWR4XTsKLSt9Ci0rCi0rI2RlZmluZSBHU1RfVFlQRV9GRk1QRUdERUMgXAotKyAgKGdzdF9mZm1wZWdkZWNfZ2V0X3R5cGUoKSkKLSsjZGVmaW5lIEdTVF9GRk1QRUdERUMob2JqKSBcCi0rICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfRkZNUEVHREVDLEdzdEZGTXBlZ0RlYykpCi0rI2RlZmluZSBHU1RfRkZNUEVHREVDX0NMQVNTKGtsYXNzKSBcCi0rICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9GRk1QRUdERUMsR3N0RkZNcGVnRGVjQ2xhc3MpKQotKyNkZWZpbmUgR1NUX0lTX0ZGTVBFR0RFQyhvYmopIFwKLSsgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9GRk1QRUdERUMpKQotKyNkZWZpbmUgR1NUX0lTX0ZGTVBFR0RFQ19DTEFTUyhrbGFzcykgXAotKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfRkZNUEVHREVDKSkKLSsKLSsjZGVmaW5lIERFRkFVTFRfTE9XUkVTCQkJMAotKyNkZWZpbmUgREVGQVVMVF9TS0lQRlJBTUUJCTAKLSsjZGVmaW5lIERFRkFVTFRfRElSRUNUX1JFTkRFUklORwlUUlVFCi0rI2RlZmluZSBERUZBVUxUX0RPX1BBRERJTkcJCVRSVUUKLSsjZGVmaW5lIERFRkFVTFRfREVCVUdfTVYJCUZBTFNFCi0rI2RlZmluZSBERUZBVUxUX0NST1AJCQlUUlVFCi0rI2RlZmluZSBERUZBVUxUX01BWF9USFJFQURTCQkxCi0rCi0rZW51bQotK3sKLSsgIFBST1BfMCwKLSsgIFBST1BfTE9XUkVTLAotKyAgUFJPUF9TS0lQRlJBTUUsCi0rICBQUk9QX0RJUkVDVF9SRU5ERVJJTkcsCi0rICBQUk9QX0RPX1BBRERJTkcsCi0rICBQUk9QX0RFQlVHX01WLAotKyAgUFJPUF9DUk9QLAotKyAgUFJPUF9NQVhfVEhSRUFEUywKLSsgIFBST1BfTEFTVAotK307Ci0rCi0rLyogQSBudW1iZXIgb2YgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgZ2l2ZW4gc28gd2UgY2FuIHJlZmVyIHRvIHRoZW0gbGF0ZXIuICovCi0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19iYXNlX2luaXQgKEdzdEZGTXBlZ0RlY0NsYXNzICoga2xhc3MpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfY2xhc3NfaW5pdCAoR3N0RkZNcGVnRGVjQ2xhc3MgKiBrbGFzcyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19pbml0IChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotKwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfZmZtcGVnZGVjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdFF1ZXJ5ICogcXVlcnkpOwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfZmZtcGVnZGVjX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KTsKLSsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2ZmbXBlZ2RlY19zZXRjYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2ZmbXBlZ2RlY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICogZXZlbnQpOwotK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9mZm1wZWdkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0QnVmZmVyICogYnVmKTsKLSsKLStzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X2ZmbXBlZ2RlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotKyAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLSsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnZGVjX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSsgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0rICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotKwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfZmZtcGVnZGVjX25lZ290aWF0ZSAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLAotKyAgICBnYm9vbGVhbiBmb3JjZSk7Ci0rCi0rLyogc29tZSBzb3J0IG9mIGJ1ZmZlcnBvb2wgaGFuZGxpbmcsIGJ1dCBkaWZmZXJlbnQgKi8KLStzdGF0aWMgaW50IGdzdF9mZm1wZWdkZWNfZ2V0X2J1ZmZlciAoQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LAotKyAgICBBVkZyYW1lICogcGljdHVyZSk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19yZWxlYXNlX2J1ZmZlciAoQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LAotKyAgICBBVkZyYW1lICogcGljdHVyZSk7Ci0rCi0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19kcmFpbiAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKTsKLSsKLSsjZGVmaW5lIEdTVF9GRkRFQ19QQVJBTVNfUURBVEEgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImZmZGVjLXBhcmFtcyIpCi0rCi0rc3RhdGljIEdzdEVsZW1lbnRDbGFzcyAqcGFyZW50X2NsYXNzID0gTlVMTDsKLSsKLSsjZGVmaW5lIEdTVF9GRk1QRUdERUNfVFlQRV9MT1dSRVMgKGdzdF9mZm1wZWdkZWNfbG93cmVzX2dldF90eXBlKCkpCi0rc3RhdGljIEdUeXBlCi0rZ3N0X2ZmbXBlZ2RlY19sb3dyZXNfZ2V0X3R5cGUgKHZvaWQpCi0rewotKyAgc3RhdGljIEdUeXBlIGZmbXBlZ2RlY19sb3dyZXNfdHlwZSA9IDA7Ci0rCi0rICBpZiAoIWZmbXBlZ2RlY19sb3dyZXNfdHlwZSkgewotKyAgICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSBmZm1wZWdkZWNfbG93cmVzW10gPSB7Ci0rICAgICAgezAsICIwIiwgImZ1bGwifSwKLSsgICAgICB7MSwgIjEiLCAiMS8yLXNpemUifSwKLSsgICAgICB7MiwgIjIiLCAiMS80LXNpemUifSwKLSsgICAgICB7MCwgTlVMTCwgTlVMTH0sCi0rICAgIH07Ci0rCi0rICAgIGZmbXBlZ2RlY19sb3dyZXNfdHlwZSA9Ci0rICAgICAgICBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0RkZNcGVnRGVjTG93cmVzIiwgZmZtcGVnZGVjX2xvd3Jlcyk7Ci0rICB9Ci0rCi0rICByZXR1cm4gZmZtcGVnZGVjX2xvd3Jlc190eXBlOwotK30KLSsKLSsjZGVmaW5lIEdTVF9GRk1QRUdERUNfVFlQRV9TS0lQRlJBTUUgKGdzdF9mZm1wZWdkZWNfc2tpcGZyYW1lX2dldF90eXBlKCkpCi0rc3RhdGljIEdUeXBlCi0rZ3N0X2ZmbXBlZ2RlY19za2lwZnJhbWVfZ2V0X3R5cGUgKHZvaWQpCi0rewotKyAgc3RhdGljIEdUeXBlIGZmbXBlZ2RlY19za2lwZnJhbWVfdHlwZSA9IDA7Ci0rCi0rICBpZiAoIWZmbXBlZ2RlY19za2lwZnJhbWVfdHlwZSkgewotKyAgICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSBmZm1wZWdkZWNfc2tpcGZyYW1lW10gPSB7Ci0rICAgICAgezAsICIwIiwgIlNraXAgbm90aGluZyJ9LAotKyAgICAgIHsxLCAiMSIsICJTa2lwIEItZnJhbWVzIn0sCi0rICAgICAgezIsICIyIiwgIlNraXAgSURDVC9EZXF1YW50aXphdGlvbiJ9LAotKyAgICAgIHs1LCAiNSIsICJTa2lwIGV2ZXJ5dGhpbmcifSwKLSsgICAgICB7MCwgTlVMTCwgTlVMTH0sCi0rICAgIH07Ci0rCi0rICAgIGZmbXBlZ2RlY19za2lwZnJhbWVfdHlwZSA9Ci0rICAgICAgICBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0RkZNcGVnRGVjU2tpcEZyYW1lIiwgZmZtcGVnZGVjX3NraXBmcmFtZSk7Ci0rICB9Ci0rCi0rICByZXR1cm4gZmZtcGVnZGVjX3NraXBmcmFtZV90eXBlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfYmFzZV9pbml0IChHc3RGRk1wZWdEZWNDbGFzcyAqIGtsYXNzKQotK3sKLSsgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0rICBHc3RQYWRUZW1wbGF0ZSAqc2lua3RlbXBsLCAqc3JjdGVtcGw7Ci0rICBHc3RDYXBzICpzaW5rY2FwcywgKnNyY2NhcHM7Ci0rICBBVkNvZGVjICppbl9wbHVnaW47Ci0rICBnY2hhciAqbG9uZ25hbWUsICpjbGFzc2lmaWNhdGlvbiwgKmRlc2NyaXB0aW9uOwotKwotKyAgaW5fcGx1Z2luID0KLSsgICAgICAoQVZDb2RlYyAqKSBnX3R5cGVfZ2V0X3FkYXRhIChHX09CSkVDVF9DTEFTU19UWVBFIChrbGFzcyksCi0rICAgICAgR1NUX0ZGREVDX1BBUkFNU19RREFUQSk7Ci0rICBnX2Fzc2VydCAoaW5fcGx1Z2luICE9IE5VTEwpOwotKwotKyAgLyogY29uc3RydWN0IHRoZSBlbGVtZW50IGRldGFpbHMgc3RydWN0ICovCi0rICBsb25nbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIkZGbXBlZyAlcyBkZWNvZGVyIiwgaW5fcGx1Z2luLT5sb25nX25hbWUpOwotKyAgY2xhc3NpZmljYXRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJDb2RlYy9EZWNvZGVyLyVzIiwKLSsgICAgICAoaW5fcGx1Z2luLT50eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgPyAiVmlkZW8iIDogIkF1ZGlvIik7Ci0rICBkZXNjcmlwdGlvbiA9IGdfc3RyZHVwX3ByaW50ZiAoIkZGbXBlZyAlcyBkZWNvZGVyIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZSAoZWxlbWVudF9jbGFzcywgbG9uZ25hbWUsIGNsYXNzaWZpY2F0aW9uLAotKyAgICAgIGRlc2NyaXB0aW9uLAotKyAgICAgICJXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPiwgIgotKyAgICAgICJSb25hbGQgQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+LCAiCi0rICAgICAgIkVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+Iik7Ci0rICBnX2ZyZWUgKGxvbmduYW1lKTsKLSsgIGdfZnJlZSAoY2xhc3NpZmljYXRpb24pOwotKyAgZ19mcmVlIChkZXNjcmlwdGlvbik7Ci0rCi0rICAvKiBnZXQgdGhlIGNhcHMgKi8KLSsgIHNpbmtjYXBzID0gZ3N0X2ZmbXBlZ19jb2RlY2lkX3RvX2NhcHMgKGluX3BsdWdpbi0+aWQsIE5VTEwsIEZBTFNFKTsKLSsgIGlmICghc2lua2NhcHMpIHsKLSsgICAgR1NUX0RFQlVHICgiQ291bGRuJ3QgZ2V0IHNpbmsgY2FwcyBmb3IgZGVjb2RlciAnJXMnIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgc2lua2NhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInVua25vd24vdW5rbm93biIpOwotKyAgfQotKyAgaWYgKGluX3BsdWdpbi0+dHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKLSsgICAgc3JjY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXctcmdiOyB2aWRlby94LXJhdy15dXYiKTsKLSsgIH0gZWxzZSB7Ci0rICAgIHNyY2NhcHMgPSBnc3RfZmZtcGVnX2NvZGVjdHlwZV90b19hdWRpb19jYXBzIChOVUxMLAotKyAgICAgICAgaW5fcGx1Z2luLT5pZCwgRkFMU0UsIGluX3BsdWdpbik7Ci0rICB9Ci0rICBpZiAoIXNyY2NhcHMpIHsKLSsgICAgR1NUX0RFQlVHICgiQ291bGRuJ3QgZ2V0IHNvdXJjZSBjYXBzIGZvciBkZWNvZGVyICclcyciLCBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICBzcmNjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ1bmtub3duL3Vua25vd24iKTsKLSsgIH0KLSsKLSsgIC8qIHBhZCB0ZW1wbGF0ZXMgKi8KLSsgIHNpbmt0ZW1wbCA9IGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic2luayIsIEdTVF9QQURfU0lOSywKLSsgICAgICBHU1RfUEFEX0FMV0FZUywgc2lua2NhcHMpOwotKyAgc3JjdGVtcGwgPSBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywgc3JjY2Fwcyk7Ci0rCi0rICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCBzcmN0ZW1wbCk7Ci0rICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCBzaW5rdGVtcGwpOwotKwotKyAga2xhc3MtPmluX3BsdWdpbiA9IGluX3BsdWdpbjsKLSsgIGtsYXNzLT5zcmN0ZW1wbCA9IHNyY3RlbXBsOwotKyAga2xhc3MtPnNpbmt0ZW1wbCA9IHNpbmt0ZW1wbDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2NsYXNzX2luaXQgKEdzdEZGTXBlZ0RlY0NsYXNzICoga2xhc3MpCi0rewotKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSsgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0rCi0rICBwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQgKGtsYXNzKTsKLSsKLSsgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2ZmbXBlZ2RlY19maW5hbGl6ZTsKLSsKLSsgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9mZm1wZWdkZWNfc2V0X3Byb3BlcnR5OwotKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2ZmbXBlZ2RlY19nZXRfcHJvcGVydHk7Ci0rCi0rICBpZiAoa2xhc3MtPmluX3BsdWdpbi0+dHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKLSsgICAgaW50IGNhcHM7Ci0rCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0tJUEZSQU1FLAotKyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJza2lwLWZyYW1lIiwgIlNraXAgZnJhbWVzIiwKLSsgICAgICAgICAgICAiV2hpY2ggdHlwZXMgb2YgZnJhbWVzIHRvIHNraXAgZHVyaW5nIGRlY29kaW5nIiwKLSsgICAgICAgICAgICBHU1RfRkZNUEVHREVDX1RZUEVfU0tJUEZSQU1FLCAwLAotKyAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0xPV1JFUywKLSsgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgibG93cmVzIiwgIkxvdyByZXNvbHV0aW9uIiwKLSsgICAgICAgICAgICAiQXQgd2hpY2ggcmVzb2x1dGlvbiB0byBkZWNvZGUgaW1hZ2VzIiwgR1NUX0ZGTVBFR0RFQ19UWVBFX0xPV1JFUywKLSsgICAgICAgICAgICAwLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ESVJFQ1RfUkVOREVSSU5HLAotKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJkaXJlY3QtcmVuZGVyaW5nIiwgIkRpcmVjdCBSZW5kZXJpbmciLAotKyAgICAgICAgICAgICJFbmFibGUgZGlyZWN0IHJlbmRlcmluZyIsIERFRkFVTFRfRElSRUNUX1JFTkRFUklORywKLSsgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ET19QQURESU5HLAotKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJkby1wYWRkaW5nIiwgIkRvIFBhZGRpbmciLAotKyAgICAgICAgICAgICJBZGQgMCBwYWRkaW5nIGJlZm9yZSBkZWNvZGluZyBkYXRhIiwgREVGQVVMVF9ET19QQURESU5HLAotKyAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RFQlVHX01WLAotKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJkZWJ1Zy1tdiIsICJEZWJ1ZyBtb3Rpb24gdmVjdG9ycyIsCi0rICAgICAgICAgICAgIldoZXRoZXIgZmZtcGVnIHNob3VsZCBwcmludCBtb3Rpb24gdmVjdG9ycyBvbiB0b3Agb2YgdGhlIGltYWdlIiwKLSsgICAgICAgICAgICBERUZBVUxUX0RFQlVHX01WLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsjaWYgMAotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NST1AsCi0rICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNyb3AiLCAiQ3JvcCIsCi0rICAgICAgICAgICAgIkNyb3AgaW1hZ2VzIHRvIHRoZSBkaXNwbGF5IHJlZ2lvbiIsCi0rICAgICAgICAgICAgREVGQVVMVF9DUk9QLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsjZW5kaWYKLSsKLSsgICAgY2FwcyA9IGtsYXNzLT5pbl9wbHVnaW4tPmNhcGFiaWxpdGllczsKLSsgICAgaWYgKGNhcHMgJiAoQ09ERUNfQ0FQX0ZSQU1FX1RIUkVBRFMgfCBDT0RFQ19DQVBfU0xJQ0VfVEhSRUFEUykpIHsKLSsgICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUyAoa2xhc3MpLCBQUk9QX01BWF9USFJFQURTLAotKyAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibWF4LXRocmVhZHMiLCAiTWF4aW11bSBkZWNvZGUgdGhyZWFkcyIsCi0rICAgICAgICAgICAgICAiTWF4aW11bSBudW1iZXIgb2Ygd29ya2VyIHRocmVhZHMgdG8gc3Bhd24uICgwID0gYXV0bykiLAotKyAgICAgICAgICAgICAgMCwgR19NQVhJTlQsIERFRkFVTFRfTUFYX1RIUkVBRFMsCi0rICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgICAgfQotKyAgfQotKwotKyAgZ3N0ZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X2ZmbXBlZ2RlY19jaGFuZ2Vfc3RhdGU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19pbml0IChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgR3N0RkZNcGVnRGVjQ2xhc3MgKm9jbGFzczsKLSsKLSsgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsKLSsgIC8qIHNldHVwIHBhZHMgKi8KLSsgIGZmbXBlZ2RlYy0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG9jbGFzcy0+c2lua3RlbXBsLCAic2luayIpOwotKyAgZ3N0X3BhZF9zZXRfc2V0Y2Fwc19mdW5jdGlvbiAoZmZtcGVnZGVjLT5zaW5rcGFkLAotKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZmZtcGVnZGVjX3NldGNhcHMpKTsKLSsgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmZm1wZWdkZWMtPnNpbmtwYWQsCi0rICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdkZWNfc2lua19ldmVudCkpOwotKyAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGZmbXBlZ2RlYy0+c2lua3BhZCwKLSsgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ2RlY19jaGFpbikpOwotKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZmbXBlZ2RlYyksIGZmbXBlZ2RlYy0+c2lua3BhZCk7Ci0rCi0rICBmZm1wZWdkZWMtPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG9jbGFzcy0+c3JjdGVtcGwsICJzcmMiKTsKLSsgIGdzdF9wYWRfdXNlX2ZpeGVkX2NhcHMgKGZmbXBlZ2RlYy0+c3JjcGFkKTsKLSsgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmZm1wZWdkZWMtPnNyY3BhZCwKLSsgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ2RlY19zcmNfZXZlbnQpKTsKLSsgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChmZm1wZWdkZWMtPnNyY3BhZCwKLSsgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ2RlY19xdWVyeSkpOwotKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZmbXBlZ2RlYyksIGZmbXBlZ2RlYy0+c3JjcGFkKTsKLSsKLSsgIC8qIHNvbWUgZmZtcGVnIGRhdGEgKi8KLSsgIGZmbXBlZ2RlYy0+Y29udGV4dCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dCAoKTsKLSsgIGZmbXBlZ2RlYy0+cGljdHVyZSA9IGF2Y29kZWNfYWxsb2NfZnJhbWUgKCk7Ci0rICBmZm1wZWdkZWMtPnBjdHggPSBOVUxMOwotKyAgZmZtcGVnZGVjLT5wY2FjaGUgPSBOVUxMOwotKyAgZmZtcGVnZGVjLT5wYXIgPSBOVUxMOwotKyAgZmZtcGVnZGVjLT5vcGVuZWQgPSBGQUxTRTsKLSsgIGZmbXBlZ2RlYy0+c2tpcF9mcmFtZSA9IGZmbXBlZ2RlYy0+bG93cmVzID0gMDsKLSsgIGZmbXBlZ2RlYy0+ZGlyZWN0X3JlbmRlcmluZyA9IERFRkFVTFRfRElSRUNUX1JFTkRFUklORzsKLSsgIGZmbXBlZ2RlYy0+ZG9fcGFkZGluZyA9IERFRkFVTFRfRE9fUEFERElORzsKLSsgIGZmbXBlZ2RlYy0+ZGVidWdfbXYgPSBERUZBVUxUX0RFQlVHX01WOwotKyAgZmZtcGVnZGVjLT5jcm9wID0gREVGQVVMVF9DUk9QOwotKyAgZmZtcGVnZGVjLT5tYXhfdGhyZWFkcyA9IERFRkFVTFRfTUFYX1RIUkVBRFM7Ci0rCi0rICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfbiA9IC0xOwotKyAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gPSAtMTsKLSsgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbiA9IC0xOwotKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJmZmbXBlZ2RlYy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKLSsKLSsgIC8qIFdlIGluaXRpYWxseSBhc3N1bWUgZG93bnN0cmVhbSBjYW4gYWxsb2NhdGUgMTYgYnl0ZXMgYWxpZ25lZCBidWZmZXJzICovCi0rICBmZm1wZWdkZWMtPmNhbl9hbGxvY2F0ZV9hbGlnbmVkID0gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSBvYmplY3Q7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0ICE9IE5VTEwpIHsKLSsgICAgYXZfZnJlZSAoZmZtcGVnZGVjLT5jb250ZXh0KTsKLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0ID0gTlVMTDsKLSsgIH0KLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBpY3R1cmUgIT0gTlVMTCkgewotKyAgICBhdl9mcmVlIChmZm1wZWdkZWMtPnBpY3R1cmUpOwotKyAgICBmZm1wZWdkZWMtPnBpY3R1cmUgPSBOVUxMOwotKyAgfQotKwotKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnZGVjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdFF1ZXJ5ICogcXVlcnkpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBHc3RQYWQgKnBlZXI7Ci0rICBnYm9vbGVhbiByZXM7Ci0rCi0rICBmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKTsKLSsKLSsgIHJlcyA9IEZBTFNFOwotKwotKyAgaWYgKChwZWVyID0gZ3N0X3BhZF9nZXRfcGVlciAoZmZtcGVnZGVjLT5zaW5rcGFkKSkpIHsKLSsgICAgLyoganVzdCBmb3J3YXJkIHRvIHBlZXIgKi8KLSsgICAgcmVzID0gZ3N0X3BhZF9xdWVyeSAocGVlciwgcXVlcnkpOwotKyAgICBnc3Rfb2JqZWN0X3VucmVmIChwZWVyKTsKLSsgIH0KLSsjaWYgMAotKyAgewotKyAgICBHc3RGb3JtYXQgYmZtdDsKLSsKLSsgICAgYmZtdCA9IEdTVF9GT1JNQVRfQllURVM7Ci0rCi0rICAgIC8qIG9rLCBkbyBiaXRyYXRlIGNhbGMuLi4gKi8KLSsgICAgaWYgKCh0eXBlICE9IEdTVF9RVUVSWV9QT1NJVElPTiAmJiB0eXBlICE9IEdTVF9RVUVSWV9UT1RBTCkgfHwKLSsgICAgICAgICpmbXQgIT0gR1NUX0ZPUk1BVF9USU1FIHx8IGZmbXBlZ2RlYy0+Y29udGV4dC0+Yml0X3JhdGUgPT0gMCB8fAotKyAgICAgICAgIWdzdF9wYWRfcXVlcnkgKHBlZXIsIHR5cGUsICZiZm10LCB2YWx1ZSkpCi0rICAgICAgcmV0dXJuIEZBTFNFOwotKwotKyAgICBpZiAoZmZtcGVnZGVjLT5wY2FjaGUgJiYgdHlwZSA9PSBHU1RfUVVFUllfUE9TSVRJT04pCi0rICAgICAgKnZhbHVlIC09IEdTVF9CVUZGRVJfU0laRSAoZmZtcGVnZGVjLT5wY2FjaGUpOwotKyAgICAqdmFsdWUgKj0gR1NUX1NFQ09ORCAvIGZmbXBlZ2RlYy0+Y29udGV4dC0+Yml0X3JhdGU7Ci0rICB9Ci0rI2VuZGlmCi0rCi0rICBnc3Rfb2JqZWN0X3VucmVmIChmZm1wZWdkZWMpOwotKwotKyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3Jlc2V0X3RzIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgZmZtcGVnZGVjLT5sYXN0X2luID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgIGZmbXBlZ2RlYy0+bGFzdF9kaWZmID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgIGZmbXBlZ2RlYy0+bGFzdF9mcmFtZXMgPSAwOwotKyAgZmZtcGVnZGVjLT5sYXN0X291dCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICBmZm1wZWdkZWMtPm5leHRfb3V0ID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgIGZmbXBlZ2RlYy0+cmVvcmRlcmVkX2luID0gRkFMU0U7Ci0rICBmZm1wZWdkZWMtPnJlb3JkZXJlZF9vdXQgPSBGQUxTRTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3VwZGF0ZV9xb3MgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgZ2RvdWJsZSBwcm9wb3J0aW9uLAotKyAgICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wKQotK3sKLSsgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1cGRhdGUgUU9TOiAlZiwgJSIgR1NUX1RJTUVfRk9STUFULAotKyAgICAgIHByb3BvcnRpb24sIEdTVF9USU1FX0FSR1MgKHRpbWVzdGFtcCkpOwotKwotKyAgR1NUX09CSkVDVF9MT0NLIChmZm1wZWdkZWMpOwotKyAgZmZtcGVnZGVjLT5wcm9wb3J0aW9uID0gcHJvcG9ydGlvbjsKLSsgIGZmbXBlZ2RlYy0+ZWFybGllc3RfdGltZSA9IHRpbWVzdGFtcDsKLSsgIEdTVF9PQkpFQ1RfVU5MT0NLIChmZm1wZWdkZWMpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfcmVzZXRfcW9zIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgZ3N0X2ZmbXBlZ2RlY191cGRhdGVfcW9zIChmZm1wZWdkZWMsIDAuNSwgR1NUX0NMT0NLX1RJTUVfTk9ORSk7Ci0rICBmZm1wZWdkZWMtPnByb2Nlc3NlZCA9IDA7Ci0rICBmZm1wZWdkZWMtPmRyb3BwZWQgPSAwOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfcmVhZF9xb3MgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgZ2RvdWJsZSAqIHByb3BvcnRpb24sCi0rICAgIEdzdENsb2NrVGltZSAqIHRpbWVzdGFtcCkKLSt7Ci0rICBHU1RfT0JKRUNUX0xPQ0sgKGZmbXBlZ2RlYyk7Ci0rICAqcHJvcG9ydGlvbiA9IGZmbXBlZ2RlYy0+cHJvcG9ydGlvbjsKLSsgICp0aW1lc3RhbXAgPSBmZm1wZWdkZWMtPmVhcmxpZXN0X3RpbWU7Ci0rICBHU1RfT0JKRUNUX1VOTE9DSyAoZmZtcGVnZGVjKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCkKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYzsKLSsgIGdib29sZWFuIHJlczsKLSsKLSsgIGZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpOwotKwotKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0rICAgIGNhc2UgR1NUX0VWRU5UX1FPUzoKLSsgICAgewotKyAgICAgIGdkb3VibGUgcHJvcG9ydGlvbjsKLSsgICAgICBHc3RDbG9ja1RpbWVEaWZmIGRpZmY7Ci0rICAgICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKLSsKLSsgICAgICBnc3RfZXZlbnRfcGFyc2VfcW9zIChldmVudCwgJnByb3BvcnRpb24sICZkaWZmLCAmdGltZXN0YW1wKTsKLSsKLSsgICAgICAvKiB1cGRhdGUgb3VyIFFvUyB2YWx1ZXMgKi8KLSsgICAgICBnc3RfZmZtcGVnZGVjX3VwZGF0ZV9xb3MgKGZmbXBlZ2RlYywgcHJvcG9ydGlvbiwgdGltZXN0YW1wICsgZGlmZik7Ci0rCi0rICAgICAgLyogZm9yd2FyZCB1cHN0cmVhbSAqLwotKyAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoZmZtcGVnZGVjLT5zaW5rcGFkLCBldmVudCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgZGVmYXVsdDoKLSsgICAgICAvKiBmb3J3YXJkIHVwc3RyZWFtICovCi0rICAgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChmZm1wZWdkZWMtPnNpbmtwYWQsIGV2ZW50KTsKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGZmbXBlZ2RlYyk7Ci0rCi0rICByZXR1cm4gcmVzOwotK30KLSsKLSsvKiB3aXRoIExPQ0sgKi8KLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfY2xvc2UgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLSt7Ci0rICBpZiAoIWZmbXBlZ2RlYy0+b3BlbmVkKQotKyAgICByZXR1cm47Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiY2xvc2luZyBmZm1wZWcgY29kZWMiKTsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBhcikgewotKyAgICBnX2ZyZWUgKGZmbXBlZ2RlYy0+cGFyKTsKLSsgICAgZmZtcGVnZGVjLT5wYXIgPSBOVUxMOwotKyAgfQotKwotKyAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+cHJpdl9kYXRhKQotKyAgICBnc3RfZmZtcGVnX2F2Y29kZWNfY2xvc2UgKGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0rICBmZm1wZWdkZWMtPm9wZW5lZCA9IEZBTFNFOwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhKSB7Ci0rICAgIGF2X2ZyZWUgKGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhKTsKLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5leHRyYWRhdGEgPSBOVUxMOwotKyAgfQotKwotKyAgaWYgKGZmbXBlZ2RlYy0+cGN0eCkgewotKyAgICBpZiAoZmZtcGVnZGVjLT5wY2FjaGUpIHsKLSsgICAgICBnc3RfYnVmZmVyX3VucmVmIChmZm1wZWdkZWMtPnBjYWNoZSk7Ci0rICAgICAgZmZtcGVnZGVjLT5wY2FjaGUgPSBOVUxMOwotKyAgICB9Ci0rICAgIGF2X3BhcnNlcl9jbG9zZSAoZmZtcGVnZGVjLT5wY3R4KTsKLSsgICAgZmZtcGVnZGVjLT5wY3R4ID0gTlVMTDsKLSsgIH0KLSsKLSsgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBhcl9uID0gLTE7Ci0rICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiA9IC0xOwotKyAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ub2xkX2Zwc19uID0gLTE7Ci0rICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkID0gRkFMU0U7Ci0rfQotKwotKy8qIHdpdGggTE9DSyAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdkZWNfb3BlbiAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0rCi0rICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0rCi0rICBpZiAoZ3N0X2ZmbXBlZ19hdmNvZGVjX29wZW4gKGZmbXBlZ2RlYy0+Y29udGV4dCwgb2NsYXNzLT5pbl9wbHVnaW4pIDwgMCkKLSsgICAgZ290byBjb3VsZF9ub3Rfb3BlbjsKLSsKLSsgIGZmbXBlZ2RlYy0+b3BlbmVkID0gVFJVRTsKLSsgIGZmbXBlZ2RlYy0+aXNfcmVhbHZpZGVvID0gRkFMU0U7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiT3BlbmVkIGZmbXBlZyBjb2RlYyAlcywgaWQgJWQiLAotKyAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5uYW1lLCBvY2xhc3MtPmluX3BsdWdpbi0+aWQpOwotKwotKyAgLyogb3BlbiBhIHBhcnNlciBpZiB3ZSBjYW4gKi8KLSsgIHN3aXRjaCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkKSB7Ci0rICAgIGNhc2UgQ09ERUNfSURfTVBFRzQ6Ci0rICAgIGNhc2UgQ09ERUNfSURfTUpQRUc6Ci0rICAgIGNhc2UgQ09ERUNfSURfVkMxOgotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJub3QgdXNpbmcgcGFyc2VyLCBibGFja2xpc3RlZCBjb2RlYyIpOwotKyAgICAgIGZmbXBlZ2RlYy0+cGN0eCA9IE5VTEw7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfSDI2NDoKLSsgICAgICAvKiBGb3IgSDI2NCwgb25seSB1c2UgYSBwYXJzZXIgaWYgdGhlcmUgaXMgbm8gY29udGV4dCBkYXRhLCBpZiB0aGVyZSBpcywgCi0rICAgICAgICogd2UncmUgdGFsa2luZyBBVkMgKi8KLSsgICAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA9PSAwKSB7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiSDI2NCB3aXRoIG5vIGV4dHJhZGF0YSwgY3JlYXRpbmcgcGFyc2VyIik7Ci0rICAgICAgICBmZm1wZWdkZWMtPnBjdHggPSBhdl9wYXJzZXJfaW5pdCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgICAiSDI2NCB3aXRoIGV4dHJhZGF0YSBpbXBsaWVzIGZyYW1lZCBkYXRhIC0gbm90IHVzaW5nIHBhcnNlciIpOwotKyAgICAgICAgZmZtcGVnZGVjLT5wY3R4ID0gTlVMTDsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfUlYxMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjMwOgotKyAgICBjYXNlIENPREVDX0lEX1JWMjA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlY0MDoKLSsgICAgICBmZm1wZWdkZWMtPmlzX3JlYWx2aWRlbyA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgaWYgKCFmZm1wZWdkZWMtPnR1cm5vZmZfcGFyc2VyKSB7Ci0rICAgICAgICBmZm1wZWdkZWMtPnBjdHggPSBhdl9wYXJzZXJfaW5pdCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkKTsKLSsgICAgICAgIGlmIChmZm1wZWdkZWMtPnBjdHgpCi0rICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBwYXJzZXIgJXAiLCBmZm1wZWdkZWMtPnBjdHgpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiTm8gcGFyc2VyIGZvciBjb2RlYyIpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiUGFyc2VyIGRlYWN0aXZhdGVkIGZvciBmb3JtYXQiKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBzd2l0Y2ggKG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlKSB7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLndpZHRoID0gMDsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5oZWlnaHQgPSAwOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfd2lkdGggPSAtMTsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodCA9IC0xOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBpeF9mbXQgPSBQSVhfRk1UX05COwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmludGVybGFjZWQgPSBGQUxTRTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSA9IDA7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMgPSAwOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoID0gMDsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGdzdF9mZm1wZWdkZWNfcmVzZXRfdHMgKGZmbXBlZ2RlYyk7Ci0rICAvKiBGSVhNRSwgcmVzZXRfcW9zIGhvbGRzIHRoZSBMT0NLICovCi0rICBmZm1wZWdkZWMtPnByb3BvcnRpb24gPSAwLjA7Ci0rICBmZm1wZWdkZWMtPmVhcmxpZXN0X3RpbWUgPSAtMTsKLSsKLSsgIHJldHVybiBUUlVFOwotKwotKyAgLyogRVJST1JTICovCi0rY291bGRfbm90X29wZW46Ci0rICB7Ci0rICAgIGdzdF9mZm1wZWdkZWNfY2xvc2UgKGZmbXBlZ2RlYyk7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImZmZGVjXyVzOiBGYWlsZWQgdG8gb3BlbiBGRk1QRUcgY29kZWMiLAotKyAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdkZWNfc2V0Y2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYzsKLSsgIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0rICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSsgIGNvbnN0IEdWYWx1ZSAqcGFyOwotKyAgY29uc3QgR1ZhbHVlICpmcHM7Ci0rICBnYm9vbGVhbiByZXQgPSBUUlVFOwotKwotKyAgZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKLSsgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgInNldGNhcHMgY2FsbGVkIik7Ci0rCi0rICBHU1RfT0JKRUNUX0xPQ0sgKGZmbXBlZ2RlYyk7Ci0rCi0rICAvKiBzdHVwaWQgY2hlY2sgZm9yIFZDMSAqLwotKyAgaWYgKChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfV01WMykgfHwKLSsgICAgICAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1ZDMSkpCi0rICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9IGdzdF9mZm1wZWdfY2Fwc190b19jb2RlY2lkIChjYXBzLCBOVUxMKTsKLSsKLSsgIC8qIGNsb3NlIG9sZCBzZXNzaW9uICovCi0rICBpZiAoZmZtcGVnZGVjLT5vcGVuZWQpIHsKLSsgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZmbXBlZ2RlYyk7Ci0rICAgIGdzdF9mZm1wZWdkZWNfZHJhaW4gKGZmbXBlZ2RlYyk7Ci0rICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmZtcGVnZGVjKTsKLSsgICAgZ3N0X2ZmbXBlZ2RlY19jbG9zZSAoZmZtcGVnZGVjKTsKLSsKLSsgICAgLyogYW5kIHJlc2V0IHRoZSBkZWZhdWx0cyB0aGF0IHdlcmUgc2V0IHdoZW4gYSBjb250ZXh0IGlzIGNyZWF0ZWQgKi8KLSsgICAgYXZjb2RlY19nZXRfY29udGV4dF9kZWZhdWx0cyAoZmZtcGVnZGVjLT5jb250ZXh0KTsKLSsgIH0KLSsKLSsgIC8qIHNldCBidWZmZXIgZnVuY3Rpb25zICovCi0rICBmZm1wZWdkZWMtPmNvbnRleHQtPmdldF9idWZmZXIgPSBnc3RfZmZtcGVnZGVjX2dldF9idWZmZXI7Ci0rICBmZm1wZWdkZWMtPmNvbnRleHQtPnJlbGVhc2VfYnVmZmVyID0gZ3N0X2ZmbXBlZ2RlY19yZWxlYXNlX2J1ZmZlcjsKLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZHJhd19ob3Jpel9iYW5kID0gTlVMTDsKLSsKLSsgIC8qIGRlZmF1bHQgaXMgdG8gbGV0IGZvcm1hdCBkZWNpZGUgaWYgaXQgbmVlZHMgYSBwYXJzZXIgKi8KLSsgIGZmbXBlZ2RlYy0+dHVybm9mZl9wYXJzZXIgPSBGQUxTRTsKLSsKLSsgIGZmbXBlZ2RlYy0+aGFzX2JfZnJhbWVzID0gRkFMU0U7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAic2l6ZSAlZHglZCIsIGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGgsCi0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQpOwotKwotKyAgLyogZ2V0IHNpemUgYW5kIHNvICovCi0rICBnc3RfZmZtcGVnX2NhcHNfd2l0aF9jb2RlY2lkIChvY2xhc3MtPmluX3BsdWdpbi0+aWQsCi0rICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPnR5cGUsIGNhcHMsIGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAic2l6ZSBhZnRlciAlZHglZCIsIGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGgsCi0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQpOwotKwotKyAgaWYgKCFmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5kZW4gfHwgIWZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLm51bSkgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJmb3JjaW5nIDI1LzEgZnJhbWVyYXRlIik7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLm51bSA9IDE7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLmRlbiA9IDI1OwotKyAgfQotKwotKyAgLyogZ2V0IHBpeGVsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHNldCAqLwotKyAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0rCi0rICBwYXIgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIik7Ci0rICBpZiAocGFyKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInNpbmsgY2FwcyBoYXZlIHBpeGVsLWFzcGVjdC1yYXRpbyBvZiAlZDolZCIsCi0rICAgICAgICBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX251bWVyYXRvciAocGFyKSwKLSsgICAgICAgIGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IgKHBhcikpOwotKyAgICAvKiBzaG91bGQgYmUgTlVMTCAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5wYXIpCi0rICAgICAgZ19mcmVlIChmZm1wZWdkZWMtPnBhcik7Ci0rICAgIGZmbXBlZ2RlYy0+cGFyID0gZ19uZXcwIChHVmFsdWUsIDEpOwotKyAgICBnc3RfdmFsdWVfaW5pdF9hbmRfY29weSAoZmZtcGVnZGVjLT5wYXIsIHBhcik7Ci0rICB9Ci0rCi0rICAvKiBnZXQgdGhlIGZyYW1lcmF0ZSBmcm9tIGluY29taW5nIGNhcHMuIGZwc19uIGlzIHNldCB0byAtMSB3aGVuCi0rICAgKiB0aGVyZSBpcyBubyB2YWxpZCBmcmFtZXJhdGUgKi8KLSsgIGZwcyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJmcmFtZXJhdGUiKTsKLSsgIGlmIChmcHMgIT0gTlVMTCAmJiBHU1RfVkFMVUVfSE9MRFNfRlJBQ1RJT04gKGZwcykpIHsKLSsgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX251bWVyYXRvciAoZnBzKTsKLSsgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2QgPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX2Rlbm9taW5hdG9yIChmcHMpOwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBmcmFtZXJhdGUgJWQvJWQgZnJvbSBpbmNvbWluZyBjYXBzIiwKLSsgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uLCBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfZCk7Ci0rICB9IGVsc2UgewotKyAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiA9IC0xOwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBmcmFtZXJhdGUgZnJvbSBjb2RlYyIpOwotKyAgfQotKwotKyAgLyogZmlndXJlIG91dCBpZiB3ZSBjYW4gdXNlIGRpcmVjdCByZW5kZXJpbmcgKi8KLSsgIGZmbXBlZ2RlYy0+Y3VycmVudF9kciA9IEZBTFNFOwotKyAgZmZtcGVnZGVjLT5leHRyYV9yZWYgPSBGQUxTRTsKLSsgIGlmIChmZm1wZWdkZWMtPmRpcmVjdF9yZW5kZXJpbmcpIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAidHJ5aW5nIHRvIGVuYWJsZSBkaXJlY3QgcmVuZGVyaW5nIik7Ci0rICAgIGlmIChvY2xhc3MtPmluX3BsdWdpbi0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RSMSkgewotKyAgICAgIGlmIChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfSDI2NCkgewotKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZGlzYWJsZSBkaXJlY3QgcmVuZGVyaW5nIHNldHVwIGZvciBIMjY0Iik7Ci0rICAgICAgICAvKiBkb2VzIG5vdCB3b3JrLCBtYW55IHN0dWZmIHJlYWRzIG91dHNpZGUgb2YgdGhlIHBsYW5lcyAqLwotKyAgICAgICAgZmZtcGVnZGVjLT5jdXJyZW50X2RyID0gRkFMU0U7Ci0rICAgICAgICBmZm1wZWdkZWMtPmV4dHJhX3JlZiA9IFRSVUU7Ci0rICAgICAgfSBlbHNlIGlmICgob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1NWUTEpIHx8Ci0rICAgICAgICAgIChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfVlA1KSB8fAotKyAgICAgICAgICAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1ZQNikgfHwKLSsgICAgICAgICAgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9WUDZGKSB8fAotKyAgICAgICAgICAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1ZQNkEpKSB7Ci0rICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICAgImRpc2FibGUgZGlyZWN0IHJlbmRlcmluZyBzZXR1cCBmb3IgYnJva2VuIHN0cmlkZSBzdXBwb3J0Iik7Ci0rICAgICAgICAvKiBkb2VzIG5vdCB3b3JrLCB1c2VzIGEgaW5jb21wYXRpYmxlIHN0cmlkZS4gU2VlICM2MTA2MTMgKi8KLSsgICAgICAgIGZmbXBlZ2RlYy0+Y3VycmVudF9kciA9IEZBTFNFOwotKyAgICAgICAgZmZtcGVnZGVjLT5leHRyYV9yZWYgPSBUUlVFOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJlbmFibGVkIGRpcmVjdCByZW5kZXJpbmciKTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+Y3VycmVudF9kciA9IFRSVUU7Ci0rICAgICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRpcmVjdCByZW5kZXJpbmcgbm90IHN1cHBvcnRlZCIpOwotKyAgICB9Ci0rICB9Ci0rICBpZiAoZmZtcGVnZGVjLT5jdXJyZW50X2RyKSB7Ci0rICAgIC8qIGRvICpub3QqIGRyYXcgZWRnZXMgd2hlbiBpbiBkaXJlY3QgcmVuZGVyaW5nLCBmb3Igc29tZSByZWFzb24gaXQgZHJhd3MKLSsgICAgICogb3V0c2lkZSBvZiB0aGUgbWVtb3J5LiAqLwotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPmZsYWdzIHw9IENPREVDX0ZMQUdfRU1VX0VER0U7Ci0rICB9Ci0rCi0rICAvKiBmb3IgQUFDIHdlIG9ubHkgdXNlIGF2X3BhcnNlIGlmIG5vdCBvbiBzdHJlYW0tZm9ybWF0PT1yYXcgb3IgPT1sb2FzICovCi0rICBpZiAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0FBQwotKyAgICAgIHx8IG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9BQUNfTEFUTSkgewotKyAgICBjb25zdCBnY2hhciAqZm9ybWF0ID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHJ1Y3R1cmUsICJzdHJlYW0tZm9ybWF0Iik7Ci0rCi0rICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCBzdHJjbXAgKGZvcm1hdCwgInJhdyIpID09IDApIHsKLSsgICAgICBmZm1wZWdkZWMtPnR1cm5vZmZfcGFyc2VyID0gVFJVRTsKLSsgICAgfQotKyAgfQotKwotKyAgLyogZm9yIEZMQUMsIGRvbid0IHBhcnNlIGlmIGl0J3MgYWxyZWFkeSBwYXJzZWQgKi8KLSsgIGlmIChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfRkxBQykgewotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKHN0cnVjdHVyZSwgInN0cmVhbWhlYWRlciIpKQotKyAgICAgIGZmbXBlZ2RlYy0+dHVybm9mZl9wYXJzZXIgPSBUUlVFOwotKyAgfQotKwotKyAgLyogd29ya2Fyb3VuZCBlbmNvZGVyIGJ1Z3MgKi8KLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+d29ya2Fyb3VuZF9idWdzIHw9IEZGX0JVR19BVVRPREVURUNUOwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5lcnJfcmVjb2duaXRpb24gPSAxOwotKwotKyAgLyogZm9yIHNsb3cgY3B1cyAqLwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5sb3dyZXMgPSBmZm1wZWdkZWMtPmxvd3JlczsKLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSA9IGZmbXBlZ2RlYy0+c2tpcF9mcmFtZTsKLSsKLSsgIC8qIGZmbXBlZyBjYW4gZHJhdyBtb3Rpb24gdmVjdG9ycyBvbiB0b3Agb2YgdGhlIGltYWdlIChub3QgZXZlcnkgZGVjb2RlcgotKyAgICogc3VwcG9ydHMgaXQpICovCi0rICBmZm1wZWdkZWMtPmNvbnRleHQtPmRlYnVnX212ID0gZmZtcGVnZGVjLT5kZWJ1Z19tdjsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPm1heF90aHJlYWRzID09IDApCi0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+dGhyZWFkX2NvdW50ID0gZ3N0X2ZmbXBlZ19hdXRvX21heF90aHJlYWRzICgpOwotKyAgZWxzZQotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRocmVhZF9jb3VudCA9IGZmbXBlZ2RlYy0+bWF4X3RocmVhZHM7Ci0rCi0rICAvKiBvcGVuIGNvZGVjIC0gd2UgZG9uJ3Qgc2VsZWN0IGFuIG91dHB1dCBwaXhfZm10IHlldCwKLSsgICAqIHNpbXBseSBiZWNhdXNlIHdlIGRvbid0IGtub3chIFdlIG9ubHkgZ2V0IGl0Ci0rICAgKiBkdXJpbmcgcGxheWJhY2suLi4gKi8KLSsgIGlmICghZ3N0X2ZmbXBlZ2RlY19vcGVuIChmZm1wZWdkZWMpKQotKyAgICBnb3RvIG9wZW5fZmFpbGVkOwotKwotKyAgLyogY2xpcHBpbmcgcmVnaW9uICovCi0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwKLSsgICAgICAmZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCk7Ci0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImhlaWdodCIsCi0rICAgICAgJmZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0KTsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgImNsaXBwaW5nIHRvICVkeCVkIiwKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoLCBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodCk7Ci0rCi0rICAvKiB0YWtlIGludG8gYWNjb3VudCB0aGUgbG93cmVzIHByb3BlcnR5ICovCi0rICBpZiAoZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCAhPSAtMSkKLSsgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCA+Pj0gZmZtcGVnZGVjLT5sb3dyZXM7Ci0rICBpZiAoZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQgIT0gLTEpCi0rICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0ID4+PSBmZm1wZWdkZWMtPmxvd3JlczsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgImZpbmFsIGNsaXBwaW5nIHRvICVkeCVkIiwKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoLCBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodCk7Ci0rCi0rZG9uZToKLSsgIEdTVF9PQkpFQ1RfVU5MT0NLIChmZm1wZWdkZWMpOwotKwotKyAgZ3N0X29iamVjdF91bnJlZiAoZmZtcGVnZGVjKTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStvcGVuX2ZhaWxlZDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiRmFpbGVkIHRvIG9wZW4iKTsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGFyKSB7Ci0rICAgICAgZ19mcmVlIChmZm1wZWdkZWMtPnBhcik7Ci0rICAgICAgZmZtcGVnZGVjLT5wYXIgPSBOVUxMOwotKyAgICB9Ci0rICAgIHJldCA9IEZBTFNFOwotKyAgICBnb3RvIGRvbmU7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBHc3RGbG93UmV0dXJuCi0rYWxsb2Nfb3V0cHV0X2J1ZmZlciAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLCBHc3RCdWZmZXIgKiogb3V0YnVmLAotKyAgICBnaW50IHdpZHRoLCBnaW50IGhlaWdodCkKLSt7Ci0rICBHc3RGbG93UmV0dXJuIHJldDsKLSsgIGdpbnQgZnNpemU7Ci0rCi0rICByZXQgPSBHU1RfRkxPV19FUlJPUjsKLSsgICpvdXRidWYgPSBOVUxMOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImFsbG9jIG91dHB1dCBidWZmZXIiKTsKLSsKLSsgIC8qIHNlZSBpZiB3ZSBuZWVkIHJlbmVnb3RpYXRpb24gKi8KLSsgIGlmIChHX1VOTElLRUxZICghZ3N0X2ZmbXBlZ2RlY19uZWdvdGlhdGUgKGZmbXBlZ2RlYywgRkFMU0UpKSkKLSsgICAgZ290byBuZWdvdGlhdGVfZmFpbGVkOwotKwotKyAgLyogZ2V0IHRoZSBzaXplIG9mIHRoZSBnc3RyZWFtZXIgb3V0cHV0IGJ1ZmZlciBnaXZlbiBhCi0rICAgKiB3aWR0aC9oZWlnaHQvZm9ybWF0ICovCi0rICBmc2l6ZSA9IGdzdF9mZm1wZWdfYXZwaWN0dXJlX2dldF9zaXplIChmZm1wZWdkZWMtPmNvbnRleHQtPnBpeF9mbXQsCi0rICAgICAgd2lkdGgsIGhlaWdodCk7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5jYW5fYWxsb2NhdGVfYWxpZ25lZCkgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiY2FsbGluZyBwYWRfYWxsb2MiKTsKLSsgICAgLyogbm8gcGFsbGV0ZSwgd2UgY2FuIHVzZSB0aGUgYnVmZmVyIHNpemUgdG8gYWxsb2MgKi8KLSsgICAgcmV0ID0gZ3N0X3BhZF9hbGxvY19idWZmZXJfYW5kX3NldF9jYXBzIChmZm1wZWdkZWMtPnNyY3BhZCwKLSsgICAgICAgIEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUsIGZzaXplLAotKyAgICAgICAgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCksIG91dGJ1Zik7Ci0rICAgIGlmIChHX1VOTElLRUxZIChyZXQgIT0gR1NUX0ZMT1dfT0spKQotKyAgICAgIGdvdG8gYWxsb2NfZmFpbGVkOwotKwotKyAgICAvKiBJZiBidWZmZXIgaXNuJ3QgMTI4LWJpdCBhbGlnbmVkLCBjcmVhdGUgYSBtZW1hbGlnbmVkIG9uZSBvdXJzZWx2ZXMgKi8KLSsgICAgaWYgKCgodWludHB0cl90KSBHU1RfQlVGRkVSX0RBVEEgKCpvdXRidWYpKSAlIDE2KSB7Ci0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiRG93bnN0cmVhbSBjYW4ndCBhbGxvY2F0ZSBhbGlnbmVkIGJ1ZmZlcnMuIik7Ci0rICAgICAgZmZtcGVnZGVjLT5jYW5fYWxsb2NhdGVfYWxpZ25lZCA9IEZBTFNFOwotKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKCpvdXRidWYpOwotKyAgICAgICpvdXRidWYgPSBuZXdfYWxpZ25lZF9idWZmZXIgKGZzaXplLCBHU1RfUEFEX0NBUFMgKGZmbXBlZ2RlYy0+c3JjcGFkKSk7Ci0rICAgIH0KLSsgIH0gZWxzZSB7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAibm90IGNhbGxpbmcgcGFkX2FsbG9jLCB3ZSBoYXZlIGEgcGFsbGV0ZSBvciBkb3duc3RyZWFtIGNhbid0IGdpdmUgMTYgYnl0ZSBhbGlnbmVkIGJ1ZmZlcnMuIik7Ci0rICAgIC8qIGZvciBwYWxldHRlZCBkYXRhIHdlIGNhbid0IHVzZSBwYWRfYWxsb2NfYnVmZmVyKCksIGJlY2F1c2UKLSsgICAgICogZnNpemUgY29udGFpbnMgdGhlIHNpemUgb2YgdGhlIHBhbGV0dGUsIHNvIHRoZSBvdmVyYWxsIHNpemUKLSsgICAgICogaXMgYmlnZ2VyIHRoYW4gZmZtcGVnY29sb3JzcGFjZSdzIHVuaXQgc2l6ZSwgd2hpY2ggd2lsbAotKyAgICAgKiBwcm9tcHQgR3N0QmFzZVRyYW5zZm9ybSB0byBjb21wbGFpbiBlbmRsZXNzbHkgLi4uICovCi0rICAgICpvdXRidWYgPSBuZXdfYWxpZ25lZF9idWZmZXIgKGZzaXplLCBHU1RfUEFEX0NBUFMgKGZmbXBlZ2RlYy0+c3JjcGFkKSk7Ci0rICAgIHJldCA9IEdTVF9GTE9XX09LOwotKyAgfQotKyAgLyogc2V0IGNhcHMsIHdlIGRvIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBidWZmZXIgaXMgc3RpbGwgd3JpdGFibGUgaGVyZSBhbmQgd2UKLSsgICAqIGFyZSBzdXJlIHRvIGJlIG5lZ290aWF0ZWQgKi8KLSsgIGdzdF9idWZmZXJfc2V0X2NhcHMgKCpvdXRidWYsIEdTVF9QQURfQ0FQUyAoZmZtcGVnZGVjLT5zcmNwYWQpKTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rCi0rICAvKiBzcGVjaWFsIGNhc2VzICovCi0rbmVnb3RpYXRlX2ZhaWxlZDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAibmVnb3RpYXRlIGZhaWxlZCIpOwotKyAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7Ci0rICB9Ci0rYWxsb2NfZmFpbGVkOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwYWRfYWxsb2MgZmFpbGVkICVkICglcykiLCByZXQsCi0rICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7Ci0rICAgIHJldHVybiByZXQ7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBpbnQKLStnc3RfZmZtcGVnZGVjX2dldF9idWZmZXIgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgQVZGcmFtZSAqIHBpY3R1cmUpCi0rewotKyAgR3N0QnVmZmVyICpidWYgPSBOVUxMOwotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0rICBnaW50IGNvZGVkX3dpZHRoLCBjb2RlZF9oZWlnaHQ7Ci0rICBnaW50IHJlczsKLSsKLSsgIGZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgY29udGV4dC0+b3BhcXVlOwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZ2V0dGluZyBidWZmZXIiKTsKLSsKLSsgIC8qIGFwcGx5IHRoZSBsYXN0IGluZm8gd2UgaGF2ZSBzZWVuIHRvIHRoaXMgcGljdHVyZSwgd2hlbiB3ZSBnZXQgdGhlCi0rICAgKiBwaWN0dXJlIGJhY2sgZnJvbSBmZm1wZWcgd2UgY2FuIHVzZSB0aGlzIHRvIGNvcnJlY3RseSB0aW1lc3RhbXAgdGhlIG91dHB1dAotKyAgICogYnVmZmVyICovCi0rICBwaWN0dXJlLT5yZW9yZGVyZWRfb3BhcXVlID0gY29udGV4dC0+cmVvcmRlcmVkX29wYXF1ZTsKLSsgIC8qIG1ha2Ugc3VyZSB3ZSBkb24ndCBmcmVlIHRoZSBidWZmZXIgd2hlbiBpdCdzIG5vdCBvdXJzICovCi0rICBwaWN0dXJlLT5vcGFxdWUgPSBOVUxMOwotKwotKyAgLyogdGFrZSB3aWR0aCBhbmQgaGVpZ2h0IGJlZm9yZSBjbGlwcGluZyAqLwotKyAgd2lkdGggPSBjb250ZXh0LT53aWR0aDsKLSsgIGhlaWdodCA9IGNvbnRleHQtPmhlaWdodDsKLSsgIGNvZGVkX3dpZHRoID0gY29udGV4dC0+Y29kZWRfd2lkdGg7Ci0rICBjb2RlZF9oZWlnaHQgPSBjb250ZXh0LT5jb2RlZF9oZWlnaHQ7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZGltZW5zaW9uICVkeCVkLCBjb2RlZCAlZHglZCIsIHdpZHRoLCBoZWlnaHQsCi0rICAgICAgY29kZWRfd2lkdGgsIGNvZGVkX2hlaWdodCk7Ci0rICBpZiAoIWZmbXBlZ2RlYy0+Y3VycmVudF9kcikgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZGlyZWN0IHJlbmRlcmluZyBkaXNhYmxlZCwgZmFsbGJhY2sgYWxsb2MiKTsKLSsgICAgcmVzID0gYXZjb2RlY19kZWZhdWx0X2dldF9idWZmZXIgKGNvbnRleHQsIHBpY3R1cmUpOwotKwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAibGluc2l6ZSAlZCAlZCAlZCIsIHBpY3R1cmUtPmxpbmVzaXplWzBdLAotKyAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0sIHBpY3R1cmUtPmxpbmVzaXplWzJdKTsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRhdGEgJXUgJXUgJXUiLCAwLAotKyAgICAgICAgKGd1aW50KSAocGljdHVyZS0+ZGF0YVsxXSAtIHBpY3R1cmUtPmRhdGFbMF0pLAotKyAgICAgICAgKGd1aW50KSAocGljdHVyZS0+ZGF0YVsyXSAtIHBpY3R1cmUtPmRhdGFbMF0pKTsKLSsgICAgcmV0dXJuIHJlczsKLSsgIH0KLSsKLSsgIHN3aXRjaCAoY29udGV4dC0+Y29kZWNfdHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICAvKiBzb21lIGZmbXBlZyB2aWRlbyBwbHVnaW5zIGRvbid0IHNlZSB0aGUgcG9pbnQgaW4gc2V0dGluZyBjb2RlY190eXBlIC4uLiAqLwotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9VTktOT1dOOgotKyAgICB7Ci0rICAgICAgR3N0Rmxvd1JldHVybiByZXQ7Ci0rICAgICAgZ2ludCBjbGlwX3dpZHRoLCBjbGlwX2hlaWdodDsKLSsKLSsgICAgICAvKiB0YWtlIGZpbmFsIGNsaXBwZWQgb3V0cHV0IHNpemUgKi8KLSsgICAgICBpZiAoKGNsaXBfd2lkdGggPSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoKSA9PSAtMSkKLSsgICAgICAgIGNsaXBfd2lkdGggPSB3aWR0aDsKLSsgICAgICBpZiAoKGNsaXBfaGVpZ2h0ID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQpID09IC0xKQotKyAgICAgICAgY2xpcF9oZWlnaHQgPSBoZWlnaHQ7Ci0rCi0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJhdyBvdXRzaXplICVkLyVkIiwgd2lkdGgsIGhlaWdodCk7Ci0rCi0rICAgICAgLyogdGhpcyBpcyB0aGUgc2l6ZSBmZm1wZWcgbmVlZHMgZm9yIHRoZSBidWZmZXIgKi8KLSsgICAgICBhdmNvZGVjX2FsaWduX2RpbWVuc2lvbnMgKGNvbnRleHQsICZ3aWR0aCwgJmhlaWdodCk7Ci0rCi0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImFsaWduZWQgb3V0c2l6ZSAlZC8lZCwgY2xpcCAlZC8lZCIsCi0rICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGNsaXBfd2lkdGgsIGNsaXBfaGVpZ2h0KTsKLSsKLSsgICAgICBpZiAod2lkdGggIT0gY2xpcF93aWR0aCB8fCBoZWlnaHQgIT0gY2xpcF9oZWlnaHQpIHsKLSsgICAgICAgIC8qIFdlIGNhbid0IGFsbG9jIGlmIHdlIG5lZWQgdG8gY2xpcCB0aGUgb3V0cHV0IGJ1ZmZlciBsYXRlciAqLwotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIndlIG5lZWQgY2xpcHBpbmcsIGZhbGxiYWNrIGFsbG9jIik7Ci0rICAgICAgICByZXR1cm4gYXZjb2RlY19kZWZhdWx0X2dldF9idWZmZXIgKGNvbnRleHQsIHBpY3R1cmUpOwotKyAgICAgIH0KLSsKLSsgICAgICAvKiBhbGxvYyB3aXRoIGFsaWduZWQgZGltZW5zaW9ucyBmb3IgZmZtcGVnICovCi0rICAgICAgcmV0ID0gYWxsb2Nfb3V0cHV0X2J1ZmZlciAoZmZtcGVnZGVjLCAmYnVmLCB3aWR0aCwgaGVpZ2h0KTsKLSsgICAgICBpZiAoR19VTkxJS0VMWSAocmV0ICE9IEdTVF9GTE9XX09LKSkgewotKyAgICAgICAgLyogYWxsb2MgZGVmYXVsdCBidWZmZXIgd2hlbiB3ZSBjYW4ndCBnZXQgb25lIGZyb20gZG93bnN0cmVhbSAqLwotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImFsbG9jIGZhaWxlZCwgZmFsbGJhY2sgYWxsb2MiKTsKLSsgICAgICAgIHJldHVybiBhdmNvZGVjX2RlZmF1bHRfZ2V0X2J1ZmZlciAoY29udGV4dCwgcGljdHVyZSk7Ci0rICAgICAgfQotKwotKyAgICAgIC8qIGNvcHkgdGhlIHJpZ2h0IHBvaW50ZXJzIGFuZCBzdHJpZGVzIGluIHRoZSBwaWN0dXJlIG9iamVjdCAqLwotKyAgICAgIGdzdF9mZm1wZWdfYXZwaWN0dXJlX2ZpbGwgKChBVlBpY3R1cmUgKikgcGljdHVyZSwKLSsgICAgICAgICAgR1NUX0JVRkZFUl9EQVRBIChidWYpLCBjb250ZXh0LT5waXhfZm10LCB3aWR0aCwgaGVpZ2h0KTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHU1RfRVJST1JfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICJfZ2V0X2J1ZmZlcigpIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkIGZvciBub24tdmlkZW8gYnVmZmVycyAhIik7Ci0rICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiB0ZWxsIGZmbXBlZyB3ZSBvd24gdGhpcyBidWZmZXIsIHRyYW5mZXIgdGhlIHJlZiB3ZSBoYXZlIG9uIHRoZSBidWZmZXIgdG8KLSsgICAqIHRoZSBvcGFxdWUgZGF0YS4gKi8KLSsgIHBpY3R1cmUtPnR5cGUgPSBGRl9CVUZGRVJfVFlQRV9VU0VSOwotKyAgcGljdHVyZS0+b3BhcXVlID0gYnVmOwotKwotKyNpZmRlZiBFWFRSQV9SRUYKLSsgIGlmIChwaWN0dXJlLT5yZWZlcmVuY2UgIT0gMCB8fCBmZm1wZWdkZWMtPmV4dHJhX3JlZikgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJhZGRpbmcgZXh0cmEgcmVmIik7Ci0rICAgIGdzdF9idWZmZXJfcmVmIChidWYpOwotKyAgfQotKyNlbmRpZgotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJldHVybmVkIGJ1ZmZlciAlcCIsIGJ1Zik7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3JlbGVhc2VfYnVmZmVyIChBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsIEFWRnJhbWUgKiBwaWN0dXJlKQotK3sKLSsgIGdpbnQgaTsKLSsgIEdzdEJ1ZmZlciAqYnVmOwotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rCi0rICBmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIGNvbnRleHQtPm9wYXF1ZTsKLSsKLSsgIC8qIGNoZWNrIGlmIGl0IHdhcyBvdXIgYnVmZmVyICovCi0rICBpZiAocGljdHVyZS0+b3BhcXVlID09IE5VTEwpIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZGVmYXVsdCByZWxlYXNlIGJ1ZmZlciIpOwotKyAgICBhdmNvZGVjX2RlZmF1bHRfcmVsZWFzZV9idWZmZXIgKGNvbnRleHQsIHBpY3R1cmUpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rCi0rICAvKiB3ZSByZW1vdmUgdGhlIG9wYXF1ZSBkYXRhIG5vdyAqLwotKyAgYnVmID0gR1NUX0JVRkZFUl9DQVNUIChwaWN0dXJlLT5vcGFxdWUpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicmVsZWFzZSBidWZmZXIgJXAiLCBidWYpOwotKyAgcGljdHVyZS0+b3BhcXVlID0gTlVMTDsKLSsKLSsjaWZkZWYgRVhUUkFfUkVGCi0rICBpZiAocGljdHVyZS0+cmVmZXJlbmNlICE9IDAgfHwgZmZtcGVnZGVjLT5leHRyYV9yZWYpIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicmVtb3ZlIGV4dHJhIHJlZiIpOwotKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotKyAgfQotKyNlbHNlCi0rICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotKyNlbmRpZgotKwotKyAgLyogemVybyBvdXQgdGhlIHJlZmVyZW5jZSBpbiBmZm1wZWcgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKLSsgICAgcGljdHVyZS0+ZGF0YVtpXSA9IE5VTEw7Ci0rICAgIHBpY3R1cmUtPmxpbmVzaXplW2ldID0gMDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2FkZF9waXhlbF9hc3BlY3RfcmF0aW8gKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywKLSsgICAgR3N0U3RydWN0dXJlICogcykKLSt7Ci0rICBnYm9vbGVhbiBkZW11eGVyX3Bhcl9zZXQgPSBGQUxTRTsKLSsgIGdib29sZWFuIGRlY29kZXJfcGFyX3NldCA9IEZBTFNFOwotKyAgZ2ludCBkZW11eGVyX251bSA9IDEsIGRlbXV4ZXJfZGVub20gPSAxOwotKyAgZ2ludCBkZWNvZGVyX251bSA9IDEsIGRlY29kZXJfZGVub20gPSAxOwotKwotKyAgR1NUX09CSkVDVF9MT0NLIChmZm1wZWdkZWMpOwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+cGFyKSB7Ci0rICAgIGRlbXV4ZXJfbnVtID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1lcmF0b3IgKGZmbXBlZ2RlYy0+cGFyKTsKLSsgICAgZGVtdXhlcl9kZW5vbSA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IgKGZmbXBlZ2RlYy0+cGFyKTsKLSsgICAgZGVtdXhlcl9wYXJfc2V0ID0gVFJVRTsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiRGVtdXhlciBQQVI6ICVkOiVkIiwgZGVtdXhlcl9udW0sCi0rICAgICAgICBkZW11eGVyX2Rlbm9tKTsKLSsgIH0KLSsKLSsgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtICYmCi0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbikgewotKyAgICBkZWNvZGVyX251bSA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW07Ci0rICAgIGRlY29kZXJfZGVub20gPSBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuOwotKyAgICBkZWNvZGVyX3Bhcl9zZXQgPSBUUlVFOwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJEZWNvZGVyIFBBUjogJWQ6JWQiLCBkZWNvZGVyX251bSwKLSsgICAgICAgIGRlY29kZXJfZGVub20pOwotKyAgfQotKwotKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGZmbXBlZ2RlYyk7Ci0rCi0rICBpZiAoIWRlbXV4ZXJfcGFyX3NldCAmJiAhZGVjb2Rlcl9wYXJfc2V0KQotKyAgICBnb3RvIG5vX3BhcjsKLSsKLSsgIGlmIChkZW11eGVyX3Bhcl9zZXQgJiYgIWRlY29kZXJfcGFyX3NldCkKLSsgICAgZ290byB1c2VfZGVtdXhlcl9wYXI7Ci0rCi0rICBpZiAoZGVjb2Rlcl9wYXJfc2V0ICYmICFkZW11eGVyX3Bhcl9zZXQpCi0rICAgIGdvdG8gdXNlX2RlY29kZXJfcGFyOwotKwotKyAgLyogQm90aCB0aGUgZGVtdXhlciBhbmQgdGhlIGRlY29kZXIgcHJvdmlkZSBhIFBBUi4gSWYgb25lIG9mCi0rICAgKiB0aGUgdHdvIFBBUnMgaXMgMToxIGFuZCB0aGUgb3RoZXIgb25lIGlzIG5vdCwgdXNlIHRoZSBvbmUKLSsgICAqIHRoYXQgaXMgbm90IDE6MS4gKi8KLSsgIGlmIChkZW11eGVyX251bSA9PSBkZW11eGVyX2Rlbm9tICYmIGRlY29kZXJfbnVtICE9IGRlY29kZXJfZGVub20pCi0rICAgIGdvdG8gdXNlX2RlY29kZXJfcGFyOwotKwotKyAgaWYgKGRlY29kZXJfbnVtID09IGRlY29kZXJfZGVub20gJiYgZGVtdXhlcl9udW0gIT0gZGVtdXhlcl9kZW5vbSkKLSsgICAgZ290byB1c2VfZGVtdXhlcl9wYXI7Ci0rCi0rICAvKiBCb3RoIFBBUnMgYXJlIG5vbi0xOjEsIHNvIHVzZSB0aGUgUEFSIHByb3ZpZGVkIGJ5IHRoZSBkZW11eGVyICovCi0rICBnb3RvIHVzZV9kZW11eGVyX3BhcjsKLSsKLSt1c2VfZGVjb2Rlcl9wYXI6Ci0rICB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICJTZXR0aW5nIGRlY29kZXIgcHJvdmlkZWQgcGl4ZWwtYXNwZWN0LXJhdGlvIG9mICV1OiV1IiwgZGVjb2Rlcl9udW0sCi0rICAgICAgICBkZWNvZGVyX2Rlbm9tKTsKLSsgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwgZGVjb2Rlcl9udW0sCi0rICAgICAgICBkZWNvZGVyX2Rlbm9tLCBOVUxMKTsKLSsgICAgcmV0dXJuOwotKyAgfQotKwotK3VzZV9kZW11eGVyX3BhcjoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIlNldHRpbmcgZGVtdXhlciBwcm92aWRlZCBwaXhlbC1hc3BlY3QtcmF0aW8gb2YgJXU6JXUiLCBkZW11eGVyX251bSwKLSsgICAgICAgIGRlbXV4ZXJfZGVub20pOwotKyAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBkZW11eGVyX251bSwKLSsgICAgICAgIGRlbXV4ZXJfZGVub20sIE5VTEwpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rbm9fcGFyOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAiTmVpdGhlciBkZW11eGVyIG5vciBjb2RlYyBwcm92aWRlIGEgcGl4ZWwtYXNwZWN0LXJhdGlvIik7Ci0rICAgIHJldHVybjsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19uZWdvdGlhdGUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgZ2Jvb2xlYW4gZm9yY2UpCi0rewotKyAgR3N0RkZNcGVnRGVjQ2xhc3MgKm9jbGFzczsKLSsgIEdzdENhcHMgKmNhcHM7Ci0rCi0rICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0rCi0rICBzd2l0Y2ggKG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlKSB7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotKyAgICAgIGlmICghZm9yY2UgJiYgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ud2lkdGggPT0gZmZtcGVnZGVjLT5jb250ZXh0LT53aWR0aAotKyAgICAgICAgICAmJiBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5oZWlnaHQgPT0gZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQKLSsgICAgICAgICAgJiYgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gPT0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ub2xkX2Zwc19uCi0rICAgICAgICAgICYmIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kID09IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfZAotKyAgICAgICAgICAmJiBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5waXhfZm10ID09IGZmbXBlZ2RlYy0+Y29udGV4dC0+cGl4X2ZtdAotKyAgICAgICAgICAmJiBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfbiA9PQotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtCi0rICAgICAgICAgICYmIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBhcl9kID09Ci0rICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4pCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICJSZW5lZ290aWF0aW5nIHZpZGVvIGZyb20gJWR4JWRAICVkOiVkIFBBUiAlZC8lZCBmcHMgdG8gJWR4JWRAICVkOiVkIFBBUiAlZC8lZCBmcHMiLAotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby53aWR0aCwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaGVpZ2h0LAotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfbiwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX2QsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbiwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ub2xkX2Zwc19uLAotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoLCBmZm1wZWdkZWMtPmNvbnRleHQtPmhlaWdodCwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbiwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24sIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kKTsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby53aWR0aCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGg7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaGVpZ2h0ID0gZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQ7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ub2xkX2Zwc19uID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX247Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ub2xkX2Zwc19kID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2Q7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGl4X2ZtdCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+cGl4X2ZtdDsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfbiA9Ci0rICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW07Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX2QgPQotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgewotKyAgICAgIGdpbnQgZGVwdGggPSBhdl9zbXBfZm9ybWF0X2RlcHRoIChmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9mbXQpOwotKyAgICAgIGlmICghZm9yY2UgJiYgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSA9PQotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9yYXRlICYmCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmNoYW5uZWxzID09IGZmbXBlZ2RlYy0+Y29udGV4dC0+Y2hhbm5lbHMgJiYKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGggPT0gZGVwdGgpCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICJSZW5lZ290aWF0aW5nIGF1ZGlvIGZyb20gJWRIekAlZGNoYW5uZWxzICglZCkgdG8gJWRIekAlZGNoYW5uZWxzICglZCkiLAotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5zYW1wbGVyYXRlLCBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscywKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGgsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX3JhdGUsIGZmbXBlZ2RlYy0+Y29udGV4dC0+Y2hhbm5lbHMsIGRlcHRoKTsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5zYW1wbGVyYXRlID0gZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfcmF0ZTsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscyA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+Y2hhbm5lbHM7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGggPSBkZXB0aDsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgY2FwcyA9IGdzdF9mZm1wZWdfY29kZWN0eXBlX3RvX2NhcHMgKG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlLAotKyAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dCwgb2NsYXNzLT5pbl9wbHVnaW4tPmlkLCBGQUxTRSk7Ci0rCi0rICBpZiAoY2FwcyA9PSBOVUxMKQotKyAgICBnb3RvIG5vX2NhcHM7Ci0rCi0rICBzd2l0Y2ggKG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlKSB7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotKyAgICB7Ci0rICAgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotKyAgICAgIGdib29sZWFuIGludGVybGFjZWQ7Ci0rCi0rICAgICAgd2lkdGggPSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoOwotKyAgICAgIGhlaWdodCA9IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0OwotKyAgICAgIGludGVybGFjZWQgPSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkOwotKwotKyAgICAgIGlmICh3aWR0aCAhPSAtMSAmJiBoZWlnaHQgIT0gLTEpIHsKLSsgICAgICAgIC8qIG92ZXJ3cml0ZSB0aGUgb3V0cHV0IHNpemUgd2l0aCB0aGUgZGltZW5zaW9uIG9mIHRoZQotKyAgICAgICAgICogY2xpcHBpbmcgcmVnaW9uIGJ1dCBvbmx5IGlmIHRoZXkgYXJlIHNtYWxsZXIuICovCi0rICAgICAgICBpZiAod2lkdGggPCBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoKQotKyAgICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aCwgTlVMTCk7Ci0rICAgICAgICBpZiAoaGVpZ2h0IDwgZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQpCi0rICAgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBoZWlnaHQsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiaW50ZXJsYWNlZCIsIEdfVFlQRV9CT09MRUFOLCBpbnRlcmxhY2VkLAotKyAgICAgICAgICBOVUxMKTsKLSsKLSsgICAgICAvKiBJZiBhIGRlbXV4ZXIgcHJvdmlkZWQgYSBmcmFtZXJhdGUgdGhlbiB1c2UgaXQgKCMzMTM5NzApICovCi0rICAgICAgaWYgKGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uICE9IC0xKSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiZnJhbWVyYXRlIiwKLSsgICAgICAgICAgICBHU1RfVFlQRV9GUkFDVElPTiwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24sCi0rICAgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2QsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBnc3RfZmZtcGVnZGVjX2FkZF9waXhlbF9hc3BlY3RfcmF0aW8gKGZmbXBlZ2RlYywKLSsgICAgICAgICAgZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCkpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgotKyAgICB7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGlmICghZ3N0X3BhZF9zZXRfY2FwcyAoZmZtcGVnZGVjLT5zcmNwYWQsIGNhcHMpKQotKyAgICBnb3RvIGNhcHNfZmFpbGVkOwotKwotKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotKwotKyAgcmV0dXJuIFRSVUU7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStub19jYXBzOgotKyAgewotKyNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotKyAgICAvKiB1c2luZyBpbnRlcm5hbCBmZm1wZWcgc25hcHNob3QgKi8KLSsgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ2RlYywgQ09SRSwgTkVHT1RJQVRJT04sCi0rICAgICAgICAoIkNvdWxkIG5vdCBmaW5kIEdTdHJlYW1lciBjYXBzIG1hcHBpbmcgZm9yIEZGbXBlZyBjb2RlYyAnJXMnLiIsCi0rICAgICAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUpLCAoTlVMTCkpOwotKyNlbHNlCi0rICAgIC8qIHVzaW5nIGV4dGVybmFsIGZmbXBlZyAqLwotKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnZGVjLCBDT1JFLCBORUdPVElBVElPTiwKLSsgICAgICAgICgiQ291bGQgbm90IGZpbmQgR1N0cmVhbWVyIGNhcHMgbWFwcGluZyBmb3IgRkZtcGVnIGNvZGVjICclcycsIGFuZCAiCi0rICAgICAgICAgICAgInlvdSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbGliYXZjb2RlYy4gVGhpcyBpcyBtb3N0IGxpa2VseSBkdWUgdG8gIgotKyAgICAgICAgICAgICJhIHBhY2thZ2luZyBwcm9ibGVtIGFuZC9vciBsaWJhdmNvZGVjIGhhdmluZyBiZWVuIHVwZ3JhZGVkIHRvIGEgIgotKyAgICAgICAgICAgICJ2ZXJzaW9uIHRoYXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIHZlcnNpb24gb2YgIgotKyAgICAgICAgICAgICJnc3RyZWFtZXItZmZtcGVnLiBNYWtlIHN1cmUgeW91ciBnc3RyZWFtZXItZmZtcGVnIGFuZCBsaWJhdmNvZGVjICIKLSsgICAgICAgICAgICAicGFja2FnZXMgY29tZSBmcm9tIHRoZSBzYW1lIHNvdXJjZS9yZXBvc2l0b3J5LiIsCi0rICAgICAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUpLCAoTlVMTCkpOwotKyNlbmRpZgotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rY2Fwc19mYWlsZWQ6Ci0rICB7Ci0rICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdkZWMsIENPUkUsIE5FR09USUFUSU9OLCAoTlVMTCksCi0rICAgICAgICAoIkNvdWxkIG5vdCBzZXQgY2FwcyBmb3IgZmZtcGVnIGRlY29kZXIgKCVzKSwgbm90IGZpeGVkPyIsCi0rICAgICAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUpKTsKLSsgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotKwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rfQotKwotKy8qIHBlcmZvcm0gcW9zIGNhbGN1bGF0aW9ucyBiZWZvcmUgZGVjb2RpbmcgdGhlIG5leHQgZnJhbWUuCi0rICoKLSsgKiBTZXRzIHRoZSBza2lwX2ZyYW1lIGZsYWcgYW5kIGlmIHRoaW5ncyBhcmUgcmVhbGx5IGJhZCwgc2tpcHMgdG8gdGhlIG5leHQKLSsgKiBrZXlmcmFtZS4KLSsgKiAKLSsgKiBSZXR1cm5zIFRSVUUgaWYgdGhlIGZyYW1lIHNob3VsZCBiZSBkZWNvZGVkLCBGQUxTRSBpZiB0aGUgZnJhbWUgY2FuIGJlIGRyb3BwZWQKLSsgKiBlbnRpcmVseS4KLSsgKi8KLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnZGVjX2RvX3FvcyAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLCBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLAotKyAgICBnYm9vbGVhbiAqIG1vZGVfc3dpdGNoKQotK3sKLSsgIEdzdENsb2NrVGltZURpZmYgZGlmZjsKLSsgIGdkb3VibGUgcHJvcG9ydGlvbjsKLSsgIEdzdENsb2NrVGltZSBxb3N0aW1lLCBlYXJsaWVzdF90aW1lOwotKyAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSsKLSsgICptb2RlX3N3aXRjaCA9IEZBTFNFOwotKwotKyAgLyogbm8gdGltZXN0YW1wLCBjYW4ndCBkbyBRb1MgKi8KLSsgIGlmIChHX1VOTElLRUxZICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRpbWVzdGFtcCkpKQotKyAgICBnb3RvIG5vX3FvczsKLSsKLSsgIC8qIGdldCBsYXRlc3QgUW9TIG9ic2VydmF0aW9uIHZhbHVlcyAqLwotKyAgZ3N0X2ZmbXBlZ2RlY19yZWFkX3FvcyAoZmZtcGVnZGVjLCAmcHJvcG9ydGlvbiwgJmVhcmxpZXN0X3RpbWUpOwotKwotKyAgLyogc2tpcCBxb3MgaWYgd2UgaGF2ZSBubyBvYnNlcnZhdGlvbiAoeWV0KSAqLwotKyAgaWYgKEdfVU5MSUtFTFkgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZWFybGllc3RfdGltZSkpKSB7Ci0rICAgIC8qIG5vIHNraXBfZnJhbWUgaW5pdGlhbHkgKi8KLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lID0gQVZESVNDQVJEX0RFRkFVTFQ7Ci0rICAgIGdvdG8gbm9fcW9zOwotKyAgfQotKwotKyAgLyogcW9zIGlzIGRvbmUgb24gcnVubmluZyB0aW1lIG9mIHRoZSB0aW1lc3RhbXAgKi8KLSsgIHFvc3RpbWUgPSBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKLSsgICAgICB0aW1lc3RhbXApOwotKwotKyAgLyogdGltZXN0YW1wIGNhbiBiZSBvdXQgb2Ygc2VnbWVudCwgdGhlbiB3ZSBkb24ndCBkbyBRb1MgKi8KLSsgIGlmIChHX1VOTElLRUxZICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHFvc3RpbWUpKSkKLSsgICAgZ290byBub19xb3M7Ci0rCi0rICAvKiBzZWUgaG93IG91ciBuZXh0IHRpbWVzdGFtcCByZWxhdGVzIHRvIHRoZSBsYXRlc3QgcW9zIHRpbWVzdGFtcC4gbmVnYXRpdmUKLSsgICAqIHZhbHVlcyBtZWFuIHdlIGFyZSBlYXJseSwgcG9zaXRpdmUgdmFsdWVzIG1lYW4gd2UgYXJlIHRvbyBsYXRlLiAqLwotKyAgZGlmZiA9IEdTVF9DTE9DS19ESUZGIChxb3N0aW1lLCBlYXJsaWVzdF90aW1lKTsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIlFPUzogcW9zdGltZSAlIiBHU1RfVElNRV9GT1JNQVQKLSsgICAgICAiLCBlYXJsaWVzdCAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHFvc3RpbWUpLAotKyAgICAgIEdTVF9USU1FX0FSR1MgKGVhcmxpZXN0X3RpbWUpKTsKLSsKLSsgIC8qIGlmIHdlIHVzaW5nIGxlc3MgdGhhbiA0MCUgb2YgdGhlIGF2YWlsYWJsZSB0aW1lLCB3ZSBjYW4gdHJ5IHRvCi0rICAgKiBzcGVlZCB1cCBhZ2FpbiB3aGVuIHdlIHdlcmUgc2xvdy4gKi8KLSsgIGlmIChwcm9wb3J0aW9uIDwgMC40ICYmIGRpZmYgPCAwKSB7Ci0rICAgIGdvdG8gbm9ybWFsX21vZGU7Ci0rICB9IGVsc2UgewotKyAgICBpZiAoZGlmZiA+PSAwKSB7Ci0rICAgICAgLyogd2UncmUgdG9vIHNsb3csIHRyeSB0byBzcGVlZCB1cCAqLwotKyAgICAgIC8qIHN3aXRjaCB0byBza2lwX2ZyYW1lIG1vZGUgKi8KLSsgICAgICBnb3RvIHNraXBfZnJhbWU7Ci0rICAgIH0KLSsgIH0KLSsKLStub19xb3M6Ci0rICBmZm1wZWdkZWMtPnByb2Nlc3NlZCsrOwotKyAgcmV0dXJuIFRSVUU7Ci0rCi0rbm9ybWFsX21vZGU6Ci0rICB7Ci0rICAgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgIT0gQVZESVNDQVJEX0RFRkFVTFQpIHsKLSsgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgPSBBVkRJU0NBUkRfREVGQVVMVDsKLSsgICAgICAqbW9kZV9zd2l0Y2ggPSBUUlVFOwotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIlFPUzogbm9ybWFsIG1vZGUgJWcgPCAwLjQiLCBwcm9wb3J0aW9uKTsKLSsgICAgfQotKyAgICBmZm1wZWdkZWMtPnByb2Nlc3NlZCsrOwotKyAgICByZXR1cm4gVFJVRTsKLSsgIH0KLStza2lwX2ZyYW1lOgotKyAgewotKyAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lICE9IEFWRElTQ0FSRF9OT05SRUYpIHsKLSsgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgPSBBVkRJU0NBUkRfTk9OUkVGOwotKyAgICAgICptb2RlX3N3aXRjaCA9IFRSVUU7Ci0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiUU9TOiBodXJyeSB1cCwgZGlmZiAlIiBHX0dJTlQ2NF9GT1JNQVQgIiA+PSAwIiwgZGlmZik7Ci0rICAgIH0KLSsgICAgZ290byBkcm9wX3FvczsKLSsgIH0KLStkcm9wX3FvczoKLSsgIHsKLSsgICAgR3N0Q2xvY2tUaW1lIHN0cmVhbV90aW1lLCBqaXR0ZXI7Ci0rICAgIEdzdE1lc3NhZ2UgKnFvc19tc2c7Ci0rCi0rICAgIGZmbXBlZ2RlYy0+ZHJvcHBlZCsrOwotKyAgICBzdHJlYW1fdGltZSA9Ci0rICAgICAgICBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJmZmbXBlZ2RlYy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAotKyAgICAgICAgdGltZXN0YW1wKTsKLSsgICAgaml0dGVyID0gR1NUX0NMT0NLX0RJRkYgKHFvc3RpbWUsIGVhcmxpZXN0X3RpbWUpOwotKyAgICBxb3NfbXNnID0KLSsgICAgICAgIGdzdF9tZXNzYWdlX25ld19xb3MgKEdTVF9PQkpFQ1RfQ0FTVCAoZmZtcGVnZGVjKSwgRkFMU0UsIHFvc3RpbWUsCi0rICAgICAgICBzdHJlYW1fdGltZSwgdGltZXN0YW1wLCBHU1RfQ0xPQ0tfVElNRV9OT05FKTsKLSsgICAgZ3N0X21lc3NhZ2Vfc2V0X3Fvc192YWx1ZXMgKHFvc19tc2csIGppdHRlciwgcHJvcG9ydGlvbiwgMTAwMDAwMCk7Ci0rICAgIGdzdF9tZXNzYWdlX3NldF9xb3Nfc3RhdHMgKHFvc19tc2csIEdTVF9GT1JNQVRfQlVGRkVSUywKLSsgICAgICAgIGZmbXBlZ2RlYy0+cHJvY2Vzc2VkLCBmZm1wZWdkZWMtPmRyb3BwZWQpOwotKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKGZmbXBlZ2RlYyksIHFvc19tc2cpOwotKwotKyAgICByZXR1cm4gcmVzOwotKyAgfQotK30KLSsKLSsvKiByZXR1cm5zIFRSVUUgaWYgYnVmZmVyIGlzIHdpdGhpbiBzZWdtZW50LCBlbHNlIEZBTFNFLgotKyAqIGlmIEJ1ZmZlciBpcyBvbiBzZWdtZW50IGJvcmRlciwgaXQncyB0aW1lc3RhbXAgYW5kIGR1cmF0aW9uIHdpbGwgYmUgY2xpcHBlZCAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2NsaXBfdmlkZW9fYnVmZmVyIChHc3RGRk1wZWdEZWMgKiBkZWMsIEdzdEJ1ZmZlciAqIGJ1ZiwgR3N0Q2xvY2tUaW1lIGluX3RzLAotKyAgICBHc3RDbG9ja1RpbWUgaW5fZHVyKQotK3sKLSsgIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0rICBnaW50NjQgY3N0YXJ0LCBjc3RvcDsKLSsgIEdzdENsb2NrVGltZSBzdG9wOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGRlYywKLSsgICAgICAidGltZXN0YW1wOiUiIEdTVF9USU1FX0ZPUk1BVCAiICwgZHVyYXRpb246JSIgR1NUX1RJTUVfRk9STUFULAotKyAgICAgIEdTVF9USU1FX0FSR1MgKGluX3RzKSwgR1NUX1RJTUVfQVJHUyAoaW5fZHVyKSk7Ci0rCi0rICAvKiBjYW4ndCBjbGlwIHdpdGhvdXQgVElNRSBzZWdtZW50ICovCi0rICBpZiAoR19VTkxJS0VMWSAoZGVjLT5zZWdtZW50LmZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpKQotKyAgICBnb3RvIGJlYWNoOwotKwotKyAgLyogd2UgbmVlZCBhIHN0YXJ0IHRpbWUgKi8KLSsgIGlmIChHX1VOTElLRUxZICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGluX3RzKSkpCi0rICAgIGdvdG8gYmVhY2g7Ci0rCi0rICAvKiBnZW5lcmF0ZSB2YWxpZCBzdG9wLCBpZiBkdXJhdGlvbiB1bmtub3duLCB3ZSBoYXZlIHVua25vd24gc3RvcCAqLwotKyAgc3RvcCA9Ci0rICAgICAgR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGluX2R1cikgPyAoaW5fdHMgKyBpbl9kdXIpIDogR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsKLSsgIC8qIG5vdyBjbGlwICovCi0rICByZXMgPQotKyAgICAgIGdzdF9zZWdtZW50X2NsaXAgKCZkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgaW5fdHMsIHN0b3AsICZjc3RhcnQsCi0rICAgICAgJmNzdG9wKTsKLSsgIGlmIChHX1VOTElLRUxZICghcmVzKSkKLSsgICAgZ290byBiZWFjaDsKLSsKLSsgIC8qIHdlJ3JlIHByZXR0eSBzdXJlIHRoZSBkdXJhdGlvbiBvZiB0aGlzIGJ1ZmZlciBpcyBub3QgdGlsbCB0aGUgZW5kIG9mIHRoaXMKLSsgICAqIHNlZ21lbnQgKHdoaWNoIF9jbGlwIHdpbGwgYXNzdW1lIHdoZW4gdGhlIHN0b3AgaXMgLTEpICovCi0rICBpZiAoc3RvcCA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FKQotKyAgICBjc3RvcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rCi0rICAvKiB1cGRhdGUgdGltZXN0YW1wIGFuZCBwb3NzaWJseSBkdXJhdGlvbiBpZiB0aGUgY2xpcHBlZCBzdG9wIHRpbWUgaXMKLSsgICAqIHZhbGlkICovCi0rICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA9IGNzdGFydDsKLSsgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoY3N0b3ApKQotKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gY3N0b3AgLSBjc3RhcnQ7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZGVjLAotKyAgICAgICJjbGlwcGVkIHRpbWVzdGFtcDolIiBHU1RfVElNRV9GT1JNQVQgIiAsIGR1cmF0aW9uOiUiIEdTVF9USU1FX0ZPUk1BVCwKLSsgICAgICBHU1RfVElNRV9BUkdTIChjc3RhcnQpLCBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpKSk7Ci0rCi0rYmVhY2g6Ci0rICBHU1RfTE9HX09CSkVDVCAoZGVjLCAiJXNkcm9wcGluZyIsIChyZXMgPyAibm90ICIgOiAiIikpOwotKyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rCi0rLyogZ2V0IGFuIG91dGJ1ZiBidWZmZXIgd2l0aCB0aGUgY3VycmVudCBwaWN0dXJlICovCi0rc3RhdGljIEdzdEZsb3dSZXR1cm4KLStnZXRfb3V0cHV0X2J1ZmZlciAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLCBHc3RCdWZmZXIgKiogb3V0YnVmKQotK3sKLSsgIEdzdEZsb3dSZXR1cm4gcmV0OwotKwotKyAgcmV0ID0gR1NUX0ZMT1dfT0s7Ci0rICAqb3V0YnVmID0gTlVMTDsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBpY3R1cmUtPm9wYXF1ZSAhPSBOVUxMKSB7Ci0rICAgIC8qIHdlIGFsbG9jYXRlZCBhIHBpY3R1cmUgYWxyZWFkeSBmb3IgZmZtcGVnIHRvIGRlY29kZSBpbnRvLCBsZXQncyBwaWNrIGl0Ci0rICAgICAqIHVwIGFuZCB1c2UgaXQgbm93LiAqLwotKyAgICAqb3V0YnVmID0gKEdzdEJ1ZmZlciAqKSBmZm1wZWdkZWMtPnBpY3R1cmUtPm9wYXF1ZTsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIG9wYXF1ZSBidWZmZXIgJXAiLCAqb3V0YnVmKTsKLSsjaWZuZGVmIEVYVFJBX1JFRgotKyAgICBnc3RfYnVmZmVyX3JlZiAoKm91dGJ1Zik7Ci0rI2VuZGlmCi0rICB9IGVsc2UgewotKyAgICBBVlBpY3R1cmUgcGljLCAqb3V0cGljOwotKyAgICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJnZXQgb3V0cHV0IGJ1ZmZlciIpOwotKwotKyAgICAvKiBmaWd1cmUgb3V0IHNpemUgb2Ygb3V0cHV0IGJ1ZmZlciwgdGhpcyBpcyB0aGUgY2xpcHBlZCBvdXRwdXQgc2l6ZSBiZWNhdXNlCi0rICAgICAqIHdlIHdpbGwgY29weSB0aGUgcGljdHVyZSBpbnRvIGl0IGJ1dCBvbmx5IHdoZW4gdGhlIGNsaXBwaW5nIHJlZ2lvbiBpcwotKyAgICAgKiBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCBwaWN0dXJlIHNpemUuICovCi0rICAgIGlmICgod2lkdGggPSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoKSA9PSAtMSkKLSsgICAgICB3aWR0aCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGg7Ci0rICAgIGVsc2UgaWYgKHdpZHRoID4gZmZtcGVnZGVjLT5jb250ZXh0LT53aWR0aCkKLSsgICAgICB3aWR0aCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGg7Ci0rCi0rICAgIGlmICgoaGVpZ2h0ID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQpID09IC0xKQotKyAgICAgIGhlaWdodCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0OwotKyAgICBlbHNlIGlmIChoZWlnaHQgPiBmZm1wZWdkZWMtPmNvbnRleHQtPmhlaWdodCkKLSsgICAgICBoZWlnaHQgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmhlaWdodDsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImNsaXAgd2lkdGggJWQvaGVpZ2h0ICVkIiwgd2lkdGgsIGhlaWdodCk7Ci0rCi0rICAgIHJldCA9IGFsbG9jX291dHB1dF9idWZmZXIgKGZmbXBlZ2RlYywgb3V0YnVmLCB3aWR0aCwgaGVpZ2h0KTsKLSsgICAgaWYgKEdfVU5MSUtFTFkgKHJldCAhPSBHU1RfRkxPV19PSykpCi0rICAgICAgZ290byBhbGxvY19mYWlsZWQ7Ci0rCi0rICAgIC8qIG9yaWdpbmFsIGZmbXBlZyBjb2RlIGRvZXMgbm90IGhhbmRsZSBvZGQgc2l6ZXMgY29ycmVjdGx5LgotKyAgICAgKiBUaGlzIHBhdGNoZWQgdXAgdmVyc2lvbiBkb2VzICovCi0rICAgIGdzdF9mZm1wZWdfYXZwaWN0dXJlX2ZpbGwgKCZwaWMsIEdTVF9CVUZGRVJfREFUQSAoKm91dGJ1ZiksCi0rICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnBpeF9mbXQsIHdpZHRoLCBoZWlnaHQpOwotKwotKyAgICBvdXRwaWMgPSAoQVZQaWN0dXJlICopIGZmbXBlZ2RlYy0+cGljdHVyZTsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImxpbnNpemUgJWQgJWQgJWQiLCBvdXRwaWMtPmxpbmVzaXplWzBdLAotKyAgICAgICAgb3V0cGljLT5saW5lc2l6ZVsxXSwgb3V0cGljLT5saW5lc2l6ZVsyXSk7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJkYXRhICV1ICV1ICV1IiwgMCwKLSsgICAgICAgIChndWludCkgKG91dHBpYy0+ZGF0YVsxXSAtIG91dHBpYy0+ZGF0YVswXSksCi0rICAgICAgICAoZ3VpbnQpIChvdXRwaWMtPmRhdGFbMl0gLSBvdXRwaWMtPmRhdGFbMF0pKTsKLSsKLSsgICAgYXZfcGljdHVyZV9jb3B5ICgmcGljLCBvdXRwaWMsIGZmbXBlZ2RlYy0+Y29udGV4dC0+cGl4X2ZtdCwgd2lkdGgsIGhlaWdodCk7Ci0rICB9Ci0rICBmZm1wZWdkZWMtPnBpY3R1cmUtPnJlb3JkZXJlZF9vcGFxdWUgPSAtMTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rCi0rICAvKiBzcGVjaWFsIGNhc2VzICovCi0rYWxsb2NfZmFpbGVkOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwYWRfYWxsb2MgZmFpbGVkIik7Ci0rICAgIHJldHVybiByZXQ7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rY2xlYXJfcXVldWVkIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgZ19saXN0X2ZvcmVhY2ggKGZmbXBlZ2RlYy0+cXVldWVkLCAoR0Z1bmMpIGdzdF9taW5pX29iamVjdF91bnJlZiwgTlVMTCk7Ci0rICBnX2xpc3RfZnJlZSAoZmZtcGVnZGVjLT5xdWV1ZWQpOwotKyAgZmZtcGVnZGVjLT5xdWV1ZWQgPSBOVUxMOwotK30KLSsKLStzdGF0aWMgR3N0Rmxvd1JldHVybgotK2ZsdXNoX3F1ZXVlZCAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIEdzdEZsb3dSZXR1cm4gcmVzID0gR1NUX0ZMT1dfT0s7Ci0rCi0rICB3aGlsZSAoZmZtcGVnZGVjLT5xdWV1ZWQpIHsKLSsgICAgR3N0QnVmZmVyICpidWYgPSBHU1RfQlVGRkVSX0NBU1QgKGZmbXBlZ2RlYy0+cXVldWVkLT5kYXRhKTsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInB1c2hpbmcgYnVmZmVyICVwLCBvZmZzZXQgJSIKLSsgICAgICAgIEdfR1VJTlQ2NF9GT1JNQVQgIiwgdGltZXN0YW1wICUiCi0rICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiwgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBidWYsCi0rICAgICAgICBHU1RfQlVGRkVSX09GRlNFVCAoYnVmKSwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpKSwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZikpKTsKLSsKLSsgICAgLyogaXRlcmF0ZSBvdXB1dCBxdWV1ZSBhbiBwdXNoIGRvd25zdHJlYW0gKi8KLSsgICAgcmVzID0gZ3N0X3BhZF9wdXNoIChmZm1wZWdkZWMtPnNyY3BhZCwgYnVmKTsKLSsKLSsgICAgZmZtcGVnZGVjLT5xdWV1ZWQgPQotKyAgICAgICAgZ19saXN0X2RlbGV0ZV9saW5rIChmZm1wZWdkZWMtPnF1ZXVlZCwgZmZtcGVnZGVjLT5xdWV1ZWQpOwotKyAgfQotKyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfYXZwYWNrZXRfaW5pdCAoQVZQYWNrZXQgKiBwYWNrZXQsIGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUpCi0rewotKyAgbWVtc2V0IChwYWNrZXQsIDAsIHNpemVvZiAoQVZQYWNrZXQpKTsKLSsgIHBhY2tldC0+ZGF0YSA9IGRhdGE7Ci0rICBwYWNrZXQtPnNpemUgPSBzaXplOwotK30KLSsKLSsvKiBnc3RfZmZtcGVnZGVjX1t2aWRlb3xhdWRpb11fZnJhbWU6Ci0rICogZmZtcGVnZGVjOgotKyAqIGRhdGE6IHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gZGVjb2RlCi0rICogc2l6ZTogc2l6ZSBvZiBkYXRhIGluIGJ5dGVzCi0rICogaW5fdGltZXN0YW1wOiBpbmNvbWluZyB0aW1lc3RhbXAuCi0rICogaW5fZHVyYXRpb246IGluY29taW5nIGR1cmF0aW9uLgotKyAqIGluX29mZnNldDogaW5jb21pbmcgb2Zmc2V0IChmcmFtZSBudW1iZXIpLgotKyAqIG91dGJ1Zjogb3V0Z29pbmcgYnVmZmVyLiBEaWZmZXJlbnQgZnJvbSBOVUxMIE9OTFkgaWYgaXQgY29udGFpbnMgZGVjb2RlZCBkYXRhLgotKyAqIHJldDogUmV0dXJuIGZsb3cuCi0rICoKLSsgKiBSZXR1cm5zOiBudW1iZXIgb2YgYnl0ZXMgdXNlZCBpbiBkZWNvZGluZy4gVGhlIGNoZWNrIGZvciBzdWNjZXNzZnVsIGRlY29kZSBpcwotKyAqICAgb3V0YnVmIGJlaW5nIG5vbi1OVUxMLgotKyAqLwotK3N0YXRpYyBnaW50Ci0rZ3N0X2ZmbXBlZ2RlY192aWRlb19mcmFtZSAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLAotKyAgICBndWludDggKiBkYXRhLCBndWludCBzaXplLAotKyAgICBjb25zdCBHc3RUU0luZm8gKiBkZWNfaW5mbywgR3N0QnVmZmVyICoqIG91dGJ1ZiwgR3N0Rmxvd1JldHVybiAqIHJldCkKLSt7Ci0rICBnaW50IGxlbiA9IC0xOwotKyAgZ2ludCBoYXZlX2RhdGE7Ci0rICBnYm9vbGVhbiBtb2RlX3N3aXRjaDsKLSsgIGdib29sZWFuIGRlY29kZTsKLSsgIGdpbnQgc2tpcF9mcmFtZSA9IEFWRElTQ0FSRF9ERUZBVUxUOwotKyAgR3N0Q2xvY2tUaW1lIG91dF90aW1lc3RhbXAsIG91dF9kdXJhdGlvbiwgb3V0X3B0czsKLSsgIGdpbnQ2NCBvdXRfb2Zmc2V0OwotKyAgY29uc3QgR3N0VFNJbmZvICpvdXRfaW5mbzsKLSsgIEFWUGFja2V0IHBhY2tldDsKLSsKLSsgICpyZXQgPSBHU1RfRkxPV19PSzsKLSsgICpvdXRidWYgPSBOVUxMOwotKwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5vcGFxdWUgPSBmZm1wZWdkZWM7Ci0rCi0rICAvKiBpbiBjYXNlIHdlIHNraXAgZnJhbWVzICovCi0rICBmZm1wZWdkZWMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9IC0xOwotKwotKyAgLyogcnVuIFFvUyBjb2RlLCB3ZSBkb24ndCBzdG9wIGRlY29kaW5nIHRoZSBmcmFtZSB3aGVuIHdlIGFyZSBsYXRlIGJlY2F1c2UKLSsgICAqIGVsc2Ugd2UgbWlnaHQgc2tpcCBhIHJlZmVyZW5jZSBmcmFtZSAqLwotKyAgZGVjb2RlID0gZ3N0X2ZmbXBlZ2RlY19kb19xb3MgKGZmbXBlZ2RlYywgZGVjX2luZm8tPnRpbWVzdGFtcCwgJm1vZGVfc3dpdGNoKTsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPmlzX3JlYWx2aWRlbyAmJiBkYXRhICE9IE5VTEwpIHsKLSsgICAgZ2ludCBzbGljZV9jb3VudDsKLSsgICAgZ2ludCBpOwotKwotKyAgICAvKiBzZXR1cCB0aGUgc2xpY2UgdGFibGUgZm9yIHJlYWx2aWRlbyAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5zbGljZV9vZmZzZXQgPT0gTlVMTCkKLSsgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNsaWNlX29mZnNldCA9IGdfbWFsbG9jIChzaXplb2YgKGd1aW50MzIpICogMTAwMCk7Ci0rCi0rICAgIHNsaWNlX2NvdW50ID0gKCpkYXRhKyspICsgMTsKLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zbGljZV9jb3VudCA9IHNsaWNlX2NvdW50OwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgc2xpY2VfY291bnQ7IGkrKykgewotKyAgICAgIGRhdGEgKz0gNDsKLSsgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNsaWNlX29mZnNldFtpXSA9IEdTVF9SRUFEX1VJTlQzMl9MRSAoZGF0YSk7Ci0rICAgICAgZGF0YSArPSA0OwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAoIWRlY29kZSkgewotKyAgICAvKiBubyBkZWNvZGluZyBuZWVkZWQsIHNhdmUgcHJldmlvdXMgc2tpcF9mcmFtZSB2YWx1ZSBhbmQgYnJ1dGVseSBza2lwCi0rICAgICAqIGRlY29kaW5nIGV2ZXJ5dGhpbmcgKi8KLSsgICAgc2tpcF9mcmFtZSA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZTsKLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lID0gQVZESVNDQVJEX05PTlJFRjsKLSsgIH0KLSsKLSsgIC8qIHNhdmUgcmVmZXJlbmNlIHRvIHRoZSB0aW1pbmcgaW5mbyAqLwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5yZW9yZGVyZWRfb3BhcXVlID0gKGdpbnQ2NCkgZGVjX2luZm8tPmlkeDsKLSsgIGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVvcmRlcmVkX29wYXF1ZSA9IChnaW50NjQpIGRlY19pbmZvLT5pZHg7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJzdG9yZWQgb3BhcXVlIHZhbHVlcyBpZHggJWQiLCBkZWNfaW5mby0+aWR4KTsKLSsKLSsgIC8qIG5vdyBkZWNvZGUgdGhlIGZyYW1lICovCi0rICBnc3RfYXZwYWNrZXRfaW5pdCAoJnBhY2tldCwgZGF0YSwgc2l6ZSk7Ci0rICBsZW4gPSBhdmNvZGVjX2RlY29kZV92aWRlbzIgKGZmbXBlZ2RlYy0+Y29udGV4dCwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUsICZoYXZlX2RhdGEsICZwYWNrZXQpOwotKwotKyAgLyogcmVzdG9yZSBwcmV2aW91cyBzdGF0ZSAqLwotKyAgaWYgKCFkZWNvZGUpCi0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSA9IHNraXBfZnJhbWU7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJhZnRlciBkZWNvZGU6IGxlbiAlZCwgaGF2ZV9kYXRhICVkIiwKLSsgICAgICBsZW4sIGhhdmVfZGF0YSk7Ci0rCi0rICAvKiB3aGVuIHdlIGFyZSBpbiBza2lwX2ZyYW1lIG1vZGUsIGRvbid0IGNvbXBsYWluIHdoZW4gZmZtcGVnIHJldHVybmVkCi0rICAgKiBubyBkYXRhIGJlY2F1c2Ugd2UgdG9sZCBpdCB0byBza2lwIHN0dWZmLiAqLwotKyAgaWYgKGxlbiA8IDAgJiYgKG1vZGVfc3dpdGNoIHx8IGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSkpCi0rICAgIGxlbiA9IDA7Ci0rCi0rICBpZiAobGVuID4gMCAmJiBoYXZlX2RhdGEgPD0gMCAmJiAobW9kZV9zd2l0Y2gKLSsgICAgICAgICAgfHwgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lKSkgewotKyAgICAvKiB3ZSBjb25zdW1lZCBzb21lIGJ5dGVzIGJ1dCBub3RoaW5nIGRlY29kZWQgYW5kIHdlIGFyZSBza2lwcGluZyBmcmFtZXMsCi0rICAgICAqIGRpc2FibGUgdGhlIGludGVycG9sbGF0aW9uIG9mIERUUyB0aW1lc3RhbXBzICovCi0rICAgIGZmbXBlZ2RlYy0+bGFzdF9vdXQgPSAtMTsKLSsgIH0KLSsKLSsgIC8qIG5vIGRhdGEsIHdlJ3JlIGRvbmUgKi8KLSsgIGlmIChsZW4gPCAwIHx8IGhhdmVfZGF0YSA8PSAwKQotKyAgICBnb3RvIGJlYWNoOwotKwotKyAgLyogZ2V0IHRoZSBvdXRwdXQgcGljdHVyZSB0aW1pbmcgaW5mbyBhZ2FpbiAqLwotKyAgb3V0X2luZm8gPSBnc3RfdHNfaW5mb19nZXQgKGZmbXBlZ2RlYywgZmZtcGVnZGVjLT5waWN0dXJlLT5yZW9yZGVyZWRfb3BhcXVlKTsKLSsgIG91dF9wdHMgPSBvdXRfaW5mby0+dGltZXN0YW1wOwotKyAgb3V0X2R1cmF0aW9uID0gb3V0X2luZm8tPmR1cmF0aW9uOwotKyAgb3V0X29mZnNldCA9IG91dF9pbmZvLT5vZmZzZXQ7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgInB0cyAlIiBHX0dVSU5UNjRfRk9STUFUICIgZHVyYXRpb24gJSIgR19HVUlOVDY0X0ZPUk1BVCAiIG9mZnNldCAlIgotKyAgICAgIEdfR0lOVDY0X0ZPUk1BVCwgb3V0X3B0cywgb3V0X2R1cmF0aW9uLCBvdXRfb2Zmc2V0KTsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInBpY3R1cmU6IHB0cyAlIiBHX0dVSU5UNjRfRk9STUFULAotKyAgICAgIChndWludDY0KSBmZm1wZWdkZWMtPnBpY3R1cmUtPnB0cyk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwaWN0dXJlOiBudW0gJWQiLAotKyAgICAgIGZmbXBlZ2RlYy0+cGljdHVyZS0+Y29kZWRfcGljdHVyZV9udW1iZXIpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGljdHVyZTogcmVmICVkIiwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPnJlZmVyZW5jZSk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwaWN0dXJlOiBkaXNwbGF5ICVkIiwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPmRpc3BsYXlfcGljdHVyZV9udW1iZXIpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGljdHVyZTogb3BhcXVlICVwIiwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPm9wYXF1ZSk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwaWN0dXJlOiByZW9yZGVyZWQgb3BhcXVlICUiIEdfR1VJTlQ2NF9GT1JNQVQsCi0rICAgICAgKGd1aW50NjQpIGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVvcmRlcmVkX29wYXF1ZSk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJyZXBlYXRfcGljdDolZCIsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5yZXBlYXRfcGljdCk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJpbnRlcmxhY2VkX2ZyYW1lOiVkIiwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPmludGVybGFjZWRfZnJhbWUpOwotKwotKyAgaWYgKEdfVU5MSUtFTFkgKGZmbXBlZ2RlYy0+cGljdHVyZS0+aW50ZXJsYWNlZF9mcmFtZSAhPQotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkKSkgewotKyAgICBHU1RfV0FSTklORyAoIkNoYW5nZSBpbiBpbnRlcmxhY2luZyAhIHBpY3R1cmU6JWQsIHJlY29yZGVkOiVkIiwKLSsgICAgICAgIGZmbXBlZ2RlYy0+cGljdHVyZS0+aW50ZXJsYWNlZF9mcmFtZSwKLSsgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmludGVybGFjZWQpOwotKyAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkID0gZmZtcGVnZGVjLT5waWN0dXJlLT5pbnRlcmxhY2VkX2ZyYW1lOwotKyAgICBnc3RfZmZtcGVnZGVjX25lZ290aWF0ZSAoZmZtcGVnZGVjLCBUUlVFKTsKLSsgIH0KLSsKLSsgIC8qIFdoZXRoZXIgYSBmcmFtZSBpcyBpbnRlcmxhY2VkIG9yIG5vdCBpcyB1bmtub3duIGF0IHRoZSB0aW1lIG9mCi0rICAgICBidWZmZXIgYWxsb2NhdGlvbiwgc28gY2FwcyBvbiB0aGUgYnVmZmVyIGluIG9wYXF1ZSB3aWxsIGhhdmUKLSsgICAgIHRoZSBwcmV2aW91cyBmcmFtZSdzIGludGVybGFjZWQgZmxhZyBzZXQuIFNvIGlmIGludGVybGFjZWRuZXNzCi0rICAgICBoYXMgY2hhbmdlZCBzaW5jZSBhbGxvY2F0aW9uLCB3ZSB1cGRhdGUgdGhlIGJ1ZmZlciAoaWYgYW55KQotKyAgICAgY2FwcyBub3cgd2l0aCB0aGUgY29ycmVjdCBpbnRlcmxhY2VkIGZsYWcuICovCi0rICBpZiAoZmZtcGVnZGVjLT5waWN0dXJlLT5vcGFxdWUgIT0gTlVMTCkgewotKyAgICBHc3RCdWZmZXIgKmJ1ZmZlciA9IGZmbXBlZ2RlYy0+cGljdHVyZS0+b3BhcXVlOwotKyAgICBpZiAoR1NUX0JVRkZFUl9DQVBTIChidWZmZXIpICYmIEdTVF9QQURfQ0FQUyAoZmZtcGVnZGVjLT5zcmNwYWQpKSB7Ci0rICAgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoR1NUX0JVRkZFUl9DQVBTIChidWZmZXIpLCAwKTsKLSsgICAgICBnYm9vbGVhbiBpbnRlcmxhY2VkOwotKyAgICAgIGdib29sZWFuIGZvdW5kID0gZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAocywgImludGVybGFjZWQiLCAmaW50ZXJsYWNlZCk7Ci0rICAgICAgaWYgKCFmb3VuZCB8fCAoISFpbnRlcmxhY2VkICE9ICEhZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaW50ZXJsYWNlZCkpIHsKLSsgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgICAiQnVmZmVyIGludGVybGFjaW5nIGRvZXMgbm90IG1hdGNoIHBhZCwgdXBkYXRpbmciKTsKLSsgICAgICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbWFrZV9tZXRhZGF0YV93cml0YWJsZSAoYnVmZmVyKTsKLSsgICAgICAgIGdzdF9idWZmZXJfc2V0X2NhcHMgKGJ1ZmZlciwgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCkpOwotKyAgICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5vcGFxdWUgPSBidWZmZXI7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0rICAvKiBjaGVjayB0aGF0IHRoZSB0aW1lc3RhbXBzIGdvIHVwd2FyZHMgKi8KLSsgIGlmIChmZm1wZWdkZWMtPmxhc3Rfb3V0ICE9IC0xICYmIGZmbXBlZ2RlYy0+bGFzdF9vdXQgPiBvdXRfcHRzKSB7Ci0rICAgIC8qIHRpbWVzdGFtcHMgZ28gYmFja3dhcmRzLCB0aGlzIG1lYW5zIGZyYW1lcyB3ZXJlIHJlb3JkZXJlZCBhbmQgd2UgbXVzdAotKyAgICAgKiBiZSBkZWFsaW5nIHdpdGggRFRTIGFzIHRoZSBidWZmZXIgdGltZXN0YW1wcyAqLwotKyAgICBpZiAoIWZmbXBlZ2RlYy0+cmVvcmRlcmVkX291dCkgewotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRldGVjdGVkIHJlb3JkZXJlZCBvdXQgdGltZXN0YW1wcyIpOwotKyAgICAgIGZmbXBlZ2RlYy0+cmVvcmRlcmVkX291dCA9IFRSVUU7Ci0rICAgIH0KLSsgICAgaWYgKGZmbXBlZ2RlYy0+cmVvcmRlcmVkX2luKSB7Ci0rICAgICAgLyogd2UgcmVzZXQgdGhlIGlucHV0IHJlb3JkZXJpbmcgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gcmVjb3ZlciBmcm9tIGFuCi0rICAgICAgICogb2NjYXNpb25hbGx5IHdyb25nIHJlb3JkZXJlZCBpbnB1dCB0aW1lc3RhbXAgKi8KLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJhc3N1bWluZyBEVFMgaW5wdXQgdGltZXN0YW1wcyIpOwotKyAgICAgIGZmbXBlZ2RlYy0+cmVvcmRlcmVkX2luID0gRkFMU0U7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChvdXRfcHRzID09IDAgJiYgb3V0X3B0cyA9PSBmZm1wZWdkZWMtPmxhc3Rfb3V0KSB7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJmZm1wZWcgcmV0dXJucyAwIHRpbWVzdGFtcHMsIGlnbm9yaW5nIik7Ci0rICAgIC8qIHNvbWUgY29kZWNzIG9ubHkgb3V0cHV0IDAgdGltZXN0YW1wcywgd2hlbiB0aGF0IGhhcHBlbnMsIG1ha2UgdXMgc2VsZWN0IGFuCi0rICAgICAqIG91dHB1dCB0aW1lc3RhbXAgYmFzZWQgb24gdGhlIGlucHV0IHRpbWVzdGFtcC4gV2UgZG8gdGhpcyBieSBtYWtpbmcgdGhlCi0rICAgICAqIGZmbXBlZyB0aW1lc3RhbXAgYW5kIHRoZSBpbnRlcnBvbGxhdGVkIG5leHQgdGltZXN0YW1wIGludmFsaWQuICovCi0rICAgIG91dF9wdHMgPSAtMTsKLSsgICAgZmZtcGVnZGVjLT5uZXh0X291dCA9IC0xOwotKyAgfSBlbHNlCi0rICAgIGZmbXBlZ2RlYy0+bGFzdF9vdXQgPSBvdXRfcHRzOwotKwotKyAgLyogd2UgYXNzdW1lIERUUyBhcyBpbnB1dCB0aW1lc3RhbXBzIHVubGVzcyB3ZSBzZWUgcmVvcmRlcmVkIGlucHV0Ci0rICAgKiB0aW1lc3RhbXBzICovCi0rICBpZiAoIWZmbXBlZ2RlYy0+cmVvcmRlcmVkX2luICYmIGZmbXBlZ2RlYy0+cmVvcmRlcmVkX291dCkgewotKyAgICAvKiBQVFMgYW5kIERUUyBhcmUgdGhlIHNhbWUgZm9yIGtleWZyYW1lcyAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5uZXh0X291dCAhPSAtMSkgewotKyAgICAgIC8qIGludGVycG9sYXRlIGFsbCB0aW1lc3RhbXBzIGV4Y2VwdCBmb3Iga2V5ZnJhbWVzLCBGSVhNRSwgdGhpcyBpcwotKyAgICAgICAqIHdyb25nIHdoZW4gUW9TIGlzIGFjdGl2ZS4gKi8KLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJpbnRlcnBvbGF0ZSB0aW1lc3RhbXBzIik7Ci0rICAgICAgb3V0X3B0cyA9IC0xOwotKyAgICAgIG91dF9vZmZzZXQgPSAtMTsKLSsgICAgfQotKyAgfQotKwotKyAgLyogZ2V0IGEgaGFuZGxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyICovCi0rICAqcmV0ID0gZ2V0X291dHB1dF9idWZmZXIgKGZmbXBlZ2RlYywgb3V0YnVmKTsKLSsgIGlmIChHX1VOTElLRUxZICgqcmV0ICE9IEdTVF9GTE9XX09LKSkKLSsgICAgZ290byBub19vdXRwdXQ7Ci0rCi0rICAvKgotKyAgICogVGltZXN0YW1wczoKLSsgICAqCi0rICAgKiAgMSkgQ29weSBwaWN0dXJlIHRpbWVzdGFtcCBpZiB2YWxpZAotKyAgICogIDIpIGVsc2UgaW50ZXJwb2xhdGUgZnJvbSBwcmV2aW91cyBvdXRwdXQgdGltZXN0YW1wCi0rICAgKiAgMykgZWxzZSBjb3B5IGlucHV0IHRpbWVzdGFtcAotKyAgICovCi0rICBvdXRfdGltZXN0YW1wID0gLTE7Ci0rICBpZiAob3V0X3B0cyAhPSAtMSkgewotKyAgICAvKiBHZXQgKGludGVycG9sYXRlZCkgdGltZXN0YW1wIGZyb20gRkZNUEVHICovCi0rICAgIG91dF90aW1lc3RhbXAgPSAoR3N0Q2xvY2tUaW1lKSBvdXRfcHRzOwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgdGltZXN0YW1wICUiIEdTVF9USU1FX0ZPUk1BVAotKyAgICAgICAgIiByZXR1cm5lZCBieSBmZm1wZWciLCBHU1RfVElNRV9BUkdTIChvdXRfdGltZXN0YW1wKSk7Ci0rICB9Ci0rICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChvdXRfdGltZXN0YW1wKSAmJiBmZm1wZWdkZWMtPm5leHRfb3V0ICE9IC0xKSB7Ci0rICAgIG91dF90aW1lc3RhbXAgPSBmZm1wZWdkZWMtPm5leHRfb3V0OwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgbmV4dCB0aW1lc3RhbXAgJSIgR1NUX1RJTUVfRk9STUFULAotKyAgICAgICAgR1NUX1RJTUVfQVJHUyAob3V0X3RpbWVzdGFtcCkpOwotKyAgfQotKyAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAob3V0X3RpbWVzdGFtcCkpIHsKLSsgICAgb3V0X3RpbWVzdGFtcCA9IGRlY19pbmZvLT50aW1lc3RhbXA7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1c2luZyBpbiB0aW1lc3RhbXAgJSIgR1NUX1RJTUVfRk9STUFULAotKyAgICAgICAgR1NUX1RJTUVfQVJHUyAob3V0X3RpbWVzdGFtcCkpOwotKyAgfQotKyAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKCpvdXRidWYpID0gb3V0X3RpbWVzdGFtcDsKLSsKLSsgIC8qCi0rICAgKiBPZmZzZXQ6Ci0rICAgKiAgMCkgVXNlIHN0b3JlZCBpbnB1dCBvZmZzZXQgKGZyb20gb3BhcXVlKQotKyAgICogIDEpIFVzZSB2YWx1ZSBjb252ZXJ0ZWQgZnJvbSB0aW1lc3RhbXAgaWYgdmFsaWQKLSsgICAqICAyKSBVc2UgaW5wdXQgb2Zmc2V0IGlmIHZhbGlkCi0rICAgKi8KLSsgIGlmIChvdXRfb2Zmc2V0ICE9IEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUpIHsKLSsgICAgLyogb3V0X29mZnNldCBhbHJlYWR5IGNvbnRhaW5zIHRoZSBvZmZzZXQgZnJvbSB0c19pbmZvICovCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBvZmZzZXQgcmV0dXJuZWQgYnkgZmZtcGVnIik7Ci0rICB9IGVsc2UgaWYgKG91dF90aW1lc3RhbXAgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgewotKyAgICBHc3RGb3JtYXQgb3V0X2ZtdCA9IEdTVF9GT1JNQVRfREVGQVVMVDsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIlVzaW5nIG9mZnNldCBjb252ZXJ0ZWQgZnJvbSB0aW1lc3RhbXAiKTsKLSsgICAgLyogRklYTUUsIHdlIHNob3VsZCByZWFsbHkgcmVtb3ZlIHRoaXMgYXMgaXQncyBub3QgbmljZSBhdCBhbGwgdG8gZG8KLSsgICAgICogdXBzdHJlYW0gcXVlcmllcyBmb3IgZWFjaCBmcmFtZSB0byBnZXQgdGhlIGZyYW1lIG9mZnNldC4gV2UgYWxzbyBjYW4ndAotKyAgICAgKiByZWFsbHkgcmVtb3ZlIHRoaXMgYmVjYXVzZSBpdCBpcyB0aGUgb25seSB3YXkgb2Ygc2V0dGluZyBmcmFtZSBvZmZzZXRzCi0rICAgICAqIG9uIG91dGdvaW5nIGJ1ZmZlcnMuIFdlIHNob3VsZCBoYXZlIG1ldGFkYXRhIHNvIHRoYXQgdGhlIHVwc3RyZWFtIHBlZXIKLSsgICAgICogY2FuIHNldCBhIGZyYW1lIG51bWJlciBvbiB0aGUgZW5jb2RlZCBkYXRhLiAqLwotKyAgICBnc3RfcGFkX3F1ZXJ5X3BlZXJfY29udmVydCAoZmZtcGVnZGVjLT5zaW5rcGFkLAotKyAgICAgICAgR1NUX0ZPUk1BVF9USU1FLCBvdXRfdGltZXN0YW1wLCAmb3V0X2ZtdCwgJm91dF9vZmZzZXQpOwotKyAgfSBlbHNlIGlmIChkZWNfaW5mby0+b2Zmc2V0ICE9IEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUpIHsKLSsgICAgLyogRklYTUUsIHRoZSBpbnB1dCBvZmZzZXQgaXMgaW5wdXQgbWVkaWEgc3BlY2lmaWMgYW5kIG1pZ2h0IG5vdAotKyAgICAgKiBiZSB0aGUgc2FtZSBmb3IgdGhlIG91dHB1dCBtZWRpYS4gKGJ5dGUgb2Zmc2V0IGFzIGlucHV0LCBmcmFtZSBudW1iZXIKLSsgICAgICogYXMgb3V0cHV0LCBmb3IgZXhhbXBsZSkgKi8KLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIGluX29mZnNldCAlIiBHX0dJTlQ2NF9GT1JNQVQsCi0rICAgICAgICBkZWNfaW5mby0+b2Zmc2V0KTsKLSsgICAgb3V0X29mZnNldCA9IGRlY19pbmZvLT5vZmZzZXQ7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAibm8gdmFsaWQgb2Zmc2V0IGZvdW5kIik7Ci0rICAgIG91dF9vZmZzZXQgPSBHU1RfQlVGRkVSX09GRlNFVF9OT05FOwotKyAgfQotKyAgR1NUX0JVRkZFUl9PRkZTRVQgKCpvdXRidWYpID0gb3V0X29mZnNldDsKLSsKLSsgIC8qCi0rICAgKiBEdXJhdGlvbjoKLSsgICAqCi0rICAgKiAgMSkgVXNlIHJlb3JkZXJlZCBpbnB1dCBkdXJhdGlvbiBpZiB2YWxpZAotKyAgICogIDIpIEVsc2UgdXNlIGlucHV0IGR1cmF0aW9uCi0rICAgKiAgMykgZWxzZSB1c2UgaW5wdXQgZnJhbWVyYXRlCi0rICAgKiAgNCkgZWxzZSB1c2UgZmZtcGVnIGZyYW1lcmF0ZQotKyAgICovCi0rICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKG91dF9kdXJhdGlvbikpIHsKLSsgICAgLyogV2UgaGF2ZSBhIHZhbGlkIChyZW9yZGVyZWQpIGR1cmF0aW9uICovCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBkdXJhdGlvbiByZXR1cm5lZCBieSBmZm1wZWciKTsKLSsgIH0gZWxzZSBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGRlY19pbmZvLT5kdXJhdGlvbikpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIGluX2R1cmF0aW9uIik7Ci0rICAgIG91dF9kdXJhdGlvbiA9IGRlY19pbmZvLT5kdXJhdGlvbjsKLSsgIH0gZWxzZSBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGZmbXBlZ2RlYy0+bGFzdF9kaWZmKSkgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgbGFzdC1kaWZmIik7Ci0rICAgIG91dF9kdXJhdGlvbiA9IGZmbXBlZ2RlYy0+bGFzdF9kaWZmOwotKyAgfSBlbHNlIHsKLSsgICAgLyogaWYgd2UgaGF2ZSBhbiBpbnB1dCBmcmFtZXJhdGUsIHVzZSB0aGF0ICovCi0rICAgIGlmIChmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiAhPSAtMSAmJgotKyAgICAgICAgKGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uICE9IDEwMDAgJiYKLSsgICAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfZCAhPSAxKSkgewotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1c2luZyBpbnB1dCBmcmFtZXJhdGUgZm9yIGR1cmF0aW9uIik7Ci0rICAgICAgb3V0X2R1cmF0aW9uID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoR1NUX1NFQ09ORCwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2QsIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAvKiBkb24ndCB0cnkgdG8gdXNlIHRoZSBkZWNvZGVyJ3MgZnJhbWVyYXRlIHdoZW4gaXQgc2VlbXMgYSBiaXQgYWJub3JtYWwsCi0rICAgICAgICogd2hpY2ggd2UgYXNzdW1lIHdoZW4gZGVuID49IDEwMDAuLi4gKi8KLSsgICAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT50aW1lX2Jhc2UubnVtICE9IDAgJiYKLSsgICAgICAgICAgKGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLmRlbiA+IDAgJiYKLSsgICAgICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLmRlbiA8IDEwMDApKSB7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgZGVjb2RlcidzIGZyYW1lcmF0ZSBmb3IgZHVyYXRpb24iKTsKLSsgICAgICAgIG91dF9kdXJhdGlvbiA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKEdTVF9TRUNPTkQsCi0rICAgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT50aW1lX2Jhc2UubnVtICoKLSsgICAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRpY2tzX3Blcl9mcmFtZSwKLSsgICAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5kZW4pOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAibm8gdmFsaWQgZHVyYXRpb24gZm91bmQiKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSsgIC8qIFRha2UgcmVwZWF0X3BpY3QgaW50byBhY2NvdW50ICovCi0rICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKG91dF9kdXJhdGlvbikpIHsKLSsgICAgb3V0X2R1cmF0aW9uICs9IG91dF9kdXJhdGlvbiAqIGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVwZWF0X3BpY3QgLyAyOwotKyAgfQotKyAgR1NUX0JVRkZFUl9EVVJBVElPTiAoKm91dGJ1ZikgPSBvdXRfZHVyYXRpb247Ci0rCi0rICBpZiAob3V0X3RpbWVzdGFtcCAhPSAtMSAmJiBvdXRfZHVyYXRpb24gIT0gLTEgJiYgb3V0X2R1cmF0aW9uICE9IDApCi0rICAgIGZmbXBlZ2RlYy0+bmV4dF9vdXQgPSBvdXRfdGltZXN0YW1wICsgb3V0X2R1cmF0aW9uOwotKyAgZWxzZQotKyAgICBmZm1wZWdkZWMtPm5leHRfb3V0ID0gLTE7Ci0rCi0rICAvKiBub3cgc2VlIGlmIHdlIG5lZWQgdG8gY2xpcCB0aGUgYnVmZmVyIGFnYWluc3QgdGhlIHNlZ21lbnQgYm91bmRhcmllcy4gKi8KLSsgIGlmIChHX1VOTElLRUxZICghY2xpcF92aWRlb19idWZmZXIgKGZmbXBlZ2RlYywgKm91dGJ1Ziwgb3V0X3RpbWVzdGFtcCwKLSsgICAgICAgICAgICAgIG91dF9kdXJhdGlvbikpKQotKyAgICBnb3RvIGNsaXBwZWQ7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5waWN0dXJlLT50b3BfZmllbGRfZmlyc3QpCi0rICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKCpvdXRidWYsIEdTVF9WSURFT19CVUZGRVJfVEZGKTsKLSsKLSsKLStiZWFjaDoKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJldHVybiBmbG93ICVkLCBvdXQgJXAsIGxlbiAlZCIsCi0rICAgICAgKnJldCwgKm91dGJ1ZiwgbGVuKTsKLSsgIHJldHVybiBsZW47Ci0rCi0rICAvKiBzcGVjaWFsIGNhc2VzICovCi0rbm9fb3V0cHV0OgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJubyBvdXRwdXQgYnVmZmVyIik7Ci0rICAgIGxlbiA9IC0xOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfQotK2NsaXBwZWQ6Ci0rICB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImJ1ZmZlciBjbGlwcGVkIik7Ci0rICAgIGdzdF9idWZmZXJfdW5yZWYgKCpvdXRidWYpOwotKyAgICAqb3V0YnVmID0gTlVMTDsKLSsgICAgZ290byBiZWFjaDsKLSsgIH0KLSt9Ci0rCi0rLyogcmV0dXJucyBUUlVFIGlmIGJ1ZmZlciBpcyB3aXRoaW4gc2VnbWVudCwgZWxzZSBGQUxTRS4KLSsgKiBpZiBCdWZmZXIgaXMgb24gc2VnbWVudCBib3JkZXIsIGl0J3MgdGltZXN0YW1wIGFuZCBkdXJhdGlvbiB3aWxsIGJlIGNsaXBwZWQgKi8KLStzdGF0aWMgZ2Jvb2xlYW4KLStjbGlwX2F1ZGlvX2J1ZmZlciAoR3N0RkZNcGVnRGVjICogZGVjLCBHc3RCdWZmZXIgKiBidWYsIEdzdENsb2NrVGltZSBpbl90cywKLSsgICAgR3N0Q2xvY2tUaW1lIGluX2R1cikKLSt7Ci0rICBHc3RDbG9ja1RpbWUgc3RvcDsKLSsgIGdpbnQ2NCBkaWZmLCBjdGltZSwgY3N0b3A7Ci0rICBnYm9vbGVhbiByZXMgPSBUUlVFOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGRlYywKLSsgICAgICAidGltZXN0YW1wOiUiIEdTVF9USU1FX0ZPUk1BVCAiLCBkdXJhdGlvbjolIiBHU1RfVElNRV9GT1JNQVQKLSsgICAgICAiLCBzaXplICV1IiwgR1NUX1RJTUVfQVJHUyAoaW5fdHMpLCBHU1RfVElNRV9BUkdTIChpbl9kdXIpLAotKyAgICAgIEdTVF9CVUZGRVJfU0laRSAoYnVmKSk7Ci0rCi0rICAvKiBjYW4ndCBjbGlwIHdpdGhvdXQgVElNRSBzZWdtZW50ICovCi0rICBpZiAoR19VTkxJS0VMWSAoZGVjLT5zZWdtZW50LmZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpKQotKyAgICBnb3RvIGJlYWNoOwotKwotKyAgLyogd2UgbmVlZCBhIHN0YXJ0IHRpbWUgKi8KLSsgIGlmIChHX1VOTElLRUxZICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGluX3RzKSkpCi0rICAgIGdvdG8gYmVhY2g7Ci0rCi0rICAvKiB0cnVzdCBkdXJhdGlvbiAqLwotKyAgc3RvcCA9IGluX3RzICsgaW5fZHVyOwotKwotKyAgcmVzID0gZ3N0X3NlZ21lbnRfY2xpcCAoJmRlYy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLCBpbl90cywgc3RvcCwgJmN0aW1lLAotKyAgICAgICZjc3RvcCk7Ci0rICBpZiAoR19VTkxJS0VMWSAoIXJlcykpCi0rICAgIGdvdG8gb3V0X29mX3NlZ21lbnQ7Ci0rCi0rICAvKiBzZWUgaWYgc29tZSBjbGlwcGluZyBoYXBwZW5lZCAqLwotKyAgaWYgKEdfVU5MSUtFTFkgKChkaWZmID0gY3RpbWUgLSBpbl90cykgPiAwKSkgewotKyAgICAvKiBicmluZyBjbGlwcGVkIHRpbWUgdG8gYnl0ZXMgKi8KLSsgICAgZGlmZiA9Ci0rICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChkaWZmLCBkZWMtPmZvcm1hdC5hdWRpby5zYW1wbGVyYXRlLAotKyAgICAgICAgR1NUX1NFQ09ORCkgKiAoZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGggKiBkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscyk7Ci0rCi0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImNsaXBwaW5nIHN0YXJ0IHRvICUiIEdTVF9USU1FX0ZPUk1BVCAiICUiCi0rICAgICAgICBHX0dJTlQ2NF9GT1JNQVQgIiBieXRlcyIsIEdTVF9USU1FX0FSR1MgKGN0aW1lKSwgZGlmZik7Ci0rCi0rICAgIEdTVF9CVUZGRVJfU0laRSAoYnVmKSAtPSBkaWZmOwotKyAgICBHU1RfQlVGRkVSX0RBVEEgKGJ1ZikgKz0gZGlmZjsKLSsgIH0KLSsgIGlmIChHX1VOTElLRUxZICgoZGlmZiA9IHN0b3AgLSBjc3RvcCkgPiAwKSkgewotKyAgICAvKiBicmluZyBjbGlwcGVkIHRpbWUgdG8gYnl0ZXMgKi8KLSsgICAgZGlmZiA9Ci0rICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChkaWZmLCBkZWMtPmZvcm1hdC5hdWRpby5zYW1wbGVyYXRlLAotKyAgICAgICAgR1NUX1NFQ09ORCkgKiAoZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGggKiBkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscyk7Ci0rCi0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImNsaXBwaW5nIHN0b3AgdG8gJSIgR1NUX1RJTUVfRk9STUFUICIgJSIKLSsgICAgICAgIEdfR0lOVDY0X0ZPUk1BVCAiIGJ5dGVzIiwgR1NUX1RJTUVfQVJHUyAoY3N0b3ApLCBkaWZmKTsKLSsKLSsgICAgR1NUX0JVRkZFUl9TSVpFIChidWYpIC09IGRpZmY7Ci0rICB9Ci0rICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA9IGN0aW1lOwotKyAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IGNzdG9wIC0gY3RpbWU7Ci0rCi0rYmVhY2g6Ci0rICBHU1RfTE9HX09CSkVDVCAoZGVjLCAiJXNkcm9wcGluZyIsIChyZXMgPyAibm90ICIgOiAiIikpOwotKyAgcmV0dXJuIHJlczsKLSsKLSsgIC8qIEVSUk9SUyAqLwotK291dF9vZl9zZWdtZW50OgotKyAgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZGVjLCAib3V0IG9mIHNlZ21lbnQiKTsKLSsgICAgZ290byBiZWFjaDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIGdpbnQKLStnc3RfZmZtcGVnZGVjX2F1ZGlvX2ZyYW1lIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsCi0rICAgIEFWQ29kZWMgKiBpbl9wbHVnaW4sIGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUsCi0rICAgIGNvbnN0IEdzdFRTSW5mbyAqIGRlY19pbmZvLCBHc3RCdWZmZXIgKiogb3V0YnVmLCBHc3RGbG93UmV0dXJuICogcmV0KQotK3sKLSsgIGdpbnQgbGVuID0gLTE7Ci0rICBnaW50IGhhdmVfZGF0YSA9IEFWQ09ERUNfTUFYX0FVRElPX0ZSQU1FX1NJWkU7Ci0rICBHc3RDbG9ja1RpbWUgb3V0X3RpbWVzdGFtcCwgb3V0X2R1cmF0aW9uOwotKyAgZ2ludDY0IG91dF9vZmZzZXQ7Ci0rICBBVlBhY2tldCBwYWNrZXQ7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgInNpemU6JWQsIG9mZnNldDolIiBHX0dJTlQ2NF9GT1JNQVQgIiwgdHM6JSIgR1NUX1RJTUVfRk9STUFUICIsIGR1cjolIgotKyAgICAgIEdTVF9USU1FX0ZPUk1BVCAiLCBmZm1wZWdkZWMtPm5leHRfb3V0OiUiIEdTVF9USU1FX0ZPUk1BVCwgc2l6ZSwKLSsgICAgICBkZWNfaW5mby0+b2Zmc2V0LCBHU1RfVElNRV9BUkdTIChkZWNfaW5mby0+dGltZXN0YW1wKSwKLSsgICAgICBHU1RfVElNRV9BUkdTIChkZWNfaW5mby0+ZHVyYXRpb24pLCBHU1RfVElNRV9BUkdTIChmZm1wZWdkZWMtPm5leHRfb3V0KSk7Ci0rCi0rICAqb3V0YnVmID0KLSsgICAgICBuZXdfYWxpZ25lZF9idWZmZXIgKEFWQ09ERUNfTUFYX0FVRElPX0ZSQU1FX1NJWkUsCi0rICAgICAgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCkpOwotKwotKyAgZ3N0X2F2cGFja2V0X2luaXQgKCZwYWNrZXQsIGRhdGEsIHNpemUpOwotKyAgbGVuID0gYXZjb2RlY19kZWNvZGVfYXVkaW8zIChmZm1wZWdkZWMtPmNvbnRleHQsCi0rICAgICAgKGludDE2X3QgKikgR1NUX0JVRkZFUl9EQVRBICgqb3V0YnVmKSwgJmhhdmVfZGF0YSwgJnBhY2tldCk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgIkRlY29kZSBhdWRpbzogbGVuPSVkLCBoYXZlX2RhdGE9JWQiLCBsZW4sIGhhdmVfZGF0YSk7Ci0rCi0rICBpZiAobGVuID49IDAgJiYgaGF2ZV9kYXRhID4gMCkgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJDcmVhdGluZyBvdXRwdXQgYnVmZmVyIik7Ci0rICAgIGlmICghZ3N0X2ZmbXBlZ2RlY19uZWdvdGlhdGUgKGZmbXBlZ2RlYywgRkFMU0UpKSB7Ci0rICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoKm91dGJ1Zik7Ci0rICAgICAgKm91dGJ1ZiA9IE5VTEw7Ci0rICAgICAgbGVuID0gLTE7Ci0rICAgICAgZ290byBiZWFjaDsKLSsgICAgfQotKwotKyAgICAvKiBCdWZmZXIgc2l6ZSAqLwotKyAgICBHU1RfQlVGRkVSX1NJWkUgKCpvdXRidWYpID0gaGF2ZV9kYXRhOwotKwotKyAgICAvKgotKyAgICAgKiBUaW1lc3RhbXBzOgotKyAgICAgKgotKyAgICAgKiAgMSkgQ29weSBpbnB1dCB0aW1lc3RhbXAgaWYgdmFsaWQKLSsgICAgICogIDIpIGVsc2UgaW50ZXJwb2xhdGUgZnJvbSBwcmV2aW91cyBpbnB1dCB0aW1lc3RhbXAKLSsgICAgICovCi0rICAgIC8qIGFsd2F5cyB0YWtlIHRpbWVzdGFtcHMgZnJvbSB0aGUgaW5wdXQgYnVmZmVyIGlmIGFueSAqLwotKyAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGRlY19pbmZvLT50aW1lc3RhbXApKSB7Ci0rICAgICAgb3V0X3RpbWVzdGFtcCA9IGRlY19pbmZvLT50aW1lc3RhbXA7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgb3V0X3RpbWVzdGFtcCA9IGZmbXBlZ2RlYy0+bmV4dF9vdXQ7Ci0rICAgIH0KLSsKLSsgICAgLyoKLSsgICAgICogRHVyYXRpb246Ci0rICAgICAqCi0rICAgICAqICAxKSBjYWxjdWxhdGUgYmFzZWQgb24gbnVtYmVyIG9mIHNhbXBsZXMKLSsgICAgICovCi0rICAgIG91dF9kdXJhdGlvbiA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoaGF2ZV9kYXRhLCBHU1RfU0VDT05ELAotKyAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uZGVwdGggKiBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscyAqCi0rICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5zYW1wbGVyYXRlKTsKLSsKLSsgICAgLyogb2Zmc2V0OgotKyAgICAgKgotKyAgICAgKiBKdXN0IGNvcHkKLSsgICAgICovCi0rICAgIG91dF9vZmZzZXQgPSBkZWNfaW5mby0+b2Zmc2V0OwotKwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAiQnVmZmVyIGNyZWF0ZWQuIFNpemU6JWQgLCB0aW1lc3RhbXA6JSIgR1NUX1RJTUVfRk9STUFUICIgLCBkdXJhdGlvbjolIgotKyAgICAgICAgR1NUX1RJTUVfRk9STUFULCBoYXZlX2RhdGEsCi0rICAgICAgICBHU1RfVElNRV9BUkdTIChvdXRfdGltZXN0YW1wKSwgR1NUX1RJTUVfQVJHUyAob3V0X2R1cmF0aW9uKSk7Ci0rCi0rICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QICgqb3V0YnVmKSA9IG91dF90aW1lc3RhbXA7Ci0rICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKCpvdXRidWYpID0gb3V0X2R1cmF0aW9uOwotKyAgICBHU1RfQlVGRkVSX09GRlNFVCAoKm91dGJ1ZikgPSBvdXRfb2Zmc2V0OwotKyAgICBnc3RfYnVmZmVyX3NldF9jYXBzICgqb3V0YnVmLCBHU1RfUEFEX0NBUFMgKGZmbXBlZ2RlYy0+c3JjcGFkKSk7Ci0rCi0rICAgIC8qIHRoZSBuZXh0IHRpbWVzdGFtcCB3ZSdsbCB1c2Ugd2hlbiBpbnRlcnBvbGF0aW5nICovCi0rICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAob3V0X3RpbWVzdGFtcCkpCi0rICAgICAgZmZtcGVnZGVjLT5uZXh0X291dCA9IG91dF90aW1lc3RhbXAgKyBvdXRfZHVyYXRpb247Ci0rCi0rICAgIC8qIG5vdyBzZWUgaWYgd2UgbmVlZCB0byBjbGlwIHRoZSBidWZmZXIgYWdhaW5zdCB0aGUgc2VnbWVudCBib3VuZGFyaWVzLiAqLwotKyAgICBpZiAoR19VTkxJS0VMWSAoIWNsaXBfYXVkaW9fYnVmZmVyIChmZm1wZWdkZWMsICpvdXRidWYsIG91dF90aW1lc3RhbXAsCi0rICAgICAgICAgICAgICAgIG91dF9kdXJhdGlvbikpKQotKyAgICAgIGdvdG8gY2xpcHBlZDsKLSsKLSsgIH0gZWxzZSB7Ci0rICAgIGdzdF9idWZmZXJfdW5yZWYgKCpvdXRidWYpOwotKyAgICAqb3V0YnVmID0gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIElmIHdlIGRvbid0IGVycm9yIG91dCBhZnRlciB0aGUgZmlyc3QgZmFpbGVkIHJlYWQgd2l0aCB0aGUgQUFDIGRlY29kZXIsCi0rICAgKiB3ZSBtdXN0ICpub3QqIGNhcnJ5IG9uIHB1c2hpbmcgZGF0YSwgZWxzZSB3ZSdsbCBjYXVzZSBzZWdmYXVsdHMuLi4gKi8KLSsgIGlmIChsZW4gPT0gLTEgJiYgKGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfQUFDCi0rICAgICAgICAgIHx8IGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfQUFDX0xBVE0pKSB7Ci0rICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdkZWMsIFNUUkVBTSwgREVDT0RFLCAoTlVMTCksCi0rICAgICAgICAoIkRlY29kaW5nIG9mIEFBQyBzdHJlYW0gYnkgRkZNUEVHIGZhaWxlZC4iKSk7Ci0rICAgICpyZXQgPSBHU1RfRkxPV19FUlJPUjsKLSsgIH0KLSsKLStiZWFjaDoKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJldHVybiBmbG93ICVkLCBvdXQgJXAsIGxlbiAlZCIsCi0rICAgICAgKnJldCwgKm91dGJ1ZiwgbGVuKTsKLSsgIHJldHVybiBsZW47Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStjbGlwcGVkOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJidWZmZXIgY2xpcHBlZCIpOwotKyAgICBnc3RfYnVmZmVyX3VucmVmICgqb3V0YnVmKTsKLSsgICAgKm91dGJ1ZiA9IE5VTEw7Ci0rICAgIGdvdG8gYmVhY2g7Ci0rICB9Ci0rfQotKwotKy8qIGdzdF9mZm1wZWdkZWNfZnJhbWU6Ci0rICogZmZtcGVnZGVjOgotKyAqIGRhdGE6IHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gZGVjb2RlCi0rICogc2l6ZTogc2l6ZSBvZiBkYXRhIGluIGJ5dGVzCi0rICogZ290X2RhdGE6IDAgaWYgbm8gZGF0YSB3YXMgZGVjb2RlZCwgIT0gMCBvdGhlcndpc2UuCi0rICogaW5fdGltZTogdGltZXN0YW1wIG9mIGRhdGEKLSsgKiBpbl9kdXJhdGlvbjogZHVyYXRpb24gb2YgZGF0YQotKyAqIHJldDogR3N0Rmxvd1JldHVybiB0byByZXR1cm4gaW4gdGhlIGNoYWluIGZ1bmN0aW9uCi0rICoKLSsgKiBEZWNvZGUgdGhlIGdpdmVuIGZyYW1lIGFuZCBwdXNoZXMgaXQgZG93bnN0cmVhbS4KLSsgKgotKyAqIFJldHVybnM6IE51bWJlciBvZiBieXRlcyB1c2VkIGluIGRlY29kaW5nLCAtMSBvbiBlcnJvci9mYWlsdXJlLgotKyAqLwotKwotK3N0YXRpYyBnaW50Ci0rZ3N0X2ZmbXBlZ2RlY19mcmFtZSAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLAotKyAgICBndWludDggKiBkYXRhLCBndWludCBzaXplLCBnaW50ICogZ290X2RhdGEsIGNvbnN0IEdzdFRTSW5mbyAqIGRlY19pbmZvLAotKyAgICBHc3RGbG93UmV0dXJuICogcmV0KQotK3sKLSsgIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0rICBHc3RCdWZmZXIgKm91dGJ1ZiA9IE5VTEw7Ci0rICBnaW50IGhhdmVfZGF0YSA9IDAsIGxlbiA9IDA7Ci0rCi0rICBpZiAoR19VTkxJS0VMWSAoZmZtcGVnZGVjLT5jb250ZXh0LT5jb2RlYyA9PSBOVUxMKSkKLSsgICAgZ290byBub19jb2RlYzsKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJkYXRhOiVwLCBzaXplOiVkLCBpZDolZCIsIGRhdGEsIHNpemUsCi0rICAgICAgZGVjX2luZm8tPmlkeCk7Ci0rCi0rICAqcmV0ID0gR1NUX0ZMT1dfT0s7Ci0rICBmZm1wZWdkZWMtPmNvbnRleHQtPmZyYW1lX251bWJlcisrOwotKwotKyAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotKwotKyAgc3dpdGNoIChvY2xhc3MtPmluX3BsdWdpbi0+dHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICBsZW4gPQotKyAgICAgICAgICBnc3RfZmZtcGVnZGVjX3ZpZGVvX2ZyYW1lIChmZm1wZWdkZWMsIGRhdGEsIHNpemUsIGRlY19pbmZvLCAmb3V0YnVmLAotKyAgICAgICAgICByZXQpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgICBsZW4gPQotKyAgICAgICAgICBnc3RfZmZtcGVnZGVjX2F1ZGlvX2ZyYW1lIChmZm1wZWdkZWMsIG9jbGFzcy0+aW5fcGx1Z2luLCBkYXRhLCBzaXplLAotKyAgICAgICAgICBkZWNfaW5mbywgJm91dGJ1ZiwgcmV0KTsKLSsKLSsgICAgICAvKiBpZiB3ZSBkaWQgbm90IGdldCBhbiBvdXRwdXQgYnVmZmVyIGFuZCB3ZSBoYXZlIGEgcGVuZGluZyBkaXNjb250LCBkb24ndAotKyAgICAgICAqIGNsZWFyIHRoZSBpbnB1dCB0aW1lc3RhbXBzLCB3ZSB3aWxsIHB1dCB0aGVtIG9uIHRoZSBuZXh0IGJ1ZmZlciBiZWNhdXNlCi0rICAgICAgICogZWxzZSB3ZSBtaWdodCBjcmVhdGUgdGhlIGZpcnN0IGJ1ZmZlciB3aXRoIGEgdmVyeSBiaWcgdGltZXN0YW1wIGdhcC4gKi8KLSsgICAgICBpZiAob3V0YnVmID09IE5VTEwgJiYgZmZtcGVnZGVjLT5kaXNjb250KSB7Ci0rICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJubyBidWZmZXIgYnV0IGtlZXBpbmcgdGltZXN0YW1wIik7Ci0rICAgICAgICBmZm1wZWdkZWMtPmNsZWFyX3RzID0gRkFMU0U7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGZmbXBlZ2RlYywgIkFza2VkIHRvIGRlY29kZSBub24tYXVkaW8vdmlkZW8gZnJhbWUgISIpOwotKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgaWYgKG91dGJ1ZikKLSsgICAgaGF2ZV9kYXRhID0gMTsKLSsKLSsgIGlmIChsZW4gPCAwIHx8IGhhdmVfZGF0YSA8IDApIHsKLSsgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAiZmZkZWNfJXM6IGRlY29kaW5nIGVycm9yIChsZW46ICVkLCBoYXZlX2RhdGE6ICVkKSIsCi0rICAgICAgICBvY2xhc3MtPmluX3BsdWdpbi0+bmFtZSwgbGVuLCBoYXZlX2RhdGEpOwotKyAgICAqZ290X2RhdGEgPSAwOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfSBlbHNlIGlmIChsZW4gPT0gMCAmJiBoYXZlX2RhdGEgPT0gMCkgewotKyAgICAqZ290X2RhdGEgPSAwOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfSBlbHNlIHsKLSsgICAgLyogdGhpcyBpcyB3aGVyZSBJIGxvc3QgbXkgbGFzdCBjbHVlIG9uIGZmbXBlZy4uLiAqLwotKyAgICAqZ290X2RhdGEgPSAxOwotKyAgfQotKwotKyAgaWYgKG91dGJ1ZikgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIkRlY29kZWQgZGF0YSwgbm93IHB1c2hpbmcgYnVmZmVyICVwIHdpdGggb2Zmc2V0ICUiIEdfR0lOVDY0X0ZPUk1BVAotKyAgICAgICAgIiwgdGltZXN0YW1wICUiIEdTVF9USU1FX0ZPUk1BVCAiIGFuZCBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQsCi0rICAgICAgICBvdXRidWYsIEdTVF9CVUZGRVJfT0ZGU0VUIChvdXRidWYpLAotKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKG91dGJ1ZikpLAotKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVVJBVElPTiAob3V0YnVmKSkpOwotKwotKyAgICAvKiBtYXJrIHBlbmRpbmcgZGlzY29udCAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5kaXNjb250KSB7Ci0rICAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7Ci0rICAgICAgZmZtcGVnZGVjLT5kaXNjb250ID0gRkFMU0U7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+c2VnbWVudC5yYXRlID4gMC4wKSB7Ci0rICAgICAgLyogYW5kIG9mZiB3ZSBnbyAqLwotKyAgICAgICpyZXQgPSBnc3RfcGFkX3B1c2ggKGZmbXBlZ2RlYy0+c3JjcGFkLCBvdXRidWYpOwotKyAgICB9IGVsc2UgewotKyAgICAgIC8qIHJldmVyc2UgcGxheWJhY2ssIHF1ZXVlIGZyYW1lIHRpbGwgbGF0ZXIgd2hlbiB3ZSBnZXQgYSBkaXNjb250LiAqLwotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInF1ZXVlZCBmcmFtZSIpOwotKyAgICAgIGZmbXBlZ2RlYy0+cXVldWVkID0gZ19saXN0X3ByZXBlbmQgKGZmbXBlZ2RlYy0+cXVldWVkLCBvdXRidWYpOwotKyAgICAgICpyZXQgPSBHU1RfRkxPV19PSzsKLSsgICAgfQotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiV2UgZGlkbid0IGdldCBhIGRlY29kZWQgYnVmZmVyIik7Ci0rICB9Ci0rCi0rYmVhY2g6Ci0rICByZXR1cm4gbGVuOwotKwotKyAgLyogRVJST1JTICovCi0rbm9fY29kZWM6Ci0rICB7Ci0rICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGZmbXBlZ2RlYywgIm5vIGNvZGVjIGNvbnRleHQiKTsKLSsgICAgcmV0dXJuIC0xOwotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfZHJhaW4gKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLSt7Ci0rICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotKwotKyAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotKwotKyAgaWYgKG9jbGFzcy0+aW5fcGx1Z2luLT5jYXBhYmlsaXRpZXMgJiBDT0RFQ19DQVBfREVMQVkpIHsKLSsgICAgZ2ludCBoYXZlX2RhdGEsIGxlbiwgdHJ5ID0gMDsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICJjb2RlYyBoYXMgZGVsYXkgY2FwYWJpbGl0aWVzLCBjYWxsaW5nIHVudGlsIGZmbXBlZyBoYXMgZHJhaW5lZCBldmVyeXRoaW5nIik7Ci0rCi0rICAgIGRvIHsKLSsgICAgICBHc3RGbG93UmV0dXJuIHJldDsKLSsKLSsgICAgICBsZW4gPQotKyAgICAgICAgICBnc3RfZmZtcGVnZGVjX2ZyYW1lIChmZm1wZWdkZWMsIE5VTEwsIDAsICZoYXZlX2RhdGEsICZ0c19pbmZvX25vbmUsCi0rICAgICAgICAgICZyZXQpOwotKyAgICAgIGlmIChsZW4gPCAwIHx8IGhhdmVfZGF0YSA9PSAwKQotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0gd2hpbGUgKHRyeSsrIDwgMTApOwotKyAgfQotKyAgaWYgKGZmbXBlZ2RlYy0+c2VnbWVudC5yYXRlIDwgMC4wKSB7Ci0rICAgIC8qIGlmIHdlIGhhdmUgc29tZSBxdWV1ZWQgZnJhbWVzIGZvciByZXZlcnNlIHBsYXliYWNrLCBmbHVzaCB0aGVtIG5vdyAqLwotKyAgICBmbHVzaF9xdWV1ZWQgKGZmbXBlZ2RlYyk7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19mbHVzaF9wY2FjaGUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLSt7Ci0rICBpZiAoZmZtcGVnZGVjLT5wY3R4KSB7Ci0rICAgIGdpbnQgc2l6ZSwgYnNpemU7Ci0rICAgIGd1aW50OCAqZGF0YTsKLSsgICAgZ3VpbnQ4IGJkYXRhW0ZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkVdOwotKwotKyAgICBic2l6ZSA9IEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkU7Ci0rICAgIG1lbXNldCAoYmRhdGEsIDAsIGJzaXplKTsKLSsKLSsgICAgLyogcGFyc2Ugc29tZSBkdW1teSBkYXRhIHRvIHdvcmsgYXJvdW5kIHNvbWUgZmZtcGVnIHdlaXJkbmVzcyB3aGVyZSBpdCBrZWVwcwotKyAgICAgKiB0aGUgcHJldmlvdXMgcHRzIGFyb3VuZCAqLwotKyAgICBhdl9wYXJzZXJfcGFyc2UyIChmZm1wZWdkZWMtPnBjdHgsIGZmbXBlZ2RlYy0+Y29udGV4dCwKLSsgICAgICAgICZkYXRhLCAmc2l6ZSwgYmRhdGEsIGJzaXplLCAtMSwgLTEsIC0xKTsKLSsgICAgZmZtcGVnZGVjLT5wY3R4LT5wdHMgPSAtMTsKLSsgICAgZmZtcGVnZGVjLT5wY3R4LT5kdHMgPSAtMTsKLSsgIH0KLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBjYWNoZSkgewotKyAgICBnc3RfYnVmZmVyX3VucmVmIChmZm1wZWdkZWMtPnBjYWNoZSk7Ci0rICAgIGZmbXBlZ2RlYy0+cGNhY2hlID0gTlVMTDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICogZXZlbnQpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLSsKLSsgIGZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpOwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiSGFuZGxpbmcgJXMgZXZlbnQiLAotKyAgICAgIEdTVF9FVkVOVF9UWVBFX05BTUUgKGV2ZW50KSk7Ci0rCi0rICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSsgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgotKyAgICB7Ci0rICAgICAgZ3N0X2ZmbXBlZ2RlY19kcmFpbiAoZmZtcGVnZGVjKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotKyAgICB7Ci0rICAgICAgaWYgKGZmbXBlZ2RlYy0+b3BlbmVkKSB7Ci0rICAgICAgICBhdmNvZGVjX2ZsdXNoX2J1ZmZlcnMgKGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0rICAgICAgfQotKyAgICAgIGdzdF9mZm1wZWdkZWNfcmVzZXRfdHMgKGZmbXBlZ2RlYyk7Ci0rICAgICAgZ3N0X2ZmbXBlZ2RlY19yZXNldF9xb3MgKGZmbXBlZ2RlYyk7Ci0rICAgICAgZ3N0X2ZmbXBlZ2RlY19mbHVzaF9wY2FjaGUgKGZmbXBlZ2RlYyk7Ci0rICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJmZmbXBlZ2RlYy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKLSsgICAgICBjbGVhcl9xdWV1ZWQgKGZmbXBlZ2RlYyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBHU1RfRVZFTlRfTkVXU0VHTUVOVDoKLSsgICAgewotKyAgICAgIGdib29sZWFuIHVwZGF0ZTsKLSsgICAgICBHc3RGb3JtYXQgZm10OwotKyAgICAgIGdpbnQ2NCBzdGFydCwgc3RvcCwgdGltZTsKLSsgICAgICBnZG91YmxlIHJhdGUsIGFyYXRlOwotKwotKyAgICAgIGdzdF9ldmVudF9wYXJzZV9uZXdfc2VnbWVudF9mdWxsIChldmVudCwgJnVwZGF0ZSwgJnJhdGUsICZhcmF0ZSwgJmZtdCwKLSsgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnRpbWUpOwotKwotKyAgICAgIHN3aXRjaCAoZm10KSB7Ci0rICAgICAgICBjYXNlIEdTVF9GT1JNQVRfVElNRToKLSsgICAgICAgICAgLyogZmluZSwgb3VyIG5hdGl2ZSBzZWdtZW50IGZvcm1hdCAqLwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR1NUX0ZPUk1BVF9CWVRFUzoKLSsgICAgICAgIHsKLSsgICAgICAgICAgZ2ludCBiaXRfcmF0ZTsKLSsKLSsgICAgICAgICAgYml0X3JhdGUgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmJpdF9yYXRlOwotKwotKyAgICAgICAgICAvKiBjb252ZXJ0IHRvIHRpbWUgb3IgZmFpbCAqLwotKyAgICAgICAgICBpZiAoIWJpdF9yYXRlKQotKyAgICAgICAgICAgIGdvdG8gbm9fYml0cmF0ZTsKLSsKLSsgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiYml0cmF0ZTogJWQiLCBiaXRfcmF0ZSk7Ci0rCi0rICAgICAgICAgIC8qIGNvbnZlcnQgdmFsdWVzIHRvIFRJTUUgKi8KLSsgICAgICAgICAgaWYgKHN0YXJ0ICE9IC0xKQotKyAgICAgICAgICAgIHN0YXJ0ID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoc3RhcnQsIEdTVF9TRUNPTkQsIGJpdF9yYXRlKTsKLSsgICAgICAgICAgaWYgKHN0b3AgIT0gLTEpCi0rICAgICAgICAgICAgc3RvcCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHN0b3AsIEdTVF9TRUNPTkQsIGJpdF9yYXRlKTsKLSsgICAgICAgICAgaWYgKHRpbWUgIT0gLTEpCi0rICAgICAgICAgICAgdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHRpbWUsIEdTVF9TRUNPTkQsIGJpdF9yYXRlKTsKLSsKLSsgICAgICAgICAgLyogdW5yZWYgb2xkIGV2ZW50ICovCi0rICAgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotKwotKyAgICAgICAgICAvKiBjcmVhdGUgbmV3IGNvbnZlcnRlZCB0aW1lIHNlZ21lbnQgKi8KLSsgICAgICAgICAgZm10ID0gR1NUX0ZPUk1BVF9USU1FOwotKyAgICAgICAgICAvKiBGSVhNRSwgYml0cmF0ZSBpcyBub3QgZ29vZCBlbm91Z2ggdG9vIGZpbmQgYSBnb29kIHN0b3AsIGxldCdzCi0rICAgICAgICAgICAqIGhvcGUgc3RhcnQgYW5kIHRpbWUgd2VyZSAwLi4uIG1laC4gKi8KLSsgICAgICAgICAgc3RvcCA9IC0xOwotKyAgICAgICAgICBldmVudCA9IGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQgKHVwZGF0ZSwgcmF0ZSwgZm10LAotKyAgICAgICAgICAgICAgc3RhcnQsIHN0b3AsIHRpbWUpOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIC8qIGludmFsaWQgZm9ybWF0ICovCi0rICAgICAgICAgIGdvdG8gaW52YWxpZF9mb3JtYXQ7Ci0rICAgICAgfQotKwotKyAgICAgIC8qIGRyYWluIHBlbmRpbmcgZnJhbWVzIGJlZm9yZSB0cnlpbmcgdG8gdXNlIHRoZSBuZXcgc2VnbWVudCwgcXVldWVkCi0rICAgICAgICogYnVmZmVycyBiZWxvbmdlZCB0byB0aGUgcHJldmlvdXMgc2VnbWVudC4gKi8KLSsgICAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5jb2RlYykKLSsgICAgICAgIGdzdF9mZm1wZWdkZWNfZHJhaW4gKGZmbXBlZ2RlYyk7Ci0rCi0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiTkVXU0VHTUVOVCBpbiB0aW1lIHN0YXJ0ICUiIEdTVF9USU1FX0ZPUk1BVCAiIC0tIHN0b3AgJSIKLSsgICAgICAgICAgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChzdGFydCksIEdTVF9USU1FX0FSR1MgKHN0b3ApKTsKLSsKLSsgICAgICAvKiBhbmQgc3RvcmUgdGhlIHZhbHVlcyAqLwotKyAgICAgIGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50X2Z1bGwgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIHVwZGF0ZSwKLSsgICAgICAgICAgcmF0ZSwgYXJhdGUsIGZtdCwgc3RhcnQsIHN0b3AsIHRpbWUpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiBhbmQgcHVzaCBzZWdtZW50IGRvd25zdHJlYW0gKi8KLSsgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoZmZtcGVnZGVjLT5zcmNwYWQsIGV2ZW50KTsKLSsKLStkb25lOgotKyAgZ3N0X29iamVjdF91bnJlZiAoZmZtcGVnZGVjKTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStub19iaXRyYXRlOgotKyAgewotKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZmbXBlZ2RlYywgIm5vIGJpdHJhdGUgdG8gY29udmVydCBCWVRFUyB0byBUSU1FIik7Ci0rICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotKyAgICBnb3RvIGRvbmU7Ci0rICB9Ci0raW52YWxpZF9mb3JtYXQ6Ci0rICB7Ci0rICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmZtcGVnZGVjLCAidW5rbm93biBmb3JtYXQgcmVjZWl2ZWQgaW4gTkVXU0VHTUVOVCIpOwotKyAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSsgICAgZ290byBkb25lOwotKyAgfQotK30KLSsKLStzdGF0aWMgR3N0Rmxvd1JldHVybgotK2dzdF9mZm1wZWdkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0QnVmZmVyICogaW5idWYpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotKyAgZ3VpbnQ4ICpkYXRhLCAqYmRhdGE7Ci0rICBnaW50IHNpemUsIGJzaXplLCBsZW4sIGhhdmVfZGF0YTsKLSsgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0rICBHc3RDbG9ja1RpbWUgaW5fdGltZXN0YW1wOwotKyAgR3N0Q2xvY2tUaW1lIGluX2R1cmF0aW9uOwotKyAgZ2Jvb2xlYW4gZGlzY29udDsKLSsgIGdpbnQ2NCBpbl9vZmZzZXQ7Ci0rICBjb25zdCBHc3RUU0luZm8gKmluX2luZm87Ci0rICBjb25zdCBHc3RUU0luZm8gKmRlY19pbmZvOwotKwotKyAgZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSAoR1NUX1BBRF9QQVJFTlQgKHBhZCkpOwotKwotKyAgaWYgKEdfVU5MSUtFTFkgKCFmZm1wZWdkZWMtPm9wZW5lZCkpCi0rICAgIGdvdG8gbm90X25lZ290aWF0ZWQ7Ci0rCi0rICBkaXNjb250ID0gR1NUX0JVRkZFUl9JU19ESVNDT05UIChpbmJ1Zik7Ci0rCi0rICAvKiBUaGUgZGlzY29udCBmbGFncyBtYXJrcyBhIGJ1ZmZlciB0aGF0IGlzIG5vdCBjb250aW51b3VzIHdpdGggdGhlIHByZXZpb3VzCi0rICAgKiBidWZmZXIuIFRoaXMgbWVhbnMgd2UgbmVlZCB0byBjbGVhciB3aGF0ZXZlciBkYXRhIHdlIGN1cnJlbnRseSBoYXZlLiBXZQotKyAgICogY3VycmVudGx5IGFsc28gd2FpdCBmb3IgYSBuZXcga2V5ZnJhbWUsIHdoaWNoIG1pZ2h0IGJlIHN1Ym9wdGltYWwgaW4gdGhlCi0rICAgKiBjYXNlIG9mIGEgbmV0d29yayBlcnJvciwgYmV0dGVyIHNob3cgdGhlIGVycm9ycyB0aGFuIHRvIGRyb3AgYWxsIGRhdGEuLiAqLwotKyAgaWYgKEdfVU5MSUtFTFkgKGRpc2NvbnQpKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJlY2VpdmVkIERJU0NPTlQiKTsKLSsgICAgLyogZHJhaW4gd2hhdCB3ZSBoYXZlIHF1ZXVlZCAqLwotKyAgICBnc3RfZmZtcGVnZGVjX2RyYWluIChmZm1wZWdkZWMpOwotKyAgICBnc3RfZmZtcGVnZGVjX2ZsdXNoX3BjYWNoZSAoZmZtcGVnZGVjKTsKLSsgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzIChmZm1wZWdkZWMtPmNvbnRleHQpOwotKyAgICBmZm1wZWdkZWMtPmRpc2NvbnQgPSBUUlVFOwotKyAgICBnc3RfZmZtcGVnZGVjX3Jlc2V0X3RzIChmZm1wZWdkZWMpOwotKyAgfQotKyAgLyogYnkgZGVmYXVsdCB3ZSBjbGVhciB0aGUgaW5wdXQgdGltZXN0YW1wIGFmdGVyIGRlY29kaW5nIGVhY2ggZnJhbWUgc28gdGhhdAotKyAgICogaW50ZXJwb2xsYXRpb24gY2FuIHdvcmsuICovCi0rICBmZm1wZWdkZWMtPmNsZWFyX3RzID0gVFJVRTsKLSsKLSsgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsKLSsgIC8qIHBhcnNlIGNhY2hlIGpvaW5pbmcuIElmIHRoZXJlIGlzIGNhY2hlZCBkYXRhICovCi0rICBpZiAoZmZtcGVnZGVjLT5wY2FjaGUpIHsKLSsgICAgLyogam9pbiB3aXRoIHByZXZpb3VzIGRhdGEgKi8KLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImpvaW4gcGFyc2UgY2FjaGUiKTsKLSsgICAgaW5idWYgPSBnc3RfYnVmZmVyX2pvaW4gKGZmbXBlZ2RlYy0+cGNhY2hlLCBpbmJ1Zik7Ci0rICAgIC8qIG5vIG1vcmUgY2FjaGVkIGRhdGEsIHdlIGFzc3VtZSB3ZSBjYW4gY29uc3VtZSB0aGUgY29tcGxldGUgY2FjaGUgKi8KLSsgICAgZmZtcGVnZGVjLT5wY2FjaGUgPSBOVUxMOwotKyAgfQotKwotKyAgaW5fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmKTsKLSsgIGluX2R1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoaW5idWYpOwotKyAgaW5fb2Zmc2V0ID0gR1NUX0JVRkZFUl9PRkZTRVQgKGluYnVmKTsKLSsKLSsgIC8qIGdldCBoYW5kbGUgdG8gdGltZXN0YW1wIGluZm8sIHdlIGNhbiBwYXNzIHRoaXMgYXJvdW5kIHRvIGZmbXBlZyAqLwotKyAgaW5faW5mbyA9IGdzdF90c19pbmZvX3N0b3JlIChmZm1wZWdkZWMsIGluX3RpbWVzdGFtcCwgaW5fZHVyYXRpb24sIGluX29mZnNldCk7Ci0rCi0rICBpZiAoaW5fdGltZXN0YW1wICE9IC0xKSB7Ci0rICAgIC8qIGNoZWNrIGZvciBpbmNyZWFzaW5nIHRpbWVzdGFtcHMgaWYgdGhleSBhcmUganVtcGluZyBiYWNrd2FyZHMsIHdlCi0rICAgICAqIHByb2JhYmx5IGFyZSBkZWFsaW5nIHdpdGggUFRTIGFzIHRpbWVzdGFtcHMgKi8KLSsgICAgaWYgKCFmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiAmJiBmZm1wZWdkZWMtPmxhc3RfaW4gIT0gLTEpIHsKLSsgICAgICBpZiAoaW5fdGltZXN0YW1wIDwgZmZtcGVnZGVjLT5sYXN0X2luKSB7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZGV0ZWN0ZWQgcmVvcmRlcmVkIGlucHV0IHRpbWVzdGFtcHMiKTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+cmVvcmRlcmVkX2luID0gVFJVRTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+bGFzdF9kaWZmID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgICAgICB9IGVsc2UgaWYgKGluX3RpbWVzdGFtcCA+IGZmbXBlZ2RlYy0+bGFzdF9pbikgewotKyAgICAgICAgR3N0Q2xvY2tUaW1lIGRpZmY7Ci0rICAgICAgICAvKiBrZWVwIHRyYWNrIG9mIHRpbWVzdGFtcCBkaWZmIHRvIGVzdGltYXRlIGR1cmF0aW9uICovCi0rICAgICAgICBkaWZmID0gaW5fdGltZXN0YW1wIC0gZmZtcGVnZGVjLT5sYXN0X2luOwotKyAgICAgICAgLyogbmVlZCB0byBzY2FsZSB3aXRoIGFtb3VudCBvZiBmcmFtZXMgaW4gdGhlIGludGVydmFsICovCi0rICAgICAgICBpZiAoZmZtcGVnZGVjLT5sYXN0X2ZyYW1lcykKLSsgICAgICAgICAgZGlmZiAvPSBmZm1wZWdkZWMtPmxhc3RfZnJhbWVzOwotKwotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImVzdGltYXRlZCBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQgIiAldSIsCi0rICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoZGlmZiksIGZmbXBlZ2RlYy0+bGFzdF9mcmFtZXMpOwotKwotKyAgICAgICAgZmZtcGVnZGVjLT5sYXN0X2RpZmYgPSBkaWZmOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBmZm1wZWdkZWMtPmxhc3RfaW4gPSBpbl90aW1lc3RhbXA7Ci0rICAgIGZmbXBlZ2RlYy0+bGFzdF9mcmFtZXMgPSAwOwotKyAgfQotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAiUmVjZWl2ZWQgbmV3IGRhdGEgb2Ygc2l6ZSAldSwgb2Zmc2V0OiUiIEdfR1VJTlQ2NF9GT1JNQVQgIiwgdHM6JSIKLSsgICAgICBHU1RfVElNRV9GT1JNQVQgIiwgZHVyOiUiIEdTVF9USU1FX0ZPUk1BVCAiLCBpbmZvICVkIiwKLSsgICAgICBHU1RfQlVGRkVSX1NJWkUgKGluYnVmKSwgR1NUX0JVRkZFUl9PRkZTRVQgKGluYnVmKSwKLSsgICAgICBHU1RfVElNRV9BUkdTIChpbl90aW1lc3RhbXApLCBHU1RfVElNRV9BUkdTIChpbl9kdXJhdGlvbiksIGluX2luZm8tPmlkeCk7Ci0rCi0rICAvKiB3b3JrYXJvdW5kcywgZnVuY3Rpb25zIHdyaXRlIHRvIGJ1ZmZlcnM6Ci0rICAgKiAgbGliYXZjb2RlYy9zdnExLmM6c3ZxMV9kZWNvZGVfZnJhbWUgd3JpdGVzIHRvIHRoZSBnaXZlbiBidWZmZXIuCi0rICAgKiAgbGliYXZjb2RlYy9zdnEzLmM6c3ZxM19kZWNvZGVfc2xpY2VfaGVhZGVyIHRvby4KLSsgICAqIGZmbXBlZyBkZXZzIGtub3cgYWJvdXQgaXQgYW5kIHdpbGwgZml4IGl0ICh0aGV5IHNhaWQpLiAqLwotKyAgaWYgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9TVlExIHx8Ci0rICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1NWUTMpIHsKLSsgICAgaW5idWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGluYnVmKTsKLSsgIH0KLSsKLSsgIGJkYXRhID0gR1NUX0JVRkZFUl9EQVRBIChpbmJ1Zik7Ci0rICBic2l6ZSA9IEdTVF9CVUZGRVJfU0laRSAoaW5idWYpOwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+ZG9fcGFkZGluZykgewotKyAgICAvKiBhZGQgcGFkZGluZyAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5wYWRkZWRfc2l6ZSA8IGJzaXplICsgRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSkgewotKyAgICAgIGZmbXBlZ2RlYy0+cGFkZGVkX3NpemUgPSBic2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkU7Ci0rICAgICAgZmZtcGVnZGVjLT5wYWRkZWQgPSBnX3JlYWxsb2MgKGZmbXBlZ2RlYy0+cGFkZGVkLCBmZm1wZWdkZWMtPnBhZGRlZF9zaXplKTsKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAicmVzaXplZCBwYWRkaW5nIGJ1ZmZlciB0byAlZCIsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+cGFkZGVkX3NpemUpOwotKyAgICB9Ci0rICAgIG1lbWNweSAoZmZtcGVnZGVjLT5wYWRkZWQsIGJkYXRhLCBic2l6ZSk7Ci0rICAgIG1lbXNldCAoZmZtcGVnZGVjLT5wYWRkZWQgKyBic2l6ZSwgMCwgRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Ci0rCi0rICAgIGJkYXRhID0gZmZtcGVnZGVjLT5wYWRkZWQ7Ci0rICB9Ci0rCi0rICBkbyB7Ci0rICAgIGd1aW50OCB0bXBfcGFkZGluZ1tGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFXTsKLSsKLSsgICAgLyogcGFyc2UsIGlmIGF0IGFsbCBwb3NzaWJsZSAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5wY3R4KSB7Ci0rICAgICAgZ2ludCByZXM7Ci0rCi0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgIkNhbGxpbmcgYXZfcGFyc2VyX3BhcnNlMiB3aXRoIG9mZnNldCAlIiBHX0dJTlQ2NF9GT1JNQVQgIiwgdHM6JSIKLSsgICAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgc2l6ZSAlZCIsIGluX29mZnNldCwgR1NUX1RJTUVfQVJHUyAoaW5fdGltZXN0YW1wKSwKLSsgICAgICAgICAgYnNpemUpOwotKwotKyAgICAgIC8qIGZlZWQgdGhlIHBhcnNlci4gV2UgcGFzcyB0aGUgdGltZXN0YW1wIGluZm8gc28gdGhhdCB3ZSBjYW4gcmVjb3ZlciBhbGwKLSsgICAgICAgKiBpbmZvIGFnYWluIGxhdGVyICovCi0rICAgICAgcmVzID0gYXZfcGFyc2VyX3BhcnNlMiAoZmZtcGVnZGVjLT5wY3R4LCBmZm1wZWdkZWMtPmNvbnRleHQsCi0rICAgICAgICAgICZkYXRhLCAmc2l6ZSwgYmRhdGEsIGJzaXplLCBpbl9pbmZvLT5pZHgsIGluX2luZm8tPmlkeCwgaW5fb2Zmc2V0KTsKLSsKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAicGFyc2VyIHJldHVybmVkIHJlcyAlZCBhbmQgc2l6ZSAlZCwgaWQgJSIgR19HSU5UNjRfRk9STUFULCByZXMsIHNpemUsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+cGN0eC0+cHRzKTsKLSsKLSsgICAgICAvKiBzdG9yZSBwdHMgZm9yIGRlY29kaW5nICovCi0rICAgICAgaWYgKGZmbXBlZ2RlYy0+cGN0eC0+cHRzICE9IEFWX05PUFRTX1ZBTFVFICYmIGZmbXBlZ2RlYy0+cGN0eC0+cHRzICE9IC0xKQotKyAgICAgICAgZGVjX2luZm8gPSBnc3RfdHNfaW5mb19nZXQgKGZmbXBlZ2RlYywgZmZtcGVnZGVjLT5wY3R4LT5wdHMpOwotKyAgICAgIGVsc2UgewotKyAgICAgICAgLyogZmZtcGVnIHNvbWV0aW1lcyBsb3NlcyB0cmFjayBhZnRlciBhIGZsdXNoLCBoZWxwIGl0IGJ5IGZlZWRpbmcgYQotKyAgICAgICAgICogdmFsaWQgc3RhcnQgdGltZSAqLwotKyAgICAgICAgZmZtcGVnZGVjLT5wY3R4LT5wdHMgPSBpbl9pbmZvLT5pZHg7Ci0rICAgICAgICBmZm1wZWdkZWMtPnBjdHgtPmR0cyA9IGluX2luZm8tPmlkeDsKLSsgICAgICAgIGRlY19pbmZvID0gaW5faW5mbzsKLSsgICAgICB9Ci0rCi0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImNvbnN1bWluZyAlZCBieXRlcy4gaWQgJWQiLCBzaXplLAotKyAgICAgICAgICBkZWNfaW5mby0+aWR4KTsKLSsKLSsgICAgICBpZiAocmVzKSB7Ci0rICAgICAgICAvKiB0aGVyZSBpcyBvdXRwdXQsIHNldCBwb2ludGVycyBmb3IgbmV4dCByb3VuZC4gKi8KLSsgICAgICAgIGJzaXplIC09IHJlczsKLSsgICAgICAgIGJkYXRhICs9IHJlczsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogUGFyc2VyIGRpZCBub3QgY29uc3VtZSBhbnkgZGF0YSwgbWFrZSBzdXJlIHdlIGRvbid0IGNsZWFyIHRoZQotKyAgICAgICAgICogdGltZXN0YW1wIGZvciB0aGUgbmV4dCByb3VuZCAqLwotKyAgICAgICAgZmZtcGVnZGVjLT5jbGVhcl90cyA9IEZBTFNFOwotKyAgICAgIH0KLSsKLSsgICAgICAvKiBpZiB0aGVyZSBpcyBubyBvdXRwdXQsIHdlIG11c3QgYnJlYWsgYW5kIHdhaXQgZm9yIG1vcmUgZGF0YS4gYWxzbyB0aGUKLSsgICAgICAgKiB0aW1lc3RhbXAgaW4gdGhlIGNvbnRleHQgaXMgbm90IHVwZGF0ZWQuICovCi0rICAgICAgaWYgKHNpemUgPT0gMCkgewotKyAgICAgICAgaWYgKGJzaXplID4gMCkKLSsgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICBkYXRhID0gYmRhdGE7Ci0rICAgICAgc2l6ZSA9IGJzaXplOwotKwotKyAgICAgIGRlY19pbmZvID0gaW5faW5mbzsKLSsgICAgfQotKwotKyAgICBpZiAoZmZtcGVnZGVjLT5kb19wYWRkaW5nKSB7Ci0rICAgICAgLyogYWRkIHRlbXBvcmFyeSBwYWRkaW5nICovCi0rICAgICAgbWVtY3B5ICh0bXBfcGFkZGluZywgZGF0YSArIHNpemUsIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotKyAgICAgIG1lbXNldCAoZGF0YSArIHNpemUsIDAsIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotKyAgICB9Ci0rCi0rICAgIC8qIGRlY29kZSBhIGZyYW1lIG9mIGF1ZGlvL3ZpZGVvIG5vdyAqLwotKyAgICBsZW4gPQotKyAgICAgICAgZ3N0X2ZmbXBlZ2RlY19mcmFtZSAoZmZtcGVnZGVjLCBkYXRhLCBzaXplLCAmaGF2ZV9kYXRhLCBkZWNfaW5mbywgJnJldCk7Ci0rCi0rICAgIGlmIChmZm1wZWdkZWMtPmRvX3BhZGRpbmcpIHsKLSsgICAgICBtZW1jcHkgKGRhdGEgKyBzaXplLCB0bXBfcGFkZGluZywgRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJicmVha2luZyBiZWNhdXNlIG9mIGZsb3cgcmV0ICVzIiwKLSsgICAgICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwotKyAgICAgIC8qIGJhZCBmbG93IHJldHVuLCBtYWtlIHN1cmUgd2UgZGlzY2FyZCBhbGwgZGF0YSBhbmQgZXhpdCAqLwotKyAgICAgIGJzaXplID0gMDsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBpZiAoIWZmbXBlZ2RlYy0+cGN0eCkgewotKyAgICAgIGlmIChsZW4gPT0gMCAmJiAhaGF2ZV9kYXRhKSB7Ci0rICAgICAgICAvKiBub3RoaW5nIHdhcyBkZWNvZGVkLCB0aGlzIGNvdWxkIGJlIGJlY2F1c2Ugbm8gZGF0YSB3YXMgYXZhaWxhYmxlIG9yCi0rICAgICAgICAgKiBiZWNhdXNlIHdlIHdlcmUgc2tpcHBpbmcgZnJhbWVzLgotKyAgICAgICAgICogSWYgd2UgaGF2ZSBubyBjb250ZXh0IHdlIG11c3QgZXhpdCBhbmQgd2FpdCBmb3IgbW9yZSBkYXRhLCB3ZSBrZWVwIHRoZQotKyAgICAgICAgICogZGF0YSB3ZSB0cmllZC4gKi8KLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJEZWNvZGluZyBkaWRuJ3QgcmV0dXJuIGFueSBkYXRhLCBicmVha2luZyIpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfSBlbHNlIGlmIChsZW4gPCAwKSB7Ci0rICAgICAgICAvKiBhIGRlY29kaW5nIGVycm9yIGhhcHBlbmVkLCB3ZSBtdXN0IGJyZWFrIGFuZCB0cnkgYWdhaW4gd2l0aCBuZXh0IGRhdGEuICovCi0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiRGVjb2RpbmcgZXJyb3IsIGJyZWFraW5nIik7Ci0rICAgICAgICBic2l6ZSA9IDA7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgLyogcHJlcGFyZSBmb3IgdGhlIG5leHQgcm91bmQsIGZvciBjb2RlY3Mgd2l0aCBhIGNvbnRleHQgd2UgZGlkIHRoaXMKLSsgICAgICAgKiBhbHJlYWR5IHdoZW4gdXNpbmcgdGhlIHBhcnNlci4gKi8KLSsgICAgICBic2l6ZSAtPSBsZW47Ci0rICAgICAgYmRhdGEgKz0gbGVuOwotKyAgICB9IGVsc2UgewotKyAgICAgIGlmIChsZW4gPT0gMCkgewotKyAgICAgICAgLyogbm90aGluZyB3YXMgZGVjb2RlZCwgdGhpcyBjb3VsZCBiZSBiZWNhdXNlIG5vIGRhdGEgd2FzIGF2YWlsYWJsZSBvcgotKyAgICAgICAgICogYmVjYXVzZSB3ZSB3ZXJlIHNraXBwaW5nIGZyYW1lcy4gU2luY2Ugd2UgaGF2ZSBhIHBhcnNlciB3ZSBjYW4KLSsgICAgICAgICAqIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgZnJhbWUgKi8KLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICAgIkRlY29kaW5nIGRpZG4ndCByZXR1cm4gYW55IGRhdGEsIHRyeWluZyBuZXh0Iik7Ci0rICAgICAgfSBlbHNlIGlmIChsZW4gPCAwKSB7Ci0rICAgICAgICAvKiB3ZSBoYXZlIGEgY29udGV4dCB0aGF0IHdpbGwgYnJpbmcgdXMgdG8gdGhlIG5leHQgZnJhbWUgKi8KLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJEZWNvZGluZyBlcnJvciwgdHJ5aW5nIG5leHQiKTsKLSsgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgLyogbWFrZSBzdXJlIHdlIGRvbid0IHVzZSB0aGUgc2FtZSBvbGQgdGltZXN0YW1wIGZvciB0aGUgbmV4dCBmcmFtZSBhbmQgbGV0Ci0rICAgICAqIHRoZSBpbnRlcnBvbGxhdGlvbiB0YWtlIGNhcmUgb2YgaXQuICovCi0rICAgIGlmIChmZm1wZWdkZWMtPmNsZWFyX3RzKSB7Ci0rICAgICAgaW5fdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgICAgICBpbl9kdXJhdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICAgICAgaW5fb2Zmc2V0ID0gR1NUX0JVRkZFUl9PRkZTRVRfTk9ORTsKLSsgICAgICBpbl9pbmZvID0gR1NUX1RTX0lORk9fTk9ORTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBmZm1wZWdkZWMtPmNsZWFyX3RzID0gVFJVRTsKLSsgICAgfQotKyAgICBmZm1wZWdkZWMtPmxhc3RfZnJhbWVzKys7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJCZWZvcmUgKHdoaWxlIGJzaXplPjApLiAgYnNpemU6JWQgLCBiZGF0YTolcCIsCi0rICAgICAgICBic2l6ZSwgYmRhdGEpOwotKyAgfSB3aGlsZSAoYnNpemUgPiAwKTsKLSsKLSsgIC8qIGtlZXAgbGVmdC1vdmVyICovCi0rICBpZiAoZmZtcGVnZGVjLT5wY3R4ICYmIGJzaXplID4gMCkgewotKyAgICBpbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoaW5idWYpOwotKyAgICBpbl9vZmZzZXQgPSBHU1RfQlVGRkVSX09GRlNFVCAoaW5idWYpOwotKwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIktlZXBpbmcgJWQgYnl0ZXMgb2YgZGF0YSB3aXRoIG9mZnNldCAlIiBHX0dJTlQ2NF9GT1JNQVQgIiwgdGltZXN0YW1wICUiCi0rICAgICAgICBHU1RfVElNRV9GT1JNQVQsIGJzaXplLCBpbl9vZmZzZXQsIEdTVF9USU1FX0FSR1MgKGluX3RpbWVzdGFtcCkpOwotKwotKyAgICBmZm1wZWdkZWMtPnBjYWNoZSA9IGdzdF9idWZmZXJfY3JlYXRlX3N1YiAoaW5idWYsCi0rICAgICAgICBHU1RfQlVGRkVSX1NJWkUgKGluYnVmKSAtIGJzaXplLCBic2l6ZSk7Ci0rICAgIC8qIHdlIGtlZXAgdGltZXN0YW1wLCBldmVuIHRob3VnaCBhbGwgd2UgcmVhbGx5IGtub3cgaXMgdGhhdCB0aGUgY29ycmVjdAotKyAgICAgKiB0aW1lc3RhbXAgaXMgbm90IGJlbG93IHRoZSBvbmUgZnJvbSBpbmJ1ZiAqLwotKyAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoZmZtcGVnZGVjLT5wY2FjaGUpID0gaW5fdGltZXN0YW1wOwotKyAgICBHU1RfQlVGRkVSX09GRlNFVCAoZmZtcGVnZGVjLT5wY2FjaGUpID0gaW5fb2Zmc2V0OwotKyAgfSBlbHNlIGlmIChic2l6ZSA+IDApIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiRHJvcHBpbmcgJWQgYnl0ZXMgb2YgZGF0YSIsIGJzaXplKTsKLSsgIH0KLSsgIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmKTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStub3RfbmVnb3RpYXRlZDoKLSsgIHsKLSsgICAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnZGVjLCBDT1JFLCBORUdPVElBVElPTiwgKE5VTEwpLAotKyAgICAgICAgKCJmZmRlY18lczogaW5wdXQgZm9ybWF0IHdhcyBub3Qgc2V0IGJlZm9yZSBkYXRhIHN0YXJ0IiwKLSsgICAgICAgICAgICBvY2xhc3MtPmluX3BsdWdpbi0+bmFtZSkpOwotKyAgICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7Ci0rICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi0rZ3N0X2ZmbXBlZ2RlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSBlbGVtZW50OwotKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OwotKwotKyAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7Ci0rCi0rICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSsgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZmbXBlZ2RlYyk7Ci0rICAgICAgZ3N0X2ZmbXBlZ2RlY19jbG9zZSAoZmZtcGVnZGVjKTsKLSsgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmZtcGVnZGVjKTsKLSsgICAgICBjbGVhcl9xdWV1ZWQgKGZmbXBlZ2RlYyk7Ci0rICAgICAgZ19mcmVlIChmZm1wZWdkZWMtPnBhZGRlZCk7Ci0rICAgICAgZmZtcGVnZGVjLT5wYWRkZWQgPSBOVUxMOwotKyAgICAgIGZmbXBlZ2RlYy0+cGFkZGVkX3NpemUgPSAwOwotKyAgICAgIGZmbXBlZ2RlYy0+Y2FuX2FsbG9jYXRlX2FsaWduZWQgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSsgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgb2JqZWN0OwotKwotKyAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9MT1dSRVM6Ci0rICAgICAgZmZtcGVnZGVjLT5sb3dyZXMgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmxvd3JlcyA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1NLSVBGUkFNRToKLSsgICAgICBmZm1wZWdkZWMtPnNraXBfZnJhbWUgPSBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgPQotKyAgICAgICAgICBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ESVJFQ1RfUkVOREVSSU5HOgotKyAgICAgIGZmbXBlZ2RlYy0+ZGlyZWN0X3JlbmRlcmluZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0RPX1BBRERJTkc6Ci0rICAgICAgZmZtcGVnZGVjLT5kb19wYWRkaW5nID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfREVCVUdfTVY6Ci0rICAgICAgZmZtcGVnZGVjLT5kZWJ1Z19tdiA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+ZGVidWdfbXYgPQotKyAgICAgICAgICBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9DUk9QOgotKyAgICAgIGZmbXBlZ2RlYy0+Y3JvcCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX01BWF9USFJFQURTOgotKyAgICAgIGZmbXBlZ2RlYy0+bWF4X3RocmVhZHMgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotKyAgICAgIGJyZWFrOwotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSBvYmplY3Q7Ci0rCi0rICBzd2l0Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0xPV1JFUzoKLSsgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZmZtcGVnZGVjLT5jb250ZXh0LT5sb3dyZXMpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfU0tJUEZSQU1FOgotKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfRElSRUNUX1JFTkRFUklORzoKLSsgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZmZtcGVnZGVjLT5kaXJlY3RfcmVuZGVyaW5nKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0RPX1BBRERJTkc6Ci0rICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGZmbXBlZ2RlYy0+ZG9fcGFkZGluZyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ERUJVR19NVjoKLSsgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZmZtcGVnZGVjLT5jb250ZXh0LT5kZWJ1Z19tdik7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9DUk9QOgotKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBmZm1wZWdkZWMtPmNyb3ApOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfTUFYX1RIUkVBRFM6Ci0rICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmZtcGVnZGVjLT5tYXhfdGhyZWFkcyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3RfZmZtcGVnZGVjX3JlZ2lzdGVyIChHc3RQbHVnaW4gKiBwbHVnaW4pCi0rewotKyAgR1R5cGVJbmZvIHR5cGVpbmZvID0gewotKyAgICBzaXplb2YgKEdzdEZGTXBlZ0RlY0NsYXNzKSwKLSsgICAgKEdCYXNlSW5pdEZ1bmMpIGdzdF9mZm1wZWdkZWNfYmFzZV9pbml0LAotKyAgICBOVUxMLAotKyAgICAoR0NsYXNzSW5pdEZ1bmMpIGdzdF9mZm1wZWdkZWNfY2xhc3NfaW5pdCwKLSsgICAgTlVMTCwKLSsgICAgTlVMTCwKLSsgICAgc2l6ZW9mIChHc3RGRk1wZWdEZWMpLAotKyAgICAwLAotKyAgICAoR0luc3RhbmNlSW5pdEZ1bmMpIGdzdF9mZm1wZWdkZWNfaW5pdCwKLSsgIH07Ci0rICBHVHlwZSB0eXBlOwotKyAgQVZDb2RlYyAqaW5fcGx1Z2luOwotKyAgZ2ludCByYW5rOwotKwotKyAgaW5fcGx1Z2luID0gYXZfY29kZWNfbmV4dCAoTlVMTCk7Ci0rCi0rICBHU1RfTE9HICgiUmVnaXN0ZXJpbmcgZGVjb2RlcnMiKTsKLSsKLSsgIHdoaWxlIChpbl9wbHVnaW4pIHsKLSsgICAgZ2NoYXIgKnR5cGVfbmFtZTsKLSsgICAgZ2NoYXIgKnBsdWdpbl9uYW1lOwotKwotKyAgICAvKiBvbmx5IGRlY29kZXJzICovCi0rICAgIGlmICghaW5fcGx1Z2luLT5kZWNvZGUpIHsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgLyogbm8gcXVhc2ktY29kZWNzLCBwbGVhc2UgKi8KLSsgICAgaWYgKGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfUkFXVklERU8gfHwKLSsgICAgICAgIGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfVjIxMCB8fAotKyAgICAgICAgaW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9WMjEwWCB8fAotKyAgICAgICAgaW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9SMjEwIHx8Ci0rICAgICAgICAoaW5fcGx1Z2luLT5pZCA+PSBDT0RFQ19JRF9QQ01fUzE2TEUgJiYKLSsgICAgICAgICAgICBpbl9wbHVnaW4tPmlkIDw9IENPREVDX0lEX1BDTV9CTFVSQVkpKSB7Ci0rICAgICAgZ290byBuZXh0OwotKyAgICB9Ci0rCi0rICAgIC8qIE5vIGRlY29kZXJzIGRlcGVuZGluZyBvbiBleHRlcm5hbCBsaWJyYXJpZXMgKHdlIGRvbid0IGJ1aWxkIHRoZW0sIGJ1dAotKyAgICAgKiBwZW9wbGUgd2hvIGJ1aWxkIGFnYWluc3QgYW4gZXh0ZXJuYWwgZmZtcGVnIG1pZ2h0IGhhdmUgdGhlbS4KLSsgICAgICogV2UgaGF2ZSBuYXRpdmUgZ3N0cmVhbWVyIHBsdWdpbnMgZm9yIGFsbCBvZiB0aG9zZSBsaWJyYXJpZXMgYW55d2F5LiAqLwotKyAgICBpZiAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImxpYiIsIDMpKSB7Ci0rICAgICAgR1NUX0RFQlVHCi0rICAgICAgICAgICgiTm90IHVzaW5nIGV4dGVybmFsIGxpYnJhcnkgZGVjb2RlciAlcy4gVXNlIHRoZSBnc3RyZWFtZXItbmF0aXZlIG9uZXMgaW5zdGVhZC4iLAotKyAgICAgICAgICBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICAvKiBObyB2ZHBhdSBwbHVnaW5zIHVudGlsIHdlIGNhbiBmaWd1cmUgb3V0IGhvdyB0byBwcm9wZXJseSB1c2UgdGhlbQotKyAgICAgKiBvdXRzaWRlIG9mIGZmbXBlZy4gKi8KLSsgICAgaWYgKGdfc3RyX2hhc19zdWZmaXggKGluX3BsdWdpbi0+bmFtZSwgIl92ZHBhdSIpKSB7Ci0rICAgICAgR1NUX0RFQlVHCi0rICAgICAgICAgICgiSWdub3JpbmcgVkRQQVUgZGVjb2RlciAlcy4gV2UgY2FuJ3QgaGFuZGxlIHRoaXMgb3V0c2lkZSBvZiBmZm1wZWciLAotKyAgICAgICAgICBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICBpZiAoZ19zdHJfaGFzX3N1ZmZpeCAoaW5fcGx1Z2luLT5uYW1lLCAiX3h2bWMiKSkgewotKyAgICAgIEdTVF9ERUJVRwotKyAgICAgICAgICAoIklnbm9yaW5nIFhWTUMgZGVjb2RlciAlcy4gV2UgY2FuJ3QgaGFuZGxlIHRoaXMgb3V0c2lkZSBvZiBmZm1wZWciLAotKyAgICAgICAgICBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICBHU1RfREVCVUcgKCJUcnlpbmcgcGx1Z2luICVzIFslc10iLCBpbl9wbHVnaW4tPm5hbWUsIGluX3BsdWdpbi0+bG9uZ19uYW1lKTsKLSsKLSsgICAgLyogbm8gY29kZWNzIGZvciB3aGljaCB3ZSdyZSBHVUFSQU5URUVEIHRvIGhhdmUgYmV0dGVyIGFsdGVybmF0aXZlcyAqLwotKyAgICAvKiBNUEVHMVZJREVPIDogdGhlIG1wZWcydmlkZW8gZGVjb2RlciBpcyBwcmVmZXJyZWQgKi8KLSsgICAgLyogTVAxIDogVXNlIE1QMyBmb3IgZGVjb2RpbmcgKi8KLSsgICAgLyogTVAyIDogVXNlIE1QMyBmb3IgZGVjb2RpbmcgKi8KLSsgICAgLyogVGhlb3JhOiBVc2UgbGlidGhlb3JhIGJhc2VkIHRoZW9yYWRlYyAqLwotKyAgICBpZiAoIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZ2lmIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgInZvcmJpcyIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJ0aGVvcmEiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAibXBlZzF2aWRlbyIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJ3YXZwYWNrIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgIm1wMSIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJtcDIiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAibGliZmFhZCIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJtcGVnNGFhYyIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJhc3MiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAic3J0IikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgInBnc3N1YiIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJkdmRzdWIiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZHZic3ViIikpIHsKLSsgICAgICBHU1RfTE9HICgiSWdub3JpbmcgZGVjb2RlciAlcyIsIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgICAgZ290byBuZXh0OwotKyAgICB9Ci0rCi0rICAgIC8qIGNvbnN0cnVjdCB0aGUgdHlwZSAqLwotKyAgICBwbHVnaW5fbmFtZSA9IGdfc3RyZHVwICgoZ2NoYXIgKikgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgZ19zdHJkZWxpbWl0IChwbHVnaW5fbmFtZSwgTlVMTCwgJ18nKTsKLSsgICAgdHlwZV9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiZmZkZWNfJXMiLCBwbHVnaW5fbmFtZSk7Ci0rICAgIGdfZnJlZSAocGx1Z2luX25hbWUpOwotKwotKyAgICB0eXBlID0gZ190eXBlX2Zyb21fbmFtZSAodHlwZV9uYW1lKTsKLSsKLSsgICAgaWYgKCF0eXBlKSB7Ci0rICAgICAgLyogY3JlYXRlIHRoZSBndHlwZSBub3cgKi8KLSsgICAgICB0eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyAoR1NUX1RZUEVfRUxFTUVOVCwgdHlwZV9uYW1lLCAmdHlwZWluZm8sIDApOwotKyAgICAgIGdfdHlwZV9zZXRfcWRhdGEgKHR5cGUsIEdTVF9GRkRFQ19QQVJBTVNfUURBVEEsIChncG9pbnRlcikgaW5fcGx1Z2luKTsKLSsgICAgfQotKwotKyAgICAvKiAoUm9uYWxkKSBNUEVHLTQgZ2V0cyBhIGhpZ2hlciBwcmlvcml0eSBiZWNhdXNlIGl0IGhhcyBiZWVuIHdlbGwtCi0rICAgICAqIHRlc3RlZCBhbmQgYnkgZmFyIG91dHBlcmZvcm1zIGRpdnhkZWMveHZpZGRlYyAtIHNvIHdlIHByZWZlciBpdC4KLSsgICAgICogbXNtcGVnNHYzIHNhbWUsIGFzIGl0IG91dHBlcmZvcm1zIGRpdnhkZWMgZm9yIGRpdngzIHBsYXliYWNrLgotKyAgICAgKiBWQzEvV01WMyBhcmUgbm90IHdvcmtpbmcgYW5kIHRodXMgdW5wcmVmZXJyZWQgZm9yIG5vdy4gKi8KLSsgICAgc3dpdGNoIChpbl9wbHVnaW4tPmlkKSB7Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9NUEVHNDoKLSsgICAgICBjYXNlIENPREVDX0lEX01TTVBFRzRWMzoKLSsgICAgICBjYXNlIENPREVDX0lEX0gyNjQ6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9SQV8xNDQ6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9SQV8yODg6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9SVjEwOgotKyAgICAgIGNhc2UgQ09ERUNfSURfUlYyMDoKLSsgICAgICBjYXNlIENPREVDX0lEX1JWMzA6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9SVjQwOgotKyAgICAgIGNhc2UgQ09ERUNfSURfQ09PSzoKLSsgICAgICAgIHJhbmsgPSBHU1RfUkFOS19TRUNPTkRBUlk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIC8qIERWVklERU86IHdlIGhhdmUgYSBnb29kIGR2IGRlY29kZXIsIGZhc3Qgb24gYm90aCBwcGMgYXMgd2VsbCBhcyB4ODYuCi0rICAgICAgICAgKiBUaGV5IHNheSBsaWJkdidzIHF1YWxpdHkgaXMgYmV0dGVyIHRob3VnaC4gbGVhdmUgYXMgc2Vjb25kYXJ5LgotKyAgICAgICAgICogbm90ZTogaWYgeW91IGNoYW5nZSB0aGlzLCBzZWUgdGhlIGNvZGUgaW4gZ3N0ZHYuYyBpbiBnb29kL2V4dC9kdi4KLSsgICAgICAgICAqCi0rICAgICAgICAgKiBTSVBSOiBkZWNvZGVyIHNob3VsZCBoYXZlIGEgaGlnaGVyIHJhbmsgdGhhbiByZWFsYXVkaW9kZWMuCi0rICAgICAgICAgKi8KLSsgICAgICBjYXNlIENPREVDX0lEX0RWVklERU86Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9TSVBSOgotKyAgICAgICAgcmFuayA9IEdTVF9SQU5LX1NFQ09OREFSWTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgQ09ERUNfSURfTVAzOgotKyAgICAgICAgcmFuayA9IEdTVF9SQU5LX05PTkU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIC8qIFRFTVBPUkFSSUxZIERJU0FCTElORyBBQzMvRUFDMy9EVFMgZm9yIDAuMTAuMTIgcmVsZWFzZQotKyAgICAgICAgICogZHVlIHRvIGRvd25taXhpbmcgZmFpbHVyZS4KLSsgICAgICAgICAqIFNlZSBCdWcgIzYwODg5MiBmb3IgbW9yZSBkZXRhaWxzICovCi0rICAgICAgY2FzZSBDT0RFQ19JRF9FQUMzOgotKyAgICAgIGNhc2UgQ09ERUNfSURfQUMzOgotKyAgICAgIGNhc2UgQ09ERUNfSURfRFRTOgotKyAgICAgICAgcmFuayA9IEdTVF9SQU5LX05PTkU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgcmFuayA9IEdTVF9SQU5LX01BUkdJTkFMOwotKyAgICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCB0eXBlX25hbWUsIHJhbmssIHR5cGUpKSB7Ci0rICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIHJlZ2lzdGVyICVzIiwgdHlwZV9uYW1lKTsKLSsgICAgICBnX2ZyZWUgKHR5cGVfbmFtZSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICB9Ci0rCi0rICAgIGdfZnJlZSAodHlwZV9uYW1lKTsKLSsKLSsgIG5leHQ6Ci0rICAgIGluX3BsdWdpbiA9IGF2X2NvZGVjX25leHQgKGluX3BsdWdpbik7Ci0rICB9Ci0rCi0rICBHU1RfTE9HICgiRmluaXNoZWQgUmVnaXN0ZXJpbmcgZGVjb2RlcnMiKTsKLSsKLSsgIHJldHVybiBUUlVFOwotK30KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jLnJlaiBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5yZWoKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jLnJlagkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jLnJlagkyMDE0LTA4LTA4IDE1OjI2OjM4LjQ3MTg1ODY1MiArMDIwMAotQEAgLTAsMCArMSwxMSBAQAotKy0tLSBleHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jCi0rKysrIGV4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVjLmMKLStAQCAtMTU2NSw3ICsxNTY0LDcgQEAKLSsgICAgICAgICBnc3RfbWVzc2FnZV9uZXdfbGF0ZW5jeSAoR1NUX09CSkVDVF9DQVNUIChmZm1wZWdkZWMpKSk7Ci0rICAgfQotKyAKLSstICBpc19pdHlwZSA9IChmZm1wZWdkZWMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9PSBGRl9JX1RZUEUpOwotKysgIGlzX2l0eXBlID0gKGZmbXBlZ2RlYy0+cGljdHVyZS0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKTsKLSsgICBpc19yZWZlcmVuY2UgPSAoZmZtcGVnZGVjLT5waWN0dXJlLT5yZWZlcmVuY2UgPT0gMSk7Ci0rIAotKyAgIGlza2V5ZnJhbWUgPSAoaXNfaXR5cGUgfHwgaXNfcmVmZXJlbmNlIHx8IGZmbXBlZ2RlYy0+cGljdHVyZS0+a2V5X2ZyYW1lKQotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVtdXguYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZW11eC5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZW11eC5jCTIwMTEtMDctMTMgMTE6MDc6MjguMDAwMDAwMDAwICswMjAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVtdXguYwkyMDE0LTA4LTA4IDE1OjI2OjA3Ljg3NDg1NzU1NSArMDIwMAotQEAgLTM0Myw4ICszNDMsMTEgQEAKLSAgIGRlbXV4LT5hdWRpb3BhZHMgPSAwOwotIAotICAgLyogY2xvc2UgZGVtdXhlciBjb250ZXh0IGZyb20gZmZtcGVnICovCi0tICBhdl9jbG9zZV9pbnB1dF9maWxlIChkZW11eC0+Y29udGV4dCk7Ci0tICBkZW11eC0+Y29udGV4dCA9IE5VTEw7Ci0rICBpZiAoZGVtdXgtPnNlZWthYmxlKQotKyAgICBnc3RfZmZtcGVnZGF0YV9jbG9zZSAoZGVtdXgtPmNvbnRleHQtPnBiKTsKLSsgIGVsc2UKLSsgICAgZ3N0X2ZmbXBlZ19waXBlX2Nsb3NlIChkZW11eC0+Y29udGV4dC0+cGIpOwotKyAgYXZmb3JtYXRfY2xvc2VfaW5wdXQgKCZkZW11eC0+Y29udGV4dCk7Ci0gCi0gICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKLSAgIGRlbXV4LT5vcGVuZWQgPSBGQUxTRTsKLUBAIC0xMTQ2LDkgKzExNDksOSBAQAotIHN0YXRpYyBnYm9vbGVhbgotIGdzdF9mZm1wZWdkZW11eF9vcGVuIChHc3RGRk1wZWdEZW11eCAqIGRlbXV4KQotIHsKLSsgIEFWSU9Db250ZXh0ICppb2NvbnRleHQgPSBOVUxMOwotICAgR3N0RkZNcGVnRGVtdXhDbGFzcyAqb2NsYXNzID0KLSAgICAgICAoR3N0RkZNcGVnRGVtdXhDbGFzcyAqKSBHX09CSkVDVF9HRVRfQ0xBU1MgKGRlbXV4KTsKLS0gIGdjaGFyICpsb2NhdGlvbjsKLSAgIGdpbnQgcmVzLCBuX3N0cmVhbXMsIGk7Ci0gI2lmIDAKLSAgIC8qIFJlLWVuYWJsZSBvbmNlIGNvbnZlcnRlZCB0byBuZXcgQVZNZXRhRGF0YSBBUEkKLUBAIC0xMTY0LDE1ICsxMTY3LDE0IEBACi0gCi0gICAvKiBvcGVuIHZpYSBvdXIgaW5wdXQgcHJvdG9jb2wgaGFjayAqLwotICAgaWYgKGRlbXV4LT5zZWVrYWJsZSkKLS0gICAgbG9jYXRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJnc3RyZWFtZXI6Ly8lcCIsIGRlbXV4LT5zaW5rcGFkKTsKLSsgICAgcmVzID0gZ3N0X2ZmbXBlZ2RhdGFfb3BlbiAoZGVtdXgtPnNpbmtwYWQsIEFWSU9fRkxBR19SRUFELCAmaW9jb250ZXh0KTsKLSAgIGVsc2UKLS0gICAgbG9jYXRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJnc3RwaXBlOi8vJXAiLCAmZGVtdXgtPmZmcGlwZSk7Ci0tICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgImFib3V0IHRvIGNhbGwgYXZfb3Blbl9pbnB1dF9maWxlICVzIiwgbG9jYXRpb24pOwotKyAgICByZXMgPSBnc3RfZmZtcGVnX3BpcGVfb3BlbiAoJmRlbXV4LT5mZnBpcGUsIEFWSU9fRkxBR19SRUFELCAmaW9jb250ZXh0KTsKLSAKLS0gIHJlcyA9IGF2X29wZW5faW5wdXRfZmlsZSAoJmRlbXV4LT5jb250ZXh0LCBsb2NhdGlvbiwKLS0gICAgICBvY2xhc3MtPmluX3BsdWdpbiwgMCwgTlVMTCk7Ci0rICBkZW11eC0+Y29udGV4dCA9IGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQgKCk7Ci0rICBkZW11eC0+Y29udGV4dC0+cGIgPSBpb2NvbnRleHQ7Ci0rICByZXMgPSBhdmZvcm1hdF9vcGVuX2lucHV0ICgmZGVtdXgtPmNvbnRleHQsIE5VTEwsIG9jbGFzcy0+aW5fcGx1Z2luLCBOVUxMKTsKLSAKLS0gIGdfZnJlZSAobG9jYXRpb24pOwotICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJhdl9vcGVuX2lucHV0IHJldHVybmVkICVkIiwgcmVzKTsKLSAgIGlmIChyZXMgPCAwKQotICAgICBnb3RvIG9wZW5fZmFpbGVkOwotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZW5jLmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZW5jLmMKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2VuYy5jCTIwMTEtMTAtMzEgMTE6MTQ6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZW5jLmMJMjAxNC0wOC0wOCAxNTozMjoxOC42MDg4NzA4NDcgKzAyMDAKLUBAIC03NzAsNyArNzcwLDcgQEAKLSAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmZm1wZWdlbmMpOwotIAotICAgaWYgKGZvcmNlX2tleWZyYW1lKQotLSAgICBmZm1wZWdlbmMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9IEZGX0lfVFlQRTsKLSsgICAgZmZtcGVnZW5jLT5waWN0dXJlLT5waWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfSTsKLSAKLSAgIGZyYW1lX3NpemUgPSBnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsICgoQVZQaWN0dXJlICopIGZmbXBlZ2VuYy0+cGljdHVyZSwKLSAgICAgICBHU1RfQlVGRkVSX0RBVEEgKGluYnVmKSwKLUBAIC0xMTM2LDcgKzExMzYsNyBAQAotICAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKLSAgICAgICBzID0gZ3N0X2V2ZW50X2dldF9zdHJ1Y3R1cmUgKGV2ZW50KTsKLSAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAocywgIkdzdEZvcmNlS2V5VW5pdCIpKSB7Ci0tICAgICAgICBmZm1wZWdlbmMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9IEZGX0lfVFlQRTsKLSsgICAgICAgIGZmbXBlZ2VuYy0+cGljdHVyZS0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7Ci0gICAgICAgfQotICAgICAgIGJyZWFrOwotICAgICB9Ci1AQCAtMTMzOSw3ICsxMzM5LDcgQEAKLSAgICAgfQotIAotICAgICAvKiBvbmx5IGVuY29kZXJzICovCi0tICAgIGlmICghaW5fcGx1Z2luLT5lbmNvZGUpIHsKLSsgICAgaWYgKCFhdl9jb2RlY19pc19lbmNvZGVyIChpbl9wbHVnaW4pKSB7Ci0gICAgICAgZ290byBuZXh0OwotICAgICB9Ci0gCi1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMJMjAxMS0wNy0xMyAxMTowNzoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYwkyMDE0LTA4LTA4IDE1OjI2OjA3Ljg3NDg1NzU1NSArMDIwMAotQEAgLTI0LDggKzI0LDEwIEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotICNpbmNsdWRlIDxhdmZvcm1hdC5oPgotKyNpbmNsdWRlIDxvcHQuaD4KLSAjZWxzZQotICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgotKyNpbmNsdWRlIDxsaWJhdnV0aWwvb3B0Lmg+Ci0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGdzdC9nc3QuaD4KLUBAIC0zMzYsOSArMzM4LDYgQEAKLSAgIGZmbXBlZ211eC0+Y29udGV4dCA9IGdfbmV3MCAoQVZGb3JtYXRDb250ZXh0LCAxKTsKLSAgIGZmbXBlZ211eC0+Y29udGV4dC0+b2Zvcm1hdCA9IG9jbGFzcy0+aW5fcGx1Z2luOwotICAgZmZtcGVnbXV4LT5jb250ZXh0LT5uYl9zdHJlYW1zID0gMDsKLS0gIGdfc25wcmludGYgKGZmbXBlZ211eC0+Y29udGV4dC0+ZmlsZW5hbWUsCi0tICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lKSwKLS0gICAgICAiZ3N0cmVhbWVyOi8vJXAiLCBmZm1wZWdtdXgtPnNyY3BhZCk7Ci0gICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotIAotICAgZmZtcGVnbXV4LT52aWRlb3BhZHMgPSAwOwotQEAgLTQ1MCwxMCArNDQ5LDEwIEBACi0gICBnc3RfZWxlbWVudF9hZGRfcGFkIChlbGVtZW50LCBwYWQpOwotIAotICAgLyogQVZTdHJlYW0gbmVlZHMgdG8gYmUgY3JlYXRlZCAqLwotLSAgc3QgPSBhdl9uZXdfc3RyZWFtIChmZm1wZWdtdXgtPmNvbnRleHQsIGNvbGxlY3RfcGFkLT5wYWRudW0pOwotKyAgc3QgPSBhdmZvcm1hdF9uZXdfc3RyZWFtIChmZm1wZWdtdXgtPmNvbnRleHQsIE5VTEwpOwotKyAgc3QtPmlkID0gY29sbGVjdF9wYWQtPnBhZG51bTsKLSAgIHN0LT5jb2RlYy0+Y29kZWNfdHlwZSA9IHR5cGU7Ci0gICBzdC0+Y29kZWMtPmNvZGVjX2lkID0gQ09ERUNfSURfTk9ORTsgIC8qIHRoaXMgaXMgYSBjaGVjayBhZnRlcndhcmRzICovCi0tICBzdC0+c3RyZWFtX2NvcHkgPSAxOyAgICAgICAgICAvKiB3ZSdyZSBub3QgdGhlIGFjdHVhbCBlbmNvZGVyICovCi0gICBzdC0+Y29kZWMtPmJpdF9yYXRlID0gYml0cmF0ZTsKLSAgIHN0LT5jb2RlYy0+ZnJhbWVfc2l6ZSA9IGZyYW1lc2l6ZTsKLSAgIC8qIHdlIGZpbGwgaW4gY29kZWMgZHVyaW5nIGNhcHNuZWdvICovCi1AQCAtNDg1LDcgKzQ4NCw3IEBACi0gICBjb2xsZWN0X3BhZCA9IChHc3RGRk1wZWdNdXhQYWQgKikgZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotIAotICAgc3QgPSBmZm1wZWdtdXgtPmNvbnRleHQtPnN0cmVhbXNbY29sbGVjdF9wYWQtPnBhZG51bV07Ci0tICBmZm1wZWdtdXgtPmNvbnRleHQtPnByZWxvYWQgPSBmZm1wZWdtdXgtPnByZWxvYWQ7Ci0rICBhdl9vcHRfc2V0X2ludCAoJmZmbXBlZ211eC0+Y29udGV4dCwgInByZWxvYWQiLCBmZm1wZWdtdXgtPnByZWxvYWQsIDApOwotICAgZmZtcGVnbXV4LT5jb250ZXh0LT5tYXhfZGVsYXkgPSBmZm1wZWdtdXgtPm1heF9kZWxheTsKLSAKLSAgIC8qIGZvciB0aGUgZm9ybWF0LXNwZWNpZmljIGd1ZXNzZXMsIHdlJ2xsIGdvIHRvCi1AQCAtNTUyLDcgKzU1MSw3IEBACi0gCi0gICAvKiBvcGVuICJmaWxlIiAoZ3N0cmVhbWVyIHByb3RvY29sIHRvIG5leHQgZWxlbWVudCkgKi8KLSAgIGlmICghZmZtcGVnbXV4LT5vcGVuZWQpIHsKLS0gICAgaW50IG9wZW5fZmxhZ3MgPSBVUkxfV1JPTkxZOwotKyAgICBpbnQgb3Blbl9mbGFncyA9IEFWSU9fRkxBR19XUklURTsKLSAKLSAgICAgLyogd2UgZG8gbmVlZCBhbGwgc3RyZWFtcyB0byBoYXZlIHN0YXJ0ZWQgY2Fwc25lZ28sCi0gICAgICAqIG9yIHRoaW5ncyB3aWxsIGdvIGhvcnJpYmx5IHdyb25nICovCi1AQCAtNjQ2LDE5ICs2NDUsMTMgQEAKLSAgICAgICBvcGVuX2ZsYWdzIHw9IEdTVF9GRk1QRUdfVVJMX1NUUkVBTUhFQURFUjsKLSAgICAgfQotIAotLSAgICBpZiAodXJsX2ZvcGVuICgmZmZtcGVnbXV4LT5jb250ZXh0LT5wYiwKLS0gICAgICAgICAgICBmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lLCBvcGVuX2ZsYWdzKSA8IDApIHsKLSsgICAgaWYgKGdzdF9mZm1wZWdkYXRhX29wZW4gKGZmbXBlZ211eC0+c3JjcGFkLCBvcGVuX2ZsYWdzLAotKyAgICAgICAgICAgICZmZm1wZWdtdXgtPmNvbnRleHQtPnBiKSA8IDApIHsKLSAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnbXV4LCBMSUJSQVJZLCBUT09fTEFaWSwgKE5VTEwpLAotICAgICAgICAgICAoIkZhaWxlZCB0byBvcGVuIHN0cmVhbSBjb250ZXh0IGluIGZmbXV4IikpOwotICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgICAgfQotIAotLSAgICBpZiAoYXZfc2V0X3BhcmFtZXRlcnMgKGZmbXBlZ211eC0+Y29udGV4dCwgTlVMTCkgPCAwKSB7Ci0tICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ211eCwgTElCUkFSWSwgSU5JVCwgKE5VTEwpLAotLSAgICAgICAgICAoIkZhaWxlZCB0byBpbml0aWFsaXplIG11eGVyIikpOwotLSAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLS0gICAgfQotLQotICAgICAvKiBub3cgb3BlbiB0aGUgbXV4IGZvcm1hdCAqLwotICAgICBpZiAoYXZfd3JpdGVfaGVhZGVyIChmZm1wZWdtdXgtPmNvbnRleHQpIDwgMCkgewotICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdtdXgsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi1AQCAtNjcwLDcgKzY2Myw3IEBACi0gICAgIGZmbXBlZ211eC0+b3BlbmVkID0gVFJVRTsKLSAKLSAgICAgLyogZmx1c2ggdGhlIGhlYWRlciBzbyBpdCB3aWxsIGJlIHVzZWQgYXMgc3RyZWFtaGVhZGVyICovCi0tICAgIHB1dF9mbHVzaF9wYWNrZXQgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotKyAgICBhdmlvX2ZsdXNoIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSAgIH0KLSAKLSAgIC8qIHRha2UgdGhlIG9uZSB3aXRoIGVhcmxpZXN0IHRpbWVzdGFtcCwKLUBAIC03NzAsOCArNzYzLDggQEAKLSAgICAgLyogY2xvc2UgZG93biAqLwotICAgICBhdl93cml0ZV90cmFpbGVyIChmZm1wZWdtdXgtPmNvbnRleHQpOwotICAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotLSAgICBwdXRfZmx1c2hfcGFja2V0IChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLS0gICAgdXJsX2ZjbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICAgIGF2aW9fZmx1c2ggKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotKyAgICBnc3RfZmZtcGVnZGF0YV9jbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0gICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoZmZtcGVnbXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKLSAgICAgcmV0dXJuIEdTVF9GTE9XX1VORVhQRUNURUQ7Ci0gICB9Ci1AQCAtNzk1LDYgKzc4OCwxMCBAQAotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgotICAgICAgIGdzdF9jb2xsZWN0X3BhZHNfc3RvcCAoZmZtcGVnbXV4LT5jb2xsZWN0KTsKLSsgICAgICBpZiAoZmZtcGVnbXV4LT5vcGVuZWQpIHsKLSsgICAgICAgIGZmbXBlZ211eC0+b3BlbmVkID0gRkFMU0U7Ci0rICAgICAgICBnc3RfZmZtcGVnZGF0YV9jbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICAgICAgfQotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgIGJyZWFrOwotQEAgLTgwOSw3ICs4MDYsNyBAQAotICAgICAgIGdzdF90YWdfc2V0dGVyX3Jlc2V0X3RhZ3MgKEdTVF9UQUdfU0VUVEVSIChmZm1wZWdtdXgpKTsKLSAgICAgICBpZiAoZmZtcGVnbXV4LT5vcGVuZWQpIHsKLSAgICAgICAgIGZmbXBlZ211eC0+b3BlbmVkID0gRkFMU0U7Ci0tICAgICAgICB1cmxfZmNsb3NlIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgICAgIGF2aW9fY2xvc2UgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotICAgICAgIH0KLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYy5vcmlnIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ211eC5jLm9yaWcKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ211eC5jLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYy5vcmlnCTIwMTEtMDctMTMgMTE6MDc6MjguMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDk3MCBAQAotKy8qIEdTdHJlYW1lcgotKyAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0rICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotKyNpbmNsdWRlIDxhdmZvcm1hdC5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaD4KLSsKLSsjaW5jbHVkZSAiZ3N0ZmZtcGVnLmgiCi0rI2luY2x1ZGUgImdzdGZmbXBlZ2NvZGVjbWFwLmgiCi0rI2luY2x1ZGUgImdzdGZmbXBlZ3V0aWxzLmgiCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0dzdEZGTXBlZ011eCBHc3RGRk1wZWdNdXg7Ci0rdHlwZWRlZiBzdHJ1Y3QgX0dzdEZGTXBlZ011eFBhZCBHc3RGRk1wZWdNdXhQYWQ7Ci0rCi0rc3RydWN0IF9Hc3RGRk1wZWdNdXhQYWQKLSt7Ci0rICBHc3RDb2xsZWN0RGF0YSBjb2xsZWN0OyAgICAgICAvKiB3ZSBleHRlbmQgdGhlIENvbGxlY3REYXRhICovCi0rCi0rICBnaW50IHBhZG51bTsKLSt9OwotKwotK3N0cnVjdCBfR3N0RkZNcGVnTXV4Ci0rewotKyAgR3N0RWxlbWVudCBlbGVtZW50OwotKwotKyAgR3N0Q29sbGVjdFBhZHMgKmNvbGxlY3Q7Ci0rICAvKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygb3VyIHBhZHMsIHNvIHdlIGRvIHNvIGhlcmUuICovCi0rICBHc3RQYWQgKnNyY3BhZDsKLSsKLSsgIEFWRm9ybWF0Q29udGV4dCAqY29udGV4dDsKLSsgIGdib29sZWFuIG9wZW5lZDsKLSsKLSsgIGdpbnQgdmlkZW9wYWRzLCBhdWRpb3BhZHM7Ci0rCi0rICAvKjwgcHJpdmF0ZSA+ICovCi0rICAvKiBldmVudF9mdW5jdGlvbiBpcyB0aGUgY29sbGVjdHBhZHMgZGVmYXVsdCBldmVudGZ1bmN0aW9uICovCi0rICBHc3RQYWRFdmVudEZ1bmN0aW9uIGV2ZW50X2Z1bmN0aW9uOwotKyAgaW50IHByZWxvYWQ7Ci0rICBpbnQgbWF4X2RlbGF5OwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0dzdEZGTXBlZ011eENsYXNzIEdzdEZGTXBlZ011eENsYXNzOwotKwotK3N0cnVjdCBfR3N0RkZNcGVnTXV4Q2xhc3MKLSt7Ci0rICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOwotKwotKyAgQVZPdXRwdXRGb3JtYXQgKmluX3BsdWdpbjsKLSt9OwotKwotKyNkZWZpbmUgR1NUX1RZUEVfRkZNUEVHTVVYIFwKLSsgIChnc3RfZmZtcGVnZGVjX2dldF90eXBlKCkpCi0rI2RlZmluZSBHU1RfRkZNUEVHTVVYKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0ZGTVBFR01VWCxHc3RGRk1wZWdNdXgpKQotKyNkZWZpbmUgR1NUX0ZGTVBFR01VWF9DTEFTUyhrbGFzcykgXAotKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfRkZNUEVHTVVYLEdzdEZGTXBlZ011eENsYXNzKSkKLSsjZGVmaW5lIEdTVF9JU19GRk1QRUdNVVgob2JqKSBcCi0rICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfRkZNUEVHTVVYKSkKLSsjZGVmaW5lIEdTVF9JU19GRk1QRUdNVVhfQ0xBU1Moa2xhc3MpIFwKLSsgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0ZGTVBFR01VWCkpCi0rCi0rZW51bQotK3sKLSsgIC8qIEZJTEwgTUUgKi8KLSsgIExBU1RfU0lHTkFMCi0rfTsKLSsKLStlbnVtCi0rewotKyAgQVJHXzAsCi0rICAvKiBGSUxMIE1FICovCi0rfTsKLSsKLStlbnVtCi0rewotKyAgUFJPUF8wLAotKyAgUFJPUF9QUkVMT0FELAotKyAgUFJPUF9NQVhERUxBWQotK307Ci0rCi0rLyogQSBudW1iZXIgb2YgZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUgZ2l2ZW4gc28gd2UgY2FuIHJlZmVyIHRvIHRoZW0gbGF0ZXIuICovCi0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9jbGFzc19pbml0IChHc3RGRk1wZWdNdXhDbGFzcyAqIGtsYXNzKTsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnbXV4X2Jhc2VfaW5pdCAoZ3BvaW50ZXIgZ19jbGFzcyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9pbml0IChHc3RGRk1wZWdNdXggKiBmZm1wZWdtdXgsCi0rICAgIEdzdEZGTXBlZ011eENsYXNzICogZ19jbGFzcyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0rCi0rc3RhdGljIGdib29sZWFuIGdzdF9mZm1wZWdtdXhfc2V0Y2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2Fwcyk7Ci0rc3RhdGljIEdzdFBhZCAqZ3N0X2ZmbXBlZ211eF9yZXF1ZXN0X25ld19wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotKyAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpOwotK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9mZm1wZWdtdXhfY29sbGVjdGVkIChHc3RDb2xsZWN0UGFkcyAqIHBhZHMsCi0rICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7Ci0rCi0rc3RhdGljIGdib29sZWFuIGdzdF9mZm1wZWdtdXhfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KTsKLSsKLStzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X2ZmbXBlZ211eF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotKyAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLSsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnbXV4X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSsgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0rICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotKwotK3N0YXRpYyBHc3RDYXBzICpnc3RfZmZtcGVnbXV4X2dldF9pZF9jYXBzIChlbnVtIENvZGVjSUQgKmlkX2xpc3QpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdfbXV4X3NpbXBsZV9jYXBzX3NldF9pbnRfbGlzdCAoR3N0Q2FwcyAqIGNhcHMsCi0rICAgIGNvbnN0IGdjaGFyICogZmllbGQsIGd1aW50IG51bSwgY29uc3QgZ2ludCAqIHZhbHVlcyk7Ci0rCi0rI2RlZmluZSBHU1RfRkZNVVhfUEFSQU1TX1FEQVRBIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJmZm11eC1wYXJhbXMiKQotKwotK3N0YXRpYyBHc3RFbGVtZW50Q2xhc3MgKnBhcmVudF9jbGFzcyA9IE5VTEw7Ci0rCi0rLypzdGF0aWMgZ3VpbnQgZ3N0X2ZmbXBlZ211eF9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OyAqLwotKwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIGNvbnN0IGNoYXIgKnJlcGxhY2VtZW50OwotK30gR3N0RkZNcGVnTXV4UmVwbGFjZW1lbnQ7Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2dzdF9mZm1wZWdtdXhfZ2V0X3JlcGxhY2VtZW50IChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHN0YXRpYyBjb25zdCBHc3RGRk1wZWdNdXhSZXBsYWNlbWVudCBibGFja2xpc3RbXSA9IHsKLSsgICAgeyJhdmkiLCAiYXZpbXV4In0sCi0rICAgIHsibWF0cm9za2EiLCAibWF0cm9za2FtdXgifSwKLSsgICAgeyJtb3YiLCAicXRtdXgifSwKLSsgICAgeyJtcGVndHMiLCAibXBlZ3RzbXV4In0sCi0rICAgIHsibXA0IiwgIm1wNG11eCJ9LAotKyAgICB7Im1wanBlZyIsICJtdWx0aXBhcnRtdXgifSwKLSsgICAgeyJvZ2ciLCAib2dnbXV4In0sCi0rICAgIHsid2F2IiwgIndhdmVuYyJ9LAotKyAgICB7IndlYm0iLCAid2VibW11eCJ9LAotKyAgICB7Im14ZiIsICJteGZtdXgifSwKLSsgICAgeyIzZ3AiLCAiZ3BwbXV4In0sCi0rICAgIHsieXV2NG1wZWdwaXBlIiwgInk0bWVuYyJ9LAotKyAgICB7ImFpZmYiLCAiYWlmZm11eCJ9LAotKyAgICB7ImFkdHMiLCAiYWFjcGFyc2UifSwKLSsgICAgeyJhc2YiLCAiYXNmbXV4In0sCi0rICAgIHsiYXNmX3N0cmVhbSIsICJhc2ZtdXgifSwKLSsgICAgeyJmbHYiLCAiZmx2bXV4In0sCi0rICAgIHsibXAzIiwgImlkM3YybXV4In0sCi0rICAgIHsibXAyIiwgImlkM3YybXV4In0KLSsgIH07Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGJsYWNrbGlzdCkgLyBzaXplb2YgKGJsYWNrbGlzdFswXSk7IGkrKykgewotKyAgICBpZiAoc3RyY21wIChibGFja2xpc3RbaV0ubmFtZSwgbmFtZSkgPT0gMCkgewotKyAgICAgIHJldHVybiBibGFja2xpc3RbaV0ucmVwbGFjZW1lbnQ7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnbXV4X2lzX2Zvcm1hdHRlciAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBzdGF0aWMgY29uc3QgY2hhciAqcmVwbGFjZVtdID0gewotKyAgICAibXAyIiwgIm1wMyIsIE5VTEwKLSsgIH07Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IHJlcGxhY2VbaV07IGkrKykKLSsgICAgaWYgKHN0cmNtcCAocmVwbGFjZVtpXSwgbmFtZSkgPT0gMCkKLSsgICAgICByZXR1cm4gVFJVRTsKLSsgIHJldHVybiBGQUxTRTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnbXV4X2Jhc2VfaW5pdCAoZ3BvaW50ZXIgZ19jbGFzcykKLSt7Ci0rICBHc3RGRk1wZWdNdXhDbGFzcyAqa2xhc3MgPSAoR3N0RkZNcGVnTXV4Q2xhc3MgKikgZ19jbGFzczsKLSsgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChnX2NsYXNzKTsKLSsgIEdzdFBhZFRlbXBsYXRlICp2aWRlb3Npbmt0ZW1wbCwgKmF1ZGlvc2lua3RlbXBsLCAqc3JjdGVtcGw7Ci0rICBBVk91dHB1dEZvcm1hdCAqaW5fcGx1Z2luOwotKyAgR3N0Q2FwcyAqc3JjY2FwcywgKmF1ZGlvc2lua2NhcHMsICp2aWRlb3NpbmtjYXBzOwotKyAgZW51bSBDb2RlY0lEICp2aWRlb19pZHMgPSBOVUxMLCAqYXVkaW9faWRzID0gTlVMTDsKLSsgIGdjaGFyICpsb25nbmFtZSwgKmRlc2NyaXB0aW9uOwotKyAgY29uc3QgY2hhciAqcmVwbGFjZW1lbnQ7Ci0rICBnYm9vbGVhbiBpc19mb3JtYXR0ZXI7Ci0rCi0rICBpbl9wbHVnaW4gPQotKyAgICAgIChBVk91dHB1dEZvcm1hdCAqKSBnX3R5cGVfZ2V0X3FkYXRhIChHX09CSkVDVF9DTEFTU19UWVBFIChrbGFzcyksCi0rICAgICAgR1NUX0ZGTVVYX1BBUkFNU19RREFUQSk7Ci0rICBnX2Fzc2VydCAoaW5fcGx1Z2luICE9IE5VTEwpOwotKwotKyAgLyogY29uc3RydWN0IHRoZSBlbGVtZW50IGRldGFpbHMgc3RydWN0ICovCi0rICByZXBsYWNlbWVudCA9IGdzdF9mZm1wZWdtdXhfZ2V0X3JlcGxhY2VtZW50IChpbl9wbHVnaW4tPm5hbWUpOwotKyAgaXNfZm9ybWF0dGVyID0gZ3N0X2ZmbXBlZ211eF9pc19mb3JtYXR0ZXIgKGluX3BsdWdpbi0+bmFtZSk7Ci0rICBpZiAocmVwbGFjZW1lbnQgIT0gTlVMTCkgewotKyAgICBsb25nbmFtZSA9Ci0rICAgICAgICBnX3N0cmR1cF9wcmludGYgKCJGRm1wZWcgJXMgJXMgKG5vdCByZWNvbW1lbmRlZCwgdXNlICVzIGluc3RlYWQpIiwKLSsgICAgICAgIGluX3BsdWdpbi0+bG9uZ19uYW1lLCBpc19mb3JtYXR0ZXIgPyAiZm9ybWF0dGVyIiA6ICJtdXhlciIsCi0rICAgICAgICByZXBsYWNlbWVudCk7Ci0rICAgIGRlc2NyaXB0aW9uID0KLSsgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIkZGbXBlZyAlcyAlcyAobm90IHJlY29tbWVuZGVkLCB1c2UgJXMgaW5zdGVhZCkiLAotKyAgICAgICAgaW5fcGx1Z2luLT5sb25nX25hbWUsIGlzX2Zvcm1hdHRlciA/ICJmb3JtYXR0ZXIiIDogIm11eGVyIiwKLSsgICAgICAgIHJlcGxhY2VtZW50KTsKLSsgIH0gZWxzZSB7Ci0rICAgIGxvbmduYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiRkZtcGVnICVzICVzIiwgaW5fcGx1Z2luLT5sb25nX25hbWUsCi0rICAgICAgICBpc19mb3JtYXR0ZXIgPyAiZm9ybWF0dGVyIiA6ICJtdXhlciIpOwotKyAgICBkZXNjcmlwdGlvbiA9IGdfc3RyZHVwX3ByaW50ZiAoIkZGbXBlZyAlcyAlcyIsIGluX3BsdWdpbi0+bG9uZ19uYW1lLAotKyAgICAgICAgaXNfZm9ybWF0dGVyID8gImZvcm1hdHRlciIgOiAibXV4ZXIiKTsKLSsgIH0KLSsgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZSAoZWxlbWVudF9jbGFzcywgbG9uZ25hbWUsCi0rICAgICAgaXNfZm9ybWF0dGVyID8gIkZvcm1hdHRlci9NZXRhZGF0YSIgOiAiQ29kZWMvTXV4ZXIiLCBkZXNjcmlwdGlvbiwKLSsgICAgICAiV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNoZWxsby5iZT4sICIKLSsgICAgICAiUm9uYWxkIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PiIpOwotKyAgZ19mcmVlIChsb25nbmFtZSk7Ci0rICBnX2ZyZWUgKGRlc2NyaXB0aW9uKTsKLSsKLSsgIC8qIFRyeSB0byBmaW5kIHRoZSBjYXBzIHRoYXQgYmVsb25ncyBoZXJlICovCi0rICBzcmNjYXBzID0gZ3N0X2ZmbXBlZ19mb3JtYXRpZF90b19jYXBzIChpbl9wbHVnaW4tPm5hbWUpOwotKyAgaWYgKCFzcmNjYXBzKSB7Ci0rICAgIEdTVF9ERUJVRyAoIkNvdWxkbid0IGdldCBzb3VyY2UgY2FwcyBmb3IgbXV4ZXIgJyVzJywgc2tpcHBpbmcgZm9ybWF0IiwKLSsgICAgICAgIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgIGdvdG8gYmVhY2g7Ci0rICB9Ci0rCi0rICBpZiAoIWdzdF9mZm1wZWdfZm9ybWF0aWRfZ2V0X2NvZGVjaWRzIChpbl9wbHVnaW4tPm5hbWUsCi0rICAgICAgICAgICZ2aWRlb19pZHMsICZhdWRpb19pZHMsIGluX3BsdWdpbikpIHsKLSsgICAgZ3N0X2NhcHNfdW5yZWYgKHNyY2NhcHMpOwotKyAgICBHU1RfREVCVUcKLSsgICAgICAgICgiQ291bGRuJ3QgZ2V0IHNpbmsgY2FwcyBmb3IgbXV4ZXIgJyVzJy4gTW9zdCBsaWtlbHkgYmVjYXVzZSBubyBpbnB1dCBmb3JtYXQgbWFwcGluZyBleGlzdHMuIiwKLSsgICAgICAgIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgIGdvdG8gYmVhY2g7Ci0rICB9Ci0rCi0rICB2aWRlb3NpbmtjYXBzID0gdmlkZW9faWRzID8gZ3N0X2ZmbXBlZ211eF9nZXRfaWRfY2FwcyAodmlkZW9faWRzKSA6IE5VTEw7Ci0rICBhdWRpb3NpbmtjYXBzID0gYXVkaW9faWRzID8gZ3N0X2ZmbXBlZ211eF9nZXRfaWRfY2FwcyAoYXVkaW9faWRzKSA6IE5VTEw7Ci0rCi0rICAvKiBmaXggdXAgYWxsb3dlZCBjYXBzIGZvciBzb21lIG11eGVycyAqLwotKyAgLyogRklYTUUgOiBUaGlzIHNob3VsZCBiZSBpbiBnc3RmZm1wZWdjb2RlY21hcC5jICEgKi8KLSsgIGlmIChzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgImZsdiIpID09IDApIHsKLSsgICAgY29uc3QgZ2ludCByYXRlc1tdID0geyA0NDEwMCwgMjIwNTAsIDExMDI1IH07Ci0rCi0rICAgIGdzdF9mZm1wZWdfbXV4X3NpbXBsZV9jYXBzX3NldF9pbnRfbGlzdCAoYXVkaW9zaW5rY2FwcywgInJhdGUiLCAzLCByYXRlcyk7Ci0rICB9IGVsc2UgaWYgKHN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZ2lmIikgPT0gMCkgewotKyAgICBpZiAodmlkZW9zaW5rY2FwcykKLSsgICAgICBnc3RfY2Fwc191bnJlZiAodmlkZW9zaW5rY2Fwcyk7Ci0rCi0rICAgIHZpZGVvc2lua2NhcHMgPQotKyAgICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby94LXJhdy1yZ2IsIGJwcD0oaW50KTI0LCBkZXB0aD0oaW50KTI0Iik7Ci0rICB9Ci0rCi0rICAvKiBwYWQgdGVtcGxhdGVzICovCi0rICBzcmN0ZW1wbCA9IGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic3JjIiwgR1NUX1BBRF9TUkMsIEdTVF9QQURfQUxXQVlTLCBzcmNjYXBzKTsKLSsgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHNyY3RlbXBsKTsKLSsKLSsgIGlmIChhdWRpb3NpbmtjYXBzKSB7Ci0rICAgIGF1ZGlvc2lua3RlbXBsID0gZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJhdWRpb18lZCIsCi0rICAgICAgICBHU1RfUEFEX1NJTkssIEdTVF9QQURfUkVRVUVTVCwgYXVkaW9zaW5rY2Fwcyk7Ci0rICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIGF1ZGlvc2lua3RlbXBsKTsKLSsgIH0KLSsKLSsgIGlmICh2aWRlb3NpbmtjYXBzKSB7Ci0rICAgIHZpZGVvc2lua3RlbXBsID0gZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJ2aWRlb18lZCIsCi0rICAgICAgICBHU1RfUEFEX1NJTkssIEdTVF9QQURfUkVRVUVTVCwgdmlkZW9zaW5rY2Fwcyk7Ci0rICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHZpZGVvc2lua3RlbXBsKTsKLSsgIH0KLSsKLStiZWFjaDoKLSsgIGtsYXNzLT5pbl9wbHVnaW4gPSBpbl9wbHVnaW47Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ211eF9jbGFzc19pbml0IChHc3RGRk1wZWdNdXhDbGFzcyAqIGtsYXNzKQotK3sKLSsgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSsgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKLSsKLSsgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotKyAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0rCi0rICBwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQgKGtsYXNzKTsKLSsKLSsgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZmZtcGVnbXV4X3NldF9wcm9wZXJ0eSk7Ci0rICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ211eF9nZXRfcHJvcGVydHkpOwotKwotKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9QUkVMT0FELAotKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJwcmVsb2FkIiwgInByZWxvYWQiLAotKyAgICAgICAgICAiU2V0IHRoZSBpbml0aWFsIGRlbXV4LWRlY29kZSBkZWxheSAoaW4gbWljcm9zZWNvbmRzKSIsIDAsIEdfTUFYSU5ULAotKyAgICAgICAgICAwLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsKLSsgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUFYREVMQVksCi0rICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1heGRlbGF5IiwgIm1heGRlbGF5IiwKLSsgICAgICAgICAgIlNldCB0aGUgbWF4aW11bSBkZW11eC1kZWNvZGUgZGVsYXkgKGluIG1pY3Jvc2Vjb25kcykiLCAwLCBHX01BWElOVCwKLSsgICAgICAgICAgMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rCi0rICBnc3RlbGVtZW50X2NsYXNzLT5yZXF1ZXN0X25ld19wYWQgPSBnc3RfZmZtcGVnbXV4X3JlcXVlc3RfbmV3X3BhZDsKLSsgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9mZm1wZWdtdXhfY2hhbmdlX3N0YXRlOwotKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfZmZtcGVnbXV4X2ZpbmFsaXplOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdtdXhfaW5pdCAoR3N0RkZNcGVnTXV4ICogZmZtcGVnbXV4LCBHc3RGRk1wZWdNdXhDbGFzcyAqIGdfY2xhc3MpCi0rewotKyAgR3N0RWxlbWVudENsYXNzICprbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChnX2NsYXNzKTsKLSsgIEdzdEZGTXBlZ011eENsYXNzICpvY2xhc3MgPSAoR3N0RkZNcGVnTXV4Q2xhc3MgKikga2xhc3M7Ci0rICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGwgPSBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChrbGFzcywgInNyYyIpOwotKwotKyAgZmZtcGVnbXV4LT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlICh0ZW1wbCwgInNyYyIpOwotKyAgZ3N0X3BhZF9zZXRfY2FwcyAoZmZtcGVnbXV4LT5zcmNwYWQsIGdzdF9wYWRfdGVtcGxhdGVfZ2V0X2NhcHMgKHRlbXBsKSk7Ci0rICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmZtcGVnbXV4KSwgZmZtcGVnbXV4LT5zcmNwYWQpOwotKwotKyAgZmZtcGVnbXV4LT5jb2xsZWN0ID0gZ3N0X2NvbGxlY3RfcGFkc19uZXcgKCk7Ci0rICBnc3RfY29sbGVjdF9wYWRzX3NldF9mdW5jdGlvbiAoZmZtcGVnbXV4LT5jb2xsZWN0LAotKyAgICAgIChHc3RDb2xsZWN0UGFkc0Z1bmN0aW9uKSBnc3RfZmZtcGVnbXV4X2NvbGxlY3RlZCwgZmZtcGVnbXV4KTsKLSsKLSsgIGZmbXBlZ211eC0+Y29udGV4dCA9IGdfbmV3MCAoQVZGb3JtYXRDb250ZXh0LCAxKTsKLSsgIGZmbXBlZ211eC0+Y29udGV4dC0+b2Zvcm1hdCA9IG9jbGFzcy0+aW5fcGx1Z2luOwotKyAgZmZtcGVnbXV4LT5jb250ZXh0LT5uYl9zdHJlYW1zID0gMDsKLSsgIGdfc25wcmludGYgKGZmbXBlZ211eC0+Y29udGV4dC0+ZmlsZW5hbWUsCi0rICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lKSwKLSsgICAgICAiZ3N0cmVhbWVyOi8vJXAiLCBmZm1wZWdtdXgtPnNyY3BhZCk7Ci0rICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotKwotKyAgZmZtcGVnbXV4LT52aWRlb3BhZHMgPSAwOwotKyAgZmZtcGVnbXV4LT5hdWRpb3BhZHMgPSAwOwotKyAgZmZtcGVnbXV4LT5wcmVsb2FkID0gMDsKLSsgIGZmbXBlZ211eC0+bWF4X2RlbGF5ID0gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnbXV4X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSsgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBHc3RGRk1wZWdNdXggKnNyYzsKLSsKLSsgIHNyYyA9IChHc3RGRk1wZWdNdXggKikgb2JqZWN0OwotKwotKyAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9QUkVMT0FEOgotKyAgICAgIHNyYy0+cHJlbG9hZCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfTUFYREVMQVk6Ci0rICAgICAgc3JjLT5tYXhfZGVsYXkgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotKyAgICAgIGJyZWFrOwotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdtdXhfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwKLSsgICAgR1BhcmFtU3BlYyAqIHBzcGVjKQotK3sKLSsgIEdzdEZGTXBlZ011eCAqc3JjOwotKwotKyAgc3JjID0gKEdzdEZGTXBlZ011eCAqKSBvYmplY3Q7Ci0rCi0rICBzd2l0Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX1BSRUxPQUQ6Ci0rICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgc3JjLT5wcmVsb2FkKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX01BWERFTEFZOgotKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+bWF4X2RlbGF5KTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotKyAgICAgIGJyZWFrOwotKyAgfQotK30KLSsKLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdtdXhfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi0rewotKyAgR3N0RkZNcGVnTXV4ICpmZm1wZWdtdXggPSAoR3N0RkZNcGVnTXV4ICopIG9iamVjdDsKLSsKLSsgIGdfZnJlZSAoZmZtcGVnbXV4LT5jb250ZXh0KTsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGZmbXBlZ211eC0+Y29sbGVjdCk7Ci0rCi0rICBpZiAoR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplKQotKyAgICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Ci0rfQotKwotK3N0YXRpYyBHc3RQYWQgKgotK2dzdF9mZm1wZWdtdXhfcmVxdWVzdF9uZXdfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSsgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotK3sKLSsgIEdzdEZGTXBlZ011eCAqZmZtcGVnbXV4ID0gKEdzdEZGTXBlZ011eCAqKSBlbGVtZW50OwotKyAgR3N0RWxlbWVudENsYXNzICprbGFzcyA9IEdTVF9FTEVNRU5UX0dFVF9DTEFTUyAoZWxlbWVudCk7Ci0rICBHc3RGRk1wZWdNdXhQYWQgKmNvbGxlY3RfcGFkOwotKyAgZ2NoYXIgKnBhZG5hbWU7Ci0rICBHc3RQYWQgKnBhZDsKLSsgIEFWU3RyZWFtICpzdDsKLSsgIGVudW0gQVZNZWRpYVR5cGUgdHlwZTsKLSsgIGdpbnQgYml0cmF0ZSA9IDAsIGZyYW1lc2l6ZSA9IDA7Ci0rCi0rICBnX3JldHVybl92YWxfaWZfZmFpbCAodGVtcGwgIT0gTlVMTCwgTlVMTCk7Ci0rICBnX3JldHVybl92YWxfaWZfZmFpbCAodGVtcGwtPmRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkssIE5VTEwpOwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZmbXBlZ211eC0+b3BlbmVkID09IEZBTFNFLCBOVUxMKTsKLSsKLSsgIC8qIGZpZ3VyZSBvdXQgYSBuYW1lIHRoYXQgKndlKiBsaWtlICovCi0rICBpZiAodGVtcGwgPT0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoa2xhc3MsICJ2aWRlb18lZCIpKSB7Ci0rICAgIHBhZG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJ2aWRlb18lZCIsIGZmbXBlZ211eC0+dmlkZW9wYWRzKyspOwotKyAgICB0eXBlID0gQVZNRURJQV9UWVBFX1ZJREVPOwotKyAgICBiaXRyYXRlID0gNjQgKiAxMDI0OwotKyAgICBmcmFtZXNpemUgPSAxMTUyOwotKyAgfSBlbHNlIGlmICh0ZW1wbCA9PSBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChrbGFzcywgImF1ZGlvXyVkIikpIHsKLSsgICAgcGFkbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImF1ZGlvXyVkIiwgZmZtcGVnbXV4LT5hdWRpb3BhZHMrKyk7Ci0rICAgIHR5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87Ci0rICAgIGJpdHJhdGUgPSAyODUgKiAxMDI0OwotKyAgfSBlbHNlIHsKLSsgICAgZ193YXJuaW5nICgiZmZtdXg6IHVua25vd24gcGFkIHRlbXBsYXRlISIpOwotKyAgICByZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIGNyZWF0ZSBwYWQgKi8KLSsgIHBhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHRlbXBsLCBwYWRuYW1lKTsKLSsgIGNvbGxlY3RfcGFkID0gKEdzdEZGTXBlZ011eFBhZCAqKQotKyAgICAgIGdzdF9jb2xsZWN0X3BhZHNfYWRkX3BhZCAoZmZtcGVnbXV4LT5jb2xsZWN0LCBwYWQsCi0rICAgICAgc2l6ZW9mIChHc3RGRk1wZWdNdXhQYWQpKTsKLSsgIGNvbGxlY3RfcGFkLT5wYWRudW0gPSBmZm1wZWdtdXgtPmNvbnRleHQtPm5iX3N0cmVhbXM7Ci0rCi0rICAvKiBzbWFsbCBoYWNrIHRvIHB1dCBvdXIgb3duIGV2ZW50IHBhZCBmdW5jdGlvbiBhbmQgY2hhaW4gdXAgdG8gY29sbGVjdCBwYWQgKi8KLSsgIGZmbXBlZ211eC0+ZXZlbnRfZnVuY3Rpb24gPSBHU1RfUEFEX0VWRU5URlVOQyAocGFkKTsKLSsgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChwYWQsCi0rICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdtdXhfc2lua19ldmVudCkpOwotKwotKyAgZ3N0X3BhZF9zZXRfc2V0Y2Fwc19mdW5jdGlvbiAocGFkLCBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ211eF9zZXRjYXBzKSk7Ci0rICBnc3RfZWxlbWVudF9hZGRfcGFkIChlbGVtZW50LCBwYWQpOwotKwotKyAgLyogQVZTdHJlYW0gbmVlZHMgdG8gYmUgY3JlYXRlZCAqLwotKyAgc3QgPSBhdl9uZXdfc3RyZWFtIChmZm1wZWdtdXgtPmNvbnRleHQsIGNvbGxlY3RfcGFkLT5wYWRudW0pOwotKyAgc3QtPmNvZGVjLT5jb2RlY190eXBlID0gdHlwZTsKLSsgIHN0LT5jb2RlYy0+Y29kZWNfaWQgPSBDT0RFQ19JRF9OT05FOyAgLyogdGhpcyBpcyBhIGNoZWNrIGFmdGVyd2FyZHMgKi8KLSsgIHN0LT5zdHJlYW1fY29weSA9IDE7ICAgICAgICAgIC8qIHdlJ3JlIG5vdCB0aGUgYWN0dWFsIGVuY29kZXIgKi8KLSsgIHN0LT5jb2RlYy0+Yml0X3JhdGUgPSBiaXRyYXRlOwotKyAgc3QtPmNvZGVjLT5mcmFtZV9zaXplID0gZnJhbWVzaXplOwotKyAgLyogd2UgZmlsbCBpbiBjb2RlYyBkdXJpbmcgY2Fwc25lZ28gKi8KLSsKLSsgIC8qIHdlIGxvdmUgZGVidWcgb3V0cHV0IChjKSAodG0pIChyKSAqLwotKyAgR1NUX0RFQlVHICgiQ3JlYXRlZCAlcyBwYWQgZm9yIGZmbXV4XyVzIGVsZW1lbnQiLAotKyAgICAgIHBhZG5hbWUsICgoR3N0RkZNcGVnTXV4Q2xhc3MgKikga2xhc3MpLT5pbl9wbHVnaW4tPm5hbWUpOwotKyAgZ19mcmVlIChwYWRuYW1lKTsKLSsKLSsgIHJldHVybiBwYWQ7Ci0rfQotKwotKy8qKgotKyAqIGdzdF9mZm1wZWdtdXhfc2V0Y2FwcwotKyAqIEBwYWQ6ICNHc3RQYWQKLSsgKiBAY2FwczogTmV3IGNhcHMuCi0rICoKLSsgKiBTZXQgY2FwcyB0byBwYWQuCi0rICoKLSsgKiBSZXR1cm5zOiAjVFJVRSBvbiBzdWNjZXNzLgotKyAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdtdXhfc2V0Y2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKLSt7Ci0rICBHc3RGRk1wZWdNdXggKmZmbXBlZ211eCA9IChHc3RGRk1wZWdNdXggKikgKGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKSk7Ci0rICBHc3RGRk1wZWdNdXhQYWQgKmNvbGxlY3RfcGFkOwotKyAgQVZTdHJlYW0gKnN0OwotKwotKyAgY29sbGVjdF9wYWQgPSAoR3N0RkZNcGVnTXV4UGFkICopIGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKLSsKLSsgIHN0ID0gZmZtcGVnbXV4LT5jb250ZXh0LT5zdHJlYW1zW2NvbGxlY3RfcGFkLT5wYWRudW1dOwotKyAgZmZtcGVnbXV4LT5jb250ZXh0LT5wcmVsb2FkID0gZmZtcGVnbXV4LT5wcmVsb2FkOwotKyAgZmZtcGVnbXV4LT5jb250ZXh0LT5tYXhfZGVsYXkgPSBmZm1wZWdtdXgtPm1heF9kZWxheTsKLSsKLSsgIC8qIGZvciB0aGUgZm9ybWF0LXNwZWNpZmljIGd1ZXNzZXMsIHdlJ2xsIGdvIHRvCi0rICAgKiBvdXIgZmFtb3VzIGNvZGVjIG1hcHBlciAqLwotKyAgaWYgKGdzdF9mZm1wZWdfY2Fwc190b19jb2RlY2lkIChjYXBzLCBzdC0+Y29kZWMpID09IENPREVDX0lEX05PTkUpCi0rICAgIGdvdG8gbm90X2FjY2VwdGVkOwotKwotKyAgLyogY29weSBvdmVyIHRoZSBhc3BlY3QgcmF0aW9zLCBmZm1wZWcgZXhwZWN0cyB0aGUgc3RyZWFtIGFzcGVjdCB0byBtYXRjaCB0aGUKLSsgICAqIGNvZGVjIGFzcGVjdC4gKi8KLSsgIHN0LT5zYW1wbGVfYXNwZWN0X3JhdGlvID0gc3QtPmNvZGVjLT5zYW1wbGVfYXNwZWN0X3JhdGlvOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgImFjY2VwdGVkIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotKyAgcmV0dXJuIFRSVUU7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStub3RfYWNjZXB0ZWQ6Ci0rICB7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJyZWplY3RpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSt9Ci0rCi0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ211eF9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICogZXZlbnQpCi0rewotKyAgR3N0RkZNcGVnTXV4ICpmZm1wZWdtdXggPSAoR3N0RkZNcGVnTXV4ICopIGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKTsKLSsgIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0rCi0rICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSsgICAgY2FzZSBHU1RfRVZFTlRfVEFHOnsKLSsgICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwotKyAgICAgIEdzdFRhZ1NldHRlciAqc2V0dGVyID0gR1NUX1RBR19TRVRURVIgKGZmbXBlZ211eCk7Ci0rICAgICAgY29uc3QgR3N0VGFnTWVyZ2VNb2RlIG1vZGUgPSBnc3RfdGFnX3NldHRlcl9nZXRfdGFnX21lcmdlX21vZGUgKHNldHRlcik7Ci0rCi0rICAgICAgZ3N0X2V2ZW50X3BhcnNlX3RhZyAoZXZlbnQsICZ0YWdsaXN0KTsKLSsgICAgICBnc3RfdGFnX3NldHRlcl9tZXJnZV90YWdzIChzZXR0ZXIsIHRhZ2xpc3QsIG1vZGUpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiBjaGFpbmluZyB1cCB0byBjb2xsZWN0cGFkcyBkZWZhdWx0IGV2ZW50IGZ1bmN0aW9uICovCi0rICByZXMgPSBmZm1wZWdtdXgtPmV2ZW50X2Z1bmN0aW9uIChwYWQsIGV2ZW50KTsKLSsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGZmbXBlZ211eCk7Ci0rICByZXR1cm4gcmVzOwotK30KLSsKLStzdGF0aWMgR3N0Rmxvd1JldHVybgotK2dzdF9mZm1wZWdtdXhfY29sbGVjdGVkIChHc3RDb2xsZWN0UGFkcyAqIHBhZHMsIGdwb2ludGVyIHVzZXJfZGF0YSkKLSt7Ci0rICBHc3RGRk1wZWdNdXggKmZmbXBlZ211eCA9IChHc3RGRk1wZWdNdXggKikgdXNlcl9kYXRhOwotKyAgR1NMaXN0ICpjb2xsZWN0ZWQ7Ci0rICBHc3RGRk1wZWdNdXhQYWQgKmJlc3RfcGFkOwotKyAgR3N0Q2xvY2tUaW1lIGJlc3RfdGltZTsKLSsjaWYgMAotKyAgLyogUmUtZW5hYmxlIG9uY2UgY29udmVydGVkIHRvIG5ldyBBVk1ldGFEYXRhIEFQSQotKyAgICogU2VlICM1NjY2MDUKLSsgICAqLwotKyAgY29uc3QgR3N0VGFnTGlzdCAqdGFnczsKLSsjZW5kaWYKLSsKLSsgIC8qIG9wZW4gImZpbGUiIChnc3RyZWFtZXIgcHJvdG9jb2wgdG8gbmV4dCBlbGVtZW50KSAqLwotKyAgaWYgKCFmZm1wZWdtdXgtPm9wZW5lZCkgewotKyAgICBpbnQgb3Blbl9mbGFncyA9IFVSTF9XUk9OTFk7Ci0rCi0rICAgIC8qIHdlIGRvIG5lZWQgYWxsIHN0cmVhbXMgdG8gaGF2ZSBzdGFydGVkIGNhcHNuZWdvLAotKyAgICAgKiBvciB0aGluZ3Mgd2lsbCBnbyBob3JyaWJseSB3cm9uZyAqLwotKyAgICBmb3IgKGNvbGxlY3RlZCA9IGZmbXBlZ211eC0+Y29sbGVjdC0+ZGF0YTsgY29sbGVjdGVkOwotKyAgICAgICAgY29sbGVjdGVkID0gZ19zbGlzdF9uZXh0IChjb2xsZWN0ZWQpKSB7Ci0rICAgICAgR3N0RkZNcGVnTXV4UGFkICpjb2xsZWN0X3BhZCA9IChHc3RGRk1wZWdNdXhQYWQgKikgY29sbGVjdGVkLT5kYXRhOwotKyAgICAgIEFWU3RyZWFtICpzdCA9IGZmbXBlZ211eC0+Y29udGV4dC0+c3RyZWFtc1tjb2xsZWN0X3BhZC0+cGFkbnVtXTsKLSsKLSsgICAgICAvKiBjaGVjayB3aGV0aGVyIHRoZSBwYWQgaGFzIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgY2Fwc25lZ28gKi8KLSsgICAgICBpZiAoc3QtPmNvZGVjLT5jb2RlY19pZCA9PSBDT0RFQ19JRF9OT05FKSB7Ci0rICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnbXV4LCBDT1JFLCBORUdPVElBVElPTiwgKE5VTEwpLAotKyAgICAgICAgICAgICgibm8gY2FwcyBzZXQgb24gc3RyZWFtICVkICglcykiLCBjb2xsZWN0X3BhZC0+cGFkbnVtLAotKyAgICAgICAgICAgICAgICAoc3QtPmNvZGVjLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgPwotKyAgICAgICAgICAgICAgICAidmlkZW8iIDogImF1ZGlvIikpOwotKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotKyAgICAgIH0KLSsgICAgICAvKiBzZXQgZnJhbWVyYXRlIGZvciBhdWRpbyAqLwotKyAgICAgIGlmIChzdC0+Y29kZWMtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7Ci0rICAgICAgICBzd2l0Y2ggKHN0LT5jb2RlYy0+Y29kZWNfaWQpIHsKLSsgICAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fUzE2TEU6Ci0rICAgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1MxNkJFOgotKyAgICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9VMTZMRToKLSsgICAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTE2QkU6Ci0rICAgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1M4OgotKyAgICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9VODoKLSsgICAgICAgICAgICBzdC0+Y29kZWMtPmZyYW1lX3NpemUgPSAxOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICB7Ci0rICAgICAgICAgICAgR3N0QnVmZmVyICpidWZmZXI7Ci0rCi0rICAgICAgICAgICAgLyogRklYTUUgOiBUaGlzIGRvZXNuJ3Qgd29yayBmb3IgUkFXIEFVRElPLi4uCi0rICAgICAgICAgICAgICogaW4gZmFjdCBJJ20gd29uZGVyaW5nIGlmIGl0IGV2ZW4gd29ya3MgZm9yIGFueSBraW5kIG9mIGF1ZGlvLi4uICovCi0rICAgICAgICAgICAgYnVmZmVyID0gZ3N0X2NvbGxlY3RfcGFkc19wZWVrIChmZm1wZWdtdXgtPmNvbGxlY3QsCi0rICAgICAgICAgICAgICAgIChHc3RDb2xsZWN0RGF0YSAqKSBjb2xsZWN0X3BhZCk7Ci0rICAgICAgICAgICAgaWYgKGJ1ZmZlcikgewotKyAgICAgICAgICAgICAgc3QtPmNvZGVjLT5mcmFtZV9zaXplID0KLSsgICAgICAgICAgICAgICAgICBzdC0+Y29kZWMtPnNhbXBsZV9yYXRlICoKLSsgICAgICAgICAgICAgICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpIC8gR1NUX1NFQ09ORDsKLSsgICAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rI2lmIDAKLSsgICAgLyogUmUtZW5hYmxlIG9uY2UgY29udmVydGVkIHRvIG5ldyBBVk1ldGFEYXRhIEFQSQotKyAgICAgKiBTZWUgIzU2NjYwNQotKyAgICAgKi8KLSsKLSsgICAgLyogdGFncyAqLwotKyAgICB0YWdzID0gZ3N0X3RhZ19zZXR0ZXJfZ2V0X3RhZ19saXN0IChHU1RfVEFHX1NFVFRFUiAoZmZtcGVnbXV4KSk7Ci0rICAgIGlmICh0YWdzKSB7Ci0rICAgICAgZ2ludCBpOwotKyAgICAgIGdjaGFyICpzOwotKwotKyAgICAgIC8qIGdldCB0aGUgaW50ZXJlc3Rpbmcgb25lcyAqLwotKyAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19USVRMRSwgJnMpKSB7Ci0rICAgICAgICBzdHJuY3B5IChmZm1wZWdtdXgtPmNvbnRleHQtPnRpdGxlLCBzLAotKyAgICAgICAgICAgIHNpemVvZiAoZmZtcGVnbXV4LT5jb250ZXh0LT50aXRsZSkpOwotKyAgICAgIH0KLSsgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfQVJUSVNULCAmcykpIHsKLSsgICAgICAgIHN0cm5jcHkgKGZmbXBlZ211eC0+Y29udGV4dC0+YXV0aG9yLCBzLAotKyAgICAgICAgICAgIHNpemVvZiAoZmZtcGVnbXV4LT5jb250ZXh0LT5hdXRob3IpKTsKLSsgICAgICB9Ci0rICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0NPUFlSSUdIVCwgJnMpKSB7Ci0rICAgICAgICBzdHJuY3B5IChmZm1wZWdtdXgtPmNvbnRleHQtPmNvcHlyaWdodCwgcywKLSsgICAgICAgICAgICBzaXplb2YgKGZmbXBlZ211eC0+Y29udGV4dC0+Y29weXJpZ2h0KSk7Ci0rICAgICAgfQotKyAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19DT01NRU5ULCAmcykpIHsKLSsgICAgICAgIHN0cm5jcHkgKGZmbXBlZ211eC0+Y29udGV4dC0+Y29tbWVudCwgcywKLSsgICAgICAgICAgICBzaXplb2YgKGZmbXBlZ211eC0+Y29udGV4dC0+Y29tbWVudCkpOwotKyAgICAgIH0KLSsgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfQUxCVU0sICZzKSkgewotKyAgICAgICAgc3RybmNweSAoZmZtcGVnbXV4LT5jb250ZXh0LT5hbGJ1bSwgcywKLSsgICAgICAgICAgICBzaXplb2YgKGZmbXBlZ211eC0+Y29udGV4dC0+YWxidW0pKTsKLSsgICAgICB9Ci0rICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0dFTlJFLCAmcykpIHsKLSsgICAgICAgIHN0cm5jcHkgKGZmbXBlZ211eC0+Y29udGV4dC0+Z2VucmUsIHMsCi0rICAgICAgICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmdlbnJlKSk7Ci0rICAgICAgfQotKyAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X2ludCAodGFncywgR1NUX1RBR19UUkFDS19OVU1CRVIsICZpKSkgewotKyAgICAgICAgZmZtcGVnbXV4LT5jb250ZXh0LT50cmFjayA9IGk7Ci0rICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICAgIC8qIHNldCB0aGUgc3RyZWFtaGVhZGVyIGZsYWcgZm9yIGdzdGZmbXBlZ3Byb3RvY29sIGlmIGNvZGVjIHN1cHBvcnRzIGl0ICovCi0rICAgIGlmICghc3RyY21wIChmZm1wZWdtdXgtPmNvbnRleHQtPm9mb3JtYXQtPm5hbWUsICJmbHYiKSkgewotKyAgICAgIG9wZW5fZmxhZ3MgfD0gR1NUX0ZGTVBFR19VUkxfU1RSRUFNSEVBREVSOwotKyAgICB9Ci0rCi0rICAgIGlmICh1cmxfZm9wZW4gKCZmZm1wZWdtdXgtPmNvbnRleHQtPnBiLAotKyAgICAgICAgICAgIGZmbXBlZ211eC0+Y29udGV4dC0+ZmlsZW5hbWUsIG9wZW5fZmxhZ3MpIDwgMCkgewotKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdtdXgsIExJQlJBUlksIFRPT19MQVpZLCAoTlVMTCksCi0rICAgICAgICAgICgiRmFpbGVkIHRvIG9wZW4gc3RyZWFtIGNvbnRleHQgaW4gZmZtdXgiKSk7Ci0rICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIGlmIChhdl9zZXRfcGFyYW1ldGVycyAoZmZtcGVnbXV4LT5jb250ZXh0LCBOVUxMKSA8IDApIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnbXV4LCBMSUJSQVJZLCBJTklULCAoTlVMTCksCi0rICAgICAgICAgICgiRmFpbGVkIHRvIGluaXRpYWxpemUgbXV4ZXIiKSk7Ci0rICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIC8qIG5vdyBvcGVuIHRoZSBtdXggZm9ybWF0ICovCi0rICAgIGlmIChhdl93cml0ZV9oZWFkZXIgKGZmbXBlZ211eC0+Y29udGV4dCkgPCAwKSB7Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ211eCwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKLSsgICAgICAgICAgKCJGYWlsZWQgdG8gd3JpdGUgZmlsZSBoZWFkZXIgLSBjaGVjayBjb2RlYyBzZXR0aW5ncyIpKTsKLSsgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0rICAgIH0KLSsKLSsgICAgLyogd2UncmUgbm93IG9wZW5lZCAqLwotKyAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IFRSVUU7Ci0rCi0rICAgIC8qIGZsdXNoIHRoZSBoZWFkZXIgc28gaXQgd2lsbCBiZSB1c2VkIGFzIHN0cmVhbWhlYWRlciAqLwotKyAgICBwdXRfZmx1c2hfcGFja2V0IChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgIH0KLSsKLSsgIC8qIHRha2UgdGhlIG9uZSB3aXRoIGVhcmxpZXN0IHRpbWVzdGFtcCwKLSsgICAqIGFuZCBwdXNoIGl0IGZvcndhcmQgKi8KLSsgIGJlc3RfcGFkID0gTlVMTDsKLSsgIGJlc3RfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICBmb3IgKGNvbGxlY3RlZCA9IGZmbXBlZ211eC0+Y29sbGVjdC0+ZGF0YTsgY29sbGVjdGVkOwotKyAgICAgIGNvbGxlY3RlZCA9IGdfc2xpc3RfbmV4dCAoY29sbGVjdGVkKSkgewotKyAgICBHc3RGRk1wZWdNdXhQYWQgKmNvbGxlY3RfcGFkID0gKEdzdEZGTXBlZ011eFBhZCAqKSBjb2xsZWN0ZWQtPmRhdGE7Ci0rICAgIEdzdEJ1ZmZlciAqYnVmZmVyID0gZ3N0X2NvbGxlY3RfcGFkc19wZWVrIChmZm1wZWdtdXgtPmNvbGxlY3QsCi0rICAgICAgICAoR3N0Q29sbGVjdERhdGEgKikgY29sbGVjdF9wYWQpOwotKwotKyAgICAvKiBpZiB0aGVyZSdzIG5vIGJ1ZmZlciwganVzdCBjb250aW51ZSAqLwotKyAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKLSsgICAgICBjb250aW51ZTsKLSsgICAgfQotKwotKyAgICAvKiBpZiB3ZSBoYXZlIG5vIGJ1ZmZlciB5ZXQsIGp1c3QgdXNlIHRoZSBmaXJzdCBvbmUgKi8KLSsgICAgaWYgKGJlc3RfcGFkID09IE5VTEwpIHsKLSsgICAgICBiZXN0X3BhZCA9IGNvbGxlY3RfcGFkOwotKyAgICAgIGJlc3RfdGltZSA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOwotKyAgICAgIGdvdG8gbmV4dF9wYWQ7Ci0rICAgIH0KLSsKLSsgICAgLyogaWYgd2UgZG8gaGF2ZSBvbmUsIG9ubHkgdXNlIHRoaXMgb25lIGlmIGl0J3Mgb2xkZXIgKi8KLSsgICAgaWYgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpIDwgYmVzdF90aW1lKSB7Ci0rICAgICAgYmVzdF90aW1lID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcik7Ci0rICAgICAgYmVzdF9wYWQgPSBjb2xsZWN0X3BhZDsKLSsgICAgfQotKwotKyAgbmV4dF9wYWQ6Ci0rICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0rCi0rICAgIC8qIE11eCBidWZmZXJzIHdpdGggaW52YWxpZCB0aW1lc3RhbXAgZmlyc3QgKi8KLSsgICAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoYmVzdF90aW1lKSkKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIC8qIG5vdyBoYW5kbGUgdGhlIGJ1ZmZlciwgb3Igc2lnbmFsIEVPUyBpZiB3ZSBoYXZlCi0rICAgKiBubyBidWZmZXJzIGxlZnQgKi8KLSsgIGlmIChiZXN0X3BhZCAhPSBOVUxMKSB7Ci0rICAgIEdzdEJ1ZmZlciAqYnVmOwotKyAgICBBVlBhY2tldCBwa3Q7Ci0rICAgIGdib29sZWFuIG5lZWRfZnJlZSA9IEZBTFNFOwotKwotKyAgICAvKiBwdXNoIG91dCBjdXJyZW50IGJ1ZmZlciAqLwotKyAgICBidWYgPSBnc3RfY29sbGVjdF9wYWRzX3BvcCAoZmZtcGVnbXV4LT5jb2xsZWN0LAotKyAgICAgICAgKEdzdENvbGxlY3REYXRhICopIGJlc3RfcGFkKTsKLSsKLSsgICAgZmZtcGVnbXV4LT5jb250ZXh0LT5zdHJlYW1zW2Jlc3RfcGFkLT5wYWRudW1dLT5jb2RlYy0+ZnJhbWVfbnVtYmVyKys7Ci0rCi0rICAgIC8qIHNldCB0aW1lICovCi0rICAgIHBrdC5wdHMgPSBnc3RfZmZtcGVnX3RpbWVfZ3N0X3RvX2ZmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSwKLSsgICAgICAgIGZmbXBlZ211eC0+Y29udGV4dC0+c3RyZWFtc1tiZXN0X3BhZC0+cGFkbnVtXS0+dGltZV9iYXNlKTsKLSsgICAgcGt0LmR0cyA9IHBrdC5wdHM7Ci0rCi0rICAgIGlmIChzdHJjbXAgKGZmbXBlZ211eC0+Y29udGV4dC0+b2Zvcm1hdC0+bmFtZSwgImdpZiIpID09IDApIHsKLSsgICAgICBBVlN0cmVhbSAqc3QgPSBmZm1wZWdtdXgtPmNvbnRleHQtPnN0cmVhbXNbYmVzdF9wYWQtPnBhZG51bV07Ci0rICAgICAgQVZQaWN0dXJlIHNyYywgZHN0OwotKwotKyAgICAgIG5lZWRfZnJlZSA9IFRSVUU7Ci0rICAgICAgcGt0LnNpemUgPSBzdC0+Y29kZWMtPndpZHRoICogc3QtPmNvZGVjLT5oZWlnaHQgKiAzOwotKyAgICAgIHBrdC5kYXRhID0gZ19tYWxsb2MgKHBrdC5zaXplKTsKLSsKLSsgICAgICBkc3QuZGF0YVswXSA9IHBrdC5kYXRhOwotKyAgICAgIGRzdC5kYXRhWzFdID0gTlVMTDsKLSsgICAgICBkc3QuZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgZHN0LmxpbmVzaXplWzBdID0gc3QtPmNvZGVjLT53aWR0aCAqIDM7Ci0rCi0rICAgICAgZ3N0X2ZmbXBlZ19hdnBpY3R1cmVfZmlsbCAoJnNyYywgR1NUX0JVRkZFUl9EQVRBIChidWYpLAotKyAgICAgICAgICBQSVhfRk1UX1JHQjI0LCBzdC0+Y29kZWMtPndpZHRoLCBzdC0+Y29kZWMtPmhlaWdodCk7Ci0rCi0rICAgICAgYXZfcGljdHVyZV9jb3B5ICgmZHN0LCAmc3JjLCBQSVhfRk1UX1JHQjI0LAotKyAgICAgICAgICBzdC0+Y29kZWMtPndpZHRoLCBzdC0+Y29kZWMtPmhlaWdodCk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgcGt0LmRhdGEgPSBHU1RfQlVGRkVSX0RBVEEgKGJ1Zik7Ci0rICAgICAgcGt0LnNpemUgPSBHU1RfQlVGRkVSX1NJWkUgKGJ1Zik7Ci0rICAgIH0KLSsKLSsgICAgcGt0LnN0cmVhbV9pbmRleCA9IGJlc3RfcGFkLT5wYWRudW07Ci0rICAgIHBrdC5mbGFncyA9IDA7Ci0rCi0rICAgIGlmICghR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCkpCi0rICAgICAgcGt0LmZsYWdzIHw9IEFWX1BLVF9GTEFHX0tFWTsKLSsKLSsgICAgaWYgKEdTVF9CVUZGRVJfRFVSQVRJT05fSVNfVkFMSUQgKGJ1ZikpCi0rICAgICAgcGt0LmR1cmF0aW9uID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ190aW1lX2dzdF90b19mZiAoR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSwKLSsgICAgICAgICAgZmZtcGVnbXV4LT5jb250ZXh0LT5zdHJlYW1zW2Jlc3RfcGFkLT5wYWRudW1dLT50aW1lX2Jhc2UpOwotKyAgICBlbHNlCi0rICAgICAgcGt0LmR1cmF0aW9uID0gMDsKLSsgICAgYXZfd3JpdGVfZnJhbWUgKGZmbXBlZ211eC0+Y29udGV4dCwgJnBrdCk7Ci0rICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0rICAgIGlmIChuZWVkX2ZyZWUpCi0rICAgICAgZ19mcmVlIChwa3QuZGF0YSk7Ci0rICB9IGVsc2UgewotKyAgICAvKiBjbG9zZSBkb3duICovCi0rICAgIGF2X3dyaXRlX3RyYWlsZXIgKGZmbXBlZ211eC0+Y29udGV4dCk7Ci0rICAgIGZmbXBlZ211eC0+b3BlbmVkID0gRkFMU0U7Ci0rICAgIHB1dF9mbHVzaF9wYWNrZXQgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotKyAgICB1cmxfZmNsb3NlIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChmZm1wZWdtdXgtPnNyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwotKyAgICByZXR1cm4gR1NUX0ZMT1dfVU5FWFBFQ1RFRDsKLSsgIH0KLSsKLSsgIHJldHVybiBHU1RfRkxPV19PSzsKLSt9Ci0rCi0rc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi0rZ3N0X2ZmbXBlZ211eF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotK3sKLSsgIEdzdEZsb3dSZXR1cm4gcmV0OwotKyAgR3N0RkZNcGVnTXV4ICpmZm1wZWdtdXggPSAoR3N0RkZNcGVnTXV4ICopIChlbGVtZW50KTsKLSsKLSsgIHN3aXRjaCAodHJhbnNpdGlvbikgewotKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKLSsgICAgICBnc3RfY29sbGVjdF9wYWRzX3N0YXJ0IChmZm1wZWdtdXgtPmNvbGxlY3QpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0rICAgICAgZ3N0X2NvbGxlY3RfcGFkc19zdG9wIChmZm1wZWdtdXgtPmNvbGxlY3QpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7Ci0rCi0rICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFVU0VEOgotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgotKyAgICAgIGdzdF90YWdfc2V0dGVyX3Jlc2V0X3RhZ3MgKEdTVF9UQUdfU0VUVEVSIChmZm1wZWdtdXgpKTsKLSsgICAgICBpZiAoZmZtcGVnbXV4LT5vcGVuZWQpIHsKLSsgICAgICAgIGZmbXBlZ211eC0+b3BlbmVkID0gRkFMU0U7Ci0rICAgICAgICB1cmxfZmNsb3NlIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIEdzdENhcHMgKgotK2dzdF9mZm1wZWdtdXhfZ2V0X2lkX2NhcHMgKGVudW0gQ29kZWNJRCAqaWRfbGlzdCkKLSt7Ci0rICBHc3RDYXBzICpjYXBzLCAqdDsKLSsgIGdpbnQgaTsKLSsKLSsgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0rICBmb3IgKGkgPSAwOyBpZF9saXN0W2ldICE9IENPREVDX0lEX05PTkU7IGkrKykgewotKyAgICBpZiAoKHQgPSBnc3RfZmZtcGVnX2NvZGVjaWRfdG9fY2FwcyAoaWRfbGlzdFtpXSwgTlVMTCwgVFJVRSkpKQotKyAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgdCk7Ci0rICB9Ci0rICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGNhcHMpKSB7Ci0rICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICByZXR1cm4gY2FwczsKLSt9Ci0rCi0rLyogc2V0IGEgbGlzdCBvZiBpbnRlZ2VyIHZhbHVlcyBvbiB0aGUgY2FwcywgZS5nLiBmb3Igc2FtcGxlIHJhdGVzICovCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnX211eF9zaW1wbGVfY2Fwc19zZXRfaW50X2xpc3QgKEdzdENhcHMgKiBjYXBzLCBjb25zdCBnY2hhciAqIGZpZWxkLAotKyAgICBndWludCBudW0sIGNvbnN0IGdpbnQgKiB2YWx1ZXMpCi0rewotKyAgR1ZhbHVlIGxpc3QgPSB7IDAsIH07Ci0rICBHVmFsdWUgdmFsID0geyAwLCB9OwotKyAgZ2ludCBpOwotKwotKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0NBUFNfSVNfU0lNUExFIChjYXBzKSk7Ci0rCi0rICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKLSsgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX0lOVCk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsKLSsgICAgZ192YWx1ZV9zZXRfaW50ICgmdmFsLCB2YWx1ZXNbaV0pOwotKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKLSsgIH0KLSsKLSsgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKSwgZmllbGQsICZsaXN0KTsKLSsKLSsgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOwotKyAgZ192YWx1ZV91bnNldCAoJmxpc3QpOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9mZm1wZWdtdXhfcmVnaXN0ZXIgKEdzdFBsdWdpbiAqIHBsdWdpbikKLSt7Ci0rICBHVHlwZUluZm8gdHlwZWluZm8gPSB7Ci0rICAgIHNpemVvZiAoR3N0RkZNcGVnTXV4Q2xhc3MpLAotKyAgICAoR0Jhc2VJbml0RnVuYykgZ3N0X2ZmbXBlZ211eF9iYXNlX2luaXQsCi0rICAgIE5VTEwsCi0rICAgIChHQ2xhc3NJbml0RnVuYykgZ3N0X2ZmbXBlZ211eF9jbGFzc19pbml0LAotKyAgICBOVUxMLAotKyAgICBOVUxMLAotKyAgICBzaXplb2YgKEdzdEZGTXBlZ011eCksCi0rICAgIDAsCi0rICAgIChHSW5zdGFuY2VJbml0RnVuYykgZ3N0X2ZmbXBlZ211eF9pbml0LAotKyAgfTsKLSsgIHN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyB0YWdfc2V0dGVyX2luZm8gPSB7Ci0rICAgIE5VTEwsIE5VTEwsIE5VTEwKLSsgIH07Ci0rICBHVHlwZSB0eXBlOwotKyAgQVZPdXRwdXRGb3JtYXQgKmluX3BsdWdpbjsKLSsKLSsgIGluX3BsdWdpbiA9IGF2X29mb3JtYXRfbmV4dCAoTlVMTCk7Ci0rCi0rICBHU1RfTE9HICgiUmVnaXN0ZXJpbmcgbXV4ZXJzIik7Ci0rCi0rICB3aGlsZSAoaW5fcGx1Z2luKSB7Ci0rICAgIGdjaGFyICp0eXBlX25hbWU7Ci0rICAgIGdjaGFyICpwOwotKyAgICBHc3RSYW5rIHJhbmsgPSBHU1RfUkFOS19NQVJHSU5BTDsKLSsKLSsgICAgaWYgKCghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAidTE2IiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInMxNiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJ1MjQiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiczI0IiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInU4IiwgMikpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInM4IiwgMikpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInUzMiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJzMzIiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZjMyIiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImY2NCIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJyYXciLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiY3JjIiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgIm51bGwiLCA0KSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZ2lmIiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImZyYW1lIiwgNSkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImltYWdlIiwgNSkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgIm11bGF3IiwgNSkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImFsYXciLCA0KSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiaDI2IiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInJ0cCIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJhc3MiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZmZtZXRhZGF0YSIsIDEwKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAic3J0IiwgMykpCi0rICAgICAgICApIHsKLSsgICAgICBHU1RfTE9HICgiSWdub3JpbmcgbXV4ZXIgJXMiLCBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICBpZiAoKCFzdHJuY21wIChpbl9wbHVnaW4tPmxvbmdfbmFtZSwgInJhdyAiLCA0KSkpIHsKLSsgICAgICBHU1RfTE9HICgiSWdub3JpbmcgcmF3IG11eGVyICVzIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGdzdF9mZm1wZWdtdXhfZ2V0X3JlcGxhY2VtZW50IChpbl9wbHVnaW4tPm5hbWUpKQotKyAgICAgIHJhbmsgPSBHU1RfUkFOS19OT05FOwotKwotKyAgICAvKiBGSVhNRSA6IFdlIG5lZWQgYSBmYXN0IHdheSB0byBrbm93IHdoZXRoZXIgd2UgaGF2ZSBtYXBwaW5ncyBmb3IgdGhpcwotKyAgICAgKiBtdXhlciB0eXBlLiAqLwotKwotKyAgICAvKiBjb25zdHJ1Y3QgdGhlIHR5cGUgKi8KLSsgICAgdHlwZV9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiZmZtdXhfJXMiLCBpbl9wbHVnaW4tPm5hbWUpOwotKwotKyAgICBwID0gdHlwZV9uYW1lOwotKwotKyAgICB3aGlsZSAoKnApIHsKLSsgICAgICBpZiAoKnAgPT0gJy4nKQotKyAgICAgICAgKnAgPSAnXyc7Ci0rICAgICAgcCsrOwotKyAgICB9Ci0rCi0rICAgIHR5cGUgPSBnX3R5cGVfZnJvbV9uYW1lICh0eXBlX25hbWUpOwotKwotKyAgICBpZiAoIXR5cGUpIHsKLSsgICAgICAvKiBjcmVhdGUgdGhlIHR5cGUgbm93ICovCi0rICAgICAgdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKEdTVF9UWVBFX0VMRU1FTlQsIHR5cGVfbmFtZSwgJnR5cGVpbmZvLCAwKTsKLSsgICAgICBnX3R5cGVfc2V0X3FkYXRhICh0eXBlLCBHU1RfRkZNVVhfUEFSQU1TX1FEQVRBLCAoZ3BvaW50ZXIpIGluX3BsdWdpbik7Ci0rICAgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljICh0eXBlLCBHU1RfVFlQRV9UQUdfU0VUVEVSLCAmdGFnX3NldHRlcl9pbmZvKTsKLSsgICAgfQotKwotKyAgICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sIHR5cGVfbmFtZSwgcmFuaywgdHlwZSkpIHsKLSsgICAgICBnX2ZyZWUgKHR5cGVfbmFtZSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICB9Ci0rCi0rICAgIGdfZnJlZSAodHlwZV9uYW1lKTsKLSsKLSsgIG5leHQ6Ci0rICAgIGluX3BsdWdpbiA9IGF2X29mb3JtYXRfbmV4dCAoaW5fcGx1Z2luKTsKLSsgIH0KLSsKLSsgIEdTVF9MT0cgKCJGaW5pc2hlZCByZWdpc3RlcmluZyBtdXhlcnMiKTsKLSsKLSsgIHJldHVybiBUUlVFOwotK30KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3Byb3RvY29sLmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVncHJvdG9jb2wuYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVncHJvdG9jb2wuYwkyMDExLTA3LTEyIDE2OjM1OjI4LjAwMDAwMDAwMCArMDIwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3Byb3RvY29sLmMJMjAxNC0wOC0wOCAxNToyNjowNy44NzU4NTc1NTUgKzAyMDAKLUBAIC00Niw2MyArNDYsMTQgQEAKLSB9OwotIAotIHN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnZGF0YV9vcGVuIChVUkxDb250ZXh0ICogaCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncykKLS17Ci0tICBHc3RQcm90b2NvbEluZm8gKmluZm87Ci0tICBHc3RQYWQgKnBhZDsKLS0KLS0gIEdTVF9MT0cgKCJPcGVuaW5nICVzIiwgZmlsZW5hbWUpOwotLQotLSAgaW5mbyA9IGdfbmV3MCAoR3N0UHJvdG9jb2xJbmZvLCAxKTsKLS0KLS0gIGluZm8tPnNldF9zdHJlYW1oZWFkZXIgPSBmbGFncyAmIEdTVF9GRk1QRUdfVVJMX1NUUkVBTUhFQURFUjsKLS0gIGZsYWdzICY9IH5HU1RfRkZNUEVHX1VSTF9TVFJFQU1IRUFERVI7Ci0tICBoLT5mbGFncyAmPSB+R1NUX0ZGTVBFR19VUkxfU1RSRUFNSEVBREVSOwotLQotLSAgLyogd2UgZG9uJ3Qgc3VwcG9ydCBSL1cgdG9nZXRoZXIgKi8KLS0gIGlmIChmbGFncyAhPSBVUkxfUkRPTkxZICYmIGZsYWdzICE9IFVSTF9XUk9OTFkpIHsKLS0gICAgR1NUX1dBUk5JTkcgKCJPbmx5IHJlYWQtb25seSBvciB3cml0ZS1vbmx5IGFyZSBzdXBwb3J0ZWQiKTsKLS0gICAgcmV0dXJuIC1FSU5WQUw7Ci0tICB9Ci0tCi0tICBpZiAoc3NjYW5mICgmZmlsZW5hbWVbMTJdLCAiJXAiLCAmcGFkKSAhPSAxKSB7Ci0tICAgIEdTVF9XQVJOSU5HICgiY291bGQgbm90IGRlY29kZSBwYWQgZnJvbSAlcyIsIGZpbGVuYW1lKTsKLS0gICAgcmV0dXJuIC1FSU87Ci0tICB9Ci0tCi0tICAvKiBtYWtlIHN1cmUgd2UncmUgYSBwYWQgYW5kIHRoYXQgd2UncmUgb2YgdGhlIHJpZ2h0IHR5cGUgKi8KLS0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUEFEIChwYWQpLCAtRUlOVkFMKTsKLS0KLS0gIHN3aXRjaCAoZmxhZ3MpIHsKLS0gICAgY2FzZSBVUkxfUkRPTkxZOgotLSAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUEFEX0lTX1NJTksgKHBhZCksIC1FSU5WQUwpOwotLSAgICAgIGJyZWFrOwotLSAgICBjYXNlIFVSTF9XUk9OTFk6Ci0tICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9QQURfSVNfU1JDIChwYWQpLCAtRUlOVkFMKTsKLS0gICAgICBicmVhazsKLS0gIH0KLS0KLS0gIGluZm8tPmVvcyA9IEZBTFNFOwotLSAgaW5mby0+cGFkID0gcGFkOwotLSAgaW5mby0+b2Zmc2V0ID0gMDsKLS0KLS0gIGgtPnByaXZfZGF0YSA9ICh2b2lkICopIGluZm87Ci0tICBoLT5pc19zdHJlYW1lZCA9IEZBTFNFOwotLSAgaC0+bWF4X3BhY2tldF9zaXplID0gMDsKLS0KLS0gIHJldHVybiAwOwotLX0KLS0KLS1zdGF0aWMgaW50Ci0tZ3N0X2ZmbXBlZ2RhdGFfcGVlayAoVVJMQ29udGV4dCAqIGgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpCi0rZ3N0X2ZmbXBlZ2RhdGFfcGVlayAodm9pZCAqcHJpdl9kYXRhLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotIHsKLSAgIEdzdFByb3RvY29sSW5mbyAqaW5mbzsKLSAgIEdzdEJ1ZmZlciAqaW5idWYgPSBOVUxMOwotICAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gICBpbnQgdG90YWwgPSAwOwotIAotLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGgtPmZsYWdzID09IFVSTF9SRE9OTFksIEFWRVJST1IgKEVJTykpOwotLSAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgaC0+cHJpdl9kYXRhOwotKyAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgcHJpdl9kYXRhOwotIAotICAgR1NUX0RFQlVHICgiUHVsbGluZyAlZCBieXRlcyBhdCBwb3NpdGlvbiAlIiBHX0dVSU5UNjRfRk9STUFULCBzaXplLAotICAgICAgIGluZm8tPm9mZnNldCk7Ci1AQCAtMTM0LDE3ICs4NSwxNyBAQAotIH0KLSAKLSBzdGF0aWMgaW50Ci0tZ3N0X2ZmbXBlZ2RhdGFfcmVhZCAoVVJMQ29udGV4dCAqIGgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpCi0rZ3N0X2ZmbXBlZ2RhdGFfcmVhZCAodm9pZCAqcHJpdl9kYXRhLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotIHsKLSAgIGdpbnQgcmVzOwotICAgR3N0UHJvdG9jb2xJbmZvICppbmZvOwotIAotLSAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgaC0+cHJpdl9kYXRhOwotKyAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgcHJpdl9kYXRhOwotIAotICAgR1NUX0RFQlVHICgiUmVhZGluZyAlZCBieXRlcyBvZiBkYXRhIGF0IHBvc2l0aW9uICUiIEdfR1VJTlQ2NF9GT1JNQVQsIHNpemUsCi0gICAgICAgaW5mby0+b2Zmc2V0KTsKLSAKLS0gIHJlcyA9IGdzdF9mZm1wZWdkYXRhX3BlZWsgKGgsIGJ1Ziwgc2l6ZSk7Ci0rICByZXMgPSBnc3RfZmZtcGVnZGF0YV9wZWVrIChwcml2X2RhdGEsIGJ1Ziwgc2l6ZSk7Ci0gICBpZiAocmVzID49IDApCi0gICAgIGluZm8tPm9mZnNldCArPSByZXM7Ci0gCi1AQCAtMTU0LDE1ICsxMDUsMTMgQEAKLSB9Ci0gCi0gc3RhdGljIGludAotLWdzdF9mZm1wZWdkYXRhX3dyaXRlIChVUkxDb250ZXh0ICogaCwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLStnc3RfZmZtcGVnZGF0YV93cml0ZSAodm9pZCAqcHJpdl9kYXRhLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotIHsKLSAgIEdzdFByb3RvY29sSW5mbyAqaW5mbzsKLSAgIEdzdEJ1ZmZlciAqb3V0YnVmOwotIAotICAgR1NUX0RFQlVHICgiV3JpdGluZyAlZCBieXRlcyIsIHNpemUpOwotLSAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgaC0+cHJpdl9kYXRhOwotLQotLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGgtPmZsYWdzICE9IFVSTF9SRE9OTFksIC1FSU8pOwotKyAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgcHJpdl9kYXRhOwotIAotICAgLyogY3JlYXRlIGJ1ZmZlciBhbmQgcHVzaCBkYXRhIGZ1cnRoZXIgKi8KLSAgIGlmIChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9hbmRfc2V0X2NhcHMgKGluZm8tPnBhZCwKLUBAIC0xNzksNyArMTI4LDcgQEAKLSB9Ci0gCi0gc3RhdGljIGludDY0X3QKLS1nc3RfZmZtcGVnZGF0YV9zZWVrIChVUkxDb250ZXh0ICogaCwgaW50NjRfdCBwb3MsIGludCB3aGVuY2UpCi0rZ3N0X2ZmbXBlZ2RhdGFfc2VlayAodm9pZCAqcHJpdl9kYXRhLCBpbnQ2NF90IHBvcywgaW50IHdoZW5jZSkKLSB7Ci0gICBHc3RQcm90b2NvbEluZm8gKmluZm87Ci0gICBndWludDY0IG5ld3BvcyA9IDA7Ci1AQCAtMTg3LDcwICsxMzYsNjIgQEAKLSAgIEdTVF9ERUJVRyAoIlNlZWtpbmcgdG8gJSIgR19HSU5UNjRfRk9STUFUICIsIHdoZW5jZT0lZCIsCi0gICAgICAgKGdpbnQ2NCkgcG9zLCB3aGVuY2UpOwotIAotLSAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgaC0+cHJpdl9kYXRhOwotKyAgaW5mbyA9IChHc3RQcm90b2NvbEluZm8gKikgcHJpdl9kYXRhOwotIAotICAgLyogVE9ETyA6IGlmIHdlIGFyZSBwdXNoLWJhc2VkLCB3ZSBuZWVkIHRvIHJldHVybiBzZW5zaWJsZSBpbmZvICovCi0gCi0tICBzd2l0Y2ggKGgtPmZsYWdzKSB7Ci0tICAgIGNhc2UgVVJMX1JET05MWToKLS0gICAgewotLSAgICAgIC8qIHNpbmtwYWQgKi8KLS0gICAgICBzd2l0Y2ggKHdoZW5jZSkgewotLSAgICAgICAgY2FzZSBTRUVLX1NFVDoKLS0gICAgICAgICAgbmV3cG9zID0gKGd1aW50NjQpIHBvczsKLS0gICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBjYXNlIFNFRUtfQ1VSOgotLSAgICAgICAgICBuZXdwb3MgPSBpbmZvLT5vZmZzZXQgKyBwb3M7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBTRUVLX0VORDoKLS0gICAgICAgIGNhc2UgQVZTRUVLX1NJWkU6Ci0tICAgICAgICAgIC8qIGZmbXBlZyB3YW50cyB0byBrbm93IHRoZSBjdXJyZW50IGVuZCBwb3NpdGlvbiBpbiBieXRlcyAhICovCi0tICAgICAgICB7Ci0tICAgICAgICAgIEdzdEZvcm1hdCBmb3JtYXQgPSBHU1RfRk9STUFUX0JZVEVTOwotLSAgICAgICAgICBnaW50NjQgZHVyYXRpb247Ci0tCi0tICAgICAgICAgIEdTVF9ERUJVRyAoIlNlZWsgZW5kIik7Ci0tCi0tICAgICAgICAgIGlmIChnc3RfcGFkX2lzX2xpbmtlZCAoaW5mby0+cGFkKSkKLS0gICAgICAgICAgICBpZiAoZ3N0X3BhZF9xdWVyeV9kdXJhdGlvbiAoR1NUX1BBRF9QRUVSIChpbmZvLT5wYWQpLCAmZm9ybWF0LAotLSAgICAgICAgICAgICAgICAgICAgJmR1cmF0aW9uKSkKLS0gICAgICAgICAgICAgIG5ld3BvcyA9ICgoZ3VpbnQ2NCkgZHVyYXRpb24pICsgcG9zOwotLSAgICAgICAgfQotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAgIGdfYXNzZXJ0ICgwKTsKLS0gICAgICAgICAgYnJlYWs7Ci0rICBpZiAoR1NUX1BBRF9JU19TSU5LIChpbmZvLT5wYWQpKSB7Ci0rICAgIC8qIHNpbmtwYWQgKi8KLSsgICAgc3dpdGNoICh3aGVuY2UpIHsKLSsgICAgICBjYXNlIFNFRUtfU0VUOgotKyAgICAgICAgbmV3cG9zID0gKGd1aW50NjQpIHBvczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgU0VFS19DVVI6Ci0rICAgICAgICBuZXdwb3MgPSBpbmZvLT5vZmZzZXQgKyBwb3M7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFNFRUtfRU5EOgotKyAgICAgIGNhc2UgQVZTRUVLX1NJWkU6Ci0rICAgICAgICAvKiBmZm1wZWcgd2FudHMgdG8ga25vdyB0aGUgY3VycmVudCBlbmQgcG9zaXRpb24gaW4gYnl0ZXMgISAqLwotKyAgICAgIHsKLSsgICAgICAgIEdzdEZvcm1hdCBmb3JtYXQgPSBHU1RfRk9STUFUX0JZVEVTOwotKyAgICAgICAgZ2ludDY0IGR1cmF0aW9uOwotKwotKyAgICAgICAgR1NUX0RFQlVHICgiU2VlayBlbmQiKTsKLSsKLSsgICAgICAgIGlmIChnc3RfcGFkX2lzX2xpbmtlZCAoaW5mby0+cGFkKSkKLSsgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24gKEdTVF9QQURfUEVFUiAoaW5mby0+cGFkKSwgJmZvcm1hdCwKLSsgICAgICAgICAgICAgICAgICAmZHVyYXRpb24pKQotKyAgICAgICAgICAgIG5ld3BvcyA9ICgoZ3VpbnQ2NCkgZHVyYXRpb24pICsgcG9zOwotICAgICAgIH0KLS0gICAgICAvKiBGSVhNRSA6IGltcGxlbWVudCBjYXNlIGZvciBwdXNoLWJhc2VkIGJlaGF2aW91ciAqLwotLSAgICAgIGlmICh3aGVuY2UgIT0gQVZTRUVLX1NJWkUpCi0tICAgICAgICBpbmZvLT5vZmZzZXQgPSBuZXdwb3M7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgZ19hc3NlcnQgKDApOwotKyAgICAgICAgYnJlYWs7Ci0gICAgIH0KLS0gICAgICBicmVhazsKLS0gICAgY2FzZSBVUkxfV1JPTkxZOgotLSAgICB7Ci0tICAgICAgLyogc3JjcGFkICovCi0tICAgICAgc3dpdGNoICh3aGVuY2UpIHsKLS0gICAgICAgIGNhc2UgU0VFS19TRVQ6Ci0tICAgICAgICAgIGluZm8tPm9mZnNldCA9IChndWludDY0KSBwb3M7Ci0tICAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoaW5mby0+cGFkLCBnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50Ci0tICAgICAgICAgICAgICAoVFJVRSwgMS4wLCBHU1RfRk9STUFUX0JZVEVTLCBpbmZvLT5vZmZzZXQsCi0tICAgICAgICAgICAgICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSwgaW5mby0+b2Zmc2V0KSk7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBTRUVLX0NVUjoKLS0gICAgICAgICAgaW5mby0+b2Zmc2V0ICs9IHBvczsKLS0gICAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChpbmZvLT5wYWQsIGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQKLS0gICAgICAgICAgICAgIChUUlVFLCAxLjAsIEdTVF9GT1JNQVRfQllURVMsIGluZm8tPm9mZnNldCwKLS0gICAgICAgICAgICAgICAgICBHU1RfQ0xPQ0tfVElNRV9OT05FLCBpbmZvLT5vZmZzZXQpKTsKLS0gICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICBicmVhazsKLS0gICAgICB9Ci0tICAgICAgbmV3cG9zID0gaW5mby0+b2Zmc2V0OwotKyAgICAvKiBGSVhNRSA6IGltcGxlbWVudCBjYXNlIGZvciBwdXNoLWJhc2VkIGJlaGF2aW91ciAqLwotKyAgICBpZiAod2hlbmNlICE9IEFWU0VFS19TSVpFKQotKyAgICAgIGluZm8tPm9mZnNldCA9IG5ld3BvczsKLSsgIH0gZWxzZSBpZiAoR1NUX1BBRF9JU19TUkMgKGluZm8tPnBhZCkpIHsKLSsgICAgLyogc3JjcGFkICovCi0rICAgIHN3aXRjaCAod2hlbmNlKSB7Ci0rICAgICAgY2FzZSBTRUVLX1NFVDoKLSsgICAgICAgIGluZm8tPm9mZnNldCA9IChndWludDY0KSBwb3M7Ci0rICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGluZm8tPnBhZCwgZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudAotKyAgICAgICAgICAgIChUUlVFLCAxLjAsIEdTVF9GT1JNQVRfQllURVMsIGluZm8tPm9mZnNldCwKLSsgICAgICAgICAgICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSwgaW5mby0+b2Zmc2V0KSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFNFRUtfQ1VSOgotKyAgICAgICAgaW5mby0+b2Zmc2V0ICs9IHBvczsKLSsgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoaW5mby0+cGFkLCBnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50Ci0rICAgICAgICAgICAgKFRSVUUsIDEuMCwgR1NUX0ZPUk1BVF9CWVRFUywgaW5mby0+b2Zmc2V0LAotKyAgICAgICAgICAgICAgICBHU1RfQ0xPQ0tfVElNRV9OT05FLCBpbmZvLT5vZmZzZXQpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICBicmVhazsKLSAgICAgfQotLSAgICAgIGJyZWFrOwotLSAgICBkZWZhdWx0OgotLSAgICAgIGdfYXNzZXJ0ICgwKTsKLS0gICAgICBicmVhazsKLSsgICAgbmV3cG9zID0gaW5mby0+b2Zmc2V0OwotKyAgfSBlbHNlIHsKLSsgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICB9Ci0gCi0gICBHU1RfREVCVUcgKCJOb3cgYXQgb2Zmc2V0ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiAocmV0dXJuaW5nICUiIEdfR1VJTlQ2NF9GT1JNQVQKLUBAIC0yNTgsODUgKzE5OSw5MSBAQAotICAgcmV0dXJuIG5ld3BvczsKLSB9Ci0gCi0tc3RhdGljIGludAotLWdzdF9mZm1wZWdkYXRhX2Nsb3NlIChVUkxDb250ZXh0ICogaCkKLStpbnQKLStnc3RfZmZtcGVnZGF0YV9jbG9zZSAoQVZJT0NvbnRleHQgKiBoKQotIHsKLSAgIEdzdFByb3RvY29sSW5mbyAqaW5mbzsKLSAKLS0gIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPnByaXZfZGF0YTsKLSsgIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPm9wYXF1ZTsKLSAgIGlmIChpbmZvID09IE5VTEwpCi0gICAgIHJldHVybiAwOwotIAotICAgR1NUX0xPRyAoIkNsb3NpbmcgZmlsZSIpOwotIAotLSAgc3dpdGNoIChoLT5mbGFncykgewotLSAgICBjYXNlIFVSTF9XUk9OTFk6Ci0tICAgIHsKLS0gICAgICAvKiBzZW5kIEVPUyAtIHRoYXQgY2xvc2VzIGRvd24gdGhlIHN0cmVhbSAqLwotLSAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoaW5mby0+cGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7Ci0tICAgICAgYnJlYWs7Ci0tICAgIH0KLS0gICAgZGVmYXVsdDoKLS0gICAgICBicmVhazsKLSsgIGlmIChHU1RfUEFEX0lTX1NSQyAoaW5mby0+cGFkKSkgewotKyAgICAvKiBzZW5kIEVPUyAtIHRoYXQgY2xvc2VzIGRvd24gdGhlIHN0cmVhbSAqLwotKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGluZm8tPnBhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwotICAgfQotIAotICAgLyogY2xlYW4gdXAgZGF0YSAqLwotICAgZ19mcmVlIChpbmZvKTsKLS0gIGgtPnByaXZfZGF0YSA9IE5VTEw7Ci0rICBoLT5vcGFxdWUgPSBOVUxMOwotKwotKyAgYXZfZnJlZXAgKCZoLT5idWZmZXIpOwotKyAgYXZfZnJlZSAoaCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0raW50Ci0rZ3N0X2ZmbXBlZ2RhdGFfb3BlbiAoR3N0UGFkICogcGFkLCBpbnQgZmxhZ3MsIEFWSU9Db250ZXh0ICoqIGNvbnRleHQpCi0rewotKyAgR3N0UHJvdG9jb2xJbmZvICppbmZvOwotKyAgc3RhdGljIGNvbnN0IGludCBidWZmZXJfc2l6ZSA9IDQwOTY7Ci0rICB1bnNpZ25lZCBjaGFyICpidWZmZXIgPSBOVUxMOwotIAotLVVSTFByb3RvY29sIGdzdHJlYW1lcl9wcm90b2NvbCA9IHsKLS0gIC8qLm5hbWUgPSAqLyAiZ3N0cmVhbWVyIiwKLS0gIC8qLnVybF9vcGVuID0gKi8gZ3N0X2ZmbXBlZ2RhdGFfb3BlbiwKLS0gIC8qLnVybF9yZWFkID0gKi8gZ3N0X2ZmbXBlZ2RhdGFfcmVhZCwKLS0gIC8qLnVybF93cml0ZSA9ICovIGdzdF9mZm1wZWdkYXRhX3dyaXRlLAotLSAgLyoudXJsX3NlZWsgPSAqLyBnc3RfZmZtcGVnZGF0YV9zZWVrLAotLSAgLyoudXJsX2Nsb3NlID0gKi8gZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UsCi0tfTsKLSsgIGluZm8gPSBnX25ldzAgKEdzdFByb3RvY29sSW5mbywgMSk7Ci0gCi0rICBpbmZvLT5zZXRfc3RyZWFtaGVhZGVyID0gZmxhZ3MgJiBHU1RfRkZNUEVHX1VSTF9TVFJFQU1IRUFERVI7Ci0rICBmbGFncyAmPSB+R1NUX0ZGTVBFR19VUkxfU1RSRUFNSEVBREVSOwotIAotLS8qIHNwZWNpYWxpemVkIHByb3RvY29sIGZvciBjcm9zcy10aHJlYWQgcHVzaGluZywKLS0gKiBiYXNlZCBvbiBmZm1wZWcncyBwaXBlIHByb3RvY29sICovCi0rICAvKiB3ZSBkb24ndCBzdXBwb3J0IFIvVyB0b2dldGhlciAqLwotKyAgaWYgKChmbGFncyAmIEFWSU9fRkxBR19XUklURSkgJiYgKGZsYWdzICYgQVZJT19GTEFHX1JFQUQpKSB7Ci0rICAgIEdTVF9XQVJOSU5HICgiT25seSByZWFkLW9ubHkgb3Igd3JpdGUtb25seSBhcmUgc3VwcG9ydGVkIik7Ci0rICAgIHJldHVybiAtRUlOVkFMOwotKyAgfQotIAotLXN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnX3BpcGVfb3BlbiAoVVJMQ29udGV4dCAqIGgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MpCi0tewotLSAgR3N0RkZNcGVnUGlwZSAqZmZwaXBlOwotKyAgLyogbWFrZSBzdXJlIHdlJ3JlIGEgcGFkIGFuZCB0aGF0IHdlJ3JlIG9mIHRoZSByaWdodCB0eXBlICovCi0rICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BBRCAocGFkKSwgLUVJTlZBTCk7Ci0gCi0tICBHU1RfTE9HICgiT3BlbmluZyAlcyIsIGZpbGVuYW1lKTsKLSsgIGlmICgoZmxhZ3MgJiBBVklPX0ZMQUdfUkVBRCkpCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUEFEX0lTX1NJTksgKHBhZCksIC1FSU5WQUwpOwotKyAgaWYgKChmbGFncyAmIEFWSU9fRkxBR19XUklURSkpCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUEFEX0lTX1NSQyAocGFkKSwgLUVJTlZBTCk7Ci0gCi0tICAvKiB3ZSBkb24ndCBzdXBwb3J0IFcgdG9nZXRoZXIgKi8KLS0gIGlmIChmbGFncyAhPSBVUkxfUkRPTkxZKSB7Ci0tICAgIEdTVF9XQVJOSU5HICgiT25seSByZWFkLW9ubHkgaXMgc3VwcG9ydGVkIik7Ci0tICAgIHJldHVybiAtRUlOVkFMOwotLSAgfQotKyAgaW5mby0+ZW9zID0gRkFMU0U7Ci0rICBpbmZvLT5wYWQgPSBwYWQ7Ci0rICBpbmZvLT5vZmZzZXQgPSAwOwotIAotLSAgaWYgKHNzY2FuZiAoJmZpbGVuYW1lWzEwXSwgIiVwIiwgJmZmcGlwZSkgIT0gMSkgewotLSAgICBHU1RfV0FSTklORyAoImNvdWxkIG5vdCBkZWNvZGUgcGlwZSBpbmZvIGZyb20gJXMiLCBmaWxlbmFtZSk7Ci0tICAgIHJldHVybiAtRUlPOwotKyAgYnVmZmVyID0gYXZfbWFsbG9jIChidWZmZXJfc2l6ZSk7Ci0rICBpZiAoYnVmZmVyID09IE5VTEwpIHsKLSsgICAgR1NUX1dBUk5JTkcgKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIik7Ci0rICAgIHJldHVybiAtRU5PTUVNOwotICAgfQotIAotLSAgLyogc2FuaXR5IGNoZWNrICovCi0tICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0FEQVBURVIgKGZmcGlwZS0+YWRhcHRlciksIC1FSU5WQUwpOwotLQotLSAgaC0+cHJpdl9kYXRhID0gKHZvaWQgKikgZmZwaXBlOwotLSAgaC0+aXNfc3RyZWFtZWQgPSBUUlVFOwotLSAgaC0+bWF4X3BhY2tldF9zaXplID0gMDsKLSsgICpjb250ZXh0ID0KLSsgICAgICBhdmlvX2FsbG9jX2NvbnRleHQgKGJ1ZmZlciwgYnVmZmVyX3NpemUsIGZsYWdzLCAodm9pZCAqKSBpbmZvLAotKyAgICAgIGdzdF9mZm1wZWdkYXRhX3JlYWQsIGdzdF9mZm1wZWdkYXRhX3dyaXRlLCBnc3RfZmZtcGVnZGF0YV9zZWVrKTsKLSsgICgqY29udGV4dCktPnNlZWthYmxlID0gQVZJT19TRUVLQUJMRV9OT1JNQUw7Ci0rICBpZiAoIShmbGFncyAmIEFWSU9fRkxBR19XUklURSkpIHsKLSsgICAgKCpjb250ZXh0KS0+YnVmX3B0ciA9ICgqY29udGV4dCktPmJ1Zl9lbmQ7Ci0rICAgICgqY29udGV4dCktPndyaXRlX2ZsYWcgPSAwOwotKyAgfQotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIHNwZWNpYWxpemVkIHByb3RvY29sIGZvciBjcm9zcy10aHJlYWQgcHVzaGluZywKLSsgKiBiYXNlZCBvbiBmZm1wZWcncyBwaXBlIHByb3RvY29sICovCi0rCi0gc3RhdGljIGludAotLWdzdF9mZm1wZWdfcGlwZV9yZWFkIChVUkxDb250ZXh0ICogaCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLStnc3RfZmZtcGVnX3BpcGVfcmVhZCAodm9pZCAqcHJpdl9kYXRhLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotIHsKLSAgIEdzdEZGTXBlZ1BpcGUgKmZmcGlwZTsKLSAgIGNvbnN0IGd1aW50OCAqZGF0YTsKLSAgIGd1aW50IGF2YWlsYWJsZTsKLSAKLS0gIGZmcGlwZSA9IChHc3RGRk1wZWdQaXBlICopIGgtPnByaXZfZGF0YTsKLSsgIGZmcGlwZSA9IChHc3RGRk1wZWdQaXBlICopIHByaXZfZGF0YTsKLSAKLSAgIEdTVF9MT0cgKCJyZXF1ZXN0ZWQgc2l6ZSAlZCIsIHNpemUpOwotIAotQEAgLTM2NywyMSArMzE0LDM4IEBACi0gICByZXR1cm4gc2l6ZTsKLSB9Ci0gCi0tc3RhdGljIGludAotLWdzdF9mZm1wZWdfcGlwZV9jbG9zZSAoVVJMQ29udGV4dCAqIGgpCi0raW50Ci0rZ3N0X2ZmbXBlZ19waXBlX2Nsb3NlIChBVklPQ29udGV4dCAqIGgpCi0gewotICAgR1NUX0xPRyAoIkNsb3NpbmcgcGlwZSIpOwotIAotLSAgaC0+cHJpdl9kYXRhID0gTlVMTDsKLSsgIGgtPm9wYXF1ZSA9IE5VTEw7Ci0rICBhdl9mcmVlcCAoJmgtPmJ1ZmZlcik7Ci0rICBhdl9mcmVlIChoKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS1VUkxQcm90b2NvbCBnc3RwaXBlX3Byb3RvY29sID0gewotLSAgImdzdHBpcGUiLAotLSAgZ3N0X2ZmbXBlZ19waXBlX29wZW4sCi0tICBnc3RfZmZtcGVnX3BpcGVfcmVhZCwKLS0gIE5VTEwsCi0tICBOVUxMLAotLSAgZ3N0X2ZmbXBlZ19waXBlX2Nsb3NlLAotLX07Ci0raW50Ci0rZ3N0X2ZmbXBlZ19waXBlX29wZW4gKEdzdEZGTXBlZ1BpcGUgKiBmZnBpcGUsIGludCBmbGFncywgQVZJT0NvbnRleHQgKiogY29udGV4dCkKLSt7Ci0rICBzdGF0aWMgY29uc3QgaW50IGJ1ZmZlcl9zaXplID0gNDA5NjsKLSsgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciA9IE5VTEw7Ci0rCi0rICAvKiBzYW5pdHkgY2hlY2sgKi8KLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfQURBUFRFUiAoZmZwaXBlLT5hZGFwdGVyKSwgLUVJTlZBTCk7Ci0rCi0rICBidWZmZXIgPSBhdl9tYWxsb2MgKGJ1ZmZlcl9zaXplKTsKLSsgIGlmIChidWZmZXIgPT0gTlVMTCkgewotKyAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIiKTsKLSsgICAgcmV0dXJuIC1FTk9NRU07Ci0rICB9Ci0rCi0rICAqY29udGV4dCA9Ci0rICAgICAgYXZpb19hbGxvY19jb250ZXh0IChidWZmZXIsIGJ1ZmZlcl9zaXplLCAwLCAodm9pZCAqKSBmZnBpcGUsCi0rICAgICAgZ3N0X2ZmbXBlZ19waXBlX3JlYWQsIE5VTEwsIE5VTEwpOwotKyAgKCpjb250ZXh0KS0+c2Vla2FibGUgPSAwOwotKyAgKCpjb250ZXh0KS0+YnVmX3B0ciA9ICgqY29udGV4dCktPmJ1Zl9lbmQ7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMJMjAxMS0wNy0xMyAxMTowNzoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5jCTIwMTQtMDgtMDggMTU6MzQ6MDQuMDA3ODc0NjI2ICswMjAwCi1AQCAtMjUsNiArMjUsMTEgQEAKLSAjaWZkZWYgX19BUFBMRV9fCi0gI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSsjaW5jbHVkZSA8YXZmb3JtYXQuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgotKyNlbmRpZgotIAotIEdfQ09OU1RfUkVUVVJOIGdjaGFyICoKLSBnc3RfZmZtcGVnX2dldF9jb2RlY2lkX2xvbmduYW1lIChlbnVtIENvZGVjSUQgY29kZWNfaWQpCi1AQCAtMzksMjEgKzQ0LDIxIEBACi0gfQotIAotIGdpbnQKLS1hdl9zbXBfZm9ybWF0X2RlcHRoIChlbnVtIFNhbXBsZUZvcm1hdCBzbXBfZm10KQotK2F2X3NtcF9mb3JtYXRfZGVwdGggKGVudW0gQVZTYW1wbGVGb3JtYXQgc21wX2ZtdCkKLSB7Ci0gICBnaW50IGRlcHRoID0gLTE7Ci0gICBzd2l0Y2ggKHNtcF9mbXQpIHsKLS0gICAgY2FzZSBTQU1QTEVfRk1UX1U4OgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfVTg6Ci0gICAgICAgZGVwdGggPSAxOwotICAgICAgIGJyZWFrOwotLSAgICBjYXNlIFNBTVBMRV9GTVRfUzE2OgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzE2OgotICAgICAgIGRlcHRoID0gMjsKLSAgICAgICBicmVhazsKLS0gICAgY2FzZSBTQU1QTEVfRk1UX1MzMjoKLS0gICAgY2FzZSBTQU1QTEVfRk1UX0ZMVDoKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX1MzMjoKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX0ZMVDoKLSAgICAgICBkZXB0aCA9IDQ7Ci0gICAgICAgYnJlYWs7Ci0tICAgIGNhc2UgU0FNUExFX0ZNVF9EQkw6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9EQkw6Ci0gICAgICAgZGVwdGggPSA4OwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuYy5vcmlnIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMub3JpZwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuYy5vcmlnCTIwMTEtMDctMTMgMTE6MDc6MjguMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQ4MyBAQAotKy8qIEdTdHJlYW1lcgotKyAqIENvcHlyaWdodCAoYykgMjAwOSBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKyNpbmNsdWRlICJnc3RmZm1wZWd1dGlscy5oIgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaWZkZWYgX19BUFBMRV9fCi0rI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSsjZW5kaWYKLSsKLStHX0NPTlNUX1JFVFVSTiBnY2hhciAqCi0rZ3N0X2ZmbXBlZ19nZXRfY29kZWNpZF9sb25nbmFtZSAoZW51bSBDb2RlY0lEIGNvZGVjX2lkKQotK3sKLSsgIEFWQ29kZWMgKmNvZGVjOwotKyAgLyogTGV0J3MgdXNlIHdoYXQgZmZtcGVnIGNhbiBwcm92aWRlIHVzICovCi0rCi0rICBpZiAoKGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIgKGNvZGVjX2lkKSkgfHwKLSsgICAgICAoY29kZWMgPSBhdmNvZGVjX2ZpbmRfZW5jb2RlciAoY29kZWNfaWQpKSkKLSsgICAgcmV0dXJuIGNvZGVjLT5sb25nX25hbWU7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rZ2ludAotK2F2X3NtcF9mb3JtYXRfZGVwdGggKGVudW0gU2FtcGxlRm9ybWF0IHNtcF9mbXQpCi0rewotKyAgZ2ludCBkZXB0aCA9IC0xOwotKyAgc3dpdGNoIChzbXBfZm10KSB7Ci0rICAgIGNhc2UgU0FNUExFX0ZNVF9VODoKLSsgICAgICBkZXB0aCA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgU0FNUExFX0ZNVF9TMTY6Ci0rICAgICAgZGVwdGggPSAyOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFNBTVBMRV9GTVRfUzMyOgotKyAgICBjYXNlIFNBTVBMRV9GTVRfRkxUOgotKyAgICAgIGRlcHRoID0gNDsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBTQU1QTEVfRk1UX0RCTDoKLSsgICAgICBkZXB0aCA9IDg7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR1NUX0VSUk9SICgiVU5IQU5ETEVEIFNBTVBMRSBGT1JNQVQgISIpOwotKyAgICAgIGJyZWFrOwotKyAgfQotKyAgcmV0dXJuIGRlcHRoOwotK30KLSsKLSsKLSsvKgotKyAqIEZpbGwgaW4gcG9pbnRlcnMgdG8gbWVtb3J5IGluIGEgQVZQaWN0dXJlLCB3aGVyZQotKyAqIGV2ZXJ5dGhpbmcgaXMgYWxpZ25lZCBieSA0IChhcyByZXF1aXJlZCBieSBYKS4KLSsgKiBUaGlzIGlzIG1vc3RseSBhIGNvcHkgZnJvbSBpbWdjb252ZXJ0LmMgd2l0aCBzb21lCi0rICogc21hbGwgY2hhbmdlcy4KLSsgKi8KLSsKLSsjZGVmaW5lIEZGX0NPTE9SX1JHQiAgICAgIDAgICAgIC8qIFJHQiBjb2xvciBzcGFjZSAqLwotKyNkZWZpbmUgRkZfQ09MT1JfR1JBWSAgICAgMSAgICAgLyogZ3JheSBjb2xvciBzcGFjZSAqLwotKyNkZWZpbmUgRkZfQ09MT1JfWVVWICAgICAgMiAgICAgLyogWVVWIGNvbG9yIHNwYWNlLiAxNiA8PSBZIDw9IDIzNSwgMTYgPD0gVSwgViA8PSAyNDAgKi8KLSsjZGVmaW5lIEZGX0NPTE9SX1lVVl9KUEVHIDMgICAgIC8qIFlVViBjb2xvciBzcGFjZS4gMCA8PSBZIDw9IDI1NSwgMCA8PSBVLCBWIDw9IDI1NSAqLwotKwotKyNkZWZpbmUgRkZfUElYRUxfUExBTkFSICAgMCAgICAgLyogZWFjaCBjaGFubmVsIGhhcyBvbmUgY29tcG9uZW50IGluIEFWUGljdHVyZSAqLwotKyNkZWZpbmUgRkZfUElYRUxfUEFDS0VEICAgMSAgICAgLyogb25seSBvbmUgY29tcG9uZW50cyBjb250YWluaW5nIGFsbCB0aGUgY2hhbm5lbHMgKi8KLSsjZGVmaW5lIEZGX1BJWEVMX1BBTEVUVEUgIDIgICAgIC8qIG9uZSBjb21wb25lbnRzIGNvbnRhaW5pbmcgaW5kZXhlcyBmb3IgYSBwYWxldHRlICovCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgUGl4Rm10SW5mbwotK3sKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICB1aW50OF90IG5iX2NoYW5uZWxzOyAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhbm5lbHMgKGluY2x1ZGluZyBhbHBoYSkgKi8KLSsgIHVpbnQ4X3QgY29sb3JfdHlwZTsgICAgICAgICAgIC8qIGNvbG9yIHR5cGUgKHNlZSBGRl9DT0xPUl94eHggY29uc3RhbnRzKSAqLwotKyAgdWludDhfdCBwaXhlbF90eXBlOyAgICAgICAgICAgLyogcGl4ZWwgc3RvcmFnZSB0eXBlIChzZWUgRkZfUElYRUxfeHh4IGNvbnN0YW50cykgKi8KLSsgIHVpbnQ4X3QgaXNfYWxwaGE6MTsgICAgICAgICAgIC8qIHRydWUgaWYgYWxwaGEgY2FuIGJlIHNwZWNpZmllZCAqLwotKyAgdWludDhfdCB4X2Nocm9tYV9zaGlmdDsgICAgICAgLyogWCBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yIGlzIDIgXiBzaGlmdCAqLwotKyAgdWludDhfdCB5X2Nocm9tYV9zaGlmdDsgICAgICAgLyogWSBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yIGlzIDIgXiBzaGlmdCAqLwotKyAgdWludDhfdCBkZXB0aDsgICAgICAgICAgICAgICAgLyogYml0IGRlcHRoIG9mIHRoZSBjb2xvciBjb21wb25lbnRzICovCi0rfSBQaXhGbXRJbmZvOwotKwotKwotKy8qIHRoaXMgdGFibGUgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBmb3JtYXRzICovCi0rc3RhdGljIFBpeEZtdEluZm8gcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTkJdOwotK3ZvaWQKLStnc3RfZmZtcGVnX2luaXRfcGl4X2ZtdF9pbmZvICh2b2lkKQotK3sKLSsgIC8qIFlVViBmb3JtYXRzICovCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjBQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXY0MjBwIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjBQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjBQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMFBdLmRlcHRoID0gOCwKLSsgICAgICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjBQXS54X2Nocm9tYV9zaGlmdCA9IDEsCi0rICAgICAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0ueV9jaHJvbWFfc2hpZnQgPSAxOwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0ubmFtZSA9IGdfc3RyZHVwICgieXV2NDIycCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMlBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjJQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjJQXS54X2Nocm9tYV9zaGlmdCA9IDE7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjJQXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXY0NDRwIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDQ0UF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQ0NFBdLmRlcHRoID0gODsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQ0NFBdLnhfY2hyb21hX3NoaWZ0ID0gMDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQ0NFBdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVWVY0MjJdLm5hbWUgPSBnX3N0cmR1cCAoInl1djQyMiIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVZVjQyMl0ubmJfY2hhbm5lbHMgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVZVjQyMl0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVWVY0MjJdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QQUNLRUQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVlWNDIyXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVlWNDIyXS54X2Nocm9tYV9zaGlmdCA9IDE7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVlWNDIyXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXY0MTBwIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDEwUF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMFBdLmRlcHRoID0gODsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMFBdLnhfY2hyb21hX3NoaWZ0ID0gMjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMFBdLnlfY2hyb21hX3NoaWZ0ID0gMjsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLm5hbWUgPSBnX3N0cmR1cCAoInl1djQxMXAiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9ZVVY7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTFQXS5waXhlbF90eXBlID0gRkZfUElYRUxfUExBTkFSOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDExUF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDExUF0ueF9jaHJvbWFfc2hpZnQgPSAyOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDExUF0ueV9jaHJvbWFfc2hpZnQgPSAwOwotKwotKyAgLyogSlBFRyBZVVYgKi8KLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjBQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXZqNDIwcCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMFBdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjBQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWX0pQRUc7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIwUF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjBQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIwUF0ueF9jaHJvbWFfc2hpZnQgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMFBdLnlfY2hyb21hX3NoaWZ0ID0gMTsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjJQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXZqNDIycCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMlBdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjJQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWX0pQRUc7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIyUF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjJQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIyUF0ueF9jaHJvbWFfc2hpZnQgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMlBdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0NDRQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXZqNDQ0cCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQ0NFBdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0NDRQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWX0pQRUc7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDQ0UF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0NDRQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDQ0UF0ueF9jaHJvbWFfc2hpZnQgPSAwOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQ0NFBdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIC8qIFJHQiBmb3JtYXRzICovCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0ubmFtZSA9IGdfc3RyZHVwICgicmdiMjQiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjI0XS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1JHQjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjI0XS5waXhlbF90eXBlID0gRkZfUElYRUxfUEFDS0VEOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMjRdLmRlcHRoID0gODsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjI0XS54X2Nocm9tYV9zaGlmdCA9IDA7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0ueV9jaHJvbWFfc2hpZnQgPSAwOwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLm5hbWUgPSBnX3N0cmR1cCAoImJncjI0Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9CR1IyNF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9SR0I7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9CR1IyNF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BBQ0tFRDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0JHUjI0XS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9CR1IyNF0ueF9jaHJvbWFfc2hpZnQgPSAwOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjMyXS5uYW1lID0gZ19zdHJkdXAgKCJyZ2JhMzIiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjMyXS5uYl9jaGFubmVscyA9IDQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0uaXNfYWxwaGEgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMzJdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9SR0I7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BBQ0tFRDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjMyXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0ueF9jaHJvbWFfc2hpZnQgPSAwOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMzJdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU2NV0ubmFtZSA9IGdfc3RyZHVwICgicmdiNTY1Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU2NV0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1JHQjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU2NV0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BBQ0tFRDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU2NV0uZGVwdGggPSA1OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTY1XS54X2Nocm9tYV9zaGlmdCA9IDA7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0ubmFtZSA9IGdfc3RyZHVwICgicmdiNTU1Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NTVdLm5iX2NoYW5uZWxzID0gNDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0uaXNfYWxwaGEgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTU1XS5jb2xvcl90eXBlID0gRkZfQ09MT1JfUkdCOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTU1XS5waXhlbF90eXBlID0gRkZfUElYRUxfUEFDS0VEOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTU1XS5kZXB0aCA9IDU7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NTVdLnhfY2hyb21hX3NoaWZ0ID0gMDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0ueV9jaHJvbWFfc2hpZnQgPSAwOwotKwotKyAgLyogZ3JheSAvIG1vbm8gZm9ybWF0cyAqLwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfR1JBWThdLm5hbWUgPSBnX3N0cmR1cCAoImdyYXkiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0dSQVk4XS5uYl9jaGFubmVscyA9IDE7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9HUkFZOF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX0dSQVk7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9HUkFZOF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0dSQVk4XS5kZXB0aCA9IDg7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PV0hJVEVdLm5hbWUgPSBnX3N0cmR1cCAoIm1vbm93Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PV0hJVEVdLm5iX2NoYW5uZWxzID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9XSElURV0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX0dSQVk7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PV0hJVEVdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PV0hJVEVdLmRlcHRoID0gMTsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9CTEFDS10ubmFtZSA9IGdfc3RyZHVwICgibW9ub2IiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9CTEFDS10ubmJfY2hhbm5lbHMgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTU9OT0JMQUNLXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfR1JBWTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9CTEFDS10ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9CTEFDS10uZGVwdGggPSAxOwotKwotKyAgLyogcGFsZXR0ZWQgZm9ybWF0cyAqLwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUEFMOF0ubmFtZSA9IGdfc3RyZHVwICgicGFsOCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUEFMOF0ubmJfY2hhbm5lbHMgPSA0OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUEFMOF0uaXNfYWxwaGEgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUEFMOF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1JHQjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QQUxFVFRFOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUEFMOF0uZGVwdGggPSA4OwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLm5hbWUgPSBnX3N0cmR1cCAoInl1dmE0MjBwIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZBNDIwUF0ubmJfY2hhbm5lbHMgPSA0OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLmlzX2FscGhhID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZBNDIwUF0uZGVwdGggPSA4LAotKyAgICAgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS54X2Nocm9tYV9zaGlmdCA9IDEsCi0rICAgICAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLnlfY2hyb21hX3NoaWZ0ID0gMTsKLSt9OwotKwotK2ludAotK2dzdF9mZm1wZWdfYXZwaWN0dXJlX2dldF9zaXplIChpbnQgcGl4X2ZtdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotK3sKLSsgIEFWUGljdHVyZSBkdW1teV9waWN0OwotKwotKyAgcmV0dXJuIGdzdF9mZm1wZWdfYXZwaWN0dXJlX2ZpbGwgKCZkdW1teV9waWN0LCBOVUxMLCBwaXhfZm10LCB3aWR0aCwgaGVpZ2h0KTsKLSt9Ci0rCi0rI2RlZmluZSBHRU5fTUFTSyh4KSAoKDE8PCh4KSktMSkKLSsjZGVmaW5lIFJPVU5EX1VQX1godix4KSAoKCh2KSArIEdFTl9NQVNLKHgpKSAmIH5HRU5fTUFTSyh4KSkKLSsjZGVmaW5lIFJPVU5EX1VQXzIoeCkgUk9VTkRfVVBfWCAoeCwgMSkKLSsjZGVmaW5lIFJPVU5EX1VQXzQoeCkgUk9VTkRfVVBfWCAoeCwgMikKLSsjZGVmaW5lIFJPVU5EX1VQXzgoeCkgUk9VTkRfVVBfWCAoeCwgMykKLSsjZGVmaW5lIERJVl9ST1VORF9VUF9YKHYseCkgKCgodikgKyBHRU5fTUFTSyh4KSkgPj4gKHgpKQotKwotK2ludAotK2dzdF9mZm1wZWdfYXZwaWN0dXJlX2ZpbGwgKEFWUGljdHVyZSAqIHBpY3R1cmUsCi0rICAgIHVpbnQ4X3QgKiBwdHIsIGVudW0gUGl4ZWxGb3JtYXQgcGl4X2ZtdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotK3sKLSsgIGludCBzaXplLCB3MiwgaDIsIHNpemUyOwotKyAgaW50IHN0cmlkZSwgc3RyaWRlMjsKLSsgIFBpeEZtdEluZm8gKnBpbmZvOwotKwotKyAgcGluZm8gPSAmcGl4X2ZtdF9pbmZvW3BpeF9mbXRdOwotKwotKyAgc3dpdGNoIChwaXhfZm10KSB7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0MjBQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDIyUDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVjQ0NFA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0MTBQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDExUDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVko0MjBQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWSjQyMlA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVZKNDQ0UDoKLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICh3aWR0aCk7Ci0rICAgICAgaDIgPSBST1VORF9VUF9YIChoZWlnaHQsIHBpbmZvLT55X2Nocm9tYV9zaGlmdCk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGgyOwotKyAgICAgIHcyID0gRElWX1JPVU5EX1VQX1ggKHdpZHRoLCBwaW5mby0+eF9jaHJvbWFfc2hpZnQpOwotKyAgICAgIHN0cmlkZTIgPSBST1VORF9VUF80ICh3Mik7Ci0rICAgICAgaDIgPSBESVZfUk9VTkRfVVBfWCAoaGVpZ2h0LCBwaW5mby0+eV9jaHJvbWFfc2hpZnQpOwotKyAgICAgIHNpemUyID0gc3RyaWRlMiAqIGgyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IHBpY3R1cmUtPmRhdGFbMF0gKyBzaXplOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBwaWN0dXJlLT5kYXRhWzFdICsgc2l6ZTI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSBzdHJpZGU7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSBzdHJpZGUyOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gc3RyaWRlMjsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgR1NUX0RFQlVHICgicGxhbmVzICVkICVkICVkIiwgMCwgc2l6ZSwgc2l6ZSArIHNpemUyKTsKLSsgICAgICBHU1RfREVCVUcgKCJzdHJpZGVzICVkICVkICVkIiwgc3RyaWRlLCBzdHJpZGUyLCBzdHJpZGUyKTsKLSsgICAgICByZXR1cm4gc2l6ZSArIDIgKiBzaXplMjsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVkE0MjBQOgotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoKTsKLSsgICAgICBoMiA9IFJPVU5EX1VQX1ggKGhlaWdodCwgcGluZm8tPnlfY2hyb21hX3NoaWZ0KTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaDI7Ci0rICAgICAgdzIgPSBESVZfUk9VTkRfVVBfWCAod2lkdGgsIHBpbmZvLT54X2Nocm9tYV9zaGlmdCk7Ci0rICAgICAgc3RyaWRlMiA9IFJPVU5EX1VQXzQgKHcyKTsKLSsgICAgICBoMiA9IERJVl9ST1VORF9VUF9YIChoZWlnaHQsIHBpbmZvLT55X2Nocm9tYV9zaGlmdCk7Ci0rICAgICAgc2l6ZTIgPSBzdHJpZGUyICogaDI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gcGljdHVyZS0+ZGF0YVswXSArIHNpemU7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IHBpY3R1cmUtPmRhdGFbMV0gKyBzaXplMjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gcGljdHVyZS0+ZGF0YVsyXSArIHNpemUyOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gc3RyaWRlMjsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IHN0cmlkZTI7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSBzdHJpZGU7Ci0rICAgICAgR1NUX0RFQlVHICgicGxhbmVzICVkICVkICVkICVkIiwgMCwgc2l6ZSwgc2l6ZSArIHNpemUyLCBzaXplICsgMiAqIHNpemUyKTsKLSsgICAgICBHU1RfREVCVUcgKCJzdHJpZGVzICVkICVkICVkICVkIiwgc3RyaWRlLCBzdHJpZGUyLCBzdHJpZGUyLCBzdHJpZGUpOwotKyAgICAgIHJldHVybiAyICogc2l6ZSArIDIgKiBzaXplMjsKLSsgICAgY2FzZSBQSVhfRk1UX1JHQjI0OgotKyAgICBjYXNlIFBJWF9GTVRfQkdSMjQ6Ci0rICAgICAgc3RyaWRlID0gUk9VTkRfVVBfNCAod2lkdGggKiAzKTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSBzdHJpZGU7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgcmV0dXJuIHNpemU7Ci0rICAgICAgLypjYXNlIFBJWF9GTVRfQVlVVjQ0NDQ6Ci0rICAgICAgICAgY2FzZSBQSVhfRk1UX0JHUjMyOgotKyAgICAgICAgIGNhc2UgUElYX0ZNVF9CR1JBMzI6Ci0rICAgICAgICAgY2FzZSBQSVhfRk1UX1JHQjMyOiAqLwotKyAgICBjYXNlIFBJWF9GTVRfUkdCMzI6Ci0rICAgICAgc3RyaWRlID0gd2lkdGggKiA0OwotKyAgICAgIHNpemUgPSBzdHJpZGUgKiBoZWlnaHQ7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVswXSA9IHN0cmlkZTsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gMDsKLSsgICAgICByZXR1cm4gc2l6ZTsKLSsgICAgY2FzZSBQSVhfRk1UX1JHQjU1NToKLSsgICAgY2FzZSBQSVhfRk1UX1JHQjU2NToKLSsgICAgY2FzZSBQSVhfRk1UX1lVWVY0MjI6Ci0rICAgIGNhc2UgUElYX0ZNVF9VWVZZNDIyOgotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoICogMik7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSAwOwotKyAgICAgIHJldHVybiBzaXplOwotKyAgICBjYXNlIFBJWF9GTVRfVVlZVllZNDExOgotKyAgICAgIC8qIEZJWE1FLCBwcm9iYWJseSBub3QgdGhlIHJpZ2h0IHN0cmlkZSAqLwotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoKTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSB3aWR0aCArIHdpZHRoIC8gMjsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gMDsKLSsgICAgICByZXR1cm4gc2l6ZSArIHNpemUgLyAyOwotKyAgICBjYXNlIFBJWF9GTVRfR1JBWTg6Ci0rICAgICAgc3RyaWRlID0gUk9VTkRfVVBfNCAod2lkdGgpOwotKyAgICAgIHNpemUgPSBzdHJpZGUgKiBoZWlnaHQ7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVswXSA9IHN0cmlkZTsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gMDsKLSsgICAgICByZXR1cm4gc2l6ZTsKLSsgICAgY2FzZSBQSVhfRk1UX01PTk9XSElURToKLSsgICAgY2FzZSBQSVhfRk1UX01PTk9CTEFDSzoKLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICgod2lkdGggKyA3KSA+PiAzKTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSBzdHJpZGU7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgcmV0dXJuIHNpemU7Ci0rICAgIGNhc2UgUElYX0ZNVF9QQUw4OgotKyAgICAgIC8qIGFscmVhZHkgZm9yY2VkIHRvIGJlIHdpdGggc3RyaWRlLCBzbyBzYW1lIHJlc3VsdCBhcyBvdGhlciBmdW5jdGlvbiAqLwotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoKTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IHB0ciArIHNpemU7ICAgIC8qIHBhbGV0dGUgaXMgc3RvcmVkIGhlcmUgYXMgMjU2IDMyIGJpdCB3b3JkcyAqLwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gNDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSAwOwotKyAgICAgIHJldHVybiBzaXplICsgMjU2ICogNDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gTlVMTDsKLSsgICAgICByZXR1cm4gLTE7Ci0rICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogQ3JlYXRlIGEgR3N0QnVmZmVyIG9mIHRoZSByZXF1ZXN0ZWQgc2l6ZSBhbmQgY2Fwcy4KLSsgKiBUaGUgbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkIGJ5IGZmbXBlZywgbWFraW5nIHN1cmUgaXQncyBwcm9wZXJseSBhbGlnbmVkCi0rICogZm9yIGFueSBwcm9jZXNzaW5nLiAqLwotKwotK0dzdEJ1ZmZlciAqCi0rbmV3X2FsaWduZWRfYnVmZmVyIChnaW50IHNpemUsIEdzdENhcHMgKiBjYXBzKQotK3sKLSsgIEdzdEJ1ZmZlciAqYnVmOwotKwotKyAgYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0rICBHU1RfQlVGRkVSX0RBVEEgKGJ1ZikgPSBHU1RfQlVGRkVSX01BTExPQ0RBVEEgKGJ1ZikgPSBhdl9tYWxsb2MgKHNpemUpOwotKyAgR1NUX0JVRkZFUl9TSVpFIChidWYpID0gc2l6ZTsKLSsgIEdTVF9CVUZGRVJfRlJFRV9GVU5DIChidWYpID0gYXZfZnJlZTsKLSsgIGlmIChjYXBzKQotKyAgICBnc3RfYnVmZmVyX3NldF9jYXBzIChidWYsIGNhcHMpOwotKwotKyAgcmV0dXJuIGJ1ZjsKLSt9Ci0rCi0raW50Ci0rZ3N0X2ZmbXBlZ19hdXRvX21heF90aHJlYWRzICh2b2lkKQotK3sKLSsgIHN0YXRpYyBnc2l6ZSBuX3RocmVhZHMgPSAwOwotKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmbl90aHJlYWRzKSkgewotKyAgICBpbnQgbiA9IDE7Ci0rI2lmIGRlZmluZWQoX1dJTjMyKQotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqcyA9IGdldGVudiAoIk5VTUJFUl9PRl9QUk9DRVNTT1JTIik7Ci0rICAgICAgaWYgKHMpIHsKLSsgICAgICAgIG4gPSBhdG9pIChzKTsKLSsgICAgICB9Ci0rICAgIH0KLSsjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSsgICAgewotKyAgICAgIGludCBtaWJbXSA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07Ci0rICAgICAgc2l6ZV90IGRhdGFTaXplID0gc2l6ZW9mIChpbnQpOwotKwotKyAgICAgIGlmIChzeXNjdGwgKG1pYiwgMiwgJm5fdGhyZWFkcywgJmRhdGFTaXplLCBOVUxMLCAwKSkgewotKyAgICAgICAgbiA9IDE7Ci0rICAgICAgfQotKyAgICB9Ci0rI2Vsc2UKLSsgICAgbiA9IHN5c2NvbmYgKF9TQ19OUFJPQ0VTU09SU19DT05GKTsKLSsjZW5kaWYKLSsgICAgaWYgKG4gPCAxKQotKyAgICAgIG4gPSAxOwotKwotKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJm5fdGhyZWFkcywgbik7Ci0rICB9Ci0rCi0rICByZXR1cm4gKGludCkgKG5fdGhyZWFkcyk7Ci0rfQotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaCBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5oCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5oCTIwMTEtMTEtMDIgMTQ6MDQ6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaAkyMDE0LTA4LTA4IDE1OjM0OjA0LjAwNzg3NDYyNiArMDIwMAotQEAgLTIzLDYgKzIzLDcgQEAKLSAjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSAjaW5jbHVkZSA8YXZjb2RlYy5oPgotICNlbHNlCi0rI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXRoZW1hdGljcy5oPgotICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotQEAgLTg3LDcgKzg4LDcgQEAKLSBnc3RfZmZtcGVnX2dldF9jb2RlY2lkX2xvbmduYW1lIChlbnVtIENvZGVjSUQgY29kZWNfaWQpOwotIAotIGdpbnQKLS1hdl9zbXBfZm9ybWF0X2RlcHRoKGVudW0gU2FtcGxlRm9ybWF0IHNtcF9mbXQpOwotK2F2X3NtcF9mb3JtYXRfZGVwdGgoZW51bSBBVlNhbXBsZUZvcm1hdCBzbXBfZm10KTsKLSAKLSBHc3RCdWZmZXIgKgotIG5ld19hbGlnbmVkX2J1ZmZlciAoZ2ludCBzaXplLCBHc3RDYXBzICogY2Fwcyk7Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5oLm9yaWcgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaC5vcmlnCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5oLm9yaWcJMjAxNC0wOC0wOCAxNToyNjozOC40NzM4NTg2NTIgKzAyMDAKLUBAIC0wLDAgKzEsOTUgQEAKLSsvKiBHU3RyZWFtZXIKLSsgKiBDb3B5cmlnaHQgKEMpIDwyMDA5PiBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyAqLwotKwotKyNpZm5kZWYgX19HU1RfRkZNUEVHX1VUSUxTX0hfXwotKyNkZWZpbmUgX19HU1RfRkZNUEVHX1VUSUxTX0hfXwotKwotKyNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotKyNpbmNsdWRlIDxhdmNvZGVjLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsKLSsvKgotKyAqR2V0IHRoZSBzaXplIG9mIGFuIHBpY3R1cmUKLSsgKi8KLStpbnQKLStnc3RfZmZtcGVnX2F2cGljdHVyZV9nZXRfc2l6ZSAoaW50IHBpeF9mbXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0rCi0rLyoKLSsgKiBGaWxsIGluIHBvaW50ZXJzIGluIGFuIEFWUGljdHVyZSwgYWxpZ25lZCBieSA0IChyZXF1aXJlZCBieSBYKS4KLSsgKi8KLSsKLStpbnQKLStnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsIChBVlBpY3R1cmUgKiBwaWN0dXJlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKiAgIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFBpeGVsRm9ybWF0IHBpeF9mbXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgaGVpZ2h0KTsKLSsKLSsvKgotKyAqIENvbnZlcnQgZnJvbS90byBhIEdTdHJlYW1lciA8LT4gRkZNcGVnIHRpbWVzdGFtcC4KLSsgKi8KLStzdGF0aWMgaW5saW5lIGd1aW50NjQKLStnc3RfZmZtcGVnX3RpbWVfZmZfdG9fZ3N0IChnaW50NjQgcHRzLCBBVlJhdGlvbmFsIGJhc2UpCi0rewotKyAgZ3VpbnQ2NCBvdXQ7Ci0rCi0rICBpZiAocHRzID09IEFWX05PUFRTX1ZBTFVFKXsKLSsgICAgb3V0ID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsgIH0gZWxzZSB7Ci0rICAgIEFWUmF0aW9uYWwgYnEgPSB7IDEsIEdTVF9TRUNPTkQgfTsKLSsgICAgb3V0ID0gYXZfcmVzY2FsZV9xIChwdHMsIGJhc2UsIGJxKTsKLSsgIH0KLSsKLSsgIHJldHVybiBvdXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgZ2ludDY0Ci0rZ3N0X2ZmbXBlZ190aW1lX2dzdF90b19mZiAoZ3VpbnQ2NCB0aW1lLCBBVlJhdGlvbmFsIGJhc2UpCi0rewotKyAgZ2ludDY0IG91dDsKLSsKLSsgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRpbWUpIHx8IGJhc2UubnVtID09IDApIHsKLSsgICAgb3V0ID0gQVZfTk9QVFNfVkFMVUU7Ci0rICB9IGVsc2UgewotKyAgICBBVlJhdGlvbmFsIGJxID0geyAxLCBHU1RfU0VDT05EIH07Ci0rICAgIG91dCA9IGF2X3Jlc2NhbGVfcSAodGltZSwgYnEsIGJhc2UpOwotKyAgfQotKwotKyAgcmV0dXJuIG91dDsKLSt9Ci0rCi0rdm9pZCAKLStnc3RfZmZtcGVnX2luaXRfcGl4X2ZtdF9pbmZvKHZvaWQpOwotKwotK2ludAotK2dzdF9mZm1wZWdfYXV0b19tYXhfdGhyZWFkcyh2b2lkKTsKLSsKLStHX0NPTlNUX1JFVFVSTiBnY2hhciAqCi0rZ3N0X2ZmbXBlZ19nZXRfY29kZWNpZF9sb25nbmFtZSAoZW51bSBDb2RlY0lEIGNvZGVjX2lkKTsKLSsKLStnaW50Ci0rYXZfc21wX2Zvcm1hdF9kZXB0aChlbnVtIEFWU2FtcGxlRm9ybWF0IHNtcF9mbXQpOwotKwotK0dzdEJ1ZmZlciAqCi0rbmV3X2FsaWduZWRfYnVmZmVyIChnaW50IHNpemUsIEdzdENhcHMgKiBjYXBzKTsKLSsKLSsjZW5kaWYgLyogX19HU1RfRkZNUEVHX1VUSUxTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdl9lNTAwbWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2X2U1MDBtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJhNDk4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2X2U1MDBtYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotaW5kZXggODQ3MzA2OS4uNGY3NDk1MiAxMDA3NTUKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLUZpeCBnc3QtZmZtcGVnIGJ1aWxkIGlzc3VlcyBmb3IgbGliYXYgb24gZTUwMG1jIChmc2wtcDQwODApCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+Ci0KLUBAIC0yMjEwLDYgKzIyMTAsMTAgQEAgZWxpZiBlbmFibGVkIHBwYzsgdGhlbgotICAgICAgICAgICAgIGNwdWZsYWdzPSItbWNwdT1jZWxsIgotICAgICAgICAgICAgIGVuYWJsZSBsZGJyeAotICAgICAgICAgOzsKLSsgICAgICAgIGU1MDBtYykKLSsgICAgICAgICAgICBjcHVmbGFncz0iLW1jcHU9ZTUwMG1jIgotKyAgICAgICAgICAgIGRpc2FibGUgYWx0aXZlYwotKyAgICAgICAgOzsKLSAgICAgICAgIGU1MDB2MikKLSAgICAgICAgICAgICBjcHVmbGFncz0iLW1jcHU9ODU0OCAtbWhhcmQtZmxvYXQgLW1mbG9hdC1ncHJzPWRvdWJsZSIKLSAgICAgICAgICAgICBkaXNhYmxlIGFsdGl2ZWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvbGliYXZfZTU1MDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2X2U1NTAwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWVhMmMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvbGliYXZfZTU1MDAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1saWJhdjogQWRkIGNvbmZpZ3MgZm9yIHBwYyBlNTUwMAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSmVzc2UgWmhhbmcgPHNlbi56aGFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUJMjAxMy0wNi0yMCAwNToxODozNi4wNzMxMDQ5NjQgLTA0MDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQkyMDEzLTA2LTIwIDA1OjE4OjM4LjI2OTEwNDE1MCAtMDQwMAotQEAgLTIyMjIsNiArMjIyMiwxMCBAQAotICAgICAgICAgICAgIGNwdWZsYWdzPSItbWNwdT04NTQwIC1taGFyZC1mbG9hdCIKLSAgICAgICAgICAgICBkaXNhYmxlIGFsdGl2ZWMKLSAgICAgICAgIDs7Ci0rICAgICAgICBlNTUwMCkKLSsgICAgICAgICAgICBjcHVmbGFncz0iLW1jcHU9ZTU1MDAgLW1oYXJkLWZsb2F0IgotKyAgICAgICAgICAgIGRpc2FibGUgYWx0aXZlYwotKyAgICAgICAgOzsKLSAgICAgZXNhYwotIAotIGVsaWYgZW5hYmxlZCB4ODY7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnXzAuMTAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZ18wLjEwLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTE5ZmQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnXzAuMTAuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJGRm1wZWctYmFzZWQgR1N0cmVhbWVyIHBsdWctaW4iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGlicG9zdHByb2MvZ3N0cG9zdHByb2MuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT01ODk2ZTQ0NWU0MTY4MTMyNDM4MWY1ODY5ZWUzM2QzOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2ZmbXBlZy9nc3RmZm1wZWcuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1mZjY1NDY3YjBjNTNjZGZhOThkMDY4NGMxYmMyNDBhOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvTElDRU5TRTttZDU9YWJjM2I4Y2IwMjg1NmFhNzgyM2JiYmQxNjJkMTYyMzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9ZTM0NGM4ZmE4MzZjM2E0MWM0Y2JkNzlkN2JkM2EzNzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3N0cmVhbWVyLm5ldC8iCi1ERVBFTkRTID0gImdzdHJlYW1lciBnc3QtcGx1Z2lucy1iYXNlIHpsaWIgYnppcDIgeWFzbS1uYXRpdmUgbGlicG9zdHByb2MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2xvd2VyLXJhbmsuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2gyNjRfcXBlbF9tbXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliYXZfZTUwMG1jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmF2X2U1NTAwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMzY3NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2Zm9ybWF0LW1wZWd0c2VuYy1DaGVjay1kYXRhLWFycmF5LXNpemUtaW4tbXBlZ3RzX3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12cWF2aWRlby1jaGVjay1jaHVuay1zaXplcy1iZWZvcmUtcmVhZGluZy1jaHVua3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdmNvZGVjLW1zcmxlLXVzZS1hdl9pbWFnZV9nZXRfbGluZXNpemUtdG8tY2FsY3VsYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaHVmZnl1dmRlYy1Ta2lwLWxlbi0wLWNhc2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaHVmZnl1dmRlYy1DaGVjay1pbml0X3ZsYy1yZXR1cm4tY29kZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNkZWMtY2hlY2stYmxvY2stbGVuZ3RoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGdzc3ViZGVjLWNoZWNrLVJMRS1zaXplLWJlZm9yZS1jb3B5aW5nLi1GaXgtb3V0LW9mLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF0cmFjM2RlYy1DaGVjay1jb2RpbmctbW9kZS1hZ2FpbnN0LWNoYW5uZWxzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZWFtYWQtZml4LW91dC1vZi1hcnJheS1hY2Nlc3Nlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1qcGVnZGVjLWNoZWNrLVNFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxhYy1maXgtbmJfc2FtcGxlcy1vcmRlci1jYXNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaDI2NC1jb3JyZWN0LXJlZi1jb3VudC1jaGVjay1hbmQtbGltaXQtZml4LW91dC1vZi1hci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJvcXZpZGVvZGVjLWNoZWNrLWRpbWVuc2lvbnMtdmFsaWRpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hYWNkZWMtY2hlY2stY2hhbm5lbC1jb3VudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBuZ2RlYy1maWx0ZXItZG9udC1hY2Nlc3Mtb3V0LW9mLWFycmF5LWVsZW1lbnRzLWF0LXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lcnJvcl9jb25jZWFsbWVudC1DaGVjay10aGF0LXRoZS1waWN0dXJlLWlzLW5vdC1pbi1hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdnAzLWZpeC1vb2ItcmVhZC1mb3ItbmVnYXRpdmUtdG9rZW5zLWFuZC1tZW1sZWFrcy1vbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXZwMy1Db3B5LWFsbC0zLWZyYW1lcy1mb3ItdGhyZWFkLXVwZGF0ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oMjY0X3NlaS1GaXgtaW5maW5pdGUtbG9vcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2Y29kZWMtcGFyc2VyLXJlc2V0LWluZGV4ZXMtb24tcmVhbGxvYy1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZjb2RlYy1ycHphLVBlcmZvcm0tcG9pbnRlci1hZHZhbmNlLWFuZC1jaGVja3MtYmVmby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLUNWRS0yMDEzLTA4NTUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1xZG0yZGVjLWZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zbWFja2VyZGVjLUNoZWNrLXRoYXQtdGhlLWxhc3QtaW5kZXhlcy1hcmUtd2l0aGluLXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZjb2RlYy1kc3B1dGlsLWZpeC1zaWduZWRuZXNzLWluLXNpemVvZi1jb21wYXJpc3Npby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVycm9yLWNvbmNlYWxtZW50LWluaXRpYWxpemUtYmxvY2staW5kZXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1xZG0yLWNoZWNrLWFycmF5LWluZGV4LWJlZm9yZS11c2UtZml4LW91dC1vZi1hcnJheS1hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGF2Zi1jb21wdXRlLXByb2JlLWJ1ZmZlci1zaXplLW1vcmUtcmVsaWFibHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mZnNlcnZlci1zZXQtb2Zvcm1hdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWgyNjQtc2V0LXBhcmFtZXRlcnMtZnJvbS1TUFMtd2hlbmV2ZXItaXQtY2hhbmdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWgyNjQtc2tpcC1lcnJvci1jb25jZWFsbWVudC13aGVuLVNQUy1hbmQtc2xpY2VzLWFyZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdmNvZGVjLXNtYy1maXgtb2ZmLWJ5LTEtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1hdmNvZGVjLW1qcGVnZGVjLWNoZWNrLWJpdHMtcGVyLXBpeGVsLWZvci1jaGFuZ2VzLXNpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmF2LTkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTEtNDM1Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC03OTMzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTkzMTgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTYwMy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZjViZWFjYWYxMzEyZGIyZGIzMGEwMjZiMzY4ODhjNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NmZjYTA1YjA4ZTAwMTM0ZTNjYjkyZmEzNDc1MDdmNDJjYmQ0OGRkYjA4ZWQzMzQzYTkxMmRlZjE4N2ZiYjYyIgotCi1QUiA9ICJyOCIKLQotR1NUUkVBTUVSX0RFQlVHID89ICItLWRpc2FibGUtZGVidWciCi0KLUZGTVBFR19FWFRSQV9DT05GSUdVUkUgPSAiLS13aXRoLWZmbXBlZy1leHRyYS1jb25maWd1cmUiCi0jIHBhc3MgLS1jcHUgZm9yIHBvd2VycGMuIGdldCBjcHUgbmFtZSBieSBzdHJpcHBpbmcgInBwYyIgb3IgInBwYzY0IgotIyBmcm9tIERFRkFVTFRUVU5FCi1GRk1QRUdfQ1BVX3Bvd2VycGMgPSAiLS1jcHU9JHtAZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJywgRmFsc2UpWzM6XX0iCi1GRk1QRUdfQ1BVX3Bvd2VycGM2NCA9ICItLWNwdT0ke0BkLmdldFZhcignREVGQVVMVFRVTkUnLCBGYWxzZSlbNTpdfSIKLUZGTVBFR19FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSRyA9ICItLXRhcmdldC1vcz1saW51eCAke0ZGTVBFR19DUFV9IFwKLSAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCi0gIC0tcmFubGliPScke1JBTkxJQn0nIFwKLSAgJHtHU1RSRUFNRVJfREVCVUd9IgotRkZNUEVHX0VYVFJBX0NPTkZJR1VSRV9DT01NT04gPSBcCi0nJHtGRk1QRUdfRVhUUkFfQ09ORklHVVJFfT0iJHtGRk1QRUdfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkd9IicKLQotRVhUUkFfT0VDT05GID0gIiR7RkZNUEVHX0VYVFJBX0NPTkZJR1VSRV9DT01NT059IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZXh0ZXJuYWwtbGliYXYiCi1QQUNLQUdFQ09ORklHW2V4dGVybmFsLWxpYmF2XSA9ICItLXdpdGgtc3lzdGVtLWZmbXBlZywsbGliYXYiCi1QQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvKi5hIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy80MDczNi8KLVBOQkxBQ0tMSVNUW2dzdC1mZm1wZWddID89ICJOb3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnRseSB1c2VkIGZmbXBlZyAzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1tZXRhLWJhc2VfMC4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtbWV0YS1iYXNlXzAuMTAuYmIKaW5kZXggMDM5YWJlMS4uODhmMWFiZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1tZXRhLWJhc2VfMC4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LW1ldGEtYmFzZV8wLjEwLmJiCkBAIC02LDcgKzYsNyBAQAogREVQRU5EU19CQUQ9IiR7QCdnc3QtcGx1Z2lucy1iYWQnIGlmICdiYWQnIGluIENPTU1FUkNJQUxfUExVR0lOUy5zcGxpdCgnLScpIGVsc2UgJyd9IgogREVQRU5EUyA9ICJnc3RyZWFtZXIgZ3N0LXBsdWdpbnMtYmFzZSBnc3QtcGx1Z2lucy1nb29kICR7REVQRU5EU19VR0xZfSAke0RFUEVORFNfQkFEfSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsL3JwaS1lZ2wtZ2xlczItZGVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsL3JwaS1lZ2wtZ2xlczItZGVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYjFjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXBsdWdpbnMtZ2wvcnBpLWVnbC1nbGVzMi1kZXAucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorQ2hlY2sgZm9yIGhlYWRlciBhbmQgbGlicmFyeSBzZXBhcmF0ZWx5IGFuZCBjaGVjayBmb3IgR0xFU3YyIGJlZm9yZSBlZ2wKK3RoaXMgaXMgdG8gb3ZlcmNvbWUgYW4gYW5ub3lpbmcgaXNzdWUgd2l0aCBycGkvdXNlcmxhbmQgd2hlcmUgZWdsIGRlcGVuZHMKK29uIHN5c21ib2xzIGZyb20gbGliR0xFU3YyCisKKy1LaGVtCitJbmRleDogZ3N0LXBsdWdpbnMtZ2wtMC4xMC4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWdsLTAuMTAuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdzdC1wbHVnaW5zLWdsLTAuMTAuMy9jb25maWd1cmUuYWMKK0BAIC0xODMsOCArMTgzLDEwIEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgZWxzZQorICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW0VHTC9lZ2wuaF0sIFtIQVZFX0VHTD15ZXNdLCBbSEFWRV9FR0w9bm9dKQorICAgICAgIGlmIHRlc3QgIngkSEFWRV9FR0wiID0gInh5ZXMiOyB0aGVuCistICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCwsIEFDX01TR19FUlJPUihbRUdMIGlzIHJlcXVpcmVkXSkpCistICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oLCwgQUNfTVNHX0VSUk9SKFtPcGVuR0xFUzIgaXMgcmVxdWlyZWRdKSkKKysgICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW0dMRVMyL2dsMi5oXSwsIEFDX01TR19FUlJPUihbT3BlbkdMRVMyIGlzIHJlcXVpcmVkXSkpCisrICAgICAgICBBQ19DSEVDS19MSUIoR0xFU3YyLFtnbFRleEltYWdlMkRdLCwgQUNfTVNHX0VSUk9SKFtPcGVuR0xFUzIgaXMgcmVxdWlyZWRdKSkKKysgICAgICAgIEFDX0NIRUNLX0hFQURFUlMoW0VHTC9lZ2wuaF0sLCBBQ19NU0dfRVJST1IoW0VHTCBpcyByZXF1aXJlZF0pKQorKyAgICAgICAgQUNfQ0hFQ0tfTElCKEVHTCxbZWdsR2V0RXJyb3JdLCwgQUNfTVNHX0VSUk9SKFtFR0wgaXMgcmVxdWlyZWRdKSkKKyAgICAgICAgIEdMX0xJQlM9IiRMSUJTICRYX0xJQlMgLWxFR0wgLWxHTEVTdjIiCisgICAgICAgICBHTF9CQUNLRU5EPXgxMUVTMgorICAgICAgICAgR0xfVFlQRT1nbGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXBsdWdpbnMtZ2xfMC4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsXzAuMTAuMy5iYgppbmRleCA2ODU5ZjMzLi5mM2VhZjMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXBsdWdpbnMtZ2xfMC4xMC4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1nbF8wLjEwLjMuYmIKQEAgLTYsMTMgKzYsMTcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhYzcwZWRlMTNmNzk5NzhkNTZlYWVkOGFiYWEzYzkzOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODM0MGI2YTRiOGFiY2UxNjM0NGE3YmMzM2U3NGE5NGZkY2NlNGY1N2VmNjM0MmNkZjJmOTQxYzQyOWJmMjEwIgogCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtY29uZGl0aW9uYWwtZ2wtZnJhbWVidWZmZXItdW5kZWZpbmVkLXVzZS5wYXRjaCIKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1jb25kaXRpb25hbC1nbC1mcmFtZWJ1ZmZlci11bmRlZmluZWQtdXNlLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vcnBpLWVnbC1nbGVzMi1kZXAucGF0Y2ggXAorIgogCiBERVBFTkRTICs9ICJnc3QtcGx1Z2lucy1iYXNlIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wganBlZyBsaWJwbmcgZ2xldyIKIAogUFIgPSAicjQiCiAKLWluaGVyaXQgZ2V0dGV4dAoraW5oZXJpdCBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgogCiAjIFRoaXMgcGFja2FnZSBkb2Vzbid0IGhhdmUgYSBjb25maWd1cmUgc3dpdGNoIGZvciBFR0wgb3IgR0wsIHNvIGZvcmNpYmx5IHRlbGwKICMgY29uZmlndXJlIHRoYXQgaXQgY2FuJ3QgZmluZCBnbC5oIHNvIGl0IGFsd2F5cyB1c2VzIEVHTC4gIElmL3doZW4gd2UgaGF2ZSBzb21lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2Rpc3BsYXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2Rpc3BsYXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYjBlNmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9kaXNwbGF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAzZTQ2ZDJlNTAxZGE2OGQ5MjliYjVmMjY5MDBhMjkyYTVmYzA0YTFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIFdlc3RlcmZlbGQgPHN0ZWZhbkBzcGFjZS50d2MuZGU+Ci1EYXRlOiBNb24sIDIzIEFwciAyMDEyIDAzOjEwOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aW1lIGRpc3BsYXkgdXBkYXRlcyAoYnJva2VuIGJ5IGludHJvZHVjdGlvbiBvZiBxdWlldAotIG1vZGUpLgotCi0tLS0KLSBzcmMvZ3N0MTIzLmNjIHwgICAgMSArCi0gc3JjL21zZy5jYyAgICB8ICAgIDcgKysrKysrKwotIHNyYy9tc2cuaCAgICAgfCAgICAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dzdDEyMy5jYyBiL3NyYy9nc3QxMjMuY2MKLWluZGV4IDIwZTkxZTUuLmNlNTg3NmQgMTAwNjQ0Ci0tLS0gYS9zcmMvZ3N0MTIzLmNjCi0rKysgYi9zcmMvZ3N0MTIzLmNjCi1AQCAtNjQwLDYgKzY0MCw3IEBAIGNiX3ByaW50X3Bvc2l0aW9uIChncG9pbnRlciAqZGF0YSkKLSAgICAgICBlbHNlCi0gICAgICAgICBibGFua3MgKz0gIiAgICAgICAgICI7Ci0gICAgICAgTXNnOjpwcmludCAoIiVzJXNcciIsIHN0YXR1cy5jX3N0cigpLCBibGFua3MuY19zdHIoKSk7Ci0rICAgICAgTXNnOjpmbHVzaCgpOwotICAgICB9Ci0gCi0gICAvKiBjYWxsIG1lIGFnYWluICovCi1kaWZmIC0tZ2l0IGEvc3JjL21zZy5jYyBiL3NyYy9tc2cuY2MKLWluZGV4IDU0N2NkOTAuLjMzY2FkYTIgMTAwNjQ0Ci0tLS0gYS9zcmMvbXNnLmNjCi0rKysgYi9zcmMvbXNnLmNjCi1AQCAtNDEsNiArNDEsMTMgQEAgcHJpbnQgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotICAgICB9Ci0gfQotIAotK3ZvaWQKLStmbHVzaCgpCi0rewotKyAgaWYgKCFPcHRpb25zOjp0aGUoKS5xdWlldCkKLSsgICAgZmZsdXNoIChzdGRvdXQpOwotK30KLSsKLSB9Ci0gCi0gfQotZGlmZiAtLWdpdCBhL3NyYy9tc2cuaCBiL3NyYy9tc2cuaAotaW5kZXggZTBjZWQyNC4uNWJlYmFjMCAxMDA2NDQKLS0tLSBhL3NyYy9tc2cuaAotKysrIGIvc3JjL21zZy5oCi1AQCAtMjcsNiArMjcsNyBAQCBuYW1lc3BhY2UgTXNnCi0gewotIAotIHZvaWQgcHJpbnQgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLSt2b2lkIGZsdXNoKCk7Ci0gCi0gfQotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0MTIzXzAuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QxMjNfMC4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZTFiYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QxMjNfMC4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkZsZXhpYmxlIENMSSBwbGF5ZXIgaW4gdGhlIHNwaXJpdCBvZiBtcGcxMjMsIGJhc2VkIG9uIEdTdHJlYW1lciIKLUhPTUVQQUdFID0gImh0dHA6Ly9zcGFjZS50d2MuZGUvfnN0ZWZhbi9nc3QxMjMucGhwIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3N0MTIzLmNjO2JlZ2lubGluZT0xO2VuZGxpbmU9MTk7bWQ1PTA1ZDJmNWQ1NGI5ODViOTg2YzI2YWY5MzFkMjA4NGY4IgotCi1ERVBFTkRTID0gImxpYngxMSBnc3RyZWFtZXIgZ3N0LXBsdWdpbnMtYmFzZSBndGsrIG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NwYWNlLnR3Yy5kZS9+c3RlZmFuL2dzdDEyMy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWU3Nzc2N2M5ZDZmZWNlZTU2NDFmOTU4MDRmMTYwZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlkMWRlMDI1ZWNhMDQ2NmMxMjVkY2Q2YTExYjY0MzQxYmRmOThlZTRjMDNjM2U1YTEyMzIxZDc3Y2I4YjBjZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUE5CTEFDS0xJU1RbZ3N0MTIzXSA/PSAiZ3N0MTIzIGlzIHN0aWxsICJzb21ldGltZXMiIHVzaW5nIHdyb25nIHN5c3Jvb3QgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvanVjZS9wcm9qdWNlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvanVjZS9wcm9qdWNlci5pbmMKaW5kZXggNmY2OTZlMi4uNjNlZDllOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2p1Y2UvcHJvanVjZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9qdWNlL3Byb2p1Y2VyLmluYwpAQCAtMywxOSArMywxOSBAQAogSlVDRSBzdXBwb3J0ZWQgcGxhdGZvcm1zLCBpbmNsdWRpbmcgTGludXggYW5kIEVtYmVkZGVkIExpbnV4LiIKIFNFQ1RJT04gPSAidXRpbHMiCiBIT01FUEFHRSA9ICJodHRwOi8vanVjZS5jb20vIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS50eHQ7bWQ1PTlhYjc2NWNjZGE4ODkwZWZjNzUzZjI4NzkxMWExOTU4IgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDttZDU9NjVjNTBiNGZmMzUyMmI5OTQzNmRhMTAwNTM2Y2NkMWMiCiAKIGluaGVyaXQgcGtnY29uZmlnCiAKIERFUEVORFMgPSAibGlieDExIGxpYnhleHQgbGlieGluZXJhbWEgbGlieHJhbmRyIGxpYnhjdXJzb3IgZnJlZXR5cGUgYWxzYS1saWIgY3VybCIKIAotU1JDUkVWID0gImE4YTdmYTI4ZTJlOWNiMTlkYjZhMjdmY2NjYjU2N2E4Y2NmZTYxMDkiCi1CUkFOQ0ggPSAiZGV2ZWxvcCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qdWxpYW5zdG9yZXIvSlVDRS5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfSIKK1NSQ1JFViA9ICI0ZjQxZjI4YjQ3ZDAxYjkzOTU1OTEyM2QxNDViNGU1ODYwNTI4YmI3IgorQlJBTkNIID0gIm1hc3RlciIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9XZUFyZVJPTEkvSlVDRS5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjQuMi4zK2dpdCR7U1JDUFZ9IgorUFYgPSAiNS4wLjEiCiAKIEpVQ0VfUFJPSlVDRVJfQlVJTERfUEFUSCA9ICIke0J9L2V4dHJhcy9Qcm9qdWNlci9CdWlsZHMiCiBKVUNFX1BST0pVQ0VSX01BS0VGSUxFX1BBVEggPSAiJHtKVUNFX1BST0pVQ0VSX0JVSUxEX1BBVEh9L0xpbnV4TWFrZWZpbGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4xOS4yMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjE5LjIxLmJiCmluZGV4IGMxNmYzYmUuLjJlYjIxYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjE5LjIxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjE5LjIxLmJiCkBAIC0zNiw5ICszNiwxMiBAQAogICAgIGRidXMgXAogICAgIGV4cGF0IFwKICAgICB6bGliIFwKLSAgICBsaWJ1cG5wIFwKKyAgICBsaWJ1cG5wMS42IFwKICIKIAorIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBtcGcxMjMgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL3d3dy5tdXNpY3BkLm9yZy9kb3dubG9hZC8ke0JQTn0vMC4xOS8ke0JQfS50YXIueHogXAogICAgIGZpbGU6Ly9tcGQuY29uZi5pbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveF8xNC40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveF8xNC40LjAuYmIKaW5kZXggZTExNWYxYy4uM2ViMTg1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zb3gvc294XzE0LjQuMC5iYgpAQCAtNiw2ICs2LDkgQEAKIAogREVQRU5EUyA9ICJsaWJwbmcgZmZtcGVnIGxpYnNuZGZpbGUxIGxpYnZvcmJpcyIKIAorIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBmZm1wZWcgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBQUiA9ICJyMiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgcHVsc2VhdWRpbycsIGQpfSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc3RyZWFtcmlwcGVyL3N0cmVhbXJpcHBlcl8xLjY0LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc3RyZWFtcmlwcGVyL3N0cmVhbXJpcHBlcl8xLjY0LjYuYmIKaW5kZXggOTQzNTViNi4uNzIyODE1YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3N0cmVhbXJpcHBlci9zdHJlYW1yaXBwZXJfMS42NC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zdHJlYW1yaXBwZXIvc3RyZWFtcmlwcGVyXzEuNjQuNi5iYgpAQCAtNiw2ICs2LDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJtYWQgbGlib2dnIGxpYnZvcmJpcyIKIAorIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBsaWJtYWQgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBTUkNfVVJJID0gIlwKICAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCiAgICAgZmlsZTovLzAwMDEtYnVpbGQtdGhlc2UtYXJlLWZvcmVpZ24tYXV0b21ha2UtcHJvamVjdHMucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGMuaW5jCmluZGV4IDA4N2JhYWIuLmFjYjNjY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMKQEAgLTEzLDYgKzEzLDkgQEAKICAgIGxpYm10cCBsaWJvcHVzIG9yYyBsaWJzYW1wbGVyYXRlMCBsaWJ1c2IxIHNjaHJvZWRpbmdlciB0YWdsaWIgXAogICAgdGlmZiIKIAorIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBmZm1wZWcgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aWRlb2xhbi5vcmcvcHViL3ZpZGVvbGFuLyR7QlBOfS8ke1BWfS8ke0JQfS50YXIueHoiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDEtYnVpbGQtUHJvdGVjdC1hZ2FpbnN0LXVuc3VwcG9ydGVkLUNQVS10eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAxLWJ1aWxkLVByb3RlY3QtYWdhaW5zdC11bnN1cHBvcnRlZC1DUFUtdHlwZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY2OGRmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAxLWJ1aWxkLVByb3RlY3QtYWdhaW5zdC11bnN1cHBvcnRlZC1DUFUtdHlwZXMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA0OTQ1ZGNhMTFiYzRkZGVjNjBiZDg1OGY0NTIxMmRjOGYzOTYzOGUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorRGF0ZTogVHVlLCA1IEp1bCAyMDE2IDE4OjA3OjQ1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS82XSBidWlsZDogUHJvdGVjdCBhZ2FpbnN0IHVuc3VwcG9ydGVkIENQVSB0eXBlcworCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAwLjRdCistLS0KKyBjb25maWd1cmUuYWMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNmY5NTUzYi4uZjUzMDRiOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzAsOCArNzAsOSBAQCBBU19DQVNFKFsiJHtob3N0X2NwdX0iXSwKKyAgICAgICAgIFsKKyAgICAgICAgICBIQVZFX0FSTT0xCisgICAgICAgICAgQVJDSF9DRkxBR1M9Ii1EV0VCUlRDX0FSQ0hfQVJNIgorLSAgICAgICAgXQorKyAgICAgICAgXSwKKyAgICAgIyBGSVhNRTogQWRkIE1JUFMgc3VwcG9ydCwgc2VlIHdlYnJ0Yy9CVUlMRC5nbiBmb3IgZGVmaW5lcworKyAgICBbQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBDUFUgdHlwZSAkaG9zdF9jcHVdKV0KKyApCisgQU1fQ09ORElUSU9OQUwoSEFWRV9YODYsIFt0ZXN0ICJ4JHtIQVZFX1g4Nn0iID0gIngxIl0pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9BUk0sIFt0ZXN0ICJ4JHtIQVZFX0FSTX0iID0gIngxIl0pCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMi1idWlsZC1BZGQtQVJNLTY0Yml0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMi1idWlsZC1BZGQtQVJNLTY0Yml0LXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUyMDJiMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAyLWJ1aWxkLUFkZC1BUk0tNjRiaXQtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGI1YmRhMzQzMTE1OWI2NTA1ZGNkMDY5NjQxYzg2MzAxOGM0ZDQzMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CitEYXRlOiBXZWQsIDYgSnVsIDIwMTYgMTU6MTg6MTUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIGJ1aWxkOiBBZGQgQVJNIDY0Yml0IHN1cHBvcnQKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbZXhwZWN0ZWQgaW4gMC40XQorLS0tCisgY29uZmlndXJlLmFjIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZjUzMDRiOC4uYmUyMDUxNCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzEsNiArNzEsMTEgQEAgQVNfQ0FTRShbIiR7aG9zdF9jcHV9Il0sCisgICAgICAgICAgSEFWRV9BUk09MQorICAgICAgICAgIEFSQ0hfQ0ZMQUdTPSItRFdFQlJUQ19BUkNIX0FSTSIKKyAgICAgICAgIF0sCisrICAgIFthYXJjaDY0Kl0sCisrICAgICAgICBbCisrICAgICAgICAgSEFWRV9ORU9OPTEKKysgICAgICAgICBBUkNIX0NGTEFHUz0iLURXRUJSVENfSEFTX05FT04gLURXRUJSVENfQVJDSF9BUk02NCIKKysgICAgICAgIF0sCisgICAgICMgRklYTUU6IEFkZCBNSVBTIHN1cHBvcnQsIHNlZSB3ZWJydGMvQlVJTEQuZ24gZm9yIGRlZmluZXMKKyAgICAgW0FDX01TR19FUlJPUihbVW5zdXBwb3J0ZWQgQ1BVIHR5cGUgJGhvc3RfY3B1XSldCisgKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDMtYnVpbGQtZml4LWFyY2hpdGVjdHVyZS1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMy1idWlsZC1maXgtYXJjaGl0ZWN0dXJlLWRldGVjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmUyNzBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDMtYnVpbGQtZml4LWFyY2hpdGVjdHVyZS1kZXRlY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA3NzIyZmI4YTMxODlmZWEwZjYzODFmMDJhMGU0ZjYzYzg0N2YwMzkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CitEYXRlOiBTYXQsIDYgQXVnIDIwMTYgMTE6MDI6NDMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIGJ1aWxkOiBmaXggYXJjaGl0ZWN0dXJlIGRldGVjdGlvbgorCitUaGUgY3VycmVudCBhcmNoaXRlY3R1cmUgZGV0ZWN0aW9uLCBiYXNlZCBvbiB0aGUgImhvc3RfY3B1IiBwYXJ0IG9mIHRoZQordHVwbGUgZG9lcyBub3Qgd29yayBwcm9wZXJseSBmb3IgYSBudW1iZXIgb2YgcmVhc29uOgorCisgLSBUaGUgY29kZSBhc3N1bWVzIHRoYXQgaWYgaG9zdF9jcHUgc3RhcnRzIHdpdGggImFybSIgdGhlbiBBUk0KKyAgIGluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGljaCBpcyBpbmNvcnJlY3QuIEluZGVlZCwgQ29ydGV4LU0KKyAgIHBsYXRmb3JtcyBjYW4gcnVuIExpbnV4LCB0aGV5IGFyZSBBUk0gcGxhdGZvcm1zIChzbyBob3N0X2NwdSA9IGFybSksCisgICBidXQgdGhleSBkb24ndCBzdXBwb3J0IEFSTSBpbnN0cnVjdGlvbnM6IHRoZXkgc3VwcG9ydCBvbmx5IHRoZQorICAgVGh1bWItMiBpbnN0cnVjdGlvbiBzZXQuCisKKyAtIFRoZSBhcm12NyBjYXNlIGlzIGFsc28gbm90IHZlcnkgdXNlZnVsLCBhcyBpdCBpcyBub3Qgc3RhbmRhcmQgYXQgYWxsCisgICB0byBwYXNzIGFybXY3IGFzIGhvc3RfY3B1IGV2ZW4gaWYgdGhlIGhvc3Qgc3lzdGVtIGlzIGFjdHVhbGx5IEFSTXY3CisgICBiYXNlZC4KKworIC0gRm9yIHRoZSBzYW1lIHJlYXNvbiwgdGhlIGFybXY4IGNhc2UgaXMgbm90IHZlcnkgdXNlZnVsOiBBUk12OCBpcworICAgQUFyY2g2NCwgYW5kIHRoZXJlIGlzIGFscmVhZHkgYSBzZXBhcmF0ZSBjYXNlIHRvIGhhbmRsZSB0aGlzCisgICBhcmNoaXRlY3R1cmUuCisKK1NvLCB0aGlzIGNvbW1pdCBtb3ZlcyBhd2F5IGZyb20gYSBob3N0X2NwdSBiYXNlZCBsb2dpYywgYW5kIGluc3RlYWQKK3Rlc3RzIHVzaW5nIEFDX0NIRUNLX0RFQ0xTKCkgdGhlIGJ1aWx0LWluIGRlZmluaXRpb25zIG9mIHRoZSBjb21waWxlcjoKKworIC0gSWYgd2UgaGF2ZSBfX0FSTV9BUkNIX0lTQV9BUk0gZGVmaW5lZCwgdGhlbiBpdCdzIGFuIEFSTSBwcm9jZXNzb3IKKyAgIHRoYXQgc3VwcG9ydHMgdGhlIEFSTSBpbnN0cnVjdGlvbiBzZXQgKHRoaXMgYWxsb3dzIHRvIGV4Y2x1ZGUgVGh1bWItMgorICAgb25seSBwcm9jZXNzb3JzKS4KKworIC0gSWYgd2UgaGF2ZSBfX0FSTV9BUkNIXzdBX18sIHRoZW4gd2UgaGF2ZSBhbiBBUk12Ny1BIHByb2Nlc3NvciwgYW5kCisgICB3ZSBjYW4gZW5hYmxlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGltaXphdGlvbnMKKworIC0gU2FtZSBmb3IgX19hYXJjaDY0X18sIF9faTM4Nl9fIGFuZCBfX3g4Nl82NF9fLgorCitJbiBhZGRpdGlvbiwgd2UgcmVtb3ZlIHRoZSBBQ19NU0dfRVJST1IoKSB0aGF0IG1ha2VzIHRoZSBidWlsZCBmYWlsIGZvcgorYWxsIGFyY2hpdGVjdHVyZXMgYnV0IHRoZSBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLiBJbmRlZWQsCit3ZWJydGMtYXVkaW8tcHJvY2Vzc2luZyBidWlsZHMganVzdCBmaW5lIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzICh0ZXN0ZWQKK29uIE1JUFMpLCBpdCdzIGp1c3QgdGhhdCBub25lIG9mIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3B0aW1pemF0aW9ucword2lsbCBiZSB1c2VkLgorCitTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDAuNF0KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDM1ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiZTIwNTE0Li5lODk4MDE0IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01NSwzMCArNTUsMTcgQEAgQVNfQ0FTRShbIiR7aG9zdH0iXSwKKyApCisgQUNfU1VCU1QoUExBVEZPUk1fQ0ZMQUdTKQorIAorLUFTX0NBU0UoWyIke2hvc3RfY3B1fSJdLAorLSAgICBbaT84Nnx4ODZfNjRdLAorLSAgICAgICAgWworLSAgICAgICAgIEhBVkVfWDg2PTEKKy0gICAgICAgIF0sCistICAgIFthcm12Nyp8YXJtdjgqXSwKKy0gICAgICAgIFsKKy0gICAgICAgICBIQVZFX0FSTT0xCistICAgICAgICAgSEFWRV9BUk1WNz0xCistICAgICAgICAgQVJDSF9DRkxBR1M9Ii1EV0VCUlRDX0FSQ0hfQVJNIC1EV0VCUlRDX0FSQ0hfQVJNX1Y3IgorLSAgICAgICAgXSwKKy0gICAgW2FybSpdLAorLSAgICAgICAgWworLSAgICAgICAgIEhBVkVfQVJNPTEKKy0gICAgICAgICBBUkNIX0NGTEFHUz0iLURXRUJSVENfQVJDSF9BUk0iCistICAgICAgICBdLAorLSAgICBbYWFyY2g2NCpdLAorLSAgICAgICAgWworLSAgICAgICAgIEhBVkVfTkVPTj0xCistICAgICAgICAgQVJDSF9DRkxBR1M9Ii1EV0VCUlRDX0hBU19ORU9OIC1EV0VCUlRDX0FSQ0hfQVJNNjQiCistICAgICAgICBdLAorLSAgICAjIEZJWE1FOiBBZGQgTUlQUyBzdXBwb3J0LCBzZWUgd2VicnRjL0JVSUxELmduIGZvciBkZWZpbmVzCistICAgIFtBQ19NU0dfRVJST1IoW1Vuc3VwcG9ydGVkIENQVSB0eXBlICRob3N0X2NwdV0pXQorLSkKKysjIFRlc3RpbmcgX19BUk1fQVJDSF9JU0FfQVJNIHNpbmNlIHRoZSBjb2RlIGNvbnRhaW5zIEFSTSBpbnN0cnVjdGlvbnMsCisrIyB3aGljaCBkb24ndCB3b3JrIG9uIFRodW1iLTIgb25seSBwbGF0Zm9ybXMgKEFSTXY3LU0pLgorK0FDX0NIRUNLX0RFQ0xTKFtfX0FSTV9BUkNIX0lTQV9BUk1dLAorKwlbSEFWRV9BUk09MTsgQVJDSF9DRkxBR1M9IiR7QVJDSF9DRkxBR1N9IC1EV0VCUlRDX0FSQ0hfQVJNIl0pCisrQUNfQ0hFQ0tfREVDTFMoW19fQVJNX0FSQ0hfN0FfX10sCisrCVtIQVZFX0FSTVY3PTE7IEFSQ0hfQ0ZMQUdTPSIke0FSQ0hfQ0ZMQUdTfSAtRFdFQlJUQ19BUkNIX0FSTV9WNyJdKQorK0FDX0NIRUNLX0RFQ0xTKFtfX2FhcmNoNjRfX10sCisrCVtIQVZFX05FT049MTsgQVJDSF9DRkxBR1M9IiR7QVJDSF9DRkxBR1N9IC1EV0VCUlRDX0hBU19ORU9OIC1EV0VCUlRDX0FSQ0hfQVJNNjQiXSkKKytBQ19DSEVDS19ERUNMUyhbX19pMzg2X19dLCBbSEFWRV9YODY9MV0pCisrQUNfQ0hFQ0tfREVDTFMoW19feDg2XzY0X19dLCBbSEFWRV9YODY9MV0pCisrCisgQU1fQ09ORElUSU9OQUwoSEFWRV9YODYsIFt0ZXN0ICJ4JHtIQVZFX1g4Nn0iID0gIngxIl0pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9BUk0sIFt0ZXN0ICJ4JHtIQVZFX0FSTX0iID0gIngxIl0pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9BUk1WNywgW3Rlc3QgIngke0hBVkVfQVJNVjd9IiA9ICJ4MSJdKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDQtdHlwZWRlZnMuaC1hZGQtc3VwcG9ydC1mb3ItNjQtYml0LWFuZC1iaWctZW5kaWFuLU1JUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA0LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLTY0LWJpdC1hbmQtYmlnLWVuZGlhbi1NSVAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2ZjEwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA0LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLTY0LWJpdC1hbmQtYmlnLWVuZGlhbi1NSVAucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSAwYzMzMmI3ZDk0Zjg0MjVjNGYzMzM0NGRkZjQwNmI2ZWVhNDU4ODYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE3OjAxOjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNC82XSB0eXBlZGVmcy5oOiBhZGQgc3VwcG9ydCBmb3IgNjQtYml0IGFuZCBiaWcgZW5kaWFuIE1JUFMKKworVGhlIDY0LWJpdCBjaGVjayBpcyB0YWtlbiBmcm9tIHRoZSB1cHN0cmVhbSB3ZWJydGMgcHJvamVjdCwgdGhlIGJpZworZW5kaWFuIGNoZWNrIGlzIG15IG93biBhZGRpdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyB3ZWJydGMvdHlwZWRlZnMuaCB8IDExICsrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3dlYnJ0Yy90eXBlZGVmcy5oIGIvd2VicnRjL3R5cGVkZWZzLmgKK2luZGV4IGQ4NzU0OTAuLmQxYjJmNTQgMTAwNjQ0CistLS0gYS93ZWJydGMvdHlwZWRlZnMuaAorKysrIGIvd2VicnRjL3R5cGVkZWZzLmgKK0BAIC00MSw5ICs0MSwxOCBAQAorIC8vI2RlZmluZSBXRUJSVENfQVJDSF9BUk1FTAorICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLSNlbGlmIGRlZmluZWQoX19NSVBTRUxfXykKKysjZWxpZiBkZWZpbmVkKF9fTUlQU0VMX18pIHx8IGRlZmluZWQoX19NSVBTRUJfXykKKysjZGVmaW5lIFdFQlJUQ19BUkNIX01JUFNfRkFNSUxZCisrI2lmIGRlZmluZWQoX19MUDY0X18pCisrI2RlZmluZSBXRUJSVENfQVJDSF82NF9CSVRTCisrI2Vsc2UKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX01JUFNFTF9fKQorICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorKyNlbHNlCisrI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisrI2VuZGlmCisgI2VsaWYgZGVmaW5lZChfX3BuYWNsX18pCisgI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCisgI2RlZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwNS10eXBlZGVmcy5oLWFkZC1zdXBwb3J0LWZvci1Qb3dlclBDLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDUtdHlwZWRlZnMuaC1hZGQtc3VwcG9ydC1mb3ItUG93ZXJQQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTZiNTdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDUtdHlwZWRlZnMuaC1hZGQtc3VwcG9ydC1mb3ItUG93ZXJQQy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGRiNWY1NzBlOTI4YzhjYTViMGI4ZGM3MDJlMWFmMGE1NzI3N2YwOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBNb24sIDMgSnVsIDIwMTcgMTY6MjA6MDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzZdIHR5cGVkZWZzLmg6IGFkZCBzdXBwb3J0IGZvciBQb3dlclBDCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgd2VicnRjL3R5cGVkZWZzLmggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3dlYnJ0Yy90eXBlZGVmcy5oIGIvd2VicnRjL3R5cGVkZWZzLmgKK2luZGV4IGQxYjJmNTQuLjZlMzRkOWUgMTAwNjQ0CistLS0gYS93ZWJydGMvdHlwZWRlZnMuaAorKysrIGIvd2VicnRjL3R5cGVkZWZzLmgKK0BAIC01Myw2ICs1Myw5IEBACisgI2Vsc2UKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKyAjZW5kaWYKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworKyNkZWZpbmUgV0VCUlRDX0FSQ0hfQklHX0VORElBTgorICNlbGlmIGRlZmluZWQoX19wbmFjbF9fKQorICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDYtY29tbW9uX2F1ZGlvLWltcGxlbWVudC1lbmRpYW5uZXNzLWNvbnZlcnNpb24taW4td2F2LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA2LWNvbW1vbl9hdWRpby1pbXBsZW1lbnQtZW5kaWFubmVzcy1jb252ZXJzaW9uLWluLXdhdi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyNmFiMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA2LWNvbW1vbl9hdWRpby1pbXBsZW1lbnQtZW5kaWFubmVzcy1jb252ZXJzaW9uLWluLXdhdi0ucGF0Y2gKQEAgLTAsMCArMSwxMTYgQEAKK0Zyb20gN2QzMWRhOGVmOTM5ODcwMDBmMjk3ZDQzNWRiYWNhZjdkNDM2MTA3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK0RhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTg6Mzg6MzAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA2LzZdIGNvbW1vbl9hdWRpbzogaW1wbGVtZW50IGVuZGlhbm5lc3MgY29udmVyc2lvbiBpbiB3YXYgZmlsZQorIGhhbmRsaW5nCisKK1RoZSBjb2RlIGRpZG4ndCBidWlsZCBmb3IgYmlnIGVuZGlhbiBtYWNoaW5lcyBkdWUgdG8gdGhlIG1pc3NpbmcKK2VuZGlhbm5lc3MgY29udmVyc2lvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYyAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjIGIvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYworaW5kZXggYjE0YjYyMC4uZTJmNzczOCAxMDA2NDQKKy0tLSBhL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKKysrKyBiL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKK0BAIC02NCw5ICs2NCw2IEBAIFdhdlJlYWRlcjo6fldhdlJlYWRlcigpIHsKKyB9CisgCisgc2l6ZV90IFdhdlJlYWRlcjo6UmVhZFNhbXBsZXMoc2l6ZV90IG51bV9zYW1wbGVzLCBpbnQxNl90KiBzYW1wbGVzKSB7CistI2lmbmRlZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCistI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0byBiaWctZW5kaWFuIHdoZW4gcmVhZGluZyBmcm9tIFdBViBmaWxlIgorLSNlbmRpZgorICAgLy8gVGhlcmUgY291bGQgYmUgbWV0YWRhdGEgYWZ0ZXIgdGhlIGF1ZGlvOyBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBpdC4KKyAgIG51bV9zYW1wbGVzID0gc3RkOjptaW4ocnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KG51bV9zYW1wbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3NhbXBsZXNfcmVtYWluaW5nXyk7CitAQCAtNzYsNiArNzMsMTMgQEAgc2l6ZV90IFdhdlJlYWRlcjo6UmVhZFNhbXBsZXMoc2l6ZV90IG51bV9zYW1wbGVzLCBpbnQxNl90KiBzYW1wbGVzKSB7CisgICBSVENfQ0hFQ0socmVhZCA9PSBudW1fc2FtcGxlcyB8fCBmZW9mKGZpbGVfaGFuZGxlXykpOworICAgUlRDX0NIRUNLX0xFKHJlYWQsIG51bV9zYW1wbGVzX3JlbWFpbmluZ18pOworICAgbnVtX3NhbXBsZXNfcmVtYWluaW5nXyAtPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocmVhZCk7CisrCisrI2lmZGVmIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKysgIC8vIENvbnZlcnQgdGhlIHJlYWQgc2FtcGxlcyBmcm9tIGxpdHRsZS1lbmRpYW4gdG8gYmlnLWVuZGlhbi4KKysgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVhZDsgaSsrKQorKyAgICBzYW1wbGVzW2ldID0gKCh1aW50MTZfdCkgc2FtcGxlc1tpXSA+PiA4KSB8ICgodWludDE2X3QpIHNhbXBsZXNbaV0gPDwgOCk7CisrI2VuZGlmCisrCisgICByZXR1cm4gcmVhZDsKKyB9CisgCitAQCAtMTE5LDExICsxMjMsMjIgQEAgV2F2V3JpdGVyOjp+V2F2V3JpdGVyKCkgeworIH0KKyAKKyB2b2lkIFdhdldyaXRlcjo6V3JpdGVTYW1wbGVzKGNvbnN0IGludDE2X3QqIHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgeworLSNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gbGl0dGxlLWVuZGlhbiB3aGVuIHdyaXRpbmcgdG8gV0FWIGZpbGUiCistI2VuZGlmCisrI2lmZGVmIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKysgIC8vIENvbnZlcnQgdGhlIHNhbXBsZXMgZnJvbSBiaWctZW5kaWFuIHNhbXBsZXMgdG8gbGl0dGxlLWVuZGlhbi4KKysgIGludDE2X3QqIGNvbnZlcnRlZF9zYW1wbGVzID0gc3RhdGljX2Nhc3Q8aW50MTZfdCo+KG1hbGxvYyhudW1fc2FtcGxlcyAqIHNpemVvZigqc2FtcGxlcykpKTsKKysgIFJUQ19DSEVDSyhjb252ZXJ0ZWRfc2FtcGxlcykgPDwgIk91dCBvZiBtZW1vcnkuIjsKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3NhbXBsZXM7IGkrKykKKysgICAgY29udmVydGVkX3NhbXBsZXNbaV0gPQorKyAgICAgICAgKCh1aW50MTZfdCkgc2FtcGxlc1tpXSA+PiA4KSB8ICgodWludDE2X3QpIHNhbXBsZXNbaV0gPDwgOCk7CisrCisrICBjb25zdCBzaXplX3Qgd3JpdHRlbiA9CisrICAgICAgZndyaXRlKGNvbnZlcnRlZF9zYW1wbGVzLCBzaXplb2YoKmNvbnZlcnRlZF9zYW1wbGVzKSwgbnVtX3NhbXBsZXMsCisrICAgICAgICAgICAgIGZpbGVfaGFuZGxlXyk7CisrICBmcmVlKGNvbnZlcnRlZF9zYW1wbGVzKTsKKysjZWxzZQorICAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQorICAgICAgIGZ3cml0ZShzYW1wbGVzLCBzaXplb2YoKnNhbXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsKKysjZW5kaWYKKyAgIFJUQ19DSEVDS19FUShudW1fc2FtcGxlcywgd3JpdHRlbik7CisgICBudW1fc2FtcGxlc18gKz0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdyaXR0ZW4pOworICAgUlRDX0NIRUNLKHdyaXR0ZW4gPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIHx8CitkaWZmIC0tZ2l0IGEvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjIGIvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCitpbmRleCA2MWNmZmZlLi4zODJiZmM3IDEwMDY0NAorLS0tIGEvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCisrKysgYi93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuY2MKK0BAIC0xMjksNyArMTI5LDM3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7CisgICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKKyB9CisgI2Vsc2UKKy0jZXJyb3IgIldyaXRlIGJlLXRvLWxlIGNvbnZlcnNpb24gZnVuY3Rpb25zIgorK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMTYodWludDE2X3QqIGYsIHVpbnQxNl90IHgpIHsKKysgICpmID0geCA+PiA4IHwgeCA8PCA4OworK30KKytzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJfdCB4KSB7CisrICAqZiA9IHggPj4gMjQKKysgICAgICB8ICh4ICYmIDB4RkYwMDAwKSA+PiA4CisrICAgICAgfCAoeCAmJiAweEZGMDApIDw8IDgKKysgICAgICB8IHggPDwgMjQ7CisrfQorK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50MzJfdCogZiwgY2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7CisrICAqZiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKQorKyAgICAgIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDgKKysgICAgICB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSA8PCAxNgorKyAgICAgIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIDw8IDI0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRMRTE2KHVpbnQxNl90IHgpIHsKKysgIHJldHVybiB4ID4+IDggfCB4IDw8IDg7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZExFMzIodWludDMyX3QgeCkgeworKyAgcmV0dXJuIHggPj4gMjQKKysgICAgICB8ICh4ICYmIDB4RkYwMDAwKSA+PiA4CisrICAgICAgfCAoeCAmJiAweEZGMDApIDw8IDgKKysgICAgICB8IHggPDwgMjQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7CisrICB4ID0gUmVhZExFMzIoeCk7CisrICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKKyt9CisgI2VuZGlmCisgCisgc3RhdGljIGlubGluZSB1aW50MzJfdCBSaWZmQ2h1bmtTaXplKHVpbnQzMl90IGJ5dGVzX2luX3BheWxvYWQpIHsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZ18wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmdfMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMGY3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmdfMC4zLmJiCkBAIC0wLDAgKzEsMjggQEAKK0RFU0NSSVBUSU9OID0gIkF1ZGlvIHByb2Nlc3NpbmcgYml0cyBvZiB0aGUgV2ViUlRDIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLyIKK1NFQ1RJT04gPSAiYXVkaW8iCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGliZXhlY2luZm8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGEwOGEzOGEzMmEzNDBjNWQ5MWUxM2VlODZhMTE4ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2VicnRjL2NvbW1vbi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9OTttZDU9NDFmNzMyMmQ5MWRlYWJhZjBhY2JiZDBiOGQwYmM1NDggXAorIgorCisjIE5vdGUgdGhhdCBwYXRjaCAzIGVmZmVjdGl2ZWx5IHJldmVydHMgcGF0Y2hlcyAxIGFuZCAyLiBUaGUgb25seSByZWFzb24KKyMgd2h5IHBhdGNoZXMgMSBhbmQgMiBhcmUgaW5jbHVkZWQgaXMgdGhhdCBvdGhlcndpc2UgcGF0Y2ggMyB3b3VsZG4ndAorIyBhcHBseSBjbGVhbmx5LgorU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtUHJvdGVjdC1hZ2FpbnN0LXVuc3VwcG9ydGVkLUNQVS10eXBlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWJ1aWxkLUFkZC1BUk0tNjRiaXQtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWJ1aWxkLWZpeC1hcmNoaXRlY3R1cmUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtdHlwZWRlZnMuaC1hZGQtc3VwcG9ydC1mb3ItNjQtYml0LWFuZC1iaWctZW5kaWFuLU1JUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLVBvd2VyUEMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1jb21tb25fYXVkaW8taW1wbGVtZW50LWVuZGlhbm5lc3MtY29udmVyc2lvbi1pbi13YXYtLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjMzNmFlMDMyZjYwOGU2NTgwOGFjNTc3Y2RlMGFiNzJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1NmUyOTFkNGY1NTdkODhjZDUwYzRmZTNiODQ1NGVjMjM4MzYyZDIyY2VkYjNlNjE3MzI0MGQ5MGYwYTgwZmEiCisKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxleGVjaW5mbyIKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvY3Jvc3NndWlkL2Nyb3NzZ3VpZC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtc3VwcG9ydC9jcm9zc2d1aWQvY3Jvc3NndWlkLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOGI4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvY3Jvc3NndWlkL2Nyb3NzZ3VpZC5iYgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJMaWdodHdlaWdodCBjcm9zcyBwbGF0Zm9ybSBDKysgR1VJRC9VVUlEIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3JhZW1lLWhpbGwvY3Jvc3NndWlkIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xMzczMjc0YmM4ZDgwMDFlZGM1NDkzMzkxOWYzNmY2OCIKK0RFUEVORFMgKz0gInV0aWwtbGludXgiCisKK1BWID0gIjAuMCtnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gImI1Njk1N2FjNDUzNTc1ZTkxY2ExYjYzYTgwYzAwNzdjMmIwZDAxMWEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3JhZW1lLWhpbGwvY3Jvc3NndWlkO3Byb3RvY29sPWh0dHBzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb21waWxlKCkgeworCSR7Q1hYfSAtYyBndWlkLmNwcCAtbyBndWlkLm8gJHtDWFhGTEFHU30gLXN0ZD1jKysxMSAtREdVSURfTElCVVVJRAorCSR7QVJ9IHJ2cyBsaWJjcm9zc2d1aWQuYSBndWlkLm8KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA2NDQgJHtCfS9saWJjcm9zc2d1aWQuYSAke0R9JHtsaWJkaXJ9L2xpYmNyb3NzZ3VpZC5hCisJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vZ3VpZC5oICR7RH0ke2luY2x1ZGVkaXJ9L2d1aWQuaAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvTUFJTlRBSU5FUlMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUwppbmRleCA4ZTZlM2EwLi43NzFjNzNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUwpAQCAtMiwxNSArMiwxNSBAQAogCiBQbGVhc2Ugc3VibWl0IGFueSBwYXRjaGVzIGFnYWluc3QgbWV0YS1uZXR3b3JraW5nIHRvIHRoZSBPcGVuRW1iZWRkZWQKIGRldmVsb3BtZW50IG1haWxpbmcgbGlzdCAob3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcpIHdpdGgKLSdbbWV0YS1uZXR3b3JraW5nXVtweXJvXScgaW4gdGhlIHN1YmplY3QuCisnW21ldGEtbmV0d29ya2luZ11bcm9ja29dJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOgogCiAgICBnaXQgc2VuZC1lbWFpbCAtMSAtTSBcCiAgICAgICAgIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgXAotICAgICAgICAtLXN1YmplY3QtcHJlZml4PW1ldGEtbmV0d29ya2luZ11bcHlyb11bUEFUQ0gKKyAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW5ldHdvcmtpbmddW3JvY2tvXVtQQVRDSAogCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgorcm9ja28gQnJhbmNoIE1haW50YWluZXI6CiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiBZb3UgbWF5IGFsc28gY29udGFjdCB0aGUgbWFpbnRhaW5lcnMgZGlyZWN0bHkuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2Rpc3Ryby9pbmNsdWRlL21ldGFfbmV0d29ya2luZ19zZWN1cml0eV9mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2Rpc3Ryby9pbmNsdWRlL21ldGFfbmV0d29ya2luZ19zZWN1cml0eV9mbGFncy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZTEzZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhX25ldHdvcmtpbmdfc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIyBjb25maWd1cmUgcmlnaHRlb3VzbHkgY29tcGxhaW5zOgotIyB8IGNvbmZpZ3VyZTozNDc5OiB1c2luZyBDRkxBR1M6ICAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtcGllIC1mcGllIC1EX0ZPUlRJRllfU09VUkNFPTIKLSMgfCBjb25maWd1cmU6MzQ4NTogQ0ZMQUdTIGVycm9yOiBDRkxBR1MgbWF5IG9ubHkgYmUgdXNlZCB0byBzcGVjaWZ5IEMgY29tcGlsZXIgZmxhZ3MsIG5vdCBtYWNybyBkZWZpbml0aW9ucy4gVXNlIENQUEZMQUdTIGZvcjogLURfRk9SVElGWV9TT1VSQ0U9MgotIyB8IGNvbmZpZ3VyZTozNTE2OiBlcnJvcjogQ2FuIG5vdCBjb250aW51ZS4gRml4IGVycm9ycyBtZW50aW9uZWQgaW1tZWRpYXRlbHkgYWJvdmUgdGhpcyBsaW5lLgotCi0jIE1ha2Ugc3VyZSBpdCdzIGF0IGxlYXN0IGVtcHR5IGluIGJ1aWxkcyB3aGljaCBkb24ndCBpbmNsdWRlCi0jIGNvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCi1sY2xfbWF5YmVfZm9ydGlmeSA/PSAiIgotVEFSR0VUX0NGTEFHU19yZW1vdmVfcG4tYy1hcmVzID0gIiR7bGNsX21heWJlX2ZvcnRpZnl9IgotVEFSR0VUX0NQUEZMQUdTX2FwcGVuZF9wbi1jLWFyZXMgPSAiJHtsY2xfbWF5YmVfZm9ydGlmeX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKaW5kZXggYjVhYTE1OS4uMmRmZGU0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTksOSArMTksNiBAQAogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCi0jIE92ZXJyaWRlIHNlY3VyaXR5IGZsYWdzCi1yZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9uZXR3b3JraW5nX3NlY3VyaXR5X2ZsYWdzLmluYwotCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXAogICB3aXJlZ3VhcmQtdG9vbHMtPndpcmVndWFyZC1tb2R1bGUgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGFxL2RhcV8yLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RhcS9kYXFfMi4wLjYuYmIKaW5kZXggNDdjYjE2My4uZWMzNTE3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGFxL2RhcV8yLjAuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kYXEvZGFxXzIuMC42LmJiCkBAIC0yOSwzICsyOSw3IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQwZTFkMTI3M2UwOGFhZWFhODZlNjlkNGYyOGQ1MzViN2U1M2JkYjM4OThhZGY1MzkyNjZiNjMxMzdiZTdjYiIKIAogaW5oZXJpdCBhdXRvdG9vbHMKKworRElTQUJMRV9TVEFUSUMgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fbXNjaGFwLVVzZS1pbmNsdWRlZGlyLWluc3RlYWQtb2YtaGFyZGNvZGluZy11c3ItLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy8wMDAxLXJsbV9tc2NoYXAtVXNlLWluY2x1ZGVkaXItaW5zdGVhZC1vZi1oYXJkY29kaW5nLXVzci0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI4Y2FhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fbXNjaGFwLVVzZS1pbmNsdWRlZGlyLWluc3RlYWQtb2YtaGFyZGNvZGluZy11c3ItLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNjZlOGJjZGNjYTg5NzFiNWM0M2MzMTc1NWQ1NmQ3ZjY3NWQ4YjVmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIwOjEwOjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJsbV9tc2NoYXA6IFVzZSBpbmNsdWRlZGlyIGluc3RlYWQgb2YgaGFyZGNvZGluZyAvdXNyL2luY2x1ZGUKKworT0UgUUEgZmxhZ3MgaXQgY29ycmVjdGx5IGFzIGEgdm9pbGF0aW9uIG9mIGNyb3NzIGNvbXBpbGF0aW9uCituYW1lc3BhY2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9kdWxlcy9ybG1fbXNjaGFwL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGZyZWVyYWRpdXMtc2VydmVyLTMuMC4xNC9zcmMvbW9kdWxlcy9ybG1fbXNjaGFwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZyZWVyYWRpdXMtc2VydmVyLTMuMC4xNC5vcmlnL3NyYy9tb2R1bGVzL3JsbV9tc2NoYXAvY29uZmlndXJlLmFjCisrKysgZnJlZXJhZGl1cy1zZXJ2ZXItMy4wLjE0L3NyYy9tb2R1bGVzL3JsbV9tc2NoYXAvY29uZmlndXJlLmFjCitAQCAtNzIsNyArNzIsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgICAgICAgICBtb2RfbGRmbGFncz0iLWZyYW1ld29yayBEaXJlY3RvcnlTZXJ2aWNlIgorICAgICBmaQorIAorLSAgICBzbWFydF90cnlfZGlyPSIkd2luYmluZF9pbmNsdWRlX2RpciAvdXNyL2luY2x1ZGUvc2FtYmEtNC4wIgorKyAgICBzbWFydF90cnlfZGlyPSIkd2luYmluZF9pbmNsdWRlX2RpciA9L3Vzci9pbmNsdWRlL3NhbWJhLTQuMCIKKyAgICAgRlJfU01BUlRfQ0hFQ0tfSU5DTFVERSh3YmNsaWVudC5oLCBbI2luY2x1ZGUgPHN0ZGludC5oPgorIAkJCQkJI2luY2x1ZGUgPHN0ZGJvb2wuaD5dKQorICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl93YmNsaWVudF9oIiAhPSAieHllcyI7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTQxMmUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzCkBAIC0wLDAgKzEsMTEwIEBACisjIS9iaW4vc2gKKyMgU3RhcnQvc3RvcCB0aGUgRnJlZVJBRElVUyBkYWVtb24uCisKKyMjIyBCRUdJTiBJTklUIElORk8KKyMgUHJvdmlkZXM6ICAgICAgICAgIGZyZWVyYWRpdXMKKyMgUmVxdWlyZWQtU3RhcnQ6ICAgICRyZW1vdGVfZnMgJG5ldHdvcmsgJHN5c2xvZworIyBTaG91bGQtU3RhcnQ6ICAgICAgJHRpbWUgbXlzcWwgc2xhcGQgcG9zdGdyZXNxbCBzYW1iYSBrcmI1LWtkYworIyBSZXF1aXJlZC1TdG9wOiAgICAgJHJlbW90ZV9mcyAkc3lzbG9nCisjIERlZmF1bHQtU3RhcnQ6ICAgICAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgorIyBTaG9ydC1EZXNjcmlwdGlvbjogUmFkaXVzIERhZW1vbgorIyBEZXNjcmlwdGlvbjogICAgICAgRXh0ZW5zaWJsZSwgY29uZmlndXJhYmxlIHJhZGl1cyBkYWVtb24KKyMjIyBFTkQgSU5JVCBJTkZPCisKK3NldCAtZQorCisjIFNvdXJjZSBmdW5jdGlvbiBsaWJyYXJ5LgorLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKworaWYgWyAtZiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucyBdOyB0aGVuCisgIC4gL2xpYi9sc2IvaW5pdC1mdW5jdGlvbnMKK2ZpCisKK1BST0c9InJhZGl1c2QiCitQUk9HUkFNPSIvdXNyL3NiaW4vcmFkaXVzZCIKK1BJREZJTEU9Ii92YXIvcnVuL3JhZGl1c2QvcmFkaXVzZC5waWQiCitERVNDUj0iRnJlZVJBRElVUyBkYWVtb24iCisKK2lmIFsgLXIgL2V0Yy9kZWZhdWx0LyRQUk9HIF07IHRoZW4KKyAgLiAvZXRjL2RlZmF1bHQvJFBST0cKK2ZpCisKK3Rlc3QgLWYgJFBST0dSQU0gfHwgZXhpdCAwCisKK2NoZWNrX2NlcnRzKCkgeworCWlmIFsgISAtZiAvZXRjL3JhZGRiL2NlcnRzL3NlcnZlci5wZW0gXTsgdGhlbgorCQllY2hvIC1uICJDcmVhdGluZyBjZXJ0aWZpY2F0ZXMgZm9yIGZyZWVyYWRpdXMuLi4iCisJCWlmIHN1ZG8gLXUgcmFkaXVzZCAvZXRjL3JhZGRiL2NlcnRzL2Jvb3RzdHJhcCAxPiAvZGV2L251bGwgMj4gL2Rldi9udWxsOyB0aGVuCisJCQllY2hvICJkb25lIgorCQllbHNlCisJCQllY2hvICJmYWlsZWQhIgorCQlmaQorCWZpCisKK30KKworIyAvdmFyL3J1biBtYXkgYmUgYSB0bXBmcworaWYgWyAhIC1kIC92YXIvcnVuL3JhZGl1c2QgXTsgdGhlbgorICBta2RpciAtcCAvdmFyL3J1bi9yYWRpdXNkCisgIGNob3duIHJhZGl1c2Q6cmFkaXVzZCAvdmFyL3J1bi9yYWRpdXNkCitmaQorCitpZiBbICEgLWQgL3Zhci9sb2cvcmFkaXVzIF07IHRoZW4KKyAgbWtkaXIgLXAgL3Zhci9sb2cvcmFkaXVzCisgIHRvdWNoIC92YXIvbG9nL3JhZGl1cy9yYWRpdXMubG9nCisgIGNob3duIHJhZGl1c2Q6cmFkaXVzZCAvdmFyL3J1bi9yYWRpdXMKK2ZpCisKK2lmIFsgISAtZiAke1BJREZJTEV9IF07IHRoZW4KKyAgdG91Y2ggJHtQSURGSUxFfQorICBjaG93biByYWRpdXNkOnJhZGl1c2QgJHtQSURGSUxFfQorZmkKKworZXhwb3J0IFBBVEg9IiR7UEFUSDorJFBBVEg6fS91c3Ivc2Jpbjovc2JpbiIKKworcmV0PTAKKworY2FzZSAiJDEiIGluCisgICAgICAgIHN0YXJ0KQorCQljaGVja19jZXJ0cworICAgICAgICAgICAgICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRERVNDUiIgIiRQUk9HIgorICAgICAgICAgICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUgLS1leGVjICRQUk9HUkFNIC0tICRGUkVFUkFESVVTX09QVElPTlMgfHwgcmV0PSQ/CisgICAgICAgICAgICAgICAgWyAiJHJldCIgPT0gMCBdICYmIGVjaG8gIiBTdWNjZXNzIiB8fCBlY2hvICIgRmFpbGVkIgorICAgICAgICAgICAgICAgIGV4aXQgJHJldAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIHN0b3ApCisgICAgICAgICAgICAgICAgZWNobyAtbiAiU3RvcHBpbmcgJERFU0NSIiAiJFBST0ciCisgICAgICAgICAgICAgICAgaWYgWyAtZiAiJFBJREZJTEUiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1yZXRyeT1URVJNLzMwL0tJTEwvNSAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSB8fCByZXQ9JD8KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBlY2hvIC1uICIkUElERklMRSBub3QgZm91bmQiCisgICAgICAgICAgICAgICAgICByZXQ9MQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgWyAiJHJldCIgPT0gMCBdICYmIGVjaG8gIiBTdWNjZXNzIiB8fCBlY2hvICIgRmFpbGVkIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIHN0YXR1cykKKyAgICAgICAgICAgICAgICBzdGF0dXMgJFBST0dSQU07CisgICAgICAgICAgICAgICAgZXhpdCAkPworICAgICAgICAgICAgICAgIDs7CisgICAgICAgIHJlc3RhcnQpCisgICAgICAgICAgICAgICAgJDAgc3RvcAorICAgICAgICAgICAgICAgICQwIHN0YXJ0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgcmVsb2FkfGZvcmNlLXJlbG9hZCkKKyAgICAgICAgICAgICAgICBlY2hvIC1uICJSZWxvYWRpbmcgJERFU0NSIiAiJFBST0ciCisgICAgICAgICAgICAgICAgaWYgWyAtZiAiJFBJREZJTEUiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1zaWduYWwgSFVQIC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFIHx8IHJldD0kPworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIGVjaG8gLW4gIiRQSURGSUxFIG5vdCBmb3VuZCIKKyAgICAgICAgICAgICAgICAgIHJldD0xCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBbICIkcmV0IiA9PSAwIF0gJiYgZWNobyAiIFN1Y2Nlc3MiIHx8IGVjaG8gIiBGYWlsZWQiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgICAgICBlY2hvICJVc2FnZTogJDAgc3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxmb3JjZS1yZWxvYWR8cmVsb2FkIgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgICAgIDs7Citlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWF2b2lkLXNlYXJjaGluZy1ob3N0LWRpcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtYXZvaWQtc2VhcmNoaW5nLWhvc3QtZGlycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzk5NzY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWF2b2lkLXNlYXJjaGluZy1ob3N0LWRpcnMucGF0Y2gKQEAgLTAsMCArMSwxOTcgQEAKK0Zyb20gZGM0MTU5MWQ1Y2ViMTg5MDBlYzg1ODk0ZjhmN2I3YmI0NGJiM2JkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDQgSmFuIDIwMTYgMDE6NDQ6MDQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZvaWQgc2VhcmNoaW5nIGhvc3QgZGlycworCitEb24ndCBzZWFyY2ggdGhlIGhhcmRjb2RlZCBob3N0IGRpcnMgdG8gYXZvaWQKK2hvc3QgY29udGFtaW5hdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcy1jb21waWxlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9kYjIvY29uZmlndXJlLmFjICAgICAgICB8IDQgKystLQorIHNyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2ZpcmViaXJkL2NvbmZpZ3VyZS5hYyAgIHwgNCArKy0tCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfaW9kYmMvY29uZmlndXJlLmFjICAgICAgfCA0ICsrLS0KKyBzcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWd1cmUuYWMgICAgICB8IDYgKysrLS0tCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfb3JhY2xlL2NvbmZpZ3VyZS5hYyAgICAgfCAyICstCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfcG9zdGdyZXNxbC9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBzcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF91bml4b2RiYy9jb25maWd1cmUuYWMgICB8IDQgKystLQorIDggZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKK2luZGV4IGRhNDhhY2MuLmI1MTNhZTEgMTAwNjQ0CistLS0gYS9hY2luY2x1ZGUubTQKKysrKyBiL2FjaW5jbHVkZS5tNAorQEAgLTE3OCw3ICsxNzgsNyBAQCBpZiB0ZXN0ICJ4JHNtYXJ0X2xpYiIgPSAieCI7IHRoZW4KKyAgIEZSX0xPQ0FURV9ESVIoc21hcnRfbGliX2RpcixbbGliJDEke2xpYmx0ZGxfY3Zfc2hsaWJleHR9XSkKKyAgIEZSX0xPQ0FURV9ESVIoc21hcnRfbGliX2RpcixbbGliJDEuYV0pCisgCistICBmb3IgdHJ5IGluICRzbWFydF9saWJfZGlyIC91c3IvbG9jYWwvbGliIC9vcHQvbGliOyBkbworKyAgZm9yIHRyeSBpbiAkc21hcnRfbGliX2RpcjsgZG8KKyAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDIgaW4gLWwkMSBpbiAkdHJ5XSkKKyAgICAgTElCUz0iLWwkMSAkb2xkX0xJQlMiCisgICAgIENQUEZMQUdTPSItTCR0cnkgLVdsLC1ycGF0aCwkdHJ5ICRvbGRfQ1BQRkxBR1MiCitAQCAtMjE4LDcgKzIxOCw3IEBAIGFjX3NhZmU9YGVjaG8gIiQxIiB8IHNlZCAneSUuLystJV9fcG0lJ2AKKyBvbGRfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyBzbWFydF9pbmNsdWRlPQorIGRubCAjICBUaGUgZGVmYXVsdCBkaXJlY3RvcmllcyB3ZSBzZWFyY2ggaW4gKGluIGFkZGl0aW9uIHRvIHRoZSBjb21waWxlcnMgc2VhcmNoIHBhdGgpCistc21hcnRfaW5jbHVkZV9kaXI9Ii91c3IvbG9jYWwvaW5jbHVkZSAvb3B0L2luY2x1ZGUiCisrc21hcnRfaW5jbHVkZV9kaXI9CisgCisgZG5sICMgIE91ciBsb2NhbCB2ZXJzaW9ucworIF9zbWFydF90cnlfZGlyPQorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2RiMi9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9kYjIvY29uZmlndXJlLmFjCitpbmRleCA3NWM4NTFhLi5hMjYyZDcxIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZGIyL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZGIyL2NvbmZpZ3VyZS5hYworQEAgLTU3LDE0ICs1NywxNCBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCQllc2FjXSkKKyAKKyAJZG5sIENoZWNrIGZvciBTUUxDb25uZWN0IGluIC1sZGIyCistCXNtYXJ0X3RyeV9kaXI9IiRpYm1kYjJfbGliX2RpciAvdXNyL2xvY2FsL2RiMi9saWIgL3Vzci9JQk1kYjIvVjcuMS9saWIiCisrCXNtYXJ0X3RyeV9kaXI9IiRpYm1kYjJfbGliX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfTElCKGRiMiwgU1FMQ29ubmVjdCkKKyAJaWYgdGVzdCAieCRhY19jdl9saWJfZGIyX1NRTENvbm5lY3QiICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGxpYmRiMiIKKyAJZmkKKyAKKyAJZG5sIENoZWNrIGZvciBzcWxjbGkuaAorLQlzbWFydF90cnlfZGlyPSIkaWJtZGIyX2luY2x1ZGVfZGlyIC91c3IvbG9jYWwvZGIyL2luY2x1ZGUgL3Vzci9JQk1kYjIvVjcuMS9pbmNsdWRlIgorKwlzbWFydF90cnlfZGlyPSIkaWJtZGIyX2luY2x1ZGVfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19JTkNMVURFKHNxbGNsaS5oKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zcWxjbGlfaCIgIT0geHllczsgdGhlbgorIAkJZmFpbD0iJGZhaWwgc3FsY2xpLmgiCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZmlyZWJpcmQvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZmlyZWJpcmQvY29uZmlndXJlLmFjCitpbmRleCA0ZGE1N2IzLi43NTJiMDQzIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZmlyZWJpcmQvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9maXJlYmlyZC9jb25maWd1cmUuYWMKK0BAIC01NiwxNCArNTYsMTQgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAkJZXNhY10pCisgCisgCWRubCBDaGVjayBmb3IgaXNjX2F0dGFjaF9kYXRhYmFzZSBpbiAtbGZiY2xpZW50CistCXNtYXJ0X3RyeV9kaXI9IiRmaXJlYmlyZF9saWJfZGlyIC91c3IvbGliL2ZpcmViaXJkMi9saWIgL3Vzci9sb2NhbC9maXJlYmlyZC9saWIiCisrCXNtYXJ0X3RyeV9kaXI9IiRmaXJlYmlyZF9saWJfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19MSUIoZmJjbGllbnQsIGlzY19hdHRhY2hfZGF0YWJhc2UpCisgCWlmIHRlc3QgIngkYWNfY3ZfbGliX2ZiY2xpZW50X2lzY19hdHRhY2hfZGF0YWJhc2UiICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGxpYmZiY2xpZW50IgorIAlmaQorIAorIAlkbmwgQ2hlY2sgZm9yIGliYXNlLmgKKy0Jc21hcnRfdHJ5X2Rpcj0iJGZpcmViaXJkX2luY2x1ZGVfZGlyIC91c3IvbGliL2ZpcmViaXJkMi9pbmNsdWRlIC91c3IvbG9jYWwvZmlyZWJpcmQvaW5jbHVkZSIKKysJc21hcnRfdHJ5X2Rpcj0iJGZpcmViaXJkX2luY2x1ZGVfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19JTkNMVURFKGliYXNlLmgpCisgCWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2liYXNlX2giICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGliYXNlLmgiCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfaW9kYmMvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfaW9kYmMvY29uZmlndXJlLmFjCitpbmRleCBiYTYzMDRmLi4zMzkzNTU3IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfaW9kYmMvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9pb2RiYy9jb25maWd1cmUuYWMKK0BAIC01NywxNCArNTcsMTQgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAkJZXNhY10pCisgCisgCWRubCBDaGVjayBmb3IgU1FMQ29ubmVjdCBpbiAtbGlvZGJjCistCXNtYXJ0X3RyeV9kaXI9IiRpb2RiY19saWJfZGlyIC91c3IvbGliIC91c3IvbGliL2lvZGJjIC91c3IvbG9jYWwvbGliL2lvZGJjIC91c3IvbG9jYWwvaW9kYmMvbGliL2lvZGJjIgorKwlzbWFydF90cnlfZGlyPSIkaW9kYmNfbGliX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfTElCKGlvZGJjLCBTUUxDb25uZWN0KQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9pb2RiY19TUUxDb25uZWN0IiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBsaWJpb2RiYyIKKyAJZmkKKyAKKyAJZG5sIENoZWNrIGZvciBpc3FsLmgKKy0Jc21hcnRfdHJ5X2Rpcj0iJGlvZGJjX2luY2x1ZGVfZGlyIC91c3IvaW5jbHVkZSAvdXNyL2luY2x1ZGUvaW9kYmMgL3Vzci9sb2NhbC9pb2RiYy9pbmNsdWRlIgorKwlzbWFydF90cnlfZGlyPSIkaW9kYmNfaW5jbHVkZV9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0lOQ0xVREUoaXNxbC5oKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9pc3FsX2giICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGlzcWwuaCIKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWd1cmUuYWMKK2luZGV4IDE0MDE2NzcuLjJlN2RiNDQgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX215c3FsL2NvbmZpZ3VyZS5hYworQEAgLTEzNiw3ICsxMzYsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCisgCWRubCAjIENoZWNrIGZvciBsaWJteXNxbGNsaWVudF9yCisgCWlmIHRlc3QgIngkaGF2ZV9hX2xpYm15c3FsY2xpZW50IiAhPSAieHllcyI7IHRoZW4KKy0JICAgIHNtYXJ0X3RyeV9kaXI9IiRteXNxbF9saWJfZGlyIC91c3IvbGliIC91c3IvbGliL215c3FsIC91c3IvbG9jYWwvbGliL215c3FsIC91c3IvbG9jYWwvbXlzcWwvbGliL215c3FsIgorKwkgICAgc21hcnRfdHJ5X2Rpcj0iJG15c3FsX2xpYl9kaXIiCisgCSAgICBGUl9TTUFSVF9DSEVDS19MSUIobXlzcWxjbGllbnRfciwgbXlzcWxfaW5pdCkKKyAJICAgIGlmIHRlc3QgIngkYWNfY3ZfbGliX215c3FsY2xpZW50X3JfbXlzcWxfaW5pdCIgPSAieHllcyI7IHRoZW4KKyAJCQloYXZlX2FfbGlibXlzcWxjbGllbnQ9J3llcycKK0BAIC0xNDUsNyArMTQ1LDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAorIAlkbmwgIyBDaGVjayBmb3IgbGlibXlzcWxjbGllbnQKKyAJaWYgdGVzdCAieCRoYXZlX2FfbGlibXlzcWxjbGllbnQiICE9ICJ4eWVzIjsgdGhlbgorLQkgICAgc21hcnRfdHJ5X2Rpcj0iJG15c3FsX2xpYl9kaXIgL3Vzci9saWIgL3Vzci9saWIvbXlzcWwgL3Vzci9sb2NhbC9saWIvbXlzcWwgL3Vzci9sb2NhbC9teXNxbC9saWIvbXlzcWwiCisrCSAgICBzbWFydF90cnlfZGlyPSIkbXlzcWxfbGliX2RpciIKKyAJICAgIEZSX1NNQVJUX0NIRUNLX0xJQihteXNxbGNsaWVudCwgbXlzcWxfaW5pdCkKKyAJICAgIGlmIHRlc3QgIngkYWNfY3ZfbGliX215c3FsY2xpZW50X215c3FsX2luaXQiID0gInh5ZXMiOyB0aGVuCisgCQkJaGF2ZV9hX2xpYm15c3FsY2xpZW50PSd5ZXMnCitAQCAtMTg5LDcgKzE4OSw3IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAgICAgZmkKKyAKKyAgICAgaWYgdGVzdCAieCRoYXZlX215c3FsX2giICE9ICJ4eWVzIjsgdGhlbgorLQkJc21hcnRfdHJ5X2Rpcj0iJG15c3FsX2luY2x1ZGVfZGlyIC91c3IvbG9jYWwvaW5jbHVkZSAvdXNyL2xvY2FsL215c3FsL2luY2x1ZGUiCisrCQlzbWFydF90cnlfZGlyPSIkbXlzcWxfaW5jbHVkZV9kaXIiCisgCQlGUl9TTUFSVF9DSEVDS19JTkNMVURFKG15c3FsL215c3FsLmgpCisgCQlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9teXNxbF9teXNxbF9oIiA9ICJ4eWVzIjsgdGhlbgorIAkgICAgCUFDX0RFRklORShIQVZFX01ZU1FMX01ZU1FMX0gsIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIDxteXNxbC9teXNxbC5oPl0pCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfb3JhY2xlL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX29yYWNsZS9jb25maWd1cmUuYWMKK2luZGV4IDMxNzg0NjIuLjVjYmM4YzIgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9vcmFjbGUvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9vcmFjbGUvY29uZmlndXJlLmFjCitAQCAtNjMsNyArNjMsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgICAgIGRubCAjIENoZWNrIGZvciBoZWFkZXIgZmlsZXMKKyAgICAgZG5sICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorLSAgICBzbWFydF90cnlfZGlyPSIkb3JhY2xlX2luY2x1ZGVfZGlyIC91c3IvbG9jYWwvaW5zdGFjbGllbnQvaW5jbHVkZSIKKysgICAgc21hcnRfdHJ5X2Rpcj0iJG9yYWNsZV9pbmNsdWRlX2RpciIKKyAKKyAgICAgaWYgdGVzdCAieCRPUkFDTEVfSE9NRSIgIT0gIngiOyB0aGVuCisgCXNtYXJ0X3RyeV9kaXI9IiR7c21hcnRfdHJ5X2Rpcn0gJHtPUkFDTEVfSE9NRX0vaW5jbHVkZSIKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9wb3N0Z3Jlc3FsL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3Bvc3RncmVzcWwvY29uZmlndXJlLmFjCitpbmRleCA0ZjlhODkwLi5lMWNmODExIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfcG9zdGdyZXNxbC9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3Bvc3RncmVzcWwvY29uZmlndXJlLmFjCitAQCAtNDEsNyArNDEsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCSAgZXNhYyBdCisgCSkKKyAKKy0Jc21hcnRfdHJ5X2Rpcj0iJHJsbV9zcWxfcG9zdGdyZXNxbF9pbmNsdWRlX2RpciAvdXNyL2luY2x1ZGUvcG9zdGdyZXNxbCAvdXNyL2xvY2FsL3Bnc3FsL2luY2x1ZGUgL3Vzci9pbmNsdWRlL3Bnc3FsIgorKwlzbWFydF90cnlfZGlyPSIkcmxtX3NxbF9wb3N0Z3Jlc3FsX2luY2x1ZGVfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19JTkNMVURFKGxpYnBxLWZlLmgpCisgCWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xpYnBxbWZlX2giICE9ICJ4eWVzIjsgdGhlbgorIAkJZmFpbD0iJGZhaWwgbGlicHEtZmUuaCIKK0BAIC03Niw3ICs3Niw3IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAJCSAgXSkKKyAJZmkKKyAKKy0Jc21hcnRfdHJ5X2Rpcj0iJHJsbV9zcWxfcG9zdGdyZXNxbF9saWJfZGlyIC91c3IvbGliIC91c3IvbG9jYWwvcGdzcWwvbGliIgorKwlzbWFydF90cnlfZGlyPSIkcmxtX3NxbF9wb3N0Z3Jlc3FsX2xpYl9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0xJQihwcSwgUFFjb25uZWN0ZGIpCisgCWlmIHRlc3QgIngkYWNfY3ZfbGliX3BxX1BRY29ubmVjdGRiIiAhPSAieHllcyI7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGxpYnBxIgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3VuaXhvZGJjL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3VuaXhvZGJjL2NvbmZpZ3VyZS5hYworaW5kZXggMzU0NTM4Ny4uYzU0M2VkNCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3VuaXhvZGJjL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfdW5peG9kYmMvY29uZmlndXJlLmFjCitAQCAtNTcsMTQgKzU3LDE0IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAJCWVzYWNdKQorIAorIAlkbmwgQ2hlY2sgZm9yIFNRTENvbm5lY3QgaW4gLWxvZGJjCistCXNtYXJ0X3RyeV9kaXI9IiR1bml4b2RiY19saWJfZGlyIC91c3IvbG9jYWwvdW5peG9kYmMvbGliIgorKwlzbWFydF90cnlfZGlyPSIkdW5peG9kYmNfbGliX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfTElCKG9kYmMsIFNRTENvbm5lY3QpCisgCWlmIHRlc3QgIngkYWNfY3ZfbGliX29kYmNfU1FMQ29ubmVjdCIgIT0geHllczsgdGhlbgorIAkJZmFpbD0iJGZhaWwgbGlib2RiYyIKKyAJZmkKKyAKKyAJZG5sIENoZWNrIGZvciBzcWwuaAorLQlzbWFydF90cnlfZGlyPSIkdW5peG9kYmNfaW5jbHVkZV9kaXIgL3Vzci9sb2NhbC91bml4b2RiYy9pbmNsdWRlIgorKwlzbWFydF90cnlfZGlyPSIkdW5peG9kYmNfaW5jbHVkZV9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0lOQ0xVREUoc3FsLmgpCisgCWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3NxbF9oIiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBzcWwuaCIKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1saWJjYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWxpYmNhcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWI3ODA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1saWJjYXAucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA3NGVlZDYxZGVjODcwMmM4OWYzZTEyMWQ1NzdlYTlkYjI1Yzk2MWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTEgSmFuIDIwMTYgMDI6NTI6MTYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgb3B0aW9uIGZvciBsaWJjYXAKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDA2NmQzZDcuLjZlNDI2NmIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk0OCw2ICs5NDgsMjMgQEAgZmkKKyBkbmwgU2V0IGJ5IEZSX1NNQVJUX0NIRUNLTElCCisgTElCUz0iJHtvbGRfTElCU30iCisgCisrZG5sICMKKytkbmwgIyAgZXh0cmEgYXJndW1lbnQ6IC0td2l0aC1saWJjYXAKKytkbmwgIworK1dJVEhfTElCQ0FQPXllcworK0FDX0FSR19XSVRIKGxpYmNhcCwKKytbICAtLXdpdGgtbGljYXAgICAgICAgICAgdXNlIGxpY2FwIGZvciBkZWJ1Z2dlciBjaGVja3MuIChkZWZhdWx0PXllcyldLAorK1sgY2FzZSAiJHdpdGh2YWwiIGluCisrICBubykKKysgICAgV0lUSF9MSUJDQVA9bm8KKysgICAgOzsKKysgICopCisrICAgIFdJVEhfTElCQ0FQPXllcworKyAgICA7OworKyAgZXNhYyBdCisrKQorKworKworIGRubCBDaGVjayBmb3IgY2FwCisgZG5sIGV4dHJhIGFyZ3VtZW50OiAtLXdpdGgtY2FwLWxpYi1kaXI9RElSCisgY2FwX2xpYl9kaXI9CitAQCAtOTgxLDE1ICs5OTgsMTcgQEAgQUNfQVJHX1dJVEgoY2FwLWluY2x1ZGUtZGlyLAorICAgICAgIDs7CisgICBlc2FjXSkKKyAKKy1zbWFydF90cnlfZGlyPSIkY2FwX2xpYl9kaXIiCistRlJfU01BUlRfQ0hFQ0tfTElCKGNhcCwgY2FwX2dldF9wcm9jKQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX2NhcF9jYXBfZ2V0X3Byb2MiICE9ICJ4eWVzIjsgdGhlbgorLSAgQUNfTVNHX1dBUk4oW2NhcCBsaWJyYXJ5IG5vdCBmb3VuZCwgZGVidWdnZXIgY2hlY2tzIHdpbGwgbm90IGJlIGVuYWJsZWQuIFVzZSAtLXdpdGgtY2FwLWxpYi1kaXI9PHBhdGg+Ll0pCistZWxzZQorLSAgQUNfREVGSU5FKEhBVkVfTElCQ0FQLCAxLAorLSAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjYXAnIGxpYnJhcnkgKC1sY2FwKS5dCistICApCistICBIQVZFX0xJQkNBUD0xCisraWYgdGVzdCAieCRXSVRIX0xJQkNBUCIgPSB4eWVzOyB0aGVuCisrICBzbWFydF90cnlfZGlyPSIkY2FwX2xpYl9kaXIiCisrICBGUl9TTUFSVF9DSEVDS19MSUIoY2FwLCBjYXBfZ2V0X3Byb2MpCisrICBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jYXBfY2FwX2dldF9wcm9jIiAhPSAieHllcyI7IHRoZW4KKysgICAgQUNfTVNHX1dBUk4oW2NhcCBsaWJyYXJ5IG5vdCBmb3VuZCwgZGVidWdnZXIgY2hlY2tzIHdpbGwgbm90IGJlIGVuYWJsZWQuIFVzZSAtLXdpdGgtY2FwLWxpYi1kaXI9PHBhdGg+Ll0pCisrICBlbHNlCisrICAgIEFDX0RFRklORShIQVZFX0xJQkNBUCwgMSwKKysgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjYXAnIGxpYnJhcnkgKC1sY2FwKS5dCisrICAgICkKKysgICAgSEFWRV9MSUJDQVA9MQorKyAgZmkKKyBmaQorIAorIFZMX0xJQl9SRUFETElORQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ5N2E2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWxsb3cgY3Jvc3MtY29tcGlsYXRpb24KKworVGhlIGNoZWNraW5nIE9wZW5TU0wgbGlicmFyeSBhbmQgaGVhZGVyIHZlcnNpb24gY29uc2lzdGVuY3kgd2lsbAorYWx3YXlzIGZhaWwgaW4gY3Jvc3MgY29tcGlsaW5nLCBza2lwIHRoZSBjaGVjayBhbmQgZ2l2ZSBhIHdhcm5pbmcKK2luc3RlYWQgZm9yIGNyb3NzIGNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMKK2luZGV4IGViNDM1MzQuLjExM2EwNzkgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9rcmI1L2NvbmZpZ3VyZS5hYworQEAgLTEzNyw3ICsxMzcsOCBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCQlGUl9TTUFSVF9DSEVDS19MSUIoa3JiNSwga3JiNV9pc190aHJlYWRfc2FmZSkKKyAJCWlmIHRlc3QgIngkYWNfY3ZfbGliX2tyYjVfa3JiNV9pc190aHJlYWRfc2FmZSIgPT0geHllczsgdGhlbgorIAkJCUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxrcmI1Lmg+XV0sIFtbcmV0dXJuIGtyYjVfaXNfdGhyZWFkX3NhZmUoKSA/IDAgOiAxXV0pXSwKKy0JCQkJW2tyYjV0aHJlYWRzYWZlPSItREtSQjVfSVNfVEhSRUFEX1NBRkUiXSwgW0FDX01TR19XQVJOKFtbbGlia3JiNSBpcyBub3QgdGhyZWFkc2FmZV1dKV0pCisrCQkJCVtrcmI1dGhyZWFkc2FmZT0iLURLUkI1X0lTX1RIUkVBRF9TQUZFIl0sIFtBQ19NU0dfV0FSTihbW2xpYmtyYjUgaXMgbm90IHRocmVhZHNhZmVdXSldLAorKwkJCQlbQUNfTVNHX1dBUk4oY3Jvc3MgY29tcGlsaW5nOiBub3QgY2hlY2tpbmcpXSkKKyAJCWZpCisgCWVsc2UKKyAJCWtyYjV0aHJlYWRzYWZlPSIiCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZW5ibGUtdXNlci1pbi1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTYyYmYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitFbmFibGUgYW5kIGNoYW5nZSB1c2VyIGFuZCBncm91cCBvZiBmcmVlcmFkaXVzIHNlcnZlciB0byByYWRpdXNkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHJhZGRiL3JhZGl1c2QuY29uZi5pbiB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9yYWRkYi9yYWRpdXNkLmNvbmYuaW4gYi9yYWRkYi9yYWRpdXNkLmNvbmYuaW4KK2luZGV4IGM2MmY0ZmYuLjBiNGE4NGUgMTAwNjQ0CistLS0gYS9yYWRkYi9yYWRpdXNkLmNvbmYuaW4KKysrKyBiL3JhZGRiL3JhZGl1c2QuY29uZi5pbgorQEAgLTQzNiw4ICs0MzYsOCBAQCBzZWN1cml0eSB7CisgCSMgIG1lbWJlci4gIFRoaXMgY2FuIGFsbG93IGZvciBzb21lIGZpbmVyLWdyYWluZWQgYWNjZXNzCisgCSMgIGNvbnRyb2xzLgorIAkjCistIwl1c2VyID0gcmFkaXVzCistIwlncm91cCA9IHJhZGl1cworKwl1c2VyID0gcmFkaXVzZAorKwlncm91cCA9IHJhZGl1c2QKKyAKKyAJIyAgQ29yZSBkdW1wcyBhcmUgYSBiYWQgdGhpbmcuICBUaGlzIHNob3VsZCBvbmx5IGJlIHNldCB0bworIAkjICAneWVzJyBpZiB5b3UncmUgZGVidWdnaW5nIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2ZXIuCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtZXJyb3ItZm9yLWV4cGFuc2lvbi1vZi1tYWNyby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtZXJyb3ItZm9yLWV4cGFuc2lvbi1vZi1tYWNyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjFiZmYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1lcnJvci1mb3ItZXhwYW5zaW9uLW9mLW1hY3JvLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gNWI2ZDhiMTRmMjY5NmZjZjFkY2ExMTkyMTJmOWQwYTBmYTA0ZGVmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTggSmFuIDIwMTcgMTQ6NTk6MzkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGVycm9yIGZvciBleHBhbnNpb24gb2YgbWFjcm8gaW4gdGhyZWFkLmgKKworVGhlIHBhcmFtZXRlciBkZWNsYXJhdGlvbiBpcyBtaXNzaW5nIGluIGV4cGFuc2lvbiBvZiBtYWNybword2hpY2ggY2F1c2UgdGhlIGJ1aWxkIGVycm9yOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL2ZyZWVyYWRpdXMtZGV2ZWwvbGlicmFkaXVzLmg6ODA6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIHNyYy9saWIvbG9nLmM6MjY6Cit8IHNyYy9saWIvbG9nLmM6IEluIGZ1bmN0aW9uICdfX2ZyX3RocmVhZF9sb2NhbF9kZXN0cm95X2ZyX3N0cmVycm9yX2J1ZmZlcic6Cit8IHNyYy9saWIvbG9nLmM6Mzc6MzE6IGVycm9yOiAnZnJfc3RyZXJyb3JfYnVmZmVyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKK3wgIGZyX3RocmVhZF9sb2NhbF9zZXR1cChjaGFyICosIGZyX3N0cmVycm9yX2J1ZmZlcikgLyogbWFjcm8gKi8KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKworQWRkIHRoZSBtaXNzaW5nIGRlY2xhcmF0aW9uIGluIG1hY3JvLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2luY2x1ZGUvdGhyZWFkcy5oIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90aHJlYWRzLmggYi9zcmMvaW5jbHVkZS90aHJlYWRzLmgKK2luZGV4IGUzNmQ4MWQuLjJiY2I2YWEgMTAwNjQ0CistLS0gYS9zcmMvaW5jbHVkZS90aHJlYWRzLmgKKysrKyBiL3NyYy9pbmNsdWRlL3RocmVhZHMuaAorQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIF90IF9fZnJfdGhyZWFkX2xvY2FsX2luaXRfIyNfbihwdGhyZWFkX2Rlc3RydWN0b3JfdCBmdW5jKVwKKyAjICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX2dldChfbikgX24KKyAjZWxpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQorICMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKy0jICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX3NldHVwKF90LCBfbikgXAorKyMgIGRlZmluZSBmcl90aHJlYWRfbG9jYWxfc2V0dXAoX3QsIF9uKSBzdGF0aWMgX190aHJlYWQgX3QgX247XAorIHN0YXRpYyBwdGhyZWFkX2tleV90IF9fZnJfdGhyZWFkX2xvY2FsX2tleV8jI19uO1wKKyBzdGF0aWMgcHRocmVhZF9vbmNlX3QgX19mcl90aHJlYWRfbG9jYWxfb25jZV8jI19uID0gUFRIUkVBRF9PTkNFX0lOSVQ7XAorIHN0YXRpYyBwdGhyZWFkX2Rlc3RydWN0b3JfdCBfX2ZyX3RocmVhZF9sb2NhbF9kZXN0cnVjdG9yXyMjX24gPSBOVUxMO1wKK0BAIC0xMDAsMTcgKzEwMCwxNyBAQCBzdGF0aWMgdm9pZCBfX2ZyX3RocmVhZF9sb2NhbF9kZXN0cm95XyMjX24oVU5VU0VEIHZvaWQgKnVudXNlZClcCisgc3RhdGljIHZvaWQgX19mcl90aHJlYWRfbG9jYWxfa2V5X2luaXRfIyNfbih2b2lkKVwKKyB7XAorIAkodm9pZCkgcHRocmVhZF9rZXlfY3JlYXRlKCZfX2ZyX3RocmVhZF9sb2NhbF9rZXlfIyNfbiwgX19mcl90aHJlYWRfbG9jYWxfZGVzdHJveV8jI19uKTtcCistCSh2b2lkKSBwdGhyZWFkX3NldHNwZWNpZmljKF9fZnJfdGhyZWFkX2xvY2FsX2tleV8jI19uLCAmKF9uKSk7XAorIH1cCisgc3RhdGljIF90IF9fZnJfdGhyZWFkX2xvY2FsX2luaXRfIyNfbihwdGhyZWFkX2Rlc3RydWN0b3JfdCBmdW5jKVwKKyB7XAorIAlfX2ZyX3RocmVhZF9sb2NhbF9kZXN0cnVjdG9yXyMjX24gPSBmdW5jO1wKKyAJaWYgKF9uKSByZXR1cm4gX247IFwKKyAJKHZvaWQpIHB0aHJlYWRfb25jZSgmX19mcl90aHJlYWRfbG9jYWxfb25jZV8jI19uLCBfX2ZyX3RocmVhZF9sb2NhbF9rZXlfaW5pdF8jI19uKTtcCisrCSh2b2lkKSBwdGhyZWFkX3NldHNwZWNpZmljKF9fZnJfdGhyZWFkX2xvY2FsX2tleV8jI19uLCAmKF9uKSk7XAorIAlyZXR1cm4gX247XAorIH0KKy0jICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX2luaXQoX24sIF9mKQkJCV9fZnJfdGhyZWFkX2xvY2FsX2luaXRfIyNfbihfZikKKy0jICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX3NldChfbiwgX3YpCQkJX19mcl90aHJlYWRfbG9jYWxfc2V0XyMjX24oX3YpCistIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9nZXQoX24pCQkJX19mcl90aHJlYWRfbG9jYWxfZ2V0XyMjX24oKQorKyMgIGRlZmluZSBmcl90aHJlYWRfbG9jYWxfaW5pdChfbiwgX2YpCV9fZnJfdGhyZWFkX2xvY2FsX2luaXRfIyNfbihfZikKKysjICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX3NldChfbiwgX3YpICgoaW50KSEoKF9uID0gX3YpIHx8IDEpKQorKyMgIGRlZmluZSBmcl90aHJlYWRfbG9jYWxfZ2V0KF9uKSBfbgorICNlbmRpZgorICNlbmRpZgorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LWlzc3Vlcy1yZWxhdGVkLXRvLW00LWluY2x1ZGUtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjliMmFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwyMzYgQEAKK0Zyb20gZDhlMjUxZWY5Nzg2OWFiMmMxYzgyYmQzNzQwMTZmNDAyMDgzOTk3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvcmdlIFBlcmVpcmEgPGpwZXJlaXJhbkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMTY6NTE6MDcgLTAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4aW5nIGlzc3VlcyByZWxhdGVkIHRvIG00IGluY2x1ZGUgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KKworWzFdOiBodHRwczovL2dpdGh1Yi5jb20vRnJlZVJBRElVUy9mcmVlcmFkaXVzLXNlcnZlci9wdWxsLzE0MjgKKworU3VibW1pdGVkIGJ5OiBKb3JnZSBQZXJlaXJhIDxqcGVyZWlyYW5AZ21haWwuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX2V4YW1wbGUvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgfCAzOSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL21vZHVsZXMvcmxtX2xkYXAvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgIHwgIDMgKysKKyBzcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWcuaC5pbiAgICAgICAgICAgICAgICAgICB8ICAzICsrCisgc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9tb2R1bGVzL3JsbV9yYWR1dG1wL2NvbmZpZy5oLmluICAgICAgICAgICAgICAgIHwgIDMgKysKKyBzcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8ICA5ICsrLS0tCisgc3JjL21vZHVsZXMvcmxtX3Ntc290cC9jb25maWcuaC5pbiAgICAgICAgICAgICAgICAgfCAgMyArKworIC4uLi9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWcuaC5pbiAgICAgIHwgIDMgKysKKyBzcmMvbW9kdWxlcy9ybG1fdW5peC9jb25maWcuaC5pbiAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysKKyAxMSBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX2V4YW1wbGUvY29uZmlnLmguaW4KK2luZGV4IDJhODFlZjUuLmY4MGRlOWMgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fZXhhbXBsZS9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX2V4YW1wbGUvY29uZmlnLmguaW4KK0BAIC0xLDM4ICsxLDUgQEAKKyAvKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KKyAKKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9NRU1PUllfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJpbnRmJyBmdW5jdGlvbi4gKi8KKy0jdW5kZWYgSEFWRV9QUklOVEYKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9TVERJTlRfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW8uaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfU1RESU9fSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX1NURExJQl9ICistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX1NUUklOR1NfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX1NUUklOR19ICistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9TWVNfU1RBVF9ICistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9VTklTVERfSAorLQorIC8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAorIAorQEAgLTQ1LDggKzEyLDggQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCistI3VuZGVmIFNURENfSEVBREVSUworZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZSBiL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZQoraW5kZXggZTBjMTVkOS4uY2RmOTZkNSAxMDA3NTUKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZQorKysrIGIvc3JjL21vZHVsZXMvcmxtX2xkYXAvY29uZmlndXJlCitAQCAtMzk5Miw3ICszOTkyLDcgQEAgc21hcnRfcHJlZml4PQorICRhc19lY2hvICIjZGVmaW5lIFdJVEhfU0FTTCAxIiA+PmNvbmZkZWZzLmgKKyAKKyAJICAgIFNBU0w9c2FzbC5jCistICAgICAgICAgIGZpCisrCSAgZmkKKyAJZmkKKyAKKyAJdGFyZ2V0bmFtZT1ybG1fbGRhcAorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fcGFtL2NvbmZpZy5oLmluCitpbmRleCAzMmVmNmZmLi4xYWQyMGM1IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3BhbS9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3BhbS9jb25maWcuaC5pbgorQEAgLTQ1LDYgKzQ1LDkgQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisgCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWcuaC5pbgoraW5kZXggOTg5ZWQ1My4uZjgwZGU5YyAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZy5oLmluCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWcuaC5pbgorQEAgLTEyLDUgKzEyLDggQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjCitpbmRleCA0NGM1ZmM5Li42YjJhMDQzIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWd1cmUuYWMKK0BAIC0zLDcgKzMsNyBAQCBBQ19JTklUKHJsbV9wZXJsLmMpCisgQUNfUkVWSVNJT04oJFJldmlzaW9uJCkKKyBBQ19ERUZVTihtb2RuYW1lLFtybG1fcGVybF0pCisgCistbTRfaW5jbHVkZShbYXhfd2l0aF9wcm9nLm00XSkKKyttNF9pbmNsdWRlKFttNC9heF93aXRoX3Byb2cubTRdKQorIAorIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAJQUNfUFJPR19DQworZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9yYWR1dG1wL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3JhZHV0bXAvY29uZmlnLmguaW4KK2luZGV4IDlhODgzY2MuLjc1MGI0MzQgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fcmFkdXRtcC9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3JhZHV0bXAvY29uZmlnLmguaW4KK0BAIC00Miw2ICs0Miw5IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorIAorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZSBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZQoraW5kZXggMTU4NjhhYi4uYzcyOGFmMiAxMDA3NTUKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZQorKysrIGIvc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlCitAQCAtMTg3NSw2ICsxODc1LDcgQEAgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorIAorIAorIAorKworICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jb21wYXJlX3ZlcnNpb24uaHRtbAorICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjCitpbmRleCA5MzA2MzgyLi5mMWM4MTE4IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUuYWMKK0BAIC0zLDE1ICszLDE2IEBAIEFDX0lOSVQocmxtX3J1YnkuYykKKyBBQ19SRVZJU0lPTigkUmV2aXNpb246IDEuOSAkKQorIEFDX0RFRlVOKG1vZG5hbWUsW3JsbV9ydWJ5XSkKKyAKKy1tNF9pbmNsdWRlKFtheF93aXRoX3Byb2cubTRdKQorK200X2luY2x1ZGUoW200L2F4X3dpdGhfcHJvZy5tNF0pCisgCisgQUNfREVGVU4oW0FYX1dJVEhfUlVCWV0sWworICAgICBBWF9XSVRIX1BST0coW1JVQlldLFtydWJ5XSxbbm90LWZvdW5kXSxbJHtQQVRIfTovdXNyL2JpbjovdXNyL2xvY2FsL2Jpbl0pCisgXSkKKyAKKy1tNF9pbmNsdWRlKFtheF9jb21wYXJlX3ZlcnNpb24ubTRdKQorLW00X2luY2x1ZGUoW2F4X3Byb2dfcnVieV92ZXJzaW9uLm00XSkKKy1tNF9pbmNsdWRlKFtheF9ydWJ5X2RldmVsLm00XSkKKysKKyttNF9pbmNsdWRlKFttNC9heF9jb21wYXJlX3ZlcnNpb24ubTRdKQorK200X2luY2x1ZGUoW200L2F4X3Byb2dfcnVieV92ZXJzaW9uLm00XSkKKyttNF9pbmNsdWRlKFttNC9heF9ydWJ5X2RldmVsLm00XSkKKyAKKyB0YXJnZXRuYW1lPW1vZG5hbWUKKyBtb2RfY2ZsYWdzPQorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zbXNvdHAvY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fc21zb3RwL2NvbmZpZy5oLmluCitpbmRleCA1ZmVhZjkxLi45ZTY5Zjg1IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3Ntc290cC9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3Ntc290cC9jb25maWcuaC5pbgorQEAgLTQyLDYgKzQyLDkgQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisgCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWcuaC5pbgoraW5kZXggZTAzZDFhOS4uNjI2MmM0OCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX215c3FsL2NvbmZpZy5oLmluCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWcuaC5pbgorQEAgLTE4LDUgKzE4LDggQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fdW5peC9jb25maWcuaC5pbgoraW5kZXggZGNiOWFhMi4uNzBiNDY4MCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV91bml4L2NvbmZpZy5oLmluCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fdW5peC9jb25maWcuaC5pbgorQEAgLTEsNSArMSw4IEBACisgLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCisgCisrLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwd25hbScgZnVuY3Rpb24uICovCisrI3VuZGVmIEhBVkVfR0VUUFdOQU0KKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHNwbmFtJyBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9HRVRTUE5BTQorIAorQEAgLTU0LDYgKzU3LDkgQEAKKyAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorIAorKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisrI3VuZGVmIFBBQ0tBR0VfVVJMCisrCisgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisgCistLSAKKzIuMy41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDkyOWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1xdW90aW5nLWZvci1CVUlMVF9XSVRILnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK0ZpeCBxdW90aW5nIGZvciBCVUlMRF9XSVRICisKK1RoZSBlc2NhcGVkIHF1b3RlcyBhcmUgdG8gbWFrZSB0aGUgLUQgdmFsdWVzIHByb2R1Y2Ugc3RyaW5ncyB3aGljaAorY2FuIGJlIHVzZWQgdG8gZGlzcGxheSB0aGVzZSB2YWx1ZXMuIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZXMgYXJlIG1vcmUKK3RoYW4gb25lIHdvcmQsIHdpdGggc3BhY2VzLCB0aGV5IGFsc28gbmVlZCBzaGVsbCBxdW90aW5nIHRvIG1ha2UgdGhlbQoraW50byBzaW5nbGUgd29yZHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbWFpbi9saWJmcmVlcmFkaXVzLXNlcnZlci5tayAgICB8IDIgKy0KKyBzcmMvbWFpbi91bml0dGVzdC5tayAgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvbW9kdWxlcy9ybG1fZWFwL3JhZGVhcGNsaWVudC5tayB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWluL2xpYmZyZWVyYWRpdXMtc2VydmVyLm1rIGIvc3JjL21haW4vbGliZnJlZXJhZGl1cy1zZXJ2ZXIubWsKK2luZGV4IDQ0OTVmNzIuLjA3YzI4ZjEgMTAwNjQ0CistLS0gYS9zcmMvbWFpbi9saWJmcmVlcmFkaXVzLXNlcnZlci5taworKysrIGIvc3JjL21haW4vbGliZnJlZXJhZGl1cy1zZXJ2ZXIubWsKK0BAIC0xOCw1ICsxOCw1IEBAIFNPVVJDRVMJOj0JY29uZmZpbGUuYyBcCisgVEdUX0xETElCUyAgICAgIDo9ICQoT1BFTlNTTF9MSUJTKQorIAorIGlmbmVxICgkKE1BS0VDTURHT0FMUyksc2NhbikKKy1TUkNfQ0ZMQUdTCSs9IC1EQlVJTFRfV0lUSF9DUFBGTEFHUz1cIiQoQ1BQRkxBR1MpXCIgLURCVUlMVF9XSVRIX0NGTEFHUz1cIiQoQ0ZMQUdTKVwiIC1EQlVJTFRfV0lUSF9MREZMQUdTPVwiJChMREZMQUdTKVwiIC1EQlVJTFRfV0lUSF9MSUJTPVwiJChMSUJTKVwiCisrU1JDX0NGTEFHUwkrPSAtREJVSUxUX1dJVEhfQ1BQRkxBR1M9IlwiJChDUFBGTEFHUylcIiIgLURCVUlMVF9XSVRIX0NGTEFHUz0iXCIkKENGTEFHUylcIiIgLURCVUlMVF9XSVRIX0xERkxBR1M9IlwiJChMREZMQUdTKVwiIiAtREJVSUxUX1dJVEhfTElCUz0iXCIkKExJQlMpXCIiCisgZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvbWFpbi91bml0dGVzdC5tayBiL3NyYy9tYWluL3VuaXR0ZXN0Lm1rCitpbmRleCAwOWYzOTM4Li5lZDMzOTUyIDEwMDY0NAorLS0tIGEvc3JjL21haW4vdW5pdHRlc3QubWsKKysrKyBiL3NyYy9tYWluL3VuaXR0ZXN0Lm1rCitAQCAtMjEsNSArMjEsNSBAQCBUR1RfUFJFUkVRUwkrPSBsaWJmcmVlcmFkaXVzLWVhcC5hCisgZW5kaWYKKyAKKyBpZm5lcSAoJChNQUtFQ01ER09BTFMpLHNjYW4pCistU1JDX0NGTEFHUwkrPSAtREJVSUxUX1dJVEhfQ1BQRkxBR1M9XCIkKENQUEZMQUdTKVwiIC1EQlVJTFRfV0lUSF9DRkxBR1M9XCIkKENGTEFHUylcIiAtREJVSUxUX1dJVEhfTERGTEFHUz1cIiQoTERGTEFHUylcIiAtREJVSUxUX1dJVEhfTElCUz1cIiQoTElCUylcIgorK1NSQ19DRkxBR1MJKz0gLURCVUlMVF9XSVRIX0NQUEZMQUdTPSJcIiQoQ1BQRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9DRkxBR1M9IlwiJChDRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9MREZMQUdTPSJcIiQoTERGTEFHUylcIiIgLURCVUlMVF9XSVRIX0xJQlM9IlwiJChMSUJTKVwiIgorIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX2VhcC9yYWRlYXBjbGllbnQubWsgYi9zcmMvbW9kdWxlcy9ybG1fZWFwL3JhZGVhcGNsaWVudC5taworaW5kZXggNjA2OGY1NC4uN2QzYzU1NiAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9lYXAvcmFkZWFwY2xpZW50Lm1rCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fZWFwL3JhZGVhcGNsaWVudC5taworQEAgLTIzLDcgKzIzLDcgQEAgU1JDX0NGTEFHUyArPSAtRFdJVEhfRUFQQ0xJRU5UCisgU1JDX0lOQ0RJUlMgIDo9ICR7dG9wX3NyY2Rpcn0vc3JjL21vZHVsZXMvcmxtX2VhcC9saWJlYXAKKyAKKyBpZm5lcSAoJChNQUtFQ01ER09BTFMpLHNjYW4pCistU1JDX0NGTEFHUwkrPSAtREJVSUxUX1dJVEhfQ1BQRkxBR1M9XCIkKENQUEZMQUdTKVwiIC1EQlVJTFRfV0lUSF9DRkxBR1M9XCIkKENGTEFHUylcIiAtREJVSUxUX1dJVEhfTERGTEFHUz1cIiQoTERGTEFHUylcIiAtREJVSUxUX1dJVEhfTElCUz1cIiQoTElCUylcIgorK1NSQ19DRkxBR1MJKz0gLURCVUlMVF9XSVRIX0NQUEZMQUdTPSJcIiQoQ1BQRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9DRkxBR1M9IlwiJChDRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9MREZMQUdTPSJcIiQoTERGTEFHUylcIiIgLURCVUlMVF9XSVRIX0xJQlM9IlwiJChMSUJTKVwiIgorIGVuZGlmCisgCisgZW5kaWYKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWI2MWZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsODkgQEAKK0Zyb20gNTZlZjQzNGU0NTRiY2M4MmMxNjJhODNkOWJjYjA3NmQ0ZmM3MmI3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDkgSmFuIDIwMTQgMTQ6MzA6MjYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGxpYnRvb2wgZGV0ZWN0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogcGVuZGluZworCitVc2UgTFRfSU5JVCBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIEFDX1BST0dfTElCVE9PTCB0byBkZXRlY3QgbGlidG9vbCwgc28gaXQKK2NhbiB3b3JrIHdpdGggb3VyIGxpYnRvb2xpemUgYW5kIGxpYnRvb2wuCisKK1NpbXBsaWZ5IHRoZSBkZXRlY3Rpb24gb2YgbHRkbC4gSXQgd2lsbCBmaW5kIHRoZSBsdGRsIGZyb20gdGhlIHN5c3Jvb3Q7IHRoZQorc3dpdGNoIC0td2l0aC1zeXN0ZW0tbGlibHRkbCBpcyBubyBsb25nZXIgbmVlZGVkLiBUaGUgY29kZSBpcyBjb3BpZWQgZnJvbQorcHVsc2VhdWRpbyBjb25maWd1cmUuYWMsIHRvZ2V0aGVyIHdpdGggdGhlIGNvbW1lbnQgcGFyYWdyYXBoLgorCitBbHNvIHBhdGNoIGF1dG9nZW4uc2ggc28gaXQgdXNlcyBhdXRvcmVjb25mLCB3aGljaCBoYW5kbGVzIGxpYnRvb2xpemUgYmV0dGVyLgorCitTaWduZWQtb2ZmLWJ5OiBKZXNzZSBaaGFuZyA8c2VuLnpoYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0b2dlbi5zaCAgIHwgIDUgKy0tLS0KKyBjb25maWd1cmUuYWMgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAoraW5kZXggMzQxODY3My4uZTQyYzNkNSAxMDA3NTUKKy0tLSBhL2F1dG9nZW4uc2gKKysrKyBiL2F1dG9nZW4uc2gKK0BAIC01LDEwICs1LDcgQEAgcGFyZW50ZGlyPWBkaXJuYW1lICQwYAorIGNkICRwYXJlbnRkaXIKKyBwYXJlbnRkaXI9YHB3ZGAKKyAKKy1saWJ0b29saXplIC1mIC1jCistI2FjbG9jYWwKKy1hdXRvaGVhZGVyCistYXV0b2NvbmYKKythdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlCisgCisgbXlzdWJkaXJzPSIkbXlzdWJkaXJzIGBmaW5kIHNyYy9tb2R1bGVzLyAtbmFtZSBjb25maWd1cmUgLXByaW50IHwgc2VkICdzJS9jb25maWd1cmUlJSdgIgorIG15c3ViZGlycz1gZWNobyAkbXlzdWJkaXJzYAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZTczZTRhZC4uMDY2ZDNkNyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjA1LDYgKzIwNSw0MiBAQCBkbmwgIyAgU2VlIGlmIHdlIGhhdmUgR2l0LgorIGRubCAjCisgQUNfQ0hFQ0tfUFJPRyhHSVQsIGdpdCwgeWVzLCBubykKKyAKKysjIyMjIGxpYnRvb2wgc3R1ZmYgIyMjIworKworK2RubCBzZXQgdGhpcyBzaGl0IHNvIGl0IGRvZXNuJ3QgZm9yY2UgQ0ZMQUdTLi4uCisrTFRDRkxBR1M9IiAiCisrCisrTFRfUFJFUkVRKDIuMikKKytMVF9JTklUKFtkbG9wZW4gZGlzYWJsZS1zdGF0aWNdKQorKworK2RubCBVbmZvcnR1bmF0ZWx5LCBldmVuIHVwIHRvIGxpYnRvb2wgMi4yLjZhIHRoZXJlIGlzIG5vIHdheSB0byBrbm93CisrZG5sIGV4YWN0bHkgd2hpY2ggdmVyc2lvbiBvZiBsaWJsdGRsIGlzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSwgc28gd2UKKytkbmwganVzdCBhc3N1bWUgdGhhdCBpdCdzIGEgd29ya2luZyB2ZXJzaW9uIGFzIGxvbmcgYXMgd2UgaGF2ZSB0aGUKKytkbmwgbGlicmFyeSBhbmQgdGhlIGhlYWRlciBmaWxlcy4KKytkbmwKKytkbmwgQXMgYW4gZXh0cmEgc2FmZXR5IGRldmljZSwgY2hlY2sgZm9yIGx0X2RsYWR2aXNlX2luaXQoKSB3aGljaCBpcworK2RubCBvbmx5IGltcGxlbWVudGVkIGluIGxpYnRvb2wgMi54LCBhbmQgcmVmaW5lIGFzIHdlIGdvIGlmIHdlIGhhdmUKKytkbmwgcmVmaW5lZCByZXF1aXJlbWVudHMuCisrZG5sCisrZG5sIENoZWNrIHRoZSBoZWFkZXIgZmlsZXMgZmlyc3Qgc2luY2UgdGhlIHN5c3RlbSBtYXkgaGF2ZSBhCisrZG5sIGxpYmx0ZGwuc28gZm9yIHJ1bnRpbWUsIGJ1dCBubyBoZWFkZXJzLCBhbmQgd2Ugd2FudCB0byBiYWlsIG91dCBhcworK2RubCBzb29uIGFzIHBvc3NpYmxlLgorK2RubAorK2RubCBXZSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIHZhcmlhYmxlIGZvciB0aGlzIHRob3VnaCwgc2luY2UgdGhlIHVzZXIKKytkbmwgY2FuIGdpdmUgdGhlIHByb3BlciBwbGFjZSB0byBmaW5kIGxpYmx0ZGwgdGhyb3VnaCB0aGUgc3RhbmRhcmQKKytkbmwgdmFyaWFibGVzIGxpa2UgTERGTEFHUyBhbmQgQ1BQRkxBR1MuCisrCisrQUNfQ0hFQ0tfSEVBREVSKFtsdGRsLmhdLAorKyAgICBbQUNfQ0hFQ0tfTElCKFtsdGRsXSwgW2x0X2RsYWR2aXNlX2luaXRdLCBbTElCTFRETD0tbGx0ZGxdLCBbTElCTFRETD1dKV0sCisrICAgIFtMSUJMVERMPV0pCisrCisrQVNfSUYoW3Rlc3QgIngkTElCTFRETCIgPSAieCJdLAorKyAgICBbQUNfTVNHX0VSUk9SKFtVbmFibGUgdG8gZmluZCBsaWJsdGRsIHZlcnNpb24gMi4gTWFrZXMgc3VyZSB5b3UgaGF2ZSBsaWJ0b29sIDIuMiBvciBsYXRlciBpbnN0YWxsZWQuXSldKQorK0FDX1NVQlNUKFtMSUJMVERMXSkKKytMVERMX1NVQkRJUlM9CisrSU5DTFRETD0tRFdJVEhfU1lTVEVNX0xUREwKKytBQ19TVUJTVChMVERMX1NVQkRJUlMpCisrCisgZG5sIFB1dCB0aGlzIGluIGxhdGVyLCB3aGVuIGFsbCBkaXN0cmlidXRlZCBtb2R1bGVzIHVzZSBhdXRvY29uZi4KKyBkbmwgQUNfQVJHX1dJVEgoZGlzYWJsZW1vZHVsZWZvbywKKyBkbmwgWyAgLS13aXRob3V0LXJsbV9mb28gICAgICAgICBEaXNhYmxlcyBtb2R1bGUgY29tcGlsYXRpb24uICBNb2R1bGUgbGlzdDpdCistLSAKKzEuOC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1saWJ0b29sLWRvLW5vdC11c2UtamxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NTQ1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsMTYwIEBACitGcm9tIDE2YmY4OTk0NDdmYzE1MjRmZmMzYzc5ZTFkMzUzODBlNTI4NWE1NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA3IEphbiAyMDE2IDIyOjM3OjMwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRvb2w6IGRvIG5vdCB1c2UgamxpYnRvb2wKKworamxpYnRvb2wgaXMgaGFyZGNvZGVkIHRvIGJlIHVzZWQgYnV0IHdlIG5lZWQgdG8gdXNlCitvdXIgbGlidG9vbCwgc28gZml4IHRoZSBtYWtmaWxlcyB0byBtYWtlIGl0IGNvbXBhdGlibGUKK3dpdGggb3VyIGxpYnRvb2wuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlLmluYy5pbiAgICAgICAgfCAgNCArKy0tCisgc2NyaXB0cy9ib2lsZXIubWsgIHwgIDIgKysKKyBzY3JpcHRzL2luc3RhbGwubWsgfCAxNCArKysrKysrLS0tLS0tLQorIHNjcmlwdHMvbGlidG9vbC5tayB8IDIyICsrKysrKysrKysrKysrKystLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZS5pbmMuaW4gYi9NYWtlLmluYy5pbgoraW5kZXggN2E3NzYyNS4uZmQ4YWEzZSAxMDA2NDQKKy0tLSBhL01ha2UuaW5jLmluCisrKysgYi9NYWtlLmluYy5pbgorQEAgLTU3LDcgKzU3LDcgQEAgQ1BQRkxBR1MJPSBAQ1BQRkxBR1NACisgTElCUFJFRklYCT0gQExJQlBSRUZJWEAKKyBFWEVFWFQJCT0gQEVYRUVYVEAKKyAKKy1MSUJUT09MCQk9IEpMSUJUT09MCisrTElCVE9PTAkJPSBATElCVE9PTEAKKyBBQ0xPQ0FMCQk9IEBBQ0xPQ0FMQAorIEFVVE9DT05GCT0gQEFVVE9DT05GQAorIEFVVE9IRUFERVIJPSBAQVVUT0hFQURFUkAKK0BAIC0xNjMsNyArMTYzLDcgQEAgQU5BTFlaRS5jICAgICAgIDo9IEBjbGFuZ19wYXRoQAorICMKKyBpZmVxICIkKFVTRV9TSEFSRURfTElCUykiICJ5ZXMiCisgCVRFU1RCSU5ESVIgPSAuLyQoQlVJTERfRElSKS9iaW4vbG9jYWwKKy0JVEVTVEJJTiAgICA9ICBGUl9MSUJSQVJZX1BBVEg9Li9idWlsZC9saWIvLmxpYnMgJChKTElCVE9PTCkgLS1xdWlldCAtLW1vZGU9ZXhlY3V0ZSAkKFRFU1RCSU5ESVIpCisrCVRFU1RCSU4gICAgPSAgRlJfTElCUkFSWV9QQVRIPS4vYnVpbGQvbGliLy5saWJzICQoTElCVE9PTCkgLS1xdWlldCAtLW1vZGU9ZXhlY3V0ZSAkKFRFU1RCSU5ESVIpCisgZWxzZQorIAlURVNUQklORElSID0gLi8kKEJVSUxEX0RJUikvYmluCisgCVRFU1RCSU4gICAgPSAuLyQoQlVJTERfRElSKS9iaW4KK2RpZmYgLS1naXQgYS9zY3JpcHRzL2JvaWxlci5tayBiL3NjcmlwdHMvYm9pbGVyLm1rCitpbmRleCBiY2NlYzVlLi45MjZhMTNlIDEwMDY0NAorLS0tIGEvc2NyaXB0cy9ib2lsZXIubWsKKysrKyBiL3NjcmlwdHMvYm9pbGVyLm1rCitAQCAtMjY2LDYgKzI2Niw3IEBAIGRlZmluZSBDT01QSUxFX0NfQ01EUworIAkkKFEpJChFQ0hPKSBDQyAkPAorIAkkKFEpJChzdHJpcCAke0NPTVBJTEUuY30gLW8gJEAgLWMgLU1EICR7Q1BQRkxBR1N9ICR7Q0ZMQUdTfSAke1NSQ19DRkxBR1N9ICR7SU5DRElSU30gXAorIAkgICAgJChhZGRwcmVmaXggLUksICR7U1JDX0lOQ0RJUlN9KSAke1NSQ19ERUZTfSAke0RFRlN9ICQ8KQorKwkke1F9bXYgJChkaXIgJEApLy5saWJzLyQobm90ZGlyICQqLmQpICR7QlVJTERfRElSfS9vYmpzLyQqLmQKKyBlbmRlZgorIGVsc2UKKyAjCitAQCAtMjgxLDYgKzI4Miw3IEBAIGRlZmluZSBDT01QSUxFX0NfQ01EUworIAkkKFEpY3BwY2hlY2sgLS1lbmFibGU9c3R5bGUgLXEgJHtDSEVDS0ZMQUdTfSAkKGZpbHRlciAtaXN5c3RlbSUsJHtTUkNfQ0ZMQUdTfSkgXAorIAkgICAgICQoZmlsdGVyIC1JJSwke1NSQ19DRkxBR1N9KSAkKGZpbHRlciAtRCUsJHtTUkNfQ0ZMQUdTfSkgJHtJTkNESVJTfSBcCisgCSAgICAgJChhZGRwcmVmaXggLUksJHtTUkNfSU5DRElSU30pICR7U1JDX0RFRlN9ICR7REVGU30gLS1zdXBwcmVzcz12YXJpYWJsZVNjb3BlIC0tc3VwcHJlc3M9aW52YWxpZHNjYW5mICQ8CisrCSR7UX1tdiAkKGRpciAkQCkvLmxpYnMvJChub3RkaXIgJCouZCkgJHtCVUlMRF9ESVJ9L29ianMvJCouZAorIGVuZGVmCisgZW5kaWYKKyAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2luc3RhbGwubWsgYi9zY3JpcHRzL2luc3RhbGwubWsKK2luZGV4IDkxNjQxMTUuLmUzOGMxZWQgMTAwNjQ0CistLS0gYS9zY3JpcHRzL2luc3RhbGwubWsKKysrKyBiL3NjcmlwdHMvaW5zdGFsbC5taworQEAgLTQ2LDcgKzQ2LDcgQEAgZGVmaW5lIEFERF9JTlNUQUxMX1JVTEUuZXhlCisgICAgIGluc3RhbGw6ICQkeyR7MX1fSU5TVEFMTERJUn0vJChub3RkaXIgJHsxfSkKKyAKKyAgICAgIyBJbnN0YWxsIGV4ZWN1dGFibGUgJHsxfQorLSAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0pMSUJUT09MfSAkJHskezF9X0JVSUxEfS8kezF9IHwgJCR7JHsxfV9JTlNUQUxMRElSfQorKyAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0xJQlRPT0x9ICQkeyR7MX1fQlVJTER9LyR7MX0gfCAkJHskezF9X0lOU1RBTExESVJ9CisgCUAkKEVDSE8pIElOU1RBTEwgJHsxfQorIAkkKFEpJCR7UFJPR1JBTV9JTlNUQUxMfSAtYyAtbSA3NTUgJCR7QlVJTERfRElSfS9iaW4vJHsxfSAkJHskezF9X0lOU1RBTExESVJ9LworIAkkKFEpJCR7JHsxfV9QT1NUSU5TVEFMTH0KK0BAIC02NSw3ICs2NSw3IEBAIGRlZmluZSBBRERfSU5TVEFMTF9SVUxFLmEKKyAgICAgaW5zdGFsbDogJCR7JHsxfV9JTlNUQUxMRElSfS8kKG5vdGRpciAkezF9KQorIAorICAgICAjIEluc3RhbGwgc3RhdGljIGxpYnJhcnkgJHsxfQorLSAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0pMSUJUT09MfSAkezF9IHwgJCR7JHsxfV9JTlNUQUxMRElSfQorKyAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0xJQlRPT0x9ICR7MX0gfCAkJHskezF9X0lOU1RBTExESVJ9CisgCUAkKEVDSE8pIElOU1RBTEwgJHsxfQorIAkkKFEpJCR7UFJPR1JBTV9JTlNUQUxMfSAtYyAtbSA3NTUgJCR7QlVJTERfRElSfS9saWIvJHsxfSAkJHskezF9X0lOU1RBTExESVJ9LworIAkkKFEpJCR7JHsxfV9QT1NUSU5TVEFMTH0KK0BAIC04Nyw5ICs4Nyw5IEBAIGRlZmluZSBBRERfSU5TVEFMTF9SVUxFLmxhCisgICAgIGluc3RhbGw6ICQkeyR7MX1fSU5TVEFMTERJUn0vJChub3RkaXIgJHsxfSkKKyAKKyAgICAgIyBJbnN0YWxsIGxpYnRvb2wgbGlicmFyeSAkezF9CistICAgICQkeyR7MX1fSU5TVEFMTERJUn0vJChub3RkaXIgJHsxfSk6ICR7SkxJQlRPT0x9ICQkeyR7MX1fQlVJTER9LyR7MX0gfCAkJHskezF9X0lOU1RBTExESVJ9CisrICAgICQkeyR7MX1fSU5TVEFMTERJUn0vJChub3RkaXIgJHsxfSk6ICR7TElCVE9PTH0gJCR7JHsxfV9CVUlMRH0vJHsxfSB8ICQkeyR7MX1fSU5TVEFMTERJUn0KKyAJQCQoRUNITykgSU5TVEFMTCAkezF9CistCSQoUSkkJHtQUk9HUkFNX0lOU1RBTEx9IC1jIC1tIDc1NSAkJHtMT0NBTF9GTEFHU19NSU59ICQke0JVSUxEX0RJUn0vbGliLyR7MX0gJCR7JHsxfV9JTlNUQUxMRElSfS8KKysJJChRKSQke1BST0dSQU1fSU5TVEFMTH0gLWMgLW0gNzU1ICQke0JVSUxEX0RJUn0vbGliLyR7MX0gJCR7JHsxfV9JTlNUQUxMRElSfS8KKyAJJChRKSQkeyR7MX1fUE9TVElOU1RBTEx9CisgCisgZW5kZWYKK0BAIC0xMDcsNyArMTA3LDcgQEAgZGVmaW5lIEFERF9JTlNUQUxMX1JVTEUubWFuCisgICAgIGluc3RhbGw6ICR7Mn0vJChub3RkaXIgJHsxfSkKKyAKKyAgICAgIyBJbnN0YWxsIG1hbnVhbCBwYWdlICR7MX0KKy0gICAgJHsyfS8kKG5vdGRpciAkezF9KTogJHtKTElCVE9PTH0gJHsxfSB8ICR7Mn0KKysgICAgJHsyfS8kKG5vdGRpciAkezF9KTogJHtMSUJUT09MfSAkezF9IHwgJHsyfQorIAlAJChFQ0hPKSBJTlNUQUxMICQobm90ZGlyICR7MX0pCisgCSQoUSkkJHtQUk9HUkFNX0lOU1RBTEx9IC1jIC1tIDY0NCAkezF9ICR7Mn0vCisgCitAQCAtMTIyLDkgKzEyMiw5IEBAIGVuZGVmCisgZGVmaW5lIEFERF9JTlNUQUxMX1JVTEUuZGlyCisgICAgICMgSW5zdGFsbCBkaXJlY3RvcnkKKyAgICAgLlBIT05ZOiAkezF9CistICAgICR7MX06ICR7SkxJQlRPT0x9CisrICAgICR7MX06ICR7TElCVE9PTH0KKyAJQCQoRUNITykgSU5TVEFMTCAtZCAtbSA3NTUgJHsxfQorLQkkKFEpJCR7UFJPR1JBTV9JTlNUQUxMfSAtZCAtbSA3NTUgJHsxfQorKwkkKFEpJCR7SU5TVEFMTH0gLWQgLW0gNzU1ICR7MX0KKyBlbmRlZgorIAorIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvbGlidG9vbC5tayBiL3NjcmlwdHMvbGlidG9vbC5taworaW5kZXggNTc5MTVlMS4uMmNiMmY3ZCAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvbGlidG9vbC5taworKysrIGIvc2NyaXB0cy9saWJ0b29sLm1rCitAQCAtNTUsNyArNTUsOSBAQCBpZmVxICIke0xJQlRPT0x9IiAiSkxJQlRPT0wiCisgICAgICMgVGVsbCBHTlUgTWFrZSB0byB1c2UgdGhpcyB2YWx1ZSwgcmF0aGVyIHRoYW4gYW55dGhpbmcgc3BlY2lmaWVkCisgICAgICMgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAgb3ZlcnJpZGUgTElCVE9PTCA6PSAke0pMSUJUT09MfQorLWVuZGlmICAgICMgZWxzZSB3ZSdyZSBub3QgdXNpbmcgamxpYnRvb2wKKytlbHNlICAgICMgZWxzZSB3ZSdyZSBub3QgdXNpbmcgamxpYnRvb2wKKysgICAgYWxsIGluc3RhbGw6ICR7TElCVE9PTH0KKytlbmRpZgorIAorICMgV2hlbiB1c2luZyBsaWJ0b29sLCBpdCBwcm9kdWNlcyBhICcubGlicycgZGlyZWN0b3J5LiAgRW5zdXJlIHRoYXQgaXQKKyAjIGlzIHJlbW92ZWQgb24gIm1ha2UgY2xlYW4iLCB0b28uCitAQCAtNjksMTEgKzcxLDE5IEBAIGNsZWFuOiAubGlic19jbGVhbgorICMgUmUtZGVmaW5lIGNvbXBpbGVycyBhbmQgbGlua2VycworICMKKyBPQkpfRVhUID0gbG8KKy1DT01QSUxFLmMgPSAke0xJQlRPT0x9IC0tc2lsZW50IC0tbW9kZT1jb21waWxlICR7Q0N9CistQ09NUElMRS5jeHggPSAke0xJQlRPT0x9IC0tbW9kZT1jb21waWxlICR7Q1hYfQorLUxJTksuYyA9ICR7TElCVE9PTH0gLS1zaWxlbnQgLS1tb2RlPWxpbmsgJHtDQ30KKy1MSU5LLmN4eCA9ICR7TElCVE9PTH0gLS1tb2RlPWxpbmsgJHtDWFh9CistUFJPR1JBTV9JTlNUQUxMID0gJHtMSUJUT09MfSAtLXNpbGVudCAtLW1vZGU9aW5zdGFsbCAke0lOU1RBTEx9CisraWZlcSAiJHtMSUJUT09MfSIgIkpMSUJUT09MIgorKyAgICBDT01QSUxFLmMgPSAke0xJQlRPT0x9IC0tc2lsZW50IC0tbW9kZT1jb21waWxlICR7Q0N9CisrICAgIENPTVBJTEUuY3h4ID0gJHtMSUJUT09MfSAtLW1vZGU9Y29tcGlsZSAke0NYWH0KKysgICAgTElOSy5jID0gJHtMSUJUT09MfSAtLXNpbGVudCAtLW1vZGU9bGluayAke0NDfQorKyAgICBMSU5LLmN4eCA9ICR7TElCVE9PTH0gLS1tb2RlPWxpbmsgJHtDWFh9CisrICAgIFBST0dSQU1fSU5TVEFMTCA9ICR7TElCVE9PTH0gLS1zaWxlbnQgLS1tb2RlPWluc3RhbGwgJHtJTlNUQUxMfQorK2Vsc2UKKysgICAgQ09NUElMRS5jID0gJHtMSUJUT09MfSAtLW1vZGU9Y29tcGlsZSAtLXRhZz1DQyAke0NDfQorKyAgICBDT01QSUxFLmN4eCA9ICR7TElCVE9PTH0gLS1tb2RlPWNvbXBpbGUgLS10YWc9Q0MgJHtDWFh9CisrICAgIExJTksuYyA9ICR7TElCVE9PTH0gLS1tb2RlPWxpbmsgLS10YWc9Q0MgJHtDQ30gLW1vZHVsZSAtZXhwb3J0LWR5bmFtaWMKKysgICAgTElOSy5jeHggPSAke0xJQlRPT0x9IC0tbW9kZT1saW5rIC0tdGFnPUNDICR7Q1hYfSAtbW9kdWxlIC1leHBvcnQtZHluYW1pYworKyAgICBQUk9HUkFNX0lOU1RBTEwgPSAke0xJQlRPT0x9IC0tbW9kZT1pbnN0YWxsICR7SU5TVEFMTH0KKytlbmRpZgorIAorIAorICMgTElCVE9PTF9FTkRJTkdTIC0gR2l2ZW4gYSBsaWJyYXJ5IGVuZGluZyBpbiAiLmEiIG9yICIuc28iLCByZXBsYWNlIHRoYXQKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1ybG1fcHl0aG9uLWFkZC1QWV9JTkNfRElSLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLXJsbV9weXRob24tYWRkLVBZX0lOQ19ESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc1OTQwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1ybG1fcHl0aG9uLWFkZC1QWV9JTkNfRElSLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYTBiZjY1ZTA0ZDJiYmQzMjcxY2FiOTRiZDVhYzkzZjhlODc3YmZjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI3IEphbiAyMDE2IDA1OjA3OjE5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHJsbV9weXRob246IGFkZCBQWV9JTkNfRElSIGluIHNlYXJjaCBkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2NvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXJsbS1weXRob24taW5jbHVkZS1kaXIgaXMgdXNlZCB0byBzZXQKK1BZX0lOQ19ESVIgd2hpY2ggaXMgbmV2ZXIgdXNlZCBhbmQgaXQgZmFpbHMgdG8gZmluZCBQeXRob24uaCwKK3NvIGFkZCBpdCBpbnRvIHNlYXJjaCBkaXIgdG8gZml4IGl0LgorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX3B5dGhvbi9jb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fcHl0aG9uL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9weXRob24vY29uZmlndXJlLmFjCitpbmRleCA4MzFhMzNhLi5jMzc5MmQ4IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbi9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9weXRob24vY29uZmlndXJlLmFjCitAQCAtOTMsNyArOTMsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCisgCQlvbGRfQ0ZMQUdTPSRDRkxBR1MKKyAJCUNGTEFHUz0iJENGTEFHUyAkUFlfQ0ZMQUdTIgorLQkJc21hcnRfdHJ5X2Rpcj0iJFBZX1BSRUZJWC9pbmNsdWRlL3B5dGhvbiRQWV9TWVNfVkVSU0lPTiIKKysJCXNtYXJ0X3RyeV9kaXI9IiRQWV9QUkVGSVgvaW5jbHVkZS9weXRob24kUFlfU1lTX1ZFUlNJT04gJFBZX0lOQ19ESVIiCisgCQlGUl9TTUFSVF9DSEVDS19JTkNMVURFKFB5dGhvbi5oKQorIAkJQ0ZMQUdTPSRvbGRfQ0ZMQUdTCisgCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE2Mjk2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvcmFkaXVzZC12b2xhdGlsZXMuY29uZgpAQCAtMCwwICsxLDIgQEAKK2QgL3Zhci9sb2cvcmFkaXVzICAwNzU1IHJhZGl1c2QgcmFkaXVzZCAtCitkIC92YXIvcnVuL3JhZGl1c2QgMDc1NSByYWRpdXNkIHJhZGl1c2QgLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9yYWRpdXNkLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL3JhZGl1c2Quc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTljNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9yYWRpdXNkLnNlcnZpY2UKQEAgLTAsMCArMSwxNiBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1GcmVlUkFESVVTIGhpZ2ggcGVyZm9ybWFuY2UgUkFESVVTIHNlcnZlci4KK0FmdGVyPXN5c2xvZy50YXJnZXQgbmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK1BJREZpbGU9QFNUQVRFRElSQC9ydW4vcmFkaXVzZC9yYWRpdXNkLnBpZAorRXhlY1N0YXJ0UHJlPS1AQkFTRV9CSU5ESVJAL2Nob3duIC1SIHJhZGl1c2QucmFkaXVzZCBAU1RBVEVESVJAL3J1bi9yYWRpdXNkCitFeGVjU3RhcnRQcmU9LUBCQVNFX0JJTkRJUkAvc2ggLWMgImlmIFsgISAtZiBAU1lTQ09ORkRJUkAvcmFkZGIvY2VydHMvc2VydmVyLnBlbSBdOyB0aGVuIHN1ZG8gLXUgcmFkaXVzZCBAU1lTQ09ORkRJUkAvcmFkZGIvY2VydHMvYm9vdHN0cmFwOyBmaSIKK0V4ZWNTdGFydFByZT1AU0JJTkRJUkAvcmFkaXVzZCAtQworRXhlY1N0YXJ0PUBTQklORElSQC9yYWRpdXNkIC1kIEBTWVNDT05GRElSQC9yYWRkYgorRXhlY1JlbG9hZD1AU0JJTkRJUkAvcmFkaXVzZCAtQworRXhlY1JlbG9hZD1AQkFTRV9CSU5ESVJAL2tpbGwgLUhVUCAkTUFJTlBJRAorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL3ZvbGF0aWxlcy41OF9yYWRpdXNkIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy92b2xhdGlsZXMuNThfcmFkaXVzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2JkYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy92b2xhdGlsZXMuNThfcmFkaXVzZApAQCAtMCwwICsxLDMgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCByYWRpdXNkIHJhZGl1c2QgMDc1NSAvdmFyL3J1bi9yYWRpdXNkIG5vbmUKK2QgcmFkaXVzZCByYWRpdXNkIDA3NTUgL3Zhci9sb2cvcmFkaXVzIG5vbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZnJlZXJhZGl1c18zLjAuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNTVhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE1LmJiCkBAIC0wLDAgKzEsMjIyIEBACitERVNDUklQVElPTiA9ICJGcmVlUkFESVVTIGlzIGFuIEludGVybmV0IGF1dGhlbnRpY2F0aW9uIGRhZW1vbiwgd2hpY2ggaW1wbGVtZW50cyB0aGUgUkFESVVTIFwKK3Byb3RvY29sLCBhcyBkZWZpbmVkIGluIFJGQyAyODY1IChhbmQgb3RoZXJzKS4gSXQgYWxsb3dzIE5ldHdvcmsgQWNjZXNzIFwKK1NlcnZlcnMgKE5BUyBib3hlcykgdG8gcGVyZm9ybSBhdXRoZW50aWNhdGlvbiBmb3IgZGlhbC11cCB1c2Vycy4gVGhlcmUgYXJlIFwKK2Fsc28gUkFESVVTIGNsaWVudHMgYXZhaWxhYmxlIGZvciBXZWIgc2VydmVycywgZmlyZXdhbGxzLCBVbml4IGxvZ2lucywgYW5kIFwKK21vcmUuICBVc2luZyBSQURJVVMgYWxsb3dzIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBhIG5ldHdvcmsgdG8gXAorYmUgY2VudHJhbGl6ZWQsIGFuZCBtaW5pbWl6ZXMgdGhlIGFtb3VudCBvZiByZS1jb25maWd1cmF0aW9uIHdoaWNoIGhhcyB0byBiZSBcCitkb25lIHdoZW4gYWRkaW5nIG9yIGRlbGV0aW5nIG5ldyB1c2Vycy4iCisKK1NVTU1BUlkgPSAiSGlnaC1wZXJmb3JtYW5jZSBhbmQgaGlnaGx5IGNvbmZpZ3VyYWJsZSBSQURJVVMgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlcmFkaXVzLm9yZy8iCitTRUNUSU9OID0gIlN5c3RlbS9TZXJ2ZXJzIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKK0RFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgb3BlbnNzbCBsaWJpZG4gbGlidG9vbCBsaWJwY2FwIGxpYnRhbGxvYyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZXJhZGl1cy5vcmcvcHViL2ZyZWVyYWRpdXMvZnJlZXJhZGl1cy1zZXJ2ZXItJHtQVn0udGFyLmJ6MiBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMgXAorICAgIGZpbGU6Ly92b2xhdGlsZXMuNThfcmFkaXVzZCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtZW5ibGUtdXNlci1pbi1jb25mLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWxsb3ctY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItbGliY2FwLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1hdm9pZC1zZWFyY2hpbmctaG9zdC1kaXJzLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1ybG1fcHl0aG9uLWFkZC1QWV9JTkNfRElSLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRvLW5vdC11c2UtamxpYnRvb2wucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1xdW90aW5nLWZvci1CVUlMVF9XSVRILnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtZXJyb3ItZm9yLWV4cGFuc2lvbi1vZi1tYWNyby5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtcmxtX21zY2hhcC1Vc2UtaW5jbHVkZWRpci1pbnN0ZWFkLW9mLWhhcmRjb2RpbmctdXNyLS5wYXRjaCBcCisgICAgZmlsZTovL3JhZGl1c2Quc2VydmljZSBcCisgICAgZmlsZTovL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBjODFhNDQ2NGNjZjFkMDRmN2VmMTIxOGEwMjlkMzdhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjY3ZDg1MDVlN2IyOTA5ZjViZGJmMzkzOGNhMDc3YzFmZTEyMjI5MGRjOTY5MzA0ZDRmM2I1OTRmN2UzYmEiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitTID0gIiR7V09SS0RJUn0vZnJlZXJhZGl1cy1zZXJ2ZXItJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtc3RyaWN0LWRlcGVuZGVuY2llcyBcCisgICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ZyZWVyYWRpdXMtJHtQVn0gXAorICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgIC0td2l0aC1vcGVuc3NsLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgIC0td2l0aG91dC1ybG1faXBwb29sIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9jYWNoZV9tZW1jYWNoZWQgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdW50ZXIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdWNoYmFzZSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fZGJtIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfdG5jIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfaWtldjIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX29wZW5kaXJlY3RvcnkgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9yZWRpc3dobyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2RiMiBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2ZpcmViaXJkIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZnJlZXRkcyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2lvZGJjIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfb3JhY2xlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfc3liYXNlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxocHdpcHBvb2wgXAorICAgICAgICBhY19jdl9wYXRoX1BFUkw9JHtiaW5kaXJ9L3BlcmwgXAorICAgICAgICBheF9jdl9jY19idWlsdGluX2Nob29zZV9leHByPW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3A9bm8gXAorICAgICAgICBheF9jdl9jY19idWlsdGluX2Jzd2FwNjQ9bm8gXAorICAgICAgICBheF9jdl9jY19ib3VuZGVkX2F0dHJpYnV0ZT1ubyBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBwY3JlIGxpYmNhcCBcCisiCisKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLXJsbV9rcmI1LC0td2l0aG91dC1ybG1fa3JiNSxrcmI1IgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1ybG1fcGFtLC0td2l0aG91dC1ybG1fcGFtLGxpYnBhbSIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtcmxtX2xkYXAsLS13aXRob3V0LXJsbV9sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLXJsbV9zcWxfbXlzcWwsLS13aXRob3V0LXJsbV9zcWxfbXlzcWwsbXlzcWw1IgorUEFDS0FHRUNPTkZJR1tzcWxpdGVdID0gIi0td2l0aC1ybG1fc3FsX3NxbGl0ZSwtLXdpdGhvdXQtcmxtX3NxbF9zcWxpdGUsc3FsaXRlMyIKK1BBQ0tBR0VDT05GSUdbdW5peG9kYmNdID0gIi0td2l0aC1ybG1fc3FsX3VuaXhvZGJjLC0td2l0aG91dC1ybG1fc3FsX3VuaXhvZGJjLHVuaXhvZGJjIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcmxtX3NxbF9wb3N0Z3Jlc3FsLC0td2l0aG91dC1ybG1fc3FsX3Bvc3RncmVzcWwscG9zdGdyZXNxbCIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgLS13aXRoLXJsbV9wZXJsLC0td2l0aG91dC1ybG1fcGVybCxwZXJsLW5hdGl2ZSBwZXJsLHBlcmwiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXJsbV9weXRob24gLS13aXRoLXJsbS1weXRob24tYmluPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtLXdpdGgtcmxtLXB5dGhvbi1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LC0td2l0aG91dC1ybG1fcHl0aG9uLHB5dGhvbi1uYXRpdmUgcHl0aG9uIgorUEFDS0FHRUNPTkZJR1tyZXN0XSA9ICItLXdpdGgtcmxtX3Jlc3QsLS13aXRob3V0LXJsbV9yZXN0LGN1cmwganNvbi1jIgorUEFDS0FHRUNPTkZJR1tydWJ5XSA9ICItLXdpdGgtcmxtX3J1YnksLS13aXRob3V0LXJsbV9ydWJ5LHJ1YnkiCisKK2luaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworIyBUaGlzIGlzIG5vdCBhIGNwYW4gb3IgcHl0aG9uIGJhc2VkIHBhY2thZ2UsIGJ1dCBpdCBuZWVkcyBzb21lIGRlZmluaXRpb25zCisjIGZyb20gY3Bhbi1iYXNlIGFuZCBweXRob24tZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KKyMgY29ycmVjdGx5LgoraW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uLWRpcgorCisjIFRoZSBtb2R1bGVzIHN1YmRpcnMgYWxzbyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBieSBhdXRvcmVjb25mLiBVc2UgYXV0b2dlbi5zaAorIyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHN1YmRpcnMgY29ycmVjdGx5LgorZG9fY29uZmlndXJlICgpIHsKKyAgICAuL2F1dG9nZW4uc2gKKworICAgICMgdGhlIGNvbmZpZ3VyZSBvZiBybG1fcGVybCBuZWVkcyB0aGlzIHRvIGdldCBjb3JyZWN0CisgICAgIyBtb2RfY2ZsYWdzIGFuZCBtb2RfbGRmbGFncworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBleHBvcnQgUEVSTDVMSUI9IiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCisgICAgZmkKKworICAgIG9lX3J1bmNvbmYKKworICAgICMgd2UgZG9uJ3QgbmVlZCBkaGNwY2xpZW50CisgICAgc2VkIC1pIC1lICdzL2RoY3BjbGllbnQubWsvLycgJHtTfS9zcmMvbW9kdWxlcy9wcm90b19kaGNwL2FsbC5taworfQorCitJTklUU0NSSVBUX05BTUUgPSAicmFkaXVzZCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhZGl1c2Quc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJhZGl1c2QiCisKK2RvX2luc3RhbGwoKSB7CisgICAgcm0gLXJmICR7RH0KKyAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKKyAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKKyAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgbWtkaXIgLXAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKworICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JHtEfS8ke2xpYmRpcn0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgUj0ke0R9IElOU1RBTExTVFJJUD0iIgorCisgICAgIyByZW1vdmUgdW5zdXBwb3J0ZWQgY29uZmlnIGZpbGVzCisgICAgcm0gLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiL2V4cGVyaW1lbnRhbC5jb25mCisKKyAgICAjIHJlbW92ZSBzY3JpcHRzIHRoYXQgcmVxdWlyZWQgUGVybChEQkkpCisgICAgcm0gLXJmICR7RH0vJHtiaW5kaXJ9L3JhZHNxbHJlbGF5CisKKyAgICBjcCAtZiAke1dPUktESVJ9L2ZyZWVyYWRpdXMgJHtEfS9ldGMvaW5pdC5kL3JhZGl1c2QKKyAgICBybSAtZiAke0R9LyR7c2JpbmRpcn0vcmMucmFkaXVzZAorICAgIGNobW9kICt4ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmFkaXVzZAorICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy41OF9yYWRpdXNkICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy81OF9yYWRpdXNkCisKKyAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiLworICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKKworICAgICMgRm9yIHN5c3RlbWQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICAgIC1lICdzLEBTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCisgICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFkaXVzZC5zZXJ2aWNlCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICBmaQorfQorCisjIFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiB3ZSBpbnN0YWxsL3VwZGF0ZSBvbiBhIHJ1bm5pbmcgdGFyZ2V0LgorIworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgorICAgICAgICBpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICAgIyBjcmVhdGUgL3Zhci9sb2cvcmFkaXVzLCAvdmFyL3J1bi9yYWRpdXNkCisgICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yYWRpdXNkLXZvbGF0aWxlcy5jb25mCisgICAgICAgIGVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCisgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKyAgICAgICAgZmkKKworICAgICAgICAjIEZpeCBvd25lcnNoaXAgZm9yIC9ldGMvcmFkZGIvKiwgL3Zhci9saWIvcmFkaXVzZAorICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtzeXNjb25mZGlyfS9yYWRkYgorICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAorICAgIGZpCit9CisKKyMgV2UgcmVhbGx5IG5lZWQgdGhlIHN5bWxpbmsgOigKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWtyYjUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbGRhcCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1teXNxbCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1wZXJsID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXBvc3RncmVzcWwgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tcHl0aG9uID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXVuaXhvZGJjID0gImRldi1zbyIKKworUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzICR7UE59LWxkYXAgJHtQTn0ta3JiNSAke1BOfS1wZXJsIFwKKyAgICAke1BOfS1weXRob24gJHtQTn0tbXlzcWwgJHtQTn0tcG9zdGdyZXNxbCAke1BOfS11bml4b2RiYyIKKworRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0ZJTEVTXyR7UE59LWxkYXAgPSAiJHtsaWJkaXJ9L3JsbV9sZGFwLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9sZGFwIFwKKyIKKworRklMRVNfJHtQTn0ta3JiNSA9ICIke2xpYmRpcn0vcmxtX2tyYjUuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL2tyYjUgXAorIgorCitGSUxFU18ke1BOfS1wZXJsID0gIiR7bGliZGlyfS9ybG1fcGVybC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvcGVybCBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9wZXJsIFwKKyIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9ybG1fcHl0aG9uLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9weXRob24gXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uIFwKKyIKKworRklMRVNfJHtQTn0tbXlzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfbXlzcWwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL215c3FsIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3NxbCBcCisiCisKK0ZJTEVTXyR7UE59LXBvc3RncmVzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfcG9zdGdyZXNxbC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvc3FsLyovcG9zdGdyZXNxbCBcCisiCisKK0ZJTEVTXyR7UE59LXVuaXhvZGJjID0gIiR7bGliZGlyfS9ybG1fc3FsX3VuaXhvZGJjLnNvKiIKKworRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9ybG1fKi5zbyogJHtsaWJkaXJ9L3Byb3RvXypzbyoiCisKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCmluZGV4IGY0OGI2NTUuLmU1NzlkZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCkBAIC0xMywzICsxMyw0IEBACiAKIGFjcGF0aHMgPSAiLUkgLi9jb25maWcvIgogCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZmMzZlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgVVBuUCBJR0QgZGFlbW9uIgorREVTQ1JJUFRJT04gPSAiVGhlIG1pbmlVUG5QIGRhZW1vbiBpcyBhbiBVUG5QIElHRCAoaW50ZXJuZXQgZ2F0ZXdheSBkZXZpY2UpIFwKK3doaWNoIHByb3ZpZGUgTkFUIHRyYXZlcnNhbCBzZXJ2aWNlcyB0byBhbnkgVVBuUCBlbmFibGVkIGNsaWVudCBvbiBcCit0aGUgbmV0d29yay4iCisKK1NFQ1RJT04gPSAibmV0d29ya2luZyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWE3MWM3OGMzNzNjY2ZlMGZmMjA3YWYwY2Q5NjZkOTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImlwdGFibGVzIG5ldC10b29scyB1dGlsLWxpbnV4IGxpYm1ubCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgorCitTUkNfVVJJID0gImh0dHA6Ly9taW5pdXBucC50dXhmYW1pbHkub3JnL2ZpbGVzL2Rvd25sb2FkLnBocD9maWxlPSR7UH0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtQfS50YXIuZ3ogXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjFjMDdhMjE1ZGQ5YjM2MmU3NWE5ZWZjMDVlMmZiM2I0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NmFhM2EwMGUwZjU0OTA4MjZiYmEzY2I5N2U2OGNkMjc0NzllNTgzOWFkYWM0YjliY2I2NmVhZTc4NmJmYjciCisKK0lQVjYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJy0taXB2NicsICcnLCBkKX0iCisKK2RvX2NvbXBpbGUoKSB7CisgICAgY2QgJHtTfQorICAgIENPTkZJR19PUFRJT05TPSIke0lQVjZ9IC0tbGVhc2VmaWxlIC0tdmVuZG9yY2ZnIiBvZV9ydW5tYWtlIC1mIE1ha2VmaWxlLmxpbnV4Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KKyAgICBpbnN0YWxsICR7U30vbWluaXVwbnBkICR7RH0vJHtzYmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXB0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CisgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX2luaXQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CisgICAgaW5zdGFsbCAtbSAwNjQ0IC1iICR7U30vbWluaXVwbnBkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgJHtTfS9saW51eC9taW5pdXBucGQuaW5pdC5kLnNjcmlwdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL21pbml1cG5wZAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWFkanVzdC1uZXQtaGVhZGVycy1mb3ItbXVzbC1jb21wYXRpYmlsaXR5LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1hZGp1c3QtbmV0LWhlYWRlcnMtZm9yLW11c2wtY29tcGF0aWJpbGl0eS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1hZGp1c3QtbmV0LWhlYWRlcnMtZm9yLW11c2wtY29tcGF0aWJpbGl0eS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1jaGVjay1mb3Itc3RybmR1cGEtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRucy1yZXNvbHZlZC1hZGQtc3lzdGVtZC1yZXNvbHZlZC1iYWNrZW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWRkLXN5c3RlbWQtcmVzb2x2ZWQtYmFja2VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDE5NGE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWRkLXN5c3RlbWQtcmVzb2x2ZWQtYmFja2VuZC5wYXRjaApAQCAtMCwwICsxLDYyMSBAQAorRnJvbTogU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgorRGF0ZTogU3VuLCAyMSBBdWcgMjAxNiAyMTo0NjowMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBkbnMvcmVzb2x2ZWQ6IGFkZCBzeXN0ZW1kLXJlc29sdmVkIGJhY2tlbmQKKworQWRkIGluaXRpYWwgRE5TIGJhY2tlbmQgdGhhdCBwdXNoZXMgRE5TIGluZm9ybWF0aW9uIGludG8KK3N5c3RlbWQtcmVzb2x2ZWQuIEJhY2tlbmQgaXMgY2hvb3NlbiBieSBkZWZhdWx0IGlmIHRoZSBzeXN0ZW1zCityZXNvbHYuY29udiBpcyBzZXR1cCB0byBwb2ludGluZyB0byBvbmUgb2YgdGhlIHN0YW5kYXJkIHJlc29sdmVkCitsb2NhdGlvbnMuCisKK1RoaXMgZG9lc24ndCBoYW5kbGUgZ2xvYmFsIGRucyBjb25maWd1cmF0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBTam9lcmQgU2ltb25zIDxzam9lcmRAbHVvbi5uZXQ+CisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI1NDAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBtYW4vTmV0d29ya01hbmFnZXIuY29uZi54bWwgICAgICAgICAgICAgICB8ICAxMCArLQorIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYyAgICAgICAgICB8ICA0MyArKy0KKyBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYyB8IDQyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaCB8ICA0NSArKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA1MjMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgKKworZGlmZiAtLWdpdCBhL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbCBiL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbAoraW5kZXggNjI5NWI4Mi4uMGE2N2FlNSAxMDA2NDQKKy0tLSBhL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbAorKysrIGIvbWFuL05ldHdvcmtNYW5hZ2VyLmNvbmYueG1sCitAQCAtMjc1LDEwICsyNzUsMTIgQEAgbm8tYXV0by1kZWZhdWx0PSoKKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+PHZhcm5hbWU+ZG5zPC92YXJuYW1lPjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZXQgdGhlIEROUyAoPGZpbGVuYW1lPnJlc29sdi5jb25mPC9maWxlbmFtZT4pIHByb2Nlc3NpbmcgbW9kZS48L3BhcmE+CistICAgICAgICA8cGFyYT48bGl0ZXJhbD5kZWZhdWx0PC9saXRlcmFsPjogVGhlIGRlZmF1bHQgaWYgdGhlIGtleSBpcworLSAgICAgICAgbm90IHNwZWNpZmllZC4gTmV0d29ya01hbmFnZXIgd2lsbCB1cGRhdGUKKysgICAgICAgIDxwYXJhPjxsaXRlcmFsPmRlZmF1bHQ8L2xpdGVyYWw+OiBOZXR3b3JrTWFuYWdlciB3aWxsIHVwZGF0ZQorICAgICAgICAgPGZpbGVuYW1lPnJlc29sdi5jb25mPC9maWxlbmFtZT4gdG8gcmVmbGVjdCB0aGUgbmFtZXNlcnZlcnMKKy0gICAgICAgIHByb3ZpZGVkIGJ5IGN1cnJlbnRseSBhY3RpdmUgY29ubmVjdGlvbnMuPC9wYXJhPgorKyAgICAgICAgcHJvdmlkZWQgYnkgY3VycmVudGx5IGFjdGl2ZSBjb25uZWN0aW9ucy4gIFRoaXMgaXMgdGhlIGRlZmF1bHQKKysgICAgICAgIGlmIHRoZSBrZXkgaXMgbm90IHNwZWNpZmllZCwgdW5sZXNzIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZAorKyAgICAgICAgdG8gdXNlIHN5c3RlbWQtcmVzb2x2ZWQ7IGluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCBpcworKyAgICAgICAgPGxpdGVyYWw+c3lzdGVtZC1yZXNvbHZlZDwvbGl0ZXJhbD48L3BhcmE+CisgICAgICAgICA8cGFyYT48bGl0ZXJhbD5kbnNtYXNxPC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbCBydW4KKyAgICAgICAgIGRuc21hc3EgYXMgYSBsb2NhbCBjYWNoaW5nIG5hbWVzZXJ2ZXIsIHVzaW5nIGEgInNwbGl0IEROUyIKKyAgICAgICAgIGNvbmZpZ3VyYXRpb24gaWYgeW91IGFyZSBjb25uZWN0ZWQgdG8gYSBWUE4sIGFuZCB0aGVuIHVwZGF0ZQorQEAgLTI4OCw2ICsyOTAsOCBAQCBuby1hdXRvLWRlZmF1bHQ9KgorICAgICAgICAgdG8gdW5ib3VuZCBhbmQgZG5zc2VjLXRyaWdnZXJkLCBwcm92aWRpbmcgYSAic3BsaXQgRE5TIgorICAgICAgICAgY29uZmlndXJhdGlvbiB3aXRoIEROU1NFQyBzdXBwb3J0LiBUaGUgPGZpbGVuYW1lPi9ldGMvcmVzb2x2LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgd2lsbCBiZSBtYW5hZ2VkIGJ5IGRuc3NlYy10cmlnZ2VyIGRhZW1vbi48L3BhcmE+CisrICAgICAgICA8cGFyYT48bGl0ZXJhbD5zeXN0ZW1kLXJlc29sdmVkPC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbAorKyAgICAgICAgcHVzaCB0aGUgRE5TIGNvbmZpZ3VyYXRpb24gdG8gc3lzdGVtZC1yZXNvbHZlZDwvcGFyYT4KKyAgICAgICAgIDxwYXJhPjxsaXRlcmFsPm5vbmU8L2xpdGVyYWw+OiBOZXR3b3JrTWFuYWdlciB3aWxsIG5vdAorICAgICAgICAgbW9kaWZ5IHJlc29sdi5jb25mLiBUaGlzIGltcGxpZXMKKyAgICAgICAgIDxsaXRlcmFsPnJjLW1hbmFnZXI8L2xpdGVyYWw+Jm5ic3A7PGxpdGVyYWw+dW5tYW5hZ2VkPC9saXRlcmFsPjwvcGFyYT4KK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDhkMjliMTkuLjEwZjYzZGUgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTM0NSw2ICszNDUsOCBAQCBsaWJOZXR3b3JrTWFuYWdlcl9sYV9TT1VSQ0VTID0gXAorIAlcCisgCWRucy1tYW5hZ2VyL25tLWRucy1kbnNtYXNxLmMgXAorIAlkbnMtbWFuYWdlci9ubS1kbnMtZG5zbWFzcS5oIFwKKysJZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYyBcCisrCWRucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmggXAorIAlkbnMtbWFuYWdlci9ubS1kbnMtdW5ib3VuZC5jIFwKKyAJZG5zLW1hbmFnZXIvbm0tZG5zLXVuYm91bmQuaCBcCisgCWRucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMgXAorZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKK2luZGV4IDVhNzU4YTkuLjM4YmM3ODYgMTAwNjQ0CistLS0gYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYworKysrIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKK0BAIC00NSw2ICs0NSw3IEBACisgCisgI2luY2x1ZGUgIm5tLWRucy1wbHVnaW4uaCIKKyAjaW5jbHVkZSAibm0tZG5zLWRuc21hc3EuaCIKKysjaW5jbHVkZSAibm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaCIKKyAjaW5jbHVkZSAibm0tZG5zLXVuYm91bmQuaCIKKyAKKyAjaWYgV0lUSF9MSUJTT1VQCitAQCAtMTU4OCw2ICsxNTg5LDM3IEBAIF9jaGVja19yZXNjb25mX2ltbXV0YWJsZSAoTk1EbnNNYW5hZ2VyUmVzb2x2Q29uZk1hbmFnZXIgcmNfbWFuYWdlcikKKyAKKyBOTV9ERUZJTkVfU0lOR0xFVE9OX0dFVFRFUiAoTk1EbnNNYW5hZ2VyLCBubV9kbnNfbWFuYWdlcl9nZXQsIE5NX1RZUEVfRE5TX01BTkFHRVIpOworIAorK3N0YXRpYyBnYm9vbGVhbgorK19yZXNvbHZjb25mX3Jlc29sdmVkX21hbmFnZWQgKHZvaWQpCisreworKwlzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcmVzb2x2ZWRfcGF0aHNbXSA9IHsKKysJCSIvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiIsCisrCQkiL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKKysJCSIvdXNyL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKKysJfTsKKysJR0ZpbGUgKmY7CisrCUdGaWxlSW5mbyAqaW5mbzsKKysJZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisrCisrCWYgPSBnX2ZpbGVfbmV3X2Zvcl9wYXRoIChfUEFUSF9SRVNDT05GKTsKKysJaW5mbyA9IGdfZmlsZV9xdWVyeV9pbmZvIChmLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfSVNfU1lNTElOSyIsIlwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NZTUxJTktfVEFSR0VULAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgIEdfRklMRV9RVUVSWV9JTkZPX05PRk9MTE9XX1NZTUxJTktTLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworKworKwlpZiAoaW5mbyAmJiBnX2ZpbGVfaW5mb19nZXRfaXNfc3ltbGluayAoaW5mbykpIHsKKysJCXJldCA9IF9ubV91dGlsc19zdHJ2X2ZpbmRfZmlyc3QgKChnY2hhciAqKikgcmVzb2x2ZWRfcGF0aHMsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX05fRUxFTUVOVFMgKHJlc29sdmVkX3BhdGhzKSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZmlsZV9pbmZvX2dldF9zeW1saW5rX3RhcmdldCAoaW5mbykpID49IDA7CisrCX0KKysKKysJZ19jbGVhcl9vYmplY3QoJmluZm8pOworKwlnX2NsZWFyX29iamVjdCgmZik7CisrCisrCXJldHVybiByZXQ7CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5pdF9yZXNvbHZfY29uZl9tb2RlIChOTURuc01hbmFnZXIgKnNlbGYsIGdib29sZWFuIGZvcmNlX3JlbG9hZF9wbHVnaW4pCisgeworQEAgLTE2MzMsNyArMTY2NSwxNiBAQCBhZ2FpbjoKKyAKKyAJcmNfbWFuYWdlciA9IF9jaGVja19yZXNjb25mX2ltbXV0YWJsZSAocmNfbWFuYWdlcik7CisgCistCWlmIChubV9zdHJlcTAgKG1vZGUsICJkbnNtYXNxIikpIHsKKysJaWYgKCAgICghbW9kZSAmJiBfcmVzb2x2Y29uZl9yZXNvbHZlZF9tYW5hZ2VkICgpKQorKwkgICAgfHwgbm1fc3RyZXEwIChtb2RlLCAic3lzdGVtZC1yZXNvbHZlZCIpKSB7CisrCQlpZiAoICAgZm9yY2VfcmVsb2FkX3BsdWdpbgorKwkJICAgIHx8ICFOTV9JU19ETlNfU1lTVEVNRF9SRVNPTFZFRCAocHJpdi0+cGx1Z2luKSkgeworKwkJCV9jbGVhcl9wbHVnaW4gKHNlbGYpOworKwkJCXByaXYtPnBsdWdpbiA9IG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX25ldyAoKTsKKysJCQlwbHVnaW5fY2hhbmdlZCA9IFRSVUU7CisrCQl9CisrCQltb2RlID0gInN5c3RlbWQtcmVzb2x2ZWQiOworKwl9IGVsc2UgaWYgKG5tX3N0cmVxMCAobW9kZSwgImRuc21hc3EiKSkgeworIAkJaWYgKGZvcmNlX3JlbG9hZF9wbHVnaW4gfHwgIU5NX0lTX0ROU19ETlNNQVNRIChwcml2LT5wbHVnaW4pKSB7CisgCQkJX2NsZWFyX3BsdWdpbiAoc2VsZik7CisgCQkJcHJpdi0+cGx1Z2luID0gbm1fZG5zX2Ruc21hc3FfbmV3ICgpOworZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5jIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42YmRkNWY2CistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYworQEAgLTAsMCArMSw0MjcgQEAKKysvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRlbnQtdGFicy1tb2RlOiB0OyBjLWJhc2ljLW9mZnNldDogNCAtKi0gKi8KKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxMCBEYW4gV2lsbGlhbXMgPGRjYndAcmVkaGF0LmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisrICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKysgKgorKyAqLworKworKyNpbmNsdWRlICJubS1kZWZhdWx0LmgiCisrCisrI2luY2x1ZGUgIm5tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgiCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxsaW51eC9pZi5oPgorKworKyNpbmNsdWRlICJubS1jb3JlLWludGVybmFsLmgiCisrI2luY2x1ZGUgIm5tLXBsYXRmb3JtLmgiCisrI2luY2x1ZGUgIm5tLXV0aWxzLmgiCisrI2luY2x1ZGUgIm5tLWlwNC1jb25maWcuaCIKKysjaW5jbHVkZSAibm0taXA2LWNvbmZpZy5oIgorKyNpbmNsdWRlICJubS1idXMtbWFuYWdlci5oIgorKyNpbmNsdWRlICJubS1tYW5hZ2VyLmgiCisrI2luY2x1ZGUgIm5tLWRldmljZS5oIgorKyNpbmNsdWRlICJOZXR3b3JrTWFuYWdlclV0aWxzLmgiCisrCisrR19ERUZJTkVfVFlQRSAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQsIG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkLCBOTV9UWVBFX0ROU19QTFVHSU4pCisrCisrI2RlZmluZSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURShvKSBcCisrICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgobyksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIFwKKysgICAgTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlKSkKKysKKysjZGVmaW5lIFNZU1RFTURfUkVTT0xWRURfREJVU19TRVJWSUNFICJvcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEiCisrI2RlZmluZSBTWVNURU1EX1JFU09MVkVEX0RCVVNfUEFUSCAiL29yZy9mcmVlZGVza3RvcC9yZXNvbHZlMSIKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCWludCBpZmluZGV4OworKwlHTGlzdCAqY29uZmlnczsKKyt9IEludGVyZmFjZUNvbmZpZzsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCUdEQnVzUHJveHkgKnJlc29sdmU7CisrCUdDYW5jZWxsYWJsZSAqaW5pdF9jYW5jZWxsYWJsZTsKKysJR0NhbmNlbGxhYmxlICp1cGRhdGVfY2FuY2VsbGFibGU7CisrCUdRdWV1ZSBkbnNfdXBkYXRlczsKKysJR1F1ZXVlIGRvbWFpbl91cGRhdGVzOworK30gTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlOworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIF9OTUxPR19ET01BSU4gICAgICAgICBMT0dEX0ROUworKyNkZWZpbmUgX05NTE9HX1BSRUZJWF9OQU1FICAgICJzeXN0ZW1kLXJlc29sdmVkIgorKyNkZWZpbmUgX05NTE9HKGxldmVsLCAuLi4pIFwKKysgICAgR19TVE1UX1NUQVJUIHsgXAorKyAgICAgICAgbm1fbG9nICgobGV2ZWwpLCBfTk1MT0dfRE9NQUlOLCBcCisrICAgICAgICAgICAgICAgICIlc1slcF06ICIgX05NX1VUSUxTX01BQ1JPX0ZJUlNUKF9fVkFfQVJHU19fKSwgXAorKyAgICAgICAgICAgICAgICBfTk1MT0dfUFJFRklYX05BTUUsIFwKKysgICAgICAgICAgICAgICAgKHNlbGYpIFwKKysgICAgICAgICAgICAgICAgX05NX1VUSUxTX01BQ1JPX1JFU1QoX19WQV9BUkdTX18pKTsgXAorKyAgICB9IEdfU1RNVF9FTkQKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RhdGljIHZvaWQKKytjYWxsX2RvbmUgKEdPYmplY3QgKnNvdXJjZSwgR0FzeW5jUmVzdWx0ICpyLCBncG9pbnRlciB1c2VyX2RhdGEpCisreworKwlHVmFyaWFudCAqdjsKKysJR0Vycm9yICplcnJvciA9IE5VTEw7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gKE5NRG5zU3lzdGVtZFJlc29sdmVkICopIHVzZXJfZGF0YTsKKysKKysJdiA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCAoR19EQlVTX1BST1hZIChzb3VyY2UpLCByLCAmZXJyb3IpOworKworKwlpZiAoZ19lcnJvcl9tYXRjaGVzIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQorKwkJcmV0dXJuOworKworKwlpZiAoZXJyb3IgIT0gTlVMTCkgeworKwkJX0xPR1cgKCJGYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisrCQlnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKysJfQorK30KKysKKytzdGF0aWMgdm9pZAorK2FkZF9pbnRlcmZhY2VfY29uZmlndXJhdGlvbiAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXJyYXkgKmludGVyZmFjZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOTURuc0lQQ29uZmlnRGF0YSAqZGF0YSkKKyt7CisrCWludCBpOworKwlJbnRlcmZhY2VDb25maWcgKmljID0gTlVMTDsKKysJaW50IGlmaW5kZXg7CisrCU5NRGV2aWNlICpkZXZpY2U7CisrCisrCWlmIChOTV9JU19JUDRfQ09ORklHIChkYXRhLT5jb25maWcpKQorKwkJaWZpbmRleCA9IG5tX2lwNF9jb25maWdfZ2V0X2lmaW5kZXggKGRhdGEtPmNvbmZpZyk7CisrCWVsc2UgaWYgKE5NX0lTX0lQNl9DT05GSUcgIChkYXRhLT5jb25maWcpKQorKwkJaWZpbmRleCA9IG5tX2lwNl9jb25maWdfZ2V0X2lmaW5kZXggKGRhdGEtPmNvbmZpZyk7CisrCWVsc2UKKysJCWdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7CisrCisrCWRldmljZSA9IG5tX21hbmFnZXJfZ2V0X2RldmljZV9ieV9pZmluZGV4IChubV9tYW5hZ2VyX2dldCAoKSwgaWZpbmRleCk7CisrCisrCWlmICghbm1fZGV2aWNlX2dldF9tYW5hZ2VkIChkZXZpY2UsIEZBTFNFKSkKKysJCXJldHVybjsKKysKKysJZm9yIChpID0gMDsgaSA8IGludGVyZmFjZXMtPmxlbjsgaSsrKSB7CisrCQlJbnRlcmZhY2VDb25maWcgKnRpYyA9ICZnX2FycmF5X2luZGV4IChpbnRlcmZhY2VzLCBJbnRlcmZhY2VDb25maWcsIGkpOworKwkJaWYgKGlmaW5kZXggPT0gdGljLT5pZmluZGV4KSB7CisrCQkJaWMgPSB0aWM7CisrCQkJYnJlYWs7CisrCQl9CisrCX0KKysKKysJaWYgKCFpYykgeworKwkJZ19hcnJheV9zZXRfc2l6ZSAoaW50ZXJmYWNlcywgaW50ZXJmYWNlcy0+bGVuICsgMSk7CisrCQlpYyA9ICZnX2FycmF5X2luZGV4IChpbnRlcmZhY2VzLCBJbnRlcmZhY2VDb25maWcsCisrCQkgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VzLT5sZW4gLSAxKTsKKysJCWljLT5pZmluZGV4ID0gaWZpbmRleDsKKysJfQorKworKwlpYy0+Y29uZmlncyA9IGdfbGlzdF9hcHBlbmQgKGljLT5jb25maWdzLCBkYXRhLT5jb25maWcpOworK30KKysKKytzdGF0aWMgdm9pZAorK2FkZF9kb21haW4gKEdWYXJpYW50QnVpbGRlciAqZG9tYWlucywKKysgICAgICAgICAgICBjb25zdCBjaGFyICpkb21haW4sCisrICAgICAgICAgICAgZ2Jvb2xlYW4gbmV2ZXJfZGVmYXVsdCkKKyt7CisrCS8qIElmIHRoaXMgbGluayBpcyBuZXZlciB0aGUgZGVmYXVsdCAoZS5nLiBvbmx5IHVzZWQgZm9yIHJlc291cmNlcyBvbiB0aGlzCisrCSAqIG5ldHdvcmspIGFkZCBhIHJvdXRpbmcgZG9tYWluLiAqLworKwlnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGRvbWFpbnMsICIoc2IpIiwgZG9tYWluLCBuZXZlcl9kZWZhdWx0KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKyt1cGRhdGVfYWRkX2lwNl9jb25maWcgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmLAorKyAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpkbnMsCisrICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgKmRvbWFpbnMsCisrICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOTUlQNkNvbmZpZyAqY29uZmlnKQorK3sKKysJZ3VpbnQgaSwgbjsKKysKKysJbiA9IG5tX2lwNl9jb25maWdfZ2V0X251bV9uYW1lc2VydmVycyAoY29uZmlnKTsKKysJZm9yIChpID0gMCA7IGkgPCBuOyBpKyspIHsKKysJCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA7CisrCisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuIChkbnMsIEdfVkFSSUFOVF9UWVBFICgiKGlheSkiKSk7CisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGRucywgImkiLCBBRl9JTkVUNik7CisrCQlpcCA9IG5tX2lwNl9jb25maWdfZ2V0X25hbWVzZXJ2ZXIgKGNvbmZpZywgaSksCisrCisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGRfdmFsdWUgKGRucywgZ192YXJpYW50X25ld19maXhlZF9hcnJheSAoR19WQVJJQU5UX1RZUEVfQllURSwgaXAsIDE2LCAxKSk7CisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoZG5zKTsKKysJfQorKworKwluID0gbm1faXA2X2NvbmZpZ19nZXRfbnVtX3NlYXJjaGVzIChjb25maWcpOworKwlpZiAobiA+IDApIHsKKysJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKysJCQlhZGRfZG9tYWluIChkb21haW5zLCBubV9pcDZfY29uZmlnX2dldF9zZWFyY2ggKGNvbmZpZywgaSksCisrCQkJICAgICAgICAgICAgbm1faXA2X2NvbmZpZ19nZXRfbmV2ZXJfZGVmYXVsdCAoY29uZmlnKSk7CisrCQl9CisrCX0gZWxzZSB7CisrCQluID0gbm1faXA2X2NvbmZpZ19nZXRfbnVtX2RvbWFpbnMgKGNvbmZpZyk7CisrCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisrCQkJYWRkX2RvbWFpbiAoZG9tYWlucywgbm1faXA2X2NvbmZpZ19nZXRfZG9tYWluIChjb25maWcsIGkpLAorKwkJCSAgICAgICAgICAgIG5tX2lwNl9jb25maWdfZ2V0X25ldmVyX2RlZmF1bHQgKGNvbmZpZykpOworKwkJfQorKwl9CisrfQorKworK3N0YXRpYyB2b2lkCisrdXBkYXRlX2FkZF9pcDRfY29uZmlnIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiwKKysgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAqZG5zLAorKyAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpkb21haW5zLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTk1JUDRDb25maWcgKmNvbmZpZykKKyt7CisrCWd1aW50IGksIG47CisrCisrCW4gPSBubV9pcDRfY29uZmlnX2dldF9udW1fbmFtZXNlcnZlcnMgKGNvbmZpZyk7CisrCWZvciAoaSA9IDAgOyBpIDwgbjsgaSsrKSB7CisrCQlndWludDMyIG5zOworKworKwkJZ192YXJpYW50X2J1aWxkZXJfb3BlbiAoZG5zLCBHX1ZBUklBTlRfVFlQRSAoIihpYXkpIikpOworKwkJZ192YXJpYW50X2J1aWxkZXJfYWRkIChkbnMsICJpIiwgQUZfSU5FVCk7CisrCQlucyA9IG5tX2lwNF9jb25maWdfZ2V0X25hbWVzZXJ2ZXIgKGNvbmZpZywgaSksCisrCisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGRfdmFsdWUgKGRucywgZ192YXJpYW50X25ld19maXhlZF9hcnJheSAoR19WQVJJQU5UX1RZUEVfQllURSwgJm5zLCA0LCAxKSk7CisrCQlnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoZG5zKTsKKysJfQorKworKwluID0gbm1faXA0X2NvbmZpZ19nZXRfbnVtX3NlYXJjaGVzIChjb25maWcpOworKwlpZiAobiAgPiAwKSB7CisrCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisrCQkJYWRkX2RvbWFpbiAoZG9tYWlucywgbm1faXA0X2NvbmZpZ19nZXRfc2VhcmNoIChjb25maWcsIGkpLAorKwkJCSAgICAgICAgICAgIG5tX2lwNF9jb25maWdfZ2V0X25ldmVyX2RlZmF1bHQgKGNvbmZpZykpOworKwkJfQorKwl9IGVsc2UgeworKwkJbiA9IG5tX2lwNF9jb25maWdfZ2V0X251bV9kb21haW5zIChjb25maWcpOworKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworKwkJCWFkZF9kb21haW4gKGRvbWFpbnMsIG5tX2lwNF9jb25maWdfZ2V0X2RvbWFpbiAoY29uZmlnLCBpKSwKKysJCQkgICAgICAgICAgICBubV9pcDRfY29uZmlnX2dldF9uZXZlcl9kZWZhdWx0IChjb25maWcpKTsKKysJCX0KKysJfQorK30KKysKKytzdGF0aWMgdm9pZAorK2ZyZWVfcGVuZGluZ191cGRhdGVzIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZikKKyt7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKKysJR1ZhcmlhbnQgKnY7CisrCisrCXdoaWxlICgodiA9IGdfcXVldWVfcG9wX2hlYWQgKCZwcml2LT5kbnNfdXBkYXRlcykpICE9IE5VTEwpCisrCQlnX3ZhcmlhbnRfdW5yZWYgKHYpOworKworKwl3aGlsZSAoKHYgPSBnX3F1ZXVlX3BvcF9oZWFkICgmcHJpdi0+ZG9tYWluX3VwZGF0ZXMpKSAhPSBOVUxMKQorKwkJZ192YXJpYW50X3VucmVmICh2KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytwcmVwYXJlX29uZV9pbnRlcmZhY2UgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmLCBJbnRlcmZhY2VDb25maWcgKmljKQorK3sKKysJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOworKwlHVmFyaWFudEJ1aWxkZXIgZG5zLCBkb21haW5zOworKwlHTGlzdCAqbDsKKysKKysJZ192YXJpYW50X2J1aWxkZXJfaW5pdCAoJmRucywgR19WQVJJQU5UX1RZUEUgKCIoaWEoaWF5KSkiKSk7CisrCWdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmRucywgImkiLCBpYy0+aWZpbmRleCk7CisrCWdfdmFyaWFudF9idWlsZGVyX29wZW4gKCZkbnMsIEdfVkFSSUFOVF9UWVBFICgiYShpYXkpIikpOworKworKwlnX3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmZG9tYWlucywgR19WQVJJQU5UX1RZUEUgKCIoaWEoc2IpKSIpKTsKKysJZ192YXJpYW50X2J1aWxkZXJfYWRkICgmZG9tYWlucywgImkiLCBpYy0+aWZpbmRleCk7CisrCWdfdmFyaWFudF9idWlsZGVyX29wZW4gKCZkb21haW5zLCBHX1ZBUklBTlRfVFlQRSAoImEoc2IpIikpOworKworKwlmb3IgKGwgPSBpYy0+Y29uZmlncyA7IGwgIT0gTlVMTCA7IGwgPSBnX2xpc3RfbmV4dCAobCkpIHsKKysJCWlmIChOTV9JU19JUDRfQ09ORklHIChsLT5kYXRhKSkKKysJCQl1cGRhdGVfYWRkX2lwNF9jb25maWcgKHNlbGYsICZkbnMsICZkb21haW5zLCBsLT5kYXRhKTsKKysJCWVsc2UgaWYgKE5NX0lTX0lQNl9DT05GSUcgKGwtPmRhdGEpKQorKwkJCXVwZGF0ZV9hZGRfaXA2X2NvbmZpZyAoc2VsZiwgJmRucywgJmRvbWFpbnMsIGwtPmRhdGEpOworKwkJZWxzZQorKwkJCWdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworKwl9CisrCWdfdmFyaWFudF9idWlsZGVyX2Nsb3NlICgmZG5zKTsKKysJZ192YXJpYW50X2J1aWxkZXJfY2xvc2UgKCZkb21haW5zKTsKKysKKysJZ19xdWV1ZV9wdXNoX3RhaWwgKCZwcml2LT5kbnNfdXBkYXRlcywKKysJICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9yZWZfc2luayAoZ192YXJpYW50X2J1aWxkZXJfZW5kICgmZG5zKSkpOworKwlnX3F1ZXVlX3B1c2hfdGFpbCAoJnByaXYtPmRvbWFpbl91cGRhdGVzLAorKwkgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X3JlZl9zaW5rIChnX3ZhcmlhbnRfYnVpbGRlcl9lbmQgKCZkb21haW5zKSkpOworK30KKysKKytzdGF0aWMgdm9pZAorK3NlbmRfdXBkYXRlcyAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7CisrCUdWYXJpYW50ICp2OworKworKwlubV9jbGVhcl9nX2NhbmNlbGxhYmxlICgmcHJpdi0+dXBkYXRlX2NhbmNlbGxhYmxlKTsKKysKKysJaWYgKCFwcml2LT5yZXNvbHZlKQorKwkJcmV0dXJuOworKworKwlwcml2LT51cGRhdGVfY2FuY2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldyAoKTsKKysKKysJd2hpbGUgKCh2ID0gZ19xdWV1ZV9wb3BfaGVhZCAoJnByaXYtPmRuc191cGRhdGVzKSkgIT0gTlVMTCkgeworKwkJZ19kYnVzX3Byb3h5X2NhbGwgKHByaXYtPnJlc29sdmUsICJTZXRMaW5rRE5TIiwgdiwKKysJCSAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorKwkJICAgICAgICAgICAgICAgICAgIC0xLCBwcml2LT51cGRhdGVfY2FuY2VsbGFibGUsIGNhbGxfZG9uZSwgc2VsZik7CisrCQlnX3ZhcmlhbnRfdW5yZWYgKHYpOworKwl9CisrCisrCXdoaWxlICgodiA9IGdfcXVldWVfcG9wX2hlYWQgKCZwcml2LT5kb21haW5fdXBkYXRlcykpICE9IE5VTEwpIHsKKysJCWdfZGJ1c19wcm94eV9jYWxsIChwcml2LT5yZXNvbHZlLCAiU2V0TGlua0RvbWFpbnMiLCB2LAorKwkJICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisrCQkgICAgICAgICAgICAgICAgICAgLTEsIHByaXYtPnVwZGF0ZV9jYW5jZWxsYWJsZSwgY2FsbF9kb25lLCBzZWxmKTsKKysJCWdfdmFyaWFudF91bnJlZiAodik7CisrCX0KKyt9CisrCisrc3RhdGljIGdib29sZWFuCisrdXBkYXRlIChOTURuc1BsdWdpbiAqcGx1Z2luLAorKyAgICAgICAgY29uc3QgTk1EbnNJUENvbmZpZ0RhdGEgKipjb25maWdzLAorKyAgICAgICAgY29uc3QgTk1HbG9iYWxEbnNDb25maWcgKmdsb2JhbF9jb25maWcsCisrICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSkKKyt7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQgKHBsdWdpbik7CisrCUdBcnJheSAqaW50ZXJmYWNlcyA9IGdfYXJyYXlfbmV3IChUUlVFLCBUUlVFLCBzaXplb2YgKEludGVyZmFjZUNvbmZpZykpOworKwljb25zdCBOTURuc0lQQ29uZmlnRGF0YSAqKmM7CisrCWludCBpOworKworKwlmb3IgKGMgPSBjb25maWdzOyAqYyAhPSBOVUxMOyBjKyspCisrCQlhZGRfaW50ZXJmYWNlX2NvbmZpZ3VyYXRpb24gKHNlbGYsIGludGVyZmFjZXMsICpjKTsKKysKKysJZnJlZV9wZW5kaW5nX3VwZGF0ZXMgKHNlbGYpOworKworKwlmb3IgKGkgPSAwOyBpIDwgaW50ZXJmYWNlcy0+bGVuOyBpKyspIHsKKysJCUludGVyZmFjZUNvbmZpZyAqaWMgPSAmZ19hcnJheV9pbmRleCAoaW50ZXJmYWNlcywgSW50ZXJmYWNlQ29uZmlnLCBpKTsKKysKKysJCXByZXBhcmVfb25lX2ludGVyZmFjZSAoc2VsZiwgaWMpOworKwkJZ19saXN0X2ZyZWUgKGljLT5jb25maWdzKTsKKysJfQorKworKwlnX2FycmF5X2ZyZWUgKGludGVyZmFjZXMsIFRSVUUpOworKworKwlzZW5kX3VwZGF0ZXMgKHNlbGYpOworKworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RhdGljIGdib29sZWFuCisraXNfY2FjaGluZyAoTk1EbnNQbHVnaW4gKnBsdWdpbikKKyt7CisrCXJldHVybiBUUlVFOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqCisrZ2V0X25hbWUgKE5NRG5zUGx1Z2luICpwbHVnaW4pCisreworKwlyZXR1cm4gInN5c3RlbWQtcmVzb2x2ZWQiOworK30KKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKytOTURuc1BsdWdpbiAqCisrbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfbmV3ICh2b2lkKQorK3sKKysJcmV0dXJuIGdfb2JqZWN0X25ldyAoTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCwgTlVMTCk7CisrfQorKworK3N0YXRpYyB2b2lkCisrcmVzb2x2ZWRfcHJveHlfY3JlYXRlZCAoR09iamVjdCAqc291cmNlLCBHQXN5bmNSZXN1bHQgKnIsIGdwb2ludGVyIHVzZXJfZGF0YSkKKyt7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gKE5NRG5zU3lzdGVtZFJlc29sdmVkICopIHVzZXJfZGF0YTsKKysJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2OworKwlnc19mcmVlX2Vycm9yIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlHREJ1c1Byb3h5ICpyZXNvbHZlOworKworKwlyZXNvbHZlID0gZ19kYnVzX3Byb3h5X25ld19maW5pc2ggKHIsICZlcnJvcik7CisrCWlmICggICAhcmVzb2x2ZQorKwkgICAgJiYgZ19lcnJvcl9tYXRjaGVzIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQorKwkJcmV0dXJuOworKworKwlwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOworKwlnX2NsZWFyX29iamVjdCAoJnByaXYtPmluaXRfY2FuY2VsbGFibGUpOworKwlpZiAoIXJlc29sdmUpIHsKKysJCV9MT0dXICgiZmFpbGVkIHRvIGNvbm5lY3QgdG8gcmVzb2x2ZWQgdmlhIERCdXM6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworKwkJZ19zaWduYWxfZW1pdF9ieV9uYW1lIChzZWxmLCBOTV9ETlNfUExVR0lOX0ZBSUxFRCk7CisrCQlyZXR1cm47CisrCX0KKysKKysJcHJpdi0+cmVzb2x2ZSA9IHJlc29sdmU7CisrCXNlbmRfdXBkYXRlcyAoc2VsZik7CisrfQorKworKworK3N0YXRpYyB2b2lkCisrbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfaW5pdCAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7CisrCU5NQnVzTWFuYWdlciAqZGJ1c19tZ3I7CisrCUdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsKKysKKysJZ19xdWV1ZV9pbml0ICgmcHJpdi0+ZG5zX3VwZGF0ZXMpOworKwlnX3F1ZXVlX2luaXQgKCZwcml2LT5kb21haW5fdXBkYXRlcyk7CisrCisrCWRidXNfbWdyID0gbm1fYnVzX21hbmFnZXJfZ2V0ICgpOworKwlnX3JldHVybl9pZl9mYWlsIChkYnVzX21ncik7CisrCisrCWNvbm5lY3Rpb24gPSBubV9idXNfbWFuYWdlcl9nZXRfY29ubmVjdGlvbiAoZGJ1c19tZ3IpOworKwlnX3JldHVybl9pZl9mYWlsIChjb25uZWN0aW9uKTsKKysKKysJcHJpdi0+aW5pdF9jYW5jZWxsYWJsZSA9IGdfY2FuY2VsbGFibGVfbmV3ICgpOworKwlnX2RidXNfcHJveHlfbmV3IChjb25uZWN0aW9uLAorKwkgICAgICAgICAgICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0xPQURfUFJPUEVSVElFUyB8CisrCSAgICAgICAgICAgICAgICAgIEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfQ09OTkVDVF9TSUdOQUxTLAorKwkgICAgICAgICAgICAgICAgICBOVUxMLAorKwkgICAgICAgICAgICAgICAgICBTWVNURU1EX1JFU09MVkVEX0RCVVNfU0VSVklDRSwKKysJICAgICAgICAgICAgICAgICAgU1lTVEVNRF9SRVNPTFZFRF9EQlVTX1BBVEgsCisrCSAgICAgICAgICAgICAgICAgIFNZU1RFTURfUkVTT0xWRURfREJVU19TRVJWSUNFICIuTWFuYWdlciIsCisrCSAgICAgICAgICAgICAgICAgIHByaXYtPmluaXRfY2FuY2VsbGFibGUsCisrCSAgICAgICAgICAgICAgICAgIHJlc29sdmVkX3Byb3h5X2NyZWF0ZWQsCisrCSAgICAgICAgICAgICAgICAgIHNlbGYpOworK30KKysKKytzdGF0aWMgdm9pZAorK2Rpc3Bvc2UgKEdPYmplY3QgKm9iamVjdCkKKyt7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQgKG9iamVjdCk7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKKysKKysJZnJlZV9wZW5kaW5nX3VwZGF0ZXMgKHNlbGYpOworKwlnX2NsZWFyX29iamVjdCAoJnByaXYtPnJlc29sdmUpOworKwlubV9jbGVhcl9nX2NhbmNlbGxhYmxlICgmcHJpdi0+aW5pdF9jYW5jZWxsYWJsZSk7CisrCW5tX2NsZWFyX2dfY2FuY2VsbGFibGUgKCZwcml2LT51cGRhdGVfY2FuY2VsbGFibGUpOworKworKwlHX09CSkVDVF9DTEFTUyAobm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZSAob2JqZWN0KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytubV9kbnNfc3lzdGVtZF9yZXNvbHZlZF9jbGFzc19pbml0IChOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzICpkbnNfY2xhc3MpCisreworKwlOTURuc1BsdWdpbkNsYXNzICpwbHVnaW5fY2xhc3MgPSBOTV9ETlNfUExVR0lOX0NMQVNTIChkbnNfY2xhc3MpOworKwlHT2JqZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChkbnNfY2xhc3MpOworKworKwlnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGRuc19jbGFzcywgc2l6ZW9mIChOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUpKTsKKysKKysJb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZGlzcG9zZTsKKysKKysJcGx1Z2luX2NsYXNzLT5pc19jYWNoaW5nID0gaXNfY2FjaGluZzsKKysJcGx1Z2luX2NsYXNzLT51cGRhdGUgPSB1cGRhdGU7CisrCXBsdWdpbl9jbGFzcy0+Z2V0X25hbWUgPSBnZXRfbmFtZTsKKyt9CisrCitkaWZmIC0tZ2l0IGEvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmggYi9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ1YzY0YjMKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oCitAQCAtMCwwICsxLDQ1IEBACisrLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogdDsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotICovCisrLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisrICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKysgKgorKyAqIENvcHlyaWdodCAoQykgMjAxMCBSZWQgSGF0LCBJbmMuCisrICogQ29weXJpZ2h0IChDKSAyMDE2IFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KKysgKi8KKysKKysjaWZuZGVmIF9fTkVUV09SS01BTkFHRVJfRE5TX1NZU1RFTURfUkVTT0xWRURfSF9fCisrI2RlZmluZSBfX05FVFdPUktNQU5BR0VSX0ROU19TWVNURU1EX1JFU09MVkVEX0hfXworKworKyNpbmNsdWRlICJubS1kbnMtcGx1Z2luLmgiCisrCisrI2RlZmluZSBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVEICAgICAgICAgICAgKG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX2dldF90eXBlICgpKQorKyNkZWZpbmUgTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIE5NRG5zU3lzdGVtZFJlc29sdmVkKSkKKysjZGVmaW5lIE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIE5NRG5zU3lzdGVtZFJlc29sdmVkQ2xhc3MpKQorKyNkZWZpbmUgTk1fSVNfRE5TX1NZU1RFTURfUkVTT0xWRUQob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQpKQorKyNkZWZpbmUgTk1fSVNfRE5TX1NZU1RFTURfUkVTT0xWRURfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCkpCisrI2RlZmluZSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVELCBOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzKSkKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCU5NRG5zUGx1Z2luIHBhcmVudDsKKyt9IE5NRG5zU3lzdGVtZFJlc29sdmVkOworKworK3R5cGVkZWYgc3RydWN0IHsKKysJTk1EbnNQbHVnaW5DbGFzcyBwYXJlbnQ7CisrfSBOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzOworKworK0dUeXBlIG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX2dldF90eXBlICh2b2lkKTsKKysKKytOTURuc1BsdWdpbiAqbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfbmV3ICh2b2lkKTsKKysKKysjZW5kaWYgLyogX19ORVRXT1JLTUFOQUdFUl9ETlNfU1lTVEVNRF9SRVNPTFZFRF9IX18gKi8KKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFsc28tY2hlY2stZm9yLWV0Yy1yZXNvbHYtY29uZi5zeXN0ZW1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWxzby1jaGVjay1mb3ItZXRjLXJlc29sdi1jb25mLnN5c3RlbWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E3ZTRhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFsc28tY2hlY2stZm9yLWV0Yy1yZXNvbHYtY29uZi5zeXN0ZW1kLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNmY3OTlmMWYwZTY4Y2M3YmY4OWMwYTU2YWVjNWVjZjQ2OTM3NjE5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gU2FsdmV0aSA8cnNhbHZldGlAcnNhbHZldGkubmV0PgorRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMDowMjozOCAtMDMwMAorU3ViamVjdDogW1BBVENIXSBkbnMvcmVzb2x2ZWQ6IGFsc28gY2hlY2sgZm9yIC9ldGMvcmVzb2x2LWNvbmYuc3lzdGVtZAorCitPRSBzcGVjaWZpYyByZXNvbHYuY29uZiBwYXRoLCBzbyBpdCBjYW4gYmUgZW5hYmxlZCBieSBkZWZhdWx0IGlmIGF2YWlsYWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gU2FsdmV0aSA8cnNhbHZldGlAcnNhbHZldGkubmV0PgorLS0tCisgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKK2luZGV4IGMxZDJiZjcuLmQ3MGQ0YjQgMTAwNjQ0CistLS0gYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYworKysrIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKK0BAIC0xNTk2LDYgKzE1OTYsNyBAQCBfcmVzb2x2Y29uZl9yZXNvbHZlZF9tYW5hZ2VkICh2b2lkKQorIAkJIi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIiwKKyAJCSIvbGliL3N5c3RlbWQvcmVzb2x2LmNvbmYiLAorIAkJIi91c3IvbGliL3N5c3RlbWQvcmVzb2x2LmNvbmYiLAorKwkJIi9ldGMvcmVzb2x2LWNvbmYuc3lzdGVtZCIsCisgCX07CisgCUdGaWxlICpmOworIAlHRmlsZUluZm8gKmluZm87CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1zYmluLWRoY2xpZW50LXRvLWdldC10aGUtdmVyc2lvbi1udS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zeXN0ZW1kLXhsb2NhbGUuaC1pcy1kcm9wcGVkLWJ5LW5ld2VyLWdsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zeXN0ZW1kLXhsb2NhbGUuaC1pcy1kcm9wcGVkLWJ5LW5ld2VyLWdsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMzRlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLXN5c3RlbWQteGxvY2FsZS5oLWlzLWRyb3BwZWQtYnktbmV3ZXItZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBhOWJmZTZmMjAyOWQ3NWNhZjI4ZmNkZjNlNzQwODQzY2Y2MzU5NjE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDc6MzE6MjUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHN5c3RlbWQ6IHhsb2NhbGUuaCBpcyBkcm9wcGVkIGJ5IG5ld2VyIGdsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworaW5kZXggOWMyMWU1YS4uZGQ5NWQxZiAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK0BAIC0yNSwxMSArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2lmZGVmIF9fR0xJQkNfXworLSNpbmNsdWRlIDx4bG9jYWxlLmg+CistI2Vsc2UKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CistI2VuZGlmCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiZXh0cmFjdC13b3JkLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItRml4LW5tLXZlcnNpb24tbWFjcm8taW5jbHVkZXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItc29ja2V0LXV0aWwuaC1JbmNsdWRlLWxpbnV4LXNvY2tpb3MuaC1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMmI1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXVzZXItZm9ybWF0LXN0cmluZy1pbi1nX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm8ucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSBhZGMwNjY4Yjg1NDI4OWExMWNmYzI5NTk3YjU1NjZiYTE4NjlkMTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDc6MzI6MDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHVzZXIgZm9ybWF0IHN0cmluZyBpbiBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yICgpCisKK1RoaXMgZml4ZXMgZm9ybWF0IGVycm9ycyB3aXRoIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbm0tbWFuYWdlci5jIHwgNiArKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbm0tbWFuYWdlci5jIGIvc3JjL25tLW1hbmFnZXIuYworaW5kZXggYzNkNjVjZC4uZTgxNDkxMiAxMDA2NDQKKy0tLSBhL3NyYy9ubS1tYW5hZ2VyLmMKKysrKyBiL3NyYy9ubS1tYW5hZ2VyLmMKK0BAIC00ODcxLDYgKzQ4NzEsNyBAQCBwcm9wX3NldF9hdXRoX2RvbmVfY2IgKE5NQXV0aENoYWluICpjaGFpbiwKKyAJaWYgKGVycm9yIHx8IChyZXN1bHQgIT0gTk1fQVVUSF9DQUxMX1JFU1VMVF9ZRVMpKSB7CisgCQlyZXBseSA9IGdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyb3IgKHBmZC0+bWVzc2FnZSwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk1fUEVSTV9ERU5JRURfRVJST1IsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlID0gIk5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24iKSk7CisgCQlpZiAoZXJyb3IpCisgCQkJZXJyb3JfbWVzc2FnZSA9IGVycm9yLT5tZXNzYWdlOworQEAgLTQ4ODIsNiArNDg4Myw3IEBAIHByb3Bfc2V0X2F1dGhfZG9uZV9jYiAoTk1BdXRoQ2hhaW4gKmNoYWluLAorIAlpZiAoIW9iamVjdCkgeworIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5FcnJvci5Vbmtub3duT2JqZWN0IiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yX21lc3NhZ2UgPSAiT2JqZWN0IGRvZXNuJ3QgZXhpc3QuIikpOworIAkJZ290byBkb25lOworIAl9CitAQCAtNDg5MCw2ICs0ODkyLDcgQEAgcHJvcF9zZXRfYXV0aF9kb25lX2NiIChOTUF1dGhDaGFpbiAqY2hhaW4sCisgCWlmICghbm1fZXhwb3J0ZWRfb2JqZWN0X2dldF9pbnRlcmZhY2VfYnlfdHlwZSAob2JqZWN0LCBwZmQtPmludGVyZmFjZV90eXBlKSkgeworIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5FcnJvci5JbnZhbGlkQXJncyIsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlID0gIk9iamVjdCBpcyBvZiB1bmV4cGVjdGVkIHR5cGUuIikpOworIAkJZ290byBkb25lOworIAl9CitAQCAtNDkwNSw2ICs0OTA4LDcgQEAgcHJvcF9zZXRfYXV0aF9kb25lX2NiIChOTUF1dGhDaGFpbiAqY2hhaW4sCisgCQlpZiAoZ2xvYmFsX2RucyAmJiAhbm1fZ2xvYmFsX2Ruc19jb25maWdfaXNfaW50ZXJuYWwgKGdsb2JhbF9kbnMpKSB7CisgCQkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTV9QRVJNX0RFTklFRF9FUlJPUiwKKysJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCisgCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJHbG9iYWwgRE5TIGNvbmZpZ3VyYXRpb24gYWxyZWFkeSBzZXQgdmlhIGNvbmZpZ3VyYXRpb24gZmlsZSIpKTsKKyAJCQlnb3RvIGRvbmU7CisgCQl9CitAQCAtNDk0OSw2ICs0OTUzLDcgQEAgZG9fc2V0X3Byb3BlcnR5X2NoZWNrIChncG9pbnRlciB1c2VyX2RhdGEpCisgCWlmICghcGZkLT5zdWJqZWN0KSB7CisgCQlyZXBseSA9IGdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyb3IgKHBmZC0+bWVzc2FnZSwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk1fUEVSTV9ERU5JRURfRVJST1IsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlID0gIkNvdWxkIG5vdCBkZXRlcm1pbmUgcmVxdWVzdCBVSUQuIikpOworIAkJZ290byBvdXQ7CisgCX0KK0BAIC00OTU4LDYgKzQ5NjMsNyBAQCBkb19zZXRfcHJvcGVydHlfY2hlY2sgKGdwb2ludGVyIHVzZXJfZGF0YSkKKyAJaWYgKCFjaGFpbikgeworIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5NX1BFUk1fREVOSUVEX0VSUk9SLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJDb3VsZCBub3QgYXV0aGVudGljYXRlIHJlcXVlc3QuIikpOworIAkJZ290byBvdXQ7CisgCX0KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURlZmluZS1FVEhfQUxFTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1EZWZpbmUtRVRIX0FMRU4ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDQtRGVmaW5lLW1pc3NpbmctZmVhdHVyZXMtdG8tY2F0ZXItZm9yLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA1LXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS40LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmNDU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiCkBAIC0wLDAgKzEsMTM2IEBACitTVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9OZXR3b3JrTWFuYWdlciIKK1NFQ1RJT04gPSAibmV0L21pc2MiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZmZkNTY4MjI3YWRhNTA2NjQwZmU5NTBhNDgyM2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibm0tdXRpbC9DT1BZSU5HO21kNT0xYzRmYTc2NWQ2ZWIzY2QyZmJkODQzNDRhMWI4MTZjZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL2FwaS9odG1sL2xpY2Vuc2UuaHRtbDttZDU9OGViOGU3MmJhYjA5N2I5ZDExNzYzMDAyY2IwMDM2OTcgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJubCBcCisgICAgZGJ1cyBcCisgICAgZGJ1cy1nbGliIFwKKyAgICBkYnVzLWdsaWItbmF0aXZlIFwKKyAgICBsaWJndWRldiBcCisgICAgdXRpbC1saW51eCBcCisgICAgbGlibmRwIFwKKyAgICBsaWJuZXd0IFwKKyAgICBwb2xraXQgXAorICAgIGphbnNzb24gXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgYmx1ZXRvb3RoIGJhc2gtY29tcGxldGlvbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitHSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsID0gIkZhbHNlIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkanVzdC1uZXQtaGVhZGVycy1mb3ItbXVzbC1jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItc29ja2V0LXV0aWwuaC1JbmNsdWRlLWxpbnV4LXNvY2tpb3MuaC1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRGVmaW5lLW1pc3NpbmctZmVhdHVyZXMtdG8tY2F0ZXItZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRucy1yZXNvbHZlZC1hZGQtc3lzdGVtZC1yZXNvbHZlZC1iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZG5zLXJlc29sdmVkLWFsc28tY2hlY2stZm9yLWV0Yy1yZXNvbHYtY29uZi5zeXN0ZW1kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzdGVtZC14bG9jYWxlLmgtaXMtZHJvcHBlZC1ieS1uZXdlci1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZXItZm9ybWF0LXN0cmluZy1pbi1nX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm8ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjNmMWUwZDZkN2U5MDk5NDk5ZDA2MmM4NGM5MjdhNzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODI5Mzc4ZjMxOGNjMDA4ZDEzOGEyM2NhNmE5MTkxOTI4Y2U3NTM0NGU3ZTQ3YTJmMmMzNWY0YWM4MjEzMzMwOSIKKworUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtaWZjZmctcmggXAorICAgIC0tZGlzYWJsZS1pZm5ldCBcCisgICAgLS1kaXNhYmxlLWlmY2ZnLXN1c2UgXAorICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCisgICAgLS13aXRoLXRlc3RzIFwKKyAgICAtLXdpdGgtbm10dWk9eWVzIFwKKyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9saWJubS11dGlsLy5saWJzIgorfQorCitQQUNLQUdFQ09ORklHID8/PSAibnNzIGlmdXBkb3duIG5ldGNvbmZpZyBkaGNsaWVudCBkbnNtYXNxIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsIFwKKyAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiBcCisgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9c3lzdGVtZCAtLWVuYWJsZS1wb2xraXQsIFwKKyAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKKyAgICBwb2xraXQgXAorIgorUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgorIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCitQQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKK1BBQ0tBR0VDT05GSUdbY29uY2hlY2tdID0gIi0td2l0aC1saWJzb3VwPXllcywtLXdpdGgtbGlic291cD1ubyxsaWJzb3VwLTIuNCIKK1BBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgorIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQorUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgorUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCxnbnV0bHMiCitQQUNLQUdFQ09ORklHW3dpZmldID0gIi0tZW5hYmxlLXdpZmk9eWVzLC0tZW5hYmxlLXdpZmk9bm8sd2lyZWxlc3MtdG9vbHMsd3BhLXN1cHBsaWNhbnQgd2lyZWxlc3MtdG9vbHMiCitQQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCitQQUNLQUdFQ09ORklHW25ldGNvbmZpZ10gPSAiLS13aXRoLW5ldGNvbmZpZz15ZXMsLS13aXRoLW5ldGNvbmZpZz1ubyIKK1BBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgorCitQQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKKyAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKKyAgJHtQTn0tYWRzbCBcCisiCisKK0ZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKK0ZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKK0ZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgorCitGSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZXhlY2Rpcn0gXAorICAgICR7bGliZGlyfS9wcHBkLyovbm0tcHBwZC1wbHVnaW4uc28gXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtiYXNlX2xpYmRpcn0vdWRldi8qIFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImlwdGFibGVzIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnZG5zbWFzcScsIGQpfSBcCisiCitSQ09ORkxJQ1RTXyR7UE59ID0gImNvbm5tYW4iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKyAgICAke2RhdGFkaXJ9L05ldHdvcmtNYW5hZ2VyL2dkYi1jbWQgXAorICAgICR7bGliZGlyfS9wcHBkLyovKi5sYSBcCisgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEgXAorIgorCitGSUxFU18ke1BOfS1ubXR1aSA9ICIgXAorICAgICR7YmluZGlyfS9ubXR1aSBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWVkaXQgXAorICAgICR7YmluZGlyfS9ubXR1aS1jb25uZWN0IFwKKyAgICAke2JpbmRpcn0vbm10dWktaG9zdG5hbWUgXAorIgorCitGSUxFU18ke1BOfS1ubXR1aS1kb2MgPSAiIFwKKyAgICAke21hbmRpcn0vbWFuMS9ubXR1aSogXAorIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTmV0d29ya01hbmFnZXIuc2VydmljZSBOZXR3b3JrTWFuYWdlci1kaXNwYXRjaGVyLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0X2dpdC5iYgppbmRleCAzYTFmMGYzLi5jOTQ0MTQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3RfZ2l0LmJiCkBAIC0xNCw5ICsxNCw5IEBACiAjIG5vdCBjb25maWcgZGVmYXVsdHMKIFBBQ0tBR0VDT05GSUdbcGNzYy1saXRlXSA9ICItLXdpdGgtbGlicGNzY2xpdGUsLS13aXRob3V0LWxpYnBjc2NsaXRlLHBjc2MtbGl0ZSwiCiAKLVBWID0gIjcuMDYiCitQViA9ICI3LjA4IgogCi1TUkNSRVYgPSAiMzU1NDJkNTIyMDI2NzJiOGMxMmVjYzYzODY3NDMyMTI4MjQ0MDEzYSIKK1NSQ1JFViA9ICI5Njk3YmVhMGU1MDk1MmNhYjU3MDYzMjM4YjQzYTcwOTllNDk4Y2JiIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kd213Mi9vcGVuY29ubmVjdC5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbmV0d29ya21hbmFnZXIvcHl0aG9uLW5ldHdvcmttYW5hZ2VyXzIuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbi1uZXR3b3JrbWFuYWdlcl8yLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTQxYWE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbi1uZXR3b3JrbWFuYWdlcl8yLjAuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkVhc3kgY29tbXVuaWNhdGlvbiB3aXRoIE5ldHdvcmtNYW5hZ2VyIGZyb20gUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NldmVhcy9weXRob24tbmV0d29ya21hbmFnZXIiCitMSUNFTlNFID0gIlpsaWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThkOGJhYzE3NGJmODQyMmIxNTEyMDBlNmNjNzhlYmU0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWZjNjQ0YTY1NDYzMDMxMjk1YzZiN2RkNTFhMGYxYmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmMzNjUwNzUwNmFkMjliZmRhYzk0MWIwOTg3ZWJkMWNjOTYzM2M5YTkyOTFkNzM3OGUyMjllNDUxNWEwYTUxNyIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1uZXR3b3JrbWFuYWdlciIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ID0gIm5ldHdvcmttYW5hZ2VyIHB5dGhvbi1kYnVzIHB5dGhvbi1zaXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZS8wMDAxLXJkYXRlLWRlZmluZS1sb2d3dG1wLW9uLWxpYmMtZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZS8wMDAxLXJkYXRlLWRlZmluZS1sb2d3dG1wLW9uLWxpYmMtZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhiYTJjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlLzAwMDEtcmRhdGUtZGVmaW5lLWxvZ3d0bXAtb24tbGliYy1nbGliYy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGUwYzY5MGFjZmNkZGQzYzM0MjFmNmViMDE4MmM1NDgxNWZkNzBmOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAyMzoyMTowOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSByZGF0ZTogZGVmaW5lIGxvZ3d0bXAgb24gbGliYyAhPSBnbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3JkYXRlLmMgfCAxNSArKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3JkYXRlLmMgYi9zcmMvcmRhdGUuYworaW5kZXggOTQzZDQ4MS4uNjg1YjFiOCAxMDA2NDQKKy0tLSBhL3NyYy9yZGF0ZS5jCisrKysgYi9zcmMvcmRhdGUuYworQEAgLTQxLDcgKzQxLDIyIEBAIHN0YXRpYyBpbnQgcHJpbnRfbW9kZSA9IDA7CQkvLyBkaXNwbGF5IHRoZSB0aW1lCisgc3RhdGljIGludCB0aW1lb3V0ID0gMTA7CQkvLyB0aW1lb3V0IGZvciBlYWNoIGNvbm5lY3Rpb24gYXR0ZW1wdAorIHN0YXRpYyBjaGFyICpzZXJ2aWNlID0gREVGQVVMVF9TRVJWSUNFOworIAorKyNpZm5kZWYgX19HTElCQ19fCisrc3RhdGljIHZvaWQgbG9nd3RtcChjb25zdCBjaGFyICogbGluZSwgY29uc3QgY2hhciAqIG5hbWUsIGNvbnN0IGNoYXIgKiBob3N0KQorK3sKKysgICAgc3RydWN0IHV0bXAgdTsKKysgICAgbWVtc2V0KCZ1LCAwLCBzaXplb2YodSkpOworKworKyAgICB1LnV0X3BpZCA9IGdldHBpZCgpOworKyAgICB1LnV0X3R5cGUgPSBuYW1lWzBdID8gVVNFUl9QUk9DRVNTIDogREVBRF9QUk9DRVNTOworKyAgICBzdHJuY3B5KHUudXRfbGluZSwgbGluZSwgc2l6ZW9mKHUudXRfbGluZSkpOworKyAgICBzdHJuY3B5KHUudXRfbmFtZSwgbmFtZSwgc2l6ZW9mKHUudXRfbmFtZSkpOworKyAgICBzdHJuY3B5KHUudXRfaG9zdCwgaG9zdCwgc2l6ZW9mKHUudXRfaG9zdCkpOworKyAgICBnZXR0aW1lb2ZkYXkoJih1LnV0X3R2KSwgTlVMTCk7CisgCisrICAgIHVwZHd0bXAoX1BBVEhfV1RNUCwgJnUpOworK30KKysjZW5kaWYgLyogX19HTElCQ19fICovCisgCisgLy8gUmV0dXJucyBzdHJpbmcgZnJvbSBhZGRyZXNzIGluZm8gcG9pbnRlcgorIHN0YXRpYyBjaGFyKgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGUvMDAwMS1zcmMtcmRhdGUtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGUvMDAwMS1zcmMtcmRhdGUtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNjUxODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZS8wMDAxLXNyYy1yZGF0ZS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBmNThiY2I0M2MzMWQwOGRlNTg4NTNiMDg4NjgxY2JlNGRmMzZjYmY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMjI6NTA6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL3JkYXRlOiBGaXggcHJpbnRmIGZvcm1hdCBlcnJvcnMKKworRml4ZXMKKworcmRhdGUuYzo4NTo0MTogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgIHN5c2xvZyhpc19lcnJvcj9MT0dfV0FSTklORzpMT0dfSU5GTywgYnVmKTsKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIHNyYy9yZGF0ZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3JkYXRlLmMgYi9zcmMvcmRhdGUuYworaW5kZXggNWMzZTgyOS4uOTQzZDQ4MSAxMDA2NDQKKy0tLSBhL3NyYy9yZGF0ZS5jCisrKysgYi9zcmMvcmRhdGUuYworQEAgLTgyLDcgKzgyLDcgQEAgd3JpdGVfbG9nKGludCBpc19lcnJvciwgY2hhciAqZm9ybWF0LCAuLi4pCisgCQlyZXR1cm47IC8qIEVycm9yLCB3aGljaCB3ZSBjYW4ndCByZXBvcnQgYmVjYXVzZSB0aGlzIF9pc18gdGhlIGVycm9yCisgCQkJCXJlcG9ydGluZyBtZWNoYW5pc20gKi8KKyAJaWYobG9nX21vZGUpCistCQlzeXNsb2coaXNfZXJyb3I/TE9HX1dBUk5JTkc6TE9HX0lORk8sIGJ1Zik7CisrCQlzeXNsb2coaXNfZXJyb3I/TE9HX1dBUk5JTkc6TE9HX0lORk8sICIlcyIsIGJ1Zik7CisgCWlmKGlzX2Vycm9yIHx8IHByaW50X21vZGUpCisgCQlmcHJpbnRmKGlzX2Vycm9yP3N0ZGVycjpzdGRvdXQsICIlczogJXNcbiIsIGFyZ3YwLCBidWYpOworIH0KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlXzEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDRkYjEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGVfMS41LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiVG9vbCBmb3IgZ2V0dGluZyB0aGUgZGF0ZS90aW1lIGZyb20gYSByZW1vdGUgbWFjaGluZS4iCitERVNDUklQVElPTiA9ICJUaGUgcmRhdGUgdXRpbGl0eSByZXRyaWV2ZXMgdGhlIGRhdGUgYW5kIHRpbWUgZnJvbSBcCisgIGFub3RoZXIgbWFjaGluZSBvbiB5b3VyIG5ldHdvcmssIHVzaW5nIHRoZSBwcm90b2NvbCBkZXNjcmliZWQgaW4gUkZDIDg2OC4gXAorICBJZiB5b3UgcnVuIHJkYXRlIGFzIHJvb3QsIGl0IHdpbGwgc2V0IHlvdXIgbWFjaGluZSBsb2NhbCB0aW1lIHRvIHRoZSBcCisgIHRpbWUgb2YgdGhlIG1hY2hpbmUgdGhhdCB5b3UgcXVlcmllZC4gXAorIgorCitIT01FUEFHRT0gImh0dHBzOi8vd3d3LmFlbGl1cy5jb20vbmpoL3JkYXRlLyIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFlbGl1cy5jb20vbmpoLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtcmRhdGUtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmRhdGUtZGVmaW5lLWxvZ3d0bXAtb24tbGliYy1nbGliYy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYTRmNjEyNDgwNzc3ZmRmMjUyNjRhYzAzYzU3ZWFlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZTgwMDA1M2VhYWMyYjIxZmY0NDg2ZWM0MmYwYWNhNzIxNDk0MWM3ZTVmY2VlZGQ1OTNmYTBiZTk5YjkyMjdkIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1iYi1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTVlYWY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmItYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSAyNDQ4NjFlMmM5YmI5Y2M0NGY0YmQyNDY5NjRiYTg1MGE3Y2YxMjE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGluIE91eWFuZyA8WGluLk91eWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBNYXkgMjAxMiAxNTowNjo0MyArMDgwMAorU3ViamVjdDogW1BBVENIXSByZGlzdDogYml0YmFrZSBidWlsZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCistLS0KKyBNYWtlZmlsZS5sb2NhbCAgICB8ICAgIDggKysrKy0tLS0KKyBkb2MvTWFrZWZpbGUucmVhbCB8ICAgIDQgKysrLQorIHNyYy9NYWtlZmlsZS5yZWFsIHwgICAgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5sb2NhbCBiL01ha2VmaWxlLmxvY2FsCitpbmRleCAyNjA5MmIyLi4zODljYjg0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUubG9jYWwKKysrKyBiL01ha2VmaWxlLmxvY2FsCitAQCAtMTQsNyArMTQsNyBAQAorICMgQklOX0RJUiB2YXJpYWJsZSwgeW91IHdvdWxkIHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUKKyAjIG9yIGFkZCB5b3VyIG93biBsaW5lLgorICMKKy0jQklOX0RJUgk9IC91c3IvYmluCisrQklOX0RJUgk9ICR7REVTVERJUn0vJHtiaW5kaXJ9CisgCisgIworICMgQWRkIGFueSBsb2NhbCBkZWZpbml0aW9ucyB5b3Ugd2FudCBwYXNzIHRvIHRoZSBjb21waWxlciB0byBERUZTX0xPQ0FMCitAQCAtNDYsMTMgKzQ2LDEzIEBAIExJQlNfTE9DQUwJPQorICMgU2V0IGEgc2l0ZSBzcGVjaWZpYyBpbnN0YWxsIHByb2dyYW0gdG8gdXNlLiAgTXVzdCBzdXBwb3J0IEJTRCBzdHlsZQorICMgaW5zdGFsbCgxKSBhcmd1bWVudHMuCisgIworLSNJTlNUQUxMCQk9IGluc3RhbGwKKytJTlNUQUxMCQk9IGluc3RhbGwKKyAKKyAjCisgIyBTaXRlIHNwZWNpZmljIE1hbiBQYWdlIGNvbmZpZ3VyYXRpb24uCisgIworLSNNQU5fMV9ESVIJPSAvdXNyL2xvY2FsL21hbi9tYW4xCistI01BTl84X0RJUgk9IC91c3IvbG9jYWwvbWFuL21hbjgKKytNQU5fMV9ESVIJPSAke0RFU1RESVJ9LyR7bWFuZGlyfS9tYW4xCisrTUFOXzhfRElSCT0gJHtERVNURElSfS8ke21hbmRpcn0vbWFuOAorICNNQU5fT1dORVIJPSBiaW4KKyAjTUFOX0dST1VQCT0gYmluCisgI01BTl9NT0RFCT0gNjQ0CitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLnJlYWwgYi9kb2MvTWFrZWZpbGUucmVhbAoraW5kZXggNDJjYWJlYy4uZTMyYzMwYiAxMDA2NDQKKy0tLSBhL2RvYy9NYWtlZmlsZS5yZWFsCisrKysgYi9kb2MvTWFrZWZpbGUucmVhbAorQEAgLTE2LDkgKzE2LDExIEBAIGFsbDoKKyAKKyBkb2M6CisgCistaW5zdGFsbDoKKytpbnN0YWxsOiBpbnN0YWxsLm1hbgorIAorIGluc3RhbGwubWFuOiByZGlzdC5tYW4gcmRpc3RkLm1hbgorKwl0ZXN0IC1kICR7TUFOXzFfRElSfSB8fCAke0lOU1RBTEx9IC1kICR7TUFOXzFfRElSfQorKwl0ZXN0IC1kICR7TUFOXzhfRElSfSB8fCAke0lOU1RBTEx9IC1kICR7TUFOXzhfRElSfQorIAkke0lOU1RBTEx9ICR7SU5TVEFMTF9BUkdTfSByZGlzdC5tYW4gJHtDTElFTlRfREVTVH0KKyAJJHtJTlNUQUxMfSAke0lOU1RBTExfQVJHU30gcmRpc3RkLm1hbiAke1NFUlZFUl9ERVNUfQorIAorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5yZWFsIGIvc3JjL01ha2VmaWxlLnJlYWwKK2luZGV4IDAyMTc5ZTQuLjllYzU1MWQgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUucmVhbAorKysrIGIvc3JjL01ha2VmaWxlLnJlYWwKK0BAIC01Miw2ICs1Miw3IEBAIGNsZWFuOgorIAkJJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKQorIAorIGluc3RhbGw6CisrCXRlc3QgLWQgJChCSU5fRElSKSB8fCAkKElOU1RBTEwpIC1kICQoQklOX0RJUikKKyAJJChJTlNUQUxMKSAke0lOX0FSR1N9IC1vICQoQklOX09XTkVSKSAtbSAke1JESVNUX01PREV9IFwKKyAJCSQoQ0xJRU5UX0JJTikgJChCSU5fRElSKS8kKENMSUVOVCkKKyAJJChJTlNUQUxMKSAke0lOX0FSR1N9IC1vICR7QklOX09XTkVSfSAtbSAke1JESVNURF9NT0RFfSBcCistLSAKKzEuNy41LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmlzb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1iaXNvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzU0OTEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmlzb24ucGF0Y2gKQEAgLTAsMCArMSwxNDcgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvZ3JhbS55LmJpc29uCTE5OTgtMTEtMTAgMDU6MTA6NDIuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2dyYW0ueQkyMDAzLTA2LTA0IDE2OjAyOjE5LjAwMDAwMDAwMCArMDIwMAorQEAgLTkwLDEwICs5MCwxMCBAQAorIAlzdHJ1Y3QgbmFtZWxpc3QgICAgICAgICpuYW1lbDsKKyB9CisgCistJXR5cGUgPG9wdHZhbD4gT1BUSU9OLCBvcHRpb25zCistJXR5cGUgPHN0cmluZz4gTkFNRSwgU1RSSU5HCistJXR5cGUgPHN1YmNtZD4gSU5TVEFMTCwgTk9USUZZLCBFWENFUFQsIFBBVFRFUk4sIFNQRUNJQUwsIENNRFNQRUNJQUwsIGNtZGxpc3QsIGNtZAorLSV0eXBlIDxuYW1lbD4gbmFtZWxpc3QsIG5hbWVzLCBvcHRfbmFtZWxpc3Qgbmxpc3QKKysldHlwZSA8b3B0dmFsPiBPUFRJT04gb3B0aW9ucworKyV0eXBlIDxzdHJpbmc+IE5BTUUgU1RSSU5HCisrJXR5cGUgPHN1YmNtZD4gSU5TVEFMTCBOT1RJRlkgRVhDRVBUIFBBVFRFUk4gU1BFQ0lBTCBDTURTUEVDSUFMIGNtZGxpc3QgY21kCisrJXR5cGUgPG5hbWVsPiBuYW1lbGlzdCBuYW1lcyBvcHRfbmFtZWxpc3Qgbmxpc3QKKyAKKyAlJQorIAorQEAgLTEwMSwxOSArMTAxLDE5IEBACisgCQl8IGZpbGUgY29tbWFuZAorIAkJOworIAorLWNvbW1hbmQ6CSAgTkFNRSAnPScgbmFtZWxpc3QgPSB7CisrY29tbWFuZDoJICBOQU1FICc9JyBuYW1lbGlzdCB7CisgCQkJKHZvaWQpIGxvb2t1cCgkMSwgSU5TRVJULCAkMyk7CisgCQl9CistCQl8IG5hbWVsaXN0IEFSUk9XIG5hbWVsaXN0IGNtZGxpc3QgPSB7CisrCQl8IG5hbWVsaXN0IEFSUk9XIG5hbWVsaXN0IGNtZGxpc3QgeworIAkJCWluc2VydCgoY2hhciAqKU5VTEwsICQxLCAkMywgJDQpOworIAkJfQorLQkJfCBOQU1FIENPTE9OIG5hbWVsaXN0IEFSUk9XIG5hbWVsaXN0IGNtZGxpc3QgPSB7CisrCQl8IE5BTUUgQ09MT04gbmFtZWxpc3QgQVJST1cgbmFtZWxpc3QgY21kbGlzdCB7CisgCQkJaW5zZXJ0KCQxLCAkMywgJDUsICQ2KTsKKyAJCX0KKy0JCXwgbmFtZWxpc3QgRENPTE9OIE5BTUUgY21kbGlzdCA9IHsKKysJCXwgbmFtZWxpc3QgRENPTE9OIE5BTUUgY21kbGlzdCB7CisgCQkJYXBwZW5kKChjaGFyICopTlVMTCwgJDEsICQzLCAkNCk7CisgCQl9CistCQl8IE5BTUUgQ09MT04gbmFtZWxpc3QgRENPTE9OIE5BTUUgY21kbGlzdCA9IHsKKysJCXwgTkFNRSBDT0xPTiBuYW1lbGlzdCBEQ09MT04gTkFNRSBjbWRsaXN0IHsKKyAJCQlhcHBlbmQoJDEsICQzLCAkNSwgJDYpOworIAkJfQorIAkJfCBlcnJvcgorQEAgLTEzMywxMCArMTMzLDEwIEBACisgCQl9CisgCQk7CisgCistbmxpc3Q6CSAgTkFNRSA9IHsKKytubGlzdDoJICBOQU1FIHsKKyAJCQkkJCA9IG1ha2VubCgkMSk7CisgCQl9CistCQl8ICcoJyBuYW1lcyAnKScgPSB7CisrCQl8ICcoJyBuYW1lcyAnKScgeworIAkJCSQkID0gJDI7CisgCQl9CisgCQk7CitAQCAtMTQ0LDcgKzE0NCw3IEBACisgbmFtZXM6CQkgIC8qIFZPSUQgKi8geworIAkJCSQkID0gbGFzdF9uID0gTlVMTDsKKyAJCX0KKy0JCXwgbmFtZXMgTkFNRSA9IHsKKysJCXwgbmFtZXMgTkFNRSB7CisgCQkJaWYgKGxhc3RfbiA9PSBOVUxMKQorIAkJCQkkJCA9IGxhc3RfbiA9IG1ha2VubCgkMik7CisgCQkJZWxzZSB7CitAQCAtMTU4LDcgKzE1OCw3IEBACisgY21kbGlzdDoJICAvKiBWT0lEICovIHsKKyAJCQkkJCA9IGxhc3Rfc2MgPSBOVUxMOworIAkJfQorLQkJfCBjbWRsaXN0IGNtZCA9IHsKKysJCXwgY21kbGlzdCBjbWQgeworIAkJCWlmIChsYXN0X3NjID09IE5VTEwpCisgCQkJCSQkID0gbGFzdF9zYyA9ICQyOworIAkJCWVsc2UgeworQEAgLTE2OSw3ICsxNjksNyBAQAorIAkJfQorIAkJOworIAorLWNtZDoJCSAgSU5TVEFMTCBvcHRpb25zIG9wdF9uYW1lbGlzdCAnOycgPSB7CisrY21kOgkJICBJTlNUQUxMIG9wdGlvbnMgb3B0X25hbWVsaXN0ICc7JyB7CisgCQkJcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubDsKKyAKKyAJCQkkMS0+c2Nfb3B0aW9ucyA9ICQyIHwgb3B0aW9uczsKK0BAIC0xODUsMTcgKzE4NSwxNyBAQAorIAkJCX0KKyAJCQkkJCA9ICQxOworIAkJfQorLQkJfCBOT1RJRlkgbmFtZWxpc3QgJzsnID0geworKwkJfCBOT1RJRlkgbmFtZWxpc3QgJzsnIHsKKyAJCQlpZiAoJDIgIT0gTlVMTCkKKyAJCQkJJDEtPnNjX2FyZ3MgPSBleHBhbmQoJDIsIEVfVkFSUyk7CisgCQkJJCQgPSAkMTsKKyAJCX0KKy0JCXwgRVhDRVBUIG5hbWVsaXN0ICc7JyA9IHsKKysJCXwgRVhDRVBUIG5hbWVsaXN0ICc7JyB7CisgCQkJaWYgKCQyICE9IE5VTEwpCisgCQkJCSQxLT5zY19hcmdzID0gZXhwYW5kKCQyLCBFX0FMTCk7CisgCQkJJCQgPSAkMTsKKyAJCX0KKy0JCXwgUEFUVEVSTiBuYW1lbGlzdCAnOycgPSB7CisrCQl8IFBBVFRFUk4gbmFtZWxpc3QgJzsnIHsKKyAJCQlzdHJ1Y3QgbmFtZWxpc3QgKm5sOworIAkJCWNoYXIgKmNwLCAqcmVfY29tcCgpOworIAorQEAgLTIwNSwxMyArMjA1LDEzIEBACisgCQkJJDEtPnNjX2FyZ3MgPSBleHBhbmQoJDIsIEVfVkFSUyk7CisgCQkJJCQgPSAkMTsKKyAJCX0KKy0JCXwgU1BFQ0lBTCBvcHRfbmFtZWxpc3QgU1RSSU5HICc7JyA9IHsKKysJCXwgU1BFQ0lBTCBvcHRfbmFtZWxpc3QgU1RSSU5HICc7JyB7CisgCQkJaWYgKCQyICE9IE5VTEwpCisgCQkJCSQxLT5zY19hcmdzID0gZXhwYW5kKCQyLCBFX0FMTCk7CisgCQkJJDEtPnNjX25hbWUgPSAkMzsKKyAJCQkkJCA9ICQxOworIAkJfQorLQkJfCBDTURTUEVDSUFMIG9wdF9uYW1lbGlzdCBTVFJJTkcgJzsnID0geworKwkJfCBDTURTUEVDSUFMIG9wdF9uYW1lbGlzdCBTVFJJTkcgJzsnIHsKKyAJCQlpZiAoJDIgIT0gTlVMTCkKKyAJCQkJJDEtPnNjX2FyZ3MgPSBleHBhbmQoJDIsIEVfQUxMKTsKKyAJCQkkMS0+c2NfbmFtZSA9ICQzOworQEAgLTIxOSwxOCArMjE5LDE4IEBACisgCQl9CisgCQk7CisgCistb3B0aW9uczoJICAvKiBWT0lEICovID0geworK29wdGlvbnM6CSAgLyogVk9JRCAqLyB7CisgCQkJJCQgPSAwOworIAkJfQorLQkJfCBvcHRpb25zIE9QVElPTiA9IHsKKysJCXwgb3B0aW9ucyBPUFRJT04geworIAkJCSQkIHw9ICQyOworIAkJfQorIAkJOworIAorLW9wdF9uYW1lbGlzdDoJICAvKiBWT0lEICovID0geworK29wdF9uYW1lbGlzdDoJICAvKiBWT0lEICovIHsKKyAJCQkkJCA9IE5VTEw7CisgCQl9CistCQl8IG5hbWVsaXN0ID0geworKwkJfCBuYW1lbGlzdCB7CisgCQkJJCQgPSAkMTsKKyAJCX0KKyAJCTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWNsZWFudXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1jbGVhbnVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkM2Q3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1jbGVhbnVwLnBhdGNoCkBAIC0wLDAgKzEsMjA4NyBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9ncmFtLnkuY2xlYW51cAkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9ncmFtLnkJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC00MCw3ICs0MCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZ3JhbS55LHYgNi4zMCAxOTk4LzExLzEwIDA0OjEwOjQyIG1jb29wZXIgRXhwICQiOworIAorQEAgLTE3MCw3ICsxNzAsNyBAQAorIAkJOworIAorIGNtZDoJCSAgSU5TVEFMTCBvcHRpb25zIG9wdF9uYW1lbGlzdCAnOycgeworLQkJCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisrCQkJc3RydWN0IG5hbWVsaXN0ICpubDsKKyAKKyAJCQkkMS0+c2Nfb3B0aW9ucyA9ICQyIHwgb3B0aW9uczsKKyAJCQlpZiAoJDMgIT0gTlVMTCkgeworQEAgLTI0MCwxMSArMjQwLDExIEBACisgaW50CXl5bGluZW5vID0gMTsKKyBleHRlcm4JRklMRSAqZmluOworIAorLXl5bGV4KCkKKytpbnQgeXlsZXgoKQorIHsKKyAJc3RhdGljIGNoYXIgeXl0ZXh0W0lOTUFYXTsKKy0JcmVnaXN0ZXIgaW50IGM7CistCXJlZ2lzdGVyIGNoYXIgKmNwMSwgKmNwMjsKKysJaW50IGM7CisrCWNoYXIgKmNwMSwgKmNwMjsKKyAJc3RhdGljIGNoYXIgcXVvdGVjaGFyc1tdID0gIltde30qPyQiOworIAkKKyBhZ2FpbjoKK0BAIC00MDksOCArNDA5LDggQEAKKyAgKiBzb21lIG9mIHRoZSBjaGFyYWN0ZXJzIHdlIHVzZS4KKyAgKi8KKyBleHRlcm4gaW50IGFueShjLCBzdHIpCistCXJlZ2lzdGVyIGludCBjOworLQlyZWdpc3RlciBjaGFyICpzdHI7CisrCWludCBjOworKwljaGFyICpzdHI7CisgeworIAl3aGlsZSAoKnN0cikKKyAJCWlmIChjID09ICpzdHIrKykKK0BAIC00MjEsMTMgKzQyMSwxNCBAQAorIC8qCisgICogSW5zZXJ0IG9yIGFwcGVuZCBBUlJPVyBjb21tYW5kIHRvIGxpc3Qgb2YgaG9zdHMgdG8gYmUgdXBkYXRlZC4KKyAgKi8KKyt2b2lkCisgaW5zZXJ0KGxhYmVsLCBmaWxlcywgaG9zdHMsIHN1YmNtZHMpCisgCWNoYXIgKmxhYmVsOworIAlzdHJ1Y3QgbmFtZWxpc3QgKmZpbGVzLCAqaG9zdHM7CisgCXN0cnVjdCBzdWJjbWQgKnN1YmNtZHM7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgY21kICpjLCAqcHJldiwgKm5jOworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKmgsICpsYXN0aDsKKysJc3RydWN0IGNtZCAqYywgKnByZXYsICpuYzsKKysJc3RydWN0IG5hbWVsaXN0ICpoLCAqbGFzdGg7CisgCisgCWRlYnVnbXNnKERNX0NBTEwsICJpbnNlcnQoJXMsICV4LCAleCwgJXgpIHN0YXJ0LCBmaWxlcyA9ICVzIiwgCisgCQkgbGFiZWwgPT0gTlVMTCA/ICIobnVsbCkiIDogbGFiZWwsCitAQCAtNDc1LDEzICs0NzYsMTQgQEAKKyAgKiBBcHBlbmQgRENPTE9OIGNvbW1hbmQgdG8gdGhlIGVuZCBvZiB0aGUgY29tbWFuZCBsaXN0IHNpbmNlIHRoZXNlIGFyZSBhbHdheXMKKyAgKiBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGRpc3RmaWxlLgorICAqLworK3ZvaWQKKyBhcHBlbmQobGFiZWwsIGZpbGVzLCBzdGFtcCwgc3ViY21kcykKKyAJY2hhciAqbGFiZWw7CisgCXN0cnVjdCBuYW1lbGlzdCAqZmlsZXM7CisgCWNoYXIgKnN0YW1wOworIAlzdHJ1Y3Qgc3ViY21kICpzdWJjbWRzOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IGNtZCAqYzsKKysJc3RydWN0IGNtZCAqYzsKKyAKKyAJYyA9IEFMTE9DKGNtZCk7CisgCWMtPmNfdHlwZSA9IERDT0xPTjsKK0BAIC01MDEsNiArNTAzLDcgQEAKKyAvKgorICAqIEVycm9yIHByaW50aW5nIHJvdXRpbmUgaW4gcGFyc2VyLgorICAqLworK3ZvaWQKKyB5eWVycm9yKHMpCisgCWNoYXIgKnM7CisgeworQEAgLTUzMCw3ICs1MzMsNyBAQAorIG1ha2VubChuYW1lKQorIAljaGFyICpuYW1lOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubDsKKysJc3RydWN0IG5hbWVsaXN0ICpubDsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgIm1ha2VubCglcykiLCBuYW1lID09IE5VTEwgPyAibnVsbCIgOiBuYW1lKTsKKyAKK0BAIC02MjcsNyArNjMwLDcgQEAKKyBtYWtlc3ViY21kKHR5cGUpCisgCWludCB0eXBlOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IHN1YmNtZCAqc2M7CisrCXN0cnVjdCBzdWJjbWQgKnNjOworIAorIAlzYyA9IEFMTE9DKHN1YmNtZCk7CisgCXNjLT5zY190eXBlID0gdHlwZTsKKy0tLSByZGlzdC02LjEuNS9zcmMvcmRpc3QuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTM6NTAuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3JkaXN0LmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogcmRpc3QuYyx2IDYuNjYgMTk5OC8xMS8xMCAwNDoxMzo0OSBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC04MCw3ICs4MCw3IEBACisgCWNoYXIgKm5hbWU7CisgCXN0cnVjdCBuYW1lbGlzdCAqKmhvc3RsaXN0OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpwdHIsICpuZXc7CisrCXN0cnVjdCBuYW1lbGlzdCAqcHRyLCAqbmV3OworIAorIAlpZiAoIW5hbWUgfHwgIWhvc3RsaXN0KQorIAkJcmV0dXJuOworQEAgLTk3LDE0ICs5NywxNSBAQAorIAkJKmhvc3RsaXN0ID0gbmV3OworIH0KKyAKKytpbnQKKyBtYWluKGFyZ2MsIGFyZ3YsIGVudnApCisgCWludCBhcmdjOworIAljaGFyICphcmd2W107CisgCWNoYXIgKiplbnZwOworIHsKKyAJc3RydWN0IG5hbWVsaXN0ICpob3N0bGlzdCA9IE5VTEw7CistCXJlZ2lzdGVyIGludCB4OworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJaW50IHg7CisrCWNoYXIgKmNwOworIAlpbnQgY21kYXJncyA9IDA7CisgCWludCBjOworIAorQEAgLTExNCw3ICsxMTUsNyBAQAorIAkgKi8KKyAJc2V0cHJvZ25hbWUoYXJndik7CisgCistCWlmIChjcCA9IG1zZ3BhcnNlb3B0cyhsb2NhbG1zZ2xpc3QsIFRSVUUpKSB7CisrCWlmICgoY3AgPSBtc2dwYXJzZW9wdHMobG9jYWxtc2dsaXN0LCBUUlVFKSkpIHsKKyAJCWVycm9yKCJCYWQgYnVpbHRpbiBsb2cgb3B0aW9uICglcyk6ICVzLiIsIAorIAkJICAgICAgbG9jYWxtc2dsaXN0LCBjcCk7CisgCQl1c2FnZSgpOworQEAgLTE1OCw3ICsxNTksNyBAQAorIAl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgb3B0Y2hhcnMpKSAhPSAtMSkKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnbCc6CistCQkJaWYgKGNwID0gbXNncGFyc2VvcHRzKG9wdGFyZywgVFJVRSkpIHsKKysJCQlpZiAoKGNwID0gbXNncGFyc2VvcHRzKG9wdGFyZywgVFJVRSkpKSB7CisgCQkJCWVycm9yKCJCYWQgbG9nIG9wdGlvbiBcIiVzXCI6ICVzLiIsIG9wdGFyZyxjcCk7CisgCQkJCXVzYWdlKCk7CisgCQkJfQorQEAgLTIwNiw3ICsyMDcsNyBAQAorIAorIAkJY2FzZSAnRCc6CisgCQkJZGVidWcgPSBETV9BTEw7CistCQkJaWYgKGNwID0gbXNncGFyc2VvcHRzKCJzdGRvdXQ9YWxsLGRlYnVnIiwgVFJVRSkpIHsKKysJCQlpZiAoKGNwID0gbXNncGFyc2VvcHRzKCJzdGRvdXQ9YWxsLGRlYnVnIiwgVFJVRSkpKSB7CisgCQkJCWVycm9yKCJFbmFibGUgZGVidWcgbWVzc2FnZXMgZmFpbGVkOiAlcy4iLCBjcCk7CisgCQkJCXVzYWdlKCk7CisgCQkJfQorQEAgLTI0NSw3ICsyNDYsNyBAQAorIAkJCQllcnJvcigiTm8gcGF0aCBzcGVjaWZpZWQgdG8gXCItUFwiLiIpOworIAkJCQl1c2FnZSgpOworIAkJCX0KKy0JCQlpZiAoY3AgPSBzZWFyY2hwYXRoKG9wdGFyZykpCisrCQkJaWYgKChjcCA9IHNlYXJjaHBhdGgob3B0YXJnKSkpCisgCQkJCXBhdGhfcmVtc2ggPSBzdHJkdXAoY3ApOworIAkJCWVsc2UgeworIAkJCQllcnJvcigiTm8gY29tcG9uZW50IG9mIHBhdGggXCIlc1wiIGV4aXN0cy4iLAorQEAgLTI5Nyw3ICsyOTgsNyBAQAorIAllbHNlIHsKKyAJCWlmIChmaW4gPT0gTlVMTCkKKyAJCQlmaW4gPSBvcGVuZGlzdChkaXN0ZmlsZSk7CistCQkodm9pZCkgeXlwYXJzZSgpOworKwkJeXlwYXJzZSgpOworIAkJLyoKKyAJCSAqIE5lZWQgdG8ga2VlcCBzdGRpbiBvcGVuIGZvciBjaGlsZCBwcm9jZXNzaW5nIGxhdGVyCisgCQkgKi8KK0BAIC0zNDgsNiArMzQ5LDcgQEAKKyAvKgorICAqIFByaW50IHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuCisgICovCisrdm9pZAorIHVzYWdlKCkKKyB7CisgCWNoYXIgKnNvcHRzID0gImNERm52IjsKK0BAIC0zNzksMTIgKzM4MSwxMyBAQAorIC8qCisgICogcmNwIGxpa2UgaW50ZXJmYWNlIGZvciBkaXN0cmlidXRpbmcgZmlsZXMuCisgICovCisrdm9pZAorIGRvY21kYXJncyhuYXJncywgYXJncykKKyAJaW50IG5hcmdzOworIAljaGFyICphcmdzW107CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKm5sLCAqcHJldjsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCXN0cnVjdCBuYW1lbGlzdCAqbmwsICpwcmV2OworKwljaGFyICpjcDsKKyAJc3RydWN0IG5hbWVsaXN0ICpmaWxlcywgKmhvc3RzOworIAlzdHJ1Y3Qgc3ViY21kICpjbWRzOworIAljaGFyICpkZXN0OworQEAgLTQzMywxMCArNDM2LDEwIEBACisgICogR2V0IGEgbGlzdCBvZiBOQU1FIGJsb2NrcyAobW9zdGx5IGZvciBkZWJ1Z2dpbmcpLgorICAqLworIGV4dGVybiBjaGFyICpnZXRubHN0cihubCkKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubDsKKysJc3RydWN0IG5hbWVsaXN0ICpubDsKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZlsxNjM4NF07CistCXJlZ2lzdGVyIGludCBjb3VudCA9IDAsIGxlbiA9IDA7CisrCWludCBjb3VudCA9IDAsIGxlbiA9IDA7CisgCisgCSh2b2lkKSBzcHJpbnRmKGJ1ZiwgIigiKTsKKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMuY2xlYW51cAkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9jbGllbnQuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBjbGllbnQuYyx2IDYuODIgMTk5OC8xMS8xMCAwNDowODo0NyBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC04NCw3ICs4NCw3IEBACisgCWludCBkZXN0ZGlyOworIHsKKyAJZXh0ZXJuIHN0cnVjdCBuYW1lbGlzdCAqZmlsZWxpc3Q7CistCXJlZ2lzdGVyIGNoYXIgKmxuYW1lLCAqY3A7CisrCWNoYXIgKmxuYW1lLCAqY3A7CisgCXN0YXRpYyBjaGFyIGJ1ZmZbQlVGU0laXTsKKyAJaW50IHNyY2xlbiwgcGF0aGxlbjsKKyAJY2hhciAqcDsKK0BAIC0xNDYsNyArMTQ2LDcgQEAKKyAJc3RydWN0IG5hbWVsaXN0ICpsaXN0OworIAljaGFyICpmaWxlOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubDsKKysJc3RydWN0IG5hbWVsaXN0ICpubDsKKyAKKyAJZm9yIChubCA9IGxpc3Q7IG5sICE9IE5VTEw7IG5sID0gbmwtPm5fbmV4dCkKKyAJCWlmIChzdHJjbXAoZmlsZSwgbmwtPm5fbmFtZSkgPT0gMCkKK0BAIC0xNjMsNyArMTYzLDcgQEAKKyAJY2hhciAqcm5hbWU7CisgCWludCBkZXN0ZGlyOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IHN1YmNtZCAqc2M7CisrCXN0cnVjdCBzdWJjbWQgKnNjOworIAlleHRlcm4gc3RydWN0IHN1YmNtZCAqc3ViY21kczsKKyAJY2hhciAqcmZpbGU7CisgCitAQCAtMjAwLDcgKzIwMCw3IEBACisgeworIAljaGFyICpyZmlsZTsKKyAJc3RydWN0IG5hbWVsaXN0ICpuZXc7CistCXJlZ2lzdGVyIHN0cnVjdCBzdWJjbWQgKnNjOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKyAJZXh0ZXJuIHN0cnVjdCBzdWJjbWQgKnN1YmNtZHM7CisgCWludCBpc29rYXkgPSAwOworIAorQEAgLTIyNyw3ICsyMjcsNyBAQAorICAqLworIHN0YXRpYyB2b2lkIGZyZWVjbWRzcGVjaWFsZmlsZXMoKQorIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpwdHIsICpzYXZlOworKwlzdHJ1Y3QgbmFtZWxpc3QgKnB0ciwgKnNhdmU7CisgCisgCWZvciAocHRyID0gdXBkZmlsZWxpc3Q7IHB0cjsgKSB7CisgCQlpZiAocHRyLT5uX25hbWUpICh2b2lkKSBmcmVlKHB0ci0+bl9uYW1lKTsKK0BAIC0yNDksMTAgKzI0OSw4IEBACisgCWNoYXIgKipmaWxldjsKKyAJb3B0X3Qgb3B0czsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBzdWJjbWQgKnNjOworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKmY7CistCXJlZ2lzdGVyIGNoYXIgKipjcHA7CistCWNoYXIgKmZpbGU7CisrCXN0cnVjdCBzdWJjbWQgKnNjOworKwlzdHJ1Y3QgbmFtZWxpc3QgKmY7CisgCWludCBmaXJzdCA9IFRSVUU7CisgCisgCWZvciAoc2MgPSBjbWQtPmNfY21kczsgc2MgIT0gTlVMTDsgc2MgPSBzYy0+c2NfbmV4dCkgeworQEAgLTI5NCw3ICsyOTIsNyBAQAorIGludCBjaGVja2ZpbGVuYW1lKG5hbWUpCisgCWNoYXIgKm5hbWU7CisgeworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgCisgCWlmIChzdHJjaHIobmFtZSwgJ1xuJykpIHsKKyAJCWZvciAoY3AgPSBuYW1lOyAqY3A7IGNwKyspCitAQCAtNTAxLDcgKzQ5OSw3IEBACisgc3RhdGljIGludCBybWNoayhvcHRzKQorIAlvcHRfdCBvcHRzOworIHsKKy0JcmVnaXN0ZXIgdV9jaGFyICpzOworKwl1X2NoYXIgKnM7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJaW50IGRpZHVwZGF0ZSA9IDA7CisgCWludCBuOworQEAgLTYxOCw3ICs2MTYsNyBAQAorIAkKKyAJb3B0YXJnZXQgPSBwdGFyZ2V0OworIAlsZW4gPSBwdGFyZ2V0IC0gdGFyZ2V0OworLQl3aGlsZSAoZHAgPSByZWFkZGlyKGQpKSB7CisrCXdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSkgeworIAkJaWYgKCFzdHJjbXAoZHAtPmRfbmFtZSwgIi4iKSB8fAorIAkJICAgICFzdHJjbXAoZHAtPmRfbmFtZSwgIi4uIikpCisgCQkJY29udGludWU7CitAQCAtNjMxLDcgKzYyOSw3IEBACisgCQlpZiAocHRhcmdldFstMV0gIT0gJy8nKQorIAkJCSpwdGFyZ2V0KysgPSAnLyc7CisgCQljcCA9IGRwLT5kX25hbWU7CistCQl3aGlsZSAoKnB0YXJnZXQrKyA9ICpjcCsrKQorKwkJd2hpbGUgKCgqcHRhcmdldCsrID0gKmNwKyspKQorIAkJCTsKKyAJCXB0YXJnZXQtLTsKKyAJCWlmIChzZW5kaXQoZHAtPmRfbmFtZSwgb3B0cywgZGVzdGRpcikgPiAwKQorQEAgLTc3MCwxMyArNzY4LDEzIEBACisgCW9wdF90IG9wdHM7CisgCXN0cnVjdCBzdGF0ICpzdGF0cDsKKyB7CistCXJlZ2lzdGVyIG9mZl90IHNpemU7CistCXJlZ2lzdGVyIHRpbWVfdCBtdGltZTsKKysJb2ZmX3Qgc2l6ZTsKKysJdGltZV90IG10aW1lOworIAl1bnNpZ25lZCBzaG9ydCBsbW9kZTsKKyAJdW5zaWduZWQgc2hvcnQgcm1vZGU7CisgCWNoYXIgKm93bmVyID0gTlVMTCwgKmdyb3VwID0gTlVMTDsKKyAJaW50IGRvbmUsIG47CistCXVfY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAidXBkYXRlKCVzLCAweCV4LCAweCV4KVxuIiwgcm5hbWUsIG9wdHMsIHN0YXRwKTsKKyAKK0BAIC0xMDM1LDcgKzEwMzMsNiBAQAorIAlpbnQgZGVzdGRpcjsKKyB7CisgCXN0YXRpYyBzdHJ1Y3Qgc3RhdCBzdGI7CistCWV4dGVybiBzdHJ1Y3Qgc3ViY21kICpzdWJjbWRzOworIAljaGFyICp1c2VyLCAqZ3JvdXA7CisgCWludCB1LCBsZW47CisgCWludCBkaWR1cGRhdGUgPSAwOworQEAgLTExNTcsNyArMTE1NCw3IEBACisgCSh2b2lkKSB1bmxpbmsoc3RhdGZpbGUpOworICNlbmRpZgorIAorLQlpZiAoZmlsZSA9IGdldG5vdGlmeWZpbGUoKSkKKysJaWYgKChmaWxlID0gZ2V0bm90aWZ5ZmlsZSgpKSkKKyAJCSh2b2lkKSB1bmxpbmsoZmlsZSk7CisgfQorIAorLS0tIHJkaXN0LTYuMS41L3NyYy9jaGlsZC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxODo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvY2hpbGQuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBjaGlsZC5jLHYgNi4yOSAxOTk4LzExLzEwIDA0OjE4OjU2IG1jb29wZXIgRXhwICQiOworIAorQEAgLTkwLDcgKzkwLDcgQEAKKyBzdGF0aWMgdm9pZCByZW1vdmVjaGlsZChjaGlsZCkKKyAJQ0hJTEQgKmNoaWxkOworIHsKKy0JcmVnaXN0ZXIgQ0hJTEQgKnBjLCAqcHJldnBjOworKwlDSElMRCAqcGMsICpwcmV2cGM7CisgCisgCWRlYnVnbXNnKERNX0NBTEwsICJyZW1vdmVjaGlsZCglcywgJWQsICVkKSBzdGFydCIsCisgCQkgY2hpbGQtPmNfbmFtZSwgY2hpbGQtPmNfcGlkLCBjaGlsZC0+Y19yZWFkZmQpOworQEAgLTE0OCw3ICsxNDgsNyBAQAorIHN0YXRpYyBDSElMRCAqY29weWNoaWxkKGNoaWxkKQorIAlDSElMRCAqY2hpbGQ7CisgeworLQlyZWdpc3RlciBDSElMRCAqbmV3YzsKKysJQ0hJTEQgKm5ld2M7CisgCisgCW5ld2MgPSAoQ0hJTEQgKikgeG1hbGxvYyhzaXplb2YoQ0hJTEQpKTsKKyAKK0BAIC0xNjcsNyArMTY3LDcgQEAKKyBzdGF0aWMgdm9pZCBhZGRjaGlsZChjaGlsZCkKKyAJQ0hJTEQgKmNoaWxkOworIHsKKy0JcmVnaXN0ZXIgQ0hJTEQgKnBjOworKwlDSElMRCAqcGM7CisgCisgCWRlYnVnbXNnKERNX0NBTEwsICJhZGRjaGlsZCgpIHN0YXJ0XG4iKTsKKyAKK0BAIC0yODAsNyArMjgwLDcgQEAKKyAgKi8KKyBzdGF0aWMgdm9pZCByZWFwKCkKKyB7CistCXJlZ2lzdGVyIENISUxEICpwYzsKKysJQ0hJTEQgKnBjOworIAlpbnQgc3RhdHVzID0gMDsKKyAJcGlkX3QgcGlkOworIAorQEAgLTMzNiw3ICszMzYsNyBAQAorICAqLworIHN0YXRpYyB2b2lkIGNoaWxkc2NhbigpIAorIHsKKy0JcmVnaXN0ZXIgQ0hJTEQgKnBjLCAqbmV4dHBjOworKwlDSElMRCAqcGMsICpuZXh0cGM7CisgCQorIAlkZWJ1Z21zZyhETV9DQUxMLCAiY2hpbGRzY2FuKCkgc3RhcnQiKTsKKyAKK0BAIC0zNjYsOCArMzY2LDggQEAKKyBleHRlcm4gdm9pZCB3YWl0dXAoKQorIHsKKyAjaWYJZGVmaW5lZChIQVZFX1NFTEVDVCkKKy0JcmVnaXN0ZXIgaW50IGNvdW50OworLQlyZWdpc3RlciBDSElMRCAqcGM7CisrCWludCBjb3VudDsKKysJQ0hJTEQgKnBjOworIAlmZF9zZXQgcmNoaWxkZmRzOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAid2FpdHVwKCkgc3RhcnRcbiIpOworLS0tIHJkaXN0LTYuMS41L3NyYy9kb2NtZC5jLmNsZWFudXAJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZG9jbWQuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBkb2NtZC5jLHYgNi44NyAxOTk4LzExLzEwIDA0OjA4OjMyIG1jb29wZXIgRXhwICQiOworIAorQEAgLTk5LDEwICs5OSwxMCBAQAorICAqLworIHN0YXRpYyB2b2lkIG5vdGlmeShyaG9zdCwgdG8sIGxtb2QpCisgCWNoYXIgKnJob3N0OworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKnRvOworKwlzdHJ1Y3QgbmFtZWxpc3QgKnRvOworIAl0aW1lX3QgbG1vZDsKKyB7CistCXJlZ2lzdGVyIGludCBmZCwgbGVuOworKwlpbnQgZmQsIGxlbjsKKyAJRklMRSAqcGYsICpwb3BlbigpOworIAlzdHJ1Y3Qgc3RhdCBzdGI7CisgCXN0YXRpYyBjaGFyIGJ1ZltCVUZTSVpdOworQEAgLTIyMSw3ICsyMjEsNyBAQAorIAlzdHJ1Y3QgY21kICpjbWQ7CisgCXN0cnVjdCBjbWQgKmNtZGxpc3Q7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgY21kICpwY21kOworKwlzdHJ1Y3QgY21kICpwY21kOworIAkKKyAJZm9yIChwY21kID0gY21kbGlzdDsgcGNtZDsgcGNtZCA9IHBjbWQtPmNfbmV4dCkgeworIAkJY2hlY2tjbWQocGNtZCk7CitAQCAtMjM4LDcgKzIzOCw3IEBACisgCXN0cnVjdCBjbWQgKmNtZDsKKyAJc3RydWN0IGNtZCAqY21kbGlzdDsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBjbWQgKnBjOworKwlzdHJ1Y3QgY21kICpwYzsKKyAKKyAJaWYgKCFjbWQpIHsKKyAJCWRlYnVnbXNnKERNX01JU0MsICJtYXJrZmFpbGVkKCkgTlVMTCBjbWQgcGFyYW1ldGVyIik7CitAQCAtMzA5LDcgKzMwOSw3IEBACisgc3RhdGljIGludCBtYWtlY29ubihyaG9zdCkKKyAJY2hhciAqcmhvc3Q7CisgeworLQlyZWdpc3RlciBjaGFyICpydXNlciwgKmNwOworKwljaGFyICpydXNlciwgKmNwOworIAlzdGF0aWMgY2hhciAqY3VyX2hvc3QgPSBOVUxMOworIAlleHRlcm4gY2hhciAqbG9jdXNlcjsKKyAJZXh0ZXJuIGxvbmcgbWluX2ZyZWVmaWxlcywgbWluX2ZyZWVzcGFjZTsKK0BAIC00MzAsOSArNDMwLDkgQEAKKyAJc3RydWN0IGNtZCAqY21kOworIAljaGFyICoqZmlsZXY7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKmY7CistCXJlZ2lzdGVyIHN0cnVjdCBzdWJjbWQgKnNjOworLQlyZWdpc3RlciBjaGFyICoqY3BwOworKwlzdHJ1Y3QgbmFtZWxpc3QgKmY7CisrCXN0cnVjdCBzdWJjbWQgKnNjOworKwljaGFyICoqY3BwOworIAlpbnQgbiwgZGRpciwgZGVzdGRpciwgb3B0cyA9IG9wdGlvbnM7CisgCXN0cnVjdCBuYW1lbGlzdCAqZmlsZXM7CisgCXN0cnVjdCBzdWJjbWQgKnNiY21kczsKK0BAIC01NjcsNyArNTY3LDYgQEAKKyAJCX0KKyAJfQorIAorLWRvbmU6CisgCS8qCisgCSAqIFJ1biBhbnkgY29tbWFuZHMgZm9yIHRoZSBlbnRpcmUgY21kCisgCSAqLworQEAgLTU4NCw3ICs1ODMsNyBAQAorIAkJCW5vdGlmeShyaG9zdCwgc2MtPnNjX2FyZ3MsICh0aW1lX3QpIDApOworIAorIAlpZiAoIW5mbGFnKSB7CistCQlyZWdpc3RlciBzdHJ1Y3QgbGlua2J1ZiAqbmV4dGwsICpsOworKwkJc3RydWN0IGxpbmtidWYgKm5leHRsLCAqbDsKKyAKKyAJCWZvciAobCA9IGloZWFkOyBsICE9IE5VTEw7IGZyZWVsaW5raW5mbyhsKSwgbCA9IG5leHRsKSB7CisgCQkJbmV4dGwgPSBsLT5uZXh0cDsKK0BAIC02MDEsMTEgKzYwMCwxMiBAQAorIAlzZXRqbXBfb2sgPSBGQUxTRTsKKyB9CisgCisraW50Cisgb2tuYW1lKG5hbWUpCistCXJlZ2lzdGVyIGNoYXIgKm5hbWU7CisrCWNoYXIgKm5hbWU7CisgeworLQlyZWdpc3RlciBjaGFyICpjcCA9IG5hbWU7CistCXJlZ2lzdGVyIGludCBjLCBpc2JhZDsKKysJY2hhciAqY3AgPSBuYW1lOworKwlpbnQgYywgaXNiYWQ7CisgCisgCWZvciAoaXNiYWQgPSBGQUxTRTsgKmNwICYmICFpc2JhZDsgKytjcCkgeworIAkJYyA9ICpjcDsKK0BAIC02MjcsOSArNjI3LDkgQEAKKyAJc3RydWN0IHN1YmNtZCAqc2JjbWRzOworIAljaGFyICoqZW52OworIHsKKy0JcmVnaXN0ZXIgRElSICpkOworLQlyZWdpc3RlciBESVJFTlRSWSAqZHA7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwlESVIgKmQ7CisrCURJUkVOVFJZICpkcDsKKysJY2hhciAqY3A7CisgCWNoYXIgKm9wdGFyZ2V0OworIAlpbnQgbGVuOworIAorQEAgLTY0MSw3ICs2NDEsNyBAQAorIAl9CisgCW9wdGFyZ2V0ID0gcHRhcmdldDsKKyAJbGVuID0gcHRhcmdldCAtIHRhcmdldDsKKy0Jd2hpbGUgKGRwID0gcmVhZGRpcihkKSkgeworKwl3aGlsZSAoKGRwID0gcmVhZGRpcihkKSkpIHsKKyAJCWlmICghc3RyY21wKGRwLT5kX25hbWUsICIuIikgfHwgIXN0cmNtcChkcC0+ZF9uYW1lLCAiLi4iKSkKKyAJCQljb250aW51ZTsKKyAJCWlmIChsZW4gKyAxICsgKGludClzdHJsZW4oZHAtPmRfbmFtZSkgPj0gQlVGU0laIC0gMSkgeworQEAgLTY1MSw3ICs2NTEsNyBAQAorIAkJcHRhcmdldCA9IG9wdGFyZ2V0OworIAkJKnB0YXJnZXQrKyA9ICcvJzsKKyAJCWNwID0gZHAtPmRfbmFtZTsKKy0JCXdoaWxlICgqcHRhcmdldCsrID0gKmNwKyspCisrCQl3aGlsZSAoKCpwdGFyZ2V0KysgPSAqY3ArKykpCisgCQkJOworIAkJcHRhcmdldC0tOworIAkJY21wdGltZSh0YXJnZXQsIHNiY21kcywgZW52KTsKK0BAIC03NDAsOSArNzQwLDkgQEAKKyAJc3RydWN0IGNtZCAqY21kOworIAljaGFyICoqZmlsZXY7CisgeworLQlyZWdpc3RlciBzdHJ1Y3Qgc3ViY21kICpzYzsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpmOworLQlyZWdpc3RlciBjaGFyICpjcCwgKipjcHA7CisrCXN0cnVjdCBzdWJjbWQgKnNjOworKwlzdHJ1Y3QgbmFtZWxpc3QgKmY7CisrCWNoYXIgKmNwLCAqKmNwcDsKKyAJc3RydWN0IHN0YXQgc3RiOworIAlzdHJ1Y3QgbmFtZWxpc3QgKmZpbGVzID0gY21kLT5jX2ZpbGVzOworIAlzdHJ1Y3Qgc3ViY21kICpzYmNtZHMgPSBjbWQtPmNfY21kczsKK0BAIC04MjQsOCArODI0LDggQEAKKyBleHRlcm4gaW50IGV4Y2VwdChmaWxlKQorIAljaGFyICpmaWxlOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0CXN1YmNtZCAqc2M7CistCXJlZ2lzdGVyIHN0cnVjdAluYW1lbGlzdCAqbmw7CisrCXN0cnVjdAlzdWJjbWQgKnNjOworKwlzdHJ1Y3QJbmFtZWxpc3QgKm5sOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAiZXhjZXB0KCVzKSIsIGZpbGUpOworIAorQEAgLTkxOCw4ICs5MTgsOCBAQAorIAlpbnQgYXJnYzsKKyAJY2hhciAqKmFyZ3Y7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKmY7CistCXJlZ2lzdGVyIGludCBpOworKwlzdHJ1Y3QgbmFtZWxpc3QgKmY7CisrCWludCBpOworIAorIAlpZiAoYXJnYykgeworIAkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgeworQEAgLTk2Miw5ICs5NjIsOSBAQAorIAlpbnQgYXJnYzsKKyAJY2hhciAqKmFyZ3Y7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgY21kICpjOworLQlyZWdpc3RlciBjaGFyICpjcDsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCXN0cnVjdCBjbWQgKmM7CisrCWNoYXIgKmNwOworKwlpbnQgaTsKKyAKKyAJKHZvaWQpIHNpZ25hbChTSUdIVVAsIHNpZ2hhbmRsZXIpOworIAkodm9pZCkgc2lnbmFsKFNJR0lOVCwgc2lnaGFuZGxlcik7CitAQCAtMTAzMiw3ICsxMDMyLDcgQEAKKyAKKyAJCWlmIChob3N0bGlzdCkgeworIAkJCS8qIERvIHNwZWNpZmljIGhvc3RzIGFzIHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmUgKi8KKy0JCQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKm5scHRyOworKwkJCXN0cnVjdCBuYW1lbGlzdCAqbmxwdHI7CisgCisgCQkJZm9yIChubHB0ciA9IGhvc3RsaXN0OyBubHB0cjsgbmxwdHIgPSBubHB0ci0+bl9uZXh0KQorIAkJCQkvKgorLS0tIHJkaXN0LTYuMS41L3NyYy9kaXN0b3B0LmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjA5OjExLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9kaXN0b3B0LmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC02LDcgKzYsNyBAQAorICAqIGFwcHJvcHJpYXRlbHkuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZGlzdG9wdC5jLHYgNi4xMiAxOTk4LzExLzEwIDA0OjA5OjExIG1jb29wZXIgRXhwICQiOworIAorQEAgLTU1LDcgKzU1LDcgQEAKKyBleHRlcm4gRElTVE9QVElORk8gKmdldGRpc3RvcHQobmFtZSkKKyAJY2hhciAqbmFtZTsKKyB7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAKKyAJZm9yIChpID0gMDsgZGlzdG9wdGluZm9baV0uZG9fbmFtZTsgKytpKQorIAkJaWYgKHN0cmNhc2VjbXAobmFtZSwgZGlzdG9wdGluZm9baV0uZG9fbmFtZSkgPT0gMCkKK0BAIC03NCw3ICs3NCw3IEBACisgCW9wdF90ICpvcHRwdHI7CisgCWludCBkb2VycnM7CisgeworLQlyZWdpc3RlciBjaGFyICpzdHJpbmcsICpvcHRzdHI7CisrCWNoYXIgKnN0cmluZywgKm9wdHN0cjsKKyAJRElTVE9QVElORk8gKmRpc3RvcHQ7CisgCWludCBuZWdhdGU7CisgCitAQCAtOTMsNyArOTMsNyBAQAorIAkJICogYW5kIHRoZSBvcHRpb24gc3RhcnRzIHdpdGggIm5vIiwgc3RyaXAgIm5vIgorIAkJICogZnJvbSBvcHRpb24gYW5kIHJldHJ5IGxvb2t1cC4KKyAJCSAqLworLQkJaWYgKGRpc3RvcHQgPSBnZXRkaXN0b3B0KG9wdHN0cikpIHsKKysJCWlmICgoZGlzdG9wdCA9IGdldGRpc3RvcHQob3B0c3RyKSkpIHsKKyAJCQlGTEFHX09OKCpvcHRwdHIsIGRpc3RvcHQtPmRvX3ZhbHVlKTsKKyAJCQljb250aW51ZTsKKyAJCX0KK0BAIC0xMTYsNyArMTE2LDcgQEAKKyAgKi8KKyBleHRlcm4gY2hhciAqZ2V0ZGlzdG9wdGxpc3QoKQorIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAlzdGF0aWMgY2hhciBidWZbMTAyNF07CisgCisgCWZvciAoaSA9IDAsIGJ1ZlswXSA9IENOVUxMOyBkaXN0b3B0aW5mb1tpXS5kb19uYW1lOyArK2kpIHsKK0BAIC0xMzgsNyArMTM4LDcgQEAKKyBleHRlcm4gY2hhciAqZ2V0b25kaXN0b3B0bGlzdChvcHRzKQorIAlvcHRfdCBvcHRzOworIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAlzdGF0aWMgY2hhciBidWZbMTAyNF07CisgCisgCWZvciAoaSA9IDAsIGJ1ZlswXSA9IENOVUxMOyBkaXN0b3B0aW5mb1tpXS5kb19uYW1lOyArK2kpIHsKKy0tLSByZGlzdC02LjEuNS9zcmMvZXhwYW5kLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjA5OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9leHBhbmQuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBleHBhbmQuYyx2IDYuMTkgMTk5OC8xMS8xMCAwNDowOTozMSBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC04MSw5ICs4MSw5IEBACisgCQkgICAgICBzaXplb2YoKnNvcnRiYXNlKSwgYXJnY21wKSwgc29ydGJhc2UgPSAmZWFyZ3ZbZWFyZ2NdCisgCisgc3RhdGljIHZvaWQgQ2F0KHMxLCBzMikJCQkJLyogcXVvdGUgaW4gczEgYW5kIHMyICovCistCXJlZ2lzdGVyIHVfY2hhciAqczEsICpzMjsKKysJdV9jaGFyICpzMSwgKnMyOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAlpbnQgbGVuID0gc3RybGVuKChjaGFyICopczEpICsgc3RybGVuKChjaGFyICopczIpICsgMjsKKyAKKyAJaWYgKChlYXJnYyArIDEpID49IE1BWEVBUkdTKSB7CitAQCAtOTcsMTIgKzk3LDEyIEBACisgCWRvIHsgCisgCQlpZiAoKnMxID09IFFVT1RFQ0hBUikgCisgCQkJczErKzsgCistCX0gd2hpbGUgKCpjcCsrID0gKnMxKyspOworKwl9IHdoaWxlICgoKmNwKysgPSAqczErKykpOworIAljcC0tOworIAlkbyB7IAorIAkJaWYgKCpzMiA9PSBRVU9URUNIQVIpIAorIAkJCXMyKys7IAorLQl9IHdoaWxlICgqY3ArKyA9ICpzMisrKTsKKysJfSB3aGlsZSAoKCpjcCsrID0gKnMyKyspKTsKKyB9CisgCisgc3RhdGljIHZvaWQgYWRkcGF0aChjKQorQEAgLTEzMSw4ICsxMzEsOCBAQAorIAlzdHJ1Y3QgbmFtZWxpc3QgKmxpc3Q7CisgCWludCB3aDsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmwsICpwcmV2OworLQlyZWdpc3RlciBpbnQgbjsKKysJc3RydWN0IG5hbWVsaXN0ICpubCwgKnByZXY7CisrCWludCBuOworIAljaGFyIHBhdGhidWZbQlVGU0laXTsKKyAKKyAJaWYgKGRlYnVnKQorQEAgLTE4Miw3ICsxODIsNyBAQAorIAl1X2NoYXIgKnN0cjsKKyAJaW50IGNoOworIHsKKy0JcmVnaXN0ZXIgdV9jaGFyICpjcDsKKysJdV9jaGFyICpjcDsKKyAKKyAJZm9yIChjcCA9IHN0cjsgY3AgJiYgKmNwICE9IENOVUxMOyArK2NwKQorIAkJaWYgKGNoID09ICpjcCkKK0BAIC0xOTQsOCArMTk0LDggQEAKKyB2b2lkIGV4cHN0cihzKQorIAl1X2NoYXIgKnM7CisgeworLQlyZWdpc3RlciB1X2NoYXIgKmNwLCAqY3AxOworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKnRwOworKwl1X2NoYXIgKmNwLCAqY3AxOworKwlzdHJ1Y3QgbmFtZWxpc3QgKnRwOworIAl1X2NoYXIgKnRhaWw7CisgCXVfY2hhciBlYnVmW0JVRlNJWl07CisgCXVfY2hhciB2YXJidWZmW0JVRlNJWl07CitAQCAtMzAyLDcgKzMwMiw3IEBACisgCQkJY3AxID0gKHVfY2hhciAqKXB3LT5wd19kaXI7CisgCQkJcyA9IGNwOworIAkJfQorLQkJZm9yIChjcCA9ICh1X2NoYXIgKilwYXRoOyAqY3ArKyA9ICpjcDErKzsgKQorKwkJZm9yIChjcCA9ICh1X2NoYXIgKilwYXRoOyAoKmNwKysgPSAqY3AxKyspOyApCisgCQkJOworIAkJdHBhdGhwID0gcGF0aHAgPSAoY2hhciAqKWNwIC0gMTsKKyAJfSBlbHNlIHsKK0BAIC0zMjYsNyArMzI2LDcgQEAKKyAJc29ydCgpOworIH0KKyAKKy1zdGF0aWMKKytzdGF0aWMgaW50CisgYXJnY21wKGExLCBhMikKKyAJY2hhciAqKmExLCAqKmEyOworIHsKK0BAIC0zNDEsOCArMzQxLDggQEAKKyB2b2lkIGV4cHNoKHMpCQkJCS8qIHF1b3RlIGluIHMgKi8KKyAJdV9jaGFyICpzOworIHsKKy0JcmVnaXN0ZXIgdV9jaGFyICpjcCwgKm9sZGNwOworLQlyZWdpc3RlciBjaGFyICpzcGF0aHA7CisrCXVfY2hhciAqY3AsICpvbGRjcDsKKysJY2hhciAqc3BhdGhwOworIAlzdHJ1Y3Qgc3RhdCBzdGI7CisgCisgCXNwYXRocCA9IHBhdGhwOworQEAgLTM4MCw3ICszODAsNyBAQAorIAljaGFyICpwYXR0ZXJuOworIHsKKyAJc3RydWN0IHN0YXQgc3RiOworLQlyZWdpc3RlciBESVJFTlRSWSAqZHA7CisrCURJUkVOVFJZICpkcDsKKyAJRElSICpkaXJwOworIAorIAlkaXJwID0gb3BlbmRpcihwYXRoKTsKK0BAIC00MTcsMTEgKzQxNywxMiBAQAorIAl5eWVycm9yKHBhdGgpOworIH0KKyAKKytpbnQKKyBleGVjYnJjKHAsIHMpCQkJCS8qIHF1b3RlIGluIHAgKi8KKyAJdV9jaGFyICpwLCAqczsKKyB7CisgCXVfY2hhciByZXN0YnVmW0JVRlNJWiArIDJdOworLQlyZWdpc3RlciB1X2NoYXIgKnBlLCAqcG0sICpwbDsKKysJdV9jaGFyICpwZSwgKnBtLCAqcGw7CisgCWludCBicmNsZXYgPSAwOworIAl1X2NoYXIgKmxtLCBzYXZlYzsKKyAJY2hhciAqc3BhdGhwOworQEAgLTUwNywxMSArNTA4LDEyIEBACisgCXJldHVybiAoMCk7CisgfQorIAorK2ludAorIG1hdGNoKHMsIHApCQkJCQkvKiBxdW90ZSBpbiBwICovCisgCWNoYXIgKnMsICpwOworIHsKKy0JcmVnaXN0ZXIgaW50IGM7CistCXJlZ2lzdGVyIGNoYXIgKnNlbnRwOworKwlpbnQgYzsKKysJY2hhciAqc2VudHA7CisgCWNoYXIgc2V4cGFueSA9IGV4cGFueTsKKyAKKyAJaWYgKCpzID09ICcuJyAmJiAqcCAhPSAnLicpCitAQCAtNTI0LDExICs1MjYsMTIgQEAKKyAJcmV0dXJuIChjKTsKKyB9CisgCisraW50CisgYW1hdGNoKHMsIHApCQkJCQkvKiBxdW90ZSBpbiBwICovCistCXJlZ2lzdGVyIGNoYXIgKnM7CistCXJlZ2lzdGVyIHVfY2hhciAqcDsKKysJY2hhciAqczsKKysJdV9jaGFyICpwOworIHsKKy0JcmVnaXN0ZXIgaW50IHNjYzsKKysJaW50IHNjYzsKKyAJaW50IG9rLCBsYzsKKyAJY2hhciAqc3BhdGhwOworIAlzdHJ1Y3Qgc3RhdCBzdGI7CitAQCAtNTQ1LDcgKzU0OCw3IEBACisgCQljYXNlICdbJzoKKyAJCQlvayA9IDA7CisgCQkJbGMgPSAwNzc3Nzc7CistCQkJd2hpbGUgKGNjID0gKnArKykgeworKwkJCXdoaWxlICgoY2MgPSAqcCsrKSkgeworIAkJCQlpZiAoY2MgPT0gJ10nKSB7CisgCQkJCQlpZiAob2spCisgCQkJCQkJYnJlYWs7CitAQCAtNTk5LDcgKzYwMiw3IEBACisgCQkJd2hpbGUgKCpzKQorIAkJCQlhZGRwYXRoKCpzKyspOworIAkJCWFkZHBhdGgoJy8nKTsKKy0JCQlpZiAoc3RhdChwYXRoLCAmc3RiKSA9PSAwICYmIFNfSVNESVIoc3RiLnN0X21vZGUpKQorKwkJCWlmIChzdGF0KHBhdGgsICZzdGIpID09IDAgJiYgU19JU0RJUihzdGIuc3RfbW9kZSkpIHsKKyAJCQkJaWYgKCpwID09IENOVUxMKSB7CisgCQkJCQlpZiAod2hpY2ggJiBFX1RJTERFKQorIAkJCQkJCUNhdCgodV9jaGFyICopcGF0aCwgCitAQCAtNjA5LDYgKzYxMiw3IEBACisgCQkJCQkJICAgICh1X2NoYXIgKil0cGF0aHApOworIAkJCQl9IGVsc2UKKyAJCQkJCWV4cHNoKHApOworKwkJCX0KKyAJCQlwYXRocCA9IHNwYXRocDsKKyAJCQkqcGF0aHAgPSBDTlVMTDsKKyAJCQlyZXR1cm4gKDApOworLS0tIHJkaXN0LTYuMS41L3NyYy9sb29rdXAuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTI6NTYuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2xvb2t1cC5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNyArMzgsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IGxvb2t1cC5jLHYgNi45IDE5OTgvMTEvMTAgMDQ6MTI6NTYgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtNjgsMTEgKzY4LDEyIEBACisgLyoKKyAgKiBEZWZpbmUgYSB2YXJpYWJsZSBmcm9tIGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50LgorICAqLworK3ZvaWQKKyBkZWZpbmUobmFtZSkKKyAJY2hhciAqbmFtZTsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwLCAqczsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubDsKKysJY2hhciAqY3AsICpzOworKwlzdHJ1Y3QgbmFtZWxpc3QgKm5sOworIAlzdHJ1Y3QgbmFtZWxpc3QgKnZhbHVlOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAiZGVmaW5lKCVzKSIsIG5hbWUpOworQEAgLTEzNyw5ICsxMzgsOSBAQAorIAlpbnQgYWN0aW9uOworIAlzdHJ1Y3QgbmFtZWxpc3QgKnZhbHVlOworIHsKKy0JcmVnaXN0ZXIgdW5zaWduZWQgbjsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CistCXJlZ2lzdGVyIHN0cnVjdCBzeW1lbnQgKnM7CisrCXVuc2lnbmVkIG47CisrCWNoYXIgKmNwOworKwlzdHJ1Y3Qgc3ltZW50ICpzOworIAljaGFyIGVidWZbQlVGU0laXTsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgImxvb2t1cCglcywgJWQsICV4KSIsIG5hbWUsIGFjdGlvbiwgdmFsdWUpOworLS0tIHJkaXN0LTYuMS41L3NyYy9pc2V4ZWMuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTE6NDIuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2lzZXhlYy5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzcsNyArMzcsNyBAQAorICAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBpc2V4ZWMuYyx2IDYuMjIgMTk5OC8xMS8xMCAwNDoxMTo0MiBtY29vcGVyIEV4cCAkIjsKKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvc2lnbmFsLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjE2OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zaWduYWwuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBzaWduYWwuYyx2IDYuMiAxOTk4LzExLzEwIDA0OjE2OjEzIG1jb29wZXIgRXhwICQiOworIAorLS0tIHJkaXN0LTYuMS41L3NyYy9yc2hyY21kLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjE1OjA3LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9yc2hyY21kLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMCw3ICsxMCw3IEBACisgICogQ2hyaXMgU2llYmVubWFubiA8Y2tzQHV0Y2MudXRvcm9udG8uY2E+LgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IHJzaHJjbWQuYyx2IDEuOSAxOTk4LzExLzEwIDA0OjE1OjA3IG1jb29wZXIgRXhwICQiOworIAorQEAgLTM0LDYgKzM0LDcgQEAKKyAgKiBwcm9ncmFtIGluIHBsYWNlIG9mIGEgZGlyZWN0IHJjbWQoKSBmdW5jdGlvbiBjYWxsIHNvIGFzIHRvCisgICogYXZvaWQgaGF2aW5nIHRvIGJlIHJvb3QuCisgICovCisraW50CisgcnNocmNtZChhaG9zdCwgcG9ydCwgbHVzZXIsIHJ1c2VyLCBjbWQsIGZkMnApCisgCWNoYXIgIAkqKmFob3N0OworIAl1X3Nob3J0CXBvcnQ7CitAQCAtMTA4LDYgKzEwOSw3IEBACisgCQkodm9pZCkgd2FpdCgwKTsKKyAJCXJldHVybiBzcFswXTsKKyAJfQorKwlyZXR1cm4gLTE7CisgCS8qTk9UUkVBQ0hFRCovCisgfQorIAorLS0tIHJkaXN0LTYuMS41L3NyYy9jb21tb24uYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MDk6MDEuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2NvbW1vbi5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNyArMzgsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IGNvbW1vbi5jLHYgNi44NCAxOTk4LzExLzEwIDA0OjA5OjAxIG1jb29wZXIgRXhwICQiOworIAorQEAgLTg3LDE0ICs4NywxNCBAQAorIC8qIAorICAqIEZyb250IGVuZCB0byB3cml0ZSgpIHRoYXQgaGFuZGxlcyBwYXJ0aWFsIHdyaXRlKCkgcmVxdWVzdHMuCisgICovCistZXh0ZXJuIFdSSVRFX1JFVFVSTl9UIHh3cml0ZShmZCwgYnVmLCBsZW4pCisrV1JJVEVfUkVUVVJOX1QgeHdyaXRlKGZkLCBidWYsIGxlbikKKyAJaW50IGZkOworIAl2b2lkICpidWY7CisgCVdSSVRFX0FNVF9UIGxlbjsKKyB7CisgICAgIAlXUklURV9BTVRfVCBubGVmdCA9IGxlbjsKKyAJV1JJVEVfUkVUVVJOX1QgbndyaXR0ZW47CistCXJlZ2lzdGVyIGNoYXIgKnB0ciA9IGJ1ZjsKKysJY2hhciAqcHRyID0gYnVmOworICAgICAgICAgIAorIAl3aGlsZSAobmxlZnQgPiAwKSB7CisgCSAgICAJaWYgKChud3JpdHRlbiA9IHdyaXRlKGZkLCBwdHIsIG5sZWZ0KSkgPD0gMCkgeworQEAgLTExMCwxNCArMTEwLDE0IEBACisgLyoKKyAgKiBTZXQgcHJvZ3JhbSBuYW1lCisgICovCistZXh0ZXJuIHZvaWQgc2V0cHJvZ25hbWUoYXJndikKKyt2b2lkIHNldHByb2duYW1lKGFyZ3YpCisgCWNoYXIgKiphcmd2OworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAorIAlpZiAoIXByb2duYW1lKSB7CisgCQlwcm9nbmFtZSA9IHN0cmR1cChhcmd2WzBdKTsKKy0JCWlmIChjcCA9IHN0cnJjaHIocHJvZ25hbWUsICcvJykpCisrCQlpZiAoKGNwID0gc3RycmNocihwcm9nbmFtZSwgJy8nKSkpCisgCQkJcHJvZ25hbWUgPSBjcCArIDE7CisgCX0KKyB9CitAQCAtMTI1LDE0ICsxMjUsMTQgQEAKKyAvKgorICAqIERvIHJ1bi10aW1lIGluaXRpYWxpemF0aW9uCisgICovCistZXh0ZXJuIGludCBpbml0KGFyZ2MsIGFyZ3YsIGVudnApCisraW50IGluaXQoYXJnYywgYXJndiwgZW52cCkKKyAJLypBUkdTVVNFRCovCisgCWludCBhcmdjOworIAljaGFyICoqYXJndjsKKyAJY2hhciAqKmVudnA7CisgeworLQlyZWdpc3RlciBpbnQgaTsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWludCBpOworKwljaGFyICpjcDsKKyAKKyAJaWYgKCFpc3NlcnZlcikKKyAJCSh2b2lkKSBzaWduYWwoU0lHU0VHViwgc2lnaGFuZGxlcik7CitAQCAtMTgyLDcgKzE4Miw3IEBACisgLyoKKyAgKiBGaW5pc2ggdGhpbmdzIHVwIGJlZm9yZSBlbmRpbmcuCisgICovCistZXh0ZXJuIHZvaWQgZmluaXNoKCkKKyt2b2lkIGZpbmlzaCgpCisgeworIAlleHRlcm4gam1wX2J1ZiBmaW5pc2hfam1wYnVmOworIAorQEAgLTIxNiw3ICsyMTYsNyBAQAorIC8qCisgICogSGFuZGxlIGxvc3QgY29ubmVjdGlvbnMKKyAgKi8KKy1leHRlcm4gdm9pZCBsb3N0Y29ubigpCisrdm9pZCBsb3N0Y29ubigpCisgeworIAkvKiBQcmV2ZW50IGxvb3BpbmcgKi8KKyAJKHZvaWQpIHNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKK0BAIC0yMzIsNyArMjMyLDcgQEAKKyAvKgorICAqIERvIGEgY29yZSBkdW1wCisgICovCistZXh0ZXJuIHZvaWQgY29yZWR1bXAoKQorK3ZvaWQgY29yZWR1bXAoKQorIHsKKyAJZXJyb3IoIlNlZ21lbnRhdGlvbiB2aW9sYXRpb24gLSBkdW1waW5nIGNvcmUgW1BJRCA9ICVkLCAlc10iLAorIAkgICAgICBnZXRwaWQoKSwgCitAQCAtMjQ1LDcgKzI0NSw3IEBACisgLyoKKyAgKiBHZW5lcmFsIHNpZ25hbCBoYW5kbGVyCisgICovCistZXh0ZXJuIHZvaWQgc2lnaGFuZGxlcihzaWcpCisrdm9pZCBzaWdoYW5kbGVyKHNpZykKKyAJaW50IHNpZzsKKyB7CisgCWRlYnVnbXNnKERNX0NBTEwsICJzaWdoYW5kbGVyKCkgcmVjZWl2ZWQgc2lnbmFsICVkXG4iLCBzaWcpOworQEAgLTMyNSw3ICszMjUsNyBAQAorIC8qCisgICogU3RkYXJnIGZyb250ZW5kIHRvIHNlbmRjbWRtc2coKQorICAqLworLWV4dGVybiBpbnQgc2VuZGNtZChjaGFyIGNtZCwgY2hhciAqZm10LCAuLi4pCisraW50IHNlbmRjbWQoY2hhciBjbWQsIGNoYXIgKmZtdCwgLi4uKQorIHsKKyAJc3RhdGljIGNoYXIgYnVmW0JVRlNJWl07CisgCXZhX2xpc3QgYXJnczsKK0BAIC0zNDUsNyArMzQ1LDcgQEAKKyAvKgorICAqIFZhcmFyZ3MgZnJvbnRlbmQgdG8gc2VuZGNtZG1zZygpCisgICovCistZXh0ZXJuIGludCBzZW5kY21kKHZhX2FsaXN0KQorK2ludCBzZW5kY21kKHZhX2FsaXN0KQorIAl2YV9kY2wKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZltCVUZTSVpdOworQEAgLTM3Miw3ICszNzIsNyBAQAorICAqIFN0dXBpZCBmcm9udGVuZCB0byBzZW5kY21kbXNnKCkKKyAgKi8KKyAvKlZBUkFSR1MyKi8KKy1leHRlcm4gaW50IHNlbmRjbWQoY21kLCBmbXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKKytpbnQgc2VuZGNtZChjbWQsIGZtdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQorIAljaGFyIGNtZDsKKyAJY2hhciAqZm10OworIHsKK0BAIC00MzMsMTMgKzQzMywxMyBAQAorICAqIGVycm9ycywgY2FsbCBjbGVhbnVwKCkgb3IgbG9zdGNvbm4oKS4gIEluIG90aGVyIHdvcmRzLCB1bmxlc3MKKyAgKiB0aGUgdGhpcmQgYXJndW1lbnQgaXMgbm9uemVybywgdGhpcyByb3V0aW5lIG5ldmVyIHJldHVybnMgZmFpbHVyZS4KKyAgKi8KKy1leHRlcm4gaW50IHJlbWxpbmUoYnVmZmVyLCBzcGFjZSwgZG9jbGVhbikKKy0JcmVnaXN0ZXIgdV9jaGFyICpidWZmZXI7CisraW50IHJlbWxpbmUoYnVmZmVyLCBzcGFjZSwgZG9jbGVhbikKKysJdV9jaGFyICpidWZmZXI7CisgCWludCBzcGFjZTsKKyAJaW50IGRvY2xlYW47CisgeworLQlyZWdpc3RlciBpbnQgYywgbGVmdCA9IHNwYWNlOworLQlyZWdpc3RlciB1X2NoYXIgKnAgPSBidWZmZXI7CisrCWludCBjLCBsZWZ0ID0gc3BhY2U7CisrCXVfY2hhciAqcCA9IGJ1ZmZlcjsKKyAKKyAJaWYgKHJlbV9yIDwgMCkgeworIAkJZXJyb3IoIkNhbm5vdCByZWFkIHJlbW90ZSBpbnB1dDogUmVtb3RlIGRlc2NyaXB0b3Igbm90IG9wZW4uIik7CitAQCAtNDk0LDkgKzQ5NCw5IEBACisgLyoKKyAgKiBOb24tbGluZS1vcmllbnRlZCByZW1vdGUgcmVhZC4KKyAgKi8KKy1yZWFkcmVtKHAsIHNwYWNlKQorK2ludCByZWFkcmVtKHAsIHNwYWNlKQorIAljaGFyICpwOworLQlyZWdpc3RlciBpbnQgc3BhY2U7CisrCWludCBzcGFjZTsKKyB7CisgCWlmIChyZW1sZWZ0IDw9IDApIHsKKyAJCS8qCitAQCAtNTI3LDcgKzUyNyw3IEBACisgLyoKKyAgKiBHZXQgdGhlIHVzZXIgbmFtZSBmb3IgdGhlIHVpZC4KKyAgKi8KKy1leHRlcm4gY2hhciAqZ2V0dXNlcm5hbWUodWlkLCBmaWxlLCBvcHRzKQorK2NoYXIgKmdldHVzZXJuYW1lKHVpZCwgZmlsZSwgb3B0cykKKyAJVUlEX1QgdWlkOworIAljaGFyICpmaWxlOworIAlvcHRfdCBvcHRzOworQEAgLTU2Niw3ICs1NjYsNyBAQAorIC8qCisgICogR2V0IHRoZSBncm91cCBuYW1lIGZvciB0aGUgZ2lkLgorICAqLworLWV4dGVybiBjaGFyICpnZXRncm91cG5hbWUoZ2lkLCBmaWxlLCBvcHRzKQorK2NoYXIgKmdldGdyb3VwbmFtZShnaWQsIGZpbGUsIG9wdHMpCisgCUdJRF9UIGdpZDsKKyAJY2hhciAqZmlsZTsKKyAJb3B0X3Qgb3B0czsKK0BAIC02MDQsNyArNjA0LDcgQEAKKyAvKgorICAqIFJlYWQgYSByZXNwb25zZSBmcm9tIHRoZSByZW1vdGUgaG9zdC4KKyAgKi8KKy1leHRlcm4gaW50IHJlc3BvbnNlKCkKKytpbnQgcmVzcG9uc2UoKQorIHsKKyAJc3RhdGljIHVfY2hhciByZXNwW0JVRlNJWl07CisgCXVfY2hhciAqczsKK0BAIC02NDYsNiArNjQ2LDcgQEAKKyAJCQltZXNzYWdlKE1UX0ZFUlJPUiwgIiVzIiwgcyk7CisgCQlmaW5pc2goKTsKKyAJfQorKwlyZXR1cm4gLTE7CisgCS8qTk9UUkVBQ0hFRCovCisgfQorIAorQEAgLTY1NywxMSArNjU4LDExIEBACisgICogdXNlcidzIGhvbWUgZGlyZWN0b3J5IHBhdGggbmFtZS4gUmV0dXJuIGEgcG9pbnRlciBpbiBidWYgdG8gdGhlCisgICogcGFydCBjb3JyZXNwb25kaW5nIHRvIGBmaWxlJy4KKyAgKi8KKy1leHRlcm4gY2hhciAqZXhwdGlsZGUoZWJ1ZiwgZmlsZSkKKytjaGFyICpleHB0aWxkZShlYnVmLCBmaWxlKQorIAljaGFyICplYnVmOworLQlyZWdpc3RlciBjaGFyICpmaWxlOworKwljaGFyICpmaWxlOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqczEsICpzMiwgKnMzOworKwljaGFyICpzMSwgKnMyLCAqczM7CisgCWV4dGVybiBjaGFyICpob21lZGlyOworIAorIAlpZiAoKmZpbGUgIT0gJ34nKSB7CitAQCAtNjk0LDEyICs2OTUsMTIgQEAKKyAJCQkqczMgPSAnLyc7CisgCQlzMiA9IHB3LT5wd19kaXI7CisgCX0KKy0JZm9yIChzMSA9IGVidWY7ICpzMSsrID0gKnMyKys7ICkKKysJZm9yIChzMSA9IGVidWY7ICgqczErKyA9ICpzMisrKTsgKQorIAkJOworIAlzMiA9IC0tczE7CisgCWlmIChzMyAhPSBOVUxMKSB7CisgCQlzMisrOworLQkJd2hpbGUgKCpzMSsrID0gKnMzKyspCisrCQl3aGlsZSAoKCpzMSsrID0gKnMzKyspKQorIAkJCTsKKyAJfQorIAlyZXR1cm4oczIpOworQEAgLTcxMCw3ICs3MTEsNyBAQAorICAqIFNldCBvdXIgZWZmZWN0aXZlIHVzZXIgaWQgdG8gdGhlIHVzZXIgcnVubmluZyB1cy4KKyAgKiBUaGlzIHNob3VsZCBiZSB0aGUgdWlkIHdlIGRvIG1vc3Qgb2Ygb3VyIHdvcmsgYXMuCisgICovCistZXh0ZXJuIGludCBiZWNvbWV1c2VyKCkKKytpbnQgYmVjb21ldXNlcigpCisgeworIAlpbnQgciA9IDA7CisgCitAQCAtNzMyLDcgKzczMyw3IEBACisgLyoKKyAgKiBTZXQgb3VyIGVmZmVjdGl2ZSB1c2VyIGlkIHRvICJyb290IiAodWlkID0gMCkKKyAgKi8KKy1leHRlcm4gaW50IGJlY29tZXJvb3QoKQorK2ludCBiZWNvbWVyb290KCkKKyB7CisgCWludCByID0gMDsKKyAKK0BAIC03NTMsNyArNzU0LDcgQEAKKyAvKgorICAqIFNldCBhY2Nlc3MgYW5kIG1vZGlmeSB0aW1lcyBvZiBhIGdpdmVuIGZpbGUKKyAgKi8KKy1leHRlcm4gaW50IHNldGZpbGV0aW1lKGZpbGUsIGF0aW1lLCBtdGltZSkKKytpbnQgc2V0ZmlsZXRpbWUoZmlsZSwgYXRpbWUsIG10aW1lKQorIAljaGFyICpmaWxlOworIAl0aW1lX3QgYXRpbWU7CisgCXRpbWVfdCBtdGltZTsKK0BAIC03OTAsNyArNzkxLDcgQEAKKyAvKgorICAqIEdldCB2ZXJzaW9uIGluZm8KKyAgKi8KKy1leHRlcm4gY2hhciAqZ2V0dmVyc2lvbigpCisrY2hhciAqZ2V0dmVyc2lvbigpCisgeworIAlzdGF0aWMgY2hhciBidWZmW0JVRlNJWl07CisgCitAQCAtODExLDcgKzgxMiw3IEBACisgeworIAlpbnQgZmRbMl0sIHBpZCwgaTsKKyAJaW50IHN0YXR1czsKKy0JcmVnaXN0ZXIgY2hhciAqY3AsICpzOworKwljaGFyICpjcCwgKnM7CisgCWNoYXIgc2J1ZltCVUZTSVpdLCBidWZbQlVGU0laXTsKKyAKKyAJaWYgKHBpcGUoZmQpIDwgMCkgeworQEAgLTkzMywxMiArOTM0LDEyIEBACisgLyoKKyAgKiBQcml2YXRlIHZlcnNpb24gb2YgYmFzZW5hbWUoKQorICAqLworLWV4dGVybiBjaGFyICp4YmFzZW5hbWUocGF0aCkKKytjaGFyICp4YmFzZW5hbWUocGF0aCkKKyAJY2hhciAqcGF0aDsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAgCistCWlmIChjcCA9IHN0cnJjaHIocGF0aCwgJy8nKSkKKysJaWYgKChjcCA9IHN0cnJjaHIocGF0aCwgJy8nKSkpCisgCQlyZXR1cm4oY3ArMSk7CisgCWVsc2UKKyAJCXJldHVybihwYXRoKTsKK0BAIC05NDksMTEgKzk1MCwxMSBAQAorICAqIHNlYXJjaCB1bnRpbCBhIGNvbXBvbmVudCBvZiB0aGF0IHBhdGggaXMgZm91bmQgYW5kCisgICogcmV0dXJuIHRoZSBmb3VuZCBmaWxlIG5hbWUuCisgICovCistZXh0ZXJuIGNoYXIgKnNlYXJjaHBhdGgocGF0aCkKKytjaGFyICpzZWFyY2hwYXRoKHBhdGgpCisgCWNoYXIgKnBhdGg7CisgeworLQlyZWdpc3RlciBjaGFyICpjcDsKKy0JcmVnaXN0ZXIgY2hhciAqZmlsZTsKKysJY2hhciAqY3A7CisrCWNoYXIgKmZpbGU7CisgCXN0cnVjdCBzdGF0IHN0YXRidWY7CisgCisgCWZvciAoOyA7KSB7CitAQCAtOTc3LDggKzk3OCw3IEBACisgLyoKKyAgKiBTZXQgbGluZSBidWZmZXJpbmcuCisgICovCistZXh0ZXJuIHZvaWQKKy1teXNldGxpbmVidWYoZnApCisrdm9pZCBteXNldGxpbmVidWYoZnApCisgCUZJTEUgKmZwOworIHsKKyAjaWYJU0VUQlVGX1RZUEUgPT0gU0VUQlVGX1NFVExJTkVCVUYKK0BAIC05OTUsOCArOTk1LDcgQEAKKyAvKgorICAqIE91ciBpbnRlcmZhY2UgdG8gc3lzdGVtIGNhbGwgdG8gZ2V0IGEgc29ja2V0IHBhaXIuCisgICovCistaW50CistZ2V0c29ja2V0cGFpcihkb21haW4sIHR5cGUsIHByb3RvY29sLCBzdikKKytpbnQgZ2V0c29ja2V0cGFpcihkb21haW4sIHR5cGUsIHByb3RvY29sLCBzdikKKyAJaW50IGRvbWFpbjsKKyAJaW50IHR5cGU7CisgCWludCBwcm90b2NvbDsKKy0tLSByZGlzdC02LjEuNS9zcmMvbWVzc2FnZS5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxMzozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvbWVzc2FnZS5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNyArMzgsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IG1lc3NhZ2UuYyx2IDYuMjUgMTk5OC8xMS8xMCAwNDoxMzozMCBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC05Nyw3ICs5Nyw3IEBACisgICovCisgZXh0ZXJuIHZvaWQgbXNncHJ1c2FnZSgpCisgeworLQlyZWdpc3RlciBpbnQgaSwgeDsKKysJaW50IGksIHg7CisgCisgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIlxuV2hlcmUgPG1zZ29wdD4gaXMgb2YgZm9ybVxuIik7CisgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgCitAQCAtMTIwLDcgKzEyMCw3IEBACisgICovCisgZXh0ZXJuIHZvaWQgbXNncHJjb25maWcoKQorIHsKKy0JcmVnaXN0ZXIgaW50IGksIHg7CisrCWludCBpLCB4OworIAlzdGF0aWMgY2hhciBidWZbTVNHQlVGU0laXTsKKyAKKyAJZGVidWdtc2coRE1fTUlTQywgIkN1cnJlbnQgbWVzc2FnZSBsb2dnaW5nIGNvbmZpZzoiKTsKK0BAIC0xNDUsNyArMTQ1LDcgQEAKKyBzdGF0aWMgTVNHRkFDSUxJVFkgKmdldG1zZ2ZhYyhuYW1lKQorIAljaGFyICpuYW1lOworIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAorIAlmb3IgKGkgPSAwOyBtc2dmYWNpbGl0eVtpXS5tZl9uYW1lOyArK2kpCisgCQlpZiAoc3RyY2FzZWNtcChuYW1lLCBtc2dmYWNpbGl0eVtpXS5tZl9uYW1lKSA9PSAwKQorQEAgLTE2MCw3ICsxNjAsNyBAQAorIHN0YXRpYyBNU0dUWVBFICpnZXRtc2d0eXBlKG5hbWUpCisgCWNoYXIgKm5hbWU7CisgeworLQlyZWdpc3RlciBpbnQgaTsKKysJaW50IGk7CisgCisgCWZvciAoaSA9IDA7IG1zZ3R5cGVzW2ldLm10X25hbWU7ICsraSkKKyAJCWlmIChzdHJjYXNlY21wKG5hbWUsIG1zZ3R5cGVzW2ldLm10X25hbWUpID09IDApCitAQCAtMTc4LDkgKzE3OCw5IEBACisgCWNoYXIgKnN0cjsKKyB7CisgCXN0YXRpYyBjaGFyIGVidWZbQlVGU0laXTsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CistCXJlZ2lzdGVyIGNoYXIgKnN0cnB0ciwgKndvcmQ7CistCXJlZ2lzdGVyIE1TR1RZUEUgKm10cDsKKysJY2hhciAqY3A7CisrCWNoYXIgKnN0cnB0ciwgKndvcmQ7CisrCU1TR1RZUEUgKm10cDsKKyAKKyAJLyoKKyAJICogTUZfU1lTTE9HIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBtZXNzYWdlIGZhY2lsaXR5IGZvciB0aGUgc2VydmVyCitAQCAtMjQwLDExICsyNDAsMTEgQEAKKyAJbXNnZmFjLT5tZl9tc2d0eXBlcyA9IDA7CS8qIFN0YXJ0IGZyb20gc2NyYXRjaCAqLworIAl3aGlsZSAoc3RycHRyKSB7CisgCQl3b3JkID0gc3RycHRyOworLQkJaWYgKGNwID0gc3RyY2hyKHN0cnB0ciwgJywnKSkKKysJCWlmICgoY3AgPSBzdHJjaHIoc3RycHRyLCAnLCcpKSkKKyAJCQkqY3ArKyA9IENOVUxMOworIAkJc3RycHRyID0gY3A7CisgCistCQlpZiAobXRwID0gZ2V0bXNndHlwZSh3b3JkKSkgeworKwkJaWYgKChtdHAgPSBnZXRtc2d0eXBlKHdvcmQpKSkgeworIAkJCW1zZ2ZhYy0+bWZfbXNndHlwZXMgfD0gbXRwLT5tdF90eXBlOworIAkJCS8qCisgCQkJICogWFhYIFRoaXMgaXMgcmVhbGx5IGEga2x1ZGdlIHVudGlsIHdlIGFkZCByZWFsCitAQCAtMjcyLDggKzI3Miw4IEBACisgCWludCBkb3NldDsKKyB7CisgCXN0YXRpYyBjaGFyIGVidWZbQlVGU0laXSwgbXNnYnVmW01TR0JVRlNJWl07CistCXJlZ2lzdGVyIGNoYXIgKmNwLCAqb3B0c3RyOworLQlyZWdpc3RlciBjaGFyICp3b3JkOworKwljaGFyICpjcCwgKm9wdHN0cjsKKysJY2hhciAqd29yZDsKKyAJTVNHRkFDSUxJVFkgKm1zZ2ZhYzsKKyAKKyAJaWYgKG1zZ3N0ciA9PSBOVUxMKQorQEAgLTMwOCw3ICszMDgsNyBAQAorIAkJaWYgKGRvc2V0KSB7CisgCQkJY2hhciAqbWNwOworIAorLQkJCWlmIChtY3AgPSBzZXRtc2d0eXBlcyhtc2dmYWMsIGNwKSkKKysJCQlpZiAoKG1jcCA9IHNldG1zZ3R5cGVzKG1zZ2ZhYywgY3ApKSkKKyAJCQkJcmV0dXJuKG1jcCk7CisgCQl9CisgCX0KK0BAIC00NjIsOCArNDYyLDkgQEAKKyAJCXJldHVybjsKKyAKKyAJaWYgKCFtc2dmYWMtPm1mX2ZwdHIpIHsKKy0JCXJlZ2lzdGVyIGNoYXIgKmNwOworKwkJY2hhciAqY3A7CisgCQljaGFyICpnZXRlbnYoKTsKKysJCWludCBmZDsKKyAKKyAJCS8qCisgCQkgKiBDcmVhdGUgYW5kIG9wZW4gYSBuZXcgdGVtcG9yYXJ5IGZpbGUKK0BAIC00NzUsNyArNDc2LDEwIEBACisgCQkodm9pZCkgc3ByaW50Zih0ZW1wZmlsZSwgIiVzLyVzIiwgY3AsIF9SRElTVF9UTVApOworIAorIAkJbXNnZmFjLT5tZl9maWxlbmFtZSA9IHRlbXBmaWxlOworLQkJKHZvaWQpIG1rdGVtcChtc2dmYWMtPm1mX2ZpbGVuYW1lKTsKKysJCWZkID0gbWtzdGVtcChtc2dmYWMtPm1mX2ZpbGVuYW1lKTsKKysJCQlpZiAoZmQgPCAwKQorKwkJCQlmYXRhbGVycigiQ2Fubm90IG9wZW4gbm90aWZ5IGZpbGUgZm9yIHdyaXRpbmc6ICVzOiAlcy4iLCBtc2dmYWMtPm1mX2ZpbGVuYW1lLCBTWVNFUlIpOworKwkJY2xvc2UoZmQpOworIAkJaWYgKChtc2dmYWMtPm1mX2ZwdHIgPSBmb3Blbihtc2dmYWMtPm1mX2ZpbGVuYW1lLCAidyIpKT09TlVMTCkKKyAJCQlmYXRhbGVycigiQ2Fubm90IG9wZW4gbm90aWZ5IGZpbGUgZm9yIHdyaXRpbmc6ICVzOiAlcy4iLAorIAkJCSAgICAgIG1zZ2ZhYy0+bWZfZmlsZW5hbWUsIFNZU0VSUik7CitAQCAtNTE1LDE1ICs1MTksMTUgQEAKKyAJaW50IGZsYWdzOworIAljaGFyICptc2didWY7CisgeworLQlyZWdpc3RlciBpbnQgaSwgeDsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWludCBpLCB4OworKwljaGFyICpjcDsKKyAJc3RhdGljIGNoYXIgbWJ1ZlsyMDQ4XTsKKyAKKyAJaWYgKG1zZ2J1ZiAmJiAqbXNnYnVmKSB7CisgCQkvKgorIAkJICogRW5zdXJlIG5vIHN0cmF5IG5ld2xpbmVzIGFyZSBwcmVzZW50CisgCQkgKi8KKy0JCWlmIChjcCA9IHN0cmNocihtc2didWYsICdcbicpKQorKwkJaWYgKChjcCA9IHN0cmNocihtc2didWYsICdcbicpKSkKKyAJCQkqY3AgPSBDTlVMTDsKKyAKKyAJCWNoZWNraG9zdG5hbWUoKTsKK0BAIC04NjMsNyArODY3LDcgQEAKKyAgKi8KKyBleHRlcm4gY2hhciAqZ2V0bm90aWZ5ZmlsZSgpCisgeworLQlyZWdpc3RlciBpbnQgaTsKKysJaW50IGk7CisgCisgCWZvciAoaSA9IDA7IG1zZ2ZhY2lsaXR5W2ldLm1mX25hbWU7IGkrKykKKyAJCWlmIChtc2dmYWNpbGl0eVtpXS5tZl9tc2dmYWMgPT0gTUZfTk9USUZZICYmCistLS0gcmRpc3QtNi4xLjUvc3JjL3NldGFyZ3MuYy5jbGVhbnVwCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3NldGFyZ3MuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBzZXRhcmdzLmMsdiA2LjUgMTk5OC8xMS8xMCAwNDoxNTo1NiBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC02NiwxMiArNjYsMTIgQEAKKyAvKgorICAqIFNldHR1cCB0aGluZ3MgZm9yIHVzaW5nIHNldHByb2N0aXRsZSgpCisgICovCistc2V0YXJnc19zZXR0dXAoYXJnYywgYXJndiwgZW52cCkKKyt2b2lkIHNldGFyZ3Nfc2V0dHVwKGFyZ2MsIGFyZ3YsIGVudnApCisgCWludAkJCWFyZ2M7CisgCWNoYXIJCSAgICAgICoqYXJndjsKKyAJY2hhcgkJICAgICAgKiplbnZwOworIHsKKy0JcmVnaXN0ZXIgaW50IAkJaTsKKysJaW50IAkJaTsKKyAJZXh0ZXJuIGNoYXIgCSAgICAgICoqZW52aXJvbjsKKyAKKyAgIAkvKiBSZW1lbWJlciB0aGUgVXNlciBFbnZpcm9ubWVudCAqLworQEAgLTkyLDEwICs5MiwxMCBAQAorIC8qCisgICogU2V0IHByb2Nlc3MgdGl0bGUKKyAgKi8KKy1leHRlcm4gdm9pZCBfc2V0cHJvY3RpdGxlKG1zZykKKyt2b2lkIF9zZXRwcm9jdGl0bGUobXNnKQorICAgICAgICAgY2hhciAqbXNnOworIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAljaGFyICpwOworIAkKKyAJcCA9IEFyZ3ZbMF07CitAQCAtMTE5LDcgKzExOSw3IEBACisgLyoKKyAgKiBWYXJhcmdzIGZyb250LWVuZCB0byBfc2V0cHJvY3RpdGxlKCkKKyAgKi8KKy1leHRlcm4gdm9pZCBzZXRwcm9jdGl0bGUodmFfYWxpc3QpCisrdm9pZCBzZXRwcm9jdGl0bGUodmFfYWxpc3QpCisgCXZhX2RjbAorIHsKKyAJc3RhdGljIGNoYXIgYnVmW0JVRlNJWl07CitAQCAtMTM4LDcgKzEzOCw3IEBACisgLyoKKyAgKiBTdGRhcmcgZnJvbnQtZW5kIHRvIF9zZXRwcm9jdGl0bGUoKQorICAqLworLWV4dGVybiB2b2lkIHNldHByb2N0aXRsZShjaGFyICpmbXQsIC4uLikKKyt2b2lkIHNldHByb2N0aXRsZShjaGFyICpmbXQsIC4uLikKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZltCVUZTSVpdOworIAl2YV9saXN0IGFyZ3M7CitAQCAtMTU1LDcgKzE1NSw3IEBACisgICogTm9uLVZhcmFyZ3MgZnJvbnQtZW5kIHRvIF9zZXRwcm9jdGl0bGUoKQorICAqLworIC8qVkFSQVJHUzEqLworLWV4dGVybiB2b2lkIHNldHByb2N0aXRsZShmbXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCisrdm9pZCBzZXRwcm9jdGl0bGUoZm10LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorIAljaGFyICpmbXQ7CisgeworIAlzdGF0aWMgY2hhciBidWZbQlVGU0laXTsKKy0tLSByZGlzdC02LjEuNS9zcmMvcmRpc3RkLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjE0OjA2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9yZGlzdGQuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiByZGlzdGQuYyx2IDYuMjMgMTk5OC8xMS8xMCAwNDoxNDowNiBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC01MywyMSArNTMsMTIgQEAKKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorIAorLS8qCistICogUHJpbnQgdXNhZ2UgbWVzc2FnZQorLSAqLworLXN0YXRpYyB2b2lkIHVzYWdlKCkKKy17CistCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIC1TIFsgLURWIF1cbiIsIHByb2duYW1lKTsKKy0JZXhpdCgxKTsKKy19CistCisgY2hhcglsb2NhbG1zZ2xpc3RbXSA9ICJzeXNsb2c9ZmVycm9yIjsKKyAKKyAvKgorICAqIFRoZSBCZWdpbm5pbmcKKyAgKi8KKy1tYWluKGFyZ2MsIGFyZ3YsIGVudnApCisraW50IG1haW4oYXJnYywgYXJndiwgZW52cCkKKyAJaW50IGFyZ2M7CisgCWNoYXIgKiphcmd2OworIAljaGFyICoqZW52cDsKK0BAIC05NSw3ICs4Niw4IEBACisgCQljYXNlICc/JzoKKyAJCWRlZmF1bHQ6CisgCQkJZXJyb3IoIkJhZCBjb21tYW5kIGxpbmUgb3B0aW9uLiIpOworLQkJCXVzYWdlKCk7CisrCQkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgLVMgWyAtRFYgXVxuIiwgcHJvZ25hbWUpOworKwkJCWV4aXQoMSk7CisgCQl9CisgCisgCWlmICghaXNzZXJ2ZXIpIHsKK0BAIC0xMDgsNyArMTAwLDcgQEAKKyAJcmVtX3cgPSBmaWxlbm8oc3Rkb3V0KTsKKyAKKyAJLyogU2V0IGxvZ2dpbmcgKi8KKy0JaWYgKGNwID0gbXNncGFyc2VvcHRzKGxvY2FsbXNnbGlzdCwgVFJVRSkpCisrCWlmICgoY3AgPSBtc2dwYXJzZW9wdHMobG9jYWxtc2dsaXN0LCBUUlVFKSkpCisgCQlmYXRhbGVycigiQmFkIG1lc3NhZ2UgbG9nZ2luZyBvcHRpb24gKCVzKTogJXMiLCAKKyAJCQkgbG9jYWxtc2dsaXN0LCBjcCk7CisgCistLS0gcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jLmNsZWFudXAJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2VydmVyLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNyw3ICszNyw3IEBACisgICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICAqIFNVQ0ggREFNQUdFLgorICAqLworLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IHNlcnZlci5jLHYgNi44NiAxOTk4LzExLzEwIDA0OjE1OjMxIG1jb29wZXIgRXhwICQiOworIAorQEAgLTE5Nyw3ICsxOTcsNyBAQAorIAlzdGF0aWMgVUlEX1QgbGFzdF91aWQgPSAoVUlEX1QpLTI7CisgCXN0YXRpYyBHSURfVCBsYXN0X3ByaW1lZ2lkOworIAlleHRlcm4gY2hhciAqbG9jdXNlcjsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAlVSURfVCB1aWQ7CisgCUdJRF9UIGdpZDsKKyAJR0lEX1QgcHJpbWVnaWQgPSAoR0lEX1QpLTI7CitAQCAtMjUyLDcgKzI1Miw3IEBACisgCSAgICAgICAgLyoKKyAJCSAqIEludmFsaWQgY2FjaGVkIHZhbHVlcyBzbyB3ZSBuZWVkIHRvIGRvIGEgbmV3IGxvb2t1cC4KKyAJCSAqLworLQkJaWYgKGdyID0gbXlnZXRncm91cChncm91cCkpIHsKKysJCWlmICgoZ3IgPSBteWdldGdyb3VwKGdyb3VwKSkpIHsKKyAJCQlsYXN0X2dpZCA9IGdpZCA9IGdyLT5ncl9naWQ7CisgCQkJc3RyY3B5KGxhc3RfZ3JvdXAsIGdyLT5ncl9uYW1lKTsKKyAJCX0gZWxzZSB7CitAQCAtMzI1LDcgKzMyNSw3IEBACisgeworIAlESVIgKmQ7CisgCXN0YXRpYyBESVJFTlRSWSAqZHA7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAJc3RydWN0IHN0YXQgc3RiOworIAljaGFyICpvcHRhcmdldDsKKyAJaW50IGxlbiwgZmFpbHVyZXMgPSAwOworQEAgLTM2Miw3ICszNjIsNyBAQAorIAorIAlvcHRhcmdldCA9IHB0YXJnZXQ7CisgCWxlbiA9IHB0YXJnZXQgLSB0YXJnZXQ7CistCXdoaWxlIChkcCA9IHJlYWRkaXIoZCkpIHsKKysJd2hpbGUgKChkcCA9IHJlYWRkaXIoZCkpKSB7CisgCQlpZiAoKERfTkFNTEVOKGRwKSA9PSAxICYmIGRwLT5kX25hbWVbMF0gPT0gJy4nKSB8fAorIAkJICAgIChEX05BTUxFTihkcCkgPT0gMiAmJiBkcC0+ZF9uYW1lWzBdID09ICcuJyAmJgorIAkJICAgICBkcC0+ZF9uYW1lWzFdID09ICcuJykpCitAQCAtMzc2LDcgKzM3Niw3IEBACisgCQlwdGFyZ2V0ID0gb3B0YXJnZXQ7CisgCQkqcHRhcmdldCsrID0gJy8nOworIAkJY3AgPSBkcC0+ZF9uYW1lOzsKKy0JCXdoaWxlICgqcHRhcmdldCsrID0gKmNwKyspCisrCQl3aGlsZSAoKCpwdGFyZ2V0KysgPSAqY3ArKykpCisgCQkJOworIAkJcHRhcmdldC0tOworIAkJaWYgKGxzdGF0KHRhcmdldCwgJnN0YikgPCAwKSB7CitAQCAtNDE0LDEwICs0MTQsMTAgQEAKKyAgKiBmb3IgZXh0cmFuZW91cyBmaWxlcyBhbmQgcmVtb3ZlIHRoZW0uCisgICovCisgc3RhdGljIHZvaWQgZG9jbGVhbihjcCkKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIHsKKyAJRElSICpkOworLQlyZWdpc3RlciBESVJFTlRSWSAqZHA7CisrCURJUkVOVFJZICpkcDsKKyAJc3RydWN0IHN0YXQgc3RiOworIAljaGFyICpvcHRhcmdldCwgKmVwOworIAlpbnQgbGVuOworQEAgLTQzNiw3ICs0MzYsNyBAQAorIAorIAlvcHRhcmdldCA9IHB0YXJnZXQ7CisgCWxlbiA9IHB0YXJnZXQgLSB0YXJnZXQ7CistCXdoaWxlIChkcCA9IHJlYWRkaXIoZCkpIHsKKysJd2hpbGUgKChkcCA9IHJlYWRkaXIoZCkpKSB7CisgCQlpZiAoKERfTkFNTEVOKGRwKSA9PSAxICYmIGRwLT5kX25hbWVbMF0gPT0gJy4nKSB8fAorIAkJICAgIChEX05BTUxFTihkcCkgPT0gMiAmJiBkcC0+ZF9uYW1lWzBdID09ICcuJyAmJgorIAkJICAgICBkcC0+ZF9uYW1lWzFdID09ICcuJykpCitAQCAtNDUwLDcgKzQ1MCw3IEBACisgCQlwdGFyZ2V0ID0gb3B0YXJnZXQ7CisgCQkqcHRhcmdldCsrID0gJy8nOworIAkJY3AgPSBkcC0+ZF9uYW1lOzsKKy0JCXdoaWxlICgqcHRhcmdldCsrID0gKmNwKyspCisrCQl3aGlsZSAoKCpwdGFyZ2V0KysgPSAqY3ArKykpCisgCQkJOworIAkJcHRhcmdldC0tOworIAkJaWYgKGxzdGF0KHRhcmdldCwgJnN0YikgPCAwKSB7CitAQCAtNDgxLDcgKzQ4MSw3IEBACisgICogRnJvbnRlbmQgdG8gZG9jbGVhbigpLgorICAqLworIHN0YXRpYyB2b2lkIGNsZWFuKGNwKQorLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgeworIAlkb2NsZWFuKGNwKTsKKyAJKHZvaWQpIHNlbmRjbWQoQ0NfRU5ELCBOVUxMKTsKK0BAIC01MDksNyArNTA5LDcgQEAKKyAgKi8KKyBzdGF0aWMgdm9pZCBkb2NtZHNwZWNpYWwoKQorIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAljaGFyICpjbWQsICplbnYgPSBOVUxMOworIAlpbnQgbjsKKyAJaW50IGxlbjsKK0BAIC02NjcsNyArNjY3LDcgQEAKKyAJY2hhciAqbmFtZTsKKyAJb3B0X3Qgb3B0czsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAJc3RydWN0IHN0YXQgc3RiOworIAlpbnQgciA9IC0xOworIAorQEAgLTc2MCw3ICs3NjAsNyBAQAorIHsKKyAJaW50IGYsIHdyZXJyLCBvbGRlcnJubywgbGFzdHdhc2hvbGUgPSAwLCB3YXNzcGFyc2UgPSAwOworIAlvZmZfdCBpOworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgCWNoYXIgKnNhdmVmaWxlID0gTlVMTDsKKyAJc3RhdGljIHN0cnVjdCBzdGF0IHN0YXRidWZmOworIAorQEAgLTk4Nyw3ICs5ODcsNyBAQAorIAljaGFyICpvd25lciwgKmdyb3VwOworIHsKKyAJc3RhdGljIGNoYXIgbG93bmVyWzEwMF0sIGxncm91cFsxMDBdOworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJaW50IHM7CisgCitAQCAtMTA0NCw3ICsxMDQ0LDcgQEAKKyAKKyAJCQkJbyA9IChvd25lclswXSA9PSAnOicpID8gb3B0cyAmIERPX05VTUNIS09XTkVSIDoKKyAJCQkJCW9wdHM7CistCQkJCWlmIChjcCA9IGdldHVzZXJuYW1lKHN0Yi5zdF91aWQsIHRhcmdldCwgbykpCisrCQkJCWlmICgoY3AgPSBnZXR1c2VybmFtZShzdGIuc3RfdWlkLCB0YXJnZXQsIG8pKSkKKyAJCQkJCWlmIChzdHJjbXAob3duZXIsIGNwKSkKKyAJCQkJCQkodm9pZCkgc3RyY3B5KGxvd25lciwgY3ApOworIAkJCX0KK0BAIC0xMDUzLDcgKzEwNTMsNyBAQAorIAorIAkJCQlvID0gKGdyb3VwWzBdID09ICc6JykgPyBvcHRzICYgRE9fTlVNQ0hLR1JPVVAgOgorIAkJCQkJb3B0czsKKy0JCQkJaWYgKGNwID0gZ2V0Z3JvdXBuYW1lKHN0Yi5zdF9naWQsIHRhcmdldCwgbykpCisrCQkJCWlmICgoY3AgPSBnZXRncm91cG5hbWUoc3RiLnN0X2dpZCwgdGFyZ2V0LCBvKSkpCisgCQkJCQlpZiAoc3RyY21wKGdyb3VwLCBjcCkpCisgCQkJCQkJKHZvaWQpIHN0cmNweShsZ3JvdXAsIGNwKTsKKyAJCQl9CitAQCAtMTEwNyw4ICsxMTA3LDggQEAKKyAJaWYgKHMgPCAwKSB7CisgCQlpZiAoZXJybm8gPT0gRU5PRU5UKSB7CisgCQkJaWYgKG1rZGlyKHRhcmdldCwgbW9kZSkgPT0gMCB8fAorLQkJCSAgICBjaGtwYXJlbnQodGFyZ2V0LCBvcHRzKSA9PSAwICYmIAorLQkJCSAgICBta2Rpcih0YXJnZXQsIG1vZGUpID09IDApIHsKKysJCQkgICAgKGNoa3BhcmVudCh0YXJnZXQsIG9wdHMpID09IDAgJiYgCisrCQkJICAgICBta2Rpcih0YXJnZXQsIG1vZGUpID09IDApKSB7CisgCQkJCW1lc3NhZ2UoTVRfTk9USUNFLCAiJXM6IG1rZGlyIiwgdGFyZ2V0KTsKKyAJCQkJKHZvaWQpIGZjaG9nKC0xLCB0YXJnZXQsIG93bmVyLCBncm91cCwgbW9kZSk7CisgCQkJCWFjaygpOworQEAgLTEzMDQsNyArMTMwNCw3IEBACisgc3RhdGljIHZvaWQgc2V0Y29uZmlnKGNtZCkKKyAJY2hhciAqY21kOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3AgPSBjbWQ7CisrCWNoYXIgKmNwID0gY21kOworIAljaGFyICplc3RyOworIAorIAlzd2l0Y2ggKCpjcCsrKSB7CitAQCAtMTMzOCw3ICsxMzM4LDcgQEAKKyAJCWJyZWFrOworIAorIAljYXNlIFNDX0xPR0dJTkc6CS8qIExvZ2dpbmcgb3B0aW9ucyAqLworLQkJaWYgKGVzdHIgPSBtc2dwYXJzZW9wdHMoY3AsIFRSVUUpKSB7CisrCQlpZiAoKGVzdHIgPSBtc2dwYXJzZW9wdHMoY3AsIFRSVUUpKSkgeworIAkJCWZhdGFsZXJyKCJCYWQgbWVzc2FnZSBvcHRpb24gc3RyaW5nICglcyk6ICVzIiwgCisgCQkJCSBjcCwgZXN0cik7CisgCQkJcmV0dXJuOworQEAgLTE0NTUsNyArMTQ1NSw3IEBACisgCQlzcHRhcmdldFtjYXRuYW1lXSA9IHB0YXJnZXQ7CisgCQlpZiAoY2F0bmFtZSsrKSB7CisgCQkJKnB0YXJnZXQrKyA9ICcvJzsKKy0JCQl3aGlsZSAoKnB0YXJnZXQrKyA9ICpmaWxlKyspCisrCQkJd2hpbGUgKCgqcHRhcmdldCsrID0gKmZpbGUrKykpCisgCQkJICAgIDsKKyAJCQlwdGFyZ2V0LS07CisgCQl9CitAQCAtMTQ2Myw2ICsxNDYzLDcgQEAKKyAJCS8qCisgCQkgKiBDcmVhdGUgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZQorIAkJICovCisrCQlpbnQgZmQ7CisgCQlpZiAoY2F0bmFtZSAmJiBjYXR0YXJnZXQoZmlsZSkgPCAwKSB7CisgCQkJZXJyb3IoIkNhbm5vdCBzZXQgZmlsZSBuYW1lLiIpOworIAkJCXJldHVybjsKK0BAIC0xNDc3LDcgKzE0NzgsMTIgQEAKKyAJCQkodm9pZCkgc3ByaW50ZihuZXcsICIlcy8lcyIsIHRhcmdldCwgdGVtcG5hbWUpOworIAkJCSpmaWxlID0gJy8nOworIAkJfQorLQkJKHZvaWQpIG1rdGVtcChuZXcpOworKwkJZmQgPSBta3N0ZW1wKG5ldyk7CisrCQlpZiAoZmQgPCAwKSB7CisrCQkJZXJyb3IoIkNhbm5vdCBzZXQgZmlsZSBuYW1lLiIpOworKwkJCXJldHVybjsKKysJCX0KKysJCWNsb3NlKGZkKTsKKyAJfQorIAorIAkvKgorQEAgLTE1ODEsOCArMTU4Nyw4IEBACisgZXh0ZXJuIHZvaWQgc2VydmVyKCkKKyB7CisgCXN0YXRpYyBjaGFyIGNtZGJ1ZltCVUZTSVpdOworLQlyZWdpc3RlciBjaGFyICpjcDsKKy0JcmVnaXN0ZXIgaW50IG47CisrCWNoYXIgKmNwOworKwlpbnQgbjsKKyAJZXh0ZXJuIGptcF9idWYgZmluaXNoX2ptcGJ1ZjsKKyAKKyAJaWYgKHNldGptcChmaW5pc2hfam1wYnVmKSkgeworLS0tIHJkaXN0LTYuMS41L3NyYy9maWxlc3lzLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjEwOjE4LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9maWxlc3lzLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZmlsZXN5cy5jLHYgNi4yNSAxOTk4LzExLzEwIDA0OjEwOjE3IG1jb29wZXIgRXhwICQiOworIAorQEAgLTcyLDcgKzcyLDcgQEAKKyAJc3RhdGljIGNoYXIgbGFzdF9wYXRobmFtZVtNQVhQQVRITEVOXTsKKyAJc3RhdGljIGNoYXIgZmlsZVtNQVhQQVRITEVOICsgM107CisgCXN0YXRpYyBzdHJ1Y3Qgc3RhdCBmaWxlc3RhdDsKKy0JcmVnaXN0ZXIgY2hhciAqcDsKKysJY2hhciAqcDsKKyAKKyAJLyoKKyAJICogTWFyayB0aGUgc3RhdGJ1ZiBhcyBpbnZhbGlkIHRvIHN0YXJ0IHdpdGguCitAQCAtMTI1LDcgKzEyNSw3IEBACisgCQkJICogTm9ybWFsbHkgd2Ugd2FudCB0byBjaGFuZ2UgL2RpcjEvZGlyMi9maWxlCisgCQkJICogaW50byAiL2RpcjEvZGlyMi8uIgorIAkJCSAqLworLQkJCWlmIChwID0gKGNoYXIgKikgc3RycmNocihmaWxlLCAnLycpKSB7CisrCQkJaWYgKChwID0gKGNoYXIgKikgc3RycmNocihmaWxlLCAnLycpKSkgeworIAkJCQkqKytwID0gJy4nOworIAkJCQkqKytwID0gQ05VTEw7CisgCQkJfSBlbHNlIHsKK0BAIC0xODMsNyArMTgzLDcgQEAKKyAJc3RydWN0IHN0YXQgKmZpbGVzdDsKKyAJc3RydWN0IG1udGluZm8gKm1udGluZm87CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgbW50aW5mbyAqbWk7CisrCXN0cnVjdCBtbnRpbmZvICptaTsKKyAKKyAJZm9yIChtaSA9IG1udGluZm87IG1pOyBtaSA9IG1pLT5taV9ueHQpIHsKKyAJCWlmIChtaS0+bWlfbW50LT5tZV9mbGFncyAmIE1FRkxBR19JR05PUkUpCitAQCAtMjAyLDcgKzIwMiw3IEBACisgCW1udGVudF90ICptbnQ7CisgCXN0cnVjdCBtbnRpbmZvICptbnRpbmZvOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG1udGluZm8gKm07CisrCXN0cnVjdCBtbnRpbmZvICptOworIAorIAlmb3IgKG0gPSBtbnRpbmZvOyBtOyBtID0gbS0+bWlfbnh0KQorIAkJaWYgKHN0cmNtcChtLT5taV9tbnQtPm1lX3BhdGgsIG1udC0+bWVfcGF0aCkgPT0gMCkKK0BAIC0yNDcsNyArMjQ3LDcgQEAKKyAJfQorIAorIAltbnRpbmZvID0gbWk7CistCXdoaWxlIChtbnQgPSBnZXRtb3VudGVudChtZnApKSB7CisrCXdoaWxlICgobW50ID0gZ2V0bW91bnRlbnQobWZwKSkpIHsKKyAJCWRlYnVnbXNnKERNX01JU0MsICJtb3VudGVudCA9ICclcycgKCVzKSIsIAorIAkJCSBtbnQtPm1lX3BhdGgsIG1udC0+bWVfdHlwZSk7CisgCitAQCAtMzA4LDcgKzMwOCw3IEBACisgCXN0YXRpYyBzdHJ1Y3Qgc3RhdCBmaWxlc3RhdDsKKyAJc3RydWN0IHN0YXQgKnBzdGF0OworIAlzdHJ1Y3QgbW50aW5mbyAqdG1wbWk7CistCXJlZ2lzdGVyIG1udGVudF90ICptbnQ7CisrCW1udGVudF90ICptbnQ7CisgCisgCS8qCisgCSAqIFVzZSB0aGUgc3VwcGxpZWQgc3RhdCBidWZmZXIgaWYgbm90IE5VTEwgb3Igb3VyIG93bi4KK0BAIC0zMzAsMTYgKzMzMCwxNiBAQAorIAkvKgorIAkgKiBGaW5kIHRoZSBtbnQgdGhhdCBwYXRobmFtZSBpcyBvbi4KKyAJICovCistCWlmIChtbnQgPSBmaW5kbW50KHBzdGF0LCBtbnRpbmZvKSkKKysJaWYgKChtbnQgPSBmaW5kbW50KHBzdGF0LCBtbnRpbmZvKSkpCisgCQlyZXR1cm4obW50KTsKKyAKKyAJLyoKKyAJICogV2UgZmFpbGVkIHRvIGZpbmQgY29ycmVjdCBtbnQsIHNvIG1heWJlIGl0J3MgYSBuZXdseQorIAkgKiBtb3VudGVkIGZpbGVzeXN0ZW0uICBXZSByZWJ1aWxkIG1udGluZm8gYW5kIHRyeSBhZ2Fpbi4KKyAJICovCistCWlmICh0bXBtaSA9IG1ha2VtbnRpbmZvKG1udGluZm8pKSB7CisrCWlmICgodG1wbWkgPSBtYWtlbW50aW5mbyhtbnRpbmZvKSkpIHsKKyAJCW1udGluZm8gPSB0bXBtaTsKKy0JCWlmIChtbnQgPSBmaW5kbW50KHBzdGF0LCBtbnRpbmZvKSkKKysJCWlmICgobW50ID0gZmluZG1udChwc3RhdCwgbW50aW5mbykpKQorIAkJCXJldHVybihtbnQpOworIAl9CisgCistLS0gcmRpc3QtNi4xLjUvc3JjL2ZpbGVzeXMtb3MuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MDk6NTkuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2ZpbGVzeXMtb3MuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBmaWxlc3lzLW9zLmMsdiA2LjE4IDE5OTgvMTEvMTAgMDQ6MDk6NTggbWNvb3BlciBFeHAgJCI7CisgCitAQCAtMzE0LDcgKzMxNCw3IEBACisgCisgCWJ6ZXJvKChjaGFyICopJm1lLCBzaXplb2YobW50ZW50X3QpKTsKKyAKKy0JaWYgKG1udGVudCA9IGdldG1udGVudChmcHRyKSkgeworKwlpZiAoKG1udGVudCA9IGdldG1udGVudChmcHRyKSkpIHsKKyAJCW1lLm1lX3BhdGggPSBtbnRlbnQtPm1udF9kaXI7CisgCQltZS5tZV90eXBlID0gbW50ZW50LT5tbnRfdHlwZTsKKyAJCWlmIChtbnRlbnQtPm1udF9vcHRzICYmIGhhc21udG9wdChtbnRlbnQsIE1OVE9QVF9STykpCistLS0gcmRpc3QtNi4xLjUvc3JjL3N0cmNhc2VjbXAuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTY6NTIuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3N0cmNhc2VjbXAuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTUxLDkgKzUxLDkgQEAKKyB9OworIAorIHN0cmNhc2VjbXAoczEsIHMyKQorLQlyZWdpc3RlciBjaGFyICpzMSwgKnMyOworKwljaGFyICpzMSwgKnMyOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY20gPSBjaGFybWFwOworKwljaGFyICpjbSA9IGNoYXJtYXA7CisgCisgCXdoaWxlIChjbVsqczFdID09IGNtWypzMisrXSkKKyAJCWlmICgqczErKyA9PSAnXDAnKQorQEAgLTYyLDEwICs2MiwxMCBAQAorIH0KKyAKKyBzdHJuY2FzZWNtcChzMSwgczIsIG4pCistCXJlZ2lzdGVyIGNoYXIgKnMxLCAqczI7CistCXJlZ2lzdGVyIGludCBuOworKwljaGFyICpzMSwgKnMyOworKwlpbnQgbjsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNtID0gY2hhcm1hcDsKKysJY2hhciAqY20gPSBjaGFybWFwOworIAorIAl3aGlsZSAoLS1uID49IDAgJiYgY21bKnMxXSA9PSBjbVsqczIrK10pCisgCQlpZiAoKnMxKysgPT0gJ1wwJykKKy0tLSByZGlzdC02LjEuNS9zcmMvc3RydG9sLmMuY2xlYW51cAkxOTk0LTAzLTE3IDAwOjI1OjUwLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zdHJ0b2wuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTU0LDEzICs1NCwxMyBAQAorIHN0cnRvbChucHRyLCBlbmRwdHIsIGJhc2UpCisgCWNoYXIgKm5wdHI7CisgCWNoYXIgKiplbmRwdHI7CistCXJlZ2lzdGVyIGludCBiYXNlOworKwlpbnQgYmFzZTsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKnMgPSBucHRyOworLQlyZWdpc3RlciB1bnNpZ25lZCBsb25nIGFjYzsKKy0JcmVnaXN0ZXIgaW50IGM7CistCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgY3V0b2ZmOworLQlyZWdpc3RlciBpbnQgbmVnID0gMCwgYW55LCBjdXRsaW07CisrCWNoYXIgKnMgPSBucHRyOworKwl1bnNpZ25lZCBsb25nIGFjYzsKKysJaW50IGM7CisrCXVuc2lnbmVkIGxvbmcgY3V0b2ZmOworKwlpbnQgbmVnID0gMCwgYW55LCBjdXRsaW07CisgCisgCS8qCisgCSAqIFNraXAgd2hpdGUgc3BhY2UgYW5kIHBpY2sgdXAgbGVhZGluZyArLy0gc2lnbiBpZiBhbnkuCistLS0gcmRpc3QtNi4xLjUvc3JjL3JlZ2V4LmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjE0OjI4LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9yZWdleC5jCTIwMDMtMTItMTcgMTE6Mzk6MTQuMDAwMDAwMDAwICswMTAwCitAQCAtMTQyLDEwICsxNDIsOCBAQAorICAqLworIGNoYXIgKgorIHJlX2NvbXAoc3ApCistCXJlZ2lzdGVyIGNoYXIJKnNwOworIHsKKy0JcmVnaXN0ZXIgaW50CWM7CistCXJlZ2lzdGVyIGNoYXIJKmVwID0gZXhwYnVmOworKwljaGFyCSplcCA9IGV4cGJ1ZjsKKyAJaW50CWNjbGNudCwgbnVtYnJhID0gMDsKKyAJY2hhcgkqbGFzdGVwID0gMDsKKyAJY2hhcglicmFja2V0W05CUkFdOworQEAgLTI2NiwxMCArMjY0LDEwIEBACisgICovCisgaW50CisgcmVfZXhlYyhwMSkKKy0JcmVnaXN0ZXIgY2hhcgkqcDE7CisrCWNoYXIJKnAxOworIHsKKy0JcmVnaXN0ZXIgY2hhcgkqcDIgPSBleHBidWY7CistCXJlZ2lzdGVyIGludAljOworKwljaGFyCSpwMiA9IGV4cGJ1ZjsKKysJaW50CWM7CisgCWludAlydjsKKyAKKyAJZm9yIChjID0gMDsgYyA8IE5CUkE7IGMrKykgeworQEAgLTMwNiw5ICszMDQsOSBAQAorICAqLworIHN0YXRpYwlpbnQKKyBhZHZhbmNlKGxwLCBlcCkKKy0JcmVnaXN0ZXIgY2hhcgkqbHAsICplcDsKKysJY2hhcgkqbHAsICplcDsKKyB7CistCXJlZ2lzdGVyIGNoYXIJKmN1cmxwOworKwljaGFyCSpjdXJscDsKKyAJaW50CWN0LCBpOworIAlpbnQJcnY7CisgCitAQCAtNDEzLDEwICs0MTEsMTAgQEAKKyB9CisgCisgYmFja3JlZihpLCBscCkKKy0JcmVnaXN0ZXIgaW50CWk7CistCXJlZ2lzdGVyIGNoYXIJKmxwOworKwlpbnQJaTsKKysJY2hhcgkqbHA7CisgeworLQlyZWdpc3RlciBjaGFyCSpicDsKKysJY2hhcgkqYnA7CisgCisgCWJwID0gYnJhc2xpc3RbaV07CisgCXdoaWxlICgqYnArKyA9PSAqbHArKykKK0BAIC00MjcsMTAgKzQyNSwxMCBAQAorIAorIGludAorIGNjbGFzcyhzZXQsIGMsIGFmKQorLQlyZWdpc3RlciBjaGFyCSpzZXQsIGM7CisrCWNoYXIJKnNldCwgYzsKKyAJaW50CWFmOworIHsKKy0JcmVnaXN0ZXIgaW50CW47CisrCWludAluOworIAorIAlpZiAoYyA9PSAwKQorIAkJcmV0dXJuKDApOworLS0tIHJkaXN0LTYuMS41L2luY2x1ZGUvZGVmcy5oLmNsZWFudXAJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9pbmNsdWRlL2RlZnMuaAkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTMwLDExICszMCwxMyBAQAorICNpbmNsdWRlIDxncnAuaD4KKyAjaW5jbHVkZSA8c3lzbG9nLmg+CisgI2luY2x1ZGUgPHNldGptcC5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKy0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIAorICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisgI2luY2x1ZGUgImNvbmZpZy1kZWYuaCIKK0BAIC00OCw2ICs1MCw5IEBACisgI2VuZGlmCS8qIHlhY2MgKi8KKyAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisrI2RlZmluZSBfUkVHRVhfUkVfQ09NUAorKyNpbmNsdWRlIDxyZWdleC5oPgorKworIAorIC8qCisgICogVGhpcyBiZWxvbmdzIGluIG9zLXN2cjQuaCBidXQgbWFueSBTVlI0IE9TJ3MKK0BAIC0zMjEsMTIgKzMyNiwxMSBAQAorIC8qCisgICogT3VyIG93biBkZWNsYXJhdGlvbnMuCisgICovCistY2hhcgkJCSAgICAgICAqZXhwdGlsZGUoKTsKKyBjaGFyCQkJICAgICAgICptYWtlc3RyKCk7CisgY2hhcgkgICAgICAgCQkgICAgICAgKnhjYWxsb2MoKTsKKyBjaGFyCSAgICAgICAJCSAgICAgICAqeG1hbGxvYygpOworIGNoYXIJICAgICAgIAkJICAgICAgICp4cmVhbGxvYygpOworLWV4dGVybiBjaGFyCQkgICAgICAgKnhiYXNlbmFtZSgpOworK2V4dGVybiBjaGFyCQkgICAgICAgKmV4cHRpbGRlKCk7CisgZXh0ZXJuIGNoYXIJCSAgICAgICAqZ2V0ZGlzdG9wdGxpc3QoKTsKKyBleHRlcm4gY2hhcgkJICAgICAgICpnZXRncm91cG5hbWUoKTsKKyBleHRlcm4gY2hhcgkJICAgICAgICpnZXRubHN0cigpOworQEAgLTMzNiw0NCArMzQwLDc1IEBACisgZXh0ZXJuIGNoYXIJCSAgICAgICAqZ2V0dmVyc2lvbigpOworIGV4dGVybiBjaGFyCQkgICAgICAgKm1zZ3BhcnNlb3B0cygpOworIGV4dGVybiBjaGFyCQkgICAgICAgKnNlYXJjaHBhdGgoKTsKKytleHRlcm4gY2hhcgkJICAgICAgICp4YmFzZW5hbWUoKTsKKytleHRlcm4gaW50CQkJYW1hdGNoKCk7CisgZXh0ZXJuIGludAkJCWFueSgpOworK2V4dGVybiBpbnQJCQliZWNvbWVyb290KCk7CisrZXh0ZXJuIGludAkJCWJlY29tZXVzZXIoKTsKKytleHRlcm4gaW50CQkJZXhjZXB0KCk7CisrZXh0ZXJuIGludAkJCWV4ZWNicmMoKTsKKytleHRlcm4gaW50CQkJZ2V0ZmlsZXN5c2luZm8oKTsKKytleHRlcm4gaW50CQkJZ2V0c29ja2V0cGFpcigpOworIGV4dGVybiBpbnQJCQlpbml0KCk7CisgZXh0ZXJuIGludAkJCWluc3RhbGwoKTsKKyBleHRlcm4gaW50CQkJaXNleGVjKCk7CisrZXh0ZXJuIGludAkJCWlzX25mc19tb3VudGVkKCk7CisrZXh0ZXJuIGludAkJCWlzX3JvX21vdW50ZWQoKTsKKytleHRlcm4gaW50CQkJaXNfc3ltbGlua2VkKCk7CisrZXh0ZXJuIGludAkJCW1hdGNoKCk7CisrZXh0ZXJuIGludAkJCW9rbmFtZSgpOworIGV4dGVybiBpbnQJCQlwYXJzZWRpc3RvcHRzKCk7CisrZXh0ZXJuIGludAkJCXJlYWRyZW0oKTsKKyBleHRlcm4gaW50CQkJcmVtbGluZSgpOworK2V4dGVybiBpbnQJCQlyZXNwb25zZSgpOworK2V4dGVybiBpbnQJCQlyc2hyY21kKCk7CisgZXh0ZXJuIGludAkJCXNldGZpbGV0aW1lKCk7CisrZXh0ZXJuIGludAkJCXNldG5vbmJsb2NraW5nKCk7CisgZXh0ZXJuIGludAkJCXNwYXduKCk7CisrZXh0ZXJuIGludAkJCXl5bGV4KCk7CisrZXh0ZXJuIGludAkJCXl5cGFyc2UoKTsKKyBleHRlcm4gc3RydWN0IHN1YmNtZCAJICAgICAgICptYWtlc3ViY21kKCk7CisrZXh0ZXJuIHZvaWQJCQlhcHBlbmQoKTsKKyBleHRlcm4gdm9pZAkJCWNoZWNraG9zdG5hbWUoKTsKKyBleHRlcm4gdm9pZAkJCWNsZWFudXAoKTsKKyBleHRlcm4gdm9pZAkJCWNvbXBsYWluKCk7CisrZXh0ZXJuIHZvaWQJCQljb3JlZHVtcCgpOworK2V4dGVybiB2b2lkCQkJZGVmaW5lKCk7CisrZXh0ZXJuIHZvaWQJCQlkb2NtZGFyZ3MoKTsKKyBleHRlcm4gdm9pZAkJCWRvY21kcygpOworIGV4dGVybiB2b2lkCQkJZmluaXNoKCk7CistZXh0ZXJuIHZvaWQJCQlsb2coKTsKKytleHRlcm4gdm9pZAkJCWZyZWVsaW5raW5mbygpOworK2V4dGVybiB2b2lkCQkJaW5zZXJ0KCk7CisgZXh0ZXJuIHZvaWQJCQlsb2dtc2coKTsKKyBleHRlcm4gdm9pZAkJCWxvc3Rjb25uKCk7CisgZXh0ZXJuIHZvaWQJCQltYXJrYXNzaWduZWQoKTsKKytleHRlcm4gdm9pZAkJCW1zZ3ByY29uZmlnKCk7CisgZXh0ZXJuIHZvaWQJCQltc2dwcnVzYWdlKCk7CisrZXh0ZXJuIHZvaWQJCQlteXNldGxpbmVidWYoKTsKKyBleHRlcm4gdm9pZAkJCW5vdGUoKTsKKyBleHRlcm4gdm9pZAkJCXJ1bmNtZHNwZWNpYWwoKTsKKyBleHRlcm4gdm9pZAkJCXJ1bmNvbW1hbmQoKTsKKyBleHRlcm4gdm9pZAkJCXNlcnZlcigpOworK2V4dGVybiB2b2lkCQkJc2V0YXJnc19zZXR0dXAoKTsKKyBleHRlcm4gdm9pZAkJCXNldHByb2duYW1lKCk7CisgZXh0ZXJuIHZvaWQJCQlzaWdoYW5kbGVyKCk7CisrZXh0ZXJuIHZvaWQJCQl1c2FnZSgpOworIGV4dGVybiB2b2lkCQkJd2FpdHVwKCk7CisrZXh0ZXJuIHZvaWQJCQl5eWVycm9yKCk7CisrZXh0ZXJuIFdSSVRFX1JFVFVSTl9UCQl4d3JpdGUoKTsKKyBzdHJ1Y3QgbmFtZWxpc3QJCSAgICAgICAqZXhwYW5kKCk7Cisgc3RydWN0IG5hbWVsaXN0CQkgICAgICAgKmxvb2t1cCgpOworIHN0cnVjdCBuYW1lbGlzdAkJICAgICAgICptYWtlbmwoKTsKKy1leHRlcm4gV1JJVEVfUkVUVVJOX1QJCXh3cml0ZSgpOworIAorICNpZglkZWZpbmVkKEFSR19UWVBFKSAmJiBBUkdfVFlQRSA9PSBBUkdfU1REQVJHCisrZXh0ZXJuIGludAkJCXNlbmRjbWQoY2hhciBjbWQsIGNoYXIgKmZtdCwgLi4uKTsKKyBleHRlcm4gdm9pZAkJCWRlYnVnbXNnKGludCwgY2hhciAqLCAuLi4pOworIGV4dGVybiB2b2lkCQkJZXJyb3IoY2hhciAqLCAuLi4pOworIGV4dGVybiB2b2lkCQkJZmF0YWxlcnIoY2hhciAqLCAuLi4pOworIGV4dGVybiB2b2lkCQkJbWVzc2FnZShpbnQsIGNoYXIgKiwgLi4uKTsKKyBleHRlcm4gdm9pZAkJCXNldHByb2N0aXRsZShjaGFyICpmbXQsIC4uLik7CisgI2Vsc2UKKytleHRlcm4gaW50CQkJc2VuZGNtZCh2YV9hbGlzdCk7CisgZXh0ZXJuIHZvaWQJCQlkZWJ1Z21zZygpOworIGV4dGVybiB2b2lkCQkJZXJyb3IoKTsKKyBleHRlcm4gdm9pZAkJCWZhdGFsZXJyKCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1maXgtbXNnc25kbm90aWZ5LWxvb3AucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1maXgtbXNnc25kbm90aWZ5LWxvb3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4M2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWZpeC1tc2dzbmRub3RpZnktbG9vcC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL21lc3NhZ2UuYy50aGVzdG9rZXMJMjAwNi0wNC0xOSAxNzozMDozOS4wMDAwMDAwMDAgLTA0MDAKKysrKyByZGlzdC02LjEuNS9zcmMvbWVzc2FnZS5jCTIwMDYtMDQtMTkgMTc6MzY6MzcuMDAwMDAwMDAwIC0wNDAwCitAQCAtNzkzLDE1ICs3OTMsMjAgQEAKKyAJY2hhciAqbXNnOworIHsKKyAJc3RhdGljIGNoYXIgYnVmW01TR0JVRlNJWl07CistCistCSsrbmVycnM7CistCistCWlmIChpc3NlcnZlcikKKy0JCSh2b2lkKSBzcHJpbnRmKGJ1ZiwgIlJFTU9URSBFUlJPUjogJXMiLCBtc2cpOworLQllbHNlCistCQkodm9pZCkgc3ByaW50ZihidWYsICJMT0NBTCBFUlJPUjogJXMiLCBtc2cpOworLQorLQlfbWVzc2FnZShNVF9GRVJST1IsIGJ1Zik7CisrCS8qIERvbid0IHJlZW50ZXIgdGhpcyBmdW5jdGlvbi4gVGhlcmUgaXMgYSBuYXN0eSBpbmZpbml0ZSByZWN1cnNpb24KKysJICAgY2FzZSB0aGF0IHBvcHMgdXAgd2hlbiBtc2dzbmRub3RpZnkgdHJpZXMgdG8gZXhpdC4gKi8KKysJc3RhdGljIGludCBpbnNpZGU9MDsgCisrCisrCWlmKGluc2lkZT09MCl7CisrCSAgICAgICAgKytuZXJyczsKKysJCWluc2lkZT0xOworKworKwkgICAgICAgIGlmIChpc3NlcnZlcikKKysJCSAgICAgICAgKHZvaWQpIHNwcmludGYoYnVmLCAiUkVNT1RFIEVSUk9SOiAlcyIsIG1zZyk7CisrCSAgICAgICAgZWxzZQorKwkJICAgICAgICAodm9pZCkgc3ByaW50ZihidWYsICJMT0NBTCBFUlJPUjogJXMiLCBtc2cpOworKwkJX21lc3NhZ2UoTVRfRkVSUk9SLCBidWYpOworKwl9CisgCisgCWV4aXQobmVycnMpOworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWhhcmRsaW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtaGFyZGxpbmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOGUzMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWhhcmRsaW5rLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMuaGFyZGxpbmsJVGh1IEp1biAgMyAxMzo1NjozMSAxOTk5CisrKysgcmRpc3QtNi4xLjUvc3JjL2NsaWVudC5jCVRodSBKdW4gIDMgMTQ6MDA6MDYgMTk5OQorQEAgLTM0OCw3ICszNDgsNyBAQAorIAkJbHAtPnRhcmdldCA9IHN0cmR1cChUZGVzdCk7CisgCWVsc2UKKyAJCWxwLT50YXJnZXQgPSBOVUxMOworLQlpZiAoIWxwLT5wYXRobmFtZSB8fCAhbHAtPnNyYyB8fCAhKFRkZXN0ICYmIGxwLT50YXJnZXQpKQorKwlpZiAoIWxwLT5wYXRobmFtZSB8fCAhbHAtPnNyYyB8fCAoVGRlc3QgJiYgIWxwLT50YXJnZXQpKQorIAkJZmF0YWxlcnIoIkNhbm5vdCBtYWxsb2MgbWVtb3J5IGluIGxpbmtpbmZvLiIpOworIAorIAlyZXR1cm4oKHN0cnVjdCBsaW5rYnVmICopIE5VTEwpOworQEAgLTM3MCw3ICszNzAsNyBAQAorIAkgICAgICAgInNlbmRoYXJkbGluazogcm5hbWU9JyVzJyBwYXRobmFtZT0nJXMnIHNyYz0nJXMnIHRhcmdldD0nJXMnXG4iLAorIAkJIHJuYW1lLCBscC0+cGF0aG5hbWUsIGxwLT5zcmMsIGxwLT50YXJnZXQpOworIAkJIAorLQlpZiAoKmxwLT50YXJnZXQgPT0gQ05VTEwpCisrCWlmIChscC0+dGFyZ2V0ID09IE5VTEwgfHwgKmxwLT50YXJnZXQgPT0gQ05VTEwpCisgCQkodm9pZCkgc2VuZGNtZChDX1JFQ1ZIQVJETElOSywgIiVvICVzICVzIiwgCisgCQkJICAgICAgIG9wdHMsIGxwLT5wYXRobmFtZSwgcm5hbWUpOworIAllbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxmcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmE4ZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGZzLnBhdGNoCkBAIC0wLDAgKzEsMTQyIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL2NsaWVudC5jLmxmcwkyMDAzLTEyLTE2IDIzOjQzOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9jbGllbnQuYwkyMDAzLTEyLTE2IDIzOjQ2OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTQxNCw5ICs0MTQsOSBAQAorIAkvKgorIAkgKiBTZW5kIGZpbGUgaW5mbworIAkgKi8KKy0JKHZvaWQpIHNlbmRjbWQoQ19SRUNWUkVHLCAiJW8gJTA0byAlbGQgJWxkICVsZCAlcyAlcyAlcyIsIAorKwkodm9pZCkgc2VuZGNtZChDX1JFQ1ZSRUcsICIlbyAlMDRvICVsbGQgJWxkICVsZCAlcyAlcyAlcyIsIAorIAkJICAgICAgIG9wdHMsIHN0Yi0+c3RfbW9kZSAmIDA3Nzc3LCAKKy0JCSAgICAgICAobG9uZykgc3RiLT5zdF9zaXplLCAKKysJCSAgICAgICAob2ZmX3QpIHN0Yi0+c3Rfc2l6ZSwgCisgCQkgICAgICAgc3RiLT5zdF9tdGltZSwgc3RiLT5zdF9hdGltZSwKKyAJCSAgICAgICB1c2VyLCBncm91cCwgcm5hbWUpOworIAlpZiAocmVzcG9uc2UoKSA8IDApIHsKK0BAIC00MjQsOCArNDI0LDggQEAKKyAJCXJldHVybigtMSk7CisgCX0KKyAKKy0JZGVidWdtc2coRE1fTUlTQywgIlNlbmQgZmlsZSAnJXMnICVkIGJ5dGVzXG4iLCAKKy0JCSBybmFtZSwgKGxvbmcpIHN0Yi0+c3Rfc2l6ZSk7CisrCWRlYnVnbXNnKERNX01JU0MsICJTZW5kIGZpbGUgJyVzJyAlbGxkIGJ5dGVzXG4iLCAKKysJCSBybmFtZSwgKG9mZl90KSBzdGItPnN0X3NpemUpOworIAorIAkvKgorIAkgKiBTZXQgcmVtb3RlIHRpbWUgb3V0IGFsYXJtIGhhbmRsZXIuCitAQCAtNjc2LDkgKzY3Niw5IEBACisgCS8qCisgCSAqIEdhdGhlciBhbmQgc2VuZCBiYXNpYyBsaW5rIGluZm8KKyAJICovCistCSh2b2lkKSBzZW5kY21kKENfUkVDVlNZTUxJTkssICIlbyAlMDRvICVsZCAlbGQgJWxkICVzICVzICVzIiwgCisrCSh2b2lkKSBzZW5kY21kKENfUkVDVlNZTUxJTkssICIlbyAlMDRvICVsbGQgJWxkICVsZCAlcyAlcyAlcyIsIAorIAkJICAgICAgIG9wdHMsIHN0Yi0+c3RfbW9kZSAmIDA3Nzc3LCAKKy0JCSAgICAgICAobG9uZykgc3RiLT5zdF9zaXplLCAKKysJCSAgICAgICAob2ZmX3QpIHN0Yi0+c3Rfc2l6ZSwgCisgCQkgICAgICAgc3RiLT5zdF9tdGltZSwgc3RiLT5zdF9hdGltZSwKKyAJCSAgICAgICB1c2VyLCBncm91cCwgcm5hbWUpOworIAlpZiAocmVzcG9uc2UoKSA8IDApCitAQCAtODU4LDcgKzg1OCw3IEBACisgCS8qCisgCSAqIFBhcnNlIHNpemUKKyAJICovCistCXNpemUgPSBzdHJ0b2woY3AsICZjcCwgMTApOworKwlzaXplID0gc3RydG9sbChjcCwgJmNwLCAxMCk7CisgCWlmICgqY3ArKyAhPSAnICcpIHsKKyAJCWVycm9yKCJ1cGRhdGU6IHNpemUgbm90IGRlbGltaXRlZCIpOworIAkJcmV0dXJuKFVTX05PVEhJTkcpOworQEAgLTkxMCw4ICs5MTAsOCBAQAorIAorIAlkZWJ1Z21zZyhETV9NSVNDLCAidXBkYXRlKCVzLCkgbG9jYWwgbW9kZSAlMDRvIHJlbW90ZSBtb2RlICUwNG9cbiIsIAorIAkJIHJuYW1lLCBsbW9kZSwgcm1vZGUpOworLQlkZWJ1Z21zZyhETV9NSVNDLCAidXBkYXRlKCVzLCkgc2l6ZSAlZCBtdGltZSAlZCBvd25lciAnJXMnIGdycCAnJXMnXG4iLAorLQkJIHJuYW1lLCAoaW50KSBzaXplLCBtdGltZSwgb3duZXIsIGdyb3VwKTsKKysJZGVidWdtc2coRE1fTUlTQywgInVwZGF0ZSglcywpIHNpemUgJWxsZCBtdGltZSAlZCBvd25lciAnJXMnIGdycCAnJXMnXG4iLAorKwkJIHJuYW1lLCAob2ZmX3QpIHNpemUsIG10aW1lLCBvd25lciwgZ3JvdXApOworIAorIAlpZiAoc3RhdHAtPnN0X210aW1lICE9IG10aW1lKSB7CisgCQlpZiAoc3RhdHAtPnN0X210aW1lIDwgbXRpbWUgJiYgSVNfT04ob3B0cywgRE9fWU9VTkdFUikpIHsKK0BAIC05MzcsOCArOTM3LDggQEAKKyAJfQorIAorIAlpZiAoc3RhdHAtPnN0X3NpemUgIT0gc2l6ZSkgeworLQkJZGVidWdtc2coRE1fTUlTQywgInNpemUgZG9lcyBub3QgbWF0Y2ggKCVkICE9ICVkKS5cbiIsCistCQkJIChpbnQpIHN0YXRwLT5zdF9zaXplLCBzaXplKTsKKysJCWRlYnVnbXNnKERNX01JU0MsICJzaXplIGRvZXMgbm90IG1hdGNoICglbGxkICE9ICVsbGQpLlxuIiwKKysJCQkgc3RhdHAtPnN0X3NpemUsIHNpemUpOworIAkJcmV0dXJuKFVTX09VVERBVEUpOworIAl9IAorIAorLS0tIHJkaXN0LTYuMS41L3NyYy9zZXJ2ZXIuYy5sZnMJMTk5OC0xMS0xMCAwNToxNTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2VydmVyLmMJMjAwMy0xMi0xNiAyMzo1MDoxOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02NDUsOCArNjQ1LDggQEAKKyAJY2FzZSBTX0lGTE5LOgorIAljYXNlIFNfSUZESVI6CisgCWNhc2UgU19JRlJFRzoKKy0JCSh2b2lkKSBzZW5kY21kKFFDX1lFUywgIiVsZCAlbGQgJW8gJXMgJXMiLAorLQkJCSAgICAgICAobG9uZykgc3RiLnN0X3NpemUsIAorKwkJKHZvaWQpIHNlbmRjbWQoUUNfWUVTLCAiJWxsZCAlbGQgJW8gJXMgJXMiLAorKwkJCSAgICAgICAob2ZmX3QpIHN0Yi5zdF9zaXplLCAKKyAJCQkgICAgICAgc3RiLnN0X210aW1lLCAKKyAJCQkgICAgICAgc3RiLnN0X21vZGUgJiAwNzc3NywKKyAJCQkgICAgICAgZ2V0dXNlcm5hbWUoc3RiLnN0X3VpZCwgdGFyZ2V0LCBvcHRpb25zKSwgCitAQCAtMTM4OCw3ICsxMzg4LDcgQEAKKyAJLyoKKyAJICogR2V0IGZpbGUgc2l6ZQorIAkgKi8KKy0Jc2l6ZSA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CisrCXNpemUgPSBzdHJ0b2xsKGNwLCAmY3AsIDEwKTsKKyAJaWYgKCpjcCsrICE9ICcgJykgeworIAkJZXJyb3IoInJlY3ZpdDogc2l6ZSBub3QgZGVsaW1pdGVkIik7CisgCQlyZXR1cm47CitAQCAtMTQ0MSw3ICsxNDQxLDcgQEAKKyAJfQorIAorIAlkZWJ1Z21zZyhETV9NSVNDLAorLQkJICJyZWN2aXQ6IG9wdHMgPSAlMDRvIG1vZGUgPSAlMDRvIHNpemUgPSAlZCBtdGltZSA9ICVkIiwKKysJCSAicmVjdml0OiBvcHRzID0gJTA0byBtb2RlID0gJTA0byBzaXplID0gJWxsZCBtdGltZSA9ICVkIiwKKyAJCSBvcHRzLCBtb2RlLCBzaXplLCBtdGltZSk7CisgCWRlYnVnbXNnKERNX01JU0MsCisgICAgICAgICJyZWN2aXQ6IG93bmVyID0gJyVzJyBncm91cCA9ICclcycgZmlsZSA9ICclcycgY2F0bmFtZSA9ICVkIGlzZGlyID0gJWQiLAorLS0tIHJkaXN0LTYuMS41L2luY2x1ZGUvZGVmcy5oLmxmcwkyMDAzLTEyLTE2IDIzOjQzOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L2luY2x1ZGUvZGVmcy5oCTIwMDMtMTItMTYgMjM6NDM6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjIsNiArMjIsOCBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjZW5kaWYJLyogX1BPU0lYX1NPVVJDRSAqLworICNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8bW50ZW50Lmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHB3ZC5oPgorQEAgLTMxNywxNSArMzE5LDYgQEAKKyAjZW5kaWYgLyogVVNFX1NUQVREQiAqLworIAorIC8qCistICogU3lzdGVtIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworLSAqLworLWNoYXIgCQkJICAgICAgICpoYXNtbnRvcHQoKTsKKy1jaGFyCQkJICAgICAgICpzdHJjaHIoKTsKKy1jaGFyCQkgCSAgICAgICAqc3RyZHVwKCk7CistY2hhcgkJIAkgICAgICAgKnN0cnJjaHIoKTsKKy1jaGFyIAkJCSAgICAgICAqc3RydG9rKCk7CistCistLyoKKyAgKiBPdXIgb3duIGRlY2xhcmF0aW9ucy4KKyAgKi8KKyBjaGFyCQkJICAgICAgICpleHB0aWxkZSgpOworLS0tIHJkaXN0LTYuMS41L01ha2VmaWxlLmxvY2FsLmxmcwkxOTk4LTExLTEwIDA0OjM2OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L01ha2VmaWxlLmxvY2FsCTIwMDMtMTItMTYgMjM6NDM6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjAsNyArMjAsNyBAQAorICMgQWRkIGFueSBsb2NhbCBkZWZpbml0aW9ucyB5b3Ugd2FudCBwYXNzIHRvIHRoZSBjb21waWxlciB0byBERUZTX0xPQ0FMCisgIyBiZWxvdy4gIFRoaXMgaW5jbHVkZXMgdGhvc2UgaXRlbXMgZm91bmQgaW4gImNvbmZpZy9jb25maWcuaCIuCisgIworLSNERUZTX0xPQ0FMCT0gLURESVJFQ1RfUkNNRAorK0RFRlNfTE9DQUwJPSAtTzIgLWcgLXBpcGUgLVdhbGwgLURfUE9TSVhfU09VUkNFIC1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NAorIAorICMKKyAjIEFkZCBhbnkgbG9jYWwgbGlicmFyaWVzIHRoYXQgeW91ciBzeXN0ZW0gbWlnaHQgbmVlZCB0byBMSUJTX0xPQ0FMIGJlbG93LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGlua3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1saW5rcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTk5NGYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGlua3MucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9jbGllbnQuYy5saW5rcwlXZWQgRmViIDE3IDE3OjQ2OjA5IDE5OTkKKysrKyByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMJV2VkIEZlYiAxNyAxNzo1MToxNSAxOTk5CitAQCAtMzA5LDYgKzMwOSwxOCBAQAorIAlyZXR1cm4oMCk7CisgfQorIAorK3ZvaWQgZnJlZWxpbmtpbmZvKGxwKQorKwlzdHJ1Y3QgbGlua2J1ZiAqbHA7CisreworKwlpZiAobHAtPnBhdGhuYW1lKQorKwkJZnJlZShscC0+cGF0aG5hbWUpOworKwlpZiAobHAtPnNyYykKKysJCWZyZWUobHAtPnNyYyk7CisrCWlmIChscC0+dGFyZ2V0KQorKwkJZnJlZShscC0+dGFyZ2V0KTsKKysJZnJlZShscCk7CisrfQorKworIC8qCisgICogU2F2ZSBhbmQgcmV0cmlldmUgaGFyZCBsaW5rIGluZm8KKyAgKi8KK0BAIC0zMTcsNiArMzI5LDcgQEAKKyB7CisgCXN0cnVjdCBsaW5rYnVmICpscDsKKyAKKysJLyogeHh4OiBsaW5lYXIgc2VhcmNoIGRvZXNuJ3Qgc2NhbGUgd2l0aCBtYW55IGxpbmtzICovCisgCWZvciAobHAgPSBpaGVhZDsgbHAgIT0gTlVMTDsgbHAgPSBscC0+bmV4dHApCisgCQlpZiAobHAtPmludW0gPT0gc3RhdHAtPnN0X2lubyAmJiBscC0+ZGV2bnVtID09IHN0YXRwLT5zdF9kZXYpIHsKKyAJCQlscC0+Y291bnQtLTsKK0BAIC0zMjksMTIgKzM0MiwxNCBAQAorIAlscC0+aW51bSA9IHN0YXRwLT5zdF9pbm87CisgCWxwLT5kZXZudW0gPSBzdGF0cC0+c3RfZGV2OworIAlscC0+Y291bnQgPSBzdGF0cC0+c3RfbmxpbmsgLSAxOworLQkodm9pZCkgc3RyY3B5KGxwLT5wYXRobmFtZSwgdGFyZ2V0KTsKKy0JKHZvaWQpIHN0cmNweShscC0+c3JjLCBzb3VyY2UpOworKwlscC0+cGF0aG5hbWUgPSBzdHJkdXAodGFyZ2V0KTsKKysJbHAtPnNyYyA9IHN0cmR1cChzb3VyY2UpOworIAlpZiAoVGRlc3QpCistCQkodm9pZCkgc3RyY3B5KGxwLT50YXJnZXQsIFRkZXN0KTsKKysJCWxwLT50YXJnZXQgPSBzdHJkdXAoVGRlc3QpOworIAllbHNlCistCQkqbHAtPnRhcmdldCA9IENOVUxMOworKwkJbHAtPnRhcmdldCA9IE5VTEw7CisrCWlmICghbHAtPnBhdGhuYW1lIHx8ICFscC0+c3JjIHx8ICEoVGRlc3QgJiYgbHAtPnRhcmdldCkpCisrCQlmYXRhbGVycigiQ2Fubm90IG1hbGxvYyBtZW1vcnkgaW4gbGlua2luZm8uIik7CisgCisgCXJldHVybigoc3RydWN0IGxpbmtidWYgKikgTlVMTCk7CisgfQorLS0tIHJkaXN0LTYuMS41L3NyYy9kb2NtZC5jLmxpbmtzCVdlZCBGZWIgMTcgMTc6NTE6MjMgMTk5OQorKysrIHJkaXN0LTYuMS41L3NyYy9kb2NtZC5jCVdlZCBGZWIgMTcgMTc6NTI6NDQgMTk5OQorQEAgLTU4Niw3ICs1ODYsNyBAQAorIAlpZiAoIW5mbGFnKSB7CisgCQlyZWdpc3RlciBzdHJ1Y3QgbGlua2J1ZiAqbmV4dGwsICpsOworIAorLQkJZm9yIChsID0gaWhlYWQ7IGwgIT0gTlVMTDsgZnJlZSgoY2hhciAqKWwpLCBsID0gbmV4dGwpIHsKKysJCWZvciAobCA9IGloZWFkOyBsICE9IE5VTEw7IGZyZWVsaW5raW5mbyhsKSwgbCA9IG5leHRsKSB7CisgCQkJbmV4dGwgPSBsLT5uZXh0cDsKKyAJCQlpZiAoY29udGltZWRvdXQgfHwgSVNfT04ob3B0cywgRE9fSUdOTE5LUykgfHwgCisgCQkJICAgIGwtPmNvdW50ID09IDApCistLS0gcmRpc3QtNi4xLjUvaW5jbHVkZS9kZWZzLmgubGlua3MJV2VkIEZlYiAxNyAxNzo1Mjo1OCAxOTk5CisrKysgcmRpc3QtNi4xLjUvaW5jbHVkZS9kZWZzLmgJV2VkIEZlYiAxNyAxNzo1Mzo0NyAxOTk5CitAQCAtMjc2LDkgKzI3Niw5IEBACisgCWlub190CWludW07CisgCWRldl90CWRldm51bTsKKyAJaW50CWNvdW50OworLQljaGFyCXBhdGhuYW1lW0JVRlNJWl07CistCWNoYXIJc3JjW0JVRlNJWl07CistCWNoYXIJdGFyZ2V0W0JVRlNJWl07CisrCWNoYXIJKnBhdGhuYW1lOworKwljaGFyCSpzcmM7CisrCWNoYXIJKnRhcmdldDsKKyAJc3RydWN0CWxpbmtidWYgKm5leHRwOworIH07CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NmZkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1saW51eC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCitkaWZmOiByZGlzdC02LjEuNS9jb25maWcvbWY6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKy0tLSByZGlzdC02LjEuNS9jb25maWcvb3MtbGludXguaC5saW51eAlNb24gTm92ICA5IDIyOjU5OjU5IDE5OTgKKysrKyByZGlzdC02LjEuNS9jb25maWcvb3MtbGludXguaAlUaHUgTm92IDEyIDE0OjUwOjM1IDE5OTgKK0BAIC01OCw3ICs1OCw3IEBACisgLyoKKyAgKiBTZWxlY3QgdGhlIHR5cGUgb2YgZXhlY3V0YWJsZSBmaWxlIGZvcm1hdC4KKyAgKi8KKy0jZGVmaW5lIEVYRV9UWVBFCUVYRV9BT1VUCisrI2RlZmluZSBFWEVfVFlQRQlFWEVfRUxGCisgCisgLyoKKyAgKiBTZWxlY3QgdGhlIHR5cGUgb2Ygc3RhdGZzKCkgc3lzdGVtIGNhbGwgKGlmIGFueSkuCistLS0gcmRpc3QtNi4xLjUvbWYvTWFrZWZpbGUudmFyLmxpbnV4CVR1ZSBOb3YgMTAgMDA6MDI6MTEgMTk5OAorKysrIHJkaXN0LTYuMS41L21mL01ha2VmaWxlLnZhcglUaHUgTm92IDEyIDE0OjUwOjM1IDE5OTgKK0BAIC02Nyw3ICs2Nyw3IEBACisgIworICMgTmFtZSBvZiBZQUNDLgorICMKKy0jWUFDQyAJCT0gYmlzb24gLXkKKytZQUNDIAkJPSBiaXNvbiAteQorIAorIE9QVAkJPSAtZworIFJNCQk9IHJtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW1ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjODJlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApAQCAtMCwwICsxLDIzIEBACitBZGQgTERGTEFHUyB2YXJpYWJsZSB0byBNYWtlZmlsZSBzbyB0aGF0IGV4dHJhIGxpbmtlciBmbGFncyBjYW4gYmUgc2VudCB2aWEgdGhpcyB2YXJpYWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLnJlYWwgYi9zcmMvTWFrZWZpbGUucmVhbAoraW5kZXggMDIxNzllNC4uOTA3MDk3NCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5yZWFsCisrKysgYi9zcmMvTWFrZWZpbGUucmVhbAorQEAgLTM2LDEwICszNiwxMCBAQCBhbGw6IHNyYworIHNyYzogJChDTElFTlRfQklOKSAkKFNFUlZFUl9CSU4pCisgCisgJChTRVJWRVJfQklOKTogJChTRVJWRVJPQkpTKSAkKENPTU1PTk9CSlMpICQoTUlTU0lOR09CSlMpCistCSQoQ0MpIC1vICRAICQoU0VSVkVST0JKUykgJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKSAkKExJQlMpCisrCSQoQ0MpIC1vICRAICQoU0VSVkVST0JKUykgJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKSAkKExJQlMpICQoTERGTEFHUykKKyAKKyAkKENMSUVOVF9CSU4pOiAkKENMSUVOVE9CSlMpICQoQ09NTU9OT0JKUykgJChNSVNTSU5HT0JKUykKKy0JJChDQykgLW8gJEAgJChDTElFTlRPQkpTKSAkKENPTU1PTk9CSlMpICQoTUlTU0lOR09CSlMpICQoTElCUykKKysJJChDQykgLW8gJEAgJChDTElFTlRPQkpTKSAkKENPTU1PTk9CSlMpICQoTUlTU0lOR09CSlMpICQoTElCUykgJChMREZMQUdTKQorIAorICQoQ0xJRU5UT0JKUykgJChTRVJWRVJPQkpTKTogJChIRklMRVMpIHkudGFiLmgKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW1heGFyZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYXhhcmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MTYzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYXhhcmdzLnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbTpyZGlzdAoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9zZXRhcmdzLmMubWF4YXJncwkxOTk4LTExLTEwIDA1OjE1OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zZXRhcmdzLmMJMjAwMy0wOS0wNCAxNDozOTowMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC01OCw3ICs1OCw3IEBACisgICogU2V0IHByb2Nlc3MgYXJndW1lbnQgZnVuY3Rpb25zCisgICovCisgCistI2RlZmluZSBNQVhVU0VSRU5WSVJPTiAJCTQwCisrI2RlZmluZSBNQVhVU0VSRU5WSVJPTiAJCTEwMjQKKyBjaGFyIAkJCSAgICAgICoqQXJndiA9IE5VTEw7CisgY2hhciAJCQkgICAgICAgKkxhc3RBcmd2ID0gTlVMTDsKKyBjaGFyIAkJCSAgICAgICAqVXNlckVudmlyb25bTUFYVVNFUkVOVklST04rMV07CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1ta3N0ZW1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWtzdGVtcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDllM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWtzdGVtcC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jLm1rc3RlbXAJMjAwNC0wNS0yNSAxNDoyOTozNy4yNzkzMTI3NTIgKzAyMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2VydmVyLmMJMjAwNC0wNS0yNSAxNDozMToyNy4wNTA3NDQzNDAgKzAyMDAKK0BAIC0xNDc5LDExICsxNDc5LDE4IEBACisgCQkJKmZpbGUgPSAnLyc7CisgCQl9CisgCQlmZCA9IG1rc3RlbXAobmV3KTsKKy0JCWlmIChmZCA8IDApIHsKKysJCS8qIAorKwkJICogRG9uJ3QgY29uc2lkZXIgaXQgYSBmYXRhbCBlcnJvciBpZiBta3N0ZW1wKCkgZmFpbHMKKysJCSAqIGJlY2F1c2UgcGFyZW50IGRpcmVjdG9yeSBkaWRuJ3QgZXhpc3QuIChNaXNzaW5nIAorKwkJICogcGFyZW50cyBhcmUgY3JlYXRlZCBsYXRlciAoaW4gcmVjdmZpbGUoKSkKKysJCSAqLworKwkJaWYgKChmZCA8IDApICYmIChlcnJubyAhPSBFTk9FTlQpKSB7CisgCQkJZXJyb3IoIkNhbm5vdCBzZXQgZmlsZSBuYW1lLiIpOworIAkJCXJldHVybjsKKysJCX0gZWxzZSBpZiAoZmQgPj0gMCkgeworKwkJCWNsb3NlKGZkKTsKKysJCQl1bmxpbmsobmV3KTsgLyogT3Igc3ltbGluaygpIHdpbGwgZmFpbCAqLworIAkJfQorLQkJY2xvc2UoZmQpOworIAl9CisgCisgCS8qCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1vbGRwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtb2xkcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTNiMTgzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtb2xkcGF0aC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvY29uZmlnL2NvbmZpZy5oLm9sZHBhdGgJVHVlIE5vdiAxMCAwNDo1OTo0OCAxOTk4CisrKysgcmRpc3QtNi4xLjUvY29uZmlnL2NvbmZpZy5oCVRodSBKYW4gMzEgMTc6MzM6MjEgMjAwMgorQEAgLTM5LDcgKzM5LDcgQEAKKyAgKiBkb24ndCBoYXZlIHRoZSBvbGQgcmRpc3QsIHRoZW4gdW5jb21tZW50IHRoZSAiI3VuZGVmIiBsaW5lLgorICAqLworICNpZm5kZWYgX1BBVEhfT0xEUkRJU1QKKy0jZGVmaW5lIF9QQVRIX09MRFJESVNUCSIvdXNyL3VjYi9vbGRyZGlzdCIJLyogRW5hYmxlIGNvbXBhdCAqLworKyNkZWZpbmUgX1BBVEhfT0xEUkRJU1QJIi91c3IvYmluL29sZHJkaXN0IgkvKiBFbmFibGUgY29tcGF0ICovCisgI2VuZGlmCisgLyojdW5kZWYgIF9QQVRIX09MRFJESVNUKi8JCQkJLyogRGlzYWJsZSBjb21wYXQgKi8KKyAKKy0tLSByZGlzdC02LjEuNS9kb2MvcmRpc3QubWFuLm9sZHBhdGgJVHVlIE5vdiAxMCAwNjozODo1MyAxOTk4CisrKysgcmRpc3QtNi4xLjUvZG9jL3JkaXN0Lm1hbglUaHUgSmFuIDMxIDE3OjM2OjU3IDIwMDIKK0BAIC0xNzAsMTAgKzE3MCw5IEBACisgVGhpcyBvcHRpb24gd2lsbCBvbmx5IHdvcmsgaWYgCisgLkkgcmRpc3QKKyB3YXMgY29tcGlsZWQgd2l0aCB0aGUgbG9jYXRpb24gb2YgdGhlIG9sZCByZGlzdAorLSh1c3VhbGx5IGVpdGhlcgorLS5JIC91c3IvdWNiL29sZHJkaXN0Cistb3IKKy0uSSAvdXNyL29sZC9yZGlzdCkKKysodGhlIHBhdGgKKysuSSAvdXNyL2Jpbi9vbGRyZGlzdAorK2lzIHVzZWQgb24gUmVkIEhhdCBsaW51eCkKKyBhbmQgdGhhdCBwcm9ncmFtIGlzIGF2YWlsYWJsZSBhdCBydW4gdGltZS4KKyAuUFAKKyAuSSBSZGlzdAorQEAgLTU1OCw3ICs1NTcsNyBAQAorIHNob3VsZCBiZSBvZiBmb3JtCisgLnNwCisgLlJTCistXGZJZmFjaWxpdHlcZkI9XGZJdHlwZXNcZkI6XGZJZmFjaWxpdHlcZkI9XGZJdHlwZXMuLi4KKytcZklmYWNpbGl0eVxmQj1cZkl0eXBlc1xmQjpcZklmYWNpbGl0eVxmQj1cZkl0eXBlcy4uLlxmUgorIC5SRQorIC5zcAorIFRoZSB2YWxpZCBmYWNpbGl0eSBuYW1lcyBhcmU6CistLS0gcmRpc3QtNi4xLjUvUkVBRE1FLm9sZHBhdGgJRnJpIEp1bCAxOSAxOToyNDowOSAxOTk2CisrKysgcmRpc3QtNi4xLjUvUkVBRE1FCVRodSBKYW4gMzEgMTc6MzM6MjEgMjAwMgorQEAgLTY1LDEyICs2NSwxMiBAQAorIAorIFRoZSB3YXkgdGhlIG9sZCByZGlzdCBzdGFydGVkIGEgc2VydmVyIHJkaXN0IGlzIHRvIHJ1biAicmRpc3QKKyAtU2VydmVyIi4gIElmIHRoZSBuZXcgcmRpc3QgaXMgcnVuIHdpdGggdGhlICItU2VydmVyIiBvcHRpb24sIHRoZW4gaXQKKy13aWxsIGV4ZWMgYSBjb3B5IG9mIHRoZSBvbGQgcmRpc3QgKHVzdWFsbHkgL3Vzci9vbGQvcmRpc3Qgb3IKKy0vdXNyL3VjYi9vbGRyZGlzdCkuICBJbiB0aGlzIHdheSwgeW91IGdldCBjb21wYXRpYmlsaXR5IHdpdGggaG9zdHMKKyt3aWxsIGV4ZWMgYSBjb3B5IG9mIHRoZSBvbGQgcmRpc3QgKHRoZSBwYXRoIC91c3IvYmluL29sZHJkaXN0IGluIFJlZAorK0hhdCBsaW51eCkuICBJbiB0aGlzIHdheSwgeW91IGdldCBjb21wYXRpYmlsaXR5IHdpdGggaG9zdHMKKyBydW5uaW5nIHRoZSBvbGQgcmRpc3QgYXR0ZW1wdGluZyB0byByZGlzdCB0byBhIG1hY2hpbmUgcnVubmluZyBuZXcKKyByZGlzdC4gIElmIHlvdXIgaG9zdCBydW5uaW5nIG5ldyByZGlzdCB3YW50cyB0byByZGlzdCB0byBhIGhvc3QKKyBydW5uaW5nIHRoZSBvbGQgcmRpc3QsIHRoZW4gaXQgbXVzdCBydW4gdGhlIG9sZCByZGlzdCBwcm9ncmFtCistKC91c3Ivb2xkL3JkaXN0IG9yIC91c3IvdWNiL29sZHJkaXN0KS4KKysoL3Vzci9iaW4vb2xkcmRpc3QgaW4gUmVkIEhhdCBsaW51eCkuCisgCisgVGhlIGRlZmluaXRpb24gX1BBVEhfT0xEUkRJU1QgaW4gImNvbmZpZy9jb25maWcuaCIgY29udHJvbHMgdGhlCisgbG9jYXRpb24gb2YgdGhlIG9sZCByZGlzdC4gIElmIHRoaXMgaXMgbm90IGRlZmluZWQsIG9yIHRoZSBkZWZpbmVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM5ODJjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXNzaC5wYXRjaApAQCAtMCwwICsxLDE0IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL3JzaHJjbWQuYy5kaXN0CVR1ZSBEZWMgMTIgMDg6MjA6NTYgMTk5NQorKysrIHJkaXN0LTYuMS41L3NyYy9yc2hyY21kLmMJV2VkIERlYyAxMSAwNzoxNDoxMyAxOTk2CitAQCAtNjQsNSArNjQsNSBAQAorIAkJICAgc3BbMF0uICovCisgCQkodm9pZCkgY2xvc2Uoc3BbMF0pOworLQkJaWYgKGR1cDIoc3BbMV0sIDApIDwgMCB8fCBkdXAyKDAsMSkgPCAwIHx8IGR1cDIoMCwgMikgPCAwKSB7CisrCQlpZiAoZHVwMihzcFsxXSwgMCkgPCAwIHx8IGR1cDIoMCwxKSA8IDApIHsKKyAJCQllcnJvcigiZHVwMiBmYWlsZWQ6ICVzLiIsIFNZU0VSUik7CisgCQkJX2V4aXQoMjU1KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXN0YXQ2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXN0YXQ2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjA5NTNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtc3RhdDY0LnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvZmlsZXN5cy5jLnN0YXQ2NAkyMDA1LTA1LTA0IDE0OjExOjAzLjAwMDAwMDAwMCArMDIwMAorKysrIHJkaXN0LTYuMS41L3NyYy9maWxlc3lzLmMJMjAwNS0wNS0wNCAxNDoxMToxMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MzAsOCArNDMwLDggQEAKKyAgKi8KKyBpbnQgZ2V0ZmlsZXN5c2luZm8oZmlsZSwgZnJlZXNwYWNlLCBmcmVlZmlsZXMpCisgCWNoYXIgKmZpbGU7CistCWxvbmcgKmZyZWVzcGFjZTsKKy0JbG9uZyAqZnJlZWZpbGVzOworKwlmc2Jsa2NudF90ICpmcmVlc3BhY2U7CisrCWZzZmlsY250X3QgKmZyZWVmaWxlczsKKyB7CisgI2lmCWRlZmluZWQoU1RBVEZTX1RZUEUpCisgCXN0YXRpYyBzdGF0ZnNfdCBzdGF0ZnNidWY7CistLS0gcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jLnN0YXQ2NAkyMDA1LTA1LTA0IDE0OjExOjIzLjAwMDAwMDAwMCArMDIwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zZXJ2ZXIuYwkyMDA1LTA1LTA0IDE0OjIwOjM0LjAwMDAwMDAwMCArMDIwMAorQEAgLTYyLDggKzYyLDggQEAKKyBpbnQJY2F0bmFtZSA9IDA7CQkvKiBjYXQgbmFtZSB0byB0YXJnZXQgbmFtZSAqLworIGNoYXIJKnNwdGFyZ2V0WzMyXTsJCS8qIHN0YWNrIG9mIHNhdmVkIHB0YXJnZXQncyBmb3IgZGlyZWN0b3JpZXMgKi8KKyBjaGFyICAgKmZyb21ob3N0ID0gTlVMTDsJLyogQ2xpZW50IGhvc3RuYW1lICovCistc3RhdGljIGxvbmcgbWluX2ZyZWVzcGFjZSA9IDA7CS8qIE1pbmltaXVtIGZyZWUgc3BhY2Ugb24gYSBmaWxlc3lzdGVtICovCistc3RhdGljIGxvbmcgbWluX2ZyZWVmaWxlcyA9IDA7CS8qIE1pbmltaXVtIGZyZWUgIyBmaWxlcyBvbiBhIGZpbGVzeXN0ZW0gKi8KKytzdGF0aWMgZnNibGtjbnRfdCBtaW5fZnJlZXNwYWNlID0gMDsgLyogTWluaW1pdW0gZnJlZSBzcGFjZSBvbiBhIGZpbGVzeXN0ZW0gKi8KKytzdGF0aWMgZnNmaWxjbnRfdCBtaW5fZnJlZWZpbGVzID0gMDsgLyogTWluaW1pdW0gZnJlZSAjIGZpbGVzIG9uIGEgZmlsZXN5c3RlbSAqLworIGludAlvdW1hc2s7CQkJLyogT2xkIHVtYXNrICovCisgCisgLyoKK0BAIC0xMzI2LDcgKzEzMjYsNyBAQAorIAkJCWZhdGFsZXJyKCJFeHBlY3RlZCBkaWdpdCwgZ290ICclcycuIiwgY3ApOworIAkJCXJldHVybjsKKyAJCX0KKy0JCW1pbl9mcmVlc3BhY2UgPSAodW5zaWduZWQgbG9uZykgYXRvaShjcCk7CisrCQltaW5fZnJlZXNwYWNlID0gKGZzYmxrY250X3QpIGF0b2xsKGNwKTsKKyAJCWJyZWFrOworIAorIAljYXNlIFNDX0ZSRUVGSUxFUzogCS8qIE1pbmltaXVtIGZyZWUgZmlsZXMgKi8KK0BAIC0xMzM0LDcgKzEzMzQsNyBAQAorIAkJCWZhdGFsZXJyKCJFeHBlY3RlZCBkaWdpdCwgZ290ICclcycuIiwgY3ApOworIAkJCXJldHVybjsKKyAJCX0KKy0JCW1pbl9mcmVlZmlsZXMgPSAodW5zaWduZWQgbG9uZykgYXRvaShjcCk7CisrCQltaW5fZnJlZWZpbGVzID0gKGZzZmlsY250X3QpIGF0b2xsKGNwKTsKKyAJCWJyZWFrOworIAorIAljYXNlIFNDX0xPR0dJTkc6CS8qIExvZ2dpbmcgb3B0aW9ucyAqLworQEAgLTEzNjQsNyArMTM2NCw4IEBACisgCXRpbWVfdCBtdGltZSwgYXRpbWU7CisgCWNoYXIgKm93bmVyLCAqZ3JvdXAsICpmaWxlOworIAljaGFyIG5ld1tNQVhQQVRITEVOXTsKKy0JbG9uZyBmcmVlc3BhY2UgPSAtMSwgZnJlZWZpbGVzID0gLTE7CisrCWZzZmlsY250X3QgZnJlZWZpbGVzID0gLTE7CisrCWZzYmxrY250X3QgZnJlZXNwYWNlID0gLTE7CisgCWNoYXIgKmNwID0gY21kOworIAorIAkvKgorQEAgLTE0OTksNyArMTUwMCw3IEBACisgCSAqLworIAlpZiAobWluX2ZyZWVzcGFjZSB8fCBtaW5fZnJlZWZpbGVzKSB7CisgCQkvKiBDb252ZXJ0IGZpbGUgc2l6ZSB0byBraWxvYnl0ZXMgKi8KKy0JCWxvbmcgZnNpemUgPSAobG9uZykgKHNpemUgLyAxMDI0KTsKKysJCWZzYmxrY250X3QgZnNpemUgPSAoZnNibGtjbnRfdCkgKHNpemUgLyAxMDI0KTsKKyAKKyAJCWlmIChnZXRmaWxlc3lzaW5mbyh0YXJnZXQsICZmcmVlc3BhY2UsICZmcmVlZmlsZXMpICE9IDApCisgCQkJcmV0dXJuOworQEAgLTE1MTEsMTQgKzE1MTIsMTQgQEAKKyAJCWlmIChtaW5fZnJlZXNwYWNlICYmIChmcmVlc3BhY2UgPj0gMCkgJiYgCisgCQkgICAgKGZyZWVzcGFjZSAtIGZzaXplIDwgbWluX2ZyZWVzcGFjZSkpIHsKKyAJCQllcnJvcigKKy0JCSAgICAgIiVzOiBOb3QgZW5vdWdoIGZyZWUgc3BhY2Ugb24gZmlsZXN5c3RlbTogbWluICVkIGZyZWUgJWQiLAorKwkJICAgICAiJXM6IE5vdCBlbm91Z2ggZnJlZSBzcGFjZSBvbiBmaWxlc3lzdGVtOiBtaW4gJWxsZCBmcmVlICVsbGQiLAorIAkJCSAgICAgIHRhcmdldCwgbWluX2ZyZWVzcGFjZSwgZnJlZXNwYWNlKTsKKyAJCQlyZXR1cm47CisgCQl9CisgCQlpZiAobWluX2ZyZWVmaWxlcyAmJiAoZnJlZWZpbGVzID49IDApICYmCisgCQkgICAgKGZyZWVmaWxlcyAtIDEgPCBtaW5fZnJlZWZpbGVzKSkgeworIAkJCWVycm9yKAorLQkJICAgICAiJXM6IE5vdCBlbm91Z2ggZnJlZSBmaWxlcyBvbiBmaWxlc3lzdGVtOiBtaW4gJWQgZnJlZSAlZCIsCisrCQkgICAgICIlczogTm90IGVub3VnaCBmcmVlIGZpbGVzIG9uIGZpbGVzeXN0ZW06IG1pbiAlbGxkIGZyZWUgJWxsZCIsCisgCQkJICAgICAgdGFyZ2V0LCBtaW5fZnJlZWZpbGVzLCBmcmVlZmlsZXMpOworIAkJCXJldHVybjsKKyAJCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXN2cjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zdnI0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzNiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zdnI0LnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9idWlsZC9vcy10eXBlLnN2cjQJMjAwMy0xMi0xNyAxMjo0NDoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9idWlsZC9vcy10eXBlCTIwMDMtMTItMTcgMTI6NDQ6MjkuMDAwMDAwMDAwICswMTAwCitAQCAtODMsNyArODMsNiBAQAorIGlmIFsgLXogIiR7T1N9IiAtYSAhIC16ICIke3VuYW1lfSIgXTsgdGhlbgorIAljYXNlICJgJHVuYW1lIC1hIHwgdHIgJ1tBLVpdJyAnW2Etel0nYCIgaW4KKyAJCSAgICBvc2YxKikJT1M9YnJlYWs7OworLQkJKiI0LjAiKikJT1M9c3ZyNDs7CSMgVGhlcmUgaGFzIHRvIGJlIGEgYmV0dGVyIHdheQorIAkJKiIgZGNvc3ggIiopCU9TPWRjb3N4OzsKKyAJCSoiY3gvdXgiKikJT1M9Y3h1eDs7CisgCQkqImhwLXV4IiopCSMgSFAtVVggOS54CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS12YXJhcmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtdmFyYXJncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmVkYmM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtdmFyYXJncy5wYXRjaApAQCAtMCwwICsxLDE2IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvY29uZmlnL29zLWxpbnV4LmgudmFyYXJncwkyMDAzLTA2LTE3IDE3OjUyOjMzLjAwMDAwMDAwMCArMDIwMAorKysrIHJkaXN0LTYuMS41L2NvbmZpZy9vcy1saW51eC5oCTIwMDMtMDYtMTcgMTc6NTM6MDcuMDAwMDAwMDAwICswMjAwCitAQCAtNjgsNyArNjgsNyBAQAorIC8qCisgICogVHlwZSBvZiBhcmcgZnVuY3Rpb25zIHdlIGhhdmUuCisgICovCistI2RlZmluZSBBUkdfVFlQRQlBUkdfVkFSQVJHUworKyNkZWZpbmUgQVJHX1RZUEUJQVJHX1NUREFSRworIAorIC8qCisgICogRG8gd2UgaGF2ZSBzZWxlY3QoKT8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0XzYuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3RfNi4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhMWYwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0XzYuMS41LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiUmVtb3RlIGZpbGUgZGlzdHJpYnV0aW9uIGNsaWVudCBhbmQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiXAorUmRpc3QgaXMgYSBwcm9ncmFtIHRvIG1haW50YWluIGlkZW50aWNhbCBjb3BpZXMgb2YgZmlsZXMgb3ZlciBtdWx0aXBsZSBcCitob3N0cy4gSXQgcHJlc2VydmVzIHRoZSBvd25lciwgZ3JvdXAsIG1vZGUsIGFuZCBtdGltZSBvZiBmaWxlcyBpZiBcCitwb3NzaWJsZSBhbmQgY2FuIHVwZGF0ZSBwcm9ncmFtcyB0aGF0IGFyZSBleGVjdXRpbmcuIFwKKyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTNmNDdlYzlmNjRiMTFjODE5MmVlMDVhNjZiNWMyNzU1IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWFnbmljb21wLmNvbS9kb3dubG9hZC8ke0JQTn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjU0Njc3OTcwMGFmNzBhYTVmOTEwM2UwODc4MmNkY2FjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiYjBkMGY1OTA0ZWFkYzllN2ZlM2Q2MGMxNTM4OWQ2ODk3ZmNmODg0MjExMDcwZTI4OWE2YzcxMGZmMzdmOTYiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZGlzdC02LjEuNS1saW51eC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtbGlua3MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LW9sZHBhdGgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LWhhcmRsaW5rLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1iaXNvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtdmFyYXJncy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtbWF4YXJncy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtbGZzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1jbGVhbnVwLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1zdnI0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1zc2gucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LW1rc3RlbXAucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LXN0YXQ2NC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtZml4LW1zZ3NuZG5vdGlmeS1sb29wLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1iYi1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAorIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0VYVFJBX09FTUFLRSA9ICJCSU5fR1JPVVA9cm9vdCBNQU5fR1JPVVA9cm9vdCBSRElTVF9NT0RFPTc1NSBSRElTVERfTU9ERT03NTUgTUFOX01PREU9NjQ0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZC8wMDAxLXJ0bmxfZmx1c2gtRXJyb3Itb24tZmFpbGVkLXdyaXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZC8wMDAxLXJ0bmxfZmx1c2gtRXJyb3Itb24tZmFpbGVkLXdyaXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYWYzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkLzAwMDEtcnRubF9mbHVzaC1FcnJvci1vbi1mYWlsZWQtd3JpdGUucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAyZmEzMjZiMjZkYzQ3OTk0MjM2N2RjNDI4M2UyZjg3MzcyNDAzOTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTcgSnVuIDIwMTcgMDk6MzI6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnRubF9mbHVzaDogRXJyb3Igb24gZmFpbGVkIHdyaXRlKCkKKworRml4ZXMKK3JvdXRlLmM6NDU6MjogZXJyb3I6IGlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnd3JpdGUnLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQgWy1XZXJyb3I9dW51c2VkLXJlc3VsdF0KK3wgICB3cml0ZShmZCwgIi0xIiwgMik7Cit8ICAgXn5+fn5+fn5+fn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyByb3V0ZS5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9yb3V0ZS5jIGIvcm91dGUuYworaW5kZXggYzU1MmQxZi4uZmM1YzMxZSAxMDA2NDQKKy0tLSBhL3JvdXRlLmMKKysrKyBiL3JvdXRlLmMKK0BAIC00Miw3ICs0Miw4IEBAIHN0YXRpYyB2b2lkIHJ0bmxfZmx1c2godm9pZCkKKyAJaWYgKGZkIDwgMCkKKyAJCXJldHVybjsKKyAKKy0Jd3JpdGUoZmQsICItMSIsIDIpOworKwlpZiAod3JpdGUoZmQsICItMSIsIDIpIDwgMCApCisrCQlwZXJyb3IoIndyaXRlIik7CisgCWNsb3NlKGZkKTsKKyB9CisgCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWRfZ2l0LmJiCmluZGV4IDUwMjk3ZjMuLjk4ZGM0MWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWRfZ2l0LmJiCkBAIC01LDkgKzUsMTEgQEAKIAogREVQRU5EUyA9ICJsaWJ1Ym94IgogCi1TUkNfVVJJID0gImdpdDovL25iZC5uYW1lL3JlbGF5ZC5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdC5vcGVud3J0Lm9yZy9wcm9qZWN0L3JlbGF5ZC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ydG5sX2ZsdXNoLUVycm9yLW9uLWZhaWxlZC13cml0ZS5wYXRjaCBcCisiCiAKLVNSQ1JFViA9ICIyOTcwZmY2MGJhYzZiNzBlY2I2ODI3NzlkNWM3NzZkYzU1OWRjMGI5IgorU1JDUkVWID0gImFkMGIyNWFkNzQzNDVkMzY3YzYyMzExZTE0YjI3OWY1Y2NiOGVmMTMiCiBQViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzAwLWZpeC10eXBvcy1pbi1tYW4tcGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8wMC1maXgtdHlwb3MtaW4tbWFuLXBhZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTRiYzMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzAwLWZpeC10eXBvcy1pbi1tYW4tcGFnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSAxNTczNjM4MjEyYTk3MzNhNDQ5MzlhNGQzOGEyMjZmMzhkY2EzNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGVsZSBCYWxkZXNzYXJpIDxtaWNoZWxlQGFja3N5bi5vcmc+Ci1EYXRlOiBUdWUsIDkgSnVsIDIwMTMgMjM6MjM6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHR5cG9zIGluIG1hbi1wYWdlcwotCi1GaXggc29tZSB0eXBvcyBpbiB0aGUgbWFuLXBhZ2VzLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoZWxlIEJhbGRlc3NhcmkgPG1pY2hlbGVAYWNrc3luLm9yZz4KLVJldmlld2VkLWJ5OiBTaW1vIFNvcmNlIDxpZHJhQHNhbWJhLm9yZz4KLQotQXV0b2J1aWxkLVVzZXIobWFzdGVyKTogU2ltbyBTb3JjZSA8aWRyYUBzYW1iYS5vcmc+Ci1BdXRvYnVpbGQtRGF0ZShtYXN0ZXIpOiBXZWQgSnVsIDEwIDE2OjQ1OjA3IENFU1QgMjAxMyBvbiBzbi1kZXZlbC0xMDQKLS0tLQotIGRvY3MteG1sL21hbnBhZ2VzL2Rid3JhcF90b29sLjEueG1sICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzLXhtbC9tYW5wYWdlcy9pZG1hcF9hdXRvcmlkLjgueG1sICAgICAgICAgICAgfCAyICstCi0gZG9jcy14bWwvbWFucGFnZXMvbmV0LjgueG1sICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGRvY3MteG1sL21hbnBhZ2VzL3BkYmVkaXQuOC54bWwgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzLXhtbC9tYW5wYWdlcy9zYW1iYS43LnhtbCAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZG9jcy14bWwvbWFucGFnZXMvc21iY2xpZW50LjEueG1sICAgICAgICAgICAgICAgIHwgMiArLQotIGRvY3MteG1sL21hbnBhZ2VzL3NtYnBhc3N3ZC41LnhtbCAgICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzLXhtbC9tYW5wYWdlcy92ZnNfc21iX3RyYWZmaWNfYW5hbHl6ZXIuOC54bWwgfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLUluZGV4OiBzYW1iYS00LjEuMTEvZG9jcy14bWwvbWFucGFnZXMvc21ic3RhdHVzLjEueG1sCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2FtYmEtNC4xLjExLm9yaWcvZG9jcy14bWwvbWFucGFnZXMvc21ic3RhdHVzLjEueG1sCi0rKysgc2FtYmEtNC4xLjExL2RvY3MteG1sL21hbnBhZ2VzL3NtYnN0YXR1cy4xLnhtbAotQEAgLTEzNyw2ICsxMzcsMTMgQEAKLSAJCTwvbGlzdGl0ZW0+Ci0gCQk8L3Zhcmxpc3RlbnRyeT4KLSAKLSsJCTx2YXJsaXN0ZW50cnk+Ci0rCQk8dGVybT4tbnwtLW51bWVyaWM8L3Rlcm0+Ci0rCQk8bGlzdGl0ZW0+PHBhcmE+Y2F1c2VzIHNtYnN0YXR1cyB0byBkaXNwbGF5IG51bWVyaWMgVUlEcyBhbmQgR0lEcyBpbnN0ZWFkIG9mCi0rCQkJCXJlc29sdmluZyB0aGVtIHRvIG5hbWVzLjwvcGFyYT4KLSsJCTwvbGlzdGl0ZW0+Ci0rCQk8L3Zhcmxpc3RlbnRyeT4KLSsKLSAJPC92YXJpYWJsZWxpc3Q+Ci0gPC9yZWZzZWN0MT4KLSAKLUluZGV4OiBzYW1iYS00LjEuMTEvZG9jcy14bWwvbWFucGFnZXMvc2hhcmVzZWMuMS54bWwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzYW1iYS00LjEuMTEub3JpZy9kb2NzLXhtbC9tYW5wYWdlcy9zaGFyZXNlYy4xLnhtbAotKysrIHNhbWJhLTQuMS4xMS9kb2NzLXhtbC9tYW5wYWdlcy9zaGFyZXNlYy4xLnhtbAotQEAgLTEyOSw2ICsxMjksMTMgQEAKLSAJCTwvcGFyYT48L2xpc3RpdGVtPgotIAkJPC92YXJsaXN0ZW50cnk+Ci0gCi0rCQk8dmFybGlzdGVudHJ5PgotKwkJPHRlcm0+LVN8LS1zZXRzZGRsPVNUUklORzwvdGVybT4KLSsJCTxsaXN0aXRlbT48cGFyYT4KLSsJCVNldCBzZWN1cml0eSBkZXNjcmlwdG9yIGJ5IHByb3ZpZGluZyBBQ0wgaW4gU0RETCBmb3JtYXQuCi0rCQk8L3BhcmE+PC9saXN0aXRlbT4KLSsJCTwvdmFybGlzdGVudHJ5PgotKwotIAkJJnN0ZGFyZy5oZWxwOwotIAkJJnN0ZGFyZy5zZXJ2ZXIuZGVidWc7Ci0gCQkmcG9wdC5jb21tb24uc2FtYmE7Ci1JbmRleDogc2FtYmEtNC4xLjExL2RvY3MteG1sL2J1aWxkL0RURC9zYW1iYS5lbnRpdGllcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuMS4xMS5vcmlnL2RvY3MteG1sL2J1aWxkL0RURC9zYW1iYS5lbnRpdGllcwotKysrIHNhbWJhLTQuMS4xMS9kb2NzLXhtbC9idWlsZC9EVEQvc2FtYmEuZW50aXRpZXMKLUBAIC0yNzAsNiArMjcwLDQ0IEBAIGZpbGUuCi0gJnBvcHQuY29tbW9uLnNhbWJhOwotICc+Ci0gCi0rPCFFTlRJVFkgc3RkYXJnLnNpZ25pbmcgJwotKzx2YXJsaXN0ZW50cnk+Ci0rPHRlcm0+LVN8LS1zaWduaW5nIG9ufG9mZnxyZXF1aXJlZDwvdGVybT4KLSs8bGlzdGl0ZW0+PHBhcmE+U2V0IHRoZSBjbGllbnQgc2lnbmluZyBzdGF0ZS4KLSs8L3BhcmE+PC9saXN0aXRlbT4KLSs8L3Zhcmxpc3RlbnRyeT4KLSsnPgotKwotKzwhRU5USVRZIHN0ZGFyZy5tYWNoaW5lcGFzcyAnCi0rPHZhcmxpc3RlbnRyeT4KLSs8dGVybT4tUHwtLW1hY2hpbmUtcGFzczwvdGVybT4KLSs8bGlzdGl0ZW0+PHBhcmE+VXNlIHN0b3JlZCBtYWNoaW5lIGFjY291bnQgcGFzc3dvcmQuCi0rPC9wYXJhPjwvbGlzdGl0ZW0+Ci0rPC92YXJsaXN0ZW50cnk+Ci0rJz4KLSsKLSs8IUVOVElUWSBzdGRhcmcuZW5jcnlwdCAnCi0rPHZhcmxpc3RlbnRyeT4KLSs8dGVybT4tZXwtLWVuY3J5cHQ8L3Rlcm0+Ci0rPGxpc3RpdGVtPjxwYXJhPgotK1RoaXMgY29tbWFuZCBsaW5lIHBhcmFtZXRlciByZXF1aXJlcyB0aGUgcmVtb3RlCi0rc2VydmVyIHN1cHBvcnQgdGhlIFVOSVggZXh0ZW5zaW9ucyBvciB0aGF0IHRoZSBTTUIzIHByb3RvY29sIGhhcyBiZWVuIHNlbGVjdGVkLgotK1JlcXVlc3RzIHRoYXQgdGhlIGNvbm5lY3Rpb24gYmUgZW5jcnlwdGVkLiBOZWdvdGlhdGVzIFNNQiBlbmNyeXB0aW9uIHVzaW5nIGVpdGhlcgotK1NNQjMgb3IgUE9TSVggZXh0ZW5zaW9ucyB2aWEgR1NTQVBJLiBVc2VzIHRoZSBnaXZlbiBjcmVkZW50aWFscyBmb3IKLSt0aGUgZW5jcnlwdGlvbiBuZWdvdGlhdGlvbiAoZWl0aGVyIGtlcmJlcm9zIG9yIE5UTE12MS92MiBpZiBnaXZlbgotK2RvbWFpbi91c2VybmFtZS9wYXNzd29yZCB0cmlwbGUuIEZhaWxzIHRoZSBjb25uZWN0aW9uIGlmIGVuY3J5cHRpb24KLStjYW5ub3QgYmUgbmVnb3RpYXRlZC4KLSs8L3BhcmE+PC9saXN0aXRlbT4KLSs8L3Zhcmxpc3RlbnRyeT4KLSsnPgotKwotKzwhRU5USVRZIHN0ZGFyZy5wd250aGFzaCAnCi0rPHZhcmxpc3RlbnRyeT4KLSs8dGVybT4tLXB3LW50LWhhc2g8L3Rlcm0+Ci0rPGxpc3RpdGVtPjxwYXJhPlRoZSBzdXBwbGllZCBwYXNzd29yZCBpcyB0aGUgTlQgaGFzaC4KLSs8L3BhcmE+PC9saXN0aXRlbT4KLSs8L3Zhcmxpc3RlbnRyeT4KLSsnPgotIAotIDwhRU5USVRZIHN0ZGFyZy5yZXNvbHZlLm9yZGVyICcKLSA8dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU3NGFlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJHUEwtMy4wKyAmIExHUEwtMy4wKyAmIEdQTC0yLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTEdQTC0zLjA7bWQ1PWJmY2NmZTk1MjI2OWZmZjJiNDA3ZGQxMWYyZjMwODNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2ICIKLQotU0FNQkFfTUlSUk9SID0gImh0dHA6Ly9zYW1iYS5vcmcvc2FtYmEvZnRwIgotTUlSUk9SUyArPSAiXAotJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly9taXJyb3IuaW50ZXJub2RlLm9uLm5ldC9wdWIvc2FtYmEgXG4gXAotJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvZnRwLnNhbWJhLm9yZyBcbiBcCi0iCi0KLVNSQ19VUkkgPSAiJHtTQU1CQV9NSVJST1J9L3N0YWJsZS9zYW1iYS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAtZml4LXR5cG9zLWluLW1hbi1wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhY2thZ2luZy1Bdm9pZC10aW1lb3V0LWZvci1ubWJkLWlmLXN0YXJ0ZWQtb2ZmbGluZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1hdm9pZC11c2luZy1jb2xvbi1pbi10aGUtY2hlY2tpbmctbXNnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25ldGRiX2RlZmluZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2xpYmNfb25seS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc2FtYmEgXAotICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vc2FtYmEtNC4yLjctcGFtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NhbWJhLTQuMy45LXJlbW92ZS1nZXRwd2VudF9yLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDYxZGVmODE5MGZmYzY1MWZkODQ1OGIyNGNhMmE2MjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTI3YWZjYzE2ZTQ0NDcxODk4NWUzOTUyZGU5MmQzNGU3Yjc3NmI5Y2EwMjM4MTc5ZDg2NmRhMThhNjQ0MWMzNSIKLQotaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAotIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCi1SREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKLQotREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGtyYjUgbGliYnNkIGxpYmFpbyBsaWJwYW0iCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCi0KLUxTQiA9ICIiCi1MU0JfbGludXhzdGRiYXNlID0gImxzYiIKLQotSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2Ugd2luYmluZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB6ZXJvY29uZicsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgYWNsIGN1cHMgbGRhcCBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWJhc2UgKz0gIiR7TFNCfSIKLVJERVBFTkRTXyR7UE59LWN0ZGItdGVzdHMgKz0gImJhc2ggdXRpbC1saW51eC1nZXRvcHQiCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLXN1cHBvcnQsLS13aXRob3V0LWFjbC1zdXBwb3J0LGFjbCIKLVBBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCi1QQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsY3VwcyIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIiwsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbZG1hcGldID0gIi0td2l0aC1kbWFwaSwtLXdpdGhvdXQtZG1hcGksZG1hcGkiCi1QQUNLQUdFQ09ORklHW3plcm9jb25mXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICIsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbbHR0bmddID0gIi0td2l0aC1sdHRuZywgLS13aXRob3V0LWx0dG5nLGx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdbYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgotCi0KLVNBTUJBNF9JRE1BUF9NT0RVTEVTPSJpZG1hcF9hZCxpZG1hcF9yaWQsaWRtYXBfYWRleCxpZG1hcF9oYXNoLGlkbWFwX3RkYjIiCi1TQU1CQTRfUERCX01PRFVMRVM9InBkYl90ZGJzYW0sJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGRhcCcsICdwZGJfbGRhcCwnLCAnJywgZCl9cGRiX2FkcyxwZGJfc21icGFzc3dkLHBkYl93YmNfc2FtLHBkYl9zYW1iYTQiCi1TQU1CQTRfQVVUSF9NT0RVTEVTPSJhdXRoX3VuaXgsYXV0aF93YmMsYXV0aF9zZXJ2ZXIsYXV0aF9uZXRsb2dvbmQsYXV0aF9zY3JpcHQsYXV0aF9zYW1iYTQiCi1TQU1CQTRfTU9EVUxFUz0iJHtTQU1CQTRfSURNQVBfTU9EVUxFU30sJHtTQU1CQTRfUERCX01PRFVMRVN9LCR7U0FNQkE0X0FVVEhfTU9EVUxFU30iCi0KLVNBTUJBNF9MSUJTPSJoZWltZGFsLCF6bGliLCFwb3B0LCF0YWxsb2MsIXB5dGFsbG9jLCFweXRhbGxvYy11dGlsLCF0ZXZlbnQsIXB5dGV2ZW50LCF0ZGIsIXB5dGRiLCFsZGIsIXB5bGRiIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ251dGxzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc2hhcmVkLW1vZHVsZXM9JHtTQU1CQTRfTU9EVUxFU30gXAotICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPSR7U0FNQkE0X0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS1taXRrcmI1IFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWFkLWRjIFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCi0gICAgICAgICAgICAgICAgIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCBwYWNrYWdpbmcvc3lzdGVtZC8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAotICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCi0gICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvc3lzdGVtZC9zYW1iYS5jb25mLnRtcCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3NhbWJhLmNvbmYKLSAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL3NhbWJhIDA3NTUgcm9vdCByb290IC0iIFwKLSAgICAgICAgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCi0gICAgaWYgWyAiJHtMU0J9IiA9ICJsc2IiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9MU0Ivc2FtYmEuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcGFja2FnaW5nL3N5c3Yvc2FtYmEuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEKLSAgICAgICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAotICAgICAgICAgICAgLWUgJ3MsL29wdC9zYW1iYS9zbWIuY29uZiwke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvbG9nLCR7bG9jYWxzdGF0ZWRpcn0vbG9nL3NhbWJhLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyL2Jpbiwke2Jhc2VfYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEKLSAgICBmaQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zYW1iYQotICAgIGVjaG8gIjEyNy4wLjAuMSBsb2NhbGhvc3QiID4gJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvbG1ob3N0cwotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL0xTQi9zbWIuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZgotICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NhbWJhICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NhbWJhCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhCi0KLSAgICAjIGluc3RhbGwgY3RkYiBjb25maWcgZmlsZSBhbmQgdGVzdCBjYXNlcwotICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2N0ZGIvdGVzdHMvb25ub2RlL25vZGVzICR7RH0ke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMKLSAgICAjIHRoZSBpdGVtcyBhcmUgZnJvbSBjdGRiL3Rlc3RzL3J1bl90ZXN0cy5zaAotICAgIGZvciBkIGluIG9ubm9kZSB0YWtlb3ZlciB0b29sIGV2ZW50c2NyaXB0cyBjdW5pdCBzaW1wbGUgY29tcGxleDsgZG8KLSAgICAgICAgdGVzdGRpcj0ke0R9JHtkYXRhZGlyfS9jdGRiLXRlc3RzLyRkCi0gICAgICAgIGluc3RhbGwgLWQgJHRlc3RkaXIKLSAgICAgICAgY3AgJHtTfS9jdGRiL3Rlc3RzLyRkLyouc2ggJHRlc3RkaXIKLSAgICAgICAgY3AgLXIgJHtTfS9jdGRiL3Rlc3RzLyRkL3NjcmlwdHMgJHtTfS9jdGRiL3Rlc3RzLyRkL3N0dWJzICR0ZXN0ZGlyIHx8IHRydWUKLSAgICBkb25lCi0KLSAgICAjIGZpeCBmaWxlLXJkZXBzIHFhIHdhcm5pbmcKLSAgICBpZiBbIC1mICR7RH0ke2JpbmRpcn0vb25ub2RlIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICdzOlwoIyEvYmluL1wpYmFzaDpcMXNoOicgJHtEfSR7YmluZGlyfS9vbm5vZGUKLSAgICBmaQotCi0gICAgY2htb2QgMDc1MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzLmQKLSAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZwotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uICR7UE59LXBpZGwgXAotICAgICAgICAgICAgICR7UE59LWRzZGItbW9kdWxlcyAke1BOfS10ZXN0c3VpdGUgcmVnaXN0cnktdG9vbHMgXAotICAgICAgICAgICAgIHdpbmJpbmQgXAotICAgICAgICAgICAgICR7UE59LWNvbW1vbiAke1BOfS1iYXNlICR7UE59LWN0ZGItdGVzdHMgXAotICAgICAgICAgICAgIHNtYmNsaWVudCIKLQotcHl0aG9uIHNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzKCkgewotICAgIGRlZiBtb2R1bGVfaG9vayhmaWxlLCBwa2csIHBhdHRlcm4sIGZvcm1hdCwgYmFzZW5hbWUpOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18lcy1iYXNlJyAlIHBuLCAnICVzJyAlIHBrZykKLQotICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJywgVHJ1ZSkgb3IgJycKLSAgICBwYW1fbGliZGlyID0gZC5leHBhbmQoJyR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JykKLSAgICBwYW1fcGtnbmFtZSA9IG1scHJlZml4ICsgJ3BhbS1wbHVnaW4lcycKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwYW1fbGliZGlyLCAnXnBhbV8oLiopXC5zbyQnLCBwYW1fcGtnbmFtZSwgJ1BBTSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQotCi0gICAgbGliZGlyID0gZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4uKiQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSwgYWxsb3dfbGlua3M9VHJ1ZSkKLSAgICBwa2dsaWJkaXIgPSAnJXMvc2FtYmEnICUgbGliZGlyCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGtnbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlKQotICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9hdXRoJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtYXV0aC0lcycsICdTYW1iYSAlcyBhdXRoZW50aWNhdGlvbiBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQotICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9wZGInICUgbGliZGlyCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1wZGItJXMnLCAnU2FtYmEgJXMgcGFzc3dvcmQgYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLX0KLQotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcyAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlIgotCi1GSUxFU18ke1BOfS1iYXNlID0gIiR7c2JpbmRpcn0vbm1iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vc21iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ubWIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc21iLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LWN0ZGItdGVzdHMgPSAiJHtiaW5kaXJ9L2N0ZGJfcnVuX3Rlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2N0ZGJfcnVuX2NsdXN0ZXJfdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGItdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKLSIKLQotRklMRVNfJHtQTn0tZHNkYi1tb2R1bGVzID0gIiR7bGliZGlyfS9zYW1iYS9sZGIiCi0KLUZJTEVTXyR7UE59LXRlc3RzdWl0ZSA9ICIke2JpbmRpcn0vZ2VudGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2t0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbWFza3Rlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZHJkdW1wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idG9ydHVyZSIKLQotRklMRVNfcmVnaXN0cnktdG9vbHMgPSAiJHtiaW5kaXJ9L3JlZ2RpZmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3BhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdzaGVsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVndHJlZSIKLQotRklMRVNfd2luYmluZCA9ICIke3NiaW5kaXJ9L3dpbmJpbmRkIFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3diaW5mbyBcCi0gICAgICAgICAgICAgICAgICR7YmluZGlyfS9udGxtX2F1dGggXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvaWRtYXAgXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvbnNzX2luZm8gXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vd2luYmluZF9rcmI1X2xvY2F0b3Iuc28gXAotICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93aW5iaW5kIFwKLSAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93aW5iaW5kLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotRklMRVNfc21iY2xpZW50ID0gIiR7YmluZGlyfS9jaWZzZGQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycGNjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjYWNscyBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNxdW90YXMgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJnZXQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJzcG9vbCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRhciBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRyZWUgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9zbWJzcG9vbF9rcmI1X3dyYXBwZXIiCi0KLVJERVBFTkRTXyR7UE59LXBpZGxfYXBwZW5kID0gIiBwZXJsIgotRklMRVNfJHtQTn0tcGlkbCA9ICIke2JpbmRpcn0vcGlkbCAke2RhdGFkaXJ9L3Blcmw1L1BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjIyN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjcuYmIKQEAgLTAsMCArMSwyNTYgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LnNhbWJhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJHUEwtMy4wKyAmIExHUEwtMy4wKyAmIEdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTEdQTC0zLjA7bWQ1PWJmY2NmZTk1MjI2OWZmZjJiNDA3ZGQxMWYyZjMwODNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2ICIKKworU0FNQkFfTUlSUk9SID0gImh0dHA6Ly9zYW1iYS5vcmcvc2FtYmEvZnRwIgorTUlSUk9SUyArPSAiXAorJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly9taXJyb3IuaW50ZXJub2RlLm9uLm5ldC9wdWIvc2FtYmEgXG4gXAorJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvZnRwLnNhbWJhLm9yZyBcbiBcCisiCisKK1NSQ19VUkkgPSAiJHtTQU1CQV9NSVJST1J9L3N0YWJsZS9zYW1iYS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMTYtZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzIwLWRvLW5vdC1pbXBvcnQtdGFyZ2V0LW1vZHVsZS13aGlsZS1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzIxLWFkZC1jb25maWctb3B0aW9uLXdpdGhvdXQtdmFsZ3JpbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYXZvaWQtdXNpbmctY29sb24taW4tdGhlLWNoZWNraW5nLW1zZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3NhbWJhIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3NhbWJhLTQuMi43LXBhbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzZlZTVjNzY2MDE2ZDU5OTA4YzhmYjY3MmZiYmQ0NDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVmMjQzOTNkZTA4MzkwZjIzNmNhYmNjZDZhNDIwYjVjZWEzMDRlOTU5Y2JmMWE5OWZmMzE3MzI1ZGIzZGRmYSIKKworaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAorIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCitSREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKKworREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGtyYjUgbGliYnNkIGxpYmFpbyBsaWJwYW0iCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgorQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCisKK0xTQiA9ICIiCitMU0JfbGludXhzdGRiYXNlID0gImxzYiIKKworSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2Ugd2luYmluZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB6ZXJvY29uZicsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgYWNsIGN1cHMgbGRhcCBcCisiCisKK1JERVBFTkRTXyR7UE59LWJhc2UgKz0gIiR7TFNCfSIKK1JERVBFTkRTXyR7UE59LWN0ZGItdGVzdHMgKz0gImJhc2ggdXRpbC1saW51eC1nZXRvcHQiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLXN1cHBvcnQsLS13aXRob3V0LWFjbC1zdXBwb3J0LGFjbCIKK1BBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCitQQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsY3VwcyIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIiwsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbZG1hcGldID0gIi0td2l0aC1kbWFwaSwtLXdpdGhvdXQtZG1hcGksZG1hcGkiCitQQUNLQUdFQ09ORklHW3plcm9jb25mXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICIsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kLCIKK1BBQ0tBR0VDT05GSUdbbHR0bmddID0gIi0td2l0aC1sdHRuZywgLS13aXRob3V0LWx0dG5nLGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgorCisKK1NBTUJBNF9JRE1BUF9NT0RVTEVTPSJpZG1hcF9hZCxpZG1hcF9yaWQsaWRtYXBfYWRleCxpZG1hcF9oYXNoLGlkbWFwX3RkYjIiCitTQU1CQTRfUERCX01PRFVMRVM9InBkYl90ZGJzYW0sJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGRhcCcsICdwZGJfbGRhcCwnLCAnJywgZCl9cGRiX2FkcyxwZGJfc21icGFzc3dkLHBkYl93YmNfc2FtLHBkYl9zYW1iYTQiCitTQU1CQTRfQVVUSF9NT0RVTEVTPSJhdXRoX3VuaXgsYXV0aF93YmMsYXV0aF9zZXJ2ZXIsYXV0aF9uZXRsb2dvbmQsYXV0aF9zY3JpcHQsYXV0aF9zYW1iYTQiCitTQU1CQTRfTU9EVUxFUz0iJHtTQU1CQTRfSURNQVBfTU9EVUxFU30sJHtTQU1CQTRfUERCX01PRFVMRVN9LCR7U0FNQkE0X0FVVEhfTU9EVUxFU30iCisKK1NBTUJBNF9MSUJTPSJoZWltZGFsLCF6bGliLCFwb3B0LCF0YWxsb2MsIXB5dGFsbG9jLCFweXRhbGxvYy11dGlsLCF0ZXZlbnQsIXB5dGV2ZW50LCF0ZGIsIXB5dGRiLCFsZGIsIXB5bGRiIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ251dGxzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtc2hhcmVkLW1vZHVsZXM9JHtTQU1CQTRfTU9EVUxFU30gXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPSR7U0FNQkE0X0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS1taXRrcmI1IFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWFkLWRjIFwKKyAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgICAgICAgIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBwYWNrYWdpbmcvc3lzdGVtZC8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAorICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCisgICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvc3lzdGVtZC9zYW1iYS5jb25mLnRtcCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3NhbWJhLmNvbmYKKyAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL3NhbWJhIDA3NTUgcm9vdCByb290IC0iIFwKKyAgICAgICAgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCisgICAgaWYgWyAiJHtMU0J9IiA9ICJsc2IiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9MU0Ivc2FtYmEuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgZWxzZQorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcGFja2FnaW5nL3N5c3Yvc2FtYmEuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEKKyAgICAgICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsL29wdC9zYW1iYS9zbWIuY29uZiwke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvbG9nLCR7bG9jYWxzdGF0ZWRpcn0vbG9nL3NhbWJhLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2Jpbiwke2Jhc2VfYmluZGlyfSxnJyBcCisgICAgICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zYW1iYQorICAgIGVjaG8gIjEyNy4wLjAuMSBsb2NhbGhvc3QiID4gJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvbG1ob3N0cworICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL0xTQi9zbWIuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZgorICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NhbWJhICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NhbWJhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhCisKKyAgICAjIGluc3RhbGwgY3RkYiBjb25maWcgZmlsZSBhbmQgdGVzdCBjYXNlcworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2N0ZGIvdGVzdHMvb25ub2RlL25vZGVzICR7RH0ke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMKKyAgICAjIHRoZSBpdGVtcyBhcmUgZnJvbSBjdGRiL3Rlc3RzL3J1bl90ZXN0cy5zaAorICAgIGZvciBkIGluIG9ubm9kZSB0YWtlb3ZlciB0b29sIGV2ZW50c2NyaXB0cyBjdW5pdCBzaW1wbGUgY29tcGxleDsgZG8KKyAgICAgICAgdGVzdGRpcj0ke0R9JHtkYXRhZGlyfS9jdGRiLXRlc3RzLyRkCisgICAgICAgIGluc3RhbGwgLWQgJHRlc3RkaXIKKyAgICAgICAgY3AgJHtTfS9jdGRiL3Rlc3RzLyRkLyouc2ggJHRlc3RkaXIKKyAgICAgICAgY3AgLXIgJHtTfS9jdGRiL3Rlc3RzLyRkL3NjcmlwdHMgJHtTfS9jdGRiL3Rlc3RzLyRkL3N0dWJzICR0ZXN0ZGlyIHx8IHRydWUKKyAgICBkb25lCisKKyAgICAjIGZpeCBmaWxlLXJkZXBzIHFhIHdhcm5pbmcKKyAgICBpZiBbIC1mICR7RH0ke2JpbmRpcn0vb25ub2RlIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICdzOlwoIyEvYmluL1wpYmFzaDpcMXNoOicgJHtEfSR7YmluZGlyfS9vbm5vZGUKKyAgICBmaQorCisgICAgY2htb2QgMDc1MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzLmQKKyAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uICR7UE59LXBpZGwgXAorICAgICAgICAgICAgICR7UE59LWRzZGItbW9kdWxlcyAke1BOfS10ZXN0c3VpdGUgcmVnaXN0cnktdG9vbHMgXAorICAgICAgICAgICAgIHdpbmJpbmQgXAorICAgICAgICAgICAgICR7UE59LWNvbW1vbiAke1BOfS1iYXNlICR7UE59LWN0ZGItdGVzdHMgXAorICAgICAgICAgICAgIHNtYmNsaWVudCIKKworcHl0aG9uIHNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzKCkgeworICAgIGRlZiBtb2R1bGVfaG9vayhmaWxlLCBwa2csIHBhdHRlcm4sIGZvcm1hdCwgYmFzZW5hbWUpOgorICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18lcy1iYXNlJyAlIHBuLCAnICVzJyAlIHBrZykKKworICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJywgVHJ1ZSkgb3IgJycKKyAgICBwYW1fbGliZGlyID0gZC5leHBhbmQoJyR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JykKKyAgICBwYW1fcGtnbmFtZSA9IG1scHJlZml4ICsgJ3BhbS1wbHVnaW4lcycKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwYW1fbGliZGlyLCAnXnBhbV8oLiopXC5zbyQnLCBwYW1fcGtnbmFtZSwgJ1BBTSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorCisgICAgbGliZGlyID0gZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4uKiQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSwgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICBwa2dsaWJkaXIgPSAnJXMvc2FtYmEnICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGtnbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlKQorICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9hdXRoJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtYXV0aC0lcycsICdTYW1iYSAlcyBhdXRoZW50aWNhdGlvbiBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9wZGInICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1wZGItJXMnLCAnU2FtYmEgJXMgcGFzc3dvcmQgYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKK30KKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcyAiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbiAke1BOfS1kc2RiLW1vZHVsZXMiCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gInB5dGFsbG9jIHB5dGhvbi10ZGIiCisKK0ZJTEVTXyR7UE59LWJhc2UgPSAiJHtzYmluZGlyfS9ubWJkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9zbWJkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAorICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9zYW1iYSBcCisgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbm1iZCBcCisgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L25tYi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zbWIuc2VydmljZSIKKworRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke0JQTn0tY29tbW9uID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3Zmcy8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vY2hhcnNldC8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5kYXQgXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9hdXRoLyouc28gXAorIgorCitGSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKKworRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgorCitGSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgorCitGSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKKyAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCisgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3dpbmJpbmQgXAorICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dpbmJpbmQuc2VydmljZSIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKKworUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCitGSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlY2MwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2ZpeC1ob3N0LWNvbnRhbWluYXRpb24td2hlbi1lbmFibGUtc3RhdGljLWRhcS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitXaGVuIGVuYWJsZSBzdGF0aWMgZGFxIGZvciBzbm9ydCwgaXQgY2FsbHMgdG8gZGFxLW1vZHVsZXMtY29uZmlnIHRvIGdldCBsaW5rCitsaWJyYXJ5IGFuZCBsaWJyYXJ5IHBhdGguIExpYnJhcnkgcGF0aCBpcyB1c2VsZXNzIGZvciBvZSBhbmQgY2F1c2UgaG9zdAorY29udGFtaW5hdGlvbiBpc3N1ZS4gU28gZmlsdGVyIGl0LgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZmRlZDQ1Yi4uYTI0N2JiOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNjU4LDcgKzY1OCw3IEBAIGZpCisgCisgaWYgdGVzdCAieCRlbmFibGVfc3RhdGljX2RhcSIgPSAieHllcyI7IHRoZW4KKyAgICAgTERBUT0iIgorLSAgICBMSUJTPSIke0xJQlN9IGBkYXEtbW9kdWxlcy1jb25maWcgLS1zdGF0aWMgLS1saWJzYCIKKysgICAgTElCUz0iJHtMSUJTfSBgZGFxLW1vZHVsZXMtY29uZmlnIC0tc3RhdGljIC0tbGlicyB8IHNlZCAncyMtTFteIF0qIyNnJ2AiCisgICAgIEFDX0NIRUNLX0xJQihbZGFxX3N0YXRpY10sIFtkYXFfbG9hZF9tb2R1bGVzXSwKKyAgICAgICAgIFtMSUJTPSItbGRhcV9zdGF0aWMgJHtMSUJTfSJdLCBbTERBUT0ibm8iXSwgWyBdKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjcuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0XzIuOS43LjUuYmIKaW5kZXggZGZkNmJhOS4uMjAzNGI4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjcuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydF8yLjkuNy41LmJiCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzhmYThlZjk2NmI0OGZiZjkwOTVlMTNjYzkyMzc3YzUiCiAKLURFUEVORFMgPSAieHogbGlicGNhcCBsaWJwY3JlIGRhcSBsaWJkbmV0IHV0aWwtbGludXgiCitERVBFTkRTID0gInh6IGxpYnBjYXAgbGlicGNyZSBkYXEgbGliZG5ldCB1dGlsLWxpbnV4IGRhcS1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgogCiBTUkNfVVJJID0gIiAke0dFTlRPT19NSVJST1J9LyR7QlB9LnRhci5nejtuYW1lPXRhcmJhbGwgXApAQCAtMTUsNiArMTUsNyBAQAogICAgIGZpbGU6Ly9kaXNhYmxlLWRhcS12ZXJkaWN0LXJldHJ5LnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMS1saWJwY2FwLXNlYXJjaC1zeXNyb290LWZvci1oZWFkZXJzLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMS1maXgtZG9fcGFja2FnZS1mYWlsZWQtc2luY2Utc25vcnQtMi45LjcuMC5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1ob3N0LWNvbnRhbWluYXRpb24td2hlbi1lbmFibGUtc3RhdGljLWRhcS5wYXRjaCBcCiAiCiAKIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImZkMjcxNzg4YzBmODg3NmJlODdhODU4YTkxNDJmMjAyIgpAQCAtMzEsNyArMzIsNyBAQAogICAgIC0tZW5hYmxlLXJlbG9hZCBcCiAgICAgLS1lbmFibGUtcmVsb2FkLWVycm9yLXJlc3RhcnQgXAogICAgIC0tZW5hYmxlLXRhcmdldGJhc2VkIFwKLSAgICAtLWRpc2FibGUtc3RhdGljLWRhcSBcCisgICAgLS1lbmFibGUtc3RhdGljLWRhcSBcCiAgICAgLS13aXRoLWRuZXQtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgIC0td2l0aC1kbmV0LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgLS13aXRoLWxpYnBjcmUtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZsYW4vdmxhbl8xLjkuYmIKaW5kZXggM2Y2ODhiMy4uYmQ1NWVmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92bGFuL3ZsYW5fMS45LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJWTEFOIHByb3ZpZGVzIHZjb25maWcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuY2FuZGVsYXRlY2guY29tL35ncmVlYXIvdmxhbi5odG1sIgogU0VDVElPTiA9ICJtaXNjIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Zjb25maWcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT0wOTRjYTQ3ZGUzNmMyMGM1OThiMTViMzJjMjcwY2UwYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuYy8wMDA5LXJlZHVjZS1saWZldGltZS12YWx1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuYy8wMDA5LXJlZHVjZS1saWZldGltZS12YWx1ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmVkNTUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jLzAwMDktcmVkdWNlLWxpZmV0aW1lLXZhbHVlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMzk5MjVmMDkwYzIxYWI1NzFlYmM2ZWMyNTA2OTZmN2Y3MDkzYTJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdpbGwgUGFnZSA8V2lsbC5QYWdlQG5pLmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTg6MTQ6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIFJlZHVjZSBsaWZldGltZSB2YWx1ZSB0byB3aWRlbHktY29tcGF0aWJsZSB2YWx1ZQorCitDdXJyZW50IHByb3Bvc2VkIGxpZmV0aW1lIHZhbHVlICgyMTQ3NDgzIHNlY29uZHMsIHdoaWNoIGVxdWF0ZXMgdG8KK01BWElOVCBtcywgb3IgfjI1IGRheXMpIGlzIHJlamVjdGVkIGJ5IEZvcnRpZ2F0ZSB2cG4gZGV2aWNlcyBiZWNhdXNlCisicGVlciBTQSBwcm9wb3NhbCBkb2VzIG5vdCBtYXRjaCBsb2NhbCBwb2xpY3kiLiAgSXQgc2VlbXMgZGVmYXVsdAorcG9saWN5IGZvciB0aGVzZSBkZXZpY2VzIGNvbnN0cmFpbnMgbGlmZXRpbWUgd2hlcmUgc2ltaWxhciBWUE4gZGV2aWNlcworZG9uJ3QuCisKK1JlZHVjaW5nIHRoZSBsaWZldGltZSBmcm9tIGl0cyBjdXJyZW50IHZhbHVlIHRvIDI4ODAwIChleGFjdGx5IDggaG91cnMpCitjYXVzZXMgaXQgdG8gc3RhcnQgd29ya2luZyB3aXRoIGZvcnRpZ2F0ZSBkZXZpY2VzLgorLS0tCisgdnBuYy5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3ZwbmMuYyBiL3ZwbmMuYworaW5kZXggMzZkZDBmMy4uM2UwZmNiYSAxMDA2NDQKKy0tLSBhL3ZwbmMuYworKysrIGIvdnBuYy5jCitAQCAtMTEzNSw3ICsxMTM1LDcgQEAgc3RhdGljIHN0cnVjdCBpc2FrbXBfYXR0cmlidXRlICptYWtlX3RyYW5zZm9ybV9pa2UoaW50IGRoX2dyb3VwLCBpbnQgY3J5cHQsIGludAorIAlhLT5hZiA9IGlzYWttcF9hdHRyX2xvdHM7CisgCWEtPnUubG90cy5sZW5ndGggPSA0OworIAlhLT51LmxvdHMuZGF0YSA9IHhhbGxvY2MoYS0+dS5sb3RzLmxlbmd0aCk7CistCSooKHVpbnQzMl90ICopIGEtPnUubG90cy5kYXRhKSA9IGh0b25sKDIxNDc0ODMpOworKwkqKCh1aW50MzJfdCAqKSBhLT51LmxvdHMuZGF0YSkgPSBodG9ubCgyODgwMCk7CisgCWEgPSBuZXdfaXNha21wX2F0dHJpYnV0ZV8xNihJS0VfQVRUUklCX0xJRkVfVFlQRSwgSUtFX0xJRkVfVFlQRV9TRUNPTkRTLCBhKTsKKyAJYSA9IG5ld19pc2FrbXBfYXR0cmlidXRlXzE2KElLRV9BVFRSSUJfQVVUSF9NRVRIT0QsIGF1dGgsIGEpOworIAlhID0gbmV3X2lzYWttcF9hdHRyaWJ1dGVfMTYoSUtFX0FUVFJJQl9HUk9VUF9ERVNDLCBkaF9ncm91cCwgYSk7CitAQCAtMjU2MSw3ICsyNTYxLDcgQEAgc3RhdGljIHN0cnVjdCBpc2FrbXBfYXR0cmlidXRlICptYWtlX3RyYW5zZm9ybV9pcHNlYyhzdHJ1Y3Qgc2FfYmxvY2sgKnMsIGludCBkaF8KKyAJYS0+YWYgPSBpc2FrbXBfYXR0cl9sb3RzOworIAlhLT51LmxvdHMubGVuZ3RoID0gNDsKKyAJYS0+dS5sb3RzLmRhdGEgPSB4YWxsb2NjKGEtPnUubG90cy5sZW5ndGgpOworLQkqKCh1aW50MzJfdCAqKSBhLT51LmxvdHMuZGF0YSkgPSBodG9ubCgyMTQ3NDgzKTsKKysJKigodWludDMyX3QgKikgYS0+dS5sb3RzLmRhdGEpID0gaHRvbmwoMjg4MDApOworIAlhID0gbmV3X2lzYWttcF9hdHRyaWJ1dGVfMTYoSVNBS01QX0lQU0VDX0FUVFJJQl9TQV9MSUZFX1RZUEUsIElQU0VDX0xJRkVfU0VDT05EUywgYSk7CisgCisgCWlmIChkaF9ncm91cCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jXzAuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jXzAuNS4zLmJiCmluZGV4IDZmOTJhY2QuLmVhMjE3OTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmNfMC41LjMuYmIKQEAgLTIwLDYgKzIwLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDYtc3lzZGVwLUFkZC1oZWFkZXItaW5jbHVkZS1zZXF1ZW5jZS10by1hZGp1c3QtZm9yLW11cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWFkZC1lcnJvci1BUEktd2hlbi1lcnJvci5oLWlzLW5vdC1vbi1wbGF0Zm9ybS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWluY2x1ZGUtc3lzZGVwLmgtYmVmb3JlLW5ldC1pZl90dW4uaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlZHVjZS1saWZldGltZS12YWx1ZS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUEFDS0FHRUNPTkZJRyA/PSAiZ251dGxzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC9maWxlcy8wMDAxLWZpeC1uby1ydWxlLXRvLW1ha2UtY3lhc3NsLW9wdGlvbnMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvZmlsZXMvMDAwMS1maXgtbm8tcnVsZS10by1tYWtlLWN5YXNzbC1vcHRpb25zLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMwNGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvZmlsZXMvMDAwMS1maXgtbm8tcnVsZS10by1tYWtlLWN5YXNzbC1vcHRpb25zLmgucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmYjQ5MDEzNmNmOGYyNDU2Y2ZlMTNiMGI0Zjc5NmU2YzE1NWU3NWRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMDM6MDI6MzIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG5vIHJ1bGUgdG8gbWFrZSBjeWFzc2wvb3B0aW9ucy5oCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM5NWQ3NWQuLmQ0YTM4ODAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM2ODQsNiArMzY4NCw3IEBAIEFDX0NPTkZJR19GSUxFUyhbd29sZnNzbC9vcHRpb25zLmhdKQorICNmaQorIEFDX0NPTkZJR19GSUxFUyhbc3VwcG9ydC93b2xmc3NsLnBjXSkKKyBBQ19DT05GSUdfRklMRVMoW3JwbS9zcGVjXSkKKytBQ19DT05GSUdfRklMRVMoW2N5YXNzbC9vcHRpb25zLmhdKQorIAorIEFYX0NSRUFURV9HRU5FUklDX0NPTkZJRworIEFYX0FNX0pPQlNFUlZFUihbeWVzXSkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuMTIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEyNjE5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJ3b2xmU1NMIExpZ2h0d2VpZ2h0LCBFbWJlZGRlZCBTU0wgTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIndvbGZTU0wsIGZvcm1lcmx5IEN5YVNTTCwgaXMgYSBsaWdodHdlaWdodCBTU0wgbGlicmFyeSB3cml0dGVuIGluIEMgYW5kIFwKKyAgICAgICAgICAgICAgIG9wdGltaXplZCBmb3IgZW1iZWRkZWQgYW5kIFJUT1MgZW52aXJvbm1lbnRzLiBJdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgVXAgdG8gMjAgdGltZXMgc21hbGxlciB0aGFuIE9wZW5TU0wgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBcCisgICAgICAgICAgICAgICBhIGZ1bGwgVExTIDEuMiBjbGllbnQgYW5kIHNlcnZlci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndvbGZzc2wuY29tL3lhU1NML1Byb2R1Y3RzLXdvbGZzc2wuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2dpdGh1Yi5jb20vd29sZnNzbC93b2xmc3NsL2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworUFJPVklERVMgKz0gImN5YXNzbCIKK1JQUk9WSURFU18ke1BOfSA9ICJjeWFzc2wiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC9hcmNoaXZlL3Yke1BWfS1zdGFibGUuemlwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW5vLXJ1bGUtdG8tbWFrZS1jeWFzc2wtb3B0aW9ucy5oLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmOWNhZjU1ODE2OWFiNjUwZGM4MjAwNzA4Nzk5ZWJlYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmQ4N2QzZTJjODc1NzE3N2Q2OWFmZjM3M2M5MWNmMTYyZjRhMzk0NGZhZTkwZmExMGQwODZmZDVmOTU0MmU3IgorCitTID0gIiR7V09SS0RJUn0vd29sZnNzbC0ke1BWfS1zdGFibGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhZTNjOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIndvbGZTU0wgTGlnaHR3ZWlnaHQsIEVtYmVkZGVkIFNTTCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAid29sZlNTTCwgZm9ybWVybHkgQ3lhU1NMLCBpcyBhIGxpZ2h0d2VpZ2h0IFNTTCBsaWJyYXJ5IHdyaXR0ZW4gaW4gQyBhbmQgXAotICAgICAgICAgICAgICAgb3B0aW1pemVkIGZvciBlbWJlZGRlZCBhbmQgUlRPUyBlbnZpcm9ubWVudHMuIEl0IGNhbiBiZSBcCi0gICAgICAgICAgICAgICBVcCB0byAyMCB0aW1lcyBzbWFsbGVyIHRoYW4gT3BlblNTTCB3aGlsZSBzdGlsbCBzdXBwb3J0aW5nIFwKLSAgICAgICAgICAgICAgIGEgZnVsbCBUTFMgMS4yIGNsaWVudCBhbmQgc2VydmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud29sZnNzbC5jb20veWFTU0wvUHJvZHVjdHMtd29sZnNzbC5odG1sIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vZ2l0aHViLmNvbS93b2xmc3NsL3dvbGZzc2wvaXNzdWVzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1QUk9WSURFUyArPSAiY3lhc3NsIgotUlBST1ZJREVTXyR7UE59ID0gImN5YXNzbCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LndvbGZzc2wuY29tLyR7QlB9LnppcCIKLQotU1JDX1VSSVttZDVzdW1dID0gImYzMzk2NzI2YTliZWZkNjE0NDNjMmNjZTIxNmUzOWJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4ZjUwMjQ0ZjdiNDNmODY4M2JkMGNmNWM1OTk4NDlkMzMwZTc1ZTZjZjA3N2U5NmYxNGU4M2JkYThiMDNjYTMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtbW9kdWxlcy1sb29rdXBfbXVsdGkuYy1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtbW9kdWxlcy1sb29rdXBfbXVsdGkuYy1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWMxNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMS1tb2R1bGVzLWxvb2t1cF9tdWx0aS5jLVJlcGxhY2UtX19TX0lFWEVDLXdpdGgtU19JRVhFLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gZTRlZTAwZTA4YWNkN2MwOTEyYTMyNjRhZDMyZTRkZTg2MWM3NDE2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMjI6MjI6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbW9kdWxlcy9sb29rdXBfbXVsdGkuYzogUmVwbGFjZSBfX1NfSUVYRUMgd2l0aCBTX0lFWEVDCisKK19fU19JRVhFQyBpcyBpbnRlcm5hbCB0byBsaWJjIGFuZCBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbgorYWxsIGxpYmMgZS5nLiBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtb2R1bGVzL2xvb2t1cF9tdWx0aS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9sb29rdXBfbXVsdGkuYyBiL21vZHVsZXMvbG9va3VwX211bHRpLmMKK2luZGV4IDNlY2RhNmQuLmNmMTA5ZGUgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jCisrKysgYi9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jCitAQCAtNDUyLDcgKzQ1Miw3IEBAIGludCBsb29rdXBfcmVpbml0KGNvbnN0IGNoYXIgKm15X21hcGZtdCwKKyAJCQkJCWNvbnRpbnVlOworIAkJCQl9CisgCistCQkJCWlmIChzdC5zdF9tb2RlICYgX19TX0lFWEVDKQorKwkJCQlpZiAoc3Quc3RfbW9kZSAmIFNfSUVYRUMpCisgCQkJCQl0eXBlID0gc3JjX3Byb2c7CisgCQkJCWVsc2UKKyAJCQkJCXR5cGUgPSBzcmNfZmlsZTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzXzUuMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjIuYmIKaW5kZXggZWVhN2M0Yi4uNjhjNjRmZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjIuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkdQTC0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKIAotREVQRU5EUyArPSAibGlidGlycGMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGUyZnNwcm9ncyBvcGVuc3NsIGxpYnhtbDIgdXRpbC1saW51eCBjeXJ1cy1zYXNsIgorREVQRU5EUyArPSAibGlidGlycGMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGUyZnNwcm9ncyBvcGVuc3NsIGxpYnhtbDIgdXRpbC1saW51eCBjeXJ1cy1zYXNsIGxpYm5zbDIiCiAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKIApAQCAtMjYsNiArMjYsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRUMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYXV0b2ZzLTUuMS4yLWxpYnRpcnBjLWFzLW5lZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLWxpYm5zbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjhjZjg4Zjk5ZWZmNTUzYTg1MDA2NTliYTVkNDVhNzYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ1N2U0MTM4YzJlYzgwNThjYTkyMTY0ZDAzNTU0NmY2OGNlNGFmOTNhY2I4OTMzNjk5OTNkNjdjNzA1NmExMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjYuYmIKaW5kZXggNjFiN2FkNC4uZWFhNDUzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjYuYmIKQEAgLTEsNSArMSw2IEBACiBTVU1NQVJZID0gIkdlbmVyaWMgY2xpZW50L3NlcnZlciBsaWJyYXJ5IGZvciBTQVNMIGF1dGhlbnRpY2F0aW9uIgogU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2FzZy53ZWIuY211LmVkdS9zYXNsLyIKIERFUEVORFMgPSAib3BlbnNzbCB2aXJ0dWFsL2RiIgogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zZjU1ZTA5NzRlM2Q2ZGIwMGNhNmY1N2YyZDIwNjM5NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9kbnJkL2RucmRfMi4yMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2RucmQvZG5yZF8yLjIwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYTI5ZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2RucmQvZG5yZF8yLjIwLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkEgY2FjaGluZywgZm9yd2FyZGluZyBETlMgcHJveHkgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiXAotZG5yZCBpcyBhIHByb3h5aW5nIG5hbWVzZXJ2ZXIuIEl0IGZvcndhcmRzIEROUyBxdWVyaWVzIHRvIHRoZSBhcHByb3ByaWF0ZSBcCi1uYW1lc2VydmVyLCBidXQgY2FuIGFsc28gYWN0IGFzIHRoZSBwcmltYXJ5IG5hbWVzZXJ2ZXIgZm9yIGEgc3VibmV0IGJlaGluZCBcCi1hIGZpcmV3YWxsLiBJdCBhbHNvIGhhcyBmZWF0dXJlcyBzdWNoIGFzIGNhY2hpbmcgRE5TIHJlcXVlc3RzLCBzdXBwb3J0IGZvciBcCi1ETlMgc2VydmVycywgY2FjaGUgcG9pc29uaW5nIHByZXZlbnRpb24sIFRDUCBzdXBwb3J0LCBldGMuLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kbnJkLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYmU2NzAxN2YxYzc3MDMxM2FkN2I0MGUxOGQ1NjhmMSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kbnJkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vZG5yZC5jb25mLnNhbXBsZSBcCi0gICAgICAgICAgIGZpbGU6Ly9kbnJkLmluaXQiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDFjOWIwNzBhYWU4ZWQ0MDNmYzhjMmFhYzdhYjE1N2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE0NmU3Zjg3MzZiODhjMWQ3NTJjZjYwNmIzOTkwMDQxMjIxY2U5MWQwMTRlOTU1YzZiMDJlYjIxNjdkYjAxNSIKLQotUE5CTEFDS0xJU1RbZG5yZF0gPz0gIkJST0tFTjogZG5yZC0yLjIwLjMtcjAgZG9fcGFja2FnZTogUUEgSXNzdWU6IGRucmQ6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3Qgc2hpcHBlZCBpbiBhbnkgcGFja2FnZTogLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbnJkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi1pbmhlcml0ICR7QGJiLnV0aWxzLmZpbHRlcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicsICdzeXN0ZW1kJywgZCl9Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBJTlNUQUxMPSJpbnN0YWxsIC1wIgotCi0gICAgc2VkIC1pIC1lICdzOi9ldGMvcmMuZC9pbml0LmQvZnVuY3Rpb25zOi9ldGMvaW5pdC5kL2Z1bmN0aW9uczpnJyBcCi0gICAgICAgICR7V09SS0RJUn0vZG5yZC5pbml0Ci0gICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtzeXNjb25mZGlyfS9kbnJkCi0gICAgaW5zdGFsbCAtcCAtbSAwNjQ0ICR7V09SS0RJUn0vZG5yZC5jb25mLnNhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9kbnJkL2RucmQuY29uZgotICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1dPUktESVJ9L2RucmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZG5yZAotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9kbnJkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHkvMDAwMS1zcmMtaWdtcHByb3h5LmgtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9zaG9ydC11X2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHkvMDAwMS1zcmMtaWdtcHByb3h5LmgtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9zaG9ydC11X2luLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyY2RjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eS8wMDAxLXNyYy1pZ21wcHJveHkuaC1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X3Nob3J0LXVfaW4ucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBhNTU3NjUxYTA4ZTIxZTNjN2M3ZjVlY2E5ZjU0MDVmODY2MjQ5MDNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMjI6NDI6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2lnbXBwcm94eS5oOiBJbmNsdWRlIHN5cy90eXBlcy5oIGZvciB1X3Nob3J0L3VfaW5pdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2lnbXBwcm94eS5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaWdtcHByb3h5LmggYi9zcmMvaWdtcHByb3h5LmgKK2luZGV4IDRkYWJkMWMuLjQ0NTQ3MjkgMTAwNjQ0CistLS0gYS9zcmMvaWdtcHByb3h5LmgKKysrKyBiL3NyYy9pZ21wcHJveHkuaAorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorIAorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvdW4uaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eV8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eV8wLjEuYmIKaW5kZXggYzNkMmYxYS4uNTQyNGRjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHlfMC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMS5iYgpAQCAtNSw5ICs1LDEyIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTk5NWUyNzk5YmIwZDI3ZDYzMDY5Yjk3ZjgwNTQyMCIKIAogU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2lnbXBwcm94eS9maWxlcy8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtaWdtcHByb3h5LmgtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9zaG9ydC11X2luLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYzU2ZjQxZWMxOTViYzFmZTAxNjM2OWJmNzRlZmM1YTEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUxOGZmM2Q4YzNhZTNhMjlkY2NiN2U1ZWVkZjMzMjMzNzMzMDAyMDE2OGJkOTVhMTFjZWNlOGQ3ZDdlZTZhZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtUmVzcGVjdC1mbGFncy1mcm9tLWVudi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtUmVzcGVjdC1mbGFncy1mcm9tLWVudi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTY3NjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMS1SZXNwZWN0LWZsYWdzLWZyb20tZW52LnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gNDg0OGI5ZTRkNTE2YTkyMDNjMDg0MzI5MDFhN2I0MDQxOWU4ZjQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEp1bCAyMDE3IDE1OjU0OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZXNwZWN0IGZsYWdzIGZyb20gZW52CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSAgICAgIHwgNCArKy0tCisgY2xpL01ha2VmaWxlICB8IDIgKy0KKyBwcHBkL01ha2VmaWxlIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYTA1YTAwMC4uNDM5YTk3OCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTgxLDggKzgxLDggQEAgTElCUy5kbWFsbG9jPQkJLWxkbWFsbG9jCisgZXhwb3J0IFVTRV9ETUFMTE9DCisgZW5kaWYKKyAKKy1DUFBGTEFHUz0JCSQoQ1BQRkxBR1MuaXBwb29sdGVzdCkKKy1DRkxBR1M9CQkJLUkuIC1JdXNsIC1JY2xpIC1NTUQgLVdhbGwgLWcgJChDUFBGTEFHUykgJChDUFBGTEFHUy5kbWFsbG9jKQorK0NQUEZMQUdTKz0JCSQoQ1BQRkxBR1MuaXBwb29sdGVzdCkKKytDRkxBR1MrPQkJCS1JLiAtSXVzbCAtSWNsaSAtTU1EIC1XYWxsIC1nICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1MuZG1hbGxvYykKKyBMREZMQUdTLmlwcG9vbGQ9CSQoTERGTEFHUykgLVdsLC1FIC1MLiAtTHVzbCAtbHVzbCAtbG5zbCAtbGRsICQoTElCUy5kbWFsbG9jKSAtbGMKKyBMREZMQUdTLmlwcG9vbGNvbmZpZz0JJChMREZMQUdTKSAtTGNsaSAtbGNsaSAtbHJlYWRsaW5lIC1sY3Vyc2VzIC1sbnNsICQoTElCUy5kbWFsbG9jKSAtbGMKKyAKK2RpZmYgLS1naXQgYS9jbGkvTWFrZWZpbGUgYi9jbGkvTWFrZWZpbGUKK2luZGV4IDRiNWRkNTkuLjU2ZmJmMmYgMTAwNjQ0CistLS0gYS9jbGkvTWFrZWZpbGUKKysrKyBiL2NsaS9NYWtlZmlsZQorQEAgLTcsNyArNyw3IEBAIENMSV9TUkNTX1RFU1Qubz0JJChDTElfU1JDU19URVNULmM6JS5jPSUubykKKyAKKyBMREZMQUdTLmNsaV90ZXN0PQktTC4uIC1MLiAkKFJFQURMSU5FX0xERkxBR1MpIC1sY2xpIC1sdXNsIC1scmVhZGxpbmUgLWxjdXJzZXMgLWxjCisgCistQ0ZMQUdTPQkJCSQoQ0ZMQUdTLm9wdGltaXplKSAtTU1EIC1XYWxsIC1XZXJyb3IgLUkuLiAkKFJFQURMSU5FX0NGTEFHUykKKytDRkxBR1M9CQkJJChDRkxBR1Mub3B0aW1pemUpIC1NTUQgLVdhbGwgLVdlcnJvciAtSS4uICQoUkVBRExJTkVfQ0ZMQUdTKSAkKENQUEZMQUdTKQorIAorIC5QSE9OWToJCQlhbGwgdGVzdCBjbGVhbgorIAorZGlmZiAtLWdpdCBhL3BwcGQvTWFrZWZpbGUgYi9wcHBkL01ha2VmaWxlCitpbmRleCAxMDZkZWNhLi43ZmQ4MTVmIDEwMDY0NAorLS0tIGEvcHBwZC9NYWtlZmlsZQorKysrIGIvcHBwZC9NYWtlZmlsZQorQEAgLTEwLDcgKzEwLDcgQEAgZW5kaWYKKyAKKyAjIEVORCBDT05GSUdVUkFCTEUgU0VUVElOR1MKKyAKKy1DRkxBR1MJKz0gLWcgLUkuLiAtSS91c3IvaW5jbHVkZS9wcHBkICQoQ0ZMQUdTLnBwcGQpIC1mUElDCisrQ0ZMQUdTCSs9IC1nIC1JLi4gLUk9L3Vzci9pbmNsdWRlL3BwcGQgJChDRkxBR1MucHBwZCkgLWZQSUMKKyBMREZMQUdTCSs9IC1zaGFyZWQKKyAKKyBhbGw6CWlwcG9vbC5zbworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMS1yZWFkLXJldHVybnMtc3NpemVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtcmVhZC1yZXR1cm5zLXNzaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QzZjlhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtcmVhZC1yZXR1cm5zLXNzaXplX3QucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBlNGUwYWFlMTM5YjY0ODlkYzU4MmZkMTRlNTRlNTYyMTI2NDgyY2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMDc6MjM6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIHJlYWQoKSByZXR1cm5zIHNzaXplX3QKKworRml4ZXMKK3VzbF9mZC5jOjI4NDoxMDogZXJyb3I6IGNvbXBhcmlzb24gb2YgdW5zaWduZWQgZXhwcmVzc2lvbiA8IDAgaXMgYWx3YXlzIGZhbHNlIFstV2Vycm9yLC1XdGF1dG9sb2dpY2FsLWNvbXBhcmVdCisgICAgICAgICAgICAgICAgaWYgKG5iIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB+fiBeIH4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHVzbC91c2xfZmQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VzbC91c2xfZmQuYyBiL3VzbC91c2xfZmQuYworaW5kZXggM2I3YTgxMy4uMDRiYTQ4YyAxMDA2NDQKKy0tLSBhL3VzbC91c2xfZmQuYworKysrIGIvdXNsL3VzbF9mZC5jCitAQCAtMjgwLDcgKzI4MCw3IEBAIHNpemVfdCB1c2xfZmRfcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQorIAljaGFyICpwdHIgPSBidWY7CisgCisgCWZvciAoY2hhcnNfcmVhZCA9IDA7IGNoYXJzX3JlYWQgPCBjb3VudDsgKSB7CistCQlzaXplX3QgbmIgPSByZWFkKGZkLCBwdHIsIGNvdW50IC0gY2hhcnNfcmVhZCk7CisrCQlzc2l6ZV90IG5iID0gcmVhZChmZCwgcHRyLCBjb3VudCAtIGNoYXJzX3JlYWQpOworIAkJaWYgKG5iIDwgMCkgeworIAkJCWlmIChlcnJubyA9PSBFSU5UUikKKyAJCQkJY29udGludWU7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLXVzbF90aW1lci1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLXdyaXRlLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtdXNsX3RpbWVyLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYjdjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLXVzbF90aW1lci1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLXdyaXRlLUFQSS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDVkN2YyMGMwNDViM2M3NGRhZDJjNTNkNjVlMzBiZDQ4NDAyNTAwODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNyBKdW4gMjAxNyAxNToxNzoxOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1c2xfdGltZXI6IENoZWNrIGZvciByZXR1cm4gdmFsdWUgb2Ygd3JpdGUoKSBBUEkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHVzbC91c2xfdGltZXIuYyB8IDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VzbC91c2xfdGltZXIuYyBiL3VzbC91c2xfdGltZXIuYworaW5kZXggZmRhNzUyYi4uZDg0MTRhNiAxMDA2NDQKKy0tLSBhL3VzbC91c2xfdGltZXIuYworKysrIGIvdXNsL3VzbF90aW1lci5jCitAQCAtOTQsNyArOTQsOSBAQCB2b2lkIHVzbF90aW1lcl90aWNrKHZvaWQpCisgCisgCWlmICghdXNsX3RpY2tfcGVuZGluZykgeworIAkJdXNsX3RpY2tfcGVuZGluZyA9IDE7CistCQl3cml0ZSh1c2xfdGlja19waXBlWzFdLCAmbXNnLCBzaXplb2YobXNnKSk7CisrCQlpZiAod3JpdGUodXNsX3RpY2tfcGlwZVsxXSwgJm1zZywgc2l6ZW9mKG1zZykpICE9IHNpemVvZihtc2cpKSB7CisrCQkJZnByaW50ZihzdGRlcnIsICJ3cml0ZSB0byBmZCAlaSBmYWlsZWQ6ICVzXG4iLCB1c2xfdGlja19waXBlWzFdLCBzdHJlcnJvcihlcnJubykpOworKwkJfQorIAl9CisgfQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMi1NYXJrLWZpcnN0LWVsZW1lbnQtb2YtYS1zdHJpbmctYXMtbnVsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItTWFyay1maXJzdC1lbGVtZW50LW9mLWEtc3RyaW5nLWFzLW51bGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUyYmQ1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItTWFyay1maXJzdC1lbGVtZW50LW9mLWEtc3RyaW5nLWFzLW51bGwucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBjZjI1NTc2NDI4OTAzMTY4Y2Q0MWIxODNmYjFjYTljMmI3ZTI2NjZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMDc6Mjg6MTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIE1hcmsgZmlyc3QgZWxlbWVudCBvZiBhIHN0cmluZyBhcyBudWxsCisKK0ZpeGVzCitjbGlfbGliLmM6NDI3OjIwOiBlcnJvcjogZXhwcmVzc2lvbiB3aGljaCBldmFsdWF0ZXMgdG8gemVybyB0cmVhdGVkIGFzIGEgbnVsbCBwb2ludGVyIGNvbnN0YW50IG9mIHR5cGUgJ2NoYXIgKicgWy1XZXJyb3IsLVdub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb25dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2FyZ10gPSAnXDAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY2xpL2NsaV9saWIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NsaS9jbGlfbGliLmMgYi9jbGkvY2xpX2xpYi5jCitpbmRleCA0MWEwYjA2Li5lNGQyZmQ1IDEwMDY0NAorLS0tIGEvY2xpL2NsaV9saWIuYworKysrIGIvY2xpL2NsaV9saWIuYworQEAgLTQyNCw3ICs0MjQsNyBAQCBpbnQgY2xpX2ZpbmRfYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBzdHJ1Y3QgY2xpX25vZGUgKmNtZCwgc3RydWN0IGNsaV9ub2RlCisgCQkJaWYgKGFyZ19zdHJpbmdbMV0gPT0gJ1wwJykgeworIAkJCQkvKiBubyBhcmcgdmFsdWUgLSBvbmx5IGFsbG93ZWQgZm9yIHN0cmluZyBhcmdzICovCisgCQkJCWlmIChub2RlLT5hcmctPnBhcnNlciA9PSBjbGlfYXJnX3BhcnNlX3N0cmluZykgeworLQkJCQkJdmFsdWVzW2FyZ10gPSAnXDAnOworKwkJCQkJKnZhbHVlc1thcmddID0gJ1wwJzsKKyAJCQkJfSBlbHNlIHsKKyAJCQkJCXJlc3VsdCA9IC1FSU5WQUw7CisgCQkJCQlicmVhazsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItbGluay13aXRoLWxpYnRpcnBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMi1saW5rLXdpdGgtbGlidGlycGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgwZjdiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItbGluay13aXRoLWxpYnRpcnBjLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNDdhZWYyNjE5ODQzMWY3YWQ1NjhjMjI3N2RkZWQxNThiZGEzZTM2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEp1bCAyMDE3IDE2OjAwOjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBsaW5rIHdpdGggbGlidGlycGMKKworbXVzbCBuZWVkcyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNDM5YTk3OC4uZWE4MjFlYiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTgzLDggKzgzLDggQEAgZW5kaWYKKyAKKyBDUFBGTEFHUys9CQkkKENQUEZMQUdTLmlwcG9vbHRlc3QpCisgQ0ZMQUdTKz0JCQktSS4gLUl1c2wgLUljbGkgLU1NRCAtV2FsbCAtZyAkKENQUEZMQUdTKSAkKENQUEZMQUdTLmRtYWxsb2MpCistTERGTEFHUy5pcHBvb2xkPQkkKExERkxBR1MpIC1XbCwtRSAtTC4gLUx1c2wgLWx1c2wgLWxuc2wgLWxkbCAkKExJQlMuZG1hbGxvYykgLWxjCistTERGTEFHUy5pcHBvb2xjb25maWc9CSQoTERGTEFHUykgLUxjbGkgLWxjbGkgLWxyZWFkbGluZSAtbGN1cnNlcyAtbG5zbCAkKExJQlMuZG1hbGxvYykgLWxjCisrTERGTEFHUy5pcHBvb2xkPQkkKExERkxBR1MpIC1XbCwtRSAtTC4gLUx1c2wgLWx1c2wgLWxkbCAkKExJQlMuZG1hbGxvYykgLWxjIC1sdGlycGMKKytMREZMQUdTLmlwcG9vbGNvbmZpZz0JJChMREZMQUdTKSAtTGNsaSAtbGNsaSAtbHJlYWRsaW5lIC1sY3Vyc2VzICQoTElCUy5kbWFsbG9jKSAtbGMgLWx0aXJwYworIAorIE9QVF9DRkxBR1M/PQkJLU8KKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDMtY2xpLU1hcmstcmV0dXJuLW9mLXN0cnRvbC1hcy1sb25nLWludC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDMtY2xpLU1hcmstcmV0dXJuLW9mLXN0cnRvbC1hcy1sb25nLWludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODU0YjExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMy1jbGktTWFyay1yZXR1cm4tb2Ytc3RydG9sLWFzLWxvbmctaW50LnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gOTk0ZDk1NzUzNzRkM2NkYjM0YjFiMGY3MGMzYzUzYWU3NmZlNTc4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA3OjQxOjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBjbGk6IE1hcmsgcmV0dXJuIG9mIHN0cnRvbCBhcyBsb25nIGludAorCitzdHJ0b2wgZG9lcyBub3QgcmV0dXJuIHVuc2lnbmVkIGxvbmcKKworZXJyb3I6IHRha2luZyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdW5zaWduZWQgdHlwZSAndW5zaWduZWQgbG9uZycgaGFzIG5vIGVmZmVjdCBbLVdlcnJvciwtV2Fic29sdXRlLXZhbHVlXQorICAgICAgICBpZiAoKCplbmRwID09ICdcMCcpICYmIChsYWJzKHRtcCkgPCAzMjc2OCkpIHsKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNsaS9jbGlfbGliLmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaS9jbGlfbGliLmMgYi9jbGkvY2xpX2xpYi5jCitpbmRleCBlNGQyZmQ1Li41ZjQ4N2RjIDEwMDY0NAorLS0tIGEvY2xpL2NsaV9saWIuYworKysrIGIvY2xpL2NsaV9saWIuYworQEAgLTUyMiw3ICs1MjIsNyBAQCBpbnQgY2xpX2FyZ19wYXJzZV9pbnQzMihzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgaW50IGNsaV9hcmdfcGFyc2VfaW50MTYoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIHsKKyAJaW50MTZfdCAqaW50dmFsID0gcmVzdWx0OworLQl1bnNpZ25lZCBsb25nIHRtcDsKKysJbG9uZyB0bXA7CisgCWNoYXIgKmVuZHA7CisgCWludCByZXQgPSAwOworIAorQEAgLTUzOSw3ICs1MzksNyBAQCBpbnQgY2xpX2FyZ19wYXJzZV9pbnQxNihzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgaW50IGNsaV9hcmdfcGFyc2VfaW50OChzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgeworIAlpbnQ4X3QgKmludHZhbCA9IHJlc3VsdDsKKy0JdW5zaWduZWQgbG9uZyB0bXA7CisrCWxvbmcgdG1wOworIAljaGFyICplbmRwOworIAlpbnQgcmV0ID0gMDsKKyAKK0BAIC01NzMsNyArNTczLDcgQEAgaW50IGNsaV9hcmdfcGFyc2VfdWludDMyKHN0cnVjdCBjbGlfbm9kZSAqYXJnLCBjb25zdCBjaGFyICp2YWwsIHZvaWQgKnJlc3VsdCkKKyBpbnQgY2xpX2FyZ19wYXJzZV91aW50MTYoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIHsKKyAJdWludDE2X3QgKmludHZhbCA9IHJlc3VsdDsKKy0JdW5zaWduZWQgbG9uZyB0bXA7CisrCWxvbmcgdG1wOworIAljaGFyICplbmRwOworIAlpbnQgcmV0ID0gMDsKKyAKK0BAIC01OTAsNyArNTkwLDcgQEAgaW50IGNsaV9hcmdfcGFyc2VfdWludDE2KHN0cnVjdCBjbGlfbm9kZSAqYXJnLCBjb25zdCBjaGFyICp2YWwsIHZvaWQgKnJlc3VsdCkKKyBpbnQgY2xpX2FyZ19wYXJzZV91aW50OChzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgeworIAl1aW50OF90ICppbnR2YWwgPSByZXN1bHQ7CistCXVuc2lnbmVkIGxvbmcgdG1wOworKwlsb25nIHRtcDsKKyAJY2hhciAqZW5kcDsKKyAJaW50IHJldCA9IDA7CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLW11c2wtZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLW11c2wtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkNTI1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDMtbXVzbC1maXhlcy5wYXRjaApAQCAtMCwwICsxLDI4MyBAQAorRnJvbSBlYjM0NTA0N2RlY2JhNjY1ZTNmMzk5MDgzMzZhODNmMDM5ZTFlY2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgSnVsIDIwMTcgMTY6MDE6MzIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wgZml4ZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNsaS9jbGlfcmVhZGxpbmUuYyB8ICAgNyArLQorIGlwcG9vbF9hcGkuYyAgICAgICB8ICAgOSArKy0KKyBuZXQvcHBwX2RlZnMuaCAgICAgfCAxOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyB1c2wvdXNsLmggICAgICAgICAgfCAgIDQgKysKKyA0IGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXQvcHBwX2RlZnMuaAorCitkaWZmIC0tZ2l0IGEvY2xpL2NsaV9yZWFkbGluZS5jIGIvY2xpL2NsaV9yZWFkbGluZS5jCitpbmRleCAyODEyZTZlLi41NDI5MzVjIDEwMDY0NAorLS0tIGEvY2xpL2NsaV9yZWFkbGluZS5jCisrKysgYi9jbGkvY2xpX3JlYWRsaW5lLmMKK0BAIC0xNywxMyArMTcsMTQgQEAKKyAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvZmlsZS5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisgI2luY2x1ZGUgPHJlYWRsaW5lL3JlYWRsaW5lLmg+CitAQCAtNjMwLDcgKzYzMSw3IEBAIHN0YXRpYyB2b2lkIGNsaV9ybF91bmluc3RhbGxfc2lnbmFsX2hhbmRsZXJzKHZvaWQpCisgCisgc3RhdGljIGludCBjbGlfcmxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcnModm9pZCkKKyB7CistCV9fc2lnaGFuZGxlcl90IGhhbmRsZXI7CisrCXNpZ2hhbmRsZXJfdCBoYW5kbGVyOworIAorIAlybF9jYXRjaF9zaWduYWxzID0gMDsKKyAJcmxfY2xlYXJfc2lnbmFscygpOworZGlmZiAtLWdpdCBhL2lwcG9vbF9hcGkuYyBiL2lwcG9vbF9hcGkuYworaW5kZXggMmMxMGM0Ny4uZDExMjdhOSAxMDA2NDQKKy0tLSBhL2lwcG9vbF9hcGkuYworKysrIGIvaXBwb29sX2FwaS5jCitAQCAtMTgxLDEwICsxODEsMTMgQEAgaW50IGlwcG9vbF9hcGlfcnBjX2NoZWNrX3JlcXVlc3QoU1ZDWFBSVCAqeHBydCkKKyAJICogbm9uLWxvb3BiYWNrIGludGVyZmFjZSwgcmVqZWN0IHRoZSByZXF1ZXN0LgorIAkgKi8KKyAJaWYgKCghaXBwb29sX29wdF9yZW1vdGVfcnBjKSAmJgorLQkgICAgKCh4cHJ0LT54cF9yYWRkci5zaW5fYWRkci5zX2FkZHIgIT0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKSkgJiYKKy0JICAgICAoeHBydC0+eHBfcmFkZHIuc2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9BTlkpKSkpIHsKKysJICAgICgoeHBydC0+eHBfcmFkZHIuc2luNl9hZGRyLnM2X2FkZHIgIT0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKSkgJiYKKysJICAgICAoeHBydC0+eHBfcmFkZHIuc2luNl9hZGRyLnM2X2FkZHIgIT0gaHRvbmwoSU5BRERSX0FOWSkpKSkgeworKwkJY2hhciBzdHJhZGRyW0lORVQ2X0FERFJTVFJMRU5dOworKwkJaW5ldF9udG9wKEFGX0lORVQ2LCAmeHBydC0+eHBfcmFkZHIuc2luNl9hZGRyLCBzdHJhZGRyLCBzaXplb2Yoc3RyYWRkcikpOworKworIAkJaWYgKGlwcG9vbF9vcHRfZGVidWcpIHsKKy0JCQlpcHBvb2xfbG9nKExPR19FUlIsICJSZWplY3RpbmcgUlBDIHJlcXVlc3QgZnJvbSAlcyIsIGluZXRfbnRvYSh4cHJ0LT54cF9yYWRkci5zaW5fYWRkcikpOworKwkJCWlwcG9vbF9sb2coTE9HX0VSUiwgIlJlamVjdGluZyBSUEMgcmVxdWVzdCBmcm9tICVzIiwgc3RyYWRkcik7CisgCQl9CisgCQlzdmNlcnJfYXV0aCh4cHJ0LCBBVVRIX1RPT1dFQUspOworIAkJcmV0dXJuIC1FUEVSTTsKK2RpZmYgLS1naXQgYS9uZXQvcHBwX2RlZnMuaCBiL25ldC9wcHBfZGVmcy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjA2ZWRhNQorLS0tIC9kZXYvbnVsbAorKysrIGIvbmV0L3BwcF9kZWZzLmgKK0BAIC0wLDAgKzEsMTk0IEBACisrLyoJJElkOiBwcHBfZGVmcy5oLHYgMS4xNyAyMDAyLzEyLzA2IDA5OjQ5OjE1IHBhdWx1cyBFeHAgJAkqLworKworKy8qCisrICogcHBwX2RlZnMuaCAtIFBQUCBkZWZpbml0aW9ucy4KKysgKgorKyAqIENvcHlyaWdodCAoYykgMTk4NCBQYXVsIE1hY2tlcnJhcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIFRoZSBuYW1lKHMpIG9mIHRoZSBhdXRob3JzIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKyAqCisrICogNC4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IFBhdWwgTWFja2VycmFzCisrICogICAgIDxwYXVsdXNAc2FtYmEub3JnPiIuCisrICoKKysgKiBUSEUgQVVUSE9SUyBPRiBUSElTIFNPRlRXQVJFIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPCisrICogVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCisrICogQU5EIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisrICogU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisrICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOCisrICogQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORworKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorKyAqLworKworKyNpZm5kZWYgX1BQUF9ERUZTX0hfCisrI2RlZmluZSBfUFBQX0RFRlNfSF8KKysKKysvKgorKyAqIFRoZSBiYXNpYyBQUFAgZnJhbWUuCisrICovCisrI2RlZmluZSBQUFBfSERSTEVOCTQJLyogb2N0ZXRzIGZvciBzdGFuZGFyZCBwcHAgaGVhZGVyICovCisrI2RlZmluZSBQUFBfRkNTTEVOCTIJLyogb2N0ZXRzIGZvciBGQ1MgKi8KKysKKysvKgorKyAqIFBhY2tldCBzaXplcworKyAqCisrICogTm90ZSAtIGxjcCBzaG91bGRuJ3QgYmUgYWxsb3dlZCB0byBuZWdvdGlhdGUgc3R1ZmYgb3V0c2lkZSB0aGVzZQorKyAqCSAgbGltaXRzLiAgU2VlIGxjcC5oIGluIHRoZSBwcHBkIGRpcmVjdG9yeS4KKysgKiAoWFhYIC0gdGhlc2UgY29uc3RhbnRzIHNob3VsZCBzaW1wbHkgYmUgc2hhcmVkIGJ5IGxjcC5jIGluc3RlYWQKKysgKgkgIG9mIGxpdmluZyBpbiBsY3AuaCkKKysgKi8KKysjZGVmaW5lCVBQUF9NVFUJCTE1MDAJLyogRGVmYXVsdCBNVFUgKHNpemUgb2YgSW5mbyBmaWVsZCkgKi8KKysjZGVmaW5lIFBQUF9NQVhNVFUJNjU1MzUgLSAoUFBQX0hEUkxFTiArIFBQUF9GQ1NMRU4pCisrI2RlZmluZSBQUFBfTUlOTVRVCTY0CisrI2RlZmluZSBQUFBfTVJVCQkxNTAwCS8qIGRlZmF1bHQgTVJVID0gbWF4IGxlbmd0aCBvZiBpbmZvIGZpZWxkICovCisrI2RlZmluZSBQUFBfTUFYTVJVCTY1MDAwCS8qIExhcmdlc3QgTVJVIHdlIGFsbG93ICovCisrI2RlZmluZSBQUFBfTUlOTVJVCTEyOAorKworKyNkZWZpbmUgUFBQX0FERFJFU1MocCkJKCgodV9jaGFyICopKHApKVswXSkKKysjZGVmaW5lIFBQUF9DT05UUk9MKHApCSgoKHVfY2hhciAqKShwKSlbMV0pCisrI2RlZmluZSBQUFBfUFJPVE9DT0wocCkJKCgoKHVfY2hhciAqKShwKSlbMl0gPDwgOCkgKyAoKHVfY2hhciAqKShwKSlbM10pCisrCisrLyoKKysgKiBTaWduaWZpY2FudCBvY3RldCB2YWx1ZXMuCisrICovCisrI2RlZmluZQlQUFBfQUxMU1RBVElPTlMJMHhmZgkvKiBBbGwtU3RhdGlvbnMgYnJvYWRjYXN0IGFkZHJlc3MgKi8KKysjZGVmaW5lCVBQUF9VSQkJMHgwMwkvKiBVbm51bWJlcmVkIEluZm9ybWF0aW9uICovCisrI2RlZmluZQlQUFBfRkxBRwkweDdlCS8qIEZsYWcgU2VxdWVuY2UgKi8KKysjZGVmaW5lCVBQUF9FU0NBUEUJMHg3ZAkvKiBBc3luY2hyb25vdXMgQ29udHJvbCBFc2NhcGUgKi8KKysjZGVmaW5lCVBQUF9UUkFOUwkweDIwCS8qIEFzeW5jaHJvbm91cyB0cmFuc3BhcmVuY3kgbW9kaWZpZXIgKi8KKysKKysvKgorKyAqIFByb3RvY29sIGZpZWxkIHZhbHVlcy4KKysgKi8KKysjZGVmaW5lIFBQUF9JUAkJMHgyMQkvKiBJbnRlcm5ldCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0FUCQkweDI5CS8qIEFwcGxlVGFsayBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0lQWAkJMHgyYgkvKiBJUFggcHJvdG9jb2wgKi8KKysjZGVmaW5lCVBQUF9WSkNfQ09NUAkweDJkCS8qIFZKIGNvbXByZXNzZWQgVENQICovCisrI2RlZmluZQlQUFBfVkpDX1VOQ09NUAkweDJmCS8qIFZKIHVuY29tcHJlc3NlZCBUQ1AgKi8KKysjZGVmaW5lIFBQUF9JUFY2CTB4NTcJLyogSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA2ICovCisrI2RlZmluZSBQUFBfQ09NUAkweGZkCS8qIGNvbXByZXNzZWQgcGFja2V0ICovCisrI2RlZmluZSBQUFBfSVBDUAkweDgwMjEJLyogSVAgQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0FUQ1AJMHg4MDI5CS8qIEFwcGxlVGFsayBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfSVBYQ1AJMHg4MDJiCS8qIElQWCBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfSVBWNkNQCTB4ODA1NwkvKiBJUHY2IENvbnRyb2wgUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9DQ1AJCTB4ODBmZAkvKiBDb21wcmVzc2lvbiBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfRUNQCQkweDgwNTMJLyogRW5jcnlwdGlvbiBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfTENQCQkweGMwMjEJLyogTGluayBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfUEFQCQkweGMwMjMJLyogUGFzc3dvcmQgQXV0aGVudGljYXRpb24gUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9MUVIJCTB4YzAyNQkvKiBMaW5rIFF1YWxpdHkgUmVwb3J0IHByb3RvY29sICovCisrI2RlZmluZSBQUFBfQ0hBUAkweGMyMjMJLyogQ3J5cHRvZ3JhcGhpYyBIYW5kc2hha2UgQXV0aC4gUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9DQkNQCTB4YzAyOQkvKiBDYWxsYmFjayBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfRUFQCQkweGMyMjcJLyogRXh0ZW5zaWJsZSBBdXRoZW50aWNhdGlvbiBQcm90b2NvbCAqLworKworKy8qCisrICogVmFsdWVzIGZvciBGQ1MgY2FsY3VsYXRpb25zLgorKyAqLworKyNkZWZpbmUgUFBQX0lOSVRGQ1MJMHhmZmZmCS8qIEluaXRpYWwgRkNTIHZhbHVlICovCisrI2RlZmluZSBQUFBfR09PREZDUwkweGYwYjgJLyogR29vZCBmaW5hbCBGQ1MgdmFsdWUgKi8KKysjZGVmaW5lIFBQUF9GQ1MoZmNzLCBjKQkoKChmY3MpID4+IDgpIF4gZmNzdGFiWygoZmNzKSBeIChjKSkgJiAweGZmXSkKKysKKysvKgorKyAqIEEgMzItYml0IHVuc2lnbmVkIGludGVncmFsIHR5cGUuCisrICovCisrCisrI2lmICFkZWZpbmVkKF9fQklUX1RZUEVTX0RFRklORURfXykgJiYgIWRlZmluZWQoX0JJVFlQRVMpIFwKKysgJiYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmIChOU19UQVJHRVQgPCA0MCkKKysjaWZkZWYJVUlOVDMyX1QKKyt0eXBlZGVmIFVJTlQzMl9UCXVfaW50MzJfdDsKKysjZWxzZQorK3R5cGVkZWYgdW5zaWduZWQgaW50CXVfaW50MzJfdDsKKyt0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1X2ludDE2X3Q7CisrI2VuZGlmCisrI2VuZGlmCisrCisrLyoKKysgKiBFeHRlbmRlZCBhc3luY21hcCAtIGFsbG93cyBhbnkgY2hhcmFjdGVyIHRvIGJlIGVzY2FwZWQuCisrICovCisrdHlwZWRlZiB1X2ludDMyX3QJZXh0X2FjY21bOF07CisrCisrLyoKKysgKiBXaGF0IHRvIGRvIHdpdGggbmV0d29yayBwcm90b2NvbCAoTlApIHBhY2tldHMuCisrICovCisrZW51bSBOUG1vZGUgeworKyAgICBOUE1PREVfUEFTUywJCS8qIHBhc3MgdGhlIHBhY2tldCB0aHJvdWdoICovCisrICAgIE5QTU9ERV9EUk9QLAkJLyogc2lsZW50bHkgZHJvcCB0aGUgcGFja2V0ICovCisrICAgIE5QTU9ERV9FUlJPUiwJCS8qIHJldHVybiBhbiBlcnJvciAqLworKyAgICBOUE1PREVfUVVFVUUJCS8qIHNhdmUgaXQgdXAgZm9yIGxhdGVyLiAqLworK307CisrCisrLyoKKysgKiBTdGF0aXN0aWNzLgorKyAqLworK3N0cnVjdCBwcHBzdGF0CXsKKysgICAgdW5zaWduZWQgaW50IHBwcF9pYnl0ZXM7CS8qIGJ5dGVzIHJlY2VpdmVkICovCisrICAgIHVuc2lnbmVkIGludCBwcHBfaXBhY2tldHM7CS8qIHBhY2tldHMgcmVjZWl2ZWQgKi8KKysgICAgdW5zaWduZWQgaW50IHBwcF9pZXJyb3JzOwkvKiByZWNlaXZlIGVycm9ycyAqLworKyAgICB1bnNpZ25lZCBpbnQgcHBwX29ieXRlczsJLyogYnl0ZXMgc2VudCAqLworKyAgICB1bnNpZ25lZCBpbnQgcHBwX29wYWNrZXRzOwkvKiBwYWNrZXRzIHNlbnQgKi8KKysgICAgdW5zaWduZWQgaW50IHBwcF9vZXJyb3JzOwkvKiB0cmFuc21pdCBlcnJvcnMgKi8KKyt9OworKworK3N0cnVjdCB2anN0YXQgeworKyAgICB1bnNpZ25lZCBpbnQgdmpzX3BhY2tldHM7CS8qIG91dGJvdW5kIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc19jb21wcmVzc2VkOyAvKiBvdXRib3VuZCBjb21wcmVzc2VkIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc19zZWFyY2hlczsJLyogc2VhcmNoZXMgZm9yIGNvbm5lY3Rpb24gc3RhdGUgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc19taXNzZXM7CS8qIHRpbWVzIGNvdWxkbid0IGZpbmQgY29ubi4gc3RhdGUgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc191bmNvbXByZXNzZWRpbjsgLyogaW5ib3VuZCB1bmNvbXByZXNzZWQgcGFja2V0cyAqLworKyAgICB1bnNpZ25lZCBpbnQgdmpzX2NvbXByZXNzZWRpbjsgLyogaW5ib3VuZCBjb21wcmVzc2VkIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc19lcnJvcmluOwkvKiBpbmJvdW5kIHVua25vd24gdHlwZSBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCB2anNfdG9zc2VkOwkvKiBpbmJvdW5kIHBhY2tldHMgdG9zc2VkIGJlY2F1c2Ugb2YgZXJyb3IgKi8KKyt9OworKworK3N0cnVjdCBwcHBfc3RhdHMgeworKyAgICBzdHJ1Y3QgcHBwc3RhdCBwOwkJLyogYmFzaWMgUFBQIHN0YXRpc3RpY3MgKi8KKysgICAgc3RydWN0IHZqc3RhdCB2ajsJCS8qIFZKIGhlYWRlciBjb21wcmVzc2lvbiBzdGF0aXN0aWNzICovCisrfTsKKysKKytzdHJ1Y3QgY29tcHN0YXQgeworKyAgICB1bnNpZ25lZCBpbnQgdW5jX2J5dGVzOwkvKiB0b3RhbCB1bmNvbXByZXNzZWQgYnl0ZXMgKi8KKysgICAgdW5zaWduZWQgaW50IHVuY19wYWNrZXRzOwkvKiB0b3RhbCB1bmNvbXByZXNzZWQgcGFja2V0cyAqLworKyAgICB1bnNpZ25lZCBpbnQgY29tcF9ieXRlczsJLyogY29tcHJlc3NlZCBieXRlcyAqLworKyAgICB1bnNpZ25lZCBpbnQgY29tcF9wYWNrZXRzOwkvKiBjb21wcmVzc2VkIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IGluY19ieXRlczsJLyogaW5jb21wcmVzc2libGUgYnl0ZXMgKi8KKysgICAgdW5zaWduZWQgaW50IGluY19wYWNrZXRzOwkvKiBpbmNvbXByZXNzaWJsZSBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCByYXRpbzsJCS8qIHJlY2VudCBjb21wcmVzc2lvbiByYXRpbyA8PCA4ICovCisrfTsKKysKKytzdHJ1Y3QgcHBwX2NvbXBfc3RhdHMgeworKyAgICBzdHJ1Y3QgY29tcHN0YXQgYzsJCS8qIHBhY2tldCBjb21wcmVzc2lvbiBzdGF0aXN0aWNzICovCisrICAgIHN0cnVjdCBjb21wc3RhdCBkOwkJLyogcGFja2V0IGRlY29tcHJlc3Npb24gc3RhdGlzdGljcyAqLworK307CisrCisrLyoKKysgKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSByZWNvcmRzIHRoZSB0aW1lIGluIHNlY29uZHMgc2luY2UKKysgKiB0aGUgbGFzdCBOUCBwYWNrZXQgd2FzIHNlbnQgb3IgcmVjZWl2ZWQuCisrICovCisrc3RydWN0IHBwcF9pZGxlIHsKKysgICAgdGltZV90IHhtaXRfaWRsZTsJCS8qIHRpbWUgc2luY2UgbGFzdCBOUCBwYWNrZXQgc2VudCAqLworKyAgICB0aW1lX3QgcmVjdl9pZGxlOwkJLyogdGltZSBzaW5jZSBsYXN0IE5QIHBhY2tldCByZWNlaXZlZCAqLworK307CisrCisrI2lmbmRlZiBfX1AKKysjaWZkZWYgX19TVERDX18KKysjZGVmaW5lIF9fUCh4KQl4CisrI2Vsc2UKKysjZGVmaW5lIF9fUCh4KQkoKQorKyNlbmRpZgorKyNlbmRpZgorKworKyNlbmRpZiAvKiBfUFBQX0RFRlNfSF8gKi8KK2RpZmYgLS1naXQgYS91c2wvdXNsLmggYi91c2wvdXNsLmgKK2luZGV4IGNkYzE2ZGIuLjg4ZDI3MTQgMTAwNjQ0CistLS0gYS91c2wvdXNsLmgKKysrKyBiL3VzbC91c2wuaAorQEAgLTM4LDYgKzM4LDEwIEBACisgI2luY2x1ZGUgInVzbF9mc20uaCIKKyAjaW5jbHVkZSAidXNsX2xpc3QuaCIKKyAKKysjaWZuZGVmIFdBSVRfQU5ZCisrI2RlZmluZSBXQUlUX0FOWSAoLTEpCisrI2VuZGlmCisrCisgI2RlZmluZSBVU0xfVkVSU0lPTgkiMC42IgorIAorICNpZmRlZiBERUJVRworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvYWx3YXlzX3N5c2xvZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2Fsd2F5c19zeXNsb2cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ3NTI3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2Fsd2F5c19zeXNsb2cucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAoraXBwb29sOiBhbHdheXMgbG9nIHRvIHN5c2xvZworCitFdmVuIHdoZW4gcnVubmluZyBpbiB0aGUgZm9yZWdyb3VuZCwgc2VuZCBsb2cgbWVzc2FnZXMgdG8gc3lzbG9nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKworLS0tIGEvaXBwb29sX21haW4uYworKysrIGIvaXBwb29sX21haW4uYworQEAgLTI1MSw5ICsyNTEsOCBAQCB2b2lkIGlwcG9vbF92bG9nKGludCBsZXZlbCwgY29uc3QgY2hhciAqCisgCWlmIChpcHBvb2xfb3B0X25vZGFlbW9uKSB7CisgCQl2cHJpbnRmKGZtdCwgYXApOworIAkJcHJpbnRmKCJcbiIpOworLQl9IGVsc2UgeworLQkJdnN5c2xvZyhsZXZlbCwgZm10LCBhcCk7CisgCX0KKysJdnN5c2xvZyhsZXZlbCwgZm10LCBhcCk7CisgCURNQUxMT0NfVk1FU1NBR0UoZm10LCBhcCk7CisgfQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2wuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTkxN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sLnNlcnZpY2UKQEAgLTAsMCArMSwxOSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1pcCBhZGRyZXNzIHBvb2wgYWxsb2NhdG9yCitSZXF1aXJlcz1ycGNiaW5kLnNlcnZpY2UKK0FmdGVyPXJwY2JpbmQuc2VydmljZQorCitbU2VydmljZV0KK1R5cGU9c2ltcGxlCisjIFN0YXJ0IGlwcG9vbGQgaW4gdGhlIGZvcmVncm91bmQhCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2lwcG9vbGQgLWYKKyMgTm9ybWFsIG91dHB1dCB3aWxsIGdvIHRvIHN5c2xvZywgc28gc3VwcHJlc3Mgc3Rkb3V0LgorU3RhbmRhcmRPdXRwdXQ9bnVsbAorU3RhbmRhcmRFcnJvcj1zeXNsb2cKKyMgRXhlY1N0b3AgaXMgbm90IG5lZWRlZC4gc3lzdGVtZCB3aWxsIHNlbmQgU0lHVEVSTQorIyBhbmQgaXBwb29sZCB3aWxsIGV4aXQgc3RhdHVzIDEuCitTdWNjZXNzRXhpdFN0YXR1cz0xCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sX2luaXQuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9pbml0LmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRhNzY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9pbml0LmQucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRml4IHN0YXJ0IGVycm9yIGlmIGxzYiBpbml0LWZ1bmN0aW9ucyBkb2Vzbid0IGV4aXN0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2RlYmlhbi9pbml0LmQgYi9kZWJpYW4vaW5pdC5kCitpbmRleCAzNjNiYTg5Li4wMzI3ZmVjIDEwMDY0NAorLS0tIGEvZGViaWFuL2luaXQuZAorKysrIGIvZGViaWFuL2luaXQuZAorQEAgLTEwLDYgKzEwLDkgQEAKKyAjIERlc2NyaXB0aW9uOiAgICAgICBTdGFydCBpcHBvb2wgZGFlbW9uCisgIyMjIEVORCBJTklUIElORk8KKyAKKysjIFNvdXJjZSBmdW5jdGlvbiBsaWJyYXJ5LgorKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisrCisgREFFTU9OPS91c3Ivc2Jpbi9pcHBvb2xkCisgTkFNRT1pcHBvb2xkCisgTU9EVUxFPXBwcG9sMnRwCitAQCAtMTgsNyArMjEsMjMgQEAgTU9EVUxFPXBwcG9sMnRwCisgdGVzdCAteCAkREFFTU9OIHx8IGV4aXQgMAorIAorICMgR2V0IGxzYiBmdW5jdGlvbnMKKy0uIC9saWIvbHNiL2luaXQtZnVuY3Rpb25zCisraWYgWyAtZiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucyBdCisrdGhlbgorKyAgLiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucworK2Vsc2UKKysgIGxvZ19iZWdpbl9tc2coKSB7CisrICAgIGVjaG8gLW4gJCoKKysgIH0KKysKKysgIGxvZ19lbmRfbXNnKCkgeworKyAgICBpZiBbICQxIC1lcSAwIF07IHRoZW4KKysgICAgICBlY2hvICJkb25lIgorKyAgICBlbHNlCisrICAgICAgZWNobyAiZmFpbGVkIgorKyAgICBmaQorKyAgfQorK2ZpCisrCisgLiAvZXRjL2RlZmF1bHQvcmNTCisgCisgY2FzZSAiJDEiIGluCitAQCAtMzUsNiArNTQsMTAgQEAgY2FzZSAiJDEiIGluCisgICAgIGZpCisgICAgIGxvZ19lbmRfbXNnICQ/CisgICAgIDs7CisrICBzdGF0dXMpCisrICAgIHN0YXR1cyAvdXNyL3NiaW4vaXBwb29sZDsKKysgICAgZXhpdCAkPworKyAgICA7OworICAgcmVzdGFydCkKKyAgICAgJDAgc3RvcAorICAgICBzbGVlcCAxCitAQCAtNDYsNyArNjksNyBAQCBjYXNlICIkMSIgaW4KKyAgICAgbG9nX2VuZF9tc2cgJD8KKyAgICAgOzsKKyAgICopCistICAgIGxvZ19zdWNjZXNzX21zZyAiVXNhZ2U6IC9ldGMvaW5pdC5kL2lwcG9vbGQge3N0YXJ0fHN0b3B8cmVzdGFydHxyZWxvYWR8Zm9yY2UtcmVsb2FkfSIKKysgICAgbG9nX3N1Y2Nlc3NfbXNnICJVc2FnZTogL2V0Yy9pbml0LmQvaXBwb29sZCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Zm9yY2UtcmVsb2FkfSIKKyAgICAgZXhpdCAxCisgZXNhYworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sX3BhcmFsbGVsX21ha2VfYW5kX3BpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9wYXJhbGxlbF9tYWtlX2FuZF9waWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViZDk1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9wYXJhbGxlbF9tYWtlX2FuZF9waWMucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorMSlhZGQgLWZQSUMgZm9yICQoSVBQT09MX1JQQ19TVEVNKV94ZHIubywgJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vCisyKWFkZCBzdWIgdGFyZ2V0IGZvciBzdWJkaXJzLWFsbCwgYW5kIHRob3NlIGRlcGVuZGVuY2llcyBiZWxvdworICBwcHBkIHBsdWdpbiBkaXJlY3RvcnkgYnVpbGQgZGVwZW5kcyBvbiAkKElQUE9PTF9SUENfU1RFTSlfeGRyLm8gCiskKElQUE9PTF9SUENfU1RFTSlfY2xpZW50Lm8gaXBwb29sX3JwYy5oCisKKyAgaXBwb29sZCBkZXBlbmRzIG9uIGxpYnVzbAorICBpcHBvb2xjb25maWcgZGVwZW5kcyBvbiBsaWJjbGkKKworICAkKElQUE9PTF9SUENfU1RFTSlfeGRyLm8sICQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQubyAKKyQoSVBQT09MX1JQQ19TVEVNKV9zZXJ2ZXIubyAqLm8gaW4gbWFpbiBkaXJlY3RvcnkgZGVwZW5kcyBvbiBpcHBvb2xfcnBjLmgKK2FzIHRob3NlIGFsbCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGUgaXBwb29sX3JwYy5oIHdoaWNoIGlzIAorZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGJ5IHJwY2dlbgorCit0byBtYWtlIHBhcmFsbGVsIG1ha2Ugd29ya2luZy4KKzMpaW5jbHVkZSBkZXBlbmRlbmN5IGZpbGVzIGZvciBwcHBkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA3M2FhNzJmLi40ZjdhZjFkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTA2LDE0ICsxMDYsMTQgQEAgYWxsOgkJCWdlbmVyYXRlZC1maWxlcyAkKElQUE9PTF9SUENfU1RFTSlfeGRyLm8gJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vIFwKKyAJCQlzdWJkaXJzLWFsbCAkKFBST0dTLnNiaW4pICQoUFJPR1MuYmluKQorIAorICMgQ29tcGlsZSB3aXRob3V0IC1XYWxsIGJlY2F1c2UgcnBjZ2VuLWdlbmVyYXRlZCBjb2RlIGlzIGZ1bGwgb2Ygd2FybmluZ3MKKy0kKElQUE9PTF9SUENfU1RFTSlfeGRyLm86CSQoSVBQT09MX1JQQ19TVEVNKV94ZHIuYworLQkJCSQoQ0MpIC1JLiAtTU1EIC1nIC1jIC13ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTLm9wdGltaXplKSAkPAorKyQoSVBQT09MX1JQQ19TVEVNKV94ZHIubzoJJChJUFBPT0xfUlBDX1NURU0pX3hkci5jICQoSVBQT09MX1JQQ19TVEVNKS5oCisrCQkJJChDQykgLUkuIC1NTUQgLWcgLWMgLXcgJChDUFBGTEFHUykgJChDRkxBR1Mub3B0aW1pemUpICQ8IC1mUElDCisgCistJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vOgkkKElQUE9PTF9SUENfU1RFTSlfY2xpZW50LmMKKy0JCQkkKENDKSAtSS4gLU1NRCAtZyAtYyAtdyAkKENQUEZMQUdTKSAkKENGTEFHUy5vcHRpbWl6ZSkgJDwKKyskKElQUE9PTF9SUENfU1RFTSlfY2xpZW50Lm86CSQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQuYyAkKElQUE9PTF9SUENfU1RFTSkuaAorKwkJCSQoQ0MpIC1JLiAtTU1EIC1nIC1jIC13ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTLm9wdGltaXplKSAkPCAtZlBJQworIAorLSQoSVBQT09MX1JQQ19TVEVNKV9zZXJ2ZXIubzoJJChJUFBPT0xfUlBDX1NURU0pX3NlcnZlci5jCistCQkJJChDQykgLUkuIC1NTUQgLWcgLWMgLXcgJChDUFBGTEFHUykgJChDRkxBR1Mub3B0aW1pemUpICQ8CisrJChJUFBPT0xfUlBDX1NURU0pX3NlcnZlci5vOgkkKElQUE9PTF9SUENfU1RFTSlfc2VydmVyLmMgJChJUFBPT0xfUlBDX1NURU0pLmgKKysJCQkkKENDKSAtSS4gLU1NRCAtZyAtYyAtdyAkKENQUEZMQUdTKSAkKENGTEFHUy5vcHRpbWl6ZSkgJDwgLWZQSUMKKyAKKyAkKElQUE9PTF9SUENfU1RFTSlfeGRyLmM6CSQoSVBQT09MX1JQQ19TVEVNKS54CisgCQkJLSQoUk0pICRACitAQCAtMTM2LDggKzEzNiwxMiBAQCAkKElQUE9PTF9SUENfU1RFTSkuaDoJJChJUFBPT0xfUlBDX1NURU0pLngKKyAKKyBnZW5lcmF0ZWQtZmlsZXM6CSQoUlBDX0ZJTEVTKQorIAorLXN1YmRpcnMtYWxsOgorLQkJCUBmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpIC1DICQkZCAkKE1GTEFHUykgRVhUUkFfQ0ZMQUdTPSIkKENQUEZMQUdTKSIgYWxsOyBpZiBbICQkPyAtbmUgMCBdOyB0aGVuIGV4aXQgMTsgZmk7IGRvbmUKKytzdWJkaXJzLWFsbDoJJChwYXRzdWJzdCAlLCUtZGlyLCAkKFNVQkRJUlMpKQorKworK3BwcGQtZGlyOiAkKElQUE9PTF9SUENfU1RFTSlfeGRyLm8gJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vICQoSVBQT09MX1JQQ19TVEVNKS5oCisrCisrJChwYXRzdWJzdCAlLCUtZGlyLCQoU1VCRElSUykpOgorKwkJCUBmb3IgZCBpbiAkKHBhdHN1YnN0ICUtZGlyLCUsJEApOyBkbyAkKE1BS0UpIC1DICQkZCAkKE1GTEFHUykgRVhUUkFfQ0ZMQUdTPSIkKENQUEZMQUdTKSIgYWxsOyBpZiBbICQkPyAtbmUgMCBdOyB0aGVuIGV4aXQgMTsgZmk7IGRvbmUKKyAKKyBjbGVhbjoKKyAJCQlAZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAtQyAkJGQgJChNRkxBR1MpICRAOyBpZiBbICQkPyAtbmUgMCBdOyB0aGVuIGV4aXQgMTsgZmk7IGRvbmUKK0BAIC0xNTEsMTMgKzE1NSwxMyBAQCBUQUdTOgorIAkJCUBmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpIC1DICQkZCAkKE1GTEFHUykgJEA7IGRvbmUKKyAJCQlldGFncyAtdCAkKHdpbGRjYXJkICouYykgJCh3aWxkY2FyZCAqLmgpCisgCistaXBwb29sZDoJCSQoSVBQT09MRF9TUkNTLm8pCistCQkJJChDQykgLW8gJEAgJF4gJChMREZMQUdTLmlwcG9vbGQpCisraXBwb29sZDoJCSQoSVBQT09MRF9TUkNTLm8pIHVzbC1kaXIKKysJCQkkKENDKSAtbyAkQCAkKElQUE9PTERfU1JDUy5vKSAkKExERkxBR1MuaXBwb29sZCkKKyAKKy1pcHBvb2xjb25maWc6CQkkKElQUE9PTENPTkZJR19TUkNTLm8pCistCQkJJChDQykgLW8gJEAgJF4gJChMREZMQUdTLmlwcG9vbGNvbmZpZykKKytpcHBvb2xjb25maWc6CQkkKElQUE9PTENPTkZJR19TUkNTLm8pIGNsaS1kaXIKKysJCQkkKENDKSAtbyAkQCAkKElQUE9PTENPTkZJR19TUkNTLm8pICQoTERGTEFHUy5pcHBvb2xjb25maWcpCisgCistJS5vOgklLmMKKyslLm86CSUuYyAkKElQUE9PTF9SUENfU1RFTSkuaAorIAkJCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkPCAtbyAkQAorIAorIGluc3RhbGw6CQlhbGwKK2RpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlIGIvcHBwZC9NYWtlZmlsZQoraW5kZXggNzhkOWIzMy4uMTA2ZGVjYSAxMDA2NDQKKy0tLSBhL3BwcGQvTWFrZWZpbGUKKysrKyBiL3BwcGQvTWFrZWZpbGUKK0BAIC0yNCwzICsyNCw1IEBAIGluc3RhbGw6IGlwcG9vbC5zbworIAorIGNsZWFuOgorIAktcm0gLXJmICoubyAqLnNvCisrCisraW5jbHVkZSAkKHdpbGRjYXJkICouZCAvZGV2L251bGwpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2xfdXNsX3RpbWVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sX3VzbF90aW1lci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTBlMzMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sX3VzbF90aW1lci5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitpbmNsdWRlIGxpbWl0cy5oIHRvIGF2b2lkIFVJTlRfTUFYIHVuZGVmaW5lZCBjb21waWxpbmcgZXJyb3IuCityZW1vdmUgdGhlIHVudXNlZCBhc3NpZ24gd2hpY2ggY2F1c2VkIGNvbXBpbGluZyBlcnJvciB3aXRoIC1XZXJyb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBZYW8gWmhhbyA8eWFvLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorCitkaWZmIC0tZ2l0IGEvdXNsL3VzbF90aW1lci5jIGIvdXNsL3VzbF90aW1lci5jCitpbmRleCA3MzRiODIwLi5mZGE3NTJiIDEwMDY0NAorLS0tIGEvdXNsL3VzbF90aW1lci5jCisrKysgYi91c2wvdXNsX3RpbWVyLmMKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgInVzbC5oIgorIAorQEAgLTg3LDE0ICs4OCwxMyBAQCB2b2lkICgqdXNsX3RpbWVyX3RpY2tfaG9vaykodm9pZCk7CisgICovCisgdm9pZCB1c2xfdGltZXJfdGljayh2b2lkKQorIHsKKy0JaW50IHJlc3VsdDsKKyAJY2hhciBtc2cgPSAnXDAnOworIAorIAl1c2xfdGljaysrOworIAorIAlpZiAoIXVzbF90aWNrX3BlbmRpbmcpIHsKKyAJCXVzbF90aWNrX3BlbmRpbmcgPSAxOworLQkJcmVzdWx0ID0gd3JpdGUodXNsX3RpY2tfcGlwZVsxXSwgJm1zZywgc2l6ZW9mKG1zZykpOworKwkJd3JpdGUodXNsX3RpY2tfcGlwZVsxXSwgJm1zZywgc2l6ZW9mKG1zZykpOworIAl9CisgfQorIAorQEAgLTExMSwxMSArMTExLDEwIEBAIHN0YXRpYyB2b2lkIHVzbF90aW1lcl90aWNrX2hhbmRsZXIoaW50IGZkLCB2b2lkICphcmcpCisgCXN0cnVjdCB1c2xfb3JkX2xpc3RfaGVhZCAqdG1wOworIAlzdHJ1Y3QgdXNsX2xpc3RfaGVhZCAqaXdhbGs7CisgCXN0cnVjdCB1c2xfbGlzdF9oZWFkICppdG1wOworLQlpbnQgcmVzdWx0OworIAljaGFyIG1zZzsKKyAJVVNMX0xJU1RfSEVBRChleHBpcmVfbGlzdCk7CisgCistCXJlc3VsdCA9IHVzbF9mZF9yZWFkKHVzbF90aWNrX3BpcGVbMF0sICZtc2csIHNpemVvZihtc2cpKTsKKysJdXNsX2ZkX3JlYWQodXNsX3RpY2tfcGlwZVswXSwgJm1zZywgc2l6ZW9mKG1zZykpOworIAl1c2xfdGlja19wZW5kaW5nID0gMDsKKyAKKyAJdXNsX2xpc3RfZm9yX2VhY2god2FsaywgdG1wLCAmdXNsX3RpbWVyX2xpc3QpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q1YjcxNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0FkZCBMREZMQUdTIHZhcmlhYmxlIHRvIE1ha2VmaWxlIHNvIHRoYXQgZXh0cmEgbGlua2VyIGZsYWdzIGNhbiBiZSBzZW50IHZpYSB0aGlzIHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNGY3YWYxZC4uYTA1YTAwMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTgzLDggKzgzLDggQEAgZW5kaWYKKyAKKyBDUFBGTEFHUz0JCSQoQ1BQRkxBR1MuaXBwb29sdGVzdCkKKyBDRkxBR1M9CQkJLUkuIC1JdXNsIC1JY2xpIC1NTUQgLVdhbGwgLWcgJChDUFBGTEFHUykgJChDUFBGTEFHUy5kbWFsbG9jKQorLUxERkxBR1MuaXBwb29sZD0JLVdsLC1FIC1MLiAtTHVzbCAtbHVzbCAtbG5zbCAtbGRsICQoTElCUy5kbWFsbG9jKSAtbGMKKy1MREZMQUdTLmlwcG9vbGNvbmZpZz0JLUxjbGkgLWxjbGkgLWxyZWFkbGluZSAtbGN1cnNlcyAtbG5zbCAkKExJQlMuZG1hbGxvYykgLWxjCisrTERGTEFHUy5pcHBvb2xkPQkkKExERkxBR1MpIC1XbCwtRSAtTC4gLUx1c2wgLWx1c2wgLWxuc2wgLWxkbCAkKExJQlMuZG1hbGxvYykgLWxjCisrTERGTEFHUy5pcHBvb2xjb25maWc9CSQoTERGTEFHUykgLUxjbGkgLWxjbGkgLWxyZWFkbGluZSAtbGN1cnNlcyAtbG5zbCAkKExJQlMuZG1hbGxvYykgLWxjCisgCisgT1BUX0NGTEFHUz89CQktTworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvcnVudGVzdC5zaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL3J1bnRlc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxZjU4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL3J1bnRlc3Quc2gKQEAgLTAsMCArMSwyNiBAQAorIyEvYmluL3NoCitCQU5ORVI9Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitUQ0xTSD0idGNsc2ggYWxsLnRjbCAtcHJlc2VydmVjb3JlIDMgLXZlcmJvc2UgYnBzIC10bXBkaXIgLi9yZXN1bHRzIC1vdXRmaWxlIHRlc3QtaXBwb29sLnJlc3VsdCIKKwordGVzdF9zZXR1cCgpIHsKKyAgICAgICAgaWYgWyAtZCAuL3Jlc3VsdHMgXTsgdGhlbiBybSAtZnIgLi9yZXN1bHRzOyBmaQorICAgICAgICBta2RpciAuL3Jlc3VsdHMKK30KKwordGVzdF9pcHBvb2woKSB7CisgICAgICAgIGVjaG8gIiR7QkFOTkVSfSIKKyAgICAgICAgZXZhbCAkVENMU0ggLWNvbnN0cmFpbnRzICJpcFBvb2wiCit9Cit0ZXN0X3Bvc3Rwcm9jZXNzKCkgeworICAgICAgICBlY2hvICIke0JBTk5FUn0iCisgICAgICAgIChmYWlsZWQ9YGdyZXAgRkFJTEVEIHJlc3VsdHMvKi5yZXN1bHQgfCB3YyAtbGA7IFwKKyAgICAgICAgbGV0IGZhaWxlZDI9ZmFpbGVkLzIgO1wKKyAgICAgICAgcGFzc2VkPWBncmVwIFBBU1NFRCByZXN1bHRzLyoucmVzdWx0IHwgd2MgLWxgOyBcCisgICAgICAgIGVjaG8gIlRFU1QgU1VNTUFSWTogJHBhc3NlZCB0ZXN0cyBQQVNTRUQsICRmYWlsZWQyIHRlc3RzIEZBSUxFRCIgO1wKKyAgICAgICAgZXhpdCAkZmFpbGVkMikKK30KKwordGVzdF9zZXR1cAordGVzdF9pcHBvb2wKK3Rlc3RfcG9zdHByb2Nlc3MKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2xfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2xfMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNDc0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbF8xLjMuYmIKQEAgLTAsMCArMSwxMTMgQEAKK1NVTU1BUlkgPSAiQW4gSVAgYWRkcmVzcyBwb29sIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJJcFBvb2wgaXMgaW1wbGVtZW50ZWQgYXMgYSBzZXBhcmF0ZSBzZXJ2ZXIgZGFlbW9uIFwKK3RvIGFsbG93IGFueSBhcHBsaWNhdGlvbiB0byB1c2UgaXRzIGFkZHJlc3MgcG9vbHMuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgXAordG8gZGVmaW5lIGFkZHJlc3MgcG9vbHMgdGhhdCBhcmUgc2hhcmVkIGJ5IFBQUCwgTDJUUCwgUFBUUCBldGMuIEl0IG1heSBiZSBcCit1c2VmdWwgaW4gc29tZSBWUE4gc2VydmVyIHNldHVwcy4gSXBQb29sIGNvbWVzIHdpdGggYSBjb21tYW5kIGxpbmUgXAorbWFuYWdlbWVudCBhcHBsaWNhdGlvbiwgaXBwb29sY29uZmlnIHRvIG1hbmFnZSBhbmQgcXVlcnkgYWRkcmVzcyBwb29sIFwKK3N0YXR1cy4gQSBwcHBkIHBsdWdpbiBpcyBzdXBwbGllZCB3aGljaCBhbGxvd3MgcHBwZCB0byByZXF1ZXN0IElQIFwKK2FkZHJlc3NlcyBmcm9tIGlwcG9vbGQuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmwydHAub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3BlbmwydHAvZmlsZXMvJHtCUE59LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcHBvb2wuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pcHBvb2xfdXNsX3RpbWVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwcG9vbF9wYXJhbGxlbF9tYWtlX2FuZF9waWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaXBwb29sX2luaXQuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHdheXNfc3lzbG9nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXNsX3RpbWVyLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVzcGVjdC1mbGFncy1mcm9tLWVudi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlYWQtcmV0dXJucy1zc2l6ZV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItTWFyay1maXJzdC1lbGVtZW50LW9mLWEtc3RyaW5nLWFzLW51bGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jbGktTWFyay1yZXR1cm4tb2Ytc3RydG9sLWFzLWxvbmctaW50LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGluay13aXRoLWxpYnRpcnBjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbXVzbC1maXhlcy5wYXRjaCBcCisgICAgICAgICAgICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGM1OTI4M2I4MmZjMmIxNjY0NTVlMGZjMjNjNzFjNmYiCitTUkNfVVJJW21kNXN1bV0gPSAiZTI0MDFlNjVkYjI2YTM3NjQ1ODViOTcyMTI4ODhmYWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDNlYWI3ZDZjYWQ1ZGE4Y2NjOWQxZTMxZDUzMDNlMjdhMzk2MjJjMDdiZGI4ZmEzNjE4ZWVhMzE0NDEyMDc1YiIKKworaW5oZXJpdCBzeXN0ZW1kCisKK0RFUEVORFMgPSAicmVhZGxpbmUgcHBwIG5jdXJzZXMgZ3ppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgorUkRFUEVORFNfJHtQTn0gPSAicnBjYmluZCIKKworRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgQVM9JyR7QVN9JyBMRD0nJHtMRH0nIEFSPScke0FSfScgTk09JyR7Tk19JyBTVFJJUD0nJHtTVFJJUH0nIgorRVhUUkFfT0VNQUtFICs9ICJQUFBEX1ZFUlNJT049JHtQUFBEX1ZFUlNJT059IFNZU19MSUJESVI9JHtsaWJkaXJ9IgorIyBlbmFibGUgc2VsZiB0ZXN0cworRVhUUkFfT0VNQUtFICs9ICJJUFBPT0xfVEVTVD15IgorCitDUFBGTEFHUyArPSAiJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorQ1BQRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImlwcG9vbC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIGZpeCB0aGUgQ0ZMQUdTPSBhbmQgQ1BQRkxBR1M9IGluIG1haW4gTWFrZWZpbGUsIHRvIGhhdmUgdGhlIGV4dHJhIENGTEFHUyBpbiBlbnYKKyAgICBzZWQgLWkgLWUgInMvXkNGTEFHUz0vQ0ZMQUdTKz0vIiAke1N9L01ha2VmaWxlCisgICAgc2VkIC1pIC1lICJzL15DUFBGTEFHUz0vQ1BQRkxBR1MrPS8iICR7U30vTWFrZWZpbGUKKworICAgIHNlZCAtaSAtZSAiczotSS91c3IvaW5jbHVkZS9wcHBkOi1JPS91c3IvaW5jbHVkZS9wcHBkOiIgJHtTfS9wcHBkL01ha2VmaWxlCisKK30KKworCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKKworICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L2RlYmlhbi9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwcG9vbGQKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9pcHBvb2wuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcHBvb2wuc2VydmljZQorICAgIHNlZCAtaSAtZSAnczpAU0JJTkRJUkA6JHtzYmluZGlyfTpnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcHBvb2wuc2VydmljZQorCisgICAgIyBpbnN0YWxsIHNlbGYgdGVzdAorICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvJHtCUE59CisgICAgaW5zdGFsbCAke1N9L3Rlc3QvYWxsLnRjbCAgJHtTfS90ZXN0L2lwcG9vbC50ZXN0IFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3RfcHJvY3MudGNsICR7RH0vb3B0LyR7QlBOfQorICAgIGluc3RhbGwgJHtXT1JLRElSfS9ydW50ZXN0LnNoICR7RH0vb3B0LyR7QlBOfQorICAgICMgZml4IHRoZSAuLi9pcHBvb2xjb25maWcgaW4gdGVzdF9wcm9jcy50Y2wKKyAgICBzZWQgLWkgLWUgInM6Li4vaXBwb29sY29uZmlnOmlwcG9vbGNvbmZpZzoiIFwKKyAgICAgICAgJHtEfS9vcHQvJHtCUE59L3Rlc3RfcHJvY3MudGNsCit9CisKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3QiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcHBwZC8ke1BQUERfVkVSU0lPTn0vaXBwb29sLnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcHBwZC8ke1BQUERfVkVSU0lPTn0vLmRlYnVnL2lwcG9vbC5zbyIKK0ZJTEVTXyR7UE59LXRlc3QgPSAiL29wdC8ke0JQTn0iCisKKyMgbmVlZHMgdGNsIHRvIHJ1biB0ZXN0cworUkRFUEVORFNfJHtQTn0tdGVzdCArPSAidGNsICR7QlBOfSIKKworUFBQRF9WRVJTSU9OPSIke0BnZXRfcHBwX3ZlcnNpb24oZCl9IgorCitkZWYgZ2V0X3BwcF92ZXJzaW9uKGQpOgorICAgIGltcG9ydCByZQorCisgICAgcHBwZF9wbHVnaW4gPSBkLmV4cGFuZCgnJHtTVEFHSU5HX0xJQkRJUn0vcHBwZCcpCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocHBwZF9wbHVnaW4pOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgYmIuZGVidWcoMSwgInBwcGQgcGx1Z2luIGRpciAlcyIgJSBwcHBkX3BsdWdpbikKKyAgICByID0gcmUuY29tcGlsZSgiXGQqXC5cZCpcLlxkKiIpCisgICAgZm9yIGYgaW4gb3MubGlzdGRpcihwcHBkX3BsdWdpbik6CisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHBwcGRfcGx1Z2luLCBmKSk6CisgICAgICAgICAgICBtYSA9IHIubWF0Y2goZikKKyAgICAgICAgICAgIGlmIG1hOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJwcHBkIHZlcnNpb24gZGlyICVzIiAlIGYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgInVuZGVyIHBwcGQgcGx1Z2luIGRpciAlcyIgJSBmKQorCisgICAgcmV0dXJuIE5vbmUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMS4zLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3ZTZlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMS4zLjUuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJIaWdoIEF2YWlsYWJpbGl0eSBtb25pdG9yIGJ1aWx0IHVwb24gTFZTLCBWUlJQIGFuZCBzZXJ2aWNlIHBvbGxlcnMiCitERVNDUklQVElPTiA9ICJLZWVwYWxpdmVkIGlzIGEgcm91dGluZyBzb2Z0d2FyZSB3cml0dGVuIGluIEMuIFRoZSBtYWluIGdvYWwgXAorb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgc2ltcGxlIGFuZCByb2J1c3QgZmFjaWxpdGllcyBmb3IgbG9hZGJhbGFuY2luZyBcCithbmQgaGlnaC1hdmFpbGFiaWxpdHkgdG8gTGludXggc3lzdGVtIGFuZCBMaW51eCBiYXNlZCBpbmZyYXN0cnVjdHVyZXMuIFwKK0xvYWRiYWxhbmNpbmcgZnJhbWV3b3JrIHJlbGllcyBvbiB3ZWxsLWtub3duIGFuZCB3aWRlbHkgdXNlZCBMaW51eCBWaXJ0dWFsIFwKK1NlcnZlciAoSVBWUykga2VybmVsIG1vZHVsZSBwcm92aWRpbmcgTGF5ZXI0IGxvYWRiYWxhbmNpbmcgXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnL3NvZnR3YXJlLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjk5NjRkMjk1ZWM5ZDM0ZWQzNDA4YjU3ZDI4ODQ3YjY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwMTE0ZDg2ZWE0Yzg5NjU1N2JlYjBkOTM2NzgxOWE0MjNmZmJhNzcyYmM1ZDdjNTQ4ZGM0NTVlNmIzYmQwNDgiCisKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIG9wZW5zc2wiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJubCBzbm1wIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0tZW5hYmxlLWxpYm5sLC0tZGlzYWJsZS1saWJubCxsaWJubCIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCxuZXQtc25tcCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLWluaXQ9c3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLXdpdGgtaW5pdD1TWVNWLHN5c3RlbWQiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGliaXB0YyIKK0VYVFJBX09FTUFLRSA9ICJpbml0ZGlyPSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0gXTsgdGhlbgorICAgICAgICBjaG1vZCAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICAgICAgc2VkIC1pICdzI3JjLmQvIyMnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7Qn0vJHtCUE59LyR7QlBOfS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LyR7QlBOfS5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc25tcC9taWJzL0tFRVBBTElWRUQtTUlCLnR4dCIKKworSU5JVFNDUklQVF9OQU1FID0gImtlZXBhbGl2ZWQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJyZW1vdmUiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2ZpbGVzL3NyYy1kYWVtb24tbGxkcGQuc2VydmljZS5pbi1Vc2UtZml4ZWQtcGF0aC1mb3ItbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbGxkcGQvZmlsZXMvc3JjLWRhZW1vbi1sbGRwZC5zZXJ2aWNlLmluLVVzZS1maXhlZC1wYXRoLWZvci1ta2Rpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc2ZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2ZpbGVzL3NyYy1kYWVtb24tbGxkcGQuc2VydmljZS5pbi1Vc2UtZml4ZWQtcGF0aC1mb3ItbWtkaXIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBmOWYzZTRkZDMxNTg4Y2NlNWY2NTU3MzBkYTdiNWMzZjU2YTliZGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFR1ZSwgMjYgU2VwIDIwMTcgMDk6MTk6NTEgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluOiBVc2UgZml4ZWQgcGF0aCBmb3IgbWtkaXIgY29tbWFuZAorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworQG1rZGlyX3BAIGlzIGV4cGFuZGVkIHRvIGhvc3QgdG9vbHMgcGF0aCAuLi9idWlsZC90bXAvaG9zdHRvb2xzL21rZGlyIHRoYXQKK2RvZXNuJ3QgZXhpc3Qgb24gdGFyZ2V0LiBSZW1vdmUgQG1rZGlyX3BAIGFuZCB1c2UgL2Jpbi9ta2RpciAtcCB0bworY3JlYXRlIC92YXIvcnVuL2xsZHBkIGRpcmVjdG9yeS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluIGIvc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluCitpbmRleCBmZGI3MzM4Li40MjkxODMwIDEwMDY0NAorLS0tIGEvc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluCisrKysgYi9zcmMvZGFlbW9uL2xsZHBkLnNlcnZpY2UuaW4KK0BAIC05LDcgKzksNyBAQCBUeXBlPW5vdGlmeQorIE5vdGlmeUFjY2Vzcz1tYWluCisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvbGxkcGQKKyBFbnZpcm9ubWVudEZpbGU9LS9ldGMvc3lzY29uZmlnL2xsZHBkCistRXhlY1N0YXJ0UHJlPUBta2Rpcl9wQCBAUFJJVlNFUF9DSFJPT1RACisrRXhlY1N0YXJ0UHJlPS9iaW4vbWtkaXIgLXAgQFBSSVZTRVBfQ0hST09UQAorIEV4ZWNTdGFydD1Ac2JpbmRpckAvbGxkcGQgJERBRU1PTl9BUkdTICRMTERQRF9PUFRJT05TCisgUmVzdGFydD1vbi1mYWlsdXJlCisgUHJpdmF0ZVRtcD15ZXMKKy0tIAorMi4xNC4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbGxkcGQvbGxkcGRfMC45LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbGxkcGQvbGxkcGRfMC45LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZDA2MzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2xsZHBkXzAuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIDgwMi4xYWIgaW1wbGVtZW50YXRpb24gKExMRFApIHRvIGhlbHAgeW91IGxvY2F0ZSBuZWlnaGJvcnMgb2YgYWxsIHlvdXIgZXF1aXBtZW50cyIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0lTQzttZDU9ZjNiOTBlNzhlYTBjZmZiMjBiZjVjY2E3OTQ3YTg5NmQiCi0KLURFUEVORFMgPSAibGliYnNkIGxpYmV2ZW50IgotCi1TUkNfVVJJID0gIlwKLSAgICBodHRwOi8vbWVkaWEubHVmZnkuY3gvZmlsZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9sbGRwZC5pbml0LmQgXAotICAgIGZpbGU6Ly9sbGRwZC5kZWZhdWx0IFwKLSAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZGNkZWU3YzFiM2M2MjM2MmQ3M2Y2NTA4YzExZWRhZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzRlMmRkN2UyYTIzM2NhMWZmMzg1YzkyNWRkYWUyYTkxNmQzMDI4MTlkMTQzMzc0MTQwN2QyZjhmYjBkZGQ4IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyBsbGRwZCAtLXNoZWxsIC9iaW4vZmFsc2UgbGxkcGQiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBsbGRwZCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZW1iZWRkZWQtbGliZXZlbnQgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb2xkaWVzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtdXNlcj1sbGRwZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLWdyb3VwPWxsZHBkIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdXNlcnNkaXIgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2RwIGZkcCBlZHAgc29ubXAgbGxkcG1lZCBkb3QxIGRvdDMiCi1QQUNLQUdFQ09ORklHW2pzb25dID0gIi0td2l0aC1qc29uLC0td2l0aG91dC1qc29uLGphbnNzb24iCi1QQUNLQUdFQ09ORklHW3htbF0gPSAiLS13aXRoLXhtbCwtLXdpdGhvdXQteG1sLGxpYnhtMiIKLVBBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS13aXRoLXNubXAsLS13aXRob3V0LXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItLXdpdGgtc2VjY29tcCwtLXdpdGhvdXQtc2VjY29tcCxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tjZHBdID0gIi0tZW5hYmxlLWNkcCwtLWRpc2FibGUtY2RwIgotUEFDS0FHRUNPTkZJR1tmZHBdID0gIi0tZW5hYmxlLWZkcCwtLWRpc2FibGUtZmRwIgotUEFDS0FHRUNPTkZJR1tlZHBdID0gIi0tZW5hYmxlLWVkcCwtLWRpc2FibGUtZWRwIgotUEFDS0FHRUNPTkZJR1tzb25tcF0gPSAiLS1lbmFibGUtc29ubXAsLS1kaXNhYmxlLXNvbm1wIgotUEFDS0FHRUNPTkZJR1tsbGRwbWVkXSA9ICItLWVuYWJsZS1sbGRwbWVkLC0tZGlzYWJsZS1sbGRwbWVkIgotUEFDS0FHRUNPTkZJR1tkb3QxXSA9ICItLWVuYWJsZS1kb3QxLC0tZGlzYWJsZS1kb3QxIgotUEFDS0FHRUNPTkZJR1tkb3QzXSA9ICItLWVuYWJsZS1kb3QzLC0tZGlzYWJsZS1kb3QzIgotUEFDS0FHRUNPTkZJR1tjdXN0b21dID0gIi0tZW5hYmxlLWN1c3RvbSwtLWRpc2FibGUtY3VzdG9tIgotCi1JTklUU0NSSVBUX05BTUUgPSAibGxkcGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxsZHBkLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9sbGRwZC5pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2xsZHBkCi0gICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2xsZHBkLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9sbGRwZAotICAgICMgTWFrZSBhbiBlbXB0eSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICB0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sbGRwZC5jb25mCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS16c2gtY29tcGxldGlvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zeXN1c2Vycy5kIgotUkRFUEVORFNfJHtQTn0gKz0gIm9zLXJlbGVhc2UiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uICs9ICIke2RhdGFkaXJ9L3pzaC8iCi0jIEZJWE1FOiB6c2ggaXMgYnJva2VuIGluIG1ldGEtb2Ugc28gdGhpcyBjYW5ub3QgYmUgZW5hYmxlZCBmb3Igbm93Ci0jUkRFUEVORFNfJHtQTn0tenNoLWNvbXBsZXRpb24gKz0gInpzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9sbGRwZF8wLjkuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9sbGRwZF8wLjkuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQ4NGNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2xsZHBkXzAuOS44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiQSA4MDIuMWFiIGltcGxlbWVudGF0aW9uIChMTERQKSB0byBoZWxwIHlvdSBsb2NhdGUgbmVpZ2hib3JzIG9mIGFsbCB5b3VyIGVxdWlwbWVudHMiCitTRUNUSU9OID0gIm5ldC9taXNjIgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9JU0M7bWQ1PWYzYjkwZTc4ZWEwY2ZmYjIwYmY1Y2NhNzk0N2E4OTZkIgorCitERVBFTkRTID0gImxpYmJzZCBsaWJldmVudCIKKworU1JDX1VSSSA9ICJcCisgICAgaHR0cDovL21lZGlhLmx1ZmZ5LmN4L2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vbGxkcGQuaW5pdC5kIFwKKyAgICBmaWxlOi8vbGxkcGQuZGVmYXVsdCBcCisgICAgZmlsZTovL3NyYy1kYWVtb24tbGxkcGQuc2VydmljZS5pbi1Vc2UtZml4ZWQtcGF0aC1mb3ItbWtkaXIucGF0Y2ggXAorICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjg4MDk2MDA0OTJmNmI3MzE0OWViMTkxNThlODE5YzFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllZTQ5NGU5MWJjMzM5Mzg1NzViMmMwOWIyNjE4OGM0ODZlZjhlYWM2ZTIxNTVkMjUwYzE4OWNjNGU5ODhjNGYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC1nIGxsZHBkIC0tc2hlbGwgL2Jpbi9mYWxzZSBsbGRwZCIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGxsZHBkIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1lbWJlZGRlZC1saWJldmVudCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vbGRpZXMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC11c2VyPWxsZHBkIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtZ3JvdXA9bGxkcGQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1zeXN1c2Vyc2RpciBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjZHAgZmRwIGVkcCBzb25tcCBsbGRwbWVkIGRvdDEgZG90MyIKK1BBQ0tBR0VDT05GSUdbeG1sXSA9ICItLXdpdGgteG1sLC0td2l0aG91dC14bWwsbGlieG0yIgorUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLXdpdGgtc25tcCwtLXdpdGhvdXQtc25tcCxuZXQtc25tcCIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0td2l0aC1zZWNjb21wLC0td2l0aG91dC1zZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2NkcF0gPSAiLS1lbmFibGUtY2RwLC0tZGlzYWJsZS1jZHAiCitQQUNLQUdFQ09ORklHW2ZkcF0gPSAiLS1lbmFibGUtZmRwLC0tZGlzYWJsZS1mZHAiCitQQUNLQUdFQ09ORklHW2VkcF0gPSAiLS1lbmFibGUtZWRwLC0tZGlzYWJsZS1lZHAiCitQQUNLQUdFQ09ORklHW3Nvbm1wXSA9ICItLWVuYWJsZS1zb25tcCwtLWRpc2FibGUtc29ubXAiCitQQUNLQUdFQ09ORklHW2xsZHBtZWRdID0gIi0tZW5hYmxlLWxsZHBtZWQsLS1kaXNhYmxlLWxsZHBtZWQiCitQQUNLQUdFQ09ORklHW2RvdDFdID0gIi0tZW5hYmxlLWRvdDEsLS1kaXNhYmxlLWRvdDEiCitQQUNLQUdFQ09ORklHW2RvdDNdID0gIi0tZW5hYmxlLWRvdDMsLS1kaXNhYmxlLWRvdDMiCitQQUNLQUdFQ09ORklHW2N1c3RvbV0gPSAiLS1lbmFibGUtY3VzdG9tLC0tZGlzYWJsZS1jdXN0b20iCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJsbGRwZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGxkcGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L2xsZHBkLmluaXQuZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbGxkcGQKKyAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vbGxkcGQuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2xsZHBkCisgICAgIyBNYWtlIGFuIGVtcHR5IGNvbmZpZ3VyYXRpb24gZmlsZQorICAgIHRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xsZHBkLmNvbmYKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXpzaC1jb21wbGV0aW9uIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3N5c3VzZXJzLmQiCitSREVQRU5EU18ke1BOfSArPSAib3MtcmVsZWFzZSIKKworRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gKz0gIiR7ZGF0YWRpcn0venNoLyIKKyMgRklYTUU6IHpzaCBpcyBicm9rZW4gaW4gbWV0YS1vZSBzbyB0aGlzIGNhbm5vdCBiZSBlbmFibGVkIGZvciBub3cKKyNSREVQRU5EU18ke1BOfS16c2gtY29tcGxldGlvbiArPSAienNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwL3VuaXN0ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cC91bmlzdGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4MTQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cC91bmlzdGQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorVGhpcyBwYXRjaCBpcyBuZWVkZWQgdG8gYXZvaWQgZG91YmxlIGRlZmluaXRpb25zIG9mIGZ1bmN0aW9ucworZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIHdpdGggc2VjdXJpdHkgZmxhZ3MgdHVybmVkIG9uLiBUaGUgZG91YmxlCitkZWZpbml0aW9ucyBjYXVzZXMgdGhlIHNlZC5zaCBzY3JpcHQgaW4gY29uZmlndXJlIHRvIGZhaWwgc2luY2UgaXQKK3N0YXJ0cyB0byBzcGl0IG91dCBkb3VibGUgb3V0cHV0cyBlLmcuCisKK3dpX2N2X2dldGhvc3RuYW1lX3NpemVfdCBzaXplX3Qgc2l6ZV90CisKK3doaWNoIHRoZW4gY2F1c2VkIGFsbW9zdCBhbGwgc3Vic2VxdWVudCBjb21waWxlIHRpbWUgdGVzdHMgdG8gZmFpbCBzaW5jZQordGhpcyBnZXRzIGludG8gY29uZmRlZnMuaCBmaWxlCisKK3JlbW92aW5nIHRoaXMgaW5jbHVkZSBjYXVzZXMgb25seSBvbmUgZGVmaW5pdGlvbnMgdG8gYmUgZW1pdHRlZCBpbnRvCit0aGUgZ2VucmF0ZWQgcHJvdG9zLmggZmlsZSBhbmQgdGh1cyBhdm9pZGluZyB0aGUgYWJvdmUgZmFpbHVyZS4KKworT3RoZXIgc29sdXRpb24gd291bGQgdG8gZml4IHNlZC5zaCB0byBpZ25vcmUgZG91YmxlIGRlZmluaXRpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2YtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKworSW5kZXg6IG5jZnRwLTMuMi42L2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5jZnRwLTMuMi42Lm9yaWcvY29uZmlndXJlCisrKysgbmNmdHAtMy4yLjYvY29uZmlndXJlCitAQCAtNzg1OSw3ICs3ODU5LDYgQEAgY2htb2QgNzU1ICIkd2lfdG1wZGlyL3BycHAucGwiCisgY2F0IDw8ICdFT0YnID4gIiR3aV90bXBkaXIvdW5pc3RkLmMiCisgI2luY2x1ZGUgPGNvbmZkZWZzLmg+CisgCistI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmNmdHAvbmNmdHBfMy4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmNmdHAvbmNmdHBfMy4yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5M2VhY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBzb3BoaXN0aWNhdGVkIGNvbnNvbGUgZnRwIGNsaWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9uY2Z0cC5jb20vIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkNsQXJ0aXN0aWMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uY2Z0cC9jbWRzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT00O21kNT05ZGU3NmZhZWFlZGM0ZjkwODA4MmUzZjgxNDI3MTVmNCIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25jZnRwLWNvbmZpZ3VyZS11c2UtQlVJTERfQ0MtZm9yLWNjZHYucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjY4NWU0NWY2MGFjMTFjODk0NDJjNTcyYzI4YWY0MjI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjMTExYjcxMTEyMzgyODUzYjI4MzVjNDJlYmU3YmQ1OWFjYjdmODVkZDAwZDQ0YjJjMTlmYmQwNzRhNDM2YzQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbY2Nkdl0gPSAiLS1lbmFibGUtY2NkdiwtLWRpc2FibGUtY2NkdiwsIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgb2VfcnVuY29uZgotfQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9ICR7RH0ke21hbmRpcn0KLSAgICBvZV9ydW5tYWtlICdwcmVmaXg9JHtEfSR7cHJlZml4fScgJ0JJTkRJUj0ke0R9JHtiaW5kaXJ9JyBcCi0gICAgICAgICdTWVNDT05GRElSPSR7RH0ke3N5c2NvbmZkaXJ9JyAnbWFuZGlyPSR7RH0ke21hbmRpcn0nIFwKLSAgICAgICAgaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmOTJmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmNmdHAvbmNmdHBfMy4yLjYuYmIKQEAgLTAsMCArMSwzNSBAQAorREVTQ1JJUFRJT04gPSAiQSBzb3BoaXN0aWNhdGVkIGNvbnNvbGUgZnRwIGNsaWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9uY2Z0cC5jb20vIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkNsQXJ0aXN0aWMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uY2Z0cC9jbWRzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT00O21kNT05YzIzOTA4MDlmNzE0NjVhYTdmZjc2ZTAzZGMxNGQ5MSIKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAubmNmdHAuY29tLyR7QlBOfS8ke0JQfS1zcmMudGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25jZnRwLWNvbmZpZ3VyZS11c2UtQlVJTERfQ0MtZm9yLWNjZHYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdW5pc3RkLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmQwZjg5NmQ2OWE0ZDYwM2VjMDk3NTQ2NDQ0MjQ1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZjIwMDY4N2MwNWQwODA3NjkwZDlmYjc3MDMyN2IyMjZmMDJkZDg2MTU1YjQ5ZTc1MDg1M2ZjZTRlMzEwOThkIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK0NGTEFHUyArPSAiLUROT19TU0x2MiAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1XYWxsIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tjY2R2XSA9ICItLWVuYWJsZS1jY2R2LC0tZGlzYWJsZS1jY2R2LCwiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHJlY29tcCIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorCitkb19jb25maWd1cmUoKSB7CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisgICAgb2VfcnVuY29uZgorfQorZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9ICR7RH0ke21hbmRpcn0KKyAgICBvZV9ydW5tYWtlICdwcmVmaXg9JHtEfSR7cHJlZml4fScgJ0JJTkRJUj0ke0R9JHtiaW5kaXJ9JyBcCisgICAgICAgICdTWVNDT05GRElSPSR7RH0ke3N5c2NvbmZkaXJ9JyAnbWFuZGlyPSR7RH0ke21hbmRpcn0nIFwKKyAgICAgICAgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1GaXgtYnVpbGQtZmFpbHVyZXMtd2l0aC1nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1GaXgtYnVpbGQtZmFpbHVyZXMtd2l0aC1nY2M3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNDkzZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLUZpeC1idWlsZC1mYWlsdXJlcy13aXRoLWdjYzcucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAzOThjNmRiNjZjNjQzZWQ2MTMzY2MyYjAyOGFiMWUyN2ExN2M1Mjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMSBNYXkgMjAxNyAxOToxMDowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgZmFpbHVyZXMgd2l0aCBnY2M3CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9tY192ZW5kb3IuY3BwIHwgMiArLQorIHBsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcCAgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX21jX3ZlbmRvci5jcHAgYi9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9tY192ZW5kb3IuY3BwCitpbmRleCAyYzZjMDkwLi41NTc3NzFjIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcAorKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcAorQEAgLTMyMiw3ICszMjIsNyBAQCBjSXBtaU1jVmVuZG9yOjpDcmVhdGVSZXNvdXJjZXMoIGNJcG1pRG9tYWluICpkb21haW4sIGNJcG1pTWMgKnNvdXJjZV9tYywgY0lwbWlTZAorICAgICAgIGlmICggYWRkci5tX2NoYW5uZWwgIT0gc291cmNlX21jLT5HZXRDaGFubmVsKCkgKSAKKyAgICAgICAgICAgc3RkbG9nIDw8ICJXQVJOSU5HIDogU0RSIGNoYW5uZWwgIiA8PCBhZGRyLm1fY2hhbm5lbCA8PCAiIE5PVCBlcXVhbCB0byBNQyBjaGFubmVsICIgPDwgc291cmNlX21jLT5HZXRDaGFubmVsKCkgPDwgIlxuIjsKKyAKKy0gICAgICAgaWYgKCBGaW5kT3JDcmVhdGVSZXNvdXJjZSggZG9tYWluLCBzb3VyY2VfbWMsIGZydV9pZCwgc2RyLCBzZHJzICkgPT0gZmFsc2UgKSB7CisrICAgICAgIGlmICggIUZpbmRPckNyZWF0ZVJlc291cmNlKCBkb21haW4sIHNvdXJjZV9tYywgZnJ1X2lkLCBzZHIsIHNkcnMgKSApIHsKKyAJICAgIHJldHVybiBmYWxzZTsKKyAJfQorICAgICAgfQorZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcCBiL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcAoraW5kZXggYzQzOGU3NC4uMjU1MjY3MyAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcAorKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfcmVzb3VyY2UuY3BwCitAQCAtNzMsNyArNzMsNyBAQCBjSXBtaVJlc291cmNlOjpTZW5kQ29tbWFuZFJlYWRMb2NrKCBjb25zdCBjSXBtaU1zZyAmbXNnLCBjSXBtaU1zZyAmcnNwLAorIAorICAgZG9tYWluLT5SZWFkTG9jaygpOworIAorLSAgaWYgKCBkb21haW4tPlZlcmlmeVJlc291cmNlKCByZXNvdXJjZSApID09IGZhbHNlICkKKysgIGlmICggIWRvbWFpbi0+VmVyaWZ5UmVzb3VyY2UoIHJlc291cmNlICkgKQorICAgICAgICByZXR1cm4gU0FfRVJSX0hQSV9OT1RfUFJFU0VOVDsKKyAKKyAgIHJldHVybiBydjsKK0BAIC05MSw3ICs5MSw3IEBAIGNJcG1pUmVzb3VyY2U6OlNlbmRDb21tYW5kUmVhZExvY2soIGNJcG1pUmRyICpyZHIsIGNvbnN0IGNJcG1pTXNnICZtc2csIGNJcG1pTXNnCisgICAKKyAgIGRvbWFpbi0+UmVhZExvY2soKTsKKyAgIAorLSAgaWYgKCBkb21haW4tPlZlcmlmeVJkciggcmRyICkgPT0gZmFsc2UgKQorKyAgaWYgKCAhZG9tYWluLT5WZXJpZnlSZHIoIHJkciApICkKKyAgICAgICAgcmV0dXJuIFNBX0VSUl9IUElfTk9UX1BSRVNFTlQ7CisgCisgICByZXR1cm4gcnY7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1pcG1pZGlyZWN0LVJlcGxhY2UtX19TVFJJTkcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ1NmY2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYmU0MGIzZjExNDYwY2Y0OTViYmJlZjQ1NjkyZTc3NjNhZmRhMGMyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDE3OjU2OjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGlwbWlkaXJlY3Q6IFJlcGxhY2UgX19TVFJJTkcKKworX19TVFJJTkcgaXMgbm90IHVuaXZlcnNhbGx5IGF2YWlsYWJsZSBlLmcuCittdXNsIGRvZXMgbm90IGRlZmluZSBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHBsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaCBiL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaAoraW5kZXggOGQ3MTM4MS4uOTc4ZDVmZiAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaAorKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3QvdGVzdC5oCitAQCAtMjIsNyArMjIsNyBAQCBUZXN0RnVuY3Rpb24oIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGJvb2wgZXhwciApCisgfQorIAorIAorLSNkZWZpbmUgVGVzdChleHByKSBUZXN0RnVuY3Rpb24oIF9fU1RSSU5HKGV4cHIpLCBfX0ZJTEVfXywgX19MSU5FX18sIGV4cHIgKQorKyNkZWZpbmUgVGVzdChleHByKSBUZXN0RnVuY3Rpb24oICNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIGV4cHIgKQorIAorIAorIHN0YXRpYyBpbnQKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtcGx1Z2lucy1DaGVjay1mb3ItUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtcGx1Z2lucy1DaGVjay1mb3ItUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjAzM2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1wbHVnaW5zLUNoZWNrLWZvci1QVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gYmU2NjVkOTUxM2NjYTdlOGI2NGM3OWFlNDI0Y2Y0NGFjMTY2YjA1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDE3OjA3OjU4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBsdWdpbnM6IENoZWNrIGZvciBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAorIGJlZm9yZSB1c2UKKworbXVzbCBkb2VzIG5vdCBkZWZpbmUgUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAKK3NvIHdlIGNhbiBub3QgYXNzdW1lIHRoYXQgYWxsIExpbnV4IHN5c3RlbXMgc3VwcG9ydCBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAoraXRzIGEgZ2xpYmMgc3BlY2lmaWMgZGVmaW5lIHNvIGNoZWNrIGZvciBpdCBiZWluZyBkZWZpbmVkIGJlZm9yZSB1c2luZyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHBsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvdGhyZWFkLmNwcCB8IDIgKy0KKyBwbHVnaW5zL2lwbWlkaXJlY3QvdGhyZWFkLmNwcCAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAgYi9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAKK2luZGV4IGQ2NjNiZTAuLjkyMTBmZDcgMTAwNjQ0CistLS0gYS9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAKKysrKyBiL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvdGhyZWFkLmNwcAorQEAgLTIyOSw3ICsyMjksNyBAQCBjVGhyZWFkOjpFeGl0KCB2b2lkICpydiApCisgLyoqCisgICogQ29uc3RydWN0b3IKKyAgKiovCistI2lmICggZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpICkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKKysjaWZuZGVmIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QCisgY1RocmVhZExvY2s6OmNUaHJlYWRMb2NrKCkKKyB7CisgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7CitkaWZmIC0tZ2l0IGEvcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAgYi9wbHVnaW5zL2lwbWlkaXJlY3QvdGhyZWFkLmNwcAoraW5kZXggNWM1MjU1Ny4uNDhlODNmYSAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC90aHJlYWQuY3BwCisrKysgYi9wbHVnaW5zL2lwbWlkaXJlY3QvdGhyZWFkLmNwcAorQEAgLTE2Nyw3ICsxNjcsNyBAQCBjVGhyZWFkOjpFeGl0KCB2b2lkICpydiApCisgLy8gICAgICAgICAgICAgICAgICBjVGhyZWFkTG9jaworIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgCistI2lmICggZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpICkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykKKysjaWZuZGVmIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QCisgY1RocmVhZExvY2s6OmNUaHJlYWRMb2NrKCkKKyB7CisgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jKysxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2MrKzExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NDlkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jKysxMS5wYXRjaApAQCAtMCwwICsxLDEyIEBACitJbmRleDogb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKK0BAIC00NCw2ICs0NCw3IEBAIEFDX1BST0dfQ1BQCisgQUNfUFJPR19JTlNUQUxMCisgQUNfUFJPR19MTl9TCisgQUNfUFJPR19NQUtFX1NFVAorK0FYX0NYWF9DT01QSUxFX1NURENYWF8xMShbbm9leHRdLFttYW5kYXRvcnldKQorIAorIGVuYWJsZWRfbm9uMzJiaXQ9Im5vIgorIEFDX0FSR19FTkFCTEUoW25vbjMyYml0LWludF0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jbGFuZy1jKysxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2NsYW5nLWMrKzExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMzVhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jbGFuZy1jKysxMS5wYXRjaApAQCAtMCwwICsxLDEyODggQEAKK0luZGV4OiBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvbmV3X3NpbS5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltLmNwcAorKysrIG9wZW5ocGktMy42LjEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltLmNwcAorQEAgLTQxNSw3ICs0MTUsNyBAQCBleHRlcm4gIkMiIHsKKyAvKioKKyAgKiBBbGlhcyBmb3IgQHJlZiDDtmhfb3BlbigpLCBpbXBsZW1lbnRlZCBieSBAcmVmIE5ld1NpbXVsYXRvck9wZW4oKS4KKyAgKiovCistc3RhdGljIHZvaWQgKiBOZXdTaW11bGF0b3JPcGVuKCBHSGFzaFRhYmxlICosIHVuc2lnbmVkIGludCwgb2hfZXZ0X3F1ZXVlICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7Cisrc3RhdGljIHZvaWQgKiBOZXdTaW11bGF0b3JPcGVuKCBHSGFzaFRhYmxlICosIHVuc2lnbmVkIGludCwgb2hfZXZ0X3F1ZXVlICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JPcGVuIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIC8qKgorICAqIEBmbiBOZXdTaW11bGF0b3JPcGVuKCBHSGFzaFRhYmxlICpoYW5kbGVyX2NvbmZpZywgdW5zaWduZWQgaW50IGhpZCwgCitAQCAtNTMwLDcgKzUzMCw3IEBAIHN0YXRpYyB2b2lkICogTmV3U2ltdWxhdG9yT3BlbiggR0hhc2hUYWIKKyAvKioKKyAgKiBBbGlhcyBmb3IgQHJlZiDDtmhfY2xvc2UoKSwgaW1wbGVtZW50ZWQgYnkgQHJlZiBOZXdTaW11bGF0b3JDbG9zZSgpLgorICAqKi8KKy1zdGF0aWMgdm9pZCBOZXdTaW11bGF0b3JDbG9zZSggdm9pZCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyB2b2lkIE5ld1NpbXVsYXRvckNsb3NlKCB2b2lkICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JDbG9zZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyAvKioKKyAgKiBAcmVsYXRlIE5ld1NpbXVsYXRvckNsb3NlCitAQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyB2b2lkIE5ld1NpbXVsYXRvckNsb3NlKCB2b2lkICpobmQKKyAgKiAKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRFdmVudCggdm9pZCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRFdmVudCggdm9pZCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RXZlbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEV2ZW50KCB2b2lkICpobmQgKSB7CisgICAgZGJnKCAiTmV3U2ltdWxhdG9yR2V0RXZlbnQiICk7CitAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRFdmVudCggdm8KKyAgKiAKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yRGlzY292ZXJSZXNvdXJjZXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRpc2NvdmVyUmVzb3VyY2VzKCB2b2lkICpobmQgKSB7CisgICAgZGJnKCAiTmV3U2ltdWxhdG9yRGlzY292ZXJSZXNvdXJjZXMiICk7CitAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEaXNjb3ZlclJlc28KKyAgKiAKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVRhZyggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRleHRCdWZmZXJUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7Cisrc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFJlc291cmNlVGFnKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpVGV4dEJ1ZmZlclQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFJlc291cmNlVGFnIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVRhZyggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRleHRCdWZmZXJUICp0YWcgKSB7CitAQCAtNjY5LDcgKzY2OSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVQKKyAgKiAKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVNldmVyaXR5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpU2V2ZXJpdHlUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVNldmVyaXR5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpU2V2ZXJpdHlUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VTZXZlcml0eSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VTZXZlcml0eSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlUIHNldiApIHsKK0BAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvclJlYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvclJlYWRpbmdUICpkYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqc3RhdGUgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICpzdGF0ZSApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFNlbnNvclJlYWRpbmciKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvclJlYWRpbmcoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtNzM4LDcgKzczOCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JSZWEKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yVGhyZXNob2xkc1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZW5zb3JUaHJlc2hvbGRzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTc3Nyw3ICs3NzcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yVGhyCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvclRocmVzaG9sZHMoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRTZW5zb3JUaHJlc2hvbGRzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTgxNSw3ICs4MTUsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yVGhyCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvckVuYWJsZSggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2Vuc29yRW5hYmxlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFbmFibGUoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC04NDksNyArODQ5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvckVuYQorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JFbmFibGUoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0U2Vuc29yRW5hYmxlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JFbmFibGUoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC04ODMsNyArODgzLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvckVuYQorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmVudEVuYWJsZXMoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFNlbnNvckV2ZW50RW5hYmxlcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtOTE2LDcgKzkxNiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmUKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFNlbnNvckV2ZW50RW5hYmxlcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtOTUyLDcgKzk1Miw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmVudE1hc2tzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTk5MCw3ICs5OTAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvckV2ZW50TWFza0FjdGlvblQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRTZW5zb3JFdmVudE1hc2tzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEwMjYsNyArMTAyNiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JFdmUKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0Q29udHJvbFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE51bVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE1vZGVUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxTdGF0ZVQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldENvbnRyb2xTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0Q29udHJvbFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE51bVQgbnVtLAorQEAgLTEwNjEsNyArMTA2MSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRDb250cm9sU3QKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0Q29udHJvbFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE51bVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE1vZGVULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRDb250cm9sU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldENvbnRyb2xTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1UIG51bSwKK0BAIC0xMDk5LDcgKzEwOTksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0TmV4dEFubm91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubm91bmNlbWVudFQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5ub3VuY2VtZW50VCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXROZXh0QW5ub3VuY2VtZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0TmV4dEFubm91bmNlbWVudCh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQgbnVtLAorQEAgLTExMzUsNyArMTEzNSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXROZXh0QW5ub3UKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QW5ub3VuY2VtZW50KHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5ub3VuY2VtZW50VCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm5vdW5jZW1lbnRUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEFubm91bmNlbWVudCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEFubm91bmNlbWVudCh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UICBudW0sIAorQEAgLTExNzEsNyArMTE3MSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRBbm5vdW5jZW0KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWNrQW5ub3VuY2VtZW50KHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlUKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZXZlcml0eVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvckFja0Fubm91bmNlbWVudCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFja0Fubm91bmNlbWVudCh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UICBudW0sIAorQEAgLTEyMDUsNyArMTIwNSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBY2tBbm5vdW5jZW0KKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZEFubm91bmNlbWVudCh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubm91bmNlbWVudFQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5ub3VuY2VtZW50VCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBZGRBbm5vdW5jZW1lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZEFubm91bmNlbWVudCh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UICBudW0sIAorQEAgLTEyMzksNyArMTIzOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRBbm5vdW5jZW0KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsQW5ub3VuY2VtZW50KHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlUKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZXZlcml0eVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvckRlbEFubm91bmNlbWVudCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsQW5ub3VuY2VtZW50KHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQgIG51bSwgCitAQCAtMTI3Myw3ICsxMjczLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbEFubm91bmNlbQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QW5uTW9kZSh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JNb2RlVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck1vZGVUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEFubk1vZGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEFubk1vZGUodm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCAgbnVtLCAKK0BAIC0xMzA2LDcgKzEzMDYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QW5uTW9kZSh2CisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRBbm5Nb2RlKHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck1vZGVUKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck1vZGVUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRBbm5Nb2RlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRBbm5Nb2RlKHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQgIG51bSwKK0BAIC0xMzQwLDcgKzEzNDAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QW5uTW9kZSh2Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckluZm8oIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRySW5mb1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRySW5mb1QgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldElkckluZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckluZm8oIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTM4MCw3ICsxMzgwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckFyZWFIZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhVHlwZVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhSGVhZGVyVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhSGVhZGVyVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0SWRyQXJlYUhlYWRlciIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SWRyQXJlYUhlYWRlciggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDE5LDcgKzE0MTksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyQXJlYSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYVR5cGVULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkSWRyQXJlYSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyQXJlYSggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDU2LDcgKzE0NTYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyQXJlYUJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckFyZWFUeXBlVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkSWRyQXJlYUJ5SWQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckFyZWFCeUlkKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE0OTAsNyArMTQ5MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJBcmVhQnkKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsSWRyQXJlYSggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JEZWxJZHJBcmVhIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEZWxJZHJBcmVhKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE1MzIsNyArMTUzMiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJZHJGaWVsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVHlwZVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0SWRyRmllbGQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckZpZWxkKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNTcwLDcgKzE1NzAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SWRyRmllbGQoCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckZpZWxkKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBZGRJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyRmllbGQoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE2MDQsNyArMTYwNCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJGaWVsZCgKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyRmllbGRCeUlkKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBZGRJZHJGaWVsZEJ5SWQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckZpZWxkQnlJZCggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTYzNyw3ICsxNjM3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckZpZWxkQgorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRJZHJGaWVsZCggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0SWRyRmllbGQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldElkckZpZWxkKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNjcyLDcgKzE2NzIsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsSWRyRmllbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvckRlbElkckZpZWxkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEZWxJZHJGaWVsZCggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTcwNCw3ICsxNzA0LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbElkckZpZWxkKAorICAqKi8gCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEluZm8oIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nSW5mb1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dJbmZvVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2VsSW5mbyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsSW5mbyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNzM2LDcgKzE3MzYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsSW5mbygKKyAgKiAKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLyAKKy1zdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2VsVGltZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRpbWVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZWxUaW1lKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpVGltZVQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRTZWxUaW1lIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZWxUaW1lKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIFNhSHBpVGltZVQgdCApIHsKKyAgICBTYUVycm9yVCBydiA9IFNBX0VSUl9IUElfSU5URVJOQUxfRVJST1I7CitAQCAtMTc2Niw3ICsxNzY2LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbFRpbWUoCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8gCistc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZFNlbEVudHJ5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIGNvbnN0IFNhSHBpRXZlbnRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7Cisrc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZFNlbEVudHJ5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIGNvbnN0IFNhSHBpRXZlbnRUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBZGRTZWxFbnRyeSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkU2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaUV2ZW50VCAqRXZlbnQgKSB7CitAQCAtMTgwOSw3ICsxODA5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEVudHJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeUlkVCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeVQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJkclQgKiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJwdEVudHJ5VCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUnB0RW50cnlUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZWxFbnRyeSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nRW50cnlJZFQgY3VycmVudCwKK0BAIC0xODQ0LDcgKzE4NDQsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsRW50cnkoCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8gCistc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNsZWFyU2VsKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7Cisrc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNsZWFyU2VsKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JDbGVhclNlbCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2xlYXJTZWwoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCApIHsKKyAgICBTYUVycm9yVCBydiA9IFNBX0VSUl9IUElfSU5URVJOQUxfRVJST1I7CitAQCAtMTg3NSw3ICsxODc1LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNsZWFyU2VsKCB2bworICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZWxTdGF0ZSh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0U2VsU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCBzdGF0ZSApIHsKK0BAIC0xOTA3LDcgKzE5MDcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2VsU3RhdGUoCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8gCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbFN0YXRlKHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2VsU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqc3RhdGUgKSB7CitAQCAtMTkzOSw3ICsxOTM5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbFN0YXRlKAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxDYXBhYmlsaXR5KHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nQ2FwYWJpbGl0aWVzVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nQ2FwYWJpbGl0aWVzVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZWxDYXBhYmlsaXR5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxDYXBhYmlsaXR5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0NhcGFiaWxpdGllc1QgKmNhcHMgKSB7CitAQCAtMTk3MCw3ICsxOTcwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbENhcGFiaQorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXNldFNlbE92ZXJmbG93KHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCkgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fKCJOZXdTaW11bGF0b3JSZXNldFNlbE92ZXJmbG93IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXNldFNlbE92ZXJmbG93KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQgKSB7CisgCitAQCAtMjAwMiw3ICsyMDAyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclJlc2V0U2VsT3ZlcgorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckhvdHN3YXBQb2xpY3lDYW5jZWwoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hc21fXygiTmV3U2ltdWxhdG9ySG90c3dhcFBvbGljeUNhbmNlbCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9ySG90c3dhcFBvbGljeUNhbmNlbCggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCB0aW1lb3V0KSB7CitAQCAtMjAzMiw3ICsyMDMyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckhvdHN3YXBQb2xpYworICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEhvdHN3YXBTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRIb3Rzd2FwU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEhvdHN3YXBTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICpzdGF0ZSApIHsKK0BAIC0yMDYzLDcgKzIwNjMsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SG90c3dhcFN0CisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0SG90c3dhcFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRIb3Rzd2FwU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEhvdHN3YXBTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUIHN0YXRlICkgeworQEAgLTIxMDUsNyArMjEwNSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRIb3Rzd2FwU3QKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXF1ZXN0SG90c3dhcEFjdGlvbiggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNBY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNBY3Rpb25UICkgX19hc21fXygiTmV3U2ltdWxhdG9yUmVxdWVzdEhvdHN3YXBBY3Rpb24iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclJlcXVlc3RIb3Rzd2FwQWN0aW9uKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0FjdGlvblQgYWN0ICkgeworQEAgLTIxMzksNyArMjEzOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXF1ZXN0SG90c3cKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0V2F0Y2hkb2dJbmZvKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRXYXRjaGRvZ0luZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFdhdGNoZG9nSW5mbyh2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgaWQsCitAQCAtMjE3MCw3ICsyMTcwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFdhdGNoZG9nSQorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRXYXRjaGRvZ0luZm8odm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFdhdGNoZG9nSW5mbyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0V2F0Y2hkb2dJbmZvKHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwKK0BAIC0yMTk5LDcgKzIxOTksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0V2F0Y2hkb2dJCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXNldFdhdGNoZG9nKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclJlc2V0V2F0Y2hkb2ciKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclJlc2V0V2F0Y2hkb2codm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwKK0BAIC0yMjI5LDcgKzIyMjksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVzZXRXYXRjaGRvCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTcGVjKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pU3BlY0luZm9UICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVNwZWNJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pU3BlYyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNwZWModm9pZCAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgaWQsIAorQEAgLTIyNjAsNyArMjI2MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU3BlYygKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNlcnZJbXBhY3Qodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlTZXJ2aWNlSW1wYWN0RGF0YVQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pU2VydmljZUltcGFjdERhdGFUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlTZXJ2SW1wYWN0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU2VydkltcGFjdCh2b2lkICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICAgICAgICAgIGlkLCAKK0BAIC0yMjk0LDcgKzIyOTQsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVNvdXJjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGV4dEJ1ZmZlclQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRleHRCdWZmZXJUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldEZ1bWlTb3VyY2UiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRGdW1pU291cmNlKHZvaWQgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgIGlkLCAKK0BAIC0yMzI3LDcgKzIzMjcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVNvdXJjCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclZhbGlkYXRlRnVtaVNvdXJjZSh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JWYWxpZGF0ZUZ1bWlTb3VyY2UiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclZhbGlkYXRlRnVtaVNvdXJjZSh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjM2MSw3ICsyMzYxLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTb3VyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlTb3VyY2VJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVNvdXJjZUluZm9UICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlTb3VyY2UiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU291cmNlKHZvaWQgICAgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgIGlkLCAKK0BAIC0yNDAwLDcgKzI0MDAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNvdXJjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUNvbXBvbmVudEluZm9UICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUNvbXBvbmVudEluZm9UICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlTb3VyY2VDb21wb25lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTb3VyY2VDb21wb25lbnQodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yNDM3LDcgKzI0MzcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUJhbmtJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUJhbmtJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pVGFyZ2V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pVGFyZ2V0KHZvaWQgICAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgaWQsIAorQEAgLTI0NzYsNyArMjQ3Niw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pVGFyZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICosIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlDb21wb25lbnRJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUNvbXBvbmVudEluZm9UICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlUYXJnZXRDb21wb25lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdldENvbXBvbmVudCh2b2lkICAgICAgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgICAgIGlkLCAKK0BAIC0yNTExLDcgKzI1MTEsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdlCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlMb2dpY2FsVGFyZ2V0KHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTG9naWNhbEJhbmtJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlMb2dpY2FsQmFua0luZm9UICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlMb2dpY2FsVGFyZ2V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pTG9naWNhbFRhcmdldCh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTI1NDcsNyArMjU0Nyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pTG9naWMKKyAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICosIAorLSAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlMb2dpY2FsQ29tcG9uZW50SW5mb1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlMb2dpY2FsQ29tcG9uZW50SW5mb1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RnVtaUxvZ2ljYWxUYXJnZXRDb21wb25lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaUxvZ2ljYWxUYXJnZXRDb21wb25lbnQodm9pZCAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI1NzksNyArMjU3OSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pTG9naWMKKyAgKiovICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhY2t1cCh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTdGFydEZ1bWlCYWNrdXAiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhY2t1cCh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjYxMiw3ICsyNjEyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlCYW5rTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVVpbnQzMlQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlVaW50MzJUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRGdW1pQmFua09yZGVyIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRGdW1pQmFua09yZGVyKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjY0Nyw3ICsyNjQ3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU3RhcnRGdW1pQmFua0NvcHkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pQmFua0NvcHkodm9pZCAgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgIGlkLCAKK0BAIC0yNjgwLDcgKzI2ODAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pQmFuCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUluc3RhbGwodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RnVtaUluc3RhbGwiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlJbnN0YWxsKHZvaWQgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgIGlkLCAKK0BAIC0yNzE0LDcgKzI3MTQsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVN0YXR1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVVwZ3JhZGVTdGF0dXNUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pVXBncmFkZVN0YXR1c1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RnVtaVN0YXR1cyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTdGF0dXModm9pZCAgICAgICAgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICAgICAgaWQsIAorQEAgLTI3NDcsNyArMjc0Nyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU3RhdHUKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyaWZpY2F0aW9uKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbiIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyaWZpY2F0aW9uKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yNzc2LDcgKzI3NzYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyCisgICoqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbk1haW4odm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyaWZpY2F0aW9uTWFpbiIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyaWZpY2F0aW9uTWFpbih2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI4MDcsNyArMjgwNyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlWZXIKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2FuY2VsRnVtaVVwZ3JhZGUodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JDYW5jZWxGdW1pVXBncmFkZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDYW5jZWxGdW1pVXBncmFkZSh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yODM4LDcgKzI4MzgsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2FuY2VsRnVtaVVwCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlSb2xsYmFjayh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RnVtaVJvbGxiYWNrIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pUm9sbGJhY2sodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI4NzAsNyArMjg3MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pUm9sbGIKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVJvbGxiYWNrKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldEZ1bWlSb2xsYmFjayIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVJvbGxiYWNrKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yOTAwLDcgKzI5MDAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVJvbGxiCisgICoqLyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVJvbGxiYWNrKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RnVtaVJvbGxiYWNrIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlSb2xsYmFjayh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjkyOSw3ICsyOTI5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVJvbAorICAqKi8gICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFjdGl2YXRlRnVtaSh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBY3RpdmF0ZUZ1bWkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFjdGl2YXRlRnVtaSh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjk2MCw3ICsyOTYwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFjdGl2YXRlRnVtaQorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlBY3RpdmF0aW9uKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTdGFydEZ1bWlBY3RpdmF0aW9uIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlBY3RpdmF0aW9uKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjk5Miw3ICsyOTkyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUFjdAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhbnVwRnVtaSh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvckNsZWFudXBGdW1pIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNsZWFudXBGdW1pKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTMwMjMsNyArMzAyMyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhbnVwRnVtaSgKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaUluZm8oIHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pSW5mb1QgKikgIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlJbmZvVCAqKSAgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RGltaUluZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlJbmZvKCB2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMzA1Nyw3ICszMDU3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0SQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdE51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFQgKikgIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3RUICopICBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXREaW1pVGVzdEluZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RJbmZvKCB2b2lkICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgIGlkLCAKK0BAIC0zMDkyLDcgKzMwOTIsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVJlYWR5VCAqKSAgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlSZWFkeVQgKikgIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldERpbWlUZXN0UmVhZGluZXNzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdFJlYWRpbmVzcyggdm9pZCAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICBpZCwgCitAQCAtMzEyOSw3ICszMTI5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RGltaVRlcworICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3ROdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVWludDhULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0VmFyaWFibGVQYXJhbXNUICopICBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFZhcmlhYmxlUGFyYW1zVCAqKSAgX19hc21fXygiTmV3U2ltdWxhdG9yU3RhcnREaW1pVGVzdCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnREaW1pVGVzdCggdm9pZCAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgICAgICAgICAgIGlkLCAKK0BAIC0zMTYzLDcgKzMxNjMsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnREaW1pVGVzCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNhbmNlbERpbWlUZXN0KCB2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3ROdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yQ2FuY2VsRGltaVRlc3QiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNhbmNlbERpbWlUZXN0KCB2b2lkICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwgCitAQCAtMzE5OSw3ICszMTk5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0UworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3ROdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0UGVyY2VudENvbXBsZXRlZFQgKiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0UnVuU3RhdHVzVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFJ1blN0YXR1c1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RTdGF0dXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0U3RhdHVzKCB2b2lkICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgICAgICAgICAgICAgaWQsIAorQEAgLTMyMzQsNyArMzIzNCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdFIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0UmVzdWx0c1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFJlc3VsdHNUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldERpbWlUZXN0UmVzdWx0cyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RSZXN1bHRzKCB2b2lkICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICAgICBpZCwgCitAQCAtMzI2Myw3ICszMjYzLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0UgorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICosIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRBdXRvSW5zZXJ0VGltZW91dCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QXV0b0luc2VydFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlUaW1lb3V0VCAgdGltZW91dCkgeworICAgIE5ld1NpbXVsYXRvciAqbmV3c2ltID0gVmVyaWZ5TmV3U2ltdWxhdG9yKCBobmQgKTsKK0BAIC0zMjg5LDcgKzMyODksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QXV0b0luc2VyCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0QXV0b0V4dHJhY3RUaW1lb3V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCAqdGltZW91dCApIHsKK0BAIC0zMzE5LDcgKzMzMTksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QXV0b0V4dHJhCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRBdXRvRXh0cmFjdFRpbWVvdXQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUIHRpbWVvdXQgKSB7CitAQCAtMzM1MCw3ICszMzUwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9FeHRyYQorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFBvd2VyU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFBvd2VyU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFBvd2VyU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKnN0YXRlICkgeworQEAgLTMzODIsNyArMzM4Miw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRQb3dlclN0YXQKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRQb3dlclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlQb3dlclN0YXRlVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFBvd2VyU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFBvd2VyU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgc3RhdGUgKSB7CitAQCAtMzQxNCw3ICszNDE0LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFBvd2VyU3RhdAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEluZGljYXRvclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0luZGljYXRvclN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEluZGljYXRvclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKnN0YXRlICkgeworQEAgLTM0NDYsNyArMzQ0Niw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJbmRpY2F0b3IKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0luZGljYXRvclN0YXRlVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldEluZGljYXRvclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgc3RhdGUgKSB7CitAQCAtMzQ3OSw3ICszNDc5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEluZGljYXRvcgorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ29udHJvbFBhcm0oIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUGFybUFjdGlvblQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlQYXJtQWN0aW9uVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvckNvbnRyb2xQYXJtIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDb250cm9sUGFybSggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMzUxMiw3ICszNTEyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNvbnRyb2xQYXJtKAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFJlc2V0U3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzZXRBY3Rpb25UICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0UmVzZXRTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0UmVzZXRTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKmFjdCApIHsKK0BAIC0zNTQ1LDcgKzM1NDUsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0UmVzZXRTdGF0CisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNldFN0YXRlKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFJlc2V0U3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFJlc2V0U3RhdGUoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitJbmRleDogb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL25ld19zaW1fZmlsZS5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltX2ZpbGUuY3BwCisrKysgb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL25ld19zaW1fZmlsZS5jcHAKK0BAIC00NCw5ICs0NCw5IEBACisgLy8vPCBHbG9iYWwgc2tpcCBjaGFyYWN0ZXJzIGZvciBvaF9zY2FubmVyX2NvbmZpZworIHN0YXRpYyBnY2hhciBza2lwX2NoYXJhY3RlcnNbXSA9ICIgXHRcbiI7ICAKKyAvLy88IEdsb2JhbCBpZGVudGlmaWVyX2ZpcnN0IGZvciBvaF9zY2FubmVyX2NvbmZpZworLXN0YXRpYyBnY2hhciBpZGVudGlmaWVyX2ZpcnN0W10gPSBHX0NTRVRfYV8yX3oiXy8uIkdfQ1NFVF9BXzJfWjsgCisrc3RhdGljIGdjaGFyIGlkZW50aWZpZXJfZmlyc3RbXSA9IEdfQ1NFVF9hXzJfeiAiXy8uIiBHX0NTRVRfQV8yX1o7CisgLy8vPCBHbG9iYWwgaWRlbnRpZmllcl9udGggZm9yIG9oX3NjYW5uZXJfY29uZmlnCistc3RhdGljIGdjaGFyIGlkZW50aWZpZXJfbnRoW10gPSBHX0NTRVRfYV8yX3oiXy0wMTIzNDU2Nzg5Ly4iR19DU0VUX0FfMl9aOworK3N0YXRpYyBnY2hhciBpZGVudGlmaWVyX250aFtdID0gR19DU0VUX2FfMl96ICJfLTAxMjM0NTY3ODkvLiIgR19DU0VUX0FfMl9aOworIC8vLzwgR2xvYmFsIGNvbW1lbnQgc2lnbnMgZm9yIG9oX3NjYW5uZXJfY29uZmlnCisgc3RhdGljIGdjaGFyIGNvbW1lbnRfc2luZ2xlW10gPSAiI1xuIjsKKyAKK0luZGV4OiBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy42LjEub3JpZy9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaS5jcHAKKysrKyBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pLmNwcAorQEAgLTI3OSw3ICsyNzksNyBAQCBleHRlcm4gIkMiIHsKKyAvLyBBQkkgSW50ZXJmYWNlIGZ1bmN0aW9ucworIAorIHN0YXRpYyB2b2lkICoKKy1JcG1pT3BlbiggR0hhc2hUYWJsZSAqLCB1bnNpZ25lZCBpbnQsIG9oX2V2dF9xdWV1ZSAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlPcGVuKCBHSGFzaFRhYmxlICosIHVuc2lnbmVkIGludCwgb2hfZXZ0X3F1ZXVlICogKSAgX19hc21fXygiSXBtaU9wZW4iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIHZvaWQgKgorIElwbWlPcGVuKCBHSGFzaFRhYmxlICpoYW5kbGVyX2NvbmZpZywgdW5zaWduZWQgaW50IGhpZCwgb2hfZXZ0X3F1ZXVlICpldmVudHEgKQorQEAgLTM4OCw3ICszODgsNyBAQCBJcG1pT3BlbiggR0hhc2hUYWJsZSAqaGFuZGxlcl9jb25maWcsIHVuCisgCisgCisgc3RhdGljIHZvaWQKKy1JcG1pQ2xvc2UoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pQ2xvc2UoIHZvaWQgKiApIF9fYXNtX18oIklwbWlDbG9zZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgdm9pZAorIElwbWlDbG9zZSggdm9pZCAqaG5kICkKK0BAIC00MzYsNyArNDM2LDcgQEAgSXBtaUNsb3NlKCB2b2lkICpobmQgKQorIAorIAorIHN0YXRpYyBTYUVycm9yVAorLUlwbWlHZXRFdmVudCggdm9pZCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlHZXRFdmVudCggdm9pZCAqICkgX19hc21fXygiSXBtaUdldEV2ZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRFdmVudCggdm9pZCAqaG5kICkKK0BAIC00NTgsNyArNDU4LDcgQEAgSXBtaUdldEV2ZW50KCB2b2lkICpobmQgKQorIAorIAorIHN0YXRpYyBTYUVycm9yVAorLUlwbWlEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqICkgX19hc21fXygiSXBtaURpc2NvdmVyUmVzb3VyY2VzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqaG5kICkKK0BAIC00NzksNyArNDc5LDcgQEAgSXBtaURpc2NvdmVyUmVzb3VyY2VzKCB2b2lkICpobmQgKQorIAorIAorIHN0YXRpYyBTYUVycm9yVAorLUlwbWlTZXRSZXNvdXJjZVRhZyggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRleHRCdWZmZXJUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrSXBtaVNldFJlc291cmNlVGFnKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpVGV4dEJ1ZmZlclQgKiApIF9fYXNtX18oIklwbWlTZXRSZXNvdXJjZVRhZyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0UmVzb3VyY2VUYWcoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgU2FIcGlUZXh0QnVmZmVyVCAqdGFnICkKK0BAIC00OTksNyArNDk5LDcgQEAgSXBtaVNldFJlc291cmNlVGFnKCB2b2lkICpobmQsIFNhSHBpUmVzbworIAorIAorIHN0YXRpYyBTYUVycm9yVAorLUlwbWlTZXRSZXNvdXJjZVNldmVyaXR5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpU2V2ZXJpdHlUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlTZXRSZXNvdXJjZVNldmVyaXR5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpU2V2ZXJpdHlUICkgX19hc21fXygiSXBtaVNldFJlc291cmNlU2V2ZXJpdHkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFJlc291cmNlU2V2ZXJpdHkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgU2FIcGlTZXZlcml0eVQgc2V2ICkKK0BAIC01MjMsNyArNTIzLDcgQEAgSXBtaUdldFNlbnNvclJlYWRpbmcoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1UIG51bSwKKyAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JSZWFkaW5nVCAqZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqc3RhdGUgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKnN0YXRlICkgX19hc21fXygiSXBtaUdldFNlbnNvclJlYWRpbmciKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbnNvclJlYWRpbmcoIHZvaWQgKmhuZCwKK0BAIC01NTAsNyArNTUwLDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbnNvclRocmVzaG9sZHMoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yVGhyZXNob2xkc1QgKiApIF9fYXNtX18oIklwbWlHZXRTZW5zb3JUaHJlc2hvbGRzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICAgICAgICAgICAgICAgICAgICpobmQsCitAQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2FzbV9fKCJJcG1pU2V0U2Vuc29yVGhyZXNob2xkcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAqaG5kLAorQEAgLTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2Vuc29yRW5hYmxlKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXNtX18oIklwbWlHZXRTZW5zb3JFbmFibGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbnNvckVuYWJsZSggdm9pZCAqaG5kLAorQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yRW5hYmxlKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICkgX19hc21fXygiSXBtaVNldFNlbnNvckVuYWJsZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yRW5hYmxlKCB2b2lkICpobmQsCitAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JFdmVudEVuYWJsZXMoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqICkgX19hc21fXygiSXBtaUdldFNlbnNvckV2ZW50RW5hYmxlcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICpobmQsCitAQCAtNjkwLDcgKzY5MCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRTZW5zb3JFdmVudEVuYWJsZXMoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKSBfX2FzbV9fKCJJcG1pU2V0U2Vuc29yRXZlbnRFbmFibGVzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRTZW5zb3JFdmVudEVuYWJsZXMoIHZvaWQgKmhuZCwKK0BAIC03MTcsNyArNzE3LDcgQEAgSXBtaUdldFNlbnNvckV2ZW50TWFza3MoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKiApIF9fYXNtX18oIklwbWlHZXRTZW5zb3JFdmVudE1hc2tzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICpobmQsCitAQCAtNzQ3LDcgKzc0Nyw3IEBAIElwbWlTZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yRXZlbnRNYXNrQWN0aW9uVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCApIF9fYXNtX18oIklwbWlTZXRTZW5zb3JFdmVudE1hc2tzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICpobmQsCitAQCAtNzc2LDcgKzc3Niw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRDb250cm9sU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1ULAorICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE1vZGVUICosCistICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2FzbV9fKCJJcG1pR2V0Q29udHJvbFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRDb250cm9sU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC04MDIsNyArODAyLDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldENvbnRyb2xTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE51bVQsCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsTW9kZVQsCistICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2FzbV9fKCJJcG1pU2V0Q29udHJvbFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRDb250cm9sU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC04MjgsNyArODI4LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldElkckluZm8oIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgIFNhSHBpSWRySW5mb1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgU2FIcGlJZHJJbmZvVCAqICkgX19hc21fXygiSXBtaUdldElkckluZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldElkckluZm8oIHZvaWQgKmhuZCwKK0BAIC04NTcsNyArODU3LDcgQEAgSXBtaUdldElkckFyZWFIZWFkZXIoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhVHlwZVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsCisgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiwKKy0gICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhSGVhZGVyVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckFyZWFIZWFkZXJUICogKSBfX2FzbV9fKCJJcG1pR2V0SWRyQXJlYUhlYWRlciIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SWRyQXJlYUhlYWRlciggdm9pZCAqaG5kLAorQEAgLTg4Nyw3ICs4ODcsNyBAQCBJcG1pQWRkSWRyQXJlYSggdm9pZCAqLAorICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhVHlwZVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqICkgX19hc21fXygiSXBtaUFkZElkckFyZWEiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUFkZElkckFyZWEoIHZvaWQgKmhuZCwKK0BAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaURlbElkckFyZWEoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2FzbV9fKCJJcG1pRGVsSWRyQXJlYSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pRGVsSWRyQXJlYSggdm9pZCAqaG5kLAorQEAgLTk0NCw3ICs5NDQsNyBAQCBJcG1pR2V0SWRyRmllbGQoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUeXBlVCwKKyAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICosCistICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXNtX18oIklwbWlHZXRJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SWRyRmllbGQoIHZvaWQgKmhuZCwKK0BAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaUFkZElkckZpZWxkKCB2b2lkICosCisgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXNtX18oIklwbWlBZGRJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQWRkSWRyRmllbGQoIHZvaWQgKmhuZCwKK0BAIC0xMDAwLDcgKzEwMDAsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0SWRyRmllbGQoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKy0gICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hc21fXygiSXBtaVNldElkckZpZWxkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRJZHJGaWVsZCggdm9pZCAqaG5kLAorQEAgLTEwMjcsNyArMTAyNyw3IEBAIElwbWlEZWxJZHJGaWVsZCggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCwKKy0gICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hc21fXygiSXBtaURlbElkckZpZWxkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlEZWxJZHJGaWVsZCggdm9pZCAqaG5kLAorQEAgLTEwNTMsNyArMTA1Myw3IEBAIElwbWlEZWxJZHJGaWVsZCggdm9pZCAqaG5kLAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZWxJbmZvKCB2b2lkICosCisgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dJbmZvVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nSW5mb1QgKiApIF9fYXNtX18oIklwbWlHZXRTZWxJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZWxJbmZvKCB2b2lkICpobmQsCitAQCAtMTA3NSw3ICsxMDc1LDcgQEAgSXBtaUdldFNlbEluZm8oIHZvaWQgKmhuZCwKKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pU2V0U2VsVGltZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRpbWVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlTZXRTZWxUaW1lKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIFNhSHBpVGltZVQgKSBfX2FzbV9fKCJJcG1pU2V0U2VsVGltZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2VsVGltZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCBTYUhwaVRpbWVUIHQgKQorQEAgLTEwOTYsNyArMTA5Niw3IEBAIElwbWlTZXRTZWxUaW1lKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2UKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQWRkU2VsRW50cnkoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgIGNvbnN0IFNhSHBpRXZlbnRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaUV2ZW50VCAqICkgX19hc21fXygiSXBtaUFkZFNlbEVudHJ5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlBZGRTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTExMTgsNyArMTExOCw3IEBAIElwbWlBZGRTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmMKKyAjaWZkZWYgTk9UVVNFRAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlEZWxTZWxFbnRyeSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0VudHJ5SWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0VudHJ5SWRUICkgX19hc21fXygiSXBtaURlbFNlbEVudHJ5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlEZWxTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTExNDUsNyArMTE0NSw3IEBAIElwbWlHZXRTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmMKKyAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeUlkVCAqLCBTYUhwaUV2ZW50TG9nRW50cnlJZFQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeVQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpUmRyVCAqLAorLSAgICAgICAgICAgICAgICAgU2FIcGlScHRFbnRyeVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgIFNhSHBpUnB0RW50cnlUICogKSBfX2FzbV9fKCJJcG1pR2V0U2VsRW50cnkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbEVudHJ5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTE3MCw3ICsxMTcwLDcgQEAgSXBtaUdldFNlbEVudHJ5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyYworIAorIAorIHN0YXRpYyBTYUVycm9yVAorLUlwbWlDbGVhclNlbCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlDbGVhclNlbCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICkgX19hc21fXygiSXBtaUNsZWFyU2VsIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlDbGVhclNlbCggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkICkKK0BAIC0xMTkwLDcgKzExOTAsNyBAQCBJcG1pQ2xlYXJTZWwoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUhvdHN3YXBQb2xpY3lDYW5jZWwoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCApIF9fYXNtX18oIklwbWlIb3Rzd2FwUG9saWN5Q2FuY2VsIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlIb3Rzd2FwUG9saWN5Q2FuY2VsKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTIxMCw3ICsxMjEwLDcgQEAgSXBtaUhvdHN3YXBQb2xpY3lDYW5jZWwoIHZvaWQgKmhuZCwgU2FIcAorIH0KKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pU2V0QXV0b0luc2VydFRpbWVvdXQoIHZvaWQgKiwgU2FIcGlUaW1lb3V0VCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pU2V0QXV0b0luc2VydFRpbWVvdXQoIHZvaWQgKiwgU2FIcGlUaW1lb3V0VCApIF9fYXNtX18oIklwbWlTZXRBdXRvSW5zZXJ0VGltZW91dCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0QXV0b0luc2VydFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlUaW1lb3V0VCAgdGltZW91dCkKK0BAIC0xMjI5LDcgKzEyMjksNyBAQCBJcG1pU2V0QXV0b0luc2VydFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FICisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICogKSBfX2FzbV9fKCJJcG1pR2V0QXV0b0V4dHJhY3RUaW1lb3V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMjUwLDcgKzEyNTAsNyBAQCBJcG1pR2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICpobmQsIFNhCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCApIF9fYXNtX18oIklwbWlTZXRBdXRvRXh0cmFjdFRpbWVvdXQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEyNzEsNyArMTI3MSw3IEBAIElwbWlTZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKmhuZCwgU2EKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SG90c3dhcFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQgLAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICogKSBfX2FzbV9fKCJJcG1pR2V0SG90c3dhcFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMjkzLDcgKzEyOTMsNyBAQCBJcG1pR2V0SG90c3dhcFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEhvdHN3YXBTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCApIF9fYXNtX18oIklwbWlTZXRIb3Rzd2FwU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEhvdHN3YXBTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEzMTUsNyArMTMxNSw3IEBAIElwbWlTZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXMKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pUmVxdWVzdEhvdHN3YXBBY3Rpb24oIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNBY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0FjdGlvblQgKSBfX2FzbV9fKCJJcG1pUmVxdWVzdEhvdHN3YXBBY3Rpb24iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVJlcXVlc3RIb3Rzd2FwQWN0aW9uKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTMzNyw3ICsxMzM3LDcgQEAgSXBtaVJlcXVlc3RIb3Rzd2FwQWN0aW9uKCB2b2lkICpobmQsIFNhSAorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRQb3dlclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgU2FIcGlQb3dlclN0YXRlVCAqICkgX19hc21fXygiSXBtaUdldFBvd2VyU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFBvd2VyU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMzU5LDcgKzEzNTksNyBAQCBJcG1pR2V0UG93ZXJTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFBvd2VyU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgU2FIcGlQb3dlclN0YXRlVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgU2FIcGlQb3dlclN0YXRlVCApIF9fYXNtX18oIklwbWlTZXRQb3dlclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRQb3dlclN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTM4MSw3ICsxMzgxLDcgQEAgSXBtaVNldFBvd2VyU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdQorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0luZGljYXRvclN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0luZGljYXRvclN0YXRlVCAqICkgX19hc21fXygiSXBtaUdldEluZGljYXRvclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE0MDMsNyArMTQwMyw3IEBAIElwbWlHZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVIKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUICkgX19hc21fXygiSXBtaVNldEluZGljYXRvclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE0MjYsNyArMTQyNiw3IEBAIElwbWlTZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVIKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQ29udHJvbFBhcm0oIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICBTYUhwaVBhcm1BY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlQYXJtQWN0aW9uVCApIF9fYXNtX18oIklwbWlDb250cm9sUGFybSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQ29udHJvbFBhcm0oIHZvaWQgKmhuZCwKK0BAIC0xNDQ5LDcgKzE0NDksNyBAQCBJcG1pQ29udHJvbFBhcm0oIHZvaWQgKmhuZCwKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0UmVzZXRTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCAqICkgX19hc21fXygiSXBtaUdldFJlc2V0U3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFJlc2V0U3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDcyLDcgKzE0NzIsNyBAQCBJcG1pR2V0UmVzZXRTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291Cisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFJlc2V0U3RhdGUoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzZXRBY3Rpb25UICkgX19hc21fXygiSXBtaVNldFJlc2V0U3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFJlc2V0U3RhdGUoIHZvaWQgKmhuZCwKK0BAIC0xNDk2LDcgKzE0OTYsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0V2F0Y2hkb2dJbmZvKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dUICopIF9fYXNtX18oIklwbWlHZXRXYXRjaGRvZ0luZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFdhdGNoZG9nSW5mbyh2b2lkICpobmQsCitAQCAtMTUxNyw3ICsxNTE3LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFdhdGNoZG9nSW5mbyh2b2lkICosCisgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQsCistICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2FzbV9fKCJJcG1pU2V0V2F0Y2hkb2dJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRXYXRjaGRvZ0luZm8odm9pZCAqaG5kLAorQEAgLTE1MzcsNyArMTUzNyw3IEBAIElwbWlTZXRXYXRjaGRvZ0luZm8odm9pZCAqaG5kLAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlSZXNldFdhdGNoZG9nKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQpIF9fYXNtX18oIklwbWlSZXNldFdhdGNoZG9nIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlSZXNldFdhdGNoZG9nKHZvaWQgKmhuZCwKK0luZGV4OiBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX2F1dGguaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy42LjEub3JpZy9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9hdXRoLmgKKysrKyBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX2F1dGguaAorQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgY0lwbWlBdXRoU2cKKyB7CisgcHVibGljOgorICAgdm9pZCAqZGF0YTsgLyogTlVMTCB0byB0ZXJtaW5hdGUuICovCistICBpbnQgICBsZW47CisrICB1bnNpZ25lZCBpbnQgICBsZW47CisgfTsKKyAKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2ZpeC1uYXJyb3dpbmctd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2ZpeC1uYXJyb3dpbmctd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzU0NTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvZml4LW5hcnJvd2luZy13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK0ZpeAorCitzZW5zb3JfZmFjdG9yc18wMDAuY3BwOjY2OjU6IGVycm9yOiBub24tY29uc3RhbnQtZXhwcmVzc2lvbiBjYW5ub3QgYmUgbmFycm93ZWQgZnJvbSB0eXBlICdpbnQnIHRvICd1bnNpZ25lZCBjaGFyJyBpbiBpbml0aWFsaXplciBsaXN0IFstV2MrKzExLW5hcnJvd2luZ10KKygoZFJFeHAgPDwgNCkgJiAweGYwKSB8IChkQkV4cCAmIDB4MGYgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC90L3NlbnNvcl9mYWN0b3JzXzAwMC5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9pcG1pZGlyZWN0L3Qvc2Vuc29yX2ZhY3RvcnNfMDAwLmNwcAorKysrIG9wZW5ocGktMy42LjEvcGx1Z2lucy9pcG1pZGlyZWN0L3Qvc2Vuc29yX2ZhY3RvcnNfMDAwLmNwcAorQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGNJcG1pU2RyIHNkciA9CisgICAgIGRCICYgMHhmZiwKKyAgICAgKChkQiA+PiAyKSAmIDB4YzApIHwgKGRBY2N1cmFjeSAmIDB4M2YpLAorICAgICAoKGRBY2N1cmFjeSA+PiAyKSAmIDB4ZjApIHwgKChkQWNjdXJhY3lFeHAgPDwgMikgJiAweDBjKSwKKy0gICAgKChkUkV4cCA8PCA0KSAmIDB4ZjApIHwgKGRCRXhwICYgMHgwZiApLAorKyAgICAodW5zaWduZWQgY2hhcikoKChkUkV4cCA8PCA0KSAmIDB4ZjApIHwgKGRCRXhwICYgMHgwZiApKSwKKyAgICAgMCwKKyAgICAgMCwKKyAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL29wZW5ocGlfMy42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9vcGVuaHBpXzMuNi4xLmJiCmluZGV4IGI5YjA0MzcuLmVjZjcxZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL29wZW5ocGlfMy42LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvb3BlbmhwaV8zLjYuMS5iYgpAQCAtMjAsOSArMjAsMTIgQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTNjNzcyYTMyMzg2ODg4Y2NiNWFlMWMwYmE5NWYxYTQiCiAKLURFUEVORFMgPSAibmV0LXNubXAgbGlieG1sMiBuY3Vyc2VzIG9wZW5zc2wgZ2xpYi0yLjAgcG9wdCBlMmZzcHJvZ3MiCitERVBFTkRTID0gIm5ldC1zbm1wIGxpYnhtbDIgbmN1cnNlcyBvcGVuc3NsIGdsaWItMi4wIHBvcHQgZTJmc3Byb2dzIGF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGkuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLW5ldHNubXAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLXN5c2ZzLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1saWJ4bWwyLWNyb3NzLWNvbXBpbGUucGF0Y2ggXApAQCAtMzUsMTEgKzM4LDEzIEBACiAgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWludmFsaWRlLXNlc3Npb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1maXgtYWxpZ25tZW50LWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGlkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jKysxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy1jKysxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbmFycm93aW5nLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wbHVnaW5zLUNoZWNrLWZvci1QVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDcxOGIxNmUwZjc0OWI1YWQyMTRhOWIwNGY0NWRkMjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhODEwY2I0MDFjNGJkY2ZjOTU1MWYyZTZhZmQ1YThjYTRiNDExZjVlZTNiYzYwYzE5ZjgyZmQ2ZTg0YTNkYyIKQEAgLTUzLDkgKzU4LDEwIEBACiBJTlNBTkVfU0tJUF8ke1BOfS1saWJzID0gImRldi1zbyIKIFJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIgogCi1QQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmdjcnlwdCBub24zMmJpdCIKIFBBQ0tBR0VDT05GSUdbc3lzZnNdID0gIi0tZW5hYmxlLXN5c2ZzLC0tZGlzYWJsZS1zeXNmcyxzeXNmc3V0aWxzLCIKIFBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1lbmNyeXB0aW9uLC0tZGlzYWJsZS1lbmNyeXB0aW9uLGxpYmdjcnlwdCwiCitQQUNLQUdFQ09ORklHW25vbjMyYml0XSA9ICItLWVuYWJsZS1ub24zMmJpdC1pbnQsLS1kaXNhYmxlLW5vbjMyYml0LWludCwsIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLVJlbW92ZS11bnVzZWQtdmFyaWFibGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLVJlbW92ZS11bnVzZWQtdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzg4YjgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1SZW1vdmUtdW51c2VkLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYTQ0MWE3NWZiYjg0NTEyNjhhOGE1NzYxNmM3MTU4Y2RkYzE4MjNhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIyIEFwciAyMDE3IDEyOjQwOjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCi0KLUZpeGVzIGJ1aWxkIGVycm9ycyB3aXRoIGdjYzcgZS5nLgotCi0uLi9vcGVuc2FmLTUuMi4wL3NyYy9hbWYvYW1mZC9pbW0uY2M6IEluIG1lbWJlciBmdW5jdGlvbiAnYm9vbCBJbW1PYmpDcmVhdGU6OmltbW9ial91cGRhdGVfcmVxdWlyZWQoKSc6Ci0uLi9vcGVuc2FmLTUuMi4wL3NyYy9hbWYvYW1mZC9pbW0uY2M6MjE3NDoyODogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSAncG9zJyBbLVdlcnJvcj11bnVzZWQtdmFyaWFibGVdCi0gICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fgotLi4vb3BlbnNhZi01LjIuMC9zcmMvYW1mL2FtZmQvaW1tLmNjOjIyMTU6Mjg6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUgJ3BvcycgWy1XZXJyb3I9dW51c2VkLXZhcmlhYmxlXQotICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9hbWYvYW1mZC9pbW0uY2MgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYW1mL2FtZmQvaW1tLmNjIGIvc3JjL2FtZi9hbWZkL2ltbS5jYwotaW5kZXggNzkzMjM2NC4uNGY0N2I2NSAxMDA2NDQKLS0tLSBhL3NyYy9hbWYvYW1mZC9pbW0uY2MKLSsrKyBiL3NyYy9hbWYvYW1mZC9pbW0uY2MKLUBAIC0yMTcxLDcgKzIxNzEsNiBAQCBib29sIEltbU9iakNyZWF0ZTo6aW1tb2JqX3VwZGF0ZV9yZXF1aXJlZCgpIHsKLSAgIGlmIChjbGFzc190eXBlID09IEFWU1ZfU0FfQU1GX1NJX0FTU0lHTk1FTlQpIHsKLSAgICAgc3RkOjpzdHJpbmcgc3VfbmFtZTsKLSAgICAgc3RkOjpzdHJpbmcgc2lzdV9uYW1lOwotLSAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvczsKLSAgICAgd2hpbGUgKChhdHRyaWJ1dGUgPSBhdHRyVmFsdWVzX1tpKytdKSAhPSBudWxscHRyKSB7Ci0gICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT5hdHRyTmFtZSwgInNhZlNJU1UiKSkgewotICAgICAgICAgc2lzdV9uYW1lID0gQW1mOjp0b19zdHJpbmcoCi1AQCAtMjIxMiw3ICsyMjExLDYgQEAgYm9vbCBJbW1PYmpDcmVhdGU6OmltbW9ial91cGRhdGVfcmVxdWlyZWQoKSB7Ci0gICB9IGVsc2UgaWYgKGNsYXNzX3R5cGUgPT0gQVZTVl9TQV9BTUZfQ1NJX0FTU0lHTk1FTlQpIHsKLSAgICAgc3RkOjpzdHJpbmcgY29tcF9uYW1lOwotICAgICBzdGQ6OnN0cmluZyBjc2ljb21wX25hbWU7Ci0tICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zOwotICAgICBBVkRfQ1NJICpjc2kgPSBudWxscHRyOwotICAgICBBVkRfQ09NUCAqY29tcCA9IG51bGxwdHI7Ci0gICAgIEFWRF9DT01QX0NTSV9SRUwgKmNvbXBjc2kgPSBudWxscHRyOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YzQ3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA1MDhlYTdjMGQ2NzI0M2ZlYjE2ODRlYWE4MzU2OWNiNjg3NTYxZDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTA6MDk6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW1tcGJlX2R1bXAuY2M6IFVzZSBzeXMvd2FpdC5oIGluc3RlYWQgb2Ygd2FpdC5oCisKK0ZpeGVzCityZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHdhaXQuaD4gdG8gPHN5cy93YWl0Lmg+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvaW1tL2NvbW1vbi9pbW1wYmVfZHVtcC5jYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjIGIvc3JjL2ltbS9jb21tb24vaW1tcGJlX2R1bXAuY2MKK2luZGV4IDEwMDIyMmYzNy4uMzNlNDdjZTNjIDEwMDY0NAorLS0tIGEvc3JjL2ltbS9jb21tb24vaW1tcGJlX2R1bXAuY2MKKysrKyBiL3NyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjCitAQCAtMjYsMTIgKzI2LDEyIEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDx0aW1lLmg+CistI2luY2x1ZGUgPHdhaXQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGlvc3RyZWFtPgorICNpbmNsdWRlIDxzc3RyZWFtPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisgCisgI2luY2x1ZGUgPHNhQWlzLmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1zcmMtQWRkLW1pc3NpbmctaGVhZGVyLWxpbWl0cy5oLWZvci1fUE9TSVhfSE9TVF9OQU1FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMmE4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaApAQCAtMCwwICsxLDEyMiBAQAorRnJvbSA2NDQyYjU3YTg1NWUyNzNhYTVhM2Q5M2U4NTk2NzgzY2VhMTI4MDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMDk6Mzk6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjOiBBZGQgbWlzc2luZyBoZWFkZXIgbGltaXRzLmggZm9yIF9QT1NJWF9IT1NUX05BTUVfTUFYCisKK1VzZSBfR05VX1NPVVJDRSBpbnN0ZWFkIG9mIGxpYmMgaW50ZXJuYWwgX19VU0VfR05VCitEbyBub3QgdXNlIHRoZSBkZXByZWNhdGVkIGhlYWRlcnMgdW5kZXIgaW5jbHVkZS9zeXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNlL29zX2RlZnMuaCAgICAgICAgfCA1ICsrKy0tCisgc3JjL21kcy9tZHNfZHRfdGNwLmMgICAgICB8IDEgLQorIHNyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmggfCAyICstCisgc3JjL21kcy9tZHNfZHRfdGlwYy5jICAgICB8IDEgLQorIHNyYy9tZHMvbWRzX2R0X3RpcGMuaCAgICAgfCAyICstCisgc3JjL21kcy9tZHNfZHRfdHJhbnMuYyAgICB8IDEgLQorIHNyYy9udGYvbnRmZC9OdGZMb2dnZXIuY2MgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzZS9vc19kZWZzLmggYi9zcmMvYmFzZS9vc19kZWZzLmgKK2luZGV4IDUwYTliZjVmYy4uYWY2ODQyODYzIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2Uvb3NfZGVmcy5oCisrKysgYi9zcmMvYmFzZS9vc19kZWZzLmgKK0BAIC00NywxNyArNDcsMTggQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL21zZy5oPiAvKiBBZGRlZCBmb3IgbWVzc2FnZS1xdWV1ZXMgOiBQTSA6IDI4LzEwLzAzICovCisgI2luY2x1ZGUgPHN5c2xvZy5oPgorLSNpZm5kZWYgX19VU0VfR05VCisrI2luY2x1ZGUgPGxpbWl0cy5oPgorKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyBzdHJ1Y3QgbXNnYnVmIHsKKyAgIGxvbmcgaW50IG10eXBlOworICAgY2hhciBtdGV4dFsxXTsKKyB9OworICNlbmRpZiAvKiBlbHNlIGRlZmluZWQgaW4gPHN5cy9tc2cuaD4gKi8KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RjcC5jIGIvc3JjL21kcy9tZHNfZHRfdGNwLmMKK2luZGV4IDE0MDdlYjFhYi4uYTg3YzIyZmFhIDEwMDY0NAorLS0tIGEvc3JjL21kcy9tZHNfZHRfdGNwLmMKKysrKyBiL3NyYy9tZHMvbWRzX2R0X3RjcC5jCitAQCAtMjcsNyArMjcsNiBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c2NoZWQuaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyAjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfZHRfdGNwX2Rpc2MuaCBiL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKK2luZGV4IGE2MjQ5ZDczZS4uNTc0ZjUyNjgxIDEwMDY0NAorLS0tIGEvc3JjL21kcy9tZHNfZHRfdGNwX2Rpc2MuaAorKysrIGIvc3JjL21kcy9tZHNfZHRfdGNwX2Rpc2MuaAorQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSAiYmFzZS9uY3NzeXNmX3Rzay5oIgorICNpbmNsdWRlICJiYXNlL25jc3N5c2ZfbWVtLmgiCisgI2luY2x1ZGUgIm1kc19kdF90Y3BfZGlzYy5oIgorLSNpbmNsdWRlICJzeXMvcG9sbC5oIgorKyNpbmNsdWRlIDxwb2xsLmg+CisgCisgLyogIG1kc19pbmRlbnRpZmlyZSArIG1kc192ZXJzaW9uICAgKyBtc2dfdHlwZSArIHNjb3BlX3R5cGUgKyBzZXJ2ZXJfdHlwZSArCisgICAgc2VydmVyX2luc3RhbmNlX2xvd2VyICsgc2VydmVyX2luc3RhbmNlX3VwcGVyICsgc3ViX3JlZl92YWwgKyBzdWJfcmVmX3ZhbCAgKworZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RpcGMuYyBiL3NyYy9tZHMvbWRzX2R0X3RpcGMuYworaW5kZXggMzc3NDVlN2YwLi45YjMyNTU1NjcgMTAwNjQ0CistLS0gYS9zcmMvbWRzL21kc19kdF90aXBjLmMKKysrKyBiL3NyYy9tZHMvbWRzX2R0X3RpcGMuYworQEAgLTM1LDcgKzM1LDYgQEAKKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c2NoZWQuaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyAjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfZHRfdGlwYy5oIGIvc3JjL21kcy9tZHNfZHRfdGlwYy5oCitpbmRleCBlNzNhMTFiMDkuLjQwMWQyMDhjMiAxMDA2NDQKKy0tLSBhL3NyYy9tZHMvbWRzX2R0X3RpcGMuaAorKysrIGIvc3JjL21kcy9tZHNfZHRfdGlwYy5oCitAQCAtMzIsNyArMzIsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisgI2luY2x1ZGUgPG5ldGRiLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfZHRfdHJhbnMuYyBiL3NyYy9tZHMvbWRzX2R0X3RyYW5zLmMKK2luZGV4IDZmNjIxZTA0ZS4uNWFhY2JkMzNlIDEwMDY0NAorLS0tIGEvc3JjL21kcy9tZHNfZHRfdHJhbnMuYworKysrIGIvc3JjL21kcy9tZHNfZHRfdHJhbnMuYworQEAgLTI2LDcgKzI2LDYgQEAKKyAjaW5jbHVkZSAibWRzX2NvcmUuaCIKKyAjaW5jbHVkZSAiYmFzZS9vc2FmX3V0aWxpdHkuaCIKKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyAjaW5jbHVkZSA8cG9sbC5oPgorIAorICNkZWZpbmUgTURTX1BST1RfVENQIDB4QTAKK2RpZmYgLS1naXQgYS9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjIGIvc3JjL250Zi9udGZkL050ZkxvZ2dlci5jYworaW5kZXggODQwMTRiNTc4Li4zMWIxY2NjNmMgMTAwNjQ0CistLS0gYS9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjCisrKysgYi9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjCitAQCAtMjAsNyArMjAsNyBAQAorICAqICAgSU5DTFVERSBGSUxFUworICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAqLworLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisgCisgI2luY2x1ZGUgImJhc2Uvb3NhZl91dGlsaXR5LmgiCisgI2luY2x1ZGUgPHNhQWlzLmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTcuMDcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTcuMDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0ODNkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xNy4wNy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNBRiBBSVMgc3BlY2lmaWNhdGlvbiIKK0RFU0NSSVBUSU9OID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBlc3RhYmxpc2hlZCB0byBkZXZlbG9wIGEgYmFzZSBwbGF0Zm9ybSBcCittaWRkbGV3YXJlIGNvbnNpc3RlbnQgd2l0aCBTZXJ2aWNlIEF2YWlsYWJpbGl0eSBGb3J1bSAoU0EgRm9ydW0pIFwKK3NwZWNpZmljYXRpb25zLCB1bmRlciB0aGUgTEdQTHYyLjEgbGljZW5zZS4gVGhlIE9wZW5TQUYgRm91bmRhdGlvbiB3YXMgXAorZXN0YWJsaXNoZWQgYnkgbGVhZGluZyBDb21tdW5pY2F0aW9ucyBhbmQgRW50ZXJwcmlzZSBDb21wdXRpbmcgQ29tcGFuaWVzIHRvIFwKK2ZhY2lsaXRhdGUgdGhlIE9wZW5TQUYgUHJvamVjdCBhbmQgdG8gYWNjZWxlcmF0ZSB0aGUgYWRvcHRpb24gb2YgdGhlIE9wZW5TQUYgXAorY29kZSBiYXNlIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMuIFwKK1RoZSBPcGVuU0FGIHByb2plY3Qgd2FzIGxhdW5jaGVkIGluIG1pZCAyMDA3IGFuZCBoYXMgYmVlbiB1bmRlciBkZXZlbG9wbWVudCBieSBcCithbiBpbmZvcm1hbCBncm91cCBvZiBzdXBwb3J0ZXJzIG9mIHRoZSBPcGVuU0FGIGluaXRpYXRpdmUuIFRoZSBPcGVuU0FGIFwKK0ZvdW5kYXRpb24gd2FzIGZvdW5kZWQgb24gSmFudWFyeSAyMm5kIDIwMDggd2l0aCBFbWVyc29uIE5ldHdvcmsgUG93ZXIsIFwKK0VyaWNzc29uLCBOb2tpYSBTaWVtZW5zIE5ldHdvcmtzLCBIUCBhbmQgU3VuIE1pY3Jvc3lzdGVtcyBhcyBmb3VuZGluZyBtZW1iZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNhZi5vcmciCitTRUNUSU9OID0gImFkbWluIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIHB5dGhvbiIKK1RPT0xDSEFJTiA9ICJnY2MiCisKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QYXNzLWxpbmtlci1zcGVjaWZpYy1vcHRpb25zLXdpdGgtV2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtRGlzYWJsZS1mb3JtYXQtb3ZlcmZsb3ctaWYtc3VwcG9ydGVkLWJ5LWdjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMjViY2Q5YWFiZDc0MTJhZWRjYmZiZjczZjRlNjE5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZmIyMjM5YmIyYzkzMjhjOGI0NTM2OGZmOGQ4ZGU5NzllYTI4NmEyN2VkYzk4NzFkMjE4MjAwZTg4YmI5MWNjIgorCitpbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItZiAtciBvcGVuc2FmIgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICAiLXIgLWcgb3BlbnNhZiAtZCAke2RhdGFkaXJ9L29wZW5zYWYvIC1zICR7c2JpbmRpcn0vbm9sb2dpbiAtYyBcIk9wZW5TQUZcIiBvcGVuc2FmIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW5zYWZkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLCxzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tvcGVuaHBpXSA9ICItLXdpdGgtaHBpLWludGVyZmFjZT1CMDMgLS1lbmFibGUtYWlzLXBsbSwsb3BlbmhwaSIKKworUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJyBzeXN0ZW1kJywgJycsIGQpfSIKKworUEtHTElCRElSPSIke2xpYmRpcn0iCisKK0xERkxBR1MgKz0gIi1XbCwtLWFzLW5lZWRlZCAtbGF0b21pYyAtV2wsLS1uby1hcy1uZWVkZWQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGNwIC1hdiAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAke0J9L2xpYi8ubGlicy8qLnNvKiAke0R9JHtsaWJkaXJ9CisgICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2NrIgorICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7ZGF0YWRpcn0vamF2YSIKKyAgICBpZiBbICEgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9vc2FmL3NlcnZpY2VzL2luZnJhc3RydWN0dXJlL25pZC9zY3JpcHRzL29wZW5zYWZkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEtHTElCRElSfS8qLmEiCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU3OWJhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuU0FGIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTQUYgQUlTIHNwZWNpZmljYXRpb24iCi1ERVNDUklQVElPTiA9ICJPcGVuU0FGIGlzIGFuIG9wZW4gc291cmNlIHByb2plY3QgZXN0YWJsaXNoZWQgdG8gZGV2ZWxvcCBhIGJhc2UgcGxhdGZvcm0gXAotbWlkZGxld2FyZSBjb25zaXN0ZW50IHdpdGggU2VydmljZSBBdmFpbGFiaWxpdHkgRm9ydW0gKFNBIEZvcnVtKSBcCi1zcGVjaWZpY2F0aW9ucywgdW5kZXIgdGhlIExHUEx2Mi4xIGxpY2Vuc2UuIFRoZSBPcGVuU0FGIEZvdW5kYXRpb24gd2FzIFwKLWVzdGFibGlzaGVkIGJ5IGxlYWRpbmcgQ29tbXVuaWNhdGlvbnMgYW5kIEVudGVycHJpc2UgQ29tcHV0aW5nIENvbXBhbmllcyB0byBcCi1mYWNpbGl0YXRlIHRoZSBPcGVuU0FGIFByb2plY3QgYW5kIHRvIGFjY2VsZXJhdGUgdGhlIGFkb3B0aW9uIG9mIHRoZSBPcGVuU0FGIFwKLWNvZGUgYmFzZSBpbiBjb21tZXJjaWFsIHByb2R1Y3RzLiBcCi1UaGUgT3BlblNBRiBwcm9qZWN0IHdhcyBsYXVuY2hlZCBpbiBtaWQgMjAwNyBhbmQgaGFzIGJlZW4gdW5kZXIgZGV2ZWxvcG1lbnQgYnkgXAotYW4gaW5mb3JtYWwgZ3JvdXAgb2Ygc3VwcG9ydGVycyBvZiB0aGUgT3BlblNBRiBpbml0aWF0aXZlLiBUaGUgT3BlblNBRiBcCi1Gb3VuZGF0aW9uIHdhcyBmb3VuZGVkIG9uIEphbnVhcnkgMjJuZCAyMDA4IHdpdGggRW1lcnNvbiBOZXR3b3JrIFBvd2VyLCBcCi1Fcmljc3NvbiwgTm9raWEgU2llbWVucyBOZXR3b3JrcywgSFAgYW5kIFN1biBNaWNyb3N5c3RlbXMgYXMgZm91bmRpbmcgbWVtYmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYWYub3JnIgotU0VDVElPTiA9ICJhZG1pbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLURFUEVORFMgPSAibGlieG1sMiBweXRob24iCi1UT09MQ0hBSU4gPSAiZ2NjIgotCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59L3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUGFzcy1saW5rZXItc3BlY2lmaWMtb3B0aW9ucy13aXRoLVdsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11bnVzZWQtdmFyaWFibGVzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwODk5MWZkNDY3YWU5ZGNlYTNjODc0N2JlOGUzOTgxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDM0NzgyNDRhZmUzN2UzMjliZTkzMDUwZjFkNDhmYTE4Yzg0ZWExNzg2MjEzNGM0MjE3YjkyMGUyNjdhMDRhIgotCi1pbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItZiAtciBvcGVuc2FmIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICAiLXIgLWcgb3BlbnNhZiAtZCAke2RhdGFkaXJ9L29wZW5zYWYvIC1zICR7c2JpbmRpcn0vbm9sb2dpbiAtYyBcIk9wZW5TQUZcIiBvcGVuc2FmIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW5zYWZkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLCxzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1tvcGVuaHBpXSA9ICItLXdpdGgtaHBpLWludGVyZmFjZT1CMDMgLS1lbmFibGUtYWlzLXBsbSwsb3BlbmhwaSIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJyBzeXN0ZW1kJywgJycsIGQpfSIKLQotUEtHTElCRElSPSIke2xpYmRpcn0iCi0KLUxERkxBR1MgKz0gIi1XbCwtLWFzLW5lZWRlZCAtbGF0b21pYyAtV2wsLS1uby1hcy1uZWVkZWQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGNwIC1hdiAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAke0J9L2xpYi8ubGlicy8qLnNvKiAke0R9JHtsaWJkaXJ9Ci0gICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2NrIgotICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7ZGF0YWRpcn0vamF2YSIKLSAgICBpZiBbICEgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9vc2FmL3NlcnZpY2VzL2luZnJhc3RydWN0dXJlL25pZC9zY3JpcHRzL29wZW5zYWZkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEtHTElCRElSfS8qLmEiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLUNoZWNrLWZvci1nbGliYy1iZWZvcmUtc2V0dGluZy1DQU5UX1VTRV9TRU5EX1JFQ1ZfTVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLUNoZWNrLWZvci1nbGliYy1iZWZvcmUtc2V0dGluZy1DQU5UX1VTRV9TRU5EX1JFQ1ZfTVMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI4NmUzOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtQ2hlY2stZm9yLWdsaWJjLWJlZm9yZS1zZXR0aW5nLUNBTlRfVVNFX1NFTkRfUkVDVl9NUy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDYzNjE5YWNmMjUxNTFkNGRhZGU2ZDY1NzMyNzIyZWM0YTcxMGE1YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwOTo1NDoyNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgZ2xpYmMgYmVmb3JlIHNldHRpbmcgQ0FOVF9VU0VfU0VORF9SRUNWX01TRworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3V0aWwvc3lzX2RlZnMuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy91dGlsL3N5c19kZWZzLmggYi9zcmMvdXRpbC9zeXNfZGVmcy5oCitpbmRleCBmNzIwZTJhLi43MzE0YzYzIDEwMDY0NAorLS0tIGEvc3JjL3V0aWwvc3lzX2RlZnMuaAorKysrIGIvc3JjL3V0aWwvc3lzX2RlZnMuaAorQEAgLTgxMyw3ICs4MTMsNyBAQCBleHRlcm4gaW50IGluaXRncm91cHMoY29uc3QgY2hhciAqLCBpbnQpOworICNkZWZpbmUgS0VSTkVMX1ZFUlNJT04oYSxiLGMpIChMSU5VWF9WRVJTSU9OX0NPREUgKyAxKQorICNlbmRpZgorICNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwyLDApKSBcCistCXx8IChfX0dMSUJDX18gPCAyKQorKwl8fCAoZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPCAyKSkKKyAjZGVmaW5lIENBTlRfVVNFX1NFTkRfUkVDVl9NU0cKKyAjZGVmaW5lIERFRl9TTVRQX0NBQ0hFX0RFTUFORAkwCisgI2Vsc2UKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvMDAwMS1tYWtlZGVmcy1Vc2UtbmF0aXZlLWNvbXBpbGVyLXRvLWJ1aWxkLW1ha2VkZWZzLnRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzYTRhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gYTBkMGRlMTBlNGM1YWI1NWJjMmZhNDg3OTgwNzllMjg3NmIxMjExZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDEwOjI5OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2VkZWZzOiBVc2UgbmF0aXZlIGNvbXBpbGVyIHRvIGJ1aWxkIG1ha2VkZWZzLnRlc3QKKworSXRzIGEgYmluYXJ5IHVzZWQgZHVyaW5nIGJ1aWxkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtYWtlZGVmcyB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFrZWRlZnMgYi9tYWtlZGVmcworaW5kZXggOWZkNGJjMi4uNWVlNzc0NyAxMDA2NDQKKy0tLSBhL21ha2VkZWZzCisrKysgYi9tYWtlZGVmcworQEAgLTUyNiw3ICs1MjYsNyBAQCBpbnQgICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICBleGl0KDApOworIH0KKyBFT0YKKy0JCQkgICAke0NDLWdjY30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgfHwgZXhpdCAxCisrCQkJICAgJHtCVUlMRF9DQy1nY2N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jIHx8IGV4aXQgMQorIAkJCSAgIHJtIC1mIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5bY29dCisgCQkgICAgICAgZmk7OworIAkJZXNhYworQEAgLTc2Miw3ICs3NjIsNyBAQCBpbnQgICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICBleGl0KDApOworIH0KKyBFT0YKKy0JCSAgICR7Q0MtZ2NjfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKysJCSAgICR7QlVJTERfQ0MtZ2NjfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKyAJCSAgIC4vbWFrZWRlZnMudGVzdCAyPi9kZXYvbnVsbCB8fAorIAkJCUNDQVJHUz0iJENDQVJHUyAtRE5PX1NJR1NFVEpNUCIKKyAJCSAgIHJtIC1mIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5bY29dCitAQCAtNzk2LDcgKzc5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkJICAmZXJyb3IpICE9IDE0KTsKKyB9CisgRU9GCistCQkgICAgJHtDQy1nY2N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jICRpY3VfY3BwZmxhZ3MgXAorKwkJICAgICR7QlVJTERfQ0MtZ2NjfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyAkaWN1X2NwcGZsYWdzIFwKKyAJCQkkaWN1X2xkZmxhZ3MgPi9kZXYvbnVsbCAyPiYxCisgCQkgICAgaWYgLi9tYWtlZGVmcy50ZXN0IDI+L2Rldi9udWxsIDsgdGhlbgorIAkJCUNDQVJHUz0iJENDQVJHUyAkaWN1X2NwcGZsYWdzIgorQEAgLTkxMSw3ICs5MTEsNyBAQCBpbnQgICAgIG1haW4odm9pZCkKKyAgICAgZXhpdChmZXJyb3Ioc3Rkb3V0KSA/IDEgOiAwKTsKKyB9CisgRU9GCistICAgIGV2YWwgJHtDQy1nY2N9ICR7Q0NBUkdTfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKysgICAgZXZhbCAke0JVSUxEX0NDLWdjY30gJHtDQ0FSR1N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jIHx8IGV4aXQgMQorICAgICAuL21ha2VkZWZzLnRlc3QgfHwgZXhpdCAxCisgICAgIHJtIC1mIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5bY29dCisgfQorQEAgLTEwNjcsNyArMTA2Nyw3IEBAIGludCAgICAgbWFpbih2b2lkKQorICAgICBleGl0KGZlcnJvcihzdGRvdXQpID8gMSA6IDApOworIH0KKyBFT0YKKy0JZXZhbCAke0NDLWdjY30gJHtDQ0FSR1N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jIHx8IGV4aXQgMQorKwlldmFsICR7QlVJTERfQ0MtZ2NjfSAke0NDQVJHU30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgfHwgZXhpdCAxCisgCXBhcm1fdmFsPWAuL21ha2VkZWZzLnRlc3RgIHx8IGV4aXQgMQorIAlybSAtZiBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuW2NvXQorIAlldmFsICR7cGFybV9uYW1lfT1cIiJcJHBhcm1fdmFsIlwiCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9pY3UtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvaWN1LWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmQ5YzJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvaWN1LWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitkbyBub3QgZW50ZXJ0YWluIGNwcGZsYWdzIGZyb20gaWN1LCB0aGlzIGlzIGJlY2F1c2UKK2ljdS1jb25maWcgZmVlZHMgdGhlIC1JIHBhdGggd2l0aG91dCBzeXNyb290IHdoaWNoCitjYXVzZWQgbmF0aXZlIGhlYWRlcnMgdG8gYmUgaW5jbHVkZWQgYW5kIGJ1aWxkIGlzCitjb3JydXB0ZWQgaW4gYW55IGNhc2UgaXRzIGp1c3QgYWRkaW5nIC1JL3Vzci9pbmNsdWRlCit0byB0aGUgQ0NBUkdTIHdoaWNoIHdlIGxvb3NlIG5vdGhpbmcgaWYgaXRzIG5vdAorZW50ZXJ0YWluZWQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBwb3N0Zml4LTMuMi4yL21ha2VkZWZzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9zdGZpeC0zLjIuMi5vcmlnL21ha2VkZWZzCisrKysgcG9zdGZpeC0zLjIuMi9tYWtlZGVmcworQEAgLTc5OSw3ICs3OTksNiBAQCBFT0YKKyAJCSAgICAke0JVSUxEX0NDLWdjY30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgJGljdV9jcHBmbGFncyBcCisgCQkJJGljdV9sZGZsYWdzID4vZGV2L251bGwgMj4mMQorIAkJICAgIGlmIC4vbWFrZWRlZnMudGVzdCAyPi9kZXYvbnVsbCA7IHRoZW4KKy0JCQlDQ0FSR1M9IiRDQ0FSR1MgJGljdV9jcHBmbGFncyIKKyAJCQlTWVNMSUJTPSIkU1lTTElCUyAkaWN1X2xkZmxhZ3MiCisgCQkgICAgZWxzZQorIAkJCUNDQVJHUz0iJENDQVJHUyAtRE5PX0VBSSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQ3OWJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvcG9zdGZpeC1pbnN0YWxsLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0luZGV4OiBwb3N0Zml4LTMuMi4yL3Bvc3RmaXgtaW5zdGFsbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RmaXgtMy4yLjIub3JpZy9wb3N0Zml4LWluc3RhbGwKKysrKyBwb3N0Zml4LTMuMi4yL3Bvc3RmaXgtaW5zdGFsbAorQEAgLTg0Myw3ICs4NDMsNyBAQCBJRlM9IiRCQUNLVVBfSUZTIgorICMgdGhlIHdyb25nIHBsYWNlIHdoZW4gUG9zdGZpeCBpcyBiZWluZyB1cGdyYWRlZC4KKyAKKyBjYXNlICIkbWFpbF92ZXJzaW9uIiBpbgorLSIiKSBtYWlsX3ZlcnNpb249ImAkUE9TVENPTkYgLWRoeCBtYWlsX3ZlcnNpb25gIiB8fCBleGl0IDEKKysiIikgbWFpbF92ZXJzaW9uPSJgJFBPU1RDT05GIC1jICRDT05GSUdfRElSRUNUT1JZIC1kaHggbWFpbF92ZXJzaW9uYCIgfHwgZXhpdCAxCisgZXNhYworIAorICMgVW5kbyBNQUlMX1ZFUlNJT04gZXhwYW5zaW9uIGF0IHRoZSBlbmQgb2YgYSBwYXJhbWV0ZXIgdmFsdWUuIElmCitJbmRleDogcG9zdGZpeC0zLjIuMi9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RmaXgtMy4yLjIub3JpZy9NYWtlZmlsZS5pbgorKysrIHBvc3RmaXgtMy4yLjIvTWFrZWZpbGUuaW4KK0BAIC0yMCw3ICsyMCw3IEBAIE1FVEEJPSBtZXRhL21haW4uY2YucHJvdG8gbWV0YS9tYXN0ZXIuY2YKKyBFWFBBTkQJPSBzZWQgLWUgInM7XCQke0xJQl9QUkVGSVh9OyQoTElCX1BSRUZJWCk7IiBcCisgCSAgICAtZSAicztcJCR7TElCX1NVRkZJWH07JChMSUJfU1VGRklYKTsiCisgU0hMSUJfRElSX09WRVJSSURFID0gXAorLQkkJHtzaGxpYl9kaXJlY3Rvcnk6LWAkKFNITElCX0VOVikgYmluL3Bvc3Rjb25mIC1kaHggc2hsaWJfZGlyZWN0b3J5YH0KKysJJCR7c2hsaWJfZGlyZWN0b3J5Oi1gJChTSExJQl9FTlYpICQoUE9TVENPTkYpIC1kaHggc2hsaWJfZGlyZWN0b3J5YH0KKyAKKyBkZWZhdWx0OiB1cGRhdGUKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKaW5kZXggNGM3OTRmZi4uYTU4OGJkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKQEAgLTYwLDIwICs2MCwyNCBAQAogZXhwb3J0IENDQVJHUy1sZGFwX2NsYXNzLW5hdGl2ZSA9ICIiCiBleHBvcnQgQVVYTElCUy1sZGFwX2NsYXNzLW5hdGl2ZSA9ICIiCiAKK2V4cG9ydCBDQ0FSR1Mtbm9uaXNfbGliYy1tdXNsID0gIi1ETk9fTklTIgorZXhwb3J0IENDQVJHUy1ub25pcyA9ICIiCisKICMgU0FTTCBzdXBwb3J0IC1EVVNFX0xEQVBfU0FTTCAtRFVTRV9TQVNMX0FVVEgKICMgY3VycmVudCBvcGVubGRhcCBkaWRuJ3QgZW5hYmxlIFNBU0wKIGV4cG9ydCBDQ0FSR1Mtc2FzbCAgPSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2FzbCcsICctRFVTRV9TQVNMX0FVVEggLURVU0VfQ1lSVVNfU0FTTCAtST0vdXNyL2luY2x1ZGUvc2FzbCcsICcnLCBkKX0iCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzYXNsJywgJy1EVVNFX1NBU0xfQVVUSCAtRFVTRV9DWVJVU19TQVNMIC1JJHtTVEFHSU5HX0lOQ0RJUn0vc2FzbCcsICcnLCBkKX0iCiBleHBvcnQgQVVYTElCUy1zYXNsID0gIlwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Nhc2wnLCAnLWxzYXNsMicsICcnLCBkKX0iCiBleHBvcnQgQ0NBUkdTLXNhc2xfY2xhc3MtbmF0aXZlID0gIiIKIGV4cG9ydCBBVVhMSUJTLXNhc2xfY2xhc3MtbmF0aXZlID0gIiIKIAogIyBQQ1JFLCBUTFMgc3VwcG9ydCBkZWZhdWx0Ci1leHBvcnQgQ0NBUkdTICA9ICIke0NGTEFHU30gLURIQVNfUENSRSAtRFVTRV9UTFMgJHtDQ0FSR1MtbGRhcH0gJHtDQ0FSR1Mtc2FzbH0iCitleHBvcnQgQ0NBUkdTICA9ICIke0NGTEFHU30gLURIQVNfUENSRSAtRFVTRV9UTFMgLUkke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsICR7Q0NBUkdTLWxkYXB9ICR7Q0NBUkdTLXNhc2x9ICR7Q0NBUkdTLW5vbmlzfSIKIGV4cG9ydCBBVVhMSUJTID0gIi1scGNyZSAtbHNzbCAtbGNyeXB0byAke0FVWExJQlMtc2FzbH0gJHtBVVhMSUJTLWxkYXB9IgogZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7c2JpbmRpcl9uYXRpdmV9L3Bvc3Rjb25mIgogCitleHBvcnQgQ0NBUkdTLW5vbmlzX2xpYmMtbXVzbCA9ICItRE5PX05JUyIKICMgT1BULERFQlVHIGlzIGFyZWFkeSBpbiBDRkxBR1MKICMgaWdub3JlIHRoZSBPUFRTPSJDQz0kQ0MiIGluIE1ha2VmaWxlIGl0IHdpbGwgbm90IHVzZSB0aGUgQ0M9JENDICRDQ0FSR1MKIEVYVFJBX09FTUFLRSArPSAiT1BUPSBERUJVRz0gT1BUUz0gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYmUyNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBwb3N0Zml4LmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDBkNzJlYTE0M2FmN2FiMDAzOGMyY2VlMWY0ODM3MDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RlZGE0YzM0NjMxOTcwNDkwYjFiNWZiYjU1OTkwNWY5MzUzMWJmMWM3ZWIwMGUzOGIwZDBkZWIxZGJhOTk4MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgcG9zdGZpeC5pbmMKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAucG9yY3VwaW5lLm9yZy9taXJyb3JzL3Bvc3RmaXgtcmVsZWFzZS9vZmZpY2lhbC9wb3N0Zml4LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZGVmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21haW4uY2ZfMi4wIFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXggXAorICAgICAgICAgICBmaWxlOi8vaW50ZXJuYWxfcmVjaXBpZW50IFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXguc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9hbGlhc2VzZGIgXAorICAgICAgICAgICBmaWxlOi8vY2hlY2tfaG9zdG5hbWUuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItZ2xpYmMtYmVmb3JlLXNldHRpbmctQ0FOVF9VU0VfU0VORF9SRUNWX01TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pY3UtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImFlYTA3M2E5YjBiZWE1YmRiNTkwNDYwYTI3MGE0YWEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwNjg0OTQxOGQxMTlkMDkzNjY5OTdiMmI0ODFiYjIzZjczNzYyOTc2OWI0ZTRhNTJkYTQyZmIzYWQ4YjA1NzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9maWxlcy9idWlsZF9maXh1cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL2ZpbGVzL2J1aWxkX2ZpeHVwLnBhdGNoCmluZGV4IDE5NjE3YTYuLjk4MTZkNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL2ZpbGVzL2J1aWxkX2ZpeHVwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL2ZpbGVzL2J1aWxkX2ZpeHVwLnBhdGNoCkBAIC05LDExICs5LDExIEBACiBTaWduZWQtb2ZmLUJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiAKLUluZGV4OiBwcm9mdHBkLTEuMy41L01ha2UucnVsZXMuaW4KK0luZGV4OiBwcm9mdHBkLTEuMy42L01ha2UucnVsZXMuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwcm9mdHBkLTEuMy41Lm9yaWcvTWFrZS5ydWxlcy5pbgotKysrIHByb2Z0cGQtMS4zLjUvTWFrZS5ydWxlcy5pbgotQEAgLTI5LDkgKzI5LDkgQEAgSU5TVEFMTD1ASU5TVEFMTEAKKy0tLSBwcm9mdHBkLTEuMy42Lm9yaWcvTWFrZS5ydWxlcy5pbgorKysrIHByb2Z0cGQtMS4zLjYvTWFrZS5ydWxlcy5pbgorQEAgLTMwLDkgKzMwLDkgQEAgSU5TVEFMTD1ASU5TVEFMTEAKICBJTlNUQUxMX1NUUklQPUBJTlNUQUxMX1NUUklQQAogIElOU1RBTExfVVNFUj1AaW5zdGFsbF91c2VyQAogIElOU1RBTExfR1JPVVA9QGluc3RhbGxfZ3JvdXBACkBAIC0yNiwxMCArMjYsMTAgQEAKICAKICBSTT1ybSAtZgogIFNIRUxMPUBDT05GSUdfU0hFTExACi1JbmRleDogcHJvZnRwZC0xLjMuNS9NYWtlZmlsZS5pbgorSW5kZXg6IHByb2Z0cGQtMS4zLjYvTWFrZWZpbGUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwcm9mdHBkLTEuMy41Lm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBwcm9mdHBkLTEuMy41L01ha2VmaWxlLmluCistLS0gcHJvZnRwZC0xLjMuNi5vcmlnL01ha2VmaWxlLmluCisrKysgcHJvZnRwZC0xLjMuNi9NYWtlZmlsZS5pbgogQEAgLTEwNSw3ICsxMDUsNiBAQCBjaGVjazogcHJvZnRwZCQoRVhFRVhUKQogICQoREVTVERJUikkKGxvY2FsZWRpcikgJChERVNURElSKSQoaW5jbHVkZWRpcikgJChERVNURElSKSQoaW5jbHVkZWRpcikvcHJvZnRwZCAkKERFU1RESVIpJChsaWJkaXIpICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikgJChERVNURElSKSQobGliZGlyKS9wcm9mdHBkICQoREVTVERJUikkKGxpYmV4ZWNkaXIpICQoREVTVERJUikkKGxvY2Fsc3RhdGVkaXIpICQoREVTVERJUikkKHN5c2NvbmZkaXIpICQoREVTVERJUikkKGJpbmRpcikgJChERVNURElSKSQoc2JpbmRpcikgJChERVNURElSKSQobWFuZGlyKSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEgJChERVNURElSKSQobWFuZGlyKS9tYW41ICQoREVTVERJUikkKG1hbmRpcikvbWFuODoKICAJQGlmIFsgISAtZCAkQCBdOyB0aGVuIFwKQEAgLTYwLDExICs2MCwxMSBAQAogIAkJICAgICAgICAgICAkKHRvcF9zcmNkaXIpL3NhbXBsZS1jb25maWd1cmF0aW9ucy9iYXNpYy5jb25mIFwKICAJICAgICAgIAkgICAgICAgICAgICQoREVTVERJUikkKHN5c2NvbmZkaXIpL3Byb2Z0cGQuY29uZiA7IFwKICAJZmkKLUluZGV4OiBwcm9mdHBkLTEuMy41L2NvbmZpZ3VyZQorSW5kZXg6IHByb2Z0cGQtMS4zLjYvY29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHJvZnRwZC0xLjMuNS5vcmlnL2NvbmZpZ3VyZQotKysrIHByb2Z0cGQtMS4zLjUvY29uZmlndXJlCi1AQCAtMzgyNTUsNyArMzgyNTUsNyBAQCBfQUNFT0YKKy0tLSBwcm9mdHBkLTEuMy42Lm9yaWcvY29uZmlndXJlCisrKysgcHJvZnRwZC0xLjMuNi9jb25maWd1cmUKK0BAIC00MTc3Nyw3ICs0MTc3Nyw3IEBAIF9BQ0VPRgogIAogIAogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKQEAgLTcyLDkgKzcyLDkgQEAKICsjZGVmaW5lIFBSX1JVTl9ESVIgImBldmFsIGVjaG8gIiR7bG9jYWxzdGF0ZWRpcn0iL3J1bi9gIgogIF9BQ0VPRgogIAotIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLUBAIC0zODI2Myw3ICszODI2Myw3IEBAIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSBfQUNFT0YKKyAKK0BAIC00MTc4Nyw3ICs0MTc4Nyw3IEBAIF9BQ0VPRgorIAogIAogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKIC0jZGVmaW5lIFBSX1BJRF9GSUxFX1BBVEggImBldmFsIGVjaG8gIiR7bG9jYWxzdGF0ZWRpcn0vcHJvZnRwZC5waWQiYCIKQEAgLTgyLDI1ICs4MiwyNSBAQAogIF9BQ0VPRgogIAogIAotSW5kZXg6IHByb2Z0cGQtMS4zLjUvY29uZmlndXJlLmluCitJbmRleDogcHJvZnRwZC0xLjMuNi9jb25maWd1cmUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwcm9mdHBkLTEuMy41Lm9yaWcvY29uZmlndXJlLmluCi0rKysgcHJvZnRwZC0xLjMuNS9jb25maWd1cmUuaW4KLUBAIC0yOTcxLDggKzI5NzEsOCBAQCBsb2NhbGVfZGlyPSJgZXZhbCBlY2hvICR7bG9jYWxlX2Rpcn1gIgotIEFDX0RFRklORV9VTlFVT1RFRChQUl9MT0NBTEVfRElSLCAiYGV2YWwgZWNobyAiJHtsb2NhbGVfZGlyfSJgIikKKy0tLSBwcm9mdHBkLTEuMy42Lm9yaWcvY29uZmlndXJlLmluCisrKysgcHJvZnRwZC0xLjMuNi9jb25maWd1cmUuaW4KK0BAIC0zODMzLDggKzM4MzMsOCBAQCBsb2NhbGVfZGlyPSJgZXZhbCBlY2hvICR7bG9jYWxlX2Rpcn1gIgorIEFDX0RFRklORV9VTlFVT1RFRChQUl9MT0NBTEVfRElSLCAiYGV2YWwgZWNobyAiJHtsb2NhbGVfZGlyfSJgIiwgW0RlZmluZSB0aGUgbG9jYWxlIGRpcmVjdG9yeV0pCiAgCi0gQUNfREVGSU5FX1VOUVVPVEVEKFBSX1JVTl9ESVIsICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9ImAiKQotLUFDX0RFRklORV9VTlFVT1RFRChQUl9DT05GSUdfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtzeXNjb25mZGlyfS9wcm9mdHBkLmNvbmYiYCIpCi0tQUNfREVGSU5FX1VOUVVPVEVEKFBSX1BJRF9GSUxFX1BBVEgsICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9L3Byb2Z0cGQucGlkImAiKQotK0FDX0RFRklORV9VTlFVT1RFRChQUl9DT05GSUdfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtzeXNjb25mZGlyfS9ydW4vcHJvZnRwZC5jb25mImAiKQotK0FDX0RFRklORV9VTlFVT1RFRChQUl9QSURfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfS9ydW4vcHJvZnRwZC5waWQiYCIpCisgQUNfREVGSU5FX1VOUVVPVEVEKFBSX1JVTl9ESVIsICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9ImAiLCBbRGVmaW5lIHRoZSBydW4gZGlyZWN0b3J5XSkKKy1BQ19ERUZJTkVfVU5RVU9URUQoUFJfQ09ORklHX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mImAiLCBbRGVmaW5lIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgcGF0aF0pCistQUNfREVGSU5FX1VOUVVPVEVEKFBSX1BJRF9GSUxFX1BBVEgsICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9L3Byb2Z0cGQucGlkImAiLCBbRGVmaW5lIHRoZSBQSUQgZmlsZSBwYXRoXSkKKytBQ19ERUZJTkVfVU5RVU9URUQoUFJfQ09ORklHX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7c3lzY29uZmRpcn0vcnVuL3Byb2Z0cGQuY29uZiJgIiwgW0RlZmluZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHBhdGhdKQorK0FDX0RFRklORV9VTlFVT1RFRChQUl9QSURfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfS9ydW4vcHJvZnRwZC5waWQiYCIsIFtEZWZpbmUgdGhlIFBJRCBmaWxlIHBhdGhdKQogIAogIHByZWZpeD0iJHByX3NhdmVkX3ByZWZpeCIKICBleGVjX3ByZWZpeD0iJHByX3NhdmVkX2V4ZWNfcHJlZml4IgotSW5kZXg6IHByb2Z0cGQtMS4zLjUvbGliL2xpYmNhcC9NYWtlZmlsZQorSW5kZXg6IHByb2Z0cGQtMS4zLjYvbGliL2xpYmNhcC9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHByb2Z0cGQtMS4zLjUub3JpZy9saWIvbGliY2FwL01ha2VmaWxlCi0rKysgcHJvZnRwZC0xLjMuNS9saWIvbGliY2FwL01ha2VmaWxlCistLS0gcHJvZnRwZC0xLjMuNi5vcmlnL2xpYi9saWJjYXAvTWFrZWZpbGUKKysrKyBwcm9mdHBkLTEuMy42L2xpYi9saWJjYXAvTWFrZWZpbGUKIEBAIC0yNiw3ICsyNiw3IEBAIE9CSlM9JChhZGRzdWZmaXggLm8sICQoRklMRVMpKQogIGFsbDogJChMSUJOQU1FKQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNWIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9wcm9mdHBkXzEuMy41Yi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlZmFjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9wcm9mdHBkXzEuMy41Yi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBhbmQgY29uZmlndXJhYmxlIEZUUCBzZXJ2ZXIiCi1TRUNUSU9OID0gIm5ldCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHJvZnRwZC5vcmciCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiMGQxNDg0ZDExOTE1ZmE4OGE2YTc3MDJmMWRjMTg0IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5wcm9mdHBkLm9yZy9kaXN0cmliL3NvdXJjZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Jhc2ljLmNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHJvZnRwZC1iYXNpYy5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vY2xvc2UtUmVxdWlyZVZhbGlkU2hlbGwtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29udHJpYi5wYXRjaCAgXAotICAgICAgICAgICBmaWxlOi8vYnVpbGRfZml4dXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHJvZnRwZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjdiOGUzYTM4M2IzNGE4OTRjMjUwMmRiNzRjY2NjZGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWZjMTc4OWYyNDc4YWNmODhkZmRjN2Q3MGRhOTBhNGZhMjc4NmQ2MjgyMThlOTU3NDI3MzI5NWQwNDRiNGZjOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVzZXJhZGQgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAic2hhZG93IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHBhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbY3Vyc2VzXSA9ICItLWVuYWJsZS1jdXJzZXMgLS1lbmFibGUtbmN1cnNlcywgLS1kaXNhYmxlLWN1cnNlcyAtLWRpc2FibGUtbmN1cnNlcywgbmN1cnNlcyIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwgLS1kaXNhYmxlLW9wZW5zc2wsIG9wZW5zc2wsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtYXV0aC1wYW0sIC0tZGlzYWJsZS1hdXRoLXBhbSwgbGlicGFtLCBsaWJwYW0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsIC0tZGlzYWJsZS1pcHY2IgotUEFDS0FHRUNPTkZJR1tzaGFkb3ddID0gIi0tZW5hYmxlLXNoYWRvdywgLS1kaXNhYmxlLXNoYWRvdyIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwgLS1kaXNhYmxlLXBjcmUsIGxpYnBjcmUgIgotCi0jIGVuYWJsZSBQT1NJWC4xZSBjYXBhYmlsaXRpZXMKLVBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1jYXAsIC0tZGlzYWJsZS1jYXAsIGxpYmNhcCwgbGliY2FwIgotCi0jZW5hYmxlIHN1cHBvcnQgZm9yIFBPU0lYIEFDTHMKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1mYWNsLCAtLWRpc2FibGUtZmFjbCIKLQotI2VuYWJsZSBwcm9mdHBkIGNvbnRyb2xzIHZpYSBmdHBkY3QKLVBBQ0tBR0VDT05GSUdbY3RybHNdID0gIi0tZW5hYmxlLWN0cmxzLCAtLWRpc2FibGUtY3J0bHMiCi0KLSNwcmV2ZW50IHByb2Z0cGQgZnJvbSB1c2luZyBpdHMgYnVuZGxlZCBnZXRvcHQgaW1wbGVtZW50YXRpb24uCi1QQUNLQUdFQ09ORklHW2dldG9wdF0gPSAiLS13aXRoLWdldG9wdCwgLS13aXRob3V0LWdldG9wdCIKLQotI2RvIG5vdCBzdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scyBmcm9tIGluc3RhbGxlZCBjb2RlCi1QQUNLQUdFQ09ORklHW3N0cmlwXSA9ICItLWVuYWJsZS1zdHJpcCwgLS1kaXNhYmxlLXN0cmlwIgotCi0jZW5hYmxlIFNJQSBhdXRoZW50aWNhdGlvbiBzdXBwb3J0IChUcnU2NCkKLVBBQ0tBR0VDT05GSUdbc2lhXSA9ICItLWVuYWJsZS1zaWEsIC0tZGlzYWJsZS1zaWEiCi1QQUNLQUdFQ09ORklHW3NlbmRmaWxlXSA9ICItZW5hYmxlLXNlbmRmaWxlLCAtLWRpc2FibGUtc2VuZGZpbGUiCi0KLSNlbmFibGUgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQgKE5MUykKLVBBQ0tBR0VDT05GSUdbbmxzXSA9ICItLWVuYWJsZS1ubHMsIC0tZGlzYWJsZS1ubHMiCi0KLSNhZGQgbW9kX2RzbyB0byBjb3JlIG1vZHVsZXMKLVBBQ0tBR0VDT05GSUdbZHNvXSA9ICItLWVuYWJsZS1kc28sIC0tZGlzYWJsZS1kc28iCi1QQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLCAtLWRpc2FibGUtbGFyZ2VmaWxlIgotCi0jb21pdCBtb2RfYXV0aF9maWxlIGZyb20gY29yZSBtb2R1bGVzCi1QQUNLQUdFQ09ORklHW2F1dGhdID0gIi0tZW5hYmxlLWF1dGgtZmlsZSwgLS1kaXNhYmxlLWF1dGgtZmlsZSIKLQotCi0jIHByb2Z0cGQgdXNlcyBsaWJsdGRsIHdoaWNoIGN1cnJlbnRseSBtYWtlcyBjb25maWd1cmluZyB1c2luZwotIyBhdXRvdG9vbHMuYmJjbGFzcyBhIHBhaW4uLi4KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgb2VfcnVuY29uZgotICAgIGNwICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wgJHtTfS9saWJ0b29sCi19Ci0KLUZUUFVTRVIgPSAiZnRwIgotRlRQR1JPVVAgPSAiZnRwIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi0gICAgcm1kaXIgJHtEfSR7bGliZGlyfS9wcm9mdHBkICR7RH0ke2RhdGFkaXJ9L2xvY2FsZQotICAgIFsgLWQgJHtEfSR7bGliZXhlY2Rpcn0gXSAmJiBybWRpciAke0R9JHtsaWJleGVjZGlyfQotICAgIHNlZCAtaSAnLyAqVXNlclsgXHRdKi9zL2Z0cC8ke0ZUUFVTRVJ9LycgJHtEfSR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mCi0gICAgc2VkIC1pICcvICpHcm91cFsgXHRdKi9zL2Z0cC8ke0ZUUEdST1VQfS8nICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2Z0cGQuY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcHJvZnRwZC1iYXNpYy5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCi0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKLSAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKLSAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3Byb2Z0cGQKLQotICAgICMgY3JlYXRlIHRoZSBwdWIgZGlyZWN0b3J5Ci0gICAgbWtkaXIgLXAgJHtEfS9ob21lLyR7RlRQVVNFUn0vcHViLwotICAgIGNob3duIC1SICR7RlRQVVNFUn06JHtGVFBHUk9VUH0gJHtEfS9ob21lLyR7RlRQVVNFUn0vcHViCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAjIGluc3RhbGwgcHJvZnRwZCBwYW0gY29uZmlndXJhdGlvbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vY29udHJpYi9kaXN0L3JwbS9mdHAucGFtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9wcm9mdHBkCi0gICAgICAgIHNlZCAtaSAnL2Z0cHVzZXJzL2QnICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3Byb2Z0cGQKLSAgICAgICAgIyBzcGVjaWZ5IHRoZSB1c2VyIEF1dGhlbnRpY2F0aW9uIGNvbmZpZwotICAgICAgICBzZWQgLWkgJy9eTWF4SW5zdGFuY2VzL2FcQXV0aFBBTSAgICAgICAgICAgICAgICAgICAgICAgICBvblxuQXV0aFBBTUNvbmZpZyAgICAgICAgICAgICAgICAgICBwcm9mdHBkJyBcCi0gICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9wcm9mdHBkLmNvbmYKLSAgICBmaQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3Byb2Z0cGQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgIC1pICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0gICAgc2VkIC1lICdzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnJyBcCi0gICAgICAgIC1lICdzfCR7U1RBR0lOR19ESVJfTkFUSVZFfXx8ZycgXAotICAgICAgICAtZSAnc3wtZmRlYnVnLXByZWZpeC1tYXA9W14gXSp8fGcnIFwKLSAgICAgICAgLWkgJHtEfS8ke2JpbmRpcn0vcHJ4cwotCi0gICAgIyBmdHBtYWlsIHBlcmwgc2NyaXB0LCB3aGljaCByZWFkcyB0aGUgcHJvZnRwZCBsb2cgZmlsZSBhbmQgc2VuZHMKLSAgICAjIGF1dG9tYXRpYyBlbWFpbCBub3RpZmljYXRpb25zIG9uY2UgYW4gdXBsb2FkIGZpbmlzaHMsCi0gICAgIyBkZXBlbmRzIG9uIGFuIG9sZCBwZXJsIE1haWw6OlNlbmRtYWlsCi0gICAgIyBUaGUgTWFpbDo6U2VuZG1haWwgaGFzIG5vdCBiZWVuIG1haW50YWluZWQgZm9yIGFsbW9zdCAxMCB5ZWFycwotICAgICMgT3RoZXIgZGlzdHJpYnV0aW9uIG5vdCBzaGlwIHdpdGggZnRwbWFpbCwgc28gZG8gdGhlIHNhbWUgdG8KLSAgICAjIGF2b2lkIGNvbmZ1c2lvbiBhYm91dCBoYXZpbmcgaXQgZmFpbHMgdG8gcnVuCi0gICAgcm0gLXJmICR7RH0ke2JpbmRpcn0vZnRwbWFpbAotICAgIHJtIC1yZiAke0R9JHttYW5kaXJ9L21hbjEvZnRwbWFpbC4xCi19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJwcm9mdHBkIgotSU5JVFNDUklQVF9QQVJBTSA9ICJkZWZhdWx0cyA4NSAxNSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwcm9mdHBkLnNlcnZpY2UiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAke0ZUUEdST1VQfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWcgJHtGVFBHUk9VUH0gLS1ob21lLWRpciAvdmFyL2xpYi8ke0ZUUFVTRVJ9IC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgJHtGVFBVU0VSfSIKLQotRklMRVNfJHtQTn0gKz0gIi9ob21lLyR7RlRQVVNFUn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA5OTQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjYuYmIKQEAgLTAsMCArMSwxMzggQEAKK1NVTU1BUlkgPSAiU2VjdXJlIGFuZCBjb25maWd1cmFibGUgRlRQIHNlcnZlciIKK1NFQ1RJT04gPSAibmV0IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wcm9mdHBkLm9yZyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmIwZDE0ODRkMTE5MTVmYTg4YTZhNzcwMmYxZGMxODQiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLnByb2Z0cGQub3JnL2Rpc3RyaWIvc291cmNlLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYmFzaWMuY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9mdHBkLWJhc2ljLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9jbG9zZS1SZXF1aXJlVmFsaWRTaGVsbC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb250cmliLnBhdGNoICBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZF9maXh1cC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9mdHBkLnNlcnZpY2UgXAorICAgICAgICAgICAiCitpU1JDX1VSSVttZDVzdW1dID0gIjEzMjcwOTExYzQyYWFjODQyNDM1ZjE4MjA1NTQ2YTFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxZWY3NGIxNDM0OTVkNWZmOTdjNGQ0NzcwYzY4MDQwNzJhOGM4ZWIxYWQxZWNjOGNjNTQxYjQwZTE1MmVjYWYiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gInNoYWRvdyBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NiBwYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW2N1cnNlc10gPSAiLS1lbmFibGUtY3Vyc2VzIC0tZW5hYmxlLW5jdXJzZXMsIC0tZGlzYWJsZS1jdXJzZXMgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsIC0tZGlzYWJsZS1vcGVuc3NsLCBvcGVuc3NsLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLWF1dGgtcGFtLCAtLWRpc2FibGUtYXV0aC1wYW0sIGxpYnBhbSwgbGlicGFtIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiIKK1BBQ0tBR0VDT05GSUdbc2hhZG93XSA9ICItLWVuYWJsZS1zaGFkb3csIC0tZGlzYWJsZS1zaGFkb3ciCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsIC0tZGlzYWJsZS1wY3JlLCBsaWJwY3JlICIKKworIyBlbmFibGUgUE9TSVguMWUgY2FwYWJpbGl0aWVzCitQQUNLQUdFQ09ORklHW2NhcF0gPSAiLS1lbmFibGUtY2FwLCAtLWRpc2FibGUtY2FwLCBsaWJjYXAsIGxpYmNhcCIKKworI2VuYWJsZSBzdXBwb3J0IGZvciBQT1NJWCBBQ0xzCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtZmFjbCwgLS1kaXNhYmxlLWZhY2wiCisKKyNlbmFibGUgcHJvZnRwZCBjb250cm9scyB2aWEgZnRwZGN0CitQQUNLQUdFQ09ORklHW2N0cmxzXSA9ICItLWVuYWJsZS1jdHJscywgLS1kaXNhYmxlLWNydGxzIgorCisjcHJldmVudCBwcm9mdHBkIGZyb20gdXNpbmcgaXRzIGJ1bmRsZWQgZ2V0b3B0IGltcGxlbWVudGF0aW9uLgorUEFDS0FHRUNPTkZJR1tnZXRvcHRdID0gIi0td2l0aC1nZXRvcHQsIC0td2l0aG91dC1nZXRvcHQiCisKKyNkbyBub3Qgc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSBpbnN0YWxsZWQgY29kZQorUEFDS0FHRUNPTkZJR1tzdHJpcF0gPSAiLS1lbmFibGUtc3RyaXAsIC0tZGlzYWJsZS1zdHJpcCIKKworI2VuYWJsZSBTSUEgYXV0aGVudGljYXRpb24gc3VwcG9ydCAoVHJ1NjQpCitQQUNLQUdFQ09ORklHW3NpYV0gPSAiLS1lbmFibGUtc2lhLCAtLWRpc2FibGUtc2lhIgorUEFDS0FHRUNPTkZJR1tzZW5kZmlsZV0gPSAiLWVuYWJsZS1zZW5kZmlsZSwgLS1kaXNhYmxlLXNlbmRmaWxlIgorCisjZW5hYmxlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0IChOTFMpCitQQUNLQUdFQ09ORklHW25sc10gPSAiLS1lbmFibGUtbmxzLCAtLWRpc2FibGUtbmxzIgorCisjYWRkIG1vZF9kc28gdG8gY29yZSBtb2R1bGVzCitQQUNLQUdFQ09ORklHW2Rzb10gPSAiLS1lbmFibGUtZHNvLCAtLWRpc2FibGUtZHNvIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwgLS1kaXNhYmxlLWxhcmdlZmlsZSIKKworI29taXQgbW9kX2F1dGhfZmlsZSBmcm9tIGNvcmUgbW9kdWxlcworUEFDS0FHRUNPTkZJR1thdXRoXSA9ICItLWVuYWJsZS1hdXRoLWZpbGUsIC0tZGlzYWJsZS1hdXRoLWZpbGUiCisKKworIyBwcm9mdHBkIHVzZXMgbGlibHRkbCB3aGljaCBjdXJyZW50bHkgbWFrZXMgY29uZmlndXJpbmcgdXNpbmcKKyMgYXV0b3Rvb2xzLmJiY2xhc3MgYSBwYWluLi4uCitkb19jb25maWd1cmUgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQorICAgIG9lX3J1bmNvbmYKKyAgICBjcCAke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sICR7U30vbGlidG9vbAorfQorCitGVFBVU0VSID0gImZ0cCIKK0ZUUEdST1VQID0gImZ0cCIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorICAgIHJtZGlyICR7RH0ke2xpYmRpcn0vcHJvZnRwZCAke0R9JHtkYXRhZGlyfS9sb2NhbGUKKyAgICBbIC1kICR7RH0ke2xpYmV4ZWNkaXJ9IF0gJiYgcm1kaXIgJHtEfSR7bGliZXhlY2Rpcn0KKyAgICBzZWQgLWkgJy8gKlVzZXJbIFx0XSovcy9mdHAvJHtGVFBVU0VSfS8nICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2Z0cGQuY29uZgorICAgIHNlZCAtaSAnLyAqR3JvdXBbIFx0XSovcy9mdHAvJHtGVFBHUk9VUH0vJyAke0R9JHtzeXNjb25mZGlyfS9wcm9mdHBkLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Byb2Z0cGQtYmFzaWMuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAorICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCisgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCisgICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9wcm9mdHBkCisKKyAgICAjIGNyZWF0ZSB0aGUgcHViIGRpcmVjdG9yeQorICAgIG1rZGlyIC1wICR7RH0vaG9tZS8ke0ZUUFVTRVJ9L3B1Yi8KKyAgICBjaG93biAtUiAke0ZUUFVTRVJ9OiR7RlRQR1JPVVB9ICR7RH0vaG9tZS8ke0ZUUFVTRVJ9L3B1YgorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgIyBpbnN0YWxsIHByb2Z0cGQgcGFtIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZAorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L2NvbnRyaWIvZGlzdC9ycG0vZnRwLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcHJvZnRwZAorICAgICAgICBzZWQgLWkgJy9mdHB1c2Vycy9kJyAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9wcm9mdHBkCisgICAgICAgICMgc3BlY2lmeSB0aGUgdXNlciBBdXRoZW50aWNhdGlvbiBjb25maWcKKyAgICAgICAgc2VkIC1pICcvXk1heEluc3RhbmNlcy9hXEF1dGhQQU0gICAgICAgICAgICAgICAgICAgICAgICAgb25cbkF1dGhQQU1Db25maWcgICAgICAgICAgICAgICAgICAgcHJvZnRwZCcgXAorICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9wcm9mdHBkLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworICAgIHNlZCAtZSAnc3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZycgXAorICAgICAgICAtZSAnc3wke1NUQUdJTkdfRElSX05BVElWRX18fGcnIFwKKyAgICAgICAgLWUgJ3N8LWZkZWJ1Zy1wcmVmaXgtbWFwPVteIF0qfHxnJyBcCisgICAgICAgIC1pICR7RH0vJHtiaW5kaXJ9L3ByeHMKKworICAgICMgZnRwbWFpbCBwZXJsIHNjcmlwdCwgd2hpY2ggcmVhZHMgdGhlIHByb2Z0cGQgbG9nIGZpbGUgYW5kIHNlbmRzCisgICAgIyBhdXRvbWF0aWMgZW1haWwgbm90aWZpY2F0aW9ucyBvbmNlIGFuIHVwbG9hZCBmaW5pc2hzLAorICAgICMgZGVwZW5kcyBvbiBhbiBvbGQgcGVybCBNYWlsOjpTZW5kbWFpbAorICAgICMgVGhlIE1haWw6OlNlbmRtYWlsIGhhcyBub3QgYmVlbiBtYWludGFpbmVkIGZvciBhbG1vc3QgMTAgeWVhcnMKKyAgICAjIE90aGVyIGRpc3RyaWJ1dGlvbiBub3Qgc2hpcCB3aXRoIGZ0cG1haWwsIHNvIGRvIHRoZSBzYW1lIHRvCisgICAgIyBhdm9pZCBjb25mdXNpb24gYWJvdXQgaGF2aW5nIGl0IGZhaWxzIHRvIHJ1bgorICAgIHJtIC1yZiAke0R9JHtiaW5kaXJ9L2Z0cG1haWwKKyAgICBybSAtcmYgJHtEfSR7bWFuZGlyfS9tYW4xL2Z0cG1haWwuMQorfQorCitJTklUU0NSSVBUX05BTUUgPSAicHJvZnRwZCIKK0lOSVRTQ1JJUFRfUEFSQU0gPSAiZGVmYXVsdHMgODUgMTUiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicHJvZnRwZC5zZXJ2aWNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gJHtGVFBHUk9VUH0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC1nICR7RlRQR1JPVVB9IC0taG9tZS1kaXIgL3Zhci9saWIvJHtGVFBVU0VSfSAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlICR7RlRQVVNFUn0iCisKK0ZJTEVTXyR7UE59ICs9ICIvaG9tZS8ke0ZUUFVTRVJ9IgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9yYWR2ZC9yYWR2ZF8yLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkXzIuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MjUyNDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkXzIuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotcmVxdWlyZSByYWR2ZC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImFjZDM4ODNkZWNlMmM3ODg4ZDE1NTk2YjA1YzlmYWU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2ZDMxYzA1ZGFlYTExYzNkMWUzZGMwOTI5OTdkMzYzMWIzYmM3MmIyMGE0ZjI3OWIwNTMwNGI4M2RiZDdhYTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmRfMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9yYWR2ZC9yYWR2ZF8yLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYWVhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmRfMi4xNy5iYgpAQCAtMCwwICsxLDUgQEAKKworcmVxdWlyZSByYWR2ZC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjY0ZWUzZmRiNTU0NGJjZGRlZjFjNmNkODBkNzdmYTBhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzNzU3ZTdmMjE2NDg5OWUxMTQ1NDgyZjFhZTkxODI5NjAwYTZlMmY2ZmVjMjljZmIzYjM1MGEzYmI0NWJkNWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzBhM2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSAxNGQ0NjliYzgyYzc1ODExNmFlZjdkNTQ5YWJkNDljMTMxYjQxNzBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjIgQXByIDIwMTcgMTE6NTQ6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBDaGVjayBmb3IgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiBjb21waWxlcgorIG9wdGlvbgorCitJZiB0aGlzIG9wdGlvbiBpcyBzdXBwb3J0ZWQgYnkgY29tcGlsZXIgdGhlbiBkaXNhYmxlIGl0ICggZ2NjNyspCitGaXhlcworY2xpZW50LmM6ODM0OjIzOiBlcnJvcjogJyVzJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyB1cCB0byAxMDIzIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAxMDEwIFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8ICAzICstCisgbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAorCitJbmRleDogc3F1aWQtMy41LjI2L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNxdWlkLTMuNS4yNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHNxdWlkLTMuNS4yNi9jb25maWd1cmUuYWMKK0BAIC0yNiw2ICsyNiw3IEBAIG00X2luY2x1ZGUoW2FjaW5jbHVkZS9wa2cubTRdKQorIG00X2luY2x1ZGUoW2FjaW5jbHVkZS9saWItY2hlY2tzLm00XSkKKyBtNF9pbmNsdWRlKFthY2luY2x1ZGUvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00XSkKKyBtNF9pbmNsdWRlKFthY2luY2x1ZGUvYXhfY3h4XzB4X3R5cGVzLm00XSkKKyttNF9pbmNsdWRlKFthY2luY2x1ZGUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00XSkKKyAKKyBIT1NUQ1hYPSIkQlVJTERfQ1hYIgorIFBSRVNFVF9DRkxBR1M9IiRDRkxBR1MiCitAQCAtNDQsNiArNDUsNyBAQCBBQ19QUk9HX0NYWAorIEFDX0xBTkcoW0MrK10pCisgQUNfQ0FOT05JQ0FMX0hPU1QKKyAKKytBWF9DSEVDS19DT01QSUxFX0ZMQUcoWy1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb25dLFtDRkxBR1M9IiRDRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiIgQ1hYRkxBR1M9IiRDWFhGTEFHUyAtV25vLWVycm9yPWZvcm1hdC10cnVuY2F0aW9uIl0pCisgIyBDbGFuZyAzLjIgb24gc29tZSBDUFVzIHJlcXVpcmVzIC1tYXJjaC1uYXRpdmUgdG8gZGV0ZWN0IGNvcnJlY3RseS4KKyAjIEdDQyA0LjMrIGNhbiBhbHNvIHByb2R1Y2UgZmFzdGVyIGV4ZWN1dGFibGVzIHdoZW4gaXRzIHVzZWQuCisgIyBCdXQgYnVpbGRpbmcgaW5zaWRlIGEgdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50IGhhcyBiZWVuIGZvdW5kIHRvCitJbmRleDogc3F1aWQtMy41LjI2L2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBzcXVpZC0zLjUuMjYvYWNpbmNsdWRlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAorQEAgLTAsMCArMSw3NCBAQAorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5odG1sCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBTWU5PUFNJUworKyMKKysjICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKEZMQUcsIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0sIFtFWFRSQS1GTEFHU10sIFtJTlBVVF0pCisrIworKyMgREVTQ1JJUFRJT04KKysjCisrIyAgIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIEZMQUcgd29ya3Mgd2l0aCB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGNvbXBpbGVyCisrIyAgIG9yIGdpdmVzIGFuIGVycm9yLiAgKFdhcm5pbmdzLCBob3dldmVyLCBhcmUgaWdub3JlZCkKKysjCisrIyAgIEFDVElPTi1TVUNDRVNTL0FDVElPTi1GQUlMVVJFIGFyZSBzaGVsbCBjb21tYW5kcyB0byBleGVjdXRlIG9uCisrIyAgIHN1Y2Nlc3MvZmFpbHVyZS4KKysjCisrIyAgIElmIEVYVFJBLUZMQUdTIGlzIGRlZmluZWQsIGl0IGlzIGFkZGVkIHRvIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgZGVmYXVsdAorKyMgICBmbGFncyAoZS5nLiBDRkxBR1MpIHdoZW4gdGhlIGNoZWNrIGlzIGRvbmUuICBUaGUgY2hlY2sgaXMgdGh1cyBtYWRlIHdpdGgKKysjICAgdGhlIGZsYWdzOiAiQ0ZMQUdTIEVYVFJBLUZMQUdTIEZMQUciLiAgVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgdXNlZCB0bworKyMgICBmb3JjZSB0aGUgY29tcGlsZXIgdG8gaXNzdWUgYW4gZXJyb3Igd2hlbiBhIGJhZCBmbGFnIGlzIGdpdmVuLgorKyMKKysjICAgSU5QVVQgZ2l2ZXMgYW4gYWx0ZXJuYXRpdmUgaW5wdXQgc291cmNlIHRvIEFDX0NPTVBJTEVfSUZFTFNFLgorKyMKKysjICAgTk9URTogSW1wbGVtZW50YXRpb24gYmFzZWQgb24gQVhfQ0ZMQUdTX0dDQ19PUFRJT04uIFBsZWFzZSBrZWVwIHRoaXMKKysjICAgbWFjcm8gaW4gc3luYyB3aXRoIEFYX0NIRUNLX3tQUkVQUk9DLExJTkt9X0ZMQUcuCisrIworKyMgTElDRU5TRQorKyMKKysjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisrIyAgIENvcHlyaWdodCAoYykgMjAxMSBNYWFydGVuIEJvc21hbnMgPG1rYm9zbWFuc0BnbWFpbC5jb20+CisrIworKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrIworKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisrIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKysjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisrIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKysjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisrIworKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKysjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisrIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorKworKyNzZXJpYWwgNQorKworK0FDX0RFRlVOKFtBWF9DSEVDS19DT01QSUxFX0ZMQUddLAorK1tBQ19QUkVSRVEoMi42NClkbmwgZm9yIF9BQ19MQU5HX1BSRUZJWCBhbmQgQVNfVkFSX0lGCisrQVNfVkFSX1BVU0hERUYoW0NBQ0hFVkFSXSxbYXhfY3ZfY2hlY2tfW11fQUNfTEFOR19BQkJSRVZbXWZsYWdzXyQ0XyQxXSlkbmwKKytBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBfQUNfTEFORyBjb21waWxlciBhY2NlcHRzICQxXSwgQ0FDSEVWQVIsIFsKKysgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JFtdX0FDX0xBTkdfUFJFRklYW11GTEFHUworKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0iJFtdX0FDX0xBTkdfUFJFRklYW11GTEFHUyAkNCAkMSIKKysgIEFDX0NPTVBJTEVfSUZFTFNFKFttNF9kZWZhdWx0KFskNV0sW0FDX0xBTkdfUFJPR1JBTSgpXSldLAorKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbeWVzXSldLAorKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbbm9dKV0pCisrICBfQUNfTEFOR19QUkVGSVhbXUZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzXSkKKytBU19WQVJfSUYoQ0FDSEVWQVIseWVzLAorKyAgW200X2RlZmF1bHQoWyQyXSwgOildLAorKyAgW200X2RlZmF1bHQoWyQzXSwgOildKQorK0FTX1ZBUl9QT1BERUYoW0NBQ0hFVkFSXSlkbmwKKytdKWRubCBBWF9DSEVDS19DT01QSUxFX0ZMQUdTCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS10b29scy5jYy1maXhlZC11bnVzZWQtcmVzdWx0LXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS10b29scy5jYy1maXhlZC11bnVzZWQtcmVzdWx0LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyYTExMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLXRvb2xzLmNjLWZpeGVkLXVudXNlZC1yZXN1bHQtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGE3OGYyZjBmZWRhOGY5MmNiNTlhZmU4MjM2YmQ5MDcyNjkwODc2OGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyNSBKdW4gMjAxNyAwMDo1OToyNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSB0b29scy5jYzogZml4ZWQgdW51c2VkLXJlc3VsdCB3YXJuaW5nCisKK2ZpeAorfCAuLi8uLi9zcXVpZC0zLjUuMjYvc3JjL3Rvb2xzLmNjOiBJbiBmdW5jdGlvbiAndm9pZCBlbnRlcl9zdWlkKCknOgorfCAuLi8uLi9zcXVpZC0zLjUuMjYvc3JjL3Rvb2xzLmNjOjYxNjoxMTogZXJyb3I6IGlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnaW50IHNldHVpZChfX3VpZF90KScsIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdCBbLVdlcnJvcj11bnVzZWQtcmVzdWx0XQorfCAgICAgIHNldHVpZCgwKTsKK3wgICAgICB+fn5+fn5efn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIHNyYy90b29scy5jYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdG9vbHMuY2MgYi9zcmMvdG9vbHMuY2MKK2luZGV4IDgxMzdhMDMuLjg0M2UyNjYgMTAwNjQ0CistLS0gYS9zcmMvdG9vbHMuY2MKKysrKyBiL3NyYy90b29scy5jYworQEAgLTYxMiw4ICs2MTIsOCBAQCBlbnRlcl9zdWlkKHZvaWQpCisgICAgIGlmIChzZXRyZXN1aWQoKHVpZF90KS0xLCAwLCAodWlkX3QpLTEpIDwgMCkKKyAgICAgICAgIGRlYnVncyAoMjEsIDMsICJlbnRlcl9zdWlkOiBzZXRyZXN1aWQgZmFpbGVkOiAiIDw8IHhzdHJlcnJvciAoKSk7CisgI2Vsc2UKKy0KKy0gICAgc2V0dWlkKDApOworKyAgICBpZiAoc2V0dWlkKDApIDwgMCkKKysgICAgICAgIGRlYnVncyg1MCwgREJHX0lNUE9SVEFOVCwgIldBUk5JTkc6IG5vX3N1aWQ6IHNldHVpZCgwKTogIiA8PCB4c3RyZXJyb3IoKSk7CisgI2VuZGlmCisgI2lmIEhBVkVfUFJDVEwgJiYgZGVmaW5lZChQUl9TRVRfRFVNUEFCTEUpCisgICAgIC8qIFNldCBMaW51eCBEVU1QQUJMRSBmbGFnICovCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9nY2M3LWZpeGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMWVhNzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaApAQCAtMCwwICsxLDE3IEBACisuLi8uLi9zcXVpZC0zLjUuMjYvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYzogSW4gZnVuY3Rpb24gJ3ZvaWQgc3F1aWRhaW9faW5pdCgpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLy4uL3NxdWlkLTMuNS4yNi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL0Rpc2tUaHJlYWRzLmg6MzA6NTA6IGVycm9yOiAnKicgaW4gYm9vbGVhbiBjb250ZXh0LCBzdWdnZXN0ICcmJicgaW5zdGVhZCBbLVdlcnJvcj1pbnQtaW4tYm9vbC1jb250ZXh0XSAgICAgICNkZWZpbmUgTlVNVEhSRUFEUyAoQ29uZmlnLmNhY2hlU3dhcC5uX2NvbmZpZ3VyZWQqMTYpCisKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorSW5kZXg6IHNxdWlkLTMuNS4yNi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3F1aWQtMy41LjI2Lm9yaWcvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYworKysrIHNxdWlkLTMuNS4yNi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCitAQCAtMjkwLDcgKzI5MCw3IEBAIHNxdWlkYWlvX2luaXQodm9pZCkKKyAgICAgLyogQ3JlYXRlIHRocmVhZHMgYW5kIGdldCB0aGVtIHRvIHNpdCBpbiB0aGVpciB3YWl0IGxvb3AgKi8KKyAgICAgc3F1aWRhaW9fdGhyZWFkX3Bvb2wgPSBtZW1Qb29sQ3JlYXRlKCJhaW9fdGhyZWFkIiwgc2l6ZW9mKHNxdWlkYWlvX3RocmVhZF90KSk7CisgCistICAgIGFzc2VydChOVU1USFJFQURTKTsKKysgICAgYXNzZXJ0KE5VTVRIUkVBRFMgIT0gMCk7CisgCisgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1USFJFQURTOyArK2kpIHsKKyAgICAgICAgIHRocmVhZHAgPSAoc3F1aWRhaW9fdGhyZWFkX3QgKilzcXVpZGFpb190aHJlYWRfcG9vbC0+YWxsb2MoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTE2MzgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGx5LWZlYXR1cmVkIGh0dHAgcHJveHkgYW5kIHdlYi1jYWNoZSBkYWVtb24gZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiQSBmdWxseS1mZWF0dXJlZCBodHRwIHByb3h5IGFuZCB3ZWItY2FjaGUgZGFlbW9uIGZvciBMaW51eC4gXAotU3F1aWQgb2ZmZXJzIGEgcmljaCBhY2Nlc3MgY29udHJvbCwgYXV0aG9yaXphdGlvbiBhbmQgbG9nZ2luZyBlbnZpcm9ubWVudCB0byBcCi1kZXZlbG9wIHdlYiBwcm94eSBhbmQgY29udGVudCBzZXJ2aW5nIGFwcGxpY2F0aW9ucy4gXAotU3F1aWQgb2ZmZXJzIGEgcmljaCBzZXQgb2YgdHJhZmZpYyBvcHRpbWl6YXRpb24gb3B0aW9ucywgbW9zdCBvZiB3aGljaCBhcmUgXAotZW5hYmxlZCBieSBkZWZhdWx0IGZvciBzaW1wbGVyIGluc3RhbGxhdGlvbiBhbmQgaGlnaCBwZXJmb3JtYW5jZS4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcXVpZC1jYWNoZS5vcmciCi1TRUNUSU9OID0gIndlYiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAxKX0iCi1NSU5fVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5zcXVpZC1jYWNoZS5vcmcvVmVyc2lvbnMvdiR7TUFKX1ZFUn0vJHtNSU5fVkVSfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9TZXQtdXAtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1NraXAtQUNfUlVOX0lGRUxTRS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtZmxhd2VkLWR5bmFtaWMtbGRiLWxpbmstdGVzdC1pbi1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3F1aWQtdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc3F1aWQgXAotICAgICAgICAgICBmaWxlOi8vc2V0X3N5c3Jvb3RfcGF0Y2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3F1aWQtZG9uLXQtZG8tc3F1aWQtY29uZi10ZXN0cy1hdC1idWlsZC10aW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3F1aWROZXctdXNlLW5vZXhjZXB0LWluc3RlYWQtb2YtdGhyb3ctZm9yLUMtMTEtY29tcC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMzRiMjI4MTI5YTc1NWYzNjMzNjdjNDVjNDYyODdiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmZkNjE4MjE1NGI3ZjI5NTc0ZDcxYzY1OWYxY2ZkMWI3ZDliZTkzNTY4OTVkYWM3MGRjMGYzNjk2YTA2MzliIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDkyZTJkNmQzMmVjNWMxYWFkMGUwNjA5YTE0MWNlOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcnJvcnMvQ09QWVJJR0hUO21kNT04ODYxMTMwZmFlOTE0MDBiY2Y5OWI2NmYxMzMxNzJiMyBcCi0gICAgICAgICAgICAgICAgICAgIgotREVQRU5EUyA9ICJsaWJ0b29sIGtyYjUgb3BlbmxkYXAgZGIgY3lydXMtc2FzbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBwdGVzdAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3F1aWQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzcXVpZCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdwb3dlcnBjJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdtaXBzJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdtaXBzZWwnLCAnbm9hdG9taWNzJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi1QQUNLQUdFQ09ORklHW2xpYm5ldGZpbHRlci1jb25udHJhY2tdID0gIi0td2l0aC1uZXRmaWx0ZXItY29ubnRyYWNrPSR7aW5jbHVkZWRpcn0sIC0td2l0aG91dC1uZXRmaWx0ZXItY29ubnRyYWNrLCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgotUEFDS0FHRUNPTkZJR1tub2F0b21pY3NdID0gInNxdWlkX2N2X2dudV9hdG9taWNzPW5vLHNxdWlkX2N2X2dudV9hdG9taWNzPXllcywsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotQkFTSUNfQVVUSCA9ICJEQiBTQVNMIExEQVAiCi1CQVNJQ19BVVRIX2FwcGVuZF9saWJjLWdsaWJjID0gIiBOSVMiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1CQVNJQ19BVVRIICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdQQU0nLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1kZWZhdWx0LXVzZXI9c3F1aWQgLS1lbmFibGUtYXV0aC1iYXNpYz0nJHtCQVNJQ19BVVRIfScgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IC0td2l0aC1sb2dkaXI9JHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IgotCi1leHBvcnQgQlVJTERDWFhGTEFHUz0iJHtCVUlMRF9DWFhGTEFHU30iCi0KLVRFU1RESVIgPSAidGVzdC1zdWl0ZSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgY3AgLXJmICR7Qn0vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yZiAke1N9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKLSAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIEFkZCBzcXVpZC1jb25mLXRlc3RzIGZvciBydW50aW1lIHRlc3RzCi0gICAgc2VkIC1lICdzL15cKHJ1bnRlc3QtVEVTVFM6XCkvXDEgc3F1aWQtY29uZi10ZXN0cy8nIFwKLSAgICAgICAgLWUgInMvXChsaXN0PScgXCQoVEVTVFMpXCkvXDEgc3F1aWQtY29uZi10ZXN0cy8iIFwKLSAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBFbnN1cmUgdGhlIHBhdGggZm9yIGNvbW1hbmQgdHJ1ZSBpcyBjb3JyZWN0Ci0gICAgc2VkIC1pICdzOl5UUlVFID0gLiokOlRSVUUgPSAvYmluL3RydWU6JyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAwNzU1IHNxdWlkIHNxdWlkIC0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvJHtCUE59LmNvbmYKLSAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy8ke0JQTn0gMDc1MCBzcXVpZCBzcXVpZCAtIiA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc3F1aWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc3F1aWQKLQotICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59IgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nIgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9ICR7ZGF0YWRpcn0vZXJyb3JzICR7ZGF0YWRpcn0vaWNvbnMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc3JjL2RlYnVnIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9LyoudHh0IgotCi1SREVQRU5EU18ke1BOfSArPSAicGVybCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL3NxdWlkXzMuNS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlOTZhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjYuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQSBmdWxseS1mZWF0dXJlZCBodHRwIHByb3h5IGFuZCB3ZWItY2FjaGUgZGFlbW9uIGZvciBMaW51eCIKK0RFU0NSSVBUSU9OID0gIkEgZnVsbHktZmVhdHVyZWQgaHR0cCBwcm94eSBhbmQgd2ViLWNhY2hlIGRhZW1vbiBmb3IgTGludXguIFwKK1NxdWlkIG9mZmVycyBhIHJpY2ggYWNjZXNzIGNvbnRyb2wsIGF1dGhvcml6YXRpb24gYW5kIGxvZ2dpbmcgZW52aXJvbm1lbnQgdG8gXAorZGV2ZWxvcCB3ZWIgcHJveHkgYW5kIGNvbnRlbnQgc2VydmluZyBhcHBsaWNhdGlvbnMuIFwKK1NxdWlkIG9mZmVycyBhIHJpY2ggc2V0IG9mIHRyYWZmaWMgb3B0aW1pemF0aW9uIG9wdGlvbnMsIG1vc3Qgb2Ygd2hpY2ggYXJlIFwKK2VuYWJsZWQgYnkgZGVmYXVsdCBmb3Igc2ltcGxlciBpbnN0YWxsYXRpb24gYW5kIGhpZ2ggcGVyZm9ybWFuY2UuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3F1aWQtY2FjaGUub3JnIgorU0VDVElPTiA9ICJ3ZWIiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMSl9IgorTUlOX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuc3F1aWQtY2FjaGUub3JnL1ZlcnNpb25zL3Yke01BSl9WRVJ9LyR7TUlOX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vU2V0LXVwLWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Ta2lwLUFDX1JVTl9JRkVMU0UtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LWZsYXdlZC1keW5hbWljLWxkYi1saW5rLXRlc3QtaW4tY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NxdWlkLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3NxdWlkIFwKKyAgICAgICAgICAgZmlsZTovL3NldF9zeXNyb290X3BhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NxdWlkLWRvbi10LWRvLXNxdWlkLWNvbmYtdGVzdHMtYXQtYnVpbGQtdGltZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNxdWlkTmV3LXVzZS1ub2V4Y2VwdC1pbnN0ZWFkLW9mLXRocm93LWZvci1DLTExLWNvbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzctZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10b29scy5jYy1maXhlZC11bnVzZWQtcmVzdWx0LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfcmVtb3ZlX3Rvb2xjaGFpbi1jbGFuZyA9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGMxODMwY2QzNjFlMDc3ODE0YWEzOWJjYzM2OTFkOGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFkODg0NTg2M2RjZDAyNmM4NTY1MDhjZDE1OTlkNDE3Yzg5NDdmZmQ5NmU4NmUyNDA4NWY5ODkzY2I4YjhjMiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQ5MmUyZDZkMzJlYzVjMWFhZDBlMDYwOWExNDFjZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXJyb3JzL0NPUFlSSUdIVDttZDU9ODg2MTEzMGZhZTkxNDAwYmNmOTliNjZmMTMzMTcyYjMgXAorICAgICAgICAgICAgICAgICAgICIKK0RFUEVORFMgPSAibGlidG9vbCBrcmI1IG9wZW5sZGFwIGRiIGN5cnVzLXNhc2wgb3BlbnNzbCBleHBhdCBsaWJ4bWwyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBwdGVzdCBwZXJsbmF0aXZlCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zcXVpZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNxdWlkIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9BUkNIJywgJ3Bvd2VycGMnLCAnbm9hdG9taWNzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9BUkNIJywgJ21pcHMnLCAnbm9hdG9taWNzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9BUkNIJywgJ21pcHNlbCcsICdub2F0b21pY3MnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICIKK1BBQ0tBR0VDT05GSUdbbGlibmV0ZmlsdGVyLWNvbm50cmFja10gPSAiLS13aXRoLW5ldGZpbHRlci1jb25udHJhY2s9JHtpbmNsdWRlZGlyfSwgLS13aXRob3V0LW5ldGZpbHRlci1jb25udHJhY2ssIGxpYm5ldGZpbHRlci1jb25udHJhY2siCitQQUNLQUdFQ09ORklHW25vYXRvbWljc10gPSAic3F1aWRfY3ZfZ251X2F0b21pY3M9bm8sc3F1aWRfY3ZfZ251X2F0b21pY3M9eWVzLCwiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitCQVNJQ19BVVRIID0gIkRCIFNBU0wgTERBUCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK0JBU0lDX0FVVEggKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ1BBTScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWRlZmF1bHQtdXNlcj1zcXVpZCAtLWVuYWJsZS1hdXRoLWJhc2ljPScke0JBU0lDX0FVVEh9JyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sb2dkaXI9JHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IFwKKyAgICAgICAgICAgICAgICAgJ1BFUkw9JHtVU1JCSU5QQVRIfS9lbnYgcGVybCciCisKK2V4cG9ydCBCVUlMRENYWEZMQUdTPSIke0JVSUxEX0NYWEZMQUdTfSIKKworVEVTVERJUiA9ICJ0ZXN0LXN1aXRlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBjcCAtcmYgJHtCfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkIE1ha2VmaWxlIGl0c2VsZgorICAgIHNlZCAtaSAncy9eTWFrZWZpbGU6LiokL01ha2VmaWxlOi8nICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKworICAgICMgQWRkIHNxdWlkLWNvbmYtdGVzdHMgZm9yIHJ1bnRpbWUgdGVzdHMKKyAgICBzZWQgLWUgJ3MvXlwocnVudGVzdC1URVNUUzpcKS9cMSBzcXVpZC1jb25mLXRlc3RzLycgXAorICAgICAgICAtZSAicy9cKGxpc3Q9JyBcJChURVNUUylcKS9cMSBzcXVpZC1jb25mLXRlc3RzLyIgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIEVuc3VyZSB0aGUgcGF0aCBmb3IgY29tbWFuZCB0cnVlIGlzIGNvcnJlY3QKKyAgICBzZWQgLWkgJ3M6XlRSVUUgPSAuKiQ6VFJVRSA9IC9iaW4vdHJ1ZTonICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59IDA3NTUgc3F1aWQgc3F1aWQgLSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8ke0JQTn0uY29uZgorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSAwNzUwIHNxdWlkIHNxdWlkIC0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvJHtCUE59LmNvbmYKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zcXVpZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zcXVpZAorCisgICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2ciCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0gJHtkYXRhZGlyfS9lcnJvcnMgJHtkYXRhZGlyfS9pY29ucyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiL3Vzci9zcmMvZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vKi50eHQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvZmlsZXMvMDAwMS1fX3Byb2duYW1lLWlzLXByb3ZpZGVkLWJ5LWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvZmlsZXMvMDAwMS1fX3Byb2duYW1lLWlzLXByb3ZpZGVkLWJ5LWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhZDk3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS9maWxlcy8wMDAxLV9fcHJvZ25hbWUtaXMtcHJvdmlkZWQtYnktbGliYy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDk0MTAzOGZjMDViZTIxMjAyY2FiN2E3YTk0MzQwOTdmYjU1ZWNiZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9yc3RlbiBHbGFzZXIgPHRnQG1pcmJzZC5kZT4KK0RhdGU6IFRodSwgMzEgSnVsIDIwMTQgMTY6Mjk6NDEgKzA5MzAKK1N1YmplY3Q6IFtQQVRDSF0gX19wcm9nbmFtZVtdIGlzIHByb3ZpZGVkIGJ5IGxpYmMKKworUmVuYW1lIGxvY2FsIHZhcmlhYmxlIHRvIHRmdHBkX3Byb2duYW1lIHRvIGF2b2lkIGEgY2xhc2ggd2l0aCBnbGliYworZ2xvYmFsIHN5bWJvbHMgYW5kIHdvcmsgYXJvdW5kIERlYmlhbiBidWcgIzUxOTAwNiAoQ2xvc2VzOiAjNTY0MDUyKS4KKworWyBocGE6IHNwZWNpZmljYWxseSwgZG91YmxlLXVuZGVyc2NvcmUgc3ltYm9scyBpbiBDIGFyZSByZXNlcnZlZCBmb3IKKyAgdGhlIGltcGxlbWVudGF0aW9uLCBpLmUuIGNvbXBpbGVyL2xpYmMuIF0KKworU2lnbmVkLW9mZi1ieTogUm9uIExlZSA8cm9uQGRlYmlhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBILiBQZXRlciBBbnZpbiA8aHBhQGxpbnV4LmludGVsLmNvbT4KKy0tLQorIHRmdHBkL3RmdHBkLmMgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RmdHBkL3RmdHBkLmMgYi90ZnRwZC90ZnRwZC5jCitpbmRleCBlMjQ3Yjk3Li41ZmVjN2JmIDEwMDY0NAorLS0tIGEvdGZ0cGQvdGZ0cGQuYworKysrIGIvdGZ0cGQvdGZ0cGQuYworQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBhaV9mYW0gPSBBRl9JTkVUOworICNkZWZpbmUgVFJJRVMgICA2ICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIGF0dGVtcHRzIHRvIHNlbmQgZWFjaCBwYWNrZXQgKi8KKyAjZGVmaW5lIFRJTUVPVVRfTElNSVQgKCgxIDw8IFRSSUVTKS0xKQorIAorLWNvbnN0IGNoYXIgKl9fcHJvZ25hbWU7CisrY29uc3QgY2hhciAqdGZ0cGRfcHJvZ25hbWU7Cisgc3RhdGljIGludCBwZWVyOworIHN0YXRpYyB1bnNpZ25lZCBsb25nIHRpbWVvdXQgID0gVElNRU9VVDsgICAgICAgIC8qIEN1cnJlbnQgdGltZW91dCB2YWx1ZSAqLworIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJleG10dmFsID0gVElNRU9VVDsgICAgICAgLyogQmFzaWMgdGltZW91dCB2YWx1ZSAqLworQEAgLTM5NSw5ICszOTUsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgIC8qIGJhc2VuYW1lKCkgaXMgd2F5IHRvbyBtdWNoIG9mIGEgcGFpbiBmcm9tIGEgcG9ydGFiaWxpdHkgc3RhbmRwb2ludCAqLworIAorICAgICBwID0gc3RycmNocihhcmd2WzBdLCAnLycpOworLSAgICBfX3Byb2duYW1lID0gKHAgJiYgcFsxXSkgPyBwICsgMSA6IGFyZ3ZbMF07CisrICAgIHRmdHBkX3Byb2duYW1lID0gKHAgJiYgcFsxXSkgPyBwICsgMSA6IGFyZ3ZbMF07CisgCistICAgIG9wZW5sb2coX19wcm9nbmFtZSwgTE9HX1BJRCB8IExPR19OREVMQVksIExPR19EQUVNT04pOworKyAgICBvcGVubG9nKHRmdHBkX3Byb2duYW1lLCBMT0dfUElEIHwgTE9HX05ERUxBWSwgTE9HX0RBRU1PTik7CisgCisgICAgIHNyYW5kKHRpbWUoTlVMTCkgXiBnZXRwaWQoKSk7CisgCitAQCAtOTQ2LDE0ICs5NDYsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICBzeXNsb2cgZGFlbW9uIGdldHMgcmVzdGFydGVkIGJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLiAqLworICAgICBpZiAoc2VjdXJlICYmIHN0YW5kYWxvbmUpIHsKKyAgICAgICAgIGNsb3NlbG9nKCk7CistICAgICAgICBvcGVubG9nKF9fcHJvZ25hbWUsIExPR19QSUQgfCBMT0dfTkRFTEFZLCBMT0dfREFFTU9OKTsKKysgICAgICAgIG9wZW5sb2codGZ0cGRfcHJvZ25hbWUsIExPR19QSUQgfCBMT0dfTkRFTEFZLCBMT0dfREFFTU9OKTsKKyAgICAgfQorIAorICNpZmRlZiBIQVZFX1RDUFdSQVBQRVJTCisgICAgIC8qIFZlcmlmeSBpZiB0aGlzIHdhcyBhIGxlZ2FsIHJlcXVlc3QgZm9yIHVzLiAgVGhpcyBoYXMgdG8gYmUKKyAgICAgICAgZG9uZSBiZWZvcmUgdGhlIGNocm9vdCwgd2hpbGUgL2V0YyBpcyBzdGlsbCBhY2Nlc3NpYmxlLiAqLworICAgICByZXF1ZXN0X2luaXQoJndyYXBfcmVxdWVzdCwKKy0gICAgICAgICAgICAgICAgIFJRX0RBRU1PTiwgX19wcm9nbmFtZSwKKysgICAgICAgICAgICAgICAgIFJRX0RBRU1PTiwgdGZ0cGRfcHJvZ25hbWUsCisgICAgICAgICAgICAgICAgICBSUV9GSUxFLCBmZCwKKyAgICAgICAgICAgICAgICAgIFJRX0NMSUVOVF9TSU4sICZmcm9tLCBSUV9TRVJWRVJfU0lOLCAmbXlhZGRyLCAwKTsKKyAgICAgc29ja19tZXRob2RzKCZ3cmFwX3JlcXVlc3QpOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZDU2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvZmlsZXMvdGZ0cGQtaHBhLnNlcnZpY2UKQEAgLTAsMCArMSwxMCBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1UZnRwIFNlcnZlcgorUmVxdWlyZXM9dGZ0cGQtaHBhLnNvY2tldAorCitbU2VydmljZV0KK0V4ZWNTdGFydD1AU0JJTkRJUkAvaW4udGZ0cGQtaHBhIC1zIC92YXIvbGliL3RmdHBib290CitTdGFuZGFyZElucHV0PXNvY2tldAorCitbSW5zdGFsbF0KK0Fsc289dGZ0cGQtaHBhLnNvY2tldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zb2NrZXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvZmlsZXMvdGZ0cGQtaHBhLnNvY2tldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzY0YzFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zb2NrZXQKQEAgLTAsMCArMSw4IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVRmdHAgU2VydmVyIEFjdGl2YXRpb24gU29ja2V0CisKK1tTb2NrZXRdCitMaXN0ZW5EYXRhZ3JhbT02OQorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PXNvY2tldHMudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL3RmdHAtaHBhXzUuMi5iYgppbmRleCA3ZjU2NzEzLi4xMzI5NzJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS90ZnRwLWhwYV81LjIuYmIKQEAgLTcsNiArNyw3IEBACiBhbmQgc2hvdWxkIG5vdCBiZSBlbmFibGVkIHVubGVzcyBpdCBpcyBleHByZXNzbHkgbmVlZGVkLiIKIERFUEVORFMgPSAidGNwLXdyYXBwZXJzIHJlYWRsaW5lIgogU0VDVElPTiA9ICJuZXQiCitIT01FUEFHRSA9ICJodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL3RmdHAtaHBhIgogTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NQ09ORklHLmluO2JlZ2lubGluZT0xO2VuZGxpbmU9OTttZDU9YzI4YmE1YWRiNDMwNDFmYWU0NjI5ZGIwNWM4M2NiZGQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGZ0cC90ZnRwLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMjttZDU9OTg4YzFjYmE5OWQ3MDg1OGEyNmNkODc3MjA5ODU3ZjQiCkBAIC0yNiwxMiArMjcsMTUgQEAKICAgICAgICAgICAgZmlsZTovL2FkZC1lcnJvci1jaGVjay1mb3ItZGlzay1maWxsZWQtdXAucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdGZ0cC1ocGEtYnVnLWZpeC1vbi1zZXBhcmF0ZWQtQ1ItYW5kLUxGLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC13cml0aW5nLWVtdHB5LWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1fX3Byb2duYW1lLWlzLXByb3ZpZGVkLWJ5LWxpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGZ0cGQtaHBhLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly90ZnRwZC1ocGEuc2VydmljZSBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0NmM5YmQyMGJiZmZhNjJmNzljOTU4YzdiOTlhYWMyMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYTlmODhkNGMxYzAyNjg3YjQ4NTNiMDJhYjVkZDg3NzlkNGRlNGZmZGI5YjJlNWM5MzMyODQxMzA0ZDFhMjY5IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAogCiBleHBvcnQgQVIgPSAiJHtIT1NUX1BSRUZJWH1hciBjcSIKIApAQCAtNjAsNiArNjQsMTEgQEAKIAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC90ZnRwZC1ocGEKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZnRwZC1ocGEuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGZ0cGQtaHBhLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGZ0cGQtaHBhLnNlcnZpY2UKIH0KIAogRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9IgpAQCAtNzcsMyArODYsNiBAQAogQUxURVJOQVRJVkVfVEFSR0VUW3RmdHBdID0gIiR7YmluZGlyfS90ZnRwLWhwYSIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgogCitTWVNURU1EX1BBQ0tBR0VTID0gInRmdHAtaHBhLXNlcnZlciIKK1NZU1RFTURfU0VSVklDRV90ZnRwLWhwYS1zZXJ2ZXIgPSAidGZ0cGQtaHBhLnNvY2tldCB0ZnRwZC1ocGEuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfdGZ0cC1ocGEtc2VydmVyID0gImVuYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdmJsYWRlLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjkzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5jb25mCkBAIC0wLDAgKzEsMiBAQAorIyBuZXR3b3JrX2RldmljZSBzaGVsZiBzbG90IGZpbGUvZGlzay9wYXJ0aXRpb24gbWFjWyxtYWNbLG1hY11dCisjZXRoMCAwIDAgL2Rldi9zZGIgMDA6MTE6MjI6MzM6NDQ6NTUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdmJsYWRlLmluaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5pbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOThjODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5pbml0CkBAIC0wLDAgKzEsMTkzIEBACisjIS9iaW4vc2gKKyMgCisjIEluaXQgc2NyaXB0IGZvciB2YmxhZGUgKEFUQSBvdmVyIEV0aGVybmV0IGRhZW1vbikKKyMgCisjIGNoa2NvbmZpZzogLSAzMCA3MAorIyBkZXNjcmlwdGlvbjogdmJsYWRlIEFvRSBkYWVtb24KKyMgCisjIHByb2Nlc3NuYW1lOiB2YmxhZGUKKyMgY29uZmlnOiAvZXRjL3ZibGFkZS5jb25mCisjIAorIyBTaGFtZWxlc3NseSBoYWNrZWQgdG9nZXRoZXIgZnJvbSBvdGhlciBpbml0IHNjcmlwdHMgKHNzaGQsIG1vc3RseSkKKyMgaW50ZWdyYXRlIHZibGFkZS5pbml0IGZyb20gRmVkb3JhJ3MgdmJsYWRlLTE0LTYuZmMxMi5zcmMucnBtCisjIAorCitSRVRWQUw9MAorcHJvZz12YmxhZGUKKworc3Bhd25fdmJsYWRlKCkgeworICBBTExPV01BQ1M9IiIKKyAgWyAtbiAiJDUiIF0gJiYgQUxMT1dNQUNTPSItbSAkNSIKKyAgSUQ9IiQxLWUkMi4kMyIKKyAgaWYgWyAhIC1kICIvdmFyL3J1bi8kcHJvZyIgXTsgdGhlbgorICAgIG1rZGlyIC92YXIvcnVuLyRwcm9nCisgIGZpCisgIFBJRF9GSUxFPS92YXIvcnVuLyRwcm9nLyR7SUR9LnBpZAorICAkcHJvZyAkQUxMT1dNQUNTICQyICQzICQxICQ0ID4+IC92YXIvbG9nLyRwcm9nLmxvZyAyPiYxICYKKyAgcGlkPSQhCisgIFJFVFZBTD0kPworICBlY2hvICRwaWQgPiAkUElEX0ZJTEUKKyAgZWNobyAtbiAkIiQ0IChlJDIuJDNAJDEpIFtwaWQgJHBpZF0iCisgIFsgIiRSRVRWQUwiID0gMCBdICYmIGVjaG8gInN1Y2Nlc3MiIHx8IGVjaG8gImZhaWx1cmUiCisgIGVjaG8KK30KKworc3RhcnQoKSB7CisgIGxvY2FsIHJldAorCisgIGVjaG8gJCJTdGFydGluZyB1cCAkcHJvZzogIgorICAKKyAgIy92YXIvbG9jay9zdWJzeXMvJHByb2cgZXhpc3RzPworICBzdGF0dXMgJHByb2cgMj4mMSA+IC9kZXYvbnVsbAorICByZXQ9JD8KKworICBpZiBbICIkcmV0IiA9ICIyIiBdOyB0aGVuCisgICAgZWNobyAiJHByb2cgZGVhZCBidXQgc3Vic3lzIGxvY2tlZCIKKyAgICBlY2hvCisgICAgcmV0dXJuIDIKKyAgZWxzZSAKKyAgICBpZiBbICIkcmV0IiA9ICIwIiBdOyB0aGVuCisgICAgICAjaXMgcnVubmluZworICAgICAgZWNobyAiYWxyZWFkeSBydW5uaW5nIgorICAgICAgcmV0dXJuIDAKKyAgICBmaQorICBmaQorCisgIGlmIFsgMCAtbmUgYGdyZXAgLXZjICdeI1x8XiQnIC9ldGMvJHByb2cuY29uZmAgXQorICB0aGVuCisgICAgZ3JlcCAtdiAnXiMnIC9ldGMvJHByb2cuY29uZiB8IHNlZCAtZSAncy8JLyAvZycgLWUgJ3MvICAvIC9nJyB8IHdoaWxlIHJlYWQgbGluZQorICAgIGRvCisgICAgICBzcGF3bl92YmxhZGUgJGxpbmUKKyAgICBkb25lCisgICAgdG91Y2ggL3Zhci9sb2NrL3N1YnN5cy8kcHJvZworICBlbHNlCisgICAgZWNobyAtbiAiZW1wdHkgJHByb2cuY29uZj8iCisgICAgZWNobyAiIHBhc3NlZCIKKyAgICBlY2hvCisgIGZpCit9CisKK3N0b3AoKSB7CisgIGVjaG8gLW4gJCJTaHV0dGluZyBkb3duICRwcm9nOiAiCisgIGZvciBwaWRmaWxlIGluIGBscyAvdmFyL3J1bi8kcHJvZy8qLnBpZCAyPi9kZXYvbnVsbGAKKyAgZG8KKyAgICBraWxsIC1URVJNIGBjYXQgJHBpZGZpbGVgCisgICAgcm0gLWYgJHBpZGZpbGUKKyAgZG9uZQorICBlY2hvICJzdWNjZXNzIgorICBlY2hvCisgIHJtIC1mIC92YXIvbG9jay9zdWJzeXMvJHByb2cKK30KKworX19waWRzX3Zhcl9ydW4oKSB7CisgICAgICAgIGxvY2FsIGJhc2U9JHsxIyMqL30KKyAgICAgICAgbG9jYWwgcGlkX2ZpbGU9JHsyOi0vdmFyL3J1bi8kYmFzZS5waWR9CisKKyAgICAgICAgcGlkPQorICAgICAgICBpZiBbIC1mICIkcGlkX2ZpbGUiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgbG9jYWwgbGluZSBwCisKKyAgICAgICAgICAgICAgICB3aGlsZSA6IDsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgWyAteiAiJGxpbmUiIF0gJiYgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluICRsaW5lIDsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAteiAiJHtwLy9bMC05XS99IiAtYSAtZCAiL3Byb2MvJHAiIF0gJiYgcGlkPSIkcGlkICRwIgorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGRvbmUgPCAiJHBpZF9maWxlIgorCisgICAgICAgICAgICAgICAgaWYgWyAtbiAiJHBpZCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIHJldHVybiAxICMgIlByb2dyYW0gaXMgZGVhZCBhbmQgL3Zhci9ydW4gcGlkIGZpbGUgZXhpc3RzIgorICAgICAgICBmaQorICAgICAgICByZXR1cm4gMyAjICJQcm9ncmFtIGlzIG5vdCBydW5uaW5nIgorfQorCitfX3BpZHNfcGlkb2YoKSB7CisgICAgICAgIHBpZG9mICIkMSIgfHwgcGlkb2YgIiR7MSMjKi99IgorfQorCitzdGF0dXMoKSB7CisgICAgICAgIGxvY2FsIGJhc2UgcGlkIGxvY2tfZmlsZT0gcGlkX2ZpbGU9CisKKyAgICAgICAgIyBUZXN0IHN5bnRheC4KKyAgICAgICAgaWYgWyAiJCMiID0gMCBdIDsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gJCJVc2FnZTogc3RhdHVzIFstcCBwaWRmaWxlXSB7cHJvZ3JhbX0iCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAiJDEiID0gIi1wIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgcGlkX2ZpbGU9JDIKKyAgICAgICAgICAgICAgICBzaGlmdCAyCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgIiQxIiA9ICItbCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGxvY2tfZmlsZT0kMgorICAgICAgICAgICAgICAgIHNoaWZ0IDIKKyAgICAgICAgZmkKKyAgICAgICAgYmFzZT0kezEjIyovfQorCisgICAgICAgICMgRmlyc3QgdHJ5ICJwaWRvZiIKKyAgICAgICAgX19waWRzX3Zhcl9ydW4gIiQxIiAiJHBpZF9maWxlIgorICAgICAgICBSQz0kPworICAgICAgICBpZiBbIC16ICIkcGlkX2ZpbGUiIC1hIC16ICIkcGlkIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgcGlkPSIkKF9fcGlkc19waWRvZiAiJDEiKSIKKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAtbiAiJHBpZCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gJCIke2Jhc2V9IChwaWQgJHBpZCkgaXMgcnVubmluZy4uLiIKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBmaQorCisgICAgICAgIGNhc2UgIiRSQyIgaW4KKyAgICAgICAgICAgICAgICAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAkIiR7YmFzZX0gKHBpZCAkcGlkKSBpcyBydW5uaW5nLi4uIgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJCIke2Jhc2V9IGRlYWQgYnV0IHBpZCBmaWxlIGV4aXN0cyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIGlmIFsgLXogIiR7bG9ja19maWxlfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGxvY2tfZmlsZT0ke2Jhc2V9CisgICAgICAgIGZpCisgICAgICAgICMgU2VlIGlmIC92YXIvbG9jay9zdWJzeXMvJHtsb2NrX2ZpbGV9IGV4aXN0cworICAgICAgICBpZiBbIC1mIC92YXIvbG9jay9zdWJzeXMvJHtsb2NrX2ZpbGV9IF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICQiJHtiYXNlfSBkZWFkIGJ1dCBzdWJzeXMgbG9ja2VkIgorICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgIGZpCisgICAgICAgIGVjaG8gJCIke2Jhc2V9IGlzIHN0b3BwZWQiCisgICAgICAgIHJldHVybiAzCit9CisKK2Nhc2UgIiQxIiBpbgorCXN0YXJ0KQorCQlzdGFydAorCQk7OworCXN0b3ApCisJCXN0b3AKKwkJOzsKKwlyZXN0YXJ0KQorCQlzdG9wCisJCXN0YXJ0CisJCTs7CisJcmVsb2FkKQorCQkjIHllcywgdGhpcyBzdWNrcywgYnV0IHRoZSB2YmxhZGUgcHJvY2Vzc2VzIGRpZSBvbiBTSUdIVVAKKwkJc3RvcAorCQlzdGFydAorCQk7OworCWNvbmRyZXN0YXJ0KQorCQlpZiBbIC1mIC92YXIvbG9jay9zdWJzeXMvJHByb2cgXTsgdGhlbgorCQkJc3RvcAorCQkJIyBhdm9pZCByYWNlCisJCQlzbGVlcCAzCisJCQlzdGFydAorCQlmaQorCQk7OworCXN0YXR1cykKKwkJc3RhdHVzICRwcm9nCisJCVJFVFZBTD0kPworCQk7OworCSopCisJCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR8c3RhdHVzfSIKKwkJUkVUVkFMPTEKK2VzYWMKK2V4aXQgJFJFVFZBTApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92YmxhZGUuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdmJsYWRlLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNhNGQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdmJsYWRlLnNlcnZpY2UKQEAgLTAsMCArMSwxMSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1WaXJ0dWFsIEV0aGVyRHJpdmUgYmxhZGUgQW9FIHRhcmdldAorQWZ0ZXI9c3lzbG9nLnRhcmdldCBuZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9Zm9ya2luZworRXhlY1N0YXJ0PUBCSU5ESVJAL3ZibGFkZS5pbml0IHN0YXJ0CitFeGVjU3RvcD1AQklORElSQC92YmxhZGUuaW5pdCBzdG9wCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdm9sYXRpbGVzLjk5X3ZibGFkZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdm9sYXRpbGVzLjk5X3ZibGFkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGE1ODgxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92b2xhdGlsZXMuOTlfdmJsYWRlCkBAIC0wLDAgKzEgQEAKK2Qgcm9vdCByb290IDA3NTUgL3Zhci9ydW4vdmJsYWRlIG5vbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS92YmxhZGVfMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NGM3NDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS92YmxhZGVfMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWwgRXRoZXJEcml2ZSBibGFkZSBBb0UgdGFyZ2V0IgotU0VDVElPTiA9ICJhZG1pbiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9hb2V0b29scy8ke0JQTn0tJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzgwZTRhNmJjN2Q2NmFlMGMyMzViODhjYjQ0YmQ1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOGZlMmZjNGYyZmJhOGUwN2U1Y2ZkZjE3MzM1OTgyNTg0ZWVmMmNkNWM3OGJmOGIxZGI5M2YyYjU2ZTcxMjFkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS92YmxhZGUgJHtEfS8ke3NiaW5kaXJ9L3ZibGFkZQotICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3ZibGFkZWQgJHtEfS8ke3NiaW5kaXJ9L3ZibGFkZWQKLSAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS92YmxhZGUuOCAke0R9LyR7bWFuZGlyfS9tYW44L3ZibGFkZS44Ci19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS92YmxhZGVfMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiMWRmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIyLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCBFdGhlckRyaXZlIGJsYWRlIEFvRSB0YXJnZXQiCitTRUNUSU9OID0gImFkbWluIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2FvZXRvb2xzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8ke0JQTn0uY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8ke0JQTn0uaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8ke0JQTn0uc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfdmJsYWRlIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTBkOThiYTBmMjMxMjg0YTVmYmUyZGExMWNiMmQ2ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTkwMzc4ZjI3M2YxMGViNDMxZTQyOTU0YTg3MWFlZDUyNzE0MDM1YmJhYjI4YzU0Y2VmNjAwYzQ1ODM1NmJiIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3ZibGFkZSAke0R9LyR7c2JpbmRpcn0vdmJsYWRlCisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vdmJsYWRlZCAke0R9LyR7c2JpbmRpcn0vdmJsYWRlZAorICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L3ZibGFkZS44ICR7RH0vJHttYW5kaXJ9L21hbjgvdmJsYWRlLjgKKworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0uY29uZgorICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9LyR7QlBOfS5pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3ZibGFkZSAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfdmJsYWRlCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJHtCUE59LmluaXQgJHtEfS8ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkIC92YXIvcnVuLyR7QlBOfSAwNzU1IHJvb3Qgcm9vdCAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvJHtCUE59LmNvbmYKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZibGFkZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIHNlZCAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgLWkgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vKi5zZXJ2aWNlCisgICAgZmkKKworfQorCitJTklUU0NSSVBUX05BTUUgPSAidmJsYWRlIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgLiBzdG9wIDcwIDAgMSAyIDMgNCA1IDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInZibGFkZS5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGRfMy4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZF8zLjAuMy5iYgppbmRleCBlNTI0NjE0Li43YTIwMzU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZF8zLjAuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZF8zLjAuMy5iYgpAQCAtMzcsNiArMzcsNyBAQAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIFJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWxpc3RmaWxlJywgJycsIGQpfSIKIFBBTUxJQiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctTCR7U1RBR0lOR19CQVNFTElCRElSfSAtbHBhbScsICcnLCBkKX0iCitXUkFQTElCID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RjcC13cmFwcGVycycsICctbHdyYXAnLCAnJywgZCl9IgogTk9QQU1fU1JDID0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGNwLXdyYXBwZXJzJywgJ2ZpbGU6Ly9ub3BhbS13aXRoLXRjcF93cmFwcGVycy5wYXRjaCcsICdmaWxlOi8vbm9wYW0ucGF0Y2gnLCBkKX0iCiAKIGluaGVyaXQgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCkBAIC01NCw3ICs1NSw3IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0gICBvZV9ydW5tYWtlICJMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0gLWxjcnlwdCAtbGNhcCAke1BBTUxJQn0gLWx3cmFwIgorICAgb2VfcnVubWFrZSAiTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9IC1sY3J5cHQgLWxjYXAgJHtQQU1MSUJ9ICR7V1JBUExJQn0iCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC9ydW4tcHRlc3QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsL3J1bi1wdGVzdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC90ZXN0LnBsLWFkanVzdC1mb3ItcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC90ZXN0LnBsLWFkanVzdC1mb3ItcHRlc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsL3Rlc3QucGwtYWRqdXN0LWZvci1wdGVzdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvdGVzdC5wbC1hZGp1c3QtZm9yLXB0ZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybF8wLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmxfMC4yMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmxfMC4yMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmxfMC4yMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMi40LjQxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMi40LjQxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYmM4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuNDEuYmIKQEAgLTAsMCArMSwyOSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCisoTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCitpbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKK09wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKKworTElDRU5TRSA9ICJQU0YiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCitERVBFTkRTID0gInB5dGhvbiBvcGVubGRhcCBjeXJ1cy1zYXNsIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWxkYXAiCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1hNDFjODJlZGZmYTA0OTEyMDA3Y2FlMWQyMGNhYzU1NSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOGRiMmQwMDkxNTBlYzE4NjQ3MTBmZWEzZWQ3NjE3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDQzMGVjZjA0MGYyZmM3MDRlZTMxNmQzMzkwY2IxZjU0MTljMTkxMzcxZTFlMTMxYmFlZjU0YTBlNDJjZWYwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6XmxpYnJhcnlfZGlycyA9Lio6Oicgc2V0dXAuY2ZnCisgICAgc2VkIC1pIC1lICdzOl5pbmNsdWRlX2RpcnMgPS4qOmluY2x1ZGVfZGlycyA9ID0vdXNyL2luY2x1ZGUvc2FzbC86JyBzZXR1cC5jZmcKK30KKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLUZfLWFuZC1PXy1kZWZpbmVzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItRl8tYW5kLU9fLWRlZmluZXMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLUZfLWFuZC1PXy1kZWZpbmVzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2U3NGUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuMi5iYgpAQCAtMCwwICsxLDgwIEBACitTVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAorQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCitIT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKKworU0VDVElPTiA9ICJiYXNlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NSQ19VUkkgPSAiaHR0cDovL2J1aWxkLmNsdXN0ZXJsYWJzLm9yZy9jb3Jvc3luYy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLUZfLWFuZC1PXy1kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTQ3ZmE3ODcwNGRhNTNhYTM1OTEyYmU1OGQzMTAzNWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI2ZTMwMTEzMDlmZTRiY2NlOTRiMWRjMjBlYThjNDYyZjE5NDgzYTczZjNjYTYyZjEzYjkyNWQwMTFhNGJhOSIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hODVlYjRjZTI0MDMzYWRiNjA4OGRkMWQ2ZmZjNWU1ZCIKKworREVQRU5EUyA9ICJncm9mZi1uYXRpdmUgbnNzIGxpYnFiIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29yb3N5bmMuc2VydmljZSBjb3Jvc3luYy1ub3RpZnlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FkZXZpY2UnLCAnY29yb3N5bmMtcWRldmljZS5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAnY29yb3N5bmMtcW5ldGQuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJlbmFibGUiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJjb3Jvc3luYy1kYWVtb24iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBkYnVzIHFkZXZpY2UgcW5ldGQgc25tcCBcCisiCisKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgorUEFDS0FHRUNPTkZJR1txZGV2aWNlXSA9ICItLWVuYWJsZS1xZGV2aWNlcywtLWRpc2FibGUtcWRldmljZXMiCitQQUNLQUdFQ09ORklHW3FuZXRkXSA9ICItLWVuYWJsZS1xbmV0ZCwtLWRpc2FibGUtcW5ldGQiCitQQUNLQUdFQ09ORklHW3JkbWFdID0gIi0tZW5hYmxlLXJkbWEsLS1kaXNhYmxlLXJkbWEiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIgorRVhUUkFfT0VNQUtFID0gInRtcGZpbGVzZGlyX0RBVEE9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30KKyAgICAke1N9L2F1dG9nZW4uc2ggKQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2Nvcm9zeW5jLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Nvcm9zeW5jLW5vdGlmeWQuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jLW5vdGlmeWQKKworICAgIHJtIC1yZiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGVjaG8gImQgcm9vdCByb290IDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciBub25lIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA1X2Nvcm9zeW5jCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGNob3duIC1SIGNvcm9xbmV0ZDpjb3JvcW5ldGQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3FuZXRkCisgICAgICAgIGVjaG8gImQgY29yb3FuZXRkIGNvcm9xbmV0ZCAwNzcwIC92YXIvcnVuL2Nvcm9zeW5jLXFuZXRkIG5vbmUiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA1X2Nvcm9zeW5jCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgorCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbmYvdG1wZmlsZXMuZC9jb3Jvc3luYy1xbmV0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZmkKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvQ09ST1NZTkMtTUlCLnR4dCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNvcm9xbmV0ZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWQgLyAtTSAtcyAvYmluL25vbG9naW4gLWMgJ1VzZXIgZm9yIGNvcm9zeW5jLXFuZXRkJyAtZyBjb3JvcW5ldGQgY29yb3FuZXRkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS9yZXNwZWN0LWxkZmxhZ3MtYWxzby1mcm9tLWJpbl9sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtL3Jlc3BlY3QtbGRmbGFncy1hbHNvLWZyb20tYmluX2xkZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vcmVzcGVjdC1sZGZsYWdzLWFsc28tZnJvbS1iaW5fbGRmbGFncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtL3Jlc3BlY3QtbGRmbGFncy1hbHNvLWZyb20tYmluX2xkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy8wMDAxLWtlcm5lbC1ldmVudC1uZXRsaW5rX2Fjay1ub3ctcmVxdWlyZXMtNC1hcmd1bWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzLzAwMDEta2VybmVsLWV2ZW50LW5ldGxpbmtfYWNrLW5vdy1yZXF1aXJlcy00LWFyZ3VtZW50cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDI2ZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy8wMDAxLWtlcm5lbC1ldmVudC1uZXRsaW5rX2Fjay1ub3ctcmVxdWlyZXMtNC1hcmd1bWVudHMucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBjYmM1ZjgxNTEwMTdmNDUyMzFiNzVhODI2ZjE4MzU0YTgxYzI4N2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMDc6NTI6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0ga2VybmVsL2V2ZW50OiBuZXRsaW5rX2FjaygpIG5vdyByZXF1aXJlcyA0IGFyZ3VtZW50cworCitzZWUgaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC85NjcwMTgxLworCitldmVudC5jOjMyOjQ6IGVycm9yOiB0b28gZmV3IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnbmV0bGlua19hY2snCit8ICAgICBuZXRsaW5rX2Fjayhza2IsIG5saCwgMCk7Cit8ICAgICBefn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisga2VybmVsL2V2ZW50LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2V2ZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIub3JpZy9rZXJuZWwvZXZlbnQuYworKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvZXZlbnQuYworQEAgLTYsNiArNiw3IEBACisgICogU29tZSBmdW5jdGlvbnMgYXJlIGJhc2VkIG9uIGF1ZGl0IGNvZGUuCisgICovCisgCisrI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisgI2luY2x1ZGUgPG5ldC90Y3AuaD4KKyAjaW5jbHVkZSAiaWV0X3UuaCIKK0BAIC0yOSw3ICszMCwxMSBAQCBzdGF0aWMgdm9pZCBldmVudF9yZWN2X3NrYihzdHJ1Y3Qgc2tfYnVmCisgCQlpZXRkX3BpZCA9IE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQ7CisgCQlXQVJOX09OKGlldGRfcGlkID09IDApOworIAkJaWYgKG5saC0+bmxtc2dfZmxhZ3MgJiBOTE1fRl9BQ0spCisrI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAxMiwgMCkKKysJCQluZXRsaW5rX2Fjayhza2IsIG5saCwgMCwgTlVMTCk7CisrI2Vsc2UKKyAJCQluZXRsaW5rX2Fjayhza2IsIG5saCwgMCk7CisrI2VuZGlmCisgCQlza2JfcHVsbChza2IsIHJsZW4pOworIAl9CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2lzY3NpdGFyZ2V0XzEuNC4yMC4zK3N2bjUwMi5iYgppbmRleCA1YzFlMzhlLi42NTkzNjYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2lzY3NpdGFyZ2V0XzEuNC4yMC4zK3N2bjUwMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2lzY3NpdGFyZ2V0XzEuNC4yMC4zK3N2bjUwMi5iYgpAQCAtMTQsNyArMTQsOSBAQAogICAgICAgICAgICBmaWxlOi8vYWNjZXNzLXNrX3Y2X2RhZGRyLWlmZi1JUFY2LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVpbGRfd2l0aF91cGRhdGVkX2Jpb19zdHJ1Y3Rfb2ZfbGludXhfdjQuM19hbmRfYWJvdmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVpbGRfd2l0aF91cGRhdGVkX2ludGVyZmFjZXNfb2ZfbGludXhfdjQuOF9hbmRfYWJvdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNhbGwtdHJhY2Utb2YtYWhhc2gtQVBJLWNhbGxpbmcucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9maXgtY2FsbC10cmFjZS1vZi1haGFzaC1BUEktY2FsbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtlcm5lbC1ldmVudC1uZXRsaW5rX2Fjay1ub3ctcmVxdWlyZXMtNC1hcmd1bWVudHMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlZjliYzgyM2JiYWJkM2M3NzIyMDhjMDBkNWYyZDA4OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzE5NmNjYjc4YTQzMjY2ZGNlMjg1ODdiZmUzMGQ4YWI0ZGI3NTY2ZDdiY2U5NjA1N2RmYmI4NDEwMGJhYmI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXMtMi4wLjEwLTQvZWJ0YWJsZXMtc2F2ZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzLTIuMC4xMC00L2VidGFibGVzLXNhdmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmQ3ZmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzLTIuMC4xMC00L2VidGFibGVzLXNhdmUKQEAgLTAsMCArMSw0MyBAQAorIyEvYmluL2Jhc2gKKworRUJUQUJMRVM9Ii9zYmluL2VidGFibGVzIgorCitbIC14ICIkRUJUQUJMRVMiIF0gfHwgZXhpdCAxCisKK2VjaG8gIiMgR2VuZXJhdGVkIGJ5IGVidGFibGVzLXNhdmUgdjEuMCBvbiAkKGRhdGUpIgorCitjbnQ9IiIKK1sgIngkRUJUQUJMRVNfU0FWRV9DT1VOVEVSIiA9ICJ4eWVzIiBdICYmIGNudD0iLS1MYyIKKworZm9yIHRhYmxlX25hbWUgaW4gJChncmVwIC1FICdeZWJ0YWJsZV8nIC9wcm9jL21vZHVsZXMgfCBjdXQgLWYxIC1kJyAnIHwgc2VkIHMvZWJ0YWJsZV8vLyk7IGRvCisgICAgdGFibGU9JCgkRUJUQUJMRVMgLXQgJHRhYmxlX25hbWUgLUwgJGNudCkKKyAgICBbICQ/IC1lcSAwIF0gfHwgeyBlY2hvICIkdGFibGUiOyBleGl0IC0xOyB9CisKKyAgICBjaGFpbj0iIgorICAgIHJ1bGVzPSIiCisgICAgd2hpbGUgcmVhZCBsaW5lOyBkbworCVsgLXogIiRsaW5lIiBdICYmIGNvbnRpbnVlCisKKwljYXNlICIkbGluZSIgaW4gCisJICAgIEJyaWRnZVwgdGFibGU6XCAqKQorCQllY2hvICIqJHtsaW5lOjE0fSIKKwkJOzsKKwkgICAgQnJpZGdlXCBjaGFpbjpcICopCisJCWNoYWluPSIke2xpbmU6MTR9IgorCQljaGFpbj0iJHtjaGFpbiUlLCp9IgorCQlwb2xpY3k9IiR7bGluZSMjKnBvbGljeTogfSIKKwkJZWNobyAiOiRjaGFpbiAkcG9saWN5IgorCQk7OworCSAgICAqKQorCQlpZiBbICIkY250IiA9ICItLUxjIiBdOyB0aGVuCisJCSAgICBsaW5lPSR7bGluZS8sIHBjbnQgXD0vIC1jfQorCQkgICAgbGluZT0ke2xpbmUvLS0gYmNudCBcPS99CisJCWZpCisJCXJ1bGVzPSIkcnVsZXMtQSAkY2hhaW4gJGxpbmVcbiIKKwkJOzsKKwllc2FjCisgICAgZG9uZSA8PEVPRgorJHRhYmxlCitFT0YKKyAgICBlY2hvIC1lICRydWxlcworZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgppbmRleCAzNzU0MjNkLi5kNWU3MzQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgpAQCAtMSwxNyArMSwxOSBAQAogU1VNTUFSWSA9ICJGaWx0ZXJpbmcgdG9vbCBmb3IgYSBMaW51eC1iYXNlZCBicmlkZ2luZyBmaXJld2FsbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZWJ0YWJsZXMvIgogREVTQ1JJUFRJT04gPSAiVXRpbGl0eSBmb3IgYmFzaWMgRXRoZXJuZXQgZnJhbWUgZmlsdGVyaW5nIG9uIGEgTGludXggYnJpZGdlLCBcCiAgICAgICAgICAgICAgICBhZHZhbmNlZCBsb2dnaW5nLCBNQUMgRE5BVC9TTkFUIGFuZCBicm91dGluZy4iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTNiNGE5OTk5OTM4NzFhMjhhYjE0ODhmZGJkMmU3M2UiCiBTRUNUSU9OID0gIm5ldCIKLVBSID0gInIzIgorUFIgPSAicjQiCiAKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCiAKIFJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLWVidGFibGVzIFwKICAgICAiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2VidGFibGVzL2VidGFibGVzLXYke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZWJ0YWJsZXMtc2F2ZSBcCiAgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsbm9ucm9vdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMWRlYmlhbl9kZWZhdWx0Y29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2VidGFibGVzLmluaXQgXApAQCAtNzgsMTIgKzgwLDEwIEBACiAgICAgbXYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9lYnRhYmxlcy1jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9lYnRhYmxlcwogICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9lYnRhYmxlcwogCi0gICAgIyBUaGUgc2NyaXB0IGVidGFibGVzLXNhdmUgcmVmZXJuY2VzIHBlcmwgaW4gZXhlY19wcmVmaXgsIHNvCi0gICAgIyBtb3ZlIGl0IHRvIHNiaW5kaXIgdG8gYXZvaWQgUUEgaXNzdWUKLSAgICBpZiAke2Jhc2Vfc2JpbmRpcn0gIT0gJHtzYmluZGlyfSA7IHRoZW4KLSAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotICAgICAgIG12ICR7RH0vJHtiYXNlX3NiaW5kaXJ9L2VidGFibGVzLXNhdmUgJHtEfS8ke3NiaW5kaXJ9Ci0gICAgZmkKKyAgICAjIFJlcGxhY2UgdXBzdHJlYW0gZWJ0YWJsZXMtc2F2ZSBwZXJsIHNjcmlwdCB3aXRoIEZlZG9yYSBiYXNoIGJhc2VkIHJld3JpdGUKKyAgICAjIGh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL2NnaXQvcnBtcy9lYnRhYmxlcy5naXQvdHJlZS9lYnRhYmxlcy1zYXZlCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZWJ0YWJsZXMtc2F2ZSAke0R9JHtiYXNlX3NiaW5kaXJ9L2VidGFibGVzLXNhdmUKKyAgICBzZWQgLWkgJ3MhL3NiaW4vISR7YmFzZV9zYmluZGlyfS8hZycgJHtEfSR7YmFzZV9zYmluZGlyfS9lYnRhYmxlcy1zYXZlCiAKICAgICAjIEluc3RhbGwgc3lzdGVtZCBzZXJ2aWNlIGZpbGVzCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmwvc25wcmludGZfc2hhZG93LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmwvc25wcmludGZfc2hhZG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDUzYjFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sL3NucHJpbnRmX3NoYWRvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi1UYWtlbiBmcm9tIAotaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz03NTU5NTYKLQotLS0tIC4vc3JjL2V4cHJfb3BzLmgJMjAxNC0wNi0yNCAxNzowNzowNS41NzQ3ODQ3MDQgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByX29wcy5oCTIwMTQtMDctMjUgMDA6MTk6MjguMzY3Njk0NjEzICswNDAwCi1AQCAtMjgsNyArMjgsNyBAQAotIAljb25zdCB2b2lkICooKmdldCkoY29uc3Qgc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUsIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbik7Ci0gCWludCAJKCpwYXJzZSkoc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUsIHN0cnVjdCBubGF0dHIgKmF0dHIpOwotIAl2b2lkCSgqYnVpbGQpKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0X3J1bGVfZXhwciAqZSk7Ci0tCWludAkoKnNucHJpbnRmKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBzdHJ1Y3QgbmZ0X3J1bGVfZXhwciAqZSk7Ci0rICAgIGludAkoKnNucHJpbnRmXykoY2hhciAqYnVmLCBzaXplX3QgbGVuLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncywgc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUpOwotIAlpbnQJKCp4bWxfcGFyc2UpKHN0cnVjdCBuZnRfcnVsZV9leHByICplLCBteG1sX25vZGVfdCAqdHJlZSwKLSAJCQkgICAgIHN0cnVjdCBuZnRfcGFyc2VfZXJyICplcnIpOwotIAlpbnQJKCpqc29uX3BhcnNlKShzdHJ1Y3QgbmZ0X3J1bGVfZXhwciAqZSwganNvbl90ICpkYXRhLAotLS0tIC4vc3JjL3J1bGUuYwkyMDE0LTA2LTI0IDE3OjA3OjA1LjU3NDc4NDcwNCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL3J1bGUuYwkyMDE0LTA3LTI1IDAwOjE5OjI4LjM1NTY5NDg4MCArMDQwMAotQEAgLTgxMyw3ICs4MTMsNyBAQAotIAkJCSAgICAgICAie1widHlwZVwiOlwiJXNcIiwiLCBleHByLT5vcHMtPm5hbWUpOwotIAkJU05QUklOVEZfQlVGRkVSX1NJWkUocmV0LCBzaXplLCBsZW4sIG9mZnNldCk7Ci0gCi0tCQlyZXQgPSBleHByLT5vcHMtPnNucHJpbnRmKGJ1ZitvZmZzZXQsIGxlbiwgdHlwZSwgZmxhZ3MsIGV4cHIpOwotKyAgICAgICAgcmV0ID0gZXhwci0+b3BzLT5zbnByaW50Zl8oYnVmK29mZnNldCwgbGVuLCB0eXBlLCBmbGFncywgZXhwcik7Ci0gCQlTTlBSSU5URl9CVUZGRVJfU0laRShyZXQsIHNpemUsIGxlbiwgb2Zmc2V0KTsKLSAKLSAJCS8qCi0tLS0gLi9zcmMvZXhwci5jCTIwMTQtMDYtMjQgMTc6MDc6MDUuNTc0Nzg0NzA0ICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci5jCTIwMTQtMDctMjUgMDA6MTk6MjcuMzY3NzE2ODYzICswNDAwCi1AQCAtMjI3LDcgKzIyNyw3IEBACi0gCWludCByZXQ7Ci0gCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwLCBsZW4gPSBzaXplOwotIAotLQlyZXQgPSBleHByLT5vcHMtPnNucHJpbnRmKGJ1ZitvZmZzZXQsIGxlbiwgdHlwZSwgZmxhZ3MsIGV4cHIpOwotKwlyZXQgPSBleHByLT5vcHMtPnNucHJpbnRmXyhidWYrb2Zmc2V0LCBsZW4sIHR5cGUsIGZsYWdzLCBleHByKTsKLSAJU05QUklOVEZfQlVGRkVSX1NJWkUocmV0LCBzaXplLCBsZW4sIG9mZnNldCk7Ci0gCi0gCXJldHVybiBvZmZzZXQ7Ci0tLS0gLi9zcmMvZXhwci9leHRoZHIuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3NDI4NDcxOSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvZXh0aGRyLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xOTI1ODM2MjggKzA0MDAKLUBAIC0zNjIsNyArMzYyLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2V4dGhkcl9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2V4dGhkcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfZXh0aGRyX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2V4dGhkcl9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfZXh0aGRyX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9leHRoZHJfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfZXh0aGRyX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2xvZy5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTc4Mjg0ODEwICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9sb2cuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjE2MDU4NDM0MCArMDQwMAotQEAgLTMzMiw3ICszMzIsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfbG9nX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfbG9nX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9sb2dfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfbG9nX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9sb2dfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX2xvZ194bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9sb2dfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvbGltaXQuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvbGltaXQuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjEwODU4NTQ5NiArMDQwMAotQEAgLTI1MCw3ICsyNTAsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfbGltaXRfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9saW1pdF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfbGltaXRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfbGltaXRfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2xpbWl0X3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9saW1pdF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9saW1pdF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9jbXAuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3NDI4NDcxOSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvY21wLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xNzI1ODQwNzMgKzA0MDAKLUBAIC0zMzEsNyArMzMxLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2NtcF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2NtcF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfY21wX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2NtcF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfY21wX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9jbXBfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfY21wX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL3RhcmdldC5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTgyMjg0OTAxICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci90YXJnZXQuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjE4NDU4MzgwNiArMDQwMAotQEAgLTI3NCw3ICsyNzQsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl90YXJnZXRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl90YXJnZXRfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX3RhcmdldF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl90YXJnZXRfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvYnl0ZW9yZGVyLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNTgyODQzNTYgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2J5dGVvcmRlci5jCTIwMTQtMDctMjUgMDA6MjE6NDguMTQ4NTg0NjA3ICswNDAwCi1AQCAtMzg0LDcgKzM4NCw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2J5dGVvcmRlcl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2J5dGVvcmRlcl9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfYnl0ZW9yZGVyX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2J5dGVvcmRlcl9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9sb29rdXAuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvbG9va3VwLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xMzY1ODQ4NzQgKzA0MDAKLUBAIC0zMDUsNyArMzA1LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2xvb2t1cF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2xvb2t1cF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfbG9va3VwX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2xvb2t1cF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfbG9va3VwX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9sb29rdXBfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbG9va3VwX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2ltbWVkaWF0ZS5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTc4Mjg0ODEwICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9pbW1lZGlhdGUuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjEyNDU4NTE0MSArMDQwMAotQEAgLTM2NSw3ICszNjUsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9pbW1lZGlhdGVfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9pbW1lZGlhdGVfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX2ltbWVkaWF0ZV94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9pbW1lZGlhdGVfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvbWV0YS5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTc4Mjg0ODEwICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9tZXRhLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4wNDA1ODcwMDggKzA0MDAKLUBAIC0zNDAsNyArMzQwLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX21ldGFfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX21ldGFfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX21ldGFfc25wcmludGYsCi0gCS54bWxfcGFyc2UgCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UgCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL3F1ZXVlLmMJMjAxNC0wNi0yNSAxODozNDowOC4xODIyODQ5MDEgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL3F1ZXVlLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4yMDg1ODMyNzIgKzA0MDAKLUBAIC0yOTQsNyArMjk0LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX3F1ZXVlX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfcXVldWVfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX3F1ZXVlX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX3F1ZXVlX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9xdWV1ZV9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfcXVldWVfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfcXVldWVfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvbmF0LmMJMjAxNC0wNi0yNSAxODozNDowOC4xODIyODQ5MDEgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL25hdC5jCTIwMTQtMDctMjUgMDA6MjE6NDguMDg0NTg2MDMwICswNDAwCi1AQCAtNDMwLDcgKzQzMCw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9uYXRfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9uYXRfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX25hdF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9uYXRfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX25hdF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbmF0X3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX25hdF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9wYXlsb2FkLmMJMjAxNC0wNi0yNSAxODozNDowOC4xODIyODQ5MDEgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL3BheWxvYWQuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjIwMDU4MzQ1MCArMDQwMAotQEAgLTMzNyw3ICszMzcsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfcGF5bG9hZF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX3BheWxvYWRfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX3BheWxvYWRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfcGF5bG9hZF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfcGF5bG9hZF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfcGF5bG9hZF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9wYXlsb2FkX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL3JlamVjdC5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTgyMjg0OTAxICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9yZWplY3QuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjA5NjU4NTc2MiArMDQwMAotQEAgLTI0Miw3ICsyNDIsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9yZWplY3RfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9yZWplY3Rfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX3JlamVjdF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9yZWplY3RfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvY291bnRlci5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTc0Mjg0NzE5ICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9jb3VudGVyLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4wNTY1ODY2NTIgKzA0MDAKLUBAIC0yMzYsNyArMjM2LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2NvdW50ZXJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2NvdW50ZXJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2NvdW50ZXJfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX2NvdW50ZXJfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfY291bnRlcl9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9jdC5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTc0Mjg0NzE5ICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9jdC5jCTIwMTQtMDctMjUgMDA6MjE6NDguMDY4NTg2Mzg1ICswNDAwCi1AQCAtNDI4LDcgKzQyOCw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9jdF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2N0X3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9jdF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9jdF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfY3Rfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX2N0X3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2N0X2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2JpdHdpc2UuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE1ODI4NDM1NiArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvYml0d2lzZS5jCTIwMTQtMDctMjUgMDA6MjE6NDkuMjcyNTU5NTk5ICswNDAwCi1AQCAtNDAzLDcgKzQwMyw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9iaXR3aXNlX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9iaXR3aXNlX3NucHJpbnRmLAotKyAgICAuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9iaXR3aXNlX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9iaXR3aXNlX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2JpdHdpc2VfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvbWF0Y2guYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvbWF0Y2guYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjAzMjU4NzE4NiArMDQwMAotQEAgLTI3Myw3ICsyNzMsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfbWF0Y2hfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9tYXRjaF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfbWF0Y2hfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfbWF0Y2hfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX21hdGNoX3NucHJpbnRmLAotIAkueG1sX3BhcnNlIAk9IG5mdF9ydWxlX2V4cHJfbWF0Y2hfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZSAJPSBuZnRfcnVsZV9leHByX21hdGNoX2pzb25fcGFyc2UsCi0gfTsKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL2ZpbGVzLzAwMDEtdGVzdG1tYXAtZml4LWNvbXBpbGUtaXNzdWUtd2l0aC1nY2MtNS54LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL2ZpbGVzLzAwMDEtdGVzdG1tYXAtZml4LWNvbXBpbGUtaXNzdWUtd2l0aC1nY2MtNS54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTM2YjFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy8wMDAxLXRlc3RtbWFwLWZpeC1jb21waWxlLWlzc3VlLXdpdGgtZ2NjLTUueC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1Gcm9tIGM4MWJmNTRkNmViODcwMjg2NjYyYTExZDNiNGE5OTQ3MTdjNDc2OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDA1OjM2OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RtbWFwOiBmaXggY29tcGlsZSBpc3N1ZSB3aXRoIGdjYyA1LngKLQotdGhpcyBmaXhlczoKLWV4YW1wbGVzL3Rlc3RtbWFwLmM6NTQwOjEwOiBlcnJvcjogZm9ybWF0ICclbGQnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgMyBoYXMgdHlwZSAnc3NpemVfdCB7YWthIGNvbnN0IGludH0nIFstV2Vycm9yPWZvcm1hdD1dCi18ICAgIHByaW50ZigicmluZ19vZnNbJWRdICVsZFxuIiwgaSwgbmlmcC0+cmluZ19vZnNbaV0pOwotfCAgICAgICAgICAgXgotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotLS0tCi0gZXhhbXBsZXMvdGVzdG1tYXAuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3Rlc3RtbWFwLmMgYi9leGFtcGxlcy90ZXN0bW1hcC5jCi1pbmRleCBkN2Y2YWNjLi45MzQ0ODlhIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvdGVzdG1tYXAuYwotKysrIGIvZXhhbXBsZXMvdGVzdG1tYXAuYwotQEAgLTUzNyw3ICs1MzcsNyBAQCBkb19pZigpCi0gCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspCi0gCQlwcmludGYoInNwYXJlMVslZF0gICV1XG4iLCBpLCBuaWZwLT5uaV9zcGFyZTFbaV0pOwotIAlmb3IgKGkgPSAwOyBpIDwgKG5pZnAtPm5pX3R4X3JpbmdzICsgbmlmcC0+bmlfcnhfcmluZ3MgKyAyKTsgaSsrKQotLQkJcHJpbnRmKCJyaW5nX29mc1slZF0gJWxkXG4iLCBpLCBuaWZwLT5yaW5nX29mc1tpXSk7Ci0rCQlwcmludGYoInJpbmdfb2ZzWyVkXSAlemRcbiIsIGksIG5pZnAtPnJpbmdfb2ZzW2ldKTsKLSB9Ci0gCi0gc3RydWN0IG5ldG1hcF9yaW5nICoKLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL2ZpbGVzL21ha2VmaWxlX2ZpeHVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL2ZpbGVzL21ha2VmaWxlX2ZpeHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDUwYmYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy9tYWtlZmlsZV9maXh1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLVRoZSBtYWtlZmlsZSBhc3N1bWVzIGJ1aWxkaW5nIGxvY2FsbHkuCi0KLVVwc3RyZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZSBbTmF0aXZlXQotCi1UaGUgY29uZmlndXJlIGlzIG5vdCBhdXRvLW1ha2UgYmFzZWQKLQotU2lnbmVkLW9mLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IExJTlVYL25ldG1hcC5tYWsuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL0xJTlVYL25ldG1hcC5tYWsuaW4KLSsrKyBiL0xJTlVYL25ldG1hcC5tYWsuaW4KLUBAIC0xMiwxMCArMTIsOSBAQCBTUkNESVI6PUBTUkNESVJACi0gIyBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBuZWVkZWQgdG8gYnVpbGQgdGhlIG1vZHVsZXMgYXMgb3V0LW9mLXRyZWUsCi0gIyBpbiBmYWN0IHRoZSBrZXJuZWwgc291cmNlcyBwYXRoIG11c3QgYmUgc3BlY2lmaWVkLgotIAotLVBXRCA/PSAkKENVUkRJUikKLSAKLSAjIEFkZGl0aW9uYWwgY29tcGlsZSBmbGFncyAoZS5nLiBoZWFkZXIgbG9jYXRpb24pCi0tRVhUUkFfQ0ZMQUdTIDo9IC1JJChQV0QpIC1JJChTUkNESVIpIC1JJChTUkNESVIpLy4uL3N5cyAtSSQoU1JDRElSKS8uLi9zeXMvZGV2IC1EQ09ORklHX05FVE1BUAotK0VYVFJBX0NGTEFHUyA6PSAtSSQoU1JDRElSKSAtSSQoU1JDRElSKS8uLi9zeXMgLUkkKFNSQ0RJUikvLi4vc3lzL2RldiAtRENPTkZJR19ORVRNQVAKLSBFWFRSQV9DRkxBR1MgKz0gLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQotIEVYVFJBX0NGTEFHUyArPSAkKGZvcmVhY2ggcywkKFNVQlNZUyksLURDT05GSUdfTkVUTUFQXyQoc2hlbGwgZWNobyAkc3x0ciBhLXotIEEtWl8pKQotIAotSW5kZXg6IExJTlVYL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvTElOVVgvY29uZmlndXJlCi0rKysgYi9MSU5VWC9jb25maWd1cmUKLUBAIC0zNDksNTIgKzM0OSw2IEBAIHJlc2V0X3Rlc3RzKCkgewotIAlFT0YKLSB9Ci0gCi0tIyBydW5fdGVzdHM6IHJ1biBhbGwgYWNjdW11bGF0ZWQgdGVzdHMgYW5kIGV4ZWMgdGhlIHBlcnRpbmVudAotLSMgICBzdWNjZXNzL2ZhaWx1cmUgYWN0aW9ucyBmb3IgZWFjaCBvbmUuCi0tcnVuX3Rlc3RzKCkgewotLQlsb2NhbCB0PSAJIyBwcmV2ZW50IC1FT0YgdG8gZWF0IHRoZSBtYWtlIFRBQgotLQljYXQgPiAkVE1QRElSL01ha2VmaWxlIDw8LUVPRgotLQkJaWZuZXEgKFwkKEtFUk5FTFJFTEVBU0UpLCkKLS0JCW9iai1tIDo9ICRURVNUT0JKUwotLQkJZWxzZQotLQkJU19EUklWRVJTIDo9ICQoZHJ2IHByaW50KQotLQkJYWxsOiBcJChTX0RSSVZFUlM6JT1nZXQtJSkKLS0JCSR0CVwkKE1BS0UpIC1DICRrc3JjIE09XCRcJFBXRCAka29wdHMKLS0KLS0JCS1pbmNsdWRlICRUT1BESVIvZHJpdmVycy5tYWsKLS0JRU9GCi0tCWZvciBkIGluICQoZHJ2IHByaW50KTsgZG8KLS0JCWNhdCA+PiAkVE1QRElSL01ha2VmaWxlIDw8LUVPRgotLQkJCWdldC0kZDoKLS0JCQkkdAlbIC16ICJcJCgkZC1zcmMpIiBdIHx8IGNwIC1ScCBcJCgkZC1zcmMpIFwkKGlmIFwkKCRkLWRzdCksXCQoJGQtZHN0KSwuKQotLQkJCSR0CXRvdWNoIGdldC0kZAotLQkJRU9GCi0tCWRvbmUKLS0JZWNobyBlbmRpZiA+PiAkVE1QRElSL01ha2VmaWxlCi0tCXsKLS0JCWNhdCA8PC1FT0YKLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0jIyBCRUdJTiBSVU5OSU5HIFRFU1RTOiAkKGRhdGUpCi0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tIyMgTWFrZWZpbGU6Ci0tCQlFT0YKLS0JCWNhdCAkVE1QRElSL01ha2VmaWxlCi0tCQljYXQgPDwtRU9GCi0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tCQlFT0YKLS0JfSA+PiBjb25maWcubG9nCi0tCSgKLS0JCWNkICRUTVBESVIKLS0JCW1ha2UgLWsgLWogJChncmVwIC1jIHByb2Nlc3NvciAvcHJvYy9jcHVpbmZvKQotLQkpID4+IGNvbmZpZy5sb2cKLS0JZXZhbCAiJFRFU1RQT1NUUFJPQyIKLS0JY2F0ID4+IGNvbmZpZy5sb2cgPDwtRU9GCi0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tIyMgRU5EIFJVTk5JTkcgVEVTVFM6ICQoZGF0ZSkKLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0JRU9GCi0tfQotLQotIGNvbmZpZ2g9bmV0bWFwX2xpbnV4X2NvbmZpZy5oCi0gIyBzdWNjZXMvZmFpbHVyZSBhY3Rpb25zIGFyZSBleHBlY3RlZCB0byB3cml0ZSBzb21lIG1hY3JvcwotICMgaW4gbmV0bWFfbGludXhfY29uZmlnLmguIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGNhbiBiZQotQEAgLTYxOSw3ICs1NzMsNiBAQCBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgJ2NvbmZpZy5sb2cnCi0gcmVzZXRfdGVzdHMKLSBybSAtZiBkcml2ZXJzLm1hawotIGFkZF90ZXN0IHRydWUgYnJva2VuX2J1aWxkc3lzdGVtIDwgL2Rldi9udWxsCi0tcnVuX3Rlc3RzCi0gCi0gZHJ2bmFtZTJjb25maWcoKSB7Ci0gCWxvY2FsIG5hbWU9JDEKLUBAIC0xMjgwLDcgKzEyMzMsNiBAQCBjYXQgPiAkY29uZmlnaCA8PC1FT0YKLSBFT0YKLSAKLSAjIHRoZSBURVNUUE9TVFBST0Mgc2NyaXB0IHdpbGwgYWRkIG1hY3JvcyB0byAkY29uZmlnaAotLXJ1bl90ZXN0cwotIAotIGRlZmluZSBEUklWRVJfU1VGRklYIFwiJGRydnN1ZmZpeFwiCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwLW1vZHVsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC1tb2R1bGVzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyZWNlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwLW1vZHVsZXNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotcmVxdWlyZSBuZXRtYXAuaW5jCi0KLURFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCi1kb19jb25maWd1cmVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgotCi1pbmhlcml0IG1vZHVsZQotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1leHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbmV0bWFwLW1vZHVsZXMiCi0KLUVYVFJBX09FQ09ORiA9ICItLWtlcm5lbC1kaXI9JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gXAotICAgICAgICAgICAgICAgIC0ta2VybmVsLXNvdXJjZXM9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IFwKLSAgICAgICAgICAgICAgICAtLWluc3RhbGwtbW9kLXBhdGg9JHtEfSBcCi0gICAgICAgICAgICAgICAgLS1kcml2ZXItc3VmZml4PSItbmV0bWFwIiBcCi0gICAgICAgICAgICAgICAgIgotCi0jIFRoZSBkcml2ZXIgYnVpbGRzIGFyZSBvcHRpb25hbCwgYnV0IGZvciBkZXRlcm1pbmlzdGljIGJ1aWxkcywKLSMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZXhwbGljaXRseSBlbmFibGUvZGlzYWJsZSB0aGUgYnVpbGRzCi0jIGZvciB0aGVtIGluIGEgcHJvcGVyIHBsYWNlIChtYXliZSBpbiBCU1ApLgotIyBCdXQgd2UgY2FuJ3QgdXNlIFBBQ0tBR0VDT05GSUcgc2luY2UgdGhlcmUgaXMgbm8gb3B0aW9uIGZvcgotIyBlYWNoIGRyaXZlciwgYW5kIHRoZSBvcHRpb25zIGFyZToKLSMgIC0tbm8tZHJpdmVycyAgICBkbyBub3QgY29tcGlsZSBhbnkgZHJpdmVyCi0jICAtLW5vLWRyaXZlcnM9ICAgZG8gbm90IGNvbXBpbGUgdGhlIGdpdmVuIGRyaXZlcnMgKGNvbW1hIHNlcC4pCi0jICAtLWRyaXZlcnM9ICAgICAgb25seSBjb21waWxlIHRoZSBnaXZlbiBkcml2ZXJzIChjb21tYSBzZXAuKQotIwotIyBTbyB1c2UgTkVUTUFQX0RSSVZFUlMgYW5kIHRoZSBmb2xsb3dpbmcgcHl0aG9uIGNvZGUgdG8gYWRkIHByb3BlcgotIyBjb25maWdzIHRvIEVYVFJBX09FQ09ORi4KLSMKLSMgVGhlIGRlZmF1bHQgaXMgbm8tZHJpdmVycywgYW5kIGFsbCBzdXBwb3J0ZWQgZHJpdmVycyBhcmUgbGlzdGVkCi0jIGluIE5FVE1BUF9BTExfRFJJVkVSUy4KLU5FVE1BUF9EUklWRVJTID8/PSAiIgotTkVUTUFQX0FMTF9EUklWRVJTID0gIml4Z2JlIGlnYiBlMTAwMGUgZTEwMDAgdmV0aC5jIGZvcmNlZGV0aC5jIHZpcnRpb19uZXQuYyByODE2OS5jIgotCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGRyaXZlcnNfbGlzdCA9IGQuZ2V0VmFyKCJORVRNQVBfRFJJVkVSUyIpLnNwbGl0KCkKLSAgICBhbGxfZHJpdmVyc19saXN0ID0gZC5nZXRWYXIoIk5FVE1BUF9BTExfRFJJVkVSUyIpLnNwbGl0KCkKLSAgICBjb25maWdfZHJpdmVycyA9ICItLWRyaXZlcnM9IiArICIsIi5qb2luKGRyaXZlcnNfbGlzdCkKLQotICAgIGV4dHJhX29lY29uZl9kcml2ZXJzID0gYmIudXRpbHMuY29udGFpbnNfYW55KCdORVRNQVBfRFJJVkVSUycsIGFsbF9kcml2ZXJzX2xpc3QsIGNvbmZpZ19kcml2ZXJzLCAnLS1uby1kcml2ZXJzJywgZCkKLSAgICBkLmFwcGVuZFZhcigiRVhUUkFfT0VDT05GIiwgZXh0cmFfb2Vjb25mX2RyaXZlcnMpCi19Ci0KLUxERkxBR1MgOj0gIiR7QCcke0xERkxBR1N9Jy5yZXBsYWNlKCctV2wsLU8xJywgJycpfSIKLUxERkxBR1MgOj0gIiR7QCcke0xERkxBR1N9Jy5yZXBsYWNlKCctV2wsLS1hcy1uZWVkZWQnLCAnJyl9IgotCi1kb19jb25maWd1cmUgKCkgewotICAgIGNkICR7U30vTElOVVgKLSAgICAuL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0gICAgY2F0ID4+ICAke1N9L0xJTlVYL25ldG1hcF9saW51eF9jb25maWcuaCA8PEVPRgotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9IUlRJTUVSX01PREVfUkVMCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX0hSVElNRVJfRk9SV0FSRF9OT1cKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfUEhZU19BRERSX1QKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfQUNDRVNTX09OQ0UKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfTkVUREVWX09QUwotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9JTklUX05FVAotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9MSVZFX0FERFJfQ0hBTkdFCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX1RYX1NLQl9TSEFSSU5HCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX1VOTE9DS0VEX0lPQ1RMCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX1BFUk5FVF9PUFNfSUQKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX1ZJUlRJT19GVU5DVElPTlMKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX1ZJUlRJT19GUkVFX1BBR0VTCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9WSVJUSU9fR0VUX1ZSU0laRQotI2RlZmluZSBORVRNQVBfTElOVVhfVElNRVJfUlRZUEUgZW51bSBocnRpbWVyX3Jlc3RhcnQKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX1ZJUlRJT19NVUxUSV9RVUVVRQotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9FMTAwMEVfRVhUX1JYREVTQwotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9FMTAwMEVfRE9XTjIKLUVPRgotCi1pZiAke0AgJ2ZhbHNlJyBpZiAoYmIudXRpbHMudmVyY21wX3N0cmluZyhkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nKSBvciAiMCIsICczLjE3JykgPCAwKSBlbHNlICd0cnVlJyB9IDsgdGhlbgotICAgIGVjaG8gT0sKLSAgICBjYXQgPj4gICR7U30vTElOVVgvbmV0bWFwX2xpbnV4X2NvbmZpZy5oIDw8RU9GCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9BTExPQ19ORVRERVZfNEFSR1MKLUVPRgotZmkKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgY2QgJHtTfS9MSU5VWAotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgY2QgJHtTfS9MSU5VWAotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotfQotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy84MzMzNS8KLVBOQkxBQ0tMSVNUW25ldG1hcC1tb2R1bGVzXSA/PSAiQlJPS0VOOiBub3QgY29tcGF0aWJsZSB3aXRoIGRlZmF1bHQga2VybmVsIHZlcnNpb24gNC44IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIzM2U3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAibmV0bWFwIGFuZCBWQUxFIC0gdmVyeSBmYXN0IHBhY2tldCBJL08gZnJvbSB1c2Vyc3BhY2UgKEZyZWVCU0QvTGludXgpIgotREVTQ1JJUFRJT049ICJORVRNQVAgaXMgYSBmcmFtZXdvcmsgZm9yIHZlcnkgZmFzdCBwYWNrZXQgSS9PIGZyb20gdXNlcnNwYWNlLiAgVkFMRSBpcyBhbiBlcXVhbGx5IGZhc3QgaW4ta2VybmVsIHNvZnR3YXJlIHN3aXRjaCB1c2luZyB0aGUgbmV0bWFwIEFQSS4gIEJvdGggYXJlIGltcGxlbWVudGVkIGFzIGEgc2luZ2xlIGtlcm5lbCBtb2R1bGUgZm9yIEZyZWVCU0QgYW5kIExpbnV4LCBhbmQgY2FuIGRlYWwgd2l0aCBsaW5lIHJhdGUgb24gcmVhbCBvciBlbXVsYXRlZCAxMCBHYml0IHBvcnRzLiIKLVNFQ1RJT04gPSAibmV0d29ya2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9uZXRtYXAvIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTM7ZW5kbGluZT0xNDttZDU9NTZhZTBiOWM3YmEwNDc2YWI5MDk4ZGU5NGMyNzE0ZDYiCi0KLVNSQ1JFViA9ICJkYTllMTllNjliODRlNGY2ZjhhZTEyNWY4ZDAxYjQyYTRhYmFkZTZhIgotUFYgPSAibWFzdGVyK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHVpZ2lyaXp6by9uZXRtYXAuZ2l0IgotU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlX2ZpeHVwLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fG1pcHN8YXJtKS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ4NTA5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvbmV0bWFwX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLXJlcXVpcmUgbmV0bWFwLmluYwotCi1ERVBFTkRTID0gIm5ldG1hcC1tb2R1bGVzIgotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotRVhUUkFfT0VDT05GID0gIi0ta2VybmVsLWRpcj0ke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfSBcCi0gICAgICAgICAgICAgICAgLS1rZXJuZWwtc291cmNlcz0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAotICAgICAgICAgICAgICAgIC0tbm8tZHJpdmVycyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdlbmVyaWMgXAotICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgLS1kZXN0ZGlyPSR7RH0gXAotICAgICAgICAgICAgICAgIC0tY2M9JyR7Q0N9JyBcCi0gICAgICAgICAgICAgICAgLS1sZD0nJHtMRH0nIFwKLSAgICAgICAgICAgICAgICAiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10ZXN0bW1hcC1maXgtY29tcGlsZS1pc3N1ZS13aXRoLWdjYy01LngucGF0Y2giCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgY2QgJHtTfS9MSU5VWAotICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBjZCAke1N9L0xJTlVYCi0gICAgbWFrZSBhcHBzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGNkICR7U30vTElOVVgKLSAgICBtYWtlIGluc3RhbGwtYXBwcyBERVNURElSPSR7RH0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKLVJERVBFTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmV0bWFwIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZXRtYXAiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzY5NzMzLwotUE5CTEFDS0xJU1RbbmV0bWFwXSA/PSAiQlJPS0VOOiBUcmllcyB0byBidWlsZCBrZXJuZWwgbW9kdWxlIGFuZCBmYWlscywgZWl0aGVyIGl0IHNob3VsZCBiZSBkaXNhYmxlZCBvciB0aGVyZSBzaG91bGQgYmUgZGVwZW5kZW5jeSBvbiBrZXJuZWwgbGlrZSBpbiBuZXRtYXAtbW9kdWxlcyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzAuMC4yMDE3MDQyMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzAuMC4yMDE3MDgxMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC1tb2R1bGVfMC4wLjIwMTcwNDIxLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxNzA4MTAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcwNDIxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzA0MjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZDQyMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzA0MjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1yZXF1aXJlIHdpcmVndWFyZC5pbmMKLQotaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24gc3lzdGVtZCBwa2djb25maWcKLQotREVQRU5EUyA9ICJ3aXJlZ3VhcmQtbW9kdWxlIGxpYm1ubCIKLQotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICBjZCAke1N9L3Rvb2xzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGNkICR7U30vdG9vbHMKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIFBSRUZJWD0iJHtwcmVmaXh9IiBTWVNDT05GRElSPSIke3N5c2NvbmZkaXJ9IiBcCi0gICAgICAgIFNZU1RFTURVTklURElSPSIke3N5c3RlbWRfdW5pdGRpcn0iIFwKLSAgICAgICAgV0lUSF9TWVNURU1EVU5JVFM9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3llcycsICcnLCBkKX0gXAotICAgICAgICBXSVRIX0JBU0hDT01QTEVUSU9OPXllcyBcCi0gICAgICAgIFdJVEhfV0dRVUlDSz15ZXMgXAotICAgICAgICBpbnN0YWxsCi19Ci0KLUZJTEVTXyR7UE59ID0gIiBcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9IFwKLSAgICAke2JpbmRpcn0gXAotIgotCi1SREVQRU5EU18ke1BOfSA9ICJ3aXJlZ3VhcmQtbW9kdWxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzA4MTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE3MDgxMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGRkYmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzA4MTAuYmIKQEAgLTAsMCArMSwyNyBAQAorcmVxdWlyZSB3aXJlZ3VhcmQuaW5jCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uIHN5c3RlbWQgcGtnY29uZmlnCisKK0RFUEVORFMgPSAid2lyZWd1YXJkLW1vZHVsZSBsaWJtbmwiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisgICAgY2QgJHtTfS90b29scworfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBjZCAke1N9L3Rvb2xzCisgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBQUkVGSVg9IiR7cHJlZml4fSIgU1lTQ09ORkRJUj0iJHtzeXNjb25mZGlyfSIgXAorICAgICAgICBTWVNURU1EVU5JVERJUj0iJHtzeXN0ZW1kX3VuaXRkaXJ9IiBcCisgICAgICAgIFdJVEhfU1lTVEVNRFVOSVRTPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd5ZXMnLCAnJywgZCl9IFwKKyAgICAgICAgV0lUSF9CQVNIQ09NUExFVElPTj15ZXMgXAorICAgICAgICBXSVRIX1dHUVVJQ0s9eWVzIFwKKyAgICAgICAgaW5zdGFsbAorfQorCitGSUxFU18ke1BOfSA9ICIgXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7c3lzdGVtZF91bml0ZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAid2lyZWd1YXJkLW1vZHVsZSBiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLmluYwppbmRleCA0NmE5OTcxLi5mMzdkNTJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLmluYwpAQCAtMTEsOCArMTEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXQuengyYzQuY29tL1dpcmVHdWFyZC9zbmFwc2hvdC9XaXJlR3VhcmQtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU1NTlmNGZkNjcyYjE1YzM4YTE1ZWI0ZDg4Y2M4NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDNjODJhZjc3NDIyNGNkMTcxZDAwMGVlNGE1MTliNWU0NzRjYzY4NDJhYzA0OTY3NzczY2Y3N2IyNjc1MDAwMCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZGQzZTA4MDQwN2I4Mjk1YzI1NTY1YTg0N2E0Y2EyNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjk2MjMwMzkwNjI1YWFkNmY0ODE2ZmEyM2FlZjZlOWY3ZmVlMTMwZjA4M2Q4Mzg5MTkxMjlmZjEyMDg5YmY3IgogCiBTID0gIiR7V09SS0RJUn0vV2lyZUd1YXJkLSR7UFZ9L3NyYy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnNoL25ldGtpdC1yc2hfMC4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yc2gvbmV0a2l0LXJzaF8wLjE3LmJiCmluZGV4IGQ2MTYzNmUuLjM5OTBmN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yc2gvbmV0a2l0LXJzaF8wLjE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yc2gvbmV0a2l0LXJzaF8wLjE3LmJiCkBAIC03MCw3ICs3MCw3IEBACiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkZWJpYW4vaG9zdHMuZXF1aXYgJHtEfS8ke3N5c2NvbmZkaXJ9CiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JleGVjLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvcmV4ZWMKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmxvZ2luLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvcmxvZ2luCi0gICAgICAgIGluc3RhbGwgLW0gMDY2NCAke1dPUktESVJ9L3JzaC5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3JzaAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yc2gucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9yc2gKICAgICBmaQogICAgIGNwICR7V09SS0RJUn0vcmV4ZWMueGluZXRkLm5ldGtpdCAgJHtEfS8ke3N5c2NvbmZkaXJ9L3hpbmV0ZC5kL3JleGVjCiAgICAgY3AgJHtXT1JLRElSfS9ybG9naW4ueGluZXRkLm5ldGtpdCAgJHtEfS8ke3N5c2NvbmZkaXJ9L3hpbmV0ZC5kL3Jsb2dpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgppbmRleCA1NGE1OGM4Li44MDdiNTY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgpAQCAtMSw0ICsxLDUgQEAKIERFU0NSSVBUSU9OID0gIm5ldGtpdC10ZWxuZXQgaW5jbHVkZXMgdGhlIHRlbG5ldCBkYWVtb24gYW5kIGNsaWVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmhjcy5oYXJ2YXJkLmVkdS9+ZGhvbGxhbmQvY29tcHV0ZXJzL25ldGtpdC5odG1sIgogU0VDVElPTiA9ICJuZXQiCiBERVBFTkRTID0gIm5jdXJzZXMiCiBMSUNFTlNFID0gIkJTRCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2FjY2VsLXBwcC9hY2NlbC1wcHBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYWNjZWwtcHBwL2FjY2VsLXBwcF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhODY1MDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYWNjZWwtcHBwL2FjY2VsLXBwcF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkFDQ0VMLVBQUCBpcyBhIGhpZ2ggcGVyZm9ybWFuY2UgVlBOIHNlcnZlciBhcHBsaWNhdGlvbiBmb3IgbGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L2FwcHMvdHJhYy9hY2NlbC1wcHAvd2lraSIKLVNFQ1RJT04gPSAibmV0IgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLURFUEVORFMgPSAib3BlbnNzbCBsaWJwY3JlIgotCi1pbmhlcml0IGNtYWtlCi0KLVBSID0gInIxIgotUFYgPSAiMS43LjMrZ2l0IgotCi1TUkNSRVYgPSAiNGFjZmE0NmMzMjFhMzQ0YjlhNmNlNDEyOGU3MmQxZTAyODI4ZDhhMCIKLVNSQ19VUkkgPSAiZ2l0Oi8vYWNjZWwtcHBwLmdpdC5zb3VyY2Vmb3JnZS5uZXQvZ2l0cm9vdC9hY2NlbC1wcHAvYWNjZWwtcHBwO2JyYW5jaD0xLjciCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9EUklWRVI9RkFMU0UgXAotICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKLSAgICAgICAgICAgICAgICAgLURMT0dfUEdTUUw9RkFMU0UgXAotICAgICAgICAgICAgICAgICAtRFJBRElVUz1GQUxTRSBcCi0gICAgICAgICAgICAgICAgIC1ETkVUU05NUD1GQUxTRSBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3IvbGliLyR7QlBOfS8uZGVidWcvKiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8ke0JQTn0vKi5zbyAvdXNyL2xpYi8ke0JQTn0vKi5zbyIKLUlOU0FORV9TS0lQXyR7UE59LWxpYnMgPSAiZGV2LXNvIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWxpYnMiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBjbWxpc3Q9YGZpbmQgJHtTfSAtbmFtZSBDTWFrZUxpc3RzLnR4dGAKLSAgICBmb3IgZmlsZSBpbiAkY21saXN0OyBkbwotICAgICAgICBzZWQgLWkgLWUgInM6TElCUkFSWSBERVNUSU5BVElPTiBsaWIvYWNjZWwtcHBwOkxJQlJBUlkgREVTVElOQVRJT04gJHtiYXNlbGlifS9hY2NlbC1wcHA6ZyIgXAotICAgICAgICAgICAgICAgLWUgInM6XCR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYi9hY2NlbC1wcHA6XCR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7YmFzZWxpYn0vYWNjZWwtcHBwOmciIFwKLSAgICAgICAgICAgICAgICRjbWxpc3QKLSAgICBkb25lCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzgxMDAzLwotUE5CTEFDS0xJU1RbYWNjZWwtcHBwXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCB3aXRoIG5ldyBiaW51dGlscy0yLjI3IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy9idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFiOWQyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwxNjcgQEAKK0Zyb20gNDNiNmU5OGM5YzM3YWZkMGQ5MTQ5NDlkY2ZmNGVhYjgxZjVhOTk1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJyZW5kYW4gTGUgRm9sbCA8YnJlbmRhbi5sZS5mb2xsQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAxMTo0Mjo1NyArMDAwMAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KKworLS0tCisgbUROU1Bvc2l4L01ha2VmaWxlIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbUROU1Bvc2l4L01ha2VmaWxlIGIvbUROU1Bvc2l4L01ha2VmaWxlCitpbmRleCA0Zjk4ZTkwLi44YWM5N2FkIDEwMDc1NQorLS0tIGEvbUROU1Bvc2l4L01ha2VmaWxlCisrKysgYi9tRE5TUG9zaXgvTWFrZWZpbGUKK0BAIC01MCw2ICs1MCw3IEBACisgCisgTElCVkVSUyA9IDEKKyAKKytQT1NJWERJUiA9IC4uL21ETlNQb3NpeAorIENPUkVESVIgPSAuLi9tRE5TQ29yZQorIFNIQVJFRERJUiA/PSAuLi9tRE5TU2hhcmVkCisgSkRLID0gL3Vzci9qZGsKK0BAIC01OCwxMSArNTksMTEgQEAgQ0MgPSBAY2MKKyBCSVNPTiA9IEBiaXNvbgorIEZMRVggPSBAZmxleAorIFNUID0gQHN0cmlwCistTEQgPSBsZCAtc2hhcmVkCisrTEQgPUBMRAorIENQID0gY3AKKyBSTSA9IHJtCisgTE4gPSBsbiAtcyAtZgorLUNGTEFHU19DT01NT04gPSAtSSQoQ09SRURJUikgLUkkKFNIQVJFRERJUikgLUkkKE9CSkRJUikgLWZ3cmFwdiAtVyAtV2FsbCAtRFBJRF9GSUxFPVwiL3Zhci9ydW4vbWRuc2QucGlkXCIgLURNRE5TX1VEU19TRVJWRVJQQVRIPVwiL3Zhci9ydW4vbWRuc2RcIgorK0NGTEFHU19DT01NT04gPSAtSSQoUE9TSVhESVIpIC1JJChDT1JFRElSKSAtSSQoU0hBUkVERElSKSAtSSQoT0JKRElSKSAtZndyYXB2IC1XIC1XYWxsIC1EUElEX0ZJTEU9XCIvdmFyL3J1bi9tZG5zZC5waWRcIiAtRE1ETlNfVURTX1NFUlZFUlBBVEg9XCIvdmFyL3J1bi9tZG5zZFwiCisgQ0ZMQUdTX1BUSFJFQUQgPQorIExJTktPUFRTID0KKyBMSU5LT1BUU19QVEhSRUFEID0gLWxwdGhyZWFkCitAQCAtNzAsNyArNzEsNyBAQCBMRFNVRkZJWCA9IHNvCisgSkFWQUNGTEFHU19PUyA9IC1mUElDIC1zaGFyZWQgLWxkbnNfc2QKKyAKKyAjIFNldCB1cCBkaXZlcmdpbmcgcGF0aHMgZm9yIGRlYnVnIHZzLiBwcm9kIGJ1aWxkcworLURFQlVHPTAKKytERUJVRz89MQorIGlmZXEgKCQoREVCVUcpLDEpCisgQ0ZMQUdTX0RFQlVHID0gLWcgLURNRE5TX0RFQlVHTVNHUz0yCisgT0JKRElSID0gb2JqZWN0cy9kZWJ1ZworQEAgLTIxMyw3ICsyMTQsNyBAQCBlbmRpZgorIGVuZGlmCisgZW5kaWYKKyAKKy1DRkxBR1MgPSAkKENGTEFHU19DT01NT04pICQoQ0ZMQUdTX09TKSAkKENGTEFHU19ERUJVRykKKytDRkxBR1NfQlVJTEQgPSAkKENGTEFHUykgJChDRkxBR1NfQ09NTU9OKSAkKENGTEFHU19PUykgJChDRkxBR1NfREVCVUcpCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKK0BAIC0yNDksOCArMjUwLDcgQEAgRGFlbW9uOiBzZXR1cCAkKEJVSUxERElSKS9tZG5zZAorIAlAZWNobyAiUmVzcG9uZGVyIGRhZW1vbiBkb25lIgorIAorICQoQlVJTERESVIpL21kbnNkOiAkKERBRU1PTk9CSlMpCistCSQoQ0MpIC1vICRAICQrICQoTElOS09QVFMpCistCUAkKFNUUklQKSAkQAorKwkkKENDKSAtbyAkQCAkKworIAorICMgbGliZG5zX3NkIHRhcmdldCBidWlsZHMgdGhlIGNsaWVudCBsaWJyYXJ5CisgbGliZG5zX3NkOiBzZXR1cCAkKEJVSUxERElSKS9saWJkbnNfc2QuJChMRFNVRkZJWCkKK0BAIC0yNTksMjIgKzI1OSwxOCBAQCBsaWJkbnNfc2Q6IHNldHVwICQoQlVJTERESVIpL2xpYmRuc19zZC4kKExEU1VGRklYKQorIENMSUVOVExJQk9CSlMgPSAkKE9CSkRJUikvZG5zc2RfY2xpZW50bGliLmMuc28ubyAkKE9CSkRJUikvZG5zc2RfY2xpZW50c3R1Yi5jLnNvLm8gJChPQkpESVIpL2Ruc3NkX2lwYy5jLnNvLm8KKyAKKyAkKEJVSUxERElSKS9saWJkbnNfc2QuJChMRFNVRkZJWCk6ICQoQ0xJRU5UTElCT0JKUykKKy0JQCQoTEQpICQoTElOS09QVFMpIC1vICRAICQrCistCUAkKFNUUklQKSAkQAorKwkkKExEKSAtc2hhcmVkICQoTElOS09QVFMpIC1XbCwtc29uYW1lLGxpYmRuc19zZC4kKExEU1VGRklYKS4xIC1vICRAICQrCisgCistQ2xpZW50czogc2V0dXAgbGliZG5zX3NkIC4uL0NsaWVudHMvYnVpbGQvZG5zLXNkCisrQ2xpZW50czogc2V0dXAgbGliZG5zX3NkCisrCUAkKE1BS0UpIC1DIC4uL0NsaWVudHMgREVCVUc9JHtERUJVR30KKyAJQGVjaG8gIkNsaWVudHMgZG9uZSIKKyAKKy0uLi9DbGllbnRzL2J1aWxkL2Rucy1zZDoKKy0JQCQoTUFLRSkgLUMgLi4vQ2xpZW50cworLQorICMgbnNzX21kbnMgdGFyZ2V0IGJ1aWxkcyB0aGUgTmFtZSBTZXJ2aWNlIFN3aXRjaCBtb2R1bGUKKyBuc3NfbWRuczogc2V0dXAgJChCVUlMRERJUikvJChOU1NMSUJGSUxFKQorIAlAZWNobyAiTmFtZSBTZXJ2aWNlIFN3aXRjaCBtb2R1bGUgZG9uZSIKKyAKKyAkKEJVSUxERElSKS8kKE5TU0xJQkZJTEUpOiAkKENMSUVOVExJQk9CSlMpICQoT0JKRElSKS9uc3NfbWRucy5jLnNvLm8KKy0JQCQoTEQpICQoTElOS09QVFMpIC1vICRAICQrCistCUAkKFNUUklQKSAkQAorKwkkKExEKSAtc2hhcmVkICQoTElOS09QVFMpIC1vICRAICQrCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKK0BAIC00NzAsNTUgKzQ2Niw1NSBAQCBkbnNleHRkOiBzZXR1cCAkKEJVSUxERElSKS9kbnNleHRkCisgCUBlY2hvICJkbnNleHRkIGRvbmUiCisgCisgJChCVUlMRERJUikvbUROU0NsaWVudFBvc2l4OiAgICAgICAgICQoQVBQT0JKKSAgICAgJChPQkpESVIpL0NsaWVudC5jLm8KKy0JJChDQykgJCsgLW8gJEAgJChMSU5LT1BUUykKKysJJChDQykgJCsgLW8gJEAKKyAKKyAkKEJVSUxERElSKS9tRE5TUmVzcG9uZGVyUG9zaXg6ICAgICAgJChDT01NT05PQkopICAkKE9CSkRJUikvUmVzcG9uZGVyLmMubworLQkkKENDKSAkKyAtbyAkQCAkKExJTktPUFRTKQorKwkkKENDKSAkKyAtbyAkQAorIAorICQoQlVJTERESVIpL21ETlNQcm94eVJlc3BvbmRlclBvc2l4OiAkKENPTU1PTk9CSikgICQoT0JKRElSKS9Qcm94eVJlc3BvbmRlci5jLm8KKy0JJChDQykgJCsgLW8gJEAgJChMSU5LT1BUUykKKysJJChDQykgJCsgLW8gJEAKKyAKKyAkKEJVSUxERElSKS9tRE5TSWRlbnRpZnk6ICAgICAgICAgICAgJChTUEVDSUFMT0JKKSAkKE9CSkRJUikvSWRlbnRpZnkuYy5vCistCSQoQ0MpICQrIC1vICRAICQoTElOS09QVFMpCisrCSQoQ0MpICQrIC1vICRACisgCisgJChPQkpESVIpL0lkZW50aWZ5LmMubzogICAgICAgICAgICAgICQoQ09SRURJUikvbUROUy5jICMgTm90ZTogSWRlbnRpZnkuYyB0ZXh0dWFsbHkgaW1wb3J0cyBtRE5TLmMKKyAKKyAkKEJVSUxERElSKS9tRE5TTmV0TW9uaXRvcjogICAgICAgICAgJChTUEVDSUFMT0JKKSAkKE9CSkRJUikvTmV0TW9uaXRvci5jLm8KKy0JJChDQykgJCsgLW8gJEAgJChMSU5LT1BUUykKKysJJChDQykgJCsgLW8gJEAKKyAKKyAkKE9CSkRJUikvTmV0TW9uaXRvci5jLm86ICAgICAgICAgICAgJChDT1JFRElSKS9tRE5TLmMgIyBOb3RlOiBOZXRNb25pdG9yLmMgdGV4dHVhbGx5IGltcG9ydHMgbUROUy5jCisgCisgJChCVUlMRERJUikvZG5zZXh0ZDogICAgICAgICAgICAgICAgICQoRE5TRVhURE9CSikgJChPQkpESVIpL2Ruc2V4dGQuYy50aHJlYWRzYWZlLm8KKy0JJChDQykgJCsgLW8gJEAgJChMSU5LT1BUUykgJChMSU5LT1BUU19QVEhSRUFEKQorKwkkKENDKSAkKyAtbyAkQCAkKExJTktPUFRTX1BUSFJFQUQpCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyAjIEltcGxpY2l0IHJ1bGVzCisgJChPQkpESVIpLyUuYy5vOgklLmMKKy0JJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAtYyAtbyAkQCAkPAorIAorICQoT0JKRElSKS8lLmMubzoJJChDT1JFRElSKS8lLmMKKy0JJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAtYyAtbyAkQCAkPAorIAorICQoT0JKRElSKS8lLmMubzoJJChTSEFSRURESVIpLyUuYworLQkkKENDKSAkKENGTEFHUykgLWMgLW8gJEAgJDwKKysJJChDQykgJChDRkxBR1NfQlVJTEQpIC1jIC1vICRAICQ8CisgCisgJChPQkpESVIpLyUuYy50aHJlYWRzYWZlLm86CSUuYworLQkkKENDKSAkKENGTEFHUykgJChDRkxBR1NfUFRIUkVBRCkgLURfUkVFTlRSQU5UIC1jIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAkKENGTEFHU19QVEhSRUFEKSAtRF9SRUVOVFJBTlQgLWMgLW8gJEAgJDwKKyAKKyAkKE9CSkRJUikvJS5jLnRocmVhZHNhZmUubzoJJChTSEFSRURESVIpLyUuYworLQkkKENDKSAkKENGTEFHUykgJChDRkxBR1NfUFRIUkVBRCkgLURfUkVFTlRSQU5UIC1jIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAkKENGTEFHU19QVEhSRUFEKSAtRF9SRUVOVFJBTlQgLWMgLW8gJEAgJDwKKyAKKyAkKE9CSkRJUikvJS5jLnNvLm86CSUuYworLQkkKENDKSAkKENGTEFHUykgLWMgLWZQSUMgLW8gJEAgJDwKKysJJChDQykgJChDRkxBR1NfQlVJTEQpIC1jIC1mUElDIC1vICRAICQ8CisgCisgJChPQkpESVIpLyUuYy5zby5vOgkkKFNIQVJFRERJUikvJS5jCistCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZlBJQyAtbyAkQCAkPAorKwkkKENDKSAkKENGTEFHU19CVUlMRCkgLWMgLWZQSUMgLW8gJEAgJDwKKyAKKyAkKE9CSkRJUikvJS55Lm86ICQoU0hBUkVERElSKS8lLnkKKyAJJChCSVNPTikgICAgICAgICAgICAgIC1vICQoT0JKRElSKS8kKi5jIC1kICQ8CistCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkKE9CSkRJUikvJCouYworKwkkKENDKSAkKENGTEFHU19CVUlMRCkgLWMgLW8gJEAgJChPQkpESVIpLyQqLmMKKyAKKyAkKE9CSkRJUikvJS5sLm86ICQoU0hBUkVERElSKS8lLmwKKyAJJChGTEVYKSAkKEZMRVhGTEFHU19PUykgLWkgICAgICAgICAgICAgLW8kKE9CSkRJUikvJCoubC5jICQ8CistCSQoQ0MpICQoQ0ZMQUdTKSAtV25vLWVycm9yIC1jIC1vICRAICQoT0JKRElSKS8kKi5sLmMKKysJJChDQykgJChDRkxBR1NfQlVJTEQpIC1Xbm8tZXJyb3IgLWMgLW8gJEAgJChPQkpESVIpLyQqLmwuYworLS0gCisyLjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzL21kbnMuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvbWRucy5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMWQxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzL21kbnMuc2VydmljZQpAQCAtMCwwICsxLDE1IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVplcm8tY29uZmlndXJhdGlvbiBuZXR3b3JraW5nCitBZnRlcj1uZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9Zm9ya2luZworRXhlY1N0YXJ0UHJlPS9iaW4vcm0gLWYgL3Zhci9ydW4vbWRuc2QucGlkCitFeGVjU3RhcnQ9L3Vzci9zYmluL21kbnNkCitFeGVjUmVsb2FkPS9iaW4va2lsbCAtSFVQICRNQUlOUElECitQSURGaWxlPS92YXIvcnVuL21kbnNkLnBpZAorUmVzdGFydD1hbHdheXMKK1Jlc3RhcnRTZWM9MTBzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc183NjUuNTAuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc183NjUuNTAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTgwZjdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzc2NS41MC45LmJiCkBAIC0wLDAgKzEsODkgQEAKK1NVTU1BUlkgPSAiUHVibGlzaGVzICYgYnJvd3NlcyBhdmFpbGFibGUgc2VydmljZXMgb24gYSBsaW5rIGFjY29yZGluZyB0byB0aGUgWmVyb2NvbmYgLyBCb25qb3VyIHByb3RvY29sIgorREVTQ1JJUFRJT04gPSAiQm9uam91ciwgYWxzbyBrbm93biBhcyB6ZXJvLWNvbmZpZ3VyYXRpb24gbmV0d29ya2luZywgZW5hYmxlcyBhdXRvbWF0aWMgZGlzY292ZXJ5IG9mIGNvbXB1dGVycywgZGV2aWNlcywgYW5kIHNlcnZpY2VzIG9uIElQIG5ldHdvcmtzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL25ldHdvcmtpbmcvYm9uam91ci8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT0zMWM1MDM3MTkyMWUwZmI3MzEwMDNiYmM2NjVmMjliZiIKKworUlBST1ZJREVTXyR7UE59ICs9ICJsaWJkbnNfc2Quc28iCisKK1NSQ19VUkkgPSAiaHR0cDovL29wZW5zb3VyY2UuYXBwbGUuY29tL3RhcmJhbGxzL21ETlNSZXNwb25kZXIvbUROU1Jlc3BvbmRlci0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYnVpbGQucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vbWRucy5zZXJ2aWNlIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGE2YmMxNjI4ODUxMDAyNjM0ZWEzODMzYTRkY2EzMTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU2MWRkMDAzNDM1N2FhNTBjNjA4MDY3MjZmYjFmNzBmYThlOTUzZmY5Y2I2MmVjY2ZiNzNlZmFkMTBkYmEwYSIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK1MgPSAiJHtXT1JLRElSfS9tRE5TUmVzcG9uZGVyLSR7UFZ9L21ETlNQb3NpeCIKKworRVhUUkFfT0VNQUtFICs9ICJvcz1saW51eCBERUJVRz0wICdDQz0ke0NDfScgJ0xEPSR7Q0NMRH0gJHtMREZMQUdTfSciCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGJ1aWxkL3Byb2QvbWRuc2QgJHtEfSR7c2JpbmRpcn0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIGNwIGJ1aWxkL3Byb2QvbGliZG5zX3NkLnNvICR7RH0ke2xpYmRpcn0vbGliZG5zX3NkLnNvLjEKKyAgICBjaG1vZCAwNjQ0ICR7RH0ke2xpYmRpcn0vbGliZG5zX3NkLnNvLjEKKyAgICBsbiAtcyBsaWJkbnNfc2Quc28uMSAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zbworCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAuLi9tRE5TU2hhcmVkL2Ruc19zZC5oICR7RH0ke2luY2x1ZGVkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCAuLi9tRE5TU2hhcmVkL21ETlNSZXNwb25kZXIuOCAke0R9JHttYW5kaXJ9L21hbjgvbWRuc2QuOAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IC4uL0NsaWVudHMvYnVpbGQvZG5zLXNkICR7RH0ke2JpbmRpcn0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIG9lX2xpYmluc3RhbGwgLUMgYnVpbGQvcHJvZCAtc28gbGlibnNzX21kbnMtMC4yICR7RH0ke2xpYmRpcn0KKyAgICBsbiAtcyBsaWJuc3NfbWRucy0wLjIuc28gJHtEfSR7bGliZGlyfS9saWJuc3NfbWRucy5zby4yCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0IG5zc19tZG5zLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW41CisgICAgaW5zdGFsbCAtbSAwNjQ0IG5zc19tZG5zLmNvbmYuNSAke0R9JHttYW5kaXJ9L21hbjUKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNjQ0IGxpYm5zc19tZG5zLjggJHtEfSR7bWFuZGlyfS9tYW44CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21kbnMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxtZG5zXD4vLycgXAorICAgICAgICAtZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbWRuc1wzXDRcNS8nIFwKKyAgICAgICAgLWkgJEQvZXRjL25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59ICgpIHsKKyAgICBzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxtZG5zXD4vLycgXAorICAgICAgICAtZSAnL15ob3N0czovcy9ccyptZG5zLy8nIFwKKyAgICAgICAgLWkgJEQvZXRjL25zc3dpdGNoLmNvbmYKK30KKworaW5oZXJpdCBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtZG5zLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21kbnMuc2VydmljZSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliZG5zX3NkLnNvLjEgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9kbnMtc2QgXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbWRucy0wLjIuc28gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbnNzX21kbnMuY29uZiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZG5zX3NkLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9kbnNfc2QuaCAiCisKK0ZJTEVTXyR7UE59LW1hbiArPSAiJHttYW5kaXJ9L21hbjgvbWRuc2QuOCBcCisgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW41L25zc19tZG5zLmNvbmYuNSBcCisgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW44L2xpYm5zc19tZG5zLjgiCisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRldiAke1BOfS1tYW4gJHtQTn0tZGJnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvZmlsZXMvaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL2ZpbGVzL2luaXQKaW5kZXggMmI4ZmUxOC4uNDc5OTU0NiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvZmlsZXMvaW5pdAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9maWxlcy9pbml0CkBAIC0zLDkgKzMsNiBAQAogCiAuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwogCi10ZXN0IC14IC91c3Ivc2Jpbi9zbm1wZCB8fCBleGl0IDAKLXRlc3QgLXggL3Vzci9zYmluL3NubXB0cmFwZCB8fCBleGl0IDAKLQogIyBEZWZhdWx0cwogZXhwb3J0IE1JQkRJUlM9L3Vzci9zaGFyZS9zbm1wL21pYnMKIFNOTVBEUlVOPXllcwpAQCAtMTgsNiArMTUsOSBAQAogIyBSZWFkcyBjb25maWcgZmlsZSBpZiBleGlzdHMgKHdpbGwgb3ZlcnJpZGUgZGVmYXVsdHMgYWJvdmUpCiBbIC1yIC9ldGMvZGVmYXVsdC9zbm1wZCBdICYmIC4gL2V0Yy9kZWZhdWx0L3NubXBkCiAKK1sgIiRTTk1QRFJVTiIgPSAieWVzIiBdICYmIHsgdGVzdCAteCAvdXNyL3NiaW4vc25tcGQgfHwgZXhpdCAwOyB9CitbICIkVFJBUERSVU4iID0gInllcyIgXSAmJiB7IHRlc3QgLXggL3Vzci9zYmluL3NubXB0cmFwZCB8fCBleGl0IDA7IH0KKwogY2FzZSAiJDEiIGluCiAgIHN0YXJ0KQogICAgIGVjaG8gLW4gIlN0YXJ0aW5nIG5ldHdvcmsgbWFuYWdlbWVudCBzZXJ2aWNlczoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmU4MDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGU0N2M2MGRjN2Y2NDk5NTlmNjNlNTZiYzYyMzU1ZGU0YmRmZDczZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJpYW4gRmxvcmVhIDxtYXJpYW4uZmxvcmVhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDE2OjU1OjI0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5ldCBzbm1wOiBmaXggZW5naW5lQm9vdHMgdmFsdWUgb24gU0lHSFVQCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gRmxvcmVhIDxtYXJpYW4uZmxvcmVhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CistLS0KKyBhZ2VudC9zbm1wZC5jICAgIHwgMSArCisgc25tcGxpYi9zbm1wdjMuYyB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcGQuYyBiL2FnZW50L3NubXBkLmMKK2luZGV4IDA1NjA0OGEuLjEyYTdlYTEgMTAwNjQ0CistLS0gYS9hZ2VudC9zbm1wZC5jCisrKysgYi9hZ2VudC9zbm1wZC5jCitAQCAtMTI0Niw2ICsxMjQ2LDcgQEAgcmVjZWl2ZSh2b2lkKQorIAkgICAgc25tcF9sb2coTE9HX0lORk8sICJORVQtU05NUCB2ZXJzaW9uICVzIHJlc3RhcnRlZFxuIiwKKyAJCSAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKKyAgICAgICAgICAgICB1cGRhdGVfY29uZmlnKCk7CisrICAgICAgICAgICAgc25tcF9zdG9yZShhcHBfbmFtZSk7CisgICAgICAgICAgICAgc2VuZF9lYXN5X3RyYXAoU05NUF9UUkFQX0VOVEVSUFJJU0VTUEVDSUZJQywgMyk7CisgI2lmIEhBVkVfU0lHSE9MRAorICAgICAgICAgICAgIHNpZ3JlbHNlKFNJR0hVUCk7CitkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdjMuYyBiL3NubXBsaWIvc25tcHYzLmMKK2luZGV4IDQzNWNhZmQuLjZhZDgyMDggMTAwNjQ0CistLS0gYS9zbm1wbGliL3NubXB2My5jCisrKysgYi9zbm1wbGliL3NubXB2My5jCitAQCAtOTg0LDkgKzk4NCw5IEBAIGluaXRfc25tcHYzX3Bvc3RfY29uZmlnKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAorICAgICAvKgorICAgICAgKiBpZiBvdXIgZW5naW5lSUQgaGFzIGNoYW5nZWQgYXQgYWxsLCB0aGUgYm9vdHMgcmVjb3JkIG11c3QgYmUgc2V0IHRvIDEgCisgICAgICAqLworLSAgICBpZiAoZW5naW5lSURMZW4gIT0gb2xkRW5naW5lSURMZW5ndGggfHwKKysgICAgaWYgKG9sZEVuZ2luZUlETGVuZ3RoICE9IChzaXplX3QpMCAmJiAoZW5naW5lSURMZW4gIT0gb2xkRW5naW5lSURMZW5ndGggfHwKKyAgICAgICAgIG9sZEVuZ2luZUlEID09IE5VTEwgfHwgY19lbmdpbmVJRCA9PSBOVUxMIHx8CistICAgICAgICBtZW1jbXAob2xkRW5naW5lSUQsIGNfZW5naW5lSUQsIGVuZ2luZUlETGVuKSAhPSAwKSB7CisrICAgICAgICBtZW1jbXAob2xkRW5naW5lSUQsIGNfZW5naW5lSUQsIGVuZ2luZUlETGVuKSAhPSAwKSkgeworICAgICAgICAgZW5naW5lQm9vdHMgPSAxOworICAgICB9CisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLWZpeC1mb3ItZGlzYWJsZS1kZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZWI5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMjcwZTk1MmY1OGE3ZTVkZGVhYmU1YTE1ZTNkZGFhYWRmNDAwMTdkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIyIEp1biAyMDE3IDEwOjI1OjA4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5ldC1zbm1wOiBmaXggZm9yIC0tZGlzYWJsZS1kZXMKKworSW5jbHVkZSBkZXMuaCBvbmx5IGlmIGl0J3MgZm91bmQgaW4gb3BlbnNzbCBzbyB0aGF0Cit0aGUgLS1kaXNhYmxlLWRlcyB3b3JrcyBjb3JyZWN0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc25tcGxpYi9zY2FwaS5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NubXBsaWIvc2NhcGkuYyBiL3NubXBsaWIvc2NhcGkuYworaW5kZXggMTZhYzgyOS4uMjcxNjg0YiAxMDA2NDQKKy0tLSBhL3NubXBsaWIvc2NhcGkuYworKysrIGIvc25tcGxpYi9zY2FwaS5jCitAQCAtNzksNyArNzksOSBAQCBuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3NjYXBpLCB1c21fc3VwcG9ydCkKKyAjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorKyNpZmRlZiBIQVZFX09QRU5TU0xfREVTX0gKKyAjaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4KKysjZW5kaWYKKyAjaWZkZWYgSEFWRV9BRVMKKyAjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKyAjZW5kaWYKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKaW5kZXggMmQ2ODg3ZS4uODQ5YWUwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKQEAgLTMwLDYgKzMwLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLWZpeC1hLWNjLWNoZWNrLWlzc3VlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtQ0hBTkdFUy1CVUctMjcxMi1GaXgtUGVybC1tb2R1bGUtY29tcGlsYXRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUtZml4LWluY29ycmVjdC12YXJpYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25ldC1zbm1wLWZpeC1mb3ItZGlzYWJsZS1kZXMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiOWY2ODJiZDcwYzcxN2VmZGQ5ZjE1YjY4NmQwN2JhZWUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThkZmM3OWI2NTM5YjcxYTZmZjMzNTc0NmNlNjNkMmRhMjIzOTA2MmFkNDE4NzJmZmY0MzU0Y2FmZWQwN2EzZSIKQEAgLTU4LDcgKzYwLDggQEAKICAgICAgICAgICAgICAgICAtLXdpdGgtZGVmYXVsdHMgXAogICAgICAgICAgICAgICAgIC0td2l0aC1pbnN0YWxsLXByZWZpeD0ke0R9IFwKICAgICAgICAgICAgICAgICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmV0LXNubXAgXAotICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLS13aXRoLWVuZGlhbm5lc3M9bGl0dGxlJywgJy0td2l0aC1lbmRpYW5uZXNzPWJpZycsIGQpfSIKKyAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy0td2l0aC1lbmRpYW5uZXNzPWxpdHRsZScsICctLXdpdGgtZW5kaWFubmVzcz1iaWcnLCBkKX0gXAorIgogCiAjIG5ldC1zbm1wIG5lZWRzIHRvIGhhdmUgbWliLW1vZHVsZXM9c211eCBlbmFibGVkIHRvIGVuYWJsZSBxdWFnZ2EgdG8gc3VwcG9ydCBzbm1wCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1taWItbW9kdWxlcz1zbXV4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvMDAwMS1sMnRwX2FwaS5jLWluY2x1ZGUtcnBjLWNsbnQuaC1mb3ItcmVzdWx0cHJvY190LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvMDAwMS1sMnRwX2FwaS5jLWluY2x1ZGUtcnBjLWNsbnQuaC1mb3ItcmVzdWx0cHJvY190LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMWE5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDAxLWwydHBfYXBpLmMtaW5jbHVkZS1ycGMtY2xudC5oLWZvci1yZXN1bHRwcm9jX3QucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA4ZjI5OWRmNGRkMWNhODU3ZTM0ODU5YzM3N2EyOWIxODNjNjMwOTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMTM6MDU6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbDJ0cF9hcGkuYzogaW5jbHVkZSBycGMvY2xudC5oIGZvciAncmVzdWx0cHJvY190JworCitGaXhlcworCit8IC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9taXBzMzJyMi1iZWMtbGludXgtbXVzbC9vcGVubDJ0cC8xLjgtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvdGlycGMvcnBjL3BtYXBfY2xudC5oOjgxOjEyOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3Jlc3VsdHByb2NfdCc7IGRpZCB5b3UgbWVhbiAncnBjcHJvY190Jz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICByZXN1bHRwcm9jX3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbDJ0cF9hcGkuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvbDJ0cF9hcGkuYyBiL2wydHBfYXBpLmMKK2luZGV4IGYwOTQ2ZmQuLmY3Nzg4MWMgMTAwNjQ0CistLS0gYS9sMnRwX2FwaS5jCisrKysgYi9sMnRwX2FwaS5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8cnBjL3R5cGVzLmg+CisgI2luY2x1ZGUgPHJwYy94ZHIuaD4KKysjaW5jbHVkZSA8cnBjL2NsbnQuaD4KKyAjaW5jbHVkZSA8cnBjL3BtYXBfY2xudC5oPgorIC8vI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC1zeXNjb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtc3lzY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMTk0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtc3lzY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK2NvbW1pdCA2ZWEzMTI1ZTJiZWMxNTAwNGYzMTI4MTQwMjIzMzVkOTRjZGY3ZTk0CitBdXRob3I6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6ICAgV2VkIFNlcCAxOSAxMTozNDo0OCAyMDEyIC0wNDAwCisKKyAgICBGaXggb3BlbmwydHAgY29uZmlnIHNjcmlwdCBsb2NhdGlvbgorICAgIAorICAgIENvcnJlY3QgdGhlIGxvY2F0aW9uIG9mIHRoZSBzeXNjb25maWcKKyAgICBzY3JpcHQuIFVzZSAvZXRjL2RlZmF1bHQvIGluc3RlYWQgb2YKKyAgICAvZXRjL3N5c2NvbmZpZy8KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CisKKyAgICBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZCBiL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQKK2luZGV4IDdmMjdiYjcuLjQxOTRmNjMgMTAwNzU1CistLS0gYS9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCisrKysgYi9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCitAQCAtOCwxMiArOCwxMiBAQAorICMgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBMMlRQIFZQTnMuIEFzIGEgc2VydmVyLCBpdCBjYW4gaGFuZGxlCisgIyAgICAgICAgICAgICAgaHVuZHJlZHMgb2YgdHVubmVscyBhbmQgc2Vzc2lvbnMuCisgIyBwcm9jZXNzbmFtZTogb3BlbmwydHBkCistIyBjb25maWc6IC9ldGMvc3lzY29uZmlnL29wZW5sMnRwZAorKyMgY29uZmlnOiAvZXRjL2RlZmF1bHQvb3BlbmwydHBkCisgIyBwaWRmaWxlOiAvdmFyL3J1bi9vcGVubDJ0cGQucGlkCisgCisgIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KKyAuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworLS4gL2V0Yy9zeXNjb25maWcvb3BlbmwydHBkCisrLiAvZXRjL2RlZmF1bHQvb3BlbmwydHBkCisgIAorICMgU2VlIGhvdyB3ZSB3ZXJlIGNhbGxlZC4KKyAgIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWE4YzViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorb3BlbmwydHA6IGVsaW1pbmF0ZSB3YXJuaW5nIGZyb20gbW9kcHJvYmUKKworbW9kcHJvYmUgd2lsbCBlbWl0IGFsYXJtaW5nIHdhcm5pbmdzIGlmIGl0IGNhbm5vdAorZmluZCBhIG1vZHVsZSwgYnV0IHdlIG9ubHkgY2FyZSB0aGF0IGl0IGZpbmQgb25lCitvZiB0d28gcG9zc2libGUgbW9kdWxlcyB3aGVuIHdlIHN0YXJ0IG9wZW5sMnRwZC4KKworU3VwcHJlc3MgbWVzc2FnZXMgZnJvbSBtb2Rwcm9iZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorKysrIGIvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorQEAgLTI5LDcgKzI5LDcgQEAgc3RhcnQoKSB7CisgCQlyZXR1cm4gMQorIAkgICAgZmkKKyAJZmkKKy0JbW9kcHJvYmUgLXMgcHBwb2wydHAgfHwgbW9kcHJvYmUgLXMgbDJ0cF9wcHAKKysJbW9kcHJvYmUgLXNxIHBwcG9sMnRwIHx8IG1vZHByb2JlIC1zcSBsMnRwX3BwcAorIAlSRVRWQUw9JD8KKyAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KKyAJICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1leGVjIG9wZW5sMnRwZCAkT1BFTkwyVFBEQVJHUworQEAgLTU3LDcgKzU3LDcgQEAgc3RvcCgpIHsKKyAJICAgIHJldHVybiAxOworIAlmaQorIAlraWxscHJvYyBvcGVubDJ0cGQKKy0JbW9kcHJvYmUgLXMgLXIgcHBwb2wydHAgfHwgbW9kcHJvYmUgLXMgLXIgbDJ0cF9wcHAKKysJbW9kcHJvYmUgLXNycSBwcHBvbDJ0cCB8fCBtb2Rwcm9iZSAtc3JxIGwydHBfcHBwCisgCWVjaG8KKyAJcm0gLWYgL3Zhci9ydW4vb3BlbmwydHBkLnBpZAorICAgICAgICAgcm0gLWYgL3Zhci9sb2NrL3N1YnN5cy9vcGVubDJ0cGQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWNkNGIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK2NvbW1pdCA3YzU4YTFlMjQ0ZWE4M2E5ZTdiYmQ1MWE2ZDM1NGNlZTI1Y2RiZDMzCitBdXRob3I6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6ICAgV2VkIFNlcCAxMiAyMzozNTo0MCAyMDEyIC0wNDAwCisKKyAgICBGaXggb3BlbmwydHBkIGluaXRzY3JpcHQKKyAgICAKKyAgICAtIENvcnJlY3QgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXR2YWwgc3RhdGVtZW50LgorICAgIC0gdXNlIHN0YXJ0LXN0b3AtZGFlbW9uIGluc3RlYWQgb2YgZGFlbW9uLgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KKworICAgIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZCBiL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQKK2luZGV4IGNlMjFiNTAuLjdmMjdiYjcgMTAwNzU1CistLS0gYS9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCisrKysgYi9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCitAQCAtMjQsNyArMjQsNyBAQCBzdGFydCgpIHsKKyAgICAgICAgIGlmIFsgLWUgL3Zhci9sb2NrL3N1YnN5cy9vcGVubDJ0cGQgXTsgdGhlbgorIAkgICAgaWYgWyAtZSAvdmFyL3J1bi9vcGVubDJ0cGQucGlkIF0gJiYgWyAtZSAvcHJvYy9gY2F0IC92YXIvcnVuL29wZW5sMnRwZC5waWRgIF07IHRoZW4KKyAJCWVjaG8gLW4gJCJjYW5ub3Qgc3RhcnQgb3BlbmwydHBkOiBvcGVubDJ0cGQgaXMgYWxyZWFkeSBydW5uaW5nLiI7CistCQlmYWlsdXJlICQiY2Fubm90IHN0YXJ0IG9wZW5sMnRwZDogb3BlbmwydHBkIGFscmVhZHkgcnVubmluZy4iOworKwkJI2ZhaWx1cmUgJCJjYW5ub3Qgc3RhcnQgb3BlbmwydHBkOiBvcGVubDJ0cGQgYWxyZWFkeSBydW5uaW5nLiI7CisgCQllY2hvCisgCQlyZXR1cm4gMQorIAkgICAgZmkKK0BAIC0zMiw5ICszMiw5IEBAIHN0YXJ0KCkgeworIAltb2Rwcm9iZSAtcyBwcHBvbDJ0cCB8fCBtb2Rwcm9iZSAtcyBsMnRwX3BwcAorIAlSRVRWQUw9JD8KKyAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KKy0JICAgIGRhZW1vbiBvcGVubDJ0cGQgJE9QRU5MMlRQREFSR1MKKysJICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1leGVjIG9wZW5sMnRwZCAkT1BFTkwyVFBEQVJHUworKyAgICAgICAgUkVUVkFMPSQ/CisgCWZpCistCVJFVFZBTD0kPworIAllY2hvCisgCWlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCisgCSAgICB0b3VjaCAvdmFyL2xvY2svc3Vic3lzL29wZW5sMnRwZAorQEAgLTUyLDcgKzUyLDcgQEAgc3RvcCgpIHsKKyAJZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisgICAgICAgICBpZiBbICEgLWUgL3Zhci9sb2NrL3N1YnN5cy9vcGVubDJ0cGQgXTsgdGhlbgorIAkgICAgZWNobyAtbiAkImNhbm5vdCBzdG9wIG9wZW5sMnRwZDogb3BlbmwydHBkIGlzIG5vdCBydW5uaW5nLiIKKy0JICAgIGZhaWx1cmUgJCJjYW5ub3Qgc3RvcCBvcGVubDJ0cGQ6IG9wZW5sMnRwZCBpcyBub3QgcnVubmluZy4iCisrCSAgICAjZmFpbHVyZSAkImNhbm5vdCBzdG9wIG9wZW5sMnRwZDogb3BlbmwydHBkIGlzIG5vdCBydW5uaW5nLiIKKyAJICAgIGVjaG8KKyAJICAgIHJldHVybiAxOworIAlmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjNmYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLnNlcnZpY2UKQEAgLTAsMCArMSwxNyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1UaGUgb3BlbiBMMlRQIGltcGxlbWVudGF0aW9uCitBZnRlcj1uZXR3b3JrLnRhcmdldCByZW1vdGUtZnMudGFyZ2V0IG5zcy1sb29rdXAudGFyZ2V0IHJwY2JpbmQudGFyZ2V0CitSZXF1aXJlcz1ycGNiaW5kLnNlcnZpY2UKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK1BJREZpbGU9QFNUQVRFRElSQC9ydW4vb3BlbmwydHBkLnBpZAorRW52aXJvbm1lbnRGaWxlPUBTWVNDT05GRElSQC9kZWZhdWx0L29wZW5sMnRwZAorRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvc2ggLWMgIkBCQVNFX1NCSU5ESVJAL21vZHByb2JlIC1zcSBsMnRwX3BwcCB8fCBAQkFTRV9TQklORElSQC9tb2Rwcm9iZSAtc3EgcHBwb2wydHAiCitFeGVjU3RhcnQ9QFNCSU5ESVJAL29wZW5sMnRwZCAkT1BFTkwyVFBEQVJHUworRXhlY1N0YXJ0UG9zdD1AQkFTRV9CSU5ESVJAL3NoIC1jICdpZiBbIC1uICIkT1BFTkwyVFBEX0NPTkZJR19GSUxFIiBdOyB0aGVuIHNsZWVwIDE7IEBCSU5ESVJAL2wydHBjb25maWcgY29uZmlnIHJlc3RvcmUgZmlsZT0kT1BFTkwyVFBEX0NPTkZJR19GSUxFOyBmaScKK0V4ZWNTdG9wUG9zdD1AQkFTRV9CSU5ESVJAL3NoIC1jICJAQkFTRV9TQklORElSQC9tb2Rwcm9iZSAtcnNxIGwydHBfcHBwIHx8IEBCQVNFX1NCSU5ESVJAL21vZHByb2JlIC1yc3EgcHBwb2wydHAiCitTdWNjZXNzRXhpdFN0YXR1cz0xCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwXzEuOC5iYgppbmRleCBlMTY3MGIzLi5iYmRlOGEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHBfMS44LmJiCkBAIC03LDggKzcsMTUgQEAKIEwyVFAgc2VydmljZXMgYW5kIGJ5IGNvcnBvcmF0aW9ucyB0byBpbXBsZW1lbnQgTDJUUCBWUE5zLiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmwydHAub3JnLyIKIFNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlkOTI1OWNiYmYwMDk0NWFkYzI1YTQ3MGMxZDM1ODUiCisKKyMgY2xpIGFuZCB1c2wgdXNlIGxpY2Vuc2UgTEdQTC0yLjEKK0xJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlkOTI1OWNiYmYwMDk0NWFkYzI1YTQ3MGMxZDM1ODUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9Zjg5NzBhYmQ1ZWE5YmU3MDFhMGRlZWRmNWFmZDc3YTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2xpL0xJQ0VOU0U7bWQ1PTljMTM4N2EzYzUyMTNhYTQwNjcxNDM4YWYzZTAwNzkzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VzbC9MSUNFTlNFO21kNT05YzEzODdhM2M1MjEzYWE0MDY3MTQzOGFmM2UwMDc5MyBcCisgICAgICAgICAgICAgICAgICAgICIKKwogREVQRU5EUyA9ICJwb3B0IGZsZXggcmVhZGxpbmUiCiAKIFNSQ19VUkkgPSAiZnRwOi8vZnRwLm9wZW5sMnRwLm9yZy9yZWxlYXNlcy8ke0JQfS8ke0JQfS50YXIuZ3ogXApAQCAtMjAsMTYgKzI3LDI0IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNsaS1pbmNsdWRlLWZjbnRsLmgtZm9yLU9fQ1JFQVQtZGVmaW5lLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtY2xpLURlZmluZS1fR05VX1NPVVJDRS1mb3ItZ2V0dGluZy1zaWdoYW5kbGVyX3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sMnRwX2FwaS1JbmNsdWRlZC1uZWVkZWQtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXN5c2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQuc2VydmljZSBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKICAgICAgICAgICAgZmlsZTovLzAwMDQtQWRqdXN0LWZvci1saW51eC1rZXJuZWwtaGVhZGVycy1hc3N1bXB0aW9ucy1vbi1nbGliYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZXItaXB2Ni1zdHJ1Y3R1cmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbDJ0cF9hcGkuYy1pbmNsdWRlLXJwYy1jbG50LmgtZm9yLXJlc3VsdHByb2NfdC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJlM2QwOGRlZGZiOWU2YTlhMWUyNGY2NzY2ZjZkYWRkMCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzk3NzA0ZDRiOTYzYTg3ZmJjMGU3NDE2NjhkNDUzMDkzMzk5MTUxNWFlOWFiMGRmZmQxMWI1NDQ0ZjQ4NjBmIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wZW5sMnRwZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogCiBERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgogQ1BQRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKQEAgLTUxLDMgKzY2LDIzIEBACiAgICAgICAgIC1lICdzOkNQUEZMQUdTLXk6Q1BQRkxBR1M6ZycgXAogICAgICAgICAke1N9L01ha2VmaWxlCiB9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sMnRwZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2V0Yy9zeXNjb25maWcvb3BlbmwydHBkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvb3BlbmwydHBkCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVubDJ0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcGVubDJ0cGQuc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MsQFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisgICAgICAgICAgICAgICAtZSAncyxAQkFTRV9TQklORElSQCwke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAgICAgICAgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcGVubDJ0cGQuc2VydmljZQorICAgIGZpCit9CisKK1JERVBFTkRTXyR7UE59ID0gInBwcCBwcHAtbDJ0cCBiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4LzAwMDEtaW5jbHVkZS1taXNzaW5nLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4LzAwMDEtaW5jbHVkZS1taXNzaW5nLXN5cy10eXBlcy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNGJmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXgvMDAwMS1pbmNsdWRlLW1pc3Npbmctc3lzLXR5cGVzLmgucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBmNmM0ZDI0NjhhZTBkYWRkMmYzNTY4MGQ2MWI5OGIyYTU5MDc3MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNyBKdWwgMjAxNyAxMDozMTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIG1pc3Npbmcgc3lzL3R5cGVzLmgKKworRml4ZXMgZXJyb3JzIHNlZW4gb24gbXVzbAorcHF1ZXVlLmg6MjE6MzogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd1X2ludDMyX3QnCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwcXVldWUuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcHF1ZXVlLmggYi9wcXVldWUuaAoraW5kZXggYzM3YmE3Yi4uYWU0Y2M2YSAxMDA2NDQKKy0tLSBhL3BxdWV1ZS5oCisrKysgYi9wcXVldWUuaAorQEAgLTMsNiArMyw3IEBACisgCisgI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgLyogd2FpdCB0aGlzIG1hbnkgc2Vjb25kcyBmb3IgbWlzc2luZyBwYWNrZXRzIGJlZm9yZSBmb3JnZXR0aW5nIGFib3V0IHRoZW0gKi8KKyAjZGVmaW5lIERFRkFVTFRfUEFDS0VUX1RJTUVPVVQgMC4zCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXgtMS44LjAvb3B0aW9ucy5wcHRwIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4L29wdGlvbnMucHB0cApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4LTEuOC4wL29wdGlvbnMucHB0cApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4L29wdGlvbnMucHB0cApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4XzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4XzEuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzhiMmNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQ2xpZW50IGZvciBNaWNyb3NvZnQgUFBUUCBWUE5zIgotREVTQ1JJUFRJT04gPSAiUFBUUCBDbGllbnQgaXMgYSBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIFwKLSAgICBhbmQgT3BlbkJTRCBjbGllbnQgZm9yIHRoZSBwcm9wcmlldGFyeSBNaWNyb3NvZnQgUG9pbnQtdG8tUG9pbnQgXAotICAgIFR1bm5lbGluZyBQcm90b2NvbCwgUFBUUC4gQWxsb3dzIGNvbm5lY3Rpb24gdG8gYSBQUFRQIGJhc2VkIFwKLSAgICBWaXJ0dWFsIFByaXZhdGUgTmV0d29yayAoVlBOKSBhcyB1c2VkIGJ5IGVtcGxveWVycyBhbmQgc29tZSBcCi0gICAgY2FibGUgYW5kIEFEU0wgaW50ZXJuZXQgc2VydmljZSBwcm92aWRlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BwdHBjbGllbnQuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc291cmNlZm9yZ2UvcHB0cGNsaWVudC9wcHRwLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcHRpb25zLnBwdHAgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGVmY2U5ZjI2M2UyYzNmMzhkNzlkOWRmMjIyNDc2ZGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTM5YzQyZDkzMzI0MmE4YTZkZDg2MDBhMGZhN2YwYTVlYzhmMDY2ZDEwYzQxNDlkOGU4MWE1YzY4ZmU0YmJkYSIKLQotUyA9ICIke1dPUktESVJ9L3BwdHAtJHtQVn0iCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0gJHtEfSR7c3lzY29uZmRpcn0vcHBwICR7RH0ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gNTU1IHBwdHAgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDY0NCBwcHRwLjggJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcHRpb25zLnBwdHAgJHtEfSR7c3lzY29uZmRpcn0vcHBwCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gInBwcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGM5MTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4XzEuOS4wLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiQ2xpZW50IGZvciBNaWNyb3NvZnQgUFBUUCBWUE5zIgorREVTQ1JJUFRJT04gPSAiUFBUUCBDbGllbnQgaXMgYSBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIFwKKyAgICBhbmQgT3BlbkJTRCBjbGllbnQgZm9yIHRoZSBwcm9wcmlldGFyeSBNaWNyb3NvZnQgUG9pbnQtdG8tUG9pbnQgXAorICAgIFR1bm5lbGluZyBQcm90b2NvbCwgUFBUUC4gQWxsb3dzIGNvbm5lY3Rpb24gdG8gYSBQUFRQIGJhc2VkIFwKKyAgICBWaXJ0dWFsIFByaXZhdGUgTmV0d29yayAoVlBOKSBhcyB1c2VkIGJ5IGVtcGxveWVycyBhbmQgc29tZSBcCisgICAgY2FibGUgYW5kIEFEU0wgaW50ZXJuZXQgc2VydmljZSBwcm92aWRlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BwdHBjbGllbnQuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zb3VyY2Vmb3JnZS9wcHRwY2xpZW50L3BwdHAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wdGlvbnMucHB0cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtbWlzc2luZy1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImIyMTE3YjM3N2Y2NTI5NGE5Nzg2ZjgwZjAyMzVkMzA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiMWU4Y2JmYzU3OGQzZjVhYjEyZWU4N2M1YzJjNjA0MTlhYmZlOWNjNDQ1NjkwYThhMTljMzIwYjExYzkyMDEiCisKK1MgPSAiJHtXT1JLRElSfS9wcHRwLSR7UFZ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L3BwcCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDU1NSBwcHRwICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgcHB0cC44ICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3B0aW9ucy5wcHRwICR7RH0ke3N5c2NvbmZkaXJ9L3BwcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJwcHAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jCmluZGV4IDRmYjY3MjMuLmRmZDZhYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jCkBAIC03LDIxICs3LDIwIEBACiBhcm91bmQgUXVhZ2dhIHRoYW4gdGhlIGN1cnJlbnQgY2VudHJhbGlzZWQgbW9kZWwgb2YgR05VIFplYnJhLiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy9xdWFnZ2EvIgogU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMCIKLURFUEVORFMgPSAicmVhZGxpbmUgbmN1cnNlcyBwZXJsLW5hdGl2ZSIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCcsICduZXQtc25tcCcsICcnLCBkKX0iCi1TTk1QX0NPTkY9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCcsICctLWVuYWJsZS1zbm1wJywgJycsIGQpfSIKIAorCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTgxYmNlY2UyMTc0OGM5MWJhOTk5MjM0OWE5MWVjMTFkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0wMWVmMjQ0MDFkZWQzNmNkOGU1ZDE4YmZlOTQ3MjQwYyIKIAorREVQRU5EUyA9ICJyZWFkbGluZSBuY3Vyc2VzIHBlcmwtbmF0aXZlIGMtYXJlcyIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCcsICduZXQtc25tcCcsICcnLCBkKX0iCitTTk1QX0NPTkY9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCcsICctLWVuYWJsZS1zbm1wJywgJycsIGQpfSIKKwogIyB0aGUgImlwIiBjb21tYW5kIGZyb20gYnVzeWJveCBpcyBub3Qgc3VmZmljaWVudCAoZmx1c2ggYnkgcHJvdG9jb2wgZmx1c2hlcyBhbGwgcm91dGVzKQogUkRFUEVORFNfJHtQTn0gKz0gImlwcm91dGUyIgogCi1RVUFHR0FTVUJESVIgPSAiIgotIyAke1FVQUdHQVNVQkRJUn0gaXMgZGVhbCB3aXRoIG9sZCB2ZXJzaW9ucy4gU2V0IHRvICIvYXR0aWMiIGZvciBvbGQKLSMgdmVyc2lvbnMgYW5kIGxlYXZlIGl0IGVtcHR5IGZvciByZWNlbnQgdmVyc2lvbnMuCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vcXVhZ2dhJHtRVUFHR0FTVUJESVJ9L3F1YWdnYS0ke1BWfS50YXIuZ3o7IFwKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9xdWFnZ2EvcXVhZ2dhLSR7UFZ9LnRhci5nejsgXAogICAgICAgICAgICBmaWxlOi8vcXVhZ2dhLmluaXQgXAogICAgICAgICAgICBmaWxlOi8vcXVhZ2dhLmRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vd2F0Y2hxdWFnZ2EuaW5pdCBcCkBAIC0zNSw3ICszNCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9yaXBkLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vcmlwbmdkLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vemVicmEuc2VydmljZSBcCi0iCisgICAgICAgICAgIgogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgogUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0tZW5hYmxlLWNhcGFiaWxpdGllcywtLWRpc2FibGUtY2FwYWJpbGl0aWVzLGxpYmNhcCIKQEAgLTEwOCwxMCArMTA3LDYgQEAKICAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyogJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX3F1YWdnYQogICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qCiAKLSAgICAjIFJlbW92ZSBnZW5lcmF0ZWQgaW5mbyBkaXIgZmlsZSwgaXQgZG9lc24ndCBiZWxvbmcgaW4gdGhlIGdlbmVyYXRlZAotICAgICMgcGFja2FnZS4KLSAgICBybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLQogICAgICMgRm9yIFBBTQogICAgIGZvciBmZWF0dXJlIGluICR7RElTVFJPX0ZFQVRVUkVTfTsgZG8KICAgICAgICAgaWYgWyAiJGZlYXR1cmUiID0gInBhbSIgXTsgdGhlbgpAQCAtMTg4LDkgKzE4Myw2IEBACiBERUJJQU5fTk9BVVRPTkFNRV8ke1BOfS1vc3BmZCA9ICIxIgogREVCSUFOX05PQVVUT05BTUVfJHtQTn0tb3NwZmNsaWVudCA9ICIxIgogCi0jIHRoZSAiaXAiIGNvbW1hbmQgZnJvbSBidXN5Ym94IGlzIG5vdCBzdWZmaWNpZW50IChmbHVzaCBieSBwcm90b2NvbCBmbHVzaGVzIGFsbCByb3V0ZXMpCi1SREVQRU5EU18ke1BOfSAgICAgICAgICArPSAiaXByb3V0ZTIiCi0KICMgTWFpbiBpbml0IHNjcmlwdCBzdGFydHMgYWxsIGRlYW1vbnMKICMgU2VwZXJhdGUgaW5pdCBzY3JpcHQgZm9yIHdhdGNocXVhZ2dhCiBJTklUU0NSSVBUX1BBQ0tBR0VTICAgICAgICAgICAgICAgICAgICAgPSAiJHtQTn0gJHtQTn0td2F0Y2hxdWFnZ2EiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI1YzM0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIHF1YWdnYS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImRhYTMwMzg3MWUwN2VhNTg1NmFhZTZmZDc5ZTg5NzIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3YTQzYTljNTliZmQzNzIyMDAyMjEwNTMwYjI1NTNjOGQ1Y2MwNWJmZWE1YWNkNTZkNGYxMDJiOWY1NWRjNjMiCi0KLVFVQUdHQVNVQkRJUiA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDQzZDdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuMS5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgcXVhZ2dhLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYjE1NDZkZTg5MDYyZjcwNzBkNTZlNzgwYjMwYmU0YjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWFkZGJhNWQ0ZjQxZWQ4ZTRjMmYxNTVmNDU4NGM5OTM0NjVkMTIyYzkwOTZiNWI1MmFkYTNmYzc1MjY2ZmJjZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC5pbmMKaW5kZXggNmY3ZjY5My4uZDAzN2M3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC5pbmMKQEAgLTYsMTIgKzYsOSBAQAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1JTkNfUFIgPSAicjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hlbGVyYW5jZS94bDJ0cGQuZ2l0IFwKLSAgICBmaWxlOi8vZml4LWlubGluZS1mdW5jdGlvbnMtZXJyb3JzLXdpdGgtZ2NjLTUueC5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkL2ZpeC1pbmxpbmUtZnVuY3Rpb25zLWVycm9ycy13aXRoLWdjYy01LngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkL2ZpeC1pbmxpbmUtZnVuY3Rpb25zLWVycm9ycy13aXRoLWdjYy01LngucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NWM5MTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC9maXgtaW5saW5lLWZ1bmN0aW9ucy1lcnJvcnMtd2l0aC1nY2MtNS54LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQmFja3BvcnQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20veGVsZXJhbmNlL3hsMnRwZC9jb21taXQvOTA5OGY2NDk1MGViMjJjZjA0OTA1OGQ0MGY2NDdiYWZkYjgyMjE3NAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSA5MDk4ZjY0OTUwZWIyMmNmMDQ5MDU4ZDQwZjY0N2JhZmRiODIyMTc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIzIFNlcCAyMDE1IDEwOjQxOjA1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBlcnJvcnMgY2F1c2VkIGJ5IGlubGluZSBmdW5jdGlvbiB3aXRoIGdjYyA1Ci0KLUdDQyA1IGRlZmF1bHRzIHRvIC1zdGQ9Z251MTEgaW5zdGVhZCBvZiAtc3RkPWdudTg5LiBBbmQgLXN0ZD1nbnU4OQotZW1wbG95cyB0aGUgR05VODkgaW5saW5lIHNlbWFudGljcywgLXN0ZD1nbnUxMSB1c2VzIHRoZSBDOTkgaW5saW5lCi1zZW1hbnRpY3MuCi0KLUZvciAnaW5saW5lJyBmdWN0aW9uLCBpdCBpcyBOT1QgZXhwb3J0ZWQgYnkgQzk5LiBTbyBlcnJvciBtZXNzYWdlcyBzdWNoIGFzOgotCi18IGNvbnRyb2wuYzoxNzE3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjaGVja19jb250cm9sJwotCi1Gb3IgdGhlc2UgZnVuY3Rpb25zIHdoaWNoIGlzIG5vdCByZWZlcnJlZCBieSBvdGhlciBjb21waWxlIHVuaXRzLCBtYWtlCi10aGVtICdzdGF0aWMgaW5saW5lJy4KLQotRm9yICdleHRlcm4gaW5saW5lJyBmdW5jdGlvbiwgaXQgZmFpbHMgc3VjaCBhczoKLQotfCBtaXNjLmg6Njg6MjA6IHdhcm5pbmc6IGlubGluZSBmdW5jdGlvbiAnc3dhcHMnIGRlY2xhcmVkIGJ1dCBuZXZlciBkZWZpbmVkCi18ICBleHRlcm4gaW5saW5lIHZvaWQgc3dhcHMgKHZvaWQgKiwgaW50KTsKLXwgICAgICAgICAgICAgICAgICAgICAgXgotCi1CZWNhdXNlIGZ1bmN0aW9uIHN3YXBzKCkgaXMgcmVmZXJyZWQgYnkgb3RoZXIgY29tcGlsZSB1bml0cywgaXQgbXVzdCBiZQotZXhwb3J0ZWQuIFRoZSBzZW1hbnRpY3Mgb2YgJ2V4dGVybiBpbmxpbmUnIGFyZSBub3Qgc2FtZSBiZXR3ZWVuIEdOVTg5Ci1hbmQgQzk5LCBzbyByZW1vdmUgJ2lubGluZScgYXR0cmlidXRlIGZvciBjb21wYXRpYmxlIHdpdGggR05VODkuCi0KLVJlZjoKLWh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTUvcG9ydGluZ190by5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29udHJvbC5jIHwgOCArKysrLS0tLQotIG1pc2MuYyAgICB8IDIgKy0KLSBtaXNjLmggICAgfCAyICstCi0gbmV0d29yay5jIHwgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb250cm9sLmMgYi9jb250cm9sLmMKLWluZGV4IGIyODkxYTkuLmM0YTM5YjUgMTAwNjQ0Ci0tLS0gYS9jb250cm9sLmMKLSsrKyBiL2NvbnRyb2wuYwotQEAgLTExNDAsNyArMTE0MCw3IEBAIGludCBjb250cm9sX2ZpbmlzaCAoc3RydWN0IHR1bm5lbCAqdCwgc3RydWN0IGNhbGwgKmMpCi0gICAgIHJldHVybiAwOwotIH0KLSAKLS1pbmxpbmUgaW50IGNoZWNrX2NvbnRyb2wgKGNvbnN0IHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IHR1bm5lbCAqdCwKLStzdGF0aWMgaW5saW5lIGludCBjaGVja19jb250cm9sIChjb25zdCBzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2FsbCAqYykKLSB7Ci0gICAgIC8qCi1AQCAtMTI3Niw3ICsxMjc2LDcgQEAgaW5saW5lIGludCBjaGVja19jb250cm9sIChjb25zdCBzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0gICAgIHJldHVybiAwOwotIH0KLSAKLS1pbmxpbmUgaW50IGNoZWNrX3BheWxvYWQgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IHR1bm5lbCAqdCwKLStzdGF0aWMgaW5saW5lIGludCBjaGVja19wYXlsb2FkIChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2FsbCAqYykKLSB7Ci0gICAgIC8qCi1AQCAtMTM4Miw3ICsxMzgyLDcgQEAgaW5saW5lIGludCBjaGVja19wYXlsb2FkIChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0gI2VuZGlmCi0gICAgIHJldHVybiAwOwotIH0KLS1pbmxpbmUgaW50IGV4cGFuZF9wYXlsb2FkIChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0rc3RhdGljIGlubGluZSBpbnQgZXhwYW5kX3BheWxvYWQgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IHR1bm5lbCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2FsbCAqYykKLSB7Ci0gICAgIC8qCi1AQCAtMTU2Miw3ICsxNTYyLDcgQEAgdm9pZCBzZW5kX3psYiAodm9pZCAqZGF0YSkKLSAgICAgdG9zcyAoYnVmKTsKLSB9Ci0gCi0taW5saW5lIGludCB3cml0ZV9wYWNrZXQgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IHR1bm5lbCAqdCwgc3RydWN0IGNhbGwgKmMsCi0rc3RhdGljIGlubGluZSBpbnQgd3JpdGVfcGFja2V0IChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsIHN0cnVjdCBjYWxsICpjLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29udmVydCkKLSB7Ci0gICAgIC8qCi1kaWZmIC0tZ2l0IGEvbWlzYy5jIGIvbWlzYy5jCi1pbmRleCAzMDkyNDAxLi5hZjkwZGJmIDEwMDY0NAotLS0tIGEvbWlzYy5jCi0rKysgYi9taXNjLmMKLUBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBkb19wYWNrZXRfZHVtcCAoc3RydWN0IGJ1ZmZlciAqYnVmKQotICAgICBwcmludGYgKCJ9XG4iKTsKLSB9Ci0gCi0taW5saW5lIHZvaWQgc3dhcHMgKHZvaWQgKmJ1Zl92LCBpbnQgbGVuKQotK3ZvaWQgc3dhcHMgKHZvaWQgKmJ1Zl92LCBpbnQgbGVuKQotIHsKLSAjaWZkZWYgX19hbHBoYQotICAgICAvKiBSZXZlcnNlIGJ5dGUgb3JkZXIgYWxwaGEgaXMgbGl0dGxlIGVuZGlhbiBzbyBsZXN0IHNhdmUgYSBzdGVwLgotZGlmZiAtLWdpdCBhL21pc2MuaCBiL21pc2MuaAotaW5kZXggYWFmZGM2Mi4uY2FhYjdhMSAxMDA2NDQKLS0tLSBhL21pc2MuaAotKysrIGIvbWlzYy5oCi1AQCAtNjUsNyArNjUsNyBAQCBleHRlcm4gdm9pZCBsMnRwX2xvZyAoaW50IGxldmVsLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0gZXh0ZXJuIHN0cnVjdCBidWZmZXIgKm5ld19idWYgKGludCk7Ci0gZXh0ZXJuIHZvaWQgdWRwcHVzaF9oYW5kbGVyIChpbnQpOwotIGV4dGVybiBpbnQgYWRkZmNzIChzdHJ1Y3QgYnVmZmVyICpidWYpOwotLWV4dGVybiBpbmxpbmUgdm9pZCBzd2FwcyAodm9pZCAqLCBpbnQpOwotK2V4dGVybiB2b2lkIHN3YXBzICh2b2lkICosIGludCk7Ci0gZXh0ZXJuIHZvaWQgZG9fcGFja2V0X2R1bXAgKHN0cnVjdCBidWZmZXIgKik7Ci0gZXh0ZXJuIHZvaWQgc3RhdHVzIChjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0gZXh0ZXJuIHZvaWQgc3RhdHVzX2hhbmRsZXIgKGludCBzaWduYWwpOwotZGlmZiAtLWdpdCBhL25ldHdvcmsuYyBiL25ldHdvcmsuYwotaW5kZXggYjEyNjhjNi4uZDMyNGE3MSAxMDA2NDQKLS0tLSBhL25ldHdvcmsuYwotKysrIGIvbmV0d29yay5jCi1AQCAtMTM1LDcgKzEzNSw3IEBAIGludCBpbml0X25ldHdvcmsgKHZvaWQpCi0gICAgIHJldHVybiAwOwotIH0KLSAKLS1pbmxpbmUgdm9pZCBleHRyYWN0ICh2b2lkICpidWYsIGludCAqdHVubmVsLCBpbnQgKmNhbGwpCi0rc3RhdGljIGlubGluZSB2b2lkIGV4dHJhY3QgKHZvaWQgKmJ1ZiwgaW50ICp0dW5uZWwsIGludCAqY2FsbCkKLSB7Ci0gICAgIC8qCi0gICAgICAqIEV4dHJhY3QgdGhlIHR1bm5lbCBhbmQgY2FsbCAjJ3MsIGFuZCBmaXggdGhlIG9yZGVyIG9mIHRoZSAKLUBAIC0xNTUsNyArMTU1LDcgQEAgaW5saW5lIHZvaWQgZXh0cmFjdCAodm9pZCAqYnVmLCBpbnQgKnR1bm5lbCwgaW50ICpjYWxsKQotICAgICB9Ci0gfQotIAotLWlubGluZSB2b2lkIGZpeF9oZHIgKHZvaWQgKmJ1ZikKLStzdGF0aWMgaW5saW5lIHZvaWQgZml4X2hkciAodm9pZCAqYnVmKQotIHsKLSAgICAgLyoKLSAgICAgICogRml4IHRoZSBieXRlIG9yZGVyIG9mIHRoZSBoZWFkZXIKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkX2dpdC5iYgppbmRleCA0MmJjMzk4Li44OGFlNWQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkX2dpdC5iYgpAQCAtMiw3ICsyLDcgQEAKIAogIyBUaGlzIGlzIHYxLjMuNiBwbHVzIHNvbWUgY29tbWl0cy4gIFRoZXJlIGlzIG5vIHRhZyBmb3IgdGhpcyBjb21taXQuCiAjCi1QViA9ICIxLjMuNitnaXQke1NSQ1BWfSIKK1BWID0gIjEuMy45K2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiYTk2YjM0NTk2MjYyMmVhNTg0OTA5MjQxMzA2NzVkZjZkYjA2MmQxMSIKK1NSQ1JFViA9ICJmMTE0YzEwYWM1MzIwNTFiYWRlY2EwMTMyYjE0NGEyZjE1OTZmMDQ3IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIKaW5kZXggMjc0YTU1ZC4uY2VjMWQxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzX2dpdC5iYgpAQCAtMjMsNyArMjMsOCBAQAogCiBFWFRSQV9PRU1BS0UgPSAiJ0JJTkRJUj0ke3NiaW5kaXJ9JyAnTUFORElSPSR7bWFuZGlyfSciCiAKLWRvX2luc3RhbGxfYXBwZW5kKCkgeworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9CiAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2FycHRhYmxlcy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC1vdmVycmlkZS1wYXNzZWQtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtb3ZlcnJpZGUtcGFzc2VkLWNmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBmYWQ0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC1vdmVycmlkZS1wYXNzZWQtY2ZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSAyYTcyMzZkMmE3YmI5YzNkM2MzZjQ0ZWJmNTk0MDRiZjcxMzRmY2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogVHVlLCAxMiBBcHIgMjAxNiAxMTozNzoyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGRvbid0IG92ZXJyaWRlIHBhc3NlZCBjZmxhZ3MKLQotV2UgYXJlIGNvbnRyb2xsaW5nIGRlYnVnIGFuZCBvcHRpbWlzZXIgZmxhZ3MgZnJvbSBPRQotLS0tCi0gY29uZmlndXJlLmFjIHwgMiAtLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1YzAyNDUwLi4zY2Y5ZmNkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNDcsOCArMTQ3LDYgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLSBDQVJFU19DSEVDS19DT01QSUxFUgotIENBUkVTX1NFVF9DT01QSUxFUl9CQVNJQ19PUFRTCi0tQ0FSRVNfU0VUX0NPTVBJTEVSX0RFQlVHX09QVFMKLS1DQVJFU19TRVRfQ09NUElMRVJfT1BUSU1JWkVfT1BUUwotIENBUkVTX1NFVF9DT01QSUxFUl9XQVJOSU5HX09QVFMKLSAKLSBpZiB0ZXN0ICIkY29tcGlsZXJfaWQiID0gIklOVEVMX1VOSVhfQyI7IHRoZW4KLS0tIAotMi44LjAucmMzCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZDRjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIDdlMWFlNjg3OTE2ZmQ1ODc4ZWU3NTVhZmJkZWE2YjEwNDk0ZTBiOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CitEYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDIzOjIxOjI1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBJbnN0YWxsIGxpYmNhcmVzLnBjCisKK1ByZXBhcmUgYW5kIGluc3RhbGwgbGliY2FyZXMucGMgZmlsZSBkdXJpbmcgY21ha2UgYnVpbGQsIHNvIGxpYnJhcmllcwordXNpbmcgcGtnLWNvbmZpZyB0byBmaW5kIGxpYmNhcmVzIHdpbGwgbm90IGZhaWwuCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhleSBGaXJhZ28gPGFsZXhleV9maXJhZ29AbWVudG9yLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyBsaWJjYXJlcy5wYy5jbWFrZWluIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY2FyZXMucGMuY21ha2VpbgorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMzY0YjZjNy4uMDAxNmI2NyAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE3MywyMSArMTczLDI5IEBAIEFERF9ERUZJTklUSU9OUygke1NZU0ZMQUdTfSkKKyAKKyAKKyAjIFRlbGwgQy1BcmVzIGFib3V0IGxpYnJhcmllcyB0byBkZXBlbmQgb24KKysjIEFsc28gcGFzcyB0aGVzZSBsaWJyYXJpZXMgdG8gcGtnLWNvbmZpZyBmaWxlCisrU0VUKENBUkVTX1BSSVZBVEVfTElCU19MSVNUKQorIElGIChIQVZFX0xJQlJFU09MVikKKyAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHJlc29sdikKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHJlc29sdiIpCisgRU5ESUYgKCkKKyBJRiAoSEFWRV9MSUJOU0wpCisgCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyBuc2wpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxuc2wiKQorIEVORElGICgpCisgSUYgKEhBVkVfTElCU09DS0VUKQorIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgc29ja2V0KQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sc29ja2V0IikKKyBFTkRJRiAoKQorIElGIChIQVZFX0xJQlJUKQorIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgcnQpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxydCIpCisgRU5ESUYgKCkKKyBJRiAoV0lOMzIpCisgCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyB3czJfMzIpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWx3czJfMzIiKQorIEVORElGICgpCisrc3RyaW5nIChSRVBMQUNFICI7IiAiICIgQ0FSRVNfUFJJVkFURV9MSUJTICIke0NBUkVTX1BSSVZBVEVfTElCU19MSVNUfSIpCisgCisgCisgIyBXaGVuIGNoZWNraW5nIGZvciBzeW1ib2xzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBzZXQgdGhlIHByb3BlcgorQEAgLTQ4OSw2ICs0OTcsMTMgQEAgQ09ORklHVVJFX0ZJTEUgKGFyZXNfYnVpbGQuaC5jbWFrZSAke1BST0pFQ1RfQklOQVJZX0RJUn0vYXJlc19idWlsZC5oKQorICMgV3JpdGUgYXJlc19jb25maWcuaCBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGlzIHVzZWQgb25seSBmb3IgdGhlIGJ1aWxkLgorIENPTkZJR1VSRV9GSUxFIChhcmVzX2NvbmZpZy5oLmNtYWtlICR7UFJPSkVDVF9CSU5BUllfRElSfS9hcmVzX2NvbmZpZy5oKQorIAorKyMgUGFzcyByZXF1aXJlZCBDRkxBR1MgdG8gcGtnLWNvbmZpZyBpbiBjYXNlIG9mIHN0YXRpYyBsaWJyYXJ5CisrSUYgKENBUkVTX1NUQVRJQykKKysJU0VUIChDUFBGTEFHX0NBUkVTX1NUQVRJQ0xJQiAiLURDQVJFU19TVEFUSUNMSUIiKQorK0VORElGKCkKKysKKysjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KKytDT05GSUdVUkVfRklMRSAobGliY2FyZXMucGMuY21ha2VpbiAke1BST0pFQ1RfQklOQVJZX0RJUn0vbGliY2FyZXMucGMgQE9OTFkpCisgCisgIyBUUkFOU0ZPUk1fTUFLRUZJTEVfSU5DCisgIworQEAgLTYyNSw2ICs2NDAsMTIgQEAgSUYgKENBUkVTX0lOU1RBTEwpCisgCUlOU1RBTEwgKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtQUk9KRUNUX05BTUV9LWNvbmZpZy5jbWFrZSIgREVTVElOQVRJT04gJHtDTUFLRUNPTkZJR19JTlNUQUxMX0RJUn0pCisgRU5ESUYgKCkKKyAKKysjIHBrZy1jb25maWcgZmlsZQorK0lGIChDQVJFU19JTlNUQUxMKQorKwlTRVQgKFBLR0NPTkZJR19JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKKysJSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgREVTVElOQVRJT04gJHtQS0dDT05GSUdfSU5TVEFMTF9ESVJ9KQorK0VORElGICgpCisrCisgIyBMZWdhY3kgY2hhaW4tYnVpbGRpbmcgdmFyaWFibGVzIChwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBjb2RlKS4KKyAjIERvbid0IHVzZSB0aGVzZSwgZXh0ZXJuYWwgY29kZSBzaG91bGQgYmUgdXBkYXRlZCB0byByZWZlciB0byB0aGUgYWxpYXNlcyBkaXJlY3RseSAoZS5nLiwgQ2FyZXM6OmNhcmVzKS4KKyBTRVQgKENBUkVTX0ZPVU5EIDEgQ0FDSEUgSU5URVJOQUwgIkNBUkVTIExJQlJBUlkgRk9VTkQiKQorZGlmZiAtLWdpdCBhL2xpYmNhcmVzLnBjLmNtYWtlaW4gYi9saWJjYXJlcy5wYy5jbWFrZWluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjI5ZmVkZQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliY2FyZXMucGMuY21ha2VpbgorQEAgLTAsMCArMSwyMCBAQAorKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysjIFByb2plY3QgICAgICAgIF9fXyAgICAgICBfXyBfIF8gX18gX19fICBfX18gCisrIyAgICAgICAgICAgICAgIC8gX198X19fXyAvIF9gIHwgJ19fLyBfIFwvIF9ffAorKyMgICAgICAgICAgICAgIHwgKF98X19fX198IChffCB8IHwgfCAgX18vXF9fIFwKKysjICAgICAgICAgICAgICAgXF9fX3wgICAgIFxfXyxffF98ICBcX19ffHxfX18vCisrIworK3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACisrZXhlY19wcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklYQAorK2xpYmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKKytpbmNsdWRlZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKysKKytOYW1lOiBjLWFyZXMKKytVUkw6IGh0dHA6Ly9kYW5pZWwuaGF4eC5zZS9wcm9qZWN0cy9jLWFyZXMvCisrRGVzY3JpcHRpb246IGFzeW5jaHJvbm91cyBETlMgbG9va3VwIGxpYnJhcnkKKytWZXJzaW9uOiBAVkVSU0lPTkAKKytSZXF1aXJlczogCisrUmVxdWlyZXMucHJpdmF0ZTogCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQENQUEZMQUdfQ0FSRVNfU1RBVElDTElCQAorK0xpYnM6IC1MJHtsaWJkaXJ9IC1sY2FyZXMKKytMaWJzLnByaXZhdGU6IEBDQVJFU19QUklWQVRFX0xJQlNACistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUyOGQ2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IExHIEVsZWN0cm9uaWNzLCBJbmMuCi0KLVNVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWY0YjAyNjg4MDgzNGViMDFjMDM1YzVlNWNiNDdjY2FjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jLWFyZXMuaGF4eC5zZS9kb3dubG9hZC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtb3ZlcnJpZGUtcGFzc2VkLWNmbGFncy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMmNhNDRiZTE3MTVjZDJjNTY2NmExNjVkMzU3ODg0MjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY5MmY5NDAzY2RjZGY5MzYxMzBlMDQ1Yzg0MDIxNjY1MTE4ZWU5YmZlYTkwNWQxYTc2ZjA0ZDRlNmYzNjVmYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBlNDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTMuMC5iYgpAQCAtMCwwICsxLDI0IEBACisjIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IExHIEVsZWN0cm9uaWNzLCBJbmMuCitTVU1NQVJZID0gImMtYXJlcyBpcyBhIEMgbGlicmFyeSB0aGF0IHJlc29sdmVzIG5hbWVzIGFzeW5jaHJvbm91c2x5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYW5pZWwuaGF4eC5zZS9wcm9qZWN0cy9jLWFyZXMvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT1mNGIwMjY4ODA4MzRlYjAxYzAzNWM1ZTVjYjQ3Y2NhYyIKK1NSQ1JFViA9ICIzYmUxOTI0MjIxZTEzMjZkZjUyMGY4NDk4ZDcwNGE1YzRjOGQwY2NlIgorUFYgPSAiMS4xMy4wK2dpdHIke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9jLWFyZXMvYy1hcmVzLmdpdCBcCisgICAgZmlsZTovL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc19naXQuYmIKaW5kZXggZWZkYTcwNy4uM2NhNWI3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc19naXQuYmIKQEAgLTQsMTIgKzQsMTMgQEAKIExJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotUFYgPSAiNi42IgorUFYgPSAiNi43IgogCi1TUkNSRVYgPSAiNzkyNmFhZWE5OGNkYzk2YjY1NDRiOGUyMWZiNWIwYjQ0MjJjMzQwZCIKK1NSQ1JFViA9ICI4MTAxYTA3ODcxZjE4NWM3MDQ0ZmEyY2EyMjFiMjgyYWI0NjA3YzhiIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2FtYmEub3JnL2NpZnMtdXRpbHMuZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorREVQRU5EUyArPSAibGlidGFsbG9jIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3VybHBwL2N1cmxwcC9leGFtcGxlMjEuY3BwLXJlbW92ZS1kZXByZWNhdGVkLWNvZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3VybHBwL2N1cmxwcC9leGFtcGxlMjEuY3BwLXJlbW92ZS1kZXByZWNhdGVkLWNvZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZTU4M2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N1cmxwcC9jdXJscHAvZXhhbXBsZTIxLmNwcC1yZW1vdmUtZGVwcmVjYXRlZC1jb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotZXhhbXBsZTIxLmNwcDogcmVtb3ZlIGRlcHJlY2F0ZWQgY29kZQotCi1UaGUgZGVwcmVjYXRlZCBjb2RlIHdhcyBubyBsb25nZXIgdXNlZCwgc28gcmVtb3ZlIGl0IHRvIGF2b2lkCi1jb21waWxpbmcgZmFpbHVyZSB3aXRoIC1XZXJyb3I9dW51c2VkLWZ1bmN0aW9uCi0uLi4KLXwgZXhhbXBsZTIxLmNwcDo1MTo4OiBlcnJvcjogJ3NpemVfdCB7YW5vbnltb3VzfTo6cmVhZERhdGEoY2hhciosCi1zaXplX3QsIHNpemVfdCknIGRlZmluZWQgYnV0IG5vdCB1c2VkIFstV2Vycm9yPXVudXNlZC1mdW5jdGlvbl0KLXwgIHNpemVfdCByZWFkRGF0YShjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbml0ZW1zKQotLi4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBleGFtcGxlcy9leGFtcGxlMjEuY3BwIHwgMTcgLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlMjEuY3BwIGIvZXhhbXBsZXMvZXhhbXBsZTIxLmNwcAotLS0tIGEvZXhhbXBsZXMvZXhhbXBsZTIxLmNwcAotKysrIGIvZXhhbXBsZXMvZXhhbXBsZTIxLmNwcAotQEAgLTM5LDIzICszOSw2IEBACi0gI2luY2x1ZGUgPGN1cmxwcC9PcHRpb25zLmhwcD4KLSAjaW5jbHVkZSA8Y3VybHBwL0V4Y2VwdGlvbi5ocHA+Ci0gIAotLS8qCi0tICAgYW5vbnltb3VzIG5hbWVzcGFjZSB0byBwcmV2ZW50IG5hbWUgY2xhc2ggaW4gY2FzZSBvdGhlciBleGFtcGxlcyB1c2luZyB0aGUgc2FtZSBnbG9iYWwgZW50aXRpZXMKLS0gICB3b3VsZCBiZSBjb21waWxlZCBpbiB0aGUgc2FtZSBwcm9qZWN0Ci0tKi8KLS1uYW1lc3BhY2UKLS17Ci0tCi0tY2hhciAqZGF0YSA9IE5VTEw7Ci0tCi0tc2l6ZV90IHJlYWREYXRhKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUsIHNpemVfdCBuaXRlbXMpCi0tewotLSAgc3RybmNweShidWZmZXIsIGRhdGEsIHNpemUgKiBuaXRlbXMpOwotLSAgcmV0dXJuIHNpemUgKiBuaXRlbXM7Ci0tfQotLQotLX0gLy8gbmFtZXNwYWNlCi0tCi0gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gICBpZihhcmdjICE9IDMpIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxLmluYwppbmRleCBlZjc5YzVmLi40ZjRiYmYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxLmluYwpAQCAtNiw4ICs2LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgogCi0jYXQgbGVhc3QgdmVyc2lvbnMgMi4xNSBhbmQgcHJpb3IgYXJlIG1vdmVkIHRvIHRoZSBhcmNoaXZlIGZvbGRlciBvbiB0aGUgc2VydmVyCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudGhla2VsbGV5cy5vcmcudWsvZG5zbWFzcS8ke0BbJ2FyY2hpdmUvJywgJyddW2Zsb2F0KGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV0pID4gMTVdfWRuc21hc3EtJHtQVn0udGFyLmd6O25hbWU9ZG5zbWFzcS0ke1BWfSBcCisjYXQgbGVhc3QgdmVyc2lvbnMgMi42OSBhbmQgcHJpb3IgYXJlIG1vdmVkIHRvIHRoZSBhcmNoaXZlIGZvbGRlciBvbiB0aGUgc2VydmVyCitTUkNfVVJJID0gImh0dHA6Ly93d3cudGhla2VsbGV5cy5vcmcudWsvZG5zbWFzcS8ke0BbJ2FyY2hpdmUvJywgJyddW2Zsb2F0KGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV0pID4gNjldfWRuc21hc3EtJHtQVn0udGFyLmd6O25hbWU9ZG5zbWFzcS0ke1BWfSBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKICAgICAgICAgICAgZmlsZTovL2Ruc21hc3EuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9kbnNtYXNxLXJlc29sdmNvbmYuc2VydmljZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxL2x1YS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3EvbHVhLnBhdGNoCmluZGV4IDkxOGMwYjYuLjA5OTFkZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3EvbHVhLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3EvbHVhLnBhdGNoCkBAIC0xLDI5ICsxLDMwIEBACi1Gcm9tIDFlNWJlMGEwYmNmODU5MTNkNjM0MDgwMzBkZWMwMzhkMzYwYTVmYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJlMWIzZDJkMGYxNjA4Y2JhNWVmZWU3M2Q2YWFjNWFkMDcwOTA0MWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+CiBEYXRlOiBUdWUsIDkgU2VwIDIwMTQgMTA6MjQ6NTggLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgogCiAtLS0KLSBNYWtlZmlsZSB8ICAgIDQgKystLQorIE1ha2VmaWxlIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGZjMzgzOTMuLmE3OWY4YmYgMTAwNjQ0CitpbmRleCA3M2VhMjNlLi5lZDNlZWI5IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtNTcsOCArNTcsOCBAQCBpZG5fY2ZsYWdzID0gICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfSUROICQoUEtHX0NPTkZJRykgLQotIGlkbl9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9JRE4gJChQS0dfQ09ORklHKSAtLWxpYnMgbGliaWRuYCAKK0BAIC01OSw4ICs1OSw4IEBAIGlkbjJfY2ZsYWdzID0gICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MSUJJRE4yICQoUEtHX0NPTkZJCisgaWRuMl9saWJzID0gICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0xJQklETjIgJChQS0dfQ09ORklHKSAtLWxpYnMgbGliaWRuMmAKICBjdF9jZmxhZ3MgPSAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfQ09OTlRSQUNLICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlibmV0ZmlsdGVyX2Nvbm50cmFja2AKICBjdF9saWJzID0gICAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfQ09OTlRSQUNLICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYm5ldGZpbHRlcl9jb25udHJhY2tgCi0tbHVhX2NmbGFncyA9ICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0xVQVNDUklQVCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGx1YTUuMWAgCi0tbHVhX2xpYnMgPSAgICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0xVQVNDUklQVCAkKFBLR19DT05GSUcpIC0tbGlicyBsdWE1LjFgIAorLWx1YV9jZmxhZ3MgPSAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MVUFTQ1JJUFQgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsdWE1LjJgIAorLWx1YV9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MVUFTQ1JJUFQgJChQS0dfQ09ORklHKSAtLWxpYnMgbHVhNS4yYCAKICtsdWFfY2ZsYWdzID0gICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfTFVBU0NSSVBUICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbHVhYAogK2x1YV9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MVUFTQ1JJUFQgJChQS0dfQ09ORklHKSAtLWxpYnMgbHVhYAogIG5ldHRsZV9jZmxhZ3MgPSBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9ETlNTRUMgJChQS0dfQ09ORklHKSAtLWNmbGFncyBuZXR0bGUgaG9nd2VlZGAKICBuZXR0bGVfbGlicyA9ICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfRE5TU0VDICQoUEtHX0NPTkZJRykgLS1saWJzIG5ldHRsZSBob2d3ZWVkYAotIGdtcF9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9ETlNTRUMgJChQS0dfQ09ORklHKSAtLWNvcHkgLWxnbXBgCisgZ21wX2xpYnMgPSAgICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0ROU1NFQyBOT19HTVAgLS1jb3B5IC1sZ21wYAogLS0gCi0xLjcuOS41CisyLjkuNQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNTczZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIGRuc21hc3EuaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vbHVhLnBhdGNoIFwKLSIKLQotU1JDX1VSSVtkbnNtYXNxLTIuNzYubWQ1c3VtXSA9ICI2NjEwZjgyMzNjYTg5YjE1YTFiYjQ3Yzc4OGZmYjg0ZiIKLVNSQ19VUklbZG5zbWFzcS0yLjc2LnNoYTI1NnN1bV0gPSAiNzc3YzQ3NjJkMmZlZTM3MzhhMDM4MDQwMWYyZDA4N2I0N2ZhYTQxZGIyMzE3YzYwNjYwZDY5YWQxMGE3NmMzMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43OC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDFkYzZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc4LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBkbnNtYXNxLmluYworCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2x1YS5wYXRjaCBcCisiCisKK1NSQ19VUklbZG5zbWFzcS0yLjc4Lm1kNXN1bV0gPSAiM2JiOTdmMjY0YzczODUzZjgwMmJmNzA2MTAxNTA3ODgiCitTUkNfVVJJW2Ruc21hc3EtMi43OC5zaGEyNTZzdW1dID0gImM5MmU1ZDc4YWE2MzUzMzU0ZDAyYWFiZjc0NTkwZDA4OTgwYmIxMzg1ZDhhMDBiODBlZjliYzgwNDMwYWExZGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290LzAwMDEtZG92ZWFkbS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290LzAwMDEtZG92ZWFkbS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVhZTliZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3QvMDAwMS1kb3ZlYWRtLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGJlOWIzODA5Yjg2ZmU1OTNkYmIxNmYwYjk4MWIzZDMxNWEyN2I3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMiBPY3QgMjAxNyAyMjoxMDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkb3ZlYWRtOiBGaXggcGFyYWxsZWwgYnVpbGQKKworU29tZXRpbWVzIGRvdmV0YWlsIGJ1aWxkIGZhaWxzIHdpdGggZXJyb3JzIGxpa2UKKworZG92ZWFkbS11dGlsLm86IGZpbGUgbm90IHJlY29nbml6ZWQ6IEZpbGUgdHJ1bmNhdGVkCitjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK21ha2VbNF06ICoqKiBbTWFrZWZpbGU6ODEyOiB0ZXN0LWRvdmVhZG0tdXRpbF0gRXJyb3IgMQorCitUaGlzIGlzIHBhcnRpYWwgYmFja3BvcnQgZnJvbQorCitodHRwczovL2dpdGh1Yi5jb20vZG92ZWNvdC9jb3JlL2NvbW1pdC9iMjAwYmMzODc1ZmEwNmQ0MmM4NjE5ODY1Y2MzMDZjMzI5N2ZjYWNjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvZG92ZWFkbS9NYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZG92ZWFkbS9NYWtlZmlsZS5hbSBiL3NyYy9kb3ZlYWRtL01ha2VmaWxlLmFtCitpbmRleCBjNjQ0NjQ2Li42YWU5MTQ0IDEwMDY0NAorLS0tIGEvc3JjL2RvdmVhZG0vTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9kb3ZlYWRtL01ha2VmaWxlLmFtCitAQCAtMTgwLDggKzE4MCw4IEBAIHRlc3RfbGlicyA9IFwKKyAJLi4vbGliL2xpYmxpYi5sYQorIHRlc3RfZGVwcyA9ICQobm9pbnN0X0xUTElCUkFSSUVTKSAkKHRlc3RfbGlicykKKyAKKy10ZXN0X2RvdmVhZG1fdXRpbF9TT1VSQ0VTID0gdGVzdC1kb3ZlYWRtLXV0aWwuYworLXRlc3RfZG92ZWFkbV91dGlsX0xEQUREID0gZG92ZWFkbS11dGlsLm8gJCh0ZXN0X2xpYnMpICQoTU9EVUxFX0xJQlMpCisrdGVzdF9kb3ZlYWRtX3V0aWxfU09VUkNFUyA9IGRvdmVhZG0tdXRpbC5jIHRlc3QtZG92ZWFkbS11dGlsLmMKKyt0ZXN0X2RvdmVhZG1fdXRpbF9MREFERCA9ICQodGVzdF9saWJzKSAkKE1PRFVMRV9MSUJTKQorIHRlc3RfZG92ZWFkbV91dGlsX0RFUEVOREVOQ0lFUyA9ICQodGVzdF9kZXBzKQorIAorIGNoZWNrOiBjaGVjay1hbSBjaGVjay10ZXN0CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjI5LmJiCmluZGV4IGIyYTNkZTMuLjE2NjM0MDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjI5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjI5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJEb3ZlY290IGlzIGFuIG9wZW4gc291cmNlIElNQVAgYW5kIFBPUDMgZW1haWwgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZG92ZWNvdC5vcmcvIgogREVTQ1JJUFRJT04gPSAiRG92ZWNvdCBpcyBhbiBvcGVuIHNvdXJjZSBJTUFQIGFuZCBQT1AzIGVtYWlsIHNlcnZlciBmb3IgTGludXgvVU5JWC1saWtlIHN5c3RlbXMsIHdyaXR0ZW4gd2l0aCBzZWN1cml0eSBwcmltYXJpbHkgaW4gbWluZC4gRG92ZWNvdCBpcyBhbiBleGNlbGxlbnQgY2hvaWNlIGZvciBib3RoIHNtYWxsIGFuZCBsYXJnZSBpbnN0YWxsYXRpb25zLiBJdCdzIGZhc3QsIHNpbXBsZSB0byBzZXQgdXAsIHJlcXVpcmVzIG5vIHNwZWNpYWwgYWRtaW5pc3RyYXRpb24gYW5kIGl0IHVzZXMgdmVyeSBsaXR0bGUgbWVtb3J5LiIKIFNFQ1RJT04gPSAibWFpbCIKIExJQ0VOU0UgPSAiTEdQTHYyLjEgJiBNSVQiCkBAIC03LDcgKzgsOSBAQAogU1JDX1VSSSA9ICJodHRwOi8vZG92ZWNvdC5vcmcvcmVsZWFzZXMvMi4yL2RvdmVjb3QtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWNvbnZlcnQtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy1zdGF0ZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kb3ZlY290LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vZG92ZWNvdC5zb2NrZXQiCisgICAgICAgICAgIGZpbGU6Ly9kb3ZlY290LnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvdmVhZG0tRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZmY5NTQ4NmE1YzQzMDI1YTJjM2Y1YTcxMmU3OTYyYjkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDkzOWVhOTkxMjZlYjhhOGM2OTU1MzkwYjQyMmI2ZTI3ZWMwZmE0M2EzYjU5YjJiMzIxOGNiNWFkNjcxMzlhNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQvY2hlY2tfZXhpc3RlbmNlX29mX21vZHVsZXNfYmVmb3JlX2luc3RhbGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkL2NoZWNrX2V4aXN0ZW5jZV9vZl9tb2R1bGVzX2JlZm9yZV9pbnN0YWxsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTRmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkL2NoZWNrX2V4aXN0ZW5jZV9vZl9tb2R1bGVzX2JlZm9yZV9pbnN0YWxsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0lmIENPTkZJR19CTEtfREVWX0RSQkQga2VybmVsIGNvbmZpZyBpcyBlbmFibGVkLCB0aGVuIERSQkQKK2RvZXMgbm90IGJ1aWxkIGRyYmQua28gaGVyZS4gVW5kZXIgdGhpcyBjaXJjdW1zdGFuY2UgZG9faW5zdGFsbAordGFzayBpcyBnb2luZyB0byBmYWlsIHdpdGggYSBiZWxvdyBlcnJvcjoKKy0tIHNuaXAgLS0KK3wgaW5zdGFsbDogY2Fubm90IHN0YXQg4oCYZHJiZC5rb+KAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCBtYWtlWzFdOiAqKiogW2luc3RhbGxdIEVycm9yIDEKKy0tIHNuaXAgLS0KKworU28sIGNoZWNrIGZvciBrZXJuZWwgbW9kdWxlIGV4aXN0ZW5jZSBiZWZvcmUgaW5zdGFsbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgorLS0tIGRyYmQtOS4wLjEtMS9kcmJkL01ha2VmaWxlCTIwMTYtMDctMDMgMDY6NTQ6MTkuNDIxNTM4NjkwIC0wNzAwCisrKysgZHJiZC05LjAuMS0xL2RyYmQvTWFrZWZpbGVfbW9kCTIwMTYtMDctMDMgMDY6NTM6MTguOTM4ODAxNjI4IC0wNzAwCitAQCAtMTU4LDcgKzE1OCw3IEBAIGVsc2UKKyAJZmkKKyAJaW5zdGFsbCAtZCAkKERFU1RESVIpL2xpYi9tb2R1bGVzLyQoS0VSTkVMUkVMRUFTRSkvJChNT0RTVUJESVIpCisgCXNldCAtZSA7IGZvciBrbyBpbiAkKE1PRE9CSlMpOyBkbyBcCistCQlpbnN0YWxsIC1tIDY0NCAkJGtvICQoREVTVERJUikvbGliL21vZHVsZXMvJChLRVJORUxSRUxFQVNFKS8kKE1PRFNVQkRJUik7IFwKKysJCVsgLWUgJCRrbyBdICYmIGluc3RhbGwgLW0gNjQ0ICQka28gJChERVNURElSKS9saWIvbW9kdWxlcy8kKEtFUk5FTFJFTEVBU0UpLyQoTU9EU1VCRElSKTsgXAorIAlkb25lCisgICAgIGlmZXEgKCQoREVTVERJUiksLykKKyAgICAgICBpZmVxICgkKHNoZWxsIHVuYW1lIC1yKSwkKEtFUk5FTFJFTEVBU0UpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZF85LjAuOC0xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZF85LjAuOC0xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NDNmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkXzkuMC44LTEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJEaXN0cmlidXRlZCBibG9jayBkZXZpY2UgZHJpdmVyIGZvciBMaW51eCIKK0RFU0NSSVBUSU9OID0gIkRSQkQgaXMgYSBibG9jayBkZXZpY2Ugd2hpY2ggaXMgZGVzaWduZWQgdG8gYnVpbGQgaGlnaCBcCisgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHkgY2x1c3RlcnMuIFRoaXMgaXMgZG9uZSBieSBtaXJyb3JpbmcgYSB3aG9sZSBcCisgICAgICAgICAgICAgICBibG9jayBkZXZpY2UgdmlhIChhIGRlZGljYXRlZCkgbmV0d29yay4gWW91IGNvdWxkIHNlZSBcCisgICAgICAgICAgICAgICBpdCBhcyBhIG5ldHdvcmsgcmFpZC0xLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3MubGluYml0LmNvbS9kcmJkLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NTc0YzY5NjVhZTVmNTgzZTU1ODgwZTM5N2ZiYjAxOCIKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5saW5iaXQuY29tL2Rvd25sb2Fkcy9kcmJkLzkuMC9kcmJkLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVja19leGlzdGVuY2Vfb2ZfbW9kdWxlc19iZWZvcmVfaW5zdGFsbGluZy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImMxZGQ1ODA0M2Y0NmU5OTI2YjU3OWFhNjVkNGVhOTgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3ZjcyZDQ2ZGI5YmFkOTI2NDE1YjNhYjlmNWYxMzk3ZGU4YzU4MWQyZTJlYzFhZGRiZGQ1Y2UyNjA0ZTYxMjMiCitpbmhlcml0IG1vZHVsZQorCitFWFRSQV9PRU1BS0UgKz0gIktESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSIke0R9IgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi4zLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi4zLjI2LmJiCmluZGV4IDM1OTkxMWUuLjFkNzgyODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuMy4yNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbF82LjMuMjYuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkZldGNobWFpbCByZXRyaWV2ZXMgbWFpbCBmcm9tIHJlbW90ZSBtYWlsIHNlcnZlcnMgYW5kIGZvcndhcmRzIGl0IHZpYSBTTVRQIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mZXRjaG1haWwuaW5mby8iCiBERVNDUklQVElPTiA9ICJGZXRjaG1haWwgaXMgYSBmdWxsLWZlYXR1cmVkLCByb2J1c3QsIHdlbGwtZG9jdW1lbnRlZCByZW1vdGUtbWFpbCByZXRyaWV2YWwgYW5kIGZvcndhcmRpbmcgdXRpbGl0eSBpbnRlbmRlZCB0byBiZSB1c2VkIG92ZXIgb24tZGVtYW5kIFRDUC9JUCBsaW5rcyAoc3VjaCBhcyBTTElQIG9yIFBQUCBjb25uZWN0aW9ucykuIEl0IHN1cHBvcnRzIGV2ZXJ5IHJlbW90ZS1tYWlsIHByb3RvY29sIG5vdyBpbiB1c2Ugb24gdGhlIEludGVybmV0OiBQT1AyLCBQT1AzLCBSUE9QLCBBUE9QLCBLUE9QLCBhbGwgZmxhdm9ycyBvZiBJTUFQLCBFVFJOLCBhbmQgT0RNUi4gSXQgY2FuIGV2ZW4gc3VwcG9ydCBJUHY2IGFuZCBJUFNFQy4iCiBTRUNUSU9OID0gIm1haWwiCiBMSUNFTlNFID0gIkdQTHYyICYgTUlUIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuMi4yL0dlb0lQLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi40LjAvR2VvSVAuY29uZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuMi4yL0dlb0lQLmNvbmYKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjQuMC9HZW9JUC5jb25mCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi4yLjIvZ2VvaXB1cGRhdGUuY3JvbiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjQuMC9nZW9pcHVwZGF0ZS5jcm9uCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi4yLjIvZ2VvaXB1cGRhdGUuY3JvbgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuNC4wL2dlb2lwdXBkYXRlLmNyb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JjOTM2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkNyb250YWIgZW50cnkgdG8gcHJvdmlkZSB3ZWVrbHkgdXBkYXRlcyBvZiB0aGUgR2VvSVAgZnJlZSBkYXRhYmFzZXMuIgotREVTQ1JJUFRJT04gPSAidXBkYXRlIGRhdGFiYXNlcyBmb3IgR2VvSVAiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9kZXYubWF4bWluZC5jb20vZ2VvaXAvIgotU0VDVElPTiA9ICJuZXQiCi0KLURFUEVORFMgPSAiemxpYiBjdXJsIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXhtaW5kL2dlb2lwdXBkYXRlL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMi9nZW9pcHVwZGF0ZS0yLjIuMi50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vR2VvSVAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW9pcHVwZGF0ZS5jcm9uIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNjI4NGJkN2JjYjI5OGQwNzhkNzk0ZWI2MzBkYWU1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNTZhYjc2MDQyNTVhOWM2MmM0YTQ0MmM3NmQ0OGQwMjRhYzgxM2M2NTQyNjM5YmZmYTkzYjI4ZTJhNzgxNjIxIgotCi1MSUNFTlNFID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLWZpbGU6Ly9DaGFuZ2VMb2cubWQ7bWQ1PThlYmY2ZjI3YTM5MTI1YzNkNjAwYzkwOTE0YjQwMzRhIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmQKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVAuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L2dlb2lwdXBkYXRlLmNyb24gJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZC8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTA0NWJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlXzIuNC4wLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiQ3JvbnRhYiBlbnRyeSB0byBwcm92aWRlIHdlZWtseSB1cGRhdGVzIG9mIHRoZSBHZW9JUCBmcmVlIGRhdGFiYXNlcy4iCitERVNDUklQVElPTiA9ICJ1cGRhdGUgZGF0YWJhc2VzIGZvciBHZW9JUCIKKworSE9NRVBBR0UgPSAiaHR0cDovL2Rldi5tYXhtaW5kLmNvbS9nZW9pcC8iCitTRUNUSU9OID0gIm5ldCIKKworREVQRU5EUyA9ICJ6bGliIGN1cmwiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21heG1pbmQvZ2VvaXB1cGRhdGUvcmVsZWFzZXMvZG93bmxvYWQvdjIuNC4wL2dlb2lwdXBkYXRlLTIuNC4wLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9HZW9JUC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2dlb2lwdXBkYXRlLmNyb24gXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMmY5NzEyZmI4MGU4ZTk3OWQzZDU0Y2RhN2Y3NzA0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjRlODhjZThkODRlOWM3NWJjNjgxNzA0ZDE5ZWM1YzYzYzU0ZjAxZTk0NWY3NjY5Zjk3ZmIwZGY3ZTEzOTUyIgorCitMSUNFTlNFID0gIkdQTHYyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKK2ZpbGU6Ly9DaGFuZ2VMb2cubWQ7bWQ1PTMzNDMzN2I2ZWNiYjY1MDkzYmFlNjZiM2FlMjFjOGMyIFwKKyIKK0ZJTEVTXyR7UE59ID0gIi91c3Ivc2hhcmUvR2VvSVAgXAorICAgICAgICAgICAgICAvZXRjL0dlb0lQLmNvbmYgXAorICAgICAgICAgICAgIC9ldGMvY3Jvbi5kL2dlb2lwdXBkYXRlLmNyb24gXAorICAgICAgICAgICAgIC91c3IvYmluL2dlb2lwdXBkYXRlIFwKKyIKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kCisgICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0lQLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LworICAgIGluc3RhbGwgJHtXT1JLRElSfS9nZW9pcHVwZGF0ZS5jcm9uICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmQvCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMjg5MjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lmZW5zbGF2ZS9pZmVuc2xhdmVfMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJDb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzIGZvciBwYXJhbGxlbCByb3V0aW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvbmV0d29ya2luZy9ib25kaW5nIgotU0VDVElPTiA9ICJuZXQiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT02ODA3YmE4MWMwNzQ0YWI1MGQ3MzVjOTQ2MjhjM2Y2NCIKLQotU1JDUkVWID0gIjQwMGM0OTBkNTJhY2IzMWYxMDY0ZTFiZjRmYzlmY2FmMzc5MTg4OGYiCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvaWZlbnNsYXZlLmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaWZlbnNsYXZlICR7RH0ke3NiaW5kaXJ9LwotCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7U30vZGViaWFuL2lmZW5zbGF2ZS5pZi1wcmUtdXAgJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1wcmUtdXAuZC9pZmVuc2xhdmUKLSAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLmlmLXBvc3QtZG93biAke0R9JHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXBvc3QtZG93bi5kL2lmZW5zbGF2ZQotICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuaWYtdXAgJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kL2lmZW5zbGF2ZQotICAgIGluc3RhbGwgLW0gMDY0NCAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuOCAke0R9JHttYW5kaXJ9L21hbjgvaWZlbnNsYXZlLjgKLX0KLQotRklMRVNfJHtQTn0tZG9jX3JlbW92ZSA9ICIke21hbmRpcn0iCi1GSUxFU18ke1BOfSArPSAiJHttYW5kaXJ9L21hbjgvaWZlbnNsYXZlLjgiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pZmVuc2xhdmUvaWZlbnNsYXZlXzIuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pZmVuc2xhdmUvaWZlbnNsYXZlXzIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTI4YjM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lmZW5zbGF2ZS9pZmVuc2xhdmVfMi45LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiQ29uZmlndXJlIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3IgcGFyYWxsZWwgcm91dGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL25ldHdvcmtpbmcvYm9uZGluZyIKK1NFQ1RJT04gPSAibmV0IgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YWNjODk4MTI5MzhjZjlhZDZiMWRlYmMzN2NlYTAyNTMiCisKKworU1JDUkVWID0gIjQyYmZiYjliZWI5MjQ2NzJjYTg2Yjg2ZTk2NzlhYzNkNmI4N2Q5OTIiCitTUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvaWZlbnNsYXZlLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaWZlbnNsYXZlICR7RH0ke3NiaW5kaXJ9LworCisgICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7U30vZGViaWFuL2lmZW5zbGF2ZS5pZi1wcmUtdXAgJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1wcmUtdXAuZC9pZmVuc2xhdmUKKyAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLmlmLXBvc3QtZG93biAke0R9JHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXBvc3QtZG93bi5kL2lmZW5zbGF2ZQorICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuaWYtdXAgJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kL2lmZW5zbGF2ZQorICAgIGluc3RhbGwgLW0gMDY0NCAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuOCAke0R9JHttYW5kaXJ9L21hbjgvaWZlbnNsYXZlLjgKK30KKworRklMRVNfJHtQTn0tZG9jX3JlbW92ZSA9ICIke21hbmRpcn0iCitGSUxFU18ke1BOfSArPSAiJHttYW5kaXJ9L21hbjgvaWZlbnNsYXZlLjgiCisKK1JERVBFTkRTXyR7UE59ID0gIm1hbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29scy9maXgtQ1ZFLTIwMTYtMTAzOTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHMvZml4LUNWRS0yMDE2LTEwMzk2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMDc5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHMvZml4LUNWRS0yMDE2LTEwMzk2LnBhdGNoCkBAIC0wLDAgKzEsMjA3IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Fub25zY20uZGViaWFuLm9yZy9jZ2l0L3BrZy1pcHNlYy10b29scy9wa2ctaXBzZWMtdG9vbHMuZ2l0L3BsYWluL2RlYmlhbi9wYXRjaGVzL0NWRS0yMDE2LTEwMzk2LnBhdGNoP2lkPTYyYWMxMjY0OGE0ZWI3YzViYTVkYmEwZjgxOTk4ZDFhY2YzMTBkOGJdCisKK0ZpeCBDVkUtMjAxNi0xMDM5Ni4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Rlc2NyaXB0aW9uOiBGaXggcmVtb3RlbHkgZXhwbG9pdGFibGUgRG9TLiBodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMTYtMTAzOTYKK1NvdXJjZTogdmVuZG9yOyBodHRwczovL2duYXRzLm5ldGJzZC5vcmcvY2dpLWJpbi9xdWVyeS1wci1zaW5nbGUucGw/bnVtYmVyPTUxNjgyCitCdWctZGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTg2Nzk4NgorCitJbmRleDogcGtnLWlwc2VjLXRvb2xzL3NyYy9yYWNvb24vaXNha21wX2ZyYWcuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBrZy1pcHNlYy10b29scy5vcmlnL3NyYy9yYWNvb24vaXNha21wX2ZyYWcuYworKysrIHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcF9mcmFnLmMKK0BAIC0xLDQgKzEsNCBAQAorLS8qCSROZXRCU0Q6IGlzYWttcF9mcmFnLmMsdiAxLjUgMjAwOS8wNC8yMiAxMToyNDoyMCB0dGVyYXMgRXhwICQJKi8KKysvKgkkTmV0QlNEOiBpc2FrbXBfZnJhZy5jLHYgMS41LjM2LjEgMjAxNy8wNC8yMSAxNjo1MDo0MiBib3V5ZXIgRXhwICQJKi8KKyAKKyAvKiBJZDogaXNha21wX2ZyYWcuYyx2IDEuNCAyMDA0LzExLzEzIDE3OjMxOjM2IG1hbnVic2QgRXhwICovCisgCitAQCAtMTczLDYgKzE3Myw0MyBAQCB2ZW5kb3JpZF9mcmFnX2NhcChnZW4pCisgCXJldHVybiBudG9obChocFtNRDVfRElHRVNUX0xFTkdUSCAvIHNpemVvZigqaHApXSk7CisgfQorIAorK3N0YXRpYyBpbnQgCisraXNha21wX2ZyYWdfaW5zZXJ0KHN0cnVjdCBwaDFoYW5kbGUgKmlwaDEsIHN0cnVjdCBpc2FrbXBfZnJhZ19pdGVtICppdGVtKQorK3sKKysJc3RydWN0IGlzYWttcF9mcmFnX2l0ZW0gKnBpdGVtID0gTlVMTDsKKysJc3RydWN0IGlzYWttcF9mcmFnX2l0ZW0gKmNpdGVtID0gaXBoMS0+ZnJhZ19jaGFpbjsKKysKKysJLyogbm8gZnJhZyB5ZXQsIGp1c3QgaW5zZXJ0IGF0IGJlZ2lubmluZyBvZiBsaXN0ICovCisrCWlmIChpcGgxLT5mcmFnX2NoYWluID09IE5VTEwpIHsKKysJCWlwaDEtPmZyYWdfY2hhaW4gPSBpdGVtOworKwkJcmV0dXJuIDA7CisrCX0KKysKKysJZG8geworKwkJLyogZHVwbGljYXRlIGZyYWdtZW50IG51bWJlciwgYWJvcnQgKENWRS0yMDE2LTEwMzk2KSAqLworKwkJaWYgKGNpdGVtLT5mcmFnX251bSA9PSBpdGVtLT5mcmFnX251bSkKKysJCQlyZXR1cm4gLTE7CisrCisrCQkvKiBuZWVkIHRvIGluc2VydCBiZWZvcmUgY3VycmVudCBpdGVtICovCisrCQlpZiAoY2l0ZW0tPmZyYWdfbnVtID4gaXRlbS0+ZnJhZ19udW0pIHsKKysJCQlpZiAocGl0ZW0gIT0gTlVMTCkKKysJCQkJcGl0ZW0tPmZyYWdfbmV4dCA9IGl0ZW07CisrCQkJZWxzZQorKwkJCQkvKiBpbnNlcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCAgKi8KKysJCQkJaXBoMS0+ZnJhZ19jaGFpbiA9IGl0ZW07CisrCQkJaXRlbS0+ZnJhZ19uZXh0ID0gY2l0ZW07CisrCQkJcmV0dXJuIDA7CisrCQl9CisrCisrCQlwaXRlbSA9IGNpdGVtOworKwkJY2l0ZW0gPSBjaXRlbS0+ZnJhZ19uZXh0OworKwl9IHdoaWxlIChjaXRlbSAhPSBOVUxMKTsKKysKKysJLyogd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXN0LCBpbnNlcnQgKi8KKysJcGl0ZW0tPmZyYWdfbmV4dCA9IGl0ZW07CisrCXJldHVybiAwOworK30KKysKKyBpbnQgCisgaXNha21wX2ZyYWdfZXh0cmFjdChpcGgxLCBtc2cpCisgCXN0cnVjdCBwaDFoYW5kbGUgKmlwaDE7CitAQCAtMjI0LDM5ICsyNjEsNDMgQEAgaXNha21wX2ZyYWdfZXh0cmFjdChpcGgxLCBtc2cpCisgCWl0ZW0tPmZyYWdfbmV4dCA9IE5VTEw7CisgCWl0ZW0tPmZyYWdfcGFja2V0ID0gYnVmOworIAorLQkvKiBMb29rIGZvciB0aGUgbGFzdCBmcmFnIHdoaWxlIGluc2VydGluZyB0aGUgbmV3IGl0ZW0gaW4gdGhlIGNoYWluICovCistCWlmIChpdGVtLT5mcmFnX2xhc3QpCistCQlsYXN0X2ZyYWcgPSBpdGVtLT5mcmFnX251bTsKKysJLyogQ2hlY2sgZm9yIHRoZSBsYXN0IGZyYWcgYmVmb3JlIGluc2VydGluZyB0aGUgbmV3IGl0ZW0gaW4gdGhlIGNoYWluICovCisrCWlmIChpdGVtLT5mcmFnX2xhc3QpIHsKKysJCS8qIGlmIHdlIGhhdmUgdGhlIGxhc3QgZnJhZ21lbnQsIGluZGljZXMgbXVzdCBtYXRjaCAqLworKwkJaWYgKGlwaDEtPmZyYWdfbGFzdF9pbmRleCAhPSAwICYmCisrCQkgICAgaXRlbS0+ZnJhZ19sYXN0ICE9IGlwaDEtPmZyYWdfbGFzdF9pbmRleCkgeworKwkJCXBsb2coTExWX0VSUk9SLCBMT0NBVElPTiwgTlVMTCwKKysJCQkgICAgICJSZXBlYXRlZCBsYXN0IGZyYWdtZW50IGluZGV4IG1pc21hdGNoXG4iKTsKKysJCQlyYWNvb25fZnJlZShpdGVtKTsKKysJCQl2ZnJlZShidWYpOworKwkJCXJldHVybiAtMTsKKysJCX0KKyAKKy0JaWYgKGlwaDEtPmZyYWdfY2hhaW4gPT0gTlVMTCkgeworLQkJaXBoMS0+ZnJhZ19jaGFpbiA9IGl0ZW07CistCX0gZWxzZSB7CistCQlzdHJ1Y3QgaXNha21wX2ZyYWdfaXRlbSAqY3VycmVudDsKKysJCWxhc3RfZnJhZyA9IGlwaDEtPmZyYWdfbGFzdF9pbmRleCA9IGl0ZW0tPmZyYWdfbnVtOworKwl9CisgCistCQljdXJyZW50ID0gaXBoMS0+ZnJhZ19jaGFpbjsKKy0JCXdoaWxlIChjdXJyZW50LT5mcmFnX25leHQpIHsKKy0JCQlpZiAoY3VycmVudC0+ZnJhZ19sYXN0KQorLQkJCQlsYXN0X2ZyYWcgPSBpdGVtLT5mcmFnX251bTsKKy0JCQljdXJyZW50ID0gY3VycmVudC0+ZnJhZ19uZXh0OworLQkJfQorLQkJY3VycmVudC0+ZnJhZ19uZXh0ID0gaXRlbTsKKysJLyogaW5zZXJ0IGZyYWdtZW50IGludG8gY2hhaW4gKi8KKysJaWYgKGlzYWttcF9mcmFnX2luc2VydChpcGgxLCBpdGVtKSA9PSAtMSkgeworKwkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLAorKwkJICAgICJSZXBlYXRlZCBmcmFnbWVudCBpbmRleCBtaXNtYXRjaFxuIik7CisrCQlyYWNvb25fZnJlZShpdGVtKTsKKysJCXZmcmVlKGJ1Zik7CisrCQlyZXR1cm4gLTE7CisgCX0KKyAKKy0JLyogSWYgd2Ugc2F3IHRoZSBsYXN0IGZyYWcsIGNoZWNrIGlmIHRoZSBjaGFpbiBpcyBjb21wbGV0ZSAqLworKwkvKiBJZiB3ZSBzYXcgdGhlIGxhc3QgZnJhZywgY2hlY2sgaWYgdGhlIGNoYWluIGlzIGNvbXBsZXRlCisrCSAqIHdlIGhhdmUgYSBzb3J0ZWQgbGlzdCBub3csIHNvIGp1c3Qgd2FsayB0aHJvdWdoICovCisgCWlmIChsYXN0X2ZyYWcgIT0gMCkgeworKwkJaXRlbSA9IGlwaDEtPmZyYWdfY2hhaW47CisgCQlmb3IgKGkgPSAxOyBpIDw9IGxhc3RfZnJhZzsgaSsrKSB7CistCQkJaXRlbSA9IGlwaDEtPmZyYWdfY2hhaW47CistCQkJZG8geworLQkJCQlpZiAoaXRlbS0+ZnJhZ19udW0gPT0gaSkKKy0JCQkJCWJyZWFrOworLQkJCQlpdGVtID0gaXRlbS0+ZnJhZ19uZXh0OworLQkJCX0gd2hpbGUgKGl0ZW0gIT0gTlVMTCk7CistCisrCQkJaWYgKGl0ZW0tPmZyYWdfbnVtICE9IGkpCisrCQkJCWJyZWFrOworKwkJCWl0ZW0gPSBpdGVtLT5mcmFnX25leHQ7CisgCQkJaWYgKGl0ZW0gPT0gTlVMTCkgLyogTm90IGZvdW5kICovCisgCQkJCWJyZWFrOworIAkJfQorIAorLQkJaWYgKGl0ZW0gIT0gTlVMTCkgLyogSXQgaXMgY29tcGxldGUgKi8KKysJCWlmIChpID4gbGFzdF9mcmFnKSAvKiBJdCBpcyBjb21wbGV0ZSAqLworIAkJCXJldHVybiAxOworIAl9CisgCQkKK0BAIC0yOTEsMTUgKzMzMiw5IEBAIGlzYWttcF9mcmFnX3JlYXNzZW1ibHkoaXBoMSkKKyAJfQorIAlkYXRhID0gYnVmLT52OworIAorKwlpdGVtID0gaXBoMS0+ZnJhZ19jaGFpbjsKKyAJZm9yIChpID0gMTsgaSA8PSBmcmFnX2NvdW50OyBpKyspIHsKKy0JCWl0ZW0gPSBpcGgxLT5mcmFnX2NoYWluOworLQkJZG8geworLQkJCWlmIChpdGVtLT5mcmFnX251bSA9PSBpKQorLQkJCQlicmVhazsKKy0JCQlpdGVtID0gaXRlbS0+ZnJhZ19uZXh0OworLQkJfSB3aGlsZSAoaXRlbSAhPSBOVUxMKTsKKy0KKy0JCWlmIChpdGVtID09IE5VTEwpIHsKKysJCWlmIChpdGVtLT5mcmFnX251bSAhPSBpKSB7CisgCQkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLCAKKyAJCQkgICAgIk1pc3NpbmcgZnJhZ21lbnQgIyVkXG4iLCBpKTsKKyAJCQl2ZnJlZShidWYpOworQEAgLTMwOCw2ICszNDMsNyBAQCBpc2FrbXBfZnJhZ19yZWFzc2VtYmx5KGlwaDEpCisgCQl9CisgCQltZW1jcHkoZGF0YSwgaXRlbS0+ZnJhZ19wYWNrZXQtPnYsIGl0ZW0tPmZyYWdfcGFja2V0LT5sKTsKKyAJCWRhdGEgKz0gaXRlbS0+ZnJhZ19wYWNrZXQtPmw7CisrCQlpdGVtID0gaXRlbS0+ZnJhZ19uZXh0OworIAl9CisgCisgb3V0OgorSW5kZXg6IHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcF9pbmYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBrZy1pcHNlYy10b29scy5vcmlnL3NyYy9yYWNvb24vaXNha21wX2luZi5jCisrKysgcGtnLWlwc2VjLXRvb2xzL3NyYy9yYWNvb24vaXNha21wX2luZi5jCitAQCAtNzIwLDYgKzcyMCw3IEBAIGlzYWttcF9pbmZvX3NlbmRfbngoaXNha21wLCByZW1vdGUsIGxvY2EKKyAjZW5kaWYKKyAjaWZkZWYgRU5BQkxFX0ZSQUcKKyAJaXBoMS0+ZnJhZyA9IDA7CisrCWlwaDEtPmZyYWdfbGFzdF9pbmRleCA9IDA7CisgCWlwaDEtPmZyYWdfY2hhaW4gPSBOVUxMOworICNlbmRpZgorIAorSW5kZXg6IHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGtnLWlwc2VjLXRvb2xzLm9yaWcvc3JjL3JhY29vbi9pc2FrbXAuYworKysrIHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcC5jCitAQCAtMTA3Miw2ICsxMDcyLDcgQEAgaXNha21wX3BoMWJlZ2luX2kocm1jb25mLCByZW1vdGUsIGxvY2FsKQorIAkJaXBoMS0+ZnJhZyA9IDE7CisgCWVsc2UKKyAJCWlwaDEtPmZyYWcgPSAwOworKwlpcGgxLT5mcmFnX2xhc3RfaW5kZXggPSAwOworIAlpcGgxLT5mcmFnX2NoYWluID0gTlVMTDsKKyAjZW5kaWYKKyAJaXBoMS0+YXBwcm92YWwgPSBOVUxMOworQEAgLTExNzYsNiArMTE3Nyw3IEBAIGlzYWttcF9waDFiZWdpbl9yKG1zZywgcmVtb3RlLCBsb2NhbCwgZXQKKyAjZW5kaWYKKyAjaWZkZWYgRU5BQkxFX0ZSQUcKKyAJaXBoMS0+ZnJhZyA9IDA7CisrCWlwaDEtPmZyYWdfbGFzdF9pbmRleCA9IDA7CisgCWlwaDEtPmZyYWdfY2hhaW4gPSBOVUxMOworICNlbmRpZgorIAlpcGgxLT5hcHByb3ZhbCA9IE5VTEw7CitJbmRleDogcGtnLWlwc2VjLXRvb2xzL3NyYy9yYWNvb24vaGFuZGxlci5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGtnLWlwc2VjLXRvb2xzLm9yaWcvc3JjL3JhY29vbi9oYW5kbGVyLmgKKysrKyBwa2ctaXBzZWMtdG9vbHMvc3JjL3JhY29vbi9oYW5kbGVyLmgKK0BAIC0xLDQgKzEsNCBAQAorLS8qCSROZXRCU0Q6IGhhbmRsZXIuaCx2IDEuMjUgMjAxMC8xMS8xNyAxMDo0MDo0MSB0dGVyYXMgRXhwICQJKi8KKysvKgkkTmV0QlNEOiBoYW5kbGVyLmgsdiAxLjI2IDIwMTcvMDEvMjQgMTk6MjM6NTYgY2hyaXN0b3MgRXhwICQJKi8KKyAKKyAvKiBJZDogaGFuZGxlci5oLHYgMS4xOSAyMDA2LzAyLzI1IDA4OjI1OjEyIG1hbnVic2QgRXhwICovCisgCitAQCAtMTQxLDYgKzE0MSw3IEBAIHN0cnVjdCBwaDFoYW5kbGUgeworICNlbmRpZgorICNpZmRlZiBFTkFCTEVfRlJBRworIAlpbnQgZnJhZzsJCQkvKiBJS0UgcGhhc2UgMSBmcmFnbWVudGF0aW9uICovCisrCWludCBmcmFnX2xhc3RfaW5kZXg7CisgCXN0cnVjdCBpc2FrbXBfZnJhZ19pdGVtICpmcmFnX2NoYWluOwkvKiBSZWNlaXZlZCBmcmFnbWVudHMgKi8KKyAjZW5kaWYKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29sc18wLjguMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29sc18wLjguMi5iYgppbmRleCBkN2U4YjI1Li41Y2JlYjE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHNfMC44LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzXzAuOC4yLmJiCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWhlYWRlci1pc3N1ZXMtZm91bmQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jZnBhcnNlLWNsZWFyLW1lbW9yeS1lcXVhbC10by1zaXplLW9mLWFycmF5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNi0xMDM5Ni5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNTNlYzE0YTBhM2VjZTY0ZTA5ZTVlMzRiMzM1MGI0MSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWI2YjM4NzE2ZTJmM2E4YTcyZjFmNTQ5Yzk0NDRjMmJjMjhkNTJjOTUzNjc5MjY5MDU2NGM3NGZlNzIyZjJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI2LmJiCmluZGV4IDhkMWIzZjAuLmIzNWE5ZjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG1fMS4yNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtXzEuMjYuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkxpbnV4IFZpcnR1YWwgU2VydmVyIGFkbWluaXN0cmF0aW9uIFV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LXZzLm9yZy9zb2Z0d2FyZS9pbmRleC5odG1sIgogREVTQ1JJUFRJT04gPSAiSXB2c2FkbSAgaXMgIHVzZWQgIHRvIHNldCB1cCwgbWFpbnRhaW4gb3IgaW5zcGVjdCB0aGUgdmlydHVhbCBzZXJ2ZXIgXAogdGFibGUgaW4gdGhlIExpbnV4IGtlcm5lbC4gVGhlIExpbnV4IFZpcnR1YWwgIFNlcnZlciAgY2FuICBiZSAgdXNlZCAgdG8gXAogYnVpbGQgIHNjYWxhYmxlICBuZXR3b3JrICBzZXJ2aWNlcyAgYmFzZWQgIG9uICBhIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgbm9kZXMuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cC9zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cC9zbnByaW50Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGQyMDNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmVzbXRwL2xpYmVzbXRwL3NucHJpbnRmLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK1VzZSBIQVZFX1dPUktJTkdfU05QUklOVEYgdG8gY2hlY2sgZm9yIHNucHJpbnRmKCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBsaWJlc210cC0xLjAuNi9taXNzaW5nLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJlc210cC0xLjAuNi5vcmlnL21pc3NpbmcuaAorKysrIGxpYmVzbXRwLTEuMC42L21pc3NpbmcuaAorQEAgLTQzLDcgKzQzLDcgQEAgaW50IHN0cm5jYXNlY21wIChjb25zdCBjaGFyICphLCBjb25zdCBjaAorIHZvaWQgKm1lbXJjaHIgKGNvbnN0IHZvaWQgKmEsIGludCBjLCBzaXplX3QgbGVuKTsKKyAjZW5kaWYKKyAKKy0jaWZuZGVmIEhBVkVfU05QUklOVEYKKysjaWZuZGVmIEhBVkVfV09SS0lOR19TTlBSSU5URgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyBpbnQgc25wcmludGYoY2hhciAqcywgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cF8xLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cF8xLjAuNi5iYgppbmRleCA3ZGRmNTkxLi43MWM1ZDk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGliZXNtdHAvbGliZXNtdHBfMS4wLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmVzbXRwL2xpYmVzbXRwXzEuMC42LmJiCkBAIC05LDcgKzksOSBAQAogREVQRU5EUyA9ICJvcGVuc3NsIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuc3RhZmZvcmQudWtsaW51eC5uZXQvbGliZXNtdHAvbGliZXNtdHAtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlLXRvcGRpci5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL2luY2x1ZGUtdG9wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NucHJpbnRmLnBhdGNoIFwKKyAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmYzOTE1ZTYyN2ZkOGYzNTUyNGE4ZmRmZWVkOTc5YzgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDBhNjFhNWM1MmQ5OWZhN2NlN2QwMGVkMGEwN2UzNDFkYmRhNjcxMDFkYmVkMWFiMGNkYWUzZjM3ZGI0ZWIwYiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaAppbmRleCA0MDAwNTU3Li4yNzI5MjFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApAQCAtMSw3ICsxLDEwIEBACi1Gcm9tIDEwYWM1ZTVmZGRhNDRhZGNjMmExNTliNmY5YTJkNTFhNTEzNjEwNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMSBTZXAgMjAxNiAxMDo0NjoxOSArMDgwMAotU3ViamVjdDogW1BBVENIXSB0ZGI6IEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgcGFja2FnZXMKK0Zyb20gMjQ5MTFmMzZiY2IwMDQxMmU1ZGM0Y2QxMWZkYTEzOWUwOWQ1ODc5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFR1ZSwgMSBBdWcgMjAxNyAwMzoxMjowOSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGcm9tIDEwYWM1ZTVmZGRhNDRhZGNjMmExNTliNmY5YTJkNTFhNTEzNjEwNTcgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4gRGF0ZTogV2VkLCAyMQorIFNlcCAyMDE2IDEwOjQ2OjE5ICswODAwIFN1YmplY3Q6IFtQQVRDSF0gdGRiOiBBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yCisgcGFja2FnZXMKIAogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgogIC0gYWNsCkBAIC0xNCw2ICsxNywxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBkZXRlcm1pbmlzdGljIGJ1aWxkIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgZm9yIGxpYnRkYl8xLjMuMTQuCisKK1NpZ25lZC1vZmYtYnk6IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KIC0tLQogIGxpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSB8ICA2ICsrLQogIGxpYi9yZXBsYWNlL3dzY3JpcHQgICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQpAQCAtMzcsNyArNDQsNyBAQAogIAogICMgc29sYXJpcyB2YXJpZW50cyBvZiBnZXRYWGVudF9yCiBkaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvd3NjcmlwdCBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLWluZGV4IDE0NTMwMGQuLjMxMDA0OGMgMTAwNjQ0CitpbmRleCA3YzUwZTFkLi4xNWRmNWMzIDEwMDY0NAogLS0tIGEvbGliL3JlcGxhY2Uvd3NjcmlwdAogKysrIGIvbGliL3JlcGxhY2Uvd3NjcmlwdAogQEAgLTIzLDYgKzIzLDQxIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgpAQCAtMTI0LDcgKzEzMSw3IEBACiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCi1AQCAtMjQ4LDE3ICsyOTgsMTggQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKK0BAIC0yNTEsMTcgKzMwMSwxOCBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgogIAogICAgICBjb25mLkNIRUNLX0ZVTkNTKCdwcmN0bCBkaXJuYW1lIGJhc2VuYW1lJykKICAKQEAgLTE1NSwyMyArMTYyLDIzIEBACiAgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKICAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7CiBkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLWluZGV4IDUwYjIyODYuLjc0OGVlZjEgMTAwNjQ0CitpbmRleCAxYzk2NTVhLi44YzIwZDNiIDEwMDY0NAogLS0tIGEvd3NjcmlwdAogKysrIGIvd3NjcmlwdAotQEAgLTY0LDcgKzY0LDEyIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgotICAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0tZGlzYWJsZS1weXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oImRpc2FibGUgdGhlIHB5dGRiIG1vZHVsZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZGlzYWJsZV9weXRob24nLCBkZWZhdWx0PUZhbHNlKQorQEAgLTYyLDcgKzYyLDEyIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgorICAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB0aGUgdXNlIG9mIHB0aHJlYWQgcm9idXN0IG11dGV4ZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZGlzYWJsZV90ZGJfbXV0ZXhfbG9ja2luZycsCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UpCiAtCi0rICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCi0rICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQotKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCi0rICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oImVuYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJkaXNhYmxlIHVzZSBvZiB2YWxncmluZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJywgZGVmYXVsdD1GYWxzZSkKICAKICBkZWYgY29uZmlndXJlKGNvbmYpOgogICAgICBjb25mLmVudi5kaXNhYmxlX3RkYl9tdXRleF9sb2NraW5nID0gZ2V0YXR0cihPcHRpb25zLm9wdGlvbnMsCiAtLSAKLTIuOC4zCisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNTZhYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgdGRiIGxpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIEdQTC0zLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90b29scy90ZGJkdW1wLmM7ZW5kbGluZT0xODttZDU9YjU5Y2Q0NWFhODYyNDU3ODEyNmE4Yzk4ZjQ4MDE4YzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS90ZGIuaDtlbmRsaW5lPTI3O21kNT1mNWJiNTQ0NjQxZDMwODE4MjFiY2MxZGQ1ODMxMGJlNiIKLQotU1JDX1VSSSA9ICJodHRwczovL3NhbWJhLm9yZy9mdHAvdGRiL3RkYi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ5NjI3ZTdhYWNkNTM1YTgyNTE0MDFmOTE0YmI2OTI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwMTM0ZTMyMjUzY2FjOGUyZWZlNWUwMTg1ZDIwMTIzYzIwOGJjZjZhZDE1ZWRmMmY1MGQ4MGRhYWRmOGMzNDgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCi1QQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLQotUyA9ICIke1dPUktESVJ9L3RkYi0ke1BWfSIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAotICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKLSAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICJ0ZGItdG9vbHMgcHl0aG9uLXRkYiBweXRob24tdGRiLWRiZyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKLUZJTEVTX3RkYi10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX3B5dGhvbi10ZGIgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCi1GSUxFU19weXRob24tdGRiLWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnLyoiCi1SREVQRU5EU19weXRob24tdGRiID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTIyYjkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjE0LmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3RkYi5zYW1iYS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZDIzZjJiYThjYTJiZmRjYjgzM2JjNzlkNWI1YWM2ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTdkNGJiNzkyMjk0NjBkZjUzMGM3ZTFjNzA2N2JhOWZiOWQzNzBhYTYxZmZmNTM3ZmRjMmJkZjkxOGFjYmU5IgorCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgorUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCisKK1MgPSAiJHtXT1JLRElSfS90ZGItJHtQVn0iCisKK2luaGVyaXQgd2FmLXNhbWJhCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKKyAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCisgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbi10ZGIgcHl0aG9uLXRkYi1kYmciCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCitGSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19weXRob24tdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgorRklMRVNfcHl0aG9uLXRkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1Zy8qIgorUkRFUEVORFNfcHl0aG9uLXRkYiA9ICJweXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC9kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC9kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZTRkZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotRG9uJ3QgY2hlY2sgbWFucGFnZXMgZm9yIHhzbHRwcm9jLgotCi1TaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLQotZGlmZiAtTnVycCB0ZXZlbnQtMC45LjIxLm9yaWcvbGliL3RhbGxvYy93c2NyaXB0IHRldmVudC0wLjkuMjEvbGliL3RhbGxvYy93c2NyaXB0Ci0tLS0gdGV2ZW50LTAuOS4yMS5vcmlnL2xpYi90YWxsb2Mvd3NjcmlwdAkyMDEzLTA5LTA4IDIxOjI0OjE0LjAwMDAwMDAwMCArMDkwMAotKysrIHRldmVudC0wLjkuMjEvbGliL3RhbGxvYy93c2NyaXB0CTIwMTUtMDQtMjQgMTY6Mjg6MDQuMDg1MDAwMjMwICswOTAwCi1AQCAtNTUsNyArNTUsNyBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBpZiBjb25mLmVudi5zdGFuZGFsb25lX3RhbGxvYzoKLSAgICAgICAgIGNvbmYuZW52LlRBTExPQ19DT01QQVQxID0gT3B0aW9ucy5vcHRpb25zLlRBTExPQ19DT01QQVQxCi0gCi0tICAgIGNvbmYuQ0hFQ0tfWFNMVFBST0NfTUFOUEFHRVMoKQotKyAgICBjb25mLmZpbmRfcHJvZ3JhbSgneHNsdHByb2MnLCB2YXI9J1hTTFRQUk9DJykKLSAKLSAgICAgaWYgbm90IGNvbmYuZW52LmRpc2FibGVfcHl0aG9uOgotICAgICAgICAgIyBhbHNvIGRpc2FibGUgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgcHl0aG9uIGxpYnMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjQuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjQuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YzNjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS40LjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGhpZ2gtcGVyZm9ybWFuY2UgbWVtb3J5IG9iamVjdCBjYWNoaW5nIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlwKLSBtZW1jYWNoZWQgb3B0aW1pemVzIHNwZWNpZmljIGhpZ2gtbG9hZCBzZXJ2aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCBcCi0gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXRzIHZlcnNhdGlsZSBuby1sb2NraW5nIG1lbW9yeSBhY2Nlc3Mgc3lzdGVtLiBDbGllbnRzIFwKLSBhcmUgYXZhaWxhYmxlIGluIHNldmVyYWwgZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdG8gc3VpdCB0aGUgbmVlZHMgXAotIG9mIHRoZSBzcGVjaWZpYyBhcHBsaWNhdGlvbi4gVHJhZGl0aW9uYWxseSB0aGlzIGhhcyBiZWVuIHVzZWQgaW4gbW9kX3BlcmwgXAotIGFwcHMgdG8gYXZvaWQgc3RvcmluZyBsYXJnZSBjaHVua3Mgb2YgZGF0YSBpbiBBcGFjaGUgbWVtb3J5LCBhbmQgdG8gc2hhcmUgXAotIHRoaXMgYnVyZGVuIGFjcm9zcyBzZXZlcmFsIG1hY2hpbmVzLiIKLVNFQ1RJT04gPSAid2ViIgotSE9NRVBBR0UgPSAiaHR0cDovL21lbWNhY2hlZC5vcmcvIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdlNWRlZDczNjNkMzM1ZTFiYjE4MDEzY2EwODA0NmZmIgotCi1pbmhlcml0IGF1dG90b29scwotCi1ERVBFTkRTICs9ICJsaWJldmVudCIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAotICAgIHBlcmwtbW9kdWxlLXRpZS1oYXNoIGJhc2ggXAotICAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lbWNhY2hlZC5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21lbWNhY2hlZC1hZGQtaHVnZXRsYmZzLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjFlMDI4ZmJhYjcyODg5MTFmY2FhNWVkMmEyMTgxN2ZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3M2I2YmIyMGJmODAyMjNjYTZhMTVkNzVmNTcwZmJhYjM0NmFkMTFlYzk4NTk1ZTVhZjVlMzNmNTRiZDgyZDgiCi0KLSMgc2V0IHRoZSBzYW1lIENPTVBBVElCTEVfSE9TVCBhcyBsaWJodWdldGxiZnMKLUNPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JwotCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCi0gICAgaWYgZW5kaWFubmVzcyA9PSAnbGUnOgotICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1saXR0bGUiKQotICAgIGVsc2U6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCdFWFRSQV9PRUNPTkYnLCAiIGFjX2N2X2NfZW5kaWFuPWJpZyIpCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2h1Z2V0bGJmc10gPSAiLS1lbmFibGUtaHVnZXRsYmZzLCAtLWRpc2FibGUtaHVnZXRsYmZzLCBsaWJodWdldGxiZnMiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQKLQotSU5JVFNDUklQVF9OQU1FID0gIm1lbWNhY2hlZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L3NjcmlwdHMvbWVtY2FjaGVkLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21lbWNhY2hlZAotICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC10b29sICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3N0YXJ0LW1lbWNhY2hlZCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDNkMTcxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjAuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBIGhpZ2gtcGVyZm9ybWFuY2UgbWVtb3J5IG9iamVjdCBjYWNoaW5nIHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlwKKyBtZW1jYWNoZWQgb3B0aW1pemVzIHNwZWNpZmljIGhpZ2gtbG9hZCBzZXJ2aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCBcCisgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXRzIHZlcnNhdGlsZSBuby1sb2NraW5nIG1lbW9yeSBhY2Nlc3Mgc3lzdGVtLiBDbGllbnRzIFwKKyBhcmUgYXZhaWxhYmxlIGluIHNldmVyYWwgZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdG8gc3VpdCB0aGUgbmVlZHMgXAorIG9mIHRoZSBzcGVjaWZpYyBhcHBsaWNhdGlvbi4gVHJhZGl0aW9uYWxseSB0aGlzIGhhcyBiZWVuIHVzZWQgaW4gbW9kX3BlcmwgXAorIGFwcHMgdG8gYXZvaWQgc3RvcmluZyBsYXJnZSBjaHVua3Mgb2YgZGF0YSBpbiBBcGFjaGUgbWVtb3J5LCBhbmQgdG8gc2hhcmUgXAorIHRoaXMgYnVyZGVuIGFjcm9zcyBzZXZlcmFsIG1hY2hpbmVzLiIKK1NFQ1RJT04gPSAid2ViIgorSE9NRVBBR0UgPSAiaHR0cDovL21lbWNhY2hlZC5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdlNWRlZDczNjNkMzM1ZTFiYjE4MDEzY2EwODA0NmZmIgorCitpbmhlcml0IGF1dG90b29scworCitERVBFTkRTICs9ICJsaWJldmVudCIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLXRpZS1oYXNoIGJhc2ggXAorICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lbWNhY2hlZC5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21lbWNhY2hlZC1hZGQtaHVnZXRsYmZzLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjgxMzI2NTEzZjYwZDdiYTQ4MmY4MTMxOTc1Y2Q1NWFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwMDFmODEyMDI0YmI0NjFiNWU0ZDdkMDUwNmRhYWI2M2RmZjk2MTRlZWEyNmY0NjUzNmMzYjdlMWU2MDFjMzIiCisKKyMgc2V0IHRoZSBzYW1lIENPTVBBVElCTEVfSE9TVCBhcyBsaWJodWdldGxiZnMKK0NPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JworCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCisgICAgaWYgZW5kaWFubmVzcyA9PSAnbGUnOgorICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1saXR0bGUiKQorICAgIGVsc2U6CisgICAgICAgIGQuYXBwZW5kVmFyKCdFWFRSQV9PRUNPTkYnLCAiIGFjX2N2X2NfZW5kaWFuPWJpZyIpCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2h1Z2V0bGJmc10gPSAiLS1lbmFibGUtaHVnZXRsYmZzLCAtLWRpc2FibGUtaHVnZXRsYmZzLCBsaWJodWdldGxiZnMiCisKK2luaGVyaXQgdXBkYXRlLXJjLmQKKworSU5JVFNDUklQVF9OQU1FID0gIm1lbWNhY2hlZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L3NjcmlwdHMvbWVtY2FjaGVkLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21lbWNhY2hlZAorICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC10b29sICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3N0YXJ0LW1lbWNhY2hlZCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzYvMDAwMS1hdXRvZ2VuLURvLW5vdC1zeW1saW5rLWdldHRleHQuaC1mcm9tLWJ1aWxkLWhvc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNi8wMDAxLWF1dG9nZW4tRG8tbm90LXN5bWxpbmstZ2V0dGV4dC5oLWZyb20tYnVpbGQtaG9zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWFlNTMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzYvMDAwMS1hdXRvZ2VuLURvLW5vdC1zeW1saW5rLWdldHRleHQuaC1mcm9tLWJ1aWxkLWhvc3QucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAxZWUyYzk5ODkzM2M0YTNkN2U3YjM4NjM1MmNiZGIxMmYyNzA3NzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNiBTZXAgMjAxNyAyMDo1MDo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdXRvZ2VuOiBEbyBub3Qgc3ltbGluayBnZXR0ZXh0LmggZnJvbSBidWlsZCBob3N0CisKK1RoaXMgd2lsbCBjcmVhdGUgYSBkZXBlbmRlbmN5IG9uIGJ1aWxkIGhvc3QgaGF2aW5nIGdldHRleHQKK2luc3RhbGxlZCB3aGljaCBtYXkgbm90IGFsd2F5cyBiZSB0aGUgY2FzZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtDcm9zcy1jb21waWxlIHNwZWNpZmljXQorIGF1dG9nZW4uc2ggfCA2IC0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IDMzNzEwMTEuLmJiYzdhZGQgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtMjUsMTIgKzI1LDYgQEAgZWNobyAiUnVubmluZyBhdXRvcmVjb25mIC4uLiIKKyBhdXRvcmVjb25mIC1zZmkKKyB1bmxpbmsgcG8vTWFrZXZhcnMudGVtcGxhdGUKKyAKKy1mb3IgZCBpbiAvdXNyIC91c3IvbG9jYWwgL29wdC9nZXR0ZXh0IC91c3IvcGtnICRIT01FIDsgZG8KKy0JaWYgdGVzdCAtZiAkZC9zaGFyZS9nZXR0ZXh0L2dldHRleHQuaCA7IHRoZW4KKy0JCWxuIC1zZiAkZC9zaGFyZS9nZXR0ZXh0L2dldHRleHQuaCBpbmNsdWRlL2dldHRleHQuaAorLQlmaQorLWRvbmUKKy0KKyB0ZXN0IC1mICJpbmNsdWRlL2dldHRleHQuaCIgfHwgeworIGVjaG8gIkVycm9yOiBjYW4ndCBmaW5kIDxnZXR0ZXh0Lmg+IGNvbnZlbmllbmNlIEMgaGVhZGVyLiIKKyBlY2hvICJQbGVhc2UgcHV0IGEgbGluayB0byBpdCBieSBoYW5kIGFzIGluY2x1ZGUvZ2V0dGV4dC5oIgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzYvMDAwMS1yZXBsYWNlLVZMQUlTLXdpdGgtbWFsbG9jLWZyZWUtcGFpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDEtcmVwbGFjZS1WTEFJUy13aXRoLW1hbGxvYy1mcmVlLXBhaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM1OGI1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDEtcmVwbGFjZS1WTEFJUy13aXRoLW1hbGxvYy1mcmVlLXBhaXIucGF0Y2gKQEAgLTAsMCArMSwxMjQgQEAKK0Zyb20gM2E3ZDUzOTZlNjMzZTZjMDJhNDU4M2JlN2ZhZjNkNzlkMGQzMzc0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjE0OjQxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSByZXBsYWNlIFZMQUlTIHdpdGggbWFsbG9jL2ZyZWUgcGFpcgorCitNYWtlcyBpdCBjb21wYXRpYmxlIHdpdGggbm9uLWdudSBjb21waWxlcnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvdHJhY2UtaWNtcC5jIHwgIDcgKysrKystLQorIHNyYy90cmFjZS10Y3AuYyAgfCAxNCArKysrKysrKysrLS0tLQorIHNyYy90cmFjZS11ZHAuYyAgfCAgNyArKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RyYWNlLWljbXAuYyBiL3NyYy90cmFjZS1pY21wLmMKK2luZGV4IDg0MjkzOGUuLmM3NmNiNTQgMTAwNjQ0CistLS0gYS9zcmMvdHJhY2UtaWNtcC5jCisrKysgYi9zcmMvdHJhY2UtaWNtcC5jCitAQCAtNDMsMTYgKzQzLDE5IEBAIHNlbmRfZWNob19wcm9iZSAoaW50IGZkLCB1bnNpZ25lZCB0dGwsIHVuc2lnbmVkIG4sIHNpemVfdCBwbGVuLCB1aW50MTZfdCBwb3J0KQorIAlzdHJ1Y3QKKyAJeworIAkJc3RydWN0IGljbXA2X2hkciBpaDsKKy0JCXVpbnQ4X3QgcGF5bG9hZFtwbGVuIC0gc2l6ZW9mIChzdHJ1Y3QgaWNtcDZfaGRyKV07CisrCQl1aW50OF90ICpwYXlsb2FkOworIAl9IHBhY2tldDsKKyAJbWVtc2V0ICgmcGFja2V0LCAwLCBwbGVuKTsKKysJcGFja2V0LnBheWxvYWQgPSBtYWxsb2MocGxlbiAtIHNpemVvZiAoc3RydWN0IGljbXA2X2hkcikpOworIAorIAlwYWNrZXQuaWguaWNtcDZfdHlwZSA9IElDTVA2X0VDSE9fUkVRVUVTVDsKKyAJcGFja2V0LmloLmljbXA2X2lkID0gaHRvbnMgKGdldHBpZCAoKSk7CisgCXBhY2tldC5paC5pY21wNl9zZXEgPSBodG9ucyAoKHR0bCA8PCA4KSB8IChuICYgMHhmZikpOworIAkodm9pZClwb3J0OworIAorLQlyZXR1cm4gc2VuZF9wYXlsb2FkIChmZCwgJnBhY2tldC5paCwgcGxlbiwgdHRsKTsKKysJc3NpemVfdCByZXQgPSBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LmloLCBwbGVuLCB0dGwpOworKwlmcmVlKHBhY2tldC5wYXlsb2FkKTsKKysJcmV0dXJuIHJldDsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvc3JjL3RyYWNlLXRjcC5jIGIvc3JjL3RyYWNlLXRjcC5jCitpbmRleCA5NDBmOTE4Li42MmQyMmZmIDEwMDY0NAorLS0tIGEvc3JjL3RyYWNlLXRjcC5jCisrKysgYi9zcmMvdHJhY2UtdGNwLmMKK0BAIC01NCwxMCArNTQsMTEgQEAgc2VuZF9zeW5fcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJc3RydWN0CisgCXsKKyAJCXN0cnVjdCB0Y3BoZHIgdGg7CistCQl1aW50OF90IHBheWxvYWRbcGxlbiAtIHNpemVvZiAoc3RydWN0IHRjcGhkcildOworKwkJdWludDhfdCAqcGF5bG9hZDsKKyAJfSBwYWNrZXQ7CisgCisgCW1lbXNldCAoJnBhY2tldCwgMCwgc2l6ZW9mIChwYWNrZXQpKTsKKysJcGFja2V0LnBheWxvYWQgPSBtYWxsb2MocGxlbiAtIHNpemVvZiAoc3RydWN0IHRjcGhkcikpOworIAlwYWNrZXQudGgudGhfc3BvcnQgPSBzcG9ydDsKKyAJcGFja2V0LnRoLnRoX2Rwb3J0ID0gcG9ydDsKKyAJcGFja2V0LnRoLnRoX3NlcSA9IGh0b25sICgodHRsIDw8IDI0KSB8IChuIDw8IDE2KSB8ICh1aW50MTZfdClnZXRwaWQgKCkpOworQEAgLTY1LDcgKzY2LDkgQEAgc2VuZF9zeW5fcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJcGFja2V0LnRoLnRoX2ZsYWdzID0gVEhfU1lOIHwgKGVjbiA/IChUSF9FQ0UgfCBUSF9DV1IpIDogMCk7CisgCXBhY2tldC50aC50aF93aW4gPSBodG9ucyAoVENQX1dJTkRPVyk7CisgCistCXJldHVybiBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LCBwbGVuLCB0dGwpOworKwlzc2l6ZV90IHJldCA9IHNlbmRfcGF5bG9hZCAoZmQsICZwYWNrZXQsIHBsZW4sIHR0bCk7CisrCWZyZWUocGFja2V0LnBheWxvYWQpOworKwlyZXR1cm4gcmV0OworIH0KKyAKKyAKK0BAIC0xMzEsMTAgKzEzNCwxMSBAQCBzZW5kX2Fja19wcm9iZSAoaW50IGZkLCB1bnNpZ25lZCB0dGwsIHVuc2lnbmVkIG4sIHNpemVfdCBwbGVuLCB1aW50MTZfdCBwb3J0KQorIAlzdHJ1Y3QKKyAJeworIAkJc3RydWN0IHRjcGhkciB0aDsKKy0JCXVpbnQ4X3QgcGF5bG9hZFtwbGVuIC0gc2l6ZW9mIChzdHJ1Y3QgdGNwaGRyKV07CisrCQl1aW50OF90ICpwYXlsb2FkOworIAl9IHBhY2tldDsKKyAKKyAJbWVtc2V0ICgmcGFja2V0LCAwLCBzaXplb2YgKHBhY2tldCkpOworKwlwYWNrZXQucGF5bG9hZCA9IG1hbGxvYyhwbGVuIC0gc2l6ZW9mIChzdHJ1Y3QgdGNwaGRyKSk7CisgCXBhY2tldC50aC50aF9zcG9ydCA9IHNwb3J0OworIAlwYWNrZXQudGgudGhfZHBvcnQgPSBwb3J0OworIAlwYWNrZXQudGgudGhfYWNrID0gaHRvbmwgKCh0dGwgPDwgMjQpIHwgKG4gPDwgMTYpIHwgKHVpbnQxNl90KWdldHBpZCAoKSk7CitAQCAtMTQyLDcgKzE0Niw5IEBAIHNlbmRfYWNrX3Byb2JlIChpbnQgZmQsIHVuc2lnbmVkIHR0bCwgdW5zaWduZWQgbiwgc2l6ZV90IHBsZW4sIHVpbnQxNl90IHBvcnQpCisgCXBhY2tldC50aC50aF9mbGFncyA9IFRIX0FDSzsKKyAJcGFja2V0LnRoLnRoX3dpbiA9IGh0b25zIChUQ1BfV0lORE9XKTsKKyAKKy0JcmV0dXJuIHNlbmRfcGF5bG9hZCAoZmQsICZwYWNrZXQsIHBsZW4sIHR0bCk7CisrCXNzaXplX3QgcmV0ID0gc2VuZF9wYXlsb2FkIChmZCwgJnBhY2tldCwgcGxlbiwgdHRsKTsKKysJZnJlZShwYWNrZXQucGF5bG9hZCk7CisrCXJldHVybiByZXQ7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3NyYy90cmFjZS11ZHAuYyBiL3NyYy90cmFjZS11ZHAuYworaW5kZXggNGFkZGU2Yi4uYTZjYmIwNyAxMDA2NDQKKy0tLSBhL3NyYy90cmFjZS11ZHAuYworKysrIGIvc3JjL3RyYWNlLXVkcC5jCitAQCAtNDYsOSArNDYsMTAgQEAgc2VuZF91ZHBfcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJc3RydWN0CisgCXsKKyAJCXN0cnVjdCB1ZHBoZHIgdWg7CistCQl1aW50OF90IHBheWxvYWRbcGxlbiAtIHNpemVvZiAoc3RydWN0IHVkcGhkcildOworKwkJdWludDhfdCAqcGF5bG9hZDsKKyAJfSBwYWNrZXQ7CisgCW1lbXNldCAoJnBhY2tldCwgMCwgcGxlbik7CisrCXBhY2tldC5wYXlsb2FkID0gbWFsbG9jKHBsZW4gLSBzaXplb2YgKHN0cnVjdCB1ZHBoZHIpKTsKKyAKKyAJKHZvaWQpbjsKKyAJcGFja2V0LnVoLnVoX3Nwb3J0ID0gc3BvcnQ7CitAQCAtNjEsNyArNjIsOSBAQCBzZW5kX3VkcF9wcm9iZSAoaW50IGZkLCB1bnNpZ25lZCB0dGwsIHVuc2lnbmVkIG4sIHNpemVfdCBwbGVuLCB1aW50MTZfdCBwb3J0KQorIAkvKmlmIChwbGVuID4gc2l6ZW9mIChzdHJ1Y3QgdWRwaGRyKSkKKyAJCXBhY2tldC5wYXlsb2FkWzBdID0gKHVpbnQ4X3QpdHRsOyovCisgCistCXJldHVybiBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LCBwbGVuLCB0dGwpOworKwlzc2l6ZV90IHJldCA9IHNlbmRfcGF5bG9hZCAoZmQsICZwYWNrZXQsIHBsZW4sIHR0bCk7CisrCWZyZWUocGFja2V0LnBheWxvYWQpOworKwlyZXR1cm4gcmV0OworIH0KKyAKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDItRG8tbm90LXVuZGVmLV9HTlVfU09VUkNFLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzYvMDAwMi1Eby1ub3QtdW5kZWYtX0dOVV9TT1VSQ0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjMmJhOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDItRG8tbm90LXVuZGVmLV9HTlVfU09VUkNFLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMmE1MDE1NGZiY2UzOGZkMzZiZTdlMTRmNWNkNGE4YjAzYzY1YzcyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjE1OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgdW5kZWYgX0dOVV9TT1VSQ0UKKworVGhlcmUgYXJlIGZ1bmN0aW9ucyBmcm9tIHRjcC5oIHdoaWNoIGFyZSB1bmRlciBfR05VX1NPVVJDRQoraW4gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy90cmFjZS10Y3AuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdHJhY2UtdGNwLmMgYi9zcmMvdHJhY2UtdGNwLmMKK2luZGV4IDYyZDIyZmYuLjM4MDAwOGUgMTAwNjQ0CistLS0gYS9zcmMvdHJhY2UtdGNwLmMKKysrKyBiL3NyYy90cmFjZS10Y3AuYworQEAgLTIxLDcgKzIxLDYgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSN1bmRlZiBfR05VX1NPVVJDRQorICNkZWZpbmUgX0RFRkFVTFRfU09VUkNFIDEKKyAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2XzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWE1ZTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2XzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHNvbWUgdXNlZnVsIGRpYWdub3N0aWNzIHRvb2xzIGZvciBcCi1JUHY2IG5ldHdvcmtzLCBpbmNsdWRpbmcgbmRpc2M2LCByZGlzYzYsIHRjcHRyYWNlcm91dGU2IGFuZCB0cmFjZXJvdXRlNi4iCi1TRUNUSU9OID0gIm5ldCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucmVtbGFiLm5ldC9uZGlzYzYvIgotTElDRU5TRSA9ICJHUEwtMi4wIgotCi0jIFRoZSB0Y3B0cmFjZXJvdXRlNiBhbmQgdHJhY2VydDYgY29tbWFuZHMgZGVwZW5kIG9uIHJsdHJhY2Vyb3V0ZTYgdG8KLSMgcGVyZm9ybSB0aGUgYWN0dWFsIHRyYWNlIG9wZXJhdGlvbi4KLVJERVBFTkRTXyR7UE59LXRjcHRyYWNlcm91dGU2ID0gIiR7UE59LXJsdHJhY2Vyb3V0ZTYiCi1SREVQRU5EU18ke1BOfS10cmFjZXJ0NiA9ICIke1BOfS1ybHRyYWNlcm91dGU2IgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnJlbWxhYi5uZXQvZmlsZXMvbmRpc2M2L25kaXNjNi0ke1BWfS50YXIuYnoyIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MGNiNGMxOTYwNmNmNmZmMmI3Mzg4ZTcxODMyZjU3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YWNlYzhhMGNiOWVmYTNhYzk4NDU2ZjQ2YzMwMTZhZWVjMDU5OGIwYzc1NTdjOTUyNDJiNTIyOGFkNjJjYTdhIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi0jIFNwbGl0IGludG8gc2VwZXJhdGUgcGFja2FnZXMgc2luY2Ugd2Ugbm9ybWFsIGRvbid0IHdhbnQgdGhlbSBhbGwKLSMgVGhlIG1haW4gcGFja2FnZSBpcyBsZWZ0IGVtcHR5IGFuZCB0aGVyZWZvcmUgbm90IGNyZWF0ZWQuCi1QQUNLQUdFUyArPSAiJHtQTn0tbmRpc2M2ICR7UE59LXRjcHNwcmF5NiAke1BOfS1yZGlzYzYgXAotICAgICR7UE59LXRjcHRyYWNlcm91dGU2ICR7UE59LXJsdHJhY2Vyb3V0ZTYgXAotICAgICR7UE59LXRyYWNlcnQ2ICR7UE59LXJkbnNzZCAke1BOfS1taXNjIgotRklMRVNfJHtQTn0gICAgICAgICAgICA9ICIiCi1GSUxFU18ke1BOfS1uZGlzYzYgICAgICAgID0gIiR7YmluZGlyfS9uZGlzYzYiCi1GSUxFU18ke1BOfS10Y3BzcHJheTYgICAgICAgICA9ICIke2JpbmRpcn0vdGNwc3ByYXk2IgotRklMRVNfJHtQTn0tcmRpc2M2ICAgICAgICA9ICIke2JpbmRpcn0vcmRpc2M2IgotRklMRVNfJHtQTn0tdGNwdHJhY2Vyb3V0ZTYgICAgPSAiJHtiaW5kaXJ9L3RjcHRyYWNlcm91dGU2IgotRklMRVNfJHtQTn0tcmx0cmFjZXJvdXRlNiAgICA9ICIke2JpbmRpcn0vcmx0cmFjZXJvdXRlNiIKLUZJTEVTXyR7UE59LXRyYWNlcnQ2ICAgICAgICA9ICIke2JpbmRpcn0vdHJhY2VydDYiCi1GSUxFU18ke1BOfS1yZG5zc2QgICAgICAgID0gIiR7c2JpbmRpcn0vcmRuc3NkICR7c3lzY29uZmRpcn0vcmRuc3NkIgotRklMRVNfJHtQTn0tbWlzYyAgICAgICAgICAgICAgICA9ICIke2JpbmRpcn0vZG5zc29ydCAke2JpbmRpcn0vbmFtZTJhZGRyICR7YmluZGlyfS90Y3BzcHJheSAke2JpbmRpcn0vYWRkcjJuYW1lIgotCi1ERVNDUklQVElPTl8ke1BOfS1uZGlzYzYgICAgPSAiSUNNUHY2IE5laWdoYm9yIERpc2NvdmVyeSB0b29sLiBcCi1QZXJmb3JtcyBJUHY2IG5laWdoYm9yIGRpc2NvdmVyeSBpbiB1c2VybGFuZC4gUmVwbGFjZXMgYXJwaW5nIGZyb20gdGhlIFwKLUlQdjQgd29ybGQuIgotREVTQ1JJUFRJT05fJHtQTn0tcmRpc2M2ICAgID0gIklDTVB2NiBSb3V0ZXIgRGlzY292ZXJ5IHRvb2wuIFwKLVF1ZXJpZXMgSVB2NiByb3V0ZXJzIG9uIHRoZSBuZXR3b3JrIGZvciBhZHZlcnRpc2VkIHByZWZpeGVzLiBDYW4gYmUgdXNlZCBcCi10byBkZXRlY3Qgcm9ndWUgSVB2NiByb3V0ZXJzLCBtb25pdG9yIGxlZ2l0aW1hdGUgSVB2NiByb3V0ZXJzLiIKLURFU0NSSVRQSU9OXyR7UE59LXRjcHNwcmF5NiAgICA9ICJQZXJmb3JtcyBiYW5kd2lkdGggbWVhc3VyZW1lbnRzIG9mIFRDUCBcCi1zZXNzaW9ucyBiZXR3ZWVuIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGEgcmVtb3RlIGVjaG8gc2VydmVyIGluIGVpdGhlciBJUHY2IFwKLW9yIElQdjQuIgotCi1ERVNDUklUUElPTl8ke1BOfS1yZG5zc2QgICAgICAgPSAiRGFlbW9uIHRvIGF1dG9jb25maWd1cmUgdGhlIGxpc3Qgb2YgRE5TIFwKLXNlcnZlcnMgdGhyb3VnaCBzbGF0ZWxlc3MgSVB2NiBhdXRvY29uZmlndXJhdGlvbi4iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLSAgICAjIEVuYWJsZSBTVUlEIGJpdCBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZCBpdAotICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9ybHRyYWNlcm91dGU2Ci0gICAgY2htb2QgNDU1NSAke0R9JHtiaW5kaXJ9L25kaXNjNgotICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9yZGlzYzYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGE4M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiCkBAIC0wLDAgKzEsNzIgQEAKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpbmNsdWRlcyBzb21lIHVzZWZ1bCBkaWFnbm9zdGljcyB0b29scyBmb3IgXAorSVB2NiBuZXR3b3JrcywgaW5jbHVkaW5nIG5kaXNjNiwgcmRpc2M2LCB0Y3B0cmFjZXJvdXRlNiBhbmQgdHJhY2Vyb3V0ZTYuIgorU0VDVElPTiA9ICJuZXQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnJlbWxhYi5uZXQvbmRpc2M2LyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitQViA9ICIxLjAuNCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0Yzc5NGI1NTEyZDIzYzY0OWRlZjFmOTRhNjg0MjI1ZGNiYjZhYzNlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQucmVtbGFiLm5ldC9naXQvbmRpc2M2LmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1WTEFJUy13aXRoLW1hbGxvYy1mcmVlLXBhaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdW5kZWYtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvZ2VuLURvLW5vdC1zeW1saW5rLWdldHRleHQuaC1mcm9tLWJ1aWxkLWhvc3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GICs9ICJQRVJMPSR7VVNSQklOUEFUSH0vcGVybCIKKworTERGTEFHUyArPSAiLWZ1c2UtbGQ9Z29sZCIKK1RPT0xDSEFJTiA9ICJnY2MiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9nZXR0ZXh0LmggJHtTfS9pbmNsdWRlCisgICAgJHtTfS9hdXRvZ2VuLnNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKyAgICAjIEVuYWJsZSBTVUlEIGJpdCBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZCBpdAorICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9ybHRyYWNlcm91dGU2CisgICAgY2htb2QgNDU1NSAke0R9JHtiaW5kaXJ9L25kaXNjNgorICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9yZGlzYzYKK30KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKKyMgU3BsaXQgaW50byBzZXBlcmF0ZSBwYWNrYWdlcyBzaW5jZSB3ZSBub3JtYWwgZG9uJ3Qgd2FudCB0aGVtIGFsbAorIyBUaGUgbWFpbiBwYWNrYWdlIGlzIGxlZnQgZW1wdHkgYW5kIHRoZXJlZm9yZSBub3QgY3JlYXRlZC4KK1BBQ0tBR0VTICs9ICIke1BOfS1uZGlzYzYgJHtQTn0tdGNwc3ByYXk2ICR7UE59LXJkaXNjNiBcCisgICAgJHtQTn0tdGNwdHJhY2Vyb3V0ZTYgJHtQTn0tcmx0cmFjZXJvdXRlNiBcCisgICAgJHtQTn0tdHJhY2VydDYgJHtQTn0tcmRuc3NkICR7UE59LW1pc2MiCitGSUxFU18ke1BOfSAgICAgICAgICAgID0gIiIKK0ZJTEVTXyR7UE59LW5kaXNjNiAgICAgICAgPSAiJHtiaW5kaXJ9L25kaXNjNiIKK0ZJTEVTXyR7UE59LXRjcHNwcmF5NiAgICAgICAgID0gIiR7YmluZGlyfS90Y3BzcHJheTYiCitGSUxFU18ke1BOfS1yZGlzYzYgICAgICAgID0gIiR7YmluZGlyfS9yZGlzYzYiCitGSUxFU18ke1BOfS10Y3B0cmFjZXJvdXRlNiAgICA9ICIke2JpbmRpcn0vdGNwdHJhY2Vyb3V0ZTYiCitGSUxFU18ke1BOfS1ybHRyYWNlcm91dGU2ICAgID0gIiR7YmluZGlyfS9ybHRyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tdHJhY2VydDYgICAgICAgID0gIiR7YmluZGlyfS90cmFjZXJ0NiIKK0ZJTEVTXyR7UE59LXJkbnNzZCAgICAgICAgPSAiJHtzYmluZGlyfS9yZG5zc2QgJHtzeXNjb25mZGlyfS9yZG5zc2QiCitGSUxFU18ke1BOfS1taXNjICAgICAgICAgICAgICAgID0gIiR7YmluZGlyfS9kbnNzb3J0ICR7YmluZGlyfS9uYW1lMmFkZHIgJHtiaW5kaXJ9L3RjcHNwcmF5ICR7YmluZGlyfS9hZGRyMm5hbWUiCisKK0RFU0NSSVBUSU9OXyR7UE59LW5kaXNjNiAgICA9ICJJQ01QdjYgTmVpZ2hib3IgRGlzY292ZXJ5IHRvb2wuIFwKK1BlcmZvcm1zIElQdjYgbmVpZ2hib3IgZGlzY292ZXJ5IGluIHVzZXJsYW5kLiBSZXBsYWNlcyBhcnBpbmcgZnJvbSB0aGUgXAorSVB2NCB3b3JsZC4iCitERVNDUklQVElPTl8ke1BOfS1yZGlzYzYgICAgPSAiSUNNUHY2IFJvdXRlciBEaXNjb3ZlcnkgdG9vbC4gXAorUXVlcmllcyBJUHY2IHJvdXRlcnMgb24gdGhlIG5ldHdvcmsgZm9yIGFkdmVydGlzZWQgcHJlZml4ZXMuIENhbiBiZSB1c2VkIFwKK3RvIGRldGVjdCByb2d1ZSBJUHY2IHJvdXRlcnMsIG1vbml0b3IgbGVnaXRpbWF0ZSBJUHY2IHJvdXRlcnMuIgorREVTQ1JJVFBJT05fJHtQTn0tdGNwc3ByYXk2ICAgID0gIlBlcmZvcm1zIGJhbmR3aWR0aCBtZWFzdXJlbWVudHMgb2YgVENQIFwKK3Nlc3Npb25zIGJldHdlZW4gdGhlIGxvY2FsIHN5c3RlbSBhbmQgYSByZW1vdGUgZWNobyBzZXJ2ZXIgaW4gZWl0aGVyIElQdjYgXAorb3IgSVB2NC4iCisKK0RFU0NSSVRQSU9OXyR7UE59LXJkbnNzZCAgICAgICA9ICJEYWVtb24gdG8gYXV0b2NvbmZpZ3VyZSB0aGUgbGlzdCBvZiBETlMgXAorc2VydmVycyB0aHJvdWdoIHNsYXRlbGVzcyBJUHY2IGF1dG9jb25maWd1cmF0aW9uLiIKKworIyBUaGUgdGNwdHJhY2Vyb3V0ZTYgYW5kIHRyYWNlcnQ2IGNvbW1hbmRzIGRlcGVuZCBvbiBybHRyYWNlcm91dGU2IHRvCisjIHBlcmZvcm0gdGhlIGFjdHVhbCB0cmFjZSBvcGVyYXRpb24uCitSREVQRU5EU18ke1BOfS10Y3B0cmFjZXJvdXRlNiA9ICIke1BOfS1ybHRyYWNlcm91dGU2IgorUkRFUEVORFNfJHtQTn0tdHJhY2VydDYgPSAiJHtQTn0tcmx0cmFjZXJvdXRlNiIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInBlcmwiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTZmNjBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAibmV0Y2YiCitERVNDUklQVElPTiA9ICJuZXRjZiBpcyBhIGNyb3NzLXBsYXRmb3JtIG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL25ldGNmIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI5MTljYzg4ZGJlMDZlYzBiMGJkNTBlMDAxY2NmMWYiCisKK1NSQ1JFViA9ICIyYzVkNDI1NTg1NzUzMWJjMDlkOTFkY2QwMmU4NjU0NWYyOTAwNGQ0IgorUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9wYWd1cmUuaW8vbmV0Y2YuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyIKKworREVQRU5EUyArPSAiYXVnZWFzIGxpYm5sIGxpYnhzbHQgbGlieG1sMiBnbnVsaWIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0td2l0aC1kcml2ZXI9cmVkaGF0IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c2luaXQ9c3lzdGVtZCwtLXdpdGgtc3lzaW5pdD1pbml0c2NyaXB0cywiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ251bGliL200IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBjdXJyZGlyPWBwd2RgCisgICAgY2QgJHtTfQorCisgICAgIyBhdm9pZCBib290c3RyYXAgY2xvbmluZyBnbnVsaWIgb24gZXZlcnkgY29uZmlndXJlCisgICAgIyB0aGUgZGlyIHN0YXJ0cyBvdXQgZW1wdHkgZnJvbSB0aGUgcGtnLCBidXQgdW5jb25kaXRpb25hbGx5IGJsb3cgaXQKKyAgICAjIGF3YXkgc28gaWYgd2UgcmVjb25maWd1cmUgZHVlIHRvIGdudWxpYiBzeXNyb290IHNpZyBjaGFuZ2VzLCB3ZSB3aWxsCisgICAgIyBnZXQgdGhlIG5ld2VyIGdudWxpYiBjb250ZW50IGludG8gdGhlIGJ1aWxkIGhlcmUuCisgICAgcm0gLXJmICR7U30vLmdudWxpYgorICAgIGNwIC1yZiAke1NUQUdJTkdfREFUQURJUn0vZ251bGliICR7U30vLmdudWxpYgorCisgICAgIyAtLWZvcmNlIHRvIGF2b2lkIGVycm9ycyBvbiByZWNvbmZpZ3VyZSBlLmcgaWYgcmVjaXBlcyBjaGFuZ2VkIHdlIGRlcGVuZCBvbgorICAgICMgfCBib290c3RyYXA6IHJ1bm5pbmc6IGxpYnRvb2xpemUgLS1xdWlldAorICAgICMgfCBsaWJ0b29saXplOiAgIGVycm9yOiAnbGlibHRkbC9DT1BZSU5HLkxJQicgZXhpc3RzOiB1c2UgJy0tZm9yY2UnIHRvIG92ZXJ3cml0ZQorICAgICMgfCAuLi4KKyAgICAuL2Jvb3RzdHJhcCAtLWZvcmNlIC0tbm8tZ2l0IC0tZ251bGliLXNyY2Rpcj0uZ251bGliCisKKyAgICBjZCAkY3VycmRpcgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICBpZiBbIC1kICIke0R9JHtsaWJkaXJ9L3N5c3RlbWQvc3lzdGVtIiBdOyB0aGVuCisgICAgICAgICAgIGlmIFsgIiR7c3lzdGVtZF91bml0ZGlyfSIgIT0gIiR7bGliZGlyfS9zeXN0ZW1kIiBdIDsgdGhlbiAKKyAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0vKiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgICAgICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvCisJICAgZmkKKyAgICAgICBlbGlmIFsgIiR7c3lzdGVtZF91bml0ZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQiIF0gOyB0aGVuIAorICAgICAgICAgICBtdiAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0vKiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgICAgcm0gLXJmICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kLworICAgICAgIGZpCisgICAgZWxzZQorICAgICAgIG12ICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQvaW5pdC5kLyAke0R9JHtzeXNjb25mZGlyfQorICAgICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kLworICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICAgICAke2xpYmRpcn0gXAorICAgICAgICAke25vbmFyY2hfbGliZGlyfSBcCisgICAgICAgICIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5ldGNmLXRyYW5zYWN0aW9uLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhNTAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJuZXRjZiIKLURFU0NSSVBUSU9OID0gIm5ldGNmIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL25ldGNmLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIgotCi1TUkNSRVYgPSAiOTE1ODI3OGFkMzViNDZjZTlhNDliMmU4ODc0ODNjNmQ4YzI4Nzk5NCIKLVBWID0gIjAuMi44K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5mZWRvcmFob3N0ZWQub3JnL25ldGNmLmdpdDtwcm90b2NvbD1naXQgXAotIgotCi1ERVBFTkRTICs9ICJhdWdlYXMgbGlibmwgbGlieHNsdCBsaWJ4bWwyIGdudWxpYiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS13aXRoLWRyaXZlcj1yZWRoYXQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzaW5pdD1zeXN0ZW1kLC0td2l0aC1zeXNpbml0PWluaXRzY3JpcHRzLCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgY3VycmRpcj1gcHdkYAotICAgIGNkICR7U30KLQotICAgICMgYXZvaWQgYm9vdHN0cmFwIGNsb25pbmcgZ251bGliIG9uIGV2ZXJ5IGNvbmZpZ3VyZQotICAgICMgdGhlIGRpciBzdGFydHMgb3V0IGVtcHR5IGZyb20gdGhlIHBrZywgYnV0IHVuY29uZGl0aW9uYWxseSBibG93IGl0Ci0gICAgIyBhd2F5IHNvIGlmIHdlIHJlY29uZmlndXJlIGR1ZSB0byBnbnVsaWIgc3lzcm9vdCBzaWcgY2hhbmdlcywgd2Ugd2lsbAotICAgICMgZ2V0IHRoZSBuZXdlciBnbnVsaWIgY29udGVudCBpbnRvIHRoZSBidWlsZCBoZXJlLgotICAgIHJtIC1yZiAke1N9Ly5nbnVsaWIKLSAgICBjcCAtcmYgJHtTVEFHSU5HX0RBVEFESVJ9L2dudWxpYiAke1N9Ly5nbnVsaWIKLQotICAgICMgLS1mb3JjZSB0byBhdm9pZCBlcnJvcnMgb24gcmVjb25maWd1cmUgZS5nIGlmIHJlY2lwZXMgY2hhbmdlZCB3ZSBkZXBlbmQgb24KLSAgICAjIHwgYm9vdHN0cmFwOiBydW5uaW5nOiBsaWJ0b29saXplIC0tcXVpZXQKLSAgICAjIHwgbGlidG9vbGl6ZTogICBlcnJvcjogJ2xpYmx0ZGwvQ09QWUlORy5MSUInIGV4aXN0czogdXNlICctLWZvcmNlJyB0byBvdmVyd3JpdGUKLSAgICAjIHwgLi4uCi0gICAgLi9ib290c3RyYXAgLS1mb3JjZSAtLW5vLWdpdCAtLWdudWxpYi1zcmNkaXI9LmdudWxpYgotCi0gICAgY2QgJGN1cnJkaXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgaWYgWyAtZCAiJHtEfSR7bGliZGlyfS9zeXN0ZW1kL3N5c3RlbSIgXTsgdGhlbgotICAgICAgICAgICBpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIke2xpYmRpcn0vc3lzdGVtZCIgXSA7IHRoZW4gCi0gICAgICAgICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvc3lzdGVtLyogJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgICAgICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9zeXN0ZW1kLwotCSAgIGZpCi0gICAgICAgZWxpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kIiBdIDsgdGhlbiAKLSAgICAgICAgICAgbXYgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvc3lzdGVtLyogJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgICAgIHJtIC1yZiAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC8KLSAgICAgICBmaQotICAgIGVsc2UKLSAgICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9yYy5kL2luaXQuZC8gJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC8KLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAgICAgJHtsaWJkaXJ9IFwKLSAgICAgICAgJHtub25hcmNoX2xpYmRpcn0gXAotICAgICAgICAiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZXRjZi10cmFuc2FjdGlvbi5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfMi42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGZkYWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl8yLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBuZXR3b3JraW5nIGJlbmNobWFya2luZyB0b29sIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBwZXJmb3JtYW5jZSBiZW5jaG1hcmsgaW5jbHVkaW5nIHRlc3RzIGZvciBUQ1AsIFVEUCwgc29ja2V0cywgQVRNIGFuZCBtb3JlLiIKLVNFQ1RJT04gPSAibmV0IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRwZXJmLm9yZy8iCi1MSUNFTlNFID0gIm5ldHBlcmYiCi1MSUNFTlNFX0ZMQUdTID0gIm5vbi1jb21tZXJjaWFsIgotCi0KLVNSQ19VUkk9ImZ0cDovL2Z0cC5uZXRwZXJmLm9yZy9uZXRwZXJmL2FyY2hpdmUvbmV0cGVyZi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgIGZpbGU6Ly9jcHVfc2V0LnBhdGNoIFwKLSAgICAgICAgIGZpbGU6Ly92Zm9yay5wYXRjaCBcCi0gICAgICAgICBmaWxlOi8vaW5pdCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjU0ZmZkZmQ0YzRmMmM5M2NlMzczM2NkOWVkOTIzNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDhkYWM3MTBkNDI3M2QyOWY3MGU4ZGJkMDkzNTNhNjM2MmFjNThhMTE5MjZlMDgyMjIzM2MwY2IyMzAzMjNhIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMGFiMTcyNTNlN2EzZjMxOGRhODUzODJjN2Q1ZDVkNiIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBhdXRvdG9vbHMKLQotUyA9ICIke1dPUktESVJ9L25ldHBlcmYtJHtQVn0iCi0KLSMgY3B1X3NldC5wYXRjaCBwbHVzIF9HTlVfU09VUkNFIG1ha2VzIHNyYy9uZXRsaWIuYyBjb21waWxlIHdpdGggQ1BVXyBtYWNyb3MKLUNGTEFHU19hcHBlbmQgPSAiIC1ERE9fVU5JWCAtRERPX0lQVjYgLURfR05VX1NPVVJDRSIKLQotIyBzZXQgdGhlICJfRklMRV9PRkZTRVRfQklUUyIgcHJlcHJvY2Vzc29yIHN5bWJvbCB0byA2NCB0byBzdXBwb3J0IGZpbGVzCi0jIGxhcmdlciB0aGFuIDJHQgotQ0ZMQUdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIFwKLSAgICAnIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzY3RwXSA9ICItLWVuYWJsZS1zY3RwLC0tZGlzYWJsZS1zY3RwLGxrc2N0cC10b29scywiCi0KLSMgYXV0b3Rvb2xzLmJiY2xhc3MgYXR0ZW5kcyB0byBpbmNsdWRlIG00IGZpbGVzIHdpdGggcGF0aCBkZXB0aCA8PSAyIGJ5Ci0jICJmaW5kICR7U30gLW1heGRlcHRoIDIgLW5hbWUgXCoubTQiLCBzbyBtb3ZlIG00IGZpbGVzIGZyb20gbTQvbTQuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICB0ZXN0IC1kICR7U30vbTQvbTQgJiYgbXYgLWYgJHtTfS9tNC9tNCAke1N9L200LWZpbGVzCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgc2VkIC1lICdzIy91c3Ivc2Jpbi8jJHtzYmluZGlyfS8jZycgLWkgJHtXT1JLRElSfS9pbml0Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9ICR7RH0ke2JpbmRpcn0gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA0NzU1IHNyYy9uZXRwZXJmICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDQ3NTUgc3JjL25ldHNlcnZlciAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25ldHBlcmYKLQotICAgICMgbWFuCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL25ldHNlcnZlci5tYW4gJHtEfSR7bWFuZGlyfS9tYW4xL25ldHNlcnZlci4xCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL25ldHBlcmYubWFuICR7RH0ke21hbmRpcn0vbWFuMS9uZXRwZXJmLjEKLQotICAgICMgbW92ZSBzY3JpcHRzIHRvIGV4YW1wbGVzIGRpcmVjdG9yeQotICAgIGluc3RhbGwgLWQgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmL2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL2V4YW1wbGVzLypfc2NyaXB0ICR7RH0ke2RvY2Rpcn0vbmV0cGVyZi9leGFtcGxlcy8KLQotICAgICMgZG9jcyAuLgotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L0NPUFlJTkcgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vUmVsZWFzZV9Ob3RlcyAke0R9JHtkb2NkaXJ9L25ldHBlcmYKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9SRUFETUUgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL25ldHBlcmZfb2xkLnBzICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgotfQotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2N0cCcsICdrZXJuZWwtbW9kdWxlLXNjdHAnLCAnJywgZCl9IgotCi1JTklUU0NSSVBUX05BTUU9Im5ldHBlcmYiCi1JTklUU0NSSVBUX1BBUkFNUz0iZGVmYXVsdHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZTBmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIkEgbmV0d29ya2luZyBiZW5jaG1hcmtpbmcgdG9vbCIKK0RFU0NSSVBUSU9OID0gIk5ldHdvcmsgcGVyZm9ybWFuY2UgYmVuY2htYXJrIGluY2x1ZGluZyB0ZXN0cyBmb3IgVENQLCBVRFAsIHNvY2tldHMsIEFUTSBhbmQgbW9yZS4iCitTRUNUSU9OID0gIm5ldCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0cGVyZi5vcmcvIgorTElDRU5TRSA9ICJuZXRwZXJmIgorTElDRU5TRV9GTEFHUyA9ICJub24tY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEwYWIxNzI1M2U3YTNmMzE4ZGE4NTM4MmM3ZDVkNWQ2IgorCitQViA9ICIyLjcuMCtnaXQke1NSQ1BWfSIKKworU1JDX1VSST0iZ2l0Oi8vZ2l0aHViLmNvbS9IZXdsZXR0UGFja2FyZC9uZXRwZXJmLmdpdCBcCisgICAgICAgICBmaWxlOi8vY3B1X3NldC5wYXRjaCBcCisgICAgICAgICBmaWxlOi8vdmZvcmsucGF0Y2ggXAorICAgICAgICAgZmlsZTovL2luaXQiCisKK1NSQ1JFViA9ICJmNDgyYmFiNDlmY2VkZWU0NmZjNWI3NTVkYTEyN2Y2MDgzMjVjZDEzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHVwZGF0ZS1yYy5kIGF1dG90b29scworCisjIGNwdV9zZXQucGF0Y2ggcGx1cyBfR05VX1NPVVJDRSBtYWtlcyBzcmMvbmV0bGliLmMgY29tcGlsZSB3aXRoIENQVV8gbWFjcm9zCitDRkxBR1NfYXBwZW5kID0gIiAtRERPX1VOSVggLURET19JUFY2IC1EX0dOVV9TT1VSQ0UiCisKKyMgc2V0IHRoZSAiX0ZJTEVfT0ZGU0VUX0JJVFMiIHByZXByb2Nlc3NvciBzeW1ib2wgdG8gNjQgdG8gc3VwcG9ydCBmaWxlcworIyBsYXJnZXIgdGhhbiAyR0IKK0NGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCBcCisgICAgJyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0JywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbc2N0cF0gPSAiLS1lbmFibGUtc2N0cCwtLWRpc2FibGUtc2N0cCxsa3NjdHAtdG9vbHMsIgorCisjIGF1dG90b29scy5iYmNsYXNzIGF0dGVuZHMgdG8gaW5jbHVkZSBtNCBmaWxlcyB3aXRoIHBhdGggZGVwdGggPD0gMiBieQorIyAiZmluZCAke1N9IC1tYXhkZXB0aCAyIC1uYW1lIFwqLm00Iiwgc28gbW92ZSBtNCBmaWxlcyBmcm9tIG00L200LgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgdGVzdCAtZCAke1N9L200L200ICYmIG12IC1mICR7U30vbTQvbTQgJHtTfS9tNC1maWxlcworfQorCitkb19pbnN0YWxsKCkgeworICAgIHNlZCAtZSAncyMvdXNyL3NiaW4vIyR7c2JpbmRpcn0vI2cnIC1pICR7V09SS0RJUn0vaW5pdAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSAke0R9JHtiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gNDc1NSBzcmMvbmV0cGVyZiAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA0NzU1IHNyYy9uZXRzZXJ2ZXIgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXRwZXJmCisKKyAgICAjIG1hbgorICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRzZXJ2ZXIubWFuICR7RH0ke21hbmRpcn0vbWFuMS9uZXRzZXJ2ZXIuMQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRwZXJmLm1hbiAke0R9JHttYW5kaXJ9L21hbjEvbmV0cGVyZi4xCisKKyAgICAjIG1vdmUgc2NyaXB0cyB0byBleGFtcGxlcyBkaXJlY3RvcnkKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vbmV0cGVyZi9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9leGFtcGxlcy8qX3NjcmlwdCAke0R9JHtkb2NkaXJ9L25ldHBlcmYvZXhhbXBsZXMvCisKKyAgICAjIGRvY3MgLi4KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9DT1BZSU5HICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L1JlbGVhc2VfTm90ZXMgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vUkVBRE1FICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRwZXJmX29sZC5wcyAke0R9JHtkb2NkaXJ9L25ldHBlcmYKK30KKworUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjdHAnLCAna2VybmVsLW1vZHVsZS1zY3RwJywgJycsIGQpfSIKKworSU5JVFNDUklQVF9OQU1FPSJuZXRwZXJmIgorSU5JVFNDUklQVF9QQVJBTVM9ImRlZmF1bHRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAxLWxpYi15cF9hbGxfaG9zdC5jLUZpeC1idWlsZC13aXRoLWdjYy03LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAxLWxpYi15cF9hbGxfaG9zdC5jLUZpeC1idWlsZC13aXRoLWdjYy03LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWQ1ZjljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS1saWIteXBfYWxsX2hvc3QuYy1GaXgtYnVpbGQtd2l0aC1nY2MtNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNzFmZGZkZmNlYTJiZmE1ZjUyMjUxMjM2NmJmY2RmOTVmODYxZWNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDIzIEFwciAyMDE3IDIzOjQ0OjM3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYi95cF9hbGxfaG9zdC5jOiBGaXggYnVpbGQgd2l0aCBnY2MgNwotCi1maXhlcwotCi18IC4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3lwLXRvb2xzL2xpYi95cF9hbGxfaG9zdC5jOiBJbiBmdW5jdGlvbiAneXBfYWxsX2hvc3QnOgotfCAuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy95cC10b29scy9saWIveXBfYWxsX2hvc3QuYzoxMDk6MzA6IGVycm9yOiBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyBjaGFyYWN0ZXIgY29uc3RhbnQgWy1XZXJyb3I9cG9pbnRlci1jb21wYXJlXQotfCAgICAgICAgaW5tYXAgPT0gTlVMTCB8fCBpbm1hcCA9PSAnXDAnKQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliL3lwX2FsbF9ob3N0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIveXBfYWxsX2hvc3QuYyBiL2xpYi95cF9hbGxfaG9zdC5jCi1pbmRleCA1OWNmMjM2Li40YTA3YTdlIDEwMDY0NAotLS0tIGEvbGliL3lwX2FsbF9ob3N0LmMKLSsrKyBiL2xpYi95cF9hbGxfaG9zdC5jCi1AQCAtMTA2LDcgKzEwNiw3IEBAIHlwX2FsbF9ob3N0IChjb25zdCBjaGFyICppbmRvbWFpbiwgY29uc3QgY2hhciAqaW5tYXAsCi0gCi0gICBpZiAoaG9zdG5hbWUgPT0gTlVMTCB8fCBob3N0bmFtZVswXSA9PSAnXDAnIHx8Ci0gICAgICAgaW5kb21haW4gPT0gTlVMTCB8fCBpbmRvbWFpblswXSA9PSAnXDAnIHx8Ci0tICAgICAgaW5tYXAgPT0gTlVMTCB8fCBpbm1hcCA9PSAnXDAnKQotKyAgICAgIGlubWFwID09IE5VTEwgfHwgaW5tYXBbMF0gPT0gJ1wwJykKLSAgICAgcmV0dXJuIFlQRVJSX0JBREFSR1M7Ci0gCi0gICByZXMgPSBZUEVSUl9ZUEVSUjsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAxLXlwYmluZDNfYmluZGluZ19kdXAuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1zdHJkdXAtZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q0ZDRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNDIwY2I2OTI3NTUzYmJjYTViNDliNzY4MWNmMjA4ZTZkZjZlNGQ3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMDg6NDI6NDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHlwYmluZDNfYmluZGluZ19kdXAuYzogSW5jbHVkZSBzdHJpbmcuaCBmb3Igc3RyZHVwCisgZGVjbGFyYXRpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGxpYi95cGJpbmQzX2JpbmRpbmdfZHVwLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYi95cGJpbmQzX2JpbmRpbmdfZHVwLmMgYi9saWIveXBiaW5kM19iaW5kaW5nX2R1cC5jCitpbmRleCBjZTRhYWRmLi44MTk5YzBiIDEwMDY0NAorLS0tIGEvbGliL3lwYmluZDNfYmluZGluZ19kdXAuYworKysrIGIvbGliL3lwYmluZDNfYmluZGluZ19kdXAuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAKKyAjaWYgZGVmaW5lZChIQVZFX1lQQklORDMpCisgCisrI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxycGNzdmMveXBfcHJvdC5oPgorICNpbmNsdWRlICJpbnRlcm5hbC5oIgorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAyLXlwX2R1bXBfYmluZGluZ3MuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1tZW1zZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDIteXBfZHVtcF9iaW5kaW5ncy5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLW1lbXNldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTYyZTU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAyLXlwX2R1bXBfYmluZGluZ3MuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1tZW1zZXQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAwM2NjYWJiNjI2NGMwMDg0MzBjNGIxNzM5MzUxZGY1YTYzODI5ZjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOCBTZXAgMjAxNyAwODo1MjozMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0geXBfZHVtcF9iaW5kaW5ncy5jOiBJbmNsdWRlIHN0cmluZy5oIGZvciBtZW1zZXQKKworRml4ZXMKK2Vycm9yOiBpbXBsaWNpdGx5IGRlY2xhcmluZyBsaWJyYXJ5IGZ1bmN0aW9uICdtZW1zZXQnCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMveXBfZHVtcF9iaW5kaW5nLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy95cF9kdW1wX2JpbmRpbmcuYyBiL3NyYy95cF9kdW1wX2JpbmRpbmcuYworaW5kZXggYTVhYjkyMC4uZDc1ZTJjMiAxMDA2NDQKKy0tLSBhL3NyYy95cF9kdW1wX2JpbmRpbmcuYworKysrIGIvc3JjL3lwX2R1bXBfYmluZGluZy5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxycGNzdmMveXBjbG50Lmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzL2FsaWdubWVudC1jaGVhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvYWxpZ25tZW50LWNoZWF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTliNjJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvYWxpZ25tZW50LWNoZWF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAoteXAtdG9vbHM6IGF2b2lkIGZhdGFsIGNhc3Qgd2FybmluZwotCi1UaGUgd2F5IGNhc3RpbmcgaXMgZG9uZSwgd2Ugd2lsbCBnZXQgYSBmYXRhbCBhbGlnbm1lbnQgd2FybmluZyBvbiBzb21lCi1hcmNoaXRlY3R1cmVzLiAgVGhpcyBwYXRjaCBjaGVhdHMgb3VyIHdheSBhcm91bmQgdGhpcy4KLQotV2UgYWxzbyBlbGltaW5hdGUgYW4gdW51c2VkIGNvbnN0YW50IHdoaWNoIGNhdXNlcyBhIGZhdGFsIHdhcm5pbmcuCi0KLVVwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29kZSBkb2VzIG5vdCBleGlzdCBpbiB2ZXJzaW9uIDQueF0KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgotCi0tLS0gYS9saWIvZG9feXBjYWxsLmMKLSsrKyBiL2xpYi9kb195cGNhbGwuYwotQEAgLTQ0LDcgKzQ0LDYgQEAgc3RydWN0IGRvbV9iaW5kaW5nCi0gdHlwZWRlZiBzdHJ1Y3QgZG9tX2JpbmRpbmcgZG9tX2JpbmRpbmc7Ci0gCi0gc3RhdGljIGNvbnN0IHN0cnVjdCB0aW1ldmFsIFJQQ1RJTUVPVVQgPSB7MjUsIDB9OwotLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGltZXZhbCBVRFBUSU1FT1VUID0gezUsIDB9OwotIHN0YXRpYyBpbnQgY29uc3QgTUFYVFJJRVMgPSAyOwotIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgeXBiaW5kbGlzdF9sb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKLSBzdGF0aWMgZG9tX2JpbmRpbmcgKnlwYmluZGxpc3QgPSBOVUxMOwotQEAgLTM4MSw3ICszODAsNyBAQCBfX3lwY2xudF9jYWxsICh1X2xvbmcgcHJvZywgeGRycHJvY190IHhhCi0gCi0gaW50Ci0gZG9feXBjYWxsIChjb25zdCBjaGFyICpkb21haW4sIHVfbG9uZyBwcm9nLCB4ZHJwcm9jX3QgeGFyZ3MsCi0tCSAgIGNhZGRyX3QgcmVxLCB4ZHJwcm9jX3QgeHJlcywgY2FkZHJfdCByZXNwKQotKwkgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIHZvaWQgKnJlc3ApCi0gewotICAgZG9tX2JpbmRpbmcgKnlkYjsKLSAgIGludCBzdGF0dXM7Ci1AQCAtNDUwLDcgKzQ0OSw3IEBAIGRvX3lwY2FsbCAoY29uc3QgY2hhciAqZG9tYWluLCB1X2xvbmcgcHIKLSAvKiBMaWtlIGRvX3lwY2FsbCwgYnV0IHRyYW5zbGF0ZSB0aGUgc3RhdHVzIHZhbHVlIGlmIG5lY2Vzc2FyeS4gICovCi0gaW50Ci0gZG9feXBjYWxsX3RyIChjb25zdCBjaGFyICpkb21haW4sIHVfbG9uZyBwcm9nLCB4ZHJwcm9jX3QgeGFyZ3MsCi0tCSAgICAgIGNhZGRyX3QgcmVxLCB4ZHJwcm9jX3QgeHJlcywgY2FkZHJfdCByZXNwKQotKwkgICAgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIHZvaWQgKnJlc3ApCi0gewotICAgaW50IHN0YXR1cyA9IGRvX3lwY2FsbCAoZG9tYWluLCBwcm9nLCB4YXJncywgcmVxLCB4cmVzLCByZXNwKTsKLSAgIGlmIChzdGF0dXMgPT0gWVBFUlJfU1VDQ0VTUykKLS0tLSBhL2xpYi9pbnRlcm5hbC5oCi0rKysgYi9saWIvaW50ZXJuYWwuaAotQEAgLTE3LDggKzE3LDggQEAKLSAjZGVmaW5lIF9JTlRFUk5BTF9IXwotIAotIGV4dGVybiBpbnQgZG9feXBjYWxsIChjb25zdCBjaGFyICpkb21haW4sIHVfbG9uZyBwcm9nLCB4ZHJwcm9jX3QgeGFyZ3MsCi0tCQkgICAgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIGNhZGRyX3QgcmVzcCk7Ci0rCQkgICAgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIHZvaWQgKnJlc3ApOwotIGV4dGVybiBpbnQgZG9feXBjYWxsX3RyIChjb25zdCBjaGFyICpkb21haW4sIHVfbG9uZyBwcm9nLCB4ZHJwcm9jX3QgeGFyZ3MsCi0tCQkJIGNhZGRyX3QgcmVxLCB4ZHJwcm9jX3QgeHJlcywgY2FkZHJfdCByZXNwKTsKLSsJCQkgY2FkZHJfdCByZXEsIHhkcnByb2NfdCB4cmVzLCB2b2lkICpyZXNwKTsKLSBleHRlcm4gaW50IHlwX21hcGxpc3QgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHlwbWFwbGlzdCAqKik7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzL3lwLXRvb2xzLWlwdjQtaXB2Ni1Qcm92aWRlLWFuLWluLXBsYWNlLXZlcnNpb24tb2YtbWFwdjR2NmFkZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzL3lwLXRvb2xzLWlwdjQtaXB2Ni1Qcm92aWRlLWFuLWluLXBsYWNlLXZlcnNpb24tb2YtbWFwdjR2NmFkZHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZjU2OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy95cC10b29scy1pcHY0LWlwdjYtUHJvdmlkZS1hbi1pbi1wbGFjZS12ZXJzaW9uLW9mLW1hcHY0djZhZGRyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLUZyb20gYTFlZjEwZDYzYjBlYTM0Yzc4OGQ1NDMyZTk0YzcyYjAwYWU1NWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvZSBNYWNEb25hbGQgPGpvZV9tYWNkb25hbGRAbWVudG9yLmNvbT4KLURhdGU6IEZyaSwgMjcgRmViIDIwMTUgMTI6MDQ6MTAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gaXB2NC9pcHY2OiBQcm92aWRlIGFuIGluLXBsYWNlIHZlcnNpb24gb2YgbWFwdjR2NmFkZHIuaAotCi1tYXB2NHY2YWRkci5oIGlzbid0IGFsd2F5cyBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB5b3VyIGJ1aWxkLCBidXQKLW5pcy1ob3N0cy5jIG9ubHkgbmVlZHMgaXQgZm9yIGEgc2luZ2xlLCBpbmxpbmUgZnVuY3Rpb24uICBTbyBkcm9wIGEgY29weQotaGVyZSByYXRoZXIgdGhhbiBwbGF5aW5nIGdhbWVzIHdpdGggdGhlIGluY2x1ZGUgcGF0aCB0aGF0IHdvdWxkCi1wb3RlbnRpYWxseSBsZWFkIHRvIGNyb3NzLWNvbXBpbGF0aW9uIGlzc3Vlcy4KLQotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgotLS0tCi0gbnNzX25pczYvbWFwdjR2NmFkZHIuaCB8IDY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbnNzX25pczYvbmlzLWhvc3RzLmMgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG5zc19uaXM2L21hcHY0djZhZGRyLmgKLQotZGlmZiAtLWdpdCBhL25zc19uaXM2L21hcHY0djZhZGRyLmggYi9uc3NfbmlzNi9tYXB2NHY2YWRkci5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2Y4NWY3ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvbnNzX25pczYvbWFwdjR2NmFkZHIuaAotQEAgLTAsMCArMSw2OSBAQAotKy8qCi0rICogKytDb3B5cmlnaHQrKyAxOTg1LCAxOTg4LCAxOTkzCi0rICogLQotKyAqIENvcHlyaWdodCAoYykgMTk4NSwgMTk4OCwgMTk5MwotKyAqICAgIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0rICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0rICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0rICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0rICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0rICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSsgKiBTVUNIIERBTUFHRS4KLSsgKiAtCi0rICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTkzIGJ5IERpZ2l0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uLgotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0rICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQotKyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMsIGFuZCB0aGF0Ci0rICogdGhlIG5hbWUgb2YgRGlnaXRhbCBFcXVpcG1lbnQgQ29ycG9yYXRpb24gbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IKLSsgKiBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIGRvY3VtZW50IG9yIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIERJR0lUQUwgRVFVSVBNRU5UIENPUlAuIERJU0NMQUlNUyBBTEwKLSsgKiBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTCi0rICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiAgIElOIE5PIEVWRU5UIFNIQUxMIERJR0lUQUwgRVFVSVBNRU5UCi0rICogQ09SUE9SQVRJT04gQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTAotKyAqIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUgotKyAqIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTCi0rICogQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTCi0rICogU09GVFdBUkUuCi0rICogLQotKyAqIC0tQ29weXJpZ2h0LS0KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgotKwotK3N0YXRpYyB2b2lkCi0rbWFwX3Y0djZfYWRkcmVzcyAoY29uc3QgY2hhciAqc3JjLCBjaGFyICpkc3QpCi0rewotKyAgdV9jaGFyICpwID0gKHVfY2hhciAqKSBkc3Q7Ci0rICBpbnQgaTsKLSsKLSsgIC8qIE1vdmUgdGhlIElQdjQgcGFydCB0byB0aGUgcmlnaHQgcG9zaXRpb24uICAqLwotKyAgbWVtY3B5IChkc3QgKyAxMiwgc3JjLCBJTkFERFJTWik7Ci0rCi0rICAvKiBNYXJrIHRoaXMgaXB2NiBhZGRyIGFzIGEgbWFwcGVkIGlwdjQuICovCi0rICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykKLSsgICAgKnArKyA9IDB4MDA7Ci0rICAqcCsrID0gMHhmZjsKLSsgICpwID0gMHhmZjsKLSt9Ci1kaWZmIC0tZ2l0IGEvbnNzX25pczYvbmlzLWhvc3RzLmMgYi9uc3NfbmlzNi9uaXMtaG9zdHMuYwotaW5kZXggYWY5OWM3NC4uOTZkOGZhMSAxMDA2NDQKLS0tLSBhL25zc19uaXM2L25pcy1ob3N0cy5jCi0rKysgYi9uc3NfbmlzNi9uaXMtaG9zdHMuYwotQEAgLTM2LDcgKzM2LDcgQEAKLSAjaW5jbHVkZSAibnNzLW5pczYuaCIKLSAKLSAvKiBHZXQgaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgaW50ZXJuYWwgZnVuY3Rpb25zLiAqLwotLSNpbmNsdWRlIDxyZXNvbHYvbWFwdjR2NmFkZHIuaD4KLSsjaW5jbHVkZSAibWFwdjR2NmFkZHIuaCIKLSAKLSAjZGVmaW5lIEVOVE5BTUUgICAgICAgICBob3N0ZW50Ci0gI2RlZmluZSBEQVRBQkFTRSAgICAgICAgImhvc3RzIgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmQ0NjMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyBUaGlzIHBhY2thZ2UgYnVpbGRzIHRvb2xzIHRvIG1hbmFnZSBOSVMKLSMgVGhlIHNvdXJjZSBwYWNrYWdlIGlzIHV0aWxzL25ldC9OSVMveXAtdG9vbHMKLSMKLXJlcXVpcmUgbmlzLmluYwotCi1TVU1NQVJZID0gIk5JUyBjbGllbnQgcHJvZ3JhbXMiCi1ERVNDUklQVElPTiA9ICIgXAotTmV0d29yayBJbmZvcm1hdGlvbiBTZXJ2aWNlIHRvb2xzLiAgXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHlwY2F0LCB5cG1hdGNoLCB5cHNldCwgXAoteXB3aGljaCwgeXBwYXNzd2QsIGRvbWFpbm5hbWUsIG5pc2RvbWFpbm5hbWUgXAotYW5kIHlwZG9tYWlubmFtZS4gXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cC10b29scy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2RvbWFpbm5hbWUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly95cC10b29scy1pcHY0LWlwdjYtUHJvdmlkZS1hbi1pbi1wbGFjZS12ZXJzaW9uLW9mLW1hcHY0djZhZGRyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsaWdubWVudC1jaGVhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi15cF9hbGxfaG9zdC5jLUZpeC1idWlsZC13aXRoLWdjYy03LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFjZWJlZWNjMTFhNzNmYjgwOTc1MDM2NzAzNDQ4MzRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxMmJlODE3ZGYzZDRjMjU4MTM1NTJiZTMzNmM2YzZhZDVhZWRhZjY1NjExYjgxYWYzYWQ5Zjk4ZmIzYzJlNTAiCi0KLURFUEVORFMgPSAibGlidGlycGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkb21haW5uYW1lLnNlcnZpY2UiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wcm9nX1NUUklQPS9iaW4vdHJ1ZSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2xpYmRpcn0veXAtbmlzLyBcCi0gICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0veXAtbmlzLyBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLnNvLiouKiAke2xpYmRpcn0veXAtbmlzL3BrZ2NvbmZpZy8iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiAke2xpYmRpcn0veXAtbmlzLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiICR7bGliZGlyfS95cC1uaXMvKi5zbyAke2xpYmRpcn0veXAtbmlzLyouc28uWzEyXSAke2xpYmRpcn0veXAtbmlzLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke2xpYmRpcn0veXAtbmlzLyouYSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2RvbWFpbm5hbWUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc180LjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfNC4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjOTczOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfNC4yLjIuYmIKQEAgLTAsMCArMSw0NiBAQAorIyBUaGlzIHBhY2thZ2UgYnVpbGRzIHRvb2xzIHRvIG1hbmFnZSBOSVMKKyMgVGhlIHNvdXJjZSBwYWNrYWdlIGlzIHV0aWxzL25ldC9OSVMveXAtdG9vbHMKKyMKK3JlcXVpcmUgbmlzLmluYworCitTVU1NQVJZID0gIk5JUyBjbGllbnQgcHJvZ3JhbXMiCitERVNDUklQVElPTiA9ICIgXAorTmV0d29yayBJbmZvcm1hdGlvbiBTZXJ2aWNlIHRvb2xzLiAgXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHlwY2F0LCB5cG1hdGNoLCB5cHNldCwgXAoreXB3aGljaCwgeXBwYXNzd2QsIGRvbWFpbm5hbWUsIG5pc2RvbWFpbm5hbWUgXAorYW5kIHlwZG9tYWlubmFtZS4gXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cC10b29scy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2RvbWFpbm5hbWUuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXlwYmluZDNfYmluZGluZ19kdXAuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1zdHJkdXAtZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImZiNGE4YmZmYjQ0YWU1ZDMzOTAzNTFkNjdmMzIwZWYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzN2YxOWE5ODYzODJiMjc1YmY0YTJiMWE2OWViMjY2ODlkNmY0YWMwNTZkZGFhMjE3ODRkNmI4MGViOThmYWEiCisKK0RFUEVORFMgPSAibGlidGlycGMgbGlibnNsMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRvbWFpbm5hbWUuc2VydmljZSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3Byb2dfU1RSSVA9L2Jpbi90cnVlIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRvbWFpbm5hbWUgXAorICAgICAgICAgICAgICAgIgorQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1Xbm8tZXJyb3I9Y3BwIgorCitGSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS95cC1uaXMvKi5zby4qLiogJHtsaWJkaXJ9L3lwLW5pcy9wa2djb25maWcvIgorRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiAke2xpYmRpcn0veXAtbmlzLyouc28gJHtsaWJkaXJ9L3lwLW5pcy8qLnNvLlsxMl0gJHtsaWJkaXJ9L3lwLW5pcy8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLmEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kb21haW5uYW1lLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10LzAwMDEtZG5zX2hvc3RzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdC8wMDAxLWRuc19ob3N0cy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0M2IwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdC8wMDAxLWRuc19ob3N0cy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gNTQ1Mjk2MTc1MDI3NWIxZTNmN2M5NWU5NTI4MzM4ZjBlZTAzNTdhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDA5OjE3OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRuc19ob3N0czogRml4IGJ1aWxkIHdpdGggbXVzbAorCitBZGQgTkVUREJfKiBkZWZpbmVzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIGluIG11c2wKK3JlbW92ZSBuZWVkIGZvciBzeXMvY2RlZnMuaCBieSByZW1vdmUgX19QCitBZGQgX0dOVV9TT1VSQ0UgZm9yIG1pc3NpbmcgdV9jaGFyIGRlZmluaXRpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBsaWIvTWFrZWZpbGUuYW0gfCAyICstCisgbGliL2Ruc19ob3N0cy5jIHwgOSArKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5hbSBiL2xpYi9NYWtlZmlsZS5hbQoraW5kZXggOTc3YThkYi4uMzVjYjViMyAxMDA2NDQKKy0tLSBhL2xpYi9NYWtlZmlsZS5hbQorKysrIGIvbGliL01ha2VmaWxlLmFtCitAQCAtOCw3ICs4LDcgQEAKKyBub2luc3RfTElCUkFSSUVTID0gbGliY29tcGF0LmEKKyBub2luc3RfSEVBREVSUyA9IHlwYmluZDNfYmluZGluZy5oCisgCistQU1fQ0ZMQUdTID0gLURfUkVFTlRSQU5UPTEgQFdBUk5GTEFHU0AKKytBTV9DRkxBR1MgPSAtRF9HTlVfU09VUkNFIC1EX1JFRU5UUkFOVD0xIEBXQVJORkxBR1NACisgQU1fQ1BQRkxBR1MgPSAtSSQoc3JjZGlyKSBAVElSUENfQ0ZMQUdTQCBATlNMX0NGTEFHU0AgLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgorIAorIGxpYmNvbXBhdF9hX1NPVVJDRVMgPSBkbnNfaG9zdHMuYyByZXNfb3B0aW9ucy5oIHlwYmluZDNfYmluZGluZ19kdXAuYyBcCitkaWZmIC0tZ2l0IGEvbGliL2Ruc19ob3N0cy5jIGIvbGliL2Ruc19ob3N0cy5jCitpbmRleCBmZDQyMWZkLi42MDY3ODc5IDEwMDY0NAorLS0tIGEvbGliL2Ruc19ob3N0cy5jCisrKysgYi9saWIvZG5zX2hvc3RzLmMKK0BAIC02NCw2ICs2NCw3IEBACisgCisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KK0BAIC04NCw2ICs4NSwxMiBAQCBleHRlcm4gc3RydWN0IGhvc3RlbnQgKl9nZXRodGJ5YWRkcihjb25zdCBjaGFyICosIGludCwgaW50KTsKKyAjaWZuZGVmIExPR19BVVRICisgIyBkZWZpbmUgTE9HX0FVVEggMAorICNlbmRpZgorKyNpZm5kZWYgTkVUREJfU1VDQ0VTUworKyMgZGVmaW5lIE5FVERCX1NVQ0NFU1MgMAorKyNlbmRpZgorKyNpZm5kZWYgTkVUREJfSU5URVJOQUwKKysjIGRlZmluZSBORVREQl9JTlRFUk5BTCAtMQorKyNlbmRpZgorIAorICNkZWZpbmUgTVVMVElfUFRSU19BUkVfQUxJQVNFUyAxCS8qIFhYWCAtIGV4cGVyaW1lbnRhbCAqLworIAorQEAgLTEwMSw3ICsxMDgsNyBAQCBzdGF0aWMgY2hhciBob3N0YnVmWzgqMTAyNF07Cisgc3RhdGljIHN0cnVjdCBpbl9hZGRyIGhvc3RfYWRkcjsKKyAKKyAjaWZkZWYgUkVTT0xWU09SVAorLXN0YXRpYyB2b2lkIGFkZHJzb3J0IF9fUCgoY2hhciAqKiwgaW50KSk7Cisrc3RhdGljIHZvaWQgYWRkcnNvcnQgKGNoYXIgKiosIGludCk7CisgI2VuZGlmCisgCisgI2lmIFBBQ0tFVFNaID4gMTAyNAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMS4zOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzEuMzguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YzBhYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMS4zOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSMgVGhpcyBwYWNrYWdlIGJ1aWxkcyB0aGUgTklTIHlwYmluZCBkYWVtb24KLSMgVGhlIHNvdXJjZSBwYWNrYWdlIGlzIHV0aWxzL25ldC9OSVMveXBiaW5kLW10Ci0jCi1yZXF1aXJlIG5pcy5pbmMKLQotREVTQ1JJUFRJT04gPSAiIFwKLU11bHRpdGhyZWFkZWQgTklTIGJpbmQgc2VydmljZSAoeXBiaW5kLW10KS4gIFwKLXlwYmluZC1tdCBpcyBhIGNvbXBsZXRlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBhIE5JUyBcCi1iaW5kaW5nIGRhZW1vbiBmb3IgTGludXguIEl0IGhhcyB0aGUgZm9sbG93aW5nIFwKLWZlYXR1cmVzLiAgU3VwcG9ydHMgeXBiaW5kIHByb3RvY29sIFYxIGFuZCBWMi4gIFwKLVVzZXMgdGhyZWFkcyBmb3IgYmV0dGVyIHJlc3BvbnNlLiAgU3VwcG9ydHMgbXVsdGlwbGUgXAotZG9tYWluIGJpbmRpbmdzLiAgU3VwcG9ydHMgL3Zhci95cC9iaW5kaW5nLyogZmlsZSBcCi1mb3IgTGludXggbGliYyA0LzUgYW5kIGdsaWJjIDIueC4gIFN1cHBvcnRzIGEgbGlzdCBcCi1vZiBrbm93biBzZWN1cmUgTklTIHNlcnZlciAoL2V0Yy95cC5jb25mKSBCaW5kcyB0byBcCi10aGUgc2VydmVyIHdoaWNoIGFuc3dlcmVkIGFzIGZpcnN0LiBcCi1cCi1UaGlzIGlzIHRoZSBmaW5hbCBJUHY0LW9ubHkgdmVyc2lvbiBvZiB5cGJpbmQtbXQuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9uaXMveXBiaW5kLW10L2luZGV4Lmh0bWwiCi1ERVBFTkRTID0gIiBcCi0gICAgICAgICAgIHlwLXRvb2xzIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCi0gICAgICAgICAgIgotUkRFUEVORFNfJHtQTn0gKz0gInlwLXRvb2xzIgotCi0jIHlwYmluZC1tdCBub3cgcHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHlwYmluZAotIyBhbmQgaXMgdXNlZCBpbiBwbGFjZSBvZiBpdC4KLVBST1ZJREVTICs9ICJ5cGJpbmQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saW51eC1uaXMub3JnL2Rvd25sb2FkL3lwYmluZC1tdC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3lwYmluZC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3lwYmluZC5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwOTQwODhjMGUyODJmYTdmM2IzZGQ2Y2M1MWQwYTRlMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTMwY2UxOWY2Y2NmZTEwNDAwZjM0OTdiMzE4NjdmNzE2OTBkMmJjZDNmNWI1NzUxOTlmYTkxNTU1OWI3NzQ2IgotCi1pbmhlcml0IHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInlwYmluZC5zZXJ2aWNlIgotSU5JVFNDUklQVF9OQU1FID0gInlwYmluZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDQ0IDMgNSAuIHN0b3AgNzAgMCAxIDIgNiAuIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wcm9nX1NUUklQPS9iaW4vdHJ1ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9yY1MuZAotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0veXBiaW5kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3lwYmluZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3lwYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi19Ci0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI3ZTUwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jIFRoaXMgcGFja2FnZSBidWlsZHMgdGhlIE5JUyB5cGJpbmQgZGFlbW9uCi0jIFRoZSBzb3VyY2UgcGFja2FnZSBpcyB1dGlscy9uZXQvTklTL3lwYmluZC1tdAotIwotcmVxdWlyZSBuaXMuaW5jCi0KLURFU0NSSVBUSU9OID0gIiBcCi1NdWx0aXRocmVhZGVkIE5JUyBiaW5kIHNlcnZpY2UgKHlwYmluZC1tdCkuICBcCi15cGJpbmQtbXQgaXMgYSBjb21wbGV0ZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgYSBOSVMgXAotYmluZGluZyBkYWVtb24gZm9yIExpbnV4LiBJdCBoYXMgdGhlIGZvbGxvd2luZyBcCi1mZWF0dXJlcy4gIFN1cHBvcnRzIHlwYmluZCBwcm90b2NvbCBWMSBhbmQgVjIuICBcCi1Vc2VzIHRocmVhZHMgZm9yIGJldHRlciByZXNwb25zZS4gIFN1cHBvcnRzIG11bHRpcGxlIFwKLWRvbWFpbiBiaW5kaW5ncy4gIFN1cHBvcnRzIC92YXIveXAvYmluZGluZy8qIGZpbGUgXAotZm9yIExpbnV4IGxpYmMgNC81IGFuZCBnbGliYyAyLnguICBTdXBwb3J0cyBhIGxpc3QgXAotb2Yga25vd24gc2VjdXJlIE5JUyBzZXJ2ZXIgKC9ldGMveXAuY29uZikgQmluZHMgdG8gXAotdGhlIHNlcnZlciB3aGljaCBhbnN3ZXJlZCBhcyBmaXJzdC4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC1uaXMub3JnL25pcy95cGJpbmQtbXQvaW5kZXguaHRtbCIKLURFUEVORFMgPSAieXAtdG9vbHMgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBST1ZJREVTICs9ICJ5cGJpbmQiCi0KLVBOQkxBQ0tMSVNUW3lwYmluZC1tdF0gPz0gIkJST0tFTjogRGVwZW5kcyBvbiBicm9rZW4geXAtdG9vbHMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saW51eC1uaXMub3JnL2Rvd25sb2FkL3lwYmluZC1tdC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3lwYmluZC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3lwYmluZC5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NGUyMDQwZDgyNjZhZTdkMzAyZDA4MWNhMzEwYzhhOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzJmN2Q5N2M5NGRjYWIwYWNmZGNkMTE1Y2Q4YjQ2NGViOGM0MjdlNGJiMGZlNjg0MDRhZTc0NjVmNTE3Y2QzIgotCi1pbmhlcml0IHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInlwYmluZC5zZXJ2aWNlIgotSU5JVFNDUklQVF9OQU1FID0gInlwYmluZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDQ0IDMgNSAuIHN0b3AgNzAgMCAxIDIgNiAuIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wcm9nX1NUUklQPS9iaW4vdHJ1ZSIKLQotRVhUUkFfT0VDT05GID0gIlBLR19DT05GSUdfUEFUSD0nJHtTVEFHSU5HX0xJQkRJUn0veXAtbmlzL3BrZ2NvbmZpZy8nIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3JjUy5kCi0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS95cGJpbmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQveXBiaW5kCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veXBiaW5kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KLQotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MjJmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjQuYmIKQEAgLTAsMCArMSw2MiBAQAorIyBUaGlzIHBhY2thZ2UgYnVpbGRzIHRoZSBOSVMgeXBiaW5kIGRhZW1vbgorIyBUaGUgc291cmNlIHBhY2thZ2UgaXMgdXRpbHMvbmV0L05JUy95cGJpbmQtbXQKKyMKK3JlcXVpcmUgbmlzLmluYworCitERVNDUklQVElPTiA9ICIgXAorTXVsdGl0aHJlYWRlZCBOSVMgYmluZCBzZXJ2aWNlICh5cGJpbmQtbXQpLiAgXAoreXBiaW5kLW10IGlzIGEgY29tcGxldGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIGEgTklTIFwKK2JpbmRpbmcgZGFlbW9uIGZvciBMaW51eC4gSXQgaGFzIHRoZSBmb2xsb3dpbmcgXAorZmVhdHVyZXMuICBTdXBwb3J0cyB5cGJpbmQgcHJvdG9jb2wgVjEgYW5kIFYyLiAgXAorVXNlcyB0aHJlYWRzIGZvciBiZXR0ZXIgcmVzcG9uc2UuICBTdXBwb3J0cyBtdWx0aXBsZSBcCitkb21haW4gYmluZGluZ3MuICBTdXBwb3J0cyAvdmFyL3lwL2JpbmRpbmcvKiBmaWxlIFwKK2ZvciBMaW51eCBsaWJjIDQvNSBhbmQgZ2xpYmMgMi54LiAgU3VwcG9ydHMgYSBsaXN0IFwKK29mIGtub3duIHNlY3VyZSBOSVMgc2VydmVyICgvZXRjL3lwLmNvbmYpIEJpbmRzIHRvIFwKK3RoZSBzZXJ2ZXIgd2hpY2ggYW5zd2VyZWQgYXMgZmlyc3QuIFwKK1wKK1RoaXMgaXMgdGhlIGZpbmFsIElQdjQtb25seSB2ZXJzaW9uIG9mIHlwYmluZC1tdC4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC1uaXMub3JnL25pcy95cGJpbmQtbXQvaW5kZXguaHRtbCIKK0RFUEVORFMgPSAiIFwKKyAgICAgICAgICAgeXAtdG9vbHMgXAorICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyAgICAgICAgICAiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGJzZC1oZWFkZXJzIG5zcyIKK1JERVBFTkRTXyR7UE59ICs9ICJ5cC10b29scyIKKworIyB5cGJpbmQtbXQgbm93IHByb3ZpZGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB5cGJpbmQKKyMgYW5kIGlzIHVzZWQgaW4gcGxhY2Ugb2YgaXQuCitQUk9WSURFUyArPSAieXBiaW5kIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cGJpbmQtbXQvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly95cGJpbmQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly95cGJpbmQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRuc19ob3N0cy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjFhZWNjZDBkMTFjMDY0ZDVkNTljNTY5NDFiY2E2ODJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZTFmYThmYzk5MmExMmIyODljMjI5ZTAwZTM4YzIwZDU5MDcwYzNiY2YwOGJhYmY0MGM2OTI1MTVjMzQwZTAiCisKK2luaGVyaXQgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAieXBiaW5kLnNlcnZpY2UiCitJTklUU0NSSVBUX05BTUUgPSAieXBiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgNDQgMyA1IC4gc3RvcCA3MCAwIDEgMiA2IC4iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3Byb2dfU1RSSVA9L2Jpbi90cnVlIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3JjUy5kCisKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS95cGJpbmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQveXBiaW5kCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veXBiaW5kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KKworCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC8wMDAxLW5EUEktSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvMDAwMS1uRFBJLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFmZmVlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvMDAwMS1uRFBJLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA2NTQzZjNlMmQ1ZmUyMTRlMmZjNmMwNTAyODliZjFhZTczYjE4NzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTM6NTY6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbkRQSTogSW5jbHVkZSBzeXMvdHlwZXMuaAorCitOZWVkZWQgZm9yIHVpbnRfdCB0eXBlcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIG5EUEkvc3JjL2luY2x1ZGUvaXBxX2FwaS5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK0luZGV4OiBudG9wLTUuMC4xL25EUEkvc3JjL2luY2x1ZGUvaXBxX2FwaS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbnRvcC01LjAuMS5vcmlnL25EUEkvc3JjL2luY2x1ZGUvaXBxX2FwaS5oCisrKysgbnRvcC01LjAuMS9uRFBJL3NyYy9pbmNsdWRlL2lwcV9hcGkuaAorQEAgLTI0LDYgKzI0LDcgQEAKKyAjaWZuZGVmIF9fSVBPUVVFX0FQSV9JTkNMVURFX0ZJTEVfXw0KKyAjZGVmaW5lIF9fSVBPUVVFX0FQSV9JTkNMVURFX0ZJTEVfXw0KKyANCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKyANCisgI2lmIGRlZmluZWQoSEFWRV9OVE9QKSAmJiBkZWZpbmVkKFdJTjMyKQ0KKyAjaW5jbHVkZSA8d2luc29jazIuaD4NCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Auc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYWQyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Auc2VydmljZQpAQCAtMCwwICsxLDE1IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUEgbmV0d29yayB0cmFmZmljIHByb2JlIHNpbWlsYXIgdG8gdGhlIFVOSVggdG9wIGNvbW1hbmQKK1JlcXVpcmVzPW5ldHdvcmsudGFyZ2V0CisKK0NvbmRpdGlvblBhdGhFeGlzdHM9QFNZU0NPTkZESVJAL250b3AuY29uZgorQWZ0ZXI9c3lzbG9nLnRhcmdldCBuZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9b25lc2hvdAorUmVtYWluQWZ0ZXJFeGl0PXllcworRXhlY1N0YXJ0PUBMSUJFWEVDRElSQC9udG9wLWhlbHBlciBzdGFydAorRXhlY1N0b3A9QExJQkVYRUNESVJAL250b3AtaGVscGVyIHN0b3AKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2NvbmZpZ3VyZV9pbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9jb25maWd1cmVfaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkyY2IwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9jb25maWd1cmVfaW4ucGF0Y2gKQEAgLTAsMCArMSwxNjQgQEAKKzEpYWRkIC0td2l0aC1wY2FwLWNvbmZpZyBvcHRpb24gdG8gdXNlIGxpYnBjYXAncyBwY2FwLWNvbmZpZworMilhZGQgQUNfQ0hFQ0tfTElCIGlmIHVzZXIgZGlkbid0IHNwZWNpZnkgUENBUF9ST09UIGFuZCBwY2FwLWNvbmZpZworICBwdXQgaXQgYmVmb3JlIGhvc3QgY2hlY2sgdG8gbWFrZSBjcm9zcy1jb21waWxpbmcgZWFzaWVyLgorICBwY2FwIGRvZXNuJ3QgbmVlZCBleHRyYSBpbmNsdWRlIGFuZCBsaWJzIHNvIGl0IGlzIGZpbmUuCiszKXJlbW92ZSBvbGQgcnJkIGNvbmZpZ3VyZSBjb2RlIGJ1dCB1c2UgcGtnLWNvbmZpZyB0byBjb25maWcgcnJkCisgIHJyZHRvb2wgc2hvdWxkIGhhdmUgdGhlIHBrZy1jb25maWcgZmlsZSBpbnN0YWxsZWQuCis0KWZpeCBweXRob24tY29uZmlnCis1KWNoYW5nZSBBQ19UUllfUlVOIHRvIEFDX0NPTVBJTEVfSUZFTFNFIGZvciBwdGhyZWFkX3J3bG9ja190IGNoZWNraW5nCis2KWZpeCBhIG5ldC1zbm1wLWNvbmZpZyBidWcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFlhbyBaaGFvIDx5YW8uemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAwYzdjMGE1Li5jYWQ0MGJlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0yMzAsMTQgKzIzMCwxNCBAQCBkbmw+CisgQUNfQVJHX1dJVEgodm9pZCwKKyAgICAgICAgICAgICAgIFsgICstRXh0ZXJuYWwtc291cmNlLWxvY2F0aW9uczotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK10pCisgCistQUNfQVJHX1dJVEgoICBycmQtaG9tZSwKKy0gICAgICAgICAgICAgIFsgIC0td2l0aC1ycmQtaG9tZT1ESVIgICAgICAgIFVzdWFsbHkgL3Vzci9sb2NhbC9ycmR0b29sLTEuMi54XSwKKy0gICAgICAgICAgICAgIFJSRF9IT01FPSIkd2l0aHZhbCIsCistICAgICAgICAgICAgICBSUkRfSE9NRT0vdXNyL2xvY2FsL3JyZHRvb2wtMS4yLjE5KQorIEFDX0FSR19XSVRIKCAgcGNhcC1yb290LAorICAgICAgICAgICAgICAgWyAgLS13aXRoLXBjYXAtcm9vdD1ESVIgICAgICAgIExCTkwgcGNhcCBsb2NhdGVkIGluIERJUl0sCisgICAgICAgICAgICAgICBQQ0FQX1JPT1Q9IiR3aXRodmFsIiwKKyAgICAgICAgICAgICAgIFBDQVBfUk9PVD0pCisrQUNfQVJHX1dJVEgoICBwY2FwLWNvbmZpZywKKysgICAgICAgICAgICAgIFsgIC0td2l0aC1wY2FwLWNvbmZpZz1wYXRoL3BjYXAtY29uZmlnIHdoZXJlIHRvIGZpbmQgcGNhcC1jb25maWddLAorKyAgICAgICAgICAgICAgUENBUF9DT05GSUc9IiR3aXRodmFsIiwKKysgICAgICAgICAgICAgIFBDQVBfQ09ORklHPSkKKyBBQ19BUkdfV0lUSCggIGdkYm0tcm9vdCwKKyAgICAgICAgICAgICAgIFsgIC0td2l0aC1nZGJtLXJvb3Q9RElSICAgICAgICBnZGJtIGxvY2F0ZWQgaW4gRElSXSwKKyAgICAgICAgICAgICAgIEdEQk1fRElSRUNUT1JZPSIkd2l0aHZhbCIsCitAQCAtNTU2LDYgKzU1Niw3IEBAIGlmIHRlc3QgIi4ke1BDQVBSSU5HX0RJUn0iICE9IC47IHRoZW4KKyBlbHNlCisgCisgVE1QX1JPT1Q9JHtIT01FfS9QRl9SSU5HL3VzZXJsYW5kL2xpYnBjYXAvCisrRk9VTkRfUENBUD0xCisgaWYgdGVzdCAiLiR7UENBUF9ST09UfSIgPT0gLiAmJgorICAgIHRlc3QgLWQgJHtUTVBfUk9PVH0gJiYKKyAgICB0ZXN0IC1yICR7VE1QX1JPT1R9L2xpYnBjYXAuYTsgdGhlbgorQEAgLTU2Myw2ICs1NjQsMTggQEAgaWYgdGVzdCAiLiR7UENBUF9ST09UfSIgPT0gLiAmJgorICAgICAgICBDT1JFTElCUz0iJHtDT1JFTElCU30gLUwke1RNUF9ST09UfSAtTCR7SE9NRX0vUEZfUklORy91c2VybGFuZC9saWIgLWxwZnJpbmcgLWxwY2FwICIKKyAgICAgICAgSU5DUz0iJHtJTkNTfSAtSSAke1BDQVBfUk9PVH0iCisgICAgICAgIEFDX01TR19SRVNVTFQoW2ZvdW5kIGluICRQQ0FQX1JPT1RdKQorK2VsaWYgdGVzdCAtbiAiJHtQQ0FQX0NPTkZJR30iICYmIHRlc3QgLXggIiR7UENBUF9DT05GSUd9IjsgdGhlbgorKyAgICAgICBDT1JFTElCUz0iJHtDT1JFTElCU30gJCgke1BDQVBfQ09ORklHfSAtLWxpYnMpIiAKKysgICAgICAgSU5DUz0iJHtJTkNTfSAkKCR7UENBUF9DT05GSUd9IC0tY2ZsYWdzKSIKKysgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTElCUENBUCwgMSwgW2hhdmUgbGlicGNhcCBdKQorKyAgICAgICBBQ19NU0dfUkVTVUxUKFtmb3VuZCBwY2FwLWNvbmZpZzogJFBDQVBfQ09ORklHLCBsaWJzOiQoJHtQQ0FQX0NPTkZJR30gLS1saWJzKSBjZmxhZ3M6JCgke1BDQVBfQ09ORklHfSAtLWNmbGFncyldKQorK2Vsc2UKKysgICAgIEFDX0NIRUNLX0xJQihwY2FwLCBwY2FwX2xvb2t1cGRldiwgLAorKyAgICAgICAgW0ZPVU5EX1BDQVA9XSkKKytmaQorKworK2lmIHRlc3QgLW4gIiRGT1VORF9QQ0FQIjsgdGhlbgorKwk6CisgZWxpZiB0ZXN0ICIuJHtQQ0FQX1JPT1R9IiAhPSAuOyB0aGVuCisgICBpZiB0ZXN0IC1kICRQQ0FQX1JPT1QgJiYKKyAgICAgIHRlc3QgLXIgJFBDQVBfUk9PVC9saWIvbGlicGNhcC5hICYmCitAQCAtODgwLDQ0ICs4OTMsMTEgQEAgQUNfQ0hFQ0tfTElCKFt6XSwgW3psaWJWZXJzaW9uXSwgW10sIFsKKyAgICAgICAgIGV4aXQgLTEKKyAgICAgICAgIF0pCisgCistIyBSUkQKKy1pZiB0ZXN0IC1kICIkUlJEX0hPTUUiOyB0aGVuCistICAgQUNfTVNHX1JFU1VMVChjaGVja2luZyBmb3IgUlJEIGhvbWUuLi4geWVzKQorLWVsc2UKKy0gICBSUkRfSE9NRT0vdXNyL2xvY2FsL3JyZHRvb2wKKy0gICBpZiB0ZXN0IC1kICIkUlJEX0hPTUUiOyB0aGVuCistICAgICAgQUNfTVNHX1JFU1VMVChDaGVja2luZyBycmR0b29sIGluICRSUkRfSE9NRSkKKy0gICBlbHNlCistICAgICAgUlJEX0hPTUU9L3Vzci9sb2NhbAorLSAgIGZpCistZmkKKy0KKy1SUkRfTElCPSItTCR7UlJEX0hPTUV9L2xpYiAtbHJyZF90aCIKKy0KKy1pZiB0ZXN0IC1mICIkUlJEX0hPTUUvbGliL2xpYnJyZF90aC5zbyI7IHRoZW4KKy0gICBBQ19NU0dfUkVTVUxUKGNoZWNraW5nIGZvciBycmR0b29sLi4uIHllcykKKy1lbHNlCistICBpZiB0ZXN0IC1mICIkUlJEX0hPTUUvbGliL2xpYnJyZF90aC5keWxpYiI7IHRoZW4gIyBPU1gKKy0gICAgIEFDX01TR19SRVNVTFQoY2hlY2tpbmcgZm9yIHJyZHRvb2wuLi4geWVzKQorLSAgZWxzZQorLSAgICAgaWYgdGVzdCAtZiAiJFJSRF9IT01FL2xpYi9saWJycmRfdGguYSI7IHRoZW4KKy0gICAgICAgQUNfTVNHX1JFU1VMVChjaGVja2luZyBmb3IgcnJkdG9vbC4uLiB5ZXMpCistICAgICBlbHNlCistICAgICAgIEFDX0NIRUNLX0xJQihbcnJkX3RoXSwgW21haW5dKQorLSAgICAgICBpZiB0ZXN0ICIuJHthY19jdl9saWJfcnJkX3RoX21haW59IiAhPSAiLnllcyI7IHRoZW4KKy0gICAgICAgICBBQ19NU0dfRVJST1IoVW5hYmxlIHRvIGZpbmQgUlJEIGF0ICRSUkRfSE9NRTogcGxlYXNlIHVzZSAtLXdpdGgtcnJkLWhvbWU9RElSKTsKKy0JIEFDX01TR19FUlJPUihSUkQgc291cmNlIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5ycmR0b29sLm9yZy8pOworLSAgICAgICBlbHNlCistICAgICAgICAgUlJEX0xJQj0KKy0gICAgICAgZmkKKy0gICAgIGZpCistICBmaQorLWZpCistCistUlJEX0lOQz0KKy1pZiB0ZXN0IC1kICIke1JSRF9IT01FfS9pbmNsdWRlIjsgdGhlbgorLSAgUlJEX0lOQz0iLUkke1JSRF9IT01FfS9pbmNsdWRlIgorLWZpCisrUEtHX0NIRUNLX01PRFVMRVMoIFtSUkRdLCBbbGlicnJkXSApCisrQUNfU1VCU1QoUlJEX0NGTEFHUykKKytBQ19TVUJTVChSUkRfTElCUykKKytSUkRfSU5DPSRSUkRfRkxBR1MKKytSUkRfTElCPSRSUkRfTElCUworIAorIGRubD4gVGhlIGZhaWxlZCByZWNoZWNrIHN0dWZmIGJlbG93IGlzIGNvdXJ0ZXN5IG9mIENocmlzIFR1cmJldmlsbGUgW3R1cmJvQHZlcmlvLm5ldF0KKyBkbmw+IENocmlzIGRldmVsb3BlZCB0aGlzIGZvciBTb2xhcmlzIDksIGNvbmZpcm1pbmcgd29yayBJIGhhZCBkb25lIGVhcmxpZXIgZm9yIEZyZWVCU0QKK0BAIC0xMDQxLDcgKzEwMjEsNyBAQCBBQ19DSEVDS19IRUFERVJTKFtzY2hlZC5oIHN5cy9zY2hlZC5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFtwdGhyZWFkLmhdKQorIAorIEFDX01TR19DSEVDS0lORyhbaWYgci93IGxvY2tzIGFyZSBzdXBwb3J0ZWRdKQorLUFDX1RSWV9SVU4oWworK0FDX0NPTVBJTEVfSUZFTFNFKFsKKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorIAorIGludCBtYWluKCkKK0BAIC0xNDQzLDE1ICsxNDIzLDE1IEBAIGRubD4gTkVULVNOTVAKKyBkbmw+CisgaWYgdGVzdCAiLiR7YWNfZGlzYWJsZV9zbm1wfSIgIT0gIi55ZXMiOyB0aGVuCisgICBBQ19DSEVDS19UT09MKE5FVFNOTVAsIG5ldC1zbm1wLWNvbmZpZykKKy0gIGlmIHRlc3QgIngkYWNfY3ZfcHJvZ19hY19jdF9ORVRTTk1QIiA9ICJ4bmV0LXNubXAtY29uZmlnIjsgdGhlbgorKyAgaWYgdGVzdCAtbiAiJE5FVFNOTVAiOyB0aGVuCisgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NOTVAsIDEsIFtTTk1QIGlzIHN1cHBvcnRlZF0pCistICAgIFNOTVBMSUJTPSJgbmV0LXNubXAtY29uZmlnIC0tbGlic2AiCisrICAgIFNOTVBMSUJTPSJgJE5FVFNOTVAgLS1saWJzYCIKKyAgICAgU05NUExJQlM9ImBlY2hvICR7U05NUExJQlN9fHNlZCAtZSBzLCctUi4uL2xpYicsLGdgIgorICAgICBlY2hvICJuZXQtc25tcCBsaWJzOiAke1NOTVBMSUJTfSIKKyAgICAgTElCUz0iJHtMSUJTfSAke1NOTVBMSUJTfSIKKyBkbmwgcmVtb3ZlIHVuZWNlc3NhcnkgcGF0aAorICAgICBMSUJTPWBlY2hvICR7TElCU318c2VkIC1lIHMsJy1SLi4vbGliJywsZ2AKKy0gICAgSU5DUz0iJHtJTkNTfSBgbmV0LXNubXAtY29uZmlnIC0tY2ZsYWdzYCIKKysgICAgSU5DUz0iJHtJTkNTfSBgJE5FVFNOTVAgLS1jZmxhZ3NgIgorICAgZWxzZQorICAgICBBQ19NU0dfUkVTVUxUKE5FVFNOTVAgaXMgbm90IHByZXNlbnQ6IFNOTVAgc3VwcG9ydCBpcyBkaXNhYmxlZCkKKyAgIGZpCitAQCAtMTQ2NCwxMCArMTQ0NCw5IEBAIFNBVkVEX0xJQlM9JExJQlMKKyBkbmw+CisgZG5sPiBQWVRIT04KKyBkbmw+CistICBBQ19DSEVDS19UT09MKFBZVEhPTiwgcHl0aG9uLWNvbmZpZykKKy0gIFBZVEhPTl9DT05GSUc9IiIKKysgIEFDX0NIRUNLX1RPT0woUFlUSE9OX0NPTkZJRywgcHl0aG9uLWNvbmZpZykKKyAKKy0gIGlmIHRlc3QgIngkYWNfY3ZfcHJvZ19hY19jdF9QWVRIT04iICE9ICJ4cHl0aG9uLWNvbmZpZyI7IHRoZW4gICAKKysgIGlmIHRlc3QgLXogIiRQWVRIT05fQ09ORklHIjsgdGhlbiAgIAorICAgICAgICBpZiB0ZXN0IC1mICIvZXRjL2RlYmlhbl92ZXJzaW9uIjsgdGhlbgorICAgICAgICAJICAgQUNfTVNHX1JFU1VMVChQbGVhc2UgaW5zdGFsbCBweXRob24tZGV2IGFuZCByZXJ1biBjb25maWd1cmUpCisgCSAgIGV4aXQgMQorQEAgLTE0ODEsOCArMTQ2MCw2IEBAIGRubD4KKyAgICAgICAgICAgUFlUSE9OX0NPTkZJRz0icHl0aG9uLWNvbmZpZyIKKyAgICAgICAgIGZpCisgICAgICBmaQorLSAgZWxzZQorLSAgICAgUFlUSE9OX0NPTkZJRz0icHl0aG9uLWNvbmZpZyIKKyAgIGZpCisgCisgICBpZiB0ZXN0ICJ4JFBZVEhPTl9DT05GSUciICE9ICJ4IjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2NvbmZpZ3VyZV9pbl9uZXRfc25tcF9jb25maWdfZXhpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3BfY29uZmlndXJlX2luX25ldF9zbm1wX2NvbmZpZ19leGlzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjkxMzhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2NvbmZpZ3VyZV9pbl9uZXRfc25tcF9jb25maWdfZXhpc3QucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorQ2hlY2sgbmV0LXNubXAtY29uZmlnJ3MgZXhpc3RlbmNlIGluIGNhc2UgdXNlciBzcGVjaWZpZWQgdGhlCithY19jdl9wcm9nX05FVFNOTVAgdG8gYXZvaWQgSEFWRV9TTk1QIGRlZmluZWQgaWYgdGhlIHNwZWNpZmllZAorbmV0LXNubXAtY29uZmlnIGRvZXNuJ3QgZXhpc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFlhbyBaaGFvIDx5YW8uemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA2ZjNlODhmLi44ZGRmMDE3IDEwMDc1NQorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xNDIzLDcgKzE0MjMsNyBAQCBkbmw+IE5FVC1TTk1QCisgZG5sPgorIGlmIHRlc3QgIi4ke2FjX2Rpc2FibGVfc25tcH0iICE9ICIueWVzIjsgdGhlbgorICAgQUNfQ0hFQ0tfVE9PTChORVRTTk1QLCBuZXQtc25tcC1jb25maWcpCistICBpZiB0ZXN0IC1uICIkTkVUU05NUCI7IHRoZW4KKysgIGlmIHRlc3QgLW4gIiRORVRTTk1QIiAtYSAtZSAiJE5FVFNOTVAiOyB0aGVuCisgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NOTVAsIDEsIFtTTk1QIGlzIHN1cHBvcnRlZF0pCisgICAgIFNOTVBMSUJTPSJgJE5FVFNOTVAgLS1saWJzYCIKKyAgICAgU05NUExJQlM9ImBlY2hvICR7U05NUExJQlN9fHNlZCAtZSBzLCctUi4uL2xpYicsLGdgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2luaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3BfaW5pdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzY4NGMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2luaXQucGF0Y2gKQEAgLTAsMCArMSwyMjggQEAKK01vZGlmeSBudG9wLmluaXQgdG8gV1JMaW51eCA1LjAgc3R5bGUuCisKK0ZpeCBhIHNtYWxsIHByb2JsZW0gdGhhdCB3aGVuIG50b3Agbm90IHJ1bm5pbmcsCisvZXRjL2luaXQuZC9udG9wIHN0b3Agd2lsbCByZXR1cm4gMQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZYW8gWmhhbyA8eWFvLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHBhY2thZ2VzL1JlZEhhdC9udG9wLmluaXQgfCAgMTAyICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1JlZEhhdC9udG9wLmluaXQgYi9wYWNrYWdlcy9SZWRIYXQvbnRvcC5pbml0CitpbmRleCA0MGQ0OWYxLi5hMTg5YzU5IDEwMDc1NQorLS0tIGEvcGFja2FnZXMvUmVkSGF0L250b3AuaW5pdAorKysrIGIvcGFja2FnZXMvUmVkSGF0L250b3AuaW5pdAorQEAgLTEwLDE5ICsxMCw5IEBACisgIyAgICAgICAgICAgWW91IGhhdmUgc2V0IHRoZSBhZG1pbiBwYXNzd29yZCAtIHJlYWQgZG9jcy8xU1RSVU4udHh0CisgIyAgICAgICAgICAgWW91IGhhdmUgY3JlYXRlZCAvZXRjL250b3AuY29uZiB3aXRoIGFwcHJvcHJpYXRlIHBhcmFtZXRlcnMuCisgCistIyAgVG8gaWRlbnRpZnkgYW4gaW50ZXJmYWNlIHRvIG50b3AsIHVzZSB0aGUgZm9sbG93aW5nIGZsYWdzIAorLSMgIGluIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy1ldGh4CistCistIyAgIE5UT1A9InllcyIgICAgICA8LS0tIG1lYW5zIGZvciBudG9wIHRvIHVzZSB0aGlzIGludGVyZmFjZQorLSMgICBOVE9QQ09ORklHPSJ5ZXMiICA8LS0tIG1lYW5zIGZvciBudG9wIHRvIGNvbmZpZ3VyZSB0aGlzIGludGVyZmFjZQorLQorICMgTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGEgLWkgcGFyYW1ldGVyIGluIGVpdGhlciAvZXRjL250b3AuY29uZiBvcgorICMgdGhlIGNvbW1hbmQgbGluZSwgdGhlIHNjYW4gaXMgTk9UIHBlcmZvcm1lZC4gIAorIAorLSMgSG93ZXZlciwgd2hlbiBpdCBjb21lcyB0byB0aGUgY29uZmlndXJhdGlvbiBzdGVwLCB3aXRoIE5UT1BDT05GSUc9InllcyIKKy0jIHRoZSBpbnRlcmZhY2UgaXMgY29uZmlndXJlZCByZWdhcmRsZXNzIG9mIGhvdyB0aGUgaW50ZXJmYWNlIGxpc3Qgd2FzCistIyBzcGVjaWZpZWQuCistCisgIworICMgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQorICMgCitAQCAtMTA3LDExICs5Nyw3IEBAIG50b3B1c2VzeXNsb2c9ImxvY2FsMyIKKyBpbnZva2VkPSQwCisgCisgIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KKy0uIC9ldGMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCistCistIyBTb3VyY2UgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLgorLS4gL2V0Yy9zeXNjb25maWcvbmV0d29yaworLQorKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisgCisgIyBCYXNpYyBzYW5pdHkgY2hlY2tzLi4uCisgaWYgISBbIC14ICRwcm9nIF07IHRoZW4KK0BAIC0xMjQsMTYgKzExMCw2IEBAIGlmICEgWyAteCAkcHJvZyBdOyB0aGVuCisgICBleGl0IDEKKyBmaQorIAorLWlmIFsgJHtORVRXT1JLSU5HfSA9ICJubyIgXTsgdGhlbgorLSAgZWNobyAiIgorLSAgZWNobyAiRVJST1IgLSIKKy0gIGVjaG8gIiAgICAgICAgTmV0d29ya2luZyBpcyBub3QgdXAhIgorLSAgZWNobyAiIgorLSAgZWNobyAiQWJvcnRpbmcuLi4iCistICBlY2hvICIiCistICBleGl0IDEKKy1maQorLQorIGlmICEgWyAtZiAke2NvbmZ9IF07IHRoZW4KKyAgIGVjaG8gIiIKKyAgIGVjaG8gIkVSUk9SIC0iCitAQCAtMTgwLDggKzE1Niw4IEBAIGZpCisgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6IHBhcm0gZmlsZSB0ZW1wIGlzICR7cGFybWZpbGV9IjsgZmkKKyAgCisgY21kPWBlY2hvIFwKKy0gICAgQCR7Y29uZn0gXAorICAgICAtaSB0YmQgXAorKyAgICBAJHtjb25mfSBcCisgICAgICRleHRyYSAkQGAKKyAKKyBlY2hvICR7Y21kfSB8IGF3ayAnIFwKK0BAIC0zMDUsNDIgKzI4MSw2IEBAIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSAgICAgIENvbmZpZ3VyYXRpb24KKyAKKyAjIEJ1aWxkIGxpc3Qgb2YgaW50ZXJmYWNlcywgZS5nICBldGgwIGV0aDEgZXRoMToxCisgIyAoWWVhaCwgd2UnbGwgaGF2ZSB0byBjb252ZXJ0IHRoYXQgdG8gZXRoMCxldGgxLGV0aDE6MSBsYXRlcgorLWlmIFsgIi4ke250b3BpbnRlcmZhY2V9IiA9ICIudGJkIiBdOyB0aGVuCistCistICAgIG50b3BpbnRlcmZhY2U9IiIKKy0gICAgaWZsaXN0PWBpcCBsaW5rIHNob3cgfCBcCistICAgICAgICBhd2sgJy9eWzAtOV0qOlwgZXRoLyB7IHByaW50ZigiJXMgIiwgc3Vic3RyKCQyLCAxLCBsZW5ndGgoJDIpLTEpKSB9J2AKKy0gICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFNjYW5uaW5nIGFsbCBpbnRlcmZhY2VzICRpZmxpc3QiCistICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiBJbnRlcmZhY2UgY2FuZGlkYXRlcyBhcmUgJHtpZmxpc3R9IjsgZmkKKy0KKy0gICAgZm9yIGV0aCBpbiAkaWZsaXN0OyBkbworLQorLSAgICAgICBpZiAhIExBTkc9QyBlZ3JlcCAtTCAiXltObl1bVHRdW09vXVtQcF09WydcIl0/W1l5XVtFZV1bU3NdWydcIl0/IiBcCistICAgICAgICAgICAgICAgIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy0kZXRoID4gL2Rldi9udWxsIDsgdGhlbgorLSAgICAgICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSAkZXRoIGlzIG5vdCBudG9wPXllcywgc2tpcHBpbmciCistICAgICAgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6ICRldGggbm90IG50b3A9eWVzIjsgZmkKKy0gICAgICAgICAgICBjb250aW51ZQorLSAgICAgICBmaQorLQorLSAgICAgICBudG9waW50ZXJmYWNlPSIke250b3BpbnRlcmZhY2V9ICRldGgiCistICAKKy0gICAgICAgaXA9YGlwIGFkZHIgc2hvdyAkZXRoIHwgXAorLSAgICAgICAgICAgYXdrICcvaW5ldC8geyBwcmludGYoIiVzIiwgc3Vic3RyKCQyLCAxLCBpbmRleCgkMiwgIi8iKS0xKSkgfSdgCistCistICAgICAgIGlmIFsgIi4kaXAiID0gIi4iIF07IHRoZW4KKy0gICAgICAgICAgIGlzPSJpcyB1bm51bWJlcmVkIGludGVyZmFjZSIKKy0gICAgICAgZWxzZQorLSAgICAgICAgICAgaXM9ImhhcyBJUCBhZGRyZXNzICRpcCIKKy0gICAgICAgZmkKKy0gICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtICRldGggaXMgbnRvcD15ZXMsICR7aXN9IgorLSAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJERUJVRzogJGV0aCBudG9wPXllcywgJHtpc30iOyBmaQorLQorLSAgICBkb25lCistCistZWxzZQorLSAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gU2tpcHBpbmcgaW50ZXJmYWNlIHNjYW4gLSBsaXN0IGluIHBhcm1zIgorLWZpCistCisgaWYgWyAieCR7bnRvcGludGVyZmFjZX0iID0gIngiIF07IHRoZW4KKyAgIG50b3BpbnRlcmZhY2U9Im5vbmUiCisgZmkKK0BAIC00NjIsMTIgKzQwMiw2IEBAIGNvbmZpZ19pbnRlcmZhY2VzICgpIHsKKyAgICAgICAgICAgaWY9IiR7aWZ9LCR7ZXRofSIKKyAgICAgICBmaQorIAorLSAgICAgICBpZiAhIExBTkc9QyBlZ3JlcCAtTCAiXltObl1bVHRdW09vXVtQcF1bQ2NdLio9WydcIl0/W1l5XVtFZV1bU3NdWydcIl0/IiBcCistICAgICAgICAgICAgICAgIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy0kZXRoID4gL2Rldi9udWxsIDsgdGhlbgorLSAgICAgICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSAkZXRoIGlzIG5vdCBudG9wY29uZmlndXJlPXllcywgc2tpcHBpbmciCistICAgICAgICAgICAgY29udGludWUKKy0gICAgICAgZmkKKy0KKyAgICAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gQ29uZmlndXJpbmcgJGV0aCIKKyAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJERUJVRzogQ29uZmlndXJpbmcgJGV0aCI7IGZpCisgCitAQCAtNTI3LDcgKzQ2MSw3IEBAIHN0YXJ0ICgpIHsKKyAgIHNob3dfZXh0cmEKKyAgIGNvbmZpZ19pbnRlcmZhY2VzCisgCistICBjbWQ9YGVjaG8gJHByb2cgXAorKyAgY21kPWBlY2hvIFwKKyAgICAgICAgICAgICAgICBAJHtjb25mfSBcCisgICAgICAgICAgICAgICAgLWkgJGlmIFwKKyAgICAgICAgICAgICAgICAkZXh0cmEgJEBgCitAQCAtNTQxLDcgKzQ3NSw3IEBAIHN0YXJ0ICgpIHsKKyAgIGlmIFsgIi4ke2xkbGlicGF0aH0iICE9ICIuIiBdOyB0aGVuCisgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7bGRsaWJwYXRofSIKKyAgIGZpCistICBkYWVtb24gJHtjbWR9CisrICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjICRwcm9nIC0tICR7Y21kfQorICAgUkVUVkFMPSQ/CisgCisgICBbICRSRVRWQUwgPSAwIF0gJiYgdG91Y2ggL3Zhci9sb2NrL3N1YnN5cy8ke25hbWV9JHtpbnN0YW5jZX0KK0BAIC01NTEsNiArNDg1LDcgQEAgc3RhcnQgKCkgeworIHN0b3AgKCkgeworICAgIyBzdG9wIGRhZW1vbgorIAorKyAgTk9UX1JVTk5JTkc9MQorICAgUkVUVkFMPTEKKyAgIGVjaG8gLW4gJCJTdG9wcGluZyAke25hbWV9JHtpbnN0YW5jZX06ICIKKyAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBTdG9wcGluZzogJHtuYW1lfSR7aW5zdGFuY2V9IgorQEAgLTU2MywxMyArNDk4LDE0IEBAIHN0b3AgKCkgeworICAgICBpZiBbICRyYyA9IDAgXTsgdGhlbgorICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBTZW5kaW5nIFNJR1RFUk0gdG8gJHtwaWR9IgorICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIlNlbmRpbmcgU0lHVEVSTSB0byAke3BpZH0iOyBmaQorLSAgICAgIGtpbGwgLXMgU0lHVEVSTSAke3BpZH0KKysgICAgICBraWxsIC1URVJNICR7cGlkfSAyPiYxID4gL2Rldi9udWxsCisgICAgICAgUkVUVkFMPSQ/CisgICAgICAgcm0gLWYgJHtudG9wZGJmaWxlcGF0aH0vbnRvcC5waWQKKyAgICAgZWxzZSAKKyAgICAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gVW5hYmxlIHRvIGZpbmQgcHJvY2VzcyAke3BpZH0gLi4uIHdpbGwga2lsbCBieSBuYW1lIgorICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIlVuYWJsZSB0byBmaW5kIHByb2Nlc3MgJHtwaWR9IC4uLiB3aWxsIGtpbGwgYnkgbmFtZSI7IGZpCisgICAgIGZpCisrICAgIE5PVF9SVU5OSU5HPTAKKyAgIGVsc2UKKyAKKyAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFVuYWJsZSB0byBmaW5kICR7bnRvcGRiZmlsZXBhdGh9L250b3AucGlkIGZpbGUgLi4uIHdpbGwga2lsbCBieSBuYW1lIgorQEAgLTU3NywxNSArNTEzLDE2IEBAIHN0b3AgKCkgeworIAorICAgZmkKKyAKKy0gIGVjaG8gCistCisgICBpZiBbICRSRVRWQUwgIT0gMCBdOyB0aGVuCisgICAgIHBpZHM9YHBzIGF4ZiB8IGdyZXAgJ1wvdXNyXC9iaW5cL250b3AnIHwgYXdrICd7IHByaW50ZigiICVzIiwgJDEpIH07IEVORCB7IHByaW50ICIiIH0nYAorLSAgICBpZiBbICIke3BpZHN9IiAhPSAiICIgXTsgdGhlbgorKyAgICBpZiBbICIke3BpZHN9IiAhPSAiIiBdOyB0aGVuCisgICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFNlbmRpbmcgU0lHVEVSTSB0byAke3Byb2d9Li4uJHtwaWRzfSIKKyAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJTZW5kaW5nIFNJR1RFUk0gdG8gJHtwcm9nfS4uLiR7cGlkc30iOyBmaQorLSAgICAgIGtpbGwgLUlOVCAke3BpZHN9CisrICAgICAga2lsbCAtVEVSTSAke3BpZHN9ID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICBSRVRWQUw9JD8KKysgICAgICBOT1RfUlVOTklORz0wCisrICAgIGVsc2UKKysgICAgICBOT1RfUlVOTklORz0xCisgICAgIGZpCisgICBmaQorIAorQEAgLTU5NywxMyArNTM0LDkgQEAgc3RvcCAoKSB7CisgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6IFVuY29uZmlndXJpbmcgaW50ZXJmYWNlcyI7IGZpCisgCisgICAgICAgZm9yIGV0aCBpbiAke250b3BpbnRlcmZhY2V9OyBkbworLSAgICAgICAgICBpZiAhIExBTkc9QyBlZ3JlcCAtTCAiXltObl1bVHRdW09vXVtQcF1bQ2NdLio9WydcIl0/W1l5XVtFZV1bU3NdWydcIl0/IiBcCistICAgICAgICAgICAgICAgICAgIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy0kZXRoID4gL2Rldi9udWxsIDsgdGhlbgorLSAgICAgICAgICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtICRldGggaXMgbm90IG50b3Bjb25maWd1cmU9eWVzLCBza2lwcGluZyIKKy0gICAgICAgICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiAkZXRoIGlzIG5vdCBudG9wY29uZmlndXJlPXllcyI7IGZpCistICAgICAgICAgICAgICBjb250aW51ZQorKyAgICAgICAgICBpZiBbICIkZXRoIiA9ICJub25lIiBdOyB0aGVuCisrICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgZmkKKy0KKyAgICAgICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFVuY29uZmlndXJpbmcgJGV0aCIKKyAgICAgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6IFVuY29uZmlndXJpbmcgJGV0aCI7IGZpCisgICAgIAorQEAgLTYyMyw2ICs1NTYsMTMgQEAgc3RvcCAoKSB7CisgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6IEludGVyZmFjZXMgYXJlIHVuY29uZmlndXJlZCI7IGZpCisgICBmaQorIAorKyAgaWYgWyAkTk9UX1JVTk5JTkcgLWVxIDEgLW8gJFJFVFZBTCAtZXEgMCBdOyB0aGVuCisrICAgIGVjaG8gIiBbIE9LIF0iCisrICAgIFJFVFZBTD0wCisrICBlbHNlCisrICAgIGVjaG8gIiBbIEZBSUxFRCBdIgorKyAgZmkKKysKKyAgIHJldHVybiAkUkVUVkFMCisgfQorIAorLS0gCisxLjcuNS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF93ZWJJbnRlcmZhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Bfd2ViSW50ZXJmYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNTdjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Bfd2ViSW50ZXJmYWNlLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK2NoYW5nZSBvc05hbWUgdG8gdmVyc2lvbiBhcyBpdCBwcmludHMgb3V0ICJudG9wIFZlcnNpb24iLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS93ZWJJbnRlcmZhY2UuYyBiL3dlYkludGVyZmFjZS5jCitpbmRleCA1NjIyZTY5Li44Y2I3YTY3IDEwMDY0NAorLS0tIGEvd2ViSW50ZXJmYWNlLmMKKysrKyBiL3dlYkludGVyZmFjZS5jCitAQCAtNTgxNiw3ICs1ODE2LDcgQEAgc3RhdGljIHZvaWQgcHJpbnROdG9wQ29uZmlnSW5mb0RhdGEoaW50IHRleHRQcmludEZsYWcsIFVzZXJQcmVmICpwcmVmKSB7CisgICBwcmludEluZm9TZWN0aW9uVGl0bGUodGV4dFByaW50RmxhZywgIkJhc2ljIEluZm9ybWF0aW9uIik7CisgCisgICBzYWZlX3NucHJpbnRmKF9fRklMRV9fLCBfX0xJTkVfXywgZm9ybWF0QnVmLCBzaXplb2YoZm9ybWF0QnVmKSwgIiVzICglZCBiaXQpIiwKKy0JCW9zTmFtZSwgc2l6ZW9mKGxvbmcpID09IDggPyA2NCA6IDMyKTsKKysJCXZlcnNpb24sIHNpemVvZihsb25nKSA9PSA4ID8gNjQgOiAzMik7CisgICBwcmludEZlYXR1cmVDb25maWdJbmZvKHRleHRQcmludEZsYWcsICJudG9wIFZlcnNpb24iLCBmb3JtYXRCdWYpOworIAorICNpZm5kZWYgV0lOMzIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvdXNlLXN0YXRpYy1pbmxpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL3VzZS1zdGF0aWMtaW5saW5lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDAxYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL3VzZS1zdGF0aWMtaW5saW5lLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK1tQQVRDSF0gcmVwbGFjZSAnaW5saW5lJyB3aXRoICdzdGF0aWMgaW5saW5lJyBmb3IgZ2NjIDUueAorCitnY2MgNS54IGRlZmF1bHRzIHRvIC1zdGQ9Z251MTEgaW5zdGVhZCBvZiAtc3RkPWdudTg5IHdoaWNoIGNoYW5nZQordGhlIHNlbWFudGljcyBmb3IgaW5saW5lIGZ1bmN0aW9ucyBhbmQgdGhlIHN0YW5kYWxvbmUgJ2lubGluZScKK2NhdXNlcyBlcnJvciB3aXRoICJnY2M1IC1nIC1vMCIKKyAKK1JlcGxhY2UgaW5saW5lIHdpdGggc3RhdGljIGlubGluZSB0byBiZSBjb21wYXRpYmxlIHdpdGggYm90aCBnY2MgNAorYW5kIDUuCisKK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBuRFBJL3NyYy9saWIvcHJvdG9jb2xzL3NzbC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbkRQSS9zcmMvbGliL3Byb3RvY29scy9zc2wuYyBiL25EUEkvc3JjL2xpYi9wcm90b2NvbHMvc3NsLmMKK2luZGV4IDI0NWI4YzMuLjcyYmVkYTkgMTAwNjQ0CistLS0gYS9uRFBJL3NyYy9saWIvcHJvdG9jb2xzL3NzbC5jCisrKysgYi9uRFBJL3NyYy9saWIvcHJvdG9jb2xzL3NzbC5jCitAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgdm9pZCBpcG9xdWVfaW50X3NzbF9hZGRfY29ubmVjdGlvbihzdHJ1Y3QgaXBvcXVlX2RldGVjdGlvbl9tb2R1bGVfc3RydWN0CisgCisgI2lmZGVmIEhBVkVfTlRPUAorICNpZm5kZWYgV0lOMzIKKy1pbmxpbmUgaW50IG1pbihpbnQgYSwgaW50IGIpIHsgcmV0dXJuKGEgPCBiID8gYSA6IGIpOyB9Cisrc3RhdGljIGlubGluZSBpbnQgbWluKGludCBhLCBpbnQgYikgeyByZXR1cm4oYSA8IGIgPyBhIDogYik7IH0KKyAjZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCBzdHJpcENlcnRpZmljYXRlVHJhaWxlcihjaGFyICpidWZmZXIsIGludCBidWZmZXJfbGVuKSB7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3BfNS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OGZiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiCkBAIC0wLDAgKzEsMTM3IEBACitTVU1NQVJZID0gIm50b3AgaXMgbmV0d29yayB0b3AiCitERVNDUklQVElPTiA9ICJudG9wIGlzIGEgbmV0d29yayB0cmFmZmljIHByb2JlIHRoYXQgc2hvd3MgdGhlIG5ldHdvcmsgdXNhZ2UsIFwKK3NpbWlsYXIgdG8gd2hhdCB0aGUgcG9wdWxhciB0b3AgVW5peCBjb21tYW5kIGRvZXMuIgorCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJHUEx2MisgJiBHUEx2MyAmIE9wZW5TU0wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLU9wZW5TU0wudHh0O21kNT1hNDA5ZjkwMmU0NDdkZGQ4ODljZmZhMGM3MGU3YzdjMiBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9udG9wL250b3AtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL250b3BfY29uZmlndXJlX2luLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL250b3BfaW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9udG9wX3dlYkludGVyZmFjZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9udG9wX2NvbmZpZ3VyZV9pbl9uZXRfc25tcF9jb25maWdfZXhpc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnRvcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1zdGF0aWMtaW5saW5lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbkRQSS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDE3MTBiNjkyNWE4YTVmZmUxYTQxYjhiNTEyZWJkNjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U4ZTg0Y2IxNGQyMTczYmVhY2E0ZDRjYjk5MWExNGQ4NGE0YmVmODRlYzM3YjIyNzZiYzM2M2Y0NWM1MmVmOCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVzZXJhZGQgcHl0aG9ubmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK0RFUEVORFMgPSAiZ2VvaXAgcnJkdG9vbCBweXRob24gemxpYiBsaWJwY2FwIGdkYm0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHNubXAgcGx1Z2lucyIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXNzbCwgLS13aXRob3V0LXNzbCwgb3BlbnNzbCwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcD15ZXMgTkVUU05NUD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9uZXQtc25tcC1jb25maWcsIFwKKy0tZGlzYWJsZS1zbm1wLG5ldC1zbm1wLCIKK1BBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLS1lbmFibGUtcGx1Z2lucz15ZXMsIC0tZGlzYWJsZS1wbHVnaW5zLCAsIgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2ZpbGVfYWNsb2NhbF9tND15ZXMgYWNfY3ZfZmlsZV9kZXBjb21wPW5vIgorCitkb19jb25maWd1cmUoKSB7CisgICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL2xpYnRvb2wubTQgbGlidG9vbC5tNC5pbgorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30vbkRQSQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9L25EUEkKKyAgICBjYXQgYWNpbmNsdWRlLm00LmluIGFjaW5jbHVkZS5tNC5udG9wIGxpYnRvb2wubTQuaW4gPiBhY2luY2x1ZGUubTQKKyAgICBjcCAzcmRfcGFydHkvKiAuLworCisgICAgIyBjb25maWcgbkRQSQorICAgIGNkIG5EUEkKKyAgICAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9IC0td2l0aC1waWMKKyAgICBjZCAuLgorCisgICAgc2VkIC1pIC1lICdzOl5DRkdfREJGSUxFX0RJUj0kbG9jYWxzdGF0ZWRpci9udG9wOkNGR19EQkZJTEVfRElSPSRsb2NhbHN0YXRlZGlyL2xpYi9udG9wOicgJHtTfS9jb25maWd1cmUuaW4KKworICAgICMgZml4IHRoZSBDRkxBR1MsIENQUEZMQUdTLCBMREZMQUdTLCByZW1vdmUgdGhlIGhvc3QgaW5jbHVkZQorICAgIHNlZCAtaSBcCisgICAgICAgIC1lICdzOlwoXkNGTEFHUz0iXCQuKlwpIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1JL29wdC9sb2NhbC9pbmNsdWRlIjpcMSI6JyBcCisgICAgICAgIC1lICdzOlwoXkNQUEZMQUdTPSJcJC4qXCkgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLUkvb3B0L2xvY2FsL2luY2x1ZGUiOlwxIjonIFwKKyAgICAgICAgLWUgJ3M6XCheTERGTEFHUz0iXCQuKlwpIC1ML3Vzci9sb2NhbC9saWIgLUwvb3B0L2xvY2FsL2xpYiI6XDEiOicgXAorICAgICAgICAke1N9L2NvbmZpZ3VyZS5pbgorCisgICAgIyByZXBsYWNlIHRoZSBESVNUUk8gUkVMRUFTRSBpbiBjb25maWd1cmUuaW4gd2hpY2ggYXJlIGhvc3QncworICAgICMgd2l0aCBvdXIgcmVsZWFzZSwgYWx0aG91Z2ggdGhvc2UgZG9lc24ndCBhZmZlY3QgZnVuY3Rpb25hbGl0eQorICAgIHNlZCAtaSAtZSBcCisgICAgICAgICcvREVGSU5FT1M9IkxJTlVYIi97TjtzL0RJU1RSTz0uKi9ESVNUUk89IiR7RElTVFJPfSIvO047cy9SRUxFQVNFPS4qL1JFTEVBU0U9IiR7RElTVFJPX1ZFUlNJT059Ii87fScgXAorICAgICAgICAke1N9L2NvbmZpZ3VyZS5pbgorCisgICAgIyBvc05hbWUgaW4gb3JpZ2luYWwgY29uZmlndXJlLmluIHNob3VsZCBiZSAke1RBUkdFVF9TWVN9CisgICAgIyB3aGljaCB3aWxsIHNob3cgaW4gbnRvcCdzICJzaG93IGNvbmZpZ3VyYXRpb24iCisgICAgc2VkIC1pIC1lIFwKKyAgICAgICAgJ3M6Xm9zTmFtZT0uKjpvc05hbWU9JHtUQVJHRVRfU1lTfTonIFwKKyAgICAgICAgJHtTfS9jb25maWd1cmUuaW4KKworICAgICMgcmVuYW1lIGNvbmZpZ3VyZWV4dHJhIHRvIGNvbmZpZ3VyZWV4dHJhX3JlbmFtZSB0byBhdm9pZAorICAgICMgY29uZmlndXJlLmluIHRvIGd1ZXNzIGhvc3QgT1MgYW5kIHB1bGwgaW4gbW9yZSBjb25maWd1cmUsIG5vbiBuZWVkZWQKKyAgICAjIHdoaWNoIHdpbGwgY2F1c2Ugc29tZSBjcm9zcy1jb21waWxpbmcgZmFpbHVyZSBvbiBzcGVjaWZpYyBob3N0CisgICAgIyBlLmcuIFNVU0UoU0xFRC4uLikKKyAgICB0ZXN0ICEgLWYgY29uZmlndXJlZXh0cmEgfHwgbXYgLWYgY29uZmlndXJlZXh0cmEgY29uZmlndXJlZXh0cmFfcmVuYW1lCisKKyAgICAjIG1ha2Ugc3VyZSBjb25maWd1cmUgZmluZHMgcHl0aG9uIGluY2x1ZGRpcnMvbGlicyB3aXRoIHRoZXNlIGVudnMKKyAgICBleHBvcnQgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCisgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KKworICAgIGF1dG90b29sc19kb19jb25maWd1cmUKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGNkIG5EUEkKKyAgICBvZV9ydW5tYWtlCisgICAgY2QgLi4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyByZW1vdmUgdGhlIGVtcHR5IGRpcnMKKyAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9wbHVnaW5zCisKKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wYWNrYWdlcy9SZWRIYXQvbnRvcC5pbml0IFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL250b3AKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9wYWNrYWdlcy9SZWRIYXQvbnRvcC5jb25mLnNhbXBsZSBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L250b3AuY29uZgorCisgICAgIyBjaGFuZ2UgbnRvcCBkaXIgaW4gbnRvcC5jb25mCisgICAgIyBkb24ndCB1c2UgdGhlIC1QIGFzIHRoZSBudG9wLmluaXQgZGlkbid0IHN1cHBvcnQgaXQKKyAgICBzZWQgLWkgLWUgInM6Xi0tZGItZmlsZS1wYXRoIC91c3Ivc2hhcmUvbnRvcDotLWRiLWZpbGUtcGF0aCAvdmFyL2xpYi9udG9wOiIgXAorICAgICAgICAtZSAiczpeIz8gLVAgL3Zhci9udG9wOiM/IC1QIC92YXIvbGliL250b3A6IiBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L250b3AuY29uZgorCisgICAgIyBGb3Igc3lzdGVtZAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3BhY2thZ2VzL1JlZEhhdC9udG9wLmluaXQgJHtEfSR7bGliZXhlY2Rpcn0vbnRvcC1oZWxwZXIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRvcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L250b3Auc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbnRvcC5zZXJ2aWNlCisgICAgZmkKKworICAgICMgRml4IGhvc3QtdXNlci1jb250YW1pbmF0ZWQgaXNzdWUKKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorCisgICAgY2hvd24gLVIgbnRvcC5udG9wICR7RH0ke2RhdGFkaXJ9L250b3AKKyAgICBjaG93biAtUiBudG9wOm50b3AgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL250b3AKK30KKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLU0gLWcgbnRvcCAtciAtZCAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9udG9wIFwKKy1zIC91c3Ivc2Jpbi9ub2xvZ2luIC1jICdudG9wJyBudG9wIgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbnRvcCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm50b3Auc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworRklMRVNfJHtQTn1fYXBwZW5kID0gIiR7bGliZGlyfS9udG9wL3BsdWdpbnMgJHtsaWJkaXJ9L2xpYm50b3AtKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm50b3ByZXBvcnQtKi5zbyAke2xpYmRpcn0vbGliKi0ke1BWfS5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWJudG9wLnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnRvcHJlcG9ydC5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5ldGZsb3dQbHVnaW4uc28gJHtsaWJkaXJ9L2xpYnNmbG93UGx1Z2luLnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicnJkUGx1Z2luLnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5hICR7bGliZGlyfS9saWJudG9wcmVwb3J0LmEgJHtsaWJkaXJ9LyoubGEiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zLzAwMDEtdXRpbC5oLWVuZGlhbi5oLWlzLWF2YWlsYWJsZS1vbi1tdXNsLW9uLWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnMvMDAwMS11dGlsLmgtZW5kaWFuLmgtaXMtYXZhaWxhYmxlLW9uLW11c2wtb24tbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1ZTJiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zLzAwMDEtdXRpbC5oLWVuZGlhbi5oLWlzLWF2YWlsYWJsZS1vbi1tdXNsLW9uLWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTBkODYzMTgyMjdhMjNmMDBjZjBmNjYzOWE2Njg1YmI5ZjU3NzFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEyIERlYyAyMDE3IDA5OjQyOjE5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHV0aWwuaDogZW5kaWFuLmggaXMgYXZhaWxhYmxlIG9uIG11c2wgb24gbGludXgKKworanVzdCBjaGVja2luZyBmb3IgZ2xpYmMgYWxvbmUgaXMgbm90IGVub3VnaCBzaW5jZQoraXQgZXhjbHVkZXMgbXVzbCwgdGhlcmVmb3JlIGNoZWNrIGZvciBwbGF0Zm9ybQorYmVpbmcgbGludXggYXMgd2VsbAorCitGaXhlcyBidWlsZCBpc3N1ZXMKKworaW5jbHVkZS9saWJpc25zL3V0aWwuaDoxMTQ6MTI6IGZhdGFsIGVycm9yOiBzeXMvZW5kaWFuLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAjICBpbmNsdWRlIDxzeXMvZW5kaWFuLmg+CisgICAgICAgICAgICBefn5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgaW5jbHVkZS9saWJpc25zL3V0aWwuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGliaXNucy91dGlsLmggYi9pbmNsdWRlL2xpYmlzbnMvdXRpbC5oCitpbmRleCA5YTJiZDEzLi42Y2MxYTFiIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saWJpc25zL3V0aWwuaAorKysrIGIvaW5jbHVkZS9saWJpc25zL3V0aWwuaAorQEAgLTEwMCw3ICsxMDAsNyBAQCBlbnVtIHsKKyAgKiBUaGVyZSdzIG5vIGh0b25sbCB5ZXQKKyAgKi8KKyAjaWZuZGVmIGh0b25sbAorLSMgaWZkZWYgX19HTElCQ19fCisrIyBpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pCisgIyAgaW5jbHVkZSA8ZW5kaWFuLmg+CisgIyAgaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjICBpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45Ny5iYgppbmRleCA0MjBlZjViLi5jYzI5NTllIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zXzAuOTcuYmIKQEAgLTEzLDkgKzEzLDkgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIHN5c3RlbWQiCiAKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvb3Blbi1pc25zIFwKLSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLWlzY3NpL29wZW4taXNucyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXV0aWwuaC1lbmRpYW4uaC1pcy1hdmFpbGFibGUtb24tbXVzbC1vbi1saW51eC5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDUkVWID89ICIwOTk1NDQwNGU5NDhlNDFlYjBmY2U4ZTI4ODM2MDE4YjRjZTNkMjBkIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvMDAwMS1sYW5zZXJ2LVJlbmFtZS1zdHJ1Y3QtcGFyYW1ldGVyLXByaW50Zi1mb3ItbmFtZXNwYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTA1N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaApAQCAtMCwwICsxLDYxOCBAQAorRnJvbSA4YjUxYTZiZjVhNDgyOWQ4YWRkNTM1YTA5OGMwYzA2YTA0OWE5OTU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMjI6NTA6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGFuc2VydjogUmVuYW1lIHN0cnVjdCBwYXJhbWV0ZXIgcHJpbnRmIGZvciBuYW1lc3BhY2UKKyBjb2xsaXNpb24KKworVGhpcyBjb21lcyB0byBmb3JlIHdoZW4gd2UgdXNlIGhhcmRlbmluZyBmbGFncyB3aGVyZSBwcmludGYKK2lzIHRyZWF0ZWQgYXMgbWFjcm8gYW5kIGdldHMgcmVwbGFjZWQgd2l0aCBwcmludGZfY2hrCisKK0ZpeGVzIGVycm9ycyBsaWtlCisKK2Vycm9yOiBubyBtZW1iZXIgbmFtZWQgJ19fcHJpbnRmX2NoaycgaW4gJ3N0cnVjdCBlbXVfb3V0X3MnCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsYW5zZXJ2L09wZW5JUE1JL3NlcnYuaCB8ICAgMiArLQorIGxhbnNlcnYvZW11X2NtZC5jICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGxhbnNlcnYvaXBtaV9zaW0uYyAgICAgIHwgIDEwICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuc2Vydi9PcGVuSVBNSS9zZXJ2LmggYi9sYW5zZXJ2L09wZW5JUE1JL3NlcnYuaAoraW5kZXggZDEyZDYzYS4uODU1NWM4NSAxMDA2NDQKKy0tLSBhL2xhbnNlcnYvT3BlbklQTUkvc2Vydi5oCisrKysgYi9sYW5zZXJ2L09wZW5JUE1JL3NlcnYuaAorQEAgLTUyMiw3ICs1MjIsNyBAQCB1aW50OF90IGlwbWJfY2hlY2tzdW0odWludDhfdCAqZGF0YSwgaW50IHNpemUsIHVpbnQ4X3Qgc3RhcnQpOworIHR5cGVkZWYgc3RydWN0IGVtdV9kYXRhX3MgZW11X2RhdGFfdDsKKyB0eXBlZGVmIHN0cnVjdCBlbXVfb3V0X3MKKyB7CistICAgIHZvaWQgKCpwcmludGYpKHN0cnVjdCBlbXVfb3V0X3MgKm91dCwgY2hhciAqZm9ybWF0LCAuLi4pOworKyAgICB2b2lkICgqZXByaW50Zikoc3RydWN0IGVtdV9vdXRfcyAqb3V0LCBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgIHZvaWQgKmRhdGE7CisgfSBlbXVfb3V0X3Q7CisgCitkaWZmIC0tZ2l0IGEvbGFuc2Vydi9lbXVfY21kLmMgYi9sYW5zZXJ2L2VtdV9jbWQuYworaW5kZXggY2E0NDAzMi4uNTRiNmY3YiAxMDA2NDQKKy0tLSBhL2xhbnNlcnYvZW11X2NtZC5jCisrKysgYi9sYW5zZXJ2L2VtdV9jbWQuYworQEAgLTc2LDcgKzc2LDcgQEAgZW11X2dldF91Y2hhcihlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsIHVuc2lnbmVkIGNoYXIgKnZhbCwgY2hhciAqZXJyc3RyLAorIAlpZiAoZW1wdHlfb2spCisgCSAgICByZXR1cm4gRU5PU1BDOworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgIGlmIChzdHJbMF0gPT0gJ1wnJykgeworQEAgLTg2LDcgKzg2LDcgQEAgZW11X2dldF91Y2hhcihlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsIHVuc2lnbmVkIGNoYXIgKnZhbCwgY2hhciAqZXJyc3RyLAorICAgICAqdmFsID0gc3RydG91bChzdHIsICZ0bXBzdHIsIDApOworICAgICBpZiAoKnRtcHN0ciAhPSAnXDAnKSB7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgCitAQCAtMTA4LDcgKzEwOCw3IEBAIGVtdV9nZXRfdWNoYXJfd2l0aF92YWxzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywKKyAJaWYgKGVtcHR5X29rKQorIAkgICAgcmV0dXJuIEVOT1NQQzsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICAgICBpZiAoc3RyWzBdID09ICdcJycpIHsKK0BAIC0xMzEsNyArMTMxLDcgQEAgZW11X2dldF91Y2hhcl93aXRoX3ZhbHMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLAorICAgICAqdmFsID0gc3RydG91bChzdHIsICZ0bXBzdHIsIDApOworICAgICBpZiAoKnRtcHN0ciAhPSAnXDAnKSB7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgIG91dDoKK0BAIC0xNTAsMTIgKzE1MCwxMiBAQCBlbXVfZ2V0X2JpdG1hc2soZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLCB1aW50MTZfdCAqdmFsLCBjaGFyICplcnJzdHIsCisgCWlmIChlbXB0eV9vaykKKyAJICAgIHJldHVybiBFTk9TUEM7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisgCXJldHVybiBFSU5WQUw7CisgICAgIH0KKyAgICAgaWYgKHN0cmxlbihzdHIpICE9IHNpemUpIHsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqaW52YWxpZCBudW1iZXIgb2YgYml0cyBpbiAlc1xuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKmludmFsaWQgbnVtYmVyIG9mIGJpdHMgaW4gJXNcbiIsIGVycnN0cik7CisgCXJldHVybiBFSU5WQUw7CisgICAgIH0KKyAgICAgKnZhbCA9IDA7CitAQCAtMTY2LDcgKzE2Niw3IEBAIGVtdV9nZXRfYml0bWFzayhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsIHVpbnQxNl90ICp2YWwsIGNoYXIgKmVycnN0ciwKKyAJICAgICp2YWwgfD0gMSA8PCBpOworIAl9IGVsc2UgeworIAkgICAgaWYgKGVycnN0cikKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBiaXQgdmFsdWUgJyVjJyBpbiAlc1xuIiwgc3RyW2pdLAorKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBiaXQgdmFsdWUgJyVjJyBpbiAlc1xuIiwgc3RyW2pdLAorIAkJCSAgICBlcnJzdHIpOworIAkgICAgcmV0dXJuIEVJTlZBTDsKKyAJfQorQEAgLTE4NCwxMyArMTg0LDEzIEBAIGVtdV9nZXRfdWludChlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsIHVuc2lnbmVkIGludCAqdmFsLCBjaGFyICplcnJzdHIpCisgICAgIHN0ciA9IG15c3RydG9rKE5VTEwsICIgXHRcbiIsIHRva3MpOworICAgICBpZiAoIXN0cikgeworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgICp2YWwgPSBzdHJ0b3VsKHN0ciwgJnRtcHN0ciwgMCk7CisgICAgIGlmICgqdG1wc3RyICE9ICdcMCcpIHsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisgCXJldHVybiBFSU5WQUw7CisgICAgIH0KKyAKK0BAIC0yMDYsNyArMjA2LDcgQEAgZW11X2dldF9ieXRlcyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3B0ciwgdW5zaWduZWQgY2hhciAqZGF0YSwgY2hhciAqZXJyc3RyLAorIAorICAgICBpZiAoIXRvaykgeworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgIGlmICgqdG9rID09ICciJykgeworQEAgLTIxNSw3ICsyMTUsNyBAQCBlbXVfZ2V0X2J5dGVzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcHRyLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjaGFyICplcnJzdHIsCisgCXRvaysrOworIAllbmQgPSBzdHJsZW4odG9rKSAtIDE7CisgCWlmICh0b2tbZW5kXSAhPSAnIicpIHsKKy0JICBvdXQtPnByaW50ZihvdXQsICIqKkFTQ0lJICVzIGRvZXNuJ3QgZW5kIGluICdcIiciLCBlcnJzdHIpOworKwkgIG91dC0+ZXByaW50ZihvdXQsICIqKkFTQ0lJICVzIGRvZXNuJ3QgZW5kIGluICdcIiciLCBlcnJzdHIpOworIAkgICAgcmV0dXJuIEVJTlZBTDsKKyAJfQorIAlpZiAoZW5kID4gKGxlbiAtIDEpKQorQEAgLTIyOCw3ICsyMjgsNyBAQCBlbXVfZ2V0X2J5dGVzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcHRyLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjaGFyICplcnJzdHIsCisgCWNoYXIgICAgICAgICBjWzNdOworIAkvKiBIRVggcHcgKi8KKyAJaWYgKHN0cmxlbih0b2spICE9IDMyKSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkhFWCAlcyBub3QgMzIgSEVYIGNoYXJhY3RlcnMgbG9uZyIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipIRVggJXMgbm90IDMyIEhFWCBjaGFyYWN0ZXJzIGxvbmciLCBlcnJzdHIpOworIAkgICAgcmV0dXJuIEVJTlZBTDsKKyAJfQorIAljWzJdID0gJ1wwJzsKK0BAIC0yMzksNyArMjM5LDcgQEAgZW11X2dldF9ieXRlcyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3B0ciwgdW5zaWduZWQgY2hhciAqZGF0YSwgY2hhciAqZXJyc3RyLAorIAkgICAgdG9rKys7CisgCSAgICBkYXRhW2ldID0gc3RydG91bChjLCAmZW5kLCAxNik7CisgCSAgICBpZiAoKmVuZCAhPSAnXDAnKSB7CistCQlvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgSEVYIGNoYXJhY3RlciBpbiAlcyIsIGVycnN0cik7CisrCQlvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIEhFWCBjaGFyYWN0ZXIgaW4gJXMiLCBlcnJzdHIpOworIAkJcmV0dXJuIC0xOworIAkgICAgfQorIAl9CitAQCAtMjYzLDEyICsyNjMsMTIgQEAgcmVhZF9jb21tYW5kX2ZpbGUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgY29uc3QgY2hhciAqY29tbWFuZF9maWxlKQorIAorIAlidWZmZXIgPSBtYWxsb2MoSU5QVVRfQlVGRkVSX1NJWkUpOworIAlpZiAoIWJ1ZmZlcikgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiQ291bGQgbm90IGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnlcbiIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBidWZmZXIgbWVtb3J5XG4iKTsKKyAJICAgIHJ2ID0gRU5PTUVNOworIAkgICAgZ290byBvdXQ7CisgCX0KKyAJd2hpbGUgKGZnZXRzKGJ1ZmZlcitwb3MsIElOUFVUX0JVRkZFUl9TSVpFLXBvcywgZikpIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIiVzIiwgYnVmZmVyK3Bvcyk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiJXMiLCBidWZmZXIrcG9zKTsKKyAJICAgIGlmIChidWZmZXJbcG9zXSA9PSAnIycpCisgCQljb250aW51ZTsKKyAJICAgIHBvcyA9IHN0cmxlbihidWZmZXIpOworQEAgLTMxOCw3ICszMTgsNyBAQCBzZWxfZW5hYmxlKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX21jX2VuYWJsZV9zZWwobWMsIG1heF9yZWNvcmRzLCBmbGFncyk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gZW5hYmxlIHNlbCwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gZW5hYmxlIHNlbCwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTM0Myw5ICszNDMsOSBAQCBzZWxfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX21jX2FkZF90b19zZWwobWMsIHJlY29yZF90eXBlLCBkYXRhLCAmcik7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNlbCwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNlbCwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICBlbHNlCistCW91dC0+cHJpbnRmKG91dCwgIkFkZGVkIHJlY29yZCAlZFxuIiwgcik7CisrCW91dC0+ZXByaW50ZihvdXQsICJBZGRlZCByZWNvcmQgJWRcbiIsIHIpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTM2MSwxNCArMzYxLDE0IEBAIG1haW5fc2RyX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCWlmIChydiA9PSBFTk9TUEMpCisgCSAgICBicmVhazsKKyAJaWYgKHJ2KSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOworIAkgICAgcmV0dXJuIHJ2OworIAl9CisgICAgIH0KKyAKKyAgICAgcnYgPSBpcG1pX21jX2FkZF9tYWluX3NkcihtYywgZGF0YSwgaSk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNkciwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNkciwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTM4OSwxNCArMzg5LDE0IEBAIGRldmljZV9zZHJfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJaWYgKHJ2ID09IEVOT1NQQykKKyAJICAgIGJyZWFrOworIAlpZiAocnYpIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7CisgCSAgICByZXR1cm4gcnY7CisgCX0KKyAgICAgfQorIAorICAgICBydiA9IGlwbWlfbWNfYWRkX2RldmljZV9zZHIobWMsIGx1biwgZGF0YSwgaSk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNkciwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNkciwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTQzOSw3ICs0MzksNyBAQCBzZW5zb3JfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAgICAgd2hpbGUgKHRvaykgeworIAlpZiAoc3RyY21wKHRvaywgInBvbGwiKSA9PSAwKSB7CisgCSAgICBpZiAoaGFuZGxlcikgeworLQkJb3V0LT5wcmludGYob3V0LCAiKipwb2xsIGdpdmVuIHR3aWNlIGluIHNlbnNvclxuIiwgdG9rKTsKKysJCW91dC0+ZXByaW50ZihvdXQsICIqKnBvbGwgZ2l2ZW4gdHdpY2UgaW4gc2Vuc29yXG4iLCB0b2spOworIAkJcmV0dXJuIC0xOworIAkgICAgfQorIAorQEAgLTQ0OSwyNyArNDQ5LDI3IEBAIHNlbnNvcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorIAkgICAgdG9rID0gbXlzdHJ0b2soTlVMTCwgIiBcdFxuIiwgdG9rcyk7CisgCSAgICBpZiAoIXRvaykgeworLQkJb3V0LT5wcmludGYob3V0LCAiKipObyBwb2xsZWQgc2Vuc29yIGhhbmRsZXIgZ2l2ZW5cbiIsIHRvayk7CisrCQlvdXQtPmVwcmludGYob3V0LCAiKipObyBwb2xsZWQgc2Vuc29yIGhhbmRsZXIgZ2l2ZW5cbiIsIHRvayk7CisgCQlyZXR1cm4gLTE7CisgCSAgICB9CisgCisgCSAgICBoYW5kbGVyID0gaXBtaV9zZW5zb3JfZmluZF9oYW5kbGVyKHRvayk7CisgCSAgICBpZiAoIWhhbmRsZXIpIHsKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBzZW5zb3IgaGFuZGxlcjogJXNcbiIsIHRvayk7CisrCQlvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIHNlbnNvciBoYW5kbGVyOiAlc1xuIiwgdG9rKTsKKyAJCXJldHVybiAtMTsKKyAJICAgIH0KKyAKKyAJICAgIHJ2ID0gaGFuZGxlci0+aW5pdChtYywgbHVuLCBudW0sIHRva3MsIGhhbmRsZXItPmNiX2RhdGEsICZyY2JfZGF0YSwKKyAJCQkgICAgICAgJmVycnN0cik7CisgCSAgICBpZiAocnYpIHsKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqRXJyb3IgaW5pdGlhbGl6aW5nIHNlbnNvciBoYW5kbGVyOiAlc1xuIiwgCisrCQlvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciBpbml0aWFsaXppbmcgc2Vuc29yIGhhbmRsZXI6ICVzXG4iLCAKKyAJCQkgICAgZXJyc3RyKTsKKyAJCXJldHVybiBydjsKKyAJICAgIH0KKyAJfSBlbHNlIGlmIChzdHJjbXAodG9rLCAiZXZlbnQtb25seSIpID09IDApIHsKKyAJICAgIGV2ZW50X29ubHkgPSAxOworIAl9IGVsc2UgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipVbmtub3duIHNlbnNvciBvcHRpb246ICVzXG4iLCB0b2spOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqVW5rbm93biBzZW5zb3Igb3B0aW9uOiAlc1xuIiwgdG9rKTsKKyAJICAgIHJldHVybiAtMTsKKyAJfQorIAorQEAgLTQ3Nyw3ICs0NzcsNyBAQCBzZW5zb3JfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAgICAgfQorIAorICAgICBpZiAoaGFuZGxlciAmJiBldmVudF9vbmx5KSB7CistCW91dC0+cHJpbnRmKG91dCwgIioqQW4gZXZlbnQtb25seSBzZW5zb3IgY2Fubm90IGJlIHBvbGxlZFxuIik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKkFuIGV2ZW50LW9ubHkgc2Vuc29yIGNhbm5vdCBiZSBwb2xsZWRcbiIpOworIAlyZXR1cm4gLTE7CisgICAgIH0KKyAKK0BAIC00ODgsNyArNDg4LDcgQEAgc2Vuc29yX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCWlmICghcnYgJiYgaGFuZGxlci0+cG9zdGluaXQpIHsKKyAJICAgIHJ2ID0gaGFuZGxlci0+cG9zdGluaXQocmNiX2RhdGEsICZlcnJzdHIpOworIAkgICAgaWYgKHJ2KSB7CistCQlvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIGluIHNlbnNvciBoYW5kbGVyIHBvc3Rpbml0OiAlc1xuIiwgCisrCQlvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciBpbiBzZW5zb3IgaGFuZGxlciBwb3N0aW5pdDogJXNcbiIsIAorIAkJCSAgICBlcnJzdHIpOworIAkgICAgfQorIAl9CitAQCAtNDk2LDcgKzQ5Niw3IEBAIHNlbnNvcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAlydiA9IGlwbWlfbWNfYWRkX3NlbnNvcihtYywgbHVuLCBudW0sIHR5cGUsIGNvZGUsIGV2ZW50X29ubHkpOworICAgICB9CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNlbnNvciwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRvIHNlbnNvciwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTUzMiw3ICs1MzIsNyBAQCBzZW5zb3Jfc2V0X2JpdChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19zZW5zb3Jfc2V0X2JpdChtYywgbHVuLCBudW0sIGJpdCwgdmFsdWUsIGdlbl9ldmVudCk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBiaXQsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgYml0LCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtNTYzLDcgKzU2Myw3IEBAIHNlbnNvcl9zZXRfYml0X2Nscl9yZXN0KGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqCisgCisgICAgIHJ2ID0gaXBtaV9tY19zZW5zb3Jfc2V0X2JpdF9jbHJfcmVzdChtYywgbHVuLCBudW0sIGJpdCwgZ2VuX2V2ZW50KTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGJpdCwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBiaXQsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC01OTQsNyArNTk0LDcgQEAgc2Vuc29yX3NldF92YWx1ZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19zZW5zb3Jfc2V0X3ZhbHVlKG1jLCBsdW4sIG51bSwgdmFsdWUsIGdlbl9ldmVudCk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB2YWx1ZSwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB2YWx1ZSwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTYzNyw3ICs2MzcsNyBAQCBzZW5zb3Jfc2V0X2h5c3RlcmVzaXMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0bworICAgICBydiA9IGlwbWlfbWNfc2Vuc29yX3NldF9oeXN0ZXJlc2lzKG1jLCBsdW4sIG51bSwgc3VwcG9ydCwgcG9zaXRpdmUsCisgCQkJCSAgICAgICBuZWdhdGl2ZSk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBoeXN0ZXJlc2lzLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGh5c3RlcmVzaXMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC02ODIsNyArNjgyLDcgQEAgc2Vuc29yX3NldF90aHJlc2hvbGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2sKKyAgICAgcnYgPSBpcG1pX21jX3NlbnNvcl9zZXRfdGhyZXNob2xkKG1jLCBsdW4sIG51bSwgc3VwcG9ydCwKKyAJCQkJICAgICAgZW5hYmxlZCwgMSwgdGhyZXNob2xkcyk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHRocmVzaG9sZHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC03NTksNyArNzU5LDcgQEAgc2Vuc29yX3NldF9ldmVudF9zdXBwb3J0KGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoKKyAJCQkJCSAgYXNzZXJ0X3N1cHBvcnQsIGRlYXNzZXJ0X3N1cHBvcnQsCisgCQkJCQkgIGFzc2VydF9lbmFibGVkLCBkZWFzc2VydF9lbmFibGVkKTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHRocmVzaG9sZHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdGhyZXNob2xkcywgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTgxOSw3ICs4MTksNyBAQCBtY19hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAllbHNlIGlmIChzdHJjbXAoInBlcnNpc3Rfc2RyIiwgdG9rKSA9PSAwKQorIAkgICAgZmxhZ3MgfD0gSVBNSV9NQ19QRVJTSVNUX1NEUjsKKyAJZWxzZSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgTUMgZmxhZzogJXNcbiIsIHRvayk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIE1DIGZsYWc6ICVzXG4iLCB0b2spOworIAkgICAgcmV0dXJuIC0xOworIAl9CisgICAgIH0KK0BAIC04MzMsNyArODMzLDcgQEAgbWNfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJCQkgZGV2aWNlX3JldmlzaW9uLCBtYWpvcl9md19yZXYsIG1pbm9yX2Z3X3JldiwKKyAJCQkgZGV2aWNlX3N1cHBvcnQsIG1mZ19pZCwgcHJvZHVjdF9pZCwgZmxhZ3MpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0aGUgTUMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0aGUgTUMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC04OTAsNyArODkwLDcgQEAgbWNfc2V0X3Bvd2VyKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX21jX3NldF9wb3dlcihtYywgcG93ZXIsIGdlbl9pbnQpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBwb3dlciwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHBvd2VyLCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtOTE2LDcgKzkxNiw3IEBAIG1jX2FkZF9mcnVfZGF0YShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHRvayA9IG15c3RydG9rKE5VTEwsICIgXHRcbiIsIHRva3MpOworICAgICBpZiAoIXRvaykgeworLQlvdXQtPnByaW50ZihvdXQsICIqKk5vIEZSVSBkYXRhIHR5cGUgZ2l2ZW4iKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gRlJVIGRhdGEgdHlwZSBnaXZlbiIpOworIAlyZXR1cm4gLTE7CisgICAgIH0KKyAgICAgaWYgKHN0cmNtcCh0b2ssICJmaWxlIikgPT0gMCkgeworQEAgLTkyOSwxMyArOTI5LDEzIEBAIG1jX2FkZF9mcnVfZGF0YShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgCXJ2ID0gZ2V0X2RlbGltX3N0cih0b2tzLCAmZnJ1Zm4sICZlcnJzdHIpOworIAlpZiAocnYpIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqRXJyb3Igd2l0aCBGUlUgZmlsZW5hbWU6ICVkIiwgc3RyZXJyb3IocnYpKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIHdpdGggRlJVIGZpbGVuYW1lOiAlZCIsIHN0cmVycm9yKHJ2KSk7CisgCSAgICByZXR1cm4gcnY7CisgCX0KKyAJcnYgPSBpcG1pX21jX2FkZF9mcnVfZmlsZShtYywgZGV2aWQsIGxlbmd0aCwgZmlsZV9vZmZzZXQsCisgCQkJCSAgKHZvaWQgKikgZnJ1Zm4pOworIAlpZiAocnYpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgRlJVIGZpbGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgRlJVIGZpbGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAJCisgICAgIH0gZWxzZSBpZiAoc3RyY21wKHRvaywgImRhdGEiKSA9PSAwKSB7CisgCWZvciAoaT0wOyBpPGxlbmd0aDsgaSsrKSB7CitAQCAtOTQzLDE0ICs5NDMsMTQgQEAgbWNfYWRkX2ZydV9kYXRhKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJICAgIGlmIChydiA9PSBFTk9TUEMpCisgCQlicmVhazsKKyAJICAgIGlmIChydikgeworLQkJb3V0LT5wcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOworKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKKyAJCXJldHVybiBydjsKKyAJICAgIH0KKyAJfQorIAorIAlydiA9IGVtdV9nZXRfdWNoYXIob3V0LCB0b2tzLCAmZGF0YVtpXSwgImRhdGEgYnl0ZSIsIDEpOworIAlpZiAocnYgIT0gRU5PU1BDKSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkVycm9yOiBpbnB1dCBkYXRhIHRvbyBsb25nIGZvciBGUlVcbiIsIHJ2LCBpKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yOiBpbnB1dCBkYXRhIHRvbyBsb25nIGZvciBGUlVcbiIsIHJ2LCBpKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KKyAKK0BAIC05NTgsOSArOTU4LDkgQEAgbWNfYWRkX2ZydV9kYXRhKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAJcnYgPSBpcG1pX21jX2FkZF9mcnVfZGF0YShtYywgZGV2aWQsIGxlbmd0aCwgTlVMTCwgZGF0YSk7CisgCWlmIChydikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICB9IGVsc2UgeworLQlvdXQtPnByaW50ZihvdXQsICIqKkZSVSB0eXBlIG5vdCBnaXZlbiwgbmVlZCBmaWxlIG9yIGRhdGFcbiIpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipGUlUgdHlwZSBub3QgZ2l2ZW4sIG5lZWQgZmlsZSBvciBkYXRhXG4iKTsKKyAJcnYgPSBFSU5WQUw7CisgICAgIH0KKyAgICAgcmV0dXJuIHJ2OworQEAgLTk4MSwyOCArOTgxLDI4IEBAIG1jX2R1bXBfZnJ1X2RhdGEoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBydiA9IGlwbWlfbWNfZ2V0X2ZydV9kYXRhX2xlbihtYywgZGV2aWQsICZsZW5ndGgpOworICAgICBpZiAocnYpIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworIAlnb3RvIG91dDsKKyAgICAgfQorIAorICAgICBkYXRhID0gbWFsbG9jKGxlbmd0aCk7CisgICAgIGlmICghZGF0YSkgeworLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBvdXQgb2YgbWVtb3J5XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBvdXQgb2YgbWVtb3J5XG4iLCBydik7CisgCWdvdG8gb3V0OworICAgICB9CisgCisgICAgIHJ2ID0gaXBtaV9tY19nZXRfZnJ1X2RhdGEobWMsIGRldmlkLCBsZW5ndGgsIGRhdGEpOworICAgICBpZiAocnYpIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgZXJyb3IgMHgleFxuIiwgcnYpOworIAlnb3RvIG91dDsKKyAgICAgfQorIAorICAgICBmb3IgKGk9MDsgaTxsZW5ndGg7IGkrKykgeworIAlpZiAoKGkgPiAwKSAmJiAoKGkgJSA4KSA9PSAwKSkKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIlxuIik7CistCW91dC0+cHJpbnRmKG91dCwgIiAweCUyLjJ4IiwgZGF0YVtpXSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiXG4iKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIiAweCUyLjJ4IiwgZGF0YVtpXSk7CisgICAgIH0KKy0gICAgb3V0LT5wcmludGYob3V0LCAiXG4iKTsKKysgICAgb3V0LT5lcHJpbnRmKG91dCwgIlxuIik7CisgCisgIG91dDoKKyAgICAgaWYgKGRhdGEpCitAQCAtMTAyMSw3ICsxMDIxLDcgQEAgbWNfc2V0Ym1jKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJcmV0dXJuIHJ2OworICAgICBydiA9IGlwbWlfZW11X3NldF9ibWNfbWMoZW11LCBpcG1iKTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgSVBNQiBhZGRyZXNzXG4iKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBJUE1CIGFkZHJlc3NcbiIpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTEwMzIsNyArMTAzMiw3IEBAIGF0Y2FfZW5hYmxlKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX2VtdV9hdGNhX2VuYWJsZShlbXUpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGVuYWJsZSBBVENBIG1vZGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGVuYWJsZSBBVENBIG1vZGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0xMDU2LDcgKzEwNTYsNyBAQCBhdGNhX3NldF9zaXRlKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX2VtdV9hdGNhX3NldF9zaXRlKGVtdSwgaHdfYWRkcmVzcywgc2l0ZV90eXBlLCBzaXRlX251bWJlcik7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNpdGUgdHlwZSwgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNpdGUgdHlwZSwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTEwNzIsNyArMTA3Miw3IEBAIG1jX3NldF9udW1fbGVkcyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19zZXRfbnVtX2xlZHMobWMsIGNvdW50KTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgbnVtYmVyIG9mIExFRHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBudW1iZXIgb2YgTEVEcywgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTEwODUsNyArMTA4NSw3IEBAIHJlYWRfY21kcyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIGVyciA9IGdldF9kZWxpbV9zdHIodG9rcywgJmZpbGVuYW1lLCAmZXJyc3RyKTsKKyAgICAgaWYgKGVycikgeworLQlvdXQtPnByaW50ZihvdXQsICJDb3VsZCBub3QgZ2V0IGluY2x1ZGUgZmlsZW5hbWU6ICVzXG4iLCBlcnJzdHIpOworKwlvdXQtPmVwcmludGYob3V0LCAiQ291bGQgbm90IGdldCBpbmNsdWRlIGZpbGVuYW1lOiAlc1xuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIGVycjsKKyAgICAgfQorIAorQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHJlYWRfY21kcyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgICAgIHsKKyAJY2hhciAqbmYgPSBtYWxsb2Moc3RybGVuKEJBU0VfQ09ORl9TVFIpICsgc3RybGVuKGZpbGVuYW1lKSArIDIpOworIAlpZiAoIW5mKSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICJPdXQgb2YgbWVtb3J5IGluIGluY2x1ZGVcbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiT3V0IG9mIG1lbW9yeSBpbiBpbmNsdWRlXG4iLCBlcnJzdHIpOworIAkgICAgZ290byBvdXRfZXJyOworIAl9CisgCXN0cmNweShuZiwgQkFTRV9DT05GX1NUUik7CitAQCAtMTEwNyw3ICsxMTA3LDcgQEAgcmVhZF9jbWRzKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJZmlsZW5hbWUgPSBuZjsKKyAJZXJyID0gcmVhZF9jb21tYW5kX2ZpbGUob3V0LCBlbXUsIGZpbGVuYW1lKTsKKyAJaWYgKGVycikgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiQ291bGQgbm90IHJlYWQgaW5jbHVkZSBmaWxlICVzXG4iLCBmaWxlbmFtZSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiQ291bGQgbm90IHJlYWQgaW5jbHVkZSBmaWxlICVzXG4iLCBmaWxlbmFtZSk7CisgCX0KKyAgICAgfQorIAorQEAgLTExNDcsNyArMTE0Nyw3IEBAIGRlYnVnX2NtZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCX0gZWxzZSBpZiAoc3RyY21wKHRvaywgInNvbCIpID09IDApIHsKKyAJICAgIGxldmVsIHw9IERFQlVHX1NPTDsKKyAJfSBlbHNlIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIkludmFsaWQgZGVidWcgbGV2ZWwgJyVzJywgb3B0aW9ucyBhcmUgJ3JhdycgYW5kICdtc2cnXG4iLAorKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIkludmFsaWQgZGVidWcgbGV2ZWwgJyVzJywgb3B0aW9ucyBhcmUgJ3JhdycgYW5kICdtc2cnXG4iLAorIAkJICAgdG9rKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KK0BAIC0xMTY4LDcgKzExNjgsNyBAQCBwZXJzaXN0X2NtZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCX0gZWxzZSBpZiAoc3RyY21wKHRvaywgIm9mZiIpID09IDApIHsKKyAJICAgIHBlcnNpc3RfZW5hYmxlID0gMDsKKyAJfSBlbHNlIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIkludmFsaWQgcGVyc2lzdCB2YWxlICclcycsIG9wdGlvbnMgYXJlICdvbicgYW5kICdvZmYnXG4iLAorKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIkludmFsaWQgcGVyc2lzdCB2YWxlICclcycsIG9wdGlvbnMgYXJlICdvbicgYW5kICdvZmYnXG4iLAorIAkJICAgdG9rKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KK0BAIC0xMTk0LDE4ICsxMTk0LDE4IEBAIGRvX2RlZmluZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIG5hbWUgPSBteXN0cnRvayhOVUxMLCAiIFx0XG4iLCB0b2tzKTsKKyAgICAgaWYgKCFuYW1lKSB7CistCW91dC0+cHJpbnRmKG91dCwgIk5vIHZhcmlhYmxlIG5hbWUgZ2l2ZW4gZm9yIGRlZmluZVxuIik7CisrCW91dC0+ZXByaW50ZihvdXQsICJObyB2YXJpYWJsZSBuYW1lIGdpdmVuIGZvciBkZWZpbmVcbiIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgIGVyciA9IGdldF9kZWxpbV9zdHIodG9rcywgJnZhbHVlLCAmZXJyc3RyKTsKKyAgICAgaWYgKGVycikgeworLQlvdXQtPnByaW50ZihvdXQsICJDb3VsZCBub3QgZ2V0IHZhcmlhYmxlICVzIHZhbHVlOiAlc1xuIiwgbmFtZSwgZXJyc3RyKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIkNvdWxkIG5vdCBnZXQgdmFyaWFibGUgJXMgdmFsdWU6ICVzXG4iLCBuYW1lLCBlcnJzdHIpOworIAlyZXR1cm4gZXJyOworICAgICB9CisgICAgIGVyciA9IGFkZF92YXJpYWJsZShuYW1lLCB2YWx1ZSk7CisgICAgIGlmIChlcnIpIHsKKyAJZnJlZSh2YWx1ZSk7CistCW91dC0+cHJpbnRmKG91dCwgIk91dCBvZiBtZW1vcnkgc2V0dGluZyB2YXJpYWJsZSAlc1xuIiwgbmFtZSk7CisrCW91dC0+ZXByaW50ZihvdXQsICJPdXQgb2YgbWVtb3J5IHNldHRpbmcgdmFyaWFibGUgJXNcbiIsIG5hbWUpOworIAlyZXR1cm4gZXJyOworICAgICB9CisgICAgIHJldHVybiAwOworQEAgLTEzMDEsNyArMTMwMSw3IEBAIGlwbWlfZW11X2NtZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBjaGFyICpjbWRfc3RyKQorIAkJICAgIHJldHVybiBydjsKKyAJCXJ2ID0gaXBtaV9lbXVfZ2V0X21jX2J5X2FkZHIoZW11LCBpcG1iLCAmbWMpOworIAkJaWYgKHJ2KSB7CistCQkgICAgb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIE1DIGFkZHJlc3NcbiIpOworKwkJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgTUMgYWRkcmVzc1xuIik7CisgCQkgICAgcmV0dXJuIHJ2OworIAkJfQorIAkgICAgfQorQEAgLTEzMTIsNyArMTMxMiw3IEBAIGlwbWlfZW11X2NtZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBjaGFyICpjbWRfc3RyKQorIAl9CisgICAgIH0KKyAKKy0gICAgb3V0LT5wcmludGYob3V0LCAiKipVbmtub3duIGNvbW1hbmQ6ICVzXG4iLCBjbWQpOworKyAgICBvdXQtPmVwcmludGYob3V0LCAiKipVbmtub3duIGNvbW1hbmQ6ICVzXG4iLCBjbWQpOworIAorICBvdXQ6CisgICAgIHJldHVybiBydjsKK2RpZmYgLS1naXQgYS9sYW5zZXJ2L2lwbWlfc2ltLmMgYi9sYW5zZXJ2L2lwbWlfc2ltLmMKK2luZGV4IDk0NzJjY2UuLjMwYzRmMjcgMTAwNjQ0CistLS0gYS9sYW5zZXJ2L2lwbWlfc2ltLmMKKysrKyBiL2xhbnNlcnYvaXBtaV9zaW0uYworQEAgLTYwNyw4ICs2MDcsOCBAQCBpc2ltX2xvZyhzeXNfZGF0YV90ICpzeXMsIGludCBsb2d0eXBlLCBtc2dfdCAqbXNnLCBjb25zdCBjaGFyICpmb3JtYXQsCisgCisgICAgIGNvbiA9IGRhdGEtPmNvbnNvbGVzOworICAgICB3aGlsZSAoY29uKSB7CistCWNvbi0+b3V0LnByaW50ZigmY29uLT5vdXQsICIlcyIsIHN0cik7CistCWNvbi0+b3V0LnByaW50ZigmY29uLT5vdXQsICJcbiIpOworKwljb24tPm91dC5lcHJpbnRmKCZjb24tPm91dCwgIiVzIiwgc3RyKTsKKysJY29uLT5vdXQuZXByaW50ZigmY29uLT5vdXQsICJcbiIpOworIAljb24gPSBjb24tPm5leHQ7CisgICAgIH0KKyAjaWYgSEFWRV9TWVNMT0cKK0BAIC05NTYsNyArOTU2LDcgQEAgY29uc29sZV9iaW5kX3JlYWR5KGludCBmZCwgdm9pZCAqY2JfZGF0YSwgb3NfaG5kX2ZkX2lkX3QgKmlkKQorICAgICBuZXdjb24tPnNodXRkb3duX29uX2Nsb3NlID0gMDsKKyAgICAgbmV3Y29uLT50ZWxuZXQgPSAxOworICAgICBuZXdjb24tPnRuX3BvcyA9IDA7CistICAgIG5ld2Nvbi0+b3V0LnByaW50ZiA9IGVtdV9wcmludGY7CisrICAgIG5ld2Nvbi0+b3V0LmVwcmludGYgPSBlbXVfcHJpbnRmOworICAgICBuZXdjb24tPm91dC5kYXRhID0gbmV3Y29uOworIAorICAgICBzZXRzb2Nrb3B0KHJ2LCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksIChjaGFyICopJnZhbCwgc2l6ZW9mKHZhbCkpOworQEAgLTE0NjMsMTAgKzE0NjMsMTAgQEAgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQorICAgICBzdGRpb19jb25zb2xlLnRlbG5ldCA9IDA7CisgICAgIHN0ZGlvX2NvbnNvbGUudG5fcG9zID0gMDsKKyAgICAgaWYgKG5vc3RkaW8pIHsKKy0Jc3RkaW9fY29uc29sZS5vdXQucHJpbnRmID0gZHVtbXlfcHJpbnRmOworKwlzdGRpb19jb25zb2xlLm91dC5lcHJpbnRmID0gZHVtbXlfcHJpbnRmOworIAlzdGRpb19jb25zb2xlLm91dC5kYXRhID0gJnN0ZGlvX2NvbnNvbGU7CisgICAgIH0gZWxzZSB7CistCXN0ZGlvX2NvbnNvbGUub3V0LnByaW50ZiA9IGVtdV9wcmludGY7CisrCXN0ZGlvX2NvbnNvbGUub3V0LmVwcmludGYgPSBlbXVfcHJpbnRmOworIAlzdGRpb19jb25zb2xlLm91dC5kYXRhID0gJnN0ZGlvX2NvbnNvbGU7CisgICAgIH0KKyAgICAgc3RkaW9fY29uc29sZS5uZXh0ID0gTlVMTDsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9kby1ub3QtaW5zdGFsbC1weWMtYW5kLXB5by5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2luY2x1ZGVfc3lzX3R5cGVzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWkuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pcG1pLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS5zZXJ2aWNlCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWhlbHBlciBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1oZWxwZXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktaGVscGVyCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktaGVscGVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1uby1vcGVuaXBtaWd1aS1tYW4ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ODVhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGFhMGRjMDc4M2E2ZmY1ZmI1NmM5MTRiNjQwODM2MjIzZTNjMTkyYmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyOSBEZWMgMjAxNCAxODoxNjowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmUgaG9zdCBwYXRoIGZyb20gbGFfTERGTEFHUworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjcm9zcyBjb21waWxlIHNwZWNpZmljIF0KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNtZGxhbmcvTWFrZWZpbGUuYW0gfCAgICAyICstCisgZ2xpYi9NYWtlZmlsZS5hbSAgICB8ICAgIDQgKystLQorIHRjbC9NYWtlZmlsZS5hbSAgICAgfCAgICAyICstCisgdW5peC9NYWtlZmlsZS5hbSAgICB8ICAgIDQgKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitJbmRleDogT3BlbklQTUktMi4wLjI0L2NtZGxhbmcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBPcGVuSVBNSS0yLjAuMjQub3JpZy9jbWRsYW5nL01ha2VmaWxlLmFtCisrKysgT3BlbklQTUktMi4wLjI0L2NtZGxhbmcvTWFrZWZpbGUuYW0KK0BAIC0xNSw4ICsxNSw3IEBAIGxpYk9wZW5JUE1JY21kbGFuZ19sYV9TT1VSQ0VTID0gY21kbGFuZy4KKyBsaWJPcGVuSVBNSWNtZGxhbmdfbGFfTElCQUREID0gLWxtIFwKKyAJJCh0b3BfYnVpbGRkaXIpL3V0aWxzL2xpYk9wZW5JUE1JdXRpbHMubGEgXAorIAkkKHRvcF9idWlsZGRpcikvbGliL2xpYk9wZW5JUE1JLmxhCistbGliT3BlbklQTUljbWRsYW5nX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKKy0JLUwkKGxpYmRpcikKKytsaWJPcGVuSVBNSWNtZGxhbmdfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikKKyAKKyBiaW5fUFJPR1JBTVMgPSBvcGVuaXBtaXNoCisgCitJbmRleDogT3BlbklQTUktMi4wLjI0L3VuaXgvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBPcGVuSVBNSS0yLjAuMjQub3JpZy91bml4L01ha2VmaWxlLmFtCisrKysgT3BlbklQTUktMi4wLjI0L3VuaXgvTWFrZWZpbGUuYW0KK0BAIC0xMCwxNCArMTAsMTIgQEAgbGliX0xUTElCUkFSSUVTID0gbGliT3BlbklQTUlwb3NpeC5sYSBsaQorIGxpYk9wZW5JUE1JcHRocmVhZF9sYV9TT1VSQ0VTID0gcG9zaXhfdGhyZWFkX29zX2huZC5jIHNlbGVjdG9yLmMKKyBsaWJPcGVuSVBNSXB0aHJlYWRfbGFfTElCQUREID0gLWxwdGhyZWFkICQoR0RCTV9MSUIpIFwKKyAJJCh0b3BfYnVpbGRkaXIpL3V0aWxzL2xpYk9wZW5JUE1JdXRpbHMubGEgJChSVF9MSUIpCistbGliT3BlbklQTUlwdGhyZWFkX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKKy0JLUwkKGxpYmRpcikKKytsaWJPcGVuSVBNSXB0aHJlYWRfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikKKyAKKyBsaWJPcGVuSVBNSXBvc2l4X2xhX1NPVVJDRVMgPSBwb3NpeF9vc19obmQuYyBzZWxlY3Rvci5jCisgbGliT3BlbklQTUlwb3NpeF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvdXRpbHMvbGliT3BlbklQTUl1dGlscy5sYSBcCisgCSQoR0RCTV9MSUIpICQoUlRfTElCKQorLWxpYk9wZW5JUE1JcG9zaXhfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikgXAorLQktTCQobGliZGlyKQorK2xpYk9wZW5JUE1JcG9zaXhfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikKKyAKKyBub2luc3RfSEVBREVSUyA9IGhlYXAuaAorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRmNjNjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjQuYmIKQEAgLTAsMCArMSwxMTAgQEAKK1NVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKK3RvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKK2FuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgorCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAgXAorICAgIG5jdXJzZXMgXAorICAgIG5ldC1zbm1wIFwKKyAgICBvcGVuc3NsIFwKKyAgICBwb3B0IFwKKyAgICBweXRob24gXAorICAgIHN3aWctbmF0aXZlIFwKKyAgICAiCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSAmIEJTRCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT00YjMxOGQ0MTYwZWI2OWM4ZWU1MzQ1MmZlYjFiNGNkZiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vb3BlbmlwbWkvT3BlbklQTUktJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1uby1vcGVuaXBtaWd1aS1tYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfc3lzX3R5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLWhlbHBlciBcCisgICAgICAgICAgIGZpbGU6Ly9pcG1pLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sYW5zZXJ2LVJlbmFtZS1zdHJ1Y3QtcGFyYW1ldGVyLXByaW50Zi1mb3ItbmFtZXNwYWNlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vT3BlbklQTUktJHtQVn0iCitTUkNfVVJJW21kNXN1bV0gPSAiNThmOTU0MmNiZmNiNWZlMjUwYjc3Y2Y4ODM0NWUxZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmNhMzlhMjcwNzEyNzhhOGI3NDYxMDE4MWVkZThkZjUxZTE1NWU1ZTkwMzFiYzhlYWEzNjk5ZDE3MjAyOTJiNCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcGVybD0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24nIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uaW5zdGFsbD0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZ2xpYnZlcj0yLjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnZGJtIgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICJhY19jdl9oZWFkZXJfZ2RibV9oPXllcyxhY19jdl9oZWFkZXJfZ2RibV9oPW5vLGdkYm0sIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcGVybCAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXBlcmwgPSAiIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAorICAgICIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiBcCisgICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKKyAgICAiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisKKyAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgorICAgIGF1dG90b29sc19kb19jb25maWd1cmUKKworICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAorICAgIAorICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCisgICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCisgICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KKyAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCisgICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgorICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCisgICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBlY2hvICJTQUw6IEQgPSAkRCIKKyAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCisgICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKKyAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgorICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCisgICAgdGhlbgorICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAorICAgIGZpCisgCisgICAgIyBmb3Igc3lzdGVtZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQorfQorCitJTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuMy45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjMuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI1MTBkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuMy45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbnZwbi5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01YWFjMjAwMTk5ZmRlNDc1MDE4NzZjYmE3MjYzY2IwYyIKLURFUEVORFMgPSAibHpvIG9wZW5zc2wgaXByb3V0ZTIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TUkNfVVJJID0gImh0dHA6Ly9zd3VwZGF0ZS5vcGVudnBuLm9yZy9jb21tdW5pdHkvcmVsZWFzZXMvb3BlbnZwbi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4tdm9sYXRpbGUuY29uZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI2NTc1NTA0NGFlODhmOTI0OWQ1MDlmNmQwNjFmN2U1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjMTJmZTllYTY0MWFjMTI5MWU3MDMyMmNjNTAwNjQxYzg0ZTU5MDNkZDRmNDBiZjJlZGE3ZTlmMjA5YjJmOWMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBvcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1DRkxBR1MgKz0gIi1mbm8taW5saW5lIgotCi0jIEkgd2FudCBvcGVudnBuIHRvIGJlIGFibGUgdG8gcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgKGhydykKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaXByb3V0ZTIiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGx1Z2luLWF1dGgtcGFtJywgZCl9IgotCi0jIEV4cGxpY2l0bHkgc3BlY2lmeSBJUFJPVVRFIHRvIGJ5cGFzcyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2sgZm9yIC9zYmluL2lwIG9uIHRoZSBob3N0LgotRVhUUkFfT0VDT05GICs9ICJJUFJPVVRFPSR7YmFzZV9zYmluZGlyfS9pcCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9vcGVudnBuICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stc2VydmVyICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1zZXJ2ZXIuY29uZgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stY2xpZW50ICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1jbGllbnQuY29uZgotICAgIGluc3RhbGwgLWRtIDc1NSAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cwotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc2FtcGxlL3NhbXBsZS1rZXlzLyogJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliCi0gICAgICAgIGluc3RhbGwgLWQgLW0gNzEwICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvb3BlbnZwbgotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVudnBuLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKLSAgICAgICAgc2VkIC1pIC1lICdzI0BMT0NBTFNUQVRFRElSQCMke2xvY2Fsc3RhdGVkaXJ9I2cnICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiAke1BOfS1zYW1wbGUgIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXR1biIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbnZwbi9wbHVnaW5zLy5kZWJ1ZyIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1zYW1wbGUgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwOTdmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjMuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbnZwbi5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWI2NDQ5MWVjOThlYjZjNjQ5M2FjNWU0MTE4ZjEwNyIKK0RFUEVORFMgPSAibHpvIG9wZW5zc2wgaXByb3V0ZTIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTUkNfVVJJID0gImh0dHA6Ly9zd3VwZGF0ZS5vcGVudnBuLm9yZy9jb21tdW5pdHkvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG4gXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbkAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuLXZvbGF0aWxlLmNvbmYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMTkyOWY4MmFmZjQwZjNkMTA1ZTVmNzJhYWNmZjljMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZWUzZDNjYTQ2Mjk2MGE1MGE2N2MwZWJkMTg2ZTAxYjZkMTNkYjcwMjc1MjA1NjYzNjk1MTUyYzlhY2E4NTc5IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2Ugb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworQ0ZMQUdTICs9ICItZm5vLWlubGluZSIKKworIyBJIHdhbnQgb3BlbnZwbiB0byBiZSBhYmxlIHRvIHJlYWQgcGFzc3dvcmQgZnJvbSBmaWxlIChocncpCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWlwcm91dGUyIgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcnLCAnLS1kaXNhYmxlLXBsdWdpbi1hdXRoLXBhbScsIGQpfSIKKworIyBFeHBsaWNpdGx5IHNwZWNpZnkgSVBST1VURSB0byBieXBhc3MgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNrIGZvciAvc2Jpbi9pcCBvbiB0aGUgaG9zdC4KK0VYVFJBX09FQ09ORiArPSAiSVBST1VURT0ke2Jhc2Vfc2JpbmRpcn0vaXAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vb3BlbnZwbiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUKKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLXNlcnZlciAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stc2VydmVyLmNvbmYKKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLWNsaWVudCAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stY2xpZW50LmNvbmYKKyAgICBpbnN0YWxsIC1kbSA3NTUgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3NhbXBsZS9zYW1wbGUta2V5cy8qICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYgorICAgICAgICBpbnN0YWxsIC1kIC1tIDcxMCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL29wZW52cG4KKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BlbnZwbi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCisgICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIgJHtQTn0tc2FtcGxlICIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW52cG4vcGx1Z2lucy8uZGVidWciCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAorICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tc2FtcGxlICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWQvMDAwMS1jb25maWd1cmUtRG9udC11c2UtdW5hbWUtdG8tZGV0ZXJtaW5lLXRhcmdldC1PUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWQvMDAwMS1jb25maWd1cmUtRG9udC11c2UtdW5hbWUtdG8tZGV0ZXJtaW5lLXRhcmdldC1PUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjU0OWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3BpbWQvcGltZC8wMDAxLWNvbmZpZ3VyZS1Eb250LXVzZS11bmFtZS10by1kZXRlcm1pbmUtdGFyZ2V0LU9TLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjNlMDQyODFiYWQzNjEyNDlhOGRhZDBjZGUxNTBhODAxZDcyMGY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDE4OjQ2OjUyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogRG9udCB1c2UgdW5hbWUgdG8gZGV0ZXJtaW5lIHRhcmdldCBPUworCitIZWxwcyB3aXRoIGNyb3NzLWNvbXBpbGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA2YzM1YTcyLi5mOTcxNGUyIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0zMSw3ICszMSw3IEBACisgI0RFRlMgKz0gLURTQ09QRURfQUNMCisgIworIAorLU9TPWB1bmFtZWAKKytPUz0iTGludXgiCisgQ0ZHPWNvbmZpZy5taworIFRNUD1gbWt0ZW1wIC90bXAvWFhYWFhYYAorIEJVR1JFUE9SVF9VUkw9Imh0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvcGltZC9pc3N1ZXMiCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kXzIuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3BpbWQvcGltZF8yLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkYjY0Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kXzIuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJwaW1kIGlzIGEgbGlnaHR3ZWlnaHQgc3RhbmQtYWxvbmUgUElNLVNNIHYyIG11bHRpY2FzdCByb3V0aW5nIGRhZW1vbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vdHJvZ2xvYml0LmNvbS9waW1kLmh0bWwiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTRmMTA4ZjkxZmFiNzIwZDYyNDI1NzcwYjcwZGQ3OTAiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLnRyb2dsb2JpdC5jb20vcGltZC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImExMjQ0OGJjN2M5YmZjZWJmNTFhMTNlYmYxZmZhOTYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxMDE2OTQwNTQzYTBhNjEzMWQ0ZTZjOTFiNTk1ZDQ3ZTE4NzAxMmM1OWEyOThlZWMxNGMzZGJjMzg1NjRiM2EiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotQ0ZMQUdTICs9ICItSSAke1N9L2luY2x1ZGUgIgotCi1kb19pbnN0YWxsKCkgewotICAgIHVuc2V0IGRhdGFkaXIKLSAgICB1bnNldCBtYW5kaXIKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3BpbWQvcGltZF8yLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWRfMi4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhYTdjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWRfMi4zLjIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJwaW1kIGlzIGEgbGlnaHR3ZWlnaHQgc3RhbmQtYWxvbmUgUElNLVNNIHYyIG11bHRpY2FzdCByb3V0aW5nIGRhZW1vbi4iCitIT01FUEFHRSA9ICJodHRwOi8vdHJvZ2xvYml0LmNvbS9waW1kLmh0bWwiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTRmMTA4ZjkxZmFiNzIwZDYyNDI1NzcwYjcwZGQ3OTAiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLnRyb2dsb2JpdC5jb20vcGltZC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtRG9udC11c2UtdW5hbWUtdG8tZGV0ZXJtaW5lLXRhcmdldC1PUy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhM2MwM2U0MDU0MDk4MGIyYzA2ZTI2NWExNzk4OGU2MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzdhOTgxMjc1MWYxMTQ0OTBhMjhhNjgzOWIxNmFhYzhiMDIwYzhkOWZkNmFhMjJiZjM4ODBjMDU0ZTE5ZjFkIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1lbWJlZGRlZC1saWJjIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworZG9fY29uZmlndXJlKCkgeworICAgIG9lX3J1bmNvbmYKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWJjMzk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAyYTNhYjA0YmJkYzQ2MjQ3OTI4ODZhYTUxNTc5ZWFkYjQyN2VmOTllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDc6NDI6MTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVtb3J5Lmg6IEluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYnN0cm9uZ3N3YW4vdXRpbHMvdXRpbHMvbWVtb3J5LmggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN0cm9uZ3N3YW4vdXRpbHMvdXRpbHMvbWVtb3J5LmggYi9zcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaAoraW5kZXggYjk3OGU3Yy4uNTVhYWFmNSAxMDA2NDQKKy0tLSBhL3NyYy9saWJzdHJvbmdzd2FuL3V0aWxzL3V0aWxzL21lbW9yeS5oCisrKysgYi9zcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaAorQEAgLTIyLDYgKzIyLDggQEAKKyAjaWZuZGVmIE1FTU9SWV9IXworICNkZWZpbmUgTUVNT1JZX0hfCisgCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworIC8qKgorICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBiaW5hcnkgYmxvYnMgZm9yIGVxdWFsaXR5CisgICovCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYzMjE0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLURFU0NSSVBUSU9OID0gInN0cm9uZ1N3YW4gaXMgYW4gT3BlblNvdXJjZSBJUHNlYyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFwKLUxpbnV4IG9wZXJhdGluZyBzeXN0ZW0uIgotU1VNTUFSWSA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN0cm9uZ3N3YW4ub3JnIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gImdtcCBvcGVuc3NsIGZsZXgtbmF0aXZlIGZsZXggYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5zdHJvbmdzd2FuLm9yZy9zdHJvbmdzd2FuLSR7UFZ9LnRhci5iejIgXAotICAgICAgICBmaWxlOi8vZml4LWZ1bnRpb24tcGFyYW1ldGVyLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlYmE5NDc0ZjdkYzZjOGM4ZDcwMzcyNjEzNThlNjhkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyMGIzMDE5OTFmNzdiZGVkZDhkNTUxYTk1NmY1MmUyZDExNjg2YTBlYzE4ZTgzMjA5NGY4NmNmMmI4NDJhYjciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCi0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLycsICctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLCBkKX0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNoYXJvbiBjdXJsIGdtcCBvcGVuc3NsIHN0cm9rZSBzcWxpdGUzIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2Flc25pXSA9ICItLWVuYWJsZS1hZXNuaSwtLWRpc2FibGUtYWVzbmksLCR7UE59LXBsdWdpbi1hZXNuaSIKLVBBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKLVBBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgotUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCi1QQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCi1QQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKLQotIyByZXF1aXJlcyBzd2FuY3RsCi1QQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCi1BTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgotTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCi0KLXB5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgewotICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQotICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQotCi0gICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKLSAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKLSAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2csIFRydWUpCi0gICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKLQotICAgICAgICBpZiBub3Qgb2xkZmlsZXM6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKLQotICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKLQotICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKLSAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLQotICAgIGlmIHNwbGl0X3BhY2thZ2VzOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCi0gICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKLQotIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCi0jIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQTn0tcGx1Z2luLWFlcyBcCi0gICAgJHtQTn0tcGx1Z2luLWF0dHIgXAotICAgICR7UE59LXBsdWdpbi1jbWFjIFwKLSAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAotICAgICR7UE59LXBsdWdpbi1kZXMgXAotICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAotICAgICR7UE59LXBsdWdpbi1obWFjIFwKLSAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAotICAgICR7UE59LXBsdWdpbi1tZDUgXAotICAgICR7UE59LXBsdWdpbi1ub25jZSBcCi0gICAgJHtQTn0tcGx1Z2luLXBlbSBcCi0gICAgJHtQTn0tcGx1Z2luLXBncCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczcgXAotICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCi0gICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCi0gICAgJHtQTn0tcGx1Z2luLXJjMiBcCi0gICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAotICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKLSAgICAke1BOfS1wbHVnaW4tc2hhMSBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTIgXAotICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCi0gICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCi0gICAgJHtQTn0tcGx1Z2luLXZpY2kgXAotICAgICR7UE59LXBsdWdpbi14NTA5IFwKLSAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCi0gICAgJHtQTn0tcGx1Z2luLXhjYmMgXAotICAgICIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzd2FuY3RsJywgJyR7QlBOfS1zd2FuY3RsLnNlcnZpY2UnLCAnJHtCUE59LnNlcnZpY2UnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI1NmJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMy5iYgpAQCAtMCwwICsxLDEzMSBAQAorREVTQ1JJUFRJT04gPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIGZvciB0aGUgXAorTGludXggb3BlcmF0aW5nIHN5c3RlbS4iCitTVU1NQVJZID0gInN0cm9uZ1N3YW4gaXMgYW4gT3BlblNvdXJjZSBJUHNlYyBpbXBsZW1lbnRhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3Ryb25nc3dhbi5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ21wIG9wZW5zc2wgZmxleC1uYXRpdmUgZmxleCBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnN0cm9uZ3N3YW4ub3JnL3N0cm9uZ3N3YW4tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZnVudGlvbi1wYXJhbWV0ZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YWZmZmUzYzIxOWJiMmUwNGYwOTUxMDkwNWFmODM2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWVhNTRiMTk5MTc0NzA4ZGUxMWFmOWI4ZjRlY2YyOGI1YjA3NDNkNGJjMGUzODBlNzQxZjI1YjI4YzBmOGQ0IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgLS13aXRob3V0LWxpYi1wcmVmaXggXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgorCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjaGFyb24gY3VybCBnbXAgb3BlbnNzbCBzdHJva2Ugc3FsaXRlMyBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thZXNuaV0gPSAiLS1lbmFibGUtYWVzbmksLS1kaXNhYmxlLWFlc25pLCwke1BOfS1wbHVnaW4tYWVzbmkiCitQQUNLQUdFQ09ORklHW2NoYXJvbl0gPSAiLS1lbmFibGUtY2hhcm9uLC0tZGlzYWJsZS1jaGFyb24sIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsJHtQTn0tcGx1Z2luLWN1cmwiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS1lbmFibGUtZ21wLC0tZGlzYWJsZS1nbXAsZ21wLCR7UE59LXBsdWdpbi1nbXAiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsb3BlbmxkYXAsJHtQTn0tcGx1Z2luLWxkYXAiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1LCR7UE59LXBsdWdpbi1teXNxbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsLCR7UE59LXBsdWdpbi1vcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzY2VwXSA9ICItLWVuYWJsZS1zY2VwY2xpZW50LC0tZGlzYWJsZS1zY2VwY2xpZW50LCIKK1BBQ0tBR0VDT05GSUdbc291cF0gPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCwke1BOfS1wbHVnaW4tc291cCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMywke1BOfS1wbHVnaW4tc3FsaXRlIgorUEFDS0FHRUNPTkZJR1tzdHJva2VdID0gIi0tZW5hYmxlLXN0cm9rZSwtLWRpc2FibGUtc3Ryb2tlLCwke1BOfS1wbHVnaW4tc3Ryb2tlIgorUEFDS0FHRUNPTkZJR1tzd2FuY3RsXSA9ICItLWVuYWJsZS1zd2FuY3RsLC0tZGlzYWJsZS1zd2FuY3RsLCxsaWJnY2MiCisKKyMgcmVxdWlyZXMgc3dhbmN0bAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kLWNoYXJvbl0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCxzeXN0ZW1kLCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBwa2djb25maWcKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1pcHNlYyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGJnICs9ICIke2JpbmRpcn0vLmRlYnVnICR7bGliZGlyfS9pcHNlYy8uZGVidWcgJHtsaWJleGVjZGlyfS9pcHNlYy8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9pcHNlYy8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vaXBzZWMvKi5hIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8qLmNvbmYgJHtzeXNjb25mZGlyfS9pcHNlYy5kLyouY29uZiAke3N5c2NvbmZkaXJ9L3N0cm9uZ3N3YW4uZC8qLmNvbmYiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1wbHVnaW5zIgorQUxMT1dfRU1QVFlfJHtQTn0tcGx1Z2lucyA9ICIxIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qJCIKK05PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgorCitweXRob24gc3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICgpIHsKKyAgICBzeXNjb25mZGlyID0gZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kL2NoYXJvbicpCisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9pcHNlYy9wbHVnaW5zJykKKyAgICBkYmdsaWJkaXIgPSBvcy5wYXRoLmpvaW4obGliZGlyLCAnLmRlYnVnJykKKworICAgIGRlZiBhZGRfcGx1Z2luX2NvbmYoZiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgbW9kdWxlbmFtZSk6CisgICAgICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCisgICAgICAgIG9sZGZpbGVzID0gZC5nZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBUcnVlKQorICAgICAgICBuZXdmaWxlID0gJy8nICsgb3MucGF0aC5yZWxwYXRoKGYsIGR2YXIpCisKKyAgICAgICAgaWYgbm90IG9sZGZpbGVzOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBuZXdmaWxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBvbGRmaWxlcyArICIgIiArIG5ld2ZpbGUpCisKKyAgICBzcGxpdF9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c2NvbmZkaXIsICcoLiopXC5jb25mJywgJyR7UE59LXBsdWdpbi0lcycsICdzdHJvbmdTd2FuICVzIHBsdWdpbicsIHByZXBlbmQ9VHJ1ZSwgaG9vaz1hZGRfcGx1Z2luX2NvbmYpCisKKyAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBkYmdsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLnNvJywgJyR7UE59LXBsdWdpbi0lcy1kYmcnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZWJ1Z2dpbmcgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRiZycpCisgICAgc3BsaXRfZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5sYScsICcke1BOfS1wbHVnaW4tJXMtZGV2JywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGV2ZWxvcG1lbnQgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCisgICAgc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5hJywgJyR7UE59LXBsdWdpbi0lcy1zdGF0aWNkZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcyAoU3RhdGljIExpYnJhcmllcyknLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCisKKyAgICBpZiBzcGxpdF9wYWNrYWdlczoKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgICAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1wbHVnaW5zJywgJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kYmcnLCAnICcgKyAnICcuam9pbihzcGxpdF9kYmdfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9kZXZfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1zdGF0aWNkZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQorfQorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3N0cm9uZ3N3YW5fcGx1Z2lucyAiCisKKyMgSW5zdGFsbCBzb21lIGRlZmF1bHQgcGx1Z2lucyBiYXNlZCBvbiBkZWZhdWx0IHN0cm9uZ1N3YW4gLi9jb25maWd1cmUgb3B0aW9ucworIyBTZWUgaHR0cHM6Ly93aWtpLnN0cm9uZ3N3YW4ub3JnL3Byb2plY3RzL3N0cm9uZ3N3YW4vd2lraS9QbHVnaW5saXN0CitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UE59LXBsdWdpbi1hZXMgXAorICAgICR7UE59LXBsdWdpbi1hdHRyIFwKKyAgICAke1BOfS1wbHVnaW4tY21hYyBcCisgICAgJHtQTn0tcGx1Z2luLWNvbnN0cmFpbnRzIFwKKyAgICAke1BOfS1wbHVnaW4tZGVzIFwKKyAgICAke1BOfS1wbHVnaW4tZG5za2V5IFwKKyAgICAke1BOfS1wbHVnaW4taG1hYyBcCisgICAgJHtQTn0tcGx1Z2luLWtlcm5lbC1uZXRsaW5rIFwKKyAgICAke1BOfS1wbHVnaW4tbWQ1IFwKKyAgICAke1BOfS1wbHVnaW4tbm9uY2UgXAorICAgICR7UE59LXBsdWdpbi1wZW0gXAorICAgICR7UE59LXBsdWdpbi1wZ3AgXAorICAgICR7UE59LXBsdWdpbi1wa2NzMSBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3M3IFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczggXAorICAgICR7UE59LXBsdWdpbi1wa2NzMTIgXAorICAgICR7UE59LXBsdWdpbi1wdWJrZXkgXAorICAgICR7UE59LXBsdWdpbi1yYW5kb20gXAorICAgICR7UE59LXBsdWdpbi1yYzIgXAorICAgICR7UE59LXBsdWdpbi1yZXNvbHZlIFwKKyAgICAke1BOfS1wbHVnaW4tcmV2b2NhdGlvbiBcCisgICAgJHtQTn0tcGx1Z2luLXNoYTEgXAorICAgICR7UE59LXBsdWdpbi1zaGEyIFwKKyAgICAke1BOfS1wbHVnaW4tc29ja2V0LWRlZmF1bHQgXAorICAgICR7UE59LXBsdWdpbi1zc2hrZXkgXAorICAgICR7UE59LXBsdWdpbi11cGRvd24gXAorICAgICR7UE59LXBsdWdpbi12aWNpIFwKKyAgICAke1BOfS1wbHVnaW4teDUwOSBcCisgICAgJHtQTn0tcGx1Z2luLXhhdXRoLWdlbmVyaWMgXAorICAgICR7UE59LXBsdWdpbi14Y2JjIFwKKyAgICAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0tc3dhbmN0bC5zZXJ2aWNlJywgJyR7QlBOfS5zZXJ2aWNlJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbC9maXgtb3BlbnNzbC1uby1kZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3R1bm5lbC9zdHVubmVsL2ZpeC1vcGVuc3NsLW5vLWRlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDliMGRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbC9maXgtb3BlbnNzbC1uby1kZXMucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1doZW4gb3BlbnNzbCBkaXNhYmxlIGRlcyBzdXBwb3J0IHdpdGggY29uZmlndXJlIG9wdGlvbiAnbm8tZGVzJywgaXQgZG9lc24ndAorcHJvdmlkZSBkZXMgcmVsYXRlZCBoZWFkZXIgZmlsZSBhbmQgZnVuY3Rpb25zLiBUaGF0IGNhdXNlcyBzdHVubmVsIGNvbXBpbGUKK2ZhaWxlZC4gRml4IGl0IGJ5IGNoZWNraW5nIG1hY3JvIE9QRU5TU0xfTk9fREVTIHRvIHVzZSBvcGVuc3NsIGRlcyByZWxhdGVkCitsaWJyYXJ5IGNvbmRpdGlvbmFseS4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uLmggYi9zcmMvY29tbW9uLmgKK2luZGV4IGY3ZDM4YjAuLmJmNDg1YWYgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uLmgKKysrKyBiL3NyYy9jb21tb24uaAorQEAgLTQ3MSw3ICs0NzEsOSBAQCBleHRlcm4gY2hhciAqc3lzX2Vycmxpc3RbXTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fTUQ0CisgI2luY2x1ZGUgPG9wZW5zc2wvbWQ0Lmg+CisgI2VuZGlmIC8qICFkZWZpbmVkKE9QRU5TU0xfTk9fTUQ0KSAqLworKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAjaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4KKysjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fREgKKyAjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgorICNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPDB4MTAxMDAwMDBMCitkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvY29sLmMgYi9zcmMvcHJvdG9jb2wuYworaW5kZXggNTg3ZGYwOS4uODE5OGViNiAxMDA2NDQKKy0tLSBhL3NyYy9wcm90b2NvbC5jCisrKysgYi9zcmMvcHJvdG9jb2wuYworQEAgLTY2LDcgKzY2LDcgQEAgTk9FWFBPUlQgY2hhciAqaW1hcF9zZXJ2ZXIoQ0xJICosIFNFUlZJQ0VfT1BUSU9OUyAqLCBjb25zdCBQSEFTRSk7CisgTk9FWFBPUlQgY2hhciAqbm50cF9jbGllbnQoQ0xJICosIFNFUlZJQ0VfT1BUSU9OUyAqLCBjb25zdCBQSEFTRSk7CisgTk9FWFBPUlQgY2hhciAqY29ubmVjdF9zZXJ2ZXIoQ0xJICosIFNFUlZJQ0VfT1BUSU9OUyAqLCBjb25zdCBQSEFTRSk7CisgTk9FWFBPUlQgY2hhciAqY29ubmVjdF9jbGllbnQoQ0xJICosIFNFUlZJQ0VfT1BUSU9OUyAqLCBjb25zdCBQSEFTRSk7CistI2lmbmRlZiBPUEVOU1NMX05PX01ENAorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX01ENCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19ERVMpCisgTk9FWFBPUlQgdm9pZCBudGxtKENMSSAqLCBTRVJWSUNFX09QVElPTlMgKik7CisgTk9FWFBPUlQgY2hhciAqbnRsbTEoKTsKKyBOT0VYUE9SVCBjaGFyICpudGxtMyhjaGFyICosIGNoYXIgKiwgY2hhciAqLCBjaGFyICopOworQEAgLTExNzUsNyArMTE3NSw3IEBAIE5PRVhQT1JUIGNoYXIgKmNvbm5lY3RfY2xpZW50KENMSSAqYywgU0VSVklDRV9PUFRJT05TICpvcHQsIGNvbnN0IFBIQVNFIHBoYXNlKSB7CisgICAgIGZkX3ByaW50ZihjLCBjLT5yZW1vdGVfZmQuZmQsICJIb3N0OiAlcyIsIG9wdC0+cHJvdG9jb2xfaG9zdCk7CisgICAgIGlmKG9wdC0+cHJvdG9jb2xfdXNlcm5hbWUgJiYgb3B0LT5wcm90b2NvbF9wYXNzd29yZCkgeworICAgICAgICAgaWYoIXN0cmNhc2VjbXAob3B0LT5wcm90b2NvbF9hdXRoZW50aWNhdGlvbiwgIm50bG0iKSkgeworLSNpZm5kZWYgT1BFTlNTTF9OT19NRDQKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19NRDQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fREVTKQorICAgICAgICAgICAgIG50bG0oYywgb3B0KTsKKyAjZWxzZQorICAgICAgICAgICAgIHNfbG9nKExPR19FUlIsICJOVExNIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUiKTsKK0BAIC0xMjE2LDcgKzEyMTYsNyBAQCBOT0VYUE9SVCBjaGFyICpjb25uZWN0X2NsaWVudChDTEkgKmMsIFNFUlZJQ0VfT1BUSU9OUyAqb3B0LCBjb25zdCBQSEFTRSBwaGFzZSkgeworICAgICByZXR1cm4gTlVMTDsKKyB9CisgCistI2lmbmRlZiBPUEVOU1NMX05PX01ENAorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX01ENCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19ERVMpCisgCisgLyoKKyAgKiBOVExNIGNvZGUgaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbF81LjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbF81LjM1LmJiCmluZGV4IDNlMmUyYzIuLmVjODQ3OGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS4zNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3R1bm5lbC9zdHVubmVsXzUuMzUuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlByb2dyYW0gZm9yIHByb3ZpZGluZyB1bml2ZXJzYWwgVExTL1NTTCB0dW5uZWxpbmcgc2VydmljZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3R1bm5lbC5vcmcvIgogREVTQ1JJUFRJT04gPSAiU1NMIGVuY3J5cHRpb24gd3JhcHBlciBiZXR3ZWVuIHJlbW90ZSBjbGllbnQgYW5kIGxvY2FsIChpbmV0ZC1zdGFydGFibGUpIG9yIHJlbW90ZSBzZXJ2ZXIuIgogU0VDVElPTiA9ICJuZXQiCiBMSUNFTlNFID0gIkdQTHYyIgpAQCAtNyw3ICs4LDkgQEAKIAogUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLnN0dW5uZWwub3JnL3N0dW5uZWwvYXJjaGl2ZS81LngvJHtCUH0udGFyLmd6IgorU1JDX1VSSSA9ICJmdHA6Ly9mdHAuc3R1bm5lbC5vcmcvc3R1bm5lbC9hcmNoaXZlLzUueC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LW9wZW5zc2wtbm8tZGVzLnBhdGNoIFwKKyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjkwNzlmNWZhZmJjY2FmODhiN2Q5MmIyMjdkNzgyNDlhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmYTM4NmFlNGM4MjVmMzVmMzUxNTdjMjg1ZTc0MDJhNmQ1ODc3OWFkOGMzODIyZjc0YTlkMzU1YjU0YWJhMWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wL3RjcGR1bXAtY29uZmlndXJlLWRscGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wL3RjcGR1bXAtY29uZmlndXJlLWRscGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZTJkNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC90Y3BkdW1wLWNvbmZpZ3VyZS1kbHBpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotW1BBVENIXSB0Y3BkdW1wOiBjcm9zcy1jb21waWxpbmcgbm90IGNoZWNrIGRscGkuCi0KLUZvciBjcm9zcy1jb21waWxpbmcgb24gTGludXggcGxhdGZvcm1zLCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBsaWJkbHBpIAotc2luY2UgaXQgaXMgb25seSBwbGFjZWQgb24gU29sYXJpcy4KLUFsc28sIGNoZWNraW5nIGxpYmRscGkgaW4gbmF0aXZlIC9saWIgd291bGQgY2F1c2UgZG9fcWFfY29uZmlndXJlIGZhaWwuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZy4KLQotU2lnbmVkLW9mZi1ieTogWGluIE91eWFuZyA8WGluLk91eWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgICAgNCArKystCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDdmOTU5MWMuLmNhMjc3YzAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTcxNiw3ICs3MTYsOSBAQCBkb24ndC5dKQotIGZpCi0gCi0gIyBsaWJkbHBpIGlzIG5lZWRlZCBmb3IgU29sYXJpcyAxMSBhbmQgbGF0ZXIuCi0tQUNfQ0hFQ0tfTElCKGRscGksIGRscGlfd2FsaywgTElCUz0iJExJQlMgLWxkbHBpIiBMREZMQUdTPSItTC9saWIgJExERkxBR1MiLCAsLUwvbGliKQotK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgotKwlBQ19DSEVDS19MSUIoZGxwaSwgZGxwaV93YWxrLCBMSUJTPSIkTElCUyAtbGRscGkiIExERkxBR1M9Ii1ML2xpYiAkTERGTEFHUyIsICwtTC9saWIpCi0rZmkKLSAKLSBkbmwgcG9ydGFiaWxpdHkgbWFjcm9zIGZvciBnZXRhZGRyaW5mby9nZXRuYW1laW5mbwotIGRubAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXBfNC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wXzQuOS4yLmJiCmluZGV4IDg1ZGI2OTMuLmQzODU0MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXBfNC45LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcF80LjkuMi5iYgpAQCAtOCw3ICs4LDYgQEAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vd3d3LnRjcGR1bXAub3JnL3JlbGVhc2UvJHtCUH0udGFyLmd6IFwKICAgICBmaWxlOi8vdW5uZWNlc3NhcnktdG8tY2hlY2stbGlicGNhcC5wYXRjaCBcCi0gICAgZmlsZTovL3RjcGR1bXAtY29uZmlndXJlLWRscGkucGF0Y2ggXAogICAgIGZpbGU6Ly9hZGQtcHRlc3QucGF0Y2ggXAogICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwcmVwbGF5L3RjcHJlcGxheV80LjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVlOWQ3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwcmVwbGF5L3RjcHJlcGxheV80LjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlIHByZXZpb3VzbHkgY2FwdHVyZWQgdHJhZmZpYyB0byB0ZXN0IG5ldHdvcmsgZGV2aWNlcyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3RjcHJlcGxheS5zeW5maW4ubmV0LyIKLVNFQ1RJT04gPSAibmV0IgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFO21kNT04OTBiODMwYjIyZmQ2MzJlOWZmZDk5NmRmMjAzMzhmOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3RjcHJlcGxheS8ke1BWfS90Y3ByZXBsYXktJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzEwNWIxMGIwN2RiYzBiMDdjZTJkYTA3YTIzNjgzNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE0ODMzNDdlODNhOWI1ZGYwZTBkYmIwZjgyMmEyZDM3MjM2ZTc5ZGRhMzVmNGJjNGU2Njg0ZmE4MjdmMjVlYSIKLQotREVQRU5EUyA9ICJsaWJwY2FwIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJwY2FwPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyIgotCi1pbmhlcml0IHNpdGVpbmZvIGF1dG90b29scy1icm9rZW5zZXAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwcmVwbGF5L3RjcHJlcGxheV80LjIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODFlZjAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4yLjYuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJVc2UgcHJldmlvdXNseSBjYXB0dXJlZCB0cmFmZmljIHRvIHRlc3QgbmV0d29yayBkZXZpY2VzIgorCitIT01FUEFHRSA9ICJodHRwOi8vdGNwcmVwbGF5LnN5bmZpbi5uZXQvIgorU0VDVElPTiA9ICJuZXQiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0xJQ0VOU0U7bWQ1PTg5MGI4MzBiMjJmZDYzMmU5ZmZkOTk2ZGYyMDMzOGY4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBuZXRhL3RjcHJlcGxheS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vdGNwcmVwbGF5LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjNlNjVkNWI4NzJlNDQxYzZhMDAzODE5MWEzZGM3Y2U5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0Mzc1NmM1MzJkYWI5M2UyYmUzM2E1MTdlZjQ2YjEzNDFmNzIzOTI3OGExMDQ1YWU2NzAwNDFkZDhhNDUzMWQiCisKK0RFUEVORFMgPSAibGlicGNhcCIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGlicGNhcD0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciIKKworaW5oZXJpdCBzaXRlaW5mbyBhdXRvdG9vbHMtYnJva2Vuc2VwCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzU4YmEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi4yLjEwLmJiCkBAIC0wLDAgKzEsNzEgQEAKK0RFU0NSSVBUSU9OID0gIndpcmVzaGFyayAtIGEgcG9wdWxhciBuZXR3b3JrIHByb3RvY29sIGFuYWx5emVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53aXJlc2hhcmsub3JnIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTI3MTIzNGJhMWExM2M2ZTUxMmU3NmI5NGFjMmY3NyIKKworREVQRU5EUyA9ICJwY3JlIGV4cGF0IGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovLzIubmEuZGwud2lyZXNoYXJrLm9yZy9zcmMvYWxsLXZlcnNpb25zLyR7QlB9LnRhci5iejIiCisKK1BFID0gIjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZTNhMWE0M2E2ZTM2ODdmNDRhNzM4ZmQxNWQ3ODAyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTc0YTVlMWZkZWM3YWZmYWU2NDA5MjRiZDQ2YzFhZWQxYmQ4NjZlMDI2MzJmYTU2MjVlMTQ1MGU0YTUwNzA3IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZQorCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworUEFDS0FHRUNPTkZJRyA/PSAibGlicGNhcCBnbnV0bHMgbGlibmwgbGliY2FwIHNiYyIKK1BBQ0tBR0VDT05GSUcgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsyIGdyYXBoaWNzIiwgIiIsIGQpfSIKKyNQQUNLQUdFQ09ORklHICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wiLCAiZ3RrMyIsICIiLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwPSR7U1RBR0lOR19MSUJESVJ9LCAtLXdpdGgtbGliY2FwPW5vIC0tZW5hYmxlLXBjYXAtbmctZGVmYXVsdCAsIGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbbGlicGNhcF0gPSAiLS13aXRoLXBjYXA9JHtTVEFHSU5HX0xJQkRJUn0gLS13aXRoLXBjYXAtcmVtb3RlLCAtLXdpdGgtcGNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgICwgbGlicGNhcCIKK1BBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItLXdpdGgtbGlic21pPXllcywgLS13aXRoLWxpYnNtaT1ubywgbGlic21pIgorUEFDS0FHRUNPTkZJR1tsaWJubF0gPSAiLS13aXRoLWxpYm5sPXllcywgLS13aXRoLWxpYm5sPW5vLCBsaWJubCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICItLXdpdGgtcG9ydGF1ZGlvPXllcywgLS13aXRoLXBvcnRhdWRpbz1ubywgcG9ydGF1ZGlvLXYxOSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS13aXRoLWd0az0yLCAsIGd0aysiCitQQUNLQUdFQ09ORklHW2d0azNdID0gIi0td2l0aC1ndGs9MywgLCBndGsrMyIKK1BBQ0tBR0VDT05GSUdbZ3JhcGhpY3NdID0gIi0tZW5hYmxlLXdpcmVzaGFyaywgLS13aXRoLWd0az1ubyAtLWRpc2FibGUtd2lyZXNoYXJrLCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzPXllcywgLS13aXRoLWdudXRscz1ubywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0td2l0aC1nY3J5cHQ9eWVzLCAtLXdpdGgtZ2NyeXB0PW5vLCBsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbD15ZXMsIC0td2l0aC1zc2w9bm8sIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1PXllcywgLS13aXRoLWtyYjU9bm8sIGtyYjUiCitQQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YT15ZXMsIC0td2l0aC1sdWE9bm8sIGx1YSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9eWVzLCAtLXdpdGgtemxpYj1ubywgemxpYiIKK1BBQ0tBR0VDT05GSUdbZ2VvaXBdID0gIi0td2l0aC1nZW9pcD15ZXMsIC0td2l0aC1nZW9pcD1ubywgZ2VvaXAiCitQQUNLQUdFQ09ORklHW3BsdWdpbnNdID0gIi0td2l0aC1wbHVnaW5zPXllcywgLS13aXRoLXBsdWdpbnM9bm8iCitQQUNLQUdFQ09ORklHW3NiY10gPSAiLS13aXRoLXNiYz15ZXMsIC0td2l0aC1zYmM9bm8sIHNiYyIKKworUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIi0td2l0aC1zc2g9eWVzLCAtLXdpdGgtc3NoPW5vLCBsaWJzc2gyIgorCisKKyMgdGhlc2UgbmV4dCB0d28gb3B0aW9ucyByZXF1aXJlIGFkZGlvbmFsIGxheWVycworUEFDS0FHRUNPTkZJR1tjLWFyZXNdID0gIi0td2l0aC1jLWFyZXM9eWVzLCAtLXdpdGgtYy1hcmVzPW5vLCBjLWFyZXMiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXF0PW5vIC0tZW5hYmxlLXRzaGFyayAtLWVuYWJsZS1yYXdzaGFyayIKKworIyBDdXJyZW50bHkgd2lyZXNoYXJrIGRvZXMgbm90IGluc3RhbGwgaGVhZGVyIGZpbGVzCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgorCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0CisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgorCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Rpc3NlY3RvcnMKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9mdHlwZXMKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCisKKwlpbnN0YWxsIGNvbmZpZy5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KKwlpbnN0YWxsICR7U30vcmVnaXN0ZXIuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59CisJaW5zdGFsbCAtRCAke1N9L2VwYW4vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgorCWluc3RhbGwgLUQgJHtTfS9lcGFuL2NyeXB0LyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vY3J5cHQKKwlpbnN0YWxsIC1EICR7U30vZXBhbi9kZmlsdGVyLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgorCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Rpc3NlY3RvcnMvKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCisJaW5zdGFsbCAtRCAke1N9L2VwYW4vZnR5cGVzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCisJaW5zdGFsbCAtRCAke1N9L2VwYW4vd21lbS8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL3dtZW0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi4yLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18yLjIuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjMjVmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18yLjIuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIndpcmVzaGFyayAtIGEgcG9wdWxhciBuZXR3b3JrIHByb3RvY29sIGFuYWx5emVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53aXJlc2hhcmsub3JnIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTI3MTIzNGJhMWExM2M2ZTUxMmU3NmI5NGFjMmY3NyIKLQotREVQRU5EUyA9ICJwY3JlIGV4cGF0IGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovLzIubmEuZGwud2lyZXNoYXJrLm9yZy9zcmMvYWxsLXZlcnNpb25zLyR7QlB9LnRhci5iejIiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZDVlNjVlZmQwNzE0YmQ2MjQ4YWE1YjM2YzI4MzIwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOGIzMmMwZTdkNDRhMjc3ZTczN2M1M2Q5ZDE0MmFkM2ZlNDI2NTMzOGYyNWE3ZmQ4Yzg5MWY1OGE3NjMzZmMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZQotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlicGNhcCBnbnV0bHMgbGlibmwgbGliY2FwIHNiYyIKLVBBQ0tBR0VDT05GSUcgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsyIGdyYXBoaWNzIiwgIiIsIGQpfSIKLSNQQUNLQUdFQ09ORklHICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wiLCAiZ3RrMyIsICIiLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwPSR7U1RBR0lOR19MSUJESVJ9LCAtLXdpdGgtbGliY2FwPW5vIC0tZW5hYmxlLXBjYXAtbmctZGVmYXVsdCAsIGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbbGlicGNhcF0gPSAiLS13aXRoLXBjYXA9JHtTVEFHSU5HX0xJQkRJUn0gLS13aXRoLXBjYXAtcmVtb3RlLCAtLXdpdGgtcGNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgICwgbGlicGNhcCIKLVBBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItLXdpdGgtbGlic21pPXllcywgLS13aXRoLWxpYnNtaT1ubywgbGlic21pIgotUEFDS0FHRUNPTkZJR1tsaWJubF0gPSAiLS13aXRoLWxpYm5sPXllcywgLS13aXRoLWxpYm5sPW5vLCBsaWJubCIKLVBBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICItLXdpdGgtcG9ydGF1ZGlvPXllcywgLS13aXRoLXBvcnRhdWRpbz1ubywgcG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS13aXRoLWd0az0yLCAsIGd0aysiCi1QQUNLQUdFQ09ORklHW2d0azNdID0gIi0td2l0aC1ndGs9MywgLCBndGsrMyIKLVBBQ0tBR0VDT05GSUdbZ3JhcGhpY3NdID0gIi0tZW5hYmxlLXdpcmVzaGFyaywgLS13aXRoLWd0az1ubyAtLWRpc2FibGUtd2lyZXNoYXJrLCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzPXllcywgLS13aXRoLWdudXRscz1ubywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0td2l0aC1nY3J5cHQ9eWVzLCAtLXdpdGgtZ2NyeXB0PW5vLCBsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbD15ZXMsIC0td2l0aC1zc2w9bm8sIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1PXllcywgLS13aXRoLWtyYjU9bm8sIGtyYjUiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YT15ZXMsIC0td2l0aC1sdWE9bm8sIGx1YSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9eWVzLCAtLXdpdGgtemxpYj1ubywgemxpYiIKLVBBQ0tBR0VDT05GSUdbZ2VvaXBdID0gIi0td2l0aC1nZW9pcD15ZXMsIC0td2l0aC1nZW9pcD1ubywgZ2VvaXAiCi1QQUNLQUdFQ09ORklHW3BsdWdpbnNdID0gIi0td2l0aC1wbHVnaW5zPXllcywgLS13aXRoLXBsdWdpbnM9bm8iCi1QQUNLQUdFQ09ORklHW3NiY10gPSAiLS13aXRoLXNiYz15ZXMsIC0td2l0aC1zYmM9bm8sIHNiYyIKLQotUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIi0td2l0aC1zc2g9eWVzLCAtLXdpdGgtc3NoPW5vLCBsaWJzc2gyIgotCi0KLSMgdGhlc2UgbmV4dCB0d28gb3B0aW9ucyByZXF1aXJlIGFkZGlvbmFsIGxheWVycwotUEFDS0FHRUNPTkZJR1tjLWFyZXNdID0gIi0td2l0aC1jLWFyZXM9eWVzLCAtLXdpdGgtYy1hcmVzPW5vLCBjLWFyZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXF0PW5vIC0tZW5hYmxlLXRzaGFyayAtLWVuYWJsZS1yYXdzaGFyayIKLQotIyBDdXJyZW50bHkgd2lyZXNoYXJrIGRvZXMgbm90IGluc3RhbGwgaGVhZGVyIGZpbGVzCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0Ci0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Rpc3NlY3RvcnMKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9mdHlwZXMKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCi0KLQlpbnN0YWxsIGNvbmZpZy5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KLQlpbnN0YWxsICR7U30vcmVnaXN0ZXIuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtRCAke1N9L2VwYW4vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2NyeXB0LyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vY3J5cHQKLQlpbnN0YWxsIC1EICR7U30vZXBhbi9kZmlsdGVyLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Rpc3NlY3RvcnMvKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCi0JaW5zdGFsbCAtRCAke1N9L2VwYW4vZnR5cGVzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCi0JaW5zdGFsbCAtRCAke1N9L2VwYW4vd21lbS8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL3dtZW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKaW5kZXggZmRjNTY0MC4uZGFiZWQyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvUkVBRE1FCkBAIC0xLDE1ICsxLDE1IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybworYnJhbmNoOiByb2NrbwogcmV2aXNpb246IEhFQUQKIAotU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW9lXVtweXJvXScgaW4gdGhlIHN1YmplY3QnCitTZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtb2VdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1vZV1bcHlyb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtb2VdW3JvY2tvXVtQQVRDSCcKIAogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgogCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgorcm9ja28gQnJhbmNoIE1haW50YWluZXI6CiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZDk5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MKQEAgLTAsMCArMSwxNCBAQAorIyBDbGFzcyBmb3IgdXNlIHRvIGNvbnZlcnQgYWxsIENSTEYgbGluZSB0ZXJtaW5hdG9ycyB0byBMRgorIyBwcm92aWRlZCB0aGF0IHNvbWUgcHJvamVjdHMgYXJlIGJlaW5nIGRldmVsb3BlZC9tYWludGFpbmVkCisjIG9uIFdpbmRvd3Mgc28gdGhleSBoYXZlIGRpZmZlcmVudCBsaW5lIHRlcm1pbmF0b3JzKENSTEYpIHZzCisjIG9uIExpbnV4KExGKSwgd2hpY2ggY2FuIGNhdXNlIGFubm95aW5nIHBhdGNoaW5nIGVycm9ycyBkdXJpbmcKKyMgZ2l0IHB1c2gvY2hlY2tvdXQgcHJvY2Vzc2VzLgorCitkb19jb252ZXJ0X2NybGZfdG9fbGZbZGVwZW5kc10gKz0gImRvczJ1bml4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorCisjIENvbnZlcnQgQ1JMRiBsaW5lIHRlcm1pbmF0b3JzIHRvIExGCitkb19jb252ZXJ0X2NybGZfdG9fbGYgKCkgeworICAgIGZpbmQgJHtTfSAtdHlwZSBmIC1leGVjIGRvczJ1bml4IHt9IFw7Cit9CisKK2FkZHRhc2sgY29udmVydF9jcmxmX3RvX2xmIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCmluZGV4IGMzMzE3NGEuLmEwOWJjMjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvbWVzb24uYmJjbGFzcwpAQCAtMTAsMTAgKzEwLDE1IEBACiBNRVNPTl9TT1VSQ0VQQVRIID0gIiR7U30iCiAKICMgVGhlc2UgdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCBvdmVycmlkZSB0aGUgKm5hdGl2ZSogdG9vbHMsIG5vdCB0aGUgY3Jvc3MuCitleHBvcnQgQ1BQRkxBR1MgPSAiJHtCVUlMRF9DUFBGTEFHU30iCiBleHBvcnQgQ0MgPSAiJHtCVUlMRF9DQ30iCitleHBvcnQgQ0ZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKIGV4cG9ydCBDWFggPSAiJHtCVUlMRF9DWFh9IgorZXhwb3J0IENYWEZMQUdTID0gIiR7QlVJTERfQ1hYRkxBR1N9IgogZXhwb3J0IExEID0gIiR7QlVJTERfTER9IgorZXhwb3J0IExERkxBR1MgPSAiJHtCVUlMRF9MREZMQUdTfSIKIGV4cG9ydCBBUiA9ICIke0JVSUxEX0FSfSIKK2V4cG9ydCBQS0dfQ09ORklHID0gInBrZy1jb25maWctbmF0aXZlIgogCiBkZWYgbm9wcmVmaXgodmFyLCBkKToKICAgICByZXR1cm4gZC5nZXRWYXIodmFyLCBUcnVlKS5yZXBsYWNlKGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSArICcvJywgJycsIDEpCkBAIC0yNywxMiArMzIsMTIgQEAKICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyICR7QG5vcHJlZml4KCdpbmNsdWRlZGlyJywgZCl9IFwKICAgICAgICAgICAgICAgLS1tYW5kaXIgJHtAbm9wcmVmaXgoJ21hbmRpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0taW5mb2RpciAke0Bub3ByZWZpeCgnaW5mb2RpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tbG9jYWxlZGlyICR7QG5vcHJlZml4KCdsb2NhbGVkaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCiAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKICAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSIKIAotTUVTT05fQ19BUkdTID0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgorTUVTT05fQ19BUkdTID0gIiR7VEFSR0VUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iCitNRVNPTl9MSU5LX0FSR1MgPSAiJHtNRVNPTl9DX0FSR1N9ICR7TERGTEFHU30iCiAKIE1FU09OX0hPU1RfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJ2JpZycsICdsaXR0bGUnLCBkKX0iCiBNRVNPTl9UQVJHRVRfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICdiaWcnLCAnbGl0dGxlJywgZCl9IgpAQCAtNjAsMTAgKzY1LDExIEBACiBwa2djb25maWcgPSAncGtnLWNvbmZpZycKIAogW3Byb3BlcnRpZXNdCituZWVkc19leGVfd3JhcHBlciA9IHRydWUKIGNfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQotY3BwX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ1RPT0xDSEFJTl9PUFRJT05TJywgZCl9XQotY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ1RPT0xDSEFJTl9PUFRJT05TJywgZCl9XQotY3BwX2xpbmtfYXJncyA9IFske0BtZXNvbl9hcnJheSgnVE9PTENIQUlOX09QVElPTlMnLCBkKX1dCitjX2xpbmtfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fTElOS19BUkdTJywgZCl9XQorY3BwX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0NfQVJHUycsIGQpfV0KK2NwcF9saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KIAogW2hvc3RfbWFjaGluZV0KIHN5c3RlbSA9ICcke0hPU1RfT1N9JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9vZV9zZWN1cml0eV9mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhX29lX3NlY3VyaXR5X2ZsYWdzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM4NjhiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhX29lX3NlY3VyaXR5X2ZsYWdzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgQnVpbGQgZXJyb3JzIHdpdGggdGhlIHBpZSBvcHRpb25zIGVuYWJsZWQKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJkYnVzLWMrKyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmRldm1hcHBlciA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWx2bTIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1ycmR0b29sID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLSMgVGhpcyBoYXMgdGV4dCByZWxvYyBlcnJvcnMgd2l0aCB0aGUgcGllIG9wdGlvbnMgZW5hYmxlZAotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxsdm0zLjMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1tb3pqcyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLW9wZW5sZGFwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tczNjNjR4eC1ncGlvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tczNjMjR4eC1ncGlvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tY3B1ZnJlcXV0aWxzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliY2VjID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlibW9kcGx1ZyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmNkaW8gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotI3wgL21udC9iL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9pbnRlbC1jb3JlaTctNjQvdXNyL2xpYi9saWJjX25vbnNoYXJlZC5hKGVsZi1pbml0Lm9TKTogSW4gZnVuY3Rpb24gYF9fbGliY19jc3VfaW5pdCc6Ci0jfCAvdXNyL3NyYy9kZWJ1Zy9nbGliYy8yLjI0LXIwL2dpdC9jc3UvZWxmLWluaXQuYzo4NjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19pbml0X2FycmF5X3N0YXJ0JwotCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlidmRwYXUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotI3wgL21udC9hL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMveDg2XzY0LW9lLWxpbnV4L2djYy94ODZfNjQtb2UtbGludXgvNi4yLjAvbGQ6IGxqX2Vycl9keW4ubzogcmVsb2NhdGlvbiBSX1g4Nl82NF9UUE9GRjMyIGFnYWluc3QgYHN0YXRpY191ZXgnIGNhbiBub3QgYmUgdXNlZCB3aGVuIG1ha2luZyBhIHNoYXJlZCBvYmplY3Q7IHJlY29tcGlsZSB3aXRoIC1mUElDCi0jfCAvbW50L2EvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy94ODZfNjQtb2UtbGludXgvZ2NjL3g4Nl82NC1vZS1saW51eC82LjIuMC9sZDogZmluYWwgbGluayBmYWlsZWQ6IE5vbnJlcHJlc2VudGFibGUgc2VjdGlvbiBvbiBvdXRwdXQKLSN8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotI3wgbWFrZVsxXTogKioqIFtNYWtlZmlsZTo2NzU6IGxpYmx1YWppdC5zb10gRXJyb3IgMQotU0VDVVJJVFlfQ0ZMQUdTX3BuLWx1YWppdCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZgppbmRleCA1NDQyNWM2Li5kODRiZDA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKQEAgLTQxLDYgKzQxLDcgQEAKICIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKKyAgYW5kcm9pZC10b29scy0+YW5kcm9pZC10b29scy1jb25mIFwKICAgdXNiLW1vZGVzd2l0Y2gtZGF0YS0+dXNiLW1vZGVzd2l0Y2ggXAogICBsbXNlbnNvcnMtPmxtc2Vuc29ycy1jb25maWcgXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5iYXNoIFwKQEAgLTc0LDEwICs3NSwzIEBACiAgIHNvdXJjZS1oYW4tc2Fucy1rci1mb250cy0+Zm9udGNvbmZpZyBcCiAgIHNvdXJjZS1oYW4tc2Fucy10dy1mb250cy0+Zm9udGNvbmZpZyBcCiAiCi0KLUZSRUVTTUFSVFBIT05FX0dJVCA9ICJnaXQ6Ly9naXQuZnJlZXNtYXJ0cGhvbmUub3JnIgotCi0jIE92ZXJyaWRlIHNlY3VyaXR5IGZsYWdzCi1yZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9vZV9zZWN1cml0eV9mbGFncy5pbmMKLQotSE9TVFRPT0xTICs9ICJpZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9GTFRLIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL0ZMVEsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0MjA3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9GTFRLCkBAIC0wLDAgKzEsNTMwIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMVEsgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjZW1iZXIgMTEsIDIwMDEKKworVGhlIEZMVEsgbGlicmFyeSBhbmQgaW5jbHVkZWQgcHJvZ3JhbXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZSB0ZXJtcworb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKExHUEwpIHdpdGggdGhlIGZvbGxvd2luZworZXhjZXB0aW9uczoKKworICAgIDEuIE1vZGlmaWNhdGlvbnMgdG8gdGhlIEZMVEsgY29uZmlndXJlIHNjcmlwdCwgY29uZmlnCisgICAgICAgaGVhZGVyIGZpbGUsIGFuZCBtYWtlZmlsZXMgYnkgdGhlbXNlbHZlcyB0byBzdXBwb3J0CisgICAgICAgYSBzcGVjaWZpYyBwbGF0Zm9ybSBkbyBub3QgY29uc3RpdHV0ZSBhIG1vZGlmaWVkIG9yCisgICAgICAgZGVyaXZhdGl2ZSB3b3JrLgorCisgICAgICBUaGUgYXV0aG9ycyBkbyByZXF1ZXN0IHRoYXQgc3VjaCBtb2RpZmljYXRpb25zIGJlCisgICAgICBjb250cmlidXRlZCB0byB0aGUgRkxUSyBwcm9qZWN0IC0gc2VuZCBhbGwgY29udHJpYnV0aW9ucworICAgICAgdGhyb3VnaCB0aGUgIlNvZnR3YXJlIFRyb3VibGUgUmVwb3J0IiBvbiB0aGUgZm9sbG93aW5nIHBhZ2U6CisgCisgICAgICAgICAgIGh0dHA6Ly93d3cuZmx0ay5vcmcvc3RyLnBocAorCisgICAgMi4gV2lkZ2V0cyB0aGF0IGFyZSBzdWJjbGFzc2VkIGZyb20gRkxUSyB3aWRnZXRzIGRvIG5vdAorICAgICAgIGNvbnN0aXR1dGUgYSBkZXJpdmF0aXZlIHdvcmsuCisKKyAgICAzLiBTdGF0aWMgbGlua2luZyBvZiBhcHBsaWNhdGlvbnMgYW5kIHdpZGdldHMgdG8gdGhlCisgICAgICAgRkxUSyBsaWJyYXJ5IGRvZXMgbm90IGNvbnN0aXR1dGUgYSBkZXJpdmF0aXZlIHdvcmsKKyAgICAgICBhbmQgZG9lcyBub3QgcmVxdWlyZSB0aGUgYXV0aG9yIHRvIHByb3ZpZGUgc291cmNlCisgICAgICAgY29kZSBmb3IgdGhlIGFwcGxpY2F0aW9uIG9yIHdpZGdldCwgdXNlIHRoZSBzaGFyZWQKKyAgICAgICBGTFRLIGxpYnJhcmllcywgb3IgbGluayB0aGVpciBhcHBsaWNhdGlvbnMgb3IKKyAgICAgICB3aWRnZXRzIGFnYWluc3QgYSB1c2VyLXN1cHBsaWVkIHZlcnNpb24gb2YgRkxUSy4KKworICAgICAgIElmIHlvdSBsaW5rIHRoZSBhcHBsaWNhdGlvbiBvciB3aWRnZXQgdG8gYSBtb2RpZmllZAorICAgICAgIHZlcnNpb24gb2YgRkxUSywgdGhlbiB0aGUgY2hhbmdlcyB0byBGTFRLIG11c3QgYmUKKyAgICAgICBwcm92aWRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIExHUEwgaW4gc2VjdGlvbnMKKyAgICAgICAxLCAyLCBhbmQgNC4KKworICAgIDQuIFlvdSBkbyBub3QgaGF2ZSB0byBwcm92aWRlIGEgY29weSBvZiB0aGUgRkxUSyBsaWNlbnNlCisgICAgICAgd2l0aCBwcm9ncmFtcyB0aGF0IGFyZSBsaW5rZWQgdG8gdGhlIEZMVEsgbGlicmFyeSwgbm9yCisgICAgICAgZG8geW91IGhhdmUgdG8gaWRlbnRpZnkgdGhlIEZMVEsgbGljZW5zZSBpbiB5b3VyCisgICAgICAgcHJvZ3JhbSBvciBkb2N1bWVudGF0aW9uIGFzIHJlcXVpcmVkIGJ5IHNlY3Rpb24gNgorICAgICAgIG9mIHRoZSBMR1BMLgorCisgICAgICAgSG93ZXZlciwgcHJvZ3JhbXMgbXVzdCBzdGlsbCBpZGVudGlmeSB0aGVpciB1c2Ugb2YgRkxUSy4KKyAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc3RhdGVtZW50IGNhbiBiZSBpbmNsdWRlZCBpbiB1c2VyCisgICAgICAgZG9jdW1lbnRhdGlvbiB0byBzYXRpc2Z5IHRoaXMgcmVxdWlyZW1lbnQ6CisKKyAgICAgICAgICAgW3Byb2dyYW0vd2lkZ2V0XSBpcyBiYXNlZCBpbiBwYXJ0IG9uIHRoZSB3b3JrIG9mCisgICAgICAgICAgIHRoZSBGTFRLIHByb2plY3QgKGh0dHA6Ly93d3cuZmx0ay5vcmcpLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJCSAgR05VIExJQlJBUlkgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorCQkJIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKwkgIENvcHlyaWdodCAoQykgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKyAgICAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgICAgICBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworICAgIFtUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IEdQTC4gIEl0IGlzCisgICBudW1iZXJlZCAyIGJlY2F1c2UgaXQgZ29lcyB3aXRoIHZlcnNpb24gMiBvZiB0aGUgb3JkaW5hcnkgR1BMLl0KKworCQkJICAgICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2VzIGFyZSBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UKK2ZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KKworICBUaGlzIGxpY2Vuc2UsIHRoZSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQorc3BlY2lhbGx5IGRlc2lnbmF0ZWQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlLCBhbmQgdG8gYW55CitvdGhlciBsaWJyYXJpZXMgd2hvc2UgYXV0aG9ycyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91IGNhbiB1c2UgaXQgZm9yCit5b3VyIGxpYnJhcmllcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmCit5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnksIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKK29yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0IHdlIGdhdmUKK3lvdS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZSBzb3VyY2UKK2NvZGUuICBJZiB5b3UgbGluayBhIHByb2dyYW0gd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQorY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzIHNvIHRoYXQgdGhleSBjYW4gcmVsaW5rIHRoZW0KK3dpdGggdGhlIGxpYnJhcnksIGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCByZWNvbXBpbGluZworaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCisKKyAgT3VyIG1ldGhvZCBvZiBwcm90ZWN0aW5nIHlvdXIgcmlnaHRzIGhhcyB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQKK3RoZSBsaWJyYXJ5LCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCitwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgbGlicmFyeS4KKworICBBbHNvLCBmb3IgZWFjaCBkaXN0cmlidXRvcidzIHByb3RlY3Rpb24sIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorbGlicmFyeS4gIElmIHRoZSBsaWJyYXJ5IGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbAordmVyc2lvbiwgc28gdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbgordGhlIG9yaWdpbmFsIGF1dGhvcnMnIHJlcHV0YXRpb25zLgorDAorICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IGNvbXBhbmllcyBkaXN0cmlidXRpbmcgZnJlZQorc29mdHdhcmUgd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgdGh1cyBpbiBlZmZlY3QKK3RyYW5zZm9ybWluZyB0aGUgcHJvZ3JhbSBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlLiAgVG8gcHJldmVudCB0aGlzLAord2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzCitmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2hpY2ggd2FzIGRlc2lnbmVkIGZvciB1dGlsaXR5IHByb2dyYW1zLiAgVGhpcworbGljZW5zZSwgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gY2VydGFpbgorZGVzaWduYXRlZCBsaWJyYXJpZXMuICBUaGlzIGxpY2Vuc2UgaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5CitvbmU7IGJlIHN1cmUgdG8gcmVhZCBpdCBpbiBmdWxsLCBhbmQgZG9uJ3QgYXNzdW1lIHRoYXQgYW55dGhpbmcgaW4gaXQgaXMKK3RoZSBzYW1lIGFzIGluIHRoZSBvcmRpbmFyeSBsaWNlbnNlLgorCisgIFRoZSByZWFzb24gd2UgaGF2ZSBhIHNlcGFyYXRlIHB1YmxpYyBsaWNlbnNlIGZvciBzb21lIGxpYnJhcmllcyBpcyB0aGF0Cit0aGV5IGJsdXIgdGhlIGRpc3RpbmN0aW9uIHdlIHVzdWFsbHkgbWFrZSBiZXR3ZWVuIG1vZGlmeWluZyBvciBhZGRpbmcgdG8gYQorcHJvZ3JhbSBhbmQgc2ltcGx5IHVzaW5nIGl0LiAgTGlua2luZyBhIHByb2dyYW0gd2l0aCBhIGxpYnJhcnksIHdpdGhvdXQKK2NoYW5naW5nIHRoZSBsaWJyYXJ5LCBpcyBpbiBzb21lIHNlbnNlIHNpbXBseSB1c2luZyB0aGUgbGlicmFyeSwgYW5kIGlzCithbmFsb2dvdXMgdG8gcnVubmluZyBhIHV0aWxpdHkgcHJvZ3JhbSBvciBhcHBsaWNhdGlvbiBwcm9ncmFtLiAgSG93ZXZlciwgaW4KK2EgdGV4dHVhbCBhbmQgbGVnYWwgc2Vuc2UsIHRoZSBsaW5rZWQgZXhlY3V0YWJsZSBpcyBhIGNvbWJpbmVkIHdvcmssIGEKK2Rlcml2YXRpdmUgb2YgdGhlIG9yaWdpbmFsIGxpYnJhcnksIGFuZCB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQordHJlYXRzIGl0IGFzIHN1Y2guCisKKyAgQmVjYXVzZSBvZiB0aGlzIGJsdXJyZWQgZGlzdGluY3Rpb24sIHVzaW5nIHRoZSBvcmRpbmFyeSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBmb3IgbGlicmFyaWVzIGRpZCBub3QgZWZmZWN0aXZlbHkgcHJvbW90ZSBzb2Z0d2FyZQorc2hhcmluZywgYmVjYXVzZSBtb3N0IGRldmVsb3BlcnMgZGlkIG5vdCB1c2UgdGhlIGxpYnJhcmllcy4gIFdlCitjb25jbHVkZWQgdGhhdCB3ZWFrZXIgY29uZGl0aW9ucyBtaWdodCBwcm9tb3RlIHNoYXJpbmcgYmV0dGVyLgorCisgIEhvd2V2ZXIsIHVucmVzdHJpY3RlZCBsaW5raW5nIG9mIG5vbi1mcmVlIHByb2dyYW1zIHdvdWxkIGRlcHJpdmUgdGhlCit1c2VycyBvZiB0aG9zZSBwcm9ncmFtcyBvZiBhbGwgYmVuZWZpdCBmcm9tIHRoZSBmcmVlIHN0YXR1cyBvZiB0aGUKK2xpYnJhcmllcyB0aGVtc2VsdmVzLiAgVGhpcyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8KK3Blcm1pdCBkZXZlbG9wZXJzIG9mIG5vbi1mcmVlIHByb2dyYW1zIHRvIHVzZSBmcmVlIGxpYnJhcmllcywgd2hpbGUKK3ByZXNlcnZpbmcgeW91ciBmcmVlZG9tIGFzIGEgdXNlciBvZiBzdWNoIHByb2dyYW1zIHRvIGNoYW5nZSB0aGUgZnJlZQorbGlicmFyaWVzIHRoYXQgYXJlIGluY29ycG9yYXRlZCBpbiB0aGVtLiAgKFdlIGhhdmUgbm90IHNlZW4gaG93IHRvIGFjaGlldmUKK3RoaXMgYXMgcmVnYXJkcyBjaGFuZ2VzIGluIGhlYWRlciBmaWxlcywgYnV0IHdlIGhhdmUgYWNoaWV2ZWQgaXQgYXMgcmVnYXJkcworY2hhbmdlcyBpbiB0aGUgYWN0dWFsIGZ1bmN0aW9ucyBvZiB0aGUgTGlicmFyeS4pICBUaGUgaG9wZSBpcyB0aGF0IHRoaXMKK3dpbGwgbGVhZCB0byBmYXN0ZXIgZGV2ZWxvcG1lbnQgb2YgZnJlZSBsaWJyYXJpZXMuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuICBQYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYQorIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKK2Zvcm1lciBjb250YWlucyBjb2RlIGRlcml2ZWQgZnJvbSB0aGUgbGlicmFyeSwgd2hpbGUgdGhlIGxhdHRlciBvbmx5Cit3b3JrcyB0b2dldGhlciB3aXRoIHRoZSBsaWJyYXJ5LgorCisgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgYSBsaWJyYXJ5IHRvIGJlIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJhdGhlciB0aGFuIGJ5IHRoaXMgc3BlY2lhbCBvbmUuCisMCisJCSAgR05VIExJQlJBUlkgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIEFncmVlbWVudCBhcHBsaWVzIHRvIGFueSBzb2Z0d2FyZSBsaWJyYXJ5IHdoaWNoCitjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3Igb3RoZXIgYXV0aG9yaXplZAorcGFydHkgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWJyYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChhbHNvIGNhbGxlZCAidGhpcyBMaWNlbnNlIikuICBFYWNoIGxpY2Vuc2VlIGlzCithZGRyZXNzZWQgYXMgInlvdSIuCisKKyAgQSAibGlicmFyeSIgbWVhbnMgYSBjb2xsZWN0aW9uIG9mIHNvZnR3YXJlIGZ1bmN0aW9ucyBhbmQvb3IgZGF0YQorcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCisod2hpY2ggdXNlIHNvbWUgb2YgdGhvc2UgZnVuY3Rpb25zIGFuZCBkYXRhKSB0byBmb3JtIGV4ZWN1dGFibGVzLgorCisgIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCit3aGljaCBoYXMgYmVlbiBkaXN0cmlidXRlZCB1bmRlciB0aGVzZSB0ZXJtcy4gIEEgIndvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5IiBtZWFucyBlaXRoZXIgdGhlIExpYnJhcnkgb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlcgorY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKK3BvcnRpb24gb2YgaXQsIGVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQKK3N0cmFpZ2h0Zm9yd2FyZGx5IGludG8gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMKK2luY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCisKKyAgIlNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKK2FsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lhdGVkCitpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvIGNvbnRyb2wgY29tcGlsYXRpb24KK2FuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCisKKyAgQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgYSBwcm9ncmFtIHVzaW5nIHRoZSBMaWJyYXJ5IGlzIG5vdCByZXN0cmljdGVkLCBhbmQgb3V0cHV0IGZyb20KK3N1Y2ggYSBwcm9ncmFtIGlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQKK29uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKK3dyaXRpbmcgaXQpLiAgV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBMaWJyYXJ5IGRvZXMKK2FuZCB3aGF0IHRoZSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUgTGlicmFyeSBkb2VzLgorCisgIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIExpYnJhcnkncworY29tcGxldGUgc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQKK3lvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCithcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdAorYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkKK3dhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCitMaWJyYXJ5LgorCisgIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCithbmQgeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhCitmZWUuCisMCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIExpYnJhcnkgb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KKworICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8KKyAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQorICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKKyAgICB0aGUgZmFjaWxpdHksIG90aGVyIHRoYW4gYXMgYW4gYXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlIGZhY2lsaXR5CisgICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsCisgICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCisgICAgdGFibGUsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zIHdoYXRldmVyIHBhcnQgb2YKKyAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuCisKKyAgICAoRm9yIGV4YW1wbGUsIGEgZnVuY3Rpb24gaW4gYSBsaWJyYXJ5IHRvIGNvbXB1dGUgc3F1YXJlIHJvb3RzIGhhcworICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUKKyAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQorICAgIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGZ1bmN0aW9uIG9yIHRhYmxlIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0CisgICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUKKyAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQorCitUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCitpZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAorYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCit0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCitzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAorb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCit0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQorZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlCitpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgTGlicmFyeS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQord2l0aCB0aGUgTGlicmFyeSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnkpIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwordGhpcywgeW91IG11c3QgYWx0ZXIgYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlLCBzbwordGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLAoraW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQorb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaGFzIGFwcGVhcmVkLCB0aGVuIHlvdSBjYW4gc3BlY2lmeQordGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbgordGhlc2Ugbm90aWNlcy4KKwwKKyAgT25jZSB0aGlzIGNoYW5nZSBpcyBtYWRlIGluIGEgZ2l2ZW4gY29weSwgaXQgaXMgaXJyZXZlcnNpYmxlIGZvcgordGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKK3N1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuCisKKyAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCit0aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuCisKKyAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKK2Rlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtCit1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhY2NvbXBhbnkKK2l0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKK211c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQorbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgorCisgIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5Citmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZQorc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCitkaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Citjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgorCisgIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlCitMaWJyYXJ5LCBidXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIHRoZSBMaWJyYXJ5IGJ5IGJlaW5nIGNvbXBpbGVkIG9yCitsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQord29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZAordGhlcmVmb3JlIGZhbGxzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5CitjcmVhdGVzIGFuIGV4ZWN1dGFibGUgdGhhdCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIExpYnJhcnkgKGJlY2F1c2UgaXQKK2NvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCitsaWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KK1NlY3Rpb24gNiBzdGF0ZXMgdGVybXMgZm9yIGRpc3RyaWJ1dGlvbiBvZiBzdWNoIGV4ZWN1dGFibGVzLgorCisgIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlCit0aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnksIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgbWF5IGJlIGEKK2Rlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgorV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUKK2xpbmtlZCB3aXRob3V0IHRoZSBMaWJyYXJ5LCBvciBpZiB0aGUgd29yayBpcyBpdHNlbGYgYSBsaWJyYXJ5LiAgVGhlCit0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgorCisgIElmIHN1Y2ggYW4gb2JqZWN0IGZpbGUgdXNlcyBvbmx5IG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhCitzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKK2Z1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QKK2ZpbGUgaXMgdW5yZXN0cmljdGVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgbGVnYWxseSBhIGRlcml2YXRpdmUKK3dvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCitMaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQorCisgIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CitkaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4KK0FueSBleGVjdXRhYmxlcyBjb250YWluaW5nIHRoYXQgd29yayBhbHNvIGZhbGwgdW5kZXIgU2VjdGlvbiA2LAord2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgorDAorICA2LiBBcyBhbiBleGNlcHRpb24gdG8gdGhlIFNlY3Rpb25zIGFib3ZlLCB5b3UgbWF5IGFsc28gY29tcGlsZSBvcgorbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKK3dvcmsgY29udGFpbmluZyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSwgYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCit1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSwgcHJvdmlkZWQgdGhhdCB0aGUgdGVybXMgcGVybWl0Cittb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKK2VuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLgorCisgIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQorTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZSBjb3ZlcmVkIGJ5Cit0aGlzIExpY2Vuc2UuICBZb3UgbXVzdCBzdXBwbHkgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmIHRoZSB3b3JrCitkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQorY29weXJpZ2h0IG5vdGljZSBmb3IgdGhlIExpYnJhcnkgYW1vbmcgdGhlbSwgYXMgd2VsbCBhcyBhIHJlZmVyZW5jZQorZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIEFsc28sIHlvdSBtdXN0IGRvIG9uZQorb2YgdGhlc2UgdGhpbmdzOgorCisgICAgYSkgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcKKyAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKKyAgICBjaGFuZ2VzIHdlcmUgdXNlZCBpbiB0aGUgd29yayAod2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlcgorICAgIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUpOyBhbmQsIGlmIHRoZSB3b3JrIGlzIGFuIGV4ZWN1dGFibGUgbGlua2VkCisgICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CisgICAgdXNlcyB0aGUgTGlicmFyeSIsIGFzIG9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSwgc28gdGhhdCB0aGUKKyAgICB1c2VyIGNhbiBtb2RpZnkgdGhlIExpYnJhcnkgYW5kIHRoZW4gcmVsaW5rIHRvIHByb2R1Y2UgYSBtb2RpZmllZAorICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCisgICAgdGhhdCB0aGUgdXNlciB3aG8gY2hhbmdlcyB0aGUgY29udGVudHMgb2YgZGVmaW5pdGlvbnMgZmlsZXMgaW4gdGhlCisgICAgTGlicmFyeSB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBhYmxlIHRvIHJlY29tcGlsZSB0aGUgYXBwbGljYXRpb24KKyAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKKworICAgIGIpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0CisgICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCisgICAgc3BlY2lmaWVkIGluIFN1YnNlY3Rpb24gNmEsIGFib3ZlLCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZQorICAgIHRoYW4gdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGlzIGRpc3RyaWJ1dGlvbi4KKworICAgIGMpIElmIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd29yayBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5CisgICAgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlIGFib3ZlCisgICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgorCisgICAgZCkgVmVyaWZ5IHRoYXQgdGhlIHVzZXIgaGFzIGFscmVhZHkgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZXNlCisgICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCisKKyAgRm9yIGFuIGV4ZWN1dGFibGUsIHRoZSByZXF1aXJlZCBmb3JtIG9mIHRoZSAid29yayB0aGF0IHVzZXMgdGhlCitMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgorcmVwcm9kdWNpbmcgdGhlIGV4ZWN1dGFibGUgZnJvbSBpdC4gIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24sCit0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5CitkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkgZm9ybSkgd2l0aCB0aGUgbWFqb3IKK2NvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24KK3doaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMKK3RoZSBleGVjdXRhYmxlLgorCisgIEl0IG1heSBoYXBwZW4gdGhhdCB0aGlzIHJlcXVpcmVtZW50IGNvbnRyYWRpY3RzIHRoZSBsaWNlbnNlCityZXN0cmljdGlvbnMgb2Ygb3RoZXIgcHJvcHJpZXRhcnkgbGlicmFyaWVzIHRoYXQgZG8gbm90IG5vcm1hbGx5CithY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90Cit1c2UgYm90aCB0aGVtIGFuZCB0aGUgTGlicmFyeSB0b2dldGhlciBpbiBhbiBleGVjdXRhYmxlIHRoYXQgeW91CitkaXN0cmlidXRlLgorDAorICA3LiBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQorZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZAorbGlicmFyeSwgcHJvdmlkZWQgdGhhdCB0aGUgc2VwYXJhdGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGJhc2VkIG9uCit0aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UKK3Blcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CisKKyAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yaworICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKKyAgICBmYWNpbGl0aWVzLiAgVGhpcyBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAgICBTZWN0aW9ucyBhYm92ZS4KKworICAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IG9mIHRoZSBmYWN0CisgICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcKKyAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCisKKyAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUKK3RoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CithdHRlbXB0IG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIGxpbmsgd2l0aCwgb3IKK2Rpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cgorcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLAorb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcwordGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCisgIDkuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKyAgMTAuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK0xpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CitzdWJqZWN0IHRvIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorDAorICAxMS4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAoraW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKK2NvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90CitkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CittYXkgbm90IGRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50CitsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CithbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KK3RoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KK3JlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCisKK0lmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhbnkKK3BhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKK2FuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyIGNpcmN1bXN0YW5jZXMuCisKK0l0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKK3BhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CitzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCitpbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMTIuIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgTGlicmFyeSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgTGlicmFyeSB1bmRlciB0aGlzIExpY2Vuc2UgbWF5IGFkZAorYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZyB0aG9zZSBjb3VudHJpZXMsCitzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKK2V4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmCit3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICAxMy4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcKK3ZlcnNpb25zIG9mIHRoZSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuCitTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sCitidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8gYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIExpYnJhcnkKK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZAorImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZAorY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBMaWJyYXJ5IGRvZXMgbm90IHNwZWNpZnkgYQorbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisMCisgIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGVzZSwKK3dyaXRlIHRvIHRoZSBhdXRob3IgdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzCitjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzIG1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91cgorZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscyBvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cworb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKK2FuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCisKKwkJCSAgICBOTyBXQVJSQU5UWQorCisgIDE1LiBCRUNBVVNFIFRIRSBMSUJSQVJZIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTworV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KK0VYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SCitPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIExJQlJBUlkgIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRQorTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKK1RIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgorV1JJVElORyBXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkKK0FORC9PUiBSRURJU1RSSUJVVEUgVEhFIExJQlJBUlkgQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VCitGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRQorTElCUkFSWSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORworUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKK0ZBSUxVUkUgT0YgVEhFIExJQlJBUlkgVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBTT0ZUV0FSRSksIEVWRU4gSUYKK1NVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRVMuCisKKwkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKwwKKyAgICAgQXBwZW5kaXg6IEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKKworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBsaWJyYXJ5LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKK2V2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZS4gIFlvdSBjYW4gZG8gc28gYnkgcGVybWl0dGluZworcmVkaXN0cmlidXRpb24gdW5kZXIgdGhlc2UgdGVybXMgKG9yLCBhbHRlcm5hdGl2ZWx5LCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCitvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KKworICBUbyBhcHBseSB0aGVzZSB0ZXJtcywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgbGlicmFyeS4gIEl0IGlzCitzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QgdGhlCisiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIGxpYnJhcnkncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0Fsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLgorCitZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgorc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgbGlicmFyeSwgaWYKK25lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKKworICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZQorICBsaWJyYXJ5IGBGcm9iJyAoYSBsaWJyYXJ5IGZvciB0d2Vha2luZyBrbm9icykgd3JpdHRlbiBieSBKYW1lcyBSYW5kb20gSGFja2VyLgorCisgIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk5MAorICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQorCitUaGF0J3MgYWxsIHRoZXJlIGlzIHRvIGl0IQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL0ludGVsIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL0ludGVsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjgxZGQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9JbnRlbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUxpY2Vuc2UgZm9yIENvbnRyaWJ1dGlvbnMgdG8gQUNQSUNBCi0KLUNvcHlyaWdodCAoYykgMjAwMCDigJMgMjAxNSBJbnRlbCBDb3JwLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotCi0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKLUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FUwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvVUZMIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL1VGTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzhhYzRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL1VGTApAQCAtMCwwICsxLDk3IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitVQlVOVFUgRk9OVCBMSUNFTkNFIFZlcnNpb24gMS4wCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BSRUFNQkxFCitUaGlzIGxpY2VuY2UgYWxsb3dzIHRoZSBsaWNlbnNlZCBmb250cyB0byBiZSB1c2VkLCBzdHVkaWVkLCBtb2RpZmllZCBhbmQKK3JlZGlzdHJpYnV0ZWQgZnJlZWx5LiBUaGUgZm9udHMsIGluY2x1ZGluZyBhbnkgZGVyaXZhdGl2ZSB3b3JrcywgY2FuIGJlCitidW5kbGVkLCBlbWJlZGRlZCwgYW5kIHJlZGlzdHJpYnV0ZWQgcHJvdmlkZWQgdGhlIHRlcm1zIG9mIHRoaXMgbGljZW5jZQorYXJlIG1ldC4gVGhlIGZvbnRzIGFuZCBkZXJpdmF0aXZlcywgaG93ZXZlciwgY2Fubm90IGJlIHJlbGVhc2VkIHVuZGVyCithbnkgb3RoZXIgbGljZW5jZS4gVGhlIHJlcXVpcmVtZW50IGZvciBmb250cyB0byByZW1haW4gdW5kZXIgdGhpcworbGljZW5jZSBkb2VzIG5vdCByZXF1aXJlIGFueSBkb2N1bWVudCBjcmVhdGVkIHVzaW5nIHRoZSBmb250cyBvciB0aGVpcgorZGVyaXZhdGl2ZXMgdG8gYmUgcHVibGlzaGVkIHVuZGVyIHRoaXMgbGljZW5jZSwgYXMgbG9uZyBhcyB0aGUgcHJpbWFyeQorcHVycG9zZSBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IHRvIGJlIGEgdmVoaWNsZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBvZgordGhlIGZvbnRzLgorCitERUZJTklUSU9OUworIkZvbnQgU29mdHdhcmUiIHJlZmVycyB0byB0aGUgc2V0IG9mIGZpbGVzIHJlbGVhc2VkIGJ5IHRoZSBDb3B5cmlnaHQKK0hvbGRlcihzKSB1bmRlciB0aGlzIGxpY2VuY2UgYW5kIGNsZWFybHkgbWFya2VkIGFzIHN1Y2guIFRoaXMgbWF5CitpbmNsdWRlIHNvdXJjZSBmaWxlcywgYnVpbGQgc2NyaXB0cyBhbmQgZG9jdW1lbnRhdGlvbi4KKworIk9yaWdpbmFsIFZlcnNpb24iIHJlZmVycyB0byB0aGUgY29sbGVjdGlvbiBvZiBGb250IFNvZnR3YXJlIGNvbXBvbmVudHMKK2FzIHJlY2VpdmVkIHVuZGVyIHRoaXMgbGljZW5jZS4KKworIk1vZGlmaWVkIFZlcnNpb24iIHJlZmVycyB0byBhbnkgZGVyaXZhdGl2ZSBtYWRlIGJ5IGFkZGluZyB0bywgZGVsZXRpbmcsCitvciBzdWJzdGl0dXRpbmcgLS0gaW4gcGFydCBvciBpbiB3aG9sZSAtLSBhbnkgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlCitPcmlnaW5hbCBWZXJzaW9uLCBieSBjaGFuZ2luZyBmb3JtYXRzIG9yIGJ5IHBvcnRpbmcgdGhlIEZvbnQgU29mdHdhcmUgdG8KK2EgbmV3IGVudmlyb25tZW50LgorCisiQ29weXJpZ2h0IEhvbGRlcihzKSIgcmVmZXJzIHRvIGFsbCBpbmRpdmlkdWFscyBhbmQgY29tcGFuaWVzIHdobyBoYXZlIGEKK2NvcHlyaWdodCBvd25lcnNoaXAgb2YgdGhlIEZvbnQgU29mdHdhcmUuCisKKyJTdWJzdGFudGlhbGx5IENoYW5nZWQiIHJlZmVycyB0byBNb2RpZmllZCBWZXJzaW9ucyB3aGljaCBjYW4gYmUgZWFzaWx5CitpZGVudGlmaWVkIGFzIGRpc3NpbWlsYXIgdG8gdGhlIEZvbnQgU29mdHdhcmUgYnkgdXNlcnMgb2YgdGhlIEZvbnQKK1NvZnR3YXJlIGNvbXBhcmluZyB0aGUgT3JpZ2luYWwgVmVyc2lvbiB3aXRoIHRoZSBNb2RpZmllZCBWZXJzaW9uLgorCitUbyAiUHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CitwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yCitpbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKK2NvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKK2Rpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiBhbmQgd2l0aCBvciB3aXRob3V0IGNoYXJnaW5nCithIHJlZGlzdHJpYnV0aW9uIGZlZSksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYywgYW5kIGluIHNvbWUKK2NvdW50cmllcyBvdGhlciBhY3Rpdml0aWVzIGFzIHdlbGwuCisKK1BFUk1JU1NJT04gJiBDT05ESVRJT05TCitUaGlzIGxpY2VuY2UgZG9lcyBub3QgZ3JhbnQgYW55IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IGFuZCBhbGwgc3VjaAorcmlnaHRzIGFyZSByZXNlcnZlZC4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKK2NvcHkgb2YgdGhlIEZvbnQgU29mdHdhcmUsIHRvIHByb3BhZ2F0ZSB0aGUgRm9udCBTb2Z0d2FyZSwgc3ViamVjdCB0bwordGhlIGJlbG93IGNvbmRpdGlvbnM6CisKKzEpIEVhY2ggY29weSBvZiB0aGUgRm9udCBTb2Z0d2FyZSBtdXN0IGNvbnRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlIGFuZCB0aGlzIGxpY2VuY2UuIFRoZXNlIGNhbiBiZSBpbmNsdWRlZCBlaXRoZXIgYXMgc3RhbmQtYWxvbmUKK3RleHQgZmlsZXMsIGh1bWFuLXJlYWRhYmxlIGhlYWRlcnMgb3IgaW4gdGhlIGFwcHJvcHJpYXRlIG1hY2hpbmUtCityZWFkYWJsZSBtZXRhZGF0YSBmaWVsZHMgd2l0aGluIHRleHQgb3IgYmluYXJ5IGZpbGVzIGFzIGxvbmcgYXMgdGhvc2UKK2ZpZWxkcyBjYW4gYmUgZWFzaWx5IHZpZXdlZCBieSB0aGUgdXNlci4KKworMikgVGhlIGZvbnQgbmFtZSBjb21wbGllcyB3aXRoIHRoZSBmb2xsb3dpbmc6CisoYSkgVGhlIE9yaWdpbmFsIFZlcnNpb24gbXVzdCByZXRhaW4gaXRzIG5hbWUsIHVubW9kaWZpZWQuCisoYikgTW9kaWZpZWQgVmVyc2lvbnMgd2hpY2ggYXJlIFN1YnN0YW50aWFsbHkgQ2hhbmdlZCBtdXN0IGJlIHJlbmFtZWQgdG8KK2F2b2lkIHVzZSBvZiB0aGUgbmFtZSBvZiB0aGUgT3JpZ2luYWwgVmVyc2lvbiBvciBzaW1pbGFyIG5hbWVzIGVudGlyZWx5LgorKGMpIE1vZGlmaWVkIFZlcnNpb25zIHdoaWNoIGFyZSBub3QgU3Vic3RhbnRpYWxseSBDaGFuZ2VkIG11c3QgYmUKK3JlbmFtZWQgdG8gYm90aCAoaSkgcmV0YWluIHRoZSBuYW1lIG9mIHRoZSBPcmlnaW5hbCBWZXJzaW9uIGFuZCAoaWkpIGFkZAorYWRkaXRpb25hbCBuYW1pbmcgZWxlbWVudHMgdG8gZGlzdGluZ3Vpc2ggdGhlIE1vZGlmaWVkIFZlcnNpb24gZnJvbSB0aGUKK09yaWdpbmFsIFZlcnNpb24uIFRoZSBuYW1lIG9mIHN1Y2ggTW9kaWZpZWQgVmVyc2lvbnMgbXVzdCBiZSB0aGUgbmFtZSBvZgordGhlIE9yaWdpbmFsIFZlcnNpb24sIHdpdGggImRlcml2YXRpdmUgWCIgd2hlcmUgWCByZXByZXNlbnRzIHRoZSBuYW1lIG9mCit0aGUgbmV3IHdvcmssIGFwcGVuZGVkIHRvIHRoYXQgbmFtZS4KKworMykgVGhlIG5hbWUocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgYW5kIGFueSBjb250cmlidXRvciB0byB0aGUKK0ZvbnQgU29mdHdhcmUgc2hhbGwgbm90IGJlIHVzZWQgdG8gcHJvbW90ZSwgZW5kb3JzZSBvciBhZHZlcnRpc2UgYW55CitNb2RpZmllZCBWZXJzaW9uLCBleGNlcHQgKGkpIGFzIHJlcXVpcmVkIGJ5IHRoaXMgbGljZW5jZSwgKGlpKSB0bworYWNrbm93bGVkZ2UgdGhlIGNvbnRyaWJ1dGlvbihzKSBvZiB0aGUgQ29weXJpZ2h0IEhvbGRlcihzKSBvciAoaWlpKSB3aXRoCit0aGVpciBleHBsaWNpdCB3cml0dGVuIHBlcm1pc3Npb24uCisKKzQpIFRoZSBGb250IFNvZnR3YXJlLCBtb2RpZmllZCBvciB1bm1vZGlmaWVkLCBpbiBwYXJ0IG9yIGluIHdob2xlLCBtdXN0CitiZSBkaXN0cmlidXRlZCBlbnRpcmVseSB1bmRlciB0aGlzIGxpY2VuY2UsIGFuZCBtdXN0IG5vdCBiZSBkaXN0cmlidXRlZAordW5kZXIgYW55IG90aGVyIGxpY2VuY2UuIFRoZSByZXF1aXJlbWVudCBmb3IgZm9udHMgdG8gcmVtYWluIHVuZGVyIHRoaXMKK2xpY2VuY2UgZG9lcyBub3QgYWZmZWN0IGFueSBkb2N1bWVudCBjcmVhdGVkIHVzaW5nIHRoZSBGb250IFNvZnR3YXJlLAorZXhjZXB0IGFueSB2ZXJzaW9uIG9mIHRoZSBGb250IFNvZnR3YXJlIGV4dHJhY3RlZCBmcm9tIGEgZG9jdW1lbnQKK2NyZWF0ZWQgdXNpbmcgdGhlIEZvbnQgU29mdHdhcmUgbWF5IG9ubHkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcworbGljZW5jZS4KKworVEVSTUlOQVRJT04KK1RoaXMgbGljZW5jZSBiZWNvbWVzIG51bGwgYW5kIHZvaWQgaWYgYW55IG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIGFyZQorbm90IG1ldC4KKworRElTQ0xBSU1FUgorVEhFIEZPTlQgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBBTlkgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5UIE9GCitDT1BZUklHSFQsIFBBVEVOVCwgVFJBREVNQVJLLCBPUiBPVEhFUiBSSUdIVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitDT1BZUklHSFQgSE9MREVSIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKK0lOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwKK0RBTUFHRVMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworRlJPTSwgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgRk9OVCBTT0ZUV0FSRSBPUiBGUk9NIE9USEVSCitERUFMSU5HUyBJTiBUSEUgRk9OVCBTT0ZUV0FSRS4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL1gxMSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9YMTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEzZTQwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9YMTEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IEdyYXZlbGV5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVWxyaWsgU3ZlcmRydXAgPHVscmlrLnN2ZXJkcnVwQGdtYWlsLmNvbT4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisgKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisgKiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKyAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZGhyeXN0b25lL2RocnlzdG9uZS0yLjEvZGhyeXN0b25lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2RocnlzdG9uZS9kaHJ5c3RvbmUtMi4xL2RocnlzdG9uZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTUzNTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2RocnlzdG9uZS9kaHJ5c3RvbmUtMi4xL2RocnlzdG9uZS5wYXRjaApAQCAtMCwwICsxLDgxIEBACitkaHJ5c3RvbmU6IGZpeCBjb21waWxhdGlvbiBwcm9ibGVtcworCitUaGlzIHBhdGNoIGZpeGVzIHR3byBjb21waWxhdGlvbiBlcnJvcnMgd2l0aCBvcmlnaW5hbAorZGhyeXN0b25lIHNvdXJjZXM6CisqIFJlZGVmaW5pdGlvbiBvZiB0aW1lcygpIHdpdGggd3JvbmcgcmV0dXJuIHR5cGUKKyAgLSBGaXhlZCBieSBjb21tZW50aW5nIG91dCB0aGUgdW5uZWNlc3NhcnkgcmVkZWZpbml0aW9uCisqIFVuZGVmaW5lZCBpZGVudGlmaWVyIEhaCisgIC0gT3JpZ2luYWxseSBIWiB3YXMgc3VwcG9zZWQgdG8gYmUgdGhlIGNsb2NrIGZyZXF1ZW5jeQorICAgIHZhbHVlIGZvciB0aW1lcygpCisgIC0gRm9yIExpbnV4LCB0aGUgZnJlcXVlbmN5IHNob3VsZCBjb21lIGZyb20gc3lzY29uZgorICAtIFRoaXMgcGF0Y2ggZGVmaW5lcyBnbG9iYWwgdmFyaWJsZSBIWiBhbmQgaW5pdGlhbGl6ZXMKKyAgICBpdCBmcm9tIHN5c2NvbmYKKworQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGFkZHMgYSBzaW1wbGUgTWFrZWZpbGUuCisKK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworCitTaWduLW9mZi1ieTogS2ltbW8gU3VyYWtrYSA8a2ltbW8uc3VyYWtrYUBnZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBKb3NlIEFsYXJjb24gPGpvc2UuYWxhcmNvbkBnZS5jb20+CistLS0KKworZGlmZiAtTmF1ciBkaHJ5Lm9yaWcvZGhyeV8xLmMgZGhyeS9kaHJ5XzEuYworLS0tIGRocnkub3JpZy9kaHJ5XzEuYwkyMDE1LTA3LTIwIDE0OjI1OjU4LjA1OTk0NTM1MyArMDMwMAorKysrIGRocnkvZGhyeV8xLmMJMjAxNS0wNy0yMCAxMjo0MzoyNS4zMTg5NDUzNTMgKzAzMDAKK0BAIC00NSwxMSArNDUsMTUgQEAKKyAKKyAjaWZkZWYgVElNRVMKKyBzdHJ1Y3QgdG1zICAgICAgdGltZV9pbmZvOworLWV4dGVybiAgaW50ICAgICB0aW1lcyAoKTsKKysvKiBleHRlcm4gIGludCAgICAgdGltZXMgKCk7ICovCisgICAgICAgICAgICAgICAgIC8qIHNlZSBsaWJyYXJ5IGZ1bmN0aW9uICJ0aW1lcyIgKi8KKyAjZGVmaW5lIFRvb19TbWFsbF9UaW1lIDEyMAorICAgICAgICAgICAgICAgICAvKiBNZWFzdXJlbWVudHMgc2hvdWxkIGxhc3QgYXQgbGVhc3QgYWJvdXQgMiBzZWNvbmRzICovCisgI2VuZGlmCisrI2lmbmRlZiBIWgorKyNpbmNsdWRlIDx1bmlzdGQuaD4gIC8qIHN5c2NvbmYgKi8KKysgICBsb25nIEhaOworKyNlbmRpZgorICNpZmRlZiBUSU1FCisgZXh0ZXJuIGxvbmcgICAgIHRpbWUoKTsKKyAgICAgICAgICAgICAgICAgLyogc2VlIGxpYnJhcnkgZnVuY3Rpb24gInRpbWUiICAqLworQEAgLTg0LDYgKzg4LDkgQEAKKyAKKyAgIC8qIEluaXRpYWxpemF0aW9ucyAqLworIAorKyNpZm5kZWYgSFoKKysgIEhaID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7CisrI2VuZGlmCisgICBOZXh0X1B0cl9HbG9iID0gKFJlY19Qb2ludGVyKSBtYWxsb2MgKHNpemVvZiAoUmVjX1R5cGUpKTsKKyAgIFB0cl9HbG9iID0gKFJlY19Qb2ludGVyKSBtYWxsb2MgKHNpemVvZiAoUmVjX1R5cGUpKTsKKyAKK2RpZmYgLU5hdXIgZGhyeS5vcmlnL2RocnkuaCBkaHJ5L2RocnkuaAorLS0tIGRocnkub3JpZy9kaHJ5LmgJMjAxNS0wNy0yMCAxNDoyNTo1OC4wNTQ5NDUzNTMgKzAzMDAKKysrKyBkaHJ5L2RocnkuaAkyMDE1LTA3LTIwIDEyOjQyOjU5LjkwMzk0NTM1MyArMDMwMAorQEAgLTQyMCw0ICs0MjAsNiBAQAorICAgICAgICAgICB9IHZhcmlhbnQ7CisgICAgICAgfSBSZWNfVHlwZSwgKlJlY19Qb2ludGVyOworIAorLQorKyNpZm5kZWYgSFoKKysgICBleHRlcm4gbG9uZyBIWjsKKysjZW5kaWYKK2RpZmYgLU5hdXIgZGhyeS5vcmlnL01ha2VmaWxlIGRocnkvTWFrZWZpbGUKKy0tLSBkaHJ5Lm9yaWcvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBkaHJ5L01ha2VmaWxlCTIwMTUtMDctMjAgMTQ6MTA6NDUuODMyOTQ1MzUzICswMzAwCitAQCAtMCwwICsxLDE1IEBACisrQ0M9Z2NjCisrCisrYWxsOiBkaHJ5CisrCisrZGhyeTogZGhyeV8xLm8gZGhyeV8yLm8KKysJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKExPQURMSUJFUykgJChMRExJQlMpCisrCisrZGhyeV8xLm86IGRocnlfMS5jIGRocnkuaAorKworK2RocnlfMi5vOiBkaHJ5XzIuYyBkaHJ5LmgKKysKKytjbGVhbjoKKysJcm0gLWYgKi5vICp+CisrCisrLlBIT05ZOiBhbGwgY2xlYW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kaHJ5c3RvbmUvZGhyeXN0b25lXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kaHJ5c3RvbmUvZGhyeXN0b25lXzIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2U4YzcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2RocnlzdG9uZS9kaHJ5c3RvbmVfMi4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiRGhyeXN0b25lIENQVSBiZW5jaG1hcmsiCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvUEQ7bWQ1PWIzNTk3ZDEyOTQ2ODgxZTEzY2IzYjU0OGQxMTczODUxIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0bGliLm9yZy9iZW5jaG1hcmsvZGhyeS1jO2Rvd25sb2FkZmlsZW5hbWU9ZGhyeS1jLnNoYXIgXAorICAgICAgICAgICBmaWxlOi8vZGhyeXN0b25lLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjc1YWE1OTA5YzE3NGVlZDk4YzEzNGJlMmY1NjMwN2RhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzOGE3ZTkxNjk3ODcxMjVjMzQ1MWE2Yzk0MWYzYWNhNWRiMmQyZjM4NjM4NzFhZmNkY2UxNTRlZjE3ZjRlM2UiCisKKyMgTmVlZCB0byBvdmVycmlkZSBNYWtlZmlsZSB2YXJpYWJsZXMKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb191bnBhY2soKSB7CisgICAgWyAtZCAke1N9IF0gfHwgbWtkaXIgLXAgJHtTfQorICAgIGNkICR7U30KKyAgICBzaCAke0RMX0RJUn0vZGhyeS1jLnNoYXIKK30KK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZGhyeSAke0R9JHtiaW5kaXJ9Cit9CisKKyMgUHJldmVudCBwcm9jZWR1cmUgbWVyZ2luZyBhcyByZXF1aXJlZCBieSBkaHJ5c3RvbmUuYzoKK0NGTEFHUyArPSAiLWZuby1sdG8iCisKK0xERkxBR1MgKz0gIi1mbm8tbHRvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvMDAwMS1GaXgtY2xhbmctd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy8wMDAxLUZpeC1jbGFuZy13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGYwOWZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvMDAwMS1GaXgtY2xhbmctd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAzNWU5ZjgwNTE4ZDY2NmRiNWY5YzYyZTgwNzJmZmJjMzA3YjRhZjRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMDg6MzA6MDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGNsYW5nIHdhcm5pbmdzCisKKy4uL3NyYy9uYXRpdmUtc3RhdGUtZHJtLmNwcDozMzQ6MjA6IGVycm9yOiBjYW5ub3QgcGFzcyBvYmplY3Qgb2Ygbm9uLXRyaXZpYWwgdHlwZSAnc3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhcj4nIHRocm91Z2ggdmFyaWFkaWMgZnVuY3Rpb247IGNhbGwgd2lsbCBhYm9ydCBhdCBydW50aW1lIFstV25vbi1wb2QtdmFyYXJnc10KKyAgICAgICAgICAgICAgICAgICBkZXZfcGF0aCk7CisgICAgICAgICAgICAgICAgICAgXgorMSBlcnJvciBnZW5lcmF0ZWQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbmF0aXZlLXN0YXRlLWRybS5jcHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbmF0aXZlLXN0YXRlLWRybS5jcHAgYi9zcmMvbmF0aXZlLXN0YXRlLWRybS5jcHAKK2luZGV4IGRjMmIzMjMuLjYyNTY2ZWUgMTAwNjQ0CistLS0gYS9zcmMvbmF0aXZlLXN0YXRlLWRybS5jcHAKKysrKyBiL3NyYy9uYXRpdmUtc3RhdGUtZHJtLmNwcAorQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgaW50IG9wZW5fdXNpbmdfdWRldl9zY2FuKCkKKyAgICAgaWYgKCF2YWxpZF9mZChmZCkpIHsKKyAgICAgICAgIC8vICVtIGlzIEdMSUJDIHNwZWNpZmljLi4uIE1heWJlIHVzZSBzdHJlcnJvciBoZXJlLi4uCisgICAgICAgICBMb2c6OmVycm9yKCJUcmllZCB0byB1c2UgJyVzJyBidXQgZmFpbGVkLlxuUmVhc29uIDogJW0iLAorLSAgICAgICAgICAgICAgICAgICBkZXZfcGF0aCk7CisrICAgICAgICAgICAgICAgICAgIGRldl9wYXRoLmNfc3RyKCkpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgICAgIExvZzo6ZGVidWcoIlN1Y2Nlc3MhXG4iKTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzLzAwMDEtRml4LXdsX3N1cmZhY2Utc2hvdWxkLWJlLWRlc3RvcnllZC1hZnRlci10aGUtd2xfd2luZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzLzAwMDEtRml4LXdsX3N1cmZhY2Utc2hvdWxkLWJlLWRlc3RvcnllZC1hZnRlci10aGUtd2xfd2luZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM5NTA4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy8wMDAxLUZpeC13bF9zdXJmYWNlLXNob3VsZC1iZS1kZXN0b3J5ZWQtYWZ0ZXItdGhlLXdsX3dpbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDljNzRlYzgzZTI5MjliMWQ1YWI2NWQ1MTM3YjZiYTQyZWRlYjMzMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZb25nIEdhbiA8YjQ1NzQ4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBUdWUsIDI3IE9jdCAyMDE1IDE4OjE1OjIwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeDogd2xfc3VyZmFjZSBzaG91bGQgYmUgZGVzdG9yeWVkIGFmdGVyIHRoZSB3bF93aW5kb3cKLSBkZXN0cm95ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyL2lzc3Vlcy8xMl0KLQotU2lnbmVkLW9mZi1ieTogWW9uZyBHYW4gPGI0NTc0OEBmcmVlc2NhbGUuY29tPgotCi0tLS0KLSBzcmMvbmF0aXZlLXN0YXRlLXdheWxhbmQuY3BwIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9uYXRpdmUtc3RhdGUtd2F5bGFuZC5jcHAgYi9zcmMvbmF0aXZlLXN0YXRlLXdheWxhbmQuY3BwCi1pbmRleCA0MWZjNzQzLi5jZGNkZjM0IDEwMDY0NAotLS0tIGEvc3JjL25hdGl2ZS1zdGF0ZS13YXlsYW5kLmNwcAotKysrIGIvc3JjL25hdGl2ZS1zdGF0ZS13YXlsYW5kLmNwcAotQEAgLTU2LDEwICs1NiwxMCBAQCBOYXRpdmVTdGF0ZVdheWxhbmQ6On5OYXRpdmVTdGF0ZVdheWxhbmQoKQotICAgICAgICAgICAgIHdsX3NoZWxsX3N1cmZhY2VfZGVzdHJveSh3aW5kb3dfLT5zaGVsbF9zdXJmYWNlKTsKLSAgICAgICAgIGlmICh3aW5kb3dfLT5vcGFxdWVfcmVxaW9uKQotICAgICAgICAgICAgIHdsX3JlZ2lvbl9kZXN0cm95KHdpbmRvd18tPm9wYXF1ZV9yZXFpb24pOwotLSAgICAgICAgaWYgKHdpbmRvd18tPnN1cmZhY2UpCi0tICAgICAgICAgICAgd2xfc3VyZmFjZV9kZXN0cm95KHdpbmRvd18tPnN1cmZhY2UpOwotICAgICAgICAgaWYgKHdpbmRvd18tPm5hdGl2ZSkKLSAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kod2luZG93Xy0+bmF0aXZlKTsKLSsgICAgICAgIGlmICh3aW5kb3dfLT5zdXJmYWNlKQotKyAgICAgICAgICAgIHdsX3N1cmZhY2VfZGVzdHJveSh3aW5kb3dfLT5zdXJmYWNlKTsKLSAgICAgICAgIGRlbGV0ZSB3aW5kb3dfOwotICAgICB9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKaW5kZXggMjZjNWMwNC4uYjcyY2VkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKQEAgLTgsMjEgKzgsMjQgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuU0dJO2JlZ2lubGluZT01O21kNT0yNjljZGFiNGFmNjc0ODY3N2FjY2U1MWQ5YWExMzU1MiIKIAotREVQRU5EUyA9ICJsaWJwbmcxMiBqcGVnIgorREVQRU5EUyA9ICJsaWJwbmcganBlZyB1ZGV2IgogCi1QViA9ICIyMDE0LjAzKyR7U1JDUFZ9IgorUFYgPSAiMjAxNy4wNyske1NSQ1BWfSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgZmlsZTovL2J1aWxkLUNoZWNrLXBhY2thZ2VzLXRvLWJlLXVzZWQtYnktdGhlLWVuYWJsZWQtZmxhdm8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUZpeC13bF9zdXJmYWNlLXNob3VsZC1iZS1kZXN0b3J5ZWQtYWZ0ZXItdGhlLXdsX3dpbmQucGF0Y2ggXAotICAgIGZpbGU6Ly9GaXgtY29uZmlndXJlLWZvci1zcXJ0LWNoZWNrLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICJmNDEzYzViNDIzMjUwYjRmZGU4Zjk1NjM5YWQzNjhkNWIwMmM1YjliIgorQ09NUEFUSUJMRV9IT1NUX3JwaSAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnLiotbGludXgqJywgJ251bGwnLCBkKX0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nbG1hcmsyL2dsbWFyazIuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLUNoZWNrLXBhY2thZ2VzLXRvLWJlLXVzZWQtYnktdGhlLWVuYWJsZWQtZmxhdm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1jbGFuZy13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICJlZDIwYzYzM2YxOTI2ZDFkZDc4ZTNlODkwNDNjODVhODEzMDJjYmU2IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IHdhZiBwa2djb25maWcKK2luaGVyaXQgd2FmIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCiAKIFBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEtZ2wgeDExLWdsZXMyJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgb3BlbmdsJywgJ3dheWxhbmQtZ2wgd2F5bGFuZC1nbGVzMicsICcnLCBkKX0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMWIwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM18zLjIuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJOZXR3b3JrIGJlbmNobWFyayB0b29sIgorREVTQ1JJUFRJT04gPSAiXAoraXBlcmYgaXMgYSB0b29sIGZvciBhY3RpdmUgbWVhc3VyZW1lbnRzIG9mIHRoZSBtYXhpbXVtIGFjaGlldmFibGUgYmFuZHdpZHRoIFwKK29uIElQIG5ldHdvcmtzLiBJdCBzdXBwb3J0cyB0dW5pbmcgb2YgdmFyaW91cyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gdGltaW5nLCBcCitwcm90b2NvbHMsIGFuZCBidWZmZXJzLiBGb3IgZWFjaCB0ZXN0IGl0IHJlcG9ydHMgdGhlIGJhbmR3aWR0aCwgbG9zcywgYW5kIFwKK290aGVyIHBhcmFtZXRlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvZnR3YXJlLmVzLm5ldC9pcGVyZi8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmL2lzc3VlcyIKK0FVVEhPUiA9ICJFU05FVCA8aW5mb0Blcy5uZXQ+LCBMYXdyZW5jZSBCZXJrZWxleSBOYXRpb25hbCBMYWJvcmF0b3J5IDx3ZWJzdXBwb3J0QGxibC5nb3Y+IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMDk4MjIzZTQ0YmRkMTk1ODUzMTVlZTc1Y2Q5ZDJkNyIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZXNuZXQvaXBlcmYuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci12YXJpb3VzLXN0ZC1jOTktaW50LXR5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUmVtb3ZlLXBnLWZyb20tcHJvZmlsZV9DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICI4OGQ5MDdmN2ZiNThiZmFiNWQwODZjNWRhNjBjOTIyZTFjNTgyYzkyIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHW2xrc2N0cF0gPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPXllcyxhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm8sbGtzY3RwLXRvb2xzIgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtb3BlbnNzbD0ke1JFQ0lQRV9TWVNST09UfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMDE4OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrIGJlbmNobWFyayB0b29sIgotREVTQ1JJUFRJT04gPSAiXAotaXBlcmYgaXMgYSB0b29sIGZvciBhY3RpdmUgbWVhc3VyZW1lbnRzIG9mIHRoZSBtYXhpbXVtIGFjaGlldmFibGUgYmFuZHdpZHRoIFwKLW9uIElQIG5ldHdvcmtzLiBJdCBzdXBwb3J0cyB0dW5pbmcgb2YgdmFyaW91cyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gdGltaW5nLCBcCi1wcm90b2NvbHMsIGFuZCBidWZmZXJzLiBGb3IgZWFjaCB0ZXN0IGl0IHJlcG9ydHMgdGhlIGJhbmR3aWR0aCwgbG9zcywgYW5kIFwKLW90aGVyIHBhcmFtZXRlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvZnR3YXJlLmVzLm5ldC9pcGVyZi8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmL2lzc3VlcyIKLUFVVEhPUiA9ICJFU05FVCA8aW5mb0Blcy5uZXQ+LCBMYXdyZW5jZSBCZXJrZWxleSBOYXRpb25hbCBMYWJvcmF0b3J5IDx3ZWJzdXBwb3J0QGxibC5nb3Y+IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YzM0MzRjNWE5YTUzYzc4Yzc3MzlmMGJjOWU1YWRkYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1wZy1mcm9tLXByb2ZpbGVfQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QViA9ICIzLjEuMytnaXRyJHtTUkNQVn0iCi1TUkNSRVYgPSAiMDk5MjQ0ZWM2ODZiNjIwMzkzZTk4NDU0NzhhNTU0YjFjN2NhNWM4YiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUEFDS0FHRUNPTkZJR1tsa3NjdHBdID0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD15ZXMsYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vLGxrc2N0cC10b29scyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc2ZmE4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL2ZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi0KLQotZml4IHRoZSBiZWxvdyBlcnJvcjoKLSAgRVJST1I6IFFBIElzc3VlOiBsaWJodWdldGxiZnM6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3Qgc2hpcHBlZAotICAvdXNyL2xpYjY0Ci0gIC91c3IvbGliNjQvbGliaHVnZXRsYmZzLnNvCi0gIC91c3IvbGliNjQvbGliaHVnZXRsYmZzLmEKLSAgL3Vzci9saWI2NC9saWJodWdldGxiZnNfcHJpdnV0aWxzLnNvCi0gIC91c3IvbGliNjQvcGVybDUKLSAgL3Vzci9saWI2NC9wZXJsNS9UTEJDCi0gIC91c3IvbGliNjQvcGVybDUvVExCQy9QZXJmQ29sbGVjdC5wbQotICAvdXNyL2xpYjY0L3Blcmw1L1RMQkMvUmVwb3J0LnBtCi0gIC91c3IvbGliNjQvcGVybDUvVExCQy9EYXRhQ29sbGVjdC5wbQotICAvdXNyL2xpYjY0L3Blcmw1L1RMQkMvT3BDb2xsZWN0LnBtCi0kPDUwPkVSUk9SOiBRQSBydW4gZm91bmQgZmF0YWwgZXJyb3JzLiBQbGVhc2UgY29uc2lkZXIgZml4aW5nIHRoZW0uCi0KLQotU2lnbmVkLW9mZi1ieTogR3VvIENodW5yb25nIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KLQotLS0tIGEvTWFrZWZpbGUJMjAxMy0wOS0yMyAwMjoyODo1Ny4zNDA1NjY5OTggLTA1MDAKLSsrKyBiL01ha2VmaWxlCTIwMTMtMDktMjMgMDI6MzE6MDUuMzQ0NTY5ODk2IC0wNTAwCi1AQCAtMzMsNyArMzMsNiBAQAotIENQUEZMQUdTICs9IC1EX19MSUJIVUdFVExCRlNfXyAtRFBQQ19OT19TRUdNRU5UUwotIAotIEFSQ0ggPSAkKHNoZWxsIHVuYW1lIC1tIHwgc2VkIC1lIHMvaS44Ni9pMzg2LykKLS1DQyA9IGdjYwotIAotIENVU1RPTV9MRFNDUklQVFMgPSB5ZXMKLSAKLUBAIC01OSw5ICs1OCw5IEBACi0gQ1VTVE9NX0xEU0NSSVBUUyA9IG5vCi0gZWxzZQotIGlmZXEgKCQoQVJDSCksYWFyY2g2NCkKLS1DQzY0ID0gZ2NjCi0rQ0M2NCA9ICQoQ0MpCi0gRUxGNjQgPSBhYXJjaDY0ZWxmCi0tVE1QTElCNjQgPSBsaWI2NAotK1RNUExJQjY0ID0gbGliCi0gQ1VTVE9NX0xEU0NSSVBUUyA9IG5vCi0gZWxzZQotIGlmZXEgKCQoQVJDSCksaTM4NikKLUBAIC03Miw3ICs3MSw3IEBACi0gaWZlcSAoJChBUkNIKSx4ODZfNjQpCi0gQ0M2NCA9ICQoQ0MpIC1tNjQKLSBFTEY2NCA9IGVsZl94ODZfNjQKLS1UTVBMSUI2NCA9IGxpYjY0Ci0rVE1QTElCNjQgPSBsaWIKLSBUTVBMSUIzMiA9IGxpYgotIGlmbmVxICgkKEJVSUxEVFlQRSksTkFUSVZFT05MWSkKLSBDQzMyID0gJChDQykgLW0zMgotQEAgLTE3MiwxMSArMTcxLDIzIEBACi0gQklORElSID0gJChQUkVGSVgpL3NoYXJlL2xpYmh1Z2V0bGJmcwotIEVYRURJUiA9ICQoUFJFRklYKS9iaW4KLSBET0NESVIgPSAkKFBSRUZJWCkvc2hhcmUvZG9jL2xpYmh1Z2V0bGJmcwotKwotIGlmZGVmIENDMzIKLSBQTURJUiA9ICQoUFJFRklYKS9saWIvcGVybDUvVExCQwotK2VuZGlmCi0rCi0raWZkZWYgQ0M2NAotK2lmZXEgKCQoQVJDSCkseDg2XzY0KQotK1BNRElSID0gJChQUkVGSVgpL2xpYi9wZXJsNS9UTEJDCi0rZWxzZQotK2lmZXEgKCQoQVJDSCksYWFyY2g2NCkKLStQTURJUiA9ICQoUFJFRklYKS9saWIvcGVybDUvVExCQwotIGVsc2UKLSBQTURJUiA9ICQoUFJFRklYKS9saWI2NC9wZXJsNS9UTEJDCi0gZW5kaWYKLStlbmRpZgotK2VuZGlmCi0rCi0gTUFORElSMSA9ICQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMQotIE1BTkRJUjMgPSAkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMKLSBNQU5ESVI3ID0gJChQUkVGSVgpL3NoYXJlL21hbi9tYW43CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIKaW5kZXggODIzZTA3Yy4uYTYzNDk0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYgpAQCAtMzMsNiArMzMsOCBAQAogUEFSQUxMRUxfTUFLRSA9ICIiCiBDRkxBR1MgKz0gIi1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZyZW5hbWUtcmVnaXN0ZXJzIC1mb21pdC1mcmFtZS1wb2ludGVyIC1nMCIKIAorZXhwb3J0IEhVR0VUTEJfTERTQ1JJUFRfUEFUSD0iJHtTfS9sZHNjcmlwdHMiCisKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCiAjVGhlIENVU1RPTV9MRFNDUklQVFMgZG9lc24ndCB3b3JrIHdpdGggdGhlIGdvbGQgbGlua2VyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbmJlbmNoLWJ5dGUvbmJlbmNoLWJ5dGVfMi4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbmJlbmNoLWJ5dGUvbmJlbmNoLWJ5dGVfMi4yLjMuYmIKaW5kZXggNTYyNzJkOS4uZGEyY2I0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL25iZW5jaC1ieXRlL25iZW5jaC1ieXRlXzIuMi4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9uYmVuY2gtYnl0ZS9uYmVuY2gtYnl0ZV8yLjIuMy5iYgpAQCAtMSwzICsxLDQgQEAKK1NVTU1BUlkgPSAiQSBDUFUgYmVuY2htYXJrIHV0aWxpdHkiCiBERVNDUklQVElPTiA9ICJCWVRFIE1hZ2F6aW5lJ3MgbmF0aXZlIGJlbmNobWFya3MgKGFsc28gY2FsbGVkIEJZVEVtYXJrKSBcCiBkZXNpZ25lZCB0byBleHBvc2UgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHN5c3RlbSdzIENQVSwgRlBVLCBcCiBhbmQgbWVtb3J5IHN5c3RlbS4iCkBAIC02LDcgKzcsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT01NztlbmRsaW5lPTY2O21kNT0wMjBlZjU3OWY4ZmE1NzQ2YjdlMzA3YTU0NzA3ODM0ZiIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnR1eC5vcmcvfm1heWVyL2xpbnV4LyR7QlB9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYy8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbmJlbmNoXzMyYml0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1hZGQtbW9yZS1kZXBlbmRlbmNpZXMtdG8tcG9pbnRlci5oLnBhdGNoIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzYuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV82LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMyMTc3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzYuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJQaG9yb25peCBUZXN0IFN1aXRlIgotREVTQ1JJUFRJT04gPSAiVGhlIFBob3Jvbml4IFRlc3QgU3VpdGUgaXMgZGVzaWduZWQgdG8gY2Fycnkgb3V0IGJvdGggcXVhbGl0YXRpdmUgXAotYW5kIHF1YW50aXRhdGl2ZSBiZW5jaG1hcmtzIGluIGEgY2xlYW4sIHJlcHJvZHVjaWJsZSwgYW5kIGVhc3ktdG8tdXNlIG1hbm5lci4iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5waG9yb25peC10ZXN0LXN1aXRlLmNvbS9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWJjYWM1ODk2YTRhMzRmYzZhZTRhZTk0OTkxZTE2MzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjMxY2ViODA4ZDhiZDZjZWJlNjljOGI3MTFkNTUwOTBkNjg4MGU5MDZhNjU4MzdmMThmYTgyMDBmZTdkMmM0ZCIKLQotUyA9ICIke1dPUktESVJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUiCi0KLWluaGVyaXQgc3lzdGVtZCBhbGxhcmNoCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgREVTVERJUj0ke0R9IC4vaW5zdGFsbC1zaCAke2V4ZWNfcHJlZml4fQotCi0gICAgaWYgWyAiJHtzeXN0ZW1kX3VuaXRkaXJ9IiAhPSAiL3Vzci9saWIvc3lzdGVtZCIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgbXYgJHtEfS91c3IvbGliL3N5c3RlbWQvc3lzdGVtLyogJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBybSAtcmYgJHtEfS91c3IvbGliLwotICAgIGZpCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwaG9yb21hdGljLWNsaWVudC5zZXJ2aWNlIHBob3JvbWF0aWMtc2VydmVyLnNlcnZpY2UiCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24gcGhwLWNsaSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9waG9yb25peC10ZXN0LXN1aXRlIFwKLSAgICAke2RhdGFkaXJ9L2FwcGRhdGEvcGhvcm9uaXgtdGVzdC1zdWl0ZS5hcHBkYXRhLnhtbCBcCi0gICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvcGhvcm9uaXgtdGVzdC1zdWl0ZS5wbmcgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci82NHg2NC9taW1ldHlwZXMvYXBwbGljYXRpb24teC1vcGVuYmVuY2htYXJraW5nLnBuZyBcCi0gICAgJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL29wZW5iZW5jaG1hcmtpbmctbWltZS54bWwgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSIKLQotUE5CTEFDS0xJU1RbcGhvcm9uaXgtdGVzdC1zdWl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBwaHAtY2xpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV83LjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjZDVkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJQaG9yb25peCBUZXN0IFN1aXRlIgorREVTQ1JJUFRJT04gPSAiVGhlIFBob3Jvbml4IFRlc3QgU3VpdGUgaXMgZGVzaWduZWQgdG8gY2Fycnkgb3V0IGJvdGggcXVhbGl0YXRpdmUgXAorYW5kIHF1YW50aXRhdGl2ZSBiZW5jaG1hcmtzIGluIGEgY2xlYW4sIHJlcHJvZHVjaWJsZSwgYW5kIGVhc3ktdG8tdXNlIG1hbm5lci4iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitTRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5waG9yb25peC10ZXN0LXN1aXRlLmNvbS9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODZmYTNlZWRlNDNmZmZmODg5OTJmZTIxMzY4YjExYjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU5YWVjM2VmNGY5ODA1ODE3NTZmZDBiZjdiMzBkZDFjY2IyMGU3YWFlNjM3MDc4YTU4NzYwNmJmNzVhNmI2NyIKKworUyA9ICIke1dPUktESVJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUiCisKK2luaGVyaXQgc3lzdGVtZCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgREVTVERJUj0ke0R9IC4vaW5zdGFsbC1zaCAke2V4ZWNfcHJlZml4fQorCisgICAgaWYgWyAiJHtzeXN0ZW1kX3VuaXRkaXJ9IiAhPSAiL3Vzci9saWIvc3lzdGVtZCIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgbXYgJHtEfS91c3IvbGliL3N5c3RlbWQvc3lzdGVtLyogJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBybSAtcmYgJHtEfS91c3IvbGliLworICAgIGZpCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwaG9yb21hdGljLWNsaWVudC5zZXJ2aWNlIHBob3JvbWF0aWMtc2VydmVyLnNlcnZpY2UiCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24gcGhwLWNsaSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9waG9yb25peC10ZXN0LXN1aXRlIFwKKyAgICAke2RhdGFkaXJ9L2FwcGRhdGEvcGhvcm9uaXgtdGVzdC1zdWl0ZS5hcHBkYXRhLnhtbCBcCisgICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvcGhvcm9uaXgtdGVzdC1zdWl0ZS5wbmcgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci82NHg2NC9taW1ldHlwZXMvYXBwbGljYXRpb24teC1vcGVuYmVuY2htYXJraW5nLnBuZyBcCisgICAgJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL29wZW5iZW5jaG1hcmtpbmctbWltZS54bWwgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9wbWJ3L3BtYndfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3BtYncvcG1id19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMTNkYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3BtYncvcG1id19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NRVJZID0gIlBhcmFsbGVsIE1lbW9yeSBCYW5kd2lkdGggTWVhc3VyZW1lbnQgLyBCZW5jaG1hcmsiCi1ERVNDUklQVElPTiA9ICJcCi1UaGUgdG9vbCBwbWJ3IGlzIGEgc2V0IG9mIGFzc2VtYmxlciByb3V0aW5lcyB0byBtZWFzdXJlIHRoZSBwYXJhbGxlbCBtZW1vcnkgXAotKGNhY2hlIGFuZCBSQU0pIGJhbmR3aWR0aCBvZiBtb2Rlcm4gbXVsdGktY29yZSBtYWNoaW5lcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGFudGhlbWEubmV0LzIwMTMvcG1idy8iCi1TRUNUSU9OID0gImJlbmNobWFyay90ZXN0cyIKLUFVVEhPUiA9ICJUaW1vIEJpbmdtYW5uIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmluZ21hbm4vcG1idztwcm90b2NvbD1odHRwcyIKLQotUFYgPSAiMC42LjIrZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiNGEzYjM3NzI4MDYwYThhYmEwNmZjODNmMTU3YTE5NjUwODhkNzlkNiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyB0aGUgaGFuZCBjb2RlZCBhc20gdXNlcyByMTEsIHdoaWNoIHRoZXJlZm9yZSBjYW5ub3QgYmUgdXNlZCBmb3Igc3RvcmluZwotIyB0aGUgZnJhbWUgcG9pbnRlciB3aGVuIGRlYnVnZ2luZyBvbiBhcm0KLVNFTEVDVEVEX09QVElNSVpBVElPTl9yZW1vdmVfYXJtID0gIi1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc3RhdHMyZ251cGxvdCIKLQotRklMRVNfJHtQTn0tc3RhdHMyZ251cGxvdCA9ICIke2JpbmRpcn0vc3RhdHMyZ251cGxvdCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tc3RhdHMyZ251cGxvdCIKLQotUE5CTEFDS0xJU1RbcG1id10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA1NjgvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Rpb2JlbmNoL3Rpb2JlbmNoLTAuMy4zLzAwMDEtU3BlY2lmeS1wcmludGYtZm9ybWF0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaC0wLjMuMy8wMDAxLVNwZWNpZnktcHJpbnRmLWZvcm1hdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkMzRmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaC0wLjMuMy8wMDAxLVNwZWNpZnktcHJpbnRmLWZvcm1hdHMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBiMDhlNjFlZjY0ZWVjZTIzY2U4ZmZhMjc4NGNkM2M0ZjcwYjYxNjllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTcgSnVuIDIwMTcgMDg6MDg6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gU3BlY2lmeSBwcmludGYgZm9ybWF0cworCitGaXhlcwordGlvdGVzdC5jOjU1NTo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0aW90ZXN0LmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aW90ZXN0LmMgYi90aW90ZXN0LmMKK2luZGV4IDZiM2QwYzMuLjNlNjE2NmEgMTAwNjQ0CistLS0gYS90aW90ZXN0LmMKKysrKyBiL3Rpb3Rlc3QuYworQEAgLTkxLDcgKzkxLDcgQEAgaW5saW5lIHZvaWQgY2hlY2tJbnRaZXJvKGludCB2YWx1ZSwgY2hhciAqbWVzcykKKyB7CisgCWlmICh2YWx1ZSA8PSAwKSAKKyAJeworLQkJcHJpbnRmKG1lc3MpOworKwkJcHJpbnRmKCIlcyIsbWVzcyk7CisgCQlwcmludGYoIlRyeSAndGlvdGVzdCAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKTsKKyAJCWV4aXQoMSk7CisgCX0KK0BAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIHZvaWQgY2hlY2tMb25nKGxvbmcgdmFsdWUsIGNoYXIgKm1lc3MpCisgeworIAlpZiAodmFsdWUgPCAwKSAKKyAJeworLQkJcHJpbnRmKG1lc3MpOworKwkJcHJpbnRmKCIlcyIsIG1lc3MpOworIAkJcHJpbnRmKCJUcnkgJ3Rpb3Rlc3QgLWgnIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iKTsKKyAJCWV4aXQoMSk7CisgCX0KK0BAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBkb190ZXN0KCBUaHJlYWRUZXN0ICp0ZXN0LCBpbnQgdGVzdENhc2UsIGludCBzZXF1ZW50aWFsLAorIAkJaWYoYXJncy5kZWJ1Z0xldmVsID4gNCkKKyAJCXsKKyAJCQlwcmludGYoIkNyZWF0ZWQgJWQgdGhyZWFkc1xuIiwgaSk7CistCQkJZnByaW50ZihzdGRlcnIsIGRlYnVnTWVzc2FnZSk7CisrCQkJZnByaW50ZihzdGRlcnIsICIlcyIsICBkZWJ1Z01lc3NhZ2UpOworIAkJCWZmbHVzaChzdGRlcnIpOworIAkJfQorIAkKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaF8wLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaF8wLjMuMy5iYgppbmRleCAzNWFmMzVmLi40MjdjZTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvdGlvYmVuY2gvdGlvYmVuY2hfMC4zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Rpb2JlbmNoL3Rpb2JlbmNoXzAuMy4zLmJiCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgZmlsZTovL3Rpb2JlbmNoLW1ha2VmaWxlLnBhdGNoIFwKICAgICBmaWxlOi8vYXZvaWQtZ2xpYmMtY2xhc2hlcy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtRHJvcC1pbmxpbmUtb2YtY3JjMzItZnVuY3Rpb24tdG8tZml4LWJ1aWxkLXVzaW5nLUdDQy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtU3BlY2lmeS1wcmludGYtZm9ybWF0cy5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmY0ODViZjgyMGU2OTNjNzllNmJkMmEzODcwMmExMjgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFkMDExMDU5YTM1YWM3MGNkYjVlM2QzOTk5Y2VlZTQ0YThlOGU5MDc4OTI2ODQ0YjA2ODViN2VhOWRiMmJjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlei1oY2lkdW1wLTIuNS9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXotaGNpZHVtcC0yLjUvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzc3ZjFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlei1oY2lkdW1wLTIuNS9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3BhY2thZ2Ugb2Jzb2xldGUvbm90IG1haW50YWluZWQgYnkgdXBzdHJlYW1dCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+Ci1kaWZmIC1OdXJkIGJsdWV6LWhjaWR1bXAtMi41L2NvbmZpZ3VyZS5hYyBibHVlei1oY2lkdW1wLTIuNS9jb25maWd1cmUuYWMKLS0tLSBibHVlei1oY2lkdW1wLTIuNS9jb25maWd1cmUuYWMJMjAxMi0xMS0zMCAxMDoyOTo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBibHVlei1oY2lkdW1wLTIuNS9jb25maWd1cmUuYWMJMjAxMy0wMS0xMiAxMDowMjoxMC42MDk1MTE0NjMgKzAyMDAKLUBAIC0yLDcgKzIsNyBAQAotIEFDX0lOSVQoYmx1ZXotaGNpZHVtcCwgMi41KQotCi0gQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBzdWJkaXItb2JqZWN0c10pCi0tQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLStBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXotaGNpZHVtcF8yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXotaGNpZHVtcF8yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMTVkNjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6LWhjaWR1bXBfMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBCbHVldG9vdGggU3RhY2sgSENJIERlYnVnZ2VyIFRvb2wiCi1ERVNDUklQVElPTiA9ICJUaGUgaGNpZHVtcCB0b29sIHJlYWRzIHJhdyBIQ0kgZGF0YSBjb21pbmcgZnJvbSBhbmQgZ29pbmcgdG8gYSBCbHVldG9vdGggZGV2aWNlIFwKLWFuZCBkaXNwbGF5cyB0aGUgY29tbWFuZHMsIGV2ZW50cyBhbmQgZGF0YSBpbiBhIGh1bWFuLXJlYWRhYmxlIGZvcm0uIgotCi1TRUNUSU9OID0gImNvbnNvbGUiCi0jIGhjaWR1bXAgd2FzIGludGVncmF0ZWQgaW50byBibHVlejUKLURFUEVORFMgPSAiYmx1ZXo0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJibHVlejUiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oY2lkdW1wLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9M2JlZTNhMTYyZGZmNDNhNWJlNzQ3MDcxMGI5OWZiY2YiCi1QUiA9ICJyMSIKLQotUE5CTEFDS0xJU1RbYmx1ZXotaGNpZHVtcF0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXo1JywgJ2JsdWV6NSBjb25mbGljdHMgd2l0aCBibHVlejQgYW5kIGJsdWV6NSBpcyBzZWxlY3RlZCBpbiBESVNUUk9fRkVBVFVSRVMnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvYmx1ZXRvb3RoL2JsdWV6LWhjaWR1bXAtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZWFiNTRiYmQyYjU5YTJlZDQyNzRlYmI5MzkwY2YxOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjdjNTJiMzc1MDgxODgzNzM4Y2YwNDllY2FiYzEwM2I5N2QwOTRiMTljNjU0NGZiMjQxMjY3OTA1ZDg4ODgxIgotUyA9ICIke1dPUktESVJ9L2JsdWV6LWhjaWR1bXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2JsdWV0b290aC5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9ibHVldG9vdGguY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E1ZTllNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2JsdWV0b290aC5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPCEtLSBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzcGVjaWZpZXMgdGhlIHJlcXVpcmVkIHNlY3VyaXR5IHBvbGljaWVzCi0gICAgIGZvciBCbHVldG9vdGggY29yZSBkYWVtb24gdG8gd29yay4gLS0+Ci0KLTwhRE9DVFlQRSBidXNjb25maWcgUFVCTElDICItLy9mcmVlZGVza3RvcC8vRFREIEQtQlVTIEJ1cyBDb25maWd1cmF0aW9uIDEuMC8vRU4iCi0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3N0YW5kYXJkcy9kYnVzLzEuMC9idXNjb25maWcuZHRkIj4KLTxidXNjb25maWc+Ci0KLSAgPCEtLSAuLi9zeXN0ZW0uY29uZiBoYXZlIGRlbmllZCBldmVyeXRoaW5nLCBzbyB3ZSBqdXN0IHB1bmNoIHNvbWUgaG9sZXMgLS0+Ci0KLSAgPHBvbGljeSBjb250ZXh0PSJkZWZhdWx0Ij4KLSAgICA8YWxsb3cgb3duPSJvcmcuYmx1ZXoiLz4KLSAgICA8YWxsb3cgc2VuZF9kZXN0aW5hdGlvbj0ib3JnLmJsdWV6Ii8+Ci0gICAgPGFsbG93IHNlbmRfaW50ZXJmYWNlPSJvcmcuYmx1ZXouQWdlbnQiLz4KLSAgPC9wb2xpY3k+Ci0KLTwvYnVzY29uZmlnPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9maXgtdWRldi1wYXRocy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvZml4LXVkZXYtcGF0aHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwODk5MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9maXgtdWRldi1wYXRocy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUFkZCB1ZGV2ZGlyL3VkZXZydWxlc2RpciBvcHRpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotSW5kZXg6IGJsdWV6LTQuMTAxL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy9NYWtlZmlsZS5hbQotKysrIGJsdWV6LTQuMTAxL01ha2VmaWxlLmFtCi1AQCAtMzk1LDcgKzM5NSw3IEBAIEVYVFJBX0RJU1QgKz0gYXVkaW8vYmx1ZXRvb3RoLmNvbmYKLSBpbmNsdWRlIE1ha2VmaWxlLnRvb2xzCi0gCi0gaWYgREFUQUZJTEVTCi0tcnVsZXNkaXIgPSBAVURFVl9ESVJAL3J1bGVzLmQKLStydWxlc2RpciA9IEBVREVWX1JVTEVTX0RJUkAKLSAKLSB1ZGV2X2ZpbGVzID0KLSAKLUluZGV4OiBibHVlei00LjEwMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBibHVlei00LjEwMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGJsdWV6LTQuMTAxL2NvbmZpZ3VyZS5hYwotQEAgLTYxLDQgKzYxLDE0IEBAIGlmICh0ZXN0IC1uICIke3BhdGhfc3lzdGVtZHVuaXR9Iik7IHRoZW4KLSBmaQotIEFNX0NPTkRJVElPTkFMKFNZU1RFTUQsIHRlc3QgLW4gIiR7cGF0aF9zeXN0ZW1kdW5pdH0iKQotIAotK0FDX0FSR19XSVRIKFt1ZGV2ZGlyXSwKLSsgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11ZGV2ZGlyPURJUl0sIFt1ZGV2IGRpcmVjdG9yeV0pLAotKyAgICBbXSwgW3dpdGhfdWRldmRpcj0vbGliL3VkZXYvXSkKLStBQ19TVUJTVChbVURFVl9ESVJdLCBbJHdpdGhfdWRldmRpcl0pCi0rCi0rQUNfQVJHX1dJVEgoW3VkZXZydWxlc2Rpcl0sCi0rICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtdWRldnJ1bGVzZGlyPURJUl0sIFt1ZGV2IHJ1bGVzIGRpcmVjdG9yeV0pLAotKyAgICBbXSwgW3dpdGhfdWRldnJ1bGVzZGlyPS9saWIvdWRldi9ydWxlcy5kXSkKLStBQ19TVUJTVChbVURFVl9SVUxFU19ESVJdLCBbJHdpdGhfdWRldnJ1bGVzZGlyXSkKLSsKLSBBQ19PVVRQVVQoTWFrZWZpbGUgZG9jL3ZlcnNpb24ueG1sIHNyYy9ibHVldG9vdGhkLjggc3JjL2JsdWV0b290aC5zZXJ2aWNlIGJsdWV6LnBjKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9maXhfZW5jcnlwdF9jb2xsaXNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2ZpeF9lbmNyeXB0X2NvbGxpc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjMzkwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2ZpeF9lbmNyeXB0X2NvbGxpc2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1Bdm9pZCBuYW1lcHNwYWNlIGNvbGxpc2lvbiB3aXRoIGVuY3J5cHQgZnVuY3Rpb24gZnJvbSBsaWJjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IGJsdWV6LTQuMTAxL3Rlc3QvbDJ0ZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBibHVlei00LjEwMS5vcmlnL3Rlc3QvbDJ0ZXN0LmMKLSsrKyBibHVlei00LjEwMS90ZXN0L2wydGVzdC5jCi1AQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBjaGFyICpmaWxlbmFtZSA9IE5VTEw7Ci0gc3RhdGljIGludCByZmNtb2RlID0gMDsKLSBzdGF0aWMgaW50IG1hc3RlciA9IDA7Ci0gc3RhdGljIGludCBhdXRoID0gMDsKLS1zdGF0aWMgaW50IGVuY3J5cHQgPSAwOwotK3N0YXRpYyBpbnQgZW5jcnlwdGlvbl9yZXF1ZXN0ID0gMDsKLSBzdGF0aWMgaW50IHNlY3VyZSA9IDA7Ci0gc3RhdGljIGludCBzb2NrdHlwZSA9IFNPQ0tfU0VRUEFDS0VUOwotIHN0YXRpYyBpbnQgbGluZ2VyID0gMDsKLUBAIC0zNDAsNyArMzQwLDcgQEAgc3RhdGljIGludCBkb19jb25uZWN0KGNoYXIgKnN2cikKLSAJCW9wdCB8PSBMMkNBUF9MTV9NQVNURVI7Ci0gCWlmIChhdXRoKQotIAkJb3B0IHw9IEwyQ0FQX0xNX0FVVEg7Ci0tCWlmIChlbmNyeXB0KQotKwlpZiAoZW5jcnlwdGlvbl9yZXF1ZXN0KQotIAkJb3B0IHw9IEwyQ0FQX0xNX0VOQ1JZUFQ7Ci0gCWlmIChzZWN1cmUpCi0gCQlvcHQgfD0gTDJDQVBfTE1fU0VDVVJFOwotQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCBkb19saXN0ZW4odm9pZCAoKmhhbmRsZXIpKGluCi0gCQlvcHQgfD0gTDJDQVBfTE1fTUFTVEVSOwotIAlpZiAoYXV0aCkKLSAJCW9wdCB8PSBMMkNBUF9MTV9BVVRIOwotLQlpZiAoZW5jcnlwdCkKLSsJaWYgKGVuY3J5cHRpb25fcmVxdWVzdCkKLSAJCW9wdCB8PSBMMkNBUF9MTV9FTkNSWVBUOwotIAlpZiAoc2VjdXJlKQotIAkJb3B0IHw9IEwyQ0FQX0xNX1NFQ1VSRTsKLUBAIC0xNDA3LDcgKzE0MDcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJCWJyZWFrOwotIAotIAkJY2FzZSAnRSc6Ci0tCQkJZW5jcnlwdCA9IDE7Ci0rCQkJZW5jcnlwdGlvbl9yZXF1ZXN0ID0gMTsKLSAJCQlicmVhazsKLSAKLSAJCWNhc2UgJ1MnOgotSW5kZXg6IGJsdWV6LTQuMTAxL3Rlc3QvcmN0ZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBibHVlei00LjEwMS5vcmlnL3Rlc3QvcmN0ZXN0LmMKLSsrKyBibHVlei00LjEwMS90ZXN0L3JjdGVzdC5jCi1AQCAtNzksNyArNzksNyBAQCBzdGF0aWMgY2hhciAqZmlsZW5hbWUgPSBOVUxMOwotIAotIHN0YXRpYyBpbnQgbWFzdGVyID0gMDsKLSBzdGF0aWMgaW50IGF1dGggPSAwOwotLXN0YXRpYyBpbnQgZW5jcnlwdCA9IDA7Ci0rc3RhdGljIGludCBlbmNyeXB0aW9uX3JlcXVlc3QgPSAwOwotIHN0YXRpYyBpbnQgc2VjdXJlID0gMDsKLSBzdGF0aWMgaW50IHNvY2t0eXBlID0gU09DS19TVFJFQU07Ci0gc3RhdGljIGludCBsaW5nZXIgPSAwOwotQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgaW50IGRvX2Nvbm5lY3QoY29uc3QgY2hhciAqc3ZyKQotIAkJb3B0IHw9IFJGQ09NTV9MTV9NQVNURVI7Ci0gCWlmIChhdXRoKQotIAkJb3B0IHw9IFJGQ09NTV9MTV9BVVRIOwotLQlpZiAoZW5jcnlwdCkKLSsJaWYgKGVuY3J5cHRpb25fcmVxdWVzdCkKLSAJCW9wdCB8PSBSRkNPTU1fTE1fRU5DUllQVDsKLSAJaWYgKHNlY3VyZSkKLSAJCW9wdCB8PSBSRkNPTU1fTE1fU0VDVVJFOwotQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgdm9pZCBkb19saXN0ZW4odm9pZCAoKmhhbmRsZXIpKGluCi0gCQlvcHQgfD0gUkZDT01NX0xNX01BU1RFUjsKLSAJaWYgKGF1dGgpCi0gCQlvcHQgfD0gUkZDT01NX0xNX0FVVEg7Ci0tCWlmIChlbmNyeXB0KQotKwlpZiAoZW5jcnlwdGlvbl9yZXF1ZXN0KQotIAkJb3B0IHw9IFJGQ09NTV9MTV9FTkNSWVBUOwotIAlpZiAoc2VjdXJlKQotIAkJb3B0IHw9IFJGQ09NTV9MTV9TRUNVUkU7Ci1AQCAtNzAxLDcgKzcwMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJYnJlYWs7Ci0gCi0gCQljYXNlICdFJzoKLS0JCQllbmNyeXB0ID0gMTsKLSsJCQllbmNyeXB0aW9uX3JlcXVlc3QgPSAxOwotIAkJCWJyZWFrOwotIAotIAkJY2FzZSAnUyc6Ci1JbmRleDogYmx1ZXotNC4xMDEvc3JjL3RleHRmaWxlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBibHVlei00LjEwMS5vcmlnL3NyYy90ZXh0ZmlsZS5oCi0rKysgYmx1ZXotNC4xMDEvc3JjL3RleHRmaWxlLmgKLUBAIC0yNCw2ICsyNCw4IEBACi0gI2lmbmRlZiBfX1RFWFRGSUxFX0gKLSAjZGVmaW5lIF9fVEVYVEZJTEVfSAotIAotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsKLSBpbnQgY3JlYXRlX2RpcnMoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IG1vZGVfdCBtb2RlKTsKLSBpbnQgY3JlYXRlX2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IG1vZGVfdCBtb2RlKTsKLSBpbnQgY3JlYXRlX25hbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqcGF0aCwKLUluZGV4OiBibHVlei00LjEwMS90ZXN0L2F0dGVzdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy90ZXN0L2F0dGVzdC5jCi0rKysgYmx1ZXotNC4xMDEvdGVzdC9hdHRlc3QuYwotQEAgLTM0LDYgKzM0LDcgQEAKLSAjaW5jbHVkZSA8dGVybWlvcy5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+Ci0gCi0gI2luY2x1ZGUgPGJsdWV0b290aC9ibHVldG9vdGguaD4KLSAjaW5jbHVkZSA8Ymx1ZXRvb3RoL3JmY29tbS5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9pbnN0YWxsLXRlc3Qtc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9pbnN0YWxsLXRlc3Qtc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2Y3ZDk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvaW5zdGFsbC10ZXN0LXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1JbnN0YWxsIHRoZSBibHVleidzIHRlc3Qgc2NyaXB0cwotCi1TaWduZWQtb2ZmLWJ5OiBaaG9uZyBIb25nYm8gPGhvbmdiby56aG9uZ0B3aW5kcml2ZXIuY29tPgotZGlmZiAtTnVyZCBibHVlei00LjEwMS5vcmlnL01ha2VmaWxlLnRvb2xzIGJsdWV6LTQuMTAxL01ha2VmaWxlLnRvb2xzCi0tLS0gYmx1ZXotNC4xMDEub3JpZy9NYWtlZmlsZS50b29scwkyMDEzLTExLTE5IDE1OjQ5OjA3LjY4ODgzODAwMCArMDgwMAotKysrIGJsdWV6LTQuMTAxL01ha2VmaWxlLnRvb2xzCTIwMTMtMTEtMTkgMTU6NTA6MDkuMjU2ODM3ODQ4ICswODAwCi1AQCAtMjI3LDYgKzIyNywxNyBAQAotIAkJdGVzdC9zZXJ2aWNlLXNwcC54bWwgdGVzdC9zZXJ2aWNlLW9wcC54bWwgdGVzdC9zZXJ2aWNlLWZ0cC54bWwgXAotIAkJdGVzdC9zaW1wbGUtcGxheWVyIHRlc3QvdGVzdC1uYXAKLSAKLStibHVlejRfdGVzdGRpciA9ICQobGliZGlyKS9ibHVlejQvdGVzdC8KLStkaXN0X2JsdWV6NF90ZXN0X1NDUklQVFMgPSB0ZXN0L3NhcC1jbGllbnQgdGVzdC9oc3BsYXkgdGVzdC9oc21pY3JvIFwKLSsJCXRlc3QvbW9uaXRvci1ibHVldG9vdGggdGVzdC9saXN0LWRldmljZXMgXAotKwkJdGVzdC90ZXN0LWRpc2NvdmVyeSB0ZXN0L3Rlc3QtbWFuYWdlciB0ZXN0L3Rlc3QtYWRhcHRlciBcCi0rCQl0ZXN0L3Rlc3QtZGV2aWNlIHRlc3QvdGVzdC1zZXJ2aWNlIHRlc3QvdGVzdC1zZXJpYWwgXAotKwkJdGVzdC90ZXN0LXRlbGVwaG9ueSB0ZXN0L3Rlc3QtbmV0d29yayB0ZXN0L3NpbXBsZS1hZ2VudCBcCi0rCQl0ZXN0L3NpbXBsZS1zZXJ2aWNlIHRlc3Qvc2ltcGxlLWVuZHBvaW50IHRlc3QvdGVzdC1hdWRpbyBcCi0rCQl0ZXN0L3Rlc3QtaW5wdXQgdGVzdC90ZXN0LXNhcC1zZXJ2ZXIgdGVzdC90ZXN0LW9vYiBcCi0rCQl0ZXN0L3Rlc3QtYXR0cmliIHRlc3QvdGVzdC1wcm94aW1pdHkgdGVzdC90ZXN0LXRoZXJtb21ldGVyIFwKLSsJCXRlc3QvdGVzdC1zZXJpYWwtcHJveHkgdGVzdC90ZXN0LWhlYWx0aCB0ZXN0L3Rlc3QtaGVhbHRoLXNpbmsgXAotKwkJdGVzdC9zaW1wbGUtcGxheWVyIHRlc3QvdGVzdC1uYXAKLSBpZiBISURECi0gYmluX1BST0dSQU1TICs9IGNvbXBhdC9oaWRkCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL25ldHdvcmstZml4LW5ldHdvcmstQ29ubmVjdC1tZXRob2QtcGFyYW1ldGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvbmV0d29yay1maXgtbmV0d29yay1Db25uZWN0LW1ldGhvZC1wYXJhbWV0ZXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2Y5MTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvbmV0d29yay1maXgtbmV0d29yay1Db25uZWN0LW1ldGhvZC1wYXJhbWV0ZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KLQotRnJvbSA1NzE3MGIzMTFmMTQ2ODMzMGY0YTk5NjFkYzBiM2FjNDVmOTdiYzEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgotRGF0ZTogU2F0LCAzMCBKdW4gMjAxMiAwMDozOTowNSAtMDMwMAotU3ViamVjdDogW1BBVENIXSBuZXR3b3JrOiBmaXggbmV0d29yayBDb25uZWN0KCkgbWV0aG9kIHBhcmFtZXRlcnMKLQotLS0tCi0gbmV0d29yay9jb25uZWN0aW9uLmMgfCAgICA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JrL2Nvbm5lY3Rpb24uYyBiL25ldHdvcmsvY29ubmVjdGlvbi5jCi1pbmRleCA1NDRlYzNhLi41OTQyM2E5IDEwMDY0NAotLS0tIGEvbmV0d29yay9jb25uZWN0aW9uLmMKLSsrKyBiL25ldHdvcmsvY29ubmVjdGlvbi5jCi1AQCAtNTU0LDcgKzU1NCw5IEBAIHN0YXRpYyB2b2lkIHBhdGhfdW5yZWdpc3Rlcih2b2lkICpkYXRhKQotIAotIHN0YXRpYyBjb25zdCBHREJ1c01ldGhvZFRhYmxlIGNvbm5lY3Rpb25fbWV0aG9kc1tdID0gewotIAl7IEdEQlVTX0FTWU5DX01FVEhPRCgiQ29ubmVjdCIsCi0tCQkJTlVMTCwgTlVMTCwgY29ubmVjdGlvbl9jb25uZWN0KSB9LAotKwkJCQlHREJVU19BUkdTKHsidXVpZCIsICJzIn0pLAotKwkJCQlHREJVU19BUkdTKHsiaW50ZXJmYWNlIiwgInMifSksCi0rCQkJCWNvbm5lY3Rpb25fY29ubmVjdCkgfSwKLSAJeyBHREJVU19NRVRIT0QoIkRpc2Nvbm5lY3QiLAotIAkJCU5VTEwsIE5VTEwsIGNvbm5lY3Rpb25fZGlzY29ubmVjdCkgfSwKLSAJeyBHREJVU19NRVRIT0QoIkdldFByb3BlcnRpZXMiLAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNjhmMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+Ci1kaWZmIC1OdXJkIGJsdWV6LTQuMTAxL2NvbmZpZ3VyZS5hYyBibHVlei00LjEwMS9jb25maWd1cmUuYWMKLS0tLSBibHVlei00LjEwMS9jb25maWd1cmUuYWMJMjAxMi0wNi0yMiAxOTozNjo0OS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBibHVlei00LjEwMS9jb25maWd1cmUuYWMJMjAxMy0wMS0wNyAwNjoxMzoxOC4zODU4ODg5NjYgKzAyMDAKLUBAIC0yLDcgKzIsNyBAQAotIEFDX0lOSVQoYmx1ZXosIDQuMTAxKQotCi0gQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBzdWJkaXItb2JqZWN0cyBjb2xvci10ZXN0c10pCi0tQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLStBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL3NiY19tbXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL3NiY19tbXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZmFiNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9zYmNfbW14LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotb24geDg2IGFuZCB4ODZfNjQgZ2NjIDQuNyBjb21wbGFpbnMKLQotc2JjL3NiY19wcmltaXRpdmVzX21teC5jOiBJbiBmdW5jdGlvbiAnc2JjX2NhbGNfc2NhbGVmYWN0b3JzX21teCc6Ci1zYmMvc2JjX3ByaW1pdGl2ZXNfbW14LmM6Mjk0OjQ6IHdhcm5pbmc6IGFzbSBvcGVyYW5kIDIgcHJvYmFibHkgZG9lc24ndCBtYXRjaCBjb25zdHJhaW50cyBbZW5hYmxlZCBieSBkZWZhdWx0XQotc2JjL3NiY19wcmltaXRpdmVzX21teC5jOjI5NDo0OiBlcnJvcjogaW1wb3NzaWJsZSBjb25zdHJhaW50IGluICdhc20nCi0KLVRoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbSBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC91YnVudHUvK3NvdXJjZS9ibHVlei8rYnVnLzkxMTg3MQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBibHVlei00Ljk4L3NiYy9zYmNfcHJpbWl0aXZlc19tbXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJsdWV6LTQuOTgub3JpZy9zYmMvc2JjX3ByaW1pdGl2ZXNfbW14LmMJMjAxMS0xMi0yMSAxNDo1Mzo1NC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBibHVlei00Ljk4L3NiYy9zYmNfcHJpbWl0aXZlc19tbXguYwkyMDEyLTAyLTI0IDEwOjA3OjAzLjQyMjA3MzgwMCAtMDgwMAotQEAgLTMxOCw3ICszMTgsNyBAQAotIAkJCQkibW92bCAgICAgICAgICAlazAsIDQoJTMpXG4iCi0gCQkJOiAiK3IiIChibGspCi0gCQkJOiAiciIgKCZzYl9zYW1wbGVfZlswXVtjaF1bc2JdKSwKLS0JCQkJImkiICgoY2hhciAqKSAmc2Jfc2FtcGxlX2ZbMV1bMF1bMF0gLQotKwkJCQkiciIgKChjaGFyICopICZzYl9zYW1wbGVfZlsxXVswXVswXSAtCi0gCQkJCQkoY2hhciAqKSAmc2Jfc2FtcGxlX2ZbMF1bMF1bMF0pLAotIAkJCQkiciIgKCZzY2FsZV9mYWN0b3JbY2hdW3NiXSksCi0gCQkJCSJyIiAoJmNvbnN0cyksCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjQwY2NmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBCbHVldG9vdGggU3RhY2sgVXNlcmxhbmQgVjQiCi1ERVNDUklQVElPTiA9ICJMaW51eCBCbHVldG9vdGggc3RhY2sgVjQgdXNlcmxhbmQgY29tcG9uZW50cy4gIFRoZXNlIGluY2x1ZGUgYSBzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGRhZW1vbnMsIHRvb2xzIGFuZCBzeXN0ZW0gbGlicmFyaWVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYmx1ZXoub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05YmM1NGI5M2NkN2UxN2JmMDNmNTI1MTNmMzlmOTI2ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zYmMvc2JjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNTttZDU9MWE0MDc4MWVkMzBkNTBkODYzOTMyM2ExODRhZWIxOTEiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KLURFUEVORFMgPSAidWRldiBsaWJ1c2IgZGJ1cy1nbGliIGdsaWItMi4wIGxpYmNoZWNrIHJlYWRsaW5lIGxpYnNuZGZpbGUxIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gImJsdWV6LWhjaWR1bXAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHBpZSBzeXN0ZW1kJywgZCl9IgotUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1twaWVdID0gIi0tZW5hYmxlLXBpZSwtLWRpc2FibGUtcGllLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWR1bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0iCi0KLUFTTkVFREVEID0gIiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIuZ3oiCi1TID0gIiR7V09SS0RJUn0vYmx1ZXotJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgc3lzdGVtZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZGlzYWJsZS1nc3RyZWFtZXIgXAotICAgIC0tZW5hYmxlLXVzYiBcCi0gICAgLS1lbmFibGUtdG9vbHMgXAotICAgIC0tZW5hYmxlLWJjY21kIFwKLSAgICAtLWVuYWJsZS1oaWQyaGNpIFwKLSAgICAtLWVuYWJsZS1kZnV0b29sIFwKLSAgICAtLWRpc2FibGUtaGlkZCBcCi0gICAgLS1kaXNhYmxlLXBhbmQgXAotICAgIC0tZGlzYWJsZS1kdW5kIFwKLSAgICAtLWRpc2FibGUtY3VwcyBcCi0gICAgLS1lbmFibGUtdGVzdCBcCi0gICAgLS1lbmFibGUtZGF0YWZpbGVzIFwKLSAgICAtLXdpdGgtdWRldmRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAgXAotICAgIC0td2l0aC11ZGV2cnVsZXNkaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQgXAotIgotCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejRfNC4xMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0XzQuMTAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmQxNmMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejRfNC4xMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1yZXF1aXJlIGJsdWV6NC5pbmMKLQotUE5CTEFDS0xJU1RbYmx1ZXo0XSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLVBSID0gInIxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2JsdWV0b290aC5jb25mIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zYmNfbW14LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtdWRldi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uZXR3b3JrLWZpeC1uZXR3b3JrLUNvbm5lY3QtbWV0aG9kLXBhcmFtZXRlcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2luc3RhbGwtdGVzdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpeF9lbmNyeXB0X2NvbGxpc2lvbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjQyY2I3MDM4YzM4MGViMGUyZmEyMDg5ODdjOTZhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTczODQxMGFkZTlmMGU2MWExM2MwZjc3ZDlhYWZmYWFmZTQ5YmE5NDE4MTA3ZTRhZDc1ZmU1Mjg0NmY3NDg3IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImJsdWV6NSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vYXVkaW8vYXVkaW8uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L25ldHdvcmsvbmV0d29yay5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5wdXQvaW5wdXQuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwotICAgICMgYXRfY29uc29sZSBkb2Vzbid0IHJlYWxseSB3b3JrIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgT0UsIHNvIHB1bmNoIHNvbWUgbW9yZSBob2xlcyBzbyBwZW9wbGUgY2FuIGFjdHVhbGx5IHVzZSBCVAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsdWV0b290aC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvCi19Ci0KLVJERVBFTkRTXyR7UE59LWRldiA9ICJibHVlei1oY2lkdW1wIgotUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24gcHl0aG9uLWRidXMgcHl0aG9uLXB5Z29iamVjdCIKLQotQUxMT1dfRU1QVFlfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA9ICIxIgotUEFDS0FHRVMgPSsgImxpYmFzb3VuZC1tb2R1bGUtYmx1ZXogJHtQTn0tdGVzdHRvb2xzIgotCi1GSUxFU19saWJhc291bmQtbW9kdWxlLWJsdWV6ID0gIiR7bGliZGlyfS9hbHNhLWxpYi9saWIqLnNvICR7ZGF0YWRpcn0vYWxzYSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyouc28gJHtiYXNlX2xpYmRpcn0vdWRldi8gJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyAke3N5c3RlbWRfdW5pdGRpcn0vICR7ZGF0YWRpcn0vZGJ1cy0xIgotRklMRVNfJHtQTn0tZGV2ICs9ICJcCi0gICAgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyoubGEgXAotICAgICR7bGliZGlyfS9hbHNhLWxpYi8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0tdGVzdHRvb2xzID0gIiR7bGliZGlyfS9ibHVlejQvdGVzdC8qIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vKi8uZGVidWcgXAotICAgICovdWRldi8uZGVidWcgXAotIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYmx1ZXRvb3RoLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovZ3N0LXBsdWdpbi1ibHVldG9vdGhfNC4xMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovZ3N0LXBsdWdpbi1ibHVldG9vdGhfNC4xMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmFlYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2dzdC1wbHVnaW4tYmx1ZXRvb3RoXzQuMTAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotcmVxdWlyZSBibHVlejQuaW5jCi1yZXF1aXJlIHJlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKLQotUE5CTEFDS0xJU1RbZ3N0LXBsdWdpbi1ibHVldG9vdGhdID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV6NScsICdibHVlejUgY29uZmxpY3RzIHdpdGggYmx1ZXo0IGFuZCBibHVlejUgaXMgc2VsZWN0ZWQgaW4gRElTVFJPX0ZFQVRVUkVTJywgJycsIGQpfSIKLQotUFIgPSAicjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjQyY2I3MDM4YzM4MGViMGUyZmEyMDg5ODdjOTZhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTczODQxMGFkZTlmMGU2MWExM2MwZjc3ZDlhYWZmYWFmZTQ5YmE5NDE4MTA3ZTRhZDc1ZmU1Mjg0NmY3NDg3IgotCi1ERVBFTkRTID0gImJsdWV6NCBnc3QtcGx1Z2lucy1iYXNlIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLWdzdHJlYW1lciBcCi0iCi0KLSMgY2xlYW4gdW53YW50ZWQgZmlsZXMKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtiaW5kaXJ9Ci0gICAgcm0gLXJmICR7RH0ke3NiaW5kaXJ9Ci0gICAgcm0gLWYgICR7RH0ke2xpYmRpcn0vbGliKgotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfQotICAgIHJtIC1yZiAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9ibHVldG9vdGgKLSAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9hbHNhLWxpYgotICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQotICAgIHJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfQotICAgIHJtIC1yZiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9LyovLmRlYnVnIFwKLSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2VsbC9lbGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2VsbC9lbGxfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjU5ZjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9lbGwvZWxsX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgID0gIkVtYmVkZGVkIExpbnV4IExpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJFTEwgaXMgYSBEQlVTIGxpYnJhcnkgd2hpY2ggcHJvdmlkZXMgREJVUyBiaW5kaW5ncy4iCi1MSUNFTlNFICA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IgotU0VDVElPTiA9ICJsaWJzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICIzOTkwOTk5NDZhYmFlYjJmMzcxOGEwNjY3Y2MxMTQzNmE3YzBiZTE0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpYnMvZWxsL2VsbC5naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAke1N9L2J1aWxkLWF1eAotfQotCi1ERVBFTkRTID0gImRidXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ25va2lpL2dub2tpaV8wLjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ25va2lpL2dub2tpaV8wLjYuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MDk4ZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dub2tpaS9nbm9raWlfMC42LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJDZWxscGhvbmUgdG9vbHMgYW5kIGRyaXZlciBzb2Z0d2FyZSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmdub2tpaS5vcmcvZG93bmxvYWQvZ25va2lpL2dub2tpaS0ke1BWfS50YXIuYnoyIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLVgxMURFUEVORFMgPSAiIGxpYnhwbSBndGsrIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1tibHVlejRdID0gIi0tZW5hYmxlLWJsdWV0b290aCwtLWRpc2FibGUtYmx1ZXRvb3RoLGJsdWV6NCIKLVBBQ0tBR0VDT05GSUdbbGliaWNhbF0gPSAiLS1lbmFibGUtbGliaWNhbCwtLWRpc2FibGUtbGliaWNhbCxsaWJpY2FsIgotUEFDS0FHRUNPTkZJR1twY3NjLWxpdGVdID0gIi0tZW5hYmxlLWxpYnBjc2NsaXRlLC0tZGlzYWJsZS1saWJwY3NjbGl0ZSxwY3NjLWxpdGUiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1t1c2JdID0gIi0tZW5hYmxlLWxpYnVzYiwtLWRpc2FibGUtbGlidXNiLHZpcnR1YWwvbGlidXNiMCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLS13aXRob3V0LXgsJHtYMTFERVBFTkRTfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICJsaWJnbm9raWkgbGliZ25va2lpLWRldiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zbXNkIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtzYmluZGlyfSIKLUZJTEVTX2xpYmdub2tpaS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSBcCi0gICAgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcgXAotICAgIC9saWIvKi5hIC9saWIvKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCBcCi0iCi1GSUxFU18ke1BOfS1kZXYgPSAiIgotRklMRVNfbGliZ25va2lpID0gIiR7bGliZGlyfS9saWJnbm9raWkuc28uKiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ5NjI3ZjRhMTE1MmQzZWE3ODA2ZGY0NTMyODUwZDVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmNWEwODNiMDVjMWE2NmEzNDAyY2E1Y2Q4MDA4NGUxNGMyYzA2MzJjOTkxYmI1M2IwM2M3OGU5YWRiMDI1MDEiCi0KLVBOQkxBQ0tMSVNUW2dub2tpaV0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NjIvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDFmNWRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAibmN1cnNlcyBJUkMgY2xpZW50IgotREVTQ1JJUFRJT04gPSAiSXJzc2kgaXMgYW4gbmN1cnNlcyBJUkMgY2xpZW50IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1ZmRjMTExMzMwNjE2N2Q2ZWEyNTYxNDA0Y2UwMmY4IgotCi1ERVBFTkRTID0gImdsaWItMi4wIG5jdXJzZXMgb3BlbnNzbCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZiZWQxOTZjZWY2M2VhMDg5ZjVjY2UwODk3ODQ0NDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQyOGM1MWEzZjM1OThmZmFlZjQzOGMzNTFhOGQ2MDljZjEwZGIzNGYyNDM1YmRjYjg0NDU2MjI2YzM4M2NjZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiMDRiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjAuNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIm5jdXJzZXMgSVJDIGNsaWVudCIKK0RFU0NSSVBUSU9OID0gIklyc3NpIGlzIGFuIG5jdXJzZXMgSVJDIGNsaWVudCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWZkYzExMTMzMDYxNjdkNmVhMjU2MTQwNGNlMDJmOCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBuY3Vyc2VzIG9wZW5zc2wiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjQ2ZDRhYzJhN2FiNDcyZTVkYzgwMGU1ZDdiZDlhODc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4NWMwN2RiYWZlMTc4MjEzZWNjZGM2OWY1ZjhmMGFjMDI0ZGVhMDFjNjcyNDQ2NjhmOTFlYzFjMDZiOTg2Y2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC10ZXh0dWkgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHJveHkgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtYm90IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXBlcmw9bm8gXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS10cnVlLWNvbG9yIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9DVkUtMjAxNy0xMTQ2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvQ1ZFLTIwMTctMTE0NjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI4MmYwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvQ1ZFLTIwMTctMTE0NjIucGF0Y2gKQEAgLTAsMCArMSw0MTkgQEAKK0Zyb20gNTZmN2IxYmM5NWEyYTNlZWI0MjBlMDY5ZTc2NTVmYjE4MWFkZTVjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdyZWcgSHVkc29uIDxnaHVkc29uQG1pdC5lZHU+CitEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjAyOjQ2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIFByZXNlcnZlIEdTUyBjb250ZXh0IG9uIGluaXQvYWNjZXB0IGZhaWx1cmUKKworQWZ0ZXIgZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBvciBnc3NfYWNjZXB0X3NlY19jb250ZXh0KCkgaGFzIGNyZWF0ZWQgYQorY29udGV4dCwgZG9uJ3QgZGVsZXRlIHRoZSBtZWNoZ2x1ZSBjb250ZXh0IG9uIGZhaWx1cmVzIGZyb20gc3Vic2VxdWVudAorY2FsbHMsIGV2ZW4gaWYgdGhlIG1lY2hhbmlzbSBkZWxldGVzIHRoZSBtZWNoLXNwZWNpZmljIGNvbnRleHQgKHdoaWNoCitpcyBhbGxvd2VkIGJ5IFJGQyAyNzQ0IGJ1dCBub3QgcHJlZmVycmVkKS4gIENoZWNrIGZvciB1bmlvbiBjb250ZXh0cword2l0aCBubyBtZWNoYW5pc20gY29udGV4dCBpbiBlYWNoIEdTUyBmdW5jdGlvbiB3aGljaCBhY2NlcHRzIGEKK2dzc19jdHhfaWRfdC4KKworQ1ZFLTIwMTctMTE0NjI6CisKK1JGQyAyNzQ0IHBlcm1pdHMgYSBHU1MtQVBJIGltcGxlbWVudGF0aW9uIHRvIGRlbGV0ZSBhbiBleGlzdGluZworc2VjdXJpdHkgY29udGV4dCBvbiBhIHNlY29uZCBvciBzdWJzZXF1ZW50IGNhbGwgdG8KK2dzc19pbml0X3NlY19jb250ZXh0KCkgb3IgZ3NzX2FjY2VwdF9zZWNfY29udGV4dCgpIGlmIHRoZSBjYWxsIHJlc3VsdHMKK2luIGFuIGVycm9yLiAgVGhpcyBBUEkgYmVoYXZpb3IgaGFzIGJlZW4gZm91bmQgdG8gYmUgZGFuZ2Vyb3VzLAorbGVhZGluZyB0byB0aGUgcG9zc2liaWxpdHkgb2YgbWVtb3J5IGVycm9ycyBpbiBzb21lIGNhbGxlcnMuICBGb3IKK3NhZmV0eSwgR1NTLUFQSSBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGluc3RlYWQgcHJlc2VydmUgZXhpc3RpbmcKK3NlY3VyaXR5IGNvbnRleHRzIG9uIGVycm9yIHVudGlsIHRoZSBjYWxsZXIgZGVsZXRlcyB0aGVtLgorCitBbGwgdmVyc2lvbnMgb2YgTUlUIGtyYjUgcHJpb3IgdG8gdGhpcyBjaGFuZ2UgbWF5IGRlbGV0ZSBhY2NlcHRvcgorY29udGV4dHMgb24gZXJyb3IuICBWZXJzaW9ucyAxLjEzLjQgdGhyb3VnaCAxLjEzLjcsIDEuMTQuMSB0aHJvdWdoCisxLjE0LjUsIGFuZCAxLjE1IHRocm91Z2ggMS4xNS4xIG1heSBhbHNvIGRlbGV0ZSBpbml0aWF0b3IgY29udGV4dHMgb24KK2Vycm9yLgorCit0aWNrZXQ6IDg1OTggKG5ldykKK3RhcmdldF92ZXJzaW9uOiAxLjE1LW5leHQKK3RhcmdldF92ZXJzaW9uOiAxLjE0LW5leHQKK3RhZ3M6IHB1bGx1cAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTExNDYyCisKK1NpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyAgfCAyMiArKysrKysrKysrKysrKystLS0tLS0tCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMgICAgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jICB8IDE0ICsrKysrKysrLS0tLS0tCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYyAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jICAgIHwgMTkgKysrKysrKysrKystLS0tLS0tLQorIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyAgICAgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jICAgICAgICAgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jICAgICAgICAgICAgICAgIHwgIDQgKysrKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jICAgICAgICAgICAgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jICAgICAgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jICAgICAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jICAgICAgICAgIHwgIDQgKysrKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMgICAgICAgICAgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jICAgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jICAgICAgICAgICAgfCAgOCArKysrKysrKworIDE3IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfYWNjZXB0X3NlY19jb250ZXh0LmMKK2luZGV4IGRkYWY4NzQuLmYyOGUyYjEgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCitAQCAtMjE2LDYgKzIxNiw4IEBAIGdzc19jcmVkX2lkX3QgKgkJZF9jcmVkOworICAgICB9IGVsc2UgeworIAl1bmlvbl9jdHhfaWQgPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSpjb250ZXh0X2hhbmRsZTsKKyAJc2VsZWN0ZWRfbWVjaCA9IHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlOworKwlpZiAodW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJICAgIHJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIH0KKyAKKyAgICAgLyogTm93IGNyZWF0ZSBhIG5ldyBjb250ZXh0IGlmIHdlIGRpZG4ndCBnZXQgb25lLiAqLworQEAgLTIzNCw5ICsyMzYsNiBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKKyAJICAgIGZyZWUodW5pb25fY3R4X2lkKTsKKyAJICAgIHJldHVybiAoc3RhdHVzKTsKKyAJfQorLQorLQkvKiBzZXQgdGhlIG5ldyBjb250ZXh0IGhhbmRsZSB0byBjYWxsZXIncyBkYXRhICovCistCSpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOworICAgICB9CisgCisgICAgIC8qCitAQCAtMjc3LDggKzI3NiwxMCBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKKyAJCQkJCWRfY3JlZCA/ICZ0bXBfZF9jcmVkIDogTlVMTCk7CisgCisgCSAgICAvKiBJZiB0aGVyZSdzIG1vcmUgd29yayB0byBkbywga2VlcCBnb2luZy4uLiAqLworLQkgICAgaWYgKHN0YXR1cyA9PSBHU1NfU19DT05USU5VRV9ORUVERUQpCisrCSAgICBpZiAoc3RhdHVzID09IEdTU19TX0NPTlRJTlVFX05FRURFRCkgeworKwkJKmNvbnRleHRfaGFuZGxlID0gKGdzc19jdHhfaWRfdCl1bmlvbl9jdHhfaWQ7CisgCQlyZXR1cm4gR1NTX1NfQ09OVElOVUVfTkVFREVEOworKwkgICAgfQorIAorIAkgICAgLyogaWYgdGhlIGNhbGwgZmFpbGVkLCByZXR1cm4gd2l0aCBmYWlsdXJlICovCisgCSAgICBpZiAoc3RhdHVzICE9IEdTU19TX0NPTVBMRVRFKSB7CitAQCAtMzY0LDE0ICszNjUsMjIgQEAgZ3NzX2NyZWRfaWRfdCAqCQlkX2NyZWQ7CisgCQkqbWVjaF90eXBlID0gZ3NzaW50X2dldF9wdWJsaWNfb2lkKGFjdHVhbF9tZWNoKTsKKyAJICAgIGlmIChyZXRfZmxhZ3MgIT0gTlVMTCkKKyAJCSpyZXRfZmxhZ3MgPSB0ZW1wX3JldF9mbGFnczsKKy0JICAgIHJldHVybgkoc3RhdHVzKTsKKysJICAgICpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOworKwkgICAgcmV0dXJuIEdTU19TX0NPTVBMRVRFOworICAgICB9IGVsc2UgeworIAorIAlzdGF0dXMgPSBHU1NfU19CQURfTUVDSDsKKyAgICAgfQorIAorIGVycm9yX291dDoKKy0gICAgaWYgKHVuaW9uX2N0eF9pZCkgeworKwkvKgorKwkgKiBSRkMgMjc0NCA1LjEgcmVxdWlyZXMgdGhhdCB3ZSBub3QgY3JlYXRlIGEgY29udGV4dCBvbiBhIGZhaWxlZCBmaXJzdAorKwkgKiBjYWxsIHRvIGFjY2VwdCwgYW5kIHJlY29tbWVuZHMgdGhhdCBvbiBhIGZhaWxlZCBzdWJzZXF1ZW50IGNhbGwgd2UKKysJICogbWFrZSB0aGUgY2FsbGVyIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGdzc19kZWxldGVfc2VjX2NvbnRleHQuCisrCSAqIEV2ZW4gaWYgdGhlIG1lY2ggZGVsZXRlZCBpdHMgY29udGV4dCwga2VlcCB0aGUgdW5pb24gY29udGV4dCBhcm91bmQKKysJICogZm9yIHRoZSBjYWxsZXIgdG8gZGVsZXRlLgorKwkgKi8KKysgICAgaWYgKHVuaW9uX2N0eF9pZCAmJiAqY29udGV4dF9oYW5kbGUgPT0gR1NTX0NfTk9fQ09OVEVYVCkgeworIAlpZiAodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpIHsKKyAJICAgIGlmICh1bmlvbl9jdHhfaWQtPm1lY2hfdHlwZS0+ZWxlbWVudHMpCisgCQlmcmVlKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlLT5lbGVtZW50cyk7CitAQCAtMzg0LDcgKzM5Myw2IEBAIGVycm9yX291dDoKKyAJCQkJCSBHU1NfQ19OT19CVUZGRVIpOworIAl9CisgCWZyZWUodW5pb25fY3R4X2lkKTsKKy0JKmNvbnRleHRfaGFuZGxlID0gR1NTX0NfTk9fQ09OVEVYVDsKKyAgICAgfQorIAorICAgICBpZiAoc3JjX25hbWUpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYworaW5kZXggOTE4MTU1MS4uNGJjYjQ3ZSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29tcGxldGVfYXV0aF90b2tlbi5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYworQEAgLTUyLDYgKzUyLDggQEAgZ3NzX2NvbXBsZXRlX2F1dGhfdG9rZW4gKE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAorICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gR1NTX1NfTk9fQ09OVEVYVDsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoICE9IE5VTEwpIHsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb250ZXh0X3RpbWUuYworaW5kZXggMmZmOGQwOS4uYzk0N2U3NiAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKK0BAIC01OCw2ICs1OCw4IEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZGVsZXRlX3NlY19jb250ZXh0LmMKK2luZGV4IDRiZjBkZWMuLjU3NGZmMDIgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCitAQCAtODcsMTIgKzg3LDE0IEBAIGdzc19idWZmZXJfdAkJb3V0cHV0X3Rva2VuOworICAgICBpZiAoR1NTSU5UX0NIS19MT09QKGN0eCkpCisgCXJldHVybiAoR1NTX1NfQ0FMTF9JTkFDQ0VTU0lCTEVfUkVBRCB8IEdTU19TX05PX0NPTlRFWFQpOworIAorLSAgICBzdGF0dXMgPSBnc3NpbnRfZGVsZXRlX2ludGVybmFsX3NlY19jb250ZXh0KG1pbm9yX3N0YXR1cywKKy0JCQkJCQljdHgtPm1lY2hfdHlwZSwKKy0JCQkJCQkmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCistCQkJCQkJb3V0cHV0X3Rva2VuKTsKKy0gICAgaWYgKHN0YXR1cykKKy0JcmV0dXJuIHN0YXR1czsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkICE9IEdTU19DX05PX0NPTlRFWFQpIHsKKysJc3RhdHVzID0gZ3NzaW50X2RlbGV0ZV9pbnRlcm5hbF9zZWNfY29udGV4dChtaW5vcl9zdGF0dXMsCisrCQkJCQkJICAgIGN0eC0+bWVjaF90eXBlLAorKwkJCQkJCSAgICAmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCisrCQkJCQkJICAgIG91dHB1dF90b2tlbik7CisrCWlmIChzdGF0dXMpCisrCSAgICByZXR1cm4gc3RhdHVzOworKyAgICB9CisgCisgICAgIC8qIG5vdyBmcmVlIHVwIHRoZSBzcGFjZSBmb3IgdGhlIHVuaW9uIGNvbnRleHQgc3RydWN0dXJlICovCisgICAgIGZyZWUoY3R4LT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2V4cF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYworaW5kZXggYjYzNzQ1Mi4uMWQ3OTkwYiAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKK0BAIC05NSw2ICs5NSw4IEBAIGdzc19idWZmZXJfdAkJaW50ZXJwcm9jZXNzX3Rva2VuOworICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgKmNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgICAgIGlmICghbWVjaCkKKyAJcmV0dXJuIEdTU19TX0JBRF9NRUNIOworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKK2luZGV4IDlmMTU0YjguLmUyZGYxY2UgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2luaXRfc2VjX2NvbnRleHQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKK0BAIC0xOTIsOCArMTkyLDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKKyAKKyAJLyogY29weSB0aGUgc3VwcGxpZWQgY29udGV4dCBoYW5kbGUgKi8KKyAJdW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPSBHU1NfQ19OT19DT05URVhUOworLSAgICB9IGVsc2UKKysgICAgfSBlbHNlIHsKKyAJdW5pb25fY3R4X2lkID0gKGdzc191bmlvbl9jdHhfaWRfdCkqY29udGV4dF9oYW5kbGU7CisrCWlmICh1bmlvbl9jdHhfaWQtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKSB7CisrCSAgICBzdGF0dXMgPSBHU1NfU19OT19DT05URVhUOworKwkgICAgZ290byBlbmQ7CisrCX0KKysgICAgfQorIAorICAgICAvKgorICAgICAgKiBnZXQgdGhlIGFwcHJvcHJpYXRlIGNyZWQgaGFuZGxlIGZyb20gdGhlIHVuaW9uIGNyZWQgc3RydWN0LgorQEAgLTIyNCwxNSArMjI5LDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKKyAKKyAgICAgaWYgKHN0YXR1cyAhPSBHU1NfU19DT01QTEVURSAmJiBzdGF0dXMgIT0gR1NTX1NfQ09OVElOVUVfTkVFREVEKSB7CisgCS8qCistCSAqIFRoZSBzcGVjIHNheXMgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gZGVsZXRlIGFsbCBjb250ZXh0IGluZm8gb24KKy0JICogdGhlIGZpcnN0IGNhbGwgdG8gaW5pdCwgYW5kIG9uIGFsbCBzdWJzZXF1ZW50IGNhbGxzIG1ha2UgdGhlIGNhbGxlcgorLQkgKiByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBnc3NfZGVsZXRlX3NlY19jb250ZXh0LiAgSG93ZXZlciwgaWYgdGhlCistCSAqIG1lY2hhbmlzbSBkZWNpZGVkIHRvIGRlbGV0ZSB0aGUgaW50ZXJuYWwgY29udGV4dCwgd2Ugc2hvdWxkIGFsc28KKy0JICogZGVsZXRlIHRoZSB1bmlvbiBjb250ZXh0LgorKwkgKiBSRkMgMjc0NCA1LjE5IHJlcXVpcmVzIHRoYXQgd2Ugbm90IGNyZWF0ZSBhIGNvbnRleHQgb24gYSBmYWlsZWQKKysJICogZmlyc3QgY2FsbCB0byBpbml0LCBhbmQgcmVjb21tZW5kcyB0aGF0IG9uIGEgZmFpbGVkIHN1YnNlcXVlbnQgY2FsbAorKwkgKiB3ZSBtYWtlIHRoZSBjYWxsZXIgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dC4KKysJICogRXZlbiBpZiB0aGUgbWVjaCBkZWxldGVkIGl0cyBjb250ZXh0LCBrZWVwIHRoZSB1bmlvbiBjb250ZXh0IGFyb3VuZAorKwkgKiBmb3IgdGhlIGNhbGxlciB0byBkZWxldGUuCisgCSAqLworIAltYXBfZXJyb3IobWlub3Jfc3RhdHVzLCBtZWNoKTsKKy0JaWYgKHVuaW9uX2N0eF9pZC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCistCSAgICAqY29udGV4dF9oYW5kbGUgPSBHU1NfQ19OT19DT05URVhUOworIAlpZiAoKmNvbnRleHRfaGFuZGxlID09IEdTU19DX05PX0NPTlRFWFQpIHsKKyAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKKyAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpOworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYworaW5kZXggNmYxYzcxZS4uNmMwZDk4ZCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbnFfY29udGV4dC5jCitAQCAtMTA0LDYgKzEwNCw4IEBAIGdzc19pbnF1aXJlX2NvbnRleHQoCisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAoIW1lY2ggfHwgIW1lY2gtPmdzc19pbnF1aXJlX2NvbnRleHQgfHwgIW1lY2gtPmdzc19kaXNwbGF5X25hbWUgfHwKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcmYuYworaW5kZXggZmNjYTNlNC4uOWUxNjhhZCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKK0BAIC01OSw2ICs1OSw4IEBAIGdzc19wc2V1ZG9fcmFuZG9tIChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCAhPSBOVUxMKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJvY2Vzc19jb250ZXh0LmMKK2luZGV4IGJjMjYwYWUuLjM5NjhiNWQgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCitAQCAtNjEsNiArNjEsOCBAQCBnc3NfYnVmZmVyX3QJCXRva2VuX2J1ZmZlcjsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zZWFsLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYworaW5kZXggZjE3MjQxYy4uM2RiMWVlMCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYworQEAgLTkyLDYgKzkyLDggQEAgZ3NzX3dyYXAoIE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAorICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitAQCAtMjI2LDYgKzIyOCw4IEBAIGdzc193cmFwX3NpemVfbGltaXQoT01fdWludDMyICAqbWlub3Jfc3RhdHVzLAorICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmICghbWVjaCkKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCitpbmRleCA4NmQ2NDFhLi4wM2ZiZDhjIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zaWduLmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCitAQCAtOTQsNiArOTQsOCBAQCBnc3NfYnVmZmVyX3QJCW1zZ190b2tlbjsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW5zZWFsLmMKK2luZGV4IDNlODA1M2MuLmMyMDg2MzUgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCitAQCAtNzYsNiArNzYsOCBAQCBnc3NfcW9wX3QgKgkJcW9wX3N0YXRlOworICAgICAgKiBjYWxsIGl0LgorICAgICAgKi8KKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2gpIHsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKK2luZGV4IGU3OGJmZjIuLjA2ODJiZDggMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2FlYWQuYworQEAgLTE4Niw2ICsxODYsOCBAQCBnc3NfcW9wX3QJCSpxb3Bfc3RhdGU7CisgICAgICAqIGNhbGwgaXQuCisgICAgICAqLworICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAoIW1lY2gpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYworaW5kZXggYzBkZDMxNC4uNTk5YmUyYyAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYworQEAgLTg5LDYgKzg5LDggQEAgaW50CQkJaW92X2NvdW50OworICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2gpIHsKK0BAIC0xMjgsNiArMTMwLDggQEAgZ3NzX3ZlcmlmeV9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCisgCisgICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLworICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7CisgICAgIGlmIChtZWNoID09IE5VTEwpCisgCXJldHVybiBHU1NfU19CQURfTUVDSDsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ192ZXJpZnkuYworaW5kZXggMTU3OGFlMS4uODk5NmZjZSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKK0BAIC02NSw2ICs2NSw4IEBAIGdzc19xb3BfdCAqCQlxb3Bfc3RhdGU7CisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCkgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jCitpbmRleCA5NmNkZjNjLi43ZmUzYjdiIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYworQEAgLTI1Niw2ICsyNTYsOCBAQCBnc3NfYnVmZmVyX3QJCW91dHB1dF9tZXNzYWdlX2J1ZmZlcjsKKyAgICAgICogY2FsbCBpdC4KKyAgICAgICovCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAgICAgaWYgKCFtZWNoKQorIAlyZXR1cm4gKEdTU19TX0JBRF9NRUNIKTsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKK2luZGV4IDQwY2Q5OGYuLjE0NDQ3YzQgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9pb3YuYworQEAgLTkzLDYgKzkzLDggQEAgaW50CQkJaW92X2NvdW50OworICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2gpIHsKK0BAIC0xNTEsNiArMTUzLDggQEAgaW50CQkJaW92X2NvdW50OworICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2gpIHsKK0BAIC0xOTAsNiArMTk0LDggQEAgZ3NzX2dldF9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCisgCisgICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLworICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7CisgICAgIGlmIChtZWNoID09IE5VTEwpCisgCXJldHVybiBHU1NfU19CQURfTUVDSDsKK0BAIC0yMTgsNiArMjI0LDggQEAgZ3NzX2dldF9taWNfaW92X2xlbmd0aChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywgZ3NzX2N0eF9pZF90IGNvbnRleHRfaGFuZGxlLAorIAorICAgICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJhdGUgdW5kZXJseWluZyBtZWNoYW5pc20gcm91dGluZSBhbmQgY2FsbCBpdC4gKi8KKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCljb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiBHU1NfU19OT19DT05URVhUOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20oY3R4LT5tZWNoX3R5cGUpOworICAgICBpZiAobWVjaCA9PSBOVUxMKQorIAlyZXR1cm4gR1NTX1NfQkFEX01FQ0g7CistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjVfMS4xNS4xLmJiCmluZGV4IGI1MTVlYjUuLmU3NWU4NjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjVfMS4xNS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjVfMS4xNS4xLmJiCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9rcmI1LWtkYy5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vZml4LUNWRS0yMDE3LTExMzY4LnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMTQ2Mi5wYXRjaDtzdHJpcGxldmVsPTIgXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjgwMjJmM2ExY2RlODQ2M2U0NGZkMzVlZjQyNzMxZjg1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzN2M4ODMxZGRkNWZkZTJhOTkzZmVmNDI1ZGVkYjQ4NDY4MTA5YmIzZDMyNjFlZjgzODI5NTA0NWE4OWViNDUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibXRwL2xpYm10cF8xLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS41LmJiCmluZGV4IGMwNWZmNGUuLjc5OGIxNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS41LmJiCkBAIC00NSwxMCArNDUsMTAgQEAKIFBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSIKIFBBQ0tBR0VDT05GSUdbbXRwel0gPSAiLS1lbmFibGUtbXRweiwtLWRpc2FibGUtbXRweixsaWJnY3J5cHQiCiAKLVBBQ0tBR0VTID0rICJsaWJtdHAtY29tbW9uIGxpYm10cC1ydW50aW1lIG10cC10b29scyIKK1BBQ0tBR0VTID0rICJsaWJtdHAtY29tbW9uIGxpYm10cC1ydW50aW1lIgogCiBSREVQRU5EU18ke1BOfSArPSAibGlibXRwLWNvbW1vbiIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJsaWJtdHAtcnVudGltZSBtdHAtdG9vbHMiCitSUkVDT01NRU5EU18ke1BOfSArPSAibGlibXRwLXJ1bnRpbWUgJHtQTn0tYmluIgogRklMRVNfJHtQTn0tZGJnICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvLmRlYnVnLyoiCiBGSUxFU19saWJtdHAtY29tbW9uID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyoiCiBTVU1NQVJZX2xpYm10cC1jb21tb24gPSAiVGhlIHVkZXYgcnVsZXMgZmlsZSBmb3IgTVRQIGRldmljZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjYuYmIKaW5kZXggMmNjMzQ1YS4uNTE0ODc5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5kcC9saWJuZHBfMS42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuZHAvbGlibmRwXzEuNi5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAiTGlicmFyeSBmb3IgSVB2NiBOZWlnaGJvciBEaXNjb3ZlcnkgUHJvdG9jb2wiCi0KK0hPTUVQQUdFID0gImh0dHA6Ly9saWJuZHAub3JnLyIKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDMtaW5jbHVkZS1taXNzaW5nLXRpbWUuaC1mb3ItdGltZV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDMtaW5jbHVkZS1taXNzaW5nLXRpbWUuaC1mb3ItdGltZV90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MTYzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHAvMDAwMy1pbmNsdWRlLW1pc3NpbmctdGltZS5oLWZvci10aW1lX3QucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBiMzZjYWZkYmNiZTIxOTNmNWI2NjllNzAzYzYwOGUxOWUyM2Y4MGEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6MTY6NDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGluY2x1ZGUgbWlzc2luZyB0aW1lLmggZm9yIHRpbWVfdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdXRpbC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdXRpbC5oIGIvdXRpbC5oCitpbmRleCBlOTEyZjE5Li4zYzYzNGMxIDEwMDY0NAorLS0tIGEvdXRpbC5oCisrKysgYi91dGlsLmgKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgI2luY2x1ZGUgImRkdC5oIgorICNpbmNsdWRlICJldGhlci5oIgorLQorKyNpbmNsdWRlIDx0aW1lLmg+CisgLyoqCisgICogVGFibGUgb2YgaHVtYW4gcmVhZGFibGUgc3RyaW5ncywgb25lIGZvciBlYWNoIHBvcnQgc3RhdGUuCisgICovCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHAvMDAwNC1BZGp1c3QtaW5jbHVkZS1oZWFkZXItc2VxdWVuY2UtdG8tYXZvaWQtZHVwbGljYXRlLWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDQtQWRqdXN0LWluY2x1ZGUtaGVhZGVyLXNlcXVlbmNlLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjk5Mjc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDQtQWRqdXN0LWluY2x1ZGUtaGVhZGVyLXNlcXVlbmNlLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDNjZDI4YWE3NzE5MzRkOTE2NWZmMGQ3ZTE5OTMyY2RlNjVkZTNlNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAxMToxNjo1NyAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNF0gQWRqdXN0IGluY2x1ZGUgaGVhZGVyIHNlcXVlbmNlIHRvIGF2b2lkIGR1cGxpY2F0ZQorIGRlZmluaXRpb25zIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJhdy5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Jhdy5jIGIvcmF3LmMKK2luZGV4IGY1MWM4MjkuLjQ5NGVhN2YgMTAwNjQ0CistLS0gYS9yYXcuYworKysrIGIvcmF3LmMKK0BAIC0xOCw4ICsxOCw2IEBACisgICovCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgorLSNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KK0BAIC0zMiw2ICszMCw4IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaW5jbHVkZSA8bGludXgvZmlsdGVyLmg+CisrI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2VycnF1ZXVlLmg+CisgI2luY2x1ZGUgPGxpbnV4L25ldF90c3RhbXAuaD4KKyAjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwXzEuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cF8xLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMjg2NDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwXzEuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGFjY29yZGluZyB0byBJRUVFIHN0YW5kYXJkIDE1ODggZm9yIExpbnV4IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhwdHAvZmlsZXMvdiR7UFZ9L2xpbnV4cHRwLSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZC1BbGxvdy1DQy1hbmQtcHJlZml4LXRvLWJlLW92ZXJyaWRlbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1pbmNkZWZzLXVzaW5nLWhvc3QtaGVhZGVycy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZhYTE1ZDgzZjVhMzVmMWZkMDc2YmE5YWRjNGU3Mjg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3ZmQxNmE5ZjIzNWIwNTliZTUyN2JkNTEyZTg2ZjBjMWQ5ZjJlN2MzNjczNmU2ZDZkOTcyN2E0NDI3YWMxNGMiCi0KLUVYVFJBX09FTUFLRSA9ICJBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICBFWFRSQV9DRkxBR1M9Jy1EX0dOVV9TT1VSQ0UgLURIQVZFX0NMT0NLX0FESlRJTUUgLURIQVZFX1BPU0lYX1NQQVdOIC1ESEFWRV9PTkVTVEVQX1NZTkMgJHtDRkxBR1N9JyIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLXAgJHtTfS9wdHA0bCAgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1wICR7U30vcG1jICAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLXAgJHtTfS9waGMyc3lzICAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLXAgJHtTfS9od3N0YW1wX2N0bCAgJHtEfS8ke2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHBfMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YjhiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHBfMS44LmJiCkBAIC0wLDAgKzEsMjQgQEAKK0RFU0NSSVBUSU9OID0gIlByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGFjY29yZGluZyB0byBJRUVFIHN0YW5kYXJkIDE1ODggZm9yIExpbnV4IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhwdHAvZmlsZXMvdiR7UFZ9L2xpbnV4cHRwLSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC1BbGxvdy1DQy1hbmQtcHJlZml4LXRvLWJlLW92ZXJyaWRlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby1pbmNkZWZzLXVzaW5nLWhvc3QtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWluY2x1ZGUtbWlzc2luZy10aW1lLmgtZm9yLXRpbWVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkanVzdC1pbmNsdWRlLWhlYWRlci1zZXF1ZW5jZS10by1hdm9pZC1kdXBsaWNhdGUtZGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1Njg4Y2RmZTU3OTMyMjczZTFkYmYzNWIzYjk3YjlhMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYThlMDBmNmVjNzNjZWZhN2JiMzEzZGNlN2Y2MGRmZTVlYjllMmJkZTMzNTM1OTRlOWFjMThlZGM5M2U1MTY1IgorCitFWFRSQV9PRU1BS0UgPSAiQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisgICAgRVhUUkFfQ0ZMQUdTPSctRF9HTlVfU09VUkNFIC1ESEFWRV9DTE9DS19BREpUSU1FIC1ESEFWRV9QT1NJWF9TUEFXTiAtREhBVkVfT05FU1RFUF9TWU5DICR7Q0ZMQUdTfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1wICR7U30vcHRwNGwgICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtcCAke1N9L3BtYyAgJHtEfS8ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1wICR7U30vcGhjMnN5cyAgJHtEfS8ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1wICR7U30vaHdzdGFtcF9jdGwgICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL2J1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA5MTJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaApAQCAtMCwwICsxLDk0IEBACitGcm9tIGViZDdjOGU1NDhlOWI4ZTA5NmVlNGMzOTAxNzNkYjlhNzAxZjI2MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVubyBCb3R0YXp6aW5pIDxicnVuby5ib3R0YXp6aW5pQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMTE6MTg6MjYgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQKKworRGlzYWJsZSBzdHJpcHBpbmcgYW5kIGFsbG93IGVhc2lseSBvdmVycmlkaW5nIHByZWZpeAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQnJ1bm8gQm90dGF6emluaSA8YnJ1bm8uYm90dGF6emluaUBpbnRlbC5jb20+CistLS0KKyBjbGllbnQvTWFrZWZpbGUgIHwgNCArKy0tCisgY29uZmlnLm1rICAgICAgICB8IDIgKy0KKyBsaWIvTWFrZWZpbGUgICAgIHwgMiArLQorIGxpYi9jcHAvTWFrZWZpbGUgfCAyICstCisgc3JjL01ha2VmaWxlICAgICB8IDQgKystLQorIDUgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlIGIvY2xpZW50L01ha2VmaWxlCitpbmRleCBiZDY1MzU1Li40ZTVhNjQwIDEwMDY0NAorLS0tIGEvY2xpZW50L01ha2VmaWxlCisrKysgYi9jbGllbnQvTWFrZWZpbGUKK0BAIC0yNCw4ICsyNCw4IEBAIGNsaWVudF9zaGFyZWQubyA6IGNsaWVudF9zaGFyZWQuYyBjbGllbnQKKyAKKyBpbnN0YWxsIDogYWxsCisgCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9iaW4KKy0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IG1vc3F1aXR0b19wdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3B1YgorLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvX3N1YiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fc3ViCisrCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3B1YiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcHViCisrCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3N1YiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fc3ViCisgCisgdW5pbnN0YWxsIDoKKyAJLXJtIC1mICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wdWIKK2RpZmYgLS1naXQgYS9jb25maWcubWsgYi9jb25maWcubWsKK2luZGV4IGMwZjE3NWYuLjM0MjdiODMgMTAwNjQ0CistLS0gYS9jb25maWcubWsKKysrKyBiL2NvbmZpZy5taworQEAgLTI0MSw3ICsyNDEsNyBAQCBpZmVxICgkKFdJVEhfRE9DUykseWVzKQorIGVuZGlmCisgCisgSU5TVEFMTD89aW5zdGFsbAorLXByZWZpeD0vdXNyL2xvY2FsCisrcHJlZml4Pz0vdXNyCisgbWFuZGlyPSR7cHJlZml4fS9zaGFyZS9tYW4KKyBsb2NhbGVkaXI9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQorIFNUUklQPz1zdHJpcAorZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQoraW5kZXggODI1ZmNlYS4uOWI3YzA1YyAxMDA2NDQKKy0tLSBhL2xpYi9NYWtlZmlsZQorKysrIGIvbGliL01ha2VmaWxlCitAQCAtMjUsNyArMjUsNyBAQCBhbGwgOiBsaWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059IGxpYm1vCisgCisgaW5zdGFsbCA6IGFsbAorIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvbGliJHtMSUJfU1VGRklYfS8KKy0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IGxpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0KKysJJChJTlNUQUxMKSBsaWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059CisgCWxuIC1zZiBsaWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG8uc28KKyAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvCisgCSQoSU5TVEFMTCkgbW9zcXVpdHRvLmggJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlL21vc3F1aXR0by5oCitkaWZmIC0tZ2l0IGEvbGliL2NwcC9NYWtlZmlsZSBiL2xpYi9jcHAvTWFrZWZpbGUKK2luZGV4IDhiNjI3ZDMuLmNkYjI5MjMgMTAwNjQ0CistLS0gYS9saWIvY3BwL01ha2VmaWxlCisrKysgYi9saWIvY3BwL01ha2VmaWxlCitAQCAtMTAsNyArMTAsNyBAQCBhbGwgOiBsaWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0KKyAKKyBpbnN0YWxsIDogYWxsCisgCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9saWIke0xJQl9TVUZGSVh9LworLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0KKysJJChJTlNUQUxMKSBsaWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfQorIAlsbiAtc2YgbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG9wcC5zbworIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS8KKyAJJChJTlNUQUxMKSBtb3NxdWl0dG9wcC5oICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS9tb3NxdWl0dG9wcC5oCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCAyY2ZiN2Q0Li45YTk3NjQ0IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC0xMDMsMTIgKzEwMywxMiBAQCBtb3NxdWl0dG9fcGFzc3dkLm8gOiBtb3NxdWl0dG9fcGFzc3dkLmMKKyAKKyBpbnN0YWxsIDogYWxsCisgCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9zYmluCistCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBtb3NxdWl0dG8gJHtERVNURElSfSR7cHJlZml4fS9zYmluL21vc3F1aXR0bworKwkkKElOU1RBTEwpIG1vc3F1aXR0byAke0RFU1RESVJ9JHtwcmVmaXh9L3NiaW4vbW9zcXVpdHRvCisJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2luY2x1ZGUKKyAJJChJTlNUQUxMKSBtb3NxdWl0dG9fcGx1Z2luLmggJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlL21vc3F1aXR0b19wbHVnaW4uaAorIGlmZXEgKCQoV0lUSF9UTFMpLHllcykKKwkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvYmluCistCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBtb3NxdWl0dG9fcGFzc3dkICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wYXNzd2QKKysJJChJTlNUQUxMKSBtb3NxdWl0dG9fcGFzc3dkICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wYXNzd2QKKyBlbmRpZgorIAorIHVuaW5zdGFsbCA6CistLSAKKzIuNy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLmluaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTI3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0CkBAIC0wLDAgKzEsODkgQEAKKyMhIC9iaW4vc2gKKworIyBCYXNlZCBvbiB0aGUgRGViaWFuIGluaXRzY3JpcHQgZm9yIG1vc3F1aXR0bworCisjIyMgQkVHSU4gSU5JVCBJTkZPCisjIFByb3ZpZGVzOiAgICAgICAgIG1vc3F1aXR0bworIyBSZXF1aXJlZC1TdGFydDogICAkcmVtb3RlX2ZzICRzeXNsb2cKKyMgUmVxdWlyZWQtU3RvcDogICAgJHJlbW90ZV9mcyAkc3lzbG9nCisjIERlZmF1bHQtU3RhcnQ6ICAgIDIgMyA0IDUKKyMgRGVmYXVsdC1TdG9wOiAgICAgMCAxIDYKKyMgU2hvcnQtRGVzY3JpcHRpb246ICAgIG1vc3F1aXR0byBNUVRUIHYzLjEgbWVzc2FnZSBicm9rZXIKKyMgRGVzY3JpcHRpb246IAorIyAgVGhpcyBpcyBhIG1lc3NhZ2UgYnJva2VyIHRoYXQgc3VwcG9ydHMgdmVyc2lvbiAzLjEgb2YgdGhlIE1RIFRlbGVtZXRyeQorIyAgVHJhbnNwb3J0IChNUVRUKSBwcm90b2NvbC4KKyMgIAorIyAgTVFUVCBwcm92aWRlcyBhIG1ldGhvZCBvZiBjYXJyeWluZyBvdXQgbWVzc2FnaW5nIHVzaW5nIGEgcHVibGlzaC9zdWJzY3JpYmUKKyMgIG1vZGVsLiBJdCBpcyBsaWdodHdlaWdodCwgYm90aCBpbiB0ZXJtcyBvZiBiYW5kd2lkdGggdXNhZ2UgYW5kIGVhc2Ugb2YKKyMgIGltcGxlbWVudGF0aW9uLiBUaGlzIG1ha2VzIGl0IHBhcnRpY3VsYXJseSB1c2VmdWwgYXQgdGhlIGVkZ2Ugb2YgdGhlIG5ldHdvcmsKKyMgIHdoZXJlIGEgc2Vuc29yIG9yIG90aGVyIHNpbXBsZSBkZXZpY2UgbWF5IGJlIGltcGxlbWVudGVkIHVzaW5nIGFuIGFyZHVpbm8gZm9yCisjICBleGFtcGxlLgorIyMjIEVORCBJTklUIElORk8KKworc2V0IC1lCisKK1BJREZJTEU9QExPQ0FMU1RBVEVESVJAL3J1bi9tb3NxdWl0dG8ucGlkCitEQUVNT049QFNCSU5ESVJAL21vc3F1aXR0bworCisjIHN0YXJ0IGFuZCBzdG9wIHRoZSBtb3NxdWl0dG8gTVFUVCBtZXNzYWdlIGJyb2tlcgorCit0ZXN0IC14ICR7REFFTU9OfSB8fCBleGl0IDAKKwordW1hc2sgMDIyCisKKy4gQFNZU0NPTkZESVJAL2luaXQuZC9mdW5jdGlvbnMKKworZXhwb3J0IFBBVEg9IiR7UEFUSDorJFBBVEg6fUBTQklORElSQDpAQkFTRV9TQklORElSQCIKKworY2FzZSAiJDEiIGluCisgICAgc3RhcnQpCisgICAgICAgIGVjaG8gIlN0YXJ0aW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAgLS1tYWtlLXBpZGZpbGUgLS1waWRmaWxlICR7UElERklMRX0gLS1leGVjICR7REFFTU9OfSA7IHRoZW4KKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBzdG9wKQorICAgICAgICBlY2hvICJTdG9wcGluZyBNb3NxdWl0dG8gbWVzc2FnZSBicm9rZXIiICJtb3NxdWl0dG8iCisgICAgICAgIGlmIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tb2tub2RvIC0tcGlkZmlsZSAke1BJREZJTEV9OyB0aGVuCisgICAgICAgICAgICBybSAtZiAke1BJREZJTEV9CisgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisgICAgICAgIDs7CisKKworICAgIHJlbG9hZHxmb3JjZS1yZWxvYWQpCisgICAgICAgIGlmIFsgLWYgJHtQSURGSUxFfSBdIDsgdGhlbgorICAgICAgICAgICAgZWNobyAiUmVsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZm9yIG1vc3F1aXR0byIKKyAgICAgICAgICAgIHBpZD1gY2F0ICR7UElERklMRX1gCisgICAgICAgICAgICBraWxsIC1IVVAgJHBpZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBlY2hvICJtb3NxdWl0dG8gZG9lcyBub3Qgc2VlbSB0byBiZSBydW5uaW5nIgorICAgICAgICBmaQorICAgICAgICA7OworCisgICAgcmVzdGFydCkKKyAgICAgICAgZWNobyAiUmVzdGFydGluZyBNb3NxdWl0dG8gbWVzc2FnZSBicm9rZXIiICJtb3NxdWl0dG8iCisgICAgICAgIGlmIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tb2tub2RvIC0tcmV0cnkgMzAgLS1waWRmaWxlICR7UElERklMRX07IHRoZW4KKyAgICAgICAgICAgIHJtIC1mICR7UElERklMRX0KKyAgICAgICAgZmkKKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAtLW1ha2UtcGlkZmlsZSAtLXBpZGZpbGUgJHtQSURGSUxFfSAtLWV4ZWMgJHtEQUVNT059IC0tIC1jIEBTWVNDT05GRElSQC9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYgOyB0aGVuCisgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisgICAgICAgIDs7CisKKyAgICBzdGF0dXMpCisgICAgICAgIHN0YXR1cyAke0RBRU1PTn0gJiYgZXhpdCAwIHx8IGV4aXQgJD8KKyAgICAgICAgOzsKKworICAgICopCisgICAgICAgIGVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxyZWxvYWR8Zm9yY2UtcmVsb2FkfHJlc3RhcnR8c3RhdHVzfSIKKyAgICAgICAgZXhpdCAxCitlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNjhmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLnNlcnZpY2UKQEAgLTAsMCArMSwxNSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1Nb3NxdWl0dG8gLSBsaWdodHdlaWdodCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1RVFQgYW5kIE1RVFQtU04gcHJvdG9jb2xzCitDb25kaXRpb25QYXRoRXhpc3RzPS9ldGMvbW9zcXVpdHRvL21vc3F1aXR0by5jb25mCitBZnRlcj1uZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9c2ltcGxlCitFeGVjU3RhcnRQcmU9L2Jpbi9ybSAtZiAvdmFyL3J1bi9tb3NxdWl0dG8ucGlkCitFeGVjU3RhcnQ9L3Vzci9zYmluL21vc3F1aXR0byAtYyAvZXRjL21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgorRXhlY1JlbG9hZD0vYmluL2tpbGwgLUhVUCAkTUFJTlBJRAorUElERmlsZT0vdmFyL3J1bi9tb3NxdWl0dG8ucGlkCitSZXN0YXJ0PW9uLWZhaWx1cmUKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NTQyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjQuMTQuYmIKQEAgLTAsMCArMSw4MCBAQAorU1VNTUFSWSA9ICJPcGVuIHNvdXJjZSBNUVRUIHYzLjEvMy4xLjEgaW1wbGVtZW50aW9uIgorREVTQ1JJUFRJT04gPSAiTW9zcXVpdHRvIGlzIGFuIG9wZW4gc291cmNlIChFY2xpcHNlIGxpY2Vuc2VkKSBtZXNzYWdlIGJyb2tlciB0aGF0IGltcGxlbWVudHMgdGhlIE1RIFRlbGVtZXRyeSBUcmFuc3BvcnQgcHJvdG9jb2wgdmVyc2lvbiAzLjEgYW5kIDMuMS4xLiBNUVRUIHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgbWV0aG9kIG9mIGNhcnJ5aW5nIG91dCBtZXNzYWdpbmcgdXNpbmcgYSBwdWJsaXNoL3N1YnNjcmliZSBtb2RlbC4gIgorSE9NRVBBR0UgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTYyZGRjODQ2MTc5ZTkwOGRjMGM4ZWZlYzRhNDJlZjIwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkbC12MTA7bWQ1PWMwOWYxMjE5MzlmMDYzYWViNTIzNTk3MmJlOGM3MjJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VwbC12MTA7bWQ1PThkMzgzYzM3OWU5MWQyMGJhMThhNTJjM2U3ZDNhOTc5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vdGljZS5odG1sO21kNT1hMDBkNmY5YWI1NDJiZTdiYWJjMmQ4YjgwZDVkMmE0YyBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvZmlsZXMvc291cmNlL21vc3F1aXR0by0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmIwOTY2ZTkzZjExOGJjNzFhZDdiNjE2MDBhNmMyZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU2YjFmYTczMWQxMmJhYWQ0YjhiMjJmN2I2YThhZjUwYmE4ODFmYzcxMWI4MWU5OTE5ZWMxMDNjZjI5NDJkMSIKKworaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKKworUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCB1dWlkIgorCitQQUNLQUdFQ09ORklHW2Rucy1zcnZdID0gIiwsYy1hcmVzIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIiwsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLCx1dGlsLWxpbnV4IgorRVhUUkFfT0VNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Rucy1zcnYnLCAnV0lUSF9TUlY9eWVzJywgJ1dJVEhfU1JWPW5vJywgZCl9IFwKKyAgICAgICAgICAgICAgICBXSVRIX0RPQ1M9bm8gXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NzbCcsICdXSVRIX1RMUz15ZXMgV0lUSF9UTFNfUFNLPXllcycsICdXSVRIX1RMUz1ubyBXSVRIX1RMU19QU0s9bm8nLCBkKX0gXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V1aWQnLCAnV0lUSF9VVUlEPXllcycsICdXSVRIX1VVSUQ9bm8nLCBkKX0iCisKK2V4cG9ydCBMSUJfU1VGRklYPSIke0BkLmdldFZhcignYmFzZWxpYicsIFRydWUpLnJlcGxhY2UoJ2xpYicsICcnKX0iCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBsaWIvbGlibW9zcXVpdHRvLmEgJHtEfSR7bGliZGlyfS8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbW9zcXVpdHRvLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tb3NxdWl0dG8uaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbW9zcXVpdHRvCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAorICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tb3NxdWl0dG8KK30KKworUEFDS0FHRVMgKz0gImxpYm1vc3F1aXR0bzEgbGlibW9zcXVpdHRvcHAxICR7UE59LWNsaWVudHMiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fcGFzc3dkIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbW9zcXVpdHRvLnNlcnZpY2UgXAorIgorCitGSUxFU19saWJtb3NxdWl0dG8xID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG8uc28uMSIKKworRklMRVNfbGlibW9zcXVpdHRvcHAxID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG9wcC5zby4xIgorCitGSUxFU18ke1BOfS1jbGllbnRzID0gIiR7YmluZGlyfS9tb3NxdWl0dG9fcHViIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19zdWIgXAorIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibW9zcXVpdHRvLnNlcnZpY2UiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJtb3NxdWl0dG8iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyAzMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbW9zcXVpdHRvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTA5OGZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1TVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyIgotU0VDVElPTiA9ICJuZXQvbWlzYyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJmZmQ1NjgyMjdhZGE1MDY2NDBmZTk1MGE0ODIzYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJubS11dGlsL0NPUFlJTkc7bWQ1PTFjNGZhNzY1ZDZlYjNjZDJmYmQ4NDM0NGExYjgxNmNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvYXBpL2h0bWwvbGljZW5zZS5odG1sO21kNT04ZWI4ZTcyYmFiMDk3YjlkMTE3NjMwMDJjYjAwMzY5NyBcCi0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBpbnRsdG9vbC1uYXRpdmUgXAotICAgIGxpYm5sIFwKLSAgICBkYnVzIFwKLSAgICBkYnVzLWdsaWIgXAotICAgIGRidXMtZ2xpYi1uYXRpdmUgXAotICAgIGxpYmd1ZGV2IFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICBsaWJuZHAgXAotICAgIGxpYm5ld3QgXAotICAgIHBvbGtpdCBcCi0gICAgamFuc3NvbiBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCBibHVldG9vdGggYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1zYmluLWRoY2xpZW50LXRvLWdldC10aGUtdmVyc2lvbi1udS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1EZWZpbmUtRVRIX0FMRU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jaGVjay1mb3Itc3RybmR1cGEtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjYzZjFlMGQ2ZDdlOTA5OTQ5OWQwNjJjODRjOTI3YTc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyOTM3OGYzMThjYzAwOGQxMzhhMjNjYTZhOTE5MTkyOGNlNzUzNDRlN2U0N2EyZjJjMzVmNGFjODIxMzMzMDkiCi0KLVMgPSAiJHtXT1JLRElSfS9OZXR3b3JrTWFuYWdlci0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWlmY2ZnLXJoIFwKLSAgICAtLWRpc2FibGUtaWZuZXQgXAotICAgIC0tZGlzYWJsZS1pZmNmZy1zdXNlIFwKLSAgICAtLWRpc2FibGUtbW9yZS13YXJuaW5ncyBcCi0gICAgLS13aXRoLWlwdGFibGVzPSR7c2JpbmRpcn0vaXB0YWJsZXMgXAotICAgIC0td2l0aC10ZXN0cyBcCi0gICAgLS13aXRoLW5tdHVpPXllcyBcCi0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vbGlibm0tdXRpbC8ubGlicyIKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5zcyBpZnVwZG93biBuZXRjb25maWcgZGhjbGllbnQgZG5zbWFzcSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnY29uc29sZWtpdCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKLSAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kIC0tZW5hYmxlLXBvbGtpdCwgXAotICAgIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciwgXAotICAgIHBvbGtpdCBcCi0iCi1QQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLS1lbmFibGUtYmx1ZXo1LWR1biwtLWRpc2FibGUtYmx1ZXo1LWR1bixibHVlejUiCi0jIGNvbnNvbGVraXQgaXMgbm90IHBpY2tlZCBieSBzaGxpYnMsIHNvIGFkZCBpdCB0byBSREVQRU5EUyB0b28KLVBBQ0tBR0VDT05GSUdbY29uc29sZWtpdF0gPSAiLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9Y29uc29sZWtpdCwsY29uc29sZWtpdCxjb25zb2xla2l0IgotUEFDS0FHRUNPTkZJR1tjb25jaGVja10gPSAiLS13aXRoLWxpYnNvdXA9eWVzLC0td2l0aC1saWJzb3VwPW5vLGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1ttb2RlbW1hbmFnZXJdID0gIi0td2l0aC1tb2RlbS1tYW5hZ2VyLTE9eWVzLC0td2l0aC1tb2RlbS1tYW5hZ2VyLTE9bm8sbW9kZW1tYW5hZ2VyIgotUEFDS0FHRUNPTkZJR1twcHBdID0gIi0tZW5hYmxlLXBwcCwtLWRpc2FibGUtcHBwLHBwcCxwcHAiCi0jIFVzZSBmdWxsIGZlYXR1cmVkIGRoY3AgY2xpZW50IGluc3RlYWQgb2YgaW50ZXJuYWwgb25lCi1QQUNLQUdFQ09ORklHW2RoY2xpZW50XSA9ICItLXdpdGgtZGhjbGllbnQ9JHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LCwsZGhjcC1jbGllbnQiCi1QQUNLQUdFQ09ORklHW2Ruc21hc3FdID0gIi0td2l0aC1kbnNtYXNxPSR7YmluZGlyfS9kbnNtYXNxIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1jcnlwdG89bnNzLCxuc3MiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbd2lmaV0gPSAiLS1lbmFibGUtd2lmaT15ZXMsLS1lbmFibGUtd2lmaT1ubyx3aXJlbGVzcy10b29scyx3cGEtc3VwcGxpY2FudCB3aXJlbGVzcy10b29scyIKLVBBQ0tBR0VDT05GSUdbaWZ1cGRvd25dID0gIi0tZW5hYmxlLWlmdXBkb3duLC0tZGlzYWJsZS1pZnVwZG93biIKLVBBQ0tBR0VDT05GSUdbbmV0Y29uZmlnXSA9ICItLXdpdGgtbmV0Y29uZmlnPXllcywtLXdpdGgtbmV0Y29uZmlnPW5vIgotUEFDS0FHRUNPTkZJR1txdDQteDExLWZyZWVdID0gIi0tZW5hYmxlLXF0LC0tZGlzYWJsZS1xdCxxdDQteDExLWZyZWUiCi0KLVBBQ0tBR0VTID0rICJsaWJubXV0aWwgbGlibm1nbGliIGxpYm5tZ2xpYi12cG4gXAotICAke1BOfS1ubXR1aSAke1BOfS1ubXR1aS1kb2MgXAotICAke1BOfS1hZHNsIFwKLSIKLQotRklMRVNfbGlibm11dGlsICs9ICIke2xpYmRpcn0vbGlibm0tdXRpbC5zby4qIgotRklMRVNfbGlibm1nbGliICs9ICIke2xpYmRpcn0vbGlibm0tZ2xpYi5zby4qIgotRklMRVNfbGlibm1nbGliLXZwbiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWItdnBuLnNvLioiCi0KLUZJTEVTXyR7UE59LWFkc2wgPSAiJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2xpYm5tLWRldmljZS1wbHVnaW4tYWRzbC5zbyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJleGVjZGlyfSBcCi0gICAgJHtsaWJkaXJ9L3BwcGQvKi9ubS1wcHBkLXBsdWdpbi5zbyBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAotICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2Jhc2VfbGliZGlyfS91ZGV2LyogXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAotIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiaXB0YWJsZXMgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdkbnNtYXNxJywgZCl9IFwKLSIKLVJDT05GTElDVFNfJHtQTn0gPSAiY29ubm1hbiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vTmV0d29ya01hbmFnZXIvZ2RiLWNtZCBcCi0gICAgJHtsaWJkaXJ9L3BwcGQvKi8qLmxhIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpID0gIiBcCi0gICAgJHtiaW5kaXJ9L25tdHVpIFwKLSAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAotICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAotICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCi0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgppbmRleCAwNTNjODBhLi4yZGI0OGYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgpAQCAtMjEsNiArMjEsNyBAQAogUyA9ICIke1dPUktESVJ9LyR7QlB9LVNvdXJjZSIKIAogRVhUUkFfT0VDT05GID0gIiAtRENNQUtFX1NLSVBfUlBBVEg9T04gIgorRVhUUkFfT0VDTUFLRSArPSAiLURCVUlMRF9ET0NVTUVOVEFUSU9OPU9GRiIKIAogIy0tZW5hYmxlLWFwcHMgLS1lbmFibGUtc3lzbG9nCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC10b29scy1ibHVldG9vdGguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtdG9vbHMtYmx1ZXRvb3RoLmJiCmluZGV4IDBlZGU1ZTUuLmYyYTE2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC10b29scy1ibHVldG9vdGguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXRvb2xzLWJsdWV0b290aC5iYgpAQCAtMiw3ICsyLDcgQEAKICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKIAogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIAogU1VNTUFSWSA9ICJTZXQgb2YgQmx1ZXRvb3RoIHJlbGF0ZWQgdG9vbHMgZm9yIGluY2x1c2lvbiBpbiBpbWFnZXMiCkBAIC0xNSwxMyArMTUsMTMgQEAKIAogUkRFUEVORFNfYmx1ZXo0ID0gIiBcCiAgICAgb2JleGZ0cCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgJ2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXonLCAnJywgZCl9IFwKICIKIAogUkRFUEVORFNfYmx1ZXo1ID0gIiBcCiAgICAgYmx1ZXo1LW5vaW5zdC10b29scyBcCiAgICAgYmx1ZXo1LW9iZXggXAogICAgIGJsdWV6NS10ZXN0dG9vbHMgIFwKLSAgICBsaWJhc291bmQtbW9kdWxlLWJsdWV6IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBcCiAgICAgICAgICdwdWxzZWF1ZGlvLW1vZHVsZS1ibHVldG9vdGgtZGlzY292ZXIgXAogICAgICAgICAgcHVsc2VhdWRpby1tb2R1bGUtYmx1ZXRvb3RoLXBvbGljeSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvZmlsZXMvbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvZmlsZXMvbWFrZWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMxYmZhYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9maWxlcy9tYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitEaXNhYmxlIGJ1aWxkaW5nIHNvbWUgdGhpbmdzIHdlIGRvbid0IG5lZWQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWddCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorCistLS0KKyBNYWtlZmlsZSB8ICAgIDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMzNiZDJkMC4uODQyNjJiZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTExNSw3ICsxMTUsOCBAQCBMREZMQUdTX0FTID0gLXNoYXJlZCAtV2wsLXNvbmFtZSxsaWIke01RVFRMSUJfQVN9LnNvLiR7TUFKT1JfVkVSU0lPTn0gLWxwdGhyZWFkCisgCisgYWxsOiBidWlsZAorIAkKKy1idWlsZDogfCBta2RpciAke01RVFRMSUJfQ19UQVJHRVR9ICR7TVFUVExJQl9DU19UQVJHRVR9ICR7TVFUVExJQl9BX1RBUkdFVH0gJHtNUVRUTElCX0FTX1RBUkdFVH0gJHtNUVRUVkVSU0lPTl9UQVJHRVR9ICR7U1lOQ19TQU1QTEVTfSAke0FTWU5DX1NBTVBMRVN9ICR7U1lOQ19URVNUU30gJHtTWU5DX1NTTF9URVNUU30gJHtBU1lOQ19URVNUU30gJHtBU1lOQ19TU0xfVEVTVFN9CisrYnVpbGQ6IHwgbWtkaXIgJHtNUVRUTElCX0NfVEFSR0VUfSAke01RVFRMSUJfQ1NfVEFSR0VUfSAke01RVFRMSUJfQV9UQVJHRVR9ICR7TVFUVExJQl9BU19UQVJHRVR9CisrIyR7TVFUVFZFUlNJT05fVEFSR0VUfSAke1NZTkNfU0FNUExFU30gJHtBU1lOQ19TQU1QTEVTfSAke1NZTkNfVEVTVFN9ICR7U1lOQ19TU0xfVEVTVFN9ICR7QVNZTkNfVEVTVFN9ICR7QVNZTkNfU1NMX1RFU1RTfQorIAorIGNsZWFuOgorIAlybSAtcmYgJHtibGRkaXJ9LyoKKy0tIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYzM4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4yLjAuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJQYWhvIE1RVFQgLSBDIGxpYnJhcmllcyBmb3IgdGhlIE1RVFQgYW5kIE1RVFQtU04gcHJvdG9jb2xzIgorREVTQ1JJUFRJT04gPSAiQ2xpZW50IGltcGxlbWVudGF0aW9uIG9mIG9wZW4gYW5kIHN0YW5kYXJkIG1lc3NhZ2luZyBwcm90b2NvbHMgZm9yIE1hY2hpbmUtdG8tTWFjaGluZSAoTTJNKSBhbmQgSW50ZXJuZXQgb2YgVGhpbmdzIChJb1QpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFoby8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICAgICAgZmlsZTovL2VkbC12MTA7bWQ1PTNhZGZjYzcwZjVhZWI3YTQ0ZjNmOWI0OTVhYTFmYmYzIFwKKyAgICAgICAgZmlsZTovL2VwbC12MTA7bWQ1PTY1OWM4ZTkyYTQwYjZkZjFkOWUzZGNjZjVhZTQ1YTA4IFwKKyAgICAgICAgZmlsZTovL25vdGljZS5odG1sO21kNT1hMDBkNmY5YWI1NDJiZTdiYWJjMmQ4YjgwZDVkMmE0YyBcCisgICAgICAgIGZpbGU6Ly9hYm91dC5odG1sO21kNT1kY2RlNDM4ZDczY2Y0MjM5M2RhOWQ0MGZhYmMwYzliYyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9lY2xpcHNlL3BhaG8ubXF0dC5jO3Byb3RvY29sPWh0dHAiCisKK1NSQ1JFViA9ICJlOGQzNGRhMjRhZDgwN2Y1ZTY5OGIzMjdkNjc1OTFmZDRiNGJmYTdlIgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIG9lX2xpYmluc3RhbGwgLUMgYnVpbGQvb3V0cHV0IC1zbyBsaWJwYWhvLW1xdHQzYSAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9vdXRwdXQgLXNvIGxpYnBhaG8tbXF0dDNhcyAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9vdXRwdXQgLXNvIGxpYnBhaG8tbXF0dDNjICAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9vdXRwdXQgLXNvIGxpYnBhaG8tbXF0dDNjcyAke0R9JHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IHNyYy9NUVRUQXN5bmMuaCAke0R9JHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IHNyYy9NUVRUQ2xpZW50LmggJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCBzcmMvTVFUVENsaWVudFBlcnNpc3RlbmNlLmggJHtEfSR7aW5jbHVkZWRpcn0KK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Bob25ldC11dGlscy9waG9uZXQtdXRpbHMvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiN2U1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBmN2FkOWE0NDcxY2VlMjMyNGYyMTZhMGQ4MmJhODA5N2VjNzQ2YzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6NDg6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsaW1pdHMuaCBmb3IgUEFUSF9NQVgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wbnN0YXQuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Buc3RhdC5jIGIvc3JjL3Buc3RhdC5jCitpbmRleCA2NjFhNWJjLi43NjA2OGU2IDEwMDY0NAorLS0tIGEvc3JjL3Buc3RhdC5jCisrKysgYi9zcmMvcG5zdGF0LmMKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgc3RydWN0IGZkCisgeworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Bob25ldC11dGlscy9waG9uZXQtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Bob25ldC11dGlscy9waG9uZXQtdXRpbHNfZ2l0LmJiCmluZGV4IDU1ODk5NjMuLjNjNTk5OTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGhvbmV0LXV0aWxzL3Bob25ldC11dGlsc19naXQuYmIKQEAgLTIsNyArMiw5IEBACiBIT01FUEFHRSA9ICIiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1TUkNfVVJJID0gImdpdDovL2dpdG9yaW91cy5vcmcvbWVlZ28tY2VsbHVsYXIvcGhvbmV0LXV0aWxzLmdpdDticmFuY2g9bWFzdGVyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRvcmlvdXMub3JnL21lZWdvLWNlbGx1bGFyL3Bob25ldC11dGlscy5naXQ7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIFwKKyAgICAgICAgICAgIgogUFIgPSAicjIiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogU1JDUkVWID0gIjRhY2ZhNzIwZmQzN2QxNzhhMDQ4ZmMyYmUxNzE4MDEzN2Q0YTcwZWEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J0b3JyZW50L3J0b3JyZW50X2dpdC5iYgppbmRleCBhZjFjNGQ2Li5jNzMxY2Y3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ydG9ycmVudC9ydG9ycmVudF9naXQuYmIKQEAgLTE0LDYgKzE0LDEwIEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzIuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8yLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg4YzU4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzIuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNlcmlhbCB0byBuZXR3b3JrIHByb3h5IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3NlcjJuZXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmFlMzAxOWI0YzZkYzQxMzhjMjE3ODY0YmQwNDMzMWYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3Qvc2VyMm5ldC9zZXIybmV0L3NlcjJuZXQtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODAwMTFhYzBlNjBiYmRjYjY1ZjFkN2E4NjI1MWUzZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmRlZTFlNjk5MDNjZjQwOWJkYzZmMzI0MDNhNTY2Y2JjNjAwNmFhOWUyYTRkNmY4ZjEyYjkwZGZkNWNhMGQwZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA4NjUwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy40LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiQSBzZXJpYWwgdG8gbmV0d29yayBwcm94eSIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zZXIybmV0LyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJhZTMwMTliNGM2ZGM0MTM4YzIxNzg2NGJkMDQzMzFmIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3NlcjJuZXQvc2VyMm5ldC9zZXIybmV0LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU2MjI3NGQ3ODM1MzQyNzZhOWZlYWM5MTNiN2Q4YzRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4NDYwNjZlMjdjMzA3MjU2NTk5MDc0NWQwMzAzNTdhYTBjMjc4Zjk2YjdkMWQ0ZjU5MDIzMzQ3YzFkYjg4MjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29mdDY2L2ZpbGVzL2ZpeC1hci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2Z0NjYvZmlsZXMvZml4LWFyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjFmZmRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2Z0NjYvZmlsZXMvZml4LWFyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLS0tCi0gY29uZmlndXJlLmFjIHwgICAgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCi1AQCAtNyw1ICs3LDYgQEAgQUNfUFJPR19DQwotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZSBsaWIvTWFrZWZpbGUgdG9vbHMvTWFrZWZpbGVdKQotIFBLR19DSEVDS19NT0RVTEVTKFtGVERJXSwgW2xpYmZ0ZGkgPj0gMC4xM10pCi0gQUNfT1VUUFVUCi0gQU1fUFJPR19DQ19DX08KLStBTV9QUk9HX0FSCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29mdDY2L3NvZnQ2Nl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29mdDY2L3NvZnQ2Nl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNmY1ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvZnQ2Ni9zb2Z0NjZfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGFuZCB0b29scyBmb3IgU29mdDY2QUREIGFuZCByZWxhdGVkIFNEUiByYWRpbyByZWNlaXZlcnMiCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiAiCi0KLVBOQkxBQ0tMSVNUW3NvZnQ2Nl0gPz0gIkJST0tFTjogZGVwZW5kcyBvbiBicm9rZW4gbGliZnRkaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotREVQRU5EUyA9ICJsaWJmdGRpIgotCi1QViA9ICIwLjEuMytnaXRyJHtTUkNQVn0iCi1QUiA9ICJyMSIKLQotU1JDUkVWID0gImExZGFiMjVlNzM4OTZjOTBjOTgyMjdhYzgwNTVmMjI3YjgzMGQ1MTIiCi1TUkNfVVJJID0gImdpdDovL2hvbWUuaG9yc3Rlbi5jb20vc29mdDY2IFwKLWZpbGU6Ly9maXgtYXIucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L2xpYnRlbGVwYXRoeS9kb3VibGVmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L2xpYnRlbGVwYXRoeS9kb3VibGVmaXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NzM3ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHkvZG91YmxlZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotRml4IGRvdWJsZSByZWZlcmVuY2UgdG8gdGhpcyBmaWxlIHRvIHdvcmsgd2l0aCByZWNlbnQgYXV0b2NvbmYrYXV0b21ha2UKLQotUlAgMS8yLzEwCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IGxpYnRlbGVwYXRoeS0wLjMuMy9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ0ZWxlcGF0aHktMC4zLjMub3JpZy9zcmMvTWFrZWZpbGUuYW0JMjAxMC0wMi0wMSAxMzoxMzo1MC44NjkwMzg5ODQgKzAwMDAKLSsrKyBsaWJ0ZWxlcGF0aHktMC4zLjMvc3JjL01ha2VmaWxlLmFtCTIwMTAtMDItMDEgMTM6MTQ6MjMuMjY3Nzg5NDU2ICswMDAwCi1AQCAtMjcsNyArMjcsNiBAQAotICAgICB0cC1jaGFuLXR5cGUtdGV4dC1nZW4uaCBcCi0gICAgIHRwLWNoYW4tdHlwZS10dWJlcy1nZW4uaCBcCi0gICAgIHRwLWNvbm4taWZhY2UtYWxpYXNpbmctZ2VuLmggXAotLSAgICB0cC1jb25uLWlmYWNlLWF2YXRhcnMtZ2VuLmggXAotICAgICB0cC1jb25uLWlmYWNlLWNhcGFiaWxpdGllcy1nZW4uaCBcCi0gICAgIHRwLWNvbm4taWZhY2UtY29udGFjdC1pbmZvLWdlbi5oIFwKLSAgICAgdHAtY29ubi1pZmFjZS1mb3J3YXJkaW5nLWdlbi5oIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvbGlidGVsZXBhdGh5L3ByZWZlcl9weXRob25fMi41LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHkvcHJlZmVyX3B5dGhvbl8yLjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3Njc5YWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHkvcHJlZmVyX3B5dGhvbl8yLjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJ0ZWxlcGF0aHktMC4zLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidGVsZXBhdGh5LTAuMy4xLm9yaWcvY29uZmlndXJlLmFjCTIwMDctMTEtMjIgMTk6MDU6NTYuMDAwMDAwMDAwICswMDAwCi0rKysgbGlidGVsZXBhdGh5LTAuMy4xL2NvbmZpZ3VyZS5hYwkyMDA4LTAxLTA0IDEyOjA3OjI4LjAwMDAwMDAwMCArMDAwMAotQEAgLTUxLDcgKzUxLDcgQEAKLSAgIEFDX01TR19FUlJPUihbeHNsdHByb2MgKGZyb20gdGhlIGxpYnhzbHQgc291cmNlIHBhY2thZ2UpIGlzIHJlcXVpcmVkXSkKLSBmaQotIAotLUFDX0NIRUNLX1BST0dTKFtQWVRIT05dLCBbcHl0aG9uMi4zIHB5dGhvbjIuNCBweXRob24yLjUgcHl0aG9uXSkKLStBQ19DSEVDS19QUk9HUyhbUFlUSE9OXSwgW3B5dGhvbjIuNSBweXRob24yLjQgcHl0aG9uMi4zIHB5dGhvbl0pCi0gaWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW4KLSAgIEFDX01TR19FUlJPUihbUHl0aG9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgdGhpcyBwYWNrYWdlXSkKLSBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHlfMC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L2xpYnRlbGVwYXRoeV8wLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgzYmQ1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L2xpYnRlbGVwYXRoeV8wLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGVsZXBhdGh5IGZyYW1ld29yayIKLURFU0NSSVBUSU9OID0gIlRlbGVwYXRoeSBpcyBhIEQtQnVzIGZyYW1ld29yayBmb3IgdW5pZnlpbmcgcmVhbCB0aW1lIFwKLWNvbW11bmljYXRpb24sIGluY2x1ZGluZyBpbnN0YW50IG1lc3NhZ2luZywgdm9pY2UgY2FsbHMgYW5kIHZpZGVvIGNhbGxzLiAgSXQgXAotYWJzdHJhY3RzIGRpZmZlcmVuY2VzIGJldHdlZW4gcHJvdG9jb2xzIHRvIHByb3ZpZGUgYSB1bmlmaWVkIGludGVyZmFjZSBmb3IgXAotYXBwbGljYXRpb25zLiIKLUhPTUVQQUdFID0gImh0dHA6Ly90ZWxlcGF0aHkuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotREVQRU5EUyA9ICJnbGliLTIuMCBkYnVzIGRidXMtZ2xpYiB0ZWxlcGF0aHktZ2xpYiBsaWJ4c2x0LW5hdGl2ZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3RwLWNvbm4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT00YzU4MDY5Zjc3ZDYwMWNjNTkyMDBiY2U1Mzk2YzdjYiIKLVBSID0gInI1IgotCi1TUkNfVVJJID0gImh0dHA6Ly90ZWxlcGF0aHkuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2xpYnRlbGVwYXRoeS9saWJ0ZWxlcGF0aHktJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vcHJlZmVyX3B5dGhvbl8yLjUucGF0Y2ggXAotICAgIGZpbGU6Ly9kb3VibGVmaXgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDkwY2ExYTBjNjE0ZDQ0NjYzOTRiNzJkNDNiZjczNzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBkMjMwYmU4NTUxMjUxNjM1Nzk3NDM0MTgyMDNjNmY2YmUyZjEwZjk4YzRmMDY1NzM1YzFkYzllZDExNTg3OCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZWxlcGF0aHkgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIgotCi1QTkJMQUNLTElTVFtsaWJ0ZWxlcGF0aHldID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjA5LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbC90bWMtTWFrZWZpbGUtZml4LXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2wvdG1jLU1ha2VmaWxlLWZpeC1yYWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2UxZGE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbC90bWMtTWFrZWZpbGUtZml4LXJhY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMjIgU2VwIDIwMTMgMjM6MjE6MDEgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL01ha2VmaWxlLmFtOiBmaXggcmFjZSBpc3N1ZSBmb3IgX2dlbi9ndHlwZXMuaCBhbmQgX2dlbi9ndHlwZXMtYm9keS5oCi0KLVRoZXJlIG1pZ2h0IGJlIGFuIGVycm9yIHdoZW4gcGFyYWxsZWwgYnVpbGQ6Ci0KLVtzbmlwXQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICIvcGF0aC90by90b29scy9nbGliLWd0eXBlcy1nZW5lcmF0b3IucHkiLCBsaW5lIDMwNCwgaW4gPG1vZHVsZT4KLSAgICBHVHlwZXNHZW5lcmF0b3IoZG9tLCBhcmd2WzFdLCBhcmd2WzJdKSgpCi0gIEZpbGUgIi9wYXRoL3RvL3Rvb2xzL2dsaWItZ3R5cGVzLWdlbmVyYXRvci5weSIsIGxpbmUgMjk1LCBpbiBfX2NhbGxfXwotICAgIGZpbGVfc2V0X2NvbnRlbnRzKHNlbGYub3V0cHV0ICsgJy5oJywgJycuam9pbihzZWxmLmhlYWRlcikpCi0gIEZpbGUgIi9wYXRoL3RvL3Rvb2xzL2xpYnRwY29kZWdlbi5weSIsIGxpbmUgNDIsIGluIGZpbGVfc2V0X2NvbnRlbnRzCi0gICAgb3MucmVuYW1lKGZpbGVuYW1lICsgJy50bXAnLCBmaWxlbmFtZSkKLU9TRXJyb3I6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1bc25pcF0KLQotVGhpcyBpcyBhIHJhY2UgaXNzdWUsIHRoZSBfZ2VuL2d0eXBlcy5oIGFuZCBfZ2VuL2d0eXBlcy1ib2R5LmggbWF5Ci13cml0ZShyZW1vdmUvcmVuYW1lKSBfZ2VuL2d0eXBlcy50bXAgYXQgdGhlIHNhbWUgdGltZSwgdGhlbiB0aGVyZSB3b3VsZAotYmUgdGhlIGVycm9yLgotCi1UaGVyZSB3YXMgYSBzaW1pbGFyIGJ1ZyBpbiB0ZWxlcGF0aHktZ2xpYiB3aGljaCB3YXMgYWxyZWFkeSBmaXhlZCwgd2UgdXNlIHRoZQotc2ltaWxhciBwYXRjaCB0byBmaXggaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8ICAgMTggKysrKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjg4LDcgKzI4OCwxMSBAQCBfZ2VuL2ludGVyZmFjZXMtYm9keS5oOiBfZ2VuL21jZC54bWwgXAotIAkJJCh0b29sc19kaXIpL2dsaWItaW50ZXJmYWNlcy1ib2R5LWdlbmVyYXRvci54c2wgXAotIAkJJDwgPiAkQAotIAotLV9nZW4vZ3R5cGVzLmggX2dlbi9ndHlwZXMtYm9keS5oOiBfZ2VuL21jZC54bWwgXAotKyMgZG8gbm90aGluZywgb3V0cHV0IGFzIGEgc2lkZS1lZmZlY3QKLStfZ2VuL2d0eXBlcy5oOiBfZ2VuL2d0eXBlcy1ib2R5LmgKLSsJQDoKLSsKLStfZ2VuL2d0eXBlcy1ib2R5Lmg6IF9nZW4vbWNkLnhtbCBcCi0gCSQodG9wX3NyY2RpcikvdG9vbHMvZ2xpYi1ndHlwZXMtZ2VuZXJhdG9yLnB5Ci0gCSQoQU1fVl9HRU4pJChQWVRIT04pICQodG9wX3NyY2RpcikvdG9vbHMvZ2xpYi1ndHlwZXMtZ2VuZXJhdG9yLnB5IFwKLSAJCSQ8IF9nZW4vZ3R5cGVzIG1jCi1AQCAtMzA5LDcgKzMxMywxMSBAQCBfZ2VuLyUueG1sOiAlLnhtbCAkKHdpbGRjYXJkICQodG9wX3NyY2RpcikveG1sLyoueG1sKSBNYWtlZmlsZS5hbQotIAkkKEFNX1ZfR0VOKSQoWFNMVFBST0MpICQoWFNMVFBST0NGTEFHUykgLS14aW5jbHVkZSAkKHRvb2xzX2RpcikvaWRlbnRpdHkueHNsIFwKLSAJCSQ8ID4gJEAKLSAKLS1fZ2VuL2NsaS0lLWJvZHkuaCBfZ2VuL2NsaS0lLmg6IF9nZW4vJS54bWwgXAotKyMgZG8gbm90aGluZywgb3V0cHV0IGFzIGEgc2lkZS1lZmZlY3QKLStfZ2VuL2NsaS0lLmg6IF9nZW4vY2xpLSUtYm9keS5oCi0rCUA6Ci0rCi0rX2dlbi9jbGktJS1ib2R5Lmg6IF9nZW4vJS54bWwgXAotIAkkKHRvb2xzX2RpcikvZ2xpYi1jbGllbnQtZ2VuLnB5IE1ha2VmaWxlLmFtCi0gCSQoQU1fVl9HRU4pJChQWVRIT04pICQodG9vbHNfZGlyKS9nbGliLWNsaWVudC1nZW4ucHkgXAotIAkJLS1ncm91cD1gZWNobyAkKiB8IHRyIHgtIHhfYCBcCi1AQCAtMzE3LDcgKzMyNSwxMSBAQCBfZ2VuL2NsaS0lLWJvZHkuaCBfZ2VuL2NsaS0lLmg6IF9nZW4vJS54bWwgXAotIAkJLS10cC1wcm94eS1hcGk9MC43LjYgXAotIAkJJDwgTWNfQ2xpIF9nZW4vY2xpLSQqCi0gCi0tX2dlbi9zdmMtJS5jIF9nZW4vc3ZjLSUuaDogX2dlbi8lLnhtbCBcCi0rIyBkbyBub3RoaW5nLCBvdXRwdXQgYXMgYSBzaWRlLWVmZmVjdAotK19nZW4vc3ZjLSUuaDogX2dlbi9zdmMtJS5jCi0rCUA6Ci0rCi0rX2dlbi9zdmMtJS5jOiBfZ2VuLyUueG1sIFwKLSAJJCh0b29sc19kaXIpL2dsaWItZ2ludGVyZmFjZS1nZW4ucHkgTWFrZWZpbGUuYW0KLSAJJChBTV9WX0dFTikkKFBZVEhPTikgJCh0b29sc19kaXIpL2dsaWItZ2ludGVyZmFjZS1nZW4ucHkgXAotIAkJLS1maWxlbmFtZT1fZ2VuL3N2Yy0kKiBcCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbF81LjE2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2xfNS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTRkNWQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbF81LjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIkNlbnRyYWwgY29udHJvbCBmb3IgVGVsZXBhdGh5IElNIGNvbm5lY3Rpb24gbWFuYWdlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy93aWtpL01pc3Npb25fQ29udHJvbC8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9yZXF1ZXN0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZjgwNTM0ZDlhZjFjMzMyOTFiM2I3OTYwOWYxOTZlYjIiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYnRlbGVwYXRoeSBkYnVzLWdsaWIgZ2NvbmYgbGlieHNsdC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3RlbGVwYXRoeS5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1jLU1ha2VmaWxlLWZpeC1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDIxMTE1YTM1YjllNDI3ODA3MzI2ODc3Zjg2ZTdmNDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTRjZWI3ZDUzNTM1YjQzZDQ0YjgyNzFhZDExMzE5ZDFkMGZlNmQxOTNkMTU0NjM2YjllNjJiNDI3OTliOTcyMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob25uYXRpdmUKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdXBvd2VyXSA9ICItLWVuYWJsZS11cG93ZXIsLS1kaXNhYmxlLXVwb3dlcix1cG93ZXIiCi0KLSMgdG8gc2VsZWN0IGNvbm5tYW4gb3Igbm0geW91IG5lZWQgdG8gdXNlICJjb25uZWN0aXZpdHkiIGFuZCAiY29ubm1hbiIgb3IgIm5tIiwgZGVmYXVsdCBpcyB0byBkaXNhYmxlIGJvdGgKLVBBQ0tBR0VDT05GSUdbY29ubmVjdGl2aXR5XSA9ICIsLS13aXRoLWNvbm5lY3Rpdml0eT1ubyIKLVBBQ0tBR0VDT05GSUdbY29ubm1hbl0gPSAiLS13aXRoLWNvbm5lY3Rpdml0eT1jb25ubWFuLCxjb25ubWFuIgotUEFDS0FHRUNPTkZJR1tubV0gPSAiLS13aXRoLWNvbm5lY3Rpdml0eT1ubSwsbmV0d29ya21hbmFnZXIiCi0KLVBBQ0tBR0VTID0rICIgXAotICAgIGxpYm1pc3Npb25jb250cm9sIFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1jb25maWcgXAotICAgIGxpYm1pc3Npb25jb250cm9sLXNlcnZlciBcCi0gICAgbGlibWlzc2lvbmNvbnRyb2wtZGV2IFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1jb25maWctZGV2IFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1zZXJ2ZXItZGV2IFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1kYmcgXAotICAgIGxpYm1pc3Npb25jb250cm9sLWNvbmZpZy1kYmcgXAotICAgIGxpYm1pc3Npb25jb250cm9sLXNlcnZlci1kYmcgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzKiAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMiCi0KLUZJTEVTX2xpYm1pc3Npb25jb250cm9sID0gIiR7bGliZGlyfS9saWJtaXNzaW9uY29udHJvbC5zby4qIgotRklMRVNfbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnID0gIiR7bGliZGlyfS9saWJtaXNzaW9uY29udHJvbC1jb25maWcuc28uKiIKLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLXNlcnZlciA9ICIke2xpYmRpcn0vbGlibWlzc2lvbmNvbnRyb2wtc2VydmVyLnNvLioiCi0KLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLWRldiA9ICIke2xpYmRpcn0vbGlibWlzc2lvbmNvbnRyb2wuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJtaXNzaW9uY29udHJvbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibWlzc2lvbmNvbnRyb2wucGMiCi1GSUxFU19saWJtaXNzaW9uY29udHJvbC1jb25maWctZGV2ID0gIiR7bGliZGlyfS9saWJtaXNzaW9uY29udHJvbC1jb25maWcuKiIKLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLXNlcnZlci1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1pc3Npb25jb250cm9sLXNlcnZlci4qIgotCi1GSUxFU19saWJtaXNzaW9uY29udHJvbC1kYmcgPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJtaXNzaW9uY29udHJvbC5zby4qIgotRklMRVNfbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnL2xpYm1pc3Npb25jb250cm9sLWNvbmZpZy5zby4qIgotRklMRVNfbGlibWlzc2lvbmNvbnRyb2wtc2VydmVyLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnL2xpYm1pc3Npb25jb250cm9sLXNlcnZlci5zby4qIgotCi1QTkJMQUNLTElTVFt0ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBsaWJ0ZWxlcGF0aHkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdF8wLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0XzAuOS4zLmJiCmluZGV4IDliYWVlZDEuLmFhOTMyODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0XzAuOS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0XzAuOS4zLmJiCkBAIC00MSwxMSArNDEsNiBAQAogICAgIC1EV0lUSF9RVDU9T0ZGIFwKICIKIAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIlwKLSAgICAgICAgICAgICAtREJVSUxEX1RFU1RJTkc9T0ZGIC1EQlVJTERfRVhBTVBMRVM9T0ZGIC1EV0lUSF9DUFA9T0ZGIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIlwKLSAgICAgICAgICAgICAtREJVSUxEX1RFU1RJTkc9T0ZGIC1EQlVJTERfRVhBTVBMRVM9T0ZGIC1EV0lUSF9QWVRIT049T0ZGIgotCiBQQUNLQUdFQ09ORklHID8/PSAibGliZXZlbnQgZ2xpYiBweXRob24iCiBQQUNLQUdFQ09ORklHW2xpYmV2ZW50XSA9ICItRFdJVEhfTElCRVZFTlQ9T04sLURXSVRIX0xJQkVWRU5UPU9GRixsaWJldmVudCwiCiBQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLURXSVRIX1BZVEhPTj1PTiwtRFdJVEhfUFlUSE9OPU9GRixweXRob24sIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYgppbmRleCBjYmYzMDYxLi4yMTI5ZTM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYgpAQCAtOSwxMyArOSwxMyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDczZGMzMWNjYjJlYmVkNzBkYjU0ZjFlOGFlYjRjMzMiCiBERVBFTkRTID0gInJwbSBpbmRlbnQtbmF0aXZlIgogCi1TUkNfVVJJID0gImdpdDovL2dpdC51bWlwLm9yZy91bWlwLmdpdCBcCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamxhbnphL3VtaXAgXAogICAgICAgICAgICBmaWxlOi8vYWRkLWRlcGVuZGVuY3ktdG8tc3VwcG9ydC1wYXJhbGxlbC1jb21waWxhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZCBcCiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1zdHJpbmctdG8tZnByaW50Zi1jYWxsLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDUkVWID0gIjQyODk3NGMyZDBkOGU3NWEyNzUwYTNhYjA0ODg3MDhjNWRmZGQ4ZTMiCitTUkNSRVYgPSAiN2Q2NzIwOWNkMWJiYTJkZDBlMTgzYTBmYTA3ZWVlZjA3OTY0ZGQxNCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfMy4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF8zLjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U3ZDZkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF8zLjAuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3Blbi1zb3VyY2UgbW9uaXRvcmluZyBzb2x1dGlvbiBmb3IgeW91ciBJVCBpbmZyYXN0cnVjdHVyZSIKLURFU0NSSVBUSU9OID0gIlwKLVpBQkJJWCBpcyBzb2Z0d2FyZSB0aGF0IG1vbml0b3JzIG51bWVyb3VzIHBhcmFtZXRlcnMgb2YgYSBuZXR3b3JrIGFuZCB0aGUgXAotaGVhbHRoIGFuZCBpbnRlZ3JpdHkgb2Ygc2VydmVycy4gWkFCQklYIHVzZXMgYSBmbGV4aWJsZSBub3RpZmljYXRpb24gXAotbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNvbmZpZ3VyZSBlLW1haWwgYmFzZWQgYWxlcnRzIGZvciB2aXJ0dWFsbHkgXAotYW55IGV2ZW50LiBUaGlzIGFsbG93cyBhIGZhc3QgcmVhY3Rpb24gdG8gc2VydmVyIHByb2JsZW1zLiBaQUJCSVggb2ZmZXJzIFwKLWV4Y2VsbGVudCByZXBvcnRpbmcgYW5kIGRhdGEgdmlzdWFsaXNhdGlvbiBmZWF0dXJlcyBiYXNlZCBvbiB0aGUgc3RvcmVkIFwKLWRhdGEuIFRoaXMgbWFrZXMgWkFCQklYIGlkZWFsIGZvciBjYXBhY2l0eSBwbGFubmluZy4gXAotXAotWkFCQklYIHN1cHBvcnRzIGJvdGggcG9sbGluZyBhbmQgdHJhcHBpbmcuIEFsbCBaQUJCSVggcmVwb3J0cyBhbmQgXAotc3RhdGlzdGljcywgYXMgd2VsbCBhcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYSBcCi13ZWItYmFzZWQgZnJvbnQgZW5kLiBBIHdlYi1iYXNlZCBmcm9udCBlbmQgZW5zdXJlcyB0aGF0IHRoZSBzdGF0dXMgb2YgXAoteW91ciBuZXR3b3JrIGFuZCB0aGUgaGVhbHRoIG9mIHlvdXIgc2VydmVycyBjYW4gYmUgYXNzZXNzZWQgZnJvbSBhbnkgXAotbG9jYXRpb24uIFByb3Blcmx5IGNvbmZpZ3VyZWQsIFpBQkJJWCBjYW4gcGxheSBhbiBpbXBvcnRhbnQgcm9sZSBpbiBcCi1tb25pdG9yaW5nIElUIGluZnJhc3RydWN0dXJlLiBUaGlzIGlzIGVxdWFsbHkgdHJ1ZSBmb3Igc21hbGwgXAotb3JnYW5pc2F0aW9ucyB3aXRoIGEgZmV3IHNlcnZlcnMgYW5kIGZvciBsYXJnZSBjb21wYW5pZXMgd2l0aCBhIFwKLW11bHRpdHVkZSBvZiBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuemFiYml4LmNvbS8iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9JbnRlcm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzAwZTkzOGFkMzAzMTQ3ZmVkZTIyOTRlZDc4ZmUwMmUiCi1ERVBFTkRTICA9ICJvcGVubGRhcCB2aXJ0dWFsL2xpYmljb252IgotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9qYWlzdC5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC96YWJiaXgvWkFCQklYJTIwTGF0ZXN0JTIwU3RhYmxlLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLUZpeC1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgIGZpbGU6Ly96YWJiaXgtYWdlbnQuc2VydmljZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmN2Y0MTg1MDM5N2QyMDc4Y2NhZTRiNzM4OWY5YTAwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGYzZTEwNjQyN2VkMjE1NDdiODExOTA0OWExNjEwOTJmNTk3ZDA0NTA3ZjllYjUzNTk1MWE5ZWU4ODdhNDc2IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGludXgta2VybmVsLWJhc2UgcGtnY29uZmlnIHN5c3RlbWQgdXNlcmFkZAotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInphYmJpeC1hZ2VudC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJlbmFibGUiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciB6YWJiaXgiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi1yIC1nIHphYmJpeCAtZCAvdmFyL2xpYi96YWJiaXggXAotICAgIC1zIC9zYmluL25vbG9naW4gLWMgXCJaYWJiaXggTW9uaXRvcmluZyBTeXN0ZW1cIiB6YWJiaXggXAotIgotCi1LRVJORUxfVkVSU0lPTiA9ICIke0BnZXRfa2VybmVsdmVyc2lvbl9oZWFkZXJzKCcke1NUQUdJTkdfS0VSTkVMX0RJUn0nKX0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgIC0tZW5hYmxlLWFnZW50IFwKLSAgICAtLWVuYWJsZS1pcHY2IFwKLSAgICAtLXdpdGgtbmV0LXNubXAgXAotICAgIC0td2l0aC1sZGFwPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgLS13aXRoLWphYmJlciBcCi0gICAgLS13aXRoLXVuaXhvZGJjIFwKLSAgICAtLXdpdGgtc3NoMiBcCi0gICAgLS13aXRoLXNxbGl0ZTMgXAotIgotQ0ZMQUdTX2FwcGVuZCA9ICIgLWxsZGFwIC1sbGJlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEtFUk5FTF9WRVJTSU9OPSIke0tFUk5FTF9WRVJTSU9OfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3phYmJpeC1hZ2VudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBzZWQgLWkgLWUgJ3MjQFNCSU5ESVJAIyR7c2JpbmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vemFiYml4LWFnZW50LnNlcnZpY2UKLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJsb2dyb3RhdGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF8zLjAuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzMuMC45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjVhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF8zLjAuOS5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIk9wZW4tc291cmNlIG1vbml0b3Jpbmcgc29sdXRpb24gZm9yIHlvdXIgSVQgaW5mcmFzdHJ1Y3R1cmUiCitERVNDUklQVElPTiA9ICJcCitaQUJCSVggaXMgc29mdHdhcmUgdGhhdCBtb25pdG9ycyBudW1lcm91cyBwYXJhbWV0ZXJzIG9mIGEgbmV0d29yayBhbmQgdGhlIFwKK2hlYWx0aCBhbmQgaW50ZWdyaXR5IG9mIHNlcnZlcnMuIFpBQkJJWCB1c2VzIGEgZmxleGlibGUgbm90aWZpY2F0aW9uIFwKK21lY2hhbmlzbSB0aGF0IGFsbG93cyB1c2VycyB0byBjb25maWd1cmUgZS1tYWlsIGJhc2VkIGFsZXJ0cyBmb3IgdmlydHVhbGx5IFwKK2FueSBldmVudC4gVGhpcyBhbGxvd3MgYSBmYXN0IHJlYWN0aW9uIHRvIHNlcnZlciBwcm9ibGVtcy4gWkFCQklYIG9mZmVycyBcCitleGNlbGxlbnQgcmVwb3J0aW5nIGFuZCBkYXRhIHZpc3VhbGlzYXRpb24gZmVhdHVyZXMgYmFzZWQgb24gdGhlIHN0b3JlZCBcCitkYXRhLiBUaGlzIG1ha2VzIFpBQkJJWCBpZGVhbCBmb3IgY2FwYWNpdHkgcGxhbm5pbmcuIFwKK1wKK1pBQkJJWCBzdXBwb3J0cyBib3RoIHBvbGxpbmcgYW5kIHRyYXBwaW5nLiBBbGwgWkFCQklYIHJlcG9ydHMgYW5kIFwKK3N0YXRpc3RpY3MsIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGEgXAord2ViLWJhc2VkIGZyb250IGVuZC4gQSB3ZWItYmFzZWQgZnJvbnQgZW5kIGVuc3VyZXMgdGhhdCB0aGUgc3RhdHVzIG9mIFwKK3lvdXIgbmV0d29yayBhbmQgdGhlIGhlYWx0aCBvZiB5b3VyIHNlcnZlcnMgY2FuIGJlIGFzc2Vzc2VkIGZyb20gYW55IFwKK2xvY2F0aW9uLiBQcm9wZXJseSBjb25maWd1cmVkLCBaQUJCSVggY2FuIHBsYXkgYW4gaW1wb3J0YW50IHJvbGUgaW4gXAorbW9uaXRvcmluZyBJVCBpbmZyYXN0cnVjdHVyZS4gVGhpcyBpcyBlcXVhbGx5IHRydWUgZm9yIHNtYWxsIFwKK29yZ2FuaXNhdGlvbnMgd2l0aCBhIGZldyBzZXJ2ZXJzIGFuZCBmb3IgbGFyZ2UgY29tcGFuaWVzIHdpdGggYSBcCittdWx0aXR1ZGUgb2Ygc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnphYmJpeC5jb20vIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvSW50ZXJuZXQiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMwMGU5MzhhZDMwMzE0N2ZlZGUyMjk0ZWQ3OGZlMDJlIgorREVQRU5EUyAgPSAib3BlbmxkYXAgdmlydHVhbC9saWJpY29udiIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvemFiYml4L1pBQkJJWCUyMExhdGVzdCUyMFN0YWJsZS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICBmaWxlOi8vemFiYml4LWFnZW50LnNlcnZpY2UgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDg5ZDIxYjQ2NDI3N2MwZDQxMjE1NWM3ZTU2MTFhOGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQ0NWYyNmMwMjUwMDk2ODFjMjljOWIzNTBhYTZjNGVlN2IxMjRkZGNhZjE2MDlhZTM2YzU1OTk3YmNiOGNmMiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpbnV4LWtlcm5lbC1iYXNlIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ6YWJiaXgtYWdlbnQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgemFiYml4IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItciAtZyB6YWJiaXggLWQgL3Zhci9saWIvemFiYml4IFwKKyAgICAtcyAvc2Jpbi9ub2xvZ2luIC1jIFwiWmFiYml4IE1vbml0b3JpbmcgU3lzdGVtXCIgemFiYml4IFwKKyIKKworS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25faGVhZGVycygnJHtTVEFHSU5HX0tFUk5FTF9ESVJ9Jyl9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAtLWVuYWJsZS1hZ2VudCBcCisgICAgLS1lbmFibGUtaXB2NiBcCisgICAgLS13aXRoLW5ldC1zbm1wIFwKKyAgICAtLXdpdGgtbGRhcD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAorICAgIC0td2l0aC1qYWJiZXIgXAorICAgIC0td2l0aC11bml4b2RiYyBcCisgICAgLS13aXRoLXNzaDIgXAorICAgIC0td2l0aC1zcWxpdGUzIFwKKyIKK0NGTEFHU19hcHBlbmQgPSAiIC1sbGRhcCAtbGxiZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBLRVJORUxfVkVSU0lPTj0iJHtLRVJORUxfVkVSU0lPTn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS96YWJiaXgtYWdlbnQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3phYmJpeC1hZ2VudC5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKKworUkRFUEVORFNfJHtQTn0gPSAibG9ncm90YXRlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9jLWljZS96ZXJvYy1pY2UtMy41LjEvMDAwMi1Nb2RpZnktTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb2MtaWNlL3plcm9jLWljZS0zLjUuMS8wMDAyLU1vZGlmeS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMwOTZkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb2MtaWNlL3plcm9jLWljZS0zLjUuMS8wMDAyLU1vZGlmeS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotVGhpcyBwYXRjaCBsZXRzIHlvdSBidWlsZCBJY2Ugd2l0aCBPcGVuRW1iZWRkZWQuIEkgZG91YnQgeW91IGNvdWxkIGRvCi1hIHJlZ3VsYXIgYnVpbGQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaC4KLQotRnJvbSBiYzYyMmNlNzRmYTAzYTkzNTI3OGQyMTczNmE1YTI1MTQ2NmUxNzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tIFJvbmRlYXUgPHRvbUB0cm9uZGVhdS5jb20+Ci1EYXRlOiBXZWQsIDE2IEFwciAyMDE0IDE0OjM0OjUxIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1vZGlmeSBNYWtlZmlsZXMgZm9yIGNyb3NzIGNvbXBpbGUKLQotLS0tCi0gY29uZmlnL01ha2UuY29tbW9uLnJ1bGVzICAgICAgICAgICB8ICAgMjAgKysrKysrKy0tLS0tLQotIGNwcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsrKy0tLQotIGNwcC9jb25maWcvTWFrZS5ydWxlcyAgICAgICAgICAgICAgfCAgIDMyICsrKysrKysrKysrKy0tLS0tLS0tCi0gY3BwL2NvbmZpZy9NYWtlLnJ1bGVzLkxpbnV4ICAgICAgICB8ICAgMTggKystLS0tLS0tLS0KLSBjcHAvc3JjL0ljZVN0b3JtL0ZyZWV6ZURCL01ha2VmaWxlIHwgICAgMiArLQotIHB5L2NvbmZpZy9NYWtlLnJ1bGVzICAgICAgICAgICAgICAgfCAgIDU4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDYgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWcvTWFrZS5jb21tb24ucnVsZXMgYi9jb25maWcvTWFrZS5jb21tb24ucnVsZXMKLWluZGV4IGQ3YjFkNTkuLmEzZmIxN2UgMTAwNjQ0Ci0tLS0gYS9jb25maWcvTWFrZS5jb21tb24ucnVsZXMKLSsrKyBiL2NvbmZpZy9NYWtlLmNvbW1vbi5ydWxlcwotQEAgLTY1LDkgKzY1LDkgQEAgaWZlcSAoJChVTkFNRSksTGludXgpCi0gICAgICAgIwotICAgICAgICMgU29tZSBMaW51eCBkaXN0cmlidXRpb25zIGxpa2UgRGViaWFuL1VidW50dSBkb24ndCB1c2UgL3Vzci9saWI2NC4KLSAgICAgICAjCi0tICAgICAgaWZlcSAoJChzaGVsbCB0ZXN0IC1kIC91c3IvbGliNjQgJiYgZWNobyAwKSwwKQotLSAgICAgICAgICBscDY0c3VmZml4CT0gNjQKLS0gICAgICBlbmRpZgotKyAgICAgICNpZmVxICgkKHNoZWxsIHRlc3QgLWQgL3Vzci9saWI2NCAmJiBlY2hvIDApLDApCi0rICAgICAgIyAgICBscDY0c3VmZml4CT0gNjQKLSsgICAgICAjZW5kaWYKLSAgICAgICBpZmVxICgkKExQNjQpLCkKLSAgICAgICAgICAgTFA2NCAgICAgIAk9IHllcwotICAgICAgIGVuZGlmCi1AQCAtMjQ0LDEyICsyNDQsMTMgQEAgZWxzZQotICAgICBzbGljZWRpciA9ICQoaWNlX2Rpcikvc2xpY2UKLSBlbmRpZgotIAotLWlmZXEgKCQocHJlZml4KSwgL3VzcikKLS0gICAgaW5zdGFsbF9zbGljZWRpciA9IC91c3Ivc2hhcmUvSWNlLSQoVkVSU0lPTikvc2xpY2UKLS1lbHNlCi0tICAgIGluc3RhbGxfc2xpY2VkaXIgPSAkKHByZWZpeCkvc2xpY2UKLS1lbmRpZgotKyNpZmVxICgkKHByZWZpeCksIC91c3IpCi0rIyAgICBpbnN0YWxsX3NsaWNlZGlyID0gL3Vzci9zaGFyZS9JY2UtJChWRVJTSU9OKS9zbGljZQotKyNlbHNlCi0rIyAgICBpbnN0YWxsX3NsaWNlZGlyID0gJChwcmVmaXgpL3NsaWNlCi0rI2VuZGlmCi0gCi0raW5zdGFsbF9zbGljZWRpciA9ICQocHJlZml4KS9zbGljZQotICMKLSAjIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBTbGljZSB0cmFuc2xhdG9yLgotICMKLUBAIC0yNjUsNyArMjY2LDggQEAgaWZuZXEgKCQoaWNlX2RpciksIC91c3IpCi0gICAgIGVuZGlmCi0gCi0gICAgIGlmZXEgKCQoVU5BTUUpLExpbnV4KQotLSAgICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSCA6PSAkKGljZV9saWJfZGlyKTokKExEX0xJQlJBUllfUEFUSCkKLSsgICAgICAgICNleHBvcnQgTERfTElCUkFSWV9QQVRIIDo9ICQoaWNlX2xpYl9kaXIpOiQoTERfTElCUkFSWV9QQVRIKQotKyAgICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSCA6PSAkKElDRV9IT01FKS9saWI6JChMRF9MSUJSQVJZX1BBVEgpCi0gICAgIGVuZGlmCi0gCi0gICAgIGlmZXEgKCQoVU5BTUUpLFN1bk9TKQotZGlmZiAtLWdpdCBhL2NwcC9NYWtlZmlsZSBiL2NwcC9NYWtlZmlsZQotaW5kZXggYTY4ZjExMy4uMWY0NGY1NyAxMDA2NDQKLS0tLSBhL2NwcC9NYWtlZmlsZQotKysrIGIvY3BwL01ha2VmaWxlCi1AQCAtMTEsMTEgKzExLDEyIEBAIHRvcF9zcmNkaXIJPSAuCi0gCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbmZpZy9NYWtlLnJ1bGVzCi0gCi0tU1VCRElSUwkJPSBjb25maWcgc3JjIGluY2x1ZGUgdGVzdAotKyNTVUJESVJTCQk9IGNvbmZpZyBzcmMgaW5jbHVkZSB0ZXN0Ci0rU1VCRElSUwkJPSBjb25maWcgc3JjIGluY2x1ZGUKLSAKLS1pZmVxICgkKHNoZWxsIHVuYW1lIHwgZ3JlcCBNSU5HVyksKQotLVNVQkRJUlMJCTo9ICQoU1VCRElSUykgZGVtbwotLWVuZGlmCi0rI2lmZXEgKCQoc2hlbGwgdW5hbWUgfCBncmVwIE1JTkdXKSwpCi0rI1NVQkRJUlMJCTo9ICQoU1VCRElSUykgZGVtbwotKyNlbmRpZgotIAotIElOU1RBTExfU1VCRElSUwk9ICQoaW5zdGFsbF9iaW5kaXIpICQoaW5zdGFsbF9saWJkaXIpICQoaW5zdGFsbF9pbmNsdWRlZGlyKSBcCi0gCSQoaW5zdGFsbF9jb25maWdkaXIpICQoaW5zdGFsbF9tYW5kaXIpCi1kaWZmIC0tZ2l0IGEvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzIGIvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzCi1pbmRleCAzNzQ2MWFlLi4xOTdjNWU4IDEwMDY0NAotLS0tIGEvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzCi0rKysgYi9jcHAvY29uZmlnL01ha2UucnVsZXMKLUBAIC0xNzUsMTEgKzE3NSwxMiBAQCBoZWFkZXJkaXIJCT0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi0gIyBpbmNsdWRlZGlyIGlzIG5vdCBoYW5kbGVkIHRoZSBzYW1lIGFzIGJpbmRpciBhbmQgbGliZGlyCi0gIyBiZWNhdXNlIGl0IGlzIHVzZWQgaW4gdGhlIC5kZXBlbmQgZmlsZXMKLSAjCi0taWZkZWYgaWNlX3NyY19kaXN0Ci0tICAgIGluY2x1ZGVkaXIJCT0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi0tZWxzZQotLSAgICBpbmNsdWRlZGlyCQk9ICQoaWNlX2RpcikvaW5jbHVkZQotLWVuZGlmCi0rI2lmZGVmIGljZV9zcmNfZGlzdAotKyMgICAgaW5jbHVkZWRpcgkJPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUKLSsjZWxzZQotKyMgICAgaW5jbHVkZWRpcgkJPSAkKGljZV9kaXIpL2luY2x1ZGUKLSsjZW5kaWYKLStpbmNsdWRlZGlyCQk9ICQodG9wX3NyY2RpcikvaW5jbHVkZQotIAotICMKLSAjIFBsYXRmb3JtIHNwZWNpZmljIGRlZmluaXRpb25zCi1AQCAtMjc3LDE0ICsyNzgsMTcgQEAgSUNFQ1BQRkxBR1MJCT0gLUkkKHNsaWNlZGlyKQotIFNMSUNFMkNQUEZMQUdTCQk9ICQoSUNFQ1BQRkxBR1MpCi0gCi0gaWZlcSAoJChpY2VfZGlyKSwgL3VzcikgCi0tICAgIExERkxBR1MJCT0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpCi0rICAgIExERkxBR1MJCSs9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKQotIGVsc2UKLSAgICAgQ1BQRkxBR1MJKz0gLUkkKGluY2x1ZGVkaXIpCi0tICAgIGlmZGVmIGljZV9zcmNfZGlzdAotLQlMREZMQUdTCT0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChsaWJkaXIpCi0tICAgIGVsc2UKLS0JTERGTEFHUwk9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKSAtTCQoaWNlX2RpcikvJChsaWJzdWJkaXIpJChjcHAxMXN1ZmZpeCkKLS0gICAgZW5kaWYKLSsjIFdlIG11c3QgYWx3YXlzIGJ1aWxkIHVzaW5nIHRoZSBsaWJyYXJpZXMgaW4gdGhlIHNvdXJjZSB0cmVlLCB0aGUgaG9zdCdzIGFyZSBvYnZpb3VzbHkKLSsjIG5vdCB3aGF0IHdlIHdhbnQgZm9yIHRoZSB0YXJnZXQKLSsgICAgTERGTEFHUwkrPSAkKExEUExBVEZPUk1GTEFHUykgJChDWFhGTEFHUykgLUwkKGxpYmRpcikgJChjYWxsIHJwYXRobGluaywkKGxpYmRpcikpCi0rIyAgICBpZmRlZiBpY2Vfc3JjX2Rpc3QKLSsjICAgICAgICBMREZMQUdTCT0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChsaWJkaXIpCi0rIyAgICBlbHNlCi0rIwlMREZMQUdTCT0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChpY2VfZGlyKS8kKGxpYnN1YmRpcikkKGNwcDExc3VmZml4KQotKyMgICAgZW5kaWYKLSBlbmRpZgotIAotIGlmZXEgKCQoRkxFWF9OT0xJTkUpLHllcykKLUBAIC0zMTMsOCArMzE3LDEwIEBAIGVuZGlmCi0gCi0gaWZkZWYgaWNlX3NyY19kaXN0Ci0gICAgIFNMSUNFUEFSU0VSTElCCT0gJChsaWJkaXIpLyQoY2FsbCBta2xpYmZpbGVuYW1lLFNsaWNlLCQoVkVSU0lPTikpCi0tICAgIFNMSUNFMkNQUAkJPSAkKGJpbmRpcikvc2xpY2UyY3BwCi0tICAgIFNMSUNFMkZSRUVaRQk9ICQoYmluZGlyKS9zbGljZTJmcmVlemUKLSsjICAgIFNMSUNFMkNQUAkJPSAkKGJpbmRpcikvc2xpY2UyY3BwCi0rIyAgICBTTElDRTJGUkVFWkUJPSAkKGJpbmRpcikvc2xpY2UyZnJlZXplCi0rICAgIFNMSUNFMkNQUAkJPSAkKElDRV9IT01FKS9iaW4vc2xpY2UyY3BwCi0rICAgIFNMSUNFMkZSRUVaRQk9ICQoSUNFX0hPTUUpL2Jpbi9zbGljZTJmcmVlemUKLSBlbHNlCi0gICAgIFNMSUNFUEFSU0VSTElCCT0gJChpY2VfZGlyKS8kKGxpYnN1YmRpcikkKGNwcDExc3VmZml4KS8kKGNhbGwgbWtsaWJmaWxlbmFtZSxTbGljZSwkKFZFUlNJT04pKQotICAgICBTTElDRTJDUFAJCT0gJChpY2VfZGlyKS8kKGJpbnN1YmRpcikkKGNwcDExc3VmZml4KS9zbGljZTJjcHAKLWRpZmYgLS1naXQgYS9jcHAvY29uZmlnL01ha2UucnVsZXMuTGludXggYi9jcHAvY29uZmlnL01ha2UucnVsZXMuTGludXgKLWluZGV4IDVkNTcxN2MuLjgzNjNjNmUgMTAwNjQ0Ci0tLS0gYS9jcHAvY29uZmlnL01ha2UucnVsZXMuTGludXgKLSsrKyBiL2NwcC9jb25maWcvTWFrZS5ydWxlcy5MaW51eAotQEAgLTMxLDcgKzMxLDcgQEAgaWZlcSAoJChDWFgpLGMrKykKLSAgICBDWFgJCQk9IGcrKwotIGVuZGlmCi0gCi0taWZlcSAoJChDWFgpLGcrKykKLSsjaWZlcSAoJChDWFgpLGcrKykKLSAKLSAgICAgaWZuZXEgKCQoU1VTRV9pNTg2KSwpCi0gICAgICAgICBDWFhBUkNIRkxBR1MJKz0gLW1hcmNoPWk1ODYKLUBAIC03MSwxNCArNzEsNiBAQCBpZmVxICgkKENYWCksZysrKQotICAgICAgIENYWEFSQ0hGTEFHUwkrPSAtbXR1bmU9djggLXBpcGUgLVduby1kZXByZWNhdGVkIC1ESUNFX1VTRV9NVVRFWF9TSEFSRUQKLSAgICBlbmRpZgotIAotLSAgIGlmZXEgKCQoTUFDSElORSkseDg2XzY0KQotLSAgICAgIGlmZXEgKCQoTFA2NCkseWVzKQotLSAgICAgICAgIENYWEFSQ0hGTEFHUwkrPSAtbTY0Ci0tICAgICAgZWxzZQotLSAgICAgICAgIENYWEFSQ0hGTEFHUwkrPSAtbTMyCi0tICAgICAgZW5kaWYKLS0gICBlbmRpZgotLQotICAgIENYWEZMQUdTCQk9ICQoQ1hYQVJDSEZMQUdTKSAtV2FsbCAtV2Vycm9yIC1wdGhyZWFkCi0gCi0gICAgaWZuZXEgKCQoR0VOUElDKSxubykKLUBAIC0xMDIsMTUgKzk0LDExIEBAIGlmZXEgKCQoQ1hYKSxnKyspCi0gCi0gICAgcnBhdGhsaW5rICAgICAgICAgICAgPSAtV2wsLXJwYXRoLWxpbmssJCgxKSAKLSAKLS0gICBpZm5lcSAoJChlbWJlZGRlZF9ydW5wYXRoX3ByZWZpeCksKQotLSAgICAgIExEUExBVEZPUk1GTEFHUyAgICAgID0gLVdsLC0tZW5hYmxlLW5ldy1kdGFncyAtV2wsLXJwYXRoLCQocnVucGF0aF9saWJkaXIpCi0tICAgZWxzZQotLSAgICAgIExEUExBVEZPUk1GTEFHUyAgICAgID0gLVdsLC0tZW5hYmxlLW5ldy1kdGFncwotLSAgIGVuZGlmCi0rICAgTERQTEFURk9STUZMQUdTICAgICAgPSAtV2wsLS1lbmFibGUtbmV3LWR0YWdzIC1XbCwtcnBhdGgsLi4vLi4vLi4vbGliCi0gCi0gICAgTERQTEFURk9STUZMQUdTCSs9IC1yZHluYW1pYwotIAotLWVuZGlmCi0rI2VuZGlmCi0gCi0gaWZlcSAoJChDWFgpLGljcGMpCi0gICAgJCh3YXJuaW5nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0pIAotZGlmZiAtLWdpdCBhL2NwcC9zcmMvSWNlU3Rvcm0vRnJlZXplREIvTWFrZWZpbGUgYi9jcHAvc3JjL0ljZVN0b3JtL0ZyZWV6ZURCL01ha2VmaWxlCi1pbmRleCA3Yzg0NGI3Li5jZjE1Y2IxIDEwMDY0NAotLS0tIGEvY3BwL3NyYy9JY2VTdG9ybS9GcmVlemVEQi9NYWtlZmlsZQotKysrIGIvY3BwL3NyYy9JY2VTdG9ybS9GcmVlemVEQi9NYWtlZmlsZQotQEAgLTY2LDcgKzY2LDcgQEAgJChsaWJkaXIpLyQoTElCTkFNRSk6ICQobGliZGlyKS8kKFNPTkFNRSkKLSAKLSAkKE1JR1JBVEUpOiAkKE1PQkpTKQotIAlybSAtZiAkQAotLQkkKENYWCkgJChMREZMQUdTKSAtbyAkQCAkKE1PQkpTKSAkKERCX1JQQVRIX0xJTkspIC1sSWNlU3Rvcm1TZXJ2aWNlIC1sSWNlU3Rvcm0gLWxGcmVlemUgJChMSUJTKQotKwkkKENYWCkgJChMREZMQUdTKSAtbyAkQCAkKE1PQkpTKSAkKERCX1JQQVRIX0xJTkspIC1sSWNlU3Rvcm1TZXJ2aWNlIC1sSWNlU3Rvcm0gLWxGcmVlemUgJChMSUJTKSAtbGRiX2N4eAotIAotICMgVGhlIHNsaWNlMmZyZWV6ZSBydWxlcyBhcmUgc3RydWN0dXJlZCBsaWtlIHRoaXMgdG8gYXZvaWQgaXNzdWVzIHdpdGgKLSAjIHBhcmFsbGVsIG1ha2UuCi1kaWZmIC0tZ2l0IGEvcHkvY29uZmlnL01ha2UucnVsZXMgYi9weS9jb25maWcvTWFrZS5ydWxlcwotaW5kZXggNDNjZTAxYi4uMTM0OTM0MiAxMDA2NDQKLS0tLSBhL3B5L2NvbmZpZy9NYWtlLnJ1bGVzCi0rKysgYi9weS9jb25maWcvTWFrZS5ydWxlcwotQEAgLTkyLDIxICs5MiwyMyBAQCBpZmVxICgkKHNoZWxsIHRlc3QgLWYgJCh0b3Bfc3JjZGlyKS9jb25maWcvTWFrZS5ydWxlcy4kKFVOQU1FKSAmJiBlY2hvIDApLDApCi0gICAgIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb25maWcvTWFrZS5ydWxlcy4kKFVOQU1FKQotIGVsc2UKLSAgICAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpLy4uL2NwcC9jb25maWcvTWFrZS5ydWxlcy4kKFVOQU1FKQotLWVuZGlmIAotK2VuZGlmCi0gCi0gbGliZGlyICAgICAgICAgICAgICAgICAgPSAkKHRvcF9zcmNkaXIpL3B5dGhvbgotLWlmbmVxICgkKHByZWZpeCksIC91c3IpCi0taW5zdGFsbF9weXRob25kaXIgICAgICAgPSAkKHByZWZpeCkvcHl0aG9uCi0taW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvcHl0aG9uCi0tZWxzZQotLSAgICBpZmVxICgkKHNoZWxsIHRlc3QgLWQgJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9kaXN0LXBhY2thZ2VzICYmIGVjaG8gMCksMCkKLS0gICAgICAgIGluc3RhbGxfcHl0aG9uZGlyICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9kaXN0LXBhY2thZ2VzCi0tICAgICAgICBpbnN0YWxsX2xpYmRpciAgICAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvZGlzdC1wYWNrYWdlcwotLSAgICBlbHNlCi0tICAgICAgICBpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvc2l0ZS1wYWNrYWdlcwotLSAgICAgICAgaW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL3NpdGUtcGFja2FnZXMKLS0gICAgZW5kaWYKLS1lbmRpZgotKyNpZm5lcSAoJChwcmVmaXgpLCAvdXNyKQotKyNpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS9weXRob24KLSsjaW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvcHl0aG9uCi0rI2Vsc2UKLSsjICAgIGlmZXEgKCQoc2hlbGwgdGVzdCAtZCAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL2Rpc3QtcGFja2FnZXMgJiYgZWNobyAwKSwwKQotKyMgICAgICAgIGluc3RhbGxfcHl0aG9uZGlyICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9kaXN0LXBhY2thZ2VzCi0rIyAgICAgICAgaW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL2Rpc3QtcGFja2FnZXMKLSsjICAgIGVsc2UKLSsjICAgICAgICBpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvc2l0ZS1wYWNrYWdlcwotKyMgICAgICAgIGluc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9zaXRlLXBhY2thZ2VzCi0rIyAgICBlbmRpZgotKyNlbmRpZgotK2luc3RhbGxfcHl0aG9uZGlyICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9zaXRlLXBhY2thZ2VzCi0raW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL3NpdGUtcGFja2FnZXMKLSAKLSBpZmVxICgkKFVOQU1FKSxTdW5PUykKLSAgICBpZmVxICgkKExQNjQpLHllcykKLUBAIC0xMTUsMTkgKzExNywyMSBAQCBpZmVxICgkKFVOQU1FKSxTdW5PUykKLSAgICBlbmRpZgotIGVuZGlmCi0gCi0taWZkZWYgaWNlX3NyY19kaXN0Ci0tICAgIGlmZXEgKCQoaWNlX2NwcF9kaXIpLCAkKGljZV9kaXIpL2NwcCkKLS0gICAgICAgIElDRV9MSUJfRElSID0gLUwkKGljZV9jcHBfZGlyKS9saWIKLS0gICAgZWxzZQotLSAgICAgICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2NwcF9kaXIpLyQobGlic3ViZGlyKQotLSAgICBlbmRpZgotLSAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfY3BwX2RpcikvbGliCi0tICAgIElDRV9GTEFHUyAJPSAtSSQoaWNlX2NwcF9kaXIpL2luY2x1ZGUKLS1lbmRpZgotLWlmZGVmIGljZV9iaW5fZGlzdAotLSAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfZGlyKS8kKGxpYnN1YmRpcikKLS0gICAgSUNFX0ZMQUdTCT0gLUkkKGljZV9kaXIpL2luY2x1ZGUKLS1lbmRpZgotKyNpZmRlZiBpY2Vfc3JjX2Rpc3QKLSsjICAgIGlmZXEgKCQoaWNlX2NwcF9kaXIpLCAkKGljZV9kaXIpL2NwcCkKLSsjICAgICAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfY3BwX2RpcikvbGliCi0rIyAgICBlbHNlCi0rIyAgICAgICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2NwcF9kaXIpLyQobGlic3ViZGlyKQotKyMgICAgZW5kaWYKLSsjICAgIElDRV9MSUJfRElSID0gLUwkKGljZV9jcHBfZGlyKS9saWIKLSsjICAgIElDRV9GTEFHUyAJPSAtSSQoaWNlX2NwcF9kaXIpL2luY2x1ZGUKLSsjZW5kaWYKLSsjaWZkZWYgaWNlX2Jpbl9kaXN0Ci0rIyAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfZGlyKS8kKGxpYnN1YmRpcikKLSsjICAgIElDRV9GTEFHUwk9IC1JJChpY2VfZGlyKS9pbmNsdWRlCi0rI2VuZGlmCi0rSUNFX0xJQl9ESVIgPSAtTCQodG9wX3NyY2RpcikvLi4vY3BwL2xpYgotK0lDRV9GTEFHUyA9IC1JJChpY2VfY3BwX2RpcikvaW5jbHVkZQotIElDRV9MSUJTID0gJChJQ0VfTElCX0RJUikgLWxJY2UgLWxTbGljZSAtbEljZVV0aWwKLSAKLSBpZm5lcSAoJChlbWJlZGRlZF9ydW5wYXRoX3ByZWZpeCksKQotQEAgLTEzNyw3ICsxNDEsNyBAQCBlbmRpZgotIENQUEZMQUdTCQk9Ci0gSUNFQ1BQRkxBR1MJCT0gLUkkKHNsaWNlZGlyKQotIFNMSUNFMlBZRkxBR1MJCT0gJChJQ0VDUFBGTEFHUykKLS1MREZMQUdTCQkJPSAkKExEUExBVEZPUk1GTEFHUykgJChDWFhGTEFHUykgLUwkKGxpYmRpcikKLStMREZMQUdTCQkJKz0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChsaWJkaXIpCi0gCi0gaWZkZWYgaWNlX3NyY19kaXN0Ci0gICAgIGlmZXEgKCQoaWNlX2NwcF9kaXIpLCAkKGljZV9kaXIpL2NwcCkKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb2MtaWNlL3plcm9jLWljZV8zLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvYy1pY2UvemVyb2MtaWNlXzMuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzgzM2IwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvYy1pY2UvemVyb2MtaWNlXzMuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEludGVybmV0IENvbW11bmljYXRpb25zIEVuZ2luZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9JQ0VfTElDRU5TRTttZDU9M2RjMzAzNzAyM2NjMmFlNmIyYzViOTk1ZGE1Mjk1MTUiCi1ERVBFTkRTID0gImJ6aXAyIGV4cGF0IG9wZW5zc2wgcHl0aG9uIGRiIG1jcHAiCi1ERVBFTkRTX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gInplcm9jLWljZS1uYXRpdmUgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuemVyb2MuY29tL2Rvd25sb2FkL0ljZS8zLjUvSWNlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1vZGlmeS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImYwMGM1OTk4M2NjOTA0YmNhOTc3MTMzYzBhOWIzZTgwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4OWU1MTE5NGM2YWRhZGJkMTU2ZGEzMjg4ZTM3YmFkODQ3YjkzYjNiODc2NTAyZTgzMDMzYjcwNDkzYWYzOTIiCi0KLSN8IE1hcERiLmNwcDogSW4gY29uc3RydWN0b3IgJ0ZyZWV6ZTo6TWFwRGI6Ok1hcERiKGNvbnN0IENvbm5lY3Rpb25JUHRyJiwgY29uc3Qgc3RyaW5nJiwgY29uc3Qgc3RyaW5nJiwgY29uc3Qgc3RyaW5nJiwgY29uc3QgS2V5Q29tcGFyZUJhc2VQdHImLCBjb25zdCBzdGQ6OnZlY3RvcjxJY2VVdGlsOjpIYW5kbGU8RnJlZXplOjpNYXBJbmRleEJhc2U+ID4mLCBib29sKSc6Ci0jfCBNYXBEYi5jcHA6MTM4OjQ2OiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdzZXRfYnRfY29tcGFyZShpbnQgKCopKERCKiwgY29uc3QgREJUKiwgY29uc3QgREJUKikpJyBpcyBhbWJpZ3VvdXMKLSN8IE1hcERiLmNwcDoxMzg6NDY6IG5vdGU6IGNhbmRpZGF0ZXMgYXJlOgotI3wgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9kYl9jeHguaDoyNzI6MTQ6IG5vdGU6IHZpcnR1YWwgaW50IERiOjpzZXRfYnRfY29tcGFyZShidF9jb21wYXJlX2Zjbl90eXBlKSA8bmVhciBtYXRjaD4KLSN8IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvZGJfY3h4Lmg6MjcyOjE0OiBub3RlOiAgIG5vIGtub3duIGNvbnZlcnNpb24gZm9yIGFyZ3VtZW50IDEgZnJvbSAnaW50ICgqKShEQiosIGNvbnN0IERCVCosIGNvbnN0IERCVCopIHtha2EgaW50ICgqKShfX2RiKiwgY29uc3QgX19kYl9kYnQqLCBjb25zdCBfX2RiX2RidCopfScgdG8gJ2J0X2NvbXBhcmVfZmNuX3R5cGUge2FrYSBpbnQgKCopKF9fZGIqLCBjb25zdCBfX2RiX2RidCosIGNvbnN0IF9fZGJfZGJ0KiwgbG9uZyB1bnNpZ25lZCBpbnQqKX0nCi0jfCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL2RiX2N4eC5oOjI3MzoxNDogbm90ZTogdmlydHVhbCBpbnQgRGI6OnNldF9idF9jb21wYXJlKGludCAoKikoRGIqLCBjb25zdCBEYnQqLCBjb25zdCBEYnQqLCBzaXplX3QqKSkgPG5lYXIgbWF0Y2g+Ci0jfCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL2RiX2N4eC5oOjI3MzoxNDogbm90ZTogICBubyBrbm93biBjb252ZXJzaW9uIGZvciBhcmd1bWVudCAxIGZyb20gJ2ludCAoKikoREIqLCBjb25zdCBEQlQqLCBjb25zdCBEQlQqKSB7YWthIGludCAoKikoX19kYiosIGNvbnN0IF9fZGJfZGJ0KiwgY29uc3QgX19kYl9kYnQqKX0nIHRvICdpbnQgKCopKERiKiwgY29uc3QgRGJ0KiwgY29uc3QgRGJ0Kiwgc2l6ZV90Kikge2FrYSBpbnQgKCopKERiKiwgY29uc3QgRGJ0KiwgY29uc3QgRGJ0KiwgbG9uZyB1bnNpZ25lZCBpbnQqKX0nCi0jfCBtYWtlWzNdOiAqKiogW01hcERiLm9dIEVycm9yIDEKLVBOQkxBQ0tMSVNUW3plcm9jLWljZV0gPz0gIkJST0tFTjogbm90IGNvbXBhdGlibGUgd2l0aCBkZWZhdWx0IGRiIHZlcnNpb24gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVMgPSAiJHtXT1JLRElSfS9JY2UtJHtQVn0iCi0KLWluaGVyaXQgcHl0aG9uLWRpciBwa2djb25maWcKLQotZXhwb3J0IFBZVEhPTl9WRVJTSU9OID0gInB5dGhvbjIuNyIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgUFlUSE9OX0xJQl9ESVI9IiR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IElDRV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBQWVRIT05fTElCX0RJUj0iJHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgSUNFX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IiCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGV4cG9ydCBQWVRIT05fSU5DTFVERV9ESVI9IiR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IFBZVEhPTl9MSUJfRElSPSIke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBJQ0VfSE9NRT0iJHtTfS9jcHAiCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1N9IGNwcAotICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBweQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBQWVRIT05fTElCX0RJUj0iJHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgSUNFX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IiCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotICAgIGV4cG9ydCBQWVRIT05fSU5DTFVERV9ESVI9IiR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IFBZVEhPTl9MSUJfRElSPSIke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBJQ0VfSE9NRT0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3VzciIKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgZXhwb3J0IElDRV9IT01FPSIke1N9L2NwcCIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7U30vY3BwIHByZWZpeD0ke0R9JHtwcmVmaXh9IGluc3RhbGwgaW5zdGFsbC1jb21tb24KLSAgICBvZV9ydW5tYWtlIC1DICR7U30vcHkgcHJlZml4PSR7RH0ke3ByZWZpeH0gaW5zdGFsbAotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uICR7UE59LXB5dGhvbi1kZXYgJHtQTn0tcHl0aG9uLWRiZyIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIke3ByZWZpeH0vbWFuL21hbjEiCi1GSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9LypMSUNFTlNFICR7bGliZGlyfS9JbXBvcnRLZXkuY2xhc3MgJHtwcmVmaXh9L1JFTEVBU0VfTk9URVMgJHtwcmVmaXh9L0NIQU5HRVMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7aW5jbHVkZWRpcn0gJHtwcmVmaXh9L3NsaWNlICR7cHJlZml4fS9jb25maWciCi1GSUxFU18ke1BOfS1weXRob24tZGV2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L0ljZVB5LnNvIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoucHkgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vSWNlUHkuc28uKiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9JY2UqLyoucHkiCi1GSUxFU18ke1BOfS1weXRob24tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L3NsaWNlKiAke2RhdGFkaXJ9L0ljZS0ke1BWfS9zbGljZS8qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1kYWVtb24tcHJveHkvMDAwMS1kYnVzLWRhZW1vbi1wcm94eS1SZXR1cm4tREJVU19IQU5ETEVSX1JFU1VMVF9OT1RfWUVULnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5LzAwMDEtZGJ1cy1kYWVtb24tcHJveHktUmV0dXJuLURCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzRjYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5LzAwMDEtZGJ1cy1kYWVtb24tcHJveHktUmV0dXJuLURCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDhlNmQxZjU5MGIxY2I0MzdkYzY3YzUxMjk4ZWYxNzIyYTcyNjZkMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxODozNzo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkYnVzLWRhZW1vbi1wcm94eTogUmV0dXJuIERCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVF9IQU5ETEVECisgZnJvbSBtYXN0ZXJfZmlsdGVyX2NiKCkgaWYgREJ1c0Nvbm5lY3Rpb24gaXMgbnVsbAorCitTbyBpdCBjYW4gYmUgcGFzc2VkIG9uIHRvIG90aGVyIGhhbmRsZXJzIHNpbmNlIHRoaXMgY291bGQKK25vdCBiZSBoYW5kbGVkIGhlcmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRidXMtZGFlbW9uLXByb3h5LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kYnVzLWRhZW1vbi1wcm94eS5jIGIvZGJ1cy1kYWVtb24tcHJveHkuYworaW5kZXggMDA5ZTRmZC4uZjNmMGQ4MCAxMDA2NDQKKy0tLSBhL2RidXMtZGFlbW9uLXByb3h5LmMKKysrKyBiL2RidXMtZGFlbW9uLXByb3h5LmMKK0BAIC0xMTUsNyArMTE1LDcgQEAgbWFzdGVyX2ZpbHRlcl9jYiAoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCisgICBndWludDMyIHNlcmlhbDsKKyAKKyAgIGlmICghZGJ1c19jb25uKQorLSAgICByZXR1cm47CisrICAgIERCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVF9IQU5ETEVEOworIAorICAgaWYgKHZlcmJvc2UpCisgICAgIGdfcHJpbnQgKCJOZXcgbWVzc2FnZSBmcm9tIHNlcnZlcjogdHlwZT0nJWQnIHBhdGg9JyVzJyBpZmFjZT0nJXMnIgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWRhZW1vbi1wcm94eV9naXQuYmIKaW5kZXggYTk1M2ViYy4uNDJjZDAzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1kYWVtb24tcHJveHlfZ2l0LmJiCkBAIC00LDIxICs0LDIwIEBACiBERVBFTkRTID0gImRidXMgZGJ1cy1nbGliIgogU1JDUkVWID0gIjEyMjZhMGExMzc0NjI4ZmYxOTFmNmQ4YTU2MDAwYmU1ZTUzZTc2MDgiCiBQViA9ICIwLjAuMCtnaXRyJHtTUkNQVn0iCi1QUiA9ICJyMSIKK1BSID0gInIxLjU5IgogCi1BU05FRURFRF9wbi1kYnVzLWRhZW1vbi1wcm94eSA9ICIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvbGxhYm9yYS5jby51ay9naXQvdXNlci9hbGJhbi9kYnVzLWRhZW1vbi1wcm94eSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hbGJhbi9kYnVzLWRhZW1vbi1wcm94eSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRidXMtZGFlbW9uLXByb3h5LVJldHVybi1EQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVQucGF0Y2ggXAorICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCitpbmhlcml0IHBrZ2NvbmZpZworCiBkb19jb21waWxlKCkgewotICAgICR7Q0N9ICR7TERGTEFHU30gYHBrZy1jb25maWcgLS1jZmxhZ3MgLS1saWJzIGRidXMtZ2xpYi0xYCAtbyBkYnVzLWRhZW1vbi1wcm94eSBkYnVzLWRhZW1vbi1wcm94eS5jCisgICAgJHtDQ30gJHtDRkxBR1N9IC1vIGRidXMtZGFlbW9uLXByb3h5IGRidXMtZGFlbW9uLXByb3h5LmMgYHBrZy1jb25maWcgLS1jZmxhZ3MgLS1saWJzIGRidXMtZ2xpYi0xYCAke0xERkxBR1N9CiB9CiAKIGRvX2luc3RhbGwoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAgICAgaW5zdGFsbCAtbSAwNzU1IGRidXMtZGFlbW9uLXByb3h5ICR7RH0ke2JpbmRpcn0KIH0KLQotCi1QTkJMQUNLTElTVFtkYnVzLWRhZW1vbi1wcm94eV0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MTMvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBkZjZlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF9naXQuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkVMTCBpcyBhIERCVVMgbGlicmFyeSB3aGljaCBwcm92aWRlcyBEQlVTIGJpbmRpbmdzLiIKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCitTRUNUSU9OID0gImxpYnMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjdiN2MxNWMyZTVjYWZmODhmYzQ1ZTdhOGI4NzRhNDcxOTZhMGVkZGQiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlicy9lbGwvZWxsLmdpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyICR7U30vYnVpbGQtYXV4Cit9CisKK0RFUEVORFMgPSAiZGJ1cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZmFrZXJvb3QvZmFrZXJvb3QtbmF0aXZlXzEuMTguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZmFrZXJvb3QvZmFrZXJvb3QtbmF0aXZlXzEuMTguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1MGVhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290LW5hdGl2ZV8xLjE4LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGZha2Vyb290XyR7UFZ9LmJiCi0KLVMgPSAiJHtXT1JLRElSfS9mYWtlcm9vdC0ke1BWfSIKLQotaW5oZXJpdCBuYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9IgotCi0jIENvbXBhdGFiaWxpdHkgZm9yIHRoZSByYXJlIHN5c3RlbXMgbm90IHVzaW5nIG9yIGhhdmluZyBTWVNWCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCdIT1NUX05PTlNZU1YnKSBhbmQgZC5nZXRWYXIoJ0hPU1RfTk9OU1lTVicpICE9ICcwJzoKLSAgICAgICAgZC5zZXRWYXIoJ0VYVFJBX09FQ09ORicsICcgLS13aXRoLWlwYz10Y3AgLS1wcm9ncmFtLXByZWZpeD0gJykKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eC1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290XzEuMTguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZmFrZXJvb3QvZmFrZXJvb3RfMS4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTc4N2UzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZmFrZXJvb3QvZmFrZXJvb3RfMS4xOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJHaXZlcyBhIGZha2Ugcm9vdCBlbnZpcm9ubWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9mYWtlcm9vdC5hbGlvdGguZGViaWFuLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL2YvZmFrZXJvb3QvZmFrZXJvb3RfJHtQVn0ub3JpZy50YXIuYnoyIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgbWtkaXIgLXAgJHtTfS9idWlsZC1hdXgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9mYWtlcm9vdAotICAgIGluc3RhbGwgLW0gNjQ0ICouaCAke0R9JHtpbmNsdWRlZGlyfS9mYWtlcm9vdAotfQotCi0jIGZha2Vyb290IG5lZWRzIGdldG9wdCB3aGljaCBpcyBwcm92aWRlZCBieSB0aGUgdXRpbC1saW51eCBwYWNrYWdlCi1SREVQRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4IgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MDYxNzFkOGQ1MjBiMWNhMTU3NmFjNzNmMmNlYjRmMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYTM1OWVmYTNlOTQ5NmMzMzIzNGIzZTljODkzMDZhMDliYjRkYTlkMzNkZTQzYzI2MWYxZDg0NDdlNmViZWEyIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8zNTE0My8KLVBOQkxBQ0tMSVNUW2Zha2Vyb290XSA/PSAiQlJPS0VOOiBRQSBJc3N1ZTogLWRldiBwYWNrYWdlIGNvbnRhaW5zIG5vbi1zeW1saW5rIC5zbyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYgppbmRleCA0MDFiM2IyLi45Y2M1NThmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbV8yLjUwLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41MC4xLmJiCkBAIC0yMyw2ICsyMywxMCBAQAogCiAgICAgaW5zdGFsbCAtbSAwNjQ0IGdsaWIvZ2xpYm1tY29uZmlnLmggJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNC8KICAgICBpbnN0YWxsIC1tIDA2NDQgc2NyaXB0cy9nbGlibW1fY2hlY2tfcGVybC5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyB8fCB0cnVlCisKKyAgICBmb3IgaSBpbiBnZW5lcmF0ZV93cmFwX2luaXQucGwgZ21tcHJvYzsgZG8KKyAgICAgICAgc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vZ2xpYm1tLTIuNC9wcm9jLyRpCisgICAgZG9uZQogfQogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0tY29tbW9uLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0tY29tbW9uLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MThjYzFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtLWNvbW1vbi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiSGVscGVyIHNjcmlwdCBmb3IgT0UncyBsbHZtIHN1cHBvcnQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIFwKLSIKLQotU1JDX1VSSSA9ICJmaWxlOi8vbGx2bS1jb25maWciCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbGx2bV9jb21tb25fc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1sbHZtX2NvbW1vbl9zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xsdm0tY29uZmlnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xsdm0tY29uZmlnICR7RH0ke2JpbmRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bS1jb21tb24vbGx2bS1jb25maWcgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bS1jb21tb24vbGx2bS1jb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjMzYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0tY29tbW9uL2xsdm0tY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmluL3NoCi0jIFdyYXBwZXIgc2NyaXB0IGZvciByZWFsIGxsdm0tY29uZmlnLiBTaW1wbHkgY2FsbHMKLQotaWYgWyAkV0FOVF9MTFZNX1JFTEVBU0UgXTsgdGhlbgotCWV4ZWMgYGRpcm5hbWUgJDBgLyR7VEFSR0VUX1BSRUZJWH1sbHZtLWNvbmZpZyRXQU5UX0xMVk1fUkVMRUFTRSAke0B9Ci1lbHNlCi0JZWNobyAiVG8gdXNlIGxsdm0tY29tbW9uIFdBTlRfTExWTV9SRUxFQVNFIG5lZWRzIHRvIGJlIGV4cG9ydGVkLiIKLQllY2hvICJGb3IgZXhhbXBsZSBpZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCB0aHJvdWdoIGEgcmVjaXBlOiIKLQllY2hvICJleHBvcnQgV0FOVF9MTFZNX1JFTEVBU0U9XCIzLjNcIiIKLQlleGl0IDEKLWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNzI2MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLSMgTExWTSBkb2VzIG5vdCBwcm92aWRlIEFCSSBzdGFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgdmVyc2lvbnMuIEZvciB0aGlzCi0jIHJlYXNvbiBPRSBtYWtlcyBpdCBwb3NzaWJsZSB0byBidWlsZCBhbmQgaW5zdGFsbCBkaWZmZXJlbnQgbGx2bSB2ZXJzaW9ucwotIyBhdCB0aGUgc2FtZSB0aW1lLgotIwotIyBUaGlzIGlzIHRydWUgZm9yIHRoZSBub3JtYWwgcmVjaXBlcyBhcyB3ZWxsIGFzIHRoZSBuYXRpdmUgb25lcy4KLSMKLSMgQWxsIHJlZ3VsYXIgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzIGFyZSBwcmVmaXhlZCB3aXRoICdsbHZtJHtMTFZNX1JFTEVBU0V9JwotIyBlLmcuICIke1NUQUdJTkdfQklORElSfS9sbHZtMi41IiBvciAiJHtTVEFHSU5HX0lOQ0RJUn0vbGx2bTIuNSIKLSMKLSMgRm9yIHlvdXIgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQgbWFrZXMgdXNlIG9mIGxsdm0geW91IGRvIHNob3VsZCBub3QgbmVlZCB0bwotIyBtb2RpZnkgYW55dGhpbmcgYXMgbG9uZyBhcyBpdCB1c2VzIHRoZSByZXN1bHRzIG9mIHZhcmlvdXMgbGx2bS1jb25maWcKLSMgaW52b2NhdGlvbnMuIElmIHlvdSBuZWVkIGN1c3RvbWl6YXRpb25zIHNvbWV0aGluZyBpcyB3cm9uZyBhbmQgaXQgbmVlZHMgdG8gYmUKLSMgZml4ZWQgKHJlcG9ydCBidWcpLgotIwotIyBIb3dldmVyIHRoZSAqcmVjaXBlKiBmb3IgeW91ciBwcm9ncmFtL2xpYnJhcnkgKm11c3QqIGRlY2xhcmUKLSMgZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFID0gIjx2YWxpZCB2ZXJzaW9uIG51bWJlcj4iCi0jIFRoZSB2ZXJzaW9uIG51bWJlciBpcyBwaWNrZWQgdXAgYnkgYSBnZW5lcmljIHdyYXBwZXIgc2NyaXB0IHdoaWNoIGp1c3QgY2FsbHMKLSMgdGhlIHZhcmlhbnQgb2YgdGhlIHNwZWNpZmllZCB2ZXJzaW9uLgotCi1ERVNDUklQVElPTiA9ICJUaGUgTG93IExldmVsIFZpcnR1YWwgTWFjaGluZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9sbHZtLm9yZyIKLQotIyAzLWNsYXVzZSBCU0QtbGlrZQotIyBVbml2ZXJzaXR5IG9mIElsbGlub2lzL05DU0EgT3BlbiBTb3VyY2UgTGljZW5zZQotTElDRU5TRSA9ICJOQ1NBIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PWQwYTNlZjBkM2UwZThmNWNmNTllNWZmYzI3M2FiMWY4IgotCi1ERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyLW5hdGl2ZSBsbHZtLWNvbW1vbiIKLQotaW5oZXJpdCBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBhdXRvdG9vbHMKLQotTExWTV9SRUxFQVNFID0gIiR7UFZ9IgotTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGx2bS5vcmcvcmVsZWFzZXMvJHtQVn0vbGx2bS0ke1BWfS5zcmMudGFyLmd6IgotUyA9ICIke1dPUktESVJ9L2xsdm0tJHtQVn0uc3JjIgotCi1MTFZNX0JVSUxEX0RJUiA9ICIke1dPUktESVJ9L2xsdm0tJHtQVn0uYnVpbGQiCi1MTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1hc3NlcnRpb25zIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtZGVidWctcnVudGltZSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1leHBlbnNpdmUtY2hlY2tzIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZGluZ3M9bm9uZSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWtlZXAtc3ltYm9scyBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYmZmaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9wdGltaXplZCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRhcmdldHM9aG9zdC1vbmx5IgotRVhUUkFfT0VNQUtFICs9ICJSRVFVSVJFU19SVFRJPTEgVkVSQk9TRT0xIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIFJlbW92ZSBSUEFUSHMKLSAgICBzZWQgLWkgJ3M6JChSUEFUSCkgLVdsLCQoXChUb29sRGlyXHxMaWJEaXJcfEV4bXBsRGlyXCkpOjpnJyAke1N9L01ha2VmaWxlLnJ1bGVzCi0KLSAgICAjIERyb3AgInN2biIgc3VmZml4IGZyb20gdmVyc2lvbiBzdHJpbmcKLSAgICBzZWQgLWkgJ3MvJHtQVn1zdm4vJHtQVn0vZycgJHtTfS9jb25maWd1cmUKLQotICAgICMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCi0gICAgc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCi0gICAgc2VkIC1yaSAicyMvKGJpbnxpbmNsdWRlfGxpYikoLz9cIikjL1wxLyR7TExWTV9ESVJ9XDIjZyIgJHtTfS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKLQotICAgICMgRml4IHRoZSBoYXJkY29kZWQgbGliZGlyIGluIGxsdm0tY29uZmlnCi0gICAgc2VkIC1pICdzOi9saWJcPjovJHtiYXNlbGlifTpnJyAke1N9L3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAotCi0gICAgIyBGYWlscyB0byBidWlsZCB1bmxlc3MgdXNpbmcgc2VwYXJhdGUgZGlyZWN0b3J5IGZyb20gc291cmNlCi0gICAgbWtkaXIgLXAgJHtMTFZNX0JVSUxEX0RJUn0KLSAgICBjZCAke0xMVk1fQlVJTERfRElSfQotfQotCi1kb19jb21waWxlKCkgewotICAgIGNkICR7TExWTV9CVUlMRF9ESVJ9Ci0KLSAgICAjIEZpeCBsaWJkaXIgZm9yIG11bHRpbGliCi0gICAgc2VkIC1pICdzOihQUk9KX3ByZWZpeCkvbGliOihQUk9KX3ByZWZpeCkvJHtiYXNlbGlifTpnJyBNYWtlZmlsZS5jb25maWcKLQotICAgIG9lX3J1bm1ha2UgXAotICAgICAgICBBUj0iJHtCVUlMRF9BUn0iIFwKLSAgICAgICAgQ0M9IiR7QlVJTERfQ0N9IiBcCi0gICAgICAgIENGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IiBcCi0gICAgICAgIENYWD0iJHtCVUlMRF9DWFh9IiBcCi0gICAgICAgIENYWEZMQUdTPSIke0JVSUxEX0NYWEZMQUdTfSIgXAotICAgICAgICBDUFA9IiR7QlVJTERfQ1BQfSIgXAotICAgICAgICBDUFBGTEFHUz0iJHtCVUlMRF9DUFBGTEFHU30iIFwKLSAgICAgICAgTk09IiR7QlVJTERfTk19IiBcCi0gICAgICAgIFJBTkxJQj0iJHtCVUlMRF9SQU5MSUJ9IiBcCi0gICAgICAgIFBBVEg9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfTokUEFUSCIgXAotICAgICAgICBjcm9zcy1jb21waWxlLWJ1aWxkLXRvb2xzCi0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGNkICR7TExWTV9CVUlMRF9ESVJ9Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7TExWTV9JTlNUQUxMX0RJUn0gaW5zdGFsbAotCi0gICAgbXYgJHtMTFZNX0lOU1RBTExfRElSfSR7YmluZGlyfS8ke0hPU1RfU1lTfS1sbHZtLWNvbmZpZy1ob3N0ICR7TExWTV9JTlNUQUxMX0RJUn0vbGx2bS1jb25maWctaG9zdAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7TExWTV9ESVJ9Ci0gICAgbXYgJHtMTFZNX0lOU1RBTExfRElSfSR7YmluZGlyfS8qICR7RH0ke2JpbmRpcn0vJHtMTFZNX0RJUn0vCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7TExWTV9ESVJ9Ci0gICAgbXYgJHtMTFZNX0lOU1RBTExfRElSfSR7aW5jbHVkZWRpcn0vKiAke0R9JHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfS8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfQotICAgIG12ICR7TExWTV9JTlNUQUxMX0RJUn0ke2xpYmRpcn0vKiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9LwotICAgIGxuIC1zICR7TExWTV9ESVJ9L2xpYkxMVk0tJHtQVn0uc28gJHtEfSR7bGliZGlyfS9saWJMTFZNLSR7UFZ9LnNvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtMTFZNX0RJUn0KLSAgICBtdiAke0xMVk1fSU5TVEFMTF9ESVJ9JHtwcmVmaXh9L2RvY3MvbGx2bS8qICR7RH0ke2RvY2Rpcn0vJHtMTFZNX0RJUn0KLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJsbHZtX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotbGx2bV9zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0gICAgbXYgJHtMTFZNX0lOU1RBTExfRElSfS9sbHZtLWNvbmZpZy1ob3N0ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vbGx2bS1jb25maWcke1BWfQotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tYnVncG9pbnRwYXNzZXMgJHtQTn0tbGx2bWhlbGxvIgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiIKLUZJTEVTXyR7UE59LWRiZyA9ICIgXAotICAgICR7YmluZGlyfS8ke0xMVk1fRElSfS8uZGVidWcgXAotICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS8uZGVidWcvQnVncG9pbnRQYXNzZXMuc28gXAotICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS8uZGVidWcvTExWTUhlbGxvLnNvIFwKLSAgICAvdXNyL3NyYy9kZWJ1ZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiA9ICIgXAotICAgICR7YmluZGlyfS8ke0xMVk1fRElSfSBcCi0gICAgJHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfSBcCi0iCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWJ1Z3BvaW50cGFzc2VzICR7UE59LWxsdm1oZWxsbyIKLQotRklMRVNfJHtQTn0tYnVncG9pbnRwYXNzZXMgPSAiXAotICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS9CdWdwb2ludFBhc3Nlcy5zbyBcCi0iCi1GSUxFU18ke1BOfS1sbHZtaGVsbG8gPSAiXAotICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS9MTFZNSGVsbG8uc28gXAotIgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJsbHZtJHtMTFZNX1JFTEVBU0V9LS4qJCIKLU5PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgotCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmxsdm0ke0xMVk1fUkVMRUFTRX0tbGx2bS0ke0xMVk1fUkVMRUFTRX0gKz0gImRldi1zbyIKLQotcHl0aG9uIGxsdm1fcG9wdWxhdGVfcGFja2FnZXMoKSB7Ci0gICAgbGliZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZGlyfScsIGQpCi0gICAgbGlibGx2bV9saWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9LyR7TExWTV9ESVJ9JywgZCkKLSAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJsbHZtX2xpYmRpcisnLy5kZWJ1ZycsICdebGliKC4qKVwuc28kJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMtZGJnJywgJ1NwbGl0IGRlYnVnIHBhY2thZ2UgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlKQotICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWJsbHZtJHtMTFZNX1JFTEVBU0V9LSVzJywgJ1NwbGl0IHBhY2thZ2UgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlLCBhbGxvd19saW5rcz1UcnVlLCByZWN1cnNpdmU9VHJ1ZSkKLSAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJsbHZtX2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWJsbHZtJHtMTFZNX1JFTEVBU0V9LSVzLXN0YXRpY2RldicsICdTcGxpdCBzdGF0aWNkZXYgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUpCi0gICAgaWYgc3BsaXRfcGFja2FnZXM6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiwgJyAnKycgJy5qb2luKHNwbGl0X3BhY2thZ2VzKSkKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiArICctZGJnJywgJyAnKycgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJysnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQotfQotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gImxsdm1fcG9wdWxhdGVfcGFja2FnZXMgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjMvUmVtb3ZlLWVycm9yLW91dHB1dC1mcm9tLWNvbmZpZ3VyZS1pZi1DRkxBR1MtaXMtc2V0LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL1JlbW92ZS1lcnJvci1vdXRwdXQtZnJvbS1jb25maWd1cmUtaWYtQ0ZMQUdTLWlzLXNldC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mzg3ZTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjMvUmVtb3ZlLWVycm9yLW91dHB1dC1mcm9tLWNvbmZpZ3VyZS1pZi1DRkxBR1MtaXMtc2V0LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gZDRiZjdhMzg1M2RhYjEyYzExY2JmYzgwODhmZDc2ZjU0OGE4ZDAxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpayBIYWdnbHVuZCA8cGF0cmlrLmguaGFnZ2x1bmRAZXJpY3Nzb24uY29tPgotRGF0ZTogVHVlLCAyNCBTZXAgMjAxMyAxMTozODo0NSArMDAwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgZXJyb3Igb3V0cHV0IGZyb20gY29uZmlndXJlIGlmIENGTEFHUyBpcyBzZXQgKHIxNzQzMTMpLgotCi1UaGlzIGZpeGVzIFBSMTY3MjQuCi0KLWdpdC1zdm4taWQ6IGh0dHBzOi8vbGx2bS5vcmcvc3ZuL2xsdm0tcHJvamVjdC9sbHZtL3RydW5rQDE5MTI4OSA5MTE3NzMwOC0wZDM0LTA0MTAtYjVlNi05NjIzMWIzYjgwZDgKLQotaHR0cHM6Ly9naXRodWIuY29tL2xsdm0tbWlycm9yL2xsdm0vY29tbWl0L2Q0YmY3YTM4NTNkYWIxMmMxMWNiZmM4MDg4ZmQ3NmY1NDhhOGQwMTcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gYXV0b2NvbmYvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gY29uZmlndXJlICAgICAgICAgICAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvY29uZi9jb25maWd1cmUuYWMgYi9hdXRvY29uZi9jb25maWd1cmUuYWMKLWluZGV4IGY5YzM2NWMuLjQ1ZjJmZTQgMTAwNjQ0Ci0tLS0gYS9hdXRvY29uZi9jb25maWd1cmUuYWMKLSsrKyBiL2F1dG9jb25mL2NvbmZpZ3VyZS5hYwotQEAgLTYxLDggKzYxLDggQEAgZmkKLSAKLSBkbmwgRGVmYXVsdCB0byBlbXB0eSAoaS5lLiBhc3NpZ25pbmcgdGhlIG51bGwgc3RyaW5nIHRvKSBDRkxBR1MgYW5kIENYWEZMQUdTLAotIGRubCBpbnN0ZWFkIG9mIHRoZSBhdXRvY29uZiBkZWZhdWx0IChmb3IgZXhhbXBsZSwgJy1nIC1PMicgZm9yIENDPWdjYykuCi0tJHtDRkxBR1M9fQotLSR7Q1hYRkxBR1M9fQotKzogJHtDRkxBR1M9fQotKzogJHtDWFhGTEFHUz19Ci0gCi0gZG5sIFdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoZSBjb21waWxlciB1cCBoZXJlIHRvIGF2b2lkIGFueXRoaW5nIGVsc2UKLSBkbmwgc3RhcnRpbmcgd2l0aCBhIGRpZmZlcmVudCBvbmUuCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBmM2E2NTk0Li45MDkwY2RhIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0xOTkyLDggKzE5OTIsOCBAQCBlY2hvICIkYXNfbWU6IGVycm9yOiBBbHJlYWR5IGNvbmZpZ3VyZWQgaW4gJHtzcmNkaXJ9IiA+JjI7fQotICAgZmkKLSBmaQotIAotLSR7Q0ZMQUdTPX0KLS0ke0NYWEZMQUdTPX0KLSs6ICR7Q0ZMQUdTPX0KLSs6ICR7Q1hYRkxBR1M9fQotIAotIGFjX2V4dD1jCi0gYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjMvYXJtX2ZlbnZfdWNsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjMvYXJtX2ZlbnZfdWNsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2FlNDk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL2FybV9mZW52X3VjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUluZGV4OiBsbHZtLTIuOS9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GRW52LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsbHZtLTIuOS5vcmlnL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZFbnYuaAkyMDEwLTExLTI5IDIwOjQ0OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGxsdm0tMi45L2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZFbnYuaAkyMDExLTExLTE4IDE4OjQyOjIyLjU4MDE2MTI5NyArMDEwMAotQEAgLTE3LDYgKzE3LDkgQEAKLSAKLSAjaW5jbHVkZSAibGx2bS9Db25maWcvY29uZmlnLmgiCi0gI2luY2x1ZGUgPGNlcnJubz4KLSsKLSsjdW5kZWYgSEFWRV9GRU5WX0gKLSsKLSAjaWZkZWYgSEFWRV9GRU5WX0gKLSAjaW5jbHVkZSA8ZmVudi5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjNfMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0zLjNfMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGEyMjIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgbGx2bS5pbmMKLQotREVQRU5EUyArPSAiemxpYiIKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtemxpYiIKLQotU1JDX1VSSSArPSAiZmlsZTovL1JlbW92ZS1lcnJvci1vdXRwdXQtZnJvbS1jb25maWd1cmUtaWYtQ0ZMQUdTLWlzLXNldC0ucGF0Y2giCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiBmaWxlOi8vYXJtX2ZlbnZfdWNsaWJjLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwNTY0ZTFkYzM5MGY5ODQ0ZjE3MTFjMDhiMDhlMzkxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4NzY2YjFlNzBkMDVhMjVlMmY1MDJlOTk3YTNjYjM5MzcxODdhMzI5NjU5NWNmNmUwOTc3ZDVjZDY3Mjc1NzgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3I2MDBdID0gIi0tZW5hYmxlLWV4cGVyaW1lbnRhbC10YXJnZXRzPVI2MDAsLCwiCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotIyB8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OjIyOiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc3RtZGIgc3AhLHtyMCxyMSxyMixyMyxscn0nCi0jIHwge3N0YW5kYXJkIGlucHV0fTozMTogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZG1pYSBzcCEse3IwLHIxLHIyLHIzLGxyfScKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OjMyOiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGxkciBwYyxbc3BdLCM0JwotIyB8IG1ha2VbM106ICoqKiBbL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvbGx2bTMuMy8zLjMtcjAvbGx2bS0zLjMuYnVpbGQvbGliL1RhcmdldC9BUk0vUmVsZWFzZS9BUk1KSVRJbmZvLm9dIEVycm9yIDEKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNpYy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzaWMuYmIKaW5kZXggYTUzZmE2OS4uYjEyMTgzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNpYy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2ljLmJiCkBAIC0zLDcgKzMsNyBAQAogCiBTVU1NQVJZID0gIkJhc2ljIHRhc2sgdG8gZ2V0IGEgZGV2aWNlIG9ubGluZSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogUFIgPSAicjEzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJvb3QuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJvb3QuYmIKaW5kZXggYTU0MmFlNC4uM2FlN2E0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ib290LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYm9vdC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiQmFzaWMgdGFzayB0byBnZXQgYSBkZXZpY2UgYm9vdGluZyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogUFIgPSAicjU4IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNsaS10b29scy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY2xpLXRvb2xzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTdmOWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY2xpLXRvb2xzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNldCBvZiB1c2VmdWwgY29tbWFuZCBsaW5lIHRvb2xzIgotU1VNTUFSWV8ke1BOfS1kZWJ1ZyA9ICJBIHNldCBvZiBjb21tYW5kIGxpbmUgdG9vbHMgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCi1TRUNUSU9OID0gImNvbnNvbGUiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotUFYgPSAiMS4wIgotUFIgPSAicjIxIgotCi1pbmhlcml0IHBhY2thZ2Vncm91cCBhbGxhcmNoCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1kZWJ1ZyIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIGRidXMtZGFlbW9uLXByb3h5IFwKLSAgICBkb3Nmc3Rvb2xzIFwKLSAgICBodG9wIFwKLSAgICBpcHRhYmxlcyBcCi0gICAgbHNvZiBcCi0gICAgbWJ1ZmZlciBcCi0gICAgbXRkLXV0aWxzIFwKLSAgICBuYW5vIFwKLSAgICBuZnMtdXRpbHMtY2xpZW50IFwKLSAgICBubW9uIFwKLSAgICBwb3dlcnRvcCBcCi0gICAgc2NyZWVuIFwKLSAgICBzb2NhdCBcCi0gICAgc3lzc3RhdCBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWRlYnVnID0gIlwKLSAgICBldnRlc3QgXAotICAgIGRldm1lbTIgXAotICAgIGkyYy10b29scyBcCi0gICAgZ2RiIFwKLSAgICBwcm9jcHMgXAotICAgIHB4YXJlZ3MgXAotICAgIHMzYzI0eHgtZ3BpbyBcCi0gICAgczNjNjR4eC1ncGlvIFwKLSAgICBzZXJpYWwtZm9yd2FyZCBcCi0gICAgc3RyYWNlIFwKLSIKLQotUlJFQ09NTUVORFNfJHtQTn0tZGVidWcgPSAiXAotICAgIGx0cmFjZSBcCi0iCi0KLVBOQkxBQ0tMSVNUW3BhY2thZ2Vncm91cC1jbGktdG9vbHNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZGJ1cy1kYWVtb24tcHJveHkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW3BhY2thZ2Vncm91cC1jbGktdG9vbHNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgcGFja2FnZWdyb3VwLWNsaS10b29scyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcHJveHktbGliaW50bC9wcm94eS1saWJpbnRsLTIwMTAwOTAyL3NvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcHJveHktbGliaW50bC9wcm94eS1saWJpbnRsLTIwMTAwOTAyL3NvbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRmMjMyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3Byb3h5LWxpYmludGwvcHJveHktbGliaW50bC0yMDEwMDkwMi9zb25hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1JbmRleDogcHJveHktbGliaW50bC0yMDA4MDQxOC1yNi9zcmMvcHJveHktbGliaW50bC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHByb3h5LWxpYmludGwtMjAwODA0MTgtcjYub3JpZy9zcmMvcHJveHktbGliaW50bC9NYWtlZmlsZQkyMDEwLTA3LTI1IDA4OjQwOjIyLjg5MzYyMDAwMSAtMDcwMAotKysrIHByb3h5LWxpYmludGwtMjAwODA0MTgtcjYvc3JjL3Byb3h5LWxpYmludGwvTWFrZWZpbGUJMjAxMC0wNy0yNSAxMDo1MToyOS41NzM2MjAwMDAgLTA3MDAKLUBAIC02LDE2ICs2LDEzIEBAIENGTEFHUyA9IC1XYWxsIC1JIC4uLy4uL2luY2x1ZGUKLSAKLSBhbGwgOiAuLi8uLi9saWIvbGliaW50bC5zbyAuLi8uLi9saWIvaW50bC5saWIKLSAKLS0uLi8uLi9saWIvbGliaW50bC5zbyA6IGxpYmludGwubwotLQkkKENDKSAtc2hhcmVkIC1vICRAIGxpYmludGwubwotKy4uLy4uL2xpYi9saWJpbnRsLnNvIDogbGliaW50bC5jCi0rCSQoQ0MpICQoQ0ZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lIC1XbCxsaWJpbnRsLnNvIC1vICRAICQ8Ci0gCi0gLi4vLi4vbGliL2ludGwubGliIDogLi4vLi4vbGliL2xpYmludGwuc28KLSAJY3AgLi4vLi4vbGliL2xpYmludGwuc28gJEAKLSAJJChTVFJJUCkgLS1zdHJpcC11bm5lZWRlZCAkQAotIAotLWxpYmludGwubyA6IGxpYmludGwuYwotLQkkKENDKSAkKENGTEFHUykgLWMgbGliaW50bC5jCi0tCi0gY2xlYW4gOgotIAlybSAtZiAqLm8gLi4vLi4vbGliL2xpYmludGwuc28gLi4vLi4vJChaSVBGSUxFKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94XzAuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94XzAuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Q0NGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLVNVTU1BUlkgPSAiVG95Ym94IGNvbWJpbmVzIGNvbW1vbiB1dGlsaXRpZXMgdG9nZXRoZXIgaW50byBhIHNpbmdsZSBleGVjdXRhYmxlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGFuZGxleS5uZXQvdG95Ym94LyIKLURFUEVORFMgPSAiYXR0ciIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cubGFuZGxleS5uZXQvdG95Ym94L2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZmYTJhMDAxNDAyY2IwNjdiYTU0MWUwZDg5NDhkYTUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2NDY5YjUwODIyNGUwZDJlNDU2NGRkYTA1YzRiYjQ3YWVmNWMyOGJmMjlkNmM5ODNiY2RjNmUzYTBjZDI5ZDYiCi0KLUxJQ0VOU0UgPSAiQlNELTAtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjBiOGIzZGQ2NDMxYmNhYTI0NWRhMGEwOGJkMGQ1MTEiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotVE9ZQk9YX0JJTiA9ICJnZW5lcmF0ZWQvdW5zdHJpcHBlZC90b3lib3giCi0KLUVYVFJBX09FTUFLRSA9ICdIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IicKLQotZG9fY29uZmlndXJlKCkgewotICAgIG9lX3J1bm1ha2UgZGVmY29uZmlnCi0KLSAgICAjIERpc2FibGUga2lsbGFsbDUgYXMgaXQgaXNuJ3QgbWFuYWdlZCBieSB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0gICAgc2VkIC1lICdzL0NPTkZJR19LSUxMQUxMNT15LyMgQ09ORklHX0tJTExBTEw1IGlzIG5vdCBzZXQvJyAtaSAuY29uZmlnCi0KLSAgICAjIERpc2FibGUgc3dhcG9uIGFzIGl0IGRvZXNuJ3QgaGFuZGxlIHRoZSAnLWEnIGFyZ3VtZW50IHVzZWQgZHVyaW5nIGJvb3QKLSAgICBzZWQgLWUgJ3MvQ09ORklHX1NXQVBPTj15LyMgQ09ORklHX1NXQVBPTiBpcyBub3Qgc2V0LycgLWkgLmNvbmZpZwotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgJHtUT1lCT1hfQklOfQotCi0gICAgIyBDcmVhdGUgYSBsaXN0IG9mIGxpbmtzIG5lZWRlZAotICAgICR7QlVJTERfQ0N9IC1JIC4gc2NyaXB0cy9pbnN0YWxsLmMgLW8gZ2VuZXJhdGVkL2luc3RsaXN0Ci0gICAgLi9nZW5lcmF0ZWQvaW5zdGxpc3QgbG9uZyB8IHNlZCAtZSAncyNeIy8jJyA+IHRveWJveC5saW5rcwotfQotCi1kb19pbnN0YWxsKCkgewotICAgICMgSW5zdGFsbCBtYW51YWxseSBpbnN0ZWFkIG9mIHVzaW5nICdtYWtlIGluc3RhbGwnCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBpZiBncmVwIC1xICJDT05GSUdfVE9ZQk9YX1NVSUQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLW0gNDc1NSAke0J9LyR7VE9ZQk9YX0JJTn0gJHtEfSR7YmFzZV9iaW5kaXJ9L3RveWJveAotICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vJHtUT1lCT1hfQklOfSAke0R9JHtiYXNlX2JpbmRpcn0vdG95Ym94Ci0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtCfS90b3lib3gubGlua3MgJHtEfSR7c3lzY29uZmRpcn0KLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLSMgSWYgeW91J3ZlIGNob3NlbiB0byBpbnN0YWxsIHRveWJveCB5b3UgcHJvYmFibHkgd2FudCBpdCB0byB0YWtlIHByZWNlZGVuY2UKLSMgb3ZlciBidXN5Ym94IHdoZXJlIHBvc3NpYmxlIGJ1dCBub3Qgb3ZlciBvdGhlciBwYWNrYWdlcwotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCi0KLXB5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQgKCkgewotICAgICMgUmVhZCBsaW5rcyBmcm9tIC9ldGMvdG95Ym94LmxpbmtzIGFuZCBjcmVhdGUgYXBwcm9wcmlhdGUKLSAgICAjIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdmFyaWFibGVzCi0KLSAgICBkdmFyID0gZC5nZXRWYXIoJ0QnKQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICB0YXJnZXQgPSAiL2Jpbi90b3lib3giCi0KLSAgICBmID0gb3BlbignJXMvZXRjL3RveWJveC5saW5rcycgJSAoZHZhciksICdyJykKLSAgICBmb3IgYWx0X2xpbmtfbmFtZSBpbiBmOgotICAgICAgICBhbHRfbGlua19uYW1lID0gYWx0X2xpbmtfbmFtZS5zdHJpcCgpCi0gICAgICAgIGFsdF9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShhbHRfbGlua19uYW1lKQotICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMnICUgKHBuKSwgJyAnICsgYWx0X25hbWUpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgYWx0X25hbWUsIGFsdF9saW5rX25hbWUpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgYWx0X25hbWUsIHRhcmdldCkKLSAgICBmLmNsb3NlKCkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4Zjk3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiCkBAIC0wLDAgKzEsNzUgQEAKK1NVTU1BUlkgPSAiVG95Ym94IGNvbWJpbmVzIGNvbW1vbiB1dGlsaXRpZXMgdG9nZXRoZXIgaW50byBhIHNpbmdsZSBleGVjdXRhYmxlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGFuZGxleS5uZXQvdG95Ym94LyIKK0RFUEVORFMgPSAiYXR0ciIKKworTElDRU5TRSA9ICJCU0QtMC1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mMGI4YjNkZDY0MzFiY2FhMjQ1ZGEwYTA4YmQwZDUxMSIKKworUFYgPSAiMC43LjQrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI3ODI4OTIwMzAzMWFmYzIzNTg1MDM1YzM2MmJlZWMxMGRiNTQ5NThkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xhbmRsZXkvdG95Ym94O3Byb3RvY29sPWh0dHBzIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworU0VDVElPTiA9ICJiYXNlIgorCitUT1lCT1hfQklOID0gImdlbmVyYXRlZC91bnN0cmlwcGVkL3RveWJveCIKKworRVhUUkFfT0VNQUtFID0gJ0hPU1RDQz0iJHtCVUlMRF9DQ30iIENQVVM9JHtAb2UudXRpbHMuY3B1X2NvdW50KCl9JworCitkb19jb25maWd1cmUoKSB7CisgICAgb2VfcnVubWFrZSBkZWZjb25maWcKKworICAgICMgRGlzYWJsZSBraWxsYWxsNSBhcyBpdCBpc24ndCBtYW5hZ2VkIGJ5IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKyAgICBzZWQgLWUgJ3MvQ09ORklHX0tJTExBTEw1PXkvIyBDT05GSUdfS0lMTEFMTDUgaXMgbm90IHNldC8nIC1pIC5jb25maWcKKworICAgICMgRGlzYWJsZSBzd2Fwb24gYXMgaXQgZG9lc24ndCBoYW5kbGUgdGhlICctYScgYXJndW1lbnQgdXNlZCBkdXJpbmcgYm9vdAorICAgIHNlZCAtZSAncy9DT05GSUdfU1dBUE9OPXkvIyBDT05GSUdfU1dBUE9OIGlzIG5vdCBzZXQvJyAtaSAuY29uZmlnCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSAke1RPWUJPWF9CSU59CisKKyAgICAjIENyZWF0ZSBhIGxpc3Qgb2YgbGlua3MgbmVlZGVkCisgICAgJHtCVUlMRF9DQ30gLUkgLiBzY3JpcHRzL2luc3RhbGwuYyAtbyBnZW5lcmF0ZWQvaW5zdGxpc3QKKyAgICAuL2dlbmVyYXRlZC9pbnN0bGlzdCBsb25nIHwgc2VkIC1lICdzI14jLyMnID4gdG95Ym94LmxpbmtzCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgIyBJbnN0YWxsIG1hbnVhbGx5IGluc3RlYWQgb2YgdXNpbmcgJ21ha2UgaW5zdGFsbCcKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorICAgIGlmIGdyZXAgLXEgIkNPTkZJR19UT1lCT1hfU1VJRD15IiAke0J9Ly5jb25maWc7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSA0NzU1ICR7Qn0vJHtUT1lCT1hfQklOfSAke0R9JHtiYXNlX2JpbmRpcn0vdG95Ym94CisgICAgZWxzZQorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ke1RPWUJPWF9CSU59ICR7RH0ke2Jhc2VfYmluZGlyfS90b3lib3gKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke0J9L3RveWJveC5saW5rcyAke0R9JHtzeXNjb25mZGlyfQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworIyBJZiB5b3UndmUgY2hvc2VuIHRvIGluc3RhbGwgdG95Ym94IHlvdSBwcm9iYWJseSB3YW50IGl0IHRvIHRha2UgcHJlY2VkZW5jZQorIyBvdmVyIGJ1c3lib3ggd2hlcmUgcG9zc2libGUgYnV0IG5vdCBvdmVyIG90aGVyIHBhY2thZ2VzCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCAoKSB7CisgICAgIyBSZWFkIGxpbmtzIGZyb20gL2V0Yy90b3lib3gubGlua3MgYW5kIGNyZWF0ZSBhcHByb3ByaWF0ZQorICAgICMgdXBkYXRlLWFsdGVybmF0aXZlcyB2YXJpYWJsZXMKKworICAgIGR2YXIgPSBkLmdldFZhcignRCcpCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIHRhcmdldCA9ICIvYmluL3RveWJveCIKKworICAgIGYgPSBvcGVuKCclcy9ldGMvdG95Ym94LmxpbmtzJyAlIChkdmFyKSwgJ3InKQorICAgIGZvciBhbHRfbGlua19uYW1lIGluIGY6CisgICAgICAgIGFsdF9saW5rX25hbWUgPSBhbHRfbGlua19uYW1lLnN0cmlwKCkKKyAgICAgICAgYWx0X25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGFsdF9saW5rX25hbWUpCisgICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcycgJSAocG4pLCAnICcgKyBhbHRfbmFtZSkKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBhbHRfbmFtZSwgYWx0X2xpbmtfbmFtZSkKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCBhbHRfbmFtZSwgdGFyZ2V0KQorICAgIGYuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvLmdpdGlnbm9yZQppbmRleCBiOGEwOGY4Li5iMDM0YzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvLmdpdGlnbm9yZQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvLmdpdGlnbm9yZQpAQCAtMyw2ICszLDggQEAKICEqLmluZGlyZWN0aW9uc3ltbGluawogISouW2NoXQogISoubWsKKyEqLnBhdGNoCishKi5zZXJ2aWNlCiAhTk9USUNFCiAhTU9EVUxFX0xJQ0VOU0VfKgogIS9zeXN0ZW0vCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvMDAwMS1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDEtYWRkLWJhc2U2NC1pbXBsZW1lbnRhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODBkMjFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDEtYWRkLWJhc2U2NC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDM1MSBAQAorRnJvbSBiYmViNzJmMTFjNjRmMTkwYjIzYWJiZWQ1ZjQ0MzExYmQwMjFiZGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTU6NDY6MzggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGFkZCBiYXNlNjQgaW1wbGVtZW50YXRpb24KKworbXVzbCBuZWVkcyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzdGVtL2NvcmUvYWRiL2FkYl9hdXRoX2NsaWVudC5jIHwgICAyICstCisgc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jICAgICAgICAgIHwgMzE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAzMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXN0ZW0vY29yZS9hZGIvYmFzZTY0LmMKKworZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYyBiL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYworaW5kZXggNTVlOWRjYS4uMTA0YjQxMyAxMDA2NDQKKy0tLSBhL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYworKysrIGIvc3lzdGVtL2NvcmUvYWRiL2FkYl9hdXRoX2NsaWVudC5jCitAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgdm9pZCByZWFkX2tleXMoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IGxpc3Rub2RlICpsaXN0KQorICAgICAgICAgaWYgKHNlcCkKKyAgICAgICAgICAgICAqc2VwID0gJ1wwJzsKKyAKKy0gICAgICAgIHJldCA9IF9fYjY0X3B0b24oYnVmLCAodV9jaGFyICopJmtleS0+a2V5LCBzaXplb2Yoa2V5LT5rZXkpICsgNCk7CisrICAgICAgICByZXQgPSBiNjRfcHRvbihidWYsICh1X2NoYXIgKikma2V5LT5rZXksIHNpemVvZihrZXktPmtleSkgKyA0KTsKKyAgICAgICAgIGlmIChyZXQgIT0gc2l6ZW9mKGtleS0+a2V5KSkgeworICAgICAgICAgICAgIEQoIiVzOiBJbnZhbGlkIGJhc2U2NCBkYXRhIHJldD0lZFxuIiwgZmlsZSwgcmV0KTsKKyAgICAgICAgICAgICBmcmVlKGtleSk7CitkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jIGIvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOTVkYTI4NAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jCitAQCAtMCwwICsxLDMxNSBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAxOTk2LTE5OTkgYnkgSW50ZXJuZXQgU29mdHdhcmUgQ29uc29ydGl1bS4KKysgKgorKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKKysgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgorKyAqCisrICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIElOVEVSTkVUIFNPRlRXQVJFIENPTlNPUlRJVU0gRElTQ0xBSU1TCisrICogQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUworKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgSU5URVJORVQgU09GVFdBUkUKKysgKiBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwKKysgKiBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IKKysgKiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUworKyAqIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUworKyAqIFNPRlRXQVJFLgorKyAqLworKworKy8qCisrICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk1IGJ5IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMsIEluYy4KKysgKgorKyAqIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMsIEluYy4gKGhlcmVpbmFmdGVyIGNhbGxlZCBJQk0pIGdyYW50cworKyAqIHBlcm1pc3Npb24gdW5kZXIgaXRzIGNvcHlyaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMKKysgKiBTb2Z0d2FyZSB3aXRoIG9yIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZAorKyAqIGFsbCBwYXJhZ3JhcGhzIG9mIHRoaXMgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBJQk0KKysgKiBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIG1hcmtldGluZyBvZiBhbnkgcHJvZHVjdCBpbmNvcnBvcmF0aW5nCisrICogdGhlIFNvZnR3YXJlIG9yIG1vZGlmaWNhdGlvbnMgdGhlcmVvZiwgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgorKyAqIHBlcm1pc3Npb24uCisrICoKKysgKiBUbyB0aGUgZXh0ZW50IGl0IGhhcyBhIHJpZ2h0IHRvIGRvIHNvLCBJQk0gZ3JhbnRzIGFuIGltbXVuaXR5IGZyb20gc3VpdAorKyAqIHVuZGVyIGl0cyBwYXRlbnRzLCBpZiBhbnksIGZvciB0aGUgdXNlLCBzYWxlIG9yIG1hbnVmYWN0dXJlIG9mIHByb2R1Y3RzIHRvCisrICogdGhlIGV4dGVudCB0aGF0IHN1Y2ggcHJvZHVjdHMgYXJlIHVzZWQgZm9yIHBlcmZvcm1pbmcgRG9tYWluIE5hbWUgU3lzdGVtCisrICogZHluYW1pYyB1cGRhdGVzIGluIFRDUC9JUCBuZXR3b3JrcyBieSBtZWFucyBvZiB0aGUgU29mdHdhcmUuICBObyBpbW11bml0eSBpcworKyAqIGdyYW50ZWQgZm9yIGFueSBwcm9kdWN0IHBlciBzZSBvciBmb3IgYW55IG90aGVyIGZ1bmN0aW9uIG9mIGFueSBwcm9kdWN0LgorKyAqCisrICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIEFORCBJQk0gRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTLAorKyAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIElOIE5PIEVWRU5UIFNIQUxMIElCTSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLAorKyAqIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIEFSSVNJTkcKKysgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTgorKyAqIElGIElCTSBJUyBBUFBSSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorKyAqLworKworKyNpZiAhZGVmaW5lZChMSU5UKSAmJiAhZGVmaW5lZChDT0RFQ0VOVEVSKQorK3N0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiJEJJTkRJZDogYmFzZTY0LmMsdiA4LjcgMTk5OS8xMC8xMyAxNjozOTozMyB2aXhpZSBFeHAgJCI7CisrI2VuZGlmIC8qIG5vdCBsaW50ICovCisrCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKworKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KKysKKysjaW5jbHVkZSA8Y3R5cGUuaD4KKysjaW5jbHVkZSA8cmVzb2x2Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2RlZmluZSBBc3NlcnQoQ29uZCkgaWYgKCEoQ29uZCkpIGFib3J0KCkKKysKKytzdGF0aWMgY29uc3QgY2hhciBCYXNlNjRbXSA9CisrCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjsKKytzdGF0aWMgY29uc3QgY2hhciBQYWQ2NCA9ICc9JzsKKysKKysvKiAoRnJvbSBSRkMxNTIxIGFuZCBkcmFmdC1pZXRmLWRuc3NlYy1zZWNleHQtMDMudHh0KQorKyAgIFRoZSBmb2xsb3dpbmcgZW5jb2RpbmcgdGVjaG5pcXVlIGlzIHRha2VuIGZyb20gUkZDIDE1MjEgYnkgQm9yZW5zdGVpbgorKyAgIGFuZCBGcmVlZC4gIEl0IGlzIHJlcHJvZHVjZWQgaGVyZSBpbiBhIHNsaWdodGx5IGVkaXRlZCBmb3JtIGZvcgorKyAgIGNvbnZlbmllbmNlLgorKworKyAgIEEgNjUtY2hhcmFjdGVyIHN1YnNldCBvZiBVUy1BU0NJSSBpcyB1c2VkLCBlbmFibGluZyA2IGJpdHMgdG8gYmUKKysgICByZXByZXNlbnRlZCBwZXIgcHJpbnRhYmxlIGNoYXJhY3Rlci4gKFRoZSBleHRyYSA2NXRoIGNoYXJhY3RlciwgIj0iLAorKyAgIGlzIHVzZWQgdG8gc2lnbmlmeSBhIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbi4pCisrCisrICAgVGhlIGVuY29kaW5nIHByb2Nlc3MgcmVwcmVzZW50cyAyNC1iaXQgZ3JvdXBzIG9mIGlucHV0IGJpdHMgYXMgb3V0cHV0CisrICAgc3RyaW5ncyBvZiA0IGVuY29kZWQgY2hhcmFjdGVycy4gUHJvY2VlZGluZyBmcm9tIGxlZnQgdG8gcmlnaHQsIGEKKysgICAyNC1iaXQgaW5wdXQgZ3JvdXAgaXMgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgMyA4LWJpdCBpbnB1dCBncm91cHMuCisrICAgVGhlc2UgMjQgYml0cyBhcmUgdGhlbiB0cmVhdGVkIGFzIDQgY29uY2F0ZW5hdGVkIDYtYml0IGdyb3VwcywgZWFjaAorKyAgIG9mIHdoaWNoIGlzIHRyYW5zbGF0ZWQgaW50byBhIHNpbmdsZSBkaWdpdCBpbiB0aGUgYmFzZTY0IGFscGhhYmV0LgorKworKyAgIEVhY2ggNi1iaXQgZ3JvdXAgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIGFuIGFycmF5IG9mIDY0IHByaW50YWJsZQorKyAgIGNoYXJhY3RlcnMuIFRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlZCBieSB0aGUgaW5kZXggaXMgcGxhY2VkIGluIHRoZQorKyAgIG91dHB1dCBzdHJpbmcuCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIDE6IFRoZSBCYXNlNjQgQWxwaGFiZXQKKysKKysgICAgICBWYWx1ZSBFbmNvZGluZyAgVmFsdWUgRW5jb2RpbmcgIFZhbHVlIEVuY29kaW5nICBWYWx1ZSBFbmNvZGluZworKyAgICAgICAgICAwIEEgICAgICAgICAgICAxNyBSICAgICAgICAgICAgMzQgaSAgICAgICAgICAgIDUxIHoKKysgICAgICAgICAgMSBCICAgICAgICAgICAgMTggUyAgICAgICAgICAgIDM1IGogICAgICAgICAgICA1MiAwCisrICAgICAgICAgIDIgQyAgICAgICAgICAgIDE5IFQgICAgICAgICAgICAzNiBrICAgICAgICAgICAgNTMgMQorKyAgICAgICAgICAzIEQgICAgICAgICAgICAyMCBVICAgICAgICAgICAgMzcgbCAgICAgICAgICAgIDU0IDIKKysgICAgICAgICAgNCBFICAgICAgICAgICAgMjEgViAgICAgICAgICAgIDM4IG0gICAgICAgICAgICA1NSAzCisrICAgICAgICAgIDUgRiAgICAgICAgICAgIDIyIFcgICAgICAgICAgICAzOSBuICAgICAgICAgICAgNTYgNAorKyAgICAgICAgICA2IEcgICAgICAgICAgICAyMyBYICAgICAgICAgICAgNDAgbyAgICAgICAgICAgIDU3IDUKKysgICAgICAgICAgNyBIICAgICAgICAgICAgMjQgWSAgICAgICAgICAgIDQxIHAgICAgICAgICAgICA1OCA2CisrICAgICAgICAgIDggSSAgICAgICAgICAgIDI1IFogICAgICAgICAgICA0MiBxICAgICAgICAgICAgNTkgNworKyAgICAgICAgICA5IEogICAgICAgICAgICAyNiBhICAgICAgICAgICAgNDMgciAgICAgICAgICAgIDYwIDgKKysgICAgICAgICAxMCBLICAgICAgICAgICAgMjcgYiAgICAgICAgICAgIDQ0IHMgICAgICAgICAgICA2MSA5CisrICAgICAgICAgMTEgTCAgICAgICAgICAgIDI4IGMgICAgICAgICAgICA0NSB0ICAgICAgICAgICAgNjIgKworKyAgICAgICAgIDEyIE0gICAgICAgICAgICAyOSBkICAgICAgICAgICAgNDYgdSAgICAgICAgICAgIDYzIC8KKysgICAgICAgICAxMyBOICAgICAgICAgICAgMzAgZSAgICAgICAgICAgIDQ3IHYKKysgICAgICAgICAxNCBPICAgICAgICAgICAgMzEgZiAgICAgICAgICAgIDQ4IHcgICAgICAgICAocGFkKSA9CisrICAgICAgICAgMTUgUCAgICAgICAgICAgIDMyIGcgICAgICAgICAgICA0OSB4CisrICAgICAgICAgMTYgUSAgICAgICAgICAgIDMzIGggICAgICAgICAgICA1MCB5CisrCisrICAgU3BlY2lhbCBwcm9jZXNzaW5nIGlzIHBlcmZvcm1lZCBpZiBmZXdlciB0aGFuIDI0IGJpdHMgYXJlIGF2YWlsYWJsZQorKyAgIGF0IHRoZSBlbmQgb2YgdGhlIGRhdGEgYmVpbmcgZW5jb2RlZC4gIEEgZnVsbCBlbmNvZGluZyBxdWFudHVtIGlzCisrICAgYWx3YXlzIGNvbXBsZXRlZCBhdCB0aGUgZW5kIG9mIGEgcXVhbnRpdHkuICBXaGVuIGZld2VyIHRoYW4gMjQgaW5wdXQKKysgICBiaXRzIGFyZSBhdmFpbGFibGUgaW4gYW4gaW5wdXQgZ3JvdXAsIHplcm8gYml0cyBhcmUgYWRkZWQgKG9uIHRoZQorKyAgIHJpZ2h0KSB0byBmb3JtIGFuIGludGVncmFsIG51bWJlciBvZiA2LWJpdCBncm91cHMuICBQYWRkaW5nIGF0IHRoZQorKyAgIGVuZCBvZiB0aGUgZGF0YSBpcyBwZXJmb3JtZWQgdXNpbmcgdGhlICc9JyBjaGFyYWN0ZXIuCisrCisrICAgU2luY2UgYWxsIGJhc2U2NCBpbnB1dCBpcyBhbiBpbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzLCBvbmx5IHRoZQorKyAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgICBmb2xsb3dpbmcgY2FzZXMgY2FuIGFyaXNlOgorKworKyAgICAgICAoMSkgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgYW4gaW50ZWdyYWwKKysgICAgICAgICAgIG11bHRpcGxlIG9mIDI0IGJpdHM7IGhlcmUsIHRoZSBmaW5hbCB1bml0IG9mIGVuY29kZWQKKysJICAgb3V0cHV0IHdpbGwgYmUgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgNCBjaGFyYWN0ZXJzCisrCSAgIHdpdGggbm8gIj0iIHBhZGRpbmcsCisrICAgICAgICgyKSB0aGUgZmluYWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBleGFjdGx5IDggYml0czsKKysgICAgICAgICAgIGhlcmUsIHRoZSBmaW5hbCB1bml0IG9mIGVuY29kZWQgb3V0cHV0IHdpbGwgYmUgdHdvCisrCSAgIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgdHdvICI9IiBwYWRkaW5nIGNoYXJhY3RlcnMsIG9yCisrICAgICAgICgzKSB0aGUgZmluYWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBleGFjdGx5IDE2IGJpdHM7CisrICAgICAgICAgICBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHRocmVlCisrCSAgIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgb25lICI9IiBwYWRkaW5nIGNoYXJhY3Rlci4KKysgICAqLworKworK2ludAorK2I2NF9udG9wKGNvbnN0IHVpbnQ4X3QqIHNyYywgc2l6ZV90IHNyY2xlbmd0aCwgY2hhciogdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpCisreworKwlzaXplX3QgZGF0YWxlbmd0aCA9IDA7CisrCXVpbnQ4X3QgaW5wdXRbM107CisrCXVpbnQ4X3Qgb3V0cHV0WzRdOworKwlzaXplX3QgaTsKKysKKysJd2hpbGUgKDIgPCBzcmNsZW5ndGgpIHsKKysJCWlucHV0WzBdID0gKnNyYysrOworKwkJaW5wdXRbMV0gPSAqc3JjKys7CisrCQlpbnB1dFsyXSA9ICpzcmMrKzsKKysJCXNyY2xlbmd0aCAtPSAzOworKworKwkJb3V0cHV0WzBdID0gaW5wdXRbMF0gPj4gMjsKKysJCW91dHB1dFsxXSA9ICgoaW5wdXRbMF0gJiAweDAzKSA8PCA0KSArIChpbnB1dFsxXSA+PiA0KTsKKysJCW91dHB1dFsyXSA9ICgoaW5wdXRbMV0gJiAweDBmKSA8PCAyKSArIChpbnB1dFsyXSA+PiA2KTsKKysJCW91dHB1dFszXSA9IGlucHV0WzJdICYgMHgzZjsKKysJCUFzc2VydChvdXRwdXRbMF0gPCA2NCk7CisrCQlBc3NlcnQob3V0cHV0WzFdIDwgNjQpOworKwkJQXNzZXJ0KG91dHB1dFsyXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbM10gPCA2NCk7CisrCisrCQlpZiAoZGF0YWxlbmd0aCArIDQgPiB0YXJnc2l6ZSkKKysJCQlyZXR1cm4gKC0xKTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFswXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMV1dOworKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzJdXTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFszXV07CisrCX0KKysKKysJLyogTm93IHdlIHdvcnJ5IGFib3V0IHBhZGRpbmcuICovCisrCWlmICgwICE9IHNyY2xlbmd0aCkgeworKwkJLyogR2V0IHdoYXQncyBsZWZ0LiAqLworKwkJaW5wdXRbMF0gPSBpbnB1dFsxXSA9IGlucHV0WzJdID0gJ1wwJzsKKysJCWZvciAoaSA9IDA7IGkgPCBzcmNsZW5ndGg7IGkrKykKKysJCQlpbnB1dFtpXSA9ICpzcmMrKzsKKysKKysJCW91dHB1dFswXSA9IGlucHV0WzBdID4+IDI7CisrCQlvdXRwdXRbMV0gPSAoKGlucHV0WzBdICYgMHgwMykgPDwgNCkgKyAoaW5wdXRbMV0gPj4gNCk7CisrCQlvdXRwdXRbMl0gPSAoKGlucHV0WzFdICYgMHgwZikgPDwgMikgKyAoaW5wdXRbMl0gPj4gNik7CisrCQlBc3NlcnQob3V0cHV0WzBdIDwgNjQpOworKwkJQXNzZXJ0KG91dHB1dFsxXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbMl0gPCA2NCk7CisrCisrCQlpZiAoZGF0YWxlbmd0aCArIDQgPiB0YXJnc2l6ZSkKKysJCQlyZXR1cm4gKC0xKTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFswXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMV1dOworKwkJaWYgKHNyY2xlbmd0aCA9PSAxKQorKwkJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gUGFkNjQ7CisrCQllbHNlCisrCQkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzJdXTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gUGFkNjQ7CisrCX0KKysJaWYgKGRhdGFsZW5ndGggPj0gdGFyZ3NpemUpCisrCQlyZXR1cm4gKC0xKTsKKysJdGFyZ2V0W2RhdGFsZW5ndGhdID0gJ1wwJzsJLyogUmV0dXJuZWQgdmFsdWUgZG9lc24ndCBjb3VudCBcMC4gKi8KKysJcmV0dXJuIChkYXRhbGVuZ3RoKTsKKyt9CisrCisrLyogc2tpcHMgYWxsIHdoaXRlc3BhY2UgYW55d2hlcmUuCisrICAgY29udmVydHMgY2hhcmFjdGVycywgZm91ciBhdCBhIHRpbWUsIHN0YXJ0aW5nIGF0IChvciBhZnRlcikKKysgICBzcmMgZnJvbSBiYXNlIC0gNjQgbnVtYmVycyBpbnRvIHRocmVlIDggYml0IGJ5dGVzIGluIHRoZSB0YXJnZXQgYXJlYS4KKysgICBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF0YSBieXRlcyBzdG9yZWQgYXQgdGhlIHRhcmdldCwgb3IgLTEgb24gZXJyb3IuCisrICovCisrCisraW50IGI2NF9wdG9uKGNvbnN0IGNoYXIqIHNyYywgdWludDhfdCogdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpCisreworKwlpbnQgdGFyaW5kZXgsIHN0YXRlLCBjaDsKKysJY2hhciAqcG9zOworKworKwlzdGF0ZSA9IDA7CisrCXRhcmluZGV4ID0gMDsKKysKKysJd2hpbGUgKChjaCA9ICpzcmMrKykgIT0gJ1wwJykgeworKwkJaWYgKGlzc3BhY2UoY2gpKQkvKiBTa2lwIHdoaXRlc3BhY2UgYW55d2hlcmUuICovCisrCQkJY29udGludWU7CisrCisrCQlpZiAoY2ggPT0gUGFkNjQpCisrCQkJYnJlYWs7CisrCisrCQlwb3MgPSBzdHJjaHIoQmFzZTY0LCBjaCk7CisrCQlpZiAocG9zID09IDApIAkJLyogQSBub24tYmFzZTY0IGNoYXJhY3Rlci4gKi8KKysJCQlyZXR1cm4gKC0xKTsKKysKKysJCXN3aXRjaCAoc3RhdGUpIHsKKysJCWNhc2UgMDoKKysJCQlpZiAodGFyZ2V0KSB7CisrCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gPSAocG9zIC0gQmFzZTY0KSA8PCAyOworKwkJCX0KKysJCQlzdGF0ZSA9IDE7CisrCQkJYnJlYWs7CisrCQljYXNlIDE6CisrCQkJaWYgKHRhcmdldCkgeworKwkJCQlpZiAoKHNpemVfdCl0YXJpbmRleCArIDEgPj0gdGFyZ3NpemUpCisrCQkJCQlyZXR1cm4gKC0xKTsKKysJCQkJdGFyZ2V0W3RhcmluZGV4XSAgIHw9ICAocG9zIC0gQmFzZTY0KSA+PiA0OworKwkJCQl0YXJnZXRbdGFyaW5kZXgrMV0gID0gKChwb3MgLSBCYXNlNjQpICYgMHgwZikKKysJCQkJCQkJPDwgNCA7CisrCQkJfQorKwkJCXRhcmluZGV4Kys7CisrCQkJc3RhdGUgPSAyOworKwkJCWJyZWFrOworKwkJY2FzZSAyOgorKwkJCWlmICh0YXJnZXQpIHsKKysJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggKyAxID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gICB8PSAgKHBvcyAtIEJhc2U2NCkgPj4gMjsKKysJCQkJdGFyZ2V0W3RhcmluZGV4KzFdICA9ICgocG9zIC0gQmFzZTY0KSAmIDB4MDMpCisrCQkJCQkJCTw8IDY7CisrCQkJfQorKwkJCXRhcmluZGV4Kys7CisrCQkJc3RhdGUgPSAzOworKwkJCWJyZWFrOworKwkJY2FzZSAzOgorKwkJCWlmICh0YXJnZXQpIHsKKysJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggPj0gdGFyZ3NpemUpCisrCQkJCQlyZXR1cm4gKC0xKTsKKysJCQkJdGFyZ2V0W3RhcmluZGV4XSB8PSAocG9zIC0gQmFzZTY0KTsKKysJCQl9CisrCQkJdGFyaW5kZXgrKzsKKysJCQlzdGF0ZSA9IDA7CisrCQkJYnJlYWs7CisrCQlkZWZhdWx0OgorKwkJCWFib3J0KCk7CisrCQl9CisrCX0KKysKKysJLyoKKysJICogV2UgYXJlIGRvbmUgZGVjb2RpbmcgQmFzZS02NCBjaGFycy4gIExldCdzIHNlZSBpZiB3ZSBlbmRlZAorKwkgKiBvbiBhIGJ5dGUgYm91bmRhcnksIGFuZC9vciB3aXRoIGVycm9uZW91cyB0cmFpbGluZyBjaGFyYWN0ZXJzLgorKwkgKi8KKysKKysJaWYgKGNoID09IFBhZDY0KSB7CQkvKiBXZSBnb3QgYSBwYWQgY2hhci4gKi8KKysJCWNoID0gKnNyYysrOwkJLyogU2tpcCBpdCwgZ2V0IG5leHQuICovCisrCQlzd2l0Y2ggKHN0YXRlKSB7CisrCQljYXNlIDA6CQkvKiBJbnZhbGlkID0gaW4gZmlyc3QgcG9zaXRpb24gKi8KKysJCWNhc2UgMToJCS8qIEludmFsaWQgPSBpbiBzZWNvbmQgcG9zaXRpb24gKi8KKysJCQlyZXR1cm4gKC0xKTsKKysKKysJCWNhc2UgMjoJCS8qIFZhbGlkLCBtZWFucyBvbmUgYnl0ZSBvZiBpbmZvICovCisrCQkJLyogU2tpcCBhbnkgbnVtYmVyIG9mIHNwYWNlcy4gKi8KKysJCQlmb3IgKCh2b2lkKU5VTEw7IGNoICE9ICdcMCc7IGNoID0gKnNyYysrKQorKwkJCQlpZiAoIWlzc3BhY2UoY2gpKQorKwkJCQkJYnJlYWs7CisrCQkJLyogTWFrZSBzdXJlIHRoZXJlIGlzIGFub3RoZXIgdHJhaWxpbmcgPSBzaWduLiAqLworKwkJCWlmIChjaCAhPSBQYWQ2NCkKKysJCQkJcmV0dXJuICgtMSk7CisrCQkJY2ggPSAqc3JjKys7CQkvKiBTa2lwIHRoZSA9ICovCisrCQkJLyogRmFsbCB0aHJvdWdoIHRvICJzaW5nbGUgdHJhaWxpbmcgPSIgY2FzZS4gKi8KKysJCQkvKiBGQUxMVEhST1VHSCAqLworKworKwkJY2FzZSAzOgkJLyogVmFsaWQsIG1lYW5zIHR3byBieXRlcyBvZiBpbmZvICovCisrCQkJLyoKKysJCQkgKiBXZSBrbm93IHRoaXMgY2hhciBpcyBhbiA9LiAgSXMgdGhlcmUgYW55dGhpbmcgYnV0CisrCQkJICogd2hpdGVzcGFjZSBhZnRlciBpdD8KKysJCQkgKi8KKysJCQlmb3IgKCh2b2lkKU5VTEw7IGNoICE9ICdcMCc7IGNoID0gKnNyYysrKQorKwkJCQlpZiAoIWlzc3BhY2UoY2gpKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCisrCQkJLyoKKysJCQkgKiBOb3cgbWFrZSBzdXJlIGZvciBjYXNlcyAyIGFuZCAzIHRoYXQgdGhlICJleHRyYSIKKysJCQkgKiBiaXRzIHRoYXQgc2xvcHBlZCBwYXN0IHRoZSBsYXN0IGZ1bGwgYnl0ZSB3ZXJlCisrCQkJICogemVyb3MuICBJZiB3ZSBkb24ndCBjaGVjayB0aGVtLCB0aGV5IGJlY29tZSBhCisrCQkJICogc3VibGltaW5hbCBjaGFubmVsLgorKwkJCSAqLworKwkJCWlmICh0YXJnZXQgJiYgdGFyZ2V0W3RhcmluZGV4XSAhPSAwKQorKwkJCQlyZXR1cm4gKC0xKTsKKysJCX0KKysJfSBlbHNlIHsKKysJCS8qCisrCQkgKiBXZSBlbmRlZCBieSBzZWVpbmcgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAgTWFrZSBzdXJlIHdlCisrCQkgKiBoYXZlIG5vIHBhcnRpYWwgYnl0ZXMgbHlpbmcgYXJvdW5kLgorKwkJICovCisrCQlpZiAoc3RhdGUgIT0gMCkKKysJCQlyZXR1cm4gKC0xKTsKKysJfQorKworKwlyZXR1cm4gKHRhcmluZGV4KTsKKyt9CisrCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvMDAwMi1hZGItTXVzbC1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAyLWFkYi1NdXNsLWZpeGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YWViYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvMDAwMi1hZGItTXVzbC1maXhlcy5wYXRjaApAQCAtMCwwICsxLDEzNCBAQAorRnJvbSBmODY1M2VkMGVkZTRhYTc4MWFiNzU4ZmNkNDRmZGMwNWZmYmUwYjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTU6NTA6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGFkYjogTXVzbCBmaXhlcworCitfX25vbm51bGwgaXMgZ2NjIHNwZWNpZmljCitpbmNsdWRlIHN5cy90eXBlcy5oIGZvciBzaXplX3QKK0RvIG5vdCByZWRlZmluZSBjbG9zZSgpIGFuZCBsc2VlaygpCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXN0ZW0vY29yZS9hZGIvYWRiLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyBzeXN0ZW0vY29yZS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jIHwgMTMgKysrKysrKystLS0tLQorIHN5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMgICAgfCAgNyArKysrLS0tCisgc3lzdGVtL2NvcmUvYWRiL3N5c2RlcHMuaCAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvYWRiLmggYi9zeXN0ZW0vY29yZS9hZGIvYWRiLmgKK2luZGV4IDQ0ZTU5ODEuLmJjZGM0OWYgMTAwNjQ0CistLS0gYS9zeXN0ZW0vY29yZS9hZGIvYWRiLmgKKysrKyBiL3N5c3RlbS9jb3JlL2FkYi9hZGIuaAorQEAgLTE4LDcgKzE4LDkgQEAKKyAjZGVmaW5lIF9fQURCX0gKKyAKKyAjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorKyNpbmNsdWRlICJmZGV2ZW50LmgiCisgI2luY2x1ZGUgImFkYl90cmFjZS5oIgorICNpbmNsdWRlICJ0cmFuc3BvcnQuaCIgIC8qIHJlYWR4KCksIHdyaXRleCgpICovCisgCitkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYyBiL3N5c3RlbS9jb3JlL2FkYi9kaXNhYmxlX3Zlcml0eV9zZXJ2aWNlLmMKK2luZGV4IGVkM2RhNTIuLjI5ZmEzZDYgMTAwNjQ0CistLS0gYS9zeXN0ZW0vY29yZS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCisrKysgYi9zeXN0ZW0vY29yZS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCitAQCAtMTQsMjUgKzE0LDI4IEBACisgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgICovCisgCistI2luY2x1ZGUgInN5c2RlcHMuaCIKKyAKKyAjZGVmaW5lICBUUkFDRV9UQUcgIFRSQUNFX0FEQgorICNpbmNsdWRlICJhZGIuaCIKKysjaW5jbHVkZSAic3lzZGVwcy5oIgorKyNpbmNsdWRlICJjdXRpbHMvcHJvcGVydGllcy5oIgorKyNpbmNsdWRlICJleHQ0X3NiLmgiCisrI2luY2x1ZGUgPGZzX21nci5oPgorIAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAKKy0jaW5jbHVkZSAiY3V0aWxzL3Byb3BlcnRpZXMuaCIKKy0jaW5jbHVkZSAiZXh0NF9zYi5oIgorLSNpbmNsdWRlIDxmc19tZ3IuaD4KKyAKKyAjZGVmaW5lIEZTVEFCX1BSRUZJWCAiL2ZzdGFiLiIKKyBzdHJ1Y3QgZnN0YWIgKmZzdGFiOworIAorLV9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fbm9ubnVsbCgoMikpCisrX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgoMikpKSkKKyBzdGF0aWMgdm9pZCB3cml0ZV9jb25zb2xlKGludCBmZCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCisgeworICAgICBjaGFyIGJ1ZmZlclsyNTZdOworZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMgYi9zeXN0ZW0vY29yZS9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jCitpbmRleCA4Y2JlODQwLi44ZjBjY2ZiIDEwMDY0NAorLS0tIGEvc3lzdGVtL2NvcmUvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYworKysrIGIvc3lzdGVtL2NvcmUvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYworQEAgLTE0LDYgKzE0LDEwIEBACisgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgICovCisgCisrI2luY2x1ZGUgImZkZXZlbnQuaCIKKysjaW5jbHVkZSAiYWRiLmgiCisrI2luY2x1ZGUgInN5c2RlcHMuaCIKKysKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorQEAgLTIzLDkgKzI3LDYgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgCistI2luY2x1ZGUgImZkZXZlbnQuaCIKKy0jaW5jbHVkZSAiYWRiLmgiCistCisgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmggYi9zeXN0ZW0vY29yZS9hZGIvc3lzZGVwcy5oCitpbmRleCBjYzFmODM5Li5lYTM5YWMzIDEwMDY0NAorLS0tIGEvc3lzdGVtL2NvcmUvYWRiL3N5c2RlcHMuaAorKysrIGIvc3lzdGVtL2NvcmUvYWRiL3N5c2RlcHMuaAorQEAgLTEyMyw4ICsxMjMsOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgIHVuaXhfY2xvc2UoaW50IGZkKQorIHsKKyAgICAgcmV0dXJuIGNsb3NlKGZkKTsKKyB9CistI3VuZGVmICAgY2xvc2UKKy0jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKysvLyN1bmRlZiAgIGNsb3NlCisrLy8jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKyAKKyBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICB1bml4X3JlYWQoaW50ICBmZCwgdm9pZCogIGJ1Ziwgc2l6ZV90ICBsZW4pCisgeworQEAgLTM2OSw4ICszNjksOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgIGFkYl9jbG9zZShpbnQgZmQpCisgeworICAgICByZXR1cm4gY2xvc2UoZmQpOworIH0KKy0jdW5kZWYgICBjbG9zZQorLSNkZWZpbmUgIGNsb3NlICAgX19fX3h4eF9jbG9zZQorKy8vI3VuZGVmICAgY2xvc2UKKysvLyNkZWZpbmUgIGNsb3NlICAgX19fX3h4eF9jbG9zZQorIAorIAorIHN0YXRpYyBfX2lubGluZV9fICBpbnQgIGFkYl9yZWFkKGludCAgZmQsIHZvaWQqICBidWYsIHNpemVfdCAgbGVuKQorQEAgLTM5Miw4ICszOTIsOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgICBhZGJfbHNlZWsoaW50ICBmZCwgaW50ICBwb3MsIGludCAgd2hlcmUpCisgeworICAgICByZXR1cm4gbHNlZWsoZmQsIHBvcywgd2hlcmUpOworIH0KKy0jdW5kZWYgICBsc2VlaworLSNkZWZpbmUgIGxzZWVrICAgX19feHh4X2xzZWVrCisrLy8jdW5kZWYgICBsc2VlaworKy8vI2RlZmluZSAgbHNlZWsgICBfX194eHhfbHNlZWsKKyAKKyBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICAgIGFkYl91bmxpbmsoY29uc3QgY2hhciogIHBhdGgpCisgeworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2FkYmQubWsgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYWRiZC5tawppbmRleCA4NGNkMDZiLi4zMTQ1MmFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYWRiZC5taworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYWRiZC5tawpAQCAtMTYsNiArMTYsNyBAQAogYWRiZF9TUkNfRklMRVMgKz0gZnJhbWVidWZmZXJfc2VydmljZS5jCiBhZGJkX1NSQ19GSUxFUyArPSByZW1vdW50X3NlcnZpY2UuYwogYWRiZF9TUkNfRklMRVMgKz0gZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCithZGJkX1NSQ19GSUxFUyArPSBiYXNlNjQuYwogYWRiZF9TUkNfRklMRVMgKz0gdXNiX2xpbnV4X2NsaWVudC5jCiBhZGJkX09CSlMgOj0gJChhZGJkX1NSQ19GSUxFUzouYz0ubykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIKaW5kZXggMzRmZGRjYi4uZDNjY2QxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCkBAIC0zMiw2ICszMiw4IEBACiAgICAgZmlsZTovL2RlZmluZS1zaGVsbC1jb21tYW5kLnBhdGNoIFwKICAgICBmaWxlOi8vaW1wbGljaXQtZGVjbGFyYXRpb24tZnVuY3Rpb24tc3RybGNhdC1zdHJsY29weS5wYXRjaCBcCiAgICAgZmlsZTovL2ZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1hZGItTXVzbC1maXhlcy5wYXRjaCBcCiAgICAgZmlsZTovL2FuZHJvaWQtdG9vbHMtYWRiZC5zZXJ2aWNlIFwKICAgICBmaWxlOi8vLmdpdGlnbm9yZTtzdWJkaXI9Z2l0IFwKICAgICBmaWxlOi8vYWRiLm1rO3N1YmRpcj0ke0JQTn0gXApAQCAtNTIsMjQgKzU0LDYgQEAKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFuZHJvaWQtdG9vbHMtYWRiZC5zZXJ2aWNlIgogCi0jIEdldCByaWQgb2YgZmlsZXMgdW5lZWRlZCB0byBidWlsZCBBbmRyb2lkIHRvb2xzCi1kb191bnBhY2tfZXh0cmEoKSB7Ci0gICAgY2QgJHtTfQotICAgIHJtIC1yZiBcCi0gICAgICBzeXN0ZW0vY29yZS8uZ2l0IFwKLSAgICAgIHN5c3RlbS9leHRyYXMvLmdpdCBcCi0gICAgICBoYXJkd2FyZS9saWJoYXJkd2FyZS8uZ2l0IFwKLSAgICAgIGV4dGVybmFsL2xpYnNlbGludXgvLmdpdCBcCi0gICAgICBidWlsZC8uZ2l0Ci0gICAgZ2l0IGluaXQKLSAgICBnaXQgYWRkIC4KLSAgICBnaXQgY29tbWl0IC1tIFwKLSAgICAgICJJbml0aWFsIGltcG9ydCAtIGNvbW1pdHRlZCAke0FORFJPSURfVEFHfSIKLSAgICBnaXQgY2xlYW4gLWZkeAotfQotCi1hZGR0YXNrIHVucGFja19leHRyYSBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCi0KICMgRmluZCBsaWJic2QgaGVhZGVycyBkdXJpbmcgbmF0aXZlIGJ1aWxkcwogQ0NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLUkke1NUQUdJTkdfSU5DRElSfSIKIENDX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY4NGQxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLURFUEVORFMgKz0gIm00LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIm00LW5hdGl2ZXNkayBnbnUtY29uZmlnLW5hdGl2ZXNkayIKLQotUkRFUEVORFNfJHtQTn0gPSAibTQgZ251LWNvbmZpZyBnbm9tZS1jb21tb24iCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAibTQtbmF0aXZlIGdudS1jb25maWctbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIm00LW5hdGl2ZXNkayBnbnUtY29uZmlnLW5hdGl2ZXNkayIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlL2RlbGV0ZS1zb21lLW00LWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlL2RlbGV0ZS1zb21lLW00LWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWE3ODhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZS9kZWxldGUtc29tZS1tNC1maWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLURlbGV0ZSB0d28gbTRmaWxlcyBheF9jb2RlX2NvdmVyYWdlLm00IGFuZCBheF9jaGVja19lbmFibGVfZGVidWcubTQKLXRvIGF2b2lkIGluc3RhbGxpbmcgY29uZmxpY3RzLiBUaGVzZSB0d28gZmlsZXMgY2FuIGJlIGluc3RhbGxlZCBieQotZ25vbWUtY29tbW9uIGZyb20gb2UtY29yZSwgZXZlbiBpZiB0aGUgZmlsZXMgaW4gZ25tb2UtY29tbW9uIGlzCi1jb3BpZWQgZnJvbSBhdXRvY29uZi1hcmNoaXZlKHRoZSByZWFzb24gaXMgdGhhdCB0aGUgb2xkIHZlcnNpb24KLWF1dG9jb25mLWFyY2hpdmUgZG9uJ3QgcHJvdmlkZSB0aGUgdHdvIGZpbGVzKS4KLUFmdGVyIHVwZ3JhZGluZyB0byB0aGUgbmV3IHZlcnNpb24sIHdlIG5lZWQgdG8gZHJvcCB0aGVtIGluIG1ldGEtb2UKLWFuZCB0aGVuIHNldCByZGVwZW5kcyB0byBnbm9tZS1jb21tb24ob2UtY29yZSkKLQotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9jb25maWd1cmUuYWMgICAgIDIwMTYtMDktMTYgMDY6MDA6MDAuMDAwMDAwMDAwICswODAwCi0rKysgYi9jb25maWd1cmUuYWMgICAgIDIwMTctMDQtMTggMTc6NDM6MDUuOTQ2MjkwNTU0ICswODAwCi1AQCAtMTksNyArMTksNyBAQAotIAotIEFDX1BST0dfU0VECi0gCi0tTTRGSUxFUz0ibTRfZXN5c2NtZChbZWNobyAtbiBtNC8qLm00XSkiCi0rTTRGSUxFUz0ibTRfZXN5c2NtZChbZWNobyAtbiBtNC8qLm00IHwgc2VkIC1lICdzOm00L2F4X2NvZGVfY292ZXJhZ2UubTQgOjpnJ3xzZWQgLWUgJ3M6bTQvYXhfY2hlY2tfZW5hYmxlX2RlYnVnLm00IDo6ZyddKSIKLSBBQ19TVUJTVChbTTRGSUxFU10pCi0gCi0gVEVYSUZJTEVTPSJtNF9lc3lzY21kKFtjZCBtNCAmJiBlY2hvIC1uICoubTQgfCBzZWQgLWUgJ3MvXC5tNC8udGV4aS9nJ10pIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxYjU3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgYXV0b2NvbmYtYXJjaGl2ZS5pbmMKLQotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjE5ZDRjZGRjZTI2MGIzYzNlMWQ1MWQ0MjUwOTA3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGYyZWZkMjM1Zjg0MmJhZDJmNjkzOGJmNGE3MjI0MGE1ZTVmY2QyNDhlODQ0NDMzNWU2M2JlYjYwZmFiZDgyIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgIGZpbGU6Ly9kZWxldGUtc29tZS1tNC1maWxlcy5wYXRjaCBcCi0iCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9NND1tNCIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtUmVwbGFjZS11c2Utb2Ytc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtUmVwbGFjZS11c2Utb2Ytc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2NiOGEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1SZXBsYWNlLXVzZS1vZi1zdHJ1Y3QtdWNvbnRleHQtd2l0aC11Y29udGV4dF90LnBhdGNoCkBAIC0wLDAgKzEsMjQyIEBACitGcm9tIGI5MGM4ZjNiNjBiZmU1ZGJlZDI4MjM2MjAyNDJlOWQzMGI5ZWIyOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxOTowMToxOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIHVzZSBvZiBzdHJ1Y3QgdWNvbnRleHQgd2l0aCB1Y29udGV4dF90CisKK2dsaWJjIDIuMjYgd291bGQgbm90IGV4cG9zZSBzdHJ1Y3QgdWNvbnRleHQgYW55bW9yZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIC4uLi9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjICAgIHwgMzIgKysrKysrKysrKystLS0tLS0tLS0tLQorIC4uLi9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmggICAgIHwgMTQgKysrKystLS0tLQorIHNyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyAgICAgIHwgMTAgKysrLS0tLQorIHNyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oICAgICAgIHwgIDQgKy0tCisgLi4uL2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYyAgICAgfCAgMiArLQorIC4uLi9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjICAgICAgIHwgIDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitpbmRleCBjODA3MjRkZC4uMDUyY2UzN2MgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworQEAgLTM2LDE5ICszNiwxOSBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKKyAKKyAvLyBNaW5pZHVtcCBkZWZpbmVzIHJlZ2lzdGVyIHN0cnVjdHVyZXMgd2hpY2ggYXJlIGRpZmZlcmVudCBmcm9tIHRoZSByYXcKKyAvLyBzdHJ1Y3R1cmVzIHdoaWNoIHdlIGdldCBmcm9tIHRoZSBrZXJuZWwuIFRoZXNlIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYworLS8vIGZ1bmN0aW9ucyB0byBqdWdnbGUgdGhlIHVjb250ZXh0IGFuZCB1c2VyIHN0cnVjdHVyZXMgaW50byBtaW5pZHVtcCBmb3JtYXQuCisrLy8gZnVuY3Rpb25zIHRvIGp1Z2dsZSB0aGUgdWNvbnRleHRfdCBhbmQgdXNlciBzdHJ1Y3R1cmVzIGludG8gbWluaWR1bXAgZm9ybWF0LgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRVNQXTsKKyB9CisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19FSVBdOworIH0KKyAKKy12b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCkgeworICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMtPnVjX21jb250ZXh0LmdyZWdzOworIAorQEAgLTg4LDE1ICs4OCwxNSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyAKKyAjZWxpZiBkZWZpbmVkKF9feDg2XzY0KQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUlNQXTsKKyB9CisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19SSVBdOworIH0KKyAKKy12b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcHJlZ3MpIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAKK0BAIC0xNDUsMTUgKzE0NSwxNSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyAKKyAjZWxpZiBkZWZpbmVkKF9fQVJNX0VBQklfXykKKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuYXJtX3NwOworIH0KKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuYXJtX3BjOworIH0KKyAKKy12b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YykgeworK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQVJNX0ZVTEw7CisgCisgICBvdXQtPmlyZWdzWzBdID0gdWMtPnVjX21jb250ZXh0LmFybV9yMDsKK0BAIC0xODQsMTUgKzE4NCwxNSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YykgeworIAorICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LnNwOworIH0KKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQucGM7CisgfQorIAorLXZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHQgKnVjLAorK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpIHsKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQVJNNjRfRlVMTDsKKyAKK0BAIC0yMTAsMTUgKzIxMCwxNSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyAKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXTsKKyB9CisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LnBjOworIH0KKyAKKy12b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YykgeworK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKKyAjaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9NSVBTNjRfRlVMTDsKKyAjZWxpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oIGIvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK2luZGV4IGI2ZTc3YjRiLi4yZGU4MGI3MCAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorQEAgLTM5LDIzICszOSwyMyBAQAorIAorIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgeworIAorLS8vIFdyYXBzIHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYWNjZXNzb3JzIHRvIHVjb250ZXh0IHN0cnVjdHMuCisrLy8gV3JhcHMgcGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucyBvZiBhY2Nlc3NvcnMgdG8gdWNvbnRleHRfdCBzdHJ1Y3RzLgorIHN0cnVjdCBVQ29udGV4dFJlYWRlciB7CistICBzdGF0aWMgdWludHB0cl90IEdldFN0YWNrUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKTsKKysgIHN0YXRpYyB1aW50cHRyX3QgR2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKTsKKyAKKy0gIHN0YXRpYyB1aW50cHRyX3QgR2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpOworKyAgc3RhdGljIHVpbnRwdHJfdCBHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpOworIAorLSAgLy8gSnVnZ2xlIGEgYXJjaC1zcGVjaWZpYyB1Y29udGV4dCBpbnRvIGEgbWluaWR1bXAgZm9ybWF0CisrICAvLyBKdWdnbGUgYSBhcmNoLXNwZWNpZmljIHVjb250ZXh0X3QgaW50byBhIG1pbmlkdW1wIGZvcm1hdAorICAgLy8gICBvdXQ6IHRoZSBtaW5pZHVtcCBzdHJ1Y3R1cmUKKyAgIC8vICAgaW5mbzogdGhlIGNvbGxlY3Rpb24gb2YgcmVnaXN0ZXIgc3RydWN0dXJlcy4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkKKy0gIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHQgKnVjLAorKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCk7CisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKy0gIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHQgKnVjLAorKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKKyAjZWxzZQorLSAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMpOworKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1Yyk7CisgI2VuZGlmCisgfTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK2luZGV4IDU4NmQ4NGU5Li4wNTkzNmQyOCAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDU3LDkgKzQ1Nyw5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKGludCAvKnNpZyovLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjKSB7CisgICAvLyBGaWxsIGluIGFsbCB0aGUgaG9sZXMgaW4gdGhlIHN0cnVjdCB0byBtYWtlIFZhbGdyaW5kIGhhcHB5LgorICAgbWVtc2V0KCZnX2NyYXNoX2NvbnRleHRfLCAwLCBzaXplb2YoZ19jcmFzaF9jb250ZXh0XykpOworICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLnNpZ2luZm8sIGluZm8sIHNpemVvZihzaWdpbmZvX3QpKTsKKy0gIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy5jb250ZXh0LCB1Yywgc2l6ZW9mKHN0cnVjdCB1Y29udGV4dCkpOworKyAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLmNvbnRleHQsIHVjLCBzaXplb2YodWNvbnRleHRfdCkpOworICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorLSAgc3RydWN0IHVjb250ZXh0KiB1Y19wdHIgPSAoc3RydWN0IHVjb250ZXh0Kil1YzsKKysgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKKyAgIHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnBfcHRyID0KKyAgICAgICAoc3RydWN0IGZwc2ltZF9jb250ZXh0KikmdWNfcHRyLT51Y19tY29udGV4dC5fX3Jlc2VydmVkOworICAgaWYgKGZwX3B0ci0+aGVhZC5tYWdpYyA9PSBGUFNJTURfTUFHSUMpIHsKK0BAIC00NjgsOSArNDY4LDkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8sIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKKyAgIH0KKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgb24gQVJNIExpbnV4LgorLSAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiBzdHJ1Y3QgdWNvbnRleHQKKysgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRleHRfdAorICAgLy8gYW5kICdmbG9hdF9zdGF0ZScgaXMgbm90IGEgbWVtYmVyIG9mIENyYXNoQ29udGV4dC4KKy0gIHN0cnVjdCB1Y29udGV4dCogdWNfcHRyID0gKHN0cnVjdCB1Y29udGV4dCopdWM7CisrICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3MpIHsKKyAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlLCB1Y19wdHItPnVjX21jb250ZXh0LmZwcmVncywKKyAgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlKSk7CitAQCAtNDk0LDcgKzQ5NCw3IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6U2ltdWxhdGVTaWduYWxEZWxpdmVyeShpbnQgc2lnKSB7CisgICAvLyBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoKS4KKyAgIHNpZ2luZm8uc2lfY29kZSA9IFNJX1VTRVI7CisgICBzaWdpbmZvLnNpX3BpZCA9IGdldHBpZCgpOworLSAgc3RydWN0IHVjb250ZXh0IGNvbnRleHQ7CisrICB1Y29udGV4dF90IGNvbnRleHQ7CisgICBnZXRjb250ZXh0KCZjb250ZXh0KTsKKyAgIHJldHVybiBIYW5kbGVTaWduYWwoc2lnLCAmc2lnaW5mbywgJmNvbnRleHQpOworIH0KK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaCBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCitpbmRleCBkYWJhNTdlMC4uMjU1OThhMjkgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAorKysrIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKK0BAIC0xOTEsMTEgKzE5MSwxMSBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyIHsKKyAgIHN0cnVjdCBDcmFzaENvbnRleHQgeworICAgICBzaWdpbmZvX3Qgc2lnaW5mbzsKKyAgICAgcGlkX3QgdGlkOyAgLy8gdGhlIGNyYXNoaW5nIHRocmVhZC4KKy0gICAgc3RydWN0IHVjb250ZXh0IGNvbnRleHQ7CisrICAgIHVjb250ZXh0X3QgY29udGV4dDsKKyAjaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgICAgLy8gI2lmZGVmIHRoaXMgb3V0IGJlY2F1c2UgRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgZm9yIExpbnV4IEFSTS4KKyAgICAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiBzdHJ1Y3QKKy0gICAgLy8gdWNvbnRleHQgc28gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCisrICAgIC8vIHVjb250ZXh0X3Qgc28gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCisgICAgIGZwc3RhdGVfdCBmbG9hdF9zdGF0ZTsKKyAjZW5kaWYKKyAgIH07CitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYworaW5kZXggMzc2NGVlYzIuLjgwYWQ1YzQ2IDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCitAQCAtNTkzLDcgKzU5Myw3IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7CisgCisgICB2b2lkKiBBbGxvYyh1bnNpZ25lZCBieXRlcykgeyByZXR1cm4gZHVtcGVyXy0+YWxsb2NhdG9yKCktPkFsbG9jKGJ5dGVzKTsgfQorIAorLSAgY29uc3Qgc3RydWN0IHVjb250ZXh0KiBjb25zdCB1Y29udGV4dF87CisrICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87CisgI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOworICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYyBiL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworaW5kZXggZDExYmE2ZTUuLmM3MTYxNDM0IDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKK0BAIC0xMzIzLDcgKzEzMjMsNyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICBjb25zdCBpbnQgZmRfOyAgLy8gRmlsZSBkZXNjcmlwdG9yIHdoZXJlIHRoZSBtaW5pZHVtIHNob3VsZCBiZSB3cml0dGVuLgorICAgY29uc3QgY2hhciogcGF0aF87ICAvLyBQYXRoIHRvIHRoZSBmaWxlIHdoZXJlIHRoZSBtaW5pZHVtIHNob3VsZCBiZSB3cml0dGVuLgorIAorLSAgY29uc3Qgc3RydWN0IHVjb250ZXh0KiBjb25zdCB1Y29udGV4dF87ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCisrICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCisgI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOyAgLy8gZGl0dG8KKyAjZW5kaWYKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtVHVybi1vZmYtc2lnbi1jb21wYXJlLWZvci1tdXNsLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLVR1cm4tb2ZmLXNpZ24tY29tcGFyZS1mb3ItbXVzbC1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYmFlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLVR1cm4tb2ZmLXNpZ24tY29tcGFyZS1mb3ItbXVzbC1saWJjLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYWI4ZGNhZDI1ZDBhYzFmM2E4ODgxNGU3ODc5NGU1ZDQ1MGRlMTVhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDIzOjEyOjUxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBUdXJuIG9mZiBzaWduLWNvbXBhcmUgZm9yIG11c2wtbGliYworCitGaXgKKworLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjOjIzNDoxNDogZXJyb3I6ICAgICAgICAgICAgICAgICBjb21wYXJpc29uIG9mIGludGVnZXJzIG9mIGRpZmZlcmVudCBzaWduczogJ3Vuc2lnbmVkIGxvbmcnIGFuZCAnaW50JyBbLVdlcnJvciwtV3NpZ24tY29tcGFyZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHIgPSBDTVNHX05YVEhEUigmbXNnLCBoZHIpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKy9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN2hmLW5lb24tdmZwdjQtYmVjLWxpbnV4LW11c2xlYWJpL2JyZWFrcGFkLzFfMS4wK2dpdDk5OS1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmg6Mjg4OjQ0OiBub3RlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCBmcm9tIG1hY3JvICdDTVNHX05YVEhEUicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19DTVNHX0xFTihjbXNnKSArIHNpemVvZihzdHJ1Y3QgY21zZ2hkcikgPj0gX19NSERSX0VORChtaGRyKSAtICh1bnNpZ25lZCBjaGFyICopKGNtc2cpIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiBeICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIGVycm9yIGdlbmVyYXRlZC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjCitpbmRleCAyNTk2YWZkZS4uMmZhZWI5ZTUgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYworQEAgLTIzMCw4ICsyMzAsMTggQEAgQ3Jhc2hHZW5lcmF0aW9uU2VydmVyOjpDbGllbnRFdmVudChzaG9ydCByZXZlbnRzKQorICAgLy8gV2FsayB0aGUgY29udHJvbCBwYXlsb2FkIGFuZCBleHRyYWN0IHRoZSBmaWxlIGRlc2NyaXB0b3IgYW5kIHZhbGlkYXRlZCBwaWQuCisgICBwaWRfdCBjcmFzaGluZ19waWQgPSAtMTsKKyAgIGludCBzaWduYWxfZmQgPSAtMTsKKysjaWZuZGVmIF9fR0xJQkNfXworKyAgLy8gSW4gbXVzbC1saWJjLCBDTVNHX05YVEhEUiB0eXBlY2FzdHMgY2hhciogdG8gY21zZ2hkciogd2hpY2ggY2F1c2VzCisrICAvLyBjbGFuZyB0byB0aHJvdyBzaWduLWNvbXBhcmUgd2FybmluZy4gVGhpcyBpcyB0byBzdXBwcmVzcyB0aGUgd2FybmluZworKyAgLy8gaW5saW5lLgorKyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKysgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NpZ24tY29tcGFyZSIKKysjZW5kaWYKKyAgIGZvciAoc3RydWN0IGNtc2doZHIgKmhkciA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGhkcjsKKyAgICAgICAgaGRyID0gQ01TR19OWFRIRFIoJm1zZywgaGRyKSkgeworKyNpZm5kZWYgX19HTElCQ19fCisrICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisrI2VuZGlmCisgICAgIGlmIChoZHItPmNtc2dfbGV2ZWwgIT0gU09MX1NPQ0tFVCkKKyAgICAgICBjb250aW51ZTsKKyAgICAgaWYgKGhkci0+Y21zZ190eXBlID09IFNDTV9SSUdIVFMpIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4M2Q2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNjg1ODBjYjYyZjc3MTE3YmUzMTY0YzUyYWJhZTY4Zjc1ZThlNTlhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+CitEYXRlOiBTdW4sIDEgRmViIDIwMTUgMTQ6MjY6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGluY2x1ZGUgPHN5cy9yZWcuaD4gdG8gZ2V0IF9fV09SRFNJWkUgb24gbXVzbCBsaWJjCisKKy0tLQorIHNyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK0luZGV4OiBnaXQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAorKysrIGdpdC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAorQEAgLTMzLDEwICszMywxMyBAQAorICNpZm5kZWYgQ09NTU9OX0xJTlVYX0VMRl9DT1JFX0RVTVBfSF8KKyAjZGVmaW5lIENPTU1PTl9MSU5VWF9FTEZfQ09SRV9EVU1QX0hfCisgCisrI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxlbGYuaD4KKyAjaW5jbHVkZSA8bGluay5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKy0KKysjaWZkZWYgSEFWRV9TWVNfUkVHX0gKKysjaW5jbHVkZSA8c3lzL3JlZy5oPgorKyNlbmRpZgorICNpbmNsdWRlICJjb21tb24vbWVtb3J5X3JhbmdlLmgiCisgCisgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWxzcy1NYXRjaC1zeXNjYWxscy10by1tYXRjaC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1sc3MtTWF0Y2gtc3lzY2FsbHMtdG8tbWF0Y2gtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjg5MmFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1sc3MtTWF0Y2gtc3lzY2FsbHMtdG8tbWF0Y2gtbXVzbC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDVmNzMzM2U0ZjdiNzQ4NTU5OGJkNzFhYTgwOTY3ZTFhMTZhN2Y5MDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAyMjo1Nzo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsc3M6IE1hdGNoIHN5c2NhbGxzIHRvIG1hdGNoIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK0luZGV4OiBsc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsc3Mub3JpZy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIGxzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorQEAgLTc5Myw2ICs3OTMsOSBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7CisgI2RlZmluZSBGVVRFWF9UUllMT0NLX1BJX1BSSVZBVEUgIChGVVRFWF9UUllMT0NLX1BJIHwgRlVURVhfUFJJVkFURV9GTEFHKQorICNlbmRpZgorIAorKyNpZm5kZWYgX19OUl9mc3RhdGF0CisrI2RlZmluZSBfX05SX2ZzdGF0YXQgX19OUl9mc3RhdGF0NjQKKysjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICNpZm5kZWYgQVJDSF9TRVRfR1MKK0BAIC05MjQsNiArOTI3LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICNpZm5kZWYgX19OUl9mYWxsb2NhdGUKKyAjZGVmaW5lIF9fTlJfZmFsbG9jYXRlICAgICAgICAgIDMyNAorICNlbmRpZgorKworIC8qIEVuZCBvZiBpMzg2IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAjZWxpZiBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykKKyAjaWZuZGVmIF9fTlJfc2V0cmVzdWlkCitAQCAtMTIxMSw2ICsxMjE1LDEyIEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKKyAjaWZuZGVmIF9fTlJfZmFsbG9jYXRlCisgI2RlZmluZSBfX05SX2ZhbGxvY2F0ZSAgICAgICAgICAyODUKKyAjZW5kaWYKKysjaWZuZGVmIF9fTlJfcHJlYWQKKysjZGVmaW5lIF9fTlJfcHJlYWQgX19OUl9wcmVhZDY0CisrI2VuZGlmCisrI2lmbmRlZiBfX05SX3B3cml0ZQorKyNkZWZpbmUgX19OUl9wd3JpdGUgX19OUl9wd3JpdGU2NAorKyNlbmRpZgorIC8qIEVuZCBvZiB4ODYtNjQgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICNpZiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAyLUF2b2lkLXVzaW5nLWJhc2VuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMi1Bdm9pZC11c2luZy1iYXNlbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzYyODI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMi1Bdm9pZC11c2luZy1iYXNlbmFtZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDgwNjk2NGY4NTI3NzNlNDI3ZmVhODJhNzcxNmQ0NGNlM2JlNDQ5OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI3OjMyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBBdm9pZCB1c2luZyBiYXNlbmFtZQorCistLS0KKyBzcmMvY29tbW9uL2xpbnV4L2R1bXBfc3ltYm9scy5jYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vbGludXgvZHVtcF9zeW1ib2xzLmNjIGIvc3JjL2NvbW1vbi9saW51eC9kdW1wX3N5bWJvbHMuY2MKK2luZGV4IGQwMjljYTE0Li42YWM0YTE3YiAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vbGludXgvZHVtcF9zeW1ib2xzLmNjCisrKysgYi9zcmMvY29tbW9uL2xpbnV4L2R1bXBfc3ltYm9scy5jYworQEAgLTg4MSw5ICs4ODEsOSBAQCBjb25zdCBjaGFyKiBFbGZBcmNoaXRlY3R1cmUoY29uc3QgdHlwZW5hbWUgRWxmQ2xhc3M6OkVoZHIqIGVsZl9oZWFkZXIpIHsKKyAvLyBsYXN0IHNsYXNoLCBvciB0aGUgd2hvbGUgZmlsZW5hbWUgaWYgdGhlcmUgYXJlIG5vIHNsYXNoZXMuCisgc3RyaW5nIEJhc2VGaWxlTmFtZShjb25zdCBzdHJpbmcgJmZpbGVuYW1lKSB7CisgICAvLyBMb3RzIG9mIGNvcGllcyEgIGJhc2VuYW1lJ3MgYmVoYXZpb3IgaXMgbGVzcyB0aGFuIGlkZWFsLgorLSAgY2hhciogY19maWxlbmFtZSA9IHN0cmR1cChmaWxlbmFtZS5jX3N0cigpKTsKKy0gIHN0cmluZyBiYXNlID0gYmFzZW5hbWUoY19maWxlbmFtZSk7CistICBmcmVlKGNfZmlsZW5hbWUpOworKyAgY29uc3QgY2hhciAqY19maWxlbmFtZSA9IGZpbGVuYW1lLmNfc3RyKCk7CisrICBjb25zdCBjaGFyICpwID0gc3RycmNocihjX2ZpbGVuYW1lLCAnLycpOworKyAgc3RyaW5nIGJhc2UgPSBwID8gcCsxIDogY19maWxlbmFtZTsKKyAgIHJldHVybiBiYXNlOworIH0KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA5N2NkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gMGJhMWIzZTM1ZTdjNzQzYjY3MGJlZGMzZTkwMDAxZGZiODY4ZGYxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+CitEYXRlOiBTdW4sIDEgRmViIDIwMTUgMTM6NDU6NTEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIFVzZSBfZnBzdGF0ZSBpbnN0ZWFkIG9mIF9saWJjX2Zwc3RhdGUgb24gbGludXgKKworZ2xpYmMgZGVmaW5lcyBib3RoLiBtdXNsIGxpYmMgb25seSB0aGUgZm9ybWVyLgorLS0tCisgc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjIHwgNCArKy0tCisgc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmggIHwgMiArLQorIHNyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitAQCAtNDksNyArNDksNyBAQCB1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uCisgfQorIAorIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUqIGZwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9mcHN0YXRlKiBmcCkgeworICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMtPnVjX21jb250ZXh0LmdyZWdzOworIAorICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9YODZfRlVMTCB8CitAQCAtOTcsNyArOTcsNyBAQCB1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uCisgfQorIAorIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUqIGZwcmVncykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnByZWdzKSB7CisgICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3M7CisgCisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX0FNRDY0X0ZVTEw7CitJbmRleDogZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK0BAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBVQ29udGV4dFJlYWRlciB7CisgICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVjdHVyZXMuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUqIGZwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnApOworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpOworSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCisrKysgZ2l0L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCitAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyOworICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorIHR5cGVkZWYgc3RydWN0IGZwc2ltZF9jb250ZXh0IGZwc3RhdGVfdDsKKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorLXR5cGVkZWYgc3RydWN0IF9saWJjX2Zwc3RhdGUgZnBzdGF0ZV90OworK3R5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZwc3RhdGVfdDsKKyAjZW5kaWYKKyAKKyAvLyBUaGVzZSBlbnRyaWVzIHN0b3JlIGEgbGlzdCBvZiBtZW1vcnkgcmVnaW9ucyB0aGF0IHRoZSBjbGllbnQgd2FudHMgaW5jbHVkZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMi1zeXMtc2lnbmFsLmgtaXMtYS1ub25wb3J0YWJsZS1hbGlhcy1mb3Itc2lnbmFsLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkOWE5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMTU1ODJlMTljMjU0NWQ1ZmZlOGZmMDdmOTU3ZDBlZDYwMmFlY2E3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDIzOjE1OjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSA8c3lzL3NpZ25hbC5oPiBpcyBhIG5vbnBvcnRhYmxlIGFsaWFzIGZvciA8c2lnbmFsLmg+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK2luZGV4IDA1OTM2ZDI4Li5jY2EwMjNmZCAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNzgsNyArNzgsNyBAQAorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKy0jaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgorKyNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisgI2luY2x1ZGUgPHN5cy91c2VyLmg+CisgI2luY2x1ZGUgPHVjb250ZXh0Lmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLURvbnQtaW5jbHVkZS1zdGFiLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLURvbnQtaW5jbHVkZS1zdGFiLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5M2VhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDMtRG9udC1pbmNsdWRlLXN0YWIuaC5wYXRjaApAQCAtMCwwICsxLDg4IEBACitGcm9tIDU2OWFmNzEyZGE5NDYzNzA5MTA4MDk0M2Y2YTBkNjljY2IzNTg2NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAyMzoyNDowOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvNV0gRG9udCBpbmNsdWRlIHN0YWIuaAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MgICAgICAgICAgfCAgMSAtCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaCAgICAgICAgICAgfCAxMiArKysrKysrKysrKy0KKyBzcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYyB8ICAxIC0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYworKysrIGdpdC9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYworQEAgLTM0LDcgKzM0LDkgQEAKKyAjaW5jbHVkZSAiY29tbW9uL3N0YWJzX3JlYWRlci5oIgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaWZkZWYgSEFWRV9TVEFCX0gKKyAjaW5jbHVkZSA8c3RhYi5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSA8c3RyaW5nPgorSW5kZXg6IGdpdC9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAorKysrIGdpdC9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oCitAQCAtNTgsNiArNTgsMzAgQEAKKyAjZWxpZiBkZWZpbmVkKEhBVkVfQV9PVVRfSCkKKyAjaW5jbHVkZSA8YS5vdXQuaD4KKyAjZW5kaWYKKysvLyBEZWZpbml0aW9ucyBmcm9tIDxzdGFiLmg+IGFuZCA8YS5vdXQuaD4gZm9yIHN5c3RlbXMgd2hpY2gKKysvLyBkbyBub3QgaGF2ZSB0aGVtCisrI2lmbmRlZiBIQVZFX0FfT1VUX0gKKysjdW5kZWYgTl9VTkRGCisrI2RlZmluZSBOX1VOREYgMHgwCisrI2lmbmRlZiBOX0ZVTgorKyNkZWZpbmUgTl9GVU4gMHgyNAorKyNlbmRpZgorKyNpZm5kZWYgTl9TTElORQorKyNkZWZpbmUgTl9TTElORSAweDQ0CisrI2VuZGlmCisrI2lmbmRlZiBOX1NPCisrI2RlZmluZSBOX1NPIDB4NjQKKysjZW5kaWYKKysjaWZuZGVmIE5fTFNZTQorKyNkZWZpbmUgTl9MU1lNIDB4ODAKKysjZW5kaWYKKysjaWZuZGVmIE5fQklOQ0wKKysjZGVmaW5lIE5fQklOQ0wgMHg4MgorKyNlbmRpZgorKyNpZm5kZWYgTl9TT0wKKysjZGVmaW5lIE5fU09MIDB4ODQKKysjZW5kaWYKKysjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlIDx2ZWN0b3I+CitJbmRleDogZ2l0L3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKKysrKyBnaXQvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKK0BAIC0zMyw3ICszMyw5IEBACisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpZmRlZiBIQVZFX1NUQUJfSAorICNpbmNsdWRlIDxzdGFiLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC03Miw3ICs3Miw3IEBAIEFDX0FSR19FTkFCTEUobTMyLAorIEFDX0hFQURFUl9TVERDCisgQUNfU1lTX0xBUkdFRklMRQorIEFYX1BUSFJFQUQKKy1BQ19DSEVDS19IRUFERVJTKFthLm91dC5oIHN5cy9yYW5kb20uaF0pCisrQUNfQ0hFQ0tfSEVBREVSUyhbYS5vdXQuaCBzdGFiLmggc3lzL3JhbmRvbS5oXSkKKyBBQ19DSEVDS19GVU5DUyhbYXJjNHJhbmRvbSBnZXRyYW5kb21dKQorIAorIEFYX0NYWF9DT01QSUxFX1NURENYWCgxMSwgbm9leHQsIG1hbmRhdG9yeSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDMtRml4LWNvbmZsaWN0LWJldHdlZW4tbXVzbC1saWJjLWRpcmVudC5oLWFuZC1sc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MTAwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gN2FhMjY2NTQ1ZGFiZjk5MzRjY2Q0NGQ0ZmM4MzYwNDA0OTcxNTliZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+CitEYXRlOiBTdW4sIDEgRmViIDIwMTUgMTM6NDE6MDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCBjb25mbGljdCBiZXR3ZWVuIG11c2wgbGliYyA8ZGlyZW50Lmg+IGFuZCBsc3MKKworSW5jbHVkZSA8ZGlyZW50Lmg+IGxhdGUgdG8gYXZvaWQgdGhlIG1hY3JvIGdldGRlbnRzNjQgaW4gbXVzbAorbGliYydzIDxkaXJlbnQuaD4gdG8gY29uZmxpY3Qgd2l0aCBsaW51eF9zeWNhbGxfc3VwcG9ydC5oLgorLS0tCisgc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKK2luZGV4IDI2YzUwYTVjLi4yNTk2YWZkZSAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYworKysrIGIvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjCitAQCAtMjgsNyArMjgsNiBAQAorIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KK0BAIC00OSw2ICs0OCw4IEBACisgI2luY2x1ZGUgImNvbW1vbi9saW51eC9ndWlkX2NyZWF0b3IuaCIKKyAjaW5jbHVkZSAiY29tbW9uL2xpbnV4L3NhZmVfcmVhZGxpbmsuaCIKKyAKKysjaW5jbHVkZSA8ZGlyZW50Lmg+CisrCisgc3RhdGljIGNvbnN0IGNoYXIga0NvbW1hbmRRdWl0ID0gJ3gnOworIAorIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgeworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNC1lbGZfcmVhZGVyLmNjLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNC1lbGZfcmVhZGVyLmNjLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNWExNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDA0LWVsZl9yZWFkZXIuY2MtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA2ODBmOTU5MGQxOWE2ZTM1YzdjNTU4N2UzZjRkODE5NGFhYjBmY2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTQgU2VwIDIwMTcgMjM6Mjg6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIGVsZl9yZWFkZXIuY2M6IGluY2x1ZGUgPHN5cy9yZWcuaD4gdG8gZ2V0IF9fV09SRFNJWkUgb24KKyBtdXNsIGxpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb21tb24vZHdhcmYvZWxmX3JlYWRlci5jYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogZ2l0L3NyYy9jb21tb24vZHdhcmYvZWxmX3JlYWRlci5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jb21tb24vZHdhcmYvZWxmX3JlYWRlci5jYworKysrIGdpdC9zcmMvY29tbW9uL2R3YXJmL2VsZl9yZWFkZXIuY2MKK0BAIC0yOSwxMCArMjksMTMgQEAKKyAjaWZuZGVmIF9HTlVfU09VUkNFCisgI2RlZmluZSBfR05VX1NPVVJDRSAgLy8gbmVlZGVkIGZvciBwcmVhZCgpCisgI2VuZGlmCistCisrI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKysjaWZkZWYgSEFWRV9TWVNfUkVHX0gKKysjaW5jbHVkZSA8c3lzL3JlZy5oPgorKyNlbmRpZgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC03Miw3ICs3Miw3IEBAIEFDX0FSR19FTkFCTEUobTMyLAorIEFDX0hFQURFUl9TVERDCisgQUNfU1lTX0xBUkdFRklMRQorIEFYX1BUSFJFQUQKKy1BQ19DSEVDS19IRUFERVJTKFthLm91dC5oIHN0YWIuaCBzeXMvcmFuZG9tLmhdKQorK0FDX0NIRUNLX0hFQURFUlMoW2Eub3V0Lmggc3RhYi5oIHN5cy9yYW5kb20uaCBzeXMvcmVnLmhdKQorIEFDX0NIRUNLX0ZVTkNTKFthcmM0cmFuZG9tIGdldHJhbmRvbV0pCisgCisgQVhfQ1hYX0NPTVBJTEVfU1REQ1hYKDExLCBub2V4dCwgbWFuZGF0b3J5KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1JbXBvcnQtbmVjZXNzYXJ5LWRlZmluaXRpb25zLWZyb20tc3RhYi5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1JbXBvcnQtbmVjZXNzYXJ5LWRlZmluaXRpb25zLWZyb20tc3RhYi5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZGU4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDA1LUltcG9ydC1uZWNlc3NhcnktZGVmaW5pdGlvbnMtZnJvbS1zdGFiLmgucGF0Y2gKQEAgLTAsMCArMSwxOTkgQEAKK0Zyb20gZmE3YTNiNzMxMjMwN2FjYWQwMDQ1NTQ5ZDVmMzA2ZTdmZDExNzgwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+CitEYXRlOiBTdW4sIDEgRmViIDIwMTUgMTQ6MzQ6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzZdIEltcG9ydCBuZWNlc3NhcnkgZGVmaW5pdGlvbnMgZnJvbSBzdGFiLmgKKworLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQorIHNyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaCAgIHwgMTAwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb21tb24vY29tbW9uLmd5cCAgICAgICAgICAgICAgIHwgICAxIC0KKyBzcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYyAgICAgICAgICB8ICAgMSAtCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaCAgICAgICAgICAgfCAgMTMgKysrLS0KKyBzcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYyB8ICAgMSAtCisgNiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaAorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyMjIzOTIwLi4wZTU1Y2Q5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03Myw3ICs3Myw2IEBAIEFDX0hFQURFUl9TVERDCisgQUNfU1lTX0xBUkdFRklMRQorIG00X2luY2x1ZGUobTQvYXhfcHRocmVhZC5tNCkKKyBBWF9QVEhSRUFECistQUNfQ0hFQ0tfSEVBREVSUyhbYS5vdXQuaF0pCisgCisgIyBPbmx5IGJ1aWxkIExpbnV4IGNsaWVudCBsaWJzIHdoZW4gY29tcGlsaW5nIGZvciBMaW51eAorIGNhc2UgJGhvc3QgaW4KK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmggYi9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggY2Q5MjkwMi4uMDAwMDAwMAorLS0tIGEvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oCisrKysgL2Rldi9udWxsCitAQCAtMSwxMDAgKzAsMCBAQAorLS8vIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4KKy0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLS8vCistLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CistLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLS8vIG1ldDoKKy0vLworLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CistLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCistLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLS8vIGRpc3RyaWJ1dGlvbi4KKy0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCistLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLS8vCistLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCistLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCistLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCistLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCistLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCistLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistCistI2lmbmRlZiBHT09HTEVfQlJFQUtQQURfQ09NTU9OX0FORFJPSURfSU5DTFVERV9TVEFCX0gKKy0jZGVmaW5lIEdPT0dMRV9CUkVBS1BBRF9DT01NT05fQU5EUk9JRF9JTkNMVURFX1NUQUJfSAorLQorLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKy0KKy0jaWZkZWYgX19CSU9OSUNfSEFWRV9TVEFCX0gKKy0jaW5jbHVkZSA8c3RhYi5oPgorLSNlbHNlCistCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIiB7CistI2VuZGlmICAvLyBfX2NwbHVzcGx1cworLQorLSNkZWZpbmUgX1NUQUJfQ09ERV9MSVNUICAgICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFVOREYsMHgwMCkgICBcCistICBfU1RBQl9DT0RFX0RFRihHU1lNLDB4MjApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRk5BTUUsMHgyMikgIFwKKy0gIF9TVEFCX0NPREVfREVGKEZVTiwweDI0KSAgICBcCistICBfU1RBQl9DT0RFX0RFRihTVFNZTSwweDI2KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTENTWU0sMHgyOCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKE1BSU4sMHgyYSkgICBcCistICBfU1RBQl9DT0RFX0RFRihQQywweDMwKSAgICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTlNZTVMsMHgzMikgIFwKKy0gIF9TVEFCX0NPREVfREVGKE5PTUFQLDB4MzQpICBcCistICBfU1RBQl9DT0RFX0RFRihPQkosMHgzOCkgICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoT1BULDB4M2MpICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFJTWU0sMHg0MCkgICBcCistICBfU1RBQl9DT0RFX0RFRihNMkMsMHg0MikgICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU0xJTkUsMHg0NCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKERTTElORSwweDQ2KSBcCistICBfU1RBQl9DT0RFX0RFRihCU0xJTkUsMHg0OCkgXAorLSAgX1NUQUJfQ09ERV9ERUYoQlJPV1MsMHg0OCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKERFRkQsMHg0YSkgICBcCistICBfU1RBQl9DT0RFX0RFRihFSERFQ0wsMHg1MCkgXAorLSAgX1NUQUJfQ09ERV9ERUYoTU9EMiwweDUwKSAgIFwKKy0gIF9TVEFCX0NPREVfREVGKENBVENILDB4NTQpICBcCistICBfU1RBQl9DT0RFX0RFRihTU1lNLDB4NjApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU08sMHg2NCkgICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKExTWU0sMHg4MCkgICBcCistICBfU1RBQl9DT0RFX0RFRihCSU5DTCwweDgyKSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU09MLDB4ODQpICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFBTWU0sMHhhMCkgICBcCistICBfU1RBQl9DT0RFX0RFRihFSU5DTCwweGEyKSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRU5UUlksMHhhNCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKExCUkFDLDB4YzApICBcCistICBfU1RBQl9DT0RFX0RFRihFWENMLDB4YzIpICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU0NPUEUsMHhjNCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKFJCUkFDLDB4ZTApICBcCistICBfU1RBQl9DT0RFX0RFRihCQ09NTSwweGUyKSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRUNPTU0sMHhlNCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKEVDT01MLDB4ZTgpICBcCistICBfU1RBQl9DT0RFX0RFRihOQlRFWFQsMHhmMCkgXAorLSAgX1NUQUJfQ09ERV9ERUYoTkJEQVRBLDB4ZjIpIFwKKy0gIF9TVEFCX0NPREVfREVGKE5CQlNTLDB4ZjQpICBcCistICBfU1RBQl9DT0RFX0RFRihOQlNUUywweGY2KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTkJMQ1MsMHhmOCkgIFwKKy0gIF9TVEFCX0NPREVfREVGKExFTkcsMHhmZSkKKy0KKy1lbnVtIF9fc3RhYl9kZWJ1Z19jb2RlIHsKKy0jZGVmaW5lIF9TVEFCX0NPREVfREVGKHgseSkgIE5fIyN4ID0geSwKKy1fU1RBQl9DT0RFX0xJU1QKKy0jdW5kZWYgX1NUQUJfQ09ERV9ERUYKKy19OworLQorLSNpZmRlZiBfX2NwbHVzcGx1cworLX0gIC8vIGV4dGVybiAiQyIKKy0jZW5kaWYgIC8vIF9fY3BsdXNwbHVzCistCistI2VuZGlmICAvLyBfX0JJT05JQ19IQVZFX1NUQUJfSAorLQorLSNlbmRpZiAgLy8gR09PR0xFX0JSRUFLUEFEX0NPTU1PTl9BTkRST0lEX0lOQ0xVREVfU1RBQl9ICitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb21tb24uZ3lwIGIvc3JjL2NvbW1vbi9jb21tb24uZ3lwCitpbmRleCBmMDFlZGU1Li5jNDlmZjg1IDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi9jb21tb24uZ3lwCisrKysgYi9zcmMvY29tbW9uL2NvbW1vbi5neXAKK0BAIC00Niw3ICs0Niw2IEBACisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL2VsZi5oJywKKyAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvbGluay5oJywKKyAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvc2dpZGVmcy5oJywKKy0gICAgICAgICdhbmRyb2lkL2luY2x1ZGUvc3RhYi5oJywKKyAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvc3lzL3Byb2Nmcy5oJywKKyAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvc3lzL3NpZ25hbC5oJywKKyAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvc3lzL3VzZXIuaCcsCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MgYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYworaW5kZXggNjAxOWZjNy4uOTU2MmNhYSAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjCisrKysgYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYworQEAgLTM0LDcgKzM0LDYgQEAKKyAjaW5jbHVkZSAiY29tbW9uL3N0YWJzX3JlYWRlci5oIgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8c3RhYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSA8c3RyaW5nPgorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmggYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oCitpbmRleCBkODlhZmMwLi41OTFmMDA3IDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAorKysrIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAorQEAgLTUzLDEyICs1MywxOSBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jaWZkZWYgSEFWRV9BX09VVF9ICistI2luY2x1ZGUgPGEub3V0Lmg+CistI2VuZGlmCisgI2lmZGVmIEhBVkVfTUFDSF9PX05MSVNUX0gKKyAjaW5jbHVkZSA8bWFjaC1vL25saXN0Lmg+CisgI2VuZGlmCisrLy8gRGVmaW5pdGlvbnMgZnJvbSA8c3RhYi5oPiBhbmQgPGEub3V0Lmg+IGZvciBzeXN0ZW1zIHdoaWNoCisrLy8gZG8gbm90IGhhdmUgdGhlbQorKyN1bmRlZiBOX1VOREYKKysjZGVmaW5lIE5fVU5ERiAweDAKKysjZGVmaW5lIE5fRlVOIDB4MjQKKysjZGVmaW5lIE5fU0xJTkUgMHg0NAorKyNkZWZpbmUgTl9TTyAweDY0CisrI2RlZmluZSBOX0xTWU0gMHg4MAorKyNkZWZpbmUgTl9CSU5DTCAweDgyCisrI2RlZmluZSBOX1NPTCAweDg0CisgCisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKK2luZGV4IGE4NGRhMWMuLjg1NGFjNDIgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYworKysrIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKK0BAIC0zMyw3ICszMyw2IEBACisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxzdGFiLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistLSAKKzIuMC41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtbWQyY29yZS1SZXBsYWNlLWJhc2VuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1tZDJjb3JlLVJlcGxhY2UtYmFzZW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyYzFlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtbWQyY29yZS1SZXBsYWNlLWJhc2VuYW1lLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYmJmMmI1ZWQ1ZDkzYjIyN2RmOGFlYTU3MjY3MjdiNDhlMjlmNjc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDIzOjM1OjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBtZDJjb3JlOiBSZXBsYWNlIGJhc2VuYW1lKCkKKworbXVzbCBkb2VzIG5vdCBwcm92aWRlIGl0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjIGIvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCitpbmRleCA2YTllMjhlYi4uNTJiODFjMjIgMTAwNjQ0CistLS0gYS9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKysrKyBiL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworQEAgLTEwNyw2ICsxMDcsOSBAQCBzdHJ1Y3QgT3B0aW9ucyB7CisgCisgc3RhdGljIHZvaWQKKyBVc2FnZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKSB7CisrICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lID0gYXJndlswXTs7CisrICBjb25zdCBjaGFyICpwID0gc3RycmNocihjX2ZpbGVuYW1lLCAnLycpOworKyAgY29uc3QgY2hhciAqYmFzZSA9IHAgPyBwKzEgOiBjX2ZpbGVuYW1lOworICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICJVc2FnZTogJXMgW29wdGlvbnNdIDxtaW5pZHVtcCBmaWxlPlxuIgorICAgICAgICAgICAiXG4iCitAQCAtMTMzLDcgKzEzNiw3IEBAIFVzYWdlKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pIHsKKyAgICAgICAgICAgIiAgICAgICAgICAgICBsb29rdXBzIHRvIGJlIGRvbmUgaW4gdGhpcyBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW1cbiIKKyAgICAgICAgICAgIiAgICAgICAgICAgICBsYXlvdXQgYXMgaXQgZXhpc3RzIGluIHRoZSBjcmFzaGluZyBpbWFnZS4gIFRoaXMgcGF0aCBzaG91bGQgZW5kXG4iCisgICAgICAgICAgICIgICAgICAgICAgICAgd2l0aCBhIHNsYXNoIGlmIGl0J3MgYSBkaXJlY3RvcnkuICBlLmcuIC92YXIvbGliL2JyZWFrcGFkL1xuIgorLSAgICAgICAgICAiIiwgYmFzZW5hbWUoYXJndlswXSkpOworKyAgICAgICAgICAiIiwgYmFzZSk7CisgfQorIAorIHN0YXRpYyB2b2lkCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9tY29udGV4dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkL21jb250ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZTA3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9tY29udGV4dC5wYXRjaApAQCAtMCwwICsxLDc3IEBACittYXAgdGhlIG1jb250ZXh0X3Qgc3RydWN0dXJlIGZvciBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtuZWVkIHRvIGNvbnNpZGVyIEFuZHJvaWRdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK0BAIC0yMjksNyArMjI5LDYgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZQorIH0KKyAKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorLQorIHVpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7CisgICByZXR1cm4gbWNvbnRleHQucGM7CisgfQorQEAgLTI2Myw4ICsyNjIsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZQorICAgb3V0LT5jYXVzZSA9IDA7IC8vIE5vdCBzdG9yZWQgaW4gbWNvbnRleHQKKyAKKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9NSVBTX0ZQUl9DT1VOVDsgKytpKQorKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgb3V0LT5mbG9hdF9zYXZlLnJlZ3NbaV0gPSBtY29udGV4dC5mcHJlZ3MuZnBfci5mcF9mcmVnc1tpXS5fZnBfZnJlZ3M7CistCisrI2Vsc2UKKysgICAgb3V0LT5mbG9hdF9zYXZlLnJlZ3NbaV0gPSBtY29udGV4dC5mcHJlZ3NbaV07CisrI2VuZGlmCisgICBvdXQtPmZsb2F0X3NhdmUuZnBjc3IgPSBtY29udGV4dC5mcGNfY3NyOworICNpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgb3V0LT5mbG9hdF9zYXZlLmZpciA9IG1jb250ZXh0LmZwY19laXI7CitJbmRleDogZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworKysrIGdpdC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKK0BAIC0yNDcsOCArMjQ3LDExIEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0MKKyAgIG91dC0+Y2F1c2UgPSAwOyAgLy8gTm90IHJlcG9ydGVkIGluIHNpZ25hbCBjb250ZXh0LgorIAorICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX01JUFNfRlBSX0NPVU5UOyArK2kpCisrI2lmZGVmIF9fR0xJQkNfXworICAgICBvdXQtPmZsb2F0X3NhdmUucmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcHJlZ3MuZnBfci5mcF9kcmVnc1tpXTsKKy0KKysjZWxzZQorKyAgICBvdXQtPmZsb2F0X3NhdmUucmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcHJlZ3NbaV07CisrI2VuZGlmCisgICBvdXQtPmZsb2F0X3NhdmUuZnBjc3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBjX2NzcjsKKyAjaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRleHQuZnBjX2VpcjsgIC8vIFVudXNlZC4KK0luZGV4OiBnaXQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworKysrIGdpdC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworQEAgLTE5Niw3ICsxOTYsNyBAQCBib29sIExpbnV4Q29yZUR1bXBlcjo6RW51bWVyYXRlVGhyZWFkcygpCisgICAgICAgICBpbmZvLnRnaWQgPSBzdGF0dXMtPnByX3BncnA7CisgICAgICAgICBpbmZvLnBwaWQgPSBzdGF0dXMtPnByX3BwaWQ7CisgI2lmIGRlZmluZWQoX19taXBzX18pCistI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisrI2lmIGRlZmluZWQoX19BTkRST0lEX18pIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgICAgIGZvciAoaW50IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7IGkrKykKKyAgICAgICAgICAgaW5mby5tY29udGV4dC5ncmVnc1tpIC0gRUZfUjBdID0gc3RhdHVzLT5wcl9yZWdbaV07CisgI2Vsc2UgIC8vIF9fQU5EUk9JRF9fCitJbmRleDogZ2l0L3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworKysrIGdpdC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKK0BAIC01MTYsOCArNTE2LDEyIEBAIFBhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHIKKyAgIHRocmVhZC0+bWNvbnRleHQubG8zID0gcmF3cmVncy0+bG9bMl07CisgCisgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfTUlQU19GUFJfQ09VTlQ7ICsraSkgeworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgdGhyZWFkLT5tY29udGV4dC5mcHJlZ3MuZnBfci5mcF9mcmVnc1tpXS5fZnBfZnJlZ3MgPQorICAgICAgICAgcmF3cmVncy0+ZmxvYXRfc2F2ZS5yZWdzW2ldOworKyNlbHNlCisrICAgIHRocmVhZC0+bWNvbnRleHQuZnByZWdzW2ldID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5yZWdzW2ldOworKyNlbmRpZgorICAgfQorIAorICAgdGhyZWFkLT5tY29udGV4dC5mcGNfY3NyID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5mcGNzcjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkL21pcHNfYXNtX3NnaWRlZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9taXBzX2FzbV9zZ2lkZWZzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YmI1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9taXBzX2FzbV9zZ2lkZWZzLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0luZGV4OiBsc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsc3Mub3JpZy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIGxzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorQEAgLTExOCwyMSArMTE4LDEzIEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxlbmRpYW4uaD4KKyAKKyAjaWZkZWYgX19taXBzX18KKy0vKiBJbmNsdWRlIGRlZmluaXRpb25zIG9mIHRoZSBBQkkgY3VycmVudGx5IGluIHVzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCistI2lmZGVmIF9fQU5EUk9JRF9fCistLyogQW5kcm9pZCBkb2Vzbid0IGhhdmUgc2dpZGVmcy5oLCBidXQgZG9lcyBoYXZlIGFzbS9zZ2lkZWZzLmgsCistICogd2hpY2ggaGFzIHRoZSBkZWZpbml0aW9ucyB3ZSBuZWVkLgorLSAqLworICNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgorLSNlbHNlCistI2luY2x1ZGUgPHNnaWRlZnMuaD4KKy0jZW5kaWYKKyAjZW5kaWYKKyAjZW5kaWYKKyAKKyAvKiBUaGUgQW5kcm9pZCBOREsncyA8c3lzL3N0YXQuaD4gI2RlZmluZXMgdGhlc2UgbWFjcm9zIGFzIGFsaWFzZXMKKyAgKiB0byB0aGVpciBub24tNjQgY291bnRlcnBhcnRzLiBUbyBhdm9pZCBuYW1pbmcgY29uZmxpY3QsIHJlbW92ZSB0aGVtLiAqLworLSNpZmRlZiBfX0FORFJPSURfXworKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fZ2xpYmNfXykpCisgICAvKiBUaGVzZSBhcmUgcmVzdG9yZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgI3ByYWdtYSBwb3BfbWFjcm8gbmVhcgorICAgICogdGhlIGVuZCBvZiB0aGlzIGZpbGUuICovCisgIyBwcmFnbWEgcHVzaF9tYWNybygic3RhdDY0IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgppbmRleCAzNmMyYjYzLi41ZjZkODJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCkBAIC0xNywyNCArMTcsMzcgQEAKIAogUFYgPSAiMS4wK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVZfRk9STUFUID0gImJyZWFrcGFkX2dsb2dfZ21vY2tfZ3Rlc3RfcHJvdG9idWZfbHNzIgorU1JDUkVWX0ZPUk1BVCA9ICJicmVha3BhZF9ndGVzdF9wcm90b2J1Zl9sc3NfZ3lwIgogCi1TUkNSRVZfYnJlYWtwYWQgPSAiMmY2Y2I4NjZkNjE1ZDYyNDBhMThjNzUzNWM5OTRjNmJiOTNiMWJhNSIKLVNSQ1JFVl9nbG9nID0gImQ4Y2I0N2Y3N2QxYzMxNzc5ZjNmZjg5MGUxYTU3NDg0ODM3NzhkNmEiCi1TUkNSRVZfZ21vY2sgPSAiZjdkMDNkMjczNDc1OWVlMTJiNTdkMmRiY2I2OTU2MDdkODllOGUwNSIKK1NSQ1JFVl9icmVha3BhZCA9ICJkZWE4NjdlNzZmMjRlNGE2ODM5NTY4NGI5ZDFjZjI0YmNlZjgyZjIwIgogU1JDUkVWX2d0ZXN0ID0gImVjNDRjNmMxNjc1YzI1Yjk4MjdhYWNkMDhjMDI0MzNjY2NkZTc3ODAiCiBTUkNSRVZfcHJvdG9idWYgPSAiY2I2ZGQ0ZWY1ZjgyZTQxZTA2MTc5ZGNkNTdkM2IxZDkyNDZhZDZhYyIKLVNSQ1JFVl9sc3MgPSAiMTU0OWQyMGY2ZDNlN2Q2NmJiNGU2ODdjMGFiOWRhNDJjMmJmZjJhYyIKK1NSQ1JFVl9sc3MgPSAiYTkxNjMzZDE3MjQwN2Y2YzgzZGQ2OWFmMTE1MTBiMzdhZmViYjdmOSIKK1NSQ1JFVl9neXAgPSAiMzI0ZGQxNjZiN2MwYjM5ZDUxMzAyNmZhNTJkNjI4MGFjNmQ1Njc3MCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9icmVha3BhZDtuYW1lPWJyZWFrcGFkIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvZ2xvZy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3JjL3RoaXJkX3BhcnR5L2dsb2c7bmFtZT1nbG9nIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xlbW9jay5naXQ7ZGVzdHN1ZmZpeD1naXQvc3JjL3Rlc3Rpbmc7bmFtZT1nbW9jayBcCiAgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3NyYy90ZXN0aW5nL2d0ZXN0O25hbWU9Z3Rlc3QgXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7ZGVzdHN1ZmZpeD1naXQvc3JjL3RoaXJkX3BhcnR5L3Byb3RvYnVmL3Byb3RvYnVmO25hbWU9cHJvdG9idWYgXAogICAgICAgICAgICBnaXQ6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2xpbnV4LXN5c2NhbGwtc3VwcG9ydDtwcm90b2NvbD1odHRwcztkZXN0c3VmZml4PWdpdC9zcmMvdGhpcmRfcGFydHkvbHNzO25hbWU9bHNzIFwKKyAgICAgICAgICAgZ2l0Oi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC9neXA7cHJvdG9jb2w9aHR0cHM7ZGVzdHN1ZmZpeD1naXQvc3JjL3Rvb2xzL2d5cDtuYW1lPWd5cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtdXNlLW9mLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Bdm9pZC11c2luZy1iYXNlbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVHVybi1vZmYtc2lnbi1jb21wYXJlLWZvci1tdXNsLWxpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1zeXMtc2lnbmFsLmgtaXMtYS1ub25wb3J0YWJsZS1hbGlhcy1mb3Itc2lnbmFsLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Eb250LWluY2x1ZGUtc3RhYi5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZWxmX3JlYWRlci5jYy1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LW1kMmNvcmUtUmVwbGFjZS1iYXNlbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWNvbnRleHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sc3MtTWF0Y2gtc3lzY2FsbHMtdG8tbWF0Y2gtbXVzbC5wYXRjaDtwYXRjaGRpcj1zcmMvdGhpcmRfcGFydHkvbHNzIFwKKyAgICAgICAgICAgZmlsZTovL21pcHNfYXNtX3NnaWRlZnMucGF0Y2g7cGF0Y2hkaXI9c3JjL3RoaXJkX3BhcnR5L2xzcyBcCiAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCitDWFhGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKwogQ09NUEFUSUJMRV9NQUNISU5FX3Bvd2VycGMgPSAiKCEuKnBwYykuKiIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CkBAIC02Nyw3ICs4MCw3IEBACiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2Zvcm1hdC5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfZm9ybWF0LmgKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FtZDY0LmggJHtEfSR7aW5jbHVkZWRpcn0vYnJlYWtwYWQvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfYW1kNjQuaAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfYXJtLmggJHtEfSR7aW5jbHVkZWRpcn0vYnJlYWtwYWQvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfYXJtLmgKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybS5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybTY0LmgKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybTY0LmggJHtEfSR7aW5jbHVkZWRpcn0vYnJlYWtwYWQvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfYXJtNjQuaAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfbWlwcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X21pcHMuaAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfcHBjNjQuaCAke0R9JHtpbmNsdWRlZGlyfS9icmVha3BhZC9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9wcGM2NC5oCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9wcGMuaCAke0R9JHtpbmNsdWRlZGlyfS9icmVha3BhZC9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9wcGMuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2FwbnByb3RvL2NhcG5wcm90b18wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NhcG5wcm90by9jYXBucHJvdG9fMC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZiZTczZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NhcG5wcm90by9jYXBucHJvdG9fMC42LjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJDYXAnbiBQcm90byBzZXJpYWxpemF0aW9uL1JQQyBzeXN0ZW0iCitERVNDUklQVElPTiA9ICJDYXDigJluIFByb3RvIGlzIGFuIGluc2FuZWx5IGZhc3QgZGF0YSBpbnRlcmNoYW5nZSBmb3JtYXQgYW5kIGNhcGFiaWxpdHktYmFzZWQgUlBDIHN5c3RlbS4gIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhbmRzdG9ybS1pby9jYXBucHJvdG8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9MGE1YjViNzQyYmFmMTBjYzFjMTU4NTc5ZWJhN2ZiMWQiCisKK1NSQ1JFViA9ICJjOTQ5YTE4ZGE1ZjA0MWEzNmNjMjE4YzVjNGI3OWM3NzA1OTk5YjRmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NhbmRzdG9ybS1pby9jYXBucHJvdG8uZ2l0O2JyYW5jaD1yZWxlYXNlLSR7UFZ9IgorCitFWFRSQV9PRUNNQUtFICs9ICJcCisgICAgLURCVUlMRF9URVNUSU5HPU9GRiBcCisiCisKK2luaGVyaXQgY21ha2UKKworUyA9ICIke1dPUktESVJ9L2dpdC9jKysiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDkvMDAwMS1pZGUtdXNlLW5vZGUtYXMtaW50ZXJwcmV0ZXItZm9yLXNrZXRjaGVzLWluc3RlYWQtb2YtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvdWQ5L2Nsb3VkOS8wMDAxLWlkZS11c2Utbm9kZS1hcy1pbnRlcnByZXRlci1mb3Itc2tldGNoZXMtaW5zdGVhZC1vZi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMjMxMWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvdWQ5L2Nsb3VkOS8wMDAxLWlkZS11c2Utbm9kZS1hcy1pbnRlcnByZXRlci1mb3Itc2tldGNoZXMtaW5zdGVhZC1vZi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGFjMTk1M2QwNGYzZjI2ZDZhYTVkOGY1M2E5Mzk3ZDNiYTBlOTZmYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AY2lyY3VpdGNvLmNvbT4KLURhdGU6IEZyaSwgMTEgTWF5IDIwMTIgMTU6MjM6MDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaWRlOiB1c2UgJ25vZGUnIGFzIGludGVycHJldGVyIGZvciBza2V0Y2hlcyBpbnN0ZWFkIG9mCi0gYXJndlswXQotCi1UaGlzIGVuYWJsZXMgcnVubmluZyBzY3JpcHRzIHdpdGggbm9kZSAwLjYueCBpbnN0ZWFkIG9mIDAuNC54Ci0KLVNpZ25lZC1vZmYtYnk6IHJvb3QgPHJvb3RAYmVhZ2xlYm9uZS4obm9uZSk+Ci0tLS0KLSBzZXJ2ZXIvY2xvdWQ5L2lkZS5qcyB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NlcnZlci9jbG91ZDkvaWRlLmpzIGIvc2VydmVyL2Nsb3VkOS9pZGUuanMKLWluZGV4IGNlNzgyZjUuLjZjNGUwZjcgMTAwNjQ0Ci0tLS0gYS9zZXJ2ZXIvY2xvdWQ5L2lkZS5qcwotKysrIGIvc2VydmVyL2Nsb3VkOS9pZGUuanMKLUBAIC01Myw3ICs1Myw3IEBAIHZhciBJZGUgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMsIGh0dHBTZXJ2ZXIsIGV4dHMsIHNvY2tldCkgewotICAgICB9OwotIAotICAgICB0aGlzLiR1c2VycyA9IHt9OwotLSAgICB0aGlzLm5vZGVDbWQgPSBwcm9jZXNzLmFyZ3ZbMF07Ci0rICAgIHRoaXMubm9kZUNtZCA9ICJub2RlIjsKLSAKLSAgICAgdmFyIGRhdk9wdGlvbnMgPSB7Ci0gICAgICAgICBub2RlOiB0aGlzLm9wdGlvbnMubW91bnREaXIsCi0tLSAKLTEuNy43Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDlfMC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvdWQ5L2Nsb3VkOV8wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZDc4OTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvdWQ5L2Nsb3VkOV8wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotU1VNTUFSWSA9ICJNZWV0IENsb3VkOSwgZGV2ZWxvcG1lbnQtYXMtYS1zZXJ2aWNlIGZvciBKYXZhc2NyaXB0ZXJzIGFuZCBvdGhlciBkZXZlbG9wZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2M5LmlvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ3ODRjM2JjZmY2MDFmZDhmOTUxNWY1MmExMWU3MDE4IgotCi1QUiA9ICJyNSIKLQotIyBOb2RlanMtbmF0aXZlIGZvciBub2RlLXdhZiwgbm9kZWpzNC1uYXRpdmUgZm9yIHRoZSBoZWFkZXJzCi1ERVBFTkRTID0gImxpYnhtbDIgbm9kZWpzLW5hdGl2ZSBub2RlanM0LW5hdGl2ZSIKLQotUE5CTEFDS0xJU1RbY2xvdWQ5XSA/PSAiTm90IGNvbWF0aWJsZSB3aXRoIGN1cnJlbnQgbm9kZWpzIDAuMTIsIGJ1dCB1cHN0cmVhbSBpcyB3b3JraW5nIG9uIGl0IGZvciB2MyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLWluaGVyaXQgc3lzdGVtZAotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9jbG91ZDkuZ2l0O25hbWU9Y2xvdWQ5aWRlIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL28zO2Rlc3RzdWZmaXg9bzM7bmFtZT1vMyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvYWNlO25hbWU9YWNlIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS53aWtpLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2FjZS9kb2Mvd2lraTtuYW1lPWFjZXdpa2kgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvYXBmLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2FwZjtuYW1lPWFwZiBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9hc3luYy5qcy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9hc3luY2pzO25hbWU9YXN5bmNqcyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9jb25uZWN0LmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2Nvbm5lY3Q7bmFtZT1jb25uZWN0O2JyYW5jaD1hamF4b3JnIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvY29mZmVlLXNjcmlwdC5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9jb25uZWN0L3N1cHBvcnQvY29mZmVlLXNjcmlwdDtuYW1lPWNvZmZlZS1zY3JpcHQgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL2V4cHJlc3NvLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2Nvbm5lY3Qvc3VwcG9ydC9leHByZXNzbztuYW1lPWV4cHJlc3NvIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS92aXNpb25tZWRpYS9ub2RlLWpzY292ZXJhZ2UuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvY29ubmVjdC9zdXBwb3J0L2V4cHJlc3NvL2RlcHMvanNjb3ZlcmFnZTtuYW1lPWpzY292ZXJhZ2UgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2Nsb3VkaGVhZC9sZXNzLmpzLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2Nvbm5lY3Qvc3VwcG9ydC9sZXNzO25hbWU9bGVzcyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vbWF0ZWhhdC9zYXNzLmpzLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2Nvbm5lY3Qvc3VwcG9ydC9zYXNzO25hbWU9c2FzcyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9qc0RBVi5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9qc2RhdjtuYW1lPWpzZGF2IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9mamFrb2JzL2FzeW5jLmpzLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvYXN5bmMuanM7bmFtZT1hc3luYy1qcyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZmVsaXhnZS9ub2RlLWZvcm1pZGFibGUuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9mb3JtaWRhYmxlO25hbWU9Zm9ybWlkYWJsZSBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9qc2Z0cC5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L2pzZnRwO25hbWU9anNmdHAgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL0dvemFsYS9zdHJlYW1lci5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L2pzZnRwL3N1cHBvcnQvc3RyZWFtZXI7bmFtZT1zdHJlYW1lciBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9ub2RlLXNmdHAuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9ub2RlLXNmdHA7bmFtZT1zZnRwIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL2xpYi12OGRlYnVnLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2xpYi12OGRlYnVnO25hbWU9bGliLXY4ZGVidWcgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvc29ja2V0LmlvLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L3NvY2tldC5pbztuYW1lPXNvY2tldGlvO2JyYW5jaD1jYWRvcm4tdXBzdHJlYW0gXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL0xlYXJuQm9vc3Qvc29ja2V0LmlvLWNsaWVudC5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9zb2NrZXQuaW8tY2xpZW50O25hbWU9c29ja2V0aW8tY2xpZW50IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL3RyZWVodWdnZXIuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvdHJlZWh1Z2dlcjtuYW1lPXRyZWVodWdnZXIgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvVWdsaWZ5SlMuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvdWdsaWZ5LWpzO25hbWU9dWdsaWZ5LWpzIFwKLSAgICAgICAgICAgZmlsZTovL2luZGV4LmpzIFwKLSAgICAgICAgICAgZmlsZTovL2Nsb3VkOS1hdmFoaS5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2Nsb3VkOS5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaWRlLXVzZS1ub2RlLWFzLWludGVycHJldGVyLWZvci1za2V0Y2hlcy1pbnN0ZWFkLW9mLS5wYXRjaCBcCi0iCi0KLVNSQ1JFVl9jbG91ZDlpZGUgPSAiYzRlMjU3NDg5NmEyMmJiNzQ5ZjA1MDBiMjVmNDFjODg4ZDM0NmJlZCIKLVNSQ1JFVl9vMyA9ICJkNjZkNGUzMjUyZTUwNWY0NGFkYTY4MDRjOGNhYjM5OTE1Y2U4YWZkIgotU1JDUkVWX2FjZSA9ICIwZmM1MzkyY2JlNDZmYjEzNDA1MmMzMDY1YTIzOGFkOGUzYjMxY2ZkIgotU1JDUkVWX2FjZXdpa2kgPSAiZDJhNjVkMGFkZGMyZTVhYjkyMmJiZmY5Y2I2MDIyYTQ2NTJiNGYxMyIKLVNSQ1JFVl9hcGYgPSAiMjU2MGI3NjJiMmIwZTVhOGI0NmY4YTQwNjJmOTI3YTlhOWQyMzlmNCIKLVNSQ1JFVl9hc3luY2pzID0gImQzNmVhZDQwOGUyOTU5YjFlOTk1NzIxMTRlZjNhMWI2YTQ4YzEwNzIiCi1TUkNSRVZfY29ubmVjdCA9ICI2YmVjOTViNTFmMjI4NmI5NDJiYzdmMzQwZDYyZDgxNmJjZGMxM2Q0IgotU1JDUkVWX2NvZmZlZS1zY3JpcHQgPSAiYTUzYzEwNGRiMTZkM2FjOWQxM2NmOWYxNjgzNGVkZWMyNTBiOTc0OSIKLVNSQ1JFVl9leHByZXNzbyA9ICI3ZjEwYWI3ZmE2NTUyOTliNGUyZjUxOTA2NWIwNDk1ZTZhYzM0ZWYyIgotU1JDUkVWX2pzY292ZXJhZ2UgPSAiMGQ0NjA4YTZiNDI3NWIwMjBiYTY2NTM4OWFhNzU4OTdkNWQ0YTU4NCIKLVNSQ1JFVl9sZXNzID0gImEyODA3Mjg4MDA4NTg3Yjk1YzZjMmY4YmE1Y2FjMTZmMWJjYWI5OGYiCi1TUkNSRVZfc2FzcyA9ICI0ZGZkNGM2OTllN2E4YmFmMjI2MjE1YWIwNDQ4NTRjNDUwN2Y0NDIwIgotU1JDUkVWX2pzZGF2ID0gImYwNGViZjNkMDEyY2M4YWVhYmZjZmIyYjhmYWI4OTY2ZDUyOTI5ZTkiCi1TUkNSRVZfYXN5bmMtanMgPSAiOTJmYjcxMGE3MGVmZDNjZGMyMzc2ZWJmYmE3MWE3ZmIzYTRmMTY1MSIKLVNSQ1JFVl9mb3JtaWRhYmxlID0gImEzNzI5MmQ0YjdkNmQ3NmEzODkwOWVkNjcwMzM0YzkwNjhkNDA4NzEiCi1TUkNSRVZfanNmdHAgPSAiZTNmMTBjODkyNzM0N2MxNzBjZGQwMTUwZWYzOGUxODI3MmFjZjk0MiIKLVNSQ1JFVl9zdHJlYW1lciA9ICIxYTdmNzVkNDA2NTgxOTE3MWFjOTFhMDk5NzQxOTliOTMyZGJlMTdkIgotU1JDUkVWX3NmdHAgPSAiYTA1MzkzNDUxMzQ5NzBkNzUzNWExOWNiMjYwOGUzZDFiYzExOWQ3MSIKLVNSQ1JFVl9saWItdjhkZWJ1ZyA9ICI3YzExODk3ZjRiYzc3YzcyNzVjMmI2ZGZmNWJlY2M3MmFjMDE4NjYyIgotU1JDUkVWX3NvY2tldGlvID0gIjczNWQ1MjM5YjMyNWRmMmJhNjdkMmI5YmI0ZWMzMjQ0MjI4M2JjMDYiCi1TUkNSRVZfc29ja2V0aW8tY2xpZW50ID0gIjQzNzVlZjEzNDRlY2I4YWQ3NWEzODQ4YTAwYWY2YjM5MTgyMmY4NmIiCi1TUkNSRVZfdHJlZWh1Z2dlciA9ICI0MzZkMGQ2ZGQwY2U0Mzc4MmU2YmUwOGFkMTJjMzU2NzMwNjI2OTk2IgotU1JDUkVWX3VnbGlmeS1qcyA9ICI5NDFjODQ1YzRhMDFlNGU0N2ExNTg0NThmZTg0NmViMzZkMDgyOGFkIgotCi1TUkNSRVZfRk9STUFUID0gImNsb3VkOWlkZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1dPUktESVJ9L28zCi0gICAgbm9kZS13YWYgLXZ2IGNvbmZpZ3VyZQotfQotCi1FWFRSQV9DWFhGTEFHUyA9ICItSWRlZmF1bHQvaW5jbHVkZSAtSS4uL2luY2x1ZGUgLUlkZWZhdWx0L2hvc3RzIC1JLi4vaG9zdHMgLUlkZWZhdWx0L21vZHVsZXMgLUkuLi9tb2R1bGVzIC1JZGVmYXVsdC9kZXBzIC1JLi4vZGVwcyAtSSR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvaW5jbHVkZS9ub2RlNCAtZlBJQyAtRFBJQyIKLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgY2QgJHtXT1JLRElSfS9vMwotICAgIG5vZGU0IHRvb2xzL2dsdWVnZW4uanMKLSAgICBjZCBob3N0cwotICAgICR7Q1hYfSAke1RBUkdFVF9DWFhGTEFHU30gJHtFWFRSQV9DWFhGTEFHU30gLWMgLW8gc2hfbm9kZS5vIG5vZGUtbzMvc2hfbm9kZS5jYwotICAgICR7Q1hYfSAke1RBUkdFVF9DWFhGTEFHU30gJHtFWFRSQV9DWFhGTEFHU30gLWMgLW8gc2hfbm9kZV9saWJzLm8gbm9kZS1vMy9zaF9ub2RlX2xpYnMuY2MKLSAgICBjZCAuLgotICAgICR7Q1hYfSAke1RBUkdFVF9MREZMQUdTfSBob3N0cy9zaF9ub2RlLm8gaG9zdHMvc2hfbm9kZV9saWJzLm8gLW8gbzMubm9kZSAtc2hhcmVkIC1XbCwtQmR5bmFtaWMgLWx4bWwyCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtkYXRhZGlyfS9jbG91ZDkgJHtEfSR7YmluZGlyfSAke0R9L3Zhci9saWIvY2xvdWQ5Ci0gICAgcnN5bmMgLXIgLS1leGNsdWRlPSIuKiIgJHtTfS8qICR7RH0ke2RhdGFkaXJ9L2Nsb3VkOQotCi0gICAgdG91Y2ggJHtEfSR7YmluZGlyfS9jbG91ZDkKLSAgICBlY2hvICIjIS9iaW4vc2giID4gJHtEfSR7YmluZGlyfS9jbG91ZDkKLSAgICBlY2hvICJub2RlNCAke2RhdGFkaXJ9L2Nsb3VkOS9iaW4vY2xvdWQ5LmpzIC1sIDAuMC4wLjAgLXcgL3Zhci9saWIvY2xvdWQ5IC1wIDMwMDAiID4+ICR7RH0ke2JpbmRpcn0vY2xvdWQ5Ci0gICAgY2htb2QgMDc1NSAke0R9JHtiaW5kaXJ9L2Nsb3VkOQotCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke2RhdGFkaXJ9L2Nsb3VkOS9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1vMy14bWwtdjQvbGliL28zLXhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4LmpzICR7RH0ke2RhdGFkaXJ9L2Nsb3VkOS9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1vMy14bWwtdjQvbGliL28zLXhtbC9pbmRleC5qcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L28zL21vZHVsZXMvbzMuanMgJHtEfSR7ZGF0YWRpcn0vY2xvdWQ5L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9ub2RlLW8zLXhtbC12NC9saWIvbzMteG1sL28zLmpzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbzMvbzMubm9kZSAke0R9JHtkYXRhZGlyfS9jbG91ZDkvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L25vZGUtbzMteG1sLXY0L2xpYi9vMy14bWwvbzMubm9kZQotCi0gICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9hdmFoaS9zZXJ2aWNlcy8KLSAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY2xvdWQ5LWF2YWhpLnNlcnZpY2UgJHtEfSR7c3lzY29uZmRpcn0vYXZhaGkvc2VydmljZXMvCi0KLSAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jbG91ZDkuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vY2xvdWQ5L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9ub2RlLW8zLXhtbC12NC9saWIvbzMteG1sLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY2xvdWQ5L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9ub2RlLW8zLXhtbC12NC9saWIvLmRlYnVnIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAibm9kZWpzNCBub2RlanMgZ3ppcCIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjbG91ZDkuc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RlYm9vdHN0cmFwL2RlYm9vdHN0cmFwXzEuMC42Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RlYm9vdHN0cmFwL2RlYm9vdHN0cmFwXzEuMC42Ny5iYgppbmRleCA2MmIyNzk2Li44NDcyYWNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kZWJvb3RzdHJhcC9kZWJvb3RzdHJhcF8xLjAuNjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZGVib290c3RyYXAvZGVib290c3RyYXBfMS4wLjY3LmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJJbnN0YWxsIGEgRGViaWFuIHN5c3RlbSBpbnRvIGEgc3ViZGlyZWN0b3J5IgogSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvRGVib290c3RyYXAiCiBTRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJkZWJvb3RzdHJhcC1jdXN0b20tbGljZW5zZSIKK0xJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9MWU2OGNlZDZlMTY4OWQ0Y2Q5ZGFjNzVmZjUyMjU2MDgiCiAKIGluaGVyaXQgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9TdG9wLXVzaW5nLXJlbGF0aXZlLXBhdGgtZm9yLXNjc2lsaWIuYy1saW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvU3RvcC11c2luZy1yZWxhdGl2ZS1wYXRoLWZvci1zY3NpbGliLmMtbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NiOWEwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9TdG9wLXVzaW5nLXJlbGF0aXZlLXBhdGgtZm9yLXNjc2lsaWIuYy1saW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA0Y2Y3ZTE2ZmU5Yjc3M2UyZTc3NjNkNGI3NzM4NTRlZWZlMmFhOWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLURhdGU6IFR1ZSwgMTIgSmFuIDIwMTYgMDk6NTk6NTUgLTAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3RvcCB1c2luZyByZWxhdGl2ZSBwYXRoIGZvciBzY3NpbGliLmMgbGluawotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBNYWtlZmlsZS5saW51eCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmxpbnV4IGIvTWFrZWZpbGUubGludXgKLWluZGV4IDc4MzMzZmYuLmUyMTA1NjQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5saW51eAotKysrIGIvTWFrZWZpbGUubGludXgKLUBAIC0xMjksNyArMTI5LDcgQEAgc2NzaWxpYi5jOgotIAkgICAgZWNobyAiUGxlYXNlIHNwZWNpZnkgT1M9e2FpeCxsaW51eCxocHV4LHNvbGFyaXMsd2luZG93c30iOyBcCi0gCSAgICBleGl0IDE7IFwKLSAJZmk7IFwKLS0JbG4gLXNmIC4uL3Njc2lsaWItJChPUykuYyBzY3NpbGliLmMKLSsJbG4gLXNmIHNjc2lsaWItJChPUykuYyBzY3NpbGliLmMKLSAKLSBwcmludDo7Ci0gCQlAJChQUklOVEVSKSAkKFBSSU5URkxBR1MpICQoQUxMX0NGSUxFUykKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvVXNlLXRjc2gtc2hlbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9Vc2UtdGNzaC1zaGVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMGZkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9Vc2UtdGNzaC1zaGVsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLUZyb20gZTNjNmViODc3NmY2NTllYjllNmVlY2NmOTBkNzg1ZWZmMThlY2Y3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBNb24sIDE1IEZlYiAyMDE2IDE4OjAwOjA1IC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSAndGNzaCcgc2hlbGwKLU9yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gU2NyaXB0cy9kdGEgfCAyICstCi0gU2NyaXB0cy9kdGMgfCAyICstCi0gU2NyaXB0cy9kdGYgfCAyICstCi0gU2NyaXB0cy9kdHIgfCAyICstCi0gU2NyaXB0cy9kdHMgfCAyICstCi0gU2NyaXB0cy9kdHQgfCAyICstCi0gU2NyaXB0cy9kdHcgfCAyICstCi0gNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9TY3JpcHRzL2R0YSBiL1NjcmlwdHMvZHRhCi1pbmRleCBlYmM3MDcyLi40ZjkwMjQ3IDEwMDc1NQotLS0tIGEvU2NyaXB0cy9kdGEKLSsrKyBiL1NjcmlwdHMvZHRhCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vY3NoCi0rIyEvYmluL3Rjc2gKLSAjCi0gIwlTY3JpcHQgZmlsZSB0byB0ZXN0IGFzeW5jaHJvbm91cyBjb21tdW5pY2F0aW9uIGxpbmVzLgotICMKLWRpZmYgLS1naXQgYS9TY3JpcHRzL2R0YyBiL1NjcmlwdHMvZHRjCi1pbmRleCBkYTY5YzJlLi44OWQ0OGMyIDEwMDc1NQotLS0tIGEvU2NyaXB0cy9kdGMKLSsrKyBiL1NjcmlwdHMvZHRjCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vY3NoCi0rIyEvYmluL3Rjc2gKLSAjCSVaJSVNJSAlSSUgJUUlCi0gIwotICMJRGF0ZToJQXVndXN0IDcsIDE5OTAKLWRpZmYgLS1naXQgYS9TY3JpcHRzL2R0ZiBiL1NjcmlwdHMvZHRmCi1pbmRleCA5ZjhjZDg3Li4zMjFkMjYxIDEwMDc1NQotLS0tIGEvU2NyaXB0cy9kdGYKLSsrKyBiL1NjcmlwdHMvZHRmCi1AQCAtMSw0ICsxLDQgQEAKLS0jISAvYmluL2NzaAotKyMhIC9iaW4vdGNzaAotICMKLSAjCVNjcmlwdCBmaWxlIHRvIGdhdGhlciBmbG9wcHkgZGlzayBwZXJmb3JtYW5jZSBkYXRhLgotICMKLWRpZmYgLS1naXQgYS9TY3JpcHRzL2R0ciBiL1NjcmlwdHMvZHRyCi1pbmRleCBkZGI3OTQ3Li4xZmY1YTBiIDEwMDc1NQotLS0tIGEvU2NyaXB0cy9kdHIKLSsrKyBiL1NjcmlwdHMvZHRyCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vY3NoCi0rIyEvYmluL3Rjc2gKLSAjCSVaJSVNJSAlSSUgJUUlCi0gIwotICMJRGF0ZToJQXVndXN0IDIxLCAxOTkwCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdHMgYi9TY3JpcHRzL2R0cwotaW5kZXggNmI4YTE2Ny4uNDJkMjMxMiAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHRzCi0rKysgYi9TY3JpcHRzL2R0cwotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2NzaAotKyMhL2Jpbi90Y3NoCi0gIwklWiUlTSUgJUklICVFJQotICMKLSAjCURhdGU6CUF1Z3VzdCA3LCAxOTkwCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdHQgYi9TY3JpcHRzL2R0dAotaW5kZXggMzZjYzZiZC4uZGYxOWQyZiAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHR0Ci0rKysgYi9TY3JpcHRzL2R0dAotQEAgLTEsNCArMSw0IEBACi0tIyEgL2Jpbi9jc2gKLSsjISAvYmluL3Rjc2gKLSAjCSVaJSVNJSAlSSUgJUUlCi0gIwotICMJRGF0ZToJQXVndXN0IDcsIDE5OTAKLWRpZmYgLS1naXQgYS9TY3JpcHRzL2R0dyBiL1NjcmlwdHMvZHR3Ci1pbmRleCA4YTRhYzM5Li5jNThlMzA0IDEwMDc1NQotLS0tIGEvU2NyaXB0cy9kdHcKLSsrKyBiL1NjcmlwdHMvZHR3Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vY3NoCi0rIyEvYmluL3Rjc2gKLSAjCSVaJSVNJSAlSSUgJUUlCi0gIwotICMJRGF0ZToJQXVndXN0IDIxLCAxOTkwCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L2R0LWRlZmF1bHQtc291cmNlLWRlZmluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L2R0LWRlZmF1bHQtc291cmNlLWRlZmluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcwMTZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC1kZWZhdWx0LXNvdXJjZS1kZWZpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1QYXRjaCBmcm9tIGh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL2dpdC9ycG1zL2R0LmdpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLQotZGlmZiAtcnVwTiBkdC52MTguMzIub2xkL2NvbW1vbi5oIGR0LnYxOC4zMi9jb21tb24uaAotLS0tIGR0LnYxOC4zMi5vbGQvY29tbW9uLmgJMjAxMy0wMy0wMSAyMzo1MjozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBkdC52MTguMzIvY29tbW9uLmgJMjAxNC0wOS0yNCAxNzo0MTo0MC43Nzc2MDQ3MTAgKzAyMDAKLUBAIC0xMjcsNyArMTI3LDcgQEAgdHlwZWRlZiB2b2xhdGlsZSBzbGFyZ2VfdAl2X3NsYXJnZTsKLSAKLSAjZW5kaWYgLyogZGVmaW5lZChfV0lONjQpICovCi0gCi0tI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfQlNEX1NPVVJDRSkgfHwgZGVmaW5lZChTQ08pIHx8IGRlZmluZWQoX19RTlhOVE9fXykgfHwgZGVmaW5lZChTT0xBUklTKSB8fCBkZWZpbmVkKEhQX1VYKSB8fCBkZWZpbmVkKEFJWCkgfHwgZGVmaW5lZChfTlRfU09VUkNFKSAKLSsjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9CU0RfU09VUkNFKSB8fCBkZWZpbmVkIChfREVGQVVMVF9TT1VSQ0UpIHx8ICBkZWZpbmVkKFNDTykgfHwgZGVmaW5lZChfX1FOWE5UT19fKSB8fCBkZWZpbmVkKFNPTEFSSVMpIHx8IGRlZmluZWQoSFBfVVgpIHx8IGRlZmluZWQoQUlYKSB8fCBkZWZpbmVkKF9OVF9TT1VSQ0UpIAotIAotICNkZWZpbmUgUXVhZElzTG9uZ0xvbmcKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQJbGFyZ2VfdDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L2R0LXdmb3JtYXQtc2VjdXJpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC13Zm9ybWF0LXNlY3VyaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjc4MGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L2R0LXdmb3JtYXQtc2VjdXJpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1QYXRjaCBmcm9tIGh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL2dpdC9ycG1zL2R0LmdpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLQotZGlmZiAtcnVwTiBkdC52MTguMzIub2xkL2R0LmMgZHQudjE4LjMyL2R0LmMKLS0tLSBkdC52MTguMzIub2xkL2R0LmMJMjAxNC0wOC0xOCAxNDo0NTo1My4yNDIzNTExMTUgKzAyMDAKLSsrKyBkdC52MTguMzIvZHQuYwkyMDE0LTA4LTE4IDE1OjExOjM2LjM2NzcxOTg4MCArMDIwMAotQEAgLTQzNzgsNyArNDM3OCw3IEBAIHJlcG9ydF9lcnJvcigKLSAJICAgICh2b2lkKXNwcmludGYoZGlwLT5kaV9tc2dfYnVmZmVyLCAiKCVkKTogJyVzJywgZXJybm8gPSAlZCAtICVzXG4iLAotIAkJCSAgZGlwLT5kaV9wcm9jZXNzX2lkLCBlcnJvcl9pbmZvLCBlcnJubywgZW1zZyk7Ci0gCX0KLS0Jc3lzbG9nKExPR19FUlIsIGRpcC0+ZGlfbXNnX2J1ZmZlcik7Ci0rCXN5c2xvZyhMT0dfRVJSLCAiJXMiLCBkaXAtPmRpX21zZ19idWZmZXIpOwotICAgICB9Ci0gI2VuZGlmIC8qIGRlZmluZWQoU1lTTE9HKSAqLwotIAotZGlmZiAtcnVwTiBkdC52MTguMzIub2xkL2R0dXRpbC5jIGR0LnYxOC4zMi9kdHV0aWwuYwotLS0tIGR0LnYxOC4zMi5vbGQvZHR1dGlsLmMJMjAxNC0wOC0xOCAxNDo0NTo1My4zNTQzNTA3NzkgKzAyMDAKLSsrKyBkdC52MTguMzIvZHR1dGlsLmMJMjAxNC0wOC0xOCAxNToxMzo1My44MzUzMDczMTEgKzAyMDAKLUBAIC01MTgwLDcgKzUxODAsNyBAQCBSZXBvcnREZXZpY2VJbmZvICgKLSAJICAgIGJwICs9IFNwcmludGYoYnAsCi0gCQkJICAiKCVkKSBEZXZpY2UgbmFtZTogJXNcbiIsCi0gCQkJICAgZGlwLT5kaV9wcm9jZXNzX2lkLCBkaXAtPmRpX2RuYW1lKTsKLS0JICAgIHN5c2xvZyhMT0dfRVJSLCBkaXAtPmRpX21zZ19idWZmZXIpOwotKwkgICAgc3lzbG9nKExPR19FUlIsICIlcyIsIGRpcC0+ZGlfbXNnX2J1ZmZlcik7Ci0gCSAgICBicCA9IGRpcC0+ZGlfbXNnX2J1ZmZlcjsKLSAjIGlmIGRlZmluZWQoU0NTSSkKLSAJICAgIGlmIChkaXAtPmRpX3NlcmlhbF9udW1iZXIpIHsKLUBAIC01MTkzLDcgKzUxOTMsNyBAQCBSZXBvcnREZXZpY2VJbmZvICgKLSAJCQkgICAgICBkaXAtPmRpX3Byb2Nlc3NfaWQsIGRpcC0+ZGlfZGV2aWNlX2lkKTsKLSAJICAgIH0KLSAjIGVuZGlmIC8qIGRlZmluZWQoU0NTSSkgKi8KLS0JICAgIHN5c2xvZyhMT0dfRVJSLCBkaXAtPmRpX21zZ19idWZmZXIpOwotKwkgICAgc3lzbG9nKExPR19FUlIsICIlcyIsIGRpcC0+ZGlfbXNnX2J1ZmZlcik7Ci0gCSAgICBicCA9IGRpcC0+ZGlfbXNnX2J1ZmZlcjsKLSAJICAgIGJwICs9IFNwcmludGYoYnAsCi0gCQkgICIoJWQpIFJlbGF0aXZlIGJsb2NrIG51bWJlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQgaXMgIiBMVUYgIiwiCi1AQCAtNTIwMyw3ICs1MjAzLDcgQEAgUmVwb3J0RGV2aWNlSW5mbyAoCi0gICAJICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGJwICs9IFNwcmludGYoYnAsICJcbiIpOwotICAgICAgICAgICAgIH0KLS0JICAgIHN5c2xvZyhMT0dfRVJSLCBkaXAtPmRpX21zZ19idWZmZXIpOwotKwkgICAgc3lzbG9nKExPR19FUlIsICIlcyIsIGRpcC0+ZGlfbXNnX2J1ZmZlcik7Ci0gCX0KLSAjZW5kaWYgLyogZGVmaW5lZChTWVNMT0cpICovCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdF8xOC4zMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0XzE4LjMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjM0Zjc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0XzE4LjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIGRhdGEgdGVzdCBwcm9ncmFtIgotREVTQ1JJUFRJT04gPSAiVGhlIERhdGEgVGVzdCBQcm9ncmFtIChkdCkgaXMgYSBnZW5lcmljIGRhdGEgdGVzdCBwcm9ncmFtIHVzZWQgdG8gdmVyaWZ5IHByb3BlciBcCi1vcGVyYXRpb24gb2YgcGVyaXBoZXJhbHMsIGZpbGUgc3lzdGVtcywgZGV2aWNlIGRyaXZlcnMsIG9yIGFueSBkYXRhIHN0cmVhbSBzdXBwb3J0ZWQgYnkgdGhlIFwKLW9wZXJhdGluZyBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zY3NpZmFxLm9yZy9STWlsbGVyX1Rvb2xzL2R0Lmh0bWwiCi0KLVNFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iZThiYjI1YmJjZmFhMDcyNTcxMGQxODhlNTE1MjY2OCIKLQotIyBTb3VyY2UgVVJJIHRha2VuIGZyb20gRmVkb3JhIFJQTSBzcGVjIGZpbGUgYXQ6Ci0jICBodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9naXQvcnBtcy9kdC5naXQKLVNSQ19VUkkgPSAiaHR0cDovL2RsLmRyb3Bib3h1c2VyY29udGVudC5jb20vdS8zMjM2MzYyOS9EYXRhdGVzdC9kdC1zb3VyY2UtdiR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kdC1kZWZhdWx0LXNvdXJjZS1kZWZpbmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZHQtd2Zvcm1hdC1zZWN1cml0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9TdG9wLXVzaW5nLXJlbGF0aXZlLXBhdGgtZm9yLXNjc2lsaWIuYy1saW5rLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1VzZS10Y3NoLXNoZWxsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMwNTRhZWFhYmEwNDdhMWRiZTkwYzIxMzJhMzgyZWUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwZDE2NDY3NmU5MThhNGQwN2YyMzNiY2QxMWU0Y2I2YmZkMTA1MmM5OTYxODJjZDE4MjdjY2QwYzA2M2ZjYzYiCi0KLVMgPSAiJHtXT1JLRElSfS9kdC52JHtQVn0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1FWFRSQV9PRU1BS0UgKz0gIi1mIE1ha2VmaWxlLmxpbnV4IFwKLSAgICAgICAgICAgICAgICAgT1M9bGludXggXAotICAgICAgICAgICAgICAgICBDRkxBR1M9Ii1JLi4gLURBSU8gLURGSUZPIC1ETU1BUCAtRF9fbGludXhfXyAtRF9HTlVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURUSFJFQURTIC1EU0NTSSIiCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLURtNzU1IGR0ICR7RH0ke3NiaW5kaXJ9L2R0Ci0gICAgaW5zdGFsbCAtRG02NDQgRG9jdW1lbnRhdGlvbi9kdC5tYW4gJHtEfSR7bWFuZGlyfS9tYW44L2R0LjgKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZHQvCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9L2R0L2h0bWwvCi0gICAgaW5zdGFsbCAtbTc1NSBTY3JpcHRzL2R0PyAke0R9JHtkYXRhZGlyfS9kdC8KLSAgICBpbnN0YWxsIC1tNjQ0IGRhdGEvcGF0dGVybl8qICR7RH0ke2RhdGFkaXJ9L2R0LwotICAgIGluc3RhbGwgLW02NDQgaHRtbC8qICR7RH0ke2RvY2Rpcn0vZHQvaHRtbC8KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInRjc2giCi0KLVBOQkxBQ0tMSVNUW2R0XSA/PSAiUmRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgdGNzaCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZpbGVzLzAwMDEtY29ycmVjdC12ZXJzaW9uLWZvci1zby1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWNvcnJlY3QtdmVyc2lvbi1mb3Itc28tbGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YTQyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWNvcnJlY3QtdmVyc2lvbi1mb3Itc28tbGliLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gOGI0NGRjNjVkOThkNTBiNDYyODQzYWM5ZGFiNmZlM2ZjMjVhYmUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KK0RhdGU6IEZyaSwgMTIgTWF5IDIwMTcgMTM6NTQ6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ycmVjdCB2ZXJzaW9uIGZvciBzbyBsaWIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAzNjcwYWZlLi5mNGZjZDJjIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTcyLDYgKzE3Miw3IEBAIGVuZGlmKCkKKyBpZihGTEFUQlVGRkVSU19CVUlMRF9TSEFSRURMSUIpCisgICBhZGRfbGlicmFyeShmbGF0YnVmZmVyc19zaGFyZWQgU0hBUkVEICR7RmxhdEJ1ZmZlcnNfTGlicmFyeV9TUkNTfSkKKyAgIHNldF90YXJnZXRfcHJvcGVydGllcyhmbGF0YnVmZmVyc19zaGFyZWQgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSBmbGF0YnVmZmVycykKKysgIHNldF90YXJnZXRfcHJvcGVydGllcyhmbGF0YnVmZmVyc19zaGFyZWQgUFJPUEVSVElFUyBWRVJTSU9OICIke1BWfSIpCisgZW5kaWYoKQorIAorIGZ1bmN0aW9uKGNvbXBpbGVfZmxhdGJ1ZmZlcnNfc2NoZW1hX3RvX2NwcCBTUkNfRkJTKQorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWZsYXRidWZmZXJzLU1vdmUtRW5kaWFuU3dhcC10ZW1wbGF0ZS10by1mbGF0YnVmZmVycy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWZsYXRidWZmZXJzLU1vdmUtRW5kaWFuU3dhcC10ZW1wbGF0ZS10by1mbGF0YnVmZmVycy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDczNmYwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZpbGVzLzAwMDEtZmxhdGJ1ZmZlcnMtTW92ZS1FbmRpYW5Td2FwLXRlbXBsYXRlLXRvLWZsYXRidWZmZXJzLS5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSBhNjE0ZDhlMjBmYTllNGZkMTZiNjk5ZDU4MWRkYWMyOTU2YzEyMGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgU2VwIDIwMTcgMTA6MDQ6MDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGZsYXRidWZmZXJzOiBNb3ZlIEVuZGlhblN3YXAgdGVtcGxhdGUgdG8KKyBmbGF0YnVmZmVycy9iYXNlLmgKKworQ2xhbmcgY29tcGxhaW5zCitjYWxsIHRvIGZ1bmN0aW9uICdFbmRpYW5Td2FwJyB0aGF0IGlzIG5laXRoZXIgdmlzaWJsZSBpbiB0aGUgdGVtcGxhdGUgZGVmaW5pdGlvbiBub3IgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cAorICAgICByZXR1cm4gRW5kaWFuU3dhcCh0KTsKKworVGhpcyBzZWVtcyB0byBiZSBkdWUgdG8gbGltaXRhdGlvbiBvZiB0d28tcGhhc2UgbG9va3VwIG9mIGRlcGVuZGVudCBuYW1lcyBpbiB0ZW1wbGF0ZSBkZWZpbml0aW9ucworCitJdHMgbm90IGJlaW5nIGZvdW5kIHVzaW5nIGFzc29jaWF0ZWQgbmFtZXNwYWNlcyB0aGVyZWZvcmUKK2l0IGhhcyB0byBiZSBtYWRlIHZpc2libGUgYXQgdGhlIHRlbXBsYXRlIGRlZmluaXRpb24gc2l0ZSBhcyB3ZWxsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBpbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaCAgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBpbmNsdWRlL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzLmggfCAzMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaCBiL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCitpbmRleCBmMDUxNzU1Li5jNzNmYjJkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmgKKysrKyBiL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCitAQCAtMTUwLDYgKzE1MCwzOSBAQCB0eXBlZGVmIHVpbnRtYXhfdCBsYXJnZXN0X3NjYWxhcl90OworIC8vIFdlIHN1cHBvcnQgYWxpZ25pbmcgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlcnMgdXAgdG8gdGhpcyBzaXplLgorICNkZWZpbmUgRkxBVEJVRkZFUlNfTUFYX0FMSUdOTUVOVCAxNgorIAorK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgRW5kaWFuU3dhcChUIHQpIHsKKysgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQorKyAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYgX2J5dGVzd2FwX3VzaG9ydAorKyAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIgX2J5dGVzd2FwX3Vsb25nCisrICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVA2NCBfYnl0ZXN3YXBfdWludDY0CisrICAjZWxzZQorKyAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDQwOAorKyAgICAgIC8vIF9fYnVpbHRpbl9ic3dhcDE2IHdhcyBtaXNzaW5nIHByaW9yIHRvIEdDQyA0LjguCisrICAgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2KHgpIFwKKysgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihfX2J1aWx0aW5fYnN3YXAzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oeCkgPDwgMTYpKQorKyAgICAjZWxzZQorKyAgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAxNiBfX2J1aWx0aW5fYnN3YXAxNgorKyAgICAjZW5kaWYKKysgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyIF9fYnVpbHRpbl9ic3dhcDMyCisrICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVA2NCBfX2J1aWx0aW5fYnN3YXA2NAorKyAgI2VuZGlmCisrICBpZiAoc2l6ZW9mKFQpID09IDEpIHsgICAvLyBDb21waWxlLXRpbWUgaWYtdGhlbidzLgorKyAgICByZXR1cm4gdDsKKysgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDIpIHsKKysgICAgYXV0byByID0gRkxBVEJVRkZFUlNfQllURVNXQVAxNigqcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCAqPigmdCkpOworKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCAqPigmcik7CisrICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSA0KSB7CisrICAgIGF1dG8gciA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QgKj4oJnQpKTsKKysgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQgKj4oJnIpOworKyAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gOCkgeworKyAgICBhdXRvIHIgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0KCpyZWludGVycHJldF9jYXN0PHVpbnQ2NF90ICo+KCZ0KSk7CisrICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUICo+KCZyKTsKKysgIH0gZWxzZSB7CisrICAgIGFzc2VydCgwKTsKKysgIH0KKyt9CisrCisrCisgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBFbmRpYW5TY2FsYXIoVCB0KSB7CisgICAjaWYgRkxBVEJVRkZFUlNfTElUVExFRU5ESUFOCisgICAgIHJldHVybiB0OworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMuaCBiL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMuaAoraW5kZXggOTIxNmNmNC4uZjc0OWRjYiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMuaAorKysrIGIvaW5jbHVkZS9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy5oCitAQCAtMzcsMzggKzM3LDYgQEAgaW5saW5lIHZvaWQgRW5kaWFuQ2hlY2soKSB7CisgICAodm9pZCllbmRpYW50ZXN0OworIH0KKyAKKy10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIEVuZGlhblN3YXAoVCB0KSB7CistICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKy0gICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2IF9ieXRlc3dhcF91c2hvcnQKKy0gICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyIF9ieXRlc3dhcF91bG9uZworLSAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQNjQgX2J5dGVzd2FwX3VpbnQ2NAorLSAgI2Vsc2UKKy0gICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCA0MDgKKy0gICAgICAvLyBfX2J1aWx0aW5fYnN3YXAxNiB3YXMgbWlzc2luZyBwcmlvciB0byBHQ0MgNC44LgorLSAgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAxNih4KSBcCistICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oX19idWlsdGluX2Jzd2FwMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpIDw8IDE2KSkKKy0gICAgI2Vsc2UKKy0gICAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYgX19idWlsdGluX2Jzd2FwMTYKKy0gICAgI2VuZGlmCistICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAzMiBfX2J1aWx0aW5fYnN3YXAzMgorLSAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQNjQgX19idWlsdGluX2Jzd2FwNjQKKy0gICNlbmRpZgorLSAgaWYgKHNpemVvZihUKSA9PSAxKSB7ICAgLy8gQ29tcGlsZS10aW1lIGlmLXRoZW4ncy4KKy0gICAgcmV0dXJuIHQ7CistICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSAyKSB7CistICAgIGF1dG8gciA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QgKj4oJnQpKTsKKy0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQgKj4oJnIpOworLSAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gNCkgeworLSAgICBhdXRvIHIgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyKCpyZWludGVycHJldF9jYXN0PHVpbnQzMl90ICo+KCZ0KSk7CistICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUICo+KCZyKTsKKy0gIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDgpIHsKKy0gICAgYXV0byByID0gRkxBVEJVRkZFUlNfQllURVNXQVA2NCgqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCAqPigmdCkpOworLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCAqPigmcik7CistICB9IGVsc2UgeworLSAgICBhc3NlcnQoMCk7CistICB9CistfQorLQorIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEZMQVRCVUZGRVJTX0NPTlNURVhQUiBzaXplX3QgQWxpZ25PZigpIHsKKyAgICNpZmRlZiBfTVNDX1ZFUgorICAgICByZXR1cm4gX19hbGlnbm9mKFQpOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMi11c2UtX19idWlsdGluX2Jzd2FwMTYtd2hlbi1idWlsZGluZy13aXRoLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMi11c2UtX19idWlsdGluX2Jzd2FwMTYtd2hlbi1idWlsZGluZy13aXRoLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MDE1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAyLXVzZS1fX2J1aWx0aW5fYnN3YXAxNi13aGVuLWJ1aWxkaW5nLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA2MjZmZTVlMDQzZGUyNWU5NzBlYmRmMDYxYjg4YzY0NmZhNjg5MTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgU2VwIDIwMTcgMTA6MDk6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHVzZSBfX2J1aWx0aW5fYnN3YXAxNiB3aGVuIGJ1aWxkaW5nIHdpdGggY2xhbmcKKworY2xhbmcgcHJldGVuZHMgdG8gYmUgZ2NjIDQuMi4wIGFuZCB0aGVyZWZvcmUgdGhlIGNvZGUgZG9lcworbm90IHVzZSBfX2J1aWx0aW5fYnN3YXAxNiBidXQgdHJpZXMgdG8gc3ludGhlc2l6ZSBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorIGluY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmggYi9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAoraW5kZXggYzczZmIyZC4uMTNlOGZhYyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCisrKysgYi9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAorQEAgLTE1Niw3ICsxNTYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIEVuZGlhblN3YXAoVCB0KSB7CisgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAzMiBfYnl0ZXN3YXBfdWxvbmcKKyAgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0IF9ieXRlc3dhcF91aW50NjQKKyAgICNlbHNlCistICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgNDA4CisrICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgNDA4ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAvLyBfX2J1aWx0aW5fYnN3YXAxNiB3YXMgbWlzc2luZyBwcmlvciB0byBHQ0MgNC44LgorICAgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAxNih4KSBcCisgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oX19idWlsdGluX2Jzd2FwMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpIDw8IDE2KSkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThkZjQ0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuNy4xLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiTWVtb3J5IEVmZmljaWVudCBTZXJpYWxpemF0aW9uIExpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2ZsYXRidWZmZXJzIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciIKKworUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YTg3M2M1NjQ1YzE4NGQ1MWUwZjliMzRlMWQ3Y2Y1NTkiCisKK1NSQ1JFViA9ICIyNWExNTk1MGY1YTI0ZDcyMTc2ODk3MzllZDhmNmRhYzY0OTEyZDYyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2ZsYXRidWZmZXJzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvcnJlY3QtdmVyc2lvbi1mb3Itc28tbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmxhdGJ1ZmZlcnMtTW92ZS1FbmRpYW5Td2FwLXRlbXBsYXRlLXRvLWZsYXRidWZmZXJzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1fX2J1aWx0aW5fYnN3YXAxNi13aGVuLWJ1aWxkaW5nLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKKyMgTWFrZSBzdXJlIEMrKzExIGlzIHVzZWQsIHJlcXVpcmVkIGZvciBleGFtcGxlIGZvciBHQ0MgNC45CitDWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKK0JVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIgorCitFWFRSQV9PRUNNQUtFICs9ICJcCisgICAgLURGTEFUQlVGRkVSU19CVUlMRF9URVNUUz1PRkYgXAorICAgIC1ERkxBVEJVRkZFUlNfQlVJTERfU0hBUkVETElCPU9OIFwKKyAgICAtRFBWPSR7UFZ9IFwKKyIKKworaW5oZXJpdCBjbWFrZQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAxZGRhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBmYXN0IGFuZCBsaWdodHdlaWdodCBJREUiCi1IT01FUEFHRSA9ICJodHRwOi8vcGx1Z2lucy5nZWFueS5vcmcvIgotCi1MSUNFTlNFX0RFRkFVTFQgPSAiR1BMdjIiCi1MSUNFTlNFID0gIiR7TElDRU5TRV9ERUZBVUxUfSAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgotCi1weXRob24gKCkgewotICAgIGZvciBwbHVnaW4gaW4gZC5nZXRWYXIoJ1BMVUdJTlMnKS5zcGxpdCgpOgotICAgICAgICBpZiAnTElDRU5TRV8lcycgJSBwbHVnaW4gbm90IGluIGQ6Ci0gICAgICAgICAgICBkLnNldFZhcignTElDRU5TRV8nICsgcGx1Z2luLCAnJHtMSUNFTlNFX0RFRkFVTFR9JykKLX0KLQotREVQRU5EUyA9ICIgXAotICAgIGdlYW55IFwKLSAgICBsaWJ4bWwyIFwKLSAgICBsaWJzb3VwLTIuNCBcCi0gICAgZW5jaGFudCBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBsaWJhc3N1YW4gXAotICAgIGdwZ21lIFwKLSAgICB2dGU5IFwKLSAgICBsaWJnaXQyIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BsdWdpbnMuZ2Vhbnkub3JnLyR7UE59LyR7UE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTNmOGU1ZDkwMGI0OTExMDU5Mzg1NjQ5YjhkZGU4ODciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFkYjkwNjQ1ZDI3M2Q5NTQ5ZTFmYTk5YjY5ZWE4N2RjMWZkNjEyZjc0NjdlYjE4ZWVlMTFhNmIzMGM5YmE1YiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgcm0gLWYgJHtTfS9idWlsZC9jYWNoZS9nbGliLWdldHRleHQubTQKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nZWFueS8qLmxhICR7bGliZGlyfS8ke1BOfS8qLyoubGEiCi0KLVBMVUdJTlMgKz0gIiR7UE59LWFkZG9ucyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9hZGRvbnMvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCi1GSUxFU18ke1BOfS1hZGRvbnMgPSAiJHtsaWJkaXJ9L2dlYW55L2FkZG9ucy5zbyIKLVJERVBFTkRTXyR7UE59LWFkZG9ucyA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tYXV0b2Nsb3NlIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2F1dG9jbG9zZS9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUZJTEVTXyR7UE59LWF1dG9jbG9zZSA9ICIke2xpYmRpcn0vZ2VhbnkvYXV0b2Nsb3NlLnNvIgotUkRFUEVORFNfJHtQTn0tYXV0b2Nsb3NlID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1hdXRvbWFyayIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9hdXRvbWFyay9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUZJTEVTXyR7UE59LWF1dG9tYXJrID0gIiR7bGliZGlyfS9nZWFueS9hdXRvbWFyay5zbyIKLVJERVBFTkRTXyR7UE59LWF1dG9tYXJrID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1jb2RlbmF2IgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2NvZGVuYXYvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1GSUxFU18ke1BOfS1jb2RlbmF2ID0gIiR7bGliZGlyfS9nZWFueS9jb2RlbmF2LnNvIgotUkRFUEVORFNfJHtQTn0tY29kZW5hdiA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tY29tbWFuZGVyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2NvbW1hbmRlci9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLUxJQ0VOU0VfJHtQTn0tY29tbWFuZGVyID0gIkdQTHYzIgotRklMRVNfJHtQTn0tY29tbWFuZGVyID0gIiR7bGliZGlyfS9nZWFueS9jb21tYW5kZXIuc28iCi1SREVQRU5EU18ke1BOfS1jb21tYW5kZXIgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWRlYnVnZ2VyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2RlYnVnZ2VyL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tZGVidWdnZXIgPSAiJHtsaWJkaXJ9L2dlYW55L2RlYnVnZ2VyLnNvICR7ZGF0YWRpcn0vJHtQTn0vZGVidWdnZXIiCi1SREVQRU5EU18ke1BOfS1kZWJ1Z2dlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZGVmaW5lZm9ybWF0IgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2RlZmluZWZvcm1hdC9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUZJTEVTXyR7UE59LWRlZmluZWZvcm1hdCA9ICIke2xpYmRpcn0vZ2VhbnkvZGVmaW5lZm9ybWF0LnNvIgotUkRFUEVORFNfJHtQTn0tZGVmaW5lZm9ybWF0ID0gIiR7UE59IgotCi0jIG5vIGdub21lIGRldmhlbHAgaW4gc29tZSBjb21tb24gbGF5ZXIKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRldmhlbHAiCi0jUExVR0lOUyArPSAiJHtQTn0tZGV2aGVscCIKLSNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZGV2aGVscC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLSNMSUNFTlNFXyR7UE59LWRldmhlbHAgPSAiR1BMdjMiCi0jRklMRVNfJHtQTn0tZGV2aGVscCA9ICIke2xpYmRpcn0vZ2VhbnkvZGV2aGVscC5zbyIKLSNSREVQRU5EU18ke1BOfS1kZXZoZWxwID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueWN0YWdzIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55Y3RhZ3MvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1nZWFueWN0YWdzID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWN0YWdzLnNvIgotUkRFUEVORFNfJHtQTn0tZ2VhbnljdGFncyA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2Vhbnlkb2MiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2Vhbnlkb2MvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1MSUNFTlNFXyR7UE59LWdlYW55ZG9jID0gIkdQTHYzIgotRklMRVNfJHtQTn0tZ2Vhbnlkb2MgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55ZG9jLnNvIgotUkRFUEVORFNfJHtQTn0tZ2Vhbnlkb2MgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55ZXh0cmFzZWwiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlleHRyYXNlbC9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWdlYW55ZXh0cmFzZWwgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55ZXh0cmFzZWwuc28iCi1SREVQRU5EU18ke1BOfS1nZWFueWV4dHJhc2VsID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueWluc2VydG51bSIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWluc2VydG51bS9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWdlYW55aW5zZXJ0bnVtID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWluc2VydG51bS5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55aW5zZXJ0bnVtID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueWxhdGV4IgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55bGF0ZXgvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1nZWFueWxhdGV4ID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWxhdGV4LnNvIgotUkRFUEVORFNfJHtQTn0tZ2VhbnlsYXRleCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlsaXBzdW0iCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vbGlwc3VtL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tZ2VhbnlsaXBzdW0gPSAiJHtsaWJkaXJ9L2dlYW55L2xpcHN1bS5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55bGlwc3VtID0gIiR7UE59IgotCi0jIG5vIGx1YTogbWF4IHN1cHBvcnRlZCB2ZXJzaW9uIGlzIDUuMgotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2VhbnlsdWEiCi0jUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlsdWEiCi0jTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55bHVhL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotI0ZJTEVTXyR7UE59LWdlYW55bHVhID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWx1YS5zbyAke2xpYmRpcn0vJHtQTn0vZ2VhbnlsdWEvKi5zbyIKLSNSREVQRU5EU18ke1BOfS1nZWFueWx1YSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnltYWNybyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueW1hY3JvL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tZ2VhbnltYWNybyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnltYWNyby5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55bWFjcm8gPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55bWluaXNjcmlwdCIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueW1pbmlzY3JpcHQvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCi1GSUxFU18ke1BOfS1nZWFueW1pbmlzY3JpcHQgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bWluaXNjcmlwdC5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55bWluaXNjcmlwdCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnludW1iZXJlZGJvb2ttYXJrcyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueW51bWJlcmVkYm9va21hcmtzL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tZ2VhbnludW1iZXJlZGJvb2ttYXJrcyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnludW1iZXJlZGJvb2ttYXJrcy5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55bnVtYmVyZWRib29rbWFya3MgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55cGciCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlwZy9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLUZJTEVTXyR7UE59LWdlYW55cGcgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55cGcuc28iCi1SREVQRU5EU18ke1BOfS1nZWFueXBnID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueXByaiIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueXByai9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLUxJQ0VOU0VfJHtQTn0tZ2VhbnlwcmogPSAiR1BMdjMiCi1GSUxFU18ke1BOfS1nZWFueXByaiA9ICIke2xpYmRpcn0vZ2VhbnkvZ2Vhbnlwcmouc28iCi1SREVQRU5EU18ke1BOfS1nZWFueXByaiA9ICIke1BOfSIKLQotIyBubyBnbm9tZSBweWd0awotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2VhbnlweSIKLSNQTFVHSU5TICs9ICIke1BOfS1nZWFueXB5IgotI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueXB5L0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotI0ZJTEVTXyR7UE59LWdlYW55cHkgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55cHkuc28iCi0jUkRFUEVORFNfJHtQTn0tZ2VhbnlweSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2Vhbnl2YyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueXZjL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tZ2Vhbnl2YyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2Vhbnl2Yy5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55dmMgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlbml1c3Bhc3RlIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlbml1c3Bhc3RlL0NPUFlJTkc7bWQ1PWJmYzIwMzI2OWY4ODYyZWJmYzExOThjZGM4MDlhOTVhIgotRklMRVNfJHtQTn0tZ2VuaXVzcGFzdGUgPSAiJHtsaWJkaXJ9L2dlYW55L2dlbml1c3Bhc3RlLnNvICR7ZGF0YWRpcn0vJHtQTn0vZ2VuaXVzcGFzdGUiCi1SREVQRU5EU18ke1BOfS1nZW5pdXNwYXN0ZSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2l0LWNoYW5nZWJhciIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9naXQtY2hhbmdlYmFyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotTElDRU5TRV8ke1BOfS1naXQtY2hhbmdlYmFyID0gIkdQTHYzIgotRklMRVNfJHtQTn0tZ2l0LWNoYW5nZWJhciA9ICIke2xpYmRpcn0vZ2VhbnkvZ2l0LWNoYW5nZWJhci5zbyIKLVJERVBFTkRTXyR7UE59LWdpdC1jaGFuZ2ViYXIgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWxpbmVvcGVyYXRpb25zIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2xpbmVvcGVyYXRpb25zL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tbGluZW9wZXJhdGlvbnMgPSAiJHtsaWJkaXJ9L2dlYW55L2xpbmVvcGVyYXRpb25zLnNvIgotUkRFUEVORFNfJHtQTn0tbGluZW9wZXJhdGlvbnMgPSAiJHtQTn0iCi0KLSMgbm8gbWFya2Rvd24gLSBhdm9pZCBmbG9hdGluZyBkZXBlbmRlbmNpZXMKLUVYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1wZWctbWFya2Rvd24iCi0jUExVR0lOUyArPSAiJHtQTn0tbWFya2Rvd24iCi0jTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL21hcmtkb3duL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotI0ZJTEVTXyR7UE59LW1hcmtkb3duID0gIiR7bGliZGlyfS9nZWFueS9tYXJrZG93bi5zbyIKLSNSREVQRU5EU18ke1BOfS1tYXJrZG93biA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tbXVsdGl0ZXJtIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL211bHRpdGVybS9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLUZJTEVTXyR7UE59LW11bHRpdGVybSA9ICIke2xpYmRpcn0vZ2VhbnkvbXVsdGl0ZXJtLnNvIgotUkRFUEVORFNfJHtQTn0tbXVsdGl0ZXJtID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1vdmVydmlldyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9vdmVydmlldy9vdmVydmlldy9vdmVydmlld3BsdWdpbi5jO2JlZ2lubGluZT00O2VuZGxpbmU9MjA7bWQ1PTFhYTMzNTIyOTE2Y2RlYjQ2Y2NjYWMwYzYyOWRhMGQwIgotRklMRVNfJHtQTn0tb3ZlcnZpZXcgPSAiJHtsaWJkaXJ9L2dlYW55L292ZXJ2aWV3LnNvICR7ZGF0YWRpcn0vJHtQTn0vb3ZlcnZpZXciCi1SREVQRU5EU18ke1BOfS1vdmVydmlldyA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyIgotTElDRU5TRV8ke1BOfS1wYWlydGFnaGlnaGxpZ2h0ZXIgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3BhaXJ0YWdoaWdobGlnaHRlci9DT1BZSU5HO21kNT1kNmQ5Mjc1MjVhNjEyYjNhOGRiZWJjNGIyZTliNDdjMSIKLUZJTEVTXyR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciA9ICIke2xpYmRpcn0vZ2VhbnkvcGFpcnRhZ2hpZ2hsaWdodGVyLnNvIgotUkRFUEVORFNfJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1wb2hlbHBlciIKLUxJQ0VOU0VfJHtQTn0tcG9oZWxwZXIgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vcG9oZWxwZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1GSUxFU18ke1BOfS1wb2hlbHBlciA9ICIke2xpYmRpcn0vZ2VhbnkvcG9oZWxwZXIuc28iCi1SREVQRU5EU18ke1BOfS1wb2hlbHBlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tcHJldHR5LXByaW50ZXIiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vcHJldHR5LXByaW50ZXIvc3JjL1ByZXR0eVByaW50ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT0xNjY1MTE1YzJmYWRiMTdjMWI1M2NkYjRlNDNiMjQ0MCIKLUZJTEVTXyR7UE59LXByZXR0eS1wcmludGVyID0gIiR7bGliZGlyfS9nZWFueS9wcmV0dHktcHJpbnRlci5zbyIKLVJERVBFTkRTXyR7UE59LXByZXR0eS1wcmludGVyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1wcm9qZWN0b3JnYW5pemVyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3Byb2plY3Rvcmdhbml6ZXIvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1wcm9qZWN0b3JnYW5pemVyID0gIiR7bGliZGlyfS9nZWFueS9wcm9qZWN0b3JnYW5pemVyLnNvIgotUkRFUEVORFNfJHtQTn0tcHJvamVjdG9yZ2FuaXplciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tc2NvcGUiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2NvcGUvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1zY29wZSA9ICIke2xpYmRpcn0vZ2Vhbnkvc2NvcGUuc28iCi1SREVQRU5EU18ke1BOfS1zY29wZSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tc2VuZG1haWwiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2VuZG1haWwvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1zZW5kbWFpbCA9ICIke2xpYmRpcn0vZ2Vhbnkvc2VuZG1haWwuc28iCi1SREVQRU5EU18ke1BOfS1zZW5kbWFpbCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tc2hpZnRjb2x1bW4iCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2hpZnRjb2x1bW4vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1GSUxFU18ke1BOfS1zaGlmdGNvbHVtbiA9ICIke2xpYmRpcn0vZ2Vhbnkvc2hpZnRjb2x1bW4uc28iCi1SREVQRU5EU18ke1BOfS1zaGlmdGNvbHVtbiA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tc3BlbGxjaGVjayIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9zcGVsbGNoZWNrL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tc3BlbGxjaGVjayA9ICIke2xpYmRpcn0vZ2Vhbnkvc3BlbGxjaGVjay5zbyIKLVJERVBFTkRTXyR7UE59LXNwZWxsY2hlY2sgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXRhYmxlY29udmVydCIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly90YWJsZWNvbnZlcnQvQ09QWUlORzttZDU9Njc1MzY4Njg3OGQwOTBhMWYzZjk0NDU2NjFkM2RmYmMiCi1GSUxFU18ke1BOfS10YWJsZWNvbnZlcnQgPSAiJHtsaWJkaXJ9L2dlYW55L3RhYmxlY29udmVydC5zbyIKLVJERVBFTkRTXyR7UE59LXRhYmxlY29udmVydCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tdHJlZWJyb3dzZXIiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vdHJlZWJyb3dzZXIvUkVBRE1FO2JlZ2lubGluZT02NztlbmRsaW5lPTY3O21kNT01MmY5MDg1N2ZkMWE5NjcyMTExZTQ3MmRkMDU2YTBkOCIKLUZJTEVTXyR7UE59LXRyZWVicm93c2VyID0gIiR7bGliZGlyfS9nZWFueS90cmVlYnJvd3Nlci5zbyIKLVJERVBFTkRTXyR7UE59LXRyZWVicm93c2VyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS11cGRhdGVjaGVja2VyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3VwZGF0ZWNoZWNrZXIvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCi1GSUxFU18ke1BOfS11cGRhdGVjaGVja2VyID0gIiR7bGliZGlyfS9nZWFueS91cGRhdGVjaGVja2VyLnNvIgotUkRFUEVORFNfJHtQTn0tdXBkYXRlY2hlY2tlciA9ICIke1BOfSIKLQotIyBubyB3ZWJraXQgLSBsYXN0cyBhZ2VzIGFuZCBpcyBub3QgcHJvcGVybHkgZGV0ZWN0ZWQKLUVYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS13ZWJoZWxwZXIiCi0jUExVR0lOUyArPSAiJHtQTn0td2ViaGVscGVyIgotI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly93ZWJoZWxwZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0jTElDRU5TRV8ke1BOfS13ZWJoZWxwZXIgPSAiR1BMdjMiCi0jRklMRVNfJHtQTn0td2ViaGVscGVyID0gIiR7bGliZGlyfS9nZWFueS93ZWJoZWxwZXIuc28iCi0jUkRFUEVORFNfJHtQTn0td2ViaGVscGVyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS14bWxzbmlwcGV0cyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly94bWxzbmlwcGV0cy9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLUZJTEVTXyR7UE59LXhtbHNuaXBwZXRzID0gIiR7bGliZGlyfS9nZWFueS94bWxzbmlwcGV0cy5zbyIKLVJERVBFTkRTXyR7UE59LXhtbHNuaXBwZXRzID0gIiR7UE59IgotCi1QQUNLQUdFUyA9KyAiJHtQTFVHSU5TfSIKLVJERVBFTkRTXyR7UE59ID0gIiR7UExVR0lOU30iCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZmU4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzEuYmIKQEAgLTAsMCArMSwyNjggQEAKK0RFU0NSSVBUSU9OID0gIkEgZmFzdCBhbmQgbGlnaHR3ZWlnaHQgSURFIgorSE9NRVBBR0UgPSAiaHR0cDovL3BsdWdpbnMuZ2Vhbnkub3JnLyIKKworTElDRU5TRV9ERUZBVUxUID0gIkdQTHYyIgorTElDRU5TRSA9ICIke0xJQ0VOU0VfREVGQVVMVH0gJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKKworcHl0aG9uICgpIHsKKyAgICBmb3IgcGx1Z2luIGluIGQuZ2V0VmFyKCdQTFVHSU5TJykuc3BsaXQoKToKKyAgICAgICAgaWYgJ0xJQ0VOU0VfJXMnICUgcGx1Z2luIG5vdCBpbiBkOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0xJQ0VOU0VfJyArIHBsdWdpbiwgJyR7TElDRU5TRV9ERUZBVUxUfScpCit9CisKK0RFUEVORFMgPSAiIFwKKyAgICBnZWFueSBcCisgICAgbGlieG1sMiBcCisgICAgbGlic291cC0yLjQgXAorICAgIGVuY2hhbnQgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgbGliYXNzdWFuIFwKKyAgICBncGdtZSBcCisgICAgdnRlOSBcCisgICAgbGliZ2l0MiBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQorCitTUkNfVVJJID0gImh0dHA6Ly9wbHVnaW5zLmdlYW55Lm9yZy8ke1BOfS8ke1BOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjgwOGY5MDQ4Yjc3ZmQ5NzA0NTY5ZWQyYmExMmE1NmU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2YmQ5ZTgwM2RiNWE2MjZiODY2NjlmMDgzMzBjZjk1YjhjYzM1MDU3YTFjZGY2NTc1OWJjMDBhZWYxMjBlMjUiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHJtIC1mICR7U30vYnVpbGQvY2FjaGUvZ2xpYi1nZXR0ZXh0Lm00Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2VhbnkvKi5sYSAke2xpYmRpcn0vJHtQTn0vKi8qLmxhIgorCitQTFVHSU5TICs9ICIke1BOfS1hZGRvbnMiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vYWRkb25zL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorRklMRVNfJHtQTn0tYWRkb25zID0gIiR7bGliZGlyfS9nZWFueS9hZGRvbnMuc28iCitSREVQRU5EU18ke1BOfS1hZGRvbnMgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWF1dG9jbG9zZSIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9hdXRvY2xvc2UvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitGSUxFU18ke1BOfS1hdXRvY2xvc2UgPSAiJHtsaWJkaXJ9L2dlYW55L2F1dG9jbG9zZS5zbyIKK1JERVBFTkRTXyR7UE59LWF1dG9jbG9zZSA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tYXV0b21hcmsiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vYXV0b21hcmsvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitGSUxFU18ke1BOfS1hdXRvbWFyayA9ICIke2xpYmRpcn0vZ2VhbnkvYXV0b21hcmsuc28iCitSREVQRU5EU18ke1BOfS1hdXRvbWFyayA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tY29kZW5hdiIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9jb2RlbmF2L0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0tY29kZW5hdiA9ICIke2xpYmRpcn0vZ2VhbnkvY29kZW5hdi5zbyIKK1JERVBFTkRTXyR7UE59LWNvZGVuYXYgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWNvbW1hbmRlciIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9jb21tYW5kZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNFTlNFXyR7UE59LWNvbW1hbmRlciA9ICJHUEx2MyIKK0ZJTEVTXyR7UE59LWNvbW1hbmRlciA9ICIke2xpYmRpcn0vZ2VhbnkvY29tbWFuZGVyLnNvIgorUkRFUEVORFNfJHtQTn0tY29tbWFuZGVyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1kZWJ1Z2dlciIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9kZWJ1Z2dlci9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LWRlYnVnZ2VyID0gIiR7bGliZGlyfS9nZWFueS9kZWJ1Z2dlci5zbyAke2RhdGFkaXJ9LyR7UE59L2RlYnVnZ2VyIgorUkRFUEVORFNfJHtQTn0tZGVidWdnZXIgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWRlZmluZWZvcm1hdCIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9kZWZpbmVmb3JtYXQvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitGSUxFU18ke1BOfS1kZWZpbmVmb3JtYXQgPSAiJHtsaWJkaXJ9L2dlYW55L2RlZmluZWZvcm1hdC5zbyIKK1JERVBFTkRTXyR7UE59LWRlZmluZWZvcm1hdCA9ICIke1BOfSIKKworIyBubyBnbm9tZSBkZXZoZWxwIGluIHNvbWUgY29tbW9uIGxheWVyCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kZXZoZWxwIgorI1BMVUdJTlMgKz0gIiR7UE59LWRldmhlbHAiCisjTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2RldmhlbHAvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisjTElDRU5TRV8ke1BOfS1kZXZoZWxwID0gIkdQTHYzIgorI0ZJTEVTXyR7UE59LWRldmhlbHAgPSAiJHtsaWJkaXJ9L2dlYW55L2RldmhlbHAuc28iCisjUkRFUEVORFNfJHtQTn0tZGV2aGVscCA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnljdGFncyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWN0YWdzL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tZ2VhbnljdGFncyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnljdGFncy5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55Y3RhZ3MgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55ZG9jIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55ZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorTElDRU5TRV8ke1BOfS1nZWFueWRvYyA9ICJHUEx2MyIKK0ZJTEVTXyR7UE59LWdlYW55ZG9jID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWRvYy5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55ZG9jID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueWV4dHJhc2VsIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55ZXh0cmFzZWwvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1nZWFueWV4dHJhc2VsID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWV4dHJhc2VsLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnlleHRyYXNlbCA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlpbnNlcnRudW0iCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlpbnNlcnRudW0vQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1nZWFueWluc2VydG51bSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlpbnNlcnRudW0uc28iCitSREVQRU5EU18ke1BOfS1nZWFueWluc2VydG51bSA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlsYXRleCIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWxhdGV4L0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tZ2VhbnlsYXRleCA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlsYXRleC5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55bGF0ZXggPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bGlwc3VtIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2xpcHN1bS9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LWdlYW55bGlwc3VtID0gIiR7bGliZGlyfS9nZWFueS9saXBzdW0uc28iCitSREVQRU5EU18ke1BOfS1nZWFueWxpcHN1bSA9ICIke1BOfSIKKworIyBubyBsdWE6IG1heCBzdXBwb3J0ZWQgdmVyc2lvbiBpcyA1LjIKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdlYW55bHVhIgorI1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bHVhIgorI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWx1YS9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKKyNGSUxFU18ke1BOfS1nZWFueWx1YSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlsdWEuc28gJHtsaWJkaXJ9LyR7UE59L2dlYW55bHVhLyouc28iCisjUkRFUEVORFNfJHtQTn0tZ2VhbnlsdWEgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bWFjcm8iCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnltYWNyby9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWdlYW55bWFjcm8gPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bWFjcm8uc28iCitSREVQRU5EU18ke1BOfS1nZWFueW1hY3JvID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueW1pbmlzY3JpcHQiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnltaW5pc2NyaXB0L0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorRklMRVNfJHtQTn0tZ2VhbnltaW5pc2NyaXB0ID0gIiR7bGliZGlyfS9nZWFueS9nZWFueW1pbmlzY3JpcHQuc28iCitSREVQRU5EU18ke1BOfS1nZWFueW1pbmlzY3JpcHQgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bnVtYmVyZWRib29rbWFya3MiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnludW1iZXJlZGJvb2ttYXJrcy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWdlYW55bnVtYmVyZWRib29rbWFya3MgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bnVtYmVyZWRib29rbWFya3Muc28iCitSREVQRU5EU18ke1BOfS1nZWFueW51bWJlcmVkYm9va21hcmtzID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueXBnIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55cGcvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitGSUxFU18ke1BOfS1nZWFueXBnID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXBnLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnlwZyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlwcmoiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlwcmovQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNFTlNFXyR7UE59LWdlYW55cHJqID0gIkdQTHYzIgorRklMRVNfJHtQTn0tZ2VhbnlwcmogPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55cHJqLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnlwcmogPSAiJHtQTn0iCisKKyMgbm8gZ25vbWUgcHlndGsKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdlYW55cHkiCisjUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlweSIKKyNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlweS9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKyNGSUxFU18ke1BOfS1nZWFueXB5ID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXB5LnNvIgorI1JERVBFTkRTXyR7UE59LWdlYW55cHkgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55dmMiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2Vhbnl2Yy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWdlYW55dmMgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55dmMuc28iCitSREVQRU5EU18ke1BOfS1nZWFueXZjID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZW5pdXNwYXN0ZSIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZW5pdXNwYXN0ZS9DT1BZSU5HO21kNT1iZmMyMDMyNjlmODg2MmViZmMxMTk4Y2RjODA5YTk1YSIKK0ZJTEVTXyR7UE59LWdlbml1c3Bhc3RlID0gIiR7bGliZGlyfS9nZWFueS9nZW5pdXNwYXN0ZS5zbyAke2RhdGFkaXJ9LyR7UE59L2dlbml1c3Bhc3RlIgorUkRFUEVORFNfJHtQTn0tZ2VuaXVzcGFzdGUgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdpdC1jaGFuZ2ViYXIiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2l0LWNoYW5nZWJhci9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0xJQ0VOU0VfJHtQTn0tZ2l0LWNoYW5nZWJhciA9ICJHUEx2MyIKK0ZJTEVTXyR7UE59LWdpdC1jaGFuZ2ViYXIgPSAiJHtsaWJkaXJ9L2dlYW55L2dpdC1jaGFuZ2ViYXIuc28iCitSREVQRU5EU18ke1BOfS1naXQtY2hhbmdlYmFyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1rZXlyZWNvcmQiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8va2V5cmVjb3JkL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0ta2V5cmVjb3JkID0gIiR7bGliZGlyfS9nZWFueS9rZXlyZWNvcmQuc28iCitSREVQRU5EU18ke1BOfS1rZXlyZWNvcmQgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWxpbmVvcGVyYXRpb25zIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2xpbmVvcGVyYXRpb25zL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tbGluZW9wZXJhdGlvbnMgPSAiJHtsaWJkaXJ9L2dlYW55L2xpbmVvcGVyYXRpb25zLnNvIgorUkRFUEVORFNfJHtQTn0tbGluZW9wZXJhdGlvbnMgPSAiJHtQTn0iCisKKyMgbm8gbWFya2Rvd24gLSBhdm9pZCBmbG9hdGluZyBkZXBlbmRlbmNpZXMKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1wZWctbWFya2Rvd24iCisjUExVR0lOUyArPSAiJHtQTn0tbWFya2Rvd24iCisjTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL21hcmtkb3duL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorI0ZJTEVTXyR7UE59LW1hcmtkb3duID0gIiR7bGliZGlyfS9nZWFueS9tYXJrZG93bi5zbyIKKyNSREVQRU5EU18ke1BOfS1tYXJrZG93biA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tbXVsdGl0ZXJtIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL211bHRpdGVybS9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0ZJTEVTXyR7UE59LW11bHRpdGVybSA9ICIke2xpYmRpcn0vZ2VhbnkvbXVsdGl0ZXJtLnNvIgorUkRFUEVORFNfJHtQTn0tbXVsdGl0ZXJtID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1vdmVydmlldyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9vdmVydmlldy9vdmVydmlldy9vdmVydmlld3BsdWdpbi5jO2JlZ2lubGluZT00O2VuZGxpbmU9MjA7bWQ1PTFhYTMzNTIyOTE2Y2RlYjQ2Y2NjYWMwYzYyOWRhMGQwIgorRklMRVNfJHtQTn0tb3ZlcnZpZXcgPSAiJHtsaWJkaXJ9L2dlYW55L292ZXJ2aWV3LnNvICR7ZGF0YWRpcn0vJHtQTn0vb3ZlcnZpZXciCitSREVQRU5EU18ke1BOfS1vdmVydmlldyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyIgorTElDRU5TRV8ke1BOfS1wYWlydGFnaGlnaGxpZ2h0ZXIgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3BhaXJ0YWdoaWdobGlnaHRlci9DT1BZSU5HO21kNT1kNmQ5Mjc1MjVhNjEyYjNhOGRiZWJjNGIyZTliNDdjMSIKK0ZJTEVTXyR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciA9ICIke2xpYmRpcn0vZ2VhbnkvcGFpcnRhZ2hpZ2hsaWdodGVyLnNvIgorUkRFUEVORFNfJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1wb2hlbHBlciIKK0xJQ0VOU0VfJHtQTn0tcG9oZWxwZXIgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vcG9oZWxwZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitGSUxFU18ke1BOfS1wb2hlbHBlciA9ICIke2xpYmRpcn0vZ2VhbnkvcG9oZWxwZXIuc28iCitSREVQRU5EU18ke1BOfS1wb2hlbHBlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tcHJldHR5LXByaW50ZXIiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vcHJldHR5LXByaW50ZXIvc3JjL1ByZXR0eVByaW50ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT0xNjY1MTE1YzJmYWRiMTdjMWI1M2NkYjRlNDNiMjQ0MCIKK0ZJTEVTXyR7UE59LXByZXR0eS1wcmludGVyID0gIiR7bGliZGlyfS9nZWFueS9wcmV0dHktcHJpbnRlci5zbyIKK1JERVBFTkRTXyR7UE59LXByZXR0eS1wcmludGVyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1wcm9qZWN0b3JnYW5pemVyIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3Byb2plY3Rvcmdhbml6ZXIvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1wcm9qZWN0b3JnYW5pemVyID0gIiR7bGliZGlyfS9nZWFueS9wcm9qZWN0b3JnYW5pemVyLnNvIgorUkRFUEVORFNfJHtQTn0tcHJvamVjdG9yZ2FuaXplciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tc2NvcGUiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2NvcGUvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1zY29wZSA9ICIke2xpYmRpcn0vZ2Vhbnkvc2NvcGUuc28iCitSREVQRU5EU18ke1BOfS1zY29wZSA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tc2VuZG1haWwiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2VuZG1haWwvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1zZW5kbWFpbCA9ICIke2xpYmRpcn0vZ2Vhbnkvc2VuZG1haWwuc28iCitSREVQRU5EU18ke1BOfS1zZW5kbWFpbCA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tc2hpZnRjb2x1bW4iCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc2hpZnRjb2x1bW4vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitGSUxFU18ke1BOfS1zaGlmdGNvbHVtbiA9ICIke2xpYmRpcn0vZ2Vhbnkvc2hpZnRjb2x1bW4uc28iCitSREVQRU5EU18ke1BOfS1zaGlmdGNvbHVtbiA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tc3BlbGxjaGVjayIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9zcGVsbGNoZWNrL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorRklMRVNfJHtQTn0tc3BlbGxjaGVjayA9ICIke2xpYmRpcn0vZ2Vhbnkvc3BlbGxjaGVjay5zbyIKK1JERVBFTkRTXyR7UE59LXNwZWxsY2hlY2sgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXRhYmxlY29udmVydCIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly90YWJsZWNvbnZlcnQvQ09QWUlORzttZDU9Njc1MzY4Njg3OGQwOTBhMWYzZjk0NDU2NjFkM2RmYmMiCitGSUxFU18ke1BOfS10YWJsZWNvbnZlcnQgPSAiJHtsaWJkaXJ9L2dlYW55L3RhYmxlY29udmVydC5zbyIKK1JERVBFTkRTXyR7UE59LXRhYmxlY29udmVydCA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tdHJlZWJyb3dzZXIiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vdHJlZWJyb3dzZXIvUkVBRE1FO2JlZ2lubGluZT02NztlbmRsaW5lPTY3O21kNT01MmY5MDg1N2ZkMWE5NjcyMTExZTQ3MmRkMDU2YTBkOCIKK0ZJTEVTXyR7UE59LXRyZWVicm93c2VyID0gIiR7bGliZGlyfS9nZWFueS90cmVlYnJvd3Nlci5zbyIKK1JERVBFTkRTXyR7UE59LXRyZWVicm93c2VyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS11cGRhdGVjaGVja2VyIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3VwZGF0ZWNoZWNrZXIvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCitGSUxFU18ke1BOfS11cGRhdGVjaGVja2VyID0gIiR7bGliZGlyfS9nZWFueS91cGRhdGVjaGVja2VyLnNvIgorUkRFUEVORFNfJHtQTn0tdXBkYXRlY2hlY2tlciA9ICIke1BOfSIKKworIyBubyB3ZWJraXQgLSBsYXN0cyBhZ2VzIGFuZCBpcyBub3QgcHJvcGVybHkgZGV0ZWN0ZWQKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS13ZWJoZWxwZXIiCisjUExVR0lOUyArPSAiJHtQTn0td2ViaGVscGVyIgorI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly93ZWJoZWxwZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisjTElDRU5TRV8ke1BOfS13ZWJoZWxwZXIgPSAiR1BMdjMiCisjRklMRVNfJHtQTn0td2ViaGVscGVyID0gIiR7bGliZGlyfS9nZWFueS93ZWJoZWxwZXIuc28iCisjUkRFUEVORFNfJHtQTn0td2ViaGVscGVyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS14bWxzbmlwcGV0cyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly94bWxzbmlwcGV0cy9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LXhtbHNuaXBwZXRzID0gIiR7bGliZGlyfS9nZWFueS94bWxzbmlwcGV0cy5zbyIKK1JERVBFTkRTXyR7UE59LXhtbHNuaXBwZXRzID0gIiR7UE59IgorCitQQUNLQUdFUyA9KyAiJHtQTFVHSU5TfSIKK1JERVBFTkRTXyR7UE59ID0gIiR7UExVR0lOU30iCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzE2ZWE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmYXN0IGFuZCBsaWdodHdlaWdodCBJREUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdlYW55Lm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmQ3YjJjOTk0YWYyMWQzMThiZDJjZDNiM2Y4MGMyZDUiCi0KLURFUEVORFMgPSAiZ3RrKyBsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlIGdldHRleHQKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ2Vhbnkub3JnLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzUwODFiNjAwNTYwYzVjODM2NmVkYTBlMWI4Y2M1MzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGFjMzYwZjFmM2Q2YzI4NzkwYTgxZDU3MDI1MmE3ZDQwNDIxZjZlMWQ4ZTVhOGQ2NTM3NTZiZDA0MWQ4ODQ5MSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtaHRtbC1kb2NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzNmUxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJBIGZhc3QgYW5kIGxpZ2h0d2VpZ2h0IElERSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2Vhbnkub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iZDdiMmM5OTRhZjIxZDMxOGJkMmNkM2IzZjgwYzJkNSIKKworREVQRU5EUyA9ICJndGsrIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgcHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBweXRob25uYXRpdmUgZ2V0dGV4dAorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nZWFueS5vcmcvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODYwMDBiZTZiMjY5NzJjNmE2OTk5MzljMzdjZGEzNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGZkYjkwNmJiNzZjNDI1MWE4YmNmODNlZTI2N2RiMjhjMjZlZjZhYjg2NzY2OGE3ODJjZWMxMTY0YTNhYmE1IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1odG1sLWRvY3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZS9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlL3JlbW92ZS15ZWxwLWhlbHAtcnVsZXMtdmFyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YTg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZS9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDQyZWZjOTRjMTFkNTEwYjQxZDhjZjM0MDdlMWMzOTAwZWI1MmI2MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDQgSnVuIDIwMTUgMTY6Mjg6MDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSAoWUVMUF9IRUxQX1JVTEVTKQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgaGVscC9NYWtlZmlsZS5hbSB8IDIgLS0KKyBoZWxwL01ha2VmaWxlLmluIHwgMiAtLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2hlbHAvTWFrZWZpbGUuYW0gYi9oZWxwL01ha2VmaWxlLmFtCitpbmRleCA1MGMwZTg0Li41YzVkMmU5IDEwMDY0NAorLS0tIGEvaGVscC9NYWtlZmlsZS5hbQorKysrIGIvaGVscC9NYWtlZmlsZS5hbQorQEAgLTEsNSArMSwzIEBACistQFlFTFBfSEVMUF9SVUxFU0AKKy0KKyBIRUxQX0lEID0gZ2xhZGUKKyAKKyBIRUxQX0ZJTEVTID0gXAorZGlmZiAtLWdpdCBhL2hlbHAvTWFrZWZpbGUuaW4gYi9oZWxwL01ha2VmaWxlLmluCitpbmRleCA2OTc4ZWE1Li5lMWM3ZDNiIDEwMDY0NAorLS0tIGEvaGVscC9NYWtlZmlsZS5pbgorKysrIGIvaGVscC9NYWtlZmlsZS5pbgorQEAgLTUyMSw4ICs1MjEsNiBAQCB1bmluc3RhbGwtYW06CisgCisgLlBSRUNJT1VTOiBNYWtlZmlsZQorIAorLUBZRUxQX0hFTFBfUlVMRVNACistCisgIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKyAjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKyAuTk9FWFBPUlQ6CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2ZpbGVzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMS1nbm9tZS1kb2MtdXRpbHMubWFrZS1zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZmlsZXMvMDAwMS1nbm9tZS1kb2MtdXRpbHMubWFrZS1zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2ZpbGVzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9maWxlcy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMzYjZlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkdsYWRlIC0gQSBVc2VyIEludGVyZmFjZSBEZXNpZ25lciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbmFzaCIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJlODc1OTFjYjhhZTBmM2M2OGJlNjk3N2JiNTUyMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKK0RFUEVORFMgPSAiZ3RrKyBndGsrMyBnbGliLTIuMCBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBcCisgICAgICAgICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAorIgorCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUvMy4yMC9nbGFkZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5OTY0YTJkYTE0YzVmODQ1ZWFlMzYzODg5NTg2Y2E0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmQ5NmRjYTVkZWM0MGVlMzRlMmY0MWQ0OWMxM2I0ZWE1MGRhOGYzMmEzYTQ5Y2EyZGE4MDJmZjE0ZGMxOGZlIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyogJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsuc28iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLmxhIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy8uZGVidWcvbGliZ2xhZGVndGsuc28iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmcvMDAwMS1GaXgtcHJpbnRkLWZvcm1hdHRpbmctc3RyaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmcvMDAwMS1GaXgtcHJpbnRkLWZvcm1hdHRpbmctc3RyaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjlhZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZy8wMDAxLUZpeC1wcmludGQtZm9ybWF0dGluZy1zdHJpbmdzLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gODZiNGQzOThkYmI5NWUyNDM3YjcwZWJhM2IzMGU5OTVlYzliZTUwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDIwOjQ3OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBwcmludGQgZm9ybWF0dGluZyBzdHJpbmdzCisKK0ZpeGVzCitlcnJvcjogZm9ybWF0IHN0cmluZyBpcyBub3QgYSBzdHJpbmcgbGl0ZXJhbCAocG90ZW50aWFsbHkgaW5zZWN1cmUpIFstV2Vycm9yLC1XZm9ybWF0LXNlY3VyaXR5XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9pcGZpbHRlci5jIHwgMiArLQorIHNyYy9vdGhwdGFiLmMgIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaXBmaWx0ZXIuYyBiL3NyYy9pcGZpbHRlci5jCitpbmRleCBlYjE3ZWM3Li44Yzc2ZTRjIDEwMDY0NAorLS0tIGEvc3JjL2lwZmlsdGVyLmMKKysrKyBiL3NyYy9pcGZpbHRlci5jCitAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgZ2V0aG9zdHBhcmFtcyhzdHJ1Y3QgaG9zdHBhcmFtcyAqZGF0YSwgY2hhciAqaW5pdF9zYWRkciwgY2hhciAqaW5pdF9zbWFzaywKKyAJCQkJc25wcmludGYobXNnc3RyLCA2MCwKKyAJCQkJCSAiSW52YWxpZCBwcm90b2NvbCBpbnB1dCBhdCBvciBuZWFyIHRva2VuIFwiJXNcIiIsCisgCQkJCQkgYnB0cik7CistCQkJCXR1aV9lcnJvcihBTllLRVlfTVNHLCBtc2dzdHIpOworKwkJCQl0dWlfZXJyb3IoQU5ZS0VZX01TRywgIiVzIiwgbXNnc3RyKTsKKyAJCQkJZG9hZ2FpbiA9IDE7CisgCQkJfSBlbHNlCisgCQkJCWRvYWdhaW4gPSAwOworZGlmZiAtLWdpdCBhL3NyYy9vdGhwdGFiLmMgYi9zcmMvb3RocHRhYi5jCitpbmRleCAxNDJjOWMyLi5mZTM5NWMyIDEwMDY0NAorLS0tIGEvc3JjL290aHB0YWIuYworKysrIGIvc3JjL290aHB0YWIuYworQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIHByaW50b3RocGVudHJ5KHN0cnVjdCBvdGhwdGFibGUgKnRhYmxlLCBzdHJ1Y3Qgb3RocHRhYmVudCAqZW50cnksCisgCQkJCWJyZWFrOworIAkJCX0KKyAKKy0JCQlzcHJpbnRmKHNjcmF0Y2hwYWQsIHJhcnBfbWFjX2FkZHIpOworKwkJCXNwcmludGYoc2NyYXRjaHBhZCwgIiVzIiwgcmFycF9tYWNfYWRkcik7CisgCQkJc3RyY2F0KG1zZ3N0cmluZywgc2NyYXRjaHBhZCk7CisgCQkJd2F0dHJzZXQodGFibGUtPm90aHB3aW4sIEFSUEFUVFIpOworIAkJCWJyZWFrOworQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIHByaW50b3RocGVudHJ5KHN0cnVjdCBvdGhwdGFibGUgKnRhYmxlLCBzdHJ1Y3Qgb3RocHRhYmVudCAqZW50cnksCisgCQl3YXR0cnNldCh0YWJsZS0+b3RocHdpbiwgVU5LTklQQVRUUik7CisgCQlwcm90cHRyID0gZ2V0cHJvdG9ieW51bWJlcihlbnRyeS0+cHJvdG9jb2wpOworIAkJaWYgKHByb3RwdHIgIT0gTlVMTCkgeworLQkJCXNwcmludGYocHJvdG5hbWUsIHByb3RwdHItPnBfYWxpYXNlc1swXSk7CisrCQkJc3ByaW50Zihwcm90bmFtZSwgIiVzIiwgcHJvdHB0ci0+cF9hbGlhc2VzWzBdKTsKKyAJCX0gZWxzZSB7CisgCQkJc3ByaW50Zihwcm90bmFtZSwgIklQIHByb3RvY29sIik7CisgCQkJdW5rbm93biA9IDE7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nL25jdXJzZXMtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZy9uY3Vyc2VzLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWI5MmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZy9uY3Vyc2VzLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDgxIEBACitVc2UgcGtnLWNvbmZpZyB0byBzZWFyY2ggZm9yIG5jdXJzZXMgbGlicmFyaWVzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK0luZGV4OiBpcHRyYWYtbmctMS4xLjQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHRyYWYtbmctMS4xLjQub3JpZy9NYWtlZmlsZQorKysrIGlwdHJhZi1uZy0xLjEuNC9NYWtlZmlsZQorQEAgLTIwNSw4ICsyMDUsOCBAQCBlbmRpZgorIAorIGlmbmRlZiBOQ1VSU0VTX0xERkxBR1MKKyBpZmRlZiBORUVEU19OQ1VSU0VTNQorLQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM1LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlczUtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCkKKysJTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXMgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlcyAtLWxpYnMgMj4vZGV2L251bGwpCisgCWlmbmRlZiBOT19QQU5FTAorIAkJTkNVUlNFU19MREZMQUdTICs9IC1scGFuZWwKKyAJZW5kaWYKK0BAIC0yMTUsOCArMjE1LDggQEAgZW5kaWYKKyAKKyBpZm5kZWYgTkNVUlNFU19MREZMQUdTCisgaWZkZWYgTkVFRFNfTkNVUlNFU1c1CistCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c1LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c1LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcFtrLWNvbmZpZyBuY3Vyc2VzdyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWxpYnMgMj4vZGV2L251bGwpCisgCWlmbmRlZiBOT19QQU5FTAorIAkJTkNVUlNFU19MREZMQUdTICs9IC1scGFuZWwKKyAJZW5kaWYKK0BAIC0yMjUsOCArMjI1LDggQEAgZW5kaWYKKyAKKyBpZm5kZWYgTkNVUlNFU19MREZMQUdTCisgaWZkZWYgTkVFRFNfTkNVUlNFUzYKKy0JTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzNi1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM2LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzNiAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzNiAtLWxpYnMgMj4vZGV2L251bGwpCisgCWlmbmRlZiBOT19QQU5FTAorIAkJTkNVUlNFU19MREZMQUdTICs9IC1scGFuZWwKKyAJZW5kaWYKK0BAIC0yMzUsOCArMjM1LDggQEAgZW5kaWYKKyAKKyBpZm5kZWYgTkNVUlNFU19MREZMQUdTCisgaWZkZWYgTkVFRFNfTkNVUlNFU1c2CistCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c2LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c2LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWxpYnMgMj4vZGV2L251bGwpCisgCWlmbmRlZiBOT19QQU5FTAorIAkJTkNVUlNFU19MREZMQUdTICs9IC1scGFuZWwKKyAJZW5kaWYKK0BAIC0yNDYsMTcgKzI0NiwxNyBAQCBlbmRpZgorICMgdHJ5IGZpbmQgbmN1c2VzIGJ5IGF1dG9kZXRlY3QKKyBpZm5kZWYgTkNVUlNFU19MREZMQUdTCisgCWlmbmVxICgkKHNoZWxsIG5jdXJzZXN3Ni1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKSwpCistCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3Ni1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzdzYtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCkKKy0JZWxzZSBpZm5lcSAoJChzaGVsbCBuY3Vyc2VzNi1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKSwpCistCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM2LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM2LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCistCWVsc2UgaWZuZXEgKCQoc2hlbGwgbmN1cnNlc3c1LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpLCkKKy0JCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c1LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3NS1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKQorLQllbHNlIGlmbmVxICgkKHNoZWxsIG5jdXJzZXM1LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpLCkKKy0JCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlczUtY29uZmlnIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorLQkJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlczUtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCkKKysJCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1saWJzIDI+L2Rldi9udWxsKQorKwllbHNlIGlmbmVxICgkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlcyAtLWxpYnMgMj4vZGV2L251bGwpLCkKKysJCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorKwkJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tbGlicyAyPi9kZXYvbnVsbCkKKysJZWxzZSBpZm5lcSAoJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXN3IC0tbGlicyAyPi9kZXYvbnVsbCksKQorKwkJTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXN3IC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorKwkJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWxpYnMgMj4vZGV2L251bGwpCisrCWVsc2UgaWZuZXEgKCQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tbGlicyAyPi9kZXYvbnVsbCksKQorKwkJTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXMgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXMgLS1saWJzIDI+L2Rldi9udWxsKQorIAllbmRpZgorIAorIAlpZm5lcSAoJChOQ1VSU0VTX0xERkxBR1MpLCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmdfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nXzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1M2U2NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nXzEuMS40LmJiCkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiQSBjb25zb2xlLWJhc2VkIG5ldHdvcmsgbW9uaXRvcmluZyB1dGlsaXR5IgorREVTQ1JJUFRJT04gPSAiSVBUcmFmLW5nIGlzIGEgY29uc29sZS1iYXNlZCBuZXR3b3JrIG1vbml0b3JpbmcgdXRpbGl0eS4gIElQVHJhZiBnYXRoZXJzIFwKK2RhdGEgbGlrZSBUQ1AgY29ubmVjdGlvbiBwYWNrZXQgYW5kIGJ5dGUgY291bnRzLCBpbnRlcmZhY2Ugc3RhdGlzdGljcyBcCithbmQgYWN0aXZpdHkgaW5kaWNhdG9ycywgVENQL1VEUCB0cmFmZmljIGJyZWFrZG93bnMsIGFuZCBMQU4gc3RhdGlvbiBcCitwYWNrZXQgYW5kIGJ5dGUgY291bnRzLiAgSVBUcmFmLW5nIGZlYXR1cmVzIGluY2x1ZGUgYW4gSVAgdHJhZmZpYyBtb25pdG9yIFwKK3doaWNoIHNob3dzIFRDUCBmbGFnIGluZm9ybWF0aW9uLCBwYWNrZXQgYW5kIGJ5dGUgY291bnRzLCBJQ01QIFwKK2RldGFpbHMsIE9TUEYgcGFja2V0IHR5cGVzLCBhbmQgb3ZlcnNpemVkIElQIHBhY2tldCB3YXJuaW5nczsgXAoraW50ZXJmYWNlIHN0YXRpc3RpY3Mgc2hvd2luZyBJUCwgVENQLCBVRFAsIElDTVAsIG5vbi1JUCBhbmQgb3RoZXIgSVAgXAorcGFja2V0IGNvdW50cywgSVAgY2hlY2tzdW0gZXJyb3JzLCBpbnRlcmZhY2UgYWN0aXZpdHkgYW5kIHBhY2tldCBzaXplIFwKK2NvdW50czsgYSBUQ1AgYW5kIFVEUCBzZXJ2aWNlIG1vbml0b3Igc2hvd2luZyBjb3VudHMgb2YgaW5jb21pbmcgYW5kIFwKK291dGdvaW5nIHBhY2tldHMgZm9yIGNvbW1vbiBUQ1AgYW5kIFVEUCBhcHBsaWNhdGlvbiBwb3J0cywgYSBMQU4gXAorc3RhdGlzdGljcyBtb2R1bGUgdGhhdCBkaXNjb3ZlcnMgYWN0aXZlIGhvc3RzIGFuZCBkaXNwbGF5cyBzdGF0aXN0aWNzIFwKK2Fib3V0IHRoZWlyIGFjdGl2aXR5OyBUQ1AsIFVEUCBhbmQgb3RoZXIgcHJvdG9jb2wgZGlzcGxheSBmaWx0ZXJzIHNvIFwKK3lvdSBjYW4gdmlldyBqdXN0IHRoZSB0cmFmZmljIHlvdSB3YW50OyBsb2dnaW5nOyBzdXBwb3J0IGZvciBFdGhlcm5ldCwgXAorRkRESSwgSVNETiwgU0xJUCwgUFBQLCBhbmQgbG9vcGJhY2sgaW50ZXJmYWNlczsgYW5kIHV0aWxpemF0aW9uIG9mIHRoZSBcCitidWlsdC1pbiByYXcgc29ja2V0IGludGVyZmFjZSBvZiB0aGUgTGludXgga2VybmVsLCBzbyBpdCBjYW4gYmUgdXNlZCBcCitvbiBhIHdpZGUgdmFyaWV0eSBvZiBzdXBwb3J0ZWQgbmV0d29yayBjYXJkcy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9pcHRyYWYtbmcvIgorTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTJiMzg1MDU5M2I4OTliMWExNzU5NGVkNGNjNGM3MzEiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2lwdHJhZi1uZy9pcHRyYWYtbmctMS4xLjQudGFyLmd6L2UwZjhkZjNiN2JhZjJiNTEwNjcwOWFiYzRmOGMwMjlhLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uY3Vyc2VzLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1wcmludGQtZm9ybWF0dGluZy1zdHJpbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImUwZjhkZjNiN2JhZjJiNTEwNjcwOWFiYzRmOGMwMjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2YjliMDViZjVkMzcyNWQ4NjQwOWI5MDE2OTY2MzlhZDQ2OTQ0ZDAyZGU2ZGVmODdiMWNlYWU1MzEwZGQzNWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCitQUk9WSURFUyA9ICJpcHRyYWYiCitSUFJPVklERVNfJHtQTn0gKz0gImlwdHJhZiIKK1JSRVBMQUNFU18ke1BOfSArPSAiaXB0cmFmIgorUkNPTkZMSUNUU18ke1BOfSArPSAiaXB0cmFmIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLzAwMDEtc3JjLUZpeC1lcnJvci1pbi1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi8wMDAxLXNyYy1GaXgtZXJyb3ItaW4tY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkxZWQzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLzAwMDEtc3JjLUZpeC1lcnJvci1pbi1jcm9zcy1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLUZyb20gMjc5MTBlYTE5MjYwYjdmN2EzZjljMDQ2NWFkZGQxZGVhODBjZjNiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KLURhdGU6IFRodSwgOCBPY3QgMjAxNSAxNToxMToxNyArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmM6IEZpeCBlcnJvciBpbiBjcm9zcy1jb21waWxlCi0KLVRoZSBlcnJvcnMgYXJlIGxpa2UgdGhpczoKLXRjcHRhYmxlLmg6MjY6MjU6IGZhdGFsIGVycm9yOiBsaW51eC9pZl90ci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1sZDogY2Fubm90IGZpbmQgLWx0ZXh0Ym94Ci0KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMaSBYaW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUgICAgIHwgMiArLQotIHNyYy9ob3N0bW9uLmMgICAgfCAyICstCi0gc3JjL2luc3RhbGwuc2ggICB8IDQgKystLQotIHNyYy9vdGhwdGFiLmMgICAgfCAyICstCi0gc3JjL3BhY2tldC5jICAgICB8IDIgKy0KLSBzcmMvdGNwdGFibGUuaCAgIHwgMiArLQotIHNyYy90ci5jICAgICAgICAgfCAyICstCi0gc3VwcG9ydC9NYWtlZmlsZSB8IDMgKy0tCi0gOCBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCAyMDQzYzJkLi4wZjc3YmVhIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC0zOSw3ICszOSw3IEBAIExET1BUUwkJPSAjLXN0YXRpYwotICMgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIHRvIHBvaW50IHRvIHlvdXIgbmN1cnNlcyBpbmNsdWRlIGRpcmVjdG9yeQotICMgaWYgdGhlIG5jdXJzZXMgaW5jbHVkZSBmaWxlcyBhcmUgbm90IGluIHRoZSBkZWZhdWx0IGxvY2F0aW9uLgotIAotLUlOQ0xVREVESVIJPSAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzIC1JLi4vc3VwcG9ydAotK0lOQ0xVREVESVIJPSAgLUkuLi9zdXBwb3J0Ci0gCi0gIyBZb3UgY2FuIHVuY29tbWVudCB0aGlzIG9uZSB0byBkaXNhYmxlIHRoZSBiYWNrc3BhY2Uga2V5IGluIGlucHV0IGZpZWxkcy4KLSAjIFRoaXMgbWVhbnMgeW91IG11c3QgdXNlIHRoZSBEZWwga2V5IG9yIEN0cmwrSCBjb21iaW5hdGlvbiB0byBlcmFzZSB0aGUKLWRpZmYgLS1naXQgYS9zcmMvaG9zdG1vbi5jIGIvc3JjL2hvc3Rtb24uYwotaW5kZXggMTRkZjJjOC4uNjU3MTU2MiAxMDA2NDQKLS0tLSBhL3NyYy9ob3N0bW9uLmMKLSsrKyBiL3NyYy9ob3N0bW9uLmMKLUBAIC0zMSw3ICszMSw3IEBAIGRldGFpbHMuCi0gI2luY2x1ZGUgPGxpbnV4L2lmX3BhY2tldC5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9mZGRpLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2lmX3RyLmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfdHIuaD4KLSAjaW5jbHVkZSA8bmV0L2lmX2FycC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotZGlmZiAtLWdpdCBhL3NyYy9pbnN0YWxsLnNoIGIvc3JjL2luc3RhbGwuc2gKLWluZGV4IGQyZmQzNjAuLjM2ZDM1MTYgMTAwNzU1Ci0tLS0gYS9zcmMvaW5zdGFsbC5zaAotKysrIGIvc3JjL2luc3RhbGwuc2gKLUBAIC0yMyw5ICsyMyw5IEBAIGVjaG8KLSBlY2hvICIqKiogSW5zdGFsbGluZyBleGVjdXRhYmxlIHByb2dyYW1zIGFuZCBwcmVwYXJpbmcgd29yayBkaXJlY3RvcmllcyIKLSBlY2hvCi0gZWNobyAiPj4+IEluc3RhbGxpbmcgaXB0cmFmIGluICRUQVJHRVQiCi0tJElOU1RBTEwgLW0gMDcwMCAtbyByb290IC1nIHJvb3QgLXMgaXB0cmFmICRUQVJHRVQKLSskSU5TVEFMTCAtbSAwNzAwIC1vIHJvb3QgLWcgcm9vdCAgaXB0cmFmICRUQVJHRVQKLSBlY2hvICI+Pj4gSW5zdGFsbGluZyBydm5hbWVkIGluICRUQVJHRVQiCi0tJElOU1RBTEwgLW0gMDcwMCAtbyByb290IC1nIHJvb3QgLXMgcnZuYW1lZCAkVEFSR0VUCi0rJElOU1RBTEwgLW0gMDcwMCAtbyByb290IC1nIHJvb3QgIHJ2bmFtZWQgJFRBUkdFVAotIAotIGlmIFsgISAtZCAkV09SS0RJUiBdOyB0aGVuCi0gICAgIGVjaG8gIj4+PiBDcmVhdGluZyBJUFRyYWYgd29yayBkaXJlY3RvcnkgJFdPUktESVIiCi1kaWZmIC0tZ2l0IGEvc3JjL290aHB0YWIuYyBiL3NyYy9vdGhwdGFiLmMKLWluZGV4IDk3NzcxZDEuLmE4YmI1MzYgMTAwNjQ0Ci0tLS0gYS9zcmMvb3RocHRhYi5jCi0rKysgYi9zcmMvb3RocHRhYi5jCi1AQCAtMTgsNyArMTgsNyBAQCBkZXRhaWxzLgotIAotICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfdHIuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl90ci5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9mZGRpLmg+Ci0gI2luY2x1ZGUgPHdpbm9wcy5oPgotICNpbmNsdWRlICJhcnBoZHIuaCIKLWRpZmYgLS1naXQgYS9zcmMvcGFja2V0LmMgYi9zcmMvcGFja2V0LmMKLWluZGV4IDMzZmRmMmEuLjFlMmI4MWIgMTAwNjQ0Ci0tLS0gYS9zcmMvcGFja2V0LmMKLSsrKyBiL3NyYy9wYWNrZXQuYwotQEAgLTM2LDcgKzM2LDcgQEAgZGV0YWlscy4KLSAjaW5jbHVkZSA8bGludXgvaWZfcGFja2V0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2ZkZGkuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfdHIuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl90ci5oPgotICNpbmNsdWRlIDxsaW51eC9pc2RuLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAjaW5jbHVkZSA8bXNnYm94ZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvdGNwdGFibGUuaCBiL3NyYy90Y3B0YWJsZS5oCi1pbmRleCAzZTE3NzkzLi5kMTM4MGI1IDEwMDY0NAotLS0tIGEvc3JjL3RjcHRhYmxlLmgKLSsrKyBiL3NyYy90Y3B0YWJsZS5oCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxsaW51eC9pZl9wYWNrZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZmRkaS5oPgotLSNpbmNsdWRlIDxsaW51eC9pZl90ci5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX3RyLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3RyLmMgYi9zcmMvdHIuYwotaW5kZXggNDBjOWU2My4uMTFmODA0NSAxMDA2NDQKLS0tLSBhL3NyYy90ci5jCi0rKysgYi9zcmMvdHIuYwotQEAgLTcsNyArNyw3IEBACi0gICovCi0gCi0gI2luY2x1ZGUgPGFzbS90eXBlcy5oPgotLSNpbmNsdWRlIDxsaW51eC9pZl90ci5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX3RyLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSAKLSB1bnNpZ25lZCBpbnQgZ2V0X3RyX2lwX29mZnNldCh1bnNpZ25lZCBjaGFyICpwa3QpCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9NYWtlZmlsZSBiL3N1cHBvcnQvTWFrZWZpbGUKLWluZGV4IDExNGJmYzMuLmM5NjJjMDkgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L01ha2VmaWxlCi0rKysgYi9zdXBwb3J0L01ha2VmaWxlCi1AQCAtMSw0ICsxLDMgQEAKLS1JTkNMVURFRElSCQk9IC1JL3Vzci9pbmNsdWRlL25jdXJzZXMKLSAKLSBPQkpTCQkJPSBpbnB1dC5vIG1lbnVydC5vIGxpc3Rib3gubyB3aW5vcHMubyBsYWJlbHMubyBcCi0gCQkJCW1zZ2JveGVzLm8gdHhib3gubwotQEAgLTEyLDcgKzExLDcgQEAgbGlidGV4dGJveC5hOiAkKE9CSlMpCi0gIwlnY2MgLXNoYXJlZCAtbyBsaWJ0ZXh0Ym94LnNvICQoT0JKUykKLSAKLSAlLm86ICUuYyAqLmgKLS0JZ2NjIC1PMiAtZyAtV2FsbCAtZlBJQyAkKElOQ0xVREVESVIpIC1jIC1vICQqLm8gJDwKLSsJJHtDQ30gLU8yIC1nIC1XYWxsIC1mUElDICAtYyAtbyAkKi5vICQ8Ci0gCi0gY2xlYW46Ci0gCXJtIC1yZiAqLm8gKn4gbGlidGV4dGJveC5hIGxpYnRleHRib3guc28KLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmL2Zvcm1hdF9zdHJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmL2Zvcm1hdF9zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOTZmMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi9mb3JtYXRfc3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotSW5kZXg6IGlwdHJhZi0zLjAuMC9zcmMvb3RocHRhYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB0cmFmLTMuMC4wLm9yaWcvc3JjL290aHB0YWIuYwotKysrIGlwdHJhZi0zLjAuMC9zcmMvb3RocHRhYi5jCi1AQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgcHJpbnRvdGhwZW50cnkoc3RydWN0IG90aHB0YWJsZSAqdGEKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIHNwcmludGYoc2NyYXRjaHBhZCwgaW5ldF9udG9hKHNhZGRyKSk7Ci0rICAgICAgICAgICAgc3ByaW50ZihzY3JhdGNocGFkLCAiJXMiLCBpbmV0X250b2Eoc2FkZHIpKTsKLSAgICAgICAgICAgICBzdHJjYXQobXNnc3RyaW5nLCBzY3JhdGNocGFkKTsKLSAgICAgICAgICAgICB3YXR0cnNldCh0YWJsZS0+b3RocHdpbiwgQVJQQVRUUik7Ci0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgcHJpbnRvdGhwZW50cnkoc3RydWN0IG90aHB0YWJsZSAqdGEKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIHNwcmludGYoc2NyYXRjaHBhZCwgcmFycF9tYWNfYWRkcik7Ci0rICAgICAgICAgICAgc3ByaW50ZihzY3JhdGNocGFkLCAiJXMiLCByYXJwX21hY19hZGRyKTsKLSAgICAgICAgICAgICBzdHJjYXQobXNnc3RyaW5nLCBzY3JhdGNocGFkKTsKLSAgICAgICAgICAgICB3YXR0cnNldCh0YWJsZS0+b3RocHdpbiwgQVJQQVRUUik7Ci0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgcHJpbnRvdGhwZW50cnkoc3RydWN0IG90aHB0YWJsZSAqdGEKLSAgICAgICAgIHdhdHRyc2V0KHRhYmxlLT5vdGhwd2luLCBVTktOSVBBVFRSKTsKLSAgICAgICAgIHByb3RwdHIgPSBnZXRwcm90b2J5bnVtYmVyKGVudHJ5LT5wcm90b2NvbCk7Ci0gICAgICAgICBpZiAocHJvdHB0ciAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgc3ByaW50Zihwcm90bmFtZSwgcHJvdHB0ci0+cF9hbGlhc2VzWzBdKTsKLSsgICAgICAgICAgICBzcHJpbnRmKHByb3RuYW1lLCAiJXMiLCBwcm90cHRyLT5wX2FsaWFzZXNbMF0pOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBzcHJpbnRmKHByb3RuYW1lLCAiSVAgcHJvdG9jb2wiKTsKLSAgICAgICAgICAgICB1bmtub3duID0gMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYvbGRvcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi9sZG9wdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NGEwYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi9sZG9wdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1JbmRleDogaXB0cmFmLTMuMC4wL3NyYy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdHJhZi0zLjAuMC5vcmlnL3NyYy9NYWtlZmlsZQotKysrIGlwdHJhZi0zLjAuMC9zcmMvTWFrZWZpbGUKLUBAIC01LDcgKzUsNyBAQAotICMKLSAjIEFyY2hpdGVjdHVyZSBkZXRlcm1pbmF0aW9uIHN0cmluZyBib3Jyb3dlZCBmcm9tIHRoZSBrZXJuZWwgbWFrZWZpbGUuCi0gIwotLUFSQ0ggCQk6PSAkKHNoZWxsIHVuYW1lIC1tIHwgc2VkIC1lIHMvaS44Ni9pMzg2LyAtZSBzL3N1bjR1L3NwYXJjNjQvIFwKLStBUkNIIAkJPz0gJChzaGVsbCB1bmFtZSAtbSB8IHNlZCAtZSBzL2kuODYvaTM4Ni8gLWUgcy9zdW40dS9zcGFyYzY0LyBcCi0gCQkJLWUgcy9hcm0uKi9hcm0vIC1lIHMvc2ExMTAvYXJtLykKLSBQTEFURk9STSAJPSAtRFBMQVRGT1JNPVwiJChzaGVsbCB1bmFtZSAtcykvJChBUkNIKVwiCi0gVkVSTlVNQkVSCTo9ICQoc2hlbGwgY2F0IHZlcnNpb24pCi1AQCAtMTcsNyArMTcsNyBAQCBWRVJTSU9OIAk9IC1EVkVSU0lPTj1cIiQoVkVSTlVNQkVSKVwiCi0gIwotIEJJTkRJUgkJPSAuLi8uLi9pcHRyYWYtJChWRVJOVU1CRVIpLmJpbi4kKEFSQ0gpCi0gCi0tQ0MJCT0gZ2NjCi0rQ0MJCT0gJChDQykKLSBMSUJTCQk9IC1MLi4vc3VwcG9ydCAtbHRleHRib3ggLWxwYW5lbCAtbG5jdXJzZXMgICAjIGluIHRoaXMgb3JkZXIhCi0gCi0gIyBjb21tZW50IHRoaXMgb25lIG91dCB0byBvbWl0IGRlYnVnIGNvZGUgd2hlbiBkb25lLgotQEAgLTMxLDEwICszMSwxMCBAQCBQUk9GCQk9ICMtcGcKLSAjIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjb21waWxlci4gIEkgZG9uJ3QgYmVsaWV2ZSB0aGV5IG5lZWQgdG8gYmUKLSAjIG1vZGlmaWVkIChleGNlcHQgZm9yIC1tNDg2IG9uIG5vbi1JbnRlbCB4ODYgcGxhdGZvcm1zKS4KLSAKLS1DRkxBR1MJCT0gLVdhbGwgIy1PMiAjLW00ODYKLStDRkxBR1MJCT89IC1XYWxsICMtTzIgIy1tNDg2Ci0gRElSUwkJPSAtRFdPUktESVI9XCIkKFdPUktESVIpXCIgXAotIAkJICAtRExPR0RJUj1cIiQoTE9HRElSKVwiIC1ERVhFQ0RJUj1cIiQoVEFSR0VUKVwiCi0tTERPUFRTCQk9ICMtc3RhdGljCi0rTERPUFRTCQk/PSAjLXN0YXRpYwotIAotICMgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIHRvIHBvaW50IHRvIHlvdXIgbmN1cnNlcyBpbmNsdWRlIGRpcmVjdG9yeQotICMgaWYgdGhlIG5jdXJzZXMgaW5jbHVkZSBmaWxlcyBhcmUgbm90IGluIHRoZSBkZWZhdWx0IGxvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZl8zLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWZfMy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmFiMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZl8zLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIklQVHJhZiBpcyBhIGNvbnNvbGUtYmFzZWQgbmV0d29yayBzdGF0aXN0aWNzIHV0aWxpdHkgZm9yIExpbnV4LiBcCi1JdCBnYXRoZXJzIGEgdmFyaWV0eSBvZiBmaWd1cmVzIHN1Y2ggYXMgVENQIGNvbm5lY3Rpb24gcGFja2V0IGFuZCBieXRlIGNvdW50cywgXAotaW50ZXJmYWNlIHN0YXRpc3RpY3MgYW5kIGFjdGl2aXR5IGluZGljYXRvcnMsIFRDUC9VRFAgdHJhZmZpYyBicmVha2Rvd25zLCBcCi1hbmQgTEFOIHN0YXRpb24gcGFja2V0IGFuZCBieXRlIGNvdW50cy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9pcHRyYWYuc2V1bC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYzBiZGMyOWRmNzM4YmFmMzI3MzY4YjFiYmIxNWE0NSIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1TUkNfVVJJID0gIiBcCi0gICAgZnRwOi8vaXB0cmFmLnNldWwub3JnL3B1Yi9pcHRyYWYvaXB0cmFmLTMuMC4wLnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtc3JjLUZpeC1lcnJvci1pbi1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICBmaWxlOi8vZm9ybWF0X3N0cmluZy5wYXRjaCBcCi0gICAgZmlsZTovL2xkb3B0cy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMzc3MzcxYzI4ZWUzYzIxYTc2ZjcwMjQ5MjA2NDllYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVlNDMzZDk1NTczZDYxMjUzOWRhNGI0NTJlNmNkY2JjYTZhYjY2NzRhODhiZmJmNmVhZjEyZDQ5MDJiNTE2MyIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IExET1BUUz0nJHtMREZMQUdTfScgQVJDSD0nJHtUQVJHRVRfQVJDSH0nIgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgLUMgc3JjIGFsbAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgb2VfcnVubWFrZSAtQyBzcmMgaW5zdGFsbCBcCi0gICAgICAgIFRBUkdFVD0ke0R9JHtiaW5kaXJ9IFwKLSAgICAgICAgV09SS0RJUj0ke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2NhbC9pcHRyYWYgXAotICAgICAgICBMT0dESVI9JHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nL2lwdHJhZiBcCi0gICAgICAgIExPQ0tESVI9JHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL2lwdHJhZgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiaW5kaXJ9ICR7bG9jYWxzdGF0ZWRpcn0gL3J1biIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb24tc3Bpcml0L2pzb24tc3Bpcml0LzAwMDEtTGluay10by1saWJhdG9taWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdC8wMDAxLUxpbmstdG8tbGliYXRvbWljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOGM3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdC8wMDAxLUxpbmstdG8tbGliYXRvbWljLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gYmJhYzlhYzNlMzkxMjUzYmMxZjkwY2YwZjcwYTJjZTFhYWM5NTExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTY6NTA6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTGluayB0byBsaWJhdG9taWMKKworVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nIGNvbXBpbGVyLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgorLS0tCisganNvbl9kZW1vL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICB8IDIgKy0KKyBqc29uX2hlYWRlcnNfb25seV9kZW1vL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIGpzb25fbWFwX2RlbW8vQ01ha2VMaXN0cy50eHQgICAgICAgICAgfCAyICstCisganNvbl90ZXN0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2pzb25fZGVtby9DTWFrZUxpc3RzLnR4dCBiL2pzb25fZGVtby9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjFkM2M2YS4uMGRmZDMwOCAxMDA2NDQKKy0tLSBhL2pzb25fZGVtby9DTWFrZUxpc3RzLnR4dAorKysrIGIvanNvbl9kZW1vL0NNYWtlTGlzdHMudHh0CitAQCAtNSw1ICs1LDUgQEAgRklORF9QQUNLQUdFKEJvb3N0IDEuMzQgUkVRVUlSRUQpCisgSU5DTFVERV9ESVJFQ1RPUklFUygke0Jvb3N0X0lOQ0xVREVfRElSfSkKKyAKKyBBRERfRVhFQ1VUQUJMRShqc29uX2RlbW8gJHtKU09OX0RFTU9fU1JDU30pCistVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fZGVtbyBqc29uX3NwaXJpdCkKKytUQVJHRVRfTElOS19MSUJSQVJJRVMoanNvbl9kZW1vIGpzb25fc3Bpcml0IC1sYXRvbWljKQorIAorZGlmZiAtLWdpdCBhL2pzb25faGVhZGVyc19vbmx5X2RlbW8vQ01ha2VMaXN0cy50eHQgYi9qc29uX2hlYWRlcnNfb25seV9kZW1vL0NNYWtlTGlzdHMudHh0CitpbmRleCBhM2M3ODdhLi42ZWFlMTFlIDEwMDY0NAorLS0tIGEvanNvbl9oZWFkZXJzX29ubHlfZGVtby9DTWFrZUxpc3RzLnR4dAorKysrIGIvanNvbl9oZWFkZXJzX29ubHlfZGVtby9DTWFrZUxpc3RzLnR4dAorQEAgLTUsNSArNSw1IEBAIEZJTkRfUEFDS0FHRShCb29zdCAxLjM0IFJFUVVJUkVEKQorIElOQ0xVREVfRElSRUNUT1JJRVMoJHtCb29zdF9JTkNMVURFX0RJUn0pCisgCisgQUREX0VYRUNVVEFCTEUoanNvbl9oZWFkZXJzX29ubHlfZGVtbyAke0pTT05fSEVBREVSU19PTkxZX0RFTU9fU1JDU30pCistVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25faGVhZGVyc19vbmx5X2RlbW8ganNvbl9zcGlyaXQpCisrVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25faGVhZGVyc19vbmx5X2RlbW8ganNvbl9zcGlyaXQgLWxhdG9taWMpCisgCitkaWZmIC0tZ2l0IGEvanNvbl9tYXBfZGVtby9DTWFrZUxpc3RzLnR4dCBiL2pzb25fbWFwX2RlbW8vQ01ha2VMaXN0cy50eHQKK2luZGV4IDU5OTAwNmEuLmUzZTQ1ZTggMTAwNjQ0CistLS0gYS9qc29uX21hcF9kZW1vL0NNYWtlTGlzdHMudHh0CisrKysgYi9qc29uX21hcF9kZW1vL0NNYWtlTGlzdHMudHh0CitAQCAtNSw1ICs1LDUgQEAgRklORF9QQUNLQUdFKEJvb3N0IDEuMzQgUkVRVUlSRUQpCisgSU5DTFVERV9ESVJFQ1RPUklFUygke0Jvb3N0X0lOQ0xVREVfRElSfSkKKyAKKyBBRERfRVhFQ1VUQUJMRShqc29uX21hcF9kZW1vICR7SlNPTl9NQVBfREVNT19TUkNTfSkKKy1UQVJHRVRfTElOS19MSUJSQVJJRVMoanNvbl9tYXBfZGVtbyBqc29uX3NwaXJpdCkKKytUQVJHRVRfTElOS19MSUJSQVJJRVMoanNvbl9tYXBfZGVtbyBqc29uX3NwaXJpdCAtbGF0b21pYykKKyAKK2RpZmYgLS1naXQgYS9qc29uX3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9qc29uX3Rlc3QvQ01ha2VMaXN0cy50eHQKK2luZGV4IDM4ZmZhN2YuLjFlYzEzNjUgMTAwNjQ0CistLS0gYS9qc29uX3Rlc3QvQ01ha2VMaXN0cy50eHQKKysrKyBiL2pzb25fdGVzdC9DTWFrZUxpc3RzLnR4dAorQEAgLTExLDUgKzExLDUgQEAgRklORF9QQUNLQUdFKEJvb3N0IDEuMzQgUkVRVUlSRUQpCisgSU5DTFVERV9ESVJFQ1RPUklFUygke0Jvb3N0X0lOQ0xVREVfRElSfSkKKyAKKyBBRERfRVhFQ1VUQUJMRShqc29uX3Rlc3QgJHtKU09OX1RFU1RfU1JDU30pCistVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fdGVzdCBqc29uX3NwaXJpdCkKKytUQVJHRVRfTElOS19MSUJSQVJJRVMoanNvbl90ZXN0IGpzb25fc3Bpcml0IC1sYXRvbWljKQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdF80LjA4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYgppbmRleCAyZjQ1NmJmLi5jN2MxYWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdF80LjA4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb24tc3Bpcml0L2pzb24tc3Bpcml0XzQuMDguYmIKQEAgLTExLDE0ICsxMSwxMyBAQAogCiBTUkNfVVJJID0gImZpbGU6Ly9qc29uX3NwaXJpdF92JHtQVn0uemlwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRqdXN0LXRoZS1jbWFrZS1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUxpbmstdG8tbGliYXRvbWljLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2pzb25fc3Bpcml0X3Yke1BWfSIKIAogREVQRU5EUyA9ICJib29zdCIKIAotTERGTEFHUyArPSAiLVdsLC0tYXMtbmVlZGVkIC1sYXRvbWljIC1XbCwtLW5vLWFzLW5lZWRlZCIKLQogaW5oZXJpdCBjbWFrZQogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliSnNvblNwaXJpdC5jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2YWUyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkpTT04gQysrIGxpYiB1c2VkIHRvIHJlYWQgYW5kIHdyaXRlIGpzb24gZmlsZS4iCi1ERVNDUklQVElPTiA9ICJKc29uY3BwIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgSlNPTiAoaHR0cDovL2pzb24ub3JnKSByZWFkZXIgXAotICAgICAgICAgICAgICAgYW5kIHdyaXRlciBpbiBDKysuIEpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSBpcyBhIFwKLSAgICAgICAgICAgICAgIGxpZ2h0d2VpZ2h0IGRhdGEtaW50ZXJjaGFuZ2UgZm9ybWF0LiBJdCBpcyBlYXN5IGZvciBodW1hbnMgdG8gXAotICAgICAgICAgICAgICAgcmVhZCBhbmQgd3JpdGUuIEl0IGlzIGVhc3kgZm9yIG1hY2hpbmVzIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZS4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNTZlZTU1YzAzYTU1ZjgxMDViOTY5ZDgyNzA2MzJjZSIKLQotU1JDUkVWID0gImY3MDBmZTQ1NTk0MGQ0ZDMyNWMwODhiOTE3NGExNzNlMTMwZTBmYTgiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04gLURKU09OQ1BQX1dJVEhfVEVTVFM9T0ZGIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YTAyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjMuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJKU09OIEMrKyBsaWIgdXNlZCB0byByZWFkIGFuZCB3cml0ZSBqc29uIGZpbGUuIgorREVTQ1JJUFRJT04gPSAiSnNvbmNwcCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIEpTT04gKGh0dHA6Ly9qc29uLm9yZykgcmVhZGVyIFwKKyAgICAgICAgICAgICAgIGFuZCB3cml0ZXIgaW4gQysrLiBKU09OIChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbikgaXMgYSBcCisgICAgICAgICAgICAgICBsaWdodHdlaWdodCBkYXRhLWludGVyY2hhbmdlIGZvcm1hdC4gSXQgaXMgZWFzeSBmb3IgaHVtYW5zIHRvIFwKKyAgICAgICAgICAgICAgIHJlYWQgYW5kIHdyaXRlLiBJdCBpcyBlYXN5IGZvciBtYWNoaW5lcyB0byBwYXJzZSBhbmQgZ2VuZXJhdGUuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmEyYTIzZGQxZGM2YzEzOWYzNTEwNTM3OWQ3NmRmMmIiCisKK1NSQ1JFViA9ICIyZGUxODAyMWZjYjExMzcwZTliNWExZmJlN2RjZmQ2NzM1MzNhMTM0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIC1ESlNPTkNQUF9XSVRIX1RFU1RTPU9GRiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZW5zdXJlLWZyb250ZW5kcy1leGl0cy1iZWZvcmUtd3JpdGluZy1pbnRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZW5zdXJlLWZyb250ZW5kcy1leGl0cy1iZWZvcmUtd3JpdGluZy1pbnRvLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTI2M2M2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMvZmlsZXMvMDAwMS1NYWtlZmlsZS1lbnN1cmUtZnJvbnRlbmRzLWV4aXRzLWJlZm9yZS13cml0aW5nLWludG8tLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNzgwYjBiOGU0ODU1MWJhNDliMDExY2FlZWIwOTEwMWEwOWMxNGE2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDI2IE1heSAyMDE3IDE3OjExOjMyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBlbnN1cmUgZnJvbnRlbmRzLyBleGl0cyBiZWZvcmUgd3JpdGluZyBpbnRvIGl0CisKK0FzIHByZXZpb3VzbHksIGlmIEdDQyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBiZWluZyB3cml0dGVuIGFuZCB0aGUgYnVpbGQgaXMgb3V0IG9mCit0cmVlIHRoZW4gZnJvbnRlbmRzLyB3b24ndCBleGlzdCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlhbm4gRS4gTU9SSU4gPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZjc5ODYzNzUxMjlkMWFkYTdkYzZhYmVlZWM1YjlkMDBlZjZmNzE0OSkKK1NpZ25lZC1vZmYtYnk6IFlhbm4gRS4gTU9SSU4gPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgorLS0tCisgTWFrZWZpbGUuYW0gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDFiYWExMTAuLjQzNGRiNWQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xNzEsNiArMTcxLDcgQEAgaWYgQ09ORF9rY29uZmlnCisgYmluX1NDUklQVFMgKz0gZnJvbnRlbmRzL2tjb25maWcKKyAKKyBmcm9udGVuZHMva2NvbmZpZzogZnJvbnRlbmRzL2tjb25maWcuaW4KKysJJChNS0RJUl9QKSAkKEBEKQorIAkkKEFNX1ZfR0VOKSQoU0VEKSAtZSAncy9AS0NGR19MSVNUQC8kKGtjZmdfbGlzdCkvZycgXAorIAkJJDwgPiRACisgCUBjaG1vZCAreCAkQAorLS0gCisyLjEyLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMvZmlsZXMvMDAwMS1Td2l0Y2gtdXRpbHMta2NvbmZpZy1kaWZmLXRvLXVzZS1QeXRob24tMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtU3dpdGNoLXV0aWxzLWtjb25maWctZGlmZi10by11c2UtUHl0aG9uLTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmODkwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtU3dpdGNoLXV0aWxzLWtjb25maWctZGlmZi10by11c2UtUHl0aG9uLTMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAzYjliMGY4MmMzM2Y3OTNhMTRkNDRiZjA2YjZjODEzNmJjM2ZjNGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE2OjQ4OjQyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFN3aXRjaCB1dGlscy9rY29uZmlnLWRpZmYgdG8gdXNlIFB5dGhvbiAzCisKK1RoZSBzY3JpcHQgc3VwcG9ydHMgaXQsIGJ1dCBjb250aW51ZXMgdG8gcmVmZXIgdG8gMi54IGluIHNoZWJhbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB1dGlscy9rY29uZmlnLWRpZmYgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91dGlscy9rY29uZmlnLWRpZmYgYi91dGlscy9rY29uZmlnLWRpZmYKK2luZGV4IDBkYjI2N2QuLjE5MTg5ZjMgMTAwNzU1CistLS0gYS91dGlscy9rY29uZmlnLWRpZmYKKysrKyBiL3V0aWxzL2tjb25maWctZGlmZgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgZGlmZmNvbmZpZyAtIGEgdG9vbCB0byBjb21wYXJlIC5jb25maWcgZmlsZXMuCisgIworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfNC4xMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9rY29uZmlnLWZyb250ZW5kc180LjExLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjA4YjhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfNC4xMS4wLjEuYmIKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaW51eCBrZXJuZWwgc3R5bGUgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsgZm9yIG90aGVyIHByb2plY3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIGtjb25maWctZnJvbnRlbmRzIHByb2plY3QgYWltcyBhdCBjZW50cmFsaXNpbmcgXAordGhlIGVmZm9ydCBvZiBrZWVwaW5nIGFuIHVwLXRvLWRhdGUsIG91dC1vZi10cmVlLCBwYWNrYWdpbmcgb2YgdGhlIFwKK2tjb25maWcgaW5mcmFzdHJ1Y3R1cmUsIHJlYWR5IGZvciB1c2UgYnkgdGhpcmQtcGFydHkgcHJvamVjdHMuIFwKK1RoZSBrY29uZmlnLWZyb250ZW5kcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBrY29uZmlnIHBhcnNlciwgYXMgd2VsbCBhcyBhbGwgXAordGhlIGZyb250ZW5kcyIKK0hPTUVQQUdFID0gImh0dHA6Ly95bW9yaW4uaXMtYS1nZWVrLm9yZy9wcm9qZWN0cy9rY29uZmlnLWZyb250ZW5kcyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTliOGNmNjBmZjM5NzY3ZmYwNGI2NzFmY2E4MzAyNDA4IgorU0VDVElPTiA9ICJkZXZlbCIKK0RFUEVORFMgKz0gIm5jdXJzZXMgZmxleCBiaXNvbiBncGVyZi1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMyBiYXNoIgorU1JDX1VSSSA9ICJnaXQ6Ly95bW9yaW4uaXMtYS1nZWVrLm9yZy9rY29uZmlnLWZyb250ZW5kczticmFuY2g9NC4xMS54IFwKKwkgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1lbnN1cmUtZnJvbnRlbmRzLWV4aXRzLWJlZm9yZS13cml0aW5nLWludG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLXV0aWxzLWtjb25maWctZGlmZi10by11c2UtUHl0aG9uLTMucGF0Y2giCisKK1NSQ1JFViA9ICJmMjJmY2UzYTMwOGJlMWM3NzkwZWJlZmM2YmJlZGIzM2M1ZjdjODZhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCAke1N9L3NjcmlwdHMvLmF1dG9zdHVmZi9tNAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlsbiAtcyBrY29uZmlnLWNvbmYgJHtEfSR7YmluZGlyfS9jb25mCisJbG4gLXMga2NvbmZpZy1tY29uZiAke0R9JHtiaW5kaXJ9L21jb25mCit9CisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdjb25mIC0tZGlzYWJsZS1xY29uZiIKKworIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKKyMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgorU09MSUJTID0gIi0ke0BkLmdldFZhcignUFYnKVs6LTJdfS5zbyIKK0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGlia2NvbmZpZy1wYXJzZXIuc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUFkZC1DTWFrZS1idWlsZC1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1BZGQtQ01ha2UtYnVpbGQtZmlsZXMucGF0Y2gKaW5kZXggY2QwZDE0My4uNTYwYzNhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUFkZC1DTWFrZS1idWlsZC1maWxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQWRkLUNNYWtlLWJ1aWxkLWZpbGVzLnBhdGNoCkBAIC01Myw3ICs1Myw3IEBACiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICtJTkNMVURFICgke0NNQUtFX1NPVVJDRV9ESVJ9L1ZFUlNJT04uY21ha2UpCiArCi0rU0VUIChMSUJSQ0ZfTElCUkFSSUVTICItbHB0aHJlYWQgLWxkbCIpCisrU0VUIChMSUJSQ0ZfTElCUkFSSUVTICItbHB0aHJlYWQgLWxkbCAtbGF0b21pYyIpCiArSU5DTFVERV9ESVJFQ1RPUklFUyAoJHtDTUFLRV9TT1VSQ0VfRElSfS9pbmNsdWRlKQogKwogK0lGIChMSUJSQ0ZfVVNFX09QRU5TU0wpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQ2hlY2stZm9yLV9fcG93ZXJwY19fLWRlZmluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1DaGVjay1mb3ItX19wb3dlcnBjX18tZGVmaW5lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MWFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQ2hlY2stZm9yLV9fcG93ZXJwY19fLWRlZmluZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGFjNzMxNjY3OWUzMGY3MDEzNjA0YjE5YWEwOTQ5YTA3NDRlOTFkMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDEzOjA2OjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGZvciBfX3Bvd2VycGNfXyBkZWZpbmUKKworQWxzbyBjaGVjayBmb3IgZ2NjJ3MgaW50ZXJuYWwgZGVmaW5lIGZvciBwcGMgcGxhdGZvcm0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcCBiL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcAoraW5kZXggMjc4Y2E4MC4uOWY5YzQ0NiAxMDA3NTUKKy0tLSBhL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcAorKysrIGIvc3JjL1JDRi9CeXRlT3JkZXJpbmcuY3BwCitAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgUkNGIHsKKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBCaWdFbmRpYW47CisgCistI2VsaWYgZGVmaW5lZCggX19wcGNfXyApCisrI2VsaWYgZGVmaW5lZCggX19wcGNfXyApIHx8IGRlZmluZWQoIF9fcG93ZXJwY19fICkKKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBCaWdFbmRpYW47CisgCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQ2xpZW50U3R1Yi5ocHAtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUNsaWVudFN0dWIuaHBwLWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTQ5ZGVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUNsaWVudFN0dWIuaHBwLWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGQ3ODg1MWI2Zjg3ZjI0NzJmMDQxMTAyZDdiMzcyNmZmYzAwOWJmYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+CitEYXRlOiBUdWUsIDYgSnVuIDIwMTcgMDU6NTQ6MjAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2xpZW50U3R1Yi5ocHA6IGZpeCBhIGNsYW5nIGNvbXBpbGluZyBpc3N1ZQorCitBIGVycm9yIHdhcyBvYnNlcnZlZCB3aXRoIGNsYW5nIGNvbXBpbGVyLCBhcyBmb2xsb3dzOgorfCBzcmMvUkNGL1JDRi5jcHA6NDk6Cit8IHNyYy9SQ0YvQ2xpZW50U3R1Yi5jcHA6Mjg6Cit8IGluY2x1ZGUvUkNGL0Z1dHVyZS5ocHA6NDk6MjY6IGVycm9yOiAnZW5yb2wnIGlzIGEgcHJpdmF0ZSBtZW1iZXIgb2YgJ1JDRjo6Q2xpZW50U3R1YicKKworaXQgY2FuIGJlIGZpeGVkIGJ5IGRlY2xhcmluZyBGdXR1cmUgYXMgYSBmcmllbmQgY2xhc3Mgb2YgQ2xpZW50U3R1Yi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KKy0tLQorIGluY2x1ZGUvUkNGL0NsaWVudFN0dWIuaHBwIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvUkNGL0NsaWVudFN0dWIuaHBwIGIvaW5jbHVkZS9SQ0YvQ2xpZW50U3R1Yi5ocHAKK2luZGV4IDk4ODJjZjQuLjg0NjU2MjUgMTAwNzU1CistLS0gYS9pbmNsdWRlL1JDRi9DbGllbnRTdHViLmhwcAorKysrIGIvaW5jbHVkZS9SQ0YvQ2xpZW50U3R1Yi5ocHAKK0BAIC0zNzIsNiArMzcyLDggQEAgbmFtZXNwYWNlIFJDRiB7CisgCisgICAgIHByaXZhdGU6CisgCisrICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorKyAgICAgICAgZnJpZW5kIGNsYXNzIEZ1dHVyZTsKKyAgICAgICAgIGZyaWVuZCBjbGFzcyBGdXR1cmVJbXBsQmFzZTsKKyAKKyAgICAgICAgIHRlbXBsYXRlPAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL2FhcmNoNjQtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvYWFyY2g2NC1zdXBwb3J0LnBhdGNoCmluZGV4IDI4Y2QwZmUuLmUwOGVmYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvYWFyY2g2NC1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvYWFyY2g2NC1zdXBwb3J0LnBhdGNoCkBAIC0zLDExICszLDExIEBACiAtLS0gUkNGLTIuMi4wLjAub3JpZy9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKICsrKyBSQ0YtMi4yLjAuMC9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKIEBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBSQ0YgewotIA0KLSAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47DQotIA0KLS0jZWxpZiBkZWZpbmVkKF9fYXJtX18pDQotKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykNCi0gDQotICAgICBjb25zdCBCeXRlT3JkZXIgTWFjaGluZUJ5dGVPcmRlciA9IExpdHRsZUVuZGlhbjsNCi0gDQorIAorICAgICBjb25zdCBCeXRlT3JkZXIgTWFjaGluZUJ5dGVPcmRlciA9IExpdHRsZUVuZGlhbjsKKyAKKy0jZWxpZiBkZWZpbmVkKF9fYXJtX18pCisrI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorIAorICAgICBjb25zdCBCeXRlT3JkZXIgTWFjaGluZUJ5dGVPcmRlciA9IExpdHRsZUVuZGlhbjsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvbWlwcy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi9taXBzLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEzMjdmNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvbWlwcy1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK0luZGV4OiBSQ0YtMi4yLjAuMC9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBSQ0YtMi4yLjAuMC5vcmlnL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcAorKysrIFJDRi0yLjIuMC4wL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcAorQEAgLTY0LDYgKzY0LDE0IEBAIG5hbWVzcGFjZSBSQ0YgeworIAorICAgICBjb25zdCBCeXRlT3JkZXIgTWFjaGluZUJ5dGVPcmRlciA9IExpdHRsZUVuZGlhbjsKKyAKKysjZWxpZiBkZWZpbmVkKF9fbWlwc2VsX18pIHx8IGRlZmluZWQoX19taXBzNjRlbF9fKQorKworKyAgICBjb25zdCBCeXRlT3JkZXIgTWFjaGluZUJ5dGVPcmRlciA9IExpdHRsZUVuZGlhbjsKKysKKysjZWxpZiBkZWZpbmVkKCBfX21pcHNfXyApIHx8IGRlZmluZWQoX19taXBzNjRfXykKKysKKysgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBCaWdFbmRpYW47CisrCisgI2VsaWYgZGVmaW5lZChfX2JmaW5fXykKKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIKaW5kZXggNTFhZDdlYy4uNDNlZmY3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYgpAQCAtOCwxOSArOCwyMiBAQAogU0VDVElPTiA9ICJsaWJzIgogUFJJT1JJVFkgPSAib3B0aW9uYWwiCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGljZW5zZS50eHQ7bWQ1PTEzN2MyOTM1YjUxYzk1MDY4YThiMWJiZDQzNGZmZTJkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGljZW5zZS50eHQ7bWQ1PTc1ODZhMzEyYjllOTc4ZjlkNmZhYzlhNTc4MGQxZjg0IgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuZGVsdGF2c29mdC5jb20vZG93bmxvYWRzL1JDRi0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtQ01ha2UtYnVpbGQtZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNsaWVudFN0dWIuaHBwLWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItX19wb3dlcnBjX18tZGVmaW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2VjYjNjNzNmN2ViNjZkYmE4NzkwYjY1OTM3NGY2OTAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmJmY2M4OGRlNTAyYzM5NjA0ODc4YzM5NWY1MTZiMDNmZmY0ZWFjNjNlYjRmN2Y0NGMwN2Q0MzM4Mzk3MTJkZCIKIAogUyA9ICIke1dPUktESVJ9L1JDRi0ke1BWfSIKIAotaW5oZXJpdCBjbWFrZQoraW5oZXJpdCBjbWFrZSBkb3MydW5peAogCiBQQUNLQUdFQ09ORklHID89ICJ6bGliIG9wZW5zc2wgc2Ytc2VyaWFsaXphdGlvbiBib29zdC1maWxlc3lzdGVtIGJvb3N0LWFzaW8gcHJvdG9idWYganNvbiBkbGwgc3RhdGljIHNoYXJlZCBkZW1vcyIKIFBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLURMSUJSQ0ZfVVNFX1pMSUI9T04sLURMSUJSQ0ZfVVNFX1pMSUI9T0ZGLHpsaWIsemxpYiIKQEAgLTMxLDggKzM0LDggQEAKIFBBQ0tBR0VDT05GSUdbYm9vc3Qtc2VyaWFsaXphdGlvbl0gPSAiLURMSUJSQ0ZfVVNFX0JPT1NUX1NFUklBTElaQVRJT049T04sLURMSUJSQ0ZfVVNFX0JPT1NUX1NFUklBTElaQVRJT049T0ZGLGJvb3N0LCIKIFBBQ0tBR0VDT05GSUdbYm9vc3QtZmlsZXN5c3RlbV0gPSAiLURMSUJSQ0ZfVVNFX0JPT1NUX0ZJTEVTWVNURU09T04sLURMSUJSQ0ZfVVNFX0JPT1NUX0ZJTEVTWVNURU09T0ZGLGJvb3N0LCIKIFBBQ0tBR0VDT05GSUdbYm9vc3QtYXNpb10gPSAiLURMSUJSQ0ZfVVNFX0JPT1NUX0FTSU89T04sLURMSUJSQ0ZfVVNFX0JPT1NUX0FTSU89T0ZGLGJvb3N0LCIKLVBBQ0tBR0VDT05GSUdbcHJvdG9idWZdID0gIi1ETElCUkNGX1VTRV9QUk9UT0JVRj1PTiwtRExJQlJDRl9VU0VfUFJPVE9CVUY9T0ZGLHByb3RvYnVmLCIKLVBBQ0tBR0VDT05GSUdbanNvbl0gPSAiLURMSUJSQ0ZfVVNFX0pTT049T04sLURMSUJSQ0ZfVVNFX0pTT049T0ZGLGpzb24tc3Bpcml0LCIKK1BBQ0tBR0VDT05GSUdbcHJvdG9idWZdID0gIi1ETElCUkNGX1VTRV9QUk9UT0JVRj1PTiwtRExJQlJDRl9VU0VfUFJPVE9CVUY9T0ZGLHByb3RvYnVmLHByb3RvYnVmIgorUEFDS0FHRUNPTkZJR1tqc29uXSA9ICItRExJQlJDRl9VU0VfSlNPTj1PTiwtRExJQlJDRl9VU0VfSlNPTj1PRkYsanNvbi1zcGlyaXQsanNvbi1zcGlyaXQiCiBQQUNLQUdFQ09ORklHW2lwdjZdID0gIi1ETElCUkNGX1VTRV9JUFY2PU9OLC1ETElCUkNGX1VTRV9JUFY2PU9GRiwiCiBQQUNLQUdFQ09ORklHW2N1c3RvbS1hbGxvY2F0b3JdID0gIi1ETElCUkNGX1VTRV9DVVNUT01fQUxMT0NBVE9SPU9OLC1ETElCUkNGX1VTRV9DVVNUT01fQUxMT0NBVE9SPU9GRiwiCiBQQUNLQUdFQ09ORklHW2RsbF0gPSAiLURMSUJSQ0ZfQlVJTERfRExMPU9OLC1ETElCUkNGX0JVSUxEX0RMTD1PRkYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jcm9zcy1jb21waWxpbmctaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJzb21ib2szL2xpYnNvbWJvazMvMDAwMS1jb25maWd1cmUuYWMtZml4LWNyb3NzLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTY5Mjg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jcm9zcy1jb21waWxpbmctaXNzdWUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5YzJmZmU4MjVlMjhkNjNlMmE3NzExMzVmMjk3ZThmZmFjMGRiZTgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMSBKdWwgMjAxNyAxNDozNTozMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBjcm9zcy1jb21waWxpbmcgaXNzdWUKKworQXZvaWQgY2hlY2tpbmcgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzIC0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5OTc4ODUyLi4wNmIxNmUzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMjAsOSArMTIwLDYgQEAgQUNfQVJHX1dJVEgodW5pY29kZS12ZXJzaW9uLAorICAgQUNfSEVMUF9TVFJJTkcoLS13aXRoLXVuaWNvZGUtdmVyc2lvbj1WRVJTSU9OLAorICAgW3ZlcnNpb24gb2YgVW5pY29kZSBTdGFuZGFyZCBAPDpAZGVmYXVsdD1jdXJyZW50IHZlcnNpb25AOj5AXSksCisgICBVTklDT0RFX1ZFUlNJT049JHdpdGh2YWwsVU5JQ09ERV9WRVJTSU9OPSRERUZBVUxUX1VOSUNPREVfVkVSU0lPTikKKy1BQ19DSEVDS19GSUxFKFtsaWIvJFVOSUNPREVfVkVSU0lPTi5jXSwKKy0gIEFDX01TR19SRVNVTFQoJFVOSUNPREVfVkVSU0lPTiksCistICBBQ19NU0dfRVJST1IoVW5rbm93biBVbmljb2RlIHZlcnNpb24gJFVOSUNPREVfVkVSU0lPTi4pKQorIEFDX1NVQlNUKFVOSUNPREVfVkVSU0lPTikKKyAKKyAjIGNoZWNrIGlmIGNvZGUgdG8gZGVidWcgbWVtb3J5IGFsbG9jYXRpb24gaXMgZW5hYmxlZC4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szXzIuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szXzIuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4M2U4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJzb21ib2szL2xpYnNvbWJvazNfMi40LjAuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJTb21ib2sgLSBVbmljb2RlIFRleHQgU2VnbWVudGF0aW9uIFBhY2thZ2UuIgorREVTQ1JJUFRJT04gPSAiU29tYm9rIGxpYnJhcnkgcGFja2FnZSBwZXJmb3JtcyBMaW5lIEJyZWFraW5nIEFsZ29yaXRobSBkZXNjcmliZWQgaW4gXAorVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMTQgKFVBWCAjMTQpLiAgRWFzdF9Bc2lhbl9XaWR0aCBpbmZvcm1hdGl2ZSBcCitwcm9wZXJ0aWVzIGRlZmluZWQgYnkgQW5uZXggIzExIChVQVggIzExKSBtYXkgYmUgY29uY2VybmVkIHRvIGRldGVybWluIFwKK2JyZWFraW5nIHBvc2l0aW9ucy4gIFRoaXMgcGFja2FnZSBhbHNvIGltcGxlbWVudHMgImRlZmF1bHQiIEdyYXBoZW1lIFwKK0NsdXN0ZXIgc2VnbWVudGF0aW9uIGRlc2NyaWJlZCBpbiBBbm5leCAjMjkgKFVBWCAjMjkpLiIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWIxMjJhMzZkMGY2ZGM1NTI3OWEwZWJjNjlmM2M2MGIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9oYXR1a2FuZXp1bWkvc29tYm9rLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY3Jvc3MtY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIHNvbWJvay0yLjQuMAorU1JDUkVWID0gIjAwOThkODVhMDM3ZWY1Yzk5YTY0OGEzNjY5YTA3Nzc4MWE0NWU4Y2MiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKKyMgRGlzYWJsZSBsaWJ0aGFpIHN1cHBvcnQKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGlidGhhaSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHQvbHRwLURvLW5vdC1saW5rLWFnYWluc3QtbGliZmwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHQvbHRwLURvLW5vdC1saW5rLWFnYWluc3QtbGliZmwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNGFhNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0L2x0cC1Eby1ub3QtbGluay1hZ2FpbnN0LWxpYmZsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA1YmRhOWMwYWY1Njg2OWM2ZmYyYzI1ZDM4ZWEwODcxNzljOTQ2YmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDExIE1hciAyMDE0IDE0OjQ3OjIyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGx0cDogRG9uJ3QgbGluayBhZ2FpbnN0IGxpYmZsCi0KLVdlIGhhdmUgYWxyZWFkeSBkZWZpbmVkIHl5d3JhcCBmdW5jdGlvbiBpbiBzY2FuLmwgZmlsZS4gQWZ0ZXIgdGhpcywgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8KLWxpbmsgYWdhaW5zdCBsaWJmbCBhbmQgc28gbm8gbG9uZ2VyIGdldCBlcnJvcnMgYWJvdXQgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8geXlsZXguCi0KLVVwc3RyZWFtLXN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBhbi9NYWtlZmlsZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Bhbi9NYWtlZmlsZSBiL3Bhbi9NYWtlZmlsZQotaW5kZXggNGNjNjQ2Ni4uYTRiNTc1YiAxMDA2NDQKLS0tLSBhL3Bhbi9NYWtlZmlsZQotKysrIGIvcGFuL01ha2VmaWxlCi1AQCAtMzEsNyArMzEsNyBAQCBDUFBGTEFHUwkJKz0gLVduby1lcnJvcgotIAotIENQUEZMQUdTCQkrPSAtSSQoYWJzX3NyY2RpcikKLSAKLS1MRExJQlMJCQkrPSAtbG0gJChMRVhMSUIpCi0rTERMSUJTCQkJKz0gLWxtCi0gCi0gTEZMQUdTCQkJKz0gLWwKLSAKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHRfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHRfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxM2JkN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0XzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotU1VNTUFSWSA9ICJFbWJlZGRlZCBMaW51eCBEZXZpY2UgRHJpdmVyIFRlc3RzIGJhc2VkIG9uIExpbnV4IFRlc3QgUHJvamVjdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcmFnby1wcm9qZWN0Lm9yZy9naXQvcHJvamVjdHMvdGVzdC1hdXRvbWF0aW9uL2x0cC1kZHQuZ2l0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1QUk9WSURFUyArPSAibHRwIgotREVQRU5EUyArPSAiemlwLW5hdGl2ZSB2aXJ0dWFsL2tlcm5lbCBhbHNhLWxpYiIKLQotUkRFUEVORFNfJHtQTn0gKz0gInBtLXFhIHNlcmlhbGNoZWNrIgotCi1pbmhlcml0IGF1dG90b29scyBtb2R1bGUtYmFzZSBrZXJuZWwtbW9kdWxlLXNwbGl0Ci0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi0KLVNSQ1JFViA9ICJmMDg2YmVkNmNjODhiZjEwMmVhYWQwZTk2Y2I3ZWJlNzk5NDRhOGFkIgotQlJBTkNIID89ICJtYXN0ZXIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vYXJhZ28tcHJvamVjdC5vcmcvZ2l0L3Byb2plY3RzL3Rlc3QtYXV0b21hdGlvbi9sdHAtZGR0LmdpdDticmFuY2g9JHtCUkFOQ0h9IFwKLSAgICBmaWxlOi8vbHRwLURvLW5vdC1saW5rLWFnYWluc3QtbGliZmwucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MVFBST09UID0gIi9vcHQvbHRwIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBcCi0gICAgcHJlZml4PSR7TFRQUk9PVH0gXAotICAgIENST1NTX0NPTVBJTEU9JHtIT1NUX1BSRUZJWH0gXAotICAgIFNLSVBfSURDSEVDSz0xIFwKLSAgICBLRVJORUxfUEFUSD0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAotICAgIEtFUk5FTF9JTkM9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IFwKLSAgICBLRVJORUxfVVNSX0lOQz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgQUxTQV9JTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICBBTFNBX0xJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgIFBMQVRGT1JNPSR7TUFDSElORX0gXAotICAgIFJBTkxJQj0ke1JBTkxJQn0gXAotICAgIERFU1RESVI9JHtEfSBcCi0gICAgQ0M9JyR7Q0N9JyBcCi0gICAgS0VSTkVMX0NDPScke0tFUk5FTF9DQ30nIFwKLSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSAgICAke0xUUFJPT1R9Ly5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS9iaW4vLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3J1bnRlc3QvLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vKi9iaW4vLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vKi90ZXN0Ly5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS90ZXN0Y2FzZXMvYmluL2RkdC8uZGVidWcgXAotICAgICR7TFRQUk9PVH0vdGVzdGNhc2VzL2Jpbi9kZHQvKi9iaW4vLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vZGR0LyovdGVzdC8uZGVidWcgXAotICAgICR7TFRQUk9PVH0vdGVzdGNhc2VzL3JlYWx0aW1lLyovKi8uZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7TFRQUk9PVH0vbGliIgotRklMRVNfJHtQTn0gKz0gIiR7TFRQUk9PVH0vKiIKLQotS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFID0gIiR7UE59IgotCi1rbW9kZGlyID0gIi9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvZHJpdmVycy9kZHQiCi0KLSMgbHRwIGRvZXNuJ3QgcmVnZW5lcmF0ZSBmZnNiLTYuMC1yYzIgY29uZmlndXJlIGFuZCBoYXJkY29kZSBjb25maWd1cmUgY2FsbC4KLSMgd2UgZXhwbGljaXRseSBmb3JjZSByZWdlbmVyYXRpb24gb2YgdGhhdCBkaXJlY3RvcnkgYW5kIHBhc3MgY29uZmlndXJlIG9wdGlvbnMuCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIChjZCB1dGlscy9mZnNiLTYuMC1yYzI7IGF1dG9yZWNvbmYgLWZ2aTsgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSkKLX0KLQotIyBUaGUgbWFrZWZpbGVzIG1ha2UgZXhjZXNzaXZlIHVzZSBvZiBtYWtlIC1DIGFuZCBzZXZlcmFsIGluY2x1ZGUgdGVzdGNhc2VzLm1rCi0jIHdoaWNoIHRyaWdnZXJzIGEgYnVpbGQgb2YgdGhlIHN5c2NhbGwgaGVhZGVyLiBUbyByZXByb2R1Y2UsIGJ1aWxkIGx0cCwKLSMgdGhlbiBkZWxldGUgdGhlIGhlYWRlciwgdGhlbiAibWFrZSAtaiBYWCIgYW5kIHdhdGNoIHJlZ2VuLnNoIHJ1biBtdWx0aXBsZQotIyB0aW1lcy4gSXRzIGVhc2llciB0byBnZW5lcmF0ZSB0aGlzIG9uY2UgaGVyZSBpbnN0ZWFkLgotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICAoIG1ha2UgLUMgJHtCfS90ZXN0Y2FzZXMva2VybmVsIGluY2x1ZGUvbGludXhfc3lzY2FsbF9udW1iZXJzLmggKQotfQotCi1kb19jb21waWxlX2FwcGVuZCAoKSB7Ci0gICAgdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKLSAgICBvZV9ydW5tYWtlIG1vZHVsZXMKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtrbW9kZGlyfQotICAgIG12ICR7RH0ke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vZGR0Lyoua28gJHtEfSR7a21vZGRpcn0KLX0KLQotIyBkb19tYWtlX3NjcmlwdHMgc2hvdWxkIGJlIGEgc2VwYXJhdGUgdGFzayBmb3IgdGhlIGxvY2sgdG8gd29yawotYWRkdGFzayBtYWtlX3NjcmlwdHMgYmVmb3JlIGRvX2NvbXBpbGUKLWRvX21ha2Vfc2NyaXB0c1tsb2NrZmlsZXNdID0gIiR7VE1QRElSfS9rZXJuZWwtc2NyaXB0cy5sb2NrIgotZG9fbWFrZV9zY3JpcHRzW2RlcHRhc2tdID0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzU2MzI3LwotUE5CTEFDS0xJU1RbbHRwLWRkdF0gPz0gIkJST0tFTjogZmFpbHMgc2luY2UgbGFzdCBhdXRvdG9vbHMuYmJjbGFzcyBjaGFuZ2VzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZS8wMDAxLW1pcHMtcGx0LmMtRGVsZXRlLWluY2x1ZGUtZXJyb3IuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2UvMDAwMS1taXBzLXBsdC5jLURlbGV0ZS1pbmNsdWRlLWVycm9yLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiYTdkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2UvMDAwMS1taXBzLXBsdC5jLURlbGV0ZS1pbmNsdWRlLWVycm9yLmgucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAxOWEzZTU5MGM5NzQyMGJkMzk1MjMwMWJmMzc2MDY3Yzc1ZDBlZTMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTggU2VwIDIwMTcgMjM6NDU6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlwcy9wbHQuYzogRGVsZXRlIGluY2x1ZGUgZXJyb3IuaAorCitJdHMgbm90IG5lZWRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9saW51eC1nbnUvbWlwcy9wbHQuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2xpbnV4LWdudS9taXBzL3BsdC5jIGIvc3lzZGVwcy9saW51eC1nbnUvbWlwcy9wbHQuYworaW5kZXggMmQ4NWFkOS4uOWMzYWUyZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbGludXgtZ251L21pcHMvcGx0LmMKKysrKyBiL3N5c2RlcHMvbGludXgtZ251L21pcHMvcGx0LmMKK0BAIC0yNCw3ICsyNCw2IEBACisgCisgI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKaW5kZXggMDFiM2JiZS4uYWJlMDE1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRhdXRvbG9naWNhbC1jb21wYXJlLXdhcm5pbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LW4zMi1uNjQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUmVjb2duaXNlLWxpbnV4LW11c2wtYXMtYS1ob3N0LU9TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWlwcy1wbHQuYy1EZWxldGUtaW5jbHVkZS1lcnJvci5oLnBhdGNoIFwKICAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhL2x1YV81LjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTk1YzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhL2x1YV81LjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkx1YSBpcyBhIHBvd2VyZnVsIGxpZ2h0LXdlaWdodCBwcm9ncmFtbWluZyBsYW5ndWFnZSBkZXNpZ25lZCBcCi1mb3IgZXh0ZW5kaW5nIGFwcGxpY2F0aW9ucy4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9yZWFkbWUuaHRtbDtiZWdpbmxpbmU9MzE4O2VuZGxpbmU9MzUyO21kNT0xMGZmZDU3ZDU3NGM2MGQ1YjRkNjE4OTU0NGUyMDVhOSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubHVhLm9yZy8iCi0KLURFUEVORFMgPSAicmVhZGxpbmUiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubHVhLm9yZy9mdHAvbHVhLSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGxzcmMgXAotICAgICAgICAgICBmaWxlOi8vbHVhLnBjLmluIFwKLSAgICAgICAgICAgIgotU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsIFwKLSAgICAgICAgICAgJ2h0dHA6Ly93d3cubHVhLm9yZy90ZXN0cy9sdWEtJHtQVn0tdGVzdHMudGFyLmd6O25hbWU9dGFyYmFsbHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICcsICcnLCBkKX0iCi0KLVNSQ19VUklbdGFyYmFsbHNyYy5tZDVzdW1dID0gIjcwM2Y3NWNhYTRmZGY0YTkxMWMxYTcyZTY3YTI3NDk4IgotU1JDX1VSSVt0YXJiYWxsc3JjLnNoYTI1NnN1bV0gPSAiNTExM2MwNjg4NGY3ZGU0NTNjZTU3NzAyYWJhYWMxZDYxODMwN2YzM2Y2Nzg5ZmE4NzBlODdhNTlkNzcyYWNhMiIKLVNSQ19VUklbdGFyYmFsbHRlc3QubWQ1c3VtXSA9ICI3NmY0ZmIwN2YyYTQ5NzBkNTU0NjQ1YWMyNmRmODZkZiIKLVNSQ19VUklbdGFyYmFsbHRlc3Quc2hhMjU2c3VtXSA9ICIxMzE1NGFiYzIwOTc2MTk2MTE5ZGI1MzFiNDE2OWNlMWNlNTExNzU1ODc5ZDQwYjQxOTJlNDE3MzI5MTI4N2U1IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBiaW5jb25maWcgcHRlc3QKLQotVUNMSUJDX1BBVENIRVMgKz0gImZpbGU6Ly91Y2xpYmMtcHRocmVhZC5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiR7VUNMSUJDX1BBVENIRVN9IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiIC1mUElDICR7TERGTEFHU30iCi1FWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9IC1mUElDJyAnTVlDRkxBR1M9JHtDRkxBR1N9IC1ETFVBX1VTRV9MSU5VWCAtZlBJQycgTVlMREZMQUdTPScke0xERkxBR1N9JyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6L3Vzci9sb2NhbDoke3ByZWZpeH06ZyBzcmMvbHVhY29uZi5oCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotICAgIG9lX3J1bm1ha2UgbGludXgKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBcCi0gICAgICAgICdJTlNUQUxMX1RPUD0ke0R9JHtwcmVmaXh9JyBcCi0gICAgICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCi0gICAgICAgICdJTlNUQUxMX0lOQz0ke0R9JHtpbmNsdWRlZGlyfS8nIFwKLSAgICAgICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAotICAgICAgICAnSU5TVEFMTF9TSEFSRT0ke0R9JHtkYXRhZGlyfS9sdWEnIFwKLSAgICAgICAgJ0lOU1RBTExfTElCPSR7RH0ke2xpYmRpcn0nIFwKLSAgICAgICAgJ0lOU1RBTExfQ01PRD0ke0R9JHtsaWJkaXJ9L2x1YS81LjMnIFwKLSAgICAgICAgaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQotICAgIHNlZCAtZSBzL0BWRVJTSU9OQC8ke1BWfS8gJHtXT1JLRElSfS9sdWEucGMuaW4gPiAke1dPUktESVJ9L2x1YS5wYwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x1YS5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLSAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4zCi0gICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbHVhCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgICAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1dPUktESVJ9L2x1YS0ke1BWfS10ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhL2x1YV81LjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY0ZThmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjQuYmIKQEAgLTAsMCArMSw1OSBAQAorREVTQ1JJUFRJT04gPSAiTHVhIGlzIGEgcG93ZXJmdWwgbGlnaHQtd2VpZ2h0IHByb2dyYW1taW5nIGxhbmd1YWdlIGRlc2lnbmVkIFwKK2ZvciBleHRlbmRpbmcgYXBwbGljYXRpb25zLiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL3JlYWRtZS5odG1sO2JlZ2lubGluZT0zMTg7ZW5kbGluZT0zNTI7bWQ1PTYwYWE1Y2ZkYmQ0MDA4NjUwMTc3OGQ5YjZlYmYyOWVlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sdWEub3JnLyIKKworREVQRU5EUyA9ICJyZWFkbGluZSIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5sdWEub3JnL2Z0cC9sdWEtJHtQVn0udGFyLmd6O25hbWU9dGFyYmFsbHNyYyBcCisgICAgICAgICAgIGZpbGU6Ly9sdWEucGMuaW4gXAorICAgICAgICAgICAiCitTUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgXAorICAgICAgICAgICAnaHR0cDovL3d3dy5sdWEub3JnL3Rlc3RzL2x1YS0ke1BWfS10ZXN0cy50YXIuZ3o7bmFtZT10YXJiYWxsdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJywgJycsIGQpfSIKKworU1JDX1VSSVt0YXJiYWxsc3JjLm1kNXN1bV0gPSAiNTNhOWM2OGJjYzBlZGE1OGJkYzIwOTVhZDVjZGZjNjMiCitTUkNfVVJJW3RhcmJhbGxzcmMuc2hhMjU2c3VtXSA9ICJmNjgxYWE1MTgyMzNiYzQwN2UyM2FjZjBmNTg4N2M4ODRmMTc0MzZmMDAwZDQ1M2IyNDkxYTlmMTFhNTI0MDBjIgorU1JDX1VSSVt0YXJiYWxsdGVzdC5tZDVzdW1dID0gImIxNGZlMzc0OGMxY2IyZDc0ZTNhY2QxOTQzNjI5YmEzIgorU1JDX1VSSVt0YXJiYWxsdGVzdC5zaGEyNTZzdW1dID0gImI4MDc3MTIzODI3MWM3MjU2NWU1YTExODMyOTJlZjMxYmQ3MTY2NDE0Y2QwZDQzYThlYjc5ODQ1ZmE3ZjU5OWYiCisKK2luaGVyaXQgcGtnY29uZmlnIGJpbmNvbmZpZyBwdGVzdAorCitVQ0xJQkNfUEFUQ0hFUyArPSAiZmlsZTovL3VjbGliYy1wdGhyZWFkLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfbGliYy11Y2xpYmMgPSAiJHtVQ0xJQkNfUEFUQ0hFU30iCisKK1RBUkdFVF9DQ19BUkNIICs9ICIgLWZQSUMgJHtMREZMQUdTfSIKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30gLWZQSUMnICdNWUNGTEFHUz0ke0NGTEFHU30gLURMVUFfVVNFX0xJTlVYIC1mUElDJyBNWUxERkxBR1M9JyR7TERGTEFHU30nIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczovdXNyL2xvY2FsOiR7cHJlZml4fTpnIHNyYy9sdWFjb25mLmgKK30KKworZG9fY29tcGlsZSAoKSB7CisgICAgb2VfcnVubWFrZSBsaW51eAorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIFwKKyAgICAgICAgJ0lOU1RBTExfVE9QPSR7RH0ke3ByZWZpeH0nIFwKKyAgICAgICAgJ0lOU1RBTExfQklOPSR7RH0ke2JpbmRpcn0nIFwKKyAgICAgICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9LycgXAorICAgICAgICAnSU5TVEFMTF9NQU49JHtEfSR7bWFuZGlyfS9tYW4xJyBcCisgICAgICAgICdJTlNUQUxMX1NIQVJFPSR7RH0ke2RhdGFkaXJ9L2x1YScgXAorICAgICAgICAnSU5TVEFMTF9MSUI9JHtEfSR7bGliZGlyfScgXAorICAgICAgICAnSU5TVEFMTF9DTU9EPSR7RH0ke2xpYmRpcn0vbHVhLzUuMycgXAorICAgICAgICBpbnN0YWxsCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCisgICAgc2VkIC1lIHMvQFZFUlNJT05ALyR7UFZ9LyAke1dPUktESVJ9L2x1YS5wYy5pbiA+ICR7V09SS0RJUn0vbHVhLnBjCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbHVhLnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLworICAgIHJtZGlyICR7RH0ke2RhdGFkaXJ9L2x1YS81LjMKKyAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7V09SS0RJUn0vbHVhLSR7UFZ9LXRlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdC9jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5ZWY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorY2xhbmcgcHJldGVuZHMgdG8gYmUgZ2NjIDQuMi4wIHdoaWNoIGlzIGEgYmlnIGxpZSB3aGVuIGl0IGNvbWVzCit0byBmZWF0dXJlcywgaXRzIHNhbWUgYXMgbGF0ZXN0IGdjYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBMdWFKSVQtMi4wLjUvc3JjL2xqX2FyY2guaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIEx1YUpJVC0yLjAuNS5vcmlnL3NyYy9sal9hcmNoLmgKKysrKyBMdWFKSVQtMi4wLjUvc3JjL2xqX2FyY2guaAorQEAgLTMxMyw3ICszMTMsNyBAQAorICNlcnJvciAiTmVlZCBhdCBsZWFzdCBHQ0MgNC4yIG9yIG5ld2VyIgorICNlbmRpZgorICNlbGlmICFMSl9UQVJHRVRfUFMzCistI2lmIChfX0dOVUNfXyA8IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgX19HTlVDX01JTk9SX18gPCAzKQorKyNpZiAoX19HTlVDX18gPCA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIF9fR05VQ19NSU5PUl9fIDwgMykgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICNlcnJvciAiTmVlZCBhdCBsZWFzdCBHQ0MgNC4zIG9yIG5ld2VyIgorICNlbmRpZgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZTljYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLVNVTU1BUlkgPSAiSnVzdC1Jbi1UaW1lIENvbXBpbGVyIGZvciBMdWEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9Mzk5MmYxZmJhZTNiOGIwNjFmOTA1NmI3ZmNkYThjYzYiCi1IT01FUEFHRSA9ICJodHRwOi8vbHVhaml0Lm9yZyIKLQotU1JDX1VSSSA9ICJodHRwOi8vbHVhaml0Lm9yZy9kb3dubG9hZC9MdWFKSVQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXN0cmlwLWF1dG9tYXRpY2FsbHktdGhpcy1sZWF2ZXMtdGhlLXN0cmlwcGluZy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZGQ5YzM4MzA3ZjIyMjNhNTA0Y2JmYjk2ZTQ3N2VjYTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIwZmE0ZWIxMjM3NTAyMWJlZjZlNGYyMzdjYmQyZGQ1ZDQ5ZTU2YmViNDE0YmVlMDUyYzc0NmJlZWYxODA3ZCIKLQotUyA9ICIke1dPUktESVJ9L0x1YUpJVC0ke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcwotIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQotIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKLSMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgotIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0Ci0jIChIT1NUX0NDPSJnY2MgLW0zMiIpLgotQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJywgVHJ1ZSkgIT0gJzMyJ119IgotCi0jIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCi0jIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKLUxVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKLUxVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKLUxVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKLQotIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKLSMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQotIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBRPSBFPSdAOicgXAotICAgIFwKLSAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKLSAgICBcCi0gICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAotICAgIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKLSAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAotICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAotICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKLSAgICAnSE9TVF9MREZMQUdTPSR7QlVJTERfTERGTEFHU30nIFwKLSAgICBcCi0gICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKLSAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAotIgotCi1kb19jb21waWxlICgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLSMgVGhlcmUncyBJTlNUQUxMX0xJQiBhbmQgSU5TVEFMTF9TSEFSRSBhbHNvLCBidXQgdGhlIGx1YSBiaW5hcnkgaGFyZGNvZGVzIHRoZQotIyAnL3NoYXJlJyBhbmQgJy8nICsgTFVBX01VTFRJTElCIHBhdGhzLCBzbyB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRob3NlCi0jIGV4cGVjdGF0aW9ucy4KLUVYVFJBX09FTUFLRUlOU1QgPSAiXAotICAgICdERVNURElSPSR7RH0nIFwKLSAgICAnSU5TVEFMTF9CSU49JHtEfSR7YmluZGlyfScgXAotICAgICdJTlNUQUxMX0lOQz0ke0R9JHtpbmNsdWRlZGlyfS9sdWFqaXQtJChNQUpWRVIpLiQoTUlOVkVSKScgXAotICAgICdJTlNUQUxMX01BTj0ke0R9JHttYW5kaXJ9L21hbjEnIFwKLSIKLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0VJTlNUfSBpbnN0YWxsCi0gICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbHVhLzUuKiBcCi0gICAgICAgICAgJHtEfSR7ZGF0YWRpcn0vbHVhIFwKLSAgICAgICAgICAke0R9JHtsaWJkaXJ9L2x1YS81LiogXAotICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhCi19Ci0KLVBBQ0tBR0VTICs9ICdsdWFqaXQtY29tbW9uJwotCi0jIFNlZSB0aGUgY29tbWVudCBmb3IgRVhUUkFfT0VNQUtFSU5TVC4gVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSBoYXJkY29kZWQKLSMgcGF0aHMgYXJlIHBhY2thZ2VkIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgbGliZGlyIGFuZCBkYXRhZGlyIHBhdGhzIGFyZS4KLUZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vJHtiYXNlbGlifSAke3ByZWZpeH0vc2hhcmUiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuc28uMiBcCi0gICAgJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuc28uJHtQVn0gXAotIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5hIFwKLSAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9sdWFqaXQucGMgXAotIgotRklMRVNfbHVhaml0LWNvbW1vbiA9ICIke2RhdGFkaXJ9LyR7QlBOfS0ke1BWfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjMzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIKQEAgLTAsMCArMSw5MiBAQAorU1VNTUFSWSA9ICJKdXN0LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0xMGE5NmM5MzQwM2FmZmNjMzQ3NjVmNGMyNjEyYmMyMiIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdWFqaXQub3JnL2Rvd25sb2FkL0x1YUpJVC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc3RyaXAtYXV0b21hdGljYWxseS10aGlzLWxlYXZlcy10aGUtc3RyaXBwaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsYW5nLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ODM1MzIwMmNiY2FjYWI4NGVlNDFhNWE3MGVhMGEyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzRiMWY4Mjk3YzY5NzgyMWY1NjFmOWI3M2I1N2ZmZDQxOWVkOGY0Mjc4YzgyZTA1YjQ4ODA2ZDMwYzFlOTc5IgorCitTID0gIiR7V09SS0RJUn0vTHVhSklULSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBiaW5jb25maWcgc2l0ZWluZm8KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgaHR0cDovL2x1YWppdC5vcmcvaW5zdGFsbC5odG1sI2Nyb3NzCisjIEhvc3QgbHVhaml0IG5lZWRzIHRvIGJlIGNvbXBpbGVkIHdpdGggdGhlIHNhbWUgcG9pbnRlciBzaXplCisjIElmIHlvdSB3YW50IHRvIGNyb3NzLWNvbXBpbGUgdG8gYW55IDMyIGJpdCB0YXJnZXQgb24gYW4geDY0IE9TLAorIyB5b3UgbmVlZCB0byBpbnN0YWxsIHRoZSBtdWx0aWxpYiBkZXZlbG9wbWVudCBwYWNrYWdlIChlLmcuCisjIGxpYmM2LWRldi1pMzg2IG9uIERlYmlhbi9VYnVudHUpIGFuZCBidWlsZCBhIDMyIGJpdCBob3N0IHBhcnQKKyMgKEhPU1RfQ0M9ImdjYyAtbTMyIikuCitCVUlMRF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtAWyctbTMyJywnJ11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnLCBUcnVlKSAhPSAnMzInXX0iCisKKyMgVGhlIGx1YSBtYWtlZmlsZXMgZXhwZWN0IHRoZSBUQVJHRVRfU1lTIHRvIGJlIGZyb20gdW5hbWUgLXMKKyMgVmFsdWVzOiBXaW5kb3dzLCBMaW51eCwgRGFyd2luLCBpT1MsIFN1bk9TLCBQUzMsIEdOVS9rRnJlZUJTRAorTFVBX1RBUkdFVF9PUyA9ICJVbmtub3duIgorTFVBX1RBUkdFVF9PU19kYXJ3aW4gPSAiRGFyd2luIgorTFVBX1RBUkdFVF9PU19saW51eCA9ICJMaW51eCIKK0xVQV9UQVJHRVRfT1NfbGludXgtZ251ZWFiaSA9ICJMaW51eCIKK0xVQV9UQVJHRVRfT1NfbWluZ3czMiA9ICJXaW5kb3dzIgorCisjIFdlIGRvbid0IHdhbnQgdGhlIGx1YSBidWlsZHN5c3RlbSdzIGNvbXBpbGVyIG9wdGltaXphdGlvbnMsIG9yIGl0cworIyBzdHJpcHBpbmcsIGFuZCB3ZSBkb24ndCB3YW50IGl0IHRvIHBpY2sgdXAgQ0ZMQUdTIG9yIExERkxBR1MsIGFzIHRob3NlIGFwcGx5CisjIHRvIGJvdGggaG9zdCBhbmQgdGFyZ2V0IGNvbXBpbGVzCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIFE9IEU9J0A6JyBcCisgICAgXAorICAgIENDT1BUPSBDQ09QVF94ODY9IENGTEFHUz0gTERGTEFHUz0gVEFSR0VUX1NUUklQPSdAOicgXAorICAgIFwKKyAgICAnVEFSR0VUX1NZUz0ke0xVQV9UQVJHRVRfT1N9JyBcCisgICAgXAorICAgICdDQz0ke0NDfScgXAorICAgICdUQVJHRVRfQVI9JHtBUn0gcmN1cycgXAorICAgICdUQVJHRVRfQ0ZMQUdTPSR7Q0ZMQUdTfScgXAorICAgICdUQVJHRVRfTERGTEFHUz0ke0xERkxBR1N9JyBcCisgICAgJ1RBUkdFVF9TSExERkxBR1M9JHtMREZMQUdTfScgXAorICAgICdIT1NUX0NDPSR7QlVJTERfQ0N9JyBcCisgICAgJ0hPU1RfQ0ZMQUdTPSR7QlVJTERfQ0ZMQUdTfScgXAorICAgICdIT1NUX0xERkxBR1M9JHtCVUlMRF9MREZMQUdTfScgXAorICAgIFwKKyAgICAnUFJFRklYPSR7cHJlZml4fScgXAorICAgICdNVUxUSUxJQj0ke2Jhc2VsaWJ9JyBcCisiCisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UKK30KKworIyBUaGVyZSdzIElOU1RBTExfTElCIGFuZCBJTlNUQUxMX1NIQVJFIGFsc28sIGJ1dCB0aGUgbHVhIGJpbmFyeSBoYXJkY29kZXMgdGhlCisjICcvc2hhcmUnIGFuZCAnLycgKyBMVUFfTVVMVElMSUIgcGF0aHMsIHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhvc2UKKyMgZXhwZWN0YXRpb25zLgorRVhUUkFfT0VNQUtFSU5TVCA9ICJcCisgICAgJ0RFU1RESVI9JHtEfScgXAorICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCisgICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9L2x1YWppdC0kKE1BSlZFUikuJChNSU5WRVIpJyBcCisgICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAorIgorZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRUlOU1R9IGluc3RhbGwKKyAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4qIFwKKyAgICAgICAgICAke0R9JHtkYXRhZGlyfS9sdWEgXAorICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhLzUuKiBcCisgICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEKK30KKworUEFDS0FHRVMgKz0gJ2x1YWppdC1jb21tb24nCisKKyMgU2VlIHRoZSBjb21tZW50IGZvciBFWFRSQV9PRU1BS0VJTlNULiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIGhhcmRjb2RlZAorIyBwYXRocyBhcmUgcGFja2FnZWQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBsaWJkaXIgYW5kIGRhdGFkaXIgcGF0aHMgYXJlLgorRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8ke2Jhc2VsaWJ9ICR7cHJlZml4fS9zaGFyZSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4yIFwKKyAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4ke1BWfSBcCisiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLmEgXAorICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnL2x1YWppdC5wYyBcCisiCitGSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbmF0aXZlX2JpbmRpci5wYXRjaAppbmRleCA1M2VlZmY3Li45OTNlOTc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL25hdGl2ZV9iaW5kaXIucGF0Y2gKQEAgLTEsOCArMSwxMyBAQAorVGhlcmUgYXJlIHNvbWUgZGlzY3Vzc2lvbnMgdXBzdHJlYW0gdG8gbWVyZ2UgdGhpcyBwYXRjaCwgYnV0IEkgcHJlc29uYWx5IGJlbGlldmUKK3RoYXQgaXMgaXMgT0Ugb25seS4gaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzLzE4NDkjaXNzdWVjb21tZW50LTMwMzczMDMyMworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMucHkgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQotaW5kZXggZGE3M2E1N2I3ZWNkLi4yMjEwMGY2OWM1ODAgMTAwNjQ0CitpbmRleCAwNGEyMmY5ODU5NDEuLjNlMzNiYzRhNzllNyAxMDA2NDQKIC0tLSBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzLnB5CiArKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQotQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgRGVwZW5kZW5jeSgpOgorQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRGVwZW5kZW5jeToKICAgICAgZGVmIG5lZWRfdGhyZWFkcyhzZWxmKToKICAgICAgICAgIHJldHVybiBGYWxzZQogIApAQCAtMTEsNyArMTYsNyBAQAogICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ1RyaWVkIHRvIGdldCBhIHBrZy1jb25maWcgdmFyaWFibGUgZnJvbSBhIG5vbi1wa2djb25maWcgZGVwZW5kZW5jeS4nKQogIAogIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKLUBAIC0xNzcsOCArMTc3LDEyIEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6CitAQCAtMjI0LDggKzIyNCwxMiBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgogICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIHNlbGYuaXNfZm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3JlcXMpCiAgCkBAIC0yMywxMCArMjgsMTAgQEAKICsgICAgICAgIGVsc2U6CiArICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluXQogKyAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShwa2diaW4gKyBhcmdzLCBlbnY9b3MuZW52aXJvbilbMDoyXQotICAgICAgICAgcmV0dXJuIChwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpKQorICAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSwgb3V0LnN0cmlwKCkKICAKICAgICAgZGVmIF9zZXRfY2FyZ3Moc2VsZik6Ci1AQCAtMjEyLDggKzIxNiw4IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6CitAQCAtMjU5LDggKzI2Myw4IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6CiAgICAgICAgICAgICAgICAgIHNlbGYuaXNfbGlidG9vbCA9IFRydWUKICAgICAgICAgICAgICBzZWxmLmxpYnMuYXBwZW5kKGxpYikKICAKQEAgLTM3LDEyICs0Miw4IEBACiAgICAgICAgICB2YXJpYWJsZSA9ICcnCiAgICAgICAgICBpZiByZXQgIT0gMDoKICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkOgotQEAgLTkzMywxMCArOTM3LDEwIEBAIGNsYXNzIFF0QmFzZURlcGVuZGVuY3koRGVwZW5kZW5jeSk6Ci0gICAgICAgICAgICAgY29yZWt3YXJncyA9IHsncmVxdWlyZWQnOiAnZmFsc2UnLCAnc2lsZW50JzogJ3RydWUnfQotICAgICAgICAgICAgIGNvcmUgPSBQa2dDb25maWdEZXBlbmRlbmN5KHNlbGYucXRwa2duYW1lICsgJ0NvcmUnLCBlbnYsIGNvcmVrd2FyZ3MpCi0gICAgICAgICAjIFVzZWQgYnkgc2VsZi5jb21waWxlcnNfZGV0ZWN0KCkKLS0gICAgICAgIHNlbGYuYmluZGlyID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnKQotKyAgICAgICAgc2VsZi5iaW5kaXIgPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHVzZV9uYXRpdmU9VHJ1ZSkKK0BAIC0xMDkxLDcgKzEwOTUsNyBAQCBjbGFzcyBRdEJhc2VEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgorICAgICAgICAgc2VsZi5iaW5kaXIgPSBzZWxmLmdldF9wa2djb25maWdfaG9zdF9iaW5zKGNvcmUpCiAgICAgICAgICBpZiBub3Qgc2VsZi5iaW5kaXI6CiAgICAgICAgICAgICAgIyBJZiBleGVjX3ByZWZpeCBpcyBub3QgZGVmaW5lZCwgdGhlIHBrZy1jb25maWcgZmlsZSBpcyBicm9rZW4KIC0gICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4JykKQEAgLTUwLDMgKzUxLDIxIEBACiAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQogIAorQEAgLTEyMDIsNyArMTIwNiw3IEBAIGNsYXNzIFF0NURlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CisgICAgICAgICBRdEJhc2VEZXBlbmRlbmN5Ll9faW5pdF9fKHNlbGYsICdxdDUnLCBlbnYsIGt3YXJncykKKyAKKyAgICAgZGVmIGdldF9wa2djb25maWdfaG9zdF9iaW5zKHNlbGYsIGNvcmUpOgorLSAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJykKKysgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHVzZV9uYXRpdmU9VHJ1ZSkKKyAKKyBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICBkZWYgX19pbml0X18oc2VsZiwgZW52LCBrd2FyZ3MpOgorQEAgLTEyMTYsNyArMTIyMCw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CisgICAgICAgICBhcHBsaWNhdGlvbnMgPSBbJ21vYycsICd1aWMnLCAncmNjJywgJ2x1cGRhdGUnLCAnbHJlbGVhc2UnXQorICAgICAgICAgZm9yIGFwcGxpY2F0aW9uIGluIGFwcGxpY2F0aW9uczoKKyAgICAgICAgICAgICB0cnk6CistICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbikpCisrICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbiwgdXNlX25hdGl2ZT1UcnVlKSkKKyAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246CisgICAgICAgICAgICAgICAgIHBhc3MKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuMzcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuMzcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiZWE2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjM3LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCi1TVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uLmdpdCBcCi0gICAgZmlsZTovL25hdGl2ZV9iaW5kaXIucGF0Y2ggXAotIgotCi1TUkNSRVYgPSAiM2Q0YmZkY2IyMjMxNGVhN2RiNDVhNWIwNzVmOGIyYTljMTQ5OGFhYiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAibmluamEgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbW9kdWxlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2NDRiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDAuMS5iYgpAQCAtMCwwICsxLDIwIEBACitIT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCitTVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uLmdpdCBcCisgICAgZmlsZTovL25hdGl2ZV9iaW5kaXIucGF0Y2ggXAorIgorCitTUkNSRVYgPSAiYjI1ZDNlNGQzZjJiNGQzNzAyOWE1MDdjYzA4OWJkZGU2NDNjNjI0MCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYgppbmRleCA0NTM3YTY2Li40YTJjMzc3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXBpY2gvbXBpY2hfMy4yLmJiCkBAIC0xMiw4ICsxMiw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZjQxNGNmYTc3MDk5Y2QxZmExYTVhZTRlMjJkYjUwOGEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc3ODY3OWE2YjY5M2Q3YjdjYWZmMzdmZjlkMjg1NmRjMmJmYzUxMzE4YmY4MzczODU5YmZhNzQyNTNkYTNkYyIKIAotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIkJBU0hfU0hFTEw9JHtiYXNlX2JpbmRpcn0vYmFzaCIKLQogUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybCBsaWJ4bWwyIgogUyA9ICIke1dPUktESVJ9LyR7QlB9IgogCkBAIC0yNiw2ICsyNCw4IEBACiAgICAgLS1kaXNhYmxlLWZjIFwKICAgICAtLWRpc2FibGUtZm9ydHJhbiBcCiAgICAgLS1kaXNhYmxlLWN4eCBcCisgICAgQkFTSF9TSEVMTD0nJHtVU1JCSU5QQVRIfS9lbnYgYmFzaCcgXAorICAgIFBFUkw9JyR7VVNSQklOUEFUSH0vZW52IHBlcmwnIFwKICIKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jLzAwMDEtQ29tbWVudC1pbnRlbnRpb25hbC1mYWxsdGhyb3VnaC1pbi1jYXNlLXN0YXRlbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUNvbW1lbnQtaW50ZW50aW9uYWwtZmFsbHRocm91Z2gtaW4tY2FzZS1zdGF0ZW1lbnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzg4Mjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jLzAwMDEtQ29tbWVudC1pbnRlbnRpb25hbC1mYWxsdGhyb3VnaC1pbi1jYXNlLXN0YXRlbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDE1ZDhiYjY3OTJjOTYzOWQ4NWE5ZmZlMmFjODE0MzFmMWI5ODZjMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAwODo1Mzo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDb21tZW50IGludGVudGlvbmFsIGZhbGx0aHJvdWdoIGluIGNhc2Ugc3RhdGVtZW50cwotCi1GaXhlcyBidWlsZCB3aXRoIGdjYzcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvbXNncGFjay92MS9hZGFwdG9yL2RldGFpbC9jcHAwM19kZWZpbmVfYXJyYXkuaHBwIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9tc2dwYWNrL3YxL2FkYXB0b3IvZGV0YWlsL2NwcDAzX2RlZmluZV9hcnJheS5ocHAgYi9pbmNsdWRlL21zZ3BhY2svdjEvYWRhcHRvci9kZXRhaWwvY3BwMDNfZGVmaW5lX2FycmF5LmhwcAotaW5kZXggYjM1YzIxYTcuLjRjNDYzYTkwIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9tc2dwYWNrL3YxL2FkYXB0b3IvZGV0YWlsL2NwcDAzX2RlZmluZV9hcnJheS5ocHAKLSsrKyBiL2luY2x1ZGUvbXNncGFjay92MS9hZGFwdG9yL2RldGFpbC9jcHAwM19kZWZpbmVfYXJyYXkuaHBwCi1AQCAtMTA1LDYgKzEwNSw3IEBAIHN0cnVjdCBkZWZpbmVfYXJyYXk8QTAsIEExPiB7Ci0gICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKLSAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgIGNhc2UgMjogcHRyWzFdLmNvbnZlcnQoYTEpOwotKyAgICAgICAgICAgIC8vZmFsbHRocm91Z2gKLSAgICAgICAgICAgICBjYXNlIDE6IHB0clswXS5jb252ZXJ0KGEwKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci1AQCAtMTkzLDggKzE5NCwxMSBAQCBzdHJ1Y3QgZGVmaW5lX2FycmF5PEEwLCBBMSwgQTIsIEEzPiB7Ci0gICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKLSAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgIGNhc2UgNDogcHRyWzNdLmNvbnZlcnQoYTMpOwotKyAgICAgICAgICAgIC8vZmFsbHRocm91Z2gKLSAgICAgICAgICAgICBjYXNlIDM6IHB0clsyXS5jb252ZXJ0KGEyKTsKLSsgICAgICAgICAgICAvL2ZhbGx0aHJvdWdoCi0gICAgICAgICAgICAgY2FzZSAyOiBwdHJbMV0uY29udmVydChhMSk7Ci0rICAgICAgICAgICAgLy9mYWxsdGhyb3VnaAotICAgICAgICAgICAgIGNhc2UgMTogcHRyWzBdLmNvbnZlcnQoYTApOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NTVkOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk1lc3NhZ2VQYWNrIGltcGxlbWVudGF0aW9uIGZvciBDIGFuZCBDKysiCi1ERVNDUklQVElPTiA9ICJNZXNzYWdlUGFjayBpcyBhbiBlZmZpY2llbnQgYmluYXJ5IHNlcmlhbGl6YXRpb24gZm9ybWF0LiBJdCdzIGxpa2UgSlNPTi4gYnV0IGZhc3QgYW5kIHNtYWxsIgotSE9NRVBBR0UgPSAiaHR0cDovL21zZ3BhY2sub3JnL2luZGV4Lmh0bWwiCi1MSUNFTlNFID0gIkJTTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PTdhODU4YzA3NDcyMzYwOGUwODYxNDA2MWRjMDQ0MzUyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzljNDIwOWI2ZjJhYmYxNDM3YzgxM2IyMDhmMmQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMgXAotICAgICAgICAgICAgICAgICAgICIKLQotUFYgLj0gIitnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjIwZWYxZjkyNWIwMDdmMTcwYWIxYzI1N2U0YWE2MWZkZDA5Mjc3NzMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tc2dwYWNrL21zZ3BhY2stYyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbW1lbnQtaW50ZW50aW9uYWwtZmFsbHRocm91Z2gtaW4tY2FzZS1zdGF0ZW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS9tc2dwYWNrLyouY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZjY5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuNS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIk1lc3NhZ2VQYWNrIGltcGxlbWVudGF0aW9uIGZvciBDIGFuZCBDKysiCitERVNDUklQVElPTiA9ICJNZXNzYWdlUGFjayBpcyBhbiBlZmZpY2llbnQgYmluYXJ5IHNlcmlhbGl6YXRpb24gZm9ybWF0LiBJdCdzIGxpa2UgSlNPTi4gYnV0IGZhc3QgYW5kIHNtYWxsIgorSE9NRVBBR0UgPSAiaHR0cDovL21zZ3BhY2sub3JnL2luZGV4Lmh0bWwiCitMSUNFTlNFID0gIkJTTC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PTdhODU4YzA3NDcyMzYwOGUwODYxNDA2MWRjMDQ0MzUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzljNDIwOWI2ZjJhYmYxNDM3YzgxM2IyMDhmMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMgXAorICAgICAgICAgICAgICAgICAgICIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjdhOTgxMzhmMjdmMjcyOTBlNjgwYmY4ZmJmMWY4ZDFiMDg5YmYxMzgiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tc2dwYWNrL21zZ3BhY2stYyBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvbXNncGFjay8qLmNtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMyZTNhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCi0KLURFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgotCi1TUkNSRVYgPSAiNzE3YjdiNGEzMWRiNjAyNzIwNzU4OGMwZmI4OWMzZWFkMzg0NzQ3YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmUvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAotfQotCi1kb19jb21waWxlKCkgewotICAgIC4vY29uZmlndXJlLnB5Ci0gICAgbmluamEKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9uaW5qYSAke0R9JHtiaW5kaXJ9LwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0YTQ2OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGMyYWZmMTZjYzE5NmE2MWY0YWIxY2RhZTRhOTFjNzkyNjEyM2MyMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBadXphbmEgU3ZldGxpa292YSA8enN2ZXRsaWtAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMTQ6MjU6NDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBydW5uaW5nIGd5cCBvbiBzaGFyZWQgZGVwcworCistLS0KKyBNYWtlZmlsZSB8IDcgKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwYTIxN2JkODkzLi5lMTIyOWFkMDdmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzksMTAgKzc5LDkgQEAgJChOT0RFX0dfRVhFKTogY29uZmlnLmd5cGkgb3V0L01ha2VmaWxlCisgCSQoTUFLRSkgLUMgb3V0IEJVSUxEVFlQRT1EZWJ1ZyBWPSQoVikKKyAJaWYgWyAhIC1yICRAIC1vICEgLUwgJEAgXTsgdGhlbiBsbiAtZnMgb3V0L0RlYnVnLyQoTk9ERV9FWEUpICRAOyBmaQorIAorLW91dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy91di91di5neXAgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAorLSAgICAgICAgICAgICAgZGVwcy96bGliL3psaWIuZ3lwIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgXAorLSAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIGRlcHMvdjgvc3JjL3Y4Lmd5cCBub2RlLmd5cCBcCistICAgICAgICAgICAgICBjb25maWcuZ3lwaQorK291dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAorKyAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaSBkZXBzL3Y4L2d5cGZpbGVzL2ZlYXR1cmVzLmd5cGkgXAorKwkJCSAgZGVwcy92OC9zcmMvdjguZ3lwIG5vZGUuZ3lwIGNvbmZpZy5neXBpCisgCSQoUFlUSE9OKSB0b29scy9neXBfbm9kZS5weSAtZiBtYWtlCisgCisgY29uZmlnLmd5cGk6IGNvbmZpZ3VyZQorLS0gCisyLjEyLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNGE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYzJhZmYxNmNjMTk2YTYxZjRhYjFjZGFlNGE5MWM3OTI2MTIzYzIzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFp1emFuYSBTdmV0bGlrb3ZhIDx6c3ZldGxpa0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxNDoyNTo0MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHJ1bm5pbmcgZ3lwIG9uIHNoYXJlZCBkZXBzCisKKy0tLQorIE1ha2VmaWxlIHwgNyArKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDBhMjE3YmQ4OTMuLmUxMjI5YWQwN2YgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC03OSwxMCArNzksOSBAQCAkKE5PREVfR19FWEUpOiBjb25maWcuZ3lwaSBvdXQvTWFrZWZpbGUKKyAJJChNQUtFKSAtQyBvdXQgQlVJTERUWVBFPURlYnVnIFY9JChWKQorIAlpZiBbICEgLXIgJEAgLW8gISAtTCAkQCBdOyB0aGVuIGxuIC1mcyBvdXQvRGVidWcvJChOT0RFX0VYRSkgJEA7IGZpCisgCistb3V0L01ha2VmaWxlOiBjb21tb24uZ3lwaSBkZXBzL3V2L3V2Lmd5cCBkZXBzL2h0dHBfcGFyc2VyL2h0dHBfcGFyc2VyLmd5cCBcCistICAgICAgICAgICAgICBkZXBzL3psaWIvemxpYi5neXAgZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaSBcCistICAgICAgICAgICAgICBkZXBzL3Y4L2d5cGZpbGVzL2ZlYXR1cmVzLmd5cGkgZGVwcy92OC9zcmMvdjguZ3lwIG5vZGUuZ3lwIFwKKy0gICAgICAgICAgICAgIGNvbmZpZy5neXBpCisrb3V0L01ha2VmaWxlOiBjb21tb24uZ3lwaSBkZXBzL2h0dHBfcGFyc2VyL2h0dHBfcGFyc2VyLmd5cCBcCisrICAgICAgICAgICAgICBkZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIGRlcHMvdjgvZ3lwZmlsZXMvZmVhdHVyZXMuZ3lwaSBcCisrCQkJICBkZXBzL3Y4L3NyYy92OC5neXAgbm9kZS5neXAgY29uZmlnLmd5cGkKKyAJJChQWVRIT04pIHRvb2xzL2d5cF9ub2RlLnB5IC1mIG1ha2UKKyAKKyBjb25maWcuZ3lwaTogY29uZmlndXJlCistLSAKKzIuMTIuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc180LjguMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfNC44LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlODRhZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc180LjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIm5vZGVKUyBFdmVudGVkIEkvTyBmb3IgVjggSmF2YVNjcmlwdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9ub2RlanMub3JnIgotTElDRU5TRSA9ICJNSVQgJiBCU0QgJiBBcnRpc3RpYy0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNDVlOWZmYjk3ZTY0ZGE0NmQxNGY0NjJkMzRhMDM5ZiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIiCi0KLUNPTVBBVElCTEVfTUFDSElORV9hcm12NCA9ICIoIS4qYXJtdjQpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjUgPSAiKCEuKmFybXY1KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoIS4qbWlwczY0KS4qIgotCi1TUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL25vLXJlZ2lzdHJ5LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZWE2MTM5Zjk1MmJiN2UxZDY2Zjc2YWZlZGVlODEzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiOTYxMzUwYjg0OTBjNzkxYmRkMzY2MzkyNTY2MmJhMGZiZTAxZTAwNGI0M2YxYzI3NzliYWZmY2M4MTZiOTMwIgotCi1TID0gIiR7V09SS0RJUn0vbm9kZS12JHtQVn0iCi0KLSMgdjggZXJyb3JzIG91dCBpZiB5b3UgaGF2ZSBzZXQgQ0NBQ0hFCi1DQ0FDSEUgPSAiIgotCi1kZWYgbWFwX25vZGVqc19hcmNoKGEsIGQpOgotICAgIGltcG9ydCByZQotCi0gICAgaWYgICByZS5tYXRjaCgnaS44NiQnLCBhKTogcmV0dXJuICdpYTMyJwotICAgIGVsaWYgcmUubWF0Y2goJ3g4Nl82NCQnLCBhKTogcmV0dXJuICd4NjQnCi0gICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCQnLCBhKTogcmV0dXJuICdhcm02NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjNjQkJywgYSk6IHJldHVybiAncHBjNjQnCi0gICAgZWxpZiByZS5tYXRjaCgncG93ZXJwYyQnLCBhKTogcmV0dXJuICdwcGMnCi0gICAgcmV0dXJuIGEKLQotQVJDSEZMQUdTX2FybSA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjYWxsY29udmVudGlvbi1oYXJkJywgJy0td2l0aC1hcm0tZmxvYXQtYWJpPWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9c29mdGZwJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvbicsICctLXdpdGgtYXJtLWZwdT1uZW9uJywgXAotICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2M2QxNicsICctLXdpdGgtYXJtLWZwdT12ZnB2My1kMTYnLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzJywgJy0td2l0aC1hcm0tZnB1PXZmcHYzJywgXAotICAgICAgICAgICAgICAgICAgICAnLS13aXRoLWFybS1mcHU9dmZwJywgZCksIGQpLCBkKX0iCi1HWVBfREVGSU5FU19hcHBlbmRfbWlwc2VsID0gIiBtaXBzX2FyY2hfdmFyaWFudD0ncjEnICIKLUFSQ0hGTEFHUyA/PSAiIgotCi0jIE5vZGUgaXMgd2F5IHRvbyBjb29sIHRvIHVzZSBwcm9wZXIgYXV0b3Rvb2xzLCBzbyB3ZSBpbnN0YWxsIHR3byB3cmFwcGVycyB0byBmb3JjZWZ1bGx5IGluamVjdCBwcm9wZXIgYXJjaCBjZmxhZ3MgdG8gd29ya2Fyb3VuZCBneXBpCi1kb19jb25maWd1cmUgKCkgewotICAgIGV4cG9ydCBMRD0iJHtDWFh9IgotICAgIEdZUF9ERUZJTkVTPSIke0dZUF9ERUZJTkVTfSIgZXhwb3J0IEdZUF9ERUZJTkVTCi0gICAgIyAkVEFSR0VUX0FSQ0ggc2V0dGluZ3MgZG9uJ3QgbWF0Y2ggLS1kZXN0LWNwdSBzZXR0aW5ncwotICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0td2l0aG91dC1zbmFwc2hvdCAtLXNoYXJlZC1vcGVuc3NsIC0tc2hhcmVkLXpsaWIgXAotICAgICAgICAgICAgICAgLS1kZXN0LWNwdT0iJHtAbWFwX25vZGVqc19hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iIFwKLSAgICAgICAgICAgICAgIC0tZGVzdC1vcz1saW51eCBcCi0gICAgICAgICAgICAgICAke0FSQ0hGTEFHU30KLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgZXhwb3J0IExEPSIke0NYWH0iCi0gICAgb2VfcnVubWFrZSBCVUlMRFRZUEU9UmVsZWFzZQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIHVzZSBub2RlIGZyb20gUEFUSCBpbnN0ZWFkIG9mIGFic29sdXRlIHBhdGggdG8gc3lzcm9vdAotICAgICMgbm9kZS12MC4xMC4yNS90b29scy9pbnN0YWxsLnB5IGlzIHVzaW5nOgotICAgICMgc2hlYmFuZyA9IG9zLnBhdGguam9pbihub2RlX3ByZWZpeCwgJ2Jpbi9ub2RlJykKLSAgICAjIHVwZGF0ZV9zaGViYW5nKGxpbmtfcGF0aCwgc2hlYmFuZykKLSAgICAjIGFuZCBub2RlX3ByZWZpeCBjYW4gYmUgdmVyeSBsb25nIHBhdGggdG8gYmluZGlyIGluIG5hdGl2ZSBzeXNyb290IGFuZAotICAgICMgd2hlbiBpdCBleGNlZWRzIDEyOCBjaGFyYWN0ZXIgc2hlYmFuZyBsaW1pdCBpdCdzIHN0cmlwcGVkIHRvIGluY29ycmVjdCBwYXRoCi0gICAgIyBhbmQgbnBtIGZhaWxzIHRvIGV4ZWN1dGUgbGlrZSBpbiB0aGlzIGNhc2Ugd2l0aCAxMzMgY2hhcmFjdGVycyBzaG93IGluIGxvZy5kb19pbnN0YWxsOgotICAgICMgdXBkYXRpbmcgc2hlYmFuZyBvZiAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3dvcmsveDg2XzY0LWxpbnV4L25vZGVqcy1uYXRpdmUvMC4xMC4xNS1yMC9pbWFnZS9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vbnBtIHRvIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vbm9kZQotICAgICMgL3Vzci9iaW4vbnBtIGlzIHN5bWxpbmsgdG8gL3Vzci9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcwotICAgICMgdXNlIHNlZCBvbiBucG0tY2xpLmpzIGJlY2F1c2Ugb3RoZXJ3aXNlIHN5bWxpbmsgaXMgcmVwbGFjZWQgd2l0aCBub3JtYWwgZmlsZSBhbmQKLSAgICAjIG5wbS1jbGkuanMgY29udGludWVzIHRvIHVzZSBvbGQgc2hlYmFuZwotICAgIHNlZCAiMXNeLipeI1whL3Vzci9iaW4vZW52IG5vZGVeZyIgLWkgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBzZWQgIjFzXi4qXiNcISR7YmluZGlyfS9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LW5wbSIKLUZJTEVTXyR7UE59LW5wbSA9ICIke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzICR7YmluZGlyfS9ucG0iCi1SREVQRU5EU18ke1BOfS1ucG0gPSAiYmFzaCBweXRob24tc2hlbGwgcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi10ZXh0dXRpbHMiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1zeXN0ZW10YXAiCi1GSUxFU18ke1BOfS1zeXN0ZW10YXAgPSAiJHtkYXRhZGlyfS9zeXN0ZW10YXAiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmNiYzAwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYgpAQCAtMCwwICsxLDg5IEBACitERVNDUklQVElPTiA9ICJub2RlSlMgRXZlbnRlZCBJL08gZm9yIFY4IEphdmFTY3JpcHQiCitIT01FUEFHRSA9ICJodHRwOi8vbm9kZWpzLm9yZyIKK0xJQ0VOU0UgPSAiTUlUICYgQlNEICYgQXJ0aXN0aWMtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTRkMzVjNjEyMGYxNzVlMWZiZTVmZjkwOGIxY2YyZDYiCisKK0RFUEVORFMgPSAib3BlbnNzbDEwIHpsaWIiCisKK0NPTVBBVElCTEVfTUFDSElORV9hcm12NCA9ICIoIS4qYXJtdjQpLioiCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjUgPSAiKCEuKmFybXY1KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoIS4qbWlwczY0KS4qIgorCitTUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZTZjODVjODMwMDEzNDBiMzA2NzFlOTQzMmUxYmQzMzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ1YWEyYTEwMWRjYzYxNzIzMWE0NzU4MTJlYjhlZDg3Y2FjMjE0OTFmMWRjYzc5OTdiOWRkNDYzNTYzZjM2MSIKKworUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgorCisjIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQorQ0NBQ0hFID0gIiIKKworZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKKyAgICBpbXBvcnQgcmUKKworICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKKyAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCisgICAgZWxpZiByZS5tYXRjaCgncG93ZXJwYzY0JCcsIGEpOiByZXR1cm4gJ3BwYzY0JworICAgIGVsaWYgcmUubWF0Y2goJ3Bvd2VycGMkJywgYSk6IHJldHVybiAncHBjJworICAgIHJldHVybiBhCisKK0FSQ0hGTEFHU19hcm0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY2FsbGNvbnZlbnRpb24taGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1oYXJkJywgJy0td2l0aC1hcm0tZmxvYXQtYWJpPXNvZnRmcCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWFybS1mcHU9bmVvbicsIFwKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjNkMTYnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMtZDE2JywgXAorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2MycsICctLXdpdGgtYXJtLWZwdT12ZnB2MycsIFwKKyAgICAgICAgICAgICAgICAgICAgJy0td2l0aC1hcm0tZnB1PXZmcCcsIGQpLCBkKSwgZCl9IgorR1lQX0RFRklORVNfYXBwZW5kX21pcHNlbCA9ICIgbWlwc19hcmNoX3ZhcmlhbnQ9J3IxJyAiCitBUkNIRkxBR1MgPz0gIiIKKworIyBOb2RlIGlzIHdheSB0b28gY29vbCB0byB1c2UgcHJvcGVyIGF1dG90b29scywgc28gd2UgaW5zdGFsbCB0d28gd3JhcHBlcnMgdG8gZm9yY2VmdWxseSBpbmplY3QgcHJvcGVyIGFyY2ggY2ZsYWdzIHRvIHdvcmthcm91bmQgZ3lwaQorZG9fY29uZmlndXJlICgpIHsKKyAgICBybSAtcmYgJHtTfS9kZXBzL29wZW5zc2wKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBHWVBfREVGSU5FUz0iJHtHWVBfREVGSU5FU30iIGV4cG9ydCBHWVBfREVGSU5FUworICAgICMgJFRBUkdFVF9BUkNIIHNldHRpbmdzIGRvbid0IG1hdGNoIC0tZGVzdC1jcHUgc2V0dGluZ3MKKyAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAtLXdpdGhvdXQtaW50bCAtLXdpdGhvdXQtc25hcHNob3QgLS1zaGFyZWQtb3BlbnNzbCAtLXNoYXJlZC16bGliIFwKKyAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCisgICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAorICAgICAgICAgICAgICAgJHtBUkNIRkxBR1N9Cit9CisKK2RvX2NvbXBpbGUgKCkgeworICAgIGV4cG9ydCBMRD0iJHtDWFh9IgorICAgIG9lX3J1bm1ha2UgQlVJTERUWVBFPVJlbGVhc2UKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyB1c2Ugbm9kZSBmcm9tIFBBVEggaW5zdGVhZCBvZiBhYnNvbHV0ZSBwYXRoIHRvIHN5c3Jvb3QKKyAgICAjIG5vZGUtdjAuMTAuMjUvdG9vbHMvaW5zdGFsbC5weSBpcyB1c2luZzoKKyAgICAjIHNoZWJhbmcgPSBvcy5wYXRoLmpvaW4obm9kZV9wcmVmaXgsICdiaW4vbm9kZScpCisgICAgIyB1cGRhdGVfc2hlYmFuZyhsaW5rX3BhdGgsIHNoZWJhbmcpCisgICAgIyBhbmQgbm9kZV9wcmVmaXggY2FuIGJlIHZlcnkgbG9uZyBwYXRoIHRvIGJpbmRpciBpbiBuYXRpdmUgc3lzcm9vdCBhbmQKKyAgICAjIHdoZW4gaXQgZXhjZWVkcyAxMjggY2hhcmFjdGVyIHNoZWJhbmcgbGltaXQgaXQncyBzdHJpcHBlZCB0byBpbmNvcnJlY3QgcGF0aAorICAgICMgYW5kIG5wbSBmYWlscyB0byBleGVjdXRlIGxpa2UgaW4gdGhpcyBjYXNlIHdpdGggMTMzIGNoYXJhY3RlcnMgc2hvdyBpbiBsb2cuZG9faW5zdGFsbDoKKyAgICAjIHVwZGF0aW5nIHNoZWJhbmcgb2YgL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni93b3JrL3g4Nl82NC1saW51eC9ub2RlanMtbmF0aXZlLzAuMTAuMTUtcjAvaW1hZ2UvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25wbSB0byAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25vZGUKKyAgICAjIC91c3IvYmluL25wbSBpcyBzeW1saW5rIHRvIC91c3IvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKKyAgICAjIHVzZSBzZWQgb24gbnBtLWNsaS5qcyBiZWNhdXNlIG90aGVyd2lzZSBzeW1saW5rIGlzIHJlcGxhY2VkIHdpdGggbm9ybWFsIGZpbGUgYW5kCisgICAgIyBucG0tY2xpLmpzIGNvbnRpbnVlcyB0byB1c2Ugb2xkIHNoZWJhbmcKKyAgICBzZWQgIjFzXi4qXiNcIS91c3IvYmluL2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgc2VkICIxc14uKl4jXCEke2JpbmRpcn0vZW52IG5vZGVeZyIgLWkgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1ucG0iCitGSUxFU18ke1BOfS1ucG0gPSAiJHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcyAke2JpbmRpcn0vbnBtICR7YmluZGlyfS9ucHgiCitSREVQRU5EU18ke1BOfS1ucG0gPSAiYmFzaCBweXRob24tc2hlbGwgcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi10ZXh0dXRpbHMiCisKK1BBQ0tBR0VTID0rICIke1BOfS1zeXN0ZW10YXAiCitGSUxFU18ke1BOfS1zeXN0ZW10YXAgPSAiJHtkYXRhZGlyfS9zeXN0ZW10YXAiCisKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0MTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAxLUFkZC1mYWxsdGhyb3VnaC1jb21tZW50cy5wYXRjaApAQCAtMCwwICsxLDE1NSBAQAorRnJvbSA4Zjg1MTYzYjAzMGU3Yjk1NzY0OGY5MGNkOGZhNTk5ZmIwNGQ1ZDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjM6MzI6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIEFkZCBmYWxsdGhyb3VnaCBjb21tZW50cworCitGaXhlcworCitzcmMvc3ZmL3N2Zi5jOjY2Mzo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCisgICAgIGkgPSAtMTsKKyAgICAgfn5efn5+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2ZsYXNoL21mbGFzaC5jICAgICAgICAgICAgfCAzICsrLQorIHNyYy9mbGFzaC9uYW5kL214My5jICAgICAgICAgIHwgMSArCisgc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMgICAgICAgfCAxICsKKyBzcmMvc3ZmL3N2Zi5jICAgICAgICAgICAgICAgICB8IDIgKysKKyBzcmMvdGFyZ2V0L2FybV9hZGlfdjUuYyAgICAgICB8IDkgKysrKysrKysrCisgc3JjL3RhcmdldC9hcm1fZGlzYXNzZW1ibGVyLmMgfCAxICsKKyBzcmMvdGFyZ2V0L3RhcmdldC5jICAgICAgICAgICB8IDEgKworIDcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZsYXNoL21mbGFzaC5jIGIvc3JjL2ZsYXNoL21mbGFzaC5jCitpbmRleCBiNjk5OTU1NDIuLjMyNTRhM2Q1NiAxMDA2NDQKKy0tLSBhL3NyYy9mbGFzaC9tZmxhc2guYworKysrIGIvc3JjL2ZsYXNoL21mbGFzaC5jCitAQCAtMjU5LDEwICsyNTksMTEgQEAgc3RhdGljIGludCBtZ19kc2tfd2FpdChtZ19pb190eXBlX3dhaXQgd2FpdF9sb2NhbCwgdWludDMyX3QgdGltZV92YXIpCisgCQkJCWNhc2UgbWdfaW9fd2FpdF9yZHk6CisgCQkJCQlpZiAoc3RhdHVzICYgbWdfaW9fcmJpdF9zdGF0dXNfcmVhZHkpCisgCQkJCQkJcmV0dXJuIEVSUk9SX09LOworLQorKwkJCQkJLyogZmFsbHRocnUgKi8KKyAJCQkJY2FzZSBtZ19pb193YWl0X2RycToKKyAJCQkJCWlmIChzdGF0dXMgJiBtZ19pb19yYml0X3N0YXR1c19kYXRhX3JlcSkKKyAJCQkJCQlyZXR1cm4gRVJST1JfT0s7CisrCQkJCQkvKiBmYWxsdGhydSAqLworIAorIAkJCQlkZWZhdWx0OgorIAkJCQkJYnJlYWs7CitkaWZmIC0tZ2l0IGEvc3JjL2ZsYXNoL25hbmQvbXgzLmMgYi9zcmMvZmxhc2gvbmFuZC9teDMuYworaW5kZXggYjYxZTQ3NTM1Li4wYTU1OTI5ZWQgMTAwNjQ0CistLS0gYS9zcmMvZmxhc2gvbmFuZC9teDMuYworKysrIGIvc3JjL2ZsYXNoL25hbmQvbXgzLmMKK0BAIC0yODEsNiArMjgxLDcgQEAgc3RhdGljIGludCBpbXgzMV9jb21tYW5kKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwgdWludDhfdCBjb21tYW5kKQorIAkJCSAqIG9mZnNldCA9PSBvbmUgaGFsZiBvZiBwYWdlIHNpemUKKyAJCQkgKi8KKyAJCQlpbl9zcmFtX2FkZHJlc3MgPSBNWDNfTkZfTUFJTl9CVUZGRVIwICsgKG5hbmQtPnBhZ2Vfc2l6ZSA+PiAxKTsKKysJCQkvKiBmYWxsdGhydSAqLworIAkJZGVmYXVsdDoKKyAJCQlpbl9zcmFtX2FkZHJlc3MgPSBNWDNfTkZfTUFJTl9CVUZGRVIwOworIAl9CitkaWZmIC0tZ2l0IGEvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMgYi9zcmMvanRhZy9kcml2ZXJzL2Z0ZGkuYworaW5kZXggMDBmZTM3ZmFmLi4yMGYxN2Q4MTAgMTAwNjQ0CistLS0gYS9zcmMvanRhZy9kcml2ZXJzL2Z0ZGkuYworKysrIGIvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMKK0BAIC04NTUsNiArODU1LDcgQEAgQ09NTUFORF9IQU5ETEVSKGZ0ZGlfaGFuZGxlX3NldF9zaWduYWxfY29tbWFuZCkKKyAJCQlmdGRpX3NldF9zaWduYWwoc2lnLCAqQ01EX0FSR1ZbMV0pOworIAkJCWJyZWFrOworIAkJfQorKwkJLyogZmFsbHRocnUgKi8KKyAJZGVmYXVsdDoKKyAJCUxPR19FUlJPUigidW5rbm93biBzaWduYWwgbGV2ZWwgJyVzJywgdXNlIDAsIDEgb3IgeiIsIENNRF9BUkdWWzFdKTsKKyAJCXJldHVybiBFUlJPUl9DT01NQU5EX1NZTlRBWF9FUlJPUjsKK2RpZmYgLS1naXQgYS9zcmMvc3ZmL3N2Zi5jIGIvc3JjL3N2Zi9zdmYuYworaW5kZXggZTdlODE1YzEwLi43YjI2MWNjNzIgMTAwNjQ0CistLS0gYS9zcmMvc3ZmL3N2Zi5jCisrKysgYi9zcmMvc3ZmL3N2Zi5jCitAQCAtNjYxLDExICs2NjEsMTMgQEAgc3RhdGljIGludCBzdmZfcmVhZF9jb21tYW5kX2Zyb21fZmlsZShGSUxFICpmZCkKKyAJCQkJaWYgKHN2Zl9nZXRsaW5lKCZzdmZfcmVhZF9saW5lLCAmc3ZmX3JlYWRfbGluZV9zaXplLCBzdmZfZmQpIDw9IDApCisgCQkJCQlyZXR1cm4gRVJST1JfRkFJTDsKKyAJCQkJaSA9IC0xOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgJ1xyJzoKKyAJCQkJc2xhc2ggPSAwOworIAkJCQkvKiBEb24ndCBzYXZlICdccicgYW5kICdcbicgaWYgbm8gZGF0YSBpcyBwYXJzZWQgKi8KKyAJCQkJaWYgKCFjbWRfcG9zKQorIAkJCQkJYnJlYWs7CisrCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJZGVmYXVsdDoKKyAJCQkJLyogVGhlIHBhcnNpbmcgY29kZSBjdXJyZW50bHkgZXhwZWN0cyBhIHNwYWNlCisgCQkJCSAqIGJlZm9yZSBwYXJlbnRoZXNlcyAtLSAiVERJICgxMjMpIi4gIEFsc28gYQorZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jIGIvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKK2luZGV4IGVhZmMyZGRjMC4uZDQ0NGRiMmIxIDEwMDY0NAorLS0tIGEvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKKysrKyBiL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCitAQCAtMzQ2LDEwICszNDYsMTMgQEAgc3RhdGljIGludCBtZW1fYXBfd3JpdGUoc3RydWN0IGFkaXY1X2FwICphcCwgY29uc3QgdWludDhfdCAqYnVmZmVyLCB1aW50MzJfdCBzaXoKKyAJCQljYXNlIDQ6CisgCQkJCW91dHZhbHVlIHw9ICh1aW50MzJfdCkqYnVmZmVyKysgPDwgOCAqIChhZGRyZXNzKysgJiAzKTsKKyAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgMjoKKyAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgMToKKyAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCX0KKyAJCX0KKyAKK0BAIC01MDksMjAgKzUxMiwyNiBAQCBzdGF0aWMgaW50IG1lbV9hcF9yZWFkKHN0cnVjdCBhZGl2NV9hcCAqYXAsIHVpbnQ4X3QgKmJ1ZmZlciwgdWludDMyX3Qgc2l6ZSwgdWludAorIAkJCWNhc2UgNDoKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoMyAtIChhZGRyZXNzKysgJiAzKSk7CisgCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKDMgLSAoYWRkcmVzcysrICYgMykpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgMjoKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoMyAtIChhZGRyZXNzKysgJiAzKSk7CisrCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJY2FzZSAxOgorIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqICgzIC0gKGFkZHJlc3MrKyAmIDMpKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCXN3aXRjaCAodGhpc19zaXplKSB7CisgCQkJY2FzZSA0OgorIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqIChhZGRyZXNzKysgJiAzKTsKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoYWRkcmVzcysrICYgMyk7CisrCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJY2FzZSAyOgorIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqIChhZGRyZXNzKysgJiAzKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQljYXNlIDE6CisgCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKGFkZHJlc3MrKyAmIDMpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCX0KKyAJCX0KKyAKK2RpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYyBiL3NyYy90YXJnZXQvYXJtX2Rpc2Fzc2VtYmxlci5jCitpbmRleCA1Mjc3Yjk0ZDguLjJlYjIxZWEzMyAxMDA2NDQKKy0tLSBhL3NyYy90YXJnZXQvYXJtX2Rpc2Fzc2VtYmxlci5jCisrKysgYi9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYworQEAgLTMyOTksNiArMzI5OSw3IEBAIHN0YXRpYyBpbnQgdDJldl9kYXRhX2ltbWVkKHVpbnQzMl90IG9wY29kZSwgdWludDMyX3QgYWRkcmVzcywKKyAJCWNhc2UgMHgxMDoKKyAJCWNhc2UgMHgxMjoKKyAJCQlpc19zaWduZWQgPSB0cnVlOworKwkJCS8qIGZhbGx0aHJ1ICovCisgCQljYXNlIDB4MTg6CisgCQljYXNlIDB4MWE6CisgCQkJLyogc2lnbmVkL3Vuc2lnbmVkIHNhdHVyYXRlZCBhZGQgKi8KK2RpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L3RhcmdldC5jIGIvc3JjL3RhcmdldC90YXJnZXQuYworaW5kZXggZTA0ZWNjNDcwLi41OTdiNGIxM2QgMTAwNjQ0CistLS0gYS9zcmMvdGFyZ2V0L3RhcmdldC5jCisrKysgYi9zcmMvdGFyZ2V0L3RhcmdldC5jCitAQCAtMzY4NCw2ICszNjg0LDcgQEAgQ09NTUFORF9IQU5ETEVSKGhhbmRsZV9icF9jb21tYW5kKQorIAkJCQlhZGRyID0gMDsKKyAJCQkJcmV0dXJuIGhhbmRsZV9icF9jb21tYW5kX3NldChDTURfQ1RYLCBhZGRyLCBhc2lkLCBsZW5ndGgsIGh3KTsKKyAJCQl9CisrCQkJLyogZmFsbHRocnUgKi8KKyAKKyAJCWNhc2UgNDoKKyAJCQlodyA9IEJLUFRfSEFSRDsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAyLVdvcmthcm91bmQtbmV3LXdhcm5pbmdzLWdlbmVyYXRlZC1ieS1HQ0MtNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAyLVdvcmthcm91bmQtbmV3LXdhcm5pbmdzLWdlbmVyYXRlZC1ieS1HQ0MtNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTk5NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDItV29ya2Fyb3VuZC1uZXctd2FybmluZ3MtZ2VuZXJhdGVkLWJ5LUdDQy03LnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gOGRhYWE4YzI3Nzk0NjUzZDAyODU0YzU5ODI2NjlhNzYzODQ3MzIyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIzOjUyOjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBXb3JrYXJvdW5kIG5ldyB3YXJuaW5ncyBnZW5lcmF0ZWQgYnkgR0NDIDcKKworc3JjL2ZsYXNoL25vci94bWM0eHh4LmM6IEluIGZ1bmN0aW9uICd4bWM0eHh4X2dldF9pbmZvX2NvbW1hbmQnOgorc3JjL2ZsYXNoL25vci94bWM0eHh4LmM6OTM5OjQzOiBlcnJvcjogJyVkJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyBiZXR3ZWVuIDEgYW5kIDEwIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSA2IFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KKyAgICAgc25wcmludGYob3RwX3N0ciwgc2l6ZW9mKG90cF9zdHIpLCAiLSAlZFxuIiwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn4KK3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jOjkzOTo0MDogbm90ZTogZGlyZWN0aXZlIGFyZ3VtZW50IGluIHRoZSByYW5nZSBbMCwgMjE0NzQ4MzY0N10KKyAgICAgc25wcmludGYob3RwX3N0ciwgc2l6ZW9mKG90cF9zdHIpLCAiLSAlZFxuIiwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jOjkzOTo1OiBub3RlOiAnc25wcmludGYnIG91dHB1dCBiZXR3ZWVuIDUgYW5kIDE0IGJ5dGVzIGludG8gYSBkZXN0aW5hdGlvbiBvZiBzaXplIDgKKyAgICAgc25wcmludGYob3RwX3N0ciwgc2l6ZW9mKG90cF9zdHIpLCAiLSAlZFxuIiwgaSk7CisgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2ZsYXNoL25vci94bWM0eHh4LmMgfCAyICstCisgc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZmxhc2gvbm9yL3htYzR4eHguYyBiL3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jCitpbmRleCAwMmRmNDZhM2YuLmU2YzM5OGZmOSAxMDA2NDQKKy0tLSBhL3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jCisrKysgYi9zcmMvZmxhc2gvbm9yL3htYzR4eHguYworQEAgLTkzMSw3ICs5MzEsNyBAQCBzdGF0aWMgaW50IHhtYzR4eHhfZ2V0X2luZm9fY29tbWFuZChzdHJ1Y3QgZmxhc2hfYmFuayAqYmFuaywgY2hhciAqYnVmLCBpbnQgYnVmXworIAorIAkvKiBJZiBPVFAgV3JpdGUgcHJvdGVjdGlvbiBpcyBlbmFibGVkIChVc2VyIDIpLCBsaXN0IGVhY2gKKyAJICogc2VjdG9yIHRoYXQgaGFzIGl0IGVuYWJsZWQgKi8KKy0JY2hhciBvdHBfc3RyWzhdOworKwljaGFyIG90cF9zdHJbMTRdOworIAlpZiAob3RwX2VuYWJsZWQpIHsKKyAJCXN0cmNhdChwcm90X3N0ciwgIlxuT1RQIFByb3RlY3Rpb24gaXMgZW5hYmxlZCBmb3Igc2VjdG9yczpcbiIpOworIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBiYW5rLT5udW1fc2VjdG9yczsgaSsrKSB7CitkaWZmIC0tZ2l0IGEvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMgYi9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYworaW5kZXggZDQ0NGRiMmIxLi5kMGQ5NTEyMWYgMTAwNjQ0CistLS0gYS9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYworKysrIGIvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKK0BAIC0xMDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgaW50IGRhcF9yb21fZGlzcGxheShzdHJ1Y3QgY29tbWFuZF9jb250ZXh0ICpjbWRfY3R4LAorIAlpbnQgcmV0dmFsOworIAl1aW50NjRfdCBwaWQ7CisgCXVpbnQzMl90IGNpZDsKKy0JY2hhciB0YWJzWzddID0gIiI7CisrCWNoYXIgdGFic1sxNl0gPSAiIjsKKyAKKyAJaWYgKGRlcHRoID4gMTYpIHsKKyAJCWNvbW1hbmRfcHJpbnQoY21kX2N0eCwgIlx0VGFibGVzIHRvbyBkZWVwIik7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNmYmZjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAzLWFybXY3YS1BZGQtbWlzc2luZy1icmVhay10by1maXgtZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDhlNTA1MWU4M2ZlZGIwNzgxNzA1NjVhMjRkMWY1ZGU2YzJjZTQ0MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNyBKdW4gMjAxNyAwMDowMTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvNV0gYXJtdjdhOiBBZGQgbWlzc2luZyBicmVhayB0byBmaXggZmFsbHRocm91Z2ggd2FybmluZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy90YXJnZXQvYXJtdjdhLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvYXJtdjdhLmMgYi9zcmMvdGFyZ2V0L2FybXY3YS5jCitpbmRleCA2MDIxZGVmNGUuLmJhZDgwNmIzZCAxMDA2NDQKKy0tLSBhL3NyYy90YXJnZXQvYXJtdjdhLmMKKysrKyBiL3NyYy90YXJnZXQvYXJtdjdhLmMKK0BAIC0zNTUsNiArMzU1LDcgQEAgaW50IGFybXY3YV9tbXVfdHJhbnNsYXRlX3ZhX3BhKHN0cnVjdCB0YXJnZXQgKnRhcmdldCwgdWludDMyX3QgdmEsCisgCQkJCWJyZWFrOworIAkJCWNhc2UgNzoKKyAJCQkJTE9HX0lORk8oImlubmVyOiBXcml0ZS1CYWNrLCBubyBXcml0ZS1BbGxvY2F0ZSIpOworKwkJCQlicmVhazsKKyAKKyAJCQlkZWZhdWx0OgorIAkJCQlMT0dfSU5GTygiaW5uZXI6ICUiIFBSSXgzMiAiID8/PyIsIElOTkVSKTsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDA0LUZpeC1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDQtRml4LW92ZXJmbG93LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZjNTYyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDA0LUZpeC1vdmVyZmxvdy13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZDNjYTU2MzcwYTJiZTdlNzM3ZDQ4YmQxNGQ0NzRkNzkwYTBhYjhhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IEp1biAyMDE3IDAwOjA0OjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBGaXggb3ZlcmZsb3cgd2FybmluZworCitSZW1vdmUgYW4gZW1wdHkgc3BhY2Ugd2hpY2ggbWFrZXMgaXQgZml0IGludG8gMTEgYnl0ZSBzdHJpbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvdGFyZ2V0L25kczMyX2NtZC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RhcmdldC9uZHMzMl9jbWQuYyBiL3NyYy90YXJnZXQvbmRzMzJfY21kLmMKK2luZGV4IGVkYjQ4NzJlNC4uNzMzNTUwNzNjIDEwMDY0NAorLS0tIGEvc3JjL3RhcmdldC9uZHMzMl9jbWQuYworKysrIGIvc3JjL3RhcmdldC9uZHMzMl9jbWQuYworQEAgLTgyMSw3ICs4MjEsNyBAQCBzdGF0aWMgaW50IGppbV9uZHMzMl9idWxrX3JlYWQoSmltX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgSmltX09iaiAqIGNvbnN0ICphcgorIAlqaW1fd2lkZSBpOworIAlKaW1fU2V0UmVzdWx0KGludGVycCwgSmltX05ld0VtcHR5U3RyaW5nT2JqKGludGVycCkpOworIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworLQkJc3ByaW50ZihkYXRhX3N0ciwgIjB4JTA4IiBQUkl4MzIgIiAiLCBkYXRhW2ldKTsKKysJCXNwcmludGYoZGF0YV9zdHIsICIweCUwOCIgUFJJeDMyICIiLCBkYXRhW2ldKTsKKyAJCUppbV9BcHBlbmRTdHJpbmdzKGludGVycCwgSmltX0dldFJlc3VsdChpbnRlcnApLCBkYXRhX3N0ciwgTlVMTCk7CisgCX0KKyAKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDA1LWNvbW1hbmQtTW92ZS10aGUtZmFsbC10aHJvdWdoLWNvbW1lbnQtdG8tcmlnaHQtc2NvcGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjc1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMjlkYmY5MmZmZGJkZGEyOTY2MmI0MTkwYTJmOGViMDljYWFkOGI1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IEp1biAyMDE3IDAwOjA2OjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBjb21tYW5kOiBNb3ZlIHRoZSBmYWxsIHRocm91Z2ggY29tbWVudCB0byByaWdodCBzY29wZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2hlbHBlci9jb21tYW5kLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaGVscGVyL2NvbW1hbmQuYyBiL3NyYy9oZWxwZXIvY29tbWFuZC5jCitpbmRleCA1ZGVhZWU4NTkuLjI4N2MxNDg1NyAxMDA2NDQKKy0tLSBhL3NyYy9oZWxwZXIvY29tbWFuZC5jCisrKysgYi9zcmMvaGVscGVyL2NvbW1hbmQuYworQEAgLTE0NTYsOCArMTQ1Niw4IEBAIENPTU1BTkRfSEVMUEVSKGhhbmRsZV9jb21tYW5kX3BhcnNlX2Jvb2wsIGJvb2wgKm91dCwgY29uc3QgY2hhciAqbGFiZWwpCisgCQkJCUxPR19FUlJPUigiJXM6IGFyZ3VtZW50ICclcycgaXMgbm90IHZhbGlkIiwgQ01EX05BTUUsIGluKTsKKyAJCQkJcmV0dXJuIEVSUk9SX0NPTU1BTkRfU1lOVEFYX0VSUk9SOworIAkJCX0KKy0JCQkvKiBmYWxsIHRocm91Z2ggKi8KKyAJCX0KKysJCS8qIGZhbGwgdGhyb3VnaCAqLworIAkJY2FzZSAwOgorIAkJCUxPR19JTkZPKCIlcyBpcyAlcyIsIGxhYmVsLCAqb3V0ID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisgCQkJYnJlYWs7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2RfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGJjNjYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkX2dpdC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWUgYW5kIE9wZW4gT24tQ2hpcCBEZWJ1Z2dpbmcsIEluLVN5c3RlbSBQcm9ncmFtbWluZyBhbmQgQm91bmRhcnktU2NhbiBUZXN0aW5nIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJsaWJ1c2ItY29tcGF0IGxpYmZ0ZGkiCitSREVQRU5EU18ke1BOfSA9ICJsaWJ1c2IxIgorCitTUkNfVVJJID0gImdpdDovL3JlcG8ub3IuY3ovb3Blbm9jZC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Xb3JrYXJvdW5kLW5ldy13YXJuaW5ncy1nZW5lcmF0ZWQtYnktR0NDLTcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3ZlcmZsb3ctd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbW1hbmQtTW92ZS10aGUtZmFsbC10aHJvdWdoLWNvbW1lbnQtdG8tcmlnaHQtc2NvcGUucGF0Y2ggXAorIgorU1JDUkVWID0gIjEwMjViZTM2M2UyYmY0MmYxNjEzMDgzMjIzYTIzMjJjYzNhOWJkNGMiCisKK1BWID0gIjAuMTArZ2l0ciR7U1JDUFZ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZXNkayIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWZ0ZGkgLS1kaXNhYmxlLWRveHlnZW4taHRtbCAiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAuL2Jvb3RzdHJhcAorICAgIG9lX3J1bmNvbmYgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorICAgIGlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9IiBdOyB0aGVuCisgICAgICBybSAtUmYgJHtEfSR7aW5mb2Rpcn0KKyAgICBmaQorICAgIGlmIFsgLWUgIiR7RH0ke21hbmRpcn0iIF07IHRoZW4KKyAgICAgIHJtIC1SZiAke0R9JHttYW5kaXJ9CisgICAgZmkKKyAgICBpZiBbIC1lICIke0R9JHtiaW5kaXJ9Ly5kZWJ1ZyIgXTsgdGhlbgorICAgICAgcm0gLVJmICR7RH0ke2JpbmRpcn0vLmRlYnVnCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gPSAiIFwKKyAgJHtkYXRhZGlyfS9vcGVub2NkLyogXAorICAke2JpbmRpcn0vb3Blbm9jZCBcCisgICIKKworUEFDS0FHRUNPTkZJR1tzeXNmc2dwaW9dID0gIi0tZW5hYmxlLXN5c2ZzZ3BpbywtLWRpc2FibGUtc3lzZnNncGlvIgorUEFDS0FHRUNPTkZJRyA/Pz0gInN5c2ZzZ3BpbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNkay10YXJnZXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiCmluZGV4IDE0ZTc1ZGMuLjFiZTdmNmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNkay10YXJnZXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2RrLXRhcmdldC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiUGFja2FnZXMgcmVxdWlyZWQgZm9yIGEgdGFyZ2V0IChvbi1kZXZpY2UpIFNESyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogUFIgPSAicjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi8wMDAxLURvbi10LWNhbGwtZGVwcmVjYXRlZC1nbGliLWZ1bmN0aW9ucy1hbmQtdXNlLXRoZS1uZXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvMDAwMS1Eb24tdC1jYWxsLWRlcHJlY2F0ZWQtZ2xpYi1mdW5jdGlvbnMtYW5kLXVzZS10aGUtbmV3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y4ZTc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi8wMDAxLURvbi10LWNhbGwtZGVwcmVjYXRlZC1nbGliLWZ1bmN0aW9ucy1hbmQtdXNlLXRoZS1uZXcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotRnJvbSA4NjllNTJhOTA1NWM3Mjk3MGZlZDAzNmExNTEwZjY3NmU2Y2UwODI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVuIDIwMTMgMDE6MjQ6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgY2FsbCBkZXByZWNhdGVkIGdsaWIgZnVuY3Rpb25zIGFuZCB1c2UgdGhlIG5ldyBndGhyZWFkCi0gQVBJLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbdmVyc2lvbiBVbm1haW50YWluZWQgVXBzdHJlYW1dCi0tLS0KLSBjbGllbnQvcGstY29uc29sZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsrLQotIGNsaWVudC9way1nZW5lcmF0ZS1wYWNrLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKystCi0gY2xpZW50L3BrLW1vbml0b3IuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArKy0KLSBjb250cmliL2NvbW1hbmQtbm90LWZvdW5kL1BhY2thZ2VLaXQuc2ggICAgICAgICAgfCAgICAyICstCi0gY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9way1jb21tYW5kLW5vdC1mb3VuZC5jIHwgICAgNCArKy0tCi0gY29udHJpYi9kZWJ1Z2luZm8taW5zdGFsbC9way1kZWJ1Z2luZm8taW5zdGFsbC5jIHwgICAgNCArKy0tCi0gc3JjL3BrLWJhY2tlbmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKysrKysrCi0gc3JjL3BrLW1haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArKy0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvcGstY29uc29sZS5jIGIvY2xpZW50L3BrLWNvbnNvbGUuYwotaW5kZXggZGU5MjdlMS4uMjQzNWYyNyAxMDA2NDQKLS0tLSBhL2NsaWVudC9way1jb25zb2xlLmMKLSsrKyBiL2NsaWVudC9way1jb25zb2xlLmMKLUBAIC0xMjY0LDExICsxMjY0LDEyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWJpbmR0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gCWJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwotIAl0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UpOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzIsMCkKLSAJaWYgKCEgZ190aHJlYWRfc3VwcG9ydGVkICgpKQotIAkJZ190aHJlYWRfaW5pdCAoTlVMTCk7Ci0gCWdfdHlwZV9pbml0ICgpOwotIAlkYnVzX2dfdGhyZWFkX2luaXQgKCk7Ci0rI2VuZGlmCi0gCi0gCS8qIGRvIHN0dWZmIG9uIGN0cmwtYyAqLwotIAlzaWduYWwgKFNJR0lOVCwgcGtfY29uc29sZV9zaWdpbnRfY2IpOwotZGlmZiAtLWdpdCBhL2NsaWVudC9way1nZW5lcmF0ZS1wYWNrLmMgYi9jbGllbnQvcGstZ2VuZXJhdGUtcGFjay5jCi1pbmRleCAwYjJiNDBmLi4yMGQ3ZThkIDEwMDY0NAotLS0tIGEvY2xpZW50L3BrLWdlbmVyYXRlLXBhY2suYwotKysrIGIvY2xpZW50L3BrLWdlbmVyYXRlLXBhY2suYwotQEAgLTI1MSwxMiArMjUxLDEzIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWJpbmR0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gCWJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwotIAl0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UpOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzIsMCkKLSAJaWYgKCEgZ190aHJlYWRfc3VwcG9ydGVkICgpKQotIAkJZ190aHJlYWRfaW5pdCAoTlVMTCk7Ci0gCi0gCWdfdHlwZV9pbml0ICgpOwotIAlkYnVzX2dfdGhyZWFkX2luaXQgKCk7Ci0rI2VuZGlmCi0gCi0gCS8qIGRvIHN0dWZmIG9uIGN0cmwtYyAqLwotIAlzaWduYWwgKFNJR0lOVCwgcGtfZ2VuZXJhdGVfcGFja19zaWdpbnRfY2IpOwotZGlmZiAtLWdpdCBhL2NsaWVudC9way1tb25pdG9yLmMgYi9jbGllbnQvcGstbW9uaXRvci5jCi1pbmRleCBmMjMwZjdhLi5kNDMwMDdmIDEwMDY0NAotLS0tIGEvY2xpZW50L3BrLW1vbml0b3IuYwotKysrIGIvY2xpZW50L3BrLW1vbml0b3IuYwotQEAgLTI4NSwxMSArMjg1LDEyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWJpbmR0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gCWJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwotIAl0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UpOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzIsMCkKLSAJaWYgKCEgZ190aHJlYWRfc3VwcG9ydGVkICgpKQotIAkJZ190aHJlYWRfaW5pdCAoTlVMTCk7Ci0gCWdfdHlwZV9pbml0ICgpOwotIAlkYnVzX2dfdGhyZWFkX2luaXQgKCk7Ci0rI2VuZGlmCi0gCi0gCWNvbnRleHQgPSBnX29wdGlvbl9jb250ZXh0X25ldyAoTlVMTCk7Ci0gCS8qIFRSQU5TTEFUT1JTOiB0aGlzIGlzIGEgcHJvZ3JhbSB0aGF0IG1vbml0b3JzIFBhY2thZ2VLaXQgKi8KLWRpZmYgLS1naXQgYS9jb250cmliL2NvbW1hbmQtbm90LWZvdW5kL1BhY2thZ2VLaXQuc2ggYi9jb250cmliL2NvbW1hbmQtbm90LWZvdW5kL1BhY2thZ2VLaXQuc2gKLWluZGV4IGQwODk4OWMuLmQ3MDhmZmYgMTAwNjQ0Ci0tLS0gYS9jb250cmliL2NvbW1hbmQtbm90LWZvdW5kL1BhY2thZ2VLaXQuc2gKLSsrKyBiL2NvbnRyaWIvY29tbWFuZC1ub3QtZm91bmQvUGFja2FnZUtpdC5zaAotQEAgLTE4LDcgKzE4LDcgQEAgY29tbWFuZF9ub3RfZm91bmRfaGFuZGxlICgpIHsKLSAKLSAJIyBydW4gdGhlIGNvbW1hbmQsIG9yIGp1c3QgcHJpbnQgYSB3YXJuaW5nCi0gCWlmIFsgJHJ1bmNuZiAtZXEgMSBdOyB0aGVuCi0tCQkvaG9tZS9odWdoc2llLy5yb290L2xpYmV4ZWMvcGstY29tbWFuZC1ub3QtZm91bmQgJDEKLSsJCS91c3IvbGliL3BhY2thZ2VraXQvcGstY29tbWFuZC1ub3QtZm91bmQgJDEKLSAJCXJldHZhbD0kPwotIAllbHNlCi0gCQllY2hvICJiYXNoOiAkMTogY29tbWFuZCBub3QgZm91bmQiCi1kaWZmIC0tZ2l0IGEvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9way1jb21tYW5kLW5vdC1mb3VuZC5jIGIvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9way1jb21tYW5kLW5vdC1mb3VuZC5jCi1pbmRleCA3MDY3OWMwLi45ZjgxY2U0IDEwMDY0NAotLS0tIGEvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9way1jb21tYW5kLW5vdC1mb3VuZC5jCi0rKysgYi9jb250cmliL2NvbW1hbmQtbm90LWZvdW5kL3BrLWNvbW1hbmQtbm90LWZvdW5kLmMKLUBAIC02NTksMTIgKzY1OSwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAlkYnVzX2dfdGhyZWFkX2luaXQgKCk7Ci0gCWdfdHlwZV9pbml0ICgpOwotLQotKyNlbmRpZgotIAljb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKE5VTEwpOwotIAkvKiBUUkFOU0xBVE9SUzogdG9vbCB0aGF0IGdldHMgY2FsbGVkIHdoZW4gdGhlIGNvbW1hbmQgaXMgbm90IGZvdW5kICovCi0gCWdfb3B0aW9uX2NvbnRleHRfc2V0X3N1bW1hcnkgKGNvbnRleHQsIF8oIlBhY2thZ2VLaXQgQ29tbWFuZCBOb3QgRm91bmQiKSk7Ci1kaWZmIC0tZ2l0IGEvY29udHJpYi9kZWJ1Z2luZm8taW5zdGFsbC9way1kZWJ1Z2luZm8taW5zdGFsbC5jIGIvY29udHJpYi9kZWJ1Z2luZm8taW5zdGFsbC9way1kZWJ1Z2luZm8taW5zdGFsbC5jCi1pbmRleCBjMTJhY2E1Li5iMGUxZTdjIDEwMDY0NAotLS0tIGEvY29udHJpYi9kZWJ1Z2luZm8taW5zdGFsbC9way1kZWJ1Z2luZm8taW5zdGFsbC5jCi0rKysgYi9jb250cmliL2RlYnVnaW5mby1pbnN0YWxsL3BrLWRlYnVnaW5mby1pbnN0YWxsLmMKLUBAIC01MzIsMTEgKzUzMiwxMSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAlnX3R5cGVfaW5pdCAoKTsKLS0KLSsjZW5kaWYKLSAJY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3IChOVUxMKTsKLSAJLyogVFJBTlNMQVRPUlM6IHRvb2wgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBjb21tYW5kIGlzIG5vdCBmb3VuZCAqLwotIAlnX29wdGlvbl9jb250ZXh0X3NldF9zdW1tYXJ5IChjb250ZXh0LCBfKCJQYWNrYWdlS2l0IERlYnVnaW5mbyBJbnN0YWxsZXIiKSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3BrLWJhY2tlbmQuYyBiL3NyYy9way1iYWNrZW5kLmMKLWluZGV4IDUyMTZiNjMuLjViODNhZTQgMTAwNjQ0Ci0tLS0gYS9zcmMvcGstYmFja2VuZC5jCi0rKysgYi9zcmMvcGstYmFja2VuZC5jCi1AQCAtMjEwMyw3ICsyMTAzLDE0IEBAIHBrX2JhY2tlbmRfdGhyZWFkX2NyZWF0ZSAoUGtCYWNrZW5kICpiYWNrZW5kLCBQa0JhY2tlbmRUaHJlYWRGdW5jIGZ1bmMpCi0gCQllZ2dfd2FybmluZyAoImFscmVhZHkgaGFzIHRocmVhZCIpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzMiwwKQotIAliYWNrZW5kLT5wcml2LT50aHJlYWQgPSBnX3RocmVhZF9jcmVhdGUgKChHVGhyZWFkRnVuYykgZnVuYywgYmFja2VuZCwgRkFMU0UsIE5VTEwpOwotKyNlbHNlCi0rCWJhY2tlbmQtPnByaXYtPnRocmVhZCA9IGdfdGhyZWFkX3RyeV9uZXcgKCJkYWVtb24gdGhyZWFkIiwgKEdUaHJlYWRGdW5jKSBmdW5jLCBiYWNrZW5kLCBOVUxMKTsKLSsJaWYgKGJhY2tlbmQtPnByaXYtPnRocmVhZCAhPSBOVUxMKSB7Ci0rCQlnX3RocmVhZF91bnJlZihiYWNrZW5kLT5wcml2LT50aHJlYWQpOwotKwl9Ci0rI2VuZGlmCi0gCWlmIChiYWNrZW5kLT5wcml2LT50aHJlYWQgPT0gTlVMTCkgewotIAkJZWdnX3dhcm5pbmcgKCJmYWlsZWQgdG8gY3JlYXRlIHRocmVhZCIpOwotIAkJcmV0dXJuIEZBTFNFOwotZGlmZiAtLWdpdCBhL3NyYy9way1tYWluLmMgYi9zcmMvcGstbWFpbi5jCi1pbmRleCA0Yzc1OGNkLi44ZmEyNDgyIDEwMDY0NAotLS0tIGEvc3JjL3BrLW1haW4uYwotKysrIGIvc3JjL3BrLW1haW4uYwotQEAgLTIxOSwxMiArMjE5LDEyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWJpbmR0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gCWJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwotIAl0ZXh0ZG9tYWluIChHRVRURVhUX1BBQ0tBR0UpOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzIsMCkKLSAJaWYgKCEgZ190aHJlYWRfc3VwcG9ydGVkICgpKQotIAkJZ190aHJlYWRfaW5pdCAoTlVMTCk7Ci0gCWRidXNfZ190aHJlYWRfaW5pdCAoKTsKLSAJZ190eXBlX2luaXQgKCk7Ci0tCi0rI2VuZGlmCi0gCS8qIFRSQU5TTEFUT1JTOiBkZXNjcmliaW5nIHRoZSBzZXJ2aWNlIHRoYXQgaXMgcnVubmluZyAqLwotIAljb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKF8oIlBhY2thZ2VLaXQgc2VydmljZSIpKTsKLSAJZ19vcHRpb25fY29udGV4dF9hZGRfbWFpbl9lbnRyaWVzIChjb250ZXh0LCBvcHRpb25zLCBOVUxMKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvY29uZmlndXJlZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42L2NvbmZpZ3VyZWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhmOTU5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvY29uZmlndXJlZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IFBhY2thZ2VLaXQtMC42LjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUGFja2FnZUtpdC0wLjYuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTA0IDE2OjMyOjE4LjAwMDAwMDAwMCArMDAwMAotKysrIFBhY2thZ2VLaXQtMC42LjAvY29uZmlndXJlLmFjCTIwMTAtMDEtMjkgMTE6MzM6NDguMDAwMDAwMDAwICswMDAwCi1AQCAtOTAsNyArOTAsNyBAQAotIAkJCQkJCQllbmFibGVfc3RyaWN0PSRkZWZhdWx0X3N0cmljdCkKLSBpZiB0ZXN0IHgkZW5hYmxlX3N0cmljdCAhPSB4bm87IHRoZW4KLSAJaWYgdGVzdCAiJEdDQyIgPSAieWVzIjsgdGhlbgotLQkJV0FSTklOR0ZMQUdTX0NQUD0iJFdBUk5JTkdGTEFHU19DUFAgLVdlcnJvciIKLSsJCToKLSAJZmkKLSBmaQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42L29wa2dmaXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi9vcGtnZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNzNhMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42L29wa2dmaXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyMiArMCwwIEBACi1JbmRleDogUGFja2FnZUtpdC0wLjYuMC9iYWNrZW5kcy9vcGtnL3BrLWJhY2tlbmQtb3BrZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUGFja2FnZUtpdC0wLjYuMC5vcmlnL2JhY2tlbmRzL29wa2cvcGstYmFja2VuZC1vcGtnLmMJMjAxMC0wMS0yOSAwOTozOTozMy4wMDAwMDAwMDAgKzAwMDAKLSsrKyBQYWNrYWdlS2l0LTAuNi4wL2JhY2tlbmRzL29wa2cvcGstYmFja2VuZC1vcGtnLmMJMjAxMC0wMS0yOSAxMTozMDo1MS4wMDAwMDAwMDAgKzAwMDAKLUBAIC0yOSw4ICsyOSw3IEBACi0gCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPGxpYm9wa2cvb3BrZy5oPgotIAotLXN0YXRpYyBvcGtnX3QgKm9wa2c7Ci0tCi0gZW51bSB7Ci0gCVNFQVJDSF9OQU1FLAotIAlTRUFSQ0hfREVTQ1JJUFRJT04sCi1AQCAtNjIsNyArNjAsNyBAQAotICAqIGNoZWNrIGFuIG9wa2cgcGFja2FnZSBmb3Iga25vd24gR1VJIGRlcGVuZGFuY2llcwotICAqLwotIHN0YXRpYyBnYm9vbGVhbgotLW9wa2dfaXNfZ3VpX3BrZyAob3BrZ19wYWNrYWdlX3QgKnBrZykKLStvcGtnX2lzX2d1aV9wa2cgKHBrZ190ICpwa2cpCi0gewotIAotICAgLyogVE9ETzogY2hlY2sgYXBwcm9wcmlhdGUgdGFnICovCi1AQCAtODQsNyArODIsNyBAQAotICAqIGNoZWNrIGFuIG9wa2cgcGFja2FnZSB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBkZXZlbG9wbWVudCBwYWNrYWdlCi0gICovCi0gc3RhdGljIGdib29sZWFuCi0tb3BrZ19pc19kZXZlbF9wa2cgKG9wa2dfcGFja2FnZV90ICpwa2cpCi0rb3BrZ19pc19kZXZlbF9wa2cgKHBrZ190ICpwa2cpCi0gewotICAgaWYgKGdfc3RycnN0ciAocGtnLT5uYW1lLCAiLWRldiIpKQotICAgICAgIHJldHVybiBUUlVFOwotQEAgLTEwNSw3ICsxMDMsNyBAQAotICAqIHJldHVybnMgdHJ1ZSBpZiB0aGUgdGFnIGlzIHByZXNlbnQKLSAgKi8KLSBzdGF0aWMgZ2Jvb2xlYW4gCi0tb3BrZ19jaGVja190YWcgKG9wa2dfcGFja2FnZV90ICpwa2csIGNvbnN0IGdjaGFyICp0YWcpCi0rb3BrZ19jaGVja190YWcgKHBrZ190ICpwa2csIGNvbnN0IGdjaGFyICp0YWcpCi0gewotIAlpZiAocGtnLT50YWdzICYmIHRhZykKLSAJCXJldHVybiAoZ19zdHJyc3RyIChwa2ctPnRhZ3MsIHRhZykgIT0gTlVMTCk7Ci1AQCAtMTE4LDcgKzExNiw3IEBACi0gewotIAlzd2l0Y2ggKGVycikKLSAJewotLQljYXNlIE9QS0dfTk9fRVJST1I6Ci0rLyoJY2FzZSBPUEtHX05PX0VSUk9SOgotIAkJYnJlYWs7Ci0gCWNhc2UgT1BLR19QQUNLQUdFX05PVF9JTlNUQUxMRUQ6Ci0gCQlwa19iYWNrZW5kX2Vycm9yX2NvZGUgKGJhY2tlbmQsIFBLX0VSUk9SX0VOVU1fUEFDS0FHRV9OT1RfSU5TVEFMTEVELCBOVUxMKTsKLUBAIC0xNDAsNyArMTM4LDcgQEAKLSAJCWJyZWFrOwotIAljYXNlIE9QS0dfUEFDS0FHRV9OT1RfQVZBSUxBQkxFOgotIAkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLCBQS19FUlJPUl9FTlVNX1BBQ0tBR0VfTk9UX0ZPVU5ELCBOVUxMKTsKLS0JCWJyZWFrOwotKwkJYnJlYWs7Ki8KLSAJZGVmYXVsdDoKLSAJCW9wa2dfdW5rbm93bl9lcnJvciAoYmFja2VuZCwgZXJyLCAiVXBkYXRlIHBhY2thZ2UiKTsKLSAJfQotQEAgLTE1Miw3ICsxNTAsNyBAQAotIHN0YXRpYyB2b2lkCi0gYmFja2VuZF9pbml0aWFsaXplIChQa0JhY2tlbmQgKmJhY2tlbmQpCi0gewotLQlvcGtnID0gb3BrZ19uZXcgKCk7Ci0rCWludCBvcGtnID0gb3BrZ19uZXcgKCk7Ci0gCi0gCWlmICghb3BrZykgewotIAkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLAotQEAgLTE2Miw4ICsxNjAsOCBAQAotIAl9Ci0gCi0gI2lmZGVmIE9QS0dfT0ZGTElORV9ST09UCi0tCW9wa2dfc2V0X29wdGlvbiAob3BrZywgKGNoYXIgKikgIm9mZmxpbmVfcm9vdCIsIE9QS0dfT0ZGTElORV9ST09UKTsKLS0Jb3BrZ19yZV9yZWFkX2NvbmZpZ19maWxlcyAob3BrZyk7Ci0rCW9wa2dfc2V0X29wdGlvbiAoKGNoYXIgKikgIm9mZmxpbmVfcm9vdCIsIE9QS0dfT0ZGTElORV9ST09UKTsKLSsJb3BrZ19yZV9yZWFkX2NvbmZpZ19maWxlcyAoKTsKLSAjZW5kaWYKLSAKLSB9Ci1AQCAtMTc0LDIyICsxNzIsMjIgQEAKLSBzdGF0aWMgdm9pZAotIGJhY2tlbmRfZGVzdHJveSAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0Jb3BrZ19mcmVlIChvcGtnKTsKLSsJb3BrZ19mcmVlICgpOwotIH0KLSAKLSAKLSBzdGF0aWMgdm9pZAotLXBrX29wa2dfcHJvZ3Jlc3NfY2IgKG9wa2dfdCAqX29wa2csIGNvbnN0IG9wa2dfcHJvZ3Jlc3NfZGF0YV90ICpwZGF0YSwgdm9pZCAqZGF0YSkKLStwa19vcGtnX3Byb2dyZXNzX2NiIChjb25zdCBvcGtnX3Byb2dyZXNzX2RhdGFfdCAqcGRhdGEsIHZvaWQgKmRhdGEpCi0gewotLQlQa0JhY2tlbmQgKmJhY2tlbmQgPSBQS19CQUNLRU5EIChkYXRhKTsKLSsJUGtCYWNrZW5kICpiYWNrZW5kID0gKFBrQmFja2VuZCopIGRhdGE7Ci0gCWlmICghYmFja2VuZCkKLSAJCXJldHVybjsKLSAKLSAJcGtfYmFja2VuZF9zZXRfcGVyY2VudGFnZSAoYmFja2VuZCwgcGRhdGEtPnBlcmNlbnRhZ2UpOwotLQlpZiAocGRhdGEtPnBhY2thZ2UpCi0rCWlmIChwZGF0YS0+cGtnKQotIAl7Ci0gCQlnY2hhciAqdWlkOwotLQkJb3BrZ19wYWNrYWdlX3QgKnBrZyA9IHBkYXRhLT5wYWNrYWdlOwotKwkJcGtnX3QgKnBrZyA9IHBkYXRhLT5wa2c7Ci0gCQlnaW50IHN0YXR1cyA9IFBLX0lORk9fRU5VTV9VTktOT1dOOwotIAotIAkJdWlkID0gZ19zdHJkdXBfcHJpbnRmICgiJXM7JXM7JXM7IiwKLUBAIC0yMjUsMTIgKzIyMywxMiBAQAotIHsKLSAJaW50IHJldDsKLSAKLS0JcmV0ID0gb3BrZ191cGRhdGVfcGFja2FnZV9saXN0cyAob3BrZywgcGtfb3BrZ19wcm9ncmVzc19jYiwgYmFja2VuZCk7Ci0rCXJldCA9IG9wa2dfdXBkYXRlX3BhY2thZ2VfbGlzdHMgKHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotIAotIAlpZiAocmV0KSB7Ci0tCQlpZiAocmV0ID09IE9QS0dfRE9XTkxPQURfRkFJTEVEKQotLQkJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9SRVBPX05PVF9BVkFJTEFCTEUsIE5VTEwpOwotLQkJZWxzZQotKy8vCQlpZiAocmV0ID09IE9QS0dfRE9XTkxPQURfRkFJTEVEKQotKy8vCQkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLCBQS19FUlJPUl9FTlVNX1JFUE9fTk9UX0FWQUlMQUJMRSwgTlVMTCk7Ci0rLy8JCWVsc2UKLSAJCQlvcGtnX3Vua25vd25fZXJyb3IgKGJhY2tlbmQsIHJldCwgIlJlZnJlc2hpbmcgY2FjaGUiKTsKLSAJfQotIAlwa19iYWNrZW5kX2ZpbmlzaGVkIChiYWNrZW5kKTsKLUBAIC0yNTYsNyArMjU0LDcgQEAKLSAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXBrX29wa2dfcGFja2FnZV9saXN0X2NiIChvcGtnX3QgKl9vcGtnLCBvcGtnX3BhY2thZ2VfdCAqcGtnLCB2b2lkICpkYXRhKQotK3BrX29wa2dfcGFja2FnZV9saXN0X2NiIChwa2dfdCAqcGtnLCB2b2lkICpkYXRhKQotIHsKLSAJU2VhcmNoUGFyYW1zICpwYXJhbXMgPSAoU2VhcmNoUGFyYW1zKikgZGF0YTsKLSAJZ2NoYXIgKnVpZDsKLUBAIC0yOTgsNyArMjk2LDcgQEAKLSAJdWlkID0gZ19zdHJkdXBfcHJpbnRmICgiJXM7JXM7JXM7IiwKLSAJCXBrZy0+bmFtZSwgcGtnLT52ZXJzaW9uLCBwa2ctPmFyY2hpdGVjdHVyZSk7Ci0gCi0tCWlmIChwa2ctPmluc3RhbGxlZCkKLSsJaWYgKHBrZy0+c3RhdGVfc3RhdHVzID09IFNTX0lOU1RBTExFRCkKLSAJCXN0YXR1cyA9IFBLX0lORk9fRU5VTV9JTlNUQUxMRUQ7Ci0gCWVsc2UKLSAJCXN0YXR1cyA9IFBLX0lORk9fRU5VTV9BVkFJTEFCTEU7Ci1AQCAtMzE4LDEwICszMTYsMTAgQEAKLSAgICAgICAgICAgICAgICAgb3BrZ19pc19ndWlfcGtnIChwa2cpKQotIAkJZ290byBlbmRfaGFuZGxlOwotIAlpZiAocGtfYml0ZmllbGRfY29udGFpbihmaWx0ZXJzLCBQS19GSUxURVJfRU5VTV9JTlNUQUxMRUQpICYmIAotLSAgICAgICAgICAgICAgICAoIXBrZy0+aW5zdGFsbGVkKSkKLSsgICAgICAgICAgICAgICAgKHBrZy0+c3RhdGVfc3RhdHVzICE9IFNTX0lOU1RBTExFRCkpCi0gCQlnb3RvIGVuZF9oYW5kbGU7Ci0gCWlmIChwa19iaXRmaWVsZF9jb250YWluKGZpbHRlcnMsIFBLX0ZJTFRFUl9FTlVNX05PVF9JTlNUQUxMRUQpICYmIAotLSAgICAgICAgICAgICAgICAocGtnLT5pbnN0YWxsZWQpKQotKyAgICAgICAgICAgICAgICAocGtnLT5zdGF0ZV9zdGF0dXMgPT0gU1NfSU5TVEFMTEVEKSkKLSAJCWdvdG8gZW5kX2hhbmRsZTsKLSAKLSAJcGtfYmFja2VuZF9wYWNrYWdlIChwYXJhbXMtPmJhY2tlbmQsIHN0YXR1cywgdWlkLCBwa2ctPmRlc2NyaXB0aW9uKTsKLUBAIC0zMzgsNyArMzM2LDcgQEAKLSAKLSAJcGFyYW1zID0gcGtfYmFja2VuZF9nZXRfcG9pbnRlciAoYmFja2VuZCwgInNlYXJjaC1wYXJhbXMiKTsKLSAKLS0Jb3BrZ19saXN0X3BhY2thZ2VzIChvcGtnLCBwa19vcGtnX3BhY2thZ2VfbGlzdF9jYiwgcGFyYW1zKTsKLSsJb3BrZ19saXN0X3BhY2thZ2VzIChwa19vcGtnX3BhY2thZ2VfbGlzdF9jYiwgcGFyYW1zKTsKLSAKLSAJcGtfYmFja2VuZF9maW5pc2hlZCAocGFyYW1zLT5iYWNrZW5kKTsKLSAKLUBAIC0zNDksNyArMzQ3LDcgQEAKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1iYWNrZW5kX3NlYXJjaF9uYW1lIChQa0JhY2tlbmQgKmJhY2tlbmQsIFBrQml0ZmllbGQgZmlsdGVycywgY29uc3QgZ2NoYXIgKnNlYXJjaCkKLStiYWNrZW5kX3NlYXJjaF9uYW1lIChQa0JhY2tlbmQgKmJhY2tlbmQsIFBrQml0ZmllbGQgZmlsdGVycywgZ2NoYXIgKipzZWFyY2gpCi0gewotIAlTZWFyY2hQYXJhbXMgKnBhcmFtczsKLSAKLUBAIC0zNjAsNyArMzU4LDcgQEAKLSAJcGFyYW1zID0gZ19uZXcwIChTZWFyY2hQYXJhbXMsIDEpOwotIAlwYXJhbXMtPmZpbHRlcnMgPSBmaWx0ZXJzOwotIAlwYXJhbXMtPnNlYXJjaF90eXBlID0gU0VBUkNIX05BTUU7Ci0tCXBhcmFtcy0+bmVlZGxlID0gZ191dGY4X3N0cmRvd24gKHNlYXJjaCwgLTEpOwotKwlwYXJhbXMtPm5lZWRsZSA9IGdfdXRmOF9zdHJkb3duIChzZWFyY2hbMF0sIC0xKTsKLSAJcGFyYW1zLT5iYWNrZW5kID0gYmFja2VuZDsKLSAKLSAJcGtfYmFja2VuZF9zZXRfcG9pbnRlciAoYmFja2VuZCwgInNlYXJjaC1wYXJhbXMiLCBwYXJhbXMpOwotQEAgLTM3MSw3ICszNjksNyBAQAotICAqIGJhY2tlbmRfc2VhcmNoX2Rlc2NyaXB0aW9uOgotICAqLwotIHN0YXRpYyB2b2lkCi0tYmFja2VuZF9zZWFyY2hfZGVzY3JpcHRpb24gKFBrQmFja2VuZCAqYmFja2VuZCwgUGtCaXRmaWVsZCBmaWx0ZXJzLCBjb25zdCBnY2hhciAqc2VhcmNoKQotK2JhY2tlbmRfc2VhcmNoX2Rlc2NyaXB0aW9uIChQa0JhY2tlbmQgKmJhY2tlbmQsIFBrQml0ZmllbGQgZmlsdGVycywgZ2NoYXIgKipzZWFyY2gpCi0gewotIAlTZWFyY2hQYXJhbXMgKnBhcmFtczsKLSAKLUBAIC0zODIsNyArMzgwLDcgQEAKLSAJcGFyYW1zID0gZ19uZXcwIChTZWFyY2hQYXJhbXMsIDEpOwotIAlwYXJhbXMtPmZpbHRlcnMgPSBmaWx0ZXJzOwotIAlwYXJhbXMtPnNlYXJjaF90eXBlID0gU0VBUkNIX0RFU0NSSVBUSU9OOwotLQlwYXJhbXMtPm5lZWRsZSA9IGdfdXRmOF9zdHJkb3duIChzZWFyY2gsIC0xKTsKLSsJcGFyYW1zLT5uZWVkbGUgPSBnX3V0Zjhfc3RyZG93biAoc2VhcmNoWzBdLCAtMSk7Ci0gCXBhcmFtcy0+YmFja2VuZCA9IGJhY2tlbmQ7Ci0gCi0gCXBrX2JhY2tlbmRfc2V0X3BvaW50ZXIgKGJhY2tlbmQsICJzZWFyY2gtcGFyYW1zIiwgcGFyYW1zKTsKLUBAIC0zOTAsNyArMzg4LDcgQEAKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1iYWNrZW5kX3NlYXJjaF9ncm91cCAoUGtCYWNrZW5kICpiYWNrZW5kLCBQa0JpdGZpZWxkIGZpbHRlcnMsIGNvbnN0IGdjaGFyICpzZWFyY2gpCi0rYmFja2VuZF9zZWFyY2hfZ3JvdXAgKFBrQmFja2VuZCAqYmFja2VuZCwgUGtCaXRmaWVsZCBmaWx0ZXJzLCBnY2hhciAqKnNlYXJjaCkKLSB7Ci0gCVNlYXJjaFBhcmFtcyAqcGFyYW1zOwotIAotQEAgLTQwMSw3ICszOTksNyBAQAotIAlwYXJhbXMgPSBnX25ldzAgKFNlYXJjaFBhcmFtcywgMSk7Ci0gCXBhcmFtcy0+ZmlsdGVycyA9IGZpbHRlcnM7Ci0gCXBhcmFtcy0+c2VhcmNoX3R5cGUgPSBTRUFSQ0hfVEFHOwotLQlwYXJhbXMtPm5lZWRsZSA9IGdfc3RyZHVwX3ByaW50ZiAoImdyb3VwOjolcyIsIHNlYXJjaCk7Ci0rCXBhcmFtcy0+bmVlZGxlID0gZ19zdHJkdXBfcHJpbnRmICgiZ3JvdXA6OiVzIiwgc2VhcmNoWzBdKTsKLSAJcGFyYW1zLT5iYWNrZW5kID0gYmFja2VuZDsKLSAKLSAJcGtfYmFja2VuZF9zZXRfcG9pbnRlciAoYmFja2VuZCwgInNlYXJjaC1wYXJhbXMiLCBwYXJhbXMpOwotQEAgLTQxMiw5ICs0MTAsOSBAQAotIHN0YXRpYyBnYm9vbGVhbgotIGJhY2tlbmRfaW5zdGFsbF9wYWNrYWdlc190aHJlYWQgKFBrQmFja2VuZCAqYmFja2VuZCkKLSB7Ci0tCVBrUGFja2FnZUlkICpwaTsKLSAJZ2ludCBlcnIsIGk7Ci0gCWdjaGFyICoqcGFja2FnZV9pZHM7Ci0rCWdjaGFyICoqcGFydHM7Ci0gCi0gCXBhY2thZ2VfaWRzID0gcGtfYmFja2VuZF9nZXRfc3RydiAoYmFja2VuZCwgInBraWRzIik7Ci0gCi1AQCAtNDI0LDEzICs0MjIsMTMgQEAKLSAJewotIAkJcGtfYmFja2VuZF9wYWNrYWdlIChiYWNrZW5kLCBQS19JTkZPX0VOVU1fSU5TVEFMTElORywgcGFja2FnZV9pZHNbaV0sIE5VTEwpOwotIAotLQkJcGkgPSBwa19wYWNrYWdlX2lkX25ld19mcm9tX3N0cmluZyAocGFja2FnZV9pZHNbaV0pOwotKwkJcGFydHMgPSBwa19wYWNrYWdlX2lkX3NwbGl0IChwYWNrYWdlX2lkc1tpXSk7Ci0gCi0tCQllcnIgPSBvcGtnX2luc3RhbGxfcGFja2FnZSAob3BrZywgcGktPm5hbWUsIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotKwkJZXJyID0gb3BrZ19pbnN0YWxsX3BhY2thZ2UgKHBhcnRzW1BLX1BBQ0tBR0VfSURfTkFNRV0sIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotIAkJaWYgKGVycikKLSAJCQloYW5kbGVfaW5zdGFsbF9lcnJvciAoYmFja2VuZCwgZXJyKTsKLSAKLS0JCXBrX3BhY2thZ2VfaWRfZnJlZSAocGkpOwotKwkJZ19zdHJmcmVldiAocGFydHMpOwotIAkJaWYgKGVyciAhPSAwKQotIAkJCWJyZWFrOwotIAl9Ci1AQCAtNDUzLDkgKzQ1MSw5IEBACi0gc3RhdGljIGdib29sZWFuCi0gYmFja2VuZF9yZW1vdmVfcGFja2FnZXNfdGhyZWFkIChQa0JhY2tlbmQgKmJhY2tlbmQpCi0gewotLQlQa1BhY2thZ2VJZCAqcGk7Ci0gCWdpbnQgZXJyLCBpOwotIAlnY2hhciAqKnBhY2thZ2VfaWRzOwotKwlnY2hhciAqKnBhcnRzOwotIAlnYm9vbGVhbiBhbGxvd19kZXBzOwotIAlnYm9vbGVhbiBhdXRvcmVtb3ZlOwotIAlncG9pbnRlciAqZGF0YTsKLUBAIC00NjcsMjkgKzQ2NSwzMCBAQAotIAlhdXRvcmVtb3ZlID0gR1BPSU5URVJfVE9fSU5UIChkYXRhWzJdKTsKLSAJZ19mcmVlIChkYXRhKTsKLSAKLS0Jb3BrZ19zZXRfb3B0aW9uIChvcGtnLCAoY2hhciAqKSJhdXRvcmVtb3ZlIiwgJmF1dG9yZW1vdmUpOwotLQlvcGtnX3NldF9vcHRpb24gKG9wa2csIChjaGFyICopImZvcmNlX3JlbW92YWxfb2ZfZGVwZW5kZW50X3BhY2thZ2VzIiwgJmFsbG93X2RlcHMpOwotKwlvcGtnX3NldF9vcHRpb24gKChjaGFyICopImF1dG9yZW1vdmUiLCAmYXV0b3JlbW92ZSk7Ci0rCW9wa2dfc2V0X29wdGlvbiAoKGNoYXIgKikiZm9yY2VfcmVtb3ZhbF9vZl9kZXBlbmRlbnRfcGFja2FnZXMiLCAmYWxsb3dfZGVwcyk7Ci0gCi0gCWVyciA9IDA7Ci0gCi0gCWZvciAoaSA9IDA7IHBhY2thZ2VfaWRzW2ldOyBpKyspCi0gCXsKLS0JCXBpID0gcGtfcGFja2FnZV9pZF9uZXdfZnJvbV9zdHJpbmcgKHBhY2thZ2VfaWRzW2ldKTsKLSAJCXBrX2JhY2tlbmRfcGFja2FnZSAoYmFja2VuZCwgUEtfSU5GT19FTlVNX1JFTU9WSU5HLCBwYWNrYWdlX2lkc1tpXSwgTlVMTCk7Ci0gCi0tCQllcnIgPSBvcGtnX3JlbW92ZV9wYWNrYWdlIChvcGtnLCBwaS0+bmFtZSwgcGtfb3BrZ19wcm9ncmVzc19jYiwgYmFja2VuZCk7Ci0rCQlwYXJ0cyA9IHBrX3BhY2thZ2VfaWRfc3BsaXQgKHBhY2thZ2VfaWRzW2ldKTsKLSsKLSsJCWVyciA9IG9wa2dfcmVtb3ZlX3BhY2thZ2UgKHBhcnRzW1BLX1BBQ0tBR0VfSURfTkFNRV0sIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotIAotIAkJc3dpdGNoIChlcnIpCi0gCQl7Ci0tCQljYXNlIE9QS0dfTk9fRVJST1I6Ci0tCQkJYnJlYWs7Ci0tCQljYXNlIE9QS0dfUEFDS0FHRV9OT1RfSU5TVEFMTEVEOgotLQkJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9QQUNLQUdFX05PVF9JTlNUQUxMRUQsIE5VTEwpOwotLQkJCWJyZWFrOwotKwkJLy9jYXNlIE9QS0dfTk9fRVJST1I6Ci0rCQkvLwlicmVhazsKLSsJCS8vY2FzZSBPUEtHX1BBQ0tBR0VfTk9UX0lOU1RBTExFRDoKLSsJCS8vCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9QQUNLQUdFX05PVF9JTlNUQUxMRUQsIE5VTEwpOwotKwkJLy8JYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCW9wa2dfdW5rbm93bl9lcnJvciAoYmFja2VuZCwgZXJyLCAiUmVtb3ZlIik7Ci0gCQl9Ci0tCQlwa19wYWNrYWdlX2lkX2ZyZWUgKHBpKTsKLSsJCWdfc3RyZnJlZXYgKHBhcnRzKTsKLSAKLSAJCWlmIChlcnIgIT0gMCkKLSAJCQlicmVhazsKLUBAIC01NDAsNyArNTM5LDcgQEAKLSAJZ2ludCBlcnI7Ci0gCi0gCS8qIEZJWE1FOiBzdXBwb3J0IG9ubHlfdHJ1c3RlZCAqLwotLQllcnIgPSBvcGtnX3VwZ3JhZGVfYWxsIChvcGtnLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSsJZXJyID0gb3BrZ191cGdyYWRlX2FsbCAocGtfb3BrZ19wcm9ncmVzc19jYiwgYmFja2VuZCk7Ci0gCi0gCWlmIChlcnIpCi0gCQlvcGtnX3Vua25vd25fZXJyb3IgKGJhY2tlbmQsIGVyciwgIlVwZ3JhZGluZyBzeXN0ZW0iKTsKLUBAIC01NjQsMjkgKzU2MywyOCBAQAotIHN0YXRpYyBnYm9vbGVhbgotIGJhY2tlbmRfdXBkYXRlX3BhY2thZ2VfdGhyZWFkIChQa0JhY2tlbmQgKmJhY2tlbmQpCi0gewotLQlQa1BhY2thZ2VJZCAqcGk7Ci0rICAgICAgICBnY2hhciAqKnBhcnRzOwotIAlnaW50IGVyciA9IDA7Ci0gCWNvbnN0IGdjaGFyICpwYWNrYWdlX2lkOwotIAotIAkvKiBGSVhNRTogc3VwcG9ydCBvbmx5X3RydXN0ZWQgKi8KLSAJcGFja2FnZV9pZCA9IHBrX2JhY2tlbmRfZ2V0X3N0cmluZyAoYmFja2VuZCwgInBrZ2lkIik7Ci0tCXBpID0gcGtfcGFja2FnZV9pZF9uZXdfZnJvbV9zdHJpbmcgKHBhY2thZ2VfaWQpOwotKwlwYXJ0cyA9IHBrX3BhY2thZ2VfaWRfc3BsaXQgKHBhY2thZ2VfaWQpOwotIAotLQlpZiAoIXBpLT5uYW1lIHx8ICFwaS0+dmVyc2lvbikKLSsJaWYgKCFwYXJ0cykKLSAJewotIAkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLCBQS19FUlJPUl9FTlVNX1BBQ0tBR0VfTk9UX0ZPVU5ELAotIAkJCQkiUGFja2FnZSBub3QgZm91bmQiKTsKLS0JCXBrX3BhY2thZ2VfaWRfZnJlZSAocGkpOwotIAkJcGtfYmFja2VuZF9maW5pc2hlZCAoYmFja2VuZCk7Ci0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0KLSAKLS0JZXJyID0gb3BrZ191cGdyYWRlX3BhY2thZ2UgKG9wa2csIHBpLT5uYW1lLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSsJZXJyID0gb3BrZ191cGdyYWRlX3BhY2thZ2UgKHBhcnRzW1BLX1BBQ0tBR0VfSURfTkFNRV0sIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotIAlpZiAoZXJyKQotIAkJaGFuZGxlX2luc3RhbGxfZXJyb3IgKGJhY2tlbmQsIGVycik7Ci0gCi0gCi0tCXBrX3BhY2thZ2VfaWRfZnJlZSAocGkpOwotKwlnX3N0cmZyZWV2IChwYXJ0cyk7Ci0gCXBrX2JhY2tlbmRfZmluaXNoZWQgKGJhY2tlbmQpOwotIAlyZXR1cm4gKGVyciAhPSAwKTsKLSB9Ci1AQCAtNjEwLDEzICs2MDgsMTMgQEAKLSAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXBrX29wa2dfbGlzdF91cGdyYWRhYmxlX2NiIChvcGtnX3QgKl9vcGtnLCBvcGtnX3BhY2thZ2VfdCAqcGtnLCB2b2lkICpkYXRhKQotK3BrX29wa2dfbGlzdF91cGdyYWRhYmxlX2NiIChwa2dfdCAqcGtnLCB2b2lkICpkYXRhKQotIHsKLS0JUGtCYWNrZW5kICpiYWNrZW5kID0gUEtfQkFDS0VORCAoZGF0YSk7Ci0rCVBrQmFja2VuZCAqYmFja2VuZCA9IChQa0JhY2tlbmQqKSBkYXRhOwotIAlnY2hhciAqdWlkOwotIAlnaW50IHN0YXR1czsKLSAKLS0JaWYgKHBrZy0+aW5zdGFsbGVkKQotKwlpZiAocGtnLT5zdGF0ZV9zdGF0dXMgPT0gU1NfSU5TVEFMTEVEKQotIAkJc3RhdHVzID0gUEtfSU5GT19FTlVNX0lOU1RBTExFRDsKLSAJZWxzZQotIAkJc3RhdHVzID0gUEtfSU5GT19FTlVNX0FWQUlMQUJMRTsKLUBAIC02MzEsNyArNjI5LDcgQEAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBiYWNrZW5kX2dldF91cGRhdGVzX3RocmVhZCAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0Jb3BrZ19saXN0X3VwZ3JhZGFibGVfcGFja2FnZXMgKG9wa2csIHBrX29wa2dfbGlzdF91cGdyYWRhYmxlX2NiLCBiYWNrZW5kKTsKLSsJb3BrZ19saXN0X3VwZ3JhZGFibGVfcGFja2FnZXMgKHBrX29wa2dfbGlzdF91cGdyYWRhYmxlX2NiLCBiYWNrZW5kKTsKLSAJcGtfYmFja2VuZF9maW5pc2hlZCAoYmFja2VuZCk7Ci0gCXJldHVybiBUUlVFOwotIH0KLUBAIC02NjgsMTYgKzY2NiwxOCBAQAotIHN0YXRpYyBnYm9vbGVhbgotIGJhY2tlbmRfZ2V0X2RldGFpbHNfdGhyZWFkIChQa0JhY2tlbmQgKmJhY2tlbmQpCi0gewotLQlQa1BhY2thZ2VJZCAqcGk7Ci0gCWdjaGFyICoqcGFja2FnZV9pZHM7Ci0rICAgICAgICBnY2hhciAqKnBhcnRzOwotIAlpbnQgZ3JvdXBfaW5kZXg7Ci0gCVBrR3JvdXBFbnVtIGdyb3VwID0gMDsKLS0Jb3BrZ19wYWNrYWdlX3QgKnBrZzsKLSsJcGtnX3QgKnBrZzsKLSAJZ2NoYXIgKm5ld2lkOwotIAotICAgICAgICAgcGFja2FnZV9pZHMgPSBwa19iYWNrZW5kX2dldF9zdHJ2KGJhY2tlbmQsICJwYWNrYWdlX2lkcyIpOwotLQlwaSA9IHBrX3BhY2thZ2VfaWRfbmV3X2Zyb21fc3RyaW5nIChwYWNrYWdlX2lkc1swXSk7Ci0tCWlmIChwaSA9PSBOVUxMKQotKwlwYXJ0cyA9IHBrX3BhY2thZ2VfaWRfc3BsaXQgKHBhY2thZ2VfaWRzWzBdKTsKLSsKLSsKLSsJaWYgKCFwYXJ0cykKLSAJewotIAkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLCBQS19FUlJPUl9FTlVNX1BBQ0tBR0VfSURfSU5WQUxJRCwgImludmFsaWQgcGFja2FnZSBpZCIpOwotIAkJcGtfYmFja2VuZF9maW5pc2hlZCAoYmFja2VuZCk7Ci1AQCAtNjg1LDggKzY4NSw4IEBACi0gCX0KLSAKLSAKLS0JcGtnID0gb3BrZ19maW5kX3BhY2thZ2UgKG9wa2csIHBpLT5uYW1lLCBwaS0+dmVyc2lvbiwgcGktPmFyY2gsIHBpLT5kYXRhKTsKLS0JcGtfcGFja2FnZV9pZF9mcmVlIChwaSk7Ci0rCXBrZyA9IG9wa2dfZmluZF9wYWNrYWdlIChwYXJ0c1tQS19QQUNLQUdFX0lEX05BTUVdLCBwYXJ0c1tQS19QQUNLQUdFX0lEX1ZFUlNJT05dLCBwYXJ0c1tQS19QQUNLQUdFX0lEX0FSQ0hdLCBwYXJ0c1tQS19QQUNLQUdFX0lEX0RBVEFdKTsKLSsJZ19zdHJmcmVldiAocGFydHMpOwotIAotIAlpZiAoIXBrZykKLSAJewotQEAgLTY5NSw3ICs2OTUsNyBAQAotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0gCi0tCW5ld2lkID0gZ19zdHJkdXBfcHJpbnRmICgiJXM7JXM7JXM7JXMiLCBwa2ctPm5hbWUsIHBrZy0+dmVyc2lvbiwgcGtnLT5hcmNoaXRlY3R1cmUsIHBrZy0+cmVwb3NpdG9yeSk7Ci0rCW5ld2lkID0gZ19zdHJkdXBfcHJpbnRmICgiJXM7JXM7JXM7JXMiLCBwa2ctPm5hbWUsIHBrZy0+dmVyc2lvbiwgcGtnLT5hcmNoaXRlY3R1cmUsIHBrZy0+c3JjLT5uYW1lKTsKLSAKLSAJaWYgKHBrZy0+dGFncykgewotIAkJZm9yIChncm91cF9pbmRleCA9IDA7IGdyb3VwIDwgUEtfR1JPVVBfRU5VTV9MQVNUOyBncm91cF9pbmRleCsrKSB7Ci1AQCAtNzA2LDkgKzcwNiw4IEBACi0gCQl9Ci0gCX0KLSAKLS0JcGtfYmFja2VuZF9kZXRhaWxzIChiYWNrZW5kLCBuZXdpZCwgTlVMTCwgZ3JvdXAsIHBrZy0+ZGVzY3JpcHRpb24sIHBrZy0+dXJsLCBwa2ctPnNpemUpOwotKwlwa19iYWNrZW5kX2RldGFpbHMgKGJhY2tlbmQsIG5ld2lkLCBOVUxMLCBncm91cCwgcGtnLT5kZXNjcmlwdGlvbiwgTlVMTCwgcGtnLT5zaXplKTsKLSAJZ19mcmVlIChuZXdpZCk7Ci0tCW9wa2dfcGFja2FnZV9mcmVlKHBrZyk7Ci0gCXBrX2JhY2tlbmRfZmluaXNoZWQgKGJhY2tlbmQpOwotIAlyZXR1cm4gVFJVRTsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXRfMC41LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXRfMC41LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjBjNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0XzAuNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJQYWNrYWdlS2l0IHBhY2thZ2UgbWFuYWdlbWVudCBhYnN0cmFjdGlvbiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAiZ3RrKyBweXRob24gcG9sa2l0IGRidXMgZGJ1cy1nbGliIGdsaWItMi4wIHNxbGl0ZTMgb3BrZyBpbnRsdG9vbCBpbnRsdG9vbC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJvcGtnIGJhc2giCi0KLWluaGVyaXQgZ25vbWUgcHl0aG9ubmF0aXZlCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvUGFja2FnZUtpdC9yZWxlYXNlcy9QYWNrYWdlS2l0LSR7UFZ9LnRhci5iejI7bmFtZT1hcmNoaXZlIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1jYWxsLWRlcHJlY2F0ZWQtZ2xpYi1mdW5jdGlvbnMtYW5kLXVzZS10aGUtbmV3LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjMzYTMxMjdlOWVkNDFlMjY2NzE3ODZhZWU5ZmU1NmZmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGRhZTQxNDkzZGZiMDExNDQyNzQ2ZDI1MmIzNDM1YmYzMjA0ZTE3YmY3YzQ3ZTM5NmY5MGZiZDIxNTI2MGUxNCIKLQotUyA9ICIke1dPUktESVJ9L1BhY2thZ2VLaXQtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3NlcnZpY2UtcGFja3NdID0gIi0tZW5hYmxlLXNlcnZpY2UtcGFja3MsLS1kaXNhYmxlLXNlcnZpY2UtcGFja3MsbGliYXJjaGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zZWN1cml0eS1mcmFtZXdvcms9ZHVtbXkgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kZWZhdWx0LWJhY2tlbmQ9b3BrZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb3BrZyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnVjayBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXF0IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3N0cmVhbWVyLXBsdWdpbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxvY2FsICBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5ldHdvcmttYW5hZ2VyIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2aWNlLXJlYmluZCBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9YTUxUTz1ubyBcCi0iCi0KLSNkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSMgICAgbWtkaXIgLXAgbTQKLSMgICAgZWNobyAiRVhUUkFfRElTVD0iID4gZ3RrLWRvYy5tYWtlCi0jfQotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGZvciBpIGluICQoZmluZCAuIC1uYW1lIE1ha2VmaWxlKSA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfTkFUSVZFfTo6ZyBcCi0gICAgICAgICAgICAgICAtZSBzOi91c3IvYmluL2ludGx0b29sLW1lcmdlOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9pbnRsdG9vbC1tZXJnZTpnIFwKLSAgICAgICAgICAgICAgICRpCi0gICAgZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0td2Vic2l0ZSIKLUZJTEVTXyR7UE59LXdlYnNpdGUgPSAiJHtkYXRhZGlyfS9QYWNrYWdlS2l0L3dlYnNpdGUiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXRob24iCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbioiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1ndGttb2R1bGUiCi1GSUxFU18ke1BOfS1ndGttb2R1bGUgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi8qLnNvIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BhY2thZ2VraXQtYmFja2VuZC8qLnNvICR7bGliZGlyfS9wbS11dGlscyAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvICR7ZGF0YWRpcn0vUG9saWN5S2l0ICR7ZGF0YWRpcn0vUGFja2FnZUtpdCIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BhY2thZ2VraXQtYmFja2VuZC8uZGVidWcvKi5zbyAke2xpYmRpcn0vZ3RrLTIuMC8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhY2thZ2VraXQtYmFja2VuZC8qLmxhICR7bGliZGlyfS9ndGstMi4wLyovKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3BhY2thZ2VraXQtYmFja2VuZC8qLmEgJHtsaWJkaXJ9L2d0ay0yLjAvKi8qLmEiCi0KLSMgUGFja2FnZUtpdC0wLjUuNi9iYWNrZW5kcy9vcGtnL3BrLWJhY2tlbmQtb3BrZy5jOjMxOjI2OiBmYXRhbCBlcnJvcjogbGlib3BrZy9vcGtnLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLVBOQkxBQ0tMSVNUW3BhY2thZ2VraXRdID89ICJCUk9LRU46IGRlcGVuZHMgb24gb2xkIGRlcHJlY2F0ZWQgbGlib3BrZyB3aGljaCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45NC5iYgppbmRleCA2NjA1NGEyLi4zYjU4OTM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45NC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45NC5iYgpAQCAtMyw2ICszLDcgQEAKIHVzaW5nIGZpbGVzLCBwaXBlcywgYW5kIHBzZXVkby10dHlzLiBCb3RoIHN5c3RlbSgpLXN0eWxlIGFuZCBzY3JpcHRlZCBcCiB1c2FnZXMgYXJlIHN1cHBvcnRlZCBhbmQgbWF5IGJlIG1peGVkLiBMaWtld2lzZSwgZnVuY3Rpb25hbCBhbmQgT08gQVBJIFwKIHN0eWxlcyBhcmUgYm90aCBzdXBwb3J0ZWQgYW5kIG1heSBiZSBtaXhlZC4iCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL0lQQy1SdW4iCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGViZDM3Y2FmNTM3ODFlOGI3MjIzZTZiOTliNjNmNGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4yNi8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMjYvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMjYvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4zMS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMjYvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjMxL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS43LzAwMDEtU3BlY2lmeS10YWctd2l0aC1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuNy8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9DVkUtMjAxNy0xNjY0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvQ1ZFLTIwMTctMTY2NDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFkMmEwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvQ1ZFLTIwMTctMTY2NDIucGF0Y2gKQEAgLTAsMCArMSw1MjQxIEBACitGcm9tIGYyZjkwNzY3MzExMzU1Y2FmYWJmZjYwNGE3YTg1N2NhNjBlZTNmMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIE5vdiAyMDE3IDIxOjE0OjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGJ1ZyAjNzUwNTUgT3V0LU9mLUJvdW5kcyBSZWFkIGluIHRpbWVsaWJfbWVyaWRpYW4oKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE2NjQyCitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CistLS0KKyBleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jICAgICAgICAgfCAxNTQ0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSAgICAgICAgfCAgICA0ICstCisgZXh0L2RhdGUvdGVzdHMvYnVnNTM0MzdfdmFyMy5waHB0IHwgICAgMiArLQorIGV4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQgICAgICB8ICAgMjAgKworIGV4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LndkZHggICAgICB8ICAgMTMgKworIDUgZmlsZXMgY2hhbmdlZCwgOTExIGluc2VydGlvbnMoKyksIDY3MiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUucGhwdAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4CisKK2RpZmYgLS1naXQgYS9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIGIvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYworaW5kZXggZjkyOTYxOS4uNmIxMTQxOCAxMDA2NDQKKy0tLSBhL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMKKysrKyBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMKK0BAIC0xLDQgKzEsNSBAQAorLS8qIEdlbmVyYXRlZCBieSByZTJjIDAuMTUuMyBvbiBUdWUgSnVsICA0IDIxOjE1OjE3IDIwMTcgKi8KKysvKiBHZW5lcmF0ZWQgYnkgcmUyYyAwLjE1LjMgb24gV2VkIE5vdiAyMiAyMToxNDo0NyAyMDE3ICovCisrI2xpbmUgMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgLyoKKyAgKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKKyAgKgorQEAgLTgzNyw5ICs4MzgsMTEgQEAgc3RhdGljIGludCBzY2FuKFNjYW5uZXIgKnMsIHRpbWVsaWJfdHpfZ2V0X3dyYXBwZXIgdHpfZ2V0X3dyYXBwZXIpCisgc3RkOgorIAlzLT50b2sgPSBjdXJzb3I7CisgCXMtPmxlbiA9IDA7CisrI2xpbmUgOTY1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAKKyAKKyAKKysjbGluZSA4NDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeworIAlZWUNUWVBFIHl5Y2g7CisgCXVuc2lnbmVkIGludCB5eWFjY2VwdCA9IDA7CitAQCAtOTYyLDE4ICs5NjUsMTkgQEAgeXkyOgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE2NTsKKy0JCQlnb3RvIHl5MTUyMTsKKysJCQlnb3RvIHl5MTUyMzsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdkJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKKyAJCQlpZiAoeXljaCA+PSAnYScpIGdvdG8geXkxNzA7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzA7CisrCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUzMjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7CisgCQl9CisgCX0KKyB5eTM6CisrI2xpbmUgMTY3MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCB0el9ub3RfZm91bmQ7CisgCQlERUJVR19PVVRQVVQoInR6Y29ycmVjdGlvbiB8IHR6Iik7CitAQCAtOTg2LDYgKzk5MCw3IEBAIHl5MzoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfVElNRVpPTkU7CisgCX0KKysjbGluZSA5OTQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdFJykgeworQEAgLTk5NSw3ICsxMDAwLDcgQEAgeXk0OgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE2NTsKKy0JCQlnb3RvIHl5MTUyMTsKKysJCQlnb3RvIHl5MTUyMzsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdkJykgeworQEAgLTEwMDMsNyArMTAwOCw3IEBAIHl5NDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjU7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjE7CisrCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUyMzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7CisgCQkJZ290byB5eTM7CisgCQl9CitAQCAtMTAxNywxMiArMTAyMiwxMiBAQCB5eTU6CisgCQkJZ290byB5eTE2NTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0gnKSB7CistCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTI7CisrCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTQ7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OworLQkJCQlnb3RvIHl5MTQ5MTsKKysJCQkJZ290byB5eTE0OTM7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworQEAgLTEwMzEsMTUgKzEwMzYsMTUgQEAgeXk1OgorIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE1MDg7CisrCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE1MTA7CisgCQkJCWdvdG8geXkxNzA7CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnbicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTUwOTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTUxMTsKKyAJCQkJZ290byB5eTE3MDsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTA3OworKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTA5OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7CisgCQkJCWdvdG8geXkzOworIAkJCX0KK0BAIC0xMDU0LDEyICsxMDU5LDEyIEBAIHl5NjoKKyAJCQlnb3RvIHl5MTY1OworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnSCcpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQ5MjsKKysJCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQ5NDsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDkzOworKwkJCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDk1OworIAkJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNjU7CistCQkJCWdvdG8geXkxNDkxOworKwkJCQlnb3RvIHl5MTQ5MzsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CitAQCAtMTA2OCwxNSArMTA3MywxNSBAQCB5eTY6CisgCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ2UnKSBnb3RvIHl5MTQ5MjsKKysJCQkJaWYgKHl5Y2ggPT0gJ2UnKSBnb3RvIHl5MTQ5NDsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICduJykgeworLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDkzOworKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDk1OworIAkJCQlnb3RvIHl5MTY1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0OTE7CisrCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0OTM7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorQEAgLTEwODgsMjQgKzEwOTMsMjQgQEAgeXk3OgorIAkJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CistCQkJZ290byB5eTE0NjE7CisrCQkJZ290byB5eTE0NjM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjI7CisrCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQ2NDsKKyAJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNjU7CistCQkJZ290byB5eTE0NjM7CisrCQkJZ290byB5eTE0NjU7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnaCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDc2OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0Nzg7CisgCQkJZ290byB5eTE3MDsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ24nKSB7CistCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0Nzc7CisrCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0Nzk7CisgCQkJCWdvdG8geXkxNzA7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ3ODsKKysJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ4MDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CitAQCAtMTExNywyNCArMTEyMiwyNCBAQCB5eTg6CisgCQlpZiAoeXljaCA8PSAnQScpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKy0JCQlnb3RvIHl5MTQ2MTsKKysJCQlnb3RvIHl5MTQ2MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQ2MjsKKysJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDY0OworIAkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NTsKKy0JCQlnb3RvIHl5MTQ2MzsKKysJCQlnb3RvIHl5MTQ2NTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdoJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjE7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ2MzsKKyAJCQlnb3RvIHl5MTY1OworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnbicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ2MjsKKysJCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ2NDsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDYzOworKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDY1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KK0BAIC0xMTQ2LDE1ICsxMTUxLDE1IEBAIHl5OToKKyAJc3dpdGNoICh5eWNoKSB7CisgCWNhc2UgJyknOglnb3RvIHl5MTY0OworIAljYXNlICcwJzoKKy0JY2FzZSAnMSc6CWdvdG8geXkxMzkxOworLQljYXNlICcyJzoJZ290byB5eTEzOTI7CisrCWNhc2UgJzEnOglnb3RvIHl5MTM5MzsKKysJY2FzZSAnMic6CWdvdG8geXkxMzk0OworIAljYXNlICczJzoKKyAJY2FzZSAnNCc6CisgCWNhc2UgJzUnOgorIAljYXNlICc2JzoKKyAJY2FzZSAnNyc6CisgCWNhc2UgJzgnOgorLQljYXNlICc5JzoJZ290byB5eTEzOTM7CisrCWNhc2UgJzknOglnb3RvIHl5MTM5NTsKKyAJY2FzZSAnQSc6CisgCWNhc2UgJ0InOgorIAljYXNlICdDJzoKK0BAIC0xMTc2LDExICsxMTgxLDExIEBAIHl5OToKKyAJY2FzZSAnWCc6CisgCWNhc2UgJ1knOgorIAljYXNlICdaJzoJZ290byB5eTE2NTsKKy0JY2FzZSAnRSc6CWdvdG8geXkxMzg2OworLQljYXNlICdIJzoJZ290byB5eTEzODc7CistCWNhc2UgJ08nOglnb3RvIHl5MTM4ODsKKy0JY2FzZSAnVSc6CWdvdG8geXkxMzg5OworLQljYXNlICdXJzoJZ290byB5eTEzOTA7CisrCWNhc2UgJ0UnOglnb3RvIHl5MTM4ODsKKysJY2FzZSAnSCc6CWdvdG8geXkxMzg5OworKwljYXNlICdPJzoJZ290byB5eTEzOTA7CisrCWNhc2UgJ1UnOglnb3RvIHl5MTM5MTsKKysJY2FzZSAnVyc6CWdvdG8geXkxMzkyOworIAljYXNlICdhJzoKKyAJY2FzZSAnYic6CisgCWNhc2UgJ2MnOgorQEAgLTEyMDIsMTEgKzEyMDcsMTEgQEAgeXk5OgorIAljYXNlICd4JzoKKyAJY2FzZSAneSc6CisgCWNhc2UgJ3onOglnb3RvIHl5MTcwOworLQljYXNlICdlJzoJZ290byB5eTE0Mjk7CistCWNhc2UgJ2gnOglnb3RvIHl5MTQzMDsKKy0JY2FzZSAnbyc6CWdvdG8geXkxNDMxOworLQljYXNlICd1JzoJZ290byB5eTE0MzI7CistCWNhc2UgJ3cnOglnb3RvIHl5MTQzMzsKKysJY2FzZSAnZSc6CWdvdG8geXkxNDMxOworKwljYXNlICdoJzoJZ290byB5eTE0MzI7CisrCWNhc2UgJ28nOglnb3RvIHl5MTQzMzsKKysJY2FzZSAndSc6CWdvdG8geXkxNDM0OworKwljYXNlICd3JzoJZ290byB5eTE0MzU7CisgCWRlZmF1bHQ6CWdvdG8geXkzOworIAl9CisgeXkxMDoKK0BAIC0xMjE1LDE1ICsxMjIwLDE1IEBAIHl5MTA6CisgCXN3aXRjaCAoeXljaCkgeworIAljYXNlICcpJzoJZ290byB5eTE2NDsKKyAJY2FzZSAnMCc6CistCWNhc2UgJzEnOglnb3RvIHl5MTM5MTsKKy0JY2FzZSAnMic6CWdvdG8geXkxMzkyOworKwljYXNlICcxJzoJZ290byB5eTEzOTM7CisrCWNhc2UgJzInOglnb3RvIHl5MTM5NDsKKyAJY2FzZSAnMyc6CisgCWNhc2UgJzQnOgorIAljYXNlICc1JzoKKyAJY2FzZSAnNic6CisgCWNhc2UgJzcnOgorIAljYXNlICc4JzoKKy0JY2FzZSAnOSc6CWdvdG8geXkxMzkzOworKwljYXNlICc5JzoJZ290byB5eTEzOTU7CisgCWNhc2UgJ0EnOgorIAljYXNlICdCJzoKKyAJY2FzZSAnQyc6CitAQCAtMTI2NywyOCArMTI3MiwzMCBAQCB5eTEwOgorIAljYXNlICd5JzoKKyAJY2FzZSAneic6CWdvdG8geXkxNjU7CisgCWNhc2UgJ0UnOgorLQljYXNlICdlJzoJZ290byB5eTEzODY7CisrCWNhc2UgJ2UnOglnb3RvIHl5MTM4ODsKKyAJY2FzZSAnSCc6CistCWNhc2UgJ2gnOglnb3RvIHl5MTM4NzsKKysJY2FzZSAnaCc6CWdvdG8geXkxMzg5OworIAljYXNlICdPJzoKKy0JY2FzZSAnbyc6CWdvdG8geXkxMzg4OworKwljYXNlICdvJzoJZ290byB5eTEzOTA7CisgCWNhc2UgJ1UnOgorLQljYXNlICd1JzoJZ290byB5eTEzODk7CisrCWNhc2UgJ3UnOglnb3RvIHl5MTM5MTsKKyAJY2FzZSAnVyc6CistCWNhc2UgJ3cnOglnb3RvIHl5MTM5MDsKKysJY2FzZSAndyc6CWdvdG8geXkxMzkyOworIAlkZWZhdWx0Oglnb3RvIHl5MzsKKyAJfQorIHl5MTE6CisgCXl5YWNjZXB0ID0gMTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKy0JaWYgKHl5Y2ggPT0gJy0nKSBnb3RvIHl5MTM3NDsKKysJaWYgKHl5Y2ggPT0gJy0nKSBnb3RvIHl5MTM3NjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI7CistCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzNzU7CisrCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzNzc7CisgeXkxMjoKKysjbGluZSAxNzY4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJYWRkX2Vycm9yKHMsICJVbmV4cGVjdGVkIGNoYXJhY3RlciIpOworIAkJZ290byBzdGQ7CisgCX0KKysjbGluZSAxMjk5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CitAQCAtMTI5OSwxNiArMTMwNiwxNiBAQCB5eTEzOgorIAkJCX0gZWxzZSB7CisgCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE2NTsKKy0JCQkJZ290byB5eTEzMTA7CisrCQkJCWdvdG8geXkxMzExOworIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ04nKSB7CistCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTE7CisrCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTI7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTMxMjsKKysJCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTMxMzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ1EnKSBnb3RvIHl5MTY1OworLQkJCQlnb3RvIHl5MTMxMzsKKysJCQkJZ290byB5eTEzMTQ7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworQEAgLTEzMTgsMTYgKzEzMjUsMTYgQEAgeXkxMzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MDsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxMzUxOworKwkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxMzUzOworIAkJCQlpZiAoeXljaCA8PSAnaCcpIGdvdG8geXkxNzA7CistCQkJCWdvdG8geXkxMzUyOworKwkJCQlnb3RvIHl5MTM1NDsKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdxJykgeworLQkJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzUzOworKwkJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzU1OworIAkJCQlnb3RvIHl5MTcwOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNTQ7CisrCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNTY7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorQEAgLTEzNDMsMTYgKzEzNTAsMTYgQEAgeXkxNDoKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7CistCQkJCWdvdG8geXkxMzEwOworKwkJCQlnb3RvIHl5MTMxMTsKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdOJykgeworLQkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzExOworKwkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzEyOworIAkJCQlnb3RvIHl5MTY1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTI7CisrCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTM7CisgCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NTsKKy0JCQkJZ290byB5eTEzMTM7CisrCQkJCWdvdG8geXkxMzE0OworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKK0BAIC0xMzYyLDE2ICsxMzY5LDE2IEBAIHl5MTQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTMxMDsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTMxMTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTY1OworLQkJCQlnb3RvIHl5MTMxMTsKKysJCQkJZ290byB5eTEzMTI7CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAncScpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTMxMjsKKysJCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTMxMzsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzEzOworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzE0OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KK0BAIC0xMzgyLDEzICsxMzg5LDEzIEBAIHl5MTU6CisgCWlmICh5eWNoIDw9ICdBJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKy0JCWdvdG8geXkxMjk2OworKwkJZ290byB5eTEyOTc7CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMDc7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMwODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7CisgCQkJZ290byB5eTM7CisgCQl9CitAQCAtMTM5OCwxMyArMTQwNSwxMyBAQCB5eTE2OgorIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CistCQlnb3RvIHl5MTI5NjsKKysJCWdvdG8geXkxMjk3OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk2OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyOTc7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OworIAkJCWdvdG8geXkzOworIAkJfQorQEAgLTE0MjAsNyArMTQyNyw3IEBAIHl5MTc6CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjkzOworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyOTQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOworIAkJCWdvdG8geXkzOworIAkJfQorQEAgLTI0OTUsMTggKzI1MDIsMjIgQEAgeXk0ODoKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NDk7CisgCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTU0OworIHl5NDk6CisrI2xpbmUgMTc1NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWdvdG8gc3RkOworIAl9CisrI2xpbmUgMjUxMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTUwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWdvdG8geXk0OTsKKyB5eTUxOgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDE3NjIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlzLT5wb3MgPSBjdXJzb3I7IHMtPmxpbmUrKzsKKyAJCWdvdG8gc3RkOworIAl9CisrI2xpbmUgMjUyMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTUzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWdvdG8geXkxMjsKK0BAIC0yNjkzLDIzICsyNzA0LDIzIEBAIHl5NTY6CisgCQkJCQl9CisgCQkJCX0gZWxzZSB7CisgCQkJCQlpZiAoeXlhY2NlcHQgPT0gMjgpIHsKKy0JCQkJCQlnb3RvIHl5MTM3NzsKKysJCQkJCQlnb3RvIHl5MTM3OTsKKyAJCQkJCX0gZWxzZSB7CistCQkJCQkJZ290byB5eTE0MTU7CisrCQkJCQkJZ290byB5eTE0MTc7CisgCQkJCQl9CisgCQkJCX0KKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXlhY2NlcHQgPD0gMzEpIHsKKyAJCQkJCWlmICh5eWFjY2VwdCA9PSAzMCkgeworLQkJCQkJCWdvdG8geXkxNDE4OworKwkJCQkJCWdvdG8geXkxNDIwOworIAkJCQkJfSBlbHNlIHsKKy0JCQkJCQlnb3RvIHl5MTQ5ODsKKysJCQkJCQlnb3RvIHl5MTUwMDsKKyAJCQkJCX0KKyAJCQkJfSBlbHNlIHsKKyAJCQkJCWlmICh5eWFjY2VwdCA9PSAzMikgeworLQkJCQkJCWdvdG8geXkxNTA2OworKwkJCQkJCWdvdG8geXkxNTA4OworIAkJCQkJfSBlbHNlIHsKKy0JCQkJCQlnb3RvIHl5MTUyOTsKKysJCQkJCQlnb3RvIHl5MTUzMTsKKyAJCQkJCX0KKyAJCQkJfQorIAkJCX0KK0BAIC0yOTIwLDYgKzI5MzEsNyBAQCB5eTczOgorIAlpZiAoeXljaCA9PSAnUycpIGdvdG8geXk3NTsKKyAJaWYgKHl5Y2ggPT0gJ3MnKSBnb3RvIHl5NzU7CisgeXk3NDoKKysjbGluZSAxNzQxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl91bGwgaTsKKyAJCURFQlVHX09VVFBVVCgicmVsYXRpdmUiKTsKK0BAIC0yOTM0LDYgKzI5NDYsNyBAQCB5eTc0OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9SRUxBVElWRTsKKyAJfQorKyNsaW5lIDI5NTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3NToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXk3NjsKK0BAIC0zNzE5LDYgKzM3MzIsNyBAQCB5eTE5MDoKKyAJCX0KKyAJfQorIHl5MTkxOgorKyNsaW5lIDE2MDQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQljb25zdCB0aW1lbGliX3JlbHVuaXQqIHJlbHVuaXQ7CisgCQlERUJVR19PVVRQVVQoImRheXRleHQiKTsKK0BAIC0zNzM1LDYgKzM3NDksNyBAQCB5eTE5MToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfV0VFS0RBWTsKKyAJfQorKyNsaW5lIDM3NTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkxOTI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0snKSB7CitAQCAtNDIyNyw2ICs0MjQyLDcgQEAgeXkyMTc6CisgCQl9CisgCX0KKyB5eTIxODoKKysjbGluZSAxNjYzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJtb250aHRleHQiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC00MjM1LDYgKzQyNTEsNyBAQCB5eTIxODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9URVhUOworIAl9CisrI2xpbmUgNDI1NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTIxOToKKyAJKytZWUNVUlNPUjsKKyAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgMjMpIFlZRklMTCgyMyk7CitAQCAtNDQ2OSw2ICs0NDg2LDcgQEAgeXkyMzE6CisgCWlmICh5eWNoID09ICd0JykgZ290byB5eTMxOTsKKyAJZ290byB5eTIzNzsKKyB5eTIzMjoKKysjbGluZSAxNDA5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImRhdGV0ZXh0dWFsIHwgZGF0ZW5veWVhciIpOworQEAgLTQ0ODEsNiArNDQ5OSw3IEBAIHl5MjMyOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX1RFWFQ7CisgCX0KKysjbGluZSA0NTAzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MjMzOgorIAl5eWFjY2VwdCA9IDY7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtNDU5Myw2ICs0NjEyLDcgQEAgeXkyNDU6CisgCQlpZiAoeXljaCA8PSAnOicpIGdvdG8geXkyNDg7CisgCX0KKyB5eTI0NjoKKysjbGluZSAxNzExICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IHR6X25vdF9mb3VuZDsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZXNob3J0d2l0aHRpbWVzaG9ydCB8IGRhdGVzaG9ydHdpdGh0aW1lbG9uZyB8IGRhdGVzaG9ydHdpdGh0aW1lbG9uZ3R6Iik7CitAQCAtNDYyMSw2ICs0NjQxLDcgQEAgeXkyNDY6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1NIT1JUREFURV9XSVRIX1RJTUU7CisgCX0KKysjbGluZSA0NjQ1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MjQ3OgorIAl5eWFjY2VwdCA9IDc7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtNDg5Myw2ICs0OTE0LDcgQEAgeXkyNjk6CisgCX0KKyB5eTI3MDoKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxNjg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJkYXRlc2hvcnR3aXRodGltZXNob3J0MTIgfCBkYXRlc2hvcnR3aXRodGltZWxvbmcxMiIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTQ5MTUsNiArNDkzNyw3IEBAIHl5MjcwOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9TSE9SVERBVEVfV0lUSF9USU1FOworIAl9CisrI2xpbmUgNDk0MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTI3MjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAweDFGKSB7CitAQCAtNTQ3MCw2ICs1NDkzLDcgQEAgeXkzMjA6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMzgxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImRhdGVub2RheSIpOworQEAgLTU0ODIsNiArNTUwNiw3IEBAIHl5MzIwOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX05PX0RBWTsKKyAJfQorKyNsaW5lIDU1MTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkzMjM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJzknKSB7CitAQCAtNTcwNCw2ICs1NzI5LDcgQEAgeXkzMjc6CisgCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJy8nKSBnb3RvIHl5MzMwOworIAlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkzMzE7CisgeXkzMzA6CisrI2xpbmUgMTUyNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJwZ3RleHRzaG9ydCIpOworQEAgLTU3MTYsNiArNTc0Miw3IEBAIHl5MzMwOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9QR19URVhUOworIAl9CisrI2xpbmUgNTc0NiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTMzMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkzMzA7CitAQCAtNjI3MCw2ICs2Mjk3LDcgQEAgeXkzNTY6CisgCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCX0KKyB5eTM1NzoKKysjbGluZSAxNTgzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJhZ28iKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC02Mjg5LDYgKzYzMTcsNyBAQCB5eTM1NzoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfQUdPOworIAl9CisrI2xpbmUgNjMyMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTM1ODoKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTgwMDksNiArODAzOCw3IEBAIHl5NDE3OgorIHl5NDE4OgorIAkrK1lZQ1VSU09SOworIHl5NDE5OgorKyNsaW5lIDEyODYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoImlzbzg2MDFkYXRlNCB8IGlzbzg2MDFkYXRlMiB8IGlzbzg2MDFkYXRlc2xhc2ggfCBkYXRlc2xhc2giKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC04MDE5LDYgKzgwNDksNyBAQCB5eTQxOToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7CisgCX0KKysjbGluZSA4MDUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NDIwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtODY0MSw2ICs4NjcyLDcgQEAgeXk0Mzk6CisgCQl9CisgCX0KKyB5eTQ0MDoKKysjbGluZSAxNDIzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJkYXRlbm95ZWFycmV2Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtODY1MSw2ICs4NjgzLDcgQEAgeXk0NDA6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfVEVYVDsKKyAJfQorKyNsaW5lIDg2ODcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk0NDE6CisgCXl5YWNjZXB0ID0gOTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC04Nzc4LDYgKzg4MTEsNyBAQCB5eTQ1MDoKKyAJfQorIHl5NDUyOgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDExNDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoInRpbWV0aW55MTIgfCB0aW1lc2hvcnQxMiB8IHRpbWVsb25nMTIiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC04NzkzLDYgKzg4MjcsNyBAQCB5eTQ1MjoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfVElNRTEyOworIAl9CisrI2xpbmUgODgzMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTQ1NDoKKyAJeXlhY2NlcHQgPSAxMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC04ODAzLDYgKzg4MzgsNyBAQCB5eTQ1NDoKKyAJCWlmICh5eWNoIDw9ICc6JykgZ290byB5eTQ1NzsKKyAJfQorIHl5NDU1OgorKyNsaW5lIDExNzggImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgdHpfbm90X2ZvdW5kOworIAkJREVCVUdfT1VUUFVUKCJ0aW1lc2hvcnQyNCB8IHRpbWVsb25nMjQgfCBpc284NjAxbG9uZyIpOworQEAgLTg4MjcsNiArODg2Myw3IEBAIHl5NDU1OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9USU1FMjRfV0lUSF9aT05FOworIAl9CisrI2xpbmUgODg2NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTQ1NjoKKyAJeXlhY2NlcHQgPSAxMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC05MTAzLDYgKzkxNDAsNyBAQCB5eTQ4NToKKyAJfQorIHl5NDg3OgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDExNTggImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoIm1zc3FsdGltZSIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTkxMjEsNiArOTE1OSw3IEBAIHl5NDg3OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9USU1FMjRfV0lUSF9aT05FOworIAl9CisrI2xpbmUgOTE2MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTQ4OToKKyAJeXlhY2NlcHQgPSAxMDsKKyAJWVlNQVJLRVIgPSArK1lZQ1VSU09SOworQEAgLTkyMTUsNiArOTI1NCw3IEBAIHl5NDk4OgorIAlpZiAoKHl5Y2ggPSAqWVlDVVJTT1IpIDw9ICcvJykgZ290byB5eTQ5OTsKKyAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5NTA1OworIHl5NDk5OgorKyNsaW5lIDEzNDAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZWZ1bGwiKTsKK0BAIC05MjI4LDYgKzkyNjgsNyBAQCB5eTQ5OToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9GVUxMOworIAl9CisrI2xpbmUgOTI3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTUwMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnTScpIGdvdG8geXk1MDE7CitAQCAtOTg5MSw2ICs5OTMyLDcgQEAgeXk1Njk6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMzU1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJwb2ludGVkIGRhdGUgWVlZWSIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTk5MDEsNiArOTk0Myw3IEBAIHl5NTY5OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX0ZVTExfUE9JTlRFRDsKKyAJfQorKyNsaW5lIDk5NDcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk1NzI6CisgCXl5YWNjZXB0ID0gMTA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtOTkzMSw2ICs5OTc0LDcgQEAgeXk1NzU6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU3NjsKKyAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5NTY5OworIHl5NTc2OgorKyNsaW5lIDEzNjcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgicG9pbnRlZCBkYXRlIFlZIik7CitAQCAtOTk0Myw2ICs5OTg3LDcgQEAgeXk1NzY6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfRlVMTF9QT0lOVEVEOworIAl9CisrI2xpbmUgOTk5MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTU3NzoKKyAJeXlhY2NlcHQgPSAxMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0xMDUzOCw2ICsxMDU4Myw3IEBAIHl5NjIwOgorIAkJfQorIAl9CisgeXk2MjE6CisrI2xpbmUgMTMyNiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJnbnVkYXRlc2hvcnQiKTsKK0BAIC0xMDU1MCw2ICsxMDU5Niw3IEBAIHl5NjIxOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9JU09fREFURTsKKyAJfQorKyNsaW5lIDEwNjAwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NjIyOgorIAl5eWFjY2VwdCA9IDEyOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTEwNjQ1LDYgKzEwNjkyLDcgQEAgeXk2MzA6CisgCQl9CisgCX0KKyB5eTYzMToKKysjbGluZSAxMjcwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImFtZXJpY2Fuc2hvcnQgfCBhbWVyaWNhbiIpOworQEAgLTEwNjU5LDYgKzEwNzA3LDcgQEAgeXk2MzE6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0FNRVJJQ0FOOworIAl9CisrI2xpbmUgMTA3MTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk2MzI6CisgCXl5YWNjZXB0ID0gMTM7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtMTA4NTcsNiArMTA5MDYsNyBAQCB5eTY2NDoKKyAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5NjY3OworIAlpZiAoeXljaCA8PSAnOicpIGdvdG8geXk2Njg7CisgeXk2NjU6CisrI2xpbmUgMTU1MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCB0el9ub3RfZm91bmQ7CisgCQlERUJVR19PVVRQVVQoImNsZiIpOworQEAgLTEwODc2LDYgKzEwOTI2LDcgQEAgeXk2NjU6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0NMRjsKKyAJfQorKyNsaW5lIDEwOTMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NjY2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICc1JykgeworQEAgLTExMzYyLDYgKzExNDEzLDcgQEAgeXk3Mjc6CisgCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXk2Mjc7CisgCX0KKyB5eTcyODoKKysjbGluZSAxMjk4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImlzbzg2MDFkYXRlMiIpOworQEAgLTExMzc0LDYgKzExNDI2LDcgQEAgeXk3Mjg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0lTT19EQVRFOworIAl9CisrI2xpbmUgMTE0MzAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3Mjk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ0MnKSBnb3RvIHl5NzMwOworQEAgLTExNDA0LDYgKzExNDU3LDcgQEAgeXk3MzQ6CisgCWlmICh5eWNoID49ICcyJykgZ290byB5eTU2OworIHl5NzM1OgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDE1MzkgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgicGd0ZXh0cmV2ZXJzZSIpOworQEAgLTExNDE2LDYgKzExNDcwLDcgQEAgeXk3MzU6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1BHX1RFWFQ7CisgCX0KKysjbGluZSAxMTQ3NCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTczNzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnVicpIGdvdG8geXk3MzA7CitAQCAtMTE1NjgsNiArMTE2MjMsNyBAQCB5eTc0NzoKKyAJCX0KKyAJfQorIHl5NzQ4OgorKyNsaW5lIDE1NzQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoInllYXI0Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMTE1NzUsNiArMTE2MzEsNyBAQCB5eTc0ODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfQ0xGOworIAl9CisrI2xpbmUgMTE2MzUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3NDk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJc3dpdGNoICh5eWNoKSB7CitAQCAtMTE3NjksNiArMTE4MjYsNyBAQCB5eTc1NzoKKyAJCWlmICh5eWNoIDw9ICdYJykgZ290byB5eTg0ODsKKyAJfQorIHl5NzU4OgorKyNsaW5lIDEzOTUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZW5vZGF5cmV2Iik7CitAQCAtMTE3ODEsNiArMTE4MzksNyBAQCB5eTc1ODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9OT19EQVk7CisgCX0KKysjbGluZSAxMTg0MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTc1OToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnSScpIGdvdG8geXk4OTI7CitAQCAtMTE5ODAsNiArMTIwMzksNyBAQCB5eTc3ODoKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5Nzc5OworIAlpZiAoeXljaCA8PSAnNycpIGdvdG8geXk3ODE7CisgeXk3Nzk6CisrI2xpbmUgMTUwNiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCXRpbWVsaWJfc2xsIHcsIGQ7CisgCQlERUJVR19PVVRQVVQoImlzb3dlZWsiKTsKK0BAIC0xMTk5NywxMiArMTIwNTcsMTQgQEAgeXk3Nzk6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0lTT19XRUVLOworIAl9CisrI2xpbmUgMTIwNjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3ODA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7CisgCWlmICh5eWNoID49ICc4JykgZ290byB5eTU2OworIHl5NzgxOgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDE0ODcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3NsbCB3LCBkOworIAkJREVCVUdfT1VUUFVUKCJpc293ZWVrZGF5Iik7CitAQCAtMTIwMjAsNiArMTIwODIsNyBAQCB5eTc4MToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfSVNPX1dFRUs7CisgCX0KKysjbGluZSAxMjA4NiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTc4MzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk2MDsKK0BAIC0xMjA4NSw2ICsxMjE0OCw3IEBAIHl5Nzg1OgorIAkJfQorIAl9CisgeXk3ODY6CisrI2xpbmUgMTQ3MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJwZ3lkb3RkIik7CitAQCAtMTIwOTcsNiArMTIxNjEsNyBAQCB5eTc4NjoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUEdfWUVBUkRBWTsKKyAJfQorKyNsaW5lIDEyMTY1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5Nzg3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTYwOworQEAgLTEyMTc4LDYgKzEyMjQzLDcgQEAgeXk4MDU6CisgeXk4MDY6CisgCSsrWVlDVVJTT1I7CisgeXk4MDc6CisrI2xpbmUgMTQ0NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCB0el9ub3RfZm91bmQ7CisgCQlERUJVR19PVVRQVVQoInhtbHJwYyB8IHhtbHJwY25vY29sb24gfCBzb2FwIHwgd2RkeCB8IGV4aWYiKTsKK0BAIC0xMjIwMiw2ICsxMjI2OCw3IEBAIHl5ODA3OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9YTUxSUENfU09BUDsKKyAJfQorKyNsaW5lIDEyMjcyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5ODA4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcyJykgeworQEAgLTEyNDkwLDYgKzEyNTU3LDcgQEAgeXk4MTI6CisgCQl9CisgCX0KKyB5eTgxMzoKKysjbGluZSAxNDM1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJkYXRlbm9jb2xvbiIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTEyNTAwLDYgKzEyNTY4LDcgQEAgeXk4MTM6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfTk9DT0xPTjsKKyAJfQorKyNsaW5lIDEyNTcyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5ODE0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdIJykgeworQEAgLTEzMjkzLDYgKzEzMzYyLDcgQEAgeXk5Mzc6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTkzODsKKyAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5OTYwOworIHl5OTM4OgorKyNsaW5lIDEzMTIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgiZ251ZGF0ZXNob3J0ZXIiKTsKK0BAIC0xMzMwNSw2ICsxMzM3NSw3IEBAIHl5OTM4OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9JU09fREFURTsKKyAJfQorKyNsaW5lIDEzMzc5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5OTM5OgorIAl5eWFjY2VwdCA9IDIxOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTE0MzAzLDYgKzE0Mzc0LDcgQEAgeXkxMDMwOgorIAkJfQorIAl9CisgeXkxMDMyOgorKyNsaW5lIDEyMDQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoImdudW5vY29sb24iKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0xNDMyNCw2ICsxNDM5Niw3IEBAIHl5MTAzMjoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfR05VX05PQ09MT047CisgCX0KKysjbGluZSAxNDQwMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTEwMzM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NjA7CitAQCAtMTQ0MTMsNiArMTQ0ODYsNyBAQCB5eTEwMzk6CisgCQl9CisgCX0KKyB5eTEwNDA6CisrI2xpbmUgMTI1MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCB0el9ub3RfZm91bmQ7CisgCQlERUJVR19PVVRQVVQoImlzbzg2MDFub2NvbG9uIik7CitAQCAtMTQ0MzEsNiArMTQ1MDUsNyBAQCB5eTEwNDA6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0lTT19OT0NPTE9OOworIAl9CisrI2xpbmUgMTQ1MDkgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkxMDQxOgorIAl5eWFjY2VwdCA9IDI0OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTE1MzYyLDYgKzE1NDM3LDcgQEAgeXkxMDgzOgorIAkJfQorIAl9CisgeXkxMDg0OgorKyNsaW5lIDE2NDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3NsbCBpOworIAkJaW50ICAgICAgICAgYmVoYXZpb3IgPSAwOworQEAgLTE1Mzc3LDYgKzE1NDUzLDcgQEAgeXkxMDg0OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9SRUxBVElWRTsKKyAJfQorKyNsaW5lIDE1NDU3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTA4NToKKyAJKytZWUNVUlNPUjsKKyAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgMikgWVlGSUxMKDIpOworQEAgLTE1NDE4LDYgKzE1NDk1LDcgQEAgeXkxMDkxOgorIAlpZiAoeXljaCAhPSAnZicpIGdvdG8geXk1NjsKKyB5eTEwOTI6CisgCSsrWVlDVVJTT1I7CisrI2xpbmUgMTExOSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCXRpbWVsaWJfc2xsIGk7CisgCQlpbnQgICAgICAgICBiZWhhdmlvciA9IDA7CitAQCAtMTU0MzgsNiArMTU1MTYsNyBAQCB5eTEwOTI6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1dFRUtfREFZX09GX01PTlRIOworIAl9CisrI2xpbmUgMTU1MjAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkxMDk0OgorIAl5eWFjY2VwdCA9IDI1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTE1NTMwLDYgKzE1NjA5LDcgQEAgeXkxMTA3OgorIAkJfQorIAl9CisgeXkxMTA4OgorKyNsaW5lIDE2MjIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3NsbCBpOworIAkJaW50ICAgICAgICAgYmVoYXZpb3IgPSAwOworQEAgLTE1NTUyLDYgKzE1NjMyLDcgQEAgeXkxMTA4OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9SRUxBVElWRTsKKyAJfQorKyNsaW5lIDE1NjM2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTEwOToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlnb3RvIHl5MTA4NDsKK0BAIC0xODIwNiwxMCArMTgyODcsMjUgQEAgeXkxMjgxOgorIHl5MTI4MzoKKyAJeXlhY2NlcHQgPSAyNzsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKy0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NzsKKy0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTI4NjsKKy0JZ290byB5eTEyODc7CisrCWlmICh5eWNoIDw9ICdAJykgeworKwkJaWYgKHl5Y2ggPD0gMHgxRikgeworKwkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMjg3OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjg3OworKwkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTI4NjsKKysJCX0KKysJfSBlbHNlIHsKKysJCWlmICh5eWNoIDw9ICdgJykgeworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEyODk7CisrCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTI4OTsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI4OTsKKysJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMjg5OworKwkJfQorKwl9CisgeXkxMjg0OgorKyNsaW5lIDEwOTYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoImJhY2tvZiB8IGZyb250b2YiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0xODIzMSw2NiArMTgzMjcsMTA0IEBAIHl5MTI4NDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfTEZfREFZX09GX01PTlRIOworIAl9CisrI2xpbmUgMTgzMzEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkxMjg1OgorIAl5eWFjY2VwdCA9IDI3OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg3OworLQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMjg3OworKwlpZiAoeXljaCA8PSAnQCcpIHsKKysJCWlmICh5eWNoIDw9IDB4MUYpIHsKKysJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NzsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKKysJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoID49ICc1JykgZ290byB5eTEyODQ7CisrCQl9CisrCX0gZWxzZSB7CisrCQlpZiAoeXljaCA8PSAnYCcpIHsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMjg5OworKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7CisrCQkJZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7CisrCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0KKysJfQorIHl5MTI4NjoKKyAJeXlhY2NlcHQgPSAyNzsKKy0JWVlNQVJLRVIgPSArK1lZQ1VSU09SOworKwl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworKwlpZiAoeXljaCA8PSAnQScpIHsKKysJCWlmICh5eWNoIDw9IDB4MUYpIHsKKysJCQlpZiAoeXljaCAhPSAnXHQnKSBnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKKysJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxMjg0OworKwkJCWdvdG8geXkxMjg5OworKwkJfQorKwl9IGVsc2UgeworKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisrCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTI4OTsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI4OTsKKysJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMjg5OworKwkJCWdvdG8geXkxMjg0OworKwkJfQorKwl9CisreXkxMjg3OgorKwkrK1lZQ1VSU09SOworIAlpZiAoKFlZTElNSVQgLSBZWUNVUlNPUikgPCA1KSBZWUZJTEwoNSk7CisgCXl5Y2ggPSAqWVlDVVJTT1I7CisteXkxMjg3OgorIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoIDw9IDB4MUYpIHsKKy0JCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NjsKKy0JCQlnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NzsKKysJCQlnb3RvIHl5NTY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODY7CistCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjg3OworKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTU2OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CistCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCAhPSAnUCcpIGdvdG8geXk1NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI4ODsKKy0JCQlpZiAoeXljaCAhPSAncCcpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7CisrCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5NTY7CisgCQl9CisgCX0KKy15eTEyODg6CisreXkxMjg5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdMJykgeworIAkJaWYgKHl5Y2ggIT0gJy4nKSBnb3RvIHl5NTY7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxMjkwOworLQkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTI5MDsKKysJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTEyOTE7CisrCQlpZiAoeXljaCA9PSAnbScpIGdvdG8geXkxMjkxOworIAkJZ290byB5eTU2OworIAl9CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ00nKSBnb3RvIHl5MTI5MDsKKysJaWYgKHl5Y2ggPT0gJ00nKSBnb3RvIHl5MTI5MTsKKyAJaWYgKHl5Y2ggIT0gJ20nKSBnb3RvIHl5NTY7CisteXkxMjkwOgorK3l5MTI5MToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAweDFGKSB7CistCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MjsKKy0JCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMjkyOworKwkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTM7CisrCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI5MzsKKyAJCWdvdG8geXk1NjsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyOTI7CisrCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjkzOworIAkJaWYgKHl5Y2ggIT0gJy4nKSBnb3RvIHl5NTY7CisgCX0KKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnXHQnKSB7CistCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MjsKKysJCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkzOworIAkJaWYgKHl5Y2ggPD0gMHgwOCkgZ290byB5eTU2OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggIT0gJyAnKSBnb3RvIHl5NTY7CisgCX0KKy15eTEyOTI6CisreXkxMjkzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWdvdG8geXkxMjg0OworLXl5MTI5MzoKKyt5eTEyOTQ6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0InKSB7CitAQCAtMTgzMTQsMTMgKzE4NDQ4LDEzIEBAIHl5MTI5MzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxMjk0OworKwkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxMjk1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTI5NDoKKyt5eTEyOTU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0onKSB7CitAQCAtMTgzNDQsMTMgKzE4NDc4LDEzIEBAIHl5MTI5NDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnaycpIGdvdG8geXkxMjk1OworKwkJCQlpZiAoeXljaCA8PSAnaycpIGdvdG8geXkxMjk2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTI5NToKKyt5eTEyOTY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy4nKSB7CitAQCAtMTgzNzUsNyArMTg1MDksNyBAQCB5eTEyOTU6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEyOTY6CisreXkxMjk3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdTJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTgzOTEsMTIgKzE4NTI1LDEyIEBAIHl5MTI5NjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEyOTc7CisrCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTI5ODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEyOTc6CisreXkxMjk4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg0MTIsMTIgKzE4NTQ2LDEyIEBAIHl5MTI5NzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEyOTg7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTI5OTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEyOTg6CisreXkxMjk5OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcoJykgeworQEAgLTE4NDM4LDE5ICsxODU3MiwxOSBAQCB5eTEyOTg6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEyOTk6CisreXkxMzAwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzMDA7CisrCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzMDE7CisgCWlmICh5eWNoICE9ICdkJykgZ290byB5eTEwNzA7CisteXkxMzAwOgorK3l5MTMwMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzAxOworKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzAyOworIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXk1NjsKKy15eTEzMDE6CisreXkxMzAyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzMDI7CisrCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzMDM7CisgCWlmICh5eWNoICE9ICd5JykgZ290byB5eTU2OworLXl5MTMwMjoKKyt5eTEzMDM6CisgCXl5YWNjZXB0ID0gMjU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTE4NDYxLDE0ICsxODU5NSwxNSBAQCB5eTEzMDI6CisgCQlnb3RvIHl5MTA4NDsKKyAJfQorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMDQ7CisrCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMDU7CisgCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OworLXl5MTMwNDoKKyt5eTEzMDU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNTsKKysJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNjsKKyAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7CisteXkxMzA1OgorK3l5MTMwNjoKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMDc5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJmaXJzdGRheW9mIHwgbGFzdGRheW9mIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMTg0ODQsNyArMTg2MTksOCBAQCB5eTEzMDU6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0xGX0RBWV9PRl9NT05USDsKKyAJfQorLXl5MTMwNzoKKysjbGluZSAxODYyMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyt5eTEzMDg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CitAQCAtMTg0OTksNyArMTg2MzUsNyBAQCB5eTEzMDc6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMjk3OworKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTEyOTg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xODUwOCwxMyArMTg2NDQsMTMgQEAgeXkxMzA3OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzMDg7CisrCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzMDk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzA4OgorK3l5MTMwOToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0xODUyOSw3ICsxODY2NSw3IEBAIHl5MTMwODoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEyOTg7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTI5OTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE4NTM4LDIwICsxODY3NCwyMCBAQCB5eTEzMDg6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMwOTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMxMDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzMDk6CisreXkxMzEwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICctJykgeworIAkJaWYgKHl5Y2ggPD0gJyAnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEwNjk7CisgCQkJaWYgKHl5Y2ggPD0gMHgxRikgZ290byB5eTM7CistCQkJZ290byB5eTEyOTk7CisrCQkJZ290byB5eTEzMDA7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlpZiAoeXljaCA8PSAnLCcpIGdvdG8geXkzOworQEAgLTE4NTczLDcgKzE4NzA5LDcgQEAgeXkxMzA5OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTMxMDoKKyt5eTEzMTE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0InKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODU4Miw3ICsxODcxOCw3IEBAIHl5MTMxMDoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTEzNDY7CisrCQkJZ290byB5eTEzNDg7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYScpIHsKK0BAIC0xODU5MCwzNSArMTg3MjYsMzUgQEAgeXkxMzEwOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM0NjsKKysJCQlpZiAoeXljaCA8PSAnYicpIGdvdG8geXkxMzQ4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMxMToKKyt5eTEzMTI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CisgCQlpZiAoeXljaCA8PSAnQCcpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzY7CisrCQkJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMzODsKKyAJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTEzMzU7CisrCQkJZ290byB5eTEzMzc7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZicpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTEzMzY7CisrCQkJZ290byB5eTEzMzg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzMzU7CisrCQkJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MTMzNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTI6CisreXkxMzEzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdVJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg2MjcsNyArMTg3NjMsNyBAQCB5eTEzMTI6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxMzMyOworKwkJCWdvdG8geXkxMzM0OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ3QnKSB7CitAQCAtMTg2MzUsMTkgKzE4NzcxLDE5IEBAIHl5MTMxMjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzMzI7CisrCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTMzNDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTM6CisreXkxMzE0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdPJykgeworIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzE1OworKwkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTY7CisgCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY2OworIAkJfQorIAl9IGVsc2UgeworQEAgLTE4NjU1LDE0ICsxODc5MSwxNCBAQCB5eTEzMTM6CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxMzE1OworKwkJCWdvdG8geXkxMzE2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzE0OworKwkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTU7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzE0OgorK3l5MTMxNToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NjcxLDcgKzE4ODA3LDcgQEAgeXkxMzE0OgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE2NzsKKy0JCQlnb3RvIHl5MTMxODsKKysJCQlnb3RvIHl5MTMxOTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdtJykgeworQEAgLTE4Njc5LDEyICsxODgxNSwxMiBAQCB5eTEzMTQ6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxMzE4OworKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzMTk7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzE1OgorK3l5MTMxNjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NzAwLDEyICsxODgzNiwxMiBAQCB5eTEzMTU6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzMTY7CisrCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTMxNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTE5MTsKKyAJCX0KKyAJfQorLXl5MTMxNjoKKyt5eTEzMTc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CitAQCAtMTg3MTUsMTIgKzE4ODUxLDEyIEBAIHl5MTMxNjoKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMTc7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMxODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTc6CisreXkxMzE4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdZJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg3NDIsNyArMTg4NzgsNyBAQCB5eTEzMTc6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTg6CisreXkxMzE5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg3NTgsMTYgKzE4ODk0LDE2IEBAIHl5MTMxODoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMTk7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMyMDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTk6CisreXkxMzIwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcpJykgeworLQkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTMyMDsKKysJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjE7CisgCQlpZiAoeXljaCA8PSAnKCcpIGdvdG8geXkzOworIAkJZ290byB5eTE2NDsKKyAJfSBlbHNlIHsKK0BAIC0xODc4MCw4OCArMTg5MTYsMTQzIEBAIHl5MTMxOToKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMyMDoKKyt5eTEzMjE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ08nKSBnb3RvIHl5MTMyMTsKKysJaWYgKHl5Y2ggPT0gJ08nKSBnb3RvIHl5MTMyMjsKKyAJaWYgKHl5Y2ggIT0gJ28nKSBnb3RvIHl5NTY7CisteXkxMzIxOgorK3l5MTMyMjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzIyOworKwlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzIzOworIAlpZiAoeXljaCAhPSAnZicpIGdvdG8geXk1NjsKKy15eTEzMjI6CisreXkxMzIzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoICE9ICcgJykgZ290byB5eTU2OworIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworLQlpZiAoeXljaCA8PSAnMScpIGdvdG8geXkxMzI0OworLQlpZiAoeXljaCA8PSAnMicpIGdvdG8geXkxMzI1OworLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzI2OworKwlpZiAoeXljaCA8PSAnMScpIGdvdG8geXkxMzI1OworKwlpZiAoeXljaCA8PSAnMicpIGdvdG8geXkxMzI2OworKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzI3OworIAlnb3RvIHl5NTY7CisteXkxMzI0OgorLQl5eWFjY2VwdCA9IDI3OworLQl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzI3OworLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzI2OworLQlnb3RvIHl5MTMyNzsKKyB5eTEzMjU6CisgCXl5YWNjZXB0ID0gMjc7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CistCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEzMjc7CistCWlmICh5eWNoID49ICc1JykgZ290byB5eTEzMjc7CisrCWlmICh5eWNoIDw9ICdAJykgeworKwkJaWYgKHl5Y2ggPD0gMHgxRikgeworKwkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMzI4OworKwkJCWdvdG8geXkxMjg0OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OworKwkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNzsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0KKysJfSBlbHNlIHsKKysJCWlmICh5eWNoIDw9ICdgJykgeworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMzA7CisrCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTMzMDsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMzMDsKKysJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMzMwOworKwkJCWdvdG8geXkxMjg0OworKwkJfQorKwl9CisgeXkxMzI2OgorIAl5eWFjY2VwdCA9IDI3OworLQlZWU1BUktFUiA9ICsrWVlDVVJTT1I7CistCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDUpIFlZRklMTCg1KTsKKy0JeXljaCA9ICpZWUNVUlNPUjsKKysJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKysJaWYgKHl5Y2ggPD0gJ0AnKSB7CisrCQlpZiAoeXljaCA8PSAweDFGKSB7CisrCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEzMjg7CisrCQkJZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEzMjg7CisrCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMjg0OworKwkJfQorKwl9IGVsc2UgeworKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisrCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTMzMDsKKysJCQlpZiAoeXljaCA9PSAnUCcpIGdvdG8geXkxMzMwOworKwkJCWdvdG8geXkxMjg0OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzMwOworKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEzMzA7CisrCQkJZ290byB5eTEyODQ7CisrCQl9CisrCX0KKyB5eTEzMjc6CisrCXl5YWNjZXB0ID0gMjc7CisrCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdBJykgeworIAkJaWYgKHl5Y2ggPD0gMHgxRikgeworLQkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMzI2OworLQkJCWdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoICE9ICdcdCcpIGdvdG8geXkxMjg0OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI2OworKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEzMjg7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTI4NDsKKysJCQlnb3RvIHl5MTMzMDsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworLQkJCWlmICh5eWNoICE9ICdQJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTMzMDsKKysJCQlnb3RvIHl5MTI4NDsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMyODsKKy0JCQlpZiAoeXljaCAhPSAncCcpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7CisrCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTMzMDsKKysJCQlnb3RvIHl5MTI4NDsKKyAJCX0KKyAJfQorIHl5MTMyODoKKysJKytZWUNVUlNPUjsKKysJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNSkgWVlGSUxMKDUpOworKwl5eWNoID0gKllZQ1VSU09SOworKwlpZiAoeXljaCA8PSAnQScpIHsKKysJCWlmICh5eWNoIDw9IDB4MUYpIHsKKysJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyODsKKysJCQlnb3RvIHl5NTY7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEzMjg7CisrCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5NTY7CisrCQl9CisrCX0gZWxzZSB7CisrCQlpZiAoeXljaCA8PSAnYCcpIHsKKysJCQlpZiAoeXljaCAhPSAnUCcpIGdvdG8geXk1NjsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMzMDsKKysJCQlpZiAoeXljaCAhPSAncCcpIGdvdG8geXk1NjsKKysJCX0KKysJfQorK3l5MTMzMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTCcpIHsKKyAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTMzMDsKKy0JCWlmICh5eWNoID09ICdtJykgZ290byB5eTEzMzA7CisrCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxMzMyOworKwkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTMzMjsKKyAJCWdvdG8geXk1NjsKKyAJfQorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdNJykgZ290byB5eTEzMzA7CisrCWlmICh5eWNoID09ICdNJykgZ290byB5eTEzMzI7CisgCWlmICh5eWNoICE9ICdtJykgZ290byB5eTU2OworLXl5MTMzMDoKKyt5eTEzMzI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gMHgxRikgeworLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7CistCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI5MjsKKysJCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkzOworKwkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTM7CisgCQlnb3RvIHl5NTY7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjkyOworKwkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MzsKKyAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OworIAl9CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1x0JykgeworLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7CisrCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKKyAJCWlmICh5eWNoIDw9IDB4MDgpIGdvdG8geXk1NjsKKy0JCWdvdG8geXkxMjkyOworKwkJZ290byB5eTEyOTM7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMjkyOworKwkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTI5MzsKKyAJCWdvdG8geXk1NjsKKyAJfQorLXl5MTMzMjoKKyt5eTEzMzQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODg3NywxMiArMTkwNjgsMTIgQEAgeXkxMzMyOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMzMzsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzM1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzMzoKKyt5eTEzMzU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODg5OCwxMiArMTkwODksMTIgQEAgeXkxMzMzOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzNDsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzM2OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzNDoKKyt5eTEzMzY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0gnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODkyNSw3ICsxOTExNiw3IEBAIHl5MTMzNDoKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzNToKKyt5eTEzMzc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODkzNCw3ICsxOTEyNSw3IEBAIHl5MTMzNToKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNjc7CistCQkJZ290byB5eTEzMzg7CisrCQkJZ290byB5eTEzNDA7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAncicpIHsKK0BAIC0xODk0MiwxMiArMTkxMzMsMTIgQEAgeXkxMzM1OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTMzODsKKysJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzQwOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzNjoKKyt5eTEzMzg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODk2MywxMiArMTkxNTQsMTIgQEAgeXkxMzM2OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzNzsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzM5OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzNzoKKyt5eTEzMzk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0gnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODk5MCw3ICsxOTE4MSw3IEBAIHl5MTMzNzoKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzODoKKyt5eTEzNDA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xOTAwNiwxMiArMTkxOTcsMTIgQEAgeXkxMzM4OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzOTsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzQxOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMzOToKKyt5eTEzNDE6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJygnKSB7CitAQCAtMTkwMzIsMTkgKzE5MjIzLDE5IEBAIHl5MTMzOToKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM0MDoKKyt5eTEzNDI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTM0MTsKKysJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTM0MzsKKyAJaWYgKHl5Y2ggIT0gJ2QnKSBnb3RvIHl5MTE5NzsKKy15eTEzNDE6CisreXkxMzQzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdBJykgZ290byB5eTEzNDI7CisrCWlmICh5eWNoID09ICdBJykgZ290byB5eTEzNDQ7CisgCWlmICh5eWNoICE9ICdhJykgZ290byB5eTU2OworLXl5MTM0MjoKKyt5eTEzNDQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTM0MzsKKysJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTM0NTsKKyAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5NTY7CisteXkxMzQzOgorK3l5MTM0NToKKyAJeXlhY2NlcHQgPSAyNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CitAQCAtMTkwNTUsMTQgKzE5MjQ2LDE0IEBAIHl5MTM0MzoKKyAJCWdvdG8geXkxMDg0OworIAl9CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ08nKSBnb3RvIHl5MTM0NTsKKysJaWYgKHl5Y2ggPT0gJ08nKSBnb3RvIHl5MTM0NzsKKyAJaWYgKHl5Y2ggIT0gJ28nKSBnb3RvIHl5NTY7CisteXkxMzQ1OgorK3l5MTM0NzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzA1OworLQlpZiAoeXljaCA9PSAnZicpIGdvdG8geXkxMzA1OworKwlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzA2OworKwlpZiAoeXljaCA9PSAnZicpIGdvdG8geXkxMzA2OworIAlnb3RvIHl5NTY7CisteXkxMzQ2OgorK3l5MTM0ODoKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLycpIHsKK0BAIC0xOTA5NywxMyArMTkyODgsMTMgQEAgeXkxMzQ2OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM0NzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM0OTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM0NzoKKyt5eTEzNDk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1UnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xOTExOSwxMiArMTkzMTAsMTIgQEAgeXkxMzQ3OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM0ODsKKysJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxMzUwOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM0ODoKKyt5eTEzNTA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CitAQCAtMTkxMzQsMjcgKzE5MzI1LDI3IEBAIHl5MTM0ODoKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNDk7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTM1MTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzNDk6CisreXkxMzUxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJZ290byB5eTM7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzUwOworKwkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MjsKKyAJCWlmICh5eWNoICE9ICdyJykgZ290byB5eTM7CisgCX0KKy15eTEzNTA6CisreXkxMzUyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICdZJykgZ290byB5eTIyOTsKKyAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MjI5OworIAlnb3RvIHl5NTY7CisteXkxMzUxOgorK3l5MTM1MzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQScpIHsKK0BAIC0xOTE2OSw3ICsxOTM2MCw3IEBAIHl5MTM1MToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTEzNDY7CisrCQkJaWYgKHl5Y2ggPD0gJ0InKSBnb3RvIHl5MTM0ODsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5MTc4LDEzICsxOTM2OSwxMyBAQCB5eTEzNTE6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM2OTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM3MTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNTI6CisreXkxMzU0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworQEAgLTE5MjAxLDE0ICsxOTM5MiwxNCBAQCB5eTEzNTI6CisgCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMzNjsKKysJCQkJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMzODsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTMzNTsKKysJCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTMzNzsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CitAQCAtMTkyMTYsMTYgKzE5NDA3LDE2IEBAIHl5MTM1MjoKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdxJykgeworLQkJCQlpZiAoeXljaCA9PSAnZicpIGdvdG8geXkxMzY1OworKwkJCQlpZiAoeXljaCA9PSAnZicpIGdvdG8geXkxMzY3OworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjQ7CisrCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjY7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzUzOgorK3l5MTM1NToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnVCcpIHsKK0BAIC0xOTI0MCw3ICsxOTQzMSw3IEBAIHl5MTM1MzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzMzI7CisrCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTMzNDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5MjQ5LDEzICsxOTQ0MCwxMyBAQCB5eTEzNTM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM2MTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM2MzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNTQ6CisreXkxMzU2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdOJykgeworQEAgLTE5MjcyLDE0ICsxOTQ2MywxNCBAQCB5eTEzNTQ6CisgCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxNTsKKysJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxNjsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTMxNDsKKysJCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTMxNTsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CitAQCAtMTkyODcsMTYgKzE5NDc4LDE2IEBAIHl5MTM1NDoKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICduJykgeworLQkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxMzU2OworKwkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxMzU4OworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTEzNTU7CisrCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTEzNTc7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzU1OgorK3l5MTM1NzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTScpIHsKK0BAIC0xOTMxMSw3ICsxOTUwMiw3IEBAIHl5MTM1NToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTEzMTg7CisrCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTMxOTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5MzIwLDEzICsxOTUxMSwxMyBAQCB5eTEzNTU6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTM1OTsKKysJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTM2MTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNTY6CisreXkxMzU4OgorIAl5eWFjY2VwdCA9IDQ7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworQEAgLTE5MzQxLDcgKzE5NTMyLDcgQEAgeXkxMzU2OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTMxNjsKKysJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxMzE3OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTM1MCwxMyArMTk1NDEsMTMgQEAgeXkxMzU2OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTM1NzsKKysJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTM1OTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MTkxOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM1NzoKKyt5eTEzNTk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0AnKSB7CitAQCAtMTkzNzAsMTggKzE5NTYxLDE4IEBAIHl5MTM1NzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMTc7CisrCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTMxODsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNTg7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTM2MDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzNTg6CisreXkxMzYwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdYJykgeworQEAgLTE5NDExLDcgKzE5NjAyLDcgQEAgeXkxMzU4OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM1OToKKyt5eTEzNjE6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMTk0MjYsNyArMTk2MTcsNyBAQCB5eTEzNTk6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzE5OworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMjA7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTQzNSwxOCArMTk2MjYsMTggQEAgeXkxMzU5OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNjA7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNjI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzYwOgorK3l5MTM2MjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLicpIHsKKyAJCWlmICh5eWNoIDw9ICcoJykgeworLQkJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjA7CisrCQkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTMyMTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJyknKSBnb3RvIHl5MTY0OworQEAgLTE5NDY2LDcgKzE5NjU3LDcgQEAgeXkxMzYwOgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzYxOgorK3l5MTM2MzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKK0BAIC0xOTQ4MSw3ICsxOTY3Miw3IEBAIHl5MTM2MToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzM7CisrCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTMzNTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NDkwLDEzICsxOTY4MSwxMyBAQCB5eTEzNjE6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM2MjsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM2NDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjI6CisreXkxMzY0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTE5NTExLDcgKzE5NzAyLDcgQEAgeXkxMzYyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzNDsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzM2OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMTk1MjAsMTMgKzE5NzExLDEzIEBAIHl5MTM2MjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYzOworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzY1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2MzoKKyt5eTEzNjU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMTk1NTYsNyArMTk3NDcsNyBAQCB5eTEzNjM6CisgCQkJfQorIAkJfQorIAl9CisteXkxMzY0OgorK3l5MTM2NjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0xOTU3MSw3ICsxOTc2Miw3IEBAIHl5MTM2NDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTEzMzg7CisrCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTM0MDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NTgwLDEzICsxOTc3MSwxMyBAQCB5eTEzNjQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTM2NzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTM2OTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjU6CisreXkxMzY3OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTE5NjAxLDcgKzE5NzkyLDcgQEAgeXkxMzY1OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzNzsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzM5OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMTk2MTAsMTMgKzE5ODAxLDEzIEBAIHl5MTM2NToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzY2OworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzY4OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2NjoKKyt5eTEzNjg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMTk2NDYsNyArMTk4MzcsNyBAQCB5eTEzNjY6CisgCQkJfQorIAkJfQorIAl9CisteXkxMzY3OgorK3l5MTM2OToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0xOTY2MSw3ICsxOTg1Miw3IEBAIHl5MTM2NzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzk7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTM0MTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NjcwLDIwICsxOTg2MSwyMCBAQCB5eTEzNjc6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2ODsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM3MDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjg6CisreXkxMzcwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICctJykgeworIAkJaWYgKHl5Y2ggPD0gJyAnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTExOTY7CisgCQkJaWYgKHl5Y2ggPD0gMHgxRikgZ290byB5eTM7CistCQkJZ290byB5eTEzNDA7CisrCQkJZ290byB5eTEzNDI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlpZiAoeXljaCA8PSAnLCcpIGdvdG8geXkzOworQEAgLTE5NzA1LDcgKzE5ODk2LDcgQEAgeXkxMzY4OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2OToKKyt5eTEzNzE6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJzknKSB7CitAQCAtMTk3MzMsNyArMTk5MjQsNyBAQCB5eTEzNjk6CisgCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTIxODsKKyAJCQkJZ290byB5eTE2NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzQ3OworKwkJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzQ5OworIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJCWdvdG8geXkyMTg7CisgCQkJfQorQEAgLTE5NzQzLDEzICsxOTkzNCwxMyBAQCB5eTEzNjk6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzcwOworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzcyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkyMTg7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzcwOgorK3l5MTM3MjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnVCcpIHsKK0BAIC0xOTc2NCw3ICsxOTk1NSw3IEBAIHl5MTM3MDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzNDg7CisrCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTM1MDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NzczLDEzICsxOTk2NCwxMyBAQCB5eTEzNzA6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM3MTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM3MzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNzE6CisreXkxMzczOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTE5NzkzLDE4ICsxOTk4NCwxOCBAQCB5eTEzNzE6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzQ5OworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzNTE7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzcyOworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNzQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzcyOgorK3l5MTM3NDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKK0BAIC0xOTgxOCwzMyArMjAwMDksMzQgQEAgeXkxMzcyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MDsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzUyOworIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MTM3MzsKKysJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxMzc1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM3MzoKKyt5eTEzNzU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MjI5OworIAlpZiAoeXljaCA9PSAneScpIGdvdG8geXkzNDE7CisgCWdvdG8geXkxNzk7CisteXkxMzc0OgorK3l5MTM3NjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKyAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7CisteXkxMzc1OgorK3l5MTM3NzoKKyAJeXlhY2NlcHQgPSAyODsKKyAJWVlNQVJLRVIgPSArK1lZQ1VSU09SOworIAlpZiAoKFlZTElNSVQgLSBZWUNVUlNPUikgPCA3KSBZWUZJTEwoNyk7CisgCXl5Y2ggPSAqWVlDVVJTT1I7CistCWlmICh5eWNoID09ICcuJykgZ290byB5eTEzNzg7CistCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEzNzc7CistCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzNzU7CisteXkxMzc3OgorKwlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMzgwOworKwlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzc5OworKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc3OworK3l5MTM3OToKKysjbGluZSAxMDI1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl91bGwgaTsKKyAKK0BAIC0xOTg2OSw3ICsyMDA2MSw4IEBAIHl5MTM3NzoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTEzNzg6CisrI2xpbmUgMjAwNjUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxMzgwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKK0BAIC0xOTg4OSw2ICsyMDA4Miw3IEBAIHl5MTM3ODoKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7CisgCWlmICh5eWNoID49ICc6JykgZ290byB5eTU2OworIAkrK1lZQ1VSU09SOworKyNsaW5lIDEwNTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3VsbCBpLCBtczsKKyAKK0BAIC0xOTkxNSw3ICsyMDEwOSw4IEBAIHl5MTM3ODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTEzODY6CisrI2xpbmUgMjAxMTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxMzg4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdOJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTk5MjQsNyArMjAxMTksNyBAQCB5eTEzODY6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDI3OworKwkJCWdvdG8geXkxNDI5OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ20nKSB7CitAQCAtMTk5MzIsNTggKzIwMTI3LDU4IEBAIHl5MTM4NjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Mjc7CisrCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQyOTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzODc6CisreXkxMzg5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdVJykgeworIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDE5OworKwkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0MjE7CisgCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDIwOworKwkJCWdvdG8geXkxNDIyOworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2knKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDE5OworKwkJCWdvdG8geXkxNDIxOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAndScpIGdvdG8geXkxNDIwOworKwkJCWlmICh5eWNoID09ICd1JykgZ290byB5eTE0MjI7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzg4OgorK3l5MTM5MDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTScpIHsKKyAJCWlmICh5eWNoIDw9ICdAJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQwODsKKysJCQlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxNDEwOworIAkJCWlmICh5eWNoIDw9ICdMJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQwOTsKKysJCQlnb3RvIHl5MTQxMTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdkJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQwODsKKysJCQlnb3RvIHl5MTQxMDsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTQwOTsKKysJCQlpZiAoeXljaCA9PSAnbScpIGdvdG8geXkxNDExOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM4OToKKyt5eTEzOTE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0UnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xOTk5Miw3ICsyMDE4Nyw3IEBAIHl5MTM4OToKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0MDQ7CisrCQkJZ290byB5eTE0MDY7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZCcpIHsKK0BAIC0yMDAwMCwxMiArMjAxOTUsMTIgQEAgeXkxMzg5OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwNDsKKysJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNDA2OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM5MDoKKyt5eTEzOTI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0UnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDAxNCw3ICsyMDIwOSw3IEBAIHl5MTM5MDoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0MDA7CisrCQkJZ290byB5eTE0MDI7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZCcpIHsKK0BAIC0yMDAyMiw2OCArMjAyMTcsNjggQEAgeXkxMzkwOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwMDsKKysJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNDAyOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM5MToKKyt5eTEzOTM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CisgCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OworIAkJZ290byB5eTU2OworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM5NDsKKysJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzOTY7CisgCQlpZiAoeXljaCA8PSAnOicpIGdvdG8geXkxMDI5OworIAkJZ290byB5eTU2OworIAl9CisteXkxMzkyOgorK3l5MTM5NDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIHsKKyAJCWlmICh5eWNoID09ICcuJykgZ290byB5eTEwMjk7CisgCQlnb3RvIHl5NTY7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnNCcpIGdvdG8geXkxMzk0OworKwkJaWYgKHl5Y2ggPD0gJzQnKSBnb3RvIHl5MTM5NjsKKyAJCWlmICh5eWNoID09ICc6JykgZ290byB5eTEwMjk7CisgCQlnb3RvIHl5NTY7CisgCX0KKy15eTEzOTM6CisreXkxMzk1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICcuJykgZ290byB5eTEwMjk7CisgCWlmICh5eWNoID09ICc6JykgZ290byB5eTEwMjk7CisgCWdvdG8geXk1NjsKKy15eTEzOTQ6CisreXkxMzk2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgeworIAkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTAyOTsKKyAJCWdvdG8geXk1NjsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICc1JykgZ290byB5eTEzOTU7CisrCQlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk3OworIAkJaWYgKHl5Y2ggPT0gJzonKSBnb3RvIHl5MTAyOTsKKyAJCWdvdG8geXk1NjsKKyAJfQorLXl5MTM5NToKKyt5eTEzOTc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7CisgCWlmICh5eWNoID49ICc6JykgZ290byB5eTU2OworIAl5eWFjY2VwdCA9IDIzOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMDMyOworLQlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk3OworLQlpZiAoeXljaCA8PSAnNicpIGdvdG8geXkxMzk4OworKwlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk5OworKwlpZiAoeXljaCA8PSAnNicpIGdvdG8geXkxNDAwOworIAlnb3RvIHl5MTAzMjsKKy15eTEzOTc6CisreXkxMzk5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzk5OworKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxNDAxOworIAlnb3RvIHl5NTY7CisteXkxMzk4OgorK3l5MTQwMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCAhPSAnMCcpIGdvdG8geXk1NjsKKy15eTEzOTk6CisreXkxNDAxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWdvdG8geXkxMDQwOworLXl5MTQwMDoKKyt5eTE0MDI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0wnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDA5OSwxMiArMjAyOTQsMTIgQEAgeXkxNDAwOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2wnKSBnb3RvIHl5MTQwMTsKKysJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDAzOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwMToKKyt5eTE0MDM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0YnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDEyMCwxMiArMjAzMTUsMTIgQEAgeXkxNDAxOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQwMjsKKysJCQlpZiAoeXljaCA8PSAnZicpIGdvdG8geXkxNDA0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwMjoKKyt5eTE0MDQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDE0MSwxMiArMjAzMzYsMTIgQEAgeXkxNDAyOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2OTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQwMzsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDA1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwMzoKKyt5eTE0MDU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMjAxNTcsNyArMjAzNTIsNyBAQCB5eTE0MDM6CisgCQlpZiAoeXljaCA9PSAnaCcpIGdvdG8geXkxMTk1OworIAkJZ290byB5eTM7CisgCX0KKy15eTE0MDQ6CisreXkxNDA2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdTJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAxNzMsMTIgKzIwMzY4LDEyIEBAIHl5MTQwNDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQwNTsKKysJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDA3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MTkxOworIAkJfQorIAl9CisteXkxNDA1OgorK3l5MTQwNzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMTk0LDEyICsyMDM4OSwxMiBAQCB5eTE0MDU6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDA2OworKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0MDg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDA2OgorK3l5MTQwODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKK0BAIC0yMDIwOSwxMiArMjA0MDQsMTIgQEAgeXkxNDA2OgorIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQwNzsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDA5OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwNzoKKyt5eTE0MDk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CitAQCAtMjAyMjQsMjMgKzIwNDE5LDIzIEBAIHl5MTQwNzoKKyAJCWlmICh5eWNoID09ICd5JykgZ290byB5eTE5NzsKKyAJCWdvdG8geXkzOworIAl9CisteXkxNDA4OgorK3l5MTQxMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CistCQlnb3RvIHl5MTQxNjsKKysJCWdvdG8geXkxNDE4OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDE2OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0MTg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDA5OgorK3l5MTQxMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTycpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMjU2LDEyICsyMDQ1MSwxMiBAQCB5eTE0MDk6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDEwOworKwkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0MTI7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDEwOgorK3l5MTQxMjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMjc3LDEyICsyMDQ3MiwxMiBAQCB5eTE0MTA6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDExOworKwkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MTM7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDExOgorK3l5MTQxMzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMjk4LDI4ICsyMDQ5MywyOSBAQCB5eTE0MTE6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY5OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDEyOworKwkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MTQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDEyOgorK3l5MTQxNDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTicpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWdvdG8geXkzOworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxMzsKKysJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTU7CisgCQlpZiAoeXljaCAhPSAnbycpIGdvdG8geXkzOworIAl9CisteXkxNDEzOgorK3l5MTQxNToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnVycpIGdvdG8geXkxNDE0OworKwlpZiAoeXljaCA9PSAnVycpIGdvdG8geXkxNDE2OworIAlpZiAoeXljaCAhPSAndycpIGdvdG8geXk1NjsKKy15eTE0MTQ6CisreXkxNDE2OgorIAkrK1lZQ1VSU09SOworLXl5MTQxNToKKyt5eTE0MTc6CisrI2xpbmUgMTAxMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgidG9tb3Jyb3ciKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0yMDMzMCw3ICsyMDUyNiw4IEBAIHl5MTQxNToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTE0MTY6CisrI2xpbmUgMjA1MzAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxNDE4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdZJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAzNDYsMjEgKzIwNTQzLDIyIEBAIHl5MTQxNjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0MTc7CisrCQkJaWYgKHl5Y2ggPD0gJ3knKSBnb3RvIHl5MTQxOTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MTc6CisreXkxNDE5OgorIAkrK1lZQ1VSU09SOworIAlpZiAoKHl5Y2ggPSAqWVlDVVJTT1IpIDw9ICdAJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworLQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTQxODsKKysJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MjA7CisgCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCX0KKy15eTE0MTg6CisreXkxNDIwOgorKyNsaW5lIDEwMDMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoIm1pZG5pZ2h0IHwgdG9kYXkiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0yMDM2OSw3ICsyMDU2Nyw4IEBAIHl5MTQxODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTE0MTk6CisrI2xpbmUgMjA1NzEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxNDIxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdTJykgeworIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7CitAQCAtMjAzNzcsOCArMjA1NzYsOCBAQCB5eTE0MTk6CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NzsKKy0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDI1OworLQkJCWdvdG8geXkxNDI2OworKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0Mjc7CisrCQkJZ290byB5eTE0Mjg7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAncScpIHsKK0BAIC0yMDM4NiwxMyArMjA1ODUsMTMgQEAgeXkxNDE5OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQyNTsKKy0JCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDI2OworKwkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0Mjc7CisrCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MjA6CisreXkxNDIyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdSJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjA0MDgsMTIgKzIwNjA3LDEyIEBAIHl5MTQyMDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQyMTsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDIzOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MTkxOworIAkJfQorIAl9CisteXkxNDIxOgorK3l5MTQyMzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUycpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwNDI5LDEyICsyMDYyOCwxMiBAQCB5eTE0MjE6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDIyOworKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0MjQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDIyOgorK3l5MTQyNDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwNDUwLDI3ICsyMDY0OSwyNyBAQCB5eTE0MjI6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY5OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDIzOworKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0MjU7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDIzOgorK3l5MTQyNToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQCcpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWdvdG8geXkzOworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQyNDsKKysJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjY7CisgCQlpZiAoeXljaCAhPSAnYScpIGdvdG8geXkzOworIAl9CisteXkxNDI0OgorK3l5MTQyNjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxOTc7CisgCWlmICh5eWNoID09ICd5JykgZ290byB5eTE5NzsKKyAJZ290byB5eTU2OworLXl5MTQyNToKKyt5eTE0Mjc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDQ5Miw3ICsyMDY5MSw3IEBAIHl5MTQyNToKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQyNjoKKyt5eTE0Mjg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJygnKSB7CitAQCAtMjA1MTQsNyArMjA3MTMsNyBAQCB5eTE0MjY6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Mjc6CisreXkxNDI5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjA1MzAsMTIgKzIwNzI5LDEyIEBAIHl5MTQyNzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0Mjg7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzMDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Mjg6CisreXkxNDMwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdIJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjA1NTcsNyArMjA3NTYsNyBAQCB5eTE0Mjg6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Mjk6CisreXkxNDMxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdNJykgeworQEAgLTIwNTcyLDcgKzIwNzcxLDcgQEAgeXkxNDI5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQyNzsKKysJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDI5OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA1ODEsMTMgKzIwNzgwLDEzIEBAIHl5MTQyOToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDU5OworKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDYxOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzMDoKKyt5eTE0MzI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CitAQCAtMjA2MDQsMTQgKzIwODAzLDE0IEBAIHl5MTQzMDoKKyAJCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDE5OworKwkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDIxOworIAkJCQlnb3RvIHl5MTY2OworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgeworLQkJCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxNDIwOworKwkJCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxNDIyOworIAkJCQlnb3RvIHl5MTY2OworIAkJCX0gZWxzZSB7CisgCQkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKK0BAIC0yMDYxOSwxNiArMjA4MTgsMTYgQEAgeXkxNDMwOgorIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ3QnKSB7CistCQkJCWlmICh5eWNoID09ICdpJykgZ290byB5eTE0NTE7CisrCQkJCWlmICh5eWNoID09ICdpJykgZ290byB5eTE0NTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTQ1MjsKKysJCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTQ1NDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0MzE6CisreXkxNDMzOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdMJykgeworQEAgLTIwNjQ1LDE0ICsyMDg0NCwxNCBAQCB5eTE0MzE6CisgCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQwODsKKysJCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQxMDsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTQwOTsKKysJCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTQxMTsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CitAQCAtMjA2NjAsMTYgKzIwODU5LDE2IEBAIHl5MTQzMToKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdsJykgeworLQkJCQlpZiAoeXljaCA9PSAnZCcpIGdvdG8geXkxNDQyOworKwkJCQlpZiAoeXljaCA9PSAnZCcpIGdvdG8geXkxNDQ0OworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE0NDM7CisrCQkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE0NDU7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDMyOgorK3l5MTQzNDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRCcpIHsKK0BAIC0yMDY4NCw3ICsyMDg4Myw3IEBAIHl5MTQzMjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDQ7CisrCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQwNjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwNjkzLDEzICsyMDg5MiwxMyBAQCB5eTE0MzI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzODsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQ0MDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0MzM6CisreXkxNDM1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdEJykgeworQEAgLTIwNzE0LDcgKzIwOTEzLDcgQEAgeXkxNDMzOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQwMDsKKysJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDAyOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA3MjMsMTMgKzIwOTIyLDEzIEBAIHl5MTQzMzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNDM0OworKwkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNDM2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzNDoKKyt5eTE0MzY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0snKSB7CitAQCAtMjA3NDQsNyArMjA5NDMsNyBAQCB5eTE0MzQ6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNDAxOworKwkJCWlmICh5eWNoIDw9ICdMJykgZ290byB5eTE0MDM7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDc1MywxMyArMjA5NTIsMTMgQEAgeXkxNDM0OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdsJykgZ290byB5eTE0MzU7CisrCQkJCWlmICh5eWNoIDw9ICdsJykgZ290byB5eTE0Mzc7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDM1OgorK3l5MTQzNzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRScpIHsKK0BAIC0yMDc3NCw3ICsyMDk3Myw3IEBAIHl5MTQzNToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdGJykgZ290byB5eTE0MDI7CisrCQkJaWYgKHl5Y2ggPD0gJ0YnKSBnb3RvIHl5MTQwNDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwNzgzLDEzICsyMDk4MiwxMyBAQCB5eTE0MzU6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQzNjsKKysJCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQzODsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0MzY6CisreXkxNDM4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTIwODA0LDcgKzIxMDAzLDcgQEAgeXkxNDM2OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQwMzsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDA1OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA4MTMsMTMgKzIxMDEyLDEzIEBAIHl5MTQzNjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDM3OworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDM5OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzNzoKKyt5eTE0Mzk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMjA4NDIsNyArMjEwNDEsNyBAQCB5eTE0Mzc6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Mzg6CisreXkxNDQwOgorIAl5eWFjY2VwdCA9IDQ7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTIwODU3LDcgKzIxMDU2LDcgQEAgeXkxNDM4OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTQwNTsKKysJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDA3OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDg2NiwxMyArMjEwNjUsMTMgQEAgeXkxNDM4OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQzOTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ0MTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MTkxOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzOToKKyt5eTE0NDE6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0MnKSB7CitAQCAtMjA4ODcsNyArMjEwODYsNyBAQCB5eTE0Mzk6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDA2OworKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0MDg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDg5NiwxMyArMjEwOTUsMTMgQEAgeXkxNDM5OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0NDA7CisrCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0NDI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDQwOgorK3l5MTQ0MjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQCcpIHsKK0BAIC0yMDkxNiwxOCArMjExMTUsMTggQEAgeXkxNDQwOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQwNzsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDA5OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0MTsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDQzOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ0MToKKyt5eTE0NDM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CitAQCAtMjA5NTAsNyArMjExNDksNyBAQCB5eTE0NDE6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NDI6CisreXkxNDQ0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTIwOTY0LDE4ICsyMTE2MywxOCBAQCB5eTE0NDI6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDE2OworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MTg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDQ5OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NTE7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDQzOgorK3l5MTQ0NToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTicpIHsKK0BAIC0yMDk5MCw3ICsyMTE4OSw3IEBAIHl5MTQ0MzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTA7CisrCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxMjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwOTk5LDEzICsyMTE5OCwxMyBAQCB5eTE0NDM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ0NDsKKysJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ0NjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NDQ6CisreXkxNDQ2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworQEAgLTIxMDIwLDcgKzIxMjE5LDcgQEAgeXkxNDQ0OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMTsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDEzOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjEwMjksMTMgKzIxMjI4LDEzIEBAIHl5MTQ0NDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ1OworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ3OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ0NToKKyt5eTE0NDc6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1EnKSB7CitAQCAtMjEwNTAsNyArMjEyNDksNyBAQCB5eTE0NDU6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDEyOworKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0MTQ7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTA1OSwxMyArMjEyNTgsMTMgQEAgeXkxNDQ1OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0NDY7CisrCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0NDg7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDQ2OgorK3l5MTQ0ODoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTicpIHsKK0BAIC0yMTA3OSwxOCArMjEyNzgsMTggQEAgeXkxNDQ2OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CistCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxMzsKKysJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDE1OworIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTQ0NzsKKysJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxNDQ5OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ0NzoKKyt5eTE0NDk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNDsKKysJaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNjsKKyAJaWYgKHl5Y2ggIT0gJ3cnKSBnb3RvIHl5MTc5OworIAl5eWFjY2VwdCA9IDI5OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTIxMDk5LDEzICsyMTI5OCwxMyBAQCB5eTE0NDc6CisgCX0KKyAJaWYgKHl5Y2ggPD0gJy4nKSB7CisgCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7CistCQlnb3RvIHl5MTQxNTsKKysJCWdvdG8geXkxNDE3OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOworIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworLQkJZ290byB5eTE0MTU7CisrCQlnb3RvIHl5MTQxNzsKKyAJfQorLXl5MTQ0OToKKyt5eTE0NTE6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CitAQCAtMjExMjAsNyArMjEzMTksNyBAQCB5eTE0NDk6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDE3OworKwkJCWlmICh5eWNoIDw9ICdZJykgZ290byB5eTE0MTk7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTEyOSwzNiArMjEzMjgsMzYgQEAgeXkxNDQ5OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0NTA7CisrCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0NTI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDUwOgorK3l5MTQ1MjoKKyAJeXlhY2NlcHQgPSAzMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CisgCQlpZiAoeXljaCA8PSAnLCcpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CistCQkJZ290byB5eTE0MTg7CisrCQkJZ290byB5eTE0MjA7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE0MTg7CisrCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTQyMDsKKyAJCQlnb3RvIHl5MTcyOworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ14nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTQxODsKKysJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNDIwOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKy0JCQlnb3RvIHl5MTQxODsKKysJCQlnb3RvIHl5MTQyMDsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ18nKSBnb3RvIHl5MTcyOworLQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MTg7CisrCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTQyMDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CistCQkJZ290byB5eTE0MTg7CisrCQkJZ290byB5eTE0MjA7CisgCQl9CisgCX0KKy15eTE0NTE6CisreXkxNDUzOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTIxMTczLDEzICsyMTM3MiwxMyBAQCB5eTE0NTE6CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ1EnKSBnb3RvIHl5MTY3OworLQkJCQlnb3RvIHl5MTQyNTsKKysJCQkJZ290byB5eTE0Mjc7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSB7CistCQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MjY7CisrCQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0Mjg7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworQEAgLTIxMTg4LDE1ICsyMTM4NywxNSBAQCB5eTE0NTE6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdyJykgeworIAkJCQlpZiAoeXljaCA8PSAncScpIGdvdG8geXkxNzU7CistCQkJCWdvdG8geXkxNDU3OworKwkJCQlnb3RvIHl5MTQ1OTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDU4OworKwkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDYwOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ1MjoKKyt5eTE0NTQ6CisgCXl5YWNjZXB0ID0gNDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1EnKSB7CitAQCAtMjEyMTEsNyArMjE0MTAsNyBAQCB5eTE0NTI6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDIxOworKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0MjM7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTE5MTsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxMjIwLDEzICsyMTQxOSwxMyBAQCB5eTE0NTI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDUzOworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDU1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkxOTE7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDUzOgorK3l5MTQ1NToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0yMTI0MSw3ICsyMTQ0MCw3IEBAIHl5MTQ1MzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MjI7CisrCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTQyNDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxMjUwLDEzICsyMTQ0OSwxMyBAQCB5eTE0NTM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ1NDsKKysJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ1NjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NTQ6CisreXkxNDU2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworQEAgLTIxMjcxLDcgKzIxNDcwLDcgQEAgeXkxNDU0OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQyMzsKKysJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDI1OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjEyODAsMTMgKzIxNDc5LDEzIEBAIHl5MTQ1NDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDU1OworKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDU3OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ1NToKKyt5eTE0NTc6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0AnKSB7CitAQCAtMjEzMDAsMjIgKzIxNDk5LDIyIEBAIHl5MTQ1NToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjQ7CisrCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQyNjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ1NjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDU4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ1NjoKKyt5eTE0NTg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTk3OworIAlpZiAoeXljaCA9PSAneScpIGdvdG8geXkyMTA7CisgCWdvdG8geXkxNzk7CisteXkxNDU3OgorK3l5MTQ1OToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQycpIHsKK0BAIC0yMTM0NSw3ICsyMTU0NCw3IEBAIHl5MTQ1NzoKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NTg6CisreXkxNDYwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICctJykgeworQEAgLTIxMzc0LDcgKzIxNTczLDcgQEAgeXkxNDU4OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ1OToKKyt5eTE0NjE6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMjEzODksNyArMjE1ODgsNyBAQCB5eTE0NTk6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDI4OworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MzA7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTM5OCwxMyArMjE1OTcsMTMgQEAgeXkxNDU5OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0NjA7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0NjI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDYwOgorK3l5MTQ2MjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRycpIHsKK0BAIC0yMTQzNCwzMCArMjE2MzMsMzAgQEAgeXkxNDYwOgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ2MToKKyt5eTE0NjM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1knKSB7CisgCQlpZiAoeXljaCA8PSAnQCcpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdSJykgZ290byB5eTE0NzM7CisrCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3NTsKKyAJCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0NzQ7CisrCQkJZ290byB5eTE0NzY7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAncicpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAncScpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0NzM7CisrCQkJZ290byB5eTE0NzU7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICd5JykgZ290byB5eTE0NzQ7CisrCQkJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MTQ3NjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NjI6CisreXkxNDY0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdEJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE0NjYsNyArMjE2NjUsNyBAQCB5eTE0NjI6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ0MnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDY3OworKwkJCWdvdG8geXkxNDY5OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2MnKSB7CitAQCAtMjE0NzQsMTIgKzIxNjczLDEyIEBAIHl5MTQ2MjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0Njc7CisrCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ2OTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NjM6CisreXkxNDY1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdOJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE0OTUsMTIgKzIxNjk0LDEyIEBAIHl5MTQ2MzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0NjQ7CisrCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ2NjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NjQ6CisreXkxNDY2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdEJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE1MTYsMTIgKzIxNzE1LDEyIEBAIHl5MTQ2NDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ2NTsKKysJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDY3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MTkxOworIAkJfQorIAl9CisteXkxNDY1OgorK3l5MTQ2NzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKK0BAIC0yMTUzMSwxMiArMjE3MzAsMTIgQEAgeXkxNDY1OgorIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ2NjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDY4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ2NjoKKyt5eTE0Njg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1knKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMTU1OCw3ICsyMTc1Nyw3IEBAIHl5MTQ2NjoKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ2NzoKKyt5eTE0Njk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMTU3NCwxMiArMjE3NzMsMTIgQEAgeXkxNDY3OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ2ODsKKysJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDcwOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ2ODoKKyt5eTE0NzA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0knKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMTU5NSwxMiArMjE3OTQsMTIgQEAgeXkxNDY4OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ2OTsKKysJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDcxOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ2OToKKyt5eTE0NzE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMTYxNiwyOSArMjE4MTUsMjkgQEAgeXkxNDY5OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2OTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ3MDsKKysJCQlpZiAoeXljaCA8PSAnZycpIGdvdG8geXkxNDcyOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ3MDoKKyt5eTE0NzI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlnb3RvIHl5MzsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICdIJykgZ290byB5eTE0NzE7CisrCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDczOworIAkJaWYgKHl5Y2ggIT0gJ2gnKSBnb3RvIHl5MzsKKyAJfQorLXl5MTQ3MToKKyt5eTE0NzM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3MjsKKysJaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3NDsKKyAJaWYgKHl5Y2ggIT0gJ3QnKSBnb3RvIHl5NTY7CisteXkxNDcyOgorK3l5MTQ3NDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlnb3RvIHl5MTQxODsKKy15eTE0NzM6CisrCWdvdG8geXkxNDIwOworK3l5MTQ3NToKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLycpIHsKK0BAIC0yMTY2Niw3ICsyMTg2NSw3IEBAIHl5MTQ3MzoKKyAJCQkJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MjIwOworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdDJykgZ290byB5eTE0NzU7CisrCQkJCWlmICh5eWNoID09ICdDJykgZ290byB5eTE0Nzc7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfQorIAkJfSBlbHNlIHsKK0BAIC0yMTY3NCwxMyArMjE4NzMsMTMgQEAgeXkxNDczOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTQ3NTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTQ3NzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ3NDoKKyt5eTE0NzY6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy0nKSB7CitAQCAtMjE3MDUsNyArMjE5MDQsNyBAQCB5eTE0NzQ6CisgCQkJZ290byB5eTIxODsKKyAJCX0KKyAJfQorLXl5MTQ3NToKKyt5eTE0Nzc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0gnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMTcyNyw3ICsyMTkyNiw3IEBAIHl5MTQ3NToKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ3NjoKKyt5eTE0Nzg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CitAQCAtMjE3NDQsMTQgKzIxOTQzLDE0IEBAIHl5MTQ3NjoKKyAJCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkxNDczOworKwkJCQlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkxNDc1OworIAkJCQlnb3RvIHl5MTY2OworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgeworLQkJCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDc0OworKwkJCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDc2OworIAkJCQlnb3RvIHl5MTY2OworIAkJCX0gZWxzZSB7CisgCQkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKK0BAIC0yMTc1OSwxNiArMjE5NTgsMTYgQEAgeXkxNDc2OgorIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ3gnKSB7CistCQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTE0ODg7CisrCQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTE0OTA7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3knKSBnb3RvIHl5MTQ4OTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3knKSBnb3RvIHl5MTQ5MTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0Nzc6CisreXkxNDc5OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworQEAgLTIxNzgzLDcgKzIxOTgyLDcgQEAgeXkxNDc3OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQ2NzsKKysJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDY5OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjE3OTIsMTMgKzIxOTkxLDEzIEBAIHl5MTQ3NzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgyOworKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDg0OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ3ODoKKyt5eTE0ODA6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ00nKSB7CitAQCAtMjE4MTMsNyArMjIwMTIsNyBAQCB5eTE0Nzg6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDY0OworKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0NjY7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTgyMiwxMyArMjIwMjEsMTMgQEAgeXkxNDc4OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Nzk7CisrCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0ODE7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDc5OgorK3l5MTQ4MToKKyAJeXlhY2NlcHQgPSA0OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQycpIHsKK0BAIC0yMTg0Myw3ICsyMjA0Miw3IEBAIHl5MTQ3OToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0NjU7CisrCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQ2NzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjE4NTIsMTMgKzIyMDUxLDEzIEBAIHl5MTQ3OToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0ODA7CisrCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0ODI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTE5MTsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0ODA6CisreXkxNDgyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTIxODcyLDE4ICsyMjA3MSwxOCBAQCB5eTE0ODA6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDY2OworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0Njg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDgxOworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0ODM7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDgxOgorK3l5MTQ4MzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnWCcpIHsKK0BAIC0yMTkxMyw3ICsyMjExMiw3IEBAIHl5MTQ4MToKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0ODI6CisreXkxNDg0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdNJykgeworQEAgLTIxOTI4LDcgKzIyMTI3LDcgQEAgeXkxNDgyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ2ODsKKysJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDcwOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjE5MzcsMTMgKzIyMTM2LDEzIEBAIHl5MTQ4MjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDgzOworKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDg1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ4MzoKKyt5eTE0ODU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0gnKSB7CitAQCAtMjE5NTgsNyArMjIxNTcsNyBAQCB5eTE0ODM6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDY5OworKwkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0NzE7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTk2NywxMyArMjIxNjYsMTMgQEAgeXkxNDgzOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0ODQ7CisrCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0ODY7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDg0OgorK3l5MTQ4NjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRicpIHsKK0BAIC0yMTk4OCw3ICsyMjE4Nyw3IEBAIHl5MTQ4NDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdHJykgZ290byB5eTE0NzA7CisrCQkJaWYgKHl5Y2ggPD0gJ0cnKSBnb3RvIHl5MTQ3MjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxOTk3LDEzICsyMjE5NiwxMyBAQCB5eTE0ODQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ4NTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ4NzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0ODU6CisreXkxNDg3OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTIyMDE3LDE4ICsyMjIxNiwxOCBAQCB5eTE0ODU6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKy0JCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDcxOworKwkJCWlmICh5eWNoIDw9ICdIJykgZ290byB5eTE0NzM7CisgCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnaCcpIGdvdG8geXkxNDg2OworKwkJCWlmICh5eWNoID09ICdoJykgZ290byB5eTE0ODg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDg2OgorK3l5MTQ4ODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnVCcpIGdvdG8geXkxNDcyOworKwlpZiAoeXljaCA9PSAnVCcpIGdvdG8geXkxNDc0OworIAlpZiAoeXljaCAhPSAndCcpIGdvdG8geXkxNzk7CisgCXl5YWNjZXB0ID0gMzA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtMjIwMzcsMTMgKzIyMjM2LDEzIEBAIHl5MTQ4NjoKKyAJfQorIAlpZiAoeXljaCA8PSAnLicpIHsKKyAJCWlmICh5eWNoID09ICctJykgZ290byB5eTE3MjsKKy0JCWdvdG8geXkxNDE4OworKwkJZ290byB5eTE0MjA7CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7CisgCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CistCQlnb3RvIHl5MTQxODsKKysJCWdvdG8geXkxNDIwOworIAl9CisteXkxNDg4OgorK3l5MTQ5MDoKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnOScpIHsKK0BAIC0yMjA3MSw3ICsyMjI3MCw3IEBAIHl5MTQ4ODoKKyAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdDJykgZ290byB5eTE0NzU7CisrCQkJCWlmICh5eWNoIDw9ICdDJykgZ290byB5eTE0Nzc7CisgCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CitAQCAtMjIwODEsMTMgKzIyMjgwLDEzIEBAIHl5MTQ4ODoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0OTA7CisrCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0OTI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0ODk6CisreXkxNDkxOgorIAl5eWFjY2VwdCA9IDU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcuJykgeworQEAgLTIyMTIyLDcgKzIyMzIxLDcgQEAgeXkxNDg5OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ5MDoKKyt5eTE0OTI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMjIxNTIsNyArMjIzNTEsNyBAQCB5eTE0OTA6CisgCQkJfQorIAkJfQorIAl9CisteXkxNDkxOgorK3l5MTQ5MzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVycpIHsKKyAJCWlmICh5eWNoIDw9ICdOJykgeworQEAgLTIyMTYwLDI5ICsyMjM1OSwyOSBAQCB5eTE0OTE6CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDk5OworKwkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE1MDE7CisgCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTY2OworLQkJCWlmICh5eWNoIDw9ICdWJykgZ290byB5eTE1MDA7CistCQkJZ290byB5eTE0OTc7CisrCQkJaWYgKHl5Y2ggPD0gJ1YnKSBnb3RvIHl5MTUwMjsKKysJCQlnb3RvIHl5MTQ5OTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdvJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQ5OTsKKysJCQlnb3RvIHl5MTUwMTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ3YnKSB7CisgCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE2NjsKKy0JCQkJZ290byB5eTE1MDA7CisrCQkJCWdvdG8geXkxNTAyOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd3JykgZ290byB5eTE0OTc7CisrCQkJCWlmICh5eWNoIDw9ICd3JykgZ290byB5eTE0OTk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDkyOgorK3l5MTQ5NDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnWCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMTkxLDcgKzIyMzkwLDcgQEAgeXkxNDkyOgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdXJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQ5NjsKKysJCQlnb3RvIHl5MTQ5ODsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICd3JykgeworQEAgLTIyMTk5LDEyICsyMjM5OCwxMiBAQCB5eTE0OTI6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAneCcpIGdvdG8geXkxNDk2OworKwkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE0OTg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDkzOgorK3l5MTQ5NToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMjIwLDEyICsyMjQxOSwxMiBAQCB5eTE0OTM6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDk0OworKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0OTY7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDk0OgorK3l5MTQ5NjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMjQxLDEyICsyMjQ0MCwxMiBAQCB5eTE0OTQ6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDk1OworKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0OTc7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDk1OgorK3l5MTQ5NzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnSCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMjY4LDcgKzIyNDY3LDcgQEAgeXkxNDk1OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDk2OgorK3l5MTQ5ODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMjc3LDcgKzIyNDc2LDcgQEAgeXkxNDk2OgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE2NzsKKy0JCQlnb3RvIHl5MTQyNjsKKysJCQlnb3RvIHl5MTQyODsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdzJykgeworQEAgLTIyMjg1LDIxICsyMjQ4NCwyMiBAQCB5eTE0OTY6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI2OworKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0Mjg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDk3OgorK3l5MTQ5OToKKyAJKytZWUNVUlNPUjsKKyAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnQCcpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKy0JCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0OTg7CisrCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTAwOworIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAl9CisteXkxNDk4OgorK3l5MTUwMDoKKysjbGluZSA5ODIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoIm5vdyIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTIyMzA3LDcgKzIyNTA3LDggQEAgeXkxNDk4OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9SRUxBVElWRTsKKyAJfQorLXl5MTQ5OToKKysjbGluZSAyMjUxMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyt5eTE1MDE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjMxNiw3ICsyMjUxNyw3IEBAIHl5MTQ5OToKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNjc7CistCQkJZ290byB5eTE1MDU7CisrCQkJZ290byB5eTE1MDc7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnbScpIHsKK0BAIC0yMjMyNCwxMiArMjI1MjUsMTIgQEAgeXkxNDk5OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUwNTsKKysJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNTA3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUwMDoKKyt5eTE1MDI6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CitAQCAtMjIzNjQsMTMgKzIyNTY1LDEzIEBAIHl5MTUwMDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MDE7CisrCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MDM7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MDE6CisreXkxNTAzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdNJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjIzODYsMTIgKzIyNTg3LDEyIEBAIHl5MTUwMToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MDI7CisrCQkJaWYgKHl5Y2ggPD0gJ20nKSBnb3RvIHl5MTUwNDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MDI6CisreXkxNTA0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdCJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjI0MDcsMzYgKzIyNjA4LDM3IEBAIHl5MTUwMjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjk7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MDM7CisrCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTUwNTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MDM6CisreXkxNTA1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdEJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJZ290byB5eTM7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTA0OworKwkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNjsKKyAJCWlmICh5eWNoICE9ICdlJykgZ290byB5eTM7CisgCX0KKy15eTE1MDQ6CisreXkxNTA2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICdSJykgZ290byB5eTIyOTsKKyAJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MjI5OworIAlnb3RvIHl5NTY7CisteXkxNTA1OgorK3l5MTUwNzoKKyAJKytZWUNVUlNPUjsKKyAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnQCcpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKy0JCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE1MDY7CisrCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTA4OworIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAl9CisteXkxNTA2OgorK3l5MTUwODoKKysjbGluZSA5OTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoIm5vb24iKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0yMjQ0Nyw3ICsyMjY0OSw4IEBAIHl5MTUwNjoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTE1MDc6CisrI2xpbmUgMjI2NTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxNTA5OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdWJykgeworQEAgLTIyNDY1LDE1ICsyMjY2OCwxNSBAQCB5eTE1MDc6CisgCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQ5OTsKKysJCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTUwMTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTY2OworLQkJCQlnb3RvIHl5MTUwMDsKKysJCQkJZ290byB5eTE1MDI7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ24nKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSB7CistCQkJCWlmICh5eWNoIDw9ICdXJykgZ290byB5eTE0OTc7CisrCQkJCWlmICh5eWNoIDw9ICdXJykgZ290byB5eTE0OTk7CisgCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKK0BAIC0yMjQ4MywxNyArMjI2ODYsMTcgQEAgeXkxNTA3OgorIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ3YnKSB7CistCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE1MTQ7CisrCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE1MTY7CisgCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE3MTsKKy0JCQkJZ290byB5eTE1MTU7CisrCQkJCWdvdG8geXkxNTE3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd3JykgZ290byB5eTE1MTM7CisrCQkJCWlmICh5eWNoIDw9ICd3JykgZ290byB5eTE1MTU7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTA4OgorK3l5MTUxMDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnVycpIHsKK0BAIC0yMjUwOCw3ICsyMjcxMSw3IEBAIHl5MTUwODoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdYJykgZ290byB5eTE0OTY7CisrCQkJaWYgKHl5Y2ggPD0gJ1gnKSBnb3RvIHl5MTQ5ODsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyNTE3LDEzICsyMjcyMCwxMyBAQCB5eTE1MDg6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3gnKSBnb3RvIHl5MTUxMjsKKysJCQkJaWYgKHl5Y2ggPD0gJ3gnKSBnb3RvIHl5MTUxNDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MDk6CisreXkxNTExOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdNJykgeworQEAgLTIyNTM4LDcgKzIyNzQxLDcgQEAgeXkxNTA5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ5NDsKKysJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDk2OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjI1NDcsMTMgKzIyNzUwLDEzIEBAIHl5MTUwOToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNTEwOworKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNTEyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUxMDoKKyt5eTE1MTI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMjI1NjgsNyArMjI3NzEsNyBAQCB5eTE1MTA6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDk1OworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0OTc7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMjU3NywxMyArMjI3ODAsMTMgQEAgeXkxNTEwOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MTE7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MTM7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTExOgorK3l5MTUxMzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRycpIHsKK0BAIC0yMjYxMyw3ICsyMjgxNiw3IEBAIHl5MTUxMToKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTI6CisreXkxNTE0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTIyNjI4LDcgKzIyODMxLDcgQEAgeXkxNTEyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyNjsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDI4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjI2MzcsMzYgKzIyODQwLDM2IEBAIHl5MTUxMjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDU4OworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYwOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUxMzoKKyt5eTE1MTU6CisgCXl5YWNjZXB0ID0gMzE7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcvJykgeworIAkJaWYgKHl5Y2ggPD0gJywnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworLQkJCWdvdG8geXkxNDk4OworKwkJCWdvdG8geXkxNTAwOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNDk4OworKwkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE1MDA7CisgCQkJZ290byB5eTE3MjsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdeJykgeworLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE0OTg7CisrCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTUwMDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CistCQkJZ290byB5eTE0OTg7CisrCQkJZ290byB5eTE1MDA7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdfJykgZ290byB5eTE3MjsKKy0JCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDk4OworKwkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE1MDA7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworLQkJCWdvdG8geXkxNDk4OworKwkJCWdvdG8geXkxNTAwOworIAkJfQorIAl9CisteXkxNTE0OgorK3l5MTUxNjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTScpIHsKK0BAIC0yMjY4MSw3ICsyMjg4NCw3IEBAIHl5MTUxNDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE1MDU7CisrCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTUwNzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyNjkwLDEzICsyMjg5MywxMyBAQCB5eTE1MTQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUyMDsKKysJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUyMjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTU6CisreXkxNTE3OgorIAl5eWFjY2VwdCA9IDU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICc5JykgeworQEAgLTIyNzI0LDcgKzIyOTI3LDcgQEAgeXkxNTE1OgorIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwMTsKKysJCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwMzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KK0BAIC0yMjczNCwxMyArMjI5MzcsMTMgQEAgeXkxNTE1OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUxNjsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUxODsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUxNjoKKyt5eTE1MTg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0wnKSB7CitAQCAtMjI3NTUsNyArMjI5NTgsNyBAQCB5eTE1MTY6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNTAyOworKwkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE1MDQ7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMjc2NCwxMyArMjI5NjcsMTMgQEAgeXkxNTE2OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MTc7CisrCQkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MTk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTE3OgorK3l5MTUxOToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQScpIHsKK0BAIC0yMjc4NSw3ICsyMjk4OCw3IEBAIHl5MTUxNzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTE1MDM7CisrCQkJaWYgKHl5Y2ggPD0gJ0InKSBnb3RvIHl5MTUwNTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyNzk0LDEzICsyMjk5NywxMyBAQCB5eTE1MTc6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTUxODsKKysJCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTUyMDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTg6CisreXkxNTIwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdEJykgeworQEAgLTIyODE0LDQ0ICsyMzAxNyw0NCBAQCB5eTE1MTg6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKy0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTA0OworKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDY7CisgCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTE5OworKwkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE1MjE7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNTE5OgorK3l5MTUyMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkyMjk7CisgCWlmICh5eWNoID09ICdyJykgZ290byB5eTM0MTsKKyAJZ290byB5eTE3OTsKKy15eTE1MjA6CisreXkxNTIyOgorIAl5eWFjY2VwdCA9IDMyOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLycpIHsKKyAJCWlmICh5eWNoIDw9ICcsJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKy0JCQlnb3RvIHl5MTUwNjsKKysJCQlnb3RvIHl5MTUwODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTUwNjsKKysJCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNTA4OworIAkJCWdvdG8geXkxNzI7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXicpIHsKKy0JCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNTA2OworKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE1MDg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworLQkJCWdvdG8geXkxNTA2OworKwkJCWdvdG8geXkxNTA4OworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnXycpIGdvdG8geXkxNzI7CistCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwNjsKKysJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTA4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKy0JCQlnb3RvIHl5MTUwNjsKKysJCQlnb3RvIHl5MTUwODsKKyAJCX0KKyAJfQorLXl5MTUyMToKKyt5eTE1MjM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjg2NywxMiArMjMwNzAsMTIgQEAgeXkxNTIxOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUyMjsKKysJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNTI0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUyMjoKKyt5eTE1MjQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjg4OCwxMiArMjMwOTEsMTIgQEAgeXkxNTIyOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTUyMzsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTI1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUyMzoKKyt5eTE1MjU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0UnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjkwOSwxMiArMjMxMTIsMTIgQEAgeXkxNTIzOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUyNDsKKysJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTI2OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUyNDoKKyt5eTE1MjY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjkzMCwzMiArMjMxMzMsMzMgQEAgeXkxNTI0OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2OTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUyNTsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNTI3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUyNToKKyt5eTE1Mjc6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0MnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlnb3RvIHl5MzsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE1MjY7CisrCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI4OworIAkJaWYgKHl5Y2ggIT0gJ2QnKSBnb3RvIHl5MzsKKyAJfQorLXl5MTUyNjoKKyt5eTE1Mjg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTUyNzsKKysJaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTUyOTsKKyAJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5NTY7CisteXkxNTI3OgorK3l5MTUyOToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxNTI4OworKwlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxNTMwOworIAlpZiAoeXljaCAhPSAneScpIGdvdG8geXk1NjsKKy15eTE1Mjg6CisreXkxNTMwOgorIAkrK1lZQ1VSU09SOworLXl5MTUyOToKKyt5eTE1MzE6CisrI2xpbmUgOTcwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJ5ZXN0ZXJkYXkiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0yMjk2Niw3ICsyMzE3MCw4IEBAIHl5MTUyOToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTE1MzA6CisrI2xpbmUgMjMxNzQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxNTMyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTIyOTgxLDcgKzIzMTg2LDcgQEAgeXkxNTMwOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTUyMjsKKysJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNTI0OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjI5OTAsMTMgKzIzMTk1LDEzIEBAIHl5MTUzMDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNTMxOworKwkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNTMzOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUzMToKKyt5eTE1MzM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMjMwMTEsNyArMjMyMTYsNyBAQCB5eTE1MzE6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNTIzOworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE1MjU7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMzAyMCwxMyArMjMyMjUsMTMgQEAgeXkxNTMxOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MzI7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MzQ7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTMyOgorK3l5MTUzNDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRCcpIHsKK0BAIC0yMzA0MSw3ICsyMzI0Niw3IEBAIHl5MTUzMjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MjQ7CisrCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUyNjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIzMDUwLDEzICsyMzI1NSwxMyBAQCB5eTE1MzI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUzMzsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUzNTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MzM6CisreXkxNTM1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworQEAgLTIzMDcxLDcgKzIzMjc2LDcgQEAgeXkxNTMzOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTUyNTsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNTI3OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjMwODAsMTMgKzIzMjg1LDEzIEBAIHl5MTUzMzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNTM0OworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNTM2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUzNDoKKyt5eTE1MzY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0MnKSB7CitAQCAtMjMxMDAsMjEgKzIzMzA1LDIxIEBAIHl5MTUzNDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE1MjY7CisrCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTUyODsKKyAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdkJykgZ290byB5eTE1MzU7CisrCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTUzNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MzU6CisreXkxNTM3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjc7CisrCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjk7CisgCWlmICh5eWNoICE9ICdhJykgZ290byB5eTE3OTsKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxNTI4OworKwlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxNTMwOworIAlpZiAoeXljaCAhPSAneScpIGdvdG8geXkxNzk7CisgCXl5YWNjZXB0ID0gMzM7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtMjMxMjMsMTMgKzIzMzI4LDE0IEBAIHl5MTUzNToKKyAJfQorIAlpZiAoeXljaCA8PSAnLicpIHsKKyAJCWlmICh5eWNoID09ICctJykgZ290byB5eTE3MjsKKy0JCWdvdG8geXkxNTI5OworKwkJZ290byB5eTE1MzE7CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7CisgCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CistCQlnb3RvIHl5MTUyOTsKKysJCWdvdG8geXkxNTMxOworIAl9CisgfQorKyNsaW5lIDE3NzIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAorIH0KKyAKK2RpZmYgLS1naXQgYS9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlCitpbmRleCA3NGQ5ZWEzLi5mMjZlMjc2IDEwMDY0NAorLS0tIGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUKKysrKyBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlCitAQCAtOTMxLDggKzkzMSw4IEBAIGlzb3dlZWsgICAgICAgICAgPSB5ZWFyNCAiLSI/ICJXIiB3ZWVrb2Z5ZWFyOworIGV4aWYgICAgICAgICAgICAgPSB5ZWFyNCAiOiIgbW9udGhseiAiOiIgZGF5bHogIiAiIGhvdXIyNGx6ICI6IiBtaW51dGVseiAiOiIgc2Vjb25kbHo7CisgZmlyc3RkYXlvZiAgICAgICA9ICdmaXJzdCBkYXkgb2YnOworIGxhc3RkYXlvZiAgICAgICAgPSAnbGFzdCBkYXkgb2YnOworLWJhY2tvZiAgICAgICAgICAgPSAnYmFjayBvZiAnIGhvdXIyNCBzcGFjZT8gbWVyaWRpYW4/OworLWZyb250b2YgICAgICAgICAgPSAnZnJvbnQgb2YgJyBob3VyMjQgc3BhY2U/IG1lcmlkaWFuPzsKKytiYWNrb2YgICAgICAgICAgID0gJ2JhY2sgb2YgJyBob3VyMjQgKHNwYWNlPyBtZXJpZGlhbik/OworK2Zyb250b2YgICAgICAgICAgPSAnZnJvbnQgb2YgJyBob3VyMjQgKHNwYWNlPyBtZXJpZGlhbik/OworIAorIC8qIENvbW1vbiBMb2cgRm9ybWF0OiAxMC9PY3QvMjAwMDoxMzo1NTozNiAtMDcwMCAqLworIGNsZiAgICAgICAgICAgICAgPSBkYXkgIi8iIG1vbnRoYWJiciAiLyIgeWVhcjQgIjoiIGhvdXIyNGx6ICI6IiBtaW51dGVseiAiOiIgc2Vjb25kbHogc3BhY2UgdHpjb3JyZWN0aW9uOworZGlmZiAtLWdpdCBhL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdCBiL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdAoraW5kZXggOGY0OGIxYi4uOGRjZDRjOCAxMDA2NDQKKy0tLSBhL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdAorKysrIGIvZXh0L2RhdGUvdGVzdHMvYnVnNTM0MzdfdmFyMy5waHB0CitAQCAtNDAsNyArNDAsNyBAQCBvYmplY3QoRGF0ZUludGVydmFsKSMlZCAoMTYpIHsKKyAgIFsic3BlY2lhbF9hbW91bnQiXT0+CisgICBpbnQoLTEpCisgICBbImhhdmVfd2Vla2RheV9yZWxhdGl2ZSJdPT4KKy0gIGludCg5KQorKyAgaW50KDApCisgICBbImhhdmVfc3BlY2lhbF9yZWxhdGl2ZSJdPT4KKyAgIGludCgwKQorICAgWyJmIl09PgorZGlmZiAtLWdpdCBhL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQgYi9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjk1NjI4NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUucGhwdAorQEAgLTAsMCArMSwyMCBAQAorKy0tVEVTVC0tCisrQnVnICM3NTA1NSBPdXQtT2YtQm91bmRzIFJlYWQgaW4gdGltZWxpYl9tZXJpZGlhbigpCisrLS1TS0lQSUYtLQorKzw/cGhwIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgid2RkeCIpKSBwcmludCAic2tpcCI7ID8+CisrLS1GSUxFLS0KKys8P3BocAorKworKyRmaWxlX3N0ciA9IGRpcm5hbWUoX19GSUxFX18pIC4gIi9idWc3NTA1NS53ZGR4IjsKKysKKyskd2RkeF9zdHIgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9zdHIpOworK3ByaW50IHN0cmxlbigkd2RkeF9zdHIpIC4gIiBieXRlcyByZWFkLlxuIjsKKysKKyt2YXJfZHVtcCh3ZGR4X2Rlc2VyaWFsaXplKCR3ZGR4X3N0cikpOworKz8+CisrLS1FWFBFQ1QtLQorKzMyMyBieXRlcyByZWFkLgorK2FycmF5KDEpIHsKKysgIFsiYURhdGVUaW1lIl09PgorKyAgc3RyaW5nKDEyKSAiZnJPTnQgb2YgMCAwIgorK30KK2RpZmYgLS1naXQgYS9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4IGIvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY0OTMzNTIKKy0tLSAvZGV2L251bGwKKysrKyBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LndkZHgKK0BAIC0wLDAgKzEsMTMgQEAKKys8P3htbCB2ZXJzaW9uPScxLjAnPz4KKys8IURPQ1RZUEUgd2RkeFBhY2tldCBTWVNURU0gJ3dkZHhfMDEwMC5kdGQnPgorKzx3ZGR4UGFja2V0IHZlcnNpb249JzEuMCc+CisrPGhlYWRlci8+CisrCTxkYXRhPgorKyAgICAgICAgCTxzdHJ1Y3Q+CisrICAgICAgICAgICAgICAgICAgICA8dmFyIG5hbWU9J2FEYXRlVGltZSc+CisrICAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRlVGltZT5mck9OdCBvZiAwIDA8L2RhdGVUaW1lPgorKyAgICAgICAgICAgICAgICAgICAgIDwvdmFyPgorKyAgICAgICAgICAgICAgICA8L3N0cnVjdD4KKysJPC9kYXRhPgorKzwvd2RkeFBhY2tldD4KKysKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjcvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS43L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCmluZGV4IDBlNTUwMjAuLjI4M2Q2MzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCkBAIC0yMDMsNiArMjAzLDcgQEAKIAogUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE59LWNsaSAke1BOfS1jZ2kgJHtQTn0tZnBtICR7UE59LWZwbS1hcGFjaGUyICR7UE59LXBlYXIgJHtQTn0tcGhhciAke01PRFBIUF9QQUNLQUdFfSAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyAke1BOfSIKIAorUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKIFJERVBFTkRTXyR7UE59LXBlYXIgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1waGFyID0gIiR7UE59LWNsaSIKIFJERVBFTkRTXyR7UE59LWNsaSA9ICIke1BOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmY2U5NDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIHBocC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjYwMjYzNmQ0NmE2MWMwYWMwNDMyYmJmNWMwNzhmZTQiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRocmVhZC1jaGVjay10aHJlYWRzLW00LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNiNDI0YjcwNWNmYjcxNWZjMDRmNDk5ZjhhOGNmNTJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0N2FhYjgwODNhNDI4NGI5MDU3NzdlMWI0NWRkNzczNWFkYzUzYmU4MjdiMjlmODk2Njg0NzUwYWM4YjYyMzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkODA0N2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHBocC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjYwMjYzNmQ0NmE2MWMwYWMwNDMyYmJmNWMwNzhmZTQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHRocmVhZC1jaGVjay10aHJlYWRzLW00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYyMGFiZTI1ZTBkNmNkNWYwNDFhMzYwYTMwY2U1NzgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmMzk3MTY5Y2I2NWYwNTM5ZjNiY2IwNDA2MGY5Nzc3MGQ3M2UxOTA3NGEzN2JkMmM1OGI5OGViZjZlY2IxMGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJmOTIzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBwaHAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwYWY1OTlmNjZkMDQ2MWM1ODM3YzY5NWZjYmM1YzFlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtU3BlY2lmeS10YWctd2l0aC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjIyZTExYTM3MmY5OWFmYmJiZjNmNDZhMzFlOGE4MmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3OWI2NzkyOTg3ZjM4ZGM0ODVmOTIyNThjMDRmOWUwMmRlZGQ1OTNmOWQyNjBlYmU3MjUzNDNmODEyZDFmZjgiCi0KLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbGk9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbXlzcWxfY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tbXlzcWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbXlzcWxfY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKLQotRklMRVNfJHtQTn0tZnBtICs9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uZC93d3cuY29uZi5kZWZhdWx0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmNjhhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4xLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSBwaHAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwYWY1OTlmNjZkMDQ2MWM1ODM3YzY5NWZjYmM1YzFlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtU3BlY2lmeS10YWctd2l0aC1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNjY0Mi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzk3YmU1NGYzMjgxY2RmMzBjN2VmMDc2YjI4ZjdkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTRkY2MxMGRmZGQ3YzQ0NDNlZGI0ZmUxZTEzM2E0NGYyYjJhODM1MWJlOGM5ZWI2YWI5MjIyZDQ1ZmQ5YmFlIgorCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtcGRvLW15c3FsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAsLS13aXRob3V0LW15c3FsaSAtLXdpdGhvdXQtcGRvLW15c3FsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICxteXNxbDUiCisKK0ZJTEVTXyR7UE59LWZwbSArPSAiJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtLXFhL3BtLXFhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtLXFhL3BtLXFhX2dpdC5iYgppbmRleCA3MzIyZGY4Li4xZWU2NTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbS1xYS9wbS1xYV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG0tcWEvcG0tcWFfZ2l0LmJiCkBAIC00LDEyICs0LDExIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVBWID0gIjAuNC4xNCIKK1BWID0gIjAuNS4yIgogCiBCUkFOQ0ggPz0gIm1hc3RlciIKIAotIyBDb3JyZXNwb25kcyB0byB0YWcgcG0tcWEtdjAuNC4xNAotU1JDUkVWID0gIjkxMTFkMTkzMGYwMjMzNzM5NGNmMTZlODRhZDJhMjdmMzM2MDdjYmIiCitTUkNSRVYgPSAiMDU3MTBlYzUwMzJiZTRjOGVkYWZiNDEwOWQ0ZDkwOGQzMTI0MzkwNiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGluYXJvLm9yZy9wb3dlci9wbS1xYS5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD0ke0JSQU5DSH0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtdG9vbHMvcG10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbXRvb2xzL3BtdG9vbHNfZ2l0LmJiCmluZGV4IDk0ZmM3MzYuLjg0OTFmYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtdG9vbHMvcG10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG10b29scy9wbXRvb2xzX2dpdC5iYgpAQCAtMTUsNiArMTUsMTEgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAoraW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWNwaXh0cmFjdCIKKwogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGUoKSB7CiAgICAgb2VfcnVubWFrZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZmI5NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgcHJvdG9idWYtYywgYSBDIGltcGxlbWVudGF0aW9uIG9mIHRoZSBHb29nbGUgUHJvdG9jb2wgQnVmZmVycyBkYXRhIFwKLXNlcmlhbGl6YXRpb24gZm9ybWF0LiBJdCBpbmNsdWRlcyBsaWJwcm90b2J1Zi1jLCBhIHB1cmUgQyBsaWJyYXJ5IHRoYXQgXAotaW1wbGVtZW50cyBwcm90b2J1ZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcsIGFuZCBwcm90b2MtYywgYSBjb2RlIGdlbmVyYXRvciB0aGF0IFwKLWNvbnZlcnRzIFByb3RvY29sIEJ1ZmZlciAucHJvdG8gZmlsZXMgdG8gQyBkZXNjcmlwdG9yIGNvZGUsIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBwcm90b2MuIHByb3RvYnVmLWMgZm9ybWVybHkgaW5jbHVkZWQgYW4gUlBDIGltcGxlbWVudGF0aW9uOyB0aGF0IGNvZGUgXAotaGFzIGJlZW4gc3BsaXQgb3V0IGludG8gdGhlIHByb3RvYnVmLWMtcnBjIHByb2plY3QuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvYnVmLWMvcHJvdG9idWYtYyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotCi1ERVBFTkRTID0gInByb3RvYnVmLW5hdGl2ZSBwcm90b2J1ZiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICJwcm90b2J1Zi1jb21waWxlciIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIzNWMzMTk1YTM5Njg1MjRkYzE1MjRiNGViZWEwYzBlIgotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jL2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImI4ODRhZWJhNDI4MzMwOTQ0NWE4ZTNiNmU3MzIyZGQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNzA4ZmIzYzAyNGI5ZTZlODZkZjE0MWZhZmY4MDIxOTRmNWRiOTBhNGI3OWU2ZDRhYTZiZDYxZGQ5ODNkZDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMWU2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4wLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgcHJvdG9idWYtYywgYSBDIGltcGxlbWVudGF0aW9uIG9mIHRoZSBHb29nbGUgUHJvdG9jb2wgQnVmZmVycyBkYXRhIFwKK3NlcmlhbGl6YXRpb24gZm9ybWF0LiBJdCBpbmNsdWRlcyBsaWJwcm90b2J1Zi1jLCBhIHB1cmUgQyBsaWJyYXJ5IHRoYXQgXAoraW1wbGVtZW50cyBwcm90b2J1ZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcsIGFuZCBwcm90b2MtYywgYSBjb2RlIGdlbmVyYXRvciB0aGF0IFwKK2NvbnZlcnRzIFByb3RvY29sIEJ1ZmZlciAucHJvdG8gZmlsZXMgdG8gQyBkZXNjcmlwdG9yIGNvZGUsIGJhc2VkIG9uIHRoZSBcCitvcmlnaW5hbCBwcm90b2MuIHByb3RvYnVmLWMgZm9ybWVybHkgaW5jbHVkZWQgYW4gUlBDIGltcGxlbWVudGF0aW9uOyB0aGF0IGNvZGUgXAoraGFzIGJlZW4gc3BsaXQgb3V0IGludG8gdGhlIHByb3RvYnVmLWMtcnBjIHByb2plY3QuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvYnVmLWMvcHJvdG9idWYtYyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorCitERVBFTkRTID0gInByb3RvYnVmLW5hdGl2ZSBwcm90b2J1ZiIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1jb21waWxlciA9ICJwcm90b2J1Zi1jb21waWxlciIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNiOTAxMTY4NzE1ZjQ3ODJhMmIwNmMzZGRhZWZhNTU4IgorCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImRhYzFhNjVmZWFjNGFkNzJmNjEyYWFiOTlmNDg3MDU2ZmJjZjVjMWEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMuZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODIxMGIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgotREVTQ1JJUFRJT04gPSAiUHJvdG9jb2wgQnVmZmVycyBhcmUgYSB3YXkgb2YgZW5jb2Rpbmcgc3RydWN0dXJlZCBkYXRhIGluIGFuIFwKLWVmZmljaWVudCB5ZXQgZXh0ZW5zaWJsZSBmb3JtYXQuIEdvb2dsZSB1c2VzIFByb3RvY29sIEJ1ZmZlcnMgZm9yIGFsbW9zdCBcCi1hbGwgb2YgaXRzIGludGVybmFsIFJQQyBwcm90b2NvbHMgYW5kIGZpbGUgZm9ybWF0cy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotCi1ERVBFTkRTID0gInpsaWIiCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1OTUzYzc1MmVmYzkyOTliMTg0ZjkxYmVmNTQwMDk1IgotCi1TUkNSRVYgPSAiYTQyOGU0MjA3Mjc2NTk5M2ZmNjc0ZmRhNzI4NjNjOWYxYWEyZDI2OCIKLQotUFYgPSAiMy4xLjArZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYuZ2l0IgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtcHJvdG9jPWVjaG8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9jJHtTT0xJQlN9IgotCi1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTdjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjQuMS5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCitERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIGFyZSBhIHdheSBvZiBlbmNvZGluZyBzdHJ1Y3R1cmVkIGRhdGEgaW4gYW4gXAorZWZmaWNpZW50IHlldCBleHRlbnNpYmxlIGZvcm1hdC4gR29vZ2xlIHVzZXMgUHJvdG9jb2wgQnVmZmVycyBmb3IgYWxtb3N0IFwKK2FsbCBvZiBpdHMgaW50ZXJuYWwgUlBDIHByb3RvY29scyBhbmQgZmlsZSBmb3JtYXRzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYiCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKKworREVQRU5EUyA9ICJ6bGliIgorUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNTk1M2M3NTJlZmM5Mjk5YjE4NGY5MWJlZjU0MDA5NSIKKworU1JDUkVWID0gImIwNGU1Y2JhMzU2MjEyZTRlOGM2NmM2MWJiZTBjM2EyMDUzN2M1YjkiCisKK1BWID0gIjMuNC4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmLmdpdDticmFuY2g9My40LngiCisKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aC1wcm90b2M9ZWNobyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9jJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tbGl0ZSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYnVmLWxpdGUke1NPTElCU30iCisKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjAuNS5iYgppbmRleCAzZWIxODgyLi5jODVmYzU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMC41LmJiCkBAIC0xMiwzICsxMiw1IEBACiBTID0gIiR7V09SS0RJUn0vZnV0dXJlcy0ke1BWfSIKIAogaW5oZXJpdCBzZXR1cHRvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yMi4wLmJiCmluZGV4IGFjYzJmNWIuLjlkMmUxNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjIyLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weWd0ay5vcmcvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9yYXBpZGpzb24vcmFwaWRqc29uX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3JhcGlkanNvbi9yYXBpZGpzb25fZ2l0LmJiCmluZGV4IDRjZGVkMDcuLjhhYjM1ZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3JhcGlkanNvbi9yYXBpZGpzb25fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3JhcGlkanNvbi9yYXBpZGpzb25fZ2l0LmJiCkBAIC0yMSw1ICsyMSw2IEBACiAjIFJhcGlkSlNPTiBpcyBhIGhlYWRlci1vbmx5IEMrKyBsaWJyYXJ5LCBzbyB0aGUgbWFpbiBwYWNrYWdlIHdpbGwgYmUgZW1wdHkuCiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiMTc5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjguYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJUcmFjZSBhbmQgYW5hbHl6ZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gQy9DKysiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFtaHl1bmcvdWZ0cmFjZSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICJlbGZ1dGlscyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorCitpbmhlcml0IGF1dG90b29scworCitTUkNSRVYgPSAiNWFmOWZmOWZhODljMzQwNjE3ZTUyYzhlZDA1Nzk4YjM1MmE3MTQ1YyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uYW1oeXVuZy8ke0JQTn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKK0VYVFJBX09FQ09ORiA9ICJBUkNIPSR7VEFSR0VUX0FSQ0h9IgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK0ZJTEVTX1NPTElCU0RFViA9ICIiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9Lyouc28iCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGFhcmNoNjR8YXJtKSIKKworIyB1ZnRyYWNlIHN1cHBvcnRzIGFybXY2IGFuZCBhYm92ZQorQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3V3LWltYXAvdXctaW1hcF8yMDA3Zi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3V3LWltYXAvdXctaW1hcF8yMDA3Zi5iYgppbmRleCAwODQ5ZTg4Li45MTAwM2Y2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXBfMjAwN2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdXctaW1hcC91dy1pbWFwXzIwMDdmLmJiCkBAIC02LDcgKzYsNyBAQAogCiBERVBFTkRTID0gIm9wZW5zc2wiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmNhYy53YXNoaW5ndG9uLmVkdS9pbWFwL2ltYXAtJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjL29sZC9pbWFwLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9xdW90ZV9jY3R5cGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW1hcC0yMDA3ZS1zaGFyZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW1hcC0yMDA3Zi1mb3JtYXQtc2VjdXJpdHkucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZDQ4MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlZhbGEgREJ1cyBCaW5kaW5nIFRvb2wiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJ2YWxhIGxpYmdlZSBsaWJ4bWwyIgotSE9NRVBBR0UgPSAiaHR0cDovL3dpa2kuZnJlZXNtYXJ0cGhvbmUub3JnL2luZGV4LnBocC9JbXBsZW1lbnRhdGlvbnMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbCIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLVBFID0gIjEiCi1JTkNfUFIgPSAicjMiCi0KLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZnJlZXNtYXJ0cGhvbmUvc291cmNlcy8ke0JQfS50YXIuYnoyIgotCi1pbmhlcml0IGF1dG90b29scyBwZXJsbmF0aXZlIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC11c2UtZGFzaC1pbi1tNC1tYWNyby1uYW1lcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC11c2UtZGFzaC1pbi1tNC1tYWNyby1uYW1lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRkODRhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRhc2gtaW4tbTQtbWFjcm8tbmFtZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDhhYmVkMmU1YmY4ZTc4MTViMTFkZjZkMjIwNDJkNWYwYWM4ZWZjYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDUgTWF5IDIwMTUgMTM6NDM6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkb24ndCB1c2UgZGFzaCBpbiBtNCBtYWNybyBuYW1lcwotCi0qIG90aGVyd2lzZSBpdCBkb2Vzbid0IGdldCBleHBhbmRlZCBhbmQgdmFsYS1kYnVzLWJpbmRpbmctdG9vbCBlbmRzIHdpdGggdmVyc2lvbiAndmFsYS1kYnVzLWJpbmRpbmctdG9vbF92ZXJzaW9uJwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDhmMDA3Yy4uMThkMGJkZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMSw5ICsxLDkgQEAKLS1tNF9kZWZpbmUoW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfcmVsZWFzZWRdLCBbMF0pCi0tbTRfZGVmaW5lKFt2YWxhLWRidXMtYmluZGluZy10b29sX2Jhc2VfdmVyc2lvbl0sIFsxLjBdKQotLW00X2RlZmluZShbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9tYXliZV9naXRyZXZdLCBtNF9pZih2YWxhLWRidXMtYmluZGluZy10b29sX3JlbGVhc2VkLCBbMV0sIFtdLCBbbTRfZXN5c2NtZChbZ2l0IHNob3ctcmVmIC0taGFzaD01IEhFQUQgfCB0ciAtZCAnXG5cciddKV0pKQotLW00X2RlZmluZShbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF92ZXJzaW9uXSwgbTRfaWYodmFsYS1kYnVzLWJpbmRpbmctdG9vbF9yZWxlYXNlZCwgWzFdLCBbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9iYXNlX3ZlcnNpb25dLCBbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9iYXNlX3ZlcnNpb24tdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9tYXliZV9naXRyZXZdKSkKLSttNF9kZWZpbmUoW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfcmVsZWFzZWRdLCBbMF0pCi0rbTRfZGVmaW5lKFt2YWxhX2RidXNfYmluZGluZ190b29sX2Jhc2VfdmVyc2lvbl0sIFsxLjBdKQotK200X2RlZmluZShbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9tYXliZV9naXRyZXZdLCBtNF9pZih2YWxhX2RidXNfYmluZGluZ190b29sX3JlbGVhc2VkLCBbMV0sIFtdLCBbbTRfZXN5c2NtZChbZ2l0IHNob3ctcmVmIC0taGFzaD01IEhFQUQgfCB0ciAtZCAnXG5cciddKV0pKQotK200X2RlZmluZShbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF92ZXJzaW9uXSwgbTRfaWYodmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9yZWxlYXNlZCwgWzFdLCBbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9iYXNlX3ZlcnNpb25dLCBbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9iYXNlX3ZlcnNpb24tdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9tYXliZV9naXRyZXZdKSkKLSAKLS1BQ19JTklUKFt2YWxhLWRidXMtYmluZGluZy10b29sXSwgW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfdmVyc2lvbl0sIFtmc29Ab3BlbnBob2VudXgub3JnXSwgW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xdKQotK0FDX0lOSVQoW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xdLCBbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF92ZXJzaW9uXSwgW2Zzb0BvcGVucGhvZW51eC5vcmddLCBbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF0pCi0gQUNfQ09ORklHX1NSQ0RJUihbc3JjL01ha2VmaWxlLmFtXSkKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLSBBTV9JTklUX0FVVE9NQUtFKFtkaXN0LWJ6aXAyXSkKLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sXzAuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sXzAuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWUzZGNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF8wLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSB2YWxhLWRidXMtYmluZGluZy10b29sLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTllYWI3YWJmMzhmMzUzNTVkMzc4NjgwM2JkMjQ0MWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWUzN2FiMmU2MjM4ZWFlZjlmNTczNTYwZWE3Mzc5ZTY5NTU1NzBmN2M5NTAzMDgzZTUwYzRjMTg1YzE5NTZkZiIKLQotUE5CTEFDS0xJU1RbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzE2MjgvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZjM0NTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgdmFsYS1kYnVzLWJpbmRpbmctdG9vbC5pbmMKLQotIyBUZW1wb3JhcnkgcmVtb3ZlIG5lZ2F0aXZlIHByZWZlcmVuY2UsIGJlY2F1c2UgdGhlcmUgYXJlIDIgdmVyc2lvbnMgb2YgMC40LjAgYXJjaGl2ZXM6Ci0jIHRoZSBvcmlnaW5hbCBvbmUgZGVwZW5kaW5nIG9uIGxpYmdlZTEuMCBmcm9tCi0jIGh0dHA6Ly9kb3dubG9hZHMuZnJlZXNtYXJ0cGhvbmUub3JnL3NvdXJjZXMvJHtCUE59LyR7QlB9LnRhci5iejIKLSMgYW5kIG5ldyBvbmUgZGVwZW5kaW5nIG9uIGxpYmdlZTAuOCBmcm9tCi0jIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZnJlZXNtYXJ0cGhvbmUvZmlsZXMvc291cmNlcy8KLSMgVGhlIG9yaWdpbmFsIG9uZSBjYW4gYmUgYWxyZWFkeSBkZXBsb3llZCBvbiB2YXJpb3VzIHByZW1pcnJvcnMsCi0jIHNvIHByZWZlciB0aGUgZ2l0IHJlY2lwZSB3aGljaCBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgaXNzdWUKLSMgREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNSRVYgPSAiNzQyYzA0YzJiYjA3NDM4OTE5MDQ1MjJjZTQ3ZTUwZjllNWM5OWIxMiIKLVBWID0gIjAuNC4wK2dpdHIke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZyZWVzbWFydHBob25lL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRhc2gtaW4tbTQtbWFjcm8tbmFtZXMucGF0Y2ggXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUE5CTEFDS0xJU1RbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA1ODEvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy94bWxycGMtYy94bWxycGMtYy8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzRkNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA5NTBiMjdmODMyMGI4NDE0OTBjYWZjYjNlNmUzYjgxOGM3MTc0YzBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBKdWwgMjAxNyAyMjozMjo1MCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBmYWlsdXJlIGFnYWluc3QgbXVzbCBDIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3QvY3BwL3NlcnZlcl9hYnlzcy5jcHAgICAgICAgICAgICAgICB8ICAyICstCisgdG9vbHMveG1scnBjX3BzdHJlYW0veG1scnBjX3BzdHJlYW0uY3BwIHwgMTAgKysrKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9jcHAvc2VydmVyX2FieXNzLmNwcCBiL3Rlc3QvY3BwL3NlcnZlcl9hYnlzcy5jcHAKK2luZGV4IDI0NThhOGYuLjgyZjkxZGEgMTAwNjQ0CistLS0gYS90ZXN0L2NwcC9zZXJ2ZXJfYWJ5c3MuY3BwCisrKysgYi90ZXN0L2NwcC9zZXJ2ZXJfYWJ5c3MuY3BwCitAQCAtMTgsNyArMTgsNyBAQAorICNpZmRlZiBXSU4zMgorICAgI2luY2x1ZGUgPHdpbnNvY2syLmg+CisgI2Vsc2UKKy0gICNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+CisrICAjaW5jbHVkZSA8dW5pc3RkLmg+CisgICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICAgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KK2RpZmYgLS1naXQgYS90b29scy94bWxycGNfcHN0cmVhbS94bWxycGNfcHN0cmVhbS5jcHAgYi90b29scy94bWxycGNfcHN0cmVhbS94bWxycGNfcHN0cmVhbS5jcHAKK2luZGV4IGQzOWUxMDUuLjFmZDg5MDAgMTAwNjQ0CistLS0gYS90b29scy94bWxycGNfcHN0cmVhbS94bWxycGNfcHN0cmVhbS5jcHAKKysrKyBiL3Rvb2xzL3htbHJwY19wc3RyZWFtL3htbHJwY19wc3RyZWFtLmNwcAorQEAgLTE1LDExICsxNSwxNSBAQAorICNpbmNsdWRlICJ4bWxycGMtYy9naXJlcnIuaHBwIgorIHVzaW5nIGdpcmVycjo6dGhyb3dmOworIAorLSNpbmNsdWRlIDxmZWF0dXJlcy5oPiAgLy8gZm9yIF9fQkVHSU5fREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKyAKKy1fX0JFR0lOX0RFQ0xTCisgI2luY2x1ZGUgImR1bXB2YWx1ZS5oIiAgLyogQW4gaW50ZXJuYWwgWG1scnBjLWMgaGVhZGVyIGZpbGUgISAqLworLV9fRU5EX0RFQ0xTCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZgorIAorIAorICNpbmNsdWRlIDx4bWxycGMtYy9iYXNlLmhwcD4KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMi1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy94bWxycGMtYy94bWxycGMtYy8wMDAyLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMi1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAxNGYxNWNiMGYwM2RlZmE4ZWZiNGM4ZTJmZWNlNThlNTA2NTViZTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCAyMyBKdWwgMjAxNyAyMjoyMDoyOSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzcmMveG1scnBjX3NlcnZlcl9hYnlzcy5jOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKKworRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKK3xzcmMveG1scnBjX3NlcnZlcl9hYnlzcy5jOjc3MToxMzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbAorYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICAgICAgICB4bWxycGNfZmF1bHRmKGVudlAsIGVycm9yKTsKK3wgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy94bWxycGNfc2VydmVyX2FieXNzLmMgYi9zcmMveG1scnBjX3NlcnZlcl9hYnlzcy5jCitpbmRleCAyMzg4NjUyLi4zODQzZjEwIDEwMDY0NAorLS0tIGEvc3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYworKysrIGIvc3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYworQEAgLTc2OCw3ICs3NjgsNyBAQCBjcmVhdGVTZXJ2ZXIoeG1scnBjX2VudiAqICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudlAsCisgICAgICAgICBTZXJ2ZXJJbml0MihhYnlzc1NlcnZlclAsICZlcnJvcik7CisgCisgICAgICAgICBpZiAoZXJyb3IpIHsKKy0gICAgICAgICAgICB4bWxycGNfZmF1bHRmKGVudlAsIGVycm9yKTsKKysgICAgICAgICAgICB4bWxycGNfZmF1bHRmKGVudlAsICIlcyIsIGVycm9yKTsKKyAgICAgICAgICAgICB4bWxycGNfc3RyZnJlZShlcnJvcik7CisgICAgICAgICB9CisgICAgIH0KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWNfMS4zMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWNfMS4zMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTU4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy94bWxycGMtYy94bWxycGMtY18xLjMxLjAuYmIKQEAgLTAsMCArMSwyNCBAQAorREVTQ1JJUFRJT04gPSAiWE1MLVJQQyBmb3IgQy9DKysgaXMgcHJvZ3JhbW1pbmcgbGlicmFyaWVzIGFuZCByZWxhdGVkIHRvb2xzIHRvIGhlbHAgeW91IFwKK3dyaXRlIGFuIFhNTC1SUEMgc2VydmVyIG9yIGNsaWVudCBpbiBDIG9yIEMrKy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly94bWxycGMtYy5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9YWVmYmY4MWJhMDc1MGYwMjE3NmI2Zjg2NzUyZWE5NTEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9lbnNjL3htbHJwYy1jLmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICI4MTQ0M2E5ZGMyMzRjYzI3NTQ0OWRiYzE3ODY3YWQ3N2FlMTg5MTI0IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJjdXJsIGxpYnhtbDIiCitSREVQRU5EU18ke1BOfSA9ICJjdXJsIHBlcmwiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItRF9saWI6U1RSSU5HPSR7YmFzZWxpYn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitUQVJHRVRfQ0ZMQUdTICs9ICItV25vLW5hcnJvd2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjYuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy42LjMzLmJiCmluZGV4IGFjNWY3NTUuLjk5YjQzZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjYuMzMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuNi4zMy5iYgpAQCAtMzksNyArMzksOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjQzN2I0Yjk4ZTM4NGI0YmRhNGVmNzA1NmU2ODE2NmFjIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0YjFjMjliOTY1NTAxM2UwYWM2MWRkZGY0N2FkN2YzMGYzOGM0NjE1OWYwMmE5ZDlkYzhhYjg1NGU5OWFhNmQiCiAKLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKIAogUyA9ICIke1dPUktESVJ9LyR7QlBOfV9yZWxlYXNlLTcuNi0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZGFmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy5pbmMKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJCZXJrZWxleSBMQUxSIFlhY2MgcGFyc2VyIGdlbmVyYXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9ieWFjYy8iCitERVNDUklQVElPTiA9ICJBIHBhcnNlciBnZW5lcmF0b3IgdXRpbGl0eSB0aGF0IHJlYWRzIGEgZ3JhbW1hciBzcGVjaWZpY2F0aW9uIGZyb20gYSBmaWxlIGFuZCBnZW5lcmF0ZXMgYW4gTFIoMSkgXAorcGFyc2VyIGZvciBpdC4gIFRoZSBwYXJzZXJzIGNvbnNpc3Qgb2YgYSBzZXQgb2YgTEFMUigxKSBwYXJzaW5nIHRhYmxlcyBhbmQgYSBkcml2ZXIgcm91dGluZSB3cml0dGVuIGluIHRoZSBDIFwKK3Byb2dyYW1taW5nIGxhbmd1YWdlLiIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIlBEIgorCitTUkNfVVJJID0gImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2J5YWNjL2J5YWNjLSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9ieWFjYy1vcGVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnlhY2MtZG8tbm90LXJlb3JkZXItQ0MtYW5kLUNGTEFHUy5wYXRjaCIKKworRVhUUkFfT0VDT05GICs9ICItLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9J3MsXixiLCciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmUoKSB7CisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisJb2VfcnVuY29uZgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy8wMDAxLWJ5YWNjLWRvLW5vdC1yZW9yZGVyLUNDLWFuZC1DRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy8wMDAxLWJ5YWNjLWRvLW5vdC1yZW9yZGVyLUNDLWFuZC1DRkxBR1MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy8wMDAxLWJ5YWNjLWRvLW5vdC1yZW9yZGVyLUNDLWFuZC1DRkxBR1MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvYnlhY2Mtb3Blbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvYnlhY2Mtb3Blbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvYnlhY2Mtb3Blbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNzAyMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE3MDIwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDJjNGM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNzAyMDEuYmIKQEAgLTAsMCArMSwxMiBAQAorIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKKyMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKKyMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgorIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgorCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT05MTc2YmZiMTZkYWI0M2ViY2I4ZTUwZDllZTk1NTBiNiIKK3JlcXVpcmUgYnlhY2MuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YmIyNzRiYmQ3YjY0OGQ0MjUxYzJiOWNhMzZlZDBjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGI3NjhkMTc3ZjkxMjA0ZTZlN2NlZjIyNmFlMWRjN2NhYzgzMWI2MjU3NzRjZWJkM2UyMzNhOTE3NzU0ZjkxIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKaW5kZXggNzBiMDk4My4uNTA2OWE2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMSwxNCArMSwxOCBAQAotRnJvbSAxNGQ0NjliYzgyYzc1ODExNmFlZjdkNTQ5YWJkNDljMTMxYjQxNzBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiNDU5YzU1ZTQ5NjgzMjFlNWE4MjI3MmNiMzlhYTY5ZDQwNTQ5OTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjIgQXByIDIwMTcgMTE6NTQ6NTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBDaGVjayBmb3IgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiBjb21waWxlcgogIG9wdGlvbgogCiBJZiB0aGlzIG9wdGlvbiBpcyBzdXBwb3J0ZWQgYnkgY29tcGlsZXIgdGhlbiBkaXNhYmxlIGl0ICggZ2NjNyspCitVc2UgLVdlcnJvciB0byBlbGV2YXRlIHRoZSB3YXJuaW5nIHRvIGFuIGVycm9yIGluIGNhc2UgY29tcGlsZXIgbGlrZSBjbGFuZword2hpY2ggd2FybiBhYm91dCB1bmtub3duIG9wdGlvbnMgYnV0IG5vdCBlcnJvciBvdXQgdW5sZXNzIGFza2VkIGZvcgorCiBGaXhlcwogY2xpZW50LmM6ODM0OjIzOiBlcnJvcjogJyVzJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyB1cCB0byAxMDIzIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAxMDEwIFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDMgKy0KICBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKQEAgLTE2LDcgKzIwLDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDg4NTQ1NDIuLmYzYTZiNTcgMTAwNjQ0CitpbmRleCA4ODU0NTQyLi5lZGI4Y2ZiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC00LDcgKzQsNiBAQCBBQ19JTklUKFtjb2xsZWN0ZF0sW200X2VzeXNjbWQoLi92ZXJzaW9uLWdlbi5zaCldKQpAQCAtMzEsNyArMzUsNyBAQAogICAgICAgICAgQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1XZXJyb3IiCiAgICAgICAgICBBTV9DWFhGTEFHUz0iJEFNX0NYWEZMQUdTIC1XZXJyb3IiCiAgZmkKLStBWF9DSEVDS19DT01QSUxFX0ZMQUcoWy1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb25dLFtBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiIgQU1fQ1hYRkxBR1M9IiRBTV9DWFhGTEFHUyAtV25vLWVycm9yPWZvcm1hdC10cnVuY2F0aW9uIl0pCisrQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKFstV2Vycm9yIC1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb25dLFtBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiIgQU1fQ1hYRkxBR1M9IiRBTV9DWFhGTEFHUyAtV25vLWVycm9yPWZvcm1hdC10cnVuY2F0aW9uIl0pCiArCiAgQUNfU1VCU1QoW0FNX0NGTEFHU10pCiAgQUNfU1VCU1QoW0FNX0NYWEZMQUdTXSkKQEAgLTExNyw1ICsxMjEsNSBAQAogK0FTX1ZBUl9QT1BERUYoW0NBQ0hFVkFSXSlkbmwKICtdKWRubCBBWF9DSEVDS19DT01QSUxFX0ZMQUdTCiAtLSAKLTIuMTIuMgorMi4xMy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Nzg5YzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3RzIGFuZCBzdW1tYXJpc2VzIHN5c3RlbSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIgotREVTQ1JJUFRJT04gPSAiY29sbGVjdGQgaXMgYSBkYWVtb24gd2hpY2ggY29sbGVjdHMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MgcGVyaW9kaWNhbGx5IGFuZCBwcm92aWRlcyBtZWNoYW5pc21zIHRvIHN0b3JlIHRoZSB2YWx1ZXMgaW4gYSB2YXJpZXR5IG9mIHdheXMsIGZvciBleGFtcGxlIGluIFJSRCBmaWxlcy4iCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWJkMjFmMTlmN2YwYzYxYTdiZThlY2FjYjBlMjg4NTQiCi0KLURFUEVORFMgPSAicnJkdG9vbCBjdXJsIGxpYnBjYXAgbGlieG1sMiB5YWpsIGxpYmdjcnlwdCBsaWJ0b29sIGx2bTIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NvbGxlY3RkLm9yZy9maWxlcy9jb2xsZWN0ZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2NvbGxlY3RkLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1nY3J5cHQtYmFkcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC10by1idWlsZC13aXRoLWdsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkYzM2MTQxZWQzMDU4YzQ5MTliYmQ1NGI4N2MwNzg3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWRkMzY0M2MwODQyMjE1NTUzYjI0MjFkNTQ1NmY0ZTlhOGE1OGIwN2UyMTZiNDBhN2U4ZTkxMDI2ZDhlNTAxIgotCi1pbmhlcml0IGF1dG90b29scyBweXRob25uYXRpdmUgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvbGxlY3RkLnNlcnZpY2UiCi0KLSMgRmxvYXRpbmdwb2ludCBsYXlvdXQsIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQKLSMgJ25vdGhpbmcnLCAnZW5kaWFuZmxpcCcgb3IgJ2ludHN3YXAnCi1GUExBWU9VVCA/PSAiLS13aXRoLWZwLWxheW91dD1ub3RoaW5nIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tvcGVuamRrXSA9ICItLXdpdGgtamF2YT0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vanZtLC0td2l0aG91dC1qYXZhLG9wZW5qZGstNyIKLVBBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCAtLXdpdGgtbGlibmV0c25tcD1ubyxuZXQtc25tcCIKLVBBQ0tBR0VDT05GSUdbbGlibWVtY2FjaGVkXSA9ICItLXdpdGgtbGlibWVtY2FjaGVkLC0td2l0aG91dC1saWJtZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS1lbmFibGUtaXB0YWJsZXMsLS1kaXNhYmxlLWlwdGFibGVzLGlwdGFibGVzIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPW5vLHBvc3RncmVzcWwiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9bm8sbXlzcWw1IgotUEFDS0FHRUNPTkZJR1tkYmldID0gIi0tZW5hYmxlLWRiaSwtLWRpc2FibGUtZGJpLGxpYmRiaSIKLVBBQ0tBR0VDT05GSUdbbW9kYnVzXSA9ICItLWVuYWJsZS1tb2RidXMsLS1kaXNhYmxlLW1vZGJ1cyxsaWJtb2RidXMiCi1QQUNLQUdFQ09ORklHW2xpYm93Y2FwaV0gPSAiLS13aXRoLWxpYm93Y2FwaSwtLXdpdGhvdXQtbGlib3djYXBpLG93ZnMiCi1QQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPW5vLGxtc2Vuc29ycyIKLVBBQ0tBR0VDT05GSUdbYW1xcF0gPSAiLS1lbmFibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT1ubyxyYWJiaXRtcS1jIgotIyBwcm90b2J1Zi1jLCBsaWJ2aXJ0IHRoYXQgYXJlIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSBpbiBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyCi1QQUNLQUdFQ09ORklHW3BpbmJhXSA9ICItLWVuYWJsZS1waW5iYSwtLWRpc2FibGUtcGluYmEscHJvdG9idWYtYy1uYXRpdmUgcHJvdG9idWYtYyIKLVBBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS1lbmFibGUtbGlidmlydCwtLWRpc2FibGUtbGlidmlydCxsaWJ2aXJ0IgotUEFDS0FHRUNPTkZJR1tsaWJlc210cF0gPSAiLS13aXRoLWxpYmVzbXRwLC0td2l0aG91dC1saWJlc210cCxsaWJlc210cCIKLVBBQ0tBR0VDT05GSUdbbGlibW5sXSA9ICItLXdpdGgtbGlibW5sLC0td2l0aG91dC1saWJtbmwsbGlibW5sIgotUEFDS0FHRUNPTkZJR1tsaWJhdGFzbWFydF0gPSAiLS13aXRoLWxpYmF0YXNtYXJ0LC0td2l0aG91dC1saWJhdGFzbWFydCxsaWJhdGFzbWFydCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtb3BlbmxkYXAgLS13aXRoLWxpYmxkYXAsLS1kaXNhYmxlLW9wZW5sZGFwIC0td2l0aG91dC1saWJsZGFwLCBvcGVubGRhcCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgJHtGUExBWU9VVH0gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wZXJsIC0td2l0aC1saWJwZXJsPW5vIC0td2l0aC1wZXJsLWJpbmRpbmdzPW5vIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ2NyeXB0PSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xpYmdjcnlwdC1jb25maWcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ub3RpZnlfZGVza3RvcCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY29sbGVjdGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotCi0gICAgIyBGaXggY29uZmlndXJhdGlvbiBmaWxlIHRvIGFsbG93IGNvbGxlY3RkIHRvIHN0YXJ0IHVwCi0gICAgc2VkIC1pICdzIV4jRlFETkxvb2t1cFsgXHRdKnRydWUhRlFETkxvb2t1cCAgIGZhbHNlIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKLQotICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCi0gICAgIyBJbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jb2xsZWN0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY29sbGVjdGQuc2VydmljZQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mIgotCi1JTklUU0NSSVBUX05BTUUgPSAiY29sbGVjdGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotIyB0aHJlc2hvbGQuc28gbG9hZC5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBnZWdsCi0jIGRpc2suc28gaXMgYWxzbyBwcm92aWRlZCBieSBsaWJncGhvdG8yLWNhbWxpYnMKLVBSSVZBVEVfTElCUyA9ICJ0aHJlc2hvbGQuc28gbG9hZC5zbyBkaXNrLnNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjcuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTU2ZWExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjIuYmIKQEAgLTAsMCArMSw4NiBAQAorU1VNTUFSWSA9ICJDb2xsZWN0cyBhbmQgc3VtbWFyaXNlcyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyIKK0RFU0NSSVBUSU9OID0gImNvbGxlY3RkIGlzIGEgZGFlbW9uIHdoaWNoIGNvbGxlY3RzIHN5c3RlbSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIHBlcmlvZGljYWxseSBhbmQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byBzdG9yZSB0aGUgdmFsdWVzIGluIGEgdmFyaWV0eSBvZiB3YXlzLCBmb3IgZXhhbXBsZSBpbiBSUkQgZmlsZXMuIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFiZDIxZjE5ZjdmMGM2MWE3YmU4ZWNhY2IwZTI4ODU0IgorCitERVBFTkRTID0gInJyZHRvb2wgY3VybCBsaWJwY2FwIGxpYnhtbDIgeWFqbCBsaWJnY3J5cHQgbGlidG9vbCBsdm0yIgorCitTUkNfVVJJID0gImh0dHA6Ly9jb2xsZWN0ZC5vcmcvZmlsZXMvY29sbGVjdGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2NvbGxlY3RkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbm8tZ2NyeXB0LWJhZHBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdG8tYnVpbGQtd2l0aC1nbGliYy0yLjI1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNWRhMmI2OWMyODZhMDY0ZGIzNWM2Y2MxZTc1OGIwMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQyMGEwMjIxNTY5YThkNmI4MGJiYzUyYjg2ZTVlODQ5NjVmNWJhZmRiZjVkZmMzNzkwZTBmZWQwNzYzZTU5MiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9ubmF0aXZlIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb2xsZWN0ZC5zZXJ2aWNlIgorCisjIEZsb2F0aW5ncG9pbnQgbGF5b3V0LCBhcmNoaXRlY3R1cmUgZGVwZW5kZW50CisjICdub3RoaW5nJywgJ2VuZGlhbmZsaXAnIG9yICdpbnRzd2FwJworRlBMQVlPVVQgPz0gIi0td2l0aC1mcC1sYXlvdXQ9bm90aGluZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbb3Blbmpka10gPSAiLS13aXRoLWphdmE9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9L2p2bSwtLXdpdGhvdXQtamF2YSxvcGVuamRrLTciCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAgLS13aXRoLWxpYm5ldHNubXA9bm8sbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW2xpYm1lbWNhY2hlZF0gPSAiLS13aXRoLWxpYm1lbWNhY2hlZCwtLXdpdGhvdXQtbGlibWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0tZW5hYmxlLWlwdGFibGVzLC0tZGlzYWJsZS1pcHRhYmxlcyxpcHRhYmxlcyIKK1BBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS1lbmFibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT1ubyxwb3N0Z3Jlc3FsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPXllcywgXAorICAgICAgICAtLWRpc2FibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPW5vLG15c3FsNSIKK1BBQ0tBR0VDT05GSUdbZGJpXSA9ICItLWVuYWJsZS1kYmksLS1kaXNhYmxlLWRiaSxsaWJkYmkiCitQQUNLQUdFQ09ORklHW21vZGJ1c10gPSAiLS1lbmFibGUtbW9kYnVzLC0tZGlzYWJsZS1tb2RidXMsbGlibW9kYnVzIgorUEFDS0FHRUNPTkZJR1tsaWJvd2NhcGldID0gIi0td2l0aC1saWJvd2NhcGksLS13aXRob3V0LWxpYm93Y2FwaSxvd2ZzIgorUEFDS0FHRUNPTkZJR1tzZW5zb3JzXSA9ICItLWVuYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPXllcywgXAorICAgICAgICAtLWRpc2FibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz1ubyxsbXNlbnNvcnMiCitQQUNLQUdFQ09ORklHW2FtcXBdID0gIi0tZW5hYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPXllcywgXAorICAgICAgICAtLWRpc2FibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9bm8scmFiYml0bXEtYyIKKyMgcHJvdG9idWYtYywgbGlidmlydCB0aGF0IGFyZSBjdXJyZW50bHkgb25seSBhdmFpbGFibGUgaW4gbWV0YS12aXJ0dWFsaXphdGlvbiBsYXllcgorUEFDS0FHRUNPTkZJR1twaW5iYV0gPSAiLS1lbmFibGUtcGluYmEsLS1kaXNhYmxlLXBpbmJhLHByb3RvYnVmLWMtbmF0aXZlIHByb3RvYnVmLWMiCitQQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0tZW5hYmxlLWxpYnZpcnQsLS1kaXNhYmxlLWxpYnZpcnQsbGlidmlydCIKK1BBQ0tBR0VDT05GSUdbbGliZXNtdHBdID0gIi0td2l0aC1saWJlc210cCwtLXdpdGhvdXQtbGliZXNtdHAsbGliZXNtdHAiCitQQUNLQUdFQ09ORklHW2xpYm1ubF0gPSAiLS13aXRoLWxpYm1ubCwtLXdpdGhvdXQtbGlibW5sLGxpYm1ubCIKK1BBQ0tBR0VDT05GSUdbbGliYXRhc21hcnRdID0gIi0td2l0aC1saWJhdGFzbWFydCwtLXdpdGhvdXQtbGliYXRhc21hcnQsbGliYXRhc21hcnQiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLW9wZW5sZGFwIC0td2l0aC1saWJsZGFwLC0tZGlzYWJsZS1vcGVubGRhcCAtLXdpdGhvdXQtbGlibGRhcCwgb3BlbmxkYXAiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgICR7RlBMQVlPVVR9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGVybCAtLXdpdGgtbGlicGVybD1ubyAtLXdpdGgtcGVybC1iaW5kaW5ncz1ubyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWxpYmdjcnlwdD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9saWJnY3J5cHQtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbm90aWZ5X2Rlc2t0b3AgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2NvbGxlY3RkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKworICAgICMgRml4IGNvbmZpZ3VyYXRpb24gZmlsZSB0byBhbGxvdyBjb2xsZWN0ZCB0byBzdGFydCB1cAorICAgIHNlZCAtaSAncyFeI0ZRRE5Mb29rdXBbIFx0XSp0cnVlIUZRRE5Mb29rdXAgICBmYWxzZSFnJyAke0R9JHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKworICAgICMgSW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY29sbGVjdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NvbGxlY3RkLnNlcnZpY2UKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZiIKKworSU5JVFNDUklQVF9OQU1FID0gImNvbGxlY3RkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKKyMgdGhyZXNob2xkLnNvIGxvYWQuc28gYXJlIGFsc28gcHJvdmlkZWQgYnkgZ2VnbAorIyBkaXNrLnNvIGlzIGFsc28gcHJvdmlkZWQgYnkgbGliZ3Bob3RvMi1jYW1saWJzCitQUklWQVRFX0xJQlMgPSAidGhyZXNob2xkLnNvIGxvYWQuc28gZGlzay5zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0YWYwMDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAotQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TUkNfVVJJID0gImh0dHA6Ly9idWlsZC5jbHVzdGVybGFicy5vcmcvY29yb3N5bmMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU0N2ZhNzg3MDRkYTUzYWEzNTkxMmJlNThkMzEwMzVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyNmUzMDExMzA5ZmU0YmNjZTk0YjFkYzIwZWE4YzQ2MmYxOTQ4M2E3M2YzY2E2MmYxM2I5MjVkMDExYTRiYTkiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTg1ZWI0Y2UyNDAzM2FkYjYwODhkZDFkNmZmYzVlNWQiCi0KLURFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIG5zcyBsaWJxYiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvcm9zeW5jLnNlcnZpY2UgY29yb3N5bmMtbm90aWZ5ZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJlbmFibGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb3Jvc3luYy1kYWVtb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIgotRVhUUkFfT0VNQUtFID0gInRtcGZpbGVzZGlyX0RBVEE9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAoIGNkICR7U30KLSAgICAke1N9L2F1dG9nZW4uc2ggKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2Nvcm9zeW5jLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Nvcm9zeW5jLW5vdGlmeWQuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jLW5vdGlmeWQKLQotICAgIHJtIC1yZiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotICAgIGVjaG8gImQgcm9vdCByb290IDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciBub25lIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA1X2Nvcm9zeW5jCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2Nvcm9zeW5jLmNvbmYKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNjA4MjguYmIKaW5kZXggYmZmM2Q5Ny4uODVkZWRlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNjA4MjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNjA4MjguYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIkxHUEwtMi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCiAKLVNSQ19VUkkgPSAiZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nL2RpYWxvZy0ke1BWfS50Z3ogXAorU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW52aXNpYmxlLWlzbGFuZC5uZXQvJHtCUE59LyR7QlB9LnRneiBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImEzOWVjMTgzNTE3YmMxZmVhZmYwMTdkMDY3MzAwYjhjIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1MzA5NWFiYWVjMjg4YmZiYzFjYTlmYWNlZDkxN2UxNzc0MmNmZjFlYTQ1ZWM0NjIxMDA3MWFjMTUzNTYyZjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3IvMDAwMS1SZW1vdmUtZXh0cmEtY29uc3Qta2V5d29yZHMtZ2NjLTctZ3JpcGVzLWFib3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyLzAwMDEtUmVtb3ZlLWV4dHJhLWNvbnN0LWtleXdvcmRzLWdjYy03LWdyaXBlcy1hYm91dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYyMTFjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3IvMDAwMS1SZW1vdmUtZXh0cmEtY29uc3Qta2V5d29yZHMtZ2NjLTctZ3JpcGVzLWFib3V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBhOWY4ZDQxNDk3MmIwYjdjOTYzZDdlZmUzOGI1Y2ZkY2I2NDEzYzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCA2IEZlYiAyMDE3IDE2OjM0OjU0IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBleHRyYSBjb25zdCBrZXl3b3JkcyBnY2MgNyBncmlwZXMgYWJvdXQuCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLS0tLQotIHNyYy9lZmlib290ZHVtcC5jIHwgMiArLQotIHNyYy9lZmlib290bWdyLmMgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZWZpYm9vdGR1bXAuYyBiL3NyYy9lZmlib290ZHVtcC5jCi1pbmRleCAzZTQ0OGMyLi41YTliNjgxIDEwMDY0NAotLS0tIGEvc3JjL2VmaWJvb3RkdW1wLmMKLSsrKyBiL3NyYy9lZmlib290ZHVtcC5jCi1AQCAtMzYsNyArMzYsNyBAQCBwcmludF9ib290X2VudHJ5KGVmaV9sb2FkX29wdGlvbiAqbG9hZG9wdCwgc2l6ZV90IGRhdGFfc2l6ZSkKLSAJdWludDhfdCAqb3B0aW9uYWxfZGF0YSA9IE5VTEw7Ci0gCXNpemVfdCBvcHRpb25hbF9kYXRhX2xlbiA9IDA7Ci0gCXVpbnQxNl90IHBhdGhsZW47Ci0tCWNvbnN0IHVuc2lnbmVkIGNoYXIgY29uc3QgKmRlc2M7Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRlc2M7Ci0gCWNoYXIgKnJhdzsKLSAJc2l6ZV90IHJhd19sZW47Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2VmaWJvb3RtZ3IuYyBiL3NyYy9lZmlib290bWdyLmMKLWluZGV4IGJhZWZhNjguLjY4MzYyM2IgMTAwNjQ0Ci0tLS0gYS9zcmMvZWZpYm9vdG1nci5jCi0rKysgYi9zcmMvZWZpYm9vdG1nci5jCi1AQCAtMjE0LDcgKzIxNCw3IEBAIHdhcm5fZHVwbGljYXRlX25hbWUobGlzdF90ICpib290X2xpc3QpCi0gCWxpc3RfdCAqcG9zOwotIAl2YXJfZW50cnlfdCAqYm9vdDsKLSAJZWZpX2xvYWRfb3B0aW9uICpsb2FkX29wdGlvbjsKLS0JY29uc3QgdW5zaWduZWQgY2hhciBjb25zdCAqZGVzYzsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqZGVzYzsKLSAKLSAJbGlzdF9mb3JfZWFjaChwb3MsIGJvb3RfbGlzdCkgewotIAkJYm9vdCA9IGxpc3RfZW50cnkocG9zLCB2YXJfZW50cnlfdCwgbGlzdCk7Ci1AQCAtODIxLDcgKzgyMSw3IEBAIHNob3dfYm9vdF92YXJzKCkKLSB7Ci0gCWxpc3RfdCAqcG9zOwotIAl2YXJfZW50cnlfdCAqYm9vdDsKLS0JY29uc3QgdW5zaWduZWQgY2hhciBjb25zdCAqZGVzY3JpcHRpb247Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRlc2NyaXB0aW9uOwotIAllZmlfbG9hZF9vcHRpb24gKmxvYWRfb3B0aW9uOwotIAllZmlkcCBkcCA9IE5VTEw7Ci0gCXVuc2lnbmVkIGNoYXIgKm9wdGlvbmFsX2RhdGEgPSBOVUxMOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkzMTUwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpbnV4IHVzZXItc3BhY2UgYXBwbGljYXRpb24gdG8gbW9kaWZ5IHRoZSBFRkkgQm9vdCBNYW5hZ2VyLiIKLVNVTU1BUlkgPSAiRUZJIEJvb3QgTWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZmlib290bWdyIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1ERVBFTkRTID0gInBjaXV0aWxzIHpsaWIgZWZpdmFyIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1TUkNSRVYgPSAiNzVkMjU4MDdiYTgxY2I3MjQ5NjRjOTg5MDEyNjExMjcyYzhmMWY1ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZmlib290bWdyLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1leHRyYS1jb25zdC1rZXl3b3Jkcy1nY2MtNy1ncmlwZXMtYWJvdXQucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAtSSR7U30vc3JjL2luY2x1ZGUgYHBrZy1jb25maWcgLS1jZmxhZ3MgZWZpdmFyYCBcCi0gICAgICAgICAgICAgICAgIC1ERUZJQk9PVE1HUl9WRVJTSU9OPVwiJChSRUxFQVNFX01BSk9SKS4kKFJFTEVBU0VfTUlOT1IpXCIgJyIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgc3JjL2VmaWJvb3RtZ3IgJHtEfS8ke3NiaW5kaXJ9L2VmaWJvb3RtZ3IKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjNjJhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiCkBAIC0wLDAgKzEsMjcgQEAKK0RFU0NSSVBUSU9OID0gIkxpbnV4IHVzZXItc3BhY2UgYXBwbGljYXRpb24gdG8gbW9kaWZ5IHRoZSBFRkkgQm9vdCBNYW5hZ2VyLiIKK1NVTU1BUlkgPSAiRUZJIEJvb3QgTWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZmlib290bWdyIgorU0VDVElPTiA9ICJiYXNlIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgorCitERVBFTkRTID0gInBjaXV0aWxzIHpsaWIgZWZpdmFyIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitTUkNSRVYgPSAiNWMxNGRhMjI4MDI1NzZhOTllYmI4NTRmN2FhMTc0Zjc5NmY3YjAzMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZmlib290bWdyLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFID0gIidFRklESVI9LycgJ0NDPSR7Q0N9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAtSSR7U30vc3JjL2luY2x1ZGUgYHBrZy1jb25maWcgLS1jZmxhZ3MgZWZpdmFyYCciCisKK0NGTEFHU19hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtV25vLWVycm9yIgorZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgJHtCfS9zcmMvZWZpYm9vdG1nciAke0R9LyR7c2JpbmRpcn0vZWZpYm9vdG1ncgorfQorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLVJlbW92ZS1zb21lLWV4dHJhLWNvbnN0LXRoYXQtZ2NjLWNvbXBsYWlucy1hYm91dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1SZW1vdmUtc29tZS1leHRyYS1jb25zdC10aGF0LWdjYy1jb21wbGFpbnMtYWJvdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZThjYjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLVJlbW92ZS1zb21lLWV4dHJhLWNvbnN0LXRoYXQtZ2NjLWNvbXBsYWlucy1hYm91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gMjlhMmRlYTE2MTEzYjVhOGU1MWRlNDY0MzdjNmE5Zjc0MjZjNTg2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNiBGZWIgMjAxNyAxNDoyODoxOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvMl0gUmVtb3ZlIHNvbWUgZXh0cmEgImNvbnN0IiB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQuCi0KLU9uZSBvZiB0aGVzZSBkYXlzIEknbGwgZ2V0IHRoZXNlIHJpZ2h0LgotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci0tLS0KLSBzcmMvaW5jbHVkZS9lZml2YXIvZWZpYm9vdC1sb2Fkb3B0LmggfCA0ICsrLS0KLSBzcmMvbG9hZG9wdC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9lZml2YXIvZWZpYm9vdC1sb2Fkb3B0LmggYi9zcmMvaW5jbHVkZS9lZml2YXIvZWZpYm9vdC1sb2Fkb3B0LmgKLWluZGV4IDA3ZGI1YzQuLmVmYzI5YzYgMTAwNjQ0Ci0tLS0gYS9zcmMvaW5jbHVkZS9lZml2YXIvZWZpYm9vdC1sb2Fkb3B0LmgKLSsrKyBiL3NyYy9pbmNsdWRlL2VmaXZhci9lZmlib290LWxvYWRvcHQuaAotQEAgLTMyLDggKzMyLDggQEAgZXh0ZXJuIHNzaXplX3QgZWZpX2xvYWRvcHRfY3JlYXRlKHVpbnQ4X3QgKmJ1Ziwgc3NpemVfdCBzaXplLAotIAotIGV4dGVybiBlZmlkcCBlZmlfbG9hZG9wdF9wYXRoKGVmaV9sb2FkX29wdGlvbiAqb3B0LCBzc2l6ZV90IGxpbWl0KQotIAlfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyAoMSkpKTsKLS1leHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBjb25zdCAqIGVmaV9sb2Fkb3B0X2Rlc2MoZWZpX2xvYWRfb3B0aW9uICpvcHQsCi0tCQkJCQkJICAgIHNzaXplX3QgbGltaXQpCi0rZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBlZmlfbG9hZG9wdF9kZXNjKGVmaV9sb2FkX29wdGlvbiAqb3B0LAotKwkJCQkJICAgICAgc3NpemVfdCBsaW1pdCkKLSAJX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQotIAlfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyAoMSkpKTsKLSBleHRlcm4gdWludDMyX3QgZWZpX2xvYWRvcHRfYXR0cnMoZWZpX2xvYWRfb3B0aW9uICpvcHQpCi1kaWZmIC0tZ2l0IGEvc3JjL2xvYWRvcHQuYyBiL3NyYy9sb2Fkb3B0LmMKLWluZGV4IDY0ZTMzM2YuLmVjNTA3MjIgMTAwNjQ0Ci0tLS0gYS9zcmMvbG9hZG9wdC5jCi0rKysgYi9zcmMvbG9hZG9wdC5jCi1AQCAtMzM2LDcgKzMzNiw3IEBAIHRlYXJkb3duKHZvaWQpCi0gCi0gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDEpKSkKLSBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCi0tY29uc3QgdW5zaWduZWQgY2hhciBjb25zdCAqCi0rY29uc3QgdW5zaWduZWQgY2hhciAqCi0gZWZpX2xvYWRvcHRfZGVzYyhlZmlfbG9hZF9vcHRpb24gKm9wdCwgc3NpemVfdCBsaW1pdCkKLSB7Ci0gCWlmIChsYXN0X2Rlc2MpIHsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI4ODE1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gM2Q0M2M1ZWZkYjYzMmRhNWQ3Mzg3ZGNhZGNlNGU4N2I4MzkyOWM2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI0IEF1ZyAyMDE3IDE1OjU0OjQ3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGVmaXZhci1kcC5oOiBBZGQgLVd1bmtub3duLWF0dHJpYnV0ZXMgd2hlbiB1c2luZyBjbGFuZworCitjaGFuZ2UgIWRwIGNoZWNrIHRvIGEgY29tcGFyaXNpb24gYWdhaW5zdCBOVUxMIHRvIHNpbGVudCBjbGFuZyB3YXJuaW5nCitub25udWxsIHBhcmFtZXRlciAnZHAnIHdpbGwgZXZhbHVhdGUgdG8gJ3RydWUnIG9uIGZpcnN0IGVuY291bnRlcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oIHwgMTIgKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKKysrKyBnaXQvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCitAQCAtNzgzLDkgKzc4MywxNCBAQCBleHRlcm4gaW50IGVmaWRwX2FwcGVuZF9pbnN0YW5jZShjb25zdF9lCisgICogdGhvdWdoIG9sZGVyIG9yIG90aGVyIGNvbXBpbGVycyBtaWdodCBqdXN0IGlnbm9yZSB0aGF0IGF0dHJpYnV0ZSBpZiB0aGV5CisgICogZG9uJ3Qgc3VwcG9ydCBpdC4gIFVnaC4KKyAgKi8KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNgorICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdub25udWxsLWNvbXBhcmUiCisgI2VuZGlmCisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLWF0dHJpYnV0ZXMiCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3BvaW50ZXItYm9vbC1jb252ZXJzaW9uIgorKyNlbmRpZgorIAorIHN0YXRpYyBpbmxpbmUgaW50MTZfdAorIF9fYXR0cmlidXRlX18oKF9fYXJ0aWZpY2lhbF9fKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYTc3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gOThiMzNkNDE5Mzk5ODY4N2FhM2E3OGMwOTdmN2JkNGMzOTNlMGM4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDAwOjI5OjQyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2VndWlkczogRG8gbm90IHVzZSBfX2Jzd2FwX2NvbnN0YW50X3sxNnwzMn0gbWFjcm9zCisKK25vdCBhdmFpbGFibGUgb24gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21ha2VndWlkcy5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZWd1aWRzLmMgYi9zcmMvbWFrZWd1aWRzLmMKK2luZGV4IGRhMmY1ZjcuLmRhZjgyMWEgMTAwNjQ0CistLS0gYS9zcmMvbWFrZWd1aWRzLmMKKysrKyBiL3NyYy9tYWtlZ3VpZHMuYworQEAgLTE1NSwxMyArMTU1LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAjaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOXG5cCisgI2RlZmluZSBjcHVfdG9fYmUzMihuKSAobilcblwKKyAjZGVmaW5lIGNwdV90b19iZTE2KG4pIChuKVxuXAorLSNkZWZpbmUgY3B1X3RvX2xlMzIobikgKF9fYnN3YXBfY29uc3RhbnRfMzIobikpXG5cCistI2RlZmluZSBjcHVfdG9fbGUxNihuKSAoX19ic3dhcF9jb25zdGFudF8xNihuKSlcblwKKysjZGVmaW5lIGNwdV90b19sZTMyKG4pICgodWludDMyX3QpICgobik+PjI0IHwgKG4pPj44JjB4ZmYwMCB8IChuKTw8OCYweGZmMDAwMCB8IChuKTw8MjQpKVxuXAorKyNkZWZpbmUgY3B1X3RvX2xlMTYobikgKCh1aW50MTZfdCkgKChuKTw8OCB8IChuKT4+OCkpXG5cCisgI2Vsc2VcblwKKyAjZGVmaW5lIGNwdV90b19sZTMyKG4pIChuKVxuXAorICNkZWZpbmUgY3B1X3RvX2xlMTYobikgKG4pXG5cCistI2RlZmluZSBjcHVfdG9fYmUzMihuKSAoX19ic3dhcF9jb25zdGFudF8zMihuKSlcblwKKy0jZGVmaW5lIGNwdV90b19iZTE2KG4pIChfX2Jzd2FwX2NvbnN0YW50XzE2KG4pKVxuXAorKyNkZWZpbmUgY3B1X3RvX2JlMzIobikgKCh1aW50MzJfdCkgKChuKT4+MjQgfCAobik+PjgmMHhmZjAwIHwgKG4pPDw4JjB4ZmYwMDAwIHwgKG4pPDwyNCkpXG5cCisrI2RlZmluZSBjcHVfdG9fYmUxNihuKSAoKHVpbnQxNl90KSAoKG4pPDw4IHwgKG4pPj44KSlcblwKKyAjZW5kaWZcblwKKyAiIiIpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAyLU5ldy1nY2MtdmVyc2lvbi1uZXctd2F5LXN5bWJvbC12ZXJzaW9uaW5nLWJyZWFrcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMi1OZXctZ2NjLXZlcnNpb24tbmV3LXdheS1zeW1ib2wtdmVyc2lvbmluZy1icmVha3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczN2I3OGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAyLU5ldy1nY2MtdmVyc2lvbi1uZXctd2F5LXN5bWJvbC12ZXJzaW9uaW5nLWJyZWFrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gMzFlNjU1ZDJiNWY2NmU3NzJkOTcxNDQyMmI3MzMyYmJhYTYwZDJlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNiBGZWIgMjAxNyAxNDo0MTo1OCAtMDUwMAotU3ViamVjdDogW1BBVENIIDIvMl0gTmV3IGdjYyB2ZXJzaW9uLCBuZXcgd2F5IHN5bWJvbCB2ZXJzaW9uaW5nIGJyZWFrcy4KLQotQXBwYXJlbnRseSBJIGdldCB0byByZWRvIHRoaXMgZXZlcnkgdGltZSB0aGVyZSdzIGEgY29tcGlsZXIgcmVsZWFzZS4KLVlhYWFhYWF5LgotCi1Bbnl3YXksIHRoZSBjdXJyZW50IG1ldGhvZCBpcyB0byBkZWZpbmUgdGhlIHR3byBjb21wYXQgdGhpbmdzIGZyb20gdGhlCi1sYW5kIGJlZm9yZSB0aW1lIGFzIEBsaWJlZml2YXIuc28uMCBzeW1ib2xzIGFuZCBsaXN0IHRoZW0gdGhlcmUgaW4gdGhlCi1saW5rIG1hcC4gIFRoZW4gd2UgaGF2ZSB0aGUgcmVhbCBvbmUgZGVmaW5lZCB3aXRoIGFub3RoZXIgbmFtZSwgYW5kIHNldAotYXMgZWZpX3NldF92YXJpYWJsZUBATElCRUZJVkFSXzAuMjQuICBUaGVuIHRvIG1ha2UgdGhlcmUgYWN0dWFsbHkgYmUgYQotZWZpX3NldF92YXJpYWJsZSBzeW1ib2wgdG8gbGluayBhZ2FpbnN0LCB3ZSBjcmVhdGUgaXQgYXMgYSB3ZWFrIGFsaWFzLgotCi1UaGlzIGlzIGFsbCBjb21wbGV0ZWx5IGFic3VyZC4KLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgotLS0tCi0gc3JjL2xpYi5jIHwgMTcgKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9saWIuYyBiL3NyYy9saWIuYwotaW5kZXggNmE5YjM5Mi4uYWZhN2Q5NCAxMDA2NDQKLS0tLSBhL3NyYy9saWIuYwotKysrIGIvc3JjL2xpYi5jCi1AQCAtNDksNyArNDksNyBAQCBfZWZpX3NldF92YXJpYWJsZShlZmlfZ3VpZF90IGd1aWQsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ4X3QgKmRhdGEsCi0gewotIAlyZXR1cm4gb3BzLT5zZXRfdmFyaWFibGUoZ3VpZCwgbmFtZSwgZGF0YSwgZGF0YV9zaXplLCBhdHRyaWJ1dGVzLCAwNjAwKTsKLSB9Ci0tX19hc21fXygiLnN5bXZlciBfZWZpX3NldF92YXJpYWJsZSxfZWZpX3NldF92YXJpYWJsZUAiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9lZmlfc2V0X3ZhcmlhYmxlLF9lZmlfc2V0X3ZhcmlhYmxlQGxpYmVmaXZhci5zby4wIik7Ci0gCi0gaW50Ci0gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDIsIDMpKSkKLUBAIC01OSwxNyArNTksMjQgQEAgX2VmaV9zZXRfdmFyaWFibGVfdmFyaWFkaWMoZWZpX2d1aWRfdCBndWlkLCBjb25zdCBjaGFyICpuYW1lLCB1aW50OF90ICpkYXRhLAotIHsKLSAJcmV0dXJuIG9wcy0+c2V0X3ZhcmlhYmxlKGd1aWQsIG5hbWUsIGRhdGEsIGRhdGFfc2l6ZSwgYXR0cmlidXRlcywgMDYwMCk7Ci0gfQotLV9fYXNtX18oIi5zeW12ZXIgX2VmaV9zZXRfdmFyaWFibGVfdmFyaWFkaWMsZWZpX3NldF92YXJpYWJsZUAiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9lZmlfc2V0X3ZhcmlhYmxlX3ZhcmlhZGljLGVmaV9zZXRfdmFyaWFibGVAbGliZWZpdmFyLnNvLjAiKTsKLSAKLSBpbnQKLSBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyAoMiwgMykpKQotIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKLS1lZmlfc2V0X3ZhcmlhYmxlKGVmaV9ndWlkX3QgZ3VpZCwgY29uc3QgY2hhciAqbmFtZSwgdWludDhfdCAqZGF0YSwKLS0JCSBzaXplX3QgZGF0YV9zaXplLCB1aW50MzJfdCBhdHRyaWJ1dGVzLCBtb2RlX3QgbW9kZSkKLStfZWZpX3NldF92YXJpYWJsZV9tb2RlKGVmaV9ndWlkX3QgZ3VpZCwgY29uc3QgY2hhciAqbmFtZSwgdWludDhfdCAqZGF0YSwKLSsJCSAgICAgICBzaXplX3QgZGF0YV9zaXplLCB1aW50MzJfdCBhdHRyaWJ1dGVzLCBtb2RlX3QgbW9kZSkKLSB7Ci0gCXJldHVybiBvcHMtPnNldF92YXJpYWJsZShndWlkLCBuYW1lLCBkYXRhLCBkYXRhX3NpemUsIGF0dHJpYnV0ZXMsIG1vZGUpOwotIH0KLS1fX2FzbV9fKCIuc3ltdmVyIGVmaV9zZXRfdmFyaWFibGUsZWZpX3NldF92YXJpYWJsZUBATElCRUZJVkFSXzAuMjQiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9lZmlfc2V0X3ZhcmlhYmxlX21vZGUsZWZpX3NldF92YXJpYWJsZUBATElCRUZJVkFSXzAuMjQiKTsKLSsKLStpbnQKLStfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyAoMiwgMykpKQotK19fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKLStlZmlfc2V0X3ZhcmlhYmxlKGVmaV9ndWlkX3QgZ3VpZCwgY29uc3QgY2hhciAqbmFtZSwgdWludDhfdCAqZGF0YSwKLSsJCSBzaXplX3QgZGF0YV9zaXplLCB1aW50MzJfdCBhdHRyaWJ1dGVzLCBtb2RlX3QgbW9kZSkKLSsJX19hdHRyaWJ1dGUoKHdlYWssIGFsaWFzICgiX2VmaV9zZXRfdmFyaWFibGVfbW9kZSIpKSk7Ci0gCi0gaW50Ci0gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDIsIDMpKSkKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMi1kaXNhYmxlLXN0YXRpYy1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMi1kaXNhYmxlLXN0YXRpYy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUxYjE1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDItZGlzYWJsZS1zdGF0aWMtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDEyNmUwZDNjMWFkNzRjZjViMGFiZTllOThlYzQ0NGJjYzNjODMxNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgotRGF0ZTogRnJpLCA0IE1hciAyMDE2IDE0OjUzOjU1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBkaXNhYmxlIHN0YXRpYyBidWlsZAotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW21ldGEtb2Ugc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIHNyYy9NYWtlZmlsZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IDE4MjlkMjIuLmM3YTBjYTMgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUKLSsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTgsOSArOCw5IEBAIGluY2x1ZGUgJChUT1BESVIpL01ha2UuZGVmYXVsdHMKLSAKLSBMSUJUQVJHRVRTPWxpYmVmaXZhci5zbyBsaWJlZmlib290LnNvCi0gU1RBVElDTElCVEFSR0VUUz1saWJlZml2YXIuYSBsaWJlZmlib290LmEKLS1CSU5UQVJHRVRTPWVmaXZhciBlZml2YXItc3RhdGljCi0rQklOVEFSR0VUUz1lZml2YXIKLSBQQ1RBUkdFVFM9ZWZpdmFyLnBjIGVmaWJvb3QucGMKLS1UQVJHRVRTPSQoTElCVEFSR0VUUykgJChTVEFUSUNMSUJUQVJHRVRTKSAkKEJJTlRBUkdFVFMpICQoUENUQVJHRVRTKQotK1RBUkdFVFM9JChMSUJUQVJHRVRTKSAkKEJJTlRBUkdFVFMpICQoUENUQVJHRVRTKQotIAotIExJQkVGSUJPT1RfU09VUkNFUyA9IGNyYzMyLmMgY3JlYXRvci5jIGRpc2suYyBncHQuYyBsaW51eC5jIGxvYWRvcHQuYwotIExJQkVGSUJPT1RfT0JKRUNUUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKExJQkVGSUJPT1RfU09VUkNFUykpCi0tLSAKLTIuNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoCmluZGV4IDVkNTBjMTkuLjk2ZDBjNmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaApAQCAtMjMsMTYgKzIzLDEzIEBACiAgZ2NjLnNwZWNzIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvZ2NjLnNwZWNzIGIvZ2NjLnNwZWNzCi1pbmRleCAyNGZhYmMyLi41YjBmZGVmIDEwMDY0NAotLS0tIGEvZ2NjLnNwZWNzCi0rKysgYi9nY2Muc3BlY3MKK0luZGV4OiBnaXQvZ2NjLnNwZWNzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZ2NjLnNwZWNzCisrKysgZ2l0L2djYy5zcGVjcwogQEAgLTE0LDQgKzE0LDQgQEAKICArICV7IXNoYXJlZDoleyFzdGF0aWM6JXshcjotcGllfX19ICV7c3RhdGljOi1XbCwtbm8tZmF0YWwtd2FybmluZ3MgLVdsLC1zdGF0aWMgLXN0YXRpYyAtV2wsLXoscmVscm8sLXosbm93fQogIAogICpsaW5rOgotLSsgJXshc3RhdGljOi0tZmF0YWwtd2FybmluZ3N9IC0tbm8tdW5kZWZpbmVkLXZlcnNpb24gLS1uby1hbGxvdy1zaGxpYi11bmRlZmluZWQgLS1hZGQtbmVlZGVkIC16IG5vdyAtLWJ1aWxkLWlkICV7IXN0YXRpYzoleyFzaGFyZWQ6LVBJRX19ICV7c2hhcmVkOi16IHJlbHJvIC1QSUN9ICV7c3RhdGljOiU8cGllfQotKysgJXshc3RhdGljOi0tZmF0YWwtd2FybmluZ3N9IC0tbm8tdW5kZWZpbmVkLXZlcnNpb24gLS1uby1hbGxvdy1zaGxpYi11bmRlZmluZWQgLXogbm93IC0tYnVpbGQtaWQgJXshc3RhdGljOiV7IXNoYXJlZDotcGllfX0gJXtzaGFyZWQ6LXogcmVscm8gLWZQSUN9ICV7c3RhdGljOiU8cGllfQotLS0gCi0yLjguMQotCistKyAleyFzdGF0aWM6LS1mYXRhbC13YXJuaW5nc30gLS1uby11bmRlZmluZWQtdmVyc2lvbiAtLW5vLWFsbG93LXNobGliLXVuZGVmaW5lZCAtLWFkZC1uZWVkZWQgLXogbm93IC0tYnVpbGQtaWQgJXshc3RhdGljOiV7IXNoYXJlZDotcGllfX0gJXtzaGFyZWQ6LXogcmVscm99ICV7c3RhdGljOiU8cGllfQorKysgJXshc3RhdGljOi0tZmF0YWwtd2FybmluZ3N9IC0tbm8tdW5kZWZpbmVkLXZlcnNpb24gLS1uby1hbGxvdy1zaGxpYi11bmRlZmluZWQgLXogbm93IC0tYnVpbGQtaWQgJXshc3RhdGljOiV7IXNoYXJlZDotcGllfX0gJXtzaGFyZWQ6LXogcmVscm99ICV7c3RhdGljOiU8cGllfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoCmluZGV4IDFjNjhhMjkuLmUzZmEyZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2gKQEAgLTIwLDEwICsyMCwxMCBAQAogIGdjYy5zcGVjcyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9nY2Muc3BlY3MgYi9nY2Muc3BlY3MKLWluZGV4IDBkNGJiZGEuLjM4MDJjYTYgMTAwNjQ0Ci0tLS0gYS9nY2Muc3BlY3MKLSsrKyBiL2djYy5zcGVjcworSW5kZXg6IGdpdC9nY2Muc3BlY3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9nY2Muc3BlY3MKKysrKyBnaXQvZ2NjLnNwZWNzCiBAQCAtMiwxMyArMiwxMyBAQAogICsgLURfR05VX1NPVVJDRQogIApAQCAtMzUsMTEgKzM1LDggQEAKICArICUoZWZpdmFyX2NwcF9vcHRpb25zKQogIAogICpjYzFfb3B0aW9uczoKLS0rICUoZWZpdmFyX2NwcF9vcHRpb25zKSAtV21heWJlLXVuaW5pdGlhbGl6ZWQgLWZuby1tZXJnZS1jb25zdGFudHMgLWZsdG8gLWZ2aXNpYmlsaXR5PWhpZGRlbiAleyFyOiV7IWZwaWU6JXshZlBJRToleyFmcGljOiV7IWZQSUM6JXshZm5vLXBpYzotZlBJRX19fX19fQorLSsgJShlZml2YXJfY3BwX29wdGlvbnMpIC1XbWF5YmUtdW5pbml0aWFsaXplZCAtZm5vLW1lcmdlLWNvbnN0YW50cyAtZnZpc2liaWxpdHk9aGlkZGVuICV7IXI6JXshZnBpZToleyFmUElFOiV7IWZwaWM6JXshZlBJQzoleyFmbm8tcGljOi1mUElFfX19fX19CiArKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykgLWZuby1tZXJnZS1jb25zdGFudHMgLWZ2aXNpYmlsaXR5PWhpZGRlbiAleyFyOiV7IWZwaWU6JXshZlBJRToleyFmcGljOiV7IWZQSUM6JXshZm5vLXBpYzotZlBJRX19fX19fQogIAogICpzZWxmX3NwZWM6CiAgKyAleyFzaGFyZWQ6JXshc3RhdGljOiV7IXI6LXBpZX19fSAle3N0YXRpYzotV2wsLW5vLWZhdGFsLXdhcm5pbmdzIC1XbCwtc3RhdGljIC1zdGF0aWMgLVdsLC16LHJlbHJvLC16LG5vd30KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOGY4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorVGFrZW4gZnJvbSB2b2lkIGxpbnV4CisKK0luZGV4OiBnaXQvc3JjL2xpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvbGludXguYworKysrIGdpdC9zcmMvbGludXguYworQEAgLTQwLDYgKzQwLDEwIEBACisgI2luY2x1ZGUgPGVmaXZhci5oPgorICNpbmNsdWRlIDxlZmlib290Lmg+CisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIHN0cm5kdXBhKHgscykgc3RybmNweShhbGxvY2Eoc3RybGVuKHgpKzEpLHgscykKKysjZW5kaWYKKysKKyAjaW5jbHVkZSAiZHAuaCIKKyAjaW5jbHVkZSAibGludXguaCIKKyAjaW5jbHVkZSAidXRpbC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhcl8wLjI0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhcl8wLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzdjYTkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXJfMC4yNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgdG8gbWFuaXB1bGF0ZSBVRUZJIHZhcmlhYmxlcyIKLURFU0NSSVBUSU9OID0gImVmaXZhciBwcm92aWRlcyBhIHNpbXBsZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIHRvIHRoZSBVRUZJIHZhcmlhYmxlIGZhY2lsaXR5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2VmaXZhciIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY2MjZiYjFlMjAxODljZmE5NWYyYzUwOGJhMjg2MzkzIgotCi1ERVBFTkRTID0gInBvcHQiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGVmaXZhci1uYXRpdmUiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLVNSQ1JFViA9ICI5NjNjYjJlNWFkYzE0NWZlMDA3MTdmOTRlMzgyZjI5NzNmODBlNzUzIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2VmaXZhci5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1kaXNhYmxlLXN0YXRpYy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy1tdWx0aS1kZWZpbml0aW9ucy1mb3ItbmF0aXZlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXNvbWUtZXh0cmEtY29uc3QtdGhhdC1nY2MtY29tcGxhaW5zLWFib3V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItTmV3LWdjYy12ZXJzaW9uLW5ldy13YXktc3ltYm9sLXZlcnNpb25pbmctYnJlYWtzLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnZmlsZTovLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotIyBTZXR0aW5nIENST1NTX0NPTVBJTEUgYnJlYWtzIHBrZ2NvbmZpZywgc28ganVzdCBzZXQgQVIKLUVYVFJBX09FTUFLRSA9ICJBUj0ke1RBUkdFVF9QUkVGSVh9Z2NjLWFyIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6LVdlcnJvcjo6ZyAke1N9L2djYy5zcGVjcwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke0J9L3NyYy9tYWtlZ3VpZHMgJHtEfSR7YmluZGlyfS9tYWtlZ3VpZHMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ0Y2RjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXJfMC4zMS5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIlRvb2xzIHRvIG1hbmlwdWxhdGUgVUVGSSB2YXJpYWJsZXMiCitERVNDUklQVElPTiA9ICJlZml2YXIgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgVUVGSSB2YXJpYWJsZSBmYWNpbGl0eSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjI2YmIxZTIwMTg5Y2ZhOTVmMmM1MDhiYTI4NjM5MyIKKworREVQRU5EUyA9ICJwb3B0IgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBlZml2YXItbmF0aXZlIgorCitpbmhlcml0IHBrZ2NvbmZpZworCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitTUkNSRVYgPSAiMTEzMjQ3OTljNjgxOTMxMTZlMWRkNWY5NGI0MTY1OTFiZDMyNGY5MCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXVzbC1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJ2ZpbGU6Ly8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgU2V0dGluZyBDUk9TU19DT01QSUxFIGJyZWFrcyBwa2djb25maWcsIHNvIGp1c3Qgc2V0IEFSCitFWFRSQV9PRU1BS0UgPSAiQVI9JHtUQVJHRVRfUFJFRklYfWdjYy1hciIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSBzOi1XZXJyb3I6OmcgJHtTfS9nY2Muc3BlY3MKK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisgICAgb2VfcnVubWFrZSAtQyBzcmMgbWFrZWd1aWRzCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9zcmMvbWFrZWd1aWRzICR7RH0ke2JpbmRpcn0vbWFrZWd1aWRzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHQvZW5zY3JpcHQtYXV0b2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lbnNjcmlwdC9lbnNjcmlwdC9lbnNjcmlwdC1hdXRvY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2JiNWMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHQvZW5zY3JpcHQtYXV0b2NvbmYucGF0Y2gKQEAgLTAsMCArMSwxMTggQEAKK2F1dG9jb25mIG5vIGxvbmdlciBzdXBwb3J0cyBBTV9DX1BST1RPVFlQRVMKKworfCBjb25maWd1cmUuYWM6MTQ6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKK3wgL2JpdGJha2VfYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvYWNsb2NhbC0xLjEyL3Byb3Rvcy5tNDoxMDogQU1fQ19QUk9UT1RZUEVTIGlzIGV4cGFuZGVkIGZyb20uLi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0F1dGhvcjogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGVuc2NyaXB0LTEuNi42L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVuc2NyaXB0LTEuNi42Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZW5zY3JpcHQtMS42LjYvY29uZmlndXJlLmFjCitAQCAtMTEsNyArMTEsNiBAQCBBQ19QUk9HX0lOU1RBTEwKKyBBQ19QUk9HX0NDCisgCisgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCistQU1fQ19QUk9UT1RZUEVTCisgCisgQUNfQ19DT05TVAorIEFDX0ZVTkNfQUxMT0NBCitJbmRleDogZW5zY3JpcHQtMS42LjYvYWZtbGliL2FmbS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9hZm1saWIvYWZtLmgKKysrKyBlbnNjcmlwdC0xLjYuNi9hZm1saWIvYWZtLmgKK0BAIC0yNCwxMSArMjQsNyBAQAorICNkZWZpbmUgQUZNX0gKKyAKKyAjaWZuZGVmIF9fX1AKKy0jaWYgUFJPVE9UWVBFUworICNkZWZpbmUgX19fUChwcm90b3MpIHByb3RvcworLSNlbHNlIC8qIG5vIFBST1RPVFlQRVMgKi8KKy0jZGVmaW5lIF9fX1AocHJvdG9zKSAoKQorLSNlbmRpZiAvKiBubyBQUk9UT1RZUEVTICovCisgI2VuZGlmCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9hZm1saWIvYWZtaW50LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbnNjcmlwdC0xLjYuNi5vcmlnL2FmbWxpYi9hZm1pbnQuaAorKysrIGVuc2NyaXB0LTEuNi42L2FmbWxpYi9hZm1pbnQuaAorQEAgLTM0LDExICszNCw3IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisgI2lmbmRlZiBfX19QCistI2lmIFBST1RPVFlQRVMKKyAjZGVmaW5lIF9fX1AocHJvdG9zKSBwcm90b3MKKy0jZWxzZSAvKiBubyBQUk9UT1RZUEVTICovCistI2RlZmluZSBfX19QKHByb3RvcykgKCkKKy0jZW5kaWYgLyogbm8gUFJPVE9UWVBFUyAqLworICNlbmRpZgorIAorICNpZiBTVERDX0hFQURFUlMKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9hZm1saWIvc3RyaGFzaC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9hZm1saWIvc3RyaGFzaC5oCisrKysgZW5zY3JpcHQtMS42LjYvYWZtbGliL3N0cmhhc2guaAorQEAgLTI0LDExICsyNCw3IEBACisgI2RlZmluZSBTVFJIQVNIX0gKKyAKKyAjaWZuZGVmIF9fX1AKKy0jaWYgUFJPVE9UWVBFUworICNkZWZpbmUgX19fUChwcm90b3MpIHByb3RvcworLSNlbHNlIC8qIG5vIFBST1RPVFlQRVMgKi8KKy0jZGVmaW5lIF9fX1AocHJvdG9zKSAoKQorLSNlbmRpZiAvKiBubyBQUk9UT1RZUEVTICovCisgI2VuZGlmCisgCisgdHlwZWRlZiBzdHJ1Y3Qgc3RyaW5naGFzaF9zdCAqU3RyaW5nSGFzaFB0cjsKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9jb21wYXQveGFsbG9jLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbnNjcmlwdC0xLjYuNi5vcmlnL2NvbXBhdC94YWxsb2MuaAorKysrIGVuc2NyaXB0LTEuNi42L2NvbXBhdC94YWxsb2MuaAorQEAgLTI4LDExICsyOCw3IEBACisgI2RlZmluZSBYQUxMT0NfSAorIAorICNpZm5kZWYgX19fUAorLSNpZiBQUk9UT1RZUEVTCisgI2RlZmluZSBfX19QKHByb3RvcykgcHJvdG9zCistI2Vsc2UgLyogbm8gUFJPVE9UWVBFUyAqLworLSNkZWZpbmUgX19fUChwcm90b3MpICgpCistI2VuZGlmIC8qIG5vIFBST1RPVFlQRVMgKi8KKyAjZW5kaWYKKyAKKyB2b2lkICp4bWFsbG9jIF9fX1AgKChzaXplX3Qgc2l6ZSkpOworSW5kZXg6IGVuc2NyaXB0LTEuNi42L3NyYy9nc2ludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9zcmMvZ3NpbnQuaAorKysrIGVuc2NyaXB0LTEuNi42L3NyYy9nc2ludC5oCitAQCAtMzksMTEgKzM5LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAKKyAjaWZuZGVmIF9fX1AKKy0jaWYgUFJPVE9UWVBFUworICNkZWZpbmUgX19fUChwcm90b3MpIHByb3RvcworLSNlbHNlIC8qIG5vIFBST1RPVFlQRVMgKi8KKy0jZGVmaW5lIF9fX1AocHJvdG9zKSAoKQorLSNlbmRpZiAvKiBubyBQUk9UT1RZUEVTICovCisgI2VuZGlmCisgCisgI2lmIFNURENfSEVBREVSUworSW5kZXg6IGVuc2NyaXB0LTEuNi42L3N0YXRlcy9kZWZzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbnNjcmlwdC0xLjYuNi5vcmlnL3N0YXRlcy9kZWZzLmgKKysrKyBlbnNjcmlwdC0xLjYuNi9zdGF0ZXMvZGVmcy5oCitAQCAtMzcsMTEgKzM3LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAjaWZuZGVmIF9fX1AKKy0jaWYgUFJPVE9UWVBFUworICNkZWZpbmUgX19fUChwcm90b3MpIHByb3RvcworLSNlbHNlIC8qIG5vIFBST1RPVFlQRVMgKi8KKy0jZGVmaW5lIF9fX1AocHJvdG9zKSAoKQorLSNlbmRpZiAvKiBubyBQUk9UT1RZUEVTICovCisgI2VuZGlmCisgCisgI2lmIFNURENfSEVBREVSUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHRfMS42LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lbnNjcmlwdC9lbnNjcmlwdF8xLjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjZkMTRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHRfMS42LjYuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJBIHBsYWluIEFTQ0lJIHRvIFBvc3RTY3JpcHQgY29udmVydGVyIgorREVTQ1JJUFRJT04gPSAiR05VIGVuc2NyaXB0IGlzIGEgZnJlZSByZXBsYWNlbWVudCBmb3IgQWRvYmUnJ3MgRW5zY3JpcHQgXAorcHJvZ3JhbS4gRW5zY3JpcHQgY29udmVydHMgQVNDSUkgZmlsZXMgdG8gUG9zdFNjcmlwdChUTSkgYW5kIHNwb29scyBnZW5lcmF0ZWQgXAorUG9zdFNjcmlwdCBvdXRwdXQgdG8gdGhlIHNwZWNpZmllZCBwcmludGVyIG9yIHNhdmVzIGl0IHRvIGEgZmlsZS4gRW5zY3JpcHQgY2FuIFwKK2JlIGV4dGVuZGVkIHRvIGhhbmRsZSBkaWZmZXJlbnQgb3V0cHV0IG1lZGlhIGFuZCBpbmNsdWRlcyBtYW55IG9wdGlvbnMgZm9yIFwKK2N1c3RvbWl6aW5nIHByaW50b3V0cy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZW5zY3JpcHQvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9lbnNjcmlwdC1hdXRvY29uZi5wYXRjaCBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GICs9ICJQRVJMPScke1VTUkJJTlBBVEh9L2VudiBwZXJsJyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNhY2MyNDJiODI5YWRhY2FiY2FmMjg1MzNmMDQ5YWZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkNTZiYWRhNjkzNGQwNTViMzRiNmM5MDM5OWFhODU5NzVlNjY0NTdhYzViZjUxMzQyN2FlN2ZjNzdmNWMwYmIiCisKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLUZpeC1jb21waWxhdGlvbi1vbi1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1GaXgtY29tcGlsYXRpb24tb24tYWFyY2g2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyZjY0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLUZpeC1jb21waWxhdGlvbi1vbi1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSBkOWU0ZGM3NTBkYzQ1ZTQyYjQ4MmQ3NDQ4MjkyNTRhMzY3MmMxMWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTkgT2N0IDIwMTYgMDA6MjQ6MDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEZpeCBjb21waWxhdGlvbiBvbiBhYXJjaDY0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBhcmNoLmggICAgIHwgMiArLQotIGh3YWNjZXNzLmMgfCAyICstCi0gaHdhY2Nlc3MuaCB8IDYgKysrLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBmbGFzaHJvbS0wLjkuNi4xL2FyY2guaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsYXNocm9tLTAuOS42LjEub3JpZy9hcmNoLmgKLSsrKyBmbGFzaHJvbS0wLjkuNi4xL2FyY2guaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjZGVmaW5lIF9fRkxBU0hST01fQVJDSF9fICJtaXBzIgotICNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykKLSAjZGVmaW5lIF9fRkxBU0hST01fQVJDSF9fICJwcGMiCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKQotKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAjZGVmaW5lIF9fRkxBU0hST01fQVJDSF9fICJhcm0iCi0gI2VuZGlmCi0gX19GTEFTSFJPTV9BUkNIX18KLUluZGV4OiBmbGFzaHJvbS0wLjkuNi4xL2h3YWNjZXNzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGFzaHJvbS0wLjkuNi4xLm9yaWcvaHdhY2Nlc3MuYwotKysrIGZsYXNocm9tLTAuOS42LjEvaHdhY2Nlc3MuYwotQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgcmdldF9pb19wZXJtcyh2b2lkKQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0tI2VsaWYgZGVmaW5lZCAoX19hcm1fXykKLSsjZWxpZiBkZWZpbmVkIChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSAKLSBzdGF0aWMgaW5saW5lIHZvaWQgc3luY19wcmltaXRpdmUodm9pZCkKLSB7Ci1JbmRleDogZmxhc2hyb20tMC45LjYuMS9od2FjY2Vzcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxhc2hyb20tMC45LjYuMS5vcmlnL2h3YWNjZXNzLmgKLSsrKyBmbGFzaHJvbS0wLjkuNi4xL2h3YWNjZXNzLmgKLUBAIC02OCw4ICs2OCw4IEBACi0gI2Vycm9yIExpdHRsZS1lbmRpYW4gUG93ZXJQQyAjZGVmaW5lcyBhcmUgdW5rbm93bgotICNlbmRpZgotIAotLSNlbGlmIGRlZmluZWQgKF9fYXJtX18pCi0tI2lmIGRlZmluZWQgKF9fQVJNRUxfXykKLSsjZWxpZiBkZWZpbmVkIChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSsjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLSAjZGVmaW5lIF9fRkxBU0hST01fTElUVExFX0VORElBTl9fIDEKLSAjZWxzZQotICNlcnJvciBCaWctZW5kaWFuIEFSTSAjZGVmaW5lcyBhcmUgdW5rbm93bgotQEAgLTMzNyw3ICszMzcsNyBAQCBpbnQgbGlicGF5bG9hZF93cm1zcihpbnQgYWRkciwgbXNyX3QgbXNyCi0gCi0gLyogUENJIHBvcnQgSS9PIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gTUlQUy4gKi8KLSAKLS0jZWxpZiBkZWZpbmVkKF9fYXJtX18pCi0rI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykKLSAKLSAvKiBOb24gbWVtb3J5IG1hcHBlZCBJL08gaXMgbm90IHN1cHBvcnRlZCBvbiBBUk0uICovCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzOTdkYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIGQyYTAzYjNlNDMwNDNiNTk2YTc5ODAzYmNiOTNmNzBlNTEzYmJiNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgorRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAxMzo0ODowMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdW5kZWZpbmVkIGJlaGF2aW9yCisKK1BlciBjbGFuZy0zLjksIHRoZSBjb21waWxlciBmYWlscyBvbiAjZGVmaW5lIC4uLmRlZmluZWQoLi4uKSBzdGF0ZW1lbnRzCithcyB0aGV5J3JlIHVuZGVmaW5lZCBiZWhhdmlvciAoYXBwYXJlbnRseSB3aXRoIGRpZmZlcmVudCBiZWhhdmlvcgorYmV0d2VlbiBnY2MvY2xhbmcgYW5kIG1zdmMsIHRvbykuCisKK1NlZSBjbGFuZydzIGNmZSByZXBvIGNvbW1pdCByMjU4MTI4IGZvciBkZXRhaWxzLgorCitDaGFuZ2UtSWQ6IEk4MmI2MjM1ZTExYjQyNWZhZTQ1ZWViYmUwNmIwOGY4MWM1YmRiYjk4CitTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgorUmV2aWV3ZWQtb246IGh0dHBzOi8vcmV2aWV3LmNvcmVib290Lm9yZy8xODc5MgorUmV2aWV3ZWQtYnk6IFN0ZWZhbiBSZWluYXVlciA8c3RlZmFuLnJlaW5hdWVyQGNvcmVib290Lm9yZz4KK1Rlc3RlZC1ieTogYnVpbGQgYm90IChKZW5raW5zKSA8bm8tcmVwbHlAY29yZWJvb3Qub3JnPgorLS0tCisgaHdhY2Nlc3MuYyB8IDE4ICsrKysrKysrKysrKysrKy0tLQorIHBsYXRmb3JtLmggfCAxOCArKysrKysrKysrKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9od2FjY2Vzcy5jIGIvaHdhY2Nlc3MuYworaW5kZXggYWVkZTdlMy4uMmJmNmY0MiAxMDA2NDQKKy0tLSBhL2h3YWNjZXNzLmMKKysrKyBiL2h3YWNjZXNzLmMKK0BAIC0zNyw5ICszNywyMSBAQAorICNlcnJvciAiVW5rbm93biBvcGVyYXRpbmcgc3lzdGVtIgorICNlbmRpZgorIAorLSNkZWZpbmUgVVNFX0lPUEwJKElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pKQorLSNkZWZpbmUgVVNFX0RFVl9JTwkoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykpCistI2RlZmluZSBVU0VfSU9QRVJNCShkZWZpbmVkKF9fZ251X2h1cmRfXykpCisrI2lmIElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pCisrI2RlZmluZSBVU0VfSU9QTCAxCisrI2Vsc2UKKysjZGVmaW5lIFVTRV9JT1BMIDAKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKKysjZGVmaW5lIFVTRV9ERVZfSU8gMQorKyNlbHNlCisrI2RlZmluZSBVU0VfREVWX0lPIDAKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX2dudV9odXJkX18pCisrI2RlZmluZSBVU0VfSU9QRVJNIDEKKysjZWxzZQorKyNkZWZpbmUgVVNFX0lPUEVSTSAwCisrI2VuZGlmCisgCisgI2lmIFVTRV9JT1BFUk0KKyAjaW5jbHVkZSA8c3lzL2lvLmg+CitkaWZmIC0tZ2l0IGEvcGxhdGZvcm0uaCBiL3BsYXRmb3JtLmgKK2luZGV4IGM1YTUyZWYuLmIyZmRjZDAgMTAwNjQ0CistLS0gYS9wbGF0Zm9ybS5oCisrKysgYi9wbGF0Zm9ybS5oCitAQCAtMjUsOSArMjUsMjEgQEAKKyAjZGVmaW5lIF9fUExBVEZPUk1fSF9fIDEKKyAKKyAvLyBIZWxwZXIgZGVmaW5lcyBmb3Igb3BlcmF0aW5nIHN5c3RlbXMKKy0jZGVmaW5lIElTX0xJTlVYCShkZWZpbmVkKF9fZ251X2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eF9fKSkKKy0jZGVmaW5lIElTX01BQ09TWAkoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pKSAvKiB5ZXMsIGJvdGguICovCistI2RlZmluZSBJU19XSU5ET1dTCShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fV0lORE9XU19fKSkKKysjaWYgZGVmaW5lZChfX2dudV9saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKysjZGVmaW5lIElTX0xJTlVYIDEKKysjZWxzZQorKyNkZWZpbmUgSVNfTElOVVggMAorKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX01BQ0hfXykgLyogeWVzLCBib3RoLiAqLworKyNkZWZpbmUgSVNfTUFDT1NYIDEKKysjZWxzZQorKyNkZWZpbmUgSVNfTUFDT1NYIDAKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX1dJTkRPV1NfXykKKysjZGVmaW5lIElTX1dJTkRPV1MgMQorKyNlbHNlCisrI2RlZmluZSBJU19XSU5ET1dTIDAKKysjZW5kaWYKKyAKKyAvLyBMaWtld2lzZSBmb3IgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKKyAjaWYgZGVmaW5lZCAoX19pMzg2X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1pY2hzcGkuYy1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtaWNoc3BpLmMtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTZmMGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1pY2hzcGkuYy1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gYTJmNjAzYzU0MDEzY2QwYjA0YmIwMTAzZGM2MTU2NDRmMzE1ZDVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IE5vdiAyMDE2IDE3OjM5OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGljaHNwaS5jOiBGaXggYnVpbGQgd2l0aCBjbGFuZwotCi1pY2hzcGkuYzoxMTMwOjI0OiBlcnJvcjogZHVwbGljYXRlICdjb25zdCcgZGVjbGFyYXRpb24gc3BlY2lmaWVyIFstV2Vycm9yLC1XZHVwbGljYXRlLWRlY2wtc3BlY2lmaWVyXQotICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgY29uc3QgZGVjX2JlcmFzZVs0XSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpY2hzcGkuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ljaHNwaS5jIGIvaWNoc3BpLmMKLWluZGV4IDAyMjNhZTMuLmU0N2FlYmQgMTAwNjQ0Ci0tLS0gYS9pY2hzcGkuYwotKysrIGIvaWNoc3BpLmMKLUBAIC0xMTI3LDcgKzExMjcsNyBAQCBzdGF0aWMgdm9pZCBpY2hfaHdzZXFfc2V0X2FkZHIodWludDMyX3QgYWRkcikKLSBzdGF0aWMgdWludDMyX3QgaWNoX2h3c2VxX2dldF9lcmFzZV9ibG9ja19zaXplKHVuc2lnbmVkIGludCBhZGRyKQotIHsKLSAJdWludDhfdCBlbmNfYmVyYXNlOwotLQlzdGF0aWMgY29uc3QgdWludDMyX3QgY29uc3QgZGVjX2JlcmFzZVs0XSA9IHsKLSsJc3RhdGljIGNvbnN0IHVpbnQzMl90IGRlY19iZXJhc2VbNF0gPSB7Ci0gCQkyNTYsCi0gCQk0ICogMTAyNCwKLSAJCTggKiAxMDI0LAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXNwaS1EZWZpbmUtX1hPUEVOX1NPVVJDRS10by1lbmFibGUtZmZzLWxpYmMtQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTcwZmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDdjNjVhNDY1YTNkZGViN2FmYjlhN2M0OWQwMTBhZTdlNWQ1YjFhZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAyMDoyNTo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzcGk6IERlZmluZSBfWE9QRU5fU09VUkNFIHRvIGVuYWJsZSBmZnMoKSBsaWJjIEFQSQorCittdXNsIGV4cG9zZXMgdGhpcyBpc3N1ZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3BpLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcGkuYyBiL3NwaS5jCitpbmRleCA4OTRmNzNmLi5hZWI2NTE4IDEwMDY0NAorLS0tIGEvc3BpLmMKKysrKyBiL3NwaS5jCitAQCAtMjEsNyArMjEsNyBAQAorIC8qCisgICogQ29udGFpbnMgdGhlIGdlbmVyaWMgU1BJIGZyYW1ld29yaworICAqLworLQorKyNkZWZpbmUgX1hPUEVOX1NPVVJDRQorICNpbmNsdWRlIDxzdHJpbmdzLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlICJmbGFzaC5oIgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMi1EaXNhYmxlLVd0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlLXdoZW4tdXNpbmctY2xhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMi1EaXNhYmxlLVd0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlLXdoZW4tdXNpbmctY2xhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMxMWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDItRGlzYWJsZS1XdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZS13aGVuLXVzaW5nLWNsYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOWJlMGQxNTJkZmU4YWMwZjliNjY1ZDYxYWViM2Y5OWRhZTUzM2UwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDAwOjI1OjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBEaXNhYmxlIFd0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlIHdoZW4gdXNpbmcgY2xhbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGZsYXNocm9tLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9mbGFzaHJvbS5jIGIvZmxhc2hyb20uYwotaW5kZXggMDRlOTkzNC4uYmY0OTEwNCAxMDA2NDQKLS0tLSBhL2ZsYXNocm9tLmMKLSsrKyBiL2ZsYXNocm9tLmMKLUBAIC0xNTY5LDYgKzE1NjksOSBAQCBpbnQgc2VsZmNoZWNrKHZvaWQpCi0gCSAqIEZvciAnZmxhc2hjaGlwcycgd2UgY2hlY2sgdGhlIGZpcnN0IGVsZW1lbnQgdG8gYmUgbm9uLW51bGwuIEluIHRoZQotIAkgKiBvdGhlciBjYXNlcyB0aGVyZSBleGlzdCB1c2UgY2FzZXMgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgY2FuIGJlCi0gCSAqIG51bGwuICovCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlIgotKwotIAlpZiAoZmxhc2hjaGlwcyA9PSBOVUxMIHx8IGZsYXNoY2hpcHNbMF0udmVuZG9yID09IE5VTEwpIHsKLSAJCW1zZ19nZXJyKCJGbGFzaGNoaXBzIHRhYmxlIG1pc2NvbXBpbGF0aW9uIVxuIik7Ci0gCQlyZXQgPSAxOwotQEAgLTE2MDIsNiArMTYwNSw3IEBAIGludCBzZWxmY2hlY2sodm9pZCkKLSAJCW1zZ19nZXJyKCJLbm93biBsYXB0b3BzIHRhYmxlIGRvZXMgbm90IGV4aXN0IVxuIik7Ci0gCQlyZXQgPSAxOwotIAl9Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICNlbmRpZgotIAlyZXR1cm4gcmV0OwotIH0KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMy1yZW1vdmUtZHVwbGljYXRlLWNvbnN0LXF1YWxpZmllcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAzLXJlbW92ZS1kdXBsaWNhdGUtY29uc3QtcXVhbGlmaWVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkyODNkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAzLXJlbW92ZS1kdXBsaWNhdGUtY29uc3QtcXVhbGlmaWVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLUZyb20gNDJlYzliZDUxZTYwYWEzOGZlNmU3OGY2NDRlNzQyZDY5ODliNjY4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDAwOjI1OjIzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSByZW1vdmUgZHVwbGljYXRlIGNvbnN0IHF1YWxpZmllcnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJpdGJhbmdfc3BpLmMgIHwgMTIgKysrKysrLS0tLS0tCi0gZHVtbXlmbGFzaGVyLmMgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYml0YmFuZ19zcGkuYyBiL2JpdGJhbmdfc3BpLmMKLWluZGV4IDExZDJkZTEuLjUwOGNmNDUgMTAwNjQ0Ci0tLS0gYS9iaXRiYW5nX3NwaS5jCi0rKysgYi9iaXRiYW5nX3NwaS5jCi1AQCAtMjYsMzMgKzI2LDMzIEBACi0gI2luY2x1ZGUgInNwaS5oIgotIAotIC8qIE5vdGUgdGhhdCBDUyMgaXMgYWN0aXZlIGxvdywgc28gdmFsPTAgbWVhbnMgdGhlIGNoaXAgaXMgYWN0aXZlLiAqLwotLXN0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3NldF9jcyhjb25zdCBjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIsIGludCB2YWwpCi0rc3RhdGljIHZvaWQgYml0YmFuZ19zcGlfc2V0X2NzKGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlciwgaW50IHZhbCkKLSB7Ci0gCW1hc3Rlci0+c2V0X2NzKHZhbCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3NldF9zY2soY29uc3QgY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyLCBpbnQgdmFsKQotK3N0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3NldF9zY2soY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyLCBpbnQgdmFsKQotIHsKLSAJbWFzdGVyLT5zZXRfc2NrKHZhbCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3NldF9tb3NpKGNvbnN0IGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlciwgaW50IHZhbCkKLStzdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9zZXRfbW9zaShjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIsIGludCB2YWwpCi0gewotIAltYXN0ZXItPnNldF9tb3NpKHZhbCk7Ci0gfQotIAotLXN0YXRpYyBpbnQgYml0YmFuZ19zcGlfZ2V0X21pc28oY29uc3QgY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyKQotK3N0YXRpYyBpbnQgYml0YmFuZ19zcGlfZ2V0X21pc28oY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyKQotIHsKLSAJcmV0dXJuIG1hc3Rlci0+Z2V0X21pc28oKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgYml0YmFuZ19zcGlfcmVxdWVzdF9idXMoY29uc3QgY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyKQotK3N0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3JlcXVlc3RfYnVzKGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlcikKLSB7Ci0gCWlmIChtYXN0ZXItPnJlcXVlc3RfYnVzKQotIAkJbWFzdGVyLT5yZXF1ZXN0X2J1cygpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9yZWxlYXNlX2J1cyhjb25zdCBjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIpCi0rc3RhdGljIHZvaWQgYml0YmFuZ19zcGlfcmVsZWFzZV9idXMoY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyKQotIHsKLSAJaWYgKG1hc3Rlci0+cmVsZWFzZV9idXMpCi0gCQltYXN0ZXItPnJlbGVhc2VfYnVzKCk7Ci1kaWZmIC0tZ2l0IGEvZHVtbXlmbGFzaGVyLmMgYi9kdW1teWZsYXNoZXIuYwotaW5kZXggNjZkMGRmMC4uZDBkZTQxYyAxMDA2NDQKLS0tLSBhL2R1bW15Zmxhc2hlci5jCi0rKysgYi9kdW1teWZsYXNoZXIuYwotQEAgLTY2LDcgKzY2LDcgQEAgaW50IHNwaV9pZ25vcmVsaXN0X3NpemUgPSAwOwotIHN0YXRpYyB1aW50OF90IGVtdV9zdGF0dXMgPSAwOwotIAotIC8qIEEgbGVnaXQgY29tcGxldGUgU0ZEUCB0YWJsZSBiYXNlZCBvbiB0aGUgTVgyNUw2NDM2RSAocmV2LiAxLjgpIGRhdGFzaGVldC4gKi8KLS1zdGF0aWMgY29uc3QgdWludDhfdCBjb25zdCBzZmRwX3RhYmxlW10gPSB7Ci0rc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc2ZkcF90YWJsZVtdID0gewotIAkweDUzLCAweDQ2LCAweDQ0LCAweDUwLCAvLyBAMHgwMDogU0ZEUCBzaWduYXR1cmUKLSAJMHgwMCwgMHgwMSwgMHgwMSwgMHhGRiwgLy8gQDB4MDQ6IHJldmlzaW9uIDEuMCwgMiBoZWFkZXJzCi0gCTB4MDAsIDB4MDAsIDB4MDEsIDB4MDksIC8vIEAweDA4OiBKRURFQyBTRkRQIGhlYWRlciByZXYuIDEuMCwgOSBEVyBsb25nCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tL3NzdDI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhMDE1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tL3NzdDI2LnBhdGNoCkBAIC0wLDAgKzEsMTk4IEBACistLS0gZmxhc2hyb20tMC45Ljkub3JpZy9jaGlwZHJpdmVycy5oCisrKysgZmxhc2hyb20tMC45LjkvY2hpcGRyaXZlcnMuaAorQEAgLTEwMyw2ICsxMDMsNyBAQAorIGludCBzcGlfcHJldHR5cHJpbnRfc3RhdHVzX3JlZ2lzdGVyX3NzdDI1KHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpOworIGludCBzcGlfcHJldHR5cHJpbnRfc3RhdHVzX3JlZ2lzdGVyX3NzdDI1dmYwMTYoc3RydWN0IGZsYXNoY3R4ICpmbGFzaCk7CisgaW50IHNwaV9wcmV0dHlwcmludF9zdGF0dXNfcmVnaXN0ZXJfc3N0MjV2ZjA0MGIoc3RydWN0IGZsYXNoY3R4ICpmbGFzaCk7CisraW50IHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9zc3QyNl9nbG9iYWxfdW5wcm90ZWN0KHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpOworIAorIC8qIHNmZHAuYyAqLworIGludCBwcm9iZV9zcGlfc2ZkcChzdHJ1Y3QgZmxhc2hjdHggKmZsYXNoKTsKKy0tLSBmbGFzaHJvbS0wLjkuOS5vcmlnL2ZsYXNoY2hpcHMuYworKysrIGZsYXNocm9tLTAuOS45L2ZsYXNoY2hpcHMuYworQEAgLTEyNTY0LDYgKzEyNTY0LDEyMCBAQAorIAorIAl7CisgCQkudmVuZG9yCQk9ICJTU1QiLAorKwkJLm5hbWUJCT0gIlNTVDI2VkYwMTZCKEEpIiwKKysJCS5idXN0eXBlCT0gQlVTX1NQSSwKKysJCS5tYW51ZmFjdHVyZV9pZAk9IFNTVF9JRCwKKysJCS5tb2RlbF9pZAk9IFNTVF9TU1QyNlZGMDE2QiwKKysJCS50b3RhbF9zaXplCT0gMjA0OCwKKysJCS5wYWdlX3NpemUJPSAyNTYsCisrCQkuZmVhdHVyZV9iaXRzCT0gRkVBVFVSRV9XUlNSX1dSRU4gfCBGRUFUVVJFX09UUCwKKysJCS50ZXN0ZWQJCT0gVEVTVF9PS19QUkVXLAorKwkJLnByb2JlCQk9IHByb2JlX3NwaV9yZGlkLAorKwkJLnByb2JlX3RpbWluZwk9IFRJTUlOR19aRVJPLAorKwkJLmJsb2NrX2VyYXNlcnMJPQorKwkJeworKwkJCXsKKysJCQkJLmVyYXNlYmxvY2tzID0geyB7NCAqIDEwMjQsIDUxMn0gfSwKKysJCQkJLmJsb2NrX2VyYXNlID0gc3BpX2Jsb2NrX2VyYXNlXzIwLAorKwkJCX0sIHsKKysJCQkJLmVyYXNlYmxvY2tzID0geworKwkJCQkJezggKiAxMDI0LCA0fSwKKysJCQkJCXszMiAqIDEwMjQsIDF9LAorKwkJCQkJezY0ICogMTAyNCwgMzB9LAorKwkJCQkJezMyICogMTAyNCwgMX0sCisrCQkJCQl7OCAqIDEwMjQsIDR9LAorKwkJCQl9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfZDgsCisrCQkJfSwgeworKwkJCQkuZXJhc2VibG9ja3MgPSB7IHsyICogMTAyNCAqIDEwMjQsIDF9IH0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV9jNywKKysJCQl9LAorKwkJfSwKKysJCS5wcmludGxvY2sJPSBzcGlfcHJldHR5cHJpbnRfc3RhdHVzX3JlZ2lzdGVyX3BsYWluLCAvKiBUT0RPOiBpbXByb3ZlICovCisrCQkudW5sb2NrCQk9IHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9zc3QyNl9nbG9iYWxfdW5wcm90ZWN0LAorKwkJLndyaXRlCQk9IHNwaV9jaGlwX3dyaXRlXzI1NiwgLyogTXVsdGkgSS9PIHN1cHBvcnRlZCAqLworKwkJLnJlYWQJCT0gc3BpX2NoaXBfcmVhZCwgLyogRmFzdCByZWFkICgweDBCKSBhbmQgbXVsdGkgSS9PIHN1cHBvcnRlZCAqLworKwkJLnZvbHRhZ2UJPSB7MjcwMCwgMzYwMH0sCisrCX0sCisrCXsKKysJCS52ZW5kb3IJCT0gIlNTVCIsCisrCQkubmFtZQkJPSAiU1NUMjZWRjAzMkIoQSkiLAorKwkJLmJ1c3R5cGUJPSBCVVNfU1BJLAorKwkJLm1hbnVmYWN0dXJlX2lkCT0gU1NUX0lELAorKwkJLm1vZGVsX2lkCT0gU1NUX1NTVDI2VkYwMzJCLAorKwkJLnRvdGFsX3NpemUJPSA0MDk2LAorKwkJLnBhZ2Vfc2l6ZQk9IDI1NiwKKysJCS5mZWF0dXJlX2JpdHMJPSBGRUFUVVJFX1dSU1JfV1JFTiB8IEZFQVRVUkVfT1RQLAorKwkJLnRlc3RlZAkJPSBURVNUX1VOVEVTVEVELAorKwkJLnByb2JlCQk9IHByb2JlX3NwaV9yZGlkLAorKwkJLnByb2JlX3RpbWluZwk9IFRJTUlOR19aRVJPLAorKwkJLmJsb2NrX2VyYXNlcnMJPQorKwkJeworKwkJCXsKKysJCQkJLmVyYXNlYmxvY2tzID0geyB7NCAqIDEwMjQsIDEwMjR9IH0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV8yMCwKKysJCQl9LCB7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsKKysJCQkJCXs4ICogMTAyNCwgNH0sCisrCQkJCQl7MzIgKiAxMDI0LCAxfSwKKysJCQkJCXs2NCAqIDEwMjQsIDYyfSwKKysJCQkJCXszMiAqIDEwMjQsIDF9LAorKwkJCQkJezggKiAxMDI0LCA0fSwKKysJCQkJfSwKKysJCQkJLmJsb2NrX2VyYXNlID0gc3BpX2Jsb2NrX2VyYXNlX2Q4LAorKwkJCX0sIHsKKysJCQkJLmVyYXNlYmxvY2tzID0geyB7NCAqIDEwMjQgKiAxMDI0LCAxfSB9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfYzcsCisrCQkJfSwKKysJCX0sCisrCQkucHJpbnRsb2NrCT0gc3BpX3ByZXR0eXByaW50X3N0YXR1c19yZWdpc3Rlcl9wbGFpbiwgLyogVE9ETzogaW1wcm92ZSAqLworKwkJLnVubG9jawkJPSBzcGlfZGlzYWJsZV9ibG9ja3Byb3RlY3Rfc3N0MjZfZ2xvYmFsX3VucHJvdGVjdCwKKysJCS53cml0ZQkJPSBzcGlfY2hpcF93cml0ZV8yNTYsIC8qIE11bHRpIEkvTyBzdXBwb3J0ZWQgKi8KKysJCS5yZWFkCQk9IHNwaV9jaGlwX3JlYWQsIC8qIEZhc3QgcmVhZCAoMHgwQikgYW5kIG11bHRpIEkvTyBzdXBwb3J0ZWQgKi8KKysJCS52b2x0YWdlCT0gezI3MDAsIDM2MDB9LAorKwl9LAorKworKworKwl7CisrCQkudmVuZG9yCQk9ICJTU1QiLAorKwkJLm5hbWUJCT0gIlNTVDI2VkYwNjRCKEEpIiwKKysJCS5idXN0eXBlCT0gQlVTX1NQSSwKKysJCS5tYW51ZmFjdHVyZV9pZAk9IFNTVF9JRCwKKysJCS5tb2RlbF9pZAk9IFNTVF9TU1QyNlZGMDY0QiwKKysJCS50b3RhbF9zaXplCT0gODE5MiwKKysJCS5wYWdlX3NpemUJPSAyNTYsCisrCQkuZmVhdHVyZV9iaXRzCT0gRkVBVFVSRV9XUlNSX1dSRU4gfCBGRUFUVVJFX09UUCwKKysJCS50ZXN0ZWQJCT0gVEVTVF9PS19QUkVXLAorKwkJLnByb2JlCQk9IHByb2JlX3NwaV9yZGlkLAorKwkJLnByb2JlX3RpbWluZwk9IFRJTUlOR19aRVJPLAorKwkJLmJsb2NrX2VyYXNlcnMJPQorKwkJeworKwkJCXsKKysJCQkJLmVyYXNlYmxvY2tzID0geyB7NCAqIDEwMjQsIDIwNDh9IH0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV8yMCwKKysJCQl9LCB7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsKKysJCQkJCXs4ICogMTAyNCwgNH0sCisrCQkJCQl7MzIgKiAxMDI0LCAxfSwKKysJCQkJCXs2NCAqIDEwMjQsIDEyNn0sCisrCQkJCQl7MzIgKiAxMDI0LCAxfSwKKysJCQkJCXs4ICogMTAyNCwgNH0sCisrCQkJCX0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV9kOCwKKysJCQl9LCB7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsgezggKiAxMDI0ICogMTAyNCwgMX0gfSwKKysJCQkJLmJsb2NrX2VyYXNlID0gc3BpX2Jsb2NrX2VyYXNlX2M3LAorKwkJCX0sCisrCQl9LAorKwkJLnByaW50bG9jawk9IHNwaV9wcmV0dHlwcmludF9zdGF0dXNfcmVnaXN0ZXJfcGxhaW4sIC8qIFRPRE86IGltcHJvdmUgKi8KKysJCS51bmxvY2sJCT0gc3BpX2Rpc2FibGVfYmxvY2twcm90ZWN0X3NzdDI2X2dsb2JhbF91bnByb3RlY3QsCisrCQkud3JpdGUJCT0gc3BpX2NoaXBfd3JpdGVfMjU2LCAvKiBNdWx0aSBJL08gc3VwcG9ydGVkICovCisrCQkucmVhZAkJPSBzcGlfY2hpcF9yZWFkLCAvKiBGYXN0IHJlYWQgKDB4MEIpIGFuZCBtdWx0aSBJL08gc3VwcG9ydGVkICovCisrCQkudm9sdGFnZQk9IHsyNzAwLCAzNjAwfSwKKysJfSwKKysKKysJeworKwkJLnZlbmRvcgkJPSAiU1NUIiwKKyAJCS5uYW1lCQk9ICJTU1QyNVdGNTEyIiwKKyAJCS5idXN0eXBlCT0gQlVTX1NQSSwKKyAJCS5tYW51ZmFjdHVyZV9pZAk9IFNTVF9JRCwKKy0tLSBmbGFzaHJvbS0wLjkuOS5vcmlnL2ZsYXNoY2hpcHMuaAorKysrIGZsYXNocm9tLTAuOS45L2ZsYXNoY2hpcHMuaAorQEAgLTY5Nyw2ICs2OTcsOCBAQAorICNkZWZpbmUgU1NUX1NTVDI1VkYwNjRDCQkweDI1NEIKKyAjZGVmaW5lIFNTVF9TU1QyNlZGMDE2CQkweDI2MDEKKyAjZGVmaW5lIFNTVF9TU1QyNlZGMDMyCQkweDI2MDIKKysjZGVmaW5lIFNTVF9TU1QyNlZGMDE2QgkJMHgyNjQxCisrI2RlZmluZSBTU1RfU1NUMjZWRjAzMkIJCTB4MjY0MgorICNkZWZpbmUgU1NUX1NTVDI2VkYwNjRCCQkweDI2NDMKKyAjZGVmaW5lIFNTVF9TU1QyN1NGNTEyCQkweEE0CisgI2RlZmluZSBTU1RfU1NUMjdTRjAxMAkJMHhBNQorLS0tIGZsYXNocm9tLTAuOS45Lm9yaWcvbGludXhfc3BpLmMKKysrKyBmbGFzaHJvbS0wLjkuOS9saW51eF9zcGkuYworQEAgLTE0MSw2ICsxNDEsMTYgQEAKKyAJcmV0dXJuIDA7CisgfQorIAorK3N0YXRpYyB2b2lkIHByaW50X2hleChjb25zdCBjaGFyICptc2csIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKKyt7CisrICAgICAgICBzaXplX3QgaTsKKysJbXNnX3BzcGV3KCIlczpcbiIsIG1zZyk7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKysgICAgICAgICAgICAgICAgbXNnX3BzcGV3KCIgJTAyeCIsICgodWludDhfdCAqKWJ1ZilbaV0pOworKyAgICAgICAgfQorKyAgICAgICAgbXNnX3BzcGV3KCJcbiIpOworK30KKysKKyBzdGF0aWMgaW50IGxpbnV4X3NwaV9zZW5kX2NvbW1hbmQoc3RydWN0IGZsYXNoY3R4ICpmbGFzaCwgdW5zaWduZWQgaW50IHdyaXRlY250LAorIAkJCQkgIHVuc2lnbmVkIGludCByZWFkY250LAorIAkJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnR4YnVmLAorQEAgLTE3MiwxMCArMTgyLDEyIEBACisgCWVsc2UKKyAJCWlvY29udHJvbF9jb2RlID0gU1BJX0lPQ19NRVNTQUdFKDIpOworIAorKwlwcmludF9oZXgoIldyaXRlIiwgdHhidWYsIHdyaXRlY250KTsKKyAJaWYgKGlvY3RsKGZkLCBpb2NvbnRyb2xfY29kZSwgbXNnKSA9PSAtMSkgeworIAkJbXNnX2NlcnIoIiVzOiBpb2N0bDogJXNcbiIsIF9fZnVuY19fLCBzdHJlcnJvcihlcnJubykpOworIAkJcmV0dXJuIC0xOworIAl9CisrCWlmIChyZWFkY250KSBwcmludF9oZXgoIkdvdCIsIHJ4YnVmLCByZWFkY250KTsKKyAJcmV0dXJuIDA7CisgfQorIAorLS0tIGZsYXNocm9tLTAuOS45Lm9yaWcvc3BpMjVfc3RhdHVzcmVnLmMKKysrKyBmbGFzaHJvbS0wLjkuOS9zcGkyNV9zdGF0dXNyZWcuYworQEAgLTE5Niw2ICsxOTYsMTkgQEAKKyAJcmV0dXJuIHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9nZW5lcmljKGZsYXNoLCAweDNDLCAwLCAwLCAweEZGKTsKKyB9CisgCisraW50IHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9zc3QyNl9nbG9iYWxfdW5wcm90ZWN0KHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpCisreworKwlpbnQgcmVzdWx0ID0gc3BpX3dyaXRlX2VuYWJsZShmbGFzaCk7CisrCWlmIChyZXN1bHQpCisrCQlyZXR1cm4gcmVzdWx0OworKworKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjbWRbXSA9IHsgMHg5OCB9OyAvKiBVTEJQUiAqLworKwlyZXN1bHQgPSBzcGlfc2VuZF9jb21tYW5kKGZsYXNoLCBzaXplb2YoY21kKSwgMCwgY21kLCBOVUxMKTsKKysJaWYgKHJlc3VsdCkKKysJCW1zZ19jZXJyKCJVTEJQUiBmYWlsZWRcbiIpOworKwlyZXR1cm4gcmVzdWx0OworK30KKysKKyAvKiBBIGNvbW1vbiBibG9jayBwcm90ZWN0aW9uIGRpc2FibGUgdGhhdCB0cmllcyB0byB1bnNldCB0aGUgc3RhdHVzIHJlZ2lzdGVyIGJpdHMgbWFza2VkIGJ5IDB4MEMgKEJQMC0xKSBhbmQKKyAgKiBwcm90ZWN0ZWQvbG9ja2VkIGJ5IGJpdCAjNy4gVXNlZnVsIHdoZW4gYml0cyA0LTUgbWF5IGJlIG5vbi0wKS4gKi8KKyBpbnQgc3BpX2Rpc2FibGVfYmxvY2twcm90ZWN0X2JwMV9zcndkKHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb21fMC45LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkYzY4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZmxhc2hyb20gaXMgYSB1dGlsaXR5IGZvciBpZGVudGlmeWluZywgcmVhZGluZywgd3JpdGluZywgdmVyaWZ5aW5nIGFuZCBlcmFzaW5nIGZsYXNoIGNoaXBzIgotTElDRU5TRSA9ICJHUEx2MiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mbGFzaHJvbS5vcmciCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJwY2l1dGlscyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZmxhc2hyb20ub3JnL3JlbGVhc2VzL2ZsYXNocm9tLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtY29tcGlsYXRpb24tb24tYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURpc2FibGUtV3RhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUtd2hlbi11c2luZy1jbGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1yZW1vdmUtZHVwbGljYXRlLWNvbnN0LXF1YWxpZmllcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pY2hzcGkuYy1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwN2U4MzZjMGEyYjE3ZWM3NjU4M2NiNjgwOWY2NWU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmN2I1ODhjY2U3NGM5MGI0ZmU5YzljNzk0ZGUxMDVkZTc2ZTAzMjM0NDJmYjU3NzBiMWFlYWI4MWU5ZDU2MGEiCi0KLUNGTEFHUyArPSAiLVduby1lcnJvcj11bmtub3duLXByYWdtYXMiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZGQ4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuOS5iYgpAQCAtMCwwICsxLDIwIEBACitERVNDUklQVElPTiA9ICJmbGFzaHJvbSBpcyBhIHV0aWxpdHkgZm9yIGlkZW50aWZ5aW5nLCByZWFkaW5nLCB3cml0aW5nLCB2ZXJpZnlpbmcgYW5kIGVyYXNpbmcgZmxhc2ggY2hpcHMiCitMSUNFTlNFID0gIkdQTHYyIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZsYXNocm9tLm9yZyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gInBjaXV0aWxzIGxpYnVzYiBsaWJ1c2ItY29tcGF0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNwaS1EZWZpbmUtX1hPUEVOX1NPVVJDRS10by1lbmFibGUtZmZzLWxpYmMtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NzdDI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYWI5Yzk4OTI1ZDljZmI1ZmZiMjhiNjdhNjExMjUzMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjMxNTZiMGY2M2ViMTkyMDI0Yjc2YzA4MTQxMzU5MzAyOTdhYWM0MWY4MDc2MWE1ZDI5M2RlNzY5NzgzYzQ1IgorCitpbmhlcml0IHBrZ2NvbmZpZworCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAxLUNNYWtlTGlzdHMudHh0LUFkZC1BVVRPQ09ORl9IT1NUX09QVC10by1oZWxwLWNyb3NzLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDEtQ01ha2VMaXN0cy50eHQtQWRkLUFVVE9DT05GX0hPU1RfT1BULXRvLWhlbHAtY3Jvc3MtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5YTQyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDEtQ01ha2VMaXN0cy50eHQtQWRkLUFVVE9DT05GX0hPU1RfT1BULXRvLWhlbHAtY3Jvc3MtYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gY2ViNDdmMzc1ODJhMDU1YmI3ZjI1M2Y4MTNjNDM1YWQ1NWM1YjZlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIyIEFwciAyMDE3IDEwOjAyOjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBDTWFrZUxpc3RzLnR4dDogQWRkIEFVVE9DT05GX0hPU1RfT1BUIHRvIGhlbHAgY3Jvc3MKLSBjb21waWxpbmcKLQotVGhpcyBoZWxwcyBpbiBkb2luZyBjcm9zcyBjb21waWxlcyBmb3IgbW9kdWxlcyB3aGljaCBhcmUgdXNpbmcKLUdOVSBhdXRvY29uZiBmb3IgYnVpbGQgc3lzdGVtCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggYjA5M2Y5YS4uZWJmMGNkNyAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTI5MCw2ICsyOTAsMTIgQEAgZWxzZSgpCi0gICBlbmRpZigpCi0gZW5kaWYoKQotIAotK2lmKCIke0dOVV9IT1NUfSIgU1RSRVFVQUwgIiIpCi0rICAgIHNldChBVVRPQ09ORl9IT1NUX09QVCAiIikKLStlbHNlKCkKLSsgICAgc2V0KEFVVE9DT05GX0hPU1RfT1BUICItLWhvc3Q9JHtHTlVfSE9TVH0iKQotK2VuZGlmKCkKLSsKLSAjIE1lbW9yeSBBbGxvY2F0b3IKLSAjID09PT09PT09PT09PT09PT0KLSBpZihGTEJfSkVNQUxMT0MgQU5EICR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkxpbnV4IikKLUBAIC0yOTksNyArMzA1LDcgQEAgaWYoRkxCX0pFTUFMTE9DIEFORCAke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJMaW51eCIpCi0gICAjIExpbmsgdG8gSmVtYWxsb2MgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeQotICAgRXh0ZXJuYWxQcm9qZWN0X0FkZChqZW1hbGxvYwotICAgICBTT1VSQ0VfRElSICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MKLS0gICAgQ09ORklHVVJFX0NPTU1BTkQgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYi9qZW1hbGxvYy9jb25maWd1cmUgLS13aXRoLWxnLXF1YW50dW09MyAtLWVuYWJsZS1jYy1zaWxlbmNlIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KLSsgICAgQ09ORklHVVJFX0NPTU1BTkQgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYi9qZW1hbGxvYy9jb25maWd1cmUgJHtBVVRPQ09ORl9IT1NUX09QVH0gLS13aXRoLWxnLXF1YW50dW09MyAtLWVuYWJsZS1jYy1zaWxlbmNlIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KLSAgICAgQ0ZMQUdTPS1zdGQ9Z251OTlcIC1XYWxsXCAtcGlwZVwgLWczXCAtTzNcIC1mdW5yb2xsLWxvb3BzCi0gICAgIEJVSUxEX0NPTU1BTkQgJHtNQUtFfQotICAgICBJTlNUQUxMX0RJUiAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vCi1AQCAtMzE3LDcgKzMyMyw3IEBAIGVuZGlmKCkKLSBpZihGTEJfUkVHRVgpCi0gICBFeHRlcm5hbFByb2plY3RfQWRkKG9uaWdtbwotICAgICBTT1VSQ0VfRElSICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvb25pZ21vCi0tICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvb25pZ21vL2NvbmZpZ3VyZSAtLXdpdGgtcGljIC0tZGlzYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KLSsgICAgQ09ORklHVVJFX0NPTU1BTkQgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYi9vbmlnbW8vY29uZmlndXJlICR7QVVUT0NPTkZfSE9TVF9PUFR9IC0td2l0aC1waWMgLS1kaXNhYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgLS1wcmVmaXg9PElOU1RBTExfRElSPgotICAgICBDRkxBR1M9LXN0ZD1nbnU5OVwgLVdhbGxcIC1waXBlXCAtZzNcIC1PM1wgLWZ1bnJvbGwtbG9vcHMKLSAgICAgQlVJTERfQ09NTUFORCAke01BS0V9Ci0gICAgIElOU1RBTExfRElSICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8KLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXQvMDAwMS1mbHVlbnQtYml0LXNoYXJlZC1MaW5rLXdpdGgtbHB0aHJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDEtZmx1ZW50LWJpdC1zaGFyZWQtTGluay13aXRoLWxwdGhyZWFkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZWVkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDEtZmx1ZW50LWJpdC1zaGFyZWQtTGluay13aXRoLWxwdGhyZWFkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gNjJmYTliY2ViMTVhOWQxNjBkZDVkNjI0YTZkNDY5MDdjMTAxOWM1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMTc6MDI6NTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZmx1ZW50LWJpdC1zaGFyZWQ6IExpbmsgd2l0aCAtbHB0aHJlYWQKKworVGhpcyBmaXhlcyBhIHJlZmVyZW5jZSB0byBwdGhyZWFkX2F0Zm9yayBpbiBsaWJmbHVlbnQtYml0LnNvCitvdGhlcndpc2Ugd2UgZ2V0IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gdGhlIHN5bWJvbHMgaW4gYmluYXJpZXMKK3doaWNoIGFyZSBsaW5rZWQgd2l0aCBsaWJmbHVlbnQtYml0LnNvCisKK0ZpeGVzIGVycm9ycyBsaWtlCithcm0tYmVjLWxpbnV4LWdudWVhYmktbGQ6IC4uLy4uL2Jpbi9oZWxsb193b3JsZDogaGlkZGVuIHN5bWJvbCBgcHRocmVhZF9hdGZvcmsnIGluIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1iZWMtbGludXgtZ251ZWFiaS9mbHVlbnRiaXQvMC4xMi4xLXIwL3JlY2lwZS1zeXNyb290L3Vzci9saWIvbGlicHRocmVhZF9ub25zaGFyZWQuYShwdGhyZWFkX2F0Zm9yay5vUykgaXMgcmVmZXJlbmNlZCBieSBEU08KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIHNyYy9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9DTWFrZUxpc3RzLnR4dCBiL3NyYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggNDI1YTI0Ni4uMTI2NGU1OSAxMDA2NDQKKy0tLSBhL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtMTY4LDcgKzE2OCw3IEBAIHNldChGTEJfREVQUworICMgU2hhcmVkIExpYnJhcnkKKyBpZihOT1QgRkxCX1dJVEhPVVRfU0hBUkVEX0xJQikKKyAgIGFkZF9saWJyYXJ5KGZsdWVudC1iaXQtc2hhcmVkIFNIQVJFRCAke3NyY30pCistICB0YXJnZXRfbGlua19saWJyYXJpZXMoZmx1ZW50LWJpdC1zaGFyZWQgJHtGTEJfREVQU30pCisrICB0YXJnZXRfbGlua19saWJyYXJpZXMoZmx1ZW50LWJpdC1zaGFyZWQgJHtGTEJfREVQU30gLWxwdGhyZWFkKQorICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGZsdWVudC1iaXQtc2hhcmVkCisgICAgIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgZmx1ZW50LWJpdCkKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXQvMDAwMi1tc2dwYWNrLUFkZC1jb21tZW50LWZvci1pbnRlbmRlZC1mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXQvMDAwMi1tc2dwYWNrLUFkZC1jb21tZW50LWZvci1pbnRlbmRlZC1mYWxsdGhyb3VnaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVjZGIxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDItbXNncGFjay1BZGQtY29tbWVudC1mb3ItaW50ZW5kZWQtZmFsbHRocm91Z2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGQ5NWMyOTc3ZGEwNzRiZTBkMzkxM2U5NGZiOGZiNWVkMWM2NDQwNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAxMDowNDowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gbXNncGFjazogQWRkIGNvbW1lbnQgZm9yIGludGVuZGVkIGZhbGx0aHJvdWdoCi0KLUhlbHBzIGZpeGluZyBidWlsZCB3aXRoIGdjYzcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9tc2dwYWNrLWMtMGI3Y2FiZC9pbmNsdWRlL21zZ3BhY2svdW5wYWNrX3RlbXBsYXRlLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvbXNncGFjay1jLTBiN2NhYmQvaW5jbHVkZS9tc2dwYWNrL3VucGFja190ZW1wbGF0ZS5oIGIvbGliL21zZ3BhY2stYy0wYjdjYWJkL2luY2x1ZGUvbXNncGFjay91bnBhY2tfdGVtcGxhdGUuaAotaW5kZXggYTZkYWU2Zi4uNjUxZTZjMiAxMDA2NDQKLS0tLSBhL2xpYi9tc2dwYWNrLWMtMGI3Y2FiZC9pbmNsdWRlL21zZ3BhY2svdW5wYWNrX3RlbXBsYXRlLmgKLSsrKyBiL2xpYi9tc2dwYWNrLWMtMGI3Y2FiZC9pbmNsdWRlL21zZ3BhY2svdW5wYWNrX3RlbXBsYXRlLmgKLUBAIC0yNDgsNyArMjQ4LDcgQEAgbXNncGFja191bnBhY2tfZnVuYyhpbnQsIF9leGVjdXRlKShtc2dwYWNrX3VucGFja19zdHJ1Y3QoX2NvbnRleHQpKiBjdHgsIGNvbnN0IGMKLSAKLSAgICAgICAgICAgICBfZml4ZWRfdHJhaWxfYWdhaW46Ci0gICAgICAgICAgICAgICAgICsrcDsKLS0KLSsgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAotICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgIGlmKChzaXplX3QpKHBlIC0gcCkgPCB0cmFpbCkgeyBnb3RvIF9vdXQ7IH0KLSAgICAgICAgICAgICAgICAgbiA9IHA7ICBwICs9IHRyYWlsIC0gMTsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXQvamVtYWxsb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0L2plbWFsbG9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYWY5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0L2plbWFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK0FkZCAgLS13aXRoLWplbWFsbG9jLXByZWZpeD1qZV8gc28gaXQgY29tcGlsZXMgb24gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBmbHVlbnQtYml0LTAuMTIuMS9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZsdWVudC1iaXQtMC4xMi4xLm9yaWcvQ01ha2VMaXN0cy50eHQKKysrKyBmbHVlbnQtYml0LTAuMTIuMS9DTWFrZUxpc3RzLnR4dAorQEAgLTMyNSw3ICszMjUsNyBAQCBpZihGTEJfSkVNQUxMT0MgQU5EICR7Q01BS0VfU1lTVEVNX05BTUV9CisgICAjIExpbmsgdG8gSmVtYWxsb2MgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeQorICAgRXh0ZXJuYWxQcm9qZWN0X0FkZChqZW1hbGxvYworICAgICBTT1VSQ0VfRElSICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MKKy0gICAgQ09ORklHVVJFX0NPTU1BTkQgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYi9qZW1hbGxvYy9jb25maWd1cmUgJHtBVVRPQ09ORl9IT1NUX09QVH0gLS13aXRoLWxnLXF1YW50dW09MyAtLWVuYWJsZS1jYy1zaWxlbmNlIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KKysgICAgQ09ORklHVVJFX0NPTU1BTkQgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYi9qZW1hbGxvYy9jb25maWd1cmUgLS13aXRoLWplbWFsbG9jLXByZWZpeD1qZV8gJHtBVVRPQ09ORl9IT1NUX09QVH0gLS13aXRoLWxnLXF1YW50dW09MyAtLWVuYWJsZS1jYy1zaWxlbmNlIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KKyAgICAgQ0ZMQUdTPS1zdGQ9Z251OTlcIC1XYWxsXCAtcGlwZVwgLWczXCAtTzNcIC1mdW5yb2xsLWxvb3BzCisgICAgIEJVSUxEX0NPTU1BTkQgJHtNQUtFfQorICAgICBJTlNUQUxMX0RJUiAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzAuMTEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDc1NmU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJGYXN0IGRhdGEgY29sbGVjdG9yIGZvciBFbWJlZGRlZCBMaW51eCIKLUhPTUVQQUdFID0gImh0dHA6Ly9mbHVlbnRiaXQuaW8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mbHVlbnQvZmx1ZW50LWJpdC9pc3N1ZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZsdWVudGJpdC5pby9yZWxlYXNlcy8wLjExL2ZsdWVudC1iaXQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtQWRkLUFVVE9DT05GX0hPU1RfT1BULXRvLWhlbHAtY3Jvc3MtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1zZ3BhY2stQWRkLWNvbW1lbnQtZm9yLWludGVuZGVkLWZhbGx0aHJvdWdoLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjkzODMyNjIzMzk0MTI3ODJiODBjYzQ5ZTdhZDE1NjA5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImViOGE4NWM2NTZmYTYwNjgyYjBiZjhkZDFhZDU4ZDg0OGNkMjUxZGFiNGYzNWE2Nzc3YWNkNTUyYzY1YjA1MTEiCi0KLVMgPSAiJHtXT1JLRElSfS9mbHVlbnQtYml0LSR7UFZ9IgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKLQotREVQRU5EUyA9ICJ6bGliIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi1pbmhlcml0IGNtYWtlIHN5c3RlbWQKLQotRVhUUkFfT0VDTUFLRSA9ICItREdOVV9IT1NUPSR7SE9TVF9TWVN9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZmx1ZW50LWJpdC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzAuMTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmVkZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJGYXN0IGRhdGEgY29sbGVjdG9yIGZvciBFbWJlZGRlZCBMaW51eCIKK0hPTUVQQUdFID0gImh0dHA6Ly9mbHVlbnRiaXQuaW8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mbHVlbnQvZmx1ZW50LWJpdC9pc3N1ZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZsdWVudGJpdC5pby9yZWxlYXNlcy8wLjEyL2ZsdWVudC1iaXQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2plbWFsbG9jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmx1ZW50LWJpdC1zaGFyZWQtTGluay13aXRoLWxwdGhyZWFkLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjZiNDQ3MmNiN2U3MjEzYTAxNDI1YWY5MTIxNTc2ODI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlYzA1MzY1YmFlYTcyMzAzMzE2NTY4NzYxMWIzYmJhM2U2N2E3N2RjZTcyZTI4MmU5ZjAwMGY3YWNmOWUzN2IiCisKK1MgPSAiJHtXT1JLRElSfS9mbHVlbnQtYml0LSR7UFZ9IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKKworREVQRU5EUyA9ICJ6bGliIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgorCitpbmhlcml0IGNtYWtlIHN5c3RlbWQKKworRVhUUkFfT0VDTUFLRSA9ICItREdOVV9IT1NUPSR7SE9TVF9TWVN9IC1ERkxCX0FMTD1PTiAtREZMQl9URD0xIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidGQtYWdlbnQtYml0LnNlcnZpY2UiCisKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGlyZWRpcy9maWxlcy8wMDAxLU1ha2VmaWxlLXJlbW92ZS1oYXJkY29kaW5nLW9mLUNDLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGlyZWRpcy9maWxlcy8wMDAxLU1ha2VmaWxlLXJlbW92ZS1oYXJkY29kaW5nLW9mLUNDLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZjJiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oaXJlZGlzL2ZpbGVzLzAwMDEtTWFrZWZpbGUtcmVtb3ZlLWhhcmRjb2Rpbmctb2YtQ0MucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBkMTNiOTE4YTNmZjhiMGViZmQxZTdiMThiMTk4YjRiNDU4NDFkNzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEdhbGJ1c2VyYSA8Z2l6ZXJvQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgSnVsIDIwMTUgMTY6NDI6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IHJlbW92ZSBoYXJkY29kaW5nIG9mIENDCisKKyogdXBncmFkZSBwcmV2aW91cyBwYXRjaCB0byBhdm9pZCB3aXBpbmcgQ0ZMQUdTLiBUaGlzIGZpeGVzIGJ1aWxkIG9uIGFybQorcGxhdGZvcm1zIHdoaWNoIHByZXZpb3VzbHkgY2F1c2VkIGFuZCBpc3N1ZSBkdWUgdG8gLWZQSUMgYmVpbmcgbG9zdAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgR2FsYnVzZXJhIDxnaXplcm9AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA4YjBmMGMyLi42NmE0MzE3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzQsMTEgKzM0LDYgQEAgZGVmaW5lIFJFRElTX1RFU1RfQ09ORklHCisgZW5kZWYKKyBleHBvcnQgUkVESVNfVEVTVF9DT05GSUcKKyAKKy0jIEZhbGxiYWNrIHRvIGdjYyB3aGVuICRDQyBpcyBub3QgaW4gJFBBVEguCistQ0M6PSQoc2hlbGwgc2ggLWMgJ3R5cGUgJChDQykgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJiBlY2hvICQoQ0MpIHx8IGVjaG8gZ2NjJykKKy1PUFRJTUlaQVRJT04/PS1PMworLVdBUk5JTkdTPS1XYWxsIC1XIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd3cml0ZS1zdHJpbmdzCistREVCVUc/PSAtZyAtZ2dkYgorIFJFQUxfQ0ZMQUdTPSQoT1BUSU1JWkFUSU9OKSAtZlBJQyAkKENGTEFHUykgJChXQVJOSU5HUykgJChERUJVRykgJChBUkNIKQorIFJFQUxfTERGTEFHUz0kKExERkxBR1MpICQoQVJDSCkKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGlyZWRpcy9oaXJlZGlzXzAuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hpcmVkaXMvaGlyZWRpc18wLjEzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFlMzBkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hpcmVkaXMvaGlyZWRpc18wLjEzLjEuYmIKQEAgLTAsMCArMSwyMiBAQAorREVTQ1JJUFRJT04gPSAiTWluaW1hbGlzdGljIEMgY2xpZW50IGxpYnJhcnkgZm9yIFJlZGlzIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcmVkaXMvaGlyZWRpcyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJyZWRpcyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDg0ZDY1OWEzNWM2NjZkMjMyMzNlNTQ1MDNhYWVhNTEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmVkaXMvaGlyZWRpcztwcm90b2NvbD1naXQ7cmV2PWY1OGRkMjQ5ZDZlZDQ3YTdlODM1NDYzYzNiMDQ3MjI5NzIyODFkYmIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1yZW1vdmUtaGFyZGNvZGluZy1vZi1DQy5wYXRjaCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitFWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSIKKworIyBCeSBkZWZhdWx0IElOU1RBTEwgdmFyaWFibGUgaW4gTWFrZWZpbGUgaXMgZXF1YWwgdG8gJ2NwIC1hJywgd2hpY2ggcHJlc2VydmVzCisjIG93bmVyc2hpcCBhbmQgY2F1c2VzIGhvc3QtdXNlci1jb250YW1pbmF0aW9uIFFBIGlzc3VlLgorIyBBbmQgUFJFRklYIGRlZmF1bHRzIHRvIC91c3IvbG9jYWwuCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgIGV4cG9ydCBJTlNUQUxMPSdjcCAtcicKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTMzNWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHdsb2MvaHdsb2NfMS4xMS41LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiUG9ydGFibGUgSGFyZHdhcmUgTG9jYWxpdHkgKGh3bG9jKSBzb2Z0d2FyZSBwYWNrYWdlIgorREVTQ1JJUFRJT04gPSAiVGhlIFBvcnRhYmxlIEhhcmR3YXJlIExvY2FsaXR5IChod2xvYykgc29mdHdhcmUgcGFja2FnZSBcCisgcHJvdmlkZXMgYSBwb3J0YWJsZSBhYnN0cmFjdGlvbiBvZiB0aGUgaGllcmFyY2hpY2FsIHRvcG9sb2d5IG9mIG1vZGVybiBcCisgYXJjaGl0ZWN0dXJlcy4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5vcGVuLW1waS5vcmcvc29mdHdhcmUvaHdsb2MvIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjgyZTIwZGMzY2VjMzExZGVkYTNjNmQ0YjFmOTkwYiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5vcGVuLW1waS5vcmcvc29mdHdhcmUvJHtQTn0vdjEuMTEvZG93bmxvYWRzLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiOTZjMzQxMzZmZjQxNmQyYjEzYTc4MjFjMjc0NzdiZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTVkODAyODZkZmU2NThhM2Y3OWUyYWM5MDY5ODc4MmJiMzZlNTUwNGY0YmFjMWJiYTIzOTRiYTE0ZGJiYWQyNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gIm5jdXJzZXMgdWRldiB6bGliIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHID89ICJwY2kgbGlieG1sMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW251bWFjdGxdID0gIi0tZW5hYmxlLWxpYm51bWEsLS1kaXNhYmxlLWxpYm51bWEsbnVtYWN0bCxudW1hY3RsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLWVuYWJsZS1saWJ4bWwyLC0tZGlzYWJsZS1saWJ4bWwyLGxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBjYWlybyxjYWlybyIKK1BBQ0tBR0VDT05GSUdbcGNpXSA9ICItLWVuYWJsZS1wY2ksLS1kaXNhYmxlLXBjaSxsaWJwY2lhY2Nlc3MsbGlicGNpYWNjZXNzIgorCisjIFNwbGl0IGh3bG9jIGxpYnJhcnkgaW50byBzZXBhcmF0ZSBzdWJwYWNrYWdlCitQQUNLQUdFU19wcmVwZW5kID0gIiBsaWJod2xvYyAiCitGSUxFU19saWJod2xvYyArPSAiJHtsaWJkaXJ9L2xpYmh3bG9jLnNvLioiCitSREVQRU5EU18ke1BOfSArPSAibGliaHdsb2MgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9maWxlcy8wMDAxLXR3ZWFrLWluc3RhbGwtcHJlZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZmMxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIGNmZmU0NzY3Zjg5ZWEwYjU0YjU3ZThiZjkwNjVhMDhhOWMzOGQ0NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDIxOjUzOjAwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHR3ZWFrIGluc3RhbGwgcHJlZml4CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGRmMTZhM2IuLmZiZGZjYjQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0zOSwyNiArMzksMjYgQEAgcHlpc29tZDVzdW0uc286ICQoUFlPQkpTKQorIGluc3RhbGw6IGFsbCBpbnN0YWxsLWJpbiBpbnN0YWxsLXB5dGhvbiBpbnN0YWxsLWRldmVsCisgCisgaW5zdGFsbC1iaW46CistCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpL3Vzci9iaW4KKy0JaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikvdXNyL3NoYXJlL21hbi9tYW4xCistCWluc3RhbGwgLW0gMDc1NSBpbXBsYW50aXNvbWQ1ICQoREVTVERJUikvdXNyL2JpbgorLQlpbnN0YWxsIC1tIDA3NTUgY2hlY2tpc29tZDUgJChERVNURElSKS91c3IvYmluCistCWluc3RhbGwgLW0gMDY0NCBpbXBsYW50aXNvbWQ1LjEgJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjEKKy0JaW5zdGFsbCAtbSAwNjQ0IGNoZWNraXNvbWQ1LjEgJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjEKKysJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKGJpbmRpcikKKysJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorKwlpbnN0YWxsIC1tIDA3NTUgaW1wbGFudGlzb21kNSAkKERFU1RESVIpJChiaW5kaXIpCisrCWluc3RhbGwgLW0gMDc1NSBjaGVja2lzb21kNSAkKERFU1RESVIpJChiaW5kaXIpCisrCWluc3RhbGwgLW0gMDY0NCBpbXBsYW50aXNvbWQ1LjEgJChERVNURElSKSQobWFuZGlyKS9tYW4xCisrCWluc3RhbGwgLW0gMDY0NCBjaGVja2lzb21kNS4xICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorIAorIGluc3RhbGwtcHl0aG9uOgorIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFlUSE9OU0lURVBBQ0tBR0VTKQorIAlpbnN0YWxsIC1tIDA3NTUgcHlpc29tZDVzdW0uc28gJChERVNURElSKSQoUFlUSE9OU0lURVBBQ0tBR0VTKQorIAorIGluc3RhbGwtZGV2ZWw6CistCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpL3Vzci9pbmNsdWRlCistCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpL3Vzci8kKExJQkRJUikKKy0JaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikvdXNyL3NoYXJlL3BrZ2NvbmZpZworLQlpbnN0YWxsIC1tIDA2NDQgbGliaW1wbGFudGlzb21kNS5oICQoREVTVERJUikvdXNyL2luY2x1ZGUvCistCWluc3RhbGwgLW0gMDY0NCBsaWJjaGVja2lzb21kNS5oICQoREVTVERJUikvdXNyL2luY2x1ZGUvCistCWluc3RhbGwgLW0gMDY0NCBsaWJpbXBsYW50aXNvbWQ1LmEgJChERVNURElSKS91c3IvJChMSUJESVIpCistCWluc3RhbGwgLW0gMDY0NCBsaWJjaGVja2lzb21kNS5hICQoREVTVERJUikvdXNyLyQoTElCRElSKQorLQlzZWQgInMjQFZFUlNJT05AIyR7VkVSU0lPTn0jZzsgcyNAaW5jbHVkZWRpckAjJHtERVNURElSfS91c3IvaW5jbHVkZSNnOyBzI0BsaWJkaXJAIyR7REVTVERJUn0vdXNyLyR7TElCRElSfSNnIiBpc29tZDVzdW0ucGMuaW4gPiAke0RFU1RESVJ9L3Vzci9zaGFyZS9wa2djb25maWcvaXNvbWQ1c3VtLnBjCisrCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChpbmNsdWRlZGlyKQorKwlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQobGliZGlyKQorKwlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSR7ZGF0YWRpcn0vcGtnY29uZmlnCisrCWluc3RhbGwgLW0gMDY0NCBsaWJpbXBsYW50aXNvbWQ1LmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKysJaW5zdGFsbCAtbSAwNjQ0IGxpYmNoZWNraXNvbWQ1LmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKysJaW5zdGFsbCAtbSAwNjQ0IGxpYmltcGxhbnRpc29tZDUuYSAkKERFU1RESVIpJChsaWJkaXIpCisrCWluc3RhbGwgLW0gMDY0NCBsaWJjaGVja2lzb21kNS5hICQoREVTVERJUikkKGxpYmRpcikKKysJc2VkICJzI0BWRVJTSU9OQCMke1ZFUlNJT059I2c7IHMjQGluY2x1ZGVkaXJAIyR7REVTVERJUn0vdXNyL2luY2x1ZGUjZzsgcyNAbGliZGlyQCMke0RFU1RESVJ9L3Vzci8ke0xJQkRJUn0jZyIgaXNvbWQ1c3VtLnBjLmluID4gJHtERVNURElSfSR7ZGF0YWRpcn0vcGtnY29uZmlnL2lzb21kNXN1bS5wYworIAorIGNsZWFuOgorIAlybSAtZiAqLm8gKi5zbyAqLnB5YyAqLmEgLmRlcGVuZCAqfgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMi1maXgtcGFyYWxsZWwtZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMi1maXgtcGFyYWxsZWwtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzM2U0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9maWxlcy8wMDAyLWZpeC1wYXJhbGxlbC1lcnJvci5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDJhY2NlN2JjOGFiNzcxMWU3NmM3NzY1Yzg0YTE5OGZlMzhmMjQ3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDIzOjA2OjQxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBwYXJhbGxlbCBlcnJvcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBmYmRmY2I0Li4yYWQzMjM4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjksOSArMjksMTEgQEAgaW1wbGFudGlzb21kNTogaW1wbGFudGlzb21kNS5vIGxpYmltcGxhbnRpc29tZDUuYQorIGNoZWNraXNvbWQ1OiBjaGVja2lzb21kNS5vIGxpYmNoZWNraXNvbWQ1LmEKKyAJJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpIGNoZWNraXNvbWQ1Lm8gbGliY2hlY2tpc29tZDUuYSAtbHBvcHQgJChMREZMQUdTKSAtbyBjaGVja2lzb21kNQorIAorLWxpYmltcGxhbnRpc29tZDUuYTogbGliaW1wbGFudGlzb21kNS5hKGxpYmltcGxhbnRpc29tZDUubyBtZDUubyB1dGlsaXRpZXMubykKKytsaWJpbXBsYW50aXNvbWQ1LmE6IGxpYmltcGxhbnRpc29tZDUubyBtZDUubyB1dGlsaXRpZXMubworKwkkKEFSKSBydiAkQCAkXgorIAorLWxpYmNoZWNraXNvbWQ1LmE6IGxpYmNoZWNraXNvbWQ1LmEobGliY2hlY2tpc29tZDUubyBtZDUubyB1dGlsaXRpZXMubykKKytsaWJjaGVja2lzb21kNS5hOiBsaWJjaGVja2lzb21kNS5vIG1kNS5vIHV0aWxpdGllcy5vCisrCSQoQVIpIHJ2ICRAICReCisgCisgcHlpc29tZDVzdW0uc286ICQoUFlPQkpTKQorIAkkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgLXNoYXJlZCAtZyAtZnBpYyAkKFBZT0JKUykgJChMREZMQUdTKSAtbyBweWlzb21kNXN1bS5zbworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vaXNvbWQ1c3VtXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTUxMTNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlRvb2xzIGZvciB0YWtpbmcgdGhlIE1ENSBzdW0gb2YgSVNPIGltYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRvb2xzIGZvciB0YWtpbmcgdGhlIE1ENSBzdW0gb2YgSVNPIGltYWdlcyIKKworREVQRU5EUyA9ICJwb3B0IHB5dGhvbjMgb3BlbnNzbCBjdXJsIHBvcHQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAib3BlbnNzbCBjdXJsIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9pc29tZDVzdW0uZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1wYXJhbGxlbC1lcnJvci5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKKworRVhUUkFfT0VNQUtFICs9ICIgXAorICAgIERFU1RESVI9JyR7RH0nIFwKKyAgICBQWVRIT05JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9JyBcCisgICAgUFlUSE9OU0lURVBBQ0tBR0VTPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKK30KKworUEFDS0FHRVMgKz0gIiR7UFlUSE9OX1BOfS0ke1BOfSAke1BZVEhPTl9QTn0tJHtQTn0tZGJnIgorCitGSUxFU18ke1BZVEhPTl9QTn0tJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlpc29tZDVzdW0uc28iCitGSUxFU18ke1BZVEhPTl9QTn0tJHtQTn0tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1Zy9weWlzb21kNXN1bS5zbyIKKworU1JDUkVWID0gIjY5ZGMwMzZkMjA3NjE3MTViNzM0Y2E5Y2M1OWVjYzZkYzgxNDUwMjYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGktbmF0aXZlXzAuOS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGktbmF0aXZlXzAuOS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjJhY2U5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLW5hdGl2ZV8wLjkuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBmb3IgcmFwaWQgQ01QSSBwcm92aWRlcnMgZGV2ZWxvcG1lbnQiCi1ERVNDUklQVElPTiA9ICJcCi1Lb25rcmV0Q01QSSBtYWtlcyBDTVBJIHByb3ZpZGVyIGRldmVsb3BtZW50IGVhc2llciBieSBnZW5lcmF0aW5nIHR5cGUtc2FmZSBcCi1jb25jcmV0ZSBDSU0gaW50ZXJmYWNlcyBmcm9tIE1PRiBkZWZpbml0aW9ucyBhbmQgYnkgcHJvdmlkaW5nIGRlZmF1bHQgXAotaW1wbGVtZW50YXRpb25zIGZvciBtYW55IG9mIHRoZSBwcm92aWRlciBvcGVyYXRpb25zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ybm92YWNlay9rb25rcmV0Y21waSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjY3MzI3MGJmYzM1MGQ5Y2UxZWZjODcyNGM2YzE4NzMiCi1ERVBFTkRTID0gImNtYWtlLW5hdGl2ZSBjbXBpLWJpbmRpbmdzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jub3ZhY2VrL2tvbmtyZXRjbXBpLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9rb25rcmV0Y21waS0wLjkuMi1maXgtcmV0dXJuaW5nLWluc3RhbmNlLWZyb20tbWV0aG9kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LS5wYXRjaCAiCi0KLVNSQ1JFViA9ICI0NjBlNjQyMWMxNmE4MjE2ZDI5Y2NkMWI3NDkwZjgxNGRhYjhiNzY5IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBuYXRpdmUgY21ha2UKLUxERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ01BS0UgPSAiLURXSVRIX1BZVEhPTj1PTiBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkvMDAwMS1kcm9wLWluY2x1ZGluZy1ycGF0aC1jbWFrZS1tb2R1bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waS8wMDAxLWRyb3AtaW5jbHVkaW5nLXJwYXRoLWNtYWtlLW1vZHVsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDIwMTdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkvMDAwMS1kcm9wLWluY2x1ZGluZy1ycGF0aC1jbWFrZS1tb2R1bGUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA0NWUxYzRjMDRhMTI2ZDIzODY0NDY3NzVmOTkwODRiZDYwMzAxNmFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAyMzoxMDo1OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkcm9wIGluY2x1ZGluZyBycGF0aCBjbWFrZSBtb2R1bGUKKworRml4ZXMgY3Jvc3MgY29tcGlsYXRpb24gUUEgZXJyb3JzIGUuZy4KKy91c3IvbGliL2xpYmtvbmtyZXQuc28uMC4wLjEgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliIFt1c2VsZXNzLXJwYXRoc10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9rb25rcmV0L0NNYWtlTGlzdHMudHh0IHwgMSAtCisgc3JjL3Byb2dyYW0vQ01ha2VMaXN0cy50eHQgfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMva29ua3JldC9DTWFrZUxpc3RzLnR4dCBiL3NyYy9rb25rcmV0L0NNYWtlTGlzdHMudHh0CitpbmRleCBjMmZhYTQwLi5kZjQ5ZTExIDEwMDY0NAorLS0tIGEvc3JjL2tvbmtyZXQvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9rb25rcmV0L0NNYWtlTGlzdHMudHh0CitAQCAtOCw3ICs4LDYgQEAgc2V0KGtvbmtyZXRfU1JDUworICAgICBrc3RyLmMKKyAgICAgcHJpbnQuYworICkKKy1pbmNsdWRlKHJwYXRoKQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTVBJX0lOQ0xVREVfRElSfSkKKyAKKyBhZGRfbGlicmFyeShsaWJrb25rcmV0IFNIQVJFRCAke2tvbmtyZXRfU1JDU30pCitkaWZmIC0tZ2l0IGEvc3JjL3Byb2dyYW0vQ01ha2VMaXN0cy50eHQgYi9zcmMvcHJvZ3JhbS9DTWFrZUxpc3RzLnR4dAoraW5kZXggYWZjZWZlNS4uOGE0NjQ2YyAxMDA2NDQKKy0tLSBhL3NyYy9wcm9ncmFtL0NNYWtlTGlzdHMudHh0CisrKysgYi9zcmMvcHJvZ3JhbS9DTWFrZUxpc3RzLnR4dAorQEAgLTEsNCArMSwzIEBACistaW5jbHVkZSAocnBhdGgpCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNUElfSU5DTFVERV9ESVJ9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjKQorIAorIGFkZF9leGVjdXRhYmxlKGtvbmtyZXQgbWFpbi5jcHApCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waS9rb25rcmV0Y21waS0wLjkuMi1maXgtcmV0dXJuaW5nLWluc3RhbmNlLWZyb20tbWV0aG9kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkva29ua3JldGNtcGktMC45LjItZml4LXJldHVybmluZy1pbnN0YW5jZS1mcm9tLW1ldGhvZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDA5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waS9rb25rcmV0Y21waS0wLjkuMi1maXgtcmV0dXJuaW5nLWluc3RhbmNlLWZyb20tbWV0aG9kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotUG9ydCBmcm9tIEZlZG9yYTIwCi0KLSAgICB8IGNvbW1pdCBhY2E2YzdmOTEwZmZlOTkzMGI1Nzg5OTY5ZjBhZGZhZGQ2NjhiYjQ2Ci0gICAgfCBBdXRob3I6IE1pY2hhbCBNaW5hciA8bWltaW5hckByZWRoYXQuY29tPgotICAgIHwgRGF0ZTogICBGcmkgSnVuIDIwIDEwOjUwOjQ1IDIwMTQgKzAyMDAKLSAgICB8IAotICAgIHwgICAgIEZpeCByZXR1cm5pbmcgaW5zdGFuY2UgYXMgYW4gb3V0cHV0IGFyZ3VtZW50IGZyb20gbWV0aG9kCi0gICAgfCAgICAgCi0gICAgfCAgICAgU3VibWl0dGVkIEJ5OiBSYWRlayBOb3ZhY2VrIDxybm92YWNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFFpYW4gTGVpIDxxaWFubC5mbnN0QGNuLmZ1aml0c3UuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb2dyYW0vbWFpbi5jcHAgYi9zcmMvcHJvZ3JhbS9tYWluLmNwcAotaW5kZXggODg1ZGMxMi4uOWU3MTA4YSAxMDA2NDQKLS0tLSBhL3NyYy9wcm9ncmFtL21haW4uY3BwCi0rKysgYi9zcmMvcHJvZ3JhbS9tYWluLmNwcAotQEAgLTUwNiw3ICs1MDYsMTEgQEAgc3RhdGljIHZvaWQgZ2VuX2ZlYXR1cmVfZGVjbHMoCi0gCi0gICAgICAgICAgICAgLy8gQWRkIHNpZyBlbnRyeSBbdHlwZV1bbGVuZ3RoXVtuYW1lXVt6ZXJvLXRlcm1pbmF0b3JdCi0gCi0tICAgICAgICAgICAgS1RhZyB0YWcgPSBfa3RhZyhwZC0+ZGF0YV90eXBlLCBwZC0+YXJyYXlfaW5kZXgsIGtleSwgZmFsc2UsIGZhbHNlKTsKLSsgICAgICAgICAgICBLVGFnIHRhZzsKLSsgICAgICAgICAgICBpZiAocGQtPnF1YWxpZmllcnMtPmhhc19rZXkoIkVtYmVkZGVkSW5zdGFuY2UiKSkKLSsgICAgICAgICAgICAgICAgdGFnID0gX2t0YWcoVE9LX0lOU1RBTkNFLCBwZC0+YXJyYXlfaW5kZXgsIGtleSwgZmFsc2UsIGZhbHNlKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIHRhZyA9IF9rdGFnKHBkLT5kYXRhX3R5cGUsIHBkLT5hcnJheV9pbmRleCwga2V5LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgIHBhY2tfdGFnKHNpZywgdGFnKTsKLSAgICAgICAgICAgICBwYWNrX25hbWUoc2lnLCBwZC0+bmFtZSk7Ci0gICAgICAgICAgICAgY291bnQrKzsKLUBAIC02NDAsNiArNjQ0LDcgQEAgc3RhdGljIHZvaWQgZ2VuX3BhcmFtKEZJTEUqIG9zLCBNT0ZfUGFyYW1ldGVyKiBwLCB2ZWN0b3I8dW5zaWduZWQgY2hhcj4mIHNpZykKLSAgICAgICAgIGNvbnN0IGNoYXIqIGt0biA9IF9rdHlwZV9uYW1lKHAtPmRhdGFfdHlwZSk7Ci0gCi0gICAgICAgICBpZiAocC0+cXVhbGlmaWVycy0+aGFzX2tleSgiRW1iZWRkZWRJbnN0YW5jZSIpKSB7Ci0rICAgICAgICAgICAgdGFnID0gX2t0YWcoVE9LX0lOU1RBTkNFLCBwLT5hcnJheV9pbmRleCwgZmFsc2UsIGluLCBvdXQpOwotICAgICAgICAgICAgIGlmIChwLT5hcnJheV9pbmRleCkKLSAgICAgICAgICAgICAgICAgcHV0KG9zLCAiICAgIEtJbnN0YW5jZUEgJDA7XG4iLCBwLT5uYW1lLCBOVUxMKTsKLSAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCmluZGV4IDFkOGIwZGIuLmNiZjA0NzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCkBAIC02LDE0ICs2LDE1IEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm5vdmFjZWsva29ua3JldGNtcGkiCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY2NzMyNzBiZmMzNTBkOWNlMWVmYzg3MjRjNmMxODczIgotREVQRU5EUyA9ICJzd2lnLW5hdGl2ZSBzYmxpbS1jbXBpLWRldmVsIHB5dGhvbiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgc3dpZy1uYXRpdmUgc2JsaW0tY21waS1kZXZlbCBweXRob24iCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGNtcGktYmluZGluZ3MtbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcm5vdmFjZWsva29ua3JldGNtcGkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2tvbmtyZXRjbXBpLTAuOS4yLWZpeC1yZXR1cm5pbmctaW5zdGFuY2UtZnJvbS1tZXRob2QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1maXgtbGliNjQtY2FuLW5vdC1iZS1zaGlwZWQtaW4tNjRiaXQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHJvcC1pbmNsdWRpbmctcnBhdGgtY21ha2UtbW9kdWxlLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNSRVYgPSAiNDYwZTY0MjFjMTZhODIxNmQyOWNjZDFiNzQ5MGY4MTRkYWI4Yjc2OSIKK1NSQ1JFViA9ICJhZDI4MjI1ZTZlY2VmZjg4NDE3YTYwYzFiYTg4OTZjOGU0MGYyMWE3IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBjbWFrZQpAQCAtMjMsNiArMjQsOCBAQAogICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKICAgICAgICAgICAgICAgICAiCiAKK0xERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQogfQpAQCAtMzIsMyArMzUsNCBAQAogRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvX2tvbmtyZXRtb2Yuc28iCiBGSUxFU18ke1BOfS1weXRob24tZGJnID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy8uZGVidWcvKiIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1FeHBsaWNpdGx5LWRpc2FibGUtdGNtYWxsb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1FeHBsaWNpdGx5LWRpc2FibGUtdGNtYWxsb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNzZkZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtRXhwbGljaXRseS1kaXNhYmxlLXRjbWFsbG9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBkNmRhYWMwNGRhYjRiM2FjZjRiODhmMTY3NDJkMWI0MDJjZGMzZDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxIE9jdCAyMDE0IDE4OjU0OjA0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEV4cGxpY2l0bHkgZGlzYWJsZSB0Y21hbGxvYwotCi1XaXRob3V0IHRoaXMgY2hhbmdlIGxldmVsZGIgYXV0b2RldGVjdHMgdGNtYWxsb2MgZnJvbSBzeXNyb290IGFuZAotc29tZXRpbWVzIGJlY2FtZSBkZXBlbmRhbnQgb24gZ3BlcmZ0b29scwotCi1EaXNhYmxlIGF1dG9kZXRlY3Rpb24gd2l0aG91dCBUQ01BTExPQ19FTkFCTEVEPXRydWUgcGFzZWQgdG8gbWFrZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGJ1aWxkX2RldGVjdF9wbGF0Zm9ybSB8IDE2ICsrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtIGIvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCi1pbmRleCBiYjc2YzRmLi5hNTg2MzY0IDEwMDc1NQotLS0tIGEvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCi0rKysgYi9idWlsZF9kZXRlY3RfcGxhdGZvcm0KLUBAIC0yMDEsMTUgKzIwMSwxNyBAQCBFT0YKLSAgICAgICAgIFBMQVRGT1JNX0xJQlM9IiRQTEFURk9STV9MSUJTIC1sc25hcHB5IgotICAgICBmaQotIAotLSAgICAjIFRlc3Qgd2hldGhlciB0Y21hbGxvYyBpcyBhdmFpbGFibGUKLS0gICAgJENYWCAkQ1hYRkxBR1MgLXggYysrIC0gLW8gJENYWE9VVFBVVCAtbHRjbWFsbG9jIDI+L2Rldi9udWxsICA8PEVPRgotLSAgICAgIGludCBtYWluKCkge30KLSsgICAgaWYgWyAiJFRDTUFMTE9DX0VOQUJMRUQiID0gInRydWUiIF07IHRoZW4KLSsgICAgICAgICMgVGVzdCB3aGV0aGVyIHRjbWFsbG9jIGlzIGF2YWlsYWJsZQotKyAgICAgICAgJENYWCAkQ1hYRkxBR1MgLXggYysrIC0gLW8gJENYWE9VVFBVVCAtbHRjbWFsbG9jIDI+L2Rldi9udWxsICA8PEVPRgotKyAgICAgICAgICBpbnQgbWFpbigpIHt9Ci0gRU9GCi0tICAgIGlmIFsgIiQ/IiA9IDAgXTsgdGhlbgotLSAgICAgICAgUExBVEZPUk1fTElCUz0iJFBMQVRGT1JNX0xJQlMgLWx0Y21hbGxvYyIKLS0gICAgZmkKLSsgICAgICAgIGlmIFsgIiQ/IiA9IDAgXTsgdGhlbgotKyAgICAgICAgICAgIFBMQVRGT1JNX0xJQlM9IiRQTEFURk9STV9MSUJTIC1sdGNtYWxsb2MiCi0rICAgICAgICBmaQotIAotLSAgICBybSAtZiAkQ1hYT1VUUFVUIDI+L2Rldi9udWxsCi0rICAgICAgICBybSAtZiAkQ1hYT1VUUFVUIDI+L2Rldi9udWxsCi0rICAgIGZpCi0gZmkKLSAKLSBQTEFURk9STV9DQ0ZMQUdTPSIkUExBVEZPUk1fQ0NGTEFHUyAkQ09NTU9OX0ZMQUdTIgotLS0gCi0yLjEuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1NYWtlZmlsZS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1NYWtlZmlsZS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzNWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGM4NTk3OGU3NzcyNWVmMjMzNTQzMzcwZDI0ZTIzZjg1M2Y0NDkxNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMSBTZXAgMjAxNyAxNzo0NzowMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogRml4IHBhcmFsbGVsIGJ1aWxkCisKK1NvbWV0aW1lcyBta2RpciAkKFNIQVJFRF9PVVRESVIpL2RiIHJhY2VzIHdpdGggY29tcGlsZXIgd2hpY2ggaXMKK2NyZWF0aW5nIC5vIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICQoU0hBUkVEX09VVERJUikvZGIvZGJfYmVuY2gubworCitGaXhlcyBlcnJvciBsaWtlCisKK3wgbWtkaXIgb3V0LXN0YXRpYworfCBta2RpciBvdXQtc2hhcmVkL2RiCit8IEFzc2VtYmxlciBtZXNzYWdlczoKK3wgRmF0YWwgZXJyb3I6IGNhbid0IGNyZWF0ZSBvdXQtc2hhcmVkL2RiL2RiX2JlbmNoLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIE1ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGY3Y2M3ZDcuLjUxYTBiY2QgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0zODYsNiArMzg2LDcgQEAgJChTVEFUSUNfT1VURElSKS93cml0ZV9iYXRjaF90ZXN0OmRiL3dyaXRlX2JhdGNoX3Rlc3QuY2MgJChTVEFUSUNfTElCT0JKRUNUUykgJCgKKyAkKFNUQVRJQ19PVVRESVIpL21lbWVudl90ZXN0OiQoU1RBVElDX09VVERJUikvaGVscGVycy9tZW1lbnYvbWVtZW52X3Rlc3QubyAkKFNUQVRJQ19PVVRESVIpL2xpYm1lbWVudi5hICQoU1RBVElDX09VVERJUikvbGlibGV2ZWxkYi5hICQoVEVTVEhBUk5FU1MpCisgCSQoWENSVU4pICQoQ1hYKSAkKExERkxBR1MpICQoU1RBVElDX09VVERJUikvaGVscGVycy9tZW1lbnYvbWVtZW52X3Rlc3QubyAkKFNUQVRJQ19PVVRESVIpL2xpYm1lbWVudi5hICQoU1RBVElDX09VVERJUikvbGlibGV2ZWxkYi5hICQoVEVTVEhBUk5FU1MpIC1vICRAICQoTElCUykKKyAKKyskKFNIQVJFRF9PVVRESVIpL2RiL2RiX2JlbmNoLm86IHwgJChTSEFSRURfT1VURElSKS9kYgorICQoU0hBUkVEX09VVERJUikvZGJfYmVuY2g6JChTSEFSRURfT1VURElSKS9kYi9kYl9iZW5jaC5vICQoU0hBUkVEX0xJQlMpICQoVEVTVFVUSUwpCisgCSQoWENSVU4pICQoQ1hYKSAkKExERkxBR1MpICQoQ1hYRkxBR1MpICQoUExBVEZPUk1fU0hBUkVEX0NGTEFHUykgJChTSEFSRURfT1VURElSKS9kYi9kYl9iZW5jaC5vICQoVEVTVFVUSUwpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMykgLW8gJEAgJChMSUJTKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOTNjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1idWlsZF9kZXRlY3RfcGxhdGZvcm0tQ2hlY2stZm9yLV9fU1NFNF8yX18ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1ZmQwOTE4ZGYyYmIzMGU4ZjNlZGIyZWU4OTVkMTc4ZWRiZjI2ZjQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNCBTZXAgMjAxNyAyMjozODowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gYnVpbGRfZGV0ZWN0X3BsYXRmb3JtOiBDaGVjayBmb3IgX19TU0U0XzJfXworCitqdXN0IHVzaW5nIC1tc3NlNC4yIGlzIG5vdCBlbm91Z2gsIGVzcGVjaWFsbHkgd2l0aCBjbGFuZword2hlcmUgaXQgbWF5IGFjY2VwdCAtbXNzZTQuMiBldmVuIGR1cmluZyBjcm9zcyBjb21waWxpbmcKK2ZvciBzYXkgYXJtLCBob3dldmVyIHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgYnVpbHRpbiBkZWZpbmVzCit3b250IGJlIGRlZmluZWQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgYnVpbGRfZGV0ZWN0X3BsYXRmb3JtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9idWlsZF9kZXRlY3RfcGxhdGZvcm0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9idWlsZF9kZXRlY3RfcGxhdGZvcm0KKysrKyBnaXQvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCitAQCAtMjI0LDEzICsyMjQsMTMgQEAgRU9GCisgICAgIHJtIC1mICRDWFhPVVRQVVQgMj4vZGV2L251bGwKKyAKKyAgICAgIyBUZXN0IGlmIGdjYyBTU0UgNC4yIGlzIHN1cHBvcnRlZAorLSAgICAkQ1hYICRDWFhGTEFHUyAteCBjKysgLSAtbyAkQ1hYT1VUUFVUIC1tc3NlNC4yIDI+L2Rldi9udWxsICA8PEVPRgorKyAgICAkQ1hYICRDWFhGTEFHUyAtV2Vycm9yIC14IGMrKyAtIC1vICRDWFhPVVRQVVQgLW1zc2U0LjIgLWREIC1FIDI+L2Rldi9udWxsICA8PEVPRgorICAgICAgIGludCBtYWluKCkge30KKyBFT0YKKysgICAgZXZhbCBmZ3JlcCBfX1NTRTRfMl9fICRDWFhPVVRQVVQgPi9kZXYvbnVsbCAyPiYxCisgICAgIGlmIFsgIiQ/IiA9IDAgXTsgdGhlbgorICAgICAgICAgUExBVEZPUk1fU1NFRkxBR1M9Ii1tc3NlNC4yIgorICAgICBmaQorLQorICAgICBybSAtZiAkQ1hYT1VUUFVUIDI+L2Rldi9udWxsCisgZmkKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAyLW1ha2VmaWxlLWJ1aWxkLVNIQVJFRF9NRU1FTlZMSUIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNzA4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMWVkOGNlYzFmY2Y2NjY5MDRiYjNlYmQyOWZjODVlMjM1YjcyZDEyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMjI6NDA6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIG1ha2VmaWxlOiBidWlsZCBTSEFSRURfTUVNRU5WTElCCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgTWFrZWZpbGUgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBmN2NjN2Q3Li5jYjQyMjc4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTI2LDEyICsxMjYsMTIgQEAgU0hBUkVEX1ZFUlNJT05fTUlOT1IgPSAyMAorIFNIQVJFRF9MSUIxID0gbGlibGV2ZWxkYi4kKFBMQVRGT1JNX1NIQVJFRF9FWFQpCisgU0hBUkVEX0xJQjIgPSAkKFNIQVJFRF9MSUIxKS4kKFNIQVJFRF9WRVJTSU9OX01BSk9SKQorIFNIQVJFRF9MSUIzID0gJChTSEFSRURfTElCMSkuJChTSEFSRURfVkVSU0lPTl9NQUpPUikuJChTSEFSRURfVkVSU0lPTl9NSU5PUikKKy1TSEFSRURfTElCUyA9ICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMSkgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIyKSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjMpCisrU0hBUkVEX0xJQlMgPSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjEpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMikgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIzKSAkKFNIQVJFRF9NRU1FTlZMSUIpCisgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIxKTogJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIzKQorIAlsbiAtZnMgJChTSEFSRURfTElCMykgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIxKQorICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMik6ICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMykKKyAJbG4gLWZzICQoU0hBUkVEX0xJQjMpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMikKKy1TSEFSRURfTUVNRU5WTElCID0gJChTSEFSRURfT1VURElSKS9saWJtZW1lbnYuYQorK1NIQVJFRF9NRU1FTlZMSUIgPSAkKFNIQVJFRF9PVVRESVIpL2xpYm1lbWVudi4kKFBMQVRGT1JNX1NIQVJFRF9FWFQpLiQoU0hBUkVEX1ZFUlNJT05fTUFKT1IpLiQoU0hBUkVEX1ZFUlNJT05fTUlOT1IpCisgZW5kaWYKKyAKKyAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjMpOiAkKFNIQVJFRF9MSUJPQkpFQ1RTKQorQEAgLTI5NCw3ICsyOTQsNyBAQCBlbmRpZgorIAorICQoU0hBUkVEX01FTUVOVkxJQik6JChTSEFSRURfTUVNRU5WT0JKRUNUUykKKyAJcm0gLWYgJEAKKy0JJChBUikgLXJzICRAICQoU0hBUkVEX01FTUVOVk9CSkVDVFMpCisrCSQoQ1hYKSAkKExERkxBR1MpICQoUExBVEZPUk1fU0hBUkVEX0xERkxBR1MpJChiYXNlbmFtZSAkKG5vdGRpciAkKFNIQVJFRF9NRU1FTlZMSUIpKSkgJChTSEFSRURfTUVNRU5WT0JKRUNUUykgLW8gJChTSEFSRURfTUVNRU5WTElCKSAkKExJQlMpCisgCisgJChTVEFUSUNfT1VURElSKS9kYl9iZW5jaDpkYi9kYl9iZW5jaC5jYyAkKFNUQVRJQ19MSUJPQkpFQ1RTKSAkKFRFU1RVVElMKQorIAkkKENYWCkgJChMREZMQUdTKSAkKENYWEZMQUdTKSBkYi9kYl9iZW5jaC5jYyAkKFNUQVRJQ19MSUJPQkpFQ1RTKSAkKFRFU1RVVElMKSAtbyAkQCAkKExJQlMpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiX2dpdC5iYgppbmRleCBhNmEzMDI0Li44ZmVjODljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIKQEAgLTQsMjQgKzQsMzQgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTJkMWIxMjg5NTBiMTFiYTg0OTViNjQ5MzhmYzE2NGQiCiAKLVNSQ1JFViA9ICI4MDNkNjkyMDNhNjJmYWY1MGYxYjc3ODk3MzEwYTNhMWZjYWU3MTJiIgotUFYgPSAiMS4xOCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJhNTM5MzRhM2FlMTI0NDY3OWY4MTJkOTk4YTRmMTZmMmM3ZjMwOWE2IgorUFYgPSAiMS4yMCtnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS8ke0JQTn0uZ2l0IFwKLSAgICBmaWxlOi8vMDAwMS1FeHBsaWNpdGx5LWRpc2FibGUtdGNtYWxsb2MucGF0Y2ggXAotIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZF9kZXRlY3RfcGxhdGZvcm0tQ2hlY2stZm9yLV9fU1NFNF8yX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCitpbmhlcml0IHV0aWxzCisKIGRvX2NvbXBpbGUoKSB7CiAgICAgIyBkbyBub3QgdXNlIG9lX3J1bm1ha2UuIG9lX3J1bm1ha2UgcGFzcyB0byBtYWtlIGNvbXBpbGF0aW9uIGFyZ3VtZW50cyBhbmQgb3ZlcnJpZGUKICAgICAjIGxldmVsZGIgbWFrZWZpbGUgdmFyaWFibGUgQ0ZMQUdTIGFuZCBicm9rZSBsZXZlbGRiIGJ1aWxkLgotICAgIENGTEFHUz0iJHtDRkxBR1N9IiBtYWtlIHx8IGRpZQorICAgIENGTEFHUz0iJHtDRkxBR1N9IiBtYWtlICR7UEFSQUxMRUxfTUFLRX18fCBkaWUKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLSAgICBvZV9saWJpbnN0YWxsIC1DICR7U30gLXNvIGxpYmxldmVsZGIgJHtEfSR7bGliZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vbGV2ZWxkYgorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfSAke0R9JHtiaW5kaXJ9ICR7RH0ke2luY2x1ZGVkaXJ9L2xldmVsZGIKKyAgICBvZV9saWJpbnN0YWxsIC1DICR7Qn0vb3V0LXNoYXJlZCBsaWJsZXZlbGRiICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DICR7U30vb3V0LXN0YXRpYyBsaWJsZXZlbGRiICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DICR7U30vb3V0LXN0YXRpYyBsaWJtZW1lbnYgJHtEfSR7bGliZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L291dC1zaGFyZWQvZGJfYmVuY2ggJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L291dC1zdGF0aWMvKl90ZXN0ICR7RH0ke2JpbmRpcn0KICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGV2ZWxkYi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vbGV2ZWxkYi8KIH0KKworUEFDS0FHRVMgPSsgIiR7UE59LXB0ZXN0IgorRklMRVNfJHtQTn0tcHRlc3QgPSAiJHtiaW5kaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNGVlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSA4NjY4NmNjYmY0M2M1ZDllOGM4ZGM5N2M2NmJhMDllNTIyMDUwZTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBKdWwgMjAxNyAxMDowNjoyNCArMDgwMAorU3ViamVjdDogW1BBVENIIDEvM10gZml4IGNvbmZpZ3VyZSBhbmQgY29tcGlsZSBmYWlsdXJlcworCisxLiBGaXggZG9fY29uZmlndXJlIGZhaWx1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorfENoZWNraW5nIGhlYWRlciB2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaCBleGlzdGVuY2UgYW5kIHVzYWJpbGl0eS4KKy4uL3RtcC82dHZ0Sy5jOjE6Mzg6IGZhdGFsIGVycm9yOiB2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaDoKK05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3wgI2luY2x1ZGUgPHZvbHVtZV9rZXkvbGlidm9sdW1lX2tleS5oPgorfENoZWNraW5nIGhlYWRlciBkbXJhaWQvZG1yYWlkLmggZXhpc3RlbmNlIGFuZCB1c2FiaWxpdHkuLi4vdG1wLwora3RWSjYuYzoxOjI3OiBmYXRhbCBlcnJvcjogZG1yYWlkL2RtcmFpZC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1dlIGV4cGxpY3RseSBhZGQgdm9sdW1lX2tleSBhbmQgZG1yYWlkIHRvIERFUEVORFMsIGRvIG5vdCBuZWVkCitjb25maWd1cmUgdG8gdGVzdC4KKworMi4gRml4IGNvbmZpZy5oIG5vdCBmb3VuZAorQWRkIGl0IHRvIGNvbmZpZ3VyZS5hYworCiszLiBDb3JyZWN0IEFDX0RFRklORQorLi4uCithdXRvaGVhZGVyOiB3YXJuaW5nOiBtaXNzaW5nIHRlbXBsYXRlOiBMSUJNT1VOVF9ORVdfRVJSX0FQSQorYXV0b2hlYWRlcjogVXNlIEFDX0RFRklORShbTElCTU9VTlRfTkVXX0VSUl9BUEldLCBbXSwgW0Rlc2NyaXB0aW9uXSkKKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMCArKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDI3MGM5OS4uYjdjNzM2OCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOSw2ICs5LDggQEAgQUNfRElTQUJMRV9TVEFUSUMKKyBBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIC1XYWxsIC1XZXJyb3IgLVduby1zeW50YXggLVduby1wb3J0YWJpbGl0eV0pCisgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorIAorK0FDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisrCisgQU1fUEFUSF9QWVRIT04KKyAKKyBBTV9QUk9HX0FSCitAQCAtMTI5LDcgKzEzMSw2IEBAIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtVREVWXSwgW2xpYnVkZXYgPj0gMjE2XSkKKyBBU19JRihbdGVzdCAieCR3aXRoX2NyeXB0byIgIT0gInhubyJdLAorICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JZUFRTRVRVUF0sIFtsaWJjcnlwdHNldHVwID49IDEuNi43XSkKKyAgICAgICAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW05TU10sIFtuc3MgPj0gMy4xOC4wXSkKKy0gICAgICAgTElCQkxPQ0tERVZfQ0hFQ0tfSEVBREVSKFt2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaF0sIFskR0xJQl9DRkxBR1MgJE5TU19DRkxBR1NdLCBbbGlidm9sdW1lX2tleS5oIG5vdCBhdmFpbGFibGVdKQorICAgICAgIF0sCisgICAgICAgW10pCisgCitAQCAtMTM3LDEwICsxMzgsNiBAQCBBU19JRihbdGVzdCAieCR3aXRoX2RtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bSIgIT0gInhubyIgLW8gIngkd2l0aF9sdm1fZGJ1cyIgIQorICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbREVWTUFQUEVSXSwgW2Rldm1hcHBlciA+PSAxLjAyLjkzXSldLAorICAgICAgIFtdKQorIAorLUFTX0lGKFt0ZXN0ICJ4JHdpdGhfZG0iICE9ICJ4bm8iXSwKKy0gICAgICBbTElCQkxPQ0tERVZfQ0hFQ0tfSEVBREVSKFtkbXJhaWQvZG1yYWlkLmhdLCBbXSwgW2RtcmFpZC5oIG5vdCBhdmFpbGFibGVdKV0sCistICAgICAgW10pCistCisgQVNfSUYoW3Rlc3QgIngkd2l0aF9rYmQiICE9ICJ4bm8iXSwKKyAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0tNT0RdLCBbbGlia21vZCA+PSAxOV0pXSwKKyAgICAgICBbXSkKK0BAIC0xNTQsNyArMTUxLDggQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9mcyIgIT0gInhubyJdLAorICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbTU9VTlRdLCBbbW91bnQgPj0gMi4yMy4wXSkKKyAgICAgICAgIyBuZXcgdmVyc2lvbnMgb2YgbGlibW91bnQgaGFzIHNvbWUgbmV3IGZ1bmN0aW9ucyB3ZSBjYW4gdXNlCisgICAgICAgIEFTX0lGKFskUEtHX0NPTkZJRyAtLWF0bGVhc3QtdmVyc2lvbj0yLjMwLjAgbW91bnRdLAorLSAgICAgICAgICAgICBbQUNfREVGSU5FKFtMSUJNT1VOVF9ORVdfRVJSX0FQSV0pXSwgW10pCisrICAgICAgICAgICAgIFtBQ19ERUZJTkUoW0xJQk1PVU5UX05FV19FUlJfQVBJXSwgWzFdLCBbbmV3IHZlcnNpb25zIG9mIGxpYm1vdW50IGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgd2UgY2FuIHVzZV0pXSwKKysgICAgICAgICAgICAgW10pCisgCisgICAgICAgIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtCTEtJRF0sIFtibGtpZCA+PSAyLjIzLjBdKQorICAgICAgICAjIG9sZGVyIHZlcnNpb25zIG9mIGxpYmJsa2lkIGRvbid0IHN1cHBvcnQgQkxLSURfU1VCTEtTX0JBRENTVU0gc28gbGV0J3MganVzdAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzE5NzU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNDBkYWU3ZWE2NDUwY2IzMGYwNjZkYTg0NDNlYWJmMDYzYjViMGFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAwMjowNTo0MCAtMDQwMAorU3ViamVjdDogW1BBVENIIDIvM10gcmVtb3ZlIHB5dGhvbjIgc3VwcG9ydAorCitPbmx5IHB5dGhvbjMgaXMgcmVxdWlyZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd3ItaW5zdGFsbGVyIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9NYWtlZmlsZS5hbSB8IDUgLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL01ha2VmaWxlLmFtIGIvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvTWFrZWZpbGUuYW0KK2luZGV4IGEyOTI3YWMuLjYzODU1MDIgMTAwNjQ0CistLS0gYS9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvTWFrZWZpbGUuYW0KK0BAIC0xLDggKzEsMyBAQAorLXB5bGliZGlyID0gJChzaGVsbCBweXRob24gLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCxwcmVmaXg9JyR7ZXhlY19wcmVmaXh9JykpIikKKy0KKy1vdmVycmlkZXNkaXIgPSAkKHB5bGliZGlyKS9naS9vdmVycmlkZXMKKy1kaXN0X292ZXJyaWRlc19EQVRBID0gQmxvY2tEZXYucHkKKy0KKyBpZiBXSVRIX1BZVEhPTjMKKyBweTNsaWJkaXIgPSAkKHNoZWxsIHB5dGhvbjMgLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCxwcmVmaXg9JyR7ZXhlY19wcmVmaXh9JykpIikKKyBweTNvdmVycmlkZXNkaXIgPSAkKHB5M2xpYmRpcikvZ2kvb3ZlcnJpZGVzCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAzLXJlbW92ZS1kbXJhaWQtd2hpbGUtY29tcGlsaW5nLXdpdGgtd2l0aC1kbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDljYjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2gKQEAgLTAsMCArMSw0NzAgQEAKK0Zyb20gYmRhN2M5MzdiYTU0NDE4MmE1Y2FlMmE5Y2YwYzE3M2UwYmEyNjhjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgSnVsIDIwMTcgMDk6NDc6MjMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJlbW92ZSBkbXJhaWQgd2hpbGUgY29tcGlsaW5nIHdpdGggLS13aXRoLWRtCisKK0ZpeCB0aGUgZm9sbG93aW5nIGZhaWx1cmU6CisKKy4uLgorUGVyaGFwcyB5b3Ugc2hvdWxkIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYGRtcmFpZC5wYycKK3RvIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKK05vIHBhY2thZ2UgJ2RtcmFpZCcgZm91bmQKKy4uLgorCisuLi4KKy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9kbS5jOjI0OjEwOiBmYXRhbCBlcnJvcjogZG1yYWlkL2RtcmFpZC5oOiBObworc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+CisgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn4KKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaSAgICAgICAgICB8ICA0MSAtLS0tLQorIHNyYy9wbHVnaW5zL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAyICstCisgc3JjL3BsdWdpbnMvZG0uYyAgICAgICAgICAgICAgICAgICAgfCAzMTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL3BsdWdpbnMvZG0uaCAgICAgICAgICAgICAgICAgICAgfCAgIDUgLQorIHNyYy9weXRob24vZ2kvb3ZlcnJpZGVzL0Jsb2NrRGV2LnB5IHwgICA2IC0KKyA1IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzNzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaSBiL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCitpbmRleCBhODg1YmJhLi5lYzg2YjgwIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkKKysrKyBiL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCitAQCAtNjgsNDQgKzY4LDMgQEAgZ2NoYXIqIGJkX2RtX25vZGVfZnJvbV9uYW1lIChjb25zdCBnY2hhciAqbWFwX25hbWUsIEdFcnJvciAqKmVycm9yKTsKKyAgKi8KKyBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYWN0aXZlX29ubHksIEdFcnJvciAqKmVycm9yKTsKKyAKKy0vKioKKy0gKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0czoKKy0gKiBAbmFtZTogKGFsbG93LW5vbmUpOiBuYW1lIG9mIHRoZSBtZW1iZXIKKy0gKiBAdXVpZDogKGFsbG93LW5vbmUpOiB1dWlkIG9mIHRoZSBtZW1iZXIKKy0gKiBAbWFqb3I6IG1ham9yIG51bWJlciBvZiB0aGUgZGV2aWNlIG9yIC0xIGlmIG5vdCBzcGVjaWZpZWQKKy0gKiBAbWlub3I6IG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIG9yIC0xIGlmIG5vdCBzcGVjaWZpZWQKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpIChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSk6IGxpc3Qgb2YgbmFtZXMgb2YgdGhlIFJBSUQgc2V0cyByZWxhdGVkIHRvCistICogdGhlIG1lbWJlciBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yCistICoKKy0gKiBPbmUgb2YgQG5hbWUsIEB1dWlkIG9yIEBtYWpvcjpAbWlub3IgaGFzIHRvIGJlIGdpdmVuLgorLSAqLworLWdjaGFyKiogYmRfZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMgKGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBnY2hhciAqdXVpZCwgZ2ludCBtYWpvciwgZ2ludCBtaW5vciwgR0Vycm9yICoqZXJyb3IpOworLQorLS8qKgorLSAqIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0OgorLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBhY3RpdmF0ZQorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBSQUlEIHNldCBAbmFtZSB3YXMgc3VjY2Vzc2Z1bGx5IGFjdGl2YXRlIG9yIG5vdAorLSAqLworLWdib29sZWFuIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOworLQorLS8qKgorLSAqIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQ6CistICogQG5hbWU6IG5hbWUgb2YgdGhlIERNIFJBSUQgc2V0IHRvIGRlYWN0aXZhdGUKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBkZWFjdGl2YXRlIG9yIG5vdAorLSAqLworLWdib29sZWFuIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CistCistLyoqCistICogYmRfZG1fZ2V0X3JhaWRfc2V0X3R5cGU6CistICogQG5hbWU6IG5hbWUgb2YgdGhlIERNIFJBSUQgc2V0IHRvIGdldCB0aGUgdHlwZSBvZgorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIEBuYW1lIFJBSUQgc2V0J3MgdHlwZQorLSAqLworLWdjaGFyKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZSAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSBiL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCitpbmRleCA2YzQwMzhmLi41OWRjNWUzIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCitAQCAtNzYsNyArNzYsNyBAQCBlbmRpZgorIAorIGlmIFdJVEhfRE0KKyBsaWJiZF9kbV9sYV9DRkxBR1MgPSAkKEdMSUJfQ0ZMQUdTKSAkKERFVk1BUFBFUl9DRkxBR1MpICQoVURFVl9DRkxBR1MpIC1XYWxsIC1XZXh0cmEgLVdlcnJvcgorLWxpYmJkX2RtX2xhX0xJQkFERCA9ICQoR0xJQl9MSUJTKSAkKERFVk1BUFBFUl9MSUJTKSAkKFVERVZfTElCUykgLWxkbXJhaWQgJHtidWlsZGRpcn0vLi4vdXRpbHMvbGliYmRfdXRpbHMubGEKKytsaWJiZF9kbV9sYV9MSUJBREQgPSAkKEdMSUJfTElCUykgJChERVZNQVBQRVJfTElCUykgJChVREVWX0xJQlMpICR7YnVpbGRkaXJ9Ly4uL3V0aWxzL2xpYmJkX3V0aWxzLmxhCisgbGliYmRfZG1fbGFfTERGTEFHUyA9IC1MJHtzcmNkaXJ9Ly4uL3V0aWxzLyAtdmVyc2lvbi1pbmZvIDI6MDowIC1XbCwtLW5vLXVuZGVmaW5lZAorICMgRGVhciBhdXRob3Igb2YgbGliZG1kcmFpZCwgVkVSU0lPTiByZWFsbHkgaXMgbm90IGEgZ29vZCBuYW1lIGZvciBhbiBlbnVtIG1lbWJlciEKKyBsaWJiZF9kbV9sYV9DUFBGTEFHUyA9IC1JJHtidWlsZGRpcn0vLi4vLi4vaW5jbHVkZS8gLVVWRVJTSU9OCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvZG0uYyBiL3NyYy9wbHVnaW5zL2RtLmMKK2luZGV4IDljZWU3NDIuLmZkN2M3YmEgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9kbS5jCisrKysgYi9zcmMvcGx1Z2lucy9kbS5jCitAQCAtMjEsMTYgKzIxLDEwIEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxibG9ja2Rldi91dGlscy5oPgorICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KKy0jaW5jbHVkZSA8ZG1yYWlkL2RtcmFpZC5oPgorICNpbmNsdWRlIDxsaWJ1ZGV2Lmg+CisgCisgI2luY2x1ZGUgImRtLmgiCisgCistLyogbWFjcm9zIHRha2VuIGZyb20gdGhlIHB5YmxvY2svZG1yYWlkLmggZmlsZSBwbHVzIG9uZSBtb3JlKi8KKy0jZGVmaW5lIGZvcl9lYWNoX3JhaWRzZXQoX2MsIF9uKSBsaXN0X2Zvcl9lYWNoX2VudHJ5KF9uLCBMQ19SUyhfYyksIGxpc3QpCistI2RlZmluZSBmb3JfZWFjaF9zdWJzZXQoX3JzLCBfbikgbGlzdF9mb3JfZWFjaF9lbnRyeShfbiwgJihfcnMpLT5zZXRzLCBsaXN0KQorLSNkZWZpbmUgZm9yX2VhY2hfZGV2aWNlKF9ycywgX2QpIGxpc3RfZm9yX2VhY2hfZW50cnkoX2QsICYoX3JzKS0+ZGV2cywgZGV2cykKKy0KKyAvKioKKyAgKiBTRUNUSU9OOiBkbQorICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogcGx1Z2luIGZvciBiYXNpYyBvcGVyYXRpb25zIHdpdGggZGV2aWNlIG1hcHBlcgorQEAgLTI4NiwzMTUgKzI4MCwzIEBAIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhCisgICAgIHJldHVybiByZXQ7CisgfQorIAorLS8qKgorLSAqIGluaXRfZG1yYWlkX3N0YWNrOiAoc2tpcCkKKy0gKgorLSAqIEluaXRpYWxpemVzIHRoZSBkbXJhaWQgc3RhY2sgYnkgY3JlYXRpbmcgdGhlIGxpYnJhcnkgY29udGV4dCwgZGlzY292ZXJpbmcKKy0gKiBkZXZpY2VzLCByYWlkIHNldHMsIGV0Yy4KKy0gKi8KKy1zdGF0aWMgc3RydWN0IGxpYl9jb250ZXh0KiBpbml0X2RtcmFpZF9zdGFjayAoR0Vycm9yICoqZXJyb3IpIHsKKy0gICAgZ2ludCByYyA9IDA7CistICAgIGdjaGFyICphcmd2W10gPSB7ImJsb2NrZGV2LmRtcmFpZCIsIE5VTEx9OworLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjOworLQorLSAgICAvKiB0aGUgY29kZSBmb3IgdGhpcyBmdW5jdGlvbiB3YXMgY2hlcnJ5LXBpY2tlZCBmcm9tIHRoZSBweWJsb2NrIGNvZGUgKi8KKy0gICAgLyogWFhYOiBkbyB0aGlzIGFsbCBqdXN0IG9uY2UsIHN0b3JlIGdsb2JhbCBsYyBhbmQgcHJvdmlkZSBhIHJlaW5pdAorLSAgICAgKiAgICAgIGZ1bmN0aW9uPyAqLworLQorLSAgICAvKiBpbml0aWFsaXplIGRtcmFpZCBsaWJyYXJ5IGNvbnRleHQgKi8KKy0gICAgbGMgPSBsaWJkbXJhaWRfaW5pdCAoMSwgKGdjaGFyICoqKWFyZ3YpOworLQorLSAgICByYyA9IGRpc2NvdmVyX2RldmljZXMgKGxjLCBOVUxMKTsKKy0gICAgaWYgKCFyYykgeworLSAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBCRF9ETV9FUlJPUiwgQkRfRE1fRVJST1JfUkFJRF9GQUlMLAorLSAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZGlzY292ZXIgZGV2aWNlcyIpOworLSAgICAgICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgICAgIHJldHVybiBOVUxMOworLSAgICB9CistICAgIGRpc2NvdmVyX3JhaWRfZGV2aWNlcyAobGMsIE5VTEwpOworLQorLSAgICBpZiAoIWNvdW50X2RldmljZXMgKGxjLCBSQUlEKSkgeworLSAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBCRF9ETV9FUlJPUiwgQkRfRE1fRVJST1JfUkFJRF9OT19ERVZTLAorLSAgICAgICAgICAgICAgICAgICAgICJObyBSQUlEcyBkaXNjb3ZlcmVkIik7CistICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOworLSAgICAgICAgcmV0dXJuIE5VTEw7CistICAgIH0KKy0KKy0gICAgYXJndlswXSA9IE5VTEw7CistICAgIGlmICghZ3JvdXBfc2V0IChsYywgYXJndikpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKKy0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdyb3VwX3NldCIpOworLSAgICAgICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgICAgIHJldHVybiBOVUxMOworLSAgICB9CistCistICAgIHJldHVybiBsYzsKKy19CistCistLyoqCistICogcmFpZF9kZXZfbWF0Y2hlc19zcGVjOiAoc2tpcCkKKy0gKgorLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQHN5c25hbWUgbWF0Y2hlcyB0aGUgc3BlYyBnaXZlbiBieSBAbmFtZSwKKy0gKiAgICAgICAgICBAdXVpZCwgQG1ham9yIGFuZCBAbWlub3IKKy0gKi8KKy1zdGF0aWMgZ2Jvb2xlYW4gcmFpZF9kZXZfbWF0Y2hlc19zcGVjIChzdHJ1Y3QgcmFpZF9kZXYgKnJhaWRfZGV2LCBjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IpIHsKKy0gICAgZ2NoYXIgY29uc3QgKmRldl9uYW1lID0gTlVMTDsKKy0gICAgZ2NoYXIgY29uc3QgKmRldl91dWlkOworLSAgICBnY2hhciBjb25zdCAqbWFqb3Jfc3RyOworLSAgICBnY2hhciBjb25zdCAqbWlub3Jfc3RyOworLSAgICBzdHJ1Y3QgdWRldiAqY29udGV4dDsKKy0gICAgc3RydWN0IHVkZXZfZGV2aWNlICpkZXZpY2U7CistICAgIGdib29sZWFuIHJldCA9IFRSVUU7CistCistICAgIC8qIGZpbmQgdGhlIHNlY29uZCAnLycgdG8gZ2V0IG5hbWUgKHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCistICAgIGRldl9uYW1lID0gc3RyY2hyIChyYWlkX2Rldi0+ZGktPnBhdGgsICcvJyk7CistICAgIGlmIChkZXZfbmFtZSAmJiBzdHJsZW4gKGRldl9uYW1lKSA+IDEpIHsKKy0gICAgICAgIGRldl9uYW1lKys7CistICAgICAgICBkZXZfbmFtZSA9IHN0cmNociAoZGV2X25hbWUsICcvJyk7CistICAgIH0KKy0gICAgaWYgKGRldl9uYW1lICYmIHN0cmxlbiAoZGV2X25hbWUpID4gMSkgeworLSAgICAgICAgZGV2X25hbWUrKzsKKy0gICAgfQorLSAgICBlbHNlCistICAgICAgICBkZXZfbmFtZSA9IE5VTEw7CistCistICAgIC8qIGlmIHdlIGRvbid0IGhhdmUgdGhlIG5hbWUsIHdlIGNhbm5vdCBjaGVjayBhbnkgbWF0Y2ggKi8KKy0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRldl9uYW1lLCBGQUxTRSk7CistCistICAgIGlmIChuYW1lICYmIHN0cmNtcCAoZGV2X25hbWUsIG5hbWUpICE9IDApIHsKKy0gICAgICAgIHJldHVybiBGQUxTRTsKKy0gICAgfQorLQorLSAgICBjb250ZXh0ID0gdWRldl9uZXcgKCk7CistICAgIGRldmljZSA9IHVkZXZfZGV2aWNlX25ld19mcm9tX3N1YnN5c3RlbV9zeXNuYW1lIChjb250ZXh0LCAiYmxvY2siLCBkZXZfbmFtZSk7CistICAgIGRldl91dWlkID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlIChkZXZpY2UsICJVVUlEIik7CistICAgIG1ham9yX3N0ciA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSAoZGV2aWNlLCAiTUFKT1IiKTsKKy0gICAgbWlub3Jfc3RyID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlIChkZXZpY2UsICJNSU5PUiIpOworLQorLSAgICBpZiAodXVpZCAmJiAoZ19zdHJjbXAwICh1dWlkLCAiIikgIT0gMCkgJiYgKGdfc3RyY21wMCAodXVpZCwgZGV2X3V1aWQpICE9IDApKQorLSAgICAgICAgcmV0ID0gRkFMU0U7CistCistICAgIGlmIChtYWpvciA+PSAwICYmIChhdG9pIChtYWpvcl9zdHIpICE9IG1ham9yKSkKKy0gICAgICAgIHJldCA9IEZBTFNFOworLQorLSAgICBpZiAobWlub3IgPj0gMCAmJiAoYXRvaSAobWlub3Jfc3RyKSAhPSBtaW5vcikpCistICAgICAgICByZXQgPSBGQUxTRTsKKy0KKy0gICAgdWRldl9kZXZpY2VfdW5yZWYgKGRldmljZSk7CistICAgIHVkZXZfdW5yZWYgKGNvbnRleHQpOworLQorLSAgICByZXR1cm4gcmV0OworLX0KKy0KKy0vKioKKy0gKiBmaW5kX3JhaWRfc2V0c19mb3JfZGV2OiAoc2tpcCkKKy0gKi8KKy1zdGF0aWMgdm9pZCBmaW5kX3JhaWRfc2V0c19mb3JfZGV2IChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIHN0cnVjdCBsaWJfY29udGV4dCAqbGMsIHN0cnVjdCByYWlkX3NldCAqcnMsIEdQdHJBcnJheSAqcmV0X3NldHMpIHsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICpzdWJzZXQ7CistICAgIHN0cnVjdCByYWlkX2RldiAqZGV2OworLQorLSAgICBpZiAoVF9HUk9VUChycykgfHwgIWxpc3RfZW1wdHkoJihycy0+c2V0cykpKSB7CistICAgICAgICBmb3JfZWFjaF9zdWJzZXQgKHJzLCBzdWJzZXQpCistICAgICAgICAgICAgZmluZF9yYWlkX3NldHNfZm9yX2RldiAobmFtZSwgdXVpZCwgbWFqb3IsIG1pbm9yLCBsYywgc3Vic2V0LCByZXRfc2V0cyk7CistICAgIH0gZWxzZSB7CistICAgICAgICBmb3JfZWFjaF9kZXZpY2UgKHJzLCBkZXYpIHsKKy0gICAgICAgICAgICBpZiAocmFpZF9kZXZfbWF0Y2hlc19zcGVjIChkZXYsIG5hbWUsIHV1aWQsIG1ham9yLCBtaW5vcikpCistICAgICAgICAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAocmV0X3NldHMsIGdfc3RyZHVwIChycy0+bmFtZSkpOworLSAgICAgICAgfQorLSAgICB9CistfQorLQorLS8qKgorLSAqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzOgorLSAqIEBuYW1lOiAoYWxsb3ctbm9uZSk6IG5hbWUgb2YgdGhlIG1lbWJlcgorLSAqIEB1dWlkOiAoYWxsb3ctbm9uZSk6IHV1aWQgb2YgdGhlIG1lbWJlcgorLSAqIEBtYWpvcjogbWFqb3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAorLSAqIEBtaW5vcjogbWlub3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCkgKGFycmF5IHplcm8tdGVybWluYXRlZD0xKTogbGlzdCBvZiBuYW1lcyBvZiB0aGUgUkFJRCBzZXRzIHJlbGF0ZWQgdG8KKy0gKiB0aGUgbWVtYmVyIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IKKy0gKgorLSAqIE9uZSBvZiBAbmFtZSwgQHV1aWQgb3IgQG1ham9yOkBtaW5vciBoYXMgdG8gYmUgZ2l2ZW4uCistICovCistZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcikgeworLSAgICBndWludDY0IGkgPSAwOworLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjID0gTlVMTDsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICpycyA9IE5VTEw7CistICAgIEdQdHJBcnJheSAqcmV0X3NldHMgPSBnX3B0cl9hcnJheV9uZXcgKCk7CistICAgIGdjaGFyICoqcmV0ID0gTlVMTDsKKy0KKy0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOworLSAgICBpZiAoIWxjKQorLSAgICAgICAgLyogZXJyb3IgaXMgYWxyZWFkeSBwb3B1bGF0ZWQgKi8KKy0gICAgICAgIHJldHVybiBOVUxMOworLQorLSAgICBmb3JfZWFjaF9yYWlkc2V0IChsYywgcnMpIHsKKy0gICAgICAgIGZpbmRfcmFpZF9zZXRzX2Zvcl9kZXYgKG5hbWUsIHV1aWQsIG1ham9yLCBtaW5vciwgbGMsIHJzLCByZXRfc2V0cyk7CistICAgIH0KKy0KKy0gICAgLyogbm93IGNyZWF0ZSB0aGUgcmV0dXJuIHZhbHVlIC0tIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdzICovCistICAgIHJldCA9IGdfbmV3MCAoZ2NoYXIqLCByZXRfc2V0cy0+bGVuICsgMSk7CistICAgIGZvciAoaT0wOyBpIDwgcmV0X3NldHMtPmxlbjsgaSsrKQorLSAgICAgICAgcmV0W2ldID0gKGdjaGFyKikgZ19wdHJfYXJyYXlfaW5kZXggKHJldF9zZXRzLCBpKTsKKy0gICAgcmV0W2ldID0gTlVMTDsKKy0KKy0gICAgZ19wdHJfYXJyYXlfZnJlZSAocmV0X3NldHMsIEZBTFNFKTsKKy0KKy0gICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgcmV0dXJuIHJldDsKKy19CistCistLyoqCistICogZmluZF9pbl9yYWlkX3NldHM6IChza2lwKQorLSAqCistICogUnVucyBAZXZhbF9mbiB3aXRoIEBkYXRhIG9uIGVhY2ggc2V0ICh0cmF2ZXJzaW5nIHJlY3Vyc2l2ZWx5KSBhbmQgcmV0dXJucyB0aGUKKy0gKiBmaXJzdCBSQUlEIHNldCB0aGF0IEBldmFsX2ZuIHJldHVybnMuIFRodXMgdGhlIEBldmFsX2ZuIHNob3VsZCByZXR1cm4gJU5VTEwKKy0gKiBvbiBhbGwgUkFJRCBzZXRzIHRoYXQgZG9uJ3QgZnVsZmlsbCB0aGUgc2VhcmNoIGNyaXRlcmlhLgorLSAqLworLXN0YXRpYyBzdHJ1Y3QgcmFpZF9zZXQqIGZpbmRfaW5fcmFpZF9zZXRzIChzdHJ1Y3QgcmFpZF9zZXQgKnJzLCBSU0V2YWxGdW5jIGV2YWxfZm4sIGdwb2ludGVyIGRhdGEpIHsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICpzdWJzZXQgPSBOVUxMOworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKnJldCA9IE5VTEw7CistCistICAgIHJldCA9IGV2YWxfZm4gKHJzLCBkYXRhKTsKKy0gICAgaWYgKHJldCkKKy0gICAgICAgIHJldHVybiByZXQ7CistCistICAgIGlmIChUX0dST1VQKHJzKSB8fCAhbGlzdF9lbXB0eSgmKHJzLT5zZXRzKSkpIHsKKy0gICAgICAgIGZvcl9lYWNoX3N1YnNldCAocnMsIHN1YnNldCkgeworLSAgICAgICAgICAgIHJldCA9IGZpbmRfaW5fcmFpZF9zZXRzIChzdWJzZXQsIGV2YWxfZm4sIGRhdGEpOworLSAgICAgICAgICAgIGlmIChyZXQpCistICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CistICAgICAgICB9CistICAgIH0KKy0KKy0gICAgcmV0dXJuIHJldDsKKy19CistCistc3RhdGljIHN0cnVjdCByYWlkX3NldCogcnNfbWF0Y2hlc19uYW1lIChzdHJ1Y3QgcmFpZF9zZXQgKnJzLCBncG9pbnRlciAqbmFtZV9kYXRhKSB7CistICAgIGdjaGFyICpuYW1lID0gKGdjaGFyKikgbmFtZV9kYXRhOworLQorLSAgICBpZiAoZ19zdHJjbXAwIChycy0+bmFtZSwgbmFtZSkgPT0gMCkKKy0gICAgICAgIHJldHVybiByczsKKy0gICAgZWxzZQorLSAgICAgICAgcmV0dXJuIE5VTEw7CistfQorLQorLXN0YXRpYyBnYm9vbGVhbiBjaGFuZ2Vfc2V0X2J5X25hbWUgKGNvbnN0IGdjaGFyICpuYW1lLCBlbnVtIGFjdGl2YXRlX3R5cGUgYWN0aW9uLCBHRXJyb3IgKiplcnJvcikgeworLSAgICBnaW50IHJjID0gMDsKKy0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzOworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKm1hdGNoX3JzID0gTlVMTDsKKy0KKy0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOworLSAgICBpZiAoIWxjKQorLSAgICAgICAgLyogZXJyb3IgaXMgYWxyZWFkeSBwb3B1bGF0ZWQgKi8KKy0gICAgICAgIHJldHVybiBGQUxTRTsKKy0KKy0gICAgZm9yX2VhY2hfcmFpZHNldCAobGMsIGl0ZXJfcnMpIHsKKy0gICAgICAgIG1hdGNoX3JzID0gZmluZF9pbl9yYWlkX3NldHMgKGl0ZXJfcnMsIChSU0V2YWxGdW5jKXJzX21hdGNoZXNfbmFtZSwgKGdjaGFyICopbmFtZSk7CistICAgICAgICBpZiAobWF0Y2hfcnMpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKy0KKy0gICAgaWYgKCFtYXRjaF9ycykgeworLSAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBCRF9ETV9FUlJPUiwgQkRfRE1fRVJST1JfUkFJRF9OT19FWElTVCwKKy0gICAgICAgICAgICAgICAgICAgICAiUkFJRCBzZXQgJXMgZG9lc24ndCBleGlzdCIsIG5hbWUpOworLSAgICAgICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgICAgIHJldHVybiBGQUxTRTsKKy0gICAgfQorLQorLSAgICByYyA9IGNoYW5nZV9zZXQgKGxjLCBhY3Rpb24sIG1hdGNoX3JzKTsKKy0gICAgaWYgKCFyYykgeworLSAgICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBCRF9ETV9FUlJPUiwgQkRfRE1fRVJST1JfUkFJRF9GQUlMLAorLSAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWN0aXZhdGUgdGhlIFJBSUQgc2V0ICclcyciLCBuYW1lKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gRkFMU0U7CistICAgIH0KKy0KKy0gICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgcmV0dXJuIFRSVUU7CistfQorLQorLS8qKgorLSAqIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0OgorLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBhY3RpdmF0ZQorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBSQUlEIHNldCBAbmFtZSB3YXMgc3VjY2Vzc2Z1bGx5IGFjdGl2YXRlIG9yIG5vdAorLSAqLworLWdib29sZWFuIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKKy0gICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7CistICAgIGdjaGFyICptc2cgPSBOVUxMOworLSAgICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKy0KKy0gICAgbXNnID0gZ19zdHJkdXBfcHJpbnRmICgiQWN0aXZhdGluZyBETSBSQUlEIHNldCAnJXMnIiwgbmFtZSk7CistICAgIHByb2dyZXNzX2lkID0gYmRfdXRpbHNfcmVwb3J0X3N0YXJ0ZWQgKG1zZyk7CistICAgIGdfZnJlZSAobXNnKTsKKy0gICAgcmV0ID0gY2hhbmdlX3NldF9ieV9uYW1lIChuYW1lLCBBX0FDVElWQVRFLCBlcnJvcik7CistICAgIGJkX3V0aWxzX3JlcG9ydF9maW5pc2hlZCAocHJvZ3Jlc3NfaWQsICJDb21wbGV0ZWQiKTsKKy0gICAgcmV0dXJuIHJldDsKKy19CistCistLyoqCistICogYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldDoKKy0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gZGVhY3RpdmF0ZQorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBSQUlEIHNldCBAbmFtZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlYWN0aXZhdGUgb3Igbm90CistICovCistZ2Jvb2xlYW4gYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKSB7CistICAgIGd1aW50NjQgcHJvZ3Jlc3NfaWQgPSAwOworLSAgICBnY2hhciAqbXNnID0gTlVMTDsKKy0gICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CistCistICAgIG1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoIkRlYWN0aXZhdGluZyBETSBSQUlEIHNldCAnJXMnIiwgbmFtZSk7CistICAgIHByb2dyZXNzX2lkID0gYmRfdXRpbHNfcmVwb3J0X3N0YXJ0ZWQgKG1zZyk7CistICAgIGdfZnJlZSAobXNnKTsKKy0gICAgcmV0ID0gY2hhbmdlX3NldF9ieV9uYW1lIChuYW1lLCBBX0RFQUNUSVZBVEUsIGVycm9yKTsKKy0gICAgYmRfdXRpbHNfcmVwb3J0X2ZpbmlzaGVkIChwcm9ncmVzc19pZCwgIkNvbXBsZXRlZCIpOworLSAgICByZXR1cm4gcmV0OworLX0KKy0KKy0vKioKKy0gKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZToKKy0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gZ2V0IHRoZSB0eXBlIG9mCistICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKKy0gKgorLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCistICovCistZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKKy0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzOworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKm1hdGNoX3JzID0gTlVMTDsKKy0gICAgY29uc3QgZ2NoYXIgKnR5cGUgPSBOVUxMOworLQorLSAgICBsYyA9IGluaXRfZG1yYWlkX3N0YWNrIChlcnJvcik7CistICAgIGlmICghbGMpCistICAgICAgICAvKiBlcnJvciBpcyBhbHJlYWR5IHBvcHVsYXRlZCAqLworLSAgICAgICAgcmV0dXJuIE5VTEw7CistCistICAgIGZvcl9lYWNoX3JhaWRzZXQgKGxjLCBpdGVyX3JzKSB7CistICAgICAgICBtYXRjaF9ycyA9IGZpbmRfaW5fcmFpZF9zZXRzIChpdGVyX3JzLCAoUlNFdmFsRnVuYylyc19tYXRjaGVzX25hbWUsIChnY2hhciAqKW5hbWUpOworLSAgICAgICAgaWYgKG1hdGNoX3JzKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9CistCistICAgIGlmICghbWF0Y2hfcnMpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfTk9fRVhJU1QsCistICAgICAgICAgICAgICAgICAgICAgIlJBSUQgc2V0ICVzIGRvZXNuJ3QgZXhpc3QiLCBuYW1lKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgfQorLQorLSAgICB0eXBlID0gZ2V0X3NldF90eXBlIChsYywgbWF0Y2hfcnMpOworLSAgICBpZiAoIXR5cGUpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKKy0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBSQUlEIHNldCdzIHR5cGUiKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgfQorLQorLSAgICBsaWJkbXJhaWRfZXhpdCAobGMpOworLSAgICByZXR1cm4gZ19zdHJkdXAgKHR5cGUpOworLX0KK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9kbS5oIGIvc3JjL3BsdWdpbnMvZG0uaAoraW5kZXggODU5ZmI4MC4uODBhY2Q0OSAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2RtLmgKKysrKyBiL3NyYy9wbHVnaW5zL2RtLmgKK0BAIC0xLDUgKzEsNCBAQAorICNpbmNsdWRlIDxnbGliLmg+CistI2luY2x1ZGUgPGRtcmFpZC9kbXJhaWQuaD4KKyAKKyAjaWZuZGVmIEJEX0RNCisgI2RlZmluZSBCRF9ETQorQEAgLTM1LDkgKzM0LDUgQEAgZ2Jvb2xlYW4gYmRfZG1fcmVtb3ZlIChjb25zdCBnY2hhciAqbWFwX25hbWUsIEdFcnJvciAqKmVycm9yKTsKKyBnY2hhciogYmRfZG1fbmFtZV9mcm9tX25vZGUgKGNvbnN0IGdjaGFyICpkbV9ub2RlLCBHRXJyb3IgKiplcnJvcik7CisgZ2NoYXIqIGJkX2RtX25vZGVfZnJvbV9uYW1lIChjb25zdCBnY2hhciAqbWFwX25hbWUsIEdFcnJvciAqKmVycm9yKTsKKyBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYWN0aXZlX29ubHksIEdFcnJvciAqKmVycm9yKTsKKy1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKKy1nYm9vbGVhbiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKKy1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOworLWdjaGFyKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZSAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKKyAKKyAjZW5kaWYgIC8qIEJEX0RNICovCitkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvQmxvY2tEZXYucHkgYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weQoraW5kZXggZmIzZmZiNC4uZWVkMGEzOCAxMDA2NDQKKy0tLSBhL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL0Jsb2NrRGV2LnB5CisrKysgYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weQorQEAgLTIzMywxMiArMjMzLDYgQEAgZGVmIGRtX2NyZWF0ZV9saW5lYXIobWFwX25hbWUsIGRldmljZSwgbGVuZ3RoLCB1dWlkPU5vbmUpOgorICAgICByZXR1cm4gX2RtX2NyZWF0ZV9saW5lYXIobWFwX25hbWUsIGRldmljZSwgbGVuZ3RoLCB1dWlkKQorIF9fYWxsX18uYXBwZW5kKCJkbV9jcmVhdGVfbGluZWFyIikKKyAKKy1fZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMgPSBCbG9ja0Rldi5kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cworLUBvdmVycmlkZShCbG9ja0Rldi5kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cykKKy1kZWYgZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMobmFtZT1Ob25lLCB1dWlkPU5vbmUsIG1ham9yPS0xLCBtaW5vcj0tMSk6CistICAgIHJldHVybiBfZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMobmFtZSwgdXVpZCwgbWFqb3IsIG1pbm9yKQorLV9fYWxsX18uYXBwZW5kKCJkbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyIpCistCisgCisgX2xvb3Bfc2V0dXAgPSBCbG9ja0Rldi5sb29wX3NldHVwCisgQG92ZXJyaWRlKEJsb2NrRGV2Lmxvb3Bfc2V0dXApCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMThiNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSA1OWZiZDU3YWNkMWRmMjViMTk3MmExMzFkYzZhNzdhNGZlMTQ3NzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBKdWwgMjAxNyAxMDo0NTowMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBmYWlsdXJlIGFnYWluc3QgbXVzbCBDIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wbHVnaW5zL2NyeXB0by5jIHwgMiArLQorIHNyYy9wbHVnaW5zL3BhcnQuYyAgIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2NyeXB0by5jIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKK2luZGV4IDhmYmNlNGYuLjY2ZTExZTUgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYworKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgI2luY2x1ZGUgPGxpYmNyeXB0c2V0dXAuaD4KKyAjaW5jbHVkZSA8bnNzLmg+CisgI2luY2x1ZGUgPHZvbHVtZV9rZXkvbGlidm9sdW1lX2tleS5oPgorLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9wYXJ0LmMgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKK2luZGV4IDEyZDJlZjcuLjNhZmUyOTcgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9wYXJ0LmMKKysrKyBiL3NyYy9wbHVnaW5zL3BhcnQuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGJsb2NrZGV2L3V0aWxzLmg+CisgI2luY2x1ZGUgPHBhcnRfZXJyLmg+CisgCitAQCAtMTIyNCw3ICsxMjI1LDcgQEAgc3RhdGljIGdib29sZWFuIHNldF9ncHRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkZXZpY2UsIGludCBwYXJ0X251bSwgZ3VpbnQ2NCBmbGFncywKKyAgICAgICAgIHJlYWxfZmxhZ3MgfD0gMHg0MDAwMDAwMDAwMDAwMDAwOyAvKiAxIDw8IDYyICovCisgICAgIGlmIChmbGFncyAmIEJEX1BBUlRfRkxBR19HUFRfTk9fQVVUT01PVU5UKQorICAgICAgICAgcmVhbF9mbGFncyB8PSAweDgwMDAwMDAwMDAwMDAwMDA7IC8qIDEgPDwgNjMgKi8KKy0gICAgbWFza19zdHIgPSBnX3N0cmR1cF9wcmludGYgKCIlLjE2Il9fUFJJNjRfUFJFRklYIngiLCByZWFsX2ZsYWdzKTsKKysgICAgbWFza19zdHIgPSBnX3N0cmR1cF9wcmludGYgKCIlLjE2Il9fUFJJNjQieCIsIHJlYWxfZmxhZ3MpOworIAorICAgICBhcmdzWzJdID0gZ19zdHJkdXBfcHJpbnRmICgiJWQ6PTolcyIsIHBhcnRfbnVtLCBtYXNrX3N0cik7CisgICAgIGdfZnJlZSAobWFza19zdHIpOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgxODkzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsMTExIEBACitGcm9tIDliNGE3YTRkMDY1M2I2MjdkNzQ3ZTAwZDZiM2FkYTI5OTBjYWExZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDkgQXVnIDIwMTcgMTM6NTc6NTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGEgY2xhbmcgY29tcGlsaW5nIGlzc3VlCisKK1tzbmlwXQorLi4vLi4vLi4vZ2l0L3NyYy9wbHVnaW5zL2ZzLmM6MjYxNzoyNjogZXJyb3I6IG1pc3NpbmcgZmllbGQgJ3N0YXJ0JworaW5pdGlhbGl6ZXIgWy1XZXJyb3IsLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVyc10KKyAgICBQZWRHZW9tZXRyeSBnZW9tID0gezB9OworICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9mcy5jOjI2MTg6MzA6IGVycm9yOiBtaXNzaW5nIGZpZWxkICdzdGFydCcKK2luaXRpYWxpemVyIFstV2Vycm9yLC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnNdCisgICAgUGVkR2VvbWV0cnkgbmV3X2dlb20gPSB7MH07Citbc25pcF0KKworRml4IHR5cG8gcy9lbnVtIGxpYnZrX3BhY2tldF9mb3JtYXQgZm9ybWF0L2VudW0gbGlidmtfc2VjcmV0IHNlY3JldF90eXBlLworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N0b3JhZ2VkLXByb2plY3QvbGliYmxvY2tkZXYvcHVsbC8yNjZdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wbHVnaW5zL2NyeXB0by5jIHwgNiArKystLS0KKyBzcmMvcGx1Z2lucy9mcy5jICAgICB8IDQgKystLQorIHNyYy9wbHVnaW5zL3BhcnQuYyAgIHwgNCArKy0tCisgc3JjL3V0aWxzL2V4ZWMuYyAgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9jcnlwdG8uYyBiL3NyYy9wbHVnaW5zL2NyeXB0by5jCitpbmRleCA4ZmJjZTRmLi43ZWU3Y2RjIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMKKysrKyBiL3NyYy9wbHVnaW5zL2NyeXB0by5jCitAQCAtODgxLDcgKzg4MSw3IEBAIGdib29sZWFuIGJkX2NyeXB0b190Y19vcGVuIChjb25zdCBnY2hhciAqZGV2aWNlLCBjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ3VpbnQ4CisgICAgIGdpbnQgcmV0ID0gMDsKKyAgICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7CisgICAgIGdjaGFyICptc2cgPSBOVUxMOworLSAgICBzdHJ1Y3QgY3J5cHRfcGFyYW1zX3RjcnlwdCBwYXJhbXMgPSB7MH07CisrICAgIHN0cnVjdCBjcnlwdF9wYXJhbXNfdGNyeXB0IHBhcmFtcyA9IHtOVUxMLDAsTlVMTCwwLE5VTEwsTlVMTCxOVUxMLDAsMH07CisgCisgICAgIG1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoIlN0YXJ0ZWQgb3BlbmluZyAnJXMnIFRydWVDcnlwdC9WZXJhQ3J5cHQgZGV2aWNlIiwgZGV2aWNlKTsKKyAgICAgcHJvZ3Jlc3NfaWQgPSBiZF91dGlsc19yZXBvcnRfc3RhcnRlZCAobXNnKTsKK0BAIC05OTksNyArOTk5LDcgQEAgc3RhdGljIGdjaGFyICpyZXBsYWNlX2NoYXIgKGdjaGFyICpzdHIsIGdjaGFyIG9yaWcsIGdjaGFyIG5ldykgeworICAgICByZXR1cm4gc3RyOworIH0KKyAKKy1zdGF0aWMgZ2Jvb2xlYW4gd3JpdGVfZXNjcm93X2RhdGFfZmlsZSAoc3RydWN0IGxpYnZrX3ZvbHVtZSAqdm9sdW1lLCBzdHJ1Y3QgbGlidmtfdWkgKnVpLCBlbnVtIGxpYnZrX3BhY2tldF9mb3JtYXQgZm9ybWF0LCBjb25zdCBnY2hhciAqb3V0X3BhdGgsCisrc3RhdGljIGdib29sZWFuIHdyaXRlX2VzY3Jvd19kYXRhX2ZpbGUgKHN0cnVjdCBsaWJ2a192b2x1bWUgKnZvbHVtZSwgc3RydWN0IGxpYnZrX3VpICp1aSwgZW51bSBsaWJ2a19zZWNyZXQgc2VjcmV0X3R5cGUsIGNvbnN0IGdjaGFyICpvdXRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VSVENlcnRpZmljYXRlICpjZXJ0LCBHRXJyb3IgKiplcnJvcikgeworICAgICBncG9pbnRlciBwYWNrZXRfZGF0YSA9IE5VTEw7CisgICAgIGdzaXplIHBhY2tldF9kYXRhX3NpemUgPSAwOworQEAgLTEwMDgsNyArMTAwOCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3cml0ZV9lc2Nyb3dfZGF0YV9maWxlIChzdHJ1Y3QgbGlidmtfdm9sdW1lICp2b2x1bWUsIHN0cnVjdCBsaWJ2CisgICAgIGdzaXplIGJ5dGVzX3dyaXR0ZW4gPSAwOworICAgICBHRXJyb3IgKnRtcF9lcnJvciA9IE5VTEw7CisgCistICAgIHBhY2tldF9kYXRhID0gbGlidmtfdm9sdW1lX2NyZWF0ZV9wYWNrZXRfYXN5bW1ldHJpY193aXRoX2Zvcm1hdCAodm9sdW1lLCAmcGFja2V0X2RhdGFfc2l6ZSwgZm9ybWF0LCBjZXJ0LAorKyAgICBwYWNrZXRfZGF0YSA9IGxpYnZrX3ZvbHVtZV9jcmVhdGVfcGFja2V0X2FzeW1tZXRyaWNfd2l0aF9mb3JtYXQgKHZvbHVtZSwgJnBhY2tldF9kYXRhX3NpemUsIHNlY3JldF90eXBlLCBjZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpLCBMSUJWS19QQUNLRVRfRk9STUFUX0FTWU1NRVRSSUNfV1JBUF9TRUNSRVRfT05MWSwgZXJyb3IpOworIAorICAgICBpZiAoIXBhY2tldF9kYXRhKSB7CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvZnMuYyBiL3NyYy9wbHVnaW5zL2ZzLmMKK2luZGV4IGM0YjZhYzguLjY0NzA5NmQgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9mcy5jCisrKysgYi9zcmMvcGx1Z2lucy9mcy5jCitAQCAtMjYxNCw4ICsyNjE0LDggQEAgQkRGU1ZmYXRJbmZvKiBiZF9mc192ZmF0X2dldF9pbmZvIChjb25zdCBnY2hhciAqZGV2aWNlLCBHRXJyb3IgKiplcnJvcikgeworICAqLworIGdib29sZWFuIGJkX2ZzX3ZmYXRfcmVzaXplIChjb25zdCBnY2hhciAqZGV2aWNlLCBndWludDY0IG5ld19zaXplLCBHRXJyb3IgKiplcnJvcikgeworICAgICBQZWREZXZpY2UgKnBlZF9kZXYgPSBOVUxMOworLSAgICBQZWRHZW9tZXRyeSBnZW9tID0gezB9OworLSAgICBQZWRHZW9tZXRyeSBuZXdfZ2VvbSA9IHswfTsKKysgICAgUGVkR2VvbWV0cnkgZ2VvbSA9IHtOVUxMLCAwLCAwLCAwfTsKKysgICAgUGVkR2VvbWV0cnkgbmV3X2dlb20gPSB7TlVMTCwgMCwgMCwgMH07CisgICAgIFBlZEZpbGVTeXN0ZW0gKmZzID0gTlVMTDsKKyAgICAgUGVkU2VjdG9yIHN0YXJ0ID0gMDsKKyAgICAgUGVkU2VjdG9yIGxlbmd0aCA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcGFydC5jIGIvc3JjL3BsdWdpbnMvcGFydC5jCitpbmRleCAxMmQyZWY3Li5kMjc3Njg4IDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvcGFydC5jCisrKysgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKK0BAIC04NDksNyArODQ5LDcgQEAgc3RhdGljIFBlZFBhcnRpdGlvbiogYWRkX3BhcnRfdG9fZGlzayAoUGVkRGV2aWNlICpkZXYsIFBlZERpc2sgKmRpc2ssIEJEUGFydFR5cGUKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCistICAgIHBhcnQgPSBwZWRfcGFydGl0aW9uX25ldyAoZGlzaywgdHlwZSwgTlVMTCwgZ2VvbS0+c3RhcnQsIGdlb20tPmVuZCk7CisrICAgIHBhcnQgPSBwZWRfcGFydGl0aW9uX25ldyAoZGlzaywgKFBlZFBhcnRpdGlvblR5cGUpdHlwZSwgTlVMTCwgZ2VvbS0+c3RhcnQsIGdlb20tPmVuZCk7CisgICAgIGlmICghcGFydCkgeworICAgICAgICAgc2V0X3BhcnRlZF9lcnJvciAoZXJyb3IsIEJEX1BBUlRfRVJST1JfRkFJTCk7CisgICAgICAgICBnX3ByZWZpeF9lcnJvciAoZXJyb3IsICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBwYXJ0aXRpb24gb24gZGV2aWNlICclcyciLCBkZXYtPnBhdGgpOworQEAgLTE0MjcsNyArMTQyNyw3IEBAIGdib29sZWFuIGJkX3BhcnRfc2V0X3BhcnRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkaXNrLCBjb25zdCBnY2hhciAqcGFydCwgZ3VpbnQ2NCBmCisgICAgIFBlZFBhcnRpdGlvbiAqcGVkX3BhcnQgPSBOVUxMOworICAgICBjb25zdCBnY2hhciAqcGFydF9udW1fc3RyID0gTlVMTDsKKyAgICAgZ2ludCBwYXJ0X251bSA9IDA7CistICAgIGd1aW50NjQgaSA9IDA7CisrICAgIGludCBpID0gMDsKKyAgICAgZ2ludCBzdGF0dXMgPSAwOworICAgICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKyAgICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjL3V0aWxzL2V4ZWMuYyBiL3NyYy91dGlscy9leGVjLmMKK2luZGV4IDdhYzQ0ZmQuLjBhMzA5NGMgMTAwNjQ0CistLS0gYS9zcmMvdXRpbHMvZXhlYy5jCisrKysgYi9zcmMvdXRpbHMvZXhlYy5jCitAQCAtMzU0LDcgKzM1NCw3IEBAIGdib29sZWFuIGJkX3V0aWxzX2V4ZWNfYW5kX3JlcG9ydF9wcm9ncmVzcyAoY29uc3QgZ2NoYXIgKiphcmd2LCBjb25zdCBCREV4dHJhQXJnCisgICAgIEdJT1N0YXR1cyBpb19zdGF0dXMgPSBHX0lPX1NUQVRVU19OT1JNQUw7CisgICAgIGd1aW50IGkgPSAwOworICAgICBndWludDggY29tcGxldGlvbiA9IDA7CistICAgIEdQb2xsRkQgZmRzWzJdID0ge3swfSwgezB9fTsKKysgICAgR1BvbGxGRCBmZHNbMl0gPSB7ezAsMCwwfSwgezAsMCwwfX07CisgICAgIGdib29sZWFuIG91dF9kb25lID0gRkFMU0U7CisgICAgIGdib29sZWFuIGVycl9kb25lID0gRkFMU0U7CisgICAgIEdTdHJpbmcgKnN0ZG91dF9kYXRhID0gZ19zdHJpbmdfbmV3IChOVUxMKTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTkyMzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYgpAQCAtMCwwICsxLDUxIEBACitERVNDUklQVElPTiA9ICJsaWJibG9ja2RldiBpcyBhIEMgbGlicmFyeSBzdXBwb3J0aW5nIEdPYmplY3QgaW50cm9zcGVjdGlvbiBmb3IgbWFuaXB1bGF0aW9uIG9mIFwKK2Jsb2NrIGRldmljZXMuIEl0IGhhcyBhIHBsdWdpbi1iYXNlZCBhcmNoaXRlY3R1cmUgd2hlcmUgZWFjaCB0ZWNobm9sb2d5IChsaWtlIFwKK0xWTSwgQnRyZnMsIE1EIFJBSUQsIFN3YXAsLi4uKSBpcyBpbXBsZW1lbnRlZCBpbiBhIHNlcGFyYXRlIHBsdWdpbiwgcG9zc2libHkgXAord2l0aCBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgKGUuZy4gdXNpbmcgTFZNIENMSSBvciB0aGUgbmV3IExWTSBEQnVzIEFQSSkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JoaW5zdGFsbGVyLmdpdGh1Yi5pby9saWJibG9ja2Rldi8iCitMSUNFTlNFID0gIkxHUEx2MisiCitTRUNUSU9OID0gImRldmVsL2xpYiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzA3Y2I0OTlkMjU5NDUyZjMyNGJiOTBjMzA2N2Q4NWMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICJjMWRkYTQ1MDAxNTQyZWRkN2Q3ZjFmZmM2NDUxYzVhNzQ2MjNmODA1IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJsb2NrZGV2O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1kbXJhaWQtd2hpbGUtY29tcGlsaW5nLXdpdGgtd2l0aC1kbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworREVQRU5EUyArPSAiIFwKKyAgICBjcnlwdHNldHVwIFwKKyAgICBuc3MgXAorICAgIHZvbHVtZS1rZXkgXAorICAgIGxpYmJ5dGVzaXplIFwKKyAgICBidHJmcy10b29scyBcCisiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBsdm0yIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyBsdm0gZG0ga21vZCBwYXJ0ZWQgZnMiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbbHZtXSA9ICItLXdpdGgtbHZtLCAtLXdpdGhvdXQtbHZtLCBtdWx0aXBhdGgtdG9vbHMiCitQQUNLQUdFQ09ORklHW2RtXSA9ICItLXdpdGgtZG0sIC0td2l0aG91dC1kbSIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLS13aXRoLWtiZCwgLS13aXRob3V0LWtiZCwga21vZCIKK1BBQ0tBR0VDT05GSUdbcGFydGVkXSA9ICItLXdpdGgtcGFydCwgLS13aXRob3V0LXBhcnQsIHBhcnRlZCIKK1BBQ0tBR0VDT05GSUdbZnNdID0gIi0td2l0aC1mcywgLS13aXRob3V0LWZzLCB1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0td2l0aC1ndGstZG9jLCAtLXdpdGhvdXQtZ3RrLWRvYywgZ3RrLWRvYy1uYXRpdmUiCisKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjL3V0aWxzLy5saWJzIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJleGVjaW5mby9saWJleGVjaW5mb18xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJleGVjaW5mby9saWJleGVjaW5mb18xLjEuYmIKaW5kZXggMTNhMzhhYi4uZDRiYWQzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZXhlY2luZm8vbGliZXhlY2luZm9fMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmV4ZWNpbmZvL2xpYmV4ZWNpbmZvXzEuMS5iYgpAQCAtMTUsOCArMTUsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjhlOWU4MWM1NTRjMWM1ZDczNWJjODc3NDQ4ZTkyYjkxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImM5YTIxOTEzZTdmZGFjOGVmNmIzMzI1MGIxNjdhYTFmYzBhN2I4YTE3NTE0NWUyNjkxM2E0YzE5ZDhhNTliMWYiCiAKLUNGTEFHUyArPSAiLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIiCi1DRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFIgorQ0ZMQUdTICs9ICItZm5vLW9taXQtZnJhbWUtcG9pbnRlciAgLURfR05VX1NPVVJDRSIKIAogZG9faW5zdGFsbCgpIHsKICAgICBpbnN0YWxsIC1EIC1tIDA3NDQgJHtTfS9leGVjaW5mby5oICR7RH0ke2luY2x1ZGVkaXJ9L2V4ZWNpbmZvLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlXzEuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZV8xLjA5LmJiCmluZGV4IGU1NjU1YjUuLjBjNDFhZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlXzEuMDkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4wOS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRmlsZSBsb2NraW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMucWEuZGViaWFuLm9yZy9saWJsL2xpYmxvY2tmaWxlLmh0bWwiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWFjMjg0YTYwZDQ4ZWFhNGJjODExY2RkYzM3N2ZhMzQxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2ZpbGVzL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvZmlsZXMvYWRkLW1pc3NpbmctcHl0aG9uLWluY2x1ZGUtZGlyLWZvci1jcm9zcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTI0OTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2ZpbGVzL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSAxZWEwOWUwOWFiMjM4N2MzMjZiYjcxNzA4MzUzNjFlY2U2ZTI1NDc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAzIEF1ZyAyMDE1IDEzOjQzOjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5LmluOiBhZGQgbWlzc2luZyBweXRob24gaW5jbHVkZSBkaXIgZm9yIGNyb3NzCisgY29tcGlsaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcHl0aG9uL01ha2VmaWxlLmFtIHwgMiArLQorIHB5dGhvbi9zZXR1cC5weS5pbiB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vTWFrZWZpbGUuYW0gYi9weXRob24vTWFrZWZpbGUuYW0KK2luZGV4IGFiYzVjZDMuLmUzNWJhNzEgMTAwNjQ0CistLS0gYS9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTE0LDQgKzE0LDQgQEAgYWxsLWxvY2FsOgorIAlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgYnVpbGQgLS1idWlsZC1saWI9LgorIAorIGluc3RhbGwtZXhlYy1sb2NhbDoKKy0JQ0ZMQUdTPSIke0NGTEFHU30gLWZuby1zdHJpY3QtYWxpYXNpbmciIEBQWVRIT05CSU5BUllAIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fQorKwlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgaW5zdGFsbCAtLXByZWZpeD0ke0RFU1RESVJ9JHtwcmVmaXh9IC0taW5zdGFsbC1saWI9JHtERVNURElSfS8ke1BZVEhPTlNJVEVESVJ9CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3NldHVwLnB5LmluIGIvcHl0aG9uL3NldHVwLnB5LmluCitpbmRleCA2NDU3NTk1Li5kM2RiMGU1IDEwMDc1NQorLS0tIGEvcHl0aG9uL3NldHVwLnB5LmluCisrKysgYi9weXRob24vc2V0dXAucHkuaW4KK0BAIC02LDYgKzYsNyBAQAorIAorIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KKyBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCBpbXBvcnQgYnVpbGRfZXh0IGFzIF9idWlsZF9leHQKKytpbXBvcnQgb3MKKyAKKyBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6CisgICAgIGRlZiBnZW5jb25zdGFudHMoc2VsZiwgaGVhZGVyZmlsZSwgb3V0cHV0ZmlsZSk6CitAQCAtMjMsNyArMjQsNyBAQCBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6CisgCisgcHdxbW9kdWxlID0gRXh0ZW5zaW9uKCdwd3F1YWxpdHknLAorICAgICAgICAgICAgIHNvdXJjZXMgPSBbJ3B3cXVhbGl0eS5jJ10sCistICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gWycuLi9zcmMnXSwKKysgICAgICAgICAgICBpbmNsdWRlX2RpcnMgPSBbJy4uL3NyYycsIG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydTVEFHSU5HX0lOQ0RJUiddLCBvcy5lbnZpcm9uWydQWVRIT05fRElSJ10pXSwKKyAgICAgICAgICAgICBsaWJyYXJ5X2RpcnMgPSBbJy4uL3NyYy8ubGlicyddLAorICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHdxdWFsaXR5J10pCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOTYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4wLmJiCkBAIC0wLDAgKzEsNDUgQEAKK0RFU0NSSVBUSU9OID0gIkxpYnJhcnkgZm9yIHBhc3N3b3JkIHF1YWxpdHkgY2hlY2tpbmcgYW5kIGdlbmVyYXRpbmcgcmFuZG9tIHBhc3N3b3JkcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5IgorU0VDVElPTiA9ICJkZXZlbC9saWIiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJkMmYxMzg2ZGY4MTNhNDU5YTBjMzRmZGU2NzZmYzIiCisKK1NSQ05BTUUgPSAibGlicHdxdWFsaXR5IgorU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7U1JDTkFNRX0tJHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjhkZWZjYzcyODBhOTBlOTQwMGQ2Njg5YzkzYTI3OWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRlNmZmMDQ2Y2YyMTcyZDI2NWEyY2I2ZjhkYTQzOWQ4OTRmM2U0ZTgxNTdiMDU2YzUxNTUxNTIzMmZhZGU2YiIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK0RFUEVORFMgPSAiY3JhY2tsaWIgdmlydHVhbC9nZXR0ZXh0IHB5dGhvbjMiCitSREVQRU5EU19weXRob24zLWxpYnB3cXVhbGl0eSA9ICIke1BOfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0CisKK0IgPSAiJHtTfSIKKworZXhwb3J0IFBZVEhPTl9ESVIKK2V4cG9ydCBCVUlMRF9TWVMKK2V4cG9ydCBIT1NUX1NZUworZXhwb3J0IFNUQUdJTkdfTElCRElSCitleHBvcnQgU1RBR0lOR19JTkNESVIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uLXJldj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uLWJpbmFyeT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uc2l0ZWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwgLS1kaXNhYmxlLXBhbSwgbGlicGFtIgorCitQQUNLQUdFUyArPSAicHl0aG9uMy1saWJwd3F1YWxpdHkgcHl0aG9uMy1saWJwd3F1YWxpdHktZGJnIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5sYSIKK0ZJTEVTX3B5dGhvbjMtJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTX3B5dGhvbjMtJHtQTn0tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNmJiN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkFuIElQQyBsaWJyYXJ5IGZvciBoaWdoIHBlcmZvcm1hbmNlIHNlcnZlcnMiCi1ERVNDUklQVElPTiA9ICJsaWJxYiBpcyBhIGxpYnJhcnkgd2l0aCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHByb3ZpZGluZyBoaWdoIHBlcmZvcm1hbmNlIGNsaWVudCBzZXJ2ZXIgcmV1c2FibGUgZmVhdHVyZXMuIFwKLUl0IHByb3ZpZGVzIGhpZ2ggcGVyZm9ybWFuY2UgbG9nZ2luZywgdHJhY2luZywgaXBjLCBhbmQgcG9sbC4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jbHVzdGVybGFicy9saWJxYi93aWtpIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyMWJmNDFmMjgwY2Y4MDUwODZkZDVhNzIwYjM3Nzg1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUFYgLj0gIitnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjBhMzI5NjgzYTc2YmM2YWViMzZmMjBmMmJmNmI0M2JhMDQ0MGM0ZGMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vQ2x1c3RlckxhYnMvJHtCUE59LmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1ydW50aW1lLWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAotICAgICAgICAgICIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICggY2QgJHtTfQotICAgICR7U30vYXV0b2dlbi5zaCApCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NGY2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkFuIElQQyBsaWJyYXJ5IGZvciBoaWdoIHBlcmZvcm1hbmNlIHNlcnZlcnMiCitERVNDUklQVElPTiA9ICJsaWJxYiBpcyBhIGxpYnJhcnkgd2l0aCB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHByb3ZpZGluZyBoaWdoIHBlcmZvcm1hbmNlIGNsaWVudCBzZXJ2ZXIgcmV1c2FibGUgZmVhdHVyZXMuIFwKK0l0IHByb3ZpZGVzIGhpZ2ggcGVyZm9ybWFuY2UgbG9nZ2luZywgdHJhY2luZywgaXBjLCBhbmQgcG9sbC4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jbHVzdGVybGFicy9saWJxYi93aWtpIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyMWJmNDFmMjgwY2Y4MDUwODZkZDVhNzIwYjM3Nzg1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjYwOGRlNmQ1OWEzZGUwZWVmMGZiY2JkOGYyODRhY2JjMDE4ZGFhOWEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vQ2x1c3RlckxhYnMvJHtCUE59LmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1ydW50aW1lLWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAorICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICggY2QgJHtTfQorICAgICR7U30vYXV0b2dlbi5zaCApCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIzMjhhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAxLU1ha2VmaWxlLmFtLXJlbW92ZS1kb2MtYW5kLWFwaWRvYy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGRiMzJiYTYwY2E3NWQyODhkM2FjMDhiNTQyNTZjYjc0ZDllMTU4MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI2IEFwciAyMDE3IDAzOjQ3OjU4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBNYWtlZmlsZS5hbTogcmVtb3ZlIGRvYyBhbmQgYXBpZG9jCisKK1RoZXJlIHdhcyBhIGZhaWx1cmUgYXQgZG9faW5zdGFsbCB0aW1lLCBzbyByZW1vdmUgZG9jIHRvIHdvcmthcm91bmQuCisKK1Vwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGM2YWI2NDAuLmZiMDlmYzEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xLDUgKzEsNSBAQAorIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00CistU1VCRElSUyA9IHBvIHNyYyB0ZXN0cyBkb2MgYXBpZG9jCisrU1VCRElSUyA9IHBvIHNyYyB0ZXN0cworIAorIEVYVFJBX0RJU1QgPSBcCisgICAgIGxpYnJlcG9ydC5wYy5pbiBcCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAyLWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLXhtbHRvLWFuZC1hc2NpaWRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAyLWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLXhtbHRvLWFuZC1hc2NpaWRvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDY1MTBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDItY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YteG1sdG8tYW5kLWFzY2lpZG9jLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gZDhjNDllNmExNWFiMjhmNGNhOTRlMDNiMmE1M2VkOGRmNjMzNDZjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjYgQXByIDIwMTcgMDM6NDk6NDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZS5hYzogcmVtb3ZlIHByb2cgdGVzdCBvZiB4bWx0byBhbmQgYXNjaWlkb2MKKworVGhlIHByb2cgb2YgeG1sdG8gYW5kIGFzY2lpZG9jIHdlcmUgdXNlZCB0byBnZW5lcmF0ZSBkb2N1bWVudHMsCithbmQgc2luY2UgdGhlIGRvYyBtb2R1bGUgaGFzIGFscmVhZHkgYmVlbiBkaXNhYmxlZCwgc28gd2Ugc2hvdWxkCityZW1vdmUgdGhlIHByb2cgdGVzdC4KKworVXBzdHJlYW0tU3RhdHVzOiAgSW5hcHByb3ByaWF0ZSB3b3JrYXJvdW5kCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2NlZmU1MC4uZWQ0OGM4OCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjgsMjQgKzY4LDYgQEAgaWYgdGVzdCAteiAiJFBZVEhPTjMiOyB0aGVuCisgICAgIGV4aXQgMQorIGZpCisgCistQUNfUEFUSF9QUk9HKFtBU0NJSURPQ10sIFthc2NpaWRvY10sIFtub10pCistW2lmIHRlc3QgIiRBU0NJSURPQyIgPSAibm8iXQorLVt0aGVuXQorLSAgICBbZWNobyAiVGhlIGFzY2lpZG9jIHByb2dyYW0gd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIHBhdGguIFBsZWFzZSBlbnN1cmUiXQorLSAgICBbZWNobyAidGhhdCBpdCBpcyBpbnN0YWxsZWQgYW5kIGl0cyBkaXJlY3RvcnkgaXMgaW5jbHVkZWQgaW4gdGhlIHNlYXJjaCBwYXRoLiJdCistICAgIFtlY2hvICJUaGVuIHJ1biBjb25maWd1cmUgYWdhaW4gYmVmb3JlIGF0dGVtcHRpbmcgdG8gYnVpbGQgbGlicmVwb3J0LiJdCistICAgIFtleGl0IDFdCistW2ZpXQorLQorLUFDX1BBVEhfUFJPRyhbWE1MVE9dLCBbeG1sdG9dLCBbbm9dKQorLVtpZiB0ZXN0ICIkWE1MVE8iID0gIm5vIl0KKy1bdGhlbl0KKy0gICAgW2VjaG8gIlRoZSB4bWx0byBwcm9ncmFtIHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBwYXRoLiBQbGVhc2UgZW5zdXJlIl0KKy0gICAgW2VjaG8gInRoYXQgaXQgaXMgaW5zdGFsbGVkIGFuZCBpdHMgZGlyZWN0b3J5IGlzIGluY2x1ZGVkIGluIHRoZSBzZWFyY2ggcGF0aC4iXQorLSAgICBbZWNobyAiVGhlbiBydW4gY29uZmlndXJlIGFnYWluIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGJ1aWxkIGxpYnJlcG9ydC4iXQorLSAgICBbZXhpdCAxXQorLVtmaV0KKy0KKyBBQ19BUkdfV0lUSChidWd6aWxsYSwKKyBBU19IRUxQX1NUUklORyhbLS13aXRoLWJ1Z3ppbGxhXSxbdXNlIEJ1Z3ppbGxhIHBsdWdpbiAoZGVmYXVsdCBpcyBZRVMpXSksCisgTElCUkVQT1JUX1BBUlNFX1dJVEgoW2J1Z3ppbGxhXSkpCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAzLXdpdGhvdXQtYnVpbGQtcGx1Z2lucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAzLXdpdGhvdXQtYnVpbGQtcGx1Z2lucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWQ3Nzc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDMtd2l0aG91dC1idWlsZC1wbHVnaW5zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMGU5NmQ5ZjIzYjJiMTY2ZTc0NDRlN2M4ZTBhNmQ0YjgzYzJlY2NkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjYgQXByIDIwMTcgMDM6NTE6MDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHdpdGhvdXQgYnVpbGQgcGx1Z2lucworCitVcHN0cmVhbS1TdGF0dXM6ICBJbmFwcHJvcHJpYXRlIHdvcmthcm91bmQKKworUmViYXNlIHRvIDIuOS4xCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IGMxNTkyOGMuLmJhYzAyYjEgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTgsNCArOCw0IEBAIGlmIEJVSUxEX05FV1QKKyBzdWJfZGlycyArPSByZXBvcnQtbmV3dAorIGVuZGlmCisgCistU1VCRElSUyA9IGluY2x1ZGUgbGliIHBsdWdpbnMgcmVwb3J0LXB5dGhvbiBjbGkgY2xpZW50LXB5dGhvbiB3b3JrZmxvd3MgJChzdWJfZGlycykKKytTVUJESVJTID0gaW5jbHVkZSBsaWIgcmVwb3J0LXB5dGhvbiBjbGkgY2xpZW50LXB5dGhvbiB3b3JrZmxvd3MgJChzdWJfZGlycykKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDQtY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YtYXVncGFyc2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNC1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi1hdWdwYXJzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODM5ZTVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDQtY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YtYXVncGFyc2UucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBjZjNiNjQ2ZmFjYzE5MDc4ZWQyOWY4MjhlMzZkZDJlNTUyMjgzNTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAwMjoxNTowMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHJlbW92ZSBwcm9nIHRlc3Qgb2YgYXVncGFyc2UKKworVGhlIGJ1aWxkIHRpbWUgZG9lcyBub3QgcmVxdWlyZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiAgSW5hcHByb3ByaWF0ZSB3b3JrYXJvdW5kCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDggLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzA2YWYyZC4uYjkwZjQ5ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjg4LDE0ICsyODgsNiBAQCBBQ19BUkdfV0lUSChhdWdlYXNsZW5zbGliZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXJlY3RvcnkgZm9yIGxpYnJlcG9yIGxlbnMgKGRlZmF1bHQ6IC91c3Ivc2hhcmUvYXVnZWFzL2xlbnNlcyldKV0sCisgICAgICAgICAgICAgW10sIFt3aXRoX2F1Z2Vhc2xlbnNsaWJkaXI9Ii91c3Ivc2hhcmUvYXVnZWFzL2xlbnNlcyJdKQorIEFDX1NVQlNUKFtBVUdFQVNfTEVOU19MSUJfRElSXSwgWyR3aXRoX2F1Z2Vhc2xlbnNsaWJkaXJdKQorLUFDX1BBVEhfUFJPRyhBVUdQQVJTRSwgYXVncGFyc2UsIG5vKQorLVtpZiB0ZXN0ICIkQVVHUEFSU0UiID0gIm5vIl0KKy1bdGhlbl0KKy0gICAgW2VjaG8gIlRoZSBhdWdwYXJzZSBwcm9ncmFtIHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBwYXRoLiBQbGVhc2UgZW5zdXJlIl0KKy0gICAgW2VjaG8gInRoYXQgaXQgaXMgaW5zdGFsbGVkIGFuZCBpdHMgZGlyZWN0b3J5IGlzIGluY2x1ZGVkIGluIHRoZSBzZWFyY2ggcGF0aC4iXQorLSAgICBbZWNobyAiVGhlbiBydW4gY29uZmlndXJlIGFnYWluIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGJ1aWxkIGxpYnJlcG9ydC4iXQorLSAgICBbZXhpdCAxXQorLVtmaV0KKyAKKyBBQ19BUkdfV0lUSChbZGVmYXVsdGR1bXBkaXJtb2RlXSwKKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWRlZmF1bHRkdW1wZGlybW9kZT1PQ1RBTC1NT0RFXSwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDUtcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA1LXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3MGYwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA1LXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxNDIgQEAKK0Zyb20gMDY3MTBhYjg5ZmM3ZDdhODJhMzc4Mjg5YWEzZmNkOTJkMzMwNzRmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMDM6MzE6MDAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHB5dGhvbjIgc3VwcG9ydAorCitXZSBkbyBub3QgcmVxdWlyZSBweXRob24yLCBzbyByZW1vdmUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNSAtLS0tLS0tLS0tLS0tLS0KKyBzcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0gfCAgOSAtLS0tLS0tLS0KKyBzcmMvcmVwb3J0LXB5dGhvbi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAxOSAtLS0tLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA0MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZWI1MDM4Mi4uODI2ZDBmZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTY2LDE1ICsxNjYsNiBAQCBkbworIGRvbmUKKyBmaSBkbmwgZW5kIE5PX01BTlRJU0JUCisgCistQUNfUEFUSF9QUk9HKFtQWVRIT05fQ09ORklHXSwgW3B5dGhvbi1jb25maWddLCBbbm9dKQorLVtpZiB0ZXN0ICIkUFlUSE9OX0NPTkZJRyIgPSAibm8iXQorLVt0aGVuXQorLSAgICBbZWNobyAiVGhlIHB5dGhvbi1jb25maWcgcHJvZ3JhbSB3YXMgbm90IGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aC4gUGxlYXNlIGVuc3VyZSJdCistICAgIFtlY2hvICJ0aGF0IGl0IGlzIGluc3RhbGxlZCBhbmQgaXRzIGRpcmVjdG9yeSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoIHBhdGguIl0KKy0gICAgW2VjaG8gIlRoZW4gcnVuIGNvbmZpZ3VyZSBhZ2FpbiBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZCBsaWJyZXBvcnQuIl0KKy0gICAgW2V4aXQgMV0KKy1bZmldCistCisgQUNfUEFUSF9QUk9HKFtQWVRIT04zX0NPTkZJR10sIFtweXRob24zLWNvbmZpZ10sIFtub10pCisgW2lmIHRlc3QgIiRQWVRIT04zX0NPTkZJRyIgPSAibm8iXQorIFt0aGVuXQorQEAgLTE4NCw5ICsxNzUsNiBAQCBBQ19QQVRIX1BST0coW1BZVEhPTjNfQ09ORklHXSwgW3B5dGhvbjMtY29uZmlnXSwgW25vXSkKKyAgICAgW2V4aXQgMV0KKyBbZmldCisgCistUFlUSE9OX0NGTEFHUz1gcHl0aG9uLWNvbmZpZyAtLWNmbGFncyAyPiAvZGV2L251bGxgCistUFlUSE9OX0xJQlM9YHB5dGhvbi1jb25maWcgLS1saWJzIDI+IC9kZXYvbnVsbGAKKy0KKyBQWVRIT04zX0NGTEFHUz1gcHl0aG9uMy1jb25maWcgLS1jZmxhZ3MgMj4gL2Rldi9udWxsYAorIFBZVEhPTjNfTElCUz1gcHl0aG9uMy1jb25maWcgLS1saWJzIDI+IC9kZXYvbnVsbGAKKyAKK0BAIC0xOTgsOSArMTg2LDYgQEAgUFlUSE9OM19ESVI9YCRQWVRIT04zIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgXAorIFBZVEhPTjNfRVhFQ0RJUj1gJFBZVEhPTjMgLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBcCisgICAgIHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJFBZVEhPTjNfRVhFQ19QUkVGSVgnKSkiYAorIAorLUFDX1NVQlNUKFBZVEhPTl9DRkxBR1MpCistQUNfU1VCU1QoUFlUSE9OX0xJQlMpCistCisgQUNfU1VCU1QoUFlUSE9OM19DRkxBR1MpCisgQUNfU1VCU1QoUFlUSE9OM19MSUJTKQorIEFDX1NVQlNUKHB5dGhvbjNkaXIsICRQWVRIT04zX0RJUikKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0gYi9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDQ2YWM0MmYuLmZiNTIxNmEgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9jbGllbnQtcHl0aG9uL3JlcG9ydGNsaWVudC9NYWtlZmlsZS5hbQorQEAgLTQsMTMgKzQsMTAgQEAgUFlGSUxFUyA9IFwKKyAgICAgZG5mZGVidWdpbmZvLnB5IFwKKyAgICAgeXVtZGVidWdpbmZvLnB5CisgCistcHkyY2xpZW50ZGlyID0gJChweWV4ZWNkaXIpL3JlcG9ydGNsaWVudAorIHB5M2NsaWVudGRpciA9ICQocHkzZXhlY2RpcikvcmVwb3J0Y2xpZW50CisgCistcHkyY2xpZW50X1BZVEhPTiA9ICQoUFlGSUxFUykKKyBweTNjbGllbnRfUFlUSE9OID0gJChQWUZJTEVTKQorIAorLXB5MmNsaWVudF9MVExJQlJBUklFUyA9IF9yZXBvcnRjbGllbnQubGEKKyBweTNjbGllbnRfTFRMSUJSQVJJRVMgPSBfcmVwb3J0Y2xpZW50My5sYQorIAorIFBZRVhURklMRVMgPSBcCitAQCAtMzMsMTIgKzMwLDYgQEAgUFlFWFRMREZMQUdTID0gXAorICAgICAtYXZvaWQtdmVyc2lvbiBcCisgICAgIC1XbCwteixyZWxybyAtV2wsLXosbm93CisgCistX3JlcG9ydGNsaWVudF9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQorLV9yZXBvcnRjbGllbnRfbGFfQ1BQRkxBR1MgPSAkKFBZRVhUQ1BQRkxBR1MpICQoUFlUSE9OX0NGTEFHUykKKy1fcmVwb3J0Y2xpZW50X2xhX0xERkxBR1MgPSAkKFBZRVhUTERGTEFHUykgXAorLSAgICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggaW5pdF9yZXBvcnRjbGllbnQKKy1fcmVwb3J0Y2xpZW50X2xhX0xJQkFERCA9IC4uLy4uL2xpYi9saWJyZXBvcnQubGEKKy0KKyBfcmVwb3J0Y2xpZW50M19sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQorIF9yZXBvcnRjbGllbnQzX2xhX0NQUEZMQUdTID0gJChQWUVYVENQUEZMQUdTKSAkKFBZVEhPTjNfQ0ZMQUdTKQorIF9yZXBvcnRjbGllbnQzX2xhX0xERkxBR1MgPSAkKFBZRVhUTERGTEFHUykgXAorZGlmZiAtLWdpdCBhL3NyYy9yZXBvcnQtcHl0aG9uL01ha2VmaWxlLmFtIGIvc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0KK2luZGV4IDc5M2NlYmQuLjI0MWRjYjcgMTAwNjQ0CistLS0gYS9zcmMvcmVwb3J0LXB5dGhvbi9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0KK0BAIC0xLDEyICsxLDkgQEAKKyBQWUZJTEVTID0gX19pbml0X18ucHkgYWNjb3VudG1hbmFnZXIucHkKKyAKKy1weXJlcG9ydGV4ZWNkaXIgPSAkKHB5ZXhlY2RpcikvcmVwb3J0CisgcHkzcmVwb3J0ZXhlY2RpciA9ICQocHkzZXhlY2RpcikvcmVwb3J0CisgCistcHlyZXBvcnRleGVjX1BZVEhPTiA9ICQoUFlGSUxFUykKKyBweTNyZXBvcnRleGVjX1BZVEhPTiA9ICQoUFlGSUxFUykKKyAKKy1weXJlcG9ydGV4ZWNfTFRMSUJSQVJJRVMgPSBfcHlyZXBvcnQubGEKKyBweTNyZXBvcnRleGVjX0xUTElCUkFSSUVTID0gX3B5M3JlcG9ydC5sYQorIAorIFBZRVhURklMRVMgPSBcCitAQCAtMzQsMjAgKzMxLDYgQEAgUFlFWFRMREZMQUdTID0gXAorICAgICAtYXZvaWQtdmVyc2lvbiBcCisgICAgIC1XbCwteixyZWxybyAtV2wsLXosbm93CisgCistX3B5cmVwb3J0X2xhX1NPVVJDRVMgPSAkKFBZRVhURklMRVMpCistCistX3B5cmVwb3J0X2xhX0NQUEZMQUdTID0gXAorLSAgICAkKFBZRVhUQ1BQRkxBR1MpIFwKKy0gICAgJChQWVRIT05fQ0ZMQUdTKQorLQorLV9weXJlcG9ydF9sYV9MREZMQUdTID0gXAorLSAgICQoUFlFWFRMREZMQUdTKSBcCistICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IGluaXRfcHlyZXBvcnQKKy0KKy1fcHlyZXBvcnRfbGFfTElCQUREID0gXAorLSAgICAuLi9saWIvbGlicmVwb3J0LmxhIFwKKy0gICAgJChQWVRIT04yX0xJQlMpCistCisgX3B5M3JlcG9ydF9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQorIAorIF9weTNyZXBvcnRfbGFfQ1BQRkxBR1MgPSBcCitAQCAtNjQsNyArNDcsNiBAQCBfcHkzcmVwb3J0X2xhX0xJQkFERCA9IFwKKyAKKyAjIHJlcG9ydCBjb21wYXQ6CisgCistcHlyZXBvcnRpb2V4ZWNkaXIgPSAkKHB5ZXhlY2RpcikvcmVwb3J0L2lvCisgcHkzcmVwb3J0aW9leGVjZGlyID0gJChweTNleGVjZGlyKS9yZXBvcnQvaW8KKyAKKyBQWUlPRklMRVMgPSBcCitAQCAtNzMsNSArNTUsNCBAQCBQWUlPRklMRVMgPSBcCisgICAgIGlvL05ld3RJTy5weSBcCisgICAgIGlvL1RleHRJTy5weQorIAorLXB5cmVwb3J0aW9leGVjX1BZVEhPTiA9ICQoUFlJT0ZJTEVTKQorIHB5M3JlcG9ydGlvZXhlY19QWVRIT04gPSAkKFBZSU9GSUxFUykKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI1NDM3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIKQEAgLTAsMCArMSw0MiBAQAorREVTQ1JJUFRJT04gPSAiTGlicmFyaWVzIHByb3ZpZGluZyBBUEkgZm9yIHJlcG9ydGluZyBkaWZmZXJlbnQgcHJvYmxlbXMgaW4gYXBwbGljYXRpb25zIFwKK3RvIGRpZmZlcmVudCBidWcgdGFyZ2V0cyBsaWtlIEJ1Z3ppbGxhLCBmdHAsIHRyYWMsIGV0Yy4uLiIKK1NVTU1BUlkgPSAiR2VuZXJpYyBsaWJyYXJ5IGZvciByZXBvcnRpbmcgdmFyaW91cyBwcm9ibGVtcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vYWJydC5yZWFkdGhlZG9jcy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitERVBFTkRTID0gInhtbHJwYy1jIHhtbHJwYy1jLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgXAorICAgICAgICBqc29uLWMgbGlidGFyIGxpYm5ld3QgbGlicHJveHkgcnBtIFwKKyAgICAgICAgYXVnZWFzIHNhdHlyIHN5c3RlbWQgZ3RrKzMgXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWJydC9saWJyZXBvcnQuZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tcmVtb3ZlLWRvYy1hbmQtYXBpZG9jLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLXhtbHRvLWFuZC1hc2NpaWRvYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy13aXRob3V0LWJ1aWxkLXBsdWdpbnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YtYXVncGFyc2UucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDUtcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBcCisiCitTUkNSRVYgPSAiY2ZmZjQ5ZjA2ZDlkMTdlMjY5ZDQ2M2VlNzFiM2Q5NGM4YmZiMGM1OCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBweXRob24zbmF0aXZlIHBrZ2NvbmZpZworCitSREVQRU5EU19weXRob24zLWxpYnJlcG9ydCArPSAiJHtQTn0iCisKK2RvX3BhdGNoW3ByZWZ1bmNzXSArPSAiZG9fZ2VuX3ZlcnNpb24iCitkb19nZW5fdmVyc2lvbigpIHsKKyAgICBjZCAke1N9CisgICAgLi9nZW4tdmVyc2lvbgorfQorCitQQUNLQUdFUyArPSAicHl0aG9uMy1saWJyZXBvcnQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyovLmRlYnVnIgorRklMRVNfcHl0aG9uMy1saWJyZXBvcnQgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTRjMmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQW5hbHl6ZXMgbG9nIGZpbGVzIGFuZCBzZW5kcyBub3RpY2VhYmxlIGV2ZW50cyBhcyBlbWFpbCIKLURFU0NSSVBUSU9OID0gIlwKLUxvZ2NoZWNrIGlzIGEgc2ltcGxlIHV0aWxpdHkgd2hpY2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBcCi10byB2aWV3IHRoZSBsb2ctZmlsZXMgd2hpY2ggYXJlIHByb2R1Y2VkIHVwb24gaG9zdHMgdW5kZXIgdGhlaXIgY29udHJvbC4gXAotSXQgZG9lcyB0aGlzIGJ5IG1haWxpbmcgc3VtbWFyaWVzIG9mIHRoZSBsb2ctZmlsZXMgdG8gdGhlbSwgYWZ0ZXIgZmlyc3QgXAotZmlsdGVyaW5nIG91dCAibm9ybWFsIiBlbnRyaWVzLiBcCi1Ob3JtYWwgZW50cmllcyBhcmUgZW50cmllcyB3aGljaCBtYXRjaCBvbmUgb2YgdGhlIG1hbnkgaW5jbHVkZWQgcmVndWxhciBcCi1leHByZXNzaW9uIGZpbGVzIGNvbnRhaW4gaW4gdGhlIGRhdGFiYXNlLiIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGViaWFuLm9yZy9naXQvbG9nY2hlY2svbG9nY2hlY2suZ2l0IgotU1JDUkVWID0gIjI0MjllNjdhZDg3NWZlZThhMDIzNGM2NGQ1MDQyNzdiMDM4Yzg5Y2QiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgIyBGaXggUUEgSXNzdWUKLSAgICBzZWQgLWkgJy9pbnN0YWxsIC1kICQoREVTVERJUilcL3ZhclwvbG9ja1wvbG9nY2hlY2svcy9eLyMvJyBNYWtlZmlsZQotCi0gICAgIyAibWFrZSBpbnN0YWxsIiBkbyBub3QgaW5zdGFsbCB0aGUgbWFucGFnZXMuIEluc3RhbGwgdGhlbSBtYW51YWxseS4KLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjEKLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ2NoZWNrLXRlc3QuMSAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2d0YWlsLjggJHtEfSR7bWFuZGlyfS9tYW44LwotICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9ndGFpbDIuOCAke0R9JHttYW5kaXJ9L21hbjgvCi0gICAgc2VkIC1pICJzL3N5c2xvZy9tZXNzYWdlcy8iIGV0Yy9sb2djaGVjay5sb2dmaWxlcwotICAgIHNlZCAtaSAicy9hdXRoXC5sb2cvc2VjdXJlLyIgZXRjL2xvZ2NoZWNrLmxvZ2ZpbGVzCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kCi0gICAgaW5zdGFsbCAtbSA2NDQgZGViaWFuL2xvZ2NoZWNrLmNyb24uZCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQvbG9nY2hlY2sKLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9L3Zhci9saWIvbG9nY2hlY2sKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gInBlcmwiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xvZ3RhaWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMS1vdXRvZi1JbnRyb2R1Y2UtZXhwYW5kYWRkci1mbGFnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMS1vdXRvZi1JbnRyb2R1Y2UtZXhwYW5kYWRkci1mbGFnLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMS1vdXRvZi1JbnRyb2R1Y2UtZXhwYW5kYWRkci1mbGFnLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTMtZmlvLmMtVW5jb25kaXRpb25hbGx5LXJlcXVpcmUtd29yZGV4cC1zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTMtZmlvLmMtVW5jb25kaXRpb25hbGx5LXJlcXVpcmUtd29yZGV4cC1zdXBwb3J0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTE5MWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCkBAIC0wLDAgKzEsNTMgQEAKK1NVTU1BUlkgPSAibWFpbHggaXMgdGhlIHRyYWRpdGlvbmFsIGNvbW1hbmQtbGluZS1tb2RlIG1haWwgdXNlciBhZ2VudCIKKworREVTQ1JJUFRJT04gPSAiTWFpbHggaXMgZGVyaXZlZCBmcm9tIEJlcmtlbGV5IE1haWwgYW5kIGlzIGludGVuZGVkIHByb3ZpZGUgdGhlIFwKK2Z1bmN0aW9uYWxpdHkgb2YgdGhlIFBPU0lYIG1haWx4IGNvbW1hbmQgd2l0aCBhZGRpdGlvbmFsIHN1cHBvcnQgXAorZm9yIE1JTUUsIElNQVAsIFBPUDMsIFNNVFAsIGFuZCBTL01JTUUuIgorCitIT01FUEFHRSA9ICJodHRwOi8vaGVpcmxvb20uc291cmNlZm9yZ2UubmV0L21haWx4Lmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEICYgTVBMLTEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjAyYTBhNjI5MTBjZjk0ZjdhZjhhMzQzNmEyYTJkZCIKKworREVQRU5EUyA9ICJvcGVuc3NsMTAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41Lm9yaWcudGFyLmd6O25hbWU9YXJjaGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjI5YTYwMzNlZjE0MTI4MjRkMDJlYjlkOTIxM2NiMWYyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDE1YmE0MjA5MTM1ODY3ZjM3YTAyNDVkMjIyMzVhMzkyYjhiYmVkOTU2OTEzMjg2Yjg4N2MyZTJhOWE0MjFhZCIKKworIyBmb3IgdGhpcyBwYWNrYWdlIHdlJ3JlIG1vc3RseSBpbnRlcmVzdGVkIGluIHRyYWNraW5nIGRlYmlhbiBwYXRjaGVzLAorIyBhbmQgbm90IGluIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIHdoZXJlIGFsbCBkZXZlbG9wbWVudCBoYXMgZWZmZWN0aXZlbHkgc3RvcHBlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9oL2hlaXJsb29tLW1haWx4LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPigoXGQrXC4qKSspLSgoXGQrXC4qKSspKVwuKGRpZmZ8ZGViaWFuXC50YXIpXC4oZ3p8eHopIgorCitTID0gIiR7V09SS0RJUn0vaGVpcmxvb20tbWFpbHgtMTIuNSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0NGTEFHU19hcHBlbmQgPSAiIC1EX0JTRF9TT1VSQ0UgLURERUJJQU4gLUkke1N9L0VYVCIKKworIyAiU1RSSVA9dHJ1ZSIgbWVhbnMgdGhhdCAndHJ1ZScgY29tbWFuZCB3aWxsIGJlIHVzZWQgdG8gJ3N0cmlwJyBmaWxlcyB3aGljaCB3aWxsIGFjaGlldmUgdGhlIGVmZmVjdCBvZiBub3Qgc3RyaXBwaW5nIHRoZW0KKyMgbWFpbHgncyBNYWtlZmlsZSBkb2Vzbid0IGFsbG93IGEgbW9yZSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGF2b2lkIHN0cmlwcGluZworRVhUUkFfT0VNQUtFID0gIlNFTkRNQUlMPSR7c2JpbmRpcn0vc2VuZG1haWwgSVB2Nj0tREhBVkVfSVB2Nl9GVU5DUyBQUkVGSVg9L3VzciBVQ0JJTlNUQUxMPS91c3IvYmluL2luc3RhbGwgU1RSSVA9dHJ1ZSIKKworIyBUaGUgbWFrZWNvbmZpZyBjYW4ndCBydW4gcGFyYWxsZWxseSwgb3RoZXJ3aXNlIHRoZSBjaGVja2luZyByZXN1bHRzCisjIG1pZ2h0IGJlIGluY29ycmVjdCBhbmQgbGVhZCB0byBlcnJvcnM6CisjIGZpby5jOjU2OjE3OiBmYXRhbCBlcnJvcjogc3NsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyMgI2luY2x1ZGUgPHNzbC5oPgorUEFSQUxMRUxfTUFLRSA9ICIiCisKKyMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODgvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfMTcuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfMTcuMC4wLmJiCmluZGV4IGI2NzQ0MzkuLjQ5YjdmMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzE3LjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc18xNy4wLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlNwaWRlck1vbmtleSBpcyBNb3ppbGxhJ3MgSmF2YVNjcmlwdCBlbmdpbmUgd3JpdHRlbiBpbiBDL0MrKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvanMvIgogTElDRU5TRSA9ICJNUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vLi4vTElDRU5TRTttZDU9ODE1Y2E1OTljOWRmMjQ3YTBjN2Y2MTliYWIxMjNkYWQiCiAKQEAgLTUxLDYgKzUyLDkgQEAKIAogIyBtb3pqcyByZXF1aXJlcyBhdXRvcmVjb25mIDIuMTMKIGRvX2NvbmZpZ3VyZSgpIHsKKyAgICBleHBvcnQgSE9TVF9DRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIKKyAgICBleHBvcnQgSE9TVF9DWFhGTEFHUz0iJHtCVUlMRF9DUFBGTEFHU30iCisgICAgZXhwb3J0IEhPU1RfTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIKICAgICAoIGNkICR7U30KICAgICAgIGdudS1jb25maWdpemUgLS1mb3JjZQogICAgICAgbXYgY29uZmlnLmd1ZXNzIGNvbmZpZy5zdWIgYnVpbGQvYXV0b2NvbmYgKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2MDQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYV9naXQuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJMaW51eCBMaWJyYXJ5IGZvciBsb3cgc3BlZWQgSS9PIENvbW11bmljYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC9tcmFhIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY2NDkzZDU0ZTY1YmZjMTJjNzk4M2ZmMmU4ODRmMzdmIgorCitTUkNSRVYgPSAiOGRkYmNkZTg0ZTJkMTQ2YmMwZjllMzg1MDRkNmM4OWMxNDI5MTQ4MCIKK1BWID0gIjEuNy4wLWdpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgQ01ha2VMaXN0cy50eHQgY2hlY2tzIHRoZSBhcmNoaXRlY3R1cmUsIG9ubHkgeDg2IGFuZCBBUk0gc3VwcG9ydGVkIGZvciBub3cKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCisKK2luaGVyaXQgY21ha2UgZGlzdHV0aWxzMy1iYXNlCisKK0RFUEVORFMgKz0gImpzb24tYyIKKworRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiIC1ESU5TVEFMTFRPT0xTOkJPT0w9T04gLURGSVJNQVRBPU9OIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiIKKworIyBQcmVwZW5kIG1yYWEtdXRpbHMgdG8gbWFrZSBzdXJlIGJpbmRpciBlbmRzIHVwIGluIHRoZXJlCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCisKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9tcmFhL2V4YW1wbGVzLyIKKworRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyIKKworIyBvdmVycmlkZSB0aGlzIGluIGxvY2FsLmNvbmYgdG8gZ2V0IG5lZWRlZCBiaW5kaW5ncy4KKyMgQklORElOR1NfcG4tbXJhYT0icHl0aG9uIgorIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCitCSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAorICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi1EQlVJTERTV0lHUFlUSE9OPU9OLCAtREJVSUxEU1dJR1BZVEhPTj1PRkYsIHN3aWctbmF0aXZlICR7UFlUSE9OX1BOfSwiCitQQUNLQUdFQ09ORklHW25vZGVqc10gPSAiLURCVUlMRFNXSUdOT0RFPU9OLCAtREJVSUxEU1dJR05PREU9T0ZGLCBzd2lnLW5hdGl2ZSBub2RlanMtbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbZnQ0MjIyXSA9ICItRFVTQlBMQVQ9T04gLURGVERJNDIyMj1PTiwgLURVU0JQTEFUPU9GRiAtREZUREk0MjIyPU9GRiwsIGxpYmZ0NDIyMiIKKworRklMRVNfJHtQWVRIT05fUE59LSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyIKK1JERVBFTkRTXyR7UFlUSE9OX1BOfS0ke1BOfSArPSAiJHtQWVRIT05fUE59IgorCitGSUxFU19ub2RlLSR7UE59ID0gIiR7cHJlZml4fS9saWIvbm9kZV9tb2R1bGVzLyIKK1JERVBFTkRTX25vZGUtJHtQTn0gKz0gIm5vZGVqcyIKKworIyMjIEluY2x1ZGUgZGVzaXJlZCBsYW5ndWFnZSBiaW5kaW5ncyAjIyMKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnQklORElOR1MnLCAnbm9kZWpzJywgJ25vZGUtJHtQTn0nLCAnJywgZCl9IgorUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCSU5ESU5HUycsICdweXRob24nLCAnJHtQWVRIT05fUE59LSR7UE59JywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdC8wMDAxLW5pY3N0YXQuYy1Eby1ub3QtZGVmaW5lLXVpbnQ2NF90LWFuZC11aW50MzJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdC8wMDAxLW5pY3N0YXQuYy1Eby1ub3QtZGVmaW5lLXVpbnQ2NF90LWFuZC11aW50MzJfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjA4Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbmljc3RhdC9uaWNzdGF0LzAwMDEtbmljc3RhdC5jLURvLW5vdC1kZWZpbmUtdWludDY0X3QtYW5kLXVpbnQzMl90LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNTI1OTBmYmY3MzVjZWYzZmVjODVhMDQyNDU4YWE4OWEwMmM1MmI1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDExOjMzOjEyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pY3N0YXQuYzogRG8gbm90IGRlZmluZSB1aW50NjRfdCBhbmQgdWludDMyX3QKKworVXNlIHRoZSBkZWZpbmVzIGZyb20gcGxhdGZvcm0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgbmljc3RhdC5jIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uaWNzdGF0LmMgYi9uaWNzdGF0LmMKK2luZGV4IDgzYWQ1NTcuLjJhNmUwYzEgMTAwNjQ0CistLS0gYS9uaWNzdGF0LmMKKysrKyBiL25pY3N0YXQuYworQEAgLTMyLDYgKzMyLDcgQEAKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CitAQCAtODgsOCArODksNiBAQAorICNkZWZpbmUJUFJPQ19ORVRfQlVGU0laCQkoMTI4ICogMTAyNCkKKyAjZGVmaW5lCVBST0NfVVBUSU1FCQkiL3Byb2MvdXB0aW1lIgorIC8qIE5lZWRzIHRvIGJlIGZpeGVkIGlmIG5vdCBidWlsdCB1bmRlciBJTFAzMiAqLworLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nCXVpbnQ2NF90OworLXR5cGVkZWYgdW5zaWduZWQgaW50CQl1aW50MzJfdDsKKyBleHRlcm4gY2hhciAqb3B0YXJnOworIGV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKKyAjZW5kaWYgLyogT1NfTElOVVggKi8KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdF8xLjk1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbmljc3RhdC9uaWNzdGF0XzEuOTUuYmIKaW5kZXggNTEyNmEzMS4uMzg3NWYwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbmljc3RhdC9uaWNzdGF0XzEuOTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbmljc3RhdC9uaWNzdGF0XzEuOTUuYmIKQEAgLTUsNyArNSw5IEBACiBMSUNFTlNFID0gIkFydGlzdGljLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1iNGE5NGRhMmExZjkxOGIyMTdlZjUxNTY2MzRmYzllMCIKIAotU1JDX1VSSSA9ICJodHRwOi8vc29mdGxheWVyLXNuZy5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC8ke0JQTn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwOi8vc29mdGxheWVyLXNuZy5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmljc3RhdC5jLURvLW5vdC1kZWZpbmUtdWludDY0X3QtYW5kLXVpbnQzMl90LnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjlhMGI4N2JiYzY3MGMxZTczOGU1YjQwYzdhZmQxODRkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0Y2MzM2Y4ODM4ZjQ1MjNmMjdjM2Q3NTg0ZWVkYmU1OWY0YzU4N2YwODIxNjEyZjVhYzIyMDFhZGMxOGIzNjciCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1uZXR3b3JraW5nLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1uZXR3b3JraW5nLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIzODIwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMzNmJiNWEwMzEwNzc0NjFlYzZiMmU1NDM4NzM4YmYxMDBmMGRkMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBNb24sIDMgQXVnIDIwMTUgMDI6Mzc6NDYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYjY0IGNhbiBub3QgYmUgc2hpcGVkIGluIDY0Yml0IHRhcmdldAotCi1TaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDcgLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMWJhM2NkMy4uMjQxMTc0NSAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTM1LDEzICszNSw2IEBAIGlmIChERUJVRykKLSAgICAgYWRkX2RlZmluaXRpb25zKCItRERFQlVHX0VOQUJMRUQiKQotIGVuZGlmIChERUJVRykKLSAKLS0jIFNldCBMSUJfU1VGRklYIHRvIDY0IG9uIDY0Yml0IGFyY2hpdGVjdHVyZXMKLS1pZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCi0tICAgIHNldChMSUJfU1VGRklYICIiKQotLWVsc2UoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLSAgICBTRVQoTElCX1NVRkZJWCA2NCkKLS1lbmRpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCi0tCi0gIyBGaW5kIE9wZW5MTUlNYWNyb3Mgd2hlbiBpbnN0YWxsZWQgaW4gb3RoZXIgcHJlZml4IHRoYW4gL3VzciAoZS5nLiAvdXNyL2xvY2FsKQotIHNldChDTUFLRV9NT0RVTEVfUEFUSCAke0NNQUtFX01PRFVMRV9QQVRIfSAke0NNQUtFX0lOU1RBTExfUFJFRklYfSkKLSBpbmNsdWRlKE9wZW5MTUlNYWNyb3MgUkVTVUxUX1ZBUklBQkxFIExNSU1BQ1JPUykKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZ18wLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1uZXR3b3JraW5nXzAuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODFiZDNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1uZXR3b3JraW5nXzAuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJDSU0gcHJvdmlkZXJzIGZvciBuZXR3b3JrIG1hbmFnZW1lbnQiCi1ERVNDUklQVElPTiA9ICJcCi1vcGVubG1pLW5ldHdvcmtpbmcgaXMgc2V0IG9mIENNUEkgcHJvdmlkZXJzIGZvciBuZXR3b3JrIG1hbmFnZW1lbnQgdXNpbmcgXAotQ29tbW9uIEluZm9ybWF0aW9uIE1vZGVsIChDSU0pLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmxtaS5vcmcvIgotTElDRU5TRSA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03YzEzYjMzNzZjZWEwY2U2OGQyZDJkYTBhMWIzYTcyYyIKLVNFQ1RJT04gPSAiU3lzdGVtL01hbmFnZW1lbnQiCi1ERVBFTkRTID0gIm9wZW5sbWktcHJvdmlkZXJzIGtvbmtyZXRjbXBpIGtvbmtyZXRjbXBpLW5hdGl2ZSBzYmxpbS1jbXBpLWRldmVsIGNpbS1zY2hlbWEtZXhwZXIgbmV0d29ya21hbmFnZXIgZGJ1cyBsaWJjaGVjayBnbGliLTIuMCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlZC8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImYyMGRlOGM3NmZiNmE4MDAwMWIxNGMxZWIwMzU5NTNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3OGVhYTVjNjVmZTkyNGI1ZDdhZWI2MzU1MDlkZDQ2NDQzMTY2Y2Q2YTg4YjAxOWJjNDI2NDZlMzUxOGE0NjAiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgIgotCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICBleHBvcnQgQ01BS0VfSU5TVEFMTF9EQVRESVI9IiR7U1RBR0lOR19EQVRBRElSfSIKLX0KLQotCi1GSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L2NtcGkvbGliY21waUxNSV9OZXR3b3JraW5nLnNvICR7cHJlZml4fS9saWJleGVjKiIKLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L2NtcGkvLmRlYnVnKiIKLQotUE5CTEFDS0xJU1Rbb3BlbmxtaS1uZXR3b3JraW5nXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBvcGVubG1pLXByb3ZpZGVycyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1wcm92aWRlcnMvMDAwMS1maXgtZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzLzAwMDEtZml4LWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmNkMWM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1wcm92aWRlcnMvMDAwMS1maXgtZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDc2NDE3MTg2NmI4NGUwMTk4YjY3NTM4ZjYzMDIyYWJkZTNlNjI4YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBRaWFuIExlaSA8cWlhbmwuZm5zdEBjbi5mdWppdHN1LmNvbT4KLURhdGU6IEZyaSwgMTYgSmFuIDIwMTUgMTQ6MTU6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGVycm9yCi0KLVNpZ25lZC1vZmYtYnk6IFFpYW4gTGVpIDxxaWFubC5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gY21ha2UvbW9kdWxlcy9PcGVuTE1JTWFjcm9zLmNtYWtlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY21ha2UvbW9kdWxlcy9PcGVuTE1JTWFjcm9zLmNtYWtlIGIvY21ha2UvbW9kdWxlcy9PcGVuTE1JTWFjcm9zLmNtYWtlCi1pbmRleCBkNTVmOTgzLi5kYmMzMmVjIDEwMDY0NAotLS0tIGEvY21ha2UvbW9kdWxlcy9PcGVuTE1JTWFjcm9zLmNtYWtlCi0rKysgYi9jbWFrZS9tb2R1bGVzL09wZW5MTUlNYWNyb3MuY21ha2UKLUBAIC04OSw3ICs4OSw3IEBAIG1hY3JvKGtvbmtyZXRjbXBpX2dlbmVyYXRlIE1PRlMgQ0lNX1BST1ZJREVSUyBDSU1fSEVBREVSUyBDSU1fQ0xBU1NFUykKLSAgICAgICAgIGVuZGZvcmVhY2goQ0xBU1MgJHtDSU1fQ0xBU1NfTkFNRVN9KQotIAotICAgICAgICAgIyBHZW5lcmF0ZSBoZWFkZXJzIGZvciBDSU0gY2xhc3NlcwotLSAgICAgICAgc2V0KEVOVntLT05LUkVUX1NDSEVNQV9ESVJ9ICIvdXNyL3NoYXJlL21vZi9jaW0tY3VycmVudCIpCi0rICAgICAgICBzZXQoRU5We0tPTktSRVRfU0NIRU1BX0RJUn0gIiRFTlZ7Q01BS0VfSU5TVEFMTF9EQVRESVJ9L21vZi9jaW0tY3VycmVudCIpCi0gICAgICAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0tPTktSRVRDTVBJX0tPTktSRVR9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0tPTktSRVRfTU9GX0ZJTEVTfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtHRU5FUkFURV9QUk9WSURFUlN9Ci0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVycy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM4ZWJlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gN2NlY2ZhOTVmMDMzYjMzYTFjMzI2MGMyMTRiMmQwZTVlODFiNGZkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KLURhdGU6IE1vbiwgMyBBdWcgMjAxNSAwMjowNTo1NiArMDkwMAotU3ViamVjdDogW1BBVENIXSBmaXggbGliNjQgY2FuIG5vdCBiZSBzaGlwZWQgaW4gNjRiaXQgdGFyZ2V0Ci0KLVNpZ25lZC1vZmYtYnk6IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgNyAtLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA0OGFlMjA2Li4zZWFkOWM2IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjEsMTMgKzIxLDYgQEAgZWxzZShIQVNfU1RBQ0tfUFJPVEVDVE9SX1NUUk9ORykKLSAgICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZzdGFjay1wcm90ZWN0b3IiKQotIGVuZGlmKCkKLSAKLS0jIFNldCBMSUJfU1VGRklYIHRvIDY0IG9uIDY0Yml0IGFyY2hpdGVjdHVyZXMKLS1pZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCi0tICAgIHNldChMSUJfU1VGRklYICIiKQotLWVsc2UoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLSAgICBTRVQoTElCX1NVRkZJWCA2NCkKLS1lbmRpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDQpCi0tCi0gaWYoTk9UIFNZU0NPTkZfSU5TVEFMTF9ESVIpCi0gICAgIHNldChTWVNDT05GX0lOU1RBTExfRElSICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2V0YykKLSBlbmRpZihOT1QgU1lTQ09ORl9JTlNUQUxMX0RJUikKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzXzAuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVyc18wLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVkYTY1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTZXQgb2YgYmFzaWMgQ0lNIHByb3ZpZGVycyIKLURFU0NSSVBUSU9OID0gIlwKLW9wZW5sbWktcHJvdmlkZXJzIGlzIHNldCBvZiAodXN1YWxseSkgc21hbGwgQ01QSSBwcm92aWRlcnMgKGFnZW50cykgZm9yIFwKLWJhc2ljIG1vbml0b3JpbmcgYW5kIG1hbmFnZW1lbnQgb2YgaG9zdCBzeXN0ZW0gdXNpbmcgQ29tbW9uIEluZm9ybWF0aW9uIFwKLU1vZGVsIChDSU0pLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmxtaS5vcmcvIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2MxM2IzMzc2Y2VhMGNlNjhkMmQyZGEwYTFiM2E3MmMiCi1TRUNUSU9OID0gIlN5c3RlbS9NYW5hZ2VtZW50IgotREVQRU5EUyA9ICJrb25rcmV0Y21waS1uYXRpdmUga29ua3JldGNtcGkgc2JsaW0tc2ZjYiBzYmxpbS1jbXBpLWRldmVsIGNpbS1zY2hlbWEtZXhwZXIgbG1zZW5zb3JzIGxpYnVzZXIgc3dpZyBzd2lnLW5hdGl2ZSBkYnVzIHVkZXYgc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlIHBjaXV0aWxzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mZWRvcmFob3N0ZWQub3JnL3JlbGVhc2VkLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbGliNjQtY2FuLW5vdC1iZS1zaGlwZWQtaW4tNjRiaXQtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTkwNGYyM2NmNDk0OTQ2MjM3Y2ZiYmRiZTY0NGEzY2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJiMmZiZWFlYzQ1YTgzOTA1ZDBkYTNiODdkYTgzOTA0ZDljZDk0YzFiODYzMTJmODQ0NTg3YjNmZmYxMWY1NiIKLQotaW5oZXJpdCBjbWFrZQotTERGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILURFVkFTU0lTVEFOVD1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtSk9VUk5BTEQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILVNFUlZJQ0U9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILVNFUlZJQ0UtTEVHQUNZPU9OIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILUFDQ09VTlQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILVBDUD1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtUkVBTE1EPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1GQU49T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILUxPQ0FMRT1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtSU5EU0VOREVSPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1KT0JNQU5BR0VSPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1TU1NEPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1TRUxJTlVYPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1TT0ZUV0FSRS1EQlVTPU9OIFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgQ01BS0VfSU5TVEFMTF9EQVRESVI9IiR7U1RBR0lOR19EQVRBRElSfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAtZCAke0R9JHtwcmVmaXh9JHtzeXNjb25maWRyfSBdOyB0aGVuCi0gICAgICAgIG12ICR7RH0ke3ByZWZpeH0ke3N5c2NvbmZkaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9jbXBpL2xpYmNtcGlMTUkqICR7cHJlZml4fS9saWJleGVjKiIKLUZJTEVTXyR7UE59LWRldiA9KyAiJHtkYXRhZGlyfS9jbWFrZSoiCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9jbXBpLy5kZWJ1ZyoiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKLQotUE5CTEFDS0xJU1Rbb3BlbmxtaS1wcm92aWRlcnNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxtc2Vuc29ycyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1zdG9yYWdlXzAuOC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXN0b3JhZ2VfMC44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OWI3N2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXN0b3JhZ2VfMC44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNJTSBwcm92aWRlcnMgZm9yIHN0b3JhZ2UgbWFuYWdlbWVudCIKLURFU0NSSVBUSU9OID0gIlwKLVRoZSBvcGVubG1pLXN0b3JhZ2UgcGFja2FnZSBjb250YWlucyBDTVBJIHByb3ZpZGVycyBmb3IgbWFuYWdlbWVudCBvZiBzdG9yYWdlIFwKLXVzaW5nIENvbW1vbiBJbmZvcm1hdGlvbiBNYW5hZ2VtZW4gKENJTSkgcHJvdG9jb2wuIFwKLVwKLVRoZSBwcm92aWRlcnMgY2FuIGJlIHJlZ2lzdGVyZWQgaW4gYW55IENNUEktYXdhcmUgQ0lNT00sIGJvdGggT3BlblBlZ2FzdXMgYW5kIFwKLVNGQ0Igd2VyZSB0ZXN0ZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVubG1pLm9yZy8iCi1MSUNFTlNFID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotU0VDVElPTiA9ICJTeXN0ZW0vTWFuYWdlbWVudCIKLURFUEVORFMgPSAib3BlbmxtaS1wcm92aWRlcnMgcHl3YmVtIGNtcGktYmluZGluZ3MiCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlZC8ke0JQTn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjg5OGNmMGQ4YzAzYjhhZDZiNDVkNjVmMzM1ZGRlZTBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMWJhOTk1Nzc1MGY5NGVhNThhODljZWEyODk4NTU2NGYzOGQ3Y2M5YWEwMGZjYWUyMGM1MWU3YjMyYmQwYTgiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21vZi8qICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8KLQotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wZW5sbWkvc3RvcmFnZQotICAgIGluc3RhbGwgLW0gNjQ0IHN0b3JhZ2UuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGVubG1pL3N0b3JhZ2Uvc3RvcmFnZS5jb25mCi0KLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtsaWJleGVjZGlyfS9wZWdhc3VzCi0gICAgaW5zdGFsbCAtbSA3NTUgcHljbXBpTE1JX1N0b3JhZ2UtY2ltcHJvdmFndCAke0R9JHtsaWJleGVjZGlyfS9wZWdhc3VzLwotfQotCi1GSUxFU18ke1BOfSA9KyAiJHtzeXNjb25mZGlyfS9vcGVubG1pL3N0b3JhZ2Uvc3RvcmFnZS5jb25mICR7ZGF0YWRpcn0vJHtCUE59LyoiCi0KLVBOQkxBQ0tMSVNUW29wZW5sbWktc3RvcmFnZV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgcHl3YmVtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS10b29sc18wLjEwLjUuYmIKaW5kZXggYjIzODY5ZC4uMTNlNjdjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCkBAIC0yMSwzICsyMSw4IEBACiBkb19pbnN0YWxsX3ByZXBlbmQoKSB7CiAgICAgY2QgY2xpCiB9CisKK3B5dGhvbigpIHsKKyAgICBpZiAnbWV0YS1weXRob24nIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24gdG8gYmUgcHJlc2VudC4nKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbi8wMDAxLWxvY2suYy1EZWZpbmUtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAtaWYtdW5kZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuLzAwMDEtbG9jay5jLURlZmluZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUC1pZi11bmRlZmluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODIzZmRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbi8wMDAxLWxvY2suYy1EZWZpbmUtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAtaWYtdW5kZWZpbmUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBlMDViYWQ3M2Y1ZmU0YmUxNjI2NTYwZDkyNDY1ODkzYTVmYzkzMWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMDA6MDE6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jay5jOiBEZWZpbmUgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAgaWYgdW5kZWZpbmVkCisKK0NoZWNrIGZvciBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCBiZWluZyBkZWZpbmVkIGluc3RlYWQgb2YKK2NoZWNraW5nIGZvciBPUworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYi91L2xvY2suYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvdS9sb2NrLmMgYi9zcmMvbGliL3UvbG9jay5jCitpbmRleCAwMjVlZWE0Yy4uYjMxYzc3YjUgMTAwNjQ0CistLS0gYS9zcmMvbGliL3UvbG9jay5jCisrKysgYi9zcmMvbGliL3UvbG9jay5jCitAQCAtNTAsNyArNTAsNyBAQAorIGV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZShwdGhyZWFkX211dGV4YXR0cl90ICphdHRyLCBpbnQgdHlwZSk7CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQgKF9fU1ZSNCkgJiYgZGVmaW5lZCAoX19zdW4pCisrI2lmbmRlZiBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUAorICNkZWZpbmUgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUKKyAjZW5kaWYKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTI1ZjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5zb3VyY2UgSW1wbGVtZW50YXRpb24gb2YgV1MtTWFuYWdlbWVudCIKLURFU0NSSVBUSU9OID0gIk9wZW53c21hbiBpcyBhIHByb2plY3QgaW50ZW5kZWQgdG8gcHJvdmlkZSBhbiBvcGVuLXNvdXJjZSBcCi1pbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2ViIFNlcnZpY2VzIE1hbmFnZW1lbnQgc3BlY2lwaWNhdGlvbiBcCi0oV1MtTWFuYWdlbWVudCkgYW5kIHRvIGV4cG9zZSBzeXN0ZW0gbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBvbiB0aGUgXAotTGludXggb3BlcmF0aW5nIHN5c3RlbSB1c2luZyB0aGUgV1MtTWFuYWdlbWVudCBwcm90b2NvbC4gV1MtTWFuYWdlbWVudCBcCi1pcyBiYXNlZCBvbiBhIHN1aXRlIG9mIHdlYiBzZXJ2aWNlcyBzcGVjaWZpY2F0aW9ucyBhbmQgdXNhZ2UgXAotcmVxdWlyZW1lbnRzIHRoYXQgZXhwb3NlcyBhIHNldCBvZiBvcGVyYXRpb25zIGZvY3VzZWQgb24gYW5kIGNvdmVycyBcCi1hbGwgc3lzdGVtIG1hbmFnZW1lbnQgYXNwZWN0cy4gXAotT3BlbndzbWFuIFNlcnZlciBhbmQgc2VydmljZSBsaWJyYXJpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW53c21hbi5vcmcvIgotU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvU3lzdGVtIgotCi1ERVBFTkRTID0gImN1cmwgbGlieG1sMiBvcGVuc3NsIGxpYnBhbSIKLQotU1JDUkVWID0gImZlYjdlYzliMDA0ZmNhZWEwZGJlNjVjZThhMWE3OWNjMjlkZDk5NGMiCi1QViA9ICIyLjYuMyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW53c21hbi9vcGVud3NtYW4uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2xpYnNzbC1pcy1yZXF1aXJlZC1pZi1ldmVudGludC1zdXBwb3J0ZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbndzbWFuZC5zZXJ2aWNlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ0ZjUzZDRjNmNmNzNiOWQ0MzE4NmNlM2JlNmRkMGJhIgotCi1pbmhlcml0IHN5c3RlbWQgY21ha2UgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGVud3NtYW5kLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLUxERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICIgLWZ1c2UtbGQ9YmZkICIsICcnLCBkKX0iCi0KLUVYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9CSU5ESU5HUz1OTyBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTElCQ0lNPU5PIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9QRVJMPVlFUyBcCi0gICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLURMSUI9JHtiYXNlbGlifSBcCi0gICAgICAgICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0KLSAgICBleHBvcnQgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS9ldGMvaW5pdC9vcGVud3NtYW5kLnNoICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbndzbWFuZAotICAgIGxuIC1zZiAke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVud3NtYW5kICR7RH0vJHtzYmluZGlyfS9yY29wZW53c21hbmQKLSAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW53c21hbi9vd3NtYW5nZW5jZXJ0LnNoCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW53c21hbmQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCi0gICAgICAgIHNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKLSAgICAgICAgc2VkIC1pIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW53c21hbi9wbHVnaW5zLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vb3BlbndzbWFuL2F1dGhlbnRpY2F0b3JzLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3NzhjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJPcGVuc291cmNlIEltcGxlbWVudGF0aW9uIG9mIFdTLU1hbmFnZW1lbnQiCitERVNDUklQVElPTiA9ICJPcGVud3NtYW4gaXMgYSBwcm9qZWN0IGludGVuZGVkIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgXAoraW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYiBTZXJ2aWNlcyBNYW5hZ2VtZW50IHNwZWNpcGljYXRpb24gXAorKFdTLU1hbmFnZW1lbnQpIGFuZCB0byBleHBvc2Ugc3lzdGVtIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gb24gdGhlIFwKK0xpbnV4IG9wZXJhdGluZyBzeXN0ZW0gdXNpbmcgdGhlIFdTLU1hbmFnZW1lbnQgcHJvdG9jb2wuIFdTLU1hbmFnZW1lbnQgXAoraXMgYmFzZWQgb24gYSBzdWl0ZSBvZiB3ZWIgc2VydmljZXMgc3BlY2lmaWNhdGlvbnMgYW5kIHVzYWdlIFwKK3JlcXVpcmVtZW50cyB0aGF0IGV4cG9zZXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyBmb2N1c2VkIG9uIGFuZCBjb3ZlcnMgXAorYWxsIHN5c3RlbSBtYW5hZ2VtZW50IGFzcGVjdHMuIFwKK09wZW53c21hbiBTZXJ2ZXIgYW5kIHNlcnZpY2UgbGlicmFyaWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVud3NtYW4ub3JnLyIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKKworREVQRU5EUyA9ICJjdXJsIGxpYnhtbDIgb3BlbnNzbCBsaWJwYW0iCisKK1NSQ1JFViA9ICJmZWI3ZWM5YjAwNGZjYWVhMGRiZTY1Y2U4YTFhNzljYzI5ZGQ5OTRjIgorUFYgPSAiMi42LjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVud3NtYW4vb3BlbndzbWFuLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJzc2wtaXMtcmVxdWlyZWQtaWYtZXZlbnRpbnQtc3VwcG9ydGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW53c21hbmQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2suYy1EZWZpbmUtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAtaWYtdW5kZWZpbmUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDRmNTNkNGM2Y2Y3M2I5ZDQzMTg2Y2UzYmU2ZGQwYmEiCisKK2luaGVyaXQgc3lzdGVtZCBjbWFrZSBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wZW53c21hbmQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworTERGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgIiAtZnVzZS1sZD1iZmQgIiwgJycsIGQpfSIKKworRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX0JJTkRJTkdTPU5PIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9MSUJDSU09Tk8gXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1BFUkw9WUVTIFwKKyAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke3ByZWZpeH0gXAorICAgICAgICAgICAgICAgICAtRExJQj0ke2Jhc2VsaWJ9IFwKKyAgICAgICAgICAgICAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfQorICAgIGV4cG9ydCBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9L2V0Yy9pbml0L29wZW53c21hbmQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVud3NtYW5kCisgICAgbG4gLXNmICR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW53c21hbmQgJHtEfS8ke3NiaW5kaXJ9L3Jjb3BlbndzbWFuZAorICAgIGNobW9kIDc1NSAke0R9LyR7c3lzY29uZmRpcn0vb3BlbndzbWFuL293c21hbmdlbmNlcnQuc2gKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbndzbWFuZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCisgICAgICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKKyAgICAgICAgc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbndzbWFuL3BsdWdpbnMvLmRlYnVnLyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9vcGVud3NtYW4vYXV0aGVudGljYXRvcnMvLmRlYnVnLyBcCisgICAgICAgICAgICAgICAgICAgIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmODg1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gInBhbS1zc2gtYWdlbnQtYXV0aCIKK0RFU0NSSVBUSU9OID0gIkEgUEFNIG1vZHVsZSB3aGljaCBwZXJtaXRzIGF1dGhlbnRpY2F0aW9uIHZpYSBzc2gtYWdlbnQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wYW1zc2hhZ2VudGF1dGgvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJvcGVuc3NsICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5PcGVuU1NMO21kNT04YWIwMTE0NjE0MWRlZDU5Yjc1ZjhiYTc4MTFlZDA1YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9PUEVOU1NIX0xJQ0VOU0U7bWQ1PTdhZTA5MjE4MTczYmUxNjQzYzk5OGE0YjcxMDI3ZjliIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3BhbXNzaGFnZW50YXV0aC9maWxlcy9wYW1fc3NoX2FnZW50X2F1dGgvdiR7UFZ9L3BhbV9zc2hfYWdlbnRfYXV0aC0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjhkYmU5MGFiMzYyNWU1NDUwMzYzMzNlNmY1MWNjZjFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjNTNkMzU4ZDZlYWVkMWIyMTEyMzlkZjAxN2MyN2M2Zjk5NzA5OTVkMTQxMDJhZTY3YmFlMTZkNGY0N2E3NjMiCisKK0RFUEVORFMgKz0gImxpYnBhbSBvcGVuc3NsIgorCisjIFRoaXMgZ2V0cyB1cyBzc2gtYWdlbnQsIHdoaWNoIHdlIGFyZSBhbG1vc3QgY2VydGFpbiB0byB3YW50LgorIworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2gtbWlzYyIKKworIyBLaW5kIG9mIHVuZm9ydHVuYXRlIHRvIGhhdmUgdW5kZXJzY29yZXMgaW4gdGhlIG5hbWUuCisjCitTID0gIiR7V09SS0RJUn0vcGFtX3NzaF9hZ2VudF9hdXRoLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworIyBBdm9pZCBhdXRvcmVjb25mLiAgT3ZlcnJpZGUgdGhlIC0tbGliZXhlYyBvZV9ydW5jb25mIHNwZWNpZmllcyBzbyB0aGF0CisjIHRoZSBtb2R1bGUgaXMgcHV0IHdpdGggdGhlIG90aGVyIHBhbSBtb2R1bGVzLiAgQmVjYXVzZSBpdCBjYW5ub3QsIGluIGdlbmVyYWwsCisjIGRvIGEgcnVudGltZSB0ZXN0LCBjb25maWd1cmUgd2FudHMgdG8gdXNlIHJwbF9tYWxsb2MoKSBhbmQgcnBsX3JlYWxsb2MoKQorIyBpbnN0ZWFkIG9mIG1hbGxvYygpIGFuZCByZWFsbG9jKCkuICBXZSBzZXQgdmFyaWFibGVzIHRvIHRlbGwgaXQgbm90IHRvIGJlY2F1c2UKKyMgdGhlc2UgZnVuY3Rpb25zIGRvIG5vdCBleGlzdC4KKyMKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisgICAgb2VfcnVuY29uZiAtLXdpdGhvdXQtb3BlbnNzbC1oZWFkZXItY2hlY2sgIC0tbGliZXhlY2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgICAgICBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzIGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9eWVzCit9CisKKyMgTGluayB3aXRoIENDLiAgQ29uZmlndXJlIGNhbm5vdCBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IEFSLgorIworZG9fY29tcGlsZSAoKSB7CisgICAgb2VfcnVubWFrZSAgTEQ9IiR7Q0N9IiBBUj0iJHtBUn0iCit9CisKKyMgVGhpcyBzdHVmZiBpcyBub3QgYW55IHBsYWNlIGxvb2tlZCBhdCBieSBkZWZhdWx0LgorIworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbSoiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliZmlsZS1mbm1hdGNoLXBlcmxfMC4wMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliZmlsZS1mbm1hdGNoLXBlcmxfMC4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzVmZTlmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJmaWxlLWZubWF0Y2gtcGVybF8wLjAyLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgdGhhdCBwcm92aWRlcyBzaW1wbGUgZmlsZW5hbWUgYW5kIHBhdGhuYW1lIG1hdGNoaW5nIgorREVTQ1JJUFRJT04gPSAiRmlsZTo6Rm5NYXRjaDo6Zm5tYXRjaCgpIHByb3ZpZGVzIHNpbXBsZSwgc2hlbGwtbGlrZSBwYXR0ZXJuIFwKK21hdGNoaW5nLiBcCitUaG91Z2ggY29uc2lkZXJhYmx5IGxlc3MgcG93ZXJmdWwgdGhhbiByZWd1bGFyIGV4cHJlc3Npb25zLCBzaGVsbCBwYXR0ZXJucyBcCithcmUgbm9uZXRoZWxlc3MgdXNlZnVsIGFuZCBmYW1pbGlhciB0byBhIGxhcmdlIGF1ZGllbmNlIG9mIGVuZC11c2Vycy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9GaWxlLUZuTWF0Y2gvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zNDtlbmRsaW5lPTM3O21kNT01NGZkZmFjNjI5NjNiN2NlY2U1NTgzYWIzOGYyY2YwZCIKKworU1JDX1VSSSA9ICJodHRwczovL2NwYW4ubWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvTS9NSi9NSlAvRmlsZS1Gbk1hdGNoLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjIyZjc3YzIwZDBmYjVhZjAxYTMxNjVlMmRmMmZlMzRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2MjQ1NGI4ZTg2YmVhOGIxMzJiZjhhZjM1NzU3ZDBjNmE4ZjVkNTk5MDE1YmQ2YTVkNjhjYjdhZTdhOWU5MTYiCisKK1MgPSAiJHtXT1JLRElSfS9GaWxlLUZuTWF0Y2gtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZS5iYgppbmRleCBlY2VkNGI2Li45MzRhNTNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0LWdyb3VwLXJ1bGUtZGF0ZXRpbWUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1ncm91cC1ydWxlLWRhdGV0aW1lLmJiCkBAIC0xLDYgKzEsNiBAQAogREVTQ1JJUFRJT04gPSAiQ3JlYXRlIHVzZXJncm91cCBkYXRldGltZS4gQWxsIG1lbWJlcnMgb2ZmIHRoaXMgZ3JvdXAgYXJlIGFsbG93ZWQgc2V0IGRhdGUvdGltZS90aW1lem9uZSB2aWEgc3lzdGVtIGRidXMiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIHJlcXVpcmUgcG9sa2l0LWdyb3VwLXJ1bGUuaW5jCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1ncm91cC1ydWxlLW5ldHdvcmsuYmIKaW5kZXggNTUxZWQzZS4uNjZhNzNlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1ncm91cC1ydWxlLW5ldHdvcmsuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1ncm91cC1ydWxlLW5ldHdvcmsuYmIKQEAgLTEsNiArMSw2IEBACiBERVNDUklQVElPTiA9ICJDcmVhdGUgdXNlcmdyb3VwIG5ldHdvcmsuIEFsbCBtZW1iZXJzIG9mZiB0aGlzIGdyb3VwIGFyZSBhbGxvd2VkIHRvIG1vZGlmeSBuZXR3b3JrbWFuYWdlciBzZXR0aW5ncyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogcmVxdWlyZSBwb2xraXQtZ3JvdXAtcnVsZS5pbmMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdF8wLjExMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXRfMC4xMTMuYmIKaW5kZXggMzI2YzkzNC4uZjM0OTI4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdF8wLjExMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0XzAuMTEzLmJiCkBAIC0xMCw3ICsxMCw5IEBACiBpbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIFBBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnY29uc29sZWtpdCcsIGQpfSIKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2NvbnNvbGVraXQnLCAnJywgZCksIGQpfSBcCisgICAgICAgICAgICAgICAgIgogCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLWF1dGhmdz1wYW0sLS13aXRoLWF1dGhmdz1zaGFkb3csbGlicGFtLGxpYnBhbSIKIFBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtbGlic3lzdGVtZC1sb2dpbj15ZXMgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0tZW5hYmxlLWxpYnN5c3RlbWQtbG9naW49bm8gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSxzeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxOWMxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJSb2Nrc0RCIGFuIGVtYmVkZGFibGUsIHBlcnNpc3RlbnQga2V5LXZhbHVlIHN0b3JlIgorREVTQ1JJUFRJT04gPSAiUm9ja3NEQiBpcyBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYW4gZW1iZWRkYWJsZSwgcGVyc2lzdGVudCBrZXktdmFsdWUgc3RvcmUgZm9yIGZhc3Qgc3RvcmFnZS4iCitIT01FUEFHRSA9ICJodHRwOi8vcm9ja3NkYi5vcmcvIgorTElDRU5TRSA9ICIoQXBhY2hlLTIuMCB8IEdQTC0yLjApICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5BcGFjaGU7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UubGV2ZWxkYjttZDU9ZmIwNGZmNTdhMTRmMzA4ZjJlZWQ0YTliODdkNDU4MzciCisKK1NSQ1JFViA9ICIyNjZhYzI0NWFmZmQ2OTU1NTY0M2I3MzVkMTlkMzcxNWM0ZWZmOTFhIgorUFYgPSAiNS44K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmFjZWJvb2svJHtCUE59LmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSAiYnppcDIgemxpYiBsejQiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRFdJVEhfQloyPU9OLC1EV0lUSF9CWjI9T0ZGLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EV0lUSF9MWjQ9T04sLURXSVRIX0xaND1PRkYsbHo0IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRFdJVEhfWkxJQj1PTiwtRFdJVEhfWkxJQj1PRkYsemxpYiIKK1BBQ0tBR0VDT05GSUdbbGl0ZV0gPSAiLURST0NLU0RCX0xJVEU9T04sLURST0NLU0RCX0xJVEU9T0ZGIgorCisjIFRvb2xzIGFuZCB0ZXN0cyBjdXJyZW50bHkgZG9uJ3QgY29tcGlsZSBvbiBhcm12NSBzbyB3ZSBkaXNhYmxlIHRoZW0KK0VYVFJBX09FQ01BS0UgPSAiXAorICAgIC1EUE9SVEFCTEU9T04gXAorICAgIC1EV0lUSF9URVNUUz1PRkYgXAorICAgIC1EV0lUSF9UT09MUz1PRkYgXAorIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjYuMC5iYgppbmRleCBhM2FhYzQ1Li43OTdiY2FhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNi4wLmJiCkBAIC0yMiw3ICsyMiw3IEBACiBTWVNURU1EX1BBQ0tBR0VTID0gInJyZGNhY2hlZCIKIFNZU1RFTURfU0VSVklDRV9ycmRjYWNoZWQgPSAicnJkY2FjaGVkLnNvY2tldCBycmRjYWNoZWQuc2VydmljZSIKIAotRVhUUkFfQVVUT1JFQ09ORiA9ICItSSBtNCIKK0VYVFJBX0FVVE9SRUNPTkYgPSAiLUkgbTQgLS1leGNsdWRlPWF1dG9wb2ludCIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBwZXJsICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiAKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAtLWRpc2FibGUtbHVhIFwKICAgICAtLWRpc2FibGUtdGNsIFwKICAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZW5hYmxlLW5scz0ke1VTRV9OTFN9IFwKICIKIAogZXhwb3J0IFNUQUdJTkdfTElCRElSCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRjMjU4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHJlbGlhYmxlIGxvZ2dpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYmZhc3Rqc29uIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWZiOWMxMGVkOWZkNjgyNjc1NzYxNTQ1NWNhODkzYTkiCi0KLURFUEVORFMgPSAiZ21wIG5ldHRsZSBsaWJpZG4gemxpYiBnbnV0bHMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYnJlbHAuZ2l0O3Byb3RvY29sPWh0dHBzIgotCi1TUkNSRVYgPSAiMDJjM2JlNGY1YzM5ZmVjNTlkMDVjZDhiNzViMDhkYmJhMDQwOThhZCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODA0N2ViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xNC5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkEgcmVsaWFibGUgbG9nZ2luZyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JzeXNsb2cvbGliZmFzdGpzb24iCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZmI5YzEwZWQ5ZmQ2ODI2NzU3NjE1NDU1Y2E4OTNhOSIKKworREVQRU5EUyA9ICJnbXAgbmV0dGxlIGxpYmlkbiB6bGliIGdudXRscyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JzeXNsb2cvbGlicmVscC5naXQ7cHJvdG9jb2w9aHR0cHMiCisKK1NSQ1JFViA9ICJmYzUxMmUzMzdiZmM3YzkyNzcwMjQ2ZGJmZjVmNDgyYjg3OTQ5OGI5IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWQzOTFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJSc3lzbG9nIGlzIGFuIGVuaGFuY2VkIG11bHRpLXRocmVhZGVkIHN5c2xvZ2QiCi1ERVNDUklQVElPTiA9ICJcCi1Sc3lzbG9nIGlzIGFuIGVuaGFuY2VkIHN5c2xvZ2Qgc3VwcG9ydGluZywgYW1vbmcgb3RoZXJzLCBNeVNRTCxcCi0gUG9zdGdyZVNRTCwgZmFpbG92ZXIgbG9nIGRlc3RpbmF0aW9ucywgc3lzbG9nL3RjcCwgZmluZSBncmFpblwKLSBvdXRwdXQgZm9ybWF0IGNvbnRyb2wsIGhpZ2ggcHJlY2lzaW9uIHRpbWVzdGFtcHMsIHF1ZXVlZCBvcGVyYXRpb25zXAotIGFuZCB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgb24gYW55IG1lc3NhZ2UgcGFydC4gSXQgaXMgcXVpdGVcCi0gY29tcGF0aWJsZSB0byBzdG9jayBzeXNrbG9nZCBhbmQgY2FuIGJlIHVzZWQgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50LlwKLSBJdHMgYWR2YW5jZWQgZmVhdHVyZXMgbWFrZSBpdCBzdWl0YWJsZSBmb3IgZW50ZXJwcmlzZS1jbGFzcyxcCi0gZW5jcnlwdGlvbiBwcm90ZWN0ZWQgc3lzbG9nIHJlbGF5IGNoYWlucyB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIGJlaW5nXAotIHZlcnkgZWFzeSB0byBzZXR1cCBmb3IgdGhlIG5vdmljZSB1c2VyLiIKLQotREVQRU5EUyA9ICJ6bGliIGxpYmVzdHIgbGliZmFzdGpzb24gYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIGxpYmxvZ2dpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnJzeXNsb2cuY29tLyIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMgJiBBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTFkOTYzNWU2NDZmYjc1ZTFiNzRjMDc0Zjc4OGU5NzMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWNiNzkwM2YxZTVjMzlhZTgzODIwOWUxMzBkY2EyNzBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuQVNMMjA7bWQ1PTA1MmY4YTA5MjA2NjE1YWIwNzMyNmZmOGNlMmQ5ZDMyXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vZG93bmxvYWQvZmlsZXMvZG93bmxvYWQvcnN5c2xvZy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2luaXRzY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3JzeXNsb2cubG9ncm90YXRlIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWctdG8tY2hlY2stbGliZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLWZpeC1wdGVzdC1ub3QtZmluaXNoLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovLzAwMDEtVW5kZWZpbmUtR0xPQl9CUkFDRS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFkMGYyNWY0MjlhYTJkYWEzMjY3MzI5NTBhNWVlYjZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2ZTI4ODQxODEzMzNkY2NlY2NlYWNhODI4MjdhZTI0Y2E3YTI1OGI0ZmJmN2IxZTA3YTgwZDRjYWFlNjQwY2EiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdlbmVyYXRlLW1hbi1wYWdlcyBhcF9jdl9hdG9taWNfYnVpbHRpbnM9eWVzIgotCi0jIGZpcnN0IGxpbmUgaXMgZGVmYXVsdCB5ZXMgaW4gY29uZmlndXJlCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICByc3lzbG9nZCByc3lzbG9ncnQga2xvZyBpbmV0IHJlZ2V4cCB1dWlkIGxpYmdjcnlwdCBcCi0gICAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAotIgotCi0jIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQotUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgotUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCi1QQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKLVBBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgotUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCi1QQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKLVBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgotUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCwtLWRpc2FibGUtdGVzdGJlbmNoLCwiCi0KLSMgZGVmYXVsdCBubyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZywsIgotUEFDS0FHRUNPTkZJR1tpbWRpYWddID0gIi0tZW5hYmxlLWltZGlhZywtLWRpc2FibGUtaW1kaWFnLCwiCi1QQUNLQUdFQ09ORklHW2ltZmlsZV0gPSAiLS1lbmFibGUtaW1maWxlLC0tZGlzYWJsZS1pbWZpbGUsLCIKLVBBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCi1QQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKLVBBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQotICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAjIGluc3RhbGwgdGhlIHRlc3RzCi0gICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKLSAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIGZpeCB0aGUgc3JjZGlyLCB0b3Bfc3JjZGlyCi0gICAgc2VkIC1pICdzLF5cKHNyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotICAgIHNlZCAtaSAncyxeXCh0b3Bfc3JjZGlyID0gXCkuKixcMSR7UFRFU1RfUEFUSH0vdGVzdHMsJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAotICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KLSAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBmaQotCi0gICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcwotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKLSAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCi0gICAgKAotICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCi0gICAgICAgIGFsbHNvPSIqLnNvIgotICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCi0gICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQotICAgICAgICBkb25lCi0gICAgKQotCi0gICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKLSAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZwotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZgotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5sb2dyb3RhdGUgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLnJzeXNsb2cKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKLQotSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSArPSAibG9ncm90YXRlIgotCi0jIGZvciByc3lzbG9nLXB0ZXN0Ci1WQUxHUklORCA9ICJ2YWxncmluZCIKLVZBTEdSSU5EX21pcHMgPSAiIgotVkFMR1JJTkRfbWlwczY0ID0gIiIKLVZBTEdSSU5EX21pcHM2NG4zMiA9ICIiCi1WQUxHUklORF9hcm0gPSAiIgotVkFMR1JJTkRfYWFyY2g2NCA9ICIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBkaWZmdXRpbHMgZ3ppcCBiYXNoIGdhd2sgY29yZXV0aWxzIHByb2NwcyIKLVJSRUNPTU1FTkRTXyR7UE59LXB0ZXN0ICs9ICIke1RDTElCQ30tZGJnICR7VkFMR1JJTkR9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1NmUxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIKQEAgLTAsMCArMSwxNTEgQEAKK1NVTU1BUlkgPSAiUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBtdWx0aS10aHJlYWRlZCBzeXNsb2dkIgorREVTQ1JJUFRJT04gPSAiXAorUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBzeXNsb2dkIHN1cHBvcnRpbmcsIGFtb25nIG90aGVycywgTXlTUUwsXAorIFBvc3RncmVTUUwsIGZhaWxvdmVyIGxvZyBkZXN0aW5hdGlvbnMsIHN5c2xvZy90Y3AsIGZpbmUgZ3JhaW5cCisgb3V0cHV0IGZvcm1hdCBjb250cm9sLCBoaWdoIHByZWNpc2lvbiB0aW1lc3RhbXBzLCBxdWV1ZWQgb3BlcmF0aW9uc1wKKyBhbmQgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIG9uIGFueSBtZXNzYWdlIHBhcnQuIEl0IGlzIHF1aXRlXAorIGNvbXBhdGlibGUgdG8gc3RvY2sgc3lza2xvZ2QgYW5kIGNhbiBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudC5cCisgSXRzIGFkdmFuY2VkIGZlYXR1cmVzIG1ha2UgaXQgc3VpdGFibGUgZm9yIGVudGVycHJpc2UtY2xhc3MsXAorIGVuY3J5cHRpb24gcHJvdGVjdGVkIHN5c2xvZyByZWxheSBjaGFpbnMgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBiZWluZ1wKKyB2ZXJ5IGVhc3kgdG8gc2V0dXAgZm9yIHRoZSBub3ZpY2UgdXNlci4iCisKK0RFUEVORFMgPSAiemxpYiBsaWJlc3RyIGxpYmZhc3Rqc29uIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBsaWJsb2dnaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzICYgQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZDk2MzVlNjQ2ZmI3NWUxYjc0YzA3NGY3ODhlOTczIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1jYjc5MDNmMWU1YzM5YWU4MzgyMDllMTMwZGNhMjcwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkFTTDIwO21kNT0wNTJmOGEwOTIwNjYxNWFiMDczMjZmZjhjZTJkOWQzMlwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnJzeXNsb2cuY29tL2Rvd25sb2FkL2ZpbGVzL2Rvd25sb2FkL3JzeXNsb2cvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0c2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3JzeXNsb2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmxvZ3JvdGF0ZSBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLVVuZGVmaW5lLUdMT0JfQlJBQ0UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODA1NjE3ZjY1YTRiNGJlYTM0NjA2NDg3YTUyNTVhMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjBiYTMwYjVhZmIwZjNkZGIzMjg2MTNmZWE3YWEzOTY2YjAxZTRkMGM1MmQ2ZGU5YWIyN2IwODU4ZjE5NzM4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKKworIyBmaXJzdCBsaW5lIGlzIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgcnN5c2xvZ2QgcnN5c2xvZ3J0IGtsb2cgaW5ldCByZWdleHAgdXVpZCBsaWJnY3J5cHQgXAorICAgIGltZGlhZyBnbnV0bHMgaW1maWxlIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzbm1wIHN5c3RlbWQnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndGVzdGJlbmNoIHJlbHAgJHtWQUxHUklORH0nLCAnJywgZCl9IFwKKyIKKworIyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUdbcmVscF0gPSAiLS1lbmFibGUtcmVscCwtLWRpc2FibGUtcmVscCxsaWJyZWxwLCIKK1BBQ0tBR0VDT05GSUdbcnN5c2xvZ2RdID0gIi0tZW5hYmxlLXJzeXNsb2dkLC0tZGlzYWJsZS1yc3lzbG9nZCwsIgorUEFDS0FHRUNPTkZJR1tyc3lzbG9ncnRdID0gIi0tZW5hYmxlLXJzeXNsb2dydCwtLWRpc2FibGUtcnN5c2xvZ3J0LCwiCitQQUNLQUdFQ09ORklHW2luZXRdID0gIi0tZW5hYmxlLWluZXQsLS1kaXNhYmxlLWluZXQsLCIKK1BBQ0tBR0VDT05GSUdba2xvZ10gPSAiLS1lbmFibGUta2xvZywtLWRpc2FibGUta2xvZywsIgorUEFDS0FHRUNPTkZJR1tyZWdleHBdID0gIi0tZW5hYmxlLXJlZ2V4cCwtLWRpc2FibGUtcmVnZXhwLCwiCitQQUNLQUdFQ09ORklHW3V1aWRdID0gIi0tZW5hYmxlLXV1aWQsLS1kaXNhYmxlLXV1aWQsdXRpbC1saW51eCwiCitQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS1lbmFibGUtbGliZ2NyeXB0LC0tZGlzYWJsZS1saWJnY3J5cHQsbGliZ2NyeXB0LCIKK1BBQ0tBR0VDT05GSUdbdGVzdGJlbmNoXSA9ICItLWVuYWJsZS10ZXN0YmVuY2ggLS1lbmFibGUtb21zdGRvdXQsLS1kaXNhYmxlLXRlc3RiZW5jaCAtLWRpc2FibGUtb21zdGRvdXQsLCIKKworIyBkZWZhdWx0IG5vIGluIGNvbmZpZ3VyZQorUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnLCwiCitQQUNLQUdFQ09ORklHW2ltZGlhZ10gPSAiLS1lbmFibGUtaW1kaWFnLC0tZGlzYWJsZS1pbWRpYWcsLCIKK1BBQ0tBR0VDT05GSUdbaW1maWxlXSA9ICItLWVuYWJsZS1pbWZpbGUsLS1kaXNhYmxlLWltZmlsZSwsIgorUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wLG5ldC1zbm1wLCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8sLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwsLS1kaXNhYmxlLW15c3FsLG15c3FsNSwiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0tZW5hYmxlLXBnc3FsLC0tZGlzYWJsZS1wZ3NxbCxwb3N0Z3Jlc3FsLCIKK1BBQ0tBR0VDT05GSUdbbGliZGJpXSA9ICItLWVuYWJsZS1saWJkYmksLS1kaXNhYmxlLWxpYmRiaSxsaWJkYmksIgorUEFDS0FHRUNPTkZJR1ttYWlsXSA9ICItLWVuYWJsZS1tYWlsLC0tZGlzYWJsZS1tYWlsLCwiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQsIgorCitURVNURElSID0gInRlc3RzIgorZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBlY2hvICdidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2tfUFJPR1JBTVMpJyA+PiAke1RFU1RESVJ9L01ha2VmaWxlCisgICAgb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICMgaW5zdGFsbCB0aGUgdGVzdHMKKyAgICBjcCAtcmYgJHtTfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7Qn0vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkIE1ha2VmaWxlIGl0c2VsZgorICAgIHNlZCAtaSAncy9eTWFrZWZpbGU6LiokL01ha2VmaWxlOi8nICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKworICAgICMgZml4IHRoZSBzcmNkaXIsIHRvcF9zcmNkaXIKKyAgICBzZWQgLWkgJ3MsXlwoc3JjZGlyID0gXCkuKixcMSR7UFRFU1RfUEFUSH0vdGVzdHMsJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisgICAgc2VkIC1pICdzLF5cKHRvcF9zcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKworICAgICMgdmFsZ3JpbmQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBhcm0gYW5kIG1pcHMsCisgICAgIyBzbyByZW1vdmUgcmVsYXRlZCB0ZXN0IGNhc2VzIGlmIHRoZXJlIGlzIG5vIHZhbGdyaW5kLgorICAgIGlmIFsgeCR7VkFMR1JJTkR9ID0geCBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnL3VkcC1tc2dyZWR1Yy0vZCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgIGZpCisKKyAgICAjIGluc3RhbGwgdGVzdC1kcml2ZXIKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAjIGluc3RhbGwgbmVjZXNzYXJ5IGxpbmtzCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90b29scworICAgIGxuIC1zZiAke3NiaW5kaXJ9L3JzeXNsb2dkICR7RH0ke1BURVNUX1BBVEh9L3Rvb2xzL3JzeXNsb2dkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3J1bnRpbWUKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3J1bnRpbWUvLmxpYnMKKyAgICAoCisgICAgICAgIGNkICR7RH0vJHtsaWJkaXJ9L3JzeXNsb2cKKyAgICAgICAgYWxsc289Iiouc28iCisgICAgICAgIGZvciBpIGluICRhbGxzbzsgZG8KKyAgICAgICAgICAgIGxuIC1zZiAke2xpYmRpcn0vcnN5c2xvZy8kaSAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzLyRpCisgICAgICAgIGRvbmUKKyAgICApCisKKyAgICAjIGZpeCB0aGUgbW9kdWxlIGxvYWQgcGF0aCB3aXRoIHJ1bnRpbWUvLmxpYnMKKyAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0gLW5hbWUgIiouY29uZiIgLW8gLW5hbWUgIiouc2giIC1vIC1uYW1lICIqLmMiIHwgeGFyZ3MgXAorICAgICAgICBzZWQgLWkgLWUgJ3M6Li4vcGx1Z2lucy8uKi8ubGlicy86Li4vcnVudGltZS8ubGlicy86ZycKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kIgorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vaW5pdHNjcmlwdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9yc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5jb25mCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9yc3lzbG9nLmxvZ3JvdGF0ZSAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9sb2dyb3RhdGUucnN5c2xvZworfQorCitGSUxFU18ke1BOfSArPSAiJHtiaW5kaXJ9IgorCitJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZiIKKworUkNPTkZMSUNUU18ke1BOfSA9ICJidXN5Ym94LXN5c2xvZyBzeXNrbG9nZCBzeXNsb2ctbmciCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsb2dyb3RhdGUiCisKKyMgZm9yIHJzeXNsb2ctcHRlc3QKK1ZBTEdSSU5EID0gInZhbGdyaW5kIgorVkFMR1JJTkRfbWlwcyA9ICIiCitWQUxHUklORF9taXBzNjQgPSAiIgorVkFMR1JJTkRfbWlwczY0bjMyID0gIiIKK1ZBTEdSSU5EX2FybSA9ICIiCitWQUxHUklORF9hYXJjaDY0ID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGRpZmZ1dGlscyBnemlwIGJhc2ggZ2F3ayBjb3JldXRpbHMgcHJvY3BzIgorUlJFQ09NTUVORFNfJHtQTn0tcHRlc3QgKz0gIiR7VENMSUJDfS1kYmcgJHtWQUxHUklORH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNjL3NibGltLXNmY2MvMDAwMS1jaW14bWwtSW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Mvc2JsaW0tc2ZjYy8wMDAxLWNpbXhtbC1JbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3ItZmRfc2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZTUwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNjL3NibGltLXNmY2MvMDAwMS1jaW14bWwtSW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDk5ODE1NDJjYjQ0M2NkYWY5MTM0NTAwYjc4ZmU3ZWRhOWY5OTg2MWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDIxOjQzOjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNpbXhtbDogSW5jbHVkZSBzeXMvc2VsZWN0LmggZm9yIGZkX3NldAorCitkZWZpbmUgX19TT0NLQUREUl9BUkcgb24gbGludXggd2hlbiBsaWJjICE9IGdsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworIGJhY2tlbmQvY2lteG1sL2luZGljYXRpb25saXN0ZW5lci5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kL2NpbXhtbC9pbmRpY2F0aW9ubGlzdGVuZXIuYyBiL2JhY2tlbmQvY2lteG1sL2luZGljYXRpb25saXN0ZW5lci5jCitpbmRleCAwZDdkOWZlLi4zN2M0NWFlIDEwMDc1NQorLS0tIGEvYmFja2VuZC9jaW14bWwvaW5kaWNhdGlvbmxpc3RlbmVyLmMKKysrKyBiL2JhY2tlbmQvY2lteG1sL2luZGljYXRpb25saXN0ZW5lci5jCitAQCAtMjUsNiArMjUsNyBAQAorIAorICNpbmNsdWRlIDxwdGhyZWFkLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CitAQCAtMzYsNyArMzcsNyBAQCBzdGF0aWMgaW50IGRvX2xpc3Rlbj0xOworICNkZWZpbmUgaGRyQnVmc2l6ZSA1MDAwCisgI2RlZmluZSBoZHJMaW1taXQgNTAwMAorIAorLSNpZmRlZiBfX0FQUExFX18KKysjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKSkKKyAjIGRlZmluZSBfX1NPQ0tBRERSX0FSRyAgIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdAorICNlbmRpZgorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYy9zYmxpbS1zZmNjXzIuMi44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYy9zYmxpbS1zZmNjXzIuMi44LmJiCmluZGV4IDFlYzk5NDAuLmRmNTVhNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Mvc2JsaW0tc2ZjY18yLjIuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNjL3NibGltLXNmY2NfMi4yLjguYmIKQEAgLTIsNyArMiw5IEBACiBERVNDUklQVElPTiA9ICJTbWFsbCBGb290cHJpbnQgQ0lNIENsaWVudCBMaWJyYXJ5IFJ1bnRpbWUgTGlicmFyaWVzIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zYmxpbS5vcmciCiAKLVNSQ19VUkkgPSAiaHR0cDovL25ldGNvbG9nbmUuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2JsaW0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICJodHRwOi8vbmV0Y29sb2duZS5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zYmxpbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jaW14bWwtSW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjBiYWMwZGVjMTlmMTdlYzA2NWI2YzMzMmE1NmQ3YmFlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiOGYxODc1ODNiYzZjNmIwYTYzYWFlMDE2NWNhMzc4OTJhMmEzYmQ0YmIwNjgyY2Q3NmI1NjI2OGI0MmMzZDYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzL21kYWRtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy9tZGFkbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWRkYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy9tZGFkbS5wYXRjaApAQCAtMCwwICsxLDEzIEBACistLS0gbWRhZG0uZC9tZGFkbS0xLjMuMC9tZGFkbS5oLm9yZwkyMDE3LTA2LTIwIDAwOjM1OjU1LjM2Njk3ODM3MiAtMDcwMAorKysrIG1kYWRtLmQvbWRhZG0tMS4zLjAvbWRhZG0uaAkyMDE3LTA2LTIwIDAwOjM2OjQxLjI0NDM2MzM0OCAtMDcwMAorQEAgLTI5LDggKzI5LDkgQEAKKyAKKyAjZGVmaW5lCV9fVVNFX0xBUkdFRklMRTY0CisgI2luY2x1ZGUJPHVuaXN0ZC5oPgorLWV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCBfX1AgKChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpKTsKKysvL2V4dGVybiBfX29mZjY0X3QgbHNlZWs2NCBfX1AgKChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpKTsKKyAKKysjaW5jbHVkZQk8c3lzL3N5c21hY3Jvcy5oPgorICNpbmNsdWRlCTxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZQk8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZQk8c3RkbGliLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzL3ByaW50LWZvcm1hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHMvcHJpbnQtZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODE3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzL3ByaW50LWZvcm1hdC5wYXRjaApAQCAtMCwwICsxLDIxOCBAQAorSW5kZXg6IHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2djb21tb24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNjc2lyYXN0b29scy0xLjYuNi5vcmlnL3NyYy9zZ2NvbW1vbi5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ2NvbW1vbi5jCitAQCAtMzA0LDggKzMwNCw4IEBAIHZvaWQgc2hvd2l0KGNoYXIgKmJ1ZikKKyAJICAgIGZkbG9nID0gc3RkZXJyOworIAl9CisgICAgIH0KKy0gICAgaWYgKGZsb2dvcGVuKSBmcHJpbnRmKGZkbG9nLCBidWYpOwkvKndyaXRlIHRvIGxvZyAqLworLSAgICBmcHJpbnRmKGZkbXNnLCBidWYpOwkvKmRlZmF1bHRzIHRvIHN0ZG91dCAqLworKyAgICBpZiAoZmxvZ29wZW4pIGZwcmludGYoZmRsb2csICIlcyIsIGJ1Zik7CS8qd3JpdGUgdG8gbG9nICovCisrICAgIGZwcmludGYoZmRtc2csICIlcyIsIGJ1Zik7CS8qZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgfQorIAorIHZvaWQgc2hvd2xvZyhjb25zdCBjaGFyICogZm9ybWF0LCAuLi4pIAorSW5kZXg6IHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dkZWZlY3RzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3NpcmFzdG9vbHMtMS42LjYub3JpZy9zcmMvc2dkZWZlY3RzLmMKKysrKyBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGVmZWN0cy5jCitAQCAtMjI2LDcgKzIyNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJICAgICgiICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworIAlpZiAoZmxvZ29wZW4pCisgCSAgICBwcmludGYoIkxvZyBmaWxlICVzIGlzIG9wZW5cbiIsIGxvZ2ZpbGUpOworLQlwcmludGYoSGVhZGVyU3RyKTsKKysJcHJpbnRmKCIlcyIsIEhlYWRlclN0cik7CisgCS8qIGdldCBTQ1NJIERldmljZSBJbmZvICovCisgCWlkZXYgPSAwOworIAlmbGFncyA9IE9fUkRXUjsJCS8qIGNvdWxkIHVzZSBPUEVOX0ZMQUcgaWYgcmVhZC1vbmx5LiAqLworSW5kZXg6IHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dkaWFnLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3NpcmFzdG9vbHMtMS42LjYub3JpZy9zcmMvc2dkaWFnLmMKKysrKyBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGlhZy5jCitAQCAtMjUwLDcgKzI1MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJICAgcHJpbnRmKCIgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisgCSAgIGlmIChmbG9nb3BlbikKKyAJICAgICAgIHByaW50ZigiTG9nIGZpbGUgJXMgaXMgb3BlbiwgZGVidWc9JWRcbiIsIGxvZ2ZpbGUsZmRlYnVnKTsKKy0JICAgcHJpbnRmKEhlYWRlclN0cik7CisrCSAgIHByaW50ZigiJXMiLCBIZWFkZXJTdHIpOworIAl9CisgCS8qIGdldCBTQ1NJIERldmljZSBJbmZvICovCisgCWlkZXYgPSAwOworQEAgLTM1NiwxMiArMzU2LDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJY2FzZSAnRic6CisgCWNhc2UgJ2YnOgorIAkgICAgZnVuYyA9ICdmJzsKKy0JICAgIHByaW50ZihlcmFzZV9tc2cpOworKwkgICAgcHJpbnRmKCIlcyIsIGVyYXNlX21zZyk7CisgCSAgICBicmVhazsKKyAJY2FzZSAnVyc6CisgCWNhc2UgJ3cnOgorIAkgICAgZnVuYyA9ICd3JzsKKy0JICAgIHByaW50ZihlcmFzZV9tc2cpOworKwkgICAgcHJpbnRmKCIlcyIsIGVyYXNlX21zZyk7CisgCSAgICBicmVhazsKKyAJY2FzZSAnUyc6CisgCWNhc2UgJ3MnOgorSW5kZXg6IHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dkaXNrbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3NpcmFzdG9vbHMtMS42LjYub3JpZy9zcmMvc2dkaXNrbW9uLmMKKysrKyBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGlza21vbi5jCitAQCAtMTk3LDkgKzE5Nyw5IEBAIHZvaWQgc2hvd2l0KGNoYXIgKmJ1ZikKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBpZiAoZmxvZ29wZW4pCistICAgICAgICBmcHJpbnRmKGZkbG9nLCBidWYpOyAgICAvKndyaXRlIHRvIGxvZyAqLworKyAgICAgICAgZnByaW50ZihmZGxvZywgIiVzIiwgYnVmKTsgICAgLyp3cml0ZSB0byBsb2cgKi8KKyAgICAgaWYgKCFiYWNrZ3JvdW5kKQorLSAgICAgICAgZnByaW50ZihmZG1zZywgYnVmKTsgICAgLyptZXNzYWdlIGRpc3BsYXkgZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisrICAgICAgICBmcHJpbnRmKGZkbXNnLCAiJXMiLCAgYnVmKTsgICAgLyptZXNzYWdlIGRpc3BsYXkgZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgfQorIAorIC8qCitAQCAtMjM1LDcgKzIzNSw3IEBAIHJlbV9zY3NpX2RldihpbnQgYnVzLCBpbnQgY2gsIGludCBpZCwgaW4KKyAJZnAgPSBmb3BlbigiL3Byb2Mvc2NzaS9zY3NpIiwicisiKTsKKyAJaWYgKGZwID09IE5VTEwpIHJldHVybihlcnJubyk7IAorIAlzcHJpbnRmKGNtZCwicmVtb3ZlLXNpbmdsZS1kZXZpY2UgJWQgJWQgJWQgJWQiLGJ1cyxjaCxpZCxsdW4pOworLQluID0gZnByaW50ZihmcCxjbWQpOworKwluID0gZnByaW50ZihmcCwiJXMiLCBjbWQpOworIAlmY2xvc2UoZnApOworIAlzdHJjYXQoY21kLCJcbiIpOworIAlzaG93aXQoY21kKTsKK0BAIC0yNTYsNyArMjU2LDcgQEAgYWRkX3Njc2lfZGV2KGludCBidXMsIGludCBjaCwgaW50IGlkLCBpbgorIAlmcCA9IGZvcGVuKCIvcHJvYy9zY3NpL3Njc2kiLCJyKyIpOworIAlpZiAoZnAgPT0gTlVMTCkgcmV0dXJuKGVycm5vKTsgCisgCXNwcmludGYoY21kLCJhZGQtc2luZ2xlLWRldmljZSAlZCAlZCAlZCAlZCIsYnVzLGNoLGlkLGx1bik7CistCW4gPSBmcHJpbnRmKGZwLGNtZCk7CisrCW4gPSBmcHJpbnRmKGZwLCAiJXMiLCBjbWQpOworIAlmY2xvc2UoZnApOworIAlzdHJjYXQoY21kLCJcbiIpOworIAlzaG93aXQoY21kKTsKK0BAIC0xMjMzLDcgKzEyMzMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICBpbnRlcnZhbCA9IGF0b2kob3B0YXJnKTsKKyAgICAgICAgICAgICBicmVhazsKKyAJZGVmYXVsdDoKKy0gICAgICAgICAgICBwcmludGYob3V0cHV0Mik7ICAgIC8qcHJvZyBoZWFkZXIqLworKyAgICAgICAgICAgIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgICAgLypwcm9nIGhlYWRlciovCisgICAgICAgICAgICAgcHJpbnRmKCJVc2FnZTogJXMgWy1iZW1ucnggLXQgdGltZV1cbiIscHJvZ25hbWUpOworIAkgICAgcHJpbnRmKCIgLWIgIFJ1biBpbiBCYWNrZ3JvdW5kIGFzIGEgZGFlbW9uXG4iKTsKKyAJICAgIHByaW50ZigiIC1lICBEbyBub3Qgd3JpdGUgdG8gYW55IGZpbGVzLlxuIik7CitAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgZXhpdCgxKTsgCisgCX0KKyAgICB9CistICAgaWYgKCFiYWNrZ3JvdW5kKSBwcmludGYob3V0cHV0Mik7ICAvKnByb2cgaGVhZGVyKi8KKysgICBpZiAoIWJhY2tncm91bmQpIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgIC8qcHJvZyBoZWFkZXIqLworIAorICAgIC8qIG9ubHkgcnVuIHRoaXMgYXMgc3VwZXJ1c2VyICovCisgICAgaSA9IGdldGV1aWQoKTsKK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnbW9kZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3NnbW9kZS5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ21vZGUuYworQEAgLTMwMyw3ICszMDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSAgICAoIiAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKKyAJaWYgKGZsb2dvcGVuKQorIAkgICAgcHJpbnRmKCJMb2cgZmlsZSAlcyBpcyBvcGVuXG4iLCBsb2dmaWxlKTsKKy0JcHJpbnRmKEhlYWRlclN0cik7CisrCXByaW50ZigiJXMiLCBIZWFkZXJTdHIpOworIAkvKiBnZXQgU0NTSSBEZXZpY2UgSW5mbyAqLworIAlpZGV2ID0gMDsKKyAJZmxhZ3MgPSBPX1JEV1I7CQkvKiBjb3VsZCB1c2UgT1BFTl9GTEFHIGlmIHJlYWQtb25seS4gKi8KK0BAIC01ODUsOCArNTg1LDggQEAgaW50IGRvX21vZGVzZWxlY3QoaW50IGlkeCkKKyAJICAgIGlmICghZm92ZXJ3cml0ZSkgeworIAkJLyogdXNlIGV4aXN0aW5nIGNhcGFjaXR5IGZyb20gbW9kZSBzZW5zZSAqLworIAkJbWVtY3B5KHNlbF9idWZmZXIgKyA0LCBvdXRfYnVmZmVyICsgNCwgOCk7CistCQlzcHJpbnRmKHNjcmF0Y2gsICJVc2luZyBleGlzdGluZyBjYXBhY2l0eSBpbnN0ZWFkXG4iKTsKKy0JCXByaW50ZihzY3JhdGNoKTsKKysJCXNwcmludGYoc2NyYXRjaCwgIiVzIiwgIlVzaW5nIGV4aXN0aW5nIGNhcGFjaXR5IGluc3RlYWRcbiIpOworKwkJcHJpbnRmKCIlcyIsc2NyYXRjaCk7CisgCQlzaG93bG9nKCBzY3JhdGNoKTsKKyAJICAgIH0gZWxzZSB7ICAvKiBmb3ZlcndyaXRlPT0xLCBjaGFuZ2luZyBzb21ldGhpbmcgKi8KKyAJCS8qIHVzdWFsbHkgb25seSBjaGFuZ2UgbnVtIGJsa3MsIGlmIGNoYW5nZSBibGsgc2l6ZSwgZmxhZyBpdC4gKi8KK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NncmFpZG1vbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3NncmFpZG1vbi5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ3JhaWRtb24uYworQEAgLTI2OSw5ICsyNjksOSBAQCB2b2lkIHNob3dpdChjaGFyICpidWYpCisgICAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKGZsb2dvcGVuKQorLSAgICAgICAgZnByaW50ZihmZGxvZywgYnVmKTsgICAgLyp3cml0ZSB0byBsb2cgKi8KKysgICAgICAgIGZwcmludGYoZmRsb2csICIlcyIsIGJ1Zik7ICAgIC8qd3JpdGUgdG8gbG9nICovCisgICAgIGlmICghYmFja2dyb3VuZCkKKy0gICAgICAgIGZwcmludGYoZmRtc2csIGJ1Zik7ICAgIC8qbWVzc2FnZSBkaXNwbGF5IGRlZmF1bHRzIHRvIHN0ZG91dCAqLworKyAgICAgICAgZnByaW50ZihmZG1zZywgIiVzIiwgYnVmKTsgICAgLyptZXNzYWdlIGRpc3BsYXkgZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgfQorIAorIC8qCitAQCAtNTYzLDcgKzU2Myw3IEBAIGFkZF9zY3NpX2RldihpbnQgYnVzLCBpbnQgY2gsIGludCBpZCwgaW4KKyAJZnAgPSBmb3BlbigiL3Byb2Mvc2NzaS9zY3NpIiwicisiKTsKKyAJaWYgKGZwID09IE5VTEwpIHJldHVybihlcnJubyk7IAorIAlzcHJpbnRmKGNtZCwiYWRkLXNpbmdsZS1kZXZpY2UgJWQgJWQgJWQgJWQiLGJ1cyxjaCxpZCxsdW4pOworLQlmcHJpbnRmKGZwLGNtZCk7CisrCWZwcmludGYoZnAsICIlcyIsIGNtZCk7CisgCWZjbG9zZShmcCk7CisgCXN0cmNhdChjbWQsIlxuIik7CisgCXNob3dpdChjbWQpOworQEAgLTE1ODUsNyArMTU4NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGludGVydmFsID0gYXRvaShvcHRhcmcpOworICAgICAgICAgICAgIGJyZWFrOworIAlkZWZhdWx0OgorLSAgICAgICAgICAgIHByaW50ZihvdXRwdXQyKTsgICAgLypwcm9nIGhlYWRlciovCisrICAgICAgICAgICAgcHJpbnRmKCIlcyIsIG91dHB1dDIpOyAgICAvKnByb2cgaGVhZGVyKi8KKyAgICAgICAgICAgICBwcmludGYoIlVzYWdlOiAlcyBbLWJlbW5yeCAtdCB0aW1lXVxuIixwcm9nbmFtZSk7CisgCSAgICBwcmludGYoIiAtYiAgUnVuIGluIEJhY2tncm91bmQgYXMgYSBkYWVtb25cbiIpOworIAkgICAgcHJpbnRmKCIgLWUgIERvIG5vdCB3cml0ZSB0byBhbnkgZmlsZXMuXG4iKTsKK0BAIC0xNTk4LDcgKzE1OTgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICBleGl0KDEpOyAKKyAJfQorICAgIH0KKy0gICBpZiAoIWJhY2tncm91bmQpIHByaW50ZihvdXRwdXQyKTsgIC8qcHJvZyBoZWFkZXIqLworKyAgIGlmICghYmFja2dyb3VuZCkgcHJpbnRmKCIlcyIsIG91dHB1dDIpOyAgLypwcm9nIGhlYWRlciovCisgCisgICAgLyogb25seSBydW4gdGhpcyBhcyBzdXBlcnVzZXIgKi8KKyAgICBpID0gZ2V0ZXVpZCgpOworSW5kZXg6IHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dzYWZ0ZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3Nnc2FmdGUuYworKysrIHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dzYWZ0ZS5jCitAQCAtMTc0LDkgKzE3NCw5IEBAIHZvaWQgc2hvd2l0KGNoYXIgKmJ1ZikKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBpZiAoZmxvZ29wZW4pCistICAgICAgICBmcHJpbnRmKGZkbG9nLCBidWYpOyAgICAvKndyaXRlIHRvIGxvZyAqLworKyAgICAgICAgZnByaW50ZihmZGxvZywgIiVzIiwgYnVmKTsgICAgLyp3cml0ZSB0byBsb2cgKi8KKyAgICAgaWYgKCFiYWNrZ3JvdW5kKQorLSAgICAgICAgZnByaW50ZihmZG1zZywgYnVmKTsgICAgLyptZXNzYWdlIGRpc3BsYXkgZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisrICAgICAgICBmcHJpbnRmKGZkbXNnLCAiJXMiLCBidWYpOyAgICAvKm1lc3NhZ2UgZGlzcGxheSBkZWZhdWx0cyB0byBzdGRvdXQgKi8KKyB9CisgIAorIC8qCitAQCAtMzg0LDcgKzM4NCw3IEBAIGFkZF9zY3NpX2RldihpbnQgYnVzLCBpbnQgY2gsIGludCBpZCwgaW4KKyAJZnAgPSBmb3BlbigiL3Byb2Mvc2NzaS9zY3NpIiwicisiKTsKKyAJaWYgKGZwID09IE5VTEwpIHJldHVybihlcnJubyk7IAorIAlzcHJpbnRmKGNtZCwiYWRkLXNpbmdsZS1kZXZpY2UgJWQgJWQgJWQgJWQiLGJ1cyxjaCxpZCxsdW4pOworLQlmcHJpbnRmKGZwLGNtZCk7CisrCWZwcmludGYoZnAsICIlcyIsIGNtZCk7CisgCWZjbG9zZShmcCk7CisgCXN0cmNhdChjbWQsIlxuIik7CisgCXNob3dpdChjbWQpOworQEAgLTEyNjEsNyArMTI2MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGRvX251bWVyaWMgPSAwOworICAgICAgICAgICAgIGJyZWFrOyAKKyAJZGVmYXVsdDoKKy0gICAgICAgICAgICBwcmludGYob3V0cHV0Mik7ICAgIC8qcHJvZyBoZWFkZXIqLworKyAgICAgICAgICAgIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgICAgLypwcm9nIGhlYWRlciovCisgICAgICAgICAgICAgcHJpbnRmKCJVc2FnZTogJXMgWy1kIG51bSAtcmYgLWVtbnhdXG4iLHByb2duYW1lKTsKKyAJICAgIHByaW50ZigiIC1kICBkcml2ZSBudW1iZXIgdG8gc2V0ICgwLCAxLCAuLi4pXG4iKTsKKyAJICAgIHByaW50ZigiIC1yICBzZXQgU0FGLVRFIHN0YXR1cyB0byByZWFkeVxuIik7CitAQCAtMTI3Myw3ICsxMjczLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgZXhpdCgxKTsgCisgCX0KKyAgICB9CistICAgaWYgKCFiYWNrZ3JvdW5kKSBwcmludGYob3V0cHV0Mik7ICAvKnByb2cgaGVhZGVyKi8KKysgICBpZiAoIWJhY2tncm91bmQpIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgIC8qcHJvZyBoZWFkZXIqLworIAorICAgIGlmIChzZXR2YWwgIT0gMCAmJiBkcml2ZW51bSA9PSAtMSkgZHJpdmVudW0gPSAwOyAgLypkZWZhdWx0IHRvIGZpcnN0IGRyaXZlKi8KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHNfMS42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGMzNmU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHNfMS42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFNDU2kgdG9vbHMgdG8gc2VydmljZSBtYWludGFpbiBkaXNrIHN0b3JhZ2UgZGV2aWNlcyIKLURFU0NSSVBUSU9OID0gInNjc2lyYXN0b29scyB3ZXJlIGRlc2lnbmVkIHRvIGFkZCB0byB0aGUgU2VydmljZWFiaWxpdHkgb2YgXAotICAgICAgICAgICAgICAgU0NTSSBkZXZpY2VzIHVuZGVyIExpbnV4IHNvIHRoYXQgdGhlIHN5c3RlbSBkb2VzIG5vdCBoYXZlIFwKLSAgICAgICAgICAgICAgIHRvIGJlIHJlYm9vdGVkIG9yIHRha2VuIG91dCBvZiBzZXJ2aWNlIHRvIHBlcmZvcm0gY29tbW9uIFwKLSAgICAgICAgICAgICAgIG1haW50ZW5hbmNlIG9yIHNlcnZpY2UgZnVuY3Rpb25zLiBJdCBoYW5kbGVzIFNDU0ksIFwKLSAgICAgICAgICAgICAgIExpbnV4IFNXIFJBSUQsIFNBUywgU0FUQSwgYW5kIFVTQiBkZXZpY2VzIHZpYSBTQ1NJIGVtdWxhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2NzaXJhc3Rvb2xzLnNvdXJjZWZvcmdlLm5ldC8iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY4N2VhMTA4NDc4ZDI2MTUyYWU0NmViMjlkOWQxNTQ1IgotCi1ERVBFTkRTICs9ICJncm9mZi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDc3NTExMWI2MmUyZGZjMTk2MGE3MjJmNWZkYTIxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzOGQyYzZjOWIwNGEyYzU5NGU1Mjg5MjdiOTUwNzU0Zjk0YzA1MjI3MThkMTdjNzhlNjU4OWJhNzc4MzM5YmY4IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZAotCi0jIG1kYWRtIE1ha2VmaWxlIGhhcyBDQyBzZXQgdG8gZ2NjLCBoZW5jZSBvdmVycmlkZSBDQyB0byAke0NDfQotRVhUUkFfT0VNQUtFICs9ICJDQz0nJHtDQ30nIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LWRpc2ttb24gJHtQTn0tcmFpZG1vbiIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1kaXNrbW9uID0gInNnZGlzayIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWRpc2ttb24gPSAiZGVmYXVsdHMgODAgMjAiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tcmFpZG1vbiA9ICJzZ3JhaWQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1yYWlkbW9uID0gImRlZmF1bHRzIDgwIDIwIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZGlza21vbiAke1BOfS1kaXNrbW9uLWRiZyIKLVBBQ0tBR0VTID0rICIke1BOfS1yYWlkbW9uICR7UE59LXJhaWRtb24tZGJnIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc2hhcmUvc2NzaXJhc3Rvb2xzLy5kZWJ1ZyIKLQotRklMRVNfJHtQTn0tZGlza21vbiA9ICIke3NiaW5kaXJ9L3NnZGlza21vbiAke3N5c2NvbmZkaXJ9L2luaXQuZC9zZ2Rpc2siCi1GSUxFU18ke1BOfS1kaXNrbW9uLWRiZyA9ICIke3NiaW5kaXJ9Ly5kZWJ1Zy9zZ2Rpc2ttb24iCi0KLUZJTEVTXyR7UE59LXJhaWRtb24gPSAiJHtzYmluZGlyfS9zZ3JhaWRtb24gJHtzeXNjb25mZGlyfS9pbml0LmQvc2dyYWlkIgotRklMRVNfJHtQTn0tcmFpZG1vbi1kYmcgPSAiJHtzYmluZGlyfS8uZGVidWcvc2dyYWlkbW9uIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LWRpc2ttb24gKz0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tcmFpZG1vbiArPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29sc18xLjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjAyZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29sc18xLjYuNi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkxpbnV4IFNDU2kgdG9vbHMgdG8gc2VydmljZSBtYWludGFpbiBkaXNrIHN0b3JhZ2UgZGV2aWNlcyIKK0RFU0NSSVBUSU9OID0gInNjc2lyYXN0b29scyB3ZXJlIGRlc2lnbmVkIHRvIGFkZCB0byB0aGUgU2VydmljZWFiaWxpdHkgb2YgXAorICAgICAgICAgICAgICAgU0NTSSBkZXZpY2VzIHVuZGVyIExpbnV4IHNvIHRoYXQgdGhlIHN5c3RlbSBkb2VzIG5vdCBoYXZlIFwKKyAgICAgICAgICAgICAgIHRvIGJlIHJlYm9vdGVkIG9yIHRha2VuIG91dCBvZiBzZXJ2aWNlIHRvIHBlcmZvcm0gY29tbW9uIFwKKyAgICAgICAgICAgICAgIG1haW50ZW5hbmNlIG9yIHNlcnZpY2UgZnVuY3Rpb25zLiBJdCBoYW5kbGVzIFNDU0ksIFwKKyAgICAgICAgICAgICAgIExpbnV4IFNXIFJBSUQsIFNBUywgU0FUQSwgYW5kIFVTQiBkZXZpY2VzIHZpYSBTQ1NJIGVtdWxhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vc2NzaXJhc3Rvb2xzLnNvdXJjZWZvcmdlLm5ldC8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY4N2VhMTA4NDc4ZDI2MTUyYWU0NmViMjlkOWQxNTQ1IgorCitERVBFTkRTICs9ICJncm9mZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGFkbS5wYXRjaDthcHBseT1ubyBcCisgICAgICAgICAgIGZpbGU6Ly9wcmludC1mb3JtYXQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjYyNzFhNjFiMmNlNDBhYWYzM2VmNjE3NzUxNDhjZGExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3Yjk5N2U3NWRlY2IwNmE2NTBjNDJjMzVjZDYzZDBjOTRjMzRlMzljZjEzM2M3MjMzMzdiMGVlYWJiZmRmNmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kCisKKyMgbWRhZG0gTWFrZWZpbGUgaGFzIENDIHNldCB0byBnY2MsIGhlbmNlIG92ZXJyaWRlIENDIHRvICR7Q0N9CitFWFRSQV9PRU1BS0UgKz0gIkNDPScke0NDfSciCisKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIG1kYWRtLmQgbWRhZG0tMS4zLjAKKwlwYXRjaCAtcDAgPCAke1dPUktESVJ9L21kYWRtLnBhdGNoCit9CitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LWRpc2ttb24gJHtQTn0tcmFpZG1vbiIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1kaXNrbW9uID0gInNnZGlzayIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWRpc2ttb24gPSAiZGVmYXVsdHMgODAgMjAiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tcmFpZG1vbiA9ICJzZ3JhaWQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1yYWlkbW9uID0gImRlZmF1bHRzIDgwIDIwIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZGlza21vbiAke1BOfS1kaXNrbW9uLWRiZyIKK1BBQ0tBR0VTID0rICIke1BOfS1yYWlkbW9uICR7UE59LXJhaWRtb24tZGJnIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc2hhcmUvc2NzaXJhc3Rvb2xzLy5kZWJ1ZyIKKworRklMRVNfJHtQTn0tZGlza21vbiA9ICIke3NiaW5kaXJ9L3NnZGlza21vbiAke3N5c2NvbmZkaXJ9L2luaXQuZC9zZ2Rpc2siCitGSUxFU18ke1BOfS1kaXNrbW9uLWRiZyA9ICIke3NiaW5kaXJ9Ly5kZWJ1Zy9zZ2Rpc2ttb24iCisKK0ZJTEVTXyR7UE59LXJhaWRtb24gPSAiJHtzYmluZGlyfS9zZ3JhaWRtb24gJHtzeXNjb25mZGlyfS9pbml0LmQvc2dyYWlkIgorRklMRVNfJHtQTn0tcmFpZG1vbi1kYmcgPSAiJHtzYmluZGlyfS8uZGVidWcvc2dyYWlkbW9uIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LWRpc2ttb24gKz0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tcmFpZG1vbiArPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zZ3Bpby9zZ3Bpb18xLjIuMC4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NncGlvL3NncGlvXzEuMi4wLjEwLmJiCmluZGV4IGVlN2JjZGEuLjYzZThkMzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NncGlvL3NncGlvXzEuMi4wLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NncGlvL3NncGlvXzEuMi4wLjEwLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTR1BJTyBjYXB0aXZlIGJhY2twbGFuZSB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9sdm0yL3dpa2kvRE1SQUlEX0V2ZW50aW5nIgogREVTQ1JJUFRJT04gPSAiSW50ZWwgU0dQSU8gZW5jbG9zdXJlIG1hbmFnZW1lbnQgdXRpbGl0eSIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3MvJHtCUE59LyR7QlBOfS0xLjItMC4xMC1zcmMudGFyLmd6L2E0MTdiZjY4ZGE0ZTliZDc5YTQ2NjRjMTFkN2RlYmQxLyR7QlBOfS0xLjItMC4xMC1zcmMudGFyLmd6IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIKaW5kZXggOTMxZTMzMi4uYTJkNjJjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIKQEAgLTYsNyArNiw3IEBACiBERVBFTkRTID0gImxpYnNvY2tldGNhbiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LWNhbi8ke0JQTn0uZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9bWFzdGVyIgotU1JDUkVWID0gIjY3YTJiZGNkMzM2ZTZiZWNmYTU3ODQ3NDJlMThjODhkYmVkZGM5NzMiCitTUkNSRVYgPSAiNGM4ZmIwNWNiNGQ2ZGRjZDY3Mjk5MDA4ZGI1NGFmNDIzZjg2ZmQwNSIKIAogUFYgPSAiMC4wK2dpdHIke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3Vic3VyZmFjZS9zdWJzdXJmYWNlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N1YnN1cmZhY2Uvc3Vic3VyZmFjZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYWRhZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3Vic3VyZmFjZS9zdWJzdXJmYWNlX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiU3Vic3VyZmFjZSBpcyBhbiBvcGVuIHNvdXJjZSBkaXZlIGxvZyBwcm9ncmFtIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJsaWJkaXZlY29tcHV0ZXIgZ3RrKyBsaWJ4bWwyIGdsaWItMi4wIGdjb25mIgotCi1QTkJMQUNLTElTVFtzdWJzdXJmYWNlXSA/PSAiTmVlZHMgdG8gYmUgdXBncmFkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBuZXcgbGliZGl2ZWNvbXB1dGVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1pbmhlcml0IGd0ay1pY29uLWNhY2hlIGNtYWtlCi0KLWluaGVyaXQgZ2l0cGtndgotUEtHViA9ICIke0dJVFBLR1ZUQUd9IgotUFYgPSAiNC4yIgotCi1TUkNSRVYgPSAiZjYxZWUyMGJhMzU2ZWNmYzRjNWIyNDdmNTQ4ZjUyZDU4ODE3OWM5NCIKLVNSQ19VUkkgPSAiZ2l0Oi8vc3Vic3VyZmFjZS5ob2huZGVsLm9yZy9zdWJzdXJmYWNlLmdpdCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSNGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yL3NjYWxhYmxlL2FwcHMvc3Vic3VyZmFjZS5zdmciCi1SUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzX2dpdC5iYgppbmRleCBiNzE1N2I0Li43MjBhYTNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzX2dpdC5iYgpAQCAtMTcsNiArMTcsOCBAQAogCiBERVBFTkRTICs9ICJsaWJkYWVtb24iCiAKK1JERVBFTkRTXyR7UE59ID0gImlwcm91dGUyLXRpcGMiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vZmlsZXMvYWRzMXgxNS1maXhlZC1jYXNlLWxvZ2ljLWluLWdldFRocmVzaC1mdW5jdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjE3ZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBjNjRkMDRkMDg0ZjQ3YjRjYjNlMWNkZWU2ZTk2MzQ4ZmNjNmE3NTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWloYWkgVHVkb3IgUGFudSA8bWloYWkudHVkb3IucGFudUBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDMwIE1heSAyMDE3IDE1OjE0OjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBhZHMxeDE1OiBmaXhlZCBjYXNlIGxvZ2ljIGluIGdldFRocmVzaCgpIGZ1bmN0aW9uCisKK1NpZ25lZC1vZmYtYnk6IE1paGFpIFR1ZG9yIFBhbnUgPG1paGFpLnR1ZG9yLnBhbnVAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgW2M2NGQwNGQwODRmNDdiNGNiM2UxY2RlZTZlOTYzNDhmY2M2YTc1NmVdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKworLS0tCisgc3JjL2FkczF4MTUvYWRzMXgxNS5jeHggfCA0ICsrLS0KKyBzcmMvYWRzMXgxNS9hZHMxeDE1LmhwcCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9hZHMxeDE1L2FkczF4MTUuY3h4IGIvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHgKK2luZGV4IDM1NzgyNzA5Li40NzcwMWIyYSAxMDA2NDQKKy0tLSBhL3NyYy9hZHMxeDE1L2FkczF4MTUuY3h4CisrKysgYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmN4eAorQEAgLTExNiw3ICsxMTYsNyBAQCBBRFMxWDE1OjpzZXRDb250aW51b3VzKGJvb2wgbW9kZSl7CisgCisgZmxvYXQKKyBBRFMxWDE1OjpnZXRUaHJlc2goQURTVEhSRVNIIHJlZyl7CistICAgICBpZiggVEhSRVNIX0hJR0ggJiYgVEhSRVNIX0xPVykgcmV0dXJuIGdldExhc3RTYW1wbGUocmVnKTsKKysgICAgIGlmKHJlZyA9PSBUSFJFU0hfSElHSCB8fCByZWcgPT0gVEhSRVNIX0xPVykgcmV0dXJuIGdldExhc3RTYW1wbGUocmVnKTsKKyAgICAgIGVsc2UgcmV0dXJuIDAuMDsKKyB9CisgCitAQCAtMTM3LDcgKzEzNyw3IEBAIEFEUzFYMTU6OnNldFRocmVzaChBRFNUSFJFU0ggcmVnLCBmbG9hdCB2YWx1ZSl7CisgICAgICBjYXNlIDI6CisgICAgICBjYXNlIDM6CisgICAgICAgICAgIHNldF92YWx1ZSA9IHZhbHVlIC8gZ2V0TXVsdGlwbGllcigpOworLSAgICAgICAgIHNldF92YWx1ZSA9IHNldF92YWx1ZSA8PCBtX2JpdFNoaWZ0OworKyAgICAgICAgICBzZXRfdmFsdWUgPSBzZXRfdmFsdWUgPDwgbV9iaXRTaGlmdDsKKyAgICAgICAgICAgaWYoaTJjLT53cml0ZVdvcmRSZWcocmVnLCBzd2FwV29yZChzZXRfdmFsdWUpKSAhPSBtcmFhOjpTVUNDRVNTKXsKKyAgICAgICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3Ioc3RkOjpzdHJpbmcoX19GVU5DVElPTl9fKSArICI6IEkyYy53cml0ZSgpIGZhaWxlZCIpOworICAgICAgICAgICAgIHJldHVybjsKK2RpZmYgLS1naXQgYS9zcmMvYWRzMXgxNS9hZHMxeDE1LmhwcCBiL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwCitpbmRleCA3NTI0NTcyZC4uZWZkOGM4ZWMgMTAwNjQ0CistLS0gYS9zcmMvYWRzMXgxNS9hZHMxeDE1LmhwcAorKysrIGIvc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAKK0BAIC0zOTAsNyArMzkwLDcgQEAgbmFtZXNwYWNlIHVwbSB7CisgICAgICAgICAgICAgICogQHBhcmFtIHJlZyBBRFNUSFJFUyBlbnVtIHZhbHVlLgorICAgICAgICAgICAgICAqIFJldHVybnMgMC4wIHVubGVzcyBUSFJFU0hfSElHSCBvciBUSFJFU0hfTE9XIHJlcXVlc3RlZC4KKyAgICAgICAgICAgICAgKi8KKy0gICAgICAgICAgICBmbG9hdCBnZXRUaHJlc2goQURTVEhSRVNIIHJlZyA9IFRIUkVTSF9MT1cpOworKyAgICAgICAgICAgIGZsb2F0IGdldFRocmVzaChBRFNUSFJFU0ggcmVnID0gVEhSRVNIX0RFRkFVTFQpOworIAorICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAqIFNldHMgdGhyZXNob2xkIGxldmVscyBvciBjb25maWd1cmVzIGZvciBjb252ZXJzaW9uIHJlYWR5CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MDY1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gIlNlbnNvci9BY3R1YXRvciByZXBvc2l0b3J5IGZvciBNcmFhIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvdXBtIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY2NDkzZDU0ZTY1YmZjMTJjNzk4M2ZmMmU4ODRmMzdmIgorCitERVBFTkRTID0gImxpYmpwZWctdHVyYm8gbXJhYSIKKworU1JDUkVWID0gIjEwNmI2YzcwNjI2ODUyMmFiMDE2OGE0ZGRiMTllODljZTgzMmUwODQiCitQViA9ICIxLjMuMC1naXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorICAgIGZpbGU6Ly9hZHMxeDE1LWZpeGVkLWNhc2UtbG9naWMtaW4tZ2V0VGhyZXNoLWZ1bmN0aW9uLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBEZXBlbmRzIG9uIG1yYWEgd2hpY2ggb25seSBzdXBwb3J0cyB4ODYgYW5kIEFSTSBmb3Igbm93CitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgorCitpbmhlcml0IGRpc3R1dGlsczMtYmFzZSBjbWFrZQorCisKKyMgb3ZlcnJpZGUgdGhpcyBpbiBsb2NhbC5jb25mIHRvIGdldCBuZWVkZWQgYmluZGluZ3MuCisjIEJJTkRJTkdTX3BuLXVwbT0icHl0aG9uIgorIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCitCSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAorICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi1EQlVJTERTV0lHUFlUSE9OPU9OLCAtREJVSUxEU1dJR1BZVEhPTj1PRkYsIHN3aWctbmF0aXZlICR7UFlUSE9OX1BOfSwiCitQQUNLQUdFQ09ORklHW25vZGVqc10gPSAiLURCVUlMRFNXSUdOT0RFPU9OLCAtREJVSUxEU1dJR05PREU9T0ZGLCBzd2lnLW5hdGl2ZSBub2RlanMtbmF0aXZlLCIKKworRklMRVNfJHtQWVRIT05fUE59LSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorUkRFUEVORFNfJHtQWVRIT05fUE59LSR7UE59ICs9ICIke1BZVEhPTl9QTn0iCisKK0ZJTEVTX25vZGUtJHtQTn0gPSAiJHtwcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMvIgorUkRFUEVORFNfbm9kZS0ke1BOfSArPSAibm9kZWpzIgorCisjIyMgSW5jbHVkZSBkZXNpcmVkIGxhbmd1YWdlIGJpbmRpbmdzICMjIworUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCSU5ESU5HUycsICdub2RlanMnLCAnbm9kZS0ke1BOfScsICcnLCBkKX0iCitQQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0JJTkRJTkdTJywgJ3B5dGhvbicsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvZGlzYWJsZV92bG9ja3JjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvZGlzYWJsZV92bG9ja3JjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMGQwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy9kaXNhYmxlX3Zsb2NrcmMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCit3cml0dGVuIGJ5OiBKZWZmIFBvbGsgPGplZmYucG9sa0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IHZsb2NrLTIuMi4yL21hbi92bG9jay4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdmxvY2stMi4yLjIub3JpZy9tYW4vdmxvY2suMQkyMDEwLTA3LTI2IDE0OjEyOjQyLjAwMDAwMDAwMCAtMDQwMAorKysrIHZsb2NrLTIuMi4yL21hbi92bG9jay4xCTIwMTAtMDctMjYgMTQ6MTM6MDYuMDAwMDAwMDAwIC0wNDAwCitAQCAtMTExLDExICsxMTEsNiBAQAorIHRvIGFuIGludmFsaWQgdmFsdWUgb3IgMCBubyB0aW1lb3V0IGlzIHVzZWQuICBcZkJXYXJuaW5nXGZSOiBJZiB0aGlzIHZhbHVlIGlzCisgdG9vIGxvdywgeW91IG1heSBub3QgYmUgYWJsZSB0byB1bmxvY2sgeW91ciBzZXNzaW9uLgorIC5QUAorLS5TSCBGSUxFUworLS5CIH4vLnZsb2NrcmMKKy0uSVAKKy1UaGlzIGZpbGUgaXMgcmVhZCBieSBcZkJ2bG9ja1xmUiBvbiBzdGFydHVwIGlmIGl0IGV4aXN0cy4gIEFsbCB0aGUgdmFyaWFibGVzCistbWVudGlvbmVkIGFib3ZlIGNhbiBiZSBzZXQgaGVyZS4KKyAuU0ggU0VDVVJJVFkKKyBTZWUgdGhlIFNFQ1VSSVRZIGZpbGUgaW4gdGhlIFxmQnZsb2NrXGZSIGRpc3RyaWJ1dGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAuUFAKK0luZGV4OiB2bG9jay0yLjIuMi9zcmMvdmxvY2suc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB2bG9jay0yLjIuMi5vcmlnL3NyYy92bG9jay5zaAkyMDEwLTA3LTI2IDE0OjEyOjMyLjAwMDAwMDAwMCAtMDQwMAorKysrIHZsb2NrLTIuMi4yL3NyYy92bG9jay5zaAkyMDEwLTA3LTI2IDE0OjEzOjMzLjAwMDAwMDAwMCAtMDQwMAorQEAgLTM1LDExICszNSw2IEBACisgCisgJHtWTE9DS19FTlRFUl9QUk9NUFR9IgorIAorLSMgUmVhZCB1c2VyIHNldHRpbmdzLgorLWlmIFsgLXIgIiR7SE9NRX0vLnZsb2NrcmMiIF0gOyB0aGVuCistICAuICIke0hPTUV9Ly52bG9ja3JjIgorLWZpCistCisgIyAiQ29tcGlsZSIgdGltZSB2YXJpYWJsZXMuCisgVkxPQ0tfTUFJTj0iJVBSRUZJWCUvc2Jpbi92bG9jay1tYWluIgorIFZMT0NLX1ZFUlNJT049IiVWTE9DS19WRVJTSU9OJSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrLW5vX3RhbGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2stbm9fdGFsbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4YTZhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrLW5vX3RhbGx5LnBhdGNoCkBAIC0wLDAgKzEsMTA3IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKword3JpdHRlbiBieTogSmVmZiBQb2xrIDxqZWZmLnBvbGtAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEyNiw2ICsxMjYsMTAgQEAgaWZlcSAoJChBVVRIX01FVEhPRCksc2hhZG93KQorIHZsb2NrLW1haW4gOiBvdmVycmlkZSBMRExJQlMgKz0gJChDUllQVF9MSUIpCisgZW5kaWYKKyAKKytpZm5lcSAoJChFTkFCTEVfRkFJTF9DT1VOVCkseWVzKQorK3Zsb2NrLW1haW4ubyA6IG92ZXJyaWRlIENGTEFHUyArPSAtRE5PX0ZBSUxfQ09VTlQKKytlbmRpZgorKworIGlmZXEgKCQoRU5BQkxFX1BMVUdJTlMpLHllcykKKyB2bG9jay1tYWluOiBwbHVnaW5zLm8gcGx1Z2luLm8gbW9kdWxlLm8gcHJvY2Vzcy5vIHNjcmlwdC5vIHRzb3J0Lm8gbGlzdC5vCisgIyAtcmR5bmFtaWMgaXMgbmVlZGVkIHNvIHRoYXQgdGhlIGFsbCBwbHVnaW4gY2FuIGFjY2VzcyB0aGUgc3ltYm9scyBmcm9tIGNvbnNvbGVfc3dpdGNoLm8KKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNDQsNiArNDQsNyBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLXNoYWRvdyAgICAgICAgIGVuYWJsZSBzaGFkb3cgYXV0aGVudGljYXRpb24gW2Rpc2FibGVkXQorICAgLS1lbmFibGUtcm9vdC1wYXNzd29yZCAgZW5hYmxlIHVubG9nZ2luZyB3aXRoIHJvb3QgcGFzc3dvcmQgW2VuYWJsZWRdCisgICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBlbmFibGUgZGVidWdnaW5nCisrICAtLWVuYWJsZS1mYWlsLWNvdW50ICAgICBlbmFibGUgZmFpbGVkIGxvZ2luIGF0dGVtcHQgc3VtbWFyeSBbZW5hYmxlZF0KKyAKKyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb246CisgICAtLXdpdGgtc2NyaXB0cz1TQ1JJUFRTICBlbmFibGUgdGhlIG5hbWVkIHNjcmlwdHMgW10KK0BAIC03OCw2ICs3OSw5IEBAIGVuYWJsZV9mZWF0dXJlKCkgeworICAgICByb290LXBhc3N3b3JkKQorICAgICAgIEVOQUJMRV9ST09UX1BBU1NXT1JEPSIkMiIKKyAgICAgOzsKKysgICAgZmFpbC1jb3VudCkKKysgICAgICBFTkFCTEVfRkFJTF9DT1VOVD0iJDIiCisrICAgIDs7CisgICAgIHBhbXxzaGFkb3cpCisgICAgICAgaWYgWyAiJDIiID0gInllcyIgXSA7IHRoZW4KKyAgICAgICAgIGlmIFsgLW4gIiRhdXRoX21ldGhvZCIgXSAmJiBbICIkYXV0aF9tZXRob2QiICE9ICIkMSIgXSA7IHRoZW4KK0BAIC0yMzIsNiArMjMyLDcgQEAgc2V0X2RlZmF1bHRzKCkgeworICAgQVVUSF9NRVRIT0Q9InBhbSIKKyAgIEVOQUJMRV9ST09UX1BBU1NXT1JEPSJ5ZXMiCisgICBFTkFCTEVfUExVR0lOUz0ieWVzIgorKyAgRU5BQkxFX0ZBSUxfQ09VTlQ9InllcyIKKyAgIFNDUklQVFM9IiIKKyAKKyAgIFZMT0NLX0dST1VQPSJ2bG9jayIKK0BAIC0zNTYsMTAgKzM1NiwxNCBAQCBFTkFCTEVfUExVR0lOUyA9ICR7RU5BQkxFX1BMVUdJTlN9CisgIyB3aGljaCBwbHVnaW5zIHNob3VsZCBiZSBidWlsZAorIE1PRFVMRVMgPSAke01PRFVMRVN9CisgIyB3aGljaCBzY3JpcHRzIHNob3VsZCBiZSBpbnN0YWxsZWQKKyBTQ1JJUFRTID0gJHtTQ1JJUFRTfQorIAorKyMgZGlzcGxheSBhIHN1bW1hcnkgb2YgZmFpbGVkIGF1dGhlbnRpY2F0aW9uIGF0dGVtcHRzIGFmdGVyIHN1Y2Nlc3NmdWxseQorKyMgdW5sb2NraW5nPworK0VOQUJMRV9GQUlMX0NPVU5UID0gJHtFTkFCTEVfRkFJTF9DT1VOVH0KKysKKyAjIHJvb3QncyBncm91cAorIFJPT1RfR1JPVVAgPSAke1JPT1RfR1JPVVB9CisgCisgIyBncm91cCBmb3IgcHJpdmlsZWdlZCBwbHVnaW5zCisgVkxPQ0tfR1JPVVAgPSAke1ZMT0NLX0dST1VQfQorLS0tIGEvc3JjL3Zsb2NrLW1haW4uYworKysrIGIvc3JjL3Zsb2NrLW1haW4uYworQEAgLTExMSw3ICsxMTEsOSBAQCBzdGF0aWMgdm9pZCByZXN0b3JlX3Rlcm1pbmFsKHZvaWQpCisgICAodm9pZCkgdGNzZXRhdHRyKFNURElOX0ZJTEVOTywgVENTQU5PVywgJnRlcm0pOworIH0KKyAKKysjaWZkZWYgRU5BQkxFX0ZBSUxfQ09VTlQKKyBzdGF0aWMgaW50IGF1dGhfdHJpZXM7CisrI2VuZGlmIC8qIEVOQUJMRV9GQUlMX0NPVU5UICovCisgCisgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYW1lKQorIHsKK0BAIC0xODEsNyArMTgzLDkgQEAgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYQorICAgICB9CisgI2VuZGlmCisgCisrI2lmZGVmIEVOQUJMRV9GQUlMX0NPVU5UCisgICAgIGF1dGhfdHJpZXMrKzsKKysjZW5kaWYgLyogRU5BQkxFX0ZBSUxfQ09VTlQgKi8KKyAgIH0KKyAKKyAgIC8qIEZyZWUgdGltZW91dHMgbWVtb3J5LiAqLworQEAgLTE4OSwxMSArMTkzLDEzIEBAIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmEKKyAgIGZyZWUocHJvbXB0X3RpbWVvdXQpOworIH0KKyAKKysjaWZkZWYgRU5BQkxFX0ZBSUxfQ09VTlQKKyB2b2lkIGRpc3BsYXlfYXV0aF90cmllcyh2b2lkKQorIHsKKyAgIGlmIChhdXRoX3RyaWVzID4gMCkKKyAgICAgZnByaW50ZihzdGRlcnIsICIlZCBmYWlsZWQgYXV0aGVudGljYXRpb24gJXMuXG4iLCBhdXRoX3RyaWVzLCBhdXRoX3RyaWVzID4gMSA/ICJ0cmllcyIgOiAidHJ5Iik7CisgfQorKyNlbmRpZiAvKiBFTkFCTEVfRkFJTF9DT1VOVCAqLworIAorICNpZmRlZiBVU0VfUExVR0lOUworIHN0YXRpYyB2b2lkIGNhbGxfZW5kX2hvb2sodm9pZCkKK0BAIC0yMTYsNyArMjIyLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0IGFyZ3ZbXSkKKyAgIGlmICh1c2VybmFtZSA9PSBOVUxMKQorICAgICBmYXRhbF9wZXJyb3IoInZsb2NrOiBjb3VsZCBub3QgZ2V0IHVzZXJuYW1lIik7CisgCisrI2lmZGVmIEVOQUJMRV9GQUlMX0NPVU5UCisgICBlbnN1cmVfYXRleGl0KGRpc3BsYXlfYXV0aF90cmllcyk7CisrI2VuZGlmIC8qIEVOQUJMRV9GQUlMX0NPVU5UICovCisgCisgI2lmZGVmIFVTRV9QTFVHSU5TCisgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7IGkrKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTE5NjgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtCkBAIC0wLDAgKzEsMyBAQAorIyBVc2UgdGhlIGRlZmF1bHQgYXV0aCBhbmQgYWNjb3VudCBwb2xpY2llcyBmb3IgdmxvY2sKK2F1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCithY2NvdW50ICAgIGluY2x1ZGUgICAgICBjb21tb24tYWNjb3VudApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbV90YWxseTJfcmVzZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlMGFiYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbV90YWxseTJfcmVzZXQucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK3dyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitJbmRleDogdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB2bG9jay0yLjIuMi5vcmlnL3NyYy9hdXRoLXBhbS5jCTIwMTAtMDYtMTQgMTQ6Mzg6NTEuMDAwMDAwMDAwIC0wNDAwCisrKysgdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMJMjAxMC0wNi0xNCAxNDozOToxMi4wMDAwMDAwMDAgLTA0MDAKK0BAIC0xNDgsNiArMTQ4LDkgQEAKKyAKKyAgIGlmIChwYW1fc3RhdHVzICE9IFBBTV9TVUNDRVNTKSB7CisgICAgIGZwcmludGYoc3RkZXJyLCAidmxvY2s6ICVzXG4iLCBwYW1fc3RyZXJyb3IocGFtaCwgcGFtX3N0YXR1cykpOworKyAgfSBlbHNlIHsKKysgICAgcGFtX3N0YXR1cyA9IHBhbV9hY2N0X21nbXQocGFtaCwgMCk7CisrICAgIGlmIChwYW1fc3RhdHVzID09IFBBTV9TVUNDRVNTKSBwYW1fc2V0Y3JlZChwYW1oLCBQQU1fUkVJTklUSUFMSVpFX0NSRUQpOworICAgfQorIAorIGVuZDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrXzIuMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2tfMi4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5ZDNhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrXzIuMi4zLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCBDb25zb2xlIGxvY2sgcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIlNvbWV0aW1lcyBhIG1hbGljaW91cyBsb2NhbCB1c2VyIGNvdWxkIGNhdXNlIG1vcmUgcHJvYmxlbXMgXAorICB0aGFuIGEgc29waGlzdGljYXRlZCByZW1vdGUgb25lLiB2bG9jayBpcyBhIHByb2dyYW0gdGhhdCBsb2NrcyBvbmUgb3IgbW9yZSBcCisgIHNlc3Npb25zIG9uIHRoZSBMaW51eCBjb25zb2xlIHRvIHByZXZlbnQgYXR0YWNrZXJzIGZyb20gZ2FpbmluZyBwaHlzaWNhbCBcCisgIGFjY2VzcyB0byB0aGUgbWFjaGluZS4gXAorICAiCitTRUNUSU9OID0gInV0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTE3Y2IwYTg3M2QyNTI0NDBhY2ZkZjliM2QwZTdmYmYiCisKK1NSQ19VUkkgPSAiJHtHRU5UT09fTUlSUk9SfS8ke0JQfS50YXIuZ3ogXAorICAgICAgIGZpbGU6Ly9kaXNhYmxlX3Zsb2NrcmMucGF0Y2ggXAorICAgICAgIGZpbGU6Ly92bG9ja19wYW1fdGFsbHkyX3Jlc2V0LnBhdGNoIFwKKyAgICAgICBmaWxlOi8vdmxvY2stbm9fdGFsbHkucGF0Y2ggXAorICAgICAgIGZpbGU6Ly92bG9ja19wYW0gXAorICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3ODE3NWM3NjkyYThmMjg4ZTY1ZmQ0ZGJmOGEzOGViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1YWE1YWVkMWFlNDkzNTEzNzhhMGJkNTI3YTAxMzA3OGYwZjk2OTM3MmE2MzE2NGIxOTQ0MTc0YWUxYTVlMzkiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKKyMgYXV0aGVudGlmaWNhdGlvbiBtZXRob2Q6IGVpdGhlciBwYW0gb3Igc2hhZG93CitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnc2hhZG93JywgZCl9IgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwsbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbc2hhZG93XSA9ICItLWVuYWJsZS1zaGFkb3csLHNoYWRvdywiCisKK0NGTEFHUyArPSAiLVdhbGwgLVcgLXBlZGFudGljIC1zdGQ9Z251OTkiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgIyBUaGUgY29uZmlndXJlIHRyaWVzIHRvIHVzZSAnZ2V0ZW50JyB0byBnZXQgdGhlIGdyb3VwCisgICAgIyBpbmZvIGZyb20gdGhlIGhvc3QsIHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkLgorICAgIHNlZCAtaSAncy9cKFJPT1RfR1JPVVA9XCkuKi9cMSJyb290Ii8nICR7Q09ORklHVVJFX1NDUklQVH0KKworICAgICR7Q09ORklHVVJFX1NDUklQVH0gXAorICAgICAgICBWTE9DS19HUk9VUD1yb290IFwKKyAgICAgICAgUk9PVF9HUk9VUD1yb290IFwKKyAgICAgICAgQ0M9IiR7Q0N9IiBcCisgICAgICAgIENGTEFHUz0iJHtDRkxBR1N9IiBcCisgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30iIFwKKyAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgLS1tYW5kaXI9JHttYW5kaXJ9IFwKKyAgICAgICAgLS13aXRoLW1vZHVsZXM9ImFsbC5zbyBuZXcuc28gbm9zeXNycS5zbyB0dHlibGFuay5zbyB2ZXNhYmxhbmsuc28iIFwKKyAgICAgICAgLS1kaXNhYmxlLXJvb3QtcGFzc3dvcmQgLS1lbmFibGUtZGVidWcgLS1kaXNhYmxlLWZhaWwtY291bnQgXAorICAgICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpZiBbICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3llcycsICcnLCBkKX0gPSB5ZXMgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Zsb2NrX3BhbSAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC92bG9jaworICAgIGZpCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInZsb2NrIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdmxvY2tdID0gIiR7YmluZGlyfS92bG9jayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvZmlsZXMvMDAwMS1leHBsaWNpdGx5LXN1cHBvcnQtcHl0aG9uMy1ieS1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS9maWxlcy8wMDAxLWV4cGxpY2l0bHktc3VwcG9ydC1weXRob24zLWJ5LXBrZy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNlZGIxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvZmlsZXMvMDAwMS1leHBsaWNpdGx5LXN1cHBvcnQtcHl0aG9uMy1ieS1wa2ctY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMTg0MTVjMGI0YzZlNTBlZDliOTlkZmRhZThkMjEwNTkwZDBhYjcyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjggQXByIDIwMTcgMDQ6NTA6MzAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBzdXBwb3J0IHB5dGhvbjMgYnkgcGtnLWNvbmZpZworCitUaGUgUFlUSE9OX0NQUEZMQUdTIGFuZCAtbHB5dGhvbiQoUFlUSE9OX1ZFUlNJT04pIGlzIGhhcmRjb2RlZCwKK3VzZSBwa2ctY29uZmlnIHRvIHJlcGxhY2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3ci1pbnN0YWxsZXIgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtICB8IDUgKystLS0KKyBjb25maWd1cmUuYWMgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0NTY5YmJmLi43YThkYWY0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMjAsNyArMjAsNiBAQCBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAorIEFNX0NQUEZMQUdTID0gJChibGtpZF9DRkxBR1MpICQoZ2xpYl9DRkxBR1MpICQoR1BHTUVfQ0ZMQUdTKSBcCisgCSQobGliY3J5cHRzZXR1cF9DRkxBR1MpICQobnNzX0NGTEFHUykKKyBMT0NBTEVESVJfQ1BQRkxBR1MgPSAtRExPQ0FMRURJUj0nIiQobG9jYWxlZGlyKSInCistUFlUSE9OX0NQUEZMQUdTID0gLUkvdXNyL2luY2x1ZGUvcHl0aG9uJChQWVRIT05fVkVSU0lPTikKKyAKKyAjIyBUYXJnZXRzCisgU1VCRElSUyA9IHBvCitAQCAtNjMsOSArNjIsOSBAQCBsaWJfbGlidm9sdW1lX2tleV9sYV9MSUJBREQgPSAkKGJsa2lkX0xJQlMpICQoZ2xpYl9MSUJTKSAkKEdQR01FX0xJQlMpIFwKKyAJJChMVExJQklOVEwpICQobGliY3J5cHRzZXR1cF9MSUJTKSAkKG5zc19MSUJTKQorIAorIHB5dGhvbl9fdm9sdW1lX2tleV9sYV9TT1VSQ0VTID0gcHl0aG9uL3ZvbHVtZV9rZXlfd3JhcC5jCistcHl0aG9uX192b2x1bWVfa2V5X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChQWVRIT05fQ1BQRkxBR1MpCisrcHl0aG9uX192b2x1bWVfa2V5X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChweXRob24zX0NGTEFHUykKKyBweXRob25fX3ZvbHVtZV9rZXlfbGFfTERGTEFHUyA9IC1tb2R1bGUgLWF2b2lkLXZlcnNpb24gJChnbGliX0xJQlMpCistcHl0aG9uX192b2x1bWVfa2V5X2xhX0xJQkFERCA9IGxpYi9saWJ2b2x1bWVfa2V5LmxhIC1scHl0aG9uJChQWVRIT05fVkVSU0lPTikgXAorK3B5dGhvbl9fdm9sdW1lX2tleV9sYV9MSUJBREQgPSBsaWIvbGlidm9sdW1lX2tleS5sYSAkKHB5dGhvbjNfTElCUykgXAorIAkkKGdsaWJfTElCUykgJChuc3NfTElCUykKKyAKKyBzcmNfdm9sdW1lX2tleV9TT1VSQ0VTID0gc3JjL3ZvbHVtZV9rZXkuYworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZmYzNWRkMC4uMDkyOGE2YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjcsNiArMjcsOCBAQCBBTV9JTklUX0FVVE9NQUtFKFtuby1kaXN0LWd6aXAgZGlzdC14eiBuby1kZWZpbmUgc3ViZGlyLW9iamVjdHMgLVdhbGxdKQorIEFDX1BST0dfQ0MKKyBBTV9QUk9HX0NDX0NfTworIExUX0lOSVQoW2Rpc2FibGUtc3RhdGljXSkKKysKKytQS0dfQ0hFQ0tfTU9EVUxFUyhweXRob24zLCBbcHl0aG9uM10pCisgQU1fUEFUSF9QWVRIT04KKyAKKyBkbmwgTm90IGdwZzIsIGl0IGNhbm5vdCByZWNlaXZlIHBhc3NwaHJhc2VzIGZyb20gZ3BnbWUKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYmYzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92b2x1bWVfa2V5L3ZvbHVtZS1rZXlfMC4zLjkuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIHZvbHVtZV9rZXkgcHJvamVjdCBwcm92aWRlcyBhIGxpYnZvbHVtZV9rZXksIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIFwKK3N0b3JhZ2Ugdm9sdW1lIGVuY3J5cHRpb24ga2V5cyBhbmQgc3RvcmluZyB0aGVtIHNlcGFyYXRlbHkgZnJvbSB2b2x1bWVzLCBhbmQgYW4gXAorYXNzb2NpYXRlZCBjb21tYW5kLWxpbmUgdG9vbCwgbmFtZWQgdm9sdW1lX2tleS4iCitMSUNFTlNFID0gIkdQTHYyIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL3ZvbHVtZV9rZXkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy92b2x1bWVfa2V5L3ZvbHVtZV9rZXktJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZXhwbGljaXRseS1zdXBwb3J0LXB5dGhvbjMtYnktcGtnLWNvbmZpZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYTJkMTQ5MzExNzdjNjYwZTFmM2ViYmNmNWY0N2Q4ZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDUwYTU0ZmU5YmY1NmFjZWM2ODUwYzFlNzEzNzFkM2U0OTEzYzljYTFlZjBjZGMzYTUxN2I0YjY5MTA0MTJhNiIKKworU1JDTkFNRSA9ICJ2b2x1bWVfa2V5IgorUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgZ2V0dGV4dAorCitERVBFTkRTICs9ICIgXAorICAgIHV0aWwtbGludXggXAorICAgIGdsaWItMi4wIFwKKyAgICBjcnlwdHNldHVwIFwKKyAgICBuc3MgXAorICAgIGdwZ21lIFwKKyIKKworUkRFUEVORFNfcHl0aG9uMy0ke1BOfSArPSAiJHtQTn0iCisKK1BBQ0tBR0VTICs9ICJweXRob24zLSR7UE59IgorRklMRVNfcHl0aG9uMy0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2cvMDAwMS1ldmVudC5jLUNhc3QtcHRocmVhZF90LXRvLXVuc2lnbmVkLWxvbmctaW5zdGVhZC1vZi11LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nLzAwMDEtZXZlbnQuYy1DYXN0LXB0aHJlYWRfdC10by11bnNpZ25lZC1sb25nLWluc3RlYWQtb2YtdS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWE5ODkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nLzAwMDEtZXZlbnQuYy1DYXN0LXB0aHJlYWRfdC10by11bnNpZ25lZC1sb25nLWluc3RlYWQtb2YtdS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGI5N2Y2MmZkZjNiNzhlYjVjZmNiM2ExYjEyYzZmZDYyZjczNTcxN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwOToyOTozMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBldmVudC5jOiBDYXN0IHB0aHJlYWRfdCB0byB1bnNpZ25lZCBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQKKyBpbnQKKworT24gNjRiaXQgbWFjaGluZXMgaXQgZW5kcyB1cCBpbiBlcnJvcnMKKworZXZlbnQuYzo4NTo2NzogZXJyb3I6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUgWy1XZXJyb3I9cG9pbnRlci10by1pbnQtY2FzdF0KKyAgYV9ldmVudC0+dGlkX2hleF9zdHJfbGVuID0gc3ByaW50ZihhX2V2ZW50LT50aWRfaGV4X3N0ciwgIjB4JXgiLCAodW5zaWduZWQgaW50KWFfZXZlbnQtPnRpZCk7CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvZXZlbnQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ldmVudC5jIGIvc3JjL2V2ZW50LmMKK2luZGV4IDhmOTg4YjUuLmM2MzJjMzMgMTAwNjQ0CistLS0gYS9zcmMvZXZlbnQuYworKysrIGIvc3JjL2V2ZW50LmMKK0BAIC04Miw3ICs4Miw3IEBAIHpsb2dfZXZlbnRfdCAqemxvZ19ldmVudF9uZXcoaW50IHRpbWVfY2FjaGVfY291bnQpCisgCWFfZXZlbnQtPnRpZCA9IHB0aHJlYWRfc2VsZigpOworIAorIAlhX2V2ZW50LT50aWRfc3RyX2xlbiA9IHNwcmludGYoYV9ldmVudC0+dGlkX3N0ciwgIiVsdSIsICh1bnNpZ25lZCBsb25nKWFfZXZlbnQtPnRpZCk7CistCWFfZXZlbnQtPnRpZF9oZXhfc3RyX2xlbiA9IHNwcmludGYoYV9ldmVudC0+dGlkX2hleF9zdHIsICIweCV4IiwgKHVuc2lnbmVkIGludClhX2V2ZW50LT50aWQpOworKwlhX2V2ZW50LT50aWRfaGV4X3N0cl9sZW4gPSBzcHJpbnRmKGFfZXZlbnQtPnRpZF9oZXhfc3RyLCAiMHglbHUiLCAodW5zaWduZWQgbG9uZylhX2V2ZW50LT50aWQpOworIAorIAkvL3psb2dfZXZlbnRfcHJvZmlsZShhX2V2ZW50LCBaQ19ERUJVRyk7CisgCXJldHVybiBhX2V2ZW50OworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3psb2cvemxvZ19naXQuYmIKaW5kZXggNTFjNzQ2Zi4uODZlNmQzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2dfZ2l0LmJiCkBAIC02LDcgKzYsOSBAQAogUFYgPSAiMS4yLjEyK2dpdCR7U1JDUFZ9IgogCiBTUkNSRVYgPSAiMTM5MDRkYWIyODc4YWEyNjU0ZDBjMjBmYjg2MDBhM2RjNWYyZGQ2OCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9IYXJkeVNpbXBzb24vemxvZyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9IYXJkeVNpbXBzb24vemxvZyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV2ZW50LmMtQ2FzdC1wdGhyZWFkX3QtdG8tdW5zaWduZWQtbG9uZy1pbnN0ZWFkLW9mLXUucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pyYW0venJhbV8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96cmFtL3pyYW1fMC4xLmJiCmluZGV4IGUwN2Y1NzAuLmRmZDc1ZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pyYW0venJhbV8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtXzAuMS5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiTGludXggenJhbSBjb21wcmVzc2VkIGluLW1lbW9yeSBzd2FwIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiBpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YjJkOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVNVTU1BUlkgPSAiVU5JWCBTaGVsbCBzaW1pbGFyIHRvIHRoZSBLb3JuIHNoZWxsIgotREVTQ1JJUFRJT04gPSAiWnNoIGlzIGEgc2hlbGwgZGVzaWduZWQgZm9yIGludGVyYWN0aXZlIHVzZSwgYWx0aG91Z2ggaXQgaXMgYWxzbyBhIFwKLSAgICAgICAgICAgICAgIHBvd2VyZnVsIHNjcmlwdGluZyBsYW5ndWFnZS4gTWFueSBvZiB0aGUgdXNlZnVsIGZlYXR1cmVzIG9mIGJhc2gsIFwKLSAgICAgICAgICAgICAgIGtzaCwgYW5kIHRjc2ggd2VyZSBpbmNvcnBvcmF0ZWQgaW50byB6c2g7IG1hbnkgb3JpZ2luYWwgZmVhdHVyZXMgd2VyZSBhZGRlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnpzaC5vcmciCi1TRUNUSU9OID0gImJhc2Uvc2hlbGwiCi0KLUxJQ0VOU0UgPSAienNoIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YjdiYzg1Mzg5NDY2NGJlNDU1YTkyMmRiOTgwNTI4OGUiCi0KLURFUEVORFMgPSAibmN1cnNlcyBiaXNvbi1uYXRpdmUgbGliY2FwIGxpYnBjcmUgZ2RibSBncm9mZi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmZiMGUzZTUyYTBmOGRlNWNhNjMxMzgzOTFiODFjZTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjM1Y2YxOWU0YTZiYTM5ZmQwM2M2MzcyYjhhODc2MGE0OTFjYzJlMmU0YWJhM2QxNTAyM2ZmMjkxYzI4OTRiNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tYmluZGlyPSR7YmFzZV9iaW5kaXJ9IFwKLSAgICAtLWVuYWJsZS1ldGNkaXI9JHtzeXNjb25mZGlyfSBcCi0gICAgLS1lbmFibGUtZm5kaXI9JHtkYXRhZGlyfS8ke1BOfS8ke1BWfS9mdW5jdGlvbnMgXAotICAgIC0tZW5hYmxlLXNpdGUtZm5kaXI9JHtkYXRhZGlyfS8ke1BOfS9zaXRlLWZ1bmN0aW9ucyBcCi0gICAgLS13aXRoLXRlcm0tbGliPSduY3Vyc2VzdyBuY3Vyc2VzJyBcCi0gICAgLS13aXRoLXRjc2V0cGdycCBcCi0gICAgLS1lbmFibGUtY2FwIFwKLSAgICAtLWVuYWJsZS1tdWx0aWJ5dGUgXAotICAgIC0tZGlzYWJsZS1nZGJtIFwKLSAgICAtLWRpc2FibGUtZHluYW1pYyBcCi0gICAgenNoX2N2X3NoYXJlZF9lbnZpcm9uPXllcyBcCi0iCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzaCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vc2giCi1BTFRFUk5BVElWRV9UQVJHRVRbc2hdID0gIiR7YmFzZV9iaW5kaXJ9LyR7QlBOfSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZXhwb3J0IEFVVE9IRUFERVIgPSAidHJ1ZSIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UgJHtTfQotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1mciAke0R9L3Vzci9zaGFyZQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIHRvdWNoICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLSAgICBncmVwIC1xICJiaW4venNoIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gL2Jpbi96c2ggPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotICAgIGdyZXAgLXEgImJpbi9zaCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvIC9iaW4vc2ggPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vLmRlYnVnLyouc28gXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS9kYi8uZGVidWcvKi5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59L25ldC8uZGVidWcvKi5zbyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96c2gvenNoXzUuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjVlMzkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjMuMS5iYgpAQCAtMCwwICsxLDYxIEBACitTVU1NQVJZID0gIlVOSVggU2hlbGwgc2ltaWxhciB0byB0aGUgS29ybiBzaGVsbCIKK0RFU0NSSVBUSU9OID0gIlpzaCBpcyBhIHNoZWxsIGRlc2lnbmVkIGZvciBpbnRlcmFjdGl2ZSB1c2UsIGFsdGhvdWdoIGl0IGlzIGFsc28gYSBcCisgICAgICAgICAgICAgICBwb3dlcmZ1bCBzY3JpcHRpbmcgbGFuZ3VhZ2UuIE1hbnkgb2YgdGhlIHVzZWZ1bCBmZWF0dXJlcyBvZiBiYXNoLCBcCisgICAgICAgICAgICAgICBrc2gsIGFuZCB0Y3NoIHdlcmUgaW5jb3Jwb3JhdGVkIGludG8genNoOyBtYW55IG9yaWdpbmFsIGZlYXR1cmVzIHdlcmUgYWRkZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy56c2gub3JnIgorU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitMSUNFTlNFID0gInpzaCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWI3YmM4NTM4OTQ2NjRiZTQ1NWE5MjJkYjk4MDUyODhlIgorCitERVBFTkRTID0gIm5jdXJzZXMgYmlzb24tbmF0aXZlIGxpYmNhcCBsaWJwY3JlIGdkYm0gZ3JvZmYtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImQ1ODNmYmNhMGMyNDEwYmY5NTQyY2U4YTY1MWMyNmNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkOTRhNTkwZmYzYzU2MmVjZjM4N2RhNzhhYzM1NmQ2YmVhNzliMDUwYTllZjgxZTNlY2I5ZjhlZTUxMzA0MGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWJpbmRpcj0ke2Jhc2VfYmluZGlyfSBcCisgICAgLS1lbmFibGUtZXRjZGlyPSR7c3lzY29uZmRpcn0gXAorICAgIC0tZW5hYmxlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vJHtQVn0vZnVuY3Rpb25zIFwKKyAgICAtLWVuYWJsZS1zaXRlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vc2l0ZS1mdW5jdGlvbnMgXAorICAgIC0td2l0aC10ZXJtLWxpYj0nbmN1cnNlc3cgbmN1cnNlcycgXAorICAgIC0td2l0aC10Y3NldHBncnAgXAorICAgIC0tZW5hYmxlLWNhcCBcCisgICAgLS1lbmFibGUtbXVsdGlieXRlIFwKKyAgICAtLWRpc2FibGUtZ2RibSBcCisgICAgLS1kaXNhYmxlLWR5bmFtaWMgXAorICAgIHpzaF9jdl9zaGFyZWRfZW52aXJvbj15ZXMgXAorIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2hdID0gIiR7YmFzZV9iaW5kaXJ9L3NoIgorQUxURVJOQVRJVkVfVEFSR0VUW3NoXSA9ICIke2Jhc2VfYmluZGlyfS8ke0JQTn0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2V4cG9ydCBBVVRPSEVBREVSID0gInRydWUiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICR7U30KKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBybSAtZnIgJHtEfS91c3Ivc2hhcmUKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICB0b3VjaCAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCisgICAgZ3JlcCAtcSAiYmluL3pzaCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvIC9iaW4venNoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKKyAgICBncmVwIC1xICJiaW4vc2giICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAvYmluL3NoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KKworRklMRVNfJHtQTn0tZGJnICs9ICJcCisgICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59Ly5kZWJ1Zy8qLnNvIFwKKyAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vZGIvLmRlYnVnLyouc28gXAorICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS9uZXQvLmRlYnVnLyouc28gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS1jb21tb25fMy4xOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29tbW9uL2dub21lLWNvbW1vbl8zLjE4LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtY29tbW9uXzMuMTguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29tbW9uL2dub21lLWNvbW1vbl8zLjE4LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2V4dHJhL2ZpbGVzL3JlbW92ZS10dXRvcmlhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2V4dHJhL2ZpbGVzL3JlbW92ZS10dXRvcmlhbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZjNmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9maWxlcy9yZW1vdmUtdHV0b3JpYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLS1naXQgYS9kb2NzL01ha2VmaWxlLmFtIGIvZG9jcy9NYWtlZmlsZS5hbQotaW5kZXggZjUzNzVmNS4uYzMwNmYyMyAxMDA2NDQKLS0tLSBhL2RvY3MvTWFrZWZpbGUuYW0KLSsrKyBiL2RvY3MvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLVNVQkRJUlMgPSByZWZlcmVuY2UgdHV0b3JpYWwKLStTVUJESVJTID0gcmVmZXJlbmNlCi0gCi0gRVhUUkFfRElTVCA9IFwKLSAJQ09QWUlORyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9ndGtleHRyYV8zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2V4dHJhL2d0a2V4dHJhXzMuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGI3YWE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2V4dHJhL2d0a2V4dHJhXzMuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJHdGsrRXh0cmEgaXMgYSBzZXQgb2YgY3VzdG9tIHdpZGdldCBmb3IgcGxvdHMgYW5kIGltYWdlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9ndGtleHRyYS5zb3VyY2Vmb3JnZS5uZXQvIgotCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ndGtleHRyYS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXR1dG9yaWFsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ4NmNlYTkzNjY2MDIwZjg1ZjEwMWVkODM0MWJhZjQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljYWI2YzVkNmI3OTJlYjgyOGQxN2NlYzJiOWMxYmFiYTJlZjU3Zjc4OWEyOTA0NjRhZmFiODBiNTM5NjllNjUiCi0KLURFUEVORFMgPSAiZ3RrKyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi0jIHwgLi8ubGlicy9saWJndGtleHRyYS14MTEtMy4wLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncm91bmRpbnQnCi1QTkJMQUNLTElTVFtndGtleHRyYV0gPz0gIkJST0tFTjogRmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2h0bWwyL2ZpbGVzLzAwMDEtdGVzdHMtbWFpbi5jLWZpeC1idWlsZC13aXRoLWdsaWItMi4zNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2h0bWwyL2ZpbGVzLzAwMDEtdGVzdHMtbWFpbi5jLWZpeC1idWlsZC13aXRoLWdsaWItMi4zNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlYjM5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9maWxlcy8wMDAxLXRlc3RzLW1haW4uYy1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDRiMTdlZWQ0Yjg1ODg1NjlkMTFlYzRiZDJiNmZhM2MwNjM4MzBlNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE2IE1heSAyMDEzIDE4OjQ0OjUwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL21haW4uYzogZml4IGJ1aWxkIHdpdGggZ2xpYiAyLjM2Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogcHJvamVjdCBzZWVtcyBkZWFkCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHRlc3RzL21haW4uYyB8ICAgIDIgKysKLSAxIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL21haW4uYyBiL3Rlc3RzL21haW4uYwotaW5kZXggNjFjY2U4Mi4uMTgxNjVlZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL21haW4uYwotKysrIGIvdGVzdHMvbWFpbi5jCi1AQCAtMzAsNyArMzAsOSBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKLSB7Ci0gCUd0a1dpZGdldCAqYnJvd3NlcjsKLSAKLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzYsIDApCi0gCWdfdGhyZWFkX2luaXQoTlVMTCk7Ci0rI2VuZGlmCi0gCi0gCWd0a19pbml0ICgmYXJnYywgJmFyZ3YpOwotIAotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2h0bWwyL2d0a2h0bWwyX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0a2h0bWwyL2d0a2h0bWwyX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIxYjA3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9ndGtodG1sMl9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImd0aysgZ2xpYi0yLjAgbGlieG1sMiIKLVNVTU1BUlkgPSAiQSBHVEsrIEhUTUwgcmVuZGVyaW5nIGxpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKLQotU1JDUkVWID0gIjExNjEiCi1QViA9ICIyLjExLjArc3ZuciR7U1JDUFZ9IgotUFIgPSAicjUiCi0KLVNSQ19VUkkgPSAic3ZuOi8vc3ZuLmdub21lLm9yZy9zdm4vZ3RraHRtbDIvO21vZHVsZT10cnVuaztwcm90b2NvbD1odHRwIFwKLSAgICAgICAgICAgaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvd2ViLXBhdGNoZXMvcGxhaW4vY3NzLXN0eWxlc2hlZXQtdXNlci5wYXRjaDtzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDIgXAotICAgICAgICAgICBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS93ZWItcGF0Y2hlcy9wbGFpbi9jc3MtbWVkaWEucGF0Y2g7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gzIFwKLSAgICAgICAgICAgaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvd2ViLXBhdGNoZXMvcGxhaW4vYWRkLWVuZC1lbGVtZW50LXNpZ25hbC5wYXRjaDtzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDQgXAotICAgICAgICAgICBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS93ZWItcGF0Y2hlcy9wbGFpbi9hZGQtZG9tLWZ1bmN0aW9ucy5wYXRjaDtzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDUgXAotICAgICAgICAgICBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS93ZWItcGF0Y2hlcy9wbGFpbi9pYWluLW1lbS1sZWFrLnBhdGNoO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoNiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLW1haW4uYy1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2ggXAotIgotCi1TUkNfVVJJW3BhdGNoMi5tZDVzdW1dID0gIjA1ZmMzNjI3Y2EzNjQwOTU3MDJkYzgwNGY0MWM4MzkxIgotU1JDX1VSSVtwYXRjaDIuc2hhMjU2c3VtXSA9ICJkZjVjY2E1MGE4Zjk1MzMzNTA1ZDc5MjA5MjlmZWEyNTFkYWVhM2JlMjViZTY4MzRhMWM1MGE3NDJkOWViNjc0IgotCi1TUkNfVVJJW3BhdGNoMy5tZDVzdW1dID0gImQzZmU0Y2RhMzU0NWYzZTQ3MThmMWFjYzE4NjYwOGFiIgotU1JDX1VSSVtwYXRjaDMuc2hhMjU2c3VtXSA9ICIzYWVmYWExN2ZmYTM4MTQzYmY1ZGYxMTYxYzUxYWI0MDJkMzViZmJlZTQxYWI0NjQzYzMxM2VkZjU2OTE2NWQ1IgotCi1TUkNfVVJJW3BhdGNoNC5tZDVzdW1dID0gIjY1MWIxNjAxZDhhMWIyMWM4YTMwNDBmYWRiNzI5MDQzIgotU1JDX1VSSVtwYXRjaDQuc2hhMjU2c3VtXSA9ICJkMDY3ZTgzMzFiZjljNjg1MWYxYzYwNjdkOTkxYTdmNTQzMjdmNTMyOTAwYjQwNWViZGY4ZTE0OWMwNzFmMzgxIgotCi1TUkNfVVJJW3BhdGNoNS5tZDVzdW1dID0gIjA0MWJlOTcxMWExNmU2MjlkMDE0ODc2NjRiYTk3MTUyIgotU1JDX1VSSVtwYXRjaDUuc2hhMjU2c3VtXSA9ICI0Mjk1NmZiNDEzNDFjZjgyYWU4YmNlMThiNGNmOTZhN2UyYWE2MzFiMWI2MDY1N2FmYjZkN2U5YmU3Y2QxMzhjIgotCi1TUkNfVVJJW3BhdGNoNi5tZDVzdW1dID0gIjRlMTFkYzc4OTlkNjhmMmJlMmUwNmNjZWUwMWQyOTZkIgotU1JDX1VSSVtwYXRjaDYuc2hhMjU2c3VtXSA9ICIxZTJjYzA4MGU2NTRjMTgzOWM1Y2I0YjRhZGY0YzYyYTIzZTdkYTIwODQyN2YzYmEwYjE2Y2ZlZDllNWNmYTk4IgotCi1TID0gIiR7V09SS0RJUn0vdHJ1bmsiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1hY2Nlc3NpYmlsaXR5IgotCi1QTkJMQUNLTElTVFtndGtodG1sMl0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MzMvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYXNzaW1wL2Fzc2ltcF8zLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Fzc2ltcC9hc3NpbXBfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYTNkYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYXNzaW1wL2Fzc2ltcF8zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCi0gICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iYzQyMzFhMjI2OGRhOGZjNTU1MjVhZDExOTYzOGE4NyIKLQotREVQRU5EUyA9ICJib29zdCB2aXJ0dWFsL2xpYmdsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvJHtCUE59L2ZpbGVzLyR7QlBOfS0zLjEvJHtCUE59LSR7UFZ9X25vX3Rlc3RfbW9kZWxzLnppcCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjY2Q0Nzg4MjA0NTA5ZGE1OGEzYTUzYzdhZWRhN2E4YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTk4Mjc4NzZmMTBhOGI0NDcyNzAzNjg3NTMzOTJjZmQ1MDJlNzBhMmU5ZDEzNjE1NTRlNWRmY2IxZmVkZTllIgotCi1pbmhlcml0IGNtYWtlCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS4xNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZWEwNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiQmFibCBpcyBhIGR5bmFtaWMsIGFueSB0byBhbnksIHBpeGVsIGZvcm1hdCBjb252ZXJzaW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImExYzcyZTVmNWQ1NWE4YjczNmVmMmZhNjdkZGI4NmVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkNmJhNTVlYzUzZWU2ZjZiZjY5NDViZWVjMjg4MzlkMDlmZjcyMzc2ZjRkODMwMzVlYjM3OWNkNGYzZTk4MGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFibC0qLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9iYWJsLSovKi5sYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2JhYmwtKi8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS4yOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ4YzkwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMjguYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJCYWJsIGlzIGEgZHluYW1pYywgYW55IHRvIGFueSwgcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKKworaW5oZXJpdCBnbm9tZWJhc2UKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi8ke0JQTn0vMC4xLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiY2M1M2Q4NDc0YTQzYWFmYjdjZGFjY2VhNTZjZmRlNDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjNmM2VkMjNlNzJhODU3YTBlNmRmNTNkOWQ5NjhhMzI1MDI0MTc3YjAxZWRiZTMxNGEwYzk4YjQ5OWViODYwMyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9iYWJsLSovKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2JhYmwtKi8qLmxhIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vYmFibC0qLy5kZWJ1Zy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItYm94MmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWJveDJkLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ2Yjc4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItYm94MmQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ2x1dHRlciBCb3gyRCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2x1dHRlci1wcm9qZWN0Lm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLQotIyBUaGUgbWFpbiBjbHV0dGVyIGxpYiBpcyBtYWNoaW5lIHNwZWNpZmljIHNvIHdlIG5lZWQgdG8gYmUgdG9vCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYwotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAke1N9L2V4YW1wbGVzLy5saWJzL2Jsb2NrYm94ICR7RH0ke2JpbmRpcn0KLX0KLQotRklMRVNQQVRIID0gIiR7RklMRV9ESVJOQU1FfS9jbHV0dGVyLWJveDJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWJveDJkX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ib3gyZF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3M2UyZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWJveDJkX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgY2x1dHRlci1ib3gyZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vYm94MmQvTGljZW5zZS50eHQ7bWQ1PWU1ZDM5YWQ5MWY3ZGM0NjkyZGNkYjFkODUxMzllYzZiIgotCi0jIDAuMTIuMStnaXRBVVRPSU5DK2RlNTQ1MmU1NmItcjEvZ2l0L2NsdXR0ZXItYm94MmQvY2x1dHRlci1ib3gyZC5oOjIyNjo0NzoKLSMgIGZhdGFsIGVycm9yOiBjbHV0dGVyLWJveDJkL2NsdXR0ZXItYm94MmQtY2hpbGQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotIyB8ICAjaW5jbHVkZSA8Y2x1dHRlci1ib3gyZC9jbHV0dGVyLWJveDJkLWNoaWxkLmg+Ci1QTkJMQUNLTElTVFtjbHV0dGVyLWJveDJkXSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDUkVWID0gImRlNTQ1MmU1NmI1MzdhMTFmZDdmOTQ1M2QwNDhmZjRiNDc5M2I1YTIiCi1QViA9ICIwLjEyLjErZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL2NsdXR0ZXItYm94MmQuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTICs9ICJjbHV0dGVyLTEuMCIKLVBST1ZJREVTID0gImNsdXR0ZXItYm94MmQtMS42IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1kZW1hbmQtbGlua2VyLWhhc2gtc3R5bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaWV0c3BsYXNoL2RpZXRzcGxhc2gvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWRlbWFuZC1saW5rZXItaGFzaC1zdHlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2U4NjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1kZW1hbmQtbGlua2VyLWhhc2gtc3R5bGUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2NWU4ZTNjOWM2OWY0MTc3OGI2MzA4YzJmOGYzMjYyYzgyYzZmM2UxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMTM6NTc6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEbyBub3QgZGVtYW5kIGxpbmtlciBoYXNoLXN0eWxlCisKK1RoaXMgaGVscHMgZml4aW5nIG9uIGFyY2hpdGVjdHVyZXMgZS5nLiBtaXBzIHdoZXJlIGdudSBoYXNoCitpcyBub3Qgc3VwcG9ydGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlMWRiYTIzLi43YmNjMDM5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NSw3ICs2NSw2IEBAIENDX0NIRUNLX0NGTEFHU19BUFBFTkQoWyBcCisgICAgICAgICAtZmZ1bmN0aW9uLXNlY3Rpb25zIFwKKyAgICAgICAgIC1mZGF0YS1zZWN0aW9ucyBcCisgCS1XbCwtTzEgXAorLQktV2wsLS1oYXNoLXN0eWxlPWdudSBcCisgICAgICAgICAtV2wsLS1hcy1uZWVkZWQgXAorICAgICAgICAgLVdsLC0tZ2Mtc2VjdGlvbnNdKQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpZXRzcGxhc2gvZGlldHNwbGFzaF9naXQuYmIKaW5kZXggYTg4Y2FmOC4uMzJmMDgxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaWV0c3BsYXNoL2RpZXRzcGxhc2hfZ2l0LmJiCkBAIC03LDggKzcsMTAgQEAKIFBWID0gIjAuMyIKIFBSID0gInIxIgogCi1TUkNSRVYgPSAiZjdhYWRhY2JlM2MxOWUzN2VhOTM4ZTAwYTUxNDFiNTc3ZmI3NGE1ZSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sdWNhc2RlbWFyY2hpL2RpZXRzcGxhc2guZ2l0IgorU1JDUkVWID0gImVmMmUxYTM5MGU3NjhlMjFlNmE2MjY4OTc3NTgwZWUxMjlhOTY2MzMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHVjYXNkZW1hcmNoaS9kaWV0c3BsYXNoLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZGVtYW5kLWxpbmtlci1oYXNoLXN0eWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBpbmhlcml0IGF1dG90b29scwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9maW0vZmlsZXMvY3Jvc3NfY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9maW0vZmlsZXMvY3Jvc3NfY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YWIxZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbGVzL2Nyb3NzX2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA5YjBiMzIyZDg2YzdiMmQyY2RkYWE2MmY3ZGFiNGFhNjY5NzM5YTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dGhpZXUgQ3JhcGV0IDxNYXR0aGlldS5DcmFwZXRAaW5nZW5pY28uY29tPgotRGF0ZTogV2VkLCAxOSBNYXIgMjAxNCAxMzoxODoyMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotYjJiYSBzaG91bGQgYmUgYnVpbHQgYnkgQlVJTERfQ0MgaW4gY3Jvc3MgZW52aXJvbm1lbnQKLVRoaXMgaXMgb25seSB1c2VkIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWhhcmRjb2RlZC1mb250Ci0KLVNpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggYTFkNDMzMC4uYTgxNTBiOSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNjMsNyArNjMsNyBAQCBoZWxwLWFjbS5jcHA6IGZpbS5oCi0gCSQoRUNITykgJy8vI2VuZGlmJyA+PiAkQAotIAotIGIyYmE6Ci0tCSQoQ0MpIC1vIGIyYmEgYjJiYS5jCi0rCSQoQlVJTERfQ0MpIC1vIGIyYmEgYjJiYS5jCi0gCi0gaWYgRklNX1dBTlRfQ1VTVE9NX0hBUkRDT0RFRF9DT05TT0xFRk9OVAotIGRlZmF1bHRfZm9udF9ieXRlX2FycmF5Lmg6ICQoRklNX0NVU1RPTV9IQVJEQ09ERURfQ09OU09MRUZPTlQpIGIyYmEKLS0tIAotMS44LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9maW0vZmltXzAuNC1yYzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9maW0vZmltXzAuNC1yYzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMWEzYWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbV8wLjQtcmMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmFtZWJ1ZmZlciAoc2NyaXB0YWJsZSkgaW1hZ2Ugdmlld2VyIgotREVTQ1JJUFRJT04gPSAiRklNIChGYmkgSU1wcm92ZWQpIGFpbXMgdG8gYmUgYSBoaWdobHkgY3VzdG9taXphYmxlIGFuZCBzY3JpcHRhYmxlIFwKLSAgICAgICAgICAgICAgIGltYWdlIHZpZXdlciB0YXJnZXRlZCBhdCB1c2VycyB3aG8gYXJlIGNvbWZvcnRhYmxlIHdpdGggc29mdHdhcmUgXAotICAgICAgICAgICAgICAgbGlrZSB0aGUgVmltIHRleHQgZWRpdG9yIG9yIHRoZSBNdXR0IG1haWwgdXNlciBhZ2VudC4iCi1TRUNUSU9OID0gInV0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hdXRpc3RpY2kub3JnL2RlenBlcmFkby9maW0vIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmEwMWJmZjEzOGNjOThhNjJiODg0MGExNTc5NTFjODgiCi0KLVBOQkxBQ0tMSVNUW2ZpbV0gPz0gIkJST0tFTjogZG9lc24ndCBidWlsZCB3aXRoIEIhPVMgKGZsZXg6IGNhbid0IG9wZW4gbGV4LmxleCkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLSMgZmxleCB3aXRoIHByb3ZpZGUgL3Vzci9pbmNsdWRlL0ZsZXhMZXhlci5oCi1ERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBmbGV4IgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vZmJpLWltcHJvdmVkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NfY2MucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZDczNjJkZGU1NTQxYzJiNjQzOWMzNWM2ZTJiZDUwNDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y2YmYyZGUyOTUyYjlhZGNiZWIzZGIxMmMyYTk3OWU5OTlhODFkZDFlMzE0YTAzYmM1OGUyNGYxZWE5ZjY4NiIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIERvbid0IHVzZSBwcm92aWRlZCByZWdleC5jCi1FWFRSQV9PRUNPTkYgPSAiZmltX2N2X3JlZ2V4PW5vIGZpbV9jdl9yZWdleF9icm9rZW49bm8gXAotICAgIC0tZW5hYmxlLWZyYW1lYnVmZmVyIFwKLSAgICAtLWRpc2FibGUtZGp2dSBcCi0gICAgLS1kaXNhYmxlLXBzIFwKLSAgICAtLWRpc2FibGUteGNmdG9wbm0gXAotICAgIC0tZGlzYWJsZS1jb252ZXJ0IFwKLSAgICAtLWRpc2FibGUtaW5rc2NhcGUgXAotICAgIC0tZGlzYWJsZS14ZmlnIFwKLSAgICAtLWRpc2FibGUtZGlhIFwKLSAgICAtLWRpc2FibGUtYWEgXAotICAgIC0tZGlzYWJsZS1zZGwgXAotICAgIC0tZW5hYmxlLXJlYWQtZGlycyBcCi0gICAgLS1lbmFibGUtcmVjdXJzaXZlLWRpcnMgXAotICAgIC0tZW5hYmxlLWN1c3RvbS1zdGF0dXMtYmFyIFwKLSIKLQotIyBOb3RlOiBpbWxpYjIgaXMgbG9jYXRlZCBpbiBtZXRhLWVmbCBsYXllci4KLVBBQ0tBR0VDT05GSUcgPz0gImpwZWcgcmwgaGYiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW3BkZl0gPSAiLS1lbmFibGUtcG9wcGxlciwtLWRpc2FibGUtcG9wcGxlcixwb3BwbGVyIgotUEFDS0FHRUNPTkZJR1ttYWdpY2tdID0gIi0tZW5hYmxlLWdyYXBoaWNzbWFnaWNrLC0tZGlzYWJsZS1ncmFwaGljc21hZ2ljayxpbWFnZW1hZ2ljayIKLVBBQ0tBR0VDT05GSUdbaW1saWIyXSA9ICItLWVuYWJsZS1pbWxpYjIsLS1kaXNhYmxlLWltbGliMixpbWxpYjIiCi1QQUNLQUdFQ09ORklHW3JsXSA9ICItLWVuYWJsZS1yZWFkbGluZSwtLWRpc2FibGUtcmVhZGxpbmUscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2hmXSA9ICItLWVuYWJsZS1oYXJkY29kZWQtZm9udCwtLWRpc2FibGUtaGFyZGNvZGVkLWZvbnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTYxMDEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE2MTAxMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMzMzc2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTYxMDEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZvbnQgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL2ZvbnRmb3JnZS5naXRodWIuaW8vZW4tVVMvIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORy5ncGx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0zZjkyMmI0MmVkMDAzM2ZhMGZkNGNkMzI2OGY2NDI5YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgcGFuZ28gZ2lmbGliIHRpZmYgbGlieG1sMiBqcGVnIHB5dGhvbiBsaWJ0b29sIHV0aGFzaCBnbnVsaWIiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYnhpIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnZXR0ZXh0Ci0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB4MTEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59LmdpdCIKLSMgdGFnIDIwMTYxMDEyCi1TUkNSRVYgPSAiMDcyZWRiMDIzNWNkMTYzZDZjMzM5MWRhOWNjMzc1NGMzYzY2ZjQ3YSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB3aXRoX3g9bm8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgdXRoYXNoIHNvdXJjZXMgYXJlIGV4cGVjdGVkIGluIHV0aGFzaC9zcmMKLSAgICBjdXJyZGlyPWBwd2RgCi0gICAgY2QgJHtTfQotCi0gICAgbWtkaXIgLXAgdXRoYXNoL3NyYwotICAgIGNwICR7U1RBR0lOR19JTkNESVJ9L3V0Ki5oIHV0aGFzaC9zcmMKLQotICAgICMgYXZvaWQgYm9vdHN0cmFwIGNsb25pbmcgZ251bGliIG9uIGV2ZXJ5IGNvbmZpZ3VyZQotICAgIGNhdCA+LmdpdG1vZHVsZXMgPDxFT0YKLVtzdWJtb2R1bGUgImdudWxpYiJdCi0gICAgICAgcGF0aCA9IGdudWxpYgotICAgICAgIHVybCA9IGdpdDovL2dpdC5zdi5nbnUub3JnL2dudWxpYgotRU9GCi0gICAgY3AgLXJmICR7U1RBR0lOR19EQVRBRElSfS9nbnVsaWIgJHtTfQotCi0gICAgIyAtLWZvcmNlIHRvIGF2b2lkIGVycm9ycyBvbiByZWNvbmZpZ3VyZSBlLmcgaWYgcmVjaXBlcyBjaGFuZ2VkIHdlIGRlcGVuZCBvbgotICAgICMgfCBib290c3RyYXA6IHJ1bm5pbmc6IGxpYnRvb2xpemUgLS1xdWlldAotICAgICMgfCBsaWJ0b29saXplOiAgIGVycm9yOiAnbGlibHRkbC9DT1BZSU5HLkxJQicgZXhpc3RzOiB1c2UgJy0tZm9yY2UnIHRvIG92ZXJ3cml0ZQotICAgICMgfCAuLi4KLSAgICAuL2Jvb3RzdHJhcCAtLWZvcmNlCi0KLSAgICBjZCAkY3VycmRpcgotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uLWRiZyAke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vbWltZSBcCi0gICAgJHtkYXRhZGlyfS9pY29ucyBcCi0iCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke2RhdGFkaXJ9LyR7UE59L3B5dGhvbiIKLUZJTEVTXyR7UE59LXB5dGhvbi1kYmcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKLQotIyBmb3IgZS5nIGtkZSdzIG94eWdlbi1mb250cwotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTcwNzMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE3MDczMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWYwODY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE3MDczMS5iYgpAQCAtMCwwICsxLDYwIEBACitTVU1NQVJZID0gIkEgZm9udCBlZGl0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vZm9udGZvcmdlLmdpdGh1Yi5pby9lbi1VUy8iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HLmdwbHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTNmOTIyYjQyZWQwMDMzZmEwZmQ0Y2QzMjY4ZjY0MjljIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBnaWZsaWIgdGlmZiBsaWJ4bWwyIGpwZWcgcHl0aG9uIGxpYnRvb2wgdXRoYXNoIGdudWxpYiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbGlieGkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdldHRleHQKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHgxMSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0uZ2l0IgorIyB0YWcgMjAxNzA3MzEKK1NSQ1JFViA9ICJiOTE0OWMxM2U4Zjk0NjRmYzIxNDczZjFmNjc2YjM2YTIxMzA3NzVkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHdpdGhfeD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB1dGhhc2ggc291cmNlcyBhcmUgZXhwZWN0ZWQgaW4gdXRoYXNoL3NyYworICAgIGN1cnJkaXI9YHB3ZGAKKyAgICBjZCAke1N9CisKKyAgICBta2RpciAtcCB1dGhhc2gvc3JjCisgICAgY3AgJHtTVEFHSU5HX0lOQ0RJUn0vdXQqLmggdXRoYXNoL3NyYworCisgICAgIyBhdm9pZCBib290c3RyYXAgY2xvbmluZyBnbnVsaWIgb24gZXZlcnkgY29uZmlndXJlCisgICAgY2F0ID4uZ2l0bW9kdWxlcyA8PEVPRgorW3N1Ym1vZHVsZSAiZ251bGliIl0KKyAgICAgICBwYXRoID0gZ251bGliCisgICAgICAgdXJsID0gZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvZ251bGliCitFT0YKKyAgICBjcCAtcmYgJHtTVEFHSU5HX0RBVEFESVJ9L2dudWxpYiAke1N9CisKKyAgICAjIC0tZm9yY2UgdG8gYXZvaWQgZXJyb3JzIG9uIHJlY29uZmlndXJlIGUuZyBpZiByZWNpcGVzIGNoYW5nZWQgd2UgZGVwZW5kIG9uCisgICAgIyB8IGJvb3RzdHJhcDogcnVubmluZzogbGlidG9vbGl6ZSAtLXF1aWV0CisgICAgIyB8IGxpYnRvb2xpemU6ICAgZXJyb3I6ICdsaWJsdGRsL0NPUFlJTkcuTElCJyBleGlzdHM6IHVzZSAnLS1mb3JjZScgdG8gb3ZlcndyaXRlCisgICAgIyB8IC4uLgorICAgIC4vYm9vdHN0cmFwIC0tZm9yY2UKKworICAgIGNkICRjdXJyZGlyCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1weXRob24tZGJnICR7UE59LXB5dGhvbiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9taW1lIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zIFwKKyIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7ZGF0YWRpcn0vJHtQTn0vcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uLWRiZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uIgorCisjIGZvciBlLmcga2RlJ3Mgb3h5Z2VuLWZvbnRzCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYzIwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiR0VHTCAoR2VuZXJpYyBHcmFwaGljcyBMaWJyYXJ5KSBpcyBhIGdyYXBoIGJhc2VkIGltYWdlIHByb2Nlc3NpbmcgZnJhbWV3b3JrIgorTElDRU5TRSA9ICJMR1BMLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorREVQRU5EUyA9ICJiYWJsIGxpYnJzdmcgZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjYWlybyBleHBhdCB6bGliIGxpYnBuZyBqcGVnIHZpcnR1YWwvbGlic2RsIGpzb24tZ2xpYiBpbnRsdG9vbC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKKworaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgorUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS13aXRoLWxpYmF2Zm9ybWF0LC0td2l0aG91dC1saWJhdmZvcm1hdCxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS13aXRoLWxjbXMsLS13aXRob3V0LWxjbXMsbGNtcyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsd2VicCIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi8ke0JQTn0vMC4zLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTVjNmYyMjkyNjE0NzhkYzQzNmEzOGM4NDQwNWIyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzg1OGVmMjZlZGUxMzZkMTRlM2RlMTg4YTllOWMwZGU3NzA3MDYxYTlmYjk2ZDdkNjE1ZmFiNDk1ODQ5MWZiIgorCitMREZMQUdTICs9ICItbG0iCisKKyMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dlZ2wtMC4zLyouc28gJHtsaWJkaXJ9L2dlZ2wtMC4zLyouanNvbiAke2xpYmRpcn0vbGliZ2VnbC1ucGQtMC4zLnNvICR7bGliZGlyfS9saWJnZWdsLXNjLTAuMy5zbyIKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLmxhICR7bGliZGlyfS9saWJnZWdsLTAuMy5zbyIKK0ZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtsaWJkaXJ9L2xpYiouc28iCisKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6IEluIGZ1bmN0aW9uICdtYXR0aW5nX3Byb2Nlc3MnOgorIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6NDYzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBwYXRjaF9qdW1wX2luc24sIGF0IGNmZ3J0bC5jOjEyNzUKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGYwMjE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiR0VHTCAoR2VuZXJpYyBHcmFwaGljcyBMaWJyYXJ5KSBpcyBhIGdyYXBoIGJhc2VkIGltYWdlIHByb2Nlc3NpbmcgZnJhbWV3b3JrIgotTElDRU5TRSA9ICJMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJiYWJsIGxpYnJzdmcgZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjYWlybyBleHBhdCB6bGliIGxpYnBuZyBqcGVnIHZpcnR1YWwvbGlic2RsIGpzb24tZ2xpYiBpbnRsdG9vbC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS13aXRoLWxpYmF2Zm9ybWF0LC0td2l0aG91dC1saWJhdmZvcm1hdCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS13aXRoLWxjbXMsLS13aXRob3V0LWxjbXMsbGNtcyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsd2VicCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi8ke0JQTn0vMC4zLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTk0NzgzMjE1OTRkNzE1YTRjYjMyNGEwZGVjZGE2ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NDYyOTBhNzkwODU0ZDFlNmI3YzE3YTJkNmY4MmFkN2NiMTRjNzJlMjQwYmQzYjgxYjk4Y2MwY2VkZGJjM2VjIgotCi1MREZMQUdTICs9ICItbG0iCi0KLSMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dlZ2wtMC4zLyouc28gJHtsaWJkaXJ9L2dlZ2wtMC4zLyouanNvbiAke2xpYmRpcn0vbGliZ2VnbC1ucGQtMC4zLnNvICR7bGliZGlyfS9saWJnZWdsLXNjLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLmxhICR7bGliZGlyfS9saWJnZWdsLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtsaWJkaXJ9L2xpYiouc28iCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6IEluIGZ1bmN0aW9uICdtYXR0aW5nX3Byb2Nlc3MnOgotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6NDYzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBwYXRjaF9qdW1wX2luc24sIGF0IGNmZ3J0bC5jOjEyNzUKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wLzAwMDMtRml4LXVzZS1vZi1nZWdsLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RhNzhlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBlMWM4ZjRiODMyM2UzOTY1MjcxYTkzNTI5ZWFiNTc3NGMxYTcwODNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMTA6MzI6MTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCB1c2Ugb2YgZ2VnbCBBUEkKKworbmV3ZXIgdmVyc2lvbiBvZiBnZWdsIGRvZXMgbm90IGRlZmluZSBHRUdMX0lTX1BBUkFNX1NQRUNfTVVMVElMSU5FCisKK3wgY29yZS9saWJhcHBjb3JlLmEoZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLm8pOiBJbiBmdW5jdGlvbiBgZ2ltcF9wYXJhbV9zcGVjX2R1cGxpY2F0ZSc6Cit8IC91c3Ivc3JjL2RlYnVnL2dpbXAvMi44LjIyLXIwL2dpbXAtMi44LjIyL2FwcC9jb3JlLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL2dpbXAvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmM6NzA6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYEdFR0xfSVNfUEFSQU1fU1BFQ19NVUxUSUxJTkUnCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGFwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMgYi9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYworaW5kZXggYzBiNzQyNi4uMmVmYWYyMyAxMDA2NDQKKy0tLSBhL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jCisrKysgYi9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYworQEAgLTY3LDcgKzY3LDcgQEAgZ2ltcF9wYXJhbV9zcGVjX2R1cGxpY2F0ZSAoR1BhcmFtU3BlYyAqcHNwZWMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPmRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzcGVjLT5mbGFncyk7CisgCistICAgICAgICAgIGlmIChHRUdMX0lTX1BBUkFNX1NQRUNfTVVMVElMSU5FIChwc3BlYykpCisrICAgICAgICAgIGlmIChnZWdsX3BhcmFtX3NwZWNfZ2V0X3Byb3BlcnR5X2tleShwc3BlYywgIm11bHRpbGluZSIpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zZXRfcWRhdGEgKG5ldywgbXVsdGlsaW5lX3F1YXJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSIChUUlVFKSk7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4OGFiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR0lNUCBpcyB0aGUgR05VIEltYWdlIE1hbmlwdWxhdGlvbiBQcm9ncmFtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naW1wLm9yZyIKLVNFQ1RJT04gPSAieDExL2dyYXBoaWNzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgbGlieHNsdC1uYXRpdmUgXAotICAgIGd0aysgXAotICAgIGJhYmwgXAotICAgIGdlZ2wgXAotICAgIGxpYmFydC1sZ3BsIFwKLSAgICBqcGVnIFwKLSAgICBsaWJwbmcgXAotICAgIGxpYmV4aWYgXAotICAgIHRpZmYgXAotICAgIGxjbXMgXAotICAgIHBvcHBsZXIgXAotICAgIGphc3BlciBcCi0gICAgYnppcDIgXAotICAgIGxpYmd1ZGV2IFwKLSAgICBsaWJtbmcgXAotIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieG11IGxpYnhwbScsICcnLCBkKX0iCi0KLWluaGVyaXQgZ25vbWUgZ3RrLWRvYwotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvZ2ltcC92Mi44L2dpbXAtJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWFjLWRvLW5vdC1jaGVjay1mb3ItZnJlZXR5cGUtY29uZmlnLnBhdGNoIFwKLSAgICBmaWxlOi8vYnVtcF9CYWJsLUdFR0xfdmVyc2lvbnMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQ0MDU2NDBjNDI2YjIzNGQ2ZWZjMzZmYjRmNWJhZTU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzOWNhMWRmNzBiZTg2NWM2NzJmZmQ2NTRmNGUyMGYxODgxMjFkMDE2MDFjNWM5MDIzNzIxNDEwMTUzM2M4MDUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2Via2l0IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd21mIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSSQoaW5jbHVkZWRpciknOictSS4nOmcKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkvdXNyL2luY2x1ZGUnOictSSR7U1RBR0lOR19JTkNESVJ9JzpnCi19Ci0KLUNGTEFHUyArPSAiLWZQSUMiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpbXAvMi4wLyovLmRlYnVnIgotRklMRVNfJHtQTn0gICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDdlMjdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIlRoZSBHSU1QIGlzIHRoZSBHTlUgSW1hZ2UgTWFuaXB1bGF0aW9uIFByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdpbXAub3JnIgorU0VDVElPTiA9ICJ4MTEvZ3JhcGhpY3MiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnZGstcGl4YnVmLW5hdGl2ZSBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgZ3RrKyBcCisgICAgYmFibCBcCisgICAgZ2VnbCBcCisgICAganBlZyBcCisgICAgbGlicG5nIFwKKyAgICBsaWJleGlmIFwKKyAgICB0aWZmIFwKKyAgICBsY21zIFwKKyAgICBwb3BwbGVyIFwKKyAgICBqYXNwZXIgXAorICAgIGJ6aXAyIFwKKyAgICBsaWJndWRldiBcCisgICAgbGlibW5nIFwKKyIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhtdSBsaWJ4cG0nLCAnJywgZCl9IgorCitpbmhlcml0IGdub21lIGd0ay1kb2MKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi9naW1wL3YyLjgvZ2ltcC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWFjLWRvLW5vdC1jaGVjay1mb3ItZnJlZXR5cGUtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1bXBfQmFibC1HRUdMX3ZlcnNpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRml4LXVzZS1vZi1nZWdsLUFQSS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZTRmZDdhNTNiMWQzYzMyZGZmNjQyYWIxYTk0YjQ0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTg3YTM1Y2M1MmIxMTBkNzgxMjRkN2IyN2I2OGE2OGFkZTE0YTc5NGMyNzIxMzE0YmFjNjEzNGQyYTU2MzhhIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXdlYmtpdCBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXdtZiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkkKGluY2x1ZGVkaXIpJzonLUkuJzpnCisgICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1pIHM6Jy1JL3Vzci9pbmNsdWRlJzonLUkke1NUQUdJTkdfSU5DRElSfSc6ZworfQorCitDRkxBR1MgKz0gIi1mUElDIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9naW1wLzIuMC8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59ICArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvMDAwMS1idWlsZC1TcGVjaWZ5LXN0ZC1jLTExLW9uLWNtZGxpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC8wMDAxLWJ1aWxkLVNwZWNpZnktc3RkLWMtMTEtb24tY21kbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZiYzI5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC8wMDAxLWJ1aWxkLVNwZWNpZnktc3RkLWMtMTEtb24tY21kbGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gNDdiZmVmMGRkODNlZDJlMTBlYzRjNjE1OTA4ZWM5MjZjNGQ1ZmUyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDAwOjU2OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBTcGVjaWZ5IC1zdGQ9YysrMTEgb24gY21kbGluZQotCi1XZSB1c2UgYysrMTEgZmVhdHVyZXMgc28gZGVtYW5kIGl0IGV4cGxpY2l0bHkgZnJvbSBjb21waWxlcgotCi1GaXhlcwotfCAuLi9zcmMvbGlibWF0cml4L3NoYWRlci1zb3VyY2UuY2M6Mzc6MTA6IGVycm9yOiBubyBtZW1iZXIgbmFtZWQgJ3VuaXF1ZV9wdHInIGluIG5hbWVzcGFjZSAnc3RkJwotfCAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotfCAgICAgfn5+fn5eCi18IC4uL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYzozNzozMzogZXJyb3I6IGV4cGVjdGVkICcoJyBmb3IgZnVuY3Rpb24tc3R5bGUgY2FzdCBvciB0eXBlIGNvbnN0cnVjdGlvbgotfCAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotfCAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fl4KLXwgLi4vc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjOjM3OjM1OiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnaXNfcHRyJwotfCAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCAuLi9zcmMvbGlibWF0cml4L3NoYWRlci1zb3VyY2UuY2M6Mzg6MzA6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdpc19wdHInCi18ICAgICBzdGQ6OmlzdHJlYW0mIGlucHV0RmlsZSgqaXNfcHRyKTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IDQgZXJyb3JzIGdlbmVyYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB3c2NyaXB0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLWluZGV4IGRjYWYyOTguLjQ4NWE5ZmIgMTAwNjQ0Ci0tLS0gYS93c2NyaXB0Ci0rKysgYi93c2NyaXB0Ci1AQCAtNzksNyArNzksNyBAQCBkZWYgY29uZmlndXJlKGN0eCk6Ci0gICAgICAgICAgICAgY3R4LmNoZWNrX2NmZyhwYWNrYWdlID0gcGtnLCB1c2VsaWJfc3RvcmUgPSB1c2VsaWIsIGFyZ3MgPSAnLS1jZmxhZ3MgLS1saWJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSA9IFRydWUpCi0gCi0tICAgIGN0eC5lbnYuYXBwZW5kX3VuaXF1ZSgnQ1hYRkxBR1MnLCAnLVdhbGwgLVdlcnJvciAtV2V4dHJhJy5zcGxpdCgnICcpKQotKyAgICBjdHguZW52LmFwcGVuZF91bmlxdWUoJ0NYWEZMQUdTJywgJy1XYWxsIC1XZXJyb3IgLXN0ZD1jKysxMSAtV2V4dHJhJy5zcGxpdCgnICcpKQotIAotICAgICAjIFByZXBlbmQgLU8jIGFuZCAtZyBmbGFncyBzbyB0aGF0IHRoZXkgY2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgIGlmIE9wdGlvbnMub3B0aW9ucy5vcHQ6Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoLzAwMDEtd2FmLURpc2FibGUtZXJyb3JzLWR1ZS10by1XZGVwcmVjYXRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoLzAwMDEtd2FmLURpc2FibGUtZXJyb3JzLWR1ZS10by1XZGVwcmVjYXRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGViNjAxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC8wMDAxLXdhZi1EaXNhYmxlLWVycm9ycy1kdWUtdG8tV2RlcHJlY2F0ZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDQ5Mjk3ZTJmYmUwNDIwYTI1NWNiZTY3OTg5ZDBlYzUzOTEyNTQxMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxMDozODoyNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSB3YWY6IERpc2FibGUgZXJyb3JzIGR1ZSB0byAtV2RlcHJlY2F0ZWQKLQotdGhyb3coKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGMrKzExIGFuZCByZW1vdmVkCi1mcm9tIGMrKzE3LCBnY2M3IGlzIG1vcmUgcGVkYW5kaWMgYWJvdXQgdGhpcyB3YXJuaW5nCi13ZSB0aGVyZWZvcmUgYWRkIGEgd29ya2Fyb3VuZCB0byBpZ25vcmUgdGhpcyB3YXJuaW5nCi1mb3Igbm93LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gd3NjcmlwdCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCA0ODVhOWZiLi43ZjU5NzYxIDEwMDY0NAotLS0tIGEvd3NjcmlwdAotKysrIGIvd3NjcmlwdAotQEAgLTc5LDcgKzc5LDcgQEAgZGVmIGNvbmZpZ3VyZShjdHgpOgotICAgICAgICAgICAgIGN0eC5jaGVja19jZmcocGFja2FnZSA9IHBrZywgdXNlbGliX3N0b3JlID0gdXNlbGliLCBhcmdzID0gJy0tY2ZsYWdzIC0tbGlicycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnkgPSBUcnVlKQotIAotLSAgICBjdHguZW52LmFwcGVuZF91bmlxdWUoJ0NYWEZMQUdTJywgJy1XYWxsIC1XZXJyb3IgLXN0ZD1jKysxMSAtV2V4dHJhJy5zcGxpdCgnICcpKQotKyAgICBjdHguZW52LmFwcGVuZF91bmlxdWUoJ0NYWEZMQUdTJywgJy1XYWxsIC1XZXJyb3IgLXN0ZD1jKysxMSAtV2V4dHJhIC1Xbm8tZXJyb3I9ZGVwcmVjYXRlZCcuc3BsaXQoJyAnKSkKLSAKLSAgICAgIyBQcmVwZW5kIC1PIyBhbmQgLWcgZmxhZ3Mgc28gdGhhdCB0aGV5IGNhbiBiZSBvdmVycmlkZW4gYnkgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICBpZiBPcHRpb25zLm9wdGlvbnMub3B0OgotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQ4MzFjNDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUluZGV4OiBnaXQvd3NjcmlwdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3dzY3JpcHQJMjAxNi0wNy0yOSAxMzoxNTo0NC45NTQyNDk3OTYgLTA1MDAKLSsrKyBnaXQvd3NjcmlwdAkyMDE2LTA3LTI5IDE1OjUyOjA2LjE5Njc2ODg2NSAtMDUwMAotQEAgLTU2LDcgKzU2LDcgQEAKLSAgICAgICAgIGN0eC5jaGVja19jeHgobGliID0gbGliLCB1c2VsaWJfc3RvcmUgPSB1c2VsaWIpCi0gCi0gICAgICMgQ2hlY2sgcmVxdWlyZWQgZnVuY3Rpb25zCi0tICAgIHJlcV9mdW5jcyA9IFsoJ2dldHRpbWVvZmRheScsICdzeXMvdGltZS5oJywgW10pICwoJ3NxcnQnLCAnbWF0aC5oJywgWydtJ10pLAotKyAgICByZXFfZnVuY3MgPSBbKCdnZXR0aW1lb2ZkYXknLCAnc3lzL3RpbWUuaCcsIFtdKSwKLSAgICAgICAgICAgICAgICAgICgnc3RydG9sJywgJ3N0ZGxpYi5oJywgW10pLCAoJ3N0cnRvdWwnLCAnc3RkbGliLmgnLCBbXSldCi0gICAgIGZvciBmdW5jLCBoZWFkZXIsIHVzZWxpYiBpbiByZXFfZnVuY3M6Ci0gICAgICAgICBjdHguY2hlY2tfY3h4KGZ1bmN0aW9uX25hbWUgPSBmdW5jLCBoZWFkZXJfbmFtZSA9IGhlYWRlciwgdXNlbGliID0gdXNlbGliLCBtYW5kYXRvcnkgPSBUcnVlKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9GaXhfYXV0b19wdHJfZGVwcmVjYXRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeF9hdXRvX3B0cl9kZXByZWNhdGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5MzBjN2NiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeF9hdXRvX3B0cl9kZXByZWNhdGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotZGlmZiAtYXVyIGdsY29tcGJlbmNoLTIwMTIuMDgvc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjIEZpeGVkL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYwotLS0tIGdsY29tcGJlbmNoLTIwMTIuMDgvc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjCTIwMTItMDgtMjIgMTM6NDE6MzYuMDAwMDAwMDAwIC0wNTAwCi0rKysgRml4ZWQvc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjCTIwMTYtMDgtMjQgMTQ6MjM6NDkuNTc2MDIzMzE3IC0wNTAwCi1AQCAtMzQsNyArMzQsNyBAQAotIGJvb2wKLSBTaGFkZXJTb3VyY2U6OmxvYWRfZmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6c3RyaW5nJiBzdHIpCi0gewotLSAgICBzdGQ6OmF1dG9fcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotKyAgICBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjppc3RyZWFtPiBpc19wdHIoVXRpbDo6Z2V0X3Jlc291cmNlKGZpbGVuYW1lKSk7Ci0gICAgIHN0ZDo6aXN0cmVhbSYgaW5wdXRGaWxlKCppc19wdHIpOwotIAotICAgICBpZiAoIWlucHV0RmlsZSkKLWRpZmYgLWF1ciBnbGNvbXBiZW5jaC0yMDEyLjA4L3NyYy90ZXh0dXJlLmNjIEZpeGVkL3NyYy90ZXh0dXJlLmNjCi0tLS0gZ2xjb21wYmVuY2gtMjAxMi4wOC9zcmMvdGV4dHVyZS5jYwkyMDEyLTA4LTIyIDEzOjQxOjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIEZpeGVkL3NyYy90ZXh0dXJlLmNjCTIwMTYtMDgtMjQgMTQ6MjM6MjguMjIzOTE3NDM4IC0wNTAwCi1AQCAtNTIsNyArNTIsNyBAQAotIAotICAgICAgICAgTG9nOjpkZWJ1ZygiUmVhZGluZyBQTkcgZmlsZSAlc1xuIiwgZmlsZW5hbWUuY19zdHIoKSk7Ci0gCi0tICAgICAgICBjb25zdCBzdGQ6OmF1dG9fcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotKyAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotICAgICAgICAgaWYgKCEoKmlzX3B0cikpIHsKLSAgICAgICAgICAgICBMb2c6OmVycm9yKCJDYW5ub3Qgb3BlbiBmaWxlICVzIVxuIiwgZmlsZW5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvRml4X3NwYWNlX2lzc3Vlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeF9zcGFjZV9pc3N1ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDUxNmJhYWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvRml4X3NwYWNlX2lzc3Vlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWRpZmYgLWF1ciBnbGNvbXBiZW5jaC0yMDEyLjA4L3NyYy9jb21wb3NpdGUtY2FudmFzLmNjIEZpeGVkL3NyYy9jb21wb3NpdGUtY2FudmFzLmNjCi0tLS0gZ2xjb21wYmVuY2gtMjAxMi4wOC9zcmMvY29tcG9zaXRlLWNhbnZhcy5jYwkyMDEyLTA4LTIyIDEzOjQxOjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIEZpeGVkL3NyYy9jb21wb3NpdGUtY2FudmFzLmNjCTIwMTYtMDgtMjQgMTQ6MDU6MjguOTcwNTY1NzA5IC0wNTAwCi1AQCAtNDEsNyArNDEsNyBAQAotICNpbmNsdWRlICJsb2cuaCIKLSAjaW5jbHVkZSAicHJvZmlsZXIuaCIKLSAKLS1jb25zdCBzdGQ6OnN0cmluZyBnbGNvbXBiZW5jaF92ZXJzaW9uX3N0cmluZygiZ2xjb21wYmVuY2ggIkdMQ09NUEJFTkNIX1ZFUlNJT04pOwotK2NvbnN0IHN0ZDo6c3RyaW5nIGdsY29tcGJlbmNoX3ZlcnNpb25fc3RyaW5nKCJnbGNvbXBiZW5jaCAiIEdMQ09NUEJFTkNIX1ZFUlNJT04pOwotIAotIC8qKioqKioqKioqKioqKioqKioqCi0gICogUHJpdmF0ZSBtZXRob2RzICoKLUBAIC00OTUsNyArNDk1LDcgQEAKLSAgICAgLy8gV2hlbiB3ZSBjb21wbGV0ZSBhbiBpdGVyYXRpb24sIHJlc2V0IHRoZSBjb3VudCBhbmQgdGVsbCB0aGUgY2FsbGVyLgotIAotICAgICBpZiAoc3RhdHMudG90YWwgPj0gY3VycmVudF90ZXN0X2R1cmF0aW9uXykgewotLSAgICAgICAgTG9nOjppbmZvKCJGUFM6ICUiUFJJdTY0IlxuIiwgKHVpbnQ2NF90KSgxMDAwICogc3RhdHMubnNhbXBsZXMgLyBzdGF0cy50b3RhbCkpOwotKyAgICAgICAgTG9nOjppbmZvKCJGUFM6ICUiIFBSSXU2NCAiXG4iLCAodWludDY0X3QpKDEwMDAgKiBzdGF0cy5uc2FtcGxlcyAvIHN0YXRzLnRvdGFsKSk7Ci0gCi0gICAgICAgICBmb3IgKFByb2ZpbGVyOjpQb2ludCBwID0gMDsgcCA8IHByb2ZpbGVyLmdldF9udW1fcG9pbnRzKCk7IHAgKz0gMikgewotICAgICAgICAgICAgIHByb2ZpbGVyLmdldF9zdGF0cyhwLCBwICsgMSwgc3RhdHMpOwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9nbGJlbmNoLWNvbXBpbGUtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvZ2xiZW5jaC1jb21waWxlLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc0YTZjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9nbGJlbmNoLWNvbXBpbGUtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBjNGJjNDRjM2FiZjY5ZjI2ZTRjMmI3Njg0ZjRkYTQ2NzBhNTFmOTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhYmh1IFN1bmRhcmFyYWogPHByYWJodS5zdW5kYXJhcmFqQGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBUdWUsIDUgTm92IDIwMTMgMTE6MDM6MDQgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gdG8gbWFrZSBjb21waWxhYmxlCi0KLVVwc3RyZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KLQotU2lnbmVkLW9mZi1ieTogUHJhYmh1IFN1bmRhcmFyYWogPHByYWJodS5zdW5kYXJhcmFqQGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBzcmMvY29tcG9zaXRlLXRlc3Qtc2ltcGxlLWJsdXIuY2MgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBvc2l0ZS10ZXN0LXNpbXBsZS1ibHVyLmNjIGIvc3JjL2NvbXBvc2l0ZS10ZXN0LXNpbXBsZS1ibHVyLmNjCi1pbmRleCAxNzBhZDY0Li5kN2Y3N2NmIDEwMDY0NAotLS0tIGEvc3JjL2NvbXBvc2l0ZS10ZXN0LXNpbXBsZS1ibHVyLmNjCi0rKysgYi9zcmMvY29tcG9zaXRlLXRlc3Qtc2ltcGxlLWJsdXIuY2MKLUBAIC0zNDcsNiArMzQ3LDcgQEAgQ29tcG9zaXRlVGVzdFNpbXBsZUJsdXI6OkNvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyKCkgOgotIAotIENvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyOjp+Q29tcG9zaXRlVGVzdFNpbXBsZUJsdXIoKQotIHsKLSsjaWYgMAotICAgICBmb3IgKEJsdXJXaW5kb3dNYXBUeXBlOjppdGVyYXRvciB3aW5JdCA9IHByaXZfLT53aW5kb3dNYXAuYmVnaW4oKTsKLSAgICAgICAgICB3aW5JdCAhPSBwcml2Xy0+d2luZG93TWFwLmVuZCgpOwotICAgICAgICAgIHdpbkl0KyspCi1AQCAtMzU0LDYgKzM1NSw3IEBAIENvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyOjp+Q29tcG9zaXRlVGVzdFNpbXBsZUJsdXIoKQotICAgICAgICAgUmVuZGVyV2luZG93Qmx1ciogcm8gPSB3aW5JdC0+c2Vjb25kOwotICAgICAgICAgZGVsZXRlIHJvOwotICAgICB9Ci0rI2VuZGlmCi0gICAgIGRlbGV0ZSBwcml2XzsKLSB9Ci0gCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2hfMjAxMi4wOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoXzIwMTIuMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU4NDY1ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2hfMjAxMi4wOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQSBiZW5jaG1hcmsgZm9yIEdMKEVTKTIgYmFzZWQgY29tcG9zaXRpbmcgb3BlcmF0aW9ucyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiBcCi0gICAgICAgICAgIHZpcnR1YWwvbGlieDExIGxpYnhjb21wb3NpdGUgcGl4bWFuIGxpYnhyZW5kZXIgbGlicG5nMTIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2dsY29tcGJlbmNoL3RydW5rLyR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2dsYmVuY2gtY29tcGlsZS1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXhfc3BhY2VfaXNzdWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeF9hdXRvX3B0cl9kZXByZWNhdGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtU3BlY2lmeS1zdGQtYy0xMS1vbi1jbWRsaW5lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2FmLURpc2FibGUtZXJyb3JzLWR1ZS10by1XZGVwcmVjYXRlZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM5MzlkOTE1NmZlOTQwOTYwMDk4ZjM4NzA3ZmVhODI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwNGI3MzhjZWMwNmM2Nzg2Y2VhZmE4NmU0NzM1ZmQ4Yjk3MWMwNzgyNjU3NTQ4NTRlZjM1NmIwMzc5NTQyZWUiCi0KLWluaGVyaXQgcGtnY29uZmlnIHdhZiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYgppbmRleCA1ZTc5OGVmLi40NDM0YWY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS44LmJiCkBAIC0zMSw3ICszMSw3IEBACiBQQUNLQUdFQ09ORklHW3NlcmlhbF0gPSAiLS1lbmFibGUtc2VyaWFsLC0tZGlzYWJsZS1zZXJpYWwsbG9ja2RldiIKIAogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBjcCAke1NUQUdJTkdfREFUQURJUn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L2xpYmdwaG90bzJfcG9ydC9wby8KKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCiAgICAgY2QgJHtTfS9saWJncGhvdG8yX3BvcnQvCiAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCiAgICAgY2QgJHtTfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGVwdG9uaWNhL2xlcHRvbmljYV8xLjczLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGVwdG9uaWNhL2xlcHRvbmljYV8xLjczLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzJkMjRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xlcHRvbmljYS9sZXB0b25pY2FfMS43My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgcGVkYWdvZ2ljYWxseS1vcmllbnRlZCBvcGVuIHNvdXJjZSBzaXRlIGNvbnRhaW5pbmcgc29mdHdhcmUgdGhhdCBpcyBicm9hZGx5IHVzZWZ1bCBmb3IgaW1hZ2UgcHJvY2Vzc2luZyBhbmQgaW1hZ2UgYW5hbHlzaXMgYXBwbGljYXRpb25zIgotREVQRU5EUyA9ICJqcGVnIHRpZmYgbGlicG5nIHpsaWIiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xlcHRvbmljYS1saWNlbnNlLnR4dDttZDU9MjBjZGQzYWYwOTdjYTQzMWI4MjAwNGM2OTFmNDA2YTYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xlcHRvbmljYS5jb20vc291cmNlL2xlcHRvbmljYS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDkyY2VhMmU1NjhjYWRhNzlmZmYxNzg4MjAzOTc5MjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTllNDMzNWM2NzRlN2I3OGFmOTMzOGQ1MzgyY2M1MjY2ZjM0YTYyZDRjZTUzM2Q4NjBhZjQ4ZWFhODU5YWZjMSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0td2l0aG91dC1saWJ3ZWJwIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi0td2l0aC1saWJvcGVuanBlZywtLXdpdGhvdXQtbGlib3BlbmpwZWcsb3BlbmpwZWciCi1QQUNLQUdFQ09ORklHW2dpZmxpYl0gPSAiLS13aXRoLWdpZmxpYiwtLXdpdGhvdXQtZ2lmbGliLGdpZmxpYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9sZXB0b25pY2EvbGVwdG9uaWNhXzEuNzQuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xlcHRvbmljYS9sZXB0b25pY2FfMS43NC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZmEwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9sZXB0b25pY2EvbGVwdG9uaWNhXzEuNzQuNC5iYgpAQCAtMCwwICsxLDE4IEBACitERVNDUklQVElPTiA9ICJBIHBlZGFnb2dpY2FsbHktb3JpZW50ZWQgb3BlbiBzb3VyY2Ugc2l0ZSBjb250YWluaW5nIHNvZnR3YXJlIHRoYXQgaXMgYnJvYWRseSB1c2VmdWwgZm9yIGltYWdlIHByb2Nlc3NpbmcgYW5kIGltYWdlIGFuYWx5c2lzIGFwcGxpY2F0aW9ucyIKK0RFUEVORFMgPSAianBlZyB0aWZmIGxpYnBuZyB6bGliIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZXB0b25pY2EtbGljZW5zZS50eHQ7bWQ1PTM0YWE1NzkyOTRlODI4NGI3Yjg0OGM4ZDVkMzYxZThmIgorCitTUkNfVVJJID0gImh0dHA6Ly9sZXB0b25pY2EuY29tL3NvdXJjZS9sZXB0b25pY2EtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjRmMzJiZTliZDJlMmMxNDJiYTAxODAzN2FiNWQ3NDZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5YzM1NDI2YTQxNmJmNDU0NDEzYzZmZWMyNGMyNGEwYjYzM2UyNjE0NGExN2U5ODM1MWI2ZGZmYWE0YTgzM2IiCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLXdpdGhvdXQtbGlid2VicCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnaWZsaWIiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLXdpdGgtbGlib3BlbmpwZWcsLS13aXRob3V0LWxpYm9wZW5qcGVnLG9wZW5qcGVnIgorUEFDS0FHRUNPTkZJR1tnaWZsaWJdID0gIi0td2l0aC1naWZsaWIsLS13aXRob3V0LWdpZmxpYixnaWZsaWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2V4eS9saWJzZXh5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMTFjYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2V4eS9saWJzZXh5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpYnNleHkgaXMgYSBjb2xsZWN0aW9uIG9mIEdUSysgd2lkZ2V0cyB0aGF0IGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzdWNoIHN0YW5kYXJkIHdpZGdldHMgYXMgR3RrRW50cnkgYW5kIEd0a0xhYmVsIgotSE9NRVBBR0UgPSAiaHR0cDovL3dpa2kuY2hpcHg4Ni5jb20vd2lraS9MaWJzZXh5IgotQVVUSE9SID0gIkNocmlzdGlhbiBIYW1tb25kIDxjaGlweDg2QGNoaXB4ODYuY29tPiIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotREVQRU5EUyA9ICJndGsrIGVuY2hhbnQgbGlieG1sMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vcmVsZWFzZXMuY2hpcHg4Ni5jb20vbGlic2V4eS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2xpYnNleHktcGtnY29uZmlnLWZpeGVzLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2V4eS9saWJzZXh5L2xpYnNleHktcGtnY29uZmlnLWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2V4eS9saWJzZXh5L2xpYnNleHktcGtnY29uZmlnLWZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWRhOTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS9saWJzZXh5LXBrZ2NvbmZpZy1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLUluZGV4OiBsaWJzZXh5LTAuMS4xMS9saWJzZXh5LnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlic2V4eS0wLjEuMTEub3JpZy9saWJzZXh5LnBjLmluCTIwMDUtMTEtMTAgMTA6MjE6MTguMDAwMDAwMDAwICswMDAwCi0rKysgbGlic2V4eS0wLjEuMTEvbGlic2V4eS5wYy5pbgkyMDA4LTAzLTA1IDE0OjM2OjM5LjAwMDAwMDAwMCArMDAwMAotQEAgLTYsNyArNiw4IEBACi0gTmFtZTogbGlic2V4eQotIERlc2NyaXB0aW9uOiBEb2luZyBuYXVnaHR5IHRoaW5ncyB0byBnb29kIHdpZGdldHMKLSBWZXJzaW9uOiBAVkVSU0lPTkAKLS1MaWJzOiAtTCR7bGliZGlyfSAtbHNleHkgQFBBQ0tBR0VfTElCU0AKLS1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAUEFDS0FHRV9DRkxBR1NACi0gCi0rUmVxdWlyZXM6IHBhbmdvIGdsaWItMi4wIGd0aystMi4wIGxpYnhtbC0yLjAKLStMaWJzOiAtTCR7bGliZGlyfSAtbHNleHkgCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eV8wLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZXh5L2xpYnNleHlfMC4xLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmExZWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eV8wLjEuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgbGlic2V4eS5pbmMKLQotUFIgPSAicjIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzM2MwNzlhMjUzMjcwZWM4YmZiOTUwOGU0YmIzMDc1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzQxMDFhOGNkYTVmY2NiYmE4NWJhMWExNWY0NmYyY2Y3NWRlYWE4YjNjNTI1Y2U1YjEzNWI5ZTFhOGZlNDllIgotCi1QTkJMQUNLTElTVFtsaWJzZXh5XSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwNy8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyLzAwMDEtcmVtb3ZlLXdlYmNsaWVudHMtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyLzAwMDEtcmVtb3ZlLXdlYmNsaWVudHMtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNDM2NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAxLXJlbW92ZS13ZWJjbGllbnRzLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDVjMmE5NGQuLmY5ODAzOGEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNyBAQAotIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0gCi0tU1VCRElSUz1saWJ2bmNzZXJ2ZXIgZXhhbXBsZXMgbGlidm5jY2xpZW50IHdlYmNsaWVudHMgY2xpZW50X2V4YW1wbGVzIHRlc3QKLS1ESVNUX1NVQkRJUlM9bGlidm5jc2VydmVyIGV4YW1wbGVzIGxpYnZuY2NsaWVudCB3ZWJjbGllbnRzIGNsaWVudF9leGFtcGxlcyB0ZXN0Ci0rU1VCRElSUz1saWJ2bmNzZXJ2ZXIgZXhhbXBsZXMgbGlidm5jY2xpZW50IGNsaWVudF9leGFtcGxlcyB0ZXN0Ci0rRElTVF9TVUJESVJTPWxpYnZuY3NlcnZlciBleGFtcGxlcyBsaWJ2bmNjbGllbnQgY2xpZW50X2V4YW1wbGVzIHRlc3QKLSBFWFRSQV9ESVNUID0gQ01ha2VMaXN0cy50eHQgcmZiL3JmYmludC5oLmNtYWtlIHJmYi9yZmJjb25maWcuaC5jbWFrZQotIAotIGJpbl9TQ1JJUFRTID0gbGlidm5jc2VydmVyLWNvbmZpZwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2E5ZjNiMy4uOWI0NjRjZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAwLDkgKzYwMCw2IEBAIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUKLSAJbGlidm5jc2VydmVyL01ha2VmaWxlCi0gCWV4YW1wbGVzL01ha2VmaWxlCi0gCWV4YW1wbGVzL2FuZHJvaWQvTWFrZWZpbGUKLS0Jd2ViY2xpZW50cy9NYWtlZmlsZQotLQl3ZWJjbGllbnRzL2phdmEtYXBwbGV0L01ha2VmaWxlCi0tCXdlYmNsaWVudHMvamF2YS1hcHBsZXQvc3NsL01ha2VmaWxlCi0gCWxpYnZuY2NsaWVudC9NYWtlZmlsZQotIAljbGllbnRfZXhhbXBsZXMvTWFrZWZpbGUKLSAJdGVzdC9NYWtlZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAyLWNvbW1vbi1hZGQtc2hhMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1jb21tb24tYWRkLXNoYTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNzBkMmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAyLWNvbW1vbi1hZGQtc2hhMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNCArMCwwIEBACi1kaWZmIC0tZ2l0IGEvY29tbW9uL3NoYTEuYyBiL2NvbW1vbi9zaGExLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ODhiMTg4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9jb21tb24vc2hhMS5jCi1AQCAtMCwwICsxLDQxMSBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSBUaGUgSW50ZXJuZXQgU29jaWV0eSAoMjAwMSkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotKyAqCi0rICogVGhpcyBkb2N1bWVudCBhbmQgdHJhbnNsYXRpb25zIG9mIGl0IG1heSBiZSBjb3BpZWQgYW5kIGZ1cm5pc2hlZCB0bwotKyAqIG90aGVycywgYW5kIGRlcml2YXRpdmUgd29ya3MgdGhhdCBjb21tZW50IG9uIG9yIG90aGVyd2lzZSBleHBsYWluIGl0Ci0rICogb3IgYXNzaXN0IGluIGl0cyBpbXBsZW1lbnRhdGlvbiBtYXkgYmUgcHJlcGFyZWQsIGNvcGllZCwgcHVibGlzaGVkCi0rICogYW5kIGRpc3RyaWJ1dGVkLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCB3aXRob3V0IHJlc3RyaWN0aW9uIG9mIGFueQotKyAqIGtpbmQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFyZQotKyAqIGluY2x1ZGVkIG9uIGFsbCBzdWNoIGNvcGllcyBhbmQgZGVyaXZhdGl2ZSB3b3Jrcy4gIEhvd2V2ZXIsIHRoaXMKLSsgKiBkb2N1bWVudCBpdHNlbGYgbWF5IG5vdCBiZSBtb2RpZmllZCBpbiBhbnkgd2F5LCBzdWNoIGFzIGJ5IHJlbW92aW5nCi0rICogdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgcmVmZXJlbmNlcyB0byB0aGUgSW50ZXJuZXQgU29jaWV0eSBvciBvdGhlcgotKyAqIEludGVybmV0IG9yZ2FuaXphdGlvbnMsIGV4Y2VwdCBhcyBuZWVkZWQgZm9yIHRoZSBwdXJwb3NlIG9mCi0rICogZGV2ZWxvcGluZyBJbnRlcm5ldCBzdGFuZGFyZHMgaW4gd2hpY2ggY2FzZSB0aGUgcHJvY2VkdXJlcyBmb3IKLSsgKiBjb3B5cmlnaHRzIGRlZmluZWQgaW4gdGhlIEludGVybmV0IFN0YW5kYXJkcyBwcm9jZXNzIG11c3QgYmUKLSsgKiBmb2xsb3dlZCwgb3IgYXMgcmVxdWlyZWQgdG8gdHJhbnNsYXRlIGl0IGludG8gbGFuZ3VhZ2VzIG90aGVyIHRoYW4KLSsgKiBFbmdsaXNoLgotKyAqCi0rICogVGhlIGxpbWl0ZWQgcGVybWlzc2lvbnMgZ3JhbnRlZCBhYm92ZSBhcmUgcGVycGV0dWFsIGFuZCB3aWxsIG5vdCBiZQotKyAqIHJldm9rZWQgYnkgdGhlIEludGVybmV0IFNvY2lldHkgb3IgaXRzIHN1Y2Nlc3NvcnMgb3IgYXNzaWducy4KLSsgKgotKyAqIFRoaXMgZG9jdW1lbnQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIHByb3ZpZGVkIG9uIGFuCi0rICogIkFTIElTIiBiYXNpcyBhbmQgVEhFIElOVEVSTkVUIFNPQ0lFVFkgQU5EIFRIRSBJTlRFUk5FVCBFTkdJTkVFUklORwotKyAqIFRBU0sgRk9SQ0UgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORwotKyAqIEJVVCBOT1QgTElNSVRFRCBUTyBBTlkgV0FSUkFOVFkgVEhBVCBUSEUgVVNFIE9GIFRIRSBJTkZPUk1BVElPTgotKyAqIEhFUkVJTiBXSUxMIE5PVCBJTkZSSU5HRSBBTlkgUklHSFRTIE9SIEFOWSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0rICovCi0rCi0rLyoKLSsgKiAgc2hhMS5jCi0rICoKLSsgKiAgRGVzY3JpcHRpb246Ci0rICogICAgICBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgU2VjdXJlIEhhc2hpbmcgQWxnb3JpdGhtIDEgYXMKLSsgKiAgICAgIGRlZmluZWQgaW4gRklQUyBQVUIgMTgwLTEgcHVibGlzaGVkIEFwcmlsIDE3LCAxOTk1LgotKyAqCi0rICogICAgICBUaGUgU0hBLTEsIHByb2R1Y2VzIGEgMTYwLWJpdCBtZXNzYWdlIGRpZ2VzdCBmb3IgYSBnaXZlbgotKyAqICAgICAgZGF0YSBzdHJlYW0uICBJdCBzaG91bGQgdGFrZSBhYm91dCAyKipuIHN0ZXBzIHRvIGZpbmQgYQotKyAqICAgICAgbWVzc2FnZSB3aXRoIHRoZSBzYW1lIGRpZ2VzdCBhcyBhIGdpdmVuIG1lc3NhZ2UgYW5kCi0rICogICAgICAyKioobi8yKSB0byBmaW5kIGFueSB0d28gbWVzc2FnZXMgd2l0aCB0aGUgc2FtZSBkaWdlc3QsCi0rICogICAgICB3aGVuIG4gaXMgdGhlIGRpZ2VzdCBzaXplIGluIGJpdHMuICBUaGVyZWZvcmUsIHRoaXMKLSsgKiAgICAgIGFsZ29yaXRobSBjYW4gc2VydmUgYXMgYSBtZWFucyBvZiBwcm92aWRpbmcgYQotKyAqICAgICAgImZpbmdlcnByaW50IiBmb3IgYSBtZXNzYWdlLgotKyAqCi0rICogIFBvcnRhYmlsaXR5IElzc3VlczoKLSsgKiAgICAgIFNIQS0xIGlzIGRlZmluZWQgaW4gdGVybXMgb2YgMzItYml0ICJ3b3JkcyIuICBUaGlzIGNvZGUKLSsgKiAgICAgIHVzZXMgPHN0ZGludC5oPiAoaW5jbHVkZWQgdmlhICJzaGExLmgiIHRvIGRlZmluZSAzMiBhbmQgOAotKyAqICAgICAgYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZXMuICBJZiB5b3VyIEMgY29tcGlsZXIgZG9lcyBub3QKLSsgKiAgICAgIHN1cHBvcnQgMzIgYml0IHVuc2lnbmVkIGludGVnZXJzLCB0aGlzIGNvZGUgaXMgbm90Ci0rICogICAgICBhcHByb3ByaWF0ZS4KLSsgKgotKyAqICBDYXZlYXRzOgotKyAqICAgICAgU0hBLTEgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIG1lc3NhZ2VzIGxlc3MgdGhhbiAyXjY0IGJpdHMKLSsgKiAgICAgIGxvbmcuICBBbHRob3VnaCBTSEEtMSBhbGxvd3MgYSBtZXNzYWdlIGRpZ2VzdCB0byBiZSBnZW5lcmF0ZWQKLSsgKiAgICAgIGZvciBtZXNzYWdlcyBvZiBhbnkgbnVtYmVyIG9mIGJpdHMgbGVzcyB0aGFuIDJeNjQsIHRoaXMKLSsgKiAgICAgIGltcGxlbWVudGF0aW9uIG9ubHkgd29ya3Mgd2l0aCBtZXNzYWdlcyB3aXRoIGEgbGVuZ3RoIHRoYXQgaXMKLSsgKiAgICAgIGEgbXVsdGlwbGUgb2YgdGhlIHNpemUgb2YgYW4gOC1iaXQgY2hhcmFjdGVyLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgInNoYTEuaCIKLSsKLSsvKgotKyAqICBEZWZpbmUgdGhlIFNIQTEgY2lyY3VsYXIgbGVmdCBzaGlmdCBtYWNybwotKyAqLwotKyNkZWZpbmUgU0hBMUNpcmN1bGFyU2hpZnQoYml0cyx3b3JkKSBcCi0rICAgICAgICAgICAgICAgICgoKHdvcmQpIDw8IChiaXRzKSkgfCAoKHdvcmQpID4+ICgzMi0oYml0cykpKSkKLSsKLSsvKiBMb2NhbCBGdW5jdGlvbiBQcm90b3R5cHRlcyAqLwotK3ZvaWQgU0hBMVBhZE1lc3NhZ2UoU0hBMUNvbnRleHQgKik7Ci0rdm9pZCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhTSEExQ29udGV4dCAqKTsKLSsKLSsvKgotKyAqICBTSEExUmVzZXQKLSsgKgotKyAqICBEZXNjcmlwdGlvbjoKLSsgKiAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBpbml0aWFsaXplIHRoZSBTSEExQ29udGV4dCBpbiBwcmVwYXJhdGlvbgotKyAqICAgICAgZm9yIGNvbXB1dGluZyBhIG5ldyBTSEExIG1lc3NhZ2UgZGlnZXN0LgotKyAqCi0rICogIFBhcmFtZXRlcnM6Ci0rICogICAgICBjb250ZXh0OiBbaW4vb3V0XQotKyAqICAgICAgICAgIFRoZSBjb250ZXh0IHRvIHJlc2V0LgotKyAqCi0rICogIFJldHVybnM6Ci0rICogICAgICBzaGEgRXJyb3IgQ29kZS4KLSsgKgotKyAqLwotK2ludCBTSEExUmVzZXQoU0hBMUNvbnRleHQgKmNvbnRleHQpCi0rewotKyAgICBpZiAoIWNvbnRleHQpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiBzaGFOdWxsOwotKyAgICB9Ci0rCi0rICAgIGNvbnRleHQtPkxlbmd0aF9Mb3cgICAgICAgICAgICAgPSAwOwotKyAgICBjb250ZXh0LT5MZW5ndGhfSGlnaCAgICAgICAgICAgID0gMDsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCAgICA9IDA7Ci0rCi0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzBdICAgPSAweDY3NDUyMzAxOwotKyAgICBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFsxXSAgID0gMHhFRkNEQUI4OTsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMl0gICA9IDB4OThCQURDRkU7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzNdICAgPSAweDEwMzI1NDc2OwotKyAgICBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFs0XSAgID0gMHhDM0QyRTFGMDsKLSsKLSsgICAgY29udGV4dC0+Q29tcHV0ZWQgICA9IDA7Ci0rICAgIGNvbnRleHQtPkNvcnJ1cHRlZCAgPSAwOwotKyAgICByZXR1cm4gc2hhU3VjY2VzczsKLSt9Ci0rCi0rLyoKLSsgKiAgU0hBMVJlc3VsdAotKyAqCi0rICogIERlc2NyaXB0aW9uOgotKyAqICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgMTYwLWJpdCBtZXNzYWdlIGRpZ2VzdCBpbnRvIHRoZQotKyAqICAgICAgTWVzc2FnZV9EaWdlc3QgYXJyYXkgIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIuCi0rICogICAgICBOT1RFOiBUaGUgZmlyc3Qgb2N0ZXQgb2YgaGFzaCBpcyBzdG9yZWQgaW4gdGhlIDB0aCBlbGVtZW50LAotKyAqICAgICAgICAgICAgdGhlIGxhc3Qgb2N0ZXQgb2YgaGFzaCBpbiB0aGUgMTl0aCBlbGVtZW50LgotKyAqCi0rICogIFBhcmFtZXRlcnM6Ci0rICogICAgICBjb250ZXh0OiBbaW4vb3V0XQotKyAqICAgICAgICAgIFRoZSBjb250ZXh0IHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIFNIQS0xIGhhc2guCi0rICogICAgICBNZXNzYWdlX0RpZ2VzdDogW291dF0KLSsgKiAgICAgICAgICBXaGVyZSB0aGUgZGlnZXN0IGlzIHJldHVybmVkLgotKyAqCi0rICogIFJldHVybnM6Ci0rICogICAgICBzaGEgRXJyb3IgQ29kZS4KLSsgKgotKyAqLwotK2ludCBTSEExUmVzdWx0KCBTSEExQ29udGV4dCAqY29udGV4dCwKLSsgICAgICAgICAgICAgICAgdWludDhfdCBNZXNzYWdlX0RpZ2VzdFtTSEExSGFzaFNpemVdKQotK3sKLSsgICAgaW50IGk7Ci0rCi0rICAgIGlmICghY29udGV4dCB8fCAhTWVzc2FnZV9EaWdlc3QpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiBzaGFOdWxsOwotKyAgICB9Ci0rCi0rICAgIGlmIChjb250ZXh0LT5Db3JydXB0ZWQpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiBjb250ZXh0LT5Db3JydXB0ZWQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFjb250ZXh0LT5Db21wdXRlZCkKLSsgICAgewotKyAgICAgICAgU0hBMVBhZE1lc3NhZ2UoY29udGV4dCk7Ci0rICAgICAgICBmb3IoaT0wOyBpPDY0OyArK2kpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgLyogbWVzc2FnZSBtYXkgYmUgc2Vuc2l0aXZlLCBjbGVhciBpdCBvdXQgKi8KLSsgICAgICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2ldID0gMDsKLSsgICAgICAgIH0KLSsgICAgICAgIGNvbnRleHQtPkxlbmd0aF9Mb3cgPSAwOyAgICAvKiBhbmQgY2xlYXIgbGVuZ3RoICovCi0rICAgICAgICBjb250ZXh0LT5MZW5ndGhfSGlnaCA9IDA7Ci0rICAgICAgICBjb250ZXh0LT5Db21wdXRlZCA9IDE7Ci0rICAgIH0KLSsKLSsgICAgZm9yKGkgPSAwOyBpIDwgU0hBMUhhc2hTaXplOyArK2kpCi0rICAgIHsKLSsgICAgICAgIE1lc3NhZ2VfRGlnZXN0W2ldID0gY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbaT4+Ml0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gOCAqICggMyAtICggaSAmIDB4MDMgKSApOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiBzaGFTdWNjZXNzOwotK30KLSsKLSsvKgotKyAqICBTSEExSW5wdXQKLSsgKgotKyAqICBEZXNjcmlwdGlvbjoKLSsgKiAgICAgIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbiBhcnJheSBvZiBvY3RldHMgYXMgdGhlIG5leHQgcG9ydGlvbgotKyAqICAgICAgb2YgdGhlIG1lc3NhZ2UuCi0rICoKLSsgKiAgUGFyYW1ldGVyczoKLSsgKiAgICAgIGNvbnRleHQ6IFtpbi9vdXRdCi0rICogICAgICAgICAgVGhlIFNIQSBjb250ZXh0IHRvIHVwZGF0ZQotKyAqICAgICAgbWVzc2FnZV9hcnJheTogW2luXQotKyAqICAgICAgICAgIEFuIGFycmF5IG9mIGNoYXJhY3RlcnMgcmVwcmVzZW50aW5nIHRoZSBuZXh0IHBvcnRpb24gb2YKLSsgKiAgICAgICAgICB0aGUgbWVzc2FnZS4KLSsgKiAgICAgIGxlbmd0aDogW2luXQotKyAqICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgaW4gbWVzc2FnZV9hcnJheQotKyAqCi0rICogIFJldHVybnM6Ci0rICogICAgICBzaGEgRXJyb3IgQ29kZS4KLSsgKgotKyAqLwotK2ludCBTSEExSW5wdXQoICAgIFNIQTFDb250ZXh0ICAgICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgICptZXNzYWdlX2FycmF5LAotKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICAgICAgIGxlbmd0aCkKLSt7Ci0rICAgIGlmICghbGVuZ3RoKQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gc2hhU3VjY2VzczsKLSsgICAgfQotKwotKyAgICBpZiAoIWNvbnRleHQgfHwgIW1lc3NhZ2VfYXJyYXkpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiBzaGFOdWxsOwotKyAgICB9Ci0rCi0rICAgIGlmIChjb250ZXh0LT5Db21wdXRlZCkKLSsgICAgewotKyAgICAgICAgY29udGV4dC0+Q29ycnVwdGVkID0gc2hhU3RhdGVFcnJvcjsKLSsgICAgICAgIHJldHVybiBzaGFTdGF0ZUVycm9yOwotKyAgICB9Ci0rCi0rICAgIGlmIChjb250ZXh0LT5Db3JydXB0ZWQpCi0rICAgIHsKLSsgICAgICAgICByZXR1cm4gY29udGV4dC0+Q29ycnVwdGVkOwotKyAgICB9Ci0rICAgIHdoaWxlKGxlbmd0aC0tICYmICFjb250ZXh0LT5Db3JydXB0ZWQpCi0rICAgIHsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1tjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4KytdID0KLSsgICAgICAgICAgICAgICAgICAgICgqbWVzc2FnZV9hcnJheSAmIDB4RkYpOwotKwotKyAgICBjb250ZXh0LT5MZW5ndGhfTG93ICs9IDg7Ci0rICAgIGlmIChjb250ZXh0LT5MZW5ndGhfTG93ID09IDApCi0rICAgIHsKLSsgICAgICAgIGNvbnRleHQtPkxlbmd0aF9IaWdoKys7Ci0rICAgICAgICBpZiAoY29udGV4dC0+TGVuZ3RoX0hpZ2ggPT0gMCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAvKiBNZXNzYWdlIGlzIHRvbyBsb25nICovCi0rICAgICAgICAgICAgY29udGV4dC0+Q29ycnVwdGVkID0gMTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA9PSA2NCkKLSsgICAgewotKyAgICAgICAgU0hBMVByb2Nlc3NNZXNzYWdlQmxvY2soY29udGV4dCk7Ci0rICAgIH0KLSsKLSsgICAgbWVzc2FnZV9hcnJheSsrOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiBzaGFTdWNjZXNzOwotK30KLSsKLSsvKgotKyAqICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jawotKyAqCi0rICogIERlc2NyaXB0aW9uOgotKyAqICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIG5leHQgNTEyIGJpdHMgb2YgdGhlIG1lc3NhZ2UKLSsgKiAgICAgIHN0b3JlZCBpbiB0aGUgTWVzc2FnZV9CbG9jayBhcnJheS4KLSsgKgotKyAqICBQYXJhbWV0ZXJzOgotKyAqICAgICAgTm9uZS4KLSsgKgotKyAqICBSZXR1cm5zOgotKyAqICAgICAgTm90aGluZy4KLSsgKgotKyAqICBDb21tZW50czoKLSsgKiAgICAgIE1hbnkgb2YgdGhlIHZhcmlhYmxlIG5hbWVzIGluIHRoaXMgY29kZSwgZXNwZWNpYWxseSB0aGUKLSsgKiAgICAgIHNpbmdsZSBjaGFyYWN0ZXIgbmFtZXMsIHdlcmUgdXNlZCBiZWNhdXNlIHRob3NlIHdlcmUgdGhlCi0rICogICAgICBuYW1lcyB1c2VkIGluIHRoZSBwdWJsaWNhdGlvbi4KLSsgKgotKyAqCi0rICovCi0rdm9pZCBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhTSEExQ29udGV4dCAqY29udGV4dCkKLSt7Ci0rICAgIGNvbnN0IHVpbnQzMl90IEtbXSA9ICAgIHsgICAgICAgLyogQ29uc3RhbnRzIGRlZmluZWQgaW4gU0hBLTEgICAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVBODI3OTk5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZFRDlFQkExLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhGMUJCQ0RDLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweENBNjJDMUQ2Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0rICAgIGludCAgICAgICAgICAgdDsgICAgICAgICAgICAgICAgIC8qIExvb3AgY291bnRlciAgICAgICAgICAgICAgICAqLwotKyAgICB1aW50MzJfdCAgICAgIHRlbXA7ICAgICAgICAgICAgICAvKiBUZW1wb3Jhcnkgd29yZCB2YWx1ZSAgICAgICAgKi8KLSsgICAgdWludDMyX3QgICAgICBXWzgwXTsgICAgICAgICAgICAgLyogV29yZCBzZXF1ZW5jZSAgICAgICAgICAgICAgICovCi0rICAgIHVpbnQzMl90ICAgICAgQSwgQiwgQywgRCwgRTsgICAgIC8qIFdvcmQgYnVmZmVycyAgICAgICAgICAgICAgICAqLwotKwotKyAgICAvKgotKyAgICAgKiAgSW5pdGlhbGl6ZSB0aGUgZmlyc3QgMTYgd29yZHMgaW4gdGhlIGFycmF5IFcKLSsgICAgICovCi0rICAgIGZvcih0ID0gMDsgdCA8IDE2OyB0KyspCi0rICAgIHsKLSsgICAgICAgIFdbdF0gPSBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW3QgKiA0XSA8PCAyNDsKLSsgICAgICAgIFdbdF0gfD0gY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDFdIDw8IDE2OwotKyAgICAgICAgV1t0XSB8PSBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW3QgKiA0ICsgMl0gPDwgODsKLSsgICAgICAgIFdbdF0gfD0gY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDNdOwotKyAgICB9Ci0rCi0rICAgIGZvcih0ID0gMTY7IHQgPCA4MDsgdCsrKQotKyAgICB7Ci0rICAgICAgIFdbdF0gPSBTSEExQ2lyY3VsYXJTaGlmdCgxLFdbdC0zXSBeIFdbdC04XSBeIFdbdC0xNF0gXiBXW3QtMTZdKTsKLSsgICAgfQotKwotKyAgICBBID0gY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMF07Ci0rICAgIEIgPSBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFsxXTsKLSsgICAgQyA9IGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzJdOwotKyAgICBEID0gY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbM107Ci0rICAgIEUgPSBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFs0XTsKLSsKLSsgICAgZm9yKHQgPSAwOyB0IDwgMjA7IHQrKykKLSsgICAgewotKyAgICAgICAgdGVtcCA9ICBTSEExQ2lyY3VsYXJTaGlmdCg1LEEpICsKLSsgICAgICAgICAgICAgICAgKChCICYgQykgfCAoKH5CKSAmIEQpKSArIEUgKyBXW3RdICsgS1swXTsKLSsgICAgICAgIEUgPSBEOwotKyAgICAgICAgRCA9IEM7Ci0rICAgICAgICBDID0gU0hBMUNpcmN1bGFyU2hpZnQoMzAsQik7Ci0rICAgICAgICBCID0gQTsKLSsgICAgICAgIEEgPSB0ZW1wOwotKyAgICB9Ci0rCi0rICAgIGZvcih0ID0gMjA7IHQgPCA0MDsgdCsrKQotKyAgICB7Ci0rICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArIChCIF4gQyBeIEQpICsgRSArIFdbdF0gKyBLWzFdOwotKyAgICAgICAgRSA9IEQ7Ci0rICAgICAgICBEID0gQzsKLSsgICAgICAgIEMgPSBTSEExQ2lyY3VsYXJTaGlmdCgzMCxCKTsKLSsgICAgICAgIEIgPSBBOwotKyAgICAgICAgQSA9IHRlbXA7Ci0rICAgIH0KLSsKLSsgICAgZm9yKHQgPSA0MDsgdCA8IDYwOyB0KyspCi0rICAgIHsKLSsgICAgICAgIHRlbXAgPSBTSEExQ2lyY3VsYXJTaGlmdCg1LEEpICsKLSsgICAgICAgICAgICAgICAoKEIgJiBDKSB8IChCICYgRCkgfCAoQyAmIEQpKSArIEUgKyBXW3RdICsgS1syXTsKLSsgICAgICAgIEUgPSBEOwotKyAgICAgICAgRCA9IEM7Ci0rICAgICAgICBDID0gU0hBMUNpcmN1bGFyU2hpZnQoMzAsQik7Ci0rICAgICAgICBCID0gQTsKLSsgICAgICAgIEEgPSB0ZW1wOwotKyAgICB9Ci0rCi0rICAgIGZvcih0ID0gNjA7IHQgPCA4MDsgdCsrKQotKyAgICB7Ci0rICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArIChCIF4gQyBeIEQpICsgRSArIFdbdF0gKyBLWzNdOwotKyAgICAgICAgRSA9IEQ7Ci0rICAgICAgICBEID0gQzsKLSsgICAgICAgIEMgPSBTSEExQ2lyY3VsYXJTaGlmdCgzMCxCKTsKLSsgICAgICAgIEIgPSBBOwotKyAgICAgICAgQSA9IHRlbXA7Ci0rICAgIH0KLSsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMF0gKz0gQTsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMV0gKz0gQjsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMl0gKz0gQzsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbM10gKz0gRDsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbNF0gKz0gRTsKLSsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA9IDA7Ci0rfQotKwotKwotKy8qCi0rICogIFNIQTFQYWRNZXNzYWdlCi0rICoKLSsgKiAgRGVzY3JpcHRpb246Ci0rICogICAgICBBY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCB0aGUgbWVzc2FnZSBtdXN0IGJlIHBhZGRlZCB0byBhbiBldmVuCi0rICogICAgICA1MTIgYml0cy4gIFRoZSBmaXJzdCBwYWRkaW5nIGJpdCBtdXN0IGJlIGEgJzEnLiAgVGhlIGxhc3QgNjQKLSsgKiAgICAgIGJpdHMgcmVwcmVzZW50IHRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIG1lc3NhZ2UuICBBbGwgYml0cyBpbgotKyAqICAgICAgYmV0d2VlbiBzaG91bGQgYmUgMC4gIFRoaXMgZnVuY3Rpb24gd2lsbCBwYWQgdGhlIG1lc3NhZ2UKLSsgKiAgICAgIGFjY29yZGluZyB0byB0aG9zZSBydWxlcyBieSBmaWxsaW5nIHRoZSBNZXNzYWdlX0Jsb2NrIGFycmF5Ci0rICogICAgICBhY2NvcmRpbmdseS4gIEl0IHdpbGwgYWxzbyBjYWxsIHRoZSBQcm9jZXNzTWVzc2FnZUJsb2NrIGZ1bmN0aW9uCi0rICogICAgICBwcm92aWRlZCBhcHByb3ByaWF0ZWx5LiAgV2hlbiBpdCByZXR1cm5zLCBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0Ci0rICogICAgICB0aGUgbWVzc2FnZSBkaWdlc3QgaGFzIGJlZW4gY29tcHV0ZWQuCi0rICoKLSsgKiAgUGFyYW1ldGVyczoKLSsgKiAgICAgIGNvbnRleHQ6IFtpbi9vdXRdCi0rICogICAgICAgICAgVGhlIGNvbnRleHQgdG8gcGFkCi0rICogICAgICBQcm9jZXNzTWVzc2FnZUJsb2NrOiBbaW5dCi0rICogICAgICAgICAgVGhlIGFwcHJvcHJpYXRlIFNIQSpQcm9jZXNzTWVzc2FnZUJsb2NrIGZ1bmN0aW9uCi0rICogIFJldHVybnM6Ci0rICogICAgICBOb3RoaW5nLgotKyAqCi0rICovCi0rCi0rdm9pZCBTSEExUGFkTWVzc2FnZShTSEExQ29udGV4dCAqY29udGV4dCkKLSt7Ci0rICAgIC8qCi0rICAgICAqICBDaGVjayB0byBzZWUgaWYgdGhlIGN1cnJlbnQgbWVzc2FnZSBibG9jayBpcyB0b28gc21hbGwgdG8gaG9sZAotKyAgICAgKiAgdGhlIGluaXRpYWwgcGFkZGluZyBiaXRzIGFuZCBsZW5ndGguICBJZiBzbywgd2Ugd2lsbCBwYWQgdGhlCi0rICAgICAqICBibG9jaywgcHJvY2VzcyBpdCwgYW5kIHRoZW4gY29udGludWUgcGFkZGluZyBpbnRvIGEgc2Vjb25kCi0rICAgICAqICBibG9jay4KLSsgICAgICovCi0rICAgIGlmIChjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4ID4gNTUpCi0rICAgIHsKLSsgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDB4ODA7Ci0rICAgICAgICB3aGlsZShjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4IDwgNjQpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1tjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4KytdID0gMDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIFNIQTFQcm9jZXNzTWVzc2FnZUJsb2NrKGNvbnRleHQpOwotKwotKyAgICAgICAgd2hpbGUoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA8IDU2KQotKyAgICAgICAgewotKyAgICAgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAweDgwOwotKyAgICAgICAgd2hpbGUoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA8IDU2KQotKyAgICAgICAgewotKyAgICAgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgLyoKLSsgICAgICogIFN0b3JlIHRoZSBtZXNzYWdlIGxlbmd0aCBhcyB0aGUgbGFzdCA4IG9jdGV0cwotKyAgICAgKi8KLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1Nl0gPSBjb250ZXh0LT5MZW5ndGhfSGlnaCA+PiAyNDsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1N10gPSBjb250ZXh0LT5MZW5ndGhfSGlnaCA+PiAxNjsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1OF0gPSBjb250ZXh0LT5MZW5ndGhfSGlnaCA+PiA4OwotKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzU5XSA9IGNvbnRleHQtPkxlbmd0aF9IaWdoOwotKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzYwXSA9IGNvbnRleHQtPkxlbmd0aF9Mb3cgPj4gMjQ7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNjFdID0gY29udGV4dC0+TGVuZ3RoX0xvdyA+PiAxNjsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s2Ml0gPSBjb250ZXh0LT5MZW5ndGhfTG93ID4+IDg7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNjNdID0gY29udGV4dC0+TGVuZ3RoX0xvdzsKLSsKLSsgICAgU0hBMVByb2Nlc3NNZXNzYWdlQmxvY2soY29udGV4dCk7Ci0rfQotZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGExLmggYi9jb21tb24vc2hhMS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWQ0OWIxYgotLS0tIC9kZXYvbnVsbAotKysrIGIvY29tbW9uL3NoYTEuaAotQEAgLTAsMCArMSwxMDEgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgVGhlIEludGVybmV0IFNvY2lldHkgKDIwMDEpLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgZG9jdW1lbnQgYW5kIHRyYW5zbGF0aW9ucyBvZiBpdCBtYXkgYmUgY29waWVkIGFuZCBmdXJuaXNoZWQgdG8KLSsgKiBvdGhlcnMsIGFuZCBkZXJpdmF0aXZlIHdvcmtzIHRoYXQgY29tbWVudCBvbiBvciBvdGhlcndpc2UgZXhwbGFpbiBpdAotKyAqIG9yIGFzc2lzdCBpbiBpdHMgaW1wbGVtZW50YXRpb24gbWF5IGJlIHByZXBhcmVkLCBjb3BpZWQsIHB1Ymxpc2hlZAotKyAqIGFuZCBkaXN0cmlidXRlZCwgaW4gd2hvbGUgb3IgaW4gcGFydCwgd2l0aG91dCByZXN0cmljdGlvbiBvZiBhbnkKLSsgKiBraW5kLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcmUKLSsgKiBpbmNsdWRlZCBvbiBhbGwgc3VjaCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MuICBIb3dldmVyLCB0aGlzCi0rICogZG9jdW1lbnQgaXRzZWxmIG1heSBub3QgYmUgbW9kaWZpZWQgaW4gYW55IHdheSwgc3VjaCBhcyBieSByZW1vdmluZwotKyAqIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHJlZmVyZW5jZXMgdG8gdGhlIEludGVybmV0IFNvY2lldHkgb3Igb3RoZXIKLSsgKiBJbnRlcm5ldCBvcmdhbml6YXRpb25zLCBleGNlcHQgYXMgbmVlZGVkIGZvciB0aGUgcHVycG9zZSBvZgotKyAqIGRldmVsb3BpbmcgSW50ZXJuZXQgc3RhbmRhcmRzIGluIHdoaWNoIGNhc2UgdGhlIHByb2NlZHVyZXMgZm9yCi0rICogY29weXJpZ2h0cyBkZWZpbmVkIGluIHRoZSBJbnRlcm5ldCBTdGFuZGFyZHMgcHJvY2VzcyBtdXN0IGJlCi0rICogZm9sbG93ZWQsIG9yIGFzIHJlcXVpcmVkIHRvIHRyYW5zbGF0ZSBpdCBpbnRvIGxhbmd1YWdlcyBvdGhlciB0aGFuCi0rICogRW5nbGlzaC4KLSsgKgotKyAqIFRoZSBsaW1pdGVkIHBlcm1pc3Npb25zIGdyYW50ZWQgYWJvdmUgYXJlIHBlcnBldHVhbCBhbmQgd2lsbCBub3QgYmUKLSsgKiByZXZva2VkIGJ5IHRoZSBJbnRlcm5ldCBTb2NpZXR5IG9yIGl0cyBzdWNjZXNzb3JzIG9yIGFzc2lnbnMuCi0rICoKLSsgKiBUaGlzIGRvY3VtZW50IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBwcm92aWRlZCBvbiBhbgotKyAqICJBUyBJUyIgYmFzaXMgYW5kIFRIRSBJTlRFUk5FVCBTT0NJRVRZIEFORCBUSEUgSU5URVJORVQgRU5HSU5FRVJJTkcKLSsgKiBUQVNLIEZPUkNFIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcKLSsgKiBCVVQgTk9UIExJTUlURUQgVE8gQU5ZIFdBUlJBTlRZIFRIQVQgVEhFIFVTRSBPRiBUSEUgSU5GT1JNQVRJT04KLSsgKiBIRVJFSU4gV0lMTCBOT1QgSU5GUklOR0UgQU5ZIFJJR0hUUyBPUiBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotKyAqLwotKwotKy8qCi0rICogIHNoYTEuaAotKyAqCi0rICogIERlc2NyaXB0aW9uOgotKyAqICAgICAgVGhpcyBpcyB0aGUgaGVhZGVyIGZpbGUgZm9yIGNvZGUgd2hpY2ggaW1wbGVtZW50cyB0aGUgU2VjdXJlCi0rICogICAgICBIYXNoaW5nIEFsZ29yaXRobSAxIGFzIGRlZmluZWQgaW4gRklQUyBQVUIgMTgwLTEgcHVibGlzaGVkCi0rICogICAgICBBcHJpbCAxNywgMTk5NS4KLSsgKgotKyAqICAgICAgTWFueSBvZiB0aGUgdmFyaWFibGUgbmFtZXMgaW4gdGhpcyBjb2RlLCBlc3BlY2lhbGx5IHRoZQotKyAqICAgICAgc2luZ2xlIGNoYXJhY3RlciBuYW1lcywgd2VyZSB1c2VkIGJlY2F1c2UgdGhvc2Ugd2VyZSB0aGUgbmFtZXMKLSsgKiAgICAgIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgotKyAqCi0rICogICAgICBQbGVhc2UgcmVhZCB0aGUgZmlsZSBzaGExLmMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0rICoKLSsgKi8KLSsKLSsKLSsjaWZuZGVmIF9TSEExX0hfCi0rI2RlZmluZSBfU0hBMV9IXwotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsvKgotKyAqIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgSVNPIHN0YW5kYXJkIHN0ZGludC5oIGhlYWRlciBmaWxlLCB0aGVuIHlvdQotKyAqIG11c3QgdHlwZGVmIHRoZSBmb2xsb3dpbmc6Ci0rICogICAgbmFtZSAgICAgICAgICAgICAgbWVhbmluZwotKyAqICB1aW50MzJfdCAgICAgICAgIHVuc2lnbmVkIDMyIGJpdCBpbnRlZ2VyCi0rICogIHVpbnQ4X3QgICAgICAgICAgdW5zaWduZWQgOCBiaXQgaW50ZWdlciAoaS5lLiwgdW5zaWduZWQgY2hhcikKLSsgKiAgaW50X2xlYXN0MTZfdCAgICBpbnRlZ2VyIG9mID49IDE2IGJpdHMKLSsgKgotKyAqLwotKwotKyNpZm5kZWYgX1NIQV9lbnVtXwotKyNkZWZpbmUgX1NIQV9lbnVtXwotK2VudW0KLSt7Ci0rICAgIHNoYVN1Y2Nlc3MgPSAwLAotKyAgICBzaGFOdWxsLCAgICAgICAgICAgIC8qIE51bGwgcG9pbnRlciBwYXJhbWV0ZXIgKi8KLSsgICAgc2hhSW5wdXRUb29Mb25nLCAgICAvKiBpbnB1dCBkYXRhIHRvbyBsb25nICovCi0rICAgIHNoYVN0YXRlRXJyb3IgICAgICAgLyogY2FsbGVkIElucHV0IGFmdGVyIFJlc3VsdCAqLwotK307Ci0rI2VuZGlmCi0rI2RlZmluZSBTSEExSGFzaFNpemUgMjAKLSsKLSsvKgotKyAqICBUaGlzIHN0cnVjdHVyZSB3aWxsIGhvbGQgY29udGV4dCBpbmZvcm1hdGlvbiBmb3IgdGhlIFNIQS0xCi0rICogIGhhc2hpbmcgb3BlcmF0aW9uCi0rICovCi0rdHlwZWRlZiBzdHJ1Y3QgU0hBMUNvbnRleHQKLSt7Ci0rICAgIHVpbnQzMl90IEludGVybWVkaWF0ZV9IYXNoW1NIQTFIYXNoU2l6ZS80XTsgLyogTWVzc2FnZSBEaWdlc3QgICovCi0rCi0rICAgIHVpbnQzMl90IExlbmd0aF9Mb3c7ICAgICAgICAgICAgLyogTWVzc2FnZSBsZW5ndGggaW4gYml0cyAgICAgICovCi0rICAgIHVpbnQzMl90IExlbmd0aF9IaWdoOyAgICAgICAgICAgLyogTWVzc2FnZSBsZW5ndGggaW4gYml0cyAgICAgICovCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluZGV4IGludG8gbWVzc2FnZSBibG9jayBhcnJheSAgICovCi0rICAgIGludF9sZWFzdDE2X3QgTWVzc2FnZV9CbG9ja19JbmRleDsKLSsgICAgdWludDhfdCBNZXNzYWdlX0Jsb2NrWzY0XTsgICAgICAvKiA1MTItYml0IG1lc3NhZ2UgYmxvY2tzICAgICAgKi8KLSsKLSsgICAgaW50IENvbXB1dGVkOyAgICAgICAgICAgICAgIC8qIElzIHRoZSBkaWdlc3QgY29tcHV0ZWQ/ICAgICAgICAgKi8KLSsgICAgaW50IENvcnJ1cHRlZDsgICAgICAgICAgICAgLyogSXMgdGhlIG1lc3NhZ2UgZGlnZXN0IGNvcnJ1cHRlZD8gKi8KLSt9IFNIQTFDb250ZXh0OwotKwotKy8qCi0rICogIEZ1bmN0aW9uIFByb3RvdHlwZXMKLSsgKi8KLStpbnQgU0hBMVJlc2V0KCAgU0hBMUNvbnRleHQgKik7Ci0raW50IFNIQTFJbnB1dCggIFNIQTFDb250ZXh0ICosCi0rICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKiwKLSsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KTsKLStpbnQgU0hBMVJlc3VsdCggU0hBMUNvbnRleHQgKiwKLSsgICAgICAgICAgICAgICAgdWludDhfdCBNZXNzYWdlX0RpZ2VzdFtTSEExSGFzaFNpemVdKTsKLSsKLSsjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1mb3JtYXRfc3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAyLWZvcm1hdF9zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NmEyMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAyLWZvcm1hdF9zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1Gcm9tOiBMdWNhIEZhbGF2aWduYSA8ZGt0cmtyYW56QGRlYmlhbi5vcmc+Ci1EYXRlOiBUdWUsIDI3IEphbiAyMDE1IDAxOjI2OjA0ICswMDAwCi1TdWJqZWN0OiBmb3JtYXRfc3RyaW5nCi0KLS0tLQotIGNsaWVudF9leGFtcGxlcy9ndGt2bmN2aWV3ZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudF9leGFtcGxlcy9ndGt2bmN2aWV3ZXIuYyBiL2NsaWVudF9leGFtcGxlcy9ndGt2bmN2aWV3ZXIuYwotaW5kZXggMjYxYjJkYS4uODYxZTRlMyAxMDA2NDQKLS0tLSBhL2NsaWVudF9leGFtcGxlcy9ndGt2bmN2aWV3ZXIuYwotKysrIGIvY2xpZW50X2V4YW1wbGVzL2d0a3ZuY3ZpZXdlci5jCi1AQCAtNTg4LDcgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIEd0a0RlZmF1bHRMb2cgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotIAotIAl0aW1lICgmbG9nX2Nsb2NrKTsKLSAJc3RyZnRpbWUgKGJ1ZiwgMjU1LCAiJWQvJW0vJVkgJVggIiwgbG9jYWx0aW1lICgmbG9nX2Nsb2NrKSk7Ci0tCWZwcmludGYgKHN0ZG91dCwgYnVmKTsKLSsJZnByaW50ZiAoc3Rkb3V0LCAiJXMiLCBidWYpOwotIAotIAl2ZnByaW50ZiAoc3Rkb3V0LCBmb3JtYXQsIGFyZ3MpOwotIAlmZmx1c2ggKHN0ZG91dCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWJhODdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGlicmFyeSBmb3IgZWFzeSBpbXBsZW1lbnRhdGlvbiBvZiBhIFJEUC9WTkMgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJ2bmMuZ2l0aHViLmlvIgotU0VDVElPTiA9ICJsaWJzIgotUFJJT1JJVFkgPSAib3B0aW9uYWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzYxYjZiODM3Y2FkMjZjNjkwMGE5MjZiNjJhYWRhNWYiCi0KLURFUEVORFMgKz0gInpsaWIgbGlic2RsIGpwZWcgbGlicG5nIGd0aysgbGliZ2NyeXB0IG5ldHRsZSBnbnV0bHMgZ21wIgotUkRFUEVORFNfJHtQTn0gKz0gImxpYnBuZyBndGsrIGxpYmdjcnlwdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1TUkNfVVJJICA9ICJcCi0gICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYnYvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTArZGZzZy5vcmlnLnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLXdlYmNsaWVudHMtYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWNvbW1vbi1hZGQtc2hhMS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItZm9ybWF0X3N0cmluZy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlODgzYjZjN2JkMzM5YTVlMWM0ODY0NTA1MWFiZTVjNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODNmMjg4NjliODJhZWM1Nzc2OGQ3ZDE4Y2Q3ZmY4MWJmMDkyZWNiYmMxMjA5YjU4N2MyYzJjZDY4MzMwMjUwIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LUxpYlZOQ1NlcnZlci0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlidmEiCi0KLVRBUkdFVF9MREZMQUdTICs9ICItbGdjcnlwdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3ZDcyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCkBAIC0wLDAgKzEsMjMgQEAKK0RFU0NSSVBUSU9OID0gImxpYnJhcnkgZm9yIGVhc3kgaW1wbGVtZW50YXRpb24gb2YgYSBSRFAvVk5DIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGlidm5jLmdpdGh1Yi5pbyIKK1NFQ1RJT04gPSAibGlicyIKK1BSSU9SSVRZID0gIm9wdGlvbmFsIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM2MWI2YjgzN2NhZDI2YzY5MDBhOTI2YjYyYWFkYTVmIgorCitERVBFTkRTICs9ICJ6bGliIGxpYnNkbCBqcGVnIGxpYnBuZyBndGsrIGxpYmdjcnlwdCBuZXR0bGUgZ251dGxzIGdtcCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJycsZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICIsLHN5c3RlbWQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJwbmcgZ3RrKyBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vTGliVk5DL2xpYnZuY3NlcnZlci9hcmNoaXZlL0xpYlZOQ1NlcnZlci0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiN2YwNjEwNGQ1YzAwOTgxM2U5NTE0MjkzMmM0ZGRiMDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkzZDYzMDM3MjcyMmE1MzIxMzZmZDI1YzUzMjZiMmNhMWE2MzZjYmI4YmY5YmIxMTVlZjg2OWM4MDRkMjg5NCIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS1MaWJWTkNTZXJ2ZXItJHtQVn0iCisKK1RBUkdFVF9MREZMQUdTICs9ICItbGdjcnlwdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbV8wLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbV8wLjUuMy5iYgppbmRleCBjOThjM2ExLi44ZTdlZmNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG1fMC41LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtXzAuNS4zLmJiCkBAIC0zNCw3ICszNCw3IEBACiAiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNwICR7U1RBR0lOR19EQVRBRElSfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG8vCisgICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG8vCiB9CiAKIGRvX2NvbXBpbGVfYXBwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvZmlsZXMvMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvZmlsZXMvMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NmQ5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9maWxlcy8wMDAxLWJtcF9yZWFkX2luZm9faGVhZGVyLXJlamVjdC1ibXAtZmlsZXMtd2l0aC1iaUJpdENvdW4ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAyMjZmMDdlNGI0OWMyNzU3YjE4MWM2MmU2ODQxMDAwYzUxMjA1NGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IE1vbiwgMTQgQXVnIDIwMTcgMTc6MjY6NTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYm1wX3JlYWRfaW5mb19oZWFkZXIoKTogcmVqZWN0IGJtcCBmaWxlcyB3aXRoIGJpQml0Q291bnQgPT0gMAorICgjOTgzKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vdWNsb3V2YWluL29wZW5qcGVnL2NvbW1pdC9iYWYwYzFhZDQ1NzJkYWE4OWNhYTNiMTI5ODViZGQ5MzUzMGYwZGQ3XQorQ1ZFOiBDVkUtMjAxNy0xMjk4MgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iaW4vanAyL2NvbnZlcnRibXAuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iaW4vanAyL2NvbnZlcnRibXAuYyBiL3NyYy9iaW4vanAyL2NvbnZlcnRibXAuYworaW5kZXggYjQ5ZTdhMC4uMjcxNWZkZiAxMDA2NDQKKy0tLSBhL3NyYy9iaW4vanAyL2NvbnZlcnRibXAuYworKysrIGIvc3JjL2Jpbi9qcDIvY29udmVydGJtcC5jCitAQCAtMzkyLDYgKzM5MiwxMCBAQCBzdGF0aWMgT1BKX0JPT0wgYm1wX3JlYWRfaW5mb19oZWFkZXIoRklMRSogSU4sIE9QSl9CSVRNQVBJTkZPSEVBREVSKiBoZWFkZXIpCisgCisgICAgIGhlYWRlci0+YmlCaXRDb3VudCAgPSAoT1BKX1VJTlQxNilnZXRjKElOKTsKKyAgICAgaGVhZGVyLT5iaUJpdENvdW50IHw9IChPUEpfVUlOVDE2KSgoT1BKX1VJTlQzMilnZXRjKElOKSA8PCA4KTsKKysgICAgaWYgKGhlYWRlci0+YmlCaXRDb3VudCA9PSAwKSB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yLCBpbnZhbGlkIGJpQml0Q291bnQgJWRcbiIsIDApOworKyAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKysgICAgfQorIAorICAgICBpZiAoaGVhZGVyLT5iaVNpemUgPj0gNDBVKSB7CisgICAgICAgICBoZWFkZXItPmJpQ29tcHJlc3Npb24gID0gKE9QSl9VSU5UMzIpZ2V0YyhJTik7CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNGY3OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuSlBFRyBsaWJyYXJ5IGlzIGFuIG9wZW4tc291cmNlIEpQRUcgMjAwMCBjb2RlYyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmpwZWcub3JnIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NDg4NzhiNDg0MGQ3YmFiYWFkZTEzMDNlN2YxMDhjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91Y2xvdXZhaW4vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwY2M0YjJhZWUwYTliNmU5ZTIxYjdhYmNkMjAxYTNlYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmMyN2Y0N2ZjNzIxOWUyZWQ1NTM3YWM2OTU0NWJmMTVlZDhjNmJhOGU2ZTFlNTI5Zjg5ZjczNTY1MDZkYmFhIgotCi1pbmhlcml0IGNtYWtlCi0KLURFUEVORFMgPSAibGlicG5nIHRpZmYgbGNtcyB6bGliIgotCi0jIHN0YW5kYXJkIHBhdGggZm9yICouY21ha2UKLUVYVFJBX09FQ01BS0UgKz0gIi1ET1BFTkpQRUdfSU5TVEFMTF9QQUNLQUdFX0RJUj0ke2Jhc2VsaWJ9L2NtYWtlIFwKLSAgICAgICAgICAgICAgICAgIC1ET1BFTkpQRUdfSU5TVEFMTF9MSUJfRElSOlBBVEg9JHtsaWJkaXJ9IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8qLmNtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWYxYzQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4yLjAuYmIKQEAgLTAsMCArMSwyMSBAQAorREVTQ1JJUFRJT04gPSAiT3BlbkpQRUcgbGlicmFyeSBpcyBhbiBvcGVuLXNvdXJjZSBKUEVHIDIwMDAgY29kZWMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5qcGVnLm9yZyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjQ4ODc4YjQ4NDBkN2JhYmFhZGUxMzAzZTdmMTA4YyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdWNsb3V2YWluLyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjY5YmIwYjE3NTQ3NmYzYWRkY2MwZDAzYmQ5YTk3YjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZkZGJjZTVhNjE4ZTkxMGUwM2FkMDBkNjZlN2ZjZDA5Y2M2ZWUzMDdjZTY5OTMyNjY2ZDU0YzczYjdjNmU3YiIKKworaW5oZXJpdCBjbWFrZQorCitERVBFTkRTID0gImxpYnBuZyB0aWZmIGxjbXMgemxpYiIKKworIyBzdGFuZGFyZCBwYXRoIGZvciAqLmNtYWtlCitFWFRSQV9PRUNNQUtFICs9ICItRE9QRU5KUEVHX0lOU1RBTExfUEFDS0FHRV9ESVI9JHtiYXNlbGlifS9jbWFrZSBcCisgICAgICAgICAgICAgICAgICAtRE9QRU5KUEVHX0lOU1RBTExfTElCX0RJUjpQQVRIPSR7bGliZGlyfSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKi5jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDAyLUZpeC1pbWFnZS1oYW5kbGluZy1pbnRlZ2VyLW92ZXJmbG93cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDAyLUZpeC1pbWFnZS1oYW5kbGluZy1pbnRlZ2VyLW92ZXJmbG93cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU4MmQ2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwMi1GaXgtaW1hZ2UtaGFuZGxpbmctaW50ZWdlci1vdmVyZmxvd3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotRnJvbSAyNGU1NDhhMjIyZjBhYWI0MzEzZDViYThiMDRmMDg0MGIxNzMwMDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaXdhbWF0c3UgPGl3YW1hdHN1QDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOD4KLURhdGU6IE1vbiwgMzAgQXVnIDIwMTAgMDE6MjQ6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzhdIEZpeCBpbWFnZSBoYW5kbGluZyBpbnRlZ2VyIG92ZXJmbG93cwotCi1JbWFnZSBsb2FkaW5nIG1lbW9yeSBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBpbWFnZSB3aWR0aCBhbmQgaGVpZ2h0OgotIG1hbGxvYyhoZWlndGggKiB3aWR0aCAqIDMpLiAgUHJvdmlkaW5nIGFuIGltYWdlIHdpdGggbGFyZ2UgaGVpZ2h0IGFuZAotd2lkdGggdmFsdWVzIGNhbiBjYXVzZSB0aGUgcmVzdWx0IG9mIHRoaXMgY2FsY3VsYXRpb24gdG8gZXhjZWVkIHRoZQotbWF4aW11bSB2YWx1ZSBvZiBhbiB1bnNpZ25lZCBpbnQgYW5kIHRodXMgY2F1c2VzIGFuIGludGVnZXIgb3ZlcmZsb3cuCi1UaGUgcmVzdWx0OiB0b28gbGl0dGxlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYW5kIGFuIGhlYXAgb3ZlcmZsb3cgb2NjdXJzLgotCi1UaGlzIHBhdGNoIHdhcyBiYXNlZCBieSBOaWVscyBIZWluZW4gPG5pZWxzQGZyZWVic2Qub3JnPgotVGhhbmtzIQotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTc2IDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gY29uc3QuaCB8ICAgIDMgKysKLSBqcGVnLmMgIHwgICA1MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIHBuZy5jICAgfCAgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbnN0LmggYi9jb25zdC5oCi1pbmRleCBkZjA5ODljLi5hMThjNmYzIDEwMDY0NAotLS0tIGEvY29uc3QuaAotKysrIGIvY29uc3QuaAotQEAgLTQyLDQgKzQyLDcgQEAKLSAvLyB2YXJpYWJsZXMgcmVwbGFjZWQgaW4gcHJlLXNlc3Npb25fY21kIGFuZCBwb3N0LXNlc3Npb25fY21kCi0gI2RlZmluZSBVU0VSX1ZBUiAgICAgICAiJXVzZXIiCi0gCi0rLy8gbWF4IGhlaWdodC93aWR0aCBmb3IgaW1hZ2VzCi0rI2RlZmluZSBNQVhfRElNRU5TSU9OIDEwMDAwCi0rCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvanBlZy5jIGIvanBlZy5jCi1pbmRleCAxY2YxMDZjLi5lMWY4MzUyIDEwMDY0NAotLS0tIGEvanBlZy5jCi0rKysgYi9qcGVnLmMKLUBAIC0yMiwxNiArMjIsMjIgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgPGpwZWdsaWIuaD4KLSsjaW5jbHVkZSAiY29uc3QuaCIKLSAKLSBpbnQKLSByZWFkX2pwZWcoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0LCB1bnNpZ25lZCBjaGFyICoqcmdiKQotIHsKLSsgICAgaW50IHJldCA9IDA7Ci0gICAgIHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0IGNpbmZvOwotICAgICBzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsKLSAgICAgdW5zaWduZWQgY2hhciAqcHRyID0gTlVMTDsKLSAgICAgdW5zaWduZWQgaW50IGksIGlwb3M7Ci0gCi0gICAgIEZJTEUgKmluZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAicmIiKTsKLSsgICAgaWYgKGluZmlsZSA9PSBOVUxMKSB7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbiBub3QgZm9wZW4gZmlsZTogJXNcbiIsZmlsZW5hbWUpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSsgICAgfQotIAotICAgICBjaW5mby5lcnIgPSBqcGVnX3N0ZF9lcnJvcigmamVycik7Ci0gICAgIGpwZWdfY3JlYXRlX2RlY29tcHJlc3MoJmNpbmZvKTsKLUBAIC0zOSw0MyArNDUsMzkgQEAgcmVhZF9qcGVnKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYikKLSAgICAganBlZ19yZWFkX2hlYWRlcigmY2luZm8sIFRSVUUpOwotICAgICBqcGVnX3N0YXJ0X2RlY29tcHJlc3MoJmNpbmZvKTsKLSAKLSsgICAgLyogUHJldmVudCBhZ2FpbnN0IGludGVnZXIgb3ZlcmZsb3cgKi8KLSsgICAgaWYoY2luZm8ub3V0cHV0X3dpZHRoID49IE1BWF9ESU1FTlNJT04gfHwgY2luZm8ub3V0cHV0X2hlaWdodCA+PSBNQVhfRElNRU5TSU9OKSB7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVucmVhc29uYWJsZSBkaW1lbnNpb24gZm91bmQgaW4gZmlsZTogJXNcbiIsZmlsZW5hbWUpOwotKyAgICAgICAgZ290byBjbG9zZV9maWxlOwotKyAgICB9Ci0rCi0gICAgICp3aWR0aCA9IGNpbmZvLm91dHB1dF93aWR0aDsKLSAgICAgKmhlaWdodCA9IGNpbmZvLm91dHB1dF9oZWlnaHQ7Ci0gCi0gICAgIHJnYlswXSA9IG1hbGxvYygzICogY2luZm8ub3V0cHV0X3dpZHRoICogY2luZm8ub3V0cHV0X2hlaWdodCk7Ci0tICAgIGlmIChyZ2JbMF0gPT0gTlVMTCkKLS0gICAgewotKyAgICBpZiAocmdiWzBdID09IE5VTEwpIHsKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBKUEVHIGZpbGUuXG4iKTsKLS0gICAgZmNsb3NlKGluZmlsZSk7Ci0tICAgICAgICByZXR1cm4oMCk7Ci0rICAgICAgICBnb3RvIGNsb3NlX2ZpbGU7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGNpbmZvLm91dHB1dF9jb21wb25lbnRzID09IDMpCi0tICAgIHsKLSsgICAgaWYgKGNpbmZvLm91dHB1dF9jb21wb25lbnRzID09IDMpIHsKLSAgICAgICAgIHB0ciA9IHJnYlswXTsKLS0gICAgICAgIHdoaWxlIChjaW5mby5vdXRwdXRfc2NhbmxpbmUgPCBjaW5mby5vdXRwdXRfaGVpZ2h0KSAKLS0gICAgICAgIHsKLSsgICAgICAgIHdoaWxlIChjaW5mby5vdXRwdXRfc2NhbmxpbmUgPCBjaW5mby5vdXRwdXRfaGVpZ2h0KSB7Ci0gICAgICAgICAgICAganBlZ19yZWFkX3NjYW5saW5lcygmY2luZm8sICZwdHIsIDEpOwotICAgICAgICAgICAgIHB0ciArPSAzICogY2luZm8ub3V0cHV0X3dpZHRoOwotICAgICAgICAgfQotLSAgICB9Ci0tICAgIGVsc2UgaWYgKGNpbmZvLm91dHB1dF9jb21wb25lbnRzID09IDEpCi0tICAgIHsKLSsgICAgfSBlbHNlIGlmIChjaW5mby5vdXRwdXRfY29tcG9uZW50cyA9PSAxKSB7Ci0gICAgICAgICBwdHIgPSBtYWxsb2MoY2luZm8ub3V0cHV0X3dpZHRoKTsKLS0gICAgICAgIGlmIChwdHIgPT0gTlVMTCkKLS0gICAgICAgIHsKLSsgICAgICAgIGlmIChwdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBKUEVHIGZpbGUuXG4iKTsKLS0gICAgICAgIGZjbG9zZShpbmZpbGUpOwotLSAgICAgICAgICAgIHJldHVybigwKTsKLSsgICAgICAgICAgICBnb3RvIHJnYl9mcmVlOwotICAgICAgICAgfQotIAotICAgICAgICAgaXBvcyA9IDA7Ci0tICAgICAgICB3aGlsZSAoY2luZm8ub3V0cHV0X3NjYW5saW5lIDwgY2luZm8ub3V0cHV0X2hlaWdodCkgCi0tICAgICAgICB7Ci0rICAgICAgICB3aGlsZSAoY2luZm8ub3V0cHV0X3NjYW5saW5lIDwgY2luZm8ub3V0cHV0X2hlaWdodCkgewotICAgICAgICAgICAgIGpwZWdfcmVhZF9zY2FubGluZXMoJmNpbmZvLCAmcHRyLCAxKTsKLSAKLS0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2luZm8ub3V0cHV0X3dpZHRoOyBpKyspCi0tICAgICAgICAgICAgewotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjaW5mby5vdXRwdXRfd2lkdGg7IGkrKykgewotICAgICAgICAgICAgICAgICBtZW1zZXQocmdiWzBdICsgaXBvcywgcHRyW2ldLCAzKTsKLSAgICAgICAgICAgICAgICAgaXBvcyArPSAzOwotICAgICAgICAgICAgIH0KLUBAIC04NSw5ICs4NywxNiBAQCByZWFkX2pwZWcoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0LCB1bnNpZ25lZCBjaGFyICoqcmdiKQotICAgICB9Ci0gCi0gICAgIGpwZWdfZmluaXNoX2RlY29tcHJlc3MoJmNpbmZvKTsKLS0gICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJmNpbmZvKTsKLSAKLSsgICAgcmV0ID0gMTsKLSsgICAgZ290byBjbG9zZV9maWxlOwotKwotK3JnYl9mcmVlOgotKyAgICBmcmVlKHJnYlswXSk7Ci0rCi0rY2xvc2VfZmlsZToKLSsgICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJmNpbmZvKTsKLSAgICAgZmNsb3NlKGluZmlsZSk7Ci0gCi0tICAgIHJldHVybigxKTsKLSsgICAgcmV0dXJuKHJldCk7Ci0gfQotZGlmZiAtLWdpdCBhL3BuZy5jIGIvcG5nLmMKLWluZGV4IGEyNjYxYzYuLjVjMDg2YzYgMTAwNjQ0Ci0tLS0gYS9wbmcuYwotKysrIGIvcG5nLmMKLUBAIC0yMiwxMiArMjIsMTMgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2luY2x1ZGUgPHBuZy5oPgotKyNpbmNsdWRlICJjb25zdC5oIgotIAotIGludAotIHJlYWRfcG5nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYiwgCi0gICAgICB1bnNpZ25lZCBjaGFyICoqYWxwaGEpCi0gewotLSAgICBGSUxFICppbmZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInJiIik7Ci0rICAgIGludCByZXQgPSAwOwotIAotICAgICBwbmdfc3RydWN0cCBwbmdfcHRyOwotICAgICBwbmdfaW5mb3AgaW5mb19wdHI7Ci1AQCAtMzgsMzEgKzM5LDI3IEBAIHJlYWRfcG5nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYiwKLSAgICAgaW50IGJpdF9kZXB0aCwgY29sb3JfdHlwZSwgaW50ZXJsYWNlX3R5cGU7Ci0gICAgIGludCBpOwotIAotKyAgICBGSUxFICppbmZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInJiIik7Ci0rICAgIGlmIChpbmZpbGUgPT0gTlVMTCkgewotKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4gbm90IGZvcGVuIGZpbGU6ICVzXG4iLGZpbGVuYW1lKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rICAgIH0KLSsKLSAgICAgcG5nX3B0ciA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBuZ192b2lkcCkgTlVMTCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbmdfZXJyb3JfcHRyKSBOVUxMLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBuZ19lcnJvcl9wdHIpIE5VTEwpOwotLSAgICBpZiAoIXBuZ19wdHIpIAotLSAgICB7Ci0tICAgICAgICBmY2xvc2UoaW5maWxlKTsKLS0gICAgICAgIHJldHVybigwKTsKLS0gICAgfQotKyAgICBpZiAoIXBuZ19wdHIpCi0rICAgICAgICBnb3RvIGZpbGVfY2xvc2U7Ci0gICAKLSAgICAgaW5mb19wdHIgPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KHBuZ19wdHIpOwotLSAgICBpZiAoIWluZm9fcHRyKQotLSAgICB7Ci0rICAgIGlmICghaW5mb19wdHIpIHsKLSAgICAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAocG5nX2luZm9wcCkgTlVMTCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG5nX2luZm9wcCkgTlVMTCk7Ci0tICAgICAgICBmY2xvc2UoaW5maWxlKTsKLS0gICAgICAgIHJldHVybigwKTsKLSAgICAgfQotICAgCi0gICAgIGlmIChzZXRqbXAocG5nX3B0ci0+am1wYnVmKSkKLS0gICAgewotLSAgICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoJnBuZ19wdHIsICZpbmZvX3B0ciwgKHBuZ19pbmZvcHApIE5VTEwpOwotLSAgICAgICAgZmNsb3NlKGluZmlsZSk7Ci0tICAgICAgICByZXR1cm4oMCk7Ci0tICAgIH0KLSsgICAgICAgIGdvdG8gcG5nX2Rlc3Ryb3k7Ci0gICAKLSAgICAgcG5nX2luaXRfaW8ocG5nX3B0ciwgaW5maWxlKTsKLSAgICAgcG5nX3JlYWRfaW5mbyhwbmdfcHRyLCBpbmZvX3B0cik7Ci1AQCAtNzAsMTggKzY3LDIzIEBAIHJlYWRfcG5nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYiwKLSAgICAgcG5nX2dldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCAmdywgJmgsICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLAotICAgICAgICAgICAgICAgICAgJmludGVybGFjZV90eXBlLCAoaW50ICopIE5VTEwsIChpbnQgKikgTlVMTCk7Ci0gCi0rICAgIC8qIFByZXZlbnQgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93ICovCi0rICAgIGlmKHcgPj0gTUFYX0RJTUVOU0lPTiB8fCBoID49IE1BWF9ESU1FTlNJT04pIHsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5yZWFzb25hYmxlIGRpbWVuc2lvbiBmb3VuZCBpbiBmaWxlOiAlc1xuIixmaWxlbmFtZSk7Ci0rICAgICAgICBnb3RvIHBuZ19kZXN0cm95OwotKyAgICB9Ci0rCi0gICAgICp3aWR0aCA9IChpbnQpIHc7Ci0gICAgICpoZWlnaHQgPSAoaW50KSBoOwotICAgICAKLSAgICAgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBCi0tICAgIHx8IGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQSkKLS0gICAgewotLSAgICBhbHBoYVswXSA9IG1hbGxvYygqd2lkdGggKiAqaGVpZ2h0KTsKLS0gICAgaWYgKGFscGhhWzBdID09IE5VTEwpCi0tICAgIHsKLS0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhbHBoYSBjaGFubmVsIGluIFBORyBmaWxlLlxuIik7Ci0tICAgICAgICByZXR1cm4oMCk7IAotLSAgICB9Ci0rICAgICAgICB8fCBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpIHsKLSsgICAgICAgIGFscGhhWzBdID0gbWFsbG9jKCp3aWR0aCAqICpoZWlnaHQpOwotKyAgICAgICAgaWYgKGFscGhhWzBdID09IE5VTEwpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGFscGhhIGNoYW5uZWwgaW4gUE5HIGZpbGUuXG4iKTsKLSsgICAgICAgICAgICBnb3RvIHBuZ19kZXN0cm95OwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIC8qIENoYW5nZSBhIHBhbGV0dGVkL2dyYXlzY2FsZSBpbWFnZSB0byBSR0IgKi8KLUBAIC05NCw2OCArOTYsNzAgQEAgcmVhZF9wbmcoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0LCB1bnNpZ25lZCBjaGFyICoqcmdiLAotICAgICAgICAgcG5nX3NldF9ncmF5X3RvX3JnYihwbmdfcHRyKTsKLSAKLSAgICAgLyogSWYgdGhlIFBORyBmaWxlIGhhcyAxNiBiaXRzIHBlciBjaGFubmVsLCBzdHJpcCB0aGVtIGRvd24gdG8gOCAqLwotLSAgICBpZiAoYml0X2RlcHRoID09IDE2KSBwbmdfc2V0X3N0cmlwXzE2KHBuZ19wdHIpOwotKyAgICBpZiAoYml0X2RlcHRoID09IDE2KQotKyAgICAgICAgcG5nX3NldF9zdHJpcF8xNihwbmdfcHRyKTsKLSAKLSAgICAgLyogdXNlIDEgYnl0ZSBwZXIgcGl4ZWwgKi8KLSAgICAgcG5nX3NldF9wYWNraW5nKHBuZ19wdHIpOwotIAotICAgICByb3dfcG9pbnRlcnMgPSBtYWxsb2MoKmhlaWdodCAqIHNpemVvZihwbmdfYnl0ZXApKTsKLS0gICAgaWYgKHJvd19wb2ludGVycyA9PSBOVUxMKQotLSAgICB7Ci0rICAgIGlmIChyb3dfcG9pbnRlcnMgPT0gTlVMTCkgewotICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFBORyBmaWxlLlxuIik7Ci0tICAgICAgICByZXR1cm4oMCk7Ci0rICAgICAgICBnb3RvIHBuZ19kZXN0cm95OwotICAgICB9Ci0gCi0tICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspCi0tICAgIHsKLSsgICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykgewotICAgICAgICAgcm93X3BvaW50ZXJzW2ldID0gbWFsbG9jKDQgKiAqd2lkdGgpOwotLSAgICAgICAgaWYgKHJvd19wb2ludGVycyA9PSBOVUxMKQotLSAgICAgICAgewotKyAgICAgICAgaWYgKHJvd19wb2ludGVycyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFBORyBsaW5lLlxuIik7Ci0tICAgICAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgICAgIGdvdG8gcm93c19mcmVlOwotICAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIHBuZ19yZWFkX2ltYWdlKHBuZ19wdHIsIHJvd19wb2ludGVycyk7Ci0gCi0gICAgIHJnYlswXSA9IG1hbGxvYygzICogKndpZHRoICogKmhlaWdodCk7Ci0tICAgIGlmIChyZ2JbMF0gPT0gTlVMTCkKLS0gICAgewotKyAgICBpZiAocmdiWzBdID09IE5VTEwpIHsKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBQTkcgZmlsZS5cbiIpOwotLSAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgZ290byByb3dzX2ZyZWU7Ci0gICAgIH0KLSAKLSAgICAgaWYgKGFscGhhWzBdID09IE5VTEwpCi0gICAgIHsKLS0gICAgcHRyID0gcmdiWzBdOwotLSAgICBmb3IgKGkgPSAwOyBpIDwgKmhlaWdodDsgaSsrKQotLSAgICB7Ci0tICAgICAgICBtZW1jcHkocHRyLCByb3dfcG9pbnRlcnNbaV0sIDMgKiAqd2lkdGgpOwotLSAgICAgICAgcHRyICs9IDMgKiAqd2lkdGg7Ci0tICAgIH0KLS0gICAgfQotLSAgICBlbHNlCi0tICAgIHsKLS0gICAgaW50IGo7Ci0tICAgIHB0ciA9IHJnYlswXTsKLS0gICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykKLS0gICAgewotLSAgICAgICAgaW50IGlwb3MgPSAwOwotLSAgICAgICAgZm9yIChqID0gMDsgaiA8ICp3aWR0aDsgaisrKQotLSAgICAgICAgewotLSAgICAgICAgKnB0cisrID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0tICAgICAgICAqcHRyKysgPSByb3dfcG9pbnRlcnNbaV1baXBvcysrXTsKLS0gICAgICAgICpwdHIrKyA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotLSAgICAgICAgYWxwaGFbMF1baSAqICp3aWR0aCArIGpdID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0rICAgICAgICBwdHIgPSByZ2JbMF07Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKmhlaWdodDsgaSsrKSB7Ci0rICAgICAgICAgICAgbWVtY3B5KHB0ciwgcm93X3BvaW50ZXJzW2ldLCAzICogKndpZHRoKTsKLSsgICAgICAgICAgICBwdHIgKz0gMyAqICp3aWR0aDsKLSsgICAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGludCBqOwotKyAgICAgICAgcHRyID0gcmdiWzBdOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykgewotKyAgICAgICAgICAgIGludCBpcG9zID0gMDsKLSsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKndpZHRoOyBqKyspIHsKLSsgICAgICAgICAgICAgICAgKnB0cisrID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0rICAgICAgICAgICAgICAgICpwdHIrKyA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotKyAgICAgICAgICAgICAgICAqcHRyKysgPSByb3dfcG9pbnRlcnNbaV1baXBvcysrXTsKLSsgICAgICAgICAgICAgICAgYWxwaGFbMF1baSAqICp3aWR0aCArIGpdID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQotLSAgICB9Ci0gICAgIH0KLSAKLS0gICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoJnBuZ19wdHIsICZpbmZvX3B0ciwgKHBuZ19pbmZvcHApIE5VTEwpOwotKyAgICByZXQgPSAxOyAvKiBkYXRhIHJlYWRpbmcgaXMgT0sgKi8KLSsKLStyb3dzX2ZyZWU6Ci0rICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspIHsKLSsgICAgICAgIGlmIChyb3dfcG9pbnRlcnNbaV0gIT0gTlVMTCApIHsKLSsgICAgICAgICAgICBmcmVlKHJvd19wb2ludGVyc1tpXSk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSAKLS0gICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykgZnJlZShyb3dfcG9pbnRlcnNbaV0pOwotICAgICBmcmVlKHJvd19wb2ludGVycyk7Ci0gCi0rcG5nX2Rlc3Ryb3k6Ci0rICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIChwbmdfaW5mb3BwKSBOVUxMKTsKLSsKLStmaWxlX2Nsb3NlOgotICAgICBmY2xvc2UoaW5maWxlKTsKLS0gICAgcmV0dXJuKDEpOwotKyAgICByZXR1cm4ocmV0KTsKLSB9Ci0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDMtRml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1sZC1hcy1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwMy1GaXgtYnVpbGQtZmFpbHVyZS13aXRoLWxkLWFzLW5lZWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcxYzRmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwMy1GaXgtYnVpbGQtZmFpbHVyZS13aXRoLWxkLWFzLW5lZWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gNmFhZDkxM2RkZDVjZGI0NzNkYjlmYTIxYTVlOGVjZWM1OGRlMTcyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBXZWQsIDEyIEphbiAyMDExIDA0OjQxOjAyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy84XSBGaXggYnVpbGQgZmFpbHVyZSB3aXRoIGxkIC0tYXMtbmVlZGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTc3IDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gTWFrZWZpbGUgfCAgICA0ICsrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDEyMTlkZTQuLmZhZmEwZWYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQAotICMgdG8gZml0IGludG8geW91ciBvcGVyYXRpbmcgc3lzdGVtIC8gZGlzdHJpYnV0aW9uCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIENYWD0vdXNyL2Jpbi9nKysKLS1DQz0vdXNyL2Jpbi9nY2MKLStDQz0vdXNyL2Jpbi9nY2MtNC41Ci0gQ0ZMQUdTPS1XYWxsIC1JLiAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIgLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyL2NvbmZpZyAtSS91c3IvaW5jbHVkZS9saWJwbmcxMiAtSS91c3IvaW5jbHVkZQotIENYWEZMQUdTPSQoQ0ZMQUdTKQotIExERkxBR1M9LWxYZnQgLWxYMTEgLWxmcmVldHlwZSAtbFhyZW5kZXIgLWxmb250Y29uZmlnIC1scG5nMTIgLWx6IC1sbSAtbGNyeXB0IC1sWG11IC1scG5nIC1sanBlZyAtbHJ0Ci1AQCAtMzMsNyArMzMsNyBAQCBlbmRpZgotIGFsbDogc2xpbQotIAotIHNsaW06ICQoT0JKRUNUUykKLS0JJChDWFgpICQoTERGTEFHUykgJChPQkpFQ1RTKSAtbyAkKE5BTUUpCi0rCSQoQ1hYKSAkKE9CSkVDVFMpICQoTERGTEFHUykgLW8gJChOQU1FKQotIAotIC5jcHAubzoKLSAJJChDWFgpICQoQ1hYRkxBR1MpICQoREVGSU5FUykgJChDVVNUT00pIC1jICQ8IC1vICRACi0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDQtQWRkLXN1cHBvcnQtbGlicG5nMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNC1BZGQtc3VwcG9ydC1saWJwbmcxNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwODdjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNC1BZGQtc3VwcG9ydC1saWJwbmcxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYzIwNjdlOGMxNmJmYjcyMWQzMzk3MThhZTBjOTljNzBhOTk0OTM2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBGcmksIDE3IEp1biAyMDExIDIwOjM1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNC84XSBBZGQgc3VwcG9ydCBsaWJwbmcxNQotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTc4IDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gTWFrZWZpbGUgfCAgICA0ICsrLS0KLSBwbmcuYyAgICB8ICAgIDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBmYWZhMGVmLi4xMjAyNjE0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNSw5ICs1LDkgQEAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gQ1hYPS91c3IvYmluL2crKwotIENDPS91c3IvYmluL2djYy00LjUKLS1DRkxBR1M9LVdhbGwgLUkuIC1JL3Vzci9pbmNsdWRlL2ZyZWV0eXBlMiAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIvY29uZmlnIC1JL3Vzci9pbmNsdWRlL2xpYnBuZzEyIC1JL3Vzci9pbmNsdWRlCi0rQ0ZMQUdTPS1XYWxsIC1JLiAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIgLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyL2NvbmZpZyAtSS91c3IvaW5jbHVkZQotIENYWEZMQUdTPSQoQ0ZMQUdTKQotLUxERkxBR1M9LWxYZnQgLWxYMTEgLWxmcmVldHlwZSAtbFhyZW5kZXIgLWxmb250Y29uZmlnIC1scG5nMTIgLWx6IC1sbSAtbGNyeXB0IC1sWG11IC1scG5nIC1sanBlZyAtbHJ0Ci0rTERGTEFHUz0tbFhmdCAtbFgxMSAtbGZyZWV0eXBlIC1sWHJlbmRlciAtbGZvbnRjb25maWcgLWxwbmcgLWx6IC1sbSAtbGNyeXB0IC1sWG11IC1scG5nIC1sanBlZyAtbHJ0Ci0gQ1VTVE9NPS1ESEFWRV9TSEFET1cKLSBpZmRlZiBVU0VfUEFNCi0gTERGTEFHUys9IC1scGFtCi1kaWZmIC0tZ2l0IGEvcG5nLmMgYi9wbmcuYwotaW5kZXggNWMwODZjNi4uYWEwZjVlNSAxMDA2NDQKLS0tLSBhL3BuZy5jCi0rKysgYi9wbmcuYwotQEAgLTU3LDggKzU3LDEyIEBAIHJlYWRfcG5nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYiwKLSAgICAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAocG5nX2luZm9wcCkgTlVMTCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG5nX2luZm9wcCkgTlVMTCk7Ci0gICAgIH0KLS0gIAotKwotKyNpZiBQTkdfTElCUE5HX1ZFUl9NQUpPUiA+PSAxICYmIFBOR19MSUJQTkdfVkVSX01JTk9SID49IDQKLSsJaWYgKHNldGptcChwbmdfam1wYnVmKChkYXRhLT5wbmdfcHRyKSkpKQotKyNlbHNlCi0gICAgIGlmIChzZXRqbXAocG5nX3B0ci0+am1wYnVmKSkKLSsjZW5kaWYKLSAgICAgICAgIGdvdG8gcG5nX2Rlc3Ryb3k7Ci0gICAKLSAgICAgcG5nX2luaXRfaW8ocG5nX3B0ciwgaW5maWxlKTsKLS0tIAotMS42LjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNS1SZW1vdmUtcGF0aC1vZi1nY2MtYW1kLWctYW5kLXZlcnNpb24tb2YtZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA1LVJlbW92ZS1wYXRoLW9mLWdjYy1hbWQtZy1hbmQtdmVyc2lvbi1vZi1nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjZhZTM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA1LVJlbW92ZS1wYXRoLW9mLWdjYy1hbWQtZy1hbmQtdmVyc2lvbi1vZi1nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA0ZjY5ZWIxYWE4NWZiYjM5NWEwNDc0YjFmMzc2NTA1ZmFiODFlZTIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaXdhbWF0c3UgPGl3YW1hdHN1QDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOD4KLURhdGU6IEZyaSwgMTcgSnVuIDIwMTEgMjA6MzU6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzhdIFJlbW92ZSBwYXRoIG9mIGdjYyBhbWQgZysrLCBhbmQgdmVyc2lvbiBvZiBnKysKLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE3OSA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIE1ha2VmaWxlIHwgICAgNCArKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAxMjAyNjE0Li41YzVmZGUxIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMyw4ICszLDggQEAKLSAjIEVkaXQgdGhlIGZvbGxvd2luZyBzZWN0aW9uIHRvIGFkanVzdCB0aGUgb3B0aW9ucwotICMgdG8gZml0IGludG8geW91ciBvcGVyYXRpbmcgc3lzdGVtIC8gZGlzdHJpYnV0aW9uCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLUNYWD0vdXNyL2Jpbi9nKysKLS1DQz0vdXNyL2Jpbi9nY2MtNC41Ci0rQ1hYPWcrKwotK0NDPWdjYwotIENGTEFHUz0tV2FsbCAtSS4gLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyIC1JL3Vzci9pbmNsdWRlL2ZyZWV0eXBlMi9jb25maWcgLUkvdXNyL2luY2x1ZGUKLSBDWFhGTEFHUz0kKENGTEFHUykKLSBMREZMQUdTPS1sWGZ0IC1sWDExIC1sZnJlZXR5cGUgLWxYcmVuZGVyIC1sZm9udGNvbmZpZyAtbHBuZyAtbHogLWxtIC1sY3J5cHQgLWxYbXUgLWxwbmcgLWxqcGVnIC1scnQKLS0tIAotMS42LjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNi1SZW1vdmUtbG9jYWxob3N0LWZyb20tQXV0aGVudGljYXRvci1vZi1wYW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNi1SZW1vdmUtbG9jYWxob3N0LWZyb20tQXV0aGVudGljYXRvci1vZi1wYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YjgxMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDYtUmVtb3ZlLWxvY2FsaG9zdC1mcm9tLUF1dGhlbnRpY2F0b3Itb2YtcGFtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBlMTg4ZDVmZDNlM2MwZTQwYzNlMzU3MjlmZDhiODFiMTM4MTkxYTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaXdhbWF0c3UgPGl3YW1hdHN1QDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOD4KLURhdGU6IEZyaSwgMTcgSnVuIDIwMTEgMjA6MzU6MTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzhdIFJlbW92ZSBsb2NhbGhvc3QgZnJvbSBBdXRoZW50aWNhdG9yIG9mIHBhbQotCi1odHRwOi8vYnVncy5nZW50b28ub3JnLzM0NjAzNwotaHR0cHM6Ly9kZXZlbG9wZXIuYmVybGlvcy5kZS9idWdzLz9mdW5jPWRldGFpbGJ1ZyZidWdfaWQ9MTc3NTcmZ3JvdXBfaWQ9MjY2MwotaHR0cDovL3NvdXJjZXMuZ2VudG9vLm9yZy9jZ2ktYmluL3ZpZXd2Yy5jZ2kvZ2VudG9vLXg4Ni94MTEtbWlzYy9zbGltL2ZpbGVzLzM0NjAzNy1zdG9wX3NldHRpbmdfaG9zdF9mb3JfcGFtX2NrX2Nvbm5lY3Rvcl9zby5wYXRjaD92aWV3PWxvZwotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTgwIDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gYXBwLmNwcCB8ICAgIDIgLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FwcC5jcHAgYi9hcHAuY3BwCi1pbmRleCBjODBhNzNlLi43MTc3MzYzIDEwMDY0NAotLS0tIGEvYXBwLmNwcAotKysrIGIvYXBwLmNwcAotQEAgLTIzNiw4ICsyMzYsNiBAQCB2b2lkIEFwcDo6UnVuKCkgewotICAgICAgICAgcGFtLnN0YXJ0KCJzbGltIik7Ci0gICAgICAgICBwYW0uc2V0X2l0ZW0oUEFNOjpBdXRoZW50aWNhdG9yOjpUVFksIERpc3BsYXlOYW1lKTsKLSAgICAgICAgIHBhbS5zZXRfaXRlbShQQU06OkF1dGhlbnRpY2F0b3I6OlJlcXVlc3RvciwgInJvb3QiKTsKLS0gICAgICAgIHBhbS5zZXRfaXRlbShQQU06OkF1dGhlbnRpY2F0b3I6Okhvc3QsICJsb2NhbGhvc3QiKTsKLS0KLSAgICAgfQotICAgICBjYXRjaChQQU06OkV4Y2VwdGlvbiYgZSl7Ci0gICAgICAgICBjZXJyIDw8IEFQUE5BTUUgPDwgIjogIiA8PCBlIDw8IGVuZGw7Ci0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDctRml4LXR0eS1zbG93bmVzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA3LUZpeC10dHktc2xvd25lc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjUwMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDctRml4LXR0eS1zbG93bmVzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZGExNzJmZDYyMzRiM2IyYjQ4N2FiMzZkNjNkYTcyNzU4ODI5Y2IxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBGcmksIDE3IEp1biAyMDExIDIwOjM1OjE1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNy84XSBGaXggdHR5IHNsb3duZXNzCi0KLVNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotZ2l0LXN2bi1pZDogc3ZuOi8vc3ZuLmJlcmxpb3MuZGUvc2xpbS90cnVua0AxODEgN2M1M2U3Y2MtOThlYS0wMzEwLThmMWYtYTBiMjRkYTYwNDA4Ci0tLS0KLSBhcHAuY3BwIHwgICAxMCArKysrKystLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcHAuY3BwIGIvYXBwLmNwcAotaW5kZXggNzE3NzM2My4uNDRhYjA5OSAxMDA2NDQKLS0tLSBhL2FwcC5jcHAKLSsrKyBiL2FwcC5jcHAKLUBAIC0yNzgsMjEgKzI3OCwyMyBAQCB2b2lkIEFwcDo6UnVuKCkgewotICAgICAgICAgc2lnbmFsKFNJR0FMUk0sIEFsYXJtU2lnbmFsKTsKLSAKLSAjaWZuZGVmIFhORVNUX0RFQlVHCi0tICAgICAgICBPcGVuTG9nKCk7Ci0tICAgICAgICAKLSAgICAgICAgIGlmICghZm9yY2Vfbm9kYWVtb24gJiYgY2ZnLT5nZXRPcHRpb24oImRhZW1vbiIpID09ICJ5ZXMiKSB7Ci0gICAgICAgICAgICAgZGFlbW9ubW9kZSA9IHRydWU7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICAvLyBEYWVtb25pemUKLSAgICAgICAgIGlmIChkYWVtb25tb2RlKSB7Ci0tICAgICAgICAgICAgaWYgKGRhZW1vbigwLCAxKSA9PSAtMSkgewotKyAgICAgICAgICAgIGlmIChkYWVtb24oMCwgMCkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgY2VyciA8PCBBUFBOQU1FIDw8ICI6ICIgPDwgc3RyZXJyb3IoZXJybm8pIDw8IGVuZGw7Ci0gICAgICAgICAgICAgICAgIGV4aXQoRVJSX0VYSVQpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBVcGRhdGVQaWQoKTsKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIE9wZW5Mb2coKTsKLSsKLSsgICAgICAgIGlmIChkYWVtb25tb2RlKQotKyAgICAgICAgICAgIFVwZGF0ZVBpZCgpOwotKwotICAgICAgICAgQ3JlYXRlU2VydmVyQXV0aCgpOwotICAgICAgICAgU3RhcnRTZXJ2ZXIoKTsKLSAgICAgICAgIGFsYXJtKDIpOwotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA4LXJlc3RhcnQtWHNlcnZlci1pZi1raWxsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwOC1yZXN0YXJ0LVhzZXJ2ZXItaWYta2lsbGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzVjZmI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA4LXJlc3RhcnQtWHNlcnZlci1pZi1raWxsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAsMCBAQAotRnJvbSBlZTc3YTNkMTU0NDQzZDI4MjNlY2JmMjE0MWRhYTFiNTkyNGY2MjlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaXdhbWF0c3UgPGl3YW1hdHN1QDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOD4KLURhdGU6IEZyaSwgMTcgSnVuIDIwMTEgMjA6Mzg6MzQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA4LzhdIHJlc3RhcnQgWHNlcnZlciBpZiBraWxsZWQKLQotUGF0Y2ggZnJvbSBodHRwOi8vZGV2ZWxvcGVyLmJlcmxpb3MuZGUvcGF0Y2gvP2Z1bmM9ZGV0YWlscGF0Y2gmcGF0Y2hfaWQ9MjM3OCZncm91cF9pZD0yNjYzLgotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTgyIDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gYXBwLmNwcCB8ICAgMzYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gYXBwLmggICB8ICAgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXBwLmNwcCBiL2FwcC5jcHAKLWluZGV4IDQ0YWIwOTkuLjM1OGE5OGYgMTAwNjQ0Ci0tLS0gYS9hcHAuY3BwCi0rKysgYi9hcHAuY3BwCi1AQCAtMTA0LDYgKzEwNCwxMSBAQCBpbnQgY29udihpbnQgbnVtX21zZywgY29uc3Qgc3RydWN0IHBhbV9tZXNzYWdlICoqbXNnLAotIAotIGV4dGVybiBBcHAqIExvZ2luQXBwOwotIAotK2ludCB4aW9lcnJvcihEaXNwbGF5ICpkaXNwKSB7Ci0rCUxvZ2luQXBwLT5SZXN0YXJ0U2VydmVyKCk7Ci0rICAgIHJldHVybiAwOwotK30KLSsKLSB2b2lkIENhdGNoU2lnbmFsKGludCBzaWcpIHsKLSAgICAgY2VyciA8PCBBUFBOQU1FIDw8ICI6IHVuZXhwZWN0ZWQgc2lnbmFsICIgPDwgc2lnIDw8IGVuZGw7Ci0gCi1AQCAtMTE0LDE5ICsxMTksNiBAQCB2b2lkIENhdGNoU2lnbmFsKGludCBzaWcpIHsKLSAgICAgZXhpdChFUlJfRVhJVCk7Ci0gfQotIAotLQotLXZvaWQgQWxhcm1TaWduYWwoaW50IHNpZykgewotLSAgICBpbnQgcGlkID0gTG9naW5BcHAtPkdldFNlcnZlclBJRCgpOwotLSAgICBpZih3YWl0cGlkKHBpZCwgTlVMTCwgV05PSEFORykgPT0gcGlkKSB7Ci0tICAgICAgICBMb2dpbkFwcC0+U3RvcFNlcnZlcigpOwotLSAgICAgICAgTG9naW5BcHAtPlJlbW92ZUxvY2soKTsKLS0gICAgICAgIGV4aXQoT0tfRVhJVCk7Ci0tICAgIH0KLS0gICAgc2lnbmFsKHNpZywgQWxhcm1TaWduYWwpOwotLSAgICBhbGFybSgyKTsKLS19Ci0tCi0tCi0gdm9pZCBVc2VyMVNpZ25hbChpbnQgc2lnKSB7Ci0gICAgIHNpZ25hbChzaWcsIFVzZXIxU2lnbmFsKTsKLSB9Ci1AQCAtMjc1LDcgKzI2Nyw2IEBAIHZvaWQgQXBwOjpSdW4oKSB7Ci0gICAgICAgICBzaWduYWwoU0lHSFVQLCBDYXRjaFNpZ25hbCk7Ci0gICAgICAgICBzaWduYWwoU0lHUElQRSwgQ2F0Y2hTaWduYWwpOwotICAgICAgICAgc2lnbmFsKFNJR1VTUjEsIFVzZXIxU2lnbmFsKTsKLS0gICAgICAgIHNpZ25hbChTSUdBTFJNLCBBbGFybVNpZ25hbCk7Ci0gCi0gI2lmbmRlZiBYTkVTVF9ERUJVRwotICAgICAgICAgaWYgKCFmb3JjZV9ub2RhZW1vbiAmJiBjZmctPmdldE9wdGlvbigiZGFlbW9uIikgPT0gInllcyIpIHsKLUBAIC0yOTcsNyArMjg4LDYgQEAgdm9pZCBBcHA6OlJ1bigpIHsKLSAKLSAgICAgICAgIENyZWF0ZVNlcnZlckF1dGgoKTsKLSAgICAgICAgIFN0YXJ0U2VydmVyKCk7Ci0tICAgICAgICBhbGFybSgyKTsKLSAjZW5kaWYKLSAKLSAgICAgfQotQEAgLTYxMyw2ICs2MDMsOCBAQCB2b2lkIEFwcDo6TG9naW4oKSB7Ci0gICAgIGludCBzdGF0dXM7Ci0gICAgIHdoaWxlICh3cGlkICE9IHBpZCkgewotICAgICAgICAgd3BpZCA9IHdhaXQoJnN0YXR1cyk7Ci0rCQlpZiAod3BpZCA9PSBTZXJ2ZXJQSUQpCi0rCQkJeGlvZXJyb3IoRHB5KTsJLy8gU2VydmVyIGRpZWQsIHNpbXVsYXRlIElPIGVycm9yCi0gICAgIH0KLSAgICAgaWYgKFdJRkVYSVRFRChzdGF0dXMpICYmIFdFWElUU1RBVFVTKHN0YXR1cykpIHsKLSAgICAgICAgIExvZ2luUGFuZWwtPk1lc3NhZ2UoIkZhaWxlZCB0byBleGVjdXRlIGxvZ2luIGNvbW1hbmQiKTsKLUBAIC02NTgsOSArNjUwLDYgQEAgdm9pZCBBcHA6OkxvZ2luKCkgewotIAotIAotIHZvaWQgQXBwOjpSZWJvb3QoKSB7Ci0tICAgIC8vIFN0b3AgYWxhcm0gY2xvY2sKLS0gICAgYWxhcm0oMCk7Ci0tCi0gI2lmZGVmIFVTRV9QQU0KLSAgICAgdHJ5ewotICAgICAgICAgcGFtLmVuZCgpOwotQEAgLTY4Myw5ICs2NzIsNiBAQCB2b2lkIEFwcDo6UmVib290KCkgewotIAotIAotIHZvaWQgQXBwOjpIYWx0KCkgewotLSAgICAvLyBTdG9wIGFsYXJtIGNsb2NrCi0tICAgIGFsYXJtKDApOwotLQotICNpZmRlZiBVU0VfUEFNCi0gICAgIHRyeXsKLSAgICAgICAgIHBhbS5lbmQoKTsKLUBAIC03NzEsNiArNzU3LDcgQEAgdm9pZCBBcHA6OlJlc3RhcnRTZXJ2ZXIoKSB7Ci0gCi0gICAgIFN0b3BTZXJ2ZXIoKTsgCi0gICAgIFJlbW92ZUxvY2soKTsKLSsJd2hpbGUgKHdhaXRwaWQoLTEsIE5VTEwsIFdOT0hBTkcpID4gMCk7IC8vIENvbGxlY3RzIGFsbCBkZWFkIGNoaWxkcmVucwotICAgICBSdW4oKTsKLSB9IAotIAotQEAgLTg0MSw2ICs4MjgsNyBAQCBpbnQgQXBwOjpXYWl0Rm9yU2VydmVyKCkgewotIAotICAgICBmb3IoY3ljbGVzID0gMDsgY3ljbGVzIDwgbmN5Y2xlczsgY3ljbGVzKyspIHsKLSAgICAgICAgIGlmKChEcHkgPSBYT3BlbkRpc3BsYXkoRGlzcGxheU5hbWUpKSkgewotKyAgICAgICAgICAgIFhTZXRJT0Vycm9ySGFuZGxlcih4aW9lcnJvcik7Ci0gICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIGlmKCFTZXJ2ZXJUaW1lb3V0KDEsIChjaGFyICopICJYIHNlcnZlciB0byBiZWdpbiBhY2NlcHRpbmcgY29ubmVjdGlvbnMiKSkKLUBAIC05MjUsOSArOTEzLDYgQEAgaW50IEFwcDo6U3RhcnRTZXJ2ZXIoKSB7Ci0gICAgICAgICAgICAgU2VydmVyUElEID0gLTE7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tICAgICAgICBhbGFybSgxNSk7Ci0tICAgICAgICBwYXVzZSgpOwotLSAgICAgICAgYWxhcm0oMCk7Ci0gCi0gICAgICAgICAvLyBXYWl0IGZvciBzZXJ2ZXIgdG8gc3RhcnQgdXAKLSAgICAgICAgIGlmKFdhaXRGb3JTZXJ2ZXIoKSA9PSAwKSB7Ci1AQCAtOTYyLDE1ICs5NDcsMTIgQEAgaW50IElnbm9yZVhJTyhEaXNwbGF5ICpkKSB7Ci0gCi0gCi0gdm9pZCBBcHA6OlN0b3BTZXJ2ZXIoKSB7Ci0tICAgIC8vIFN0b3AgYWxhcnMgY2xvY2sgYW5kIGlnbm9yZSBzaWduYWxzCi0tICAgIGFsYXJtKDApOwotICAgICBzaWduYWwoU0lHUVVJVCwgU0lHX0lHTik7Ci0gICAgIHNpZ25hbChTSUdJTlQsIFNJR19JR04pOwotICAgICBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsKLSAgICAgc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotICAgICBzaWduYWwoU0lHVEVSTSwgU0lHX0RGTCk7Ci0gICAgIHNpZ25hbChTSUdLSUxMLCBTSUdfREZMKTsKLS0gICAgc2lnbmFsKFNJR0FMUk0sIFNJR19ERkwpOwotIAotICAgICAvLyBDYXRjaCBYIGVycm9yCi0gICAgIFhTZXRJT0Vycm9ySGFuZGxlcihJZ25vcmVYSU8pOwotZGlmZiAtLWdpdCBhL2FwcC5oIGIvYXBwLmgKLWluZGV4IGRkN2MyODEuLjJkYjEwMzggMTAwNjQ0Ci0tLS0gYS9hcHAuaAotKysrIGIvYXBwLmgKLUBAIC0zNCw2ICszNCw3IEBAIHB1YmxpYzoKLSAgICAgfkFwcCgpOwotICAgICB2b2lkIFJ1bigpOwotICAgICBpbnQgR2V0U2VydmVyUElEKCk7Ci0rICAgIHZvaWQgUmVzdGFydFNlcnZlcigpOwotICAgICB2b2lkIFN0b3BTZXJ2ZXIoKTsKLSAKLSAJYm9vbCBzZXJ2ZXJTdGFydGVkOwotQEAgLTQ5LDcgKzUwLDYgQEAgcHJpdmF0ZToKLSAgICAgdm9pZCBDb25zb2xlKCk7Ci0gICAgIHZvaWQgRXhpdCgpOwotICAgICB2b2lkIEtpbGxBbGxDbGllbnRzKEJvb2wgdG9wKTsKLS0gICAgdm9pZCBSZXN0YXJ0U2VydmVyKCk7Ci0gICAgIHZvaWQgUmVhZENvbmZpZygpOwotICAgICB2b2lkIE9wZW5Mb2coKTsKLSAgICAgdm9pZCBDbG9zZUxvZygpOwotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbV8xLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbV8xLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiZGNhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW1fMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1ERVNDUklQVElPTj0iU2ltcGxlIExvZ2luIE1hbmFnZXIiCi1IT01FUEFHRT0iaHR0cDovL3NsaW0uYmVybGlvcy5kZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCi0KLVBSID0gInIxIgotCi1ERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhtdSBsaWJwbmcganBlZyBmcmVldHlwZSBzZXNzcmVnICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZG93bmxvYWQuYmVybGlvcy5kZS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMi1GaXgtaW1hZ2UtaGFuZGxpbmctaW50ZWdlci1vdmVyZmxvd3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLUZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbGQtYXMtbmVlZGVkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1saWJwbmcxNS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtUmVtb3ZlLXBhdGgtb2YtZ2NjLWFtZC1nLWFuZC12ZXJzaW9uLW9mLWcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LVJlbW92ZS1sb2NhbGhvc3QtZnJvbS1BdXRoZW50aWNhdG9yLW9mLXBhbS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDctRml4LXR0eS1zbG93bmVzcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtcmVzdGFydC1Yc2VydmVyLWlmLWtpbGxlZC5wYXRjaCBcCi0gICAgZmlsZTovL3NsaW0tZHlud20gXAotICAgIGZpbGU6Ly91cGRhdGVfc2xpbV93bWxpc3QgXAotICAgIGZpbGU6Ly9NYWtlZmlsZS5vZSBcCi0gICAgZmlsZTovL3NsaW0ucGFtZCBcCi0gICAgZmlsZTovL3NsaW0uc2VydmljZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTFhZTYxMjBlNmY0YjQ5NjlmMmQ2Y2Y5NGY0N2I0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTU2MDEyNTAwNWYyNTNiOWI4ODIyMDU5OGZlZDdhOTU3NWVmNDA1NzE2ODYyYzZjYTNmY2M3MmRiZDQ4MmI4IgotCi0KLUVYVFJBX09FTUFLRSArPSAiIFwKLSAgICBVU0VfUEFNPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJzEnLCAnMCcsIGQpfSBcCi0gICAgUFJFRklYPSR7cHJlZml4fSBcCi0gICAgQ0ZHRElSPSR7c3lzY29uZmRpcn0gXAotICAgIE1BTkRJUj0ke21hbmRpcn0gXAotICAgIERFU1RESVI9JHtEfSBcCi0gICAgQ0ZMQUdTKz0tSSR7U1RBR0lOR19JTkNESVJ9L2ZyZWV0eXBlMiBcCi0gICAgQ1hYRkxBR1MrPS1JJHtTVEFHSU5HX0lOQ0RJUn0vZnJlZXR5cGUyIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGNwIC1wUCAke1dPUktESVJ9L01ha2VmaWxlLm9lICR7U30vTWFrZWZpbGUKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zbGltLWR5bndtICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdXBkYXRlX3NsaW1fd21saXN0ICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbGltLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc2xpbQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0KLSAgICBlY2hvICdzZXNzaW9uc3RhcnRfY21kICAgIC91c3IvYmluL3Nlc3NyZWcgLWEgLWwgJERJU1BMQVkgJXVzZXInID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NsaW0uY29uZgotICAgIGVjaG8gJ3Nlc3Npb25zdG9wX2NtZCAgICAgL3Vzci9iaW4vc2Vzc3JlZyAtZCAtbCAkRElTUExBWSAldXNlcicgPj4gJHtEfSR7c3lzY29uZmRpcn0vc2xpbS5jb25mCi19Ci0KLQotUkRFUEVORFNfJHtQTn0gPSAicGVybCB4YXV0aCBmcmVldHlwZSBzZXNzcmVnICIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLWlmIHRlc3QgIngkRCIgIT0gIngiOyB0aGVuCi0gICAgZXhpdCAxCi1maQotc3lzdGVtY3RsIGVuYWJsZSBzbGltLnNlcnZpY2UKLQotIyBSZWdpc3RlciBTTGlNIGFzIGRlZmF1bHQgRE0KLW1rZGlyIC1wICR7c3lzY29uZmRpcn0vWDExLwotZWNobyAiJHtiaW5kaXJ9L3NsaW0iID4gJHtzeXNjb25mZGlyfS9YMTEvZGVmYXVsdC1kaXNwbGF5LW1hbmFnZXIKLX0KLQotcGtnX3Bvc3RybV8ke1BOfSAoKSB7Ci1pZiB0ZXN0ICJ4JEQiICE9ICJ4IjsgdGhlbgotICAgIGV4aXQgMQotZmkKLXN5c3RlbWN0bCBkaXNhYmxlIHNsaW0uc2VydmljZQotc2VkIC1pIC9zbGltL2QgJEQke3N5c2NvbmZkaXJ9L1gxMS9kZWZhdWx0LWRpc3BsYXktbWFuYWdlciB8fCB0cnVlCi19Ci0KLVBOQkxBQ0tMSVNUW3NsaW1dID89ICJkb2VzIG5vdCBidWlsZCB3aXRoIGRpc3Ryb2xlc3MgcWVtdWFybSBhcyByZXBvcnRlZCBpbiAnU3RhdGUgb2YgYml0YmFrZSB3b3JsZCcgdGhyZWFkLCBub2JvZHkgdm9sdW50ZWVyZWQgdG8gZml4IHRoZW0gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXJtaW51cy1mb250L3Rlcm1pbnVzLWZvbnRfNC4zOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3Rlcm1pbnVzLWZvbnQvdGVybWludXMtZm9udF80LjM4LmJiCmluZGV4IDRjODM5OWQuLmM0NjBmYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3Rlcm1pbnVzLWZvbnQvdGVybWludXMtZm9udF80LjM4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3Rlcm1pbnVzLWZvbnQvdGVybWludXMtZm9udF80LjM4LmJiCkBAIC04LDcgKzgsNyBAQAogTElDRU5TRSA9ICJPRkwtMS4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vT0ZMLlRYVDttZDU9OWNhZGIyNmY0YzVjMDA1NjE4YzVhZTc0ZjA0MWVjNTQiCiAKLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUgZ3ppcC1uYXRpdmUiCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGd6aXAtbmF0aXZlIGJkZnRvcGNmLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiYThlNzkyZmU2ZTg0Yzg2ZWQyYjZlZDNlMmExMmJhNjYiCkBAIC00Myw1ICs0MywzIEBACiBGSUxFU18ke1BOfS1jb25zb2xlZm9udHMgPSAiJHtkYXRhZGlyfS9jb25zb2xlZm9udHMiCiBGSUxFU18ke1BOfS1jb25zb2xldHJhbnMgPSAiJHtkYXRhZGlyfS9jb25zb2xldHJhbnMiCiBGSUxFU18ke1BOfS1wY2YgPSAiJHtkYXRhZGlyfS9mb250cy90ZXJtaW51cyIKLQotUE5CTEFDS0xJU1RbdGVybWludXMtZm9udF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MzgvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGVzc2VyYWN0L3Rlc3NlcmFjdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXNzZXJhY3QvdGVzc2VyYWN0X2dpdC5iYgppbmRleCBjMjY3NWNkLi44OWQwOWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXNzZXJhY3QvdGVzc2VyYWN0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXNzZXJhY3QvdGVzc2VyYWN0X2dpdC5iYgpAQCAtMSwxMSArMSwxMiBAQAogU1VNTUFSWSA9ICJBIGNvbW1lcmNpYWwgcXVhbGl0eSBPQ1IgZW5naW5lICIKIAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzBjOTRiM2M4NmFkMGMzODZiYjZkZWM3MGNhOGEzNmEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZWE0ZjlhNDNhYmE5ZDNjODQ5ZmU1YzIwM2EwZWQ0MCIKIAotUFYgPSAiMy4wNC4wMCtnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICIyMjgzMTdjYWExY2VkMjE3ZTZkMjY0YWFmYzkwMWYzNjFlY2Q3ZTkwIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLyR7QlBOfS1vY3IvJHtCUE59LmdpdCIKK0JSQU5DSCA9ICIzLjA1IgorUFYgPSAiJHtCUkFOQ0h9LjAxK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjIxNTg2NjE1MWU3NzQ5NzJjOTUwMjI4MjExMWI5OThkN2EwNTM1NjIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vJHtCUE59LW9jci8ke0JQTn0uZ2l0O2JyYW5jaD0ke0JSQU5DSH0iCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBERVBFTkRTID0gImxlcHRvbmljYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDEtdGlnZXJ2bmMtcmVtb3ZlLWluY2x1ZGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAxLXRpZ2Vydm5jLXJlbW92ZS1pbmNsdWRlZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYzQzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAxLXRpZ2Vydm5jLXJlbW92ZS1pbmNsdWRlZGlyLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNGI0MjNjZDJlNWU0Mjk2YWJjYTNiZTU1M2JmNjRkOGNjMjg3MTgwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjAgSnVsIDIwMTcgMTc6MDk6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIHRpZ2Vydm5jOiByZW1vdmUgaW5jbHVkZWRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+CisKK0l0IGZpeGVzIGhvc3QgY29udGFtaW5hdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB1bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdW5peC94c2VydmVyL2h3L3ZuYy9NYWtlZmlsZS5hbSBiL3VuaXgveHNlcnZlci9ody92bmMvTWFrZWZpbGUuYW0KK2luZGV4IDBkNmE0YWMuLjg1NGYwNzggMTAwNjQ0CistLS0gYS91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtCisrKysgYi91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtCitAQCAtMjIsNyArMjIsNyBAQCBsaWJ2bmNjb21tb25fbGFfU09VUkNFUyA9ICQoSERSUykgXAorIAorIGxpYnZuY2NvbW1vbl9sYV9DUFBGTEFHUyA9IC1EVkVORE9SX1JFTEVBU0U9IiQoVkVORE9SX1JFTEVBU0UpIiBcCisgCS1EVkVORE9SX1NUUklORz0iXCIkKFZFTkRPUl9TVFJJTkcpXCIiIC1JJChUSUdFUlZOQ19TUkNESVIpL2NvbW1vbiAtVUhBVkVfQ09ORklHX0ggXAorLQktSSQoVElHRVJWTkNfU1JDRElSKS91bml4L3ZuY2NvbmZpZyAkKFhWTkNfQ1BQRkxBR1MpICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSAtSSQoaW5jbHVkZWRpcikgXAorKwktSSQoVElHRVJWTkNfU1JDRElSKS91bml4L3ZuY2NvbmZpZyAkKFhWTkNfQ1BQRkxBR1MpICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSBcCisgCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCisgCisgYmluX1BST0dSQU1TID0gWHZuYworQEAgLTQyLDcgKzQyLDcgQEAgWHZuY19DUFBGTEFHUyA9ICQoWFZOQ19DUFBGTEFHUykgLURUSUdFUlZOQyAtRE5PX01PRFVMRV9FWFRTIFwKKyAJLVVIQVZFX0NPTkZJR19IIFwKKyAJLURYRnJlZTg2U2VydmVyIC1EVkVORE9SX1JFTEVBU0U9IiQoVkVORE9SX1JFTEVBU0UpIiBcCisgCS1EVkVORE9SX1NUUklORz0iXCIkKFZFTkRPUl9TVFJJTkcpXCIiIC1JJChUSUdFUlZOQ19TUkNESVIpL2NvbW1vbiBcCistCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSAtSSQoaW5jbHVkZWRpcikKKysJLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgJHtYU0VSVkVSTElCU19DRkxBR1N9CisgCisgWHZuY19MREFERCA9ICQoWFZOQ19MSUJTKSBsaWJ2bmNjb21tb24ubGEgJChDT01NT05fTElCUykgXAorIAkkKFhTRVJWRVJfTElCUykgJChYU0VSVkVSX1NZU19MSUJTKSAkKFhWTkNfU1lTX0xJQlMpIC1sWDExCitAQCAtNjIsNyArNjIsNyBAQCBsaWJ2bmNfbGFfQ1BQRkxBR1MgPSAkKFhWTkNfQ1BQRkxBR1MpIC1JJChUSUdFUlZOQ19TUkNESVIpL2NvbW1vbiAtVUhBVkVfQ09ORklHXworIAktSSQodG9wX3NyY2RpcikvaHcveGZyZWU4Ni9vcy1zdXBwb3J0IFwKKyAJLUkkKHRvcF9zcmNkaXIpL2h3L3hmcmVlODYvb3Mtc3VwcG9ydC9idXMgXAorIAktSSQodG9wX3NyY2RpcikvaW5jbHVkZSBcCistCSR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSAtSSQoaW5jbHVkZWRpcikKKysJJHtYU0VSVkVSTElCU19DRkxBR1N9CisgCisgbGlidm5jX2xhX0xERkxBR1MgPSAtbW9kdWxlIC1hdm9pZC12ZXJzaW9uIC1XbCwteixub3cKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMi1kby1ub3QtYnVpbGQtdGVzdHMtc3ViLWRpcmVjdG9yeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDItZG8tbm90LWJ1aWxkLXRlc3RzLXN1Yi1kaXJlY3RvcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4NzViYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDItZG8tbm90LWJ1aWxkLXRlc3RzLXN1Yi1kaXJlY3RvcnkucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBjMzQ2MGQ2M2YwYjZjZDUwYjlhNjQyNjVmNDIwZjA0MzllMTJhMWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNSBBcHIgMjAxNyAwMTozNjo0NCAtMDQwMAorU3ViamVjdDogW1BBVENIIDIvNF0gZG8gbm90IGJ1aWxkIHRlc3RzIHN1YiBkaXJlY3RvcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAzIC0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggOTRlYzJlZi4uZmI3MmEwMCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTMwMCw5ICszMDAsNiBAQCBpZihCVUlMRF9WSUVXRVIpCisgICBhZGRfc3ViZGlyZWN0b3J5KG1lZGlhKQorIGVuZGlmKCkKKyAKKy1hZGRfc3ViZGlyZWN0b3J5KHRlc3RzKQorLQorLQorIGluY2x1ZGUoY21ha2UvQnVpbGRQYWNrYWdlcy5jbWFrZSkKKyAKKyAjIHVuaW5zdGFsbAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAzLWFkZC1taXNzaW5nLWR5bmFtaWMtbGlicmFyeS10by1GTFRLX0xJQlJBUklFUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDMtYWRkLW1pc3NpbmctZHluYW1pYy1saWJyYXJ5LXRvLUZMVEtfTElCUkFSSUVTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYjg0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAzLWFkZC1taXNzaW5nLWR5bmFtaWMtbGlicmFyeS10by1GTFRLX0xJQlJBUklFUy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDYzNjlhNWJlMmFmMmVkMWZhNDQzZjQwZjQ4ZGVhZjMxOGQyMjcxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDA1OjA2OjAwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBhZGQgbWlzc2luZyBkeW5hbWljIGxpYnJhcnkgdG8gRkxUS19MSUJSQVJJRVMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGZiNzJhMDAuLjU3MzJkYzggMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0yNDYsNiArMjQ2LDggQEAgaWYoVU5JWCBBTkQgTk9UIEFQUExFKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytzZXQoRkxUS19MSUJSQVJJRVMgJHtGTFRLX0xJQlJBUklFU30gLWxtIC1sZGwgLWxwbmcgLWxqcGVnKQorKworICMgQ2hlY2sgZm9yIEdOVVRMUyBsaWJyYXJ5Cisgb3B0aW9uKEVOQUJMRV9HTlVUTFMgIkVuYWJsZSBwcm90b2NvbCBlbmNyeXB0aW9uIGFuZCBhZHZhbmNlZCBhdXRoZW50aWNhdGlvbiIgT04pCisgaWYoRU5BQkxFX0dOVVRMUykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwNC10aWdlcnZuYy1hZGQtZlBJQy1vcHRpb24tdG8tQ09NUElMRV9GTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDQtdGlnZXJ2bmMtYWRkLWZQSUMtb3B0aW9uLXRvLUNPTVBJTEVfRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiMGEzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDQtdGlnZXJ2bmMtYWRkLWZQSUMtb3B0aW9uLXRvLUNPTVBJTEVfRkxBR1MucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSA5NTYzYjY5NjQwMjI3ZGEyMjIwZWUwYzM5MDc3YWZiNzM2Y2M5NmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBKdWwgMjAxNyAxNzoxMjoxNyArMDgwMAorU3ViamVjdDogW1BBVENIIDQvNF0gdGlnZXJ2bmM6IGFkZCBmUElDIG9wdGlvbiB0byBDT01QSUxFX0ZMQUdTCisKK1RoZSBzdGF0aWMgbGlicmFyaWVzIGluIFhyZWdpb24vbmV0d29yay9yZHIvcmZiIHdlcmUgbGlua2VkIGJ5IHNoYXJlZAorbGlicmFyeSBsaWJ2bmMuc28sIHNvIHdlIHNob3VsZCBhZGQgZlBJQyBvcHRpb24gdG8gQ09NUElMRV9GTEFHUyB0byBmaXgKK3JlbG9jYXRpb24gaXNzdWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb21tb24vWHJlZ2lvbi9DTWFrZUxpc3RzLnR4dCB8IDEgKworIGNvbW1vbi9uZXR3b3JrL0NNYWtlTGlzdHMudHh0IHwgMSArCisgY29tbW9uL3Jkci9DTWFrZUxpc3RzLnR4dCAgICAgfCAxICsKKyBjb21tb24vcmZiL0NNYWtlTGlzdHMudHh0ICAgICB8IDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb21tb24vWHJlZ2lvbi9DTWFrZUxpc3RzLnR4dCBiL2NvbW1vbi9YcmVnaW9uL0NNYWtlTGlzdHMudHh0CitpbmRleCA0MGNhOTdlLi45NDExMzI4IDEwMDY0NAorLS0tIGEvY29tbW9uL1hyZWdpb24vQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbW1vbi9YcmVnaW9uL0NNYWtlTGlzdHMudHh0CitAQCAtMyw0ICszLDUgQEAgYWRkX2xpYnJhcnkoWHJlZ2lvbiBTVEFUSUMKKyAKKyBpZihVTklYKQorICAgbGlidG9vbF9jcmVhdGVfY29udHJvbF9maWxlKFhyZWdpb24pCisrICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoWHJlZ2lvbiBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgLWZQSUMpCisgZW5kaWYoKQorZGlmZiAtLWdpdCBhL2NvbW1vbi9uZXR3b3JrL0NNYWtlTGlzdHMudHh0IGIvY29tbW9uL25ldHdvcmsvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI2MjRjOGUuLjZjMDZlYzkgMTAwNjQ0CistLS0gYS9jb21tb24vbmV0d29yay9DTWFrZUxpc3RzLnR4dAorKysrIGIvY29tbW9uL25ldHdvcmsvQ01ha2VMaXN0cy50eHQKK0BAIC05LDQgKzksNSBAQCBlbmRpZigpCisgCisgaWYoVU5JWCkKKyAgIGxpYnRvb2xfY3JlYXRlX2NvbnRyb2xfZmlsZShuZXR3b3JrKQorKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG5ldHdvcmsgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTIC1mUElDKQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9jb21tb24vcmRyL0NNYWtlTGlzdHMudHh0IGIvY29tbW9uL3Jkci9DTWFrZUxpc3RzLnR4dAoraW5kZXggOTg5YmEyZi4uMjBmNjQ4OSAxMDA2NDQKKy0tLSBhL2NvbW1vbi9yZHIvQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbW1vbi9yZHIvQ01ha2VMaXN0cy50eHQKK0BAIC0yNyw0ICsyNyw1IEBAIHRhcmdldF9saW5rX2xpYnJhcmllcyhyZHIgJHtSRFJfTElCUkFSSUVTfSkKKyAKKyBpZihVTklYKQorICAgbGlidG9vbF9jcmVhdGVfY29udHJvbF9maWxlKHJkcikKKysgIHNldF90YXJnZXRfcHJvcGVydGllcyhyZHIgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTIC1mUElDKQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9jb21tb24vcmZiL0NNYWtlTGlzdHMudHh0IGIvY29tbW9uL3JmYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNTA0N2U1ZS4uODg4MzhhYiAxMDA2NDQKKy0tLSBhL2NvbW1vbi9yZmIvQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbW1vbi9yZmIvQ01ha2VMaXN0cy50eHQKK0BAIC05OCw0ICs5OCw1IEBAIHRhcmdldF9saW5rX2xpYnJhcmllcyhyZmIgJHtSRkJfTElCUkFSSUVTfSkKKyAKKyBpZihVTklYKQorICAgbGlidG9vbF9jcmVhdGVfY29udHJvbF9maWxlKHJmYikKKysgIHNldF90YXJnZXRfcHJvcGVydGllcyhyZmIgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTIC1mUElDKQorIGVuZGlmKCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwNS1SZW1vdmUtSU5JVEFSR1MtZnJvbS14c2VydmVyMTE5LnBhdGNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwNS1SZW1vdmUtSU5JVEFSR1MtZnJvbS14c2VydmVyMTE5LnBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMzQyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDA1LVJlbW92ZS1JTklUQVJHUy1mcm9tLXhzZXJ2ZXIxMTkucGF0Y2gucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBlNGVjOTkyOTg0OTgzYWM5MTA3ZWZhZTFmMWNjNTUyMDA3ZTQyMjllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmlzaGFsIEJpc3dhcyA8dnNobGJpc3dhc0B5bWFpbC5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTE6MDY6MTEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIElOSVRBUkdTIGZyb20geHNlcnZlcjExOS5wYXRjaAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKy0tLQorIHVuaXgveHNlcnZlcjExOS5wYXRjaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VuaXgveHNlcnZlcjExOS5wYXRjaCBiL3VuaXgveHNlcnZlcjExOS5wYXRjaAoraW5kZXggNjE0ZjEwNC4uN2FkZjMxNCAxMDA2NDQKKy0tLSBhL3VuaXgveHNlcnZlcjExOS5wYXRjaAorKysrIGIvdW5peC94c2VydmVyMTE5LnBhdGNoCitAQCAtNjYsNyArNjYsNyBAQCBkaWZmIC11cCB4c2VydmVyL21pL21paW5pdGV4dC5jLnhzZXJ2ZXIxMTYtcmViYXNlZCB4c2VydmVyL21pL21paW5pdGV4dC5jCisgICNpbmNsdWRlICJnbG9iYWxzLmgiCisgIAorICsjaWZkZWYgVElHRVJWTkMKKy0rZXh0ZXJuIHZvaWQgdm5jRXh0ZW5zaW9uSW5pdChJTklUQVJHUyk7CisrK2V4dGVybiB2b2lkIHZuY0V4dGVuc2lvbkluaXQodm9pZCk7CisgKyNlbmRpZgorICsKKyAgLyogVGhlIGZvbGxvd2luZyBpcyBvbmx5IGEgc21hbGwgZmlyc3Qgc3RlcCB0b3dhcmRzIHJ1bi10aW1lCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvdGlnZXJ2bmNfMS44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY5NzQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOC4wLmJiCkBAIC0wLDAgKzEsMTMyIEBACitERVNDUklQVElPTiA9ICJUaWdlclZOQyByZW1vdGUgZGlzcGxheSBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnRpZ2Vydm5jLmNvbS8iCitMSUNFTlNFID0gIkdQTHYyKyIKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorREVQRU5EUyA9ICJ4c2VydmVyLXhvcmcgZ251dGxzIGpwZWcgbGlieHRzdCBnZXR0ZXh0LW5hdGl2ZSBmbHRrIgorUkRFUEVORFNfJHtQTn0gPSAiY2hrY29uZmlnIGNvcmV1dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuVFhUO21kNT03NWIwMmMyODcyNDIxMzgwYmJkNDc3ODFkMmJkNzVkMyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGNtYWtlCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICI0ZDZlMWI4MzA2YThjY2E4YWQ1ZTE1ZmY4MjAxZjZlYTI0NDU5Y2ZkIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vVGlnZXJWTkMvdGlnZXJ2bmMuZ2l0O2JyYW5jaD0xLjgtYnJhbmNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGlnZXJ2bmMtcmVtb3ZlLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1kby1ub3QtYnVpbGQtdGVzdHMtc3ViLWRpcmVjdG9yeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWFkZC1taXNzaW5nLWR5bmFtaWMtbGlicmFyeS10by1GTFRLX0xJQlJBUklFUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRpZ2Vydm5jLWFkZC1mUElDLW9wdGlvbi10by1DT01QSUxFX0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUmVtb3ZlLUlOSVRBUkdTLWZyb20teHNlcnZlcjExOS5wYXRjaC5wYXRjaCBcCisiCisKKyMgS2VlcCBzeW5jIHdpdGggeG9yZy1zZXJ2ZXIgaW4gb2UtY29yZQorWE9SR19QTiA/PSAieG9yZy1zZXJ2ZXIiCitYT1JHX1BWID89ICIxLjE5LjMiCitTUkNfVVJJICs9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL3hzZXJ2ZXIvJHtYT1JHX1BOfS0ke1hPUkdfUFZ9LnRhci5iejI7bmFtZT14b3JnIgorWE9SR19TID0gIiR7V09SS0RJUn0vJHtYT1JHX1BOfS0ke1hPUkdfUFZ9IgorU1JDX1VSSVt4b3JnLm1kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCitTUkNfVVJJW3hvcmcuc2hhMjU2c3VtXSA9ICI2NzdhODE2NmUwMzQ3NDcxOTIzOGRmZTM5NmNlNjczYzQyMzQ3MzU0NjRkNmRhZGYyOTU5YjYwMGQyMGU1YTk4IgorCisjIEl0IGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgWG9yZyBzb3VyY2UgZm9yIHRoZQorIyBtYWNoaW5lIG9uIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcgVGlnZXJWTkMuCitYU0VSVkVSX1NPVVJDRV9ESVI9IiR7U30vdW5peC94c2VydmVyIgorCitkb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF94c2VydmVyIgorZG9fcGF0Y2hfeHNlcnZlciAoKSB7CisgICAgZm9yIHN1YmRpciBpbiBYZXh0IHhrYiBHTCBody94cXVhcnR6L2J1bmRsZSBody94ZnJlZTg2L2NvbW1vbjsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vJHN1YmRpcgorICAgIGRvbmUKKworICAgIGZvciBzdWJkaXIgaW4gaHcvZG14L2RvYyBtYW4gZG9jIGh3L2RteC9kb3h5Z2VuOyBkbworICAgICAgICBpbnN0YWxsIC1kICR7WFNFUlZFUl9TT1VSQ0VfRElSfS8kc3ViZGlyCisgICAgZG9uZQorCisgICAgc291cmNlcz0iaHcveHF1YXJ0ei9idW5kbGUvY3BwcnVsZXMuaW4gbWFuL1hzZXJ2ZXIubWFuIGRvYy9zbWFydHNjaGVkIFwKKyAgICAgICAgICAgICBody9kbXgvZG94eWdlbi9kb3h5Z2VuLmNvbmYuaW4geHNlcnZlci5lbnQuaW4geGtiL1JFQURNRS5jb21waWxlZCBcCisgICAgICAgICAgICAgaHcveGZyZWU4Ni94b3JnY29uZi5jcHAgaHcveGZyZWU4Ni9Yb3JnLnNoLmluIgorICAgIGZvciBpIGluICR7c291cmNlc307IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1hPUkdfU30vJGkgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9LyRpOworICAgIGRvbmUKKworICAgIGNkICR7WE9SR19TfQorICAgIGZpbmQgLiAtdHlwZSBmIHwgZWdyZXAgJy4qXC4oY3xofGFtfGFjfGluY3xtNHxoLmlufHBjLmlufG1hbi5wcmV8cGx8dHh0KSQnIHwgXAorICAgIHhhcmdzIHRhciBjZiAtIHwgKGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfSAmJiB0YXIgeGYgLSkKKworICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQorICAgIHhzZXJ2ZXJwYXRjaD0iJHtTfS91bml4L3hzZXJ2ZXIxMTkucGF0Y2giCisgICAgZWNobyAiQXBwbHkgJHhzZXJ2ZXJwYXRjaCIKKyAgICBwYXRjaCAtcDEgLWIgLS1zdWZmaXggLnZuYyA8ICR4c2VydmVycGF0Y2gKK30KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14b3JnIC0tZGlzYWJsZS14bmVzdCAtLWRpc2FibGUteHZmYiAtLWRpc2FibGUtZG14IFwKKyAgICAgICAgLS1kaXNhYmxlLXh3aW4gLS1kaXNhYmxlLXhlcGh5ciAtLWRpc2FibGUta2RyaXZlIC0td2l0aC1waWMgXAorICAgICAgICAtLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS14aW5lcmFtYSBcCisgICAgICAgIC0td2l0aC14a2Itb3V0cHV0PSR7bG9jYWxzdGF0ZWRpcn0vbGliL3hrYiBcCisgICAgICAgIC0tZGlzYWJsZS1nbHggLS1kaXNhYmxlLWRyaSAtLWRpc2FibGUtZHJpMiBcCisgICAgICAgIC0tZGlzYWJsZS1jb25maWctaGFsIFwKKyAgICAgICAgLS1kaXNhYmxlLWNvbmZpZy11ZGV2IFwKKyAgICAgICAgLS13aXRob3V0LWR0cmFjZSBcCisgICAgICAgIC0tZGlzYWJsZS11bml0LXRlc3RzIFwKKyAgICAgICAgLS1kaXNhYmxlLWRldmVsLWRvY3MgXAorICAgICAgICAtLWRpc2FibGUtc2VsZWN0aXZlLXdlcnJvciBcCisgICAgICAgIC0tZGlzYWJsZS14c2htZmVuY2UgXAorICAgICAgICAtLWRpc2FibGUtY29uZmlnLXVkZXYgXAorICAgICAgICAtLWRpc2FibGUtZHJpMyBcCisgICAgICAgIC0tZGlzYWJsZS1saWJ1bndpbmQgXAorICAgICAgICAtLXdpdGhvdXQteG1sdG8gXAorICAgICAgICAtLWVuYWJsZS1zeXN0ZW1kLWxvZ2luZD1ubyBcCisgICAgICAgIC0tZGlzYWJsZS14aW5lcmFtYSBcCisgICAgICAgIC0tZGlzYWJsZS14d2F5bGFuZCBcCisiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworICAgIG9sZGRpcj1gcHdkYAorICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQorCisgICAgcm0gLXJmIGFjbG9jYWwtY29weS8KKyAgICBybSAtZiBhY2xvY2FsLm00CisKKyAgICBleHBvcnQgQUNMT0NBTERJUj0iJHtYU0VSVkVSX1NPVVJDRV9ESVJ9L2FjbG9jYWwtY29weSIKKyAgICBta2RpciAtcCAke0FDTE9DQUxESVJ9LworICAgIGlmIFsgLWQgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsIF07IHRoZW4KKyAgICAgICAgY3Atbm9lcnJvciAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvICR7QUNMT0NBTERJUn0vCisgICAgZmkKKyAgICBpZiBbIC1kICR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsIC1hICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwiICE9ICIke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCIgXTsgdGhlbgorICAgICAgICBjcC1ub2Vycm9yICR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsLyAke0FDTE9DQUxESVJ9LworICAgIGZpCisgICAgQUNMT0NBTD0iYWNsb2NhbCAtLXN5c3RlbS1hY2Rpcj0ke0FDTE9DQUxESVJ9LyIgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzIHx8IGJiZmF0YWwgImF1dG9yZWNvbmYgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgY2htb2QgK3ggLi9jb25maWd1cmUKKyAgICAke0NBQ0hFRF9DT05GSUdVUkVWQVJTfSAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfQorICAgIGNkICRvbGRkaXIKK30KKworZG9fY29tcGlsZV9hcHBlbmQgKCkgeworICAgIG9sZGRpcj1gcHdkYAorICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQorCisgICAgb2VfcnVubWFrZQorCisgICAgY2QgJG9sZGRpcgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvbGRkaXI9YHB3ZGAKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vaHcvdm5jCisKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGNkICRvbGRkaXIKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcy9leHRlbnNpb25zIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0veG9yZy9tb2R1bGVzL2V4dGVuc2lvbnMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiCmluZGV4IDUwMjAzNGEuLmU3YzQ4ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjEuYmIKQEAgLTMsNyArMyw3IEBACiBldmVudHMsIGFzIHdlbGwgYXMgYSBmaWx0ZXIgc3RhY2sgZm9yIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhvc2UgZXZlbnRzLiBcCiBUc2xpYiBpcyBnZW5lcmFsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHRvIHByb3ZpZGUgYSBjb21tb24gdXNlciBcCiBzcGFjZSBpbnRlcmZhY2UgdG8gdG91Y2hzY3JlZW4gZnVuY3Rpb25hbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8vdHNsaWIuYmVybGlvcy5kZS8iCitIT01FUEFHRSA9ICJodHRwOi8vdHNsaWIub3JnLyIKIAogQVVUSE9SID0gIlJ1c3NlbGwgS2luZyB3LyBwbHVnaW5zIGJ5IENocmlzIExhcnNvbiBldC4gYWwuIgogU0VDVElPTiA9ICJiYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLWZpdHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLWZpdHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyYWY2Njk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1maXRzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiV2F5bGFuZC1maXRzLCB0aGUgV2F5bGFuZCBGdW5jdGlvbmFsIEludGVncmF0aW9uIFRlc3QgU3VpdGUiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kLWZpdHMgaXMgYSBmdWxseSBhdXRvbWF0ZWQgZnVuY3Rpb25hbCBpbnRlZ3JhdGlvbiBcCi10ZXN0IHN1aXRlLiBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uIG9mIFwKLWNsaWVudC1zaWRlIChpLmUuIHRvb2xraXQpIGFuZCBzZXJ2ZXItc2lkZSAoY29tcG9zaXRvcikgaW1wbGVtZW50YXRpb25zIG9mIFwKLXRoZSBXYXlsYW5kIHByb3RvY29sLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy93YXlsYW5kLWZpdHMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4ZDM0Y2FkYWY4OTE3NTNjMGYwMGM2Y2Q0OGYwOGY1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9leHRlbnNpb25zL3dlc3Rvbi93ZXN0b24td2ZpdHMuY3BwO2VuZGxpbmU9MjE7bWQ1PTg0OGM4MWU1NWNmM2EzMGE5ZjZlZDc1ZjBkYmE3YTk3IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvd2F5bGFuZC1maXRzLmdpdCIKLVNSQ1JFViA9ICJmMTA4MzM1ZTM3NDc3MmFlMjgxOGEzMGFlMzdmZTZmY2RhODE5ODBmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotREVQRU5EUyA9ICJsaWJjaGVjayBib29zdCB3YXlsYW5kIHdlc3RvbiIKLVJERVBFTkRTXyR7UE59ID0gIndlc3RvbiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGgtYm9vc3QtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IgotCi1QQUNLQUdFQ09ORklHID89ICJndGsrMyIKLQotUEFDS0FHRUNPTkZJR1tlbGVtZW50YXJ5XSA9ICItLWVuYWJsZS1lZmwtdGVzdHMsLS1kaXNhYmxlLWVmbC10ZXN0cyxlbGVtZW50YXJ5IgotUEFDS0FHRUNPTkZJR1tndGsrM10gPSAiLS1lbmFibGUtZ3RrLXRlc3RzLC0tZGlzYWJsZS1ndGstdGVzdHMsZ3RrKzMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3dlc3Rvbi8qLmxhCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0vd2ZpdHMgJHtsaWJkaXJ9L3dlc3Rvbi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2JpbmRpcn0vLmRlYnVnICR7bGliZGlyfS93ZXN0b24vLmRlYnVnICR7cHJlZml4fS9zcmMiCi0KLVBOQkxBQ0tMSVNUW3dheWxhbmQtZml0c10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MzIvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjAuYmIKaW5kZXggMmUyNWI3ZC4uMzg4NWQ2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4wLmJiCkBAIC02LDMgKzYsNiBAQAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tRXJyb3ItRml4LnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gImUyMzhjODlkYWJjNTY2ZTE4MzVlMWVjYjYxYjYwNWI5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MTE3NzY1NzgzNWUwOTAyYjVlZWU3YjE5NzEzMDM1YmVhYTE1ODFiYmQzYzY1MDZiYWE1NTNlNzUxZTAxN2MiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9XVE1QWF9GSUxFPVdUTVBfRklMRSAtRF9QQVRIX1dUTVBYPV9QQVRIX1dUTVAgLURfVVRNUFhfRklMRT1VVE1QX0ZJTEUgLURfUEFUSF9VVE1QWD1fUEFUSF9VVE1QICIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzI1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjI3YWYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMyNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi1TVU1NQVJZID0gInh0ZXJtIGlzIHRoZSBzdGFuZGFyZCB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLURFUEVORFMgPSAibGlieGF3IHhwcm90byB4ZXh0cHJvdG8gbGlieGV4dCBsaWJ4YXUgbGlieGluZXJhbWEgbGlieHBtIG5jdXJzZXMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3h0ZXJtLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0zMTttZDU9ODQyZTk0NWM0NmM0M2UwNWM0NGQ5NTAwM2FhODc4ZTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzhhMGJiYzRkNWZhMzc4MDkxN2U0NDdhZThlYmM2YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjMxYjA3YTBjNDA0MjdlOTMzMGVjM2JlOWQxYTc0OGM3MjgwOGY5NDU5NTNjZWE5ZTUyNmU0OGJlMzE1ZjFiIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW3hmdF0gPSAiLS1lbmFibGUtZnJlZXR5cGUsLS1kaXNhYmxlLWZyZWV0eXBlLGxpYnhmdCBmb250Y29uZmlnIGZyZWV0eXBlLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIiAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgRlJFRVRZUEVfQ09ORklHPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2ZyZWV0eXBlLWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1pbWFrZSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1oYWNrIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNldHVpZCIKLQotQiA9ICIke1N9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgc2VkIC1lICJzJS91c3IvY29udHJpYi9YMTFSNiUke1NUQUdJTkdfTElCRElSfSVnIiAtaSBjb25maWd1cmUKLSAgICBvZV9ydW5jb25mCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIvdXNyL2xpYi9YMTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNiYjBmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworU1VNTUFSWSA9ICJ4dGVybSBpcyB0aGUgc3RhbmRhcmQgdGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCitERVBFTkRTID0gImxpYnhhdyB4cHJvdG8geGV4dHByb3RvIGxpYnhleHQgbGlieGF1IGxpYnhpbmVyYW1hIGxpYnhwbSBuY3Vyc2VzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94dGVybS5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWYwMmFiOWViZGE4N2I3NzBlY2Y3MTFkYmIzNzg0YTMzIgorCitTUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWE2ZGI3OTc0YWE0Y2NiYjUwZWFiZWJmNzI2MTg0NjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FlZWY5ZjI5ZjZiOTVlMDlmNDgxMTczYzhjMzA1MzM1N2JmNWZmZTE2MjU4NTY0N2Y2OTBmZDE3MDc1NTZkZiIKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbeGZ0XSA9ICItLWVuYWJsZS1mcmVldHlwZSwtLWRpc2FibGUtZnJlZXR5cGUsbGlieGZ0IGZvbnRjb25maWcgZnJlZXR5cGUtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICBGUkVFVFlQRV9DT05GSUc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZnJlZXR5cGUtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWltYWtlIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2sgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2V0dWlkIgorCitCID0gIiR7U30iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UKKyAgICBzZWQgLWUgInMlL3Vzci9jb250cmliL1gxMVI2JSR7U1RBR0lOR19MSUJESVJ9JWciIC1pIGNvbmZpZ3VyZQorICAgIG9lX3J1bmNvbmYKK30KKworRklMRVNfJHtQTn0gKz0gIi91c3IvbGliL1gxMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbXRldi9maXgtaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXYvZml4LWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzFhMmE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbXRldi9maXgtaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3NyYy9tdWx0aXRvdWNoLmMgYi9zcmMvbXVsdGl0b3VjaC5jCi1pbmRleCBjNTVkNzQyLi40YTgxOTJkIDEwMDY0NAotLS0tIGEvc3JjL211bHRpdG91Y2guYwotKysrIGIvc3JjL211bHRpdG91Y2guYwotQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgaW50IGluaXRfcHJvcGVydGllcyhEZXZpY2VJbnRQdHIgZGV2KQotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi0tc3RhdGljIGludCBkZXZpY2VfaW5pdChEZXZpY2VJbnRQdHIgZGV2LCBMb2NhbERldmljZVB0ciBsb2NhbCkKLStzdGF0aWMgaW50IGRldmljZV9pbml0KERldmljZUludFB0ciBkZXYsIElucHV0SW5mb1B0ciBsb2NhbCkKLSB7Ci0gCXN0cnVjdCBtdGV2X210b3VjaCAqbXQgPSBsb2NhbC0+cHJpdmF0ZTsKLSAJQXRvbSBhdG9tOwotQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW50IGRldmljZV9pbml0KERldmljZUludFB0ciBkZXYsIExvY2FsRGV2aWNlUHRyIGxvY2FsKQotIAkJCXhmODZJbml0VmFsdWF0b3JBeGlzU3RydWN0KGRldiwgdmFsLCBheGVzX2xhYmVsc1t2YWxdLAotIAkJCQkJCSAgIG1pbiwKLSAJCQkJCQkgICBtYXgsCi0tCQkJCQkJICAgMSwgMCwgMSk7Ci0rCQkJCQkJICAgMSwgMCwgMSxBYnNvbHV0ZSk7Ci0gCQkJeGY4NkluaXRWYWx1YXRvckRlZmF1bHRzKGRldiwgdmFsKTsKLSAJCX0KLSAJfQotQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgaW50IGRldmljZV9pbml0KERldmljZUludFB0ciBkZXYsIExvY2FsRGV2aWNlUHRyIGxvY2FsKQotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi0tc3RhdGljIGludCBkZXZpY2Vfb24oTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0rc3RhdGljIGludCBkZXZpY2Vfb24oSW5wdXRJbmZvUHRyIGxvY2FsKQotIHsKLSAJc3RydWN0IG10ZXZfbXRvdWNoICptdCA9IGxvY2FsLT5wcml2YXRlOwotIAlsb2NhbC0+ZmQgPSB4Zjg2T3BlblNlcmlhbChsb2NhbC0+b3B0aW9ucyk7Ci1AQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBpbnQgZGV2aWNlX29uKExvY2FsRGV2aWNlUHRyIGxvY2FsKQotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi0tc3RhdGljIGludCBkZXZpY2Vfb2ZmKExvY2FsRGV2aWNlUHRyIGxvY2FsKQotK3N0YXRpYyBpbnQgZGV2aWNlX29mZihJbnB1dEluZm9QdHIgbG9jYWwpCi0gewotIAlzdHJ1Y3QgbXRldl9tdG91Y2ggKm10ID0gbG9jYWwtPnByaXZhdGU7Ci0gCXhmODZSZW1vdmVFbmFibGVkRGV2aWNlKGxvY2FsKTsKLUBAIC0yNTksMTIgKzI1OSwxMiBAQCBzdGF0aWMgaW50IGRldmljZV9vZmYoTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0gCXJldHVybiBTdWNjZXNzOwotIH0KLSAKLS1zdGF0aWMgaW50IGRldmljZV9jbG9zZShMb2NhbERldmljZVB0ciBsb2NhbCkKLStzdGF0aWMgaW50IGRldmljZV9jbG9zZShJbnB1dEluZm9QdHIgbG9jYWwpCi0gewotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgcHJvY2Vzc19zdGF0ZShMb2NhbERldmljZVB0ciBsb2NhbCwKLStzdGF0aWMgdm9pZCBwcm9jZXNzX3N0YXRlKElucHV0SW5mb1B0ciBsb2NhbCwKLSAJCQkgIGNvbnN0IHN0cnVjdCBtdGV2X210b3VjaCAqbXQpCi0gewotIAotQEAgLTMyMSwyMiArMzIxLDIyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc3RhdGUoTG9jYWxEZXZpY2VQdHIgbG9jYWwsCi0gCX0KLSAKLSAJLyogU29tZSB4LWNsaWVudHMgYXNzdW1lIHRoZXkgZ2V0IG1vdGlvbiBldmVudHMgYmVmb3JlIGJ1dHRvbiBkb3duICovCi0rCXhmODZNc2coWF9JTkZPLCJkb3duICVkfHBkb3duICVkXG4iLCBkb3duLCBwZG93bik7Ci0gCWlmIChkb3duKQotIAkJeGY4NlBvc3RNb3Rpb25FdmVudFAobG9jYWwtPmRldiwgVFJVRSwKLSAJCQkJICAgICAwLCBkb3duICogTVRfQVhJU19QRVJfRklOR0VSLCB2YWx1YXRvcnMpOwotLQotIAlpZihkb3duICYmIHBkb3duID09IDApCi0gCQl4Zjg2UG9zdEJ1dHRvbkV2ZW50UChsb2NhbC0+ZGV2LCBUUlVFLAotIAkJCQkgICAgIDEsIDEsCi0gCQkJCSAgICAgMCwgZG93biAqIE1UX0FYSVNfUEVSX0ZJTkdFUiwgdmFsdWF0b3JzKTsKLS0JZWxzZSBpZiAoZG93biA9PSAwICYmIHBkb3duKQotLQkJeGY4NlBvc3RCdXR0b25FdmVudChsb2NhbC0+ZGV2LCBUUlVFLCAxLCAwLCAwLCAwKTsKLS0KLSsJZWxzZSBpZiAoZG93biA9PSAwICYmIHBkb3duKXsKLSsJCXhmODZQb3N0QnV0dG9uRXZlbnQobG9jYWwtPmRldiwgVFJVRSwgMSwgMSwgMCwgMCk7Ci0rCX0KLSAJcGRvd24gPSAhIWRvd247Ci0gfQotIAotIC8qIGNhbGxlZCBmb3IgZWFjaCBmdWxsIHJlY2VpdmVkIHBhY2tldCBmcm9tIHRoZSB0b3VjaHBhZCAqLwotLXN0YXRpYyB2b2lkIHJlYWRfaW5wdXQoTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0rc3RhdGljIHZvaWQgcmVhZF9pbnB1dChJbnB1dEluZm9QdHIgbG9jYWwpCi0gewotIAlzdHJ1Y3QgbXRldl9tdG91Y2ggKm10ID0gbG9jYWwtPnByaXZhdGU7Ci0gCXdoaWxlIChtdG91Y2hfcmVhZF9zeW5jaHJvbml6ZWRfZXZlbnQobXQsIGxvY2FsLT5mZCkpIHsKLUBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgcmVhZF9pbnB1dChMb2NhbERldmljZVB0ciBsb2NhbCkKLSAKLSBzdGF0aWMgQm9vbCBkZXZpY2VfY29udHJvbChEZXZpY2VJbnRQdHIgZGV2LCBpbnQgbW9kZSkKLSB7Ci0tCUxvY2FsRGV2aWNlUHRyIGxvY2FsID0gZGV2LT5wdWJsaWMuZGV2aWNlUHJpdmF0ZTsKLSsJSW5wdXRJbmZvUHRyIGxvY2FsID0gZGV2LT5wdWJsaWMuZGV2aWNlUHJpdmF0ZTsKLSAJc3dpdGNoIChtb2RlKSB7Ci0gCWNhc2UgREVWSUNFX0lOSVQ6Ci0gCQl4Zjg2TXNnKFhfSU5GTywgImRldmljZSBjb250cm9sOiBpbml0XG4iKTsKLUBAIC0zNjYsMzkgKzM2NiwyOSBAQCBzdGF0aWMgQm9vbCBkZXZpY2VfY29udHJvbChEZXZpY2VJbnRQdHIgZGV2LCBpbnQgbW9kZSkKLSAJfQotIH0KLSAKLS1zdGF0aWMgSW5wdXRJbmZvUHRyIHByZWluaXQoSW5wdXREcml2ZXJQdHIgZHJ2LCBJRGV2UHRyIGRldiwgaW50IGZsYWdzKQotK3N0YXRpYyBJbnB1dEluZm9QdHIgcHJlaW5pdChJbnB1dERyaXZlclB0ciBkcnYsIElucHV0SW5mb1B0ciBwSW5mbywgaW50IGZsYWdzKQotIHsKLSAJc3RydWN0IG10ZXZfbXRvdWNoICptdDsKLS0JSW5wdXRJbmZvUHRyIGxvY2FsID0geGY4NkFsbG9jYXRlSW5wdXQoZHJ2LCAwKTsKLS0JaWYgKCFsb2NhbCkKLS0JCWdvdG8gZXJyb3I7Ci0rCWludCByYzsKLSsKLSAJbXQgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBtdGV2X210b3VjaCkpOwotKwotIAlpZiAoIW10KQotIAkJZ290byBlcnJvcjsKLSAKLS0JbG9jYWwtPm5hbWUgPSBkZXYtPmlkZW50aWZpZXI7Ci0tCWxvY2FsLT50eXBlX25hbWUgPSBYSV9UT1VDSFNDUkVFTjsKLS0JbG9jYWwtPmRldmljZV9jb250cm9sID0gZGV2aWNlX2NvbnRyb2w7Ci0tCWxvY2FsLT5yZWFkX2lucHV0ID0gcmVhZF9pbnB1dDsKLS0JbG9jYWwtPnByaXZhdGUgPSBtdDsKLS0JbG9jYWwtPmZsYWdzID0gWEk4Nl9QT0lOVEVSX0NBUEFCTEUgfAotLQkJWEk4Nl9TRU5EX0RSQUdfRVZFTlRTOwotLQotLQlsb2NhbC0+Y29uZl9pZGV2ID0gZGV2OwotLQotLQl4Zjg2Q29sbGVjdElucHV0T3B0aW9ucyhsb2NhbCwgTlVMTCwgTlVMTCk7Ci0tCS8veGY4Nk9wdGlvbkxpc3RSZXBvcnQobG9jYWwtPm9wdGlvbnMpOwotLQl4Zjg2UHJvY2Vzc0NvbW1vbk9wdGlvbnMobG9jYWwsIGxvY2FsLT5vcHRpb25zKTsKLSsJcEluZm8tPnByaXZhdGUgPSBtdDsKLSsJcEluZm8tPnR5cGVfbmFtZSA9ICJVTktOT1dOIjsKLSsJcEluZm8tPmRldmljZV9jb250cm9sID0gZGV2aWNlX2NvbnRyb2w7Ci0rCXBJbmZvLT5yZWFkX2lucHV0ID0gcmVhZF9pbnB1dDsKLSAKLSsJbXQtPnN3YXBfeHkgPSB4Zjg2U2V0Qm9vbE9wdGlvbihwSW5mby0+b3B0aW9ucywgIlN3YXBBeGVzIiwgRkFMU0UpOwotKwltdC0+aW52ZXJ0X3ggPSB4Zjg2U2V0Qm9vbE9wdGlvbihwSW5mby0+b3B0aW9ucywgIkludmVydFgiLCBGQUxTRSk7Ci0rCW10LT5pbnZlcnRfeSA9IHhmODZTZXRCb29sT3B0aW9uKHBJbmZvLT5vcHRpb25zLCAiSW52ZXJ0WSIsIEZBTFNFKTsKLSAKLS0JbXQtPnN3YXBfeHkgPSB4Zjg2U2V0Qm9vbE9wdGlvbihsb2NhbC0+b3B0aW9ucywgIlN3YXBBeGVzIiwgRkFMU0UpOwotLQltdC0+aW52ZXJ0X3ggPSB4Zjg2U2V0Qm9vbE9wdGlvbihsb2NhbC0+b3B0aW9ucywgIkludmVydFgiLCBGQUxTRSk7Ci0tCW10LT5pbnZlcnRfeSA9IHhmODZTZXRCb29sT3B0aW9uKGxvY2FsLT5vcHRpb25zLCAiSW52ZXJ0WSIsIEZBTFNFKTsKLS0KLS0JbG9jYWwtPmZsYWdzIHw9IFhJODZfQ09ORklHVVJFRDsKLSsJcmV0dXJuIFN1Y2Nlc3M7Ci0gCi0gZXJyb3I6Ci0tCXJldHVybiBsb2NhbDsKLSsJcmV0dXJuICFTdWNjZXNzOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB1bmluaXQoSW5wdXREcml2ZXJQdHIgZHJ2LCBJbnB1dEluZm9QdHIgbG9jYWwsIGludCBmbGFncykKLUBAIC00MTUsNyArNDA1LDYgQEAgc3RhdGljIElucHV0RHJpdmVyUmVjIE1URVYgPSB7Ci0gCS5QcmVJbml0ID0gcHJlaW5pdCwKLSAJLlVuSW5pdCA9IHVuaW5pdCwKLSAJLm1vZHVsZSA9IE5VTEwsCi0tCS5yZWZDb3VudCA9IDAKLSB9OwotIAotIHN0YXRpYyBYRjg2TW9kdWxlVmVyc2lvbkluZm8gVkVSU0lPTiA9IHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbXRldl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXZfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjJhZGVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbXRldl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItaW5wdXQuaW5jCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIG11bHRpdG91Y2ggaW5wdXQgZHJpdmVyIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YTcxZDA0NzVkMDhlZWU3NmQ4YjZkMGM2ZGJlYzU0MyIKLQotREVQRU5EUyArPSAicGl4bWFuIgotCi1QTkJMQUNLTElTVFt4Zjg2LWlucHV0LW10ZXZdID89ICJCUk9LRU46IGRvZXNuJ3QgYnVpbGQgd2l0aCBCIT1TIChNYWtlZmlsZSB3aXRob3V0ICR7U30gaW4gc2VkIGNhbGwpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdG9yaW91cy5vcmcveG9yZy94Zjg2LWlucHV0LW10ZXYuZ2l0IGZpbGU6Ly9maXgtaXQucGF0Y2giCi1TUkNSRVYgPSAiMWViNDY5MTY2ZmZjMDk1YzU4MDE0NzVmMDU3ZjkxMWY5N2E2ZTY0MSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1QViA9ICIxLjAuMCtnaXRyJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotRVhUUkFfT0VNQUtFID0gIidJTkNMVURFPS1JJHtTVEFHSU5HX0lOQ0RJUn0veG9yZyAtSSR7U1RBR0lOR19JTkNESVJ9L3BpeG1hbi0xJyIKLQotI3NraXAgeG9yZy1kcml2ZXItY29tbW9uLmluYyBBQ19DSEVDS19GSUxFIG1hbmdsaW5nCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgc2VkICdzI2djYyMke0NDfSNnJyAtaSBNYWtlZmlsZQotICAgIHJldHVybgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1hdGlfNy44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV83LjguMC5iYgppbmRleCBhMTAxMDA4Li5kNDA5YTE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV83LjguMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV83LjguMC5iYgpAQCAtOSw2ICs5LDkgQEAKIERFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGxpYnh2bWMgZHJtIHhmODZkcmlwcm90byBnbHByb3RvIFwKICAgICAgICAgICAgIHZpcnR1YWwvbGliZ2wgeGluZXJhbWFwcm90byBsaWJwY2lhY2Nlc3MiCiAKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKKwogQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKIAogU1JDX1VSSVttZDVzdW1dID0gImYzNGQwNGE3NTVlNzYxZTAzYjQ1OTE1NWZhM2RkY2JiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nZW9kZS8wMDAxLUFkZC1jb25maWcuaC1pbmNsdWRlLXRvLXNyYy1seF9tZW1vcnkuYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2VvZGUvMDAwMS1BZGQtY29uZmlnLmgtaW5jbHVkZS10by1zcmMtbHhfbWVtb3J5LmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZDJmNjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nZW9kZS8wMDAxLUFkZC1jb25maWcuaC1pbmNsdWRlLXRvLXNyYy1seF9tZW1vcnkuYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNjIxZDk0NmU1NmVmYWMyYzc3OWI4M2IxYTVjNmI2NDUxNjljNGViZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJCcmlhbiBBLiBMbG95ZCIgPGJyaWFuLmxsb3lkQGZhbWlseWhvbm9yLm5ldD4KLURhdGU6IFdlZCwgMSBPY3QgMjAxNCAxMjozNToxOCArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgY29uZmlnLmggaW5jbHVkZSB0byBzcmMvbHhfbWVtb3J5LmMKLQotVGhlIHNyYy9seF9tZW1vcnkuYyBmaWxlIHVzZXMgdGhlIHhmODYuaCBoZWFkZXIgZmlsZS4gIFRoaXMgZmlsZSBtdXN0IGhhdmUKLUhBVkVfU1RSTkRVUCBkZWZpbmVkIGJlZm9yZSBjYWxsaW5nIGl0IHdoZW4gdGhlIGJ1aWxkaW5nIHBsYXRmb3JtIGhhcyBhIHN0cm5kdXAKLWZ1bmN0aW9uLiAgV2hlbiB1c2luZyBjb25maWcuaCwgdGhpcyBmaWxlIGRvZXNuJ3QgaGF2ZSB0aGF0IGRlZmluZSBhbmQgc28gZmFpbHMKLXRvIGNvbXBpbGUuCi0KLVRoZSBhdHRhY2hlZCBwYXRjaCBhZGRzIHRoZSBjb25kaXRpb25hbCBjb25maWcuaCB0byB0aGlzIGZpbGUgc28gaXQgbWF5IGNvbXBpbGUKLW9uIHRoZSBhZmZlY3RlZCBwbGF0Zm9ybXMuCi0KLVRoZSBwYXRjaCBpcyB0cml2aWFsIGFuZCBtYXkgYmUgaW5jbHVkZWQgYW5kIHVzZWQgdW5kZXIgd2hhdGV2ZXIgbGljZW5zaW5nCi1kZXNpcmVkLgotCi1DbG9zZXM6IEZyZWUgRGVza3RvcCBCdWcgIzg0NTQxCi0KLVNpZ25lZC1vZmYtYnk6IEJyaWFuIEEuIExsb3lkIDxicmlhbi5sbG95ZEBmYW1pbHlob25vci5uZXQ+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBzcmMvbHhfbWVtb3J5LmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9seF9tZW1vcnkuYyBiL3NyYy9seF9tZW1vcnkuYwotaW5kZXggZjI2ZDI4MC4uOTkyNDQ2ZiAxMDA2NDQKLS0tLSBhL3NyYy9seF9tZW1vcnkuYwotKysrIGIvc3JjL2x4X21lbW9yeS5jCi1AQCAtMjIsNiArMjIsOSBAQAotICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAgKiBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAgKi8KLSsjaWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAieGY4Ni5oIgotICNpbmNsdWRlICJnZW9kZS5oIgotLS0gCi0yLjEuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdlb2RlXzIuMTEuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdlb2RlXzIuMTEuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NDM0MTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nZW9kZV8yLjExLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTdmM2UzOTQ3NGFlZWE1YWYzODFhOGUxMDNkYWZjMzYiCi0KLVNVTU1BUlkgPSAiWC5vcmcgc2VydmVyIC0tIEdlb2RlIEdYMi9MWCBkaXNwbGF5IGRyaXZlciIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BZGQtY29uZmlnLmgtaW5jbHVkZS10by1zcmMtbHhfbWVtb3J5LmMucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMzVmYTM4N2Y2YTMzZjZiMjJhNTZjZTRiZGE0MjQzOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhmYzFmNTVlMjlmYjc5ODViOTBjOTAyMWE0YjdlNTI5NWQ0Mjg4OGJkNjY5MTc0ZjQyZjNiN2Y2ODFmYzFhNyIKLQotQ09NUEFUSUJMRV9IT1NUID0gImkuODYuKi1saW51eCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgotCi0jIDJfMi4xMS4xNi1yMjEuMC94Zjg2LXZpZGVvLWdlb2RlLTIuMTEuMTYvc3JjL2d4X2RyaXZlci5jOjM3NjoyMDogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICd4Zjg2TWFwVmlkTWVtJyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KLVBOQkxBQ0tMSVNUW3hmODYtdmlkZW8tZ2VvZGVdID89ICJCUk9LRU4sIGZhaWxzIHRvIGJ1aWxkIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAxLWZpeC1idWlsZC13aXRoLUtNUy1kaXNhYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1maXgtYnVpbGQtd2l0aC1LTVMtZGlzYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZTgzMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAxLWZpeC1idWlsZC13aXRoLUtNUy1kaXNhYmxlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gZjQ4NWU4NzhiYzhiYjBlMzgxYTM4YTMwMDA5MzA4YzgyZmE4ZDY3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTYgQXVnIDIwMTIgMDg6MTg6NTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggS01TIGRpc2FibGVkCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9nbGFtby5oIHwgICAgMyArKysKLSAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nbGFtby5oIGIvc3JjL2dsYW1vLmgKLWluZGV4IGQ0YTJmMTkuLjVmZDVjMDQgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2xhbW8uaAotKysrIGIvc3JjL2dsYW1vLmgKLUBAIC0zNyw4ICszNywxMSBAQAotICNpbmNsdWRlICJ4Zjg2LmgiCi0gI2luY2x1ZGUgImV4YS5oIgotICNpbmNsdWRlIDxsaW51eC9mYi5oPgotKwotKyNpZmRlZiBIQVZFX0tNUwotICNpbmNsdWRlIDxsaWJkcm0vZHJtLmg+Ci0gI2luY2x1ZGUgPGxpYmRybS9nbGFtb19iby5oPgotKyNlbmRpZgotIAotICNkZWZpbmUgR0xBTU9fUkVHX0JBU0UoYykJCSgoYyktPmF0dHIuYWRkcmVzc1swXSkKLSAjZGVmaW5lIEdMQU1PX1JFR19TSVpFKGMpCQkoMHgyNDAwKQotLS0gCi0xLjcuOC42Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1nbGFtby1kcml2ZXItcmVtb3ZlLXJlZmVyZW5jZXMtdG8tbWlic3RvcmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDEtZ2xhbW8tZHJpdmVyLXJlbW92ZS1yZWZlcmVuY2VzLXRvLW1pYnN0b3JlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWIwYjIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1nbGFtby1kcml2ZXItcmVtb3ZlLXJlZmVyZW5jZXMtdG8tbWlic3RvcmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDA0MGFkZThiYjg2YTc3MWZhNGU3MWI0MWQyMDgwMjU0ODMwY2E5ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDE2IE1hciAyMDEzIDE3OjQ0OjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdsYW1vKmRyaXZlcjogcmVtb3ZlIHJlZmVyZW5jZXMgdG8gbWlic3RvcmUKLQotKiBmaXggYnVpbGQgd2l0aCB4c2VydmVyLTEuMTQKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2dsYW1vLWRyaXZlci5jICAgICB8IDIgLS0KLSBzcmMvZ2xhbW8ta21zLWRyaXZlci5jIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dsYW1vLWRyaXZlci5jIGIvc3JjL2dsYW1vLWRyaXZlci5jCi1pbmRleCAxMGI3NzYyLi4yMmY1N2Q3IDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLWRyaXZlci5jCi0rKysgYi9zcmMvZ2xhbW8tZHJpdmVyLmMKLUBAIC0xNCw3ICsxNCw2IEBACi0gI2luY2x1ZGUgInhmODZfT1Nwcm9jLmgiCi0gCi0gI2luY2x1ZGUgIm1pcG9pbnRlci5oIgotLSNpbmNsdWRlICJtaWJzdG9yZS5oIgotICNpbmNsdWRlICJtaWNtYXAuaCIKLSAjaW5jbHVkZSAiY29sb3JtYXBzdC5oIgotICNpbmNsdWRlICJ4Zjg2Y21hcC5oIgotQEAgLTYxMiw3ICs2MTEsNiBAQCBHbGFtb1NjcmVlbkluaXQoU0NSRUVOX0lOSVRfQVJHU19ERUNMKQotICAgICB9Ci0gCi0gICAgIHhmODZTZXRCbGFja1doaXRlUGl4ZWxzKHBTY3JlZW4pOwotLSAgICBtaUluaXRpYWxpemVCYWNraW5nU3RvcmUocFNjcmVlbik7Ci0gICAgIHhmODZTZXRCYWNraW5nU3RvcmUocFNjcmVlbik7Ci0gCi0gICAgIC8qIHNvZnR3YXJlIGN1cnNvciAqLwotZGlmZiAtLWdpdCBhL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMgYi9zcmMvZ2xhbW8ta21zLWRyaXZlci5jCi1pbmRleCBjNWM3YTAwLi5mMTkyMzk4IDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotKysrIGIvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotQEAgLTQxNSw3ICs0MTUsNiBAQCBCb29sIEdsYW1vS01TU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsCi0gCi0gCUdsYW1vS01TRXhhSW5pdChwU2Nybik7Ci0gCi0tCW1pSW5pdGlhbGl6ZUJhY2tpbmdTdG9yZShwU2NyZWVuKTsKLSAJeGY4NlNldEJhY2tpbmdTdG9yZShwU2NyZWVuKTsKLSAJeGY4NlNldFNpbGtlbk1vdXNlKHBTY3JlZW4pOwotIAltaURDSW5pdGlhbGl6ZShwU2NyZWVuLCB4Zjg2R2V0UG9pbnRlclNjcmVlbkZ1bmNzKCkpOwotLS0gCi0xLjguMS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1nbGFtby1rbXMtZHJpdmVyLWRyb3AtdW51c2VkLXhmODZfY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAxLWdsYW1vLWttcy1kcml2ZXItZHJvcC11bnVzZWQteGY4Nl9jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNjM3NDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAxLWdsYW1vLWttcy1kcml2ZXItZHJvcC11bnVzZWQteGY4Nl9jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDk2M2MyMjFhYTAxYmUyZWE5OWQzOTU3OGQ5MWU0YWEwOGVjM2FiMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIzIE1heSAyMDExIDE0OjI5OjM4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdsYW1vLWttcy1kcml2ZXI6IGRyb3AgdW51c2VkIHhmODZfY29uZmlnCi0KLSogZ2NjLTQuNiBkb2Vzbid0IGxpa2UgdW51c2VkIHZhcmlhYmxlcyB3aGljaCBhcmUgb25seSBzZXQgYW5kIG5ldmVyIHJlYWQKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2dsYW1vLWttcy1kcml2ZXIuYyB8ICAgIDIgLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMgYi9zcmMvZ2xhbW8ta21zLWRyaXZlci5jCi1pbmRleCBjZTg3Y2FhLi5jNWM3YTAwIDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotKysrIGIvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotQEAgLTIwOCw3ICsyMDgsNiBAQCBzdGF0aWMgY29uc3QgeGY4NkNydGNDb25maWdGdW5jc1JlYyBjcnRjX2NvbmZpZ19mdW5jcyA9IHsKLSAKLSBCb29sIEdsYW1vS01TUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKQotIHsKLS0JeGY4NkNydGNDb25maWdQdHIgeGY4Nl9jb25maWc7Ci0gCUdsYW1vUHRyIHBHbGFtbzsKLSAJcmdiIGRlZmF1bHRXZWlnaHQgPSB7IDAsIDAsIDAgfTsKLSAJaW50IG1heF93aWR0aCwgbWF4X2hlaWdodDsKLUBAIC0yNTQsNyArMjUzLDYgQEAgQm9vbCBHbGFtb0tNU1ByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAKLSAJLyogQWxsb2NhdGUgYW4geGY4NkNydGNDb25maWcgKi8KLSAJeGY4NkNydGNDb25maWdJbml0KHBTY3JuLCAmY3J0Y19jb25maWdfZnVuY3MpOwotLQl4Zjg2X2NvbmZpZyA9IFhGODZfQ1JUQ19DT05GSUdfUFRSKHBTY3JuKTsKLSAKLSAJbWF4X3dpZHRoID0gNDgwOwotIAltYXhfaGVpZ2h0ID0gNjQwOwotLS0gCi0xLjcuNS5yYzMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAzLWdsYW1vLWRyaXZlci1hZGFwdC10by14c2VydmVyLTAuMTMtdmlkZW8tQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAzLWdsYW1vLWRyaXZlci1hZGFwdC10by14c2VydmVyLTAuMTMtdmlkZW8tQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmRjNmU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMy1nbGFtby1kcml2ZXItYWRhcHQtdG8teHNlcnZlci0wLjEzLXZpZGVvLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi1Gcm9tIDU3ZTg5NDRlM2NjZWQwM2I5NTI2YmQwNzU2NDlkNzRkOTdjMjQ4OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIwIE5vdiAyMDEyIDIyOjE4OjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBnbGFtby1kcml2ZXI6IGFkYXB0IHRvIHhzZXJ2ZXItMC4xMyB2aWRlbyBBUEkKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2NvbXBhdC1hcGkuaCAgIHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2dsYW1vLWRyaXZlci5jIHwgNDMgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21wYXQtYXBpLmgKLQotZGlmZiAtLWdpdCBhL3NyYy9jb21wYXQtYXBpLmggYi9zcmMvY29tcGF0LWFwaS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjE1OTFiMQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2NvbXBhdC1hcGkuaAotQEAgLTAsMCArMSw5NiBAQAotKy8qCi0rICogQ29weXJpZ2h0IDIwMTIgUmVkIEhhdCwgSW5jLgotKyAqCi0rICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKLSsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKLSsgKiBTb2Z0d2FyZS4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0rICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0rICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCi0rICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0rICoKLSsgKiBBdXRob3I6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0rICovCi0rCi0rLyogdGhpcyBmaWxlIHByb3ZpZGVzIEFQSSBjb21wYXQgYmV0d2VlbiBzZXJ2ZXIgcG9zdCAxLjEzIGFuZCBwcmUgaXQsCi0rICAgaXQgc2hvdWxkIGJlIHJldXNlZCBpbnNpZGUgYXMgbWFueSBkcml2ZXJzIGFzIHBvc3NpYmxlICovCi0rI2lmbmRlZiBDT01QQVRfQVBJX0gKLSsjZGVmaW5lIENPTVBBVF9BUElfSAotKwotKyNpZm5kZWYgR0xZUEhfSEFTX0dMWVBIX1BJQ1RVUkVfQUNDRVNTT1IKLSsjZGVmaW5lIEdldEdseXBoUGljdHVyZShnLCBzKSBHbHlwaFBpY3R1cmUoKGcpKVsocyktPm15TnVtXQotKyNkZWZpbmUgU2V0R2x5cGhQaWN0dXJlKGcsIHMsIHApIEdseXBoUGljdHVyZSgoZykpWyhzKS0+bXlOdW1dID0gcAotKyNlbmRpZgotKwotKyNpZm5kZWYgWEY4Nl9IQVNfU0NSTl9DT05WCi0rI2RlZmluZSB4Zjg2U2NyZWVuVG9TY3JuKHMpIHhmODZTY3JlZW5zWyhzKS0+bXlOdW1dCi0rI2RlZmluZSB4Zjg2U2NyblRvU2NyZWVuKHMpIHNjcmVlbkluZm8uc2NyZWVuc1socyktPnNjcm5JbmRleF0KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFhGODZfU0NSTl9JTlRFUkZBQ0UKLSsKLSsjZGVmaW5lIFNDUk5fQVJHX1RZUEUgaW50Ci0rI2RlZmluZSBTQ1JOX0lORk9fUFRSKGFyZzEpIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbKGFyZzEpXQotKwotKyNkZWZpbmUgU0NSRUVOX0FSR19UWVBFIGludAotKyNkZWZpbmUgU0NSRUVOX1BUUihhcmcxKSBTY3JlZW5QdHIgcFNjcmVlbiA9IHNjcmVlbkluZm8uc2NyZWVuc1soYXJnMSldCi0rCi0rI2RlZmluZSBTQ1JFRU5fSU5JVF9BUkdTX0RFQ0wgaW50IGluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2Ci0rCi0rI2RlZmluZSBCTE9DS0hBTkRMRVJfQVJHU19ERUNMIGludCBhcmcsIHBvaW50ZXIgYmxvY2tEYXRhLCBwb2ludGVyIHBUaW1lb3V0LCBwb2ludGVyIHBSZWFkbWFzawotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1MgYXJnLCBibG9ja0RhdGEsIHBUaW1lb3V0LCBwUmVhZG1hc2sKLSsKLSsjZGVmaW5lIENMT1NFX1NDUkVFTl9BUkdTX0RFQ0wgaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4KLSsjZGVmaW5lIENMT1NFX1NDUkVFTl9BUkdTIHNjcm5JbmRleCwgcFNjcmVlbgotKwotKyNkZWZpbmUgQURKVVNUX0ZSQU1FX0FSR1NfREVDTCBpbnQgYXJnLCBpbnQgeCwgaW50IHksIGludCBmbGFncwotKwotKyNkZWZpbmUgU1dJVENIX01PREVfQVJHU19ERUNMIGludCBhcmcsIERpc3BsYXlNb2RlUHRyIG1vZGUsIGludCBmbGFncwotKwotKyNkZWZpbmUgRlJFRV9TQ1JFRU5fQVJHU19ERUNMIGludCBhcmcsIGludCBmbGFncwotKyNkZWZpbmUgRlJFRV9TQ1JFRU5fQVJHUyh4KSAoeCktPnNjcm5JbmRleCwgMAotKwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTX0RFQ0wgaW50IGFyZywgaW50IGZsYWdzCi0rI2RlZmluZSBWVF9GVU5DX0FSR1MoZmxhZ3MpIHBTY3JuLT5zY3JuSW5kZXgsIChmbGFncykKLSsKLSsjZGVmaW5lIFhGODZfRU5BQkxFRElTQUJMRUZCX0FSRyh4KSAoKHgpLT5zY3JuSW5kZXgpCi0rI2Vsc2UKLSsjZGVmaW5lIFNDUk5fQVJHX1RZUEUgU2NybkluZm9QdHIKLSsjZGVmaW5lIFNDUk5fSU5GT19QVFIoYXJnMSkgU2NybkluZm9QdHIgcFNjcm4gPSAoYXJnMSkKLSsKLSsjZGVmaW5lIFNDUkVFTl9BUkdfVFlQRSBTY3JlZW5QdHIKLSsjZGVmaW5lIFNDUkVFTl9QVFIoYXJnMSkgU2NyZWVuUHRyIHBTY3JlZW4gPSAoYXJnMSkKLSsKLSsjZGVmaW5lIFNDUkVFTl9JTklUX0FSR1NfREVDTCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2Ci0rCi0rI2RlZmluZSBCTE9DS0hBTkRMRVJfQVJHU19ERUNMIFNjcmVlblB0ciBhcmcsIHBvaW50ZXIgcFRpbWVvdXQsIHBvaW50ZXIgcFJlYWRtYXNrCi0rI2RlZmluZSBCTE9DS0hBTkRMRVJfQVJHUyBhcmcsIHBUaW1lb3V0LCBwUmVhZG1hc2sKLSsKLSsjZGVmaW5lIENMT1NFX1NDUkVFTl9BUkdTX0RFQ0wgU2NyZWVuUHRyIHBTY3JlZW4KLSsjZGVmaW5lIENMT1NFX1NDUkVFTl9BUkdTIHBTY3JlZW4KLSsKLSsjZGVmaW5lIEFESlVTVF9GUkFNRV9BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnLCBpbnQgeCwgaW50IHkKLSsjZGVmaW5lIFNXSVRDSF9NT0RFX0FSR1NfREVDTCBTY3JuSW5mb1B0ciBhcmcsIERpc3BsYXlNb2RlUHRyIG1vZGUKLSsKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1NfREVDTCBTY3JuSW5mb1B0ciBhcmcKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1MoeCkgKHgpCi0rCi0rI2RlZmluZSBWVF9GVU5DX0FSR1NfREVDTCBTY3JuSW5mb1B0ciBhcmcKLSsjZGVmaW5lIFZUX0ZVTkNfQVJHUyhmbGFncykgcFNjcm4KLSsKLSsjZGVmaW5lIFhGODZfRU5BQkxFRElTQUJMRUZCX0FSRyh4KSAoeCkKLSsKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvZ2xhbW8tZHJpdmVyLmMgYi9zcmMvZ2xhbW8tZHJpdmVyLmMKLWluZGV4IGIxM2NhYWUuLjEwYjc3NjIgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2xhbW8tZHJpdmVyLmMKLSsrKyBiL3NyYy9nbGFtby1kcml2ZXIuYwotQEAgLTQzLDYgKzQzLDcgQEAKLSAKLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAKLSsjaW5jbHVkZSAiY29tcGF0LWFwaS5oIgotIAotIHN0YXRpYyBCb29sIGRlYnVnID0gMDsKLSAKLUBAIC02OCwxMCArNjksMTAgQEAgc3RhdGljIEJvb2wKLSBHbGFtb1ByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncyk7Ci0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb1NjcmVlbkluaXQoaW50IEluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKLStHbGFtb1NjcmVlbkluaXQoU0NSRUVOX0lOSVRfQVJHU19ERUNMKTsKLSAKLSBzdGF0aWMgQm9vbAotLUdsYW1vQ2xvc2VTY3JlZW4oaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4pOwotK0dsYW1vQ2xvc2VTY3JlZW4oQ0xPU0VfU0NSRUVOX0FSR1NfREVDTCk7Ci0gCi0gc3RhdGljIEJvb2wKLSBHbGFtb0NydGNSZXNpemUoU2NybkluZm9QdHIgc2NybiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLUBAIC04NiwxMCArODcsMTAgQEAgc3RhdGljIHZvaWQKLSBHbGFtb1Jlc3RvcmVIVyhTY3JuSW5mb1B0ciBwU2NyZW4pOwotIAotIHN0YXRpYyBCb29sCi0tR2xhbW9FbnRlclZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncyk7Ci0rR2xhbW9FbnRlclZUKFZUX0ZVTkNfQVJHU19ERUNMKTsKLSAKLSBzdGF0aWMgdm9pZAotLUdsYW1vTGVhdmVWVChpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpOwotK0dsYW1vTGVhdmVWVChWVF9GVU5DX0FSR1NfREVDTCk7Ci0gCi0gc3RhdGljIHZvaWQKLSBHbGFtb0xvYWRDb2xvcm1hcChTY3JuSW5mb1B0ciBwU2NybiwgaW50IG51bUNvbG9ycywgaW50ICppbmRpY2VzLAotQEAgLTI0OCw4ICsyNDksOCBAQCBHbGFtb1VubWFwTU1JTyhTY3JuSW5mb1B0ciBwU2NybikgewotIH0KLSAKLSBzdGF0aWMgQm9vbAotLUdsYW1vU3dpdGNoTW9kZShpbnQgc2NybkluZGV4LCBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQgZmxhZ3MpIHsKLS0gICAgU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1tzY3JuSW5kZXhdOwotK0dsYW1vU3dpdGNoTW9kZShTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wpIHsKLSsgICAgU0NSTl9JTkZPX1BUUihhcmcpOwotICAgICB4Zjg2Q3J0Y0NvbmZpZ1B0ciBjb25maWcgPSBYRjg2X0NSVENfQ09ORklHX1BUUiAocFNjcm4pOwotICAgICB4Zjg2T3V0cHV0UHRyIG91dHB1dCA9IGNvbmZpZy0+b3V0cHV0W2NvbmZpZy0+Y29tcGF0X291dHB1dF07Ci0gICAgIFJvdGF0aW9uIHJvdGF0aW9uOwotQEAgLTI4Niw3ICsyODcsNyBAQCBHbGFtb0ZiZGV2UHJvYmUoRHJpdmVyUHRyIGRydiwgR0RldlB0ciAqZGV2U2VjdGlvbnMsIGludCBudW1EZXZTZWN0aW9ucykKLSAKLSAJZm9yIChpID0gMDsgaSA8IG51bURldlNlY3Rpb25zOyBpKyspIHsKLSAKLS0JCWRldiA9IHhmODZGaW5kT3B0aW9uVmFsdWUoZGV2U2VjdGlvbnNbaV0tPm9wdGlvbnMsICJEZXZpY2UiKTsKLSsJCWRldiA9IChjaGFyICopIHhmODZGaW5kT3B0aW9uVmFsdWUoZGV2U2VjdGlvbnNbaV0tPm9wdGlvbnMsICJEZXZpY2UiKTsKLSAJCWlmIChmYmRldkhXUHJvYmUoTlVMTCwgZGV2LCBOVUxMKSkgewotIAkJCWludCBlbnRpdHk7Ci0gCQkJcFNjcm4gPSBOVUxMOwotQEAgLTQzMCw3ICs0MzEsNyBAQCBHbGFtb1ByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAKLSAgICAgcEdsYW1vLT5wRW50ID0geGY4NkdldEVudGl0eUluZm8ocFNjcm4tPmVudGl0eUxpc3RbMF0pOwotIAotLSAgICBmYl9kZXZpY2UgPSB4Zjg2RmluZE9wdGlvblZhbHVlKHBHbGFtby0+cEVudC0+ZGV2aWNlLT5vcHRpb25zLCAiRGV2aWNlIik7Ci0rICAgIGZiX2RldmljZSA9IChjaGFyICopIHhmODZGaW5kT3B0aW9uVmFsdWUocEdsYW1vLT5wRW50LT5kZXZpY2UtPm9wdGlvbnMsICJEZXZpY2UiKTsKLSAKLSAgICAgLyogb3BlbiBkZXZpY2UgKi8KLSAgICAgaWYgKCFmYmRldkhXSW5pdChwU2NybiwgTlVMTCwgZmJfZGV2aWNlKSkKLUBAIC01MjMsNyArNTI0LDcgQEAgR2xhbW9QcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gCi0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb1NjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLStHbGFtb1NjcmVlbkluaXQoU0NSRUVOX0lOSVRfQVJHU19ERUNMKQotIHsKLSAgICAgU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1twU2NyZWVuLT5teU51bV07Ci0gICAgIEdsYW1vUHRyIHBHbGFtbyA9IEdsYW1vUFRSKHBTY3JuKTsKLUBAIC01NDUsNyArNTQ2LDcgQEAgR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gI2VuZGlmCi0gCi0gICAgIGlmIChOVUxMID09IChwR2xhbW8tPmZibWVtID0gZmJkZXZIV01hcFZpZG1lbShwU2NybikpKSB7Ci0tICAgICAgICB4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwgIm1hcHBpbmcgb2YgdmlkZW8gbWVtb3J5IGZhaWxlZFxuIik7Ci0rICAgICAgICB4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsICJtYXBwaW5nIG9mIHZpZGVvIG1lbW9yeSBmYWlsZWRcbiIpOwotICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci0gCi1AQCAtNTU2LDEzICs1NTcsMTMgQEAgR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgIC8qIG1pIGxheWVyICovCi0gICAgIG1pQ2xlYXJWaXN1YWxUeXBlcygpOwotICAgICBpZiAoIW1pU2V0VmlzdWFsVHlwZXMocFNjcm4tPmRlcHRoLCBUcnVlQ29sb3JNYXNrLCBwU2Nybi0+cmdiQml0cywgVHJ1ZUNvbG9yKSkgewotLSAgICAgICAgeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsCi0rICAgICAgICB4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICJ2aXN1YWwgdHlwZSBzZXR1cCBmYWlsZWQgZm9yICVkIGJpdHMgcGVyIHBpeGVsIFsxXVxuIiwKLSAgICAgICAgICAgICAgICAgICAgcFNjcm4tPmJpdHNQZXJQaXhlbCk7Ci0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLSAgICAgaWYgKCFtaVNldFBpeG1hcERlcHRocygpKSB7Ci0tICAgICAgeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJwaXhtYXAgZGVwdGggc2V0dXAgZmFpbGVkXG4iKTsKLSsgICAgICB4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsICJwaXhtYXAgZGVwdGggc2V0dXAgZmFpbGVkXG4iKTsKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLSAKLUBAIC02MTcsNyArNjE4LDcgQEAgR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgIC8qIHNvZnR3YXJlIGN1cnNvciAqLwotICAgICBtaURDSW5pdGlhbGl6ZShwU2NyZWVuLCB4Zjg2R2V0UG9pbnRlclNjcmVlbkZ1bmNzKCkpOwotIAotLSAgICBHbGFtb0VudGVyVlQoc2NybkluZGV4LCAwKTsKLSsgICAgR2xhbW9FbnRlclZUKFZUX0ZVTkNfQVJHUygwKSk7Ci0gCi0gICAgIHhmODZDcnRjU2NyZWVuSW5pdChwU2NyZWVuKTsKLSAjaWYgWE9SR19WRVJTSU9OX0NVUlJFTlQgPj0gWE9SR19WRVJTSU9OX05VTUVSSUMoMSw1LDAsMCwwKQotQEAgLTYyNyw3ICs2MjgsNyBAQCBHbGFtb1NjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgLyogY29sb3JtYXAgKi8KLSAgICAgcEdsYW1vLT5jb2xvcm1hcCA9IE5VTEw7Ci0gICAgIGlmICghbWlDcmVhdGVEZWZDb2xvcm1hcChwU2NyZWVuKSkgewotLSAgICAgICAgeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsCi0rICAgICAgICB4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvcjogbWlDcmVhdGVEZWZDb2xvcm1hcCBmYWlsZWQgIgotICAgICAgICAgICAgICAgICAgICAiaW4gR2xhbW9TY3JlZW5Jbml0KClcbiIpOwotICAgICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTY1Miw5ICs2NTMsOSBAQCBHbGFtb1NjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb0Nsb3NlU2NyZWVuKGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuKQotK0dsYW1vQ2xvc2VTY3JlZW4oQ0xPU0VfU0NSRUVOX0FSR1NfREVDTCkKLSB7Ci0tICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbc2NybkluZGV4XTsKLSsgICAgU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuVG9TY3JuKHBTY3JlZW4pOwotICAgICBHbGFtb1B0ciBwR2xhbW8gPSBHbGFtb1BUUihwU2Nybik7Ci0gCi0gICAgIGlmIChwR2xhbW8tPmFjY2VsKQotQEAgLTY3NSw3ICs2NzYsNyBAQCBHbGFtb0Nsb3NlU2NyZWVuKGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuKQotIAotICAgICBwU2NyZWVuLT5DcmVhdGVTY3JlZW5SZXNvdXJjZXMgPSBwR2xhbW8tPkNyZWF0ZVNjcmVlblJlc291cmNlczsKLSAgICAgcFNjcmVlbi0+Q2xvc2VTY3JlZW4gPSBwR2xhbW8tPkNsb3NlU2NyZWVuOwotLSAgICByZXR1cm4gKCpwU2NyZWVuLT5DbG9zZVNjcmVlbikoc2NybkluZGV4LCBwU2NyZWVuKTsKLSsgICAgcmV0dXJuICgqcFNjcmVlbi0+Q2xvc2VTY3JlZW4pKENMT1NFX1NDUkVFTl9BUkdTKTsKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLUBAIC04MjYsOCArODI3LDggQEAgR2xhbW9SZXN0b3JlSFcoU2NybkluZm9QdHIgcFNjcm4pIHsKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb0VudGVyVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKSB7Ci0tICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbc2NybkluZGV4XTsKLStHbGFtb0VudGVyVlQoVlRfRlVOQ19BUkdTX0RFQ0wpIHsKLSsgICAgU0NSTl9JTkZPX1BUUihhcmcpOwotICAgICBHbGFtb1B0ciBwR2xhbW8gPSBHbGFtb1BUUihwU2Nybik7Ci0gCi0gICAgIEdsYW1vU2F2ZUhXKHBTY3JuKTsKLUBAIC04NDIsOCArODQzLDggQEAgR2xhbW9FbnRlclZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncykgewotIH0KLSAKLSBzdGF0aWMgdm9pZAotLUdsYW1vTGVhdmVWVChpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpIHsKLS0gICAgU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1tzY3JuSW5kZXhdOwotK0dsYW1vTGVhdmVWVChWVF9GVU5DX0FSR1NfREVDTCkgewotKyAgICBTQ1JOX0lORk9fUFRSKGFyZyk7Ci0gICAgIEdsYW1vUHRyIHBHbGFtbyA9IEdsYW1vUFRSKHBTY3JuKTsKLSAKLSAgICAgaWYgKHBHbGFtby0+YWNjZWwpCi0tLSAKLTEuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwNC1nbGFtby5oLXVzZS1jb25zdC1mb3ItamJ0Nms3NF9zdGF0ZV9wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDA0LWdsYW1vLmgtdXNlLWNvbnN0LWZvci1qYnQ2azc0X3N0YXRlX3BhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MjAzNzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDA0LWdsYW1vLmgtdXNlLWNvbnN0LWZvci1qYnQ2azc0X3N0YXRlX3BhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDE4MGEwMDYzNGYzNTFhMDljZWFiYzU2OTVkOGUxYWNjM2U1ODU1MDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEyIERlYyAyMDE0IDEyOjAwOjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdsYW1vLmg6IHVzZSBjb25zdCBmb3IgamJ0Nms3NF9zdGF0ZV9wYXRoCi0KLSogZml4IGJ1aWxkIGlzc3VlIHdpdGggeHNlcnZlciAxLjE2OgotICBnbGFtby1kcml2ZXIuYzo1MDE6MzI6IGVycm9yOiBhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSBbLVdlcnJvcl0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2dsYW1vLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2xhbW8uaCBiL3NyYy9nbGFtby5oCi1pbmRleCA1ZmQ1YzA0Li41ZTA3MmJlIDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLmgKLSsrKyBiL3NyYy9nbGFtby5oCi1AQCAtMTQ4LDcgKzE0OCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAjZW5kaWYKLSAKLSAjaWZkZWYgSkJUNks3NF9TRVRfU1RBVEUKLS0gICAgY2hhciAqamJ0Nms3NF9zdGF0ZV9wYXRoOwotKyAgICBjb25zdCBjaGFyICpqYnQ2azc0X3N0YXRlX3BhdGg7Ci0gICAgIGNoYXIgc2F2ZWRfamJ0Nms3NF9zdGF0ZVsxNF07Ci0gI2VuZGlmCi0gCi0tLSAKLTIuMS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtb19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MThkMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtb19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIEdsYW1vIGRpc3BsYXkgZHJpdmVyIHdpdGggS01TIHN1cHBvcnQiCi1ERVBFTkRTICs9ICJsaWJkcm0iCi1SREVQRU5EU18ke1BOfSArPSAieHNlcnZlci14b3JnLW1vZHVsZS1leGEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4Y2JkOTlmZmY3NzNmOTJlODQ0OTQ4Zjc0ZWYwZGY4IgotCi1QRSA9ICIyIgotUFYgPSAiMS4wLjArZ2l0ciR7U1JDUFZ9IgotUFIgPSAiJHtJTkNfUFJ9LjQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm9wZW5tb2tvLm9yZy9naXQveGY4Ni12aWRlby1nbGFtby5naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsYW1vLWttcy1kcml2ZXItZHJvcC11bnVzZWQteGY4Nl9jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1LTVMtZGlzYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1nbGFtby1kcml2ZXItYWRhcHQtdG8teHNlcnZlci0wLjEzLXZpZGVvLUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsYW1vLWRyaXZlci1yZW1vdmUtcmVmZXJlbmNlcy10by1taWJzdG9yZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdsYW1vLmgtdXNlLWNvbnN0LWZvci1qYnQ2azc0X3N0YXRlX3BhdGgucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gImNiOWVkMTcwMzVhNzllNDlkZGUyNmExZTdlMmJjNWYxMGZkODE0NGIiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWttcyAiCi0KLVBOQkxBQ0tMSVNUW3hmODYtdmlkZW8tZ2xhbW9dID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjI5LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhL2NoZWNrZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhL2NoZWNrZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWFlNmRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1tZ2EvY2hlY2tmaWxlLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD01NzYwNl0KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gYzkwMTRhOGYzYzliNjkxYjVhYTdiMWYzZWM2NmNmN2M4NGI4MjExYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDI5IE5vdiAyMDEyIDExOjAwOjQzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBkb250IHVzZSBBQ19DSEVDS19GSUxFIHdoZW4gZW5hYmxpbmcgRFJJCisKK0F1dG9tYXRpY2FsbHkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGEgZmVhdHVyZSBiYXNlZCBvbiBpbnN0YWxsZWQgZmlsZXMgaXNuJ3QKK2RldGVybWluaXN0aWMsIGFuZCBBQ19DSEVDS19GSUxFIHJldHVybnMgYW4gZXJyb3Igd2hlbiBjcm9zcy1jb21waWxpbmcuCisKK0ZpeCB0aGlzIGJ5IGVuYWJsaW5nIERSSSBieSBkZWZhdWx0LCBhbmQgcmVtb3ZpbmcgdGhlIGV4cGxpY2l0IGZpbGUgY2hlY2tzIGFzCitwa2ctY29uZmlnIGlzIGdvb2QgZW5vdWdoLgorCisoIzU3NjA2KQorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgICAyNSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZjYTFhOWMuLmQyYWEyZWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU1LDkgKzU1LDkgQEAgQUNfQVJHX1dJVEgoeG9yZy1tb2R1bGUtZGlyLAorICAgICAgICAgICAgIFttb2R1bGVkaXI9IiRsaWJkaXIveG9yZy9tb2R1bGVzIl0pCisgCisgQUNfQVJHX0VOQUJMRShkcmksIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZHJpXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgRFJJIHN1cHBvcnQgW1tkZWZhdWx0PWF1dG9dXV0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlzYWJsZSBEUkkgc3VwcG9ydCBbW2RlZmF1bHQ9ZW5hYmxlZF1dXSksCisgICAgICAgICAgICAgICBbRFJJPSIkZW5hYmxldmFsIl0sCistICAgICAgICAgICAgICBbRFJJPWF1dG9dKQorKyAgICAgICAgICAgICAgW0RSST15ZXNdKQorIEFDX0FSR19FTkFCTEUoZXhhLAorICAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1leGFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgRVhBIHN1cHBvcnQgW1tkZWZhdWx0PWVuYWJsZWRdXV0pLAorQEAgLTc2LDI3ICs3Niw2IEBAIHNka2Rpcj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1zZGtkaXIgeG9yZy1zZXJ2ZXJgCisgCisgIyBDaGVja3MgZm9yIGxpYnJhcmllcy4KKyAKKy1pZiB0ZXN0ICJ4JERSSSIgIT0geG5vOyB0aGVuCistICAgICAgICBBQ19DSEVDS19GSUxFKFske3Nka2Rpcn0vZHJpLmhdLAorLSAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9kcmlfaD0ieWVzIl0sIFtoYXZlX2RyaV9oPSJubyJdKQorLSAgICAgICAgQUNfQ0hFQ0tfRklMRShbJHtzZGtkaXJ9L3NhcmVhLmhdLAorLSAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9zYXJlYV9oPSJ5ZXMiXSwgW2hhdmVfc2FyZWFfaD0ibm8iXSkKKy0gICAgICAgIEFDX0NIRUNLX0ZJTEUoWyR7c2RrZGlyfS9kcmlzdHJ1Y3QuaF0sCistICAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2RyaXN0cnVjdF9oPSJ5ZXMiXSwgW2hhdmVfZHJpc3RydWN0X2g9Im5vIl0pCistZmkKKy0KKy1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSBEUkkgc3VwcG9ydF0pCistaWYgdGVzdCAieCREUkkiID0geGF1dG87IHRoZW4KKy0gICAgICAgIGlmIHRlc3QgIngkaGF2ZV9kcmlfaCIgPSB4eWVzICYmIFwKKy0gICAgICAgICAgIHRlc3QgIngkaGF2ZV9zYXJlYV9oIiA9IHh5ZXMgJiYgXAorLSAgICAgICAgICAgdGVzdCAieCRoYXZlX2RyaXN0cnVjdF9oIiA9IHh5ZXM7IHRoZW4KKy0gICAgICAgICAgICAgICAgRFJJPSJ5ZXMiCistICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIERSST0ibm8iCistICAgICAgICBmaQorLWZpCistQUNfTVNHX1JFU1VMVChbJERSSV0pCistCisgQU1fQ09ORElUSU9OQUwoRFJJLCB0ZXN0ICJ4JERSSSIgPSB4eWVzKQorIGlmIHRlc3QgIngkRFJJIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKERSSSwgW2xpYmRybSA+PSAyLjAgeGY4NmRyaXByb3RvXSkKKy0tIAorMS43LjEwLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1tZ2FfMS42LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW1nYV8xLjYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDY4MDU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1tZ2FfMS42LjUuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIE1hdHJveCBNR0EgZGlzcGxheSBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gIm1nYSBpcyBhbiBYb3JnIGRyaXZlciBmb3IgTWF0cm94IHZpZGVvIGNhcmRzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYzEzOTVkMmNkMzJkZmM1ZDZjNTdkMmQ4ZjgzZDNmYyIKKworU1JDX1VSSSArPSAiZmlsZTovL2NoZWNrZmlsZS5wYXRjaCIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGlicGNpYWNjZXNzIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODYuKi1saW51eHx4ODZfNjQuKi1saW51eCknCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZWUyNTQ5MjQ3ZTAxZGUzZTdiY2U1MmMyNzQ4MzExOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjYzY2Q4ZTYzNjRmN2M0ZTI2MzdiOWZjYWI5ODYxZDBlMzk3MTUxOGM3M2IwMGQyMTNmNjU0NWExMjg5NDIyIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmknLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpLGRybSB4Zjg2ZHJpcHJvdG8seHNlcnZlci14b3JnLWV4dGVuc2lvbi1kcmkiCisKK1JERVBFTkRTXyR7UE59ID0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1ub3V2ZWF1XzEuMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbm91dmVhdV8xLjAuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NDE4OWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1ub3V2ZWF1XzEuMC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDY0MWRlZGRhYTgwZmU3Y2E4OGU5NDRlMWZkOTRhOTQiCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gbm91dmVhdSB2aWRlbyBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gIk9wZW4tc291cmNlIFgub3JnIGdyYXBoaWNzIGRyaXZlciBmb3IgTlZJRElBIGdyYXBoaWNzIgotCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4dm1jIGRybSB4Zjg2ZHJpcHJvdG8gZ2xwcm90byBcCi0gICAgICAgICAgICB2aXJ0dWFsL2xpYmdsIHhpbmVyYW1hcHJvdG8gbGlicGNpYWNjZXNzIgotUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGM3OTkxMGM3YjllMzIzMjFjZWZjN2FmMjUwYzc3NjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGVhMDU3YWQ3ZmMzMWNhYmEyZDRlNDZjN2U0MThmZTJiM2M3NjJiMDRmYjhkMzgyZjUzMzgzMzk3ZmQ4MzkxZSIKLQotCi1QTkJMQUNLTElTVFt4Zjg2LXZpZGVvLW5vdXZlYXVdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjU3LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbm91dmVhdV8xLjAuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NDY4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDY0MWRlZGRhYTgwZmU3Y2E4OGU5NDRlMWZkOTRhOTQiCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gbm91dmVhdSB2aWRlbyBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gIk9wZW4tc291cmNlIFgub3JnIGdyYXBoaWNzIGRyaXZlciBmb3IgTlZJRElBIGdyYXBoaWNzIgorCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4dm1jIGRybSB4Zjg2ZHJpcHJvdG8gZ2xwcm90byBcCisgICAgICAgICAgICB2aXJ0dWFsL2xpYmdsIHhpbmVyYW1hcHJvdG8gbGlicGNpYWNjZXNzIgorUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MTcyMDNjYjg3MDI5Y2RkY2JjY2Y3Mzk4ZjlhZDhjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWRlMTBmZDM5NTYxMGEzMjg2OTdhZGNhMzQzNGZiMTRlOWFmYmQ3OTkxMWQ2Yzg1NDVjZmEyYzBlNTQxZDRjIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQveG9yZy1mb250cy0xMDBkcGkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQveG9yZy1mb250cy0xMDBkcGkuYmIKaW5kZXggZmNmNjgyNi4uNDVlM2Y3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L3hvcmctZm9udHMtMTAwZHBpLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZm9udC94b3JnLWZvbnRzLTEwMGRwaS5iYgpAQCAtMTIsMTMgKzEyLDMgQEAKICAgICBmb250LWJoLWx1Y2lkYXR5cGV3cml0ZXItMTAwZHBpIFwKICAgICBmb250LWJpdHN0cmVhbS0xMDBkcGkgXAogIgotCi1QTkJMQUNLTElTVFt4b3JnLWZvbnRzLTEwMGRwaV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBmb250LWFkb2JlLTEwMGRwaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbeG9yZy1mb250cy0xMDBkcGldID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgeG9yZy1mb250cy0xMDBkcGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW3hvcmctZm9udHMtMTAwZHBpXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGZvbnQtYmgtMTAwZHBpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFt4b3JnLWZvbnRzLTEwMGRwaV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBmb250LWFkb2JlLXV0b3BpYS0xMDBkcGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW3hvcmctZm9udHMtMTAwZHBpXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGZvbnQtYmgtbHVjaWRhdHlwZXdyaXRlci0xMDBkcGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvYWdlbnQtcHJveHkvYWdlbnQtcHJveHlfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2FnZW50LXByb3h5L2FnZW50LXByb3h5X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM3MGY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2FnZW50LXByb3h5L2FnZW50LXByb3h5X2dpdC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlByb3h5IGZvciBVRFAvVENQIGRlYnVnIGNvbm5lY3Rpb25zIgorREVTQ1JJUFRJT04gPSAiVGhlIGFnZW50LXByb3h5IHdpbGwgZm9yd2FyZCB0Y3Agb3IgdWRwIGNvbm5lY3Rpb25zIGFzIHdlbGwgYXMgYWxsb3cgZm9yIHNjcmlwdCBtdWx0aXBsZXhpbmcgb2YgdGVybWluYWwgc2Vzc2lvbnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tnZGIud2lraS5rZXJuZWwub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKKworU0VDVElPTiA9ICJkZXZlbCIKKworRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfSciCisKK1NSQ1JFViA9ICJlNmM5ZDNkOTk2YmQ1NWU3YWIxNGRiZDc0ZGViNzg0MWUwYzNhNGYxIgorUFYgPSAiMS45NitnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rZ2RiL2FnZW50LXByb3h5LmdpdDtwcm90b2NvbD1naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS5wYXRjaCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGFnZW50LXByb3h5ICR7RH0ke2JpbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9hZ2VudC1wcm94eS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2FnZW50LXByb3h5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtQWRkLUxERkxBR1MtdmFyaWFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVlYzkxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9hZ2VudC1wcm94eS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMWJlYjBkYWQ2ZjhiOTllYjNiZjFiOTk4MmUwYjQ5ZTgxZmY3N2JiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDE5OjE3OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBBZGQgTERGTEFHUyB2YXJpYWJsZQorCitBZGQgTERGTEFHUyB2YXJpYWJsZSB0byBtYWtlIHN1cmUgdGhlIGV4dHJhIGxpbmtkZXIKK2ZsYWdzIGNhbiBiZSBwYXNzZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBlMjA5MThmLi4yNWQ5MmQzIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNTEsNyArNTEsNyBAQCAkKENST1NTX0NPTVBJTEUpYWdlbnQtcHJveHk6ICQoT0JKUykKKyAJJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChMSU5LRkxBR1MpICQoQ0ZMQUdTKSAtbyAkKGV4dHBhdGgpJEAgJChPQkpTKSB3c29jazMyLmxpYgorIGVsc2UKKyAkKENST1NTX0NPTVBJTEUpYWdlbnQtcHJveHk6ICQoT0JKUykKKy0JJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChDRkxBR1MpIC1vICQoZXh0cGF0aCkkQCAkKE9CSlMpICQoTERMSUJTKQorKwkkKENDKSAtREFHRU5UX1ZFUj0kKEFHRU5UVkVSKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyAkKGV4dHBhdGgpJEAgJChPQkpTKSAkKExETElCUykKKyBlbmRpZgorIAorIAorQEAgLTYxLDkgKzYxLDkgQEAgY2xlYW46CisgCXJtIC1mICQoZXh0cGF0aCkkKENST1NTX0NPTVBJTEUpYWdlbnQtcHJveHkgJChleHRwYXRoKWFnZW50LXByb3h5ICQoZXh0cGF0aCkqLm8gJChleHRwYXRoKSoub2JqICQoZXh0cGF0aCkqLmV4cCAkKGV4dHBhdGgpKi5leGUgJChleHRwYXRoKSouaWxrICQoZXh0cGF0aCkqLnBkYiAqfgorIAorICQoZXh0cGF0aCkkKENST1NTX0NPTVBJTEUpJS5vOjolLmMKKy0JJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChDRkxBR1MpIC1jICQ8IC1vICRACisrCSQoQ0MpIC1EQUdFTlRfVkVSPSQoQUdFTlRWRVIpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1jICQ8IC1vICRACisgCisgJChleHRwYXRoKSUub2JqOiUuYworLQkkKENDKSAtREFHRU5UX1ZFUj0kKEFHRU5UVkVSKSAkKENGTEFHUykgLWMgLUZvJEAgJChUTFNQQVRIX0lOQykgJDwKKysJJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChDRkxBR1MpICQoTERGTEFHUykgLWMgLUZvJEAgJChUTFNQQVRIX0lOQykgJDwKKyAKKyAKKy0tIAorMi44LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NjNjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJTaG93cyBhbmQgc2V0cyBwcm9jZXNzb3IgcG93ZXIgcmVsYXRlZCB2YWx1ZXMiCitERVNDUklQVElPTiA9ICJjcHVwb3dlciBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgdG8gZXhhbWluZSBhbmQgdHVuZSBwb3dlciBcCitzYXZpbmcgcmVsYXRlZCBmZWF0dXJlcyBvZiB5b3VyIHByb2Nlc3Nvci4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc4MTBmYWI3NDg3ZmIwYWFkMzI3Yjc2ZjFiZTdjZDciCitERVBFTkRTID0gInBjaXV0aWxzIgorUFJPVklERVMgPSAidmlydHVhbC9jcHVwb3dlciIKKworaW5oZXJpdCBrZXJuZWxzcmMga2VybmVsLWFyY2gKKworZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKKworRVhUUkFfT0VNQUtFID0gIi1DICR7U30vdG9vbHMvcG93ZXIvY3B1cG93ZXIgTz0ke0J9IENST1NTPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9IiBMRD0iJHtMRH0iIEFSPSR7QVJ9IEFSQ0g9JHtBUkNIfSIKKworZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorICAgICMgRG8gbm90IHNoaXAgaGVhZGVycworICAgIHJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Cit9CisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7CisgICAgZC5zZXRWYXIoJ1BLR1YnLCBkLmdldFZhcigiS0VSTkVMX1ZFUlNJT04iLCBUcnVlKS5zcGxpdCgiLSIpWzBdKQorfQorCitCID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoLzAwMDEtRml4LWZvci1hLWNvbXBpbGF0aW9uLWVycm9yLWlmLWdsaWJjLTIuMjUtb3ItbGF0ZXItaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDAxLUZpeC1mb3ItYS1jb21waWxhdGlvbi1lcnJvci1pZi1nbGliYy0yLjI1LW9yLWxhdGVyLWgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MzQ4MTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoLzAwMDEtRml4LWZvci1hLWNvbXBpbGF0aW9uLWVycm9yLWlmLWdsaWJjLTIuMjUtb3ItbGF0ZXItaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1Gcm9tIGI4YzhmYmUwYTI0ODFlOTdmYzU3ZGQ1OTYzNDY4MjdhNjkyYTU3NjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZlIEFuZGVyc29uIDxhbmRlcnNvbkByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyOCBNYXIgMjAxNyAxNTo0NDo0MCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvM10gRml4IGZvciBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIGdsaWJjLTIuMjUgb3IgbGF0ZXIgaGFzCi0gYmVlbiBpbnN0YWxsZWQgb24gdGhlIGhvc3QgYnVpbGQgbWFjaGluZS4gIFdpdGhvdXQgdGhlIHBhdGNoLCB0aGUgYnVpbGQgZmFpbHMKLSB3aXRoIHRoZSBlcnJvciBtZXNzYWdlICJhbWQ2NC1saW51eC1uYXQuYzo0OTY6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvcgotICdwc19nZXRfdGhyZWFkX2FyZWEnIi4gKGFuZGVyc29uQHJlZGhhdC5jb20pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKwotIGNvbmZpZ3VyZS5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGdkYi03LjYtcHJvY19zZXJ2aWNlLmgucGF0Y2ggfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGItNy42LXByb2Nfc2VydmljZS5oLnBhdGNoCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAyMDJlZjhiLi5iNmI3ZTgwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMjY0LDYgKzI2NCwxMiBAQCBnZGJfcGF0Y2g6Ci0gCWlmIFsgIiR7QVJDSH0iID0gIng4Nl82NCIgXSAmJiBbICIke1RBUkdFVH0iID0gIlBQQzY0IiBdICYmIFsgLWYgJHtHREJ9LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCBdOyB0aGVuIFwKLSAJCXBhdGNoIC1kICR7R0RCfSAtcDEgLUYwIDwgJHtHREJ9LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCA7IFwKLSAJZmkKLSsJaWYgWyAtZiAvdXNyL2luY2x1ZGUvcHJvY19zZXJ2aWNlLmggXTsgdGhlbiBcCi0rCQlncmVwICdleHRlcm4gcHNfZXJyX2UgcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QnIC91c3IvaW5jbHVkZS9wcm9jX3NlcnZpY2UuaDsgXAotKwkJaWYgWyAkJD8gLWVxIDAgXTsgdGhlbiBcCi0rCQkJcGF0Y2ggLXAwIDwgJHtHREJ9LXByb2Nfc2VydmljZS5oLnBhdGNoOyBcCi0rCQlmaTsgXAotKwlmaQotIAotIGxpYnJhcnk6IG1ha2VfYnVpbGRfZGF0YSAke09CSkVDVF9GSUxFU30KLSAJYXIgLXJzICR7UFJPR1JBTX1saWIuYSAke09CSkVDVF9GSUxFU30KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYyBiL2NvbmZpZ3VyZS5jCi1pbmRleCBkNjNjZGQ3Li43NzZkZWZlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmMKLSsrKyBiL2NvbmZpZ3VyZS5jCi1AQCAtMjQwLDcgKzI0MCw3IEBAIHN0cnVjdCBzdXBwb3J0ZWRfZ2RiX3ZlcnNpb24gewotIAkgICAgIjcuNiIsCi0gCSAgICAiR0RCX0ZJTEVTPSR7R0RCXzcuNl9GSUxFU30iLAotIAkgICAgIkdEQl9PRklMRVM9JHtHREJfNy42X09GSUxFU30iLAotLQkgICAgIkdEQl9QQVRDSF9GSUxFUz1nZGItNy42LnBhdGNoIGdkYi03LjYtcHBjNjRsZS1zdXBwb3J0LnBhdGNoIiwKLSsJICAgICJHREJfUEFUQ0hfRklMRVM9Z2RiLTcuNi5wYXRjaCBnZGItNy42LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCBnZGItNy42LXByb2Nfc2VydmljZS5oLnBhdGNoIiwKLSAJICAgICJHREJfRkxBR1M9LURHREJfN182IiwKLSAJICAgICJHUEx2MyIKLSAJfSwKLWRpZmYgLS1naXQgYS9nZGItNy42LXByb2Nfc2VydmljZS5oLnBhdGNoIGIvZ2RiLTcuNi1wcm9jX3NlcnZpY2UuaC5wYXRjaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ5ZDE4YmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi03LjYtcHJvY19zZXJ2aWNlLmgucGF0Y2gKLUBAIC0wLDAgKzEsNTUgQEAKLSstLS0gZ2RiLTcuNi9nZGIvZ2RiX3Byb2Nfc2VydmljZS5oLm9yaWcKLSsrKysgZ2RiLTcuNi9nZGIvZ2RiX3Byb2Nfc2VydmljZS5oCi0rQEAgLTExNSw3ICsxMTUsNyBAQCBleHRlcm4gcGlkX3QgcHNfZ2V0cGlkIChzdHJ1Y3QgcHNfcHJvY2hhCi0rIC8qIEZldGNoIHRoZSBzcGVjaWFsIHBlci10aHJlYWQgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIExXUC4KLSsgICAgVGhpcyBjYWxsIGlzIG9ubHkgdXNlZCBvbiBhIGZldyBwbGF0Zm9ybXMgKG1vc3QgdXNlIGEgbm9ybWFsIHJlZ2lzdGVyKS4KLSsgICAgVGhlIG1lYW5pbmcgb2YgdGhlIGBpbnQnIHBhcmFtZXRlciBpcyBtYWNoaW5lLWRlcGVuZGVudC4gICovCi0rLWV4dGVybiBwc19lcnJfZSBwc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICosCi0rK2V4dGVybiBwc19lcnJfZSBwc19nZXRfdGhyZWFkX2FyZWEgKHN0cnVjdCBwc19wcm9jaGFuZGxlICosCi0rIAkJCQkgICAgbHdwaWRfdCwgaW50LCBwc2FkZHJfdCAqKTsKLSsgCi0rIAotKy0tLSBnZGItNy42L2dkYi9hbWQ2NC1saW51eC1uYXQuYy5vcmlnCi0rKysrIGdkYi03LjYvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi0rQEAgLTQ5Myw3ICs0OTMsNyBAQCBhbWQ2NF9saW51eF9uZXdfZm9yayAoc3RydWN0IGx3cF9pbmZvICpwCi0rICAgIGEgcmVxdWVzdCBmb3IgYSB0aHJlYWQncyBsb2NhbCBzdG9yYWdlIGFkZHJlc3MuICAqLwotKyAKLSsgcHNfZXJyX2UKLSstcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rK3BzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKyAgICAgICAgICAgICAgICAgICAgIGx3cGlkX3QgbHdwaWQsIGludCBpZHgsIHZvaWQgKipiYXNlKQotKyB7Ci0rICAgaWYgKGdkYmFyY2hfYmZkX2FyY2hfaW5mbyAodGFyZ2V0X2dkYmFyY2ggKCkpLT5iaXRzX3Blcl93b3JkID09IDMyKQotKy0tLSBnZGItNy42L2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jLm9yaWcKLSsrKysgZ2RiLTcuNi9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwotK0BAIC03NTAsNyArNzUwLDcgQEAgYWFyY2g2NF9saW51eF9uZXdfZm9yayAoc3RydWN0IGx3cF9pbmZvCi0rICAgIHN0b3JhZ2UgKG9yIGl0cyBkZXNjcmlwdG9yKS4gICovCi0rIAotKyBwc19lcnJfZQotKy1wc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsrcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rIAkJICAgIGx3cGlkX3QgbHdwaWQsIGludCBpZHgsIHZvaWQgKipiYXNlKQotKyB7Ci0rICAgc3RydWN0IGlvdmVjIGlvdmVjOwotKy0tLSBnZGItNy42L2dkYi9hcm0tbGludXgtbmF0LmMub3JpZwotKysrKyBnZGItNy42L2dkYi9hcm0tbGludXgtbmF0LmMKLStAQCAtNjEzLDcgKzYxMyw3IEBAIHN1cHBseV9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKLSsgLyogRmV0Y2ggdGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIHBvaW50ZXIgZm9yIGxpYnRocmVhZF9kYi4gICovCi0rIAotKyBwc19lcnJfZQotKy1wc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsrcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rICAgICAgICAgICAgICAgICAgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAqKmJhc2UpCi0rIHsKLSsgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLCBsd3BpZCwgTlVMTCwgYmFzZSkgIT0gMCkKLSstLS0gZ2RiLTcuNi9nZGIvaTM4Ni1saW51eC1uYXQuYy5vcmlnCi0rKysrIGdkYi03LjYvZ2RiL2kzODYtbGludXgtbmF0LmMKLStAQCAtODQ5LDcgKzg0OSw3IEBAIGkzODZfbGludXhfbmV3X2ZvcmsgKHN0cnVjdCBsd3BfaW5mbyAqcGEKLSsgICAgc3RvcmFnZSAob3IgaXRzIGRlc2NyaXB0b3IpLiAgKi8KLSsgCi0rIHBzX2Vycl9lCi0rLXBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLCAKLSsrcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsIAotKyAJCSAgICBsd3BpZF90IGx3cGlkLCBpbnQgaWR4LCB2b2lkICoqYmFzZSkKLSsgewotKyAgIC8qIE5PVEU6IGNhZ25leS8yMDAzLTA4LTI2OiBUaGUgZGVmaW5pdGlvbiBvZiB0aGlzIGJ1ZmZlciBpcyBmb3VuZAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMzFmNWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLVNVTU1BUlkgPSAiS2VybmVsIGFuYWx5c2lzIHV0aWxpdHkgZm9yIGxpdmUgc3lzdGVtcywgbmV0ZHVtcCwgZGlza2R1bXAsIGtkdW1wLCBMS0NEIG9yIG1jb3JlIGR1bXBmaWxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIGFuYWx5c2lzIHN1aXRlIGlzIGEgc2VsZi1jb250YWluZWQgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvXAotaW52ZXN0aWdhdGUgZWl0aGVyIGxpdmUgc3lzdGVtcywga2VybmVsIGNvcmUgZHVtcHMgY3JlYXRlZCBmcm9tIHRoZVwKLW5ldGR1bXAsIGRpc2tkdW1wIGFuZCBrZHVtcCBwYWNrYWdlcyBmcm9tIFJlZCBIYXQgTGludXgsIHRoZSBtY29yZSBrZXJuZWwgcGF0Y2hcCi1vZmZlcmVkIGJ5IE1pc3Npb24gQ3JpdGljYWwgTGludXgsIG9yIHRoZSBMS0NEIGtlcm5lbCBwYXRjaC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9hbmRlcnNvbiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAiemxpYiByZWFkbGluZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItNy42LnRhci5nejtuYW1lPWdkYjtzdWJkaXI9JHtCUH0gXAotICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1mb3ItYS1jb21waWxhdGlvbi1lcnJvci1pZi1nbGliYy0yLjI1LW9yLWxhdGVyLWgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jcmFzaC1maXgtYnVpbGQtZXJyb3ItdW5rbm93bi10eXBlLW5hbWUtZ2RiX2ZwcmVnc2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtY3Jhc2gtZGV0ZWN0LXRoZS1zeXNyb290LXMtZ2xpYmMtaGVhZGVyLWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMTc4NzA3NGYyNjdhMzUzNmVlYmZmMDA4YTA2NTJlYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTY1ZGVlOTE5OWQ3ZTM5NzY0ZmJlZTdmMjFjN2M0NWIxZjdiNmQxN2M4ZTkyYWQ2MmY0NjhmMDYyODc2NDc4IgotCi1TUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgotU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgotCi1pbmhlcml0IGdldHRleHQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgY3Jvc3MiCi1UQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKLQotIyBjcmFzaCA3LjEuMyBhbmQgYmVmb3JlIGRvbid0IHN1cHBvcnQgbWlwczY0Ci1DT01QQVRJQkxFX0hPU1QgPSAiXig/IW1pcHM2NCkuKiIKLQotRVhUUkFfT0VNQUtFID0gJ1JQTVBLRz0iJHtQVn0iIFwKLSAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke1RBUkdFVF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAotICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKLSAgICAgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCi0gICAgICAgICAgICAgICAgJwotCi1FWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnUlBNUEtHPSIke1BWfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7QlVJTERfU1lTfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCR7R0RCX0NPTkZfRkxBR1N9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgotCi1SRU1PVkVfTTMyID0gInNlZCAtaSAtZSAncy8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NC4qLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0XHRcIlRBUkdFVF9DRkxBR1M9LURfRklMRV9PRkZTRVRfQklUUz02NFwiL2cnICR7U30vY29uZmlndXJlLmMiCi0KLVJFTU9WRV9NMzJfY2xhc3MtY3Jvc3MgPSAiIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgOgotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotICAgICAgICBhYXJjaDY0KikgICAgQVJDSD1BUk02NCA7OwotICAgICAgICBhcm0qKSAgICAgICAgQVJDSD1BUk0gOzsKLSAgICAgICAgaSo4NiopICAgICAgIEFSQ0g9WDg2IDs7Ci0gICAgICAgIHg4Nl82NCopICAgICBBUkNIPVg4Nl82NCA7OwotICAgICAgICBwb3dlcnBjNjQqKSAgQVJDSD1QUEM2NCA7OwotICAgICAgICBwb3dlcnBjKikgICAgQVJDSD1QUEMgOzsKLSAgICAgICAgbWlwcyopICAgICAgIEFSQ0g9TUlQUyA7OwotICAgIGVzYWMKLQotICAgIHNlZCAtaSBzL0ZPUkNFX0RFRklORV9BUkNILyIke0FSQ0h9Ii9nICR7U30vY29uZmlndXJlLmMKLSAgICAke1JFTU9WRV9NMzJ9Ci0gICAgc2VkIC1pICdzLyZndDsvPi9nJyAke1N9L01ha2VmaWxlCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRX0gUkVDSVBFX1NZU1JPT1Q9JHtSRUNJUEVfU1lTUk9PVH0KLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCi0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcmFzaC44ICR7RH0vJHttYW5kaXJ9L21hbjgvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSR7U1RBR0lOR19ESVJfTkFUSVZFfSBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgewotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2NyYXNoICR7RH0vJHtiaW5kaXJ9Ci19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJsaWJsem1hIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLWNyb3NzID0gIiIKLQotIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCi0jIGplbmtpbnMgIDE1MTYxICAxMDAgMTIuNSAxMDM4OTU5NiAxMDMyMTI4NCA/ICAgUiAgICAxMTo0MCAgMjg6MTcgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS80LjkuMi9jYzEgLXF1aWV0IC1JIC4gLUkgLiAtSSAuL2NvbW1vbiAtSSAuL2NvbmZpZyAtSSAuLy4uL2luY2x1ZGUvb3Bjb2RlIC1JIC4vLi4vb3Bjb2Rlcy8uLiAtSSAuLy4uL3JlYWRsaW5lLy4uIC1JIC4uL2JmZCAtSSAuLy4uL2JmZCAtSSAuLy4uL2luY2x1ZGUgLUkgLi4vbGliZGVjbnVtYmVyIC1JIC4vLi4vbGliZGVjbnVtYmVyIC1JIC4vZ251bGliL2ltcG9ydCAtSSBidWlsZC1nbnVsaWIvaW1wb3J0IC1pc3lzcm9vdCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11YXJtIC1NTUQgZXZhbC5kIC1NRiAuZGVwcy9ldmFsLlRwbyAtTVAgLU1UIGV2YWwubyAtRCBMT0NBTEVESVI9Ii91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiAtRCBDUkFTSF9NRVJHRSAtRCBIQVZFX0NPTkZJR19IIC1EIFRVST0xIGV2YWwuYyAtcXVpZXQgLWR1bXBiYXNlIGV2YWwuYyAtbWFyY2g9YXJtdjV0ZSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tdGxzLWRpYWxlY3Q9Z251IC1hdXhiYXNlLXN0cmlwIGV2YWwubyAtZyAtTzIgLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gLVduby1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdlbXB0eS1ib2R5IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtbyAtCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA5MzdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS45LmJiCkBAIC0wLDAgKzEsMTE2IEBACitTVU1NQVJZID0gIktlcm5lbCBhbmFseXNpcyB1dGlsaXR5IGZvciBsaXZlIHN5c3RlbXMsIG5ldGR1bXAsIGRpc2tkdW1wLCBrZHVtcCwgTEtDRCBvciBtY29yZSBkdW1wZmlsZXMiCitERVNDUklQVElPTiA9ICJUaGUgY29yZSBhbmFseXNpcyBzdWl0ZSBpcyBhIHNlbGYtY29udGFpbmVkIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0b1wKK2ludmVzdGlnYXRlIGVpdGhlciBsaXZlIHN5c3RlbXMsIGtlcm5lbCBjb3JlIGR1bXBzIGNyZWF0ZWQgZnJvbSB0aGVcCituZXRkdW1wLCBkaXNrZHVtcCBhbmQga2R1bXAgcGFja2FnZXMgZnJvbSBSZWQgSGF0IExpbnV4LCB0aGUgbWNvcmUga2VybmVsIHBhdGNoXAorb2ZmZXJlZCBieSBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBvciB0aGUgTEtDRCBrZXJuZWwgcGF0Y2guIgorCitIT01FUEFHRSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vYW5kZXJzb24iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gInpsaWIgcmVhZGxpbmUgY29yZXV0aWxzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItNy42LnRhci5nejtuYW1lPWdkYjtzdWJkaXI9JHtCUH0gXAorICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYXNoLWZpeC1idWlsZC1lcnJvci11bmtub3duLXR5cGUtbmFtZS1nZGJfZnByZWdzZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jcmFzaC1kZXRlY3QtdGhlLXN5c3Jvb3Qtcy1nbGliYy1oZWFkZXItZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmM2I0NGExNTFkYmU3MDQ2NDYyYjljYWFhOTg0N2NhNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDhlMTI2OTQ0M2E2YThlODMzN2UzMjhiMjFiMDNlNGU1MDI0OGY2MDdlZWQ4M2ZiYjI3ZWIwZDgzM2Q2YWE0IgorCitTUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgorU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgorCitpbmhlcml0IGdldHRleHQKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgY3Jvc3MiCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKKworIyBjcmFzaCA3LjEuMyBhbmQgYmVmb3JlIGRvbid0IHN1cHBvcnQgbWlwczY0CitDT01QQVRJQkxFX0hPU1QgPSAiXig/IW1pcHM2NCkuKiIKKworRVhUUkFfT0VNQUtFID0gJ1JQTVBLRz0iJHtQVn0iIFwKKyAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCisgICAgICAgICAgICAgICAgJworCitFWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnUlBNUEtHPSIke1BWfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7QlVJTERfU1lTfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCR7R0RCX0NPTkZfRkxBR1N9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorCitSRU1PVkVfTTMyID0gInNlZCAtaSAtZSAncy8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NC4qLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0XHRcIlRBUkdFVF9DRkxBR1M9LURfRklMRV9PRkZTRVRfQklUUz02NFwiL2cnICR7U30vY29uZmlndXJlLmMiCisKK1JFTU9WRV9NMzJfY2xhc3MtY3Jvc3MgPSAiIgorCitkb19jb25maWd1cmUoKSB7CisgICAgOgorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorICAgICAgICBhYXJjaDY0KikgICAgQVJDSD1BUk02NCA7OworICAgICAgICBhcm0qKSAgICAgICAgQVJDSD1BUk0gOzsKKyAgICAgICAgaSo4NiopICAgICAgIEFSQ0g9WDg2IDs7CisgICAgICAgIHg4Nl82NCopICAgICBBUkNIPVg4Nl82NCA7OworICAgICAgICBwb3dlcnBjNjQqKSAgQVJDSD1QUEM2NCA7OworICAgICAgICBwb3dlcnBjKikgICAgQVJDSD1QUEMgOzsKKyAgICAgICAgbWlwcyopICAgICAgIEFSQ0g9TUlQUyA7OworICAgIGVzYWMKKworICAgIHNlZCAtaSBzL0ZPUkNFX0RFRklORV9BUkNILyIke0FSQ0h9Ii9nICR7U30vY29uZmlndXJlLmMKKyAgICAke1JFTU9WRV9NMzJ9CisgICAgc2VkIC1pICdzLyZndDsvPi9nJyAke1N9L01ha2VmaWxlCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRX0gUkVDSVBFX1NZU1JPT1Q9JHtSRUNJUEVfU1lTUk9PVH0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcmFzaC44ICR7RH0vJHttYW5kaXJ9L21hbjgvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSR7U1RBR0lOR19ESVJfTkFUSVZFfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2NyYXNoICR7RH0vJHtiaW5kaXJ9Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJsem1hIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLWNyb3NzID0gIiIKKworIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCisjIGplbmtpbnMgIDE1MTYxICAxMDAgMTIuNSAxMDM4OTU5NiAxMDMyMTI4NCA/ICAgUiAgICAxMTo0MCAgMjg6MTcgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS80LjkuMi9jYzEgLXF1aWV0IC1JIC4gLUkgLiAtSSAuL2NvbW1vbiAtSSAuL2NvbmZpZyAtSSAuLy4uL2luY2x1ZGUvb3Bjb2RlIC1JIC4vLi4vb3Bjb2Rlcy8uLiAtSSAuLy4uL3JlYWRsaW5lLy4uIC1JIC4uL2JmZCAtSSAuLy4uL2JmZCAtSSAuLy4uL2luY2x1ZGUgLUkgLi4vbGliZGVjbnVtYmVyIC1JIC4vLi4vbGliZGVjbnVtYmVyIC1JIC4vZ251bGliL2ltcG9ydCAtSSBidWlsZC1nbnVsaWIvaW1wb3J0IC1pc3lzcm9vdCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11YXJtIC1NTUQgZXZhbC5kIC1NRiAuZGVwcy9ldmFsLlRwbyAtTVAgLU1UIGV2YWwubyAtRCBMT0NBTEVESVI9Ii91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiAtRCBDUkFTSF9NRVJHRSAtRCBIQVZFX0NPTkZJR19IIC1EIFRVST0xIGV2YWwuYyAtcXVpZXQgLWR1bXBiYXNlIGV2YWwuYyAtbWFyY2g9YXJtdjV0ZSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tdGxzLWRpYWxlY3Q9Z251IC1hdXhiYXNlLXN0cmlwIGV2YWwubyAtZyAtTzIgLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gLVduby1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdlbXB0eS1ib2R5IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtbyAtCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXAtbW9kdWxlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXAtbW9kdWxlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTExOWQ0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLW1vZHVsZV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLXJlcXVpcmUga3RhcC5pbmMKLQotU1VNTUFSWSA9ICJLVEFQIGlzIGEgc2NyaXB0aW5nIGR5bmFtaWMgdHJhY2luZyB0b29sIGZvciBMaW51eCIKLQotaW5oZXJpdCBtb2R1bGUKLQotIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2t0YXAva3RhcC9pc3N1ZXMvODAKLVBOQkxBQ0tMSVNUW2t0YXAtbW9kdWxlXSA/PSAiTm90IGNvbXBhdGlibGUgd2l0aCAzLjE5IGtlcm5lbCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotIyBPbmx5IGJ1aWxkIHRoZSBtb2R1bGUKLU1BS0VfVEFSR0VUUyA9ICJtb2QiCi0KLSMgS2VybmVsIG1vZHVsZSBwYWNrYWdlcyBNVVNUIGJlZ2luIHdpdGggJ2tlcm5lbC1tb2R1bGUtJywgb3RoZXJ3aXNlCi0jIG11bHRpbGliIGltYWdlIGdlbmVyYXRpb24gY2FuIGZhaWwuCi0jCi0jIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcmVjaXBlIG5hbWUgZG9lcyBub3QgYmVnaW4KLSMgd2l0aCBrZXJuZWwtbW9kdWxlLS4KLSMKLVBLR18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLSR7UE59IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjE0YTAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmt0YXAub3JnIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtR1BMO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKLQotUFYgPSAiMC40K2dpdHIke1NSQ1BWfSIKLVNSQ1JFViA9ICJjODQwMWUwN2M4OWNkZWM5YTVmNjczZGE0ZGRiMTJiNzk4MmI1MjJiIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2t0YXAva3RhcC5naXQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgUGFja2FnZSBjb25maWcgaXMgYWJ1c2VkIGFzIGEgZ2VuZXJhbCBjb21waWxlIHRpbWUgY29uZmlndXJhdGlvbiB0b29sLgotCi0jIE9ubHkgc3VwcG9ydHMgeDg2XzY0IGZvciBub3chLiBOZWVkcyB0byBiZSBlbmFibGVkIGZvciBrdGFwLW1vZHVsZSB0b28uCi1QQUNLQUdFQ09ORklHW2ZmaV0gPSAiIgotCi0jIE5lZWRlZCB0byByZXNvbHZlIHN5bWJvbHMgaW4gRFNPIGFuZCBmb3Igc2R0Ci1QQUNLQUdFQ09ORklHW2xpYmVsZl0gPSAiLCxlbGZ1dGlscyIKLQotUEFDS0FHRUNPTkZJRyA/PSAibGliZWxmIgotCi1FWFRSQV9PRU1BS0UgPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsaWJlbGYnLCAnJywgJ05PX0xJQkVMRj0xJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdmZmknLCAnRkZJPTEnLCAnJywgZCl9IFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2t0YXAva3RhcF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NDdiN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2t0YXAva3RhcF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLXJlcXVpcmUga3RhcC5pbmMKLQotU1VNTUFSWSA9ICJLVEFQIGlzIGEgc2NyaXB0aW5nIGR5bmFtaWMgdHJhY2luZyB0b29sIGZvciBMaW51eCIKLURFUEVORFMgPSAia3RhcC1tb2R1bGUiCi0KLVBOQkxBQ0tMSVNUW2t0YXBdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGtlcm5lbC1tb2R1bGUta3RhcHZtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi0jIE9ubHkgYnVpbGQgdGhlIHVzZXJzcGFjZSBhcHAKLUVYVFJBX09FTUFLRSArPSAia3RhcCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9rdGFwICR7RH0ke2JpbmRpcn0vCi19Ci0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWt0YXB2bSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLUFkZC1wcm9wZXItZm9ybWF0LXN0cmluZy10by1wcmludC1hLXN0ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLUFkZC1wcm9wZXItZm9ybWF0LXN0cmluZy10by1wcmludC1hLXN0ci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2YTBiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1BZGQtcHJvcGVyLWZvcm1hdC1zdHJpbmctdG8tcHJpbnQtYS1zdHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDBmZmYyOGYzMWFlZjlhZDFkNWE4MTcyMTZhM2M5OGJhOWQ2MDUxMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxOSBKdW4gMjAxNyAyMzo1MjoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtYWtlZHVtcGZpbGU6IEFkZCBwcm9wZXIgZm9ybWF0IHN0cmluZyB0byBwcmludCBhIHN0cmluZwotCi1GaXgKLW1ha2VkdW1wZmlsZS5jOiBJbiBmdW5jdGlvbiAnd3JpdGVfZXJhc2VpbmZvJzoKLW1ha2VkdW1wZmlsZS5jOjgyNzM6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgREVCVUdfTVNHKG9idWYpOwotICAgIF5+fn5+fn5+fgotbWFrZWR1bXBmaWxlLmM6ODI3Mzo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBtYWtlZHVtcGZpbGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21ha2VkdW1wZmlsZS5jIGIvbWFrZWR1bXBmaWxlLmMKLWluZGV4IGU2OWI2ZGYuLjhiOGE2YjAgMTAwNjQ0Ci0tLS0gYS9tYWtlZHVtcGZpbGUuYwotKysrIGIvbWFrZWR1bXBmaWxlLmMKLUBAIC04MjcwLDcgKzgyNzAsNyBAQCB3cml0ZV9lcmFzZWluZm8oc3RydWN0IGNhY2hlX2RhdGEgKmNkX3BhZ2UsIHVuc2lnbmVkIGxvbmcgKnNpemVfb3V0KQotIAkJCX0KLSAJCQlzcHJpbnRmKG9idWYsICJlcmFzZSAlcyAlcyIsIGVyYXNlX2luZm9baV0uc3ltYm9sX2V4cHIsCi0gCQkJCQkJCXNpemVfc3RyKTsKLS0JCQlERUJVR19NU0cob2J1Zik7Ci0rCQkJREVCVUdfTVNHKCIlcyIsIG9idWYpOwotIAkJCWlmICghd3JpdGVfY2FjaGUoY2RfcGFnZSwgb2J1Ziwgc3RybGVuKG9idWYpKSkKLSAJCQkJZ290byBvdXQ7Ci0gCQkJc2l6ZV9lcmFzZWluZm8gKz0gc3RybGVuKG9idWYpOwotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNiYmY3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiVk1jb3JlIGV4dHJhY3Rpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIlwKLSAgICBUaGlzIHByb2dyYW0gaXMgdXNlZCB0byBleHRyYWN0IGEgc3Vic2V0IG9mIHRoZSBtZW1vcnkgYXZhaWxhYmxlIGVpdGhlciBcCi0gICAgdmlhIC9kZXYvbWVtIG9yIC9wcm9jL3ZtY29yZSAoZm9yIGNyYXNoZHVtcHMpLiBJdCBpcyB1c2VkIHRvIGdldCBtZW1vcnkgXAotICAgIGltYWdlcyB3aXRob3V0IGV4dHJhIHVuZWVkZWQgaW5mb3JtYXRpb24gKHplcm8gcGFnZXMsIHVzZXJzcGFjZSBwcm9ncmFtcywgXAotICAgIGV0YykuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYWtlZHVtcGZpbGUuc291cmNlZm9yZ2UubmV0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUxJQ0VOU0UgPSAiR1BMdjIuMCIKLQotREVQRU5EUyA9ICJiemlwMiB6bGliIGVsZnV0aWxzIgotUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCAke1BOfSIKLQotIyBhcm0gd291bGQgY29tcGlsZSBidXQgaGFzIG5ldmVyIGJlZW4gdGVzdGVkIHVwc3RyZWFtLiAgbWlwcyB3b3VsZCBub3QgY29tcGlsZS4KLSMKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm0pLiotbGludXgiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qLnBsIgotCi1TUkNfVVJJID0gIlwKLSAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vbWFrZWR1bXBmaWxlLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLW1ha2VkdW1wZmlsZS1yZXBsYWNlLWhhcmRjb2RlLUNGTEFHUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItbWVtX3NlY3Rpb24tU3VwcG9ydC1vbmx5LTQ2LWJpdC1mb3ItTUFYX1BIWVNNRU1fQklUUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtbWFrZWR1bXBmaWxlLUFkZC1wcm9wZXItZm9ybWF0LXN0cmluZy10by1wcmludC1hLXN0ci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMTZjMGFlOTkwMmFlNTdiZTRhNjAzYTZhYjFlODZjNTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI2ZTczMTA2OTk4NjcwNDA3ODg3ZGU5ZTFhNTA1YjNhMmRiYjJmYjUxN2E0Yjk2OGE2NjVlZGE4ZmIwOTdjZSIKLQotU0VDVElPTiA9ICJiYXNlIgotCi0jIElmIHdlIGRvIG5vdCBzcGVjaWZ5IFRBUkdFVCwgbWFrZWR1bXBmaWxlIHdpbGwgYnVpbGQgZm9yIHRoZSBob3N0IGJ1dCB1c2UgdGhlCi0jIHRhcmdldCBnY2MuCi0jCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExJTktUWVBFPXN0YXRpYyBcCi0gICAgVEFSR0VUPSR7VEFSR0VUX0FSQ0h9IFwKLSIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfS91c3IvYmluCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUgJHtEfS91c3IvYmluCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUtUi5wbCAke0R9L3Vzci9iaW4KLQotICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW44Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuOC5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAotCi0gICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mLjUuZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKLQotICAgIG1rZGlyIC1wICR7RH0vZXRjLwotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYgJHtEfS9ldGMvbWFrZWR1bXBmaWxlLmNvbmYuc2FtcGxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjJkODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMi5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIlZNY29yZSBleHRyYWN0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJcCisgICAgVGhpcyBwcm9ncmFtIGlzIHVzZWQgdG8gZXh0cmFjdCBhIHN1YnNldCBvZiB0aGUgbWVtb3J5IGF2YWlsYWJsZSBlaXRoZXIgXAorICAgIHZpYSAvZGV2L21lbSBvciAvcHJvYy92bWNvcmUgKGZvciBjcmFzaGR1bXBzKS4gSXQgaXMgdXNlZCB0byBnZXQgbWVtb3J5IFwKKyAgICBpbWFnZXMgd2l0aG91dCBleHRyYSB1bmVlZGVkIGluZm9ybWF0aW9uICh6ZXJvIHBhZ2VzLCB1c2Vyc3BhY2UgcHJvZ3JhbXMsIFwKKyAgICBldGMpLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vbWFrZWR1bXBmaWxlLnNvdXJjZWZvcmdlLm5ldCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitMSUNFTlNFID0gIkdQTHYyLjAiCisKK0RFUEVORFMgPSAiYnppcDIgemxpYiBlbGZ1dGlscyIKK1JERVBFTkRTXyR7UE59LXRvb2xzID0gInBlcmwgJHtQTn0iCisKKyMgYXJtIHdvdWxkIGNvbXBpbGUgYnV0IGhhcyBuZXZlciBiZWVuIHRlc3RlZCB1cHN0cmVhbS4gIG1pcHMgd291bGQgbm90IGNvbXBpbGUuCisjCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtKS4qLWxpbnV4IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi5wbCIKKworU1JDX1VSSSA9ICJcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L21ha2VkdW1wZmlsZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjcyYmU1YmY5NzNlZWQ4OThjNTEyN2UzYWJjNDY2NTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlM2QyMWNiNDAzMmE2MGJkMmM4MDJkMWQ4YjIxYjlmMzk5NzEwZTE1NzRmOGRlOGVhZDVhYjUwY2Q4MjFhNmQiCisKK1NFQ1RJT04gPSAiYmFzZSIKKworIyBJZiB3ZSBkbyBub3Qgc3BlY2lmeSBUQVJHRVQsIG1ha2VkdW1wZmlsZSB3aWxsIGJ1aWxkIGZvciB0aGUgaG9zdCBidXQgdXNlIHRoZQorIyB0YXJnZXQgZ2NjLgorIworRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMSU5LVFlQRT1zdGF0aWMgXAorICAgIFRBUkdFVD0ke1RBUkdFVF9BUkNIfSBcCisiCisKK2RvX2luc3RhbGwgKCkgeworICAgIG1rZGlyIC1wICR7RH0vdXNyL2JpbgorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vbWFrZWR1bXBmaWxlICR7RH0vdXNyL2JpbgorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vbWFrZWR1bXBmaWxlLVIucGwgJHtEfS91c3IvYmluCisKKyAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAorICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLjguZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKKworICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW41CisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZi41Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW41CisKKyAgICBta2RpciAtcCAke0R9L2V0Yy8KKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mICR7RH0vZXRjL21ha2VkdW1wZmlsZS5jb25mLnNhbXBsZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtZml4LWNvbXBpbGUtZXJyb3Itb24tYXJjaC14MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvMDAwMS1maXgtY29tcGlsZS1lcnJvci1vbi1hcmNoLXgzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmE2YWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtZml4LWNvbXBpbGUtZXJyb3Itb24tYXJjaC14MzIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA4ODNmNTNlZTMzZWFlZjhhY2ExMjg4YTExMDg1NzQwMmFkMzYyOTY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9obiBPZ25lc3MgPGpvaG4ub2duZXNzQGxpbnV0cm9uaXguZGU+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMTU6MDM6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbXBpbGUgZXJyb3Igb24gYXJjaD14MzIKKworT24gdGhlIHgzMiBhcmNoaXRlY3R1cmUgdGltZV90IGlzIGEgImxvbmcgbG9uZyBpbnQiLiBCeQorIHR5cGVjYXN0aW5nIHRpbWVfdCB0byAibG9uZyBsb25nIiwgdGhpcyBzaG91bGQgd29yayBjb3JyZWN0bHkKKyBmb3IgYWxsIGFyY2hpdGVjdHVyZXMuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jIGIvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCitpbmRleCBmZDM5YmZiLi4wN2RjMzE4IDEwMDY0NAorLS0tIGEvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCisrKysgYi9zcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMKK0BAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGF0aWMgaW50IGR1bXBfY29tcHJlc3NlZF90YXIoc3RydWN0IGR1bXBfaW5mbyAqZGkpCisgCXNucHJpbnRmKGhkci5tb2RlLCBzaXplb2YoaGRyLm1vZGUpLCAiJTA3byIsIDA2NDQpOworIAlzbnByaW50ZihoZHIudWlkLCBzaXplb2YoaGRyLnVpZCksICIlMDdvIiwgMCk7CisgCXNucHJpbnRmKGhkci5naWQsIHNpemVvZihoZHIuZ2lkKSwgIiUwN28iLCAwKTsKKy0Jc25wcmludGYoaGRyLm10aW1lLCBzaXplb2YoaGRyLm10aW1lKSwgIiUwMTFsbyIsCisrCXNucHJpbnRmKGhkci5tdGltZSwgc2l6ZW9mKGhkci5tdGltZSksICIlMDExbGxvIiwKKyAJCSAobG9uZyBsb25nKXRpbWUoTlVMTCkpOworIAltZW1zZXQoaGRyLmNoZWNrc3VtLCAnICcsIHNpemVvZihoZHIuY2hlY2tzdW0pKTsKKyAJaGRyLnR5cGUgPSAnUyc7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvMDAwMS1taW5pY29yZWR1bXBlci1Jbml0aWFsaXplLXBvaW50ZXItdG8tY29uZmlnLXN0cnVjdC10LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtbWluaWNvcmVkdW1wZXItSW5pdGlhbGl6ZS1wb2ludGVyLXRvLWNvbmZpZy1zdHJ1Y3QtdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDI1NWZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtbWluaWNvcmVkdW1wZXItSW5pdGlhbGl6ZS1wb2ludGVyLXRvLWNvbmZpZy1zdHJ1Y3QtdC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDYxODFkOWMzYzQwN2VlMDMwYjRjM2E5NDA0NTMxOGI5ZTNhM2NjODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxNDowODo1NCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtaW5pY29yZWR1bXBlcjogSW5pdGlhbGl6ZSBwb2ludGVyIHRvIGNvbmZpZyBzdHJ1Y3QgdG8gbnVsbAorCitGaXhlcworY29yZXN0cmlwcGVyLmM6MzYzMjoxMzogZXJyb3I6IHZhcmlhYmxlICdjZmcnIGlzIHVzZWQgdW5pbml0aWFsaXplZCB3aGVuZXZlciAnaWYnIGNvbmRpdGlvbiBpcyBmYWxzZSBbLVdlcnJvciwtV3NvbWV0aW1lcy11bmluaXRpYWxpemVkXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jIGIvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCitpbmRleCBhNzY0MDczLi5kZGIwZDI1IDEwMDY0NAorLS0tIGEvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCisrKysgYi9zcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMKK0BAIC0zNjA1LDcgKzM2MDUsNyBAQCBvdXQ6CisgCisgc3RhdGljIGludCBkb19hbGxfZHVtcHMoc3RydWN0IGR1bXBfaW5mbyAqZGksIGludCBhcmdjLCBjaGFyICphcmd2W10pCisgeworLQlzdHJ1Y3QgY29uZmlnICpjZmc7CisrCXN0cnVjdCBjb25maWcgKmNmZyA9IDA7CisgCWNvbnN0IGNoYXIgKnJlY2VwdDsKKyAJYm9vbCBsaXZlX2R1bXBlcjsKKyAJY2hhciAqY29tbV9iYXNlOworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCmluZGV4IDU4Y2Q0NWEuLjE4NThlMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIm1pbmljb3JlZHVtcGVyIHByb3ZpZGVzIGFuIGFsdGVybmF0ZSBjb3JlIGR1bXAgZmFjaWxpdHkgZm9yIExpbnV4IFwKIHRvIGFsbG93IG1pbmltYWwgYW5kIGN1c3RvbWl6ZWQgY3Jhc2ggZHVtcHMiCiBMSUNFTlNFID0gIiBMR1BMdjIuMSAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTcwOTA4N2MyZWQwYWNkYTU0YTRkOTE0OTdhODg5ZTQyIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhODQ2YWUzNjVmNzFiNjllOWZhMGQyMWE1NjM5MWVjIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT1iOTE1YWM4MGQ1MjM2ZDZhYTY1OWNiOTg2ZGFmMDBlNSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSBcCiAgICAgICAgICAgICAgICAgICAgIgpAQCAtOSwxNCArOSwxNiBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZAogCi1TUkNSRVYgPSAiMjQ4MDE5NDQ2Y2NmNjA3OTkyNmVmYjU0ZjhiNmRkN2JlNzY5YmJhZSIKK1NSQ1JFViA9ICJjZGMxZmFmMTIxMmE1MWU4OWI0Nzc0Njg4NzZlMjI5MjIzZmNlYjlhIgogCiBQUiAuPSAiK2dpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTGludXRyb25peC9taW5pY29yZWR1bXBlci1kZWJpYW47YnJhbmNoPXVuc3RhYmxlIFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbnV4Zm91bmRhdGlvbi5vcmcvZGlhbW9uL21pbmljb3JlZHVtcGVyLmdpdDtwcm90b2NvbD1odHRwIFwKICAgICAgICAgICAgZmlsZTovL21pbmljb3JlZHVtcGVyLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vbWluaWNvcmVkdW1wZXIuaW5pdCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pbmljb3JlZHVtcGVyLUluaXRpYWxpemUtcG9pbnRlci10by1jb25maWctc3RydWN0LXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29tcGlsZS1lcnJvci1vbi1hcmNoLXgzMi5wYXRjaCBcCisgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIwMTY1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKQEAgLTAsMCArMSw2NSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0tV2lkZSBQcm9maWxlciIKK0RFU0NSSVBUSU9OID0gIk9Qcm9maWxlIGlzIGEgc3lzdGVtLXdpZGUgcHJvZmlsZXIgZm9yIExpbnV4IHN5c3RlbXMsIGNhcGFibGUgXAorb2YgcHJvZmlsaW5nIGFsbCBydW5uaW5nIGNvZGUgYXQgbG93IG92ZXJoZWFkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9vcHJvZmlsZS5zb3VyY2Vmb3JnZS5uZXQvbmV3cy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYXRpZD0xMTYxOTEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJvcGFnZW50L29wYWdlbnQuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI2O21kNT00ZjE2ZjcyYzdhNDkzZDhhNDcwNGFhMThkMDNkMTVjNiBcCisgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJkZXZlbCIKKworREVQRU5EUyA9ICJwb3B0IGJpbnV0aWxzIgorUkRFUEVORFNfJHtQTn0gPSAiYmludXRpbHMtc3ltbGlua3MiCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtdm1saW51eCIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9LyR7QlBOfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8ke0JQTn0vbGliKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmEiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3Jvb3QtaG9tZS1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggXAorIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wucGF0Y2giCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aG91dC14IGFjX2N2X3Byb2dfWFNMVFBST0M9IgorZG9fY29uZmlndXJlICgpIHsKKwljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LworCWF1dG90b29sc19kb19jb25maWd1cmUKK30KKworRVhUUkFfT0VNQUtFID0gIlNSQ0RJUj0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cyIKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSBjaGVjaworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXN1YmRpcnM9ImxpYmRiL3Rlc3RzIGxpYnV0aWwrKy90ZXN0cyBsaWJyZWdleC90ZXN0cyBsaWJ1dGlsL3Rlc3RzIGxpYm9wL3Rlc3RzIGxpYmRiL3Rlc3RzICIKKwlmb3IgdG9vbHRlc3QgaW4gJHtzdWJkaXJzfQorCWRvCisJCWZpbmQgJHt0b29sdGVzdH0gLXBlcm0gL3U9eCAtdHlwZSBmfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9CisJZG9uZQorCisJIyBuZWVkZWQgYnkgc29tZSBsaWJvcCB0ZXN0cworCWNwIC1yIGV2ZW50cyAke0R9JHtQVEVTVF9QQVRIfQorCisJIyBuZWVkZWQgYnkgbGlicmVnZXggcmVnZXhfdGVzdAorCWNwIGxpYnJlZ2V4L3N0bC5wYXQgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgKKwljcCBsaWJyZWdleC90ZXN0cy9tYW5nbGVkLW5hbWUgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgvdGVzdHMKKworCSMgbmVlZGVkIGJ5IGxpdHV0aWwrKyBmaWxlX21hbmlwX3Rlc3RzCisJY3AgJHtTfS9saWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5jcHAgXAorCQlsaWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5vICR7RH0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg1NjJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAzNGIwZDliMWEzMmZiNDA0YTMwMzI3YTdhZTg5MzFjN2M3NTU4M2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+CitEYXRlOiBUdWUsIDkgRmViIDIwMTYgMDI6MDA6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHJtYigpIGRlZmluaXRpb24gZm9yIE5JT1MyIGFyY2hpdGVjdHVyZQorCitTaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cDovL21hcmMuaW5mby8/bD1vcHJvZmlsZS1saXN0Jm09MTQ1NTAxOTE1OTMxODc0Jnc9MiBdCistLS0KKyBsaWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmggYi9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oCitpbmRleCAzMjk1NGNjLi44MjcwZTUzIDEwMDY0NAorLS0tIGEvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAorKysrIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAorQEAgLTE3OCw2ICsxNzgsMTEgQEAgdm9pZCBvcF9yZWxlYXNlX3Jlc291cmNlcyh2b2lkKTsKKyAjZGVmaW5lIGNwdV9yZWxheCgpCWFzbSB2b2xhdGlsZSgiIiA6OjogIm1lbW9yeSIpCisgI2VuZGlmCisgCisrI2lmZGVmIF9fbmlvczJfXworKyNkZWZpbmUgcm1iKCkJCWFzbSB2b2xhdGlsZSgiIiA6OjogIm1lbW9yeSIpCisrI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQorKyNlbmRpZgorKworICNpZmRlZiBfX3RpbGVfXworICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisgI2RlZmluZSBybWIoKQkJX19pbnNuX21mKCkKKy0tIAorMi43LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3MmZkNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSAzOWQ0ZDQ2YTBiZDUwNGFjNzA4ZmZlNzJkZjg3YmY3NGNkMTJhZDMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2lsbGlhbSBDb2hlbiA8d2NvaGVuQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDUgRmViIDIwMTYgMTc6MzA6MTkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IEZUQkZTIHByb2JsZW0gd2l0aCBHQ0MtNgorCitHQ0MtNiBpcyBwaWNraWVyIGFib3V0IHNvbWUgb2YgdGhlIHR5cGUgY29udmVyc2lvbnMgY2F1c2luZyB0aGUgRmVkb3JhCisyNCBtYXNzIHJlYnVpbGQgdGhlIGJ1aWxkIG9mIG9wcm9maWxlIGZhaWxlZCB3aXRoOgorCittYWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9idWlsZGRpci9idWlsZC9CVUlMRC9vcHJvZmlsZS0xLjEuMC9saWJ1dGlsKysnCitnKysgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uICAtSSAuLi9saWJ1dGlsIC1JIC4uL2xpYm9wIC1JIC4uL2xpYnBwICAgLVcgLVdhbGwgLWZuby1jb21tb24gLWZ0ZW1wbGF0ZS1kZXB0aC01MCAtTzIgLWcgLXBpcGUgLVdhbGwgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkgLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgLWZleGNlcHRpb25zIC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00IC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtc3BlY3M9L3Vzci9saWIvcnBtL3JlZGhhdC9yZWRoYXQtaGFyZGVuZWQtY2MxIC1tMzIgLW1hcmNoPWk2ODYgLW10dW5lPWF0b20gLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtYyAtbyBvcF9iZmQubyBvcF9iZmQuY3BwCitvcF9iZmQuY3BwOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ3ZvaWQgb3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKHN5bWJvbF9pbmRleF90LCBsb25nIGxvbmcgdW5zaWduZWQgaW50JiwgbG9uZyBsb25nIHVuc2lnbmVkIGludCYpIGNvbnN0JzoKK29wX2JmZC5jcHA6NTM4OjQ3OiBlcnJvcjogY2Fubm90IGNvbnZlcnQgJ3N0ZDo6b3N0cmVhbSB7YWthIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyPn0nIHRvICdjb25zdCBib29sJyBpbiBpbml0aWFsaXphdGlvbgorICBib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitvcF9iZmQuY3BwOjU0Njo3OiBlcnJvcjogaW4gYXJndW1lbnQgdG8gdW5hcnkgIQorICBpZiAoIXZlcmJvc2UpCisgICAgICAgXn5+fn5+fgorCitBdm9pZCB0aGUgaW50ZXJtZWRpYXRlIGJvb2wgdHlwZSB0byBtYWtlIEdDQy02IGhhcHB5LgorCitTaWduZWQtb2ZmLWJ5OiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgbGlidXRpbCsrL29wX2JmZC5jcHAgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ1dGlsKysvb3BfYmZkLmNwcCBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCitpbmRleCAzODljOTIwLi5mMmViNDJiIDEwMDY0NAorLS0tIGEvbGlidXRpbCsrL29wX2JmZC5jcHAKKysrKyBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCitAQCAtNTM1LDE1ICs1MzUsMTMgQEAgdm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3Qgc3ltX2lkeCwKKyB7CisgCW9wX2JmZF9zeW1ib2wgY29uc3QgJiBzeW0gPSBzeW1zW3N5bV9pZHhdOworIAorLQlib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOworLQorIAlpZiAoYW5vbl9vYmopCisgCQlzdGFydCA9IHN5bS52bWEoKTsKKyAJZWxzZQorIAkJc3RhcnQgPSBzeW0uZmlsZXBvcygpOworIAllbmQgPSBzdGFydCArIHN5bS5zaXplKCk7CisgCistCWlmICghdmVyYm9zZSkKKysJaWYgKCEoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSkpCisgCQlyZXR1cm47CisgCisgCWlvX3N0YXRlIHN0YXRlKGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSkpOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWVjZDkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNApAQCAtMCwwICsxLDU4MSBAQAorZG5sIEFYX0tFUk5FTF9PUFRJT04ob3B0aW9uLCBhY3Rpb24taWYtZm91bmQsIGFjdGlvbi1pZi1ub3QtZm91bmQpCitkbmwgc2VlIGlmIGF1dG9jb25mLmggZGVmaW5lcyB0aGUgb3B0aW9uCitBQ19ERUZVTihbQVhfS0VSTkVMX09QVElPTl0sIFsKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLUkkS0lOQyAtTzIgLURfX0tFUk5FTF9fIgorQUNfVFJZX0NPTVBJTEUoIFsjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+XSwKK1sKKyNpZm5kZWYgJDEKK2JyZWFrX21lX2hhcmQoXFxcKTsKKyNlbmRpZgorXSxbJDJdLFskM10sKQorQ0ZMQUdTPSRTQVZFX0NGTEFHUworXSkKKworZG5sIEhhbmRsZSB0aGUgMi40IG1vZHVsZSBpbnNpZGUgbW9kdWxlLworQUNfREVGVU4oW0FYX0NPTkZJR19NT0RVTEVdLAorWworaWYgdGVzdCAhIC1mICRLSU5DL2xpbnV4L2F1dG9jb25mLmg7IHRoZW4KKwlBQ19NU0dfRVJST1IoW25vIHN1aXRhYmx5IGNvbmZpZ3VyZWQga2VybmVsIGluY2x1ZGUgdHJlZSBmb3VuZF0pCitmaQorCitkbmwgIC0tLSBHZXQgTGludXgga2VybmVsIHZlcnNpb24gYW5kIGNvbXBpbGUgcGFyYW1ldGVycyAtLS0KKworQUNfU1VCU1QoS1ZFUlMpCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrZXJuZWwgdmVyc2lvbl0pCitkbmwgaXQncyBsaWtlIHRoaXMgdG8gaGFuZGxlIG1hbmRyYWtlJ3MgZnViYXIgdmVyc2lvbi5oIC0gYnVnICM0NzE0NDgKK2V2YWwgS1ZFUlM9YGdjYyAtSSRLSU5DIC1FIC1kTSAkS0lOQy9saW51eC92ZXJzaW9uLmggfCBncmVwIC13IFVUU19SRUxFQVNFIHwgYXdrICd7cHJpbnQgJFtdM30nYAorQUNfTVNHX1JFU1VMVChbJEtWRVJTXSkKK2Nhc2UgIiRLVkVSUyIgaW4KKzIuMi4qfDIuNC4qKSA7OworKikgQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBrZXJuZWwgdmVyc2lvbl0pCitlc2FjCisKK2RubCBDaGVjayBmb3IgdGhlIG1pbmltYWwga2VybmVsIHZlcnNpb24gc3VwcG9ydGVkCitBQ19NU0dfQ0hFQ0tJTkcoW2tlcm5lbCB2ZXJzaW9uXSkKK0FYX0tFUk5FTF9WRVJTSU9OKDIsIDIsIDEwLCA8PSwgQUNfTVNHX1JFU1VMVChbb2tdKSwgQUNfTVNHX0VSUk9SKFtjaGVjayBodG1sIGRvY3VtZW50YXRpb24gaW5zdGFsbCBzZWN0aW9uXSkpCisKK2RubCBsaW51eC9zcGlubG9jay5oIGFkZGVkIGF0IHNvbWUgcG9pbnQgaW4gcGFzdAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgJEtJTkMvbGludXgvc3BpbmxvY2suaF0pCitpZiB0ZXN0IC1mICRLSU5DL2xpbnV4L3NwaW5sb2NrLmg7IHRoZW4KKwlFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREhBVkVfTElOVVhfU1BJTkxPQ0tfSEVBREVSIgorCUFDX01TR19SRVNVTFQoW3llc10pCitlbHNlCisJQUNfTVNHX1JFU1VMVChbbm9dKQorZmkKKworQUNfTVNHX0NIRUNLSU5HKFtmb3IgcnRjX2xvY2tdKQorZ2NjIC1JJEtJTkMgLUUgJEtJTkMvbGludXgvbWMxNDY4MThydGMuaCB8IGdyZXAgcnRjX2xvY2sgPi9kZXYvbnVsbAoraWYgdGVzdCAiJD8iIC1lcSAwOyB0aGVuCisJRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURSVENfTE9DSyIKKwlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZWxzZQorCUFDX01TR19SRVNVTFQoW25vXSkKK2ZpCisJIAorYXJjaD0idW5rbm93biIKK0FDX01TR19DSEVDS0lORyhmb3IgeDg2LTY0IGFyY2hpdGVjdHVyZSkKK0FYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4Nl82NCwgeDg2NjQ9MSwgeDg2NjQ9MCkKK0FYX01TR19SRVNVTFRfWU4oJHg4NjY0KQorQlVJTERfSEFNTUVSPW5vCitpZiB0ZXN0ICIkeDg2NjQiIC1lcSAxOyB0aGVuCisJYXJjaD0ieDg2IgorCUJVSUxEX0hBTU1FUj15ZXMKK2Vsc2UKKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg4NiBhcmNoaXRlY3R1cmUpCisJQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2LCB4ODY9MSwgeDg2PTApCisJQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2X1dQX1dPUktTX09LLCB4ODY9MSwgeDg2PSR4ODYpCisJQVhfTVNHX1JFU1VMVF9ZTigkeDg2KQorCXRlc3QgIiR4ODYiID0gMSAmJiBhcmNoPSJ4ODYiCisJCisJaWYgdGVzdCAiJGFyY2giID0gInVua25vd24iOyB0aGVuCisgIAkJQUNfTVNHX0NIRUNLSU5HKGZvciBpYTY0IGFyY2hpdGVjdHVyZSkKKyAgCQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19JQTY0LCBpYTY0PTEsIGlhNjQ9MCkKKyAgCQlBWF9NU0dfUkVTVUxUX1lOKCRpYTY0KQorICAJCXRlc3QgIiRpYTY0IiA9IDEgJiYgYXJjaD0iaWE2NCIKKwlmaQorCitmaQorQUNfU1VCU1QoQlVJTERfSEFNTUVSKQorCit0ZXN0ICIkYXJjaCIgPSAidW5rbm93biIgJiYgQUNfTVNHX0VSUk9SKFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSkKKworZG5sIGNoZWNrIHRvIHNlZSBpZiBrZXJuZWwgdmVyaW9uIGFwcHJvcHJpYXRlIGZvciBhcmNoCitBQ19NU0dfQ0hFQ0tJTkcoYXJjaC9rZXJuZWwgdmVyc2lvbiBjb21iaW5hdGlvbikKK2Nhc2UgIiRhcmNoIiBpbgoraWE2NCkKKwlBWF9LRVJORUxfVkVSU0lPTigyLCA0LCAxOCwgPCwgQUNfTVNHX1JFU1VMVChbb2tdKSwKKwkJQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBhcmNoL2tlcm5lbF0pKSA7OworKikgQUNfTVNHX1JFU1VMVChbb2tdKQorZXNhYworCitkbmwgZm9yIG5vdyB3ZSBkbyBub3Qgc3VwcG9ydCBQUkVFTVBUIHBhdGNoCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcmVlbXB0IHBhdGNoXSkKK0FYX0tFUk5FTF9PUFRJT04oQ09ORklHX1BSRUVNUFQscHJlZW1wdD0xLHByZWVtcHQ9MCkKK0FYX01TR19SRVNVTFRfWU4oWyRwcmVlbXB0XSkKK3Rlc3QgIiRwcmVlbXB0IiA9IDAgfHwgQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBrZXJuZWwgY29uZmlndXJhdGlvbiA6IENPTkZJR19QUkVFTVBUXSkKKworQUNfU1VCU1QoS0lOQykKKworTU9ESU5TVEFMTERJUj0vbGliL21vZHVsZXMvJEtWRVJTCisgCitPUFJPRklMRV9NT0RVTEVfQVJDSD0kYXJjaAorQUNfU1VCU1QoT1BST0ZJTEVfTU9EVUxFX0FSQ0gpCitdCispCisKK2RubCBBWF9NU0dfUkVTVUxUX1lOKGEpCitkbmwgcmVzdWx0cyAieWVzIiBpZmYgYT09MSwgIm5vIiBlbHNlCitBQ19ERUZVTihbQVhfTVNHX1JFU1VMVF9ZTl0sIFt4PW5vCit0ZXN0ICJ4JDEiID0gIngxIiAmJiB4PXllcworQUNfTVNHX1JFU1VMVCgkeCldKQorCitkbmwgQVhfTUFMTE9DX0FUVFJJQlVURSAtIHNlZSBpZiBnY2Mgd2lsbCB0YWtlIF9fYXR0cmlidXRlX18oKG1hbGxvYykpCitBQ19ERUZVTihbQVhfTUFMTE9DX0FUVFJJQlVURV0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSkKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgorQUNfVFJZX0NPTVBJTEUoLFsKK3ZvaWQgbW9ua2V5KCkgX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7CitdLEFDX01TR19SRVNVTFQoW3llc10pOyBBQ19ERUZJTkUoTUFMTE9DX0FUVFJJQlVURV9PSywgMSwgW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSksIEFDX01TR19SRVNVTFQoW25vXSkpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTIAorXQorKQorCitkbmwgYnVpbHRpbl9leHBlY3QgaXMgdXNlZCBpbiBtb2R1bGUgd2UgY2FuJ3QgYWRkIHRoYXQgaW4gY29uZmlnLmgKK0FDX0RFRlVOKFtBWF9CVUlMVElOX0VYUEVDVF0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgX19idWlsdGluX2V4cGVjdCBpcyB1bmRlcnN0b29kXSkKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgorQUNfVFJZX0xJTksoLFsKK2ludCBpOworaWYgKF9fYnVpbHRpbl9leHBlY3QoaSwgMCkpIHsgfQorXSwKK0FDX01TR19SRVNVTFQoW3llc10pOyBFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREVYUEVDVF9PSyIsCitBQ19NU0dfUkVTVUxUKFtub10pOykKK0NGTEFHUz0kU0FWRV9DRkxBR1MgCitdCispIAorCitkbmwgQVhfRVhUUkFfRElSUyAtIExldCB1c2VyIHNwZWNpZnkgZXh0cmEgZGlycyBmb3IgaW5jbHVkZS9saWJzCitBQ19ERUZVTihbQVhfRVhUUkFfRElSU10sCitbCitBQ19BUkdfV0lUSChleHRyYS1pbmNsdWRlcywKK1sgIC0td2l0aC1leHRyYS1pbmNsdWRlcz1ESVIgICAgYWRkIGV4dHJhIGluY2x1ZGUgcGF0aHNdLAorICB1c2VfZXh0cmFfaW5jbHVkZXM9IiR3aXRodmFsIiwKKyAgdXNlX2V4dHJhX2luY2x1ZGVzPU5PCispCitpZiB0ZXN0IC1uICIkdXNlX2V4dHJhX2luY2x1ZGVzIiAmJiBcCisgICAgICAgIHRlc3QgIiR1c2VfZXh0cmFfaW5jbHVkZXMiICE9ICJOTyI7IHRoZW4KKyAgYWNfc2F2ZV9pZnM9JElGUworICBJRlM9JzonCisgIGZvciBkaXIgaW4gJHVzZV9leHRyYV9pbmNsdWRlczsgZG8KKyAgICBleHRyYV9pbmNsdWRlcz0iJGV4dHJhX2luY2x1ZGVzIC1JJGRpciIKKyAgZG9uZQorICBJRlM9JGFjX3NhdmVfaWZzCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJGV4dHJhX2luY2x1ZGVzIgorZmkKKworQUNfQVJHX1dJVEgoZXh0cmEtbGlicywKK1sgIC0td2l0aC1leHRyYS1saWJzPURJUiAgICAgICAgYWRkIGV4dHJhIGxpYnJhcnkgcGF0aHNdLAorICB1c2VfZXh0cmFfbGlicz0kd2l0aHZhbCwKKyAgdXNlX2V4dHJhX2xpYnM9Tk8KKykKK2lmIHRlc3QgLW4gIiR1c2VfZXh0cmFfbGlicyIgJiYgXAorICAgICAgICB0ZXN0ICIkdXNlX2V4dHJhX2xpYnMiICE9ICJOTyI7IHRoZW4KKyAgIGFjX3NhdmVfaWZzPSRJRlMKKyAgIElGUz0nOicKKyAgIGZvciBkaXIgaW4gJHVzZV9leHRyYV9saWJzOyBkbworICAgICBleHRyYV9saWJyYXJpZXM9IiRleHRyYV9saWJyYXJpZXMgLUwkZGlyIgorICAgZG9uZQorICAgSUZTPSRhY19zYXZlX2lmcworICAgTERGTEFHUz0iJExERkxBR1MgJGV4dHJhX2xpYnJhcmllcyIKK2ZpCitdCispCisKK2RubCBBWF9QT1BUX0NPTlNUIC0gY2hlY2sgcG9wdCBwcm90b3R5cGUKK0FDX0RFRlVOKFtBWF9QT1BUX0NPTlNUXSwKK1sKK0FDX01TR19DSEVDS0lORyhbcG9wdCBwcm90b3R5cGVdKQorU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKK0NYWEZMQUdTPSItV2Vycm9yICRDWFhGTEFHUyIKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8cG9wdC5oPl0sCitbCitpbnQgYzsgY2hhciAqKnY7Citwb3B0R2V0Q29udGV4dCgwLCBjLCB2LCAwLCAwKTsKK10sCitBQ19NU0dfUkVTVUxUKFt0YWtlcyBjaGFyICoqXSk7LAorQUNfTVNHX1JFU1VMVChbdGFrZXMgY29uc3QgY2hhciAqKl0pOyBBQ19ERUZJTkUoQ09OU1RfUE9QVCwgMSwgW3doZXRoZXIgcG9wdCBwcm90b3R5cGUgdGFrZXMgYSBjb25zdCBjaGFyICoqXSkpCitDWFhGTEFHUz0iJFNBVkVfQ1hYRkxBR1MiCitdCispCisKK2RubCBBWF9DSEVDS19TU1RSRUFNIC0gY2hlY2sgaWYgbG9jYWwgc3N0cmVhbSBpcyBuZWVkZWQgdG8gY29tcGlsZSBPSworQUNfREVGVU4oW0FYX0NIRUNLX1NTVFJFQU1dLAorWworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBpbmNsdWRlZCBzc3RyZWFtXSkKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3N0cmVhbT5dLCBbXSwgCitBQ19NU0dfUkVTVUxUKFtub10pOywKK0FDX01TR19SRVNVTFQoW3llc10pOyBPUF9DWFhGTEFHUz0iJE9QX0NYWEZMQUdTIC1JXCR7dG9wX3NyY2Rpcn0vaW5jbHVkZSIpCitdCispCisKK2RubCBBWF9DSEVDS19UWVBFREVGKHR5cGVkZWZfbmFtZSwgdHlwZSwgYWN0aW9uLWlmLXRydWUsIGFjdGlvbi1pZi1mYWxzZSkKK2RubCBleGVjIGFjdGlvbi1pZi10cnVlIGlmIHR5cGVkZWZfbmFtZSBpcyBhIHR5cGVkZWYgdG8gdHlwZSBlbHNlIGV4ZWMgCitkbmwgYWN0aW9uLWlmLWZhbHNlCitkbmwgY3VycmVudGx5IHdvcmsgb25seSB3aXRoIHR5cGUgdHlwZWRlZidlZCBpbiBzdGRkZWYuaAorQUNfREVGVU4oW0FYX0NIRUNLX1RZUEVERUZdLCBbCitkbmwgQUNfTEFOR19QVVNIKEMpIG5vdCBpbiBhdXRvY29uZiAyLjEzCitBQ19MQU5HX1NBVkUKK0FDX0xBTkdfQworU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCisKK0FDX1RSWV9DT01QSUxFKAorICBbCisgICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAgXSwKKyAgWworICB0eXBlZGVmIHZvaWQgKCpmY3QxKSgkMSk7CisgIHR5cGVkZWYgdm9pZCAoKmZjdDIpKCQyKTsKKyAgZmN0MSBmMSA9IDA7CisgIGZjdDIgZjIgPSAwOworICBpZiAoZjEgPT0gZjIpIHt9CisgIF0sCitbJDNdLFskNF0pCisKK0NGTEFHUz0kU0FWRV9DRkxBR1MKK0FDX0xBTkdfUkVTVE9SRQorXSkKKworCitkbmwgQVhfVFlQRURFRkVEX05BTUUodHlwZWRlZl9uYW1lLCBjYW5kaWRhdGVfbGlzdCwgdmFyX25hbWUpCitkbmwgc2V0IHZhcl9uYW1lIHRvIHRoZSB0eXBlZGVmIG5hbWUgb2YgJDEgd2hpY2ggbXVzdCBiZSBpbiBjYW5kaXRhdGVfbGlzdAorZG5sIGVsc2UgcHJvZHVjZSBhIGZhdGFsIGVycm9yCitBQ19ERUZVTihbQVhfVFlQRURFRkVEX05BTUVdLCBbCisJQUNfTVNHX0NIRUNLSU5HKFt0eXBlIG9mICQxXSkKKwlmb3IgZiBpbiAkMjsgZG8KKwkJQVhfQ0hFQ0tfVFlQRURFRigkMSwgJGYsICQzPSIkZiIsICQzPSIiKQorCQlpZiB0ZXN0IC1uICIkeyQzfSI7IHRoZW4KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCWlmIHRlc3QgLW4gIiR7JDN9IjsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKFskeyQzfV0pCisJZWxzZQorCQlBQ19NU0dfRVJST1IoW25vdCBmb3VuZF0pCisJZmkKK10pCisKK2RubCBmaW5kIGEgYmluYXJ5IGluIHRoZSBwYXRoCitBQ19ERUZVTihbUVRfRklORF9QQVRIXSwKK1sKKwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCisJQUNfQ0FDSEVfVkFMKHF0X2N2X3BhdGhfJDEsCisJWworCQlxdF9jdl9wYXRoXyQxPSJOT05FIgorCQlpZiB0ZXN0IC1uICIkJDIiOyB0aGVuCisJCQlxdF9jdl9wYXRoXyQxPSIkJDIiOworCQllbHNlCisJCQlkaXJzPSIkMyIKKwkJCXF0X3NhdmVfSUZTPSRJRlMKKwkJCUlGUz0nOicKKwkJCWZvciBkaXIgaW4gJFBBVEg7IGRvCisJCQkJZGlycz0iJGRpcnMgJGRpciIKKwkJCWRvbmUKKwkJCUlGUz0kcXRfc2F2ZV9JRlMKKyAKKwkJCWZvciBkaXIgaW4gJGRpcnM7IGRvCisJCQkJaWYgdGVzdCAteCAiJGRpci8kMSI7IHRoZW4KKwkJCQkJaWYgdGVzdCAtbiAiJDUiOyB0aGVuCisJCQkJCQlldmFsc3RyPSIkZGlyLyQxICQ1IDI+JjEgIgorCQkJCQkJaWYgZXZhbCAkZXZhbHN0cjsgdGhlbgorCQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCisJCQkJCQkJYnJlYWsKKwkJCQkJCWZpCisJCQkJCWVsc2UKKwkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCisJCQkJCQlicmVhaworCQkJCQlmaQorCQkJCWZpCisJCQlkb25lCisJCWZpCisJXSkKKyAKKwlpZiB0ZXN0IC16ICIkcXRfY3ZfcGF0aF8kMSIgfHwgdGVzdCAiJHF0X2N2X3BhdGhfJDEiID0gIk5PTkUiOyB0aGVuCisJCUFDX01TR19SRVNVTFQobm90IGZvdW5kKQorCQkkNAorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVCgkcXRfY3ZfcGF0aF8kMSkKKwkJJDI9JHF0X2N2X3BhdGhfJDEKKwlmaQorXSkKKworZG5sIEZpbmQgdGhlIHVpYyBjb21waWxlciBvbiB0aGUgcGF0aCBvciBpbiBxdF9jdl9kaXIKK0FDX0RFRlVOKFtRVF9GSU5EX1VJQ10sCitbCisJUVRfRklORF9QQVRIKHVpYywgYWNfdWljLCAkcXRfY3ZfZGlyL2JpbikKKwlpZiB0ZXN0IC16ICIkYWNfdWljIiAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KKwkJQUNfTVNHX0VSUk9SKFt1aWMgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCisJZmkKK10pCisgCitkbmwgRmluZCB0aGUgcmlnaHQgbW9jIGluIHBhdGgvcXRfY3ZfZGlyCitBQ19ERUZVTihbUVRfRklORF9NT0NdLAorWworCVFUX0ZJTkRfUEFUSChtb2MyLCBhY19tb2MyLCAkcXRfY3ZfZGlyL2JpbikKKwlRVF9GSU5EX1BBVEgobW9jLCBhY19tb2MxLCAkcXRfY3ZfZGlyL2JpbikKKworCWlmIHRlc3QgLW4gIiRhY19tb2MxIiAtYSAtbiAiJGFjX21vYzIiOyB0aGVuCisJCWRubCBmb3VuZCBib3RoLiBQcmVmZXIgUXQzJ3MgaWYgaXQgZXhpc3RzIGVsc2UgbW9jMgorCQkkYWNfbW9jMSAtdiAyPiYxIHwgZ3JlcCAiUXQgMyIgPi9kZXYvbnVsbAorCQlpZiB0ZXN0ICIkPyIgPSAwOyB0aGVuCisJCQlhY19tb2M9JGFjX21vYzE7CisJCWVsc2UKKwkJCWFjX21vYz0kYWNfbW9jMjsKKwkJZmkKKwllbHNlCisJCWlmIHRlc3QgLW4gIiRhY19tb2MxIjsgdGhlbgorCQkJYWNfbW9jPSRhY19tb2MxOworCQllbHNlCisJCQlhY19tb2M9JGFjX21vYzI7CisJCWZpCisJZmkKKworCWlmIHRlc3QgLXogIiRhY19tb2MiICAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KKwkJQUNfTVNHX0VSUk9SKFttb2MgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCisJZmkKK10pCisKK2RubCBjaGVjayBhIHBhcnRpY3VsYXIgbGlibmFtZQorQUNfREVGVU4oW1FUX1RSWV9MSU5LXSwKK1sKKwlTQVZFX0xJQlM9IiRMSUJTIgorCUxJQlM9IiRMSUJTICQxIgorCUFDX1RSWV9MSU5LKFsKKwkjaW5jbHVkZSA8cWdsb2JhbC5oPgorCSNpbmNsdWRlIDxxc3RyaW5nLmg+CisJCV0sCisJWworCVFTdHJpbmcgcygibWFuZ2xlX2ZhaWx1cmUiKTsKKwkjaWYgKFFUX1ZFUlNJT04gPCAyMjEpCisJYnJlYWtfbWVfKFxcXCk7CisJI2VuZGlmCisJXSwKKwlxdF9jdl9saWJuYW1lPSQxLAorCSkKKwlMSUJTPSIkU0FWRV9MSUJTIgorXSkKKyAKK2RubCBjaGVjayB3ZSBjYW4gZG8gYSBjb21waWxlCitBQ19ERUZVTihbUVRfQ0hFQ0tfQ09NUElMRV0sCitbCisJQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQgbGlicmFyeSBuYW1lXSkKKyAKKwlBQ19DQUNIRV9WQUwocXRfY3ZfbGlibmFtZSwKKwlbCisJCUFDX0xBTkdfQ1BMVVNQTFVTCisJCVNBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCisJCUNYWEZMQUdTPSIkQ1hYRkxBR1MgJFFUX0lOQ0xVREVTICRRVF9MREZMQUdTIiAKKworCQlmb3IgbGlibmFtZSBpbiAtbHF0LW10IC1scXQzIC1scXQyIC1scXQ7CisJCWRvCisJCQlRVF9UUllfTElOSygkbGlibmFtZSkKKwkJCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgorCQkJCWJyZWFrOworCQkJZmkKKwkJZG9uZQorCisJCUNYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCisJXSkKKworCWlmIHRlc3QgLXogIiRxdF9jdl9saWJuYW1lIjsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKFtmYWlsZWRdKSAKKwkJaWYgdGVzdCAiJEZBVEFMIiA9IDEgOyB0aGVuCisJCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBjb21waWxlIGEgc2ltcGxlIFF0IGV4ZWN1dGFibGUuIENoZWNrIHlvdSBoYXZlIHRoZSByaWdodCBcJFFURElSICFdKQorCQlmaQorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbJHF0X2N2X2xpYm5hbWVdKQorCWZpCitdKQorCitkbmwgZ2V0IFF0IHZlcnNpb24gd2UncmUgdXNpbmcKK0FDX0RFRlVOKFtRVF9HRVRfVkVSU0lPTl0sCitbCisJQUNfQ0FDSEVfQ0hFQ0soW1F0IHZlcnNpb25dLGx5eF9jdl9xdHZlcnNpb24sCisJWworCQlBQ19MQU5HX0NQTFVTUExVUworCQlTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUworCQlDUFBGTEFHUz0iJENQUEZMQUdTICRRVF9JTkNMVURFUyIKKworCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHFnbG9iYWwuaD4KKyIlJSUiUVRfVkVSU0lPTl9TVFIiJSUlIgorRU9GCisJCWx5eF9jdl9xdHZlcnNpb249YChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwgXAorCQkJZ3JlcCAnXiIlJSUiJyAgMj4vZGV2L251bGwgfCBcCisJCQlzZWQgLWUgJ3MvIiUlJSIvL2cnIC1lICdzLyIvL2cnYAorCQlybSAtZiBjb25mdGVzdC4kYWNfZXh0CisJCUNQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCisJXSkKKyAKKwlRVF9WRVJTSU9OPSRseXhfY3ZfcXR2ZXJzaW9uCisJQUNfU1VCU1QoUVRfVkVSU0lPTikKK10pCisgCitkbmwgc3RhcnQgaGVyZSAKK0FDX0RFRlVOKFtRVF9ET19JVF9BTExdLAorWworCWRubCBQbGVhc2UgbGVhdmUgdGhpcyBhbG9uZS4gSSB1c2UgdGhpcyBmaWxlIGluCisJZG5sIG9wcm9maWxlLgorCUZBVEFMPTAKKworCUFDX0FSR19XSVRIKHF0LWRpciwgWyAgLS13aXRoLXF0LWRpciAgICAgICAgICAgd2hlcmUgdGhlIHJvb3Qgb2YgUXQgaXMgaW5zdGFsbGVkIF0sCisJCVsgcXRfY3ZfZGlyPWBldmFsIGVjaG8gIiR3aXRodmFsIi9gIF0pCisJIAorCUFDX0FSR19XSVRIKHF0LWluY2x1ZGVzLCBbICAtLXdpdGgtcXQtaW5jbHVkZXMgICAgICB3aGVyZSB0aGUgUXQgaW5jbHVkZXMgYXJlLiBdLAorCQlbIHF0X2N2X2luY2x1ZGVzPWBldmFsIGVjaG8gIiR3aXRodmFsImAgXSkKKyAKKwlBQ19BUkdfV0lUSChxdC1saWJyYXJpZXMsIFsgIC0td2l0aC1xdC1saWJyYXJpZXMgICAgIHdoZXJlIHRoZSBRdCBsaWJyYXJ5IGlzIGluc3RhbGxlZC5dLAorCQlbICBxdF9jdl9saWJyYXJpZXM9YGV2YWwgZWNobyAiJHdpdGh2YWwiYCBdKQorCisJZG5sIHBheSBhdHRlbnRpb24gdG8gJFFURElSIHVubGVzcyBvdmVycmlkZGVuCisJaWYgdGVzdCAteiAiJHF0X2N2X2RpciI7IHRoZW4KKwkJcXRfY3ZfZGlyPSRRVERJUgorCWZpCisgCisJZG5sIGRlcml2ZSBpbmMvbGliIGlmIG5lZWRlZAorCWlmIHRlc3QgLW4gIiRxdF9jdl9kaXIiOyB0aGVuCisJCWlmIHRlc3QgLXogIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KKwkJCXF0X2N2X2luY2x1ZGVzPSRxdF9jdl9kaXIvaW5jbHVkZQorCQlmaQorCQlpZiB0ZXN0IC16ICIkcXRfY3ZfbGlicmFyaWVzIjsgdGhlbgorCQkJcXRfY3ZfbGlicmFyaWVzPSRxdF9jdl9kaXIvbGliCisJCWZpCisJZmkKKworCWRubCBmbGFncyBmb3IgY29tcGlsYXRpb24KKwlRVF9JTkNMVURFUz0KKwlRVF9MREZMQUdTPQorCWlmIHRlc3QgLW4gIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KKwkJUVRfSU5DTFVERVM9Ii1JJHF0X2N2X2luY2x1ZGVzIgorCWZpCisJaWYgdGVzdCAtbiAiJHF0X2N2X2xpYnJhcmllcyI7IHRoZW4KKwkJUVRfTERGTEFHUz0iLUwkcXRfY3ZfbGlicmFyaWVzIgorCWZpCisJQUNfU1VCU1QoUVRfSU5DTFVERVMpCisJQUNfU1VCU1QoUVRfTERGTEFHUykKKyAKKwlRVF9GSU5EX01PQworCU1PQz0kYWNfbW9jCisJQUNfU1VCU1QoTU9DKQorCVFUX0ZJTkRfVUlDCisJVUlDPSRhY191aWMKKwlBQ19TVUJTVChVSUMpCisKKwlRVF9DSEVDS19DT01QSUxFCisgCisJUVRfTElCPSRxdF9jdl9saWJuYW1lOworCUFDX1NVQlNUKFFUX0xJQikKKworCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgorCQlRVF9HRVRfVkVSU0lPTgorCWZpCitdKQorCitkbmwgQVhfQ1hYRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQorZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENYWCBzdXBwb3J0IGl0LgorQUNfREVGVU4oW0FYX0NIRUNLX1BSRUNPTVBJTEVEX0hFQURFUl0sIFsKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NYWH0gc3VwcG9ydCBwcmVjb21waWxlZCBoZWFkZXJdKQorQUNfTEFOR19TQVZFCitBQ19MQU5HX0NQTFVTUExVUworU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKK2RubCB3ZSBjb25zaWRlciB0aGFuIGlmIC1XaW52YWxpZC1wY2ggaXMgYWNjZXB0ZWQgcGNoIHdpbGwgd29ya3MgLi4uCitDWFhGTEFHUz0tV2ludmFsaWQtcGNoCitkbmwgYnV0IHdlIGRvbid0IHdhbnQgLVdpbnZhbGlkLXBjaCBlbHNlIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBkdWUgLVdlcnJvciBhbmQKK2RubCB0aGUgZmFjdCB0aGFuIHNvbWUgcGNoIHdpbGwgYmUgaW52YWxpZCBmb3IgdGhlIGdpdmVuIGNvbXBpbGF0aW9uIG9wdGlvbgorQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9IC1pbmNsdWRlIGJpdHMvc3RkYysrLmgiLCBBQ19NU0dfUkVTVUxUKFtub10pKQorQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKK0FDX0xBTkdfUkVTVE9SRQorXSkKKworZG5sIEFYX0NIRUNLX0RPQ0JPT0sKK0FDX0RFRlVOKFtBWF9DSEVDS19ET0NCT09LXSwgWworIyBJdCdzIGp1c3QgcnVkZSB0byBnbyBvdmVyIHRoZSBuZXQgdG8gYnVpbGQKK1hTTFRQUk9DX0ZMQUdTPS0tbm9uZXQKK0RPQ0JPT0tfUk9PVD0KK2lmIHRlc3QgISAtZiAvZXRjL3htbC9jYXRhbG9nOyB0aGVuCisJZm9yIGkgaW4gL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svc3R5bGVzaGVldC94c2wvbndhbHNoIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy87CisJZG8KKwkJaWYgdGVzdCAtZCAiJGkiOyB0aGVuCisJCQlET0NCT09LX1JPT1Q9JGkKKwkJZmkKKwlkb25lCisKKwkjIExhc3QgcmVzb3J0IC0gdHJ5IG5ldAorCWlmIHRlc3QgLXogIiRET0NCT09LX1JPT1QiOyB0aGVuCisJCVhTTFRQUk9DX0ZMQUdTPQorCWZpCitlbHNlCisJWE1MX0NBVEFMT0c9L2V0Yy94bWwvY2F0YWxvZworCUNBVF9FTlRSWV9TVEFSVD0nPCEtLScKKwlDQVRfRU5UUllfRU5EPSctLT4nCitmaQorCitBQ19DSEVDS19QUk9HKFhTTFRQUk9DLHhzbHRwcm9jLHhzbHRwcm9jLCkKK1hTTFRQUk9DX1dPUktTPW5vCitpZiB0ZXN0IC1uICIkWFNMVFBST0MiOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHhzbHRwcm9jIHdvcmtzXSkKKworCWlmIHRlc3QgLW4gIiRYTUxfQ0FUQUxPRyI7IHRoZW4KKwkJREJfRklMRT0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQveGh0bWwvZG9jYm9vay54c2wiCisJZWxzZQorCQlEQl9GSUxFPSIkRE9DQk9PS19ST09UL2RvY2Jvb2sueHNsIgorCWZpCisKKwkkWFNMVFBST0MgJFhTTFRQUk9DX0ZMQUdTICREQl9GSUxFID4vZGV2L251bGwgMj4mMSA8PCBFTkQKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9J0lTTy04ODU5LTEnPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIiAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiPgorPGJvb2sgaWQ9InRlc3QiPgorPC9ib29rPgorRU5ECisJaWYgdGVzdCAiJD8iID0gMDsgdGhlbgorCQlYU0xUUFJPQ19XT1JLUz15ZXMKKwlmaQorCUFDX01TR19SRVNVTFQoJFhTTFRQUk9DX1dPUktTKQorZmkKK0FNX0NPTkRJVElPTkFMKGhhdmVfeHNsdHByb2MsIHRlc3QgIiRYU0xUUFJPQ19XT1JLUyIgPSAieWVzIikKKworQUNfU1VCU1QoWE1MX0NBVEFMT0cpCitBQ19TVUJTVChYU0xUUFJPQ19GTEFHUykKK0FDX1NVQlNUKERPQ0JPT0tfUk9PVCkKK0FDX1NVQlNUKENBVF9FTlRSWV9TVEFSVCkKK0FDX1NVQlNUKENBVF9FTlRSWV9FTkQpCitdKQorCitkbmwgQVhfQ0ZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKK2RubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDQyBzdXBwb3J0IGl0LgorQUNfREVGVU4oW0FYX0NGTEFHU19PUFRJT05dLCBbCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDQ30gJDIgaXMgdW5kZXJzdG9vZF0pCitBQ19MQU5HX1NBVkUKK0FDX0xBTkdfQworU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSQyCitBQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCitBQ19MQU5HX1JFU1RPUkUKK10pCisKKworZG5sIEFYX0NYWEZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKK2RubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDWFggc3VwcG9ydCBpdC4KK0FDX0RFRlVOKFtBWF9DWFhGTEFHU19PUFRJT05dLCBbCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDWFh9ICQyIGlzIHVuZGVyc3Rvb2RdKQorQUNfTEFOR19TQVZFCitBQ19MQU5HX0NQTFVTUExVUworU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKK0NYWEZMQUdTPSQyCitBQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCitDWFhGTEFHUz0kU0FWRV9DWFhGTEFHUworQUNfTEFOR19SRVNUT1JFCitdKQorCitkbmwgQVhfQ09QWV9JRl9DSEFOR0Uoc291cmNlLCBkZXN0KQorZG5sIGNvcHkgc291cmNlIHRvIGRlc3QgaWYgdGhleSBkb24ndCBjb21wYXJlIGVxdWFsbHkgb3IgaWYgZGVzdCBkb2Vzbid0IGV4aXN0CitBQ19ERUZVTihbQVhfQ09QWV9JRl9DSEFOR0VdLCBbCitpZiB0ZXN0IC1yICQyOyB0aGVuCisJaWYgY21wICQxICQyID4gL2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJDIgaXMgdW5jaGFuZ2VkCisJZWxzZQorCQljcCAtZiAkMSAkMgorCWZpCitlbHNlCisJY3AgLWYgJDEgJDIKK2ZpCitdKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YmI2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApAQCAtMCwwICsxLDEyIEBACitvcHJvZmlsZSBkb2Vzbid0IHdhbnQgR05VLWxldmVscyBvZiBhdXRvbWFrZSBzdHJpY3RuZXNzIHNvIHRlbGwgaXQgdG8gYmUgImZvcmVpZ24iLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDU3NDA1ODUuLmNmNmMzMTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2ICsxNiBAQCBBQ19DT05GSUdfU1JDRElSKFtsaWJvcC9vcF9jb25maWcuaF0pCistQU1fSU5JVF9BVVRPTUFLRQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWRiNDA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRml4IGdsaWJjLWlzbXMgc28gdGhhdCBvcHJvZmlsZSBidWlsZHMgd2l0aCBtdXNsLgorCitQYXRjaCB0YWtlbiBmcm9tIG9wZW53cnQgKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVud3J0LW1pcnJvci9vcGVud3J0L2Jsb2IvbWFzdGVyL3BhY2thZ2UvZGV2ZWwvb3Byb2ZpbGUvcGF0Y2hlcy8xMDAtbXVzbC5wYXRjaCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0gYS9wZV9wcm9maWxpbmcvb3BlcmYuY3BwCisrKysgYi9wZV9wcm9maWxpbmcvb3BlcmYuY3BwCitAQCAtODU3LDExICs4NTcsMTQgQEAgc3RhdGljIGludCBfX2RlbGV0ZV9vbGRfcHJldmlvdXNfc2FtcGxlXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRmbGFnICBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBGVFcgKmZ0d2J1ZiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKyB7CisrCWludCBlcnI7CisrCisgCWlmIChyZW1vdmUoZnBhdGgpKSB7CisrCQllcnIgPSBlcnJubzsKKyAJCXBlcnJvcigic2FtcGxlIGRhdGEgcmVtb3ZhbCBlcnJvciIpOworLQkJcmV0dXJuIEZUV19TVE9QOworKwkJcmV0dXJuIGVycjsKKyAJfSBlbHNlIHsKKy0JCXJldHVybiBGVFdfQ09OVElOVUU7CisrCQlyZXR1cm4gMDsKKyAJfQorIH0KKyAKK0BAIC04OTYsNyArODk5LDcgQEAgc3RhdGljIHZvaWQgY29udmVydF9zYW1wbGVfZGF0YSh2b2lkKQorIAkJcmV0dXJuOworIAorIAlpZiAoIW9wZXJmX29wdGlvbnM6OmFwcGVuZCkgeworLSAgICAgICAgICAgICAgICBpbnQgZmxhZ3MgPSBGVFdfREVQVEggfCBGVFdfQUNUSU9OUkVUVkFMOworKyAgICAgICAgICAgICAgICBpbnQgZmxhZ3MgPSBGVFdfREVQVEg7CisgCQllcnJubyA9IDA7CisgCQlpZiAobmZ0dyhwcmV2aW91c19zYW1wbGVkaXIuY19zdHIoKSwgX19kZWxldGVfb2xkX3ByZXZpb3VzX3NhbXBsZV9kYXRhLCAzMiwgZmxhZ3MpICE9MCAmJgorIAkJCQllcnJubyAhPSBFTk9FTlQpIHsKKy0tLSBhL2xpYm9wL29wX2V2ZW50cy5jCisrKysgYi9saWJvcC9vcF9ldmVudHMuYworQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBwYXJzZV9oZXgoY2hhciBjb25zdCAqIHN0cikKKyBzdGF0aWMgdTY0IHBhcnNlX2xvbmdfaGV4KGNoYXIgY29uc3QgKiBzdHIpCisgeworIAl1NjQgdmFsdWU7CistCWlmIChzc2NhbmYoc3RyLCAiJUx4IiwgJnZhbHVlKSAhPSAxKQorKwlpZiAoc3NjYW5mKHN0ciwgIjB4JWxseCIsICZ2YWx1ZSkgIT0gMSkKKyAJCXBhcnNlX2Vycm9yKCJleHBlY3RlZCBsb25nIGhleGFkZWNpbWFsIHZhbHVlIik7CisgCisgCWZmbHVzaChzdGRlcnIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvb3Byb2ZpbGUtY3Jvc3MtY29tcGlsZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWZhOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorUHJldmVudCBydW5uaW5nIGNoZWNrIHRlc3RzIG9uIGhvc3QgaWYgY3Jvc3MgY29tcGlsaW5nCisKK1RoaXMgcGF0Y2ggZW5hYmxlcyBydW5uaW5nIHRoZSAnbWFrZSBjaGVjaycgdGVzdHMgb24gdGhlIHRhcmdldAoraW4gYSBjcm9zcy1jb21waWxlZCBlbnZpcm9ubWVudC4gSWYgbm90IGNyb3NzLWNvbXBpbGluZywgdGhlbiAnbWFrZQorIGNoZWNrJyBidWlsZHMgYW5kIGV4ZWN1dGVzIHRoZSB0ZXN0czsgbm8gY2hhbmdlIGZyb20gdGhpcyBwYXRjaC4KK0luIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50LCB0aGUgbWFrZSB2YXJpYWJsZSBDUk9TU19DT01QSUxFIGlzCitzZXQgd2hpY2ggYnlwYXNzZXMgYXNzaWdpbmcgdGVzdHMgdG8gdGhlIG1ha2VrZmlsZSB2YXJpYWJsZSBURVNUUy4KK1NpbmNlIFRFU1RTIGlzIGVtcHR5LCB0aGUgJ21ha2UgY2hlY2snIHByb2Nlc3MgbmV2ZXIgdHJpZXMgdG8gcnVuIHRoZQordGVzdHMgb24gdGhlIGhvc3RzLiAgT24gdGhlIHRhcmdldCwgdGhlIHRlc3RzIG11c3QgYmUgcnVuIG1hbnVhbGx5LgorCitBbHNvLCBpbiB0aGUgbGlidXRpbCsrIHRlc3RzLCBhIG1ha2VmaWxlIHZhcmlhYmxlIFNSQ0RJUiBpcyBwYXNzZWQgaW50bwordGhlIGNvbXBpbGF0aW9uIHBoYXNlLCBwb2ludGluZyB0byB0aGUgcnVudGltZSBsb2NhdGlvbiBvZiB0aGUgdGVzdAorJ2ZpbGUtbWFuaXAtdGVzdHMnLiAgVGhlIG1lY2hhbmlzbSB1c2VkIGZvciBhIGhvc3QgdGVzdCwgYmFzZWQgb24KKyd0b3BkaXInIGRvZXNuJ3Qgd29yay4gIEluc3RlYWQsIGlmIENST1NTX0NPTVBJTEUgaXMgc2V0LCB0aGUKK21ha2VmaWxlIHRha2VzIHRoZSBwYXRoIG9mIFNSQ0RJUiBmcm9tIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgbm90Citmcm9tIGFuIGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIGhvc3QgcGF0aCAndG9wZGlyJy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0MWVjZTY0Li5jZTVhMTZmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zOTIsNiArMzkyLDcgQEAgQUNfQVJHX0VOQUJMRShhY2NvdW50LWNoZWNrLAorIAllbmFibGVfYWNjb3VudF9jaGVjaz0kZW5hYmxldmFsLCBlbmFibGVfYWNjb3VudF9jaGVjaz15ZXMpCisgCisgQU1fQ09ORElUSU9OQUwoQ0hFQ0tfQUNDT1VOVCwgdGVzdCAieCRlbmFibGVfYWNjb3VudF9jaGVjayIgPSAieHllcyIpCisrQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMRSwgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInh5ZXMiKQorIAorIEFDX1NVQlNUKE9QX0NGTEFHUykKKyBBQ19TVUJTVChPUF9DWFhGTEFHUykKK2RpZmYgLS1naXQgYS9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA4YTY5MDAzLi5kODIwMDkwIDEwMDY0NAorLS0tIGEvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTMsNCArMTMsNiBAQCBjaGVja19QUk9HUkFNUyA9IGRiX3Rlc3QKKyBkYl90ZXN0X1NPVVJDRVMgPSBkYl90ZXN0LmMKKyBkYl90ZXN0X0xEQUREID0gLi4vbGlib2RiLmEgLi4vLi4vbGlidXRpbC9saWJ1dGlsLmEKKyAKKytpZiAhIENST1NTX0NPTVBJTEUKKyBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9CisrZW5kaWYKK2RpZmYgLS1naXQgYS9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA4YTc5ZWI1Li42ZDQxN2M0IDEwMDY0NAorLS0tIGEvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMzMsNCArMzMsNiBAQCBsb2FkX2V2ZW50c19maWxlc190ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9CisgbWFuZ2xlX3Rlc3RzX1NPVVJDRVMgPSBtYW5nbGVfdGVzdHMuYworIG1hbmdsZV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9CisgCisraWYgISBDUk9TU19DT01QSUxFCisgVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfSB1dGY4X2NoZWNrZXIuc2gKKytlbmRpZgorZGlmZiAtLWdpdCBhL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDZmMTk4MzguLjFkMTc2ZjkgMTAwNjQ0CistLS0gYS9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xOCw0ICsxOCw2IEBAIGphdmFfdGVzdF9MREFERCA9IFwKKyAKKyBFWFRSQV9ESVNUID0gbWFuZ2xlZC1uYW1lLmluCisgCisraWYgISBDUk9TU19DT01QSUxFCisgVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQorK2VuZGlmCitkaWZmIC0tZ2l0IGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA1MWFmMDMxLi5hMDFlYTJkIDEwMDY0NAorLS0tIGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsOSBAQAorIAorIFJFQUxQQVRIPSByZWFkbGluayAtZgorIAorK2lmICEgQ1JPU1NfQ09NUElMRQorIFNSQ0RJUiA6PSAkKHNoZWxsICQoUkVBTFBBVEgpICQodG9wZGlyKS9saWJ1dGlsKysvdGVzdHMvICkKKytlbmRpZgorIAorIEFNX0NQUEZMQUdTID0gXAorIAktSSAke3RvcF9zcmNkaXJ9L2xpYnV0aWwrKyAtRCBTUkNESVI9IlwiJChTUkNESVIpL1wiIiBAT1BfQ1BQRkxBR1NACitAQCAtNDYsNCArNDgsNiBAQCBjYWNoZWRfdmFsdWVfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQorIHV0aWxpdHlfdGVzdHNfU09VUkNFUyA9IHV0aWxpdHlfdGVzdHMuY3BwCisgdXRpbGl0eV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9CisgCisraWYgISBDUk9TU19DT01QSUxFCisgVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQorK2VuZGlmCitkaWZmIC0tZ2l0IGEvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGRmY2Q2ZWMuLmU4ODMxYjUgMTAwNjQ0CistLS0gYS9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTIsNCArMTIsNiBAQCBmaWxlX3Rlc3RzX0xEQUREID0gLi4vbGlidXRpbC5hCisgc3RyaW5nX3Rlc3RzX1NPVVJDRVMgPSBzdHJpbmdfdGVzdHMuYworIHN0cmluZ190ZXN0c19MREFERCA9IC4uL2xpYnV0aWwuYQorIAorK2lmICEgQ1JPU1NfQ09NUElMRQorIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KKytlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWFmNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorb3Byb2ZpbGU6IERldGVybWluZSB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseQorCitUaGlzIGNvbW1pdCBkZXRlY3RzIHRoZSByb290IGhvbWUgZGlyZWN0b3J5IGR5bmFtaWNhbGx5IHdpdGggY2hhbmdlcyB0bwordGhlIG9wcm9maWxlIGd1aSBhcHAgc291cmNlLgorCitUaGUgY29tbWl0IHJlcGxhY2VzIGFuIGVhcmxpZXIgZml4IHRoYXQgZGV0ZWN0ZWQgYW5kIGFkanVzdGVkIGEKKydub24tc3RhbmRhcmQnIHJvb3QgaG9tZSBkaXJlY3RvcnkgYXQgYnVpbGQgdGltZS4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcworcGF0Y2ggaXMgdGhhdCB0aGUgb3Byb2ZpbGUgdG9vbHMgYXJlIGFkanVzdGVkIHRvIHRoZSBjdXJyZW50IHJ1bi10aW1lCitwYXRoIHRvIH5yb290LCBub3QgdGhlIGJ1aWxkIHRpbWUgcGF0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogRGF2ZSBMZXJuZXIgPGRhdmUubGVybmVyQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUuaHRtbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NTozMS41MTEwMzQ4NTcgKzAwMDAKKysrKyBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUuaHRtbAkyMDE0LTExLTAzIDE3OjU3OjI2LjQxNTAzNzk4OCArMDAwMAorQEAgLTE1NjMsOCArMTU2Myw4IEBACisgCQk8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5tdXN0PC9lbT48L3NwYW4+IHN0b3AgaXQgaW4gYSBjb250cm9sbGVkIG1hbm5lciBpbiBvcmRlciB0byBwcm9jZXNzCisgCQl0aGUgcHJvZmlsZSBkYXRhIGl0IGhhcyBjb2xsZWN0ZWQuICBVc2UgPGNvZGUgY2xhc3M9ImNvZGUiPmtpbGwgLVNJR0lOVCAmbHQ7b3BlcmYtUElEJmd0OzwvY29kZT4KKyAJCWZvciB0aGlzIHB1cnBvc2UuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgd2hlbiBydW5uaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPgorLQkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9yb290PC9jb2RlPiBvciBhIHN1YmRpcmVjdG9yeQorLQkJb2YgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgorKwkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPn5yb290PC9jb2RlPiBvciBhIHN1YmRpcmVjdG9yeQorKwkJb2YgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgorIAkJPC9wPgorICAgICAgICAgICAgICAgPC9kZD4KKyAgICAgICAgICAgICAgIDxkdD4KK0luZGV4OiBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUueG1sCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Byb2ZpbGUtMS4wLjAub3JpZy9kb2Mvb3Byb2ZpbGUueG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTE1MDM0ODU3ICswMDAwCisrKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU4OjAzLjcxOTAzOTAwNSArMDAwMAorQEAgLTY1NCw4ICs2NTQsOCBAQAorIAkJPGVtcGhhc2lzPm11c3Q8L2VtcGhhc2lzPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcworIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlPmtpbGwgLVNJR0lOVCAmbHQ7b3BlcmYtUElEJmd0OzwvY29kZT4KKyAJCWZvciB0aGlzIHB1cnBvc2UuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgd2hlbiBydW5uaW5nIDxjb21tYW5kPm9wZXJmPC9jb21tYW5kPgorLQkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8ZmlsZW5hbWU+L3Jvb3Q8L2ZpbGVuYW1lPiBvciBhIHN1YmRpcmVjdG9yeQorLQkJb2YgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgorKwkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8ZmlsZW5hbWU+fnJvb3Q8L2ZpbGVuYW1lPiBvciBhIHN1YmRpcmVjdG9yeQorKwkJb2YgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgorIAkJPC9wYXJhPjwvbGlzdGl0ZW0+CisgCTwvdmFybGlzdGVudHJ5PgorIAk8dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxNGJlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QKQEAgLTAsMCArMSwxOSBAQAorIyEvYmluL3NoCisKK3NhdmVkX2Rpcj0kUFdECitmb3IgZGlyIGluICovdGVzdHMgOyBkbworCWNkICRkaXIKKwlmb3IgYXRlc3QgaW4gKiA7IGRvCisJCWlmIFsgXCggLXggJGF0ZXN0IFwpIC1hIFwoIC1mICRhdGVzdCBcKSBdIDsgdGhlbgorCQkJLi8kYXRlc3QgPiAke2F0ZXN0fS5zdGRvdXQgMj4gJHthdGVzdH0uc3RkZXJyCisJCQlpZiBbICQ/ID0gMCBdIDsgdGhlbgorCQkJCWVjaG8gIlBBU1M6ICRkaXIgJGF0ZXN0IgorCQkJCXJtICR7YXRlc3R9LnN0ZG91dCAke2F0ZXN0fS5zdGRlcnIKKwkJCWVsc2UKKwkJCQllY2hvICJGQUlMOiAke2Rpcn0vJHthdGVzdH0iCisJCQlmaQorCQlmaQorCWRvbmUKKwljZCAkc2F2ZWRfZGlyCitkb25lCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmE5NGFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMS4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgb3Byb2ZpbGUuaW5jCisKK0RFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgorREVQRU5EU19hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJwZm00IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjQ4YzRjMDY5Zjk0NzZmNDI3ZmE3MTk1NTYzZjk4NjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Y3NTlhNmRlMWE2MDMzZDVkZmM5M2JkYTEyOWE5ZjJlMTI4YWVjYzQyMzhjYzY1N2ZlYjA4MDFkMWIwMzY2YyIKKworUyA9ICIke1dPUktESVJ9L29wcm9maWxlLSR7UFZ9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYgppbmRleCBmMGVmYzUxLi5jMGYyMjBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIKQEAgLTgsNiArOCw4IEBACiBTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9jLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3QtY3JlYXRlLWEtcnVuLXRlc3QtdG8tZGV0ZXJtaW5lLW9yZGVyLW9mLWJpdGZpLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuaXNvaW1hZ2UtRml4LWZwcmludGYtZm9ybWF0LWVycm9ycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRlZmluZS1fX1RIUk9XLXRvLWF2b2lkLWJ1aWxkLWlzc3VlLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC11c2UtcmNtZC1vbi1idWlsZC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZWZlMDhlMmYzY2E0Nzg0ODYwMzdiMDUzYWNkNTEyZTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFjMDMwNzU2ZWNjMTgyZGVmZWU5ZmU4ODU2MzhjMTc4NWQzNWEyYzJhMjk3YjQ2MDRjMGUwZGNjNzhlNDdkYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2ZpbGVzLzAwMDEtZGVmaW5lLV9fVEhST1ctdG8tYXZvaWQtYnVpbGQtaXNzdWUtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvZmlsZXMvMDAwMS1kZWZpbmUtX19USFJPVy10by1hdm9pZC1idWlsZC1pc3N1ZS13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiZWIwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2ZpbGVzLzAwMDEtZGVmaW5lLV9fVEhST1ctdG8tYXZvaWQtYnVpbGQtaXNzdWUtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gN2MzMDM2NjA5NDk0Mjk2ZjdjMjk0MTNiZjNhY2JhODI5YzgxZjYyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQG9wZW53aWRlLmZyPgorRGF0ZTogU2F0LCA4IEF1ZyAyMDE1IDIyOjU4OjU3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBkZWZpbmUgX19USFJPVyB0byBhdm9pZCBidWlsZCBpc3N1ZSB3aXRoIG11c2wKKworRml4ZXM6CitodHRwOi8vYXV0b2J1aWxkLmJ1aWxkcm9vdC5uZXQvcmVzdWx0cy9kMjcvZDI3ODFlNzBiMDRhMjA3ZTJlOTM5N2Q4ODgwMzIyOTRjNzI4NTAzNC9idWlsZC1lbmQubG9nCisKK1NpZ25lZC1vZmYtYnk6IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQG9wZW53aWRlLmZyPgorLS0tCisgZ2VuaXNvaW1hZ2Uvc2hhMjU2LmggfCA0ICsrKysKKyBnZW5pc29pbWFnZS9zaGE1MTIuaCB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nZW5pc29pbWFnZS9zaGEyNTYuaCBiL2dlbmlzb2ltYWdlL3NoYTI1Ni5oCitpbmRleCBlN2Y0Y2I5Li5iY2FlN2VmIDEwMDY0NAorLS0tIGEvZ2VuaXNvaW1hZ2Uvc2hhMjU2LmgKKysrKyBiL2dlbmlzb2ltYWdlL3NoYTI1Ni5oCitAQCAtMjksNiArMjksMTAgQEAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisrLyogZGVmaW5lIF9fVEhST1cgdG8gYXZvaWQgYnVpbGQgaXNzdWUgd2hlbiBpdCdzIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgbGliYyAqLworKyNpZm5kZWYgX19USFJPVworKyMgZGVmaW5lIF9fVEhST1cKKysjZW5kaWYKKyAKKyAvKiBTdHJ1Y3R1cmUgdG8gc2F2ZSBzdGF0ZSBvZiBjb21wdXRhdGlvbiBiZXR3ZWVuIHRoZSBzaW5nbGUgc3RlcHMuICAqLworIHN0cnVjdCBzaGEyNTZfY3R4CitkaWZmIC0tZ2l0IGEvZ2VuaXNvaW1hZ2Uvc2hhNTEyLmggYi9nZW5pc29pbWFnZS9zaGE1MTIuaAoraW5kZXggNzI5ODM1NS4uOGNlZThiMCAxMDA2NDQKKy0tLSBhL2dlbmlzb2ltYWdlL3NoYTUxMi5oCisrKysgYi9nZW5pc29pbWFnZS9zaGE1MTIuaAorQEAgLTI5LDYgKzI5LDEwIEBACisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAorKy8qIGRlZmluZSBfX1RIUk9XIHRvIGF2b2lkIGJ1aWxkIGlzc3VlIHdoZW4gaXQncyBub3QgYXZhaWxhYmxlIGZyb20gdGhlIGxpYmMgKi8KKysjaWZuZGVmIF9fVEhST1cKKysjIGRlZmluZSBfX1RIUk9XCisrI2VuZGlmCisgCisgLyogU3RydWN0dXJlIHRvIHNhdmUgc3RhdGUgb2YgY29tcHV0YXRpb24gYmV0d2VlbiB0aGUgc2luZ2xlIHN0ZXBzLiAgKi8KKyBzdHJ1Y3Qgc2hhNTEyX2N0eAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvZmlsZXMvMDAwMi1Eby1ub3QtdXNlLXJjbWQtb24tYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvZmlsZXMvMDAwMi1Eby1ub3QtdXNlLXJjbWQtb24tYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0N2EyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9maWxlcy8wMDAyLURvLW5vdC11c2UtcmNtZC1vbi1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA1MTA4MzhiMmM5NmE5YjA5N2IzZWUyNjk0Y2JhMWMzNjIzYjBiYWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMjI6Mzg6MDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIERvIG5vdCB1c2UgcmNtZCBvbiBidWlsZCB3aXRoIG11c2wKKworY2Rya2l0IHVuY29uZGl0aW9uYWxseSBlbmFibGVzIGNvZGUgdXNpbmcgcmNtZCgzKSwgd2hpY2ggaXNuJ3QgYXZhaWxhYmxlCitvbiBtdXNsLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS94Y29uZmlnLmguaW4gfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUveGNvbmZpZy5oLmluIGIvaW5jbHVkZS94Y29uZmlnLmguaW4KK2luZGV4IDQ3NmMwMGIuLjZiNGIyOTggMTAwNjQ0CistLS0gYS9pbmNsdWRlL3hjb25maWcuaC5pbgorKysrIGIvaW5jbHVkZS94Y29uZmlnLmguaW4KK0BAIC0xODYsOCArMTg2LDkgQEAKKyAgKglJbnN0ZWFkIHVzZSB0aGUgdGVzdHMgQUNfU01BTExfRlNFRUtPL0FDX1NNQUxML1NURUxMTyBhbmQgbWFrZSBzdXJlCisgICoJdGhleSBhcmUgcGxhY2VkIGJlZm9yZSB0aGUgbGFyZ2UgZmlsZSB0ZXN0cy4KKyAgKi8KKy0KKysjaWZkZWYgX19HTElCQ19fCisgI2RlZmluZSBIQVZFX1JDTUQgMQkJLyogcmNtZCgpIGlzIHByZXNlbnQgaW4gbGliYy9saWJzb2NrZXQgKi8KKysjZW5kaWYKKyAjZGVmaW5lIEhBVkVfU09DS0VUIDEJCS8qIHNvY2tldCgpIGlzIHByZXNlbnQgaW4gbGliYy9saWJzb2NrZXQgKi8KKyAjZGVmaW5lIEhBVkVfU09DS0VUUEFJUiAxCQkvKiBzb2NrZXRwYWlyKCkgaXMgcHJlc2VudCBpbiBsaWJjL2xpYnNvY2tldCAqLworICNkZWZpbmUgSEFWRV9HRVRTRVJWQllOQU1FIDEJLyogZ2V0c2VydmJ5bmFtZSgpIGlzIHByZXNlbnQgaW4gbGliYy9saWJzb2NrZXQgKi8KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLWF1ZGlvX2Fsc2EwOS5jLWFsc2EtZHJhaW4tZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3ZjNiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLWF1ZGlvX2Fsc2EwOS5jLWFsc2EtZHJhaW4tZml4LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYTg2MGZlMDc5NmM0M2UzNWVhYzk3ODMxNDBmY2I1NjNjYWI5ZjU1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDggSnVuIDIwMTcgMjM6MDk6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGF1ZGlvX2Fsc2EwOS5jOiBhbHNhIGRyYWluIGZpeAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYXVkaW9fYWxzYTA5LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdWRpb19hbHNhMDkuYyBiL2F1ZGlvX2Fsc2EwOS5jCitpbmRleCA1MzRlM2RiLi5kOTQ1MGU2IDEwMDY0NAorLS0tIGEvYXVkaW9fYWxzYTA5LmMKKysrKyBiL2F1ZGlvX2Fsc2EwOS5jCitAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgZXNkX2F1ZGlvX2ZsdXNoKHZvaWQpCisgCX0KKyAKKyAJaWYgKGFsc2FfcGxheWJhY2tfaGFuZGxlICE9IE5VTEwpCistCQlzbmRfcGNtX2RyYWluKCBhbHNhX3BsYXliYWNrX2hhbmRsZSApOworKwkJc25kX3BjbV9kcm9wKCBhbHNhX3BsYXliYWNrX2hhbmRsZSApOworICAgCisgCWlmIChhbHNhZGJnKSAKKyAJCXByaW50X3N0YXRlKCk7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1yZXBsYWNlLW1pc3NpbmctQU1fUEFUSF9BVURJT0ZJTEUtYnktUEtHX0NIRUNLX01PRFVMLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtcmVwbGFjZS1taXNzaW5nLUFNX1BBVEhfQVVESU9GSUxFLWJ5LVBLR19DSEVDS19NT0RVTC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljOTdhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1yZXBsYWNlLW1pc3NpbmctQU1fUEFUSF9BVURJT0ZJTEUtYnktUEtHX0NIRUNLX01PRFVMLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAyMThlMDcwMmQ2Y2U0ZDJjYjIwZDVkMTA4ZGFhMTZhZmNhMmI3YzQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAxNiBEZWMgMjAxNiAxMzoyMjo1MSArMDEwMAotU3ViamVjdDogW1BBVENIXSByZXBsYWNlIG1pc3NpbmcgQU1fUEFUSF9BVURJT0ZJTEUgYnkgUEtHX0NIRUNLX01PRFVMRVMoCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDg2YzQ5Mi4uZGNjZmQxYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzUzLDcgKzM1Myw3IEBAIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSBlY2hvICItLS0gQ2hlY2tpbmcgZm9yIHRoZSBhdWRpb2ZpbGUgbGlicmFyeS4gIE5PVEU6IFRoaXMgbGlicmFyeSBpcyBub3ciCi0gZWNobyAiLS0tIFJFUVVJUkVEIGZyb20gcHJvcGVyIGNvbXBpbGF0aW9uIG9mIHRoZSBlc291bmQgcGFja2FnZS4iCi0gCi0tQU1fUEFUSF9BVURJT0ZJTEUoMC4xLjUsIFsKLStQS0dfQ0hFQ0tfTU9EVUxFUyhBVURJT0ZJTEUsIGF1ZGlvZmlsZSwgWwotIAotIGJ1aWxkX2VzZHBsYXk9dHJ1ZQotIGVjaG8gIi0tLSBsaWJhdWRpb2ZpbGUgZm91bmQuIEJ1aWxkaW5nIGVzb3VuZCB3aXRoIGF1ZGlvZmlsZSBzdXBwb3J0IgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3NTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAyLVVuZGVmaW5lLW9wZW42NC1hbmQtZm9wZW42NC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDFmYmVlNmU5NjM4NGYzNDBiODE2ZTIyMWZlMWMyZjNmZjBiNDg3YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjExOjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBVbmRlZmluZSBvcGVuNjQgYW5kIGZvcGVuNjQKKworU2luY2UgdGhlIHNpZ25hdHVyZXMgZG8gbm90IG1hdGNoIHdpdGggbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZXNkZHNwLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZXNkZHNwLmMgYi9lc2Rkc3AuYworaW5kZXggZDNjNmVhOS4uMTdiNTk0OSAxMDA2NDQKKy0tLSBhL2VzZGRzcC5jCisrKysgYi9lc2Rkc3AuYworQEAgLTI5MCw2ICsyOTAsNyBAQCBvcGVuIChjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCisgICByZXR1cm4gb3Blbl93cmFwcGVyKGZ1bmMsIHBhdGhuYW1lLCBmbGFncywgbW9kZSk7CisgfQorIAorKyN1bmRlZiBvcGVuNjQKKyBpbnQKKyBvcGVuNjQgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKKyB7CitAQCAtMzc0LDYgKzM3NSw3IEBAIGZvcGVuIChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQorICAgcmV0dXJuIGZvcGVuX3dyYXBwZXIoZnVuYywgcGF0aCwgbW9kZSk7CisgfQorIAorKyN1bmRlZiBmb3BlbjY0CisgRklMRSAqCisgZm9wZW42NCAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKKyB7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYzg4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDk3OWEwMmQ5ZWM5YzI4Njg2MDIxY2QyYjQ5Y2E1NWQyMTk1YzlkY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjEyOjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBVc2UgLUk9PHBhdGg+IGluIGNvbmZpZ3VyZQorCitUaGlzIGhlbHBzIHRvIHVzZSBwcm9wZXIgc3lzcm9vdCBpbgorY3Jvc3MgYnVpbGQgZW52aXJvbm1lbnQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDU2NDVkY2UuLmQzNzRjZGEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIwOCw3ICsyMDgsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zb3VuZCIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19DSEVDS19IRUFERVJTKENvcmVBdWRpby9Db3JlQXVkaW8uaCkKKyAgICAjIG1tZV9hcGkuaCBkaXJlY3RseSBpbmNsdWRlcyBvdGhlciBmaWxlcyBmcm9tIHRoZSBtbWUgc3ViZGlyCisgICAgeENQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9tbWUiCisrICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtST0vdXNyL2luY2x1ZGUvbW1lIgorICAgIEFDX0NIRUNLX0hFQURFUlMobW1lL21tZV9hcGkuaCkKKyAgICBDUFBGTEFHUz0iJHhDUFBGTEFHUyIKKyAgICBBTV9QQVRIX0FSVFMoLCBIQVZFX0FSVFM9eWVzLCBIQVZFX0FSVFM9bm8pCitAQCAtMjY5LDcgKzI2OSw3IEBAIGlmIHRlc3QgIngkZW5hYmxlX2xvY2FsX3NvdW5kIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgIG9zZiopCisgCWZvdW5kX3NvdW5kPXllcworIAlBQ19ERUZJTkUoRFJJVkVSX09TRiwgMSwgW0RlZmluZWQgaWYgT1NGIGJhY2tlbmQgaXMgZW5hYmxlZF0pCistCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbW1lIgorKwlDUFBGTEFHUz0iJENQUEZMQUdTIC1JPS91c3IvaW5jbHVkZS9tbWUiCisgCVNPVU5EX0xJQlM9LWxtbWUKKyAgICAgICBlc2FjCisgICAgZmkKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9jb25maWd1cmUtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL2NvbmZpZ3VyZS1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZGMzNWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL2NvbmZpZ3VyZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0tLS0gL3RtcC9jb25maWd1cmUuYWMJMjAwOC0wNi0wMiAxNjo0Njo1NS42NDA3OTMzMDYgKzAyMDAKLSsrKyBlc291bmQtMC4yLjM2L2NvbmZpZ3VyZS5hYwkyMDA4LTA2LTAyIDE2OjQ3OjI2LjAzMDc5MzQ5NCArMDIwMAotQEAgLTI5LDYgKzI5LDcgQEAKLSBBQ19TVUJTVChwa2dkb2NkaXIpCi0gCi0gQUNfUFJPR19DQwotK0FDX1BST0dfQ1hYCi0gQUNfUFJPR19DUFAKLSBBQ19MSUJUT09MX1dJTjMyX0RMTAotIEFNX1BST0dfTElCVE9PTApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL2Vzb3VuZF8wLjIuMzYtMXVidW50dTUuZGlmZi5neiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9lc291bmRfMC4yLjM2LTF1YnVudHU1LmRpZmYuZ3oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxOWY1ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL2Vzb3VuZF8wLjIuMzYtMXVidW50dTUuZGlmZi5negorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZF8wLjIuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmRfMC4yLjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTliYTgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZF8wLjIuMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIkVubGlnaHRlbmVkIFNvdW5kIERhZW1vbiIKLVNFQ1RJT04gPSAiZ3BlL2Jhc2UiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKLURFUEVORFMgPSAiYXVkaW9maWxlIgotCi1pbmhlcml0IGdub21lIGJpbmNvbmZpZwotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGZ0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZXNvdW5kLzAuMi9lc291bmQtMC4yLjM2LnRhci5iejI7bmFtZT1hcmNoaXZlIFwKLSAgICBmaWxlOi8vZXNvdW5kXzAuMi4zNi0xdWJ1bnR1NS5kaWZmLmd6IFwKLSAgICBmaWxlOi8vbm8tZG9jcy5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1maXgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2UtbWlzc2luZy1BTV9QQVRIX0FVRElPRklMRS1ieS1QS0dfQ0hFQ0tfTU9EVUwucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZmFjYjVhYTAxMTVjYzFjMzE3NzFiOWFkNDU0YWU3NiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjY4YmYzOTlmY2JkNDVjNWU5YmE5OWNkMTNhM2E0NzllNGVmMmJjNWRjNTJlNTQwZmZhMDBhZWYxZTFiMTlhNzYiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1hbHNhIFwKLSAgICAtLWRpc2FibGUtYXJ0cyBcCi0gICAgLS1kaXNhYmxlLWFydHN0ZXN0IFwKLSIKLQotQ0ZMQUdTICs9ICItbG0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczovdXNyL2luY2x1ZGUvbW1lOiR7U1RBR0lOR19JTkNESVJ9L21tZTpnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1QQUNLQUdFUyA9KyAiZXNkZHNwIGVzZCBlc2QtdXRpbHMiCi0KLUZJTEVTX2VzZGRzcCA9ICIke2JpbmRpcn0vZXNkZHNwICR7bGliZGlyfS9saWJlc2Rkc3Auc28uKiIKLUZJTEVTX2VzZCA9ICIke2JpbmRpcn0vZXNkIgotRklMRVNfZXNkLXV0aWxzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kXzAuMi40MS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZF8wLjIuNDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRkZjk0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZF8wLjIuNDEuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJFbmxpZ2h0ZW5lZCBTb3VuZCBEYWVtb24iCitTRUNUSU9OID0gImdwZS9iYXNlIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCitERVBFTkRTID0gImF1ZGlvZmlsZSIKKworaW5oZXJpdCBnbm9tZQorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZXNvdW5kLzAuMi8ke1B9LnRhci5iejI7bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovL25vLWRvY3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVVuZGVmaW5lLW9wZW42NC1hbmQtZm9wZW42NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOGQ5YWFkM2Q5NGQxNWUwZDU5YmE5ZGMwZWE5OTBjNmMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1ZWI1ZGQyOWE2NGIzNDYyYTI5YTViMjA2NTJhYmE3YWE5MjY3NDJjZWY0MzU3N2JmMDc5NmI3ODdjYTM0OTExIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS1kaXNhYmxlLWFydHMgXAorICAgIC0tZGlzYWJsZS1hcnRzdGVzdCBcCisiCitFWFRSQV9PRUNPTkZfcmVtb3ZlID0gIi0tZGlzYWJsZS1zY2hlbWFzLWluc3RhbGwiCisKK0NGTEFHUyArPSAiLWxtIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1tsaWJ3cmFwXSA9ICItLXdpdGgtbGlid3JhcCwtLXdpdGhvdXQtbGlid3JhcCx0Y3Atd3JhcHBlcnMsIgorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1vc3MsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgorCitQQUNLQUdFQ09ORklHID8/PSAibGlid3JhcCBhbHNhIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VTID0rICJlc2Rkc3AgZXNkIGVzZC11dGlscyIKKworRklMRVNfZXNkZHNwID0gIiR7YmluZGlyfS9lc2Rkc3AgJHtsaWJkaXJ9L2xpYmVzZGRzcC5zby4qIgorRklMRVNfZXNkID0gIiR7YmluZGlyfS9lc2QiCitGSUxFU19lc2QtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpdmU1NTUvbGl2ZTU1NS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpdmU1NTUvbGl2ZTU1NS5pbmMKaW5kZXggZGFhZThkNy4uMTRlYTY2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saXZlNTU1L2xpdmU1NTUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGl2ZTU1NS9saXZlNTU1LmluYwpAQCAtMTYsMTIgKzE2LDkgQEAKIFMgPSAiJHtXT1JLRElSfS9saXZlIgogVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCiAKLVhMT0NBTEVfbGliYy1tdXNsID0gIiAtRFhMT0NBTEVfTk9UX1VTRUQiCi1YTE9DQUxFID89ICIiCi0KIGRvX2NvbmZpZ3VyZSgpIHsKICAgICBjcCAke1dPUktESVJ9L2NvbmZpZy5saW51eC1jcm9zcyAuCi0gICAgZWNobyAiQ09NUElMRV9PUFRTKz0iIC1mUElDICR7WExPQ0FMRX0iIiA+PiBjb25maWcubGludXgtY3Jvc3MKKyAgICBlY2hvICJDT01QSUxFX09QVFMrPSIgLWZQSUMgLURYTE9DQUxFX05PVF9VU0VEIiIgPj4gY29uZmlnLmxpbnV4LWNyb3NzCiAgICAgLi9nZW5NYWtlZmlsZXMgbGludXgtY3Jvc3MKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMzM2ZjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk1pbmlETE5BIChha2EgUmVhZHlETE5BKSBpcyBzZXJ2ZXIgc29mdHdhcmUgd2l0aCB0aGUgYWltIG9mIFwKLWJlaW5nIGZ1bGx5IGNvbXBsaWFudCB3aXRoIERMTkEvVVBuUC1BViBjbGllbnRzLiIKLUxJQ0VOU0UgPSAiR1BMLTIuMHxCU0QiCi1ERVBFTkRTID0gImZmbXBlZyBmbGFjIGxpYmF2IGpwZWcgc3FsaXRlMyBsaWJleGlmIGxpYm9nZyBsaWJpZDN0YWcgbGlidm9yYmlzIgotCi0jIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBsaWJhdiB3aGljaCBoYXMgY29tbWVyY2lhbCBmbGFnCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9taW5pZGxuYS9naXQ7YnJhbmNoPW1hc3Rlcjttb2R1bGU9Z2l0IFwKLSAgICAgICAgICAgZmlsZTovL21pbmlkbG5hLWRhZW1vbi5pbml0LmQgXAotICAgICAgICAgICBmaWxlOi8vbWluaWRsbmEuc2VydmljZSAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgVGhpcyByZW1vdmUgIi0tZXhjbHVkZT1hdXRvcG9pbnQiIG9wdGlvbiBmcm9tIGF1dG9yZWNvbmYgYXJndW1lbnQgdG8gYXZvaWQKLSMgY29uZmlndXJlLmFjOjMwOiBlcnJvcjogcmVxdWlyZWQgZmlsZSAnLi9BQk9VVC1OTFMnIG5vdCBmb3VuZAotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBtaW5pZGxuYS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLSMgU3lzdGVtZCBzY3JpcHQKLSAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3N5c3RlbWQvc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWluaWRsbmEuc2VydmljZSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbQotCi0jIFN5c3Zpbml0IHNjcmlwdAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWluaWRsbmEtZGFlbW9uLmluaXQuZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWluaWRsbmEKLQotfQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWluaWRsbmEuc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gIm1pbmlkbG5hIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgOTAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmFfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hXzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWQ3MDBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmFfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNSRVYgPSAidjFfMV81IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5taW5pdXBucGQ7bWQ1PWIwZGFiZjlkOGUwZjg3MTU1NGUzMDlkNjJlYWQ4ZDJiIgotCi1QTkJMQUNLTElTVFttaW5pZGxuYV0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MzAvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyLzAwMDEtY29uZmlndXJlLWRvbi10LWRpc2FibGUtQVNTLXN1cHBvcnQtd2hlbi1leHBsaWNpdGx5LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcGxheWVyMi8wMDAxLWNvbmZpZ3VyZS1kb24tdC1kaXNhYmxlLUFTUy1zdXBwb3J0LXdoZW4tZXhwbGljaXRseS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMzI1OTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyLzAwMDEtY29uZmlndXJlLWRvbi10LWRpc2FibGUtQVNTLXN1cHBvcnQtd2hlbi1leHBsaWNpdGx5LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMzU0MTY0OWI3MTFhNzczYWEyZTQyYWM4MGQ5YjRjMWIzNmZjZTIzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjcgTWFyIDIwMTQgMDA6MDg6NTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBkb24ndCBkaXNhYmxlIEFTUyBzdXBwb3J0IHdoZW4gZXhwbGljaXRseSBlbmFibGVkCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggNjBmZDMwOC4uMmY3ZGYzYiAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNDM0Niw3ICs0MzQ2LDcgQEAgZmkKLSAKLSAKLSBlY2hvY2hlY2sgIlNTQS9BU1Mgc3VwcG9ydCIKLS1pZiB0ZXN0ICIkX2FzcyIgPSBhdXRvIDsgdGhlbgotK2lmIHRlc3QgIiRfYXNzIiA9IGF1dG8gLW8gIiRfYXNzIiA9IHllcyA7IHRoZW4KLSAgICAgaWYgcGtnX2NvbmZpZ19hZGQgbGliYXNzIDsgdGhlbgotICAgICAgICAgX2Fzcz15ZXMKLSAgICAgICAgIGRlZl9hc3M9JyNkZWZpbmUgQ09ORklHX0FTUyAxJwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXBsYXllcjIvMDAwMS1kZW11eF9vZ2ctcGFydGlhbGx5LXBvcnQtbGlidGhlb3JhLWdsdWUtY29kZS10by1UaGVvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyLzAwMDEtZGVtdXhfb2dnLXBhcnRpYWxseS1wb3J0LWxpYnRoZW9yYS1nbHVlLWNvZGUtdG8tVGhlby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRkOTg0MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXBsYXllcjIvMDAwMS1kZW11eF9vZ2ctcGFydGlhbGx5LXBvcnQtbGlidGhlb3JhLWdsdWUtY29kZS10by1UaGVvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLUZyb20gMDU3MWJiNGYxYTZlMTkzNGVlN2UwOTNjZTdhYTUxN2I5YmFjOGU2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotRGF0ZTogU3VuLCAxNyBKYW4gMjAxNiAxNDo0NjoxMCArMDUwMAotU3ViamVjdDogW1BBVENIXSBkZW11eF9vZ2c6IHBhcnRpYWxseSBwb3J0IGxpYnRoZW9yYSBnbHVlIGNvZGUgdG8gVGhlb3JhIDEuMAotIEFQSQotCi1UaGlzIHBhcnRpYWxseSBiYWNrcG9ydHMgdGhlIGZvbGxvd2luZyBjb21taXQgdG8gYWxsb3cgYnVpbGRpbmcKLXdpdGggZ2NjLTUueCBhbmQgb3RoZXJ3aXNlIGZhaWxzIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YKLXRoZSBfaWxvZyBmdW5jdGlvbiB0aGUgd2F5IGl0IGlzIHVzZWQuCi0KLWh0dHBzOi8vZ2l0aHViLmNvbS9waWdvei9tcGxheWVyLXN2bi9jb21taXQvODVlNTE0MDhjZDAwOTc5ZmMyMDlkYThlM2EzOWI2ZjBlN2YzMjViYwotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLS0tLQotIGxpYm1wZGVtdXgvZGVtdXhfb2dnLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYm1wZGVtdXgvZGVtdXhfb2dnLmMgYi9saWJtcGRlbXV4L2RlbXV4X29nZy5jCi1pbmRleCA5ZWVhMDYxLi45MTQ0NDI2IDEwMDY0NAotLS0tIGEvbGlibXBkZW11eC9kZW11eF9vZ2cuYwotKysrIGIvbGlibXBkZW11eC9kZW11eF9vZ2cuYwotQEAgLTUwLDggKzUwLDcgQEAKLSAjZW5kaWYKLSAKLSAjaWZkZWYgQ09ORklHX09HR1RIRU9SQQotLSNpbmNsdWRlIDx0aGVvcmEvdGhlb3JhLmg+Ci0taW50IF9pbG9nICh1bnNpZ25lZCBpbnQpOyAvKiBkZWZpbmVkIGluIG1hbnkgcGxhY2VzIGluIHRoZW9yYS9saWIvICovCi0rI2luY2x1ZGUgPHRoZW9yYS90aGVvcmFkZWMuaD4KLSAjZW5kaWYKLSAKLSAjZGVmaW5lIEJMT0NLX1NJWkUgNDA5NgotQEAgLTYyLDkgKzYxLDEwIEBAIGludCBfaWxvZyAodW5zaWduZWQgaW50KTsgLyogZGVmaW5lZCBpbiBtYW55IHBsYWNlcyBpbiB0aGVvcmEvbGliLyAqLwotICAqLwotICNpZmRlZiBDT05GSUdfT0dHVEhFT1JBCi0gdHlwZWRlZiBzdHJ1Y3QgdGhlb3JhX3N0cnVjdF9zdCB7Ci0tICAgIHRoZW9yYV9zdGF0ZSAgIHN0OwotLSAgICB0aGVvcmFfY29tbWVudCBjYzsKLS0gICAgdGhlb3JhX2luZm8gICAgaW5mOwotKyAgICB0aF9zZXR1cF9pbmZvICp0c2k7Ci0rICAgIHRoX2RlY19jdHggICAgKnRjdHg7Ci0rICAgIHRoX2NvbW1lbnQgICAgIHRjOwotKyAgICB0aF9pbmZvICAgICAgICB0aTsKLSB9IHRoZW9yYV9zdHJ1Y3RfdDsKLSAjZW5kaWYKLSAKLUBAIC0xMTcsNyArMTE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgb2dnX3N0cmVhbSB7Ci0gICAgIGZsb2F0ICAgc2FtcGxlcmF0ZTsgLy8vIGdyYW51bHBvcyAyIHRpbWUKLSAgICAgaW50NjRfdCBsYXN0cG9zOwotICAgICBpbnQzMl90IGxhc3RzaXplOwotLSAgICBpbnQgICAgIGtleWZyYW1lX2ZyZXF1ZW5jeV9mb3JjZTsKLSsgICAgaW50ICAgICBrZXlmcmFtZV9ncmFudWxlX3NoaWZ0OwotIAotICAgICAvLyBMb2dpY2FsIHN0cmVhbSBzdGF0ZQotICAgICBvZ2dfc3RyZWFtX3N0YXRlIHN0cmVhbTsKLUBAIC0zMDAsMTEgKzMwMCwxMCBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciAqZGVtdXhfb2dnX3JlYWRfcGFja2V0KG9nZ19zdHJlYW1fdCAqb3MsIG9nZ19wYWNrZXQgKnBhY2ssCi0gICAgICAgICAgICBoYXZlIHRoZW9yYV9zdGF0ZSBzdCwgdW50aWwgYWxsIGhlYWRlciBwYWNrZXRzIHdlcmUgcGFzc2VkIHRvIHRoZQotICAgICAgICAgICAgZGVjb2Rlci4gKi8KLSAgICAgICAgIGlmICghcGFjay0+Ynl0ZXMgfHwgISgqZGF0YSYweDgwKSkgewotLSAgICAgICAgICAgIGludCBrZXlmcmFtZV9ncmFudWxlX3NoaWZ0ID0gX2lsb2cob3MtPmtleWZyYW1lX2ZyZXF1ZW5jeV9mb3JjZSAtIDEpOwotLSAgICAgICAgICAgIGludDY0X3QgaWZyYW1lbWFzayA9ICgxIDw8IGtleWZyYW1lX2dyYW51bGVfc2hpZnQpIC0gMTsKLSsgICAgICAgICAgICBpbnQ2NF90IGlmcmFtZW1hc2sgPSBpZnJhbWVtYXNrID0gKDEgPDwgb3MtPmtleWZyYW1lX2dyYW51bGVfc2hpZnQpIC0gMTsKLSAKLSAgICAgICAgICAgICBpZiAocGFjay0+Z3JhbnVsZXBvcyA+PSAwKSB7Ci0tICAgICAgICAgICAgICAgIG9zLT5sYXN0cG9zICA9IHBhY2stPmdyYW51bGVwb3MgPj4ga2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdDsKLSsgICAgICAgICAgICAgICAgb3MtPmxhc3Rwb3MgID0gcGFjay0+Z3JhbnVsZXBvcyA+PiBvcy0+a2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdDsKLSAgICAgICAgICAgICAgICAgb3MtPmxhc3Rwb3MgKz0gcGFjay0+Z3JhbnVsZXBvcyAmIGlmcmFtZW1hc2s7Ci0gICAgICAgICAgICAgICAgICprZXlmcmFtZSA9IChwYWNrLT5ncmFudWxlcG9zICYgaWZyYW1lbWFzaykgPT0gMDsKLSAgICAgICAgICAgICB9IGVsc2UgewotQEAgLTg4OCwxNCArODg3LDE1IEBAIGludCBkZW11eF9vZ2dfb3BlbihkZW11eGVyX3QgKmRlbXV4ZXIpCi0gI2lmZGVmIENPTkZJR19PR0dUSEVPUkEKLSAgICAgICAgIH0gZWxzZSBpZiAocGFjay5ieXRlcyA+PSA3ICYmICFzdHJuY21wICgmcGFjay5wYWNrZXRbMV0sICJ0aGVvcmEiLCA2KSkgewotICAgICAgICAgICAgIGludCBlcnJvckNvZGUgPSAwOwotLSAgICAgICAgICAgIHRoZW9yYV9pbmZvIGluZjsKLS0gICAgICAgICAgICB0aGVvcmFfY29tbWVudCBjYzsKLSsgICAgICAgICAgICB0aF9pbmZvIHRpOwotKyAgICAgICAgICAgIHRoX2NvbW1lbnQgdGM7Ci0rICAgICAgICAgICAgdGhfc2V0dXBfaW5mbyAqdHNpID0gTlVMTDsKLSAKLS0gICAgICAgICAgICB0aGVvcmFfaW5mb19pbml0ICgmaW5mKTsKLS0gICAgICAgICAgICB0aGVvcmFfY29tbWVudF9pbml0ICgmY2MpOwotKyAgICAgICAgICAgIHRoX2luZm9faW5pdCAoJnRpKTsKLSsgICAgICAgICAgICB0aF9jb21tZW50X2luaXQgKCZ0Yyk7Ci0gCi0tICAgICAgICAgICAgZXJyb3JDb2RlID0gdGhlb3JhX2RlY29kZV9oZWFkZXIgKCZpbmYsICZjYywgJnBhY2spOwotLSAgICAgICAgICAgIGlmIChlcnJvckNvZGUpIHsKLSsgICAgICAgICAgICBlcnJvckNvZGUgPSB0aF9kZWNvZGVfaGVhZGVyaW4oJnRpLCAmdGMsICZ0c2ksICZwYWNrKTsKLSsgICAgICAgICAgICBpZiAoZXJyb3JDb2RlIDwgMCkgewotICAgICAgICAgICAgICAgICBtcF9tc2coTVNHVF9ERU1VWCwgTVNHTF9FUlIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlb3JhIGhlYWRlciBwYXJzaW5nIGZhaWxlZDogJWkgXG4iLCBlcnJvckNvZGUpOwotICAgICAgICAgICAgIH0gZWxzZSB7Ci1AQCAtOTA0LDMwICs5MDQsMzIgQEAgaW50IGRlbXV4X29nZ19vcGVuKGRlbXV4ZXJfdCAqZGVtdXhlcikKLSAgICAgICAgICAgICAgICAgc2hfdi0+YmloID0gY2FsbG9jKDEsIHNpemVvZigqc2hfdi0+YmloKSk7Ci0gICAgICAgICAgICAgICAgIHNoX3YtPmJpaC0+YmlTaXplICAgICAgICA9IHNpemVvZigqc2hfdi0+YmloKTsKLSAgICAgICAgICAgICAgICAgc2hfdi0+YmloLT5iaUNvbXByZXNzaW9uID0gc2hfdi0+Zm9ybWF0ID0gRk9VUkNDX1RIRU9SQTsKLS0gICAgICAgICAgICAgICAgc2hfdi0+ZnBzID0gKChkb3VibGUpaW5mLmZwc19udW1lcmF0b3IpIC8gKGRvdWJsZSlpbmYuZnBzX2Rlbm9taW5hdG9yOwotLSAgICAgICAgICAgICAgICBzaF92LT5mcmFtZXRpbWUgPSAoKGRvdWJsZSlpbmYuZnBzX2Rlbm9taW5hdG9yKSAvIChkb3VibGUpaW5mLmZwc19udW1lcmF0b3I7Ci0tICAgICAgICAgICAgICAgIHNoX3YtPmRpc3BfdyA9IHNoX3YtPmJpaC0+YmlXaWR0aCAgPSBpbmYuZnJhbWVfd2lkdGg7Ci0tICAgICAgICAgICAgICAgIHNoX3YtPmRpc3BfaCA9IHNoX3YtPmJpaC0+YmlIZWlnaHQgPSBpbmYuZnJhbWVfaGVpZ2h0OwotKyAgICAgICAgICAgICAgICBzaF92LT5mcHMgPSAoKGRvdWJsZSl0aS5mcHNfbnVtZXJhdG9yKSAvIChkb3VibGUpdGkuZnBzX2Rlbm9taW5hdG9yOwotKyAgICAgICAgICAgICAgICBzaF92LT5mcmFtZXRpbWUgPSAoKGRvdWJsZSl0aS5mcHNfZGVub21pbmF0b3IpIC8gKGRvdWJsZSl0aS5mcHNfbnVtZXJhdG9yOwotKyAgICAgICAgICAgICAgICBzaF92LT5pX2JwcyAgPSB0aS50YXJnZXRfYml0cmF0ZSAvIDg7Ci0rICAgICAgICAgICAgICAgIHNoX3YtPmRpc3BfdyA9IHNoX3YtPmJpaC0+YmlXaWR0aCAgPSB0aS5mcmFtZV93aWR0aDsKLSsgICAgICAgICAgICAgICAgc2hfdi0+ZGlzcF9oID0gc2hfdi0+YmloLT5iaUhlaWdodCA9IHRpLmZyYW1lX2hlaWdodDsKLSAgICAgICAgICAgICAgICAgc2hfdi0+YmloLT5iaUJpdENvdW50ICA9IDI0OwotICAgICAgICAgICAgICAgICBzaF92LT5iaWgtPmJpUGxhbmVzICAgID0gMzsKLSAgICAgICAgICAgICAgICAgc2hfdi0+YmloLT5iaVNpemVJbWFnZSA9ICgoc2hfdi0+YmloLT5iaUJpdENvdW50IC8gOCkgKiBzaF92LT5iaWgtPmJpV2lkdGggKiBzaF92LT5iaWgtPmJpSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgb2dnX2QtPnN1YnNbb2dnX2QtPm51bV9zdWJdLnNhbXBsZXJhdGUgICAgICAgICAgICAgICA9IHNoX3YtPmZwczsKLSAgICAgICAgICAgICAgICAgb2dnX2QtPnN1YnNbb2dnX2QtPm51bV9zdWJdLnRoZW9yYSAgICAgICAgICAgICAgICAgICA9IDE7Ci0tICAgICAgICAgICAgICAgIG9nZ19kLT5zdWJzW29nZ19kLT5udW1fc3ViXS5rZXlmcmFtZV9mcmVxdWVuY3lfZm9yY2UgPSBpbmYua2V5ZnJhbWVfZnJlcXVlbmN5X2ZvcmNlOwotKyAgICAgICAgICAgICAgICBvZ2dfZC0+c3Vic1tvZ2dfZC0+bnVtX3N1Yl0ua2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdCAgID0gdGkua2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdDsKLSAgICAgICAgICAgICAgICAgb2dnX2QtPnN1YnNbb2dnX2QtPm51bV9zdWJdLmlkICAgICAgICAgICAgICAgICAgICAgICA9IG5fdmlkZW87Ci0gICAgICAgICAgICAgICAgIG5fdmlkZW8rKzsKLSAgICAgICAgICAgICAgICAgbXBfbXNnKE1TR1RfREVNVVgsIE1TR0xfSU5GTywKLSAgICAgICAgICAgICAgICAgICAgICAgICJbT2dnXSBzdHJlYW0gJWQ6IHZpZGVvIChUaGVvcmEgdiVkLiVkLiVkKSwgLXZpZCAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9nZ19kLT5udW1fc3ViLAotLSAgICAgICAgICAgICAgICAgICAgICAgKGludClpbmYudmVyc2lvbl9tYWpvciwKLS0gICAgICAgICAgICAgICAgICAgICAgIChpbnQpaW5mLnZlcnNpb25fbWlub3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAoaW50KWluZi52ZXJzaW9uX3N1Ym1pbm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgKGludCl0aS52ZXJzaW9uX21ham9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgKGludCl0aS52ZXJzaW9uX21pbm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgKGludCl0aS52ZXJzaW9uX3N1Ym1pbm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgbl92aWRlbyAtIDEpOwotICAgICAgICAgICAgICAgICBpZiAobXBfbXNnX3Rlc3QoTVNHVF9IRUFERVIsIE1TR0xfVikpCi0gICAgICAgICAgICAgICAgICAgICBwcmludF92aWRlb19oZWFkZXIoc2hfdi0+YmloLCBNU0dMX1YpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB0aGVvcmFfY29tbWVudF9jbGVhcigmY2MpOwotLSAgICAgICAgICAgIHRoZW9yYV9pbmZvX2NsZWFyKCZpbmYpOwotKyAgICAgICAgICAgIHRoX2NvbW1lbnRfY2xlYXIoJnRjKTsKLSsgICAgICAgICAgICB0aF9pbmZvX2NsZWFyKCZ0aSk7Ci0rICAgICAgICAgICAgdGhfc2V0dXBfZnJlZSh0c2kpOwotICNlbmRpZiAvKiBDT05GSUdfT0dHVEhFT1JBICovCi0gICAgICAgICB9IGVsc2UgaWYgKHBhY2suYnl0ZXMgPj0gNCAmJiAhc3RybmNtcCAoJnBhY2sucGFja2V0WzBdLCAiZkxhQyIsIDQpKSB7Ci0gICAgICAgICAgICAgc2hfYSA9IG5ld19zaF9hdWRpb19haWQoZGVtdXhlciwgb2dnX2QtPm51bV9zdWIsIG5fYXVkaW8pOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXBsYXllcjJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE0YWUyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXBsYXllcjJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBTb3VyY2UgbXVsdGltZWRpYSBwbGF5ZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wbGF5ZXJocS5odS8iCi1ERVBFTkRTID0gImxpYnZweCBsaWJkdmRyZWFkIGxpYnRoZW9yYSB2aXJ0dWFsL2xpYnNkbCBmZm1wZWcgeHNwIHpsaWIgXAotICAgICAgICAgICBsaWJwbmcganBlZyBsaWJhNTIgZnJlZXR5cGUgZm9udGNvbmZpZyBhbHNhLWxpYiBsem8gbmN1cnNlcyBcCi0gICAgICAgICAgIGxpYnh2IHZpcnR1YWwvbGlieDExIGxpYmFzcyBzcGVleCBmYWFkMiBsaWJ4c2NybnNhdmVyIgotCi1SREVQRU5EU18ke1BOfSA9ICJtcGxheWVyLWNvbW1vbiIKLVBST1ZJREVTID0gIm1wbGF5ZXIiCi1SUFJPVklERVNfJHtQTn0gPSAibXBsYXllciIKLVJDT05GTElDVFNfJHtQTn0gPSAibXBsYXllciIKLQotIyBEZXBlbmRzIG9uIHhzcCwgbGlieHYsIHZpcnR1YWwvbGlieDExLCBsaWJ4c2NybnNhdmVyCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi0jIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBsaWJwb3N0cHJvYy9saWJhdiB3aGljaCBoYXMgY29tbWVyY2lhbCBmbGFnCi1MSUNFTlNFX0ZMQUdTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Bvc3Rwcm9jJywgJ2NvbW1lcmNpYWwnLCAnJywgZCl9IgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vcmVwby5vci5jei9tcGxheWVyLmdpdCBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWRvbi10LWRpc2FibGUtQVNTLXN1cHBvcnQtd2hlbi1leHBsaWNpdGx5LS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZGVtdXhfb2dnLXBhcnRpYWxseS1wb3J0LWxpYnRoZW9yYS1nbHVlLWNvZGUtdG8tVGhlby5wYXRjaCBcCi0iCi0KLVNSQ1JFViA9ICIyYzM3OGM3MWE0ZDliMWRmMzgyZGI5YWE3ODdiNjQ2NjI4YjRlM2Y5IgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotUFYgPSAiMi4wK2dpdHIke1NSQ1BWfSIKLVBSID0gInIxMyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tcGxheWVyICR7bGliZGlyfSAvdXNyL2V0Yy9tcGxheWVyLyIKLUNPTkZGSUxFU18ke1BOfSArPSAiL3Vzci9ldGMvbXBsYXllci9pbnB1dC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgL3Vzci9ldGMvbXBsYXllci9leGFtcGxlLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAvdXNyL2V0Yy9tcGxheWVyL2NvZGVjcy5jb25mIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tcHJlZml4PS91c3IgXAotICAgIC0tbWFuZGlyPSR7bWFuZGlyfSBcCi0gICAgLS10YXJnZXQ9JHtTSU1QTEVfVEFSR0VUX1NZU30gXAotICAgIFwKLSAgICAtLWRpc2FibGUtbGlyYyBcCi0gICAgLS1kaXNhYmxlLWxpcmNjIFwKLSAgICAtLWRpc2FibGUtam95c3RpY2sgXAotICAgIC0tZGlzYWJsZS12bSBcCi0gICAgLS1kaXNhYmxlLXhmODZrZXlzeW0gXAotICAgIC0tZW5hYmxlLXR2IFwKLSAgICAtLWVuYWJsZS10di12NGwyIFwKLSAgICAtLWRpc2FibGUtdHYtYnNkYnQ4NDggXAotICAgIC0tZW5hYmxlLXJ0YyBcCi0gICAgLS1lbmFibGUtbmV0d29ya2luZyBcCi0gICAgLS1kaXNhYmxlLXNtYiBcCi0gICAgLS1kaXNhYmxlLWR2ZG5hdiBcCi0gICAgLS1lbmFibGUtZHZkcmVhZCBcCi0gICAgLS1kaXNhYmxlLWR2ZHJlYWQtaW50ZXJuYWwgXAotICAgIC0tZGlzYWJsZS1saWJkdmRjc3MtaW50ZXJuYWwgXAotICAgIC0tZGlzYWJsZS1lbmNhIFwKLSAgICAtLWRpc2FibGUtZnRwIFwKLSAgICAtLWRpc2FibGUtdnN0cmVhbSBcCi0gICAgXAotICAgIC0tZGlzYWJsZS1naWYgXAotICAgIC0tZW5hYmxlLXBuZyBcCi0gICAgLS1lbmFibGUtanBlZyBcCi0gICAgLS1kaXNhYmxlLWxpYmNkaW8gXAotICAgIC0tZGlzYWJsZS1xdHggXAotICAgIC0tZGlzYWJsZS14YW5pbSBcCi0gICAgLS1kaXNhYmxlLXJlYWwgXAotICAgIC0tZGlzYWJsZS14dmlkIFwKLSAgICBcCi0gICAgLS1lbmFibGUtc3BlZXggXAotICAgIC0tZW5hYmxlLXRoZW9yYSBcCi0gICAgLS1kaXNhYmxlLWxhZHNwYSBcCi0gICAgLS1kaXNhYmxlLWxpYmR2IFwKLSAgICAtLWVuYWJsZS1tYWQgXAotICAgIC0tZGlzYWJsZS14bW1zIFwKLSAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAotICAgIFwKLSAgICAtLWRpc2FibGUtZ2wgXAotICAgIC0tZW5hYmxlLXNkbCBcCi0gICAgLS1kaXNhYmxlLWNhY2EgXAotICAgIC0tZGlzYWJsZS1kaXJlY3R4IFwKLSAgICAtLWRpc2FibGUtZHZiIFwKLSAgICAtLWVuYWJsZS14diBcCi0gICAgLS1kaXNhYmxlLXZtIFwKLSAgICAtLWRpc2FibGUteGluZXJhbWEgXAotICAgIC0tZW5hYmxlLXgxMSBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdGZiIFwKLSAgICAtLWRpc2FibGUtdGdhIFwKLSAgICAtLWRpc2FibGUtcG5tIFwKLSAgICAtLWRpc2FibGUtbWQ1c3VtIFwKLSAgICBcCi0gICAgLS1lbmFibGUtYWxzYSBcCi0gICAgLS1lbmFibGUtb3NzYXVkaW8gXAotICAgIC0tZGlzYWJsZS1wdWxzZSBcCi0gICAgLS1kaXNhYmxlLWphY2sgXAotICAgIC0tZGlzYWJsZS1vcGVuYWwgXAotICAgIC0tZW5hYmxlLXNlbGVjdCBcCi0gICAgLS1lbmFibGUtbGliYXNzIFwKLSAgICBcCi0gICAgLS1leHRyYS1saWJzPScgLWxYZXh0IC1sWDExIC1sdm9yYmlzIC1sdGhlb3JhZGVjIC1sYXNvdW5kICcgXAotIgotIyAtbHRoZW9yYWRlYyBpcyBtaXNzaW5nIGluOgotIyBsaWJtcGNvZGVjcy92ZF90aGVvcmEubzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBzeW1ib2wgJ3RoZW9yYV9kZWNvZGVfaW5pdEBAbGlidGhlb3JhLnNvLjEuMCcKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12NiA9ICIgLS1lbmFibGUtYXJtdjYiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3YSA9ICIgLS1lbmFibGUtYXJtdjYgLS1lbmFibGUtbmVvbiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInZvcmJpcyBwb3N0cHJvYyIKLVBBQ0tBR0VDT05GSUdbbWFkXSA9ICItLWVuYWJsZS1tYWQsLS1kaXNhYmxlLW1hZCxsaWJtYWQiCi1QQUNLQUdFQ09ORklHW2E1Ml0gPSAiLS1lbmFibGUtbGliYTUyLC0tZGlzYWJsZS1saWJhNTIsbGliYTUyIgotUEFDS0FHRUNPTkZJR1tsYW1lXSA9ICIsLGxhbWUiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICIsLS1kaXNhYmxlLWxpYnBvc3Rwcm9jLGxpYnBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1t2b3JiaXNdID0gIiwtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLS1kaXNhYmxlLXBvcnRhdWRpbyxwb3J0YXVkaW8tdjE5IgotUEFDS0FHRUNPTkZJR1ttcGcxMjNdID0gIiwtLWRpc2FibGUtbXBnMTIzLG1wZzEyMyIKLVBBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdID0gIi0tZW5hYmxlLWRpcmVjdGZiLC0tZGlzYWJsZS1kaXJlY3RmYixkaXJlY3RmYiIKLQotRlVMTF9PUFRJTUlaQVRJT04gPSAiLWZleHBlbnNpdmUtb3B0aW1pemF0aW9ucyAtZm9taXQtZnJhbWUtcG9pbnRlciAtZnJlbmFtZS1yZWdpc3RlcnMgLU80IC1mZmFzdC1tYXRoIgotQlVJTERfT1BUSU1JWkFUSU9OID0gIiR7RlVMTF9PUFRJTUlaQVRJT059IgotCi1DRkxBR1NfYXBwZW5kID0gIiAtSSR7U30vbGliZHZkcmVhZDQgIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgc2VkIC1pICdzfC91c3IvaW5jbHVkZXwke1NUQUdJTkdfSU5DRElSfXxnJyAke1N9L2NvbmZpZ3VyZQotICAgIHNlZCAtaSAnc3wvdXNyL2xpYnwke1NUQUdJTkdfTElCRElSfXxnJyAke1N9L2NvbmZpZ3VyZQotICAgIHNlZCAtaSAnc3wvdXNyL1xTKmluY2x1ZGVbXHcvXSp8fGcnICR7U30vY29uZmlndXJlCi0gICAgc2VkIC1pICdzfC91c3IvXFMqbGliW1x3L10qfHxnJyAke1N9L2NvbmZpZ3VyZQotICAgIHNlZCAtaSAnc3xfaW5zdGFsbF9zdHJpcD0iLXMifF9pbnN0YWxsX3N0cmlwPSIifGcnICR7U30vY29uZmlndXJlCi0gICAgc2VkIC1pICdzfEhPU1RfQ0N8QlVJTERfQ0N8JyAke1N9L01ha2VmaWxlCi0gICAgc2VkIC1pICdzfGV4dHJhX2NmbGFncz0iLUkuICRleHRyYV9jZmxhZ3MifGV4dHJhX2NmbGFncz0iLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0vZGlyZWN0ZmIgJGV4dHJhX2NmbGFncyJ8ZycgJHtTfS9jb25maWd1cmUKLSAgICBleHBvcnQgU0lNUExFX1RBUkdFVF9TWVM9IiQoZWNobyAke1RBUkdFVF9TWVN9IHwgc2VkIHM6JHtUQVJHRVRfVkVORE9SfTo6ZykiCi0gICAgLi9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci0KLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1uby1tYW4KLSAgICBpbnN0YWxsIC1kICR7RH0vdXNyL2V0Yy9tcGxheWVyCi0gICAgaW5zdGFsbCAke1N9L2V0Yy9pbnB1dC5jb25mICR7RH0vdXNyL2V0Yy9tcGxheWVyLwotICAgIGluc3RhbGwgJHtTfS9ldGMvZXhhbXBsZS5jb25mICR7RH0vdXNyL2V0Yy9tcGxheWVyLwotICAgIGluc3RhbGwgJHtTfS9ldGMvY29kZWNzLmNvbmYgJHtEfS91c3IvZXRjL21wbGF5ZXIvCi0gICAgWyAtZSAke0R9L3Vzci9saWIgXSAmJiBybWRpciAke0R9L3Vzci9saWIKLX0KLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNDA3MzQvCi1QTkJMQUNLTElTVFttcGxheWVyMl0gPz0gIk5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudGx5IHVzZWQgZmZtcGVnIDMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2LzAwMDEtRml4LWJ1aWxkLXdpdGgtSEFWRV9HTC0wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdi8wMDAxLUZpeC1idWlsZC13aXRoLUhBVkVfR0wtMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIyYjUzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2LzAwMDEtRml4LWJ1aWxkLXdpdGgtSEFWRV9HTC0wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAyMTJmNmM4MjA2YmQ0ZGNjN2Q4OTcwYzVmMTYzMjgyM2FlNGU3ODNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBGb3JuZXkgPG1mb3JuZXlAbWZvcm5leS5vcmc+Ci1EYXRlOiBTdW4sIDEyIEZlYiAyMDE3IDIzOjAxOjIxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEhBVkVfR0w9PTAKLQotdmlkZW8vb3V0L29wZW5nbC9od2RlYy5oIGluY2x1ZGVzIHZpZGVvL291dC9vcGVuZ2wvY29tbW9uLmgsIHdoaWNoIHRyaWVzCi10byBpbmNsdWRlIG9wZW5nbCBoZWFkZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBvcHRpb25zL29wdGlvbnMuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vcHRpb25zL29wdGlvbnMuYyBiL29wdGlvbnMvb3B0aW9ucy5jCi1pbmRleCBiNzExMTU2Li4wYmIzNmFkIDEwMDY0NAotLS0tIGEvb3B0aW9ucy9vcHRpb25zLmMKLSsrKyBiL29wdGlvbnMvb3B0aW9ucy5jCi1AQCAtNDAsNyArNDAsNiBAQAotICNpbmNsdWRlICJzdHJlYW0vc3RyZWFtLmgiCi0gI2luY2x1ZGUgInZpZGVvL2NzcHV0aWxzLmgiCi0gI2luY2x1ZGUgInZpZGVvL2h3ZGVjLmgiCi0tI2luY2x1ZGUgInZpZGVvL291dC9vcGVuZ2wvaHdkZWMuaCIKLSAjaW5jbHVkZSAidmlkZW8vaW1hZ2Vfd3JpdGVyLmgiCi0gI2luY2x1ZGUgInN1Yi9vc2QuaCIKLSAjaW5jbHVkZSAiYXVkaW8vZmlsdGVyL2FmLmgiCi1AQCAtNTMsNiArNTIsMTAgQEAKLSAjaW5jbHVkZSAidmlkZW8vb3V0L2RybV9jb21tb24uaCIKLSAjZW5kaWYKLSAKLSsjaWYgSEFWRV9HTAotKyNpbmNsdWRlICJ2aWRlby9vdXQvb3BlbmdsL2h3ZGVjLmgiCi0rI2VuZGlmCi0rCi0gZXh0ZXJuIGNvbnN0IGNoYXIgbXBfaGVscF90ZXh0W107Ci0gCi0gc3RhdGljIHZvaWQgcHJpbnRfdmVyc2lvbihzdHJ1Y3QgbXBfbG9nICpsb2cpCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZGEyMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgotREVTQ1JJUFRJT04gPSAibXB2IGlzIGEgZm9yayBvZiBtcGxheWVyMiBhbmQgTVBsYXllci4gSXQgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgZm9ybWVyIHByb2plY3RzIHdoaWxlIGludHJvZHVjaW5nIG1hbnkgbW9yZS4iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wdi5pby8iCi1ERVBFTkRTID0gInpsaWIgZmZtcGVnIGpwZWcgdmlydHVhbC9saWJ4MTEgeHNwIGxpYnh2IFwKLSAgICAgICAgICAgbGlieHNjcm5zYXZlciBsaWJ2NGwgbGlieGluZXJhbWEgXAotIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxZjFjYjg3MGMxY2MyZDMxMzUxYTRkMjU5NTQ0MWNiIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtuYW1lPW1wdiBcCi0gICAgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcvfnRuYWd5L3JlbGVhc2Uvd2FmLTEuOC4xMjtuYW1lPXdhZjtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1IQVZFX0dMLTAucGF0Y2ggXAotIgotU1JDX1VSSVttcHYubWQ1c3VtXSA9ICI1Yzg1ZDExNjM5MTFlNDkzMTVhNWJmMWNhMWZhZTEzZCIKLVNSQ19VUklbbXB2LnNoYTI1NnN1bV0gPSAiYTQxODU0ZmEwYWMzNWI5YzMwOWFkNjkyYWFlZTY3YzhkNDQ5NWMzNTQ2ZjExY2I0Y2RkMGExMjQxOTVkM2YxNSIKLVNSQ19VUklbd2FmLm1kNXN1bV0gPSAiY2VmNGVlODIyMDZiMTg0M2RiMDgyZDBiMDUwNmJmNzEiCi1TUkNfVVJJW3dhZi5zaGEyNTZzdW1dID0gIjAxYmYyYmVhYjIxMDZkMTU1ODgwMGM4NzA5YmMyYzhlNDk2ZDNkYTRhMmNhMzQzZmUwOTFmMjJmY2E2MGM5OGIiCi0KLWluaGVyaXQgd2FmIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgTm90ZTogYm90aCBsdWEgYW5kIGxpYmFzcyBhcmUgcmVxdWlyZWQgdG8gZ2V0IG9uLXNjcmVlbi1kaXNwbGF5IChjb250cm9scykKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIGx1YSBcCi0gICAgbGliYXNzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSxsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0sdmlydHVhbC9tZXNhIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0tZW5hYmxlLWx1YSwtLWRpc2FibGUtbHVhLGx1YSBsdWFqaXQiCi1QQUNLQUdFQ09ORklHW2xpYmFzc10gPSAiLS1lbmFibGUtbGliYXNzLC0tZGlzYWJsZS1saWJhc3MsbGliYXNzIgotUEFDS0FHRUNPTkZJR1tsaWJhcmNoaXZlXSA9ICItLWVuYWJsZS1saWJhcmNoaXZlLC0tZGlzYWJsZS1saWJhcmNoaXZlLGxpYmFyY2hpdmUiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssIC0tZGlzYWJsZS1qYWNrLCBqYWNrIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksIC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKLVBBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LCAtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsIC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQgbGlieGtiY29tbW9uIgotCi1TSU1QTEVfVEFSR0VUX1NZUyA9ICIke0AnJHtUQVJHRVRfU1lTfScucmVwbGFjZSgnJHtUQVJHRVRfVkVORE9SfScsICcnKX0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS10YXJnZXQ9JHtTSU1QTEVfVEFSR0VUX1NZU30gXAotICAgIC0tY29uZmRpcj0ke3N5c2NvbmZkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfSBcCi0gICAgLS1kaXNhYmxlLW1hbnBhZ2UtYnVpbGQgXAotICAgIC0tZGlzYWJsZS1nbCBcCi0gICAgLS1kaXNhYmxlLWxpYnNtYmNsaWVudCBcCi0gICAgLS1kaXNhYmxlLWVuY29kaW5nIFwKLSAgICAtLWRpc2FibGUtbGliYmx1cmF5IFwKLSAgICAtLWRpc2FibGUtZHZkcmVhZCBcCi0gICAgLS1kaXNhYmxlLWR2ZG5hdiBcCi0gICAgLS1kaXNhYmxlLWNkZGEgXAotICAgIC0tZGlzYWJsZS11Y2hhcmRldCBcCi0gICAgLS1kaXNhYmxlLXJ1YmJlcmJhbmQgXAotICAgIC0tZGlzYWJsZS1sY21zMiBcCi0gICAgLS1kaXNhYmxlLXZhcG91cnN5bnRoIFwKLSAgICAtLWRpc2FibGUtdmFwb3Vyc3ludGgtbGF6eSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBsbiAtc2Ygd2FmLTEuOC4xMiAke1N9L3dhZgotICAgIGNobW9kICt4ICR7U30vd2FmCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGQ5MmEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKQEAgLTAsMCArMSw3MiBAQAorU1VNTUFSWSA9ICJPcGVuIFNvdXJjZSBtdWx0aW1lZGlhIHBsYXllciIKK0RFU0NSSVBUSU9OID0gIm1wdiBpcyBhIGZvcmsgb2YgbXBsYXllcjIgYW5kIE1QbGF5ZXIuIEl0IHNoYXJlcyBzb21lIGZlYXR1cmVzIHdpdGggdGhlIGZvcm1lciBwcm9qZWN0cyB3aGlsZSBpbnRyb2R1Y2luZyBtYW55IG1vcmUuIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcHYuaW8vIgorREVQRU5EUyA9ICJ6bGliIGZmbXBlZyBqcGVnIHZpcnR1YWwvbGlieDExIHhzcCBsaWJ4diBcCisgICAgICAgICAgIGxpYnhzY3Juc2F2ZXIgbGlidjRsIGxpYnhpbmVyYW1hIFwKKyIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MWYxY2I4NzBjMWNjMmQzMTM1MWE0ZDI1OTU0NDFjYiIKKworIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBmZm1wZWcgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtuYW1lPW1wdiBcCisgICAgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcvfnRuYWd5L3JlbGVhc2Uvd2FmLTEuOC4xMjtuYW1lPXdhZjtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKKyIKK1NSQ19VUklbbXB2Lm1kNXN1bV0gPSAiMDM4ZDBiNjYwZGUwN2ZmNjQ1YWQ2YTc0MTcwNGVjYWIiCitTUkNfVVJJW21wdi5zaGEyNTZzdW1dID0gImRhZjNlZjM1OGQ1ZjI2MGYyMjY5ZjdjYWFiY2UyN2Y0NDZjMjkxNDU3ZWMzMzAwNzcxNTIxMjcxMzNiNzFiNDYiCitTUkNfVVJJW3dhZi5tZDVzdW1dID0gImNlZjRlZTgyMjA2YjE4NDNkYjA4MmQwYjA1MDZiZjcxIgorU1JDX1VSSVt3YWYuc2hhMjU2c3VtXSA9ICIwMWJmMmJlYWIyMTA2ZDE1NTg4MDBjODcwOWJjMmM4ZTQ5NmQzZGE0YTJjYTM0M2ZlMDkxZjIyZmNhNjBjOThiIgorCitpbmhlcml0IHdhZiBwa2djb25maWcgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICBsdWEgXAorICAgIGxpYmFzcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sbGliZHJtIgorUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbWVzYSIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLWVuYWJsZS1sdWEsLS1kaXNhYmxlLWx1YSxsdWEgbHVhaml0IgorUEFDS0FHRUNPTkZJR1tsaWJhc3NdID0gIi0tZW5hYmxlLWxpYmFzcywtLWRpc2FibGUtbGliYXNzLGxpYmFzcyIKK1BBQ0tBR0VDT05GSUdbbGliYXJjaGl2ZV0gPSAiLS1lbmFibGUtbGliYXJjaGl2ZSwtLWRpc2FibGUtbGliYXJjaGl2ZSxsaWJhcmNoaXZlIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLCAtLWRpc2FibGUtamFjaywgamFjayIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLCAtLWRpc2FibGUtdmFhcGksbGlidmEiCitQQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwgLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLCAtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIGxpYnhrYmNvbW1vbiIKKworU0lNUExFX1RBUkdFVF9TWVMgPSAiJHtAJyR7VEFSR0VUX1NZU30nLnJlcGxhY2UoJyR7VEFSR0VUX1ZFTkRPUn0nLCAnJyl9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0tdGFyZ2V0PSR7U0lNUExFX1RBUkdFVF9TWVN9IFwKKyAgICAtLWNvbmZkaXI9JHtzeXNjb25mZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAorICAgIC0tZGlzYWJsZS1tYW5wYWdlLWJ1aWxkIFwKKyAgICAtLWRpc2FibGUtZ2wgXAorICAgIC0tZGlzYWJsZS1saWJzbWJjbGllbnQgXAorICAgIC0tZGlzYWJsZS1lbmNvZGluZyBcCisgICAgLS1kaXNhYmxlLWxpYmJsdXJheSBcCisgICAgLS1kaXNhYmxlLWR2ZHJlYWQgXAorICAgIC0tZGlzYWJsZS1kdmRuYXYgXAorICAgIC0tZGlzYWJsZS1jZGRhIFwKKyAgICAtLWRpc2FibGUtdWNoYXJkZXQgXAorICAgIC0tZGlzYWJsZS1ydWJiZXJiYW5kIFwKKyAgICAtLWRpc2FibGUtbGNtczIgXAorICAgIC0tZGlzYWJsZS12YXBvdXJzeW50aCBcCisgICAgLS1kaXNhYmxlLXZhcG91cnN5bnRoLWxhenkgXAorICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgbG4gLXNmIHdhZi0xLjguMTIgJHtTfS93YWYKKyAgICBjaG1vZCAreCAke1N9L3dhZgorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTIuMy5iYgppbmRleCBiNDA4YmIwLi41N2NmYjEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlsc18xLjEyLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHNfMS4xMi4zLmJiCkBAIC03LDYgKzcsOCBAQAogREVQRU5EUyA9ICJqcGVnIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAndmlydHVhbC9saWJ4MTEnLCAnJywgZCl9IgogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHhfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4XzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg4MThlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHhfMS41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlZQWCBtdWx0aS1mb3JtYXQgY29kZWMiCi1ERVNDUklQVElPTiA9ICJUaGUgQlNELWxpY2Vuc2VkIGxpYnZweCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgZW4tIGFuZCBkZWNvZGVycyBmb3IgVlA4IGFuZCBWUDkgYml0c3RyZWFtcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy9jb2RlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYm0vaXNzdWVzL2xpc3QiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiQlNEIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNWIwNDc1NTAxNWJlOTAxNzQ0YTc4Y2MzMGQzOTBkNCIKLQotU1JDX1VSSSArPSAiaHR0cDovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJtLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICAgZmlsZTovL2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDllNTlkZDE4NGNhYTI1NTg4NjY4M2ZhY2VhNTZmY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzA2ZDY3OTA4NjI1Njc1ZjhlMTg4ZDM3YTgxZmJmYWZkZjUwNjhiMDlkOWFhNTI3MDJiNmZiZTYwMWM3Njc5NyIKLQotIyBmZm1wZWcgbGlua3Mgd2l0aCB0aGlzIGFuZCBmYWlscwotIyBzeXNyb290cy9hcm12NHQtb2UtbGludXgtZ251ZWFiaS91c3IvbGliL2xpYnZweC5hKHZweF9lbmNvZGVyLmMubykoLnRleHQrMHhjNCk6IHVucmVzb2x2YWJsZSBSX0FSTV9USE1fQ0FMTCByZWxvY2F0aW9uIGFnYWluc3Qgc3ltYm9sIGBtZW1jcHlAQEdMSUJDXzIuNCcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1DRkxBR1MgKz0gIi1mUElDIgotCi1leHBvcnQgQ0MKLWV4cG9ydCBMRCA9ICIke0NDfSIKLQotVlBYVEFSR0VUX2FybXY1dGUgPSAiYXJtdjV0ZS1saW51eC1nY2MiCi1WUFhUQVJHRVRfYXJtdjYgPSAiYXJtdjYtbGludXgtZ2NjIgotVlBYVEFSR0VUX2FybXY3YSA9ICJhcm12Ny1saW51eC1nY2MiCi1WUFhUQVJHRVQgPz0gImdlbmVyaWMtZ251IgotCi1DT05GSUdVUkVPUFRTID0gIiBcCi0gICAgLS10YXJnZXQ9JHtWUFhUQVJHRVR9IFwKLSAgICAtLWVuYWJsZS12cDkgXAotICAgIC0tZW5hYmxlLWxpYnMgXAotICAgIC0tZGlzYWJsZS1pbnN0YWxsLWRvY3MgXAotICAgIC0tZGlzYWJsZS1zdGF0aWMgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2l6ZS1saW1pdD0xNjM4NHgxNjM4NCBcCi0iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4XzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweF8xLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTdjZGExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweF8xLjYuMS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIlZQWCBtdWx0aS1mb3JtYXQgY29kZWMiCitERVNDUklQVElPTiA9ICJUaGUgQlNELWxpY2Vuc2VkIGxpYnZweCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgZW4tIGFuZCBkZWNvZGVycyBmb3IgVlA4IGFuZCBWUDkgYml0c3RyZWFtcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy9jb2RlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYm0vaXNzdWVzL2xpc3QiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNWIwNDc1NTAxNWJlOTAxNzQ0YTc4Y2MzMGQzOTBkNCIKKworU1JDX1VSSSArPSAiaHR0cDovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICAgZmlsZTovL2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYTE5NTE4YzgxMTFmYTkzYmRhYmRkODUyNTkxNjI2MTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMyYzBjMmE5N2ZiYTk0NzQ5NDNiZTM0ZWUzOTMzN2RlZTc1Njc4MGZjMTI4NzBiYTFkYzY4MzcyNTg2YTgxOSIKKworIyBmZm1wZWcgbGlua3Mgd2l0aCB0aGlzIGFuZCBmYWlscworIyBzeXNyb290cy9hcm12NHQtb2UtbGludXgtZ251ZWFiaS91c3IvbGliL2xpYnZweC5hKHZweF9lbmNvZGVyLmMubykoLnRleHQrMHhjNCk6IHVucmVzb2x2YWJsZSBSX0FSTV9USE1fQ0FMTCByZWxvY2F0aW9uIGFnYWluc3Qgc3ltYm9sIGBtZW1jcHlAQEdMSUJDXzIuNCcKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitDRkxBR1MgKz0gIi1mUElDIgorCitleHBvcnQgQ0MKK2V4cG9ydCBMRCA9ICIke0NDfSIKKworVlBYVEFSR0VUX2FybXY1dGUgPSAiYXJtdjV0ZS1saW51eC1nY2MiCitWUFhUQVJHRVRfYXJtdjYgPSAiYXJtdjYtbGludXgtZ2NjIgorVlBYVEFSR0VUX2FybXY3YSA9ICJhcm12Ny1saW51eC1nY2MiCitWUFhUQVJHRVQgPz0gImdlbmVyaWMtZ251IgorCitDT05GSUdVUkVPUFRTID0gIiBcCisgICAgLS10YXJnZXQ9JHtWUFhUQVJHRVR9IFwKKyAgICAtLWVuYWJsZS12cDkgXAorICAgIC0tZW5hYmxlLWxpYnMgXAorICAgIC0tZGlzYWJsZS1pbnN0YWxsLWRvY3MgXAorICAgIC0tZGlzYWJsZS1zdGF0aWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tc2l6ZS1saW1pdD0xNjM4NHgxNjM4NCBcCisiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2ZveHRyb3RncHMvZm94dHJvdGdwc18xLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZm94dHJvdGdwcy9mb3h0cm90Z3BzXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTFjYmNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZm94dHJvdGdwcy9mb3h0cm90Z3BzXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJGb3h0cm90R1BTIGlzIGEgbWFwIGFuZCBHUFMgYXBwbGljYXRpb24gdXNpbmcgT3BlblN0cmVldE1hcCIKLUFVVEhPUiA9ICJKb3NodWEgSnVkc29uIFJvc2VuIDxyb3p6aW5AZ2Vla3NwYWNlLmNvbT4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZveHRyb3RncHMub3JnLyIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9ucyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLURFUEVORFMgPSAiY3VybCBndGsrIGxpYmdsYWRlIHNxbGl0ZTMgbGliZXhpZiBncHNkIGJsdWV6NCBpbnRsdG9vbC1uYXRpdmUiCi0KLVBOQkxBQ0tMSVNUW2ZveHRyb3RncHNdID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV6NScsICdibHVlejUgY29uZmxpY3RzIHdpdGggYmx1ZXo0IGFuZCBibHVlejUgaXMgc2VsZWN0ZWQgaW4gRElTVFJPX0ZFQVRVUkVTJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZveHRyb3RncHMub3JnL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2Nzc3ZDQ0OGVlOWQzYmExOTVmOWQyNmVhOTBlMzE2MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTk3MDYyODU1MTA1NTRjYzA4MTNhYzkyNTIyZTBkMTY3MmIwZGRiMDY1MzA3YmZhY2ZjZmYzYzMyOGY2YWRiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBnY29uZgotCi1QUiA9ICJyMiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgaWYgWyAtZiAke1N9L2NvbmZpZ3VyZS5pbiBdIDsgdGhlbgotICAgIG12ICR7U30vY29uZmlndXJlLmluICR7U30vY29uZmlndXJlLmFjCi0gICAgZmkKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbiBwZXJsIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3BzZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2RhbC9nZGFsXzEuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2RhbC9nZGFsXzEuMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU4MjFiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dkYWwvZ2RhbF8xLjExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJHREFMIGlzIGEgdHJhbnNsYXRvciBsaWJyYXJ5IGZvciByYXN0ZXIgZ2Vvc3BhdGlhbCBkYXRhIGZvcm1hdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdkYWwub3JnLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTA5NTJlMTc5NjlmYWIxMjIyNzA5NmI1MjI4ZjIzMTQ5IgotCi1ERVBFTkRTID0gInByb2ogc3FsaXRlMyB0aWZmIGpzb24tYyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvZ2RhbC8ke1BWfS8ke0JQfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZTEyNmQ3YzY2MDU2OTFkMzhmM2U3MWI5NDVmNWM3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGUxMDQyY2ZmMTVhNzEwMzg0NTlhMjk5NzMyZmIzNDI0MjhhZWE5OTEyZjMyZGYzMGM4NTc5MGZjYWI2MzAyIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcGVybCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXBocCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXJ1YnkgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1weXRob24gXAotICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ3Jhc3MgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJncmFzcyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWNmaXRzaW8gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1kZHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1ndGEgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wY2lkc2sgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vZ2RpIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm1lIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtaGRmNCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWhkZjUgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wZyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWpwZWcxMiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW9nZGkgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1uZXRjZGYgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuanBlZyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWZnZGIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1lY3cgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1rYWthZHUgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1tcnNpZCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWpwMm1yc2lkIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbXJzaWRfbGlkYXIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1tc2cgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1ic2IgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1ncmliIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbXlzcWwgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1pbmdyZXMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vZGJjIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZG9kc19yb290IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQteG1sMiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNwYXRpYWxpdGUgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wY3JlIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZHdnZGlyZWN0IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZHdnZGlyZWN0IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtaWRiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2RlIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2RlLXZlcnNpb24gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1lcHNpbG9uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW9wZW5jbCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW9wZW5jbC1pbmNsdWRlIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtb3BlbmNsLWxpYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWZyZWV4bCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXBhbSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXBvcHBsZXIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wb2RvZm8gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wb2RvZm8tbGliIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcG9kb2ZvLWV4dHJhLWxpYi1mb3ItdGVzdCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN0YXRpY19wcm9qNCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXBlcmwgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1waHAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1ydWJ5IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamF2YSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW1kYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWp2bS1saWIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1qdm0tbGliLWFkZC1ycGF0aCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXJhc2RhbWFuIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYXJtYWRpbGxvIFwKLSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXBjcmFzdGVyPWludGVybmFsIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZ2VvdGlmZj1pbnRlcm5hbCBcCi0gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWxpYnRpZmY9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbGlianNvbi1jPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWV4cGF0PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0iCi0KLUVYVFJBX09FTUFLRSArPSAiSU5TVF9EQVRBPSIke2RhdGFkaXJ9L2dkYWwiIgotCi1QQUNLQUdFQ09ORklHID89ICJnZW9zIHBuZyBqYXNwZXIiCi1QQUNLQUdFQ09ORklHW2dlb3NdID0gIi0td2l0aC1nZW9zLC0td2l0aG91dC1nZW9zLGdlb3MiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0td2l0aC1saWJsem1hLC0td2l0aG91dC1saWJsem1hLHh6IgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2dpZl0gPSAiLS13aXRoLWdpZiwtLXdpdGhvdXQtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWpwZWcsLS13aXRob3V0LWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbel0gPSAiLS13aXRoLWxpYnosLS13aXRob3V0LWxpYnosemxpYiIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtY3VybCwtLXdpdGhvdXQtY3VybCxjdXJsIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgIyBUaGUgY29uZmlndXJlIHNjcmlwdCBoYXMgbWFueSBoYXJkY29kZWQgcGF0aHMgdG8gc2VhcmNoCi0gICAgIyBmb3IgdGhlIGxpYnJhcnkgaGVhZGVycyB3aGVuIHVzaW5nIGV4dGVybmFsIGxpYnJhcmllcywKLSAgICAjIHdvcmthcm91bmQgaXQuCi0gICAgc2VkIC1lICdzLC91c3IvaW5jbHVkZSxOT05fRVhJU1RFTlRfRElSLGcnIFwKLSAgICAgICAgLWUgJ3MsL3Vzci9saWIsTk9OX0VYSVNURU5UX0RJUixnJyBcCi0gICAgICAgIC1pICR7U30vY29uZmlndXJlLmluCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2RhbHBsdWdpbnMiCi0KLSMgfCBnZGFsc2VydmVyLmM6MTI0OjIxOiBlcnJvcjogc3RvcmFnZSBzaXplIG9mICdzSGludHMnIGlzbid0IGtub3duCi0jIHwgICAgICBzdHJ1Y3QgYWRkcmluZm8gc0hpbnRzOwotIyB8ICAgICAgICAgICAgICAgICAgICAgIF4KLVBOQkxBQ0tMSVNUW2dkYWxdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtQ2hlY2stZm9yLV9fU1REQ19OT19BVE9NSUNTX18tYmVmb3JlLXVzaW5nLXN0ZGF0b21pYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1DaGVjay1mb3ItX19TVERDX05PX0FUT01JQ1NfXy1iZWZvcmUtdXNpbmctc3RkYXRvbWljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmFjNWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1DaGVjay1mb3ItX19TVERDX05PX0FUT01JQ1NfXy1iZWZvcmUtdXNpbmctc3RkYXRvbWljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSBjMzA3MTZiZTllNjE1NTEzZmU2Njk5M2ZkM2NkYzgxOGMzZDcwNDEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkdhcnkgRS4gTWlsbGVyIiA8Z2VtQHJlbGxpbS5jb20+Ci1EYXRlOiBTdW4sIDE1IE1hciAyMDE1IDExOjUxOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBDaGVjayBmb3IgX19TVERDX05PX0FUT01JQ1NfXyBiZWZvcmUgdXNpbmcgc3RkYXRvbWljLmgKLQotLS0tCi0gU0NvbnN0cnVjdCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NDb25zdHJ1Y3QgYi9TQ29uc3RydWN0Ci1pbmRleCBhZGY0NzNkLi41NjZjMTRhIDEwMDY0NAotLS0tIGEvU0NvbnN0cnVjdAotKysrIGIvU0NvbnN0cnVjdAotQEAgLTYzMyw3ICs2MzMsNyBAQCBlbHNlOgotICAgICAgICAgYW5ub3VuY2UoIllvdSBkbyBub3QgaGF2ZSBrZXJuZWwgQ0FOYnVzIGF2YWlsYWJsZS4iKQotICAgICAgICAgZW52WyJubWVhMjAwMCJdID0gRmFsc2UKLSAKLS0gICAgaWYgY29uZmlnLkNoZWNrSGVhZGVyKCJzdGRhdG9taWMuaCIpOgotKyAgICBpZiBub3QgY29uZmlnLkNoZWNrQ29tcGlsZXJEZWZpbmVzKCJfX1NURENfTk9fQVRPTUlDU19fIikgYW5kIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSAgICAgICAgIGNvbmZkZWZzLmFwcGVuZCgiI2RlZmluZSBIQVZFX1NUREFUT01JQ19IIDFcbiIpCi0gICAgIGVsc2U6Ci0gCWNvbmZkZWZzLmFwcGVuZCgiLyogI3VuZGVmIEhBVkVfU1REQVRPTUlDX0ggKi9cbiIpCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1JbmNsdWRlLXN0ZGF0b21pYy5oLW9ubHktaW4tQy1tb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLUluY2x1ZGUtc3RkYXRvbWljLmgtb25seS1pbi1DLW1vZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjOTE2N2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLUluY2x1ZGUtc3RkYXRvbWljLmgtb25seS1pbi1DLW1vZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDc5ZjZkOTEzMzM3ODMyNWQ3MGE5MmU2NmY3MzUyYzFiZWNlZmJiODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHbGViIFNtaXJub2ZmIDxnbGViaXVzQEZyZWVCU0Qub3JnPgotRGF0ZTogU2F0LCAxNiBNYXkgMjAxNSAwMjo0NzoyOCArMDMwMAotU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIDxzdGRhdG9taWMuaD4gb25seSBpbiBDIG1vZGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSAzLjE1Ci0KLVdpdGhvdXQgdGhpcyBidWlsZCB3aXRoIGdjYy01LjIgZmFpbHMgd2l0aDoKLXwgYXJtLW9lLWxpbnV4LWdudWVhYmktZysrIC1tYXJjaD1hcm12NHQgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbXR1bmU9YXJtOTIwdCAtLXN5c3Jvb3Q9L09FL2J1aWxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9vbS1ndGEwMiAtbyBjbG9ja19nZXR0aW1lLXF0Lm9zIC1jIC1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLS1zeXNyb290PS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIgLVdleHRyYSAtV2FsbCAtV25vLXVuaW5pdGlhbGl6ZWQgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Nhc3QtYWxpZ24gLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV3BvaW50ZXItYXJpdGggLVdyZXR1cm4tdHlwZSAtcHRocmVhZCAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1nIC1PMCAtcHRocmVhZCAtZlBJQyAtRFVTRV9RVCAtRFFUX1NIQVJFRCAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2luY2x1ZGUvZGJ1cy0xLjAgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyL3Vzci9saWIvZGJ1cy0xLjAvaW5jbHVkZSAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2luY2x1ZGUvcXQ0L1F0TmV0d29yayAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2luY2x1ZGUvcXQ0IC1JL09FL2J1aWxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9vbS1ndGEwMi91c3IvaW5jbHVkZS9xdDQvUXRDb3JlIGNsb2NrX2dldHRpbWUuYwotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gY29tcGlsZXIuaDo1MDowLAotfCAgICAgICAgICAgICAgICAgIGZyb20gY2xvY2tfZ2V0dGltZS5jOjEwOgotfCAvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS81LjIuMC9pbmNsdWRlL3N0ZGF0b21pYy5oOjQwOjk6IGVycm9yOiAnX0F0b21pYycgZG9lcyBub3QgbmFtZSBhIHR5cGUKLXwgIHR5cGVkZWYgX0F0b21pYyBfQm9vbCBhdG9taWNfYm9vbDsKLXwgICAgICAgICAgXgotLi4uLgotCi1Nb3JlIGluZm86Ci1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02MDkzMgotCi1TaWduZWQtb2ZmLWJ5OiBHYXJ5IEUuIE1pbGxlciA8Z2VtQHJlbGxpbS5jb20+Ci0tLS0KLSBjb21waWxlci5oIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbXBpbGVyLmggYi9jb21waWxlci5oCi1pbmRleCA4MzdjOTM1Li4wMzQzMGMwIDEwMDY0NAotLS0tIGEvY29tcGlsZXIuaAotKysrIGIvY29tcGlsZXIuaAotQEAgLTY2LDkgKzY2LDkgQEAKLSAgICAgfSB3aGlsZSAoMCkKLSAKLSAjaWZkZWYgSEFWRV9TVERBVE9NSUNfSAotLSNpZm5kZWYgX19DT1ZFUklUWV9fCS8qIENvdmVyaXR5IGlzIGNvbmZ1c2VkIGJ5IGEgR05VIHR5cGVkZWYgKi8KLSsjaWYgIWRlZmluZWQoX19DT1ZFUklUWV9fKSAmJiAhZGVmaW5lZChfX2NwbHVzcGx1cykKLSAjaW5jbHVkZSA8c3RkYXRvbWljLmg+Ci0tI2VuZGlmIC8qIF9fQ09WRVJJVFlfXyAqLwotKyNlbmRpZiAvKiBfX0NPVkVSSVRZX18gfHwgX19jcGx1c3BsdXMgKi8KLSAjZW5kaWYgLyogSEFWRV9TVERBVE9NSUNfSCAqLwotIAotICNpZmRlZiBIQVZFX09TQVRPTUlDX0gKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLVNDb25zdHJ1Y3QtcmVzcGVjdC1zeXNyb290LWFsc28taW4tU1BMSU5UT1BUUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1TQ29uc3RydWN0LXJlc3BlY3Qtc3lzcm9vdC1hbHNvLWluLVNQTElOVE9QVFMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MTM0ZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLVNDb25zdHJ1Y3QtcmVzcGVjdC1zeXNyb290LWFsc28taW4tU1BMSU5UT1BUUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gM2M1ZmIzYTg2OTFhYzcxMWVhOTNlZGY4ZTBiNDJiZmZjNjJiMTk3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjQgQXByIDIwMTIgMTE6NTI6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFNDb25zdHJ1Y3Q6IHJlc3BlY3Qgc3lzcm9vdCBhbHNvIGluIFNQTElOVE9QVFMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuaXMgJ0dOVXRvbycgQ2FyaWtsaSA8R05VdG9vQG5vLWxvZy5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRlciBBLiBCaWdvdCA8cGFiQHBhYmlnb3QuY29tPgotLS0tCi0gU0NvbnN0cnVjdCB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAotaW5kZXggMTRlMmY1OS4uZjBjYWZhOCAxMDA2NDQKLS0tLSBhL1NDb25zdHJ1Y3QKLSsrKyBiL1NDb25zdHJ1Y3QKLUBAIC0xNDE0LDcgKzE0MTQsMTAgQEAgZGVmIFV0aWxpdHkodGFyZ2V0LCBzb3VyY2UsIGFjdGlvbik6Ci0gIyBSZXBvcnQgc3BsaW50IHdhcm5pbmdzCi0gIyBOb3RlOiB0ZXN0X2JpdHMuYyBpcyB1bnNwbGludGFibGUgYmVjYXVzZSBvZiB0aGUgUFJJNjQgbWFjcm9zLgotICMgSWYgeW91IGdldCBwcmVwcm9jZXNzb3Igb3IgZmF0YWwgZXJyb3JzLCBhZGQgK3Nob3dzY2FuLgotLXNwbGludG9wdHMgPSAiLUkvdXNyL2luY2x1ZGUvbGlidXNiLTEuMCArcXVpZXQiCi0raWYgbm90IGVudlsnc3lzcm9vdCddOgotKyAgICBzcGxpbnRvcHRzID0gIi1JL3Vzci9pbmNsdWRlL2xpYnVzYi0xLjAgK3F1aWV0IgotK2Vsc2U6Ci0rICAgIHNwbGludG9wdHMgPSAiLUklcy91c3IvaW5jbHVkZS9saWJ1c2ItMS4wICtxdWlldCIgJSBlbnZbJ3N5c3Jvb3QnXQotICMgc3BsaW50IGRvZXMgbm90IGtub3cgYWJvdXQgbXVsdGktYXJjaCwgd29yayBhcm91bmQgdGhhdAotIG1hX3N0YXR1cywgbWEgPSBfZ2V0c3RhdHVzb3V0cHV0KCdkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9IT1NUX01VTFRJQVJDSCcpCi0gaWYgbWFfc3RhdHVzID09IDA6Ci0tLSAKLTEuOC41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3YzY3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNTQzZjc5MjIyNTIwY2M2YWI2NWQyMGY5ZmEzNTZkYWM1Yzg0OGUzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE3IEF1ZyAyMDE2IDAyOjE2OjEyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R0eWRlZmF1bHRzLmgKLQotVGhpcyBpcyBuZWVkZWQgZm9yIENUUkwgZGVmaW5pdGlvbiwgYXMgZXhwb3NlZCBieSBtdXNsIG9uIGdsaWJjCi10aGlzIGluY2x1ZGUgZmlsZSBnZXRzIHB1bGxlZCBpbmRpcmVjdGx5LgotCi0vdXNyL3NyYy9kZWJ1Zy9ncHNkLzMuMTQtcjAvZ3BzZC0zLjE0L2dwc21vbi5jOjYwNTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgQ1RSTCcKLWNsYW5nLTMuOTogZXJyb3I6IGxpbmtlciBjb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxICh1c2UgLXYgdG8gc2VlIGludm9jYXRpb24pCi1zY29uczogKioqIFtncHNtb25dIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBncHNtb24uYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ3BzbW9uLmMgYi9ncHNtb24uYwotaW5kZXggYmVlMDViOC4uZGFlZDgxOCAxMDA2NDQKLS0tLSBhL2dwc21vbi5jCi0rKysgYi9ncHNtb24uYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLSsjaW5jbHVkZSA8c3lzL3R0eWRlZmF1bHRzLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2lmbmRlZiBTX1NQTElOVF9TCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1saWJncHNkLWNvcmUtRml4LWlzc3VlLXdpdGgtQUNUSVZBVEUtaG9vay1ub3QtYmVpbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLWxpYmdwc2QtY29yZS1GaXgtaXNzdWUtd2l0aC1BQ1RJVkFURS1ob29rLW5vdC1iZWluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMDY3OTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLWxpYmdwc2QtY29yZS1GaXgtaXNzdWUtd2l0aC1BQ1RJVkFURS1ob29rLW5vdC1iZWluZy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDZmZjA5OWIxYmE4ZGU3NGRmOWRkZWI2MWUzODI1MjY0Yjk2ZWY2OTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNb3JpdHogRmlzY2hlciA8bW9yaXR6LmZpc2NoZXJAZXR0dXMuY29tPgotRGF0ZTogVHVlLCAyMiBEZWMgMjAxNSAxOTozODozMSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBsaWJncHNkLWNvcmU6IEZpeCBpc3N1ZSB3aXRoIEFDVElWQVRFIGhvb2sgbm90IGJlaW5nIGNhbGxlZC4KLQotSW4gdGhlIGN1cnJlbnQgc3lzdGVtIHNlc3Npb24tPm1vZGUgc2VlbWVkIHRvIGlnbm9yZSB0aGUKLU9fT1BUSU1JWkUgZmxhZywgbGVhZGluZyB0byB0aGUgQUNUSVZBVEUgaG9vayBiZWluZyBpZ25vcmVkLgotCi1Bbm90aGVyIHdheSB0byBmaXggdGhpcyB3b3VsZCBiZSB0byBrZWVwIHRoZSBzZXNzaW9uLT5tb2RlCi1jb25kaXRpb24gcHVsbCB1cCB0aGUgY2hlY2sgZm9yIE9fQ09OVElOVUUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRlZAotVGhpcyBwYXRjaCBpcyBpbiB1cHN0cmVhbSBnaXQKLQotU2lnbmVkLW9mZi1ieTogTW9yaXR6IEZpc2NoZXIgPG1vcml0ei5maXNjaGVyQGV0dHVzLmNvbT4KLS0tLQotIGxpYmdwc2RfY29yZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ3BzZF9jb3JlLmMgYi9saWJncHNkX2NvcmUuYwotaW5kZXggMzFmZWMyYS4uYTg0ZTg1ZiAxMDA2NDQKLS0tLSBhL2xpYmdwc2RfY29yZS5jCi0rKysgYi9saWJncHNkX2NvcmUuYwotQEAgLTU0Myw3ICs1NDMsNyBAQCBpbnQgZ3BzZF9vcGVuKHN0cnVjdCBncHNfZGV2aWNlX3QgKnNlc3Npb24pCi0gaW50IGdwc2RfYWN0aXZhdGUoc3RydWN0IGdwc19kZXZpY2VfdCAqc2Vzc2lvbiwgY29uc3QgaW50IG1vZGUpCi0gLyogYWNxdWlyZSBhIGNvbm5lY3Rpb24gdG8gdGhlIEdQUyBkZXZpY2UgKi8KLSB7Ci0tICAgIGlmIChzZXNzaW9uLT5tb2RlID09IE9fT1BUSU1JWkUpCi0rICAgIGlmIChtb2RlID09IE9fT1BUSU1JWkUpCi0gCWdwc2RfcnVuX2RldmljZV9ob29rKCZzZXNzaW9uLT5jb250ZXh0LT5lcnJvdXQsCi0gCQkJICAgICBzZXNzaW9uLT5ncHNkYXRhLmRldi5wYXRoLCAiQUNUSVZBVEUiKTsKLSAgICAgc2Vzc2lvbi0+Z3BzZGF0YS5ncHNfZmQgPSBncHNkX29wZW4oc2Vzc2lvbik7Ci0tLSAKLTIuNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMi1BZGQtYS10ZXN0LWZvci1DMTEtYW5kLWNoZWNrLXdlLWhhdmUtQzExLWJlZm9yZS11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAyLUFkZC1hLXRlc3QtZm9yLUMxMS1hbmQtY2hlY2std2UtaGF2ZS1DMTEtYmVmb3JlLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWUxYmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAyLUFkZC1hLXRlc3QtZm9yLUMxMS1hbmQtY2hlY2std2UtaGF2ZS1DMTEtYmVmb3JlLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDk5NDQ0YjNkMmM0YTRmN2ZkNzEyOGU2MDQ2MTAwNTc4MGQwYzVjODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiR2FyeSBFLiBNaWxsZXIiIDxnZW1AcmVsbGltLmNvbT4KLURhdGU6IFN1biwgMTUgTWFyIDIwMTUgMTI6MDU6MTUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIEFkZCBhIHRlc3QgZm9yIEMxMSBhbmQgY2hlY2sgd2UgaGF2ZSBDMTEgYmVmb3JlIHVzaW5nCi0gc3RkYXRvbWljLmgKLQotLS0tCi0gU0NvbnN0cnVjdCB8IDE5ICsrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDU2NmMxNGEuLmZhYTg2NTEgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtNDczLDYgKzQ3MywyMCBAQCBkZWYgQ2hlY2tDb21waWxlckRlZmluZXMoY29udGV4dCwgZGVmaW5lKToKLSAgICAgY29udGV4dC5SZXN1bHQocmV0KQotICAgICByZXR1cm4gcmV0Ci0gCi0rIyBDaGVjayBpZiB0aGlzIGNvbXBpbGVyIGlzIEMxMSBvciBiZXR0ZXIKLStkZWYgQ2hlY2tDMTEoY29udGV4dCk6Ci0rICAgIGNvbnRleHQuTWVzc2FnZSggJ0NoZWNraW5nIGlmIGNvbXBpbGVyIGlzIEMxMSAuLi4nICkKLSsgICAgcmV0ID0gY29udGV4dC5UcnlMaW5rKCIiIgotKwkjaWYgKF9fU1REQ19WRVJTSU9OX18gPCAyMDExMTJMKSAKLSsgICAgICAgICNlcnJvciBOb3QgQzExCi0rICAgICAgICAjZW5kaWYKLSsgICAgICAgIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQotKyAgICAiIiIsJy5jJykKLSsgICAgY29udGV4dC5SZXN1bHQocmV0KQotKyAgICByZXR1cm4gcmV0Ci0rCi0gZGVmIEdldExvYWRQYXRoKGNvbnRleHQpOgotICAgICBjb250ZXh0Lk1lc3NhZ2UoIkdldHRpbmcgc3lzdGVtIGxvYWQgcGF0aCAuLi4iKQotIAotQEAgLTQ5MSw2ICs1MDUsNyBAQCBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja1hzbHRwcm9jJyA6IENoZWNrWHNsdHByb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrQ29tcGlsZXJPcHRpb24nIDogQ2hlY2tDb21waWxlck9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2tDb21waWxlckRlZmluZXMnIDogQ2hlY2tDb21waWxlckRlZmluZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrQzExJyA6IENoZWNrQzExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja0hlYWRlckRlZmluZXMnIDogQ2hlY2tIZWFkZXJEZWZpbmVzfSkKLSAKLSAKLUBAIC02MzMsNyArNjQ4LDkgQEAgZWxzZToKLSAgICAgICAgIGFubm91bmNlKCJZb3UgZG8gbm90IGhhdmUga2VybmVsIENBTmJ1cyBhdmFpbGFibGUuIikKLSAgICAgICAgIGVudlsibm1lYTIwMDAiXSA9IEZhbHNlCi0gCi0tICAgIGlmIG5vdCBjb25maWcuQ2hlY2tDb21waWxlckRlZmluZXMoIl9fU1REQ19OT19BVE9NSUNTX18iKSBhbmQgY29uZmlnLkNoZWNrSGVhZGVyKCJzdGRhdG9taWMuaCIpOgotKyAgICAjIGNoZWNrIGZvciBDMTEgb3IgYmV0dGVyLCBhbmQgX19TVERDX19OT19BVE9NSUNTX18gaXMgbm8gZGVmaW5lZAotKyAgICAjIGJlZm9yZSBsb29raW5nIGZvciBzdGRhdG9taWMuaAotKyAgICBpZiBub3QgY29uZmlnLkNoZWNrQzExKCkgYW5kICBub3QgY29uZmlnLkNoZWNrQ29tcGlsZXJEZWZpbmVzKCJfX1NURENfTk9fQVRPTUlDU19fIikgYW5kIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSAgICAgICAgIGNvbmZkZWZzLmFwcGVuZCgiI2RlZmluZSBIQVZFX1NUREFUT01JQ19IIDFcbiIpCi0gICAgIGVsc2U6Ci0gCWNvbmZkZWZzLmFwcGVuZCgiLyogI3VuZGVmIEhBVkVfU1REQVRPTUlDX0ggKi9cbiIpCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMi1TQ29uc3RydWN0LXJlbW92ZS1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMi1TQ29uc3RydWN0LXJlbW92ZS1ycGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgzYTY2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDItU0NvbnN0cnVjdC1yZW1vdmUtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGQwOTA2MzhmZjk4M2U1MDkxNjJkNWUzYjYyYWE0OTE4ZGU0YWE1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IEFwciAyMDEyIDE2OjI0OjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBTQ29uc3RydWN0OiByZW1vdmUgcnBhdGgKLQotKiBldmVuIHdpdGggY29ycmVjdCBwcmVmaXggKHdpdGhvdXQgREVTVERJUikgaW5jbHVkZWQgaXQncyByZWR1bmRhbnQKLSAgV0FSTklORzogUUEgSXNzdWU6IGxpYmdwczoKLSAgL3dvcmsvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvZ3BzZC9ncHNkLTMuNS1yMC9wYWNrYWdlcy1zcGxpdC9saWJncHMvdXNyL2xpYi9saWJncHMuc28uMjAuMAotICBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLSogYW5kIHdpdGggcHJlZml4IGZyb20gc2NvbnMuYmJjbGFzcyBpdCdzIGludmFsaWQKLSAgV0FSTklORzogUUEgSXNzdWU6IHBhY2thZ2UgbGliZ3BzIGNvbnRhaW5zIGJhZCBSUEFUSAotICAvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL2FybXY0dC1vZS1saW51eC1nbnVlYWJpL2dwc2QvZ3BzZC0zLjUtcjAvaW1hZ2UvdXNyL2xpYgotICBpbiBmaWxlCi0gIC9PRS9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvZ3BzZC9ncHNkLTMuNS1yMC9wYWNrYWdlcy1zcGxpdC9saWJncHMvdXNyL2xpYi9saWJncHMuc28uMjAuMAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuaXMgJ0dOVXRvbycgQ2FyaWtsaSA8R05VdG9vQG5vLWxvZy5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRlciBBLiBCaWdvdCA8cGFiQHBhYmlnb3QuY29tPgotLS0tCi0gU0NvbnN0cnVjdCB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAotaW5kZXggZjBjYWZhOC4uZmY0NjcxMyAxMDA2NDQKLS0tLSBhL1NDb25zdHJ1Y3QKLSsrKyBiL1NDb25zdHJ1Y3QKLUBAIC0xMzQwLDggKzEzNDAsMTEgQEAgaWYgcXRfZW52OgotICAgICBiaW5hcnlpbnN0YWxsLmFwcGVuZChMaWJyYXJ5SW5zdGFsbChxdF9lbnYsIGluc3RhbGxkaXIoJ2xpYmRpcicpLCBjb21waWxlZF9xZ3BzbW1saWIpKQotIAotIGlmIGVudlsic2hhcmVkIl0gYW5kIGVudlsiY2hycGF0aCJdOgotLSAgICBlbnYuQWRkUG9zdEFjdGlvbihiaW5hcnlpbnN0YWxsLCAnJENIUlBBVEggLXIgIiVzIiAiJFRBUkdFVCInIFwKLS0gICAgICAgICAgICAgICAgICAgICAgJSAoaW5zdGFsbGRpcignbGliZGlyJywgRmFsc2UpLCApKQotKyAgICBpZiBub3QgZW52WydzeXNyb290J106Ci0rICAgICAgICBlbnYuQWRkUG9zdEFjdGlvbihiaW5hcnlpbnN0YWxsLCAnJENIUlBBVEggLXIgIiVzIiAiJFRBUkdFVCInIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGluc3RhbGxkaXIoJ2xpYmRpcicsIEZhbHNlKSwgKSkKLSsgICAgZWxzZToKLSsgICAgICAgIGVudi5BZGRQb3N0QWN0aW9uKGJpbmFyeWluc3RhbGwsICckQ0hSUEFUSCAtZCAiJFRBUkdFVCInKQotIAotIGlmIG5vdCBlbnZbJ2RlYnVnJ10gYW5kIG5vdCBlbnZbJ3Byb2ZpbGluZyddIGFuZCBlbnZbJ3N0cmlwJ106Ci0gICAgIGVudi5BZGRQb3N0QWN0aW9uKGJpbmFyeWluc3RhbGwsICckU1RSSVAgJFRBUkdFVCcpCi0tLSAKLTEuOC41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAzLVdob29wcy1jaGVjay1mb3ItQzExLW5vdC1mb3Itbm90LUMxMS1pbi1zdGRhdG9taWMuaC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDMtV2hvb3BzLWNoZWNrLWZvci1DMTEtbm90LWZvci1ub3QtQzExLWluLXN0ZGF0b21pYy5oLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJiMDkyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDMtV2hvb3BzLWNoZWNrLWZvci1DMTEtbm90LWZvci1ub3QtQzExLWluLXN0ZGF0b21pYy5oLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNjc0YzUwZWU1NGZkN2NkMzA0ZThiM2M0YjMzZDNmZjEyNzJlZDE5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJHYXJ5IEUuIE1pbGxlciIgPGdlbUByZWxsaW0uY29tPgotRGF0ZTogU3VuLCAxNSBNYXIgMjAxNSAxMjoxNzo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gV2hvb3BzLCBjaGVjayBmb3IgQzExLCBub3QgZm9yIG5vdCBDMTEgaW4gc3RkYXRvbWljLmgKLSB0ZXN0LgotCi0tLS0KLSBTQ29uc3RydWN0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IGZhYTg2NTEuLmY0ZWExNDUgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtNjUwLDcgKzY1MCw3IEBAIGVsc2U6Ci0gCi0gICAgICMgY2hlY2sgZm9yIEMxMSBvciBiZXR0ZXIsIGFuZCBfX1NURENfX05PX0FUT01JQ1NfXyBpcyBubyBkZWZpbmVkCi0gICAgICMgYmVmb3JlIGxvb2tpbmcgZm9yIHN0ZGF0b21pYy5oCi0tICAgIGlmIG5vdCBjb25maWcuQ2hlY2tDMTEoKSBhbmQgIG5vdCBjb25maWcuQ2hlY2tDb21waWxlckRlZmluZXMoIl9fU1REQ19OT19BVE9NSUNTX18iKSBhbmQgY29uZmlnLkNoZWNrSGVhZGVyKCJzdGRhdG9taWMuaCIpOgotKyAgICBpZiBjb25maWcuQ2hlY2tDMTEoKSBhbmQgIG5vdCBjb25maWcuQ2hlY2tDb21waWxlckRlZmluZXMoIl9fU1REQ19OT19BVE9NSUNTX18iKSBhbmQgY29uZmlnLkNoZWNrSGVhZGVyKCJzdGRhdG9taWMuaCIpOgotICAgICAgICAgY29uZmRlZnMuYXBwZW5kKCIjZGVmaW5lIEhBVkVfU1REQVRPTUlDX0ggMVxuIikKLSAgICAgZWxzZToKLSAJY29uZmRlZnMuYXBwZW5kKCIvKiAjdW5kZWYgSEFWRV9TVERBVE9NSUNfSCAqL1xuIikKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTZiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGYyMjFmYTk1OWM4MGI0M2M2NTQyNjUwMGE2ODM2YTFiNWNmNmZlMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNyBBdWcgMjAxNiAwMjoxNjoxMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy90dHlkZWZhdWx0cy5oCisKK1RoaXMgaXMgbmVlZGVkIGZvciBDVFJMIGRlZmluaXRpb24sIGFzIGV4cG9zZWQgYnkgbXVzbCBvbiBnbGliYwordGhpcyBpbmNsdWRlIGZpbGUgZ2V0cyBwdWxsZWQgaW5kaXJlY3RseS4KKworL3Vzci9zcmMvZGVidWcvZ3BzZC8zLjE0LXIwL2dwc2QtMy4xNC9ncHNtb24uYzo2MDU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYENUUkwnCitjbGFuZy0zLjk6IGVycm9yOiBsaW5rZXIgY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMSAodXNlIC12IHRvIHNlZSBpbnZvY2F0aW9uKQorc2NvbnM6ICoqKiBbZ3BzbW9uXSBFcnJvciAxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0ZvcmV3YXJkIHBvcnQgdG8gZ3BzZCAzLjE2CitTaWduZWQtb2ZmLWJ5OiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorLS0tCisgZ3BzbW9uLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dwc21vbi5jIGIvZ3BzbW9uLmMKK2luZGV4IGVhZDg0ZDAuLmYyMDVjYjEgMTAwNjQ0CistLS0gYS9ncHNtb24uYworKysrIGIvZ3BzbW9uLmMKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisrI2luY2x1ZGUgPHN5cy90dHlkZWZhdWx0cy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKy0tIAorMi4xMi4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMDJmOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1TVU1NQVJZID0gIkEgVENQL0lQIERhZW1vbiBzaW1wbGlmeWluZyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIEdQUyBkZXZpY2VzIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQyMTdhMjNmNDA4ZTkxYzk0MzU5NDQ3NzM1YmMxODAwIgotREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBuY3Vyc2VzIHB5dGhvbiBsaWJ1c2IxIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlIHBwcy10b29scyIKLVBST1ZJREVTID0gInZpcnR1YWwvZ3BzZCIKLQotRVhUUkFOQVRJVkVQQVRIICs9ICJjaHJwYXRoLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLVNDb25zdHJ1Y3QtcmVzcGVjdC1zeXNyb290LWFsc28taW4tU1BMSU5UT1BUUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItU0NvbnN0cnVjdC1yZW1vdmUtcnBhdGgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUNoZWNrLWZvci1fX1NURENfTk9fQVRPTUlDU19fLWJlZm9yZS11c2luZy1zdGRhdG9taWMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUFkZC1hLXRlc3QtZm9yLUMxMS1hbmQtY2hlY2std2UtaGF2ZS1DMTEtYmVmb3JlLXVzaW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLVdob29wcy1jaGVjay1mb3ItQzExLW5vdC1mb3Itbm90LUMxMS1pbi1zdGRhdG9taWMuaC0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3RkYXRvbWljLmgtb25seS1pbi1DLW1vZGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpYmdwc2QtY29yZS1GaXgtaXNzdWUtd2l0aC1BQ1RJVkFURS1ob29rLW5vdC1iZWluZy0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2ggXAotICAgIGZpbGU6Ly9ncHNkLWRlZmF1bHQgXAotICAgIGZpbGU6Ly9ncHNkIFwKLSAgICBmaWxlOi8vNjAtZ3BzZC5ydWxlcyBcCi0gICAgZmlsZTovL2dwc2Quc2VydmljZSBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYmM3NDY3MDA5Yjk5ZTA3YmE0NjEzNzdiNWRhNmMwMzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA0ZmM4MTJmM2MxNTI1YTFhNDhlMDRiZjRkNzdmOWE4MDY2YzIwMTQ0OGQ5ODA4OWRmODlkNThlZjUzYThjYiIKLQotaW5oZXJpdCBzY29ucyB1cGRhdGUtcmMuZCBweXRob24tZGlyIHB5dGhvbm5hdGl2ZSBzeXN0ZW1kIGJsdWV0b290aAotCi1JTklUU0NSSVBUX05BTUUgPSAiZ3BzZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDM1IgotCi1TWVNURU1EX09FU0NPTlMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLGQpfSIKLQotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLQotTERGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImJsdWV6PSd0cnVlJyxibHVlej0nZmFsc2UnLCR7QkxVRVp9IgotUEFDS0FHRUNPTkZJR1txdF0gPSAicXQ9J3llcycscXQ9J25vJyxxdDQteDExLWZyZWUiCi1FWFRSQV9PRVNDT05TID0gIiBcCi0gICAgc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotICAgIGxpYlFncHNtbT0nZmFsc2UnIFwKLSAgICBkZWJ1Zz0ndHJ1ZScgXAotICAgIHN0cmlwPSdmYWxzZScgXAotICAgIGNocnBhdGg9J3llcycgXAotICAgIHN5c3RlbWQ9JyR7U1lTVEVNRF9PRVNDT05TfScgXAotICAgIGxpYmRpcj0nJHtsaWJkaXJ9JyBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0iCi0jIHRoaXMgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgdGhlbiBjaHJwYXRoIGlzIG5vdCBmb3VuZCBhbmQgb25seSBzdGF0aWMgbGliIGlzIGJ1aWx0Ci0jIHRhcmdldD0ke0hPU1RfU1lTfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtQS0dfQ09ORklHX1BBVEh9IgotICAgIGV4cG9ydCBQS0dfQ09ORklHPSJQS0dfQ09ORklHX1NZU1JPT1RfRElSPVwiJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfVwiIHBrZy1jb25maWciCi0gICAgZXhwb3J0IFNUQUdJTkdfUFJFRklYPSIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKLSAgICBleHBvcnQgTElOS0ZMQUdTPSIke0xERkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7UEtHX0NPTkZJR19QQVRIfSIKLSAgICBleHBvcnQgUEtHX0NPTkZJRz0iUEtHX0NPTkZJR19TWVNST09UX0RJUj1cIiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1cIiBwa2ctY29uZmlnIgotICAgIGV4cG9ydCBTVEFHSU5HX1BSRUZJWD0iJHtTVEFHSU5HX0RJUl9IT1NUfS8ke3ByZWZpeH0iCi0gICAgZXhwb3J0IExJTktGTEFHUz0iJHtMREZMQUdTfSIKLQotICAgIGV4cG9ydCBERVNURElSPSIke0R9IgotICAgICMgcHJlZml4IGlzIHVzZWQgZm9yIFJQQVRIIGFuZCBERVNURElSL3ByZWZpeCBmb3IgaW5zdGFsYXRpb24KLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgcHJlZml4PSR7cHJlZml4fSBpbnN0YWxsICR7RVhUUkFfT0VTQ09OU318fCBcCi0gICAgICBiYmZhdGFsICJzY29ucyBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2dwc2QtZGVmYXVsdCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQKLQotICAgICNzdXBwb3J0IGZvciB1ZGV2Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vNjAtZ3BzZC5ydWxlcyAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ncHNkLmhvdHBsdWcgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCi0KLSAgICAjc3VwcG9ydCBmb3IgcHl0aG9uCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dwcwotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vZ3BzLyoucHkgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ncHMKLQotICAgICNzdXBwb3J0IGZvciBzeXN0ZW1kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc2VydmljZQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc29ja2V0Ci19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfS1jb25mKCkgewotICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1pbnN0YWxsICR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkIGdwc2QtZGVmYXVsdHMgJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdCAxMAotfQotCi1wa2dfcG9zdHJtXyR7UE59LWNvbmYoKSB7Ci0gICAgdXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZSBncHNkLWRlZmF1bHRzICR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQKLX0KLQotUEFDS0FHRVMgPSsgImxpYmdwcyBsaWJncHNkIHB5dGhvbi1weWdwcy1kYmcgcHl0aG9uLXB5Z3BzIGdwc2QtdWRldiBncHNkLWNvbmYgZ3BzZC1ncHNjdGwgZ3BzLXV0aWxzIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwc2QucGMgJHtsaWJkaXJ9L3BrZ2NvbmZkaXIvbGliZ3BzLnBjIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYlFncHNtbS5wcmwiCi0KLUZJTEVTX3B5dGhvbi1weWdwcy1kYmcgKz0gIiAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL2dwcy8uZGVidWciCi0KLVJERVBFTkRTXyR7UE59ID0gImdwc2QtZ3BzY3RsIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3BzZC1jb25mIGdwc2QtdWRldiBncHNkLW1hY2hpbmUtY29uZiIKLQotU1VNTUFSWV9ncHNkLXVkZXYgPSAidWRldiByZWxldmFudCBmaWxlcyB0byB1c2UgZ3BzZCBob3RwbHVnZ2luZyIKLUZJTEVTX2dwc2QtdWRldiA9ICIke2Jhc2VfbGliZGlyfS91ZGV2ICR7c3lzY29uZmRpcn0vdWRldi8qIgotUkRFUEVORFNfZ3BzZC11ZGV2ICs9ICJ1ZGV2IGdwc2QtY29uZiIKLQotU1VNTUFSWV9saWJncHNkID0gIkMgc2VydmljZSBsaWJyYXJ5IHVzZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBncHNkIgotRklMRVNfbGliZ3BzZCA9ICIke2xpYmRpcn0vbGliZ3BzZC5zby4qIgotCi1TVU1NQVJZX2xpYmdwcyA9ICJDIHNlcnZpY2UgbGlicmFyeSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3BzZCIKLUZJTEVTX2xpYmdwcyA9ICIke2xpYmRpcn0vbGliZ3BzLnNvLioiCi0KLVNVTU1BUllfZ3BzZC1jb25mID0gImdwc2QgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgaW5pdCBzY3JpcHRzIgotRklMRVNfZ3BzZC1jb25mID0gIiR7c3lzY29uZmRpcn0iCi1DT05GRklMRVNfZ3BzZC1jb25mID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQiCi0KLVNVTU1BUllfZ3BzZC1ncHNjdGwgPSAiVG9vbCBmb3IgdHdlYWtpbmcgR1BTIG1vZGVzIgotRklMRVNfZ3BzZC1ncHNjdGwgPSAiJHtiaW5kaXJ9L2dwc2N0bCIKLQotU1VNTUFSWV9ncHMtdXRpbHMgPSAiVXRpbHMgdXNlZCBmb3Igc2ltdWxhdGluZywgbW9uaXRvcmluZywuLi4gYSBHUFMiCi1GSUxFU19ncHMtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi1SREVQRU5EU19ncHMtdXRpbHMgPSAicHl0aG9uLXB5Z3BzIgotCi1TVU1NQVJZX3B5dGhvbi1weWdwcyA9ICJQeXRob24gYmluZGluZ3MgdG8gZ3BzZCIKLUZJTEVTX3B5dGhvbi1weWdwcyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotUkRFUEVORFNfcHl0aG9uLXB5Z3BzID0gInB5dGhvbi1jb3JlIHB5dGhvbi1jdXJzZXMgZ3BzZCBweXRob24tanNvbiIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke1BOfS5zb2NrZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmQ3NDg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYgpAQCAtMCwwICsxLDE0MCBAQAorU1VNTUFSWSA9ICJBIFRDUC9JUCBEYWVtb24gc2ltcGxpZnlpbmcgdGhlIGNvbW11bmljYXRpb24gd2l0aCBHUFMgZGV2aWNlcyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMjE3YTIzZjQwOGU5MWM5NDM1OTQ0NzczNWJjMTgwMCIKK0RFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmN1cnNlcyBweXRob24gbGlidXNiMSBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSBwcHMtdG9vbHMiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2dwc2QiCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoIFwKKyAgICBmaWxlOi8vZ3BzZC1kZWZhdWx0IFwKKyAgICBmaWxlOi8vZ3BzZCBcCisgICAgZmlsZTovLzYwLWdwc2QucnVsZXMgXAorICAgIGZpbGU6Ly9ncHNkLnNlcnZpY2UgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjY4NjkxYjVkZTRjOTRmODJlYzQwNjJiMDQyYjVlYjYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzNTc5YWYxM2E0ZDNmZTBjNWI3OWZhNDRiNWY3NWM5ZjNjYWM2NzQ5MzU3ZjFkOTljZTVkMzhjMDliYzIwMjkiCisKK2luaGVyaXQgc2NvbnMgdXBkYXRlLXJjLmQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc3lzdGVtZCBibHVldG9vdGggdXBkYXRlLWFsdGVybmF0aXZlcworCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gImdwc2QtY29uZiIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJncHNkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMzUiCisKK1NZU1RFTURfT0VTQ09OUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsZCl9IgorCitleHBvcnQgU1RBR0lOR19JTkNESVIKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYmx1ZXo9J3RydWUnLGJsdWV6PSdmYWxzZScsJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW3F0XSA9ICJxdD0neWVzJyxxdD0nbm8nLHF0NC14MTEtZnJlZSIKK0VYVFJBX09FU0NPTlMgPSAiIFwKKyAgICBzeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCisgICAgbGliUWdwc21tPSdmYWxzZScgXAorICAgIGRlYnVnPSd0cnVlJyBcCisgICAgc3RyaXA9J2ZhbHNlJyBcCisgICAgY2hycGF0aD0neWVzJyBcCisgICAgc3lzdGVtZD0nJHtTWVNURU1EX09FU0NPTlN9JyBcCisgICAgbGliZGlyPScke2xpYmRpcn0nIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyIKKyMgdGhpcyBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSB0aGVuIGNocnBhdGggaXMgbm90IGZvdW5kIGFuZCBvbmx5IHN0YXRpYyBsaWIgaXMgYnVpbHQKKyMgdGFyZ2V0PSR7SE9TVF9TWVN9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke1BLR19DT05GSUdfUEFUSH0iCisgICAgZXhwb3J0IFBLR19DT05GSUc9IlBLR19DT05GSUdfU1lTUk9PVF9ESVI9XCIke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9XCIgcGtnLWNvbmZpZyIKKyAgICBleHBvcnQgU1RBR0lOR19QUkVGSVg9IiR7U1RBR0lOR19ESVJfSE9TVH0vJHtwcmVmaXh9IgorICAgIGV4cG9ydCBMSU5LRkxBR1M9IiR7TERGTEFHU30iCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtQS0dfQ09ORklHX1BBVEh9IgorICAgIGV4cG9ydCBQS0dfQ09ORklHPSJQS0dfQ09ORklHX1NZU1JPT1RfRElSPVwiJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfVwiIHBrZy1jb25maWciCisgICAgZXhwb3J0IFNUQUdJTkdfUFJFRklYPSIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKKyAgICBleHBvcnQgTElOS0ZMQUdTPSIke0xERkxBR1N9IgorCisgICAgZXhwb3J0IERFU1RESVI9IiR7RH0iCisgICAgIyBwcmVmaXggaXMgdXNlZCBmb3IgUlBBVEggYW5kIERFU1RESVIvcHJlZml4IGZvciBpbnN0YWxhdGlvbgorICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyBwcmVmaXg9JHtwcmVmaXh9IGluc3RhbGwgJHtFWFRSQV9PRVNDT05TfXx8IFwKKyAgICAgIGJiZmF0YWwgInNjb25zIGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2dwc2QgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ3BzZC1kZWZhdWx0ICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdAorCisgICAgI3N1cHBvcnQgZm9yIHVkZXYKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS82MC1ncHNkLnJ1bGVzICR7RH0vJHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2LworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2dwc2QuaG90cGx1ZyAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KKworICAgICNzdXBwb3J0IGZvciBweXRob24KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZ3BzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9ncHMvKi5weSAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dwcworCisgICAgI3N1cHBvcnQgZm9yIHN5c3RlbWQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3lzdGVtZC8ke0JQTn0uc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfS5zb2NrZXQKK30KKworUEFDS0FHRVMgPSsgImxpYmdwcyBsaWJncHNkIHB5dGhvbi1weWdwcy1kYmcgcHl0aG9uLXB5Z3BzIGdwc2QtdWRldiBncHNkLWNvbmYgZ3BzZC1ncHNjdGwgZ3BzLXV0aWxzIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwc2QucGMgJHtsaWJkaXJ9L3BrZ2NvbmZkaXIvbGliZ3BzLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYlFncHNtbS5wcmwiCisKK0ZJTEVTX3B5dGhvbi1weWdwcy1kYmcgKz0gIiAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL2dwcy8uZGVidWciCisKK1JERVBFTkRTXyR7UE59ID0gImdwc2QtZ3BzY3RsIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3BzZC1jb25mIGdwc2QtdWRldiBncHNkLW1hY2hpbmUtY29uZiIKKworU1VNTUFSWV9ncHNkLXVkZXYgPSAidWRldiByZWxldmFudCBmaWxlcyB0byB1c2UgZ3BzZCBob3RwbHVnZ2luZyIKK0ZJTEVTX2dwc2QtdWRldiA9ICIke2Jhc2VfbGliZGlyfS91ZGV2ICR7c3lzY29uZmRpcn0vdWRldi8qIgorUkRFUEVORFNfZ3BzZC11ZGV2ICs9ICJ1ZGV2IGdwc2QtY29uZiIKKworU1VNTUFSWV9saWJncHNkID0gIkMgc2VydmljZSBsaWJyYXJ5IHVzZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBncHNkIgorRklMRVNfbGliZ3BzZCA9ICIke2xpYmRpcn0vbGliZ3BzZC5zby4qIgorCitTVU1NQVJZX2xpYmdwcyA9ICJDIHNlcnZpY2UgbGlicmFyeSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3BzZCIKK0ZJTEVTX2xpYmdwcyA9ICIke2xpYmRpcn0vbGliZ3BzLnNvLioiCisKK1NVTU1BUllfZ3BzZC1jb25mID0gImdwc2QgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgaW5pdCBzY3JpcHRzIgorRklMRVNfZ3BzZC1jb25mID0gIiR7c3lzY29uZmRpcn0iCitDT05GRklMRVNfZ3BzZC1jb25mID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQiCisKK1NVTU1BUllfZ3BzZC1ncHNjdGwgPSAiVG9vbCBmb3IgdHdlYWtpbmcgR1BTIG1vZGVzIgorRklMRVNfZ3BzZC1ncHNjdGwgPSAiJHtiaW5kaXJ9L2dwc2N0bCIKKworU1VNTUFSWV9ncHMtdXRpbHMgPSAiVXRpbHMgdXNlZCBmb3Igc2ltdWxhdGluZywgbW9uaXRvcmluZywuLi4gYSBHUFMiCitGSUxFU19ncHMtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCitSREVQRU5EU19ncHMtdXRpbHMgPSAicHl0aG9uLXB5Z3BzIgorCitTVU1NQVJZX3B5dGhvbi1weWdwcyA9ICJQeXRob24gYmluZGluZ3MgdG8gZ3BzZCIKK0ZJTEVTX3B5dGhvbi1weWdwcyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorUkRFUEVORFNfcHl0aG9uLXB5Z3BzID0gIiBcCisgICAgcHl0aG9uLWNvcmUgXAorICAgIHB5dGhvbi1pbyBcCisgICAgcHl0aG9uLXRocmVhZGluZyBcCisgICAgcHl0aG9uLXRlcm1pbmFsIFwKKyAgICBweXRob24tY3Vyc2VzIFwKKyAgICBncHNkIFwKKyAgICBweXRob24tanNvbiIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke1BOfS5zb2NrZXQiCisKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3BzZC1kZWZhdWx0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncHNkLWRlZmF1bHRzXSA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtncHNkLWRlZmF1bHRzXSA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9maWxlcy8wMDAxLWdfdHlwZV9pbml0LWlzLWRlcHJlY2F0ZWQtZm9yLWdsaWItMi4zNS4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9maWxlcy8wMDAxLWdfdHlwZV9pbml0LWlzLWRlcHJlY2F0ZWQtZm9yLWdsaWItMi4zNS4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjNiZWE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvMDAwMS1nX3R5cGVfaW5pdC1pcy1kZXByZWNhdGVkLWZvci1nbGliLTIuMzUuMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1Gcm9tIDViODU5YjZlN2M4MmY0OWQ5NjdjMjUzOThhOGU3NWI2MWFmOWJjYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMiBKdW4gMjAxMyAyMDo1ODo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBnX3R5cGVfaW5pdCgpIGlzIGRlcHJlY2F0ZWQgZm9yIGdsaWIgPj0gMi4zNS4wCi0KLUNhbGwgaXQgZm9yIG9sZCB2ZXJzaW9ucy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBleGFtcGxlcy9saXN0LWtub3duLWdwcy1kZXZpY2VzLmMgfCAgICA0ICsrLS0KLSBleGFtcGxlcy9zaW1wbGUtZ3BzLWRidXMuYyAgICAgICAgfCAgICAzICsrLQotIGV4YW1wbGVzL3NpbXBsZS1ncHMtZ3lwc3kuYyAgICAgICB8ICAgIDQgKystLQotIGV4YW1wbGVzL3NpbXBsZS1ncHMtc2F0ZWxsaXRlcy5jICB8ICAgIDQgKystLQotIGd5cHN5L2d5cHN5LW1hcnNoYWwuYyAgICAgICAgICAgICB8ICAgIDIgKy0KLSBzcmMvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbGlzdC1rbm93bi1ncHMtZGV2aWNlcy5jIGIvZXhhbXBsZXMvbGlzdC1rbm93bi1ncHMtZGV2aWNlcy5jCi1pbmRleCBjN2M0MDU5Li4wYThiMDRiIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvbGlzdC1rbm93bi1ncHMtZGV2aWNlcy5jCi0rKysgYi9leGFtcGxlcy9saXN0LWtub3duLWdwcy1kZXZpY2VzLmMKLUBAIC0yMCw5ICsyMCw5IEBAIG1haW4gKGludCBhcmdjLAotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgICAgR1B0ckFycmF5ICprbm93bl9kZXZpY2VzOwotICAgICBpbnQgaTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDM1LDApCi0gICAgIGdfdHlwZV9pbml0ICgpOwotLQotKyNlbmRpZgotICAgICBkaXNjb3ZlcnkgPSBneXBzeV9kaXNjb3ZlcnlfbmV3ICgpOwotICAgICBrbm93bl9kZXZpY2VzID0gZ3lwc3lfZGlzY292ZXJ5X2xpc3RfZGV2aWNlcyAoZGlzY292ZXJ5LCAmZXJyb3IpOwotIAotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NpbXBsZS1ncHMtZGJ1cy5jIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1kYnVzLmMKLWluZGV4IGY3MDQ0ZTYuLjc2YjE4YWEgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9zaW1wbGUtZ3BzLWRidXMuYwotKysrIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1kYnVzLmMKLUBAIC0xMjEsOCArMTIxLDkgQEAgbWFpbiAoaW50ICAgIGFyZ2MsCi0gCURCdXNDb25uZWN0aW9uICpjb25uOwotIAlEQnVzRXJyb3IgZXJyb3I7Ci0gCUdNYWluTG9vcCAqbWFpbmxvb3A7Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzNSwwKQotIAlnX3R5cGVfaW5pdCAoKTsKLSsjZW5kaWYKLSAJY29ubiA9IGdldF9jb25uZWN0aW9uICgpOwotIAotIAlkYnVzX2Vycm9yX2luaXQgKCZlcnJvcik7Ci1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvc2ltcGxlLWdwcy1neXBzeS5jIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1neXBzeS5jCi1pbmRleCAwYjZiN2E2Li44NjAzM2Q5IDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvc2ltcGxlLWdwcy1neXBzeS5jCi0rKysgYi9leGFtcGxlcy9zaW1wbGUtZ3BzLWd5cHN5LmMKLUBAIC02Nyw5ICs2Nyw5IEBAIG1haW4gKGludCAgICBhcmdjLAotIAkJZ19wcmludCAoIlVzYWdlOiAlcyBkZXZpY2VcbiIsIGFyZ3ZbMF0pOwotIAkJcmV0dXJuIDA7Ci0gCX0KLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDM1LDApIAotIAlnX3R5cGVfaW5pdCAoKTsKLS0KLSsjZW5kaWYKLSAJY29udHJvbCA9IGd5cHN5X2NvbnRyb2xfZ2V0X2RlZmF1bHQgKCk7Ci0gCXBhdGggPSBneXBzeV9jb250cm9sX2NyZWF0ZSAoY29udHJvbCwgYXJndlsxXSwgJmVycm9yKTsKLSAJaWYgKHBhdGggPT0gTlVMTCkgewotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NpbXBsZS1ncHMtc2F0ZWxsaXRlcy5jIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1zYXRlbGxpdGVzLmMKLWluZGV4IDE0MGM5OGYuLjlhM2Y5NWEgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9zaW1wbGUtZ3BzLXNhdGVsbGl0ZXMuYwotKysrIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1zYXRlbGxpdGVzLmMKLUBAIC00Miw5ICs0Miw5IEBAIG1haW4gKGludCAgICBhcmdjLAotIAkJZ19wcmludCAoIlVzYWdlOiAlcyBkZXZpY2VcbiIsIGFyZ3ZbMF0pOwotIAkJcmV0dXJuIDA7Ci0gCX0KLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDM1LDApCi0gCWdfdHlwZV9pbml0ICgpOwotLQotKyNlbmRpZgotIAljb250cm9sID0gZ3lwc3lfY29udHJvbF9nZXRfZGVmYXVsdCAoKTsKLSAJcGF0aCA9IGd5cHN5X2NvbnRyb2xfY3JlYXRlIChjb250cm9sLCBhcmd2WzFdLCAmZXJyb3IpOwotIAlpZiAocGF0aCA9PSBOVUxMKSB7Ci1kaWZmIC0tZ2l0IGEvZ3lwc3kvZ3lwc3ktbWFyc2hhbC5jIGIvZ3lwc3kvZ3lwc3ktbWFyc2hhbC5jCi1pbmRleCA2OTY0NjQ0Li45YWMwMDk1IDEwMDY0NAotLS0tIGEvZ3lwc3kvZ3lwc3ktbWFyc2hhbC5jCi0rKysgYi9neXBzeS9neXBzeS1tYXJzaGFsLmMKLUBAIC01LDcgKzUsNyBAQAotIAotICNpZmRlZiBHX0VOQUJMRV9ERUJVRwotICNkZWZpbmUgZ19tYXJzaGFsX3ZhbHVlX3BlZWtfYm9vbGVhbih2KSAgZ192YWx1ZV9nZXRfYm9vbGVhbiAodikKLS0jZGVmaW5lIGdfbWFyc2hhbF92YWx1ZV9wZWVrX2NoYXIodikgICAgIGdfdmFsdWVfZ2V0X2NoYXIgKHYpCi0rI2RlZmluZSBnX21hcnNoYWxfdmFsdWVfcGVla19jaGFyKHYpICAgICBnX3ZhbHVlX2dldF9zY2hhciAodikKLSAjZGVmaW5lIGdfbWFyc2hhbF92YWx1ZV9wZWVrX3VjaGFyKHYpICAgIGdfdmFsdWVfZ2V0X3VjaGFyICh2KQotICNkZWZpbmUgZ19tYXJzaGFsX3ZhbHVlX3BlZWtfaW50KHYpICAgICAgZ192YWx1ZV9nZXRfaW50ICh2KQotICNkZWZpbmUgZ19tYXJzaGFsX3ZhbHVlX3BlZWtfdWludCh2KSAgICAgZ192YWx1ZV9nZXRfdWludCAodikKLWRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwotaW5kZXggM2U4YTc5NC4uZWM5ODBlNSAxMDA2NDQKLS0tLSBhL3NyYy9tYWluLmMKLSsrKyBiL3NyYy9tYWluLmMKLUBAIC0xODcsOSArMTg3LDkgQEAgbWFpbiAoaW50ICAgIGFyZ2MsCi0gCWdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7Ci0gCi0gCXVtYXNrICgwMjIpOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzUsMCkKLSAJZ190eXBlX2luaXQgKCk7Ci0tCi0rI2VuZGlmCi0gCW1haW5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7Ci0gCi0gCWNvbm4gPSBkYnVzX2dfYnVzX2dldCAoREJVU19CVVNfU1lTVEVNLCAmZXJyb3IpOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvZml4dXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9maWxlcy9maXh1cHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNGQ5MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9maWxlcy9maXh1cHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLS0tLQotIGRvY3MvcmVmZXJlbmNlL01ha2VmaWxlLmFtIHwgICAgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotLS0tIGd5cHN5Lm9yaWcvZG9jcy9yZWZlcmVuY2UvTWFrZWZpbGUuYW0KLSsrKyBneXBzeS9kb2NzL3JlZmVyZW5jZS9NYWtlZmlsZS5hbQotQEAgLTgxLDEwICs4MSwxMiBAQCBleHBhbmRfY29udGVudF9maWxlcz0KLSAjIGUuZy4gR1RLRE9DX0xJQlM9JCh0b3BfYnVpbGRkaXIpL2d0ay8kKGd0a3RhcmdldGxpYikKLSAKLSBJTkNMVURFUz0tSSQodG9wX3NyY2RpcikgJChHWVBTWV9DRkxBR1MpCi0gR1RLRE9DX0xJQlM9JCh0b3BfYnVpbGRkaXIpL2d5cHN5L2xpYmd5cHN5LmxhICQoR1lQU1lfTElCUykKLSAKLStFWFRSQV9ESVNUID0KLStDTEVBTkZJTEVTID0KLSAjIFRoaXMgaW5jbHVkZXMgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbWFrZSBydWxlcywgY29waWVkIGJ5IGd0a2RvY2l6ZS4KLSBpbmNsdWRlICQodG9wX3NyY2RpcikvZ3RrLWRvYy5tYWtlCi0gCi0gIyBPdGhlciBmaWxlcyB0byBkaXN0cmlidXRlCi0gIyBlLmcuIEVYVFJBX0RJU1QgKz0gdmVyc2lvbi54bWwuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3kuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZmQzNTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdQUyBNdWx0aXBsZXhpbmcgRGFlbW9uIgotREVTQ1JJUFRJT04gPSAiR3lwc3kgaXMgYSBHUFMgbXVsdGlwbGV4aW5nIGRhZW1vbiB3aGljaCBhbGxvd3MgXAotbXVsdGlwbGUgY2xpZW50cyB0byBhY2Nlc3MgR1BTIGRhdGEgZnJvbSBtdWx0aXBsZSBHUFMgc291cmNlcyBcCi1jb25jdXJyZW50bHkuICBHeXBzeSBhbHNvIGhpZGVzIHRoZSBkZXRhaWxzIG9mIHBhcnNpbmcgTk1FQSBmcm9tIHRoZSBcCi1jbGllbnQgYXBwbGljYXRpb25zLCBwYXNzaW5nIHRoZSBkYXRhIGFzIHNpbXBsZSB2YWx1ZXMgZm9yIHRoZSBjbGllbnRzIFwKLXRvIHVzZS4iCi1MSUNFTlNFID0gIkdQTHYyLjAgJiBMR1BMdjIuMSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotREVQRU5EUyA9ICJnbGliLTIuMCBkYnVzIGJsdWV6NCBkYnVzLWdsaWIgbGlieHNsdC1uYXRpdmUgbGlieHNsdCIKLQotUE5CTEFDS0xJU1RbZ3lwc3ldID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV6NScsICdibHVlejUgY29uZmxpY3RzIHdpdGggYmx1ZXo0IGFuZCBibHVlejUgaXMgc2VsZWN0ZWQgaW4gRElTVFJPX0ZFQVRVUkVTJywgJycsIGQpfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLVBBQ0tBR0VTICs9ICJsaWJneXBzeSIKLQotRklMRVNfJHtQTn0gPSAiIFwKLSAgJHtzeXNjb25mZGlyfS9neXBzeS5jb25mIFwKLSAgJHtzeXNjb25mZGlyfS9kYnVzLTEgXAotICAke2xpYmV4ZWNkaXJ9L2d5cHN5LWRhZW1vbiBcCi0gICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSIKLQotRklMRVNfbGliZ3lwc3kgPSAiIFwKLSAgJHtsaWJkaXJ9L2xpYmd5cHN5JHtTT0xJQlN9IFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3lfMC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeV8wLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0Yzg5ODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeV8wLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGd5cHN5LmluYwotCi1QUiA9ICJyMiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5saWI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNTttZDU9M2ZlNjRlMjdlNjFiMjg5Yjc3MzgzYTU0YTk4MmNiZGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3lwc3kvZ3lwc3ktdGltZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTA2NDMyZWExOWE3YjY2MDc0MjhkMDRkOWRhZGMzN2ZkIgotCi1TUkNfVVJJICs9ICJodHRwOi8vZ3lwc3kuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2d5cHN5LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdfdHlwZV9pbml0LWlzLWRlcHJlY2F0ZWQtZm9yLWdsaWItMi4zNS4wLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMmQxODZkZjljMmNjM2I3MGEwMjcwNDNlMjJhY2YxYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGUxY2JlMTczNTFmNDA4NTM4ZTAzM2NhMzcwYjRiZjUxY2NmOWM4ODc0NGUyMzZkZGZiMjcxOTA0ZjE1NGQ2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2d5cHN5X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFiMTZlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2d5cHN5X2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgZ3lwc3kuaW5jCi0KLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotU1JDUkVWID0gImJlOGM5YzM4MmQyZDFkMzdiNTFkMjliMDg0MzA0NTEyMWVjOTAyMTMiCi1QViA9ICIwLjkrZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5saWI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNTttZDU9M2ZlNjRlMjdlNjFiMjg5Yjc3MzgzYTU0YTk4MmNiZGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3lwc3kvZ3lwc3ktdGltZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTA2NDMyZWExOWE3YjY2MDc0MjhkMDRkOWRhZGMzN2ZkIgotCi1TUkNfVVJJICs9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9neXBzeSBcCi0gICAgICAgICAgICBmaWxlOi8vZml4dXBzLnBhdGNoIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgIyBmcm9tIHBhdGNoIDU2MzcxNmZjNTk2ZDUzZjEwODU5NDlhOWRkMTFhNjJmMzliMmQ2MjQKLSAgdGVzdCAtZCAke1N9L200IHx8IG1rZGlyIC1wICR7U30vbTQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQtZnB1LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQtZnB1LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiN2E5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LWZwdS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotZGVmIGdldF9uYXZpdF9mcHVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JyBdOgotICAgICAgICByZXR1cm4gIi0tZW5hYmxlLWF2b2lkLWZsb2F0IgotICAgIHJldHVybiAiIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzBiZmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTmF2aXQgaXMgYSBjYXIgbmF2aWdhdGlvbiBzeXN0ZW0gd2l0aCByb3V0aW5nIGVuZ2luZS4iCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQ1MzlkMDk5ZDZjZTA4ZGU2ZWEwZGZlZDllY2IzMzMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTEdQTC0yO21kNT0zMjE0ZjA4MDg3NTc0ODkzOGJhMDYwMzE0YjRmNzI3ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEwtMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotIgotCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbnMiCi1ERVBFTkRTID0gImdsaWItMi4wIGdkIGd5cHN5IGxpYnJzdmctbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiICR7UE59LWljb25zICR7UE59LWNvbmZpZyAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJncHNkICR7UE59LWRidXMgJHtQTn0tc3BlZWNoLWNtZGxpbmUgJHtQTn0tZ3VpLWludGVybmFsICR7UE59LWdyYXBoaWNzLWd0ayIKLVJTVUdHRVNUU18ke1BOfSA9ICJmbGl0ZS1hbHNhIGVzcGVhayAke1BOfS1zcGVlY2gtZGJ1cyAke1BOfS1ndWktZ3RrICR7UE59LWd1aS1xbWwgJHtQTn0tZ3JhcGhpY3Mtc2RsICR7UE59LWdyYXBoaWNzLXF0ICR7UE59LW1hcHRvb2wiCi0KLVBFID0gIjEiCi1JTkNfUFIgPSAicjExIgotCi0jIERlcGVuZHMgb24gZ3lwc3kKLVBOQkxBQ0tMSVNUW25hdml0XSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZnJpYmlkaV0gPSAiLS1lbmFibGUtZnJpYmlkaSwtLWRpc2FibGUtZnJpYmlkaSxmcmliaWRpIgotUEFDS0FHRUNPTkZJR1tpbWxpYjJdID0gIi0tZW5hYmxlLWltbGliMiwtLWRpc2FibGUtaW1saWIyLGltbGliMiIKLVBBQ0tBR0VDT05GSUdbc2RsXSA9ICItLWVuYWJsZS1ncmFwaGljcy1zZGwsLS1kaXNhYmxlLWdyYXBoaWNzLXNkbCxsaWJzZGwiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3JhcGhpY3MtZ3RrLWRyYXdpbmctYXJlYSAtLWVuYWJsZS1ndWktZ3RrLC0tZGlzYWJsZS1ncmFwaGljcy1ndGstZHJhd2luZy1hcmVhIC0tZGlzYWJsZS1ndWktZ3RrLGd0aysiCi1QQUNLQUdFQ09ORklHW3F0XSA9ICItLWVuYWJsZS1ncmFwaGljcy1xdC1xcGFpbnRlciAtLWVuYWJsZS1ndWktcW1sLC0tZGlzYWJsZS1ncmFwaGljcy1xdC1xcGFpbnRlciAtLWRpc2FibGUtZ3VpLXFtbCxxdDQteDExLWZyZWUscXQ0LXBsdWdpbi1pbWFnZWZvcm1hdC1zdmciCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtYmluZGluZy1weXRob24gXAotICAgIC0tZGlzYWJsZS1zYW1wbGVtYXAgXAotICAgIC0tZW5hYmxlLWF2b2lkLXVuYWxpZ25lZCBcCi0gICAgLS1lbmFibGUtc3ZnMnBuZy1zY2FsaW5nLWZsYWc9MzIgXAotICAgIC0tZGlzYWJsZS1zcGVlY2gtc3BlZWNoLWRpc3BhdGNoZXIgXAotICAgIC0tZW5hYmxlLWNhY2hlLXNpemU9MjA5NzE1MjAgXAotIgotCi0jICAtLWVuYWJsZS1hdm9pZC1mbG9hdCBcCi0jY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzCi1yZXF1aXJlIG5hdml0LWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X25hdml0X2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1tYXB0b29sICR7UE59LWNvbmZpZyAke1BOfS1kYnVzICR7UE59LXNwZWVjaC1jbWRsaW5lICR7UE59LXNwZWVjaC1kYnVzICR7UE59LWd1aS1ndGsgJHtQTn0tZ3VpLWludGVybmFsICR7UE59LWd1aS1xbWwgJHtQTn0tZ3JhcGhpY3Mtc2RsICR7UE59LWdyYXBoaWNzLWd0ayAke1BOfS1ncmFwaGljcy1xdCAke1BOfS1pY29ucyIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIgLUkgbTQiCi0KLUNPTkZGSUxFU18ke1BOfS1jb25maWcgKz0gIiR7ZGF0YWRpcn0vbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwgXAotICAgICR7ZGF0YWRpcn0vbmF2aXQvbmF2aXQueG1sIFwKLSAgICAke2RhdGFkaXJ9L25hdml0L21hcHMueG1sIFwKLSAgICAke2RhdGFkaXJ9L25hdml0L29zZC54bWwgXAotICAgICR7ZGF0YWRpcn0vbmF2aXQvc3BlZWNoLnhtbCBcCi0gICAgJHtkYXRhZGlyfS9uYXZpdC9wbHVnaW5zLnhtbCBcCi0iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9uYXZpdC54bWwgXAotICAgICAgICAgICAgZmlsZTovL21hcHMueG1sIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vc2QueG1sIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zcGVlY2gueG1sIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zLnhtbCBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyovKi5zbyAke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59LyovLmRlYnVnIgotRklMRVNfJHtQTn0tbWFwdG9vbCA9ICIgJHtiaW5kaXJ9L21hcHRvb2wgIgotRklMRVNfJHtQTn0tY29uZmlnID0gIiAke2RhdGFkaXJ9L25hdml0LyoueG1sICIKLUZJTEVTXyR7UE59LWRidXMgPSAiICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyAke2xpYmRpcn0vJHtCUE59L2JpbmRpbmcvbGliYmluZGluZ19kYnVzLnNvICIKLUZJTEVTXyR7UE59LXNwZWVjaC1jbWRsaW5lID0gIiAke2xpYmRpcn0vJHtCUE59L3NwZWVjaC9saWJzcGVlY2hfY21kbGluZS5zbyAiCi1GSUxFU18ke1BOfS1zcGVlY2gtZGJ1cyA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9zcGVlY2gvbGlic3BlZWNoX2RidXMuc28gIgotRklMRVNfJHtQTn0tZ3VpLWd0ayA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9ndWkvbGliZ3VpX2d0ay5zbyAiCi1GSUxFU18ke1BOfS1ndWktcW1sID0gIiAke2xpYmRpcn0vJHtCUE59L2d1aS9saWJndWlfcW1sLnNvICR7ZGF0YWRpcn0vbmF2aXQvc2tpbnMvICIKLUZJTEVTXyR7UE59LWd1aS1pbnRlcm5hbCA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9ndWkvbGliZ3VpX2ludGVybmFsLnNvICIKLUZJTEVTXyR7UE59LWdyYXBoaWNzLXNkbCA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9ncmFwaGljcy9saWJncmFwaGljc19zZGwuc28gIgotRklMRVNfJHtQTn0tZ3JhcGhpY3MtcXQgPSAiICR7bGliZGlyfS8ke0JQTn0vZ3JhcGhpY3MvbGliZ3JhcGhpY3NfcXRfcXBhaW50ZXIuc28gIgotRklMRVNfJHtQTn0tZ3JhcGhpY3MtZ3RrID0gIiAke2xpYmRpcn0vJHtCUE59L2dyYXBoaWNzL2xpYmdyYXBoaWNzX2d0a19kcmF3aW5nX2FyZWEuc28gIgotRklMRVNfJHtQTn0taWNvbnMgPSAiL3Vzci9zaGFyZS9uYXZpdC94cG0vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIE1PQz1gJFBLR19DT05GSUcgUXRHdWkgLS12YXJpYWJsZT1tb2NfbG9jYXRpb25gIHJldHVybnMgb25seSAvdXNyL2Jpbi9tb2M0IHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gaG9zdHMgd2l0aG91dCBRdAotICAgIHNlZCAtaSAicyNNT0M9I01PQz0ke1NUQUdJTkdfRElSX05BVElWRX0jZyIgJHtTfS9jb25maWd1cmUuaW4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBmaXggUUEgaXNzdWUKLSAgICBzZWQgLWkgJ3MjQ2F0ZWdvcmllcz1HVEs7VXRpbGl0eTtHZW9ncmFwaHk7I0NhdGVnb3JpZXM9R3JhcGhpY3M7I2cnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9uYXZpdC5kZXNrdG9wCi0KLSAgICBybSAke0R9JHtsaWJkaXJ9LyR7QlBOfS8qLyoubGEKLQotICAgICNVc2Ugc3BsaXQgY29uZmlnCi0gICAgbXYgJHtEfSR7ZGF0YWRpcn0vbmF2aXQvbmF2aXQueG1sICR7RH0ke2RhdGFkaXJ9L25hdml0L25hdml0LmRlZmF1bHQueG1sCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmF2aXQueG1sICR7RH0ke2RhdGFkaXJ9L25hdml0L25hdml0LnhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21hcHMueG1sICR7RH0ke2RhdGFkaXJ9L25hdml0L21hcHMueG1sCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3NkLnhtbCAke0R9JHtkYXRhZGlyfS9uYXZpdC9vc2QueG1sCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3BlZWNoLnhtbCAke0R9JHtkYXRhZGlyfS9uYXZpdC9zcGVlY2gueG1sCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGx1Z2lucy54bWwgJHtEfSR7ZGF0YWRpcn0vbmF2aXQvcGx1Z2lucy54bWwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvY29uZmlndXJlLmFkZC5pbWxpYjIub3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9jb25maWd1cmUuYWRkLmltbGliMi5vcHRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNDE3OTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9jb25maWd1cmUuYWRkLmltbGliMi5vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0gYS9jb25maWd1cmUuaW4ub3JpZwkyMDE0LTA1LTEwIDE1OjU3OjE4LjE0NjM2MjExMCArMDIwMAotKysrIGIvY29uZmlndXJlLmluCTIwMTQtMDUtMTAgMTU6NTk6MjcuODU5MzU4ODQ1ICswMjAwCi1AQCAtNDk4LDEwICs0OTgsMTMgQEAKLSBBQ19TVUJTVChGUklCSURJX0NGTEFHUykKLSBBQ19TVUJTVChGUklCSURJX0xJQlMpCi0gCi0rQUNfQVJHX0VOQUJMRShpbWxpYjIsIFsgIC0tZGlzYWJsZS1pbWxpYjIgIGRpc2FibGUgaW1saWIyIHN1cHBvcnRdLCBpbWxpYjI9JGVuYWJsZXZhbDtpbWxpYjJfcmVhc29uPSJjb25maWd1cmUgcGFyYW1ldGVyIiwgaW1saWIyPXllcykKLStpZiB0ZXN0IHgiJHtpbWxpYjJ9IiA9ICJ4eWVzIjsgdGhlbgotIFBLR19DSEVDS19NT0RVTEVTKElNTElCMiwgW2ltbGliMl0sIFtpbWxpYjJfcGtnY29uZmlnPXllc10sIFtpbWxpYjJfcGtnY29uZmlnPW5vXSkKLSBpZiB0ZXN0ICJ4JGltbGliMl9wa2djb25maWciID0gInh5ZXMiOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfSU1MSUIyLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgaW1saWIyXSkKLSBmaQotK2ZpCi0gQUNfU1VCU1QoSU1MSUIyX0NGTEFHUykKLSBBQ19TVUJTVChJTUxJQjJfTElCUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvZnJlZXR5cGUtaW5jbHVkZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9mcmVldHlwZS1pbmNsdWRlLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ODk5N2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9mcmVldHlwZS1pbmNsdWRlLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1EZXNjcmlwdGlvbjogRml4IEZUQkZTIGNhdXNlZCBieSBmcmVldHlwZSBoZWFkZXJzIHBhdGggY2hhbmdlLgotQXV0aG9yOiBHaWxsZXMgRmlsaXBwaW5pIDxwaW5pQGRlYmlhbi5vcmc+Ci1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzczMzM3OAotSW5kZXg6IG5hdml0L25hdml0L2ZvbnQvZnJlZXR5cGUvZm9udF9mcmVldHlwZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmF2aXQub3JpZy9uYXZpdC9mb250L2ZyZWV0eXBlL2ZvbnRfZnJlZXR5cGUuYwkyMDEzLTA5LTIzIDEwOjQzOjMyLjAwMDAwMDAwMCArMDIwMAotKysrIG5hdml0L25hdml0L2ZvbnQvZnJlZXR5cGUvZm9udF9mcmVldHlwZS5jCTIwMTMtMTItMzAgMTk6NTQ6NDUuMDAwMDAwMDAwICswMTAwCi1AQCAtMzIsNyArMzIsNyBAQAotICNpZiBVU0VfRlJJQklESQotICNpbmNsdWRlIDxmcmliaWRpLmg+Ci0gI2VuZGlmCi0tI2luY2x1ZGUgPGZyZWV0eXBlL2Z0Z2x5cGguaD4KLSsjaW5jbHVkZSA8ZnRnbHlwaC5oPgotICNpbmNsdWRlICJwb2ludC5oIgotICNpbmNsdWRlICJncmFwaGljcy5oIgotICNpbmNsdWRlICJkZWJ1Zy5oIgotZGlmZiAtdU5yIG5hdml0Lm9yaWcvbmF2aXQvZ3JhcGhpY3Mvc2RsL2dyYXBoaWNzX3NkbC5jIG5hdml0L25hdml0L2dyYXBoaWNzL3NkbC9ncmFwaGljc19zZGwuYwotLS0tIG5hdml0Lm9yaWcvbmF2aXQvZ3JhcGhpY3Mvc2RsL2dyYXBoaWNzX3NkbC5jCTIwMTItMDYtMjIgMTQ6MTY6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgbmF2aXQvbmF2aXQvZ3JhcGhpY3Mvc2RsL2dyYXBoaWNzX3NkbC5jCTIwMTQtMDEtMDEgMjI6MzE6MTAuODkyOTQ4MTY0ICswMTAwCi1AQCAtODQsNyArODQsNyBAQAotICNlbHNlCi0gI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+Ci0gI2luY2x1ZGUgRlRfRlJFRVRZUEVfSAotLSNpbmNsdWRlIDxmcmVldHlwZS9mdGdseXBoLmg+Ci0rI2luY2x1ZGUgPGZ0Z2x5cGguaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8ZXZlbnQuaD4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvbWFwcy54bWwgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L21hcHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjU5ZjIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvbWFwcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0gICAgICAgICAgICAgICAgPCEtLSBJZiB5b3UgaGF2ZSB0aGUgcmVpc2VwbGFuZXIgbWFwcyBpbnN0YWxsZWQsIHNldCBlbmFibGVkPSJ5ZXMiIGluIHRoZSBuZXh0IGxpbmUgYW5kIHNldCB0aGUgcGF0aCBjb3JyZWN0bHkgLS0+Ci0gICAgICAgICAgICAgICAgPG1hcHNldCBlbmFibGVkPSJubyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9Im1nIiBlbmFibGVkPSJ5ZXMiIGRhdGE9Ii9vcHQvcmVpc2VwbGFuZXIvdHJhdmVsL0RFLm1hcCIvPgotICAgICAgICAgICAgICAgICAgICAgICAgPG1hcCB0eXBlPSJtZyIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvb3B0L3JlaXNlcGxhbmVyL3RyYXZlbC9ERS5tYXAvc21wMS5zbXAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0ibWciIGVuYWJsZWQ9InllcyIgZGF0YT0iL29wdC9yZWlzZXBsYW5lci90cmF2ZWwvREUubWFwL3NtcDIuc21wIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9Im1nIiBlbmFibGVkPSJ5ZXMiIGRhdGE9Ii9vcHQvcmVpc2VwbGFuZXIvdHJhdmVsL0RFLm1hcC9zbXAzLnNtcCIvPgotICAgICAgICAgICAgICAgICAgICAgICAgPG1hcCB0eXBlPSJtZyIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvb3B0L3JlaXNlcGxhbmVyL3RyYXZlbC9ERS5tYXAvc21wNC5zbXAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0ibWciIGVuYWJsZWQ9InllcyIgZGF0YT0iL29wdC9yZWlzZXBsYW5lci90cmF2ZWwvREUubWFwL3NtcDUuc21wIi8+Ci0gICAgICAgICAgICAgICAgPC9tYXBzZXQ+Ci0KLSAgICAgICAgICAgICAgICA8IS0tIElmIHlvdSBkb250IHdhbnQgdG8gdXNlIHRoZSBzYW1wbGUgbWFwLCBlaXRoZXIgc2V0IGVuYWJsZWQ9Im5vIiBpbiB0aGUgbmV4dCBsaW5lIG9yIHJlbW92ZSB0aGUgeG1sIGZpbGUgZnJvbSB0aGUgbWFwcyBkaXJlY3RvcnkgLS0+Ci0gICAgICAgICAgICAgICAgPG1hcHNldCBlbmFibGVkPSJubyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8eGk6aW5jbHVkZSBocmVmPSIkTkFWSVRfU0hBUkVESVIvbWFwcy8qLnhtbCIvPgotICAgICAgICAgICAgICAgIDwvbWFwc2V0PgotCi0gICAgICAgICAgICAgICAgPCEtLSBNYXBzZXQgdGVtcGxhdGUgZm9yIG9wZW5zdHJlZXRtYXBzIC0tPgotICAgICAgICAgICAgICAgIDxtYXBzZXQgZW5hYmxlZD0ieWVzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0iYmluZmlsZSIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvbWVkaWEvbW1jMi9NYXBzTmF2aXQvb3NtX2V1cm9wZS5iaW4iLz4KLSAgICAgICAgICAgICAgICA8L21hcHNldD4KLQotICAgICAgICAgICAgICAgIDwhLS0gTWFwc2V0IHRlbXBsYXRlIGZvciBnYXJtaW4gbWFwcyAtLT4KLSAgICAgICAgICAgICAgICA8bWFwc2V0IGVuYWJsZWQ9Im5vIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0iZ2FybWluIiBlbmFibGVkPSJ5ZXMiIGRhdGE9Ii9wYXRoL3RvL2ltZyIgZGVidWc9IjQiLz4KLSAgICAgICAgICAgICAgICA8L21hcHNldD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvbmF2aXQueG1sIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9uYXZpdC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YzhjMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9uYXZpdC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIGNvbmZpZyBTWVNURU0gIm5hdml0LmR0ZCI+Ci08Y29uZmlnIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KLQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L3BsdWdpbnMueG1sIi8+Ci0JPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvZGVidWcpIi8+Ci0KLQk8bmF2aXQgY2VudGVyPSI0ODA4IE4gMTEzNCBFIiB6b29tPSIyNTYiIHRyYWNraW5nPSIxIiBvcmllbnRhdGlvbj0iLTEiIHJlY2VudF9kZXN0PSIxMCIgZHJhZ19iaXRtYXA9IjEiPgotCQk8Z3JhcGhpY3MgdHlwZT0iZ3RrX2RyYXdpbmdfYXJlYSIvPgotCQk8Z3VpIHR5cGU9Imd0ayIgZW5hYmxlZD0ibm8iIG1lbnViYXI9IjEiIHRvb2xiYXI9IjEiIHN0YXR1c2Jhcj0iMSIvPgotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9ndWlbQHR5cGU9J2ludGVybmFsJ10pIi8+Ci0JCTwhLS0gb3IgY29tbWVudCBndGsgdmVyc2lvbiBhYm92ZSBhbmQgdHJ5OgotCQlvcGtnIGluc3RhbGwgbmF2aXQtZ3JhcGhpY3MtcXQKLQkJb3BrZyBpbnN0YWxsIG5hdml0LWd1aS1xbWwKLQkJPGdyYXBoaWNzIHR5cGU9InF0X3FwYWludGVyIi8+Ci0JCTxndWkgdHlwZT0icW1sIiBlbmFibGVkPSJ5ZXMiIG1lbnViYXI9IjEiIHRvb2xiYXI9IjEiIHN0YXR1c2Jhcj0iMSIvPgotCQktLT4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9vc2QueG1sIi8+Ci0JCTxsb2cgZW5hYmxlZD0ibm8iIHR5cGU9InRleHRmaWxlX2RlYnVnIiBkYXRhPSJkZWJ1Z18lWSVtJWQtJWkudHh0IiBmbHVzaF9zaXplPSIxMDAwIiBmbHVzaF90aW1lPSIzMCIvPgotCQk8dmVoaWNsZSBuYW1lPSJMb2NhbCBHUFMiIHByb2ZpbGVuYW1lPSJjYXIiIGVuYWJsZWQ9InllcyIgYWN0aXZlPSIxIiBzb3VyY2U9Imdwc2Q6Ly9sb2NhbGhvc3QiIGdwc2RfcXVlcnk9IncreGoiPgotCQkJPCEtLSA8bG9nIHR5cGU9ImdweCIgYXR0cl90eXBlcz0icG9zaXRpb25fdGltZV9pc284NjAxLHBvc2l0aW9uX2RpcmVjdGlvbixwb3NpdGlvbl9zcGVlZCxwcm9maWxlbmFtZSxwb3NpdGlvbl9yYWRpdXMiIGRhdGE9InRyYWNrXyVZJW0lZC0laS5ncHgiIGZsdXNoX3NpemU9IjEwMDAiIGZsdXNoX3RpbWU9IjMwIi8+IC0tPgotCQk8L3ZlaGljbGU+Ci0KLQkJPHZlaGljbGUgbmFtZT0iRGVtbyIgcHJvZmlsZW5hbWU9ImNhciIgZW5hYmxlZD0ibm8iIGFjdGl2ZT0ieWVzIiBzb3VyY2U9ImRlbW86Ly8iLz4KLQotCQk8IS0tIEZvciB0aGUgY3VtdWxhdGl2ZSBkaXNwbGFjZW1lbnQgZmlsdGVyIHRvIGJlIGVuYWJsZWQsIHNldCBjZGZfaGlzdHNpemU9IngiIGhlcmUsIHdpdGggeCBiZWluZyBhbiBpbnRlZ2VyIHNvbWV3aGVyZSBhcm91bmQgNCAtLT4KLQkJPHRyYWNraW5nIGNkZl9oaXN0c2l6ZT0iMCIvPgotCi0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L3ZlaGljbGVwcm9maWxlW0BuYW1lPSdjYXInXSkiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvdmVoaWNsZXByb2ZpbGVbQG5hbWU9J2Jpa2UnXSkiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvdmVoaWNsZXByb2ZpbGVbQG5hbWU9J3BlZGVzdHJpYW4nXSkiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvdmVoaWNsZXByb2ZpbGVbQG5hbWU9J2hvcnNlJ10pIi8+Ci0KLQkJPHJvdXRlIGRlc3RpbmF0aW9uX2Rpc3RhbmNlPSI1MCIvPgotCi0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L25hdmlnYXRpb24pIi8+Ci0KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9zcGVlY2gueG1sIi8+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbWFwcy54bWwiLz4KLQotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9sYXlvdXRbQG5hbWU9J0NhciddKSIvPgotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9sYXlvdXRbQG5hbWU9J0Nhci1kYXJrJ10pIi8+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L2xheW91dFtAbmFtZT0nQmlrZSddKSIvPgotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9sYXlvdXRbQG5hbWU9J1RASCddKSIvPgotCTwvbmF2aXQ+Ci08L2NvbmZpZz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvb3NkLnhtbCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvb3NkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQwZjlmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L29zZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0gICAgICAgICAgICAgICAgPCEtLSBvc2QgaXRlbXMgYWxsb3cgdG8gcG9zaXRpb24gZGlzcGxheSBhbmQgY29udHJvbCBpdGVtcyBkaXJlY3RseSBvbiB0b3Agb2YgdGhlIG1hcDogLS0+Ci0gICAgICAgICAgICAgICAgPG9zZCBlbmFibGVkPSJubyIgdHlwZT0iY29tcGFzcyIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImV0YSIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9Im5hdmlnYXRpb25fZGlzdGFuY2VfdG9fdGFyZ2V0Ii8+Ci0gICAgICAgICAgICAgICAgPG9zZCBlbmFibGVkPSJubyIgdHlwZT0ibmF2aWdhdGlvbiIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9Im5hdmlnYXRpb25fZGlzdGFuY2VfdG9fbmV4dCIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9Im5hdmlnYXRpb25fbmV4dF90dXJuIi8+Ci0KLSAgICAgICAgICAgICAgICA8IS0tIENvbW1hbmRzIGluY2x1ZGUgZ3VpX2ludGVybmFsX21lbnUsIGd1aV9pbnRlcm5hbF9mdWxsc2NyZWVuLCB6b29tX2luIGFuZCB6b29tX291dC4KLSAgICAgICAgICAgICAgICAgICAgICAgICBVc2FnZSBvZiBuZWdhdGl2ZSB2YWx1ZXMgY2hhbmdlIHRoZSBidXR0b24gb3JpZ2lucy4geD0iMCIgeT0iMCIgc3BlY2lmaWVzIHRoZSB0b3AgbGVmdCwgeD0iLTAiIHk9Ii0wIiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lci4KLSAgICAgICAgICAgICAgICAgICAgICAgICBJdCdzIGFsd2F5cyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBpY29uLCBzbyB5b3UgbmVlZCB0byBjb25zaWRlciB0aGUgaWNvbidzIHNpemUgd2hlbiB5b3UgZW50ZXIgdGhlIHZhbHVlcy4gLS0+Ci0gICAgICAgICAgICAgICAgPG9zZCBlbmFibGVkPSJubyIgdHlwZT0iYnV0dG9uIiB4PSIwIiB5PSIwIiBjb21tYW5kPSJndWkuZnVsbHNjcmVlbigpIiBzcmM9InRvZ2dsZV9mdWxsc2NyZWVuLnhwbSIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImJ1dHRvbiIgeD0iLTk2IiB5PSIwIiBjb21tYW5kPSJndWkubWVudSgpIiBzcmM9Im1lbnUueHBtIi8+Ci0gICAgICAgICAgICAgICAgPG9zZCBlbmFibGVkPSJubyIgdHlwZT0iYnV0dG9uIiB4PSItOTYiIHk9Ii05NiIgY29tbWFuZD0iem9vbV9pbigpIiBzcmM9Inpvb21faW4ueHBtIi8+Ci0gICAgICAgICAgICAgICAgPG9zZCBlbmFibGVkPSJubyIgdHlwZT0iYnV0dG9uIiB4PSIwIiB5PSItOTYiIGNvbW1hbmQ9Inpvb21fb3V0KCkiIHNyYz0iem9vbV9vdXQueHBtIi8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L3BsdWdpbnMueG1sIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9wbHVnaW5zLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YjA1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L3BsdWdpbnMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08cGx1Z2lucz4KLQk8cGx1Z2luIHBhdGg9IiROQVZJVF9MSUJESVIvKi8ke05BVklUX0xJQlBSRUZJWH1saWIqLnNvIiBvbmRlbWFuZD0ieWVzIi8+Ci0JPHBsdWdpbiBwYXRoPSIkTkFWSVRfTElCRElSL2F1dG9sb2FkLyR7TkFWSVRfTElCUFJFRklYfWxpYiouc28iLz4KLQk8cGx1Z2luIHBhdGg9IiROQVZJVF9MSUJESVIvKi8ke05BVklUX0xJQlBSRUZJWH1saWJiaW5kaW5nX2RidXMuc28iIGFjdGl2ZT0ieWVzIi8+Ci0JPHBsdWdpbiBwYXRoPSIkTkFWSVRfTElCRElSLyovJHtOQVZJVF9MSUJQUkVGSVh9bGliZ3JhcGhpY3NfbnVsbC5zbyIgYWN0aXZlPSJubyIvPgotPC9wbHVnaW5zPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9zcGVlY2gueG1sIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9zcGVlY2gueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGM0OTkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvc3BlZWNoLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotICAgICAgICAgICAgICAgIDwhLS0gTmF2aXQgcHJvdmlkZXMgc3BlZWNoIG91dHB1dCBpbiB0ZXh0IGZvcm1hdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIHNwZWVjaCBzeW50aGVzaXplciBsaWtlIGZlc3RpdmFsIGxpdGUgaW5zdGFsbGVkLCB5b3UgY2FuIGdldCB0dXJuIGJ5IHR1cm4gZGlyZWN0aW9ucyBvdXQgb2YgbmF2aXQuIFBsZWFzZSBzZXQgdGhlICJjcHMiLXZhbHVlIHRvIGhvdyBtYW55IGNoYXJhY3RlcnMgeW91ciB0dHMgZW5naW5lIGFwcHJveGltYXRlbHkgc3BlYWtzIHBlciBzZWNvbmQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdGV4dCBvdXRwdXQgdG8gdGhlIHNoZWxsIC0tPgotICAgICAgICAgICAgICAgIDwhLS0gPHNwZWVjaCB0eXBlPSJjbWRsaW5lIiBkYXRhPSJlY2hvICdGaXggdGhlIHNwZWVjaCB0YWcgaW4gbmF2aXQueG1sIHRvIGxldCBuYXZpdCBzYXk6JyAnJXMnIiBjcHM9IjE1Ii8+IC0tPgotICAgICAgICAgICAgICAgIDwhLS0gPHNwZWVjaCB0eXBlPSJjbWRsaW5lIiBkYXRhPSJlc3BlYWsgLXMgMTUwIC12IGN6ZWNoICclcycgJmFtcDsiLz4gLS0+Ci0gICAgICAgICAgICAgICAgPCEtLSA8c3BlZWNoIHR5cGU9ImNtZGxpbmUiIGRhdGE9ImZsaXRlIC10ICclcyciLz4gLS0+Ci0gICAgICAgICAgICAgICAgPCEtLSA8c3BlZWNoIHR5cGU9ImNtZGxpbmUiIGRhdGE9Ii91c3IvbG9jYWwvYmluL3NheS5zaCAnJXMnIi8+IC0tPgotICAgICAgICAgICAgICAgIDxzcGVlY2ggdHlwZT0iY21kbGluZSIgZGF0YT0iZXNwZWFrICclcycgJmFtcDsiLz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXRfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZmJiNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdF9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIG5hdml0LmluYwotCi1TUkNSRVYgPSAiNTMxMCIKLVBWID0gIjAuMi4wK3N2bnIke1NSQ1BWfSIKLVBSID0gIiR7SU5DX1BSfS4zIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgotU1JDX1VSSSArPSAic3ZuOi8vYW5vbnltb3VzQG5hdml0LnN2bi5zb3VyY2Vmb3JnZS5uZXQvc3Zucm9vdC9uYXZpdC90cnVuazttb2R1bGU9bmF2aXQ7cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL2ZyZWV0eXBlLWluY2x1ZGUtcGF0aC5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS5hZGQuaW1saWIyLm9wdGlvbi5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzQuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGJmYWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzQuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJQUk9KLjQgLSBDYXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly90cmFjLm9zZ2VvLm9yZy9wcm9qLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NGQ5YWFlYzVmYTBjZDczNDM0MWU4YzRkYzkxYjYwOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL3Byb2ovcHJvai0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDgxNTgzOGM5MmEyOTE3OTI5OGMxMjZlZmZiYjE1MzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmRiMmRiZjBmZWNlOGQ5ODgwNjc5MTU0ZTBkNmQxY2U3YzY5NGRkOGUwOGI0ZDA5MTAyODA5M2Q4N2E5ZDFiNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3Byb2oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjkuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzQuOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NWY4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjkuMy5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlBST0ouNCAtIENhcnRvZ3JhcGhpYyBQcm9qZWN0aW9ucyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3RyYWMub3NnZW8ub3JnL3Byb2ovIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc0ZDlhYWVjNWZhMGNkNzM0MzQxZThjNGRjOTFiNjA4IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvcHJvai9wcm9qLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTk4MzM2Y2E4MzQ3NDI3MzUxMzdjNTY3NGIyMTRhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg0NTQyZmVhMzMzNDg4ZGU1YzgyZWVhNThkNjk5ZTRhZmY0YjM1OTIwMGE5OTcxNTM3Y2Q3ZTA0NzE4NWY3IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcHJvaiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1tYWlsXzMuOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLW1haWxfMy45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNGJhM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLW1haWxfMy45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TRUNUSU9OID0gIngxMS9uZXR3b3JrIgotU1VNTUFSWSA9ICJNYWlsIHVzZXIgYWdlbnQiCi1ERVBFTkRTID0gImd0aysgbGliZXRwYW4gb3BlbnNzbCBhc3BlbGwgY3VybCBsaWJnY3J5cHQiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTA1OWJkZTI5NzJjMTc5MGFmNzg2ZjNlODZiYWMyMmUiCi0KLVBOQkxBQ0tMSVNUW2NsYXdzLW1haWxdID89ICJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxpYmV0cGFuIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi0jIHRyYW5zbGF0aW9uIHBhdGNoOiBodHRwOi8vd3d3LnRoZXdpbGRiZWFzdC5jby51ay9jbGF3cy1tYWlsL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzc0Ci1TUkNfVVJJID0gIlwKLSAgICAgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvY2xhd3MtbWFpbC9DbGF3cyUyME1haWwvJHtQVn0vY2xhd3MtbWFpbC0ke1BWfS50YXIuYnoyO25hbWU9YXJjaGl2ZSAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0YzVhYzdiMjFmMGVkMTdkMGY2NDA0MTI0YzIyMjlhNCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVkNzA5NzVhNTA1NmIzZmZjNGZlNmU5NzdmMGQ5NjA2ZmViYzE0OTk3NjNjMDkwMjQxYjAyOWE3M2ZmMjRlNjUiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgY2QgJHtTfS9wbyA7IGZvciBQTyBpbiAqLnBvIDsgZG8gTU89YGVjaG8gJFBPIHwgc2VkIHMvXFwucG8vL2AuZ21vIDsgaWYgISB0ZXN0IC1mICRNTyA7IHRoZW4gbXNnZm10ICRQTyAtbyAkTU8gOyBmaSA7IGRvbmU7IGNkICR7Qn0KLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gInN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMiCi1QQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi0tZW5hYmxlLWVuY2hhbnQsLS1kaXNhYmxlLWVuY2hhbnQsZW5jaGFudCIKLVBBQ0tBR0VDT05GSUdbc3RhcnR1cC1ub3RpZmljYXRpb25dID0gIi0tZW5hYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbixzdGFydHVwLW5vdGlmaWNhdGlvbiIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIGRidXMtZ2xpYiIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCIKLQotIyBGSVhNRTogbWFlbW8gYnVpbGRzIG1heSB3YW50IC0tZW5hYmxlLW1hZW1vCi0jIEZJWE1FOiBzb21lIHBsYXRmb3JtcyBtYXkgd2FudCAtLWVuYWJsZS1nZW5lcmljLXVtcGMKLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1tYW51YWwgXAotICAgIC0tZGlzYWJsZS1jcmFzaC1kaWFsb2cgXAotICAgIC0tZGlzYWJsZS1qcGlsb3QgXAotICAgIC0tZGlzYWJsZS10cmF5aWNvbi1wbHVnaW4gXAotICAgIC0tZGlzYWJsZS1zcGFtYXNzYXNzaW4tcGx1Z2luIFwKLSAgICAtLWRpc2FibGUtYm9nb2ZpbHRlci1wbHVnaW4gXAotICAgIC0tZGlzYWJsZS1wZ3Bjb3JlLXBsdWdpbiBcCi0gICAgLS1kaXNhYmxlLXBncG1pbWUtcGx1Z2luIFwKLSAgICAtLWRpc2FibGUtcGdwaW5saW5lLXBsdWdpbiBcCi0gICAgLS1kaXNhYmxlLWRpbGxvLXZpZXdlci1wbHVnaW4gXAotICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0iCi0KLSMgUmVtb3ZlIGVuY2hhbnQgcmVmZXJlbmNlczoKLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0lOQ0RJUn06JHtpbmNsdWRlZGlyfTpnO3M6JHtTVEFHSU5HX0xJQkRJUn06JHtsaWJkaXJ9OmcnIGNsYXdzLW1haWwucGMKLX0KLQotIyBXb3JrLWFyb3VuZCBicm9rZW4gR1BFIGljb24gbG9va3VwOgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXIgJHtEfSR7ZGF0YWRpcn0vaWNvbnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L3BpeG1hcHMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jbGF3cy1tYWlsLnBuZyAke0R9JHtkYXRhZGlyfS9waXhtYXBzLwotICAgIHNlZCAtaSAncy9JY29uPVteLl0qJC8mLnBuZy8nICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9jbGF3cy1tYWlsLmRlc2t0b3AKLX0KLQotUlNVR0dFU1RTXyR7UE59ID0gImNsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXIgY2xhd3MtcGx1Z2luLW1haWxtYm94IGNsYXdzLXBsdWdpbi1yc3N5bCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tZ3RraHRtbDItdmlld2VyL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tZ3RraHRtbDItdmlld2VyL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIyYTc5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlci9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1JbmRleDogZ3RraHRtbDJfdmlld2VyLTAuMzEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3RraHRtbDJfdmlld2VyLTAuMzEub3JpZy9jb25maWd1cmUuYWMJMjAxMS0wOC0yNyAwODowODo1NS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBndGtodG1sMl92aWV3ZXItMC4zMS9jb25maWd1cmUuYWMJMjAxNC0wNy0xOCAwNzoyODo0Mi43Njk1MTg2MTggKzAwMDAKLUBAIC0xLDMzICsxLDI3IEBACi0gQUNfUFJFUkVRKDIuNjApCi0tQUNfSU5JVChzcmMvZ3RraHRtbDJfdmlld2VyLmMpCi0rCi0rZG5sIHBsdWdpbiB2ZXJzaW9uCi0rbTRfZGVmaW5lKFtwbHVnaW5fbWFqb3JfdmVyc2lvbl0sWzBdKQotK200X2RlZmluZShbcGx1Z2luX21pbm9yX3ZlcnNpb25dLFszMV0pCi0rbTRfZGVmaW5lKFtwbHVnaW5fbWljcm9fdmVyc2lvbl0sWzBdKQotK200X2RlZmluZShbcGx1Z2luX3ZlcnNpb25dLCBbcGx1Z2luX21ham9yX3ZlcnNpb24ucGx1Z2luX21pbm9yX3ZlcnNpb24ucGx1Z2luX21pY3JvX3ZlcnNpb25dKQotKwotK0FDX0lOSVQoZ3RraG1sMl92aWV3ZXIsIHBsdWdpbl92ZXJzaW9uKQotK0FDX0NPTkZJR19TUkNESVIoc3JjL2d0a2h0bWwyX3ZpZXdlci5jKQotIEFDX0NPTkZJR19BVVhfRElSKGNvbmZpZykKLSBBTV9NQUlOVEFJTkVSX01PREUKLSAKLSBQQUNLQUdFPWd0a2h0bWwyX3ZpZXdlcgotIAotLWRubCBwbHVnaW4gdmVyc2lvbgotLU1BSk9SX1ZFUlNJT049MAotLU1JTk9SX1ZFUlNJT049MzEKLS1NSUNST19WRVJTSU9OPTAKLStNQUpPUl9WRVJTSU9OPXBsdWdpbl9tYWpvcl92ZXJzaW9uCi0rTUlOT1JfVkVSU0lPTj1wbHVnaW5fbWlub3JfdmVyc2lvbgotK01JQ1JPX1ZFUlNJT049cGx1Z2luX21pY3JvX3ZlcnNpb24KLSBFWFRSQV9WRVJTSU9OPTAKLS0KLS1pZiB0ZXN0IFwoICRFWFRSQV9WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgIGlmIHRlc3QgXCggJE1JQ1JPX1ZFUlNJT04gLWVxIDAgXCk7IHRoZW4KLS0gICAgICAgIFZFUlNJT049JHtNQUpPUl9WRVJTSU9OfS4ke01JTk9SX1ZFUlNJT059IAotLSAgICBlbHNlCi0tCQlWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfS4ke01JQ1JPX1ZFUlNJT059Ci0tICAgIGZpCi0tZWxzZQotLSAgICBpZiB0ZXN0IFwoICRNSUNST19WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgICAgICBWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfWN2cyR7RVhUUkFfVkVSU0lPTn0KLS0gICAgZWxzZQotLQkJVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn0uJHtNSUNST19WRVJTSU9OfWN2cyR7RVhUUkFfVkVSU0lPTn0KLS0gICAgZmkKLS1maQotK1ZFUlNJT049cGx1Z2luX3ZlcnNpb24KLSAKLSBBQ19DQU5PTklDQUxfU1lTVEVNCi0gCi0tQU1fSU5JVF9BVVRPTUFLRSgkUEFDS0FHRSwgJFZFUlNJT04sIG5vLWRlZmluZSkKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vLWRlZmluZV0pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0gQUNfREVGSU5FX1VOUVVPVEVEKFBMVUdJTlZFUlNJT04sICIkVkVSU0lPTiIsIFtwbHVnaW4gdmVyc2lvbl0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlcl8wLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXJfMC4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliNDFiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlcl8wLjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU0VDVElPTiA9ICJ4MTEvbmV0d29yayIKLVNVTU1BUlkgPSAiTWFpbCB1c2VyIGFnZW50IHBsdWdpbnMiCi1ERVBFTkRTID0gImNsYXdzLW1haWwgZ3RraHRtbDIgY3VybCIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NzdmMDRhODA0OGMwNDY4NGU1MjFjMDZlMjg0NGE5NCIKLQotUE5CTEFDS0xJU1RbY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlcl0gPz0gImRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgY2xhd3MtbWFpbCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jbGF3cy1tYWlsLm9yZy9kb3dubG9hZHMvcGx1Z2luc19vYnNvbGV0ZS9ndGtodG1sMl92aWV3ZXItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNmM5ZGZhNmY5NjljY2Q4NDQ3OTZhNTcyNGI1MjE2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDQxZjZkOTYxZWZhYWMwZjUxNzA1ZTUwNTJiYWM3MzJiYzBiZGFmZWUyZWYyMDgyYTljZjlkODlmMTgzYWU1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1TID0gIiR7V09SS0RJUn0vZ3RraHRtbDJfdmlld2VyLSR7UFZ9IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8qLmEiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tbWFpbG1ib3hfMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tbWFpbG1ib3hfMS4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2YjVkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLW1haWxtYm94XzEuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TRUNUSU9OID0gIngxMS9uZXR3b3JrIgotU1VNTUFSWSA9ICJNYWlsIHVzZXIgYWdlbnQgcGx1Z2lucyIKLURFUEVORFMgPSAiY2xhd3MtbWFpbCIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUE5CTEFDS0xJU1RbY2xhd3MtcGx1Z2luLW1haWxtYm94XSA/PSAiZGVwZW5kcyBvbiBibGFja2xpc3RlZCBjbGF3cy1tYWlsIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY2xhd3MtbWFpbC5vcmcvZG93bmxvYWRzL3BsdWdpbnNfb2Jzb2xldGUvbWFpbG1ib3gtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjdmNzJjNjhlNmUxYTg3NjhmMTI0N2Y0NTVmZDIwYjYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzM2Y3ODM1MjYxYzg4YTBhYTA2ZGUzODU1M2FjOTM1YTE3OTlhNzEyODEyMDk2M2E3ZmE4N2FjZTAxZGFjMTgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TID0gIiR7V09SS0RJUn0vbWFpbG1ib3gtJHtQVn0iCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyouYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWwvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1yc3N5bC9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YTM4ZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1yc3N5bC9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1JbmRleDogcnNzeWwtMC4zNC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSByc3N5bC0wLjM0Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTggMDc6Mzc6MjguOTgxNTMyOTU5ICswMDAwCi0rKysgcnNzeWwtMC4zNC9jb25maWd1cmUuYWMJMjAxNC0wNy0xOCAwNzozOTo0NS44ODE1MzY2OTAgKzAwMDAKLUBAIC0xLDUgKzEsMTMgQEAKLSsKLStkbmwgcGx1Z2luIHZlcnNpb24KLSttNF9kZWZpbmUoW3BsdWdpbl9tYWpvcl92ZXJzaW9uXSxbMF0pCi0rbTRfZGVmaW5lKFtwbHVnaW5fbWlub3JfdmVyc2lvbl0sWzM0XSkKLSttNF9kZWZpbmUoW3BsdWdpbl9taWNyb192ZXJzaW9uXSxbMF0pCi0rbTRfZGVmaW5lKFtwbHVnaW5fdmVyc2lvbl0sIFtwbHVnaW5fbWFqb3JfdmVyc2lvbi5wbHVnaW5fbWlub3JfdmVyc2lvbi5wbHVnaW5fbWljcm9fdmVyc2lvbl0pCi0rCi0gQUNfUFJFUkVRKDIuNjApCi0tQUNfSU5JVChzcmMvcGx1Z2luLmMpCi0rQUNfSU5JVChyc3N5bCwgcGx1Z2luX3ZlcnNpb24pCi0rQUNfQ09ORklHX1NSQ0RJUihzcmMvcGx1Z2luLmMpCi0gQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQotIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQotQEAgLTcsMjggKzE1LDE1IEBACi0gUEFDS0FHRT1yc3N5bAotIAotIGRubCBwbHVnaW4gdmVyc2lvbgotLU1BSk9SX1ZFUlNJT049MAotLU1JTk9SX1ZFUlNJT049MzQKLS1NSUNST19WRVJTSU9OPTAKLStNQUpPUl9WRVJTSU9OPXBsdWdpbl9tYWpvcl92ZXJzaW9uCi0rTUlOT1JfVkVSU0lPTj1wbHVnaW5fbWlub3JfdmVyc2lvbgotK01JQ1JPX1ZFUlNJT049cGx1Z2luX21pY3JvX3ZlcnNpb24KLSBFWFRSQV9WRVJTSU9OPTAKLS0KLS1pZiB0ZXN0IFwoICRFWFRSQV9WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgIGlmIHRlc3QgXCggJE1JQ1JPX1ZFUlNJT04gLWVxIDAgXCk7IHRoZW4KLS0gICAgICAgIFZFUlNJT049JHtNQUpPUl9WRVJTSU9OfS4ke01JTk9SX1ZFUlNJT059IAotLSAgICBlbHNlCi0tCQlWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfS4ke01JQ1JPX1ZFUlNJT059Ci0tICAgIGZpCi0tZWxzZQotLSAgICBpZiB0ZXN0IFwoICRNSUNST19WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgICAgICBWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfWN2cyR7RVhUUkFfVkVSU0lPTn0KLS0gICAgZWxzZQotLQkJVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn0uJHtNSUNST19WRVJTSU9OfWN2cyR7RVhUUkFfVkVSU0lPTn0KLS0gICAgZmkKLS1maQotK1ZFUlNJT049cGx1Z2luX3ZlcnNpb24KLSAKLSBBQ19DQU5PTklDQUxfU1lTVEVNCi0gCi0tQU1fSU5JVF9BVVRPTUFLRSgkUEFDS0FHRSwgJFZFUlNJT04sIG5vLWRlZmluZSkKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vLWRlZmluZV0pCi0gQUNfREVGSU5FX1VOUVVPVEVEKFBMVUdJTlZFUlNJT04sICIkVkVSU0lPTiIsIFtwbHVnaW4gdmVyc2lvbl0pCi0gCi0gQUNfUFJPR19DQwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1yc3N5bF8wLjM0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1yc3N5bF8wLjM0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWM5YTJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWxfMC4zNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNFQ1RJT04gPSAieDExL25ldHdvcmsiCi1TVU1NQVJZID0gIk1haWwgdXNlciBhZ2VudCBwbHVnaW5zIgotREVQRU5EUyA9ICJjbGF3cy1tYWlsIGxpYnhtbDIgY3VybCBnbGliLTIuMCBndGsrIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjMjM0OGUwYTA4NGU1NzNmMDIyMGY1ZTQ1ZDgwOTdlIgotCi1QTkJMQUNLTElTVFtjbGF3cy1wbHVnaW4tcnNzeWxdID89ICJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGNsYXdzLW1haWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jbGF3cy1tYWlsLm9yZy9kb3dubG9hZHMvcGx1Z2luc19vYnNvbGV0ZS9yc3N5bC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5YjQ1NjA4ZThkMTYwYjM2MjVkM2Q1MDAxNmVjMmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlOTZhMWNkNmExYTViYjdmODZjZDJlYjQ4ZjZlMTc0NjY1OTU3ZmFmZTFmM2IxZTgzNjFhYWMzYmI5NjdmNzkiCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1TID0gIiR7V09SS0RJUn0vcnNzeWwtJHtQVn0iCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyouYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9zeWxwaGVlZC9nbGliLTIuMzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvc3lscGhlZWQvZ2xpYi0yLjMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTIwZTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9zeWxwaGVlZC9nbGliLTIuMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gc3lscGhlZWQtMi43LjEub3JpZy9saWJzeWxwaC9kZWZzLmgJMjAwOS0wNi0xMCAwOTo1NTo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBzeWxwaGVlZC0yLjcuMS9saWJzeWxwaC9kZWZzLmgJMjAxMi0wNS0wNiAwODoyODoyNy41MTQ3NDYyNTYgKzAyMDAKLUBAIC0yNCw4ICsyNCw2IEBACi0gIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGdsaWJjb25maWcuaD4KLS0KLSAjaWZkZWYgR19PU19XSU4zMgotICMgIGluY2x1ZGUgPGdsaWIvZ3dpbjMyLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvc3lscGhlZWRfMi43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvc3lscGhlZWRfMi43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGQ3NzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL3N5bHBoZWVkXzIuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU0VDVElPTiA9ICJ4MTEvbmV0d29yayIKLVNVTU1BUlkgPSAiTWFpbCB1c2VyIGFnZW50IgotREVQRU5EUyA9ICJndGsrIGdwZ21lIGdudXRscyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3N5bHBoZWVkLnNyYW9zcy5qcC9zeWxwaGVlZC92Mi43L3N5bHBoZWVkLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9nbGliLTIuMzIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjFmNDcwNTI1YzFmYmU1MzI1MzgxM2EwOTc4YzE4MjI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiYjY0NTdkYjRlMmVlYTE4NzdiNDg3ZDlhYzg1MTM1NDYzNzJkYjlhNmEyZTQyNzFkMTEyMjlmNGFmODRlMjMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BpeG1hcHMgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3NsIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wIG00Ci0gICAgZm9yIGkgaW4gJChmaW5kICR7U30gLW5hbWUgIk1ha2VmaWxlLmFtIikgOyBkbwotICAgICAgICBzZWQgLWkgczonLUkkKGluY2x1ZGVkaXIpJzo6ZyAkaQotICAgIGRvbmUKLX0KLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLQotUE5CTEFDS0xJU1Rbc3lscGhlZWRdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjUxLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXBjdXBzZC9hcGN1cHNkXzMuMTQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FwY3Vwc2QvYXBjdXBzZF8zLjE0LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGM1NGE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXBjdXBzZC9hcGN1cHNkXzMuMTQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkFwY3Vwc2QgYSBkYWVtb24gZm9yIGNvbnRyb2xsaW5nIEFQQyBVUFNlcyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMxMjg1M2NjN2ZkZjIwZDE3YjRmZGRlZmQyNmI3ODAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nYXJyLmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L2FwY3Vwc2QvYXBjdXBzZCUyMC0lMjBTdGFibGUvMy4xNC4xMC9hcGN1cHNkLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1OTI4ODIyZDg1NWM1Y2Y3YWMyOTY1NWUzZTBiOGMyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzA3YjVlYzk5MTZmYmRlOWU0NGViOGQxODAzN2M4ZDhmNzVkZmQ2YWVlZjUxYWJhNTQ4N2UxODllZWYyMDMyIgotCi1QTkJMQUNLTElTVFthcGN1cHNkXSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotTEQgPSAiJHtDWFh9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXVzYiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRpc3RuYW1lPSR7RElTVFJPfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGV4cG9ydCB0b3BkaXI9JHtTfQotICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vYXV0b2NvbmYvY29uZmlndXJlLmluICR7U30KLQotICAgIGlmICEgWyAtZCAke1N9L3BsYXRmb3Jtcy8ke0RJU1RST30gXSA7IHRoZW4KLSAgICAgICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS9wbGF0Zm9ybXMvdW5rbm93biAke1N9L3BsYXRmb3Jtcy8ke0RJU1RST30KLSAgICBmaQotCi0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgIyBpbnN0YWxsIC0taGVscCBzYXlzICctYycgaXMgYW4gaWdub3JlZCBvcHRpb24sIGJ1dCBpdCB0dXJucyBvdXQgdGhhdCB0aGUgYXJndW1lbnQgdG8gLWMgaXNuJ3QgaWdub3JlZCwgc28gZHJvcCB0aGUgY29tcGxldGUgJy1jIHBhdGgvdG8vc3RyaXAnIGxpbmUKLSAgICBzZWQgLWkgLWUgJ3M6JChJTlNUQUxMX1BST0dSQU0pICQoU1RSSVApOiQoSU5TVEFMTF9QUk9HUkFNKTpnJyAke1N9L2F1dG9jb25mL3RhcmdldHMubWFrCi0gICAgIyBTZWFyY2hpbmcgaW4gaG9zdCBkaXJzIHRyaWdnZXJzIHRoZSBRQSBjaGVja3MKLSAgICBzZWQgLWkgLWUgJ3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6OmcnIC1lICdzOi1ML3Vzci9sb2NhbC9saWI2NDo6ZycgLWUgJ3M6LUwvdXNyL2xvY2FsL2xpYjo6ZycgJHtTfS9jb25maWd1cmUKLQotICAgICMgbTQgbWFjcm9zIGFyZSBtaXNzaW5nLCB1c2luZyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIGxlYWRzIHRvIGxpbmtpbmcgZXJyb3JzIHdpdGggZ2V0aG9zdG5hbWVfcmUKLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtICR7RH0ke2RhdGFkaXJ9L2hhbCAtcmYKLX0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1jb25maWd1cmUuYWMtYWRkLWNoZWNrLWZvci1OT19HRVRDT05URVhULWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1jb25maWd1cmUuYWMtYWRkLWNoZWNrLWZvci1OT19HRVRDT05URVhULWRlZmluaXRpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1jb25maWd1cmUuYWMtYWRkLWNoZWNrLWZvci1OT19HRVRDT05URVhULWRlZmluaXRpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy9tdXNsX2hlYWRlcl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy9tdXNsX2hlYWRlcl9maXgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjYuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjYuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODgzYzcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiQ2VyZXMgU29sdmVyIGlzIGFuIG9wZW4gc291cmNlIEMrKyBsaWJyYXJ5IGZvciBtb2RlbGluZyBhbmQgc29sdmluZyBsYXJnZSwgY29tcGxpY2F0ZWQgb3B0aW1pemF0aW9uIHByb2JsZW1zLiIKK0FVVEhPUiA9ICJTYW1lZXIgQWdhcndhbCBhbmQgS2VpciBNaWVybGUgYW5kIE90aGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZXJlcy1zb2x2ZXIub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNWUwMGYwYzRjOTZhMDgyMGEwM2UwYjMxZTY0MTZiZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXIuZ2l0IgorU1JDUkVWID0gIjE5MzMzYjBmNTVjODQ2MjM4MTAzOGU3MGQ0MmFmNDNiNTI5NDExMjgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibGliZWlnZW4gZ2xvZyIKKworaW5oZXJpdCBjbWFrZQorCisjIE9ubHkgYSBzdGF0aWMgbGlicmFyeSBhbmQgaGVhZGVycyBhcmUgY3JlYXRlZAorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYgppbmRleCBkZWY1OGRiLi44NGU5YmNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzXzAuNzYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29sc18wLjc2LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJESkIgZGFlbW9udG9vbHMiCitIT01FUEFHRSA9ICJodHRwOi8vY3IueXAudG8vZGFlbW9udG9vbHMuaHRtbCIKIERFU0NSSVBUSU9OID0gInN1cGVydmlzZSBtb25pdG9ycyBhIHNlcnZpY2UuIEl0IHN0YXJ0cyB0aGUgc2VydmljZSBhbmQgcmVzdGFydHMgdGhlIFwKIHNlcnZpY2UgaWYgaXQgZGllcy4gVGhlIGNvbXBhbmlvbiBzdmMgcHJvZ3JhbSBzdG9wcywgcGF1c2VzLCBvciByZXN0YXJ0cyBcCiB0aGUgc2VydmljZSBvbiBzeXNhZG1pbiByZXF1ZXN0LiBUaGUgc3ZzdGF0IHByb2dyYW0gcHJpbnRzIGEgb25lLWxpbmUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RlYnN1bXMvZGVic3Vtc18yLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2YyMGViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCitTVU1NQVJZXyR7UE59LWNyb24gPSAiQ3JvbiBzY3JpcHRzIHRvIGNvbnRyb2wgYXV0b21hdGljIGRlYnN1bSBjaGVja2luZyIKK0RFU0NSSVBUSU9OID0gIkEgdG9vbCBmb3IgdmVyaWZpY2F0aW9uIG9mIGluc3RhbGxlZCBwYWNrYWdlIGZpbGVzIGFnYWluc3QgXAorTUQ1IGNoZWNrc3VtcyBkZWJzdW1zIGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBcCithZ2FpbnN0IE1ENSBjaGVja3N1bXMgaW5zdGFsbGVkIGJ5IHRoZSBwYWNrYWdlLCBvciBnZW5lcmF0ZWQgZnJvbSBhIC5kZWIgXAorYXJjaGl2ZS4iCitERVNDUklQVElPTl8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBzeXN0ZW0gaW50ZWdyaXR5IFwKK2NoZWNraW5nIHZpYSBkZWJzdW1zLiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT03NzBkNzUxNTUzZTY1NTllOWVhZWZkMmUxMWNjZjdlOSIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDUzMFQyMTIxMDhaL3Bvb2wvbWFpbi9kL2RlYnN1bXMvZGVic3Vtc18yLjIuMi50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiODJiMDcxMDg1NWE3ZTUyMTJkNDM1ODE2M2EyNjllNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE2MTg5NmY5M2E2YmJmZTAxNjFjMjFkY2Q2NzUyOWFlOGUxZWM4YzNjY2YyNDQ1MjNjNTJjNGFkODI1M2Q5NyIKKworIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK2luaGVyaXQgcGVybG5hdGl2ZSBnZXR0ZXh0CisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseSAke0R9JHtzYmluZGlyfSAke0R9JHtiaW5kaXJ9CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xICR7RH0ke21hbmRpcn0vbWFuOAorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgZGVic3VtcyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcmRlYnN1bXMgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGRlYnN1bXNfaW5pdCAke0R9JHtzYmluZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgbWFuL2RlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vcmRlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vZGVic3Vtc19pbml0LjggJHtEfSR7bWFuZGlyfS9tYW44LworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24uZGFpbHkgXAorICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5L2RlYnN1bXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLndlZWtseSBcCisgICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5L2RlYnN1bXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLm1vbnRobHkgXAorICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkvZGVic3VtcworICAgICAgICAjIE11c3QgZXhpc3QsIGRlZmF1bHRzIHRvIGVtcHR5LgorICAgICAgICB0b3VjaCAke0R9LyR7c3lzY29uZmRpcn0vZGVic3Vtcy1pZ25vcmUKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWNyb24iCisKK1JERVBFTkRTXyR7UE59ID0gImRwa2cgZHBrZy1wZXJsIGxpYmZpbGUtZm5tYXRjaC1wZXJsIHBlcmwgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtZGlnZXN0LW1kNSBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1lcnJubyBwZXJsLW1vZHVsZS1mY250bCBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IgorCitGSUxFU18ke1BOfS1jcm9uID0gIiR7c3lzY29uZmRpcn0vY3Jvbi4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbC1uYXRpdmVfMC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbC1uYXRpdmVfMC45LmJiCmluZGV4IDdhN2E2NjIuLmFlY2EyM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWwtbmF0aXZlXzAuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RmdS11dGlsL2RmdS11dGlsLW5hdGl2ZV8wLjkuYmIKQEAgLTgsOSArOCw4IEBACiAKIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX1RPT0xTfSIKIGRvX2RlcGxveSgpIHsKLSAgICBpbnN0YWxsIC1kICR7REVQTE9ZX0RJUl9UT09MU30KLSAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL2RmdS11dGlsX3N0YXRpYyAke0RFUExPWV9ESVJfVE9PTFN9L2RmdS11dGlsLSR7UFZ9Ci0gICAgcm0gLWYgJHtERVBMT1lfRElSX1RPT0xTfS9kZnUtdXRpbAotICAgIGxuIC1zZiAuL2RmdS11dGlsLSR7UFZ9ICR7REVQTE9ZX0RJUl9UT09MU30vZGZ1LXV0aWwKKyAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL2RmdS11dGlsX3N0YXRpYyAke0RFUExPWURJUn0vZGZ1LXV0aWwtJHtQVn0KKyAgICBybSAtZiAke0RFUExPWURJUn0vZGZ1LXV0aWwKKyAgICBsbiAtc2YgLi9kZnUtdXRpbC0ke1BWfSAke0RFUExPWURJUn0vZGZ1LXV0aWwKIH0KIGFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19wYWNrYWdlIGFmdGVyIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWxfMC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbF8wLjkuYmIKaW5kZXggMDFiY2EyMi4uNzZlMTU1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbF8wLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbF8wLjkuYmIKQEAgLTEsNCArMSw1IEBACiBERVNDUklQVElPTiA9ICJVU0IgRGV2aWNlIEZpcm13YXJlIFVwZ3JhZGUgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kZnUtdXRpbC5zb3VyY2Vmb3JnZS5uZXQiCiBTRUNUSU9OID0gImRldmVsIgogQVVUSE9SID0gIkhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+IgogTElDRU5TRSA9ICJHUEx2MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjdkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuMy40LmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCitERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKK3VuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKK2Zvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKK1NFQ1RJT04gPSAic3VwcG9ydCIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MWI3OGZjYTc4NGRiMjRmNGE0MGUzMGIzMDA3ODdmM2YiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCisKKyMgUmVsZWFzZSA3LjMuNAorU1JDUkVWID0gIjgzODFiYTRlMWM0Y2Q1Y2U5OGViZDljMjQ3MjZkNTFjYjIwM2NkZTAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCisKK2luaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCisKKyMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCisjIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKKyMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KKyMgUEFDS0FHRUNPTkZJRy4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy0yMy40L25vc3RkbGliLXVud2luZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3MtMjMuNC9ub3N0ZGxpYi11bndpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMDAzMDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy0yMy40L25vc3RkbGliLXVud2luZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUZpeCBsaW5raW5nIHByb2JsZW06Ci11bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FlYWJpX3Vud2luZF9jcHBfcHIwJwotdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hZWFiaV91bndpbmRfY3BwX3ByMScKLUluZGV4OiBlbWFjcy9zcmMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbWFjcy5vcmlnL3NyYy9NYWtlZmlsZS5pbgkyMDA4LTA4LTE2IDE0OjIwOjE4LjAwMDAwMDAwMCArMDAwMAotKysrIGVtYWNzL3NyYy9NYWtlZmlsZS5pbgkyMDA4LTA4LTE2IDE0OjUxOjI1LjAwMDAwMDAwMCArMDAwMAotQEAgLTQ0Myw3ICs0NDMsNyBAQAotICAgIGFzayBHQ0MgZXhwbGljaXRseSB3aGVyZSB0byBmaW5kIGxpYmdjYy5hLiAgKi8KLSAKLSAjaWZuZGVmIExJTktFUgotLSNkZWZpbmUgTElOS0VSICQoQ0MpIC1ub3N0ZGxpYgotKyNkZWZpbmUgTElOS0VSICQoQ0MpIC1ub3N0ZGxpYiAtbGdjY19zCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBMSUJfR0NDCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzLTIzLjQvdXNlLXFlbXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzLTIzLjQvdXNlLXFlbXUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNTIwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy0yMy40L3VzZS1xZW11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLWRpZmYgLXVOciBlbWFjcy0yMy40L01ha2VmaWxlLmluIGVtYWNzLTIzLjQubmV3L01ha2VmaWxlLmluCi0tLS0gZW1hY3MtMjMuNC9NYWtlZmlsZS5pbgkyMDEyLTAxLTExIDEzOjM1OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGVtYWNzLTIzLjQubmV3L01ha2VmaWxlLmluCTIwMTItMDctMzEgMDA6NTQ6MDcuMjIzNTkwODY2ICswMjAwCi1AQCAtMzM2LDcgKzMzNiw3IEBACi0gIyBhbGwgcHJlbG9hZGVkIGVsaXNwIGZpbGVzLCBhbmQgb25seSB0aGVuIGR1bXAgdGhlIGFjdHVhbCBzcmMvZW1hY3MsIHdoaWNoCi0gIyBpcyBub3Qgd3JvbmcsIGJ1dCBpcyBvdmVya2lsbCBpbiA5OS45OSUgb2YgdGhlIGNhc2VzLgotIHNyYzogTWFrZWZpbGUgRlJDCi0tCWJvb3Q9Ym9vdHN0cmFwLWVtYWNzJChFWEVFWFQpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCWJvb3Q9JHtRRU1VfSBib290c3RyYXAtZW1hY3MkKEVYRUVYVCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAJaWYgWyAhIC14ICJzcmMvJCRib290IiBdOyB0aGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAJICAgIGNkICRAOyAkKE1BS0UpIGFsbCAkKE1GTEFHUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAJICAgICAgQ0M9JyR7Q0N9JyBDRkxBR1M9JyR7Q0ZMQUdTfScgQ1BQRkxBR1M9JyR7Q1BQRkxBR1N9JyAgICAgICAgIFwKLWRpZmYgLXVOciBlbWFjcy0yMy40L2xlaW0vTWFrZWZpbGUuaW4gZW1hY3MtMjMuNC5uZXcvbGVpbS9NYWtlZmlsZS5pbgotLS0tIGVtYWNzLTIzLjQvbGVpbS9NYWtlZmlsZS5pbgkyMDEyLTAxLTExIDEzOjM1OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGVtYWNzLTIzLjQubmV3L2xlaW0vTWFrZWZpbGUuaW4JMjAxMi0wNy0zMSAwMDo1NDowNy4xNzk1OTA4NjYgKzAyMDAKLUBAIC01MSw3ICs1MSw3IEBACi0gCi0gIyBIb3cgdG8gcnVuIEVtYWNzLgotIFJVTi1FTUFDUyA9IEVNQUNTTE9BRFBBVEg9JChidWlsZGxpc3BwYXRoKSBMQ19BTEw9QyBcCi0tCSR7QlVJTFQtRU1BQ1N9IC1iYXRjaCAtLW5vLWluaXQtZmlsZSAtLW5vLXNpdGUtZmlsZSAtLW11bHRpYnl0ZQotKwkke1FFTVV9ICR7QlVJTFQtRU1BQ1N9IC1iYXRjaCAtLW5vLWluaXQtZmlsZSAtLW5vLXNpdGUtZmlsZSAtLW11bHRpYnl0ZQotIAotICMgU3ViZGlyZWN0b3JpZXMgdG8gYmUgbWFkZSBpZiAke3NyY2Rpcn0gaXMgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQKLSAjIGRpcmVjdG9yeS4KLWRpZmYgLXVOciBlbWFjcy0yMy40L2xpYi1zcmMvTWFrZWZpbGUuaW4gZW1hY3MtMjMuNC5uZXcvbGliLXNyYy9NYWtlZmlsZS5pbgotLS0tIGVtYWNzLTIzLjQvbGliLXNyYy9NYWtlZmlsZS5pbgkyMDEyLTAxLTExIDEzOjM1OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGVtYWNzLTIzLjQubmV3L2xpYi1zcmMvTWFrZWZpbGUuaW4JMjAxMi0wNy0zMSAwMDo1NDowNy4xODA1OTA4NjYgKzAyMDAKLUBAIC0yMyw3ICsyMyw3IEBACi0gU0hFTEwgPSAvYmluL3NoCi0gCi0gIyBGb2xsb3dpbmcgLi4vbGlzcC9NYWtlZmlsZS5pbi4KLS1FTUFDUyA9IC4uL3NyYy9lbWFjcwotK0VNQUNTID0gJHtRRU1VfSAuLi9zcmMvZW1hY3MKLSBFTUFDU09QVCA9IC1iYXRjaCAtLW5vLXNpdGUtZmlsZSAtLW11bHRpYnl0ZQotIAotICMgPT09PT09PT09PT09PT09PT09PT0gVGhpbmdzIGBjb25maWd1cmUnIHdpbGwgZWRpdCA9PT09PT09PT09PT09PT09PT09PQotQEAgLTM3Miw3ICszNzIsNyBAQAotICAgIGNsb2JiZXJlZCB0b28uICAqLwotIHRlc3QtZGlzdHJpYiR7RVhFRVhUfTogJHtzcmNkaXJ9L3Rlc3QtZGlzdHJpYi5jCi0gCSQoQ0MpICR7QUxMX0NGTEFHU30gLW8gdGVzdC1kaXN0cmliICR7c3JjZGlyfS90ZXN0LWRpc3RyaWIuYwotLQkuL3Rlc3QtZGlzdHJpYiAke3NyY2Rpcn0vdGVzdGZpbGUKLSsJJHtRRU1VfSAuL3Rlc3QtZGlzdHJpYiAke3NyY2Rpcn0vdGVzdGZpbGUKLSAKLSAvKiBXZSBuZWVkIHRoZSBmb2xsb3dpbmcgaW4gb3JkZXIgdG8gY3JlYXRlIGEgPGdldG9wdC5oPiB3aGVuIHRoZSBzeXN0ZW0KLSAgICBkb2VzIG5vdCBoYXZlIG9uZSB0aGF0IHdvcmtzIHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyLiAgKi8KLWRpZmYgLXVOciBlbWFjcy0yMy40L2xpc3AvTWFrZWZpbGUuaW4gZW1hY3MtMjMuNC5uZXcvbGlzcC9NYWtlZmlsZS5pbgotLS0tIGVtYWNzLTIzLjQvbGlzcC9NYWtlZmlsZS5pbgkyMDEyLTAxLTExIDEzOjM1OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGVtYWNzLTIzLjQubmV3L2xpc3AvTWFrZWZpbGUuaW4JMjAxMi0wNy0zMSAwMDo1NDowNy4xOTU1OTA4NjYgKzAyMDAKLUBAIC0yNiw4ICsyNiw3IEBACi0gIyBZb3UgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQgZXhlY3V0YWJsZSBvbiB0aGUgbWFrZSBjb21tYW5kIGxpbmUsCi0gIyBlLmcuICJtYWtlIEVNQUNTPS4uL3NyYy9lbWFjcyAuLi4iLgotIAotLUVNQUNTID0gLi4vc3JjL2VtYWNzCi0tCi0rRU1BQ1MgPSAiJHtRRU1VfSAuLi9zcmMvZW1hY3MiCi0gIyBDb21tYW5kIGxpbmUgZmxhZ3MgZm9yIEVtYWNzLiAgVGhpcyBtdXN0IGluY2x1ZGUgLS1tdWx0aWJ5dGUsCi0gIyBvdGhlcndpc2Ugc29tZSBmaWxlcyB3aWxsIG5vdCBjb21waWxlLgotIAotZGlmZiAtdU5yIGVtYWNzLTIzLjQvc3JjL01ha2VmaWxlLmluIGVtYWNzLTIzLjQubmV3L3NyYy9NYWtlZmlsZS5pbgotLS0tIGVtYWNzLTIzLjQvc3JjL01ha2VmaWxlLmluCTIwMTItMDEtMTIgMTE6Mjc6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZW1hY3MtMjMuNC5uZXcvc3JjL01ha2VmaWxlLmluCTIwMTItMDctMzEgMDA6NTU6MzAuMzQ0NTkzODQ3ICswMjAwCi1AQCAtNDgyLDcgKzQ4Miw3IEBACi0gICAgdGhpcyB3aXRoIHRoZSBzaGVsbCcncyBgYGZvcicnIGNvbnN0cnVjdC4KLSAgICBOb3RlIHRoYXQgc29tZSBwZW9wbGUgZG8gbm90IGhhdmUgJy4nICBpbiB0aGVpciBwYXRocywgc28gd2UgbXVzdAotICAgIHVzZSAuL3ByZWZpeC1hcmdzLiAgKi8KLS0jZGVmaW5lIFlNRl9QQVNTX0xERkxBR1MoZmxhZ3MpIGAuL3ByZWZpeC1hcmdzIC1YbGlua2VyIGZsYWdzYAotKyNkZWZpbmUgWU1GX1BBU1NfTERGTEFHUyhmbGFncykgYCR7UUVNVX0gLi9wcmVmaXgtYXJncyAtWGxpbmtlciBmbGFnc2AKLSAjZWxzZQotICNkZWZpbmUgWU1GX1BBU1NfTERGTEFHUyhmbGFncykgZmxhZ3MKLSAjZW5kaWYKLUBAIC05MTksOSArOTE5LDkgQEAKLSAgICAkKEdOVUxJQl9WQVIpIExJQl9NQVRIIExJQl9TVEFOREFSRCAkKEdOVUxJQl9WQVIpCi0gCi0gI2lmZGVmIEhBVkVfU0hNCi0tUlVOX1RFTUFDUyA9IGAvYmluL3B3ZGAvdGVtYWNzIC1ubAotK1JVTl9URU1BQ1MgPSAke1FFTVV9IHRlbWFjcyAtbmwKLSAjZWxzZQotLVJVTl9URU1BQ1MgPSBgL2Jpbi9wd2RgL3RlbWFjcwotK1JVTl9URU1BQ1MgPSAke1FFTVV9IHRlbWFjcwotICNlbmRpZgotIAotIGFsbDogZW1hY3Mke0VYRUVYVH0gJChPVEhFUl9GSUxFUykKLUBAIC05MzYsNyArOTM2LDcgQEAKLSAJQDogVGhpcyBuZXcgRW1hY3MgaXMgYXMgZnVuY3Rpb25hbCBhbmQgbW9yZSBlZmZpY2llbnQgdGhlbgotIAlAOiBib290c3RyYXAtZW1hY3MsIHNvIGxldCB1cyByZXBsYWNlIGl0LgotIAktbG4gLWYgZW1hY3Mke0VYRUVYVH0gYm9vdHN0cmFwLWVtYWNzJHtFWEVFWFR9Ci0tCS0uL2VtYWNzIC1xIC1iYXRjaCAtZiBsaXN0LWxvYWQtcGF0aC1zaGFkb3dzCi0rCS0ke1FFTVV9IC4vZW1hY3MgLXEgLWJhdGNoIC1mIGxpc3QtbG9hZC1wYXRoLXNoYWRvd3MKLSAjZW5kaWYgLyogISBkZWZpbmVkIChDQU5OT1RfRFVNUCkgKi8KLSAKLSAvKiBXZSBydW4gbWFrZS1kb2NmaWxlIHR3aWNlIGJlY2F1c2UgdGhlIGNvbW1hbmQgbGluZSBtYXkgZ2V0IHRvbyBsb25nCi1AQCAtOTU0LDggKzk1NCw4IEBACi0gICAgb25seSBpbiBvcmRlciB0byByZWR1Y2UgdGhlIGNvbW1hbmQgbGluZSBsZW5ndGguICAtLVN0ZWYgICovCi0gJHtldGN9RE9DOiAke2xpYnNyY31tYWtlLWRvY2ZpbGUke0VYRUVYVH0gJHtvYmp9ICR7bGlzcH0gJHtTT01FX01BQ0hJTkVfTElTUH0KLSAJLXJtIC1mICR7ZXRjfURPQwotLQkke2xpYnNyY31tYWtlLWRvY2ZpbGUgLWQgJHtzcmNkaXJ9ICR7U09NRV9NQUNISU5FX09CSkVDVFN9ICR7b2JqfSA+ICR7ZXRjfURPQwotLQkke2xpYnNyY31tYWtlLWRvY2ZpbGUgLWEgJHtldGN9RE9DIC1kICR7c3JjZGlyfSAke1NPTUVfTUFDSElORV9MSVNQfSAke3Nob3J0bGlzcH0KLSsJJHtRRU1VfSR7bGlic3JjfW1ha2UtZG9jZmlsZSAtZCAke3NyY2Rpcn0gJHtTT01FX01BQ0hJTkVfT0JKRUNUU30gJHtvYmp9ID4gJHtldGN9RE9DCi0rCSR7UUVNVX0gJHtsaWJzcmN9bWFrZS1kb2NmaWxlIC1hICR7ZXRjfURPQyAtZCAke3NyY2Rpcn0gJHtTT01FX01BQ0hJTkVfTElTUH0gJHtzaG9ydGxpc3B9Ci0gCi0gJHtsaWJzcmN9bWFrZS1kb2NmaWxlJHtFWEVFWFR9OgotIAljZCAke2xpYnNyY307ICR7TUFLRX0gJHtNRkxBR1N9IG1ha2UtZG9jZmlsZSR7RVhFRVhUfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI5MDVmOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbWFjcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImVkaXRvciIKLSMgYW5kIGl0IG5lZWRzIHRvIHJ1biBzb21lIGdlbmVyYXRlZCBiaW5hcmllcy4uCi1ERVBFTkRTICs9ICJxZW11LW5hdGl2ZSIKLQotREVQRU5EUyArPSIgbGlibG9ja2ZpbGUiCi0KLVgxMURFUEVORFMgPSAiIFwKLSAgICBsaWJpY2UgbGlic20gYXRrIGNhaXJvIGRidXMgZXhwYXQgbGliZmZpIGZvbnRjb25maWcgZnJlZXR5cGUgZ2NvbmYgZ2lmbGliIFwKLSAgICBqcGVnIHh6IHBpeG1hbiBsaWJwbmcgbGlicnN2ZyB0aWZmIGxpYmNyb2NvIFwKLSAgICBsaWJ4MTEgbGlieGF1IGxpYnhjb21wb3NpdGUgbGlieGN1cnNvciBsaWJ4ZGFtYWdlIGxpYnhkbWNwIGxpYnhleHQgbGlieGZpeGVzIFwKLSAgICBsaWJ4ZnQgbGlieHBtIGxpYnhyYW5kciBsaWJ4cmVuZGVyIFwKLSAgICBnZGstcGl4YnVmIGdsaWItMi4wIGd0aysgcGFuZ28gbGlieGNiIGhhcmZidXp6IGljdSBcCi0iCi0KLUVYVFJBX09FQ09ORiA9ICAiLS13aXRob3V0LXNvdW5kIC0td2l0aC1jcnQtZGlyPSR7U1RBR0lOR19MSUJESVJ9ICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteC10b29sa2l0PWd0aywtLXdpdGhvdXQteCAtLXdpdGhvdXQtZGJ1cywke1gxMURFUEVORFN9IgotCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lbCIKLQotRklMRVNfJHtQTn0tZWwgPSAiJHtkYXRhZGlyfS9lbWFjcy8qLyovKi5lbC5neiBcCi0gICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2VtYWNzLyovKi8qLyouZWwuZ3oiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2VtYWNzICR7ZGF0YWRpcn0vaWNvbnMiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9lbWFjcy8qLyovLmRlYnVnICR7ZGF0YWRpcn0vZW1hY3MvKi8qLy5kZWJ1ZyIKLQotVFJFRURJUiA9ICIke1dPUktESVJ9L3FlbXUtdHJlZWRpciIKLQotUUVNVUFSQ0g9ICIke1RBUkdFVF9BUkNIfSIKLVFFTVVBUkNIX3g4NiA9ICJpMzg2IgotCi0jIExhcmdlIHN0YWNrIGlzIHJlcXVpcmVkIGF0IGxlYXN0IG9uIHg4Nl82NCBob3N0LCBvdGhlcndpc2UgcmFuZG9tIHNlZ2ZhdWx0cyBhcHBlYXI6Ci1RRU1VID0gInFlbXUtJHtRRU1VQVJDSH0gJHtRRU1VX09QVElPTlN9IC1zIDEwNDg1NzYgLUwgJHtUUkVFRElSfSAiCi0KLWV4cG9ydCBMT0dOQU1FID0gIiQod2hvYW1pKSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAnOjE7czpcKFNUQVJULiogXHxMSUJfU1RBTkRBUkQuKiBcfExJQkVTLiogXCkvdXNyL2xpYjpcMSR7U1RBR0lOR19MSUJESVJ9Ojt0MScgJHtTfS9zcmMvcy9nbnUtbGludXguaCBgZmluZCAiJHtTfSIgLW5hbWUgTWFrZWZpbGVgCi0gICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJExEX0xJQlJBUllfUEFUSDoke1RPT0xDSEFJTl9QQVRIfS8ke1RBUkdFVF9TWVN9L2xpYiIKLSMgVWdseSBoYWNrLCBzZWUgZmlsZXMvdXNlLXFlbXUucGF0Y2ggZm9yIG1vcmU6Ci0gICAgbG4gLXNmIC4uL3NyYy9lbWFjcyBsaXNwL2VtYWNzCi0gICAgbG4gLXNmIC4uL3NyYy9lbWFjcyBsaWItc3JjL2VtYWNzCi0gICAgbG4gLXNmIC4uL3NyYy9lbWFjcyBsZWltL2VtYWNzCi0jY29weSBTVEFHSU5HX0RJUl9UQVJHRVQgYW5kIGxpYmdjY19zLnNvKiB0byBXT1JLRElSL3FlbXUtdHJlZWRpciAjY29waWVkIGNvZGUgZnJvbSBnbGliYy1wYWNrYWdlLmJiY2xhc3MKLSAgICB0cmVlZGlyPSR7VFJFRURJUn0KLSAgICBpZiBbIC1lICR0cmVlZGlyIF07dGhlbgotICAgICAgICBybSAtcmYgJHRyZWVkaXIKLSAgICBmaQotCi0gICAgbWtkaXIgLXAgJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0KLQotICAgIGlmIFsgLWYgJHtUT09MQ0hBSU5fUEFUSH0vJHtUQVJHRVRfU1lTfS8ke2Jhc2VfbGliZGlyfS9saWJnY2Nfcy5zbyBdOyB0aGVuCi0gICAgICAgIGNwIC1wUFIgJHtUT09MQ0hBSU5fUEFUSH0vJHtUQVJHRVRfU1lTfS8ke2Jhc2VfbGliZGlyfS9saWJnY2Nfcy5zbyAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfQotICAgIGZpCi0gICAgaWYgWyAtZiAke1RPT0xDSEFJTl9QQVRIfS8ke1RBUkdFVF9TWVN9LyR7YmFzZV9saWJkaXJ9L2xpYmdjY19zLnNvLiogXTsgdGhlbgotICAgICAgICBjcCAtcFBSICR7VE9PTENIQUlOX1BBVEh9LyR7VEFSR0VUX1NZU30vJHtiYXNlX2xpYmRpcn0vbGliZ2NjX3Muc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfQotICAgIGZpCi0gICAgIyBzdHVwaWQgaGFjaywgYnV0IHdpdGhvdXQgaXQsIGl0IHRyaWVzIHRvIHVzZSAvdXNyL2xpYi9saWJjLnNvIGZyb20gaG9zdCBhbmQgZmFpbHMKLSAgICAjIHRlbWFjczogZXJyb3Igd2hpbGUgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzOiAvdXNyL2xpYi9saWJjLnNvOiBFTEYgZmlsZSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIGN1cnJlbnQgb25lCi0gICAgaWYgWyAhIC1mICR0cmVlZGlyLyR7YmFzZV9saWJkaXJ9L2xpYmMuc28gXTsgdGhlbgotICAgICAgICBsbiAtcyBsaWJjLnNvLjYgJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vbGliYy5zbwotICAgIGZpCi0KLSAgICAjIGNvcHkgb25seSBhcyBtdWNoIHN0dWZmIGFzIHdlIG5lZWQKLSAgICAjIGJlZm9yZTogNS41RyAgIC4uLy4uL3FlbXUtdHJlZWRpci8KLSAgICAjIGFmdGVyOiAgIDE3TSAgIC4uLy4uL3FlbXUtdHJlZWRpci8KLSAgICBjcCAtcFBSIFwKLSAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGQtKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYmMuKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYmMtKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYm0tKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYm0uKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYnRpbmZvLnNvLiogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJyZXNvbHYqIFwKLSAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGliZGwqIFwKLSAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGlicnQqIFwKLSAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGliZ2NjX3Muc28uKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYnB0aHJlYWQqICR0cmVlZGlyLyR7YmFzZV9saWJkaXJ9LwotCi0gICAgaWYgWyAhIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIGVjaG8gIlgxMSBidWlsZCBlbmFibGVkIgotICAgICAgICAjIGNvcHkgb25seSBhcyBtdWNoIHN0dWZmIGFzIHdlIG5lZWQKLSAgICAgICAgIyBiZWZvcmU6IDUuNUcgICAuLi8uLi9xZW11LXRyZWVkaXIvCi0gICAgICAgICMgYWZ0ZXI6ICAgODZNICAgLi4vLi4vcWVtdS10cmVlZGlyLwotICAgICAgICBjcCAtcFBSIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYnV1aWQuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJ6LnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYklDRS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJTTS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJhdGstMS4wLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmRidXMtMS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJkYnVzLWdsaWItMS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJleHBhdC5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJmZmkuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZm9udGNvbmZpZy5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJmcmVldHlwZS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJnY29uZi0yLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmdpZi5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJqcGVnLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmx6bWEuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGlicGl4bWFuLTEuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGlicG5nMSouc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGlicnN2Zy0yLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnN0ZGMrKy5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJ0aWZmLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnhtbDIuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliY3JvY28tMC42LnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmhhcmZidXp6LnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmljdWxlLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmljdXVjLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmljdWRhdGEuc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLQotICAgICAgICAjIFgxMSBYYXUgWGNvbXBvc2l0ZSBYY3Vyc29yIFhkYW1hZ2UgWGRtY3AgWGV4dCBYZml4ZXMgWGZ0IFhwbSBYcmFuZHIgWHJlbmRlcgotICAgICAgICBjcCAtcFBSICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliWCouc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLQotICAgICAgICAjIGdkay14MTEgZ2RrX3BpeGJ1ZiBnaW8gZ2xpYiBnbW9kdWxlIGdvYmplY3QgZ3RocmVhZCBndGsteDExCi0gICAgICAgIGNwIC1wUFIgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJnKi0yLjAuc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLQotICAgICAgICAjIHBhbmdvIHBhbmdvY2Fpcm8gcGFuZ29mdDIKLSAgICAgICAgY3AgLXBQUiAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnBhbmdvKi0xLjAuc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLQotICAgICAgICAjIHhjYi1yZW5kZXIgeGNiLXNobSB4Y2IKLSAgICAgICAgY3AgLXBQUiAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnhjYiouc28uKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGZyZWFrcyBwYWNrYWdlLmJiY2xhc3MgYW5kIHdob2xlIGJpdGJha2UgY2FsbCByZXR1cm5zIGVycm9yIGNvZGUKLSAgICAjIEVSUk9SOiBydW5zdHJpcDogJydhcm0tb2UtbGludXgtZ251ZWFiaS1zdHJpcCcgICcvdmFyL2xpYi9qZW5raW5zL2pvYnMvc2hyLWNvcmUtYnJhbmNoZXMvd29ya3NwYWNlL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NHQtb2UtbGludXgtZ251ZWFiaS9lbWFjcy0yMy40LXIwL3BhY2thZ2UvdXNyL3NoYXJlL2VtYWNzLzIzLjQvZXRjL3R1dG9yaWFscy9UVVRPUklBTC5rbycnIHN0cmlwIGNvbW1hbmQgZmFpbGVkCi0gICAgbXYgJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2V0Yy90dXRvcmlhbHMvVFVUT1JJQUwua28gJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2V0Yy90dXRvcmlhbHMvVFVUT1JJQUwuS08KLSAgICAjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotICAgIGlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotICAgICAgICBybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLSAgICBmaQotfQotCi1FWFRSQV9PRU1BS0UgKz0gJ1FFTVU9IiR7UUVNVX0iJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjc18yMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjc18yMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzg4ZmYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3NfMjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgZW1hY3MuaW5jCi0KLVBSID0gInI0IgotCi1QTkJMQUNLTElTVFtlbWFjc10gPz0gInFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2VtYWNzL2VtYWNzLSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXFlbXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm9zdGRsaWItdW53aW5kLnBhdGNoIFwKLSIKLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjM0NDA1MTY1ZmNkOTc4ZmJjOGIzMDRjYmQ5OWNjZjRmIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYjlhMmI4NDM0MDUyNzcxZjc5N2QyMDMyNzcyZWJhODYyZmY5YWExNDMwMjllZmM3MjI5NTE3MDYwNzI4OWMxOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWstZGF0YV8xLjM3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTRiZjM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuMzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1yZXF1aXJlIGVzcGVhay5pbmMKLQotaW5oZXJpdCBuYXRpdmUKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSA9ICIke2xheW91dF9kYXRhZGlyfSIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLVRBUkdFVF9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAjIEZpeGluZyBieXRlIG9yZGVyIG9mIHBob25lbWUgZGF0YSBmaWxlcwotICAgIGNkICIke1N9L3BsYXRmb3Jtcy9iaWdfZW5kaWFuIgotICAgIHNlZCAtaSAnL14gKkNDICo9L2QnIE1ha2VmaWxlCi0gICAgc2VkIC1pICdzL1woLipCWVRFX09SREVSXCkvI3VuZGVmIEJZVEVfT1JERVJcbiNkZWZpbmUgQllURV9PUkRFUiBCSUdfRU5ESUFOXG5cMS8nIGVzcGVhay1waG9uZW1lLWRhdGEuYwotICAgIG9lX3J1bm1ha2UKLSAgICAuL2VzcGVhay1waG9uZW1lLWRhdGEgIiR7U30vZXNwZWFrLWRhdGEiCi0gICAgY3AgLWYgcGhvbmRhdGEgcGhvbmluZGV4IHBob250YWIgIiR7U30vZXNwZWFrLWRhdGEiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsYXlvdXRfZGF0YWRpcn0vZXNwZWFrLWRhdGEKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9lc3BlYWstZGF0YS9waG9uKiAke0R9JHtsYXlvdXRfZGF0YWRpcn0vZXNwZWFrLWRhdGEKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjVjN2IyOTJkMDUzNzIzMjg2OGI0YWMxMzE3ZDc2YzAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3ZjQwNmMzNDUzNjIxODVlYzRmMzYyYmY0OWY2MWQyMDJlMDFhYzliOWNkNWMxNGY4MDMxOTVhNTQ0Y2U2ZDMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWstZGF0YV8xLjQ4LjA0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLWRhdGFfMS40OC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWIyY2MxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLWRhdGFfMS40OC4wNC5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGVzcGVhay5pbmMKKworaW5oZXJpdCBuYXRpdmUKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSA9ICIke2xheW91dF9kYXRhZGlyfSIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKK1RBUkdFVF9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworZG9fY29tcGlsZSgpIHsKKyAgICAjIEZpeGluZyBieXRlIG9yZGVyIG9mIHBob25lbWUgZGF0YSBmaWxlcworICAgIGNkICIke1N9L3BsYXRmb3Jtcy9iaWdfZW5kaWFuIgorICAgIHNlZCAtaSAnL14gKkNDICo9L2QnIE1ha2VmaWxlCisgICAgc2VkIC1pICdzL1woLipCWVRFX09SREVSXCkvI3VuZGVmIEJZVEVfT1JERVJcbiNkZWZpbmUgQllURV9PUkRFUiBCSUdfRU5ESUFOXG5cMS8nIGVzcGVhay1waG9uZW1lLWRhdGEuYworICAgIG9lX3J1bm1ha2UKKyAgICAuL2VzcGVhay1waG9uZW1lLWRhdGEgIiR7U30vZXNwZWFrLWRhdGEiCisgICAgY3AgLWYgcGhvbmRhdGEgcGhvbmluZGV4IHBob250YWIgIiR7U30vZXNwZWFrLWRhdGEiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsYXlvdXRfZGF0YWRpcn0vZXNwZWFrLWRhdGEKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9lc3BlYWstZGF0YS9waG9uKiAke0R9JHtsYXlvdXRfZGF0YWRpcn0vZXNwZWFrLWRhdGEKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jCmluZGV4IDVkMGI0MDMuLjYwYjNmNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLmluYwpAQCAtMyw4ICszLDExIEBACiBMSUNFTlNFID0gIkdQTHYzIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZS50eHQ7bWQ1PWNiN2EyMGVkYjRjOWY1ZjQ3OGRlNjUyM2RjZDczNjJjIgogCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9lc3BlYWsvZXNwZWFrLSR7UFZ9LXNvdXJjZS56aXAgXAotICAgICAgICAgICBmaWxlOi8vZml4LWdjYzYtZXJyb3JzLnBhdGNoIgorU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9lc3BlYWsvZXNwZWFrLTEuNDguMDQtc291cmNlLnppcCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2MtbmFycm93aW5nLXdhcm5pbmctZml4LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYWRkNzQ4MmVhYWZlOTIzOTU0NmJkYzA5ZmEyNDRjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZjlhMTc2NzNhZGZmY2MyOGZmN2VhMTg3NjRmMDYxMzY1NDdlOTdiYmQ5ZWRmMmVjNjEyZjA5YjIwN2YwNjU5IgogCiBTID0gIiR7V09SS0RJUn0vZXNwZWFrLSR7UFZ9LXNvdXJjZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrXzEuMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS4zNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjczZmUzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS4zNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLXJlcXVpcmUgZXNwZWFrLmluYwotaW5oZXJpdCBzaXRlaW5mbwotCi1FWFRSQV9QSE9ORU1FUyA9ICcke0BiYi51dGlscy5jb250YWlucygiU0lURUlORk9fRU5ESUFOTkVTUyIsICJiZSIsICAiZXNwZWFrLWRhdGEgKD0gJHtQVn0pIiwgIiIsIGQpfScKLVJERVBFTkRTXyR7UE59ID0gInBvcnRhdWRpby12MTkgJHtFWFRSQV9QSE9ORU1FU30iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzdiMjkyZDA1MzcyMzI4NjhiNGFjMTMxN2Q3NmMwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3N2Y0MDZjMzQ1MzYyMTg1ZWM0ZjM2MmJmNDlmNjFkMjAyZTAxYWM5YjljZDVjMTRmODAzMTk1YTU0NGNlNmQzIgotCi1DWFhGTEFHUyArPSAiLURVU0VfUE9SVEFVRElPIgotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2VzcGVhay1kYXRhIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgIyAgInNwZWFrIiBiaW5hcnksIGEgVFRTIGVuZ2luZSwgdXNlcyBwb3J0YXVkaW8gaW4gZWl0aGVyIEFQSXMgVjE4IG9yIFYxOSwgdXNlIFYxOQotICAgIGNwICIke1N9L3NyYy9wb3J0YXVkaW8xOS5oIiAiJHtTfS9zcmMvcG9ydGF1ZGlvLmgiCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgY2Qgc3JjCi0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZXNwZWFrCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9lc3BlYWstZGF0YQotCi0gICAgIyB3ZSBkbyBub3Qgc2hpcCAic3BlYWsiIGJpbmFyeSB0aG91Z2guCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vc3JjL2VzcGVhayAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL3NwZWFrX2xpYi5oICR7RH0ke2luY2x1ZGVkaXJ9L2VzcGVhay8KLSAgICBsbiAtc2YgZXNwZWFrL2VzcGVhay5oICR7RH0ke2luY2x1ZGVkaXJ9LwotICAgIG9lX2xpYmluc3RhbGwgLXNvIC1DIHNyYyBsaWJlc3BlYWsgJHtEfSR7bGliZGlyfQotCi0gICAgaWYgWyAiJHtTSVRFSU5GT19FTkRJQU5ORVNTfSIgPSAiYmUiIF0gOyB0aGVuCi0gICAgICAgICMgdGhlIGJpZy1lbmRpYW4gcGhvbiogZmlsZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBwYWNrYWdlIGVzcGVhay1kYXRhCi0gICAgICAgIHJtIC1mICR7U30vZXNwZWFrLWRhdGEvcGhvbioKLSAgICBmaQotCi0gICAgY3AgLXByZiAke1N9L2VzcGVhay1kYXRhLyogJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVha18xLjQ4LjA0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrXzEuNDguMDQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUyZjQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVha18xLjQ4LjA0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK3JlcXVpcmUgZXNwZWFrLmluYworaW5oZXJpdCBzaXRlaW5mbworCitFWFRSQV9QSE9ORU1FUyA9ICcke0BiYi51dGlscy5jb250YWlucygiU0lURUlORk9fRU5ESUFOTkVTUyIsICJiZSIsICAiZXNwZWFrLWRhdGEgKD0gJHtQVn0pIiwgIiIsIGQpfScKK1JERVBFTkRTXyR7UE59ID0gInBvcnRhdWRpby12MTkgJHtFWFRSQV9QSE9ORU1FU30iCisKK0NYWEZMQUdTICs9ICItRFVTRV9QT1JUQVVESU8iCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjICAic3BlYWsiIGJpbmFyeSwgYSBUVFMgZW5naW5lLCB1c2VzIHBvcnRhdWRpbyBpbiBlaXRoZXIgQVBJcyBWMTggb3IgVjE5LCB1c2UgVjE5CisgICAgY3AgIiR7U30vc3JjL3BvcnRhdWRpbzE5LmgiICIke1N9L3NyYy9wb3J0YXVkaW8uaCIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBjZCBzcmMKKyAgICBvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9lc3BlYWsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2VzcGVhay1kYXRhCisKKyAgICAjIHdlIGRvIG5vdCBzaGlwICJzcGVhayIgYmluYXJ5IHRob3VnaC4KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9zcmMvZXNwZWFrICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvc3BlYWtfbGliLmggJHtEfSR7aW5jbHVkZWRpcn0vZXNwZWFrLworICAgIGxuIC1zZiBlc3BlYWsvZXNwZWFrLmggJHtEfSR7aW5jbHVkZWRpcn0vCisgICAgb2VfbGliaW5zdGFsbCAtc28gLUMgc3JjIGxpYmVzcGVhayAke0R9JHtsaWJkaXJ9CisKKyAgICBpZiBbICIke1NJVEVJTkZPX0VORElBTk5FU1N9IiA9ICJiZSIgXSA7IHRoZW4KKyAgICAgICAgIyB0aGUgYmlnLWVuZGlhbiBwaG9uKiBmaWxlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIHBhY2thZ2UgZXNwZWFrLWRhdGEKKyAgICAgICAgcm0gLWYgJHtTfS9lc3BlYWstZGF0YS9waG9uKgorICAgIGZpCisKKyAgICBjcCAtcHJmICR7U30vZXNwZWFrLWRhdGEvKiAke0R9JHtkYXRhZGlyfS9lc3BlYWstZGF0YQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtkYXRhZGlyfS9lc3BlYWstZGF0YQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZml4LWdjYzYtZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZml4LWdjYzYtZXJyb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2YyM2NmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2ZpeC1nY2M2LWVycm9ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUZpeCBnY2M2IGVycm9ycyB3aXRoIG5hcnJvd2luZwotCi18IHRyX2xhbmd1YWdlcy5jcHA6NDYyOjczOiBlcnJvcjogbmFycm93aW5nIGNvbnZlcnNpb24gb2YgJzE3MScgZnJvbSAnaW50JyB0byAnY2hhcicgaW5zaWRlIHsgfSBbLVduYXJyb3dpbmddCi18ICAgICBzdGF0aWMgY29uc3QgY2hhciBrb192b2ljZWRbXSA9IHsweDAyLDB4MDUsMHgwNiwweGFiLDB4YWYsMHhiNywweGJjLDB9OyAgLy8gdm9pY2VkIGNvbnNvbmFudHMsIGwsbSxuLE4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgotLS0tIGEvc3JjL3RyX2xhbmd1YWdlcy5jcHAKLSsrKyBiL3NyYy90cl9sYW5ndWFnZXMuY3BwCi1AQCAtNDU5LDcgKzQ1OSw3IEBACi0gCWNhc2UgTCgnaycsJ28nKTogICAvLyBLb3JlYW4sIFRFU1QKLSAJCXsKLSAJCQlzdGF0aWMgY29uc3QgY2hhciBrb19pdm93ZWxzW10gPSB7MHg2MywweDY0LDB4NjcsMHg2OCwweDZkLDB4NzIsMHg3NCwweDc1LDB9OyAgLy8geSBhbmQgaSB2b3dlbHMKLS0JCQlzdGF0aWMgY29uc3QgY2hhciBrb192b2ljZWRbXSA9IHsweDAyLDB4MDUsMHgwNiwweGFiLDB4YWYsMHhiNywweGJjLDB9OyAgLy8gdm9pY2VkIGNvbnNvbmFudHMsIGwsbSxuLE4KLSsJCQlzdGF0aWMgY29uc3QgY2hhciBrb192b2ljZWRbXSA9IHsweDAyLDB4MDUsMHgwNiwoY2hhcikweGFiLChjaGFyKTB4YWYsKGNoYXIpMHhiNywoY2hhcikweGJjLDB9OyAgLy8gdm9pY2VkIGNvbnNvbmFudHMsIGwsbSxuLE4KLSAJCQl0ciA9IG5ldyBUcmFuc2xhdG9yKCk7Ci0gCi0gCQkJdHItPmxldHRlcl9iaXRzX29mZnNldCA9IE9GRlNFVF9LT1JFQU47CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9nY2MtbmFycm93aW5nLXdhcm5pbmctZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZ2NjLW5hcnJvd2luZy13YXJuaW5nLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTliNDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZ2NjLW5hcnJvd2luZy13YXJuaW5nLWZpeC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGYwOWM4MzY0MGI5MTczNTUyZmQ5Mjc3YzNhNDg2MTliOTAzZmE0MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUmVlY2UgSC4gRHVubiIgPG1zY2xyaGRAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMCBKYW4gMjAxNiAyMDo0ODoyOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggR0NDIC1XbmFycm93aW5nIHdhcm5pbmdzLgorCistLS0KKyBzcmMvdHJfbGFuZ3VhZ2VzLmNwcCB8IDcgKysrKy0tLQorIHNyYy90cmFuc2xhdGUuaCAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGVzcGVhay0xLjQ4LjA0LXNvdXJjZS9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS5vcmlnL3NyYy90cl9sYW5ndWFnZXMuY3BwCisrKysgZXNwZWFrLTEuNDguMDQtc291cmNlL3NyYy90cl9sYW5ndWFnZXMuY3BwCitAQCAtMTk4LDggKzE5OCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBjaGFyc19pZ25vcmUKKyAJMHgyMDBkLCAgMSwgLy8gemVybyB3aWR0aCBqb2luZXIKKyAJMCwgMCB9OworIAorLWNvbnN0IGNoYXIgc3RyaW5nX29yZGluYWxbXSA9IHsweGMyLDB4YmEsMH07ICAvLyBtYXNjdWxpbmUgb3JkaW5hbCBjaGFyYWN0ZXIsIFVURi04CistCisrY29uc3QgdW5zaWduZWQgY2hhciBzdHJpbmdfb3JkaW5hbFtdID0gezB4YzIsMHhiYSwwfTsgIC8vIG1hc2N1bGluZSBvcmRpbmFsIGNoYXJhY3RlciwgVVRGLTgKKytjb25zdCB1bnNpZ25lZCBjaGFyIHV0ZjhfbnVsbFtdID0geyAwIH07IC8vIG51bGwgc3RyaW5nLCBVVEYtOAorIAorIHN0YXRpYyBUcmFuc2xhdG9yKiBOZXdUcmFuc2xhdG9yKHZvaWQpCisgey8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0BAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgdHJhbnNwb3NlX21hcF9sYXRpbltdCisgCXRyLT5sYW5nb3B0cy5yZXBsYWNlX2NoYXJzID0gTlVMTDsKKyAJdHItPmxhbmdvcHRzLmFzY2lpX2xhbmd1YWdlWzBdID0gMDsgICAgLy8gTm9uLUxhdGluIGFscGhhYmV0IGxhbmd1YWdlcywgdXNlIHRoaXMgbGFuZ3VhZ2UgdG8gc3BlYWsgTGF0aW4gd29yZHMsIGRlZmF1bHQgaXMgRW5nbGlzaAorIAl0ci0+bGFuZ29wdHMuYWx0X2FscGhhYmV0X2xhbmcgPSBMKCdlJywnbicpOworLQl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gIiI7CisrCXRyLT5sYW5nb3B0cy5yb21hbl9zdWZmaXggPSB1dGY4X251bGw7CisgCisgCVNldExlbmd0aE1vZHModHIsMjAxKTsKKyAvLwl0ci0+bGFuZ29wdHMubGVuZ3RoX21vZHMgPSBsZW5ndGhfbW9kc19lbjsKK0BAIC03NTgsNyArNzU4LDcgQEAgVHJhbnNsYXRvciAqU2VsZWN0VHJhbnNsYXRvcihjb25zdCBjaGFyCisgCQkJCXRyLT5sYW5nb3B0cy5zdHJlc3NfZmxhZ3MgPSBTX0ZJTkFMX1NQQU5JU0ggfCBTX0ZJTkFMX0RJTV9PTkxZIHwgU19GSU5BTF9OT18yOworIAkJCQl0ci0+bGFuZ29wdHMubnVtYmVycyA9IE5VTV9TSU5HTEVfU1RSRVNTIHwgTlVNX0RFQ0lNQUxfQ09NTUEgfCBOVU1fQU5EX1VOSVRTIHwgTlVNX09NSVRfMV9IVU5EUkVEIHwgTlVNX09NSVRfMV9USE9VU0FORCB8IE5VTV9ST01BTiB8IE5VTV9ST01BTl9PUkRJTkFMOworIAkJCQl0ci0+bGFuZ29wdHMubnVtYmVyczIgPSBOVU0yX09SRElOQUxfTk9fQU5EOworLQkJCQl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gc3RyaW5nX29yZGluYWw7CisrCQkJCXRyLT5sYW5nb3B0cy5yb21hbl9zdWZmaXggPSB1dGY4X251bGw7CisgCQkJfQorIAkJCWVsc2UKKyAJCQlpZihuYW1lMiA9PSBMX3BhcCkKK0luZGV4OiBlc3BlYWstMS40OC4wNC1zb3VyY2Uvc3JjL3RyYW5zbGF0ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZXNwZWFrLTEuNDguMDQtc291cmNlLm9yaWcvc3JjL3RyYW5zbGF0ZS5oCisrKysgZXNwZWFrLTEuNDguMDQtc291cmNlL3NyYy90cmFuc2xhdGUuaAorQEAgLTU0NSw3ICs1NDUsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CisgCWludCBkZWNpbWFsX3NlcDsKKyAJaW50IG1heF9kaWdpdHM7ICAgIC8vIG1heCBudW1iZXIgb2YgZGlnaXRzIHdoaWNoIGNhbiBiZSBzcG9rZW4gYXMgYW4gaW50ZWdlciBudW1iZXIgKHJhdGhlciB0aGFuIGluZGl2aWR1YWwgZGlnaXRzKQorIAljb25zdCBjaGFyICpvcmRpbmFsX2luZGljYXRvcjsgICAvLyBVVEYtOCBzdHJpbmcKKy0JY29uc3QgY2hhciAqcm9tYW5fc3VmZml4OyAgICAvLyBhZGQgdGhpcyAob3JkaW5hbCkgc3VmZml4IHRvIFJvbWFuIG51bWJlcnMgKExBTkc9YW4pCisrCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnJvbWFuX3N1ZmZpeDsgICAgLy8gYWRkIHRoaXMgKG9yZGluYWwpIHN1ZmZpeCB0byBSb21hbiBudW1iZXJzIChMQU5HPWFuKQorIAorIAkvLyBiaXQgMCwgYWNjZW50IG5hbWUgYmVmb3JlIHRoZSBsZXR0ZXIgbmFtZSwgYml0IDEgImNhcGl0YWwiIGFmdGVyIGxldHRlciBuYW1lCisgCWludCBhY2NlbnRzOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgppbmRleCAzNDk1MDdkLi41OWIwMWI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUmVwbGFjZW1lbnQgc3lzbG9nIEFQSSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYmFsYWJpdC5jb20vbmV0d29yay1zZWN1cml0eS9zeXNsb2ctbmcvb3BlbnNvdXJjZS1sb2dnaW5nLXN5c3RlbSIKIERFU0NSSVBUSU9OID0gIlRoZSBFdmVudExvZyBsaWJyYXJ5IGFpbXMgdG8gYmUgYSByZXBsYWNlbWVudCBvZiB0aGUgXAogICAgICAgICAgICAgICBzaW1wbGUgc3lzbG9nKCkgQVBJIHByb3ZpZGVkIG9uIFVOSVggc3lzdGVtcy4gVGhlIFwKICAgICAgICAgICAgICAgbWFqb3IgZGlmZmVyZW5jZSBiZXR3ZWVuIEV2ZW50TG9nIGFuZCBzeXNsb2cgaXMgdGhhdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZhcnNpZ2h0L2ZhcnNpZ2h0Ml8wLjAuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZhcnNpZ2h0L2ZhcnNpZ2h0Ml8wLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0Y2U1N2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9mYXJzaWdodDJfMC4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRmFyU2lnaHQgaXMgYW4gYXVkaW8vdmlkZW8gY29uZmVyZW5jaW5nIGZyYW1ld29yayBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEluc3RhbnQgTWVzc2VuZ2Vycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZmFyc2lnaHQuc2YubmV0IgotU1JDX1VSSSA9ICJodHRwOi8vZmFyc2lnaHQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2ZhcnNpZ2h0Mi8ke0JQfS50YXIuZ3oiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotUFIgPSAicjMiCi0KLURFUEVORFMgPSAibGlibmljZSBnbGliLTIuMCBsaWJ4bWwyIHpsaWIgZGJ1cyBnc3RyZWFtZXIgZ3N0LXBsdWdpbnMtYmFzZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2d1cG5wXSA9ICItLWVuYWJsZS1ndXBucCwtLWRpc2FibGUtZ3VwbnAsZ3VwbnAtaWdkIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZGVidWcgXAotICAgIC0tZGlzYWJsZS1ndGstZG9jIFwKLSAgICAtLWRpc2FibGUtcHl0aG9uIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8qLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyovLmRlYnVnIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMWY1NDBjZjNlYmFiMDZjM2Q3ZGIxZjQ2YjQ0YWM4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWU1OWFhNjFhODA3MWM5ZmFkMTExZTVmZDYwNmFhYmMyNzk2MWViNDE5MmY4NzI5OTg3YTI3ZGFlNmIzOTc0IgotCi1QTkJMQUNLTElTVFtmYXJzaWdodDJdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdzdHJlYW1lciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLVBOQkxBQ0tMSVNUW2ZhcnNpZ2h0Ml0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGlibmljZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLVBOQkxBQ0tMSVNUW2ZhcnNpZ2h0Ml0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ3N0LXBsdWdpbnMtYmFzZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXQtbW9kZXMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0LW1vZGVzLmJiCmluZGV4IDg4ZjdhNGYuLjVmNmY5OTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXQtbW9kZXMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldC1tb2Rlcy5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRGVmYXVsdCBkaXNwbGF5IHRpbWluZ3MgYW5kIHJlc29sdXRpb25zIGZvciBmYnNldCIKK0hPTUVQQUdFID0gImh0dHA6Ly91c2Vycy50ZWxlbmV0LmJlL2dlZXJ0dS9MaW51eC9mYmRldi8iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0XzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXRfMi4xLmJiCmluZGV4IGNiYmU2Y2EuLmZiZjgzNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXRfMi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXRfMi4xLmJiCkBAIC02LDYgKzYsNyBAQAogIyBEYXRlOiAyOC1NYXktMDYKIAogU1VNTUFSWSA9ICJUaGUgZmJzZXQgY29uc29sZSB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3VzZXJzLnRlbGVuZXQuYmUvZ2VlcnR1L0xpbnV4L2ZiZGV2LyIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9mYnNldC5jO2VuZGxpbmU9MTk7bWQ1PWJmMzI2ZjgyY2RmY2FjMzkxYWYyMDhmMDE5YzU2MDNmIgogUlJFQ09NTUVORFNfJHtQTn0gPSAiZmJzZXQtbW9kZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvYmVuY2hmZnRfMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2JlbmNoZmZ0XzMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDljYzI3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvYmVuY2hmZnRfMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJGRlRXIGJlbmNobWFya3MiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIHNpbmdsZSBwcmVjaXNpb24gZmZ0dyBpcyBjYWxsZWQgZmZ0d2YKLURFUEVORFMgPSAidmlydHVhbC9mZnR3IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZmZ0dy5vcmcvYmVuY2hmZnQvYmVuY2hmZnQtJHtQVn0udGFyLmd6IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWZvcnRyYW4gLS1lbmFibGUtc2luZ2xlIC0tZW5hYmxlLXNoYXJlZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6YWxsLXJlY3Vyc2l2ZTokKFJFQ1VSU0lWRV9UQVJHRVRTKTpnJyAke1N9L01ha2VmaWxlCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MzU2ZTVlOWRjYjNmMTQ4MTk3NzAwOTcyMGEyY2NmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjRhNWI1ZTQ4YWQ1ZTYxYTIxNTg2YjdiNTlkNWMwYTg4NjkxYTk4MWU3M2UyYzZkYzU4NjgxOTc0NjE3OTFiIgotCi1QTkJMQUNLTElTVFtiZW5jaGZmdF0gPz0gImRvZXMgbm90IGJ1aWxkIHdpdGggZGlzdHJvbGVzcyBxZW11YXJtIGFzIHJlcG9ydGVkIGluICdTdGF0ZSBvZiBiaXRiYWtlIHdvcmxkJyB0aHJlYWQsIG5vYm9keSB2b2x1bnRlZXJlZCB0byBmaXggdGhlbSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtYWxzYS0xLjMtY29uZmlndXJlLXdpdGgtYXVkaW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2EtMS4zL2ZsaXRlLWFsc2EtMS4zLWNvbmZpZ3VyZS13aXRoLWF1ZGlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWU3YWVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtYWxzYS0xLjMtY29uZmlndXJlLXdpdGgtYXVkaW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlndXJlLmluLm9sZAkyMDA4LTAxLTA2IDAyOjE3OjQ3LjAwMDAwMDAwMCAtMDYwMAotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZS5pbgkyMDA4LTAxLTA2IDAyOjE5OjU2LjAwMDAwMDAwMCAtMDYwMAotQEAgLTIyMCw3ICsyMjAsOCBAQCBkbmwgYWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIG9uZSBkCi0gZG5sCi0gQUNfQVJHX1dJVEgoIGF1ZGlvLAotIAlbICAtLXdpdGgtYXVkaW8gICAgICAgICAgd2l0aCBzcGVjaWZpYyBhdWRpbyBzdXBwb3J0IChub25lIGxpbnV4IGZyZWVic2QgZXRjKSBdLAotLSAgICAgICAgQVVESU9EUklWRVI9JHdpdGhfYXVkaW8gKQotKyAgICAgICAgW0FVRElPRFJJVkVSPSR3aXRoX2F1ZGlvCi0rICAgICAgICAgQVVESU9ERUZTPV0pCi0gCi0gaWYgdGVzdCAieCRBVURJT0RFRlMiID0geDsgdGhlbgotICAgICBjYXNlICIkQVVESU9EUklWRVIiIGluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2FfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg4M2MxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2FfMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBmbGl0ZS5pbmMKLQotUFIgPSAicjEiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtYXVkaW89YWxzYSAtLWVuYWJsZS1zaGFyZWQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5zcGVlY2guY3MuY211LmVkdS9mbGl0ZS9wYWNrZWQvZmxpdGUtJHtQVn0vZmxpdGUtJHtQVn0tcmVsZWFzZS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9mbGl0ZS1hbHNhLTEuMy1jb25maWd1cmUtd2l0aC1hdWRpby5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImFlMGFjYTFjYjdiNDgwMWY0MzcyZjNhNzVhOWU1MmI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyMjIyNWY3MDAxZTU3YTBmYmFjZTg4MzNiMGE0ODc5MGE2OGY2YzdiNDkxZjJkNDdjNzhhZDUzN2FiNzhhOGIiCi0KLSMgTG9va3MgbGlrZSBjYXVzZWQgYnkgZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZgotIyBmbGl0ZS1hbHNhLTEuMzogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnk6ICcvdG1wL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL2ZsaXRlLWFsc2EvMS4zLXIxL3BhY2thZ2VzLXNwbGl0L2xpYmZsaXRlLWFsc2Etdm94MTYvdXNyL2xpYi9saWJmbGl0ZV9jbXVfdXNfa2FsMTYuc28uMS4zJyBbbGRmbGFnc10KLSMgZmxpdGUtYWxzYS0xLjM6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OiAnL3RtcC93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9mbGl0ZS1hbHNhLzEuMy1yMS9wYWNrYWdlcy1zcGxpdC9saWJmbGl0ZS1hbHNhLXZveDgvdXNyL2xpYi9saWJmbGl0ZV9jbXVfdXNfa2FsLnNvLjEuMycgW2xkZmxhZ3NdCi0jIGZsaXRlLWFsc2EtMS4zOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJy90bXAvd29yay9jb3JlMi02NC1vZS1saW51eC9mbGl0ZS1hbHNhLzEuMy1yMS9wYWNrYWdlcy1zcGxpdC9saWJmbGl0ZS1hbHNhLXZveDE2L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbDE2LnNvLjEuMycgW2xkZmxhZ3NdCi0jIGZsaXRlLWFsc2EtMS4zOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJy90bXAvd29yay9jb3JlMi02NC1vZS1saW51eC9mbGl0ZS1hbHNhLzEuMy1yMS9wYWNrYWdlcy1zcGxpdC9saWJmbGl0ZS1hbHNhLXZveDgvdXNyL2xpYi9saWJmbGl0ZV9jbXVfdXNfa2FsLnNvLjEuMycgW2xkZmxhZ3NdCi0jIGZsaXRlLWFsc2EtMS4zOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJy90bXAvd29yay9pNTg2LW9lLWxpbnV4L2ZsaXRlLWFsc2EvMS4zLXIxL3BhY2thZ2VzLXNwbGl0L2xpYmZsaXRlLWFsc2Etdm94MTYvdXNyL2xpYi9saWJmbGl0ZV9jbXVfdXNfa2FsMTYuc28uMS4zJyBbbGRmbGFnc10KLSMgZmxpdGUtYWxzYS0xLjM6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OiAnL3RtcC93b3JrL2k1ODYtb2UtbGludXgvZmxpdGUtYWxzYS8xLjMtcjEvcGFja2FnZXMtc3BsaXQvbGliZmxpdGUtYWxzYS12b3g4L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbC5zby4xLjMnIFtsZGZsYWdzXQotUE5CTEFDS0xJU1RbZmxpdGUtYWxzYV0gPz0gIk9MRDogd2Fzbid0IHVwZGF0ZWQgaW4gb3ZlciA2IHllYXJzLCBvbmx5IG5hdml0IHdhcyBSU1VHR0VTVGluZyBpdCBhbmQgZG9lc24ndCByZXNwZWN0IExERkxBR1MgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWY4MmMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZmxpdGUgLSB0aGUgZmVzdGl2YWwgbGlnaHQgc3BlZWNoIHN5bnRoZXNpemVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcGVlY2guY3MuY211LmVkdS9mbGl0ZS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gImZsaXRlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjhhMTZiMWVlNDljOTZjMzZmMjMyY2NkY2QyODc2NTAiCi1ERVBFTkRTID0gImFsc2Etb3NzIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUyA9ICIke1dPUktESVJ9L2ZsaXRlLSR7UFZ9LXJlbGVhc2UiCi0KLUNGTEFHUyArPSAiIC1sYXNvdW5kICIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VTICs9ICJsaWIke1BOfSBsaWIke1BOfS12b3g4IGxpYiR7UE59LXZveDE2IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0iCi0KLUZJTEVTX2xpYiR7UE59ID0iJHtsaWJkaXJ9L2xpYmZsaXRlLnNvLiogXAotICAgICR7bGliZGlyfS9saWJmbGl0ZV9jbXVfdGltZV9hd2Iuc28uKiBcCi0gICAgJHtsaWJkaXJ9L2xpYmZsaXRlX2NtdWxleC5zby4qIFwKLSAgICAke2xpYmRpcn0vbGliZmxpdGVfdXNlbmdsaXNoLnNvLioiCi0KLUZJTEVTX2xpYiR7UE59LXZveDggPSAiJHtsaWJkaXJ9L2xpYmZsaXRlX2NtdV91c19rYWwuc28uKiIKLQotRklMRVNfbGliJHtQTn0tdm94MTYgPSAiJHtsaWJkaXJ9L2xpYmZsaXRlX2NtdV91c19rYWwxNi5zby4qIgotCi1MRUFEX1NPTkFNRSA9ICJsaWJmbGl0ZS5zbyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIElOU1RBTExCSU5ESVI9IiR7RH0ke2JpbmRpcn0iIElOU1RBTExMSUJESVI9IiR7RH0ke2xpYmRpcn0iIElOU1RBTExJTkNESVI9IiR7RH0ke2luY2x1ZGVkaXJ9IiBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay1uYXRpdmUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay1uYXRpdmUuYmIKaW5kZXggMzUzOTg3ZS4uMjYzNjI4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGstbmF0aXZlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLW5hdGl2ZS5iYgpAQCAtMTQsMyArMTQsOCBAQAogICAgIC1ET1BUSU9OX1VTRV9YRklYRVM9T0ZGIFwKICAgICAtRE9QVElPTl9VU0VfWENVUlNPUj1PRkYgXAogIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIG1ha2Ugc3VyZSBuYXRpdmUgZmx0ay1jb25maWcgaXMgbm90IHVzZWQgYWNjaWRlbnRhbHkKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9L2ZsdGstY29uZmlnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCmluZGV4IDU0MmZkNjYuLjYxOWQxNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSAke0JQTn0uaW5jCiAKLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBqcGVnIGxpYnBuZyBsaWJ4ZXh0IGxpYnhmdCAgJHtCUE59LW5hdGl2ZSIKK0RFUEVORFMgPSAiYWxzYS1saWIgemxpYiBqcGVnIGxpYnBuZyBsaWJ4ZXh0IGxpYnhmdCIKIAogaW5oZXJpdCBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWljb24tY2FjaGUgbWltZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2ZpbGVzL2ZpeC1nY2MtdW51c2VkLWZ1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZmlsZXMvZml4LWdjYy11bnVzZWQtZnVuY3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmNiNWFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZmlsZXMvZml4LWdjYy11bnVzZWQtZnVuY3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotZ2RmdC5jOiByZW1vdmUgZnVuY3Rpb25zIHRoYXQgY2F1c2Ugd2FybmluZ3MgYWJvdXQgYmVpbmcgdW51c2VkCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgKEZpeGVkIGluIG1hc3RlciBicmFuY2gpCi0KLVNpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+Ci0tLS0gZ2l0L3NyYy9nZGZ0LmMub3JpZwkyMDE2LTA4LTEyIDEwOjIwOjQxLjQxODQ0MDA5MSAtMDQwMAotKysrIGdpdC9zcmMvZ2RmdC5jCTIwMTYtMDgtMTIgMTA6MjI6MzQuMjI2NDQyOTg3IC0wNDAwCi1AQCAtMTM5LDE2ICsxMzksNiBAQAotIH0KLSAjZWxzZQotIAotLSNpZm5kZWYgSEFWRV9MSUJGT05UQ09ORklHCi0tc3RhdGljIGNoYXIgKiBmb250X3BhdHRlcm4oY2hhciAqKmZvbnRwYXRoLCBjaGFyICpmb250cGF0dGVybikKLS17Ci0tCSh2b2lkKWZvbnRwYXRoOwotLQkodm9pZClmb250cGF0dGVybjsKLS0KLS0JcmV0dXJuICJsaWJnZCB3YXMgbm90IGJ1aWx0IHdpdGggRm9udENvbmZpZyBzdXBwb3J0XG4iOwotLX0KLS0jZW5kaWYgLyogSEFWRV9MSUJGT05UQ09ORklHICovCi0tCi0gI2luY2x1ZGUgImdkY2FjaGUuaCIKLSAvKiAyLjAuMTYgQ2hyaXN0b3BoZSBUaG9tYXM6IHN0YXJ0aW5nIHdpdGggRnJlZVR5cGUgMi4xLjYsIHRoaXMgaXMKLSAgIG1hbmRhdG9yeSwgYW5kIGl0IGhhcyBiZWVuIHN1cHBvcnRlZCBmb3IgYSBsb25nIHdoaWxlLiAqLwotQEAgLTQ0NiwxNiArNDM2LDE1IEBACi0gCXJldHVybiAoc3RyY21wIChhLT5mb250bGlzdCwgYi0+Zm9udGxpc3QpID09IDAgJiYgYS0+ZmxhZ3MgPT0gYi0+ZmxhZ3MpOwotIH0KLSAKLSsjaWZkZWYgSEFWRV9MSUJGT05UQ09ORklHCi0gc3RhdGljIGludCB1c2VGb250Q29uZmlnKGludCBmbGFnKQotIHsKLS0jaWZkZWYgSEFWRV9MSUJGT05UQ09ORklHCi0gCWlmIChmb250Q29uZmlnRmxhZykgewotIAkJcmV0dXJuICghKGZsYWcgJiBnZEZURVhfRk9OVFBBVEhOQU1FKSk7Ci0gCX0KLS0jZW5kaWYKLSAJcmV0dXJuIGZsYWcgJiBnZEZURVhfRk9OVENPTkZJRzsKLSB9Ci0tCi0rI2VuZGlmCi0gc3RhdGljIHZvaWQgKgotIGZvbnRGZXRjaCAoY2hhciAqKmVycm9yLCB2b2lkICprZXkpCi0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8uZ2l0aWdub3JlLXRoZS1uZXctdGVzdC1jYXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8uZ2l0aWdub3JlLXRoZS1uZXctdGVzdC1jYXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWI0OTc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvLmdpdGlnbm9yZS10aGUtbmV3LXRlc3QtY2FzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gODUyMDI3NDc1OWNiOGY5NWU0ODNiMDJhNDQ1YWZmMjI1ZTEzNDY3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJDaHJpc3RvcGggTS4gQmVja2VyIiA8Y21iZWNrZXI2OUBnbXguZGU+Ci1EYXRlOiBUdWUsIDE2IEF1ZyAyMDE2IDE2OjAwOjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIC5naXRpZ25vcmUgdGhlIG5ldyB0ZXN0IGNhc2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RzL3RnYS8uZ2l0aWdub3JlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvLmdpdGlnbm9yZSBiL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi1pbmRleCBlODhlMTI0Li43YTY1OWIxIDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhLy5naXRpZ25vcmUKLSsrKyBiL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi1AQCAtNCwzICs0LDQgQEAKLSAvYnVnMDAyNDgKLSAvYnVnMDAyNDhhCi0gL3RnYV9udWxsCi0rL3RnYV9yZWFkCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NjZmJlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotRnJvbSBjOTIyNDBjMTY3MGMyMGMyZjg1NDc2MWQzYTg5YWI2MWRkMTU4YzkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkNocmlzdG9waCBNLiBCZWNrZXIiIDxjbWJlY2tlcjY5QGdteC5kZT4KLURhdGU6IFNhdCwgNiBBdWcgMjAxNiAxMDowODo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggcG90ZW50aWFsIHVuc2lnbmVkIHVuZGVyZmxvdwotCi1ObyBuZWVkIHRvIGRlY3JlYXNlIGB1YCwgc28gd2UgZG9uJ3QgZG8gaXQuIFdoaWxlIHdlJ3JlIGF0IGl0LCB3ZSBhbHNvIGZhY3Rvcgotb3V0IHRoZSBvdmVyZmxvdyBjaGVjayBvZiB0aGUgbG9vcCwgd2hhdCBpbXByb3ZlcyBwZXJmb3JtYW5jZSBhbmQgcmVhZGFiaWxpdHkuCi0KLVRoaXMgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQgYnkgU3RlZmFuIEVzc2VyIHRvIHNlY3VyaXR5QGxpYmdkLm9yZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDE2NgotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9nZF9pbnRlcnBvbGF0aW9uLmMgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfaW50ZXJwb2xhdGlvbi5jIGIvc3JjL2dkX2ludGVycG9sYXRpb24uYwotaW5kZXggN2U3OTQzZC4uOTk0NDM0OSAxMDA2NDQKLS0tLSBhL3NyYy9nZF9pbnRlcnBvbGF0aW9uLmMKLSsrKyBiL3NyYy9nZF9pbnRlcnBvbGF0aW9uLmMKLUBAIC04MjksOCArODI5LDEzIEBAIHN0YXRpYyBpbmxpbmUgTGluZUNvbnRyaWJUeXBlICogX2dkQ29udHJpYnV0aW9uc0FsbG9jKHVuc2lnbmVkIGludCBsaW5lX2xlbmd0aCwKLSB7Ci0gCXVuc2lnbmVkIGludCB1ID0gMDsKLSAJTGluZUNvbnRyaWJUeXBlICpyZXM7Ci0tCWludCBvdmVyZmxvd19lcnJvciA9IDA7Ci0rCXNpemVfdCB3ZWlnaHRzX3NpemU7Ci0gCi0rCWlmIChvdmVyZmxvdzIod2luZG93c19zaXplLCBzaXplb2YoZG91YmxlKSkpIHsKLSsJCXJldHVybiBOVUxMOwotKwl9IGVsc2UgewotKwkJd2VpZ2h0c19zaXplID0gd2luZG93c19zaXplICogc2l6ZW9mKGRvdWJsZSk7Ci0rCX0KLSAJcmVzID0gKExpbmVDb250cmliVHlwZSAqKSBnZE1hbGxvYyhzaXplb2YoTGluZUNvbnRyaWJUeXBlKSk7Ci0gCWlmICghcmVzKSB7Ci0gCQlyZXR1cm4gTlVMTDsKLUBAIC04NDcsMTUgKzg1MiwxMSBAQCBzdGF0aWMgaW5saW5lIExpbmVDb250cmliVHlwZSAqIF9nZENvbnRyaWJ1dGlvbnNBbGxvYyh1bnNpZ25lZCBpbnQgbGluZV9sZW5ndGgsCi0gCQlyZXR1cm4gTlVMTDsKLSAJfQotIAlmb3IgKHUgPSAwIDsgdSA8IGxpbmVfbGVuZ3RoIDsgdSsrKSB7Ci0tCQlpZiAob3ZlcmZsb3cyKHdpbmRvd3Nfc2l6ZSwgc2l6ZW9mKGRvdWJsZSkpKSB7Ci0tCQkJb3ZlcmZsb3dfZXJyb3IgPSAxOwotLQkJfSBlbHNlIHsKLS0JCQlyZXMtPkNvbnRyaWJSb3dbdV0uV2VpZ2h0cyA9IChkb3VibGUgKikgZ2RNYWxsb2Mod2luZG93c19zaXplICogc2l6ZW9mKGRvdWJsZSkpOwotLQkJfQotLQkJaWYgKG92ZXJmbG93X2Vycm9yID09IDEgfHwgcmVzLT5Db250cmliUm93W3VdLldlaWdodHMgPT0gTlVMTCkgewotKwkJcmVzLT5Db250cmliUm93W3VdLldlaWdodHMgPSAoZG91YmxlICopIGdkTWFsbG9jKHdlaWdodHNfc2l6ZSk7Ci0rCQlpZiAocmVzLT5Db250cmliUm93W3VdLldlaWdodHMgPT0gTlVMTCkgewotIAkJCXVuc2lnbmVkIGludCBpOwotLQkJCXUtLTsKLS0JCQlmb3IgKGk9MDtpPD11O2krKykgewotKwotKwkJCWZvciAoaT0wO2k8dTtpKyspIHsKLSAJCQkJZ2RGcmVlKHJlcy0+Q29udHJpYlJvd1tpXS5XZWlnaHRzKTsKLSAJCQl9Ci0gCQkJZ2RGcmVlKHJlcy0+Q29udHJpYlJvdyk7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRlZjIyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA2YWI1MzFlZjBkODJlZmI5ZTAwMjM2ZWU1ZWEyMzkyODMzNWQyMjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDcgQXByIDIwMTcgMTI6MzA6MjIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IERPUyB2dWxuZXJhYmlsaXR5IGluIGdkSW1hZ2VDcmVhdGVGcm9tR2QyQ3R4KCkKLQotV2UgbXVzdCBub3QgcHJldGVuZCB0aGF0IHRoZXJlIGFyZSBpbWFnZSBkYXRhIGlmIHRoZXJlIGFyZSBub25lLiBJbnN0ZWFkCi13ZSBmYWlsIHJlYWRpbmcgdGhlIGltYWdlIGZpbGUgZ3JhY2VmdWxseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDE2NwotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9nZF9nZDIuYyB8IDE0ICsrKysrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nZF9nZDIuYyBiL3NyYy9nZF9nZDIuYwotaW5kZXggOGRmOTNjMS4uYmFlNjVlYSAxMDA2NDQKLS0tLSBhL3NyYy9nZF9nZDIuYwotKysrIGIvc3JjL2dkX2dkMi5jCi1AQCAtNDQ1LDE4ICs0NDUsMTYgQEAgQkdEX0RFQ0xBUkUoZ2RJbWFnZVB0cikgZ2RJbWFnZUNyZWF0ZUZyb21HZDJDdHggKGdkSU9DdHhQdHIgaW4pCi0gCi0gCQkJCQkJaWYgKGltLT50cnVlQ29sb3IpIHsKLSAJCQkJCQkJaWYgKCFnZEdldEludCAoJmltLT50cGl4ZWxzW3ldW3hdLCBpbikpIHsKLS0JCQkJCQkJCS8qcHJpbnRmKCJFT0Ygd2hpbGUgcmVhZGluZ1xuIik7ICovCi0tCQkJCQkJCQkvKmdkSW1hZ2VEZXN0cm95KGltKTsgKi8KLS0JCQkJCQkJCS8qcmV0dXJuIDA7ICovCi0tCQkJCQkJCQlpbS0+dHBpeGVsc1t5XVt4XSA9IDA7Ci0rCQkJCQkJCQlnZF9lcnJvcigiZ2QyOiBFT0Ygd2hpbGUgcmVhZGluZ1xuIik7Ci0rCQkJCQkJCQlnZEltYWdlRGVzdHJveShpbSk7Ci0rCQkJCQkJCQlyZXR1cm4gTlVMTDsKLSAJCQkJCQkJfQotIAkJCQkJCX0gZWxzZSB7Ci0gCQkJCQkJCWludCBjaDsKLSAJCQkJCQkJaWYgKCFnZEdldEJ5dGUgKCZjaCwgaW4pKSB7Ci0tCQkJCQkJCQkvKnByaW50ZigiRU9GIHdoaWxlIHJlYWRpbmdcbiIpOyAqLwotLQkJCQkJCQkJLypnZEltYWdlRGVzdHJveShpbSk7ICovCi0tCQkJCQkJCQkvKnJldHVybiAwOyAqLwotLQkJCQkJCQkJY2ggPSAwOwotKwkJCQkJCQkJZ2RfZXJyb3IoImdkMjogRU9GIHdoaWxlIHJlYWRpbmdcbiIpOwotKwkJCQkJCQkJZ2RJbWFnZURlc3Ryb3koaW0pOwotKwkJCQkJCQkJcmV0dXJuIE5VTEw7Ci0gCQkJCQkJCX0KLSAJCQkJCQkJaW0tPnBpeGVsc1t5XVt4XSA9IGNoOwotIAkJCQkJCX0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtMTAxNjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWYxMDYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtMTAxNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDJkMzdiZGMwM2E2ZTJiODIwZmUzODAwMTZmMjI1OTJhNzczM2UwYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNyBBcHIgMjAxNyAxMjozMjo0OSArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzM1NDogU2lnbmVkIEludGVnZXIgT3ZlcmZsb3cgZ2RfaW8uYwotCi1HRDIgc3RvcmVzIHRoZSBudW1iZXIgb2YgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgY2h1bmtzIGFzIHdvcmRzIChpLmUuIDIKLWJ5dGUgdW5zaWduZWQpLiBUaGVzZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYW5kIGFzc2lnbmVkIHRvIGFuIGludCB3aGVuCi1yZWFkaW5nIHRoZSBpbWFnZSwgd2hhdCBjYW4gY2F1c2UgaW50ZWdlciBvdmVyZmxvd3MuIFdlIGhhdmUgdG8gYXZvaWQKLXRoYXQsIGFuZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IGVpdGhlciBjaHVuayBjb3VudCBpcyBhY3R1YWxseSBncmVhdGVyCi10aGFuIHplcm8uIElmIGlsbGVnYWwgY2h1bmsgY291bnRzIGFyZSBkZXRlY3RlZCwgd2UgYmFpbCBvdXQgZnJvbQotcmVhZGluZyB0aGUgaW1hZ2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAxNjgKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfZ2QyLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfZ2QyLmMgYi9zcmMvZ2RfZ2QyLmMKLWluZGV4IGJhZTY1ZWEuLjkwMDZiZDIgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfZ2QyLmMKLSsrKyBiL3NyYy9nZF9nZDIuYwotQEAgLTE1MSw2ICsxNTEsMTAgQEAgX2dkMkdldEhlYWRlciAoZ2RJT0N0eFB0ciBpbiwgaW50ICpzeCwgaW50ICpzeSwKLSAJR0QyX0RCRyAocHJpbnRmICgiJWQgQ2h1bmtzIHZlcnRpY2FsbHlcbiIsICpuY3kpKTsKLSAKLSAJaWYgKGdkMl9jb21wcmVzc2VkICgqZm10KSkgewotKwkJaWYgKCpuY3ggPD0gMCB8fCAqbmN5IDw9IDAgfHwgKm5jeCA+IElOVF9NQVggLyAqbmN5KSB7Ci0rCQkJR0QyX0RCRyhwcmludGYgKCJJbGxlZ2FsIGNodW5rIGNvdW50czogJWQgKiAlZFxuIiwgKm5jeCwgKm5jeSkpOwotKwkJCWdvdG8gZmFpbDE7Ci0rCQl9Ci0gCQluYyA9ICgqbmN4KSAqICgqbmN5KTsKLSAKLSAJCUdEMl9EQkcgKHByaW50ZiAoIlJlYWRpbmcgJWQgY2h1bmsgaW5kZXggZW50cmllc1xuIiwgbmMpKTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi02OTA2LTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YjdmNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi02OTA2LTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotRnJvbSBmYjBlMGNjZTBiOWYyNTM4OWFiNTY2MDRjMzU0NzM1MTYxN2UxNDE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkNocmlzdG9waCBNLiBCZWNrZXIiIDxjbWJlY2tlcjY5QGdteC5kZT4KLURhdGU6IFR1ZSwgMTYgQXVnIDIwMTYgMTY6MjY6MTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IE9PQiByZWFkcyBvZiB0aGUgVEdBIGRlY29tcHJlc3Npb24gYnVmZmVyCi0KLUl0IGlzIHBvc3NpYmxlIHRvIGNyYWZ0IFRHQSBmaWxlcyB3aGljaCB3aWxsIG92ZXJmbG93IHRoZSBkZWNvbXByZXNzaW9uCi1idWZmZXIsIGJ1dCBub3QgdGhlIGltYWdlJ3MgYml0bWFwLiBUaGVyZWZvcmUgd2UgYXVnbWVudCB0aGUgY2hlY2sgZm9yIHRoZQotYml0bWFwJ3Mgb3ZlcmZsb3cgd2l0aCBhIGNoZWNrIGZvciB0aGUgYnVmZmVyJ3Mgb3ZlcmZsb3cuCi0KLVRoaXMgaXNzdWUgaGFkIGJlZW4gcmVwb3J0ZWQgYnkgSWJyYWhpbSBFbC1TYXllZCB0byBzZWN1cml0eUBsaWJnZC5vcmcuCi0KLUNWRS0yMDE2LTY5MDYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi02OTA2Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2dkX3RnYS5jICAgICAgICAgICAgICAgIHwgICA2ICsrKystLQotIHRlc3RzL3RnYS8uZ2l0aWdub3JlICAgICAgICB8ICAgMSArCi0gdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0ICAgIHwgICAxICsKLSB0ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbSAgICAgfCAgIDIgKysKLSB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jICAgfCAgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy50Z2EgfCBCaW4gMCAtPiA2MDUgYnl0ZXMKLSA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3RnYS9oZWFwX292ZXJmbG93LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cudGdhCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfdGdhLmMgYi9zcmMvZ2RfdGdhLmMKLWluZGV4IDg3MzdiMDQuLjY4ZTRiMTcgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfdGdhLmMKLSsrKyBiL3NyYy9nZF90Z2EuYwotQEAgLTMwMCw3ICszMDAsOCBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAJCQkJZW5jb2RlZF9waXhlbHMgPSAoICggZGVjb21wcmVzc2lvbl9idWZmZXJbIGJ1ZmZlcl9jYXJldCBdICYgflRHQV9STEVfRkxBRyApICsgMSApOwotIAkJCQlidWZmZXJfY2FyZXQrKzsKLSAKLS0JCQkJaWYgKChiaXRtYXBfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSkgPiBpbWFnZV9ibG9ja19zaXplKSB7Ci0rCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID4gaW1hZ2VfYmxvY2tfc2l6ZQotKwkJCQkJCXx8IGJ1ZmZlcl9jYXJldCArIHBpeGVsX2Jsb2NrX3NpemUgPiBybGVfc2l6ZSkgewotIAkJCQkJZ2RGcmVlKCBkZWNvbXByZXNzaW9uX2J1ZmZlciApOwotIAkJCQkJZ2RGcmVlKCBjb252ZXJzaW9uX2J1ZmZlciApOwotIAkJCQkJcmV0dXJuIC0xOwotQEAgLTMxNiw3ICszMTcsOCBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAJCQkJZW5jb2RlZF9waXhlbHMgPSBkZWNvbXByZXNzaW9uX2J1ZmZlclsgYnVmZmVyX2NhcmV0IF0gKyAxOwotIAkJCQlidWZmZXJfY2FyZXQrKzsKLSAKLS0JCQkJaWYgKChiaXRtYXBfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSkgPiBpbWFnZV9ibG9ja19zaXplKSB7Ci0rCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID4gaW1hZ2VfYmxvY2tfc2l6ZQotKwkJCQkJCXx8IGJ1ZmZlcl9jYXJldCArIChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpID4gcmxlX3NpemUpIHsKLSAJCQkJCWdkRnJlZSggZGVjb21wcmVzc2lvbl9idWZmZXIgKTsKLSAJCQkJCWdkRnJlZSggY29udmVyc2lvbl9idWZmZXIgKTsKLSAJCQkJCXJldHVybiAtMTsKLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvLmdpdGlnbm9yZSBiL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi1pbmRleCA3YTY1OWIxLi5jZjA1NTZiIDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhLy5naXRpZ25vcmUKLSsrKyBiL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi1AQCAtMyw1ICszLDYgQEAKLSAvYnVnMDAyNDdhCi0gL2J1ZzAwMjQ4Ci0gL2J1ZzAwMjQ4YQotKy9oZWFwX292ZXJmbG93Ci0gL3RnYV9udWxsCi0gL3RnYV9yZWFkCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3ODlmYjE0Li4xMTU0MmEwIDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi90ZXN0cy90Z2EvQ01ha2VMaXN0cy50eHQKLUBAIC01LDYgKzUsNyBAQCBMSVNUKEFQUEVORCBURVNUU19GSUxFUwotIAlidWcwMDI0N2EKLSAJYnVnMDAyNDgKLSAJYnVnMDAyNDhhCi0rCWhlYXBfb3ZlcmZsb3cKLSAJdGdhX3JlYWQKLSApCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0gYi90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotaW5kZXggYTFlNmFmNi4uOTE2ZDcwNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtCi0rKysgYi90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotQEAgLTQsNiArNCw3IEBAIGxpYmdkX3Rlc3RfcHJvZ3JhbXMgKz0gXAotIAl0Z2EvYnVnMDAyNDdhIFwKLSAJdGdhL2J1ZzAwMjQ4IFwKLSAJdGdhL2J1ZzAwMjQ4YSBcCi0rCXRnYS9oZWFwX292ZXJmbG93IFwKLSAJdGdhL3RnYV9udWxsIFwKLSAJdGdhL3RnYV9yZWFkCi0gCi1AQCAtMTQsNiArMTUsNyBAQCBFWFRSQV9ESVNUICs9IFwKLSAJdGdhL2J1ZzAwMjQ3YS50Z2EgXAotIAl0Z2EvYnVnMDAyNDgudGdhIFwKLSAJdGdhL2J1ZzAwMjQ4YS50Z2EgXAotKwl0Z2EvaGVhcF9vdmVyZmxvdy50Z2EgXAotIAl0Z2EvdGdhX3JlYWRfcmdiLnBuZyBcCi0gCXRnYS90Z2FfcmVhZF9yZ2IudGdhIFwKLSAJdGdhL3RnYV9yZWFkX3JnYl9ybGUudGdhCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYyBiL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wZTlhMmQwCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi1AQCAtMCwwICsxLDUxIEBACi0rLyoqCi0rICogVGVzdCB0aGF0IHRoZSBjcmFmdGVkIFRHQSBmaWxlIGRvZXNuJ3QgdHJpZ2dlciBPT0IgcmVhZHMuCi0rICovCi0rCi0rCi0rI2luY2x1ZGUgImdkLmgiCi0rI2luY2x1ZGUgImdkdGVzdC5oIgotKwotKwotK3N0YXRpYyBzaXplX3QgcmVhZF90ZXN0X2ZpbGUoY2hhciAqKmJ1ZmZlciwgY2hhciAqYmFzZW5hbWUpOwotKwotKwotK2ludCBtYWluKCkKLSt7Ci0rICAgIGdkSW1hZ2VQdHIgaW07Ci0rICAgIGNoYXIgKmJ1ZmZlcjsKLSsgICAgc2l6ZV90IHNpemU7Ci0rCi0rICAgIHNpemUgPSByZWFkX3Rlc3RfZmlsZSgmYnVmZmVyLCAiaGVhcF9vdmVyZmxvdy50Z2EiKTsKLSsgICAgaW0gPSBnZEltYWdlQ3JlYXRlRnJvbVRnYVB0cihzaXplLCAodm9pZCAqKSBidWZmZXIpOwotKyAgICBnZFRlc3RBc3NlcnQoaW0gPT0gTlVMTCk7Ci0rICAgIGZyZWUoYnVmZmVyKTsKLSsKLSsgICAgcmV0dXJuIGdkTnVtRmFpbHVyZXMoKTsKLSt9Ci0rCi0rCi0rc3RhdGljIHNpemVfdCByZWFkX3Rlc3RfZmlsZShjaGFyICoqYnVmZmVyLCBjaGFyICpiYXNlbmFtZSkKLSt7Ci0rICAgIGNoYXIgKmZpbGVuYW1lOwotKyAgICBGSUxFICpmcDsKLSsgICAgc2l6ZV90IGV4cF9zaXplLCBhY3Rfc2l6ZTsKLSsKLSsgICAgZmlsZW5hbWUgPSBnZFRlc3RGaWxlUGF0aDIoInRnYSIsIGJhc2VuYW1lKTsKLSsgICAgZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIik7Ci0rICAgIGdkVGVzdEFzc2VydChmcCAhPSBOVUxMKTsKLSsKLSsJZnNlZWsoZnAsIDAsIFNFRUtfRU5EKTsKLSsJZXhwX3NpemUgPSBmdGVsbChmcCk7Ci0rCWZzZWVrKGZwLCAwLCBTRUVLX1NFVCk7Ci0rCi0rICAgICpidWZmZXIgPSBtYWxsb2MoZXhwX3NpemUpOwotKyAgICBnZFRlc3RBc3NlcnQoKmJ1ZmZlciAhPSBOVUxMKTsKLSsgICAgYWN0X3NpemUgPSBmcmVhZCgqYnVmZmVyLCBzaXplb2YoKipidWZmZXIpLCBleHBfc2l6ZSwgZnApOwotKyAgICBnZFRlc3RBc3NlcnQoYWN0X3NpemUgPT0gZXhwX3NpemUpOwotKwotKyAgICBmY2xvc2UoZnApOwotKyAgICBmcmVlKGZpbGVuYW1lKTsKLSsKLSsgICAgcmV0dXJuIGFjdF9zaXplOwotK30KLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy50Z2EgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy50Z2EKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWJjMGVjYjJhODQ3YWM2ZWRiYTkyZGQwZmY2MTE2N2I0OTAwMmNkCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDYwNQotemNtWlF6OzlgSVE5dEl1O2cmNzwkRjNvN1lnMXF6eWg2dGVmeTl3WkFzMmQ8VWgqeXV6PT9Yd1c0UXZ1diNnMm5TCi16cDkzK21UMHJWUj5UJjgoMlRHeT1mX2wpQGdTYXB+JEZheVVGdSghfFN5SklGZ2FeezhmR2p+dndxOGtrVmd2dj4KLUNhdm9wKwotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi02OTA2LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNmRlOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi02OTA2LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotRnJvbSA1OGI2ZGRlMzE5YzMwMWIwZWFlMjdkMTJlMmE2NTllMDY3ZDgwNTU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkNocmlzdG9waCBNLiBCZWNrZXIiIDxjbWJlY2tlcjY5QGdteC5kZT4KLURhdGU6IFR1ZSwgMTYgQXVnIDIwMTYgMTY6MjY6MTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IE9PQiByZWFkcyBvZiB0aGUgVEdBIGRlY29tcHJlc3Npb24gYnVmZmVyCi0KLUl0IGlzIHBvc3NpYmxlIHRvIGNyYWZ0IFRHQSBmaWxlcyB3aGljaCB3aWxsIG92ZXJmbG93IHRoZSBkZWNvbXByZXNzaW9uCi1idWZmZXIsIGJ1dCBub3QgdGhlIGltYWdlJ3MgYml0bWFwLiBUaGVyZWZvcmUgd2UgYWxzbyBoYXZlIHRvIGNoZWNrIGZvcgotcG90ZW50aWFsIGRlY29tcHJlc3Npb24gYnVmZmVyIG92ZXJmbG93cy4KLQotVGhpcyBpc3N1ZSBoYWQgYmVlbiByZXBvcnRlZCBieSBJYnJhaGltIEVsLVNheWVkIHRvIHNlY3VyaXR5QGxpYmdkLm9yZzsKLWEgbW9kaWZpZWQgY2FzZSBleHBvc2luZyBhbiBvZmYtYnktb25lIGVycm9yIG9mIHRoZSBmaXJzdCBwYXRjaCBoYWQgYmVlbgotcHJvdmlkZWQgYnkgS29ucmFkIEJlY2ttYW5uLgotCi1UaGlzIGNvbW1pdCBpcyBhbiBhbWVuZG1lbnQgdG8gY29tbWl0IGZiMGUwY2NlLCBzbyB3ZSB1c2UgQ1ZFLTIwMTYtNjkwNgotYXMgd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi02OTA2Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2dkX3RnYS5jICAgICAgICAgICAgICAgICAgfCAgIDggKysrKysrKy0KLSB0ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbSAgICAgICB8ICAgMyArKy0KLSB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jICAgICB8ICAxNiArKysrKysrKysrKystLS0tCi0gdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3dfMS50Z2EgfCBCaW4gMCAtPiA2MDUgYnl0ZXMKLSB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvd18yLnRnYSB8IEJpbiAwIC0+IDg3NDYgYnl0ZXMKLSA1IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3RnYS9oZWFwX292ZXJmbG93XzEudGdhCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3RnYS9oZWFwX292ZXJmbG93XzIudGdhCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfdGdhLmMgYi9zcmMvZ2RfdGdhLmMKLWluZGV4IDY4ZTRiMTcuLmY4MGYwYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfdGdhLmMKLSsrKyBiL3NyYy9nZF90Z2EuYwotQEAgLTI5NSw3ICsyOTUsMTMgQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCQlidWZmZXJfY2FyZXQgPSAwOwotIAotIAkJd2hpbGUoIGJpdG1hcF9jYXJldCA8IGltYWdlX2Jsb2NrX3NpemUgKSB7Ci0tCQkJCi0rCi0rCQkJaWYgKGJ1ZmZlcl9jYXJldCArIHBpeGVsX2Jsb2NrX3NpemUgPiBybGVfc2l6ZSkgewotKwkJCQlnZEZyZWUoIGRlY29tcHJlc3Npb25fYnVmZmVyICk7Ci0rCQkJCWdkRnJlZSggY29udmVyc2lvbl9idWZmZXIgKTsKLSsJCQkJcmV0dXJuIC0xOwotKwkJCX0KLSsKLSAJCQlpZiAoKGRlY29tcHJlc3Npb25fYnVmZmVyW2J1ZmZlcl9jYXJldF0gJiBUR0FfUkxFX0ZMQUcpID09IFRHQV9STEVfRkxBRykgewotIAkJCQllbmNvZGVkX3BpeGVscyA9ICggKCBkZWNvbXByZXNzaW9uX2J1ZmZlclsgYnVmZmVyX2NhcmV0IF0gJiB+VEdBX1JMRV9GTEFHICkgKyAxICk7Ci0gCQkJCWJ1ZmZlcl9jYXJldCsrOwotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLWluZGV4IDkxNmQ3MDcuLmFiMDhkYmYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotKysrIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLUBAIC0xNSw3ICsxNSw4IEBAIEVYVFJBX0RJU1QgKz0gXAotIAl0Z2EvYnVnMDAyNDdhLnRnYSBcCi0gCXRnYS9idWcwMDI0OC50Z2EgXAotIAl0Z2EvYnVnMDAyNDhhLnRnYSBcCi0tCXRnYS9oZWFwX292ZXJmbG93LnRnYSBcCi0rCXRnYS9oZWFwX292ZXJmbG93XzEudGdhIFwKLSsJdGdhL2hlYXBfb3ZlcmZsb3dfMi50Z2EgXAotIAl0Z2EvdGdhX3JlYWRfcmdiLnBuZyBcCi0gCXRnYS90Z2FfcmVhZF9yZ2IudGdhIFwKLSAJdGdhL3RnYV9yZWFkX3JnYl9ybGUudGdhCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYyBiL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93LmMKLWluZGV4IDBlOWEyZDAuLmRkZDRiNjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi0rKysgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKioKLS0gKiBUZXN0IHRoYXQgdGhlIGNyYWZ0ZWQgVEdBIGZpbGUgZG9lc24ndCB0cmlnZ2VyIE9PQiByZWFkcy4KLSsgKiBUZXN0IHRoYXQgY3JhZnRlZCBUR0EgZmlsZXMgZG9uJ3QgdHJpZ2dlciBPT0IgcmVhZHMuCi0gICovCi0gCi0gCi1AQCAtNywyMSArNywyOSBAQAotICNpbmNsdWRlICJnZHRlc3QuaCIKLSAKLSAKLStzdGF0aWMgdm9pZCBjaGVja19maWxlKGNoYXIgKmJhc2VuYW1lKTsKLSBzdGF0aWMgc2l6ZV90IHJlYWRfdGVzdF9maWxlKGNoYXIgKipidWZmZXIsIGNoYXIgKmJhc2VuYW1lKTsKLSAKLSAKLSBpbnQgbWFpbigpCi0gewotKyAgICBjaGVja19maWxlKCJoZWFwX292ZXJmbG93XzEudGdhIik7Ci0rICAgIGNoZWNrX2ZpbGUoImhlYXBfb3ZlcmZsb3dfMi50Z2EiKTsKLSsKLSsgICAgcmV0dXJuIGdkTnVtRmFpbHVyZXMoKTsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQgY2hlY2tfZmlsZShjaGFyICpiYXNlbmFtZSkKLSt7Ci0gICAgIGdkSW1hZ2VQdHIgaW07Ci0gICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgc2l6ZV90IHNpemU7Ci0gCi0tICAgIHNpemUgPSByZWFkX3Rlc3RfZmlsZSgmYnVmZmVyLCAiaGVhcF9vdmVyZmxvdy50Z2EiKTsKLSsgICAgc2l6ZSA9IHJlYWRfdGVzdF9maWxlKCZidWZmZXIsIGJhc2VuYW1lKTsKLSAgICAgaW0gPSBnZEltYWdlQ3JlYXRlRnJvbVRnYVB0cihzaXplLCAodm9pZCAqKSBidWZmZXIpOwotICAgICBnZFRlc3RBc3NlcnQoaW0gPT0gTlVMTCk7Ci0gICAgIGZyZWUoYnVmZmVyKTsKLS0KLS0gICAgcmV0dXJuIGdkTnVtRmFpbHVyZXMoKTsKLSB9Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3dfMS50Z2EgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvd18xLnRnYQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5YmMwZWNiMmE4NDdhYzZlZGJhOTJkZDBmZjYxMTY3YjQ5MDAyY2QKLUdJVCBiaW5hcnkgcGF0Y2gKLWxpdGVyYWwgNjA1Ci16Y21aUXo7OWBJUTl0SXU7ZyY3PCRGM283WWcxcXp5aDZ0ZWZ5OXdaQXMyZDxVaCp5dXo9P1h3VzRRdnV2I2cyblMKLXpwOTMrbVQwclZSPlQmOCgyVEd5PWZfbClAZ1NhcH4kRmF5VUZ1KCF8U3lKSUZnYV57OGZHan52d3E4a2tWZ3Z2PgotQ2F2b3ArCi0KLWxpdGVyYWwgMAotSGNtVj9kMDAwMDEKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93XzIudGdhIGIvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3dfMi50Z2EKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjY4MWYyZGY4OTQxZDY4MjNhYTc2MWJlMGE3ZmEzYzAyYzkyY2JmCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDg3NDYKLXpjbWVJeEYkI2IlNmE+KjxkamlqND9jdXorVmk1PyFSSVkpQCplREFRQGB6UFN3UUUxTlRJPFlRRXFkUUcjczVAaAotendERnRBb0lqbSlDSVFhfCR6KnEodnp9RGJuUGpyTiZSSXtZPX1hPSZVRldQUClqb0NaPDMxfWV5OCEofUZaWjcxCi16V29wPiNlKUFZPW9wbU13JmohaDRjYiY3SVJNVk1jdmIpWSVQcGF1bUdUQnx7dFM4bFVDWWtLNmJKbWs7SXpNREMKLUQ0UFlJTgotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvRml4LTI5MC1UR0EtUkxFLWRlY29kaW5nLWlzLWJyb2tlbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvRml4LTI5MC1UR0EtUkxFLWRlY29kaW5nLWlzLWJyb2tlbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmNWM2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0ZpeC0yOTAtVEdBLVJMRS1kZWNvZGluZy1pcy1icm9rZW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTkgKzAsMCBAQAotRnJvbSA0ZjhlMjZmMmE0MGZmYWEzYTViNzdiZTZhNDk5ODlhMWE0MmUyYjgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkNocmlzdG9waCBNLiBCZWNrZXIiIDxjbWJlY2tlcjY5QGdteC5kZT4KLURhdGU6IFR1ZSwgMTYgQXVnIDIwMTYgMTQ6Mjc6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMyOTA6IFRHQSBSTEUgZGVjb2RpbmcgaXMgYnJva2VuCi0KLVdlIG1ha2UgaXQgd29yayBvbmx5LCBmb3Igbm93LiBBY3R1YWxseSwgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRoYXQKLWBvVGdhOjpiaXRtYXBgIGlzIGFuIGBpbnQgKmAgYXMgd2UncmUgc3RvcmluZyBvbmx5IGJ5dGVzIHRoZXJlLiBJZiB0aGlzCi13aWxsIGJlIGNoYW5nZWQsIHdlIGNhbiBldmVuIGdldCByaWQgb2YgdGhlIGBjb252ZXJzaW9uX2J1ZmZlcmAgaW4KLWByZWFkX2ltYWdlX3RnYWAgYWx0b2dldGhlciwgYW5kIHJlYWQgdGhlIGltYWdlIGRhdGEgaW50byB0aGUKLWBkZWNvbXByZXNzaW9uX2J1ZmZlcmAgKGlmIFJMRSdkKSBvciB0aGUgYHRnYS0+Yml0bWFwYCAoaWYgdW5jb21wcmVzc2VkKQotZGlyZWN0bHkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfdGdhLmMgICAgICAgICAgICAgICAgICAgfCAgMTggKysrKysrKysrKy0tLS0tLS0tCi0gdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgICAxICsKLSB0ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbSAgICAgICAgfCAgIDggKysrKysrLS0KLSB0ZXN0cy90Z2EvdGdhX3JlYWQuYyAgICAgICAgICAgfCAgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHRlc3RzL3RnYS90Z2FfcmVhZF9yZ2IucG5nICAgICB8IEJpbiAwIC0+IDIzNDkgYnl0ZXMKLSB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnRnYSAgICAgfCBCaW4gMCAtPiA5MDQ0NCBieXRlcwotIHRlc3RzL3RnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYSB8IEJpbiAwIC0+IDk5ODcgYnl0ZXMKLSA3IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvdGdhX3JlYWQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnBuZwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnRnYQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiX3JsZS50Z2EKLQotZGlmZiAtLWdpdCBhL3NyYy9nZF90Z2EuYyBiL3NyYy9nZF90Z2EuYwotaW5kZXggZWM2NzgxZi4uODczN2IwNCAxMDA2NDQKLS0tLSBhL3NyYy9nZF90Z2EuYwotKysrIGIvc3JjL2dkX3RnYS5jCi1AQCAtMjA3LDEyICsyMDcsMTMgQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gewotIAlpbnQgcGl4ZWxfYmxvY2tfc2l6ZSA9ICh0Z2EtPmJpdHMgLyA4KTsKLSAJaW50IGltYWdlX2Jsb2NrX3NpemUgPSAodGdhLT53aWR0aCAqIHRnYS0+aGVpZ2h0KSAqIHBpeGVsX2Jsb2NrX3NpemU7Ci0tCXVpbnQ4X3QqIGRlY29tcHJlc3Npb25fYnVmZmVyID0gTlVMTDsKLSsJaW50KiBkZWNvbXByZXNzaW9uX2J1ZmZlciA9IE5VTEw7Ci0gCXVuc2lnbmVkIGNoYXIqIGNvbnZlcnNpb25fYnVmZmVyID0gTlVMTDsKLSAJaW50IGJ1ZmZlcl9jYXJldCA9IDA7Ci0gCWludCBiaXRtYXBfY2FyZXQgPSAwOwotIAlpbnQgaSA9IDA7Ci0gCWludCBlbmNvZGVkX3BpeGVsczsKLSsJaW50IHJsZV9zaXplOwotIAotIAlpZihvdmVyZmxvdzIodGdhLT53aWR0aCwgdGdhLT5oZWlnaHQpKSB7Ci0gCQlyZXR1cm4gLTE7Ci1AQCAtMjY2LDcgKzI2Nyw3IEBAIGludCByZWFkX2ltYWdlX3RnYSggZ2RJT0N0eCAqY3R4LCBvVGdhICp0Z2EgKQotIAkJLyohIFxicmllZiBSZWFkIGluIFJMRSBjb21wcmVzc2VkIFJHQiBUR0EKLSAJCSAqICBDaHVuayBsb2FkIHRoZSBwaXhlbCBkYXRhIGZyb20gYW4gUkxFIGNvbXByZXNzZWQgUkdCIHR5cGUgVEdBLgotIAkJICovCi0tCQlkZWNvbXByZXNzaW9uX2J1ZmZlciA9ICh1aW50OF90KikgZ2RNYWxsb2MoaW1hZ2VfYmxvY2tfc2l6ZSAqIHNpemVvZih1aW50OF90KSk7Ci0rCQlkZWNvbXByZXNzaW9uX2J1ZmZlciA9IChpbnQqKSBnZE1hbGxvYyhpbWFnZV9ibG9ja19zaXplICogc2l6ZW9mKGludCkpOwotIAkJaWYgKGRlY29tcHJlc3Npb25fYnVmZmVyID09IE5VTEwpIHsKLSAJCQlyZXR1cm4gLTE7Ci0gCQl9Ci1AQCAtMjc3LDcgKzI3OCw4IEBAIGludCByZWFkX2ltYWdlX3RnYSggZ2RJT0N0eCAqY3R4LCBvVGdhICp0Z2EgKQotIAkJCXJldHVybiAtMTsKLSAJCX0KLSAKLS0JCWlmIChnZEdldEJ1Zihjb252ZXJzaW9uX2J1ZmZlciwgaW1hZ2VfYmxvY2tfc2l6ZSwgY3R4KSAhPSBpbWFnZV9ibG9ja19zaXplKSB7Ci0rCQlybGVfc2l6ZSA9IGdkR2V0QnVmKGNvbnZlcnNpb25fYnVmZmVyLCBpbWFnZV9ibG9ja19zaXplLCBjdHgpOwotKwkJaWYgKHJsZV9zaXplIDw9IDApIHsKLSAJCQlnZEZyZWUoY29udmVyc2lvbl9idWZmZXIpOwotIAkJCWdkRnJlZShkZWNvbXByZXNzaW9uX2J1ZmZlcik7Ci0gCQkJcmV0dXJuIC0xOwotQEAgLTI4NSw3ICsyODcsNyBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAKLSAJCWJ1ZmZlcl9jYXJldCA9IDA7Ci0gCi0tCQl3aGlsZSggYnVmZmVyX2NhcmV0IDwgaW1hZ2VfYmxvY2tfc2l6ZSkgewotKwkJd2hpbGUoIGJ1ZmZlcl9jYXJldCA8IHJsZV9zaXplKSB7Ci0gCQkJZGVjb21wcmVzc2lvbl9idWZmZXJbYnVmZmVyX2NhcmV0XSA9IChpbnQpY29udmVyc2lvbl9idWZmZXJbYnVmZmVyX2NhcmV0XTsKLSAJCQlidWZmZXJfY2FyZXQrKzsKLSAJCX0KLUBAIC0yOTgsMTQgKzMwMCwxNCBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAJCQkJZW5jb2RlZF9waXhlbHMgPSAoICggZGVjb21wcmVzc2lvbl9idWZmZXJbIGJ1ZmZlcl9jYXJldCBdICYgflRHQV9STEVfRkxBRyApICsgMSApOwotIAkJCQlidWZmZXJfY2FyZXQrKzsKLSAKLS0JCQkJaWYgKChiaXRtYXBfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSkgPj0gaW1hZ2VfYmxvY2tfc2l6ZSkgewotKwkJCQlpZiAoKGJpdG1hcF9jYXJldCArIChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpKSA+IGltYWdlX2Jsb2NrX3NpemUpIHsKLSAJCQkJCWdkRnJlZSggZGVjb21wcmVzc2lvbl9idWZmZXIgKTsKLSAJCQkJCWdkRnJlZSggY29udmVyc2lvbl9idWZmZXIgKTsKLSAJCQkJCXJldHVybiAtMTsKLSAJCQkJfQotIAotIAkJCQlmb3IgKGkgPSAwOyBpIDwgZW5jb2RlZF9waXhlbHM7IGkrKykgewotLQkJCQkJbWVtY3B5KHRnYS0+Yml0bWFwICsgYml0bWFwX2NhcmV0LCBkZWNvbXByZXNzaW9uX2J1ZmZlciArIGJ1ZmZlcl9jYXJldCwgcGl4ZWxfYmxvY2tfc2l6ZSk7Ci0rCQkJCQltZW1jcHkodGdhLT5iaXRtYXAgKyBiaXRtYXBfY2FyZXQsIGRlY29tcHJlc3Npb25fYnVmZmVyICsgYnVmZmVyX2NhcmV0LCBwaXhlbF9ibG9ja19zaXplICogc2l6ZW9mKGludCkpOwotIAkJCQkJYml0bWFwX2NhcmV0ICs9IHBpeGVsX2Jsb2NrX3NpemU7Ci0gCQkJCX0KLSAJCQkJYnVmZmVyX2NhcmV0ICs9IHBpeGVsX2Jsb2NrX3NpemU7Ci1AQCAtMzE0LDEzICszMTYsMTMgQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCQkJCWVuY29kZWRfcGl4ZWxzID0gZGVjb21wcmVzc2lvbl9idWZmZXJbIGJ1ZmZlcl9jYXJldCBdICsgMTsKLSAJCQkJYnVmZmVyX2NhcmV0Kys7Ci0gCi0tCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID49IGltYWdlX2Jsb2NrX3NpemUpIHsKLSsJCQkJaWYgKChiaXRtYXBfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSkgPiBpbWFnZV9ibG9ja19zaXplKSB7Ci0gCQkJCQlnZEZyZWUoIGRlY29tcHJlc3Npb25fYnVmZmVyICk7Ci0gCQkJCQlnZEZyZWUoIGNvbnZlcnNpb25fYnVmZmVyICk7Ci0gCQkJCQlyZXR1cm4gLTE7Ci0gCQkJCX0KLSAKLS0JCQkJbWVtY3B5KHRnYS0+Yml0bWFwICsgYml0bWFwX2NhcmV0LCBkZWNvbXByZXNzaW9uX2J1ZmZlciArIGJ1ZmZlcl9jYXJldCwgZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKTsKLSsJCQkJbWVtY3B5KHRnYS0+Yml0bWFwICsgYml0bWFwX2NhcmV0LCBkZWNvbXByZXNzaW9uX2J1ZmZlciArIGJ1ZmZlcl9jYXJldCwgZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplICogc2l6ZW9mKGludCkpOwotIAkJCQliaXRtYXBfY2FyZXQgKz0gKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSk7Ci0gCQkJCWJ1ZmZlcl9jYXJldCArPSAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKTsKLSAJCQl9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBjM2E1ODljLi43ODlmYjE0IDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi90ZXN0cy90Z2EvQ01ha2VMaXN0cy50eHQKLUBAIC01LDYgKzUsNyBAQCBMSVNUKEFQUEVORCBURVNUU19GSUxFUwotIAlidWcwMDI0N2EKLSAJYnVnMDAyNDgKLSAJYnVnMDAyNDhhCi0rCXRnYV9yZWFkCi0gKQotIAotIEFERF9HRF9URVNUUygpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0gYi90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotaW5kZXggZGZmODI4Zi4uYTFlNmFmNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtCi0rKysgYi90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotQEAgLTQsNyArNCw4IEBAIGxpYmdkX3Rlc3RfcHJvZ3JhbXMgKz0gXAotIAl0Z2EvYnVnMDAyNDdhIFwKLSAJdGdhL2J1ZzAwMjQ4IFwKLSAJdGdhL2J1ZzAwMjQ4YSBcCi0tCXRnYS90Z2FfbnVsbAotKwl0Z2EvdGdhX251bGwgXAotKwl0Z2EvdGdhX3JlYWQKLSAKLSBFWFRSQV9ESVNUICs9IFwKLSAJdGdhL0NNYWtlTGlzdHMudHh0IFwKLUBAIC0xMiw0ICsxMyw3IEBAIEVYVFJBX0RJU1QgKz0gXAotIAl0Z2EvYnVnMDAyNDcudGdhIFwKLSAJdGdhL2J1ZzAwMjQ3YS50Z2EgXAotIAl0Z2EvYnVnMDAyNDgudGdhIFwKLS0JdGdhL2J1ZzAwMjQ4YS50Z2EKLSsJdGdhL2J1ZzAwMjQ4YS50Z2EgXAotKwl0Z2EvdGdhX3JlYWRfcmdiLnBuZyBcCi0rCXRnYS90Z2FfcmVhZF9yZ2IudGdhIFwKLSsJdGdhL3RnYV9yZWFkX3JnYl9ybGUudGdhCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL3RnYV9yZWFkLmMgYi90ZXN0cy90Z2EvdGdhX3JlYWQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMxMGI3MmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL3RnYS90Z2FfcmVhZC5jCi1AQCAtMCwwICsxLDQwIEBACi0rLyoqCi0rICogQmFzaWMgdGVzdCBjYXNlIGZvciByZWFkaW5nIFRHQSBmaWxlcy4KLSsgKi8KLSsKLSsKLSsjaW5jbHVkZSAiZ2QuaCIKLSsjaW5jbHVkZSAiZ2R0ZXN0LmgiCi0rCi0rCi0rc3RhdGljIHZvaWQgYXNzZXJ0X2VxdWFscyhjaGFyICpleHAsIGNoYXIgKm9yaWcpOwotKwotKwotK2ludCBtYWluKCkKLSt7Ci0rICAgIGFzc2VydF9lcXVhbHMoInRnYV9yZWFkX3JnYi5wbmciLCAidGdhX3JlYWRfcmdiLnRnYSIpOwotKyAgICBhc3NlcnRfZXF1YWxzKCJ0Z2FfcmVhZF9yZ2IucG5nIiwgInRnYV9yZWFkX3JnYl9ybGUudGdhIik7Ci0rCi0rICAgIHJldHVybiBnZE51bUZhaWx1cmVzKCk7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkIGFzc2VydF9lcXVhbHMoY2hhciAqZXhwLCBjaGFyICpvcmlnKQotK3sKLSsgICAgZ2RJbWFnZVB0ciBpbTsKLSsgICAgRklMRSAqZnA7Ci0rICAgIGNoYXIgKmZpbGVuYW1lOwotKwotKyAgICBmcCA9IGdkVGVzdEZpbGVPcGVuMigidGdhIiwgb3JpZyk7Ci0rICAgIGdkVGVzdEFzc2VydE1zZyhmcCAhPSBOVUxMLCAiY2FuJ3Qgb3BlbiAlcyIsIG9yaWcpOwotKwotKyAgICBpbSA9IGdkSW1hZ2VDcmVhdGVGcm9tVGdhKGZwKTsKLSsgICAgZ2RUZXN0QXNzZXJ0TXNnKGltICE9IE5VTEwsICJjYW4ndCByZWFkICVzIiwgb3JpZyk7Ci0rICAgIGZjbG9zZShmcCk7Ci0rCi0rICAgIGZpbGVuYW1lID0gZ2RUZXN0RmlsZVBhdGgyKCJ0Z2EiLCBleHApOwotKyAgICBnZEFzc2VydEltYWdlRXF1YWxzVG9GaWxlKGZpbGVuYW1lLCBpbSk7Ci0rICAgIGdkRnJlZShmaWxlbmFtZSk7Ci0rCi0rICAgIGdkSW1hZ2VEZXN0cm95KGltKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi5wbmcgYi90ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnBuZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNDY4ZTNkOTI3ZWFlYjc3ZDJmNWMzYmMzNWI5NzA0NTdmNjBmMTgKLUdJVCBiaW5hcnkgcGF0Y2gKLWxpdGVyYWwgMjM0OQotemNtWmAqY3t0U1g3WE9hTzctNks2YiZSRF9Nblh5JG5IZSNic1ZHflR2Zloqdk8/SmxlOCVhcitBeVNEZlN0RkdoCi16RyMqKXBMMFJVUEooRmVkQmFFP3gtKm9ARF9kZVp3cFo3V01kQ3Vvfi10KWZhb1hfKX5sVytsTkNJKnAoMDAxQ3sKLXpIT0pXU2J0XytQZnBfIXc8bUA+V3pTYHwtWEAmdUlleXRhRTEqdj5RQio1SjlIVU5sOXtTcHc2YFNjKGs2dXlKQwotekhXZU5OTG18M350Q297VTAwMnw1Nz9WckVVKzEkc3k7YSZ8Oy1rYlpsYDZFX0MlPmdxYkR0Qz01N0YzZlVEJClrCi16U0c1RFRMNiNOblU9N3dHY0N3fDxmfHtyWmkpNXE8Y1ZXKk5RUFFDWTB4UFUwX25HRyNEP3dSMzdCT15vXjI2MSUKLXorfXF1UUlfMVpQPWdUTnAtbnw7Iyl6fl47NzhvPWVAdFJZclMjOEpjPk17VypPZFlFZ2pKcDZ1OVJiN2wjWCV0YAotenVuO15oMjh1RVA9UDNQeD98ck5HRiMxN0QlQShDSl9hcnw/bl4wbnEhfncrV2cyMzg2N3J5biFabGJ8fiY3QX56Ci16cWtQPUlQeUxyT00/NTg+MnJFcT0meyo5T01VIUhOV0prZ2AoYHkoPTJ7V0xnMzkyT1REeWlNMiRpQ0xjdjVMQ0cKLXpqV3dScTQ2RGEkcFZ8Vl40R3ZzMzZrMWRXRl5WNGM4aiUzfmpOeyowKiRwaHBGfC0jemlAO2tAdC1zP2NxVyZzZAotelBoe3h+QHptYCE1VjIzKkwmUWI9X2VsTn5uRUVxUWhyaE5aaVJVI3xxaks+NnB0YVlnaipzQWN1Uyt0LTdYNWFCCi16VUk1ZiphTDBEdXQreTB2ZGU/dGc3UU1hXjBgKHBsdnVEXlE+KUooYWJRWT5ANlBfKllZO1hKNTRWQ15fZjdGMngKLXoyMWVlXjM1fSE8TEBiVz88LUpnSi0lc2FoRnY2OHhQWGdoQ2x8Q3NDYy1QLUF7YGtsXzNCeX1NcX1ZbllZbVN0NAotejhoOG14Pzx6QmdxOUN6VjQqI3pSOHR9eDVPcjghOVJuNkxnYWpKIUIpZWJ4RXRyd0NAKnA0TUBENTEjP09FWX08Ci16cUpIdStzQ1JVMllYTnhpcShEUEAqKFVpP0p6O0lRQE8kTGJmfWU4TndpaipMJmlVZCRONC1Za2ZwJHZEeCN1dj8KLXojX2VVTHBBYlB2Tjx0VkE+RWsjI3JRREFPVytAKTI/JX1YaWlTaV50ZWQxUFF1e3YwJj9iQV5yJXo/NypBbjNfSAotenZZRnY4e3A4ZnNDZ3VOUiQjMz02T3teSCY4a1Q5TjkyQ2VhUkFqM1lfY05sLXpuWThKWntNcE8jT0t9QTxfdzlKCi16V01JMktsP3h2fFMtRlRWKGFVR19gVVdUWk9GSkdndjIpPkpSIypIMlVhZCh3eXFiSVp0P3d8RHd8azxlWSYmOUYKLXpjciF6RGc3PSNIXj1eTUMrVzAyR057NzhLPTRLdXE5MGNAJDdmJDcraCleWUZtfS0/M2NFZFUrSXZoNVJDPCtZeQotek96KDdyPHRUfFozNFNAZ2x6XjlscHBAT3N0REJHQShpd2s8TFEjckBpXyleTVYqUmUzXnFCI2o3Tn00ZXRaZks+Ci16dDY8d3RqJk0yKFRMZ1RoM0FIKH00O2Y0aj08SXVeYXh2VDAhOEIpSzBPITdnP1duaEl5R0g1QEV0VDc3Jj9FezYKLXpCNTwje1BXSk94UWtGfUxza3pJQDsocVZDakUldi1ofFM4O2BrI2heVzV3Ui1jYWRXMkgyTWsrN1FaaHFTUmQhTQotemNROGZweH5PXiheTyMyZ1hpV0RYJnVAbFpUI3FqUEd+WGgwVW9iVnEjfkx1bWYhJVM5YEpoZiVNSD80UmU1LTE3Ci16N0JQPkQ+PXN5NTlqRUdvZUV4X1cxM0JubWhBcz8qajYjYkcxYUAjMTZPfjE+cStQMkAlUU5+YGBXczc9V1g7RjkKLXpgPXA1SSQxaWcqR3xpVzh2c2xyMl44aGorQTBIV0RvVC1AZm41STUzWldXcCFyOGZNZ2htcGpkcUMlRSMlMkhGSQotelkmQShnIUxpMyskPEJeeTheSHc1IXNYZCZrJUV2IWE7fmFCI2pvajE/Mm50dTl8IUdBRlV3eWMwb2Vffnk8fT9FCi16VWhASFViQ0koeDJXMXJtZzdja3pSTDJFdyNjZHVqdXQrKi10MGcpODFUdSszWkg0dVBgcjFkMWtTb29VQDV5YkwKLXpSNV9KJUE1c2JhaylLclNmPihyfFYqJnlDYjtIYSgmQUNpOXc7P2tRN3ExJGh3amxpXik7K0tJSkFofEsmWUwjRQoteitiKGBQWk4+Vl81P3ZgaHUtVTQyOUs5Zk8lOCprOHBFPWpEa241WkpLfFZnbCpAJlFFXjttd2xDeFdicTQoaHlpCi16VXV6KWJrQDVeSE9rQGdCYFNhV1pmWDA3RW9tMDdqcyVucDhYb3QmP1lQOFIrM3xqclI0YyN6T3tMTzw/Xkc4NE8KLXpvUH1HYE1LKUxaRG9fJCNuV1IwOVg+TllfbUx+MV5CVUd9KSo0YjtaX3pxK2BRQGt6VUhDJmB0ckNpUVl1bTsxPwotekJpYyswQmw+TExZVT8+IUIzayFJbHN9dVhSKmBPRXIzYGY8UEBIWkZrYDBmUDVgXlg9Qk90Qz9AIXZVcTdCNE9GCi16WkV3NiszZW9GUkVAeEV3KCVEZkl5YmhKdW8wM0R1MmxkbSQyMFNuM2hqMTVMdSZnUFFwPU4lciVoTUUkKmp7XkAKLXpSVGZmUWhIN0pMQi03MHFWa1NtJDladGBtYWhITFQ3T15Kbk5xQUFKczBDXm4rMXVqX0UtfVNePyZfVT1IPztEXwotejFVOVVKQXp8Kzd6fFlxKDYke0F+NWZoY31oSDV0d25LdWtmI0RuX0puUSRKNC1aJGR9KlRycT4/YUtyMnAxOWM2Ci16WUp9citecz42YUR+bXJwO29JVWhsaWc0c00pSmczPUp7SztkcCNCQ3pSdTFzVTNEMXdKbHtqQV5ZI1NoVlQrfF4KLXpVeWppTSZ3RH52M3p5fUsheldtJTNjcHUjKCopY214dzErbitDN1Z8aGNaNmg4Q1pMdWJYdCZKKWgkNnlmbFY2Pgotek9Wdl9nRGIqZ2xPOUZMTDh4NmJxTTYoRiNwR2hHeStqak95dDktZGFNV0dySktGe1h2blQjXlRlWWFxMk1HKXF3Ci16Sj1SVjtNd2cqZ29PYT8od009RUg8I0FTJGVnUmoqd25tK0J1NFBieyQtT31HWlNpdVQxVWRCRHd2MlJ6KWIzK0wKLXpSQT1ua2FXSEI3SSRUfkIlO0t5bm5TMGJAM1lwS3F0JDI7cXp3TGY+RFo0UkZDUUIhPVFRYEZ0JnlfUFRodURzQQotemNrYXdtYkZuQTlUbDcrRXolYSk+PlQrTmhAOFV4enJaUGA8cEhFWFZkI3wydj1mX2IjQUB8b0F6Yms2UV8+fE8pCi16Z3c/WGxpISktKXhyRjJ6PXRoSC1USTt8PlVWWUs2NEBhc1QlNDg0Q0YtcGprK35+d0ErWiVmWll1YStzREo8TmYKLXpmT2BiZmx9aWdfMCZDN0JDdUJhKXhaPy1tUU89YlEyTjU7PlN3fX58KHRNfWhLK3o+K144UVFoT3NUeGwrMkFKKwotelg4V2psU3w7MFdSdjdzX0JrPUB1JHYzR0xAcUM/JmpjTkV2PG82OGtheiFwSE9zQDsjQ1NofHshaiZ6cnNmbjhqCi16NnxvI142QzJOTzkhRyZ1O1EwVTVoa3BDc3wyWjNJJG5OWX54fVRsPHJPQnwxS2lCfFJReWl1WWJ2QD45Q29vayYKLQotbGl0ZXJhbCAwCi1IY21WP2QwMDAwMQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi50Z2EgYi90ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnRnYQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMTFmNWEwODBmMzQyNGRmZjZmZjM2OGRiNmFmMTQwYTU3NzdlMjMKLUdJVCBiaW5hcnkgcGF0Y2gKLWxpdGVyYWwgOTA0NDQKLXpjbWVJNEthYj9iNXljNkFmKDtjKDEzYGZVKiUmeGI7dFFDXyphUGhJYFkja1IrRE80RnlPN3g+MjNERHxmUHUqIQotemMkM1JWeiRGZUFTbElwbWxSN2M+ezBYU3tjd0khWGhuISowJkcwejl3P0xfeSltNj0mPyV5TGhDdHxZZkMpdkJkCi16QDNNYnAtKGAhUlIjbGJCdjw2fjg0MlNfU0FPXiZNNyFVKHVLbiNjaEYoM3hTZkVXLTFWbjdVdDBXbHkzI0RFd08KLXoxN2JpN2h5Z0ptMkU+M0U1Q2RZTSZBP30kZXg0bV9URmRyWVlDWXorOXpoI0Z6Jnw5fHgyektuXlcjQiMrVFBRawotemtHSnF1ZzF3U0grVXFFOz1EOGx5JDJ8OHtkT2dtKk4qfjhyTkFXbiViKEI4bHh2JGRlYXJSYUVJTDxuWCQ5Yi0hCi16XmZBd1VtMHBqdHVoUGVIKT1AbXBhfi05UmRHNCQ5ZFlwWmdLOH59RjsmR25xRDFGUnhVIX5YTT81cCV+b09La0IKLXpeSVhURWtNSDV7NjZ8LVo2QkZ9ZlZzODhUKkkpaTNKSmhvT1NKfE85d3tfSSNuV3g/bClkdVNoKWR1VXRsaCRBdAotejE3Q2ptLXxUKHQ9XnQ1a3NRR3lYZVl9UlI2Nn1yQiQ2TjRUQ0Q8JEpMKSEyUmNDfnt4bWhjYVcjdXtwKWZJVEV5Ci16dHRtZXI9fGlrfjk7VlVgYGdqSWtCXnFuVWBBYi1wWHdydiVPWitVSlpLViVneDJKTmdwNWk+RDU5d295VHV4PDkKLXoodWVkaDYmOXlCNTl2ZXRtP0Q9YG5Vbk0oZU4yVkxEYjdSc2tVcGwhPHk3ViplTWxjdVZSNEd7a1VwZjNEUk1jTAoteklZfVNWJDVkRkg7eWZtJWs0d0J+YS1Dbz0tMX1Eci1sd2B3dSY/eX5tOTdvQEcjVHtxM0gpYFV2NC0hN0VNZUQpCi16dylLOT1afm1UVGh1VUFWfDdDflR6ViVXNiRFfjQ1blk2az94biFNWkZPMnMrezZtOE1qZGZ1VEtmcGdFKnRoVzwKLXp7Q3cyQHhPSExzQUdySmt7eU5jRUxwR1BOPnFNKVd3bUh5O2RBeD9ONjZ7VHcxSUsje3N9ayVMYSQ2ZXBeSEUjKwotemE5bG8xVkFBK3k0WV89b3pAK2dqZWR6dCZ2JCFecWFoVVdXVWVBS3B2RzQyQmhuXiRHWDZ+SE1DdylqQz1mdnlTCi16YkNvYCVrRmw5TXJ9SWY0KCNKWFJJYCYrcDU5d29VPUZhSlModWVlTVBQfnBpU0xzOWc3QE42c0ktbTMqZVZofW8KLXpXNnlQQmBxMkFWYHV+KVpgdX4oY0E3OC1WQl5xbl5wMiNLYUY0NEIkRkE0N3ZBTXsoTmN6M3ZkQU5VWUlfVnF+VAotekpGb2s3Xys4SHJ7QGR3NkFENDttKnVNengqaSM9eDt5ZDxWUUJVSWF5bSVkWnprKXUjZldKI0wqNl9FfUZKWDZ5Ci16UnshUkB8RXhoRHVpO2FFPWskJSEkNk41OEA7aiVtcXpgR3NHdVlKKmBnakpQXjFKRUdXZXF1aDJ9fTlpYm1tR1EKLXpga3J3WF9pcEohKlUreChyZWcyN2tVcGRqWGAhRDE+NyMjYiNFc1RRYFZhJVU0KWlsMWVlfCE1eFk2MjNBN1ZoKQotemZxbiswa04mazBIKERGJUxrI0ZUKDllTU0oWjRxME1yJEt8aHloJihgV2N2KktKQDtzLWFERHBkblo5M1ErYTxeCi16YGo5PipySH1XeXd8QDVOPWheJCVgPHo+fnttJXFpbmB4e34mXyk2T2taODU4dzIjeCtOQTFJRF85NXV3QzQ3fT0KLXp6NTIqVF9gX1YrWm9YeEYlNzZkc0tldzxvZWNaUn04MlFVayRKKFhrcUZxP3JWc3JNPStkSTkxRj4qZGZlVVJecAotek9zODsrezU7Z0xIbiY9fE9OKDE8JlIrVkVLRHpqWjJLdyRGKCNKPm0/KyZfdWJnNSlKcnUpWmZwNntvQXBPUVlkCi16d2FedWpLQk56NUNGTUslcHpyNHh2eElIaippVUckVV4kSDZ2MXkmKHAlR3VlbjlHX2YqZHg1dlRDOXdqMkc1Nm4KLXp8NXlZcUBPZiVzPEhxYDZBSSR5QGZha2hfVTBBO05pMDNlbFMxPXlodGh1K0M8PlVCKkZfPDVseGplcUlKbnV0MwoteiRJb0dgVSVeO0kmdn4ocncoeGJuamxRTU5vQkROcXRvZWJwNDBlKzU9Tk9tbDheZntwJXhgXiVNJUB6VGI5VTkyCi16ZXlgY2FVWHpjQ0tKTUZmakM/WjJJJENiSVhwPTlDbGNndGpZO25mNjcpSCEkKkp6Vi0lY3A7ST1lV1hnKlNNe0cKLXo8Z3wyJVZ+KSFscDY0O050PilleGNWMzVoZSZub04tbztxX1A1bkd6QEZlPWN4RnN4UmRmbWYoaSgld2tibVZPaQotejxHbXZ1bGdGaG9XKiZRTyUoVFh+e3l2WW8rO05neTklOUJneGlmfno5XjstWl9BamxES0lIaGliJT9SUDJzelhvCi16YjFaS2FheVkoY29jJH0tKmRMRDlGc3JOa2FtPjAkKmFCdyM4PkAqdWEtTHdVeT1VTGx4Z0JlTVZDKDRtej9kPUwKLXpfbCRBZkwqRU1DYktZVlllWCtJKio3NlUxSVZgQGZseSNeM2s3SkBXd29CPTNxQW19ZGtkQHEkJj9hdztuSEFQWQotemtHU1clYjxVYF4pbntXTSQyMzRyVGwocjR8SDxrPy14QFZHdWhSRjB7PSlVPTlzUnMtU15YOUokS3I0NT1LKlZFCi16P3hAZEs3X1dkQ3w3NXc9aFRqKiZIWkdeZDRDNE1pUVRqVHooZUtDU2RBNCR9LV5OVTk/MEJzQjc8RUpSdjVNPD4KLXpqTX56MXd5Pk5pVWhgKnQ9MGdyT2EkflhCcXdmKGBiTHsmTnYoTClEdCtpJGhNJX1UMFl3bjJneXpGYXFIKzYydQotem5qaEZZZys2WEV1SVohbW5VX3F2b0VGMF8mTV85QTEjMlZqPzspa2QmMTB7UG5iejNXLXsoO2BMPzN4cUohPF91Ci16cXxwSzVveDE1N3FjNFVyJG9Ne2VZPEFTSVB+WHgzYkhsaWQoO0RySiNveUc9MUowPEFPVzBrYXY5OXd6alFBUjYKLXpgWTV+aDRFPyN3WCY4PjtSYVkleiRsR31pP0RhYkFjezZ0M1NVISVMejU0TF5hWFh4b3RkLVdzdyM2O0IlT2pVTQotekQ/OzUwelI/QlI5SntxSElOdGtOaz5mdj8qRGxYZmtJNVhIKlZNVGtZa3VJWT1LTjZLSFA0OU0hcShoLTxWWVdXCi16TENeLURIP1dRNCl3dGRBejcrWkVQX3kkfDtLcmBNZ0w0ZDV5WVhYbz9XPHh7PWx2amNUX1N5eWUlLUImb0dYfiEKLXpXMTQtOWJXPlM9P0R3Nis/Unp0SkpWd19zPmlsJiF3O2FTdlNrMC0keTFlQnUtfTtCdGBrWE12MkE8c0MhbCliRwotelElbmJ+YiNke1hwQX50e1hGJlNgd3QmXjIzQkw2bG9Wd0BBQUZkcys+JVZgamoxJXZwb1l1YWcmdlprLV5tVyFvCi16ezZse0s9JHNRNko0am9vQmRicF52ZFUrdmc/JiElTHRvOHY2Z1M8cCozc3YlJjJlRi1oWFFUdCZXPkIzTnhUb3wKLXpKJDA/WHVEPl5JRl4+TkQtK3g+Q2l2Q0JLWD1GPVo9PTBCSiVxdSVzN3twOVItQ29BUSlZa2JwNCZwMXYrbDd0SQotemUyWkptZC1RZGxHczs9bTgxenghO0xuUU1gIUVoWXdNY3pEYHRqSUstRS12KypBdiRsJXgpYXh5dysxUSlDSWxnCi16cE0xeXFDPWZHIShCRSlPey1JNTZfPElOWSVldkczMllXdTQ4Q09RZUo2VDElZ3Bub002UmRUOyNjPmgoKnVSUiMKLXpZLSlZbis4b1EobUtIWjNgaTxwITQlU0RIeyZsRXR0KXRKZUh1QyZEPiMtMVAqNE9nSGAqN1k8Kk5TVGxXfmw/dQotel9eJFRXek0/a1A1SCsjczhNQ3h+SFNkQHElajlSRCl4MEF3aFojNHk4P1J2O3toTkBwZkBsMGI5Sjd3K1RVWkBFCi16ais8SF5faWcwWm0+Z3ByWVAhWnxLZHNTYyRna2BDbjA7O0piQjtDK3tVWGp5LUUtdisqT1JSXlNkUS1sVUwmNk0KLXpFYDJPXz16LSgtZHFgPkxIMUMtNDlQRGM2dFZMYiEqcntWNy1ZfH1TVWhpWVpJUUU4cCU9ZHFZSE1LdE8rcEwzaQotemptZEV0PU5NTm9gd1dIRUJlbzlsdCN6fjw/fiVLNTw4Oz1EX3U7JiF1OWU+bGFKKyFzIXEmbT07aTtQKFdfc3p8Ci16QmxQb210YzEwK2drI3FGRiQ7ZkF3ejI7T2o3JHgrTVd8YzJubVFLWnh5ND1IRW47TW9iXzJVJFU7S3g3dDJYWXAKLXpXOTBHTjlMTDdJNTY4ezg7a2JtcWEmLWxjODduTmQlZC18JTE/I0x5LUUtdisqQXYoIXxFN20jQU5gKThwV0teMQotem50elk/SWNsRn4xKXooUyg/X0V7ZT5VK3hvY0drVmlyREExenFKUUE9Q2hOM0tEek9IcXhSYG0wSl53PCo+bHtnCi16P0BYekN1S2VNODNqRXU+ZnUzNjZhfjFDeVlncFgzPS1WZzdrRnheTTFmUXZMN0B5aGYqe1hObCNydHNIUWBkPysKLXozSnQ2eDllN1JuY0VObzhvcHVHRjNBPDtRSGRfQ2BKVSlCc28tMlIyb0B9azU0fUs1WF55cX41bGNuWCNwTFBZSAotejVCdHRSb3N8MnxDZjxraHAxTX0/K0N2OG1TbmpPI2VJKEE7QHJQZjUpSUNASj5HWSh2KSFLPnlGKDN4U2ZFVy0xCi16Vm43VXQwV2x5MyNERXdPMTdiaTdoeWdKbTJFPjNFNUNkWEI0MlNfU0FPXiZNNyFVKHVLbiNjaEYoM3hTZkVXLTEKLXBWbjdVdDBXbHkzcnBKSzJgVHhoP3xMTjtMS21XdD8tQGY/U0hAfHhSPiN1KkZ7UnArKig4PlMrCi0KLWxpdGVyYWwgMAotSGNtVj9kMDAwMDEKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYSBiL3Rlc3RzL3RnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlODQ1YWQwYzNkYTY1MjA1YWYyNTg1NGQ2NDU2OGIxY2YwOTIxZTMKLUdJVCBiaW5hcnkgcGF0Y2gKLWxpdGVyYWwgOTk4NwotemNtZUkySiF+OVI1WGJrPEw1TmdXcmgqbDZLQHJmMkFgTEZLMzM0T3wkRVBUX2ErVHVKeCFranpJR2lKMkk8UD54Ci16aWlSUmJrJTkob3EhZHRDSXNwWUEmNlV1Z0djQz5YfElPUWRaKyQrOyM+NWVrJmVGVm5KM0RWYXslPmFYP2E1SmUKLXpGPi0lNXF3a31lUVQkNHd6dnclTHIhbzUkTCVUMSVfO1UwJkdyTWhZRHwqPTF1K1FCTUk3YkJ6NUdXQVhVST81bwotejQpPWgxNTIpWXVQflckYGB9Qj8xcXV1RFEhdEt2SS1kKkdkbW9OVmo/TjBBVShGVjUtbVdkd3BINTV4NDk+R0Q2Ci16PSVCQm1YbFU0bVY+QHFKOGZYITxjUW91Ym5aYzNUYlZ0S30/QDFZMCE5YW41bUQwZEUyOHhBJnNNPj1DTD9APXsKLXowLXxSTHFFJmopOG9sVXh0cnc7QXFCVk5hbUhFQnM2MEtzNVImbDlwNj5WQ0BUNCl1IVore2c8eUxZMk1Zbl5RMQotemQ5RUxGRTR0VSR1KW4wPzNwbEoxSj92fVBaKW1zeXJgOFY8NT8kS1N1LTBTLU0/Jm8jNFFvQmI0O2dyWGZkVGBNCi16Tj1jKi1GaT5EJW4teGI1dFlEelB6KUhEbjlSdE99Sy0yJmJmTFREYSRSZUY9JTUtQDQzKztAKFhxaF9McWc1O2UKLXpnfVRIbHR6c3s8aWUzN29vZHJYcThQSWE9OU8+RT5CQklzNGhQNVJQKldxeHk2UXo5YFkodjhwSTYrSHd0WCRyYQotenkxa31gPCs3RXA/eD1oM149UlJUM19RUjxmcV9SZzB8eXU9RnQ5en16elBObTQ2S3Z9KS1nfmw0RVVxezAte0EwCi16QHVmI3VpNTcpK1leeWokS2IjVHkrJi0hSzY0I2BOP0FDX3J4MDdeNzVCR2JJa3l1QmZGb2BYNmR9Y29iaUk+QUcKLXpfeUghe2d4Q0Q+aG8xKGJvTk0ydEc7OC1ATUstSD1zcXd6eV9EazxwPDxZO2docGhxdy1kPSs0MCgoaVh2WD5kfQotemVDKkFPPztQeWlKSTdlZ3JoNWFBKnRBU0V2MFB8c0hXZHY7Mzdua2w3O0dXUXZzbEVsc2gxdz5FKW1Wa3JLNVdyCi16dnlUfmo4Xyg9KjZCRj03MUl3PDRXP2ZPc3RVcz89QkZhUSpEYSN4aUJYfH1LOFFrSmRHfXpGUHFsS0xBY3I4MyoKLXpXZzxkJENfKVJAWnQoOUdNazRWbktiKzRlPWVtbXVKWkA+UStIelFkVntUT2o7JSg3JWp6cCtLSlNzJHxzUzlGawotemk+OHxfOyUrTUhuNilMJWh9THhKWU4lTHNqbT1sMkpFR31yZ3QhfXZUODFXVEQ/aVhOMjJvbyg+USVGVyQ3JCQhCi16dCY/JFQwSW9wREhafEF9bm1MZnpvazhXM3ZqdTtubEEzNVQtcn4tIU1oJS1AeHBeQTZFPVY0TGZNZ15odzRvMkoKLXpaSSlqc2BOJmtWKmclI3dEVFp+bTxuV0xpMWVQaXp1V3hBakU9c29ZdkM9bWImdFRPeHUwNVhecTx+KlpqPDl3TAotelA9JC1aV3p+NT5jT3k2fkV9c2t5JE47Y2A9eXxFajIrMVpRMmY5aTR3P2hAZTJ7OE5NVH4hOTRuQkBpdEd1TEh9Ci16WFZwb19mTG4rTnk9YF82dWIlcVZ4ejlJT0hPUXImbS13fEU8MkNmT2IyPUNhSVctNj1Sb1k/OERidmlnTmhIY0oKLXpHI2lfMjBMcz5UUHxzRzwxVCE+SG08NkNfK2FeejRZb2lKPjVkZTA1UUkwTTZJaGVWU0slNT59Q0VDI013QkhCSQotemlJYTFXcGEmaVpfckA/dEprSjU8YWZ3fVlTezU0USp8QURJUjwwcnE3anUwRXpxe2xCJHcxZ09iYnpuUVpkWlZDCi16Q3tmRXNrNl9DSE1kfFB1V0w3ekQ/R2JpbCQxUEIoeSZaa25fSXxaQ21PRG8hbWwhOzVfWU49ZjgmZiVYTEo2OWkKLXp3K1lyZW9YeX5JaG8+fHstV3tuWkJQITgmUSR0fVAqSX4oaFJ3WjYlJExwKz4tVjg4PFcxdlg/S1RzR0A0TXA3KgotelA0M0pPLS1HflUhZ0pCYzA8QStkRzA/MTl6VUV3Zit9P0xXUlg2fmpfVEt4ZyVyKiQteGlUdH1ZYWp2IXZjbVApCi16cW5UaChndnRXQm1NSGRsRl87NUhYYil2KVFfejdvKDtuSkJJaTVzJkQ3REdPa2grT2EtT1N1SmdPbWYyUjFJLVYKLXpSTCZMNmpfRFY8aHI8Qj85TW5fUyF7SDdVaHg0TjJUY0xafTVGRnZ7WkpBPnJHOF9BUmFVQnwtPmxNdC0tWm5FSQotelRKN3tVNDtTe2oyQXk5UFRseVNMa1pwUGtTeWpEOXhCQDExR3F6P0gmfWJtNklOWnlYYXw8dXNqdEQlc2p5K1pgCi16T157QUt1V0tISVVuMlNzPU44KjljNWY8anlGJWNwLV5aY2I1JUZwe2dHaE1teFhuTmIxPn15KiRLWWVTdD1CVF4KLXo5KW44ZjY5d2hvNkRDM0k0aTYjKnNtV3N3IzhhQUNQTEZEWHZhWXBsb1lgclR6dl52NiVgPWZaPX50TTxHeDdVMgotekdWdV51JVchOTQmenQmTCtmM0c1V15TKGA5R2hBJEZeZ3hRYURGUCUpUEZQODRxXyRAN0h6UWI2MD5+KyNkJSp0Ci16ZiUpVl9HPkRsazN9MDFYNlY5WUEwfUtII3grTXV5UFhZbTckNEJsQypZaEl9I2d8KVVoMC12Kmk3Z2djdiZAXkMKLXpqWU8lYWM4MEtwSmZtaFprd1hYJHBIXyo7dCZjUUlUXyh4RjZodCFJaWMzVWRUKCU3aWhmVHx3dFhXQSZWMVNmOwotelUzV0VVYEcoKm17cmZjNUx1LVNVZjswZ1dfZ1RRNSF3S0VFayhRaik9UzI7fThGVmFeOXVZRWc9VWA/VEpTJjtlCi16WnxJR3JHaHBuVDRIJDxOMEw+Uj4lZm43ZWcrJUs5aW4xZXpYM0slWWByNmk8bVJLIWZ5RTBMM1QmJSMyZT99V0kKLXpjU01RRTYmdjJoR2RkZkhZUiZNRDI4JTVIMXMxWlFaVSU7WEBXZiFvVHE8JjFmOy0lNGAldEwjMHlVentgZ1R5QAoteDglflZwMl9DZTUkRT1DeWchMl50ZiRYJV9hRjQkYS11ditDTjd2ckpfUmpUSktZc0p0VFVURjt7c0h+fDckcER6Ci0KLWxpdGVyYWwgMAotSGNtVj9kMDAwMDEKLQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MjE3MDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiZ2QgaXMgYSBsaWJyYXJ5IHVzZWQgdG8gY3JlYXRlIFBORywgSlBFRywgb3IgV0JNUCBpbWFnZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgZ2QgZ3JhcGhpY3MgbGlicmFyeSBhbGxvd3MgeW91ciBjb2RlIHRvIHF1aWNrbHkgZHJhdyBpbWFnZXMgXAotY29tcGxldGUgd2l0aCBsaW5lcywgYXJjcywgdGV4dCwgbXVsdGlwbGUgY29sb3JzLCBjdXQgYW5kIHBhc3RlIGZyb20gb3RoZXIgXAotaW1hZ2VzLCBhbmQgZmxvb2QgZmlsbHMsIGFuZCB0byB3cml0ZSBvdXQgdGhlIHJlc3VsdCBhcyBhIFBORyBvciBKUEVHIGZpbGUuIFwKLVRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBXZWIgYXBwbGljYXRpb25zLCB3aGVyZSBQTkcgYW5kIEpQRUcgYXJlIHR3byBcCi1vZiB0aGUgZm9ybWF0cyBhY2NlcHRlZCBmb3IgaW5saW5lIGltYWdlcyBieSBtb3N0IGJyb3dzZXJzLiBOb3RlIHRoYXQgZ2QgaXMgbm90IFwKLWEgcGFpbnQgcHJvZ3JhbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGliZ2QuYml0YnVja2V0Lm9yZy8iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTc2MzhjYWZkMzU4MWViODdhYmQzNzMzMjEzNzY2OSIKLURFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgemxpYiB0aWZmIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1HRC0yLjIgXAotICAgICAgICAgICBmaWxlOi8vZml4LWdjYy11bnVzZWQtZnVuY3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMTY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMTY3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMTY4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLy5naXRpZ25vcmUtdGhlLW5ldy10ZXN0LWNhc2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LTI5MC1UR0EtUkxFLWRlY29kaW5nLWlzLWJyb2tlbi5wYXRjaDthcHBseT1ubyBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02OTA2LTEucGF0Y2g7YXBwbHk9bm8gXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjkwNi0yLnBhdGNoO2FwcGx5PW5vIgotCi1TUkNSRVYgPSAiNDZjZWVmNTk3MGJmM2E4NDdmZjYxZDFiZGRlNzUwMWQ2NmMxMWQwYyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnIGdldHRleHQgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGgtanBlZz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGgtZnJlZXR5cGU9eWVzIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1mb250Y29uZmlnIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJwIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14cG0gXAotICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXggXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VNQUtFID0gJ0xERkxBR1M9IiR7TERGTEFHU30iJwotCi1kb19naXRfYXBwbHkgKCkgewotICAgICAgIGNkICR7U30KLSAgICAgICBpZiBbICEgLWYgdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi5wbmcgXTsgdGhlbgotICAgICAgICAgICAgICAgZ2l0IGFwcGx5ICR7U30vLi4vRml4LTI5MC1UR0EtUkxFLWRlY29kaW5nLWlzLWJyb2tlbi5wYXRjaAotICAgICAgICAgICAgICAgZ2l0IGFwcGx5ICR7U30vLi4vQ1ZFLTIwMTYtNjkwNi0xLnBhdGNoCi0gICAgICAgICAgICAgICBnaXQgYXBwbHkgJHtTfS8uLi9DVkUtMjAxNi02OTA2LTIucGF0Y2gKLSAgICAgICBmaQotfQotCi1kb19wYXRjaF9hcHBlbmQoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19naXRfYXBwbHknLCBkKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCi0gICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLQotUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgotUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgotUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTMyYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNC5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gImdkIGlzIGEgbGlicmFyeSB1c2VkIHRvIGNyZWF0ZSBQTkcsIEpQRUcsIG9yIFdCTVAgaW1hZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIGdkIGdyYXBoaWNzIGxpYnJhcnkgYWxsb3dzIHlvdXIgY29kZSB0byBxdWlja2x5IGRyYXcgaW1hZ2VzIFwKK2NvbXBsZXRlIHdpdGggbGluZXMsIGFyY3MsIHRleHQsIG11bHRpcGxlIGNvbG9ycywgY3V0IGFuZCBwYXN0ZSBmcm9tIG90aGVyIFwKK2ltYWdlcywgYW5kIGZsb29kIGZpbGxzLCBhbmQgdG8gd3JpdGUgb3V0IHRoZSByZXN1bHQgYXMgYSBQTkcgb3IgSlBFRyBmaWxlLiBcCitUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gV2ViIGFwcGxpY2F0aW9ucywgd2hlcmUgUE5HIGFuZCBKUEVHIGFyZSB0d28gXAorb2YgdGhlIGZvcm1hdHMgYWNjZXB0ZWQgZm9yIGlubGluZSBpbWFnZXMgYnkgbW9zdCBicm93c2Vycy4gTm90ZSB0aGF0IGdkIGlzIG5vdCBcCithIHBhaW50IHByb2dyYW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmdkLmJpdGJ1Y2tldC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDczODRiM2FhMmUwZDM5YWZjYTBkNmM0MDI4NmY1NDUiCisKK0RFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgemxpYiB0aWZmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1HRC0yLjIgXAorICAgICAgICAgICIKKworU1JDUkVWID0gImRlMDk4NzRiMTVhNGM4ODc3MmRiMzVjZWQ4NDIzMzBmNWRlMjNlNzYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBjbGVhbnVwIGJ1aWxkcGF0aHMgZnJvbSBnZGxpYi5wYworICAgIHNlZCAtaSAtZSAncyMke1NUQUdJTkdfRElSX0hPU1R9IyNnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nZGxpYi5wYworfQorCitQQUNLQUdFUyArPSAiJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK1BST1ZJREVTICs9ICIke1BOfS10b29scyIKK1JQUk9WSURFU18ke1BOfS10b29scyA9ICIke1BOfS10b29scyIKK1JERVBFTkRTXyR7UE59LXRvb2xzID0gInBlcmwgcGVybC1tb2R1bGUtc3RyaWN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTA1YWMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJUaGUgR05VIHBvcnRhYmlsaXR5IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJBIGNvbGxlY3Rpb24gb2Ygc29mdHdhcmUgc3Vicm91dGluZXMgd2hpY2ggYXJlIGRlc2lnbmVkIHRvIFwKK2JlIHVzYWJsZSBvbiBtYW55IG9wZXJhdGluZyBzeXN0ZW1zLiBUaGUgZ29hbCBvZiB0aGUgcHJvamVjdCBcCitpcyB0byBtYWtlIGl0IGVhc3kgZm9yIGZyZWUgc29mdHdhcmUgYXV0aG9ycyB0byBtYWtlIHRoZWlyIFwKK3NvZnR3YXJlIHJ1biBvbiBtYW55IG9wZXJhdGluZyBzeXN0ZW1zLiBTaW5jZSBzb3VyY2UgaXMgZGVzaWduZWQgXAordG8gYmUgY29waWVkIGZyb20gZ251bGliLCBpdCBpcyBub3QgYSBsaWJyYXJ5IHBlci1zZSwgYXMgbXVjaCBcCithcyBhIGNvbGxlY3Rpb24gb2YgcG9ydGFibGUgaWRpb21zIHRvIGJlIHVzZWQgaW4gb3RoZXIgcHJvamVjdHMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251bGliLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkxHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU2YTIyYTZlNWJjY2U0NWUyYzhhYzE4NGY4MTQxMmI1IgorU1JDUkVWID0gImIyMzAwMGRlMWU0N2M3ZDU4MGUwZTIyMDk2NmRkMWVlNDJhNWU1YmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvZ251bGliO3Byb3RvY29sPWdpdCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGNkICR7U30KKyAgICBnaXQgY2hlY2tvdXQgbWFzdGVyCisgICAgZ2l0IGNsb25lICR7U30gJHtEfS8ke2RhdGFkaXJ9L2dudWxpYgorfQorCitkb19wYXRjaFtub2V4ZWNdID0gIjEiCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCitkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKK2RvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKK2RvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKK2RvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKK2RvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdjN2FlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR05VIHBvcnRhYmlsaXR5IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJBIGNvbGxlY3Rpb24gb2Ygc29mdHdhcmUgc3Vicm91dGluZXMgd2hpY2ggYXJlIGRlc2lnbmVkIHRvIFwKLWJlIHVzYWJsZSBvbiBtYW55IG9wZXJhdGluZyBzeXN0ZW1zLiBUaGUgZ29hbCBvZiB0aGUgcHJvamVjdCBcCi1pcyB0byBtYWtlIGl0IGVhc3kgZm9yIGZyZWUgc29mdHdhcmUgYXV0aG9ycyB0byBtYWtlIHRoZWlyIFwKLXNvZnR3YXJlIHJ1biBvbiBtYW55IG9wZXJhdGluZyBzeXN0ZW1zLiBTaW5jZSBzb3VyY2UgaXMgZGVzaWduZWQgXAotdG8gYmUgY29waWVkIGZyb20gZ251bGliLCBpdCBpcyBub3QgYSBsaWJyYXJ5IHBlci1zZSwgYXMgbXVjaCBcCi1hcyBhIGNvbGxlY3Rpb24gb2YgcG9ydGFibGUgaWRpb21zIHRvIGJlIHVzZWQgaW4gb3RoZXIgcHJvamVjdHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251bGliLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0Y2YzODEwZjMzYTA2N2VhN2NjZDJjZDg4OWZlZDIxIgotU1JDUkVWID0gImI2YjNlZDFmYTRjNmRlMTI5MDhhOWYwMWQxNjg5ZjE1NmMzY2Q0NDEiCi1QViA9ICIwLjEuNDk2K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5zdi5nbnUub3JnL2dudWxpYjtwcm90b2NvbD1naXQgXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBjZCAke1N9Ci0gICAgZ2l0IGNoZWNrb3V0IG1hc3RlcgotICAgIGdpdCBjbG9uZSAke1N9ICR7RH0vJHtkYXRhZGlyfS9nbnVsaWIKLX0KLQotZG9fcGF0Y2hbbm9leGVjXSA9ICIxIgotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlZGF0YVtub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2lwa1tub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2RlYltub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX3JwbVtub2V4ZWNdID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1GaXgtYnVpbGQtZmFpbHVyZS1mb3ItcHBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1GaXgtYnVpbGQtZmFpbHVyZS1mb3ItcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2Y4NTVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtZm9yLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVN1YmplY3Q6IEZpeCBidWlsZCBmYWlsdXJlIGZvciBwcGMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCB0aGUgZm9sbG93aW5nIGJ1aWxkIGZhaWx1cmUuCi0KLSAgZXJyb3I6ICdzaWdpbmZvX3QnIGRvZXMgbm90IG5hbWUgYSB0eXBlCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggYi9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oCi1pbmRleCA1ZDE2ZmExLi5hOWJmNzc1IDEwMDY0NAotLS0tIGEvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotKysrIGIvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAKLSAjaW5jbHVkZSA8c3RkaW50Lmg+ICAgLy8gZm9yIHVpbnRwdHJfdAotICNpbmNsdWRlIDxzdGRsaWIuaD4gICAvLyBmb3IgTlVMTAotKyNpbmNsdWRlIDxzaWduYWwuaD4gICAvLyBmb3Igc2lnaW5mb190Ci0gI2luY2x1ZGUgPGdwZXJmdG9vbHMvc3RhY2t0cmFjZS5oPgotICNpbmNsdWRlIDxiYXNlL3Zkc29fc3VwcG9ydC5oPgotIAotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxMjdlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZGlzYmFsZS1oZWFwLWNoZWNrZXJzLWFuZC1kZWJ1Zy1hbGxvY2F0b3Itb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGI1OTYxZjE3ZTlkN2YyYmM0NGRhNjExYjNlNGIyN2M4YTY0MWZjNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDA4OjA3OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc2JhbGUgaGVhcCBjaGVja2VycyBhbmQgZGVidWcgYWxsb2NhdG9yIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjb25maWd1cmUuYWMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC01MSw2ICs1MSw4IEBAIGNhc2UgIiRob3N0IiBpbgorICAgICotY3lnd2luKikgZGVmYXVsdF9lbmFibGVfaGVhcF9jaGVja2VyPW5vOyBkZWZhdWx0X2VuYWJsZV9jcHVfcHJvZmlsZXI9bm87OworICAgICotZnJlZWJzZCopIGRlZmF1bHRfZW5hYmxlX2hlYXBfY2hlY2tlcj1ubzs7CisgICAgKi1kYXJ3aW4qKSBkZWZhdWx0X2VuYWJsZV9oZWFwX2NoZWNrZXI9bm87OworKyAgICotbXVzbCopIGRlZmF1bHRfZW5hYmxlX2hlYXBfY2hlY2tlcj1ubzsgZGVmYXVsdF9lbmFibGVfaGVhcF9wcm9maWxlcj1ubzsKKysgICAgICAgICAgICBkZWZhdWx0X2VuYWJsZV9kZWJ1Z2FsbG9jPW5vOyBkZWZhdWx0X2VuYWJsZV9saWJ1bndpbmQ9bm87CisgZXNhYworIAorICMgQ3VycmVudGx5IG9ubHkgYmFja3RyYWNlIHdvcmtzIG9uIHMzOTAuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NjIxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDE1NzkxNDk0MWJkMzhmMWEzOGJiNmJkNzI5NGNhNmMyYmMxYjhkY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxNTo1MToyOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgd2l0aCBtdXNsIGxpYmMKKworUGF0Y2ggZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3B1bGwvNzY1LworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDEgKworIHNyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmggfCA4ICsrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI0MmZlYTMuLjcwYjQ5YTMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4OCw2ICsxODgsNyBAQCBBQ19IRUFERVJfU1REQworIEFDX0NIRUNLX1RZUEVTKFtfX2ludDY0XSkgICAgICAgIyBkZWZpbmVkIGluIHNvbWUgd2luZG93cyBwbGF0Zm9ybXMKKyBBQ19DSEVDS19UWVBFUyhbc3RydWN0IG1hbGxpbmZvXSwsLCBbI2luY2x1ZGUgPG1hbGxvYy5oPl0pCisgQUNfQ0hFQ0tfVFlQRVMoW0VsZjMyX1ZlcnN5bV0sLCwgWyNpbmNsdWRlIDxlbGYuaD5dKSAgICMgZm9yIHZkc29fc3VwcG9ydC5oCisrQUNfQ0hFQ0tfRlVOQ1MoX19zYnJrKSAgICAgICAgICAjIGZvciBpbnRlcmNlcHRpbmcgZ2xpYmMgbWVtb3J5IGFsbG9jYXRvcgorIEFDX0NIRUNLX0ZVTkNTKHNicmspICAgICAgICAgICAgIyBmb3IgdGNtYWxsb2MgdG8gZ2V0IG1lbW9yeQorIEFDX0NIRUNLX0ZVTkNTKGdldGV1aWQpICAgICAgICAgIyBmb3IgdHVybmluZyBvZmYgc2VydmljZXMgd2hlbiBydW4gYXMgcm9vdAorIEFDX0NIRUNLX0ZVTkNTKGZvcmspICAgICAgICAgICAgIyBmb3IgdGhlIHB0aHJlYWRfYXRmb3JrIHNldHVwCitkaWZmIC0tZ2l0IGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCBiL3NyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmgKK2luZGV4IDc5YWM0ZTMuLmQ0NDQ2MzUgMTAwNzU1CistLS0gYS9zcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oCisrKysgYi9zcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oCitAQCAtNDYsNiArNDYsMTAgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSAiYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCIKKyAKKysjaWZuZGVmIF9fR0xJQkNfXworK3R5cGVkZWYgb2ZmNjRfdCAgIF9fb2ZmNjRfdDsKKysjZW5kaWYKKysKKyAvLyBUaGUgeDg2LTMyIGNhc2UgYW5kIHRoZSB4ODYtNjQgY2FzZSBkaWZmZXI6CisgLy8gMzJiIGhhcyBhIG1tYXAyKCkgc3lzY2FsbCwgNjRiIGRvZXMgbm90LgorIC8vIDY0YiBhbmQgMzJiIGhhdmUgZGlmZmVyZW50IGNhbGxpbmcgY29udmVudGlvbnMgZm9yIG1tYXAoKS4KK0BAIC0xNjgsNyArMTcyLDcgQEAgZXh0ZXJuICJDIiB2b2lkKiBtbWFwNjQodm9pZCAqc3RhcnQsIHNpemVfdCBsZW5ndGgsIGludCBwcm90LCBpbnQgZmxhZ3MsCisgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKy0jIGlmICFkZWZpbmVkKF9fVVNFX0ZJTEVfT0ZGU0VUNjQpIHx8ICFkZWZpbmVkKF9fUkVESVJFQ1RfTlRIKQorKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICghZGVmaW5lZChfX1VTRV9GSUxFX09GRlNFVDY0KSB8fCAhZGVmaW5lZChfX1JFRElSRUNUX05USCkpCisgCisgZXh0ZXJuICJDIiB2b2lkKiBtbWFwKHZvaWQgKnN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBpbnQgcHJvdCwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmQsIG9mZl90IG9mZnNldCkgX19USFJPVyB7CitAQCAtMjA2LDcgKzIxMCw3IEBAIGV4dGVybiAiQyIgdm9pZCogbXJlbWFwKHZvaWQqIG9sZF9hZGRyLCBzaXplX3Qgb2xkX3NpemUsIHNpemVfdCBuZXdfc2l6ZSwKKyAgIHJldHVybiByZXN1bHQ7CisgfQorIAorLSNpZm5kZWYgX19VQ0xJQkNfXworKyNpZiBIQVZFX19fU0JSSworIC8vIGxpYmMncyB2ZXJzaW9uOgorIGV4dGVybiAiQyIgdm9pZCogX19zYnJrKHB0cmRpZmZfdCBpbmNyZW1lbnQpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NzAwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAwNGVhOGUwMDE1MDE5MzFmNGRiZjIwMjg4YWNhNzg0Njk2MTdiMDhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgSnVsIDIwMTcgMTk6Mjg6MTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBmY250bC5oIGZvciBsb2ZmX3QgZGVmaW5pdGlvbgorCitGaXhlcworbGludXhfc3lzY2FsbF9zdXBwb3J0Lmg6MjY0MToyNjogZXJyb3I6ICdsb2ZmX3QnIGhhcyBub3QgYmVlbiBkZWNsYXJlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIGIvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK2luZGV4IDg1MzQ3YTIuLjcwNDMxY2EgMTAwNjQ0CistLS0gYS9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIGIvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC0xNjIsNiArMTYyLDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgI2lmZGVmIF9fbWlwc19fCisgLyogSW5jbHVkZSBkZWZpbml0aW9ucyBvZiB0aGUgQUJJIGN1cnJlbnRseSBpbiB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI2NDc0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRGlzYWJsZSBsaWJ1bndpbmQgb24gYWFyY2g2NAorCitGaXhlcyBoYW5ncyB3aGVuIHVzaW5nIGxpYnRjbWFsbG9jLnNvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCitAQCAtNjksNiArNjksMTEgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgsIFtyZQorICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0X2VuYWJsZV9saWJ1bndpbmQ9eWVzCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGNtYWxsb2NfcGFnZXNpemU9OF0pCisgCisrIyBEaXNhYmxlIGxpYnVud2luZCBsaW5raW5nIG9uIGFhcmNoNjQgYnkgZGVmYXVsdC4KKytBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCwgW3JldHVybiBfX2FhcmNoNjRfX10pXSwKKysgICAgICAgICAgICAgICAgICBbZGVmYXVsdF9lbmFibGVfbGlidW53aW5kPW5vXSwKKysgICAgICAgICAgICAgICAgICBbZGVmYXVsdF9lbmFibGVfbGlidW53aW5kPXllc10pCisrCisgQUNfQVJHX0VOQUJMRShbY3B1LXByb2ZpbGVyXSwKKyAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWNwdS1wcm9maWxlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvIG5vdCBidWlsZCB0aGUgY3B1IHByb2ZpbGVyXSldLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMWEyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9zZ2lkZWYucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorc2dpZGVmLmggZG9lcyBub3QgZXhpc3Qgb24gbXVzbCBhbmQgaXRzIG5vdCBuZWVkZWQgdG8gY29tcGlsZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogZ2l0L3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBnaXQvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC0xNjQsNyArMTY0LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGVuZGlhbi5oPgorICNpbmNsdWRlIDxmY250bC5oPgorIAorLSNpZmRlZiBfX21pcHNfXworKyNpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiBkZWZpbmVkKF9fZ2xpYmNfXykKKyAvKiBJbmNsdWRlIGRlZmluaXRpb25zIG9mIHRoZSBBQkkgY3VycmVudGx5IGluIHVzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgI2luY2x1ZGUgPHNnaWRlZnMuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzXzIuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzXzIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3ODBhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIG11bHRpLXRocmVhZGVkIG1hbGxvYygpIGFuZCBuaWZ0eSBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29scyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9ncGVyZnRvb2xzLyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzYyNzMyNzQyYzczZGM2YzdmYmU4NjMyZjA2YzA1OWEiCi1ERVBFTkRTID0gImxpYnVud2luZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3MvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLTIuNS50YXIuZ3ovYWExZWFmOTVkYmUyYzk4MjhkMGJkM2EwMGY3NzBmNTAvZ3BlcmZ0b29scy0yLjUudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1BdG9taWMtb3BzLW9uLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtZm9yLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWExZWFmOTVkYmUyYzk4MjhkMGJkM2EwMGY3NzBmNTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZhMjc0OGYxYWNkZjQ0ZDc1MDI1M2UxNjBjZjZlMmU3MjU3MTMyOWI0MmU1NjNiNDU1YmRlMDllOWU4NTE3MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBPbiBtaXBzLCB3ZSBoYXZlIHRoZSBmb2xsb3dpbmcgZXJyb3IuCi0jICAgZG9fcGFnZV9mYXVsdCgpOiBzZW5kaW5nIFNJR1NFR1YgdG8gbHMgZm9yIGludmFsaWQgcmVhZCBhY2Nlc3MgZnJvbSAwMDAwMDAwOAotIyAgIFNlZ21lbnRhdGlvbiBmYXVsdCAoY29yZSBkdW1wZWQpCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fHBvd2VycGN8cG93ZXJwYzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4KiIKLSMgT24gYWFyY2g2NCwgYWRkIHRoaXMgb3B0aW9uIHRvIGF2b2lkIHN5c3RlbSBoYW5naW5nIHdoZW4gdXNpbmcgbGlidGNtYWxsb2Muc28uCi1FWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAiLS1kaXNhYmxlLWxpYnVud2luZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzXzIuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhYzZjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzXzIuNi4xLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiRmFzdCwgbXVsdGktdGhyZWFkZWQgbWFsbG9jKCkgYW5kIG5pZnR5IHBlcmZvcm1hbmNlIGFuYWx5c2lzIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzYyNzMyNzQyYzczZGM2YzdmYmU4NjMyZjA2YzA1OWEiCitERVBFTkRTICs9ICJsaWJ1bndpbmQiCisKK1NSQ1JFViA9ICJiZjg0MGRlYzA0OTVlMTdmNWM4NDAzZTY4ZTEwYjlkNmJmMDVjNTU5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZ2lkZWYucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgRGlzYWJsZSB0aHVtYjEKKyMge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorIyB7c3RhbmRhcmQgaW5wdXR9OjQzNDogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZHIgcGMsW3NwXScKKyMgTWFrZWZpbGU6NDUzODogcmVjaXBlIGZvciB0YXJnZXQgJ3NyYy9iYXNlL2xpYnRjbWFsbG9jX2xhLWxpbnV4dGhyZWFkcy5sbycgZmFpbGVkCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtLzAwMDEtVXNlLXNpZ2VtcHR5c2V0LUFQSS1pbnN0ZWFkLW9mLV9fc2lnZW1wdHlzZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwbS9ncG0vMDAwMS1Vc2Utc2lnZW1wdHlzZXQtQVBJLWluc3RlYWQtb2YtX19zaWdlbXB0eXNldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTE5ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtLzAwMDEtVXNlLXNpZ2VtcHR5c2V0LUFQSS1pbnN0ZWFkLW9mLV9fc2lnZW1wdHlzZXQucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA1MmU2Y2YwNTJiMWY5MzhmY2NhMWJjMjRkNTc4ZmUwYmZkOTcyOTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjUgSnVuIDIwMTcgMDc6MjU6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHNpZ2VtcHR5c2V0IEFQSSBpbnN0ZWFkIG9mIF9fc2lnZW1wdHlzZXQKKworX19zaWdlbXB0eXNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gZ2xpYmMgcHVibGljCitBUEkgaGVhZGVycyBpbiB1cGNvbWluZyAoMi4yNikgcmVsZWFzZSBvbndhcmRzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMvcHJvZy9ncG0tcm9vdC55IHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHJvZy9ncG0tcm9vdC55IGIvc3JjL3Byb2cvZ3BtLXJvb3QueQoraW5kZXggNTEyNmM2NS4uNzZjODk2YyAxMDA2NDQKKy0tLSBhL3NyYy9wcm9nL2dwbS1yb290LnkKKysrKyBiL3NyYy9wcm9nL2dwbS1yb290LnkKK0BAIC0xMTk2LDExICsxMTk2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0RBRU1PTiA6IExPR19VU0VSKTsKKyAgICAvKiByZWFwIHlvdXIgem9tYmllcyAqLworICAgIGNoaWxkYWN0aW9uLnNhX2hhbmRsZXI9cmVhcF9jaGlsZHJlbjsKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pCistICAgX19zaWdlbXB0eXNldCgmY2hpbGRhY3Rpb24uc2FfbWFzayk7CistI2Vsc2UgLyogX19HTElCQ19fICovCisgICAgc2lnZW1wdHlzZXQoJmNoaWxkYWN0aW9uLnNhX21hc2spOworLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KKyAgICBjaGlsZGFjdGlvbi5zYV9mbGFncz0wOworICAgIHNpZ2FjdGlvbihTSUdDSExELCZjaGlsZGFjdGlvbixOVUxMKTsKKyAKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwbS9ncG1fZ2l0LmJiCmluZGV4IDY5ZjEyZDkuLjUxYzRkZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgpAQCAtMTIsMTAgKzEyLDEyIEBACiBERVBFTkRTID0gIm5jdXJzZXMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90ZWxtaWNoL2dwbTtwcm90b2NvbD1naXQgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1kb2NzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Byb2Nlc3NjcmVkcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ncG0uc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IgorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc2lnZW1wdHlzZXQtQVBJLWluc3RlYWQtb2YtX19zaWdlbXB0eXNldC5wYXRjaCBcCisgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcC8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2ViNGJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcC8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwxNzggQEAKK0Zyb20gOGExMGI2YmQ1NTY0MjY2MTZlOTNmMTU2MzlmMzY5ZGVmYmVjYTMzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE0IEF1ZyAyMDE3IDExOjU4OjU4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMKKworV2hlbiBidWlsZCBkaXIgaXMgbm90IHNhbWUgYXMgc291cmNlZGlyIHRoZW4gdGhlIGJ1aWxkIGZhaWxlZCBkdWUKK3RvIHVzZSBvZiAkKHNyY2RpcikgdmFyaWFibGUgd2hpY2ggYXNzdW1lcyBzb3VyY2UgPSBidWlsZCB0aGVyZWZvcmUKK3JlcGxhY2UgdGhhdCB3aXRoIHRvcF9zcmNkaXIKKworQWRkaXRpb25hbGx5IG1vdmUgdGhlIGNvbmRpdGlvbmFsIGFkZGl0aW9uIG9mIHNvdXJjZXMgdG8gTWFrZWZpbGUuYW0KK2luc3RlYWQgb2YgYWRkaW5nIGl0IGluIGNvbmZpZ3VyZS5hYywgc2luY2UgdGhlbiB3ZSBjYW4gdXNlIHRvcF9zcmNkaXIKK3ZhcmlhYmxlIHRvIGFjY2VzcyB0aG9zZSBzb3VyY2VzIHRvbyBvdGhlcndpc2UgaXRzIG5vdCBwb3NzaWJsZSB0bworc3BlY2lmeSB0aGUgcmlnaHQgZGlyIGZvciB0aGVzZSBzb3VyY2VzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvZ3NvYXAyL3BhdGNoZXMvMTcxL10KKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKystLQorIGdzb2FwL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQorIGdzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvTWFrZWZpbGUuYW0gICAgfCAgOCArKysrLS0tLQorIGdzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvTWFrZWZpbGUuYW0gfCAgOCArKysrLS0tLQorIGdzb2FwL3dzZGwvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAxNSArKysrKysrKystLS0tLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAwNjMxYzE4Li5jMzZlNjk2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNjUsNyArMjY1LDcgQEAgaWYgdGVzdCAieCR3aXRoX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgIFdTREwySF9FWFRSQV9GTEFHUz0iLURXSVRIX09QRU5TU0wgLURXSVRIX0daSVAiCisgICAgICMgYW4gdWdseSBoYWNrIHRvIGdldCBodHRwZGEgYW5kIHNtZGV2cCBwbHVnaW5zIHRvIGNvbmRpdGlvbmFsbHkKKyAgICAgIyBjb21waWxlIHdpdGggd3NkbDJoIHdoZW4gT1BFTlNTTCBpcyBhdmFpbGFibGUKKy0gICAgV1NETDJIX0VYVFJBX0xJQlM9IiR7V1NETDJIX0VYVFJBX0xJQlN9IC4uL3BsdWdpbi9odHRwZGEuYyAuLi9wbHVnaW4vc21kZXZwLmMgLi4vcGx1Z2luL3RocmVhZHMuYyAtbHNzbCAtbGNyeXB0byAtbHoiCisrICAgIFdTREwySF9FWFRSQV9MSUJTPSIke1dTREwySF9FWFRSQV9MSUJTfSAtbHNzbCAtbGNyeXB0byAtbHoiCisgICAgIFNBTVBMRV9JTkNMVURFUz0KKyAgICAgU0FNUExFX1NTTF9MSUJTPSItbHNzbCAtbGNyeXB0byAtbHoiCisgICAgIFdTREwySF9TT0FQX0NQUF9MSUI9ImxpYmdzb2Fwc3NsKysuYSIKK0BAIC0yODksMTIgKzI4OSwxMyBAQCBlbHNlCisgICBTQU1QTEVfSU5DTFVERVM9CisgICBXU0RMMkhfU09BUF9DUFBfTElCPSJsaWJnc29hcCsrLmEiCisgZmkKKytBTV9DT05ESVRJT05BTChXSVRIX09QRU5TU0wsIHRlc3QgIngkd2l0aF9vcGVuc3NsIiA9ICJ4eWVzIiAtYSAieCR3aXRoX2dudXRscyIgIT0gInh5ZXMiKQorK0FDX1NVQlNUKFdJVEhfT1BFTlNTTCkKKyBBQ19TVUJTVChXU0RMMkhfRVhUUkFfRkxBR1MpCisgQUNfU1VCU1QoV1NETDJIX0VYVFJBX0xJQlMpCisgQUNfU1VCU1QoU0FNUExFX0lOQ0xVREVTKQorIEFDX1NVQlNUKFNBTVBMRV9TU0xfTElCUykKKyBBQ19TVUJTVChXU0RMMkhfU09BUF9DUFBfTElCKQorLQorICMgZW5hYmxlIHRoZSBjb21waWxlIG9mIHRoZSBzYW1wbGVzCisgQUNfQVJHX0VOQUJMRShzYW1wbGVzLAorIFsgIC0tZW5hYmxlLXNhbXBsZXMJICBlbmFibGUgY29tcGlsZSBmb3IgdGhlIGdzb2FwIHNhbXBsZXNdLAorZGlmZiAtLWdpdCBhL2dzb2FwL01ha2VmaWxlLmFtIGIvZ3NvYXAvTWFrZWZpbGUuYW0KK2luZGV4IDcyNzNiODIuLjljMGM4OWYgMTAwNjQ0CistLS0gYS9nc29hcC9NYWtlZmlsZS5hbQorKysrIGIvZ3NvYXAvTWFrZWZpbGUuYW0KK0BAIC0xMywyNiArMTMsMjYgQEAgQU1fQ1hYRkxBR1MgPSAkKFNPQVBDUFAyX0RFQlVHKSAtRCQocGxhdGZvcm0pCisgQU1fQ0ZMQUdTID0gJChTT0FQQ1BQMl9ERUJVRykgLUQkKHBsYXRmb3JtKQorIAorICMgSW5zdGFsbCBhbGwgc29hcGNwcDIgYW5kIHdzZGwyaCBmaWxlcyBpbnRvICR7cHJlZml4fS9zaGFyZS9nc29hcAorLW5vYmFzZV9wa2dkYXRhX0RBVEEgPSAkKHNyY2RpcikvaW1wb3J0LyogJChzcmNkaXIpL3BsdWdpbi8qICQoc3JjZGlyKS9XUy8qICQoc3JjZGlyKS9jdXN0b20vKiAkKHNyY2RpcikvZXh0cmFzLyoKKytub2Jhc2VfcGtnZGF0YV9EQVRBID0gJCh0b3Bfc3JjZGlyKS9nc29hcC9pbXBvcnQvKiAkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbi8qICQodG9wX3NyY2RpcikvZ3NvYXAvV1MvKiAkKHRvcF9zcmNkaXIpL2dzb2FwL2N1c3RvbS8qICQodG9wX3NyY2RpcikvZ3NvYXAvZXh0cmFzLyoKKyAKKyAjIyB3ZSBjYW5ub3QgYnVpbGQgc3Rkc29hcDIubyBmcm9tIDIgZGlmZmVyZW50IHNvdXJjZXMgKHN0ZHNvYXAyLmNwcCBhbmQgc3Rkc29hcDIuYyksIHNvIHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRlIHRhcmdldDoKKyBzdGRzb2FwMl9jay5jOiBzdGRzb2FwMi5jcHAKKy0JJChMTl9TKSAtZiAkKHNyY2Rpcikvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX2NrLmMKKysJJChMTl9TKSAtZiAkKHRvcF9zcmNkaXIpL2dzb2FwL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9jay5jCisgCisgc3Rkc29hcDJfY3BwLmNwcDogc3Rkc29hcDIuY3BwCistCSQoTE5fUykgLWYgJChzcmNkaXIpL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9jcHAuY3BwCisrCSQoTE5fUykgLWYgJCh0b3Bfc3JjZGlyKS9nc29hcC9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfY3BwLmNwcAorIAorIHN0ZHNvYXAyX2NrX2NwcC5jcHA6IHN0ZHNvYXAyLmNwcAorLQkkKExOX1MpIC1mICQoc3JjZGlyKS9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfY2tfY3BwLmNwcAorKwkkKExOX1MpIC1mICQodG9wX3NyY2RpcikvZ3NvYXAvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX2NrX2NwcC5jcHAKKyAKKyBzdGRzb2FwMl9zc2wuYzogc3Rkc29hcDIuY3BwCistCSQoTE5fUykgLWYgJChzcmNkaXIpL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9zc2wuYworKwkkKExOX1MpIC1mICQodG9wX3NyY2RpcikvZ3NvYXAvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX3NzbC5jCisgCisgc3Rkc29hcDJfc3NsX2NwcC5jcHA6IHN0ZHNvYXAyLmNwcAorLQkkKExOX1MpIC1mICQoc3JjZGlyKS9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfc3NsX2NwcC5jcHAKKysJJChMTl9TKSAtZiAkKHRvcF9zcmNkaXIpL2dzb2FwL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9zc2xfY3BwLmNwcAorICMjIGRvIHRoZSBzYW1lIGZvIGRvbS5jcHAgc2luY2Ugd2Ugd2FudCB0byBsaW5rIGl0IGludG8gdGhlIGNwcCBsaWJzIGFuZCBkb20uYyBpbnRvIHRoZSBjIGxpYnMKKyBkb21fY3BwLmNwcDogZG9tLmNwcAorLQkkKExOX1MpIC1mICQoc3JjZGlyKS9kb20uY3BwIGRvbV9jcHAuY3BwCisrCSQoTE5fUykgLWYgJCh0b3Bfc3JjZGlyKS9nc29hcC9kb20uY3BwIGRvbV9jcHAuY3BwCisgCisgbGliX0xJQlJBUklFUyA9IGxpYmdzb2FwLmEgbGliZ3NvYXArKy5hIGxpYmdzb2FwY2suYSBsaWJnc29hcGNrKysuYSBsaWJnc29hcHNzbC5hIGxpYmdzb2Fwc3NsKysuYQorIAorZGlmZiAtLWdpdCBhL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvTWFrZWZpbGUuYW0gYi9nc29hcC9zYW1wbGVzL2F1dG90ZXN0L01ha2VmaWxlLmFtCitpbmRleCAzNmFkZjUxLi42MWU1MTRjIDEwMDY0NAorLS0tIGEvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdC9NYWtlZmlsZS5hbQorKysrIGIvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdC9NYWtlZmlsZS5hbQorQEAgLTYsMTMgKzYsMTMgQEAKKyBBVVRPTUFLRV9PUFRJT05TID0gc3ViZGlyLW9iamVjdHMgZm9yZWlnbiAxLjQKKyAKKyBDUFBGTEFHUz0tSSQodG9wX3NyY2RpcikvZ3NvYXAgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbgorLUFNX0xERkxBR1M9JChDUFBGTEFHUykgLUkkKHNyY2RpcikgLUwkKHNyY2RpcikKKytBTV9MREZMQUdTPSQoQ1BQRkxBR1MpIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9zYW1wbGVzL2F1dG90ZXN0IC1MJCh0b3Bfc3JjZGlyKS9nc29hcC9zYW1wbGVzL2F1dG90ZXN0CisgU09BUD0kKHRvcF9zcmNkaXIpL2dzb2FwL3NyYy9zb2FwY3BwMiQoRVhFRVhUKQorIFdTREw9JCh0b3Bfc3JjZGlyKS9nc29hcC93c2RsL3dzZGwyaCQoRVhFRVhUKQorLVdTRExfRkxBR1M9LWQgLVAgLXQgJChzcmNkaXIpL3R5cGVtYXAuZGF0CisrV1NETF9GTEFHUz0tZCAtUCAtdCAkKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvdHlwZW1hcC5kYXQKKyBTT0FQX0ZMQUdTPS1TTCAtVCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvaW1wb3J0IC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9jdXN0b20KKy1XU0RMSU5QVVQ9JChzcmNkaXIpL2V4YW1wbGVzLndzZGwKKy1TT0FQSEVBREVSPSQoc3JjZGlyKS9leGFtcGxlcy5oCisrV1NETElOUFVUPSQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdC9leGFtcGxlcy53c2RsCisrU09BUEhFQURFUj0kKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvZXhhbXBsZXMuaAorIFNPQVBfQ1BQX1NSQz1zb2FwQy5jcHAgc29hcFNlcnZlci5jcHAKKyBTT0FQX0NQUF9MSUI9JCh0b3BfYnVpbGRkaXIpL2dzb2FwL2xpYmdzb2FwKysuYQorIAorZGlmZiAtLWdpdCBhL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvTWFrZWZpbGUuYW0gYi9nc29hcC9zYW1wbGVzL2RhdGFiaW5kaW5nL01ha2VmaWxlLmFtCitpbmRleCA4OTJkNGZkLi44NmFkNDgyIDEwMDY0NAorLS0tIGEvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9NYWtlZmlsZS5hbQorKysrIGIvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9NYWtlZmlsZS5hbQorQEAgLTYsMTMgKzYsMTMgQEAKKyBBVVRPTUFLRV9PUFRJT05TID0gc3ViZGlyLW9iamVjdHMgZm9yZWlnbiAxLjQKKyAKKyBDUFBGTEFHUz0kKFNBTVBMRV9JTkNMVURFUykgLUkkKHRvcF9zcmNkaXIpL2dzb2FwIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9wbHVnaW4KKy1BTV9MREZMQUdTPSQoQU1fQ1BQRkxBR1MpIC1JJChzcmNkaXIpIC1MJChzcmNkaXIpCisrQU1fTERGTEFHUz0kKEFNX0NQUEZMQUdTKSAtSSQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZyAtTCQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZworIFNPQVA9JCh0b3Bfc3JjZGlyKS9nc29hcC9zcmMvc29hcGNwcDIkKEVYRUVYVCkKKyBXU0RMPSQodG9wX3NyY2RpcikvZ3NvYXAvd3NkbC93c2RsMmgkKEVYRUVYVCkKKy1XU0RMX0ZMQUdTPS1nIC10ICQoc3JjZGlyKS9hZGRyZXNzdHlwZW1hcC5kYXQKKytXU0RMX0ZMQUdTPS1nIC10ICQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9hZGRyZXNzdHlwZW1hcC5kYXQKKyBTT0FQX0ZMQUdTPS0wIC1DUyAtcCBhZGRyZXNzIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9pbXBvcnQKKy1XU0RMSU5QVVQ9JChzcmNkaXIpL2FkZHJlc3MueHNkCistU09BUEhFQURFUj0kKHNyY2RpcikvYWRkcmVzcy5oCisrV1NETElOUFVUPSQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9hZGRyZXNzLnhzZAorK1NPQVBIRUFERVI9JCh0b3Bfc3JjZGlyKS9nc29hcC9zYW1wbGVzL2RhdGFiaW5kaW5nL2FkZHJlc3MuaAorIFNPQVBfQ1BQX1NSQz1hZGRyZXNzQy5jcHAKKyBTT0FQX0NQUF9MSUI9JCh0b3BfYnVpbGRkaXIpL2dzb2FwL2xpYmdzb2FwKysuYQorIAorZGlmZiAtLWdpdCBhL2dzb2FwL3dzZGwvTWFrZWZpbGUuYW0gYi9nc29hcC93c2RsL01ha2VmaWxlLmFtCitpbmRleCBiOGRhNWRiLi45ZjJhZWZhIDEwMDY0NAorLS0tIGEvZ3NvYXAvd3NkbC9NYWtlZmlsZS5hbQorKysrIGIvZ3NvYXAvd3NkbC9NYWtlZmlsZS5hbQorQEAgLTYsMTQgKzYsMTQgQEAKKyBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiAxLjQKKyAKKyAjIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKS9nc29hcAorLSMgQU1fTERGTEFHUz0kKElOQ0xVREVTKSAtSSQoc3JjZGlyKSAtTCQoc3JjZGlyKQorLUFNX0xERkxBR1M9LUwkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpL2dzb2FwIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9wbHVnaW4KKysjIEFNX0xERkxBR1M9JChJTkNMVURFUykgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL3dzZGwgLUwkKHRvcF9zcmNkaXIpL2dzb2FwL3dzZGwKKytBTV9MREZMQUdTPS1MJCh0b3Bfc3JjZGlyKS9nc29hcC93c2RsIC1JJCh0b3Bfc3JjZGlyKS9nc29hcCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luCisgQU1fQ1BQRkxBR1M9LUkkKHRvcF9zcmNkaXIpL2dzb2FwIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9wbHVnaW4KKyBTT0FQPSQodG9wX2J1aWxkZGlyKS9nc29hcC9zcmMvc29hcGNwcDIkKEVYRUVYVCkKKyBTT0FQX0NQUF9MSUI9JCh0b3BfYnVpbGRkaXIpL2dzb2FwLyQoV1NETDJIX1NPQVBfQ1BQX0xJQikKKyBTT0FQX0NQUF9TUkM9d3NkbEMuY3BwCistU09BUEhFQURFUj0kKHNyY2Rpcikvd3NkbC5oCistU09BUF9GTEFHUz0tU0MgLXB3c2RsIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9pbXBvcnQKKytTT0FQSEVBREVSPSQodG9wX3NyY2RpcikvZ3NvYXAvd3NkbC93c2RsLmgKKytTT0FQX0ZMQUdTPS1TQyAtcHdzZGwgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL3dzZGwgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL2ltcG9ydAorIEJVSUxUX1NPVVJDRVM9JChTT0FQX0NQUF9TUkMpCisgIyBXU0RMMkhfRVhUUkFfRkxBR1M9LURXSVRIX09QRU5TU0wgLURXSVRIX0daSVAgIyBkZWZpbmVkIGluIGNvbmZpZ3VyZS5pbgorICMgV1NETDJIX0VYVFJBX0xJQlM9LWxzc2wgLWxjcnlwdG8gLWx6ICMgZGVmaW5lZCBpbiBjb25maWd1cmUuaW4KK0BAIC0yNCwxMSArMjQsMTQgQEAgJChTT0FQX0NQUF9TUkMpIDogJChTT0FQSEVBREVSKQorICNMSUJTPQorIAorIGJpbl9QUk9HUkFNUz13c2RsMmgKKy0KKytpZiBXSVRIX09QRU5TU0wKKyt3c2RsMmhfTERBREQ9JChTT0FQX0NQUF9MSUIpICQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luL2h0dHBkYS5jICQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luL3NtZGV2cC5jICQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luL3RocmVhZHMuYyAkKFdTREwySF9FWFRSQV9MSUJTKQorK2Vsc2UKKyt3c2RsMmhfTERBREQ9JChTT0FQX0NQUF9MSUIpICQoV1NETDJIX0VYVFJBX0xJQlMpCisrZW5kaWYKKyB3c2RsMmhfQ0ZMQUdTPSQoQ19ERUJVR19GTEFHUykgJChTT0FQQ1BQMl9OT19DX0xPQ0FMRSkgJChXU0RMMkhfRVhUUkFfRkxBR1MpCisgd3NkbDJoX0NYWEZMQUdTPSQoQ19ERUJVR19GTEFHUykgJChTT0FQQ1BQMl9OT19DX0xPQ0FMRSkgJChXU0RMMkhfRVhUUkFfRkxBR1MpICQoV1NETDJIX0lNUE9SVFBBVEgpCisgd3NkbDJoX0NQUEZMQUdTPSQoQU1fQ1BQRkxBR1MpICQoU09BUENQUDJfTk9OQU1FU1BBQ0VTKSAtRCQocGxhdGZvcm0pCisgd3NkbDJoX1NPVVJDRVM9d3NkbDJoLmNwcCB3c2RsLmNwcCB3YWRsLmNwcCBzY2hlbWEuY3BwIHR5cGVzLmNwcCBzZXJ2aWNlLmNwcCBzb2FwLmNwcCBtaW1lLmNwcCB3c3AuY3BwIGJwZWwuY3BwICQoU09BUF9DUFBfU1JDKQorLXdzZGwyaF9MREFERD0kKFNPQVBfQ1BQX0xJQikgJChXU0RMMkhfRVhUUkFfTElCUykKKyAKKyBDTEVBTkZJTEVTPSAqfiAqQy5jcHAgKkguaCAqU3R1Yi5oICoubnNtYXAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXAvMDAwMS1zdGRnc29hcDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXAvMDAwMS1zdGRnc29hcDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzFjYmU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcC8wMDAxLXN0ZGdzb2FwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gZGIyNjBmYmM3YWY0YzczYzk5N2M0ODVhMGM2OWM2MTU5NGEwZTU5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE5OjQ4OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0ZGdzb2FwMjogRml4IGJ1aWxkIHdpdGggbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ3NvYXAvc3Rkc29hcDIuYyAgIHwgMiArLQorIGdzb2FwL3N0ZHNvYXAyLmNwcCB8IDQgKystLQorIGdzb2FwL3N0ZHNvYXAyLmggICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzb2FwL3N0ZHNvYXAyLmMgYi9nc29hcC9zdGRzb2FwMi5jCitpbmRleCA1OGU5ZGY0Li42MjM4OWUxIDEwMDY0NAorLS0tIGEvZ3NvYXAvc3Rkc29hcDIuYworKysrIGIvZ3NvYXAvc3Rkc29hcDIuYworQEAgLTQ0NjIsNyArNDQ2Miw3IEBAIHRjcF9nZXRob3N0KHN0cnVjdCBzb2FwICpzb2FwLCBjb25zdCBjaGFyICphZGRyLCBzdHJ1Y3QgaW5fYWRkciAqaW5hZGRyKQorICAgICAgIHJldHVybiBzb2FwLT5lcnJvciA9IFNPQVBfRU9NOworICAgICByZXR1cm4gU09BUF9PSzsKKyAgIH0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IChkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SKSAmJiAoZGVmaW5lZChGUkVFQlNEKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkpIHx8IGRlZmluZWQoX19BTkRST0lEX18pCisrI2lmIGRlZmluZWQoTElOVVgpIHx8IChkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SKSAmJiAoZGVmaW5lZChGUkVFQlNEKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkpIHx8IGRlZmluZWQoX19BTkRST0lEX18pCisgICBpZiAoZ2V0aG9zdGJ5bmFtZV9yKGFkZHIsICZob3N0ZW50LCBzb2FwLT5idWYsIHNpemVvZihzb2FwLT5idWYpLCAmaG9zdCwgJnNvYXAtPmVycm51bSkgPCAwKQorICAgICBob3N0ID0gTlVMTDsKKyAjZWxpZiBkZWZpbmVkKF9BSVg0MykgfHwgKChkZWZpbmVkKFRSVTY0KSB8fCBkZWZpbmVkKEhQX1VYKSkgJiYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUikpCitkaWZmIC0tZ2l0IGEvZ3NvYXAvc3Rkc29hcDIuY3BwIGIvZ3NvYXAvc3Rkc29hcDIuY3BwCitpbmRleCA1OGU5ZGY0Li5iNjM3MTYxIDEwMDY0NAorLS0tIGEvZ3NvYXAvc3Rkc29hcDIuY3BwCisrKysgYi9nc29hcC9zdGRzb2FwMi5jcHAKK0BAIC00NDYyLDcgKzQ0NjIsNyBAQCB0Y3BfZ2V0aG9zdChzdHJ1Y3Qgc29hcCAqc29hcCwgY29uc3QgY2hhciAqYWRkciwgc3RydWN0IGluX2FkZHIgKmluYWRkcikKKyAgICAgICByZXR1cm4gc29hcC0+ZXJyb3IgPSBTT0FQX0VPTTsKKyAgICAgcmV0dXJuIFNPQVBfT0s7CisgICB9CistI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCAoZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUikgJiYgKGRlZmluZWQoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQorKyNpZiBkZWZpbmVkKExJTlVYKSB8fCAoZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUikgJiYgKGRlZmluZWQoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgaWYgKGdldGhvc3RieW5hbWVfcihhZGRyLCAmaG9zdGVudCwgc29hcC0+YnVmLCBzaXplb2Yoc29hcC0+YnVmKSwgJmhvc3QsICZzb2FwLT5lcnJudW0pIDwgMCkKKyAgICAgaG9zdCA9IE5VTEw7CisgI2VsaWYgZGVmaW5lZChfQUlYNDMpIHx8ICgoZGVmaW5lZChUUlU2NCkgfHwgZGVmaW5lZChIUF9VWCkpICYmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1IpKQorQEAgLTE5NjU4LDcgKzE5NjU4LDcgQEAgc29hcF9zdHJlcnJvcihzdHJ1Y3Qgc29hcCAqc29hcCkKKyAgIHsKKyAjaWZuZGVmIFdJTjMyCisgIyBpZmRlZiBIQVZFX1NUUkVSUk9SX1IKKy0jICBpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKKysjICBpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIHJldHVybiBzdHJlcnJvcl9yKGVyciwgc29hcC0+bXNnYnVmLCBzaXplb2Yoc29hcC0+bXNnYnVmKSk7IC8qIEdOVS1zcGVjaWZpYyAqLworICMgIGVsc2UKKyAgICAgc3RyZXJyb3JfcihlcnIsIHNvYXAtPm1zZ2J1Ziwgc2l6ZW9mKHNvYXAtPm1zZ2J1ZikpOyAvKiBYU0ktY29tcGxpYW50ICovCitkaWZmIC0tZ2l0IGEvZ3NvYXAvc3Rkc29hcDIuaCBiL2dzb2FwL3N0ZHNvYXAyLmgKK2luZGV4IDA3YTM5NTIuLmM2YWNlNGMgMTAwNjQ0CistLS0gYS9nc29hcC9zdGRzb2FwMi5oCisrKysgYi9nc29hcC9zdGRzb2FwMi5oCitAQCAtOTQ3LDcgKzk0Nyw3IEBAIGV4dGVybiAiQyIgeworICMgZW5kaWYKKyAjZWxpZiBkZWZpbmVkKFNPQ0tMRU5fVCkKKyAjIGRlZmluZSBTT0FQX1NPQ0tMRU5fVCBTT0NLTEVOX1QKKy0jZWxpZiBkZWZpbmVkKF9fc29ja2xlbl90X2RlZmluZWQpIHx8IGRlZmluZWQoX1NPQ0tMRU5fVCkgfHwgZGVmaW5lZChDWUdXSU4pIHx8IGRlZmluZWQoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChPUEVOQlNEKSB8fCBkZWZpbmVkKF9fUU5YX18pIHx8IGRlZmluZWQoUU5YKSB8fCBkZWZpbmVkKE9TMzkwKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKSB8fCBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpCisrI2VsaWYgZGVmaW5lZChfX3NvY2tsZW5fdF9kZWZpbmVkKSB8fCBkZWZpbmVkKF9TT0NLTEVOX1QpIHx8IGRlZmluZWQoQ1lHV0lOKSB8fCBkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoT1BFTkJTRCkgfHwgZGVmaW5lZChfX1FOWF9fKSB8fCBkZWZpbmVkKFFOWCkgfHwgZGVmaW5lZChPUzM5MCkgfHwgZGVmaW5lZChfX0FORFJPSURfXykgfHwgZGVmaW5lZChfWE9QRU5fU09VUkNFKSB8fCBkZWZpbmVkIChMSU5VWCkKKyAjIGRlZmluZSBTT0FQX1NPQ0tMRU5fVCBzb2NrbGVuX3QKKyAjZWxpZiBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNVTl9PUykgfHwgZGVmaW5lZChPUEVOU0VSVkVSKSB8fCBkZWZpbmVkKFRSVTY0KSB8fCBkZWZpbmVkKFZYV09SS1MpCisgIyBkZWZpbmUgU09BUF9TT0NLTEVOX1QgaW50CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGEwOGFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIGdTT0FQIHRvb2xraXQgcHJvdmlkZXMgYSB1bmlxdWUgU09BUC10by1DL0MrKyBsYW5ndWFnZSBiaW5kaW5nIFwKLWZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgU09BUCBXZWIgU2VydmljZXMgYW5kIGNsaWVudHMuIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjMzOGIwOGIxYjYxZTAyOGUwZjM5OWE0ZGUyNWU1OGYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfTIvJHtCUE59XyR7UFZ9LnppcCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NzAwZDI2ZmM2ZmUzMDczZDAzODM0OWUxOWMzNjQwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWVlZjExODU0NGZhODQ2ZjRkMmRlYTJlZWRmOTFjODRjNDZhMWFiZWFmYzVlZWUzZGNmZjc4M2Y0MDE1YTAwIgotCi1pbmhlcml0IGF1dG90b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUFIgPSAicjEiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMi44IgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJTT0FQPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zb2FwY3BwMiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgZmxleCBiaXNvbiIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3NvYXAtbmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLSAgICBmb3IgbGliIGluIGxpYmdzb2Fwc3NsIGxpYmdzb2Fwc3NsKysgbGliZ3NvYXAgbGliZ3NvYXBjaysrIGxpYmdzb2FwKysgbGliZ3NvYXBjawotICAgIGRvCi0gICAgICAgIG9lX2xpYmluc3RhbGwgLUMgZ3NvYXAgJGxpYiAke0R9JHtsaWJkaXJ9Ci0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBCSU5ESVI9JHtEfSR7YmluZGlyfSBpbnN0YWxsCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93c2RsMmggJHtiaW5kaXJ9L3NvYXBjcHAyIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9IgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0iCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgPSAiJHtQTn0tc3RhdGljZGV2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguNTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC41MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODc1ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguNTEuYmIKQEAgLTAsMCArMSw0NCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIGdTT0FQIHRvb2xraXQgcHJvdmlkZXMgYSB1bmlxdWUgU09BUC10by1DL0MrKyBsYW5ndWFnZSBiaW5kaW5nIFwKK2ZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgU09BUCBXZWIgU2VydmljZXMgYW5kIGNsaWVudHMuIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTRmNDBhOTQxMzc5MTQzMTg2Zjk2MDIyNDJjM2ZiNzI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTHYyX2xpY2Vuc2UudHh0O21kNT1hMzM2NzJkYmU0OTFiNjUxNzc1MGEwMzg5MDYzNTA4YiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59Mi8ke0JQTn1fJHtQVn0uemlwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGdzb2FwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjIxMjk1MWQ2ZTE0MzViYjUxZmE0MzIwZjQ1ODgwOWVhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlN2JiMjRhOWU0OTJmNWNiODZkYWNhMzQwNTRjOTc4NzE1MmYxZDdiNzBhZGQzNmI3ODlkMDM4MTZkNWZmYTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59LTIuOCIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiU09BUD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vc29hcGNwcDIiCisKK0RFUEVORFMgPSAib3BlbnNzbCB6bGliIGZsZXggYmlzb24iCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKKyAgICBkbworICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgorUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wLzAwMDEtYmFja3RyYWNlLVJlcGxhY2Utc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wLzAwMDEtYmFja3RyYWNlLVJlcGxhY2Utc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmZmYTJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvMDAwMS1iYWNrdHJhY2UtUmVwbGFjZS1zdHJ1Y3QtdWNvbnRleHQtd2l0aC11Y29udGV4dF90LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZDE5NWY4Y2ZlNDE5OTE1NzMxMjhjY2RjZDNhMGVkMDI2N2FhNWUzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI4IEp1biAyMDE3IDE5OjQ0OjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJhY2t0cmFjZTogUmVwbGFjZSBzdHJ1Y3QgdWNvbnRleHQgd2l0aCB1Y29udGV4dF90CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2JhY2t0cmFjZS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYWNrdHJhY2UuYyBiL3NyYy9iYWNrdHJhY2UuYworaW5kZXggNjliZWU5OS4uZGMzNWY4ZiAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrdHJhY2UuYworKysrIGIvc3JjL2JhY2t0cmFjZS5jCitAQCAtNDIsNyArNDIsNyBAQAorICNkZWZpbmUgTUFYX0JUU0laRSA2NAorIAorIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdCAqaXN0LCB2b2lkICpleHRyYSkgeworLSAgc3RhdGljIHN0cnVjdCB1Y29udGV4dCAqcHVjOworKyAgc3RhdGljIHVjb250ZXh0X3QgKnB1YzsKKyAgIHN0YXRpYyB2b2lkICpidGluZm9bTUFYX0JUU0laRV07CisgICBzdGF0aWMgY2hhciAqKm1lc3NhZ2VzID0gTlVMTDsKKyAgIHN0YXRpYyBzaXplX3QgYnRzaXplID0gMDsKK0BAIC01OCw3ICs1OCw3IEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdCAqaXN0LCB2b2lkICpleHRyYSkgeworIAorICNkZWZpbmUgU0lDX0NBU0UoYykgY2FzZSBjOiBzdHJlcnIgPSAjYworIAorLSAgcHVjID0gKHN0cnVjdCB1Y29udGV4dCAqKWV4dHJhOworKyAgcHVjID0gKHVjb250ZXh0X3QgKilleHRyYTsKKyAgIHN3aXRjaChuKSB7CisgICBjYXNlIFNJR1NFR1Y6CisgICAgIHN3aXRjaChpc3QtPnNpX2NvZGUpIHsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LmJiCmluZGV4IDYwMWI3YjEuLjRhODcxYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS5iYgpAQCAtOCw2ICs4LDcgQEAKICAgICAgICAgICAgZmlsZTovL2hkZHRlbXAtbm8tbmxzLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaGRkdGVtcF8wLjMtYmV0YTE1LTUyLmRpZmYgXAogICAgICAgICAgICBmaWxlOi8vaGRkdGVtcC0wLjMtYmV0YTE1LWF1dG9kZXRlY3QtNzE3NDc5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmFja3RyYWNlLVJlcGxhY2Utc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9oZGR0ZW1wLmRiIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGMyMmM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiRmFzdCBhbmQgcG9ydGFibGUgWE1MIHBhcnNlciBhbmQgSmFiYmVyIHByb3RvY29sIGxpYnJhcnkiCi1BVVRIT1IgPSAiR3VyZXIgT3plbiA8bWVkdWtldHRvIGF0IGdtYWlsLmNvbT4iCi1IT01FUEFHRSA9ICJodHRwOi8vaWtzZW1lbC5nb29nbGVjb2RlLmNvbSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLURFUEVORFMgPSAiZ251dGxzIgotCi1QUiA9ICJyMSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjU4MjUvCi1QTkJMQUNLTElTVFtpa3NlbWVsXSA/PSAiTm90IGNvbXBhdGlibGUgd2l0aCBnbnV0bHMgdmVyc2lvbiAzLjQgY3VycmVudGx5IGluIG9lLWNvcmUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2lrc2VtZWwuZ29vZ2xlY29kZS5jb20vZmlsZXMvJHtCUH0udGFyLmd6O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly9yMjUuZGlmZiIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUzMmU3NzE4MTY5NGY4N2FkNWViNTk0MzVkMTFjMWNhIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNDU4YzFiOGZiMzM0OTA3NmE2Y2VjZjI2YzI5ZGIxZDU2MTMxNWQ4NGUxNmJmY2ZiYTQxOWYzMjdmNTAyZTI0NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYwY2IwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZU1hZ2ljayBpcyBhbiBpbWFnZSBjb252ZXJ0aW9uIHRvb2xzIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJJbWFnZU1hZ2ljayIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIyZDQ3YTQ3YmYyNTJjYTNlZDdmNzEyNzNiNTM2MTJlIgotIyBGSVhNRTogVGhlcmUgYXJlIG1hbnkgbW9yZSBjaGVja2VkIGxpYnJhcmllcy4gQWxsIHNob3VsZCBiZSBhZGRlZCBvciBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGdldCBjb25zaXN0ZW50IHJlc3VsdHMuCi1ERVBFTkRTID0gImxjbXMgYnppcDIganBlZyBsaWJwbmcgbGlicnN2ZyB0aWZmIHpsaWIgZmZ0dyBmcmVldHlwZSIKLQotIyBJbXBvcnRhbnQgbm90ZTogdGFyYmFsbHMgZm9yIGFsbCBwYXRjaHNldHMgd2l0aGluIGEgdmVyc2lvbiBhcmUgZGVsZXRlZCB3aGVuCi0jIGEgbmV3IHBhY2hzZXQgaXMgY3JlYXRlZC4gVG8gYXZvaWQgbXVsdGlwbGUgcGF0Y2hlcyBmb3IgZWFjaCBwYXRjaHNldCwgdHJ5IHRvCi0jIHVwZGF0ZSB0byB0aGUgbGFzdCBwYWNoc2V0IG9mIGEgdmVyc2lvbgotUEFUQ0hTRVQgPSAiMTAiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnL2Rvd25sb2FkL3JlbGVhc2VzL0ltYWdlTWFnaWNrLSR7UFZ9LSR7UEFUQ0hTRVR9LnRhci54eiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTFjYjIzZDljMTBhOGVmZjIyOGVmMzBlZTI4MTcxMWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGFkMzA2YmZkNzczMGUxNjY1YzZmZGI2ZWI0NzhmYjJjNDFlMmRiNzFhYjU2NDUxYmJhZWJlOWRmNTQ2YjFkMiIKLQotUyA9ICIke1dPUktESVJ9L0ltYWdlTWFnaWNrLSR7UFZ9LSR7UEFUQ0hTRVR9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi0jIHhtbCBkaXNhYmxlZCBiZWNhdXNlIGl0J3MgdXNpbmcgeG1sMi1jb25maWcgLS1wcmVmaXggdG8gZGV0ZXJtaW5lIHByZWZpeCB3aGljaCByZXR1cm5zIGp1c3QgL3VzciB3aXRoIG91ciBsaWJ4bWwyCi0jIGlmIHNvbWVvbmUgbmVlZHMgeG1sIHN1cHBvcnQgdGhlbiBmaXggaXQgZmlyc3QKLUVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PSAtLXByb2dyYW0tc3VmZml4PS5pbTcgLS13aXRob3V0LXBlcmwgLS1kaXNhYmxlLW9wZW5tcCAtLXdpdGhvdXQteG1sIC0tZGlzYWJsZS1vcGVuY2wiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXllcyIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2dyYXBodml6XSA9ICItLXdpdGgtZ3ZjLC0td2l0aG91dC1ndmMsZ3JhcGh2aXoiCi1QQUNLQUdFQ09ORklHW2pwMl0gPSAiLS13aXRoLWpwMiwsamFzcGVyIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi0td2l0aC1vcGVuanAyLC0td2l0aG91dC1vcGVuanAyLG9wZW5qcGVnIgotUEFDS0FHRUNPTkZJR1twYW5nb10gPSAiLS13aXRoLXBhbmdvLC0td2l0aG91dC1wYW5nbyxwYW5nbyBjYWlybyIKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKLVBBQ0tBR0VDT05GSUdbd21mXSA9ICItLXdpdGgtd21mLC0td2l0aG91dC13bWYsbGlid21mIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14LC0td2l0aG91dC14LHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtQVn0vbW9kdWxlcy1RMTYvKi8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtQVn0vbW9kdWxlcy1RMTYvKi8qLmxhIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtQVn0vbW9kdWxlcy1RMTYvZmlsdGVycyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L21vZHVsZXMtUTE2L2NvZGVycyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L2NvbmZpZy1RMTYqIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L0ltYWdlTWFnaWNrLTcgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9JbWFnZU1hZ2ljay0ke1BWfS9tb2R1bGVzLVExNi8qLyouYSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtQVn0vbW9kdWxlcy1RMTYvKi8uZGVidWcvKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiYW5pbWF0ZSBjb21wYXJlIGNvbXBvc2l0ZSBjb25qdXJlIGNvbnZlcnQgZGlzcGxheSBcCi0gICAgaWRlbnRpZnkgaW1wb3J0IG1vZ3JpZnkgbW9udGFnZSBzdHJlYW0iCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFthbmltYXRlXSA9ICIke2JpbmRpcn0vYW5pbWF0ZS5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbY29tcGFyZV0gPSAiJHtiaW5kaXJ9L2NvbXBhcmUuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2NvbXBvc2l0ZV0gPSAiJHtiaW5kaXJ9L2NvbXBvc2l0ZS5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbY29uanVyZV0gPSAiJHtiaW5kaXJ9L2Nvbmp1cmUuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2NvbnZlcnRdID0gIiR7YmluZGlyfS9jb252ZXJ0LmltNyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtkaXNwbGF5XSA9ICIke2JpbmRpcn0vZGlzcGxheS5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbaWRlbnRpZnldID0gIiR7YmluZGlyfS9pZGVudGlmeS5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbaW1wb3J0XSA9ICIke2JpbmRpcn0vaW1wb3J0LmltNyIKLUFMVEVSTkFUSVZFX1RBUkdFVFttb2dyaWZ5XSA9ICIke2JpbmRpcn0vbW9ncmlmeS5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbbW9udGFnZV0gPSAiJHtiaW5kaXJ9L21vbnRhZ2UuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW3N0cmVhbV0gPSAiJHtiaW5kaXJ9L3N0cmVhbS5pbTciCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJhbmltYXRlLjEgY29tcGFyZS4xIGNvbXBvc2l0ZS4xIGNvbmp1cmUuMSBcCi0gICAgY29udmVydC4xIGRpc3BsYXkuMSBpZGVudGlmeS4xIGltcG9ydC4xIG1vZ3JpZnkuMSBtb250YWdlLjEgc3RyZWFtLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthbmltYXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2FuaW1hdGUuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFthbmltYXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2FuaW1hdGUuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY29tcGFyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wYXJlLjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbY29tcGFyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wYXJlLmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NvbXBvc2l0ZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wb3NpdGUuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjb21wb3NpdGUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29tcG9zaXRlLmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Nvbmp1cmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29uanVyZS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW2Nvbmp1cmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29uanVyZS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjb252ZXJ0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbnZlcnQuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjb252ZXJ0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbnZlcnQuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGlzcGxheS4xXSA9ICIke21hbmRpcn0vbWFuMS9kaXNwbGF5LjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbZGlzcGxheS4xXSA9ICIke21hbmRpcn0vbWFuMS9kaXNwbGF5LmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2lkZW50aWZ5LjFdID0gIiR7bWFuZGlyfS9tYW4xL2lkZW50aWZ5LjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbaWRlbnRpZnkuMV0gPSAiJHttYW5kaXJ9L21hbjEvaWRlbnRpZnkuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW1wb3J0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2ltcG9ydC4xIgotQUxURVJOQVRJVkVfVEFSR0VUW2ltcG9ydC4xXSA9ICIke21hbmRpcn0vbWFuMS9pbXBvcnQuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbW9ncmlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb2dyaWZ5LjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbbW9ncmlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb2dyaWZ5LmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21vbnRhZ2UuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9udGFnZS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW21vbnRhZ2UuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9udGFnZS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdHJlYW0uMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RyZWFtLjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbc3RyZWFtLjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0cmVhbS5pbTcuMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW1hZ2VtYWdpY2svaW1hZ2VtYWdpY2tfNy4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OTUzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiCkBAIC0wLDAgKzEsODIgQEAKK1NVTU1BUlkgPSAiSW1hZ2VNYWdpY2sgaXMgYW4gaW1hZ2UgY29udmVydGlvbiB0b29scyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiSW1hZ2VNYWdpY2siCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYWQ1YTk4ZjE3M2ZkM2ZhNjk1OGExYTU4YzYxMzFjMSIKKyMgRklYTUU6IFRoZXJlIGFyZSBtYW55IG1vcmUgY2hlY2tlZCBsaWJyYXJpZXMuIEFsbCBzaG91bGQgYmUgYWRkZWQgb3IgZXhwbGljaXRseSBkaXNhYmxlZCB0byBnZXQgY29uc2lzdGVudCByZXN1bHRzLgorREVQRU5EUyA9ICJsY21zIGJ6aXAyIGpwZWcgbGlicG5nIGxpYnJzdmcgdGlmZiB6bGliIGZmdHcgZnJlZXR5cGUiCisKK0JBU0VfUFYgOj0gIiR7UFZ9IgorUFYgLj0gIl83IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0ltYWdlTWFnaWNrL0ltYWdlTWFnaWNrLmdpdCAiCitTUkNSRVYgPSAiZTEyNjAyYjM5YjVlNzc4MjQwZDI4NmI2ZjliYmJjMGZlM2ZiMjZjNSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworIyB4bWwgZGlzYWJsZWQgYmVjYXVzZSBpdCdzIHVzaW5nIHhtbDItY29uZmlnIC0tcHJlZml4IHRvIGRldGVybWluZSBwcmVmaXggd2hpY2ggcmV0dXJucyBqdXN0IC91c3Igd2l0aCBvdXIgbGlieG1sMgorIyBpZiBzb21lb25lIG5lZWRzIHhtbCBzdXBwb3J0IHRoZW4gZml4IGl0IGZpcnN0CitFWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD0gLS1wcm9ncmFtLXN1ZmZpeD0uaW03IC0td2l0aG91dC1wZXJsIC0tZGlzYWJsZS1vcGVubXAgLS13aXRob3V0LXhtbCAtLWRpc2FibGUtb3BlbmNsIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz15ZXMiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1tncmFwaHZpel0gPSAiLS13aXRoLWd2YywtLXdpdGhvdXQtZ3ZjLGdyYXBodml6IgorUEFDS0FHRUNPTkZJR1tqcDJdID0gIi0td2l0aC1qcDIsLGphc3BlciIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHoiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLXdpdGgtb3BlbmpwMiwtLXdpdGhvdXQtb3BlbmpwMixvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbcGFuZ29dID0gIi0td2l0aC1wYW5nbywtLXdpdGhvdXQtcGFuZ28scGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW3dlYnBdID0gIi0td2l0aC13ZWJwLC0td2l0aG91dC13ZWJwLGxpYndlYnAiCitQQUNLQUdFQ09ORklHW3dtZl0gPSAiLS13aXRoLXdtZiwtLXdpdGhvdXQtd21mLGxpYndtZiIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7QkFTRV9QVn0vY29uZmlnLVExNiogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vSW1hZ2VNYWdpY2stNyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtCQVNFX1BWfS9tb2R1bGVzLVExNi8qLyouYSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtCQVNFX1BWfS9tb2R1bGVzLVExNi8qLy5kZWJ1Zy8qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhbmltYXRlIGNvbXBhcmUgY29tcG9zaXRlIGNvbmp1cmUgY29udmVydCBkaXNwbGF5IFwKKyAgICBpZGVudGlmeSBpbXBvcnQgbW9ncmlmeSBtb250YWdlIHN0cmVhbSIKKworQUxURVJOQVRJVkVfVEFSR0VUW2FuaW1hdGVdID0gIiR7YmluZGlyfS9hbmltYXRlLmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjb21wYXJlXSA9ICIke2JpbmRpcn0vY29tcGFyZS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbY29tcG9zaXRlXSA9ICIke2JpbmRpcn0vY29tcG9zaXRlLmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjb25qdXJlXSA9ICIke2JpbmRpcn0vY29uanVyZS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbY29udmVydF0gPSAiJHtiaW5kaXJ9L2NvbnZlcnQuaW03IgorQUxURVJOQVRJVkVfVEFSR0VUW2Rpc3BsYXldID0gIiR7YmluZGlyfS9kaXNwbGF5LmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtpZGVudGlmeV0gPSAiJHtiaW5kaXJ9L2lkZW50aWZ5LmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtpbXBvcnRdID0gIiR7YmluZGlyfS9pbXBvcnQuaW03IgorQUxURVJOQVRJVkVfVEFSR0VUW21vZ3JpZnldID0gIiR7YmluZGlyfS9tb2dyaWZ5LmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFttb250YWdlXSA9ICIke2JpbmRpcn0vbW9udGFnZS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbc3RyZWFtXSA9ICIke2JpbmRpcn0vc3RyZWFtLmltNyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImFuaW1hdGUuMSBjb21wYXJlLjEgY29tcG9zaXRlLjEgY29uanVyZS4xIFwKKyAgICBjb252ZXJ0LjEgZGlzcGxheS4xIGlkZW50aWZ5LjEgaW1wb3J0LjEgbW9ncmlmeS4xIG1vbnRhZ2UuMSBzdHJlYW0uMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2FuaW1hdGUuMV0gPSAiJHttYW5kaXJ9L21hbjEvYW5pbWF0ZS4xIgorQUxURVJOQVRJVkVfVEFSR0VUW2FuaW1hdGUuMV0gPSAiJHttYW5kaXJ9L21hbjEvYW5pbWF0ZS5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjb21wYXJlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbXBhcmUuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjb21wYXJlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbXBhcmUuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY29tcG9zaXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbXBvc2l0ZS4xIgorQUxURVJOQVRJVkVfVEFSR0VUW2NvbXBvc2l0ZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wb3NpdGUuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY29uanVyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb25qdXJlLjEiCitBTFRFUk5BVElWRV9UQVJHRVRbY29uanVyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb25qdXJlLmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NvbnZlcnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29udmVydC4xIgorQUxURVJOQVRJVkVfVEFSR0VUW2NvbnZlcnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29udmVydC5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkaXNwbGF5LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Rpc3BsYXkuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtkaXNwbGF5LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Rpc3BsYXkuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaWRlbnRpZnkuMV0gPSAiJHttYW5kaXJ9L21hbjEvaWRlbnRpZnkuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtpZGVudGlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9pZGVudGlmeS5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbXBvcnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvaW1wb3J0LjEiCitBTFRFUk5BVElWRV9UQVJHRVRbaW1wb3J0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2ltcG9ydC5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVttb2dyaWZ5LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vZ3JpZnkuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFttb2dyaWZ5LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vZ3JpZnkuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbW9udGFnZS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb250YWdlLjEiCitBTFRFUk5BVElWRV9UQVJHRVRbbW9udGFnZS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb250YWdlLmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N0cmVhbS4xXSA9ICIke21hbmRpcn0vbWFuMS9zdHJlYW0uMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzdHJlYW0uMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RyZWFtLmltNy4xIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5Yjg5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29scy9pbm90aWZ5LW5vc3lzLWZpeC1zeXN0ZW0tY2FsbC1udW1iZXIucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAoraW5vdGlmeS10b29sczogZml4IF9fTlJfaW5vdGlmeV9hZGRfd2F0Y2ggc3lzdGVtIGNhbGwgbnVtYmVyIG9uIF9NSVBTX1NJTV9BQkk2NAorCitUaGUgY29ycmVjdCB2YWx1ZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZGVmaW5lZCBpbgorbGludXgvYXJjaC9taXBzL2luY2x1ZGUvdWFwaS9hc20vdW5pc3RkLmgKKworVXBzdHJlYW0tU3RhdHVzOiBTdW1taXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ydm9pY2lsYXMvaW5vdGlmeS10b29scy9wdWxsLzcxXQorCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliaW5vdGlmeXRvb2xzL3NyYy9pbm90aWZ5dG9vbHMvaW5vdGlmeS1ub3N5cy5oIHwgICAgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaCBiL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaAoraW5kZXggZGI3NmIyYy4uNWY3YjExYiAxMDA2NDQKKy0tLSBhL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaAorKysrIGIvbGliaW5vdGlmeXRvb2xzL3NyYy9pbm90aWZ5dG9vbHMvaW5vdGlmeS1ub3N5cy5oCitAQCAtMTAwLDggKzEwMCw4IEBAIHN0cnVjdCBpbm90aWZ5X2V2ZW50IHsKKyAjIGVuZGlmCisgIyBpZiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTY0CisgIyAgZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0IChfX05SX0xpbnV4ICsgMjQzKQorLSMgIGRlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoIChfX05SX0xpbnV4ICsgMjQzKQorLSMgIGRlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2ggKF9fTlJfTGludXggKyAyNDMpCisrIyAgZGVmaW5lIF9fTlJfaW5vdGlmeV9hZGRfd2F0Y2ggKF9fTlJfTGludXggKyAyNDQpCisrIyAgZGVmaW5lIF9fTlJfaW5vdGlmeV9ybV93YXRjaCAoX19OUl9MaW51eCArIDI0NSkKKyAjIGVuZGlmCisgIyBpZiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX05BQkkzMgorICMgIGRlZmluZSBfX05SX2lub3RpZnlfaW5pdCAoX19OUl9MaW51eCArIDI0NykKKy0tIAorMS43LjEwLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHNfZ2l0LmJiCmluZGV4IGE4ZWY1NTcuLmVmYzc1M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3J2b2ljaWxhcy8ke0JQTn0gXAogICAgICAgICAgICBmaWxlOi8vaW5vdGlmeXdhaXQtZml4LWNvbXBpbGUtZXJyb3Itd2l0aC1HQ0MtNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbm90aWZ5LW5vc3lzLWZpeC1zeXN0ZW0tY2FsbC1udW1iZXIucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaAppbmRleCAyZmE3YzY4Li4zMzExNmIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoCkBAIC02LDExNSArNiwxMSBAQAogCiBTaWduZWQtb2ZmLUJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KIAotSW5kZXg6IGlwbWl1dGlsLTIuOS42L2NvbmZpZ3VyZQorSW5kZXg6IGlwbWl1dGlsLTMuMC41L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvY29uZmlndXJlCi0rKysgaXBtaXV0aWwtMi45LjYvY29uZmlndXJlCi1AQCAtNzkyLDcgKzc5Miw2IEBAIExUTElCT0JKUwotIExJQk9CSlMKLSBwa2djb25maWdkaXIKLSBTSFJfTElOSwotLVNZU1RFTURfRElSCi0gQ1JPU1NfTEZMQUdTCi0gQ1JPU1NfQ0ZMQUdTCi0gU1VCRElSX1MKLUBAIC05OTksNyArOTk4LDcgQEAgcHNkaXI9JyR7ZG9jZGlyfScKLSBsaWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKLSBsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKLSBtYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKLS0KLStzeXN0ZW1kZGlyPScke2RhdGFyb290ZGlyfS9pcG1pdXRpbCcKLSBhY19wcmV2PQotIGFjX2Rhc2hkYXNoPQotIGZvciBhY19vcHRpb24KLUBAIC0xNTk0LDcgKzE1OTMsMTAgQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWVuYWJsZS1zdGFuZGFsb25lICAgIGJ1aWxkIHN0YW5kYWxvbmUsIHdpdGggbm8gR1BMIG9yIExhblBsdXMgbGlicy4KLSAgIC0tZW5hYmxlLWxpYnNlbnNvcnMJIGJ1aWxkIGxpYmlwbWl1dGlsIHdpdGggc2Vuc29yIG1vZHVsZXMgW2RlZmF1bHQ9bm9dCi0gICAtLWVuYWJsZS1ncGwgICAgICAgICAgIGJ1aWxkIHdpdGggc29tZSBHUEwgY29kZSBbZGVmYXVsdD1ub10KLS0gIC0tZW5hYmxlLXN5c3RlbWQgICAgICAgZW5hYmxlIHN5c3RlbWQgc2VydmljZSB0eXBlPW5vdGlmeSBzdXBwb3J0IGFuZCAlX3VuaXRkaXIgW2RlZmF1bHQ9ZGlzYWJsZWRdCi0rICAtLWVuYWJsZS1zeXN0ZW1kWz1zeXN0ZW1kZGlyXSAgICAgIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGUuICBJZiAneWVzJwotKyAgICAgICAgICAgICAgICBwcm9iZSB0aGUgc3lzdGVtIGZvciB1bml0IGRpcmVjdG9yeS4KLSsgICAgICAgICAgICAgICAgSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgYXNzdW1lIHRoYXQKLSsgICAgICAgICAgICAgICAgaXMgYSB2YWxpZCBpbnN0YWxsIHBhdGguICBbZGVmYXVsdD1kaXNhYmxlZF0KLSAKLSBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVzXQotQEAgLTEyOTgwLDcgKzEyOTgyLDYgQEAgQ1JPU1NfTEZMQUdTPSIiCi0gQ1JPU1NfQ0ZMQUdTPSIiCi0gTElCU0VOU09SUz0iIgotIFNBTTJPQko9ImlzZW5zb3IyLm8gaWV2ZW50czIubyIKLS1TWVNURU1EX0RJUj0vdXNyL3NoYXJlL2lwbWl1dGlsCi0gCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXVzZWZsYWdzIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV91c2VmbGFncytzZXR9IiA9IHNldDsgdGhlbgotQEAgLTEzMDMyLDMxICsxMzAzMyw0MyBAQCBpZiB0ZXN0ICIke2VuYWJsZV9ncGwrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgICAgZmkKLSAKLSBmaQotLQotKyMKLSsjIENoZWNrIGZvciBzeXN0ZW1kIHVuaXQgZmlsZXMgZGlyZWVjdG9yeSBleGlzdHMgaWYgdW5pdCBmaWxlIGluc3RhbGxhdGlvbgotKyMgaXMgcmVxdWVzdGVkCi0rIwotIAotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zeXN0ZW1kIHdhcyBnaXZlbi4KLS1pZiB0ZXN0ICIke2VuYWJsZV9zeXN0ZW1kK3NldH0iID0gc2V0OyB0aGVuCi0tICBlbmFibGV2YWw9JGVuYWJsZV9zeXN0ZW1kOwotLWZpCi0tCi0taWYgdGVzdCAieCRlbmFibGVfc3lzdGVtZCIgPSAieHllcyI7IHRoZW4KLS0gICBHUExfQ0ZMQUdTPSIkR1BMX0NGTEFHUyAtREVOQUJMRV9TWVNURU1EIgotLSAgICMgaWYgc3lzdGVtZCBlbmFibGVkLCBpbnN0YWxsIHNlcnZpY2Ugc2NyaXB0cyBpbiB1bml0ZGlyCi0tICAgU1lTVEVNRF9ESVI9YHJwbSAtLWV2YWwgIiV7X3VuaXRkaXJ9ImAKLS1lbHNlCi0tICAgIyBvdGhlcndpc2UgaW5zdGFsbCB0aGUgc3lzdGVtZCBzZXJ2aWNlIHNjcmlwdHMgaW4gdGhlIGRhdGEgZGlyCi0tICBpZiB0ZXN0ICAieCRzeXNuYW1lIiA9ICJ4RGFyd2luIiA7IHRoZW4KLS0gICAgIyBNYWNPUyAnd2hpY2gnIGNvbW1hbmQgcmV0dXJucyAwIGFsd2F5cwotLSAgICBTWVNURU1EX0RJUj0vdXNyL3NoYXJlL2lwbWl1dGlsCi0tICBlbHNlCi0raWYgdGVzdCAiJHtlbmFibGVfc3lzdGVtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSRlbmFibGVfc3lzdGVtZDsgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0rICBHUExfQ0ZMQUdTPSIkR1BMX0NGTEFHUyAtREVOQUJMRV9TWVNURU1EIgotKyAgaWYgdGVzdCAteiAiJHN5c3RlbWRkaXIiOyB0aGVuCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbG9jYXRpb24gb2YgdGhlIHN5c3RlbWQgdW5pdCBmaWxlcyBkaXJlY3RvcnkiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGxvY2F0aW9uIG9mIHRoZSBzeXN0ZW1kIHVuaXQgZmlsZXMgZGlyZWN0b3J5Li4uICIgPiY2OyB9Ci0rICAgIF9ycG1kaXIgPSAiIgotICAgICB3aGljaCBycG0gPi9kZXYvbnVsbCAyPiYxCi0gICAgIGlmIHRlc3QgICQ/IC1lcSAwIDsgdGhlbgotLSAgICAgICBkYXRhZD1gcnBtIC0tZXZhbCAiJXtfZGF0YWRpcn0iYAotLSAgICAgICBTWVNURU1EX0RJUj0ke2RhdGFkfS9pcG1pdXRpbAotLSAgICBlbHNlCi0tICAgICAgIFNZU1RFTURfRElSPS91c3Ivc2hhcmUvaXBtaXV0aWwKLSsgICAgICBfcnBtZGlyID0gYHJwbSAtLWV2YWwgIiV7X3VuaXRkaXJ9ImAKLSAgICAgZmkKLSsgICAgZm9yIHN5c3RlbWRfZCBpbiAke2RhdGFkaXJ9L3Vzci9zaGFyZS9pcG1pdXRpbCAke19ycG1kaXJ9IC91c3Ivc2hhcmUvaXBtaXV0aWw7IGRvCi0rICAgICAgaWYgdGVzdCAteiAiJHN5c3RlbWRkaXIiOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0IC1kICIkc3lzdGVtZF9kIjsgdGhlbgotKyAgICAgICAgICBzeXN0ZW1kZGlyPSIkc3lzdGVtZF9kIgotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBkb25lCi0gICBmaQotKyAgaWYgdGVzdCAtbiAiJHN5c3RlbWRkaXIiOyB0aGVuCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkc3lzdGVtZGRpciIgPiY1Ci0rJGFzX2VjaG8gIiRzeXN0ZW1kZGlyIiA+JjY7IH0KLSsgIGVsc2UKLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBmb3VuZCIgPiY1Ci0rJGFzX2VjaG8gIm5vdCBmb3VuZCIgPiY2OyB9Ci0rIGZpCi0rZWxzZQotKyBpZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm87IHRoZW4KLSsgIHN5c3RlbWRkaXI9JHdpdGh2YWwKLSsgZmkKLStmaQotIGZpCi0gCi0gY2FzZSAiJGFyY2htIiBpbgotSW5kZXg6IGlwbWl1dGlsLTIuOS42L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgaXBtaXV0aWwtMi45LjYvY29uZmlndXJlLmFjCi1AQCAtMTQwLDcgKzE0MCw2IEBAIENST1NTX0xGTEFHUz0iIgorLS0tIGlwbWl1dGlsLTMuMC41Lm9yaWcvY29uZmlndXJlLmFjCisrKysgaXBtaXV0aWwtMy4wLjUvY29uZmlndXJlLmFjCitAQCAtMTQ5LDcgKzE0OSw2IEBAIENST1NTX0xGTEFHUz0iIgogIENST1NTX0NGTEFHUz0iIgogIExJQlNFTlNPUlM9IiIKICBTQU0yT0JKPSJpc2Vuc29yMi5vIGlldmVudHMyLm8iCkBAIC0xMjIsNyArMTgsNyBAQAogIAogIEFDX0FSR19FTkFCTEUoW3VzZWZsYWdzXSwKICAgICAgWyAgLS1lbmFibGUtdXNlZmxhZ3MgICAgaW5jbHVkZSBlbnZpcm9ubWVudCBDRkxBR1MgYW5kIExERkxBR1MuXSwKLUBAIC0xOTEsMjUgKzE5MCw0MiBAQCBBQ19BUkdfRU5BQkxFKFtncGxdLAorQEAgLTIwMCwyOSArMTk5LDQyIEBAIEFDX0FSR19FTkFCTEUoW2dwbF0sCiAgCiAgZG5sIERvZXMgdGhpcyBMaW51eCBoYXZlIHN5c3RlbWQgZW5hYmxlZD8gIE90aGVyd2lzZSB1c2Ugc3lzdiBpbml0LgogIEFDX0FSR19FTkFCTEUoW3N5c3RlbWRdLApAQCAtMTMwLDcgKzI2LDEyIEBACiAtaWYgdGVzdCAieCRlbmFibGVfc3lzdGVtZCIgPSAieHllcyI7IHRoZW4KIC0gICBHUExfQ0ZMQUdTPSIkR1BMX0NGTEFHUyAtREVOQUJMRV9TWVNURU1EIgogLSAgICMgaWYgc3lzdGVtZCBlbmFibGVkLCBpbnN0YWxsIHNlcnZpY2Ugc2NyaXB0cyBpbiB1bml0ZGlyCi0tICAgU1lTVEVNRF9ESVI9YHJwbSAtLWV2YWwgIiV7X3VuaXRkaXJ9ImAKKy0gICB3aGljaCBycG0gPi9kZXYvbnVsbCAyPiYxCistICAgaWYgdGVzdCAgJD8gLWVxIDAgOyB0aGVuCistCVNZU1RFTURfRElSPWBycG0gLS1ldmFsICIle191bml0ZGlyfSJgCistICAgZWxzZQorLSAgICBTWVNURU1EX0RJUj0vdXNyL3NoYXJlL2lwbWl1dGlsCistICAgZmkKICsgICAgWyAgLS1lbmFibGUtc3lzdGVtZFs9c3lzdGVtZGRpcl0gICAgICBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlLiAgSWYgJ3llcycKICsgICAgICAgIHByb2JlIHRoZSBzeXN0ZW0gZm9yIHVuaXQgZGlyZWN0b3J5LgogKyAgICAgICAgSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgYXNzdW1lIHRoYXQKQEAgLTE2NCwxNiArNjUsMTUgQEAKICsJZmkKICBlbHNlCiAtICAgIyBvdGhlcndpc2UgaW5zdGFsbCB0aGUgc3lzdGVtZCBzZXJ2aWNlIHNjcmlwdHMgaW4gdGhlIGRhdGEgZGlyCi0tICBpZiB0ZXN0ICAieCRzeXNuYW1lIiA9ICJ4RGFyd2luIiA7IHRoZW4KLS0gICAgIyBNYWNPUyAnd2hpY2gnIGNvbW1hbmQgcmV0dXJucyAwIGFsd2F5cwotLSAgICBTWVNURU1EX0RJUj0vdXNyL3NoYXJlL2lwbWl1dGlsCi0tICBlbHNlCi0tICAgIHdoaWNoIHJwbSA+L2Rldi9udWxsIDI+JjEKLS0gICAgaWYgdGVzdCAgJD8gLWVxIDAgOyB0aGVuCi0tICAgICAgIGRhdGFkPWBycG0gLS1ldmFsICIle19kYXRhZGlyfSJgCi0tICAgICAgIFNZU1RFTURfRElSPSR7ZGF0YWR9L2lwbWl1dGlsCi0tICAgIGVsc2UKLS0gICAgICAgU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAorLSAgU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAorLSAgaWYgdGVzdCAieCRzeXNuYW1lIiAhPSAieERhcndpbiIgOyB0aGVuCistICAgIGlmIHRlc3QgICJ4JG9zIiAhPSAieGhwdXgiIDsgdGhlbgorLSAgICAgICMgTWFjT1MgYW5kIEhQLVVYOiAnd2hpY2gnIGNvbW1hbmQgcmV0dXJucyAwIGFsd2F5cworLSAgICAgIHdoaWNoIHJwbSA+L2Rldi9udWxsIDI+JjEKKy0gICAgICBpZiB0ZXN0ICAkPyAtZXEgMCA7IHRoZW4KKy0gICAgICAgICBkYXRhZD1gcnBtIC0tZXZhbCAiJXtfZGF0YWRpcn0iYAorLSAgICAgICAgIFNZU1RFTURfRElSPSR7ZGF0YWR9L2lwbWl1dGlsCistICAgICAgZmkKIC0gICAgZmkKIC0gIGZpCiArCWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubzsgdGhlbgpAQCAtMTgzLDcgKzgzLDcgQEAKICBmaQogIAogIGRubCBzdGFydCBtYWluIGxvZ2ljCi1AQCAtNDgxLDcgKzQ5Nyw3IEBAIEFDX1NVQlNUKElOU19MSUIpCitAQCAtNTI4LDcgKzU0MCw3IEBAIEFDX1NVQlNUKElOU19MSUIpCiAgQUNfU1VCU1QoU1VCRElSX1MpCiAgQUNfU1VCU1QoQ1JPU1NfQ0ZMQUdTKQogIEFDX1NVQlNUKENST1NTX0xGTEFHUykKQEAgLTE5Miw3NCArOTIsMTAgQEAKICBBQ19TVUJTVChTSFJfTElOSykKICBBQ19TVUJTVChwa2djb25maWdkaXIpCiAgCi1JbmRleDogaXBtaXV0aWwtMi45LjYvTWFrZWZpbGUuaW4KK0luZGV4OiBpcG1pdXRpbC0zLjAuNS9zY3JpcHRzL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXBtaXV0aWwtMi45LjYub3JpZy9NYWtlZmlsZS5pbgotKysrIGlwbWl1dGlsLTIuOS42L01ha2VmaWxlLmluCi1AQCAtMTgyLDcgKzE4Miw3IEBAIFNIRUxMID0gQFNIRUxMQAotIFNIUl9MSU5LID0gQFNIUl9MSU5LQAotIFNUUklQID0gQFNUUklQQAotIFNVQkRJUl9TID0gQFNVQkRJUl9TQAotLVNZU1RFTURfRElSID0gQFNZU1RFTURfRElSQAotK1NZU1RFTURfRElSID0gQHN5c3RlbWRkaXJACi0gVkVSU0lPTiA9IEBWRVJTSU9OQAotIGFic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACi0gYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAotQEAgLTIzMyw2ICsyMzMsNyBAQCBzYmluZGlyID0gQHNiaW5kaXJACi0gc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACi0gc3JjZGlyID0gQHNyY2RpckAKLSBzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACi0rc3lzdGVtZGRpciA9IEBzeXN0ZW1kZGlyQAotIHRhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACi0gdG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAotIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACi1JbmRleDogaXBtaXV0aWwtMi45LjYvc2NyaXB0cy9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvc2NyaXB0cy9NYWtlZmlsZS5pbgotKysrIGlwbWl1dGlsLTIuOS42L3NjcmlwdHMvTWFrZWZpbGUuaW4KLUBAIC0xMjYsNyArMTI2LDcgQEAgU0hFTEwgPSBAU0hFTExACi0gU0hSX0xJTksgPSBAU0hSX0xJTktACi0gU1RSSVAgPSBAU1RSSVBACi0gU1VCRElSX1MgPSBAU1VCRElSX1NACi0tU1lTVEVNRF9ESVIgPSBAU1lTVEVNRF9ESVJACi0rU1lTVEVNRF9ESVIgPSBAc3lzdGVtZGRpckAKLSBWRVJTSU9OID0gQFZFUlNJT05ACi0gYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKLSBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACi1AQCAtMTk1LDcgKzE5NSw4IEBAIGNyb250byA9ICR7REVTVERJUn0ke2V0Y2Rpcn0vY3Jvbi5kYWlseQotIHNiaW50byA9ICR7REVTVERJUn0ke3NiaW5kaXJ9Ci0gdmFydG8gPSAke0RFU1RESVJ9L3Zhci9saWIvaXBtaXV0aWwKLSBpbml0dG8gPSAke0RFU1RESVJ9QElOSVRfRElSQAotLXN5c2R0byA9ICR7REVTVERJUn1AU1lTVEVNRF9ESVJACi0rc3lzZHRvID0gJHtERVNURElSfUBzeXN0ZW1kZGlyQAotK3N5c3RlbWRkaXIgPSBAc3lzdGVtZGRpckAKLSBzeXN2aW5pdCA9ICR7ZGF0YXRvfQotIHNiaW5mbHMgPSBpYWxhcm1zIGloZWFsdGggaWZydSBpZ2V0ZXZlbnQgaXJlc2V0IGljbWQgaXNvbCBpbGFuIGlzZW5zb3IgaXNlbCBpc2VyaWFsIGl3ZHQgaWNvbmZpZyBpcGljbWcgaWZpcmV3YWxsIGlmd3VtIGlocG0KLSBhbGw6IGFsbC1hbQotQEAgLTM5OCwxMSArMzk5LDE0IEBAIGluc3RhbGw6Ci0gCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGV2dC5zaCAgICAgICAke2RhdGF0b30KLSAJaWYgWyAtZiAvZXRjL2RlYmlhbl92ZXJzaW9uIF07IHRoZW4gXAotIAkgICBzeXN2aW5pdD0ke2luaXR0b307IGZpCi0tCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWl1dGlsX3dkdCAke3N5c3Zpbml0fS9pcG1pdXRpbF93ZHQKLS0JJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWxfYXN5ICR7c3lzdmluaXR9L2lwbWl1dGlsX2FzeQotLQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pdXRpbF9ldnQgJHtzeXN2aW5pdH0vaXBtaXV0aWxfZXZ0Ci0tCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWlfcG9ydC5zaCAke3N5c3Zpbml0fS9pcG1pX3BvcnQKLS0JJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaV9pbmZvICAgICR7c3lzdmluaXR9L2lwbWlfaW5mbwotKwlpZiBbICEgLXogIiR7c3lzdGVtZGRpcn0iIF07IHRoZW4gXAotKwkJJChNS0RJUikgJHtzeXNkdG99OyBcCi0rCQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pdXRpbF93ZHQgJHtzeXN2aW5pdH0vaXBtaXV0aWxfd2R0OyBcCi0rCQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pdXRpbF9hc3kgJHtzeXN2aW5pdH0vaXBtaXV0aWxfYXN5OyBcCi0rCQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pdXRpbF9ldnQgJHtzeXN2aW5pdH0vaXBtaXV0aWxfZXZ0OyBcCi0rCQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pX3BvcnQuc2ggJHtzeXN2aW5pdH0vaXBtaV9wb3J0OyBcCi0rCQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pX2luZm8gICAgJHtzeXN2aW5pdH0vaXBtaV9pbmZvOyBcCi0rCWZpCi0gCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGNoZWNrc2VsICAgICAke2RhdGF0b30KLSAJJHtJTlNUQUxMX0RBVEFfU0h9IGlwbWl1dGlsX3dkdC5zZXJ2aWNlICR7c3lzZHRvfQotIAkke0lOU1RBTExfREFUQV9TSH0gaXBtaXV0aWxfYXN5LnNlcnZpY2UgJHtzeXNkdG99Ci1JbmRleDogaXBtaXV0aWwtMi45LjYvc2NyaXB0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvc2NyaXB0cy9NYWtlZmlsZS5hbQotKysrIGlwbWl1dGlsLTIuOS42L3NjcmlwdHMvTWFrZWZpbGUuYW0KKy0tLSBpcG1pdXRpbC0zLjAuNS5vcmlnL3NjcmlwdHMvTWFrZWZpbGUuYW0KKysrKyBpcG1pdXRpbC0zLjAuNS9zY3JpcHRzL01ha2VmaWxlLmFtCiBAQCAtMTcsNyArMTcsOCBAQCBjcm9udG8gPSAke0RFU1RESVJ9JHtldGNkaXJ9L2Nyb24uZGFpbHkKICBzYmludG8gPSAke0RFU1RESVJ9JHtzYmluZGlyfQogIHZhcnRvICA9ICR7REVTVERJUn0vdmFyL2xpYi9pcG1pdXRpbApAQCAtMjY4LDcgKzEwNCw3IEBACiArc3lzZHRvID0gJHtERVNURElSfUBzeXN0ZW1kZGlyQAogK3N5c3RlbWRkaXIgPSBAc3lzdGVtZGRpckAKICBzeXN2aW5pdCA9ICR7ZGF0YXRvfQotIHNiaW5mbHMgPSBpYWxhcm1zIGloZWFsdGggaWZydSBpZ2V0ZXZlbnQgaXJlc2V0IGljbWQgaXNvbCBpbGFuIGlzZW5zb3IgaXNlbCBpc2VyaWFsIGl3ZHQgaWNvbmZpZyBpcGljbWcgaWZpcmV3YWxsIGlmd3VtIGlocG0KKyBzYmluZmxzID0gaWFsYXJtcyBpaGVhbHRoIGlmcnUgaWdldGV2ZW50IGlyZXNldCBpY21kIGlzb2wgaWxhbiBpc2Vuc29yIGlzZWwgaXNlcmlhbCBpd2R0IGljb25maWcgaXBpY21nIGlmaXJld2FsbCBpZnd1bSBpaHBtIGl1c2VyCiAgCiBAQCAtNDcsMTAgKzQ4LDE0IEBAIGluc3RhbGw6CiAgCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWlfcG9ydC5zaCAke3N5c3Zpbml0fS9pcG1pX3BvcnQKQEAgLTI4OSwzMCArMTI1LDMgQEAKICAJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWwuZW52ICAgICAke2RhdGF0b30KICAJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWwucHJlICAgICAke2RhdGF0b30KICAJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWwuc2V0dXAgICAke2RhdGF0b30KLUluZGV4OiBpcG1pdXRpbC0yLjkuNi9saWIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL2xpYi9NYWtlZmlsZS5pbgotKysrIGlwbWl1dGlsLTIuOS42L2xpYi9NYWtlZmlsZS5pbgotQEAgLTEyOCw3ICsxMjgsNyBAQCBTSEVMTCA9IEBTSEVMTEAKLSBTSFJfTElOSyA9IEBTSFJfTElOS0AKLSBTVFJJUCA9IEBTVFJJUEAKLSBTVUJESVJfUyA9IEBTVUJESVJfU0AKLS1TWVNURU1EX0RJUiA9IEBTWVNURU1EX0RJUkAKLStTWVNURU1EX0RJUiA9IEBzeXN0ZW1kZGlyQAotIFZFUlNJT04gPSBAVkVSU0lPTkAKLSBhYnNfYnVpbGRkaXIgPSBAYWJzX2J1aWxkZGlyQAotIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKLUluZGV4OiBpcG1pdXRpbC0yLjkuNi9saWIvbGFucGx1cy9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvbGliL2xhbnBsdXMvTWFrZWZpbGUuaW4KLSsrKyBpcG1pdXRpbC0yLjkuNi9saWIvbGFucGx1cy9NYWtlZmlsZS5pbgotQEAgLTE3Nyw3ICsxNzcsOCBAQCBTSEVMTCA9IEBTSEVMTEAKLSBTSFJfTElOSyA9IEBTSFJfTElOS0AKLSBTVFJJUCA9IEBTVFJJUEAKLSBTVUJESVJfUyA9IEBTVUJESVJfU0AKLS1TWVNURU1EX0RJUiA9IEBTWVNURU1EX0RJUkAKLStTWVNURU1EX0RJUiA9IEBzeXN0ZW1kZGlyQAotK3N5c3RlbWRkaXIgPSBAc3lzdGVtZGRpckAKLSBWRVJTSU9OID0gQFZFUlNJT05ACi0gYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKLSBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzIuOS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8yLjkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwNzY2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzIuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotU1VNTUFSWSA9ICJpcG1pdXRpbCBpcyBhbiBlYXN5LXRvLXVzZSBzZXQgb2YgSVBNSSBzZXJ2ZXIgbWFuYWdlbWVudCB1dGlsaXRpZXMuXAotSXQgY2FuIGdldC9zZXQgc2Vuc29yIHRocmVzaG9sZHMsIGF1dG9tYXRlIFNFTCBtYW5hZ2VtZW50LCBkbyBTT0wgY29uc29sZSwgZXRjLiIKLQotREVTQ1JJUFRJT04gPSAiVGhlIElQTUkgTWFuYWdlbWVudCBVdGlsaXRpZXMgY3VycmVudGx5IHdvcmsgd2l0aCBwbGF0Zm9ybXMgdGhhdCBcCi1zdXBwb3J0IHRoZSBJUE1JIDEuNSBvciAyLjAgc3BlY2lmaWNhdGlvbi4gICBJUE1JIHNlcnZlcnMgY2FuIGJlIG1hbmFnZWRcCi1sb2NhbGx5LCBvciByZW1vdGVseSB2aWEgSVBNSSBMQU4sIGV2ZW4gd2hlbiB0aGUgT1Mgb3IgbWFpbiBDUFUgaXMgbm90XAotZnVuY3Rpb25hbC5cbiBcCi1UaGUgaXBtaXV0aWwgdXRpbGl0aWVzIHdpbGwgdXNlIGFuIElQTUkgRHJpdmVyLCBlaXRoZXIgdGhlIEludGVsIElQTUkgcGFja2FnZSBcCi0oaXBtaWRydnIsIC9kZXYvaW1iKSwgTW9udGFWaXN0YSBPcGVuSVBNSSAoL2Rldi9pcG1pMCksIHRoZSB2YWxpbnV4IElQTUkgXAotRHJpdmVyICgvZGV2L2lwbWlrY3MpLCBvciB0aGUgTEFORGVzayBsZGlwbWkgZGFlbW9uLiAgVGhlIGlwbWl1dGlsIHV0aWxpdGllcyBcCi1jYW4gYWxzbyB1c2UgZGlyZWN0IHVzZXItc3BhY2UgSS9PcyBpbiBMaW51eCBvciBGcmVlQlNEIGlmIG5vIElQTUkgZHJpdmVyIFwKLWlzIGRldGVjdGVkLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2lwbWl1dGlsLnNvdXJjZWZvcmdlLm5ldCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWY5MzcyNDkzNDAxZjMwOWU2MTQ5ZGQyY2UwYTA0NGIiCi0KLURFUEVORFMgKz0gIm9wZW5zc2wiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9pcG1pdXRpbC9pcG1pdXRpbC0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9maXhfc3lzdGVtZF9wYXRoLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ2MjA4Nzk5NWYwNWZhOWU2OTJlZDdmNTVjODQwZjcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4NGMxZjNkOGJmYjBiMzNjMzAzOTczZDI4NmMzMTY2ZjVhNTM3OTc2NDUxYTAzMTJlMzUyNGFmNTQ3NzE1MTkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID89ICJsYW5wbHVzIGdwbCIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQ9JHtkYXRhZGlyfS8ke0JQTn0sIC0tZW5hYmxlLXN5c3RlbWQ9bm8iCi1QQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LCAtLWVuYWJsZS1zaGEyNTY9bm8sIG9wZW5zc2wtbmF0aXZlLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tsYW5wbHVzXSA9ICItLWVuYWJsZS1sYW5wbHVzLCAtLWVuYWJsZS1sYW5wbHVzPW5vLCBvcGVuc3NsLW5hdGl2ZSwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbGFuZGVza10gPSAiLS1lbmFibGUtbGFuZGVzaywgLS1lbmFibGUtbGFuZGVzaz1ubyIKLVBBQ0tBR0VDT05GSUdbc2Vuc29yc10gPSAiLS1lbmFibGUtbGlic2Vuc29ycywgLS1lbmFibGUtbGlic2Vuc29ycz1ubyIKLQotI2J1aWxkIHdpdGggc29tZSBHUEwgY29kZQotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwgLS1lbmFibGUtZ3BsPW5vIgotI25vIEdQTCBvciBMYW5QbHVzIGxpYnMKLVBBQ0tBR0VDT05GSUdbc3RhbmRhbG9uZV0gPSAiLS1lbmFibGUtc3RhbmRhbG9uZSwgLS1lbmFibGUtc3RhbmRhbG9uZT1ubyIKLQotQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9IgotTERGTEFHUyArPSAiLUwke1NUQUdJTkdfTElCRElSfSIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBhY2xvY2FsCi0gICAgbGlidG9vbGl6ZSAtLWF1dG9tYWtlIC0tY29weSAtLWZvcmNlCi0gICAgYXV0b2hlYWRlcgotICAgIGF1dG9tYWtlIC0tZm9yZWlnbiAtLWFkZC1taXNzaW5nIC0tY29weQotCi0gICAgYWNsb2NhbAotICAgIGF1dG9jb25mCi0gICAgYXV0b21ha2UgLS1mb3JlaWduCi0gICAgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2KS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4Y2FmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJpcG1pdXRpbCBpcyBhbiBlYXN5LXRvLXVzZSBzZXQgb2YgSVBNSSBzZXJ2ZXIgbWFuYWdlbWVudCB1dGlsaXRpZXMuXAorSXQgY2FuIGdldC9zZXQgc2Vuc29yIHRocmVzaG9sZHMsIGF1dG9tYXRlIFNFTCBtYW5hZ2VtZW50LCBkbyBTT0wgY29uc29sZSwgZXRjLiIKKworREVTQ1JJUFRJT04gPSAiVGhlIElQTUkgTWFuYWdlbWVudCBVdGlsaXRpZXMgY3VycmVudGx5IHdvcmsgd2l0aCBwbGF0Zm9ybXMgdGhhdCBcCitzdXBwb3J0IHRoZSBJUE1JIDEuNSBvciAyLjAgc3BlY2lmaWNhdGlvbi4gICBJUE1JIHNlcnZlcnMgY2FuIGJlIG1hbmFnZWRcCitsb2NhbGx5LCBvciByZW1vdGVseSB2aWEgSVBNSSBMQU4sIGV2ZW4gd2hlbiB0aGUgT1Mgb3IgbWFpbiBDUFUgaXMgbm90XAorZnVuY3Rpb25hbC5cbiBcCitUaGUgaXBtaXV0aWwgdXRpbGl0aWVzIHdpbGwgdXNlIGFuIElQTUkgRHJpdmVyLCBlaXRoZXIgdGhlIEludGVsIElQTUkgcGFja2FnZSBcCisoaXBtaWRydnIsIC9kZXYvaW1iKSwgTW9udGFWaXN0YSBPcGVuSVBNSSAoL2Rldi9pcG1pMCksIHRoZSB2YWxpbnV4IElQTUkgXAorRHJpdmVyICgvZGV2L2lwbWlrY3MpLCBvciB0aGUgTEFORGVzayBsZGlwbWkgZGFlbW9uLiAgVGhlIGlwbWl1dGlsIHV0aWxpdGllcyBcCitjYW4gYWxzbyB1c2UgZGlyZWN0IHVzZXItc3BhY2UgSS9PcyBpbiBMaW51eCBvciBGcmVlQlNEIGlmIG5vIElQTUkgZHJpdmVyIFwKK2lzIGRldGVjdGVkLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2lwbWl1dGlsLnNvdXJjZWZvcmdlLm5ldCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjI2YTU5NzAzMDRkYWExZmNiODdmNzU3ZmI0MmI3OTUiCisKK0RFUEVORFMgKz0gIm9wZW5zc2wiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9pcG1pdXRpbC9pcG1pdXRpbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4X3N5c3RlbWRfcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjVmZWFmNmE4MjcyMDU3OTJlMDU3YmI0ZmY1YzRlODQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyZDdmNzI1MzUxMzFjNzgzMmJhNGJlMTNkYzMzYzgxNTEzZmMzZWU0M2ZlNzk3YjRiNTIwMTQ2MDBlY2VlNWUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID89ICJsYW5wbHVzIGdwbCIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQ9JHtkYXRhZGlyfS8ke0JQTn0sIC0tZW5hYmxlLXN5c3RlbWQ9bm8iCitQQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LCAtLWVuYWJsZS1zaGEyNTY9bm8sIG9wZW5zc2wtbmF0aXZlLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tsYW5wbHVzXSA9ICItLWVuYWJsZS1sYW5wbHVzLCAtLWVuYWJsZS1sYW5wbHVzPW5vLCBvcGVuc3NsLW5hdGl2ZSwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbGFuZGVza10gPSAiLS1lbmFibGUtbGFuZGVzaywgLS1lbmFibGUtbGFuZGVzaz1ubyIKK1BBQ0tBR0VDT05GSUdbc2Vuc29yc10gPSAiLS1lbmFibGUtbGlic2Vuc29ycywgLS1lbmFibGUtbGlic2Vuc29ycz1ubyIKKworI2J1aWxkIHdpdGggc29tZSBHUEwgY29kZQorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwgLS1lbmFibGUtZ3BsPW5vIgorI25vIEdQTCBvciBMYW5QbHVzIGxpYnMKK1BBQ0tBR0VDT05GSUdbc3RhbmRhbG9uZV0gPSAiLS1lbmFibGUtc3RhbmRhbG9uZSwgLS1lbmFibGUtc3RhbmRhbG9uZT1ubyIKKworQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9IgorTERGTEFHUyArPSAiLUwke1NUQUdJTkdfTElCRElSfSIKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44NikuKi1saW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvZmlsZXMvMDAwMS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9maWxlcy8wMDAxLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3ZTM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvZmlsZXMvMDAwMS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMmRkYzk3YjMwNzkyODE3ZDE2MmY1MWVjMzgxODM3NmFlZmJmMTg0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMyBNYXkgMjAxNyAwMjowNTozMyAtMDQwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmUgcHl0aG9uMiBzdXBwb3J0CisKK1dlIHVzZSBweXRob24zIHJhdGhlciB0aGFuIHB5dGhvbjIgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcHl0aG9uL01ha2VmaWxlLmFtIHwgNSAtLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9NYWtlZmlsZS5hbSBiL3NyYy9weXRob24vTWFrZWZpbGUuYW0KK2luZGV4IDU2N2QwZDcuLjhkOWY0NDYgMTAwNjQ0CistLS0gYS9zcmMvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9zcmMvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtMSw4ICsxLDMgQEAKKy1weWxpYmRpciA9ICQoc2hlbGwgcHl0aG9uIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgcHJpbnQoZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigxLDAscHJlZml4PScke2V4ZWNfcHJlZml4fScpKSIpCistCistcHlieXRlc2l6ZWRpciAgICAgPSAkKHB5bGliZGlyKS9ieXRlc2l6ZQorLWRpc3RfcHlieXRlc2l6ZV9EQVRBID0gYnl0ZXNpemUucHkgX19pbml0X18ucHkKKy0KKyBpZiBXSVRIX1BZVEhPTjMKKyBweTNsaWJkaXIgPSAkKHNoZWxsIHB5dGhvbjMgLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCxwcmVmaXg9JyR7ZXhlY19wcmVmaXh9JykpIikKKyBweTNieXRlc2l6ZWRpciAgICA9ICQocHkzbGliZGlyKS9ieXRlc2l6ZQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkwMzAyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvbGliYnl0ZXNpemVfMC4xMC5iYgpAQCAtMCwwICsxLDM0IEBACitERVNDUklQVElPTiA9ICJUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhIHRpbnkgbGlicmFyeSB0aGF0IHdvdWxkIFwKK2ZhY2lsaXRhdGUgdGhlIGNvbW1vbiBvcGVyYXRpb25zIHdpdGggc2l6ZXMgaW4gYnl0ZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplIgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiMzY5MTI3YzBlZGJiYTdkMWE0ZTJlMDI0ODYzNzVkZDlkMzc5NTI0ZiIKK1BWID0gIjAuMTArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYnl0ZXNpemU7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAorIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworREVQRU5EUyArPSAiIFwKKyAgICBsaWJwY3JlIFwKKyAgICBnbXAgXAorICAgIG1wZnIgXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnl0ZXNpemUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2RvY10gPSAiLS13aXRoLWd0ay1kb2MsIC0td2l0aG91dC1ndGstZG9jLCBndGstZG9jLW5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gInB5M2xpYmRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmN5dXNic2VyaWFsL2xpYmN5dXNic2VyaWFsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY3l1c2JzZXJpYWwvbGliY3l1c2JzZXJpYWxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YjVlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmN5dXNic2VyaWFsL2xpYmN5dXNic2VyaWFsX2dpdC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkVuYWJsZSB1c2Vyc3BhY2UgY29udHJvbCBvZiBDeXByZXNzIFVTQi1TZXJpYWwgYnJpZGdlIGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3lyb3phcC9saWJjeXVzYnNlcmlhbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2N5cm96YXAvbGliY3l1c2JzZXJpYWwvaXNzdWVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitERVBFTkRTID0gImxpYnVzYiB1ZGV2IgorCitQViA9ICIxLjAuMCtnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjY1NWUyZDU0NDE4M2QwOTRmMGUyZDExOWM3ZTBjNjIwNmEwZGRiM2YiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3lyb3phcC8ke0JQTn0uZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpLWRyaXZlcnMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpLWRyaXZlcnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTA5NTMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS1kcml2ZXJzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLSMgbGliZGJpLWRyaXZlcnMgT0UgYnVpbGQgZmlsZQotIyBDb3B5cmlnaHQgKEMpIDIwMDUsIEtvbmlua2xpamtlIFBoaWxpcHMgRWxlY3Ryb25pY3MgTlYuICBBbGwgUmlnaHRzIFJlc2VydmVkCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLURFU0NSSVBUSU9OID0gIkRhdGFiYXNlIERyaXZlcnMgZm9yIGxpYmRiaSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJkYmktZHJpdmVycy5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgotU0VDVElPTiA9ICJsaWJzIgotCi1QUk9WSURFUyA9ICJsaWJkYmQtc3FsaXRlIgotREVQRU5EUyA9ICJsaWJkYmkgc3FsaXRlIHNxbGl0ZTMgbXlzcWw1IHBvc3RncmVzcWwiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYmRiaS1kcml2ZXJzL2xpYmRiaS1kcml2ZXJzLSR7UFZ9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUEFDS0FHRVMgKz0gImxpYmRiZC1zcWxpdGUzIGxpYmRiZC1zcWxpdGUgbGliZGJkLXBnc3FsIGxpYmRiZC1teXNxbCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1kYmktaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNxbGl0ZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNxbGl0ZTMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wZ3NxbCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLW15c3FsIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3FsaXRlLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNxbGl0ZS1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUzLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNxbGl0ZTMtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbXlzcWwtaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbXlzcWwtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcGdzcWwtaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcGdzcWwtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG9jcyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L2RiZC8uZGVidWcvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiICR7bGliZGlyfS9kYmQvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiICR7bGliZGlyfS9kYmQvKi5hIgotCi1ERVNDUklQVElPTl9saWJkYmQtc3FsaXRlID0gIlNRTGl0ZSBkYXRhYmFzZSBkcml2ZXIgZm9yIGxpYmRiaSIKLUZJTEVTX2xpYmRiZC1zcWxpdGUgPSAiJHtsaWJkaXJ9L2RiZC9saWJkYmRzcWxpdGUuc28iCi0KLURFU0NSSVBUSU9OX2xpYmRiZC1zcWxpdGUzID0gICJTUUxpdGUzIGRhdGFiYXNlIGRyaXZlciBmb3IgbGliZGJpIgotRklMRVNfbGliZGJkLXNxbGl0ZTMgPSAiJHtsaWJkaXJ9L2RiZC9saWJkYmRzcWxpdGUzLnNvIgotCi1ERVNDUklQVElPTl9saWJkYmQtbXlzcWwgPSAiTXlTUUw0IGRhdGFiYXNlIGRyaXZlciBmb3IgbGliZGJpIgotRklMRVNfbGliZGJkLW15c3FsID0gIiR7bGliZGlyfS9kYmQvbGliZGJkbXlzcWwuc28iCi0KLURFU0NSSVBUSU9OX2xpYmRiZC1wc3FsID0gIlBvc3RncmVzIFNRTCBkYXRhYmFzZSBkcml2ZXIgZm9yIGxpYmRiaSIKLUZJTEVTX2xpYmRiZC1wZ3NxbCA9ICIke2xpYmRpcn0vZGJkL2xpYmRiZHBnc3FsLnNvIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmktZHJpdmVyc18wLjguMy0xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpLWRyaXZlcnNfMC44LjMtMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQyYzUwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmktZHJpdmVyc18wLjguMy0xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlICR7UE59LmluYwotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGU3OWIzMjMxNjJhNWE3NjUyYjY1YjYwOGVjYTZjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWI5OTQ0Mzk4Y2U3NjljMGRlZWI2NGQyZjczNTU1YzY3YmMyNWNjZDJhZGUxY2NmNTUyMjI2YzdiMmFjZjcyIgotCi0jIGxpYmRiaS1kcml2ZXJzLTAuOC4zLTEvZHJpdmVycy9teXNxbC9kYmRfbXlzcWwuYzoyMzI6NTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAnZGJkX2dvdG9fcm93JwotUE5CTEFDS0xJU1RbbGliZGJpLWRyaXZlcnNdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvbGliZXRwYW4tYXV0b3JlY29uZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9saWJldHBhbi1hdXRvcmVjb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDU5NjdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9saWJldHBhbi1hdXRvcmVjb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotSW5kZXg6IGxpYmV0cGFuLTAuNTcvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZXRwYW4tMC41Ny5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA4LTEwLTA4IDE5OjU0OjIwLjAwMDAwMDAwMCArMDAwMAotKysrIGxpYmV0cGFuLTAuNTcvY29uZmlndXJlLmFjCTIwMDgtMTEtMTEgMTY6MzQ6MzMuMDAwMDAwMDAwICswMDAwCi1AQCAtMTA2LDYgKzEwNiw3IEBACi0gCi0gIyBDaGVjayB0aGUgQyBjb21waWxlci4KLSBBQ19QUk9HX0NDCi0rQUNfUFJPR19DWFgKLSAKLSAjIENvbXBpbGVyIGZsYWdzLgotIEFDX0FSR19FTkFCTEUoZGVidWcsICAgWyAgLS1lbmFibGUtZGVidWcgICAgICAgICAgc2V0dXAgZmxhZ3MgKGdjYykgZm9yIGRlYnVnZ2luZyAoZGVmYXVsdD1ubyldLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L2xpYmV0cGFuLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvbGliZXRwYW4tbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM4ZjQ0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvbGliZXRwYW4tbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBsaWJldHBhbi0wLjU3L2NvbmZpZ3VyZS5hY34JMjAwOS0wOS0yMSAyMzozMTo0Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJldHBhbi0wLjU3L2NvbmZpZ3VyZS5hYwkyMDA5LTA5LTIxIDIzOjMxOjQyLjAwMDAwMDAwMCArMDIwMAotQEAgLTQ1Nyw3ICs0NTcsNyBAQAotICAgICAgIExERkxBR1M9Ii0kZmxhZyAkTERGTEFHUyIKLSAgICAgICBBQ19UUllfTElOSyhbXSwgW3B0aHJlYWRfY3JlYXRlKCk7XSwgCi0gICAgICAgICAgICAgICAgICAgICAgIFtwdGhmbGFnPXllczsgY2hlY2twdGhyZWFkPW5vXSwgCi0tICAgICAgICAgICAgICAgICAgICAgIFtwdGhmbGFnPW5vOyBMREZMQUdTPSIkT0xEQ0ZMQUdTIl0pCi0rICAgICAgICAgICAgICAgICAgICAgIFtwdGhmbGFnPW5vOyBMREZMQUdTPSIkT0xERkxBR1MiXSkKLSAgICAgICBBQ19NU0dfUkVTVUxUKCRwdGhmbGFnKQotICAgICBmaQotICAgZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L3NlcGJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L3NlcGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjAxNjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9zZXBidWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUluZGV4OiBsaWJldHBhbi0wLjU3L3J1bGVzLm1rCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZXRwYW4tMC41Ny5vcmlnL3J1bGVzLm1rCi0rKysgbGliZXRwYW4tMC41Ny9ydWxlcy5tawotQEAgLTEzNCw5ICsxMzQsOSBAQCBwcmVwYXJlLWFtOiBwcmVwYXJlLWxvY2FsCi0gCSAgICAgICAgIGlmIHRlc3QgLWUgLi4vLi4vJChzdWJkaXIpLyQke2hkcn07IHRoZW4gXAotIAkgICAgICAgICAgIGVjaG8gIiQoTE5fUykgLWYgLi4vLi4vJChzdWJkaXIpLyQke2hkcn0gLiI7IFwKLSAJICAgICAgICAgICAkKExOX1MpIC1mIC4uLy4uLyQoc3ViZGlyKS8kJHtoZHJ9IC47IFwKLSAgICAgICAgICAgICAgZWxzZSBcCi0tCSAgICAgICAgICAgZWNobyAiJChMTl9TKSAtZiAuLi8uLi8kKHN1YmRpcikvJChzcmNkaXIpLyQke2hkcn0gLiI7IFwKLS0JICAgICAgICAgICAkKExOX1MpIC1mIC4uLy4uLyQoc3ViZGlyKS8kKHNyY2RpcikvJCR7aGRyfSAuOyBcCi0rCSAgICAgICAgICAgZWNobyAiJChMTl9TKSAtZiAkKHNyY2RpcikvJCR7aGRyfSAuIjsgXAotKwkgICAgICAgICAgICQoTE5fUykgLWYgJChzcmNkaXIpLyQke2hkcn0gLjsgXAotICAgICAgICAgICAgICBmaTsgXAotICAgICAgICAgICAgZmk7IFwKLSAJICAgICBkb25lOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuXzAuNTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuXzAuNTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYWRmMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbl8wLjU3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGliZXRwYW4gaXMgYSBsaWJyYXJ5IGZvciBjb21tdW5pY2F0aW5nIHdpdGggbWFpbCBhbmQgbmV3cyBzZXJ2ZXJzLiBcCi1JdCBzdXBwb3J0cyB0aGUgcHJvdG9jb2xzIFNNVFAsIFBPUDMsIElNQVAgYW5kIE5OVFAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ldHBhbi5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImdudXRscyBsaWJsb2NrZmlsZSBjdXJsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWYxOGViZTdlNDUyNzA4YzI2ZjgzOTU0ZjgxMDYyYmE3IgotCi1QUiA9ICJyMSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjU4MjMvCi1QTkJMQUNLTElTVFtsaWJldHBhbl0gPz0gIk5vdCBjb21wYXRpYmxlIHdpdGggZ251dGxzIHZlcnNpb24gMy40IGN1cnJlbnRseSBpbiBvZS1jb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJldHBhbi9saWJldHBhbi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliZXRwYW4tYXV0b3JlY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJldHBhbi1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGJ1aWxkLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1zYXNsIC0td2l0aC1nbnV0bHMgLS1kaXNhYmxlLWRiIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLUZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0gJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZGlyfS9wa2djb25maWciCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjhjZThjNmMwNzFlODE4ODRhNDc1YjEyYjdmOWE5Y2MwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmM2ZkYTVjOWUyOTYxZDFhNjI5OGRjOGFhZGFlMzIxNDkzZDM3NzI3ZDhkYjQ1YmMyZThkNThmMjA1NDcwMTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmZ0ZGkvbGliZnRkaV8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmZ0ZGkvbGliZnRkaV8xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OWU1YTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGliZnRkaSBpcyBhIGxpYnJhcnkgdG8gdGFsayB0byBGVERJIGNoaXBzLlwKLUZUMjMyQk0vMjQ1Qk0sIEZUMjIzMkMvRCBhbmQgRlQyMzIvMjQ1UiB1c2luZyBsaWJ1c2IsXAotaW5jbHVkaW5nIHRoZSBwb3B1bGFyIGJpdGJhbmcgbW9kZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmludHJhMm5ldC5jb20vZW4vZGV2ZWxvcGVyL2xpYmZ0ZGkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotIgotCi1ERVBFTkRTID0gImxpYnVzYjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci8ke0JQTn0vZG93bmxvYWQvJHtCUE59MS0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTU2Y2RmNDBjZWNlOWY4YTNjZTE1ODJkYjU5YTUwMmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWE4Yzk1Yzk0YmZiY2YzNjU4NGEwYTU4YTZlMjAwM2Q5YjEzMzIxM2Q5MjAyYjc2YWVjNzYzMDJmZmFhODFmNCIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfTEtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2NwcC13cmFwcGVyXSA9ICItREZURElfQlVJTERfQ1BQPW9uIC1ERlRESVBQPW9uLC1ERlRESV9CVUlMRF9DUFA9b2ZmIC1ERlRESVBQPW9mZixib29zdCIKLQotaW5oZXJpdCBjbWFrZSBiaW5jb25maWcgcGtnY29uZmlnCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZWExNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmZ0ZGkvbGliZnRkaV8xLjQuYmIKQEAgLTAsMCArMSwzMSBAQAorREVTQ1JJUFRJT04gPSAibGliZnRkaSBpcyBhIGxpYnJhcnkgdG8gdGFsayB0byBGVERJIGNoaXBzLlwKK0ZUMjMyQk0vMjQ1Qk0sIEZUMjIzMkMvRCBhbmQgRlQyMzIvMjQ1UiB1c2luZyBsaWJ1c2IsXAoraW5jbHVkaW5nIHRoZSBwb3B1bGFyIGJpdGJhbmcgbW9kZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmludHJhMm5ldC5jb20vZW4vZGV2ZWxvcGVyL2xpYmZ0ZGkvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorIgorCitERVBFTkRTID0gImxpYnVzYjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci8ke0JQTn0vZG93bmxvYWQvJHtCUE59MS0ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGMwOWZiMmJiMTlhNTdjODM5ZmE2ODQ1YzZjNzgwYTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWMzNmZiNDkwODBmODM0NjkwYzI0MDA4MzI4YTVlZjQyZDNjZjU4NGVmNDA2MGYzYTM1YWE0NjgxY2IzMWI3NCIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfTEtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2NwcC13cmFwcGVyXSA9ICItREZURElfQlVJTERfQ1BQPW9uIC1ERlRESVBQPW9uLC1ERlRESV9CVUlMRF9DUFA9b2ZmIC1ERlRESVBQPW9mZixib29zdCIKKworaW5oZXJpdCBjbWFrZSBiaW5jb25maWcgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUwNjA1NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJDIGxpYnJhcnkgYW5kIHRvb2xzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBsaW51eCBHUElPIGNoYXJhY3RlciBkZXZpY2UiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmNhY2VkMGIyNWRmZWZkNGM2MDFkOTJiZDE1MTE2ZGUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbGlicy9saWJncGlvZC8ke0JQfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZjlkODU1MzUyYjFhNTI3MmNmNmYxYzJlMjA2ODlkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGZkNmFlYjU0NGU4YjdiYWY0ODRhMDVjOWFlMGU2NzAyMmMxMDkzNjJhNDFkODcwMDUzOTMwNDZiNmJlYWNmIgorCitQViA9ICIwLjMuMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKKyMgZW5hYmxlIHRvb2xzCitQQUNLQUdFQ09ORklHID89ICJ0b29scyIKKworUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGttb2QgdWRldiIKK1BBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scywiCisKK1BBQ0tBR0VTICs9ICIgJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1qcXVlcnlfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLWpxdWVyeV8xLjcuMi5iYgppbmRleCBlYzhmMzYwLi43ZjQyNWNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLWpxdWVyeV8xLjcuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLWpxdWVyeV8xLjcuMi5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBkeW5hbWljIHdlYiBhcHBsaWNhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2pxdWVyeS5jb20vIgogTElDRU5TRSA9ICJNSVQgfCBCU0QgfCBHUEwtMiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Vzci9zaGFyZS9kb2MvbGlianMtanF1ZXJ5L2NvcHlyaWdodDttZDU9NWQxZWM2Zjk1ZTBhOTFkMzhlMmY3MWRlOTNkZGIwMGUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlianMvbGlianMtc2l6emxlXzEuMTAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLXNpenpsZV8xLjEwLjE4LmJiCmluZGV4IDkyYWIzMWYuLjQ5MjhiNmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlianMvbGlianMtc2l6emxlXzEuMTAuMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1zaXp6bGVfMS4xMC4xOC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUHVyZS1KYXZhU2NyaXB0IENTUyBzZWxlY3RvciBlbmdpbmUiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS93aWtpIgogTElDRU5TRSA9ICJHUEwtMi4wICYgTUlUICYgQUZMLTIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkL0NoZWNrLXJlc3BvbnNlLWV4aXN0ZW5jZS1vbi11cGdyYWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGQvQ2hlY2stcmVzcG9uc2UtZXhpc3RlbmNlLW9uLXVwZ3JhZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMmJiZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGQvQ2hlY2stcmVzcG9uc2UtZXhpc3RlbmNlLW9uLXVwZ3JhZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tOiBqb3NlLmJvbGxvQGlvdC5iemgKLURhdGU6IFRodSwgNCBNYXkgMjAxNyAyMTo0NzozOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayByZXNwb25zZSBleGlzdGVuY2Ugb24gdXBncmFkZQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1XaGVuIGEgY29ubmVjdGlvbiB1cGdyYWRlIGlzIHJlcXVlc3RlZCBhbmQgd2hlbiB0aGUKLXJlcXVlc3Qgc2VudCBhbiBlcnJvciByZXBseSwgdGhlIHJlc3BvbnNlIGlzIG1vc3Qgb2YKLXRoZSB0aW1lIGFscmVhZHkgc2VudCB3aGVuIHRoZSB0ZXN0IG9uCi1jb25uZWN0aW9uLT5yZXNwb25zZS0+dXBncmFkZV9oYW5kbGVyIGlzIG1hZGUsIGxlYWRpbmcKLXRvIGRlcmVmZXJlbmNpbmcgTlVMTC4KLQotVHdvIHBvc3NpYmlsaXRpZXMgZXhpc3Q6Ci0KLSAgTlVMTCA9PSBjb25uZWN0aW9uLT5yZXNwb25zZSB8fCBOVUxMID09IGNvbm5lY3Rpb24tPnJlc3BvbnNlLT51cGdyYWRlX2hhbmRsZXIKLQotb3IKLQotICBOVUxMICE9IGNvbm5lY3Rpb24tPnJlc3BvbnNlICYmIE5VTEwgPT0gY29ubmVjdGlvbi0+cmVzcG9uc2UtPnVwZ3JhZGVfaGFuZGxlcgotCi1UaGUgZmlyc3QgaXMgcHJlZmVyZWQgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSBzYWZlciB0byBjbG9zZSB0aGUgY29ubmVjdGlvbgotaW4gdGhhdCBjYXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dudW5ldC5vcmcvZ2l0L2xpYm1pY3JvaHR0cGQuZ2l0L2NvbW1pdC8/aWQ9YjQyMTZjNjBmZGI1YjQ4ZjZjZmVjNDE2MzAxZmM2M2ExMTY3ZTZjZF0KLQotQ2hhbmdlLUlkOiBJZTZlN2ZjMTY1ZjdmZTM2MzVhZGUwOTUyYmIzNGEwYjkzN2QzODcxNgotU2lnbmVkLW9mZi1ieTogSm9zw6kgQm9sbG8gPGpvYm9sQG5vbmFkZXYubmV0PgotU2lnbmVkLW9mZi1ieTogSm9zw6kgQm9sbG8gPGpvc2UuYm9sbG9AaW90LmJ6aD4KLS0tLQotIHNyYy9taWNyb2h0dHBkL2Nvbm5lY3Rpb24uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9taWNyb2h0dHBkL2Nvbm5lY3Rpb24uYyBiL3NyYy9taWNyb2h0dHBkL2Nvbm5lY3Rpb24uYwotaW5kZXggYTQ5NTUyNC4uZDM5YzExMCAxMDA2NDQKLS0tLSBhL3NyYy9taWNyb2h0dHBkL2Nvbm5lY3Rpb24uYwotKysrIGIvc3JjL21pY3JvaHR0cGQvY29ubmVjdGlvbi5jCi1AQCAtODgyLDcgKzg4Miw3IEBAIGtlZXBhbGl2ZV9wb3NzaWJsZSAoc3RydWN0IE1IRF9Db25uZWN0aW9uICpjb25uZWN0aW9uKQotICNpZmRlZiBVUEdSQURFX1NVUFBPUlQKLSAgICAgaWYgKCAoTUhEX3N0cl9lcXVhbF9jYXNlbGVzc18gKGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cGdyYWRlIikpICYmCi0tICAgICAgICAgKE5VTEwgPT0gY29ubmVjdGlvbi0+cmVzcG9uc2UtPnVwZ3JhZGVfaGFuZGxlcikgKQotKyAgICAgICAgIChOVUxMID09IGNvbm5lY3Rpb24tPnJlc3BvbnNlIHx8IE5VTEwgPT0gY29ubmVjdGlvbi0+cmVzcG9uc2UtPnVwZ3JhZGVfaGFuZGxlcikgKQotICAgICAgIHJldHVybiBNSERfTk87Ci0gI2VuZGlmIC8qIFVQR1JBREVfU1VQUE9SVCAqLwotIAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjI0NjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjUzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBDIGxpYnJhcnkgdGhhdCBpcyBzdXBwb3NlZCB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIGFuIEhUVFAgc2VydmVyIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJtaWNyb2h0dHBkLyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTMzMTE4NmY0ZjgwZGI3ZGEwZTcyNGJkZDY1NTRlZTUiCi1TRUNUSU9OID0gIm5ldCIKLURFUEVORFMgPSAibGliZ2NyeXB0IGdudXRscyBmaWxlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvbGlibWljcm9odHRwZC8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjVhNDI1ZTk5M2EwZjUyOTVhZWNiNWQ2NjA3YTFjMjQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliMTVlYzJkMzgxZjQ0OTM2MzIzYWRmZDRmOTg5ZmEzNWFkZDUxN2NjY2JiZmE1ODE4OTZiMDJhMzkzYzJjYzQiCi0KLUZJTEVTRVhUUkFQQVRIU19hcHBlbmQgOj0gIjoke1RISVNESVJ9LyR7UE59IgotU1JDX1VSSSArPSAiIGZpbGU6Ly9DaGVjay1yZXNwb25zZS1leGlzdGVuY2Utb24tdXBncmFkZS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIGdldHRleHQKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgotCi1QQUNLQUdFQ09ORklHID89ICJjdXJsIgotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBzZWQgLWkgczotTCR7U1RBR0lOR19MSUJESVJ9OjpnIGxpYm1pY3JvaHR0cGQucGMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTM5OWE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgQyBsaWJyYXJ5IHRoYXQgaXMgc3VwcG9zZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHJ1biBhbiBIVFRQIHNlcnZlciBhcyBwYXJ0IG9mIGFub3RoZXIgYXBwbGljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlibWljcm9odHRwZC8iCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkzMzExODZmNGY4MGRiN2RhMGU3MjRiZGQ2NTU0ZWU1IgorU0VDVElPTiA9ICJuZXQiCitERVBFTkRTID0gImxpYmdjcnlwdCBnbnV0bHMgZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2xpYm1pY3JvaHR0cGQvJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzIwZjg0YThiOWNmNjkyZGQ1MGI1NThiMzU3MWEzYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzFjYWI4ZGM5ZjI1ODhiZDMwNzZhMjhmNzdhN2Y4ZGU5NTYwY2JmMmQ4MGU1M2Y5YTg2OTZhZGE4MGVkMGY4IgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdGF0aWMgLS13aXRoLWdudXRscz0ke1NUQUdJTkdfTElCRElSfS8uLi8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN1cmwiCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlLCwiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwiCisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworICAgIHNlZCAtaSBzOi1MJHtTVEFHSU5HX0xJQkRJUn06OmcgbGlibWljcm9odHRwZC5wYworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJuaWgvbGlibmloXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJuaWgvbGlibmloXzEuMC4zLmJiCmluZGV4IDAyZmU4MDUuLjNlMzVmNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibmloL2xpYm5paF8xLjAuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm5paC9saWJuaWhfMS4wLjMuYmIKQEAgLTEsNiArMSw3IEBACiAjIENvcHlyaWdodCAoYykgMjAxMyAgTEcgRWxlY3Ryb25pY3MsIEluYy4KIAogU1VNTUFSWSA9ICJsaWJuaWggbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9saWJuaWgiCiBERVNDUklQVElPTiA9ICJsaWJuaWggaXMgYSBzbWFsbCBsaWJyYXJ5IGZvciBDIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IFwKICAgICBjb250YWluaW5nIGZ1bmN0aW9ucyB0aGF0LCBkZXNwaXRlIGl0cyBuYW1lLCBhcmUgbm90IGltcGxlbWVudGVkIFwKICAgICBlbHNld2hlcmUgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgc2V0LiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCmluZGV4IGMzMWY0ODMuLjc0ZTFlZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBIHRpbnkgQyBzdXBwb3J0IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL215LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9saWJvbCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicDExL2xpYnAxMV8wLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicDExL2xpYnAxMV8wLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4MDA2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHVzaW5nIFBLQ1MiCi1ERVNDUklQVElPTiA9ICJcCi1MaWJwMTEgaXMgYSBsaWJyYXJ5IGltcGxlbWVudGluZyBhIHNtYWxsIGxheWVyIG9uIHRvcCBvZiBQS0NTIFwKLW1ha2UgdXNpbmcgUEtDUyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL2xpYnAxMSIKLVNFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkiCi1ERVBFTkRTID0gImxpYnRvb2wgb3BlbnNzbCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy9saWJwMTEuZ2l0IgotU1JDUkVWID0gIjIyZGU3OTMzNDBhYjczY2FmYzkyZjgyMzhhZmI1MWEwNmQ4NDExYzMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIEN1cnJlbnRseSwgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGFyZSBpbmNvcnJlY3RseSBkZWZpbmVkIHdoaWNoIGNhdXNlcyBidWlsZCBlcnJvcnMKLSMgVGhlIG51bWJlciBvZiBqb2JzIGlzIGhpZ2gKLSMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuU0MvbGlicDExL2lzc3Vlcy85NAotUEFSQUxMRUxfTUFLRSA9ICIiCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9LyoubGEKLSAgICBybSAtcmYgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wa2NzMTEke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2NzMTEke1NPTElCU0RFVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ5YzMzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicDExL2xpYnAxMV8wLjQuNy5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHVzaW5nIFBLQ1MiCitERVNDUklQVElPTiA9ICJcCitMaWJwMTEgaXMgYSBsaWJyYXJ5IGltcGxlbWVudGluZyBhIHNtYWxsIGxheWVyIG9uIHRvcCBvZiBQS0NTIFwKK21ha2UgdXNpbmcgUEtDUyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL2xpYnAxMSIKK1NFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgorTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkiCitERVBFTkRTID0gImxpYnRvb2wgb3BlbnNzbCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy9saWJwMTEuZ2l0IgorU1JDUkVWID0gIjY0NTY5YTM5MTg5N2JkMjljNTA2MGIxOWZhNDYxM2U2MTllNTkyNzciCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9LyoubGEKKyAgICBybSAtcmYgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9lbmdpbmVzL3BrY3MxMS5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2VuZ2luZXMvbGlicGtjczExJHtTT0xJQlNERVZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaDIvbGlic3NoMl8xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYyZGFiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaDIvbGlic3NoMl8xLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjbGllbnQtc2lkZSBDIGxpYnJhcnkgaW1wbGVtZW50aW5nIHRoZSBTU0gyIHByb3RvY29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzc2gyLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiemxpYiIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNWNmMzRmYzBhY2I0NGIwODJlZjUwZWY1ZTQzNTRjYSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNzaDIub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMDE2NjJhMjEwZTk0Y2NjZjJmNzYwOTRkYjdkYWM1YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNDU2MWZkNDNhNTA1MzlhOGMyY2ViMzc4NDE2OTFiYWYwM2VjYjdkYWYwNDM3NjZkYTFiMTEyZTQyODBkNTg0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICJcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJ6IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnotcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgb25seSBvbmUgb2Ygb3BlbnNzbCBhbmQgZ2NyeXB0IGNvdWxkIGJlIHNldAotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsIC0td2l0aC1saWJzc2wtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9LC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0sLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaDIvbGlic3NoMl8xLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGJmYjhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS44LjAuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIGNsaWVudC1zaWRlIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSDIgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnNzaDIub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJ6bGliIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1Y2YzNGZjMGFjYjQ0YjA4MmVmNTBlZjVlNDM1NGNhIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic3NoMi5vcmcvZG93bmxvYWQvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjNkMTE0N2NhZTY2ZTI5NTllYTU0NDFiMTgzZGUxYjFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5ZjM0ZTJmNjgzNWY0Yjk5MmNhZmU4NjI1MDczYTg4ZTVhMjhiYTc4ZjgzZTgwOTk2MTBhN2IzYWY0Njc2ZDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIlwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnogXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliei1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICIKKworIyBvbmx5IG9uZSBvZiBvcGVuc3NsIGFuZCBnY3J5cHQgY291bGQgYmUgc2V0CitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wgLS13aXRoLWxpYnNzbC1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0sLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtbGliZ2NyeXB0IC0td2l0aC1saWJnY3J5cHQtcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwtLXdpdGhvdXQtbGliZ2NyeXB0LGxpYmdjcnlwdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy8wMDAyLURvLW5vdC1zdHJpcC1saWJ0YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy8wMDAyLURvLW5vdC1zdHJpcC1saWJ0YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFjMGQyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGFyL2ZpbGVzLzAwMDItRG8tbm90LXN0cmlwLWxpYnRhci5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGU5ZmVlNjg5NDMwYWY3NzkxYjkzMmExZWUzYzJjYzEwM2NjZjI5MGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVmYW4gRWljaGVuYmVyZ2VyIDxzdGVmYW4uZWljaGVuYmVyZ2VyQG5ldG1vZHVsZS5jb20+CitEYXRlOiBXZWQsIDIgTm92IDIwMTYgMDU6NDM6NDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHN0cmlwIGxpYnRhci4KKworLS0tCisgbGlidGFyL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGlidGFyL01ha2VmaWxlLmluIGIvbGlidGFyL01ha2VmaWxlLmluCitpbmRleCA3YzZmMWJjLi44MGJiOGQ5IDEwMDY0NAorLS0tIGEvbGlidGFyL01ha2VmaWxlLmluCisrKysgYi9saWJ0YXIvTWFrZWZpbGUuaW4KK0BAIC0yMCw3ICsyMCw3IEBAIFNIRUxMICAgICAgICAgICA9IEBTSEVMTEAKKyAKKyAjIyMgSW5zdGFsbGF0aW9uIHByb2dyYW1zIGFuZCBmbGFncworIElOU1RBTEwJCT0gQElOU1RBTExACistSU5TVEFMTF9QUk9HUkFNCT0gQElOU1RBTExfUFJPR1JBTUAgLXMKKytJTlNUQUxMX1BST0dSQU0JPSBASU5TVEFMTF9QUk9HUkFNQAorIElOU1RBTExfREFUQQk9IEBJTlNUQUxMX0RBVEFACisgTE5fUwkJPSBATE5fU0AKKyBNS0RJUgkJPSBATUtESVJACistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGFyL2ZpbGVzL2ZpeF9saWJ0b29sX3N5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy9maXhfbGlidG9vbF9zeXNyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3OGE5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy9maXhfbGlidG9vbF9zeXNyb290LnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0NjIzMTAwLi4xYzZiNDNkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMyw2ICsxMyw3IEBAIEFDX0NPTkZJR19NQUNST19ESVIoW2F1dG9jb25mXSkKKyBBTV9JTklUX0FVVE9NQUtFKFtkaXN0LWJ6aXAyXSkKKyBFTkNBUF9QS0coW10sIFtwb3N0aW5zdGFsbC1lbmNhcF0pCisgCisrTFRfSU5JVAorIAorIGRubCAjIyMgTG9hZCBzdWJkaXJlY3RvcnkgbW9kdWxlcy4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIFBTR19NT0RVTEUoW2NvbXBhdF0pCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGFyL2xpYnRhcl8xLjIuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9saWJ0YXJfMS4yLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNzEwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9saWJ0YXJfMS4yLjIwLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAibGlidGFyLCB0YXIgbWFuaXB1bGF0aW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJ0YXIgaXMgYSBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgUE9TSVggdGFyIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mZWVwLm5ldC9saWJ0YXIiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9NjFjYmFjNjcxOWFlNjgyY2U2Y2Q0NWI1YzExZTIxYWYiCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYnQvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbGlidG9vbF9zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXN0cmlwLWxpYnRhci5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjZjZWQ5NWFiM2E0YjMzZmJmZTJkZmIyMzFkMTU2Y2RiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwZjI0Yzg1N2E3ZWYxY2IwOTJlNjUwODc1OGI4NmQwNmYxMTg4NTA4Zjg5N2YzZTZiNDBjNTczZTg4NzkxMDkiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitQQUNLQUdFQ09ORklHID8/PSAiemxpYiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS1pbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3ItZmRfc2V0LWRlZmluaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRhMTdlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC1kZWZpbml0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMGFiNjlkYzE4YTIwNTdmZjViZjQxYWJjZGYyYjk4M2I3MmQ1YTkwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE1OjM0OjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBpbmNsdWRlIHN5cy9zZWxlY3QuaCBmb3IgZmRfc2V0IGRlZmluaXRpb24KKworRml4ZXMKK3RlYW1ubC5jOjE2MDoyOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ2ZkX3NldCc7IGRpZCB5b3UgbWVhbiAnZnBvc190Jz8KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHV0aWxzL3RlYW1ubC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS91dGlscy90ZWFtbmwuYyBiL3V0aWxzL3RlYW1ubC5jCitpbmRleCBlOGRlN2UyLi4yNTEyOWU4IDEwMDY0NAorLS0tIGEvdXRpbHMvdGVhbW5sLmMKKysrKyBiL3V0aWxzL3RlYW1ubC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxnZXRvcHQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL3NpZ25hbGZkLmg+CisrI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDx0ZWFtLmg+CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDItdGVhbWQtUmUtYWRqdXN0LWluY2x1ZGUtaGVhZGVyLW9yZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYWJmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGE1Yjk0NWNiM2M2MmExOGRjZDcwNDdmNjI3MDdjMDkwNzZjNGU0OGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxNTozNTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gdGVhbWQ6IFJlLWFkanVzdCBpbmNsdWRlIGhlYWRlciBvcmRlcgorCitTbyBpdCBnZXRzIHRoZSBsaWJyYXJ5IGRlZmluaXRpb24gYmVmb3JlIGtlcm5lbCBkZWZpbml0aW9uCisKK3Vzci9pbmNsdWRlL25lCit0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJworIHN0cnVjdCBldGhoZHIgeworICAgICAgICBefn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRlYW1kL3RlYW1kX3J1bm5lcl9sYWNwLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZWFtZC90ZWFtZF9ydW5uZXJfbGFjcC5jIGIvdGVhbWQvdGVhbWRfcnVubmVyX2xhY3AuYworaW5kZXggOWM3N2ZhZS4uODgwMDg1NCAxMDA2NDQKKy0tLSBhL3RlYW1kL3RlYW1kX3J1bm5lcl9sYWNwLmMKKysrKyBiL3RlYW1kL3RlYW1kX3J1bm5lcl9sYWNwLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorQEAgLTMwLDcgKzMxLDYgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8dGVhbS5oPgorICNpbmNsdWRlIDxwcml2YXRlL21pc2MuaD4KKy0jaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisgCisgI2luY2x1ZGUgInRlYW1kLmgiCisgI2luY2x1ZGUgInRlYW1kX2NvbmZpZy5oIgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4yNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIyMjcwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBjb250cm9sbGluZyB0ZWFtIG5ldHdvcmsgZGV2aWNlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJ0ZWFtLm9yZy8iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitERVBFTkRTID0gImxpYm5sIGxpYmRhZW1vbiBqYW5zc29uIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vanBpcmtvL2xpYnRlYW0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3ItZmRfc2V0LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi10ZWFtZC1SZS1hZGp1c3QtaW5jbHVkZS1oZWFkZXItb3JkZXIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiOTFhOTI4YTU2YTUwMWRhYWM1Y2U4YjNjMTZiZDk5NDM2NjFmMWQxNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU2NTExNGQ3MGM0MWJmZjYwOTNkOGU1N2JlMjg0ZThhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2NTI4NjM3OTE0MWRiMTQxYmVhMzM0MjRlYzA1MDdiYjBmODI3YTBiZjAzZDljNjUwMDRiYjU5M2UzZDU1NDUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlidGVhbSR7U09MSUJTfSBcCisiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1kY3RsICR7UE59LXV0aWxzIgorRklMRVNfJHtQTn0tZGN0bCA9ICIke2xpYmRpcn0vbGlidGVhbWRjdGwke1NPTElCU30gXAorIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2JvbmQydGVhbSBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbWQgXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kY3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtbmwgXAorIgorCitSREVQRU5EU18ke1BOfS11dGlscyA9ICJiYXNoIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzQuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl80LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E2NjU5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzQuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUaW55WE1MLTIgaXMgYSBzaW1wbGUsIHNtYWxsLCBlZmZpY2llbnQsIEMrKyBYTUwgcGFyc2VyIHRoYXQgY2FuIGJlIGVhc2lseSBpbnRlZ3JhdGluZyBpbnRvIG90aGVyIHByb2dyYW1zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncmlubmluZ2xpemFyZC5jb20vdGlueXhtbDIvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGlueXhtbDIuY3BwO2VuZGxpbmU9MjI7bWQ1PWMxOTIyMWRiZDhhNjZhZDMwOTA0NjJhZjRjNWRlNWU3IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGVldGhvbWFzb24vdGlueXhtbDIuZ2l0IgotCi1TUkNSRVYgPSAiNzRkNDRhY2IxNzZmODUxMGFiZjI4ZWUwYTcwOTYxZWIyNjYzMTk4OCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGlueXhtbDIvbGlidGlueXhtbDJfNS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzUuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNWFiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzUuMC4xLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiVGlueVhNTC0yIGlzIGEgc2ltcGxlLCBzbWFsbCwgZWZmaWNpZW50LCBDKysgWE1MIHBhcnNlciB0aGF0IGNhbiBiZSBlYXNpbHkgaW50ZWdyYXRpbmcgaW50byBvdGhlciBwcm9ncmFtcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3Jpbm5pbmdsaXphcmQuY29tL3Rpbnl4bWwyLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rpbnl4bWwyLmNwcDtlbmRsaW5lPTIyO21kNT1jMTkyMjFkYmQ4YTY2YWQzMDkwNDYyYWY0YzVkZTVlNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xlZXRob21hc29uL3Rpbnl4bWwyLmdpdCIKKworU1JDUkVWID0gIjM3YmMzYWNhNDI5ZjAxNjRhZGY2OGMyMzQ0NDU0MGI0YTI0YjU3NzgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy8wMDAxLXByb2ctRG8tbm90LWxpbWl0LXN5cy1pby5oLWhlYWRlci1pbmNsdWRlLXRvLWp1c3QtZ2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzODc4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCkBAIC0wLDAgKzEsODggQEAKK0Zyb20gNzI3NTI0NDUzZjExNWRkYzA1MTA5ZTliYmIzZDBlNjBhN2RiOTE4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDE1OjA1OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHByb2c6IERvIG5vdCBsaW1pdCBzeXMvaW8uaCBoZWFkZXIgaW5jbHVkZSB0byBqdXN0IGdsaWJjCisKK211c2wgcHJvdmlkZXMgaXQgdG9vLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcHJvZy9kdW1wL2lzYWR1bXAuYyB8IDYgLS0tLS0tCisgcHJvZy9kdW1wL2lzYXNldC5jICB8IDYgLS0tLS0tCisgcHJvZy9kdW1wL3N1cGVyaW8uYyB8IDUgLS0tLS0KKyBwcm9nL2R1bXAvdXRpbC5jICAgIHwgNSAtLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMjIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcm9nL2R1bXAvaXNhZHVtcC5jIGIvcHJvZy9kdW1wL2lzYWR1bXAuYworaW5kZXggZTBlNmYwMC4uODc5NDUzNyAxMDA2NDQKKy0tLSBhL3Byb2cvZHVtcC9pc2FkdW1wLmMKKysrKyBiL3Byb2cvZHVtcC9pc2FkdW1wLmMKK0BAIC0zNiwxMyArMzYsNyBAQAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInN1cGVyaW8uaCIKKyAKKy0KKy0vKiBUbyBrZWVwIGdsaWJjMiBoYXBweSAqLworLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDAKKyAjaW5jbHVkZSA8c3lzL2lvLmg+CistI2Vsc2UKKy0jaW5jbHVkZSA8YXNtL2lvLmg+CistI2VuZGlmCisgCisgI2lmZGVmIF9fcG93ZXJwY19fCisgdW5zaWduZWQgbG9uZyBpc2FfaW9fYmFzZSA9IDA7IC8qIFhYWCBmb3Igbm93ICovCitkaWZmIC0tZ2l0IGEvcHJvZy9kdW1wL2lzYXNldC5jIGIvcHJvZy9kdW1wL2lzYXNldC5jCitpbmRleCBlNzQzNzU1Li44NWE0ZjY0IDEwMDY0NAorLS0tIGEvcHJvZy9kdW1wL2lzYXNldC5jCisrKysgYi9wcm9nL2R1bXAvaXNhc2V0LmMKK0BAIC0zMiwxMyArMzIsNyBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSAidXRpbC5oIgorIAorLQorLS8qIFRvIGtlZXAgZ2xpYmMyIGhhcHB5ICovCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiBfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMAorICNpbmNsdWRlIDxzeXMvaW8uaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxhc20vaW8uaD4KKy0jZW5kaWYKKyAKKyAjaWZkZWYgX19wb3dlcnBjX18KKyB1bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlID0gMDsgLyogWFhYIGZvciBub3cgKi8KK2RpZmYgLS1naXQgYS9wcm9nL2R1bXAvc3VwZXJpby5jIGIvcHJvZy9kdW1wL3N1cGVyaW8uYworaW5kZXggNjRlZjI3Yi4uOTA2ZmU1NSAxMDA2NDQKKy0tLSBhL3Byb2cvZHVtcC9zdXBlcmlvLmMKKysrKyBiL3Byb2cvZHVtcC9zdXBlcmlvLmMKK0BAIC0yMCwxMiArMjAsNyBAQAorICovCisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDAKKyAjaW5jbHVkZSA8c3lzL2lvLmg+CistI2Vsc2UKKy0jaW5jbHVkZSA8YXNtL2lvLmg+CistI2VuZGlmCisgCisgI2luY2x1ZGUgInN1cGVyaW8uaCIKKyAKK2RpZmYgLS1naXQgYS9wcm9nL2R1bXAvdXRpbC5jIGIvcHJvZy9kdW1wL3V0aWwuYworaW5kZXggODc0YzFiOS4uMTk3ZmE2NCAxMDA2NDQKKy0tLSBhL3Byb2cvZHVtcC91dGlsLmMKKysrKyBiL3Byb2cvZHVtcC91dGlsLmMKK0BAIC0xMSwxMiArMTEsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlICJ1dGlsLmgiCisgCistLyogVG8ga2VlcCBnbGliYzIgaGFwcHkgKi8KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAwCisgI2luY2x1ZGUgPHN5cy9pby5oPgorLSNlbHNlCistI2luY2x1ZGUgPGFzbS9pby5oPgorLSNlbmRpZgorIAorIC8qIFJldHVybiAxIGlmIHdlIHNob3VsZCBjb250aW51ZSwgMCBpZiB3ZSBzaG91bGQgYWJvcnQgKi8KKyBpbnQgdXNlcl9hY2soaW50IGRlZikKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCmluZGV4IGRiYzA1YTguLjQ1NGE2OWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29yc18zLjQuMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICAgICBmaWxlOi8vZmFuY29udHJvbC5pbml0IFwKICAgICAgICAgICAgZmlsZTovL3NlbnNvcmQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxtc2Vuc29ycy1zZW5zb3JzLWRldGVjdC1wcmludC1hLXNwZWNpYWwtbWVzc2FnZS13aGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIxZTlmMTE3Y2JmYTExYmUxOTU1YWRjOTZkZjcxZWFkYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzM0YzFjMmIwNmY3MjkwZTNlNjZiZGFlMzMwYTVkMzYwNTQ3MDFmZmQ0N2E1ZGRlN2EwNmY5YTc0MDJjYjRlIgpAQCAtMzcsNiArMzgsMTEgQEAKICAgICAgICAgQ0M9IiR7Q0N9IiBBUj0iJHtBUn0iJwogCiBkb19jb21waWxlKCkgeworICAgIHNlZCAtaSAtZSAnczpeIyBcKFBST0dfRVhUUkFcKTpcMTonICR7U30vTWFrZWZpbGUKKyAgICAjIFJlc3BlY3QgTERGTEFHUworICAgIHNlZCAtaSAtZSAncy9cJChMSUJESVIpJC9cJChMSUJESVIpIFwkKExERkxBR1MpL2cnICR7U30vTWFrZWZpbGUKKyAgICBzZWQgLWkgLWUgJ3MvXCQoTElCU0hTT05BTUUpIC1vLyQoTElCU0hTT05BTUUpIFwkKExERkxBR1MpIC1vL2cnIFwKKyAgICAgICAgICAgICAgICAke1N9L2xpYi9Nb2R1bGUubWsKICAgICBvZV9ydW5tYWtlIHVzZXIgUFJPR19FWFRSQT0ic2Vuc29ycyBzZW5zb3JkIgogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvZ3dhcm4vbG9nd2Fybl8xLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvZ3dhcm4vbG9nd2Fybl8xLjAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFlMzZiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nd2Fybi9sb2d3YXJuXzEuMC4xNC5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkEgdXRpbGl0eSBmb3IgZmluZGluZyBpbnRlcmVzdGluZyBtZXNzYWdlcyBpbiBsb2cgZmlsZXMiCitERVNDUklQVElPTiA9ICJMb2d3YXJuIHNlYXJjaGVzIGZvciBpbnRlcmVzdGluZyBtZXNzYWdlcyBpbiBsb2cgZmlsZXMsIFwKKyAgd2hlcmUgJ2ludGVyZXN0aW5nJyBpcyBkZWZpbmVkIGJ5IGEgdXNlci1zdXBwbGllZCBsaXN0IG9mIHBvc2l0aXZlIGFuZCBcCisgIG5lZ2F0aXZlIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFwKKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcmNoaWVjb2Jicy9sb2d3YXJuL3dpa2kiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9hcmNoaWUtcHVibGljLyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNTQ0YTYyMzA2NzNlYTU0Zjc0MzBiZjgxN2JiMzlkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZGJmY2Y5YjI4Yzc4MmFiM2JkZGQ2YTYyMGQ0ZmI5NWQxYjBmZmNiZTkzMjc2OTk2Y2RjNDgwMGFhOWFlYmQxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworIyBUaGlzIGRpcmVjdG9yeSBpcyBOT1Qgdm9sYXRpbGUuCisjCitsY2xfZGVmYXVsdF9zdGF0ZV9kaXIgPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9nd2FybiIKKworQ0ZMQUdTICs9ICctRERFRkFVTFRfU1RBVEVfRElSPVwiIiR7bGNsX2RlZmF1bHRfc3RhdGVfZGlyfVwiIicKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIiBcCisgICAgYWNfY3ZfcGF0aF9CQVNIX1NIRUxMPSR7YmFzZV9iaW5kaXJ9L2Jhc2ggXAorICAgIGFjX2N2X3BhdGhfQ0FUPSR7YmFzZV9iaW5kaXJ9L2NhdCBcCisgICAgYWNfY3ZfcGF0aF9STT0ke2Jhc2VfYmluZGlyfS9ybSBcCisgICAgYWNfY3ZfcGF0aF9TRUQ9JHtiYXNlX2JpbmRpcn0vc2VkIFwKKyIKKworIyBNYWtlIHN1cmUgc29tZSBmaWxlcyBleGlzdCBmb3IgYXV0b3JlY29uZi4KKyMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICB0b3VjaCAke1N9L05FV1MKKyAgICB0b3VjaCAke1N9L0NoYW5nZUxvZworICAgIHRvdWNoICR7U30vUkVBRE1FCit9CisKKyMgQ3JlYXRlIGEgZGlyZWN0b3J5IGZvciBsb2dmaWxlIHN0YXRlIGluZm8sIHVzdWFsbHkgdW5kZXIgL3Zhci9saWIuCisjCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsY2xfZGVmYXVsdF9zdGF0ZV9kaXJ9Cit9CisKKyMgTWFrZSBhIHBhY2thZ2UgZm9yIHRoZSBuYWdpb3MgcGx1Zy1pbiAoc2NyaXB0KS4KKyMKK1BBQ0tBR0VTICs9ICIke1BOfS1uYWdpb3MiCisKK0ZJTEVTXyR7UE59LW5hZ2lvcyA9ICIke25vbmFyY2hfbGliZGlyfS9uYWdpb3MiCisKK1JERVBFTkRTXyR7UE59LW5hZ2lvcyArPSAiYmFzaCBjb3JldXRpbHMgc2VkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA1LWRvLW5vdC1idWlsZC1tYW51YWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhYTlmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA1LWRvLW5vdC1idWlsZC1tYW51YWwucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSBkOGJiMjVlMzRkNjUzM2JhNzhlYWFlNjk3NzcxZWU0OTlhNjY3MDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyIEF1ZyAyMDE3IDAzOjQxOjM3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBidWlsZCBtYW51YWwKKworT24gc29tZSBob3N0ICh1YnVudHUgMTQwNCksIGJ1aWxkIG1hbnVhbCBmYWlsZWQuCisuLi4KKy4vdG9vbHMvbWFuLWdlbmVyYXRvciAtLXByaW1hcnkgbHZzY2FuIGx2c2Nhbi44X2RlcworRmFpbGVkIHRvIHN0YXQgZGVzY3JpcHRpb24gZmlsZSBsdnNjYW4uOF9kZXMuCisuLi4KKworRG8gbm90IGJ1aWxkIG1hbiB0byB3b3JrYXJvdW5kIHRoZSBpc3N1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICB8IDQgKystLQorIGNvbmZpZ3VyZS5pbiB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMzFkNDI4ZC4uMjRmODlhMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE4LDcgKzE4LDcgQEAgdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKKyBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACisgYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACisgCistU1VCRElSUyA9IGNvbmYgZGFlbW9ucyBpbmNsdWRlIGxpYiBsaWJkYWVtb24gbGliZG0gbWFuIHNjcmlwdHMgdG9vbHMKKytTVUJESVJTID0gY29uZiBkYWVtb25zIGluY2x1ZGUgbGliIGxpYmRhZW1vbiBsaWJkbSBzY3JpcHRzIHRvb2xzCisgCisgaWZlcSAoIkBVREVWX1JVTEVTQCIsICJ5ZXMiKQorICAgU1VCRElSUyArPSB1ZGV2CitAQCAtNjksNyArNjksNyBAQCBsaWJsdm0uZGV2aWNlLW1hcHBlcjogaW5jbHVkZS5kZXZpY2UtbWFwcGVyCisgZGFlbW9ucy5kZXZpY2UtbWFwcGVyOiBsaWJkbS5kZXZpY2UtbWFwcGVyCisgdG9vbHMuZGV2aWNlLW1hcHBlcjogbGliZG0uZGV2aWNlLW1hcHBlcgorIHNjcmlwdHMuZGV2aWNlLW1hcHBlcjogaW5jbHVkZS5kZXZpY2UtbWFwcGVyCistZGV2aWNlLW1hcHBlcjogdG9vbHMuZGV2aWNlLW1hcHBlciBkYWVtb25zLmRldmljZS1tYXBwZXIgbWFuLmRldmljZS1tYXBwZXIKKytkZXZpY2UtbWFwcGVyOiB0b29scy5kZXZpY2UtbWFwcGVyIGRhZW1vbnMuZGV2aWNlLW1hcHBlcgorIAorIGlmZXEgKCJASU5UTEAiLCAieWVzIikKKyBsaWIucG9maWxlOiBpbmNsdWRlLnBvZmlsZQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMWRjODgxOS4uMTA4YWNlNCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjIxMyw3ICsyMjEzLDYgQEAgbGliZG0vTWFrZWZpbGUKKyBsaWJkbS9saWJkZXZtYXBwZXIucGMKKyBsaWJsdm0vTWFrZWZpbGUKKyBsaWJsdm0vbGlibHZtMmFwcC5wYworLW1hbi9NYWtlZmlsZQorIHBvL01ha2VmaWxlCisgcHl0aG9uL01ha2VmaWxlCisgcHl0aG9uL3NldHVwLnB5CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA2LXN0YXJ0LWx2bTItbW9uaXRvci5zZXJ2aWNlLWFmdGVyLXRtcC5tb3VudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA2LXN0YXJ0LWx2bTItbW9uaXRvci5zZXJ2aWNlLWFmdGVyLXRtcC5tb3VudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTY4ZDYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDYtc3RhcnQtbHZtMi1tb25pdG9yLnNlcnZpY2UtYWZ0ZXItdG1wLm1vdW50LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMjRhMmM0N2ZkMDFkZGUxNzEwZjFmYTY2ZjVjMzBjZTcwMTBjNTk1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMTU6Mjg6MTAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RhcnQgbHZtMi1tb25pdG9yLnNlcnZpY2UgYWZ0ZXIgdG1wLm1vdW50CisKK1RoZSBsdm0yLW1vbml0b3Iuc2VydmljZSByZXFpcmVzIHRoZSBleGlzdGVuY2Ugb2YgbG9ja2luZ19kaXIKKygiL3RtcC9sb2NrL2x2bSIpLCBhbmQgdW5pdCB0bXAubW91bnQgaXMgdG8gbW91bnQgL3RtcC4KK1NvIHN0YXJ0IGx2bTItbW9uaXRvci5zZXJ2aWNlIGFmdGVyIHRtcC5tb3VudAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19zeXN0ZW1kX3JlZF9oYXQuc2VydmljZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX3N5c3RlbWRfcmVkX2hhdC5zZXJ2aWNlLmluIGIvc2NyaXB0cy9sdm0yX21vbml0b3Jpbmdfc3lzdGVtZF9yZWRfaGF0LnNlcnZpY2UuaW4KK2luZGV4IDIyMjM4YjcuLjkzYjJiZWUgMTAwNjQ0CistLS0gYS9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19zeXN0ZW1kX3JlZF9oYXQuc2VydmljZS5pbgorKysrIGIvc2NyaXB0cy9sdm0yX21vbml0b3Jpbmdfc3lzdGVtZF9yZWRfaGF0LnNlcnZpY2UuaW4KK0BAIC0yLDcgKzIsNyBAQAorIERlc2NyaXB0aW9uPU1vbml0b3Jpbmcgb2YgTFZNMiBtaXJyb3JzLCBzbmFwc2hvdHMgZXRjLiB1c2luZyBkbWV2ZW50ZCBvciBwcm9ncmVzcyBwb2xsaW5nCisgRG9jdW1lbnRhdGlvbj1tYW46ZG1ldmVudGQoOCkgbWFuOmx2Y3JlYXRlKDgpIG1hbjpsdmNoYW5nZSg4KSBtYW46dmdjaGFuZ2UoOCkKKyBSZXF1aXJlcz1kbS1ldmVudC5zb2NrZXQgbHZtMi1sdm1ldGFkLnNvY2tldAorLUFmdGVyPWRtLWV2ZW50LnNvY2tldCBkbS1ldmVudC5zZXJ2aWNlIGx2bTItbHZtZXRhZC5zb2NrZXQgbHZtMi1hY3RpdmF0aW9uLnNlcnZpY2UgbHZtMi1sdm1ldGFkLnNlcnZpY2UKKytBZnRlcj1kbS1ldmVudC5zb2NrZXQgZG0tZXZlbnQuc2VydmljZSBsdm0yLWx2bWV0YWQuc29ja2V0IGx2bTItYWN0aXZhdGlvbi5zZXJ2aWNlIGx2bTItbHZtZXRhZC5zZXJ2aWNlIHRtcC5tb3VudAorIEJlZm9yZT1sb2NhbC1mcy1wcmUudGFyZ2V0CisgRGVmYXVsdERlcGVuZGVuY2llcz1ubworIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvbHZtLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvbHZtLmNvbmYKaW5kZXggOWUzYjVmZS4uYzJiYjg1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzL2x2bS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy9sdm0uY29uZgpAQCAtMjE0LDcgKzIxNCw3IEBACiAKICAgICAjIExvY2FsIG5vbi1MViBkaXJlY3RvcnkgdGhhdCBob2xkcyBmaWxlLWJhc2VkIGxvY2tzIHdoaWxlIGNvbW1hbmRzIGFyZQogICAgICMgaW4gcHJvZ3Jlc3MuICBBIGRpcmVjdG9yeSBsaWtlIC90bXAgdGhhdCBtYXkgZ2V0IHdpcGVkIG9uIHJlYm9vdCBpcyBPSy4KLSAgICBsb2NraW5nX2RpciA9ICIvdmFyL2xvY2svbHZtIgorICAgIGxvY2tpbmdfZGlyID0gIi90bXAvbG9jay9sdm0iCiAKICAgICAjIE90aGVyIGVudHJpZXMgY2FuIGdvIGhlcmUgdG8gYWxsb3cgeW91IHRvIGxvYWQgc2hhcmVkIGxpYnJhcmllcwogICAgICMgZS5nLiBpZiBzdXBwb3J0IGZvciBMVk0xIG1ldGFkYXRhIHdhcyBjb21waWxlZCBhcyBhIHNoYXJlZCBsaWJyYXJ5IHVzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE2Ni5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xNjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MmU4ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE2Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLXJlcXVpcmUgbHZtMi5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImM1YTU0ZWUwYjg2NzAzZGFhYWQ2ZTg1NjQzOWUxMTVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxMjBiMDY2Yjg1YjIyNDU1MmVmZGE0MDIwNDQ4OGM1MTIzZGUwNjg3MjU2NzZmZDZlNWM4YmM2NTUwNTFiOTQiCi0KLURFUEVORFMgKz0gImF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID0gIiIKLQotIyBVbnNldCB1c2VyL2dyb3VwIHRvIHVuYnJlYWsgaW5zdGFsbC4KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtdXNlcj0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1ncm91cD0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXVzcmxpYmRpcj0ke2xpYmRpcn0gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgdGhpbmdzIHVucmVsYXRlZCB0byBsaWJkZXZtYXBwZXIKLSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBmb3IgaSBpbiBgbHMgJHtEfSR7c2JpbmRpcn0vKmA7IGRvCi0JaWYgWyAkaSAhPSAke0R9JHtzYmluZGlyfS9kbXNldHVwIF07IHRoZW4KLQkgICAgcm0gJGkKLQlmaQotICAgIGRvbmUKLSAgICAjIFJlbW92ZSBkb2NzCi0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9Ci19Ci0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJsdm0yLXVkZXZydWxlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xNzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTcxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YWU5MDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTcxLmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgbHZtMi5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjE1M2I3YmI2NDNlYjI2MDczMjc0OTY4ZTkwMjZmYThmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4MTVhNzExYTJmYWJhYTVjM2RjMWE0YTI4NGRmMDI2OGJmMGYzMjVmMGZjMGY1Yzk1MzBjOWJiYjU0Yjk5NjQiCisKK0RFUEVORFMgKz0gImF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIC1DIGxpYmRtIGluc3RhbGwKK30KKworUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbHZtMi11ZGV2cnVsZXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLmluYwppbmRleCBjYjVhOWUwLi4yODllMDdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIuaW5jCkBAIC0xLDMgKzEsNCBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvbHZtMi8iCiBTRUNUSU9OID0gInV0aWxzIgogREVTQ1JJUFRJT04gPSAiTFZNMiBpcyBhIHNldCBvZiB1dGlsaXRpZXMgdG8gbWFuYWdlIGxvZ2ljYWwgdm9sdW1lcyBpbiBMaW51eC4iCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgpAQCAtMTMsMTYgKzE0LDI1IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWluY2x1ZGUtZmNudGwuaC1mb3ItT18tZGVmaW5lcy1hbmQtZmNudGwtc2lnbmF0dXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtdHdlYWstTU9EUFJPQkVfQ01ELWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYmFzaGlzbXMtaW4taW5pdC1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXN0YXJ0LWx2bTItbW9uaXRvci5zZXJ2aWNlLWFmdGVyLXRtcC5tb3VudC5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9MVk0yLiR7UFZ9IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgc3lzdGVtZCBsaWNlbnNlCisKK0xWTTJfUEFDS0FHRUNPTkZJRyA9ICJkbWV2ZW50ZCBsdm1ldGFkIgorTFZNMl9QQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgZCl9IFwKKyAgICAke0BpbmNvbXBhdGlibGVfbGljZW5zZV9jb250YWlucygnR1BMdjMnLCAnJywgJ3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzJywgZCl9IFwKKyAgICB1ZGV2IFwKKyIKIAogIyBvZGlyZWN0IGlzIGFsd2F5cyBlbmFibGVkIGJlY2F1c2UgdGhlcmUgY3VycmVudGx5IGlzIGEgYnVnIGluCiAjIGxpYi9kZXZpY2UvZGV2LWlvLmMgd2hpY2ggcHJldmVudHMgY29tcGlsaW5nIHdpdGhvdXQgaXQuIEl0IGlzCiAjIGJldHRlciB0byBzdGljayB0byBjb25maWd1cmF0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgdGVzdGVkIGJ5CiAjIHVwc3RyZWFtLi4uCi1QQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIgb2RpcmVjdCIKK1BBQ0tBR0VDT05GSUcgPz89ICJvZGlyZWN0ICR7TFZNMl9QQUNLQUdFQ09ORklHfSIKIAogUEFDS0FHRUNPTkZJR1tkbWV2ZW50ZF0gPSAiLS1lbmFibGUtZG1ldmVudGQsLS1kaXNhYmxlLWRtZXZlbnRkIgogUEFDS0FHRUNPTkZJR1tsdm1ldGFkXSA9ICItLWVuYWJsZS1sdm1ldGFkLC0tZGlzYWJsZS1sdm1ldGFkIgpAQCAtMzEsMyArNDEsMjAgQEAKIFBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4IgogUEFDS0FHRUNPTkZJR1t0aGluLXByb3Zpc2lvbmluZy10b29sc10gPSAiLS13aXRoLXRoaW49aW50ZXJuYWwsLS13aXRoLXRoaW49bm9uZSwsdGhpbi1wcm92aXNpb25pbmctdG9vbHMiCiBQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXZfc3luYyAtLWVuYWJsZS11ZGV2X3J1bGVzIC0td2l0aC11ZGV2ZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLC0tZGlzYWJsZS11ZGV2X3N5bmMgLS1kaXNhYmxlLXVkZXZfcnVsZXMsdWRldiIKKworIyBVbnNldCB1c2VyL2dyb3VwIHRvIHVuYnJlYWsgaW5zdGFsbC4KK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtdXNlcj0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1ncm91cD0gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXJlYWx0aW1lIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hcHBsaWIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNtZGxpYiBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtcGtnY29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtdXNybGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS10aGluX2NoZWNrX25lZWRzX2NoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1jaGVjaz0ke3NiaW5kaXJ9L3RoaW5fY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC10aGluLWR1bXA9JHtzYmluZGlyfS90aGluX2R1bXAgXAorICAgICAgICAgICAgICAgIC0td2l0aC10aGluLXJlcGFpcj0ke3NiaW5kaXJ9L3RoaW5fcmVwYWlyIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1yZXN0b3JlPSR7c2JpbmRpcn0vdGhpbl9yZXN0b3JlIFwKKyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIvMDAwMS1leHBsaWNpdGx5LWRvLW5vdC1pbnN0YWxsLWxpYmRtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIvMDAwMS1leHBsaWNpdGx5LWRvLW5vdC1pbnN0YWxsLWxpYmRtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NTgxOGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi8wMDAxLWV4cGxpY2l0bHktZG8tbm90LWluc3RhbGwtbGliZG0ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAwYThlNDY2ZmNmOTk2MjI4OTZlMDcwYzUxMzMxNjVlNDI3OGU4Y2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNSBNYXkgMjAxNyAwNToyNzoxMSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBleHBsaWNpdGx5IGRvIG5vdCBpbnN0YWxsIGxpYmRtCisKK0FscmVhZHkgaGF2ZSBwYWNrYWdlIGxpYmRldm1hcHBlciB3aGljaCBzcGxpdCBmcm9tIGx2bTIsCitleHBsaWNpdGx5IGRvIG5vdCBkbyB0aGUgaW5zdGFsbGF0aW9uIGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbWV0YS1vZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliZG0vTWFrZWZpbGUuaW4gfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJkbS9NYWtlZmlsZS5pbiBiL2xpYmRtL01ha2VmaWxlLmluCitpbmRleCAzYzlhNGNlLi40NWM5MWM2IDEwMDY0NAorLS0tIGEvbGliZG0vTWFrZWZpbGUuaW4KKysrKyBiL2xpYmRtL01ha2VmaWxlLmluCitAQCAtNzcsOSArNzcsMTEgQEAgaWZlcSAoIkBQS0dDT05GSUdAIiwgInllcyIpCisgICBJTlNUQUxMX1RZUEUgKz0gaW5zdGFsbF9wa2djb25maWcKKyBlbmRpZgorIAorLWluc3RhbGw6ICQoSU5TVEFMTF9UWVBFKSBpbnN0YWxsX2luY2x1ZGUKKytpbnN0YWxsOgorKwllY2hvICJEbyBub3QgaW5zdGFsbCBkZXZpY2UgbWFwcGxlciBpbiBsdm0yIgorIAorLWluc3RhbGxfZGV2aWNlLW1hcHBlcjogaW5zdGFsbAorK2luc3RhbGxfZGV2aWNlLW1hcHBlcjoKKysJZWNobyAiRG8gbm90IGluc3RhbGwgZGV2aWNlIG1hcHBsZXIgaW4gbHZtMiIKKyAKKyBpbnN0YWxsX2luY2x1ZGU6ICQoc3JjZGlyKS9saWJkZXZtYXBwZXIuaAorIAkkKElOU1RBTExfREFUQSkgLUQgJDwgJChpbmNsdWRlZGlyKS8kKDxGKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE2Ni5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTY2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTM5ZjA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTY2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotcmVxdWlyZSBsdm0yLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzVhNTRlZTBiODY3MDNkYWFhZDZlODU2NDM5ZTExNWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTEyMGIwNjZiODViMjI0NTUyZWZkYTQwMjA0NDg4YzUxMjNkZTA2ODcyNTY3NmZkNmU1YzhiYzY1NTA1MWI5NCIKLQotREVQRU5EUyArPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCi0KLUxWTTJfUEFDS0FHRUNPTkZJRyA9ICJkbWV2ZW50ZCBsdm1ldGFkIgotTFZNMl9QQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgZCl9IFwKLSAgICB0aGluLXByb3Zpc2lvbmluZy10b29scyBcCi0gICAgdWRldiBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0xWTTJfUEFDS0FHRUNPTkZJR30iCi0KLSMgVW5zZXQgdXNlci9ncm91cCB0byB1bmJyZWFrIGluc3RhbGwuCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXVzZXI9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZ3JvdXA9IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1yZWFsdGltZSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYXBwbGliIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbWRsaWIgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXVzcmxpYmRpcj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtdGhpbl9jaGVja19uZWVkc19jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tY2hlY2s9JHtzYmluZGlyfS90aGluX2NoZWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1kdW1wPSR7c2JpbmRpcn0vdGhpbl9kdW1wIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1yZXBhaXI9JHtzYmluZGlyfS90aGluX3JlcGFpciBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tcmVzdG9yZT0ke3NiaW5kaXJ9L3RoaW5fcmVzdG9yZSBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJNT0RQUk9CRV9DTUQ9JHtiYXNlX3NiaW5kaXJ9L21vZHByb2JlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEluc3RhbGwgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2x2bQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x2bS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZgotICAgIHNlZCAtaSAtZSAnczpAbGliZGlyQDoke2xpYmRpcn06ZycgJHtEfSR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9zeXN0ZW1kX3VuaXRzCi0gICAgICAgIHNlZCAtaSAtZSAnczovdXNyL2Jpbi90cnVlOiR7YmFzZV9iaW5kaXJ9L3RydWU6ZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlCi0gICAgZWxzZQotICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9pbml0c2NyaXB0cwotICAgICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9yYy5kL2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKLSAgICBmaQotICAgICMgUmVtb3ZlIHRoaW5ncyByZWxhdGVkIHRvIGxpYmRldm1hcHBlcgotICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L2Rtc2V0dXAKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmRldm1hcHBlci5zby4qCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJkZXZtYXBwZXIuc28gJHtEfSR7bGliZGlyfS9wa2djb25maWcvZGV2bWFwcGVyLnBjICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmRldm1hcHBlci5oCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tdWRldnJ1bGVzIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RtZXZlbnRkJywgJ2x2bTItbW9uaXRvci5zZXJ2aWNlIGRtLWV2ZW50LnNvY2tldCBkbS1ldmVudC5zZXJ2aWNlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbHZtZXRhZCcsICdsdm0yLWx2bWV0YWQuc29ja2V0IGx2bTItcHZzY2FuQC5zZXJ2aWNlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9kZXZpY2UtbWFwcGVyLyouc28iCi1GSUxFU18ke1BOfS1zY3JpcHRzID0gIiBcCi0gICAgJHtzYmluZGlyfS9ibGtkZWFjdGl2YXRlIFwKLSAgICAke3NiaW5kaXJ9L2ZzYWRtIFwKLSAgICAke3NiaW5kaXJ9L2x2bWNvbmYgXAotICAgICR7c2JpbmRpcn0vbHZtZHVtcCBcCi0iCi0jIFNwZWNpZmllZCBleHBsaWNpdGx5IGZvciB0aGUgdWRldiBydWxlcywganVzdCBpbiBjYXNlIHRoYXQgaXQgZG9lcyBub3QgZ2V0IHBpY2tlZAotIyB1cCBhdXRvbWF0aWNhbGx5OgotRklMRVNfJHtQTn0tdWRldnJ1bGVzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kIgotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbGliZGV2bWFwcGVyIgotCi1SREVQRU5EU18ke1BOfS1zY3JpcHRzID0gIiR7UE59ICg9ICR7RVhURU5EUEtHVn0pIGJhc2giCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiJHtQTn0tc2NyaXB0cyAoPSAke0VYVEVORFBLR1Z9KSIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xNzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE3MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDg4MWU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xNzEuYmIKQEAgLTAsMCArMSw1NCBAQAorcmVxdWlyZSBsdm0yLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMTUzYjdiYjY0M2ViMjYwNzMyNzQ5NjhlOTAyNmZhOGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjgxNWE3MTFhMmZhYmFhNWMzZGMxYTRhMjg0ZGYwMjY4YmYwZjMyNWYwZmMwZjVjOTUzMGM5YmJiNTRiOTk2NCIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaCIKKworREVQRU5EUyArPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJNT0RQUk9CRV9DTUQ9JHtiYXNlX3NiaW5kaXJ9L21vZHByb2JlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEluc3RhbGwgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2x2bQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x2bS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZgorICAgIHNlZCAtaSAtZSAnczpAbGliZGlyQDoke2xpYmRpcn06ZycgJHtEfSR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9zeXN0ZW1kX3VuaXRzCisgICAgICAgIHNlZCAtaSAtZSAnczovdXNyL2Jpbi90cnVlOiR7YmFzZV9iaW5kaXJ9L3RydWU6ZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlCisgICAgZWxzZQorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9pbml0c2NyaXB0cworICAgICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9yYy5kL2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKyAgICBmaQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1zY3JpcHRzICR7UE59LXVkZXZydWxlcyIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbWV2ZW50ZCcsICdsdm0yLW1vbml0b3Iuc2VydmljZSBkbS1ldmVudC5zb2NrZXQgZG0tZXZlbnQuc2VydmljZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2x2bWV0YWQnLCAnbHZtMi1sdm1ldGFkLnNvY2tldCBsdm0yLXB2c2NhbkAuc2VydmljZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgIGJsay1hdmFpbGFiaWxpdHkuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZGV2aWNlLW1hcHBlci8qLnNvIgorRklMRVNfJHtQTn0tc2NyaXB0cyA9ICIgXAorICAgICR7c2JpbmRpcn0vYmxrZGVhY3RpdmF0ZSBcCisgICAgJHtzYmluZGlyfS9mc2FkbSBcCisgICAgJHtzYmluZGlyfS9sdm1jb25mIFwKKyAgICAke3NiaW5kaXJ9L2x2bWR1bXAgXAorIgorIyBTcGVjaWZpZWQgZXhwbGljaXRseSBmb3IgdGhlIHVkZXYgcnVsZXMsIGp1c3QgaW4gY2FzZSB0aGF0IGl0IGRvZXMgbm90IGdldCBwaWNrZWQKKyMgdXAgYXV0b21hdGljYWxseToKK0ZJTEVTXyR7UE59LXVkZXZydWxlcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZCIKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYmRldm1hcHBlciIKKworUkRFUEVORFNfJHtQTn0tc2NyaXB0cyA9ICIke1BOfSAoPSAke0VYVEVORFBLR1Z9KSBiYXNoIgorUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiR7UE59LXNjcmlwdHMgKD0gJHtFWFRFTkRQS0dWfSkiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHppcC9semlwXzEuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x6aXAvbHppcF8xLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWQ5OTYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHppcC9semlwXzEuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3NvciBiYXNlZCBvbiB0aGUgTFpNQSBhbGdvcml0aG0iCi1IT01FUEFHRSA9ICJodHRwOi8vbHppcC5ub25nbnUub3JnL2x6aXAuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzZkNmUzMDBmZmQ4ZmI5ZDE4YmQ5YjEzNmE5YmJhMTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVjb2Rlci5jYztlbmRsaW5lPTE2O21kNT0wODA5MTI4YWMzMjE2MzI1Mjg0NmUwOWE3MGM4YjgwYiIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2x6aXAvbHppcC0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MTZhOTg3NmRjNTk1ZWM1MmQ0ZjNiZGE4MWU0MjQ3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMjhjYzI1YmFmOTJjOGI2OTcwMDgzMWU2Zjk4NGQ5NTQwMTYzMThjYzc4ZWRjYTg3ODcwZDBjMDMzMTEyNzUxIgotCi1DT05GSUdVUkVPUFRTID0gIlwKLSAgICAnLS1zcmNkaXI9JHtTfScgXAotICAgICctLXByZWZpeD0ke3ByZWZpeH0nIFwKLSAgICAnLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fScgXAotICAgICctLWJpbmRpcj0ke2JpbmRpcn0nIFwKLSAgICAnLS1kYXRhZGlyPSR7ZGF0YWRpcn0nIFwKLSAgICAnLS1pbmZvZGlyPSR7aW5mb2Rpcn0nIFwKLSAgICAnLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKLSAgICAnQ1hYPSR7Q1hYfScgXAotICAgICdDUFBGTEFHUz0ke0NQUEZMQUdTfScgXAotICAgICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgXAotICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKLSIKLUVYVFJBX09FTUFLRSA9ICIiCi0KLUIgPSAiJHtTfS9vYmoiCi1kb19jb25maWd1cmUgKCkgewotICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0gICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLSAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tYWlsY2FwL21haWxjYXBfMi4xLjQ2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tYWlsY2FwL21haWxjYXBfMi4xLjQ2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGI4ZjAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWFpbGNhcC9tYWlsY2FwXzIuMS40Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiSGVscGVyIGFwcGxpY2F0aW9uIGFuZCBNSU1FIHR5cGUgYXNzb2NpYXRpb25zIGZvciBmaWxlIHR5cGVzIgotREVTQ1JJUFRJT04gPSAiVGhlIG1haWxjYXAgZmlsZSBpcyB1c2VkIGJ5IHRoZSBtZXRhbWFpbCBwcm9ncmFtLiBNZXRhbWFpbCByZWFkcyB0aGUgXAotbWFpbGNhcCBmaWxlIHRvIGRldGVybWluZSBob3cgaXQgc2hvdWxkIGRpc3BsYXkgbm9uLXRleHQgb3IgbXVsdGltZWRpYSBcCi1tYXRlcmlhbC4gQmFzaWNhbGx5LCBtYWlsY2FwIGFzc29jaWF0ZXMgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgZmlsZSBcCi13aXRoIGEgcGFydGljdWxhciBwcm9ncmFtIHRoYXQgYSBtYWlsIGFnZW50IG9yIG90aGVyIHByb2dyYW0gY2FuIGNhbGwgXAotaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBmaWxlLiBNYWlsY2FwIHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gYWxsb3cgXAotY2VydGFpbiBwcm9ncmFtcyB0byBiZSBhYmxlIHRvIGhhbmRsZSBub24tdGV4dCBmaWxlcy4gXAotXAotQWxzbyBpbmNsdWRlZCBpbiB0aGlzIHBhY2thZ2UgaXMgdGhlIG1pbWUudHlwZXMgZmlsZSB3aGljaCBjb250YWlucyBhIFwKLWxpc3Qgb2YgTUlNRSB0eXBlcyBhbmQgdGhlaXIgZmlsZW5hbWUgZXh0ZW5zaW9uIGFzc29jaWF0aW9ucywgdXNlZCAgXAotYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMgZS5nLiB0byBkZXRlcm1pbmUgTUlNRSB0eXBlcyBmb3IgZmlsZW5hbWVzLiIKLQotU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKLQotTElDRU5TRSA9ICJQRCAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwMGZjZmI4NDUxMmNjYzAzZmZjN2Q4OWFjMzkxMzA1IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy8ke0JQTn0vJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDg2NWExYmFmNTc0YWU1ZDMwOWY1YzFmNzkzMTU4MDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzY4ZWIzYjUzMWQ3MzE0NzZkNTk4MGM5YjdjYzI4N2JkNjRjMmExM2JlYzVhNTM3MDA5YTJjNGFmNjNmOWJiMCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSBtYW5kaXI9JHttYW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21haWxjYXAvbWFpbGNhcF8yLjEuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21haWxjYXAvbWFpbGNhcF8yLjEuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE0Y2U0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWFpbGNhcC9tYWlsY2FwXzIuMS40OC5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkhlbHBlciBhcHBsaWNhdGlvbiBhbmQgTUlNRSB0eXBlIGFzc29jaWF0aW9ucyBmb3IgZmlsZSB0eXBlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL21haWxjYXAiCitERVNDUklQVElPTiA9ICJUaGUgbWFpbGNhcCBmaWxlIGlzIHVzZWQgYnkgdGhlIG1ldGFtYWlsIHByb2dyYW0uIE1ldGFtYWlsIHJlYWRzIHRoZSBcCittYWlsY2FwIGZpbGUgdG8gZGV0ZXJtaW5lIGhvdyBpdCBzaG91bGQgZGlzcGxheSBub24tdGV4dCBvciBtdWx0aW1lZGlhIFwKK21hdGVyaWFsLiBCYXNpY2FsbHksIG1haWxjYXAgYXNzb2NpYXRlcyBhIHBhcnRpY3VsYXIgdHlwZSBvZiBmaWxlIFwKK3dpdGggYSBwYXJ0aWN1bGFyIHByb2dyYW0gdGhhdCBhIG1haWwgYWdlbnQgb3Igb3RoZXIgcHJvZ3JhbSBjYW4gY2FsbCBcCitpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZpbGUuIE1haWxjYXAgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBhbGxvdyBcCitjZXJ0YWluIHByb2dyYW1zIHRvIGJlIGFibGUgdG8gaGFuZGxlIG5vbi10ZXh0IGZpbGVzLiBcCitcCitBbHNvIGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSBpcyB0aGUgbWltZS50eXBlcyBmaWxlIHdoaWNoIGNvbnRhaW5zIGEgXAorbGlzdCBvZiBNSU1FIHR5cGVzIGFuZCB0aGVpciBmaWxlbmFtZSBleHRlbnNpb24gYXNzb2NpYXRpb25zLCB1c2VkICBcCitieSBzZXZlcmFsIGFwcGxpY2F0aW9ucyBlLmcuIHRvIGRldGVybWluZSBNSU1FIHR5cGVzIGZvciBmaWxlbmFtZXMuIgorCitTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgorCitMSUNFTlNFID0gIlBEICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTAwZmNmYjg0NTEyY2NjMDNmZmM3ZDg5YWMzOTEzMDUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnLyR7QlBOfS8ke0JQfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYzI2ZTE4ZTkxMmE1Y2YwMDMxOGZjZjdmOGYyZDc0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkN2IwMjNiMjM3ZDYwNTNiZjA1ZmY2Nzg2ZTA2NjNjNTVjNjE0ZWZjYzk5Y2RmODU2MTIwYmUxM2I1YzI5MTU3IgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9IG1hbmRpcj0ke21hbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhMzQ0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gZmJmY2VlYmNlMjEyMTgzMTkwNGYyZjcxMTUyNTJkZDAzYjQxM2E2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IFNlcCAyMDE3IDE4OjUyOjUzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEludGVsUkRGUE1hdGhMaWIyMFUxOiBDaGVjayBmb3IgX19ERUZJTkVEX3djaGFyX3QKKworVGhpcyBpcyBkZWZpbmVkIGJ5IG11c2wgaWYgd2NoYXJfdCBpcyBhbHJlYWR5IGRlZmluZWQKKworYXZvaWRzIGVycm9ycyBsaWtlCisKK3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmg6NDY6MTU6IGVycm9yOiB0eXBlZGVmIHJlZGVmaW5pdGlvbiB3aXRoIGRpZmZlcmVudCB0eXBlcworICAgICAgKCdpbnQnIHZzICd1bnNpZ25lZCBpbnQnKQordHlwZWRlZiBpbnQgICB3Y2hhcl90OworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oIGIvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL0xJQlJBUlkvc3JjL2JpZF9mdW5jdGlvbnMuaAoraW5kZXggMmIzZjc2ZGI4Ni4uY2M4MDMwNTc3NSAxMDA3NTUKKy0tLSBhL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmgKKysrKyBiL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmgKK0BAIC00Miw3ICs0Miw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgLy8gRml4IHN5c3RlbSBoZWFkZXIgaXNzdWUgb24gU3VuIHNvbGFyaXMgYW5kIGRlZmluZSByZXF1aXJlZCB0eXBlIGJ5IG91cnNlbHZlcworLSNpZiAhZGVmaW5lZChfV0NIQVJfVCkgJiYgIWRlZmluZWQoX1dDSEFSX1RfREVGSU5FRCkgJiYgIWRlZmluZWQoX19RTlhfXykKKysjaWYgIWRlZmluZWQoX1dDSEFSX1QpICYmICFkZWZpbmVkKF9XQ0hBUl9UX0RFRklORUQpICYmICFkZWZpbmVkKF9fUU5YX18pICYmICFkZWZpbmVkKF9fREVGSU5FRF93Y2hhcl90KQorIHR5cGVkZWYgaW50ICAgd2NoYXJfdDsKKyAjZW5kaWYKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGM0MTlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gM2VlZDgzODhiNDlkNWQzY2JjMmRiNzRmZWUxYjAxN2ViNGI0MGQwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTA6MDY6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIF9fR0xJQkNfXyB0byBjb250cm9sIHVzZSBvZiBnbnVfZ2V0X2xpYmNfdmVyc2lvbgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBzcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAgYi9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAKK2luZGV4IDkxMDAxNTIxNWUuLmJmOGMxZmZkMTUgMTAwNjQ0CistLS0gYS9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAKKysrKyBiL3NyYy9tb25nby91dGlsL3Byb2Nlc3NpbmZvX2xpbnV4LmNwcAorQEAgLTQwLDcgKzQwLDcgQEAKKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CistI2lmZGVmIF9fVUNMSUJDX18KKysjaWZuZGVmIF9fR0xJQkNfXworICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorICNlbHNlCisgI2luY2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4KK0BAIC00NTEsMTEgKzQ1MSwxMyBAQCBkb3VibGUgUHJvY2Vzc0luZm86OmdldFN5c3RlbU1lbW9yeVByZXNzdXJlUGVyY2VudGFnZSgpIHsKKyB9CisgCisgdm9pZCBQcm9jZXNzSW5mbzo6Z2V0RXh0cmFJbmZvKEJTT05PYmpCdWlsZGVyJiBpbmZvKSB7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBMaW51eFByb2MgcChfcGlkKTsKKyAgICAgaWYgKHAuX21hal9mbHQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkKKyAgICAgICAgIGluZm8uYXBwZW5kTnVtYmVyKCJwYWdlX2ZhdWx0cyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocC5fbWFqX2ZsdCkpOworICAgICBlbHNlCisgICAgICAgICBpbmZvLmFwcGVuZE51bWJlcigicGFnZV9mYXVsdHMiLCBzdGF0aWNfY2FzdDxkb3VibGU+KHAuX21hal9mbHQpKTsKKysjZW5kaWYKKyB9CisgCisgLyoqCitAQCAtNDkxLDcgKzQ5Myw3IEBAIHZvaWQgUHJvY2Vzc0luZm86OlN5c3RlbUluZm86OmNvbGxlY3RTeXN0ZW1JbmZvKCkgeworICAgICBzdHJpbmdzdHJlYW0gc3M7CisgICAgIHNzIDw8ICJ1Q2xpYmMtIiA8PCBfX1VDTElCQ19NQUpPUl9fIDw8ICIuIiA8PCBfX1VDTElCQ19NSU5PUl9fIDw8ICIuIiA8PCBfX1VDTElCQ19TVUJMRVZFTF9fOworICAgICBiRXh0cmEuYXBwZW5kKCJsaWJjVmVyc2lvbiIsIHNzLnN0cigpKTsKKy0jZWxzZQorKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBiRXh0cmEuYXBwZW5kKCJsaWJjVmVyc2lvbiIsIGdudV9nZXRfbGliY192ZXJzaW9uKCkpOworICNlbmRpZgorICAgICBpZiAoIXZlclNpZy5lbXB0eSgpKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzYmViNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSBhNDk1MTQ4OWQ2NDljMmI2MDljYmI4MGY2Y2ZiNDlmZGNhZDhiZDQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMDowMzozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbG9uZyBsb25nIGluc3RlYWQgb2YgaW50NjRfdAorCitGaXhlcworZXJyb3I6IGNhbGwgdG8gbWVtYmVyIGZ1bmN0aW9uICdhcHBlbmROdW1iZXInIGlzIGFtYmlndW91cworc2luY2UgdGhpcyBmdW5jdGlvbiBleHBlY3RzIGxvbmcgbG9uZyBhcyBwYXJhbWV0ZXIgYW5kIG5vdCBpbnQ2NF90CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworIHNyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcCBiL3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwCitpbmRleCAzNmYyYWUwMjU0Li4yYzE2NGJjYmYzIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKKysrKyBiL3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwCitAQCAtMjYwLDcgKzI2MCw3IEBAIFN0YXR1cyBwYXJzZVByb2NTdGF0KGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBrZXlzLAorIAorICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpIC0gKCpwYXJ0SXQpLmJlZ2luKCkpOworIAorLSAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWU7CisrICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgIHZhbHVlOworIAorICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworQEAgLTI3Miw3ICsyNzIsNyBAQCBTdGF0dXMgcGFyc2VQcm9jU3RhdChjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYga2V5cywKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkgLSAoKnBhcnRJdCkuYmVnaW4oKSk7CisgCistICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOworKyAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWU7CisgCisgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgeworICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworQEAgLTM2NSw3ICszNjUsNyBAQCBTdGF0dXMgcGFyc2VQcm9jTWVtSW5mbyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYga2V5cywKKyAKKyAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkpOworIAorLSAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOworKyAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAKKyAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKKyAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworQEAgLTQyNiw3ICs0MjYsNyBAQCBTdGF0dXMgcGFyc2VQcm9jRGlza1N0YXRzKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBkaXNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0RhdGEgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTT05PYmpCdWlsZGVyKiBidWlsZGVyKSB7CisgICAgIGJvb2wgZm91bmRLZXlzID0gZmFsc2U7CistICAgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBzdGF0czsKKysgICAgc3RkOjp2ZWN0b3I8bG9uZyBsb25nPiBzdGF0czsKKyAgICAgc3RhdHMucmVzZXJ2ZShrRGlza0ZpZWxkQ291bnQpOworIAorICAgICB1c2luZyBzdHJpbmdfc3BsaXRfaXRlcmF0b3IgPSBib29zdDo6c3BsaXRfaXRlcmF0b3I8U3RyaW5nRGF0YTo6Y29uc3RfaXRlcmF0b3I+OworQEAgLTUwMSw3ICs1MDEsNyBAQCBTdGF0dXMgcGFyc2VQcm9jRGlza1N0YXRzKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBkaXNrcywKKyAKKyAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKKyAKKy0gICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWU7CisrICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzRkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGE0ZGZjOTJmZjM0MmU1OTU5NmFiNjQyNjdhOGQ0ZjIyZjE3M2MyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEyOjQwOjQxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBVc2Ugc3RyZXJyb3JfciBvbmx5IG9uIGdsaWJjIHN5c3RlbXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb25nby91dGlsL2xvZy5jcHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9sb2cuY3BwIGIvc3JjL21vbmdvL3V0aWwvbG9nLmNwcAoraW5kZXggMTk1N2ViNDc5MS4uZGRmMzkwODgxOCAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby91dGlsL2xvZy5jcHAKKysrKyBiL3NyYy9tb25nby91dGlsL2xvZy5jcHAKK0BAIC0xMDEsNyArMTAxLDcgQEAgc3RyaW5nIGVycm5vV2l0aERlc2NyaXB0aW9uKGludCBlcnJOdW1iZXIpIHsKKyAgICAgY2hhciBidWZba0J1Zmxlbl07CisgICAgIGNoYXIqIG1zZ3tudWxscHRyfTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfR05VX1NPVVJDRSkKKysjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIG1zZyA9IHN0cmVycm9yX3IoZXJyTnVtYmVyLCBidWYsIGtCdWZsZW4pOworICNlbGlmIGRlZmluZWQoX1dJTjMyKQorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1tb25nby1BZGQtdXNpbmctc3RkLXN0cmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxN2Q1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSA1ZmRlYzk1OTIyODVmNTk3NjM0NWZiY2NiM2QwN2ZhZTEyNDVhYjUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNTo0MToyMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtb25nbzogQWRkIHVzaW5nIHN0ZDo6c3RyaW5nCisKK1RoaXMgaXMgbmVlZGVkIHdpdGggbGF0ZXN0IGNsYW5nCitGaXhlcworc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcDoyMDY6MjM6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdzdHJpbmcnOyBkaWQgeW91IG1lYW4gJ1N0cmluZyc/CisgICAgICAgIHN0YXRpYyB2ZWN0b3I8c3RyaW5nPiBjb21tYW5kczsKKyAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KKyAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwIHwgMiArKworIHNyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAgICAgICAgfCAxICsKKyBzcmMvbW9uZ28vdXRpbC9uZXQvbWluaXdlYnNlcnZlci5jcHAgICAgIHwgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAgYi9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwCitpbmRleCBiMjAyZTA1MDBiLi4wMjU1NjEzNTI0IDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcAorKysrIGIvc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcAorQEAgLTY3LDYgKzY3LDcgQEAgbmFtZXNwYWNlIG1vbmdvIHsKKyB1c2luZyBzdGQ6Om1hcDsKKyB1c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKKyB1c2luZyBzdGQ6OnZlY3RvcjsKKyt1c2luZyBzdGQ6OnN0cmluZzsKKyAKKyB1c2luZyBuYW1lc3BhY2UgaHRtbDsKKyAKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwIGIvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcAoraW5kZXggZDU2MmJmZjE0MS4uNGQ5MzE5ODVlMiAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAKKysrKyBiL3NyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAKK0BAIC00NCw2ICs0NCw4IEBACisgI2luY2x1ZGUgIm1vbmdvL3N0ZHgvbWVtb3J5LmgiCisgI2luY2x1ZGUgIm1vbmdvL3V0aWwvbW9uZ291dGlscy9zdHIuaCIKKyAKKyt1c2luZyBzdGQ6OnN0cmluZzsKKysKKyBuYW1lc3BhY2UgbW9uZ28geworIAorIFN0YXR1cyBMZWFmTWF0Y2hFeHByZXNzaW9uOjpzZXRQYXRoKFN0cmluZ0RhdGEgcGF0aCkgeworZGlmZiAtLWdpdCBhL3NyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAgYi9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwCitpbmRleCAwNWZhYWQxMjU5Li5lYTI1ZDcxNTFiIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcAorKysrIGIvc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcAorQEAgLTc4LDYgKzc4LDcgQEAgdXNpbmcgc3RkOjplbmRsOworIHVzaW5nIHN0ZDo6bWF4OworIHVzaW5nIHN0ZDo6bWluOworIHVzaW5nIHN0ZDo6c2V0OworK3VzaW5nIHN0ZDo6c3RyaW5nOworIHVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOworIHVzaW5nIHN0ZDo6dW5pcXVlX3B0cjsKKyB1c2luZyBzdGQ6OnZlY3RvcjsKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9uZXQvbWluaXdlYnNlcnZlci5jcHAgYi9zcmMvbW9uZ28vdXRpbC9uZXQvbWluaXdlYnNlcnZlci5jcHAKK2luZGV4IDVmNDE2NWQ0MmYuLjIzOTcyMGMzNDkgMTAwNjQ0CistLS0gYS9zcmMvbW9uZ28vdXRpbC9uZXQvbWluaXdlYnNlcnZlci5jcHAKKysrKyBiL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcAorQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIG1vbmdvIHsKKyAKKyB1c2luZyBzdGQ6OnNoYXJlZF9wdHI7CisgdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07CisrdXNpbmcgc3RkOjpzdHJpbmc7CisgdXNpbmcgc3RkOjp2ZWN0b3I7CisgCisgTWluaVdlYlNlcnZlcjo6TWluaVdlYlNlcnZlcihjb25zdCBzdHJpbmcmIG5hbWUsIGNvbnN0IHN0cmluZyYgaXAsIGludCBwb3J0LCBTZXJ2aWNlQ29udGV4dCogY3R4KQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ODMwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBkZjdlZjE2YWZjYzZhYjU1ZGFhNjg2ZTRmMTVjMTZlM2QxMjgwMzM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMjo0MjozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNF0gQWRkIGEgZGVmaW5pdGlvbiBmb3IgdGhlIG1hY3JvIF9fRUxGX05BVElWRV9DTEFTUworCitJdCBkZXBlbmRzIG9uIHRoZSBuYXRpdmUgYXJjaCdzIHdvcmQgc2l6ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb25nby91dGlsL3N0YWNrdHJhY2VfcG9zaXguY3BwIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9zdGFja3RyYWNlX3Bvc2l4LmNwcCBiL3NyYy9tb25nby91dGlsL3N0YWNrdHJhY2VfcG9zaXguY3BwCitpbmRleCA1M2FiODVmNTZmLi43YzQ1OGU3ZWYyIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvc3RhY2t0cmFjZV9wb3NpeC5jcHAKKysrKyBiL3NyYy9tb25nby91dGlsL3N0YWNrdHJhY2VfcG9zaXguY3BwCitAQCAtMzcsNiArMzcsMTUgQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2lmIGRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBfX0lMUDMyX18KKysjIGRlZmluZSBfX1dPUkRTSVpFICAgIDY0CisrI2Vsc2UKKysjIGRlZmluZSBfX1dPUkRTSVpFICAgIDMyCisrI2VuZGlmCisrI2RlZmluZSBfX0VMRl9OQVRJVkVfQ0xBU1MgX19XT1JEU0laRQorKyNlbmRpZgorKworICNpbmNsdWRlICJtb25nby9iYXNlL2luaXQuaCIKKyAjaW5jbHVkZSAibW9uZ28vY29uZmlnLmgiCisgI2luY2x1ZGUgIm1vbmdvL2RiL2pzb2JqLmgiCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOWMxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU3NTk4NzhlNWQyNzhmMTFhMTA2M2U4ZmNjZDFlNmI3YjU0Y2FhZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyIEF1ZyAyMDE3IDE2OjI1OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBkX3N0YXRlLmNwcDogQWRkIG1pc3NpbmcgZGVwZW5kZW5uY3kgb24KKyBsb2NhbF9zaGFyZGluZ19pbmZvCisKK0ZpeGVzCit8IHNyYy9tb25nby9zL2Rfc3RhdGUuY3BwOjgxOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnbW9uZ286OmVuYWJsZUxvY2FsU2hhcmRpbmdJbmZvKG1vbmdvOjpTZXJ2aWNlQ29udGV4dCosIHN0ZDo6ZnVuY3Rpb248Ym9vbCAobW9uZ286Ok9wZXJhdGlvbkNvbnRleHQqLCBzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0Jik+KScKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb25nby9zL1NDb25zY3JpcHQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9tb25nby9zL1NDb25zY3JpcHQgYi9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0CitpbmRleCA3MTcyMGJlNTE3Li41MWJkMTk5MTI3IDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAorKysrIGIvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAorQEAgLTMxNyw1ICszMTcsNiBAQCBlbnYuTGlicmFyeSgKKyAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2RiL3Mvc2hhcmRpbmciLAorICAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vZXhlY3V0b3IvbmV0d29ya19pbnRlcmZhY2VfZmFjdG9yeSIsCisgICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2NsaWVudC9zaGFyZF9sb2NhbCIsCisrICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2xvY2FsX3NoYXJkaW5nX2luZm8iLAorICAgICBdLAorICkKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTkxZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNDU4ZjgwZjQ4MmEyMDFiNDI3YTFjOTIyMzU4MDRkMGMzZjk4ZmQ1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTM6MDE6MTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIENvbmRpdGlvbmFsaXplIGdsaWJjIHNwZWNpZmljIHN0cmVycm9yX3IKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIC4uLi9hc2lvLWFzaW8tMS0xMS0wL2FzaW8vaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAgICAgfCAxMSArKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGhpcmRfcGFydHkvYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwIGIvc3JjL3RoaXJkX3BhcnR5L2FzaW8tYXNpby0xLTExLTAvYXNpby9pbmNsdWRlL2FzaW8vaW1wbC9lcnJvcl9jb2RlLmlwcAoraW5kZXggNGU3YmFkYjE0YS4uMGVlYWU4ODRlMiAxMDA2NDQKKy0tLSBhL3NyYy90aGlyZF9wYXJ0eS9hc2lvLWFzaW8tMS0xMS0wL2FzaW8vaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKKysrKyBiL3NyYy90aGlyZF9wYXJ0eS9hc2lvLWFzaW8tMS0xMS0wL2FzaW8vaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKK0BAIC05NywxNyArOTcsMTQgQEAgcHVibGljOgorICNpZiBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fUU5YX18pIHx8IGRlZmluZWQoX19TWU1CSUFOMzJfXykKKyAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyAgICAgcmV0dXJuIHN0cmVycm9yKHZhbHVlKTsKKy0jZWxpZiBkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgXAorLSAgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSBcCistICB8fCBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19ocHV4KSB8fCBkZWZpbmVkKF9fb3NmX18pIFwKKy0gIHx8IGRlZmluZWQoX19BTkRST0lEX18pCisrI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX0dOVV9TT1VSQ0UpCisrICAgIGNoYXIgYnVmWzI1Nl0gPSAiIjsKKysgICAgcmV0dXJuIHN0cmVycm9yX3IodmFsdWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworKyNlbHNlCisgICAgIGNoYXIgYnVmWzI1Nl0gPSAiIjsKKyAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyAgICAgc3RyZXJyb3Jfcih2YWx1ZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgIHJldHVybiBidWY7CistI2Vsc2UKKy0gICAgY2hhciBidWZbMjU2XSA9ICIiOworLSAgICByZXR1cm4gc3RyZXJyb3Jfcih2YWx1ZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgI2VuZGlmCisgI2VuZGlmIC8vIGRlZmluZWQoQVNJT19XSU5ET1dTKQorICAgfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NzFmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBhMWM3NzcwMjkyNmViODU0NmZmOTZiMDBiNWI5OTRmNzQ3OGRhYmFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMzoxMzoxNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNF0gd2lyZWR0aWdlcjogRGlzYWJsZSBzdHJ0b3VxIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2J1aWxkX2xpbnV4L3dpcmVkdGlnZXJfY29uZmlnLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oIGIvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaAoraW5kZXggMTEyMmUxZTMxOS4uZmRmZDQ4Njg3YiAxMDA2NDQKKy0tLSBhL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2J1aWxkX2xpbnV4L3dpcmVkdGlnZXJfY29uZmlnLmgKKysrKyBiL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2J1aWxkX2xpbnV4L3dpcmVkdGlnZXJfY29uZmlnLmgKK0BAIC0xMDEsNyArMTAxLDcgQEAKKyAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91cScgZnVuY3Rpb24uICovCistI2RlZmluZSBIQVZFX1NUUlRPVVEgMQorKy8qICN1bmRlZiBIQVZFX1NUUlRPVVEgMSAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3luY19maWxlX3JhbmdlJyBmdW5jdGlvbi4gKi8KKyAvKiAjdW5kZWYgSEFWRV9TWU5DX0ZJTEVfUkFOR0UgKi8KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNDZiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0FkZCBhbGlzZXMgZm9yIGFybTY0IHdoaWNoIGlzIHNhbWUgYXMgYWFyY2g2NAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBnaXQvU0NvbnN0cnVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL1NDb25zdHJ1Y3QKKysrKyBnaXQvU0NvbnN0cnVjdAorQEAgLTk5MCw2ICs5OTAsNyBAQCBlbGlmIGVuZGlhbiA9PSAiYmlnIjoKKyBwcm9jZXNzb3JfbWFjcm9zID0geworICAgICAnYXJtJyAgICAgOiB7ICdlbmRpYW4nOiAnbGl0dGxlJywgJ2RlZmluZXMnOiAoJ19fYXJtX18nLCkgfSwKKyAgICAgJ2FhcmNoNjQnIDogeyAnZW5kaWFuJzogJ2xpdHRsZScsICdkZWZpbmVzJzogKCdfX2FybTY0X18nLCAnX19hYXJjaDY0X18nKX0sCisrICAgICdhcm02NCcgICA6IHsgJ2VuZGlhbic6ICdsaXR0bGUnLCAnZGVmaW5lcyc6ICgnX19hcm02NF9fJywgJ19fYWFyY2g2NF9fJyl9LAorICAgICAnaTM4NicgICAgOiB7ICdlbmRpYW4nOiAnbGl0dGxlJywgJ2RlZmluZXMnOiAoJ19faTM4NicsICdfTV9JWDg2Jyl9LAorICAgICAncHBjNjRsZScgOiB7ICdlbmRpYW4nOiAnbGl0dGxlJywgJ2RlZmluZXMnOiAoJ19fcG93ZXJwYzY0X18nLCl9LAorICAgICAnczM5MHgnICAgOiB7ICdlbmRpYW4nOiAnYmlnJywgICAgJ2RlZmluZXMnOiAoJ19fczM5MHhfXycsKX0sCitJbmRleDogZ2l0L3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9TQ29uc2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL1NDb25zY3JpcHQKKysrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL1NDb25zY3JpcHQKK0BAIC0zMDEsNyArMzAxLDcgQEAgaWYgcHJvY2Vzc29yID09ICdpMzg2JzoKKyBlbGlmIHByb2Nlc3NvciA9PSAnYXJtJzoKKyAgICAgY3BwX2RlZmluZXNbJ0lBMzInXSA9ICcxJworICAgICBjcHBfZGVmaW5lc1snaWEzMiddID0gJzEnCistZWxpZiBwcm9jZXNzb3IgPT0gImFhcmNoNjQiOgorK2VsaWYgcHJvY2Vzc29yID09ICJhYXJjaDY0IiBvciBwcm9jZXNzb3IgPT0gJ2FybTY0JzoKKyAgICAgY3BwX2RlZmluZXNbJ2VmaTInXSA9ICcxJworICAgICBjcHBfZGVmaW5lc1snRUZJMiddID0gJzEnCisgIyBVc2luZyA2NCBiaXQgbGl0dGxlIGVuZGlhbgorSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9TQ29uc2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9TQ29uc2NyaXB0CitAQCAtMTM5LDcgKzEzOSw3IEBAIGNvbmRpdGlvbl9tYXAgPSB7CisgICAgICdQT1NJWF9IT1NUJyAgIDogbm90IGVudi5UYXJnZXRPU0lzKCd3aW5kb3dzJyksCisgICAgICdXSU5ET1dTX0hPU1QnIDogZW52LlRhcmdldE9TSXMoJ3dpbmRvd3MnKSwKKyAKKy0gICAgJ0FSTTY0X0hPU1QnICAgOiBlbnZbJ1RBUkdFVF9BUkNIJ10gPT0gJ2FhcmNoNjQnLAorKyAgICAnQVJNNjRfSE9TVCcgICA6IGVudlsnVEFSR0VUX0FSQ0gnXSBpbiAoJ2FhcmNoNjQnLCAnYXJtNjQnKSwKKyAgICAgJ1BPV0VSUENfSE9TVCcgOiBlbnZbJ1RBUkdFVF9BUkNIJ10gPT0gJ3BwYzY0bGUnLAorICAgICAnWDg2X0hPU1QnICAgICA6IGVudlsnVEFSR0VUX0FSQ0gnXSA9PSAneDg2XzY0JywKKyAgICAgJ1pTRVJJRVNfSE9TVCcgOiBlbnZbJ1RBUkdFVF9BUkNIJ10gPT0gJ3MzOTB4JywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiL2Rpc2FibGUtaHctY3JjMzItb24tYXJtNjQtczM5MHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNWMyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK2ltcG9ydGVkIGZyb20gZGViaWFuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9TQ29uc2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9TQ29uc2NyaXB0CitAQCAtMTY5LDcgKzE2OSw5IEBAIGlmIHVzZVNuYXBweToKKyAjIElmIG5vdCBhdmFpbGFibGUgYXQgcnVudGltZSwgd2UgZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGluIHNvbWUgY2FzZXMuCisgIworICMgT24gelNlcmllcyB3ZSBtYXkgZGlzYWJsZSBiZWNhdXNlIFNMRVMgMTEga2VybmVsIGRvZSBub3Qgc3VwcG9ydCB0aGUgaW5zdHJ1Y3Rpb25zLgorLWlmIG5vdCAoZW52WydUQVJHRVRfQVJDSCddID09ICdzMzkweCcgYW5kIGdldF9vcHRpb24oInVzZS1zMzkweC1jcmMzMiIpID09ICJvZmYiKToKKysjIERlYmlhbjogZGlzYWJsZSBoYXJkd2FyZS1hc3Npc3RlZCBjcmMzMiBvbiBzMzkweCBhbmQgYXJtNjQsIGFzIGF0IGxlYXN0IHRoZQorKyMgYnVpbGRkJ3MgZG8gbm90IHN1cHBvcnQgdGhlIGluc3RydWN0aW9ucy4KKytpZiBlbnZbJ1RBUkdFVF9BUkNIJ10gbm90IGluICgnczM5MHgnLCAnYXJtNjQnLCAnYWFyY2g2NCcpOgorICAgICBlbnYuQXBwZW5kKENQUERFRklORVM9WyJIQVZFX0NSQzMyX0hBUkRXQVJFIl0pCisgCisgd3RsaWIgPSBlbnYuTGlicmFyeSgKK0luZGV4OiBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvZGlzdC9maWxlbGlzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2Rpc3QvZmlsZWxpc3QKKysrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvZGlzdC9maWxlbGlzdAorQEAgLTU0LDcgKzU0LDYgQEAgc3JjL2NoZWNrc3VtL3Bvd2VyOC9jcmMzMl93cmFwcGVyLmMJUE9XRQorIHNyYy9jaGVja3N1bS9zb2Z0d2FyZS9jaGVja3N1bS5jCisgc3JjL2NoZWNrc3VtL3g4Ni9jcmMzMi14ODYuYwkJWDg2X0hPU1QKKyBzcmMvY2hlY2tzdW0venNlcmllcy9jcmMzMi1zMzkweC5jCVpTRVJJRVNfSE9TVAorLXNyYy9jaGVja3N1bS96c2VyaWVzL2NyYzMybGUtdnguc3gJWlNFUklFU19IT1NUCisgc3JjL2NvbmZpZy9jb25maWcuYworIHNyYy9jb25maWcvY29uZmlnX2FwaS5jCisgc3JjL2NvbmZpZy9jb25maWdfY2hlY2suYworSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9zcmMvY2hlY2tzdW0venNlcmllcy9jcmMzMi1zMzkweC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvc3JjL2NoZWNrc3VtL3pzZXJpZXMvY3JjMzItczM5MHguYworKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9zcmMvY2hlY2tzdW0venNlcmllcy9jcmMzMi1zMzkweC5jCitAQCAtNzgsNiArNzgsNyBAQCB1bnNpZ25lZCBpbnQgX193dF9jcmMzMmNfbGUodW5zaWduZWQgaW50CisgCQlyZXR1cm4gY3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgCX0KKyAKKysjaWYgZGVmaW5lZChIQVZFX0NSQzMyX0hBUkRXQVJFKQorIC8qIE1haW4gQ1JDLTMyIGZ1bmN0aW9ucyAqLworIERFRklORV9DUkMzMl9WWChfX3d0X2NyYzMyY19sZV92eCwgX193dF9jcmMzMmNfbGVfdmdmbV8xNiwgX193dF9jcmMzMmNfbGUpCisgCitAQCAtOTAsNiArOTEsNyBAQCBfX3d0X2NoZWNrc3VtX2h3KGNvbnN0IHZvaWQgKmNodW5rLCBzaXplCisgeworIAlyZXR1cm4gKH5fX3d0X2NyYzMyY19sZV92eCgweGZmZmZmZmZmLCBjaHVuaywgbGVuKSk7CisgfQorKyNlbmRpZgorIAorICNlbmRpZgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCmluZGV4IGYxYTY1NTUuLjBmZjdkMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIKQEAgLTEsMTggKzEsMzAgQEAKIFNVTU1BUlkgPSAibW9uZ29kYiIKLUxJQ0VOU0UgPSAiQUdQTC0zLjAgJiBBcGFjaGUtMi4wIgorTElDRU5TRSA9ICJBR1BMLTMuMCAmIEFwYWNoZS0yLjAgJiBabGliIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR05VLUFHUEwtMy4wLnR4dDttZDU9NzNmMWViMjA1MTdjNTViZjk0OTNiN2RkNmU0ODA3ODggXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgogCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlicGNyZSBsaWJwY2FwIHpsaWIiCitERVBFTkRTID0gIm9wZW5zc2wgbGlicGNyZSBsaWJwY2FwIHpsaWIgcHl0aG9uIGJvb3N0IgogCi1pbmhlcml0IHNjb25zCitpbmhlcml0IHNjb25zIGRvczJ1bml4IHNpdGVpbmZvCiAKLVBWID0gIjMuMy4wK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImFhY2QyMzFiZTA2MjZhMjA0Y2I0MDkwOGFmZGY2MmM0YjY3YmIwYWQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPW1hc3RlciBcCitQViA9ICIzLjQuNitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJjNTVlYjg2ZWY0NmVlN2FlZGUzYjFlMmE1ZDE4NGE3ZGY0YmZiNWI1IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21vbmdvZGIvbW9uZ28uZ2l0O2JyYW5jaD12My40IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vbmdvLUFkZC11c2luZy1zdGQtc3RyaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FybTY0LXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaCBcCiAgICAgICAgICAgICIKLQorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0iXAorICAgICAgICAgICBmaWxlOi8vMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogIyBXaXJlZHRpZ2VyIHN1cHBvcnRzIG9ubHkgNjQtYml0IHBsYXRmb3JtcwpAQCAtMjIsMTAgKzM0LDEzIEBACiAjIGdwZXJmdG9vbHMgY29tcGlsYXRpb24gZmFpbHMgZm9yIGFybSBiZWxvdyB2NyBiZWNhdXNlIG9mIG1pc3Npbmcgc3VwcG9ydCBvZgogIyBkbWIgb3BlcmF0aW9uLiBTbyB3ZSB1c2Ugc3lzdGVtLWFsbG9jYXRvciBpbnN0ZWFkIG9mIHRjbWFsbG9jCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9hcm12NiA9ICJ0Y21hbGxvYyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y21hbGxvYyIKIAogI3N0ZDo6Y3VycmVudF9leGNlcHRpb24gaXMgdW5kZWZpbmVkIGZvciBhcm0gPCB2NgogQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKIENPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjdhID0gIighLiphcm12N2EpLioiCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjd2ZSA9ICIoIS4qYXJtdjd2ZSkuKiIKIENPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKIENPTVBBVElCTEVfTUFDSElORV9wb3dlcnBjID0gIighLipwcGMpLioiCiAKQEAgLTQzLDkgKzU4LDE0IEBACiAgICAgICAgICAgICAgICAgIC0tdXNlLXN5c3RlbS16bGliIFwKICAgICAgICAgICAgICAgICAgLS1qcy1lbmdpbmU9bm9uZSBcCiAgICAgICAgICAgICAgICAgIC0tbm9zdHJpcCBcCisgICAgICAgICAgICAgICAgIC0tZW5kaWFuPSR7QGJhc2VfY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnbGl0dGxlJywgJ2JpZycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAogICAgICAgICAgICAgICAgICBtb25nb2QgbW9uZ29zIgogCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyB0ZXN0cyB1c2UgaGV4IGZsb2F0cywgbm90IHN1cHBvcnRlZCBpbiBwbGFpbiBDKysKKyAgICAgICAgc2VkIC1lICdzfC1zdGQ9YysrMTF8LXN0ZD1nbnUrKzExfGcnIC1pICR7U30vU0NvbnN0cnVjdAorfQogc2NvbnNfZG9fY29tcGlsZSgpIHsKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Njb25zICR7UEFSQUxMRUxfTUFLRX0gJHtFWFRSQV9PRVNDT05TfSB8fCBcCiAgICAgICAgIGRpZSAic2NvbnMgYnVpbGQgZXhlY3V0aW9uIGZhaWxlZC4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEta3BhcnR4LWluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZGQ4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDMzMDAyOGE1YTkwNGEwZGEzNzg4MTQxMDMwZTYxNDU2OWRjNWFhYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAyMzoyODoxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBrcGFydHg6IGluY2x1ZGUgbGltaXRzLmggZm9yIFBBVEhfTUFYCisKK2xvcGFydC5jOjc2OjEyOiBlcnJvcjogJ1BBVEhfTUFYJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnSU5UOF9NQVgnPworICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgICAgICAgICAgXn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGtwYXJ0eC9sb3BhcnQuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEva3BhcnR4L2xvcGFydC5jIGIva3BhcnR4L2xvcGFydC5jCitpbmRleCA3MDA1NDQ1Li41ZWZlNWRjIDEwMDY0NAorLS0tIGEva3BhcnR4L2xvcGFydC5jCisrKysgYi9rcGFydHgvbG9wYXJ0LmMKK0BAIC0yMiw2ICsyMiw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYjQyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLW11bHRpcGF0aC1hdHRlbXB0LWF0LWNvbW1vbi1tdWx0aXBhdGgucnVsZXMucGF0Y2gKQEAgLTAsMCArMSwxMDcgQEAKK0Zyb20gNWFiNTBlMGNiODg4ZTU1M2EyNjM1YmJiZjgxZWVhM2NkZWZmZWU2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTIgQXByIDIwMTcgMDk6MDc6NTEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8xNF0gbXVsdGlwYXRoOiBhdHRlbXB0IGF0IGNvbW1vbiBtdWx0aXBhdGgucnVsZXMKKworVGhpcyBpcyBhIHByb3Bvc2FsIHRvIHRyeSBhbmQgYnJpbmcgdGhlIFJlZGhhdCBhbmQgU3VTRSBtdWx0aXBhdGgucnVsZXMKK2Nsb3Nlci4gVGhlcmUgYXJlIGEgY291cGxlIG9mIGNoYW5nZXMgdGhhdCBJJ2QgbGlrZSBzb21lIGlucHV0IG9uLgorCitUaGUgYmlnIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGtwYXJ0eCBjYWxsIGludG8gdGhlIG11bHRpcGF0aCBydWxlcy4gIEhhbGYKK29mIHRoZSBjdXJyZW50IGtwYXJ0eC5ydWxlcyBmaWxlIGlzIGFib3V0IGNyZWF0aW5nIHN5bWxpbmtzIGZvciBtdWx0aXBsZQordHlwZXMgb2YgZG0gZGV2aWNlcy4gVGhlIG90aGVyIGhhbGYgYXV0by1jcmVhdGVzIGtwYXJ0eCBkZXZpY2VzIG9uIHRvcAorb2YgbXVsdGlwYXRoIGRldmljZXMuIFNpbmNlIGl0IGlzIG9ubHkgY3JlYXRpbmcga3BhcnR4IGRldmljZXMgb24gdG9wIG9mCittdWx0aXBhdGggZGV2aWNlcywgSSd2ZSBtb3ZlZCB0aGUgdGhlc2UgcnVsZXMgaW50byBtdWx0aXBhdGgucnVsZXMsIG9yCityYXRoZXIsIEkndmUgcmVwbGFjZWQgdGhlbSB3aXRoIHRoZSByZWRoYXQgcnVsZXMgaW4gbXVsdGlwYXRoLnJ1bGVzLiBUaGUKK2JpZ2dlc3QgZGlmZmVyZW5jZSBpcyB0aGUga3BhcnR4IGlzbid0IHJ1biBvbiBldmVyeSByZWxvYWQuICBJdCB3b3Jrcword2l0aCB0aGUgMTEtZG0tbXBhdGgucnVsZXMgY29kZSB0byBub3QgcnVuIGtwYXJ0eCBvbiBtdWx0aXBhdGhkCitnZW5lcmF0ZWQgcmVsb2FkcyBvciB3aGVuIHRoZXJlIGFyZW4ndCBhbnkgd29ya2luZyBwYXRocy4gSXQgZG9lcworcmVtZW1iZXIgaWYgaXQgZGlkbid0IGdldCB0byBydW4ga3BhcnR4IHdoZW4gaXQgd2FzIHN1cHBvc2VkIHRvIChiZWNhdXNlCit0aGVyZSB3ZXJlIG5vIHZhbGlkIHBhdGhzIG9yIHRoZSBkZXZpY2Ugd2FzIHN1c3BlbmRlZCkgYW5kIHdpbGwgbWFrZQorc3VyZSB0byBydW4gaXQgb24gdGhlIG5leHQgcG9zc2libGUgdWV2ZW50LgorCitUaGUgb3RoZXIgY2hhbmdlIGlzIHRoZSByZWRoYXQgbXVsdGlwYXRoIHJ1bGVzIHJlbW92ZSB0aGUgcGFydGl0aW9uCitkZXZpY2Ugbm9kZXMgZm9yIGRldmljZXMgY2xhaW1lZCBieSBtdWx0aXBhdGguIFRoZSB1ZGV2IHJ1bGUgd2lsbCBvbmx5CitkbyB0aGlzIG9uZSB0aW1lIChib3RoIHRvIGtlZXAgZnJvbSBydW5uaW5nIHBhcnR4IG9uIGV2ZXJ5IGV2ZW50LCBhbmQgc28KK3RoYXQgaWYgdXNlcnMgbWFudWFsbHkgcmVyZWFkIHRoZSBwYXJ0aXRpb24gdGFibGUsIHdlIGRvbid0IGtlZXAKK3JlbW92aW5nIHRoZW0gd2hlbiBjbGVhcmx5IHRoZXkgYXJlIHdhbnRlZCkuIFJlZGhhdCBkb2VzIHRoaXMgYmVjYXVzZSB3ZQoraGFkIG11bHRpcGxlIGN1c3RvbWVyIGlzc3VlcyB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHNjc2kgcGFydGl0aW9ucworaW5zdGVhZCBvZiB0aGUga3BhcnR4IGRldmljZXMuIE9idmlvdXNseSwgd2l0aCBzZXR0aW5nIHRoZSBwYXJ0aXRpb24KK2RldmljZXMgdG8gbm90IHJlYWR5IGFuZCBjbGVhcmluZyB0aGVpciBmc190eXBlLCB0aGlzIGlzbid0IGVzc2VudGlhbCwKK2J1dCBpdCBoYXMgaGVscGVkIG1ha2UgY3VzdG9tZXJzIGRvIHRoZSByaWdodCB0aGluZy4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisga3BhcnR4L2twYXJ0eC5ydWxlcyAgICAgICB8ICA4IC0tLS0tLS0tCisgbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9rcGFydHgva3BhcnR4LnJ1bGVzIGIva3BhcnR4L2twYXJ0eC5ydWxlcworaW5kZXggYTk1ODc5MS4uOTA2ZTMyMCAxMDA2NDQKKy0tLSBhL2twYXJ0eC9rcGFydHgucnVsZXMKKysrKyBiL2twYXJ0eC9rcGFydHgucnVsZXMKK0BAIC0zNCwxMiArMzQsNCBAQCBFTlZ7SURfRlNfTEFCRUxfRU5DfT09Ij8qIiwgSU1QT1JUe2RifT0iSURfRlNfTEFCRUxfRU5DIgorIEVOVntJRF9GU19VU0FHRX09PSJmaWxlc3lzdGVtfG90aGVyIiwgRU5We0lEX0ZTX0xBQkVMX0VOQ309PSI/KiIsIFwKKyAJU1lNTElOSys9ImRpc2svYnktbGFiZWwvJGVudntJRF9GU19MQUJFTF9FTkN9IgorIAorLSMgQ3JlYXRlIGRtIHRhYmxlcyBmb3IgcGFydGl0aW9ucworLUVOVntETV9BQ1RJT059PT0iUEFUSF9GQUlMRUR8UEFUSF9SRUlOU1RBVEVEIiwgR09UTz0ia3BhcnR4X2VuZCIKKy1FTlZ7RE1fTlJfVkFMSURfUEFUSFN9PT0iMCIsIEdPVE89ImtwYXJ0eF9lbmQiCistRU5We0VOVntETV9VREVWX1BSSU1BUllfU09VUkNFX0ZMQUd9IT0iMSIsIElNUE9SVHtkYn09IkRNX1NVQlNZU1RFTV9VREVWX0ZMQUcxIgorLUVOVntETV9TVUJTWVNURU1fVURFVl9GTEFHMX09PSIxIiwgR09UTz0ia3BhcnR4X2VuZCIKKy1FTlZ7RE1fU1RBVEV9IT0iU1VTUEVOREVEIiwgRU5We0RNX1VVSUR9PT0ibXBhdGgtKiIsIFwKKy0JUlVOKz0iL3NiaW4va3BhcnR4IC11biAtcCAtcGFydCAvZGV2LyRuYW1lIgorLQorIExBQkVMPSJrcGFydHhfZW5kIgorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCitpbmRleCA4NmRlZmMwLi42MTZhMDRjIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworQEAgLTEsMTMgKzEsMTMgQEAKKyAjIFNldCBETV9NVUxUSVBBVEhfREVWSUNFX1BBVEggaWYgdGhlIGRldmljZSBzaG91bGQgYmUgaGFuZGxlZCBieSBtdWx0aXBhdGgKKyBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89ImVuZF9tcGF0aCIKKyBBQ1RJT04hPSJhZGR8Y2hhbmdlIiwgR09UTz0iZW5kX21wYXRoIgorLUtFUk5FTCE9InNkKnxkYXNkKiIsIEdPVE89ImVuZF9tcGF0aCIKKy0KKytLRVJORUwhPSJzZCp8ZGFzZCp8cmJkKnxkbS0qIiwgR09UTz0iZW5kX21wYXRoIgorIElNUE9SVHtjbWRsaW5lfT0ibm9tcGF0aCIKKyBFTlZ7bm9tcGF0aH09PSI/KiIsIEdPVE89ImVuZF9tcGF0aCIKKyBJTVBPUlR7Y21kbGluZX09Im11bHRpcGF0aCIKKyBFTlZ7bXVsdGlwYXRofT09Im9mZiIsIEdPVE89ImVuZF9tcGF0aCIKKyAKKytLRVJORUw9PSJkbS0qIiwgR09UTz0iY2hlY2tfa3BhcnR4IgorIEVOVntERVZUWVBFfSE9InBhcnRpdGlvbiIsIEdPVE89InRlc3RfZGV2IgorIElNUE9SVHtwYXJlbnR9PSJETV9NVUxUSVBBVEhfREVWSUNFX1BBVEgiCisgRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH09PSIxIiwgRU5We0lEX0ZTX1RZUEV9PSJub25lIiwgXAorQEAgLTIxLDcgKzIxLDI4IEBAIFRFU1QhPSIkZW52e01QQVRIX1NCSU5fUEFUSH0vbXVsdGlwYXRoIiwgRU5We01QQVRIX1NCSU5fUEFUSH09Ii91c3Ivc2JpbiIKKyAKKyBFTlZ7RE1fTVVMVElQQVRIX0RFVklDRV9QQVRIfSE9IjEiLCBcCisgCVBST0dSQU09PSIkZW52e01QQVRIX1NCSU5fUEFUSH0vbXVsdGlwYXRoIC11ICVrIiwgXAorLQlFTlZ7RE1fTVVMVElQQVRIX0RFVklDRV9QQVRIfT0iMSIsIEVOVntJRF9GU19UWVBFfT0ibm9uZSIsIFwKKysJRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH09IjEiLCBFTlZ7SURfRlNfVFlQRX09Im1wYXRoX21lbWJlciIsIFwKKyAJRU5We1NZU1RFTURfUkVBRFl9PSIwIgorIAorK0VOVntETV9NVUxUSVBBVEhfREVWSUNFX1BBVEh9IT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKKysKKytJTVBPUlR7ZGJ9PSJETV9NVUxUSVBBVEhfV0lQRV9QQVJUUyIKKytFTlZ7RE1fTVVMVElQQVRIX1dJUEVfUEFSVFN9IT0iMSIsIEVOVntETV9NVUxUSVBBVEhfV0lQRV9QQVJUU309IjEiLCBcCisrCVJVTis9Ii9zYmluL3BhcnR4IC1kIC0tbnIgMS0xMDI0ICRlbnZ7REVWTkFNRX0iCisrR09UTz0iZW5kX21wYXRoIgorKworK0xBQkVMPSJjaGVja19rcGFydHgiCisrCisrSU1QT1JUe2RifT0iRE1fTVVMVElQQVRIX05FRURfS1BBUlRYIgorK0VOVntETV9VREVWX1BSSU1BUllfU09VUkNFX0ZMQUd9IT0iMSIsIElNUE9SVHtkYn09IkRNX1NVQlNZU1RFTV9VREVWX0ZMQUcxIgorK0VOVntETV9TVUJTWVNURU1fVURFVl9GTEFHMX09PSIxIiwgR09UTz0iZW5kX21wYXRoIgorK0FDVElPTiE9ImNoYW5nZSIsIEdPVE89ImVuZF9tcGF0aCIKKytFTlZ7RE1fVVVJRH0hPSJtcGF0aC0/KiIsIEdPVE89ImVuZF9tcGF0aCIKKytFTlZ7RE1fQUNUSVZBVElPTn09PSIxIiwgRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IjEiCisrRU5We0RNX1NVU1BFTkRFRH09PSIxIiwgR09UTz0iZW5kX21wYXRoIgorK0VOVntETV9BQ1RJT059PT0iUEFUSF9GQUlMRUQiLCBHT1RPPSJlbmRfbXBhdGgiCisrRU5We0RNX0FDVElWQVRJT059IT0iMSIsIEVOVntETV9NVUxUSVBBVEhfTkVFRF9LUEFSVFh9IT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKKytSVU4rPSIvc2Jpbi9rcGFydHggLXVuIC1wIC1wYXJ0IC9kZXYvJG5hbWUiCisrRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IiIKKysKKyBMQUJFTD0iZW5kX21wYXRoIgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLW11bHRpcGF0aGQuc2VydmljZS1FcnJvci1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLW11bHRpcGF0aGQuc2VydmljZS1FcnJvci1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwYzNjMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGhkLnNlcnZpY2UtRXJyb3ItZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA2MzA0ODNiOTczODM0OWM4YjNlNjM3YTAwODc5Yjk2ODM0YTMzY2RiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgeGluIDxsaXhpbi5mbnN0QGNuLmZ1aml0c3UuY29tPgotRGF0ZTogVHVlLCA3IEp1bCAyMDE1IDExOjM0OjM2ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aGQuc2VydmljZTogRXJyb3IgZml4Ci0KLUZhaWxlZCB0byBzdGFydCBEZXZpY2UtTWFwcGVyIE11bHRpcGF0aCBEZXZpY2UgQ29udHJvbGxlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tLQotIG11bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi1pbmRleCBlM2Q2ZjkxLi5hN2UwMGIyIDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKLSsrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi1AQCAtOCwxMSArOCwxMiBAQCBXYW50cz1sb2NhbC1mcy1wcmUudGFyZ2V0IG11bHRpcGF0aGQuc29ja2V0IGJsay1hdmFpbGFiaWxpdHkuc2VydmljZQotIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKLSAKLSBbU2VydmljZV0KLS1UeXBlPW5vdGlmeQotK1R5cGU9Zm9ya2luZwotIE5vdGlmeUFjY2Vzcz1tYWluCi0gTGltaXRDT1JFPWluZmluaXR5Ci0rUElERmlsZT0vdmFyL3J1bi9tdWx0aXBhdGhkLnBpZAotIEV4ZWNTdGFydFByZT0vc2Jpbi9tb2Rwcm9iZSAtYSBzY3NpX2RoX2FsdWEgc2NzaV9kaF9lbWMgc2NzaV9kaF9yZGFjIGRtLW11bHRpcGF0aAotLUV4ZWNTdGFydD0vc2Jpbi9tdWx0aXBhdGhkIC1kIC1zCi0rRXhlY1N0YXJ0PS9zYmluL211bHRpcGF0aGQKLSBFeGVjUmVsb2FkPS9zYmluL211bHRpcGF0aGQgcmVjb25maWd1cmUKLSAKLSBbSW5zdGFsbF0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDItUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMi1SSC1maXh1cC11ZGV2LXJ1bGVzLWZvci1yZWRoYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYzZDJlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDItUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDE1ODI1NTM4M2MwMmQzZmI4MWM4MmZiOWVjNmZkMzZmYjIzNGY2OGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDEzIEFwciAyMDE3IDA3OjIyOjIzIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTRdIFJIOiBmaXh1cCB1ZGV2IHJ1bGVzIGZvciByZWRoYXQKKworVGhlIG11bHRpcGF0aCBydWxlcyBuZWVkIHRvIHJ1biBhZnRlciBzY3NpX2lkIGlzIHJ1bi4gVGhpcyBtZWFucyBtb3ZpbmcKK3RoZW0gYWZ0ZXIgNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIGZvciByZWRoYXQuIEFsc28sIHdlIGRvbid0CitjdXJyZW50bHkgc2V0IHVwIGFsbCB0aGUgc3ltbGlua3MgdGhhdCBTdVNFIGRvZXMuIElmIHdlIHdhbnQgdGhlbSwgdGhleQorc2hvdWxkIGJlIGRvbmUgaW4gdGhlIGRldmljZS1tYXBwZXIgcGFja2FnZSwgc2luY2UgdGhleSBhcmUgZm9yIGFsbAorZGV2aWNlLW1hcHBlciBkZXZpY2VzLiBSZWRoYXQgYWxzbyB1c2VzIGEgZGlmZmVyZW50IG5hbWluZyBzY2hlbWUgZm9yCitwYXJ0aXRpb25zIHRoYW4gU3VTRS4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgTWFrZWZpbGUuaW5jICAgICAgICAgICAgICB8ICAyICstCisga3BhcnR4L01ha2VmaWxlICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCisgbXVsdGlwYXRoL01ha2VmaWxlICAgICAgICB8ICA0ICsrLS0KKyBtdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzIHwgIDMgKystCisgNCBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYworaW5kZXggMTgxNWY5YS4uMjU5MWZhOSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluYworKysrIGIvTWFrZWZpbGUuaW5jCitAQCAtNDcsNyArNDcsNyBAQCBlbmRpZgorIAorIHByZWZpeAkJPQorIGV4ZWNfcHJlZml4CT0gJChwcmVmaXgpCistYmluZGlyCQk9ICQoZXhlY19wcmVmaXgpL3NiaW4KKytiaW5kaXIJCT0gJChleGVjX3ByZWZpeCkvdXNyL3NiaW4KKyBsaWJ1ZGV2ZGlyCT0gJChwcmVmaXgpLyQoU1lTVEVNRFBBVEgpL3VkZXYKKyB1ZGV2cnVsZXNkaXIJPSAkKGxpYnVkZXZkaXIpL3J1bGVzLmQKKyBtdWx0aXBhdGhkaXIJPSAkKFRPUERJUikvbGlibXVsdGlwYXRoCitkaWZmIC0tZ2l0IGEva3BhcnR4L01ha2VmaWxlIGIva3BhcnR4L01ha2VmaWxlCitpbmRleCA3Yjc1MDMyLi5iZmE2ZmU4IDEwMDY0NAorLS0tIGEva3BhcnR4L01ha2VmaWxlCisrKysgYi9rcGFydHgvTWFrZWZpbGUKK0BAIC0yNiwxOSArMjYsMTkgQEAgJChFWEVDKTogJChPQkpTKQorIGluc3RhbGw6ICQoRVhFQykgJChFWEVDKS44CisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChiaW5kaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA3NTUgJChFWEVDKSAkKERFU1RESVIpJChiaW5kaXIpCistCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKQorLQkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1IGtwYXJ0eF9pZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKQorLQkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZAorLQkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IGtwYXJ0eC5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY2LWtwYXJ0eC5ydWxlcworKyMJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKGxpYnVkZXZkaXIpCisrIwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1IGtwYXJ0eF9pZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKQorKyMJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQKKysjCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQga3BhcnR4LnJ1bGVzICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjYta3BhcnR4LnJ1bGVzCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChtYW44ZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykuOC5neiAkKERFU1RESVIpJChtYW44ZGlyKQorIAorIHVuaW5zdGFsbDoKKyAJJChSTSkgJChERVNURElSKSQoYmluZGlyKS8kKEVYRUMpCisgCSQoUk0pICQoREVTVERJUikkKG1hbjhkaXIpLyQoRVhFQykuOC5negorLQkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9rcGFydHhfaWQKKy0JJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ni1rcGFydHgucnVsZXMKKy0JJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ny1rcGFydHgtY29tcGF0LnJ1bGVzCisrIwkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9rcGFydHhfaWQKKysjCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjYta3BhcnR4LnJ1bGVzCisrIwkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY3LWtwYXJ0eC1jb21wYXQucnVsZXMKKyAKKyBjbGVhbjoKKyAJJChSTSkgY29yZSAqLm8gJChFWEVDKSAqLmd6CitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL01ha2VmaWxlIGIvbXVsdGlwYXRoL01ha2VmaWxlCitpbmRleCBjODUzMTRlLi4xZTllZTRiIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL01ha2VmaWxlCisrKysgYi9tdWx0aXBhdGgvTWFrZWZpbGUKK0BAIC0yNCw3ICsyNCw3IEBAIGluc3RhbGw6CisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA3NTUgJChFWEVDKSAkKERFU1RESVIpJChiaW5kaXIpLworIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQodWRldnJ1bGVzZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IDExLWRtLW1wYXRoLnJ1bGVzICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKKy0JJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLnJ1bGVzICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNTYtbXVsdGlwYXRoLnJ1bGVzCisrCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcworIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuOGRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLjguZ3ogJChERVNURElSKSQobWFuOGRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKG1hbjVkaXIpCitAQCAtMzMsNyArMzMsNyBAQCBpbnN0YWxsOgorIHVuaW5zdGFsbDoKKyAJJChSTSkgJChERVNURElSKSQoYmluZGlyKS8kKEVYRUMpCisgCSQoUk0pICQoREVTVERJUikkKHVkZXZydWxlc2RpcikvMTEtZG0tbXBhdGgucnVsZXMKKy0JJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC81Ni1tdWx0aXBhdGgucnVsZXMKKysJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Mi1tdWx0aXBhdGgucnVsZXMKKyAJJChSTSkgJChERVNURElSKSQobWFuOGRpcikvJChFWEVDKS44Lmd6CisgCSQoUk0pICQoREVTVERJUikkKG1hbjVkaXIpLyQoRVhFQykuY29uZi41Lmd6CisgCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyBiL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKK2luZGV4IDYxNmEwNGMuLjRkNzhiOTggMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCitAQCAtMzMsNiArMzMsNyBAQCBHT1RPPSJlbmRfbXBhdGgiCisgCisgTEFCRUw9ImNoZWNrX2twYXJ0eCIKKyAKKytFTlZ7RE1fVVVJRH09PSJtcGF0aC0/KnxwYXJ0WzAtOV0qLW1wYXRoLT8qIiwgT1BUSU9OUys9ImxpbmtfcHJpb3JpdHk9MTAiCisgSU1QT1JUe2RifT0iRE1fTVVMVElQQVRIX05FRURfS1BBUlRYIgorIEVOVntETV9VREVWX1BSSU1BUllfU09VUkNFX0ZMQUd9IT0iMSIsIElNUE9SVHtkYn09IkRNX1NVQlNZU1RFTV9VREVWX0ZMQUcxIgorIEVOVntETV9TVUJTWVNURU1fVURFVl9GTEFHMX09PSIxIiwgR09UTz0iZW5kX21wYXRoIgorQEAgLTQyLDcgKzQzLDcgQEAgRU5We0RNX0FDVElWQVRJT059PT0iMSIsIEVOVntETV9NVUxUSVBBVEhfTkVFRF9LUEFSVFh9PSIxIgorIEVOVntETV9TVVNQRU5ERUR9PT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKKyBFTlZ7RE1fQUNUSU9OfT09IlBBVEhfRkFJTEVEIiwgR09UTz0iZW5kX21wYXRoIgorIEVOVntETV9BQ1RJVkFUSU9OfSE9IjEiLCBFTlZ7RE1fTVVMVElQQVRIX05FRURfS1BBUlRYfSE9IjEiLCBHT1RPPSJlbmRfbXBhdGgiCistUlVOKz0iL3NiaW4va3BhcnR4IC11biAtcCAtcGFydCAvZGV2LyRuYW1lIgorK1JVTis9Ii9zYmluL2twYXJ0eCAtdW4gL2Rldi8kbmFtZSIKKyBFTlZ7RE1fTVVMVElQQVRIX05FRURfS1BBUlRYfT0iIgorIAorIExBQkVMPSJlbmRfbXBhdGgiCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDMtUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAzLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NGU5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAzLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gNjlhNjdjMmVkMDlhZTUxYjUzZGU0MDI5NjZhOWY3YTRjYzczNzcxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMiBKdWwgMjAxNCAxMjo0OTo1MyAtMDUwMAorU3ViamVjdDogW1BBVENIIDAzLzE0XSBSSDogUmVtb3ZlIHRoZSBwcm9wZXJ0eSBibGFja2xpc3QgZXhjZXB0aW9uIGJ1aWx0aW4KKworTXVsdGlwYXRoIHNldCB0aGUgZGVmYXVsdCBwcm9wZXJ0eSBibGFja2xpc3QgZXhjZXB0aW9ucyB0bworKElEX1NDU0lfVlBEfElEX1dXTikuICBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGJsYWNrbGlzdGluZyBzb21lIGludGVybmFsCitkZXZpY2VzLiAgVGhlc2UgZGV2aWNlcyBtYXkgbmV2ZXIgaGF2ZSBtdWx0aXBsZSBwYXRocywgYnV0IGl0IGlzIG5pY2UKK3RvIGJlIGFibGUgdG8gc2V0IG11bHRpcGF0aCB1cCBvbiB0aGVtIGFsbCB0aGUgc2FtZS4gIFRoaXMgcGF0Y2ggc2ltcGx5CityZW1vdmVzIHRoZSBkZWZhdWx0LCBhbmQgbWFrZXMgaXQgc28gdGhhdCBpZiBubyBwcm9wZXJ0eQorYmxhY2tsaXN0X2V4Y2VwdGlvbiBpcyBnaXZlbiwgdGhlbiBkZXZpY2VzIGFyZW4ndCBmYWlsZWQgZm9yIG5vdCBtYXRjaGluZworaXQuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9ibGFja2xpc3QuYyAgIHwgMTUgKysrKysrLS0tLS0tLS0tCisgbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgfCAgNCAtLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2JsYWNrbGlzdC5jIGIvbGlibXVsdGlwYXRoL2JsYWNrbGlzdC5jCitpbmRleCBlZTM5NmUyLi4xOWQ0Njk3IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2JsYWNrbGlzdC5jCisrKysgYi9saWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMKK0BAIC0xODEsMTIgKzE4MSw2IEBAIHNldHVwX2RlZmF1bHRfYmxpc3QgKHN0cnVjdCBjb25maWcgKiBjb25mKQorIAlpZiAoc3RvcmVfYmxlKGNvbmYtPmJsaXN0X2Rldm5vZGUsIHN0ciwgT1JJR0lOX0RFRkFVTFQpKQorIAkJcmV0dXJuIDE7CisgCistCXN0ciA9IFNUUkRVUCgiKFNDU0lfSURFTlRffElEX1dXTikiKTsKKy0JaWYgKCFzdHIpCistCQlyZXR1cm4gMTsKKy0JaWYgKHN0b3JlX2JsZShjb25mLT5lbGlzdF9wcm9wZXJ0eSwgc3RyLCBPUklHSU5fREVGQVVMVCkpCistCQlyZXR1cm4gMTsKKy0KKyAJdmVjdG9yX2ZvcmVhY2hfc2xvdCAoY29uZi0+aHd0YWJsZSwgaHdlLCBpKSB7CisgCQlpZiAoaHdlLT5ibF9wcm9kdWN0KSB7CisgCQkJaWYgKF9ibGFja2xpc3RfZGV2aWNlKGNvbmYtPmJsaXN0X2RldmljZSwgaHdlLT52ZW5kb3IsCitAQCAtMzkwLDkgKzM4NCwxMiBAQCBmaWx0ZXJfcHJvcGVydHkoc3RydWN0IGNvbmZpZyAqIGNvbmYsIHN0cnVjdCB1ZGV2X2RldmljZSAqIHVkZXYpCisgCSAqIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgdGhlICdub3JtYWwnIG1hdGNoaW5nOworIAkgKiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgX2hhc18gdG8gbWF0Y2guCisgCSAqLworLQlsb2dfZmlsdGVyKGRldm5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCistCQkgICBNQVRDSF9QUk9QRVJUWV9CTElTVF9NSVNTSU5HKTsKKy0JcmV0dXJuIE1BVENIX1BST1BFUlRZX0JMSVNUX01JU1NJTkc7CisrCWlmIChWRUNUT1JfU0laRShjb25mLT5lbGlzdF9wcm9wZXJ0eSkpIHsKKysJCWxvZ19maWx0ZXIoZGV2bmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKysJCQkgICBNQVRDSF9QUk9QRVJUWV9CTElTVF9NSVNTSU5HKTsKKysJCXJldHVybiBNQVRDSF9QUk9QRVJUWV9CTElTVF9NSVNTSU5HOworKwl9CisrCXJldHVybiAwOworIH0KKyAKKyB2b2lkCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQoraW5kZXggZjA0ZmYxOS4uZmJiYmIyNyAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorQEAgLTEwMTQsMTAgKzEwMTQsNiBAQCBUaGUgXGZJV29ybGQgV2lkZSBJZGVudGlmaWNhdGlvblxmUiBvZiBhIGRldmljZS4KKyAuVFAKKyAuQiBwcm9wZXJ0eQorIFJlZ3VsYXIgZXhwcmVzc2lvbiBvZiB0aGUgdWRldiBwcm9wZXJ0eSB0byBiZSB3aGl0ZWxpc3RlZC4KKy0uUlMKKy0uVFAKKy1UaGUgZGVmYXVsdCBpczogXGZCKFNDU0lfSURFTlRffElEX1dXTilcZlIKKy0uUkUKKyAuVFAKKyAuQiBkZXZpY2UKKyBTdWJzZWN0aW9uIGZvciB0aGUgZGV2aWNlIGRlc2NyaXB0aW9uLiBUaGlzIHN1YnNlY3Rpb24gcmVjb2duaXplcyB0aGUKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNC1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA0LVJILWRvbi10LXN0YXJ0LXdpdGhvdXQtYS1jb25maWctZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2E2ZDNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNC1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gYjJiNTA0ZmMxOTU5YzdhM2YwYTg0M2MzYzIwNGU4ZTE5M2I2NzViNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTUgT2N0IDIwMTQgMTA6Mzk6MzAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xNF0gUkg6IGRvbid0IHN0YXJ0IHdpdGhvdXQgYSBjb25maWcgZmlsZQorCitJZiAvZXRjL211bHRpcGF0aC5jb25mIGRvZXNuJ3QgZXhpc3QsIGRvbid0IHN0YXJ0IG11bHRpcGF0aGQgYW5kIGJsYWNrbGlzdAorYWxsIGRldmljZXMgd2hlbiBydW5uaW5nIG11bHRpcGF0aC4gIEEgY29tcGxldGVseSBibGFuayBjb25maWd1cmF0aW9uIGZpbGUKK2lzIGFsbW9zdCBuZXZlciB3aGF0IHVzZXJzIHdhbnQuICBBbHNvLCBwZW9wbGUgbWF5IGhhdmUgdGhlIG11bHRpcGF0aAorcGFja2FnZXMgaW5zdGFsbGVkIGJ1dCBkb24ndCB3YW50IHRvIHVzZSB0aGVtLiAgVGhpcyBwYXRjaCBwcm92aWRlcyBhCitzaW1wbGUgd2F5IHRvIGRpc2FibGUgbXVsdGlwYXRoLiAgU2ltcGx5IHJlbW92aW5nIG9yIHJlbmFtaW5nCisvZXRjL211bHRpcGF0aC5jb25mIHdpbGwga2VlcCBtdWx0aXBhdGggZnJvbSBkb2luZyBhbnl0aGluZy4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2NvbmZpZy5jICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKworIGxpYm11bHRpcGF0aC9jb25maWcuaCAgICAgICAgIHwgIDEgKworIG11bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgICAgIHwgIDEgKworIG11bHRpcGF0aGQvbXVsdGlwYXRoZC44ICAgICAgIHwgIDIgKysKKyBtdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSB8ICAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuYyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworaW5kZXggYmI2NjE5Yi4uYWFlNjliOCAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCitAQCAtMjUsNiArMjUsNyBAQAorICNpbmNsdWRlICJwcmlvLmgiCisgI2luY2x1ZGUgImRldm1hcHBlci5oIgorICNpbmNsdWRlICJtcGF0aF9jbWQuaCIKKysjaW5jbHVkZSAidmVyc2lvbi5oIgorIAorIHN0YXRpYyBpbnQKKyBod2Vfc3RybWF0Y2ggKHN0cnVjdCBod2VudHJ5ICpod2UxLCBzdHJ1Y3QgaHdlbnRyeSAqaHdlMikKK0BAIC02NjcsNiArNjY4LDIyIEBAIGxvYWRfY29uZmlnIChjaGFyICogZmlsZSkKKyAJCQlmYWN0b3JpemVfaHd0YWJsZShjb25mLT5od3RhYmxlLCBidWlsdGluX2h3dGFibGVfc2l6ZSk7CisgCQl9CisgCisrCX0gZWxzZSB7CisrCQljb25kbG9nKDAsICIvZXRjL211bHRpcGF0aC5jb25mIGRvZXMgbm90IGV4aXN0LCBibGFja2xpc3RpbmcgYWxsIGRldmljZXMuIik7CisrCQljb25kbG9nKDAsICJBIGRlZmF1bHQgbXVsdGlwYXRoLmNvbmYgZmlsZSBpcyBsb2NhdGVkIGF0Iik7CisrCQljb25kbG9nKDAsICIvdXNyL3NoYXJlL2RvYy9kZXZpY2UtbWFwcGVyLW11bHRpcGF0aC0lZC4lZC4lZC9tdWx0aXBhdGguY29uZiIsIE1VTFRJUEFUSF9WRVJTSU9OKFZFUlNJT05fQ09ERSkpOworKwkJaWYgKGNvbmYtPmJsaXN0X2Rldm5vZGUgPT0gTlVMTCkgeworKwkJCWNvbmYtPmJsaXN0X2Rldm5vZGUgPSB2ZWN0b3JfYWxsb2MoKTsKKysJCQlpZiAoIWNvbmYtPmJsaXN0X2Rldm5vZGUpIHsKKysJCQkJY29uZGxvZygwLCAiY2Fubm90IGFsbG9jYXRlIGJsYWNrbGlzdFxuIik7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKysJCX0KKysJCWlmIChzdG9yZV9ibGUoY29uZi0+Ymxpc3RfZGV2bm9kZSwgc3RyZHVwKCIuKiIpLAorKwkJICAgICAgICAgICAgICBPUklHSU5fTk9fQ09ORklHKSkgeworKwkJCWNvbmRsb2coMCwgImNhbm5vdCBzdG9yZSBkZWZhdWx0IG5vLWNvbmZpZyBibGFja2xpc3RcbiIpOworKwkJCWdvdG8gb3V0OworKwkJfQorIAl9CisgCisgCWNvbmYtPnByb2Nlc3NlZF9tYWluX2NvbmZpZyA9IDE7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NvbmZpZy5oIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5oCitpbmRleCBmZmM2OWI1Li42MTQzMzFjIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NvbmZpZy5oCisrKysgYi9saWJtdWx0aXBhdGgvY29uZmlnLmgKK0BAIC03LDYgKzcsNyBAQAorIAorICNkZWZpbmUgT1JJR0lOX0RFRkFVTFQgMAorICNkZWZpbmUgT1JJR0lOX0NPTkZJRyAgMQorKyNkZWZpbmUgT1JJR0lOX05PX0NPTkZJRyAyCisgCisgLyoKKyAgKiBJbiBrZXJuZWwsIGZhc3RfaW9fZmFpbCA9PSAwIG1lYW5zIGltbWVkaWF0ZSBmYWlsdXJlIG9uIHJwb3J0IGRlbGV0ZS4KK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworaW5kZXggNGQ3OGI5OC4uNTc1Mzc2NiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKKysrKyBiL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKK0BAIC02LDYgKzYsNyBAQCBJTVBPUlR7Y21kbGluZX09Im5vbXBhdGgiCisgRU5We25vbXBhdGh9PT0iPyoiLCBHT1RPPSJlbmRfbXBhdGgiCisgSU1QT1JUe2NtZGxpbmV9PSJtdWx0aXBhdGgiCisgRU5We211bHRpcGF0aH09PSJvZmYiLCBHT1RPPSJlbmRfbXBhdGgiCisrVEVTVCE9Ii9ldGMvbXVsdGlwYXRoLmNvbmYiLCBHT1RPPSJlbmRfbXBhdGgiCisgCisgS0VSTkVMPT0iZG0tKiIsIEdPVE89ImNoZWNrX2twYXJ0eCIKKyBFTlZ7REVWVFlQRX0hPSJwYXJ0aXRpb24iLCBHT1RPPSJ0ZXN0X2RldiIKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuOCBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC44CitpbmRleCA0Yzc2NWFmLi5jMTQ5OWE1IDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLjgKKysrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC44CitAQCAtMzksNiArMzksOCBAQCBtYXAgcmVnYWlucyBpdHMgbWF4aW11bSBwZXJmb3JtYW5jZSBhbmQgcmVkdW5kYW5jeS4KKyBUaGlzIGRhZW1vbiBleGVjdXRlcyB0aGUgZXh0ZXJuYWwgXGZCbXVsdGlwYXRoXGZSIHRvb2wgd2hlbiBldmVudHMgb2NjdXIuCisgSW4gdHVybiwgdGhlIG11bHRpcGF0aCB0b29sIHNpZ25hbHMgdGhlIG11bHRpcGF0aGQgZGFlbW9uIHdoZW4gaXQgaXMgZG9uZSB3aXRoCisgZGV2bWFwIHJlY29uZmlndXJhdGlvbiwgc28gdGhhdCBpdCBjYW4gcmVmcmVzaCBpdHMgZmFpbGVkIHBhdGggbGlzdC4KKysKKytJbiB0aGlzIExpbnV4IGRpc3RyaWJ1dGlvbiwgbXVsdGlwYXRoZCBkb2VzIG5vdCBydW4gdW5sZXNzIGEgL2V0Yy9tdWx0aXBhdGguY29uZmZpbGUgZXhpc3RzCisgLgorIC4KKyAuXCIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGlmZiAtLWdpdCBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlIGIvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKK2luZGV4IGZkNjZjZjYuLmZhZmQwODggMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQorKysrIGIvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKK0BAIC00LDYgKzQsNyBAQCBXYW50cz1zeXN0ZW1kLXVkZXYtdHJpZ2dlci5zZXJ2aWNlIHN5c3RlbWQtdWRldi1zZXR0bGUuc2VydmljZQorIEJlZm9yZT1pc2NzaS5zZXJ2aWNlIGlzY3NpZC5zZXJ2aWNlIGx2bTItbHZtZXRhZC5zZXJ2aWNlIGx2bTItYWN0aXZhdGlvbi1lYXJseS5zZXJ2aWNlCisgQmVmb3JlPWxvY2FsLWZzLXByZS50YXJnZXQgYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlCisgQWZ0ZXI9bXVsdGlwYXRoZC5zb2NrZXQgc3lzdGVtZC11ZGV2LXRyaWdnZXIuc2VydmljZSBzeXN0ZW1kLXVkZXYtc2V0dGxlLnNlcnZpY2UKKytDb25kaXRpb25QYXRoRXhpc3RzPS9ldGMvbXVsdGlwYXRoLmNvbmYKKyBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCisgQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAorIENvbmRpdGlvbktlcm5lbENvbW1hbmRMaW5lPSFub21wYXRoCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDUtUkgtYWRkLW1wYXRoY29uZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDUtUkgtYWRkLW1wYXRoY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2VmNDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNS1SSC1hZGQtbXBhdGhjb25mLnBhdGNoCkBAIC0wLDAgKzEsNjQ4IEBACitGcm9tIGRlNDQ1MDRmZTdmNzgwMmNkNDc0ZWZkOTJhYzE1YjVhODg1N2RiMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDE2IE9jdCAyMDE0IDE1OjQ5OjAxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTRdIFJIOiBhZGQgbXBhdGhjb25mCisKK21wYXRoY29uZiBpcyBhIHByb2dyYW0gKGxhcmdlbHkgYmFzZWQgb24gbHZtY29tZikgdG8gaGVscCB1c2VycworY29uZmlndXJlIC9ldGMvbXVsdGlwYXRoLmNvbmYgYW5kIGVuYWJsZSBvciBkaXNhYmxlIG11bHRpcGF0aGluZy4gIEl0CitoYXMgYSBjb3VwbGUgb2YgYnVpbHQtaW4gb3B0aW9ucyB0aGF0IGNhbiBiZSBzZXQgZGlyZWN0bHkgZnJvbSB0aGUKK2NvbW1hbmQgbGluZS4gIEJ1dCwgbW9zdGx5IGl0IGlzIHVzZWQgdG8gZ2V0IGEgbXVsdGlwYXRoLmNvbmYgZmlsZQord2l0aCB0aGUgT1MgZGVmYXVsdHMsIGFuZCB0byBlbmFibGUgYW5kIGRpc2FibGUgbXVsdGlwYXRoaW5nIHZpYQorYSBzaW5nbGUgY29tbWFuZC4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2NvbmZpZy5jIHwgICAxICsKKyBtdWx0aXBhdGgvTWFrZWZpbGUgICAgfCAgIDUgKworIG11bHRpcGF0aC9tcGF0aGNvbmYgICB8IDQ2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIG11bHRpcGF0aC9tcGF0aGNvbmYuOCB8IDEwMSArKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgNTcxIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbXVsdGlwYXRoL21wYXRoY29uZgorIGNyZWF0ZSBtb2RlIDEwMDY0NCBtdWx0aXBhdGgvbXBhdGhjb25mLjgKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuYyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworaW5kZXggYWFlNjliOC4uYzQ4NTc0OCAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCitAQCAtNjcyLDYgKzY3Miw3IEBAIGxvYWRfY29uZmlnIChjaGFyICogZmlsZSkKKyAJCWNvbmRsb2coMCwgIi9ldGMvbXVsdGlwYXRoLmNvbmYgZG9lcyBub3QgZXhpc3QsIGJsYWNrbGlzdGluZyBhbGwgZGV2aWNlcy4iKTsKKyAJCWNvbmRsb2coMCwgIkEgZGVmYXVsdCBtdWx0aXBhdGguY29uZiBmaWxlIGlzIGxvY2F0ZWQgYXQiKTsKKyAJCWNvbmRsb2coMCwgIi91c3Ivc2hhcmUvZG9jL2RldmljZS1tYXBwZXItbXVsdGlwYXRoLSVkLiVkLiVkL211bHRpcGF0aC5jb25mIiwgTVVMVElQQVRIX1ZFUlNJT04oVkVSU0lPTl9DT0RFKSk7CisrCQljb25kbG9nKDAsICJZb3UgY2FuIHJ1biAvc2Jpbi9tcGF0aGNvbmYgdG8gY3JlYXRlIG9yIG1vZGlmeSAvZXRjL211bHRpcGF0aC5jb25mIik7CisgCQlpZiAoY29uZi0+Ymxpc3RfZGV2bm9kZSA9PSBOVUxMKSB7CisgCQkJY29uZi0+Ymxpc3RfZGV2bm9kZSA9IHZlY3Rvcl9hbGxvYygpOworIAkJCWlmICghY29uZi0+Ymxpc3RfZGV2bm9kZSkgeworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9NYWtlZmlsZSBiL211bHRpcGF0aC9NYWtlZmlsZQoraW5kZXggMWU5ZWU0Yi4uM2Q0ZDQ1OSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9NYWtlZmlsZQorKysrIGIvbXVsdGlwYXRoL01ha2VmaWxlCitAQCAtMTgsMTAgKzE4LDEyIEBAICQoRVhFQyk6ICQoT0JKUykKKyAJJChDQykgJChDRkxBR1MpICQoT0JKUykgLW8gJChFWEVDKSAkKExERkxBR1MpICQoTElCREVQUykKKyAJJChHWklQKSAkKEVYRUMpLjggPiAkKEVYRUMpLjguZ3oKKyAJJChHWklQKSAkKEVYRUMpLmNvbmYuNSA+ICQoRVhFQykuY29uZi41Lmd6CisrCSQoR1pJUCkgbXBhdGhjb25mLjggPiBtcGF0aGNvbmYuOC5negorIAorIGluc3RhbGw6CisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChiaW5kaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA3NTUgJChFWEVDKSAkKERFU1RESVIpJChiaW5kaXIpLworKwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1IG1wYXRoY29uZiAkKERFU1RESVIpJChiaW5kaXIpLworIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQodWRldnJ1bGVzZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IDExLWRtLW1wYXRoLnJ1bGVzICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLnJ1bGVzICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjItbXVsdGlwYXRoLnJ1bGVzCitAQCAtMjksMTMgKzMxLDE2IEBAIGluc3RhbGw6CisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS44Lmd6ICQoREVTVERJUikkKG1hbjhkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChtYW41ZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykuY29uZi41Lmd6ICQoREVTVERJUikkKG1hbjVkaXIpCisrCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgbXBhdGhjb25mLjguZ3ogJChERVNURElSKSQobWFuOGRpcikKKyAKKyB1bmluc3RhbGw6CisgCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvJChFWEVDKQorIAkkKFJNKSAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpLzExLWRtLW1wYXRoLnJ1bGVzCisgCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjItbXVsdGlwYXRoLnJ1bGVzCisrCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvbXBhdGhjb25mCisgCSQoUk0pICQoREVTVERJUikkKG1hbjhkaXIpLyQoRVhFQykuOC5negorIAkkKFJNKSAkKERFU1RESVIpJChtYW41ZGlyKS8kKEVYRUMpLmNvbmYuNS5negorKwkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS9tcGF0aGNvbmYuOC5negorIAorIGNsZWFuOgorIAkkKFJNKSBjb3JlICoubyAkKEVYRUMpICouZ3oKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXBhdGhjb25mIGIvbXVsdGlwYXRoL21wYXRoY29uZgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU4MzkxMzQKKy0tLSAvZGV2L251bGwKKysrKyBiL211bHRpcGF0aC9tcGF0aGNvbmYKK0BAIC0wLDAgKzEsNDY0IEBACisrIyEvYmluL2Jhc2gKKysjCisrIyBDb3B5cmlnaHQgKEMpIDIwMTAgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyMKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCBwYWNrYWdlLgorKyMKKysjIFRoaXMgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgaXMgbWFkZSBhdmFpbGFibGUgdG8gYW55b25lIHdpc2hpbmcgdG8gdXNlLAorKyMgbW9kaWZ5LCBjb3B5LCBvciByZWRpc3RyaWJ1dGUgaXQgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKKysjIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2LjIuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisrCisrIworKyMgU2ltcGxlIGVkaXR0aW5nIG9mIC9ldGMvbXVsdGlwYXRoLmNvbmYKKysjIFRoaXMgcHJvZ3JhbSB3YXMgbGFyZ2VseSByaXBwZWQgb2ZmIGZyb20gbHZtY29uZgorKyMKKysKKyt1bnNldCBFTkFCTEUgRklORCBGUklFTkRMWSBNT0RVTEUgTVVMVElQQVRIRCBIQVZFX0RJU0FCTEUgSEFWRV9XV0lEX0RJU0FCTEUgSEFWRV9GSU5EIEhBVkVfQkxBQ0tMSVNUIEhBVkVfRVhDRVBUSU9OUyBIQVZFX0RFRkFVTFRTIEhBVkVfRlJJRU5ETFkgSEFWRV9NVUxUSVBBVEhEIEhBVkVfTU9EVUxFIEhBVkVfT1VURklMRSBTSE9XX1NUQVRVUyBDSEFOR0VEX0NPTkZJRyBXV0lEX0xJU1QKKysKKytERUZBVUxUX0NPTkZJRz0iIyBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCBjb25maWd1cmF0aW9uIGZpbGUKKysKKysjIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMsIHJ1biBlaXRoZXI6CisrIyAjIG11bHRpcGF0aCAtdAorKyMgb3IKKysjICMgbXVsdGlwYXRoZCBzaG93IGNvbmZpZworKworKyMgRm9yIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aCBkZXNjcmlwdGlvbnMsIHNlZSB0aGUKKysjIG11bHRpcGF0aC5jb25mIG1hbiBwYWdlLgorKworK2RlZmF1bHRzIHsKKysJdXNlcl9mcmllbmRseV9uYW1lcyB5ZXMKKysJZmluZF9tdWx0aXBhdGhzIHllcworK30KKysKKytibGFja2xpc3RfZXhjZXB0aW9ucyB7CisrICAgICAgICBwcm9wZXJ0eSBcIihTQ1NJX0lERU5UX3xJRF9XV04pXCIKKyt9IgorKworK0NPTkZJR0ZJTEU9Ii9ldGMvbXVsdGlwYXRoLmNvbmYiCisrT1VUUFVURklMRT0iL2V0Yy9tdWx0aXBhdGguY29uZiIKKytNVUxUSVBBVEhESVI9Ii9ldGMvbXVsdGlwYXRoIgorK1RNUEZJTEU9Ii9ldGMvbXVsdGlwYXRoLy5tdWx0aXBhdGguY29uZi50bXAiCisrV1dJRFM9MAorKworK2Z1bmN0aW9uIHVzYWdlCisreworKwllY2hvICJ1c2FnZTogJDAgPGNvbW1hbmQ+IgorKwllY2hvICIiCisrCWVjaG8gIkNvbW1hbmRzOiIKKysJZWNobyAiRW5hYmxlOiAtLWVuYWJsZSAiCisrCWVjaG8gIkRpc2FibGU6IC0tZGlzYWJsZSIKKysJZWNobyAiT25seSBhbGxvdyBjZXJ0YWluIHd3aWRzIChpbnN0ZWFkIG9mIGVuYWJsZSk6IC0tYWxsb3cgPFdXSUQ+IgorKwllY2hvICJTZXQgdXNlcl9mcmllbmRseV9uYW1lcyAoRGVmYXVsdCB5KTogLS11c2VyX2ZyaWVuZGx5X25hbWVzIDx5fG4+IgorKwllY2hvICJTZXQgZmluZF9tdWx0aXBhdGhzIChEZWZhdWx0IHkpOiAtLWZpbmRfbXVsdGlwYXRocyA8eXxuPiIKKysJZWNobyAiTG9hZCB0aGUgZG0tbXVsdGlwYXRoIG1vZHVsZXMgb24gZW5hYmxlIChEZWZhdWx0IHkpOiAtLXdpdGhfbW9kdWxlIDx5fG4+IgorKwllY2hvICJzdGFydC9zdG9wL3JlbG9hZCBtdWx0aXBhdGhkIChEZWZhdWx0IG4pOiAtLXdpdGhfbXVsdGlwYXRoZCA8eXxuPiIKKysJZWNobyAic2VsZWN0IG91dHB1dCBmaWxlIChEZWZhdWx0IC9ldGMvbXVsdGlwYXRoLmNvbmYpOiAtLW91dGZpbGUgPEZJTEU+IgorKwllY2hvICIiCisrfQorKworK2Z1bmN0aW9uIGFkZF93d2lkCisreworKwlJTkRFWD0wCisrCXdoaWxlIFsgIiRJTkRFWCIgLWx0ICIkV1dJRFMiIF0gOyBkbworKwkJaWYgWyAiJDEiID0gIiR7V1dJRF9MSVNUWyRJTkRFWF19IiBdIDsgdGhlbgorKwkJCXJldHVybgorKwkJZmkKKysJCSgoSU5ERVgrKykpCisrCWRvbmUKKysJV1dJRF9MSVNUWyRXV0lEU109IiQxIgorKwkoKFdXSURTKyspKQorK30KKysKKytmdW5jdGlvbiBnZXRfZG1fZGVwcworK3sKKysJc2hpZnQgMworKwl3aGlsZSBbIC1uICIkMSIgLWEgLW4gIiQyIiBdOyBkbworKwkJTUFKT1I9JChlY2hvICQxIHwgdHIgLWQgJygsJykKKysJCU1JTk9SPSQoZWNobyAkMiB8IHRyIC1kICcpJykKKysJCVVVSUQ9YGRtc2V0dXAgaW5mbyAtYyAtLW5vaGVhZGluZ3MgLW8gdXVpZCAtaiAkTUFKT1IgLW0gJE1JTk9SICAyPiAvZGV2L251bGxgCisrCQlpZiBbIC1uICIkVVVJRCIgXSA7IHRoZW4KKysJCQlzZXRfZG1fd3dpZCAkVVVJRAorKwkJZmkKKysJCXNoaWZ0IDIKKysJZG9uZQorK30KKysKKytmdW5jdGlvbiBzZXRfZG1fd3dpZAorK3sKKysJaWYgW1sgIiQxIiA9fiBecGFydFtbOmRpZ2l0Ol1dKy1tcGF0aC0gXV0gOyB0aGVuCisrCQlhZGRfd3dpZCAiJHsxIyNwYXJ0Ki1tcGF0aC19IgorKwllbGlmIFtbICIkMSIgPX4gXm1wYXRoLSBdXSA7IHRoZW4KKysJCWFkZF93d2lkICIkezEjI21wYXRoLX0iCisrCWVsc2UKKysJCWdldF9kbV9kZXBzIGBkbXNldHVwIGRlcHMgLXUgJDFgCisrCWZpCisrfQorKworK2Z1bmN0aW9uIHNldF93d2lkCisreworKwlVVUlEPSIiCisrCWlmIFtbICIkMSIgPX4gXltbOmRpZ2l0Ol1dKzpbWzpkaWdpdDpdXSskIF1dIDsgdGhlbgorKwkJTUFKT1I9JHsxJSU6Kn0KKysJCU1JTk9SPSR7MSMjKjp9CisrCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgLWogJE1BSk9SIC1tICRNSU5PUiAgMj4gL2Rldi9udWxsYAorKwllbHNlCisrCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgJDEgMj4gL2Rldi9udWxsYAorKwlmaQorKwlpZiBbIC1uICIkVVVJRCIgXSA7IHRoZW4KKysJCXNldF9kbV93d2lkICRVVUlECisrCWVsc2UKKysJCWFkZF93d2lkICIkMSIKKysJZmkKKyt9CisrCisrZnVuY3Rpb24gcGFyc2VfYXJncworK3sKKysJd2hpbGUgWyAtbiAiJDEiIF07IGRvCisrCQljYXNlICQxIGluCisrCQkJLS1lbmFibGUpCisrCQkJCUVOQUJMRT0xCisrCQkJCXNoaWZ0CisrCQkJCTs7CisrCQkJLS1kaXNhYmxlKQorKwkJCQlFTkFCTEU9MAorKwkJCQlzaGlmdAorKwkJCQk7OworKwkJCS0tYWxsb3cpCisrCQkJCUVOQUJMRT0yCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlzZXRfd3dpZCAkMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS11c2VyX2ZyaWVuZGx5X25hbWVzKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJRlJJRU5ETFk9JDIKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCS0tZmluZF9tdWx0aXBhdGhzKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJRklORD0kMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS13aXRoX21vZHVsZSkKKysJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KKysJCQkJCU1PRFVMRT0kMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS13aXRoX211bHRpcGF0aGQpCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlNVUxUSVBBVEhEPSQyCisrCQkJCQlzaGlmdCAyCisrCQkJCWVsc2UKKysJCQkJCXVzYWdlCisrCQkJCQlleGl0IDEKKysJCQkJZmkKKysJCQkJOzsKKysJCQktLW91dGZpbGUpCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlPVVRQVVRGSUxFPSQyCisrCQkJCQlIQVZFX09VVEZJTEU9MQorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJKikKKysJCQkJdXNhZ2UKKysJCQkJZXhpdAorKwkJZXNhYworKwlkb25lCisrfQorKworK2Z1bmN0aW9uIHZhbGlkYXRlX2FyZ3MKKyt7CisrCWlmIFsgIiRFTkFCTEUiID0gIjAiIF0gJiYgWyAtbiAiJEZSSUVORExZIiAtbyAtbiAiJEZJTkQiIC1vIC1uICIkTU9EVUxFIiBdOyB0aGVuCisrCQllY2hvICJpZ25vcmluZyBleHRyYSBwYXJhbWV0ZXJzIG9uIGRpc2FibGUiCisrCQlGUklFTkRMWT0iIgorKwkJRklORD0iIgorKwkJTU9EVUxFPSIiCisrCWZpCisrCWlmIFsgLW4gIiRGUklFTkRMWSIgXSAmJiBbICIkRlJJRU5ETFkiICE9ICJ5IiAtYSAiJEZSSUVORExZIiAhPSAibiIgXTsgdGhlbgorKwkJZWNobyAiLS11c2VyX2ZyaWVuZGx5X25hbWVzIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCisrCQlleGl0IDEKKysJZmkKKysJaWYgWyAtbiAiJEZJTkQiIF0gJiYgWyAiJEZJTkQiICE9ICJ5IiAtYSAiJEZJTkQiICE9ICJuIiBdOyB0aGVuCisrCQllY2hvICItLWZpbmRfbXVsdGlwYXRocyBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgorKwkJZXhpdCAxCisrCWZpCisrCWlmIFsgLXogIiRFTkFCTEUiIC1hIC16ICIkRklORCIgLWEgLXogIiRGUklFTkRMWSIgXTsgdGhlbgorKwkJU0hPV19TVEFUVVM9MQorKwlmaQorKwlpZiBbIC1uICIkTU9EVUxFIiBdICYmIFsgIiRNT0RVTEUiICE9ICJ5IiAtYSAiJE1PRFVMRSIgIT0gIm4iIF07IHRoZW4KKysJCWVjaG8gIi0td2l0aF9tb2R1bGUgbXVzdCBiZSBlaXRoZXIgJ3knIG9yICduJyIKKysJCWV4aXQgMQorKwlmaQorKwlpZiBbIC1uICIkTVVMVElQQVRIRCIgXSAmJiBbICIkTVVMVElQQVRIRCIgIT0gInkiIC1hICIkTVVMVElQQVRIRCIgIT0gIm4iIF07IHRoZW4KKysJCWVjaG8gIi0td2l0aF9tdWx0aXBhdGhkIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCisrCQlleGl0IDEKKysJZmkKKysJaWYgWyAiJEVOQUJMRSIgPSAyIC1hIC16ICIkSEFWRV9PVVRGSUxFIiBdOyB0aGVuCisrCQllY2hvICJCZWNhdXNlIC0tYWxsb3cgbWFrZXMgY2hhbmdlcyB0aGF0IGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IHJldmVyc2VkLCIKKysJCWVjaG8gInlvdSBtdXN0IHNldCAtLW91dGZpbGUgd2hlbiB5b3Ugc2V0IC0tYWxsb3ciCisrCQlleGl0IDEKKysJZmkKKyt9CisrCisrZnVuY3Rpb24gYWRkX2JsYWNrbGlzdF9leGNlcHRpb25zCisreworKwlJTkRFWD0wCisrCXdoaWxlIFsgIiRJTkRFWCIgLWx0ICIkV1dJRFMiIF0gOyBkbworKwkJc2VkIC1pICcvXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qey8gYVwKKysJd3dpZCAnIlwiJHtXV0lEX0xJU1RbJElOREVYXX1cIiInCisrJyAkVE1QRklMRQorKwkJKChJTkRFWCsrKSkKKysJZG9uZQorK30KKysKKyt1bWFzayAwMDc3CisrCisrcGFyc2VfYXJncyAiJEAiCisrCisrdmFsaWRhdGVfYXJncworKworK2lmIFsgISAtZCAiJE1VTFRJUEFUSERJUiIgXTsgdGhlbgorKwllY2hvICIvZXRjL211bHRpcGF0aC8gZG9lcyBub3QgZXhpc3QuIGZhaWxpbmciCisrCWV4aXQgMQorK2ZpCisrCisrcm0gJFRNUEZJTEUgMj4gL2Rldi9udWxsCisrZWNobyAiJERFRkFVTFRfQ09ORklHIiA+ICRUTVBGSUxFCisraWYgWyAtZiAiJENPTkZJR0ZJTEUiIF07IHRoZW4KKysJY3AgJENPTkZJR0ZJTEUgJFRNUEZJTEUKKytmaQorKworK2lmIGdyZXAgLXEgIl5ibGFja2xpc3RbWzpzcGFjZTpdXSp7IiAkVE1QRklMRSA7IHRoZW4KKysJSEFWRV9CTEFDS0xJU1Q9MQorK2ZpCisrCisraWYgZ3JlcCAtcSAiXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCisrCUhBVkVfRVhDRVBUSU9OUz0xCisrZmkKKysKKytpZiBncmVwIC1xICJeZGVmYXVsdHNbWzpzcGFjZTpdXSp7IiAkVE1QRklMRSA7IHRoZW4KKysJSEFWRV9ERUZBVUxUUz0xCisrZmkKKysKKytpZiBbIC16ICIkTU9EVUxFIiAtbyAiJE1PRFVMRSIgPSAieSIgXTsgdGhlbgorKwlpZiBsc21vZCB8IGdyZXAgLXEgImRtX211bHRpcGF0aCIgOyB0aGVuCisrCQlIQVZFX01PRFVMRT0xCisrCWVsc2UKKysJCUhBVkVfTU9EVUxFPTAKKysJZmkKKytmaQorKworK2lmIFsgIiRNVUxUSVBBVEhEIiA9ICJ5IiBdOyB0aGVuCisrCWlmIC9iaW4vc3lzdGVtY3RsIHN0YXR1cyBtdWx0aXBhdGhkLnNlcnZpY2UgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKysJCUhBVkVfTVVMVElQQVRIRD0xCisrCWVsc2UKKysJCUhBVkVfTVVMVElQQVRIRD0wCisrCWZpCisrZmkKKysKKytpZiBbICIkSEFWRV9CTEFDS0xJU1QiID0gIjEiIF07IHRoZW4KKysJaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiIiA7IHRoZW4KKysJCUhBVkVfRElTQUJMRT0xCisrCWVsaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX0RJU0FCTEU9MAorKwlmaQorK2ZpCisrCisraWYgWyAiJEhBVkVfQkxBQ0tMSVNUIiA9ICIxIiBdOyB0aGVuCisrCWlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnd3aWQgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX1dXSURfRElTQUJMRT0xCisrCWVsaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKnd3aWQgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX1dXSURfRElTQUJMRT0wCisrCWZpCisrZmkKKysKKytpZiBbICIkSEFWRV9ERUZBVUxUUyIgPSAiMSIgXTsgdGhlbgorKwlpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwoeWVzXHwxXCkiIDsgdGhlbgorKwkJSEFWRV9GSU5EPTEKKysJZWxpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwobm9cfDBcKSIgOyB0aGVuCisrCQlIQVZFX0ZJTkQ9MAorKwlmaQorKwlpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKHllc1x8MVwpIiA7IHRoZW4KKysJCUhBVkVfRlJJRU5ETFk9MQorKwllbGlmIHNlZCAtbiAnL15kZWZhdWx0c1tbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qdXNlcl9mcmllbmRseV9uYW1lc1tbOnNwYWNlOl1dKlwobm9cfDBcKSIgOyB0aGVuCisrCQlIQVZFX0ZSSUVORExZPTAKKysJZmkKKytmaQorKworK2lmIFsgLW4gIiRTSE9XX1NUQVRVUyIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9ESVNBQkxFIiAtbyAiJEhBVkVfRElTQUJMRSIgPSAwIF07IHRoZW4KKysJCWVjaG8gIm11bHRpcGF0aCBpcyBlbmFibGVkIgorKwllbHNlCisrCQllY2hvICJtdWx0aXBhdGggaXMgZGlzYWJsZWQiCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX0ZJTkQiICAtbyAiJEhBVkVfRklORCIgPSAwIF07IHRoZW4KKysJCWVjaG8gImZpbmRfbXVsdGlwYXRocyBpcyBkaXNhYmxlZCIKKysJZWxzZQorKwkJZWNobyAiZmluZF9tdWx0aXBhdGhzIGlzIGVuYWJsZWQiCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX0ZSSUVORExZIiAtbyAiJEhBVkVfRlJJRU5ETFkiID0gMCBdOyB0aGVuCisrCQllY2hvICJ1c2VyX2ZyaWVuZGx5X25hbWVzIGlzIGRpc2FibGVkIgorKwllbHNlCisrCQllY2hvICJ1c2VyX2ZyaWVuZGx5X25hbWVzIGlzIGVuYWJsZWQiCisrCWZpCisrCWlmIFsgLW4gIiRIQVZFX01PRFVMRSIgXTsgdGhlbgorKwkJaWYgWyAiJEhBVkVfTU9EVUxFIiA9IDEgXTsgdGhlbgorKwkJCWVjaG8gImRtX211bHRpcGF0aCBtb2R1bGUgaXMgbG9hZGVkIgorKwkJZWxzZQorKwkJCWVjaG8gImRtX211bHRpcGF0aCBtb2R1bGUgaXMgbm90IGxvYWRlZCIKKysJCWZpCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX01VTFRJUEFUSEQiIF07IHRoZW4KKysJCWlmIC9iaW4vc3lzdGVtY3RsIHN0YXR1cyBtdWx0aXBhdGhkLnNlcnZpY2UgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKysJCQlIQVZFX01VTFRJUEFUSEQ9MQorKwkJZWxzZQorKwkJCUhBVkVfTVVMVElQQVRIRD0wCisrCQlmaQorKwlmaQorKwlpZiBbICIkSEFWRV9NVUxUSVBBVEhEIiA9IDEgXTsgdGhlbgorKwkJZWNobyAibXVsdGlwYXRoZCBpcyBydW5uaW5nIgorKwllbHNlCisrCQllY2hvICJtdWx0aXBhdGhkIGlzIG5vdCBydW5uaW5nIgorKwlmaQorKwlleGl0IDAKKytmaQorKworK2lmIFsgLXogIiRIQVZFX0JMQUNLTElTVCIgXTsgdGhlbgorKwljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCisrCisrYmxhY2tsaXN0IHsKKyt9CisrX0VPRl8KKytmaQorKworK2lmIFsgLXogIiRIQVZFX0RFRkFVTFRTIiBdOyB0aGVuCisrCWNhdCA+PiAkVE1QRklMRSA8PC0gX0VPRl8KKysKKytkZWZhdWx0cyB7CisrfQorK19FT0ZfCisrZmkKKysKKytpZiBbICIkRU5BQkxFIiA9IDIgXTsgdGhlbgorKwlpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiLyMJZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKKysJZmkKKysJaWYgWyAteiAiJEhBVkVfV1dJRF9ESVNBQkxFIiBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8gYVwKKysJd3dpZCAiLioiCisrJyAkVE1QRklMRQorKwllbGlmIFsgIiRIQVZFX1dXSURfRElTQUJMRSIgPSAwIF07IHRoZW4KKysJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIvCXd3aWQgIi4qIi8nICRUTVBGSUxFCisrCWZpCisrCWlmIFsgIiRIQVZFX0VYQ0VQVElPTlMiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0X2V4Y2VwdGlvbnNbWzpzcGFjZTpdXSp7LywvXn0vIHsvXltbOnNwYWNlOl1dKnd3aWQvIGR9JyAkVE1QRklMRQorKwllbHNlCisrCQljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCisrCisrYmxhY2tsaXN0X2V4Y2VwdGlvbnMgeworK30KKytfRU9GXworKwlmaQorKwlhZGRfYmxhY2tsaXN0X2V4Y2VwdGlvbnMKKytlbGlmIFsgIiRFTkFCTEUiID0gMSBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX0RJU0FCTEUiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIvIwlkZXZub2RlICIuKiIvJyAkVE1QRklMRQorKwlmaQorK2VsaWYgWyAiJEVOQUJMRSIgPSAwIF07IHRoZW4KKysJaWYgWyAteiAiJEhBVkVfRElTQUJMRSIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvIGFcCisrCWRldm5vZGUgIi4qIgorKycgJFRNUEZJTEUKKysJZWxpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDAgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIi8JZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKKysJZmkKKytmaQorKworK2lmIFsgIiRGSU5EIiA9ICJuIiBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX0ZJTkQiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwoeWVzXHwxXCkvCWZpbmRfbXVsdGlwYXRocyBuby8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZWxpZiBbICIkRklORCIgPSAieSIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9GSU5EIiBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LyBhXAorKwlmaW5kX211bHRpcGF0aHMgeWVzCisrJyAkVE1QRklMRQorKwkJQ0hBTkdFRF9DT05GSUc9MQorKwllbGlmIFsgIiRIQVZFX0ZJTkQiID0gMCBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwobm9cfDBcKS8JZmluZF9tdWx0aXBhdGhzIHllcy8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZmkKKysKKytpZiBbICIkRlJJRU5ETFkiID0gIm4iIF07IHRoZW4KKysJaWYgWyAiJEhBVkVfRlJJRU5ETFkiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKHllc1x8MVwpLwl1c2VyX2ZyaWVuZGx5X25hbWVzIG5vLycgJFRNUEZJTEUKKysJCUNIQU5HRURfQ09ORklHPTEKKysJZmkKKytlbGlmIFsgIiRGUklFTkRMWSIgPSAieSIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9GUklFTkRMWSIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8gYVwKKysJdXNlcl9mcmllbmRseV9uYW1lcyB5ZXMKKysnICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWVsaWYgWyAiJEhBVkVfRlJJRU5ETFkiID0gMCBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKG5vXHwwXCkvCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzLycgJFRNUEZJTEUKKysJCUNIQU5HRURfQ09ORklHPTEKKysJZmkKKytmaQorKworK2lmIFsgLWYgIiRPVVRQVVRGSUxFIiBdOyB0aGVuCisrCWNwICRPVVRQVVRGSUxFICRPVVRQVVRGSUxFLm9sZAorKwlpZiBbICQ/ICE9IDAgXTsgdGhlbgorKwkJZWNobyAiZmFpbGVkIHRvIGJhY2t1cCBvbGQgY29uZmlnIGZpbGUsICRPVVRQVVRGSUxFIG5vdCB1cGRhdGVkIgorKwkJZXhpdCAxCisrCWZpCisrZmkKKysKKytjcCAkVE1QRklMRSAkT1VUUFVURklMRQorK2lmIFsgJD8gIT0gMCBdOyB0aGVuCisrCWVjaG8gImZhaWxlZCB0byBjb3B5IG5ldyBjb25maWcgZmlsZSBpbnRvIHBsYWNlLCBjaGVjayAkT1VUUFVURklMRSBpcyBzdGlsbCBPSyIKKysJZXhpdCAxCisrZmkKKysKKytybSAtZiAkVE1QRklMRQorKworK2lmIFsgIiRFTkFCTEUiID0gMSBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX01PRFVMRSIgPSAwIF07IHRoZW4KKysJCW1vZHByb2JlIGRtX211bHRpcGF0aAorKwlmaQorKwlpZiBbICIkSEFWRV9NVUxUSVBBVEhEIiA9IDAgXTsgdGhlbgorKwkJc3lzdGVtY3RsIHN0YXJ0IG11bHRpcGF0aGQuc2VydmljZQorKwlmaQorK2VsaWYgWyAiJEVOQUJMRSIgPSAwIF07IHRoZW4KKysJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KKysJCXN5c3RlbWN0bCBzdG9wIG11bHRpcGF0aGQuc2VydmljZQorKwlmaQorK2VsaWYgWyAtbiAiJENIQU5HRURfQ09ORklHIiAtYSAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KKysJc3lzdGVtY3RsIHJlbG9hZCBtdWx0aXBhdGhkLnNlcnZpY2UKKytmaQorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tcGF0aGNvbmYuOCBiL211bHRpcGF0aC9tcGF0aGNvbmYuOAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjRjZDMyNjcKKy0tLSAvZGV2L251bGwKKysrKyBiL211bHRpcGF0aC9tcGF0aGNvbmYuOAorQEAgLTAsMCArMSwxMDEgQEAKKysuVEggTVBBVEhDT05GIDggIkp1bmUgMjAxMCIgIiIgIkxpbnV4IEFkbWluaXN0cmF0b3IncyBNYW51YWwiCisrLlNIIE5BTUUKKyttcGF0aGNvbmYgLSBBIHRvb2wgZm9yIGNvbmZpZ3VyaW5nIGRldmljZS1tYXBwZXItbXVsdGlwYXRoCisrLlNIIFNZTk9QU0lTCisrLkIgbXBhdGhjb25mCisrLlJCIFtcfCBjb21tYW5kcyBcfF0KKysuUkIgW1x8IG9wdGlvbnMgXHxdCisrLlNIIERFU0NSSVBUSU9OCisrLkIgbXBhdGhjb25mCisraXMgYSB1dGlsaXR5IHRoYXQgY3JlYXRlcyBvciBtb2RpZmllcworKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYuCisrSXQgY2FuIGVuYWJsZSBvciBkaXNhYmxlIG11bHRpcGF0aGluZyBhbmQgY29uZmlndXJlIHNvbWUgY29tbW9uIG9wdGlvbnMuCisrLkIgbXBhdGhjb25mCisrY2FuIGFsc28gbG9hZCB0aGUKKysuQiBkbV9tdWx0aXBhdGgKKyttb2R1bGUsIHN0YXJ0IGFuZCBzdG9wIHRoZQorKy5CIG11bHRpcGF0aGQKKytkYWVtb24sIGFuZCBjb25maWd1cmUgdGhlCisrLkIgbXVsdGlwYXRoZAorK3NlcnZpY2UgdG8gc3RhcnQgYXV0b21hdGljYWxseSBvciBub3QuIElmCisrLkIgbXBhdGhjb25mCisraXMgY2FsbGVkIHdpdGggbm8gY29tbWFuZHMsIGl0IHdpbGwgZGlzcGxheSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorKworK1RoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIG1wYXRoY29uZiBhcmUKKysuQiAtLXdpdGhfbW9kdWxlCisrVGhlCisrLkIgLS13aXRoX211bHRpcGF0aGQKKytvcHRpb24gaXMgbm90IHNldCBieSBkZWZhdWx0LiAgRW5hYmxpbmcgbXVsdGlwYXRoaW5nIHdpbGwgbG9hZCB0aGUKKysuQiBkbV9tdWx0aXBhdGgKKyttb2R1bGUgYnV0IGl0IHdpbGwgbm90IGltbWVkaWF0ZWx5IHN0YXJ0IGl0LiBUaGlzIGlzIHNvCisrdGhhdCB1c2VycyBjYW4gbWFudWFsbHkgZWRpdCB0aGVpciBjb25maWcgZmlsZSBpZiBuZWNlc3NhcnksIGJlZm9yZSBzdGFydGluZworKy5CIG11bHRpcGF0aGQuCisrCisrSWYKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrYWxyZWFkeSBleGlzdHMsIG1wYXRoY29uZiB3aWxsIGVkaXQgaXQuIElmIGl0IGRvZXMgbm90IGV4aXN0LCBtcGF0aGNvbmYgd2lsbAorK2NyZWF0ZSBhIGRlZmF1bHQgZmlsZSB3aXRoCisrLkIgdXNlcl9mcmllbmRseV9uYW1lcworK2FuZAorKy5CIGZpbmRfbXVsdGlwYXRocworK3NldC4gVG8gZGlzYWJsZSB0aGVzZSwgdXNlIHRoZQorKy5CIC0tdXNlcl9mcmllbmRseV9uYW1lcyBuCisrYW5kCisrLkIgLS1maW5kX211bHRpcGF0aHMgbgorK29wdGlvbnMKKysuU0ggQ09NTUFORFMKKysuVFAKKysuQiAtLWVuYWJsZQorK1JlbW92ZXMgYW55IGxpbmUgdGhhdCBibGFja2xpc3RzIGFsbCBkZXZpY2Ugbm9kZXMgZnJvbSB0aGUKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrYmxhY2tsaXN0IHNlY3Rpb24uCisrLlRQCisrLkIgLS1kaXNhYmxlCisrQWRkcyBhIGxpbmUgdGhhdCBibGFja2xpc3RzIGFsbCBkZXZpY2Ugbm9kZXMgdG8gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2JsYWNrbGlzdCBzZWN0aW9uLiBJZiBubyBibGFja2xpc3Qgc2VjdGlvbiBleGlzdHMsIGl0IHdpbGwgY3JlYXRlIG9uZS4KKysuVFAKKysuQiAtLXVzZXJfZnJpZW5kbHlfbmFtZSBcZlAgeyBcZkJ5XGZQIHwgXGZCblxmUCB9CisrSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgYWRkcyB0aGUgbGluZQorKy5CIHVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCisrdG8gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2RlZmF1bHRzIHNlY3Rpb24uIElmIHNldCB0byBcZkJuXGZQLCB0aGlzIHJlbW92ZXMgdGhlIGxpbmUsIGlmIHByZXNlbnQuIFRoaXMKKytjb21tYW5kIGNhbiBiZSB1c2VkIGFsb25nIHdpdGggYW55IG90aGVyIGNvbW1hbmQuCisrLlRQCisrLkIgLS1maW5kX211bHRpcGF0aHNcZlAgeyBcZkJ5XGZQIHwgXGZCblxmUCB9CisrSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgYWRkcyB0aGUgbGluZQorKy5CIGZpbmRfbXVsdGlwYXRocyB5ZXMKKyt0byB0aGUKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrZGVmYXVsdHMgc2VjdGlvbi4gSWYgc2V0IHRvIFxmQm5cZlAsIHRoaXMgcmVtb3ZlcyB0aGUgbGluZSwgaWYgcHJlc2VudC4gVGhpcworK2NvbW1hbmQgY2FuIGJlIHVzZWQgYWxkb25nIHdpdGggYW55IG90aGVyIGNvbW1hbmQuCisrLlNIIE9QVElPTlMKKysuVFAKKysuQiAtLXdpdGhfbW9kdWxlXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQorK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIHJ1bnMKKysuQiBtb2Rwcm9iZSBkbV9tdWx0aXBhdGgKKyt0byBpbnN0YWxsIHRoZSBtdWx0aXBhdGggbW9kdWxlcy4gVGhpcyBvcHRpb24gb25seSB3b3JrcyB3aXRoIHRoZQorKy5CIC0tZW5hYmxlCisrY29tbWFuZC4gVGhpcyBvcHRpb24gaXMgc2V0IHRvIFxmQnlcZlAgYnkgZGVmYXVsdC4KKysuVFAKKysuQiAtLXdpdGhfbXVsdGlwYXRoZCB7IFxmQnlcZlAgfCBcZkJuXGZQIH0KKytJZiBzZXQgdG8gXGZCeVxmUCwgdGhpcyBydW5zCisrLkIgc2VydmljZSBtdWx0aXBhdGhkIHN0YXJ0CisrdG8gc3RhcnQgdGhlIG11bHRpcGF0aGQgZGFlbW9uIG9uIFxmQi0tZW5hYmxlXGZQLAorKy5CIHNlcnZpY2UgbXVsdGlwYXRoZCBzdG9wCisrdG8gc3RvcCB0aGUgbXVsdGlwYXRoZCBkYWVtb24gb24gXGZCLS1kaXNhYmxlXGZQLCBhbmQKKysuQiBzZXJ2aWNlIG11bHRpcGF0aGQgcmVsb2FkCisrdG8gcmVjb25maWd1cmUgbXVsdGlwYXRoZCBvbiBcZkItLXVzZXJfZnJpbmRseV9uYW1lc1xmUCBhbmQKKytcZkItLWZpbmRfbXVsdGlwYXRoc1xmUC4KKytUaGlzIG9wdGlvbiBpcyBzZXQgdG8gXGZCblxmUCBieSBkZWZhdWx0LgorKy5TSCBGSUxFUworKy5CUiAvZXRjL211bHRpcGF0aC5jb25mCisrLlNIICJTRUUgQUxTTyIKKysuQlIgbXVsdGlwYXRoLmNvbmYgKDUpLAorKy5CUiBtb2Rwcm9iZSAoOCksCisrLkJSIG11bHRpcGF0aCAoOCksCisrLkJSIG11bHRpcGF0aGQgKDgpLAorKy5CUiBzZXJ2aWNlICg4KSwKKysuU0ggQVVUSE9SCisrQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA2LVJILWFkZC13d2lkcy1mcm9tLWtlcm5lbC1jbWRsaW5lLW1wYXRoLnd3aWRzLXdpdGgtQS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDYtUkgtYWRkLXd3aWRzLWZyb20ta2VybmVsLWNtZGxpbmUtbXBhdGgud3dpZHMtd2l0aC1BLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMjkxYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA2LVJILWFkZC13d2lkcy1mcm9tLWtlcm5lbC1jbWRsaW5lLW1wYXRoLnd3aWRzLXdpdGgtQS5wYXRjaApAQCAtMCwwICsxLDE2NiBAQAorRnJvbSAxNTE3OWM4MzA1MjFkOGYzN2Y5MjU0ZWJjNmJiZjE1MGE0MDlmOTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBPY3QgMjAxNCAxMToyMDozNCAtMDUwMAorU3ViamVjdDogW1BBVENIIDA2LzE0XSBSSDogYWRkIHd3aWRzIGZyb20ga2VybmVsIGNtZGxpbmUgbXBhdGgud3dpZHMgd2l0aCAtQQorCitUaGlzIHBhdGNoIGFkZHMgYW5vdGhlciBvcHRpb24gdG8gbXVsdGlwYXRoLCAiLUEiLCB3aGljaCByZWFkcworL3Byb2MvY21kbGluZSBmb3IgbXBhdGgud3dpZD08V1dJRD4gb3B0aW9ucywgYW5kIGFkZHMgYW55IHd3aWRzIGl0IGZpbmRzCit0byAvZXRjL211bHRpcGF0aC93d2lkcy4gIFdoaWxlIHRoaXMgaXNuJ3QgdXN1YWxseSBpbXBvcnRhbnQgZHVyaW5nCitub3JtYWwgb3BlcmF0aW9uLCBzaW5jZSB0aGVzZSB3d2lkcyBzaG91bGQgYWxyZWFkeSBiZSBhZGRlZCwgaXQgY2FuIGJlCitoZWxwZnVsIGR1cmluZyBpbnN0YWxsYXRpb24sIHRvIG1ha2Ugc3VyZSB0aGF0IG11bHRpcGF0aCBjYW4gY2xhaW0KK2RldmljZXMgYXMgaXRzIG93biwgYmVmb3JlIExWTSBvciBzb21ldGhpbmcgZWxzZSBtYWtlcyB1c2Ugb2YgdGhlbS4gIFRoZQorcGF0Y2ggYWxzbyBleGVjcyAiL3NiaW4vbXVsdGlwYXRoIC1BIiBiZWZvcmUgcnVubmluZyBtdWx0aXBhdGhkIGluCittdWx0aXBhdGhkLnNlcnZpY2UKKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL3d3aWRzLmMgICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbGlibXVsdGlwYXRoL3d3aWRzLmggICAgICAgICAgfCAgMSArCisgbXVsdGlwYXRoL21haW4uYyAgICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCisgbXVsdGlwYXRoL211bHRpcGF0aC44ICAgICAgICAgfCAgNSArKysrLQorIG11bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlIHwgIDEgKworIDUgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC93d2lkcy5jIGIvbGlibXVsdGlwYXRoL3d3aWRzLmMKK2luZGV4IGJjNzBhMjcuLjg4YmI3MmIgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvd3dpZHMuYworKysrIGIvbGlibXVsdGlwYXRoL3d3aWRzLmMKK0BAIC0zMjEsMyArMzIxLDQ3IEBAIHJlbWVtYmVyX3d3aWQoY2hhciAqd3dpZCkKKyAJCWNvbmRsb2coNCwgInd3aWQgJXMgYWxyZWFkeSBpbiB3d2lkcyBmaWxlIiwgd3dpZCk7CisgCXJldHVybiAwOworIH0KKysKKytpbnQgcmVtZW1iZXJfY21kbGluZV93d2lkKHZvaWQpCisreworKwlGSUxFICpmID0gTlVMTDsKKysJY2hhciBidWZbTElORV9NQVhdLCAqbmV4dCwgKnB0cjsKKysJaW50IHJldCA9IDA7CisrCisrCWYgPSBmb3BlbigiL3Byb2MvY21kbGluZSIsICJyZSIpOworKwlpZiAoIWYpIHsKKysJCWNvbmRsb2coMCwgImNhbid0IG9wZW4gL3Byb2MvY21kbGluZSA6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKysJCXJldHVybiAtMTsKKysJfQorKworKwlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpKSB7CisrCQlpZiAoZmVycm9yKGYpKQorKwkJCWNvbmRsb2coMCwgInJlYWQgb2YgL3Byb2MvY21kbGluZSBmYWlsZWQgOiAlcyIsCisrCQkJCXN0cmVycm9yKGVycm5vKSk7CisrCQllbHNlCisrCQkJY29uZGxvZygwLCAiY291bGRuJ3QgcmVhZCAvcHJvYy9jbWRsaW5lIik7CisrCQlmY2xvc2UoZik7CisrCQlyZXR1cm4gLTE7CisrCX0KKysJZmNsb3NlKGYpOworKwluZXh0ID0gYnVmOworKwl3aGlsZSgocHRyID0gc3Ryc3RyKG5leHQsICJtcGF0aC53d2lkPSIpKSkgeworKwkJcHRyICs9IDExOworKwkJbmV4dCA9IHN0cnBicmsocHRyLCAiIFx0XG4iKTsKKysJCWlmIChuZXh0KSB7CisrCQkJKm5leHQgPSAnXDAnOworKwkJCW5leHQrKzsKKysJCX0KKysJCWlmIChzdHJsZW4ocHRyKSkgeworKwkJCWlmIChyZW1lbWJlcl93d2lkKHB0cikgIT0gMCkKKysJCQkJcmV0ID0gLTE7CisrCQl9CisrCQllbHNlIHsKKysJCQljb25kbG9nKDAsICJlbXB0eSBtcGF0aC53d2lkIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9uIik7CisrCQkJcmV0ID0gLTE7CisrCQl9CisrCQlpZiAoIW5leHQpCisrCQkJYnJlYWs7CisrCX0KKysJcmV0dXJuIHJldDsKKyt9CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL3d3aWRzLmggYi9saWJtdWx0aXBhdGgvd3dpZHMuaAoraW5kZXggOTUyNzAxMi4uYjY2NTIzMiAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC93d2lkcy5oCisrKysgYi9saWJtdWx0aXBhdGgvd3dpZHMuaAorQEAgLTE3LDUgKzE3LDYgQEAgaW50IHJlbWVtYmVyX3d3aWQoY2hhciAqd3dpZCk7CisgaW50IGNoZWNrX3d3aWRzX2ZpbGUoY2hhciAqd3dpZCwgaW50IHdyaXRlX3d3aWQpOworIGludCByZW1vdmVfd3dpZChjaGFyICp3d2lkKTsKKyBpbnQgcmVwbGFjZV93d2lkcyh2ZWN0b3IgbXApOworK2ludCByZW1lbWJlcl9jbWRsaW5lX3d3aWQodm9pZCk7CisgCisgI2VuZGlmIC8qIF9XV0lEU19IICovCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL21haW4uYyBiL211bHRpcGF0aC9tYWluLmMKK2luZGV4IDQxNzRkNDMuLjcyNTg1YjAgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbWFpbi5jCisrKysgYi9tdWx0aXBhdGgvbWFpbi5jCitAQCAtMTAyLDcgKzEwMiw3IEBAIHVzYWdlIChjaGFyICogcHJvZ25hbWUpCisgeworIAlmcHJpbnRmIChzdGRlcnIsIFZFUlNJT05fU1RSSU5HKTsKKyAJZnByaW50ZiAoc3RkZXJyLCAiVXNhZ2U6XG4iKTsKKy0JZnByaW50ZiAoc3RkZXJyLCAiICAlcyBbLWF8LWN8LXd8LVddIFstZF0gWy1yXSBbLWldIFstdiBsdmxdIFstcCBwb2xdIFstYiBmaWxdIFstcV0gW2Rldl1cbiIsIHByb2duYW1lKTsKKysJZnByaW50ZiAoc3RkZXJyLCAiICAlcyBbLWF8LUF8LWN8LXd8LVddIFstZF0gWy1yXSBbLWldIFstdiBsdmxdIFstcCBwb2xdIFstYiBmaWxdIFstcV0gW2Rldl1cbiIsIHByb2duYW1lKTsKKyAJZnByaW50ZiAoc3RkZXJyLCAiICAlcyAtbHwtbGx8LWYgWy12IGx2bF0gWy1iIGZpbF0gWy1SIG51bV0gW2Rldl1cbiIsIHByb2duYW1lKTsKKyAJZnByaW50ZiAoc3RkZXJyLCAiICAlcyAtRiBbLXYgbHZsXSBbLVIgbnVtXVxuIiwgcHJvZ25hbWUpOworIAlmcHJpbnRmIChzdGRlcnIsICIgICVzIC10XG4iLCBwcm9nbmFtZSk7CitAQCAtMTE2LDYgKzExNiw4IEBAIHVzYWdlIChjaGFyICogcHJvZ25hbWUpCisgCQkiICAtZiAgICAgIGZsdXNoIGEgbXVsdGlwYXRoIGRldmljZSBtYXBcbiIKKyAJCSIgIC1GICAgICAgZmx1c2ggYWxsIG11bHRpcGF0aCBkZXZpY2UgbWFwc1xuIgorIAkJIiAgLWEgICAgICBhZGQgYSBkZXZpY2Ugd3dpZCB0byB0aGUgd3dpZHMgZmlsZVxuIgorKwkJIiAgLUEgICAgICBhZGQgZGV2aWNlcyBmcm9tIGtlcm5lbCBjb21tYW5kIGxpbmUgbXBhdGgud3dpZHNcbiIKKysJCSIgICAgICAgICAgcGFyYW1ldGVycyB0byB3d2lkcyBmaWxlXG4iCisgCQkiICAtYyAgICAgIGNoZWNrIGlmIGEgZGV2aWNlIHNob3VsZCBiZSBhIHBhdGggaW4gYSBtdWx0aXBhdGggZGV2aWNlXG4iCisgCQkiICAtcSAgICAgIGFsbG93IHF1ZXVlX2lmX25vX3BhdGggd2hlbiBtdWx0aXBhdGhkIGlzIG5vdCBydW5uaW5nXG4iCisgCQkiICAtZCAgICAgIGRyeSBydW4sIGRvIG5vdCBjcmVhdGUgb3IgdXBkYXRlIGRldm1hcHNcbiIKK0BAIC01MjIsNyArNTI0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWV4aXQoMSk7CisgCW11bHRpcGF0aF9jb25mID0gY29uZjsKKyAJY29uZi0+cmV0cmlnZ2VyX3RyaWVzID0gMDsKKy0Jd2hpbGUgKChhcmcgPSBnZXRvcHQoYXJnYywgYXJndiwgIjphZGNobDo6RmZNOnY6cDpiOkJyUjppdHF1d1ciKSkgIT0gRU9GICkgeworKwl3aGlsZSAoKGFyZyA9IGdldG9wdChhcmdjLCBhcmd2LCAiOmFBZGNobDo6RmZNOnY6cDpiOkJyUjppdHF1d1ciKSkgIT0gRU9GICkgeworIAkJc3dpdGNoKGFyZykgeworIAkJY2FzZSAxOiBwcmludGYoIm9wdGFyZyA6ICVzXG4iLG9wdGFyZyk7CisgCQkJYnJlYWs7CitAQCAtNTg2LDYgKzU4OCwxMCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJY2FzZSAndCc6CisgCQkJciA9IGR1bXBfY29uZmlnKGNvbmYpOworIAkJCWdvdG8gb3V0X2ZyZWVfY29uZmlnOworKwkJY2FzZSAnQSc6CisrCQkJaWYgKHJlbWVtYmVyX2NtZGxpbmVfd3dpZCgpICE9IDApCisrCQkJCWV4aXQoMSk7CisrCQkJZXhpdCgwKTsKKyAJCWNhc2UgJ2gnOgorIAkJCXVzYWdlKGFyZ3ZbMF0pOworIAkJCWV4aXQoMCk7CitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC44IGIvbXVsdGlwYXRoL211bHRpcGF0aC44CitpbmRleCBiOTQzNmU1Li5iOWFkNmIxIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC44CisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLjgKK0BAIC0yNSw3ICsyNSw3IEBAIG11bHRpcGF0aCBcLSBEZXZpY2UgbWFwcGVyIHRhcmdldCBhdXRvY29uZmlnLgorIC5SQiBbXHwgXC1iXCBcYworIC5JUiBiaW5kaW5nc19maWxlIFx8XQorIC5SQiBbXHwgXC1kIFx8XQorLS5SQiBbXHwgXC1oIHwgXC1sIHwgXC1sbCB8IFwtZiB8IFwtdCB8IFwtRiB8IFwtQiB8IFwtYyB8IFwtcSB8IFx8LXIgfCBcfC1pIHwgXC1hIHwgXHwtdSB8IFwtdyB8IFwtVyBcfF0KKysuUkIgW1x8IFwtaCB8IFwtbCB8IFwtbGwgfCBcLWYgfCBcLXQgfCBcLUYgfCBcLUIgfCBcLWMgfCBcLXEgfCBcfC1yIHwgXHwtaSB8IFwtYSB8IFwtQSB8IFwtdSB8IFwtdyB8IFwtVyBcfF0KKyAuUkIgW1x8IFwtcFwgXGMKKyAuSVIgZmFpbG92ZXIgfCBtdWx0aWJ1cyB8IGdyb3VwX2J5X3NlcmlhbCB8IGdyb3VwX2J5X3ByaW8gfCBncm91cF9ieV9ub2RlX25hbWUgXHxdCisgLlJCIFtcfCBcLVJcIFxjCitAQCAtMTIyLDYgKzEyMiw5IEBAIEFkZCB0aGUgV1dJRCBmb3IgdGhlIHNwZWNpZmllZCBkZXZpY2UgdG8gdGhlIFdXSURzIGZpbGUuCisgQ2hlY2sgaWYgdGhlIGRldmljZSBzcGVjaWZpZWQgaW4gdGhlIHByb2dyYW0gZW52aXJvbm1lbnQgc2hvdWxkIGJlCisgYSBwYXRoIGluIGEgbXVsdGlwYXRoIGRldmljZS4KKyAuCisrLkIgXC1BCisrYWRkIHd3aWRzIGZyb20gYW55IGtlcm5lbCBjb21tYW5kIGxpbmUgbXBhdGgud3dpZCBwYXJhbWV0ZXJzIHRvIHRoZSB3d2lkcyBmaWxlCisrLgorIC5UUAorIC5CIFwtdworIFJlbW92ZSB0aGUgV1dJRCBmb3IgdGhlIHNwZWNpZmllZCBkZXZpY2UgZnJvbSB0aGUgV1dJRHMgZmlsZS4KK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitpbmRleCBmYWZkMDg4Li5hNjIzYTNmIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKKysrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitAQCAtMTUsNiArMTUsNyBAQCBUeXBlPW5vdGlmeQorIE5vdGlmeUFjY2Vzcz1tYWluCisgTGltaXRDT1JFPWluZmluaXR5CisgRXhlY1N0YXJ0UHJlPS0vc2Jpbi9tb2Rwcm9iZSAtYSBzY3NpX2RoX2FsdWEgc2NzaV9kaF9lbWMgc2NzaV9kaF9yZGFjIGRtLW11bHRpcGF0aAorK0V4ZWNTdGFydFByZT0tL3NiaW4vbXVsdGlwYXRoIC1BCisgRXhlY1N0YXJ0PS9zYmluL211bHRpcGF0aGQgLWQgLXMKKyBFeGVjUmVsb2FkPS9zYmluL211bHRpcGF0aGQgcmVjb25maWd1cmUKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNy1SSC10cmlnZ2VyLWNoYW5nZS11ZXZlbnQtb24tbmV3LWRldmljZS1jcmVhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDctUkgtdHJpZ2dlci1jaGFuZ2UtdWV2ZW50LW9uLW5ldy1kZXZpY2UtY3JlYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1YTM1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDctUkgtdHJpZ2dlci1jaGFuZ2UtdWV2ZW50LW9uLW5ldy1kZXZpY2UtY3JlYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwxMzggQEAKK0Zyb20gMGQyYzlhZmJkODlkNzlmZDcwMGY5Yzk5YWEyMGU1ZjdjNzM4MjAyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjQgQXByIDIwMTcgMDk6Mzk6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xNF0gUkg6IHRyaWdnZXIgY2hhbmdlIHVldmVudCBvbiBuZXcgZGV2aWNlIGNyZWF0aW9uCisKK1doZW4gbXVsdGlwYXRoIGZpcnN0IHNlZXMgYSBwYXRoIGRldmljZSB3aXRoIHVzZXJfZnJpZW5kbHkgbmFtZXMKK2VuYWJsZWQsIGl0IGNhbid0IGtub3cgaWYgdGhlIGRldmljZSBzaG91bGQgYmUgbXVsdGlwYXRoZWQuIFRoaXMgbWVhbnMKK3RoYXQgaXQgd2lsbCBub3QgY2xhaW0gdGhlIGRldmljZSBpbiB1ZGV2LiAgSWYgdGhlIGRldmljZSBpcyBldmVudHVhbGx5CittdWx0aXBhdGhlZCwgbXVsdGlwYXRoIHNob3VsZCB0cmlnZ2VyIGEgY2hhbmdlIHVldmVudCB0byB1cGRhdGUgdGhlIHVkZXYKK2RhdGFiYXNlIHRvIGNsYWltIHRoZSBkZXZpY2UuCisKK1RoaXMgYWxzbyByZXZlcnRzIGNvbW1pdCA2NGUyN2VjMDY2YTAwMTAxMmY0NDU1MGYwOTVjOTM0NDNlOTFkODQ1LgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvY29uZmlndXJlLmMgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKystLQorIGxpYm11bHRpcGF0aC9jb25maWd1cmUuaCB8ICAxICsKKyBsaWJtdWx0aXBhdGgvd3dpZHMuYyAgICAgfCAgNCArKy0tCisgbXVsdGlwYXRoL21haW4uYyAgICAgICAgIHwgIDIgKy0KKyBtdWx0aXBhdGhkL21haW4uYyAgICAgICAgfCAgNyArKy0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYyBiL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYworaW5kZXggYmQwOTBkOS4uODQzZGQwOSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5jCitAQCAtNDIyLDYgKzQyMiwyOCBAQCB0cmlnZ2VyX3VkZXZfY2hhbmdlKGNvbnN0IHN0cnVjdCBtdWx0aXBhdGggKm1wcCkKKyAJdWRldl9kZXZpY2VfdW5yZWYodWRkKTsKKyB9CisgCisrdm9pZAorK3RyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKQorK3sKKysJc3RydWN0IHBhdGhncm91cCAqIHBncDsKKysJc3RydWN0IHBhdGggKiBwcDsKKysJaW50IGksIGo7CisrCisrCWlmICghbXBwIHx8ICFtcHAtPnBnKQorKwkJcmV0dXJuOworKworKwl2ZWN0b3JfZm9yZWFjaF9zbG90IChtcHAtPnBnLCBwZ3AsIGkpIHsKKysJCWlmICghcGdwLT5wYXRocykKKysJCQljb250aW51ZTsKKysJCXZlY3Rvcl9mb3JlYWNoX3Nsb3QocGdwLT5wYXRocywgcHAsIGopIHsKKysJCQlpZiAoIXBwLT51ZGV2KQorKwkJCQljb250aW51ZTsKKysJCQlzeXNmc19hdHRyX3NldF92YWx1ZShwcC0+dWRldiwgInVldmVudCIsICJjaGFuZ2UiLAorKwkJCQkJICAgICBzdHJsZW4oImNoYW5nZSIpKTsKKysJCX0KKysJfQorK30KKysKKyBzdGF0aWMgaW50CisgaXNfbXBwX2tub3duX3RvX3VkZXYoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKQorIHsKK0BAIC04MDIsOCArODI0LDggQEAgaW50IGRvbWFwKHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgY2hhciAqcGFyYW1zLCBpbnQgaXNfZGFlbW9uKQorIAkJICogc3VjY2VlZGVkCisgCQkgKi8KKyAJCW1wcC0+Zm9yY2VfdWRldl9yZWxvYWQgPSAwOworLQkJaWYgKG1wcC0+YWN0aW9uID09IEFDVF9DUkVBVEUpCistCQkJcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpOworKwkJaWYgKG1wcC0+YWN0aW9uID09IEFDVF9DUkVBVEUgJiYgcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpID09IDEpCisrCQkJdHJpZ2dlcl9wYXRoc191ZGV2X2NoYW5nZShtcHApOworIAkJaWYgKCFpc19kYWVtb24pIHsKKyAJCQkvKiBtdWx0aXBhdGggY2xpZW50IG1vZGUgKi8KKyAJCQlkbV9zd2l0Y2hncm91cChtcHAtPmFsaWFzLCBtcHAtPmJlc3RwZyk7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oCitpbmRleCBmZDdmNTgxLi4yNTNlMjliIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oCisrKysgYi9saWJtdWx0aXBhdGgvY29uZmlndXJlLmgKK0BAIC0zNiwzICszNiw0IEBAIGludCBnZXRfcmVmd3dpZCAoZW51bSBtcGF0aF9jbWRzIGNtZCwgY2hhciAqIGRldiwgZW51bSBkZXZ0eXBlcyBkZXZfdHlwZSwKKyAJCSB2ZWN0b3IgcGF0aHZlYywgY2hhciAqKnd3aWQpOworIGludCByZWxvYWRfbWFwKHN0cnVjdCB2ZWN0b3JzICp2ZWNzLCBzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIGludCByZWZyZXNoLCBpbnQgaXNfZGFlbW9uKTsKKyBpbnQgc3lzZnNfZ2V0X2hvc3RfYWRhcHRlcl9uYW1lKHN0cnVjdCBwYXRoICpwcCwgY2hhciAqYWRhcHRlcl9uYW1lKTsKKyt2b2lkIHRyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKTsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvd3dpZHMuYyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCitpbmRleCA4OGJiNzJiLi4yNDljNmMxIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3d3aWRzLmMKKysrKyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCitAQCAtMzE5LDcgKzMxOSw3IEBAIHJlbWVtYmVyX3d3aWQoY2hhciAqd3dpZCkKKyAJCWNvbmRsb2coMywgIndyb3RlIHd3aWQgJXMgdG8gd3dpZHMgZmlsZSIsIHd3aWQpOworIAllbHNlCisgCQljb25kbG9nKDQsICJ3d2lkICVzIGFscmVhZHkgaW4gd3dpZHMgZmlsZSIsIHd3aWQpOworLQlyZXR1cm4gMDsKKysJcmV0dXJuIHJldDsKKyB9CisgCisgaW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKQorQEAgLTM1Myw3ICszNTMsNyBAQCBpbnQgcmVtZW1iZXJfY21kbGluZV93d2lkKHZvaWQpCisgCQkJbmV4dCsrOworIAkJfQorIAkJaWYgKHN0cmxlbihwdHIpKSB7CistCQkJaWYgKHJlbWVtYmVyX3d3aWQocHRyKSAhPSAwKQorKwkJCWlmIChyZW1lbWJlcl93d2lkKHB0cikgPCAwKQorIAkJCQlyZXQgPSAtMTsKKyAJCX0KKyAJCWVsc2UgeworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tYWluLmMgYi9tdWx0aXBhdGgvbWFpbi5jCitpbmRleCA3MjU4NWIwLi4yZWRhNmEzIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL21haW4uYworKysrIGIvbXVsdGlwYXRoL21haW4uYworQEAgLTMzNiw3ICszMzYsNyBAQCBjb25maWd1cmUgKHN0cnVjdCBjb25maWcgKmNvbmYsIGVudW0gbXBhdGhfY21kcyBjbWQsCisgCQl9CisgCQlpZiAoY21kID09IENNRF9BRERfV1dJRCkgeworIAkJCXIgPSByZW1lbWJlcl93d2lkKHJlZnd3aWQpOworLQkJCWlmIChyID09IDApCisrCQkJaWYgKHIgPj0gMCkKKyAJCQkJcHJpbnRmKCJ3d2lkICclcycgYWRkZWRcbiIsIHJlZnd3aWQpOworIAkJCWVsc2UKKyAJCQkJcHJpbnRmKCJmYWlsZWQgYWRkaW5nICclcycgdG8gd3dpZHMgZmlsZVxuIiwKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL21haW4uYyBiL211bHRpcGF0aGQvbWFpbi5jCitpbmRleCA4MWM3NmNhLi44NzRiY2NlIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tYWluLmMKKysrKyBiL211bHRpcGF0aGQvbWFpbi5jCitAQCAtMjA5Myw3ICsyMDkzLDggQEAgY29uZmlndXJlIChzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MsIGludCBzdGFydF93YWl0ZXJzKQorIAorIAlzeW5jX21hcHNfc3RhdGUobXB2ZWMpOworIAl2ZWN0b3JfZm9yZWFjaF9zbG90KG1wdmVjLCBtcHAsIGkpeworLQkJcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpOworKwkJaWYgKHJlbWVtYmVyX3d3aWQobXBwLT53d2lkKSA9PSAxKQorKwkJCXRyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UobXBwKTsKKyAJCXVwZGF0ZV9tYXBfcHIobXBwKTsKKyAJfQorIAorQEAgLTIxNzUsMTAgKzIxNzYsNiBAQCByZWNvbmZpZ3VyZSAoc3RydWN0IHZlY3RvcnMgKiB2ZWNzKQorIAkJY29uZi0+dmVyYm9zaXR5ID0gdmVyYm9zaXR5OworIAlpZiAoYmluZGluZ3NfcmVhZF9vbmx5KQorIAkJY29uZi0+YmluZGluZ3NfcmVhZF9vbmx5ID0gYmluZGluZ3NfcmVhZF9vbmx5OworLQlpZiAoY29uZi0+ZmluZF9tdWx0aXBhdGhzKSB7CistCQljb25kbG9nKDIsICJmaW5kX211bHRpcGF0aHMgaXMgc2V0OiAtbiBpcyBpbXBsaWVkIik7CistCQlpZ25vcmVfbmV3X2RldnMgPSAxOworLQl9CisgCWlmIChpZ25vcmVfbmV3X2RldnMpCisgCQljb25mLT5pZ25vcmVfbmV3X2RldnMgPSBpZ25vcmVfbmV3X2RldnM7CisgCXV4c29ja190aW1lb3V0ID0gY29uZi0+dXhzb2NrX3RpbWVvdXQ7CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDgtbGlibXVsdGlwYXRoLWNoYW5nZS1ob3ctUkFET1MtY2hlY2tlci1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOC1saWJtdWx0aXBhdGgtY2hhbmdlLWhvdy1SQURPUy1jaGVja2VyLWlzLWVuYWJsZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3ODgwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDgtbGlibXVsdGlwYXRoLWNoYW5nZS1ob3ctUkFET1MtY2hlY2tlci1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMGJlMTc0ZGJlZGQ4NjFkNzY5NGIwYzc3OTlmZTI2YmUzMWViMzJiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMjYgTWF5IDIwMTcgMTc6NTI6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xNF0gbGlibXVsdGlwYXRoOiBjaGFuZ2UgaG93IFJBRE9TIGNoZWNrZXIgaXMgZW5hYmxlZAorCitJbnN0ZWFkIG9mIG1ha2luZyB0aGUgdXNlciBjYWxsICJtYWtlIiwgIm1ha2UgaW5zdGFsbCIgYW5kICJtYWtlIGNsZWFuIgord2l0aCBFTkFCTEVfUkFET1Mgc2V0IGNvcnJlY3RseSwgaGF2ZSB0aGUgbWFrZWZpbGUgY2hlY2sgaWYKKy91c3IvaW5jbHVkZS9yYWRvcy9saWJyYWRvcy5oIGV4aXN0cywganVzdCBsaWtlIGl0IGNoZWNrcyBpZiBzcGVjaWZpYworZnVuY3Rpb25zIGV4aXN0IGluIGEgZmlsZS4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgTWFrZWZpbGUuaW5jICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKworIGxpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZSB8ICAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW5jIGIvTWFrZWZpbGUuaW5jCitpbmRleCAyNTkxZmE5Li5lMDg0ZmQxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW5jCisrKysgYi9NYWtlZmlsZS5pbmMKK0BAIC0xMDksNSArMTA5LDE4IEBAIGNoZWNrX2Z1bmMgPQkJCQkJCQkJICAgICAgIFwKKyAJZWNobyAiJCRmb3VuZCIJCQkJCQkJICAgICAgIFwKKyAgICAgKQorIAorKyMgQ2hlY2tlciB3aGV0aGVyIGEgZmlsZSB3aXRoIG5hbWUgJDEgZXhpc3RzCisrY2hlY2tfZmlsZSA9ICQoc2hlbGwJXAorKwlpZiBbIC1mICIkMSIgXTsgdGhlbiBcCisrCQlmb3VuZD0xOyBcCisrCQlzdGF0dXM9InllcyI7IFwKKysJZWxzZSBcCisrCQlmb3VuZD0wOyBcCisrCQlzdGF0dXM9Im5vIjsgXAorKwlmaTsgXAorKwllY2hvIDE+JjIgIkNoZWNraW5nIGlmICQxIGV4aXN0cyAuLi4gJCRzdGF0dXMiOyBcCisrCWVjaG8gIiQkZm91bmQiIFwKKysJKQorKworICUubzoJJS5jCisgCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPAorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZSBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQoraW5kZXggNzMyY2E5ZC4uYmNlNmI4YiAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQorKysrIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCitAQCAtMTQsNyArMTQsOCBAQCBMSUJTPSBcCisgCWxpYmNoZWNrZW1jX2NsYXJpaW9uLnNvIFwKKyAJbGliY2hlY2tocF9zdy5zbyBcCisgCWxpYmNoZWNrcmRhYy5zbworLWlmbmVxICgkKEVOQUJMRV9SQURPUyksMCkKKysKKytpZm5lcSAoJChjYWxsIGNoZWNrX2ZpbGUsL3Vzci9pbmNsdWRlL3JhZG9zL2xpYnJhZG9zLmgpLDApCisgTElCUyArPSBsaWJjaGVja3JiZC5zbworIGVuZGlmCisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDktbXVsdGlwYXRoLXNldC12ZXJib3NpdHktdG8tZGVmYXVsdC1kdXJpbmctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOS1tdWx0aXBhdGgtc2V0LXZlcmJvc2l0eS10by1kZWZhdWx0LWR1cmluZy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdkMmQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDktbXVsdGlwYXRoLXNldC12ZXJib3NpdHktdG8tZGVmYXVsdC1kdXJpbmctY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNTI2ZTUzOTYyOGUwNTExMjhhYmY0NmE2MGVjMjJlMThjOWI1ZDg0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMzEgTWF5IDIwMTcgMTU6MDM6MDIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xNF0gbXVsdGlwYXRoOiBzZXQgdmVyYm9zaXR5IHRvIGRlZmF1bHQgZHVyaW5nIGNvbmZpZworCitjb25kbG9nIHdhcyBzZXR0aW5nIHRoZSB2ZXJib3NpdHkgdG8gMCBpZiB0aGVyZSB3YXMgbm8gY29uZmlndXJhdGlvbi4KK1RoaXMga2VlcHMgbXVsdGlwYXRoIGZyb20gcHJpbnRpbmcgd2FybmluZyBtZXNzYWdlcyBhYm91dCBjb25maWcgZmlsZQorcHJvYmxlbXMgdGhhdCBhcmUgZm91bmQgd2hpbGUgbG9hZGluZyB0aGUgY29uZmlndXJhdGlvbi4gSW5zdGVhZCwgaXQKK3Nob3VsZCB1c2UgdGhlIGRlZmF1bHQgY29uZmlnIGxldmVsIHVudGlsIGl0IGxvYWRzIHRoZSBjb25maWd1cmF0aW9uCit0byBmaW5kIHRoZSBjdXJyZW50IHZhbHVlLgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvZGVidWcuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2RlYnVnLmMgYi9saWJtdWx0aXBhdGgvZGVidWcuYworaW5kZXggZmJlMTcxYS4uZjg5YjI2NCAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9kZWJ1Zy5jCisrKysgYi9saWJtdWx0aXBhdGgvZGVidWcuYworQEAgLTExLDYgKzExLDcgQEAKKyAjaW5jbHVkZSAiLi4vdGhpcmQtcGFydHkvdmFsZ3JpbmQvZHJkLmgiCisgI2luY2x1ZGUgInZlY3Rvci5oIgorICNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAiZGVmYXVsdHMuaCIKKyAKKyB2b2lkIGRsb2cgKGludCBzaW5rLCBpbnQgcHJpbywgY29uc3QgY2hhciAqIGZtdCwgLi4uKQorIHsKK0BAIC0yMSw3ICsyMiw3IEBAIHZvaWQgZGxvZyAoaW50IHNpbmssIGludCBwcmlvLCBjb25zdCBjaGFyICogZm10LCAuLi4pCisgCXZhX3N0YXJ0KGFwLCBmbXQpOworIAljb25mID0gZ2V0X211bHRpcGF0aF9jb25maWcoKTsKKyAJQU5OT1RBVEVfSUdOT1JFX1JFQURTX0JFR0lOKCk7CistCXRocmVzID0gKGNvbmYpID8gY29uZi0+dmVyYm9zaXR5IDogMDsKKysJdGhyZXMgPSAoY29uZikgPyBjb25mLT52ZXJib3NpdHkgOiBERUZBVUxUX1ZFUkJPU0lUWTsKKyAJQU5OT1RBVEVfSUdOT1JFX1JFQURTX0VORCgpOworIAlwdXRfbXVsdGlwYXRoX2NvbmZpZyhjb25mKTsKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEwLW1wYXRoLXNraXAtZGV2aWNlLWNvbmZpZ3Mtd2l0aG91dC12ZW5kb3ItcHJvZHVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTZiNmQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBmODhkNjBhOTNlOThkODZhZTI5NGYyMzE3YTEyMmM0ZWZkZTI3NmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAzMSBNYXkgMjAxNyAxNzo1ODo1OSAtMDUwMAorU3ViamVjdDogW1BBVENIIDEwLzE0XSBtcGF0aDogc2tpcCBkZXZpY2UgY29uZmlncyB3aXRob3V0IHZlbmRvci9wcm9kdWN0CisKK1JpZ2h0IG5vdyBpZiBtdWx0aXBhdGguY29uZiBpbmNsdWRlcyBhIGRldmljZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgYQordmVuZG9yIG9yIHByb2R1Y3Qgc3RyaW5nLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byBhbGwKK2RldmljZXMsIHNraXBwaW5nIGFsbCBvdGhlciBjb25maWdzIGVudGlyZWx5LiAgVGhpcyBpcyBjbGVhcmx5IHdyb25nLgorVGhpcyBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgdXNlciBhZGRlZCBjb25maWdzIGluY2x1ZGUgdmVuZG9yIGFuZAorcHJvZHVjdCBzdHJpbmdzCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9jb25maWcuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuYyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworaW5kZXggYzQ4NTc0OC4uYmRkZTExMyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCitAQCAtNDUyLDYgKzQ1MiwxMyBAQCByZXN0YXJ0OgorIAkJCWJyZWFrOworIAkJaiA9IG47CisgCQl2ZWN0b3JfZm9yZWFjaF9zbG90X2FmdGVyKGh3LCBod2UyLCBqKSB7CisrCQkJLyogZHJvcCBpbnZhbGlkIGRldmljZSBjb25maWdzICovCisrCQkJaWYgKCFod2UyLT52ZW5kb3IgfHwgIWh3ZTItPnByb2R1Y3QpIHsKKysJCQkJY29uZGxvZygwLCAiZGV2aWNlIGNvbmZpZyBtaXNzaW5nIHZlbmRvciBvciBwcm9kdWN0IHBhcmFtZXRlciIpOworKwkJCQl2ZWN0b3JfZGVsX3Nsb3QoaHcsIGotLSk7CisrCQkJCWZyZWVfaHdlKGh3ZTIpOworKwkJCQljb250aW51ZTsKKysJCQl9CisgCQkJaWYgKGh3ZV9yZWdtYXRjaChod2UxLCBod2UyKSkKKyAJCQkJY29udGludWU7CisgCQkJLyogZHVwICovCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTEtbXVsdGlwYXRoZC1maXgtc2hvdy1tYXBzLWpzb24tY3Jhc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZDZkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYmMzY2VkYTc0NzEwNGFmZGMyNDM4NmRmNWRjNDVjYTg2ZjZjMjkzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNzo1MjoyOCAtMDUwMAorU3ViamVjdDogW1BBVENIIDExLzE0XSBtdWx0aXBhdGhkOiBmaXggInNob3cgbWFwcyBqc29uIiBjcmFzaAorCitJZiB0aGVyZSBhcmUgbm8gbXVsdGlwYXRoIGRldmljZXMsIHNob3dfbWFwc19qc29uIHNldHMgdGhlIG1heGltdW0gc2l6ZQorb2YgdGhlIHJlcGx5IGJ1ZmZlciB0byAwLiBIYXZpbmcgYSBzaXplIG9mIDAgY2F1c2VzIHRoZSBjYWxscyB0byBjYWxsb2MKK2FuZCByZWFsbG9jIHRvIGJlaGF2ZSBpbiB3YXlzIHRoYXQgdGhlIGNvZGUgaXNuJ3QgZGVzaWduZWQgdG8gaGFuZGxlLAorbGVhZGluZyB0byBhIGRvdWJsZS1mcmVlIGNyYXNoLiBJbnN0ZWFkLCBzaG93X21hcHNfanNvbiBzaG91bGQganVzdAordXNlIHRoZSBJTklUSUFMX1JFUExZX0xFTiBpZiB0aGVyZSBhcmUgbm8gbXVsdGlwYXRoIGRldmljZXMuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIG11bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jIGIvbXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYworaW5kZXggMDRjNzM4Ni4uN2IwZDAwYyAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMKKysrKyBiL211bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMKK0BAIC0xNjIsMTAgKzE2MiwxMiBAQCBzaG93X21hcHNfanNvbiAoY2hhciAqKiByLCBpbnQgKiBsZW4sIHN0cnVjdCB2ZWN0b3JzICogdmVjcykKKyAJc3RydWN0IG11bHRpcGF0aCAqIG1wcDsKKyAJY2hhciAqIGM7CisgCWNoYXIgKiByZXBseTsKKy0JdW5zaWduZWQgaW50IG1heGxlbiA9IElOSVRJQUxfUkVQTFlfTEVOICoKKy0JCQlQUklOVF9KU09OX01VTFRJUExJRVIgKiBWRUNUT1JfU0laRSh2ZWNzLT5tcHZlYyk7CisrCXVuc2lnbmVkIGludCBtYXhsZW4gPSBJTklUSUFMX1JFUExZX0xFTjsKKyAJaW50IGFnYWluID0gMTsKKyAKKysJaWYgKFZFQ1RPUl9TSVpFKHZlY3MtPm1wdmVjKSA+IDApCisrCQltYXhsZW4gKj0gUFJJTlRfSlNPTl9NVUxUSVBMSUVSICogVkVDVE9SX1NJWkUodmVjcy0+bXB2ZWMpOworKworIAl2ZWN0b3JfZm9yZWFjaF9zbG90KHZlY3MtPm1wdmVjLCBtcHAsIGkpIHsKKyAJCWlmICh1cGRhdGVfbXVsdGlwYXRoKHZlY3MsIG1wcC0+YWxpYXMsIDApKSB7CisgCQkJcmV0dXJuIDE7CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2NkNGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMi1tdWx0aXBhdGgtdG9vbHMtbW9kaWZ5LU1ha2VmaWxlLmluYy1mb3ItY3Jvc3MtY29tcGlsLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gNjg2NGJhMjhkZWM2MTYwOTY2MmNlNWRjOGJjN2VkMTkyNWFiYjU0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAwMjo1NjoxMyAtMDQwMAorU3ViamVjdDogW1BBVENIIDEyLzE0XSBtdWx0aXBhdGgtdG9vbHM6IG1vZGlmeSBNYWtlZmlsZS5pbmMgZm9yCisgY3Jvc3MtY29tcGlsYXRpb24KKworRG8gbm90IGxvb2sgZm9yIHN5c3RlbWQgaW5mbyBvbiB0aGUgaG9zdCwgYW5kIGFsbG93IHVzIHRvIHBhc3MgaW4gQ0ZMQUdTCit1c2luZyB0aGUgT1BURkxBR1MgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGZvciB2ZXJzaW9uIDAuNS4wLTE0NC1nNzcwZTZkMAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGZvciB2ZXJzaW9uIDAuNy4xCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluYyB8IDggKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW5jIGIvTWFrZWZpbGUuaW5jCitpbmRleCBlMDg0ZmQxLi5jN2Y0NWZhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW5jCisrKysgYi9NYWtlZmlsZS5pbmMKK0BAIC0zNSwxMiArMzUsNiBAQCBpZm5kZWYgUlVOCisgCWVuZGlmCisgZW5kaWYKKyAKKy1pZm5kZWYgU1lTVEVNRAorLQlpZmVxICgkKHNoZWxsIHN5c3RlbWN0bCAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMSAmJiBlY2hvIDEpLCAxKQorLQkJU1lTVEVNRCA9ICQoc2hlbGwgc3lzdGVtY3RsIC0tdmVyc2lvbiAyPiAvZGV2L251bGwgfCAgc2VkIC1uICdzL3N5c3RlbWQgXChbMC05XSpcKS9cMS9wJykKKy0JZW5kaWYKKy1lbmRpZgorLQorIGlmbmRlZiBTWVNURU1EUEFUSAorIAlTWVNURU1EUEFUSD11c3IvbGliCisgZW5kaWYKK0BAIC04MiwxMSArNzYsMTMgQEAgVEVTVF9DQ19PUFRJT04gPSAkKHNoZWxsIFwKKyAKKyBTVEFDS1BST1QgOj0gJChjYWxsIFRFU1RfQ0NfT1BUSU9OLC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZywtZnN0YWNrLXByb3RlY3RvcikKKyAKKytpZm5kZWYgT1BURkxBR1MKKyBPUFRGTEFHUwk9IC1PMiAtZyAtcGlwZSAtV2FsbCAtV2V4dHJhIC1XZm9ybWF0PTIgLVdlcnJvcj1pbXBsaWNpdC1pbnQgXAorIAkJICAtV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IFwKKyAJCSAgLVduby1zaWduLWNvbXBhcmUgLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tY2xvYmJlcmVkIFwKKyAJCSAgLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgJChTVEFDS1BST1QpIFwKKyAJCSAgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NAorK2VuZGlmCisgCisgQ0ZMQUdTCQk9ICQoT1BURkxBR1MpIC1ETElCX1NUUklORz1cIiR7TElCfVwiIC1EUlVOX0RJUj1cIiR7UlVOfVwiCisgQklOX0NGTEFHUwk9IC1mUElFIC1EUElFCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTMtQWx3YXlzLXVzZS1kZXZtYXBwZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEzLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMjQwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEzLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gMTQ5ODMzODk3MGEwOTNmY2NiZGEzZTMzZjU1ODhhMjg5ZWYyYzY2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAwMjo1OTo0NiAtMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzE0XSBBbHdheXMgdXNlIGRldm1hcHBlcgorCitEbyBub3QgdHJ5IHRvIGNvbXB1dGUgc2V2ZXJhbCBfQVBJXyBtYWtlIHZhcmlhYmxlcworZnJvbSBob3N0IGluZm9ybWF0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAwLjcuMQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvTWFrZWZpbGUgfCAxOSArKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKK2luZGV4IGIzMjQ0ZmMuLjkwMDZiM2YgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUKKysrKyBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQorQEAgLTIwLDIxICsyMCwxMCBAQCBpZmRlZiBTWVNURU1ECisgCWVuZGlmCisgZW5kaWYKKyAKKy1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19ub19mbHVzaCwvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpLDApCistCUNGTEFHUyArPSAtRExJQkRNX0FQSV9GTFVTSCAtRF9HTlVfU09VUkNFCistZW5kaWYKKy0KKy1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19zZXRfY29va2llLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQorLWVuZGlmCistCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLHVkZXZfbW9uaXRvcl9zZXRfcmVjZWl2ZV9idWZmZXJfc2l6ZSwvdXNyL2luY2x1ZGUvbGlidWRldi5oKSwwKQorLQlDRkxBR1MgKz0gLURMSUJVREVWX0FQSV9SRUNWQlVGCistZW5kaWYKKy0KKy1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19kZWZlcnJlZF9yZW1vdmUsL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKSwwKQorLQlDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKKy1lbmRpZgorK0NGTEFHUyArPSAtRExJQkRNX0FQSV9GTFVTSCAtRF9HTlVfU09VUkNFCisrQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQorK0NGTEFHUyArPSAtRExJQlVERVZfQVBJX1JFQ1ZCVUYKKytDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKKyAKKyBPQkpTID0gbWVtb3J5Lm8gcGFyc2VyLm8gdmVjdG9yLm8gZGV2bWFwcGVyLm8gY2FsbG91dC5vIFwKKyAJaHd0YWJsZS5vIGJsYWNrbGlzdC5vIHV0aWwubyBkbXBhcnNlci5vIGNvbmZpZy5vIFwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNC1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNC1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NTEyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE0LUFsd2F5cy11c2UtZGV2bWFwcGVyLWZvci1rcGFydHgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA3ZjU4NjljZDMyYTdiM2Y3MTdkOTU0NGIzNTU2MmQ5ZDAxY2E2NTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDAzOjAzOjE2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMTRdIEFsd2F5cyB1c2UgZGV2bWFwcGVyIGZvciBrcGFydHgKKworRG8gbm90IHRyeSB0byBjb21wdXRlIHRoZSBMSUJETV9BUElfQ09PS0lFIG1ha2UgdmFyaWFibGUKK2Zyb20gaG9zdCBpbmZvcm1hdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMC43LjEKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGtwYXJ0eC9NYWtlZmlsZSB8IDQgKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2twYXJ0eC9NYWtlZmlsZSBiL2twYXJ0eC9NYWtlZmlsZQoraW5kZXggYmZhNmZlOC4uYmU4NzEyNCAxMDA2NDQKKy0tLSBhL2twYXJ0eC9NYWtlZmlsZQorKysrIGIva3BhcnR4L01ha2VmaWxlCitAQCAtOCw5ICs4LDcgQEAgTERGTEFHUyArPSAkKEJJTl9MREZMQUdTKQorIAorIExJQkRFUFMgKz0gLWxkZXZtYXBwZXIKKyAKKy1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19zZXRfY29va2llLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQorLWVuZGlmCisrQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQorIAorIE9CSlMgPSBic2QubyBkb3MubyBrcGFydHgubyBzb2xhcmlzLm8gdW5peHdhcmUubyBkYXNkLm8gc3VuLm8gXAorIAlncHQubyBtYWMubyBwczMubyBjcmMzMi5vIGxvcGFydC5vIHhzdHJuY3B5Lm8gZGV2bWFwcGVyLm8KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIta3BhcnR4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIta3BhcnR4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDNlNTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLWtwYXJ0eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNzI2N2NmMjM1ZmMwNTJlYWExY2EzNmU0MzcwOTY1NzZlZGFjYjEzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjIgU2VwIDIwMTQgMTc6MjI6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWx3YXlzIHVzZSBkZXZtYXBwZXIgZm9yIGtwYXJ0eAotCi1EbyBub3QgdHJ5IHRvIGNvbXB1dGUgdGhlIExJQkRNX0FQSV9DT09LSUUgbWFrZSB2YXJpYWJsZQotZnJvbSBob3N0IGluZm9ybWF0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrcGFydHgvTWFrZWZpbGUgfCA2ICstLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2twYXJ0eC9NYWtlZmlsZSBiL2twYXJ0eC9NYWtlZmlsZQotaW5kZXggZThhNTlmMi4uZTY5NGE2NSAxMDA2NDQKLS0tLSBhL2twYXJ0eC9NYWtlZmlsZQotKysrIGIva3BhcnR4L01ha2VmaWxlCi1AQCAtNywxMSArNyw3IEBAIENGTEFHUyArPSAtSS4gLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLSAKLSBMSUJERVBTICs9IC1sZGV2bWFwcGVyCi0gCi0tTElCRE1fQVBJX0NPT0tJRSA9ICQoc2hlbGwgZ3JlcCAtRWNzICdeW2Etel0qW1s6c3BhY2U6XV0rZG1fdGFza19zZXRfY29va2llJyAvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpCi0tCi0taWZuZXEgKCQoc3RyaXAgJChMSUJETV9BUElfQ09PS0lFKSksMCkKLS0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotLWVuZGlmCi0rQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotIAotIE9CSlMgPSBic2QubyBkb3MubyBrcGFydHgubyBzb2xhcmlzLm8gdW5peHdhcmUubyBkYXNkLm8gc3VuLm8gXAotIAlncHQubyBtYWMubyBwczMubyBjcmMzMi5vIGxvcGFydC5vIHhzdHJuY3B5Lm8gZGV2bWFwcGVyLm8KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODM0ZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIGM0ZjBkYmE0ZTg2YmZhMjAyNTJmY2M4MjE4Mzk4ZTc0NjhjYTkxNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDIyIFNlcCAyMDE0IDE3OjIyOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFsd2F5cyB1c2UgZGV2bWFwcGVyCi0KLURvIG5vdCB0cnkgdG8gY29tcHV0ZSBzZXZlcmFsIF9BUElfIG1ha2UgdmFyaWFibGVzCi1mcm9tIGhvc3QgaW5mb3JtYXRpb24gd2hlbiBjcm9zcy1jb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYm11bHRpcGF0aC9NYWtlZmlsZSB8IDI3ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL01ha2VmaWxlIGIvbGlibXVsdGlwYXRoL01ha2VmaWxlCi1pbmRleCA0OTVjZWJlLi45NjI2ZTY5IDEwMDY0NAotLS0tIGEvbGlibXVsdGlwYXRoL01ha2VmaWxlCi0rKysgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKLUBAIC0yMCwyOSArMjAsMTAgQEAgaWZkZWYgU1lTVEVNRAotIAllbmRpZgotIGVuZGlmCi0gCi0tTElCRE1fQVBJX0ZMVVNIID0gJChzaGVsbCBncmVwIC1FY3MgJ15bYS16XSpbWzpzcGFjZTpdXStkbV90YXNrX25vX2ZsdXNoJyAvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpCi0tCi0taWZuZXEgKCQoc3RyaXAgJChMSUJETV9BUElfRkxVU0gpKSwwKQotLQlDRkxBR1MgKz0gLURMSUJETV9BUElfRkxVU0ggLURfR05VX1NPVVJDRQotLWVuZGlmCi0tCi0tTElCRE1fQVBJX0NPT0tJRSA9ICQoc2hlbGwgZ3JlcCAtRWNzICdeW2Etel0qW1s6c3BhY2U6XV0rZG1fdGFza19zZXRfY29va2llJyAvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpCi0tCi0taWZuZXEgKCQoc3RyaXAgJChMSUJETV9BUElfQ09PS0lFKSksMCkKLS0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotLWVuZGlmCi0tCi0tTElCVURFVl9BUElfUkVDVkJVRiA9ICQoc2hlbGwgZ3JlcCAtRWNzICdeW2Etel0qW1s6c3BhY2U6XV0rdWRldl9tb25pdG9yX3NldF9yZWNlaXZlX2J1ZmZlcl9zaXplJyAvdXNyL2luY2x1ZGUvbGlidWRldi5oKQotLQotLWlmbmVxICgkKHN0cmlwICQoTElCVURFVl9BUElfUkVDVkJVRikpLDApCi0tCUNGTEFHUyArPSAtRExJQlVERVZfQVBJX1JFQ1ZCVUYKLS1lbmRpZgotLQotLUxJQkRNX0FQSV9ERUZFUlJFRCA9ICQoc2hlbGwgZ3JlcCAtRWNzICdeW2Etel0qW1s6c3BhY2U6XV0rZG1fdGFza19kZWZlcnJlZF9yZW1vdmUnIC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCkKLS0KLS1pZm5lcSAoJChzdHJpcCAkKExJQkRNX0FQSV9ERUZFUlJFRCkpLDApCi0tCUNGTEFHUyArPSAtRExJQkRNX0FQSV9ERUZFUlJFRAotLWVuZGlmCi0rQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0ZMVVNIIC1EX0dOVV9TT1VSQ0UKLStDRkxBR1MgKz0gLURMSUJETV9BUElfQ09PS0lFCi0rQ0ZMQUdTICs9IC1ETElCVURFVl9BUElfUkVDVkJVRgotK0NGTEFHUyArPSAtRExJQkRNX0FQSV9ERUZFUlJFRAotIAotIE9CSlMgPSBtZW1vcnkubyBwYXJzZXIubyB2ZWN0b3IubyBkZXZtYXBwZXIubyBjYWxsb3V0Lm8gXAotIAlod3RhYmxlLm8gYmxhY2tsaXN0Lm8gdXRpbC5vIGRtcGFyc2VyLm8gY29uZmlnLm8gXAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvY2hlY2tlcnMtZGlzYWJsZS1saWJjaGVja3JiZC5zby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2NoZWNrZXJzLWRpc2FibGUtbGliY2hlY2tyYmQuc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwOGE1MTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvY2hlY2tlcnMtZGlzYWJsZS1saWJjaGVja3JiZC5zby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMTQ4Yjg0OGY0NTk1N2U1ZTFjMDQ2NmU4Yzc5Yzg0YmE0YTBiZjI0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjcgSmFuIDIwMTcgMTA6MzU6NTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY2hlY2tlcnM6IGRpc2FibGUgbGliY2hlY2tyYmQuc28KLQotbGliY2hlY2tyYmQuc28gZGVwZW5kcyBvbiBsaWJyYWRvcywgd2hpY2ggaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUKLWFzIGEgcmVjaXBlLiBUaGVzZSBjaGVja2VycyBzZWVtIHRvIGJlIG9wdGlvbmFsLCBzbyBmb3Igbm93IHdlIG1lcmVseQotZGlzYWJsZSBjb21waWxhdGlvbiBvZiBsaWJjaGVja3JiZC5zby4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCi1pbmRleCAxMWFiNzZmLi5jODQ4ZDUwIDEwMDY0NAotLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCi0rKysgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKLUBAIC0xNCw3ICsxNCw2IEBAIExJQlM9IFwKLSAJbGliY2hlY2tlbWNfY2xhcmlpb24uc28gXAotIAlsaWJjaGVja2hwX3N3LnNvIFwKLSAJbGliY2hlY2tyZGFjLnNvIFwKLS0JbGliY2hlY2tyYmQuc28KLSAKLSBhbGw6ICQoTElCUykKLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL21ha2VmaWxlX2luYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL21ha2VmaWxlX2luYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3YjY5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9tYWtlZmlsZV9pbmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDlmNTc2OGVjYTE2NTUwMmIwZjE3ZDI3MWFhNmY3Y2Y1MzBlYzYwYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDIyIFNlcCAyMDE0IDE3OjIyOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aC10b29sczogbW9kaWZ5IE1ha2VmaWxlLmluYyBmb3IKLSBjcm9zcy1jb21waWxhdGlvbgotCi1EbyBub3QgbG9vayBmb3Igc3lzdGVtZCBpbmZvIG9uIHRoZSBob3N0LCBhbmQgYWxsb3cgdXMgdG8gcGFzcyBpbiBDRkxBR1MKLXVzaW5nIHRoZSBPUFRGTEFHUyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1VcGRhdGUgZm9yIHZlcnNpb24gMC41LjAtMTQ0LWc3NzBlNmQwCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuaW5jIHwgMTcgKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYwotaW5kZXggMWNjOGY0NC4uMTVmOGI5MSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluYwotKysrIGIvTWFrZWZpbGUuaW5jCi1AQCAtMjksMTIgKzI5LDYgQEAgaWZuZGVmIFJVTgotIAllbmRpZgotIGVuZGlmCi0gCi0taWZuZGVmIFNZU1RFTUQKLS0JaWZlcSAoJChzaGVsbCBzeXN0ZW1jdGwgLS12ZXJzaW9uID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyAxKSwgMSkKLS0JCVNZU1RFTUQgPSAkKHNoZWxsIHN5c3RlbWN0bCAtLXZlcnNpb24gMj4gL2Rldi9udWxsIHwgIHNlZCAtbiAncy9zeXN0ZW1kIFwoWzAtOV0qXCkvXDEvcCcpCi0tCWVuZGlmCi0tZW5kaWYKLS0KLSBpZm5kZWYgU1lTVEVNRFBBVEgKLSAJU1lTVEVNRFBBVEg9dXNyL2xpYgotIGVuZGlmCi1AQCAtNjEsMTMgKzU1LDEyIEBAIFJNCQk9IHJtIC1mCi0gTE4JCT0gbG4gLXNmCi0gSU5TVEFMTF9QUk9HUkFNCT0gaW5zdGFsbAotIAotLU9QVEZMQUdTCT0gLU8yIC1nIC1waXBlIC1XYWxsIC1XZXh0cmEgLVdmb3JtYXQ9MiBcCi0tCQkgIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLWNsb2JiZXJlZCBcCi0tCQkgIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mc3RhY2stcHJvdGVjdG9yIFwKLS0JCSAgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NAotK2lmbmRlZiBPUFRGTEFHUwotK09QVEZMQUdTICAgICA9ICQoUlBNX09QVF9GTEFHUykgLVd1bnVzZWQgLVdzdHJpY3QtcHJvdG90eXBlcwotK2VuZGlmCi0gCi0tQ0ZMQUdTCQk9ICQoT1BURkxBR1MpIC1mUElDIC1ETElCX1NUUklORz1cIiR7TElCfVwiIC1EUlVOX0RJUj1cIiR7UlVOfVwiCi0tU0hBUkVEX0ZMQUdTCT0gLXNoYXJlZAotK0NGTEFHUwkgICAgID0gJChPUFRGTEFHUykgLWZQSUMgLURMSUJfU1RSSU5HPVwiJHtMSUJ9XCIgLURSVU5fRElSPVwiJHtSVU59XCIKLStTSEFSRURfRkxBR1MgPSAtc2hhcmVkCi0gCi0gJS5vOgklLmMKLSAJJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9tdWx0aXBhdGguY29uZi5leGFtcGxlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvbXVsdGlwYXRoLmNvbmYuZXhhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmJlYWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvbXVsdGlwYXRoLmNvbmYuZXhhbXBsZQpAQCAtMCwwICsxLDkwIEBACisjIFRoaXMgaXMgYSBiYXNpYyBjb25maWd1cmF0aW9uIGZpbGUgd2l0aCBzb21lIGV4YW1wbGVzLCBmb3IgZGV2aWNlIG1hcHBlcgorIyBtdWx0aXBhdGguCisjIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMsIHNlZQorIyAvdXNyL3NoYXJlL2RvYy9kZXZpY2UtbWFwcGVyLW11bHRpcGF0aC0wLjQuOS9tdWx0aXBhdGguY29uZi5kZWZhdWx0cworIyBGb3IgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9ucywgc2VlCisjIC91c3Ivc2hhcmUvZG9jL2RldmljZS1tYXBwZXItbXVsdGlwYXRoLTAuNC45L211bHRpcGF0aC5jb25mLmFubm90YXRlZAorCisjIyBCeSBkZWZhdWx0LCBkZXZpY2VzIHdpdGggdmVuZG9yID0gIklCTSIgYW5kIHByb2R1Y3QgPSAiUy8zOTAuKiIgYXJlCisjIyBibGFja2xpc3RlZC4gVG8gZW5hYmxlIG11bGl0cGF0aGluZyBvbiB0aGVzZSBkZXZpZXMsIHVuY29tbWVudCB0aGUKKyMjIGZvbGxvd2luZyBsaW5lcy4KKyNibGFja2xpc3RfZXhjZXB0aW9ucyB7CisjCWRldmljZSB7CisjCQl2ZW5kb3IJIklCTSIKKyMJCXByb2R1Y3QJIlMvMzkwLioiCisjCX0KKyN9CisKKyMjIFVzZSB1c2VyIGZyaWVuZGx5IG5hbWVzLCBpbnN0ZWFkIG9mIHVzaW5nIFdXSURzIGFzIG5hbWVzLgorZGVmYXVsdHMgeworCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCit9CisjIworIyMgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byBjb25maWd1cmUgc29tZSBzdGFuZGFyZCBvcHRpb25zLgorIyMKKyMKKyNkZWZhdWx0cyB7CisjCXVkZXZfZGlyCQkvZGV2CisjCXBvbGxpbmdfaW50ZXJ2YWwgCTEwCisjCXNlbGVjdG9yCQkicm91bmQtcm9iaW4gMCIKKyMJcGF0aF9ncm91cGluZ19wb2xpY3kJbXVsdGlidXMKKyMJZ2V0dWlkX2NhbGxvdXQJCSIvbGliL3VkZXYvc2NzaV9pZCAtLXdoaXRlbGlzdGVkIC0tZGV2aWNlPS9kZXYvJW4iCisjCXByaW8JCQlhbHVhCisjCXBhdGhfY2hlY2tlcgkJcmVhZHNlY3RvcjAKKyMJcnJfbWluX2lvCQkxMDAKKyMJbWF4X2ZkcwkJCTgxOTIKKyMJcnJfd2VpZ2h0CQlwcmlvcml0aWVzCisjCWZhaWxiYWNrCQlpbW1lZGlhdGUKKyMJbm9fcGF0aF9yZXRyeQkJZmFpbAorIwl1c2VyX2ZyaWVuZGx5X25hbWVzCXllcworI30KKyMjCisjIyBUaGUgd3dpZCBsaW5lIGluIHRoZSBmb2xsb3dpbmcgYmxhY2tsaXN0IHNlY3Rpb24gaXMgc2hvd24gYXMgYW4gZXhhbXBsZQorIyMgb2YgaG93IHRvIGJsYWNrbGlzdCBkZXZpY2VzIGJ5IHd3aWQuICBUaGUgMiBkZXZub2RlIGxpbmVzIGFyZSB0aGUKKyMjIGNvbXBpbGVkIGluIGRlZmF1bHQgYmxhY2tsaXN0LiBJZiB5b3Ugd2FudCB0byBibGFja2xpc3QgZW50aXJlIHR5cGVzCisjIyBvZiBkZXZpY2VzLCBzdWNoIGFzIGFsbCBzY3NpIGRldmljZXMsIHlvdSBzaG91bGQgdXNlIGEgZGV2bm9kZSBsaW5lLgorIyMgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gYmxhY2tsaXN0IHNwZWNpZmljIGRldmljZXMsIHlvdSBzaG91bGQgdXNlCisjIyBhIHd3aWQgbGluZS4gIFNpbmNlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGEgc3BlY2lmaWMgZGV2aWNlIHdpbGwKKyMjIG5vdCBjaGFuZ2UgbmFtZXMgb24gcmVib290IChmcm9tIC9kZXYvc2RhIHRvIC9kZXYvc2RiIGZvciBleGFtcGxlKQorIyMgZGV2bm9kZSBsaW5lcyBhcmUgbm90IHJlY29tbWVuZGVkIGZvciBibGFja2xpc3Rpbmcgc3BlY2lmaWMgZGV2aWNlcy4KKyMjCisjYmxhY2tsaXN0IHsKKyMgICAgICAgd3dpZCAyNjM1MzkwMGYwMjc5Njc2OQorIwlkZXZub2RlICJeKHJhbXxyYXd8bG9vcHxmZHxtZHxkbS18c3J8c2NkfHN0KVswLTldKiIKKyMJZGV2bm9kZSAiXmhkW2Etel0iCisjfQorI211bHRpcGF0aHMgeworIwltdWx0aXBhdGggeworIwkJd3dpZAkJCTM2MDA1MDhiNDAwMDE1NmQ3MDAwMTIwMDAwMDBiMDAwMAorIwkJYWxpYXMJCQl5ZWxsb3cKKyMJCXBhdGhfZ3JvdXBpbmdfcG9saWN5CW11bHRpYnVzCisjCQlwYXRoX2NoZWNrZXIJCXJlYWRzZWN0b3IwCisjCQlwYXRoX3NlbGVjdG9yCQkicm91bmQtcm9iaW4gMCIKKyMJCWZhaWxiYWNrCQltYW51YWwKKyMJCXJyX3dlaWdodAkJcHJpb3JpdGllcworIwkJbm9fcGF0aF9yZXRyeQkJNQorIwl9CisjCW11bHRpcGF0aCB7CisjCQl3d2lkCQkJMURFQ19fX19fMzIxODE2NzU4NDc0CisjCQlhbGlhcwkJCXJlZAorIwl9CisjfQorI2RldmljZXMgeworIwlkZXZpY2UgeworIwkJdmVuZG9yCQkJIkNPTVBBUSAgIgorIwkJcHJvZHVjdAkJCSJIU1YxMTAgKEMpQ09NUEFRIgorIwkJcGF0aF9ncm91cGluZ19wb2xpY3kJbXVsdGlidXMKKyMJCWdldHVpZF9jYWxsb3V0ICAgICAgICAgICIvbGliL3VkZXYvc2NzaV9pZCAtLXdoaXRlbGlzdGVkIC0tZGV2aWNlPS9kZXYvJW4iCisjCQlwYXRoX2NoZWNrZXIJCXJlYWRzZWN0b3IwCisjCQlwYXRoX3NlbGVjdG9yCQkicm91bmQtcm9iaW4gMCIKKyMJCWhhcmR3YXJlX2hhbmRsZXIJIjAiCisjCQlmYWlsYmFjawkJMTUKKyMJCXJyX3dlaWdodAkJcHJpb3JpdGllcworIwkJbm9fcGF0aF9yZXRyeQkJcXVldWUKKyMJfQorIwlkZXZpY2UgeworIwkJdmVuZG9yCQkJIkNPTVBBUSAgIgorIwkJcHJvZHVjdAkJCSJNU0ExMDAwICAgICAgICAgIgorIwkJcGF0aF9ncm91cGluZ19wb2xpY3kJbXVsdGlidXMKKyMJfQorI30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL3NoYXJlZC1saWJzLWF2b2lkLWxpbmtpbmctLnNvLWFzLWV4ZWN1dGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9zaGFyZWQtbGlicy1hdm9pZC1saW5raW5nLS5zby1hcy1leGVjdXRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODU3OWU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL3NoYXJlZC1saWJzLWF2b2lkLWxpbmtpbmctLnNvLWFzLWV4ZWN1dGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDQzMTE4NTYyMDA0ODAyODg0OTRkZjhkZjczN2Y3MWVhMzE2NTkyZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDI2IEphbiAyMDE3IDE1OjI4OjM0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNoYXJlZCBsaWJzOiBhdm9pZCBsaW5raW5nIC5zbyBhcyBleGVjdXRhYmxlCi0KLVdoZW4gdGhlIE9FIGJ1aWxkIHN5c3RlbXMgc2V0cyBDRkxBR1MgaW5jbHVkaW5nIC1waWUsIGdjYyBvdmVycmlkZXMKLXRoZSBlYXJsaWVyIC1zaGFyZWQgcGFyYW1ldGVyIGFuZCB0cmllcyB0byBsaW5rIGEgYmluYXJ5LCBsZWFkaW5nIHRvCi1lcnJvcnMgYWJvdXQgbWlzc2luZyBmdW5jdGlvbnMgbGlrZSBtYWluKCkuCi0KLVJlb3JkZXJpbmcgdGhlIHBhcmFtZXRlcnMgc28gdGhhdCAtc2hhcmVkIGNvbWVzIGFmdGVyIENGTEFHUwotZml4ZXMgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpYywgLXBpZSBzaG91bGRuJ3QgYmUgaW4gQ0ZMQUdTPyFdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL2xpYm1wYXRoY21kL01ha2VmaWxlIGIvbGlibXBhdGhjbWQvTWFrZWZpbGUKLWluZGV4IDQ1N2M0Y2EuLmY2OGM4MmMgMTAwNjQ0Ci0tLS0gYS9saWJtcGF0aGNtZC9NYWtlZmlsZQotKysrIGIvbGlibXBhdGhjbWQvTWFrZWZpbGUKLUBAIC05LDcgKzksNyBAQCBPQkpTID0gbXBhdGhfY21kLm8KLSBhbGw6ICQoTElCUykKLSAKLSAkKExJQlMpOiAkKE9CSlMpCi0tCSQoQ0MpICQoTERGTEFHUykgJChTSEFSRURfRkxBR1MpIC1XbCwtc29uYW1lPSRAICQoQ0ZMQUdTKSAtbyAkQCAkKE9CSlMpICQoTElCREVQUykKLSsJJChDQykgJChMREZMQUdTKSAkKENGTEFHUykgJChTSEFSRURfRkxBR1MpIC1XbCwtc29uYW1lPSRAIC1vICRAICQoT0JKUykgJChMSUJERVBTKQotIAkkKExOKSAkQCAkKERFVkxJQikKLSAKLSBpbnN0YWxsOiAkKExJQlMpCi1kaWZmIC0tZ2l0IGEvbGlibXBhdGhwZXJzaXN0L01ha2VmaWxlIGIvbGlibXBhdGhwZXJzaXN0L01ha2VmaWxlCi1pbmRleCA2ZTQzNDI3Li4yNDg2MzAyIDEwMDY0NAotLS0tIGEvbGlibXBhdGhwZXJzaXN0L01ha2VmaWxlCi0rKysgYi9saWJtcGF0aHBlcnNpc3QvTWFrZWZpbGUKLUBAIC0xNSw3ICsxNSw3IEBAIGFsbDogJChMSUJTKQotIAotICQoTElCUyk6Ci0gCSQoQ0MpIC1jICQoQ0ZMQUdTKSAqLmMKLS0JJChDQykgJChMREZMQUdTKSAkKFNIQVJFRF9GTEFHUykgJChMSUJERVBTKSAtV2wsLXNvbmFtZT0kQCAkKENGTEFHUykgLW8gJEAgJChPQkpTKQotKwkkKENDKSAkKExERkxBR1MpICQoQ0ZMQUdTKSAkKFNIQVJFRF9GTEFHUykgJChMSUJERVBTKSAtV2wsLXNvbmFtZT0kQCAtbyAkQCAkKE9CSlMpCi0gCSQoTE4pICQoTElCUykgJChERVZMSUIpCi0gCSQoR1pJUCkgbXBhdGhfcGVyc2lzdGVudF9yZXNlcnZlX2luLjMgPiBtcGF0aF9wZXJzaXN0ZW50X3Jlc2VydmVfaW4uMy5negotIAkkKEdaSVApIG1wYXRoX3BlcnNpc3RlbnRfcmVzZXJ2ZV9vdXQuMyA+IG1wYXRoX3BlcnNpc3RlbnRfcmVzZXJ2ZV9vdXQuMy5negotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9NYWtlZmlsZSBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotaW5kZXggNDk1Y2ViZS4uNzUyYmNjMCAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotKysrIGIvbGlibXVsdGlwYXRoL01ha2VmaWxlCi1AQCAtNTUsNyArNTUsNyBAQCBPQkpTID0gbWVtb3J5Lm8gcGFyc2VyLm8gdmVjdG9yLm8gZGV2bWFwcGVyLm8gY2FsbG91dC5vIFwKLSBhbGw6ICQoTElCUykKLSAKLSAkKExJQlMpOiAkKE9CSlMpCi0tCSQoQ0MpICQoTERGTEFHUykgJChTSEFSRURfRkxBR1MpIC1XbCwtc29uYW1lPSRAICQoQ0ZMQUdTKSAtbyAkQCAkKE9CSlMpICQoTElCREVQUykKLSsJJChDQykgJChMREZMQUdTKSAkKENGTEFHUykgJChTSEFSRURfRkxBR1MpIC1XbCwtc29uYW1lPSRAIC1vICRAICQoT0JKUykgJChMSUJERVBTKQotIAkkKExOKSAkQCAkKERFVkxJQikKLSAKLSBpbnN0YWxsOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzXzAuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzXzAuNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYzVkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9tdWx0aXBhdGgtdG9vbHNfMC43LjEuYmIKQEAgLTAsMCArMSwxMTMgQEAKK1NVTU1BUlkgPSAiVGhlIHVwc3RyZWFtIHByb2plY3QgdXNlZCB0byBkcml2ZSB0aGUgRGV2aWNlIE1hcHBlciBtdWx0aXBhdGhpbmcgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJJdCBwcm92aWRlcyB0b29scyB0byBtYW5hZ2UgbXVsdGlwYXRoIGRldmljZXMgXAorYnkgaW5zdHJ1Y3RpbmcgdGhlIGRldmljZS1tYXBwZXIga2VybmVsIG1vZHVsZSB3aGF0IHRvIGRvLiBUaGVzZSBcCit0b29scyBpbmNsdWRlOiBcCisxLiBtdWx0aXBhdGggLSBTY2FuIHRoZSBzeXN0ZW0gZm9yIG11bHRpcGF0aCBkZXZpY2VzIGFuZCBhc3NlbWJsZSB0aGVtLlwKKzIuIG11bHRpcGF0aGQgLSBEZXRlY3RzIHdoZW4gcGF0aHMgZmFpbCBhbmQgZXhlY3MgbXVsdGlwYXRoIHRvIHVwZGF0ZSBcCit0aGluZ3MuXAorMy4gbXBhdGhwZXJzaXN0IC0gUGVyc2lzdGVudCByZXNlcnZhdGlvbiBtYW5hZ2VtZW50IGZlYXR1cmUgYWxsb3dzIFwKK2NsdXN0ZXIgbWFuYWdlbWVudCBzb2Z0d2FyZSB0byBtYW5hZ2UgcGVyc2lzdGVudCByZXNlcnZhdGlvbiB0aHJvdWdoIFwKK21wYXRoIGRldmljZS4gSXQgcHJvY2Vzc2VzIG1hbmFnZW1lbnQgcmVxdWVzdHMgZnJvbSBjYWxsZXJzIGFuZCBoaWRlcyBcCit0aGUgbWFuYWdlbWVudCB0YXNrIGRldGFpbHMuIEl0IGFsc28gaGFuZGxlcyBwZXJzaXN0ZW50IHJlc2VydmF0aW9uIFwKK21hbmFnZW1lbnQgb2YgZGF0YSBwYXRoIGxpZmUgY3ljbGUgYW5kIHN0YXRlIGNoYW5nZXMuXAorNC4ga3BhcnR4IC0gVGhpcyB0b29sLCBkZXJpdmVkIGZyb20gdXRpbC1saW51eCdzIHBhcnR4LCByZWFkcyBwYXJ0aXRpb24gXAordGFibGVzIG9uIHNwZWNpZmllZCBkZXZpY2UgYW5kIGNyZWF0ZSBkZXZpY2UgbWFwcyBvdmVyIHBhcnRpdGlvbnMgXAorc2VnbWVudHMgZGV0ZWN0ZWQuIEl0IGlzIGNhbGxlZCBmcm9tIGhvdHBsdWcgdXBvbiBkZXZpY2UgbWFwcyBjcmVhdGlvbiBcCithbmQgZGVsZXRpb24iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9jaHJpc3RvcGhlLnZhcm9xdWkuZnJlZS5mci8iCisKK0RFUEVORFMgPSAibGliZGV2bWFwcGVyIFwKKyAgICAgICAgICAgbGliYWlvIFwKKyAgICAgICAgICAgbGlidXJjdSBcCisgICAgICAgICAgIHJlYWRsaW5lIFwKKyAgICAgICAgICAgdWRldiBcCisgICAgICAgICAgIGpzb24tYyBcCisgICAgICAgICAgIgorCitMSUNFTlNFID0gIkdQTHYyIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5vcGVuc3ZjLmNvbS9tdWx0aXBhdGgtdG9vbHMvLmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovL211bHRpcGF0aGQub2UgXAorICAgICAgICAgICBmaWxlOi8vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW11bHRpcGF0aC1hdHRlbXB0LWF0LWNvbW1vbi1tdWx0aXBhdGgucnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SSC1maXh1cC11ZGV2LXJ1bGVzLWZvci1yZWRoYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1SSC1SZW1vdmUtdGhlLXByb3BlcnR5LWJsYWNrbGlzdC1leGNlcHRpb24tYnVpbHRpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVJILWRvbi10LXN0YXJ0LXdpdGhvdXQtYS1jb25maWctZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1SSC10cmlnZ2VyLWNoYW5nZS11ZXZlbnQtb24tbmV3LWRldmljZS1jcmVhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLW1wYXRoLXNraXAtZGV2aWNlLWNvbmZpZ3Mtd2l0aG91dC12ZW5kb3ItcHJvZHVjdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCisgICAgICAgICAgICIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitTUkNSRVYgPSAiZjIxMTY2YTgxMmEyY2ZiNTBlY2Y5NTUwZDMyOTQ3YzgzMTAzZjgzYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBzeXN0ZW1kIHBrZ2NvbmZpZworCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibXVsdGlwYXRoZC5zZXJ2aWNlIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworIyBtdWx0aXBhdGgtdG9vbHMgaW5jbHVkZXMgYSBjb3B5IG9mIHRoZSB2YWxncmluZC5oIGhlYWRlcgorIyBmaWxlIGFuZCB1c2VzIHRoZSBtYWNyb3MgdG8gc3VwcHJlc3Mgc29tZSBmYWxzZSBwb3NpdGl2ZXMuIEhvd2V2ZXIsCisjIHRoYXQgb25seSB3b3JrcyBvbiBBUk0gd2hlbiB0aHVtYiBpcyBkaXNhYmxlZC4gT3RoZXJ3aXNlIG9uZSBnZXRzOgorIyAgIEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjEyLHIxMixyb3IjMycKKyMgICAuLi9NYWtlZmlsZS5pbmM6NjY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdkZWJ1Zy5vJyBmYWlsZWQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKKyMgVGhlIGV4YWN0IHZlcnNpb24gb2YgU1lTVEVNRCBkb2VzIG5vdCBtYXR0ZXIgYnV0IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMjA5LgorIworRVhUUkFfT0VNQUtFID0gJ01VTFRJUEFUSF9WRVJTSU9OPSR7UFZ9IERFU1RESVI9JHtEfSBzeXNsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgICAgICAgICAgICAgIE9QVEZMQUdTPSIke0NGTEFHU30iIFwKKyAgICAgICAgICAgICAgICBiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBMSUI9JHtiYXNlX2xpYmRpcn0gbGliZGlyPSR7YmFzZV9saWJkaXJ9L211bHRpcGF0aCBcCisgICAgICAgICAgICAgICAgdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAiU1lTVEVNRD0yMTYiLCAiIiwgZCl9IFwKKyAgICAgICAgICAgICAgICcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKKworICAgICMgV2UgY29weSBhbiBpbml0c2NyaXB0LCBidXQgZG8gbm90IHN0YXJ0IG11bHRpcGF0aGQgYXQgaW5pdCB0aW1lLgorICAgICMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGNwICR7V09SS0RJUn0vbXVsdGlwYXRoZC5vZSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbXVsdGlwYXRoZAorICAgIGZpCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBcCisgICAgJHtEfSR7c3lzY29uZmRpcn0vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZQorfQorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L211bHRpcGF0aC8uZGVidWciCisKK1BBQ0tBR0VTID0rICIke1BOfS1saWJzIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2Jhc2VfbGliZGlyfS9saWIqLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGgvbGliKi5zbyoiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbGlicyBiYXNoIgorCitQUk9WSURFUyArPSAiZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgiCitSUFJPVklERVNfJHtQTn0gKz0gImRldmljZS1tYXBwZXItbXVsdGlwYXRoIgorUlBST1ZJREVTXyR7UE59LWxpYnMgKz0gImRldmljZS1tYXBwZXItbXVsdGlwYXRoLWxpYnMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnIgorCitQQUNLQUdFUyA9KyAia3BhcnR4IgorRklMRVNfa3BhcnR4ID0gIiR7YmFzZV9zYmluZGlyfS9rcGFydHggXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3VkZXYva3BhcnR4X2lkIFwKKyAgICAgICAgICAgICAgICIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2gga3BhcnR4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOGM0MjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHVwc3RyZWFtIHByb2plY3QgdXNlZCB0byBkcml2ZSB0aGUgRGV2aWNlIE1hcHBlciBtdWx0aXBhdGhpbmcgZHJpdmVyIgotCi1ERVBFTkRTID0gImxpYmRldm1hcHBlciBsaWJhaW8gbGlidXJjdSByZWFkbGluZSB1ZGV2IgotCi1MSUNFTlNFID0gIkxHUEx2MiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQub3BlbnN2Yy5jb20vbXVsdGlwYXRoLXRvb2xzLy5naXQ7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdWx0aXBhdGhkLm9lIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlX2luYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHdheXMtdXNlLWxpYmRldm1hcHBlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHdheXMtdXNlLWxpYmRldm1hcHBlci1rcGFydHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tdWx0aXBhdGhkLnNlcnZpY2UtRXJyb3ItZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLWF2b2lkLWxpbmtpbmctLnNvLWFzLWV4ZWN1dGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2hlY2tlcnMtZGlzYWJsZS1saWJjaGVja3JiZC5zby5wYXRjaCBcCi0gICAgICAgICAgICIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi0jIDAuNi40Ci1TUkNSRVYgPSAiOTIyNDIxY2Y3OTVkNTNkMzM5ODYyYmIyZDk5ZjFhODVjOTZhZDlhMyIKLQotaW5oZXJpdCBzeXN0ZW1kCi0KLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUFYgPSAiMC42LjQrZ2l0JHtAJyR7U1JDUFZ9Jy5zcGxpdCgnKycpWy0xXX0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi0jIG11bHRpcGF0aC10b29scyBpbmNsdWRlcyBhIGNvcHkgb2YgdGhlIHZhbGdyaW5kLmggaGVhZGVyCi0jIGZpbGUgYW5kIHVzZXMgdGhlIG1hY3JvcyB0byBzdXBwcmVzcyBzb21lIGZhbHNlIHBvc2l0aXZlcy4gSG93ZXZlciwKLSMgdGhhdCBvbmx5IHdvcmtzIG9uIEFSTSB3aGVuIHRodW1iIGlzIGRpc2FibGVkLiBPdGhlcndpc2Ugb25lIGdldHM6Ci0jICAgRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMTIscjEyLHJvciMzJwotIyAgIC4uL01ha2VmaWxlLmluYzo2NjogcmVjaXBlIGZvciB0YXJnZXQgJ2RlYnVnLm8nIGZhaWxlZAotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotIyBUaGUgZXhhY3QgdmVyc2lvbiBvZiBTWVNURU1EIGRvZXMgbm90IG1hdHRlciBidXQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAyMDkuCi0jCi1FWFRSQV9PRU1BS0UgPSAnTVVMVElQQVRIX1ZFUlNJT049JHtQVn0gREVTVERJUj0ke0R9IHN5c2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCi0gICAgICAgICAgICAgICAgT1BURkxBR1M9IiR7Q0ZMQUdTfSIgXAotICAgICAgICAgICAgICAgIGJpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIExJQj0ke2Jhc2VfbGliZGlyfSBsaWJkaXI9JHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoIFwKLSAgICAgICAgICAgICAgICB1bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdGVtZCIsICJTWVNURU1EPTIxNiIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgJwotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotCi0gICAgIyBXZSBjb3B5IGFuIGluaXRzY3JpcHQsIGJ1dCBkbyBub3Qgc3RhcnQgbXVsdGlwYXRoZCBhdCBpbml0IHRpbWUuCi0gICAgIwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgY3AgJHtXT1JLRElSfS9tdWx0aXBhdGhkLm9lICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tdWx0aXBhdGhkCi0KLX0KLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGgvLmRlYnVnIgotCi0jIHN5c3RlbWQgYW5kIHVkZXYgc3R1ZmYgYWx3YXlzIGdvZXMgdW5kZXIgL2xpYiEKLSMKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGggXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotCQkiCi0KLVBBQ0tBR0VTID0rICJrcGFydHgiCi1GSUxFU19rcGFydHggPSAiJHtiYXNlX3NiaW5kaXJ9L2twYXJ0eCBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vdWRldi9rcGFydHhfaWQgXAotICAgICAgICAgICAgICAgIgotCi1SREVQRU5EU18ke1BOfSArPSAia3BhcnR4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGItbmF0aXZlXzUuNS41Ny5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLmluYwppbmRleCBmZDlkY2JkLi4yNjNiMzEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMKQEAgLTQsNyArNCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5tYXJpYWRiLmNvbS9NYXJpYURCL21hcmlhZGItJHtQVn0vc291cmNlL21hcmlhZGItJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZHMubWFyaWFkYi5vcmcvZi8ke0JQfS9zb3VyY2UvJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1jbWFrZS1tb2R1bGUtcGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYmFkLXBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LW15c3FsY2xpZW50LXItdmVyc2lvbi5wYXRjaCBcCkBAIC0xNywxMCArMTcsMTAgQEAKICAgICAgICAgICAgZmlsZTovL2ZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY2hhbmdlLWNjLXRvLWNjLXZlcnNpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNhYmxlLXVjb250ZXh0LW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNy5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU0YTBiYmJjOWI2NzMwOGU3YzA3NjYyMmQwMmYwZmNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiOTRlMzE1ZDBmYzkwYzYyZGI1YTZjNzgyOWM5OTY2ZjY3NDI4NWQ5OWIzYmEzZmZhNTc1ZmI0YTI2ZWRjODYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDQxMDRhYWUwYjllNWVmYTg4Nzg5MThiZDMyOWNiNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGJkZTk4ZDdlNGE1YTE3MjFiNmNiZWQ3ODk4YjI1NDlhODg4NjYyNDc5NTFjZjU4NjA1Nzk3NWM2Y2VhNjQxIgogCiBTID0gIiR7V09SS0RJUn0vbWFyaWFkYi0ke1BWfSIKIApAQCAtODIsNiArODIsOSBAQAogICAgICAgICAgICAgICAgICAtRENBVF9FWEVDVVRBQkxFPWB3aGljaCBjYXRgIFwKICAgICAgICAgICAgICAgICAgLURDTUFLRV9BUjpGSUxFUEFUSD0ke0FSfSIKIAorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKwogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKICAgICAjIGhhbmRsZSBkaXN0cm9zIHdpdGggZGlmZmVyZW50IHZhbHVlcyBvZiAke2xpYmV4ZWNkaXJ9CiAgICAgbGliZXhlY2RpcjI9YGVjaG8gJHtsaWJleGVjZGlyfSB8IHNlZCAtZSAncysvdXNyLysrZydgCkBAIC0yNTUsNiArMjU4LDcgQEAKICAgICAke2JpbmRpcn0vbXlzcWxiaW5sb2cgXAogICAgICR7YmluZGlyfS9teXNxbGRfbXVsdGkgXAogICAgICR7YmluZGlyfS9teXNxbGRfc2FmZSBcCisgICAgJHtiaW5kaXJ9L215c3FsZF9zYWZlX2hlbHBlciBcCiAgICAgJHtiaW5kaXJ9L215c3FsaG90Y29weSBcCiAgICAgJHtiaW5kaXJ9L215c3FsdGVzdCBcCiAgICAgJHtiaW5kaXJ9L25kYl9kZWxldGVfYWxsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2djYzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzViMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2djYzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogbWFyaWFkYi01LjUuNTUvY2xpZW50L215c3FsLmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWFyaWFkYi01LjUuNTUub3JpZy9jbGllbnQvbXlzcWwuY2MKLSsrKyBtYXJpYWRiLTUuNS41NS9jbGllbnQvbXlzcWwuY2MKLUBAIC0yODUwLDcgKzI4NTAsNyBAQCBZb3UgY2FuIHR1cm4gb2ZmIHRoaXMgZmVhdHVyZSB0byBnZXQgYSBxCi0gICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdChmaWVsZHMpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotLSAgICAgIGZpZWxkX25hbWVzW2ldW251bV9maWVsZHMqMl09ICdcMCc7Ci0rICAgICAgZmllbGRfbmFtZXNbaV1bbnVtX2ZpZWxkcyoyXVswXT0gJ1wwJzsKLSAgICAgICBqPTA7Ci0gICAgICAgd2hpbGUgKChzcWxfZmllbGQ9bXlzcWxfZmV0Y2hfZmllbGQoZmllbGRzKSkpCi0gICAgICAgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiXzUuNS41NS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTcuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTZiMTBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS4yNi4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiSFRUUC8yIEMgTGlicmFyeSBhbmQgdG9vbHMiCitIT01FUEFHRSA9ICJodHRwczovL25naHR0cDIub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJwa2djb25maWcgY3VuaXQgemxpYiBvcGVuc3NsIGxpYnhtbDIgamFuc3NvbiBjLWFyZXMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL25naHR0cDIvbmdodHRwMi9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vbmdodHRwMi0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjkyNmYwN2FkM2I1MGYzOGY3ZDg5MzVjZWQwNDcxNmNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkZjQyMjlmNDEyM2I1YWE5NmU4MzRlYmNmZGZmZTk1NGU5M2Q5ODZmMDI1MmZkMTAxMjNkNTBjNmYwMTA5ODMiCisKK2luaGVyaXQgY21ha2UgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIKKworRVhUUkFfT0VDTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbi8wMDAxLWxtb24xNmcuYy1BZGp1c3Qtc3lzdGVtLWhlYWRlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbi8wMDAxLWxtb24xNmcuYy1BZGp1c3Qtc3lzdGVtLWhlYWRlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZWJlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbm1vbi9ubW9uLzAwMDEtbG1vbjE2Zy5jLUFkanVzdC1zeXN0ZW0taGVhZGVycy5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGQ5NzdiNTE3MDAyNzkyNmViOTdhYjk3NDJkZGM1MWQyYTU1NTVhMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMDowNjo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsbW9uMTZnLmM6IEFkanVzdCBzeXN0ZW0gaGVhZGVycworCitmc3RhYi5oIGlzIHVudXNlZAorZXJybm8uaCBpcyBpbiAvdXNyL2luY2x1ZGUKK2RlZmluZXMgZnJvbSBzeXMvY2RlZnMuaCBpcyB1c2VkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsbW9uMTZnLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG1vbjE2Zy5jIGIvbG1vbjE2Zy5jCitpbmRleCBjYjI3ZTA5Li5kMmExMWM1IDEwMDY0NAorLS0tIGEvbG1vbjE2Zy5jCisrKysgYi9sbW9uMTZnLmMKK0BAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjaGFyICpTY2NzSWQgPSAibm1vbiAiIFZFUlNJT047CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorQEAgLTcxLDYgKzcxLDcgQEAgc3RhdGljIGNoYXIgKlNjY3NJZCA9ICJubW9uICIgVkVSU0lPTjsKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAKKyAvKiBXaW5kb3dzIG1vdmVkIGhlcmUgc28gdGhleSBjYW4gYmUgY2xlYXJlZCB3aGVuIHRoZSBzY3JlZW4gbW9kZSBjaGFuZ2VzICovCisgV0lORE9XICpwYWR3ZWxjb21lID0gTlVMTDsKK0BAIC01NzYsNyArNTc3LDYgQEAgc3RydWN0IHByb2NzaW5mbyB7CisgaW50IGlzcm9vdCA9IDA7CisgCisgI2luY2x1ZGUgPG1udGVudC5oPgorLSNpbmNsdWRlIDxmc3RhYi5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb25fMTNnLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb25fMTNnLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjc1MTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbm1vbi9ubW9uXzEzZy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAibm1vbiBwZXJmb3JtYW5jZSBtb25pdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL25tb24uc2YubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vRG9jdW1lbnRhdGlvbi50eHQ7bWQ1PWRiYjEzNjU4Y2Y1NWQ2ODdjNGYyZmY3NzFhNjk2ZDRhIgotREVQRU5EUyA9ICJuY3Vyc2VzIgotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L25tb24vbG1vbjEzZy5jO25hbWU9bG1vbiBcCi0gICAgICAgICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9ubW9uL0RvY3VtZW50YXRpb24udHh0O25hbWU9ZG9jIFwKLSIKLQotU1JDX1VSSVtsbW9uLm1kNXN1bV0gPSAiYjFiOGU2YzAxMjNhZDIzMjM5NDk5MWYyZDRmNDA0OTQiCi1TUkNfVVJJW2xtb24uc2hhMjU2c3VtXSA9ICI0NTZhYjJhMzQyYjMxZDFhMzUyZDBkOTQwYWY1OTYyZmE2NWExMmFlODc1N2ZmNzNlNmU3MzIxMDgzMmFlOGI1IgotU1JDX1VSSVtkb2MubWQ1c3VtXSA9ICJkYmIxMzY1OGNmNTVkNjg3YzRmMmZmNzcxYTY5NmQ0YSIKLVNSQ19VUklbZG9jLnNoYTI1NnN1bV0gPSAiMWY3ZjgzYWZlNjJhNzIxMGJlNWU4M2NkMjQxNTdhZGI4NTRjMTQ1OTllZmUwYjM3N2E3ZWNjYTkzMzg2OTI3OCIKLQotQ0ZMQUdTICs9ICItRCBKRlMgLUQgR0VUVVNFUiAtV2FsbCAtRCBMQVJHRU1FTSIKLUxERkxBR1MgKz0gIi1sdGluZm8gLWxuY3Vyc2VzdyIKLUFTTkVFREVEX3BuLW5tb24gPSAiIgotCi1kb19jb21waWxlKCkgewotICAgICR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9ICR7V09SS0RJUn0vbG1vbjEzZy5jIC1vIG5tb24KLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgbm1vbiAke0R9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbl8xNmcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbl8xNmcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3ZmFhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbm1vbi9ubW9uXzE2Zy5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIm5tb24gcGVyZm9ybWFuY2UgbW9uaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly9ubW9uLnNmLm5ldCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0RvY3VtZW50YXRpb24udHh0O21kNT1kYmIxMzY1OGNmNTVkNjg3YzRmMmZmNzcxYTY5NmQ0YSIKK0RFUEVORFMgPSAibmN1cnNlcyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYnNkLWhlYWRlcnMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L25tb24vbG1vbiR7UFZ9LmM7bmFtZT1sbW9uIFwKKyAgICAgICAgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L25tb24vRG9jdW1lbnRhdGlvbi50eHQ7bmFtZT1kb2MgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sbW9uMTZnLmMtQWRqdXN0LXN5c3RlbS1oZWFkZXJzLnBhdGNoIFwKKyIKK1NSQ19VUklbbG1vbi5tZDVzdW1dID0gIjI0NmNjZmM3NGQ1YWY1NWQ5OTI2MDFmYzRkM2Q0YTcyIgorU1JDX1VSSVtsbW9uLnNoYTI1NnN1bV0gPSAiZGE4MmRkNjkzYjUwM2IwNjI4NTRkZmU3ZGJiNWQzNmIzNDc4NzJhYjQ0YTRhYTA1Yjk3ZTlkNTc3NzQ3ZjY4OCIKK1NSQ19VUklbZG9jLm1kNXN1bV0gPSAiZGJiMTM2NThjZjU1ZDY4N2M0ZjJmZjc3MWE2OTZkNGEiCitTUkNfVVJJW2RvYy5zaGEyNTZzdW1dID0gIjFmN2Y4M2FmZTYyYTcyMTBiZTVlODNjZDI0MTU3YWRiODU0YzE0NTk5ZWZlMGIzNzdhN2VjY2E5MzM4NjkyNzgiCisKK0NGTEFHUyArPSAiLUQgSkZTIC1EIEdFVFVTRVIgLVdhbGwgLUQgTEFSR0VNRU0iCitMREZMQUdTICs9ICItbHRpbmZvIC1sbmN1cnNlc3cgLWxtIgorQVNORUVERURfcG4tbm1vbiA9ICIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9fY29tcGlsZSgpIHsKKyAgICAke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSBsbW9uJHtQVn0uYyAtbyBubW9uCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IG5tb24gJHtEfSR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfMi4wLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfMi4wLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDE1OWEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsXzIuMC4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVNVTU1BUlkgPSAiRGV2ZWxvcG1lbnQgcGFja2FnZSBmb3IgYnVpbGRpbmcgQXBwbGljYXRpb25zIHRoYXQgdXNlIG51bWEiCi1ERVNDUklQVElPTiA9ICJTaW1wbGUgTlVNQSBwb2xpY3kgc3VwcG9ydC4gSXQgY29uc2lzdHMgb2YgYSBudW1hY3RsIHByb2dyYW0gXAotdG8gcnVuIG90aGVyIHByb2dyYW1zIHdpdGggYSBzcGVjaWZpYyBOVU1BIHBvbGljeSBhbmQgYSBsaWJudW1hIHRvIGRvIFwKLWFsbG9jYXRpb25zIHdpdGggTlVNQSBwb2xpY3kgaW4gYXBwbGljYXRpb25zLiIKLUxJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4xIgotU0VDVElPTiA9ICJhcHBzIgotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTk7ZW5kbGluZT0zMjttZDU9NTY0NGNjMzg1MWNiMjQ5OWY2YzQ4ZTUyZmUxOThiZDkiCi0KLVNSQ19VUkkgPSAiZnRwOi8vb3NzLnNnaS5jb20vd3d3L3Byb2plY3RzL2xpYm51bWEvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2ZpeC1udWxsLXBvaW50ZXIucGF0Y2ggXAotICAgIGZpbGU6Ly9GaXgtdGhlLXRlc3Qtb3V0cHV0LWZvcm1hdC5wYXRjaCBcCi0gICAgZmlsZTovL01ha2VmaWxlIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICBmaWxlOi8vMDAwMS1kZWZpbmUtcnVuLXRlc3QtdGFyZ2V0LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkM2JjODhiN2RkYjlmMDZkNjA4OThmNDgxNmFlOTEyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTBjMDkxMjM1Zjg5MWVlODc0YTg2NTFiMTc5YzMwZjU3YTEzOTFjYTVjNDY3MzM1NDc0MGJhNjVlNTI3ODYxIgotCi0jIEFSTSBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBOVU1BCi1DT01QQVRJQkxFX0hPU1QgPSAiXigoPyFhcm0pLiopJCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBwcmVmaXg9JHtEfS91c3IgaW5zdGFsbAotICAgICNyZW1vdmUgdGhlIGVtcHR5IG1hbjIgZGlyZWN0b3J5Ci0gICAgcm0gLXIgJHtEfSR7bWFuZGlyfS9tYW4yCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSB0ZXN0Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgI2luc3RhbGwgdGVzdHMgYmluYXJpZXMKLSAgICBsb2NhbCB0ZXN0X2JpbmFyaWVzPSJkaXN0YW5jZSBmdG9rIG1iaW5kX21pZ19wYWdlcyBtaWdyYXRlX3BhZ2VzIG1vdmVfcGFnZXMgXAotICAgIG15bm9kZSAgICBub2RlbWFwIG5vZGUtcGFyc2UgcGFnZXNpemUgcHJlZmVyZWQgcmFuZG1hcCByZWFsbG9jX3Rlc3QgXAotICAgIHRiaXRtYXAgdHNoYXJlZCIKLQotICAgIFsgISAtZCAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdCBdICYmIG1rZGlyIC1wICR7RH0vJHtQVEVTVF9QQVRIfS90ZXN0Ci0gICAgZm9yIGkgaW4gJHRlc3RfYmluYXJpZXM7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QvLmxpYnMvJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotICAgIGRvbmUKLQotICAgIGxvY2FsIHRlc3Rfc2NyaXB0cz0iY2hlY2t0b3BvbG9neSBjaGVja2FmZmluaXR5IHByaW50Y3B1IHJlZ3Jlc3MgcmVncmVzczIgXAotICAgICAgICBzaG10ZXN0ICBydW5sdHAgYmluZF9yYW5nZSIKLSAgICBmb3IgaSBpbiAkdGVzdF9zY3JpcHRzOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LyRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy9udW1hY3RsICR7RH0ke1BURVNUX1BBVEh9LwotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5Y2JjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L251bWFjdGwvbnVtYWN0bF9naXQuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJEZXZlbG9wbWVudCBwYWNrYWdlIGZvciBidWlsZGluZyBBcHBsaWNhdGlvbnMgdGhhdCB1c2UgbnVtYSIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy9saWJudW1hLyIgCitERVNDUklQVElPTiA9ICJTaW1wbGUgTlVNQSBwb2xpY3kgc3VwcG9ydC4gSXQgY29uc2lzdHMgb2YgYSBudW1hY3RsIHByb2dyYW0gXAordG8gcnVuIG90aGVyIHByb2dyYW1zIHdpdGggYSBzcGVjaWZpYyBOVU1BIHBvbGljeSBhbmQgYSBsaWJudW1hIHRvIGRvIFwKK2FsbG9jYXRpb25zIHdpdGggTlVNQSBwb2xpY3kgaW4gYXBwbGljYXRpb25zLiIKK0xJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4xIgorU0VDVElPTiA9ICJhcHBzIgorUkRFUEVORFNfJHtQTn0gPSAicGVybCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTk7ZW5kbGluZT0zMjttZDU9NTY0NGNjMzg1MWNiMjQ5OWY2YzQ4ZTUyZmUxOThiZDkiCisKK1NSQ1JFViA9ICJlYTNhNzA2ODFjMmY1MjNmZTU4ZTFkNDQ1MjdmNDc4Y2E3NmRiNzRlIgorUFYgPSAiMi4wLjExK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbnVtYWN0bC9udW1hY3RsIFwKKyAgICBmaWxlOi8vZml4LW51bGwtcG9pbnRlci5wYXRjaCBcCisgICAgZmlsZTovL0ZpeC10aGUtdGVzdC1vdXRwdXQtZm9ybWF0LnBhdGNoIFwKKyAgICBmaWxlOi8vTWFrZWZpbGUgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgIGZpbGU6Ly8wMDAxLWRlZmluZS1ydW4tdGVzdC10YXJnZXQucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIEFSTSBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBOVU1BCitDT01QQVRJQkxFX0hPU1QgPSAiXigoPyFhcm0pLiopJCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBwcmVmaXg9JHtEfS91c3IgaW5zdGFsbAorICAgICNyZW1vdmUgdGhlIGVtcHR5IG1hbjIgZGlyZWN0b3J5CisgICAgcm0gLXIgJHtEfSR7bWFuZGlyfS9tYW4yCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSB0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgI2luc3RhbGwgdGVzdHMgYmluYXJpZXMKKyAgICBsb2NhbCB0ZXN0X2JpbmFyaWVzPSJkaXN0YW5jZSBmdG9rIG1iaW5kX21pZ19wYWdlcyBtaWdyYXRlX3BhZ2VzIG1vdmVfcGFnZXMgXAorICAgIG15bm9kZSAgICBub2RlbWFwIG5vZGUtcGFyc2UgcGFnZXNpemUgcHJlZmVyZWQgcmFuZG1hcCByZWFsbG9jX3Rlc3QgXAorICAgIHRiaXRtYXAgdHNoYXJlZCIKKworICAgIFsgISAtZCAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdCBdICYmIG1rZGlyIC1wICR7RH0vJHtQVEVTVF9QQVRIfS90ZXN0CisgICAgZm9yIGkgaW4gJHRlc3RfYmluYXJpZXM7IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QvLmxpYnMvJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorICAgIGRvbmUKKworICAgIGxvY2FsIHRlc3Rfc2NyaXB0cz0iY2hlY2t0b3BvbG9neSBjaGVja2FmZmluaXR5IHByaW50Y3B1IHJlZ3Jlc3MgcmVncmVzczIgXAorICAgICAgICBzaG10ZXN0ICBydW5sdHAgYmluZF9yYW5nZSIKKyAgICBmb3IgaSBpbiAkdGVzdF9zY3JpcHRzOyBkbworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LyRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy9udW1hY3RsICR7RH0ke1BURVNUX1BBVEh9LworfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vZGUvb2RlL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZS9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NmIyZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vZGUvb2RlL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBvZGUtMC4xMy9saWJjY2QvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb2RlLTAuMTMub3JpZy9saWJjY2QvY29uZmlndXJlLmFjCTIwMTMtMDgtMTkgMTc6NDg6MDMuMDAwMDAwMDAwICswMDAwCi0rKysgb2RlLTAuMTMvbGliY2NkL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIyOjA0OjE2LjU4MDU5NTY5MCArMDAwMAotQEAgLTUsNyArNSw3IEBACi0gQUNfSU5JVChbbGliY2NkXSwgWzEuMF0sIFtkYW5maXNAZGFuZmlzLmN6XSkKLSBBQ19DT05GSUdfU1JDRElSKFtzcmMvY2NkLmNdKQotIEFDX0NPTkZJR19IRUFERVJTKFtzcmMvY29uZmlnLmhdKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSAKLSAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCi0gQUNfUFJPR19DWFgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZV8wLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vZGUvb2RlXzAuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MGM4MTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vZGUvb2RlXzAuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIk9ERSBpcyBhbiBPcGVuIFNvdXJjZSBQaHlzaWNzIEVuZ2luZSIKLVNFQ1RJT04gPSAibGlicyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub2RlLm9yZyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTFkZTkwNmVlOTY4MDhkOTc3NmRkNzJhNWY5YTc5YTIyIFwKLSAgICBmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTc3MTc4MmNiNjI0NWM3ZmJiZTc0YmMwZWMwNTliZWZmIFwKLSIKLSMgTElDRU5TRS1CU0QuVFhUIGlzIG1pc3NpbmcgaW4gMC4xMyB0YXJiYWxsLCBidXQgQ09QWUlORyBzdGlsbCBzYXlzIGl0J3MgZHVhbCBsaWNlbnNlZAotIyBhbmQgc3ZuIHJlcG8gc3RpbGwgY29udGFpbnMgTElDRU5TRS1CU0QuVFhUIHNvIG1heWJlIGl0IHdpbGwgcmV0dXJuIGluIG5leHQgdGFyYmFsbAotIyBmaWxlOi8vTElDRU5TRS1CU0QuVFhUO21kNT1jNzRlNjMwNGE3NzIxMTdlMDU5NDU4ZmI5NzYzYTkyOAotCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L29wZW5kZS9vZGUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMDRiMzJjOTY0NWMxNDdlMThjYWZmN2E1OTdhMTlmODQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzRjZTNlMjM2ZTMxM2JmMTA5YTBjYjU1NDZkMmZjYTQ2MmFlZDk5ZjI5YTQyZTYyYmMxNDYzYjgwM2MzMWVmOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVtb3MgLS1lbmFibGUtc29uYW1lIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotIyBpZiBpdCBpc24ndCBleHBsaWNpdGx5IHNlbGVjdGVkIGFuZCAiJGJ1aWxkX29zIiA9PSAiJHRhcmdldF9vcyIsIHRoZW4gY29uZmlndXJlIHdpbGwgcnVuCi0jIHNlcmllcyBvZiBBQ19UUllfUlVOIHdoaWNoIHdvbid0IHdvcmsgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIGFuZCBjb25maWd1cmUgZmFpbHMKLVBBQ0tBR0VDT05GSUdbZG91YmxlLXByZWNpc2lvbl0gPSAiLS1lbmFibGUtZG91YmxlLXByZWNpc2lvbiwtLWRpc2FibGUtZG91YmxlLXByZWNpc2lvbiIKLQotUE5CTEFDS0xJU1Rbb2RlXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDU5OS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1QTkJMQUNLTElTVFtvZGVdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjIwLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12Y2RpZmYvb3Blbi12Y2RpZmZfMC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdmNkaWZmL29wZW4tdmNkaWZmXzAuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2YyZTc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12Y2RpZmYvb3Blbi12Y2RpZmZfMC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGVuY29kZXIvZGVjb2RlciBmb3IgdGhlIFZDRElGRiAoUkZDMzI4NCkgZm9ybWF0IgotREVTQ1JJUFRJT04gPSAiQSBsaWJyYXJ5IHdpdGggYSBzaW1wbGUgQVBJIGlzIGluY2x1ZGVkLCBhcyB3ZWxsIGFzIGEgXAotICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIGV4ZWN1dGFibGUgdGhhdCBjYW4gYXBwbHkgdGhlIGVuY29kZXIgYW5kIFwKLSAgICAgICAgICAgICAgIGRlY29kZXIgdG8gc291cmNlLCB0YXJnZXQsIGFuZCBkZWx0YSBmaWxlcy4gXAotICAgICAgICAgICAgICAgQSBzbGlnaHQgdmFyaWF0aW9uIGZyb20gdGhlIGRyYWZ0IHN0YW5kYXJkIGlzIGRlZmluZWQgXAotICAgICAgICAgICAgICAgdG8gYWxsb3cgY2h1bmstYnktY2h1bmsgZGVjb2Rpbmcgd2hlbiBvbmx5IGEgcGFydGlhbCBcCi0gICAgICAgICAgICAgICBkZWx0YSBmaWxlIHdpbmRvdyBpcyBhdmFpbGFibGUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wZW4tdmNkaWZmLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmY4MjBkNGRkYzFiYTA1YjZmZDM3YjQxYTIxNTA2ZjkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL3VjP2lkPTBCNVdwSWkyZlFVMWFOR0p3VkU5aFVqVTVjbFUmZXhwb3J0PWRvd25sb2FkO2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjVjMGQzNzhkOTA3YmViYzM4YjUxYzNkN2U0MTE3MDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiMTQyYjEwMjdmYjBhNjJjNDEzNDc2MDBlMDFhNTNmYTI3NGRhZDE1NDQ1YTdkYTQ4MDgzYzgzMGMzMTM4YjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzY4NjY3LwotUE5CTEFDS0xJU1Rbb3Blbi12Y2RpZmZdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdG9vbHMuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy90b29scy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Y2FlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdG9vbHMuY29uZgpAQCAtMCwwICsxLDIgQEAKK1tndWVzdGluZm9dCitkaXNhYmxlLXBlcmYtbW9uPTEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3ZtdG9vbHNkLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwZTM4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTEgQEAKK1tVbml0XQorRGVzY3JpcHRpb249T3BlbiBWaXJ0dWFsIE1hY2hpbmUgVG9vbHMgKFZNd2FyZSBUb29scykKK0NvbmRpdGlvblZpcnR1YWxpemF0aW9uPXZtd2FyZQorCitbU2VydmljZV0KK0V4ZWNTdGFydD0vdXNyL2Jpbi92bXRvb2xzZAorUmVzdGFydD1vbi1mYWlsdXJlCitLaWxsU2lnbmFsPVNJR0tJTEwKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzNiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAxLVJlbW92ZS1hc3N1bXB0aW9ucy1hYm91dC1nbGliYy1iZWluZy1vbmx5LWxpYmMtaW1wbGUucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBhMDk4M2Q4NDE4NWYwNGM0ZTQwNzc4ZmU5NTFmZGU0NDM5ODk0ODgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgSnVsIDIwMTcgMDc6Mzc6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8xMV0gUmVtb3ZlIGFzc3VtcHRpb25zIGFib3V0IGdsaWJjIGJlaW5nIG9ubHkgbGliYworIGltcGxlbWVudGF0aW9uIG9uIGxpbnV4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaCB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogb3Blbi12bS10b29scy9saWIvZmlsZS9maWxlSU9Qb3NpeC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKK0BAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIEFsaWduZWRQb29sIGFsaWduZWRQb29sOworICAqIGFyZSBub3QgYXZhaWxhYmxlIGluIGFueSBoZWFkZXIgZmlsZS4KKyAgKi8KKyAKKy0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQorKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIChfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAgICAgICAvKgorICAgICAgICAqIFdlIHdhbnQgcHJlYWR2L3B3cml0ZXYuIEJ1dCBkdWUgdG8gRk9CPTY0LCB0aGUgc3ltYm9scyBhcmUgLTY0LgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fYmFzaWNfZGVmcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fYmFzaWNfZGVmcy5oCitAQCAtNTcxLDYgKzU3MSw3IEBAIHR5cGVkZWYgaW50IHBpZF90OworICNpZiBkZWZpbmVkIF9fbGludXhfXyAmJiAhZGVmaW5lZCBfX0tFUk5FTF9fICYmICFkZWZpbmVkIE1PRFVMRSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZpbmVkIFZNTSAmJiAhZGVmaW5lZCBGUk9CT1MgJiYgIWRlZmluZWQgX19BTkRST0lEX18KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKysjaWYgX19HTElCQ19fCisgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDEpICYmICFkZWZpbmVkIEdMSUJDX1ZFUlNJT05fMjEKKyAjZGVmaW5lIEdMSUJDX1ZFUlNJT05fMjEKKyAjZW5kaWYKK0BAIC01OTAsNiArNTkxLDcgQEAgdHlwZWRlZiBpbnQgcGlkX3Q7CisgI2RlZmluZSBHTElCQ19WRVJTSU9OXzIxMgorICNlbmRpZgorICNlbmRpZgorKyNlbmRpZgorIAorIC8qCisgICogQ29udmVuaWVuY2UgZGVmaW5pdGlvbnMgb2YgdW5pY29kZSBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Y2I4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC11c2UtZG5ldC1jb25maWcucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA5MjkxNTA2MDhjMTY2NDQ2OTVmMTljZDJlMGNjOGEwNmE0MWNkNDk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CitEYXRlOiBGcmksIDcgQXByIDIwMTcgMTU6MjA6MzAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkb24ndCB1c2UgZG5ldC1jb25maWcKKworVGhlIGRuZXQtY29uZmlnIHRvb2wgZG9lc24ndCBrbm93IGFib3V0IGNyb3NzLWNvbXBpbGF0aW9uLCBzbyBpdCBpbmplY3RzCistSS91c3IvaW5jbHVkZSBpbnRvIHRoZSBwYXRoLCBjYXVzaW5nIGNvbXBpbGVyIGVycm9ycy4gU28gaW5zdGVhZCBmaW5kIGRuZXQgdmlhCistbGRuZXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzQwMGI4Ni4uN2Q2MTE5ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTQyLDcgKzk0Miw3IEBAIGlmIHRlc3QgIiR3aXRoX2RuZXQiID0gInllcyI7IHRoZW4KKyAgICAgICBBQ19WTVdfQ0hFQ0tfTElCKFtkbmV0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtETkVUXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgW2RuZXQtY29uZmlnXSwKKysgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICBbZG5ldC5oXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtpbnRmX29wZW5dLAorQEAgLTk1Miw3ICs5NTIsNyBAQCBpZiB0ZXN0ICIkd2l0aF9kbmV0IiA9ICJ5ZXMiOyB0aGVuCisgCisgICAgaWYgdGVzdCAkaGF2ZV9kbmV0ID0gIm5vIjsgdGhlbgorIAkJQUNfTVNHX0VSUk9SKAorLQkJICAgW2RuZXQtY29uZmlnIHdhcyBub3QgZm91bmQgb24geW91ciBQQVRILiBQbGVhc2UgY29uZmlndXJlIHdpdGhvdXQgZG5ldCAodXNpbmcgLS13aXRob3V0LWRuZXQpIG9yIGluc3RhbGwgZG5ldCAtIGh0dHA6Ly9saWJkbmV0LnNvdXJjZWZvcmdlLm5ldF0pCisrCQkgICBbZG5ldCB3YXMgbm90IGZvdW5kLiBQbGVhc2UgY29uZmlndXJlIHdpdGhvdXQgZG5ldCAodXNpbmcgLS13aXRob3V0LWRuZXQpIG9yIGluc3RhbGwgZG5ldCAtIGh0dHA6Ly9saWJkbmV0LnNvdXJjZWZvcmdlLm5ldF0pCisgCWZpCisgZmkKKyAKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1hZGQtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAyLWFkZC1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA1NjAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1hZGQtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ODE4YWNjODAzMmUzMjQ3MjU3NzMwMzc2ZTk0NzMzMDM0MGEwN2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CitEYXRlOiBNb24sIDIyIE1heSAyMDE3IDE3OjAwOjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBhZGQgI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKworSW4gbmV3ZXIgZ2xpYmMgdmVyc2lvbnMsIHRoZSBkZWZpbml0aW9uIGZvciBtYWpvcigpIGhhcyBiZWVuIG1vdmVkIHRvCitzeXMvc3lzbWFjcm9zLmgsIGFuZCB1c2luZyB0aGUgb2xkZXIgdmVyc2lvbiBpbiA8c3lzL3R5cGVzLmg+IGhhcyBiZWVuCitkZXByZWNhdGVkLiBTbywgYWRkIGFuIGluY2x1ZGUgZm9yIDxzeXMvc3lzbWFjcm9zLmg+LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CistLS0KKyBsaWIvd2lwZXIvd2lwZXJQb3NpeC5jIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9vcGVuLXZtLXRvb2xzL2xpYi93aXBlci93aXBlclBvc2l4LmMgYi9vcGVuLXZtLXRvb2xzL2xpYi93aXBlci93aXBlclBvc2l4LmMKK2luZGV4IGQzODllZWUuLjFmMjIxZmMgMTAwNjQ0CistLS0gYS9saWIvd2lwZXIvd2lwZXJQb3NpeC5jCisrKysgYi9saWIvd2lwZXIvd2lwZXJQb3NpeC5jCitAQCAtNDAsNiArNDAsOSBAQAorICMgIGluY2x1ZGUgPGxpYmdlbi5oPgorICMgZW5kaWYgLyogX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwICovCisgI2VuZGlmCisrI2lmIGRlZmluZWQoX19saW51eF9fKQorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpbmNsdWRlICJ2bXdhcmUuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLW9ic29sZXRlLXN5cy1wb2xsLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAyLWluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2Ytb2Jzb2xldGUtc3lzLXBvbGwuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjZiZjJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLW9ic29sZXRlLXN5cy1wb2xsLmgucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSBkNDRjN2M5ZGU3MzgwYWQ3YjI4NDIzMWJkNWI1Yzk5YjVjMTk3NThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgSnVsIDIwMTcgMDc6Mzc6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMV0gaW5jbHVkZSBwb2xsLmggaW5zdGVhZCBvZiBvYnNvbGV0ZSBzeXMvcG9sbC5oCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY1NvY2tldEludC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNTb2NrZXRJbnQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvYXN5bmNzb2NrZXQvYXN5bmNTb2NrZXRJbnQuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jU29ja2V0SW50LmgKK0BAIC03MSw4ICs3MSw4IEBACisgI2Vsc2UKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgPG5ldGRiLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAzLVJlbmFtZS1wb2xsLmgtdG8tdm1fcG9sbC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjQxNzc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaApAQCAtMCwwICsxLDc1NiBAQAorRnJvbSA2ODdmY2EyMGIzNDE3YWM4ODViNjk2MWU2ZmUxMTI2ZDRhM2ZlN2E0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogVHVlLCAxNyBOb3YgMjAxNSAxMDo1NzozMSArMDAwMAorU3ViamVjdDogW1BBVENIIDAzLzExXSBSZW5hbWUgcG9sbC5oIHRvIHZtX3BvbGwuaAorCittdXNsIGxpYmMncyBzeXN0ZW0gaGVhZGVycyBwdWxscyBpbiBvcGVuLXZtLXRvb2xzJyBwb2xsLmguIFRvIGF2b2lkIHRoaXMKK3dlIHJlbmFtZSBwb2xsLmggdG8gdm1fcG9sbC5oLgorCitTaWduZWQtb2ZmLWJ5OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CistLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3twb2xsLmggPT4gdm1fcG9sbC5ofSAgICAgICAgICAgICAgICAgICAgICB8IDAKKyBvcGVuLXZtLXRvb2xzL2xpYi9ycGNJbi9ycGNpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYyB8IDIgKy0KKyA3IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyByZW5hbWUgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS97cG9sbC5oID0+IHZtX3BvbGwuaH0gKDEwMCUpCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jCisrKysgb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYworQEAgLTUyLDcgKzUyLDcgQEAKKyAjaW5jbHVkZSAidm13YXJlLmgiCisgI2luY2x1ZGUgImFzeW5jc29ja2V0LmgiCisgI2luY2x1ZGUgImFzeW5jU29ja2V0SW50LmgiCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorICNpbmNsdWRlICJsb2cuaCIKKyAjaW5jbHVkZSAiZXJyLmgiCisgI2luY2x1ZGUgImhvc3RpbmZvLmgiCitJbmRleDogb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jCisrKysgb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyLmMKK0BAIC00OCw3ICs0OCw3IEBACisgI2luY2x1ZGUgImhnZnNTZXJ2ZXJPcGxvY2suaCIKKyAjaW5jbHVkZSAiaGdmc0Rpck5vdGlmeS5oIgorICNpbmNsdWRlICJ1c2VybG9jay5oIgorLSNpbmNsdWRlICJwb2xsLmgiCisrI2luY2x1ZGUgInZtX3BvbGwuaCIKKyAjaW5jbHVkZSAibXV0ZXhSYW5rTGliLmgiCisgI2luY2x1ZGUgInZtX2Jhc2ljX2FzbS5oIgorICNpbmNsdWRlICJ1bmljb2RlT3BlcmF0aW9ucy5oIgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvYXN5bmNzb2NrZXQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9hc3luY3NvY2tldC5oCisrKysgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9hc3luY3NvY2tldC5oCitAQCAtMTI5LDcgKzEyOSw3IEBAIHR5cGVkZWYgc3RydWN0IEFzeW5jU29ja2V0IEFzeW5jU29ja2V0OworICAqIE9yIHRoZSBjbGllbnQgY2FuIHNwZWNpZnkgaXRzIGZhdm9yaXRlIHBvbGwgY2xhc3MgYW5kIGxvY2tpbmcgYmVoYXZpb3IuCisgICogVXNlIG9mIElWbWRiUG9sbCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgcmVndWxhciBzb2NrZXRzIGFuZCBmb3IgQXR0YWNoLgorICAqLworLSNpbmNsdWRlICJwb2xsLmgiCisrI2luY2x1ZGUgInZtX3BvbGwuaCIKKyBzdHJ1Y3QgSVZtZGJQb2xsOworIHR5cGVkZWYgc3RydWN0IEFzeW5jU29ja2V0UG9sbFBhcmFtcyB7CisgICAgaW50IGZsYWdzOyAgICAgICAgICAgICAgIC8qIERlZmF1bHQgMCwgb25seSBQT0xMX0ZMQUdfTk9fQlVMTCBpcyB2YWxpZCAqLworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvcG9sbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9pbmNsdWRlL3BvbGwuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsMzI0ICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogQ29weXJpZ2h0IChDKSAxOTk4LTIwMTYgVk13YXJlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistICoKKy0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorLSAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyLjEgYW5kIG5vIGxhdGVyIHZlcnNpb24uCistICoKKy0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKKy0gKiBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgTGVzc2VyIEdOVSBHZW5lcmFsIFB1YmxpYworLSAqIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCistICogNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQS4KKy0gKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBDb21tb24KKy0gKiBEZXZlbG9wbWVudCBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKHRoZSAiTGljZW5zZSIpIHZlcnNpb24gMS4wCistICogYW5kIG5vIGxhdGVyIHZlcnNpb24uICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorLSAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy0gKgorLSAqIFlvdSBjYW4gb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLSAqICAgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9jZGRsMS5waHAKKy0gKgorLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucworLSAqIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0gKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistCistI2lmbmRlZiBfUE9MTF9IXworLSNkZWZpbmUgX1BPTExfSF8KKy0KKy0jZGVmaW5lIElOQ0xVREVfQUxMT1dfVVNFUkxFVkVMCistI2RlZmluZSBJTkNMVURFX0FMTE9XX1ZNQ09SRQorLSNpbmNsdWRlICJpbmNsdWRlQ2hlY2suaCIKKy0KKy0jaW5jbHVkZSAidm1fYmFzaWNfdHlwZXMuaCIKKy0jaW5jbHVkZSAidm1fYmFzaWNfZGVmcy5oIgorLSNpbmNsdWRlICJ2bXdhcmUuaCIKKy0jaW5jbHVkZSAidXNlcmxvY2suaCIKKy0KKy0jaWZkZWYgX1dJTjMyCistI2RlZmluZSBIWiAxMDAKKy0jZWxpZiBkZWZpbmVkIGxpbnV4CistI2luY2x1ZGUgPGFzbS9wYXJhbS5oPgorLSNlbGlmIF9fQVBQTEVfXworLSNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKy0vKgorLSAqIE9sZCBTREtzIGRvbid0IGRlZmluZSBUQVJHRVRfT1NfSVBIT05FIGF0IGFsbC4KKy0gKiBOZXcgb25lcyBkZWZpbmUgaXQgdG8gMCBvbiBNYWMgT1MgWCwgMSBvbiBpT1MuCistICovCistI2lmICFkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpIHx8IFRBUkdFVF9PU19JUEhPTkUgPT0gMAorLSNpbmNsdWRlIDxzeXMva2VybmVsLmg+CistI2VuZGlmCistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CistI2RlZmluZSBIWiAxMDAKKy0jZW5kaWYKKy0jaWZkZWYgX19BTkRST0lEX18KKy0vKgorLSAqIDxwb2xsLmg+IG9mIGFuZHJvaWQgc2hvdWxkIGJlIGluY2x1ZGVkLCBidXQgaXRzIG5hbWUgaXMgc2FtZQorLSAqIHdpdGggdGhpcyBmaWxlLiBTbyBpdHMgY29udGVudCBpcyBwdXQgaGVyZSB0byBhdm9pZCBjb25mbGljdC4KKy0gKi8KKy0jaW5jbHVkZSA8YXNtL3BvbGwuaD4KKy0jZGVmaW5lIEhaIDEwMAorLXR5cGVkZWYgdW5zaWduZWQgaW50ICBuZmRzX3Q7CistaW50IHBvbGwoc3RydWN0IHBvbGxmZCAqLCBuZmRzX3QsIGxvbmcpOworLSNlbmRpZgorLQorLQorLS8qCistICogUG9sbCBldmVudCB0eXBlczogZWFjaCB0eXBlIGhhcyBhIGRpZmZlcmVudCByZWFzb24gZm9yIGZpcmluZywKKy0gKiBvciBjb25kaXRpb24gdGhhdCBtdXN0IGJlIG1ldCBiZWZvcmUgZmlyaW5nLgorLSAqLworLQorLXR5cGVkZWYgZW51bSB7CistICAgLyoKKy0gICAgKiBBY3R1YWwgUG9sbCBxdWV1ZSB0eXBlcyBhZ2FpbnN0IHdoaWNoIHlvdSBjYW4gcmVnaXN0ZXIgY2FsbGJhY2tzLgorLSAgICAqLworLSAgIFBPTExfVklSVFVBTFJFQUxUSU1FID0gLTEsIC8qIE5lZ2F0aXZlIGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIGl0cyBvd24gUSAqLworLSAgIFBPTExfVlRJTUUgPSAwLAorLSAgIFBPTExfUkVBTFRJTUUsCistICAgUE9MTF9ERVZJQ0UsCistICAgUE9MTF9NQUlOX0xPT1AsCistICAgUE9MTF9OVU1fUVVFVUVTCistfSBQb2xsRXZlbnRUeXBlOworLQorLQorLS8qCistICogQ2xhc3NlcyBvZiBldmVudHMKKy0gKgorLSAqIFRoZXNlIGFyZSB0aGUgcHJlZGVmaW5lZCBjbGFzc2VzLiAgTW9yZSBjYW4gYmUgZGVjbGFyZWQKKy0gKiB3aXRoIFBvbGxfQWxsb2NDbGFzcygpLgorLSAqLworLQorLXR5cGVkZWYgZW51bSBQb2xsQ2xhc3MgeworLSAgIFBPTExfQ0xBU1NfTUFJTiwKKy0gICBQT0xMX0NMQVNTX1BBVVNFLAorLSAgIFBPTExfQ0xBU1NfSVBDLAorLSAgIFBPTExfQ0xBU1NfQ1BULAorLSAgIFBPTExfQ0xBU1NfTUtTLAorLSAgIFBPTExfRklYRURfQ0xBU1NFUywKKy0gICBQT0xMX01BWF9DTEFTU0VTID0gMzIwIC8qIFNpemUgZW51bSB0byBtYXhpbXVtICovCistfSBQb2xsQ2xhc3M7CistCistCistLyoKKy0gKiBFYWNoIGNhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgaW4gYSBzZXQgb2YgY2xhc3NlcworLSAqLworLQorLXR5cGVkZWYgc3RydWN0IFBvbGxDbGFzc1NldCB7CistICAgLyogVHlwZSBpcyB1aW50cHRyX3QgdG8gZ2l2ZSBiZXN0IDMyLzY0LWJpdCBjb2RlLiAqLworLSNkZWZpbmUgX1BPTExfRUxFTVNJWkUgKHNpemVvZiAodWludHB0cl90KSAqIDgpCistICAgdWludHB0cl90IGJpdHNbQ0VJTElORyhQT0xMX01BWF9DTEFTU0VTLCBfUE9MTF9FTEVNU0laRSldOworLX0gUG9sbENsYXNzU2V0OworLQorLS8qIEFuIGVtcHR5IFBvbGxDbGFzc1NldC4gKi8KKy1zdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorLVBvbGxDbGFzc1NldF9FbXB0eSh2b2lkKQorLXsKKy0gICBQb2xsQ2xhc3NTZXQgc2V0ID0geyB7IDAgfSB9OworLSAgIHJldHVybiBzZXQ7CistfQorLQorLS8qIEEgUG9sbENsYXNzU2V0IHdpdGggdGhlIHNpbmdsZSBtZW1iZXIuICovCistc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKy1Qb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBvbGxDbGFzcyBjKQorLXsKKy0gICBQb2xsQ2xhc3NTZXQgcyA9IFBvbGxDbGFzc1NldF9FbXB0eSgpOworLQorLSAgIEFTU0VSVF9PTl9DT01QSUxFKHNpemVvZiBzLmJpdHNbMF0gKiA4ID09IF9QT0xMX0VMRU1TSVpFKTsgLyogU2l6ZSBjb3JyZWN0ICovCistICAgQVNTRVJUX09OX0NPTVBJTEUoKF9QT0xMX0VMRU1TSVpFICYgKF9QT0xMX0VMRU1TSVpFIC0gMSkpID09IDApOyAvKiBwb3dlciBvZiAyICovCistICAgQVNTRVJUX09OX0NPTVBJTEUoUE9MTF9NQVhfQ0xBU1NFUyA8PSBBUlJBWVNJWkUocy5iaXRzKSAqIF9QT0xMX0VMRU1TSVpFKTsKKy0gICBBU1NFUlQoYyA8IFBPTExfTUFYX0NMQVNTRVMpOworLQorLSAgIHMuYml0c1tjIC8gX1BPTExfRUxFTVNJWkVdID0gQ09OU1QzMjY0VSgxKSA8PCAoYyAlIF9QT0xMX0VMRU1TSVpFKTsKKy0gICByZXR1cm4gczsKKy19CistCistLyogQ29tYmluZSB0d28gUG9sbENsYXNzU2V0cy4gKi8KKy1zdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorLVBvbGxDbGFzc1NldF9VbmlvbihQb2xsQ2xhc3NTZXQgbGhzLCBQb2xsQ2xhc3NTZXQgcmhzKQorLXsKKy0gICBQb2xsQ2xhc3NTZXQgdTsKKy0gICB1bnNpZ25lZCBpOworLQorLSAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWVNJWkUodS5iaXRzKTsgaSsrKSB7CistICAgICAgdS5iaXRzW2ldID0gbGhzLmJpdHNbaV0gfCByaHMuYml0c1tpXTsKKy0gICB9CistICAgcmV0dXJuIHU7CistfQorLQorLS8qIEFkZCBzaW5nbGUgY2xhc3MgdG8gUG9sbENsYXNzU2V0LiAqLworLXN0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0CistUG9sbENsYXNzU2V0X0luY2x1ZGUoUG9sbENsYXNzU2V0IHNldCwgUG9sbENsYXNzIGMpCisteworLSAgIHJldHVybiBQb2xsQ2xhc3NTZXRfVW5pb24oc2V0LCBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKGMpKTsKKy19CistCistCistI2RlZmluZSBQT0xMX0NTX01BSU4gICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX01BSU4pCistI2RlZmluZSBQT0xMX0NTX1BBVVNFICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfTUFJTiwgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX1BBVVNFKSkKKy0jZGVmaW5lIFBPTExfQ1NfQ1BUICAgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19QQVVTRSwgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfQ1BUKSkKKy0jZGVmaW5lIFBPTExfQ1NfSVBDICAgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19DUFQsICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfSVBDKSkKKy0jZGVmaW5lIFBPTExfQ1NfVk1EQiAgICBQT0xMX0NTX1BBVVNFIC8qIFBPTExfQ0xBU1NfVk1EQiBpcyByZXRpcmVkICovCistI2RlZmluZSBQT0xMX0NTX01LUwlQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfTUtTKQorLS8qIAorLSAqIERBTkdFUi4gIFlvdSBkb24ndCBuZWVkIFBPTExfQ1NfQUxXQVlTLiAgUmVhbGx5LiAgU28gZG9uJ3QgdXNlIGl0LgorLSAqLworLSNkZWZpbmUgUE9MTF9DU19BTFdBWVMgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX0NQVCwgUE9MTF9DU19JUEMpCistCistLyoKKy0gKiBQb2xsIGNsYXNzLXNldCB0YXhvbm9teToKKy0gKiBQT0xMX0NTX01BSU4KKy0gKiAgICAtIFVubGVzcyB5b3UgTkVFRCBhbm90aGVyIGNsYXNzLCB1c2UgUE9MTF9DU19NQUlOLgorLSAqIFBPTExfQ1NfUEFVU0UKKy0gKiAgICAtIEZvciBjYWxsYmFja3MgdGhhdCBtdXN0IG9jY3VyIGV2ZW4gaWYgdGhlIGd1ZXN0IGlzIHBhdXNlZC4KKy0gKiAgICAgIE1vc3QgVk1EQiBvciBGb3VuZHJ5IGNvbW1hbmRzIGFyZSBpbiB0aGlzIGNhdGVnb3J5LgorLSAqIFBPTExfQ1NfQ1BUCistICogICAgLSBPbmx5IGZvciBjYWxsYmFja3Mgd2hpY2ggY2FuIHRyaWdnZXIgaW50ZXJtZWRpYXRlIENoZWNrcG9pbnQgCistICogICAgICB0cmFuc2l0aW9ucy4KKy0gKiAgICAgIFRoZSBPTkxZIHN1Y2ggY2FsbGJhY2sgaXMgTWlncmF0ZS4KKy0gKiBQT0xMX0NTX0lQQworLSAqICAgIC0gT25seSBmb3IgY2FsbGJhY2tzIHdoaWNoIGNhbiBjb250YWluIE1zZ18oUG9zdHxIaW50fFF1ZXN0aW9uKSAKKy0gKiAgICAgIHJlc3BvbnNlcywgYW5kIGZvciBzaWduYWwgaGFuZGxlcnMgKHdoeSk/CistICogICAgICBWaWdvciwgVk1EQiwgYW5kIEZvdW5kcnkgY2FuIGNvbnRhaW4gTXNnXyogcmVzcG9uc2VzLgorLSAqIFBPTExfQ1NfTUtTCistICogICAgLSBDYWxsYmFjayBydW5zIGluIE1LUyB0aHJlYWQuCistICogUE9MTF9DU19BTFdBWVMKKy0gKiAgICAtIE9ubHkgZm9yIGV2ZW50cyB0aGF0IG11c3QgYmUgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5LgorLSAqICAgICAgVGhlIE9OTFkgc3VjaCBjYWxsYmFjayBpcyBPdmhkTWVtVm14U2l6ZUNoZWNrLgorLSAqLworLQorLQorLS8qCistICogUG9sbF9DYWxsYmFjayBmbGFncworLSAqLworLQorLSNkZWZpbmUgUE9MTF9GTEFHX1BFUklPRElDCQkweDAxICAgIC8vIGtlZXAgYWZ0ZXIgZmlyaW5nCistI2RlZmluZSBQT0xMX0ZMQUdfUkVNT1ZFX0FUX1BPV0VST0ZGCTB4MDIgIAkvLyBzZWxmLWV4cGxhbmF0b3J5CistI2RlZmluZSBQT0xMX0ZMQUdfUkVBRAkJCTB4MDQJLy8gZGV2aWNlIGlzIHJlYWR5IGZvciByZWFkaW5nCistI2RlZmluZSBQT0xMX0ZMQUdfV1JJVEUJCQkweDA4CS8vIGRldmljZSBpcyByZWFkeSBmb3Igd3JpdGluZworLSNkZWZpbmUgUE9MTF9GTEFHX1NPQ0tFVCAgICAgICAgICAgICAgICAweDEwICAgIC8vIGRldmljZSBpcyBhIFdpbmRvd3Mgc29ja2V0CistI2RlZmluZSBQT0xMX0ZMQUdfTk9fQlVMTCAgICAgICAgICAgICAgIDB4MjAgICAgLy8gY2FsbGJhY2sgZG9lcyBpdHMgb3duIGxvY2tpbmcKKy0jZGVmaW5lIFBPTExfRkxBR19XSU5TT0NLICAgICAgICAgICAgICAgMHg0MCAgICAvLyBXaW5zb2NrIHN0eWxlIHdyaXRlIGV2ZW50cworLSNkZWZpbmUgUE9MTF9GTEFHX0ZEICAgICAgICAgICAgICAgICAgICAweDgwICAgIC8vIGRldmljZSBpcyBhIFdpbmRvd3MgZmlsZSBkZXNjcmlwdG9yLgorLSNkZWZpbmUgUE9MTF9GTEFHX0FDQ0VQVF9JTlZBTElEX0ZEUyAgICAweDEwMCAgIC8vIEZvciBicm9rZW4gM3JkIHBhcnR5IGxpYnMsIGUuZy4gY3VybAorLSNkZWZpbmUgUE9MTF9GTEFHX1RIVU5LX1RPX1dORCAgICAgICAgICAweDIwMCAgIC8vIHRodW5rIGNhbGxiYWNrIHRvIHdpbmRvdyBtZXNzYWdlIGxvb3AKKy0KKy0KKy0vKgorLSAqIEFkdmlzb3J5IG1pbmltdW0gdGltZSBwZXJpb2QuCistICogVXNlcnMgdGhhdCB3YW50IHRoZSBmYXN0ZXN0IHJ1bm5pbmcgcmVhbC10aW1lIHBvbGwKKy0gKiBzaG91bGQgdXNlIFRJQ0tTX1RPX1VTRUNTKDEpLgorLSAqLworLQorLSNkZWZpbmUgVElDS1NfVE9fVVNFQ1MoX3gpICgoX3gpICogKDEwMDAwMDAgLyBIWikpCistI2RlZmluZSBVU0VDU19UT19USUNLUyhfeCkgKChfeCkgLyAoMTAwMDAwMCAvIEhaKSkKKy0KKy0KKy10eXBlZGVmIHZvaWQgKCpQb2xsZXJGdW5jdGlvbikodm9pZCAqY2xpZW50RGF0YSk7CistdHlwZWRlZiB2b2lkICgqUG9sbGVyRmlyZVdyYXBwZXIpKFBvbGxlckZ1bmN0aW9uIGZ1bmMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmZ1bmNEYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp3cmFwcGVyRGF0YSk7CistdHlwZWRlZiBCb29sICgqUG9sbGVyRXJyb3JGbikoY29uc3QgY2hhciAqZXJyb3JTdHIpOworLQorLS8qCistICogSW5pdGlhbGlzZXJzOgorLSAqCistICogICAgICBGb3IgdGhlIHNha2Ugb2YgY29udmVuaWVuY2UsIHdlIGRlY2xhcmUgdGhlIGluaXRpYWxpc2VycworLSAqICAgICAgZm9yIGN1c3RvbSBpbXBsbWVudGF0aW9ucyBoZXJlLCBldmVuIHRob3VnaCB0aGUgYWN0dWFsCistICogICAgICBpbXBsZW1lbnRhdGlvbnMgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGNvcmUgcG9sbCBjb2RlLgorLSAqLworLQorLXR5cGVkZWYgc3RydWN0IFBvbGxPcHRpb25zIHsKKy0gICBCb29sIGxvY2tlZDsgICAgICAgICAgIC8vIFVzZSBpbnRlcm5hbCBNWFVzZXIgZm9yIGxvY2tpbmcKKy0gICBCb29sIGFsbG93RnVsbFF1ZXVlOyAgIC8vIERvbid0IGFzc2VydCB3aGVuIGRldmljZSBldmVudCBxdWV1ZSBpcyBmdWxsLgorLSAgIFZUaHJlYWRJRCB3aW5kb3dzTXNnVGhyZWFkOyAgICAgICAvLyB0aHJlYWQgdGhhdCBwcm9jZXNzZXMgV2luZG93cyBtZXNzYWdlcworLSAgIFBvbGxlckZpcmVXcmFwcGVyIGZpcmVXcmFwcGVyRm47ICAvLyBvcHRpb25hbDsgbWF5IGJlIHVzZWZ1bCBmb3Igc3RhdHMKKy0gICB2b2lkICpmaXJlV3JhcHBlckRhdGE7IC8vIG9wdGlvbmFsCistICAgUG9sbGVyRXJyb3JGbiBlcnJvckZuOyAvLyBvcHRpb25hbDsgY2FsbGVkIHVwb24gdW5yZWNvdmVyYWJsZSBlcnJvcgorLX0gUG9sbE9wdGlvbnM7CistCistCistdm9pZCBQb2xsX0luaXREZWZhdWx0KHZvaWQpOworLXZvaWQgUG9sbF9Jbml0RGVmYXVsdEV4KGNvbnN0IFBvbGxPcHRpb25zICpvcHRzKTsKKy12b2lkIFBvbGxfSW5pdEd0ayh2b2lkKTsgLy8gT24gdG9wIG9mIGdsaWIgZm9yIExpbnV4Cistdm9pZCBQb2xsX0luaXRDRih2b2lkKTsgIC8vIE9uIHRvcCBvZiBDb3JlRm91bmRhdGlvbiBmb3IgT1NYCistCistCistLyoKKy0gKiBGdW5jdGlvbnMKKy0gKi8KKy1pbnQgUG9sbF9Tb2NrZXRQYWlyKEJvb2wgdm1jaSwgQm9vbCBzdHJlYW0sIGludCBmZHNbMl0pOworLXZvaWQgUG9sbF9Mb29wKEJvb2wgbG9vcCwgQm9vbCAqZXhpdCwgUG9sbENsYXNzIGMpOworLXZvaWQgUG9sbF9Mb29wVGltZW91dChCb29sIGxvb3AsIEJvb2wgKmV4aXQsIFBvbGxDbGFzcyBjLCBpbnQgdGltZW91dCk7CistQm9vbCBQb2xsX0xvY2tpbmdFbmFibGVkKHZvaWQpOworLXZvaWQgUG9sbF9FeGl0KHZvaWQpOworLQorLQorLS8qCistICogUG9sbF9DYWxsYmFjayBhZGRzIGEgY2FsbGJhY2sgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGFuIGlkZW50aWNhbCBvbmUgZXhpc3RzLgorLSAqCistICogTGlrZXdpc2UsIFBvbGxfQ2FsbGJhY2tSZW1vdmUgcmVtb3ZlcyBleGFjdGx5IG9uZSBjYWxsYmFjay4KKy0gKi8KKy0KKy1WTXdhcmVTdGF0dXMgUG9sbF9DYWxsYmFjayhQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbERldkhhbmRsZSBpbmZvLCAvLyBmZC9taWNyb3NlYyBkZWxheQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1YVXNlclJlY0xvY2sgKmxjayk7CistQm9vbCBQb2xsX0NhbGxiYWNrUmVtb3ZlKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAorLSAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUpOworLUJvb2wgUG9sbF9DYWxsYmFja1JlbW92ZU9uZUJ5Q0IoUG9sbENsYXNzU2V0IGNsYXNzU2V0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipjbGllbnREYXRhKTsKKy0KKy12b2lkIFBvbGxfTm90aWZ5Q2hhbmdlKFBvbGxDbGFzc1NldCBjbGFzc1NldCk7CistCistLyoKKy0gKiBXcmFwcGVycyBmb3IgUG9sbF9DYWxsYmFjayBhbmQgUG9sbF9DYWxsYmFja1JlbW92ZSB0aGF0IHByZXNlbnQKKy0gKiBzaW1wbGVyIHN1YnNldHMgb2YgdGhvc2UgaW50ZXJmYWNlcy4KKy0gKi8KKy0KKy1WTXdhcmVTdGF0dXMgUG9sbF9DQl9EZXZpY2UoUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbERldkhhbmRsZSBkZXZpY2UsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOworLQorLUJvb2wgUG9sbF9DQl9EZXZpY2VSZW1vdmUoUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKy0KKy0KKy1WTXdhcmVTdGF0dXMgUG9sbF9DQl9SVGltZShQb2xsZXJGdW5jdGlvbiBmLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbGF5LAkvLyBtaWNyb3NlY29uZHMKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1YVXNlclJlY0xvY2sgKmxvY2spOworLQorLUJvb2wgUG9sbF9DQl9SVGltZVJlbW92ZShQb2xsZXJGdW5jdGlvbiBmLAorLSAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKy0KKy0KKy0jaWZkZWYgX1dJTjMyCistdm9pZCBQb2xsX1NldFdpbmRvd01lc3NhZ2VSZWNpcGllbnQoSFdORCBoV25kLCBVSU5UIG1zZywgQm9vbCBhbHdheXNUaHVuayk7CistQm9vbCBQb2xsX0ZpcmVXbmRDYWxsYmFjayh2b2lkICpscGFyYW0pOworLSNlbmRpZgorLQorLSNlbmRpZiAvLyBfUE9MTF9IXworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvcG9sbEltcGwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9wb2xsSW1wbC5oCisrKysgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9wb2xsSW1wbC5oCitAQCAtNDQsNyArNDQsNyBAQAorICNkZWZpbmUgSU5DTFVERV9BTExPV19VU0VSTEVWRUwKKyAjaW5jbHVkZSAiaW5jbHVkZUNoZWNrLmgiCisgCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorIAorIC8qCisgICogUG9sbEltcGw6CitJbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS92bV9wb2xsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX3BvbGwuaAorQEAgLTAsMCArMSwzMjQgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogQ29weXJpZ2h0IChDKSAxOTk4LTIwMTYgVk13YXJlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyLjEgYW5kIG5vIGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKKysgKiBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgTGVzc2VyIEdOVSBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisrICogNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQS4KKysgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBDb21tb24KKysgKiBEZXZlbG9wbWVudCBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKHRoZSAiTGljZW5zZSIpIHZlcnNpb24gMS4wCisrICogYW5kIG5vIGxhdGVyIHZlcnNpb24uICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysgKgorKyAqIFlvdSBjYW4gb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKyAqICAgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9jZGRsMS5waHAKKysgKgorKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucworKyAqIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKysgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrCisrI2lmbmRlZiBfUE9MTF9IXworKyNkZWZpbmUgX1BPTExfSF8KKysKKysjZGVmaW5lIElOQ0xVREVfQUxMT1dfVVNFUkxFVkVMCisrI2RlZmluZSBJTkNMVURFX0FMTE9XX1ZNQ09SRQorKyNpbmNsdWRlICJpbmNsdWRlQ2hlY2suaCIKKysKKysjaW5jbHVkZSAidm1fYmFzaWNfdHlwZXMuaCIKKysjaW5jbHVkZSAidm1fYmFzaWNfZGVmcy5oIgorKyNpbmNsdWRlICJ2bXdhcmUuaCIKKysjaW5jbHVkZSAidXNlcmxvY2suaCIKKysKKysjaWZkZWYgX1dJTjMyCisrI2RlZmluZSBIWiAxMDAKKysjZWxpZiBkZWZpbmVkIGxpbnV4CisrI2luY2x1ZGUgPGFzbS9wYXJhbS5oPgorKyNlbGlmIF9fQVBQTEVfXworKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKysvKgorKyAqIE9sZCBTREtzIGRvbid0IGRlZmluZSBUQVJHRVRfT1NfSVBIT05FIGF0IGFsbC4KKysgKiBOZXcgb25lcyBkZWZpbmUgaXQgdG8gMCBvbiBNYWMgT1MgWCwgMSBvbiBpT1MuCisrICovCisrI2lmICFkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpIHx8IFRBUkdFVF9PU19JUEhPTkUgPT0gMAorKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisrI2RlZmluZSBIWiAxMDAKKysjZW5kaWYKKysjaWZkZWYgX19BTkRST0lEX18KKysvKgorKyAqIDxwb2xsLmg+IG9mIGFuZHJvaWQgc2hvdWxkIGJlIGluY2x1ZGVkLCBidXQgaXRzIG5hbWUgaXMgc2FtZQorKyAqIHdpdGggdGhpcyBmaWxlLiBTbyBpdHMgY29udGVudCBpcyBwdXQgaGVyZSB0byBhdm9pZCBjb25mbGljdC4KKysgKi8KKysjaW5jbHVkZSA8YXNtL3BvbGwuaD4KKysjZGVmaW5lIEhaIDEwMAorK3R5cGVkZWYgdW5zaWduZWQgaW50ICBuZmRzX3Q7CisraW50IHBvbGwoc3RydWN0IHBvbGxmZCAqLCBuZmRzX3QsIGxvbmcpOworKyNlbmRpZgorKworKworKy8qCisrICogUG9sbCBldmVudCB0eXBlczogZWFjaCB0eXBlIGhhcyBhIGRpZmZlcmVudCByZWFzb24gZm9yIGZpcmluZywKKysgKiBvciBjb25kaXRpb24gdGhhdCBtdXN0IGJlIG1ldCBiZWZvcmUgZmlyaW5nLgorKyAqLworKworK3R5cGVkZWYgZW51bSB7CisrICAgLyoKKysgICAgKiBBY3R1YWwgUG9sbCBxdWV1ZSB0eXBlcyBhZ2FpbnN0IHdoaWNoIHlvdSBjYW4gcmVnaXN0ZXIgY2FsbGJhY2tzLgorKyAgICAqLworKyAgIFBPTExfVklSVFVBTFJFQUxUSU1FID0gLTEsIC8qIE5lZ2F0aXZlIGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIGl0cyBvd24gUSAqLworKyAgIFBPTExfVlRJTUUgPSAwLAorKyAgIFBPTExfUkVBTFRJTUUsCisrICAgUE9MTF9ERVZJQ0UsCisrICAgUE9MTF9NQUlOX0xPT1AsCisrICAgUE9MTF9OVU1fUVVFVUVTCisrfSBQb2xsRXZlbnRUeXBlOworKworKworKy8qCisrICogQ2xhc3NlcyBvZiBldmVudHMKKysgKgorKyAqIFRoZXNlIGFyZSB0aGUgcHJlZGVmaW5lZCBjbGFzc2VzLiAgTW9yZSBjYW4gYmUgZGVjbGFyZWQKKysgKiB3aXRoIFBvbGxfQWxsb2NDbGFzcygpLgorKyAqLworKworK3R5cGVkZWYgZW51bSBQb2xsQ2xhc3MgeworKyAgIFBPTExfQ0xBU1NfTUFJTiwKKysgICBQT0xMX0NMQVNTX1BBVVNFLAorKyAgIFBPTExfQ0xBU1NfSVBDLAorKyAgIFBPTExfQ0xBU1NfQ1BULAorKyAgIFBPTExfQ0xBU1NfTUtTLAorKyAgIFBPTExfRklYRURfQ0xBU1NFUywKKysgICBQT0xMX01BWF9DTEFTU0VTID0gMzIwIC8qIFNpemUgZW51bSB0byBtYXhpbXVtICovCisrfSBQb2xsQ2xhc3M7CisrCisrCisrLyoKKysgKiBFYWNoIGNhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgaW4gYSBzZXQgb2YgY2xhc3NlcworKyAqLworKworK3R5cGVkZWYgc3RydWN0IFBvbGxDbGFzc1NldCB7CisrICAgLyogVHlwZSBpcyB1aW50cHRyX3QgdG8gZ2l2ZSBiZXN0IDMyLzY0LWJpdCBjb2RlLiAqLworKyNkZWZpbmUgX1BPTExfRUxFTVNJWkUgKHNpemVvZiAodWludHB0cl90KSAqIDgpCisrICAgdWludHB0cl90IGJpdHNbQ0VJTElORyhQT0xMX01BWF9DTEFTU0VTLCBfUE9MTF9FTEVNU0laRSldOworK30gUG9sbENsYXNzU2V0OworKworKy8qIEFuIGVtcHR5IFBvbGxDbGFzc1NldC4gKi8KKytzdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorK1BvbGxDbGFzc1NldF9FbXB0eSh2b2lkKQorK3sKKysgICBQb2xsQ2xhc3NTZXQgc2V0ID0geyB7IDAgfSB9OworKyAgIHJldHVybiBzZXQ7CisrfQorKworKy8qIEEgUG9sbENsYXNzU2V0IHdpdGggdGhlIHNpbmdsZSBtZW1iZXIuICovCisrc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKytQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBvbGxDbGFzcyBjKQorK3sKKysgICBQb2xsQ2xhc3NTZXQgcyA9IFBvbGxDbGFzc1NldF9FbXB0eSgpOworKworKyAgIEFTU0VSVF9PTl9DT01QSUxFKHNpemVvZiBzLmJpdHNbMF0gKiA4ID09IF9QT0xMX0VMRU1TSVpFKTsgLyogU2l6ZSBjb3JyZWN0ICovCisrICAgQVNTRVJUX09OX0NPTVBJTEUoKF9QT0xMX0VMRU1TSVpFICYgKF9QT0xMX0VMRU1TSVpFIC0gMSkpID09IDApOyAvKiBwb3dlciBvZiAyICovCisrICAgQVNTRVJUX09OX0NPTVBJTEUoUE9MTF9NQVhfQ0xBU1NFUyA8PSBBUlJBWVNJWkUocy5iaXRzKSAqIF9QT0xMX0VMRU1TSVpFKTsKKysgICBBU1NFUlQoYyA8IFBPTExfTUFYX0NMQVNTRVMpOworKworKyAgIHMuYml0c1tjIC8gX1BPTExfRUxFTVNJWkVdID0gQ09OU1QzMjY0VSgxKSA8PCAoYyAlIF9QT0xMX0VMRU1TSVpFKTsKKysgICByZXR1cm4gczsKKyt9CisrCisrLyogQ29tYmluZSB0d28gUG9sbENsYXNzU2V0cy4gKi8KKytzdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorK1BvbGxDbGFzc1NldF9VbmlvbihQb2xsQ2xhc3NTZXQgbGhzLCBQb2xsQ2xhc3NTZXQgcmhzKQorK3sKKysgICBQb2xsQ2xhc3NTZXQgdTsKKysgICB1bnNpZ25lZCBpOworKworKyAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWVNJWkUodS5iaXRzKTsgaSsrKSB7CisrICAgICAgdS5iaXRzW2ldID0gbGhzLmJpdHNbaV0gfCByaHMuYml0c1tpXTsKKysgICB9CisrICAgcmV0dXJuIHU7CisrfQorKworKy8qIEFkZCBzaW5nbGUgY2xhc3MgdG8gUG9sbENsYXNzU2V0LiAqLworK3N0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0CisrUG9sbENsYXNzU2V0X0luY2x1ZGUoUG9sbENsYXNzU2V0IHNldCwgUG9sbENsYXNzIGMpCisreworKyAgIHJldHVybiBQb2xsQ2xhc3NTZXRfVW5pb24oc2V0LCBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKGMpKTsKKyt9CisrCisrCisrI2RlZmluZSBQT0xMX0NTX01BSU4gICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX01BSU4pCisrI2RlZmluZSBQT0xMX0NTX1BBVVNFICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfTUFJTiwgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX1BBVVNFKSkKKysjZGVmaW5lIFBPTExfQ1NfQ1BUICAgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19QQVVTRSwgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfQ1BUKSkKKysjZGVmaW5lIFBPTExfQ1NfSVBDICAgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19DUFQsICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfSVBDKSkKKysjZGVmaW5lIFBPTExfQ1NfVk1EQiAgICBQT0xMX0NTX1BBVVNFIC8qIFBPTExfQ0xBU1NfVk1EQiBpcyByZXRpcmVkICovCisrI2RlZmluZSBQT0xMX0NTX01LUwlQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfTUtTKQorKy8qIAorKyAqIERBTkdFUi4gIFlvdSBkb24ndCBuZWVkIFBPTExfQ1NfQUxXQVlTLiAgUmVhbGx5LiAgU28gZG9uJ3QgdXNlIGl0LgorKyAqLworKyNkZWZpbmUgUE9MTF9DU19BTFdBWVMgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX0NQVCwgUE9MTF9DU19JUEMpCisrCisrLyoKKysgKiBQb2xsIGNsYXNzLXNldCB0YXhvbm9teToKKysgKiBQT0xMX0NTX01BSU4KKysgKiAgICAtIFVubGVzcyB5b3UgTkVFRCBhbm90aGVyIGNsYXNzLCB1c2UgUE9MTF9DU19NQUlOLgorKyAqIFBPTExfQ1NfUEFVU0UKKysgKiAgICAtIEZvciBjYWxsYmFja3MgdGhhdCBtdXN0IG9jY3VyIGV2ZW4gaWYgdGhlIGd1ZXN0IGlzIHBhdXNlZC4KKysgKiAgICAgIE1vc3QgVk1EQiBvciBGb3VuZHJ5IGNvbW1hbmRzIGFyZSBpbiB0aGlzIGNhdGVnb3J5LgorKyAqIFBPTExfQ1NfQ1BUCisrICogICAgLSBPbmx5IGZvciBjYWxsYmFja3Mgd2hpY2ggY2FuIHRyaWdnZXIgaW50ZXJtZWRpYXRlIENoZWNrcG9pbnQgCisrICogICAgICB0cmFuc2l0aW9ucy4KKysgKiAgICAgIFRoZSBPTkxZIHN1Y2ggY2FsbGJhY2sgaXMgTWlncmF0ZS4KKysgKiBQT0xMX0NTX0lQQworKyAqICAgIC0gT25seSBmb3IgY2FsbGJhY2tzIHdoaWNoIGNhbiBjb250YWluIE1zZ18oUG9zdHxIaW50fFF1ZXN0aW9uKSAKKysgKiAgICAgIHJlc3BvbnNlcywgYW5kIGZvciBzaWduYWwgaGFuZGxlcnMgKHdoeSk/CisrICogICAgICBWaWdvciwgVk1EQiwgYW5kIEZvdW5kcnkgY2FuIGNvbnRhaW4gTXNnXyogcmVzcG9uc2VzLgorKyAqIFBPTExfQ1NfTUtTCisrICogICAgLSBDYWxsYmFjayBydW5zIGluIE1LUyB0aHJlYWQuCisrICogUE9MTF9DU19BTFdBWVMKKysgKiAgICAtIE9ubHkgZm9yIGV2ZW50cyB0aGF0IG11c3QgYmUgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5LgorKyAqICAgICAgVGhlIE9OTFkgc3VjaCBjYWxsYmFjayBpcyBPdmhkTWVtVm14U2l6ZUNoZWNrLgorKyAqLworKworKworKy8qCisrICogUG9sbF9DYWxsYmFjayBmbGFncworKyAqLworKworKyNkZWZpbmUgUE9MTF9GTEFHX1BFUklPRElDCQkweDAxICAgIC8vIGtlZXAgYWZ0ZXIgZmlyaW5nCisrI2RlZmluZSBQT0xMX0ZMQUdfUkVNT1ZFX0FUX1BPV0VST0ZGCTB4MDIgIAkvLyBzZWxmLWV4cGxhbmF0b3J5CisrI2RlZmluZSBQT0xMX0ZMQUdfUkVBRAkJCTB4MDQJLy8gZGV2aWNlIGlzIHJlYWR5IGZvciByZWFkaW5nCisrI2RlZmluZSBQT0xMX0ZMQUdfV1JJVEUJCQkweDA4CS8vIGRldmljZSBpcyByZWFkeSBmb3Igd3JpdGluZworKyNkZWZpbmUgUE9MTF9GTEFHX1NPQ0tFVCAgICAgICAgICAgICAgICAweDEwICAgIC8vIGRldmljZSBpcyBhIFdpbmRvd3Mgc29ja2V0CisrI2RlZmluZSBQT0xMX0ZMQUdfTk9fQlVMTCAgICAgICAgICAgICAgIDB4MjAgICAgLy8gY2FsbGJhY2sgZG9lcyBpdHMgb3duIGxvY2tpbmcKKysjZGVmaW5lIFBPTExfRkxBR19XSU5TT0NLICAgICAgICAgICAgICAgMHg0MCAgICAvLyBXaW5zb2NrIHN0eWxlIHdyaXRlIGV2ZW50cworKyNkZWZpbmUgUE9MTF9GTEFHX0ZEICAgICAgICAgICAgICAgICAgICAweDgwICAgIC8vIGRldmljZSBpcyBhIFdpbmRvd3MgZmlsZSBkZXNjcmlwdG9yLgorKyNkZWZpbmUgUE9MTF9GTEFHX0FDQ0VQVF9JTlZBTElEX0ZEUyAgICAweDEwMCAgIC8vIEZvciBicm9rZW4gM3JkIHBhcnR5IGxpYnMsIGUuZy4gY3VybAorKyNkZWZpbmUgUE9MTF9GTEFHX1RIVU5LX1RPX1dORCAgICAgICAgICAweDIwMCAgIC8vIHRodW5rIGNhbGxiYWNrIHRvIHdpbmRvdyBtZXNzYWdlIGxvb3AKKysKKysKKysvKgorKyAqIEFkdmlzb3J5IG1pbmltdW0gdGltZSBwZXJpb2QuCisrICogVXNlcnMgdGhhdCB3YW50IHRoZSBmYXN0ZXN0IHJ1bm5pbmcgcmVhbC10aW1lIHBvbGwKKysgKiBzaG91bGQgdXNlIFRJQ0tTX1RPX1VTRUNTKDEpLgorKyAqLworKworKyNkZWZpbmUgVElDS1NfVE9fVVNFQ1MoX3gpICgoX3gpICogKDEwMDAwMDAgLyBIWikpCisrI2RlZmluZSBVU0VDU19UT19USUNLUyhfeCkgKChfeCkgLyAoMTAwMDAwMCAvIEhaKSkKKysKKysKKyt0eXBlZGVmIHZvaWQgKCpQb2xsZXJGdW5jdGlvbikodm9pZCAqY2xpZW50RGF0YSk7CisrdHlwZWRlZiB2b2lkICgqUG9sbGVyRmlyZVdyYXBwZXIpKFBvbGxlckZ1bmN0aW9uIGZ1bmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmZ1bmNEYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp3cmFwcGVyRGF0YSk7CisrdHlwZWRlZiBCb29sICgqUG9sbGVyRXJyb3JGbikoY29uc3QgY2hhciAqZXJyb3JTdHIpOworKworKy8qCisrICogSW5pdGlhbGlzZXJzOgorKyAqCisrICogICAgICBGb3IgdGhlIHNha2Ugb2YgY29udmVuaWVuY2UsIHdlIGRlY2xhcmUgdGhlIGluaXRpYWxpc2VycworKyAqICAgICAgZm9yIGN1c3RvbSBpbXBsbWVudGF0aW9ucyBoZXJlLCBldmVuIHRob3VnaCB0aGUgYWN0dWFsCisrICogICAgICBpbXBsZW1lbnRhdGlvbnMgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGNvcmUgcG9sbCBjb2RlLgorKyAqLworKworK3R5cGVkZWYgc3RydWN0IFBvbGxPcHRpb25zIHsKKysgICBCb29sIGxvY2tlZDsgICAgICAgICAgIC8vIFVzZSBpbnRlcm5hbCBNWFVzZXIgZm9yIGxvY2tpbmcKKysgICBCb29sIGFsbG93RnVsbFF1ZXVlOyAgIC8vIERvbid0IGFzc2VydCB3aGVuIGRldmljZSBldmVudCBxdWV1ZSBpcyBmdWxsLgorKyAgIFZUaHJlYWRJRCB3aW5kb3dzTXNnVGhyZWFkOyAgICAgICAvLyB0aHJlYWQgdGhhdCBwcm9jZXNzZXMgV2luZG93cyBtZXNzYWdlcworKyAgIFBvbGxlckZpcmVXcmFwcGVyIGZpcmVXcmFwcGVyRm47ICAvLyBvcHRpb25hbDsgbWF5IGJlIHVzZWZ1bCBmb3Igc3RhdHMKKysgICB2b2lkICpmaXJlV3JhcHBlckRhdGE7IC8vIG9wdGlvbmFsCisrICAgUG9sbGVyRXJyb3JGbiBlcnJvckZuOyAvLyBvcHRpb25hbDsgY2FsbGVkIHVwb24gdW5yZWNvdmVyYWJsZSBlcnJvcgorK30gUG9sbE9wdGlvbnM7CisrCisrCisrdm9pZCBQb2xsX0luaXREZWZhdWx0KHZvaWQpOworK3ZvaWQgUG9sbF9Jbml0RGVmYXVsdEV4KGNvbnN0IFBvbGxPcHRpb25zICpvcHRzKTsKKyt2b2lkIFBvbGxfSW5pdEd0ayh2b2lkKTsgLy8gT24gdG9wIG9mIGdsaWIgZm9yIExpbnV4Cisrdm9pZCBQb2xsX0luaXRDRih2b2lkKTsgIC8vIE9uIHRvcCBvZiBDb3JlRm91bmRhdGlvbiBmb3IgT1NYCisrCisrCisrLyoKKysgKiBGdW5jdGlvbnMKKysgKi8KKytpbnQgUG9sbF9Tb2NrZXRQYWlyKEJvb2wgdm1jaSwgQm9vbCBzdHJlYW0sIGludCBmZHNbMl0pOworK3ZvaWQgUG9sbF9Mb29wKEJvb2wgbG9vcCwgQm9vbCAqZXhpdCwgUG9sbENsYXNzIGMpOworK3ZvaWQgUG9sbF9Mb29wVGltZW91dChCb29sIGxvb3AsIEJvb2wgKmV4aXQsIFBvbGxDbGFzcyBjLCBpbnQgdGltZW91dCk7CisrQm9vbCBQb2xsX0xvY2tpbmdFbmFibGVkKHZvaWQpOworK3ZvaWQgUG9sbF9FeGl0KHZvaWQpOworKworKworKy8qCisrICogUG9sbF9DYWxsYmFjayBhZGRzIGEgY2FsbGJhY2sgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGFuIGlkZW50aWNhbCBvbmUgZXhpc3RzLgorKyAqCisrICogTGlrZXdpc2UsIFBvbGxfQ2FsbGJhY2tSZW1vdmUgcmVtb3ZlcyBleGFjdGx5IG9uZSBjYWxsYmFjay4KKysgKi8KKysKKytWTXdhcmVTdGF0dXMgUG9sbF9DYWxsYmFjayhQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbERldkhhbmRsZSBpbmZvLCAvLyBmZC9taWNyb3NlYyBkZWxheQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1YVXNlclJlY0xvY2sgKmxjayk7CisrQm9vbCBQb2xsX0NhbGxiYWNrUmVtb3ZlKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUpOworK0Jvb2wgUG9sbF9DYWxsYmFja1JlbW92ZU9uZUJ5Q0IoUG9sbENsYXNzU2V0IGNsYXNzU2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipjbGllbnREYXRhKTsKKysKKyt2b2lkIFBvbGxfTm90aWZ5Q2hhbmdlKFBvbGxDbGFzc1NldCBjbGFzc1NldCk7CisrCisrLyoKKysgKiBXcmFwcGVycyBmb3IgUG9sbF9DYWxsYmFjayBhbmQgUG9sbF9DYWxsYmFja1JlbW92ZSB0aGF0IHByZXNlbnQKKysgKiBzaW1wbGVyIHN1YnNldHMgb2YgdGhvc2UgaW50ZXJmYWNlcy4KKysgKi8KKysKKytWTXdhcmVTdGF0dXMgUG9sbF9DQl9EZXZpY2UoUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbERldkhhbmRsZSBkZXZpY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOworKworK0Jvb2wgUG9sbF9DQl9EZXZpY2VSZW1vdmUoUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKysKKysKKytWTXdhcmVTdGF0dXMgUG9sbF9DQl9SVGltZShQb2xsZXJGdW5jdGlvbiBmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbGF5LAkvLyBtaWNyb3NlY29uZHMKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1YVXNlclJlY0xvY2sgKmxvY2spOworKworK0Jvb2wgUG9sbF9DQl9SVGltZVJlbW92ZShQb2xsZXJGdW5jdGlvbiBmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKysKKysKKysjaWZkZWYgX1dJTjMyCisrdm9pZCBQb2xsX1NldFdpbmRvd01lc3NhZ2VSZWNpcGllbnQoSFdORCBoV25kLCBVSU5UIG1zZywgQm9vbCBhbHdheXNUaHVuayk7CisrQm9vbCBQb2xsX0ZpcmVXbmRDYWxsYmFjayh2b2lkICpscGFyYW0pOworKyNlbmRpZgorKworKyNlbmRpZiAvLyBfUE9MTF9IXworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL3JwY0luL3JwY2luLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL3JwY0luL3JwY2luLmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9ycGNJbi9ycGNpbi5jCitAQCAtNTcsNyArNTcsNyBAQAorIAorICNpZiBkZWZpbmVkKFZNVE9PTFNfVVNFX1ZTT0NLRVQpCisgIyAgaW5jbHVkZSA8Z2xpYi5oPgorLSMgIGluY2x1ZGUgInBvbGwuaCIKKysjICBpbmNsdWRlICJ2bV9wb2xsLmgiCisgIyAgaW5jbHVkZSAiYXN5bmNzb2NrZXQuaCIKKyAjICBpbmNsdWRlICJ2bWNpX2RlZnMuaCIKKyAjaW5jbHVkZSAiZGF0YU1hcC5oIgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ncmFiYml0bXFQcm94eS9ncmFiYml0bXFQcm94eVBsdWdpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYworKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ncmFiYml0bXFQcm94eS9ncmFiYml0bXFQcm94eVBsdWdpbi5jCitAQCAtNDgsNyArNDgsNyBAQAorICNpbmNsdWRlICJycGNvdXQuaCIKKyAjaW5jbHVkZSAicmFiYml0bXFQcm94eUNvbnN0LmgiCisgI2luY2x1ZGUgInZtX2Jhc2ljX3R5cGVzLmgiCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorICNpZmRlZiBPUEVOX1ZNX1RPT0xTCisgI2luY2x1ZGUgInZtY2lfc29ja2V0cy5oIgorICNpbmNsdWRlICJzc2xEaXJlY3QuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDQtQWRkLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1hbmQtV25vLWVycm9yLWFkZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDQtQWRkLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1hbmQtV25vLWVycm9yLWFkZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTA1MTY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNC1BZGQtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWFuZC1Xbm8tZXJyb3ItYWRkLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gY2RiMGIzYzg5OGM2YjZiNmM4MjU5ZDlkZGI4YjAwMTYzYWM1ZTQxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDA5OjQzOjE4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTFdIEFkZCAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzIGFuZAorIC1Xbm8tZXJyb3I9YWRkcmVzcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtIHwgMiArLQorIG9wZW4tdm0tdG9vbHMvbGliL2ZpbGUvTWFrZWZpbGUuYW0gICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2R5bnhkci9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbQorQEAgLTIwLDQgKzIwLDQgQEAgbm9pbnN0X0xUTElCUkFSSUVTID0gbGliRHlueGRyLmxhCisgbGliRHlueGRyX2xhX1NPVVJDRVMgPSAKKyBsaWJEeW54ZHJfbGFfU09VUkNFUyArPSBkeW54ZHIuYworIGxpYkR5bnhkcl9sYV9TT1VSQ0VTICs9IHhkcnV0aWwuYworLQorK2xpYkR5bnhkcl9sYV9DUFBGTEFHUyA9IC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9maWxlL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvZmlsZS9NYWtlZmlsZS5hbQorQEAgLTI3LDMgKzI3LDQgQEAgbGliRmlsZV9sYV9TT1VSQ0VTICs9IGZpbGVMb2NrUHJpbWl0aXZlLgorIGxpYkZpbGVfbGFfU09VUkNFUyArPSBmaWxlTG9ja1Bvc2l4LmMKKyBsaWJGaWxlX2xhX1NPVVJDRVMgKz0gZmlsZVRlbXBQb3NpeC5jCisgbGliRmlsZV9sYV9TT1VSQ0VTICs9IGZpbGVUZW1wLmMKKytsaWJGaWxlX2xhX0NQUEZMQUdTID0gLVduby1lcnJvcj1hZGRyZXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA1LVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3RydWN0LXRpbWVzcGVjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN0cnVjdC10aW1lc3BlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDJkMDBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN0cnVjdC10aW1lc3BlYy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGJmMWVhZmIwNzI5NzcxMWJhZjkzMjBiMWVkY2NhOGEzMzc2ZjExN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CitEYXRlOiBXZWQsIDE4IE5vdiAyMDE1IDA5OjAzOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIFVzZSBjb25maWd1cmUgdGVzdCBmb3Igc3RydWN0IHRpbWVzcGVjCisKK1VzZSB0aGUgY29uZmlndXJlIHNjcmlwdCB0byB0ZXN0IGZvciBzdHJ1Y3QgdGltZSBzcGVjIGluc3RlYWQgb2YgdHJ5aW5nCit0byBrZWVwIHRyYWNrIG9mIHdoYXQgcGxhdGZvcm1zIGhhcyBpdC4KKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorLS0tCisgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMgICAgICAgICAgIHwgMSArCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9oZ2ZzVXRpbC5oIHwgOCArLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitJbmRleDogb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvY29uZmlndXJlLmFjCisrKysgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKK0BAIC0xMTI3LDYgKzExMjcsNyBAQCBBQ19UWVBFX09GRl9UCisgQUNfVFlQRV9QSURfVAorIEFDX1RZUEVfU0laRV9UCisgQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfcmRldl0pCisrQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRpbWVzcGVjLnR2X3NlY10sW10sW10sW1sjaW5jbHVkZSA8dGltZS5oPl1dKQorIEFDX0hFQURFUl9USU1FCisgQUNfU1RSVUNUX1RNCisgQUNfQ19WT0xBVElMRQorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvaGdmc1V0aWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9oZ2ZzVXRpbC5oCisrKysgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9oZ2ZzVXRpbC5oCitAQCAtNTMsMTMgKzUzLDcgQEAKKyAjICAgICAgaW5jbHVkZSA8dGltZS5oPgorICMgICBlbmRpZgorICMgICBpbmNsdWRlICJ2bV9iYXNpY190eXBlcy5oIgorLSMgICBpZiAhZGVmaW5lZCBfU1RSVUNUX1RJTUVTUEVDICYmICAgXAorLSAgICAgICAhZGVmaW5lZCBfVElNRVNQRUNfREVDTEFSRUQgJiYgXAorLSAgICAgICAhZGVmaW5lZCBfX3RpbWVzcGVjX2RlZmluZWQgJiYgXAorLSAgICAgICAhZGVmaW5lZCBzdW4gJiYgXAorLSAgICAgICAhZGVmaW5lZCBfX0ZyZWVCU0RfXyAmJiBcCistICAgICAgICFfX0FQUExFX18gJiYgXAorLSAgICAgICAhZGVmaW5lZCBfV0lOMzIKKysjICAgaWYgIWRlZmluZWQgSEFWRV9TVFJVQ1RfVElNRVNQRUNfVFZfU0VDCisgc3RydWN0IHRpbWVzcGVjIHsKKyAgICB0aW1lX3QgdHZfc2VjOworICAgIGxvbmcgICB0dl9uc2VjOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNi1GaXgtZGVmaW5pdGlvbi1vZi1BTExQRVJNUy1hbmQtQUNDRVNTUEVSTVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA2LUZpeC1kZWZpbml0aW9uLW9mLUFMTFBFUk1TLWFuZC1BQ0NFU1NQRVJNUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWY0ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNi1GaXgtZGVmaW5pdGlvbi1vZi1BTExQRVJNUy1hbmQtQUNDRVNTUEVSTVMucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSAzMWFlNmY0MjQ1OGY5MGQ0OTk0YTRhZDhlMmI3NjczNjkxNjEyYzM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAwOToxMDoxNCArMDAwMAorU3ViamVjdDogW1BBVENIIDA2LzExXSBGaXggZGVmaW5pdGlvbiBvZiBBTExQRVJNUyBhbmQgQUNDRVNTUEVSTVMKKworVGhlIEFMTFBFUk1TIGFuZCBBQ0NFU1NQRVJNUyBkZWZpbmVzIGFyZSBub3Qgc3BlY2lmaWVkIGluIFBPU0lYIHNvCithc3N1bWUgaXQgaXMgbm90IHRoZXJlIGluc3RlYWQgb2YgdGVzdGluZyBmb3Igc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgorCitUaGlzIGlzIG5lZWRlZCBmb3IgbXVzbCBsaWJjLgorCitTaWduZWQtb2ZmLWJ5OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CistLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXJMaW51eC5jICAgICAgfCA4ICsrKysrLS0tCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZC9kbmRMaW51eC5jIHwgMyArLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlckxpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlckxpbnV4LmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXJMaW51eC5jCitAQCAtMTA3LDExICsxMDcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgRGlyZWN0b3J5RW50cnkgeworICNlbmRpZgorIAorIC8qCistICogQUxMUEVSTVMgKG1vZGUgMDc3NzcpIGFuZCBBQ0NFU1NQRVJNUyAobW9kZSAwNzc3KSBhcmUgbm90IGRlZmluZWQgaW4gdGhlCistICogU29sYXJpcyB2ZXJzaW9uIG9mIDxzeXMvc3RhdC5oPi4KKysgKiBBTExQRVJNUyAobW9kZSAwNzc3NykgYW5kIEFDQ0VTU1BFUk1TIChtb2RlIDA3NzcpIGFyZSBub3Qgc3BlY2lmaWVkIGluCisrICogUE9TSVguCisgICovCistI2lmZGVmIHN1bgorKyNpZm5kZWYgQUNDRVNTUEVSTVMKKyAjICAgZGVmaW5lIEFDQ0VTU1BFUk1TIChTX0lSV1hVfFNfSVJXWEd8U19JUldYTykKKysjZW5kaWYKKysjaWZuZGVmIEFMTFBFUk1TCisgIyAgIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pCisgI2VuZGlmCisgCitJbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZC9kbmRMaW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvZG5kL2RuZExpbnV4LmMKKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvZG5kL2RuZExpbnV4LmMKK0BAIC01MSw3ICs1MSw3IEBACisgCisgI2RlZmluZSBETkRfUk9PVERJUl9QRVJNUyAgICAgKFNfSVJXWFUgfCBTX0lSV1hHIHwgU19JUldYTykKKyAjZGVmaW5lIERORF9TVEFHSU5HRElSX1BFUk1TICAoU19JUldYVSB8IFNfSVJHUlAgfCBTX0lYR1JQIHwgU19JUk9USCB8IFNfSVhPVEgpCistI2lmZGVmIHN1bgorKyNpZm5kZWYgQUNDRVNTUEVSTVMKKyAjZGVmaW5lIEFDQ0VTU1BFUk1TICAgICAgICAgICAoU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKQorICNlbmRpZgorICNpZmRlZiBfX0FORFJPSURfXworQEAgLTYwLDcgKzYwLDYgQEAKKyAgKi8KKyAjZGVmaW5lIE5PX1NFVE1OVEVOVAorICNkZWZpbmUgTk9fRU5ETU5URU5UCistI2RlZmluZSBBQ0NFU1NQRVJNUyAgICAgICAgICAgKFNfSVJXWFUgfCBTX0lSV1hHIHwgU19JUldYTykKKyAjZW5kaWYKKyAKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWRmOWIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNy1Vc2UtY29uZmlndXJlLXRvLXRlc3QtZm9yLWZlYXR1cmUtaW5zdGVhZC1vZi1wbGF0Zm9yLnBhdGNoCkBAIC0wLDAgKzEsMTQ0IEBACitGcm9tIDZjYzFjMjJjYzMwMzIwZjU2ZGE1NTJhNzZiZDk1NmRiOGYyNTViNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CitEYXRlOiBXZWQsIDE4IE5vdiAyMDE1IDEwOjA1OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTFdIFVzZSBjb25maWd1cmUgdG8gdGVzdCBmb3IgZmVhdHVyZSBpbnN0ZWFkIG9mIHBsYXRmb3JtCisKK1Rlc3QgZm9yIHZhcmlvdXMgZnVuY3Rpb25zIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdAorcGxhdGZvcm0gYW5kIHdoYXQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gcGxhdGZvcm0gaGFzIHN1cHBvcnQgZm9yIHdoYXQuCisKK1RoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHBvcnQgdG8gY3VycmVudGx5IHVua25vd24gcGxhdGZvcm1zIGFuZAord2lsbCBzb2x2ZSB0aGUgaXNzdWUgaWYgYSBwbGF0Zm9ybSBhZGQgc3VwcG9ydCBmb3IgYSBtaXNzaW5nIGZlYXR1cmUgaW4KK3RoZSBmdXR1cmUuCisKK1RoZSBmZWF0dXJlcyB3ZSB0ZXN0IGZvciBhcmU6CistIGdldGlmYWRkcnMKKy0gZ2V0YXV4dmFsCistIGlzc2V0dWdpZAorLSBfX3NlY3VyZV9nZXRlbnYKKworVGhpcyBpcyBuZWVkZWQgZm9yIG11c2wgbGliYy4KKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorLS0tCisgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL2lkTGludXguYyAgICAgICAgIHwgMzAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgb3Blbi12bS10b29scy9saWIvbmljSW5mby9uaWNJbmZvUG9zaXguYyB8ICA4ICsrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCitAQCAtNzk4LDYgKzc5OCw3IEBAIEFDX0NIRUNLX0ZVTkNTKAorIAorIEFDX0NIRUNLX0ZVTkNTKFtlY3Z0XSkKKyBBQ19DSEVDS19GVU5DUyhbZmN2dF0pCisrQUNfQ0hFQ0tfRlVOQ1MoW2dldGlmYWRkcnMgZ2V0YXV4dmFsIGlzc2V0dWdpZCBfX3NlY3VyZV9nZXRlbnZdKQorIAorIEFDX0NIRUNLX0ZVTkMoW21rZHRlbXBdLCBbaGF2ZV9ta2R0ZW1wPXllc10pCisgCitAQCAtMTA2MywxMCArMTA2NCwxMyBAQCBBQ19QQVRIX1BST0coCisgIyMjCisgCisgQUNfQ0hFQ0tfSEVBREVSUyhbY3J5cHQuaF0pCisrQUNfQ0hFQ0tfSEVBREVSUyhbaWZhZGRycy5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFtpbnR0eXBlcy5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFtzdGRpbnQuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3RkbGliLmhdKQorIEFDX0NIRUNLX0hFQURFUlMoW3djaGFyLmhdKQorK0FDX0NIRUNLX0hFQURFUlMoW25ldC9pZi5oXSkKKytBQ19DSEVDS19IRUFERVJTKFtzeXMvYXV4di5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFtzeXMvaW50dHlwZXMuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2lvLmhdKQorIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9wYXJhbS5oXSkgIyBSZXF1aXJlZCB0byBtYWtlIHRoZSBzeXMvdXNlci5oIGNoZWNrIHdvcmsgY29ycmVjdGx5IG9uIEZyZWVCU0QKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL2lkTGludXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvbWlzYy9pZExpbnV4LmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL2lkTGludXguYworQEAgLTI3LDEyICsyNyw5IEBACisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKy0jaWZkZWYgX19saW51eF9fCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiBcCistICAgICAgICAgICAoX19HTElCQ19fID4gMiB8fCAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDE2KSkKKysjaWZkZWYgSEFWRV9TWVNfQVVYVl9ICisgI2luY2x1ZGUgPHN5cy9hdXh2Lmg+CisgI2VuZGlmCistI2VuZGlmCisgI2lmZGVmIF9fQVBQTEVfXworICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgorQEAgLTk5NywzMSArOTk0LDMyIEBAIElkX0VuZFN1cGVyVXNlcih1aWRfdCB1aWQpICAvLyBJTjoKKyBzdGF0aWMgQm9vbAorIElkSXNTZXRVR2lkKHZvaWQpCisgeworLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorLSAgIC8qIEFuZHJvaWQgZG9lcyBub3QgaGF2ZSBhIHNlY3VyZV9nZXRlbnYsIHNvIGJlIGNvbnNlcnZhdGl2ZS4gKi8KKy0gICByZXR1cm4gVFJVRTsKKy0jZWxzZQorICAgIC8qCisgICAgICogV2UgdXNlIF9fc2VjdXJlX2dldGVudiwgd2hpY2ggcmV0dXJucyBOVUxMIGlmIHRoZSBiaW5hcnkgaXMKKy0gICAgKiBzZXR1aWQgb3Igc2V0Z2lkLiBBbHRlcm5hdGl2ZXMgaW5jbHVkZSwKKysgICAgKiBzZXR1aWQgb3Igc2V0Z2lkLCB3aGVuIGlzc2V0dWdpZCBvciBnZXRhdXh2YWwoQVRfU0VDVVJFKSBpcyBub3QKKysgICAgKiBhdmFpbGFibGUuIEFsdGVybmF0aXZlcyBpbmNsdWRlLAorICAgICAqCistICAgICogICBhKSBnZXRhdXh2YWwoQVRfU0VDVVJFKTsgbm90IGF2YWlsYWJsZSB1bnRpbCBnbGliYyAyLjE2LgorLSAgICAqICAgYikgX19saWJjX2VuYWJsZV9zZWN1cmU7IG1heSBub3QgYmUgZXhwb3J0ZWQuCisrICAgICogICBhKSBpc3NldHVnaWQoKTsgbm90ICh5ZXQ/KSBhdmFpbGFibGUgaW4gZ2xpYmMuCisrICAgICogICBiKSBnZXRhdXh2YWwoQVRfU0VDVVJFKTsgbm90IGF2YWlsYWJsZSB1bnRpbCBnbGliYyAyLjE2LgorKyAgICAqICAgYykgX19saWJjX2VuYWJsZV9zZWN1cmU7IG1heSBub3QgYmUgZXhwb3J0ZWQuCisgICAgICoKKy0gICAgKiBVc2UgKGEpIHdoZW4gd2UgYXJlIGJhc2VkIG9uIGdsaWJjIDIuMTYsIG9yIG5ld2VyLgorKyAgICAqIFVzZSAoYikgd2hlbiB3ZSBhcmUgYmFzZWQgb24gZ2xpYmMgMi4xNiwgb3IgbmV3ZXIuCisgICAgICovCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiBcCistICAgICAgICAgICAoX19HTElCQ19fID4gMiB8fCAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDE2KSkKKysjaWYgSEFWRV9JU1NFVFVHSUQKKysgICByZXR1cm4gaXNzZXR1Z2lkKCk7CisrI2VsaWYgSEFWRV9HRVRBVVhWQUwKKyAgICByZXR1cm4gZ2V0YXV4dmFsKEFUX1NFQ1VSRSkgIT0gMDsKKy0jZWxzZQorKyNlbGlmIEhBVkVfX19TRUNVUkVfR0VURU5WCisgICAgc3RhdGljIGNvbnN0IGNoYXIgZW52TmFtZVtdID0gIlZNV19TRVRVR0lEX1RFU1QiOworIAorICAgIGlmIChzZXRlbnYoZW52TmFtZSwgIjEiLCBUUlVFKSA9PSAtMSkgeworICAgICAgIHJldHVybiBUUlVFOyAvKiBDb25zZXJ2YXRpdmUgKi8KKyAgICB9CisgICAgcmV0dXJuIF9fc2VjdXJlX2dldGVudihlbnZOYW1lKSA9PSBOVUxMOworLSNlbmRpZgorKyNlbHNlCisrICAgLyogQW5kcm9pZCBkb2VzIG5vdCBoYXZlIGEgc2VjdXJlX2dldGVudiwgc28gYmUgY29uc2VydmF0aXZlLiAqLworKyAgIHJldHVybiBUUlVFOworICNlbmRpZgorIH0KKyAjZW5kaWYKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9uaWNJbmZvL25pY0luZm9Qb3NpeC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9uaWNJbmZvL25pY0luZm9Qb3NpeC5jCisrKysgb3Blbi12bS10b29scy9saWIvbmljSW5mby9uaWNJbmZvUG9zaXguYworQEAgLTM0LDkgKzM0LDEzIEBACisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisrI2lmIEhBVkVfU1lTX1NZU0NUTF9ICisgIyBpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisrI2VuZGlmCisrI2lmIEhBVkVfSUZBRERSU19ICisgIyBpbmNsdWRlIDxpZmFkZHJzLmg+CisrI2VuZGlmCisrI2lmIEhBVkVfTkVUX0lGX0gKKyAjIGluY2x1ZGUgPG5ldC9pZi5oPgorICNlbmRpZgorICNpZm5kZWYgTk9fRE5FVAorQEAgLTM0OCw3ICszNTIsNyBAQCBHdWVzdEluZm9HZXROaWNJbmZvKE5pY0luZm9WMyAqbmljSW5mbykKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKy0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoVVNFUldPUkxEKQorKyNpZiBkZWZpbmVkKE5PX0RORVQpICYmIGRlZmluZWQoSEFWRV9HRVRJRkFERFJTKQorIAorIGNoYXIgKgorIEd1ZXN0SW5mb0dldFByaW1hcnlJUCh2b2lkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOC11c2UtcG9zaXgtc3RyZXJyb3Jfci11bmxlc3MtZ251LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOC11c2UtcG9zaXgtc3RyZXJyb3Jfci11bmxlc3MtZ251LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMTI5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA4LXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1nbnUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBkNGQxZTcxNDZjYTI2OTgwODlmNmJkNTMyZjJmYjhiOWMxMTM0Y2E3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogTW9uLCAyIEphbiAyMDE3IDE0OjM5OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTFdIHVzZSBwb3NpeCBzdHJlcnJvcl9yIHVubGVzcyBnbnUKKworLS0tCisgb3Blbi12bS10b29scy9saWIvZXJyL2VyclBvc2l4LmMgfCA4ICsrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9lcnIvZXJyUG9zaXguYworKysrIG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jCitAQCAtNjMsMTEgKzYzLDEzIEBAIEVyckVycm5vMlN0cmluZyhFcnJfTnVtYmVyIGVycm9yTnVtYmVyLAorIHsKKyAgICBjaGFyICpwOworIAorLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiAhZGVmaW5lZChOX1BMQVRfTkxNKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcCA9IHN0cmVycm9yX3IoZXJyb3JOdW1iZXIsIGJ1ZiwgYnVmU2l6ZSk7CisgI2Vsc2UKKy0gICBwID0gc3RyZXJyb3IoZXJyb3JOdW1iZXIpOworLSNlbmRpZgorKyAgIGlmIChzdHJlcnJvcl9yKGVycm9yTnVtYmVyLCBidWYsIGJ1ZlNpemUpICE9IDApCisrICAgICAgc25wcmludGYoYnVmLCBidWZTaXplLCAidW5rbm93biBlcnJvciAlaSIsIGVycm9yTnVtYmVyKTsKKysgICBwID0gYnVmOworKyNlbmRpZiAvKiBkZWZpbmVkIF9fR0xJQkNfXyAqLworICAgIEFTU0VSVChwICE9IE5VTEwpOworICAgIHJldHVybiBwOworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDktQWRkLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtc3lzdGVtLWxpYnRpcnBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOS1BZGQtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1zeXN0ZW0tbGlidGlycGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlZTVhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDktQWRkLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtc3lzdGVtLWxpYnRpcnBjLnBhdGNoCkBAIC0wLDAgKzEsMzQyIEBACitGcm9tIDVhZTZjNjYyZmVmYTYyMWY0NjAwNTU5ZTI5OWE3ZDk3YzIyNTRlNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDEwOjIwOjEwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBzeXN0ZW0gbGlidGlycGMKKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKysrKysrKworIG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBvcGVuLXZtLXRvb2xzL2xpYi9ndWVzdFJwYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKworIG9wZW4tdm0tdG9vbHMvbGliL21pc2MvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIG9wZW4tdm0tdG9vbHMvbGliL25ldFV0aWwvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKworIG9wZW4tdm0tdG9vbHMvbGliL25pY0luZm8vTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9ycGNDaGFubmVsL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9zbGFzaFByb2MvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9zdHJpbmcvYnNkX291dHB1dF9zaGFyZWQuYyAgICAgICAgICAgICB8ICAyICstCisgb3Blbi12bS10b29scy9saWJndWVzdGxpYi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgMiArKworIG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCisgb3Blbi12bS10b29scy9ycGN0b29sL3JwY3Rvb2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKworIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9NYWtlZmlsZS5hbSAgICAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3Vlc3RJbmZvL01ha2VmaWxlLmFtICAgICB8ICAxICsKKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvcmVzb2x1dGlvblNldC9NYWtlZmlsZS5hbSB8ICAyICsrCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC9NYWtlZmlsZS5hbSAgICAgICAgICAgfCAgMiArKworIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92bWJhY2t1cC9NYWtlZmlsZS5hbSAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL3Rvb2xib3gvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCisgMTkgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCitAQCAtNDA1LDYgKzQwNSwyMCBAQCBBQ19WTVdfQ0hFQ0tfTElCKFtmdXNlXSwKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbRnVzZSBpcyBtaXNzaW5nLCB2bWJsb2NrLWZ1c2Uvdm1oZ2ZzLWZ1c2Ugd2lsbCBiZSBkaXNhYmxlZC5dKV0pCisgCisgIworKyMgQ2hlY2sgZm9yIGxpYnRpcnBjCisrIworK0FDX1ZNV19DSEVDS19MSUIoW2xpYnRpcnBjXSwKKysgICAgICAgICAgICAgICAgIFtMSUJUSVJQQ10sCisrICAgICAgICAgICAgICAgICBbbGlidGlycGNdLAorKyAgICAgICAgICAgICAgICAgW10sCisrICAgICAgICAgICAgICAgICBbXSwKKysgICAgICAgICAgICAgICAgIFtycGMveGRyLmhdLAorKyAgICAgICAgICAgICAgICAgW3hkcl92b2lkXSwKKysgICAgICAgICAgICAgICAgIFtoYXZlX2xpYnRpcnBjPXllc10sCisrICAgICAgICAgICAgICAgICBbaGF2ZV9saWJ0aXRpcnBjPW5vOworKyAgICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFtsaWJ0aXJwYyBpcyBtaXNzaW5nLl0pXSkKKysKKysjCisgIyBDaGVjayBmb3IgUEFNLgorICMKKyBBQ19BUkdfV0lUSChbcGFtXSwKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2R5bnhkci9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbQorQEAgLTE3LDcgKzE3LDExIEBACisgCisgbm9pbnN0X0xUTElCUkFSSUVTID0gbGliRHlueGRyLmxhCisgCistbGliRHlueGRyX2xhX1NPVVJDRVMgPSAKKytsaWJEeW54ZHJfbGFfU09VUkNFUyA9CisgbGliRHlueGRyX2xhX1NPVVJDRVMgKz0gZHlueGRyLmMKKyBsaWJEeW54ZHJfbGFfU09VUkNFUyArPSB4ZHJ1dGlsLmMKKy1saWJEeW54ZHJfbGFfQ1BQRkxBR1MgPSAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCisrbGliRHlueGRyX2xhX0NQUEZMQUdTID0gQExJQlRJUlBDX0NQUEZMQUdTQCAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCisrCisrbGliRHlueGRyX2xhX0xJQkFERCA9CisrbGliRHlueGRyX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKysKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZXJyL2VyclBvc2l4LmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorIAorICNpbmNsdWRlICJ2bXdhcmUuaCIKKyAjaW5jbHVkZSAiZXJySW50LmgiCitJbmRleDogb3Blbi12bS10b29scy9saWIvZ3Vlc3RScGMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2d1ZXN0UnBjL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvZ3Vlc3RScGMvTWFrZWZpbGUuYW0KK0BAIC0yMCw2ICsyMCwxMiBAQCBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJHdWVzdFJwYy5sYQorIGxpYkd1ZXN0UnBjX2xhX1NPVVJDRVMgPQorIGxpYkd1ZXN0UnBjX2xhX1NPVVJDRVMgKz0gbmljaW5mb194ZHIuYworIAorK2xpYkd1ZXN0UnBjX2xhX0NQUEZMQUdTID0KKytsaWJHdWVzdFJwY19sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisrCisrbGliR3Vlc3RScGNfbGFfTElCQUREID0KKytsaWJHdWVzdFJwY19sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisrCisgIyBYWFg6IEF1dG9yZWNvbmYgY29tcGxhaW5zIGFib3V0IHRoaXMgYW5kIHJlY29tbWVuZHMgdXNpbmcgQU1fQ0ZMQUdTIGluc3RlYWQuCisgIyBQcm9ibGVtIGlzLCAkKENGTEFHUykgaXMgYXBwZW5kZWQgdG8gdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZSBhZnRlciBBTV9DRkxBR1MKKyAjIGFuZCBhZnRlciBsaWJHdWVzdFJwY19sYV9DRkxBR1MsIHNvICItV2FsbCAtV2Vycm9yIiB3aWxsIG92ZXJyaWRlIHRoaXMgZmxhZy4KK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9taXNjL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvbWlzYy9NYWtlZmlsZS5hbQorQEAgLTUyLDQgKzUyLDUgQEAgbGliTWlzY19sYV9TT1VSQ0VTICs9IHV0aWxNZW0uYworIGxpYk1pc2NfbGFfU09VUkNFUyArPSB2bXN0ZGlvLmMKKyBsaWJNaXNjX2xhX1NPVVJDRVMgKz0gc3RydXRpbC5jCisgbGliTWlzY19sYV9TT1VSQ0VTICs9IHZ0aHJlYWRCYXNlLmMKKytsaWJNaXNjX2xhX0NQUEZMQUdTID0gLVduby1lcnJvcj1pbnQtY29udmVyc2lvbgorIAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL25ldFV0aWwvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL25ldFV0aWwvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9uZXRVdGlsL01ha2VmaWxlLmFtCitAQCAtMjAsMyArMjAsNyBAQCBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJOZXRVdGlsLmxhCisgbGliTmV0VXRpbF9sYV9TT1VSQ0VTID0KKyBsaWJOZXRVdGlsX2xhX1NPVVJDRVMgKz0gbmV0VXRpbExpbnV4LmMKKyAKKytsaWJOZXRVdGlsX2xhX0NQUEZMQUdTID0KKytsaWJOZXRVdGlsX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKysKKytsaWJOZXRVdGlsX2xhX0xJQkFERCA9IEBMSUJUSVJQQ19MSUJTQAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL25pY0luZm8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL25pY0luZm8vTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9uaWNJbmZvL01ha2VmaWxlLmFtCitAQCAtMjUsMTIgKzI1LDE0IEBAIGxpYk5pY0luZm9fbGFfU09VUkNFUyArPSBuaWNJbmZvUG9zaXguYworIAorIGxpYk5pY0luZm9fbGFfQ1BQRkxBR1MgPQorIGxpYk5pY0luZm9fbGFfQ1BQRkxBR1MgKz0gQEdMSUIyX0NQUEZMQUdTQAorK2xpYk5pY0luZm9fbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorIAorIEFNX0NGTEFHUyA9ICQoRE5FVF9DUFBGTEFHUykKKyBpZiBVU0VfU0xBU0hfUFJPQworIEFNX0NGTEFHUyArPSAtRFVTRV9TTEFTSF9QUk9DCisgZW5kaWYKKyBsaWJOaWNJbmZvX2xhX0xJQkFERCA9CisrbGliTmljSW5mb19sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisgaWYgSEFWRV9ETkVUCisgICAgbGliTmljSW5mb19sYV9MSUJBREQgKz0gQERORVRfTElCU0AKKyBlbmRpZgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL3JwY0NoYW5uZWwvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL3JwY0NoYW5uZWwvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9ycGNDaGFubmVsL01ha2VmaWxlLmFtCitAQCAtMjcsMyArMjcsNyBAQCBlbmRpZgorIAorIGxpYlJwY0NoYW5uZWxfbGFfQ1BQRkxBR1MgPQorIGxpYlJwY0NoYW5uZWxfbGFfQ1BQRkxBR1MgKz0gQFZNVE9PTFNfQ1BQRkxBR1NACisrbGliUnBjQ2hhbm5lbF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisrCisrbGliUnBjQ2hhbm5lbF9sYV9MSUJBREQgPQorK2xpYlJwY0NoYW5uZWxfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL3NsYXNoUHJvYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvc2xhc2hQcm9jL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvc2xhc2hQcm9jL01ha2VmaWxlLmFtCitAQCAtMjIsNiArMjIsMTAgQEAgbGliU2xhc2hQcm9jX2xhX1NPVVJDRVMgKz0gbmV0LmMKKyAKKyBsaWJTbGFzaFByb2NfbGFfQ1BQRkxBR1MgPQorIGxpYlNsYXNoUHJvY19sYV9DUFBGTEFHUyArPSBAR0xJQjJfQ1BQRkxBR1NACisrbGliU2xhc2hQcm9jX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKysKKytsaWJTbGFzaFByb2NfbGFfTElCQUREID0KKytsaWJTbGFzaFByb2NfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorIAorIEFNX0NGTEFHUyA9ICQoRE5FVF9DUFBGTEFHUykKKyAKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9zdHJpbmcvYnNkX291dHB1dF9zaGFyZWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvc3RyaW5nL2JzZF9vdXRwdXRfc2hhcmVkLmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9zdHJpbmcvYnNkX291dHB1dF9zaGFyZWQuYworQEAgLTM4LDcgKzM4LDcgQEAKKyAvLyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAKKyAjaWYgIWRlZmluZWQoU1RSX05PX1dJTjMyX0xJQlMpICYmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX09wZW5CU0RfXykgJiYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCistCisrI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaWZuZGVmIF9XSU4zMgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliZ3Vlc3RsaWIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliZ3Vlc3RsaWIvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYmd1ZXN0bGliL01ha2VmaWxlLmFtCitAQCAtMjIsNiArMjIsNyBAQCBBTV9DRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUKKyAKKyBsaWJndWVzdGxpYl9sYV9MSUJBREQgPQorIGxpYmd1ZXN0bGliX2xhX0xJQkFERCArPSBAVk1UT09MU19MSUJTQAorK2xpYmd1ZXN0bGliX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKyAKKyBsaWJndWVzdGxpYl9sYV9TT1VSQ0VTID0KKyBsaWJndWVzdGxpYl9sYV9TT1VSQ0VTICs9IGd1ZXN0bGliVjNfeGRyLmMKK0BAIC01Niw2ICs1Nyw3IEBAIENGTEFHUyArPSAtV25vLXVudXNlZAorIGxpYmd1ZXN0bGliX2xhX0NQUEZMQUdTID0KKyBsaWJndWVzdGxpYl9sYV9DUFBGTEFHUyArPSAtRFZNVE9PTFNfVVNFX0dMSUIKKyBsaWJndWVzdGxpYl9sYV9DUFBGTEFHUyArPSBAR0xJQjJfQ1BQRkxBR1NACisrbGliZ3Vlc3RsaWJfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorIAorIEVYVFJBX0RJU1QgPSB2bWd1ZXN0bGliLnBjLmluCisgCitJbmRleDogb3Blbi12bS10b29scy9ycGN0b29sL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3JwY3Rvb2wvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvTWFrZWZpbGUuYW0KK0BAIC0xNywxMCArMTcsMTMgQEAKKyAKKyBiaW5fUFJPR1JBTVMgPSB2bXdhcmUtcnBjdG9vbAorIAorK3Ztd2FyZV9ycGN0b29sX0NGTEFHUz0gQExJQlRJUlBDX0xJQlNACisrCisgdm13YXJlX3JwY3Rvb2xfU09VUkNFUyA9Cisgdm13YXJlX3JwY3Rvb2xfU09VUkNFUyArPSBycGN0b29sLmMKKyAKKyB2bXdhcmVfcnBjdG9vbF9MREFERCA9Cisrdm13YXJlX3JwY3Rvb2xfTERBREQgKz0gQExJQlRJUlBDX0xJQlNACisgdm13YXJlX3JwY3Rvb2xfTERBREQgKz0gLi4vbGliL3JwY091dC9saWJScGNPdXQubGEKKyB2bXdhcmVfcnBjdG9vbF9MREFERCArPSAuLi9saWIvbWVzc2FnZS9saWJNZXNzYWdlLmxhCisgdm13YXJlX3JwY3Rvb2xfTERBREQgKz0gLi4vbGliL2JhY2tkb29yL2xpYkJhY2tkb29yLmxhCitJbmRleDogb3Blbi12bS10b29scy9ycGN0b29sL3JwY3Rvb2wuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9ycGN0b29sL3JwY3Rvb2wuYworKysrIG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9ycGN0b29sLmMKK0BAIC0yMyw2ICsyMyw4IEBACisgICovCisgCisgI2lmbmRlZiBfV0lOMzIKKysjZGVmaW5lIF9HTlVfU09VUkNFCisrI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlICJzaWdQb3NpeFJlZ3MuaCIKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CitJbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvTWFrZWZpbGUuYW0KK0BAIC0yMyw2ICsyMyw3IEBAIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmRuZGNwLmxhCisgbGliZG5kY3BfbGFfQ1BQRkxBR1MgPQorIGxpYmRuZGNwX2xhX0NQUEZMQUdTICs9IEBHVEtfQ1BQRkxBR1NACisgbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gQFBMVUdJTl9DUFBGTEFHU0AKKytsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisgbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvZG5kCisgbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvZG5kR3Vlc3QKKyBsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2Rpcikvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9zdHJpbmd4eAorQEAgLTQ0LDYgKzQ1LDcgQEAgbGliZG5kY3BfbGFfTElCQUREICs9IEBHVEtfTElCU0AKKyBsaWJkbmRjcF9sYV9MSUJBREQgKz0gQEdUS01NX0xJQlNACisgbGliZG5kY3BfbGFfTElCQUREICs9IEBWTVRPT0xTX0xJQlNACisgbGliZG5kY3BfbGFfTElCQUREICs9IEBIR0ZTX0xJQlNACisrbGliZG5kY3BfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorIGxpYmRuZGNwX2xhX0xJQkFERCArPSAkKHRvcF9idWlsZGRpcikvbGliL2hnZnNVcmkvaGdmc1VyaVBvc2l4LmxvCisgCisgbGliZG5kY3BfbGFfU09VUkNFUyA9CitJbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2d1ZXN0SW5mby9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL2d1ZXN0SW5mby9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ndWVzdEluZm8vTWFrZWZpbGUuYW0KK0BAIC0yMiw2ICsyMiw3IEBAIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmd1ZXN0SW5mby5sYQorIAorIGxpYmd1ZXN0SW5mb19sYV9DUFBGTEFHUyA9CisgbGliZ3Vlc3RJbmZvX2xhX0NQUEZMQUdTICs9IEBQTFVHSU5fQ1BQRkxBR1NACisrbGliZ3Vlc3RJbmZvX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyAKKyBsaWJndWVzdEluZm9fbGFfTERGTEFHUyA9CisgbGliZ3Vlc3RJbmZvX2xhX0xERkxBR1MgKz0gQFBMVUdJTl9MREZMQUdTQAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9yZXNvbHV0aW9uU2V0L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvcmVzb2x1dGlvblNldC9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9yZXNvbHV0aW9uU2V0L01ha2VmaWxlLmFtCitAQCAtMjEsNiArMjEsNyBAQCBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJyZXNvbHV0aW9uU2V0LmxhCisgbGlicmVzb2x1dGlvblNldF9sYV9DUFBGTEFHUyA9CisgbGlicmVzb2x1dGlvblNldF9sYV9DUFBGTEFHUyArPSBAR1RLX0NQUEZMQUdTQAorIGxpYnJlc29sdXRpb25TZXRfbGFfQ1BQRkxBR1MgKz0gQFBMVUdJTl9DUFBGTEFHU0AKKytsaWJyZXNvbHV0aW9uU2V0X2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyBsaWJyZXNvbHV0aW9uU2V0X2xhX0NQUEZMQUdTICs9IC1EUkVTT0xVVElPTl9YMTEKKyAKKyBsaWJyZXNvbHV0aW9uU2V0X2xhX0xERkxBR1MgPQorQEAgLTMwLDYgKzMxLDcgQEAgbGlicmVzb2x1dGlvblNldF9sYV9MSUJBREQgPQorIGxpYnJlc29sdXRpb25TZXRfbGFfTElCQUREICs9IEBDT01NT05fWExJQlNACisgbGlicmVzb2x1dGlvblNldF9sYV9MSUJBREQgKz0gQEdUS19MSUJTQAorIGxpYnJlc29sdXRpb25TZXRfbGFfTElCQUREICs9IEBWTVRPT0xTX0xJQlNACisrbGlicmVzb2x1dGlvblNldF9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisgCisgbGlicmVzb2x1dGlvblNldF9sYV9TT1VSQ0VTID0KKyBsaWJyZXNvbHV0aW9uU2V0X2xhX1NPVVJDRVMgKz0gbGlidm13YXJlY3RybC5jCitJbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92aXgvTWFrZWZpbGUuYW0KK0BAIC0yMCw2ICsyMCw3IEBAIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYnZpeC5sYQorIAorIGxpYnZpeF9sYV9DUFBGTEFHUyA9CisgbGlidml4X2xhX0NQUEZMQUdTICs9IEBQTFVHSU5fQ1BQRkxBR1NACisrbGlidml4X2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyBsaWJ2aXhfbGFfQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL3ZnYXV0aC9wdWJsaWMKKyAKKyBsaWJ2aXhfbGFfTERGTEFHUyA9CitAQCAtMjksNiArMzAsNyBAQCBsaWJ2aXhfbGFfTElCQUREID0KKyBsaWJ2aXhfbGFfTElCQUREICs9IEBWSVhfTElCQUREQAorIGxpYnZpeF9sYV9MSUJBREQgKz0gQFZNVE9PTFNfTElCU0AKKyBsaWJ2aXhfbGFfTElCQUREICs9IEBIR0ZTX0xJQlNACisrbGlidml4X2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKyBsaWJ2aXhfbGFfTElCQUREICs9ICQodG9wX2J1aWxkZGlyKS9saWIvYXV0aC9saWJBdXRoLmxhCisgbGlidml4X2xhX0xJQkFERCArPSAkKHRvcF9idWlsZGRpcikvbGliL2ZvdW5kcnlNc2cvbGliRm91bmRyeU1zZy5sYQorIGxpYnZpeF9sYV9MSUJBREQgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYi9pbXBlcnNvbmF0ZS9saWJJbXBlcnNvbmF0ZS5sYQorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92bWJhY2t1cC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL3ZtYmFja3VwL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZtYmFja3VwL01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsNyBAQCBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJ2bWJhY2t1cC5sYQorIAorIGxpYnZtYmFja3VwX2xhX0NQUEZMQUdTID0KKyBsaWJ2bWJhY2t1cF9sYV9DUFBGTEFHUyArPSBAUExVR0lOX0NQUEZMQUdTQAorK2xpYnZtYmFja3VwX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyAKKyBsaWJ2bWJhY2t1cF9sYV9MREZMQUdTID0KKyBsaWJ2bWJhY2t1cF9sYV9MREZMQUdTICs9IEBQTFVHSU5fTERGTEFHU0AKK0BAIC0yNyw2ICsyOCw3IEBAIGxpYnZtYmFja3VwX2xhX0xERkxBR1MgKz0gQFBMVUdJTl9MREZMQUcKKyBsaWJ2bWJhY2t1cF9sYV9MSUJBREQgPQorIGxpYnZtYmFja3VwX2xhX0xJQkFERCArPSBAR09CSkVDVF9MSUJTQAorIGxpYnZtYmFja3VwX2xhX0xJQkFERCArPSBAVk1UT09MU19MSUJTQAorK2xpYnZtYmFja3VwX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKyAKKyBsaWJ2bWJhY2t1cF9sYV9TT1VSQ0VTID0KKyBsaWJ2bWJhY2t1cF9sYV9TT1VSQ0VTICs9IG51bGxQcm92aWRlci5jCitJbmRleDogb3Blbi12bS10b29scy90b29sYm94L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3Rvb2xib3gvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3Rvb2xib3gvTWFrZWZpbGUuYW0KK0BAIC0yMCw5ICsyMCwxMSBAQCBiaW5fUFJPR1JBTVMgPSB2bXdhcmUtdG9vbGJveC1jbWQKKyB2bXdhcmVfdG9vbGJveF9jbWRfTERBREQgPQorIHZtd2FyZV90b29sYm94X2NtZF9MREFERCArPSAuLi9saWJndWVzdGxpYi9saWJndWVzdGxpYi5sYQorIHZtd2FyZV90b29sYm94X2NtZF9MREFERCArPSBAVk1UT09MU19MSUJTQAorK3Ztd2FyZV90b29sYm94X2NtZF9MREFERCArPSBATElCVElSUENfTElCU0AKKyAKKyB2bXdhcmVfdG9vbGJveF9jbWRfQ1BQRkxBR1MgPQorIHZtd2FyZV90b29sYm94X2NtZF9DUFBGTEFHUyArPSBAVk1UT09MU19DUFBGTEFHU0AKKyt2bXdhcmVfdG9vbGJveF9jbWRfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorIAorIHZtd2FyZV90b29sYm94X2NtZF9TT1VSQ0VTID0KKyB2bXdhcmVfdG9vbGJveF9jbWRfU09VUkNFUyArPSB0b29sYm94LWNtZC5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDEwLWdudS11Y29udGV4dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMTAtZ251LXVjb250ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YmVhYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDEwLWdudS11Y29udGV4dC5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIDI3NDQyZTJkZDI4N2QzOTNkN2IzZjhiZjE2NGE4ODdhZmZlZjg0ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CitEYXRlOiBXZWQsIDE4IE5vdiAyMDE1IDEwOjI3OjUxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIGdudS11Y29udGV4dAorCistLS0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3NpZ1Bvc2l4UmVncy5oIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitJbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9zaWdQb3NpeFJlZ3MuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9zaWdQb3NpeFJlZ3MuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvc2lnUG9zaXhSZWdzLmgKK0BAIC0zMyw3ICszMyw3IEBACisgI2luY2x1ZGUgImluY2x1ZGVDaGVjay5oIgorIAorIAorLSNpZiBfX2xpbnV4X18gICAgICAgICAvLyBXZSBuZWVkIHRoZSBSRUdfZm9vIG9mZnNldHMgaW4gdGhlIGdyZWdzZXRfdDsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pIC8vIFdlIG5lZWQgdGhlIFJFR19mb28gb2Zmc2V0cyBpbiB0aGUgZ3JlZ3NldF90OworICMgIGRlZmluZSBfR05VX1NPVVJDRSAvLyBfR05VX1NPVVJDRSBtYXBzIHRvIF9fVVNFX0dOVQorIAorIC8qIEFuZCwgdGhlIFJFR19mb28gZGVmaW5pdGlvbnMgY29uZmxpY3Qgd2l0aCBvdXIgb3duIGluIHg4Ni5oICovCitAQCAtNzMsNyArNzMsNyBAQAorICNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KKyAjZW5kaWYKKyAKKy0jaWYgX19saW51eF9fCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICMgIGlmIGRlZmluZWQoX194ODZfNjRfXykKKyAjICAgIHVuZGVmIFJFR19SQVgKKyAjICAgIHVuZGVmIFJFR19SQlgKK0BAIC0xOTksNyArMTk5LDcgQEAKKyAjZGVmaW5lIFNDX0VTUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5tY19lc3ApCisgI2RlZmluZSBTQ19FSVAodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQubWNfZWlwKQorICNlbmRpZgorLSNlbGlmIGRlZmluZWQgKHN1bikKKysjZWxpZiAhZGVmaW5lZCAoX19HTElCQ19fKQorICNpZmRlZiBfX3g4Nl82NF9fCisgI2RlZmluZSBTQ19FQVgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1JBWF0pCisgI2RlZmluZSBTQ19FQlgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1JCWF0pCitAQCAtMjE5LDE1ICsyMTksMTUgQEAKKyAjZGVmaW5lIFNDX1IxNCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUjE0XSkKKyAjZGVmaW5lIFNDX1IxNSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUjE1XSkKKyAjZWxzZQorLSNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VBWF0pCistI2RlZmluZSBTQ19FQlgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRUJYXSkKKy0jZGVmaW5lIFNDX0VDWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFQ1hdKQorLSNkZWZpbmUgU0NfRURYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VEWF0pCistI2RlZmluZSBTQ19FREkodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRURJXSkKKy0jZGVmaW5lIFNDX0VTSSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFU0ldKQorLSNkZWZpbmUgU0NfRUJQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VCUF0pCistI2RlZmluZSBTQ19FU1AodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRVNQXSkKKy0jZGVmaW5lIFNDX0VJUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFSVBdKQorKyNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQVhdKQorKyNkZWZpbmUgU0NfRUJYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQlhdKQorKyNkZWZpbmUgU0NfRUNYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQ1hdKQorKyNkZWZpbmUgU0NfRURYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FRFhdKQorKyNkZWZpbmUgU0NfRURJKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FREldKQorKyNkZWZpbmUgU0NfRVNJKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FU0ldKQorKyNkZWZpbmUgU0NfRUJQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQlBdKQorKyNkZWZpbmUgU0NfRVNQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FU1BdKQorKyNkZWZpbmUgU0NfRUlQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FSVBdKQorICNlbmRpZgorICNlbGlmIGRlZmluZWQoQU5EUk9JRF9YODYpCisgI2RlZmluZSBTQ19FQVgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZWF4KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAxMS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN5cy1zdGF0LmgtaW5jbHVkZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMTEtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zeXMtc3RhdC5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3MjIzOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMTEtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zeXMtc3RhdC5oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA5NWM2MTg0ZDlmZjcwYTQ3YzQxNzY4ODUwOTIzYTk2ZGU5ZTU0NGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAxMDo0MTowMSArMDAwMAorU3ViamVjdDogW1BBVENIIDExLzExXSBVc2UgY29uZmlndXJlIHRlc3QgZm9yIHN5cy9zdGF0LmggaW5jbHVkZQorCitUaGlzIGlzIG5lZWRlZCBmb3IgbXVzbCBsaWJjLgorCitTaWduZWQtb2ZmLWJ5OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CistLS0KKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L3ZpeFRvb2xzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L3ZpeFRvb2xzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy92aXgvdml4VG9vbHMuYworKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92aXgvdml4VG9vbHMuYworQEAgLTY2LDcgKzY2LDcgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoc3VuKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKysjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2VuZGlmCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlOGU5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzXzEwLjEuNS5iYgpAQCAtMCwwICsxLDEwMyBAQAorIyBUaGlzIHJlY2lwZSBpcyBtb2RpZmllZCBmcm9tIHRoZSByZWNpcGUgb3JpZ2luYWxseSBmb3VuZCBpbiB0aGUgT3Blbi1Td2l0Y2gKKyMgcmVwb3NpdG9yeToKKyMKKyMgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc3dpdGNoL29wcy1idWlsZAorIyB5b2N0by9vcGVuc3dpdGNoL21ldGEtZm9zcy1vcGVuc3dpdGNoL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4wLjUuYmIKKyMgQ29tbWl0IDkwMDhkZTJkOGUxMDBmM2Y4NjhjNjY3NjU3NDJiY2E5ZmE5OGYzZjkKKyMKKyMgVGhlIHJlY2lwZSBwYWNrYWdpbmcgaGFzIGJlZW4gcmVsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm9yIGluY2x1c2lvbgorIyBpbiBtZXRhLW9wZW5lbWJlZGRlZCBieSBhZ3JlZW1lbnQgb2YgdGhlIGF1dGhvciAoRGllZ28gRG9tcGUpLgorIworCitTVU1NQVJZID0gIlRvb2xzIHRvIGVuaGFuY2UgVk1XYXJlIGd1ZXN0IGludGVncmF0aW9uIGFuZCBwZXJmb3JtYW5jZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS92bXdhcmUvb3Blbi12bS10b29scyIKK1NFQ1RJT04gPSAidm13YXJlLXRvb2xzIgorCitMSUNFTlNFID0gIkxHUEwtMi4wICYgR1BMLTIuMCAmIEJTRCAmIENEREwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY2YmE0Y2I0ZmMwMTc2ODJjOTVlZmMzMDA0MTBlNzkiCitMSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bWJsb2NrID0gIkJTRCIKK0xJQ0VOU0VfbW9kdWxlcy9mcmVlYnNkL3ZtbWVtY3RsID0gIkdQTC0yLjAiCitMSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bXhuZXQgPSAiR1BMLTIuMCIKK0xJQ0VOU0VfbW9kdWxlcy9saW51eCA9ICJHUEwtMi4wIgorTElDRU5TRV9tb2R1bGVzL3NvbGFyaXMgPSAiQ0RETC0xLjAiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92bXdhcmUvb3Blbi12bS10b29scy5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vdG9vbHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly92bXRvb2xzZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFkZC1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1hc3N1bXB0aW9ucy1hYm91dC1nbGliYy1iZWluZy1vbmx5LWxpYmMtaW1wbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLW9ic29sZXRlLXN5cy1wb2xsLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkZC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtYW5kLVduby1lcnJvci1hZGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN0cnVjdC10aW1lc3BlYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1kZWZpbml0aW9uLW9mLUFMTFBFUk1TLWFuZC1BQ0NFU1NQRVJNUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS1jb25maWd1cmUtdG8tdGVzdC1mb3ItZmVhdHVyZS1pbnN0ZWFkLW9mLXBsYXRmb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC11c2UtcG9zaXgtc3RyZXJyb3Jfci11bmxlc3MtZ251LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zeXMtc3RhdC5oLWluY2x1ZGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1BZGQtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1zeXN0ZW0tbGlidGlycGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1nbnUtdWNvbnRleHQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiODU0YzBiYjM3NDYxMmY3ZTYzM2I0NDhjYTI3M2Y5NzBmMTU0NDU4YiIKKworUyA9ICIke1dPUktESVJ9L2dpdC9vcGVuLXZtLXRvb2xzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSB1dGlsLWxpbnV4IGxpYmRuZXQgcHJvY3BzIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKKworIyBvcGVuLXZtLXRvb2xzIGlzIHN1cHBvcnRlZCBvbmx5IG9uIHg4Ni4KK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qKS1saW51eCcKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInZtdG9vbHNkLnNlcnZpY2UiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtaWN1IC0tZGlzYWJsZS1tdWx0aW1vbiAtLWRpc2FibGUtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXRlc3RzIC0td2l0aG91dC1ndGttbSAtLXdpdGhvdXQteGVyY2VzIC0td2l0aG91dC1wYW0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncmFiYml0bXFwcm94eSAtLWRpc2FibGUtdmdhdXRoIC0tZGlzYWJsZS1kZXBsb3lwa2cgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1yb290LXByaXZpbGVnZXMgLS13aXRob3V0LWtlcm5lbC1tb2R1bGVzIgorCitOT19YMTFfRkxBR1MgPSAiLS13aXRob3V0LXggLS13aXRob3V0LWd0azIgLS13aXRob3V0LWd0azMiCitYMTFfREVQRU5EUyA9ICJsaWJ4ZXh0IGxpYnhpIGxpYnhyZW5kZXIgbGlieHJhbmRyIGxpYnh0c3QgZ3RrKyBnZGstcGl4YnVmIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwke05PX1gxMV9GTEFHU30sJHtYMTFfREVQRU5EU30iCisKKyMgZnVzZSBnZXRzIGltcGxpY2l0bHkgZGV0ZWN0ZWQ7IHRoZXJlIGlzIG5vIC0td2l0aG91dC1mdXNlIG9wdGlvbi4KK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAiLCxmdXNlIgorCitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiCitGSUxFU18ke1BOfSArPSAiXAorICAgICR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvdm1zdmMvbGliKi5zbyBcCisgICAgJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy9jb21tb24vbGliKi5zbyBcCisgICAgJHtzeXNjb25mZGlyfS92bXdhcmUtdG9vbHMvdG9vbHMuY29uZiBcCisgICAgIgorRklMRVNfJHtQTn0tbG9jYWxlICs9ICIke2RhdGFkaXJ9L29wZW4tdm0tdG9vbHMvbWVzc2FnZXMiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvY29tbW9uL2xpYioubGEiCitGSUxFU18ke1BOfS1kYmcgKz0gIlwKKyAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL2NvbW1vbi8uZGVidWcgXAorICAgICR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvdm1zdmMvLmRlYnVnIFwKKyAgICAiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS92bXdhcmUtdG9vbHMvdG9vbHMuY29uZiIKKworUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eCBsaWJkbmV0IGZ1c2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGxuIC1zZiAke3NiaW5kaXJ9L21vdW50LnZtaGdmcyAke0R9L3NiaW4vbW91bnQudm1oZ2ZzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAke0R9JHtzeXNjb25mZGlyfS92bXdhcmUtdG9vbHMKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9Lyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rvb2xzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IENVU1RPTV9ETkVUX05BTUU9ZG5ldAorICAgIGV4cG9ydCBDVVNUT01fRE5FVF9MSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0vbGliZG5ldC5zbworfQorCitweXRob24oKSB7CisgICAgaWYgJ25ldHdvcmtpbmctbGF5ZXInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKSBvciBcCisJJ2ZpbGVzeXN0ZW1zLWxheWVyJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtbmV0d29ya2luZyBhbmQgbWV0YS1maWxlc3lzdGVtcyB0byBiZSBwcmVzZW50LicpCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN0L29wZW5jdF8wLjYuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCmluZGV4IDBmNTU2OGMuLmM3ZDcyMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN0L29wZW5jdF8wLjYuMjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFN1bW1hbnJ5ID0gIk1pZGRsZXdhcmUgZnJhbWV3b3JrIGZvciBzbWFydCBjYXJkIHRlcm1pbmFscyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuU0Mvb3BlbmN0L3dpa2kiCiBERVNDUklQVElPTiA9ICIgXAogT3BlbkNUIGltcGxlbWVudHMgZHJpdmVycyBmb3Igc2V2ZXJhbCBzbWFydCBjYXJkIHJlYWRlcnMuIFwKIEl0IGNvbWVzIGFzIGRyaXZlciBpbiBpZmRoYW5kbGVyIGZvcm1hdCBmb3IgUEMvU0MtTGl0ZSwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LXNhbXBsZXNfMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LXNhbXBsZXNfMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDcxODRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi1zYW1wbGVzXzIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbmN2IDogVGhlIE9wZW4gQ29tcHV0ZXIgVmlzaW9uIExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vd2lraS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkJTRCIKLQotREVQRU5EUyA9ICJvcGVuY3YiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luY2x1ZGUvb3BlbmN2Mi9vcGVuY3YuaHBwO2VuZGxpbmU9NDE7bWQ1PTZkNjkwZDg0ODhhNmZjYTdhMmMxOTI5MzI0NjZiYjE0IFwKLSIKLVNSQ1JFViA9ICI2ZmFlMDdiYTg4NjdiOGZkMmM1MzM0NGE3NzRhYWI2NjlhZmE3YzVlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0l0c2Vlei9vcGVuY3YuZ2l0O2JyYW5jaD0yLjQgXAotICAgICAgICAgICIKLVBWID0gIjIuNC4zK2dpdCR7U1JDUFZ9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsKCkgewotICAgIGNkIHNhbXBsZXMvYwotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcwotCi0gICAgY3AgKiAke0R9LyR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMgfHwgdHJ1ZQotCi0gICAgZm9yIGkgaW4gKi5jOyBkbwotICAgICAgICBlY2hvICJjb21waWxpbmcgJGkiCi0gICAgICAgICR7Q1hYfSAke0NGTEFHU30gJHtMREZMQUdTfSAtZ2dkYiBgcGtnLWNvbmZpZyAtLWNmbGFncyBvcGVuY3ZgIC1vIGBiYXNlbmFtZSAkaSAuY2AgJGkgYHBrZy1jb25maWcgLS1saWJzIG9wZW5jdmAgfHwgdHJ1ZQotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgYGJhc2VuYW1lICRpIC5jYCAke0R9LyR7YmluZGlyfSB8fCB0cnVlCi0gICAgICAgIHJtICR7RH0vJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcy9gYmFzZW5hbWUgJGkgLmNgIHx8IHRydWUKLSAgICBkb25lCi0gICAgZm9yIGkgaW4gKi5jcHA7IGRvCi0gICAgICAgIGVjaG8gImNvbXBpbGluZyAkaSIKLSAgICAgICAgJHtDWFh9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1nZ2RiIGBwa2ctY29uZmlnIC0tY2ZsYWdzIG9wZW5jdmAgLW8gYGJhc2VuYW1lICRpIC5jcHBgICRpIGBwa2ctY29uZmlnIC0tbGlicyBvcGVuY3ZgIHx8IHRydWUKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGBiYXNlbmFtZSAkaSAuY3BwYCAke0R9LyR7YmluZGlyfSB8fCB0cnVlCi0gICAgICAgIHJtICR7RH0vJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcy9gYmFzZW5hbWUgJGkgLmNwcGAgfHwgdHJ1ZQotICAgIGRvbmUKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L29wZW5jdi9zYW1wbGVzLyouYyogJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcy8qLnZjcCogJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcy9idWlsZCoiCi1GSUxFU18ke1BOfSArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vb3BlbmN2IgotCi1QTkJMQUNLTElTVFtvcGVuY3Ytc2FtcGxlc10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgb3BlbmN2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS0zcmRwYXJ0eS1pcHBpY3YtVXNlLXByZS1kb3dubG9hZGVkLWlwcC5wYXRjaAppbmRleCAxMDc3ZDA1Li40ZDc2YWQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS0zcmRwYXJ0eS1pcHBpY3YtVXNlLXByZS1kb3dubG9hZGVkLWlwcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS0zcmRwYXJ0eS1pcHBpY3YtVXNlLXByZS1kb3dubG9hZGVkLWlwcC5wYXRjaApAQCAtMSwyOCArMSwzOCBAQAotRnJvbSAwNDlmOTMxMjA3NjMxYWE1NGFmNTVhMjkxNzMxOGQwMzJiMmVmM2ZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0ODAxYTA1NzczMDYzMjIyNTMzN2Q3ZjZkMjZiOTMzNWU2YjliMDc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIE1hciAyMDE2IDAwOjIwOjE1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIDNyZHBhcnR5L2lwcGljdjogVXNlIHByZS1kb3dubG9hZGVkIGlwcAogCiBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IElzbW8gUHV1c3RpbmVuIDxpc21vLnB1dXN0aW5lbkBpbnRlbC5jb20+CiAtLS0KLSAzcmRwYXJ0eS9pcHBpY3YvZG93bmxvYWRlci5jbWFrZSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisgM3JkcGFydHkvaXBwaWN2L2lwcGljdi5jbWFrZSB8IDE1ICstLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9pcHBpY3YvZG93bmxvYWRlci5jbWFrZSBiLzNyZHBhcnR5L2lwcGljdi9kb3dubG9hZGVyLmNtYWtlCi1pbmRleCBhNjAxNmRiZTEwYmMuLmFmNDA2MmM4ZTk1ZSAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2lwcGljdi9kb3dubG9hZGVyLmNtYWtlCi0rKysgYi8zcmRwYXJ0eS9pcHBpY3YvZG93bmxvYWRlci5jbWFrZQotQEAgLTMxLDggKzMxLDEwIEBAIGZ1bmN0aW9uKF9pY3ZfZG93bmxvYWRlcikKLSAgICAgcmV0dXJuKCkgIyBOb3Qgc3VwcG9ydGVkCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvaXBwaWN2L2lwcGljdi5jbWFrZSBiLzNyZHBhcnR5L2lwcGljdi9pcHBpY3YuY21ha2UKK2luZGV4IGQ2MDFkYTRiYi4uZjZmYzEwOThjIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvaXBwaWN2L2lwcGljdi5jbWFrZQorKysrIGIvM3JkcGFydHkvaXBwaWN2L2lwcGljdi5jbWFrZQorQEAgLTM5LDE4ICszOSw1IEBAIGZ1bmN0aW9uKGRvd25sb2FkX2lwcGljdiByb290X3ZhcikKICAgIGVuZGlmKCkKICAKLSsgIGlmKE5PVCBERUZJTkVEIE9QRU5DVl9JQ1ZfUEFUSCkKLSAgIHNldChPUEVOQ1ZfSUNWX1VOUEFDS19QQVRIICIke0NNQUtFX0JJTkFSWV9ESVJ9LzNyZHBhcnR5L2lwcGljdiIpCi0gICBzZXQoT1BFTkNWX0lDVl9QQVRIICIke09QRU5DVl9JQ1ZfVU5QQUNLX1BBVEh9JHtPUEVOQ1ZfSUNWX1BBQ0tBR0VfU1VCRElSfSIpCi0rICBlbmRpZigpCi0gCi0gICBpZihERUZJTkVEIE9QRU5DVl9JQ1ZfUEFDS0FHRV9ET1dOTE9BREVECi0gICAgICAgIEFORCBPUEVOQ1ZfSUNWX1BBQ0tBR0VfRE9XTkxPQURFRCBTVFJFUVVBTCBPUEVOQ1ZfSUNWX1BBQ0tBR0VfSEFTSAorICAgc2V0KFRIRV9ST09UICIke09wZW5DVl9CSU5BUllfRElSfS8zcmRwYXJ0eS9pcHBpY3YiKQorLSAgb2N2X2Rvd25sb2FkKEZJTEVOQU1FICR7T1BFTkNWX0lDVl9OQU1FfQorLSAgICAgICAgICAgICAgIEhBU0ggJHtPUEVOQ1ZfSUNWX0hBU0h9CistICAgICAgICAgICAgICAgVVJMCistICAgICAgICAgICAgICAgICAiJHtPUEVOQ1ZfSVBQSUNWX1VSTH0iCistICAgICAgICAgICAgICAgICAiJEVOVntPUEVOQ1ZfSVBQSUNWX1VSTH0iCistICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkvJHtJUFBJQ1ZfQ09NTUlUfS9pcHBpY3YvIgorLSAgICAgICAgICAgICAgIERFU1RJTkFUSU9OX0RJUiAiJHtUSEVfUk9PVH0iCistICAgICAgICAgICAgICAgSUQgSVBQSUNWCistICAgICAgICAgICAgICAgU1RBVFVTIHJlcworLSAgICAgICAgICAgICAgIFVOUEFDSyBSRUxBVElWRV9VUkwpCistCistICBpZihyZXMpCistICAgIHNldCgke3Jvb3RfdmFyfSAiJHtUSEVfUk9PVH0vJHtPUEVOQ1ZfSUNWX1BBQ0tBR0VfU1VCRElSfSIgUEFSRU5UX1NDT1BFKQorLSAgZW5kaWYoKQorKyAgc2V0KCR7cm9vdF92YXJ9ICIke1RIRV9ST09UfS8ke09QRU5DVl9JQ1ZfUEFDS0FHRV9TVUJESVJ9IiBQQVJFTlRfU0NPUEUpCisgZW5kZnVuY3Rpb24oKQogLS0gCi0yLjguMC5yYzMKKzIuMTMuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1Eb250LXVzZS1pc3lzdGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtRG9udC11c2UtaXN5c3RlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGQ0OGZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtRG9udC11c2UtaXN5c3RlbS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDJiYzZiYjk4MzFkMDdmMDM1ZmVhNzRlYTc0NWNlYTQzZGQ1ZjllZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA5IFNlcCAyMDE3IDIzOjQ4OjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbnQgdXNlIGlzeXN0ZW0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjbWFrZS9PcGVuQ1ZQQ0hTdXBwb3J0LmNtYWtlIHwgMTAgKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NtYWtlL09wZW5DVlBDSFN1cHBvcnQuY21ha2UKKysrKyBnaXQvY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZQorQEAgLTE3LDcgKzE3LDggQEAgSUYoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgICBJRihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTICI0LjIuMCIpCisgICAgICAgICBTRVQoUENIU3VwcG9ydF9GT1VORCBUUlVFKQorICAgICBFTkRJRigpCistCisrICAgIFNFVChDTUFLRV9JTkNMVURFX1NZU1RFTV9GTEFHX0MgIi1JIikKKysgICAgU0VUKENNQUtFX0lOQ0xVREVfU1lTVEVNX0ZMQUdfQ1hYICItSSIpCisgICAgIFNFVChfUENIX2luY2x1ZGVfcHJlZml4ICItSSIpCisgICAgIFNFVChfUENIX2lzeXN0ZW1fcHJlZml4ICItaXN5c3RlbSIpCisgICAgIFNFVChfUENIX2RlZmluZV9wcmVmaXggIi1EIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWVjNDFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDQ5ZDFmN2M0MGE1ZDA5N2YyMzY3MTMxODA0NWFjNTRiYzA3ODQ2Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLURhdGU6IFdlZCwgMTkgQXByIDIwMTcgMDM6MTE6MzcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZSBvcGVuY3YtdHMgY3JlYXRlIHNoYXJlIGxpYnJhcnkgaW50ZWFkIG9mIHN0YXRpYy4KLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQgYi9tb2R1bGVzL3RzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiYjU2ZGEyLi43YmI0Y2U5IDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dAotQEAgLTQsNyArNCw3IEBAIGlmKElPUykKLSAgIG9jdl9tb2R1bGVfZGlzYWJsZSh0cykKLSBlbmRpZigpCi0gCi0tc2V0KE9QRU5DVl9NT0RVTEVfVFlQRSBTVEFUSUMpCi0rI3NldChPUEVOQ1ZfTU9EVUxFX1RZUEUgU1RBVElDKQotIHNldChPUEVOQ1ZfTU9EVUxFX0lTX1BBUlRfT0ZfV09STEQgRkFMU0UpCi0gCi0gb2N2X3dhcm5pbmdzX2Rpc2FibGUoQ01BS0VfQ1hYX0ZMQUdTIC1XdW5kZWYpCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtUmV2ZXJ0LWN1ZGEtZml4LWZwMTYtY29tcGlsYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1SZXZlcnQtY3VkYS1maXgtZnAxNi1jb21waWxhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA3ZDc5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1SZXZlcnQtY3VkYS1maXgtZnAxNi1jb21waWxhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gNjlmOTcwNzY3ODE5MGY2YTA5NDhhNTQ3ZGNlOTQ4MjUxZjk3MjY3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjYgQXByIDIwMTcgMTQ6NTc6MzAgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJldmVydCAiY3VkYTogZml4IGZwMTYgY29tcGlsYXRpb24iCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgMTJlMDA4MjdiZTQwNTc2YjY4NmVhNDQzOGE2ZTZlZjg1MjA4NzQzZC4KLS0tLQotIG1vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaCBiL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oCi1pbmRleCA2OTliMTY2Li5lZmMyNGNhIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmgKLSsrKyBiL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oCi1AQCAtMzAzLDggKzMwMyw3IEBAIGVudW0gQ3B1RmVhdHVyZXMgewotICNkZWZpbmUgQ1ZfMlBJIDYuMjgzMTg1MzA3MTc5NTg2NDc2OTI1Mjg2NzY2NTU5Ci0gI2RlZmluZSBDVl9MT0cyIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTgKLSAKLS0jaWYgZGVmaW5lZCBfX0FSTV9GUDE2X0ZPUk1BVF9JRUVFIFwKLS0gICAgJiYgIWRlZmluZWQgX19DVURBQ0NfXwotKyNpZiBkZWZpbmVkIChfX0FSTV9GUDE2X0ZPUk1BVF9JRUVFKQotICMgIGRlZmluZSBDVl9GUDE2X1RZUEUgMQotICNlbHNlCi0gIyAgZGVmaW5lIENWX0ZQMTZfVFlQRSAwCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMGFiODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIGRiMWQ5Y2M4MmI2OGY2NTkzMzYwZDY2ZWY0MGNiNmIwZmMzNzdlNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDE5IE1heSAyMDE3IDA0OjI3OjUwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRvIGZpeCBlcnJvcnMgYXMgZm9sbG93aW5nOgotCi0idGVzdF9tYWluLmNwcDo0NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGFyc2VDdXN0b21PcHRpb25zKGludCwgY2hhcioqKSciCi0icGVyZl9hYnMuY3BwOjEzOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdnRlc3Q6OnBhcmFtX3NlZWQnIgotInRlc3Rfc3VwZXJyZXMuY3BwOjI3MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY2hlY2tJcHBTdGF0dXMoKSciCi0KLVNpZ25lZC1vZmYtYnk6IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tLQotIG1vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcCAgICAgICAgfCA0ICsrLS0KLSBtb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCi1pbmRleCBjNTczOTA1Li43ZmY2Y2MxIDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCi0rKysgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy5ocHAKLUBAIC01MzksNyArNTM5LDcgQEAgcHJvdGVjdGVkOgotICAgICB9Ci0gfTsKLSAKLS1leHRlcm4gdWludDY0IHBhcmFtX3NlZWQ7Ci0rQ1ZfRVhQT1JUUyBleHRlcm4gdWludDY0IHBhcmFtX3NlZWQ7Ci0gCi0gc3RydWN0IENWX0VYUE9SVFMgRGVmYXVsdFJuZ0F1dG8KLSB7Ci1AQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgZHVtcE9wZW5DTERldmljZSgpOwotICNkZWZpbmUgVEVTVF9EVU1QX09DTF9JTkZPCi0gI2VuZGlmCi0gCi0tdm9pZCBwYXJzZUN1c3RvbU9wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKLStDVl9FWFBPUlRTIHZvaWQgcGFyc2VDdXN0b21PcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0gCi0gI2RlZmluZSBDVl9URVNUX01BSU4ocmVzb3VyY2VzdWJkaXIsIC4uLikgXAotIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgXAotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCi1pbmRleCAwNWNjYzYzLi44MDc1MDY1IDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcAotKysrIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcAotQEAgLTksNyArOSw3IEBACi0gI2RlZmluZSBPUEVOQ1ZfVFNfRVhUX0hQUAotIAotIG5hbWVzcGFjZSBjdnRlc3QgewotLXZvaWQgY2hlY2tJcHBTdGF0dXMoKTsKLStDVl9FWFBPUlRTIHZvaWQgY2hlY2tJcHBTdGF0dXMoKTsKLSB9Ci0gCi0gI2RlZmluZSBDVl9URVNUX0lOSVQgXAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1Vc2UtX192ZWN0b3ItaW5zdGVhZC1vZi12ZWN0b3ItYXMtc3VnZ2VzdHMtRWlnZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1Vc2UtX192ZWN0b3ItaW5zdGVhZC1vZi12ZWN0b3ItYXMtc3VnZ2VzdHMtRWlnZW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmODA5YmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtVXNlLV9fdmVjdG9yLWluc3RlYWQtb2YtdmVjdG9yLWFzLXN1Z2dlc3RzLUVpZ2VuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA3MTFmMDdhMzRjZWI1MDRlOGY3NWU5Nzg2OTIyMDFlZmE1ODI2OGNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGluYXIgVmFsZWV2IDxkdmFsZWV2QHN1c2UuY29tPgotRGF0ZTogVGh1LCAxNiBKYW4gMjAxNCAyMTo1Mzo0OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBVc2UgX192ZWN0b3IgaW5zdGVhZCBvZiB2ZWN0b3IgYXMgc3VnZ2VzdHMgRWlnZW4KLQotVGhpcyBmaXhlcyBidWlsZCBvbiBQb3dlclBDIHdoZXJlIEVpZ2VuIHVuc2V0cyB2ZWN0b3IsIGJvb2wgYW5kIHBpeGVsCi0KLVNpZ25lZC1vZmYtYnk6IERpbmFyIFZhbGVldiA8ZHZhbGVldkBzdXNlLmNvbT4KLQotVGhpcyBwYXRjaCBpcyBhbHJlYWR5IHBhcnQgb2YgT3BlbkNWIHYzLjAuIFRoZSBwYXRjaCBjYW4gYmUgb2J0YWluZWQKLWZyb206Ci0KLSAgaHR0cHM6Ly9naXRodWIuY29tL0l0c2Vlei9vcGVuY3YvY29tbWl0LzcxMWYwN2EzNGNlYjUwNGU4Zjc1ZTk3ODY5MjIwMWVmYTU4MjY4Y2EucGF0Y2gKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbY29tbWl0IDcxMWYwN2EzNGMsIHBhcnQgb2YgdmVyc2lvbiAzLjBdCi0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzIEJ1bHdhaG4gPGx1a2FzLmJ1bHdhaG5Ab3NzLmJtdy1jYXJpdC5kZT4KLS0tLQotIDNyZHBhcnR5L2luY2x1ZGUvb3BlbmNsLzEuMi9DTC9jbF9wbGF0Zm9ybS5oIHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvaW5jbHVkZS9vcGVuY2wvMS4yL0NML2NsX3BsYXRmb3JtLmggYi8zcmRwYXJ0eS9pbmNsdWRlL29wZW5jbC8xLjIvQ0wvY2xfcGxhdGZvcm0uaAotaW5kZXggZTk0OTQ5YS4uNDJjMzVkNSAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2luY2x1ZGUvb3BlbmNsLzEuMi9DTC9jbF9wbGF0Zm9ybS5oCi0rKysgYi8zcmRwYXJ0eS9pbmNsdWRlL29wZW5jbC8xLjIvQ0wvY2xfcGxhdGZvcm0uaAotQEAgLTMzMiwxMyArMzMyLDEzIEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IGNsX0dMZW51bTsKLSAvKiBEZWZpbmUgYmFzaWMgdmVjdG9yIHR5cGVzICovCi0gI2lmIGRlZmluZWQoIF9fVkVDX18gKQotICAgICNpbmNsdWRlIDxhbHRpdmVjLmg+ICAgLyogbWF5IGJlIG9taXR0ZWQgZGVwZW5kaW5nIG9uIGNvbXBpbGVyLiBBbHRpVmVjIHNwZWMgcHJvdmlkZXMgbm8gd2F5IHRvIGRldGVjdCB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgcmVxdWlyZWQuICovCi0tICAgdHlwZWRlZiB2ZWN0b3IgdW5zaWduZWQgY2hhciAgICAgX19jbF91Y2hhcjE2OwotLSAgIHR5cGVkZWYgdmVjdG9yIHNpZ25lZCBjaGFyICAgICAgIF9fY2xfY2hhcjE2OwotLSAgIHR5cGVkZWYgdmVjdG9yIHVuc2lnbmVkIHNob3J0ICAgIF9fY2xfdXNob3J0ODsKLS0gICB0eXBlZGVmIHZlY3RvciBzaWduZWQgc2hvcnQgICAgICBfX2NsX3Nob3J0ODsKLS0gICB0eXBlZGVmIHZlY3RvciB1bnNpZ25lZCBpbnQgICAgICBfX2NsX3VpbnQ0OwotLSAgIHR5cGVkZWYgdmVjdG9yIHNpZ25lZCBpbnQgICAgICAgIF9fY2xfaW50NDsKLS0gICB0eXBlZGVmIHZlY3RvciBmbG9hdCAgICAgICAgICAgICBfX2NsX2Zsb2F0NDsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIHVuc2lnbmVkIGNoYXIgICAgIF9fY2xfdWNoYXIxNjsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIHNpZ25lZCBjaGFyICAgICAgIF9fY2xfY2hhcjE2OwotKyAgIHR5cGVkZWYgX192ZWN0b3IgdW5zaWduZWQgc2hvcnQgICAgX19jbF91c2hvcnQ4OwotKyAgIHR5cGVkZWYgX192ZWN0b3Igc2lnbmVkIHNob3J0ICAgICAgX19jbF9zaG9ydDg7Ci0rICAgdHlwZWRlZiBfX3ZlY3RvciB1bnNpZ25lZCBpbnQgICAgICBfX2NsX3VpbnQ0OwotKyAgIHR5cGVkZWYgX192ZWN0b3Igc2lnbmVkIGludCAgICAgICAgX19jbF9pbnQ0OwotKyAgIHR5cGVkZWYgX192ZWN0b3IgZmxvYXQgICAgICAgICAgICAgX19jbF9mbG9hdDQ7Ci0gICAgI2RlZmluZSAgX19DTF9VQ0hBUjE2X18gIDEKLSAgICAjZGVmaW5lICBfX0NMX0NIQVIxNl9fICAgMQotICAgICNkZWZpbmUgIF9fQ0xfVVNIT1JUOF9fICAxCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLWJ1aWxkLXdvcmthcm91bmQtR0NDLTcuMS4xLWNvbXBpbGF0aW9uLWlzc3VlLXdpdGgtc2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDA2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoCkBAIC0wLDAgKzEsMTI3IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzkzNzYvY29tbWl0cy8wZDg1NGRiMzYxMTA2ZGZjYjA1NTIzMWZkMDExMmM1Yjg1ZWYyMjg3XQorCitGaXggQ1ZFcyBmb3Igb3BlbmN2IDMuMy4KKworKiBDVkUtMjAxNy0xMjU5NworKiBDVkUtMjAxNy0xMjU5OAorKiBDVkUtMjAxNy0xMjU5OQorKiBDVkUtMjAxNy0xMjYwMAorKiBDVkUtMjAxNy0xMjYwMQorKiBDVkUtMjAxNy0xMjYwMgorKiBDVkUtMjAxNy0xMjYwMworKiBDVkUtMjAxNy0xMjYwNAorKiBDVkUtMjAxNy0xMjYwNQorKiBDVkUtMjAxNy0xMjYwNgorKiBDVkUtMjAxNy0xMjg2MgorKiBDVkUtMjAxNy0xMjg2MworKiBDVkUtMjAxNy0xMjg2NAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorRnJvbSAwZDg1NGRiMzYxMTA2ZGZjYjA1NTIzMWZkMDExMmM1Yjg1ZWYyMjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hLmFsZWtoaW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAyMTo0NTowNSArMDAwMAorU3ViamVjdDogW1BBVENIIDEvM10gYnVpbGQ6IHdvcmthcm91bmQgR0NDIDcuMS4xIGNvbXBpbGF0aW9uIGlzc3VlIHdpdGgKKyBzYW5pdGl6ZSBmbGFncworCitWZXJzaW9uOiBnY2MgKEdDQykgNy4xLjEgMjAxNzA2MjIgKFJlZCBIYXQgNy4xLjEtMykKK0ZsYWdzOiAtZnNhbml0aXplPWFkZHJlc3MsdW5kZWZpbmVkCistLS0KKyBtb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwIGIvbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcAoraW5kZXggYTQ4ZTBhMDg3Li5lYjRjZWUxMzYgMTAwNjQ0CistLS0gYS9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwCisrKysgYi9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwCitAQCAtMzIyLDE2ICszMjIsMjAgQEAgbmFtZXNwYWNlIGN2dGVzdAorIAorICAgICAgICAgaWYgKG0xLnNpemUoKSAhPSBtMi5zaXplKCkpCisgICAgICAgICB7CistICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiTWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyIDw8ICJcIiBoYXZlIGRpZmZlcmVudCBzaXplcyA6IFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTEuc2l6ZSgpKSA8PCAiXSB2cyBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKG0yLnNpemUoKSkgPDwgIl0iOworKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKKysgICAgICAgICAgICBtc2cgPDwgIk1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMiA8PCAiXCIgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgOiBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTEuc2l6ZSgpKSA8PCAiXSB2cyBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTIuc2l6ZSgpKSA8PCAiXSI7CisrICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuc3RyKCk7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAobTEudHlwZSgpICE9IG0yLnR5cGUoKSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJNYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIgPDwgIlwiIGhhdmUgZGlmZmVyZW50IHR5cGVzIDogXCIiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBleHByMSA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0xLnR5cGUoKSkpIDw8ICJdIHZzIFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcoTWF0VHlwZShtMi50eXBlKCkpKSA8PCAiXSI7CisrICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbXNnOworKyAgICAgICAgICAgIG1zZyA8PCAiTWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyIDw8ICJcIiBoYXZlIGRpZmZlcmVudCB0eXBlcyA6IFwiIgorKyAgICAgICAgICAgICAgICA8PCBleHByMSA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0xLnR5cGUoKSkpIDw8ICJdIHZzIFwiIgorKyAgICAgICAgICAgICAgICA8PCBleHByMiA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0yLnR5cGUoKSkpIDw8ICJdIjsKKysgICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuc3RyKCk7CisgICAgICAgICB9CisgCisgICAgICAgICBNYXQgZGlmZjsKK0BAIC0zNDMsMTIgKzM0NywxNCBAQCBuYW1lc3BhY2UgY3Z0ZXN0CisgCisgICAgICAgICBpZiAobWF4VmFsID4gZXBzKQorICAgICAgICAgeworLSAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIlRoZSBtYXggZGlmZmVyZW5jZSBiZXR3ZWVuIG1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlzICIgPDwgbWF4VmFsIDw8ICIgYXQgKCIgPDwgbWF4TG9jLnkgPDwgIiwgIiA8PCBtYXhMb2MueCAvIG0xLmNoYW5uZWxzKCkgPDwgIikiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB3aGljaCBleGNlZWRzIFwiIiA8PCBlcHNfZXhwciA8PCAiXCIsIHdoZXJlIFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0xLCBtYXhMb2MpIDw8ICIsIFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0yLCBtYXhMb2MpIDw8ICIsIFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXBzX2V4cHIgPDwgIlwiIGV2YWx1YXRlcyB0byAiIDw8IGVwczsKKysgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBtc2c7CisrICAgICAgICAgICAgbXNnIDw8ICJUaGUgbWF4IGRpZmZlcmVuY2UgYmV0d2VlbiBtYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIKKysgICAgICAgICAgICAgICAgPDwgIlwiIGlzICIgPDwgbWF4VmFsIDw8ICIgYXQgKCIgPDwgbWF4TG9jLnkgPDwgIiwgIiA8PCBtYXhMb2MueCAvIG0xLmNoYW5uZWxzKCkgPDwgIikiCisrICAgICAgICAgICAgICAgIDw8ICIsIHdoaWNoIGV4Y2VlZHMgXCIiIDw8IGVwc19leHByIDw8ICJcIiwgd2hlcmUgXCIiCisrICAgICAgICAgICAgICAgIDw8IGV4cHIxIDw8ICJcIiBhdCAoIiA8PCBtYXhMb2MueSA8PCAiLCAiIDw8IG1heExvYy54IC8gbTEuY2hhbm5lbHMoKSA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBwcmludE1hdFZhbChtMSwgbWF4TG9jKSA8PCAiLCBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0yLCBtYXhMb2MpIDw8ICIsIFwiIgorKyAgICAgICAgICAgICAgICA8PCBlcHNfZXhwciA8PCAiXCIgZXZhbHVhdGVzIHRvICIgPDwgZXBzOworKyAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOworICAgICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK0BAIC00NjksOSArNDc1LDExIEBAIG5hbWVzcGFjZSBjdnRlc3QKKyAgICAgeworICAgICAgICAgaWYgKGdvbGQuc2l6ZSgpICE9IGFjdHVhbC5zaXplKCkpCisgICAgICAgICB7CistICAgICAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiS2V5UG9pbnRzIHNpemUgbWlzdG1hY2hcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgZ29sZF9leHByIDw8ICJcIiA6ICIgPDwgZ29sZC5zaXplKCkgPDwgIlxuIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBhY3R1YWxfZXhwciA8PCAiXCIgOiAiIDw8IGFjdHVhbC5zaXplKCk7CisrICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbXNnOworKyAgICAgICAgICAgIG1zZyA8PCAiS2V5UG9pbnRzIHNpemUgbWlzdG1hY2hcbiIKKysgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBnb2xkX2V4cHIgPDwgIlwiIDogIiA8PCBnb2xkLnNpemUoKSA8PCAiXG4iCisrICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgYWN0dWFsX2V4cHIgPDwgIlwiIDogIiA8PCBhY3R1YWwuc2l6ZSgpOworKyAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOworICAgICAgICAgfQorIAorICAgICAgICAgc3RkOjpzb3J0KGFjdHVhbC5iZWdpbigpLCBhY3R1YWwuZW5kKCksIEtleVBvaW50TGVzcygpKTsKK0BAIC00ODQsMTQgKzQ5MiwxNiBAQCBuYW1lc3BhY2UgY3Z0ZXN0CisgCisgICAgICAgICAgICAgaWYgKCFrZXlQb2ludHNFcXVhbHMocDEsIHAyKSkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgIktleVBvaW50cyBkaWZmZXIgYXQgIiA8PCBpIDw8ICJcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGdvbGRfZXhwciA8PCAiXCIgdnMgXCIiIDw8IGFjdHVhbF9leHByIDw8ICJcIiA6IFxuIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJwdCA6ICIgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhwMS5wdCkgPDwgIiB2cyAiIDw8IHRlc3Rpbmc6OlByaW50VG9TdHJpbmcocDIucHQpIDw8ICJcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAic2l6ZSA6ICIgPDwgcDEuc2l6ZSA8PCAiIHZzICIgPDwgcDIuc2l6ZSA8PCAiXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImFuZ2xlIDogIiA8PCBwMS5hbmdsZSA8PCAiIHZzICIgPDwgcDIuYW5nbGUgPDwgIlxuIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJyZXNwb25zZSA6ICIgPDwgcDEucmVzcG9uc2UgPDwgIiB2cyAiIDw8IHAyLnJlc3BvbnNlIDw8ICJcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAib2N0YXZlIDogIiA8PCBwMS5vY3RhdmUgPDwgIiB2cyAiIDw8IHAyLm9jdGF2ZSA8PCAiXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImNsYXNzX2lkIDogIiA8PCBwMS5jbGFzc19pZCA8PCAiIHZzICIgPDwgcDIuY2xhc3NfaWQ7CisrICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKKysgICAgICAgICAgICAgICAgbXNnIDw8ICJLZXlQb2ludHMgZGlmZmVyIGF0ICIgPDwgaSA8PCAiXG4iCisrICAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGdvbGRfZXhwciA8PCAiXCIgdnMgXCIiIDw8IGFjdHVhbF9leHByIDw8ICJcIiA6IFxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgInB0IDogIiA8PCB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAxLnB0KSA8PCAiIHZzICIgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhwMi5wdCkgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgInNpemUgOiAiIDw8IHAxLnNpemUgPDwgIiB2cyAiIDw8IHAyLnNpemUgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgImFuZ2xlIDogIiA8PCBwMS5hbmdsZSA8PCAiIHZzICIgPDwgcDIuYW5nbGUgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgInJlc3BvbnNlIDogIiA8PCBwMS5yZXNwb25zZSA8PCAiIHZzICIgPDwgcDIucmVzcG9uc2UgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgIm9jdGF2ZSA6ICIgPDwgcDEub2N0YXZlIDw8ICIgdnMgIiA8PCBwMi5vY3RhdmUgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgImNsYXNzX2lkIDogIiA8PCBwMS5jbGFzc19pZCA8PCAiIHZzICIgPDwgcDIuY2xhc3NfaWQ7CisrICAgICAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLWNhcm90ZW5lLWRvbi10LXVzZS1fX2FzbV9fLXdpdGgtYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLWNhcm90ZW5lLWRvbi10LXVzZS1fX2FzbV9fLXdpdGgtYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWE1NmUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtY2Fyb3RlbmUtZG9uLXQtdXNlLV9fYXNtX18td2l0aC1hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMTI1MCBAQAorRnJvbSAzNTNmYzkyNjE4Y2UwZGM2YmFiNGEzZThiZmYxYzEzYzNiNjEzMTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hbGVraGluQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTc6NDE6MjMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGNhcm90ZW5lOiBkb24ndCB1c2UgX19hc21fXyB3aXRoIGFhcmNoNjQKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcCAgfCAgIDQgKy0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAgfCAgIDIgKy0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcCAgICAgfCAxMDQgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAgICAgICAgICAgfCAgNTQgKysrKysrKy0tLS0tLS0tCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwICAgIHwgIDcyICsrKysrKysrKystLS0tLS0tLS0tCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwICAgIHwgICA2ICstCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwICAgICAgICAgIHwgIDIwICsrKy0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwICAgICAgICAgICB8ICAgNCArLQorIDggZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDEzMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKK2luZGV4IGY2NjNiYzYwMDUuLjgyMzhhM2VjZTggMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKK0BAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBleHRyYWN0NChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgICAgICBzcmNTdHJpZGUgPT0gZHN0MlN0cmlkZSAmJiBcCisgICAgICAgICAgICAgICAgICBzcmNTdHJpZGUgPT0gZHN0M1N0cmlkZSAmJgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAKKyAjZGVmaW5lIFNQTElUX0FTTTIoc2duLCBiaXRzKSBfX2FzbV9fICggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2bGQyLiIgI2JpdHMgIiB7ZDAsIGQyfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IiBcCitAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgZXh0cmFjdDQoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIH0KKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgCisgI2RlZmluZSBBTFBIQV9RVUFEKHNnbiwgYml0cykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7IFwKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKK2luZGV4IDE1N2M4YjgxMjEuLmZjOThmYjkxODEgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcAorQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIENBUk9URU5FX05TIHsKKyAgICAgICAgICAgICAgICAgIGRzdFN0cmlkZSA9PSBzcmMyU3RyaWRlICYmIFwKKyAgICAgICAgICAgICAgICAgIGRzdFN0cmlkZSA9PSBzcmMzU3RyaWRlICYmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIAorICNkZWZpbmUgTUVSR0VfQVNNMihzZ24sIGJpdHMpIF9fYXNtX18gKCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZsZDEuIiAjYml0cyAiIHtkMC1kMX0sIFslW2luMF1dICAgICAgICAgICAgIFxuXHQiIFwKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCitpbmRleCAzMDM3ZmU2NzJhLi4yNmFlNTRiMTVjIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCitAQCAtOTcsNyArOTcsNyBAQCB2b2lkIHJnYjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKKyAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCByZ2IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCByZ2J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OworICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOworQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIHJnYngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBiZ3IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7CitAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgYmdyMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgYmdyeDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKKyAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBiZ3J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgZ3JheTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IHNqIDwgcm9pdzE2OyBzaiArPSAxNiwgZGogKz0gNDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgInZsZDEuOCB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZtb3YuOCBxMSwgcTAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgZ3JheTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAorIAorICAgICAgICAgaWYgKHNqIDwgcm9pdzgpCisgICAgICAgICB7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2QwfSwgWyVbaW5dXSAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggZDEsIGQwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTU4NCw3ICs1ODQsNyBAQCB2b2lkIGdyYXkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB2YzI1NSAgIGFzbSAoInE0IikgPSB2bW92cV9uX3U4KDI1NSk7CisgI2Vsc2UKKyAgICAgdWludDh4MTZ4NF90IHZSZ2JhOworQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIGdyYXkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgc2ogPCByb2l3MTY7IHNqICs9IDE2LCBkaiArPSA2NCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAidmxkMS44IHtkMC1kMX0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidm1vdi44IHExLCBxMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorIAorICAgICAgICAgaWYgKHNqIDwgcm9pdzgpCisgICAgICAgICB7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2Q1fSwgWyVbaW5dXSAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggZDYsIGQ1ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIHJnYjJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgcmVnaXN0ZXIgdWludDh4OF90IHZjMjU1XzAgIGFzbSAoImQzIikgPSB2bW92X25fdTgoMjU1KTsKKyAjZWxzZQorICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7CitAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgcmdiMnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMzIsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lkIHJnYngycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CistI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCAhZGVmaW5lZChfX2FybV9fKQorKyNpZiAhKCFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pKQorICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7CisgICAgIHVuaW9uIHsgdWludDh4MTZ4NF90IHY0OyB1aW50OHgxNngzX3QgdjM7IH0gdl9kc3QwOworICAgICB1bmlvbiB7IHVpbnQ4eDh4NF90IHY0OyB1aW50OHg4eDNfdCB2MzsgfSB2X2RzdDsKK0BAIC03NTQsNyArNzU0LDcgQEAgdm9pZCByZ2J4MnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1LCBqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgcmdiMmJncihjb25zdCBTaXplMkQgJnNpemUsCisgeworICAgICBpbnRlcm5hbDo6YXNzZXJ0U3VwcG9ydGVkQ29uZmlndXJhdGlvbigpOworICNpZmRlZiBDQVJPVEVORV9ORU9OCistI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCAhZGVmaW5lZChfX2FybV9fKQorKyNpZiAhKCFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pKQorICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7CisgI2VuZGlmCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKK0BAIC04MTcsNyArODE3LDcgQEAgdm9pZCByZ2IyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1LCBqID0gMHU7CisgCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgcmdieDJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyB7CisgICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7CisgI2lmZGVmIENBUk9URU5FX05FT04KKy0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8ICFkZWZpbmVkKF9fYXJtX18pCisrI2lmICEoIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykpCisgICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKKyAjZW5kaWYKKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIHJnYngyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1LCBqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAzMiwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgcmdieDJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAorIHsKKyAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKKysjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworICNlbmRpZgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CitAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgcmdieDJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTEwMTAsNyArMTAxMCw3IEBAIHZvaWQgcmdiMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorIHsKKyAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgIHJlZ2lzdGVyIHVpbnQ4eDhfdCB2YzI1NSAgYXNtICgiZDMiKSA9IHZtb3Zfbl91OCgyNTUpOworICNlbHNlCisgICAgIHVuaW9uIHsgdWludDh4MTZ4NF90IHY0OyB1aW50OHgxNngzX3QgdjM7IH0gdmFsczA7CitAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCByZ2IyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgICAgIHZhbHM4LnY0LnZhbFszXSA9IHZtb3Zfbl91OCgyNTUpOworICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKKysjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworICNlbmRpZgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CitAQCAtMTAzMCw3ICsxMDMwLDcgQEAgdm9pZCByZ2IyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1LCBqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAzMiwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtMTQwOSw3ICsxNDA5LDcgQEAgaW5saW5lIHZvaWQgY29udmVydFRvSFNWKGNvbnN0IHMzMiByLCBjb25zdCBzMzIgZywgY29uc3QgczMyIGIsCisgICAgICAgICAgICAgICAiZDI0IiwiZDI1IiwiZDI2IiwiZDI3IiwiZDI4IiwiZDI5IiwiZDMwIiwiZDMxIiAgICAgICAgIFwKKyAgICAgICAgICAgICApOworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAKKyAjZGVmaW5lIFlDUkNCX0NPTlNUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICByZWdpc3RlciBpbnQxNng0X3QgdmNZUiAgYXNtICgiZDMxIikgPSB2bW92X25fczE2KDQ4OTkpOyAgICAgICAgICAgICAgICBcCitAQCAtMTU1NSw3ICsxNTU1LDcgQEAgaW5saW5lIHVpbnQ4eDh4M190IGNvbnZlcnRUb1lDckNiKCBjb25zdCBpbnQxNng4X3QmIHZSLCBjb25zdCBpbnQxNng4X3QmIHZHLCBjb24KKyAjZGVmaW5lIENPRUZGX0cgICAoICA4NjYzKQorICNkZWZpbmUgQ09FRkZfQiAgICgtMTc3MDUpCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICNkZWZpbmUgWVVWNDIwQUxQSEEzX0NPTlNUCisgI2RlZmluZSBZVVY0MjBBTFBIQTRfQ09OU1QgcmVnaXN0ZXIgdWludDh4MTZfdCBjMjU1ICBhc20gKCJxMTMiKSA9IHZtb3ZxX25fdTgoMjU1KTsKKyAjZGVmaW5lIFlVVjQyMEFMUEhBM19DT05WRVJUCitAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCByZ2IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lkIHJnYjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDMuOCB7ZDAtZDJ9LCBkMCwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7CitAQCAtMTkwNCw3ICsxOTA0LDcgQEAgdm9pZCByZ2J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgI2lmZGVmIENBUk9URU5FX05FT04KKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMTkyMyw3ICsxOTIzLDcgQEAgdm9pZCByZ2J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkNC44IHtkMC1kM30sIGQwLCBkMikKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2IgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0xOTU2LDcgKzE5NTYsNyBAQCB2b2lkIGJncjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOworQEAgLTE5NzUsNyArMTk3NSw3IEBAIHZvaWQgYmdyMmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkMy44IHtkMC1kMn0sIGQyLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZSZ2IgPSB2bGQzX3U4KHNyYyArIHNqKTsKK0BAIC0yMDA4LDcgKzIwMDgsNyBAQCB2b2lkIGJncngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0yMDI3LDcgKzIwMjcsNyBAQCB2b2lkIGJncngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQ0Ljgge2QwLWQzfSwgZDIsIGQwKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHg0X3QgdlJnYiA9IHZsZDRfdTgoc3JjICsgc2opOworQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgcmdieDJiZ3I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDY0LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDIsIGQ0LCBkNiwgZDh9LCBbJVtpbjBdXSAgICAgICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgcTQgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDMsIGQ1LCBkNywgZDl9LCBbJVtpbjFdXSAgICAgICAgQCAgeHh4eHh4eHggcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggXG5cdCIKK0BAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIHJnYjJiZ3I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDQ4LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDIsIGQ0LCBkNn0sIFslW2luMF1dICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgIHE0ICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QzLCBkNSwgZDd9LCBbJVtpbjFdXSAgICAgICBAICB4eHh4eHh4eCBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiB4eHh4eHh4eCBcblx0IgorQEAgLTIxNzYsNyArMjE3Niw3IEBAIHZvaWQgcmdieDJyZ2I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDY0LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDAsIGQyLCBkNCwgZDZ9LCBbJVtpbjBdXSAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QxLCBkMywgZDUsIGQ3fSwgWyVbaW4xXV0gICAgQCAgcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgYWFhYUFBQUEgICBcblx0IgorQEAgLTIyMzAsNyArMjIzMCw3IEBAIHZvaWQgcmdiMnJnYjU2NShjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXcxNjsgc2ogKz0gNDgsIGRqICs9IDMyLCBqICs9IDE2KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkMy44IHtkMCwgZDIsIGQ0fSwgWyVbaW4wXV0gICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDEsIGQzLCBkNX0sIFslW2luMV1dICAgICAgICBAICBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiB4eHh4eHh4eCAgIFxuXHQiCitAQCAtMjI4NSw3ICsyMjg1LDcgQEAgdm9pZCByZ2IyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkMy44IHtkMC1kMn0sIGQwLCBkMSwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7CitAQCAtMjMyOSw3ICsyMzI5LDcgQEAgdm9pZCByZ2J4MnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDQuOCB7ZDAtZDN9LCBkMCwgZDEsIGQyKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHg0X3QgdlJnYmEgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0yMzczLDcgKzIzNzMsNyBAQCB2b2lkIGJncjJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQzLjgge2QwLWQyfSwgZDIsIGQxLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZCZ3IgPSB2bGQzX3U4KHNyYyArIHNqKTsKK0BAIC0yNDE3LDcgKzI0MTcsNyBAQCB2b2lkIGJncngyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkNC44IHtkMC1kM30sIGQyLCBkMSwgZDApCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2QmdyYSA9IHZsZDRfdTgoc3JjICsgc2opOworQEAgLTI0OTksNyArMjQ5OSw3IEBAIHZvaWQgeXV2NDIwc3AycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQxLCBkMCwgcTUsIHE2KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgdm9pZCB5dXY0MjBzcDJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQxLCBkMCwgcTUsIHE2KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjU5MSw3ICsyNTkxLDcgQEAgdm9pZCB5dXY0MjBpMnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMCwgZDEsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI2MzcsNyArMjYzNyw3IEBAIHZvaWQgeXV2NDIwaTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQwLCBkMSwgcTUsIHE2KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjY4Myw3ICsyNjgzLDcgQEAgdm9pZCB5dXY0MjBzcDJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDEsIGQwLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNzI5LDcgKzI3MjksNyBAQCB2b2lkIHl1djQyMHNwMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDEsIGQwLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNzc1LDcgKzI3NzUsNyBAQCB2b2lkIHl1djQyMGkyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQwLCBkMSwgcTYsIHE1KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjgyMSw3ICsyODIxLDcgQEAgdm9pZCB5dXY0MjBpMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDAsIGQxLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKK2luZGV4IDQwM2YxNmQ4NmEuLjY0YjZkYjc4YWIgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcAorQEAgLTEwMSw3ICsxMDEsNyBAQCBDVlRfRlVOQyh1OCwgczgsIDE2LAorICAgICAgfQorIH0pCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVF9GVU5DKHU4LCB1MTYsIDE2LAorICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91OCgwKTssCisgeworQEAgLTEzNSw3ICsxMzUsNyBAQCBDVlRfRlVOQyh1OCwgdTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyh1OCwgczMyLCAxNiwKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7CisgICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8xIGFzbSAoInEyIikgPSB2bW92cV9uX3U4KDApOworQEAgLTE3Myw3ICsxNzMsNyBAQCBDVlRfRlVOQyh1OCwgczMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyh1OCwgZjMyLCAxNiwKKyAsCisgeworQEAgLTI0OCw3ICsyNDgsNyBAQCBDVlRfRlVOQyhzOCwgdTgsIDE2LAorICAgICAgfQorIH0pCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVF9GVU5DKHM4LCB1MTYsIDE2LAorICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91OCgwKTssCisgeworQEAgLTI4NCw3ICsyODQsNyBAQCBDVlRfRlVOQyhzOCwgdTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzOCwgczE2LCAxNiwKKyAsCisgeworQEAgLTMyMyw3ICszMjMsNyBAQCBDVlRfRlVOQyhzOCwgczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyhzOCwgczMyLCAxNiwKKyAsCisgeworQEAgLTM3Nyw3ICszNzcsNyBAQCBDVlRfRlVOQyhzOCwgczMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzOCwgZjMyLCAxNiwKKyAsCisgeworQEAgLTQ0MCw3ICs0NDAsNyBAQCBDVlRfRlVOQyhzOCwgZjMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyh1MTYsIHU4LCAxNiwKKyAsCisgeworQEAgLTQ3OSw3ICs0NzksNyBAQCBDVlRfRlVOQyh1MTYsIHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyh1MTYsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB2MTI3IGFzbSAoInE0IikgPSB2bW92cV9uX3U4KDEyNyk7LAorIHsKK0BAIC01MjIsNyArNTIyLDcgQEAgQ1ZUX0ZVTkModTE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUX0ZVTkModTE2LCBzMTYsIDgsCisgICAgICByZWdpc3RlciB1aW50MTZ4OF90IHYzMjc2NyBhc20gKCJxNCIpID0gdm1vdnFfbl91MTYoMHg3RkZGKTssCisgeworQEAgLTU1NSw3ICs1NTUsNyBAQCBDVlRfRlVOQyh1MTYsIHMxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyh1MTYsIHMzMiwgOCwKKyAgICAgIHJlZ2lzdGVyIHVpbnQxNng4X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTE2KDApOywKKyB7CitAQCAtNTg5LDcgKzU4OSw3IEBAIENWVF9GVU5DKHUxNiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHUxNiwgZjMyLCA4LAorICwKKyB7CitAQCAtNjMzLDcgKzYzMyw3IEBAIENWVF9GVU5DKHUxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMxNiwgdTgsIDE2LAorICwKKyB7CitAQCAtNjcyLDcgKzY3Miw3IEBAIENWVF9GVU5DKHMxNiwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMxNiwgczgsIDE2LAorICwKKyB7CitAQCAtNzExLDcgKzcxMSw3IEBAIENWVF9GVU5DKHMxNiwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVF9GVU5DKHMxNiwgdTE2LCA4LAorICAgICAgcmVnaXN0ZXIgaW50MTZ4OF90IHZaZXJvIGFzbSAoInE0IikgPSB2bW92cV9uX3MxNigwKTssCisgeworQEAgLTc0Nyw3ICs3NDcsNyBAQCBDVlRfRlVOQyhzMTYsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMTYsIHMzMiwgOCwKKyAsCisgeworQEAgLTc4Niw3ICs3ODYsNyBAQCBDVlRfRlVOQyhzMTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMTYsIGYzMiwgOCwKKyAsCisgeworQEAgLTgyOSw3ICs4MjksNyBAQCBDVlRfRlVOQyhzMTYsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMzIsIHU4LCA4LAorICwKKyB7CitAQCAtODcwLDcgKzg3MCw3IEBAIENWVF9GVU5DKHMzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczMyLCBzOCwgOCwKKyAsCisgeworQEAgLTkxMSw3ICs5MTEsNyBAQCBDVlRfRlVOQyhzMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMzMiwgdTE2LCA4LAorICwKKyB7CitAQCAtOTUwLDcgKzk1MCw3IEBAIENWVF9GVU5DKHMzMiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMzMiwgczE2LCA4LAorICwKKyB7CitAQCAtOTg5LDcgKzk4OSw3IEBAIENWVF9GVU5DKHMzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMzMiwgZjMyLCA4LAorICwKKyB7CitAQCAtMTAzNCw3ICsxMDM0LDcgQEAgQ1ZUX0ZVTkMoczMyLCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoZjMyLCB1OCwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3Qgdm11bHQgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmbG9hdCkoMSA8PCAxNikpOworICAgICByZWdpc3RlciB1aW50MzJ4NF90ICB2bWFzayBhc20gKCJxMSIpID0gdmR1cHFfbl91MzIoMTw8MTYpOywKK0BAIC0xMTAxLDcgKzExMDEsNyBAQCBDVlRfRlVOQyhmMzIsIHU4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKGYzMiwgczgsIDgsCisgICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAorIHsKK0BAIC0xMTUzLDcgKzExNTMsNyBAQCBDVlRfRlVOQyhmMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKGYzMiwgdTE2LCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitAQCAtMTIxMiw3ICsxMjEyLDcgQEAgQ1ZUX0ZVTkMoZjMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoZjMyLCBzMTYsIDgsCisgICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAorIHsKK0BAIC0xMjcxLDcgKzEyNzEsNyBAQCBDVlRfRlVOQyhmMzIsIHMxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhmMzIsIHMzMiwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAoraW5kZXggMGExNGE4MDM1Yy4uYWU0MWE5ODVjOCAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwCitAQCAtMTM1LDcgKzEzNSw3IEBAIG5hbWVzcGFjZSBDQVJPVEVORV9OUyB7CisgCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkMxKHU4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjIwLDcgKzIyMCw3IEBAIENWVFNfRlVOQzEodTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkModTgsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMzA1LDcgKzMwNSw3IEBAIENWVFNfRlVOQyh1OCwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkModTgsIHUxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTM4OSw3ICszODksNyBAQCBDVlRTX0ZVTkModTgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorIENWVFNfRlVOQyh1OCwgczE2LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtNDczLDcgKzQ3Myw3IEBAIENWVFNfRlVOQyh1OCwgczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkModTgsIHMzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTU2Miw3ICs1NjIsNyBAQCBDVlRTX0ZVTkModTgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHU4LCBmMzIsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTY0Myw3ICs2NDMsNyBAQCBDVlRTX0ZVTkModTgsIGYzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorIENWVFNfRlVOQyhzOCwgdTgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC03MjgsNyArNzI4LDcgQEAgQ1ZUU19GVU5DKHM4LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorIENWVFNfRlVOQzEoczgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC04MTMsNyArODEzLDcgQEAgQ1ZUU19GVU5DMShzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorIENWVFNfRlVOQyhzOCwgdTE2LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtODk5LDcgKzg5OSw3IEBAIENWVFNfRlVOQyhzOCwgdTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgQ1ZUU19GVU5DKHM4LCBzMTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC05ODUsNyArOTg1LDcgQEAgQ1ZUU19GVU5DKHM4LCBzMTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzOCwgczMyLCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTA3NCw3ICsxMDc0LDcgQEAgQ1ZUU19GVU5DKHM4LCBzMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzOCwgZjMyLCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0xMTU1LDcgKzExNTUsNyBAQCBDVlRTX0ZVTkMoczgsIGYzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHUxNiwgdTgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMjE0LDcgKzEyMTQsNyBAQCBDVlRTX0ZVTkModTE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHUxNiwgczgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMjczLDcgKzEyNzMsNyBAQCBDVlRTX0ZVTkModTE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DMSh1MTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMzMwLDcgKzEzMzAsNyBAQCBDVlRTX0ZVTkMxKHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHUxNiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMzg3LDcgKzEzODcsNyBAQCBDVlRTX0ZVTkModTE2LCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHUxNiwgczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNDQzLDcgKzE0NDMsNyBAQCBDVlRTX0ZVTkModTE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHUxNiwgZjMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTE0OTUsNyArMTQ5NSw3IEBAIENWVFNfRlVOQyh1MTYsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczE2LCB1OCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE1NTQsNyArMTU1NCw3IEBAIENWVFNfRlVOQyhzMTYsIHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczE2LCBzOCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE2MTMsNyArMTYxMyw3IEBAIENWVFNfRlVOQyhzMTYsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczE2LCB1MTYsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE2NzAsNyArMTY3MCw3IEBAIENWVFNfRlVOQyhzMTYsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMxKHMxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE3MjcsNyArMTcyNyw3IEBAIENWVFNfRlVOQzEoczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczE2LCBzMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE3ODMsNyArMTc4Myw3IEBAIENWVFNfRlVOQyhzMTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczE2LCBmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtMTgzNSw3ICsxODM1LDcgQEAgQ1ZUU19GVU5DKHMxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzMzIsIHU4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xODkzLDcgKzE4OTMsNyBAQCBDVlRTX0ZVTkMoczMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczMyLCBzOCwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTk1MSw3ICsxOTUxLDcgQEAgQ1ZUU19GVU5DKHMzMiwgczgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMzMiwgdTE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMDA3LDcgKzIwMDcsNyBAQCBDVlRTX0ZVTkMoczMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMzMiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMDYzLDcgKzIwNjMsNyBAQCBDVlRTX0ZVTkMoczMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DMShzMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIxMTgsNyArMjExOCw3IEBAIENWVFNfRlVOQzEoczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzMzIsIGYzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0yMTY5LDcgKzIxNjksNyBAQCBDVlRTX0ZVTkMoczMyLCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKGYzMiwgdTgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMikoKDEgPDwgMTYpKmFscGhhKSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMikoKDEgPDwgMTYpKmJldGEpKTsKK0BAIC0yMjM5LDcgKzIyMzksNyBAQCBDVlRTX0ZVTkMoZjMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoZjMyLCBzOCwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjI5Myw3ICsyMjkzLDcgQEAgQ1ZUU19GVU5DKGYzMiwgczgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKGYzMiwgdTE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMzQ1LDcgKzIzNDUsNyBAQCBDVlRTX0ZVTkMoZjMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKGYzMiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMzk3LDcgKzIzOTcsNyBAQCBDVlRTX0ZVTkMoZjMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKGYzMiwgczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yNDQ4LDcgKzI0NDgsNyBAQCBDVlRTX0ZVTkMoZjMyLCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DMShmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCitpbmRleCAxYjUzOTk0MzZmLi5mN2I1ZjE4ZDc5IDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAKK0BAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqMjsKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSoyOworICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjI7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDAsIGQyfSwgWyVbaW4wXV0hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkMSwgZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIGdhdXNzaWFuQmx1cjV4NShjb25zdCBTaXplMkQgJnNpemUsIHMzMiBjbiwKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MSA9IGxhbmUgKyB4IC0gMSozOworICAgICAgICAgICAgICAgICB1MTYqIGxpZHgzID0gbGFuZSArIHggKyAxKjM7CisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDQgPSBsYW5lICsgeCArIDIqMzsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMy4xNiB7ZDAsIGQyLCBkNH0sIFslW2luMF1dISAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQzLjE2IHtkMSwgZDMsIGQ1fSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIGdhdXNzaWFuQmx1cjV4NShjb25zdCBTaXplMkQgJnNpemUsIHMzMiBjbiwKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MSA9IGxhbmUgKyB4IC0gMSo0OworICAgICAgICAgICAgICAgICB1MTYqIGxpZHgzID0gbGFuZSArIHggKyAxKjQ7CisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDQgPSBsYW5lICsgeCArIDIqNDsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkNC4xNiB7ZDAsIGQyLCBkNCwgZDZ9LCBbJVtpbjBdXSEgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQ0LjE2IHtkMSwgZDMsIGQ1LCBkN30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAoraW5kZXggOGVmMTI2ODkzMy4uMjMyY2NmM2VmZCAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwCitAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgICAgICAgICAgZm9yICg7IHggPCByb2l3ODsgeCArPSA4KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyAyICogeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkMC1kM30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDQtZDd9LCBbJVtpbjRdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzQ7IHggKz0gNCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDQtZDd9LCBbJVtpbjRdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNjcyLDcgKzY3Miw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgIHN0ZDo6dmVjdG9yPGYzMj4gX2J1Zihjbiooc3JjU2l6ZS53aWR0aCArIDQpICsgMzIvc2l6ZW9mKGYzMikpOworICAgICBmMzIqIGxhbmUgPSBpbnRlcm5hbDo6YWxpZ25QdHIoJl9idWZbMipjbl0sIDMyKTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZjNmQ0ZjMyICBhc20gKCJxMTEiKSA9IHZtb3ZxX25fZjMyKDEuNWYpOyAgLy8gNi80CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZjMWQ0ZjMyICBhc20gKCJxMTIiKSA9IHZtb3ZxX25fZjMyKDAuMjVmKTsgLy8gMS80CisgCitAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgICAgICAgICAgZm9yICg7IHggPCByb2l3NDsgeCArPSA0KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyAyICogeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDgtZDExfSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtOTMyLDcgKzkzMiw3IEBAIHB5clVwOHVIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gOCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAvKnEwID0gdjAqLyAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDItZDN9LCBbJVtpbjJdXSAgICAgICAvKnExID0gdjIqLyAgICAgICAgICAgIFxuXHQiCitAQCAtOTczLDcgKzk3Myw3IEBAIHB5clVwOHVIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gMjQpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZtb3YudTE2IHE5LCAjNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDMuMTYge2QwLCBkMiwgZDR9LCBbJVtpbjBdXSAgICAgICAgLyp2MCovICAgICAgICAgICAgICBcblx0IgorQEAgLTEwNjQsNyArMTA2NCw3IEBAIHB5clVwOHVIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gOCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAvKnEwID0gdjAqLyAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDItZDN9LCBbJVtpbjJdXSAgICAgICAvKnExID0gdjIqLyAgICAgICAgICAgIFxuXHQiCitAQCAtMTIxMCw3ICsxMjEwLDcgQEAgcHlyVXAxNnNIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gNCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAvKnEwID0gdjAqLyAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDItZDN9LCBbJVtpbjJdXSAgICAgICAvKnExID0gdjIqLyAgICAgICAgICAgIFxuXHQiCitAQCAtMTI1MSw3ICsxMjUxLDcgQEAgcHlyVXAxNnNIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gMTIpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHggKyAzKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bW92LnMzMiBxOSwgIzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQzLjMyIHtkMCwgZDIsIGQ0fSwgWyVbaW4wXV0gICAgICAgIC8qdjAqLyAgICAgICAgICAgICAgXG5cdCIKK0BAIC0xMzQzLDcgKzEzNDMsNyBAQCBweXJVcDE2c0hvcml6b250YWxDb252b2x1dGlvbjoKKyAgICAgICAgICAgICBmb3IgKDsgeCA8IGxpbTsgeCArPSA0KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyB4KTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQxLjMyIHtkMC1kMX0sIFslW2luMF1dICAgICAgIC8qcTAgPSB2MCovICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQxLjMyIHtkMi1kM30sIFslW2luMl1dICAgICAgIC8qcTEgPSB2MiovICAgICAgICAgICAgXG5cdCIKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCitpbmRleCA1Njk1ODA0ZmU0Li44ZDNiNjMyOGIxIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCitAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU2NoYXJyRGVyaXYoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cwICsgeCk7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cxICsgeCk7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cyICsgeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkMS44IHtkMH0sIFslW3NyYzBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDEuOCB7ZDJ9LCBbJVtzcmMyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU2NoYXJyRGVyaXYoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICB4ID0gMDsKKyAgICAgICAgIGZvciggOyB4IDwgcm9pdzg7IHggKz0gOCApCisgICAgICAgICB7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDQtZDV9LCBbJVtzMnB0cl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDEuMTYge2Q4LWQ5fSwgWyVbczRwdHJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS10cmFja2luZy1tYWtlLW9wZW5jdl9kbm4tZGVwZW5kYW5jeS1vcHRpb25hbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLXRyYWNraW5nLW1ha2Utb3BlbmN2X2Rubi1kZXBlbmRhbmN5LW9wdGlvbmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmE0M2ViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLXRyYWNraW5nLW1ha2Utb3BlbmN2X2Rubi1kZXBlbmRhbmN5LW9wdGlvbmFsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQzICswLDAgQEAKLUZyb20gNjlmODYwMjU5NzhiOWJiYmVmYTU0YTcyNDgzMTZhODU5NzczYWVhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGJlcmFrIDxweDE3MDRAd2ViLmRlPgotRGF0ZTogU2F0LCA0IE1hciAyMDE3IDEyOjM4OjUwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRyYWNraW5nOiBtYWtlIG9wZW5jdl9kbm4gZGVwZW5kYW5jeSBvcHRpb25hbAotCi1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2NvbW1pdC80MzkyNWI2MGQzOTJmYmQwMWQ2YjA0NDk3MTNmMDEwZjliYWJlNDQ4XQotU2lnbmVkLW9mZi1ieTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KLQotLS0tCi0gbW9kdWxlcy90cmFja2luZy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICB8ICAzICstLQotIG1vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9nb3R1cm5UcmFja2VyLmNwcCAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrLS0tCi0gbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL211bHRpVHJhY2tlcl9kYXRhc2V0LmNwcCB8ICAxICsKLSBtb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvdHJhY2tlcl9kYXRhc2V0LmNwcCAgICAgIHwgIDEgKwotIG1vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuY3BwICAgICAgICAgICAgICAgfCAxMSArKysrKysrKysrLQotIG1vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuaHBwICAgICAgICAgICAgICAgfCAxMiArKysrKysrKy0tLS0KLSBtb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5jcHAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCi0gbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVXRpbHMuaHBwICAgICAgICAgICAgICAgICB8ICA1ICsrLS0tCi0gbW9kdWxlcy90cmFja2luZy9zcmMvdHJhY2tlci5jcHAgICAgICAgICAgICAgICAgICB8ICAxICsKLSA5IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cmFja2luZy9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvdHJhY2tpbmcvQ01ha2VMaXN0cy50eHQKLWluZGV4IGE4YjMxODMuLmQyN2Y5OTkgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9tb2R1bGVzL3RyYWNraW5nL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSwyICsxIEBACi0tc2V0KHRoZV9kZXNjcmlwdGlvbiAiVHJhY2tpbmcgQVBJIikKLS1vY3ZfZGVmaW5lX21vZHVsZSh0cmFja2luZyBvcGVuY3ZfaW1ncHJvYyBvcGVuY3ZfY29yZSBvcGVuY3ZfdmlkZW8gb3BlbmN2X2hpZ2hndWkgb3BlbmN2X2RubiBvcGVuY3ZfcGxvdCBPUFRJT05BTCBvcGVuY3ZfZGF0YXNldHMgV1JBUCBweXRob24pCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLStvY3ZfZGVmaW5lX21vZHVsZSh0cmFja2luZyBvcGVuY3ZfaW1ncHJvYyBvcGVuY3ZfY29yZSBvcGVuY3ZfdmlkZW8gb3BlbmN2X2hpZ2hndWkgb3BlbmN2X3Bsb3QgT1BUSU9OQUwgb3BlbmN2X2RubiBvcGVuY3ZfZGF0YXNldHMgV1JBUCBweXRob24pCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL2dvdHVyblRyYWNrZXIuY3BwIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL2dvdHVyblRyYWNrZXIuY3BwCi1pbmRleCAzODk3NzFlLi4xZTY2MzJkIDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL2dvdHVyblRyYWNrZXIuY3BwCi0rKysgYi9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvZ290dXJuVHJhY2tlci5jcHAKLUBAIC00NSw2ICs0NSw5IEBACi0gLy8xIC0gVHJhaW4geW91IG93biBHT1RVUk4gbW9kZWwgdXNpbmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9BdXJvbi1YL0dPVFVSTl9UcmFpbmluZ19Ub29sa2l0PgotIC8vMiAtIERvd25sb2FkIHByZXRyYWluZWQgY2FmZmVtb2RlbCBmcm9tIDxodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9leHRyYT4KLSAKLSsjaW5jbHVkZSAib3BlbmN2Mi9vcGVuY3ZfbW9kdWxlcy5ocHAiCi0rI2lmIGRlZmluZWQoSEFWRV9PUEVOQ1ZfRE5OKSAmJiBkZWZpbmVkKEhBVkVfT1BFTkNWX0RBVEFTRVRTKQotKwotICNpbmNsdWRlICJvcGVuY3YyL2RhdGFzZXRzL3RyYWNrX2Fsb3YuaHBwIgotICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvdXRpbGl0eS5ocHA+Ci0gI2luY2x1ZGUgPG9wZW5jdjIvdHJhY2tpbmcuaHBwPgotQEAgLTY1LDggKzY4LDggQEAgc3RhdGljIGJvb2wgc3RhcnRTZWxlY3Rpb24gPSBmYWxzZTsKLSBSZWN0MmQgYm91bmRpbmdCb3g7Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIqIGtleXMgPQotLXsgIntAZGF0YXNldF9wYXRoICAgICB8dHJ1ZXwgRGF0YXNldCBwYXRoICAgICB9IgotLSJ7QGRhdGFzZXRfaWQgICAgIHwxfCBEYXRhc2V0IElEICAgICB9IgotK3sgIntAZGF0YXNldF9wYXRoICAgICB8fCBEYXRhc2V0IHBhdGggICB9IgotKyAgIntAZGF0YXNldF9pZCAgICAgIHwxfCBEYXRhc2V0IElEICAgICB9IgotIH07Ci0gCi0gc3RhdGljIHZvaWQgb25Nb3VzZShpbnQgZXZlbnQsIGludCB4LCBpbnQgeSwgaW50LCB2b2lkKikKLUBAIC0xNDQsOSArMTQ3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgIFB0cjxjdjo6ZGF0YXNldHM6OlRSQUNLX2Fsb3Y+IGRhdGFzZXQgPSBUUkFDS19hbG92OjpjcmVhdGUoKTsKLSAgICAgZGF0YXNldC0+bG9hZChkYXRhc2V0Um9vdFBhdGgpOwotICAgICBkYXRhc2V0LT5pbml0RGF0YXNldChkYXRhc2V0SUQpOwotLQotICAgICAvL1JlYWQgZmlyc3QgZnJhbWUKLSAgICAgZGF0YXNldC0+Z2V0TmV4dEZyYW1lKGZyYW1lKTsKLSsgICAgaWYgKGZyYW1lLmVtcHR5KCkpCi0rICAgIHsKLSsgICAgICAgIGNvdXQgPDwgImludmFsaWQgZGF0YXNldDogIiA8PCBkYXRhc2V0Um9vdFBhdGggPDwgZW5kbDsKLSsgICAgICAgIHJldHVybiAtMjsKLSsgICAgfQotKwotICAgICBmcmFtZS5jb3B5VG8oaW1hZ2UpOwotICAgICByZWN0YW5nbGUoaW1hZ2UsIGJvdW5kaW5nQm94LCBTY2FsYXIoMjU1LCAwLCAwKSwgMiwgMSk7Ci0gICAgIGltc2hvdygiR09UVVJOIFRyYWNraW5nIiwgaW1hZ2UpOwotQEAgLTIxNSwzICsyMjMsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotKwotKyNlbHNlIC8vICEgSEFWRV9PUEVOQ1ZfRE5OICYmIEhBVkVfT1BFTkNWX0RBVEFTRVRTCi0rI2luY2x1ZGUgPG9wZW5jdjIvY29yZS5ocHA+Ci0raW50IG1haW4oKSB7Ci0rICAgIENWX0Vycm9yKGN2OjpFcnJvcjo6U3RzTm90SW1wbGVtZW50ZWQgLCAidGhpcyBzYW1wbGUgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCBvcGVuY3ZfZGF0YXNldHMgYW5kIG9wZW5jdl9kbm4gISIpOwotKyAgICByZXR1cm4gLTE7Ci0rfQotKyNlbmRpZgotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9tdWx0aVRyYWNrZXJfZGF0YXNldC5jcHAgYi9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvbXVsdGlUcmFja2VyX2RhdGFzZXQuY3BwCi1pbmRleCAyODI2YjE5Li5iNWMyN2RhIDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL211bHRpVHJhY2tlcl9kYXRhc2V0LmNwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL211bHRpVHJhY2tlcl9kYXRhc2V0LmNwcAotQEAgLTIzNCw2ICsyMzQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIH0KLSAKLSAjZWxzZSAvLyAhIEhBVkVfT1BFTkNWX0RBVEFTRVRTCi0rI2luY2x1ZGUgPG9wZW5jdjIvY29yZS5ocHA+Ci0gaW50IG1haW4oKSB7Ci0gCUNWX0Vycm9yKGN2OjpFcnJvcjo6U3RzTm90SW1wbGVtZW50ZWQgLCAidGhpcyBzYW1wbGUgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCBvcGVuY3ZfZGF0YXNldHMgISIpOwotIAlyZXR1cm4gLTE7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL3RyYWNrZXJfZGF0YXNldC5jcHAgYi9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvdHJhY2tlcl9kYXRhc2V0LmNwcAotaW5kZXggOGI3ODMyYS4uNjE3ODEwNSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy90cmFja2VyX2RhdGFzZXQuY3BwCi0rKysgYi9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvdHJhY2tlcl9kYXRhc2V0LmNwcAotQEAgLTIzNCw2ICsyMzQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAotIAotICNlbHNlIC8vICEgSEFWRV9PUEVOQ1ZfREFUQVNFVFMKLSsjaW5jbHVkZSA8b3BlbmN2Mi9jb3JlLmhwcD4KLSBpbnQgbWFpbigpIHsKLSAJQ1ZfRXJyb3IoY3Y6OkVycm9yOjpTdHNOb3RJbXBsZW1lbnRlZCAsICJ0aGlzIHNhbXBsZSBuZWVkcyB0byBiZSBidWlsdCB3aXRoIG9wZW5jdl9kYXRhc2V0cyAhIik7Ci0gCXJldHVybiAtMTsKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmNwcCBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuY3BwCi1pbmRleCA1OGRlYmZkLi40OTA0ZjQ3IDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVHJhY2tlci5jcHAKLSsrKyBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuY3BwCi1AQCAtMzgsNyArMzgsNyBAQAotIC8vIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSwgZXZlbiBpZiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZS4KLSAvLwotIC8vTSovCi0tCi0rI2luY2x1ZGUgIm9wZW5jdjIvb3BlbmN2X21vZHVsZXMuaHBwIgotICNpbmNsdWRlICJndHJUcmFja2VyLmhwcCIKLSAKLSAKLUBAIC01NCw5ICs1NCwxNiBAQCB2b2lkIFRyYWNrZXJHT1RVUk46OlBhcmFtczo6d3JpdGUoY3Y6OkZpbGVTdG9yYWdlJiAvKmZzKi8pIGNvbnN0IHt9Ci0gCi0gUHRyPFRyYWNrZXJHT1RVUk4+IFRyYWNrZXJHT1RVUk46OmNyZWF0ZVRyYWNrZXIoY29uc3QgVHJhY2tlckdPVFVSTjo6UGFyYW1zICZwYXJhbWV0ZXJzKQotIHsKLSsjaWZkZWYgSEFWRV9PUEVOQ1ZfRE5OCi0gICAgIHJldHVybiBQdHI8Z3RyOjpUcmFja2VyR09UVVJOSW1wbD4obmV3IGd0cjo6VHJhY2tlckdPVFVSTkltcGwocGFyYW1ldGVycykpOwotKyNlbHNlCi0rICAgICh2b2lkKShwYXJhbWV0ZXJzKTsKLSsgICAgQ1ZfRXJyb3JOb1JldHVybihjdjo6RXJyb3I6OlN0c05vdEltcGxlbWVudGVkICwgInRvIHVzZSBHT1RVUk4sIHRoZSB0cmFja2luZyBtb2R1bGUgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCBvcGVuY3ZfZG5uICEiKTsKLSsjZW5kaWYKLSB9Ci0gCi0rCi0rI2lmZGVmIEhBVkVfT1BFTkNWX0ROTgotIG5hbWVzcGFjZSBndHIKLSB7Ci0gCi1AQCAtMTgzLDkgKzE5MCwxMSBAQCBib29sIFRyYWNrZXJHT1RVUk5JbXBsOjp1cGRhdGVJbXBsKGNvbnN0IE1hdCYgaW1hZ2UsIFJlY3QyZCYgYm91bmRpbmdCb3gpCi0gICAgIC8vU2V0IG5ldyBtb2RlbCBpbWFnZSBhbmQgQkIgZnJvbSBjdXJyZW50IGZyYW1lCi0gICAgICgoVHJhY2tlckdPVFVSTk1vZGVsKilzdGF0aWNfY2FzdDxUcmFja2VyTW9kZWwqPihtb2RlbCkpLT5zZXRJbWFnZShjdXJGcmFtZSk7Ci0gICAgICgoVHJhY2tlckdPVFVSTk1vZGVsKilzdGF0aWNfY2FzdDxUcmFja2VyTW9kZWwqPihtb2RlbCkpLT5zZXRCb3VkaW5nQm94KGN1ckJCKTsKLSsKLSAgICAgcmV0dXJuIHRydWU7Ci0gfQotIAotIH0KLSsjZW5kaWYgLy8gT1BFTkNWX0hBVkVfRE5OCi0gCi0gfQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuaHBwIGIvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVHJhY2tlci5ocHAKLWluZGV4IDM0ZjJjNDguLjIxYWUzZDkgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmhwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVHJhY2tlci5ocHAKLUBAIC00NSwxMSArNDUsMTUgQEAKLSAKLSAjaW5jbHVkZSAicHJlY29tcC5ocHAiCi0gI2luY2x1ZGUgIm9wZW5jdjIvdmlkZW8vdHJhY2tpbmcuaHBwIgotLSNpbmNsdWRlICJvcGVuY3YyL2Rubi5ocHAiCi0gI2luY2x1ZGUgImd0clV0aWxzLmhwcCIKLSAjaW5jbHVkZSAib3BlbmN2Mi9pbWdwcm9jLmhwcCIKLS0jaW5jbHVkZTxhbGdvcml0aG0+Ci0tI2luY2x1ZGU8bGltaXRzLmg+Ci0rCi0rI2luY2x1ZGUgPGFsZ29yaXRobT4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rCi0rI2luY2x1ZGUgIm9wZW5jdjIvb3BlbmN2X21vZHVsZXMuaHBwIgotKyNpZmRlZiBIQVZFX09QRU5DVl9ETk4KLSsjaW5jbHVkZSAib3BlbmN2Mi9kbm4uaHBwIgotIAotIG5hbWVzcGFjZSBjdgotIHsKLUBAIC03Miw1ICs3Niw1IEBAIHB1YmxpYzoKLSAKLSB9Ci0gfQotLQotKyNlbmRpZgotICNlbmRpZgotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmNwcCBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmNwcAotaW5kZXggMGRmMTE5Ny4uZTgwZGRhMSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmNwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVXRpbHMuY3BwCi1AQCAtNTgsNyArNTgsNyBAQCBkb3VibGUgZ2VuZXJhdGVSYW5kb21MYXBsYWNpYW4oZG91YmxlIGIsIGRvdWJsZSBtKQotICAgICAgICAgcmV0dXJuIG0gLSBiKmxvZyhuKTsKLSB9Ci0gCi0tUmVjdDJmIGFubm8ycmVjdCh2ZWN0b3I8UG9pbnQyZj4gYW5ub0JCKQotK1JlY3QyZiBhbm5vMnJlY3Qoc3RkOjp2ZWN0b3I8UG9pbnQyZj4gYW5ub0JCKQotIHsKLSAgICAgUmVjdDJmIHJlY3RCQjsKLSAgICAgcmVjdEJCLnggPSBtaW4oYW5ub0JCWzBdLngsIGFubm9CQlsxXS54KTsKLUBAIC02OSw5ICs2OSw5IEBAIFJlY3QyZiBhbm5vMnJlY3QodmVjdG9yPFBvaW50MmY+IGFubm9CQikKLSAgICAgcmV0dXJuIHJlY3RCQjsKLSB9Ci0gCi0tdmVjdG9yIDxUcmFpbmluZ1NhbXBsZT4gZ2F0aGVyRnJhbWVTYW1wbGVzKE1hdCBwcmV2RnJhbWUsIE1hdCBjdXJyRnJhbWUsIFJlY3QyZiBwcmV2QkIsIFJlY3QyZiBjdXJyQkIpCi0rc3RkOjp2ZWN0b3IgPFRyYWluaW5nU2FtcGxlPiBnYXRoZXJGcmFtZVNhbXBsZXMoTWF0IHByZXZGcmFtZSwgTWF0IGN1cnJGcmFtZSwgUmVjdDJmIHByZXZCQiwgUmVjdDJmIGN1cnJCQikKLSB7Ci0tICAgIHZlY3RvciA8VHJhaW5pbmdTYW1wbGU+IHRyYWluaW5nU2FtcGxlczsKLSsgICAgc3RkOjp2ZWN0b3IgPFRyYWluaW5nU2FtcGxlPiB0cmFpbmluZ1NhbXBsZXM7Ci0gICAgIFBvaW50MmYgY3VyckNlbnRlciwgcHJldkNlbnRlcjsKLSAgICAgUmVjdDJmIHRhcmdldFBhdGNoUmVjdCwgc2VhcmNoUGF0Y2hSZWN0OwotICAgICBNYXQgdGFyZ2V0UGF0Y2gsIHNlYXJjaFBhdGNoOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmhwcCBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmhwcAotaW5kZXggOGYzODhiZS4uNDFhYWQyMSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmhwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVXRpbHMuaHBwCi1AQCAtNCw3ICs0LDYgQEAKLSAjaW5jbHVkZSAicHJlY29tcC5ocHAiCi0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAjaW5jbHVkZSAib3BlbmN2Mi9oaWdoZ3VpLmhwcCIKLS0jaW5jbHVkZSA8b3BlbmN2Mi9kYXRhc2V0cy90cmFja19hbG92LmhwcD4KLSAKLSBuYW1lc3BhY2UgY3YKLSB7Ci1AQCAtNTAsMTAgKzQ5LDEwIEBAIHN0cnVjdCBUcmFpbmluZ1NhbXBsZQotIGRvdWJsZSBnZW5lcmF0ZVJhbmRvbUxhcGxhY2lhbihkb3VibGUgYiwgZG91YmxlIG0pOwotIAotIC8vQ29udmVydCBBTE9WMzAwKysgYW5ubyBjb29yZGluYXRlcyB0byBSZWN0YW5nbGUgQkIKLS1SZWN0MmYgYW5ubzJyZWN0KHZlY3RvcjxQb2ludDJmPiBhbm5vQkIpOwotK1JlY3QyZiBhbm5vMnJlY3Qoc3RkOjp2ZWN0b3I8UG9pbnQyZj4gYW5ub0JCKTsKLSAKLSAvL0dhdGhlciBzYW1wbGVzIGZyb20gcmFuZG9tIHZpZGVvIGZyYW1lCi0tdmVjdG9yIDxUcmFpbmluZ1NhbXBsZT4gZ2F0aGVyRnJhbWVTYW1wbGVzKE1hdCBwcmV2RnJhbWUsIE1hdCBjdXJyRnJhbWUsIFJlY3QyZiBwcmV2QkIsIFJlY3QyZiBjdXJyQkIpOwotK3N0ZDo6dmVjdG9yIDxUcmFpbmluZ1NhbXBsZT4gZ2F0aGVyRnJhbWVTYW1wbGVzKE1hdCBwcmV2RnJhbWUsIE1hdCBjdXJyRnJhbWUsIFJlY3QyZiBwcmV2QkIsIFJlY3QyZiBjdXJyQkIpOwotIAotIH0KLSB9Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cmFja2luZy9zcmMvdHJhY2tlci5jcHAgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy90cmFja2VyLmNwcAotaW5kZXggODEyN2YyYS4uYjk2YWNhOCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL3RyYWNrZXIuY3BwCi0rKysgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy90cmFja2VyLmNwcAotQEAgLTExMiw2ICsxMTIsNyBAQCBQdHI8VHJhY2tlcj4gVHJhY2tlcjo6Y3JlYXRlKCBjb25zdCBTdHJpbmcmIHRyYWNrZXJUeXBlICkKLSAgIEJPSUxFUlBMQVRFX0NPREUoIlRMRCIsVHJhY2tlclRMRCk7Ci0gICBCT0lMRVJQTEFURV9DT0RFKCJLQ0YiLFRyYWNrZXJLQ0YpOwotICAgQk9JTEVSUExBVEVfQ09ERSgiR09UVVJOIiwgVHJhY2tlckdPVFVSTik7Ci0rCi0gICByZXR1cm4gUHRyPFRyYWNrZXI+KCk7Ci0gfQotIAotLS0gCi0yLjkuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1Eby1ub3QtZW5hYmxlLWFzbS13aXRoLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmU4NjhhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaApAQCAtMCwwICsxLDk5MyBAQAorRnJvbSAzMzNmNjAxNjViNjczNzU4OGViOTc1YTVlNDM5M2Q4NDcwMTFhMWNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgU2VwIDIwMTcgMTg6MDc6MzUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIERvIG5vdCBlbmFibGUgYXNtIHdpdGggY2xhbmcKKworY2xhbmcgcHJldGVuZHMgdG8gYmUgZ2NjIDQuMi4wIHdoaWNoIG1lYW5zIHdlIHdpbGwKK3VzZSBpbmxpbmUgYXNtIGZvciBubyByZWFzb24sIGluc3RlYWQgb2YgYnVpbHRpbnMKK29uIGNsYW5nIHdoZW4gcG9zc2libGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAgIHwgIDQgKy0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAgfCAgMiArLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwICAgICB8IDc4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcCAgICAgICAgICB8IDU0ICsrKysrKysrKystLS0tLS0tLS0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcCAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCAgICB8ICAyICstCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwICAgICAgICAgIHwgIDggKy0tCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAgICAgICAgICAgIHwgIDQgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCitpbmRleCA4MjM4YTNlY2U4Li5mZjRmYjM3NzBjIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCitAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgZXh0cmFjdDQoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDJTdHJpZGUgJiYgXAorICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDNTdHJpZGUgJiYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIAorICNkZWZpbmUgU1BMSVRfQVNNMihzZ24sIGJpdHMpIF9fYXNtX18gKCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZsZDIuIiAjYml0cyAiIHtkMCwgZDJ9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiIFwKK0BAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBleHRyYWN0NChjb25zdCBTaXplMkQgJnNpemUsCisgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgfQorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgCisgI2RlZmluZSBBTFBIQV9RVUFEKHNnbiwgYml0cykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7IFwKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKK2luZGV4IGZjOThmYjkxODEuLjVkOTI1MWQ1MWMgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcAorQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIENBUk9URU5FX05TIHsKKyAgICAgICAgICAgICAgICAgIGRzdFN0cmlkZSA9PSBzcmMyU3RyaWRlICYmIFwKKyAgICAgICAgICAgICAgICAgIGRzdFN0cmlkZSA9PSBzcmMzU3RyaWRlICYmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAKKyAjZGVmaW5lIE1FUkdFX0FTTTIoc2duLCBiaXRzKSBfX2FzbV9fICggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2bGQxLiIgI2JpdHMgIiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgICBcblx0IiBcCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAoraW5kZXggMjZhZTU0YjE1Yy4uZDNhNDBmZTY0ZSAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAorQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCByZ2IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOworQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIHJnYjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCByZ2J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OworICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCByZ2J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIGJncjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKKyAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7CitAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgYmdyMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGJncngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOworQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIGJncngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgZ3JheTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IHNqIDwgcm9pdzE2OyBzaiArPSAxNiwgZGogKz0gNDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggcTEsIHEwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAKKyAgICAgICAgIGlmIChzaiA8IHJvaXc4KQorICAgICAgICAgeworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgInZsZDEuOCB7ZDB9LCBbJVtpbl1dICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZtb3YuOCBkMSwgZDAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQgZ3JheTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB2YzI1NSAgIGFzbSAoInE0IikgPSB2bW92cV9uX3U4KDI1NSk7CisgI2Vsc2UKKyAgICAgdWludDh4MTZ4NF90IHZSZ2JhOworQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIGdyYXkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgc2ogPCByb2l3MTY7IHNqICs9IDE2LCBkaiArPSA2NCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgInZsZDEuOCB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZtb3YuOCBxMSwgcTAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgZ3JheTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAKKyAgICAgICAgIGlmIChzaiA8IHJvaXc4KQorICAgICAgICAgeworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgInZsZDEuOCB7ZDV9LCBbJVtpbl1dICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZtb3YuOCBkNiwgZDUgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtMTQwOSw3ICsxNDA5LDcgQEAgaW5saW5lIHZvaWQgY29udmVydFRvSFNWKGNvbnN0IHMzMiByLCBjb25zdCBzMzIgZywgY29uc3QgczMyIGIsCisgICAgICAgICAgICAgICAiZDI0IiwiZDI1IiwiZDI2IiwiZDI3IiwiZDI4IiwiZDI5IiwiZDMwIiwiZDMxIiAgICAgICAgIFwKKyAgICAgICAgICAgICApOworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgCisgI2RlZmluZSBZQ1JDQl9DT05TVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZjWVIgIGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNig0ODk5KTsgICAgICAgICAgICAgICAgXAorQEAgLTE1NTUsNyArMTU1NSw3IEBAIGlubGluZSB1aW50OHg4eDNfdCBjb252ZXJ0VG9ZQ3JDYiggY29uc3QgaW50MTZ4OF90JiB2UiwgY29uc3QgaW50MTZ4OF90JiB2RywgY29uCisgI2RlZmluZSBDT0VGRl9HICAgKCAgODY2MykKKyAjZGVmaW5lIENPRUZGX0IgICAoLTE3NzA1KQorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgI2RlZmluZSBZVVY0MjBBTFBIQTNfQ09OU1QKKyAjZGVmaW5lIFlVVjQyMEFMUEhBNF9DT05TVCByZWdpc3RlciB1aW50OHgxNl90IGMyNTUgIGFzbSAoInExMyIpID0gdm1vdnFfbl91OCgyNTUpOworICNkZWZpbmUgWVVWNDIwQUxQSEEzX0NPTlZFUlQKK0BAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIHJnYjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lkIHJnYjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQzLjgge2QwLWQyfSwgZDAsIGQyKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTE5MDQsNyArMTkwNCw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIHJnYngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkNC44IHtkMC1kM30sIGQwLCBkMikKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2IgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0xOTU2LDcgKzE5NTYsNyBAQCB2b2lkIGJncjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0xOTc1LDcgKzE5NzUsNyBAQCB2b2lkIGJncjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQzLjgge2QwLWQyfSwgZDIsIGQwKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTIwMDgsNyArMjAwOCw3IEBAIHZvaWQgYmdyeDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0yMDI3LDcgKzIwMjcsNyBAQCB2b2lkIGJncngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkNC44IHtkMC1kM30sIGQyLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2IgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0yMDY4LDcgKzIwNjgsNyBAQCB2b2lkIHJnYngyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkNC44IHtkMiwgZDQsIGQ2LCBkOH0sIFslW2luMF1dICAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICBxNCAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkNC44IHtkMywgZDUsIGQ3LCBkOX0sIFslW2luMV1dICAgICAgICBAICB4eHh4eHh4eCBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiB4eHh4eHh4eCBcblx0IgorQEAgLTIxMjIsNyArMjEyMiw3IEBAIHZvaWQgcmdiMmJncjU2NShjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXcxNjsgc2ogKz0gNDgsIGRqICs9IDMyLCBqICs9IDE2KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDIsIGQ0LCBkNn0sIFslW2luMF1dICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgIHE0ICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QzLCBkNSwgZDd9LCBbJVtpbjFdXSAgICAgICBAICB4eHh4eHh4eCBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiB4eHh4eHh4eCBcblx0IgorQEAgLTIxNzYsNyArMjE3Niw3IEBAIHZvaWQgcmdieDJyZ2I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDY0LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QwLCBkMiwgZDQsIGQ2fSwgWyVbaW4wXV0gICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkNC44IHtkMSwgZDMsIGQ1LCBkN30sIFslW2luMV1dICAgIEAgIHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIGFhYWFBQUFBICAgXG5cdCIKK0BAIC0yMjMwLDcgKzIyMzAsNyBAQCB2b2lkIHJnYjJyZ2I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDQ4LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QwLCBkMiwgZDR9LCBbJVtpbjBdXSAgICAgICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkMy44IHtkMSwgZDMsIGQ1fSwgWyVbaW4xXV0gICAgICAgIEAgIHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIHh4eHh4eHh4ICAgXG5cdCIKK0BAIC0yMjg1LDcgKzIyODUsNyBAQCB2b2lkIHJnYjJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkMy44IHtkMC1kMn0sIGQwLCBkMSwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7CitAQCAtMjMyOSw3ICsyMzI5LDcgQEAgdm9pZCByZ2J4MnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQ0Ljgge2QwLWQzfSwgZDAsIGQxLCBkMikKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2JhID0gdmxkNF91OChzcmMgKyBzaik7CitAQCAtMjM3Myw3ICsyMzczLDcgQEAgdm9pZCBiZ3IyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDMuOCB7ZDAtZDJ9LCBkMiwgZDEsIGQwKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdkJnciA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTI0MTcsNyArMjQxNyw3IEBAIHZvaWQgYmdyeDJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkNC44IHtkMC1kM30sIGQyLCBkMSwgZDApCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2QmdyYSA9IHZsZDRfdTgoc3JjICsgc2opOworQEAgLTI0OTksNyArMjQ5OSw3IEBAIHZvaWQgeXV2NDIwc3AycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMSwgZDAsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgeXV2NDIwc3AycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDEsIGQwLCBxNSwgcTYpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNTkxLDcgKzI1OTEsNyBAQCB2b2lkIHl1djQyMGkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMCwgZDEsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI2MzcsNyArMjYzNyw3IEBAIHZvaWQgeXV2NDIwaTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMCwgZDEsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI2ODMsNyArMjY4Myw3IEBAIHZvaWQgeXV2NDIwc3AyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMSwgZDAsIHE2LCBxNSkKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI3MjksNyArMjcyOSw3IEBAIHZvaWQgeXV2NDIwc3AyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDEsIGQwLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNzc1LDcgKzI3NzUsNyBAQCB2b2lkIHl1djQyMGkyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMCwgZDEsIHE2LCBxNSkKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgeXV2NDIwaTJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMCwgZDEsIHE2LCBxNSkKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcAoraW5kZXggNjRiNmRiNzhhYi4uZjBjMmQxNTNmMiAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCitAQCAtMTAxLDcgKzEwMSw3IEBAIENWVF9GVU5DKHU4LCBzOCwgMTYsCisgICAgICB9CisgfSkKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHU4LCB1MTYsIDE2LAorICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91OCgwKTssCisgeworQEAgLTEzNSw3ICsxMzUsNyBAQCBDVlRfRlVOQyh1OCwgdTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCisgICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3U4KDApOworICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMSBhc20gKCJxMiIpID0gdm1vdnFfbl91OCgwKTsKK0BAIC0xNzMsNyArMTczLDcgQEAgQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHU4LCBmMzIsIDE2LAorICwKKyB7CitAQCAtMjQ4LDcgKzI0OCw3IEBAIENWVF9GVU5DKHM4LCB1OCwgMTYsCisgICAgICB9CisgfSkKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHM4LCB1MTYsIDE2LAorICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91OCgwKTssCisgeworQEAgLTI4NCw3ICsyODQsNyBAQCBDVlRfRlVOQyhzOCwgdTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCisgLAorIHsKK0BAIC0zMjMsNyArMzIzLDcgQEAgQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHM4LCBzMzIsIDE2LAorICwKKyB7CitAQCAtMzc3LDcgKzM3Nyw3IEBAIENWVF9GVU5DKHM4LCBzMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzOCwgZjMyLCAxNiwKKyAsCisgeworQEAgLTQ0MCw3ICs0NDAsNyBAQCBDVlRfRlVOQyhzOCwgZjMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCisgLAorIHsKK0BAIC00NzksNyArNDc5LDcgQEAgQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHUxNiwgczgsIDE2LAorICAgICByZWdpc3RlciB1aW50OHgxNl90IHYxMjcgYXNtICgicTQiKSA9IHZtb3ZxX25fdTgoMTI3KTssCisgeworQEAgLTUyMiw3ICs1MjIsNyBAQCBDVlRfRlVOQyh1MTYsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkModTE2LCBzMTYsIDgsCisgICAgICByZWdpc3RlciB1aW50MTZ4OF90IHYzMjc2NyBhc20gKCJxNCIpID0gdm1vdnFfbl91MTYoMHg3RkZGKTssCisgeworQEAgLTU1NSw3ICs1NTUsNyBAQCBDVlRfRlVOQyh1MTYsIHMxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkModTE2LCBzMzIsIDgsCisgICAgICByZWdpc3RlciB1aW50MTZ4OF90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3UxNigwKTssCisgeworQEAgLTU4OSw3ICs1ODksNyBAQCBDVlRfRlVOQyh1MTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkModTE2LCBmMzIsIDgsCisgLAorIHsKK0BAIC02MzMsNyArNjMzLDcgQEAgQ1ZUX0ZVTkModTE2LCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMxNiwgdTgsIDE2LAorICwKKyB7CitAQCAtNjcyLDcgKzY3Miw3IEBAIENWVF9GVU5DKHMxNiwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKKyAsCisgeworQEAgLTcxMSw3ICs3MTEsNyBAQCBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczE2LCB1MTYsIDgsCisgICAgICByZWdpc3RlciBpbnQxNng4X3Qgdlplcm8gYXNtICgicTQiKSA9IHZtb3ZxX25fczE2KDApOywKKyB7CitAQCAtNzQ3LDcgKzc0Nyw3IEBAIENWVF9GVU5DKHMxNiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMTYsIHMzMiwgOCwKKyAsCisgeworQEAgLTc4Niw3ICs3ODYsNyBAQCBDVlRfRlVOQyhzMTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCisgLAorIHsKK0BAIC04MjksNyArODI5LDcgQEAgQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMzMiwgdTgsIDgsCisgLAorIHsKK0BAIC04NzAsNyArODcwLDcgQEAgQ1ZUX0ZVTkMoczMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczMyLCBzOCwgOCwKKyAsCisgeworQEAgLTkxMSw3ICs5MTEsNyBAQCBDVlRfRlVOQyhzMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKKyAsCisgeworQEAgLTk1MCw3ICs5NTAsNyBAQCBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczMyLCBzMTYsIDgsCisgLAorIHsKK0BAIC05ODksNyArOTg5LDcgQEAgQ1ZUX0ZVTkMoczMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMzMiwgZjMyLCA4LAorICwKKyB7CitAQCAtMTAzNCw3ICsxMDM0LDcgQEAgQ1ZUX0ZVTkMoczMyLCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKGYzMiwgdTgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZtdWx0IGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZmxvYXQpKDEgPDwgMTYpKTsKKyAgICAgcmVnaXN0ZXIgdWludDMyeDRfdCAgdm1hc2sgYXNtICgicTEiKSA9IHZkdXBxX25fdTMyKDE8PDE2KTssCitAQCAtMTEwMSw3ICsxMTAxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoZjMyLCBzOCwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworQEAgLTExNTMsNyArMTE1Myw3IEBAIENWVF9GVU5DKGYzMiwgczgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKGYzMiwgdTE2LCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitAQCAtMTIxMiw3ICsxMjEyLDcgQEAgQ1ZUX0ZVTkMoZjMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKGYzMiwgczE2LCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitAQCAtMTI3MSw3ICsxMjcxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKGYzMiwgczMyLCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwCitpbmRleCBhZTQxYTk4NWM4Li5kNTk5ZDI0YzFlIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKK0BAIC00NzMsNyArNDczLDcgQEAgQ1ZUU19GVU5DKHU4LCBzMTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkModTgsIHMzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTU2Miw3ICs1NjIsNyBAQCBDVlRTX0ZVTkModTgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyh1OCwgZjMyLCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC05ODUsNyArOTg1LDcgQEAgQ1ZUU19GVU5DKHM4LCBzMTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczgsIHMzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTEwNzQsNyArMTA3NCw3IEBAIENWVFNfRlVOQyhzOCwgczMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHM4LCBmMzIsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTExNTUsNyArMTE1NSw3IEBAIENWVFNfRlVOQyhzOCwgZjMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHUxNiwgdTgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMjE0LDcgKzEyMTQsNyBAQCBDVlRTX0ZVTkModTE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyh1MTYsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTI3Myw3ICsxMjczLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMxKHUxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTEzMzAsNyArMTMzMCw3IEBAIENWVFNfRlVOQzEodTE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHUxNiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMzg3LDcgKzEzODcsNyBAQCBDVlRTX0ZVTkModTE2LCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyh1MTYsIHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkModTE2LCBmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgQ1ZUU19GVU5DKHUxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczE2LCB1OCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE1NTQsNyArMTU1NCw3IEBAIENWVFNfRlVOQyhzMTYsIHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMxNiwgczgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNjEzLDcgKzE2MTMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMTYsIHUxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTY3MCw3ICsxNjcwLDcgQEAgQ1ZUU19GVU5DKHMxNiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMxKHMxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE3MjcsNyArMTcyNyw3IEBAIENWVFNfRlVOQzEoczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMxNiwgczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNzgzLDcgKzE3ODMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMTYsIGYzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0xODM1LDcgKzE4MzUsNyBAQCBDVlRTX0ZVTkMoczE2LCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMzIsIHU4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xODkzLDcgKzE4OTMsNyBAQCBDVlRTX0ZVTkMoczMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMzMiwgczgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE5NTEsNyArMTk1MSw3IEBAIENWVFNfRlVOQyhzMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczMyLCB1MTYsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIwMDcsNyArMjAwNyw3IEBAIENWVFNfRlVOQyhzMzIsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMzMiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMDYzLDcgKzIwNjMsNyBAQCBDVlRTX0ZVTkMoczMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQzEoczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMTE4LDcgKzIxMTgsNyBAQCBDVlRTX0ZVTkMxKHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMzMiwgZjMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTIxNjksNyArMjE2OSw3IEBAIENWVFNfRlVOQyhzMzIsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKGYzMiwgdTgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMikoKDEgPDwgMTYpKmFscGhhKSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMikoKDEgPDwgMTYpKmJldGEpKTsKK0BAIC0yMjM5LDcgKzIyMzksNyBAQCBDVlRTX0ZVTkMoZjMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKGYzMiwgczgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIyOTMsNyArMjI5Myw3IEBAIENWVFNfRlVOQyhmMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoZjMyLCB1MTYsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIzNDUsNyArMjM0NSw3IEBAIENWVFNfRlVOQyhmMzIsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKGYzMiwgczE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMzk3LDcgKzIzOTcsNyBAQCBDVlRTX0ZVTkMoZjMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhmMzIsIHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMxKGYzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAKK2luZGV4IGY3YjVmMThkNzkuLmU1YWE4ZmM3NWIgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAorQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIGdhdXNzaWFuQmx1cjV4NShjb25zdCBTaXplMkQgJnNpemUsIHMzMiBjbiwKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MSA9IGxhbmUgKyB4IC0gMSoyOworICAgICAgICAgICAgICAgICB1MTYqIGxpZHgzID0gbGFuZSArIHggKyAxKjI7CisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDQgPSBsYW5lICsgeCArIDIqMjsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDAsIGQyfSwgWyVbaW4wXV0hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkMSwgZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAoraW5kZXggMjMyY2NmM2VmZC4uZDRlMzJlYTUwZiAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwCitAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgICAgICAgICAgZm9yICg7IHggPCByb2l3ODsgeCArPSA4KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyAyICogeCk7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKKyAgICAgICAgICAgICBmb3IgKDsgeCA8IHJvaXc0OyB4ICs9IDQpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIDIgKiB4KTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjMyIHtkMC1kM30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjMyIHtkNC1kN30sIFslW2luNF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKKyAgICAgc3RkOjp2ZWN0b3I8ZjMyPiBfYnVmKGNuKihzcmNTaXplLndpZHRoICsgNCkgKyAzMi9zaXplb2YoZjMyKSk7CisgICAgIGYzMiogbGFuZSA9IGludGVybmFsOjphbGlnblB0cigmX2J1ZlsyKmNuXSwgMzIpOworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZjNmQ0ZjMyICBhc20gKCJxMTEiKSA9IHZtb3ZxX25fZjMyKDEuNWYpOyAgLy8gNi80CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZjMWQ0ZjMyICBhc20gKCJxMTIiKSA9IHZtb3ZxX25fZjMyKDAuMjVmKTsgLy8gMS80CisgCitAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgICAgICAgICAgZm9yICg7IHggPCByb2l3NDsgeCArPSA0KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyAyICogeCk7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q4LWQxMX0sIFslW2luNF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAKK2luZGV4IDhkM2I2MzI4YjEuLjM2ZjZiMjI3NmUgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAKK0BAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY2hhcnJEZXJpdihjb25zdCBTaXplMkQgJnNpemUsIHMzMiBjbiwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JvdzAgKyB4KTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JvdzEgKyB4KTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JvdzIgKyB4KTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkMS44IHtkMH0sIFslW3NyYzBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDEuOCB7ZDJ9LCBbJVtzcmMyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU2NoYXJyRGVyaXYoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICB4ID0gMDsKKyAgICAgICAgIGZvciggOyB4IDwgcm9pdzg7IHggKz0gOCApCisgICAgICAgICB7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDEuMTYge2Q0LWQ1fSwgWyVbczJwdHJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQxLjE2IHtkOC1kOX0sIFslW3M0cHRyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItTWFrZS1vcGVuY3YtdHMtY3JlYXRlLXNoYXJlLWxpYnJhcnktaW50ZWFkLW9mLXN0YXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg0NTUwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAzNTA1MjUyOTNhZWY2NTQ5MGU4MDEwNGRkZDk5ZTFiMjFjNWQ1NGIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+CitEYXRlOiBXZWQsIDE5IEFwciAyMDE3IDAzOjExOjM3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBNYWtlIG9wZW5jdi10cyBjcmVhdGUgc2hhcmUgbGlicmFyeSBpbnRlYWQgb2Ygc3RhdGljLgorCitTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CistLS0KKyBtb2R1bGVzL3RzL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY5NWJlZDA3OS4uZWU2Nzg1OGRmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dAorKysrIGIvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dAorQEAgLTQsNyArNCw3IEBAIGlmKE5PVCBCVUlMRF9vcGVuY3ZfdHMgQU5EIE5PVCBCVUlMRF9URVNUUyBBTkQgTk9UIEJVSUxEX1BFUkZfVEVTVFMpCisgICBvY3ZfbW9kdWxlX2Rpc2FibGUodHMpCisgZW5kaWYoKQorIAorLXNldChPUEVOQ1ZfTU9EVUxFX1RZUEUgU1RBVElDKQorKyNzZXQoT1BFTkNWX01PRFVMRV9UWVBFIFNUQVRJQykKKyBzZXQoT1BFTkNWX01PRFVMRV9JU19QQVJUX09GX1dPUkxEIEZBTFNFKQorIAorIGlmKFdJTlJUKQorLS0gCisyLjEzLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItUmV2ZXJ0LWNoZWNrLUZQMTYtYnVpbGQtY29uZGl0aW9uLWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLVJldmVydC1jaGVjay1GUDE2LWJ1aWxkLWNvbmRpdGlvbi1jb3JyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxOTUwYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItUmV2ZXJ0LWNoZWNrLUZQMTYtYnVpbGQtY29uZGl0aW9uLWNvcnJlY3RseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi1Gcm9tIDkxMDhlMzllNTU4NGVmOWI0MWY4MDc1MTYzOWI0ZWM3MmIzZTk1MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI2IEFwciAyMDE3IDE1OjAwOjMyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZXZlcnQgImNoZWNrIEZQMTYgYnVpbGQgY29uZGl0aW9uIGNvcnJlY3RseSIKLQotVGhpcyByZXZlcnRzIGNvbW1pdCBjN2NiMTE2ZGMwODQ0MWZlNTZjZjgyZDViMjFmOTI5ZTViNjc0YzEzLgotCi1GaXggdXAgcmV2ZXJ0IGNvbmZsaWN0cyB0byB0YWtlIHByZXZpb3VzIGJlaGF2aW91ci4KLS0tLQotIGNtYWtlL09wZW5DVkNvbXBpbGVyT3B0aW9ucy5jbWFrZSAgICAgICAgIHwgNDUgKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSBtb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaCB8ICAyICstCi0gbW9kdWxlcy9jb3JlL3NyYy9jb252ZXJ0LmNwcCAgICAgICAgICAgICAgfCAxMSArKystLS0KLSBtb2R1bGVzL2NvcmUvdGVzdC90ZXN0X2ludHJpbi5jcHAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY21ha2UvT3BlbkNWQ29tcGlsZXJPcHRpb25zLmNtYWtlIGIvY21ha2UvT3BlbkNWQ29tcGlsZXJPcHRpb25zLmNtYWtlCi1pbmRleCA1YmIwNDc5Li40YjE5ZmRiIDEwMDY0NAotLS0tIGEvY21ha2UvT3BlbkNWQ29tcGlsZXJPcHRpb25zLmNtYWtlCi0rKysgYi9jbWFrZS9PcGVuQ1ZDb21waWxlck9wdGlvbnMuY21ha2UKLUBAIC0xODUsNyArMTg1LDcgQEAgaWYoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQotICAgICBhZGRfZXh0cmFfY29tcGlsZXJfb3B0aW9uKCItbWZwMTYtZm9ybWF0PWllZWUiKQotICAgZW5kaWYoQVJNKQotICAgaWYoRU5BQkxFX05FT04pCi0tICAgIGFkZF9leHRyYV9jb21waWxlcl9vcHRpb24oIi1tZnB1PW5lb24iKQotKyAgICBhZGRfZXh0cmFfY29tcGlsZXJfb3B0aW9uKCItbWZwdT1uZW9uLWZwMTYiKQotICAgZW5kaWYoKQotICAgaWYoRU5BQkxFX1ZGUFYzIEFORCBOT1QgRU5BQkxFX05FT04pCi0gICAgIGFkZF9leHRyYV9jb21waWxlcl9vcHRpb24oIi1tZnB1PXZmcHYzIikKLUBAIC0zNzAsMzQgKzM3MCw2IEBAIGlmKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCBBTkQgQ01BS0VfT1BFTkNWX0dDQ19WRVJTSU9OX05VTSBHUkVBVEVSIDM5OSkKLSAgIGFkZF9leHRyYV9jb21waWxlcl9vcHRpb24oLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuKQotIGVuZGlmKCkKLSAKLS1pZihOT1QgT1BFTkNWX0ZQMTZfRElTQUJMRSBBTkQgTk9UIElPUykKLS0gIGlmKEFSTSBBTkQgRU5BQkxFX05FT04pCi0tICAgIHNldChGUDE2X09QVElPTiAiLW1mcHU9bmVvbi1mcDE2IikKLS0gIGVsc2VpZigoWDg2IE9SIFg4Nl82NCkgQU5EIE5PVCBNU1ZDIEFORCBFTkFCTEVfQVZYKQotLSAgICBzZXQoRlAxNl9PUFRJT04gIi1tZjE2YyIpCi0tICBlbmRpZigpCi0tICB0cnlfY29tcGlsZShfX1ZBTElEX0ZQMTYKLS0gICAgIiR7T3BlbkNWX0JJTkFSWV9ESVJ9IgotLSAgICAiJHtPcGVuQ1ZfU09VUkNFX0RJUn0vY21ha2UvY2hlY2tzL2ZwMTYuY3BwIgotLSAgICBDT01QSUxFX0RFRklOSVRJT05TICItRENIRUNLX0ZQMTYiICIke0ZQMTZfT1BUSU9OfSIKLS0gICAgT1VUUFVUX1ZBUklBQkxFIFRSWV9PVVQKLS0gICAgKQotLSAgaWYoTk9UIF9fVkFMSURfRlAxNikKLS0gICAgaWYoKFg4NiBPUiBYODZfNjQpIEFORCBOT1QgTVNWQyBBTkQgTk9UIEVOQUJMRV9BVlgpCi0tICAgICAgIyBHQ0MgZW5hYmxlcyBBVlggd2hlbiBtZjE2YyBpcyBwYXNzZWQKLS0gICAgICBtZXNzYWdlKFNUQVRVUyAiRlAxNjogRmVhdHVyZSBkaXNhYmxlZCIpCi0tICAgIGVsc2UoKQotLSAgICAgIG1lc3NhZ2UoU1RBVFVTICJGUDE2OiBDb21waWxlciBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUiKQotLSAgICBlbmRpZigpCi0tICBlbHNlKCkKLS0gICAgbWVzc2FnZShTVEFUVVMgIkZQMTY6IENvbXBpbGVyIHN1cHBvcnQgaXMgYXZhaWxhYmxlIikKLS0gICAgc2V0KEhBVkVfRlAxNiAxKQotLSAgICBpZihOT1QgJHtGUDE2X09QVElPTn0gU1RSRVFVQUwgIiIpCi0tICAgICAgYWRkX2V4dHJhX2NvbXBpbGVyX29wdGlvbigke0ZQMTZfT1BUSU9OfSkKLS0gICAgZW5kaWYoKQotLSAgZW5kaWYoKQotLWVuZGlmKCkKLS0KLSAjY29tYmluZSBhbGwgImV4dHJhIiBvcHRpb25zCi0gc2V0KENNQUtFX0NfRkxBR1MgICAgICAgICAgICIke0NNQUtFX0NfRkxBR1N9ICR7T1BFTkNWX0VYVFJBX0ZMQUdTfSAke09QRU5DVl9FWFRSQV9DX0ZMQUdTfSIpCi0gc2V0KENNQUtFX0NYWF9GTEFHUyAgICAgICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtPUEVOQ1ZfRVhUUkFfRkxBR1N9ICR7T1BFTkNWX0VYVFJBX0NYWF9GTEFHU30iKQotQEAgLTQ1MCw2ICs0MjIsMjEgQEAgaWYoTVNWQykKLSAgIGVuZGlmKCkKLSBlbmRpZigpCi0gCi0raWYoTk9UIE9QRU5DVl9GUDE2X0RJU0FCTEUpCi0rICB0cnlfY29tcGlsZShfX1ZBTElEX0ZQMTYKLSsgICAgIiR7T3BlbkNWX0JJTkFSWV9ESVJ9IgotKyAgICAiJHtPcGVuQ1ZfU09VUkNFX0RJUn0vY21ha2UvY2hlY2tzL2ZwMTYuY3BwIgotKyAgICBDT01QSUxFX0RFRklOSVRJT05TICItRENIRUNLX0ZQMTYiCi0rICAgIE9VVFBVVF9WQVJJQUJMRSBUUllfT1VUCi0rICAgICkKLSsgIGlmKE5PVCBfX1ZBTElEX0ZQMTYpCi0rICAgIG1lc3NhZ2UoU1RBVFVTICJGUDE2OiBDb21waWxlciBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUiKQotKyAgZWxzZSgpCi0rICAgIG1lc3NhZ2UoU1RBVFVTICJGUDE2OiBDb21waWxlciBzdXBwb3J0IGlzIGF2YWlsYWJsZSIpCi0rICAgIHNldChIQVZFX0ZQMTYgMSkKLSsgIGVuZGlmKCkKLStlbmRpZigpCi0rCi0gaWYoQVBQTEUgQU5EIE5PVCBDTUFLRV9DUk9TU0NPTVBJTElORyBBTkQgTk9UIERFRklORUQgRU5We0xERkxBR1N9IEFORCBFWElTVFMgIi91c3IvbG9jYWwvbGliIikKLSAgIGxpbmtfZGlyZWN0b3JpZXMoIi91c3IvbG9jYWwvbGliIikKLSBlbmRpZigpCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmggYi9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaAotaW5kZXggZWZjMjRjYS4uYTEwOTM2YiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oCi0rKysgYi9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaAotQEAgLTMxMiw3ICszMTIsNyBAQCBlbnVtIENwdUZlYXR1cmVzIHsKLSB0eXBlZGVmIHVuaW9uIEN2MTZzdWYKLSB7Ci0gICAgIHNob3J0IGk7Ci0tI2lmIENWX0ZQMTZfVFlQRQotKyNpZiAoIGRlZmluZWQgKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKSApICYmICFkZWZpbmVkIChfX0NVREFDQ19fKSAmJiAoIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoICggKCA0IDw9IF9fR05VQ19fICkgJiYgKCA3IDw9IF9fR05VQ19fICkgKSB8fCAoIDUgPD0gX19HTlVDX18gKSApICkKLSAgICAgX19mcDE2IGg7Ci0gI2VuZGlmCi0gICAgIHN0cnVjdCBfZnAxNkZvcm1hdAotZGlmZiAtLWdpdCBhL21vZHVsZXMvY29yZS9zcmMvY29udmVydC5jcHAgYi9tb2R1bGVzL2NvcmUvc3JjL2NvbnZlcnQuY3BwCi1pbmRleCBlMDRkODllLi40NmRiMjZmIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9jb3JlL3NyYy9jb252ZXJ0LmNwcAotKysrIGIvbW9kdWxlcy9jb3JlL3NyYy9jb252ZXJ0LmNwcAotQEAgLTQ0LDcgKzQ0LDYgQEAKLSAjaW5jbHVkZSAicHJlY29tcC5ocHAiCi0gCi0gI2luY2x1ZGUgIm9wZW5jbF9rZXJuZWxzX2NvcmUuaHBwIgotLSNpbmNsdWRlICJvcGVuY3YyL2NvcmUvaGFsL2ludHJpbi5ocHAiCi0gCi0gI2luY2x1ZGUgIm9wZW5jdjIvY29yZS9vcGVudngvb3Z4X2RlZnMuaHBwIgotIAotQEAgLTQzODIsNyArNDM4MSw3IEBAIHN0cnVjdCBDdnRfU0lNRDxmbG9hdCwgaW50PgotIAotICNlbmRpZgotIAotLSNpZiAhQ1ZfRlAxNl9UWVBFCi0rI2lmICEoICggZGVmaW5lZCAoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pICkgJiYgKCBkZWZpbmVkIChfX0dOVUNfXykgJiYgKCAoICggNCA8PSBfX0dOVUNfXyApICYmICggNyA8PSBfX0dOVUNfXyApICkgfHwgKCA1IDw9IF9fR05VQ19fICkgKSApICkKLSAvLyBjb25zdCBudW1iZXJzIGZvciBmbG9hdGluZyBwb2ludHMgZm9ybWF0Ci0gY29uc3QgdW5zaWduZWQgaW50IGtTaGlmdFNpZ25pZmljYW5kICAgID0gMTM7Ci0gY29uc3QgdW5zaWduZWQgaW50IGtNYXNrRnAxNlNpZ25pZmljYW5kID0gMHgzZmY7Ci1AQCAtNDM5MCw3ICs0Mzg5LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGtCaWFzRnAxNkV4cG9uZW50ICAgID0gMTU7Ci0gY29uc3QgdW5zaWduZWQgaW50IGtCaWFzRnAzMkV4cG9uZW50ICAgID0gMTI3OwotICNlbmRpZgotIAotLSNpZiBDVl9GUDE2X1RZUEUKLSsjaWYgKCBkZWZpbmVkIChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykgKSAmJiAoIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoICggKCA0IDw9IF9fR05VQ19fICkgJiYgKCA3IDw9IF9fR05VQ19fICkgKSB8fCAoIDUgPD0gX19HTlVDX18gKSApICkKLSBzdGF0aWMgZmxvYXQgY29udmVydEZwMTZTVyhzaG9ydCBmcDE2KQotIHsKLSAgICAgLy8gRnAxNiAtPiBGcDMyCi1AQCAtNDQ1Miw3ICs0NDUxLDcgQEAgc3RhdGljIGZsb2F0IGNvbnZlcnRGcDE2U1coc2hvcnQgZnAxNikKLSB9Ci0gI2VuZGlmCi0gCi0tI2lmIENWX0ZQMTZfVFlQRQotKyNpZiAoIGRlZmluZWQgKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKSApICYmICggZGVmaW5lZCAoX19HTlVDX18pICYmICggKCAoIDQgPD0gX19HTlVDX18gKSAmJiAoIDcgPD0gX19HTlVDX18gKSApIHx8ICggNSA8PSBfX0dOVUNfXyApICkgKQotIHN0YXRpYyBzaG9ydCBjb252ZXJ0RnAxNlNXKGZsb2F0IGZwMzIpCi0gewotICAgICAvLyBGcDMyIC0+IEZwMTYKLUBAIC00NTYwLDcgKzQ1NTksNyBAQCBjdnRTY2FsZUhhbGZfPGZsb2F0LCBzaG9ydD4oIGNvbnN0IGZsb2F0KiBzcmMsIHNpemVfdCBzc3RlcCwgc2hvcnQqIGRzdCwgc2l6ZV90Ci0gICAgICAgICAgICAgaWYgKCAoIChpbnRwdHJfdClkc3QgJiAweGYgKSA9PSAwICkKLSAjZW5kaWYKLSAgICAgICAgICAgICB7Ci0tI2lmIENWX0ZQMTYgJiYgQ1ZfU0lNRDEyOAotKyNpZiBDVl9GUDE2Ci0gICAgICAgICAgICAgICAgIGZvciAoIDsgeCA8PSBzaXplLndpZHRoIC0gNDsgeCArPSA0KQotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICB2X2Zsb2F0MzJ4NCB2X3NyYyA9IHZfbG9hZChzcmMgKyB4KTsKLUBAIC00NjA2LDcgKzQ2MDUsNyBAQCBjdnRTY2FsZUhhbGZfPHNob3J0LCBmbG9hdD4oIGNvbnN0IHNob3J0KiBzcmMsIHNpemVfdCBzc3RlcCwgZmxvYXQqIGRzdCwgc2l6ZV90Ci0gICAgICAgICAgICAgaWYgKCAoIChpbnRwdHJfdClzcmMgJiAweGYgKSA9PSAwICkKLSAjZW5kaWYKLSAgICAgICAgICAgICB7Ci0tI2lmIENWX0ZQMTYgJiYgQ1ZfU0lNRDEyOAotKyNpZiBDVl9GUDE2Ci0gICAgICAgICAgICAgICAgIGZvciAoIDsgeCA8PSBzaXplLndpZHRoIC0gNDsgeCArPSA0KQotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICB2X2Zsb2F0MTZ4NCB2X3NyYyA9IHZfbG9hZF9mMTYoc3JjICsgeCk7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9jb3JlL3Rlc3QvdGVzdF9pbnRyaW4uY3BwIGIvbW9kdWxlcy9jb3JlL3Rlc3QvdGVzdF9pbnRyaW4uY3BwCi1pbmRleCA2NmIyMDgzLi43MzQ5ZDQ4IDEwMDY0NAotLS0tIGEvbW9kdWxlcy9jb3JlL3Rlc3QvdGVzdF9pbnRyaW4uY3BwCi0rKysgYi9tb2R1bGVzL2NvcmUvdGVzdC90ZXN0X2ludHJpbi5jcHAKLUBAIC03MjksNTYgKzcyOSw0OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSPiBzdHJ1Y3QgVGhlVGVzdAotICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICB9Ci0gCi0rI2lmIENWX0ZQMTYKLSAgICAgVGhlVGVzdCAmIHRlc3RfbG9hZHN0b3JlX2ZwMTYoKQotICAgICB7Ci0tI2lmIENWX0ZQMTYKLSAgICAgICAgIEFsaWduZWREYXRhPFI+IGRhdGE7Ci0gICAgICAgICBBbGlnbmVkRGF0YTxSPiBvdXQ7Ci0gCi0tICAgICAgICBpZihjaGVja0hhcmR3YXJlU3VwcG9ydChDVl9DUFVfRlAxNikpCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gY2hlY2sgaWYgYWRkcmVzc2VzIGFyZSBhbGlnbmVkIGFuZCB1bmFsaWduZWQgcmVzcGVjdGl2ZWx5Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKChzaXplX3QpMCwgKHNpemVfdCkmZGF0YS5hLmQgJSAxNik7Ci0tICAgICAgICAgICAgRVhQRUNUX05FKChzaXplX3QpMCwgKHNpemVfdCkmZGF0YS51LmQgJSAxNik7Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKChzaXplX3QpMCwgKHNpemVfdCkmb3V0LmEuZCAlIDE2KTsKLS0gICAgICAgICAgICBFWFBFQ1RfTkUoKHNpemVfdCkwLCAoc2l6ZV90KSZvdXQudS5kICUgMTYpOwotLQotLSAgICAgICAgICAgIC8vIGNoZWNrIHNvbWUgaW5pdGlhbGl6YXRpb24gbWV0aG9kcwotLSAgICAgICAgICAgIFIgcjEgPSBkYXRhLnU7Ci0tICAgICAgICAgICAgUiByMiA9IHZfbG9hZF9mMTYoZGF0YS5hLmQpOwotLSAgICAgICAgICAgIFIgcjMocjIpOwotLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLnVbMF0sIHIxLmdldDAoKSk7Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuYVswXSwgcjIuZ2V0MCgpKTsKLS0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5hWzBdLCByMy5nZXQwKCkpOwotLQotLSAgICAgICAgICAgIC8vIGNoZWNrIHNvbWUgc3RvcmUgbWV0aG9kcwotLSAgICAgICAgICAgIG91dC5hLmNsZWFyKCk7Ci0tICAgICAgICAgICAgdl9zdG9yZV9mMTYob3V0LmEuZCwgcjEpOwotLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmEsIG91dC5hKTsKLS0gICAgICAgIH0KLSsgICAgICAgIC8vIGNoZWNrIGlmIGFkZHJlc3NlcyBhcmUgYWxpZ25lZCBhbmQgdW5hbGlnbmVkIHJlc3BlY3RpdmVseQotKyAgICAgICAgRVhQRUNUX0VRKChzaXplX3QpMCwgKHNpemVfdCkmZGF0YS5hLmQgJSAxNik7Ci0rICAgICAgICBFWFBFQ1RfTkUoKHNpemVfdCkwLCAoc2l6ZV90KSZkYXRhLnUuZCAlIDE2KTsKLSsgICAgICAgIEVYUEVDVF9FUSgoc2l6ZV90KTAsIChzaXplX3QpJm91dC5hLmQgJSAxNik7Ci0rICAgICAgICBFWFBFQ1RfTkUoKHNpemVfdCkwLCAoc2l6ZV90KSZvdXQudS5kICUgMTYpOwotKwotKyAgICAgICAgLy8gY2hlY2sgc29tZSBpbml0aWFsaXphdGlvbiBtZXRob2RzCi0rICAgICAgICBSIHIxID0gZGF0YS51OwotKyAgICAgICAgUiByMiA9IHZfbG9hZF9mMTYoZGF0YS5hLmQpOwotKyAgICAgICAgUiByMyhyMik7Ci0rICAgICAgICBFWFBFQ1RfRVEoZGF0YS51WzBdLCByMS5nZXQwKCkpOwotKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuYVswXSwgcjIuZ2V0MCgpKTsKLSsgICAgICAgIEVYUEVDVF9FUShkYXRhLmFbMF0sIHIzLmdldDAoKSk7Ci0rCi0rICAgICAgICAvLyBjaGVjayBzb21lIHN0b3JlIG1ldGhvZHMKLSsgICAgICAgIG91dC5hLmNsZWFyKCk7Ci0rICAgICAgICB2X3N0b3JlX2YxNihvdXQuYS5kLCByMSk7Ci0rICAgICAgICBFWFBFQ1RfRVEoZGF0YS5hLCBvdXQuYSk7Ci0gCi0gICAgICAgICByZXR1cm4gKnRoaXM7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAgICAgVGhlVGVzdCAmIHRlc3RfZmxvYXRfY3Z0X2ZwMTYoKQotICAgICB7Ci0tI2lmIENWX0ZQMTYKLSAgICAgICAgIEFsaWduZWREYXRhPHZfZmxvYXQzMng0PiBkYXRhOwotIAotLSAgICAgICAgaWYoY2hlY2tIYXJkd2FyZVN1cHBvcnQoQ1ZfQ1BVX0ZQMTYpKQotLSAgICAgICAgewotLSAgICAgICAgICAgIC8vIGNoZWNrIGNvbnZlcnNpb24KLS0gICAgICAgICAgICB2X2Zsb2F0MzJ4NCByMSA9IHZfbG9hZChkYXRhLmEuZCk7Ci0tICAgICAgICAgICAgdl9mbG9hdDE2eDQgcjIgPSB2X2N2dF9mMTYocjEpOwotLSAgICAgICAgICAgIHZfZmxvYXQzMng0IHIzID0gdl9jdnRfZjMyKHIyKTsKLS0gICAgICAgICAgICBFWFBFQ1RfRVEoMHgzYzAwLCByMi5nZXQwKCkpOwotLSAgICAgICAgICAgIEVYUEVDVF9FUShyMy5nZXQwKCksIHIxLmdldDAoKSk7Ci0tICAgICAgICB9Ci0rICAgICAgICAvLyBjaGVjayBjb252ZXJzaW9uCi0rICAgICAgICB2X2Zsb2F0MzJ4NCByMSA9IHZfbG9hZChkYXRhLmEuZCk7Ci0rICAgICAgICB2X2Zsb2F0MTZ4NCByMiA9IHZfY3Z0X2YxNihyMSk7Ci0rICAgICAgICB2X2Zsb2F0MzJ4NCByMyA9IHZfY3Z0X2YzMihyMik7Ci0rICAgICAgICBFWFBFQ1RfRVEoMHgzYzAwLCByMi5nZXQwKCkpOwotKyAgICAgICAgRVhQRUNUX0VRKHIzLmdldDAoKSwgcjEuZ2V0MCgpKTsKLSAKLSAgICAgICAgIHJldHVybiAqdGhpczsKLS0jZW5kaWYKLSAgICAgfQotKyNlbmRpZgotIAotIH07Ci0gCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLWltZ2NvZGVjcy1yZWZhY3RvcmluZy1pbXByb3ZlLWNvZGUtcXVhbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLWltZ2NvZGVjcy1yZWZhY3RvcmluZy1pbXByb3ZlLWNvZGUtcXVhbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWYzM2FmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItaW1nY29kZWNzLXJlZmFjdG9yaW5nLWltcHJvdmUtY29kZS1xdWFsaXR5LnBhdGNoCkBAIC0wLDAgKzEsNjU2IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzkzNzYvY29tbWl0cy85OTlmNDFmYjRmNGFhOTRhMGNiNDcyNTY5MTlhZThiNWMyOWNhNWYzXQorCitGaXggQ1ZFcyBmb3Igb3BlbmN2IDMuMzoKKworKiBDVkUtMjAxNy0xMjU5NworKiBDVkUtMjAxNy0xMjU5OAorKiBDVkUtMjAxNy0xMjU5OQorKiBDVkUtMjAxNy0xMjYwMAorKiBDVkUtMjAxNy0xMjYwMQorKiBDVkUtMjAxNy0xMjYwMgorKiBDVkUtMjAxNy0xMjYwMworKiBDVkUtMjAxNy0xMjYwNAorKiBDVkUtMjAxNy0xMjYwNQorKiBDVkUtMjAxNy0xMjYwNgorKiBDVkUtMjAxNy0xMjg2MgorKiBDVkUtMjAxNy0xMjg2MworKiBDVkUtMjAxNy0xMjg2NAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorRnJvbSA5OTlmNDFmYjRmNGFhOTRhMGNiNDcyNTY5MTlhZThiNWMyOWNhNWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hLmFsZWtoaW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAyMjowNDo1NSArMDAwMAorU3ViamVjdDogW1BBVENIIDIvM10gaW1nY29kZWNzOiByZWZhY3RvcmluZywgaW1wcm92ZSBjb2RlIHF1YWxpdHkKKworLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uY3BwICAgfCAgIDIgKworIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmhwcCAgIHwgIDE5ICsrKy0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAgfCAgMTMgKystCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3B4bS5jcHAgfCAxMjIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcCAgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCAyMzEgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5jcHAKK2luZGV4IGE3ZTE4N2ZhMC4uMGE4OTQxYWVjIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5jcHAKK0BAIC0yMDksNiArMjA5LDggQEAgaW50ICBSTEJ5dGVTdHJlYW06OmdldEJ5dGUoKQorICAgICAgICAgY3VycmVudCA9IG1fY3VycmVudDsKKyAgICAgfQorIAorKyAgICBDVl9Bc3NlcnQoY3VycmVudCA8IG1fZW5kKTsKKysKKyAgICAgdmFsID0gKigodWNoYXIqKWN1cnJlbnQpOworICAgICBtX2N1cnJlbnQgPSBjdXJyZW50ICsgMTsKKyAgICAgcmV0dXJuIHZhbDsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5ocHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5ocHAKK2luZGV4IDQ2NWMwYTg0Ny4uMjY5NDc5NzFmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uaHBwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5ocHAKK0BAIC00OCwxMyArNDgsMjAgQEAKKyBuYW1lc3BhY2UgY3YKKyB7CisgCistZW51bQorLXsKKy0gICAgUkJTX1RIUk9XX0VPUz0tMTIzLCAgLy8gPGVuZCBvZiBzdHJlYW0+IGV4Y2VwdGlvbiBjb2RlCistICAgIFJCU19USFJPV19GT1JCPS0xMjQsICAvLyA8Zm9ycmJpZGRlbiBodWZmbWFuIGNvZGU+IGV4Y2VwdGlvbiBjb2RlCistICAgIFJCU19IVUZGX0ZPUkI9MjA0NywgIC8vIGZvcnJiaWRkZW4gaHVmZm1hbiBjb2RlICJ2YWx1ZSIKKy0gICAgUkJTX0JBRF9IRUFERVI9LTEyNSAvLyBpbnZhbGlkIGhlYWRlcgorKyNkZWZpbmUgREVDTEFSRV9SQlNfRVhDRVBUSU9OKG5hbWUpIFwKKytjbGFzcyBSQlNfICMjIG5hbWUgIyMgX0V4Y2VwdGlvbiA6IHB1YmxpYyBjdjo6RXhjZXB0aW9uIFwKKyt7IFwKKytwdWJsaWM6IFwKKysgICAgUkJTXyAjIyBuYW1lICMjIF9FeGNlcHRpb24oaW50IGNvZGVfLCBjb25zdCBTdHJpbmcmIGVycl8sIGNvbnN0IFN0cmluZyYgZnVuY18sIGNvbnN0IFN0cmluZyYgZmlsZV8sIGludCBsaW5lXykgOiBcCisrICAgICAgICBjdjo6RXhjZXB0aW9uKGNvZGVfLCBlcnJfLCBmdW5jXywgZmlsZV8sIGxpbmVfKSBcCisrICAgIHt9IFwKKyB9OworK0RFQ0xBUkVfUkJTX0VYQ0VQVElPTihUSFJPV19FT1MpCisrI2RlZmluZSBSQlNfVEhST1dfRU9TIFJCU19USFJPV19FT1NfRXhjZXB0aW9uKGN2OjpFcnJvcjo6U3RzRXJyb3IsICJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBzdHJlYW0iLCBDVl9GdW5jLCBfX0ZJTEVfXywgX19MSU5FX18pCisrREVDTEFSRV9SQlNfRVhDRVBUSU9OKFRIUk9XX0ZPUkIpCisrI2RlZmluZSBSQlNfVEhST1dfRk9SQiBSQlNfVEhST1dfRk9SQl9FeGNlcHRpb24oY3Y6OkVycm9yOjpTdHNFcnJvciwgIkZvcnJiaWRkZW4gaHVmZm1hbiBjb2RlIiwgQ1ZfRnVuYywgX19GSUxFX18sIF9fTElORV9fKQorK0RFQ0xBUkVfUkJTX0VYQ0VQVElPTihCQURfSEVBREVSKQorKyNkZWZpbmUgUkJTX0JBRF9IRUFERVIgUkJTX0JBRF9IRUFERVJfRXhjZXB0aW9uKGN2OjpFcnJvcjo6U3RzRXJyb3IsICJJbnZhbGlkIGhlYWRlciIsIENWX0Z1bmMsIF9fRklMRV9fLCBfX0xJTkVfXykKKyAKKyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CisgCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAoraW5kZXggODZjYWNkMzE2Li4yNTdmOTdjMmQgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKK0BAIC0xMTgsOCArMTE4LDkgQEAgYm9vbCAgQm1wRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgCisgICAgICAgICAgICAgICAgIGlmKCBtX2JwcCA8PSA4ICkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCBtX3BhbGV0dGUsIDAsIHNpemVvZihtX3BhbGV0dGUpKTsKKy0gICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyggbV9wYWxldHRlLCAoY2xydXNlZCA9PSAwPyAxPDxtX2JwcCA6IGNscnVzZWQpKjQgKTsKKysgICAgICAgICAgICAgICAgICAgIENWX0Fzc2VydChjbHJ1c2VkIDwgMjU2KTsKKysgICAgICAgICAgICAgICAgICAgIG1lbXNldChtX3BhbGV0dGUsIDAsIHNpemVvZihtX3BhbGV0dGUpKTsKKysgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyhtX3BhbGV0dGUsIChjbHJ1c2VkID09IDA/IDE8PG1fYnBwIDogY2xydXNlZCkqNCApOworICAgICAgICAgICAgICAgICAgICAgaXNjb2xvciA9IElzQ29sb3JQYWxldHRlKCBtX3BhbGV0dGUsIG1fYnBwICk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZWxzZSBpZiggbV9icHAgPT0gMTYgJiYgbV9ybGVfY29kZSA9PSBCTVBfQklURklFTERTICkKK0BAIC0yOTAsNyArMjkxLDkgQEAgYm9vbCAgQm1wRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIGNvZGUgPiAyICkgLy8gYWJzb2x1dGUgbW9kZQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBkYXRhICsgY29kZSpuY2ggPiBsaW5lX2VuZCApIGdvdG8gZGVjb2RlX3JsZTRfYmFkOworLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyggc3JjLCAoKChjb2RlICsgMSk+PjEpICsgMSkgJiAtMiApOworKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzeiA9ICgoKGNvZGUgKyAxKT4+MSkgKyAxKSAmICh+MSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgQ1ZfQXNzZXJ0KChzaXplX3Qpc3ogPCBfc3JjLnNpemUoKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKHNyYywgc3opOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBjb2xvciApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsQ29sb3JSb3c0KCBkYXRhLCBzcmMsIGNvZGUsIG1fcGFsZXR0ZSApOworICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKK0BAIC0zNzksNyArMzgyLDkgQEAgZGVjb2RlX3JsZTRfYmFkOiA7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGRhdGEgKyBjb2RlMyA+IGxpbmVfZW5kICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkZWNvZGVfcmxlOF9iYWQ7CistICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKCBzcmMsIChjb2RlICsgMSkgJiAtMiApOworKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzeiA9IChjb2RlICsgMSkgJiAofjEpOworKyAgICAgICAgICAgICAgICAgICAgICAgIENWX0Fzc2VydCgoc2l6ZV90KXN6IDwgX3NyYy5zaXplKCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyhzcmMsIHN6KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggY29sb3IgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbENvbG9yUm93OCggZGF0YSwgc3JjLCBjb2RlLCBtX3BhbGV0dGUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3B4bS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcHhtLmNwcAoraW5kZXggMTc1MGNiNzA1Li42OGJkOGZkOTMgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcHhtLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3B4bS5jcHAKK0BAIC00Myw1MCArNDMsNTggQEAKKyAjaW5jbHVkZSAicHJlY29tcC5ocHAiCisgI2luY2x1ZGUgInV0aWxzLmhwcCIKKyAjaW5jbHVkZSAiZ3JmbXRfcHhtLmhwcCIKKysjaW5jbHVkZSA8aW9zdHJlYW0+CisgCisgbmFtZXNwYWNlIGN2CisgeworIAorIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gUD9NIHJlYWRlciAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAKKy1zdGF0aWMgaW50IFJlYWROdW1iZXIoIFJMQnl0ZVN0cmVhbSYgc3RybSwgaW50IG1heGRpZ2l0cyApCisrc3RhdGljIGludCBSZWFkTnVtYmVyKFJMQnl0ZVN0cmVhbSYgc3RybSwgaW50IG1heGRpZ2l0cyA9IDApCisgeworICAgICBpbnQgY29kZTsKKy0gICAgaW50IHZhbCA9IDA7CisrICAgIGludDY0IHZhbCA9IDA7CisgICAgIGludCBkaWdpdHMgPSAwOworIAorICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7CisgCistICAgIGlmKCAhaXNkaWdpdChjb2RlKSkKKysgICAgd2hpbGUgKCFpc2RpZ2l0KGNvZGUpKQorICAgICB7CistICAgICAgICBkbworKyAgICAgICAgaWYgKGNvZGUgPT0gJyMnICkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiggY29kZSA9PSAnIycgKQorKyAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBkbworLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgd2hpbGUoIGNvZGUgIT0gJ1xuJyAmJiBjb2RlICE9ICdccicgKTsKKysgICAgICAgICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworICAgICAgICAgICAgIH0KKy0KKysgICAgICAgICAgICB3aGlsZSAoY29kZSAhPSAnXG4nICYmIGNvZGUgIT0gJ1xyJyk7CisgICAgICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworLQorLSAgICAgICAgICAgIHdoaWxlKCBpc3NwYWNlKGNvZGUpKQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZiAoaXNzcGFjZShjb2RlKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZShjb2RlKSkKKyAgICAgICAgICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworICAgICAgICAgfQorLSAgICAgICAgd2hpbGUoICFpc2RpZ2l0KCBjb2RlICkpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyNpZiAxCisrICAgICAgICAgICAgQ1ZfRXJyb3JOb1JldHVybl8oRXJyb3I6OlN0c0Vycm9yLCAoIlBYTTogVW5leHBlY3RlZCBjb2RlIGluIFJlYWROdW1iZXIoKTogMHgleCAoJWQpIiwgY29kZSwgY29kZSkpOworKyNlbHNlCisrICAgICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworKyNlbmRpZgorKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGRvCisgICAgIHsKKy0gICAgICAgIHZhbCA9IHZhbCoxMCArIGNvZGUgLSAnMCc7CistICAgICAgICBpZiggKytkaWdpdHMgPj0gbWF4ZGlnaXRzICkgYnJlYWs7CisrICAgICAgICB2YWwgPSB2YWwqMTAgKyAoY29kZSAtICcwJyk7CisrICAgICAgICBDVl9Bc3NlcnQodmFsIDw9IElOVF9NQVggJiYgIlBYTTogUmVhZE51bWJlcigpOiByZXN1bHQgaXMgdG9vIGxhcmdlIik7CisrICAgICAgICBkaWdpdHMrKzsKKysgICAgICAgIGlmIChtYXhkaWdpdHMgIT0gMCAmJiBkaWdpdHMgPj0gbWF4ZGlnaXRzKSBicmVhazsKKyAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKKyAgICAgfQorLSAgICB3aGlsZSggaXNkaWdpdChjb2RlKSk7CisrICAgIHdoaWxlIChpc2RpZ2l0KGNvZGUpKTsKKyAKKy0gICAgcmV0dXJuIHZhbDsKKysgICAgcmV0dXJuIChpbnQpdmFsOworIH0KKyAKKyAKK0BAIC0xMjIsMTMgKzEzMCwxMyBAQCBJbWFnZURlY29kZXIgUHhNRGVjb2Rlcjo6bmV3RGVjb2RlcigpIGNvbnN0CisgICAgIHJldHVybiBtYWtlUHRyPFB4TURlY29kZXI+KCk7CisgfQorIAorLXZvaWQgIFB4TURlY29kZXI6OmNsb3NlKCkKKyt2b2lkIFB4TURlY29kZXI6OmNsb3NlKCkKKyB7CisgICAgIG1fc3RybS5jbG9zZSgpOworIH0KKyAKKyAKKy1ib29sICBQeE1EZWNvZGVyOjpyZWFkSGVhZGVyKCkKKytib29sIFB4TURlY29kZXI6OnJlYWRIZWFkZXIoKQorIHsKKyAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAKK0BAIC0xNTgsMTAgKzE2NiwxMCBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyAgICAgICAgIG1fYmluYXJ5ID0gY29kZSA+PSAnNCc7CisgICAgICAgICBtX3R5cGUgPSBtX2JwcCA+IDggPyBDVl84VUMzIDogQ1ZfOFVDMTsKKyAKKy0gICAgICAgIG1fd2lkdGggPSBSZWFkTnVtYmVyKCBtX3N0cm0sIElOVF9NQVggKTsKKy0gICAgICAgIG1faGVpZ2h0ID0gUmVhZE51bWJlciggbV9zdHJtLCBJTlRfTUFYICk7CisrICAgICAgICBtX3dpZHRoID0gUmVhZE51bWJlcihtX3N0cm0pOworKyAgICAgICAgbV9oZWlnaHQgPSBSZWFkTnVtYmVyKG1fc3RybSk7CisgCistICAgICAgICBtX21heHZhbCA9IG1fYnBwID09IDEgPyAxIDogUmVhZE51bWJlciggbV9zdHJtLCBJTlRfTUFYICk7CisrICAgICAgICBtX21heHZhbCA9IG1fYnBwID09IDEgPyAxIDogUmVhZE51bWJlcihtX3N0cm0pOworICAgICAgICAgaWYoIG1fbWF4dmFsID4gNjU1MzUgKQorICAgICAgICAgICAgIHRocm93IFJCU19CQURfSEVBREVSOworIAorQEAgLTE3NSw4ICsxODMsMTQgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICBjYXRjaCguLi4pCisrICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJikKKysgICAgeworKyAgICAgICAgdGhyb3c7CisrICAgIH0KKysgICAgY2F0Y2ggKC4uLikKKyAgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJQWE06OnJlYWRIZWFkZXIoKTogdW5rbm93biBDKysgZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgICAgIHRocm93OworICAgICB9CisgCisgICAgIGlmKCAhcmVzdWx0ICkKK0BAIC0xODksMzMgKzIwMywyOCBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyB9CisgCisgCistYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKytib29sIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgeworICAgICBpbnQgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7CisgICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOworICAgICBQYWxldHRlRW50cnkgcGFsZXR0ZVsyNTZdOworICAgICBib29sICAgcmVzdWx0ID0gZmFsc2U7CistICAgIGludCAgYml0X2RlcHRoID0gQ1ZfRUxFTV9TSVpFMShtX3R5cGUpKjg7CistICAgIGludCAgc3JjX3BpdGNoID0gKG1fd2lkdGgqbV9icHAqYml0X2RlcHRoLzggKyA3KS84OworKyAgICBjb25zdCBpbnQgYml0X2RlcHRoID0gQ1ZfRUxFTV9TSVpFMShtX3R5cGUpKjg7CisrICAgIGNvbnN0IGludCBzcmNfcGl0Y2ggPSBkaXZVcChtX3dpZHRoKm1fYnBwKihiaXRfZGVwdGgvOCksIDgpOworICAgICBpbnQgIG5jaCA9IENWX01BVF9DTihtX3R5cGUpOworICAgICBpbnQgIHdpZHRoMyA9IG1fd2lkdGgqbmNoOworLSAgICBpbnQgIGksIHgsIHk7CisgCisgICAgIGlmKCBtX29mZnNldCA8IDAgfHwgIW1fc3RybS5pc09wZW5lZCgpKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorLSAgICBBdXRvQnVmZmVyPHVjaGFyPiBfc3JjKHNyY19waXRjaCArIDMyKTsKKy0gICAgdWNoYXIqIHNyYyA9IF9zcmM7CistICAgIEF1dG9CdWZmZXI8dWNoYXI+IF9ncmF5X3BhbGV0dGU7CistICAgIHVjaGFyKiBncmF5X3BhbGV0dGUgPSBfZ3JheV9wYWxldHRlOworKyAgICB1Y2hhciBncmF5X3BhbGV0dGVbMjU2XSA9IHswfTsKKyAKKyAgICAgLy8gY3JlYXRlIExVVCBmb3IgY29udmVydGluZyBjb2xvcnMKKyAgICAgaWYoIGJpdF9kZXB0aCA9PSA4ICkKKyAgICAgeworLSAgICAgICAgX2dyYXlfcGFsZXR0ZS5hbGxvY2F0ZShtX21heHZhbCArIDEpOworLSAgICAgICAgZ3JheV9wYWxldHRlID0gX2dyYXlfcGFsZXR0ZTsKKysgICAgICAgIENWX0Fzc2VydChtX21heHZhbCA8IDI1Nik7CisgCistICAgICAgICBmb3IoIGkgPSAwOyBpIDw9IG1fbWF4dmFsOyBpKysgKQorKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbV9tYXh2YWw7IGkrKykKKyAgICAgICAgICAgICBncmF5X3BhbGV0dGVbaV0gPSAodWNoYXIpKChpKjI1NS9tX21heHZhbCleKG1fYnBwID09IDEgPyAyNTUgOiAwKSk7CisgCisgICAgICAgICBGaWxsR3JheVBhbGV0dGUoIHBhbGV0dGUsIG1fYnBwPT0xID8gMSA6IDggLCBtX2JwcCA9PSAxICk7CitAQCAtMjI5LDEyICsyMzgsMTYgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgIHsKKyAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIDEgQlBQIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgIGNhc2UgMToKKysgICAgICAgICAgICBDVl9Bc3NlcnQoQ1ZfTUFUX0RFUFRIKG1fdHlwZSkgPT0gQ1ZfOFUpOworICAgICAgICAgICAgIGlmKCAhbV9iaW5hcnkgKQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgZm9yKCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXAgKQorKyAgICAgICAgICAgICAgICBBdXRvQnVmZmVyPHVjaGFyPiBfc3JjKG1fd2lkdGgpOworKyAgICAgICAgICAgICAgICB1Y2hhciogc3JjID0gX3NyYzsKKysKKysgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBmb3IoIHggPSAwOyB4IDwgbV93aWR0aDsgeCsrICkKKy0gICAgICAgICAgICAgICAgICAgICAgICBzcmNbeF0gPSBSZWFkTnVtYmVyKCBtX3N0cm0sIDEgKSAhPSAwOworKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX3dpZHRoOyB4KyspCisrICAgICAgICAgICAgICAgICAgICAgICAgc3JjW3hdID0gUmVhZE51bWJlcihtX3N0cm0sIDEpICE9IDA7CisgCisgICAgICAgICAgICAgICAgICAgICBpZiggY29sb3IgKQorICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGxDb2xvclJvdzgoIGRhdGEsIHNyYywgbV93aWR0aCwgcGFsZXR0ZSApOworQEAgLTI0NCw3ICsyNTcsMTAgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgZm9yKCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXAgKQorKyAgICAgICAgICAgICAgICBBdXRvQnVmZmVyPHVjaGFyPiBfc3JjKHNyY19waXRjaCk7CisrICAgICAgICAgICAgICAgIHVjaGFyKiBzcmMgPSBfc3JjOworKworKyAgICAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXApCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyggc3JjLCBzcmNfcGl0Y2ggKTsKKyAKK0BAIC0yNjAsMTMgKzI3NiwxNyBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gOCBCUFAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAgY2FzZSA4OgorICAgICAgICAgY2FzZSAyNDoKKy0gICAgICAgICAgICBmb3IoIHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCApCisrICAgICAgICB7CisrICAgICAgICAgICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX3NyYyhzdGQ6Om1heDxzaXplX3Q+KHdpZHRoMyoyLCBzcmNfcGl0Y2gpKTsKKysgICAgICAgICAgICB1Y2hhciogc3JjID0gX3NyYzsKKysKKysgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXApCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpZiggIW1fYmluYXJ5ICkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZm9yKCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrICkKKysgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgzOyB4KyspCisgICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvZGUgPSBSZWFkTnVtYmVyKCBtX3N0cm0sIElOVF9NQVggKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29kZSA9IFJlYWROdW1iZXIobV9zdHJtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggKHVuc2lnbmVkKWNvZGUgPiAodW5zaWduZWQpbV9tYXh2YWwgKSBjb2RlID0gbV9tYXh2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGJpdF9kZXB0aCA9PSA4ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjW3hdID0gZ3JheV9wYWxldHRlW2NvZGVdOworQEAgLTI3OSw3ICsyOTksNyBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKCBzcmMsIHNyY19waXRjaCApOworICAgICAgICAgICAgICAgICAgICAgaWYoIGJpdF9kZXB0aCA9PSAxNiAmJiAhaXNCaWdFbmRpYW4oKSApCisgICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgZm9yKCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrICkKKysgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNoYXIgdiA9IHNyY1t4ICogMl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t4ICogMl0gPSBzcmNbeCAqIDIgKyAxXTsKK0BAIC0yOTAsNyArMzEwLDcgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAKKyAgICAgICAgICAgICAgICAgaWYoIGltZy5kZXB0aCgpID09IENWXzhVICYmIGJpdF9kZXB0aCA9PSAxNiApCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGZvciggeCA9IDA7IHggPCB3aWR0aDM7IHgrKyApCisrICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ID0gKCh1c2hvcnQgKilzcmMpW3hdOworICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t4XSA9ICh1Y2hhcikodiA+PiA4KTsKK0BAIC0zMzEsMTIgKzM1MSwxOSBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorICAgICAgICAgZGVmYXVsdDoKKy0gICAgICAgICAgICBhc3NlcnQoMCk7CisrICAgICAgICAgICAgQ1ZfRXJyb3JOb1JldHVybihFcnJvcjo6U3RzRXJyb3IsICJtX2JwcCBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgY2F0Y2goLi4uKQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYpCisrICAgIHsKKysgICAgICAgIHRocm93OworKyAgICB9CisrICAgIGNhdGNoICguLi4pCisgICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiUFhNOjpyZWFkRGF0YSgpOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgICAgICB0aHJvdzsKKyAgICAgfQorIAorICAgICByZXR1cm4gcmVzdWx0OworQEAgLTQxMiw4ICs0MzksOSBAQCBib29sICBQeE1FbmNvZGVyOjp3cml0ZSggY29uc3QgTWF0JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHBhcmFtcyApCisgICAgIGNoYXIqIGJ1ZmZlciA9IF9idWZmZXI7CisgCisgICAgIC8vIHdyaXRlIGhlYWRlcjsKKy0gICAgc3ByaW50ZiggYnVmZmVyLCAiUCVjXG4lZCAlZFxuJWRcbiIsCisrICAgIHNwcmludGYoIGJ1ZmZlciwgIlAlY1xuIyBHZW5lcmF0ZWQgYnkgT3BlbkNWICVzXG4lZCAlZFxuJWRcbiIsCisgICAgICAgICAgICAgICcyJyArIChjaGFubmVscyA+IDEgPyAxIDogMCkgKyAoaXNCaW5hcnkgPyAzIDogMCksCisrICAgICAgICAgICAgIENWX1ZFUlNJT04sCisgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsICgxIDw8IGRlcHRoKSAtIDEgKTsKKyAKKyAgICAgc3RybS5wdXRCeXRlcyggYnVmZmVyLCAoaW50KXN0cmxlbihidWZmZXIpICk7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAKK2luZGV4IDNiMjM2NjIxNy4uNWVlNGNhMzU0IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcAorQEAgLTU1LDYgKzU1LDI3IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UgQ29kZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrbmFtZXNwYWNlIGN2IHsKKysKKysvLyBUT0RPIEFkZCBydW50aW1lIGNvbmZpZ3VyYXRpb24KKysjZGVmaW5lIENWX0lPX01BWF9JTUFHRV9QQVJBTVMgKDUwKQorKyNkZWZpbmUgQ1ZfSU9fTUFYX0lNQUdFX1dJRFRIICgxPDwyMCkKKysjZGVmaW5lIENWX0lPX01BWF9JTUFHRV9IRUlHSFQgKDE8PDIwKQorKyNkZWZpbmUgQ1ZfSU9fTUFYX0lNQUdFX1BJWEVMUyAoMTw8MzApIC8vIDEgR2lnYXBpeGVsCisrCisrc3RhdGljIFNpemUgdmFsaWRhdGVJbnB1dEltYWdlU2l6ZShjb25zdCBTaXplJiBzaXplKQorK3sKKysgICAgQ1ZfQXNzZXJ0KHNpemUud2lkdGggPiAwKTsKKysgICAgQ1ZfQXNzZXJ0KHNpemUud2lkdGggPD0gQ1ZfSU9fTUFYX0lNQUdFX1dJRFRIKTsKKysgICAgQ1ZfQXNzZXJ0KHNpemUuaGVpZ2h0ID4gMCk7CisrICAgIENWX0Fzc2VydChzaXplLmhlaWdodCA8PSBDVl9JT19NQVhfSU1BR0VfSEVJR0hUKTsKKysgICAgdWludDY0IHBpeGVscyA9ICh1aW50NjQpc2l6ZS53aWR0aCAqICh1aW50NjQpc2l6ZS5oZWlnaHQ7CisrICAgIENWX0Fzc2VydChwaXhlbHMgPD0gQ1ZfSU9fTUFYX0lNQUdFX1BJWEVMUyk7CisrICAgIHJldHVybiBzaXplOworK30KKysKKysKKyBuYW1lc3BhY2UgeworIAorIGNsYXNzIEJ5dGVTdHJlYW1CdWZmZXI6IHB1YmxpYyBzdGQ6OnN0cmVhbWJ1ZgorQEAgLTk0LDkgKzExNSw2IEBAIHByb3RlY3RlZDoKKyAKKyB9CisgCistbmFtZXNwYWNlIGN2CisteworLQorIC8qKgorICAqIEBzdHJ1Y3QgSW1hZ2VDb2RlY0luaXRpYWxpemVyCisgICoKK0BAIC00MDgsMTQgKzQyNiwyNiBAQCBpbXJlYWRfKCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIGludCBoZHJ0eXBlLCBNYXQqIG1hdD0wICkKKyAgICAgLy8vIHNldCB0aGUgZmlsZW5hbWUgaW4gdGhlIGRyaXZlcgorICAgICBkZWNvZGVyLT5zZXRTb3VyY2UoIGZpbGVuYW1lICk7CisgCistICAgLy8gcmVhZCB0aGUgaGVhZGVyIHRvIG1ha2Ugc3VyZSBpdCBzdWNjZWVkcworLSAgIGlmKCAhZGVjb2Rlci0+cmVhZEhlYWRlcigpICkKKysgICAgdHJ5CisrICAgIHsKKysgICAgICAgIC8vIHJlYWQgdGhlIGhlYWRlciB0byBtYWtlIHN1cmUgaXQgc3VjY2VlZHMKKysgICAgICAgIGlmKCAhZGVjb2Rlci0+cmVhZEhlYWRlcigpICkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZF8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAKKyAgICAgLy8gZXN0YWJsaXNoZWQgdGhlIHJlcXVpcmVkIGlucHV0IGltYWdlIHNpemUKKy0gICAgQ3ZTaXplIHNpemU7CistICAgIHNpemUud2lkdGggPSBkZWNvZGVyLT53aWR0aCgpOworLSAgICBzaXplLmhlaWdodCA9IGRlY29kZXItPmhlaWdodCgpOworKyAgICBTaXplIHNpemUgPSB2YWxpZGF0ZUlucHV0SW1hZ2VTaXplKFNpemUoZGVjb2Rlci0+d2lkdGgoKSwgZGVjb2Rlci0+aGVpZ2h0KCkpKTsKKyAKKyAgICAgLy8gZ3JhYiB0aGUgZGVjb2RlZCB0eXBlCisgICAgIGludCB0eXBlID0gZGVjb2Rlci0+dHlwZSgpOworQEAgLTQ1MSw3ICs0ODEsMjEgQEAgaW1yZWFkXyggY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50IGZsYWdzLCBpbnQgaGRydHlwZSwgTWF0KiBtYXQ9MCApCisgICAgIH0KKyAKKyAgICAgLy8gcmVhZCB0aGUgaW1hZ2UgZGF0YQorLSAgICBpZiggIWRlY29kZXItPnJlYWREYXRhKCAqZGF0YSApKQorKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKysgICAgdHJ5CisrICAgIHsKKysgICAgICAgIGlmIChkZWNvZGVyLT5yZWFkRGF0YSgqZGF0YSkpCisrICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisrICAgIH0KKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgfQorKyAgICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZF8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgfQorKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgIHsKKyAgICAgICAgIGN2UmVsZWFzZUltYWdlKCAmaW1hZ2UgKTsKKyAgICAgICAgIGN2UmVsZWFzZU1hdCggJm1hdHJpeCApOworQEAgLTUwNCw4ICs1NDgsMjIgQEAgaW1yZWFkbXVsdGlfKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludCBmbGFncywgc3RkOjp2ZWN0b3I8TWF0PiYgbWF0cykKKyAgICAgZGVjb2Rlci0+c2V0U291cmNlKGZpbGVuYW1lKTsKKyAKKyAgICAgLy8gcmVhZCB0aGUgaGVhZGVyIHRvIG1ha2Ugc3VyZSBpdCBzdWNjZWVkcworLSAgICBpZiAoIWRlY29kZXItPnJlYWRIZWFkZXIoKSkKKysgICAgdHJ5CisrICAgIHsKKysgICAgICAgIC8vIHJlYWQgdGhlIGhlYWRlciB0byBtYWtlIHN1cmUgaXQgc3VjY2VlZHMKKysgICAgICAgIGlmKCAhZGVjb2Rlci0+cmVhZEhlYWRlcigpICkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRtdWx0aV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKyAgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkbXVsdGlfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgCisgICAgIGZvciAoOzspCisgICAgIHsKK0BAIC01MjMsMTcgKzU4MSwzMiBAQCBpbXJlYWRtdWx0aV8oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50IGZsYWdzLCBzdGQ6OnZlY3RvcjxNYXQ+JiBtYXRzKQorICAgICAgICAgICAgICAgICB0eXBlID0gQ1ZfTUFLRVRZUEUoQ1ZfTUFUX0RFUFRIKHR5cGUpLCAxKTsKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vIGVzdGFibGlzaGVkIHRoZSByZXF1aXJlZCBpbnB1dCBpbWFnZSBzaXplCisrICAgICAgICBTaXplIHNpemUgPSB2YWxpZGF0ZUlucHV0SW1hZ2VTaXplKFNpemUoZGVjb2Rlci0+d2lkdGgoKSwgZGVjb2Rlci0+aGVpZ2h0KCkpKTsKKysKKyAgICAgICAgIC8vIHJlYWQgdGhlIGltYWdlIGRhdGEKKy0gICAgICAgIE1hdCBtYXQoZGVjb2Rlci0+aGVpZ2h0KCksIGRlY29kZXItPndpZHRoKCksIHR5cGUpOworLSAgICAgICAgaWYgKCFkZWNvZGVyLT5yZWFkRGF0YShtYXQpKQorKyAgICAgICAgTWF0IG1hdChzaXplLmhlaWdodCwgc2l6ZS53aWR0aCwgdHlwZSk7CisrICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKysgICAgICAgIHRyeQorICAgICAgICAgeworLSAgICAgICAgICAgIC8vIG9wdGlvbmFsbHkgcm90YXRlIHRoZSBkYXRhIGlmIEVYSUYnIG9yaWVudGF0aW9uIGZsYWcgc2F5cyBzbworLSAgICAgICAgICAgIGlmKCAoZmxhZ3MgJiBJTVJFQURfSUdOT1JFX09SSUVOVEFUSU9OKSA9PSAwICYmIGZsYWdzICE9IElNUkVBRF9VTkNIQU5HRUQgKQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgQXBwbHlFeGlmT3JpZW50YXRpb24oZmlsZW5hbWUsIG1hdCk7CistICAgICAgICAgICAgfQorLQorKyAgICAgICAgICAgIGlmIChkZWNvZGVyLT5yZWFkRGF0YShtYXQpKQorKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkbXVsdGlfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICAgICAgfQorKyAgICAgICAgY2F0Y2ggKC4uLikKKysgICAgICAgIHsKKysgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZG11bHRpXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgLy8gb3B0aW9uYWxseSByb3RhdGUgdGhlIGRhdGEgaWYgRVhJRicgb3JpZW50YXRpb24gZmxhZyBzYXlzIHNvCisrICAgICAgICBpZiggKGZsYWdzICYgSU1SRUFEX0lHTk9SRV9PUklFTlRBVElPTikgPT0gMCAmJiBmbGFncyAhPSBJTVJFQURfVU5DSEFOR0VEICkKKysgICAgICAgIHsKKysgICAgICAgICAgICBBcHBseUV4aWZPcmllbnRhdGlvbihmaWxlbmFtZSwgbWF0KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIG1hdHMucHVzaF9iYWNrKG1hdCk7CitAQCAtNjE2LDYgKzY4OSw3IEBAIHN0YXRpYyBib29sIGltd3JpdGVfKCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBNYXQmIGltYWdlLAorICAgICB9CisgCisgICAgIGVuY29kZXItPnNldERlc3RpbmF0aW9uKCBmaWxlbmFtZSApOworKyAgICBDVl9Bc3NlcnQocGFyYW1zLnNpemUoKSA8PSBDVl9JT19NQVhfSU1BR0VfUEFSQU1TKjIpOworICAgICBib29sIGNvZGUgPSBlbmNvZGVyLT53cml0ZSggKnBpbWFnZSwgcGFyYW1zICk7CisgCisgICAgIC8vICAgIENWX0Fzc2VydCggY29kZSApOworQEAgLTY2MywyMiArNzM3LDM1IEBAIGltZGVjb2RlXyggY29uc3QgTWF0JiBidWYsIGludCBmbGFncywgaW50IGhkcnR5cGUsIE1hdCogbWF0PTAgKQorICAgICAgICAgZGVjb2Rlci0+c2V0U291cmNlKGZpbGVuYW1lKTsKKyAgICAgfQorIAorLSAgICBpZiggIWRlY29kZXItPnJlYWRIZWFkZXIoKSApCisrICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworKyAgICB0cnkKKysgICAgeworKyAgICAgICAgaWYgKGRlY29kZXItPnJlYWRIZWFkZXIoKSkKKysgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKysgICAgfQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbWRlY29kZV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgfQorKyAgICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgImltZGVjb2RlXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKysgICAgaWYgKCFzdWNjZXNzKQorICAgICB7CisgICAgICAgICBkZWNvZGVyLnJlbGVhc2UoKTsKKy0gICAgICAgIGlmICggIWZpbGVuYW1lLmVtcHR5KCkgKQorKyAgICAgICAgaWYgKCFmaWxlbmFtZS5lbXB0eSgpKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmICggcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpICE9IDAgKQorKyAgICAgICAgICAgIGlmICgwICE9IHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIENWX0Vycm9yKCBDVl9TdHNFcnJvciwgInVuYWJsZSB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGUiICk7CisrICAgICAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAidW5hYmxlIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZToiIDw8IGZpbGVuYW1lIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCistICAgIEN2U2l6ZSBzaXplOworLSAgICBzaXplLndpZHRoID0gZGVjb2Rlci0+d2lkdGgoKTsKKy0gICAgc2l6ZS5oZWlnaHQgPSBkZWNvZGVyLT5oZWlnaHQoKTsKKysgICAgLy8gZXN0YWJsaXNoZWQgdGhlIHJlcXVpcmVkIGlucHV0IGltYWdlIHNpemUKKysgICAgU2l6ZSBzaXplID0gdmFsaWRhdGVJbnB1dEltYWdlU2l6ZShTaXplKGRlY29kZXItPndpZHRoKCksIGRlY29kZXItPmhlaWdodCgpKSk7CisgCisgICAgIGludCB0eXBlID0gZGVjb2Rlci0+dHlwZSgpOworICAgICBpZiggKGZsYWdzICYgSU1SRUFEX0xPQURfR0RBTCkgIT0gSU1SRUFEX0xPQURfR0RBTCAmJiBmbGFncyAhPSBJTVJFQURfVU5DSEFOR0VEICkKK0BAIC03MTIsMTcgKzc5OSwzMCBAQCBpbWRlY29kZV8oIGNvbnN0IE1hdCYgYnVmLCBpbnQgZmxhZ3MsIGludCBoZHJ0eXBlLCBNYXQqIG1hdD0wICkKKyAgICAgICAgIHRlbXAgPSBjdmFyclRvTWF0KGltYWdlKTsKKyAgICAgfQorIAorLSAgICBib29sIGNvZGUgPSBkZWNvZGVyLT5yZWFkRGF0YSggKmRhdGEgKTsKKysgICAgc3VjY2VzcyA9IGZhbHNlOworKyAgICB0cnkKKysgICAgeworKyAgICAgICAgaWYgKGRlY29kZXItPnJlYWREYXRhKCpkYXRhKSkKKysgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKysgICAgfQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbWRlY29kZV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKysgICAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbWRlY29kZV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgfQorICAgICBkZWNvZGVyLnJlbGVhc2UoKTsKKy0gICAgaWYgKCAhZmlsZW5hbWUuZW1wdHkoKSApCisrICAgIGlmICghZmlsZW5hbWUuZW1wdHkoKSkKKyAgICAgeworLSAgICAgICAgaWYgKCByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkgIT0gMCApCisrICAgICAgICBpZiAoMCAhPSByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkpCisgICAgICAgICB7CistICAgICAgICAgICAgQ1ZfRXJyb3IoIENWX1N0c0Vycm9yLCAidW5hYmxlIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZSIgKTsKKysgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInVuYWJsZSB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGU6IiA8PCBmaWxlbmFtZSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBpZiggIWNvZGUgKQorKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgIHsKKyAgICAgICAgIGN2UmVsZWFzZUltYWdlKCAmaW1hZ2UgKTsKKyAgICAgICAgIGN2UmVsZWFzZU1hdCggJm1hdHJpeCApOworQEAgLTg1OSw3ICs5NTksNyBAQCBjdlNhdmVJbWFnZSggY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbnN0IEN2QXJyKiBhcnIsIGNvbnN0IGludCogX3BhcmFtcyApCisgICAgIGlmKCBfcGFyYW1zICkKKyAgICAgeworICAgICAgICAgZm9yKCA7IF9wYXJhbXNbaV0gPiAwOyBpICs9IDIgKQorLSAgICAgICAgICAgIDsKKysgICAgICAgICAgICBDVl9Bc3NlcnQoaSA8IENWX0lPX01BWF9JTUFHRV9QQVJBTVMqMik7IC8vIExpbWl0IG51bWJlciBvZiBwYXJhbXMgZm9yIHNlY3VyaXR5IHJlYXNvbnMKKyAgICAgfQorICAgICByZXR1cm4gY3Y6Omltd3JpdGVfKGZpbGVuYW1lLCBjdjo6Y3ZhcnJUb01hdChhcnIpLAorICAgICAgICAgaSA+IDAgPyBzdGQ6OnZlY3RvcjxpbnQ+KF9wYXJhbXMsIF9wYXJhbXMraSkgOiBzdGQ6OnZlY3RvcjxpbnQ+KCksCitAQCAtODkwLDcgKzk5MCw3IEBAIGN2RW5jb2RlSW1hZ2UoIGNvbnN0IGNoYXIqIGV4dCwgY29uc3QgQ3ZBcnIqIGFyciwgY29uc3QgaW50KiBfcGFyYW1zICkKKyAgICAgaWYoIF9wYXJhbXMgKQorICAgICB7CisgICAgICAgICBmb3IoIDsgX3BhcmFtc1tpXSA+IDA7IGkgKz0gMiApCistICAgICAgICAgICAgOworKyAgICAgICAgICAgIENWX0Fzc2VydChpIDwgQ1ZfSU9fTUFYX0lNQUdFX1BBUkFNUyoyKTsgLy8gTGltaXQgbnVtYmVyIG9mIHBhcmFtcyBmb3Igc2VjdXJpdHkgcmVhc29ucworICAgICB9CisgICAgIGN2OjpNYXQgaW1nID0gY3Y6OmN2YXJyVG9NYXQoYXJyKTsKKyAgICAgaWYoIENWX0lTX0lNQUdFKGFycikgJiYgKChjb25zdCBJcGxJbWFnZSopYXJyKS0+b3JpZ2luID09IElQTF9PUklHSU5fQkwgKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjJiMDRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSBhY2U0OGE2MjhkY2EzNGQ3NDI2MTU1OThhZmVlZjQyZWQzMjNhMDI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAxOSBNYXkgMjAxNyAwNDoyNzo1MCArMDkwMAorU3ViamVjdDogW1BBVENIIDMvM10gVG8gZml4IGVycm9ycyBhcyBmb2xsb3dpbmc6CisKKyJ0ZXN0X21haW4uY3BwOjQ1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwYXJzZUN1c3RvbU9wdGlvbnMoaW50LCBjaGFyKiopJyIKKyJwZXJmX2Ficy5jcHA6MTM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGN2dGVzdDo6cGFyYW1fc2VlZCciCisidGVzdF9zdXBlcnJlcy5jcHA6MjcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjaGVja0lwcFN0YXR1cygpJyIKKworU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorCitBbHNvIGFkZCB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VzIGZvciBjZXJ0YWluIE9wZW5DTC1yZWxhdGVkIGZ1bmN0aW9ucyBpbgordHMgbW9kdWxlLgorCitTaWduZWQtb2ZmLWJ5OiBJc21vIFB1dXN0aW5lbiA8aXNtby5wdXVzdGluZW5AaW50ZWwuY29tPgorLS0tCisgbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwICAgICAgICAgIHwgNiArKystLS0KKyBtb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAgfCAyICstCisgbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcCAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCitpbmRleCA0MWE3NmIxM2UuLjIwNTY0NjE0MCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAorKysrIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCitAQCAtNTU1LDcgKzU1NSw3IEBAIHByb3RlY3RlZDoKKyAgICAgfQorIH07CisgCistZXh0ZXJuIHVpbnQ2NCBwYXJhbV9zZWVkOworK0NWX0VYUE9SVFMgZXh0ZXJuIHVpbnQ2NCBwYXJhbV9zZWVkOworIAorIHN0cnVjdCBDVl9FWFBPUlRTIERlZmF1bHRSbmdBdXRvCisgeworQEAgLTYxMSwxNCArNjExLDE0IEBAIENWX0VYUE9SVFMgc3RkOjpzdHJpbmcgZmluZERhdGFGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiByZWxhdGl2ZV9wYXRoLCBib29sIHJlcXVpCisgCisgI2lmZGVmIEhBVkVfT1BFTkNMCisgbmFtZXNwYWNlIG9jbCB7Cistdm9pZCBkdW1wT3BlbkNMRGV2aWNlKCk7CisrQ1ZfRVhQT1JUUyB2b2lkIGR1bXBPcGVuQ0xEZXZpY2UoKTsKKyB9CisgI2RlZmluZSBURVNUX0RVTVBfT0NMX0lORk8gY3Z0ZXN0OjpvY2w6OmR1bXBPcGVuQ0xEZXZpY2UoKTsKKyAjZWxzZQorICNkZWZpbmUgVEVTVF9EVU1QX09DTF9JTkZPCisgI2VuZGlmCisgCistdm9pZCBwYXJzZUN1c3RvbU9wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKytDVl9FWFBPUlRTIHZvaWQgcGFyc2VDdXN0b21PcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndik7CisgCisgI2RlZmluZSBDVl9URVNUX0lOSVQwX05PT1AgKHZvaWQpMAorIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcCBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcAoraW5kZXggNTRiMzNlY2U4Li5lZjU2YmY5ZWYgMTAwNjQ0CistLS0gYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAKKysrKyBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcAorQEAgLTgyLDcgKzgyLDcgQEAgaW5saW5lIFVNYXQgVG9VTWF0KElucHV0QXJyYXkgc3JjKQorICAgICByZXR1cm4gZHN0OworIH0KKyAKKy1leHRlcm4gaW50IHRlc3RfbG9vcF90aW1lczsKKytDVl9FWFBPUlRTIGV4dGVybiBpbnQgdGVzdF9sb29wX3RpbWVzOworIAorICNkZWZpbmUgTUFYX1ZBTFVFIDM1NworIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCitpbmRleCAwYmRkMzQ2ZGQuLjJjZDM0ZGZjZSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKKysrKyBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKK0BAIC05LDcgKzksNyBAQAorICNkZWZpbmUgT1BFTkNWX1RTX0VYVF9IUFAKKyAKKyBuYW1lc3BhY2UgY3Z0ZXN0IHsKKy12b2lkIGNoZWNrSXBwU3RhdHVzKCk7CisrQ1ZfRVhQT1JUUyB2b2lkIGNoZWNrSXBwU3RhdHVzKCk7CisgfQorIAorICNkZWZpbmUgQ1ZfVEVTVF9JTklUIFwKKy0tIAorMi4xMy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLWltZ3Byb2MtdGVzdC1hZGQtY2hlY2tzLWZvci1yZW1vdmUtY2FsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLWltZ3Byb2MtdGVzdC1hZGQtY2hlY2tzLWZvci1yZW1vdmUtY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRhNjBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtaW1ncHJvYy10ZXN0LWFkZC1jaGVja3MtZm9yLXJlbW92ZS1jYWxsLnBhdGNoCkBAIC0wLDAgKzEsMTg2IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzkzNzYvY29tbWl0cy83OGEzMTA2MzBmYjBhMWY2ZDA4OTU3NjIwMjM0M2U2NzJmMjc2MDlkXQorCitGaXggQ1ZFcyBmb3Igb3BlbmN2IDMuMy4KKworKiBDVkUtMjAxNy0xMjU5NworKiBDVkUtMjAxNy0xMjU5OAorKiBDVkUtMjAxNy0xMjU5OQorKiBDVkUtMjAxNy0xMjYwMAorKiBDVkUtMjAxNy0xMjYwMQorKiBDVkUtMjAxNy0xMjYwMgorKiBDVkUtMjAxNy0xMjYwMworKiBDVkUtMjAxNy0xMjYwNAorKiBDVkUtMjAxNy0xMjYwNQorKiBDVkUtMjAxNy0xMjYwNgorKiBDVkUtMjAxNy0xMjg2MgorKiBDVkUtMjAxNy0xMjg2MworKiBDVkUtMjAxNy0xMjg2NAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorRnJvbSA3OGEzMTA2MzBmYjBhMWY2ZDA4OTU3NjIwMjM0M2U2NzJmMjc2MDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hbGVraGluQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTM6NTM6MTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIGltZ3Byb2ModGVzdCk6IGFkZCBjaGVja3MgZm9yIHJlbW92ZSgpIGNhbGwKKworLS0tCisgbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcCAgICAgIHwgIDIgKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfanBlZy5jcHAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcCAgICAgICAgfCAgMiArLQorIG1vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9yZWFkX3dyaXRlLmNwcCB8ICA0ICsrLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfdGlmZi5jcHAgICAgICAgfCAgOCArKysrLS0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF93ZWJwLmNwcCAgICAgICB8ICA2ICsrKy0tLQorIDYgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfZ3JmbXQuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcAoraW5kZXggNjRhMGMxZTNhLi43NGI3MmMzYjMgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfZ3JmbXQuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfZ3JmbXQuY3BwCitAQCAtMTc1LDcgKzE3NSw3IEBAIFRFU1RfUChJbWdjb2RlY3NfRXh0U2l6ZSwgd3JpdGVfaW1hZ2VzZXEpCisgICAgICAgICAgICAgRVhQRUNUX0xUKG4sIDEuKTsKKyAgICAgICAgICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKGN2dGVzdDo6TWF0Q29tcGFyYXRvcigwLCAwKSwgaW1nLCBpbWdfZ3QpOworICAgICAgICAgfQorLSAgICAgICAgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpOworKyAgICAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSk7CisgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2pwZWcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2pwZWcuY3BwCitpbmRleCA1NTQ2ZjJkOTEuLjZkZGIwMjg0MCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2pwZWcuY3BwCitAQCAtMTIzLDggKzEyMyw4IEBAIFRFU1QoSW1nY29kZWNzX0pwZWcsIGVuY29kZV9kZWNvZGVfcHJvZ3Jlc3NpdmVfanBlZykKKyAKKyAgICAgRVhQRUNUX0VRKDAsIGN2dGVzdDo6bm9ybShpbWdfanBnX3Byb2dyZXNzaXZlLCBpbWdfanBnX25vcm1hbCwgTk9STV9JTkYpKTsKKyAKKy0gICAgcmVtb3ZlKG91dHB1dF9wcm9ncmVzc2l2ZS5jX3N0cigpKTsKKy0gICAgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X3Byb2dyZXNzaXZlLmNfc3RyKCkpKTsKKysgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpKTsKKyB9CisgCisgVEVTVChJbWdjb2RlY3NfSnBlZywgZW5jb2RlX2RlY29kZV9vcHRpbWl6ZV9qcGVnKQorQEAgLTE0OCw4ICsxNDgsOCBAQCBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX29wdGltaXplX2pwZWcpCisgCisgICAgIEVYUEVDVF9FUSgwLCBjdnRlc3Q6Om5vcm0oaW1nX2pwZ19vcHRpbWl6ZWQsIGltZ19qcGdfbm9ybWFsLCBOT1JNX0lORikpOworIAorLSAgICByZW1vdmUob3V0cHV0X29wdGltaXplZC5jX3N0cigpKTsKKy0gICAgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X29wdGltaXplZC5jX3N0cigpKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X25vcm1hbC5jX3N0cigpKSk7CisgfQorIAorIFRFU1QoSW1nY29kZWNzX0pwZWcsIGVuY29kZV9kZWNvZGVfcnN0X2pwZWcpCitAQCAtMTczLDggKzE3Myw4IEBAIFRFU1QoSW1nY29kZWNzX0pwZWcsIGVuY29kZV9kZWNvZGVfcnN0X2pwZWcpCisgCisgICAgIEVYUEVDVF9FUSgwLCBjdnRlc3Q6Om5vcm0oaW1nX2pwZ19yc3QsIGltZ19qcGdfbm9ybWFsLCBOT1JNX0lORikpOworIAorLSAgICByZW1vdmUob3V0cHV0X3JzdC5jX3N0cigpKTsKKy0gICAgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X3JzdC5jX3N0cigpKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X25vcm1hbC5jX3N0cigpKSk7CisgfQorIAorICNlbmRpZiAvLyBIQVZFX0pQRUcKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9wbmcuY3BwCitpbmRleCBjNDZmOTAxMTkuLjRlOTcwNDNlMSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9wbmcuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcAorQEAgLTE3LDcgKzE3LDcgQEAgVEVTVChJbWdjb2RlY3NfUG5nLCB3cml0ZV9iaWcpCisgICAgIEVYUEVDVF9FUSgxMzA0MywgaW1nLmNvbHMpOworICAgICBFWFBFQ1RfRVEoMTM5MTcsIGltZy5yb3dzKTsKKyAgICAgQVNTRVJUX05PX1RIUk9XKGltd3JpdGUoZHN0X2ZpbGUsIGltZykpOworLSAgICByZW1vdmUoZHN0X2ZpbGUuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZHN0X2ZpbGUuY19zdHIoKSkpOworIH0KKyAKKyBURVNUKEltZ2NvZGVjc19QbmcsIGVuY29kZSkKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcmVhZF93cml0ZS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcmVhZF93cml0ZS5jcHAKK2luZGV4IDM4ZjEwMjI1Zi4uNTExOTgxM2JmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcmVhZF93cml0ZS5jcHAKK0BAIC01MCw3ICs1MCw3IEBAIFRFU1QoSW1nY29kZWNzX0ltYWdlLCByZWFkX3dyaXRlX2JtcCkKKyAgICAgICAgIHBzbnIgPSBjdnRlc3Q6OlBTTlIoYnVmX2xvYWRlZCwgaW1hZ2UpOworICAgICAgICAgRVhQRUNUX0dUKHBzbnIsIHRocmVzRGJlbGwpOworIAorLSAgICAgICAgcmVtb3ZlKGRzdF9uYW1lLmNfc3RyKCkpOworKyAgICAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShkc3RfbmFtZS5jX3N0cigpKSk7CisgICAgIH0KKyB9CisgCitAQCAtOTUsNyArOTUsNyBAQCBURVNUX1AoSW1nY29kZWNzX0ltYWdlLCByZWFkX3dyaXRlKQorICAgICBwc25yID0gY3Z0ZXN0OjpQU05SKGJ1Zl9sb2FkZWQsIGltYWdlKTsKKyAgICAgRVhQRUNUX0dUKHBzbnIsIHRocmVzRGJlbGwpOworIAorLSAgICByZW1vdmUoZnVsbF9uYW1lLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGZ1bGxfbmFtZS5jX3N0cigpKSk7CisgfQorIAorIGNvbnN0IHN0cmluZyBleHRzW10gPSB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3RpZmYuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3RpZmYuY3BwCitpbmRleCAwMjY0ZGE0Y2QuLjZlZjBjMTc0OCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3RpZmYuY3BwCitAQCAtNDEsOCArNDEsOCBAQCBURVNUKEltZ2NvZGVjc19UaWZmLCBkZWNvZGVfdGlsZTE2Mzg0eDE2Mzg0KQorICAgICAgICAgLy8gbm90IGVub3VnaCBtZW1vcnkKKyAgICAgfQorIAorLSAgICByZW1vdmUoZmlsZTMuY19zdHIoKSk7CistICAgIHJlbW92ZShmaWxlNC5jX3N0cigpKTsKKysgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlMy5jX3N0cigpKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZmlsZTQuY19zdHIoKSkpOworIH0KKyAKKyBURVNUKEltZ2NvZGVjc19UaWZmLCB3cml0ZV9yZWFkXzE2Yml0X2JpZ19saXR0bGVfZW5kaWFuKQorQEAgLTg4LDcgKzg4LDcgQEAgVEVTVChJbWdjb2RlY3NfVGlmZiwgd3JpdGVfcmVhZF8xNmJpdF9iaWdfbGl0dGxlX2VuZGlhbikKKyAgICAgICAgIEVYUEVDVF9FUSgweERFQUQsIGltZy5hdDx1c2hvcnQ+KDAsMCkpOworICAgICAgICAgRVhQRUNUX0VRKDB4QkVFRiwgaW1nLmF0PHVzaG9ydD4oMCwxKSk7CisgCistICAgICAgICByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSk7CisrICAgICAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xNDMsNyArMTQzLDcgQEAgVEVTVChJbWdjb2RlY3NfVGlmZiwgZGVjb2RlX2luZmluaXRlX3Jvd3NwZXJzdHJpcCkKKyAKKyAgICAgRVhQRUNUX05PX1RIUk9XKGN2OjppbXJlYWQoZmlsZW5hbWUsIElNUkVBRF9VTkNIQU5HRUQpKTsKKyAKKy0gICAgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpKTsKKyB9CisgCisgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF93ZWJwLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF93ZWJwLmNwcAoraW5kZXggNmQ0MGNlMjFlLi5kODJmZGQyODkgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF93ZWJwLmNwcAorQEAgLTQ0LDcgKzQ0LDcgQEAgVEVTVChJbWdjb2RlY3NfV2ViUCwgZW5jb2RlX2RlY29kZV9sb3NzbGVzc193ZWJwKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIHJlbW92ZShvdXRwdXQuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKKyAKKyAgICAgY3Y6Ok1hdCBkZWNvZGUgPSBjdjo6aW1kZWNvZGUoYnVmLCBJTVJFQURfQ09MT1IpOworICAgICBBU1NFUlRfRkFMU0UoZGVjb2RlLmVtcHR5KCkpOworQEAgLTcxLDcgKzcxLDcgQEAgVEVTVChJbWdjb2RlY3NfV2ViUCwgZW5jb2RlX2RlY29kZV9sb3NzeV93ZWJwKQorIAorICAgICAgICAgRVhQRUNUX05PX1RIUk9XKGN2OjppbXdyaXRlKG91dHB1dCwgaW1nLCBwYXJhbXMpKTsKKyAgICAgICAgIGN2OjpNYXQgaW1nX3dlYnAgPSBjdjo6aW1yZWFkKG91dHB1dCk7CistICAgICAgICByZW1vdmUob3V0cHV0LmNfc3RyKCkpOworKyAgICAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShvdXRwdXQuY19zdHIoKSkpOworICAgICAgICAgRVhQRUNUX0ZBTFNFKGltZ193ZWJwLmVtcHR5KCkpOworICAgICAgICAgRVhQRUNUX0VRKDMsICAgaW1nX3dlYnAuY2hhbm5lbHMoKSk7CisgICAgICAgICBFWFBFQ1RfRVEoNTEyLCBpbWdfd2VicC5jb2xzKTsKK0BAIC05Niw3ICs5Niw3IEBAIFRFU1QoSW1nY29kZWNzX1dlYlAsIGVuY29kZV9kZWNvZGVfd2l0aF9hbHBoYV93ZWJwKQorIAorICAgICBFWFBFQ1RfTk9fVEhST1coY3Y6Omltd3JpdGUob3V0cHV0LCBpbWcpKTsKKyAgICAgY3Y6Ok1hdCBpbWdfd2VicCA9IGN2OjppbXJlYWQob3V0cHV0KTsKKy0gICAgcmVtb3ZlKG91dHB1dC5jX3N0cigpKTsKKysgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShvdXRwdXQuY19zdHIoKSkpOworICAgICBFWFBFQ1RfRkFMU0UoaW1nX3dlYnAuZW1wdHkoKSk7CisgICAgIEVYUEVDVF9FUSg0LCAgIGltZ193ZWJwLmNoYW5uZWxzKCkpOworICAgICBFWFBFQ1RfRVEoNTEyLCBpbWdfd2VicC5jb2xzKTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9DVkUtMjAxNy0xNDEzNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9DVkUtMjAxNy0xNDEzNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWQ1MGEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L0NWRS0yMDE3LTE0MTM2LnBhdGNoCkBAIC0wLDAgKzEsMjg4IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzk0NDgvY29tbWl0cy9hYWNhZTIwXQorCitCYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTQxMzYuCisKK1JlZjogaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvaXNzdWVzLzk0NDMKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gYWFjYWUyMDY1NzQ0YWRiMDVlODU4ZDMyNzE5OGM3YmJlN2Y0NTJiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYWxla2hpbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE1OjE1OjI3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGltZ2NvZGVzYzogZml4IGNvZGUgcHJvYmxlbXMgd2l0aCBpbnRlZ2VyIG92ZXJmbG93IC8gYWRkcmVzcworIGFyaXRobWV0aWMgLyBVQgorCistLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcCAgICAgIHwgIDggKystLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZXhyLmNwcCAgICAgIHwgMTAgKysrLS0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnLmNwcCAgICAgfCAgMiArLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnMjAwMC5jcHAgfCAgNiArKy0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BhbS5jcHAgICAgICB8ICAyICstCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3N1bnJhcy5jcHAgICB8ICA2ICsrLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuY3BwICAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuaHBwICAgICAgICAgIHwgIDIgKysKKyA4IGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAoraW5kZXggMjU3Zjk3YzJkOGIuLjY5NzY4ZTI3NmEzIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCitAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgIEJtcERlY29kZXI6OnJlYWRIZWFkZXIoKQorIGJvb2wgIEJtcERlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgeworICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKKy0gICAgaW50IHN0ZXAgPSAoaW50KWltZy5zdGVwOworKyAgICBpbnQgc3RlcCA9IHZhbGlkYXRlVG9JbnQoaW1nLnN0ZXApOworICAgICBib29sIGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOworICAgICB1Y2hhciAgZ3JheV9wYWxldHRlWzI1Nl0gPSB7MH07CisgICAgIGJvb2wgICByZXN1bHQgPSBmYWxzZTsKK0BAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCAgQm1wRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAKKyAgICAgaWYoIG1fb3JpZ2luID09IElQTF9PUklHSU5fQkwgKQorICAgICB7CistICAgICAgICBkYXRhICs9IChtX2hlaWdodCAtIDEpKnN0ZXA7CisrICAgICAgICBkYXRhICs9IChtX2hlaWdodCAtIDEpKihzaXplX3Qpc3RlcDsKKyAgICAgICAgIHN0ZXAgPSAtc3RlcDsKKyAgICAgfQorIAorQEAgLTUzMCw3ICs1MzAsNyBAQCBib29sICBCbXBFbmNvZGVyOjp3cml0ZSggY29uc3QgTWF0JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mICkKKyAgICAgaW50ICBiaXRtYXBIZWFkZXJTaXplID0gNDA7CisgICAgIGludCAgcGFsZXR0ZVNpemUgPSBjaGFubmVscyA+IDEgPyAwIDogMTAyNDsKKyAgICAgaW50ICBoZWFkZXJTaXplID0gMTQgLyogZmlsZWhlYWRlciAqLyArIGJpdG1hcEhlYWRlclNpemUgKyBwYWxldHRlU2l6ZTsKKy0gICAgaW50ICBmaWxlU2l6ZSA9IGZpbGVTdGVwKmhlaWdodCArIGhlYWRlclNpemU7CisrICAgIHNpemVfdCBmaWxlU2l6ZSA9IChzaXplX3QpZmlsZVN0ZXAqaGVpZ2h0ICsgaGVhZGVyU2l6ZTsKKyAgICAgUGFsZXR0ZUVudHJ5IHBhbGV0dGVbMjU2XTsKKyAKKyAgICAgaWYoIG1fYnVmICkKK0BAIC01NDAsNyArNTQwLDcgQEAgYm9vbCAgQm1wRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiApCisgICAgIHN0cm0ucHV0Qnl0ZXMoIGZtdFNpZ25CbXAsIChpbnQpc3RybGVuKGZtdFNpZ25CbXApICk7CisgCisgICAgIC8vIHdyaXRlIGZpbGUgaGVhZGVyCistICAgIHN0cm0ucHV0RFdvcmQoIGZpbGVTaXplICk7IC8vIGZpbGUgc2l6ZQorKyAgICBzdHJtLnB1dERXb3JkKCB2YWxpZGF0ZVRvSW50KGZpbGVTaXplKSApOyAvLyBmaWxlIHNpemUKKyAgICAgc3RybS5wdXREV29yZCggMCApOworICAgICBzdHJtLnB1dERXb3JkKCBoZWFkZXJTaXplICk7CisgCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2V4ci5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZXhyLmNwcAoraW5kZXggMGQyYWU5ZmE3ZDIuLjc4ZmZlNmM3NjY4IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2V4ci5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9leHIuY3BwCitAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgIEV4ckRlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgIGJvb2wgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7CisgCisgICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOworLSAgICBpbnQgc3RlcCA9IGltZy5zdGVwOworKyAgICBzaXplX3Qgc3RlcCA9IGltZy5zdGVwOworICAgICBib29sIGp1c3Rjb3B5ID0gbV9uYXRpdmVfZGVwdGg7CisgICAgIGJvb2wgY2hyb21hdG9yZ2IgPSBmYWxzZTsKKyAgICAgYm9vbCByZ2J0b2dyYXkgPSBmYWxzZTsKK0BAIC0yMDMsOCArMjAzLDggQEAgYm9vbCAgRXhyRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgRnJhbWVCdWZmZXIgZnJhbWU7CisgICAgIGludCB4c2FtcGxlWzNdID0gezEsIDEsIDF9OworICAgICBjaGFyICpidWZmZXI7CistICAgIGludCB4c3RlcDsKKy0gICAgaW50IHlzdGVwOworKyAgICBzaXplX3QgeHN0ZXAgPSAwOworKyAgICBzaXplX3QgeXN0ZXAgPSAwOworIAorICAgICB4c3RlcCA9IG1fbmF0aXZlX2RlcHRoID8gNCA6IDE7CisgCitAQCAtNTkzLDcgKzU5Myw3IEBAIGJvb2wgIEV4ckVuY29kZXI6OndyaXRlKCBjb25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgKQorICAgICBib29sIGlzc2lnbmVkID0gZGVwdGggPT0gQ1ZfOFMgfHwgZGVwdGggPT0gQ1ZfMTZTIHx8IGRlcHRoID09IENWXzMyUzsKKyAgICAgYm9vbCBpc2Zsb2F0ID0gZGVwdGggPT0gQ1ZfMzJGIHx8IGRlcHRoID09IENWXzY0RjsKKyAgICAgZGVwdGggPSBDVl9FTEVNX1NJWkUxKGRlcHRoKSo4OworLSAgICBjb25zdCBpbnQgc3RlcCA9IGltZy5zdGVwOworKyAgICBjb25zdCBzaXplX3Qgc3RlcCA9IGltZy5zdGVwOworIAorICAgICBIZWFkZXIgaGVhZGVyKCB3aWR0aCwgaGVpZ2h0ICk7CisgICAgIEltZjo6UGl4ZWxUeXBlIHR5cGU7CitAQCAtNjIzLDcgKzYyMyw3IEBAIGJvb2wgIEV4ckVuY29kZXI6OndyaXRlKCBjb25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgKQorICAgICBGcmFtZUJ1ZmZlciBmcmFtZTsKKyAKKyAgICAgY2hhciAqYnVmZmVyOworLSAgICBpbnQgYnVmZmVyc3RlcDsKKysgICAgc2l6ZV90IGJ1ZmZlcnN0ZXA7CisgICAgIGludCBzaXplOworICAgICBpZiggdHlwZSA9PSBGTE9BVCAmJiBkZXB0aCA9PSAzMiApCisgICAgIHsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZy5jcHAKK2luZGV4IGNlOTQyY2ExOTk1Li5jYWY3NjhkMjU2OSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcuY3BwCitAQCAtMzk2LDcgKzM5Niw3IEBAIGludCBteV9qcGVnX2xvYWRfZGh0IChzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCAqaW5mbywgdW5zaWduZWQgY2hhciAqZGh0LAorIGJvb2wgIEpwZWdEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorIHsKKyAgICAgdm9sYXRpbGUgYm9vbCByZXN1bHQgPSBmYWxzZTsKKy0gICAgaW50IHN0ZXAgPSAoaW50KWltZy5zdGVwOworKyAgICBzaXplX3Qgc3RlcCA9IGltZy5zdGVwOworICAgICBib29sIGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOworIAorICAgICBpZiggbV9zdGF0ZSAmJiBtX3dpZHRoICYmIG1faGVpZ2h0ICkKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZzIwMDAuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcyMDAwLmNwcAoraW5kZXggOTUwZWMyMTM3NWYuLjI0ZGZiMzhiYjlkIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcyMDAwLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcyMDAwLmNwcAorQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sICBKcGVnMktEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICBpbnQgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7CisgICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOworLSAgICBpbnQgc3RlcCA9IChpbnQpaW1nLnN0ZXA7CisrICAgIHNpemVfdCBzdGVwID0gaW1nLnN0ZXA7CisgICAgIGphc19zdHJlYW1fdCogc3RyZWFtID0gKGphc19zdHJlYW1fdCopbV9zdHJlYW07CisgICAgIGphc19pbWFnZV90KiBpbWFnZSA9IChqYXNfaW1hZ2VfdCopbV9pbWFnZTsKKyAKK0BAIC0yNTIsOSArMjUyLDkgQEAgYm9vbCAgSnBlZzJLRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWphc19pbWFnZV9yZWFkY21wdCggaW1hZ2UsIGNtcHRsdXRbaV0sIDAsIDAsIHhlbmQgLyB4c3RlcCwgeWVuZCAvIHlzdGVwLCBidWZmZXIgKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpbWcuZGVwdGgoKSA9PSBDVl84VSApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZWFkQ29tcG9uZW50OHUoIGRhdGEgKyBpLCBidWZmZXIsIHN0ZXAsIGNtcHRsdXRbaV0sIG1heHZhbCwgb2Zmc2V0LCBuY21wdHMgKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRDb21wb25lbnQ4dSggZGF0YSArIGksIGJ1ZmZlciwgdmFsaWRhdGVUb0ludChzdGVwKSwgY21wdGx1dFtpXSwgbWF4dmFsLCBvZmZzZXQsIG5jbXB0cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZWFkQ29tcG9uZW50MTZ1KCAoKHVuc2lnbmVkIHNob3J0ICopZGF0YSkgKyBpLCBidWZmZXIsIHN0ZXAgLyAyLCBjbXB0bHV0W2ldLCBtYXh2YWwsIG9mZnNldCwgbmNtcHRzICk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZWFkQ29tcG9uZW50MTZ1KCAoKHVuc2lnbmVkIHNob3J0ICopZGF0YSkgKyBpLCBidWZmZXIsIHZhbGlkYXRlVG9JbnQoc3RlcCAvIDIpLCBjbXB0bHV0W2ldLCBtYXh2YWwsIG9mZnNldCwgbmNtcHRzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhcmVzdWx0ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5jbXB0czsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcGFtLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wYW0uY3BwCitpbmRleCAxMTE5NWRjMzQyYy4uOGViOWUwMTIzMDkgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcGFtLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BhbS5jcHAKK0BAIC00NzksNyArNDc5LDcgQEAgYm9vbCAgUEFNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyB7CisgICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOworICAgICBpbnQgdGFyZ2V0X2NoYW5uZWxzID0gaW1nLmNoYW5uZWxzKCk7CistICAgIGludCBpbXBfc3RyaWRlID0gKGludClpbWcuc3RlcDsKKysgICAgc2l6ZV90IGltcF9zdHJpZGUgPSBpbWcuc3RlcDsKKyAgICAgaW50IHNhbXBsZV9kZXB0aCA9IENWX0VMRU1fU0laRTEobV90eXBlKTsKKyAgICAgaW50IHNyY19lbGVtc19wZXJfcm93ID0gbV93aWR0aCptX2NoYW5uZWxzOworICAgICBpbnQgc3JjX3N0cmlkZSA9IHNyY19lbGVtc19wZXJfcm93KnNhbXBsZV9kZXB0aDsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfc3VucmFzLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9zdW5yYXMuY3BwCitpbmRleCBhY2E5YjM2OTMxOC4uNmQ0NDhmOTRlZDMgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfc3VucmFzLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3N1bnJhcy5jcHAKK0BAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCAgU3VuUmFzdGVyRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyB7CisgICAgIGludCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKKyAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7CistICAgIGludCBzdGVwID0gKGludClpbWcuc3RlcDsKKysgICAgc2l6ZV90IHN0ZXAgPSBpbWcuc3RlcDsKKyAgICAgdWNoYXIgIGdyYXlfcGFsZXR0ZVsyNTZdID0gezB9OworICAgICBib29sICAgcmVzdWx0ID0gZmFsc2U7CisgICAgIGludCAgc3JjX3BpdGNoID0gKChtX3dpZHRoKm1fYnBwICsgNykvOCArIDEpICYgLTI7CitAQCAtMzA4LDExICszMDgsMTEgQEAgYm9vbCAgU3VuUmFzdGVyRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gbV9zdHJtLmdldEJ5dGUoKTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggY29sb3IgKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbFVuaUNvbG9yKCBkYXRhLCBsaW5lX2VuZCwgc3RlcCwgd2lkdGgzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbFVuaUNvbG9yKCBkYXRhLCBsaW5lX2VuZCwgdmFsaWRhdGVUb0ludChzdGVwKSwgd2lkdGgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LCBtX2hlaWdodCwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhbGV0dGVbY29kZV0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsVW5pR3JheSggZGF0YSwgbGluZV9lbmQsIHN0ZXAsIHdpZHRoMywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxVbmlHcmF5KCBkYXRhLCBsaW5lX2VuZCwgdmFsaWRhdGVUb0ludChzdGVwKSwgd2lkdGgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG1faGVpZ2h0LCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JheV9wYWxldHRlW2NvZGVdICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHkgPj0gbV9oZWlnaHQgKQorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuY3BwCitpbmRleCAyZWU1YmFmYzcxMi4uNDc0ZGFlMDA4Y2EgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuY3BwCitAQCAtNDIsNiArNDIsMTMgQEAKKyAjaW5jbHVkZSAicHJlY29tcC5ocHAiCisgI2luY2x1ZGUgInV0aWxzLmhwcCIKKyAKKytpbnQgdmFsaWRhdGVUb0ludChzaXplX3Qgc3opCisreworKyAgICBpbnQgdmFsdWVJbnQgPSAoaW50KXN6OworKyAgICBDVl9Bc3NlcnQoKHNpemVfdCl2YWx1ZUludCA9PSBzeik7CisrICAgIHJldHVybiB2YWx1ZUludDsKKyt9CisrCisgI2RlZmluZSAgU0NBTEUgIDE0CisgI2RlZmluZSAgY1IgIChpbnQpKDAuMjk5KigxIDw8IFNDQUxFKSArIDAuNSkKKyAjZGVmaW5lICBjRyAgKGludCkoMC41ODcqKDEgPDwgU0NBTEUpICsgMC41KQorQEAgLTUzNywyMyArNTQ0LDI1IEBAIHVjaGFyKiBGaWxsQ29sb3JSb3cxKCB1Y2hhciogZGF0YSwgdWNoYXIqIGluZGljZXMsIGludCBsZW4sIFBhbGV0dGVFbnRyeSogcGFsZXR0CisgeworICAgICB1Y2hhciogZW5kID0gZGF0YSArIGxlbiozOworIAorKyAgICBjb25zdCBQYWxldHRlRW50cnkgcDAgPSBwYWxldHRlWzBdLCBwMSA9IHBhbGV0dGVbMV07CisrCisgICAgIHdoaWxlKCAoZGF0YSArPSAyNCkgPCBlbmQgKQorICAgICB7CisgICAgICAgICBpbnQgaWR4ID0gKmluZGljZXMrKzsKKy0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAyNCkpID0gcGFsZXR0ZVsoaWR4ICYgMTI4KSAhPSAwXTsKKy0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAyMSkpID0gcGFsZXR0ZVsoaWR4ICYgNjQpICE9IDBdOworLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDE4KSkgPSBwYWxldHRlWyhpZHggJiAzMikgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTUpKSA9IHBhbGV0dGVbKGlkeCAmIDE2KSAhPSAwXTsKKy0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxMikpID0gcGFsZXR0ZVsoaWR4ICYgOCkgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gOSkpID0gcGFsZXR0ZVsoaWR4ICYgNCkgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gNikpID0gcGFsZXR0ZVsoaWR4ICYgMikgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMykpID0gcGFsZXR0ZVsoaWR4ICYgMSkgIT0gMF07CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMjQpKSA9IChpZHggJiAxMjgpID8gcDEgOiBwMDsKKysgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAyMSkpID0gKGlkeCAmIDY0KSA/IHAxIDogcDA7CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTgpKSA9IChpZHggJiAzMikgPyBwMSA6IHAwOworKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDE1KSkgPSAoaWR4ICYgMTYpID8gcDEgOiBwMDsKKysgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxMikpID0gKGlkeCAmIDgpID8gcDEgOiBwMDsKKysgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSA5KSkgPSAoaWR4ICYgNCkgPyBwMSA6IHAwOworKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDYpKSA9IChpZHggJiAyKSA/IHAxIDogcDA7CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMykpID0gKGlkeCAmIDEpID8gcDEgOiBwMDsKKyAgICAgfQorIAorLSAgICBpbnQgaWR4ID0gaW5kaWNlc1swXSA8PCAyNDsKKysgICAgaW50IGlkeCA9IGluZGljZXNbMF07CisgICAgIGZvciggZGF0YSAtPSAyNDsgZGF0YSA8IGVuZDsgZGF0YSArPSAzLCBpZHggKz0gaWR4ICkKKyAgICAgeworLSAgICAgICAgUGFsZXR0ZUVudHJ5IGNsciA9IHBhbGV0dGVbaWR4IDwgMF07CisrICAgICAgICBjb25zdCBQYWxldHRlRW50cnkgY2xyID0gKGlkeCAmIDEyOCkgPyBwMSA6IHAwOworICAgICAgICAgV1JJVEVfUElYKCBkYXRhLCBjbHIgKTsKKyAgICAgfQorIAorQEAgLTU2NSwyMyArNTc0LDI1IEBAIHVjaGFyKiBGaWxsR3JheVJvdzEoIHVjaGFyKiBkYXRhLCB1Y2hhciogaW5kaWNlcywgaW50IGxlbiwgdWNoYXIqIHBhbGV0dGUgKQorIHsKKyAgICAgdWNoYXIqIGVuZCA9IGRhdGEgKyBsZW47CisgCisrICAgIGNvbnN0IHVjaGFyIHAwID0gcGFsZXR0ZVswXSwgcDEgPSBwYWxldHRlWzFdOworKworICAgICB3aGlsZSggKGRhdGEgKz0gOCkgPCBlbmQgKQorICAgICB7CisgICAgICAgICBpbnQgaWR4ID0gKmluZGljZXMrKzsKKy0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDgpKSA9IHBhbGV0dGVbKGlkeCAmIDEyOCkgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA3KSkgPSBwYWxldHRlWyhpZHggJiA2NCkgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA2KSkgPSBwYWxldHRlWyhpZHggJiAzMikgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA1KSkgPSBwYWxldHRlWyhpZHggJiAxNikgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA0KSkgPSBwYWxldHRlWyhpZHggJiA4KSAhPSAwXTsKKy0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDMpKSA9IHBhbGV0dGVbKGlkeCAmIDQpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMikpID0gcGFsZXR0ZVsoaWR4ICYgMikgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAxKSkgPSBwYWxldHRlWyhpZHggJiAxKSAhPSAwXTsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDgpKSA9IChpZHggJiAxMjgpID8gcDEgOiBwMDsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDcpKSA9IChpZHggJiA2NCkgPyBwMSA6IHAwOworKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNikpID0gKGlkeCAmIDMyKSA/IHAxIDogcDA7CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA1KSkgPSAoaWR4ICYgMTYpID8gcDEgOiBwMDsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDQpKSA9IChpZHggJiA4KSA/IHAxIDogcDA7CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAzKSkgPSAoaWR4ICYgNCkgPyBwMSA6IHAwOworKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMikpID0gKGlkeCAmIDIpID8gcDEgOiBwMDsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDEpKSA9IChpZHggJiAxKSA/IHAxIDogcDA7CisgICAgIH0KKyAKKy0gICAgaW50IGlkeCA9IGluZGljZXNbMF0gPDwgMjQ7CisrICAgIGludCBpZHggPSBpbmRpY2VzWzBdOworICAgICBmb3IoIGRhdGEgLT0gODsgZGF0YSA8IGVuZDsgZGF0YSsrLCBpZHggKz0gaWR4ICkKKyAgICAgeworLSAgICAgICAgZGF0YVswXSA9IHBhbGV0dGVbaWR4IDwgMF07CisrICAgICAgICBkYXRhWzBdID0gKGlkeCAmIDEyOCkgPyBwMSA6IHAwOworICAgICB9CisgCisgICAgIHJldHVybiBkYXRhOworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5ocHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuaHBwCitpbmRleCBjYWIxMDYwOWRiMi4uN2FmNGM2MTc0ZWUgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuaHBwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuaHBwCitAQCAtNDIsNiArNDIsOCBAQAorICNpZm5kZWYgX1VUSUxTX0hfCisgI2RlZmluZSBfVVRJTFNfSF8KKyAKKytpbnQgdmFsaWRhdGVUb0ludChzaXplX3Qgc3RlcCk7CisrCisgc3RydWN0IFBhbGV0dGVFbnRyeQorIHsKKyAgICAgdW5zaWduZWQgY2hhciBiLCBnLCByLCBhOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZWxvY2FseGZlYXR1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZWxvY2FseGZlYXR1cmVzLnBhdGNoCmluZGV4IGEyZGI0OGQuLmZjMjczYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvdXNlbG9jYWx4ZmVhdHVyZXMucGF0Y2gKQEAgLTEsMTIgKzEsMjAgQEAKIGRpZmYgLS1naXQgYS9tb2R1bGVzL3hmZWF0dXJlczJkL0NNYWtlTGlzdHMudHh0IGIvbW9kdWxlcy94ZmVhdHVyZXMyZC9DTWFrZUxpc3RzLnR4dAotaW5kZXggZjI5NWJkZGFlZDY2Li42MDg2ZTc1ZWMzN2IgMTAwNjQ0CitpbmRleCBlMTc1NTU5NS4uYzcwMDljNDcgMTAwNjQ0CiAtLS0gYS9tb2R1bGVzL3hmZWF0dXJlczJkL0NNYWtlTGlzdHMudHh0CiArKysgYi9tb2R1bGVzL3hmZWF0dXJlczJkL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw1ICsxLDUgQEAKLSBzZXQodGhlX2Rlc2NyaXB0aW9uICJDb250cmlidXRlZC9FeHBlcmltZW50YWwgQWxnb3JpdGhtcyBmb3IgU2FsaWVudCAyRCBGZWF0dXJlcyBEZXRlY3Rpb24iKQotIG9jdl9kZWZpbmVfbW9kdWxlKHhmZWF0dXJlczJkIG9wZW5jdl9jb3JlIG9wZW5jdl9pbWdwcm9jIG9wZW5jdl9mZWF0dXJlczJkIG9wZW5jdl9jYWxpYjNkIG9wZW5jdl9zaGFwZSBvcGVuY3ZfaGlnaGd1aSBvcGVuY3ZfdmlkZW9pbyBvcGVuY3ZfbWwKLSAgICAgICAgICAgICAgICAgICBPUFRJT05BTCBvcGVuY3ZfY3VkYWFyaXRobSBXUkFQIHB5dGhvbiBqYXZhKQotLWluY2x1ZGUoY21ha2UvZG93bmxvYWRfdmdnLmNtYWtlKQotLWluY2x1ZGUoY21ha2UvZG93bmxvYWRfYm9vc3RkZXNjLmNtYWtlKQotKyNpbmNsdWRlKGNtYWtlL2Rvd25sb2FkX3ZnZy5jbWFrZSkKLSsjaW5jbHVkZShjbWFrZS9kb3dubG9hZF9ib29zdGRlc2MuY21ha2UpCitAQCAtNSwxMCArNSwxMCBAQCBvY3ZfZGVmaW5lX21vZHVsZSh4ZmVhdHVyZXMyZCBvcGVuY3ZfY29yZSBvcGVuY3ZfaW1ncHJvYyBvcGVuY3ZfZmVhdHVyZXMyZCBvcGVuYworIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NtYWtlL2Rvd25sb2FkX3ZnZy5jbWFrZSkKKyBpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFrZS9kb3dubG9hZF9ib29zdGRlc2MuY21ha2UpCisgc2V0KERPV05MT0FEX0RJUiAiJHtPcGVuQ1ZfQklOQVJZX0RJUn0vZG93bmxvYWRzL3hmZWF0dXJlczJkIikKKy1kb3dubG9hZF9ib29zdF9kZXNjcmlwdG9ycygiJHtET1dOTE9BRF9ESVJ9IiBib29zdF9zdGF0dXMpCistZG93bmxvYWRfdmdnX2Rlc2NyaXB0b3JzKCIke0RPV05MT0FEX0RJUn0iIHZnZ19zdGF0dXMpCistaWYoTk9UIGJvb3N0X3N0YXR1cyBPUiBOT1QgdmdnX3N0YXR1cykKKy0gIG9jdl9tb2R1bGVfZGlzYWJsZSh4ZmVhdHVyZXMyZCkKKy1lbmRpZigpCisrI2Rvd25sb2FkX2Jvb3N0X2Rlc2NyaXB0b3JzKCIke0RPV05MT0FEX0RJUn0iIGJvb3N0X3N0YXR1cykKKysjZG93bmxvYWRfdmdnX2Rlc2NyaXB0b3JzKCIke0RPV05MT0FEX0RJUn0iIHZnZ19zdGF0dXMpCisrI2lmKE5PVCBib29zdF9zdGF0dXMgT1IgTk9UIHZnZ19zdGF0dXMpCisrIyAgb2N2X21vZHVsZV9kaXNhYmxlKHhmZWF0dXJlczJkKQorKyNlbmRpZigpCisgCisgb2N2X21vZHVsZV9pbmNsdWRlX2RpcmVjdG9yaWVzKCIke0RPV05MT0FEX0RJUn0iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZW9lcHJvdG9idWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvdXNlb2Vwcm90b2J1Zi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA2OGJkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvdXNlb2Vwcm90b2J1Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UgYi9tb2R1bGVzL2Rubi9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UKLWluZGV4IGViMmE3MjljYzJlYi4uODcxNzczNjQ4NGRlIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9kbm4vY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCi0rKysgYi9tb2R1bGVzL2Rubi9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UKLUBAIC0yNCw3ICsyNCw3IEBAIGlmKE5PVCBCVUlMRF9QUk9UT0JVRiBBTkQgTk9UIChERUZJTkVEIFBST1RPQlVGX0lOQ0xVREVfRElSIEFORCBERUZJTkVEIFBST1RPQlVGCi0gICBmaW5kX3BhY2thZ2UoUHJvdG9idWYgUVVJRVQpCi0gZW5kaWYoKQotIAotLWlmKFBST1RPQlVGX0ZPVU5EKQotK2lmKFBST1RPQlVGX0ZPVU5EIE9SIChERUZJTkVEIFBST1RPQlVGX0lOQ0xVREVfRElSIEFORCBERUZJTkVEIFBST1RPQlVGX0xJQlJBUklFUykpCi0gICAjIG5vdGhpbmcKLSBlbHNlKCkKLSAgIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9kb3dubG9hZF9wcm90b2J1Zi5jbWFrZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTdjNjQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuY3YgOiBUaGUgT3BlbiBDb21wdXRlciBWaXNpb24gTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcGVuY3Yub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbmNsdWRlL29wZW5jdjIvb3BlbmN2LmhwcDtlbmRsaW5lPTQxO21kNT02ZDY5MGQ4NDg4YTZmY2E3YTJjMTkyOTMyNDY2YmIxNCIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotREVQRU5EUyA9ICJweXRob24tbnVtcHkgbGlidG9vbCBzd2lnIHN3aWctbmF0aXZlIHB5dGhvbiBiemlwMiB6bGliIGdsaWItMi4wIgotCi1TUkNSRVYgPSAiMmM5NTQ3ZTMxNDc3NzkwMDE4MTFkMDE5MzZhZWQzOGY1NjA5MjlmYyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9JdHNlZXovb3BlbmN2LmdpdDticmFuY2g9Mi40IFwKLSAgZmlsZTovLzAwMDEtVXNlLV9fdmVjdG9yLWluc3RlYWQtb2YtdmVjdG9yLWFzLXN1Z2dlc3RzLUVpZ2VuLnBhdGNoIgotCi1QViA9ICIyLjQuMTErZ2l0JHtTUkNQVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgRG8gYW4gb3V0LW9mLXRyZWUgYnVpbGQKLU9FQ01BS0VfU09VUkNFUEFUSCA9ICIke1N9IgotT0VDTUFLRV9CVUlMRFBBVEggPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9BUkNIfSIKLQotRVhUUkFfT0VDTUFLRSA9ICItRFBZVEhPTl9OVU1QWV9JTkNMVURFX0RJUjpQQVRIPSR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1BZVEhPTl9TVVBQT1JUPU9OIFwKLSAgICAgICAgICAgICAgICAgLURXSVRIX0dTVFJFQU1FUj1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEhfMTM5ND1PRkYgXAotICAgICAgICAgICAgICAgICAtRENNQUtFX1NLSVBfUlBBVEg9T04gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2UzIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjEiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4yIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIC1ERU5BQkxFX1NTRTQyPTEiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZWlnZW4ganBlZyBwbmcgdGlmZiB2NGwgbGlidjRsIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJsaWJhdiIsICIiLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbZWlnZW5dID0gIi1EV0lUSF9FSUdFTj1PTiwtRFdJVEhfRUlHRU49T0ZGLGxpYmVpZ2VuLCIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRFdJVEhfR1RLPU9OLC1EV0lUSF9HVEs9T0ZGLGd0ayssIgotUEFDS0FHRUNPTkZJR1tqYXNwZXJdID0gIi1EV0lUSF9KQVNQRVI9T04sLURXSVRIX0pBU1BFUj1PRkYsamFzcGVyLCIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURXSVRIX0pQRUc9T04sLURXSVRIX0pQRUc9T0ZGLGpwZWcsIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLURXSVRIX0ZGTVBFRz1PTiwtRFdJVEhfRkZNUEVHPU9GRixsaWJhdiwiCi1QQUNLQUdFQ09ORklHW2xpYnY0bF0gPSAiLURXSVRIX0xJQlY0TD1PTiwtRFdJVEhfTElCVjRMPU9GRix2NGwtdXRpbHMsIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nLCIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLURXSVRIX1RJRkY9T04sLURXSVRIX1RJRkY9T0ZGLHRpZmYsIgotUEFDS0FHRUNPTkZJR1t2NGxdID0gIi1EV0lUSF9WNEw9T04sLURXSVRIX1Y0TD1PRkYsdjRsLXV0aWxzLCIKLQotaW5oZXJpdCBkaXN0dXRpbHMtYmFzZSBwa2djb25maWcgY21ha2UKLQotZXhwb3J0IFBZVEhPTl9DU1BFQz0iLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotZXhwb3J0IFBZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbiIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIi1JJHtTfS9pbmNsdWRlICIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWFwcHMgcHl0aG9uLW9wZW5jdiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGN2X2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGN2X2xpYmRpcl9kYmcgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9Ly5kZWJ1ZycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5sYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT3BlbkNWICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotICAgIG1ldGFwa2cgPSAgcG4gKyAnLWRldicKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBibGFja2xpc3QgPSBbIG1ldGFwa2cgXQotICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKLSAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgcGtnLmVuZHN3aXRoKCctZGV2Jyk6Ci0gICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCi0gICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKLX0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9wZW5jdi0uKiIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0vKiAke2RhdGFkaXJ9L09wZW5DViIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9Ly5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9wa2djb25maWciCi1GSUxFU18ke1BOfS1kb2MgPSAiJHtkYXRhZGlyfS9PcGVuQ1YvZG9jIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1TVU1NQVJZX3B5dGhvbi1vcGVuY3YgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIG9wZW5jdiIKLUZJTEVTX3B5dGhvbi1vcGVuY3YgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLVJERVBFTkRTX3B5dGhvbi1vcGVuY3YgPSAicHl0aG9uLWNvcmUgcHl0aG9uLW51bXB5IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBjcCAke1N9L2luY2x1ZGUvb3BlbmN2LyouaCAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvCi0gICAgc2VkIC1pICcvYmxvYnRyYWNrL2QnICR7RH0ke2luY2x1ZGVkaXJ9L29wZW5jdi9jdmF1eC5oCi0KLSAgICAjIE1vdmUgUHl0aG9uIGZpbGVzIGludG8gY29ycmVjdCBsaWJyYXJ5IGZvbGRlciAoZm9yIG11bHRpbGliIGJ1aWxkKQotICAgIGlmIFsgIiRsaWJkaXIiICE9ICIvdXNyL2xpYiIgXTsgdGhlbgotICAgICAgICBtdiAke0R9L3Vzci9saWIvKiAke0R9LyR7bGliZGlyfS8KLSAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYgotICAgIGZpCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzQwNjYwLwotUE5CTEFDS0xJU1Rbb3BlbmN2XSA/PSAiTm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50bHkgdXNlZCBmZm1wZWcgMyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVjNzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuY3YgOiBUaGUgT3BlbiBDb21wdXRlciBWaXNpb24gTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcGVuY3Yub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYjJmODc1MmNjNWVkZjUwNGQyODMxMDdkMDMzZjU0NCIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotREVQRU5EUyA9ICJsaWJ0b29sIHN3aWctbmF0aXZlIGJ6aXAyIHpsaWIgZ2xpYi0yLjAgbGlid2VicCIKLQotU1JDUkVWX29wZW5jdiA9ICI3MGJiZjE3YjEzMzQ5NmJkN2Q1NGQwMzRiMGY5NGJkODY5ZTBlODEwIgotU1JDUkVWX2NvbnRyaWIgPSAiODYzNDI1MjJiMGViMmIxNmZhODUxYzAyMGNjNGUwZmVmNGUwMTBiNyIKLVNSQ1JFVl9pcHAgPSAiODFhNjc2MDAxY2E4MDc1YWRhNDk4NTgzZTQxNjYwNzllNTc0NDY2OCIKLVNSQ1JFVl9ib290ZGVzYyA9ICIzNGU0MjA2YWVmNDRkNTBlNmJiY2QwYWIwNjM1NGI1MmU3NDY2ZDI2IgotU1JDUkVWX3ZnZyA9ICJmY2NmN2NkNmE0YjEyMDc5ZjczYmJmYjIxNzQ1ZjliYWJjZDRlYjFkIgotSVBQX01ENSA9ICI4MDhiNzkxYTZlYWM5ZWQ3OGQzMmE3NjY2ODA0MzIwZSIKLQotU1JDUkVWX0ZPUk1BVCA9ICJvcGVuY3YiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi5naXQ7bmFtZT1vcGVuY3YgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliLmdpdDtkZXN0c3VmZml4PWNvbnRyaWI7bmFtZT1jb250cmliIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1pcHBpY3YvbWFzdGVyXzIwMTUxMjAxO2Rlc3RzdWZmaXg9aXBwO25hbWU9aXBwIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX2Jvb3N0ZGVzY18yMDE2MTAxMjtkZXN0c3VmZml4PWJvb3RkZXNjO25hbWU9Ym9vdGRlc2MgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl8zcmRwYXJ0eS5naXQ7YnJhbmNoPWNvbnRyaWJfeGZlYXR1cmVzMmRfdmdnXzIwMTYwMzE3O2Rlc3RzdWZmaXg9dmdnO25hbWU9dmdnIFwKLSAgICBmaWxlOi8vMDAwMS0zcmRwYXJ0eS1pcHBpY3YtVXNlLXByZS1kb3dubG9hZGVkLWlwcC5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeHBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovL3VzZWxvY2FseGZlYXR1cmVzLnBhdGNoO3BhdGNoZGlyPS4uL2NvbnRyaWIvIFwKLSAgICBmaWxlOi8vdXNlb2Vwcm90b2J1Zi5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCi0gICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWN1ZGEtZml4LWZwMTYtY29tcGlsYXRpb24ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVJldmVydC1jaGVjay1GUDE2LWJ1aWxkLWNvbmRpdGlvbi1jb3JyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS10cmFja2luZy1tYWtlLW9wZW5jdl9kbm4tZGVwZW5kYW5jeS1vcHRpb25hbC5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCi0iCi0KLVBWID0gIjMuMitnaXQke1NSQ1BWfSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fdW5wYWNrX2V4dHJhKCkgewotICAgIHRhciB4emYgJHtXT1JLRElSfS9pcHAvaXBwaWN2L2lwcGljdl9saW51eF8yMDE1MTIwMS50Z3ogLUMgJHtXT1JLRElSfQotICAgIGNwICR7V09SS0RJUn0vdmdnLyouaSAke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcy94ZmVhdHVyZXMyZC9zcmMKLSAgICBjcCAke1dPUktESVJ9L2Jvb3RkZXNjLyouaSAke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcy94ZmVhdHVyZXMyZC9zcmMKLX0KLWFkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKLQotRVhUUkFfT0VDTUFLRSA9ICItRE9QRU5DVl9FWFRSQV9NT0RVTEVTX1BBVEg9JHtXT1JLRElSfS9jb250cmliL21vZHVsZXMgXAotICAgIC1EV0lUSF8xMzk0PU9GRiBcCi0gICAgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwKLSAgICAtRE9QRU5DVl9JQ1ZfUEFDS0FHRV9ET1dOTE9BREVEPSR7SVBQX01ENX0gXAotICAgIC1ET1BFTkNWX0lDVl9QQVRIPSR7V09SS0RJUn0vaXBwaWN2X2xueCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlMyIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjEiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjIiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEgLURFTkFCTEVfU1NFNDI9MSIsICIiLCBkKX0gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAotIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFg4Nj1PTiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgZWlnZW4ganBlZyBwbmcgdGlmZiB2NGwgbGlidjRsIGdzdHJlYW1lciBzYW1wbGVzIHRiYiBncGhvdG8yIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJsaWJhdiIsICIiLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYW1kYmxhc10gPSAiLURXSVRIX09QRU5DTEFNREJMQVM9T04sLURXSVRIX09QRU5DTEFNREJMQVM9T0ZGLGxpYmNsYW1kYmxhcywiCi1QQUNLQUdFQ09ORklHW2FtZGZmdF0gPSAiLURXSVRIX09QRU5DTEFNREZGVD1PTiwtRFdJVEhfT1BFTkNMQU1ERkZUPU9GRixsaWJjbGFtZGZmdCwiCi1QQUNLQUdFQ09ORklHW2Rubl0gPSAiLURCVUlMRF9vcGVuY3ZfZG5uPU9OIC1EVVBEQVRFX1BST1RPX0ZJTEVTPU9OIC1EQlVJTERfUFJPVE9CVUY9T0ZGLC1EQlVJTERfb3BlbmN2X2Rubj1PRkYscHJvdG9idWYgcHJvdG9idWYtbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbZWlnZW5dID0gIi1EV0lUSF9FSUdFTj1PTiwtRFdJVEhfRUlHRU49T0ZGLGxpYmVpZ2VuIGdmbGFncyBnbG9nLCIKLVBBQ0tBR0VDT05GSUdbZnJlZXR5cGVdID0gIi1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9OLC1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9GRixmcmVldHlwZSwiCi1QQUNLQUdFQ09ORklHW2dwaG90bzJdID0gIi1EV0lUSF9HUEhPVE8yPU9OLC1EV0lUSF9HUEhPVE8yPU9GRixsaWJncGhvdG8yLCIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRFdJVEhfR1NUUkVBTUVSPU9OLC1EV0lUSF9HU1RSRUFNRVI9T0ZGLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLCIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRFdJVEhfR1RLPU9OLC1EV0lUSF9HVEs9T0ZGLGd0ayszLCIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRFdJVEhfSkFTUEVSPU9OLC1EV0lUSF9KQVNQRVI9T0ZGLGphc3BlciwiCi1QQUNLQUdFQ09ORklHW2phdmFdID0gIi1ESkFWQV9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtKQVZBX0hPTUV9L2luY2x1ZGUvbGludXggLURKQVZBX0FXVF9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0FXVF9MSUJSQVJZPSR7SkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtKQVZBX0hPTUV9L2xpYi9hbWQ2NC9zZXJ2ZXIvbGlianZtLnNvLCxhbnQtbmF0aXZlIGZhc3RqYXItbmF0aXZlIG9wZW5qZGstOC1uYXRpdmUsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiwtRFdJVEhfSlBFRz1PRkYsanBlZywiCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItRFdJVEhfRkZNUEVHPU9OLC1EV0lUSF9GRk1QRUc9T0ZGLGxpYmF2LCIKLVBBQ0tBR0VDT05GSUdbbGlidjRsXSA9ICItRFdJVEhfTElCVjRMPU9OLC1EV0lUSF9MSUJWNEw9T0ZGLHY0bC11dGlscywiCi1QQUNLQUdFQ09ORklHW29wZW5jbF0gPSAiLURXSVRIX09QRU5DTD1PTiwtRFdJVEhfT1BFTkNMPU9GRixvcGVuY2wtaGVhZGVycyB2aXJ0dWFsL29wZW5jbC1pY2QsIgotUEFDS0FHRUNPTkZJR1tvcmFjbGUtamF2YV0gPSAiLURKQVZBX0lOQ0xVREVfUEFUSD0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlL2xpbnV4IC1ESkFWQV9BV1RfSU5DTFVERV9QQVRIPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfQVdUX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvc2VydmVyL2xpYmp2bS5zbywsYW50LW5hdGl2ZSBvcmFjbGUtanNlLWpkayBvcmFjbGUtanNlLWpkay1uYXRpdmUsIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLURQWVRIT04yX05VTVBZX0lOQ0xVREVfRElSUzpQQVRIPSR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUsLHB5dGhvbi1udW1weSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi1EUFlUSE9OM19OVU1QWV9JTkNMVURFX0RJUlM6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLCxweXRob24zLW51bXB5LCIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlc10gPSAiLURCVUlMRF9FWEFNUExFUz1PTiAtRElOU1RBTExfUFlUSE9OX0VYQU1QTEVTPU9OLC1EQlVJTERfRVhBTVBMRVM9T0ZGLCwiCi1QQUNLQUdFQ09ORklHW3RiYl0gPSAiLURXSVRIX1RCQj1PTiwtRFdJVEhfVEJCPU9GRix0YmIsIgotUEFDS0FHRUNPTkZJR1t0ZXh0XSA9ICItREJVSUxEX29wZW5jdl90ZXh0PU9OLC1EQlVJTERfb3BlbmN2X3RleHQ9T0ZGLHRlc3NlcmFjdCwiCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmLCIKLVBBQ0tBR0VDT05GSUdbdjRsXSA9ICItRFdJVEhfVjRMPU9OLC1EV0lUSF9WNEw9T0ZGLHY0bC11dGlscywiCi0KLWluaGVyaXQgcGtnY29uZmlnIGNtYWtlCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9Ci1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnZGlzdHV0aWxzLWJhc2UnLCAnJywgZCl9Ci0KLWV4cG9ydCBQWVRIT05fQ1NQRUM9Ii1JJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLWV4cG9ydCBQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMnLCAncHl0aG9uJywgZCl9IgotZXhwb3J0IE9SQUNMRV9KQVZBX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvYmluL2phdmEiCi1leHBvcnQgSkFWQV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2xpYi9qdm0vb3Blbmpkay04LW5hdGl2ZSIKLWV4cG9ydCBBTlRfRElSPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL3NoYXJlL2FudC8iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICItSSR7U30vaW5jbHVkZSAiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzYW1wbGVzJywgJyR7UE59LXNhbXBsZXMnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdvcmFjbGUtamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24tJHtCUE59JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLSR7QlBOfScsICcnLCBkKX0gXAotICAgICR7UE59LWFwcHMiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBjdl9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLmxhJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPcGVuQ1YgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgbWV0YXBrZyA9ICBwbiArICctZGV2JwotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFsgXQotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgotICAgICAgICBpZiBub3QgcGtnIGluIGJsYWNrbGlzdCBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBwa2cuZW5kc3dpdGgoJy1kZXYnKToKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotCi0gICAgbWV0YXBrZyA9ICBwbgotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFsgXQotICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgotICAgICAgICBpZiBub3QgcGtnIGluIGJsYWNrbGlzdCBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGV2JykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kYmcnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRvYycpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctbG9jYWxlJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1zdGF0aWNkZXYnKToKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotCi19Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcGVuY3YtLioiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9PcGVuQ1YvamF2YS8uZGVidWcvKiAke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzL2Jpbi8uZGVidWcvKiIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9wa2djb25maWcgJHtkYXRhZGlyfS9PcGVuQ1YvKi5jbWFrZSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtkYXRhZGlyfS9PcGVuQ1YvM3JkcGFydHkvbGliLyouYSIKLUZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9LyogJHtkYXRhZGlyfS9PcGVuQ1YiCi1GSUxFU18ke1BOfS1qYXZhID0gIiR7ZGF0YWRpcn0vT3BlbkNWL2phdmEiCi1GSUxFU18ke1BOfS1zYW1wbGVzID0gIiR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1qYXZhID0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJkaXIiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNVTU1BUllfcHl0aG9uLW9wZW5jdiA9ICJQeXRob24gYmluZGluZ3MgdG8gb3BlbmN2IgotRklMRVNfcHl0aG9uLW9wZW5jdiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotUkRFUEVORFNfcHl0aG9uLW9wZW5jdiA9ICJweXRob24tY29yZSBweXRob24tbnVtcHkiCi0KLVNVTU1BUllfcHl0aG9uMy1vcGVuY3YgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIG9wZW5jdiIKLUZJTEVTX3B5dGhvbjMtb3BlbmN2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1SREVQRU5EU19weXRob24zLW9wZW5jdiA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1udW1weSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3AgJHtTfS9pbmNsdWRlL29wZW5jdi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vb3BlbmN2LwotICAgIHNlZCAtaSAnL2Jsb2J0cmFjay9kJyAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvY3ZhdXguaAotCi0gICAgIyBNb3ZlIFB5dGhvbiBmaWxlcyBpbnRvIGNvcnJlY3QgbGlicmFyeSBmb2xkZXIgKGZvciBtdWx0aWxpYiBidWlsZCkKLSAgICBpZiBbICIkbGliZGlyIiAhPSAiL3Vzci9saWIiIC1hIC1kICR7RH0vdXNyL2xpYiBdOyB0aGVuCi0gICAgICAgIG12ICR7RH0vdXNyL2xpYi8qICR7RH0vJHtsaWJkaXJ9LwotICAgICAgICBybSAtcmYgJHtEfS91c3IvbGliCi0gICAgZmkKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFQ09ORklHIiwgInNhbXBsZXMiLCAidHJ1ZSIsICJmYWxzZSIsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzL2Jpbi8KLSAgICAgICAgY3AgLWYgYmluLyotdHV0b3JpYWwtKiBiaW4vKi1leGFtcGxlLSogJHtEfSR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvYmluLwotICAgIGZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDllNGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMy5iYgpAQCAtMCwwICsxLDE5NCBAQAorU1VNTUFSWSA9ICJPcGVuY3YgOiBUaGUgT3BlbiBDb21wdXRlciBWaXNpb24gTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9vcGVuY3Yub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYjJmODc1MmNjNWVkZjUwNGQyODMxMDdkMDMzZjU0NCIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworREVQRU5EUyA9ICJsaWJ0b29sIHN3aWctbmF0aXZlIGJ6aXAyIHpsaWIgZ2xpYi0yLjAgbGlid2VicCIKKworU1JDUkVWX29wZW5jdiA9ICI4N2MyN2EwNzRkYjlmNmQ5ZDYwNTEzZjM1MWRhYTkwMzYwNmNhMzcwIgorU1JDUkVWX2NvbnRyaWIgPSAiMmE5ZDFiMjJlZDc2ZWIyMmZhZDFhNWVkZjZmYWY0ZDA1ZjIwN2IxMyIKK1NSQ1JFVl9pcHAgPSAiYTYyZTIwNjc2YTYwZWUwYWQ2NTgxZTIxN2ZlN2U0YmFkYTNiOTVkYiIKK1NSQ1JFVl9ib29zdGRlc2MgPSAiMzRlNDIwNmFlZjQ0ZDUwZTZiYmNkMGFiMDYzNTRiNTJlNzQ2NmQyNiIKK1NSQ1JFVl92Z2cgPSAiZmNjZjdjZDZhNGIxMjA3OWY3M2JiZmIyMTc0NWY5YmFiY2Q0ZWIxZCIKKworZGVmIGlwcF9maWxlbmFtZShkKToKKyAgICBpbXBvcnQgcmUKKyAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKKyAgICBpZiByZS5tYXRjaCgiaS44NiQiLCBhcmNoKToKKyAgICAgICAgcmV0dXJuICJpcHBpY3ZfMjAxN3UyX2xueF9pYTMyXzIwMTcwNDE4LnRneiIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gImlwcGljdl8yMDE3dTJfbG54X2ludGVsNjRfMjAxNzA0MTgudGd6IgorCitkZWYgaXBwX21kNXN1bShkKToKKyAgICBpbXBvcnQgcmUKKyAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKKyAgICBpZiByZS5tYXRjaCgiaS44NiQiLCBhcmNoKToKKyAgICAgICAgcmV0dXJuICJmMmNlY2UwMGQ4MDJkNGRlYTg2ZGY1MmVkMDk1MjU3ZSIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIjgwOGI3OTFhNmVhYzllZDc4ZDMyYTc2NjY4MDQzMjBlIgorCitJUFBfRklMRU5BTUUgPSAiJHtAaXBwX2ZpbGVuYW1lKGQpfSIKK0lQUF9NRDUgPSAiJHtAaXBwX21kNXN1bShkKX0iCisKK1NSQ1JFVl9GT1JNQVQgPSAib3BlbmN2X2NvbnRyaWJfaXBwX2Jvb3N0ZGVzY192Z2ciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi5naXQ7bmFtZT1vcGVuY3YgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliLmdpdDtkZXN0c3VmZml4PWNvbnRyaWI7bmFtZT1jb250cmliIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1pcHBpY3YvbWFzdGVyXzIwMTcwNDE4O2Rlc3RzdWZmaXg9aXBwO25hbWU9aXBwIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX2Jvb3N0ZGVzY18yMDE2MTAxMjtkZXN0c3VmZml4PWJvb3N0ZGVzYztuYW1lPWJvb3N0ZGVzYyBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF92Z2dfMjAxNjAzMTc7ZGVzdHN1ZmZpeD12Z2c7bmFtZT12Z2cgXAorICAgIGZpbGU6Ly8wMDAxLTNyZHBhcnR5LWlwcGljdi1Vc2UtcHJlLWRvd25sb2FkZWQtaXBwLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4cGtnY29uZmlnLnBhdGNoIFwKKyAgICBmaWxlOi8vdXNlbG9jYWx4ZmVhdHVyZXMucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAorICAgIGZpbGU6Ly8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1pbWdjb2RlY3MtcmVmYWN0b3JpbmctaW1wcm92ZS1jb2RlLXF1YWxpdHkucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLWltZ3Byb2MtdGVzdC1hZGQtY2hlY2tzLWZvci1yZW1vdmUtY2FsbC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtRG9udC11c2UtaXN5c3RlbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtY2Fyb3RlbmUtZG9uLXQtdXNlLV9fYXNtX18td2l0aC1hYXJjaDY0LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1Eby1ub3QtZW5hYmxlLWFzbS13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxMzYucGF0Y2ggXAorIgorUFYgPSAiMy4zK2dpdCR7U1JDUFZ9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb191bnBhY2tfZXh0cmEoKSB7CisgICAgdGFyIHh6ZiAke1dPUktESVJ9L2lwcC9pcHBpY3YvJHtJUFBfRklMRU5BTUV9IC1DICR7V09SS0RJUn0KKyAgICBjcCAke1dPUktESVJ9L3ZnZy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCisgICAgY3AgJHtXT1JLRElSfS9ib29zdGRlc2MvKi5pICR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzL3hmZWF0dXJlczJkL3NyYworfQorYWRkdGFzayB1bnBhY2tfZXh0cmEgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAorCitFWFRSQV9PRUNNQUtFID0gIi1ET1BFTkNWX0VYVFJBX01PRFVMRVNfUEFUSD0ke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcyBcCisgICAgLURXSVRIXzEzOTQ9T0ZGIFwKKyAgICAtRENNQUtFX1NLSVBfUlBBVEg9T04gXAorICAgIC1ET1BFTkNWX0lDVl9QQUNLQUdFX0RPV05MT0FERUQ9JHtJUFBfTUQ1fSBcCisgICAgLURPUEVOQ1ZfSUNWX1BBVEg9JHtXT1JLRElSfS9pcHBpY3ZfbG54IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2UzIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTQuMSIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEgLURFTkFCTEVfU1NFNDE9MSIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTQuMiIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEgLURFTkFCTEVfU1NFNDE9MSAtREVOQUJMRV9TU0U0Mj0xIiwgIiIsIGQpfSBcCisgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCisgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCisiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYgPSAiIC1EWDg2PU9OIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyBlaWdlbiBqcGVnIHBuZyB0aWZmIHY0bCBsaWJ2NGwgZ3N0cmVhbWVyIHNhbXBsZXMgdGJiIGdwaG90bzIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImd0ayIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImxpYmF2IiwgIiIsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thbWRibGFzXSA9ICItRFdJVEhfT1BFTkNMQU1EQkxBUz1PTiwtRFdJVEhfT1BFTkNMQU1EQkxBUz1PRkYsbGliY2xhbWRibGFzLCIKK1BBQ0tBR0VDT05GSUdbYW1kZmZ0XSA9ICItRFdJVEhfT1BFTkNMQU1ERkZUPU9OLC1EV0lUSF9PUEVOQ0xBTURGRlQ9T0ZGLGxpYmNsYW1kZmZ0LCIKK1BBQ0tBR0VDT05GSUdbZG5uXSA9ICItREJVSUxEX29wZW5jdl9kbm49T04gLURQUk9UT0JVRl9VUERBVEVfRklMRVM9T04gLURCVUlMRF9QUk9UT0JVRj1PRkYsLURCVUlMRF9vcGVuY3ZfZG5uPU9GRixwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tlaWdlbl0gPSAiLURXSVRIX0VJR0VOPU9OLC1EV0lUSF9FSUdFTj1PRkYsbGliZWlnZW4gZ2ZsYWdzIGdsb2csIgorUEFDS0FHRUNPTkZJR1tmcmVldHlwZV0gPSAiLURCVUlMRF9vcGVuY3ZfZnJlZXR5cGU9T04sLURCVUlMRF9vcGVuY3ZfZnJlZXR5cGU9T0ZGLGZyZWV0eXBlLCIKK1BBQ0tBR0VDT05GSUdbZ3Bob3RvMl0gPSAiLURXSVRIX0dQSE9UTzI9T04sLURXSVRIX0dQSE9UTzI9T0ZGLGxpYmdwaG90bzIsIgorUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi1EV0lUSF9HU1RSRUFNRVI9T04sLURXSVRIX0dTVFJFQU1FUj1PRkYsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UsIgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EV0lUSF9HVEs9T04sLURXSVRIX0dUSz1PRkYsZ3RrKzMsIgorUEFDS0FHRUNPTkZJR1tqYXNwZXJdID0gIi1EV0lUSF9KQVNQRVI9T04sLURXSVRIX0pBU1BFUj1PRkYsamFzcGVyLCIKK1BBQ0tBR0VDT05GSUdbamF2YV0gPSAiLURKQVZBX0lOQ0xVREVfUEFUSD0ke0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfSU5DTFVERV9QQVRIMj0ke0pBVkFfSE9NRX0vaW5jbHVkZS9saW51eCAtREpBVkFfQVdUX0lOQ0xVREVfUEFUSD0ke0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfQVdUX0xJQlJBUlk9JHtKQVZBX0hPTUV9L2xpYi9hbWQ2NC9saWJqYXd0LnNvIC1ESkFWQV9KVk1fTElCUkFSWT0ke0pBVkFfSE9NRX0vbGliL2FtZDY0L3NlcnZlci9saWJqdm0uc28sLGFudC1uYXRpdmUgZmFzdGphci1uYXRpdmUgb3Blbmpkay04LW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi1EV0lUSF9KUEVHPU9OLC1EV0lUSF9KUEVHPU9GRixqcGVnLCIKK1BBQ0tBR0VDT05GSUdbbGliYXZdID0gIi1EV0lUSF9GRk1QRUc9T04sLURXSVRIX0ZGTVBFRz1PRkYsbGliYXYsIgorUEFDS0FHRUNPTkZJR1tsaWJ2NGxdID0gIi1EV0lUSF9MSUJWNEw9T04sLURXSVRIX0xJQlY0TD1PRkYsdjRsLXV0aWxzLCIKK1BBQ0tBR0VDT05GSUdbb3BlbmNsXSA9ICItRFdJVEhfT1BFTkNMPU9OLC1EV0lUSF9PUEVOQ0w9T0ZGLG9wZW5jbC1oZWFkZXJzIHZpcnR1YWwvb3BlbmNsLWljZCwiCitQQUNLQUdFQ09ORklHW29yYWNsZS1qYXZhXSA9ICItREpBVkFfSU5DTFVERV9QQVRIPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfSU5DTFVERV9QQVRIMj0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUvbGludXggLURKQVZBX0FXVF9JTkNMVURFX1BBVEg9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9BV1RfTElCUkFSWT0ke09SQUNMRV9KQVZBX0hPTUV9L2xpYi9hbWQ2NC9saWJqYXd0LnNvIC1ESkFWQV9KVk1fTElCUkFSWT0ke09SQUNMRV9KQVZBX0hPTUV9L2xpYi9hbWQ2NC9zZXJ2ZXIvbGlianZtLnNvLCxhbnQtbmF0aXZlIG9yYWNsZS1qc2UtamRrIG9yYWNsZS1qc2UtamRrLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLURXSVRIX1BORz1PTiwtRFdJVEhfUE5HPU9GRixsaWJwbmcsIgorUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICItRFBZVEhPTjJfTlVNUFlfSU5DTFVERV9ESVJTOlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZSwscHl0aG9uLW51bXB5LCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLURQWVRIT04zX05VTVBZX0lOQ0xVREVfRElSUzpQQVRIPSR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUsLHB5dGhvbjMtbnVtcHksIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVzXSA9ICItREJVSUxEX0VYQU1QTEVTPU9OIC1ESU5TVEFMTF9QWVRIT05fRVhBTVBMRVM9T04sLURCVUlMRF9FWEFNUExFUz1PRkYsLCIKK1BBQ0tBR0VDT05GSUdbdGJiXSA9ICItRFdJVEhfVEJCPU9OLC1EV0lUSF9UQkI9T0ZGLHRiYiwiCitQQUNLQUdFQ09ORklHW3RleHRdID0gIi1EQlVJTERfb3BlbmN2X3RleHQ9T04sLURCVUlMRF9vcGVuY3ZfdGV4dD1PRkYsdGVzc2VyYWN0LCIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLURXSVRIX1RJRkY9T04sLURXSVRIX1RJRkY9T0ZGLHRpZmYsIgorUEFDS0FHRUNPTkZJR1t2NGxdID0gIi1EV0lUSF9WNEw9T04sLURXSVRIX1Y0TD1PRkYsdjRsLXV0aWxzLCIKKworaW5oZXJpdCBwa2djb25maWcgY21ha2UKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ2Rpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdkaXN0dXRpbHMtYmFzZScsICcnLCBkKX0KKworZXhwb3J0IFBZVEhPTl9DU1BFQz0iLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgorZXhwb3J0IFBZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMycsICdweXRob24nLCBkKX0iCitleHBvcnQgT1JBQ0xFX0pBVkFfSE9NRT0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9iaW4vamF2YSIKK2V4cG9ydCBKQVZBX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvbGliL2p2bS9vcGVuamRrLTgtbmF0aXZlIgorZXhwb3J0IEFOVF9ESVI9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3Ivc2hhcmUvYW50LyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIi1JJHtTfS9pbmNsdWRlICIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NhbXBsZXMnLCAnJHtQTn0tc2FtcGxlcycsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ29yYWNsZS1qYXZhJywgJyR7UE59LWphdmEnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqYXZhJywgJyR7UE59LWphdmEnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbi0ke0JQTn0nLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtJHtCUE59JywgJycsIGQpfSBcCisgICAgJHtQTn0tYXBwcyIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGN2X2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JywgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwubGEkJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLmEkJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09wZW5DViAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKworICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICBtZXRhcGtnID0gIHBuICsgJy1kZXYnCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgYmxhY2tsaXN0ID0gWyBtZXRhcGtnIF0KKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gWyBdCisgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06CisgICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIHBrZy5lbmRzd2l0aCgnLWRldicpOgorICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisKKyAgICBtZXRhcGtnID0gIHBuCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgYmxhY2tsaXN0ID0gWyBtZXRhcGtnLCAibGlib3BlbmN2LXRzIiBdCisgICAgbWV0YXBrZ19yZGVwZW5kcyA9IFsgXQorICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgorICAgICAgICBpZiBub3QgcGtnIGluIGJsYWNrbGlzdCBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGV2JykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kYmcnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRvYycpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctbG9jYWxlJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1zdGF0aWNkZXYnKToKKyAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorfQorCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3BlbmN2LS4qIgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vT3BlbkNWL2phdmEvLmRlYnVnLyogJHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vLmRlYnVnLyoiCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vcGtnY29uZmlnICR7ZGF0YWRpcn0vT3BlbkNWLyouY21ha2UiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7ZGF0YWRpcn0vT3BlbkNWLzNyZHBhcnR5L2xpYi8qLmEiCitGSUxFU18ke1BOfS1hcHBzID0gIiR7YmluZGlyfS8qICR7ZGF0YWRpcn0vT3BlbkNWIgorRklMRVNfJHtQTn0tamF2YSA9ICIke2RhdGFkaXJ9L09wZW5DVi9qYXZhIgorRklMRVNfJHtQTn0tc2FtcGxlcyA9ICIke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzLyIKKworSU5TQU5FX1NLSVBfJHtQTn0tamF2YSA9ICJsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZGlyIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitTVU1NQVJZX3B5dGhvbi1vcGVuY3YgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIG9wZW5jdiIKK0ZJTEVTX3B5dGhvbi1vcGVuY3YgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK1JERVBFTkRTX3B5dGhvbi1vcGVuY3YgPSAicHl0aG9uLWNvcmUgcHl0aG9uLW51bXB5IgorCitTVU1NQVJZX3B5dGhvbjMtb3BlbmN2ID0gIlB5dGhvbiBiaW5kaW5ncyB0byBvcGVuY3YiCitGSUxFU19weXRob24zLW9wZW5jdiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorUkRFUEVORFNfcHl0aG9uMy1vcGVuY3YgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtbnVtcHkiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGNwICR7U30vaW5jbHVkZS9vcGVuY3YvKi5oICR7RH0ke2luY2x1ZGVkaXJ9L29wZW5jdi8KKyAgICBzZWQgLWkgJy9ibG9idHJhY2svZCcgJHtEfSR7aW5jbHVkZWRpcn0vb3BlbmN2L2N2YXV4LmgKKworICAgICMgTW92ZSBQeXRob24gZmlsZXMgaW50byBjb3JyZWN0IGxpYnJhcnkgZm9sZGVyIChmb3IgbXVsdGlsaWIgYnVpbGQpCisgICAgaWYgWyAiJGxpYmRpciIgIT0gIi91c3IvbGliIiAtYSAtZCAke0R9L3Vzci9saWIgXTsgdGhlbgorICAgICAgICBtdiAke0R9L3Vzci9saWIvKiAke0R9LyR7bGliZGlyfS8KKyAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYgorICAgIGZpCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygiUEFDS0FHRUNPTkZJRyIsICJzYW1wbGVzIiwgInRydWUiLCAiZmFsc2UiLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vCisgICAgICAgIGNwIC1mIGJpbi8qLXR1dG9yaWFsLSogYmluLyotZXhhbXBsZS0qICR7RH0ke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzL2Jpbi8KKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MWM1MzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUFkZCBMREZMQUdTIHZhcmlhYmxlIHRvIE1ha2VmaWxlLmFtLCBtYWtlIHN1cmUgdGhlIGV4dHJhIGxpbmtlciBmbGFncyBjYW4gYmUgcGFzc2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3dpZy9wZXJsL01ha2VmaWxlLmFtIGIvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi1pbmRleCAyZjllZTRjLi4zYTE4ODkyIDEwMDY0NAotLS0tIGEvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi0rKysgYi9zd2lnL3BlcmwvTWFrZWZpbGUuYW0KLUBAIC0yMCw3ICsyMCw3IEBAIE9wZW5JUE1JX1NSQyA9IE9wZW5JUE1JX3BlcmwuYwotIE9wZW5JUE1JX09CSiA9IE9wZW5JUE1JX3dyYXAubG8gT3BlbklQTUlfcGVybC5sbwotIAotIE9wZW5JUE1JLnNvOiAkKE9wZW5JUE1JX09CSikKLS0JJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAtc2hhcmVkIC1tb2R1bGUgLWF2b2lkLXZlcnNpb24gLW8gJChAOi5zbz0ubGEpICReICQoT1BFTklQTUlfU1dJR19MSUJTKSAkKFBFUkxfUE9TSVhfTElCKSAtcnBhdGggJChQRVJMX0lOU1RBTExfRElSKS9hdXRvL09wZW5JUE1JCi0rCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLXNoYXJlZCAtbW9kdWxlIC1hdm9pZC12ZXJzaW9uICQoTERGTEFHUykgLW8gJChAOi5zbz0ubGEpICReICQoT1BFTklQTUlfU1dJR19MSUJTKSAkKFBFUkxfUE9TSVhfTElCKSAtcnBhdGggJChQRVJMX0lOU1RBTExfRElSKS9hdXRvL09wZW5JUE1JCi0gCXJtIC1mIE9wZW5JUE1JLnNvCi0gCW12IC5saWJzL09wZW5JUE1JLnNvIC4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktZG9uLXQtcm0tLmxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWRvbi10LXJtLS5saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTNjNjYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktZG9uLXQtcm0tLmxpYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGJiZDUxY2YwMTBjODAzMjIwMzRmNzA5NGUyYzZhNjU2YWExZjE3YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTMgRmViIDIwMTUgMDY6NTU6MzMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gb3BlbmlwbWk6IGRvbid0IHJtIC5saWJzCi0KLURvbid0IHJlbW92ZSAubGlicyBhZnRlciBPcGVuSVBNSS5zbyBnZW5lcmF0ZWQsIHRoaXMgbWF5IGNhdXNlCi1kdW1teXN0dWZmLnNvIGZhaWxzIHRvIGxpbmsgZnJvbSB0aGUgc2Vjb25kIGJ1aWxkIHdpdGggZXJyb3I6Ci0KLSogZXJyb3I6IC5saWJzL2R1bW15c3R1ZmYubzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzd2lnL3BlcmwvTWFrZWZpbGUuYW0gfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3dpZy9wZXJsL01ha2VmaWxlLmFtIGIvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi1pbmRleCAxMmEyODJjLi4yZjllZTRjIDEwMDY0NAotLS0tIGEvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi0rKysgYi9zd2lnL3BlcmwvTWFrZWZpbGUuYW0KLUBAIC0yMyw3ICsyMyw2IEBAIE9wZW5JUE1JLnNvOiAkKE9wZW5JUE1JX09CSikKLSAJJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAtc2hhcmVkIC1tb2R1bGUgLWF2b2lkLXZlcnNpb24gLW8gJChAOi5zbz0ubGEpICReICQoT1BFTklQTUlfU1dJR19MSUJTKSAkKFBFUkxfUE9TSVhfTElCKSAtcnBhdGggJChQRVJMX0lOU1RBTExfRElSKS9hdXRvL09wZW5JUE1JCi0gCXJtIC1mIE9wZW5JUE1JLnNvCi0gCW12IC5saWJzL09wZW5JUE1JLnNvIC4KLS0Jcm0gLXJmIC5saWJzCi0gCi0gZHVtbXlzdHVmZi5sbzogZHVtbXlzdHVmZi5jCi0gCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAtYyAkPAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYxNjIzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSBhYTBkYzA3ODNhNmZmNWZiNTZjOTE0YjY0MDgzNjIyM2UzYzE5MmJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjkgRGVjIDIwMTQgMTg6MTY6MDQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGhvc3QgcGF0aCBmcm9tIGxhX0xERkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgY3Jvc3MgY29tcGlsZSBzcGVjaWZpYyBdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjbWRsYW5nL01ha2VmaWxlLmFtIHwgICAgMiArLQotIGdsaWIvTWFrZWZpbGUuYW0gICAgfCAgICA0ICsrLS0KLSB0Y2wvTWFrZWZpbGUuYW0gICAgIHwgICAgMiArLQotIHVuaXgvTWFrZWZpbGUuYW0gICAgfCAgICA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NtZGxhbmcvTWFrZWZpbGUuYW0gYi9jbWRsYW5nL01ha2VmaWxlLmFtCi1pbmRleCAwMGMzZDJiLi4wZmE4NWQ3IDEwMDY0NAotLS0tIGEvY21kbGFuZy9NYWtlZmlsZS5hbQotKysrIGIvY21kbGFuZy9NYWtlZmlsZS5hbQotQEAgLTE2LDcgKzE2LDcgQEAgbGliT3BlbklQTUljbWRsYW5nX2xhX0xJQkFERCA9IC1sbSBcCi0gCSQodG9wX2J1aWxkZGlyKS91dGlscy9saWJPcGVuSVBNSXV0aWxzLmxhIFwKLSAJJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJPcGVuSVBNSS5sYQotIGxpYk9wZW5JUE1JY21kbGFuZ19sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCi0tCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWNtZGxhbmcubWFwIC1MJChsaWJkaXIpCi0rCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWNtZGxhbmcubWFwCi0gCi0gYmluX1BST0dSQU1TID0gb3BlbmlwbWlzaAotIAotZGlmZiAtLWdpdCBhL2dsaWIvTWFrZWZpbGUuYW0gYi9nbGliL01ha2VmaWxlLmFtCi1pbmRleCA2NzFjYWUyLi5lZmY1NWYzIDEwMDY0NAotLS0tIGEvZ2xpYi9NYWtlZmlsZS5hbQotKysrIGIvZ2xpYi9NYWtlZmlsZS5hbQotQEAgLTExLDE0ICsxMSwxNCBAQCBsaWJPcGVuSVBNSWdsaWJfbGFfU09VUkNFUyA9IGdsaWJfb3NfaG5kLmMKLSBsaWJPcGVuSVBNSWdsaWJfbGFfQ0ZMQUdTID0gJChHTElCX0NGTEFHUykgJChBTV9DRkxBR1MpCi0gbGliT3BlbklQTUlnbGliX2xhX0xJQkFERCA9ICQoR0RCTV9MSUIpCi0gbGliT3BlbklQTUlnbGliX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKLS0JLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JZ2xpYi5tYXAgJChHTElCX0xJQlMpIC1MJChsaWJkaXIpIFwKLSsJLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JZ2xpYi5tYXAgJChHTElCX0xJQlMpIFwKLSAJLXJwYXRoICQobGliZGlyKQotIAotIGxpYk9wZW5JUE1JZ2xpYjEyX2xhX1NPVVJDRVMgPSBnbGliX29zX2huZC5jCi0gbGliT3BlbklQTUlnbGliMTJfbGFfQ0ZMQUdTID0gJChHTElCMTJfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLSBsaWJPcGVuSVBNSWdsaWIxMl9sYV9MSUJBREQgPSAkKEdEQk1fTElCKQotIGxpYk9wZW5JUE1JZ2xpYjEyX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKLS0JLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JZ2xpYjEyLm1hcCAkKEdMSUIxMl9MSUJTKSAtTCQobGliZGlyKSBcCi0rCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWdsaWIxMi5tYXAgJChHTElCMTJfTElCUykgXAotIAktcnBhdGggJChsaWJkaXIpCi0gCi0gQ0xFQU5GSUxFUyA9IGxpYk9wZW5JUE1JZ2xpYi5tYXAgbGliT3BlbklQTUlnbGliMTIubWFwCi1kaWZmIC0tZ2l0IGEvdGNsL01ha2VmaWxlLmFtIGIvdGNsL01ha2VmaWxlLmFtCi1pbmRleCBiNzAyODE5Li4yODI2MTljIDEwMDY0NAotLS0tIGEvdGNsL01ha2VmaWxlLmFtCi0rKysgYi90Y2wvTWFrZWZpbGUuYW0KLUBAIC0xMSw3ICsxMSw3IEBAIGxpYk9wZW5JUE1JdGNsX2xhX1NPVVJDRVMgPSB0Y2xfb3NfaG5kLmMKLSBsaWJPcGVuSVBNSXRjbF9sYV9DRkxBR1MgPSAkKFRDTF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotIGxpYk9wZW5JUE1JdGNsX2xhX0xJQkFERCA9ICQoR0RCTV9MSUIpCi0gbGliT3BlbklQTUl0Y2xfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikgXAotLQktV2wsLU1hcCAtV2wsbGliT3BlbklQTUl0Y2wubWFwICQoVENMX0xJQlMpIC1MJChsaWJkaXIpIFwKLSsJLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JdGNsLm1hcCAkKFRDTF9MSUJTKSBcCi0gCS1ycGF0aCAkKGxpYmRpcikKLSAKLSBub2luc3RfUFJPR1JBTVMgPSB0ZXN0X2hhbmRsZXJzCi1kaWZmIC0tZ2l0IGEvdW5peC9NYWtlZmlsZS5hbSBiL3VuaXgvTWFrZWZpbGUuYW0KLWluZGV4IGE3OTIxNDcuLmExMDhiYzYgMTAwNjQ0Ci0tLS0gYS91bml4L01ha2VmaWxlLmFtCi0rKysgYi91bml4L01ha2VmaWxlLmFtCi1AQCAtMTEsMTMgKzExLDEzIEBAIGxpYk9wZW5JUE1JcHRocmVhZF9sYV9TT1VSQ0VTID0gcG9zaXhfdGhyZWFkX29zX2huZC5jIHNlbGVjdG9yLmMKLSBsaWJPcGVuSVBNSXB0aHJlYWRfbGFfTElCQUREID0gLWxwdGhyZWFkICQoR0RCTV9MSUIpIFwKLSAJJCh0b3BfYnVpbGRkaXIpL3V0aWxzL2xpYk9wZW5JUE1JdXRpbHMubGEKLSBsaWJPcGVuSVBNSXB0aHJlYWRfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikgXAotLQktV2wsLU1hcCAtV2wsbGliT3BlbklQTUlwdGhyZWFkLm1hcCAtTCQobGliZGlyKQotKwktV2wsLU1hcCAtV2wsbGliT3BlbklQTUlwdGhyZWFkLm1hcAotIAotIGxpYk9wZW5JUE1JcG9zaXhfbGFfU09VUkNFUyA9IHBvc2l4X29zX2huZC5jIHNlbGVjdG9yLmMKLSBsaWJPcGVuSVBNSXBvc2l4X2xhX0xJQkFERCA9ICQodG9wX2J1aWxkZGlyKS91dGlscy9saWJPcGVuSVBNSXV0aWxzLmxhIFwKLSAJJChHREJNX0xJQikKLSBsaWJPcGVuSVBNSXBvc2l4X2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKLS0JLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JcG9zaXgubWFwIC1MJChsaWJkaXIpCi0rCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSXBvc2l4Lm1hcAotIAotIG5vaW5zdF9IRUFERVJTID0gaGVhcC5oCi0gCi0tLSAKLTEuNy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNGIwZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJJUE1JIChJbnRlbGxpZ2VudCBQbGF0Zm9ybSBNYW5hZ2VtZW50IEludGVyZmFjZSkgbGlicmFyeSBhbmQgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJPcGVuSVBNSSBpcyBhbiBlZmZvcnQgdG8gY3JlYXRlIGEgZnVsbC1mdW5jdGlvbiBJUE1JIHN5c3RlbSwgXAotdG8gYWxsb3cgZnVsbCBhY2Nlc3MgdG8gYWxsIElQTUkgaW5mb3JtYXRpb24gb24gYSBzZXJ2ZXIgXAotYW5kIHRvIGFic3RyYWN0IGl0IHRvIGEgbGV2ZWwgdGhhdCB3aWxsIG1ha2UgaXQgZWFzeSB0byB1c2UiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9vcGVuaXBtaS5zb3VyY2Vmb3JnZS5uZXQiCi0KLURFUEVORFMgPSAiIFwKLSAgICBnbGliLTIuMCBcCi0gICAgbmN1cnNlcyBcCi0gICAgbmV0LXNubXAgXAotICAgIG9wZW5zc2wgXAotICAgIHBvcHQgXAotICAgIHB5dGhvbiBcCi0gICAgc3dpZy1uYXRpdmUgXAotICAgICIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xICYgQlNEIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTRiMzE4ZDQxNjBlYjY5YzhlZTUzNDUyZmViMWI0Y2RmIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9vcGVuaXBtaS9PcGVuSVBNSS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1kb24tdC1ybS0ubGlicy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktaGVscGVyIFwKLSAgICAgICAgICAgZmlsZTovL2lwbWkuc2VydmljZSBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlhNGUxZjZiYjA3MzM3OWM0OTQ4MzkyMDFlYTEwYWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5ODg5MDAwNDNjMzVmY2ZhOWIyYmYyNzVkNjU5MzkwNGY2NDI5MjIxYmVmYjc3MGJhNmVjYjU1MDIxMDhlNTUiCi0KLVMgPSAiJHtXT1JLRElSfS9PcGVuSVBNSS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcGVybD0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwnIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24nIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uaW5zdGFsbD0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZ2xpYnZlcj0yLjAgLS13aXRoLWdsaWIxMj1ubyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdkYm0iCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gImFjX2N2X2hlYWRlcl9nZGJtX2g9eWVzLGFjX2N2X2hlYWRlcl9nZGJtX2g9bm8sZ2RibSwiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wZXJsICR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tcGVybCA9ICIgXAotICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovT3BlbklQTUkucG0gXAotICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9PcGVuSVBNSS9PcGVuSVBNSS5zbyBcCi0gICAgIgotCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvLmRlYnVnIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcgXAotICAgICIKLQotZG9fY29uZmlndXJlICgpIHsKLQotICAgICMgTGV0J3MgcGVyZm9ybSByZWd1bGFyIGNvbmZpZ3VyYXRpb24gZmlyc3QgdGhlbiBoYW5kbGUgcGVybCBpc3N1ZXMuCi0gICAgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQotCi0gICAgcGVybF92ZXI9YHBlcmwgLVY6dmVyc2lvbiB8IGN1dCAtZFwnIC1mIDJgCi0gICAgCi0gICAgIyBGb3JjZSBvcGVuaXBtaSBwZXJsIGJpbmRpbmdzIHRvIGJlIGNvbXBpbGVkIHVzaW5nIHBlcmwtbmF0aXZlIGluc3RlYWQgb2YKLSAgICAjIHRoZSBob3N0J3MgcGVybC4gU2V0IHRoZSBwcm9wZXIgaW5zdGFsbCBkaXJlY3RvcnkgZm9yIHRoZSByZXN1bHRpbmcKLSAgICAjIG9wZW5pcG1pLnBtIGFuZCBvcGVuaXBtaS5zbwotICAgIGZvciBpIGluICR7U30vc3dpZy9NYWtlZmlsZSAke1N9L3N3aWcvcGVybC9NYWtlZmlsZTsgZG8KLSAgICAgICAgZWNobyAiU0FMOiBpID0gJGkiCi0gICAgICAgIGVjaG8gIlNBTDogU1RBR0lOR19JTkNESVJfTkFUSVZFID0gJFNUQUdJTkdfSU5DRElSX05BVElWRSIKLSAgICAgICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgotICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9DRkxBR1MvczotSS91c3IvbG9jYWwvaW5jbHVkZTotSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfTpnIiAkaQotICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9JTlNUQUxMX0RJUi9zOl5QRVJMX0lOU1RBTExfRElSID0gLio6UEVSTF9JTlNUQUxMX0RJUiA9ICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyRwZXJsX3ZlcjpnIiAkaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGVjaG8gIlNBTDogRCA9ICREIgotICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2lwbWkuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvaXBtaQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2lwbWkuc3lzY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvaXBtaQotICAgICMgU0FMOiBtdjogY2Fubm90IHN0YXQgYC9sb2NhbGRpc2svbG9hZGJ1aWxkL3NsaXR0bGUxL3dvcmtzcGFjZS9jZ3RzX3Rlc3RfYnVpbGQvYml0YmFrZV9idWlsZC90bXAvd29yay94ODZfNjQtd3JzLWxpbnV4L29wZW5pcG1pLTIuMC4xOS1yNC9pbWFnZS91c3IvbGliNjQvcGVybDUnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0gICAgIyBTQUw6IHJlYWwgcGF0aCB0byBwZXJsIGlzIC9sb2NhbGRpc2svbG9hZGJ1aWxkL3NsaXR0bGUxL3dvcmtzcGFjZS9jZ3RzX3Rlc3RfYnVpbGQvYml0YmFrZV9idWlsZC90bXAvd29yay94ODZfNjQtd3JzLWxpbnV4L3BlcmwtNS4xNC4yLXI4LjMvcGFja2FnZS91c3IvbGliNjQvcGVybDUgYW5kIGl0IGlzIGEgc3ltbGluayB0byBwZXJsIHNvIG5vIG5lZWQgdG8gbXYuCi0gICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1IF0KLSAgICB0aGVuCi0gICAgICAgIG12ICR7RH0ke2xpYmRpcn0vcGVybDUgJHtEfSR7bGliZGlyfS9wZXJsCi0gICAgZmkKLSAKLSAgICAjIGZvciBzeXN0ZW1kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY2NCAke1dPUktESVJ9L2lwbWkuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAicyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnIiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9pcG1pLnNlcnZpY2UKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vb3BlbmlwbWktaGVscGVyICR7RH0ke2xpYmV4ZWNkaXJ9Ci19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJpcG1pIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgLiBzdG9wIDcwIDAgMSAyIDMgNCA1IDYgLiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImlwbWkuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YzIzM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotIyBPcGVuTERBUCwgYSBsaWNlbnNlIGZyZWUgKHNlZSBodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwpCi0jCi1TVU1NQVJZID0gIk9wZW5MREFQIERpcmVjdG9yeSBTZXJ2aWNlIgotREVTQ1JJUFRJT04gPSAiT3BlbkxEQVAgU29mdHdhcmUgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIExpZ2h0d2VpZ2h0IERpcmVjdG9yeSBBY2Nlc3MgUHJvdG9jb2wuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5PcGVuTERBUC5vcmcvbGljZW5zZS5odG1sIgotIyBUaGUgT3BlbkxEQVAgUHVibGljIExpY2Vuc2UgLSBzZWUgdGhlIEhPTUVQQUdFIC0gZGVmaW5lcwotIyB0aGUgbGljZW5zZS4gIHd3dy5vcGVubGRhcC5vcmcgY2xhaW1zIHRoaXMgaXMgT3BlbiBTb3VyY2UKLSMgKHNlZSBodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZyksIHRoZSBsaWNlbnNlIGFwcGVhcnMgdG8gYmUKLSMgYmFzaWNhbGx5IEJTRC4gIG9wZW5zb3VyY2Uub3JnIGRvZXMgbm90IHJlY29yZCB0aGlzIGxpY2Vuc2UKLSMgYXQgcHJlc2VudCAoc28gaXQgaXMgYXBwYXJlbnRseSBub3QgT1NJIGNlcnRpZmllZCkuCi1MSUNFTlNFID0gIk9wZW5MREFQIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1jOTMzZmJhNmQ4OWZkYTg5ZjU4ZGYxZTA4NmUzZjJlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0xNTNkMDdlZjA1MmM0YTM3YThmYWMyM2JjNjAzMTk3MiBcCi0iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxEQVBfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVubGRhcC5vcmcvcHViL09wZW5MREFQL29wZW5sZGFwLXJlbGVhc2UvJHtCUH0udGd6IFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBcCi0gICAgZmlsZTovL2tpbGwtaWN1LnBhdGNoIFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtMi40LjI4LWdudXRscy1nY3J5cHQucGF0Y2ggXAotICAgIGZpbGU6Ly91c2UtdXJhbmRvbS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXRzY3JpcHQgXAotICAgIGZpbGU6Ly9zbGFwZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vdGhyZWFkX3N0dWIucGF0Y2ggXAotICAgIGZpbGU6Ly9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY5M2FjMjZkZTg2MjMxZjhkY2FlMmI0ZTlkNzY4ZTUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3ZGU2YmYzYzY3MDA5Yzk1NTI1ZGRlM2EwMjEyY2MxMTBkMGE3MGI5MmFmMmFmOGUzZWU4MDBlODFiODg0MDAiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBncm9mZi1uYXRpdmUiCi0KLSMgVGhlIG9yaWdpbmFsIHRvcC5tayB1c2VkIElOU1RBTEwsIG5vdCBJTlNUQUxMX1NUUklQX1BST0dSQU0gd2hlbgotIyBpbnN0YWxsaW5nIC5zbyBhbmQgZXhlY3V0YWJsZXMsIHRoaXMgZmFpbHMgaW4gY3Jvc3MgY29tcGlsYXRpb24KLSMgZW52aXJvbm1lbnRzCi1TUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1zdHJpcC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBDViBTRVRUSU5HUwotIyBSZXF1aXJlZCB0byB3b3JrIHJvdW5kIEFDX0ZVTkNfTUVNQ01QIHdoaWNoIGdldHMgdGhlIHdyb25nIGFuc3dlcgotIyB3aGVuIGNyb3NzIGNvbXBpbGluZyAoc2hvdWxkIGJlIGluIHNpdGU/KQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllcyIKLQotIyBDT05GSUcgREVGSU5JVElPTlMKLSMgVGhlIGZvbGxvd2luZyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgYQotIyBjcm9zcyBjb21waWxlIGF1dG9tYWdpY2FsbHkuICBTZWxlY3Qgc2hvdWxkIHlpZWxkIGZpbmUgb24gYWxsIE9FCi0jIHN5c3RlbXMuLi4KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXlpZWxkaW5nLXNlbGVjdD15ZXMiCi0jIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5pY2UuLi4KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZHluYW1pYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBtb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICBtZGIgbGRhcCBtZXRhIG1vbml0b3IgbnVsbCBwYXNzd2Qgc2hlbGwgcHJveHljYWNoZSBkbnNzcnYgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotIy0td2l0aC10bHMgICAgICAgICAgICAgIHdpdGggVExTL1NTTCBzdXBwb3J0IGF1dG98b3BlbnNzbHxnbnV0bHMgW2F1dG9dCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXRscz1nbnV0bHMsLGdudXRscyBsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC10bHM9b3BlbnNzbCwsb3BlbnNzbCIKLQotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtY3lydXMtc2FzbCwtLXdpdGhvdXQtY3lydXMtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1ttb2R1bGVzXSA9ICJsdF9jdl9kbG9wZW5fc2VsZj15ZXMgLS1lbmFibGUtbW9kdWxlcywtLWRpc2FibGUtbW9kdWxlcyxsaWJ0b29sIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotCi0jIFNMQVBEIG9wdGlvbnMKLSMKLSMgVU5JWCBjcnlwdCgzKSBwYXNzd2Qgc3VwcG9ydDoKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtY3J5cHQiCi0KLSMgU0xBUEQgQkFDS0VORAotIwotIyBUaGUgYmFja2VuZCBtdXN0IGJlIHNldCBieSB0aGUgY29uZmlndXJhdGlvbi4gIFRoaXMgY29udHJvbHMgdGhlCi0jIHJlcXVpcmVkIGRhdGFiYXNlLgotIwotIyBCYWNrZW5kcz0iYmRiIGRuc3NydiBoZGIgbGRhcCBtZGIgbWV0YSBtb25pdG9yIG5kYiBudWxsIHBhc3N3ZCBwZXJsIHJlbGF5IHNoZWxsIHNvY2sgc3FsIgotIwotIyBOb3RlIHRoYXQgbXVsdGlwbGUgYmFja2VuZHMgY2FuIGJlIGJ1aWx0LiAgVGhlIGxkYm0gYmFja2VuZCByZXF1aXJlcyBhCi0jIGJ1aWxkLXRpbWUgY2hvaWNlIG9mIGRhdGFiYXNlIEFQSS4gIFRoZSBiZGIgYmFja2VuZCBmb3JjZXMgdGhpcyB0byBiZQotIyBEQjQuICBUbyB1c2UgdGhlIGdkYm0gKG9yIG90aGVyKSBBUEkgdGhlIEJlcmtlbHkgZGF0YWJhc2UgbW9kdWxlIG11c3QKLSMgYmUgcmVtb3ZlZCBmcm9tIHRoZSBidWlsZC4KLW1kID0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAiCi0jCi0jLS1lbmFibGUtYmRiICAgICAgICAgIGVuYWJsZSBCZXJrZWxleSBEQiBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCi0jIFRoZSBCZXJrZWx5IERCIGlzIHRoZSBzdGFuZGFyZCBjaG9pY2UuICBUaGlzIHZlcnNpb24gb2YgT3BlbkxEQVAgcmVxdWlyZXMKLSMgdGhlIHZlcnNpb24gNCBpbXBsZW1lbnRhdGlvbiBvciBiZXR0ZXIuCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLS1lbmFibGUtYmRiPXllcywtLWVuYWJsZS1iZGI9bm8sZGIiCi0KLSMtLWVuYWJsZS1kbnNzcnYgICAgICAgZW5hYmxlIGRuc3NydiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbZG5zc3J2XSA9ICItLWVuYWJsZS1kbnNzcnY9bW9kLC0tZW5hYmxlLWRuc3Nydj1ubyIKLQotIy0tZW5hYmxlLWhkYiAgICAgICAgICBlbmFibGUgSGllcmFyY2hpY2FsIERCIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1toZGJdID0gIi0tZW5hYmxlLWhkYj15ZXMsLS1lbmFibGUtaGRiPW5vLGRiIgotCi0jLS1lbmFibGUtbGRhcCAgICAgICAgIGVuYWJsZSBsZGFwIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwPW1vZCwtLWVuYWJsZS1sZGFwPW5vLCIKLQotIy0tZW5hYmxlLW1kYiAgICAgICAgICBlbmFibGUgbWRiIGRhdGFiYXNlIGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQotUEFDS0FHRUNPTkZJR1ttZGJdID0gIi0tZW5hYmxlLW1kYj15ZXMsLS1lbmFibGUtbWRiPW5vLCIKLQotIy0tZW5hYmxlLW1ldGEgICAgICAgICBlbmFibGUgbWV0YWRpcmVjdG9yeSBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbbWV0YV0gPSAiLS1lbmFibGUtbWV0YT1tb2QsLS1lbmFibGUtbWV0YT1ubywiCi0KLSMtLWVuYWJsZS1tb25pdG9yICAgICAgZW5hYmxlIG1vbml0b3IgYmFja2VuZCBub3x5ZXN8bW9kIHllcwotUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yPW1vZCwtLWVuYWJsZS1tb25pdG9yPW5vLCIKLQotIy0tZW5hYmxlLW5kYiAgICAgICAgICBlbmFibGUgTXlTUUwgTkRCIENsdXN0ZXIgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbbmRiXSA9ICItLWVuYWJsZS1uZGI9bW9kLC0tZW5hYmxlLW5kYj1ubywiCi0KLSMtLWVuYWJsZS1udWxsICAgICAgICAgZW5hYmxlIG51bGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW251bGxdID0gIi0tZW5hYmxlLW51bGw9bW9kLC0tZW5hYmxlLW51bGw9bm8sIgotCi0jLS1lbmFibGUtcGFzc3dkICAgICAgIGVuYWJsZSBwYXNzd2QgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW3Bhc3N3ZF0gPSAiLS1lbmFibGUtcGFzc3dkPW1vZCwtLWVuYWJsZS1wYXNzd2Q9bm8sIgotCi0jLS1lbmFibGUtcGVybCAgICAgICAgIGVuYWJsZSBwZXJsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyAgVGhpcyByZXF1aXJlcyBhIGxvYWRhYmxlIHBlcmwgZHluYW1pYyBsaWJyYXJ5LCBpZiBlbmFibGVkIHdpdGhvdXQKLSMgIGRvaW5nIHNvbWV0aGluZyBhcHByb3ByaWF0ZSAoYnVpbGRpbmcgcGVybD8pIHRoZSBidWlsZCB3aWxsIHBpY2sKLSMgIHVwIHRoZSBidWlsZCBtYWNoaW5lIHBlcmwgLSBub3QgZ29vZCAoaW5oZXJpdCBwZXJsbmF0aXZlPykKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybD1tb2QsLS1lbmFibGUtcGVybD1ubyxwZXJsIgotCi0jLS1lbmFibGUtcmVsYXkgICAgICAgIGVuYWJsZSByZWxheSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KLVBBQ0tBR0VDT05GSUdbcmVsYXldID0gIi0tZW5hYmxlLXJlbGF5PW1vZCwtLWVuYWJsZS1yZWxheT1ubywiCi0KLSMtLWVuYWJsZS1zaGVsbCAgICAgICAgZW5hYmxlIHNoZWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyBjb25maWd1cmU6IFdBUk5JTkc6IFVzZSBvZiAtLXdpdGhvdXQtdGhyZWFkcyBpcyByZWNvbW1lbmRlZCB3aXRoIGJhY2stc2hlbGwKLVBBQ0tBR0VDT05GSUdbc2hlbGxdID0gIi0tZW5hYmxlLXNoZWxsPW1vZCAtLXdpdGhvdXQtdGhyZWFkcywtLWVuYWJsZS1zaGVsbD1ubywiCi0KLSMtLWVuYWJsZS1zb2NrICAgICAgICAgZW5hYmxlIHNvY2sgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbc29ja10gPSAiLS1lbmFibGUtc29jaz1tb2QsLS1lbmFibGUtc29jaz1ubywiCi0KLSMtLWVuYWJsZS1zcWwgICAgICAgICAgZW5hYmxlIHNxbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgc3FsIHJlcXVpcmVzIHNvbWUgc3FsIGJhY2tlbmQgd2hpY2ggcHJvdmlkZXMgc3FsLmgsIHNxbGl0ZSogcHJvdmlkZXMKLSMgc3FsaXRlLmggKHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIGJ1dCBoYXNuJ3QgYmVlbiB0cmllZC4pCi1QQUNLQUdFQ09ORklHW3NxbF0gPSAiLS1lbmFibGUtc3FsPW1vZCwtLWVuYWJsZS1zcWw9bm8sc3FsaXRlMyIKLQotIy0tZW5hYmxlLWR5bmdyb3VwICAgICBEeW5hbWljIEdyb3VwIG92ZXJsYXkgbm98eWVzfG1vZCBubwotIyAgVGhpcyBpcyBhIGRlbW8sIFByb3h5IENhY2hlIGRlZmluZXMgaW5pdF9tb2R1bGUgd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlCi0jICBzYW1lIHN5bWJvbCBpbiBkeW5ncm91cAotUEFDS0FHRUNPTkZJR1tkeW5ncm91cF0gPSAiLS1lbmFibGUtZHluZ3JvdXA9bW9kLC0tZW5hYmxlLWR5bmdyb3VwPW5vLCIKLQotIy0tZW5hYmxlLXByb3h5Y2FjaGUgICBQcm94eSBDYWNoZSBvdmVybGF5IG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbcHJveHljYWNoZV0gPSAiLS1lbmFibGUtcHJveHljYWNoZT1tb2QsLS1lbmFibGUtcHJveHljYWNoZT1ubywiCi1GSUxFU18ke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUgPSAiJHttZH0vcGNhY2hlLSouc28uKiIKLVBBQ0tBR0VTICs9ICIke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUiCi0KLSMgQXBwZW5kIFVSQU5ET01fREVWSUNFPScvZGV2L3VyYW5kb20nIHRvIENQUEZMQUdTOgotIyBUaGlzIGFsbG93cyB0bHMgdG8gb2J0YWluIHJhbmRvbSBiaXRzIGZyb20gL2Rldi91cmFuZG9tLCBieSBkZWZhdWx0Ci0jIGl0IHdhcyBkaXNhYmxlZCBmb3IgY3Jvc3MtY29tcGlsaW5nLgotQ1BQRkxBR1NfYXBwZW5kID0gIiAtRF9HTlVfU09VUkNFIC1EVVJBTkRPTV9ERVZJQ0U9XCcvZGV2L3VyYW5kb21cJyAtZlBJQyIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9saWJ0b29sL2J1aWxkLWF1eC9sdG1haW4uc2ggJHtTfS9idWlsZAotICAgIHJtIC1mICR7U30vbGlidG9vbAotICAgIGFjbG9jYWwKLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1jb3B5Ci0gICAgZ251LWNvbmZpZ2l6ZQotICAgIGF1dG9jb25mCi0gICAgb2VfcnVuY29uZgotfQotCi1MRUFEX1NPTkFNRSA9ICJsaWJsZGFwLSR7TERBUF9WRVJ9LnNvLioiCi0KLSMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZS4gIFRoaXMgYWxsb3dzIHRoZQotIyBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcmllcyB3aXRoIG5vIGRhZW1vbiBzdXBwb3J0LgotIyBFYWNoIG1vZHVsZSBhbHNvIGhhcyBpdHMgb3duIHBhY2thZ2UgLSBzZWUgYWJvdmUuCi1QQUNLQUdFUyArPSAiJHtQTn0tc2xhcGQgJHtQTn0tc2x1cnBkICR7UE59LWJpbiIKLQotIyBQYWNrYWdlIGNvbnRlbnRzIC0gc2hpZnQgbW9zdCBzdGFuZGFyZCBjb250ZW50cyB0byAtYmluCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvbGRhcC4qICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEiCi1GSUxFU18ke1BOfS1zbGFwZCA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZCAke2xpYmV4ZWNkaXJ9L3NsYXBkICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4gXAotICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NjaGVtYSBcCi0gICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9EQl9DT05GSUcuZXhhbXBsZSAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCi1GSUxFU18ke1BOfS1zbHVycGQgPSAiJHtsaWJleGVjZGlyfS9zbHVycGQgJHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1zbHVycCAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5sYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvLmRlYnVnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXRzY3JpcHQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKLSAgICBjaG1vZCA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCi0gICAgIyBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gL2V0Yy9vcGVubGRhcCBhbmQgaXMgZm9yIHNsYXBkCi0gICAgcm0gLWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtZGF0YS9EQl9DT05GSUcuZXhhbXBsZQotCi0gICAgIyBJbnN0YWxsaW5nIHNsYXBkIHVuZGVyICR7c2Jpbn0gaXMgbW9yZSBGSFMgYW5kIExTQiBjb21wbGlhbmNlCi0gICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vc2xhcGQgJHtEfS8ke3NiaW5kaXJ9L3NsYXBkCi0gICAgU0xBUFRPT0xTPSJzbGFwYWRkIHNsYXBjYXQgc2xhcGRuIHNsYXBpbmRleCBzbGFwcGFzc3dkIHNsYXB0ZXN0IHNsYXBhdXRoIHNsYXBhY2wgc2xhcHNjaGVtYSIKLSAgICBjZCAke0R9LyR7c2JpbmRpcn0vCi0gICAgcm0gLWYgJHtTTEFQVE9PTFN9Ci0gICAgZm9yIGkgaW4gJHtTTEFQVE9PTFN9OyBkbyBsbiAtc2Ygc2xhcGQgJGk7IGRvbmUKLQotICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbGFwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotICAgICMgVXNlcyBtZG0gYXMgdGhlIGRhdGFiYXNlCi0gICAgIyAgYW5kIGxvY2Fsc3RhdGVkaXIgYXMgZGF0YSBkaXJlY3RvcnkgLi4uCi0gICAgc2VkIC1lICdzLyMgbW9kdWxlcGF0aC9tb2R1bGVwYXRoLycgXAotICAgICAgICAtZSAncy8jIG1vZHVsZWxvYWRccypiYWNrX2JkYi4qL21vZHVsZWxvYWQgICAgYmFja19tZGIvJyBcCi0gICAgICAgIC1lICdzL2RhdGFiYXNlXHMqYmRiL2RhdGFiYXNlICAgICAgICBtZGIvJyBcCi0gICAgICAgIC1lICdzJV5kaXJlY3RvcnlccyouKiVkaXJlY3RvcnkgICAke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhLyUnIFwKLSAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuY29uZgotCi0gICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEKLQotCi19Ci0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc2xhcGQiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tc2xhcGQgPSAib3BlbmxkYXAiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zbGFwZCA9ICJkZWZhdWx0cyIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zbGFwZCA9ICJob3N0YXBkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNsYXBkID89ICJkaXNhYmxlIgotCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1iYWNrZW5kcy4qIF4ke1BOfS1iYWNrZW5kLS4qIgotCi0jIFRoZSBtb2R1bGVzIHJlcXVpcmUgdGhlaXIgLnNvIHRvIGJlIGR5bmFtaWNhbHkgbG9hZGVkCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWRuc3NydiAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbGRhcCAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZXRhICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1kYiAgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbW9uaXRvciArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1udWxsICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXBhc3N3ZCAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtc2hlbGwgICArPSAiZGV2LXNvIgotCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBiYWNrZW5kX2RpciAgICA9IGQuZXhwYW5kKCcke2xpYmV4ZWNkaXJ9L29wZW5sZGFwJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLnNvJCcsICdvcGVubGRhcC1iYWNrZW5kLSVzJywgJ09wZW5MREFQICVzIGJhY2tlbmQnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC0uKlwuc29cLi4qJCcsICdvcGVubGRhcC1iYWNrZW5kLSVzJywgJ09wZW5MREFQICVzIGJhY2tlbmQnLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotCi0gICAgbWV0YXBrZyA9ICIke1BOfS1iYWNrZW5kcyIKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQotICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbXQotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgotICAgICAgICBpZiBwa2cuY291bnQoIm9wZW5sZGFwLWJhY2tlbmQtIikgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5jb3VudCgiLWRldiIpIGFuZCBub3QgcGtnLmNvdW50KCItZGJnIikgYW5kIG5vdCBwa2cuY291bnQoInN0YXRpYyIpIGFuZCBub3QgcGtnLmNvdW50KCJsb2NhbGUiKToKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgJ09wZW5MREFQIGJhY2tlbmRzIG1ldGEgcGFja2FnZScpCi0gICAgcGFja2FnZXMuYXBwZW5kKG1ldGFwa2cpCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJkNjYxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ1LmJiCkBAIC0wLDAgKzEsMjU2IEBACisjIE9wZW5MREFQLCBhIGxpY2Vuc2UgZnJlZSAoc2VlIGh0dHA6Ly93d3cuT3BlbkxEQVAub3JnL2xpY2Vuc2UuaHRtbCkKKyMKK1NVTU1BUlkgPSAiT3BlbkxEQVAgRGlyZWN0b3J5IFNlcnZpY2UiCitERVNDUklQVElPTiA9ICJPcGVuTERBUCBTb2Z0d2FyZSBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwiCisjIFRoZSBPcGVuTERBUCBQdWJsaWMgTGljZW5zZSAtIHNlZSB0aGUgSE9NRVBBR0UgLSBkZWZpbmVzCisjIHRoZSBsaWNlbnNlLiAgd3d3Lm9wZW5sZGFwLm9yZyBjbGFpbXMgdGhpcyBpcyBPcGVuIFNvdXJjZQorIyAoc2VlIGh0dHA6Ly93d3cub3BlbmxkYXAub3JnKSwgdGhlIGxpY2Vuc2UgYXBwZWFycyB0byBiZQorIyBiYXNpY2FsbHkgQlNELiAgb3BlbnNvdXJjZS5vcmcgZG9lcyBub3QgcmVjb3JkIHRoaXMgbGljZW5zZQorIyBhdCBwcmVzZW50IChzbyBpdCBpcyBhcHBhcmVudGx5IG5vdCBPU0kgY2VydGlmaWVkKS4KK0xJQ0VOU0UgPSAiT3BlbkxEQVAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTI1ZmQzNzIxOTYwZjM5MTI4Y2QxNWE3NDlmZDIxMTM5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTE1M2QwN2VmMDUyYzRhMzdhOGZhYzIzYmM2MDMxOTcyIFwKKyIKK1NFQ1RJT04gPSAibGlicyIKKworTERBUF9WRVIgPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0iCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLm9wZW5sZGFwLm9yZy9wdWIvT3BlbkxEQVAvb3BlbmxkYXAtcmVsZWFzZS8ke0JQfS50Z3ogXAorICAgIGZpbGU6Ly9vcGVubGRhcC1tNC1wdGhyZWFkLnBhdGNoIFwKKyAgICBmaWxlOi8va2lsbC1pY3UucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVubGRhcC0yLjQuMjgtZ251dGxzLWdjcnlwdC5wYXRjaCBcCisgICAgZmlsZTovL3VzZS11cmFuZG9tLnBhdGNoIFwKKyAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgZmlsZTovL3NsYXBkLnNlcnZpY2UgXAorICAgIGZpbGU6Ly90aHJlYWRfc3R1Yi5wYXRjaCBcCisgICAgZmlsZTovL29wZW5sZGFwLUNWRS0yMDE1LTMyNzYucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmZjgzMDEyNzdjZGZkMGFmNzI4YTY5MjcwNDJhMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RkNmNmZmRlYmNkOTUxNjFhNzMzMDVlYzEzZmM3YTc4ZTk3MDdiNDZjYTlmODRmYjg5N2NkNTYyNmRmMzgyNCIKKworREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGdyb2ZmLW5hdGl2ZSIKKworIyBUaGUgb3JpZ2luYWwgdG9wLm1rIHVzZWQgSU5TVEFMTCwgbm90IElOU1RBTExfU1RSSVBfUFJPR1JBTSB3aGVuCisjIGluc3RhbGxpbmcgLnNvIGFuZCBleGVjdXRhYmxlcywgdGhpcyBmYWlscyBpbiBjcm9zcyBjb21waWxhdGlvbgorIyBlbnZpcm9ubWVudHMKK1NSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLXN0cmlwLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIENWIFNFVFRJTkdTCisjIFJlcXVpcmVkIHRvIHdvcmsgcm91bmQgQUNfRlVOQ19NRU1DTVAgd2hpY2ggZ2V0cyB0aGUgd3JvbmcgYW5zd2VyCisjIHdoZW4gY3Jvc3MgY29tcGlsaW5nIChzaG91bGQgYmUgaW4gc2l0ZT8pCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzIgorCisjIENPTkZJRyBERUZJTklUSU9OUworIyBUaGUgZm9sbG93aW5nIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGZvciBhCisjIGNyb3NzIGNvbXBpbGUgYXV0b21hZ2ljYWxseS4gIFNlbGVjdCBzaG91bGQgeWllbGQgZmluZSBvbiBhbGwgT0UKKyMgc3lzdGVtcy4uLgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgteWllbGRpbmctc2VsZWN0PXllcyIKKyMgU2hhcmVkIGxpYnJhcmllcyBhcmUgbmljZS4uLgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1keW5hbWljIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIG1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgIG1kYiBsZGFwIG1ldGEgbW9uaXRvciBudWxsIHBhc3N3ZCBzaGVsbCBwcm94eWNhY2hlIGRuc3NydiBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCisjLS13aXRoLXRscyAgICAgICAgICAgICAgd2l0aCBUTFMvU1NMIHN1cHBvcnQgYXV0b3xvcGVuc3NsfGdudXRscyBbYXV0b10KK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtdGxzPWdudXRscywsZ251dGxzIGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXRscz1vcGVuc3NsLCxvcGVuc3NsIgorCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1jeXJ1cy1zYXNsLC0td2l0aG91dC1jeXJ1cy1zYXNsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW21vZHVsZXNdID0gImx0X2N2X2Rsb3Blbl9zZWxmPXllcyAtLWVuYWJsZS1tb2R1bGVzLC0tZGlzYWJsZS1tb2R1bGVzLGxpYnRvb2wiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCisKKyMgU0xBUEQgb3B0aW9ucworIworIyBVTklYIGNyeXB0KDMpIHBhc3N3ZCBzdXBwb3J0OgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jcnlwdCIKKworIyBTTEFQRCBCQUNLRU5ECisjCisjIFRoZSBiYWNrZW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBjb25maWd1cmF0aW9uLiAgVGhpcyBjb250cm9scyB0aGUKKyMgcmVxdWlyZWQgZGF0YWJhc2UuCisjCisjIEJhY2tlbmRzPSJiZGIgZG5zc3J2IGhkYiBsZGFwIG1kYiBtZXRhIG1vbml0b3IgbmRiIG51bGwgcGFzc3dkIHBlcmwgcmVsYXkgc2hlbGwgc29jayBzcWwiCisjCisjIE5vdGUgdGhhdCBtdWx0aXBsZSBiYWNrZW5kcyBjYW4gYmUgYnVpbHQuICBUaGUgbGRibSBiYWNrZW5kIHJlcXVpcmVzIGEKKyMgYnVpbGQtdGltZSBjaG9pY2Ugb2YgZGF0YWJhc2UgQVBJLiAgVGhlIGJkYiBiYWNrZW5kIGZvcmNlcyB0aGlzIHRvIGJlCisjIERCNC4gIFRvIHVzZSB0aGUgZ2RibSAob3Igb3RoZXIpIEFQSSB0aGUgQmVya2VseSBkYXRhYmFzZSBtb2R1bGUgbXVzdAorIyBiZSByZW1vdmVkIGZyb20gdGhlIGJ1aWxkLgorbWQgPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcCIKKyMKKyMtLWVuYWJsZS1iZGIgICAgICAgICAgZW5hYmxlIEJlcmtlbGV5IERCIGJhY2tlbmQgbm98eWVzfG1vZCB5ZXMKKyMgVGhlIEJlcmtlbHkgREIgaXMgdGhlIHN0YW5kYXJkIGNob2ljZS4gIFRoaXMgdmVyc2lvbiBvZiBPcGVuTERBUCByZXF1aXJlcworIyB0aGUgdmVyc2lvbiA0IGltcGxlbWVudGF0aW9uIG9yIGJldHRlci4KK1BBQ0tBR0VDT05GSUdbYmRiXSA9ICItLWVuYWJsZS1iZGI9eWVzLC0tZW5hYmxlLWJkYj1ubyxkYiIKKworIy0tZW5hYmxlLWRuc3NydiAgICAgICBlbmFibGUgZG5zc3J2IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1tkbnNzcnZdID0gIi0tZW5hYmxlLWRuc3Nydj1tb2QsLS1lbmFibGUtZG5zc3J2PW5vIgorCisjLS1lbmFibGUtaGRiICAgICAgICAgIGVuYWJsZSBIaWVyYXJjaGljYWwgREIgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2hkYl0gPSAiLS1lbmFibGUtaGRiPXllcywtLWVuYWJsZS1oZGI9bm8sZGIiCisKKyMtLWVuYWJsZS1sZGFwICAgICAgICAgZW5hYmxlIGxkYXAgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXA9bW9kLC0tZW5hYmxlLWxkYXA9bm8sIgorCisjLS1lbmFibGUtbWRiICAgICAgICAgIGVuYWJsZSBtZGIgZGF0YWJhc2UgYmFja2VuZCBub3x5ZXN8bW9kIFt5ZXNdCitQQUNLQUdFQ09ORklHW21kYl0gPSAiLS1lbmFibGUtbWRiPXllcywtLWVuYWJsZS1tZGI9bm8sIgorCisjLS1lbmFibGUtbWV0YSAgICAgICAgIGVuYWJsZSBtZXRhZGlyZWN0b3J5IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1ttZXRhXSA9ICItLWVuYWJsZS1tZXRhPW1vZCwtLWVuYWJsZS1tZXRhPW5vLCIKKworIy0tZW5hYmxlLW1vbml0b3IgICAgICBlbmFibGUgbW9uaXRvciBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCitQQUNLQUdFQ09ORklHW21vbml0b3JdID0gIi0tZW5hYmxlLW1vbml0b3I9bW9kLC0tZW5hYmxlLW1vbml0b3I9bm8sIgorCisjLS1lbmFibGUtbmRiICAgICAgICAgIGVuYWJsZSBNeVNRTCBOREIgQ2x1c3RlciBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tuZGJdID0gIi0tZW5hYmxlLW5kYj1tb2QsLS1lbmFibGUtbmRiPW5vLCIKKworIy0tZW5hYmxlLW51bGwgICAgICAgICBlbmFibGUgbnVsbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbbnVsbF0gPSAiLS1lbmFibGUtbnVsbD1tb2QsLS1lbmFibGUtbnVsbD1ubywiCisKKyMtLWVuYWJsZS1wYXNzd2QgICAgICAgZW5hYmxlIHBhc3N3ZCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbcGFzc3dkXSA9ICItLWVuYWJsZS1wYXNzd2Q9bW9kLC0tZW5hYmxlLXBhc3N3ZD1ubywiCisKKyMtLWVuYWJsZS1wZXJsICAgICAgICAgZW5hYmxlIHBlcmwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjICBUaGlzIHJlcXVpcmVzIGEgbG9hZGFibGUgcGVybCBkeW5hbWljIGxpYnJhcnksIGlmIGVuYWJsZWQgd2l0aG91dAorIyAgZG9pbmcgc29tZXRoaW5nIGFwcHJvcHJpYXRlIChidWlsZGluZyBwZXJsPykgdGhlIGJ1aWxkIHdpbGwgcGljaworIyAgdXAgdGhlIGJ1aWxkIG1hY2hpbmUgcGVybCAtIG5vdCBnb29kIChpbmhlcml0IHBlcmxuYXRpdmU/KQorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLWVuYWJsZS1wZXJsPW1vZCwtLWVuYWJsZS1wZXJsPW5vLHBlcmwiCisKKyMtLWVuYWJsZS1yZWxheSAgICAgICAgZW5hYmxlIHJlbGF5IGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQorUEFDS0FHRUNPTkZJR1tyZWxheV0gPSAiLS1lbmFibGUtcmVsYXk9bW9kLC0tZW5hYmxlLXJlbGF5PW5vLCIKKworIy0tZW5hYmxlLXNoZWxsICAgICAgICBlbmFibGUgc2hlbGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjIGNvbmZpZ3VyZTogV0FSTklORzogVXNlIG9mIC0td2l0aG91dC10aHJlYWRzIGlzIHJlY29tbWVuZGVkIHdpdGggYmFjay1zaGVsbAorUEFDS0FHRUNPTkZJR1tzaGVsbF0gPSAiLS1lbmFibGUtc2hlbGw9bW9kIC0td2l0aG91dC10aHJlYWRzLC0tZW5hYmxlLXNoZWxsPW5vLCIKKworIy0tZW5hYmxlLXNvY2sgICAgICAgICBlbmFibGUgc29jayBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tzb2NrXSA9ICItLWVuYWJsZS1zb2NrPW1vZCwtLWVuYWJsZS1zb2NrPW5vLCIKKworIy0tZW5hYmxlLXNxbCAgICAgICAgICBlbmFibGUgc3FsIGJhY2tlbmQgbm98eWVzfG1vZCBubworIyBzcWwgcmVxdWlyZXMgc29tZSBzcWwgYmFja2VuZCB3aGljaCBwcm92aWRlcyBzcWwuaCwgc3FsaXRlKiBwcm92aWRlcworIyBzcWxpdGUuaCAod2hpY2ggbWF5IGJlIGNvbXBhdGlibGUgYnV0IGhhc24ndCBiZWVuIHRyaWVkLikKK1BBQ0tBR0VDT05GSUdbc3FsXSA9ICItLWVuYWJsZS1zcWw9bW9kLC0tZW5hYmxlLXNxbD1ubyxzcWxpdGUzIgorCisjLS1lbmFibGUtZHluZ3JvdXAgICAgIER5bmFtaWMgR3JvdXAgb3ZlcmxheSBub3x5ZXN8bW9kIG5vCisjICBUaGlzIGlzIGEgZGVtbywgUHJveHkgQ2FjaGUgZGVmaW5lcyBpbml0X21vZHVsZSB3aGljaCBjb25mbGljdHMgd2l0aCB0aGUKKyMgIHNhbWUgc3ltYm9sIGluIGR5bmdyb3VwCitQQUNLQUdFQ09ORklHW2R5bmdyb3VwXSA9ICItLWVuYWJsZS1keW5ncm91cD1tb2QsLS1lbmFibGUtZHluZ3JvdXA9bm8sIgorCisjLS1lbmFibGUtcHJveHljYWNoZSAgIFByb3h5IENhY2hlIG92ZXJsYXkgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1twcm94eWNhY2hlXSA9ICItLWVuYWJsZS1wcm94eWNhY2hlPW1vZCwtLWVuYWJsZS1wcm94eWNhY2hlPW5vLCIKK0ZJTEVTXyR7UE59LW92ZXJsYXktcHJveHljYWNoZSA9ICIke21kfS9wY2FjaGUtKi5zby4qIgorUEFDS0FHRVMgKz0gIiR7UE59LW92ZXJsYXktcHJveHljYWNoZSIKKworIyBBcHBlbmQgVVJBTkRPTV9ERVZJQ0U9Jy9kZXYvdXJhbmRvbScgdG8gQ1BQRkxBR1M6CisjIFRoaXMgYWxsb3dzIHRscyB0byBvYnRhaW4gcmFuZG9tIGJpdHMgZnJvbSAvZGV2L3VyYW5kb20sIGJ5IGRlZmF1bHQKKyMgaXQgd2FzIGRpc2FibGVkIGZvciBjcm9zcy1jb21waWxpbmcuCitDUFBGTEFHU19hcHBlbmQgPSAiIC1EX0dOVV9TT1VSQ0UgLURVUkFORE9NX0RFVklDRT1cJy9kZXYvdXJhbmRvbVwnIC1mUElDIgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2xpYnRvb2wvYnVpbGQtYXV4L2x0bWFpbi5zaCAke1N9L2J1aWxkCisgICAgcm0gLWYgJHtTfS9saWJ0b29sCisgICAgYWNsb2NhbAorICAgIGxpYnRvb2xpemUgLS1mb3JjZSAtLWNvcHkKKyAgICBnbnUtY29uZmlnaXplCisgICAgYXV0b2NvbmYKKyAgICBvZV9ydW5jb25mCit9CisKK0xFQURfU09OQU1FID0gImxpYmxkYXAtJHtMREFQX1ZFUn0uc28uKiIKKworIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlLiAgVGhpcyBhbGxvd3MgdGhlCisjIGluc3RhbGxhdGlvbiBvZiB0aGUgbGlicmFyaWVzIHdpdGggbm8gZGFlbW9uIHN1cHBvcnQuCisjIEVhY2ggbW9kdWxlIGFsc28gaGFzIGl0cyBvd24gcGFja2FnZSAtIHNlZSBhYm92ZS4KK1BBQ0tBR0VTICs9ICIke1BOfS1zbGFwZCAke1BOfS1zbHVycGQgJHtQTn0tYmluIgorCisjIFBhY2thZ2UgY29udGVudHMgLSBzaGlmdCBtb3N0IHN0YW5kYXJkIGNvbnRlbnRzIHRvIC1iaW4KK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfS9vcGVubGRhcC9sZGFwLiogJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YSIKK0ZJTEVTXyR7UE59LXNsYXBkID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kICR7bGliZXhlY2Rpcn0vc2xhcGQgJHtzYmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biBcCisgICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2NoZW1hIFwKKyAgICAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL0RCX0NPTkZJRy5leGFtcGxlICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKiIKK0ZJTEVTXyR7UE59LXNsdXJwZCA9ICIke2xpYmV4ZWNkaXJ9L3NsdXJwZCAke2xvY2Fsc3RhdGVkaXJ9L29wZW5sZGFwLXNsdXJwICR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvcnVuIgorRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmxhICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcC8uZGVidWciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgY2F0ICR7V09SS0RJUn0vaW5pdHNjcmlwdCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubGRhcAorICAgIGNobW9kIDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKKyAgICAjIFRoaXMgaXMgZHVwbGljYXRlZCBpbiAvZXRjL29wZW5sZGFwIGFuZCBpcyBmb3Igc2xhcGQKKyAgICBybSAtZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1kYXRhL0RCX0NPTkZJRy5leGFtcGxlCisKKyAgICAjIEluc3RhbGxpbmcgc2xhcGQgdW5kZXIgJHtzYmlufSBpcyBtb3JlIEZIUyBhbmQgTFNCIGNvbXBsaWFuY2UKKyAgICBtdiAke0R9JHtsaWJleGVjZGlyfS9zbGFwZCAke0R9LyR7c2JpbmRpcn0vc2xhcGQKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorICAgIFNMQVBUT09MUz0ic2xhcGFkZCBzbGFwY2F0IHNsYXBkbiBzbGFwaW5kZXggc2xhcHBhc3N3ZCBzbGFwdGVzdCBzbGFwYXV0aCBzbGFwYWNsIHNsYXBzY2hlbWEiCisgICAgY2QgJHtEfS8ke3NiaW5kaXJ9LworICAgIHJtIC1mICR7U0xBUFRPT0xTfQorICAgIGZvciBpIGluICR7U0xBUFRPT0xTfTsgZG8gbG4gLXNmIHNsYXBkICRpOyBkb25lCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2xhcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKyAgICAjIFVzZXMgbWRtIGFzIHRoZSBkYXRhYmFzZQorICAgICMgIGFuZCBsb2NhbHN0YXRlZGlyIGFzIGRhdGEgZGlyZWN0b3J5IC4uLgorICAgIHNlZCAtZSAncy8jIG1vZHVsZXBhdGgvbW9kdWxlcGF0aC8nIFwKKyAgICAgICAgLWUgJ3MvIyBtb2R1bGVsb2FkXHMqYmFja19iZGIuKi9tb2R1bGVsb2FkICAgIGJhY2tfbWRiLycgXAorICAgICAgICAtZSAncy9kYXRhYmFzZVxzKmJkYi9kYXRhYmFzZSAgICAgICAgbWRiLycgXAorICAgICAgICAtZSAncyVeZGlyZWN0b3J5XHMqLiolZGlyZWN0b3J5ICAgJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YS8lJyBcCisgICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLmNvbmYKKworICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhCisKKworfQorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNsYXBkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNsYXBkID0gIm9wZW5sZGFwIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2xhcGQgPSAiZGVmYXVsdHMiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2xhcGQgPSAiaG9zdGFwZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zbGFwZCA/PSAiZGlzYWJsZSIKKworCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tYmFja2VuZHMuKiBeJHtQTn0tYmFja2VuZC0uKiIKKworIyBUaGUgbW9kdWxlcyByZXF1aXJlIHRoZWlyIC5zbyB0byBiZSBkeW5hbWljYWx5IGxvYWRlZAorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1kbnNzcnYgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWxkYXAgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWV0YSAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZGIgICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1vbml0b3IgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbnVsbCAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1wYXNzd2QgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXNoZWxsICAgKz0gImRldi1zbyIKKworCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgYmFja2VuZF9kaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJleGVjZGlyfS9vcGVubGRhcCcpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC5zbyQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwtLipcLnNvXC4uKiQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKworICAgIG1ldGFwa2cgPSAiJHtQTn0tYmFja2VuZHMiCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgcGtnLmNvdW50KCJvcGVubGRhcC1iYWNrZW5kLSIpIGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIik6CisgICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCisgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKKyAgICBkLnNldFZhcignREVTQ1JJUFRJT05fJyArIG1ldGFwa2csICdPcGVuTERBUCBiYWNrZW5kcyBtZXRhIHBhY2thZ2UnKQorICAgIHBhY2thZ2VzLmFwcGVuZChtZXRhcGtnKQorICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5tb3RpZi9vcGVubW90aWYvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubW90aWYvb3Blbm1vdGlmL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2OGU4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5tb3RpZi9vcGVubW90aWYvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLS0tIGEvY29uZmlndXJlLmFjfgkyMDA5LTEwLTI3IDE0OjEwOjIzLjAwMDAwMDAwMCAtMDIwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTEtMDUtMzEgMTA6NTE6MDAuMjA3MjMyMDM2IC0wMzAwCi1AQCAtMywxMiArMyw2IEBACi0gQUNfQ09ORklHX1NSQ0RJUihbbGliL1htL0Zvcm0uY10pCi0gQUNfUFJFUkVRKDIuNTIpCi0gQUNfQ09ORklHX0FVWF9ESVIoLikKLS1BQ19DSEVDS19GSUxFKC91c3IvWC9pbmNsdWRlL1gxMS9YLmgsCi0tICBBQ19QUkVGSVhfREVGQVVMVCgvdXNyL1gpLAotLSAgQUNfUFJFRklYX0RFRkFVTFQoL3VzcikpCi0tQUNfQ0hFQ0tfRklMRSgvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1guaCwKLS0gIEFDX1BSRUZJWF9ERUZBVUxUKC91c3IvWDExUjYpLAotLSAgQUNfUFJFRklYX0RFRkFVTFQoL3VzcikpCi0gCi0gZG5sIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX0NBTk9OSUNBTF9UQVJHRVQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbm1vdGlmL29wZW5tb3RpZl8yLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbm1vdGlmL29wZW5tb3RpZl8yLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVjMzljYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5tb3RpZi9vcGVubW90aWZfMi4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TRUNUSU9OID0gImxpYnMiCi1TVU1NQVJZID0gIk9TTS9Nb3RpZiBpbXBsZW1lbnRhdGlvbiIKLUxJQ0VOU0UgPSAiT0dQTCIKLURFUEVORFMgPSAieGJpdG1hcHMgdmlydHVhbC9saWJ4MTEgbGlieHQgbGlieGZ0IHhwcm90byIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTRmNjkyYzgyNDkxZGIzZDUyNDE5OTI5ZDJmM2IzNDMiCi0KLVBSID0gInIzIgotCi1QTkJMQUNLTElTVFtvcGVubW90aWZdID89ICJCUk9LRU46IGRvZXNuJ3QgYnVpbGQgd2l0aCBCIT1TIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly9tb3RpZi5pY3MuY29tL3NpdGVzL2RlZmF1bHQvZmlsZXMvb3Blbm1vdGlmLTIuMy4zLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2g7cGF0Y2g9MSIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkMjdjZDMzNjlkNmM3ZDVlZjc5ZWNjYmE1MjRmN2JlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4NWY1NTQ1ZTIxOGZhMGM1OWEzNzg5MTkyMTMyZDQ3MmZjNWEzM2U5MTRhMjIxYTU2OGVlZTRmYzEwY2QxMDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZyxsaWJwbmciCi0KLUVYVFJBX09FQ09ORiA9ICJYX0NGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9IC0tZGlzYWJsZS1wcmludGluZyIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWJpbiIKLQotRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAoCi0gICAgICAgICMgSEFDSzogYnVpbGQgYSBuYXRpdmUgYmluYXJpZXMgbmVlZCBkdXJpbmcgdGhlIGJ1aWxkCi0gICAgICAgIHVuc2V0IENDIExEIENYWCBDQ0xEIENGTEFHUwotICAgICAgICBvZV9ydW5tYWtlIC1DIGNvbmZpZy91dGlsIENDPSIke0JVSUxEX0NDfSIgTEQ9IiR7QlVJTERfTER9IiBDWFg9IiR7QlVJTERfQ1hYfSIgTElCUz0iIiBtYWtlc3RycwotICAgICkKLSAgICBpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KLSAgICAgICAgZXhpdCAxCi0gICAgZmkKLSAgICBvZV9ydW5tYWtlIC1DIGxpYgotICAgIG9lX3J1bm1ha2UgLUMgaW5jbHVkZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IC1DIGxpYiBpbnN0YWxsCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gLUMgaW5jbHVkZSBpbnN0YWxsCi19Ci0KLUxFQURfU09OQU1FID0gImxpYlhtLnNvLjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zeW5jL2xpYnN5bmNtbF8wLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnN5bmMvbGlic3luY21sXzAuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmY2NWM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnN5bmMvbGlic3luY21sXzAuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJzeW5jbWwgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFN5bmNNTCBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGlic3luY21sLm9wZW5zeW5jLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkiCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBsaWJzb3VwLTIuNCBvcGVub2JleCB3YnhtbDIiCi0KLSMgRGVwZW5kcyBvbiBvcGVub2JleAotUE5CTEFDS0xJU1RbbGlic3luY21sXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnN5bmNtbC9saWJzeW5jbWwtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjg0ODc5ZWQ3Y2I5NDYxODUzMGZiY2I4MDFhMWE0Zjk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1ZDY1MTM2MzdhZGIxMzAwYTNhNThiNmUyOWQ1M2FiNjM3M2M4ZjM3MDgwN2QwZDkyNWJhZTcyYjI5MjBlNTMiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9IgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbndiZW0vb3BlbndiZW1fMy4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW53YmVtL29wZW53YmVtXzMuMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTE0MjM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbndiZW0vb3BlbndiZW1fMy4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWIgQmFzZWQgRW50ZXJwcmlzZSBNYW5hZ2VtZW50IChXQkVNKSBJbXBsZW1lbnRhdGlvbiIKLURFU0NSSVBUSU9OID0gIk9wZW5XQkVNIGlzIGEgc2V0IG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgdGhhdCBoZWxwIGZhY2lsaXRhdGUgXAotZGVwbG95bWVudCBvZiB0aGUgQ29tbW9uIEluZm9ybWF0aW9uIE1vZGVsIChDSU0pIGFuZCBXZWItQmFzZWQgXAotRW50ZXJwcmlzZSBNYW5hZ2VtZW50IChXQkVNKSB0ZWNobm9sb2dpZXMgb2YgdGhlIERpc3RyaWJ1dGVkIE1hbmFnZW1lbnQgXAotVGFzayBGb3JjZSAoRE1URikuIFwKLSBcCi1XZWItQmFzZWQgRW50ZXJwcmlzZSBNYW5hZ2VtZW50IChXQkVNKSBpcyBhIHNldCBvZiBtYW5hZ2VtZW50IGFuZCBcCi1JbnRlcm5ldCBzdGFuZGFyZCB0ZWNobm9sb2dpZXMgZGV2ZWxvcGVkIHRvIHVuaWZ5IHRoZSBtYW5hZ2VtZW50IG9mIFwKLWRpc3RyaWJ1dGVkIGNvbXB1dGluZyBlbnZpcm9ubWVudHMuIFdCRU0gcHJvdmlkZXMgdGhlIGFiaWxpdHkgZm9yIHRoZSBcCi1pbmR1c3RyeSB0byBkZWxpdmVyIGEgd2VsbC1pbnRlZ3JhdGVkIHNldCBvZiBzdGFuZGFyZHMtYmFzZWQgbWFuYWdlbWVudCBcCi10b29scywgZmFjaWxpdGF0aW5nIHRoZSBleGNoYW5nZSBvZiBkYXRhIGFjcm9zcyBvdGhlcndpc2UgZGlzcGFyYXRlIFwKLXRlY2hub2xvZ2llcyBhbmQgcGxhdGZvcm1zLiBcCi0gXAotRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgRE1URiBhbmQgaXRzIHRlY2hub2xvZ2llcywgdmlzaXQgXAotaHR0cDovL3d3dy5kbXRmLm9yZy9zdGFuZGFyZHMuICIKLVNFQ1RJT04gPSAiU3lzdGVtL01hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbndiZW0uc291cmNlZm9yZ2UubmV0LyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1TT1VSQ0UxPSJub3ZlbGwtb3BlbndiZW0tcm9vdC1hY2wubW9mIgotU09VUkNFMj0ibG9hZG1vZi5zaCIKLVNPVVJDRTM9InJtbW9mLnNoIgotU09VUkNFND0ib3BlbndiZW0tb3djaW1vbWQuaW5pdCIKLVNPVVJDRTU9Im9wZW53YmVtLWV0Y19wYW0uZF9vcGVud2JlbSIKLVNPVVJDRTY9Im9wZW53YmVtLXJwbWxpbnRyYyIKLQotU1JDX1VSSSA9ICIgXAotICAgZ2l0Oi8vZ2l0aHViLmNvbS9ra2FlbXBmL29wZW53YmVtLmdpdCBcCi0gICBmaWxlOi8vJHtTT1VSQ0UxfSBcCi0gICBmaWxlOi8vJHtTT1VSQ0UyfSBcCi0gICBmaWxlOi8vJHtTT1VSQ0UzfSBcCi0gICBmaWxlOi8vJHtTT1VSQ0U0fSBcCi0gICBmaWxlOi8vJHtTT1VSQ0U1fSBcCi0gICBmaWxlOi8vJHtTT1VSQ0U2fSBcCi0gICBmaWxlOi8vY2hlY2tzZXJ2ZXJrZXkgXAotICAgZmlsZTovL293Y2ltb21kLnNlcnZpY2UgXAotIgotU1JDUkVWID0gIjVjNjg4ZWVmYzFmOGUzNWE0YjFjNTg1MjlhYWU1ZjExNGMyNWMyYTgiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vQ09QWUlORzttZDU9MDUwNGEyZWI4NWUwMWFhOTJjOWVmZDQxMjVhMzQ2NjAiCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi1ERVBFTkRTICs9ICJvcGVuc3NsIGxpYnBhbSBiYXNoIgotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXByZWZpeD0vdXNyIFwKLSAgICAtLXN5c2NvbmZkaXI9L2V0YyBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWxvY2Fsc3RhdGVkaXI9L3Zhci9saWIgXAotICAgIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0vb3BlbndiZW0vYmluIFwKLSAgICAtLW1hbmRpcj0vdXNyL3NoYXJlL21hbiBcCi0gICAgLS1lbmFibGUtdGhyZWFkcy1ydW4tYXMtdXNlciBcCi0iCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcmVjb25mIC0tZm9yY2UgLS1pbnN0YWxsCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvb3BlbndiZW0vb3BlbndiZW0uY29uZi5kCi0gICAgaW5zdGFsbCAtZCAke0R9L3Zhci9hZG0vZmlsbHVwLXRlbXBsYXRlcwotICAgIGluc3RhbGwgLW0gNjQ0IGV0Yy9zeXNjb25maWcvZGFlbW9ucy9vd2NpbW9tZCAke0R9L3Zhci9hZG0vZmlsbHVwLXRlbXBsYXRlcy9zeXNjb25maWcub3djaW1vbWQKLQotICAgICMgZml4IHVwIGhhcmRjb2RlZCBwYXRocwotICAgIHNlZCAtaSAtZSAncywvdXNyL3NiaW4vLCR7c2JpbmRpcn0vLCcgJHtXT1JLRElSfS9vd2NpbW9tZC5zZXJ2aWNlCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L293Y2ltb21kLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vY2hlY2tzZXJ2ZXJrZXkgJHtEfSR7c3lzY29uZmRpcn0vb3BlbndiZW0vCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvaW5pdC5kCi0gICAgbG4gLXNmIC4uLy4uL2V0Yy9pbml0LmQvb3djaW1vbWQgJHtEfS91c3Ivc2Jpbi9yY293Y2ltb21kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS8ke1NPVVJDRTR9ICR7RH0vZXRjL2luaXQuZC9vd2NpbW9tZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vdXNyL2JpbgotICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvcGFtLmQKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L29wZW53YmVtL2NtcGlwcm92aWRlcnMKLSAgICBpbnN0YWxsIC1tIDY0NCBldGMvcGFtLmQvb3BlbndiZW0gJHtEfS9ldGMvcGFtLmQKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L29wZW53YmVtL2MrK3Byb3ZpZGVycwotICAgIGluc3RhbGwgLWQgJHtEfS92YXIvbGliL29wZW53YmVtCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS8ke1NPVVJDRTJ9ICR7RH0vdXNyL2Jpbi9vdy1sb2FkbW9mLnNoCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS8ke1NPVVJDRTN9ICR7RH0vdXNyL2Jpbi9vdy1ybW1vZi5zaAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtTT1VSQ0U1fSAke0R9L2V0Yy9wYW0uZC9vcGVud2JlbQotCi0gICAgTU9GUEFUSD0ke0R9L3Vzci9zaGFyZS9tb2Yvb3BlbndiZW0KLSAgICBpbnN0YWxsIC1kICRNT0ZQQVRICi0gICAgbXYgJHtEfS91c3Ivc2hhcmUvb3BlbndiZW0vKiAkTU9GUEFUSC8KLSAgICBybWRpciAke0R9L3Vzci9zaGFyZS9vcGVud2JlbQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtTT1VSQ0UxfSAkTU9GUEFUSC8KLQotICAgIHRvdWNoICR7RH0vdmFyL2xpYi9vcGVud2JlbS97Y2xhc3Nhc3NvY2lhdGlvbixpbnN0YW5jZXMsaW5zdGFzc29jaWF0aW9uLG5hbWVzcGFjZXMsc2NoZW1hfS57ZGF0LG5keCxsb2NrfQotfQotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmZpbHRlcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicsICdzeXN0ZW1kJywgZCl9Ci1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3djaW1vbWQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfSBcCi0gICAgJHtkYXRhZGlyfS9tb2YgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfSBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L29wZW53YmVtL2MrK3Byb3ZpZGVycy8uZGVidWcgXAotICAgICR7bGliZGlyfS9vcGVud2JlbS9wcm92aWZjcy8uZGVidWcgXAotICAgICR7bGliZGlyfS9vcGVud2JlbS9iaW4vb3BlbndiZW0vLmRlYnVnIFwKLSIKLUZJTEVTXyR7UE59LWRldiA9ICIgXAotICAgICR7aW5jbHVkZWRpcn0gXAotICAgICR7ZGF0YWRpcn0vYWNsb2NhbC9vcGVud2JlbS5tNCBcCi0iCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzY4NjMwLwotUE5CTEFDS0xJU1Rbb3BlbndiZW1dID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BhbS1wYXNzd2RxYy9maWxlcy8xMDAwcGF0Y2gtMjE5MjAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvZmlsZXMvMTAwMHBhdGNoLTIxOTIwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY2ZDQ2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BhbS1wYXNzd2RxYy9maWxlcy8xMDAwcGF0Y2gtMjE5MjAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLWRpZmYgLXVyTnAgcGFtX3Bhc3N3ZHFjLTEuMC41LW9yaWcvcGFtX3Bhc3N3ZHFjLmMgcGFtX3Bhc3N3ZHFjLTEuMC41L3BhbV9wYXNzd2RxYy5jCi0tLS0gcGFtX3Bhc3N3ZHFjLTEuMC41LW9yaWcvcGFtX3Bhc3N3ZHFjLmMJMjAwOC0wMi0xMiAxNToxMToxMy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBwYW1fcGFzc3dkcWMtMS4wLjUvcGFtX3Bhc3N3ZHFjLmMJMjAwOS0wOS0yOCAxMjoxMDozMi4xNzE2OTY2OTQgLTA0MDAKLUBAIC03MCw2ICs3MCw4IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAJcGFzc3dkcWNfcGFyYW1zX3QgcWM7Ci0gCWludCBmbGFnczsKLSAJaW50IHJldHJ5OwotKwljaGFyIG9sZHBhc3NfcHJvbXB0X2ZpbGVbRklMRV9MRU4rMV07Ci0rCWNoYXIgbmV3cGFzc19wcm9tcHRfZmlsZVtGSUxFX0xFTisxXTsKLSB9IHBhcmFtc190OwotIAotIHN0YXRpYyBwYXJhbXNfdCBkZWZhdWx0cyA9IHsKLUBAIC03OSwxMCArODEsMTMgQEAgc3RhdGljIHBhcmFtc190IGRlZmF1bHRzID0gewotIAkJMywJCQkJLyogcGFzc3BocmFzZV93b3JkcyAqLwotIAkJNCwJCQkJLyogbWF0Y2hfbGVuZ3RoICovCi0gCQkxLAkJCQkvKiBzaW1pbGFyX2RlbnkgKi8KLS0JCTQyCQkJCS8qIHJhbmRvbV9iaXRzICovCi0rCQk0MiwJCQkJLyogcmFuZG9tX2JpdHMgKi8KLSsJCTEJCQkJLyogZmlyc3R1cHBlcl9sYXN0ZGlnaXRfY2hlY2sgKi8KLSAJfSwKLSAJRl9FTkZPUkNFX0VWRVJZT05FLAkJCS8qIGZsYWdzICovCi0tCTMJCQkJCS8qIHJldHJ5ICovCi0rCTMsCQkJCQkvKiByZXRyeSAqLwotKwkiIiwJCQkJCS8qIG9sZHBhc3NfcHJvbXB0X2ZpbGUgKi8KLSsJIiIJCQkJCS8qIG5ld3Bhc3NfcHJvbXB0X2ZpbGUgKi8KLSB9OwotIAotICNkZWZpbmUgUFJPTVBUX09MRFBBU1MgXAotQEAgLTM2MSw2ICszNjYsMzcgQEAgc3RhdGljIGludCBwYXJzZShwYXJhbXNfdCAqcGFyYW1zLCBwYW1faAotIAkJaWYgKCFzdHJjbXAoKmFyZ3YsICJ1c2VfYXV0aHRvayIpKSB7Ci0gCQkJcGFyYW1zLT5mbGFncyB8PSBGX1VTRV9BVVRIVE9LOwotIAkJfSBlbHNlCi0rCQlpZiAoIXN0cmNtcCgqYXJndiwgImRpc2FibGVfZmlyc3R1cHBlcl9sYXN0ZGlnaXRfY2hlY2siKSkgewotKwkJCXBhcmFtcy0+cWMuZmlyc3R1cHBlcl9sYXN0ZGlnaXRfY2hlY2sgPSAwOwotKwkJfSBlbHNlCi0rCQlpZiAoIXN0cm5jbXAoKmFyZ3YsICJvbGRwYXNzX3Byb21wdF9maWxlPSIsIDIwKSkgewotKwkJCWludCBuOwotKwkJCUZJTEUgKmZwID0gZm9wZW4oKmFyZ3YgKyAyMCwgInIiKTsKLSsJCQlpZiAoZnApIHsKLSsJCQkJbj1mcmVhZChwYXJhbXMtPm9sZHBhc3NfcHJvbXB0X2ZpbGUsIHNpemVvZihjaGFyKSwgRklMRV9MRU4sIGZwKTsKLSsJCQkJaWYgKDA9PW4gfHwgZmVycm9yKGZwKSE9MCApIHsKLSsJCQkJCW1lbXNldChwYXJhbXMtPm9sZHBhc3NfcHJvbXB0X2ZpbGUsICdcMCcsIEZJTEVfTEVOKzEpOwotKwkJCQl9Ci0rCQkJCWVsc2UgewotKwkJCQkJZmVvZihmcCk/IChwYXJhbXMtPm9sZHBhc3NfcHJvbXB0X2ZpbGVbbi0xXT0nXDAnKTogKHBhcmFtcy0+b2xkcGFzc19wcm9tcHRfZmlsZVtuXT0nXDAnKTsKLSsJCQkJfQotKwkJCQlmY2xvc2UoZnApOwotKwkJCX0KLSsJCX0gZWxzZQotKwkJaWYgKCFzdHJuY21wKCphcmd2LCAibmV3cGFzc19wcm9tcHRfZmlsZT0iLCAyMCkpIHsKLSsJCQlpbnQgbjsKLSsJCQlGSUxFICpmcCA9IGZvcGVuKCphcmd2ICsgMjAsICJyIik7Ci0rCQkJaWYgKGZwKSB7Ci0rCQkJCW49ZnJlYWQocGFyYW1zLT5uZXdwYXNzX3Byb21wdF9maWxlLCBzaXplb2YoY2hhciksIEZJTEVfTEVOLCBmcCk7Ci0rCQkJCWlmICgwPT1uIHx8IGZlcnJvcihmcCkhPTAgKSB7Ci0rCQkJCQltZW1zZXQocGFyYW1zLT5uZXdwYXNzX3Byb21wdF9maWxlLCAnXDAnLCBGSUxFX0xFTisxKTsKLSsJCQkJfQotKwkJCQllbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVvZihmcCk/IChwYXJhbXMtPm5ld3Bhc3NfcHJvbXB0X2ZpbGVbbi0xXT0nXDAnKTogKHBhcmFtcy0+bmV3cGFzc19wcm9tcHRfZmlsZVtuXT0nXDAnKTsKLSsJCQkJfQotKwkJCQlmY2xvc2UoZnApOwotKwkJCX0KLSsJCX0gZWxzZQotIAkJCWJyZWFrOwotIAkJYXJnYy0tOyBhcmd2Kys7Ci0gCX0KLUBAIC00MDYsNyArNDQyLDcgQEAgUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2NoYXV0aHRvayhwYW1faGFuZAotIAotIAlpZiAoYXNrX29sZGF1dGh0b2sgJiYgIWFtX3Jvb3QocGFtaCkpIHsKLSAJCXN0YXR1cyA9IGNvbnZlcnNlKHBhbWgsIFBBTV9QUk9NUFRfRUNIT19PRkYsCi0tCQkgICAgUFJPTVBUX09MRFBBU1MsICZyZXNwKTsKLSsJCSAgICBzdHJsZW4ocGFyYW1zLm9sZHBhc3NfcHJvbXB0X2ZpbGUpID8gcGFyYW1zLm9sZHBhc3NfcHJvbXB0X2ZpbGUgOiBQUk9NUFRfT0xEUEFTUywgJnJlc3ApOwotIAotIAkJaWYgKHN0YXR1cyA9PSBQQU1fU1VDQ0VTUykgewotIAkJCWlmIChyZXNwICYmIHJlc3AtPnJlc3ApIHsKLUBAIC01NDAsOCArNTc2LDcgQEAgcmV0cnk6Ci0gCQkgICAgTUVTU0FHRV9SQU5ET01GQUlMRUQgOiBNRVNTQUdFX01JU0NPTkZJR1VSRUQpOwotIAkJcmV0dXJuIFBBTV9BVVRIVE9LX0VSUjsKLSAJfQotLQotLQlzdGF0dXMgPSBjb252ZXJzZShwYW1oLCBQQU1fUFJPTVBUX0VDSE9fT0ZGLCBQUk9NUFRfTkVXUEFTUzEsICZyZXNwKTsKLSsJc3RhdHVzID0gY29udmVyc2UocGFtaCwgUEFNX1BST01QVF9FQ0hPX09GRiwgc3RybGVuKHBhcmFtcy5uZXdwYXNzX3Byb21wdF9maWxlKSA/IHBhcmFtcy5uZXdwYXNzX3Byb21wdF9maWxlIDogUFJPTVBUX05FV1BBU1MxLCAmcmVzcCk7Ci0gCWlmIChzdGF0dXMgPT0gUEFNX1NVQ0NFU1MgJiYgKCFyZXNwIHx8ICFyZXNwLT5yZXNwKSkKLSAJCXN0YXR1cyA9IFBBTV9BVVRIVE9LX0VSUjsKLSAKLWRpZmYgLXVyTnAgcGFtX3Bhc3N3ZHFjLTEuMC41LW9yaWcvcGFzc3dkcWNfY2hlY2suYyBwYW1fcGFzc3dkcWMtMS4wLjUvcGFzc3dkcWNfY2hlY2suYwotLS0tIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL3Bhc3N3ZHFjX2NoZWNrLmMJMjAwOC0wMi0xMiAxNDozMTo1Mi4wMDAwMDAwMDAgLTA1MDAKLSsrKyBwYW1fcGFzc3dkcWMtMS4wLjUvcGFzc3dkcWNfY2hlY2suYwkyMDA5LTA5LTI1IDIyOjQ1OjE2LjA4MDg0MjQyNSAtMDQwMAotQEAgLTkwLDEwICs5MCwxMiBAQCBzdGF0aWMgaW50IGlzX3NpbXBsZShwYXNzd2RxY19wYXJhbXNfdCAqCi0gCi0gLyogVXBwZXIgY2FzZSBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdXNlZCBpbiBjb21tb24gd2F5cyBkb24ndCBpbmNyZWFzZSB0aGUKLSAgKiBzdHJlbmd0aCBvZiBhIHBhc3N3b3JkICovCi0tCWMgPSAodW5zaWduZWQgY2hhciluZXdwYXNzWzBdOwotLQlpZiAodXBwZXJzICYmIGlzYXNjaWkoYykgJiYgaXN1cHBlcihjKSkgdXBwZXJzLS07Ci0tCWMgPSAodW5zaWduZWQgY2hhciluZXdwYXNzW2xlbmd0aCAtIDFdOwotLQlpZiAoZGlnaXRzICYmIGlzYXNjaWkoYykgJiYgaXNkaWdpdChjKSkgZGlnaXRzLS07Ci0rCWlmIChwYXJhbXMtPmZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrKSB7Ci0rCQljID0gKHVuc2lnbmVkIGNoYXIpbmV3cGFzc1swXTsKLSsJCWlmICh1cHBlcnMgJiYgaXNhc2NpaShjKSAmJiBpc3VwcGVyKGMpKSB1cHBlcnMtLTsKLSsJCWMgPSAodW5zaWduZWQgY2hhciluZXdwYXNzW2xlbmd0aCAtIDFdOwotKwkJaWYgKGRpZ2l0cyAmJiBpc2FzY2lpKGMpICYmIGlzZGlnaXQoYykpIGRpZ2l0cy0tOwotKwl9Ci0gCi0gLyogQ291bnQgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgY2hhcmFjdGVyIGNsYXNzZXMgd2UndmUgc2Vlbi4gIFdlIGFzc3VtZQotICAqIHRoYXQgdGhlcmUgYXJlIG5vIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGZvciBkaWdpdHMuICovCi1kaWZmIC11ck5wIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL3Bhc3N3ZHFjLmggcGFtX3Bhc3N3ZHFjLTEuMC41L3Bhc3N3ZHFjLmgKLS0tLSBwYW1fcGFzc3dkcWMtMS4wLjUtb3JpZy9wYXNzd2RxYy5oCTIwMDgtMDItMTIgMTQ6MzA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgcGFtX3Bhc3N3ZHFjLTEuMC41L3Bhc3N3ZHFjLmgJMjAwOS0wOS0yNSAxNDowODo1Ni4yMTQ2OTU4NTggLTA0MDAKLUBAIC03LDEyICs3LDE1IEBACi0gCi0gI2luY2x1ZGUgPHB3ZC5oPgotIAotKyNkZWZpbmUgRklMRV9MRU4JCTQwOTYJLyogTWF4IGZpbGUgbGVuID0gNDA5NiAqLwotKwotIHR5cGVkZWYgc3RydWN0IHsKLSAJaW50IG1pbls1XSwgbWF4OwotIAlpbnQgcGFzc3BocmFzZV93b3JkczsKLSAJaW50IG1hdGNoX2xlbmd0aDsKLSAJaW50IHNpbWlsYXJfZGVueTsKLSAJaW50IHJhbmRvbV9iaXRzOwotKwlpbnQgZmlyc3R1cHBlcl9sYXN0ZGlnaXRfY2hlY2s7Ci0gfSBwYXNzd2RxY19wYXJhbXNfdDsKLSAKLSBleHRlcm4gY2hhciBfcGFzc3dkcWNfd29yZHNldF80a1sweDEwMDBdWzZdOwotZGlmZiAtdXJOcCBwYW1fcGFzc3dkcWMtMS4wLjUtb3JpZy9SRUFETUUgcGFtX3Bhc3N3ZHFjLTEuMC41L1JFQURNRQotLS0tIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL1JFQURNRQkyMDA4LTAyLTEyIDE0OjQzOjMzLjAwMDAwMDAwMCAtMDUwMAotKysrIHBhbV9wYXNzd2RxYy0xLjAuNS9SRUFETUUJMjAwOS0wOS0yOCAxMjoxMjo0MC4yNTEwMTY0MjMgLTA0MDAKLUBAIC00MSw5ICs0MSwxMiBAQCB3b3JkcyAoc2VlIHRoZSAicGFzc3BocmFzZSIgb3B0aW9uIGJlbG93Ci0gTjMgYW5kIE40IGFyZSB1c2VkIGZvciBwYXNzd29yZHMgY29uc2lzdGluZyBvZiBjaGFyYWN0ZXJzIGZyb20gdGhyZWUKLSBhbmQgZm91ciBjaGFyYWN0ZXIgY2xhc3NlcywgcmVzcGVjdGl2ZWx5LgotIAotKwlkaXNhYmxlX2ZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrCVtdCi0rCi0gV2hlbiBjYWxjdWxhdGluZyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlciBjbGFzc2VzLCB1cHBlci1jYXNlIGxldHRlcnMKLSB1c2VkIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGRpZ2l0cyB1c2VkIGFzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhCi0tcGFzc3dvcmQgYXJlIG5vdCBjb3VudGVkLgotK3Bhc3N3b3JkIGFyZSBub3QgY291bnRlZC4gVG8gZGlzYWJsZSB0aGlzLCB5b3UgY2FuIHNwZWNpZnkgCi0rImRpc2FibGVfZmlyc3R1cHBlcl9sYXN0ZGlnaXRfY2hlY2siLgotIAotIEluIGFkZGl0aW9uIHRvIGJlaW5nIHN1ZmZpY2llbnRseSBsb25nLCBwYXNzd29yZHMgYXJlIHJlcXVpcmVkIHRvCi0gY29udGFpbiBlbm91Z2ggZGlmZmVyZW50IGNoYXJhY3RlcnMgZm9yIHRoZSBjaGFyYWN0ZXIgY2xhc3NlcyBhbmQKLUBAIC0xNDIsNiArMTQ1LDE0IEBAIFRoaXMgZGlzYWJsZXMgdXNlciBpbnRlcmFjdGlvbiB3aXRoaW4gcGEKLSB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gInVzZV9maXJzdF9wYXNzIiBhbmQgInVzZV9hdXRodG9rIiBpcyB0aGF0Ci0gdGhlIGZvcm1lciBpcyBpbmNvbXBhdGlibGUgd2l0aCAiYXNrX29sZGF1dGh0b2siLgotIAotKwlvbGRwYXNzX3Byb21wdF9maWxlPWFic29sdXRlLWZpbGUtcGF0aAlbXQotKwluZXdwYXNzX3Byb21wdF9maWxlPWFib3N1bHRlLWZpbGUtcGF0aAlbXQotKwotK1RoZSBvcHRpb25zICJvbGRwYXNzX3Byb21wdF9maWxlIiBhbmQgIm5ld3Bhc3NfcHJvbXB0X2ZpbGUiIGNhbiBiZSB1c2VkCi0rdG8gb3ZlcnJpZGUgcHJvbXB0cyB3aGlsZSByZXF1ZXN0aW5nIG9sZCBwYXNzd29yZCBhbmQgbmV3IHBhc3N3b3JkLCAKLStyZXNwZWN0aXZlbHkuIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHByb21wdCBmaWxlcyBjYW4gYmUgNDA5NiAKLStjaGFyYWN0ZXJzIGF0IHByZXNlbnQuIElmIHRoZSBmaWxlIHNpemUgaXMgbW9yZSB0aGFuIDQwOTYgY2hhcmFjdGVycywgdGhlCi0rb3V0cHV0IHdpbGwgYmUgdHJ1bmNhdGVkIHRvIDQwOTYgY2hhcmFjdGVycy4KLSAtLSAKLSBTb2xhciBEZXNpZ25lciA8c29sYXIgYXQgb3BlbndhbGwuY29tPgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvZmlsZXMvNzAwME1ha2VmaWxlLWZpeC1DQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFtLXBhc3N3ZHFjL2ZpbGVzLzcwMDBNYWtlZmlsZS1maXgtQ0MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNmZiYTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvZmlsZXMvNzAwME1ha2VmaWxlLWZpeC1DQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBwYW1fcGFzc3dkcWMtMS4wLjUvTWFrZWZpbGUub3JpZwkyMDEyLTEwLTAyIDIwOjUzOjU1LjQ0MzU5Mjg4NiArMDkwMAotKysrIHBhbV9wYXNzd2RxYy0xLjAuNS9NYWtlZmlsZQkyMDEyLTEwLTAyIDIwOjU0OjE5LjA3NjEwODAwMSArMDkwMAotQEAgLTIsNyArMiw3IEBACi0gIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMywyMDA1IGJ5IFNvbGFyIERlc2lnbmVyLiAgU2VlIExJQ0VOU0UuCi0gIwotIAotLUNDID0gZ2NjCi0rI0NDID0gZ2NjCi0gTEQgPSAkKENDKQotIFJNID0gcm0gLWYKLSBNS0RJUiA9IG1rZGlyIC1wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BhbS1wYXNzd2RxYy9wYW0tcGFzc3dkcWNfMS4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BhbS1wYXNzd2RxYy9wYW0tcGFzc3dkcWNfMS4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOWFhMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvcGFtLXBhc3N3ZHFjXzEuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJQbHVnZ2FibGUgcGFzc3dvcmQgcXVhbGl0eS1jb250cm9sIG1vZHVsZS4iCi1ERVNDUklQVElPTiA9ICJwYW1fcGFzc3dkcWMgaXMgYSBzaW1wbGUgcGFzc3dvcmQgc3RyZW5ndGggY2hlY2tpbmcgbW9kdWxlIGZvciBcCi1QQU0tYXdhcmUgcGFzc3dvcmQgY2hhbmdpbmcgcHJvZ3JhbXMsIHN1Y2ggYXMgcGFzc3dkKDEpLiBJbiBhZGRpdGlvbiBcCi10byBjaGVja2luZyByZWd1bGFyIHBhc3N3b3JkcywgaXQgb2ZmZXJzIHN1cHBvcnQgZm9yIHBhc3NwaHJhc2VzIGFuZCBcCi1jYW4gcHJvdmlkZSByYW5kb21seSBnZW5lcmF0ZWQgcGFzc3dvcmRzLiBBbGwgZmVhdHVyZXMgYXJlIG9wdGlvbmFsIFwKLWFuZCBjYW4gYmUgKHJlLSljb25maWd1cmVkIHdpdGhvdXQgcmVidWlsZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tL3Bhc3N3ZHFjLyIKLVNFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0Jhc2UiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTI4NGQwMTNlZjA4ZTY2ZDQ3MzdmNDQ2YzU4OTA1NTAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVud2FsbC5jb20vcGFtL21vZHVsZXMvcGFtX3Bhc3N3ZHFjL3BhbV9wYXNzd2RxYy0xLjAuNS50YXIuZ3ogXAotICAgIGZpbGU6Ly8xMDAwcGF0Y2gtMjE5MjAxLnBhdGNoIFwKLSAgICBmaWxlOi8vNzAwME1ha2VmaWxlLWZpeC1DQy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiY2Q5YzAxNGY3MzYxNThiMWE2MDM4NGE4ZTJiZGMyOGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzI1MjhkZGY3ZDgyMTljNzg4YjZlNzcwMjM2MTYxMWZmMTZjNjM0MGI2ZGMwZjQxOGZmMTY0YWFkYzRhNGE4OCIKLQotCi1TID0gIiR7V09SS0RJUn0vcGFtX3Bhc3N3ZHFjLSR7UFZ9IgotCi1ERVBFTkRTID0gImxpYnBhbSIKLQotRVhUUkFfT0VNQUtFID0gIkNGTEFHUz0iJHtDRkxBR1N9IC1XYWxsIC1mUElDIC1ESEFWRV9TSEFET1ciIFwKLSAgICBTRUNVUkVESVI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW1fcGFzc3dkcWMuc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxYy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwMjM0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorQWRkIExERkxBR1MgdmFyaWFibGUgdG8gTWFrZWZpbGUgc28gdGhhdCBleHRyYSBsaW5rZXIgZmxhZ3MgY2FuIGJlIHNlbnQgdmlhIHRoaXMgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA0OWQ2MjJkLi5jZDE3MzM0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNDgsMTggKzQ4LDE3IEBAIENGTEFHUyA9IC1XYWxsIC1XIC1PMgorIENGTEFHU19saWIgPSAkKENGTEFHUykgLWZQSUMKKyBDRkxBR1NfYmluID0gJChDRkxBR1MpIC1mb21pdC1mcmFtZS1wb2ludGVyCisgCistTERGTEFHUyA9CisgTERGTEFHU19zaGFyZWQgPSAtLXNoYXJlZAorIExERkxBR1Nfc2hhcmVkX0xJTlVYID0gLS1zaGFyZWQKKyBMREZMQUdTX3NoYXJlZF9TVU4gPSAtRworIExERkxBR1Nfc2hhcmVkX0hQID0gLWIKKyBMREZMQUdTX2xpYiA9ICQoTERGTEFHU19zaGFyZWQpCistTERGTEFHU19saWJfTElOVVggPSAkKExERkxBR1Nfc2hhcmVkX0xJTlVYKSBcCisrTERGTEFHU19saWJfTElOVVggPSAkKExERkxBR1MpICQoTERGTEFHU19zaGFyZWRfTElOVVgpIFwKKyAJLVdsLC0tc29uYW1lLCQoU0hBUkVEX0xJQiksLS12ZXJzaW9uLXNjcmlwdCwkKE1BUF9MSUIpCisgTERGTEFHU19saWJfU1VOID0gJChMREZMQUdTX3NoYXJlZF9TVU4pCisgTERGTEFHU19saWJfSFAgPSAkKExERkxBR1Nfc2hhcmVkX0hQKQorIExERkxBR1NfcGFtID0gJChMREZMQUdTX3NoYXJlZCkKKy1MREZMQUdTX3BhbV9MSU5VWCA9ICQoTERGTEFHU19zaGFyZWRfTElOVVgpIFwKKytMREZMQUdTX3BhbV9MSU5VWCA9ICQoTERGTEFHUykgJChMREZMQUdTX3NoYXJlZF9MSU5VWCkgXAorIAktV2wsLS12ZXJzaW9uLXNjcmlwdCwkKE1BUF9QQU0pCisgTERGTEFHU19wYW1fU1VOID0gJChMREZMQUdTX3NoYXJlZF9TVU4pCisgTERGTEFHU19wYW1fSFAgPSAkKExERkxBR1Nfc2hhcmVkX0hQKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4ZGIzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJBIHBhc3N3b3JkL3Bhc3NwaHJhc2Ugc3RyZW5ndGggY2hlY2tpbmcgYW5kIGVuZm9yY2VtZW50IHRvb2xzZXQiCitERVNDUklQVElPTiA9ICJcCitwYXNzd2RxYyBpcyBhIHBhc3N3b3JkL3Bhc3NwaHJhc2Ugc3RyZW5ndGggY2hlY2tpbmcgYW5kIHBvbGljeSBlbmZvcmNlbWVudCBcCit0b29sc2V0LCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgUEFNIG1vZHVsZSAocGFtX3Bhc3N3ZHFjKSwgY29tbWFuZC1saW5lIFwKK3Byb2dyYW1zIChwd3FjaGVjayBhbmQgcHdxZ2VuKSwgYW5kIGEgbGlicmFyeSAobGlicGFzc3dkcWMpLiBcCitwYW1fcGFzc3dkcWMgaXMgbm9ybWFsbHkgaW52b2tlZCBvbiBwYXNzd29yZCBjaGFuZ2VzIGJ5IHByb2dyYW1zIHN1Y2ggYXMgXAorcGFzc3dkKDEpLiAgSXQgaXMgY2FwYWJsZSBvZiBjaGVja2luZyBwYXNzd29yZCBvciBwYXNzcGhyYXNlIHN0cmVuZ3RoLCBcCitlbmZvcmNpbmcgYSBwb2xpY3ksIGFuZCBvZmZlcmluZyByYW5kb21seS1nZW5lcmF0ZWQgcGFzc3BocmFzZXMsIHdpdGggXAorYWxsIG9mIHRoZXNlIGZlYXR1cmVzIGJlaW5nIG9wdGlvbmFsIGFuZCBlYXNpbHkgKHJlLSljb25maWd1cmFibGUuIFwKK1wKK3B3cWNoZWNrIGFuZCBwd3FnZW4gYXJlIHN0YW5kYWxvbmUgcGFzc3dvcmQvcGFzc3BocmFzZSBzdHJlbmd0aCBjaGVja2luZyBcCithbmQgcmFuZG9tIHBhc3NwaHJhc2UgZ2VuZXJhdG9yIHByb2dyYW1zLCByZXNwZWN0aXZlbHksIHdoaWNoIGFyZSB1c2FibGUgXAorZnJvbSBzY3JpcHRzLiBcCitcCitsaWJwYXNzd2RxYyBpcyB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LCB3aGljaCBtYXkgYWxzbyBiZSB1c2VkIGZyb20gXAordGhpcmQtcGFydHkgcHJvZ3JhbXMuIFwKKyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVud2FsbC5jb20vcGFzc3dkcWMiCitTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgorCitERVBFTkRTICs9ICJsaWJwYW0iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWI0YWY2ZjNkNGVlMDc5YTM4MTA3MzY2ZTkzYjMzNGQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVud2FsbC5jb20vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjM4NzhiNTdiY2QzZmRiY2YzZDRiMzYyZGJjNjIyOGI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxZmVkZWFmNzU5ZThhMGYzMmQyOGI1ODExZWYxMWI1YTUzNjUxNTQ4NDkxOTBmNGI3ZmFiNjcwYTcwZmZiMTQiCisKKyMgZXhwbGljaXRseSBkZWZpbmUgTElOVVhfUEFNIGluIGNhc2UgRElTVFJPX0ZFQVRVUkVTIG5vIHBhbQorIyB0aGlzIHBhY2thZ2UncyBwYW1fcGFzc3dkcWMuc28gbmVlZHMgcGFtCitDRkxBR1NfYXBwZW5kICs9ICItV2FsbCAtZlBJQyAtREhBVkVfU0hBRE9XIC1ETElOVVhfUEFNIgorCisjIC1lIGlzIG5vIGxvbmdlciBkZWZhdWx0IHNldHRpbmcgaW4gYml0YmFrZS5jb25mCitFWFRSQV9PRU1BS0UgPSAiLWUiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgIyBtYWtlIHN1cmUgc3ViIG1ha2UgdXNlIGVudmlyb25tZW50IHRvIG92ZXJyaWRlIHZhcmlhYmxlcyBpbiBNYWtlZmlsZQorICAgICMgTGludXgpICAgICQoTUFLRSksIHRoZXJlIGlzIGEgdGFiIGJldHdlZW4KKyAgICBzZWQgLWkgLWUgJ3MvTGludXgpCSQoTUFLRSkgQ0ZMQUdTX2xpYi9MaW51eCkJJChNQUtFKSAtZSBDRkxBR1NfbGliLycgJHtTfS9NYWtlZmlsZQorCisgICAgIyBMRF9saWIgYW5kIExEIG11c3QgYmUgQ0MgYmVjYXVzZSBvZiBNYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgTEQ9IiR7Q0N9IgorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0hBUkVEX0xJQkRJUj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgIERFVkVMX0xJQkRJUj0ke2xpYmRpcn0gU0VDVVJFRElSPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5IFwKKyAgICAgICAgICAgSU5TVEFMTD0iaW5zdGFsbCAtcCIKK30KKworUFJPVklERVMgKz0gInBhbS0ke0JQTn0iCitQQUNLQUdFUyA9KyAibGliJHtCUE59IHBhbS0ke0JQTn0iCisKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9saWJwYXNzd2RxYy5zby4wIgorRklMRVNfcGFtLSR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW1fcGFzc3dkcWMuc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKKworUkRFUEVORFNfJHtQTn0gPSAibGliJHtCUE59IHBhbS0ke0JQTn0iCitSREVQRU5EU19wYW0tJHtCUE59ID0gImxpYiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDJjYjMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlBDL1NDIExpdGUgc21hcnQgY2FyZCBmcmFtZXdvcmsgYW5kIGFwcGxpY2F0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wY3NjbGl0ZS5hbGlvdGguZGViaWFuLm9yZy8iCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1saWIgPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kb2MgPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kZXYgPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfS1zcHkgPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfS1zcHktZGV2ID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJjZmJkODUyMzBhYzNjNTg2ZmIyOTRjOGI2MjdjZjMyIgotREVQRU5EUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9maWxlLzQxMjYvcGNzYy1saXRlLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGRjZDIyZDIwYTZkZjg4MTBmYWM1NDgwY2MzMjBiNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjMxNTA0N2U4MDhkNjNhMzI2MmM0YTA0MGY3NzU0OGFmMmUwNGQxZmQ3MDdlMGMyNzU5MzY5YjkyNmZiYmMzYiIKLQotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtbGlidXNiIFwKLSAgICAtLWVuYWJsZS1saWJ1ZGV2IFwKLSAgICAtLWVuYWJsZS11c2Jkcm9wZGlyPSR7bGliZGlyfS9wY3NjL2RyaXZlcnMgXAotIgotCi1TID0gIiR7V09SS0RJUn0vcGNzYy1saXRlLSR7UFZ9IgotCi1QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LWxpYiAke1BOfS1kb2MgJHtQTn0tc3B5ICR7UE59LXNweS1kZXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImNjaWQiCi0KLUZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vcGNzY2QiCi1GSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYnBjc2NsaXRlKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY2xpdGUubGEgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3NjbGl0ZS5zbyIKLSAgICAgICAgICAgICAgICAgICAKLUZJTEVTXyR7UE59LXNweSA9ICIke2JpbmRpcn0vcGNzYy1zcHkgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3Njc3B5KiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LXNweS1kZXYgPSAiJHtsaWJkaXJ9L2xpYnBjc2NzcHkubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY3NweS5zbyAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicGNzY2Quc29ja2V0IgotUkRFUEVORFNfJHtQTn0tc3B5ICs9InB5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZDU4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjIyLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiUEMvU0MgTGl0ZSBzbWFydCBjYXJkIGZyYW1ld29yayBhbmQgYXBwbGljYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3Bjc2NsaXRlLmFsaW90aC5kZWJpYW4ub3JnLyIKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWxpYiA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRvYyA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRldiA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QgJiBHUEx2MysiCitMSUNFTlNFXyR7UE59LXNweSA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59LXNweS1kZXYgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjM4YjNkMWM3ZWY3ZmMyYzhiNmQyMGNkMzhlZmRjMjkiCitERVBFTkRTID0gInVkZXYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvZG93bmxvYWQucGhwL2ZpbGUvNDIyNS9wY3NjLWxpdGUtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZWMxMDNiMWVmMjk4ZDBjNThkNmVmNmIwMGI5Y2YxNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YTM1OGY2MWVkM2I2NmE3ZjZlMWY0ZTc5NGE5NGM3YmU0YzgxYjdhNThlYzM2MGMzMzc5MWU4ZDdkOWJkNDA1IgorCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1saWJ1c2IgXAorICAgIC0tZW5hYmxlLWxpYnVkZXYgXAorICAgIC0tZW5hYmxlLXVzYmRyb3BkaXI9JHtsaWJkaXJ9L3Bjc2MvZHJpdmVycyBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9wY3NjLWxpdGUtJHtQVn0iCisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tbGliICR7UE59LWRvYyAke1BOfS1zcHkgJHtQTn0tc3B5LWRldiIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiY2NpZCIKKworRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9wY3NjZCIKK0ZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGlicGNzY2xpdGUqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3NjbGl0ZS5sYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnBjc2NsaXRlLnNvIgorICAgICAgICAgICAgICAgICAgIAorRklMRVNfJHtQTn0tc3B5ID0gIiR7YmluZGlyfS9wY3NjLXNweSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnBjc2NzcHkqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tc3B5LWRldiA9ICIke2xpYmRpcn0vbGlicGNzY3NweS5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3Njc3B5LnNvICIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwY3NjZC5zb2NrZXQiCitSREVQRU5EU18ke1BOfS1zcHkgKz0icHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyL2ZpeF9xYS1pc3N1ZV9pbmNsdWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyL2ZpeF9xYS1pc3N1ZV9pbmNsdWRlLnBhdGNoCmluZGV4IGI3ODY2MzMuLmVjZGJmZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9maXhfcWEtaXNzdWVfaW5jbHVkZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHIvZml4X3FhLWlzc3VlX2luY2x1ZGUucGF0Y2gKQEAgLTExLDggKzExLDggQEAKIC0tLSBhL3Rvb2xraXQvTWFrZWZpbGUuYW0JMjAxMi0wNS0wMyAxNTo1MjoyMi4wMDAwMDAwMDAgKzAyMDAKICsrKyBiL3Rvb2xraXQvTWFrZWZpbGUuYW0JMjAxNC0wMS0xMyAxMjoxMjoyNi4wMzAzNjkzNTcgKzAxMDAKIEBAIC0xLDQgKzEsNCBAQAotLUlOQ0xVREVTID0gLUkkKGluY2x1ZGVkaXIpIC1JLi4vc3JjIEBMSUJHQ1JZUFRfQ0ZMQUdTQAotK0lOQ0xVREVTID0gLUkuLi9zcmMgQExJQkdDUllQVF9DRkxBR1NACistQU1fQ1BQRkxBR1MgPSAtSSQoaW5jbHVkZWRpcikgLUkuLi9zcmMgQExJQkdDUllQVF9DRkxBR1NACisrQU1fQ1BQRkxBR1MgPSAtSS4uL3NyYyBATElCR0NSWVBUX0NGTEFHU0AKICAKICBub2luc3RfSEVBREVSUyA9IGFlcy5oIGN0cm1vZGUuaCBwYXJzZS5oIHNlc3NrZXlzLmggcmVhZG90ci5oIHNoYTFobWFjLmgKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9zZXBidWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9zZXBidWlsZC5wYXRjaAppbmRleCBmNjZlNTI4Li5kZGExN2E5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHIvc2VwYnVpbGQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyL3NlcGJ1aWxkLnBhdGNoCkBAIC05LDggKzksOCBAQAogLS0tIGxpYm90ci00LjAuMC5vcmlnL3Rvb2xraXQvTWFrZWZpbGUuYW0JMjAxNC0wNy0xNiAxODowOTo1OS43Nzc4NTgwMjIgKzAwMDAKICsrKyBsaWJvdHItNC4wLjAvdG9vbGtpdC9NYWtlZmlsZS5hbQkyMDE0LTA3LTE3IDA2OjI4OjUxLjM1OTA2NjE1NSArMDAwMAogQEAgLTEsNCArMSw0IEBACi0tSU5DTFVERVMgPSAtSS4uL3NyYyBATElCR0NSWVBUX0NGTEFHU0AKLStJTkNMVURFUyA9IC1JJCh0b3Bfc3JjZGlyKS9zcmMgQExJQkdDUllQVF9DRkxBR1NACistQU1fQ1BQRkxBR1MgPSAtSS4uL3NyYyBATElCR0NSWVBUX0NGTEFHU0AKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9zcmMgQExJQkdDUllQVF9DRkxBR1NACiAgCiAgbm9pbnN0X0hFQURFUlMgPSBhZXMuaCBjdHJtb2RlLmggcGFyc2UuaCBzZXNza2V5cy5oIHJlYWRvdHIuaCBzaGExaG1hYy5oCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHJfNC4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHJfNC4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkOWVlYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyXzQuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICIoT1RSKSBNZXNzYWdpbmcgYWxsb3dzIHlvdSB0byBoYXZlIHByaXZhdGUgY29udmVyc2F0aW9ucyBvdmVyIGluc3RhbnQgbWVzc2FnaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jeXBoZXJwdW5rcy5jYS9vdHIvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkyZmUxNzRiYWQ2ZGEzNzYzZjZlOWU5ZWFmZjZkZjI0IgotREVQRU5EUyA9ICJsaWJnY3J5cHQgbGliZ3BnLWVycm9yIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3lwaGVycHVua3MuY2Evb3RyLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfcWEtaXNzdWVfaW5jbHVkZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXBidWlsZC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMDk3OWRjYTgyZDcwMzgzZmNkMWIwMWYzOTc0MzYzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjkxMTk5NDQwOTg5OGU3NDUyNzczMDc0NWVmMzVlZDc1YzM1MmM2OTVhMTgyMmE2NzdhMzRiMmNmMDI5M2I0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90cl80LjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90cl80LjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzAxMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyXzQuMS4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiKE9UUikgTWVzc2FnaW5nIGFsbG93cyB5b3UgdG8gaGF2ZSBwcml2YXRlIGNvbnZlcnNhdGlvbnMgb3ZlciBpbnN0YW50IG1lc3NhZ2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuY3lwaGVycHVua3MuY2Evb3RyLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MmZlMTc0YmFkNmRhMzc2M2Y2ZTllOWVhZmY2ZGYyNCIKK0RFUEVORFMgPSAibGliZ2NyeXB0IGxpYmdwZy1lcnJvciIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmN5cGhlcnB1bmtzLmNhL290ci8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4X3FhLWlzc3VlX2luY2x1ZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VwYnVpbGQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGFjNWE4Nzc4YTM1ZjY3NGMwNDZkZGY1ZDk3ZTRkODEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGIzYjE4MjQyNDI1MTA2N2E5NTJmYjRlNmM3Yjk1YTIxZTY0NGZiYjI3ZmJkNWY4YWYyYjJlZDg3Y2E0MTlmNSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyL2lnbm9yZV9leHRyYS1wb3J0YWJpbGl0eV93YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHIvaWdub3JlX2V4dHJhLXBvcnRhYmlsaXR5X3dhcm5pbmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjBhZDg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHIvaWdub3JlX2V4dHJhLXBvcnRhYmlsaXR5X3dhcm5pbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcGlkZ2luLW90cjogU2lsZW5jZSBuby1leHRyYS1wb3J0YWJpbGl0eSB3YXJuaW5ncwotCi1NYWtlIGl0IGJ1aWxkIHdpdGggT0UsIHdhcyBub3QgYnVpbGRpbmcgd2l0aCB3YXJuaW5nIHR1cm5lZCBvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSmFrb2IgRHJleGVsIDxqYWtlNDJAcm9tbWVsLnN0dy51bmktZXJsYW5nZW4uZGU+Ci0KLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDEyLTA5LTAxIDE3OjAzOjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTQtMDEtMTIgMjE6NTk6MjQuOTIwMzAwMjE1ICswMTAwCi1AQCAtNCw3ICs0LDcgQEAKLSAKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIAotLUFNX0lOSVRfQVVUT01BS0UoWy1XYWxsIC1XZXJyb3JdKQotK0FNX0lOSVRfQVVUT01BS0UoWy1XYWxsIC1XZXJyb3IgLVduby1leHRyYS1wb3J0YWJpbGl0eV0pCi0gCi0gQUNfUFJPR19DQwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luLW90cl80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHJfNC4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Y2RjNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luLW90cl80LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiKE9UUikgTWVzc2FnaW5nIGFsbG93cyB5b3UgdG8gaGF2ZSBwcml2YXRlIGNvbnZlcnNhdGlvbnMgb3ZlciBpbnN0YW50IG1lc3NhZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY3lwaGVycHVua3MuY2Evb3RyLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MmZlMTc0YmFkNmRhMzc2M2Y2ZTllOWVhZmY2ZGYyNCIKLURFUEVORFMgPSAibGliZ2NyeXB0IGxpYm90ciBwaWRnaW4gaW50bHRvb2wtbmF0aXZlIgotCi1QTkJMQUNLTElTVFtwaWRnaW4tb3RyXSA/PSAiZGVwZW5kcyBvbiBibGFja2xpc3RlZCBwaWRnaW4gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jeXBoZXJwdW5rcy5jYS9vdHIvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2lnbm9yZV9leHRyYS1wb3J0YWJpbGl0eV93YXJuaW5ncy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYWRiOTUzMzc2YWNjNDc0ZTU2MDQxZDRjMTJhYTJjOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNTZiM2YwOTJkYmU5ZWU2NTk3NjQxYzdkMmRkMjk0ODg0ZGMwNGJhNDdhYWY0ZWM1NzFjZDU0OTc3ZGY0NjkxIgotCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9waWRnaW4vKiIKLUZJTEVTXyR7UE59LWRiZyA9ICIke2xpYmRpcn0vcGlkZ2luLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BpZGdpbi8uZGVidWcvcGlkZ2luLW90ci5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiL3Vzci9zcmMvZGVidWcvcGlkZ2luLW90ci8ke1BWfS0ke1BSfS8ke1B9LyoiCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHJfNC4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyXzQuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjFjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyXzQuMC4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiKE9UUikgTWVzc2FnaW5nIGFsbG93cyB5b3UgdG8gaGF2ZSBwcml2YXRlIGNvbnZlcnNhdGlvbnMgb3ZlciBpbnN0YW50IG1lc3NhZ2luZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vb3RyLmN5cGhlcnB1bmtzLmNhLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MmZlMTc0YmFkNmRhMzc2M2Y2ZTllOWVhZmY2ZGYyNCIKK0RFUEVORFMgPSAibGliZ2NyeXB0IGxpYm90ciBwaWRnaW4gZ3RrKyBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwczovL290ci5jeXBoZXJwdW5rcy5jYS8ke0JQfS50YXIuZ3ogXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjdlZjE0ZTEzMzRhNGJjODBlNWQ1MzBmOWEzY2ZjNjI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0YjU5ZWVmNGE5NGIxZDI5ZGJlMGMxMDZkZDAwY2RjNjMwZTQ3ZjE4NjE5ZmM3NTRlNWFmYmY1NzI0ZWJhYzQiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9waWRnaW4vKiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luXzIuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MmUyMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luXzIuMTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1TVU1NQVJZID0gIm11bHRpLXByb3RvY29sIGluc3RhbnQgbWVzc2FnaW5nIGNsaWVudCIKLVNFQ1RJT04gPSAieDExL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gInB5dGhvbiB2aXJ0dWFsL2xpYmludGwgaW50bHRvb2wtbmF0aXZlIGxpYnhtbDIgZ2NvbmYgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBnY29uZiBwZXJsbmF0aXZlCi0KLVNSQ19VUkkgPSAiXAotICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9waWRnaW4vcGlkZ2luLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9zYW5pdGl6ZS1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgIGZpbGU6Ly9wdXJwbGUtT0UtYnJhbmRpbmctMjUucGF0Y2ggXAotICAgIGZpbGU6Ly9waWRnaW4tY3Jvc3MtcHl0aG9uLTI2NS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YjE2NzQ3NGRiNjY5YWFiMmY3MWZhNDY4MzVmYjgzZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNzI2MTM0NDA1ODZkYTNiZGJhNmQ1OGU3MThkY2UxYjJjMzEwYWRmODk0NmRlNjZkODA3NzgyM2U1N2IzMzMzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIGNvbnNvbGV1aSBhdmFoaSBkYnVzIGlkbiBuc3MgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSBndGsgc3RhcnR1cC1ub3RpZmljYXRpb24nLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbZmFyc2lnaHQyXSA9ICItLWVuYWJsZS1mYXJzdHJlYW0sLS1kaXNhYmxlLWZhcnN0cmVhbSxmYXJzaWdodDIiCi0jICAtLWRpc2FibGUtZ3N0cmVhbWVyICAgICBjb21waWxlIHdpdGhvdXQgR1N0cmVhbWVyIGF1ZGlvIHN1cHBvcnQKLSMgIC0tZGlzYWJsZS1nc3RyZWFtZXItdmlkZW8KLSMgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgd2l0aG91dCBHU3RyZWFtZXIgMS4wIFZpZGVvIE92ZXJsYXkgc3VwcG9ydAotIyAgLS1kaXNhYmxlLWdzdHJlYW1lci1pbnRlcmZhY2VzCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIHdpdGhvdXQgR1N0cmVhbWVyIDAuMTAgaW50ZXJmYWNlIHN1cHBvcnQKLSMgIC0td2l0aC1nc3RyZWFtZXI9PHZlcnNpb24+Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIHdpdGggR1N0cmVhbWVyIDAuMTAgb3IgMS4wIGludGVyZmFjZQotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi0tZW5hYmxlLWdzdHJlYW1lciwtLWRpc2FibGUtZ3N0cmVhbWVyLGdzdHJlYW1lciIKLVBBQ0tBR0VDT05GSUdbdnZdID0gIi0tZW5hYmxlLXZ2LC0tZGlzYWJsZS12dixnc3RyZWFtZXIiCi1QQUNLQUdFQ09ORklHW2lkbl0gPSAiLS1lbmFibGUtaWRuLC0tZGlzYWJsZS1pZG4sbGliaWRuIgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWd0a3VpLC0tZGlzYWJsZS1ndGt1aSxndGsrIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14PXllcyAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwtLXdpdGgteD1ubyx2aXJ0dWFsL2xpYngxMSIKLVBBQ0tBR0VDT05GSUdbc3RhcnR1cC1ub3RpZmljYXRpb25dID0gIi0tZW5hYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbixzdGFydHVwLW5vdGlmaWNhdGlvbiIKLVBBQ0tBR0VDT05GSUdbY29uc29sZXVpXSA9ICItLWVuYWJsZS1jb25zb2xldWkgLS13aXRoLW5jdXJzZXMtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSwtLWRpc2FibGUtY29uc29sZXVpLG5jdXJzZXMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzIC0td2l0aC1nbnV0bHMtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWdudXRscy1saWJzPSR7U1RBR0lOR19MSUJESVJ9LC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLGxpYnB1cnBsZS1wbHVnaW4tc3NsLWdudXRscyIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIGRidXMtZ2xpYiIKLVBBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0tZW5hYmxlLWF2YWhpLC0tZGlzYWJsZS1hdmFoaSxhdmFoaSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLWVuYWJsZS1uc3MsLS1kaXNhYmxlLW5zcyxuc3MgbnNwcixsaWJwdXJwbGUtcGx1Z2luLXNzbC1uc3MiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1wZXJsIFwKLSAgICAtLWRpc2FibGUtdGNsIFwKLSAgICAtLWRpc2FibGUtZ2V2b2x1dGlvbiBcCi0gICAgLS1kaXNhYmxlLXNjaGVtYXMtaW5zdGFsbCBcCi0gICAgLS1kaXNhYmxlLWd0a3NwZWxsIFwKLSAgICAtLWRpc2FibGUtbWVhbndoaWxlIFwKLSAgICAtLWRpc2FibGUtbm0gXAotICAgIC0tZGlzYWJsZS1zY3JlZW5zYXZlciBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHRvdWNoICR7U30vcG8vTWFrZWZpbGUKLSAgICBzZWQgLWkgInMjUFlfVkVSU0lPTj1gJFBZVEhPTiAtYyAnaW1wb3J0IHN5cyA7IHByaW50IHN5cy52ZXJzaW9uWzA6M10nYCNQWV9WRVJTSU9OPSR7UFlUSE9OX0JBU0VWRVJTSU9OfSNnIiAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1PRV9MVF9SUEFUSF9BTExPVz0iOiR7bGliZGlyfS9wdXJwbGUtMjoiCi1PRV9MVF9SUEFUSF9BTExPV1tleHBvcnRdPSIxIgotCi1QQUNLQUdFUyA9KyAibGlicHVycGxlLWRiZyBsaWJwdXJwbGUtZGV2IGxpYnB1cnBsZSBsaWJnbnQtZGJnIGxpYmdudCBsaWJnbnQtZGV2IGZpbmNoLWRiZyBmaW5jaCBmaW5jaC1kZXYgJHtQTn0tZGF0YSIKLQotTEVBRF9TT05BTUUgPSAibGlicHVycGxlLnNvLjAiCi1GSUxFU19saWJwdXJwbGUgICAgID0gIiR7bGliZGlyfS9saWJwdXJwbGUqLnNvLiogJHtsaWJkaXJ9L3B1cnBsZS0yICR7YmluZGlyfS9wdXJwbGUtKiAke3N5c2NvbmZkaXJ9L2djb25mL3NjaGVtYXMvcHVycGxlKiAke2RhdGFkaXJ9L3B1cnBsZS9jYS1jZXJ0cyIKLUZJTEVTX2xpYnB1cnBsZS1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB1cnBsZSoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHVycGxlKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3B1cnBsZS0yL2xpYmphYmJlci5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJvc2Nhci5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJ5bXNnLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hY2xvY2FsIgotRklMRVNfbGlicHVycGxlLWRiZyArPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJwdXJwbGUqIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi8uZGVidWciCi1GSUxFU19saWJnbnQgICAgICAgICA9ICIke2xpYmRpcn0vbGliZ250LnNvLiogJHtsaWJkaXJ9L2dudC8qLnNvIgotRklMRVNfbGliZ250LWRldiAgICAgPSAiJHtsaWJkaXJ9L2dudC8qLmxhIgotRklMRVNfbGliZ250LWRiZyAgICAgPSAiJHtsaWJkaXJ9L2dudC8uZGVidWciCi1GSUxFU19maW5jaCAgICAgICAgICA9ICIke2JpbmRpcn0vZmluY2giCi1GSUxFU19maW5jaC1kZXYgICAgICA9ICIke2xpYmRpcn0vZmluY2gvKi5sYSIKLUZJTEVTX2ZpbmNoLWRiZyAgICAgID0gIiR7YmluZGlyfS8uZGVidWcvZmluY2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2ZpbmNoLy5kZWJ1ZyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vJHtQTn0gJHtsaWJkaXJ9LyR7UE59Lyouc28gXAotICAgICAgICAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LWRhdGEgbGlicHVycGxlLXByb3RvY29sLWlyYyBsaWJwdXJwbGUtcHJvdG9jb2wteG1wcCIKLQotRklMRVNfJHtQTn0tZGF0YSA9ICIke2RhdGFkaXJ9L3BpeG1hcHMgJHtkYXRhZGlyfS9zb3VuZHMgJHtkYXRhZGlyfS9pY29ucyAke2RhdGFkaXJ9L2FwcGRhdGEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke1BOfS8qLmxhIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlicHVycGxlLXByb3RvY29sLS4qIF5saWJwdXJwbGUtcGx1Z2luLS4qIF5waWRnaW4tcGx1Z2luLS4qIF5maW5jaC1wbHVnaW4tLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBwaWRncm9vdCA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcGlkZ2luJykKLSAgICBwdXJwbGUgICA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcHVycGxlLTInKQotICAgIGZpbmNoICAgID0gZC5leHBhbmQoJyR7bGliZGlyfS9maW5jaCcpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwaWRncm9vdCwgJ14oW15sXVteaV1bXmJdLiopXC5zbyQnLAotICAgICAgICBvdXRwdXRfcGF0dGVybj0ncGlkZ2luLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdQaWRnaW4gcGx1Z2luICVzJywKLSAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHVycGxlLCAnXmxpYiguKilcLnNvJCcsCi0gICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWJwdXJwbGUtcHJvdG9jb2wtJXMnLAotICAgICAgICBkZXNjcmlwdGlvbj0nTGlicHVycGxlIHByb3RvY29sIHBsdWdpbiBmb3IgJXMnLAotICAgICAgICBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwdXJwbGUsICdeKHNzbC0uKilcLnNvJCcsCi0gICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWJwdXJwbGUtcGx1Z2luLSVzJywKLSAgICAgICAgZGVzY3JpcHRpb249J2xpYnB1cnBsZSBwbHVnaW4gJXMnLAotICAgICAgICBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9J2xpYnB1cnBsZS1wbHVnaW4tc3NsJykKLQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHB1cnBsZSwgJ14oW15sXVteaV1bXmJdLiopXC5zbyQnLAotICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGlicHVycGxlLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdsaWJwdXJwbGUgcGx1Z2luICVzJywKLSAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZmluY2gsICdeKFtebF1bXmldW15iXS4qKVwuc28kJywKLSAgICAgICAgb3V0cHV0X3BhdHRlcm49J2ZpbmNoLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdGaW5jaCBwbHVnaW4gJXMnLAotICAgICAgICBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW5fMi4xMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luXzIuMTIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODhmMDhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luXzIuMTIuMC5iYgpAQCAtMCwwICsxLDEyMCBAQAorU1VNTUFSWSA9ICJtdWx0aS1wcm90b2NvbCBpbnN0YW50IG1lc3NhZ2luZyBjbGllbnQiCitTRUNUSU9OID0gIngxMS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJweXRob24gdmlydHVhbC9saWJpbnRsIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyIGdjb25mIGdsaWItMi4wLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ2NvbmYgcGVybG5hdGl2ZQorCitTUkNfVVJJID0gIlwKKyAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vcGlkZ2luL3BpZGdpbi0ke1BWfS50YXIuYnoyIFwKKyAgICBmaWxlOi8vc2FuaXRpemUtY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICBmaWxlOi8vcHVycGxlLU9FLWJyYW5kaW5nLTI1LnBhdGNoIFwKKyAgICBmaWxlOi8vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODI4NzQwMGM0ZTU2NjNlMGU3ODQ0ZTg2OGQ1MTUyYWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGMzZDM1MzZkNmQzYzk3MWJkNDMzZmY5OTQ2Njc4YWY3MGEwZjZhYTRlNjk2OWNjMmE4M2JiMzU3MDE1YjdmOCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBjb25zb2xldWkgYXZhaGkgZGJ1cyBpZG4gbnNzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgZ3RrIHN0YXJ0dXAtbm90aWZpY2F0aW9uJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2ZhcnNpZ2h0Ml0gPSAiLS1lbmFibGUtZmFyc3RyZWFtLC0tZGlzYWJsZS1mYXJzdHJlYW0sZmFyc2lnaHQyIgorIyAgLS1kaXNhYmxlLWdzdHJlYW1lciAgICAgY29tcGlsZSB3aXRob3V0IEdTdHJlYW1lciBhdWRpbyBzdXBwb3J0CisjICAtLWRpc2FibGUtZ3N0cmVhbWVyLXZpZGVvCisjICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIHdpdGhvdXQgR1N0cmVhbWVyIDEuMCBWaWRlbyBPdmVybGF5IHN1cHBvcnQKKyMgIC0tZGlzYWJsZS1nc3RyZWFtZXItaW50ZXJmYWNlcworIyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRob3V0IEdTdHJlYW1lciAwLjEwIGludGVyZmFjZSBzdXBwb3J0CisjICAtLXdpdGgtZ3N0cmVhbWVyPTx2ZXJzaW9uPgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRoIEdTdHJlYW1lciAwLjEwIG9yIDEuMCBpbnRlcmZhY2UKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3RyZWFtZXIsLS1kaXNhYmxlLWdzdHJlYW1lcixnc3RyZWFtZXIiCitQQUNLQUdFQ09ORklHW3Z2XSA9ICItLWVuYWJsZS12diwtLWRpc2FibGUtdnYsZ3N0cmVhbWVyIgorUEFDS0FHRUNPTkZJR1tpZG5dID0gIi0tZW5hYmxlLWlkbiwtLWRpc2FibGUtaWRuLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGt1aSwtLWRpc2FibGUtZ3RrdWksZ3RrKyIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteD15ZXMgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLS13aXRoLXg9bm8sdmlydHVhbC9saWJ4MTEiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCitQQUNLQUdFQ09ORklHW2NvbnNvbGV1aV0gPSAiLS1lbmFibGUtY29uc29sZXVpIC0td2l0aC1uY3Vyc2VzLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0sLS1kaXNhYmxlLWNvbnNvbGV1aSxuY3Vyc2VzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscyAtLXdpdGgtZ251dGxzLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1nbnV0bHMtbGlicz0ke1NUQUdJTkdfTElCRElSfSwtLWRpc2FibGUtZ251dGxzLGdudXRscyxsaWJwdXJwbGUtcGx1Z2luLXNzbC1nbnV0bHMiCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyBkYnVzLWdsaWIiCitQQUNLQUdFQ09ORklHW2F2YWhpXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLC0tZGlzYWJsZS1uc3MsbnNzIG5zcHIsbGlicHVycGxlLXBsdWdpbi1zc2wtbnNzIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtcGVybCBcCisgICAgLS1kaXNhYmxlLXRjbCBcCisgICAgLS1kaXNhYmxlLWdldm9sdXRpb24gXAorICAgIC0tZGlzYWJsZS1zY2hlbWFzLWluc3RhbGwgXAorICAgIC0tZGlzYWJsZS1ndGtzcGVsbCBcCisgICAgLS1kaXNhYmxlLW1lYW53aGlsZSBcCisgICAgLS1kaXNhYmxlLW5tIFwKKyAgICAtLWRpc2FibGUtc2NyZWVuc2F2ZXIgXAorIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICB0b3VjaCAke1N9L3BvL01ha2VmaWxlCisgICAgc2VkIC1pICJzI1BZX1ZFUlNJT049YCRQWVRIT04gLWMgJ2ltcG9ydCBzeXMgOyBwcmludCBzeXMudmVyc2lvblswOjNdJ2AjUFlfVkVSU0lPTj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0jZyIgJHtTfS9jb25maWd1cmUuYWMKK30KKworT0VfTFRfUlBBVEhfQUxMT1c9Ijoke2xpYmRpcn0vcHVycGxlLTI6IgorT0VfTFRfUlBBVEhfQUxMT1dbZXhwb3J0XT0iMSIKKworUEFDS0FHRVMgPSsgImxpYnB1cnBsZS1kYmcgbGlicHVycGxlLWRldiBsaWJwdXJwbGUgbGliZ250LWRiZyBsaWJnbnQgbGliZ250LWRldiBmaW5jaC1kYmcgZmluY2ggZmluY2gtZGV2ICR7UE59LWRhdGEiCisKK0xFQURfU09OQU1FID0gImxpYnB1cnBsZS5zby4wIgorRklMRVNfbGlicHVycGxlICAgICA9ICIke2xpYmRpcn0vbGlicHVycGxlKi5zby4qICR7bGliZGlyfS9wdXJwbGUtMiAke2JpbmRpcn0vcHVycGxlLSogJHtzeXNjb25mZGlyfS9nY29uZi9zY2hlbWFzL3B1cnBsZSogJHtkYXRhZGlyfS9wdXJwbGUvY2EtY2VydHMiCitGSUxFU19saWJwdXJwbGUtZGV2ID0gIiR7bGliZGlyfS9saWJwdXJwbGUqLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB1cnBsZSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJqYWJiZXIuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvbGlib3NjYXIuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvbGlieW1zZy5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYWNsb2NhbCIKK0ZJTEVTX2xpYnB1cnBsZS1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlicHVycGxlKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvLmRlYnVnIgorRklMRVNfbGliZ250ICAgICAgICAgPSAiJHtsaWJkaXJ9L2xpYmdudC5zby4qICR7bGliZGlyfS9nbnQvKi5zbyIKK0ZJTEVTX2xpYmdudC1kZXYgICAgID0gIiR7bGliZGlyfS9nbnQvKi5sYSIKK0ZJTEVTX2xpYmdudC1kYmcgICAgID0gIiR7bGliZGlyfS9nbnQvLmRlYnVnIgorRklMRVNfZmluY2ggICAgICAgICAgPSAiJHtiaW5kaXJ9L2ZpbmNoIgorRklMRVNfZmluY2gtZGV2ICAgICAgPSAiJHtsaWJkaXJ9L2ZpbmNoLyoubGEiCitGSUxFU19maW5jaC1kYmcgICAgICA9ICIke2JpbmRpcn0vLmRlYnVnL2ZpbmNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9maW5jaC8uZGVidWciCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9LyR7UE59ICR7bGliZGlyfS8ke1BOfS8qLnNvIFwKKyAgICAgICAgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMiCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1kYXRhIGxpYnB1cnBsZS1wcm90b2NvbC1pcmMgbGlicHVycGxlLXByb3RvY29sLXhtcHAiCisKK0ZJTEVTXyR7UE59LWRhdGEgPSAiJHtkYXRhZGlyfS9waXhtYXBzICR7ZGF0YWRpcn0vc291bmRzICR7ZGF0YWRpcn0vaWNvbnMgJHtkYXRhZGlyfS9hcHBkYXRhIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtQTn0vKi5sYSIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYnB1cnBsZS1wcm90b2NvbC0uKiBebGlicHVycGxlLXBsdWdpbi0uKiBecGlkZ2luLXBsdWdpbi0uKiBeZmluY2gtcGx1Z2luLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcGlkZ3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3BpZGdpbicpCisgICAgcHVycGxlICAgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3B1cnBsZS0yJykKKyAgICBmaW5jaCAgICA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZmluY2gnKQorCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGlkZ3Jvb3QsICdeKFtebF1bXmldW15iXS4qKVwuc28kJywKKyAgICAgICAgb3V0cHV0X3BhdHRlcm49J3BpZGdpbi1wbHVnaW4tJXMnLAorICAgICAgICBkZXNjcmlwdGlvbj0nUGlkZ2luIHBsdWdpbiAlcycsCisgICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHB1cnBsZSwgJ15saWIoLiopXC5zbyQnLAorICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGlicHVycGxlLXByb3RvY29sLSVzJywKKyAgICAgICAgZGVzY3JpcHRpb249J0xpYnB1cnBsZSBwcm90b2NvbCBwbHVnaW4gZm9yICVzJywKKyAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQorCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHVycGxlLCAnXihzc2wtLiopXC5zbyQnLAorICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGlicHVycGxlLXBsdWdpbi0lcycsCisgICAgICAgIGRlc2NyaXB0aW9uPSdsaWJwdXJwbGUgcGx1Z2luICVzJywKKyAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPSdsaWJwdXJwbGUtcGx1Z2luLXNzbCcpCisKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwdXJwbGUsICdeKFtebF1bXmldW15iXS4qKVwuc28kJywKKyAgICAgICAgb3V0cHV0X3BhdHRlcm49J2xpYnB1cnBsZS1wbHVnaW4tJXMnLAorICAgICAgICBkZXNjcmlwdGlvbj0nbGlicHVycGxlIHBsdWdpbiAlcycsCisgICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGZpbmNoLCAnXihbXmxdW15pXVteYl0uKilcLnNvJCcsCisgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdmaW5jaC1wbHVnaW4tJXMnLAorICAgICAgICBkZXNjcmlwdGlvbj0nRmluY2ggcGx1Z2luICVzJywKKyAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4MzczNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1TVU1NQVJZID0gIk1vZGVybiwgcG93ZXJmdWwgb3BlbiBzb3VyY2UgY3Jvc3MtcGxhdGZvcm0gQysrIGNsYXNzIGxpYnJhcmllcyIKLURFU0NSSVBUSU9OID0gIk1vZGVybiwgcG93ZXJmdWwgb3BlbiBzb3VyY2UgQysrIGNsYXNzIGxpYnJhcmllcyBhbmQgZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgbmV0d29yay0gYW5kIGludGVybmV0LWJhc2VkIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvbiBkZXNrdG9wLCBzZXJ2ZXIsIG1vYmlsZSBhbmQgZW1iZWRkZWQgc3lzdGVtcy4iCi1TRUNUSU9OID0gImxpYnMiCi1IT01FUEFHRSA9ICJodHRwOi8vcG9jb3Byb2plY3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQyNjdmNDhmYzczOGY1MDM4MGNiZWViNzZmOTVjZWJjIgotCi0jIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgcmVxdWlyZWQgYnkgRm91bmRhdGlvbgotREVQRU5EUyA9ICJsaWJwY3JlIHpsaWIiCi0KLWluaGVyaXQgY21ha2UgcHRlc3QKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ1JFViA9ICJhYWU5YzJlMGY2NGNhZjAxOWQzMWJhOGY5NzYzNWQ1NjU2YjI1YmE1IgotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vcG9jb3Byb2plY3QvcG9jby5naXQ7YnJhbmNoPXBvY28tJHtQVn0gXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyAtRFBPQ09fVU5CVU5ETEVEPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1EWkxJQl9MSUJSQVJZX1JFTEVBU0U6U1RSSU5HPXogLURQQ1JFX0xJQlJBUlk6U1RSSU5HPXBjcmUgXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy1ERU5BQkxFX1RFU1RTPU9OICcsICcnLCBkKX0iCi0KLSMgRm9yIHRoZSBuYXRpdmUgYnVpbGQgd2Ugd2FudCB0byB1c2UgdGhlIGJ1bmRsZWQgdmVyc2lvbgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFBPQ09fVU5CVU5ETEVEPU9GRiIKLQotIyBkbyBub3QgdXNlIHJwYXRoCi1FWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgLURDTUFLRV9TS0lQX1JQQVRIPU9OIgotCi0jIEJ5IGRlZmF1bHQgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBwb2NvIGNvbXBvbmVudHMgYXJlIGJ1aWx0Ci0jIEZvdW5kYXRpb24gaXMgYnVpbHQgYW55d2F5IGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgbGlzdGVkIGV4cGxpY2l0bHkKLSMgdGhlc2UgZG9uJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb3V0c2lkZSBvZS1jb3JlCi1QQUNLQUdFQ09ORklHID8/PSAiWE1MIEpTT04gTW9uZ29EQiBQREYgVXRpbCBOZXQgTmV0U1NMIENyeXB0byBEYXRhIERhdGFTUUxpdGUgWmlwIgotCi1QQUNLQUdFQ09ORklHW1hNTF0gPSAiLURFTkFCTEVfWE1MPU9OIC1ERVhQQVRfTElCUkFSWTpTVFJJTkc9ZXhwYXQsLURFTkFCTEVfWE1MPU9GRixleHBhdCIKLVBBQ0tBR0VDT05GSUdbSlNPTl0gPSAiLURFTkFCTEVfSlNPTj1PTiwtREVOQUJMRV9KU09OPU9GRiIKLVBBQ0tBR0VDT05GSUdbTW9uZ29EQl0gPSAiLURFTkFCTEVfTU9OR09EQj1PTiwtREVOQUJMRV9NT05HT0RCPU9GRiIKLVBBQ0tBR0VDT05GSUdbUERGXSA9ICItREVOQUJMRV9QREY9T04sLURFTkFCTEVfUERGPU9GRix6bGliIgotUEFDS0FHRUNPTkZJR1tVdGlsXSA9ICItREVOQUJMRV9VVElMPU9OLC1ERU5BQkxFX1VUSUw9T0ZGIgotUEFDS0FHRUNPTkZJR1tOZXRdID0gIi1ERU5BQkxFX05FVD1PTiwtREVOQUJMRV9ORVQ9T0ZGIgotUEFDS0FHRUNPTkZJR1tOZXRTU0xdID0gIi1ERU5BQkxFX05FVFNTTD1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9ORVRTU0w9T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW0NyeXB0b10gPSAiLURFTkFCTEVfQ1JZUFRPPU9OIC1ET1BFTlNTTF9TU0xfTElCUkFSWTpTVFJJTkc9c3NsIC1ET1BFTlNTTF9DUllQVE9fTElCUkFSWTpTVFJJTkc9Y3J5cHRvLC1ERU5BQkxFX0NSWVBUTz1PRkYsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbRGF0YV0gPSAiLURFTkFCTEVfREFUQT1PTiwtREVOQUJMRV9EQVRBPU9GRiIKLVBBQ0tBR0VDT05GSUdbRGF0YVNRTGl0ZV0gPSAiLURFTkFCTEVfREFUQV9TUUxJVEU9T04gLURTUUxJVEUzX0xJQlJBUlk6U1RSSU5HPXNxbGl0ZTMsLURFTkFCTEVfREFUQV9TUUxJVEU9T0ZGLHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW1ppcF0gPSAiLURFTkFCTEVfWklQPU9OLC1ERU5BQkxFX1pJUD1PRkYiCi0KLSMgQWRkaXRpb25hbCBjb21wb25lbnRzIG5vdCBidWlsZCBieSBkZWZhdWx0LAotIyB0aGV5IG1pZ2h0IGhhdmUgZGVwZW5kZW5jaWVzIG5vdCBpbmNsdWRlZCBpbiBvZS1jb3JlCi0jIG9yIHRoZXkgZG9uJ3Qgd29yayBvbiBhbGwgYXJjaGl0ZWN0dXJlcwotUEFDS0FHRUNPTkZJR1ttb2RfcG9jb10gPSAiLURFTkFCTEVfQVBBQ0hFQ09OTkVDVE9SPU9OLC1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PRkYsYXByIGFwYWNoZTIiCi1QQUNLQUdFQ09ORklHW0NwcFBhcnNlcl0gPSAiLURFTkFCTEVfQ1BQUEFSU0VSPU9OLC1ERU5BQkxFX0NQUFBBUlNFUj1PRkYiCi1QQUNLQUdFQ09ORklHW0RhdGFNeVNRTF0gPSAiLURFTkFCTEVfREFUQV9NWVNRTD1PTiAtRE1ZU1FMX0xJQjpTVFJJTkc9bXlzcWxjbGllbnRfciwtREVOQUJMRV9EQVRBX01ZU1FMPU9GRixtYXJpYWRiIgotUEFDS0FHRUNPTkZJR1tEYXRhT0RCQ10gPSAiLURFTkFCTEVfREFUQV9PREJDPU9OLC1ERU5BQkxFX0RBVEFfT0RCQz1PRkYsbGliaW9kYmMiCi1QQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlcl0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSPU9OLC1ERU5BQkxFX1BBR0VDT01QSUxFUj1PRkYiCi1QQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlckZpbGUyUGFnZV0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVJfRklMRTJQQUdFPU9GRiIKLVBBQ0tBR0VDT05GSUdbU2V2ZW5aaXBdID0gIi1ERU5BQkxFX1NFVkVOWklQPU9OLC1ERU5BQkxFX1NFVkVOWklQPU9GRiIKLQotIyBNYWtlIGEgcGFja2FnZSBmb3IgZWFjaCBsaWJyYXJ5Ci1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQT0NPX1BBQ0tBR0VTfSIKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgcGFja2FnZXMgPSBbXQotICAgIHRlc3RydW5uZXJzID0gW10KLSAgICBjb21wb25lbnRzID0gZC5nZXRWYXIoIlBBQ0tBR0VDT05GSUciKS5zcGxpdCgpCi0gICAgY29tcG9uZW50cy5hcHBlbmQoIkZvdW5kYXRpb24iKQotICAgIGZvciBsaWIgaW4gY29tcG9uZW50czoKLSAgICAgICAgcGtnID0gKCJwb2NvLSVzIiAlIGxpYi5sb3dlcigpKS5yZXBsYWNlKCJfIiwiIikKLSAgICAgICAgcGFja2FnZXMuYXBwZW5kKHBrZykKLSAgICAgICAgaWYgbm90IGQuZ2V0VmFyKCJGSUxFU18lcyIgJSBwa2cpOgotICAgICAgICAgICAgZC5zZXRWYXIoIkZJTEVTXyVzIiAlIHBrZywgIiR7bGliZGlyfS9saWJQb2NvJXMuc28uKiIgJSBsaWIpCi0gICAgICAgIHRlc3RydW5uZXJzLmFwcGVuZCgiJXMiICUgbGliKQotCi0gICAgZC5zZXRWYXIoIlBPQ09fUEFDS0FHRVMiLCAiICIuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoIlBPQ09fVEVTVFJVTk5FUlMiLCAiXG4iLmpvaW4odGVzdHJ1bm5lcnMpKQotfQotCi0jICJwb2NvIiBpcyBhIG1ldGFwYWNrYWdlIHdoaWNoIHB1bGxzIGluIGFsbCBQb2NvIGNvbXBvbmVudHMKLVBBQ0tBR0VTICs9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BPQ09fUEFDS0FHRVN9IgotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLSMgLWRldiBsYXN0IHRvIHBpY2sgdXAgdGhlIHJlbWFpbmluZyBzdHVmZgotUEFDS0FHRVMgKz0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliUG9jbyouc28gJHtsaWJkaXJ9L2NtYWtlIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJQb2NvKi5hIgotCi0jIHB0ZXN0IHN1cHBvcnQKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQVEVTVF9QQVRIfS9iaW4vLmRlYnVnIgotCi0jIGNwcHVuaXQgaXMgb25seSBidWlsdCBpZiB0ZXN0cyBhcmUgZW5hYmxlZAotUEFDS0FHRVMgKz0gIiR7UE59LWNwcHVuaXQiCi1GSUxFU18ke1BOfS1jcHB1bml0ICs9ICIke2xpYmRpcn0vbGliQ3BwVW5pdC5zbyoiCi1BTExPV19FTVBUWV8ke1BOfS1jcHB1bml0ID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1jcHB1bml0IgotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICAgICBjcCAtcmYgJHtCfS9iaW4vICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgY3AgLWYgJHtCfS9saWIvbGliQ3BwVW5pdC5zbyogJHtEfSR7bGliZGlyfQotICAgICAgIGNwIC1yZiAke0J9LyovdGVzdHN1aXRlL2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vYmluLwotICAgICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtZXhlY3V0YWJsZSAtZXhlYyBjaHJwYXRoIC1kIHt9IFw7Ci0gICAgICAgZWNobyAiJHtQT0NPX1RFU1RSVU5ORVJTfSIgPiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHJ1bm5lcnMiCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuNy45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNjU3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOS5iYgpAQCAtMCwwICsxLDEwNiBAQAorU1VNTUFSWSA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIGNyb3NzLXBsYXRmb3JtIEMrKyBjbGFzcyBsaWJyYXJpZXMiCitERVNDUklQVElPTiA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIEMrKyBjbGFzcyBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIG5ldHdvcmstIGFuZCBpbnRlcm5ldC1iYXNlZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZGVza3RvcCwgc2VydmVyLCBtb2JpbGUgYW5kIGVtYmVkZGVkIHN5c3RlbXMuIgorU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3BvY29wcm9qZWN0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MjY3ZjQ4ZmM3MzhmNTAzODBjYmVlYjc2Zjk1Y2ViYyIKKworIyBUaGVzZSBkZXBlbmRlbmNpZXMgYXJlIHJlcXVpcmVkIGJ5IEZvdW5kYXRpb24KK0RFUEVORFMgPSAibGlicGNyZSB6bGliIgorCitpbmhlcml0IGNtYWtlIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNSRVYgPSAiYmZiZTZhMzI4NzQ0ZWFhODRjYjQ0M2I5M2VlMjA5NDdhYTBiZTkxZiIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28uZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNNQUtFID0gIi1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyAtRFBPQ09fVU5CVU5ETEVEPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1EWkxJQl9MSUJSQVJZX1JFTEVBU0U6U1RSSU5HPXogLURQQ1JFX0xJQlJBUlk6U1RSSU5HPXBjcmUgXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy1ERU5BQkxFX1RFU1RTPU9OICcsICcnLCBkKX0iCisKKyMgRm9yIHRoZSBuYXRpdmUgYnVpbGQgd2Ugd2FudCB0byB1c2UgdGhlIGJ1bmRsZWQgdmVyc2lvbgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFBPQ09fVU5CVU5ETEVEPU9GRiIKKworIyBkbyBub3QgdXNlIHJwYXRoCitFWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgLURDTUFLRV9TS0lQX1JQQVRIPU9OIgorCisjIEJ5IGRlZmF1bHQgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBwb2NvIGNvbXBvbmVudHMgYXJlIGJ1aWx0CisjIEZvdW5kYXRpb24gaXMgYnVpbHQgYW55d2F5IGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgbGlzdGVkIGV4cGxpY2l0bHkKKyMgdGhlc2UgZG9uJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb3V0c2lkZSBvZS1jb3JlCitQQUNLQUdFQ09ORklHID8/PSAiWE1MIEpTT04gTW9uZ29EQiBQREYgVXRpbCBOZXQgTmV0U1NMIENyeXB0byBEYXRhIERhdGFTUUxpdGUgWmlwIgorCitQQUNLQUdFQ09ORklHW1hNTF0gPSAiLURFTkFCTEVfWE1MPU9OIC1ERVhQQVRfTElCUkFSWTpTVFJJTkc9ZXhwYXQsLURFTkFCTEVfWE1MPU9GRixleHBhdCIKK1BBQ0tBR0VDT05GSUdbSlNPTl0gPSAiLURFTkFCTEVfSlNPTj1PTiwtREVOQUJMRV9KU09OPU9GRiIKK1BBQ0tBR0VDT05GSUdbTW9uZ29EQl0gPSAiLURFTkFCTEVfTU9OR09EQj1PTiwtREVOQUJMRV9NT05HT0RCPU9GRiIKK1BBQ0tBR0VDT05GSUdbUERGXSA9ICItREVOQUJMRV9QREY9T04sLURFTkFCTEVfUERGPU9GRix6bGliIgorUEFDS0FHRUNPTkZJR1tVdGlsXSA9ICItREVOQUJMRV9VVElMPU9OLC1ERU5BQkxFX1VUSUw9T0ZGIgorUEFDS0FHRUNPTkZJR1tOZXRdID0gIi1ERU5BQkxFX05FVD1PTiwtREVOQUJMRV9ORVQ9T0ZGIgorUEFDS0FHRUNPTkZJR1tOZXRTU0xdID0gIi1ERU5BQkxFX05FVFNTTD1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9ORVRTU0w9T0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW0NyeXB0b10gPSAiLURFTkFCTEVfQ1JZUFRPPU9OIC1ET1BFTlNTTF9TU0xfTElCUkFSWTpTVFJJTkc9c3NsIC1ET1BFTlNTTF9DUllQVE9fTElCUkFSWTpTVFJJTkc9Y3J5cHRvLC1ERU5BQkxFX0NSWVBUTz1PRkYsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbRGF0YV0gPSAiLURFTkFCTEVfREFUQT1PTiwtREVOQUJMRV9EQVRBPU9GRiIKK1BBQ0tBR0VDT05GSUdbRGF0YVNRTGl0ZV0gPSAiLURFTkFCTEVfREFUQV9TUUxJVEU9T04gLURTUUxJVEUzX0xJQlJBUlk6U1RSSU5HPXNxbGl0ZTMsLURFTkFCTEVfREFUQV9TUUxJVEU9T0ZGLHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW1ppcF0gPSAiLURFTkFCTEVfWklQPU9OLC1ERU5BQkxFX1pJUD1PRkYiCisKKyMgQWRkaXRpb25hbCBjb21wb25lbnRzIG5vdCBidWlsZCBieSBkZWZhdWx0LAorIyB0aGV5IG1pZ2h0IGhhdmUgZGVwZW5kZW5jaWVzIG5vdCBpbmNsdWRlZCBpbiBvZS1jb3JlCisjIG9yIHRoZXkgZG9uJ3Qgd29yayBvbiBhbGwgYXJjaGl0ZWN0dXJlcworUEFDS0FHRUNPTkZJR1ttb2RfcG9jb10gPSAiLURFTkFCTEVfQVBBQ0hFQ09OTkVDVE9SPU9OLC1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PRkYsYXByIGFwYWNoZTIiCitQQUNLQUdFQ09ORklHW0NwcFBhcnNlcl0gPSAiLURFTkFCTEVfQ1BQUEFSU0VSPU9OLC1ERU5BQkxFX0NQUFBBUlNFUj1PRkYiCitQQUNLQUdFQ09ORklHW0RhdGFNeVNRTF0gPSAiLURFTkFCTEVfREFUQV9NWVNRTD1PTiAtRE1ZU1FMX0xJQjpTVFJJTkc9bXlzcWxjbGllbnRfciwtREVOQUJMRV9EQVRBX01ZU1FMPU9GRixtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tEYXRhT0RCQ10gPSAiLURFTkFCTEVfREFUQV9PREJDPU9OLC1ERU5BQkxFX0RBVEFfT0RCQz1PRkYsbGliaW9kYmMiCitQQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlcl0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSPU9OLC1ERU5BQkxFX1BBR0VDT01QSUxFUj1PRkYiCitQQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlckZpbGUyUGFnZV0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVJfRklMRTJQQUdFPU9GRiIKK1BBQ0tBR0VDT05GSUdbU2V2ZW5aaXBdID0gIi1ERU5BQkxFX1NFVkVOWklQPU9OLC1ERU5BQkxFX1NFVkVOWklQPU9GRiIKKworIyBNYWtlIGEgcGFja2FnZSBmb3IgZWFjaCBsaWJyYXJ5CitQQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQT0NPX1BBQ0tBR0VTfSIKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgcGFja2FnZXMgPSBbXQorICAgIHRlc3RydW5uZXJzID0gW10KKyAgICBjb21wb25lbnRzID0gZC5nZXRWYXIoIlBBQ0tBR0VDT05GSUciKS5zcGxpdCgpCisgICAgY29tcG9uZW50cy5hcHBlbmQoIkZvdW5kYXRpb24iKQorICAgIGZvciBsaWIgaW4gY29tcG9uZW50czoKKyAgICAgICAgcGtnID0gKCJwb2NvLSVzIiAlIGxpYi5sb3dlcigpKS5yZXBsYWNlKCJfIiwiIikKKyAgICAgICAgcGFja2FnZXMuYXBwZW5kKHBrZykKKyAgICAgICAgaWYgbm90IGQuZ2V0VmFyKCJGSUxFU18lcyIgJSBwa2cpOgorICAgICAgICAgICAgZC5zZXRWYXIoIkZJTEVTXyVzIiAlIHBrZywgIiR7bGliZGlyfS9saWJQb2NvJXMuc28uKiIgJSBsaWIpCisgICAgICAgIHRlc3RydW5uZXJzLmFwcGVuZCgiJXMiICUgbGliKQorCisgICAgZC5zZXRWYXIoIlBPQ09fUEFDS0FHRVMiLCAiICIuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoIlBPQ09fVEVTVFJVTk5FUlMiLCAiXG4iLmpvaW4odGVzdHJ1bm5lcnMpKQorfQorCisjICJwb2NvIiBpcyBhIG1ldGFwYWNrYWdlIHdoaWNoIHB1bGxzIGluIGFsbCBQb2NvIGNvbXBvbmVudHMKK1BBQ0tBR0VTICs9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BPQ09fUEFDS0FHRVN9IgorUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKKyMgLWRldiBsYXN0IHRvIHBpY2sgdXAgdGhlIHJlbWFpbmluZyBzdHVmZgorUEFDS0FHRVMgKz0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliUG9jbyouc28gJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJQb2NvKi5hIgorCisjIHB0ZXN0IHN1cHBvcnQKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtQVEVTVF9QQVRIfS9iaW4vLmRlYnVnIgorCisjIGNwcHVuaXQgaXMgb25seSBidWlsdCBpZiB0ZXN0cyBhcmUgZW5hYmxlZAorUEFDS0FHRVMgKz0gIiR7UE59LWNwcHVuaXQiCitGSUxFU18ke1BOfS1jcHB1bml0ICs9ICIke2xpYmRpcn0vbGliQ3BwVW5pdC5zbyoiCitBTExPV19FTVBUWV8ke1BOfS1jcHB1bml0ID0gIjEiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1jcHB1bml0IgorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICAgICBjcCAtcmYgJHtCfS9iaW4vICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgY3AgLWYgJHtCfS9saWIvbGliQ3BwVW5pdC5zbyogJHtEfSR7bGliZGlyfQorICAgICAgIGNwIC1yZiAke0J9LyovdGVzdHN1aXRlL2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vYmluLworICAgICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtZXhlY3V0YWJsZSAtZXhlYyBjaHJwYXRoIC1kIHt9IFw7CisgICAgICAgZWNobyAiJHtQT0NPX1RFU1RSVU5ORVJTfSIgPiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHJ1bm5lcnMiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjUzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjUzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYmZiMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41My4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3BwbGVyIGlzIGEgUERGIHJlbmRlcmluZyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSB4cGRmLTMuMCBjb2RlIGJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvJHtCUH0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1hZGQtbWFuYWRhdG9yeS1vcHRpb25zLXRvLWZpbmQtcXQ0LXF0NS1tb2MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWZpeC1nY2MtNi1tYXRoLWFtYmlndW91cy1lcnJvcnMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjk0MzY3OWYxMDMwYjliYzE5YTk4OWYyNDEyMWEyODJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MmJmNzI5NjBjNmI1OTQ4YjY3NjU3NTk0YjA1ZTcyZDlhMjc4ZGFmNzYxM2M5ZjNjZGZmOWE1YjczMDk2YTgiCi0KLURFUEVORFMgPSAiZm9udGNvbmZpZyB6bGliIGNhaXJvIGxjbXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1QQUNLQUdFQ09ORklHID8/PSAianBlZyBvcGVuanBlZyBwbmcgdGlmZiBuc3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1JywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtbGlianBlZywtLWRpc2FibGUtbGlianBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLWxpYnBuZywtLWRpc2FibGUtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS1lbmFibGUtbGlidGlmZiwtLWRpc2FibGUtbGlidGlmZix0aWZmIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLWVuYWJsZS1saWJvcGVuanBlZz1vcGVuanBlZzIsLS1kaXNhYmxlLWxpYm9wZW5qcGVnLG9wZW5qcGVnIgotUEFDS0FHRUNPTkZJR1txdDVdID0gIi0tZW5hYmxlLXBvcHBsZXItcXQ1IC0td2l0aC1tb2MtcXQ1PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9xdDUvbW9jLC0tZGlzYWJsZS1wb3BwbGVyLXF0NSxxdGJhc2UgcXR0b29scy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3F0NGVdID0gIi0tZW5hYmxlLXBvcHBsZXItcXQ0IC0td2l0aC1tb2MtcXQ0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tb2M0LC0tZGlzYWJsZS1wb3BwbGVyLXF0NCxxdDQtZW1iZWRkZWQiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbGlibnNzLC0tZGlzYWJsZS1saWJuc3MsbnNzIgotCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS14cGRmLWhlYWRlcnMgXAotICAgIC0tZGlzYWJsZS1ndGstdGVzdCBcCi0gICAgLS1lbmFibGUtemxpYiBcCi0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9wb3BwbGVyLy5saWJzIgotfQotCi0jIEFkanVzdCBsaWJyYXJ5IG5hbWVzIHdoZW4gYnVpbGRpbmcgZm9yIFFUNGUKLVFUNEVfUEFUQ0hFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDRlJywgJ2ZpbGU6Ly9maXgtcXQ0ZS1saWJyYXJ5LWRlcGVuZGVuY2llcy5wYXRjaCcsICcnLCBkKX0iCi1TUkNfVVJJX2FwcGVuZCA9ICIke1FUNEVfUEFUQ0hFU30iCi0KLSMgY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzCi1kZWYgZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKLSAgICAgICAgcmV0dXJuICItLWVuYWJsZS1maXhlZHBvaW50IgotICAgIHJldHVybiAiIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi0KLVBBQ0tBR0VTID0rICJsaWJwb3BwbGVyIGxpYnBvcHBsZXItZ2xpYiIKLUZJTEVTX2xpYnBvcHBsZXIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXIuc28uKiIKLUZJTEVTX2xpYnBvcHBsZXItZ2xpYiA9ICIke2xpYmRpcn0vbGlicG9wcGxlci1nbGliLnNvLioiCi0KLVJERVBFTkRTX2xpYnBvcHBsZXIgPSAicG9wcGxlci1kYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41Ny4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41Ny4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjc3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjU3LjAuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJQb3BwbGVyIGlzIGEgUERGIHJlbmRlcmluZyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSB4cGRmLTMuMCBjb2RlIGJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvJHtCUH0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1hZGQtbWFuYWRhdG9yeS1vcHRpb25zLXRvLWZpbmQtcXQ0LXF0NS1tb2MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWZpeC1nY2MtNi1tYXRoLWFtYmlndW91cy1lcnJvcnMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImJjNWExOTE3NDE2MDQ1NTJjOTBkNDg0MTAzMjI5Mzc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlYTM3ZGU3MWI3ZGI3ODIxMmViYzc5ZGY1OWY5OWI2NjQwOWEyOWMyZWFjNGQ4ODJkYWU5ZjIzOTdmZTQ0ZDgiCisKK0RFUEVORFMgPSAiZm9udGNvbmZpZyB6bGliIGNhaXJvIGxjbXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitQQUNLQUdFQ09ORklHID8/PSAianBlZyBvcGVuanBlZyBwbmcgdGlmZiBuc3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtZGN0ZGVjb2Rlcj1saWJqcGVnLC0tZW5hYmxlLWRjdGRlY29kZXI9bm9uZSxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLWxpYnBuZywtLWRpc2FibGUtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS1lbmFibGUtbGlidGlmZiwtLWRpc2FibGUtbGlidGlmZix0aWZmIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLWVuYWJsZS1saWJvcGVuanBlZz1vcGVuanBlZzIsLS1kaXNhYmxlLWxpYm9wZW5qcGVnLG9wZW5qcGVnIgorUEFDS0FHRUNPTkZJR1txdDVdID0gIi0tZW5hYmxlLXBvcHBsZXItcXQ1IC0td2l0aC1tb2MtcXQ1PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9xdDUvbW9jLC0tZGlzYWJsZS1wb3BwbGVyLXF0NSxxdGJhc2UgcXR0b29scy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3F0NGVdID0gIi0tZW5hYmxlLXBvcHBsZXItcXQ0IC0td2l0aC1tb2MtcXQ0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tb2M0LC0tZGlzYWJsZS1wb3BwbGVyLXF0NCxxdDQtZW1iZWRkZWQiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbGlibnNzLC0tZGlzYWJsZS1saWJuc3MsbnNzIgorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS14cGRmLWhlYWRlcnMgXAorICAgIC0tZGlzYWJsZS1ndGstdGVzdCBcCisgICAgLS1lbmFibGUtemxpYiBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9wb3BwbGVyLy5saWJzIgorfQorCisjIEFkanVzdCBsaWJyYXJ5IG5hbWVzIHdoZW4gYnVpbGRpbmcgZm9yIFFUNGUKK1FUNEVfUEFUQ0hFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDRlJywgJ2ZpbGU6Ly9maXgtcXQ0ZS1saWJyYXJ5LWRlcGVuZGVuY2llcy5wYXRjaCcsICcnLCBkKX0iCitTUkNfVVJJX2FwcGVuZCA9ICIke1FUNEVfUEFUQ0hFU30iCisKKyMgY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzCitkZWYgZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpOgorICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKKyAgICAgICAgcmV0dXJuICItLWVuYWJsZS1maXhlZHBvaW50IgorICAgIHJldHVybiAiIgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCisKK1BBQ0tBR0VTID0rICJsaWJwb3BwbGVyIGxpYnBvcHBsZXItZ2xpYiIKK0ZJTEVTX2xpYnBvcHBsZXIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXIuc28uKiIKK0ZJTEVTX2xpYnBvcHBsZXItZ2xpYiA9ICIke2xpYmRpcn0vbGlicG9wcGxlci1nbGliLnNvLioiCisKK1JERVBFTkRTX2xpYnBvcHBsZXIgPSAicG9wcGxlci1kYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGQyZWRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgcG9zdGdyZXNxbC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04MWI2OWRkYjMxYThiZTY2YmFhZmQxNGE5MDE0NmVlMiIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9yZW1vdmUuYXV0b2NvbmYudmVyc2lvbi5jaGVjay5wYXRjaCBcCi0gICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJmZWUwM2YyMDM0MDM0ZGJmY2IzMzIxYTBiYjBmODI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZWI1MWQwNDVjMTgwYjAzZDJkZTFmMGMzYWY5MzU2ZTEwYmU0OTQ0OGU5NjZjYTAxZGZjMmM2ZDFjYzlkMjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVjMDk5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNS5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIHBvc3RncmVzcWwuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ODFiNjlkZGIzMWE4YmU2NmJhYWZkMTRhOTAxNDZlZTIiCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2ggXAorICAgIGZpbGU6Ly9ub3QtY2hlY2stbGlicGVybC5wYXRjaCBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZF9saWJjLW11c2woKSB7CisgICAgc2VkIC1pIC1lICdzL1wtbG5zbC8vZycgJHtCfS9zcmMvTWFrZWZpbGUuZ2xvYmFsCit9CisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYWFkYTA4MzNhOTIwOGFlNWZhYjk2NmM3M2MzOTM3OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmJmYjNjN2U4ZTQ1NTE1ZWY5MjFhZDM2NWUxMjI2ODJhNWM0OTM1ZGNjMDAzMjY0NDQzM2FmMmRlMzFhY2M0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcHMtdG9vbHMvcHBzLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHBzLXRvb2xzL3Bwcy10b29sc19naXQuYmIKaW5kZXggNzNjNDZlZS4uOGJmOTAzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcHMtdG9vbHMvcHBzLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bwcy10b29scy9wcHMtdG9vbHNfZ2l0LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJVc2VyLXNwYWNlIHRvb2xzIGZvciBMaW51eFBQUyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saW51eHBwcy5vcmciCiAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYgppbmRleCA5NzMyNmEyLi42ZTFjOGFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9wc3Fsb2RiY18wOS4wNS4wMzAwLmJiCkBAIC0xMiw1ICsxMiwzIEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0YzZlMGIyMjE4N2Q3YmIxYzk5OGZmYWM4OWU1MGY2YiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTIxZjMyOGJmMjhhYWFmNWM4NDg4ZGM4OTc5MmI2MTRmOWQ2MjcxNzQyYzBiYWY5YmI0MWM5NzUzNzc2NGE4IgotCi1QTkJMQUNLTElTVFtwc3Fsb2RiY10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgcG9zdGdyZXNxbCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNhMDk2OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1Nb2Rlcm5pc2UgY29uZmlndXJlIHRvIHdvcmsgd2l0aCBtb2Rlcm4gYXV0b21ha2UuCi0KLVJQIDIwMTQvNy8xNAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHJlMmMtMC4xMy41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJlMmMtMC4xMy41Lm9yaWcvY29uZmlndXJlLmluCTIwMDgtMDUtMjUgMTQ6NDI6MzQuMDAwMDAwMDAwICswMDAwCi0rKysgcmUyYy0wLjEzLjUvY29uZmlndXJlLmluCTIwMTQtMDctMTcgMTQ6MTA6NDAuNTk1ODIxMjkyICswMDAwCi1AQCAtMSw2ICsxLDYgQEAKLSBBQ19QUkVSRVEoWzIuNTddKQotIEFDX0lOSVQocmUyYywgMC4xMy41LCByZTJjLWdlbmVyYWxAbGlzdHMuc291cmNlZm9yZ2UubmV0KQotLUFNX0lOSVRfQVVUT01BS0UocmUyYywgJFBBQ0tBR0VfVkVSU0lPTikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBQ19DT05GSUdfU1JDRElSKGFjdGlvbnMuY2MpCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTMuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNhYzk0MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjEzLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgZm9yIHdyaXRpbmcgdmVyeSBmYXN0IGFuZCB2ZXJ5IGZsZXhpYmxlIHNjYW5uZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlMmMuc291cmNlZm9yZ2UubmV0LyIKLUFVVEhPUiA9ICJNYXJjdXMgQsO2cmdlciA8aGVsbHlAdXNlcnMuc291cmNlZm9yZ2UubmV0PiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xODA7bWQ1PTgyMjgzMGEyMjA0YWVmMzUzZjJjNDg5ZjYyZTAyMDg5IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiNGE5N2Q4Zjc3ZWQ2ZDJjNzZjOGJkODQwYTQzZjU2MzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNhOTk1MTM5YWY0NzVlODBhMzAyMDdkMDI3MjhiMWUwMDY1YjBjYWFkZTczNzVlOTc0Y2IxYjE0ODYxNjY4YyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL2ZpbGVzLzAwMDEtZG8tbm90LXN1cHBvcnQtcHl0aG9uMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvZmlsZXMvMDAwMS1kby1ub3Qtc3VwcG9ydC1weXRob24yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllOTVhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL2ZpbGVzLzAwMDEtZG8tbm90LXN1cHBvcnQtcHl0aG9uMi5wYXRjaApAQCAtMCwwICsxLDg0IEBACitGcm9tIDIwNmYzMzRkNjJkYTE3MDkzZTc4NDA5NGM5ZDllODBjODUzZjcwNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEyIE1heSAyMDE3IDAzOjAzOjQ2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBzdXBwb3J0IHB5dGhvbjIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgIHwgMTYgLS0tLS0tLS0tLS0tLS0tLQorIHB5dGhvbi9NYWtlZmlsZS5hbSB8IDI0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDIwMGE3Y2MuLjg0MzFjNTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyLDIyICsyMiw2IEBAIEFNX01JU1NJTkdfUFJPRyhbQVVUT000VEVdLCBbYXV0b200dGVdKQorICMgTmVlZGVkIGJ5IHRlc3RzL2F0bG9jYWwuaW4uCisgQUNfU1VCU1QoW08wQ0ZMQUdTXSwgW2BlY2hvICRDRkxBR1MgfCBzZWQgJ3MvLU9bWzAtOV1dICovLydgXSkKKyAKKy1BTV9QQVRIX1BZVEhPTgorLUFNX0NPTkRJVElPTkFMKFtIQVZFX1BZVEhPTl0sIHRlc3QgLW4gIiRQWVRIT04iKQorLVtpZiB0ZXN0IC16ICIkUFlUSE9OIjsgdGhlbl0KKy0gICAgW2VjaG8gIlRoZSBweXRob24gaW50ZXJwcmV0ZXIgd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIHBhdGguIFRoZSBQeXRob24gbGFuZ3VhZ2UgYmluZGluZ3MiXQorLSAgICBbZWNobyAid2lsbCBub3QgYmUgYnVpbHQuICBJZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgUHl0aG9uIGxhbmd1YWdlIGJpbmRpbmdzLCBwbGVhc2UgZW5zdXJlIl0KKy0gICAgW2VjaG8gInRoYXQgcHl0aG9uIGlzIGluc3RhbGxlZCBhbmQgaXRzIGRpcmVjdG9yeSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoIHBhdGguIl0KKy0gICAgW2VjaG8gIlRoZW4gcnVuIGNvbmZpZ3VyZSBhZ2FpbiBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZCBTYXR5ci4iXQorLVtmaV0KKy0KKy0jIEp1c3QgUEtHX0NIRUNLX01PRFVMRVMoW1BZVEhPTl0sIFtweXRob25dKSB3b3JrcyBvbmx5IHdpdGggcHl0aG9uMi43KworLSMgQmVsb3csIGlmIHB5dGhvbiBpcyBub3QgZm91bmQsIHdlIHNldCB1cCBmb3IgcHl0aG9uMi42IHcvbyBjaGVja2luZzoKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhbUFlUSE9OXSwgW3B5dGhvbjJdLCxbCistICAgIFBZVEhPTl9MSUJTPSctTC91c3IvbGliNjQgLWxweXRob24yLjYnCistICAgIFBZVEhPTl9DRkxBR1M9Jy1JL3Vzci9pbmNsdWRlL3B5dGhvbjIuNicKKy1dKQorLQorIEFDX0FSR19FTkFCTEUoW3B5dGhvbi1tYW5wYWdlXSwKKyAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXB5dGhvbi1tYW5wYWdlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlzYWJsZSBweXRob24gYmluZGluZ3MgbWFucGFnZSBidWlsZF0pXSwKK2RpZmYgLS1naXQgYS9weXRob24vTWFrZWZpbGUuYW0gYi9weXRob24vTWFrZWZpbGUuYW0KK2luZGV4IDM2ZmMyZTkuLjBiNzNmNjYgMTAwNjQ0CistLS0gYS9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTEsMTIgKzEsNSBAQAorIFNVQkRJUlMgPSAuIGRvYworIAorLXB5MnNhdHlyZGlyID0gJChweWV4ZWNkaXIpL3NhdHlyCistCistcHkyc2F0eXJfUFlUSE9OID0gXAorLSAgICBfX2luaXRfXy5weQorLQorLXB5MnNhdHlyX0xUTElCUkFSSUVTID0gX3NhdHlyLmxhCistCisgUFlFWFRGSUxFUyA9IFwKKyAgICAgcHlfY2x1c3Rlci5oIFwKKyAgICAgcHlfY2x1c3Rlci5jIFwKK0BAIC03NSwyMyArNjgsNiBAQCBQWUVYVExERkxBR1MgPSBcCisgICAgIC1tb2R1bGUgXAorICAgICAtYXZvaWQtdmVyc2lvbgorIAorLV9zYXR5cl9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQorLV9zYXR5cl9sYV9DUFBGTEFHUyA9IFwKKy0gICAgJChQWUVYVENQUEZMQUdTKSBcCistICAgICQoUFlUSE9OX0NGTEFHUykKKy1fc2F0eXJfbGFfTERGTEFHUyA9IFwKKy0gICAgJChQWUVYVExERkxBR1MpIFwKKy0gICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IGluaXRfc2F0eXIKKy0KKy0jIERlcGVuZGluZyBvbiB0aGUgY29uZmlndXJlIG9wdGlvbiwgd2UgZWl0aGVyIGxpbmsgbGlic2F0eXIuc28gZHluYW1pY2FsbHkgKGFzCistIyBpcyB1c3VhbCksIG9yIGRpcmVjdGx5IGluY2x1ZGUgaXRzIG9iamVjdCBmaWxlcyAoYnkgaW5jbHVkaW5nIHRoZQorLSMgY29udmVuaWVuY2UgbGlicmFyeSkuCistaWYgRU5BQkxFX1NUQVRJQ19QWVRIT05fTU9EVUxFCistX3NhdHlyX2xhX0xJQkFERCA9IC4uL2xpYi9saWJzYXR5cl9jb252LmxhCistZWxzZQorLV9zYXR5cl9sYV9MSUJBREQgPSAuLi9saWIvbGlic2F0eXIubGEKKy1lbmRpZgorLQorIGlmIFdJVEhfUFlUSE9OMworIHB5M3NhdHlyZGlyID0gJChweTNleGVjZGlyKS9zYXR5cgorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL2ZpbGVzLzAwMDItZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODI3ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDIzZjgyN2VhOTQyODQ2NTY5NzI2NTJmNjFmMmM2YWFkOTYwOTJjYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDIzOjAwOjI5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWx1cmUgYWdhaW5zdCBtdXNsIEMgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL3JwbS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL3JwbS5jIGIvbGliL3JwbS5jCitpbmRleCA5MjBlMTQ1Li41ODE0MGJmIDEwMDY0NAorLS0tIGEvbGliL3JwbS5jCisrKysgYi9saWIvcnBtLmMKK0BAIC0xODgsNyArMTg4LDcgQEAgc3JfcnBtX3BhY2thZ2Vfc29ydChzdHJ1Y3Qgc3JfcnBtX3BhY2thZ2UgKnBhY2thZ2VzKQorICAgICB9CisgCisgICAgIC8qIFNvcnQgdGhlIGFycmF5LiAqLworLSAgICBxc29ydChhcnJheSwgY291bnQsIHNpemVvZihzdHJ1Y3Qgc3JfcnBtX3BhY2thZ2UqKSwgKGNvbXBhcmlzb25fZm5fdCljbXBfbmV2cmFfcXNvcnRfd3JhcHBlcik7CisrICAgIHFzb3J0KGFycmF5LCBjb3VudCwgc2l6ZW9mKHN0cnVjdCBzcl9ycG1fcGFja2FnZSopLCBjbXBfbmV2cmFfcXNvcnRfd3JhcHBlcik7CisgCisgICAgIC8qIENyZWF0ZSBhIGxpbmtlZCBsaXN0IGZyb20gdGhlIHNvcnRlZCBhcnJheS4gKi8KKyAgICAgZm9yIChzaXplX3QgbG9vcCA9IDA7IGxvb3AgPCBjb3VudDsgKytsb29wKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL3NhdHlyXzAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL3NhdHlyXzAuMjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc5NWMzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvc2F0eXJfMC4yMy5iYgpAQCAtMCwwICsxLDMzIEBACitERVNDUklQVElPTiA9ICJTYXR5ciBpcyBhIGNvbGxlY3Rpb24gb2YgbG93LWxldmVsIGFsZ29yaXRobXMgZm9yIHByb2dyYW0gXAorZmFpbHVyZSBwcm9jZXNzaW5nLCBhbmFseXNpcywgYW5kIHJlcG9ydGluZyBzdXBwb3J0aW5nIGtlcm5lbCBzcGFjZSwgdXNlciBcCitzcGFjZSwgUHl0aG9uLCBhbmQgSmF2YSBwcm9ncmFtcyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FicnQvc2F0eXIiCitMSUNFTlNFID0gIkdQTHYyIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FicnQvc2F0eXIuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LXN1cHBvcnQtcHl0aG9uMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisiCitTUkNSRVYgPSAiNDc0MmZkNDg1N2M0NDZiOTZmNzEyZDUyZTJlNGNkMGI2Y2ZlNzM5OCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTICs9ICIgXAorICAgIGdkYiBcCisiCisKK1BBQ0tBR0VTICs9ICJweXRob24zLSR7UE59IgorRklMRVNfcHl0aG9uMy0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke0JQTn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIHJwbSIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbjMsIC0td2l0aG91dC1weXRob24zLCxweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob25tYW5wYWdlXSA9ICItLWVuYWJsZS1weXRob24tbWFucGFnZSwgLS1kaXNhYmxlLXB5dGhvbi1tYW5wYWdlIgorUEFDS0FHRUNPTkZJR1tycG1dID0gIi0td2l0aC1ycG0sIC0td2l0aG91dC1ycG0sIHJwbSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgJHtTfS9nZW4tdmVyc2lvbgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYgppbmRleCA4YWIyODE5Li4zMjk5YTc3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYgpAQCAtMTAsNiArMTAsNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcC8ke0JQTn0tJHtQVn0udGd6IFwKICAgICAgICAgICAgZmlsZTovL21ha2Utc3lzcm9vdC13b3JrLnBhdGNoIFwKICAgICAgICAgICAgIgorTUlSUk9SUyArPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AgaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0tc2NyaXB0cyIKIFJERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gImJhc2ggJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZC8wMDAxLXNlcmlhbF9mb3J3YXJkLURpc2FibGUtZGVmYXVsdC1zdGF0aWMtbGlua2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2VyaWFsLXV0aWxzL3NlcmlhbC1mb3J3YXJkLzAwMDEtc2VyaWFsX2ZvcndhcmQtRGlzYWJsZS1kZWZhdWx0LXN0YXRpYy1saW5raW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkY2M2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZC8wMDAxLXNlcmlhbF9mb3J3YXJkLURpc2FibGUtZGVmYXVsdC1zdGF0aWMtbGlua2luZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGEwZDgxNWFkOTkxOGFiYTk3N2FlZDkyNzViM2JmM2Q3NTBhMTcwOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAzMCBBdWcgMjAxNyAxOToyNDo0MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZXJpYWxfZm9yd2FyZDogRGlzYWJsZSBkZWZhdWx0IHN0YXRpYyBsaW5raW5nCisKK1RoaXMgZG9lcyBub3Qgd29yayB3aXRoIHNzcCB0dXJuZWQgb24gd2l0aCBoYXJkZW5pbmcgZmxhZ3Mgb24gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvc2VyaWFsX2ZvcndhcmQvc3JjL01ha2VmaWxlLmFtIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NlcmlhbF9mb3J3YXJkL3NyYy9NYWtlZmlsZS5hbSBiL3Rvb2xzL3NlcmlhbF9mb3J3YXJkL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggM2Y1OTgyODYuLmJjYWM5YmM5IDEwMDY0NAorLS0tIGEvdG9vbHMvc2VyaWFsX2ZvcndhcmQvc3JjL01ha2VmaWxlLmFtCisrKysgYi90b29scy9zZXJpYWxfZm9yd2FyZC9zcmMvTWFrZWZpbGUuYW0KK0BAIC0yMCw5ICsyMCw2IEBAIHNlcmlhbF9mb3J3YXJkX1NPVVJDRVMgPSBcCisgCWN5OG1ybG4uaCBcCisgCSQoTlVMTCkKKyAKKy1zZXJpYWxfZm9yd2FyZF9MREZMQUdTID0gXAorLQktYWxsLXN0YXRpYworLQorIHB0eV9mb3J3YXJkX1NPVVJDRVMgPSBcCisgCXB0eV9mb3J3YXJkLmMgXAorIAkkKE5VTEwpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZF9naXQuYmIKaW5kZXggNjQ5NGRlOS4uMGVmODI5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZXJpYWwtdXRpbHMvc2VyaWFsLWZvcndhcmRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2VyaWFsLXV0aWxzL3NlcmlhbC1mb3J3YXJkX2dpdC5iYgpAQCAtMywxMCArMywxMiBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViYjVjNTBhYjdjYWI0YmFlZmZiYTE0OTc3MDMwYzA3IgogU0VDVElPTiA9ICJjb25zb2xlL2RldmVsIgotU1JDUkVWID0gIjAwZGJlYzI2MzZhZTAzODVhZDAyODU4N2UyMGU0NDYyNzJmZjk3ZWMiCitTUkNSRVYgPSAiMDdjNmZkZWRlMDg3MGVkYzM3YThkNTFkMDMzYjZlN2UyOWFhN2M5MSIKIFBWID0gIjEuMStnaXRyJHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mcmVlc21hcnRwaG9uZS9jb3JudWNvcGlhLmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mcmVlc21hcnRwaG9uZS9jb3JudWNvcGlhLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlcmlhbF9mb3J3YXJkLURpc2FibGUtZGVmYXVsdC1zdGF0aWMtbGlua2luZy5wYXRjaDtzdHJpcGxldmVsPTMgXAorICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQvdG9vbHMvc2VyaWFsX2ZvcndhcmQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40Mi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQyLmJiCmluZGV4IGExMWJkNzcuLmM3ZGUwNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQyLmJiCkBAIC05LDYgKzksNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjkwZGE3ZmM1MjE3MjU5OWRiZjA4MmQ3NjIwZjE4Y2EiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3Avc2czX3V0aWxzLSR7UFZ9LnRneiIKK01JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjI4MDgwZGU1YmYyMjIyZjhiNTVhMjkwOTNiZWM4YWVhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkY2I3YTAzMDliZDBiYTNkNGE4M2FjYjUyNjk3M2I4MDEwNmVlMjZjZDlmNzM5ODE4NmNkM2YwNjMzYzllZjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMS1Vc2UtcHJhZ21hLW9uY2UtdW5jb25kaXRpb25hbGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDEtVXNlLXByYWdtYS1vbmNlLXVuY29uZGl0aW9uYWxseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjZhZTAwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDEtVXNlLXByYWdtYS1vbmNlLXVuY29uZGl0aW9uYWxseS5wYXRjaApAQCAtMCwwICsxLDg3MiBAQAorRnJvbSAzMTAwZTIzYzUwZTM4YmZmMGMyZWM3N2JjMzAwNDljMTEzYzI5NDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjA6NDQ6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzZdIFVzZSBwcmFnbWEgb25jZSB1bmNvbmRpdGlvbmFsbHkKKworaW4gT0Ugd2UgZG8gbm90IHdvcnJ5IGFib3V0IHN1cHBvcnRpbmcKK2djYyAzLjQgYW55d2F5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtCdW1wcyByZXF1aXJlZCBnY2MgdG8gYmUgPiAzLjRdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZWZpL2VmaS5oICAgICAgICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpLmggICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV9jZHJvbS5oICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfZGlzay5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXIuaCAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyX3BoeS5oICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9wb3J0LmggfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX3BoeS5oICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV9wb3J0LmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfcmFpZF9pbmZvLmggICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX3RhcGUuaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYXJyYXkuaCAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2Jsb2NrX2RldmljZS5oICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9jYWNoZS5oICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvY29udGFpbmVyLmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2NvbnRleHRfbWFuYWdlci5oICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9jb250cm9sbGVyLmggICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvZW5jbG9zdXJlLmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2VuZF9kZXZpY2UuaCAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9ldmVudC5oICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvZXZlbnRfbWFuYWdlci5oICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2V4Y2VwdGlvbi5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9maWxlc3lzdGVtLmggICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaS5oICAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfY2Ryb20uaCAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX2Rpc2suaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV9leHBhbmRlci5oICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcGh5LmggICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BvcnQuaCAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV9waHkuaCAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfcG9ydC5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX3JhaWRfaW5mby5oICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV90YXBlLmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2xpc3QuaCAgICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9tZGFkbV9jb25maWcuaCAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvbXVsdGltZWRpYV9kZXZpY2UuaCAgICB8IDIgLS0KKyBsaWIvZW5naW5lL25vbmRpc2tfZGV2aWNlLmggICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9vYmplY3QuaCAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvcGNpX2hlYWRlci5oICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3BoeS5oICAgICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9wb3J0LmggICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvcmFpZF9kZXZpY2UuaCAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3JhaWRfaW5mby5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9yZW1vdGVfcG9ydC5oICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvcm91dGluZ19kZXZpY2UuaCAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3Nlc3Npb24uaCAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9zZXNzaW9uX21hbmFnZXIuaCAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvc3RvcmFnZV9kZXZpY2UuaCAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3N0cmVhbV9kZXZpY2UuaCAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9zdHJpbmcuaCAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuaCAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3V0aWxzLmggICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS92b2x1bWUuaCAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9sb2cvbG9nLmggICAgICAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvbXBiL21hY2hpbmVfYnl0ZXMuaCAgICAgICAgICAgfCAyIC0tCisgbGliL21wYi9tcGIuaCAgICAgICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9vcm9tL29yb20uaCAgICAgICAgICAgICAgICAgICB8IDIgLS0KKyA1NyBmaWxlcyBjaGFuZ2VkLCAxMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZWZpL2VmaS5oIGIvbGliL2VmaS9lZmkuaAoraW5kZXggOWU3ZTQxYi4uODA0ZTU2NyAxMDA2NDQKKy0tLSBhL2xpYi9lZmkvZWZpLmgKKysrKyBiL2xpYi9lZmkvZWZpLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0VGSV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0VGSV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpLmggYi9saWIvZW5naW5lL2FoY2kuaAoraW5kZXggZTg4M2QxYS4uODBhOTY5OSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYWhjaS5oCisrKysgYi9saWIvZW5naW5lL2FoY2kuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0FIQ0lfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV9jZHJvbS5oIGIvbGliL2VuZ2luZS9haGNpX2Nkcm9tLmgKK2luZGV4IDQ0MmYzMDEuLmQ4Y2EwNDIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfY2Ryb20uaAorKysrIGIvbGliL2VuZ2luZS9haGNpX2Nkcm9tLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfQ0RST01fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX0NEUk9NX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfZGlzay5oIGIvbGliL2VuZ2luZS9haGNpX2Rpc2suaAoraW5kZXggNzg5MmE1My4uMWJhZDlhZCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYWhjaV9kaXNrLmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9kaXNrLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfRElTS19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0FIQ0lfRElTS19IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXIuaCBiL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyLmgKK2luZGV4IGQ2M2U5YmMuLjEwMjlhZjIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllci5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX01VTFRJUExJRVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX01VTFRJUExJRVJfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyX3BoeS5oIGIvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcGh5LmgKK2luZGV4IDU4ZWNlYmMuLjIxMzJjMjMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9waHkuaAorKysrIGIvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcGh5LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfTVVMVElQTElFUl9QSFlfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX01VTFRJUExJRVJfUEhZX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9wb3J0LmggYi9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9wb3J0LmgKK2luZGV4IDVmZjRjZjcuLjI0MDI0NzMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9wb3J0LmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyX3BvcnQuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9NVUxUSVBMSUVSX1BPUlRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX01VTFRJUExJRVJfUE9SVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX3BoeS5oIGIvbGliL2VuZ2luZS9haGNpX3BoeS5oCitpbmRleCBlMjI1NGU3Li5hNDRkYWUwIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX3BoeS5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfcGh5LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfUEhZX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9QSFlfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV9wb3J0LmggYi9saWIvZW5naW5lL2FoY2lfcG9ydC5oCitpbmRleCBmOWUzMzA4Li4wM2MxMDliIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX3BvcnQuaAorKysrIGIvbGliL2VuZ2luZS9haGNpX3BvcnQuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9QT1JUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9QT1JUX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfcmFpZF9pbmZvLmggYi9saWIvZW5naW5lL2FoY2lfcmFpZF9pbmZvLmgKK2luZGV4IGUxYzgxYWUuLmM3MGU2M2UgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfcmFpZF9pbmZvLmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9yYWlkX2luZm8uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9SQUlEX0lORk9fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX1JBSURfSU5GT19IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX3RhcGUuaCBiL2xpYi9lbmdpbmUvYWhjaV90YXBlLmgKK2luZGV4IGNkZDlmMTMuLmE5MWZkMmMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfdGFwZS5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfdGFwZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX1RBUEVfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX1RBUEVfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYXJyYXkuaCBiL2xpYi9lbmdpbmUvYXJyYXkuaAoraW5kZXggMzZmYjRhNC4uMDk4NmNlMyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYXJyYXkuaAorKysrIGIvbGliL2VuZ2luZS9hcnJheS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BUlJBWV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0FSUkFZX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2Jsb2NrX2RldmljZS5oIGIvbGliL2VuZ2luZS9ibG9ja19kZXZpY2UuaAoraW5kZXggNDUwMzkxNC4uNDVkZDNkYiAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYmxvY2tfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvYmxvY2tfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0JMT0NLX0RFVklDRV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0JMT0NLX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9jYWNoZS5oIGIvbGliL2VuZ2luZS9jYWNoZS5oCitpbmRleCA3MmNmNTIxLi43MmRhMjBiIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9jYWNoZS5oCisrKysgYi9saWIvZW5naW5lL2NhY2hlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQ0FDSEVfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19DQUNIRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9jb250YWluZXIuaCBiL2xpYi9lbmdpbmUvY29udGFpbmVyLmgKK2luZGV4IDUzODY3YjAuLmM3MTE4MGMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2NvbnRhaW5lci5oCisrKysgYi9saWIvZW5naW5lL2NvbnRhaW5lci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMyw0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0NPTlRBSU5FUl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0NPTlRBSU5FUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9jb250ZXh0X21hbmFnZXIuaCBiL2xpYi9lbmdpbmUvY29udGV4dF9tYW5hZ2VyLmgKK2luZGV4IGZlOWMyNTYuLjZiNGEyZTcgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2NvbnRleHRfbWFuYWdlci5oCisrKysgYi9saWIvZW5naW5lL2NvbnRleHRfbWFuYWdlci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMyw0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0NPTlRFWFRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19DT05URVhUX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2NvbnRyb2xsZXIuaCBiL2xpYi9lbmdpbmUvY29udHJvbGxlci5oCitpbmRleCBhMmYxODhhLi42YmQwNzhmIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9jb250cm9sbGVyLmgKKysrKyBiL2xpYi9lbmdpbmUvY29udHJvbGxlci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19DT05UUk9MTEVSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQ09OVFJPTExFUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9lbmNsb3N1cmUuaCBiL2xpYi9lbmdpbmUvZW5jbG9zdXJlLmgKK2luZGV4IDNmYWVmMGMuLmY0YjEzY2MgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2VuY2xvc3VyZS5oCisrKysgYi9saWIvZW5naW5lL2VuY2xvc3VyZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FTkNMT1NVUkVfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FTkNMT1NVUkVfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvZW5kX2RldmljZS5oIGIvbGliL2VuZ2luZS9lbmRfZGV2aWNlLmgKK2luZGV4IGYxNDdlNDEuLjI2OWIyMzYgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2VuZF9kZXZpY2UuaAorKysrIGIvbGliL2VuZ2luZS9lbmRfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0VORF9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FTkRfREVWSUNFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2V2ZW50LmggYi9saWIvZW5naW5lL2V2ZW50LmgKK2luZGV4IGNmOWJiNGYuLjExYTQ5MjYgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2V2ZW50LmgKKysrKyBiL2xpYi9lbmdpbmUvZXZlbnQuaAorQEAgLTEyLDkgKzEyLDcgQEAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0VWRU5UX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fRVZFTlRfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvZXZlbnRfbWFuYWdlci5oIGIvbGliL2VuZ2luZS9ldmVudF9tYW5hZ2VyLmgKK2luZGV4IDY1MDA3YjkuLmE3YThmYzMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2V2ZW50X21hbmFnZXIuaAorKysrIGIvbGliL2VuZ2luZS9ldmVudF9tYW5hZ2VyLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0VWRU5UX01BTkFHRVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FVkVOVF9NQU5BR0VSX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2V4Y2VwdGlvbi5oIGIvbGliL2VuZ2luZS9leGNlcHRpb24uaAoraW5kZXggMTcxZTQ1ZC4uMTgzZWJiNSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvZXhjZXB0aW9uLmgKKysrKyBiL2xpYi9lbmdpbmUvZXhjZXB0aW9uLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0VYQ0VQVElPTl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0VYQ0VQVElPTl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9maWxlc3lzdGVtLmggYi9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uaAoraW5kZXggOWMyY2UzOS4uYjQ5ZGYwNyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvZmlsZXN5c3RlbS5oCisrKysgYi9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fRklMRVNZU1RFTV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0ZJTEVTWVNURU1fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaS5oIGIvbGliL2VuZ2luZS9pc2NpLmgKK2luZGV4IGVhMzVjZDQuLjBmYTYwMmEgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2kuaAorKysrIGIvbGliL2VuZ2luZS9pc2NpLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfY2Ryb20uaCBiL2xpYi9lbmdpbmUvaXNjaV9jZHJvbS5oCitpbmRleCA4N2I3ZTdiLi4yNTYzN2Y5IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX2Nkcm9tLmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV9jZHJvbS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX0NEUk9NX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9DRFJPTV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX2Rpc2suaCBiL2xpYi9lbmdpbmUvaXNjaV9kaXNrLmgKK2luZGV4IDU5NmMzY2YuLjhkZDBkYWUgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfZGlzay5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfZGlzay5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX0RJU0tfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX0RJU0tfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlci5oIGIvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyLmgKK2luZGV4IGNhN2MyZjEuLjdkYzE5MjAgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXIuaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfRVhQQU5ERVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX0VYUEFOREVSX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcGh5LmggYi9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcGh5LmgKK2luZGV4IGM5Y2Q3NzAuLmQzZDI4MzIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcGh5LmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlcl9waHkuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9FWFBBTkRFUl9QSFlfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX0VYUEFOREVSX1BIWV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BvcnQuaCBiL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlcl9wb3J0LmgKK2luZGV4IGU2NWExMjQuLjRmYzkzMTAgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcG9ydC5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcG9ydC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX0VYUEFOREVSX1BPUlRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX0VYUEFOREVSX1BPUlRfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV9waHkuaCBiL2xpYi9lbmdpbmUvaXNjaV9waHkuaAoraW5kZXggNzY3YTViMi4uMTA1YzY5NyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvaXNjaV9waHkuaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX3BoeS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX1BIWV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0lTQ0lfUEhZX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfcG9ydC5oIGIvbGliL2VuZ2luZS9pc2NpX3BvcnQuaAoraW5kZXggYjgwYmU3Zi4uNWNjYzE1MSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvaXNjaV9wb3J0LmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV9wb3J0LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfUE9SVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0lTQ0lfUE9SVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX3JhaWRfaW5mby5oIGIvbGliL2VuZ2luZS9pc2NpX3JhaWRfaW5mby5oCitpbmRleCAxZGY2NDc3Li5iMGIwNDZhIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX3JhaWRfaW5mby5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfcmFpZF9pbmZvLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfUkFJRF9JTkZPX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9SQUlEX0lORk9fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV90YXBlLmggYi9saWIvZW5naW5lL2lzY2lfdGFwZS5oCitpbmRleCA5ODVmNzY3Li5hMmNlZjJkIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX3RhcGUuaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX3RhcGUuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9UQVBFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9UQVBFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2xpc3QuaCBiL2xpYi9lbmdpbmUvbGlzdC5oCitpbmRleCA5YTdjM2MzLi42Mzk1ODMwIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9saXN0LmgKKysrKyBiL2xpYi9lbmdpbmUvbGlzdC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19MSVNUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fTElTVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuaCBiL2xpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmgKK2luZGV4IGM5NDAyMGYuLmU0MTViNGYgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL21kYWRtX2NvbmZpZy5oCisrKysgYi9saWIvZW5naW5lL21kYWRtX2NvbmZpZy5oCitAQCAtMTEsOSArMTEsNyBAQCBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fTURBRE1fQ09ORklHX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fTURBRE1fQ09ORklHX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL211bHRpbWVkaWFfZGV2aWNlLmggYi9saWIvZW5naW5lL211bHRpbWVkaWFfZGV2aWNlLmgKK2luZGV4IDUzMzM3MGUuLjY5NGUyYTUgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL211bHRpbWVkaWFfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvbXVsdGltZWRpYV9kZXZpY2UuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fTVVMVElNRURJQV9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19NVUxUSU1FRElBX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9ub25kaXNrX2RldmljZS5oIGIvbGliL2VuZ2luZS9ub25kaXNrX2RldmljZS5oCitpbmRleCA3MGViYjMyLi4wZjAwZTUyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9ub25kaXNrX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL25vbmRpc2tfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0NIQVJBQ1RFUl9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19DSEFSQUNURVJfREVWSUNFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL29iamVjdC5oIGIvbGliL2VuZ2luZS9vYmplY3QuaAoraW5kZXggYjUyZDNkMy4uMzQ1ZDU4YyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvb2JqZWN0LmgKKysrKyBiL2xpYi9lbmdpbmUvb2JqZWN0LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX09CSkVDVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX09CSkVDVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9wY2lfaGVhZGVyLmggYi9saWIvZW5naW5lL3BjaV9oZWFkZXIuaAoraW5kZXggMzc2ZjI5Ni4uYzUxMjlhMCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvcGNpX2hlYWRlci5oCisrKysgYi9saWIvZW5naW5lL3BjaV9oZWFkZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUENJX0hFQURFUl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1BDSV9IRUFERVJfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvcGh5LmggYi9saWIvZW5naW5lL3BoeS5oCitpbmRleCBmNTczMGEwLi5jNTlmN2M4IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9waHkuaAorKysrIGIvbGliL2VuZ2luZS9waHkuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUEhZX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fUEhZX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3BvcnQuaCBiL2xpYi9lbmdpbmUvcG9ydC5oCitpbmRleCAyZjMzODc2Li5jYzQ4YzdjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9wb3J0LmgKKysrKyBiL2xpYi9lbmdpbmUvcG9ydC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMyw0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1BPUlRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19QT1JUX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3JhaWRfZGV2aWNlLmggYi9saWIvZW5naW5lL3JhaWRfZGV2aWNlLmgKK2luZGV4IDk5OGU4MGMuLjIxNzQxNjIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3JhaWRfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvcmFpZF9kZXZpY2UuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUkFJRF9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19SQUlEX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9yYWlkX2luZm8uaCBiL2xpYi9lbmdpbmUvcmFpZF9pbmZvLmgKK2luZGV4IDE3NDY5OGEuLjMwMmJlOWIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3JhaWRfaW5mby5oCisrKysgYi9saWIvZW5naW5lL3JhaWRfaW5mby5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19SQUlEX0lORk9fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19SQUlEX0lORk9fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvcmVtb3RlX3BvcnQuaCBiL2xpYi9lbmdpbmUvcmVtb3RlX3BvcnQuaAoraW5kZXggYzA4NjY1Ni4uNGRkZmVlMyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvcmVtb3RlX3BvcnQuaAorKysrIGIvbGliL2VuZ2luZS9yZW1vdGVfcG9ydC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19SRU1PVEVfUE9SVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1JFTU9URV9QT1JUX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3JvdXRpbmdfZGV2aWNlLmggYi9saWIvZW5naW5lL3JvdXRpbmdfZGV2aWNlLmgKK2luZGV4IDVmODU3YTYuLjI4NDYyMWUgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3JvdXRpbmdfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvcm91dGluZ19kZXZpY2UuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUk9VVElOR19ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19ST1VUSU5HX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9zZXNzaW9uLmggYi9saWIvZW5naW5lL3Nlc3Npb24uaAoraW5kZXggYTkwMWQxYy4uMzIwMGRhMSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvc2Vzc2lvbi5oCisrKysgYi9saWIvZW5naW5lL3Nlc3Npb24uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fU0VTU0lPTl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1NFU1NJT05fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvc2Vzc2lvbl9tYW5hZ2VyLmggYi9saWIvZW5naW5lL3Nlc3Npb25fbWFuYWdlci5oCitpbmRleCA3MTc3MDY0Li44N2UxNmMzIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9zZXNzaW9uX21hbmFnZXIuaAorKysrIGIvbGliL2VuZ2luZS9zZXNzaW9uX21hbmFnZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fU0VTU0lPTl9NQU5BR0VSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fU0VTU0lPTl9NQU5BR0VSX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3N0b3JhZ2VfZGV2aWNlLmggYi9saWIvZW5naW5lL3N0b3JhZ2VfZGV2aWNlLmgKK2luZGV4IGRkZWI2NmYuLjIwYmRhYjIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3N0b3JhZ2VfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvc3RvcmFnZV9kZXZpY2UuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fU1RPUkFHRV9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19TVE9SQUdFX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9zdHJlYW1fZGV2aWNlLmggYi9saWIvZW5naW5lL3N0cmVhbV9kZXZpY2UuaAoraW5kZXggOWJjMTExYS4uYjI5YmQ2OCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvc3RyZWFtX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL3N0cmVhbV9kZXZpY2UuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fU1RSRUFNX0RFVklDRV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1NUUkVBTV9ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvc3RyaW5nLmggYi9saWIvZW5naW5lL3N0cmluZy5oCitpbmRleCAzMDA3ZGM3Li42ZjM0OGM5IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9zdHJpbmcuaAorKysrIGIvbGliL2VuZ2luZS9zdHJpbmcuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fU1RSSU5HX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fU1RSSU5HX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmggYi9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmgKK2luZGV4IGZlNzllYWMuLjRhMTM2MjcgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmgKKysrKyBiL2xpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fVU5JUVVFX0lEX01BTkFHRVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19VTklRVUVfSURfTUFOQUdFUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS91dGlscy5oIGIvbGliL2VuZ2luZS91dGlscy5oCitpbmRleCA4NmMyMGNmLi41NTI1MzAzIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS91dGlscy5oCisrKysgYi9saWIvZW5naW5lL3V0aWxzLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1VUSUxTX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fVVRJTFNfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvdm9sdW1lLmggYi9saWIvZW5naW5lL3ZvbHVtZS5oCitpbmRleCA5YTYzY2JmLi4zMzQ3YjMxIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS92b2x1bWUuaAorKysrIGIvbGliL2VuZ2luZS92b2x1bWUuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucworIGNsYXNzIEFycmF5OworZGlmZiAtLWdpdCBhL2xpYi9sb2cvbG9nLmggYi9saWIvbG9nL2xvZy5oCitpbmRleCBjMGJkNjNlLi44YjVmMTcxIDEwMDY0NAorLS0tIGEvbGliL2xvZy9sb2cuaAorKysrIGIvbGliL2xvZy9sb2cuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fTE9HX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fTE9HX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvbXBiL21hY2hpbmVfYnl0ZXMuaCBiL2xpYi9tcGIvbWFjaGluZV9ieXRlcy5oCitpbmRleCA3ZmJiMGU5Li44MDBiMTIwIDEwMDY0NAorLS0tIGEvbGliL21wYi9tYWNoaW5lX2J5dGVzLmgKKysrKyBiL2xpYi9tcGIvbWFjaGluZV9ieXRlcy5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FTkRJQU5fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FTkRJQU5fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9tcGIvbXBiLmggYi9saWIvbXBiL21wYi5oCitpbmRleCAwMTc4MmFmLi5jNDJjZGZiIDEwMDY0NAorLS0tIGEvbGliL21wYi9tcGIuaAorKysrIGIvbGliL21wYi9tcGIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fTVBCX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fTVBCX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvb3JvbS9vcm9tLmggYi9saWIvb3JvbS9vcm9tLmgKK2luZGV4IGY3NmUzZWUuLmUxMDMxMWQgMTAwNjQ0CistLS0gYS9saWIvb3JvbS9vcm9tLmgKKysrKyBiL2xpYi9vcm9tL29yb20uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fT1JPTV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX09ST01fSF9fSU5DTFVERURfXworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDEtc3NpZXZlbnRtb25pdG9yLW9yZGVyZWQtY29tcGFyaXNvbi1iZXR3ZWVuLXBvaW50ZXJzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAxLXNzaWV2ZW50bW9uaXRvci1vcmRlcmVkLWNvbXBhcmlzb24tYmV0d2Vlbi1wb2ludGVycy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkZjliNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAxLXNzaWV2ZW50bW9uaXRvci1vcmRlcmVkLWNvbXBhcmlzb24tYmV0d2Vlbi1wb2ludGVycy0ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBlYTllY2Y0YmYzMDVmOTUwOWQ1ODIyYjM4MjM2NThhNDAxNjJmNDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjUgSnVsIDIwMTcgMTk6MDg6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3NpZXZlbnRtb25pdG9yOiBvcmRlcmVkIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVycyBhbmQKKyB6ZXJvLCBhY3R1YWxseSB3aXRoIE5VTEwKKworQ29tcGFyaW5nIHdoaWNoIGlzIGxhcmdlIG9yIHNtYWxsIGJldHdlZW4gYSBwb2ludGVyIGFuZCBOVUxMCitob3dldmVyLCBsb29rcyBjb21wbGV0ZWx5IGlsbG9naWNhbC4gT3JkZXJlZCBjb21wYXJpc29uIG9mCit0d28gdmFsaWQgcG9pbnRlcnMgaXMgbGVnaXQsIGJ1dCBubyBwb2ludGVyIHdpbGwgYmUgc21hbGxlcgordGhhbiBOVUxMICwgc28gY29tcGFyaW5nIGlmIGEgcG9pbnRlciBpcyBsYXJnZXIgdGhhbiBOVUxMCitzaW1wbHkgbWVhbnMgaWYgdGhlIHBvaW50ZXIgaXMgbm90IE5VTEwuCisKK0ZpeGVzIGVycm9ycyBmb3VuZCB3aXRoIGNsYW5nIGUuZy4KKworfCBzc2lldmVudG1vbml0b3IuY3BwOjMzOTo1MzogZXJyb3I6IG9yZGVyZWQgY29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXIgYW5kIHplcm8gKCdjaGFyIConIGFuZCAnaW50JykKK3wgICAgICAgICAgICAgICAgIGlmIChmZ2V0cyhuZXh0bGluZSwgc2l6ZW9mKG5leHRsaW5lKSAtIDEsIG1kc3RhdCkgPCAwKSB7Cit8ICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+IF4gfgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAgYi90b29scy9zc2lldmVudG1vbml0b3IuY3BwCitpbmRleCBmMDRiOGYwLi43YTAwMTIyIDEwMDY0NAorLS0tIGEvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcAorKysrIGIvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcAorQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgaW50IF9yZWFkX21kc3RhdChpbnQgZmQpCisgCWlmICghc3RybmNtcChsaW5lLCAibWQiLCAyKSkgeworIAkgICAgaWYgKHN0cnN0cihsaW5lLCBJTkFDVElWRV9TVFIpKSB7IC8qIHBvc3NpYmx5IGNvbnRhaW5lciAqLworIAkJY2hhciBuZXh0bGluZVsxMDI0XTsKKy0JCWlmIChmZ2V0cyhuZXh0bGluZSwgc2l6ZW9mKG5leHRsaW5lKSAtIDEsIG1kc3RhdCkgPCAwKSB7CisrCQlpZiAoZmdldHMobmV4dGxpbmUsIHNpemVvZihuZXh0bGluZSkgLSAxLCBtZHN0YXQpICE9IChjaGFyICopIE5VTEwpIHsKKyAJCSAgICBmY2xvc2UobWRzdGF0KTsKKyAJCSAgICByZXR1cm4gMTsKKyAJCX0KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAyLUNvbnZlcnQtbWFjcm9zLWludG8tZnVuY3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDItQ29udmVydC1tYWNyb3MtaW50by1mdW5jdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxMzAxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAyLUNvbnZlcnQtbWFjcm9zLWludG8tZnVuY3Rpb25zLnBhdGNoCkBAIC0wLDAgKzEsMTIzIEBACitGcm9tIDEzMzhlZTRlNjljNDY1ZjhmMzgxZWMzYmZlNTA1ODA4MDIzNmVkYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBKdW4gMjAxNyAyMjowODozNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNl0gQ29udmVydCBtYWNyb3MgaW50byBmdW5jdGlvbnMKKworVGhpcyBoZWxwcyBpbiBmaXhpbmcgdGhlIHNlY3VyaXR5IGZvcm1hdCB3YXJuaW5ncworYWRkIC1mbm8tYnVpbHRpbi1sb2cKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZW5naW5lL01ha2VmaWxlLmFtIHwgIDMgKystCisgbGliL2xvZy9NYWtlZmlsZS5hbSAgICB8ICAyICsrCisgbGliL2xvZy9sb2cuaCAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgIHwgIDMgKystCisgNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworSW5kZXg6IHNzaWFwaS4xLjAuMS9saWIvZW5naW5lL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3NpYXBpLjEuMC4xLm9yaWcvbGliL2VuZ2luZS9NYWtlZmlsZS5hbQorKysrIHNzaWFwaS4xLjAuMS9saWIvZW5naW5lL01ha2VmaWxlLmFtCitAQCAtMTEzLDQgKzExMyw1IEBAIGxpYmVuZ2luZV9sYV9TT1VSQ0VTID0gICAgICAgICAgXAorIGxpYmVuZ2luZV9sYV9DUFBGTEFHUyA9ICAgICAgICAgXAorICAgICAgICAgLUkkKHRvcF9zcmNkaXIpICAgICAgICAgXAorICAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgXAorLSAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2xpYgorKyAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2xpYiAgICAgXAorKyAgICAgICAgLWZuby1idWlsdGluLWxvZworSW5kZXg6IHNzaWFwaS4xLjAuMS9saWIvbG9nL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3NpYXBpLjEuMC4xLm9yaWcvbGliL2xvZy9NYWtlZmlsZS5hbQorKysrIHNzaWFwaS4xLjAuMS9saWIvbG9nL01ha2VmaWxlLmFtCitAQCAtNSwzICs1LDUgQEAgbm9pbnN0X0xUTElCUkFSSUVTID0gbGlibG9nLmxhCisgbGlibG9nX2xhX1NPVVJDRVMgPSAgICAgXAorICAgICAgICAgbG9nLmMgICAgICAgICAgIFwKKyAgICAgICAgIGxvZy5oCisrCisrbGlibG9nX2xhX0NQUEZMQUdTID0gLWZuby1idWlsdGluLWxvZworSW5kZXg6IHNzaWFwaS4xLjAuMS9saWIvbG9nL2xvZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3NpYXBpLjEuMC4xLm9yaWcvbGliL2xvZy9sb2cuaAorKysrIHNzaWFwaS4xLjAuMS9saWIvbG9nL2xvZy5oCitAQCAtMjMsNyArMjMsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHCisgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCistCisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorIC8qICovCisgZW51bSBsb2dfbGV2ZWwgeworICAgICBMT0dfRklSU1QgPSAwLAorQEAgLTM3LDI2ICszNywzNCBAQCBlbnVtIGxvZ19sZXZlbCB7CisgfTsKKyAKKyAvKiAqLworLSNkZWZpbmUgbG9nKF9fbGV2ZWwsIF9fZm9ybWF0LCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGRvIHsgaWYgKGxvZ19nZXRfbGV2ZWwoKSA+PSAoZW51bSBsb2dfbGV2ZWwpKF9fbGV2ZWwpKSAgICAgIFwKKy0gICAgICAgIF9fbG9nKF9fbGV2ZWwsIF9fZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgXAorLSAgICB9IHdoaWxlICgwKQorLQorLSNkZWZpbmUgZGxvZyhfX2Zvcm1hdCwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLQlsb2coTE9HX0RFQlVHLCBfX2Zvcm1hdCwgIyMgX19WQV9BUkdTX18pOworK3ZvaWQgX19sb2coZW51bSBsb2dfbGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorKyAgICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAyLCAzKSkpOworIAorIC8qICovCistdm9pZCBsb2dfaW5pdChlbnVtIGxvZ19sZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqcGF0aCk7CisrZW51bSBsb2dfbGV2ZWwgbG9nX2dldF9sZXZlbCh2b2lkKTsKKyAKKyAvKiAqLworLXZvaWQgbG9nX2Zpbmkodm9pZCk7CistCisrc3RhdGljIGlubGluZSB2b2lkIGxvZyhlbnVtIGxvZ19sZXZlbCBfX2xldmVsLCBjb25zdCBjaGFyKiBfX2Zvcm1hdCwgLi4uKSB7CisrICAgIHZhX2xpc3QgYXA7CisrICAgIHZhX3N0YXJ0KGFwLCBfX2Zvcm1hdCk7CisrICAgIGRvIHsKKysgICAgICAgICBpZiAobG9nX2dldF9sZXZlbCgpID49IChlbnVtIGxvZ19sZXZlbCkoX19sZXZlbCkpCisrICAgICAgICAgICAgX19sb2coX19sZXZlbCwgX19mb3JtYXQsIGFwKTsKKysgICAgfSB3aGlsZSAoMCk7CisrICAgIHZhX2VuZChhcCk7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdm9pZCBkbG9nKGNvbnN0IGNoYXIqIF9fZm9ybWF0LCAuLi4pIHsKKysgICAgdmFfbGlzdCBhcDsKKysgICAgdmFfc3RhcnQoYXAsIF9fZm9ybWF0KTsKKysJbG9nKExPR19ERUJVRywgX19mb3JtYXQsIGFwKTsKKysgICAgdmFfZW5kKGFwKTsKKyt9CisgLyogKi8KKy12b2lkIF9fbG9nKGVudW0gbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKy0gICAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMiwgMykpKTsKKyt2b2lkIGxvZ19pbml0KGVudW0gbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICpwYXRoKTsKKyAKKyAvKiAqLworLWVudW0gbG9nX2xldmVsIGxvZ19nZXRfbGV2ZWwodm9pZCk7Cisrdm9pZCBsb2dfZmluaSh2b2lkKTsKKyAKKyAvKiAqLworIHZvaWQgbG9nX3NldF9sZXZlbChlbnVtIGxvZ19sZXZlbCBsZXZlbCk7CitJbmRleDogc3NpYXBpLjEuMC4xL3NyYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL3NyYy9NYWtlZmlsZS5hbQorKysrIHNzaWFwaS4xLjAuMS9zcmMvTWFrZWZpbGUuYW0KK0BAIC03LDcgKzcsOCBAQCBsaWJfTFRMSUJSQVJJRVMgPSBsaWJzc2kubGEKKyBsaWJzc2lfbGFfQ1BQRkxBR1MgPSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgLUkkKHRvcF9zcmNkaXIpICAgICAgICAgICAgICAgICBcCisgICAgICAgICAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAgICAgICAgIFwKKy0gICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9saWIKKysgICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9saWIgICAgICAgICAgICAgXAorKyAgICAgICAgLWZuby1idWlsdGluLWxvZworIAorIGxpYnNzaV9sYV9MREZMQUdTID0gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAkKFNHVVRJTFNfTERGTEFHUykgICAgICAgICAgICAgIFwKK0luZGV4OiBzc2lhcGkuMS4wLjEvbGliL2VmaS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL2xpYi9lZmkvTWFrZWZpbGUuYW0KKysrKyBzc2lhcGkuMS4wLjEvbGliL2VmaS9NYWtlZmlsZS5hbQorQEAgLTUsMyArNSw0IEBAIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmVmaS5sYQorIGxpYmVmaV9sYV9TT1VSQ0VTID0gICAgICAgICAgICAgXAorICAgICBlZmkuY3BwICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGVmaS5oCisrbGliZWZpX2xhX0NQUEZMQUdTID0gLWZuby1idWlsdGluLWxvZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDMtUmVwbGFjZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLXdpdGgtcmVhbHBhdGgtQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDMtUmVwbGFjZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLXdpdGgtcmVhbHBhdGgtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Y2Q0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMy1SZXBsYWNlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUtd2l0aC1yZWFscGF0aC1BUEkucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA3ODEyODhkNjMwNzAwMmNjZTcwZGRhZmI2ZWZiMjAwYjdmNjAyOTRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjI6MTI6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIFJlcGxhY2UgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSB3aXRoIHJlYWxwYXRoKCkgQVBJCisKK0ZpeGVkIGJ1aWxkIG9uIG11c2wgd2hlcmUgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSBpcyBub3QgaW1wbGVtZW50ZWQKKworZmlsZXN5c3RlbS5jcHA6NDY6MTU6IGVycm9yOiAnY2Fub25pY2FsaXplX2ZpbGVfbmFtZScgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgIGNoYXIgKnAgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKHBhdGgpOworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9lbmdpbmUvZmlsZXN5c3RlbS5jcHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uY3BwIGIvbGliL2VuZ2luZS9maWxlc3lzdGVtLmNwcAoraW5kZXggYjk5MjU3ZS4uNjA2NDgzNyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvZmlsZXN5c3RlbS5jcHAKKysrKyBiL2xpYi9lbmdpbmUvZmlsZXN5c3RlbS5jcHAKK0BAIC00Myw3ICs0Myw3IEBAIHZvaWQgQ2Fub25pY2FsUGF0aDo6X19jYW5vbmljYWxpemVfcGF0aF9uYW1lKGNvbnN0IGNoYXIgKnBhdGgpCisgICAgIGlmIChwYXRoID09IDApIHsKKyAgICAgICAgIHRocm93IEVfTlVMTF9QT0lOVEVSOworICAgICB9CistICAgIGNoYXIgKnAgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKHBhdGgpOworKyAgICBjaGFyICpwID0gcmVhbHBhdGgocGF0aCwgTlVMTCk7CisgICAgIGFzc2lnbihwKTsKKyAgICAgaWYgKHApIHsKKyAgICAgICAgIGZyZWUocCk7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNC1lbmdpbmUtRml4LWluZGVudGF0aW9uLWFuZC1taXNzaW5nLXNlbWktY29sb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNC1lbmdpbmUtRml4LWluZGVudGF0aW9uLWFuZC1taXNzaW5nLXNlbWktY29sb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjZTBkYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA0LWVuZ2luZS1GaXgtaW5kZW50YXRpb24tYW5kLW1pc3Npbmctc2VtaS1jb2xvbi5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDA0ZThiOTlkODE5NWEwZTM5OTgyZWNkMjc4MDI0MjE2MTA2MzM3MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBKdW4gMjAxNyAyMjoxODozMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNl0gZW5naW5lOiBGaXggaW5kZW50YXRpb24gYW5kIG1pc3Npbmcgc2VtaS1jb2xvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmNwcCAgICAgIHwgNSArKystLQorIGxpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuY3BwIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuY3BwIGIvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuY3BwCitpbmRleCAxOTE0ZGRjLi5lNDBjMmM3IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuY3BwCisrKysgYi9saWIvZW5naW5lL21kYWRtX2NvbmZpZy5jcHAKK0BAIC0xMTgsOSArMTE4LDEwIEBAIHZvaWQgY2hlY2tfY29uZmlndXJhdGlvbigpCisgICAgICAgICBhdHRyID4+IGNvbmZpZzsKKyAgICAgICAgIGNvbmZpZ09rID0gY29ycmVjdF9jb25maWcoY29uZmlnKTsKKyAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CistICAgICAgICBpZiAoZXggIT0gRV9OT1RfRk9VTkQpCisrICAgICAgICBpZiAoZXggIT0gRV9OT1RfRk9VTkQpIHsKKyAgICAgICAgICAgICBkbG9nKCJXYXJuaW5nOiBtZGFkbSBjb25maWcgZmlsZSBjYW5ub3QgYmUgcmVhZCwgbmV3IG9uZSB3aWxsIGJlIHdyaXR0ZW4iKTsKKyAgICAgICAgICAgICBiYWNrdXAgPSBmYWxzZTsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAoY29uZmlnT2sgJiYgbW9uaXRvcl9ydW5uaW5nKCkpIHsKK0BAIC0xMzQsNyArMTM1LDcgQEAgdm9pZCBjaGVja19jb25maWd1cmF0aW9uKCkKKyAgICAgICAgICAgICBkbG9nKCJXYXJuaW5nOiBmYWlsZWQgdG8gdXBkYXRlIG1kYWRtLmNvbmYiKTsKKyAgICAgfQorICAgICBpZiAocmVzdGFydF9tb25pdG9yKCkgPT0gMCkKKy0gICAgICAgIGRsb2coIk1vbml0b3IgcmVzdGFydGVkIHN1Y2Nlc3NmdWxseSIpCisrICAgICAgICBkbG9nKCJNb25pdG9yIHJlc3RhcnRlZCBzdWNjZXNzZnVsbHkiKTsKKyAgICAgZWxzZQorICAgICAgICAgZGxvZygiRXJyb3Igc3RhcnRpbmcgTW9uaXRvciIpOworIH0KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmNwcCBiL2xpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuY3BwCitpbmRleCA5OWMxNTNjLi44N2Q2ZGRjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS91bmlxdWVfaWRfbWFuYWdlci5jcHAKKysrKyBiL2xpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuY3BwCitAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgVW5pcXVlSWRNYW5hZ2VyOjpyZWZyZXNoKCkKKyAgICAgICAgIGtleUZpbGUgPj4ga2V5TGlzdDsKKyAgICAgICAgIGtleUxpc3QgKz0gIlxuIjsKKyAgICAgfSBjYXRjaCAoLi4uKSB7CistICAgICAgICBkbG9nKCJzc2kua2V5cyBmaWxlIG1pc3NpbmciKQorKyAgICAgICAgZGxvZygic3NpLmtleXMgZmlsZSBtaXNzaW5nIik7CisgICAgICAgICAvKiBubyBmaWxlPyB0aGF0J3Mgb2sgKi8KKyAgICAgfQorICAgICAvKiBwcm9jZXNzIHRoZSBsaXN0IHRvIHVwZGF0ZSBJZENhY2hlcyAqLworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDUtZW5naW5lLURlZmluZS1TRU5USU5FTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA1LWVuZ2luZS1EZWZpbmUtU0VOVElORUwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0ZGJmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA1LWVuZ2luZS1EZWZpbmUtU0VOVElORUwucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBhMmUzYTJlMzMyYzQwNmVhM2M1NmE4ZDc0YjYxOTc4MTA3ZGY2OGU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjI6MjM6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzZdIGVuZ2luZTogRGVmaW5lIFNFTlRJTkVMCisKK0ZpeCB3YXJuaW5ncyB3aXRoIGdjYzcKK3Rlc3QuY3BwOjEyOiB3YXJuaW5nOiBtaXNzaW5nIHNlbnRpbmVsIGluIGZ1bmN0aW9uIGNhbGwKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZW5naW5lL3V0aWxzLmNwcCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3V0aWxzLmNwcCBiL2xpYi9lbmdpbmUvdXRpbHMuY3BwCitpbmRleCA0NDU3OWExLi44ODEyYThjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS91dGlscy5jcHAKKysrKyBiL2xpYi9lbmdpbmUvdXRpbHMuY3BwCitAQCAtMzUsNyArMzUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgI2luY2x1ZGUgImZpbGVzeXN0ZW0uaCIKKyAjaW5jbHVkZSAidXRpbHMuaCIKKyAjaW5jbHVkZSAibG9nL2xvZy5oIgorLQorKyNkZWZpbmUgU0VOVElORUwgKGNvbnN0IGNoYXIgKikwCisgLyoqCisgICogQGJyaWVmIGNhcHR1cmUgc2hlbGwgb3V0cHV0IGFzIGJpbmFyeSBkYXRhCisgICoKK0BAIC0xMzksNyArMTM5LDcgQEAgaW50IHNoZWxsKGNvbnN0IFN0cmluZyAmcykKKyAgICAgICAgICAqIEJlZm9yZSBzd2l0Y2hpbmcgaW50byBuZXcgZXhlY3V0YWJsZSBjbG9zZSBhbGwgbm9uIHN0YW5kYXJkCisgICAgICAgICAgKiBmaWxlIGhhbmRsZXJzLiovCisgICAgICAgICBjbG9zZV9wYXJlbnRfZmRzKCk7CistICAgICAgICBleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIGNtZC5nZXQoKSwgTlVMTCk7CisrICAgICAgICBleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIGNtZC5nZXQoKSwgU0VOVElORUwpOworICAgICAgICAgLyogSWYgd2UncmUgaGVyZSB0aGVuIGV4ZWNsIGZhaWxlZCovCisgICAgICAgICBleGl0KC0xKTsKKyAgICAgICAgIGJyZWFrOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDYtdG9vbHMtQWRkLW1pc3NpbmctaW5jbHVkZXMtYW5kLXVzZS1yZWFscGF0aC1pbnN0ZWFkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA2LXRvb2xzLUFkZC1taXNzaW5nLWluY2x1ZGVzLWFuZC11c2UtcmVhbHBhdGgtaW5zdGVhZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiNzBlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA2LXRvb2xzLUFkZC1taXNzaW5nLWluY2x1ZGVzLWFuZC11c2UtcmVhbHBhdGgtaW5zdGVhZC0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBkZjFkNTZkNmI2YTZiMTVkMDEzNzYxOWViOGE0YjYyM2RlNmM5NjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjI6Mjg6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA2LzZdIHRvb2xzOiBBZGQgbWlzc2luZyBpbmNsdWRlcyBhbmQgdXNlIHJlYWxwYXRoKCkgaW5zdGVhZCBvZgorIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0b29scy9zc2lldmVudG1vbml0b3IuY3BwIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcCBiL3Rvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAKK2luZGV4IDA1NTMzODYuLmYwNGI4ZjAgMTAwNjQ0CistLS0gYS90b29scy9zc2lldmVudG1vbml0b3IuY3BwCisrKysgYi90b29scy9zc2lldmVudG1vbml0b3IuY3BwCitAQCAtMTgsNyArMTgsOSBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDxzeXMvaW5vdGlmeS5oPgorQEAgLTk5LDcgKzEwMSw3IEBAIHN0YXRpYyBpbnQgX2V4ZWNfc3NpbXNnKHZvaWQpCisgICAgIGludCBzdGF0dXM7CisgICAgIHN3aXRjaCAocGlkKSB7CisgCWNhc2UgMDogeworLQkgICAgY3AgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKCIvcHJvYy9zZWxmL2V4ZSIpOworKwkgICAgY3AgPSByZWFscGF0aCgiL3Byb2Mvc2VsZi9leGUiLCBOVUxMKTsKKyAJICAgIGlmIChjcCkgeworIAkJc3RyY3B5KGJ1ZmZlciwgY3ApOworIAkJZnJlZShjcCk7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvY29uZmlndXJlLWNmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS9jb25maWd1cmUtY2ZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NWJlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvY29uZmlndXJlLWNmbGFncy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitEbyBub3Qgb3ZlcnJpZGUgZmxhZ3MgdGhlcmVieSByZXNwZWN0IHRoZSBmbGFncyBjb21pbmcgZnJvbSBlbnZpcm9ubWVudCwKK2UuZy4gd2UgbmVlZCBzb21lIG9wdGltaXphdGlvbiBsZXZlbCB0dXJuZWQgb24gd2hlbiBzZWN1cml0eSBmbGFncyBhcmUgZW5hYmxlZAord2l0aG91dCB0aGlzIGNoYW5nZSwgdGhlIGJ1aWxkIHdvdWxkIGZhaWwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0luZGV4OiBzc2lhcGkuMS4wLjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3NpYXBpLjEuMC4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgc3NpYXBpLjEuMC4xL2NvbmZpZ3VyZS5hYworQEAgLTE1LDExICsxNSw2IEBAIEFDX1NVQlNUKFZFUlNJT04pCisgQU1fSU5JVF9BVVRPTUFLRShzc2ksICR7VkVSU0lPTn0pCisgQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKKyAKKy1kbmwgU2V0IHRoZSBsYW5ndWFnZSB3ZSB1c2UKKy1DUFBGTEFHUz0iLWczIC1nZHdhcmYtMiAtV2FsbCAtV2Vycm9yIC1EX0dOVV9TT1VSQ0UiCistQ0ZMQUdTPSItc3RkPWdudTk5IgorLUNYWEZMQUdTPSItc3RkPWdudSsrOTgiCistCisgZG5sIEF1dG9tYWtlIDEuMTEgLSBzaWxlbnQgYnVpbGQgcnVsZXMKKyBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpXzEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpXzEuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYjQ2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGlfMS4wLjEuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJJbnRlbCBSU1RlIHdpdGggTGludXggT1MgU1NJIEFQSSBMaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJJbnRlbCBSYXBpZCBTdG9yYWdlIFRlY2hub2xvZ3kgZW50ZXJwcmlzZSB3aXRoIExpbnV4IE9TKiBTdGFuZGFyZCBTdG9yYWdlIEludGVyZmFjZSBBUEkgTGlicmFyeS4gXAorVGhlIGxpYnJhcnkgYWxsb3dzIHVzZXIgdG8gbWFuYWdlIHN0b3JhZ2UgZGV2aWNlcyBpbmNsdWRpbmcgY3JlYXRpbmcgYW5kIG1hbmFnaW5nIFJhaWQgYXJyYXlzIG9uIHN5c3RlbXMgd2l0aCBJbnRlbCBjaGlwc2V0LiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2lyc3Rlc3NpLnNvdXJjZWZvcmdlLm5ldC8iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQxM2ZmMzY1ZTBiZDczM2M0ODY5YTY3OTc1NTFjNmYiCisKK0RFUEVORFMgKz0gInNnMy11dGlscyIKKworU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2lyc3Rlc3NpL2ZpbGVzLyR7QlBOfS4ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcHJhZ21hLW9uY2UtdW5jb25kaXRpb25hbGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQ29udmVydC1tYWNyb3MtaW50by1mdW5jdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1SZXBsYWNlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUtd2l0aC1yZWFscGF0aC1BUEkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1lbmdpbmUtRml4LWluZGVudGF0aW9uLWFuZC1taXNzaW5nLXNlbWktY29sb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1lbmdpbmUtRGVmaW5lLVNFTlRJTkVMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtdG9vbHMtQWRkLW1pc3NpbmctaW5jbHVkZXMtYW5kLXVzZS1yZWFscGF0aC1pbnN0ZWFkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3NpZXZlbnRtb25pdG9yLW9yZGVyZWQtY29tcGFyaXNvbi1iZXR3ZWVuLXBvaW50ZXJzLS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMmYxNmQ3Y2JkMzBkMjgwMzQwOTMyMTI5MDY1OTFmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMTBkMjgzYjBmMjExYWZiOGViZDBiZGU4N2MwOTc3Njk2MTNkMzBhMDUyY2RmMTY0NzUzZTM1ZTgwMzI2NGM3IgorCitTID0iJHtXT1JLRElSfS8ke0JQTn0uJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorQ1hYRkxBR1M9Ii1zdGQ9Z251Kys5OCAtRF9HTlVfU09VUkNFIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpeworICAgIC4vYXV0b2dlbi5zaAorfQorCitSREVQRU5EU18ke1BOfSArPSAibWRhZG0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uXzEuMTcuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uXzEuMTcuMjUuYmIKaW5kZXggNWVlNDQ3Mi4uY2MyNzI3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zdGFydC1zdG9wLWRhZW1vbi9zdGFydC1zdG9wLWRhZW1vbl8xLjE3LjI1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RhcnQtc3RvcC1kYWVtb24vc3RhcnQtc3RvcC1kYWVtb25fMS4xNy4yNS5iYgpAQCAtMzEsNiArMzEsOCBAQAogCiAgICAgIyBzdXBwb3J0IGZvciBidWdneSBpbml0LmQgc2NyaXB0cyB0aGF0IHJlZmVyIHRvIGFuIGFsdGVybmF0aXZlCiAgICAgIyBleHBsaWNpdCBwYXRoIHRvIHN0YXJ0LXN0b3AtZGFlbW9uCi0gICAgbWtkaXIgLXAgJHtEfS9zYmluLwotICAgIGxuIC1zZiAvdXNyL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gJHtEfS9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uCisgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtiYXNlX3NiaW5kaXJ9CisgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L3N0YXJ0LXN0b3AtZGFlbW9uICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc3RhcnQtc3RvcC1kYWVtb24KKyAgICBmaQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeW5lcmd5L3N5bmVyZ3lfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeW5lcmd5L3N5bmVyZ3lfZ2l0LmJiCmluZGV4IGYyMDYzZTQuLjY4ZjAzODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3luZXJneS9zeW5lcmd5X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5bmVyZ3kvc3luZXJneV9naXQuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIlN5bmVyZ3kgLSBjb250cm9sIG11bHRpcGxlIGNvbXB1dGVycyB3aXRoIG9uZSBrZXlib2FyZCBhbmQgbW91c2UiCiBIT01FUEFHRSA9ICJodHRwOi8vc3luZXJneS1wcm9qZWN0Lm9yZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBmMzY2OTQ1YjIwOWM1NTIzZTM5ODg5ZjYzNmFmMDBhIgotTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDJiYTUxY2E2OGUwNTU1NjZhYWRlMjQ2NjJmOWViNDEiCitMSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKIFNFQ1RJT04gPSAieDExL3V0aWxzIgogCiBERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnh0c3QgbGlieGluZXJhbWEgY3VybCBvcGVuc3NsIgpAQCAtMTAsMTEgKzEwLDExIEBACiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeW1sZXNzL3N5bmVyZ3ktY29yZS5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3ltbGVzcy9zeW5lcmd5LmdpdDtwcm90b2NvbD1odHRwIgogCi0jIFZlcnNpb24gMS43LjQtcmM4Ci1TUkNSRVYgPz0gIjU4OGZiNGI4MDVkZDQ1MjU1NmQwNWRiYzAzZmUyOWVhNWI0ZTQzYzAiCi1QViA9ICIxLjcuMysxLjcuNC1yYzgrJHtTUkNQVn0iCisjIFZlcnNpb24gMS44Ljgtc3RhYmxlCitTUkNSRVYgPz0gImMzMDMwMWUyMzQyNGRiMTEyNTY2NGRhMTdkZWI4YzNhYTZhZWM1MmQiCitQViA9ICIxLjguOCske1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKaW5kZXggMDk3N2Y3ZS4uZjFiZjliMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCkBAIC0zNiw2ICszNiw3IEBACiAgICAgLS13aXRoLWxpYnJhYmJpdG1xLWNsaWVudD1ubyBcCiAgICAgLS1kaXNhYmxlLXB5dGhvbiBcCiAgICAgLS1kaXNhYmxlLWphdmEgLS1kaXNhYmxlLWphdmEtbW9kdWxlcyBcCisgICAgLS13aXRoLXBpZGZpbGUtZGlyPSR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSBcCiAgICAgJHtDT05GSUdfVExTfSBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzdGVtLXNldHVwLWtleWJvYXJkL3N5c3RlbS1zZXR1cC1rZXlib2FyZF8wLjguOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzdGVtLXNldHVwLWtleWJvYXJkL3N5c3RlbS1zZXR1cC1rZXlib2FyZF8wLjguOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJkN2FmNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1zZXR1cC1rZXlib2FyZC9zeXN0ZW0tc2V0dXAta2V5Ym9hcmRfMC44LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gInhvcmcuY29uZiBrZXlib2FyZCBsYXlvdXQgY2FsbG91dCIKLURFU0NSSVBUSU9OID0gInN5c3RlbS1zZXR1cC1rZXlib2FyZCBpcyBhIGRhZW1vbiB0byBtb25pdG9yIHRoZSBrZXlib2FyZCBsYXlvdXQgY29uZmlndXJlZCBpbiBcCi0vZXRjL3N5c2NvbmZpZy9rZXlib2FyZCBhbmQgdHJhbnNmZXIgdGhpcyBpbnRvIHRoZSBtYXRjaGluZyB4b3JnLmNvbmYuZCBzbmlwcGV0LiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9naXQvc3lzdGVtLXNldHVwLWtleWJvYXJkLmdpdCIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdC5mZWRvcmFob3N0ZWQub3JnL2NnaXQvJHtQTn0uZ2l0L3NuYXBzaG90LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzOTkwMDM5NjhjY2M3MzljZGRkOWNjMzcwYWYzNzdhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZWY2ZWY3OWMzNTg4ZTg1ZDdmNDJlOTllYjgwYTJlNDU5Zjk2NjI4NGNmMDI5YzJkNmZjMWI2NDVhYmNiODYwIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJmNTc5NjlhNTk2MTJjNWFjYTAwN2IzNDBjNDlkM2EyIgotCi1pbmhlcml0IHB5dGhvbm5hdGl2ZQotCi1ERVBFTkRTID0gImdsaWItMi4wIHN5c3RlbS1jb25maWcta2V5Ym9hcmQtbmF0aXZlIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICR7UFlUSE9OfSAtdiBnZXRfbGF5b3V0cy5weSA+IGtleWJvYXJkcy5oCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvWDExL3hvcmcuY29uZi5kCi0gICAgdG91Y2ggJHtEfS9ldGMvWDExL3hvcmcuY29uZi5kLzAwLXN5c3RlbS1zZXR1cC1rZXlib2FyZC5jb25mCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfS5zZXJ2aWNlIgotCi1QTkJMQUNLTElTVFtzeXN0ZW0tc2V0dXAta2V5Ym9hcmRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHN5c3RlbS1jb25maWcta2V5Ym9hcmQtbmF0aXZlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiCmluZGV4IDM1ODQwZmQuLmJhZDk0ODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIuYmIKQEAgLTYsMTggKzYsMjEgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly90aHJlYWRpbmdidWlsZGluZ2Jsb2Nrcy5vcmcvIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCi1QUkRBVEUgPSAiMjAxNzAxMTgiCi1QViA9ICIke1BSREFURX0iCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LnRocmVhZGluZ2J1aWxkaW5nYmxvY2tzLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL3NvZnR3YXJlX3JlbGVhc2VzL3NvdXJjZS90YmIyMDE3XyR7UFJEQVRFfW9zc19zcmMudGd6IFwKK1BSREFURSA9ICIyMDE3MDQxMiIKK0JSQU5DSCA9ICJ0YmJfMjAxNyIKK1NSQ1JFViA9ICJhMmNmZGZlOTQ2OTMzY2JlMzhiZmZlMWQ4MDg2YWUzNmYwNjY5MWEzIgorUFYgPSAiJHtQUkRBVEV9KyR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3RiYjticmFuY2g9JHtCUkFOQ0h9IFwKICAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGJiLnBjIgotU1JDX1VSSVttZDVzdW1dID0gIjI2YmFhNmZiY2M4ZjAzZWU0NWMwNjQxYjkxZDk1ODhhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4YmI1MjYyODdmYThiNGU3ZDFlMWIyYmE5ZTVmYjljM2UzNzJiNDk3NzcyYzA2ZWY5Y2NkN2Y5M2YzNDRlNzQiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1hbGxpbmZvLWlzLWdsaWJjLXNwZWNpZmljLUFQSS1tYXJrLWl0LXNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RiYi5wYyBcCisiCiAKLVMgPSAiJHtXT1JLRElSfS90YmIyMDE3XyR7UFJEQVRFfW9zcy8iCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBDT01QSUxFUiA/PSAiZ2NjIgogQ09NUElMRVJfdG9vbGNoYWluLWNsYW5nID0gImNsYW5nIgorCiBkb19jb21waWxlKCkgewogICAgIG9lX3J1bm1ha2UgY29tcGlsZXI9JHtDT01QSUxFUn0gYXJjaD0ke0hPU1RfQVJDSH0gcnVudGltZT1jYzQKIH0KQEAgLTM4LDMgKzQxLDQgQEAKICMgfCBtYWtlWzFdOiAqKiogW2NvbmN1cnJlbnRfcXVldWUub10gRXJyb3IgMQogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCiBTRUNVUklUWV9DRkxBR1NfYXBwZW5kID0gIiAtZlBJQyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLzAwMDEtbWFsbGluZm8taXMtZ2xpYmMtc3BlY2lmaWMtQVBJLW1hcmstaXQtc28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvMDAwMS1tYWxsaW5mby1pcy1nbGliYy1zcGVjaWZpYy1BUEktbWFyay1pdC1zby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTY2OTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLzAwMDEtbWFsbGluZm8taXMtZ2xpYmMtc3BlY2lmaWMtQVBJLW1hcmstaXQtc28ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA2YjJiMTM2Y2FhNjg5MTJkNzdmZmUyNjE0M2NkM2RhNzY4YjllZjgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMyBKdW4gMjAxNyAwODozOTozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWxsaW5mbygpIGlzIGdsaWJjIHNwZWNpZmljIEFQSSBtYXJrIGl0IHNvCisKK0hlbHBzIGNvbXBpbGluZyB3aXRoIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvdGJibWFsbG9jL3Byb3h5LmNwcCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcCBiL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwCitpbmRleCA1ZWYyNzlkLi4wNmM0ODcyIDEwMDY0NAorLS0tIGEvc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAKKysrKyBiL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwCitAQCAtMTg1LDYgKzE4NSw3IEBAIGludCBtYWxsb3B0KGludCAvKnBhcmFtKi8sIGludCAvKnZhbHVlKi8pIF9fVEhST1cKKyAgICAgcmV0dXJuIDE7CisgfQorIAorKyNpZmRlZiBfX0dMSUJDX18KKyBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8oKSBfX1RIUk9XCisgeworICAgICBzdHJ1Y3QgbWFsbGluZm8gbTsKK0BAIC0xOTIsNiArMTkzLDcgQEAgc3RydWN0IG1hbGxpbmZvIG1hbGxpbmZvKCkgX19USFJPVworIAorICAgICByZXR1cm4gbTsKKyB9CisrI2VuZGlmCisgCisgI2lmIF9fQU5EUk9JRF9fCisgLy8gQW5kcm9pZCBkb2Vzbid0IGhhdmUgbWFsbG9jX3VzYWJsZV9zaXplLCBwcm92aWRlIGl0IHRvIGJlIGNvbXBhdGlibGUKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzg0ZmQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi4xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gInVkaXNrcyBwcm92aWRlcyBkYnVzIGludGVyZmFjZXMgZm9yIGRpc2tzIGFuZCBzdG9yYWdlIGRldmljZXMiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDc5ZjZkYmJmZmRiYzhlODZiMDg2YThmMGMwZWY0MyIKLQotREVQRU5EUyA9ICJhY2wgbGliYXRhc21hcnQgcG9sa2l0IGxpYmd1ZGV2IGRidXMtZ2xpYiBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59ID0gImFjbCIKLQotU1JDX1VSSSA9ICJodHRwOi8vdWRpc2tzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy91ZGlza3MtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub24tZ251LWxpYmMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjhiY2NkMzY1NzNiNzUyODY1MzhiZDViZDJjNDI0ZjQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiYWUyYmIzYmRjNjkxY2ExM2MxZTRjMjQ0NjMwYjhjODgxYzRmM2IzNWMyMDcyOTlmMWIzOWI3YmVjODM3ODUiCi0KLUNWRV9QUk9EVUNUID0gInVkaXNrcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TID0gIiR7V09SS0RJUn0vdWRpc2tzLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW1hbiAtLWRpc2FibGUtZ3RrLWRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wb2xraXQtMS9leHRlbnNpb25zLyouc28gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGlza3MyLyogXAotIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGlicyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIgotRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8uZGVidWciCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZWZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS44LmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAidWRpc2tzIHByb3ZpZGVzIGRidXMgaW50ZXJmYWNlcyBmb3IgZGlza3MgYW5kIHN0b3JhZ2UgZGV2aWNlcyIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRkNzlmNmRiYmZmZGJjOGU4NmIwODZhOGYwYzBlZjQzIgorCitERVBFTkRTID0gImFjbCBsaWJhdGFzbWFydCBwb2xraXQgbGliZ3VkZXYgZGJ1cy1nbGliIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKKworUkRFUEVORFNfJHtQTn0gPSAiYWNsIgorCitTUkNfVVJJID0gImh0dHA6Ly91ZGlza3MuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL3VkaXNrcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL25vbi1nbnUtbGliYy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTAxZDExYzI0M2JkOGM2YzAwNjUwNDc0Y2QyYWZhYWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE0MTY5MTQ4MTJhNzdlNWY0ZDgyYjgxZGViOGMyNTc5OWZkMzIyOGQyN2Q1MmY3YmY4OWE1MDFiMTg1N2RkYSIKKworQ1ZFX1BST0RVQ1QgPSAidWRpc2tzIgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1MgPSAiJHtXT1JLRElSfS91ZGlza3MtJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbWFuIC0tZGlzYWJsZS1ndGstZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BvbGtpdC0xL2V4dGVuc2lvbnMvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvKiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkaXNrczIvKiBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS1saWJzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24iCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7ZXhlY19wcmVmaXh9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGlza3MyLy5kZWJ1ZyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzXzEuMC41LmJiCmluZGV4IGZmZTJjMjYuLmUzMzI2NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrc18xLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3NfMS4wLjUuYmIKQEAgLTIsNyArMiw3IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczZDgzYWViZTdlNGI2MjM0NmFmZGU4MGUwZTk0MjczIgogCi1ERVBFTkRTID0gImxpYmF0YXNtYXJ0IHNnMy11dGlscyBwb2xraXQgbGliZ3VkZXYgZGJ1cy1nbGliIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSBsdm0yIFwKK0RFUEVORFMgPSAibGliYXRhc21hcnQgc2czLXV0aWxzIHBvbGtpdCBsaWJndWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIFwKICAgICBkYnVzLWdsaWItbmF0aXZlIFwKICIKICMgb3B0aW9uYWwgZGVwZW5kZW5jaWVzOiBkZXZpY2UtbWFwcGVyIHBhcnRlZApAQCAtMjQsNyArMjQsOCBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCBndGstZG9jCiAKLVBBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHID8/PSAibGliZGV2bWFwcGVyIgorUEFDS0FHRUNPTkZJR1tsaWJkZXZtYXBwZXJdID0gIi0tZW5hYmxlLWRldm1hcHBlciwtLWRpc2FibGUtZGV2bWFwcGVyLGxpYmRldm1hcHBlciIKIFBBQ0tBR0VDT05GSUdbcGFydGVkXSA9ICItLWVuYWJsZS1wYXJ0ZWQsLS1kaXNhYmxlLXBhcnRlZCxwYXJ0ZWQiCiAKIEVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbWFuLXBhZ2VzIC0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIKaW5kZXggOTA5NzU2YS4uMjcxNzE4ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguNi5iYgpAQCAtMTQsMTQgKzE0LDE1IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2IxZWE4MDNjNzNmMzQ3ODkxNzE2NmYwNGY2N2NjZTZlNDVhZDdlYTVhYjZkZjk5Yjk0OGMxN2ViMWNiMjM1ZiIKIAogREVQRU5EUyA9ICJhbnRoeSBmb250Y29uZmlnIGxpYnhmdCBsaWJ4dCBnbGliLTIuMCBuY3Vyc2VzIGludGx0b29sIgotREVQRU5EU19jbGFzcy10YXJnZXQgKz0gImludGx0b29sLW5hdGl2ZSBndGsrIGd0ayszIHVpbS1uYXRpdmUgdGFrYW8tZm9udHMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGludGx0b29sLW5hdGl2ZSBndGsrIGd0ayszIHVpbS1uYXRpdmUgdGFrYW8tZm9udHMiCiAKIFJERVBFTkRTX3VpbSA9ICJsaWJ1aW0wIGxpYmVkaXQiCi1SREVQRU5EU191aW0tYW50aHkgPSAidGFrYW8tZm9udHMgYW50aHkgbGliYW50aHkwIgorUkRFUEVORFNfdWltLWFudGh5ID0gInRha2FvLWZvbnRzIGFudGh5IGxpYmFudGh5MCBnbGliYy11dGlscyBnbGliYy1nY29udi1ldWMtanAiCiAKIExFQURfU09OQU1FID0gImxpYnVpbS5zby4xIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcWVtdSBndGstaW1tb2R1bGVzLWNhY2hlCitHVEtJTU1PRFVMRVNfUEFDS0FHRVMgPSAidWltLWd0azIuMCB1aW0tZ3RrMyIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZW1hY3MgXAogICAgIC0td2l0aG91dC1zY2ltIFwKQEAgLTEwMyw1MiArMTA0LDM2IEBACiAgICAgJHtkYXRhZGlyfS91aW0vc2trKi5zY20gXAogIgogCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgogcGtnX3Bvc3RpbnN0X3VpbS1hbnRoeSgpIHsKLSAgICBpZiBbIC1mIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciBdOyB0aGVuCi0gICAgICAgIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciAtLXJlZ2lzdGVyIGFudGh5IC0tcGF0aCAvZXRjL3VpbQotICAgIGZpCi19Ci0KLXBrZ19wb3N0cm1fdWltLWFudGh5KCkgewotICAgIGlmIFsgLWYgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIF07IHRoZW4KLSAgICAgICAgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIC0tcGF0aCAvZXRjL3VpbSAtLXVucmVnaXN0ZXIgYW50aHkKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWltLW1vZHVsZS1tYW5hZ2VyJyl9IC0tcmVnaXN0ZXIgYW50aHkgLS1wYXRoICREJHtkYXRhZGlyfS91aW0KKyAgICBlbHNlCisJCXVpbS1tb2R1bGUtbWFuYWdlciAtLXJlZ2lzdGVyIGFudGh5IC0tcGF0aCAke2RhdGFkaXJ9L3VpbQogICAgIGZpCiB9CiAKIHBrZ19wcmVybV91aW0tYW50aHkoKSB7Ci0gICAgaWYgWyAtZiAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgXTsgdGhlbgotICAgICAgICAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgLS1yZWdpc3RlciBhbnRoeSAtLXBhdGggL2V0Yy91aW0KKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWltLW1vZHVsZS1tYW5hZ2VyJyl9IC0tcGF0aCAkRCR7ZGF0YWRpcn0vdWltIC0tdW5yZWdpc3RlciBhbnRoeQorICAgIGVsc2UKKwkJdWltLW1vZHVsZS1tYW5hZ2VyIC0tcGF0aCAke2RhdGFkaXJ9L3VpbSAtLXVucmVnaXN0ZXIgYW50aHkKICAgICBmaQogfQogCi1wa2dfcG9zdGluc3RfdWltLWd0azIuMCgpIHsKLSAgICBndGstcXVlcnktaW1tb2R1bGVzLTIuMCA+IC9ldGMvZ3RrLTIuMC9ndGsuaW1tb2R1bGVzCi19Ci0KIHBrZ19wb3N0aW5zdF91aW0tc2trKCkgewotICAgIGlmIFsgLWYgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIF07IHRoZW4KLSAgICAgICAgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIC0tcmVnaXN0ZXIgc2trIC0tcGF0aCAvZXRjL3VpbQorICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgorICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS91aW0tbW9kdWxlLW1hbmFnZXInKX0gLS1yZWdpc3RlciBza2sgLS1wYXRoICREJHtkYXRhZGlyfS91aW0KKyAgICBlbHNlCisJCXVpbS1tb2R1bGUtbWFuYWdlciAtLXJlZ2lzdGVyIHNrayAtLXBhdGggJHtkYXRhZGlyfS91aW0KICAgICBmaQogfQogCiBwa2dfcG9zdHJtX3VpbS1za2soKSB7Ci0gICAgaWYgWyAtZiAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgXTsgdGhlbgotICAgICAgICAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgLS1wYXRoIC9ldGMvdWltIC0tdW5yZWdpc3RlciBza2sKLSAgICBmaQotfQotCi1wa2dfcG9zdGluc3RfdWltLWNvbW1vbigpIHsKLSAgICBpZiBbIC1mIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciBdOyB0aGVuCi0gICAgICAgIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciAtLXBhdGggL2V0Yy91aW0gLS1yZWdpc3RlciBcCi0gICAgICAgICAgICB0dXRjb2RlIHRjb2RlIGhhbmd1bCB2aXFyIFwKLSAgICAgICAgICAgIGlwYS14LXNhbXBhIGxhdGluIGJ5ZW9ydQotICAgIGZpCi19Ci0KLXBrZ19wcmVybV91aW0tY29tbW9uKCkgewotICAgIGlmIFsgLWYgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIF07IHRoZW4KLSAgICAgICAgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIC0tcGF0aCAvZXRjL3VpbSAtLXJlZ2lzdGVyIFwKLSAgICAgICAgdHV0Y29kZSB0Y29kZSBoYW5ndWwgdmlxciBpcGEteC1zYW1wYSBsYXRpbiBieWVvcnUKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWltLW1vZHVsZS1tYW5hZ2VyJyl9IC0tcGF0aCAkRCR7ZGF0YWRpcn0vdWltIC0tdW5yZWdpc3RlciBza2sKKyAgICBlbHNlCisJCXVpbS1tb2R1bGUtbWFuYWdlciAtLXBhdGggJHtkYXRhZGlyfS91aW0gLS11bnJlZ2lzdGVyIHNrawogICAgIGZpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjUxZTE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJVUG93ZXIgaXMgYW4gYWJzdHJhY3Rpb24gZm9yIGVudW1lcmF0aW5nIHBvd2VyIGRldmljZXMsIGxpc3RlbmluZyB0byBkZXZpY2UgZXZlbnRzIGFuZCBxdWVyeWluZyBoaXN0b3J5IGFuZCBzdGF0aXN0aWNzLiAiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBkZThmYmYxZDk3YTE0MGQxZDkzYjlmMTRkY2ZiZjA4IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJ1c2IxIGxpYmd1ZGV2IGdsaWItMi4wIGRidXMtZ2xpYiBwb2xraXQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3Vwb3dlci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODgwMGUxYWM3ZjkyYjI0YWFiZGY0MzNlMzhmNzVkMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2EzMjVhNmNjZWY1MDU1MjliMjY4ZWJiYmQ5YmVjZDBjZTY1YTY1ZjZhYzdlZTMxZTJlNWIxNzY0ODAzN2IwIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaWRldmljZV0gPSAiLS13aXRoLWlkZXZpY2UsLS13aXRob3V0LWlkZXZpY2UsbGliaW1vYmlsZWRldmljZSBsaWJwbGlzdCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWR1dGlsZGlyPSR7c3lzdGVtZF91bml0ZGlyfSAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHV0aWxkaXIgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLWJhY2tlbmQ9bGludXgiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ1cG93ZXIuc2VydmljZSIKLSMgZG9uJ3Qgc3RhcnQgb24gYm9vdCBieSBkZWZhdWx0IC0gZGJ1cyBkb2VzIHRoYXQgb24gZGVtYW5kCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi1ub25ldDpcOmcgJHtTfS9kb2MvbWFuL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pIC1lICdzOiBkb2MgOiA6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiZGJ1cyIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJwbS11dGlscyIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS91ZGV2LyogXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3VkZXYvLmRlYnVnIgotCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyXzAuOTkuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxNDUzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIKQEAgLTAsMCArMSwzOSBAQAorREVTQ1JJUFRJT04gPSAiVVBvd2VyIGlzIGFuIGFic3RyYWN0aW9uIGZvciBlbnVtZXJhdGluZyBwb3dlciBkZXZpY2VzLCBsaXN0ZW5pbmcgdG8gZGV2aWNlIGV2ZW50cyBhbmQgcXVlcnlpbmcgaGlzdG9yeSBhbmQgc3RhdGlzdGljcy4gIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZGU4ZmJmMWQ5N2ExNDBkMWQ5M2I5ZjE0ZGNmYmYwOCIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlidXNiMSBsaWJndWRldiBnbGliLTIuMCBkYnVzLWdsaWIgcG9sa2l0IgorCitTUkNfVVJJID0gImh0dHA6Ly91cG93ZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZWM1N2I0YjdiZjBhZjU2OGY5YTdhNTYwM2M5MjFkOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzg2MDU2NjRkMDI3Yzc4OGY2YWI2M2M1MDk1MGJlNmU4NmM2YmE1ZDAzMGM0Y2YzNWE2NjY0MzM3ZDg3ZjNiMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lkZXZpY2VdID0gIi0td2l0aC1pZGV2aWNlLC0td2l0aG91dC1pZGV2aWNlLGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdXRpbGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWR1dGlsZGlyIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1iYWNrZW5kPWxpbnV4IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidXBvd2VyLnNlcnZpY2UiCisjIGRvbid0IHN0YXJ0IG9uIGJvb3QgYnkgZGVmYXVsdCAtIGRidXMgZG9lcyB0aGF0IG9uIGRlbWFuZAorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczotbm9uZXQ6XDpnICR7U30vZG9jL21hbi9NYWtlZmlsZS5hbQorICAgIHNlZCAtaSAtZSAnczogZG9jIDogOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gImRidXMiCitSUkVDT01NRU5EU18ke1BOfSArPSAicG0tdXRpbHMiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xLyBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vdWRldi8qIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2Ly5kZWJ1ZyIKKworCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmFsYS10ZXJtaW5hbC92YWxhLXRlcm1pbmFsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmFsYS10ZXJtaW5hbC92YWxhLXRlcm1pbmFsX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIxOWNiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZhbGEtdGVybWluYWwvdmFsYS10ZXJtaW5hbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlnaHR3ZWlnaHQgVGVybWluYWwgRW11bGF0b3IgYmFzZWQgb24gbGlidnRlLCB3cml0dGVuIGluIFZhbGEiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbnMiCi1ERVBFTkRTID0gInZ0ZTkgaW50bHRvb2wtbmF0aXZlIgotU1JDUkVWID0gIjBmZWZhMzgwODc1ODFmODVmYTA2MzFiNDA1MDBiOTQyODM2OWMxNDYiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1QViA9ICIxLjMrZ2l0ciR7U1JDUFZ9IgotUEUgPSAiMSIKLVBSID0gInIxIgotCi1QTkJMQUNLTElTVFt2YWxhLXRlcm1pbmFsXSA/PSAiQlJPS0VOOiBEb2Vzbid0IHdvcmsgd2l0aCBCIT1TLCB0b3VjaDogY2Fubm90IHRvdWNoIGBzcmMvLnN0YW1wJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGVybG5hdGl2ZSB2YWxhCi0KLVNSQ19VUkkgPSAiJHtGUkVFU01BUlRQSE9ORV9HSVR9L3ZhbGEtdGVybWluYWwuZ2l0O2JyYW5jaD1tYXN0ZXIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1SREVQRU5EU18ke1BOfSA9ICJ0dGYtbGliZXJhdGlvbi1tb25vIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wZW5tb2tvLXRlcm1pbmFsMiIKLVJQUk9WSURFU18ke1BOfSA9ICJvcGVubW9rby10ZXJtaW5hbDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc180LjMuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc180LjMuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YmFlMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNC4zLjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCi1TRUNUSU9OID0gImNvcmUiCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCi0KLVZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLnV0aWxzIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NjM1Mzg3ZGVjNmNiZmQ1NzZiYTQ1MzM1NWQ0ZGMwYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjA3NzZkZjZkMDNiMjcwOWNiNzZhNjlmMDU1NDg3YmYxMmJkYjNiNDE2M2UyYTgyOTU5ODYwMzAwMjgzMDQ2IgotCi1TID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCi0KLWV4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKLWV4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgotZXhwb3J0IEtFUk5fRElSPSIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCi0KLWFkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX3VucGFjawotCi1kb19leHBvcnRfc291cmNlcygpIHsKLSAgICBta2RpciAtcCAiJHtTfSIKLSAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0gICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotCi0gICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQotICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCi0KLX0KLQotIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgJ0xEPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyAtQyAke1N9L3V0aWxzCi0gICAgaWYgISBbIC1lIHZib3hndWVzdC5rbyAtYSAtZSB2Ym94c2Yua28gLWEgLWUgdmJveHZpZGVvLmtvIF0gOyB0aGVuCi0gICAgICAgIGVjaG8gIkVSUk9SOiBPbmUgb2YgdmJveCoua28gbW9kdWxlcyB3YXNuJ3QgYnVpbHQiCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi19Ci0KLW1vZHVsZV9kb19pbnN0YWxsKCkgewotICAgIE1PRFVMRV9ESVI9JHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvbWlzYwotICAgIGluc3RhbGwgLWQgJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94Z3Vlc3Qua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94c2Yua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94dmlkZW8ua28gJE1PRFVMRV9ESVIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS91dGlscy9tb3VudC52Ym94c2YgJHtEfSR7YmFzZV9zYmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi1SUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKLQotIyBhdXRvbG9hZCBpZiBpbnN0YWxsZWQKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInZib3hndWVzdCB2Ym94c2YgdmJveHZpZGVvIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy84MzMzMy8KLVBOQkxBQ0tMSVNUW3Zib3hndWVzdGRyaXZlcnNdID89ICJCUk9LRU46IG5vdCBjb21wYXRpYmxlIHdpdGggZGVmYXVsdCBrZXJuZWwgdmVyc2lvbiA0LjggLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwODViOWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCi1TRUNUSU9OID0gImNvcmUiCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCi0KLVZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLnV0aWxzIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYTdkYjY0Y2Q2OWJhNmQzOTU3NGZiMzMzZTAzMTI1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWQwOTU5YmJiZDAyODI2Yjg2YjNkNWRjODM0ODkzMWRkZmFiMjY3YzMxZjhlZDM2ZWU1M2MxMmY1NTIyY2Q5IgotCi1TID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCi0KLWV4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKLWV4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgotZXhwb3J0IEtFUk5fRElSPSIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCi0KLWFkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX3VucGFjawotCi1kb19leHBvcnRfc291cmNlcygpIHsKLSAgICBta2RpciAtcCAiJHtTfSIKLSAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0gICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotCi0gICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQotICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCi0KLX0KLQotIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgJ0xEPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyAtQyAke1N9L3V0aWxzCi0gICAgaWYgISBbIC1lIHZib3hndWVzdC5rbyAtYSAtZSB2Ym94c2Yua28gLWEgLWUgdmJveHZpZGVvLmtvIF0gOyB0aGVuCi0gICAgICAgIGVjaG8gIkVSUk9SOiBPbmUgb2YgdmJveCoua28gbW9kdWxlcyB3YXNuJ3QgYnVpbHQiCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi19Ci0KLW1vZHVsZV9kb19pbnN0YWxsKCkgewotICAgIE1PRFVMRV9ESVI9JHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvbWlzYwotICAgIGluc3RhbGwgLWQgJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94Z3Vlc3Qua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94c2Yua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94dmlkZW8ua28gJE1PRFVMRV9ESVIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS91dGlscy9tb3VudC52Ym94c2YgJHtEfSR7YmFzZV9zYmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi1SUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKLQotIyBhdXRvbG9hZCBpZiBpbnN0YWxsZWQKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInZib3hndWVzdCB2Ym94c2YgdmJveHZpZGVvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZWZlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMjYuYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCitTRUNUSU9OID0gImNvcmUiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKKworaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCisKK1ZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLnV0aWxzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2FlYzgxOTBjNjQ5ZDdlMGQ5MmJhMzc0Nzc5ZGZlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTcxNTAzNWU2ODFhMTFlZjE0NzVmODNmOTUwM2QzNGEwMGYwMjc2Yjg5YzU3MmVlYmVjMzYzZGRhODBjOGE5IgorCitTID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCisKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgorZXhwb3J0IEtFUk5fRElSPSIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCisKK2FkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX3VucGFjaworCitkb19leHBvcnRfc291cmNlcygpIHsKKyAgICBta2RpciAtcCAiJHtTfSIKKyAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6CisgICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negorCisgICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQorICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgorICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscworICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscworICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCisKK30KKworIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworICAgIG9lX3J1bm1ha2UgJ0xEPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyAtQyAke1N9L3V0aWxzCisgICAgaWYgISBbIC1lIHZib3hndWVzdC5rbyAtYSAtZSB2Ym94c2Yua28gLWEgLWUgdmJveHZpZGVvLmtvIF0gOyB0aGVuCisgICAgICAgIGVjaG8gIkVSUk9SOiBPbmUgb2YgdmJveCoua28gbW9kdWxlcyB3YXNuJ3QgYnVpbHQiCisgICAgICAgIGV4aXQgMQorICAgIGZpCit9CisKK21vZHVsZV9kb19pbnN0YWxsKCkgeworICAgIE1PRFVMRV9ESVI9JHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvbWlzYworICAgIGluc3RhbGwgLWQgJE1PRFVMRV9ESVIKKyAgICBpbnN0YWxsIC1tIDY0NCB2Ym94Z3Vlc3Qua28gJE1PRFVMRV9ESVIKKyAgICBpbnN0YWxsIC1tIDY0NCB2Ym94c2Yua28gJE1PRFVMRV9ESVIKKyAgICBpbnN0YWxsIC1tIDY0NCB2Ym94dmlkZW8ua28gJE1PRFVMRV9ESVIKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS91dGlscy9tb3VudC52Ym94c2YgJHtEfSR7YmFzZV9zYmluZGlyfQorfQorCitQQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCitSUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCisKK0ZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKKworIyBhdXRvbG9hZCBpZiBpbnN0YWxsZWQKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInZib3hndWVzdCB2Ym94c2YgdmJveHZpZGVvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4wLjA0MjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjAuMDk4My5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4wLjA0MjcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMC4wOTgzLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA0MjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA0MjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmODZmY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wNDI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLVNVTU1BUlkgPSAiVmkgSU1wcm92ZWQgLSBlbmhhbmNlZCB2aSBlZGl0b3IiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCi0jIHZpbWRpZmYgZG9lc24ndCBsaWtlIGJ1c3lib3ggZGlmZgotUlNVR0dFU1RTXyR7UE59ID0gImRpZmZ1dGlscyIKLUxJQ0VOU0UgPSAidmltIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vcnVudGltZS9kb2MvdWdhbmRhLnR4dDttZDU9ZWVhMzJhYzE0MjRiYmExNDA5NjczNmE0OTRhZTkwNDUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92aW0vdmltLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2g7cGF0Y2hkaXI9Li4gXAotICAgICAgICAgICBmaWxlOi8vdmltLWFkZC1rbm9iLXdoZXRoZXItZWxmLmgtYXJlLWNoZWNrZWQucGF0Y2g7cGF0Y2hkaXI9Li4gXAotIgotU1JDUkVWID0gImFkNDE4N2U2ZmM5YzhlMTA4M2ExNzI4NTJkOTU4YTcwYTY4OWE3NWMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQvc3JjIgotCi1WSU1ESVIgPSAidmltJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLSMgdmltIGNvbmZpZ3VyZS5pbiBjb250YWlucyBmdW5jdGlvbnMgd2hpY2ggZ290ICdkcm9wcGVkJyBieSBhdXRvdG9vbHMuYmJjbGFzcwotZG9fY29uZmlndXJlICgpIHsKLSAgICBybSAtZiBhdXRvLyoKLSAgICB0b3VjaCBhdXRvL2NvbmZpZy5tawotICAgIGFjbG9jYWwKLSAgICBhdXRvY29uZgotICAgIG9lX3J1bmNvbmYKLSAgICB0b3VjaCBhdXRvL2NvbmZpZ3VyZQotICAgIHRvdWNoIGF1dG8vY29uZmlnLm1rIGF1dG8vY29uZmlnLmgKLX0KLQotI0F2YWlsYWJsZSBQQUNLQUdFQ09ORklHIG9wdGlvbnMgYXJlIGd0a2d1aSwgYWNsLCB4MTEsIHRpbnkKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tndGtndWldID0gIi0tZW5hYmxlLWd0azItdGVzdCAtLWVuYWJsZS1ndWk9Z3RrMiwtLWVuYWJsZS1ndWk9bm8sZ3RrKywiCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx4dCwiCi1QQUNLQUdFQ09ORklHW3RpbnldID0gIi0td2l0aC1mZWF0dXJlcz10aW55LC0td2l0aC1mZWF0dXJlcz1iaWcsLCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LCIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZi1jaGVjaywsZWxmdXRpbHMsIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZ3BtIFwKLSAgICAtLWRpc2FibGUtZ3RrdGVzdCBcCi0gICAgLS1kaXNhYmxlLXhpbSBcCi0gICAgLS1kaXNhYmxlLW5ldGJlYW5zIFwKLSAgICAtLXdpdGgtdGxpYj1uY3Vyc2VzIFwKLSAgICBhY19jdl9zbWFsbF93Y2hhcl90PW5vIFwKLSAgICB2aW1fY3ZfZ2V0Y3dkX2Jyb2tlbj1ubyBcCi0gICAgdmltX2N2X21lbW1vdmVfaGFuZGxlc19vdmVybGFwPXllcyBcCi0gICAgdmltX2N2X3N0YXRfaWdub3Jlc19zbGFzaD1ubyBcCi0gICAgdmltX2N2X3Rlcm1pbmZvPXllcyBcCi0gICAgdmltX2N2X3RnZW50PW5vbi16ZXJvIFwKLSAgICB2aW1fY3ZfdG91cHBlcl9icm9rZW49bm8gXAotICAgIHZpbV9jdl90dHlfZ3JvdXA9d29ybGQgXAotICAgIFNUUklQPS9iaW4vdHJ1ZSBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotICAgICMgV29yayBhcm91bmQgZmlsZS1yZGVwcyBwaWNraW5nIHVwIGNzaCwgYXdrLCBwZXJsIG9yIHB5dGhvbiBhcyBhIGRlcAotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvdmltMTMyCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy9tdmUuYXdrCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnBsCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnB5Ci0KLSAgICAjIEluc3RhbGwgZXhhbXBsZSB2aW1yYyBmcm9tIHJ1bnRpbWUgZmlsZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgLi4vcnVudGltZS92aW1yY19leGFtcGxlLnZpbSAke0R9LyR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjCi0KLSAgICAjIHdlIHVzZSAtLXdpdGgtZmVhdHVyZXM9YmlnIGFzIGRlZmF1bHQKLSAgICBtdiAke0R9JHtiaW5kaXJ9LyR7QlBOfSAke0R9JHtiaW5kaXJ9LyR7QlBOfS4ke0JQTn0KLX0KLQotUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY29tbW9uICR7UE59LXN5bnRheCAke1BOfS1oZWxwICR7UE59LXR1dG9yICR7UE59LXZpbXJjICR7UE59LXRvb2xzIgotRklMRVNfJHtQTn0tc3ludGF4ID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9zeW50YXgiCi1GSUxFU18ke1BOfS1oZWxwID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9kb2MiCi1GSUxFU18ke1BOfS10dXRvciA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdHV0b3IgJHtiaW5kaXJ9LyR7QlBOfXR1dG9yIgotRklMRVNfJHtQTn0tdmltcmMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMiCi1GSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0vJHtCUE59IgotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzIgotRklMRVNfJHtQTn0tY29tbW9uID0gIiBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9LyoudmltIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vYXV0b2xvYWQgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb2xvcnMgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb21waWxlciBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2Z0cGx1Z2luIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vaW5kZW50IFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0va2V5bWFwIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vbGFuZyBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L21hY3JvcyBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3BsdWdpbiBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3ByaW50IFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vc3BlbGwgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotIgotCi1SREVQRU5EU18ke0JQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgotIyBSZWNvbW1lbmQgdGhhdCBydW50aW1lIGRhdGEgaXMgaW5zdGFsbGVkIGFsb25nIHdpdGggdmltCi1SUkVDT01NRU5EU18ke0JQTn0gPSAiJHtQTn0tc3ludGF4ICR7UE59LWhlbHAgJHtQTn0tdHV0b3IgJHtQTn0tdmltcmMgJHtQTn0tY29tbW9uIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJ2aSB2aW0iCi1BTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtiaW5kaXJ9LyR7QlBOfS4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdmldID0gIiR7YmFzZV9iaW5kaXJ9L3ZpIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3ZpbV0gPSAiJHtiaW5kaXJ9L3ZpbSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA3Y2U1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjAuMDk4My5iYgpAQCAtMCwwICsxLDExMiBAQAorU1VNTUFSWSA9ICJWaSBJTXByb3ZlZCAtIGVuaGFuY2VkIHZpIGVkaXRvciIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0RFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKKyMgdmltZGlmZiBkb2Vzbid0IGxpa2UgYnVzeWJveCBkaWZmCitSU1VHR0VTVFNfJHtQTn0gPSAiZGlmZnV0aWxzIgorTElDRU5TRSA9ICJ2aW0iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9ydW50aW1lL2RvYy91Z2FuZGEudHh0O21kNT1lZWEzMmFjMTQyNGJiYTE0MDk2NzM2YTQ5NGFlOTA0NSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZpbS92aW0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisiCitTUkNSRVYgPSAiM2Y5YTFmZjE0MTQxMmU5ZTg1ZjdkZmY0N2QwMjk0NmNiOWJlOTIyOCIKKworUyA9ICIke1dPUktESVJ9L2dpdC9zcmMiCisKK1ZJTURJUiA9ICJ2aW0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworIyB2aW0gY29uZmlndXJlLmluIGNvbnRhaW5zIGZ1bmN0aW9ucyB3aGljaCBnb3QgJ2Ryb3BwZWQnIGJ5IGF1dG90b29scy5iYmNsYXNzCitkb19jb25maWd1cmUgKCkgeworICAgIHJtIC1mIGF1dG8vKgorICAgIHRvdWNoIGF1dG8vY29uZmlnLm1rCisgICAgYWNsb2NhbAorICAgIGF1dG9jb25mCisgICAgb2VfcnVuY29uZgorICAgIHRvdWNoIGF1dG8vY29uZmlndXJlCisgICAgdG91Y2ggYXV0by9jb25maWcubWsgYXV0by9jb25maWcuaAorfQorCisjQXZhaWxhYmxlIFBBQ0tBR0VDT05GSUcgb3B0aW9ucyBhcmUgZ3RrZ3VpLCBhY2wsIHgxMSwgdGlueQorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBzZWxpbnV4JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2d0a2d1aV0gPSAiLS1lbmFibGUtZ3RrMi10ZXN0IC0tZW5hYmxlLWd1aT1ndGsyLC0tZW5hYmxlLWd1aT1ubyxndGsrLCIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14LC0td2l0aG91dC14LHh0LCIKK1BBQ0tBR0VDT05GSUdbdGlueV0gPSAiLS13aXRoLWZlYXR1cmVzPXRpbnksLS13aXRoLWZlYXR1cmVzPWJpZywsIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsIgorUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLS1lbmFibGUtZWxmLWNoZWNrLCxlbGZ1dGlscywiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1ncG0gXAorICAgIC0tZGlzYWJsZS1ndGt0ZXN0IFwKKyAgICAtLWRpc2FibGUteGltIFwKKyAgICAtLWRpc2FibGUtbmV0YmVhbnMgXAorICAgIC0td2l0aC10bGliPW5jdXJzZXMgXAorICAgIGFjX2N2X3NtYWxsX3djaGFyX3Q9bm8gXAorICAgIHZpbV9jdl9nZXRjd2RfYnJva2VuPW5vIFwKKyAgICB2aW1fY3ZfbWVtbW92ZV9oYW5kbGVzX292ZXJsYXA9eWVzIFwKKyAgICB2aW1fY3Zfc3RhdF9pZ25vcmVzX3NsYXNoPW5vIFwKKyAgICB2aW1fY3ZfdGVybWluZm89eWVzIFwKKyAgICB2aW1fY3ZfdGdlbnQ9bm9uLXplcm8gXAorICAgIHZpbV9jdl90b3VwcGVyX2Jyb2tlbj1ubyBcCisgICAgdmltX2N2X3R0eV9ncm91cD13b3JsZCBcCisgICAgU1RSSVA9L2Jpbi90cnVlIFwKKyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorCisgICAgIyBXb3JrIGFyb3VuZCBmaWxlLXJkZXBzIHBpY2tpbmcgdXAgY3NoLCBhd2ssIHBlcmwgb3IgcHl0aG9uIGFzIGEgZGVwCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy92aW0xMzIKKyAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL212ZS5hd2sKKyAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucGwKKyAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucHkKKworICAgICMgSW5zdGFsbCBleGFtcGxlIHZpbXJjIGZyb20gcnVudGltZSBmaWxlcworICAgIGluc3RhbGwgLW0gMDY0NCAuLi9ydW50aW1lL3ZpbXJjX2V4YW1wbGUudmltICR7RH0vJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMKKworICAgICMgd2UgdXNlIC0td2l0aC1mZWF0dXJlcz1iaWcgYXMgZGVmYXVsdAorICAgIG12ICR7RH0ke2JpbmRpcn0vJHtCUE59ICR7RH0ke2JpbmRpcn0vJHtCUE59LiR7QlBOfQorfQorCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jb21tb24gJHtQTn0tc3ludGF4ICR7UE59LWhlbHAgJHtQTn0tdHV0b3IgJHtQTn0tdmltcmMgJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS1zeW50YXggPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3N5bnRheCIKK0ZJTEVTXyR7UE59LWhlbHAgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2RvYyIKK0ZJTEVTXyR7UE59LXR1dG9yID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90dXRvciAke2JpbmRpcn0vJHtCUE59dHV0b3IiCitGSUxFU18ke1BOfS12aW1yYyA9ICIke2RhdGFkaXJ9LyR7QlBOfS92aW1yYyIKK0ZJTEVTXyR7UE59LWRhdGEgPSAiJHtkYXRhZGlyfS8ke0JQTn0iCitGSUxFU18ke1BOfS10b29scyA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMiCitGSUxFU18ke1BOfS1jb21tb24gPSAiIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vKi52aW0gXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9hdXRvbG9hZCBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2NvbG9ycyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2NvbXBpbGVyIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vZnRwbHVnaW4gXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9pbmRlbnQgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9rZXltYXAgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9sYW5nIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vbWFjcm9zIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vcGx1Z2luIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vcHJpbnQgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9zcGVsbCBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK1JERVBFTkRTXyR7QlBOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvLWJhc2UiCisjIFJlY29tbWVuZCB0aGF0IHJ1bnRpbWUgZGF0YSBpcyBpbnN0YWxsZWQgYWxvbmcgd2l0aCB2aW0KK1JSRUNPTU1FTkRTXyR7QlBOfSA9ICIke1BOfS1zeW50YXggJHtQTn0taGVscCAke1BOfS10dXRvciAke1BOfS12aW1yYyAke1BOfS1jb21tb24iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInZpIHZpbSIKK0FMVEVSTkFUSVZFX1RBUkdFVCA9ICIke2JpbmRpcn0vJHtCUE59LiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt2aV0gPSAiJHtiYXNlX2JpbmRpcn0vdmkiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdmltXSA9ICIke2JpbmRpcn0vdmltIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZhMmY2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9jb25maWd1cmUuaW4JMjAxNC0wOC0xOCAwMToyNTo0My45MTE1OTcwMjMgLTA3MDAKLSsrKyBiL2NvbmZpZ3VyZS5pbgkyMDE0LTA4LTE4IDAxOjI2OjI3Ljc2Mzc4NjYyOSAtMDcwMAotQEAgLTgsNyArOCw3IEBACi0gQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKLSBBQ19DT05GSUdfU1JDRElSKFtjb25maWd1cmUuaW5dKQotIAotLUFNX0lOSVRfQVVUT01BS0UoWzEuOSBkaXN0LWJ6aXAyIHN1YmRpci1vYmplY3RzIG5vLWRlZmluZV0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS45IGZvcmVpZ24gZGlzdC1iemlwMiBzdWJkaXItb2JqZWN0cyBuby1kZWZpbmVdKQotIAotIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX1BST0dfQ0MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvZml4LWluY2x1ZGVzLWZvci1zZXBhcmF0ZS1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvZml4LWluY2x1ZGVzLWZvci1zZXBhcmF0ZS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM5NGU1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2ZpeC1pbmNsdWRlcy1mb3Itc2VwYXJhdGUtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1kaWZmIC11ciB4Y2hhdC0yLjguOC1vcmlnL3BsdWdpbnMvcGVybC9wZXJsLmMgeGNoYXQtMi44LjgvcGx1Z2lucy9wZXJsL3BlcmwuYwotLS0tIHhjaGF0LTIuOC44LW9yaWcvcGx1Z2lucy9wZXJsL3BlcmwuYwkyMDE0LTA4LTMwIDE0OjA5OjA1LjEyNTExNjI4NiAtMDcwMAotKysrIHhjaGF0LTIuOC44L3BsdWdpbnMvcGVybC9wZXJsLmMJMjAxNC0wOC0zMCAxNDowOTo0NS4yODExMDY1MzIgLTA3MDAKLUBAIC0zMSw3ICszMSw3IEBACi0gI2VuZGlmCi0gCi0gI3VuZGVmIFBBQ0tBR0UKLS0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCQkgIC8qIGZvciAjZGVmaW5lIE9MRF9QRVJMICovCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgkJICAvKiBmb3IgI2RlZmluZSBPTERfUEVSTCAqLwotICNpbmNsdWRlICJ4Y2hhdC1wbHVnaW4uaCIKLSAKLSBzdGF0aWMgeGNoYXRfcGx1Z2luICpwaDsJCSAgLyogcGx1Z2luIGhhbmRsZSAqLwotZGlmZiAtdXIgeGNoYXQtMi44Ljgtb3JpZy9zcmMvY29tbW9uL25ldHdvcmsuYyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL25ldHdvcmsuYwotLS0tIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi9uZXR3b3JrLmMJMjAxNC0wOC0zMCAxNDowOTowNS4xMzcxMTYyMjIgLTA3MDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL25ldHdvcmsuYwkyMDE0LTA4LTMwIDE0OjEzOjUyLjcyOTExNjMyMyAtMDcwMAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGdsaWIuaD4KLSAKLS0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCQkJCSAgLyogZ3JhYiBVU0VfSVBWNiBhbmQgTE9PS1VQRCBkZWZpbmVzICovCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgkJCQkgIC8qIGdyYWIgVVNFX0lQVjYgYW5kIExPT0tVUEQgZGVmaW5lcyAqLwotIAotICNkZWZpbmUgV0FOVFNPQ0tFVAotICNkZWZpbmUgV0FOVEFSUEEKLWRpZmYgLXVyIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi9zc2wuYyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3NzbC5jCi0tLS0geGNoYXQtMi44Ljgtb3JpZy9zcmMvY29tbW9uL3NzbC5jCTIwMTQtMDgtMzAgMTQ6MDk6MDUuMTM3MTE2MjIyIC0wNzAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi9zc2wuYwkyMDE0LTA4LTMwIDE0OjE0OjA4LjQ0OTEzMzg5OSAtMDcwMAotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+CQkJCSAgLyogc3RybmNweSgpICovCi0gI2luY2x1ZGUgInNzbC5oIgkJCQkJICAvKiBzdHJ1Y3QgY2VydF9pbmZvICovCi0gI2luY2x1ZGUgImluZXQuaCIKLS0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCQkgIC8qIEhBVkVfU05QUklOVEYgKi8KLSsjaW5jbHVkZSA8Y29uZmlnLmg+CQkgIC8qIEhBVkVfU05QUklOVEYgKi8KLSAKLSAjaWZuZGVmIEhBVkVfU05QUklOVEYKLSAjZGVmaW5lIHNucHJpbnRmIGdfc25wcmludGYKLWRpZmYgLXVyIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi91dGlsLmMgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi91dGlsLmMKLS0tLSB4Y2hhdC0yLjguOC1vcmlnL3NyYy9jb21tb24vdXRpbC5jCTIwMTQtMDgtMzAgMTQ6MDk6MDUuMTMzMTE2MjQzIC0wNzAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi91dGlsLmMJMjAxNC0wOC0zMCAxNDoxMDoyMy42MzMxMTYwNzAgLTA3MDAKLUBAIC00MSw3ICs0MSw3IEBACi0gI2luY2x1ZGUgInhjaGF0Yy5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlICJ1dGlsLmgiCi0tI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgotKyNpbmNsdWRlIDxjb25maWcuaD4KLSAKLSAjZGVmaW5lIFdBTlRTT0NLRVQKLSAjaW5jbHVkZSAiaW5ldC5oIgotZGlmZiAtdXIgeGNoYXQtMi44Ljgtb3JpZy9zcmMvY29tbW9uL3hjaGF0LmggeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi94Y2hhdC5oCi0tLS0geGNoYXQtMi44Ljgtb3JpZy9zcmMvY29tbW9uL3hjaGF0LmgJMjAxNC0wOC0zMCAxNDowOTowNS4xMzMxMTYyNDMgLTA3MDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3hjaGF0LmgJMjAxNC0wOC0zMCAxNDoxMzo0Mi43OTcxMTY0NzIgLTA3MDAKLUBAIC0xLDQgKzEsNCBAQAotLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2luY2x1ZGUgPGdsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgkJCS8qIG5lZWQgdGltZV90ICovCi1kaWZmIC11ciB4Y2hhdC0yLjguOC1vcmlnL3NyYy9mZS1ndGsvZmUtZ3RrLmggeGNoYXQtMi44Ljgvc3JjL2ZlLWd0ay9mZS1ndGsuaAotLS0tIHhjaGF0LTIuOC44LW9yaWcvc3JjL2ZlLWd0ay9mZS1ndGsuaAkyMDE0LTA4LTMwIDE0OjA5OjA1LjEyOTExNjI3MiAtMDcwMAotKysrIHhjaGF0LTIuOC44L3NyYy9mZS1ndGsvZmUtZ3RrLmgJMjAxNC0wOC0zMCAxNDoxMDoxMy4zMDkxMTU5NTEgLTA3MDAKLUBAIC0xLDQgKzEsNCBAQAotLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2lmZGVmIFdJTjMyCi0gLyogSWYgeW91J3JlIGNvbXBpbGluZyB0aGlzIGZvciBXaW5kb3dzLCB5b3VyIHJlbGVhc2UgaXMgdW4tb2ZmaWNpYWwKLWRpZmYgLXVyIHhjaGF0LTIuOC44LW9yaWcvc3JjL2ZlLWd0ay94dGV4dC5jIHhjaGF0LTIuOC44L3NyYy9mZS1ndGsveHRleHQuYwotLS0tIHhjaGF0LTIuOC44LW9yaWcvc3JjL2ZlLWd0ay94dGV4dC5jCTIwMTQtMDgtMzAgMTQ6MDk6MDUuMTI5MTE2MjcyIC0wNzAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2ZlLWd0ay94dGV4dC5jCTIwMTQtMDgtMzAgMTQ6MTA6MDAuMzEzMTM4MjU0IC0wNzAwCi1AQCAtNTEsNyArNTEsNyBAQAotICNpbmNsdWRlIDxndGsvZ3Rrd2luZG93Lmg+Ci0gCi0gI2lmZGVmIFhDSEFUCi0tI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgkJCS8qIGNhbiBkZWZpbmUgVVNFX1hMSUIgaGVyZSAqLwotKyNpbmNsdWRlIDxjb25maWcuaD4JCQkvKiBjYW4gZGVmaW5lIFVTRV9YTElCIGhlcmUgKi8KLSAjZWxzZQotICNkZWZpbmUgVVNFX1hMSUIKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvZ2xpYi0yLjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdC0yLjguOC9nbGliLTIuMzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmNlNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdC0yLjguOC9nbGliLTIuMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0tLS0geGNoYXQtMi44Ljgub3JpZy9zcmMvY29tbW9uL3hjaGF0LmgJMjAwOS0wOC0xNiAxMTo0MDoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3hjaGF0LmgJMjAxMi0wNS0wNiAwODozMDoxNi4xMjU3NTU0OTcgKzAyMDAKLUBAIC0xLDEwICsxLDYgQEAKLSAjaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCi0gCi0tI2luY2x1ZGUgPGdsaWIvZ3NsaXN0Lmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ2xpc3QuaD4KLS0jaW5jbHVkZSA8Z2xpYi9ndXRpbHMuaD4KLS0jaW5jbHVkZSA8Z2xpYi9naW9jaGFubmVsLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ3N0cmZ1bmNzLmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgkJCS8qIG5lZWQgdGltZV90ICovCi0gCi0gI2lmbmRlZiBYQ0hBVF9ICi0tLS0geGNoYXQtMi44Ljgub3JpZy9zcmMvY29tbW9uL3NlcnZsaXN0LmMJMjAxMC0wNS0xNiAwOToyNDoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3NlcnZsaXN0LmMJMjAxMi0wNS0wNiAwODozMDo0NS42ODE3NTgwMTkgKzAyMDAKLUBAIC0yNCw3ICsyNCw2IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpbmNsdWRlICJ4Y2hhdC5oIgotLSNpbmNsdWRlIDxnbGliL2doYXNoLmg+Ci0gCi0gI2luY2x1ZGUgImNmZ2ZpbGVzLmgiCi0gI2luY2x1ZGUgImZlLmgiCi0tLS0geGNoYXQtMi44Ljgub3JpZy9zcmMvY29tbW9uL3V0aWwuYwkyMDA5LTA4LTE2IDExOjQwOjE2LjAwMDAwMDAwMCArMDIwMAotKysrIHhjaGF0LTIuOC44L3NyYy9jb21tb24vdXRpbC5jCTIwMTItMDUtMDYgMDg6MzE6MTAuMzg5NzYwMTIyICswMjAwCi1AQCAtMzksNyArMzksNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlICJ4Y2hhdC5oIgotICNpbmNsdWRlICJ4Y2hhdGMuaCIKLS0jaW5jbHVkZSA8Z2xpYi9nbWFya3VwLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgInV0aWwuaCIKLSAjaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCi0tLS0geGNoYXQtMi44Ljgub3JpZy9zcmMvY29tbW9uL3RleHQuYwkyMDEwLTA1LTMwIDA0OjE0OjQxLjAwMDAwMDAwMCArMDIwMAotKysrIHhjaGF0LTIuOC44L3NyYy9jb21tb24vdGV4dC5jCTIwMTItMDUtMDYgMDg6MzE6MjIuMzAwNzYxMTM3ICswMjAwCi1AQCAtMjgsNyArMjgsNiBAQAotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotIAotICNpbmNsdWRlICJ4Y2hhdC5oIgotLSNpbmNsdWRlIDxnbGliL2doYXNoLmg+Ci0gI2luY2x1ZGUgImNmZ2ZpbGVzLmgiCi0gI2luY2x1ZGUgImNoYW5vcHQuaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0XzIuOC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdF8yLjguOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA4YzcwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0XzIuOC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJGdWxsLWZlYXR1cmVkIElSQyBjaGF0IGNsaWVudCB3aXRoIHNjcmlwdGluZyBzdXBwb3J0IgotTElDRU5TRSA9ICJHUEx2MisiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhjaGF0Lm9yZyIKLVNFQ1RJT04gPSAieDExL25ldHdvcmsiCi0KLURFUEVORFMgPSAibGliZ2NyeXB0IHpsaWIgZ3RrKyBsaWJzZXh5IgotREVQRU5EUyArPSAiZ2RrLXBpeGJ1Zi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJodHRwOi8veGNoYXQub3JnL2ZpbGVzL3NvdXJjZS8yLjgveGNoYXQtJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovL2dsaWItMi4zMi5wYXRjaCBcCi0gICAgZmlsZTovL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtaW5jbHVkZXMtZm9yLXNlcGFyYXRlLWJ1aWxkLnBhdGNoIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImRidXMiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cy1nbGliIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBcCi0gICAgLS1kaXNhYmxlLXBlcmwgXAotICAgIC0tZGlzYWJsZS10Y2wgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiZGJ1cyIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hjaGF0L3BsdWdpbnMvLmRlYnVnIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjc3NWM0NGYzOGU4NGQwNmMwNmMzMzZiMzJjNGE0NTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ2ZDY5NDM3YjVlMWU0NWYzZTY2MjcwZmUzNjkzNDQ5NDNkZThhMTE5MGU0OThmYWZhNTI5NjMxNWEyN2RiMCIKLQotUE5CTEFDS0xJU1RbeGNoYXRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxpYnNleHkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHN0YXJsZXQveG1sc3RhcmxldF8xLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc3RhcmxldC94bWxzdGFybGV0XzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjk5YWZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc3RhcmxldC94bWxzdGFybGV0XzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgWE1MIHRvb2xraXQiCi1ERVNDUklQVElPTiA9ICJYTUxTdGFybGV0IGlzIGEgY29tbWFuZCBsaW5lIFhNTCB0b29sa2l0IHdoaWNoIGNhbiBiZSB1c2VkIHRvIFwKLSAgICAgICAgICAgICAgIHRyYW5zZm9ybSwgcXVlcnksIHZhbGlkYXRlLCBhbmQgZWRpdCBYTUwgZG9jdW1lbnRzIGFuZCBmaWxlcyBcCi0gICAgICAgICAgICAgICB1c2luZyAgc2ltcGxlIHNldCBvZiBzaGVsbCBjb21tYW5kcyBpbiBzaW1pbGFyIHdheSBpdCBpcyBkb25lIFwKLSAgICAgICAgICAgICAgIGZvciBwbGFpbiB0ZXh0IGZpbGVzIHVzaW5nIGdyZXAvc2VkL2F3ay90ci9kaWZmL3BhdGNoLiIKLUhPTUVQQUdFID0gImh0dHA6Ly94bWxzdGFyLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly94bWxzdGFyLnNvdXJjZWZvcmdlLm5ldC9idWdzLyIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMDQ3NjBkMDllOGIwZmU3MzI4M2QwY2M5ZThiZWE1MyIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3htbHN0YXIvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzYWdlMmMuYXdrLWZpeC13cm9uZy1iYXNlbmFtZS1yZWdleHAucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMGM2ZGIyOTVkMGNmOWZmMGQ0MzllZGI3NTViN2U4ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdiNGVkMDQyZWEyOTA5MjU3ZjJhMzg2MDAxYWY0OWZjZWIzMDNmODRkYTcyMTQ3NzljY2Y5OWZmZmM2YmJiYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBkb2MgYnVpbGQ6IHJlcXVpcmVzIChuYXRpdmUpIHhzdGxwcm9jLCBmb3AsIHBkZjJwcwotRVhUUkFfT0VDT05GPSItLWRpc2FibGUtYnVpbGQtZG9jcyBcCi0gIC0td2l0aC1saWJ4bWwtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgLS13aXRoLWxpYnhzbHQtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uIgotCi0jTWFrZWZpbGU6MjExNjogcmVjaXBlIGZvciB0YXJnZXQgJ3NyYy9lbGVtLXVzYWdlLmMnIGZhaWxlZAotI21ha2VbMV06ICoqKiBbc3JjL2VsZW0tdXNhZ2UuY10gRXJyb3IgMQotIy9iaW4vYmFzaDogc3JjL2VzY2FwZS11c2FnZS5jOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jTWFrZWZpbGU6MjExNjogcmVjaXBlIGZvciB0YXJnZXQgJ3NyYy9lc2NhcGUtdXNhZ2UuYycgZmFpbGVkCi0jbWFrZVsxXTogKioqIFtzcmMvZXNjYXBlLXVzYWdlLmNdIEVycm9yIDEKLVBBUkFMTEVMX01BS0UgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzdGFybGV0L3htbHN0YXJsZXRfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHN0YXJsZXQveG1sc3RhcmxldF8xLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2Q1MmU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzdGFybGV0L3htbHN0YXJsZXRfMS42LjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgWE1MIHRvb2xraXQiCitERVNDUklQVElPTiA9ICJYTUxTdGFybGV0IGlzIGEgY29tbWFuZCBsaW5lIFhNTCB0b29sa2l0IHdoaWNoIGNhbiBiZSB1c2VkIHRvIFwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybSwgcXVlcnksIHZhbGlkYXRlLCBhbmQgZWRpdCBYTUwgZG9jdW1lbnRzIGFuZCBmaWxlcyBcCisgICAgICAgICAgICAgICB1c2luZyAgc2ltcGxlIHNldCBvZiBzaGVsbCBjb21tYW5kcyBpbiBzaW1pbGFyIHdheSBpdCBpcyBkb25lIFwKKyAgICAgICAgICAgICAgIGZvciBwbGFpbiB0ZXh0IGZpbGVzIHVzaW5nIGdyZXAvc2VkL2F3ay90ci9kaWZmL3BhdGNoLiIKK0hPTUVQQUdFID0gImh0dHA6Ly94bWxzdGFyLnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly94bWxzdGFyLnNvdXJjZWZvcmdlLm5ldC9idWdzLyIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMDQ3NjBkMDllOGIwZmU3MzI4M2QwY2M5ZThiZWE1MyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3htbHN0YXIvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzYWdlMmMuYXdrLWZpeC13cm9uZy1iYXNlbmFtZS1yZWdleHAucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiZjNjNWRmYTNiMWEyZWUwNmNkNTdjMjU1Y2M4YjcwYTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTVkODM4YzRmMzM3NTMzMmZkOTU1NTQ2MTkxNzliNjllNGVjOTE0MThhM2E1Mjk2ZTdjNjMxYjdlZDE5ZTdjYSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBkb2MgYnVpbGQ6IHJlcXVpcmVzIChuYXRpdmUpIHhzdGxwcm9jLCBmb3AsIHBkZjJwcworRVhUUkFfT0VDT05GPSItLWRpc2FibGUtYnVpbGQtZG9jcyBcCisgIC0td2l0aC1saWJ4bWwtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgLS13aXRoLWxpYnhzbHQtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1BZGQtY29ycmVjdC1wcmludGYtcXVhbGlmaWVyLWZvci1vZmZfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtQWRkLWNvcnJlY3QtcHJpbnRmLXF1YWxpZmllci1mb3Itb2ZmX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkyZTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtQWRkLWNvcnJlY3QtcHJpbnRmLXF1YWxpZmllci1mb3Itb2ZmX3QucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSAyMzJkYWY1ZmNhNmZiNTJjY2VkNWU4MTBmMjYwMWZlMWE3MWI5NmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjo0OTo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gQWRkIGNvcnJlY3QgcHJpbnRmIHF1YWxpZmllciBmb3Igb2ZmX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L3NyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCisrKysgZ2l0L3NyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMKK0BAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyBpbnQgZWJkYV90ZXN0MShmd3RzX2ZyYW1ld29yayAqZncKKyAJaWYgKChlbnRyeSAhPSBOVUxMKSAmJgorIAkgICAgKGVudHJ5LT50eXBlID09IEZXVFNfTUVNT1JZX01BUF9SRVNFUlZFRCB8fAorIAkgICAgIGVudHJ5LT50eXBlID09IEZXVFNfTUVNT1JZX01BUF9BQ1BJKSkgeworLQkJZnd0c19wYXNzZWQoZncsICJFQkRBIHJlZ2lvbiBtYXBwZWQgYXQgMHglbHggYW5kIHJlc2VydmVkIGFzIGEgJSIgUFJJZDY0CisrCQlmd3RzX3Bhc3NlZChmdywgIkVCREEgcmVnaW9uIG1hcHBlZCBhdCAweCVqZHggYW5kIHJlc2VydmVkIGFzIGEgJSIgUFJJZDY0CisgCQkJIksgcmVnaW9uIGluIHRoZSAlcyB0YWJsZSBhdCAweCUiIFBSSXg2NCAiLi4weCUiIFBSSXg2NCAiLiIsCistCQkJZWJkYV9hZGRyLAorKwkJCShpbnRtYXhfdCllYmRhX2FkZHIsCisgCQkJKGVudHJ5LT5lbmRfYWRkcmVzcyAtIGVudHJ5LT5zdGFydF9hZGRyZXNzKSAvIDEwMjQsCisgCQkJbWVtb3J5X21hcF9uYW1lLAorIAkJCWVudHJ5LT5zdGFydF9hZGRyZXNzLAorQEAgLTkzLDggKzkzLDggQEAgc3RhdGljIGludCBlYmRhX3Rlc3QxKGZ3dHNfZnJhbWV3b3JrICpmdworIAl9IGVsc2UKKyAJCWZ3dHNfZmFpbGVkKGZ3LCBMT0dfTEVWRUxfTUVESVVNLAorIAkJCSJFQkRBTWFwcGVkTm90UmVzZXJ2ZWQiLAorLQkJCSJFQkRBIHJlZ2lvbiBtYXBwZWQgYXQgMHglbHggYnV0IG5vdCByZXNlcnZlZCBpbiB0aGUgJXMgdGFibGUuIiwKKy0JCQllYmRhX2FkZHIsIG1lbW9yeV9tYXBfbmFtZSk7CisrCQkJIkVCREEgcmVnaW9uIG1hcHBlZCBhdCAweCVqZHggYnV0IG5vdCByZXNlcnZlZCBpbiB0aGUgJXMgdGFibGUuIiwKKysJCQkoaW50bWF4X3QpZWJkYV9hZGRyLCBtZW1vcnlfbWFwX25hbWUpOworIAkJCisgCXJldHVybiBGV1RTX09LOworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtSW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1kZXByZWNhdGVkLXN5cy1wb2xsLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2YtZGVwcmVjYXRlZC1zeXMtcG9sbC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZDA3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2YtZGVwcmVjYXRlZC1zeXMtcG9sbC5oLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gMTAwYTEwN2E1M2Q1ZGM5YjA1NTQyNTJhYzVkYmYyYzkzMzA2MTVlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgSnVuIDIwMTcgMDc6MjU6MDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIEluY2x1ZGUgcG9sbC5oIGluc3RlYWQgb2YgZGVwcmVjYXRlZCBzeXMvcG9sbC5oCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYi9zcmMvZnd0c19pcG1pLmMgICB8IDMgKystCisgc3JjL2xpYi9zcmMvZnd0c19waXBlaW8uYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfaXBtaS5jIGIvc3JjL2xpYi9zcmMvZnd0c19pcG1pLmMKK2luZGV4IGNiYjI3NjExLi43MGQxMWNmYSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfaXBtaS5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX2lwbWkuYworQEAgLTE4LDEwICsxOCwxMSBAQAorICAqCisgICovCisgCisrI2luY2x1ZGUgPHBvbGwuaD4KKysKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9pcG1pLmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19waXBlaW8uYyBiL3NyYy9saWIvc3JjL2Z3dHNfcGlwZWlvLmMKK2luZGV4IGZkNzE5NjQwLi5iZGM1YjJlYSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfcGlwZWlvLmMKKysrKyBiL3NyYy9saWIvc3JjL2Z3dHNfcGlwZWlvLmMKK0BAIC0zMCw5ICszMCw5IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8cGF0aHMuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLUFkZC1DOTktZGVmaW5lZC1mb3JtYXQtZm9yLXByaW50aW5nLXVpbnQ2NF90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1BZGQtQzk5LWRlZmluZWQtZm9ybWF0LWZvci1wcmludGluZy11aW50NjRfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWNlODgzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1BZGQtQzk5LWRlZmluZWQtZm9ybWF0LWZvci1wcmludGluZy11aW50NjRfdC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDI1ZjE4YjlhYzM3OTYwZGMxMmEzYjY0OGE1Yzg2NmJkNTZlZjJjYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE2OjUwOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBBZGQgQzk5IGRlZmluZWQgZm9ybWF0IGZvciBwcmludGluZyB1aW50NjRfdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL29wYWwvcmVzZXJ2X21lbS5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvb3BhbC9yZXNlcnZfbWVtLmMgYi9zcmMvb3BhbC9yZXNlcnZfbWVtLmMKK2luZGV4IGVlZWMyOTQ3Li5mMDY3MmUwNSAxMDA2NDQKKy0tLSBhL3NyYy9vcGFsL3Jlc2Vydl9tZW0uYworKysrIGIvc3JjL29wYWwvcmVzZXJ2X21lbS5jCitAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBpbnQgcmVzZXJ2X21lbV9saW1pdHNfdGVzdChmd3RzX2ZyYW1ld29yayAqZncpCisgCQlyZWdpb25zW2pdLnN0YXJ0ID0gKHVpbnQ2NF90KWJlNjR0b2gocmFuZ2VzWzIgKiBqXSk7CisgCQlyZWdpb25zW2pdLmxlbiA9ICh1aW50NjRfdCliZTY0dG9oKHJhbmdlc1syICogaiArIDFdKTsKKyAJCWZ3dHNfbG9nX2luZm8oZncsICJSZWdpb24gbmFtZSAlODBzIgorLQkJCSIgc3RhcnQ6IDB4JTA4bHgsIGxlbjogMHglMDhseFxuIiwKKysJCQkiIHN0YXJ0OiAweCUwOCIgUFJJeDY0ICIsIGxlbjogMHglMDgiIFBSSXg2NCAiXG4iLAorIAkJCXJlZ2lvbnNbal0ubmFtZSwgcmVnaW9uc1tqXS5zdGFydCwgcmVnaW9uc1tqXS5sZW4pOworIAl9CisgCitAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBpbnQgcmVzZXJ2X21lbV9saW1pdHNfdGVzdChmd3RzX2ZyYW1ld29yayAqZncpCisgCQkJCWZ3dHNfZmFpbGVkKGZ3LCBMT0dfTEVWRUxfTUVESVVNLAorIAkJCQkJIkltYWdlU2l6ZU1pc21hdGNoIiwKKyAJCQkJCSJNaXNtYXRjaCBpbiBob21lci1pbWFnZSBzaXplLCAiCistCQkJCQkiZXhwZWN0ZWQ6IDB4JWx4LCBhY3R1YWw6IDB4JWx4IiwKKysJCQkJCSJleHBlY3RlZDogMHglIiBQUkl4NjQgIiwgYWN0dWFsOiAweCUiIFBSSXg2NCAiIiwKKyAJCQkJCWNvbmZpZ3N0cnVjdC5ob21lciwgcmVnaW9uc1tqXS5sZW4pOworIAkJCQlvayA9IGZhbHNlOworIAkJCX0gZWxzZQorQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAkJCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKKyAJCQkJCSJJbWFnZVNpemVNaXNtYXRjaCIsCisgCQkJCQkiTWlzbWF0Y2ggaW4gc2x3LWltYWdlIHNpemUsICIKKy0JCQkJCSJleHBlY3RlZDogMHglbHgsIGFjdHVhbDogMHglbHgiLAorKwkJCQkJImV4cGVjdGVkOiAweCUiIFBSSXg2NCAiLCBhY3R1YWw6IDB4JSIgUFJJeDY0ICIiLAorIAkJCQkJY29uZmlnc3RydWN0LnNsdywgcmVnaW9uc1tqXS5sZW4pOworIAkJCQlvayA9IGZhbHNlOworIAkJCX0gZWxzZQorQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAkJCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKKyAJCQkJCSJJbWFnZVNpemVNaXNtYXRjaCIsCisgCQkJCQkiTWlzbWF0Y2ggaW4gb2NjLWNvbW1vbi1hcmVhIHNpemUsICIKKy0JCQkJCSJleHBlY3RlZDogMHglbHgsIGFjdHVhbDogMHglbHgiLAorKwkJCQkJImV4cGVjdGVkOiAweCUiIFBSSXg2NCIsIGFjdHVhbDogMHglIiBQUkl4NjQiIiwKKyAJCQkJCWNvbmZpZ3N0cnVjdC5vY2NfY29tbW9uLAorIAkJCQkJcmVnaW9uc1tqXS5sZW4pOworIAkJCQlvayA9IGZhbHNlOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1EZWZpbmUtX19TV09SRF9UWVBFLWlmLW5vdC1kZWZpbmVkLWJ5LWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLURlZmluZS1fX1NXT1JEX1RZUEUtaWYtbm90LWRlZmluZWQtYnktbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjgzY2E1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1EZWZpbmUtX19TV09SRF9UWVBFLWlmLW5vdC1kZWZpbmVkLWJ5LWxpYmMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAwZTg5MTI3Y2QwMmVjZDVlYTQ1MDZiOTM1Y2IyYjU5ZWI5NDEwN2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNiBKdW4gMjAxNyAwNzozNzoyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gRGVmaW5lIF9fU1dPUkRfVFlQRSBpZiBub3QgZGVmaW5lZCBieSBsaWJjCisKK19fU1dPUkRfVFlQRSBpcyBpbnRlcm5hbCB0byBnbGliYywgdGhlcmVmb3JlCitjaGVjayBhbmQgZGVmaW5lIGl0IGlmIG5lZWRlZCBlLmcuIG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbGliL3NyYy9md3RzX3VlZmkuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfdWVmaS5jIGIvc3JjL2xpYi9zcmMvZnd0c191ZWZpLmMKK2luZGV4IDFmOWQzMWZhLi4yZDkyNWY4ZCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfdWVmaS5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX3VlZmkuYworQEAgLTU5LDYgKzU5LDEwIEBAIHR5cGVkZWYgc3RydWN0IHsKKyAjZGVmaW5lIFVFRklfSUZBQ0VfU1lTRlMJCSgyKQkvKiBzeXNmcyAqLworICNkZWZpbmUgVUVGSV9JRkFDRV9FRklWQVJTCQkoMykJLyogZWZpdmFyIGZzICovCisgCisrI2lmbmRlZiBfX1NXT1JEX1RZUEUKKyt0eXBlZGVmIF9fdHlwZW9mX18oICgoc3RydWN0IHN0YXRmcyAqKTApLT5mX3R5cGUgKQlfX1NXT1JEX1RZUEU7CisrI2VuZGlmCisrCisgLyogRmlsZSBzeXN0ZW0gbWFnaWMgbnVtYmVycyAqLworICNkZWZpbmUgUFNUT1JFRlNfTUFHSUMgICAgICAgICAgKChfX1NXT1JEX1RZUEUpMHg2MTY1Njc2QykKKyAjZGVmaW5lIEVGSVZBUkZTX01BR0lDICAgICAgICAgICgoX19TV09SRF9UWVBFKTB4ZGU1ZTgxZTQpCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLVVuZGVmaW5lLVBBR0VfU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtVW5kZWZpbmUtUEFHRV9TSVpFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NGZiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLVVuZGVmaW5lLVBBR0VfU0laRS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDA4NTcyNjlkNWEwNTNiNWI0YzMxY2ZhMDFiNjUwMTUyNmIyNDAzNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA2IEp1biAyMDE3IDA3OjM5OjI4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBVbmRlZmluZSBQQUdFX1NJWkUKKworbXVzbCBkZWZpbmVzIFBBR0VfU0laRSBhbmQgYnVpbGQgY29tcGxhaW5zCitvZiBtdWx0aXBsZSBkZWZpbml0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jIGIvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCitpbmRleCAxZDRmYzcwNS4uNzEwMjNhZDIgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKKysrKyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYworQEAgLTQyLDYgKzQyLDcgQEAKKyAjZGVmaW5lIEJJT1NfU1RBUlQJKDB4MDAwZTAwMDApCQkvKiBTdGFydCBvZiBCSU9TIG1lbW9yeSAqLworICNkZWZpbmUgQklPU19FTkQgIAkoMHgwMDBmZmZmZikJCS8qIEVuZCBvZiBCSU9TIG1lbW9yeSAqLworICNkZWZpbmUgQklPU19MRU5HVEgJKEJJT1NfRU5EIC0gQklPU19TVEFSVCkJLyogTGVuZ3RoIG9mIEJJT1MgbWVtb3J5ICovCisrI3VuZGVmIFBBR0VfU0laRQorICNkZWZpbmUgUEFHRV9TSVpFCSg0MDk2KQorIAorIHN0YXRpYyBmd3RzX2FjcGlfdGFibGVfaW5mbwl0YWJsZXNbQUNQSV9NQVhfVEFCTEVTXTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtdXNlLWludHB0cl90LXRvLWZpeC1wb2ludGVyLXRvLWludC1jYXN0LWlzc3Vlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtdXNlLWludHB0cl90LXRvLWZpeC1wb2ludGVyLXRvLWludC1jYXN0LWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2QzZmJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy11c2UtaW50cHRyX3QtdG8tZml4LXBvaW50ZXItdG8taW50LWNhc3QtaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb20gZDBkNzY4MjBlZmU1MWRkNDA0ZDM4MWZjNGM0NjU0NDAwOGU3NTdkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6NTA6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHVzZSBpbnRwdHJfdCB0byBmaXggcG9pbnRlci10by1pbnQtY2FzdCBpc3N1ZXMKKwordWludHB0cl90IGlzIGd1YXJhbnRlZWQgdG8gYmUgd2lkZSBlbm91Z2ggdGhhdAorY29udmVydGluZyBhIHZvaWQqIHRvIHVpbnRwdHJfdCBhbmQgYmFjayBhZ2Fpbgord2lsbCB5aWVsZCB0aGUgb3JpZ2luYWwgcG9pbnRlciB2YWx1ZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jIHwgNCArKy0tCisgc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMgICAgICAgIHwgMiArLQorIHNyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMgICAgICB8IDQgKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jIGIvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCitpbmRleCA4MzJmOGQ2Ni4uZDAwMDY1MjkgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKKysrKyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYworQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgZnd0c19hY3BpX3RhYmxlX3JzZHAgKmZ3dHNfYWNwaV9nZXRfcnNkcChmd3RzX2ZyYW1ld29yayAqZncsIHZvaWQgKmFkZHIsCisgCWZ3dHNfYWNwaV90YWJsZV9yc2RwICpyc2RwID0gTlVMTDsKKyAJKnJzZHBfbGVuID0gMDsKKyAKKy0JaWYgKChtZW0gPSBmd3RzX21tYXAoKG9mZl90KWFkZHIsIHNpemVvZihmd3RzX2FjcGlfdGFibGVfcnNkcCkpKSA9PSBGV1RTX01BUF9GQUlMRUQpCisrCWlmICgobWVtID0gZnd0c19tbWFwKCh1aW50cHRyX3QpYWRkciwgc2l6ZW9mKGZ3dHNfYWNwaV90YWJsZV9yc2RwKSkpID09IEZXVFNfTUFQX0ZBSUxFRCkKKyAJCXJldHVybiBOVUxMOworIAorIAlpZiAoZnd0c19zYWZlX21lbXJlYWQobWVtLCBzaXplb2YoZnd0c19hY3BpX3RhYmxlX3JzZHApKSAhPSBGV1RTX09LKSB7CitAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyBpbnQgZnd0c19hY3BpX2xvYWRfdGFibGVzX2Zyb21fZmlybXdhcmUoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAlpZiAoKHJzZHAgPSBmd3RzX2FjcGlfZ2V0X3JzZHAoZncsIHJzZHBfYWRkciwgJnJzZHBfbGVuKSkgPT0gTlVMTCkKKyAJCXJldHVybiBGV1RTX0VSUk9SOworIAorLQlmd3RzX2FjcGlfYWRkX3RhYmxlKCJSU0RQIiwgcnNkcCwgKHVpbnQ2NF90KShvZmZfdClyc2RwX2FkZHIsIHJzZHBfbGVuLCBGV1RTX0FDUElfVEFCTEVfRlJPTV9GSVJNV0FSRSk7CisrCWZ3dHNfYWNwaV9hZGRfdGFibGUoIlJTRFAiLCByc2RwLCAodWludDY0X3QpKHVpbnRwdHJfdClyc2RwX2FkZHIsIHJzZHBfbGVuLCBGV1RTX0FDUElfVEFCTEVfRlJPTV9GSVJNV0FSRSk7CisgCisgCS8qIExvYWQgYW55IHRhYmxlcyBmcm9tIFhTRFQgaWYgaXQncyB2YWxpZCAqLworIAlpZiAocnNkcC0+eHNkdF9hZGRyZXNzKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMgYi9zcmMvbGliL3NyYy9md3RzX21tYXAuYworaW5kZXggYTA5ZjY4OGUuLjlmZTYzMjlhIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMKKysrKyBiL3NyYy9saWIvc3JjL2Z3dHNfbW1hcC5jCitAQCAtODEsNyArODEsNyBAQCBpbnQgZnd0c19tdW5tYXAodm9pZCAqbWVtLCBjb25zdCBzaXplX3Qgc2l6ZSkKKyAJb2ZmX3Qgb2Zmc2V0OworIAorIAlwYWdlX3NpemUgPSBmd3RzX3BhZ2Vfc2l6ZSgpOworLQlvZmZzZXQgPSAoKG9mZl90KShtZW0pKSAmIChwYWdlX3NpemUgLSAxKTsKKysJb2Zmc2V0ID0gKCh1aW50cHRyX3QpKG1lbSkpICYgKHBhZ2Vfc2l6ZSAtIDEpOworIAorIAlpZiAobXVubWFwKCh2b2lkICopKCh1aW50OF90ICopbWVtIC0gb2Zmc2V0KSwgc2l6ZSArIG9mZnNldCkgPCAwKQorIAkJcmV0dXJuIEZXVFNfRVJST1I7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19zbWJpb3MuYyBiL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKK2luZGV4IDhkMGVhMzliLi42M2I0YmYyNSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKKysrKyBiL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKK0BAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkICpmd3RzX3NtYmlvc19maW5kX2VudHJ5X3VlZmkoZnd0c19mcmFtZXdvcmsgKmZ3LCBmd3RzX3NtYmlvc19lbnRyeSAqCisgCWlmICgoYWRkciA9IGZ3dHNfc2Nhbl9lZmlfc3lzdGFiKCJTTUJJT1MiKSkgIT0gTlVMTCkgeworIAkJZnd0c19zbWJpb3NfZW50cnkgKm1hcHBlZF9lbnRyeTsKKyAKKy0JCWlmICgobWFwcGVkX2VudHJ5ID0gZnd0c19tbWFwKChvZmZfdClhZGRyLCBzaXplb2YoZnd0c19zbWJpb3NfZW50cnkpKSkgIT0gRldUU19NQVBfRkFJTEVEKSB7CisrCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgodWludHB0cl90KWFkZHIsIHNpemVvZihmd3RzX3NtYmlvc19lbnRyeSkpKSAhPSBGV1RTX01BUF9GQUlMRUQpIHsKKyAJCQkqZW50cnkgPSAqbWFwcGVkX2VudHJ5OworIAkJCSh2b2lkKWZ3dHNfbXVubWFwKG1hcHBlZF9lbnRyeSwgc2l6ZW9mKGZ3dHNfc21iaW9zX2VudHJ5KSk7CisgCQkJKnR5cGUgID0gRldUU19TTUJJT1M7CitAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCAqZnd0c19zbWJpb3MzMF9maW5kX2VudHJ5X3VlZmkoZnd0c19mcmFtZXdvcmsgKmZ3LCBmd3RzX3NtYmlvczMwX2VudAorIAlpZiAoKGFkZHIgPSBmd3RzX3NjYW5fZWZpX3N5c3RhYigiU01CSU9TMyIpKSAhPSBOVUxMKSB7CisgCQlmd3RzX3NtYmlvczMwX2VudHJ5ICptYXBwZWRfZW50cnk7CisgCistCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgob2ZmX3QpYWRkciwgc2l6ZW9mKGZ3dHNfc21iaW9zMzBfZW50cnkpKSkgIT0gRldUU19NQVBfRkFJTEVEKSB7CisrCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgodWludHB0cl90KWFkZHIsIHNpemVvZihmd3RzX3NtYmlvczMwX2VudHJ5KSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgeworIAkJCSplbnRyeSA9ICptYXBwZWRfZW50cnk7CisgCQkJKHZvaWQpZnd0c19tdW5tYXAobWFwcGVkX2VudHJ5LCBzaXplb2YoZnd0c19zbWJpb3MzMF9lbnRyeSkpOworIAkJCXJldHVybiBhZGRyOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHNfZ2l0LmJiCmluZGV4IDRjNGFlNjYuLjg3YTIzYWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0c19naXQuYmIKQEAgLTUsMTEgKzUsMTcgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE2O21kNT0zMWRhNTkwZjNlOWYzYmQzNGRjZGI5ZTRkYjU2ODUxOSIKIAotUFYgPSAiMTcuMDMuMDAiCitQViA9ICIxNy4wMy4wMCtnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gImUzZTlkMTQ0MmI0Y2M3MGY1YjMwMTk5ZjU4NGNlYzhlMjVhZWFhZDQiCitTUkNSRVYgPSAiMDE1M2VhNTFjYjY0OGIzMDY3YTFiMzI3ZWVlNmEwNzViNmNmYTMzMCIKIFNSQ19VUkkgPSAiZ2l0Oi8va2VybmVsLnVidW50dS5jb20vaHdlL2Z3dHMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaWdub3JlLWNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZC13YXJuaW5nLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLWRlcHJlY2F0ZWQtc3lzLXBvbGwuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURlZmluZS1fX1NXT1JEX1RZUEUtaWYtbm90LWRlZmluZWQtYnktbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVVuZGVmaW5lLVBBR0VfU0laRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb3JyZWN0LXByaW50Zi1xdWFsaWZpZXItZm9yLW9mZl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLUM5OS1kZWZpbmVkLWZvcm1hdC1mb3ItcHJpbnRpbmctdWludDY0X3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy11c2UtaW50cHRyX3QtdG8tZml4LXBvaW50ZXItdG8taW50LWNhc3QtaXNzdWVzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMTcsMTAgKzIzLDEyIEBACiBDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFhcmNoNjR8cG93ZXJwYzY0KS4qLWxpbnV4IgogCiBERVBFTkRTID0gImxpYnBjcmUganNvbi1jIGdsaWItMi4wIGR0YyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGliZXhlY2luZm8iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCiBDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vanNvbi1jIC1Xbm8tZXJyb3I9dW5rbm93bi1wcmFnbWFzIgorTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGV4ZWNpbmZvIgogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2Z3dHMvbGliKiR7U09MSUJTfSIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Z3dHMvbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vZnd0cy9saWIqLmxhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FCmluZGV4IDJhOWI5YWMuLmNjOTY1YWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9SRUFETUUKQEAgLTUyLDcgKzUyLDcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCi0gIGJyYW5jaDogcHlybyAKKyAgYnJhbmNoOiByb2NrbyAKICAgcmV2aXNpb246IEhFQUQKICAgcHJpbzogZGVmYXVsdAogCkBAIC03NSwxMiArNzUsMTIgQEAKIC0tLS0tLS0tLS0tCiAKIFNlbmQgcGF0Y2hlcyAvIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aAotJ1ttZXRhLXBlcmxdW3B5cm9dJyBpbiB0aGUgc3ViamVjdC4KKydbbWV0YS1wZXJsXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0LgogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1wZXJsXVtweXJvXVtQQVRDSCcKKydnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1wZXJsXVtyb2Nrb11bUEFUQ0gnCiAKLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Cityb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIExpY2Vuc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgppbmRleCAwNDg1YWM4Li5hODYxYzNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCkBAIC0xMyw0ICsxMyw0IEBACiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fcGVybC1sYXllciA9ICIxIgogCi1MQVlFUkRFUEVORFNfcGVybC1sYXllciA9ICJjb3JlIgorTEFZRVJERVBFTkRTX3BlcmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2ZpbGVzLzk5X2xvZ2NoZWNrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9maWxlcy85OV9sb2djaGVjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGUzM2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9maWxlcy85OV9sb2djaGVjawpAQCAtMCwwICsxLDIgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCBsb2djaGVjayBsb2djaGVjayAwNzU1IC92YXIvbG9jay9sb2djaGVjayBub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NzY2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOC5iYgpAQCAtMCwwICsxLDc5IEBACitTVU1NQVJZID0gIkFuYWx5emVzIGxvZyBmaWxlcyBhbmQgc2VuZHMgbm90aWNlYWJsZSBldmVudHMgYXMgZW1haWwiCitERVNDUklQVElPTiA9ICJcCitMb2djaGVjayBpcyBhIHNpbXBsZSB1dGlsaXR5IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGFsbG93IGEgc3lzdGVtIGFkbWluaXN0cmF0b3IgXAordG8gdmlldyB0aGUgbG9nLWZpbGVzIHdoaWNoIGFyZSBwcm9kdWNlZCB1cG9uIGhvc3RzIHVuZGVyIHRoZWlyIGNvbnRyb2wuIFwKK0l0IGRvZXMgdGhpcyBieSBtYWlsaW5nIHN1bW1hcmllcyBvZiB0aGUgbG9nLWZpbGVzIHRvIHRoZW0sIGFmdGVyIGZpcnN0IFwKK2ZpbHRlcmluZyBvdXQgIm5vcm1hbCIgZW50cmllcy4gXAorTm9ybWFsIGVudHJpZXMgYXJlIGVudHJpZXMgd2hpY2ggbWF0Y2ggb25lIG9mIHRoZSBtYW55IGluY2x1ZGVkIHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBmaWxlcyBjb250YWluIGluIHRoZSBkYXRhYmFzZS4iCitTRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8vbG9nY2hlY2sub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGViaWFuLm9yZy9naXQvbG9nY2hlY2svbG9nY2hlY2suZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzk5X2xvZ2NoZWNrIFwKKyIKK1NSQ1JFViA9ICIwYTU4NjVkODBmYTM0YzU1Mzg3YTE5MTdhM2U2Zjg4NWJjZmY3ZjFkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHVzZXJhZGQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLW0gLWcgJHtCUE59IC1HIGFkbSAtciAtZCAke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAgICAgICAtcyAvYmluL2ZhbHNlIC1jICdsb2djaGVjayBhY2NvdW50JyAke0JQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciAke0JQTn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgIyBGaXggUUEgSXNzdWUKKyAgICBzZWQgLWkgJy9pbnN0YWxsIC1kICQoREVTVERJUilcL3ZhclwvbG9ja1wvbG9nY2hlY2svcy9eLyMvJyBNYWtlZmlsZQorCisgICAgIyAibWFrZSBpbnN0YWxsIiBkbyBub3QgaW5zdGFsbCB0aGUgbWFucGFnZXMuIEluc3RhbGwgdGhlbSBtYW51YWxseS4KKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjEKKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ2NoZWNrLXRlc3QuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2d0YWlsLjggJHtEfSR7bWFuZGlyfS9tYW44LworICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9ndGFpbDIuOCAke0R9JHttYW5kaXJ9L21hbjgvCisKKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQKKyAgICBpbnN0YWxsIC1tIDY0NCBkZWJpYW4vbG9nY2hlY2suY3Jvbi5kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZC9sb2djaGVjaworICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0vdmFyL2xpYi9sb2djaGVjaworCisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorCisgICAgIyBpbnN0YWxsIGhlYWRlci50eHQgZm9yIGdlbmVyYXRlZCBtYWlscworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi9oZWFkZXIudHh0ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorCisgICAgY2hvd24gLVIgJHtCUE59OiR7QlBOfSAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59CisgICAgY2hvd24gLVIgcm9vdDoke0JQTn0gJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59CisKKyAgICAjIERvbid0IGluc3RhbGwgL3Zhci9sb2NrIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9sb2djaGVjayAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgL3Zhci9sb2NrL2xvZ2NoZWNrIDA3NTUgbG9nY2hlY2sgbG9nY2hlY2sgLSIgXAorICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2xvZ2NoZWNrLmNvbmYKKyAgICBmaQorfQorCitWSVJUVUFMLVJVTlRJTUVfc3lzbG9nID8/PSAicnN5c2xvZyIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGJhc2ggXAorICAgIGNyb25pZSBcCisgICAgZGViaWFudXRpbHMtcnVuLXBhcnRzIFwKKyAgICBncmVwIFwKKyAgICBsb2NrZmlsZS1wcm9ncyBcCisgICAgbWltZS1jb25zdHJ1Y3QgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCisgICAgJHtWSVJUVUFMLVJVTlRJTUVfc3lzbG9nfSBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xvZ3RhaWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIxMTg2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJhIHV0aWxpdHkgdG8gYWRkIHVzZXJzL2dyb3VwcyB0byB0aGUgc3lzdGVtIgotREVTQ1JJUFRJT04gPSAiYWRkdXNlciwgYWRkZ3JvdXAgLSBhZGQgYSB1c2VyIG9yIGdyb3VwIHRvIHRoZSBzeXN0ZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYWRkdXNlci8iCi1TRUNUSU9OID0gImJhc2UvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1jYWVkNDlhYjE2NmYyMmVmMzFiZjExMjdmNTU4ZDBlZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FkZHVzZXItYWRkLU0tb3B0aW9uLWZvci11c2VyYWRkLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZiYjZkOTM5MjJkMjgxZjFiNTYzOTNhNTNmOGNlNWZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3Mjg4MjgxZDRkMWVlYzI5NDhiYTM2ODc0NTJjYTMzYTgyMjRkNDBjOThkMzIxYmMzZmJhZWZjZjZkNGMwZGIiCi0KLWluaGVyaXQgY3Bhbi1iYXNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYWRkdXNlciAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2RlbHVzZXIgJHtEfSR7c2JpbmRpcn0KLQotICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L0FkZHVzZXJDb21tb24ucG0gJHtEfSR7bGliZGlyfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0RlYmlhbi9BZGR1c2VyQ29tbW9uLnBtCi0gICAgc2VkIC1pIC1lICJzL1ZFUlNJT04vJHtQVn0vIiAke0R9JHtzYmluZGlyfS8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouY29uZiAke0R9LyR7c3lzY29uZmRpcn0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW41Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouY29uZi41ICR7RH0ke21hbmRpcn0vbWFuNQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouOCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci0gICAgY3AgLXJmICR7U30vZXhhbXBsZXMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBzaGFkb3cgXAotICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhZGR1c2VyIGRlbHVzZXIgYWRkZ3JvdXAgZGVsZ3JvdXAiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGR1c2VyXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGVsdXNlcl0gPSAiJHtzYmluZGlyfS9kZWx1c2VyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZGdyb3VwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbGdyb3VwIgotQUxURVJOQVRJVkVfVEFSR0VUW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIuJHtCUE59IgotQUxURVJOQVRJVkVfVEFSR0VUW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbHVzZXIuJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEyYTVmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTYuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJhIHV0aWxpdHkgdG8gYWRkIHVzZXJzL2dyb3VwcyB0byB0aGUgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiYWRkdXNlciwgYWRkZ3JvdXAgLSBhZGQgYSB1c2VyIG9yIGdyb3VwIHRvIHRoZSBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYWRkdXNlci8iCitTRUNUSU9OID0gImJhc2UvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1jYWVkNDlhYjE2NmYyMmVmMzFiZjExMjdmNTU4ZDBlZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2FkZHVzZXItYWRkLU0tb3B0aW9uLWZvci11c2VyYWRkLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImUwNDJhNTg0MmI4ZjI0MzEyZDZmNWE5OWExYWY4ZjJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZDgxMWFkM2JhMTdkMjc5NGIxNGQxOWFjZDFkNmI1N2Y5ZGQzMWQ5MjUwZDUxZTc4Njg5NWRlZTJkYWVhYzAiCisKK2luaGVyaXQgY3Bhbi1iYXNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYWRkdXNlciAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2RlbHVzZXIgJHtEfSR7c2JpbmRpcn0KKworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L0FkZHVzZXJDb21tb24ucG0gJHtEfSR7bGliZGlyfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0RlYmlhbi9BZGR1c2VyQ29tbW9uLnBtCisgICAgc2VkIC1pIC1lICJzL1ZFUlNJT04vJHtQVn0vIiAke0R9JHtzYmluZGlyfS8qCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouY29uZiAke0R9LyR7c3lzY29uZmRpcn0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW41CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouY29uZi41ICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouOCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgY3AgLXJmICR7U30vZXhhbXBsZXMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBzaGFkb3cgXAorICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhZGR1c2VyIGRlbHVzZXIgYWRkZ3JvdXAgZGVsZ3JvdXAiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGR1c2VyXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGVsdXNlcl0gPSAiJHtzYmluZGlyfS9kZWx1c2VyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZGdyb3VwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbGdyb3VwIgorQUxURVJOQVRJVkVfVEFSR0VUW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIuJHtCUE59IgorQUxURVJOQVRJVkVfVEFSR0VUW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbHVzZXIuJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNhcHR1cmUvbGliY2FwdHVyZS10aW55LXBlcmxfMC4zNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjYXB0dXJlL2xpYmNhcHR1cmUtdGlueS1wZXJsXzAuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3N2RkNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNhcHR1cmUvbGliY2FwdHVyZS10aW55LXBlcmxfMC4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2FwdHVyZTo6VGlueSAtIENhcHR1cmUgU1RET1VUIGFuZCBTVERFUlIgZnJvbSBQZXJsLCBYUyBvciBleHRlcm5hbCBwcm9ncmFtcy4iCi1ERVNDUklQVElPTiA9ICJDYXB0dXJlOjpUaW55IHByb3ZpZXMgYSBzaW1wbGUsIHBvcnRhYmxlIHdheSB0byBjYXB0dXJlIFwKLWFsbW9zdCBhbnl0aGluZyBzZW50IHRvIFNURE9VVCBvciBTVERFUlIsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBjb21lcyBcCi1mcm9tIFBlcmwsIGZyb20gWFMgY29kZSBvciBmcm9tIGFuIGV4dGVybmFsIHByb2dyYW0uIE9wdGlvbmFsbHksIG91dHB1dCBjYW4gXAotYmUgdGVlZCBzbyB0aGF0IGl0IGlzIGNhcHR1cmVkIHdoaWxlIGJlaW5nIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBvcmlnaW5hbCBcCi1maWxlaGFuZGxlcy4gWWVzLCBpdCBldmVuIHdvcmtzIG9uIFdpbmRvd3MgKHVzdWFsbHkpLiBTdG9wIGd1ZXNzaW5nIHdoaWNoIG9mIFwKLWEgZG96ZW4gY2FwdHVyaW5nIG1vZHVsZXMgdG8gdXNlIGluIGFueSBwYXJ0aWN1bGFyIHNpdHVhdGlvbiBhbmQganVzdCB1c2UgXAotdGhpcyBvbmUuIgotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35kYWdvbGRlbi9DYXB0dXJlLVRpbnkvIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdhNDkxOGEzMGFjZTI0Mzk1MDIwZTViOGMwM2I4M2YiCi0KLVNSQ05BTUUgPSAiQ2FwdHVyZS1UaW55IgotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0QvREEvREFHT0xERU4vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGI2NDQ0MTExYzMwYWMwMWE3NmE0YzExODI0MWM3YjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI4NzQyZTUzYWQyMDRhNDIxYmM4MmQ1ODEzZjNjNGM4NWM3NjU4MWVhMTBkOTEwZDBhZWZjMTYxZjhjYjAzZCIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjYXB0dXJlL2xpYmNhcHR1cmUtdGlueS1wZXJsXzAuNDYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2FwdHVyZS9saWJjYXB0dXJlLXRpbnktcGVybF8wLjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTk4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2FwdHVyZS9saWJjYXB0dXJlLXRpbnktcGVybF8wLjQ2LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQ2FwdHVyZTo6VGlueSAtIENhcHR1cmUgU1RET1VUIGFuZCBTVERFUlIgZnJvbSBQZXJsLCBYUyBvciBleHRlcm5hbCBwcm9ncmFtcy4iCitERVNDUklQVElPTiA9ICJDYXB0dXJlOjpUaW55IHByb3ZpZXMgYSBzaW1wbGUsIHBvcnRhYmxlIHdheSB0byBjYXB0dXJlIFwKK2FsbW9zdCBhbnl0aGluZyBzZW50IHRvIFNURE9VVCBvciBTVERFUlIsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBjb21lcyBcCitmcm9tIFBlcmwsIGZyb20gWFMgY29kZSBvciBmcm9tIGFuIGV4dGVybmFsIHByb2dyYW0uIE9wdGlvbmFsbHksIG91dHB1dCBjYW4gXAorYmUgdGVlZCBzbyB0aGF0IGl0IGlzIGNhcHR1cmVkIHdoaWxlIGJlaW5nIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBvcmlnaW5hbCBcCitmaWxlaGFuZGxlcy4gWWVzLCBpdCBldmVuIHdvcmtzIG9uIFdpbmRvd3MgKHVzdWFsbHkpLiBTdG9wIGd1ZXNzaW5nIHdoaWNoIG9mIFwKK2EgZG96ZW4gY2FwdHVyaW5nIG1vZHVsZXMgdG8gdXNlIGluIGFueSBwYXJ0aWN1bGFyIHNpdHVhdGlvbiBhbmQganVzdCB1c2UgXAordGhpcyBvbmUuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35kYWdvbGRlbi9DYXB0dXJlLVRpbnkvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdhNDkxOGEzMGFjZTI0Mzk1MDIwZTViOGMwM2I4M2YiCisKK1NSQ05BTUUgPSAiQ2FwdHVyZS1UaW55IgorU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0QvREEvREFHT0xERU4vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZDcxOGFmMDc3MjlkMjZhNzkzOTQ5Y2E2YmEyNTgwYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ3YTZhODMwY2Y3ZjJiMjk2MGJmOGI4YWZhYWMxNmE1MzdlZGU2NGYzMDIzODI3YWNlYTViZDI0Y2E3NzAxNSIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpYiBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZhMzQyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDR0kucG0gaXMgYSBzdGFibGUsIGNvbXBsZXRlIGFuZCBtYXR1cmUgc29sdXRpb24gZm9yIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBcCi1IVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuIE1ham9yIGZlYXR1cmVzIGluY2x1ZGluZyBwcm9jZXNzaW5nIGZvcm0gXAotc3VibWlzc2lvbnMsIGZpbGUgdXBsb2FkcywgcmVhZGluZyBhbmQgd3JpdGluZyBjb29raWVzLCBxdWVyeSBzdHJpbmcgZ2VuZXJhdGlvbiBcCi1hbmQgbWFuaXB1bGF0aW9uLCBhbmQgcHJvY2Vzc2luZyBhbmQgcHJlcGFyaW5nIEhUVFAgaGVhZGVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZWVqby9DR0ktNC4yOC9saWIvQ0dJLnBvZCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMi4wIHwgR1BMLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmU5NzY5ZjBhMjYxM2E5OGJjN2ZjZTE1ZGVlMGM1MzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTC9MRS9MRUVKTy9DR0ktJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTVlNjM5NDJjMDIzNTQ0MjZiMjVmMDU2ZjJhNDQ2N2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIzNGNkYzU5ZjU5NjYzMmIwNjIwOTM5Mjg2ZjZlMThlN2U4MWQwNDNiNmI1N2I5NzRhOGUwN2QxOGI1ZmMxZCIKLQotUyA9ICIke1dPUktESVJ9L0NHSS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGVybC1tb2R1bGUtY2dpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjZhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzYuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiQ0dJLnBtIGlzIGEgc3RhYmxlLCBjb21wbGV0ZSBhbmQgbWF0dXJlIHNvbHV0aW9uIGZvciBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgXAorSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBNYWpvciBmZWF0dXJlcyBpbmNsdWRpbmcgcHJvY2Vzc2luZyBmb3JtIFwKK3N1Ym1pc3Npb25zLCBmaWxlIHVwbG9hZHMsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29va2llcywgcXVlcnkgc3RyaW5nIGdlbmVyYXRpb24gXAorYW5kIG1hbmlwdWxhdGlvbiwgYW5kIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBIVFRQIGhlYWRlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVlam8vQ0dJLTQuMjgvbGliL0NHSS5wb2QiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTIuMCB8IEdQTC0yLjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJlOTc2OWYwYTI2MTNhOThiYzdmY2UxNWRlZTBjNTMzIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0wvTEUvTEVFSk8vQ0dJLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4NTY2ZDgxZjQzMGE3Zjc1NWJiNGQ4ZjQyNmNlMzVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlZmU4NGQ0ZjI0NjFlODY3ZjliZTgwZjNmOTg4ZTE3YmNiYmNiNGUzMDY5NTJjZjJmZDFkZWE3ZTQ1MTU0OTAiCisKK1MgPSAiJHtXT1JLRElSfS9DR0ktJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNnaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjdXJzZXMvbGliY3Vyc2VzLXBlcmxfMS4zNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjdXJzZXMvbGliY3Vyc2VzLXBlcmxfMS4zNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdlOWQ5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3Vyc2VzL2xpYmN1cnNlcy1wZXJsXzEuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWItY3Vyc2VzIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIFBlcmwgcHJvZ3JhbXMgYW5kIFwKLXRoZSBjdXJzZXMgbGlicmFyeS4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjY7ZW5kbGluZT0zMDttZDU9MGIzNzM1NmM1ZTllMjgwODBhMzQyMmQ4MmFmOGFmMDkiCi0KLURFUEVORFMgKz0gInBlcmwgbmN1cnNlcyAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0cvR0kvR0lSQUZGRUQvQ3Vyc2VzLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3NGMyMTAzY2M1MzU1MmEwZmFhMzcxYzRkOTExOWY2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwOGU0NGQ1OTQ2YmUyNjVhZjVmZjBiOTBmM2QwODAyMTA4ZTdkMWIzOWIwZmU2OGE0YTQ0NmZlMjg0ZDMyMmIiCi0KLVMgPSAiJHtXT1JLRElSfS9DdXJzZXMtJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJJTkM9LUkke1NUQUdJTkdfSU5DRElSfSBMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCi0KLWluaGVyaXQgY3BhbgotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0gICAgY3Bhbl9kb19jb21waWxlCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjdXJzZXMvbGliY3Vyc2VzLXBlcmxfMS4zNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjdXJzZXMvbGliY3Vyc2VzLXBlcmxfMS4zNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODJiOTczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmN1cnNlcy9saWJjdXJzZXMtcGVybF8xLjM2LmJiCkBAIC0wLDAgKzEsMjYgQEAKK0RFU0NSSVBUSU9OID0gImxpYi1jdXJzZXMgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gUGVybCBwcm9ncmFtcyBhbmQgXAordGhlIGN1cnNlcyBsaWJyYXJ5LiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNjtlbmRsaW5lPTMwO21kNT0wYjM3MzU2YzVlOWUyODA4MGEzNDIyZDgyYWY4YWYwOSIKKworREVQRU5EUyArPSAicGVybCBuY3Vyc2VzICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRy9HSS9HSVJBRkZFRC9DdXJzZXMtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzg5YzcwZWU1NTMwYjg4N2Y4ZTVkYzEzMDNjYjUyOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQxNDc5NWJhMDMxYzU5MThjNzAyNzlmZTUzNGZlZTU5NGE5NmVjNGIwYzc4ZjQ0Y2U0NTMwOTA3OTZhZGQ2NCIKKworUyA9ICIke1dPUktESVJ9L0N1cnNlcy0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0tSSR7U1RBR0lOR19JTkNESVJ9IExJQlM9LUwke1NUQUdJTkdfTElCRElSfSIKKworaW5oZXJpdCBjcGFuCisKK2RvX2NvbXBpbGUoKSB7CisgICAgZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKyAgICBjcGFuX2RvX2NvbXBpbGUKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRiL2xpYmRiZC1zcWxpdGUtcGVybF8xLjUwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRiL2xpYmRiZC1zcWxpdGUtcGVybF8xLjUwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGJmZDY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQZXJsIERCSSBkcml2ZXIgZm9yIFNRTGl0ZSIKLURFU0NSSVBUSU9OID0gIkRCRDo6U1FMaXRlIGlzIGEgUGVybCBEQkkgZHJpdmVyIGZvciBTUUxpdGUsIHRoYXQgaW5jbHVkZXMgdGhlIGVudGlyZSBcCi10aGluZyBpbiB0aGUgZGlzdHJpYnV0aW9uLiBTbyBpbiBvcmRlciB0byBnZXQgYSBmYXN0IHRyYW5zYWN0aW9uIGNhcGFibGUgXAotUkRCTVMgd29ya2luZyBmb3IgeW91ciBwZXJsIHByb2plY3QgeW91IHNpbXBseSBoYXZlIHRvIGluc3RhbGwgdGhpcyBcCi1tb2R1bGUsIGFuZCBub3RoaW5nIGVsc2UuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmlzaGlnYWtpL0RCRC1TUUxpdGUvIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotREVQRU5EUyArPSAibGliZGJpLXBlcmwtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gImxpYmRiaS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBzcWxpdGUzIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbG9jYWxlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10aWUtaGFzaCBcCi0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE3MjZlMjExNzQ5NGJhM2UxM2UxYzNkOTNmNzk1MzYwIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0kvSVMvSVNISUdBS0kvREJELVNRTGl0ZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3FsaXRlLXBlcmwtdGVzdC5wbCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTZlZWJmYjVmMmExNGJlOTQxM2IwMjVlN2RjYTlmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWM1MTNhYjczOTQ0ZmQ3ZDRiNjcyZTFmZTg4NWRjNTIyYjYzNjlkMzhmNDZhNjhlNjdlMDA0NWJmMTU5Y2UxIgotCi1TID0gIiR7V09SS0RJUn0vREJELVNRTGl0ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICR7UEVSTF9EQk1fVEVTVH0gPSAiMSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtRCAke1dPUktESVJ9L3NxbGl0ZS1wZXJsLXRlc3QucGwgJHtEfS8ke2JpbmRpcn0vc3FsaXRlLXBlcmwtdGVzdC5wbAotICAgIGZpCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41NC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjI3YjVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRiL2xpYmRiZC1zcWxpdGUtcGVybF8xLjU0LmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiQSBQZXJsIERCSSBkcml2ZXIgZm9yIFNRTGl0ZSIKK0RFU0NSSVBUSU9OID0gIkRCRDo6U1FMaXRlIGlzIGEgUGVybCBEQkkgZHJpdmVyIGZvciBTUUxpdGUsIHRoYXQgaW5jbHVkZXMgdGhlIGVudGlyZSBcCit0aGluZyBpbiB0aGUgZGlzdHJpYnV0aW9uLiBTbyBpbiBvcmRlciB0byBnZXQgYSBmYXN0IHRyYW5zYWN0aW9uIGNhcGFibGUgXAorUkRCTVMgd29ya2luZyBmb3IgeW91ciBwZXJsIHByb2plY3QgeW91IHNpbXBseSBoYXZlIHRvIGluc3RhbGwgdGhpcyBcCittb2R1bGUsIGFuZCBub3RoaW5nIGVsc2UuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmlzaGlnYWtpL0RCRC1TUUxpdGUvIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorREVQRU5EUyArPSAibGliZGJpLXBlcmwtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmRiaS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBzcWxpdGUzIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbG9jYWxlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10aWUtaGFzaCBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE3MjZlMjExNzQ5NGJhM2UxM2UxYzNkOTNmNzk1MzYwIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0kvSVMvSVNISUdBS0kvREJELVNRTGl0ZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc3FsaXRlLXBlcmwtdGVzdC5wbCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZjgzNWRkYWNiOWE0YTkyYTUyYmJlMmQyNGQxOGE4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOTI5YTZkYmQ4ZDcxNjMwZjBjYjU3Zjg1ZGNlZjk1ODhjZDdhYzRjOWZhMTJkYjc5ZGY3N2I5ZDNhNGQ3MjY5IgorCitTID0gIiR7V09SS0RJUn0vREJELVNRTGl0ZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbICR7UEVSTF9EQk1fVEVTVH0gPSAiMSIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDc1NSAtRCAke1dPUktESVJ9L3NxbGl0ZS1wZXJsLXRlc3QucGwgJHtEfS8ke2JpbmRpcn0vc3FsaXRlLXBlcmwtdGVzdC5wbAorICAgIGZpCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkZXZlbC9saWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsXzAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGV2ZWwvbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybF8wLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTU5M2NmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkZXZlbC9saWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsXzAuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkZ1bmN0aW9uIHJldHVybmluZyBcIiR7XkdMT0JBTF9QSEFTRX0gZXEgXCdERVNUUlVDVFwnXCIiCi1ERVNDUklQVElPTiA9ICJQZXJsJ3MgZ2xvYmFsIGRlc3RydWN0aW9uIGlzIGEgbGl0dGxlIHRyaWNrIHRvIGRlYWwgd2l0aCBcCi1XUlQgZmluYWxpemVycyBiZWNhdXNlIGl0J3Mgbm90IG9yZGVyZWQgYW5kIG9iamVjdHMgY2FuIHNvbWV0aW1lcyBkaXNhcHBlYXIuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTUzO2VuZGxpbmU9NTU7bWQ1PTkzNWRhZGI5NDIzNzc0ZjUzNTQ4ZTVjZDUwNTVkNDFhIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTdiZTAwMDQwODI3ZTIwNGIyYjZjYmEyZjMxNjYwNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjI5ODI0ZGMwZDMyMmU1NmRhMzI1ZjA1MTg1MzY3ZWI0NDM2OTQ3MTYwMTBiMzY2OTNkZDUyZmZiZThlYzQ2MiIKLQotUyA9ICIke1dPUktESVJ9L0RldmVsLUdsb2JhbERlc3RydWN0aW9uLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gPSAiIGxpYnN1Yi1leHBvcnRlci1wcm9ncmVzc2l2ZS1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGV2ZWwvbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybF8wLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRldmVsL2xpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmxfMC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2UyNDI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRldmVsL2xpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmxfMC4xNC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkZ1bmN0aW9uIHJldHVybmluZyBcIiR7XkdMT0JBTF9QSEFTRX0gZXEgXCdERVNUUlVDVFwnXCIiCitERVNDUklQVElPTiA9ICJQZXJsJ3MgZ2xvYmFsIGRlc3RydWN0aW9uIGlzIGEgbGl0dGxlIHRyaWNrIHRvIGRlYWwgd2l0aCBcCitXUlQgZmluYWxpemVycyBiZWNhdXNlIGl0J3Mgbm90IG9yZGVyZWQgYW5kIG9iamVjdHMgY2FuIHNvbWV0aW1lcyBkaXNhcHBlYXIuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTUzO2VuZGxpbmU9NTU7bWQ1PTkzNWRhZGI5NDIzNzc0ZjUzNTQ4ZTVjZDUwNTVkNDFhIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMjQyMjFiYTMyMmNmMmRjNDZhMWZjOTliNTNlMjM4MGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzRiOGE1ZjI5OTkxMzExNDY4ZmU2OTEzY2FkYWJhNzVmZDVkMmIwYjNlZTNiYjQxZmU1YjUzZWZhYjkxNTRhYiIKKworUyA9ICIke1dPUktESVJ9L0RldmVsLUdsb2JhbERlc3RydWN0aW9uLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIGxpYnN1Yi1leHBvcnRlci1wcm9ncmVzc2l2ZS1wZXJsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtaGVscGVycy1wZXJsXzAuMDIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWhlbHBlcnMtcGVybF8wLjAyMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwMjM0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtaGVscGVycy1wZXJsXzAuMDIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRVdGlsczo6SGVscGVycyAtIFZhcmlvdXMgcG9ydGFiaWxpdHkgdXRpbGl0aWVzIGZvciBtb2R1bGUgYnVpbGRlcnMiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyB2YXJpb3VzIHBvcnRhYmxlIGhlbHBlciBmdW5jdGlvbiBmb3IgbW9kdWxlIGJ1aWxkaW5nIG1vZHVsZXMuIgotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZW9udC9FeHRVdGlscy1IZWxwZXJzLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMwNzA1N2NlMjMyODk5ZjVjYWE4ODU4NTYwYzcyNzRiIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTC9MRS9MRU9OVC9FeHRVdGlscy1IZWxwZXJzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjZjRmZDZmOGNhYTZkYWFjMzNiMTExMWM5ZTkzMTYyYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkM2Y4Y2Y3MDBmYjM0MTRjYTEyNjAwODk3NTVjYmY2NDA0MTQ1NWU0Yjc0NDExMDY3N2IxYmE1YmI5YTNhYTk1IgotCi1TID0gIiR7V09SS0RJUn0vRXh0VXRpbHMtSGVscGVycy0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1maWxlLWNvcHkgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1sb2FkIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1oZWxwZXJzLXBlcmxfMC4wMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtaGVscGVycy1wZXJsXzAuMDI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjcyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtaGVscGVycy1wZXJsXzAuMDI2LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiRXh0VXRpbHM6OkhlbHBlcnMgLSBWYXJpb3VzIHBvcnRhYmlsaXR5IHV0aWxpdGllcyBmb3IgbW9kdWxlIGJ1aWxkZXJzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBwb3J0YWJsZSBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vZHVsZSBidWlsZGluZyBtb2R1bGVzLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVvbnQvRXh0VXRpbHMtSGVscGVycy8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMjNjMDQwNDU2NjRmNzJjM2E2NTU2NDYyNjEyYmRkZCIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvRXh0VXRpbHMtSGVscGVycy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODNiMDBjMWU0MDEzMjFjNDI1YWU1ZGI2YjJiMmZkMTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU5MDFiNjc5MGE0NTU3Y2Y0ZWM5MDgxNDllMDM1NzgzYjEyNWJmMTE1ZWI5NjQwZmViMWJjMWMyNGMzMzQxNiIKKworUyA9ICIke1dPUktESVJ9L0V4dFV0aWxzLUhlbHBlcnMtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbG9hZCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsXzMuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsXzMuMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMzY4ZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLXBhcnNleHMtcGVybF8zLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRVdGlsczo6UGFyc2VYUyAtIGNvbnZlcnRzIFBlcmwgWFMgY29kZSBpbnRvIEMgY29kZSIKLURFU0NSSVBUSU9OID0gIlwiRXh0VXRpbHM6OlBhcnNlWFNcIiB3aWxsIGNvbXBpbGUgWFMgY29kZSBpbnRvIEMgY29kZSBieSBcCi1lbWJlZGRpbmcgdGhlIGNvbnN0cnVjdHMgbmVjZXNzYXJ5IHRvIGxldCBDIGZ1bmN0aW9ucyBtYW5pcHVsYXRlIFBlcmwgXAotdmFsdWVzIGFuZCBjcmVhdGVzIHRoZSBnbHVlIG5lY2Vzc2FyeSB0byBsZXQgUGVybCBhY2Nlc3MgdGhvc2UgZnVuY3Rpb25zLiBcCi1UaGUgY29tcGlsZXIgdXNlcyB0eXBlc21hcGVzIHRvIGRldGVybWluZSBob3cgdG8gbWFwIEMgZnVuY3Rpb24gcGFyYW1ldGVycyBcCi1hbmQgdmFyaWFibGVzIHRvIFBlcmwgdmFsdWVzLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vbWV0YXBhbi5vcmcvcmVsZWFzZS9FeHRVdGlscy1QYXJzZVhTLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTIxO2VuZGxpbmU9MTMwO21kNT0xMGRkYjNhNjczYjRjNzMyMDIyYWM4OTk5NjhlYTljYyIKLQotU1JDTkFNRSA9ICJFeHRVdGlscy1QYXJzZVhTIgotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1MvU00vU01VRUxMRVIvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTZiZTNmMWQ0OTNlMDRlZDgwNTU3NjEwNGNmNDMyOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBiNjBiODIwOGZjOWI3NzQ2ZWQ5MzRiNjc4YmI5NjE4YThmMjg5OTRkYWU4Nzc0NTQ4MzUzYTdiNTUwMzcxZSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgcGVybC1tb2R1bGUtY3dkIFwKLSAgICBwZXJsLW1vZHVsZS1keW5hbG9hZGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgcGVybC1tb2R1bGUtc3ltYm9sIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiBsaWJleHR1dGlscy1wYXJzZXhzLWNvbnN0YW50cy1wZXJsIFwKLSAgICBsaWJleHR1dGlscy1wYXJzZXhzLWNvdW50bGluZXMtcGVybCBcCi0gICAgbGliZXh0dXRpbHMtcGFyc2V4cy1ldmFsLXBlcmwgXAotICAgIGxpYmV4dHV0aWxzLXBhcnNleHMtdXRpbGl0aWVzLXBlcmwgXAotICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLXBlcmwgXAotICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLWNtZC1wZXJsIFwKLSAgICBsaWJleHR1dGlscy10eXBlbWFwcy1pbnB1dG1hcC1wZXJsIFwKLSAgICBsaWJleHR1dGlscy10eXBlbWFwcy1vdXRwdXRtYXAtcGVybCBcCi0gICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtdHlwZS1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsXzMuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsXzMuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3MDdhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1wYXJzZXhzLXBlcmxfMy4zNS5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkV4dFV0aWxzOjpQYXJzZVhTIC0gY29udmVydHMgUGVybCBYUyBjb2RlIGludG8gQyBjb2RlIgorREVTQ1JJUFRJT04gPSAiXCJFeHRVdGlsczo6UGFyc2VYU1wiIHdpbGwgY29tcGlsZSBYUyBjb2RlIGludG8gQyBjb2RlIGJ5IFwKK2VtYmVkZGluZyB0aGUgY29uc3RydWN0cyBuZWNlc3NhcnkgdG8gbGV0IEMgZnVuY3Rpb25zIG1hbmlwdWxhdGUgUGVybCBcCit2YWx1ZXMgYW5kIGNyZWF0ZXMgdGhlIGdsdWUgbmVjZXNzYXJ5IHRvIGxldCBQZXJsIGFjY2VzcyB0aG9zZSBmdW5jdGlvbnMuIFwKK1RoZSBjb21waWxlciB1c2VzIHR5cGVzbWFwZXMgdG8gZGV0ZXJtaW5lIGhvdyB0byBtYXAgQyBmdW5jdGlvbiBwYXJhbWV0ZXJzIFwKK2FuZCB2YXJpYWJsZXMgdG8gUGVybCB2YWx1ZXMuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXRhcGFuLm9yZy9yZWxlYXNlL0V4dFV0aWxzLVBhcnNlWFMvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xMjA7ZW5kbGluZT0xMjk7bWQ1PWViODU4ZjBlM2IxYjBiZWUwYzA1Yjg2YTQ3NGFlMmI2IgorCitTUkNOQU1FID0gIkV4dFV0aWxzLVBhcnNlWFMiCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUy9TTS9TTVVFTExFUi8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWU0MTAzNmQ4NWU5OGUxMzY5NjQ1NzI0OTYyZGQxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MWRlZjA1MTEyNzhhMmE4YmE5YWZhMjVjY2FiNDViMDQ1M2Y3NWU3ZmQ3NzRlODY0NGI1ZjlhNTdjYzRlZTFjIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgIHBlcmwtbW9kdWxlLWR5bmFsb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNidWlsZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgcGVybC1tb2R1bGUtbGliIFwKKyAgICBwZXJsLW1vZHVsZS1zeW1ib2wgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisiCisKK1JQUk9WSURFU18ke1BOfSArPSAiIGxpYmV4dHV0aWxzLXBhcnNleHMtY29uc3RhbnRzLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXBhcnNleHMtY291bnRsaW5lcy1wZXJsIFwKKyAgICBsaWJleHR1dGlscy1wYXJzZXhzLWV2YWwtcGVybCBcCisgICAgbGliZXh0dXRpbHMtcGFyc2V4cy11dGlsaXRpZXMtcGVybCBcCisgICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtcGVybCBcCisgICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtY21kLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLWlucHV0bWFwLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLW91dHB1dG1hcC1wZXJsIFwKKyAgICBsaWJleHR1dGlscy10eXBlbWFwcy10eXBlLXBlcmwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnAtcGVybF85OTk5LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmZpbGUvbGliZmlsZS1zbHVycC1wZXJsXzk5OTkuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ1YjRjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnAtcGVybF85OTk5LjE5LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiU2x1cnAgZW50aXJlIGZpbGVzIGludG8gdmFyaWFibGVzLiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHN1YnJvdXRpbmVzIHRvIHJlYWQgb3Igd3JpdGUgXAorICBlbnRpcmUgZmlsZXMgd2l0aCBhIHNpbXBsZSBjYWxsLiAgSXQgYWxzbyBoYXMgYSBzdWJyb3V0aW5lIGZvciBcCisgIHJlYWRpbmcgdGhlIGxpc3Qgb2YgZmlsZW5hbWVzIGluIGEgZGlyZWN0b3J5LiBcCisiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTM3O2VuZGxpbmU9NDE7bWQ1PTI1NWZiZDVmOThhOTBkNTFkOTkwOGQzMTI3MWFlNGQ0IgorU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9VL1VSL1VSSS9GaWxlLVNsdXJwLSR7UFZ9LnRhci5neiIKKworUyA9ICIke1dPUktESVJ9L0ZpbGUtU2x1cnAtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2Q1ODRjZDE1YzRmOGI5NTQ3NzY1ZWZmOGM0ZWYwNzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2UyOWViZTk5NTA5N2ViZDZlOWJjMDMyODQ3MTRjZGZhMGM0NmRjOTRmNmIxNGE1Njk4MDc0N2VhMzI1MzY0MyIKKworQkJDTEFTU0VYVEVORD0ibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmh0bWwvbGliaHRtbC1wYXJzZXItcGVybF8zLjcyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmh0bWwvbGliaHRtbC1wYXJzZXItcGVybF8zLjcyLmJiCmluZGV4IDE5YjYxZDEuLmUyMDJkZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJodG1sL2xpYmh0bWwtcGFyc2VyLXBlcmxfMy43Mi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaHRtbC9saWJodG1sLXBhcnNlci1wZXJsXzMuNzIuYmIKQEAgLTEsNSArMSw1IEBACiBERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFBhcnNlci5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiIKLQorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9IVE1MLVBhcnNlciIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJsb2NhbGUvbGlibG9jYWxlLWdldHRleHQtcGVybF8xLjA3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmxvY2FsZS9saWJsb2NhbGUtZ2V0dGV4dC1wZXJsXzEuMDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRjNzJhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJsb2NhbGUvbGlibG9jYWxlLWdldHRleHQtcGVybF8xLjA3LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiTG9jYWxlOjpnZXR0ZXh0IC0gbWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbnMuIgorREVTQ1JJUFRJT04gPSAiVGhlIGdldHRleHQgbW9kdWxlIHBlcm1pdHMgYWNjZXNzIGZyb20gcGVybCB0byB0aGUgZ2V0dGV4dCgpIGZhbWlseSBvZiBcCitmdW5jdGlvbnMgZm9yIHJldHJpZXZpbmcgbWVzc2FnZSBzdHJpbmdzIGZyb20gZGF0YWJhc2VzIGNvbnN0cnVjdGVkIHRvIFwKK2ludGVybmF0aW9uYWxpemUgc29mdHdhcmUuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35wdmFuZHJ5L0xvY2FsZS1nZXR0ZXh0LSR7UFZ9LyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEx2MSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PWQwMjgyNDljMmQwOGRjYTZjYTZjNWJiNDNiNTZkOTI2IgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUC9QVi9QVkFORFJZL0xvY2FsZS1nZXR0ZXh0LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImJjNjUyNzU4YWY2NWMyNDUwMGYxZDA2YTc3NDE1MDE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwOWQ0Nzk1NDY5N2U3YzA0MjE4Zjk3MjkxNWI3ODdiZDEyNDRkNzVlM2JkMDE2MjBiYzE2N2Q1YmJjNDljMTUiCisKK1MgPSAiJHtXT1JLRElSfS9Mb2NhbGUtZ2V0dGV4dC0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1pbWUvbGlibWltZS1jaGFyc2V0LXBlcmxfMS4wMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtaW1lL2xpYm1pbWUtY2hhcnNldC1wZXJsXzEuMDEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliNDY4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtaW1lL2xpYm1pbWUtY2hhcnNldC1wZXJsXzEuMDEyLjIuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJNSU1FOjpDaGFyc2V0IC0gQ2hhcnNldCBJbmZvcm1hdGlvbiBmb3IgTUlNRS4iCitERVNDUklQVElPTiA9ICJNSU1FOjpDaGFyc2V0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IGNoYXJhY3RlciBzZXRzIHVzZWQgZm9yIE1JTUUgXAorbWVzc2FnZXMgb24gSW50ZXJuZXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bmV6dW1pL01JTUUtQ2hhcnNldC0ke1BWfS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9OL05FL05FWlVNSS9NSU1FLUNoYXJzZXQtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzE0NDA0MTYzNzYyNDhjMzFhYTNiZWY3NTNmYWUyOGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc4Yzc3OWMwMjU2YzU5MTY2NmJkMDZjMGNkZTRjMGQ3ODIwZWVlYjk4ZmQxMTgzMDgyYWVlOWExZTdiMWQxMyIKKworUyA9ICIke1dPUktESVJ9L01JTUUtQ2hhcnNldC0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGZhMDZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC4zMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZDo6VGlueSAtIEEgdGlueSByZXBsYWNlbWVudCBmb3IgTW9kdWxlOjpCdWlsZCIKLURFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKLU1ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCi1pbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCi1idWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAotV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAotMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35rd2lsbGlhbXMvTW9kdWxlLUJ1aWxkLTAuMzEvIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDMzMzlkOGY5ZDNhOTU2ZWU5ZWNlYjA3NzE3ZWU5NWUiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9LL0tXL0tXSUxMSUFNUy9Nb2R1bGUtQnVpbGQtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjNkNGZkZmZlNThmNjIzNjI1Mzc2N2U1YTcxZWRmMjliIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyZjcyM2JlOGQ2YzcwYjRkZGJjYTNiNWUzMmU1MmU2ZTk4ZWFlOGY0M2UzNGQ3ZWRlODdlZmNiMTc5NmJiYjUiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2R1bGUtQnVpbGQtJHtQVn0iCi0KLWluaGVyaXQgY3Bhbl9idWlsZAotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgY3Bhbl9idWlsZF9kb19pbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTIzYTdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjQuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJNb2R1bGU6OkJ1aWxkIC0gQnVpbGQgYW5kIGluc3RhbGwgUGVybCBtb2R1bGVzIgorREVTQ1JJUFRJT04gPSAiTWFueSBQZXJsIGRpc3RyaWJ1dGlvbnMgdXNlIGEgQnVpbGQuUEwgZmlsZSBpbnN0ZWFkIG9mIGEgXAorTWFrZWZpbGUuUEwgZmlsZSB0byBkcml2ZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwgYnVpbGQsIHRlc3QgYW5kIFwKK2luc3RhbGxhdGlvbi4gVHJhZGl0aW9uYWxseSwgQnVpbGQuUEwgdXNlcyBNb2R1bGU6OkJ1aWxkIGFzIHRoZSB1bmRlcmx5aW5nIFwKK2J1aWxkIHN5c3RlbS4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUsIGxpZ2h0d2VpZ2h0LCBkcm9wLWluIHJlcGxhY2VtZW50LiBcCitXaGVyZWFzIE1vZHVsZTo6QnVpbGQgaGFzIG92ZXIgNiw3MDAgbGluZXMgb2YgY29kZTsgdGhpcyBtb2R1bGUgaGFzIGxlc3MgdGhhbiBcCisxMjAsIHlldCBzdXBwb3J0cyB0aGUgZmVhdHVyZXMgbmVlZGVkIGJ5IG1vc3QgZGlzdHJpYnV0aW9ucy4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9Nb2R1bGUtQnVpbGQiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTk2MDtlbmRsaW5lPTk2NTttZDU9NjI0YzA2ZGI1NmEyYWY0ZDcwY2Y5ZWRjMjlmY2FlMWIiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL01vZHVsZS1CdWlsZC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYjc0YzJmNmU4NGI2MGFhZDNhM2RlZmQzMGI2ZjBmNGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjYTE1ZDc4MjQ0YTdiNTBmZGJmMjdmODVjODVmNDAzNWFhNzk5Y2U3ZGQwMThhMGQ5OGIzNThlZjdiYzc4MiIKKworUyA9ICIke1dPUktESVJ9L01vZHVsZS1CdWlsZC0ke1BWfSIKKworaW5oZXJpdCBjcGFuX2J1aWxkCisKKyMgRnJvbToKKyMgaHR0cHM6Ly9naXRodWIuY29tL3JlaHNhY2svbWV0YS1jcGFuL2Jsb2IvbWFzdGVyL3JlY2lwZXMtZGV2ZWwvbW9kdWxlLWJ1aWxkLXBlcmwvbW9kdWxlLWJ1aWxkLXBlcmxfMC40MjE2LmJiCisjCitkb19wYXRjaF9tb2R1bGVfYnVpbGQgKCkgeworICAgIGNkICR7U30KKyAgICBzZWQgLWkgLWUgJ3MsbXkgJGludGVycHJldGVyID0gJHNlbGYtPntwcm9wZXJ0aWVzfXtwZXJsfTssbXkgJGludGVycHJldGVyID0gIiR7YmluZGlyfS9wZXJsIjssZycgbGliL01vZHVsZS9CdWlsZC9CYXNlLnBtCit9CisKK2RvX3BhdGNoW3Bvc3RmdW5jc10gKz0gImRvX3BhdGNoX21vZHVsZV9idWlsZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC10aW55LXBlcmxfMC4wMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC10aW55LXBlcmxfMC4wMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MWYxN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtdGlueS1wZXJsXzAuMDM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2R1bGU6OkJ1aWxkOjpUaW55IC0gQSB0aW55IHJlcGxhY2VtZW50IGZvciBNb2R1bGU6OkJ1aWxkIgotREVTQ1JJUFRJT04gPSAiTWFueSBQZXJsIGRpc3RyaWJ1dGlvbnMgdXNlIGEgQnVpbGQuUEwgZmlsZSBpbnN0ZWFkIG9mIGEgXAotTWFrZWZpbGUuUEwgZmlsZSB0byBkcml2ZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwgYnVpbGQsIHRlc3QgYW5kIFwKLWluc3RhbGxhdGlvbi4gVHJhZGl0aW9uYWxseSwgQnVpbGQuUEwgdXNlcyBNb2R1bGU6OkJ1aWxkIGFzIHRoZSB1bmRlcmx5aW5nIFwKLWJ1aWxkIHN5c3RlbS4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUsIGxpZ2h0d2VpZ2h0LCBkcm9wLWluIHJlcGxhY2VtZW50LiBcCi1XaGVyZWFzIE1vZHVsZTo6QnVpbGQgaGFzIG92ZXIgNiw3MDAgbGluZXMgb2YgY29kZTsgdGhpcyBtb2R1bGUgaGFzIGxlc3MgdGhhbiBcCi0xMjAsIHlldCBzdXBwb3J0cyB0aGUgZmVhdHVyZXMgbmVlZGVkIGJ5IG1vc3QgZGlzdHJpYnV0aW9ucy4iCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmxlb250L01vZHVsZS1CdWlsZC1UaW55LyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFhY2E2MTQxMjk2MmNmOTcyYWVjMGNkYWQ5OWQwYTg0IgotCi1ERVBFTkRTID0gImxpYmV4dHV0aWxzLWNvbmZpZy1wZXJsLW5hdGl2ZSBsaWJleHR1dGlscy1oZWxwZXJzLXBlcmwtbmF0aXZlIGxpYmV4dHV0aWxzLWluc3RhbGxwYXRocy1wZXJsLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvTW9kdWxlLUJ1aWxkLVRpbnktJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImJmYzkyYzY1NTE1OGNlNjIzZjBjZWQ5NGY0ZWYwMmU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2NzA2YmYzNWUwODBlNWFmMjBjY2NmNGZkNTY1Y2M4YWY5YzJhMWUyZTIwNzVjZWUwYTdkZTQyY2YwZDZkZjkiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2R1bGUtQnVpbGQtVGlueS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuX2J1aWxkCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBjcGFuX2J1aWxkX2RvX2luc3RhbGwKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiIGxpYmV4dHV0aWxzLWNvbmZpZy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJleHR1dGlscy1oZWxwZXJzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYmV4dHV0aWxzLWluc3RhbGxwYXRocy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS14c2xvYWRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pby1oYW5kbGUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzLWVudiBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtaXBjLW9wZW4zIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNwYW4gXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNidWlsZGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxvYWQgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhcnNleHMgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvZC1tYW4gXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWpzb24tcHAgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXRpbnktcGVybF8wLjAzOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXRpbnktcGVybF8wLjAzOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWE1NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtdGlueS1wZXJsXzAuMDM5LmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZDo6VGlueSAtIEEgdGlueSByZXBsYWNlbWVudCBmb3IgTW9kdWxlOjpCdWlsZCIKK0RFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKK01ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCitpbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCitidWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAorV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAorMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZW9udC9Nb2R1bGUtQnVpbGQtVGlueS8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01N2I4MTAwZjBiNjQ4Y2QzN2ZiYzM3MjVmZTNjMTExYSIKKworREVQRU5EUyA9ICJsaWJleHR1dGlscy1jb25maWctcGVybC1uYXRpdmUgbGliZXh0dXRpbHMtaGVscGVycy1wZXJsLW5hdGl2ZSBsaWJleHR1dGlscy1pbnN0YWxscGF0aHMtcGVybC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL01vZHVsZS1CdWlsZC1UaW55LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzMyYzkwYzE3NDU0MTA3ZmVhM2YyNjE0ZTExYTNhOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDU4MGZmNmFjZTBjYmU1NTViZjM2Yjg2ZGM4ZWEyMzI1ODE1MzBjYmVhYWVhMDliY2NiNTdiNTU3OTdmMTFjIgorCitTID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLVRpbnktJHtQVn0iCisKK2luaGVyaXQgY3Bhbl9idWlsZAorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgY3Bhbl9idWlsZF9kb19pbnN0YWxsCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiBsaWJleHR1dGlscy1jb25maWctcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGliZXh0dXRpbHMtaGVscGVycy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBsaWJleHR1dGlscy1pbnN0YWxscGF0aHMtcGVybCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUteHNsb2FkZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtaW8taGFuZGxlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcy1lbnYgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jcGFuIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1sb2FkIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYXJzZXhzIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb2QtbWFuIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1qc29uLXBwIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAwMDAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMDAwMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxMTlmYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAwMDAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJNb28gLSBNaW5pbWFsaXN0IE9iamVjdCBPcmllbnRhdGlvbiAod2l0aCBNb29zZSBjb21wYXRpYmlsaXR5KSIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHVzIGFuIGV4dHJlbWVseSBsaWdodC13ZWlnaHQgc3Vic2V0IG9mIFwiTW9vc2VcIiBcCi1vcHRpbWlzZWQgZm9yIHJhcGlkIHN0YXJ0dXAgYW5kIFwicGF5IG9ubHkgZm9yIHdoYXQgeW91IHVzZVwiLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vbWV0YXBhbi5vcmcvcmVsZWFzZS9Nb28vIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT02ODg7ZW5kbGluZT03MzM7bWQ1PTI3ZWZlZGQxNzVlZWFkZGJkMThmNGUzNTcyYmQ3MmE4IgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9Nb28tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjhiODRhNzI4OWZjNjI0N2RlNWVjNWQxNTExMDVmZDZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiNGJmYTc1MWYwZGQwNmJkNzBmMmUwNmU4MTFmODVhNjQwNTAxZjI2M2MyMjhhOGVmYWZiZjZiMjY2OTFmZDQiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb28tJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgbGliY2xhc3MtbWV0aG9kLW1vZGlmaWVycy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJtb2R1bGUtcnVudGltZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJyb2xlLXRpbnktcGVybCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1tcm8gXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ID0gIiBsaWJtZXRob2QtaW5saW5lci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWFjY2Vzc29yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYnVpbGRhbGwtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1jb25zdHJ1Y3Rvci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWRlbW9saXNoYWxsLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLWZha2VtZXRhY2xhc3MtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1vYmplY3QtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1yb2xlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJzdWItZGVmZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1xdW90ZS1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMzAwMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGZlNDkyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMzAwMi5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIk1vbyAtIE1pbmltYWxpc3QgT2JqZWN0IE9yaWVudGF0aW9uICh3aXRoIE1vb3NlIGNvbXBhdGliaWxpdHkpIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXMgYW4gZXh0cmVtZWx5IGxpZ2h0LXdlaWdodCBzdWJzZXQgb2YgXCJNb29zZVwiIFwKK29wdGltaXNlZCBmb3IgcmFwaWQgc3RhcnR1cCBhbmQgXCJwYXkgb25seSBmb3Igd2hhdCB5b3UgdXNlXCIuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXRhcGFuLm9yZy9yZWxlYXNlL01vby8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTczMTtlbmRsaW5lPTc3NjttZDU9MjdlZmVkZDE3NWVlYWRkYmQxOGY0ZTM1NzJiZDcyYTgiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL01vby0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZTlmMWYzMTU5NTU1ZWNlYmNkMDYyZTk5OGYyOTdhOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNlOTc0MWU3OWJhYTYzZTg5ZjVhMDg3MDZjZDgwZDE4YzBhNWEzN2UzZDg5ODg0N2UwMDIzMTBlMDY1ODJmMSIKKworUyA9ICIke1dPUktESVJ9L01vby0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gIiBsaWJjbGFzcy1tZXRob2QtbW9kaWZpZXJzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYm1vZHVsZS1ydW50aW1lLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW1ybyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorIgorCitSUFJPVklERVNfJHtQTn0gPSAiIGxpYm1ldGhvZC1pbmxpbmVyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYWNjZXNzb3ItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1idWlsZGFsbC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWNvbnN0cnVjdG9yLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtZGVtb2xpc2hhbGwtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtZmFrZW1ldGFjbGFzcy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLW9iamVjdC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLXJvbGUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1kZWZlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlic3ViLXF1b3RlLXBlcmwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMDYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjA2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzAyZTRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMDYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIEROUy5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMGIxZmFlMGM0MGExNjI3YmRmMGIyYTdhYzQzMTYzMiIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9OL05ML05MTkVUTEFCUy9OZXQtRE5TLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVkMTdhYmQ2ZTdlM2JhMGE4ZGI0MjY0OWUzNGE1M2FlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzNTg3Yjc4MGNhMzZhODI1NTE4MGFjNzIzZDRmNmUxMTQwNzUwNGI1YjlhMThlMGVjMDk4YTExYzIxOGE1MWUiCi0KLVMgPSAiJHtXT1JLRElSfS9OZXQtRE5TLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotaW5oZXJpdCBjcGFuCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLSAgICBjcGFuX2RvX2NvbXBpbGUKLX0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4OTg0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMTAuYmIKQEAgLTAsMCArMSwyNSBAQAorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBETlMucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldC1kbnMub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9OTJkOTNkOGM1YmYyMmRlNzc1Nzg1MzFlMjgzZGQyMTkiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTi9OTC9OTE5FVExBQlMvTmV0LUROUy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmE0NWIwZGZlNzk2Njc0NTNjMTU1M2UxNmU1MmMyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYmU1M2U3ZjQzMzEzOGZiOWE3ODQ1YjRlZGFlNmI4ZjRkYzIyN2RhOTdlYWY2YjM0NzU4NDgxNmVjNjNhNTI1IgorCitTID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbgorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisgICAgY3Bhbl9kb19jb21waWxlCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjgwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjYyMWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk5ldDo6U1NMZWF5IC0gUGVybCBleHRlbnNpb24gZm9yIHVzaW5nIE9wZW5TU0wiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBvZmZlcnMgc29tZSBoaWdoIGxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIFwKLXdlYiBwYWdlcyBvbiBTU0wgc2VydmVycyAoZm9yIHN5bW1ldHJ5LCBzYW1lIEFQSSBpcyBvZmZlcmVkIGZvciBcCi1hY2Nlc3NpbmcgaHR0cCBzZXJ2ZXJzLCB0b28pLCBhIHNzbGNhdCgpIGZ1bmN0aW9uIGZvciB3cml0aW5nIHlvdXIgb3duIFwKLWNsaWVudHMsIGFuZCBmaW5hbGx5IGFjY2VzcyB0byB0aGUgU1NMIGFwaSBvZiBTU0xlYXkvT3BlblNTTCBwYWNrYWdlIFwKLXNvIHlvdSBjYW4gd3JpdGUgc2VydmVycyBvciBjbGllbnRzIGZvciBtb3JlIGNvbXBsaWNhdGVkIGFwcGxpY2F0aW9ucy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvTmV0LVNTTGVheS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI3NDtlbmRsaW5lPTI5NDttZDU9NjdkNjcwOTVkODNlMzM5ZGE1MzhhMDgyZmFkNWYzOGUiCi0KLURFUEVORFMgPSAib3BlbnNzbCB6bGliIG9wZW5zc2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNhcnAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWVycm5vIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL00vTUkvTUlLRU0vTmV0LVNTTGVheS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjFlMGZkOTZkN2YzYmU1NzU4MDM3NzIyNmNhNWYwODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTU0MWE2NmQ1OWZjNWY5YmI3YWYwOWQzYTBiNjgzMDVlNGM0M2JhOTQ4OGIxMjkxNTcyOGZkMjgyZWEwMWI5MyIKLQotUyA9ICIke1dPUktESVJ9L05ldC1TU0xlYXktJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdAotCi1FWFRSQV9DUEFORkxBR1MgPSAiTElCUz0nLUw9JHtTVEFHSU5HX0xJQkRJUn0gLUw9JHtTVEFHSU5HX0JBU0VMSUJESVJ9JyBcCi0gICAgICAgICAgICAgICAgICAgSU5DPS1JPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAnLWxzc2wgLWxjcnlwdG8gLWx6JyBcCi0gICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9OZXQvU1NMZWF5Ly5kZWJ1Zy8iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiBwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44MS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2MWI2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODEuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJOZXQ6OlNTTGVheSAtIFBlcmwgZXh0ZW5zaW9uIGZvciB1c2luZyBPcGVuU1NMIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgb2ZmZXJzIHNvbWUgaGlnaCBsZXZlbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyBcCit3ZWIgcGFnZXMgb24gU1NMIHNlcnZlcnMgKGZvciBzeW1tZXRyeSwgc2FtZSBBUEkgaXMgb2ZmZXJlZCBmb3IgXAorYWNjZXNzaW5nIGh0dHAgc2VydmVycywgdG9vKSwgYSBzc2xjYXQoKSBmdW5jdGlvbiBmb3Igd3JpdGluZyB5b3VyIG93biBcCitjbGllbnRzLCBhbmQgZmluYWxseSBhY2Nlc3MgdG8gdGhlIFNTTCBhcGkgb2YgU1NMZWF5L09wZW5TU0wgcGFja2FnZSBcCitzbyB5b3UgY2FuIHdyaXRlIHNlcnZlcnMgb3IgY2xpZW50cyBmb3IgbW9yZSBjb21wbGljYXRlZCBhcHBsaWNhdGlvbnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L05ldC1TU0xlYXkvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNzQ7ZW5kbGluZT0yOTQ7bWQ1PTY3ZDY3MDk1ZDgzZTMzOWRhNTM4YTA4MmZhZDVmMzhlIgorCitERVBFTkRTID0gIm9wZW5zc2wgemxpYiBvcGVuc3NsLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1lcnJubyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1taW1lLWJhc2U2NCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JS0VNL05ldC1TU0xlYXktJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjcxOTMyY2UzNGQ0ZGI0NGRlOGQwMDM5OWMzNDA1NzkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwY2JiNjE3NGU2MjhiNDIxNzhlMTQ0NWM5ZmQ1YTNjNWFlMmNmZDZhNWE0M2UwMzYxMGJhMTQ3ODZmMjFiN2QiCisKK1MgPSAiJHtXT1JLRElSfS9OZXQtU1NMZWF5LSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QKKworRVhUUkFfQ1BBTkZMQUdTID0gIkxJQlM9Jy1MPSR7U1RBR0lOR19MSUJESVJ9IC1MPSR7U1RBR0lOR19CQVNFTElCRElSfScgXAorICAgICAgICAgICAgICAgICAgIElOQz0tST0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgICAgJy1sc3NsIC1sY3J5cHRvIC1seicgXAorICAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vTmV0L1NTTGVheS8uZGVidWcvIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICIgcGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDAxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MzYwYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIlJvbGU6OlRpbnkgLSBSb2xlcy4gTGlrZSBhIG5vdXZlbGxlIGNvdXNpbmUgcG9ydGlvbiBzaXplIG9mIE1vb3NlLiIKLURFU0NSSVBUSU9OID0gIlwiUm9sZTo6VGlueVwiIGlzIGEgbWluaW1hbGlzdCByb2xlIGNvbXBvc2l0aW9uIHRvb2wuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Sb2xlOjpUaW55IgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xNzI7ZW5kbGluZT0yMDk7bWQ1PTI2ZGY3ZTdjMjA1NTFmYjE5MDZlMjI4NjYyNGYwYjcxIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9Sb2xlLVRpbnktJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImYzNTBmMWY4YzEzNjUyYmY4NWRhMTcyMzgwYjM5ZWM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxODgzNDEwYTdjODVkNmRjNzUwMWM3MThiMWY4M2VkYmEwMTNhN2I5YmJjY2YwMzM4YTEwMzNjMzkxZjI5NmQiCi0KLVMgPSAiJHtXT1JLRElSfS9Sb2xlLVRpbnktJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCi0iCi0KLVJQUk9WSURFU18ke1BOfSA9ICIgbGlicm9sZS10aW55LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJyb2xlLXRpbnktd2l0aC1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDA1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ODRmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwNS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlJvbGU6OlRpbnkgLSBSb2xlcy4gTGlrZSBhIG5vdXZlbGxlIGNvdXNpbmUgcG9ydGlvbiBzaXplIG9mIE1vb3NlLiIKK0RFU0NSSVBUSU9OID0gIlwiUm9sZTo6VGlueVwiIGlzIGEgbWluaW1hbGlzdCByb2xlIGNvbXBvc2l0aW9uIHRvb2wuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Sb2xlOjpUaW55IgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xNzc7ZW5kbGluZT0yMTQ7bWQ1PTI2ZGY3ZTdjMjA1NTFmYjE5MDZlMjI4NjYyNGYwYjcxIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9Sb2xlLVRpbnktJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImM4YzVjZjFlMDJkMmUwYTFlZDIyNTMwYjU1YjY3ZDY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5M2EyOWI2MjFlMDI5YmYwMjE4ZDAxNTRkNWRmZGY2ZWM1MDJhZmM0OWFkZWVhZGFlNmFmZDBjNzAwNjMxMTUiCisKK1MgPSAiJHtXT1JLRElSfS9Sb2xlLVRpbnktJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK1JQUk9WSURFU18ke1BOfSA9ICIgbGlicm9sZS10aW55LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJyb2xlLXRpbnktd2l0aC1wZXJsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3RyaWN0dXJlcy9saWJzdHJpY3R1cmVzLXBlcmxfMi4wMDAwMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3RyaWN0dXJlcy9saWJzdHJpY3R1cmVzLXBlcmxfMi4wMDAwMDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYTZlNTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN0cmljdHVyZXMvbGlic3RyaWN0dXJlcy1wZXJsXzIuMDAwMDAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJzdHJpY3R1cmVzIC0gdHVybiBvbiBzdHJpY3QgYW5kIG1ha2UgYWxsIHdhcm5pbmdzIGZhdGFsIgotREVTQ1JJUFRJT04gPSAiSSd2ZSBiZWVuIHdyaXRpbmcgdGhlIGVxdWl2YWxlbnQgb2YgdGhpcyBtb2R1bGUgYXQgdGhlIHRvcCBcCi1vZiBteSBjb2RlIGZvciBhYm91dCBhIHllYXIgbm93LiBJIGZpZ3VyZWQgaXQgd2FzIHRpbWUgdG8gbWFrZSBpdCBzaG9ydGVyLiBcCi1cCi1UaGluZ3MgbGlrZSB0aGUgaW1wb3J0ZXIgaW4gXCJ1c2UgTW9vc2VcIiBkb24ndCBoZWxwIG1lIGJlY2F1c2UgdGhleSB0dXJuIFwKLXdhcm5pbmdzIG9uIGJ1dCBkb24ndCBtYWtlIHRoZW0gZmF0YWwgLS0gd2hpY2ggZnJvbSBteSBwb2ludCBvZiB2aWV3IGlzIFwKLXVzZWxlc3MgYmVjYXVzZSBJIHdhbnQgYW4gZXhjZXB0aW9uIHRvIHRlbGwgbWUgbXkgY29kZSBpc24ndCB3YXJuaW5ncy1jbGVhbi4gXAotXAotQW55IHRpbWUgSSBzZWUgYSB3YXJuaW5nIGZyb20gbXkgY29kZSwgdGhhdCBpbmRpY2F0ZXMgYSBtaXN0YWtlLiBcCi1cCi1BbnkgdGltZSBteSBjb2RlIGVuY291bnRlcnMgYSBtaXN0YWtlLCBJIHdhbnQgYSBjcmFzaCAtLSBub3Qgc3BldyB0byBTVERFUlIgXAotYW5kIHRoZW4gdW5rbm93biAoYW5kIHByb2JhYmx5IHVuZGVzaXJlZCkgc3Vic2VxdWVudCBiZWhhdmlvdXIuIFwKLVwKLUkgYWxzbyB3YW50IHRvIGVuc3VyZSB0aGF0IG9idmlvdXMgY29kaW5nIG1pc3Rha2VzLCBsaWtlIGluZGlyZWN0IG9iamVjdCBcCi1zeW50YXggKGFuZCBub3Qgc28gb2J2aW91cyBtaXN0YWtlcyB0aGF0IGNhdXNlIHRoaW5ncyB0byBhY2NpZGVudGFsbHkgY29tcGlsZSBcCi1hcyBzdWNoKSBnZXQgY2F1Z2h0LCBidXQgbm90IGF0IHRoZSBjb3N0IG9mIGFuIFhTIGRlcGVuZGVuY3kgYW5kIG5vdCBhdCB0aGUgXAotY29zdCBvZiBibG93aW5nIHRoaW5ncyB1cCBvbiBhbm90aGVyIG1hY2hpbmUuIFwKLVwKLVRoZXJlZm9yZSwgXCJzdHJpY3R1cmVzXCIgdHVybnMgb24gYWRkaXRpb25hbCBjaGVja2luZywgYnV0IG9ubHkgd2hlbiBpdCBcCi10aGlua3MgaXQncyBydW5uaW5nIGluIGEgdGVzdCBmaWxlIGluIGEgVkNTIGNoZWNrb3V0IC0tIGFsdGhvdWdoIGlmIHRoaXMgXAotY2F1c2VzIHVuZGVzaXJlZCBiZWhhdmlvdXIgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBcCi1QRVJMX1NUUklDVFVSRVNfRVhUUkEgZW52aXJvbm1lbnQgdmFyaWFibGUuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9zdHJpY3R1cmVzIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNDY7ZW5kbGluZT0yNjI7bWQ1PTQzYmU1NThjZjRmMTk4MjNjZGQ2YWYyMjEzNWNmNWY4IgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9zdHJpY3R1cmVzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjFmYWRhODI2MDk5MmJjODVlMTI2YzIxZmZjYzZkNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzAzNTVkY2IzYWZkOGMzYzgyMTNjMjRiOTI0ZTcxZGViN2UxZTExOTdkYThmOTBjNWFlMTkxNzY2YWE0MTAwIgotCi1TID0gIiR7V09SS0RJUn0vc3RyaWN0dXJlcy0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdHJpY3R1cmVzL2xpYnN0cmljdHVyZXMtcGVybF8yLjAwMDAwMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdHJpY3R1cmVzL2xpYnN0cmljdHVyZXMtcGVybF8yLjAwMDAwMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjgwOGQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN0cmljdHVyZXMvbGlic3RyaWN0dXJlcy1wZXJsXzIuMDAwMDAzLmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAic3RyaWN0dXJlcyAtIHR1cm4gb24gc3RyaWN0IGFuZCBtYWtlIGFsbCB3YXJuaW5ncyBmYXRhbCIKK0RFU0NSSVBUSU9OID0gIkkndmUgYmVlbiB3cml0aW5nIHRoZSBlcXVpdmFsZW50IG9mIHRoaXMgbW9kdWxlIGF0IHRoZSB0b3AgXAorb2YgbXkgY29kZSBmb3IgYWJvdXQgYSB5ZWFyIG5vdy4gSSBmaWd1cmVkIGl0IHdhcyB0aW1lIHRvIG1ha2UgaXQgc2hvcnRlci4gXAorXAorVGhpbmdzIGxpa2UgdGhlIGltcG9ydGVyIGluIFwidXNlIE1vb3NlXCIgZG9uJ3QgaGVscCBtZSBiZWNhdXNlIHRoZXkgdHVybiBcCit3YXJuaW5ncyBvbiBidXQgZG9uJ3QgbWFrZSB0aGVtIGZhdGFsIC0tIHdoaWNoIGZyb20gbXkgcG9pbnQgb2YgdmlldyBpcyBcCit1c2VsZXNzIGJlY2F1c2UgSSB3YW50IGFuIGV4Y2VwdGlvbiB0byB0ZWxsIG1lIG15IGNvZGUgaXNuJ3Qgd2FybmluZ3MtY2xlYW4uIFwKK1wKK0FueSB0aW1lIEkgc2VlIGEgd2FybmluZyBmcm9tIG15IGNvZGUsIHRoYXQgaW5kaWNhdGVzIGEgbWlzdGFrZS4gXAorXAorQW55IHRpbWUgbXkgY29kZSBlbmNvdW50ZXJzIGEgbWlzdGFrZSwgSSB3YW50IGEgY3Jhc2ggLS0gbm90IHNwZXcgdG8gU1RERVJSIFwKK2FuZCB0aGVuIHVua25vd24gKGFuZCBwcm9iYWJseSB1bmRlc2lyZWQpIHN1YnNlcXVlbnQgYmVoYXZpb3VyLiBcCitcCitJIGFsc28gd2FudCB0byBlbnN1cmUgdGhhdCBvYnZpb3VzIGNvZGluZyBtaXN0YWtlcywgbGlrZSBpbmRpcmVjdCBvYmplY3QgXAorc3ludGF4IChhbmQgbm90IHNvIG9idmlvdXMgbWlzdGFrZXMgdGhhdCBjYXVzZSB0aGluZ3MgdG8gYWNjaWRlbnRhbGx5IGNvbXBpbGUgXAorYXMgc3VjaCkgZ2V0IGNhdWdodCwgYnV0IG5vdCBhdCB0aGUgY29zdCBvZiBhbiBYUyBkZXBlbmRlbmN5IGFuZCBub3QgYXQgdGhlIFwKK2Nvc3Qgb2YgYmxvd2luZyB0aGluZ3MgdXAgb24gYW5vdGhlciBtYWNoaW5lLiBcCitcCitUaGVyZWZvcmUsIFwic3RyaWN0dXJlc1wiIHR1cm5zIG9uIGFkZGl0aW9uYWwgY2hlY2tpbmcsIGJ1dCBvbmx5IHdoZW4gaXQgXAordGhpbmtzIGl0J3MgcnVubmluZyBpbiBhIHRlc3QgZmlsZSBpbiBhIFZDUyBjaGVja291dCAtLSBhbHRob3VnaCBpZiB0aGlzIFwKK2NhdXNlcyB1bmRlc2lyZWQgYmVoYXZpb3VyIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyB0aGUgXAorUEVSTF9TVFJJQ1RVUkVTX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2Qvc3RyaWN0dXJlcyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjQ2O2VuZGxpbmU9MjYyO21kNT00M2JlNTU4Y2Y0ZjE5ODIzY2RkNmFmMjIxMzVjZjVmOCIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvc3RyaWN0dXJlcy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiNzgyNDRjZmFiNjE2OGRjZjE5NjM3MGQxZTIzMDk1MzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdmOGVhMDk2YTUyMWU5NzU0ZDM2ZWEzMjg4OWMyY2RhMjgzNDZkMDRlM2UzOTllN2VhMTE4ZDE4MmRiYWYyMiIKKworUyA9ICIke1dPUktESVJ9L3N0cmljdHVyZXMtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3ViL2xpYnN1Yi1leHBvcnRlci1wcm9ncmVzc2l2ZS1wZXJsXzAuMDAxMDExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJhMTMwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3ViL2xpYnN1Yi1leHBvcnRlci1wcm9ncmVzc2l2ZS1wZXJsXzAuMDAxMDExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWI6OkV4cG9ydGVyOjpQcm9ncmVzc2l2ZSAtIE9ubHkgdXNlIFN1Yjo6RXhwb3J0ZXIgaWYgeW91IG5lZWQgaXQuIgotREVTQ1JJUFRJT04gPSAiXCJTdWI6OkV4cG9ydGVyXCIgaXMgYW4gaW5jcmVkaWJseSBwb3dlcmZ1bCBtb2R1bGUsIGJ1dCB3aXRoIFwKLXRoYXQgcG93ZXIgY29tZXMgZ3JlYXQgcmVzcG9uc2liaWxpdHksIGVyLSBhcyB3ZWxsIGFzIHNvbWUgcnVudGltZSBwZW5hbHRpZXMuIFwKLVRoaXMgbW9kdWxlIGlzIGEgXCJTdWI6OkV4cG9ydGVyXCIgd3JhcHBlciB0aGF0IHdpbGwgbGV0IHlvdXIgdXNlcnMganVzdCB1c2UgXAotXCJFeHBvcnRlclwiIGlmIGFsbCB0aGV5IGFyZSBkb2luZyBpcyBwaWNraW5nIGV4cG9ydHMsIGJ1dCB1c2UgXAotXCJTdWI6OkV4cG9ydGVyXCIgaWYgeW91ciB1c2VycyB0cnkgdG8gdXNlIFwiU3ViOjpFeHBvcnRlcidzXCIgbW9yZSBhZHZhbmNlZCBcCi1mZWF0dXJlcywgbGlrZSByZW5hbWluZyBleHBvcnRzLCBpZiB0aGV5IHRyeSB0byB1c2UgdGhlbS4iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTUxO2VuZGxpbmU9NTM7bWQ1PWExNzFkMmU5Zjg2ODhhNDRlNWYxYjZkY2M2MjAyOWU2IgotCi1ERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9GL0ZSL0ZSRVcvU3ViLUV4cG9ydGVyLVByb2dyZXNzaXZlLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiYjUwYjNiYTE1Mzg5MDJiMTk3YzA0ODE4YTg0MjMwYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjE4YzZlNjljNmMwNTQwYzQxZTc1NjBkNTE5ODE0MDdhNmEwNzY4ZjEzMzBiZWY2ZDZhYzNjNmYxZmE3YzA2IgotCi1TID0gIiR7V09SS0RJUn0vU3ViLUV4cG9ydGVyLVByb2dyZXNzaXZlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gKz0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbGlzdC11dGlsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3ViL2xpYnN1Yi1leHBvcnRlci1wcm9ncmVzc2l2ZS1wZXJsXzAuMDAxMDEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGQxOWMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIlN1Yjo6RXhwb3J0ZXI6OlByb2dyZXNzaXZlIC0gT25seSB1c2UgU3ViOjpFeHBvcnRlciBpZiB5b3UgbmVlZCBpdC4iCitERVNDUklQVElPTiA9ICJcIlN1Yjo6RXhwb3J0ZXJcIiBpcyBhbiBpbmNyZWRpYmx5IHBvd2VyZnVsIG1vZHVsZSwgYnV0IHdpdGggXAordGhhdCBwb3dlciBjb21lcyBncmVhdCByZXNwb25zaWJpbGl0eSwgZXItIGFzIHdlbGwgYXMgc29tZSBydW50aW1lIHBlbmFsdGllcy4gXAorVGhpcyBtb2R1bGUgaXMgYSBcIlN1Yjo6RXhwb3J0ZXJcIiB3cmFwcGVyIHRoYXQgd2lsbCBsZXQgeW91ciB1c2VycyBqdXN0IHVzZSBcCitcIkV4cG9ydGVyXCIgaWYgYWxsIHRoZXkgYXJlIGRvaW5nIGlzIHBpY2tpbmcgZXhwb3J0cywgYnV0IHVzZSBcCitcIlN1Yjo6RXhwb3J0ZXJcIiBpZiB5b3VyIHVzZXJzIHRyeSB0byB1c2UgXCJTdWI6OkV4cG9ydGVyJ3NcIiBtb3JlIGFkdmFuY2VkIFwKK2ZlYXR1cmVzLCBsaWtlIHJlbmFtaW5nIGV4cG9ydHMsIGlmIHRoZXkgdHJ5IHRvIHVzZSB0aGVtLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2QvU3ViLUV4cG9ydGVyLVByb2dyZXNzaXZlLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAwM2ZhOTcwNjYyMzU5YTQzYWMyYzI5NjExMDhiMGYxIgorCitERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9GL0ZSL0ZSRVcvU3ViLUV4cG9ydGVyLVByb2dyZXNzaXZlLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MmNmNmFjZGQyYTBhOGIxMDU4MjFhNGRiOThlNGViZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNTM1Yjc5NTRkNjRkYTFhYzEzMDViMWZhZGY5ODIwMjc2OWUzNTk5Mzc2ODU0YjJjZWQ5MGMzODJiZWFjMDU2IgorCitTID0gIiR7V09SS0RJUn0vU3ViLUV4cG9ydGVyLVByb2dyZXNzaXZlLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gKz0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbGlzdC11dGlsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVybS9saWJ0ZXJtLXJlYWRrZXktcGVybF8yLjM3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlcm0vbGlidGVybS1yZWFka2V5LXBlcmxfMi4zNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yjc2NjgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlcm0vbGlidGVybS1yZWFka2V5LXBlcmxfMi4zNy5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlRlcm06OlJlYWRLZXkgLSBBIHBlcmwgbW9kdWxlIGZvciBzaW1wbGUgdGVybWluYWwgY29udHJvbC4iCitERVNDUklQVElPTiA9ICJUZXJtOjpSZWFkS2V5IGlzIGEgY29tcGlsZWQgcGVybCBtb2R1bGUgZGVkaWNhdGVkIHRvIHByb3ZpZGluZyBzaW1wbGUgXAorY29udHJvbCBvdmVyIHRlcm1pbmFsIGRyaXZlciBtb2RlcyAoY2JyZWFrLCByYXcsIGNvb2tlZCwgZXRjLiwpIHN1cHBvcnQgXAorZm9yIG5vbi1ibG9ja2luZyByZWFkcywgaWYgdGhlIGFyY2hpdGVjdHVyZSBhbGxvd3MsIGFuZCBzb21lIGdlbmVyYWxpemVkIFwKK2hhbmR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIHRlcm1pbmFscy4gT25lIG9mIHRoZSBtYWluIGdvYWxzIGlzIHRvIFwKK2hhdmUgdGhlIGZ1bmN0aW9ucyBhcyBwb3J0YWJsZSBhcyBwb3NzaWJsZSwgc28geW91IGNhbiBqdXN0IHBsdWcgaW4gInVzZSBcCitUZXJtOjpSZWFkS2V5IiBvbiBhbnkgYXJjaGl0ZWN0dXJlIGFuZCBoYXZlIGEgZ29vZCBsaWtlbGlob29kIG9mIGl0IFwKK3dvcmtpbmcuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+anN0b3dlL1Rlcm1SZWFkS2V5LSR7UFZ9IgorU0VDVElPTiA9ICJsaWJyYXJpZXMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT1jMjc1ZGI2NjNjODQ4OWE1NzA5ZWJiMjJiMTg1YWRkNSIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0ovSlMvSlNUT1dFL1Rlcm1SZWFkS2V5LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImU4ZWExNWMxNjMzM2FjNGY4ZDE0NmQ3MDJlODNjYzBjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhOTM4M2NmMmUwZTAxOTQ2NjhmZTJiZDU0NmU4OTRmZmFkNDFkNTU2YjQxZDJmMmY1NzdjOGRiNjgyZGIyNDEiCisKK1MgPSAiJHtXT1JLRElSfS9UZXJtUmVhZEtleS0ke1BWfSIKKworIyBJdCBuZWVkcyBkZXBlbmQgb24gbmF0aXZlIHRvIGxldCBkeW5hbWljIGxvYWRlciB1c2UgbmF0aXZlIG1vZHVsZXMKKyMgcmF0aGVyIHRoYW4gdGFyZ2V0IG9uZXMuCitERVBFTkRTID0gImxpYnRlcm0tcmVhZGtleS1wZXJsLW5hdGl2ZSIKKworaW5oZXJpdCBjcGFuCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworICAgICMgSGFjayB0aGUgZHluYW1pYyBtb2R1bGUgbG9hZGVyIHNvIHRoYXQgaXQgdXNlIG5hdGl2ZSBtb2R1bGVzIHNpbmNlIGl0IGNhbid0IGxvYWQKKyAgICAjIHRoZSB0YXJnZXQgb25lcy4KKyAgICBpZiBbICIke0JVSUxEX1NZU30iICE9ICIke0hPU1RfU1lTfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgLWUgInMjLUlcJChJTlNUX0FSQ0hMSUIpIy1JJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwvdmVuZG9yX3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0jZyIgTWFrZWZpbGUKKyAgICBmaQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXh0L2xpYnRleHQtY2hhcndpZHRoLXBlcmxfMC4wNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXh0L2xpYnRleHQtY2hhcndpZHRoLXBlcmxfMC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDU3YWU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRleHQvbGlidGV4dC1jaGFyd2lkdGgtcGVybF8wLjA0LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiVGV4dDo6Q2hhcldpZHRoIC0gR2V0IG51bWJlciBvZiBvY2N1cGllZCBjb2x1bW5zIG9mIGEgc3RyaW5nIG9uIHRlcm1pbmFsLiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHN1cHBsaWVzIGZlYXR1cmVzIHNpbWlsYXIgYXMgd2N3aWR0aCgzKSBhbmQgd2Nzd2lkdGgoMykgXAoraW4gQyBsYW5ndWFnZS4gXAorQ2hhcmFjdGVycyBoYXZlIGl0cyBvd24gd2lkdGggb24gdGVybWluYWwgZGVwZW5kaW5nIG9uIGxvY2FsZS4gRm9yIFwKK2V4YW1wbGUsIEFTQ0lJIGNoYXJhY3RlcnMgb2NjdXB5IG9uZSBjb2x1bW4gcGVyIGNoYXJhY3RlciwgZWFzdCBBc2lhbiBcCitmdWxsd2lkdGggY2hhcmFjdGVycyAobGlrZSBIaXJhZ2FuYSBvciBIYW4gSWRlb2dyYXBoKSBvY2N1cHkgdHdvIGNvbHVtbnMgXAorcGVyIGNoYXJhY3RlciwgYW5kIGNvbWJpbmluZyBjaGFyYWN0ZXJzIChhcHBlcmFyaW5nIGluIElTTy04ODU5LTExIFRoYWksIFwKK1VuaWNvZGUsIGFuZCBzbyBvbikgb2NjdXB5IHplcm8gY29sdW1ucyBwZXIgY2hhcmFjdGVyLiBtYndpZHRoKCkgZ2l2ZXMgdGhlIFwKK3dpZHRoIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGdpdmVuIHN0cmluZyBhbmQgbWJzd2lkdGgoKSBnaXZlcyB0aGUgXAord2lkdGggb2YgdGhlIHdob2xlIGdpdmVuIHN0cmluZy4iCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmt1Ym90YS9UZXh0LUNoYXJXaWR0aC0ke1BWfS8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT1kOGQ1NGM4YzUwMGNiZGQ1N2E0YzE1OTExZDlkOTZkYiIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0svS1UvS1VCT1RBL1RleHQtQ2hhcldpZHRoLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3YTcyM2RmMDU4MGMwNzU4YzBlZTY3YjM3MzM2YzE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiZGVkNWY0ZmRkOTMzOGU4OWZkMmYxZDgyNzFjNDQ5ODlkYWU1YmY1MGFlY2U0MWI2MTc5ZDhlMjMwNzA0ZjgiCisKK1MgPSAiJHtXT1JLRElSfS9UZXh0LUNoYXJXaWR0aC0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRleHQvbGlidGV4dC13cmFwaTE4bi1wZXJsXzAuMDYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGV4dC9saWJ0ZXh0LXdyYXBpMThuLXBlcmxfMC4wNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmMyMzlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRleHQvbGlidGV4dC13cmFwaTE4bi1wZXJsXzAuMDYuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJUZXh0OjpXcmFwSTE4TiAtIExpbmUgd3JhcHBpbmcgbW9kdWxlIHdpdGggc3VwcG9ydCBmb3IgbXVsdGlieXRlLCBcCitmdWxsd2lkdGgsIGFuZCBjb21iaW5pbmcgY2hhcmFjdGVycyBhbmQgbGFuZ3VhZ2VzIHdpdGhvdXQgd2hpdGVzcGFjZXMgXAorYmV0d2VlbiB3b3Jkcy4iCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBpbnRlbmRzIHRvIGJlIGEgYmV0dGVyIFRleHQ6OldyYXAgbW9kdWxlLiBUaGlzIG1vZHVsZSBpcyBcCituZWVkZWQgdG8gc3VwcG9ydCBtdWx0aWJ5dGUgY2hhcmFjdGVyIGVuY29kaW5ncyBzdWNoIGFzIFVURi04LCBFVUMtSlAsIFwKK0VVQy1LUiwgR0IyMzEyLCBhbmQgQmlnNS4gVGhpcyBtb2R1bGUgYWxzbyBzdXBwb3J0cyBjaGFyYWN0ZXJzIHdpdGggXAoraXJyZWd1bGFyIHdpZHRocywgc3VjaCBhcyBjb21iaW5pbmcgY2hhcmFjdGVycyAod2hpY2ggb2NjdXB5IHplcm8gY29sdW1ucyBcCitvbiB0ZXJtaW5hbCwgbGlrZSBkaWFjcml0aWNhbCBtYXJrcyBpbiBVVEYtOCkgYW5kIGZ1bGx3aWR0aCBjaGFyYWN0ZXJzIFwKKyh3aGljaCBvY2N1cHkgdHdvIGNvbHVtbnMgb24gdGVybWluYWwsIGxpa2UgbW9zdCBvZiBlYXN0IEFzaWFuIFwKK2NoYXJhY3RlcnMpLiBBbHNvLCBtaW5pbWFsIGhhbmRsaW5nIG9mIGxhbmd1YWdlcyB3aGljaCBkb2Vzbid0IHVzZSBcCit3aGl0ZXNwYWNlcyBiZXR3ZWVuIHdvcmRzIChsaWtlIENoaW5lc2UgYW5kIEphcGFuZXNlKSBpcyBzdXBwb3J0ZWQuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35rdWJvdGEvVGV4dC1XcmFwSTE4Ti0ke1BWfS8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0wODA4NjJlMWU0MGNkY2RkZWY0MzkzZTEzNzI4NTg1OCIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0svS1UvS1VCT1RBL1RleHQtV3JhcEkxOE4tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDc5OWMxNmEwMDkyNmU2YzE4ZDQwMGMyZTI4NjFkNWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJkMjlhMTdmMGMyYzc5MmQxMmMxMDA1YjNjMjc2ZjJhYjBmYWUzOWMwMDg1OWFlMTc0MWQ3OTQxODQ2YTQ4OCIKKworUyA9ICIke1dPUktESVJ9L1RleHQtV3JhcEkxOE4tJHtQVn0iCisKK0RFUEVORFMgPSAibGlidGV4dC1jaGFyd2lkdGgtcGVybCIKKworUkRFUEVORFNfJHtQTn0gPSAibGlidGV4dC1jaGFyd2lkdGgtcGVybCIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnVuaWNvZGUvbGlidW5pY29kZS1saW5lYnJlYWstcGVybF8yMDE3LjAwNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ1bmljb2RlL2xpYnVuaWNvZGUtbGluZWJyZWFrLXBlcmxfMjAxNy4wMDQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNjYjQxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ1bmljb2RlL2xpYnVuaWNvZGUtbGluZWJyZWFrLXBlcmxfMjAxNy4wMDQuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJVbmljb2RlOjpMaW5lQnJlYWsgLSBVQVggIzE0IFVuaWNvZGUgTGluZSBCcmVha2luZyBBbGdvcml0aG0uIgorREVTQ1JJUFRJT04gPSAiVW5pY29kZTo6TGluZUJyZWFrIHBlcmZvcm1zIExpbmUgQnJlYWtpbmcgQWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBVbmljb2RlIFwKK1N0YW5kYXJkIEFubmV4ICMxNCBbVUFYICMxNF0uIEVhc3RfQXNpYW5fV2lkdGggaW5mb3JtYXRpdmUgcHJvcGVydHkgXAorZGVmaW5lZCBieSBBbm5leCAjMTEgW1VBWCAjMTFdIHdpbGwgYmUgY29uY2VybmVkIHRvIGRldGVybWluZSBicmVha2luZyBcCitwb3NpdGlvbnMuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35uZXp1bWkvVW5pY29kZS1MaW5lQnJlYWstJHtQVn0vIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9NzcyNDFhYmQ3NGZlYzU2MWIzZjNkZTFiNDRjMDI0MWIiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9OL05FL05FWlVNSS9Vbmljb2RlLUxpbmVCcmVhay0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZTc2NzIyMjc5MjIyNjBhYzkyZDIwYmJhZDI5NjYwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTViYzNjNGNiNjBhZDA3NzBkOTc4MTY3MTZjZmUzMjJmMjRlNjAyYzcwZTU5NWY1OTQxZGZhMDJjNDBjYjc2IgorCitTID0gIiR7V09SS0RJUn0vVW5pY29kZS1MaW5lQnJlYWstJHtQVn0iCisKK0RFUEVORFMgPSAibGlic29tYm9rMyBsaWJtaW1lLWNoYXJzZXQtcGVybCIKKworUkRFUEVORFNfJHtQTn0gPSAibGlic29tYm9rMyBsaWJtaW1lLWNoYXJzZXQtcGVybCIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTIxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmMwMGM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEyMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBpbnRlcmZhY2UgdG8gdGhlIGxpYnhtbDIgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGFuIGludGVyZmFjZSB0byBsaWJ4bWwyLCBwcm92aWRpbmcgWE1MIGFuZCBIVE1MIHBhcnNlcnMgXAotd2l0aCBET00sIFNBWCBhbmQgWE1MUmVhZGVyIGludGVyZmFjZXMsIGEgbGFyZ2Ugc3Vic2V0IG9mIERPTSBMYXllciAzIFwKLWludGVyZmFjZSBhbmQgYSBYTUw6OlhQYXRoLWxpa2UgaW50ZXJmYWNlIHRvIFhQYXRoIEFQSSBvZiBsaWJ4bWwyLiBcCi1UaGUgbW9kdWxlIGlzIHNwbGl0IGludG8gc2V2ZXJhbCBwYWNrYWdlcyB3aGljaCBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGlzIFwKLXNlY3Rpb247IHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCB5b3Ugb25seSBuZWVkIHRvIHVzZSBYTUw6OkxpYlhNTDsgaW4gXAoteW91ciBwcm9ncmFtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtTGliWE1MLTEuOTkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjB8R1BMdjErIgotREVQRU5EUyArPSAibGlieG1sMiBcCi0gICAgICAgIGxpYnhtbC1zYXgtcGVybC1uYXRpdmUgXAotICAgICAgICB6bGliIFwKLSIKLVJERVBFTkRTXyR7UE59ICs9ICJsaWJ4bWwyIFwKLSAgICAgICAgbGlieG1sLXNheC1wZXJsIFwKLSAgICAgICAgbGlieG1sLXNheC1iYXNlLXBlcmwgXAotICAgICAgICB6bGliIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvWE1MLUxpYlhNTC0ke1BWfS50YXIuZ3o7bmFtZT1saWJ4bWwgXAotICAgIGZpbGU6Ly9kaXNhYmxlLWxpYnhtbDItY2hlY2sucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtQ0FUQUxPRy1jb25kaXRpb25hbC1jb21waWxlLnBhdGNoIFwKLSAgICBmaWxlOi8vdXNpbmctRE9DQi1jb25kaXRpb25hbC5wYXRjaCBcCi0iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT03NWUwMjFlMzVhOTA2MzQ3ZjQ2YzlmZjE2MzY1M2UyYSBcCi0gICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTk3ODcxYmRlMTUwZGFlYjVlNjFhZDk1MTM3ZmYyNDQ2IFwKLSIKLVNSQ19VUklbbGlieG1sLm1kNXN1bV0gPSAiMTU0NGFiOWFjMTEwZjVkYTI5NjAxNTM0NjU2MWNlMDIiCi1TUkNfVVJJW2xpYnhtbC5zaGEyNTZzdW1dID0gImVjNDMxMDExY2IzN2EwNDY0MGZkMjMxNmY2NGQwNDA1YTI3NGVlY2UyYzZmMzg0N2Y3ZmJkMzM2ZWIxYzBkYzkiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtTGliWE1MLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0tSSR7U1RBR0lOR19JTkNESVJ9L2xpYnhtbDIgTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAiCi1CVUlMRF9DRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFICIKLQotRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vWE1ML0xpYlhNTC8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTI5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4Y2MyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMjkuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJQZXJsIGludGVyZmFjZSB0byB0aGUgbGlieG1sMiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaXMgYW4gaW50ZXJmYWNlIHRvIGxpYnhtbDIsIHByb3ZpZGluZyBYTUwgYW5kIEhUTUwgcGFyc2VycyBcCit3aXRoIERPTSwgU0FYIGFuZCBYTUxSZWFkZXIgaW50ZXJmYWNlcywgYSBsYXJnZSBzdWJzZXQgb2YgRE9NIExheWVyIDMgXAoraW50ZXJmYWNlIGFuZCBhIFhNTDo6WFBhdGgtbGlrZSBpbnRlcmZhY2UgdG8gWFBhdGggQVBJIG9mIGxpYnhtbDIuIFwKK1RoZSBtb2R1bGUgaXMgc3BsaXQgaW50byBzZXZlcmFsIHBhY2thZ2VzIHdoaWNoIGFyZSBub3QgZGVzY3JpYmVkIGluIHRoaXMgXAorc2VjdGlvbjsgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIHlvdSBvbmx5IG5lZWQgdG8gdXNlIFhNTDo6TGliWE1MOyBpbiBcCit5b3VyIHByb2dyYW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1hNTC1MaWJYTUwtMS45OS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCitERVBFTkRTICs9ICJsaWJ4bWwyIFwKKyAgICAgICAgbGlieG1sLXNheC1wZXJsLW5hdGl2ZSBcCisgICAgICAgIHpsaWIgXAorIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDIgXAorICAgICAgICBsaWJ4bWwtc2F4LXBlcmwgXAorICAgICAgICBsaWJ4bWwtc2F4LWJhc2UtcGVybCBcCisgICAgICAgIHpsaWIgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9YTUwtTGliWE1MLSR7UFZ9LnRhci5nejtuYW1lPWxpYnhtbCBcCisgICAgZmlsZTovL2Rpc2FibGUtbGlieG1sMi1jaGVjay5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1DQVRBTE9HLWNvbmRpdGlvbmFsLWNvbXBpbGUucGF0Y2ggXAorICAgIGZpbGU6Ly91c2luZy1ET0NCLWNvbmRpdGlvbmFsLnBhdGNoIFwKKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTY0ZWRhMWJjMTM1ZjBlY2UxZDExODdmMmE4YWM4MmMxIFwKKyAgICBmaWxlOi8vTElDRU5TRTttZDU9OTc4NzFiZGUxNTBkYWViNWU2MWFkOTUxMzdmZjI0NDYgXAorIgorU1JDX1VSSVtsaWJ4bWwubWQ1c3VtXSA9ICI1ODA2YjY5ZDU0YTJkNzg4NGI4ZDIyYjM5NTg4ODQzNiIKK1NSQ19VUklbbGlieG1sLnNoYTI1NnN1bV0gPSAiNWNhMDI2OWJhMDY4MDBjODQwNjFhN2YzMzMzYzg1ZmFiNTU4NGQ2OWNkN2I0ZTA2NDE5NjNkYTdmZDM2YjM2NiIKKworUyA9ICIke1dPUktESVJ9L1hNTC1MaWJYTUwtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitFWFRSQV9DUEFORkxBR1MgPSAiSU5DPS1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlieG1sMiBMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitDRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFICIKK0JVSUxEX0NGTEFHUyArPSAiIC1EX0dOVV9TT1VSQ0UgIgorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9YTUwvTGliWE1MLy5kZWJ1Zy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1zYXgtd3JpdGVyLXBlcmxfMC41Ni5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLXNheC13cml0ZXItcGVybF8wLjU2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjFjZWRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLXNheC13cml0ZXItcGVybF8wLjU2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUw6OlNBWDo6V3JpdGVyIC0gU0FYMiBXcml0ZXIiCi1ERVNDUklQVElPTiA9ICJcCi1YTUw6OlNBWDo6V3JpdGVyIGhlbHBzIHRvIHNlcmlhbGl6ZSBTQVgyIHJlcHJlc2VudGF0aW9ucyBvZiBYTUwgZG9jdW1lbnRzIHRvIFwKLXN0cmluZ3MsIGZpbGVzLCBhbmQgb3RoZXIgZmxhdCByZXByZXNlbnRhdGlvbnMuIEl0IGhhbmRsZXMgY2hhcnNldCBlbmNvZGluZ3MsIFwKLVhNTCBlc2NhcGluZyBjb252ZW50aW9ucywgYW5kIHNvIGZvcnRoLiBJdCBpcyBzdGlsbCBjb25zaWRlcmVkIGFscGhhLCBcCi1hbHRob3VnaCBpdCBoYXMgYmVlbiBwdXQgdG8gbGltaXRlZCB1c2UgaW4gc2V0dGluZ3Mgc3VjaCBhcyBYTUw6OkxpYlhNTCBhbmQgXAotdGhlIEF4S2l0IFhNTCBBcHBsaWNhdGlvbiBTZXJ2ZXIuIFwKLSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1hNTC1TQVgtV3JpdGVyLyIKLURFUEVORFMgKz0gImxpYnhtbC1maWx0ZXItYnVmZmVydGV4dC1wZXJsLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJsaWJ4bWwtZmlsdGVyLWJ1ZmZlcnRleHQtcGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1TQVgtV3JpdGVyLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNWZhNWUyYjJmNjg2N2IxYWNhOWI1YjQzZTFjZTM2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMDczZjdhMjUwNzJjODE1MDMxN2I4NmI5OWQwNzAzMTMxNmExNWJmZmFiOTllNjNlNWFmZTU5MWM4MjE3ZDAzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTQ1O2VuZGxpbmU9NDY7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgotCi1TID0gIiR7V09SS0RJUn0vWE1MLVNBWC1Xcml0ZXItJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLXNheC13cml0ZXItcGVybF8wLjU3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtc2F4LXdyaXRlci1wZXJsXzAuNTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiMGRlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLXNheC13cml0ZXItcGVybF8wLjU3LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiWE1MOjpTQVg6OldyaXRlciAtIFNBWDIgV3JpdGVyIgorREVTQ1JJUFRJT04gPSAiXAorWE1MOjpTQVg6OldyaXRlciBoZWxwcyB0byBzZXJpYWxpemUgU0FYMiByZXByZXNlbnRhdGlvbnMgb2YgWE1MIGRvY3VtZW50cyB0byBcCitzdHJpbmdzLCBmaWxlcywgYW5kIG90aGVyIGZsYXQgcmVwcmVzZW50YXRpb25zLiBJdCBoYW5kbGVzIGNoYXJzZXQgZW5jb2RpbmdzLCBcCitYTUwgZXNjYXBpbmcgY29udmVudGlvbnMsIGFuZCBzbyBmb3J0aC4gSXQgaXMgc3RpbGwgY29uc2lkZXJlZCBhbHBoYSwgXAorYWx0aG91Z2ggaXQgaGFzIGJlZW4gcHV0IHRvIGxpbWl0ZWQgdXNlIGluIHNldHRpbmdzIHN1Y2ggYXMgWE1MOjpMaWJYTUwgYW5kIFwKK3RoZSBBeEtpdCBYTUwgQXBwbGljYXRpb24gU2VydmVyLiBcCisiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLVdyaXRlci8iCitERVBFTkRTICs9ICJsaWJ4bWwtZmlsdGVyLWJ1ZmZlcnRleHQtcGVybC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAibGlieG1sLWZpbHRlci1idWZmZXJ0ZXh0LXBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi9YTUwtU0FYLVdyaXRlci0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiM2UzMDIzYzY0OGUzMDAzYzA0ZGUyZmIwNDQzNWY4YmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Q2MWQwN2VmNDNiMDEyNmY1YjRkZTRmNDE1YTI1NmZhODU5ZmE4OGRjNGZkYWJhYWQ3MGI3YmU3YzY4MmNmMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00NTtlbmRsaW5lPTQ2O21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtV3JpdGVyLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvcG80YS9wbzRhXzAuNDkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvcG80YS9wbzRhXzAuNDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRiNWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9wbzRhL3BvNGFfMC40OS5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlBPIGZvciBhbnl0aGluZyIKK0RFU0NSSVBUSU9OID0gIlRoZSBwbzRhIChQTyBmb3IgYW55dGhpbmcpIHByb2plY3QgZ29hbCBpcyB0byBlYXNlIHRyYW5zbGF0aW9ucyBcCisoYW5kIG1vcmUgaW50ZXJlc3RpbmdseSwgdGhlIG1haW50ZW5hbmNlIG9mIHRyYW5zbGF0aW9ucykgdXNpbmcgZ2V0dGV4dCB0b29scyBcCitvbiBhcmVhcyB3aGVyZSB0aGV5IHdlcmUgbm90IGV4cGVjdGVkIGxpa2UgZG9jdW1lbnRhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwczovL3BvNGEuYWxpb3RoLmRlYmlhbi5vcmciCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTk2ZmM5YjRjYzM2ZDgwNjU5ZTY5NGVhMTA5ZjAzMjUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vYWxpb3RoLmRlYmlhbi5vcmcvYW5vbnNjbS9naXQvcG80YS9wbzRhLmdpdDtwcm90b2NvbD1odHRwcyIKKworIyB2MC40OQorU1JDUkVWID0gIjc5ZWQ4N2E1NzdhNTQzNTM4ZmUzOWM3YjYwMDc5OTgxZjU5OTcwNzIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtcGVybC1uYXRpdmUgXAorICAgIGxpYnRleHQtd3JhcGkxOG4tcGVybCBcCisgICAgbGlidGVybS1yZWFka2V5LXBlcmwgXAorICAgIGxpYmxvY2FsZS1nZXR0ZXh0LXBlcmwgXAorICAgIGxpYnVuaWNvZGUtbGluZWJyZWFrLXBlcmwgXAorIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICIgXAorICAgIGxpYnRleHQtd3JhcGkxOG4tcGVybCBcCisgICAgbGlidGVybS1yZWFka2V5LXBlcmwgXAorICAgIGxpYmxvY2FsZS1nZXR0ZXh0LXBlcmwgXAorICAgIGxpYnVuaWNvZGUtbGluZWJyZWFrLXBlcmwgXAorIgorCitpbmhlcml0IGNwYW5fYnVpbGQKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCmluZGV4IDAxYjA1NmMuLjQzNzQwZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCkBAIC0xNywxMiArMTcsMTIgQEAKIAogCVVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKIAlsYXllcnM6IG1ldGEKLQlicmFuY2g6IHB5cm8gCisJYnJhbmNoOiByb2NrbyAKIAlyZXZpc2lvbjogSEVBRAogCiAJVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9tZXRhLW9wZW5lbWJlZGRlZAogCWxheWVyczogbWV0YS1vZQotCWJyYW5jaDogIHB5cm8KKwlicmFuY2g6ICByb2NrbwogCXJldmlzaW9uOiBIRUFECiAKIFBsZWFzZSBmb2xsb3cgdGhlIHJlY29tbWVuZGVkIHNldHVwIHByb2NlZHVyZXMgb2YgeW91ciBPRSBkaXN0cmlidXRpb24uCkBAIC0zOSwxMiArMzksMTYgQEAKIGJlZm9yZSBwb3N0aW5nLgogCiBTZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aAotJ1ttZXRhLXB5dGhvbl1bcHlyb10nIGluIHRoZSBzdWJqZWN0LgorJ1ttZXRhLXB5dGhvbl0nIGluIHRoZSBzdWJqZWN0LgogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2Ugc29tZXRoaW5nIGxpa2U6IAotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG89b3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXB5dGhvbl1bcHlyb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10bz1vcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcHl0aG9uXVtQQVRDSCcKIAogTWFpbnRlbmFuY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Ci1Bcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCitNYWludGFpbmVyczoKKyAgICAgICAgVGltICJtb3RvLXRpbW8iIE9ybGluZyA8VGljb1RpbW9AZ21haWwuY29tPgorICAgICAgICBQYXVsICJibHVlbGlnaHRuaW5nIiBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CisgICAgICAgIERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL2ZpbGVzLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvZmlsZXMvMDAwMS1maXhfc2V0dXBfcHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MTM1YTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvZmlsZXMvMDAwMS1maXhfc2V0dXBfcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDJkNDdhNWRmNTg4MDIxNzNiZjkwZDc2MGIxZDZmNTIwYWVlYTc2ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWogUm9kZSA8YW5kcmVqLnJvZGVAZXR0dXMuY29tPgotRGF0ZTogTW9uLCAxMCBBcHIgMjAxNyAxNjo0Nzo0MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cDogcmVtb3ZlIGZpbmRfcGFja2FnZXMgc2luY2UgdGhhdCB3b3VsZCBpbnN0YWxsIHRlc3RzIGFzCi0gYSBwYWNrYWdlIGFzIHdlbGwKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFJvZGUgPGFuZHJlai5yb2RlQGV0dHVzLmNvbT4KLS0tLQotIHNldHVwLnB5IHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDZiMzcwMTYuLmExZjExYTcgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xLDYgKzEsNiBAQAotICMgLSotIGNvZGluZzogdXRmLTggLSotCi0gCi0tZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgZmluZF9wYWNrYWdlcwotK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAKLSAKLSBzZXR1cCgKLSAgICAgbmFtZT0nZ3NvY2tldHBvb2wnLAotQEAgLTksNyArOSw3IEBAIHNldHVwKAotICAgICBhdXRob3I9J1N0dWRpbyBPdXNpYScsCi0gICAgIGF1dGhvcl9lbWFpbD0naWt1eWFAb3VzaWEuanAnLAotICAgICB1cmw9J2h0dHA6Ly9naXRodWIuY29tL3N0dWRpby1vdXNpYS9nc29ja2V0cG9vbCcsCi0tICAgIHBhY2thZ2VzPWZpbmRfcGFja2FnZXMoKSwKLSsgICAgcGFja2FnZXM9Wydnc29ja2V0cG9vbCddLAotICAgICBsaWNlbnNlPW9wZW4oJ0xJQ0VOU0UnKS5yZWFkKCksCi0gICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUsCi0gICAgIGNsYXNzaWZpZXJzPSgKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbi1nc29ja2V0cG9vbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2wuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOTcxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2wuaW5jCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiQSBzaW1wbGUgY29ubmVjdGlvbiBwb29sIGZvciBnZXZlbnQiCitERVNDUklQVElPTiA9ICJjcmVhdGVzIGEgcG9vbCBvZiBjb25uZWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZ2V2ZW50IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWRpby1vdXNpYS9nc29ja2V0cG9vbCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRiYTgyNTM5NGFlYzAyNmI1Zjk0ZWRjYTQ0NDI2ODU5IgorREVQRU5EUyArPSAiJHtQWVRIT05fUE59LWdldmVudCIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tZ2V2ZW50IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDlmNWYyOTJlZjFiNjA5NDRhZTkyY2E0MjZhNWU1NTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjJlMjc0OWFjZWFkY2U2YjI3Y2E1MmUyYjBhNjRhZjk5Nzk3NzQ2YTg2ODFlMWEyOTYzZjcyMDA3YzE0Y2IxNCIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjE1MmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNpbXBsZSBjb25uZWN0aW9uIHBvb2wgZm9yIGdldmVudCIKLURFU0NSSVBUSU9OID0gImNyZWF0ZXMgYSBwb29sIG9mIGNvbm5lY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBnZXZlbnQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3R1ZGlvLW91c2lhL2dzb2NrZXRwb29sIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGJhODI1Mzk0YWVjMDI2YjVmOTRlZGNhNDQ0MjY4NTkiCi1ERVBFTkRTICs9ICJweXRob24tZ2V2ZW50IgotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1nZXZlbnQiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoO3BhdGNoPTE7cG51bT0xIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0ZjYxODg2NGIxOGQ2YjA2Zjc3NDk5NGYxNzJlZjQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2YjczZGVhYjliY2JjNDI4ZDQ4MTM2OTdlZWJlNWMzYjljNDBhOTcxZjYyZTEzNjA3Yjg4MWFhNzQ5YWY5ZDAiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2YWQxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbi1nc29ja2V0cG9vbF8wLjEuNi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWdzb2NrZXRwb29sLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24zLWdzb2NrZXRwb29sXzAuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uMy1nc29ja2V0cG9vbF8wLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM2MjFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uMy1nc29ja2V0cG9vbF8wLjEuNi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWdzb2NrZXRwb29sLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvZmlsZXMvMDAwMS1maXhfc2V0dXBfcHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9maWxlcy8wMDAxLWZpeF9zZXR1cF9weS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVkZjliOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9maWxlcy8wMDAxLWZpeF9zZXR1cF9weS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYmRhOTllYWI5MDM2ZDQ2ZTdiYjA2YjQ0NmQxMWNhYjBiMWRkODA5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlaiBSb2RlIDxhbmRyZWoucm9kZUBldHR1cy5jb20+Ci1EYXRlOiBNb24sIDEwIEFwciAyMDE3IDE2OjQ5OjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwOiByZW1vdmUgZmluZF9wYWNrYWdlcyBhbmQgb25seSBpbnN0YWxsIG1wcnBjCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBSb2RlIDxhbmRyZWoucm9kZUBldHR1cy5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA1MDAxZDBjLi40YzBiYTc1IDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMSw2ICsxLDYgQEAKLSAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIAotLWZyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIEV4dGVuc2lvbiwgZmluZF9wYWNrYWdlcwotK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIEV4dGVuc2lvbgotIAotIHNldHVwKAotICAgICBuYW1lPSdtcHJwYycsCi1AQCAtMTAsNyArMTAsNyBAQCBzZXR1cCgKLSAgICAgYXV0aG9yPSdTdHVkaW8gT3VzaWEnLAotICAgICBhdXRob3JfZW1haWw9J2lrdXlhQG91c2lhLmpwJywKLSAgICAgdXJsPSdodHRwOi8vZ2l0aHViLmNvbS9zdHVkaW8tb3VzaWEvbXBycGMnLAotLSAgICBwYWNrYWdlcz1maW5kX3BhY2thZ2VzKCksCi0rICAgIHBhY2thZ2VzPVsnbXBycGMnXSwKLSAgICAgZXh0X21vZHVsZXM9WwotICAgICAgICAgRXh0ZW5zaW9uKCdtcHJwYy5jbGllbnQnLCBbJ21wcnBjL2NsaWVudC5jJ10pLAotICAgICAgICAgRXh0ZW5zaW9uKCdtcHJwYy5zZXJ2ZXInLCBbJ21wcnBjL3NlcnZlci5jJ10pCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTUzNWZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjLmluYwpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkEgZ2V2ZW50IGJhc2VkIG1lc3NhZ3BhY2sgcnBjIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJtcHJwYyBpcyBhIGZhc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1lc3NhZ2VwYWNrIHJwYyBwcm90b2NvbCBmb3IgcHl0aG9uLiBcCitJdCBpcyBiYXNlZCBvbiBnZXZlbnQgZm9yIGhhbmRsaW5nIGNvbm5lY3Rpb25zIGFuZCBlbmFibGluZyBjb25jdXJyZW50IGNvbm5lY3Rpb25zLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVkaW8tb3VzaWEvbXBycGMiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YmE4MjUzOTRhZWMwMjZiNWY5NGVkY2E0NDQyNjg1OSIKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1nZXZlbnQiCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWdldmVudCAke1BZVEhPTl9QTn0tbXNncGFjayAke1BZVEhPTl9QTn0tZ3NvY2tldHBvb2wiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NmU2Y2YzNjdlYTcxY2ZlZDg5MzhhMjdlOWMxODNjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2NhZGE2NTI2ZDQ4YWM0ZDk1YTdiYmRjMDkzNTg2NjYzODQxNTYwMzM3MDMyYTUwM2Y1N2NjZmFlNjlkN2JmIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGRmMDBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkEgZ2V2ZW50IGJhc2VkIG1lc3NhZ3BhY2sgcnBjIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJtcHJwYyBpcyBhIGZhc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1lc3NhZ2VwYWNrIHJwYyBwcm90b2NvbCBmb3IgcHl0aG9uLiBcCi1JdCBpcyBiYXNlZCBvbiBnZXZlbnQgZm9yIGhhbmRsaW5nIGNvbm5lY3Rpb25zIGFuZCBlbmFibGluZyBjb25jdXJyZW50IGNvbm5lY3Rpb25zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVkaW8tb3VzaWEvbXBycGMiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YmE4MjUzOTRhZWMwMjZiNWY5NGVkY2E0NDQyNjg1OSIKLURFUEVORFMgKz0gInB5dGhvbi1nZXZlbnQiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdldmVudCBweXRob24tbXNncGFjayBweXRob24tZ3NvY2tldHBvb2wiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoO3BhdGNoPTE7cG51bT0xIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ0OWU2MjM5ZWI1ZmYwN2I5Y2NlYjg2ZTFhYjBjMmVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4ODFjYzdmYmI4ZGU4MTRlMmI0YWE1OTU4YmZlMTQ3YzVjMzAxZTQ2NzQ5MTkwZjBlNmFiZjM3M2NmNTZkODIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJlYTIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLW1wcnBjLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24zLW1wcnBjXzAuMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbjMtbXBycGNfMC4xLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzN2Q2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24zLW1wcnBjXzAuMS4xNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLW1wcnBjLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC41NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MyOGE4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC41NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIFJlbW90ZSBPYmplY3RzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNzhhY2VmMzc1ZTE3YTNiZmYwM2JkMGY3OGM1MzIyMCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0MDBhNGQyNjBkYmVhYTRlN2U3MjVjNGJhMzEwZWFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YTdhMTQyNTQyZDg3ZGRlMWNlY2M4ZDNlZTA0OGVjOTQ4MWJhODYxZDYxMjM0ZDIxOWZhZGQwNmU2Y2VkOTYiCi0KLVBZUElfUEFDS0FHRSA9ICJQeXJvNCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMzNCBcCi0gICAgJHtQWVRIT05fUE59LXNlcnBlbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42Mi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80LjYyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWM0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42Mi5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlB5dGhvbiBSZW1vdGUgT2JqZWN0cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Mzc4YWNlZjM3NWUxN2EzYmZmMDNiZDBmNzhjNTMyMjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTJmZWYzZGM4YjI5NzczYTg3YWJiYWE4ZTlhYmUxNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzAxZWRmYjJiYzQ3NzY4YjcyMjJhNjhjYWU4ZGU4YmU3OTZkMWQ5ZjYxY2RiZDFhZjkwMzk5ODVlZDUwMDljIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlybzQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzMzQgXAorICAgICR7UFlUSE9OX1BOfS1zZXJwZW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0temxpYiBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHl0dW4vcHl0aG9uLXB5dHVuLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhOGJmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bi5pbmMKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJQeXRob24gVFVOL1RBUCB0dW5uZWwgbW9kdWxlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xM2Y3NjI5ZThlNDk4OWI2NmI0YTkxM2FiMDVhOTFkZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjViMzViMWNmODBhMDJjY2E3ZWM3MmViOTVkNmIwMTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3NTk1ZGFkZjg1ZjUxNzZlYjA4YzhkNGQ5YmE1Yjg2MmExODBlOTY2MzNmNjcwZjkxNDM3YzQ3YTFiZWFkMGQiCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24tcHl0dW4iCisKK2luaGVyaXQgcHlwaSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bl8yLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bl8yLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmM1ODdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHl0dW4vcHl0aG9uLXB5dHVuXzIuMi4xLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHl0dW4uaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbjMtcHl0dW5fMi4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24zLXB5dHVuXzIuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOGQ5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24zLXB5dHVuXzIuMi4xLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHl0dW4uaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3BhcmFsbGVsX21ha2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3BhcmFsbGVsX21ha2UucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uXzAuMTUuMTkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDgyNjcyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMKQEAgLTAsMCArMSw4IEBACitTVU1NQVJZID0gIkEgc21hbGwgUHl0aG9uIG1vZHVsZSBmb3IgZGV0ZXJtaW5pbmcgYXBwcm9wcmlhdGUgKyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJzLCBlLmcuIGEgdXNlciBkYXRhIGRpci4iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zMTYyNTM2M2M0NWViMGM2N2M2MzBhMmY3M2U0MzhlNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ0YzY3OTkwNDA4MmEyMTMzZjU1NjZjOGEwZDNhYjQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNTg5NmQxMzcyODU4ZjhkZDMzNDRmYWY0ZTUwMTRkMjE4NDljNzU2YzhkNTcwMWY3OGY4YTEwM2IzNzJkOTIiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlyc18xLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnNfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmZjliMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnNfMS40LjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWFwcGRpcnMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYjczNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYwpAQCAtMCwwICsxLDEzIEBACitERVNDUklQVElPTiA9ICJQeXRob24gYmluZGluZyB0byB0aGUgTmV0d29ya2luZyBhbmQgQ3J5cHRvZ3JhcGh5IChOYUNsKSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Y2EvcHluYWNsIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MjAxMGNkM2M3ZDdiZDk2NWI1NTcyMWVmNGQ5M2VjMiIKKworUFlQSV9QQUNLQUdFID0gImFzbjFjcnlwdG8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5N2Q1NDY2NWMzOTdiNzJiMTY1NzY4Mzk4ZGZkZDg3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwODc0OTgxMzI5Y2ZlYmIzNjZkNjU4NGMzZDE2ZTkxM2YyYTBlYjAyNmM5NDYzZWZjYzRhYWY0MmE5ZDk0ZDcwIgorCitpbmhlcml0IHB5cGkKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjIzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvXzAuMjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWY2MGMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjIzLjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWFzbjFjcnlwdG8uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYjFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYwpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkFuIGFic3RyYWN0IHN5bnRheCB0cmVlIGZvciBQeXRob24gd2l0aCBpbmZlcmVuY2Ugc3VwcG9ydC4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2FzdHJvaWQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmNjVlNGVhODI5MGVjMDMyMzIwNDYwOTA1YWZiODI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5MmMyYTIwNDRhZGJmNmE4NGE2NzFiNzUyMmU5Mjk1YWQyZjZhN2M3ODFiODk5MDE0MzA4ZGIyNTMxMmRkMzUiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgICAke1BZVEhPTl9QTn0tbGF6eS1vYmplY3QtcHJveHkgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0td3JhcHQgXAorICAgICR7UFlUSE9OX1BOfS1yZSBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjQuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS40LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZTEyOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjQuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgZm9yIFB5dGhvbiB3aXRoIGluZmVyZW5jZSBzdXBwb3J0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXN0cm9pZCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTc0Mzg5NzFkZTA1ZWI4MDFiODJlYWU1OWMwNTIxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNDgzZTc4OTFjZTNhMDZkYWRmYzZjYjkwOTViMDkzOGFjYTU4OTQwZDQzNTc2ZDcyZTQ1MDJiNDgwYzA4NWQ3IgotCi1pbmhlcml0IHNldHVwdG9vbHMgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKLSAgICAke1BZVEhPTl9QTn0tbGF6eS1vYmplY3QtcHJveHkgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS13cmFwdCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzEuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2EwYTVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjUuMy5iYgpAQCAtMCwwICsxLDcgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYXN0cm9pZC5pbmMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIke1BZVEhPTl9QTn0tZW51bTM0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWltcG9ydGxpYiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaW5nbGVkaXNwYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWViMDIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKQEAgLTAsMCArMSwxOCBAQAorREVTQ1JJUFRJT04gPSAiU0RLIGZvciBjb25uZWN0aW5nIHRvIEFXUyBJb1QgdXNpbmcgUHl0aG9uLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05YWM0OTkwMWI4MzNlNzY5YzdkNmYyMWU4ZGJkN2IzMCIKKworU1JDX1VSSVttZDVzdW1dID0gImU2NzgxZjZjNDJiYmM1NDdkNTA4ZDZmYTY3MjBhYzhmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiMjg2NWQ0ZjUxODc5NGI5NmE4MzRmYzgxYjU2ODQyOGRhYTBlZjkyMDM3ZGEyZTkyODhiNGFmNWQ4ZGQ3MzYiCisKK2luaGVyaXQgcHlwaQorCitQWVBJX1BBQ0tBR0UgPSAiQVdTSW9UUHl0aG9uU0RLIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHlvcGVuc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYWU5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jCmluZGV4IDg2NmNlNzguLjVlNmNhM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbC5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2ZWVhYWJjOTJjZmMyZDAzZjUzZTc4OTMyNGQ3MjkyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYWZhMjBiYzU1YjBlOTkxODMzMDMwMTI5YWQ0OThmMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzUzNWM0NDAzODAyZjZlYjM4MTczY2Q0ODYzZTQxOWUyMjc0OTIxYTAxYThhYWQ4YTViNDk3YzEzMWM2Mjg3NSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MDIyOGIzY2U5M2EyMDMzNTcxNThiOTA5YWZlOGFlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDA3ZGFmNzE0ZDBjZDU1MjRiYmU0MzZlMmQ0MmIzYzIwZTY4ZGE2NjI4OTU1OTM0MWU0OGQyY2Q2ZDI1ODExIgogCiBQWVBJX1BBQ0tBR0UgPSAiQmFiZWwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi41LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuMy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjUuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTFjZmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFja3BvcnQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSBmcm9tIFB5dGhvbiAzLjMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamFyYWNvL2JhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT00MjtlbmRsaW5lPTQyO21kNT05OGZjMzY1OGU1OTcwZDI2ZjZiMjEwOTgwOGM3NjZiZSIKLQotUFlQSV9QQUNLQUdFID0gImJhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjI2YTIyMzI1MGJkMjRlYTJlMGFkNmNlNDdiMTkwODQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQ0YTIxYmNlYzRhZTE3N2RhNTU0MzIxZjgxYTc4ZGM4NzllYWE4ZjZlYTk5MjBjYjkwNDgzMDU4NWQzMWU5NSIKLQotREVQRU5EUyA9ICJweXRob24tc2V0dXB0b29scy1zY20tbmF0aXZlIgotCi1pbmhlcml0IHNldHVwdG9vbHMgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MTQzNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjQuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlIGZyb20gUHl0aG9uIDMuMyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vYmFja3BvcnRzLmZ1bmN0b29sc19scnVfY2FjaGUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTQ3O2VuZGxpbmU9NDc7bWQ1PTk4ZmMzNjU4ZTU5NzBkMjZmNmIyMTA5ODA4Yzc2NmJlIgorCitQWVBJX1BBQ0tBR0UgPSAiYmFja3BvcnRzLmZ1bmN0b29sc19scnVfY2FjaGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOTU0ZTdkNWUyY2EwZjBmNjZhZDJlZDEyYmE4MDBlNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMWYyMzU4NTJmODhlZGMxNTU4ZDQyOGQ4OTA2NjNjNDllYjQ1MTRmZmVjOWYzNjUwZTdmM2M5ZTRhMTJlMzZmIgorCitERVBFTkRTICs9ICJweXRob24tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCitpbmhlcml0IHNldHVwdG9vbHMgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2N2EzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jCkBAIC0wLDAgKzEsMTUgQEAKK0RFU0NSSVBUSU9OID0gIk1vZGVybiBwYXNzd29yZCBoYXNoaW5nIGZvciB5b3VyIHNvZnR3YXJlIGFuZCB5b3VyIHNlcnZlcnMuIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGY3YmIwOTRjNzIzMmIwNThjN2U5ZjJlNDMxZjM4OWMiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1jZmZpLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwZGE4YjQwNzkwY2FhZDk5YzQwODZkYmE1MzMxNTRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NDVjOGQwYWQ4NDUzMDhkZTNlYjliZTk4YjZmZDIyYTQ2ZWM1NDEyYmZjNjY0YTQyM2U0MTFjZGQ4ZjU0ODgiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjMuYmIKaW5kZXggYzY5MGYwZC4uMjQzMzM1NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuMy5iYgpAQCAtMSwxNSArMSwyIEBACi1ERVNDUklQVElPTiA9ICJNb2Rlcm4gcGFzc3dvcmQgaGFzaGluZyBmb3IgeW91ciBzb2Z0d2FyZSBhbmQgeW91ciBzZXJ2ZXJzLiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmN2JiMDk0YzcyMzJiMDU4YzdlOWYyZTQzMWYzODljIgotCi1ERVBFTkRTID0gInB5dGhvbi1jZmZpLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwZGE4YjQwNzkwY2FhZDk5YzQwODZkYmE1MzMxNTRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NDVjOGQwYWQ4NDUzMDhkZTNlYjliZTk4YjZmZDIyYTQ2ZWM1NDEyYmZjNjY0YTQyM2U0MTFjZGQ4ZjU0ODgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYmNyeXB0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MGQ5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJTY3JlZW4tc2NyYXBpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gIiBodHRwczovL3d3dy5jcnVtbXkuY29tL3NvZnR3YXJlL0JlYXV0aWZ1bFNvdXAvYnM0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9ZjJkMzhkOGE0MGJmNzNmZDRiM2QxNmNhMmU1ODgyZDEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMTc3MTRkMGY5MWEyM2I3MDhhNTkyY2IzYzY5NzcyOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDhiNmFjOTMyZGNjYjBhNDEyNjU1OGY3ZGZkY2Y0MTcxMGRkNDRhNGVmNDk3YTBiYjU5YTc3ZjlmMDc4ZTg5IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tY29yZSBcCisgICAgJHtQWVRIT05fUE59LWh0bWw1bGliIFwKKyAgICAke1BZVEhPTl9QTn0tbHhtbCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0XzQuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDRfNC42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA3Mjg1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0XzQuNi4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjZlMGQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQSBoaWdoLWxldmVsIFB5dGhvbiBlZmZpY2llbnQgYXJyYXlzIG9mIGJvb2xlYW5zIC0tIEMgZXh0ZW5zaW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lsYW5zY2huZWxsL2JpdGFycmF5IgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYmE0NjkzNTNmOWYyYTI0NGIyMDc1OTAyMzUxZTM3ZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM4MjUxODRmNTRmNGQ5MzUwOGEyODAzMWI0YzY1ZDNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkYTUwMTM1NmU0OGE4M2M2MWY0NzkzOTM2ODFjMWJjNGI5NGU1YTM0YWNlN2UwOGNiMjllN2RkOTI5MGFiMTgiCisKK2luaGVyaXQgcHlwaQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzAuOC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMC44LjEuYmIKaW5kZXggMTQ1ZjFmYi4uZjc4YzdhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMC44LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMC44LjEuYmIKQEAgLTEsMTEgKzEsMiBAQAotU1VNTUFSWSA9ICJBIGhpZ2gtbGV2ZWwgUHl0aG9uIGVmZmljaWVudCBhcnJheXMgb2YgYm9vbGVhbnMgLS0gQyBleHRlbnNpb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWxhbnNjaG5lbGwvYml0YXJyYXkiCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiYTQ2OTM1M2Y5ZjJhMjQ0YjIwNzU5MDIzNTFlMzdkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzgyNTE4NGY1NGY0ZDkzNTA4YTI4MDMxYjRjNjVkM2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RhNTAxMzU2ZTQ4YTgzYzYxZjQ3OTM5MzY4MWMxYmM0Yjk0ZTVhMzRhY2U3ZTA4Y2IyOWU3ZGQ5MjkwYWIxOCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWJpdGFycmF5LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKaW5kZXggMTg3OGYzMS4uMWRiYzgwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJMR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzgxMzhiYWExMDBkNzI1OTkzNDU5MDg1MGJjMDQwNmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjUzYWVjZjhiOTAzNGJiYmEzMmNjMDRjYTZhN2I2ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZGFiYjQyNmU2Y2QxMWMyZGM3YTk4OTgwMzQwMTM1YWEwZWIwMjE0M2IwZDUxYmYxNGUzZTYxNzhjMTMxY2MzIgorU1JDX1VSSVttZDVzdW1dID0gImIyYTE2NDg4N2MxYzZhMmEyNDkwYjVhZmIzNmUzNmRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjFiNmNlNzVhN2YwOGI1ODZmNGQyY2FlOGNkYzQwOTg4MTczMWI4NTFmYzQwNWZhMjFjYjE2YmFkMDBkODciCiAKIFBZUElfUEFDS0FHRT0icHl0aG9uLWNhbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjAuMGIxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMS41LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjAuMGIxLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jCmluZGV4IDMxNDZiYzcuLmE1MjJlNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jCkBAIC04LDggKzgsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCiBTUkNOQU1FID0gImNhc3NhbmRyYS1kcml2ZXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3NTYxYTg5Y2Q4YTQzMmEyMmNmMzNhYmVmNzZiNjRlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGIwYzg4ODU0ZjNiZGRjZmQ5OTRjYjIwOGQ3ODA1MDdkZTYyNTI0ZWY4ZGNiNGYwNjhjMDg0ZDMzNWI3MDU0IgorU1JDX1VSSVttZDVzdW1dID0gIjE2NTliMDc0ZTEwYzYxM2U1YmExY2RmOTI5NzRhNTdhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0M2JlZDBmYWMwOGVlOTE2MzBmMGYzNTU1NmJiNjJjM2I0YjAwN2MyMGQ0ZTZlOGQzNDlmNzY5ZWE2NDgxNTAiCiAKIERJU1RVVElMU19CVUlMRF9BUkdTICs9ICIgXAogICAgIC0tbm8tbGliZXYgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYwppbmRleCAxZGYyM2NmLi5lNTUwZjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYwpAQCAtNyw3ICs3LDcgQEAKIExJQ0VOU0UgPSAiSVNDIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Zjc3ZjYxZDE0ZWU2ZmVhYzQyMjhkM2ViZDI2Y2MxZjEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNzI1MjFhOGJhZGZmNWU4OWE4ZWFiZWE1ODZkNzlhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MTg3N2ZiN2FjMTI2ZTkyMTVkZmIxNWJmZWY3MTE1ZmRjMzBlNzk4ZTAwMTMwNjUxNThlZWQwNzA3ZmQ5OWNlIgorU1JDX1VSSVttZDVzdW1dID0gIjQ4ZTgzNzBkYThiMzcwYTE2ZTIyM2VlOWM3YjZiMDYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwNTIzZDJlZmI2MDUyM2UxMTNiNDQ2MDIyOThmMDk2MGU5MDAzODhjZjNiYjYwNDNmNjQ1Y2Y1N2VhOWUzZjUiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxNy4xLjIzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE3LjcuMjcuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE3LjEuMjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxNy43LjI3LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMKaW5kZXggMjFlNDFjMS4uOGRjZGI2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMKQEAgLTEsMTAgKzEsMTEgQEAKIFNVTU1BUlkgPSAiRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgZm9yIFB5dGhvbiBjYWxsaW5nIEMgY29kZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZmZpLnJlYWR0aGVkb2NzLm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2NzdlMmZkYmY3Y2RkYTYxZDZkZDJiNTdkZjU0N2JmIgogREVQRU5EUyArPSAibGliZmZpICR7UFlUSE9OX1BOfS1weWNwYXJzZXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiOGZhN2NjYjg3NzkwNTMxZGIzMzE2YWIxN2FhODI0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NjNlMGJkNTNmZGEwM2MxNTE1NzMyMTdiM2E0OWIzYWJhZDg4MTNkZTlkZDA2MzJlMTAwOTBmNjE5MGZkYWY4IgorU1JDX1VSSVttZDVzdW1dID0gImE3MzE0ODczMjRiNTAxYzgyOTUyMjFiNjI5ZDNmNWYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiODdkZDkxYzBjNDA3Mzc1OGQwNzMzNGMxZTVmNzEyY2U4ZmU0OGYwMDdiODZmODIzODc3Mzk2M2VlNzAwYTYiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaV8xLjExLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS45LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXQuaW5jCmluZGV4IDQyYjY0YTIuLjYwMzU0ODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXQuaW5jCkBAIC00LDUgKzQsMTAgQEAKIAogaW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NmUzNjRhYmRiZGUyMGI1ZjZkYmJlMmFkOWQ1NGQwNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Zjc4MzJlN2M1ODMzNDhhOWVkZGQ5MjdlZTg1MTRiM2JmNzE3YzA2MWY1N2IyMWRiZTc2OTcyMTE0NTRkOWJiIgorIyBzZXR1cC5weSBvZiBjaGFyZGV0IG5lZWRzIHRoaXMuCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZGQxYmE3ZjljNzdlMzIzNTFiMGEwY2ZhY2Y0MDU1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGFiOTJlZDFjNGQ0ZjE2OTE2ZTA1OTA2YjZiNzVhNmMwZmI1ZGI4MjFjYzY1ZTcwY2JkNjRhM2UyYTVlYWFlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0XzMuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMDkyYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0cmEgZmVhdHVyZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkncyBjbWQgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvY21kMi8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT00MztlbmRsaW5lPTQzO21kNT0wZjEzYzljZmM3NTI4ODIyM2NmN2VkZDJmM2I5ODVhMiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlOTJmZjFiNzM3NjVkNjRiZjIzMGU5NDUxMmQwYjdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhYjc2YTFmMDdkZDVmZDFjYzNjMTViYTQwODAyNjVmMzNiODBjN2ZkNzQ4ZDcxYmQ2OWE1MWQ2MGIzMGY1MWEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAotICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC43LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMWVmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy43LmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiRXh0cmEgZmVhdHVyZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkncyBjbWQgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvY21kMi8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT00OTtlbmRsaW5lPTQ5O21kNT0wZjEzYzljZmM3NTI4ODIyM2NmN2VkZDJmM2I5ODVhMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU3NmI3OGFkZDZkNjUyYjQ4ZGNmOTM2MmNlY2U4OGVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0ZTJmYjlmYzY1NmFkY2NjNGQwMWRmZDU1YWI1YTliMDU4OTBlOTYxOTUwNTQzZjY5MmU3ODg1NzI1YzJkNzIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAorICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYwppbmRleCAxMjI1MjhiLi5lOWU0MDE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJUZXN0IHZlY3RvcnMgZm9yIHRoZSBjcnlwdG9ncmFwaHkgcGFja2FnZS4iCitIT01FUEFHRSA9ICJodHRwczovL2NyeXB0b2dyYXBoeS5pby8iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCB8IEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThjMzYxN2RiNGZiNmZhZTAxZjFkMjUzYWI5MTUxMWU0IgpAQCAtNyw4ICs4LDggQEAKICAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gImMzZjJhNjZkNzFhMDQxMzg3OWQ0ZGQwMDFjNTZkZTk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZTRlZWU4YTExZGVlZTVjMmYwMGUzODliNDlkZThjZTI2NDIxMzAyODJkMWNkMGFkZmZiMmY3ZGJlMGFjZGMiCitTUkNfVVJJW21kNXN1bV0gPSAiMWRiNGMwOTA2MmEzYThlMWUyZDFmNWUzZTRkNzUyZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmViODMxYWE3MzY2M2EyMjRmNGQ3NTIwNDgzZWQwMmRhNTQ0NTMzYmIwM2IyNmVjMDdhNWY5YTBkZDA5NDFlMSIKIAogUFlQSV9QQUNLQUdFID0gImNyeXB0b2dyYXBoeV92ZWN0b3JzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18xLjcuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4wLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCmluZGV4IDYwMWIxMmIuLjg3ZmYxNmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUHJvdmlkZXMgY3J5cHRvZ3JhcGhpYyByZWNpcGVzIGFuZCBwcmltaXRpdmVzIHRvIHB5dGhvbiBkZXZlbG9wZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIHwgQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDVlZGUxMjVlZDA4ZDRmZDE0ZWM0NGQzMzRiZGIzODgiCiAKQEAgLTksOCArMTAsOCBAQAogICAgICR7UFlUSE9OX1BOfS1zaXggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFkZTY2ZGU0MzczOTJlZDFiYTY5ODA3Njg2MjYyMDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc4Y2I2OGIzZGEzZDQ5M2ZmZDY4ZjM2ZGIxMWMyOWRlZWU2MjM2NzFkMzI4N2MzZjhkNjg1MTE3ZmZkYTlhOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNGNiZGFiM2ZkYTIyYmUzMWRkM2FlZjI4MDhmNWQyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMDRiYjI0MjUwODZjM2ZlODZmN2JjNDg5MTUyOTBiMTNlNzk4NDk3ODM5ZmJiMThhYjdmNmRmZmNmOThjYzNhIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCkBAIC01NCw0ICs1NSw2IEBACiAgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX1BOfTIuNy9zaXRlLXBhY2thZ2VzLyR7U1JDTkFNRX0vaGF6bWF0L2JpbmRpbmdzLy5kZWJ1ZyBcCiAiCiAKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzIuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMS43LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjAuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKaW5kZXggMWVjZGNjOS4uNTcyY2I5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCkBAIC03LDggKzcsOCBAQAogUFlQSV9QQUNLQUdFID0gIkN5dGhvbiIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjQyYzgxMjg1ZTFiYjgzM2IxNGFiM2Y0Mzk5NjQwODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjE0MWQxZjljMjdhMDdiNWE5M2Y3ZGM1MzM5NDcyMDY3ZTJkNzE0MGQxYzVhOWUyMDExMmE1NjY1Y2E2MDMwNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOTM3NTBiMzQzODJiMDI1ZDY3OGJlYTgxOWI3NDkxYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjg0MGEyYmEyNzA0ZjRmZmI0MGU0NTRjMzZmNzNhZWI0NDBhNDAwNTQ1M2VlOGQ3ZmY2YTAwZDgxMmJhMTc2IgogCiBpbmhlcml0IHB5cGkKIApAQCAtMTcsMyArMTcsMTAgQEAKICAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCiAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKICIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKwlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICdeIyEuKnB5dGhvbicgJHtEfWA7IGRvCisJCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgJHtQWVRIT05fUE59fCcgJFBZVEhTQ1JJUFQKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob25fMC4yNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjcuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjUuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjcuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uLzAwMDEtV29ya2Fyb3VuZC1mb3ItaXNzdWUtMi0xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uLzAwMDEtV29ya2Fyb3VuZC1mb3ItaXNzdWUtMi0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYjg0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb24vMDAwMS1Xb3JrYXJvdW5kLWZvci1pc3N1ZS0yLTEucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAwOTgxZWVlOWYwMTk4YzIwNDVkYzBlYWE3OGEwMDVkMDZmYzdiZmU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIEVkdWFyZG8gTW9yZWlyYSBkb3MgU2FudG9zIDxjZW1zQGNlbXNob3N0LmNvbS5icj4KK0RhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMTg6MjM6NDQgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gV29ya2Fyb3VuZCBmb3IgaXNzdWUgMiBbMV0KKworWzFdIGh0dHBzOi8vcGFndXJlLmlvL3B5dGhvbi1kYWVtb24vaXNzdWUvMgorLS0tCisgdmVyc2lvbi5weSB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS92ZXJzaW9uLnB5IGIvdmVyc2lvbi5weQoraW5kZXggZDU4NDIyYTM3N2VlLi4yOTNlMmQ2NGMyYjcgMTAwNjQ0CistLS0gYS92ZXJzaW9uLnB5CisrKysgYi92ZXJzaW9uLnB5CitAQCAtNjQ4LDkgKzY0OCwxMCBAQCBjbGFzcyBDaGFuZ2Vsb2dBd2FyZURpc3RyaWJ1dGlvbihkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb24sIG9iamVjdCk6CisgCisgICAgIEBscnVfY2FjaGUobWF4c2l6ZT0xMjgpCisgICAgIGRlZiBnZXRfdmVyc2lvbl9pbmZvKHNlbGYpOgorLSAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBnZXRfY2hhbmdlbG9nX3BhdGgoc2VsZikKKy0gICAgICAgIHZlcnNpb25faW5mbyA9IGdlbmVyYXRlX3ZlcnNpb25faW5mb19mcm9tX2NoYW5nZWxvZyhjaGFuZ2Vsb2dfcGF0aCkKKy0gICAgICAgIHJldHVybiB2ZXJzaW9uX2luZm8KKysgICAgICAgIHJldHVybiB7CisrICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMi4xLjInLAorKyAgICAgICAgICAgICdtYWludGFpbmVyJzogJ0JlbiBGaW5uZXknCisrICAgICAgICB9CisgCisgICAgIGRlZiBnZXRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIHZlcnNpb25faW5mbyA9IHNlbGYuZ2V0X3ZlcnNpb25faW5mbygpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzE4ZTJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uXzIuMS4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK0RFU0NSSVBUSU9OID0gIkxpYnJhcnkgdG8gaW1wbGVtZW50IGEgd2VsbC1iZWhhdmVkIFVuaXggZGFlbW9uIHByb2Nlc3MiCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby9weXRob24tZGFlbW9uLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gInB5dGhvbi1kb2N1dGlscyIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi1kb2N1dGlscyBcCisgICAgICAgICAgICAgICAgICBweXRob24tbG9ja2ZpbGUgKD49IDAuMTApIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1yZXNvdXJjZSBcCisiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9BcGFjaGUtMi4wO21kNT04OWFlYTRlMTdkOTlhN2NhY2RiZWVkNDZhMDA5NmIxMCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSVttZDVzdW1dID0gIjljNTczNDNkODFmMmE5NmM1MWNmZmVhYjk4MmIwNGQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2MWM4NTliZTVjMTJhZTdkNDI4NmRjNjk1MWU4N2U5ZTFhNzBhODgyYThiNDFmZDkyNmVmYzFlYzQyMTRmNzMiCisKKyMgRml4IGZvciBidWlsZCBlcnJvciBpbiBZb2N0bzoKKyMgICAgIGkgPSBwLnJmaW5kKCcvJykgKyAxCisjIEF0dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZmluZCcKKyNTID0gIiR7V09SS0RJUn0vcHl0aG9uLWRhZW1vbiIKK1NSQ19VUklfYXBwZW5kID0gIiBcCisgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrYXJvdW5kLWZvci1pc3N1ZS0yLTEucGF0Y2ggXAorIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWRhZW1vbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYwppbmRleCBkMGViYzcwLi5jYTUxMDU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCkBAIC0yLDEwICsyLDEwIEBACiBERVNDUklQVElPTiA9ICJUaGUgZGF0ZXV0aWwgbW9kdWxlIHByb3ZpZGVzIHBvd2VyZnVsIGV4dGVuc2lvbnMgdG8gdGhlIGRhdGV0aW1lIG1vZHVsZSBhdmFpbGFibGUgaW4gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LiIKIEhPTUVQQUdFID0gImh0dHBzOi8vZGF0ZXV0aWwucmVhZHRoZWRvY3Mub3JnIgogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MTQzMGIzM2M5MDBmNDVmOTk5YzQ1OWVlMjljYTQ5MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMxZjcyZDRjYWQzNjc1ZmIwOTE1MzdiOWIyZjMyZGUwIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNmUzOGY5MWU4Yzk0YzE1YTc5Y2UyMjc2OGRmZWNhODciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjJhMmY4ZGYzZDY2Zjg3ODM3M2ZkMDA3MmVhY2Y0ZWU1MjE5NGJhMzAyZTAwMDgyODI4ZTBkMjYzYjA0MThkMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYjM4ZjZiNDUxMWNlZmQ3NjAxNDc0NWJiMGNjNDVhNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OTFjMzhiMmEwMmY1YmIxYmUzZTQ3OTM4NjZjOGRmNDljN2QxOWJhYWJmOWMxYmFkNjI1NDdlMGI0ODY2YWNhIgogCiBQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWRhdGV1dGlsIgogaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjYuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi42LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCmluZGV4IGFlYWUyMzEuLjg1OWY5NzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yLmluYwpAQCAtOSw4ICs5LDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTg5M2Y4OTY0MTM4MjYwOTZjZTUyNzBjNzAwYTQ5OGZkIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzM2NDRjOGYwYmQ0OTgzZDFiNmEzNGI0OWFkZWMwYWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTUzZDZiZjA4MmIxMDBmNDMyMjljZjU0N2Y0Zjk3Zjk3ZTk3MGY1YWQ2NDVlZTc2MDFkNTVmZjg3YWZkZmU3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMGY3ZjRmZTAwYWUyZGRlOTM0OTRkOTBjMTkyY2Y4YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2I2NGQzOGNiODAwMjk3MTcxMGM4ODk5ZmJkZmI4NTlhMjNhMzY0YjdjOTlkYWIxOWQxZjcxOWMyYmExNmI1IgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuMC4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuMS4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28tc291dGguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTkwNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoLmluYwpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIk1pZ3JhdGlvbnMgZm9yIERqYW5nbyIKK0RFU0NSSVBUSU9OID0gIlNvdXRoIGlzIGFuIGludGVsbGlnZW50IGRhdGFiYXNlIG1pZ3JhdGlvbnMgbGlicmFyeSBmb3IgdGhlIERqYW5nbyB3ZWIgZnJhbWV3b3JrLiBJdCBpcyBkYXRhYmFzZS1pbmRlcGVuZGVudCBhbmQgRFZDUy1mcmllbmRseSwgYXMgd2VsbCBhcyBhIHdob2xlIGhvc3Qgb2Ygb3RoZXIgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXRoLmFlcmFjb2RlLm9yZy8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9MTc7ZW5kbGluZT0xODttZDU9MjE1NWQ4YWUyMWU3YzIzMTAxZDVmZWJhYzY5NmIyN2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNzZhOTc1OGIyMDExYmMzYjZjMzlmODgxYmJhMmY2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzYwYmQzMTg5OGY5ZGY1OWY2ZmFhNzg2NTUxMDY1YmJhNDViMzVlN2VlM2MzOWIzODFiNGZiZmVmNzM5MmY0IgorCitQWVBJX1BBQ0tBR0UgPSAiU291dGgiCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRqYW5nbyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoXzEuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoXzEuMC4yLmJiCmluZGV4IDNhMjc3NTguLjM1N2I3NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28tc291dGhfMS4wLjIuYmIKQEAgLTEsMTcgKzEsMiBAQAotU1VNTUFSWSA9ICJNaWdyYXRpb25zIGZvciBEamFuZ28iCi1ERVNDUklQVElPTiA9ICJTb3V0aCBpcyBhbiBpbnRlbGxpZ2VudCBkYXRhYmFzZSBtaWdyYXRpb25zIGxpYnJhcnkgZm9yIHRoZSBEamFuZ28gd2ViIGZyYW1ld29yay4gSXQgaXMgZGF0YWJhc2UtaW5kZXBlbmRlbnQgYW5kIERWQ1MtZnJpZW5kbHksIGFzIHdlbGwgYXMgYSB3aG9sZSBob3N0IG9mIG90aGVyIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3V0aC5hZXJhY29kZS5vcmcvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTE3O2VuZGxpbmU9MTg7bWQ1PTIxNTVkOGFlMjFlN2MyMzEwMWQ1ZmViYWM2OTZiMjdlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzc2YTk3NThiMjAxMWJjM2I2YzM5Zjg4MWJiYTJmNjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM2MGJkMzE4OThmOWRmNTlmNmZhYTc4NjU1MTA2NWJiYTQ1YjM1ZTdlZTNjMzliMzgxYjRmYmZlZjczOTJmNCIKLQotUFlQSV9QQUNLQUdFID0gIlNvdXRoIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRqYW5nbyBcCi0gICAgIgorcmVxdWlyZSBweXRob24tZGphbmdvLXNvdXRoLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGZkNzBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLmluYwpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkEgaGlnaC1sZXZlbCBQeXRob24gV2ViIGZyYW1ld29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGphbmdvcHJvamVjdC5jb20vIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mMDllYjQ3MjA2NjE0YTQ5NTRjNTFkYjhhOTQ4NDBmYSIKKworU1JDX1VSSVttZDVzdW1dID0gIjhjZWYwZDQyYWFiYWNiYzQxNGVjNGZiYmI2MDU2ZjNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4MzY4NzgxNjJkZmRmODY1NDkyYmFjZmRmZjAzMjFlNGVlOGYxZTdkNTFkOTMxOTI1NDYwMDBiNTQ5ODJiMjkiCisKK1BZUElfUEFDS0FHRSA9ICJEamFuZ28iCitpbmhlcml0IHB5cGkKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGphbmdvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWIgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tcGlwIFwKKyAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjEwLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTI0MmRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjEwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkEgaGlnaC1sZXZlbCBQeXRob24gV2ViIGZyYW1ld29yayIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGphbmdvcHJvamVjdC5jb20vIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mMDllYjQ3MjA2NjE0YTQ5NTRjNTFkYjhhOTQ4NDBmYSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmY2UwMmYxZTY0NjFmZWMyMWYxZjE1ZWE3NDg5OTI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkYjg5Mzc0YjY5MWI5YzhiMDU3NjMyYTZjZDY0YjE4ZDA4ZGIyZjRkNjNiNGQ0YWY2MDI0MjY3YWI5NjVmOGIiCi0KLVBZUElfUEFDS0FHRSA9ICJEamFuZ28iCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kamFuZ28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWltcG9ydGxpYiBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1waXAgXAotICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkNzcxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjUuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1kamFuZ28uaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvY3V0aWxzXzAuMTRyYzIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjE0cmMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NDM2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjE0cmMyLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MzVhMjNkNDJiNjE1NDcwNTgzNTYzMTMyODcyYzk3ZDYiCisKK0RFUEVORFMgPSAicHl0aG9uIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9kb2N1dGlscy9kb2N1dGlscy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMmY0YmVlNjQ1MTk1ODI1MmY3YmVjNzFmMThiMDViZTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2NhZWUwYmNiMmE0OWZkZjI0ZmNmYTcwODQ5YTYwYWJiN2ExODFhYTY4YjAzMGY3Y2I3NDk0MDk2MTgxODMwYyIKKworUyA9ICIke1dPUktESVJ9L2RvY3V0aWxzLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlscworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiCmluZGV4IDMxZDIxNDcuLmQ1MGI1YzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVudW0zNF8xLjEuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbnVtMzRfMS4xLjYuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gImJhY2twb3J0IG9mIFB5dGhvbiAzLjQncyBlbnVtIHBhY2thZ2UiCitIT01FUEFHRSA9ICJodHRwczovL2JpdGJ1Y2tldC5vcmcvc3RvbmVsZWFmL2VudW0zNCIKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZW51bS9MSUNFTlNFO21kNT0wYTk3YTUzYTUxNDU2NGMyMGVmZDdiMmU4OTc2Yzg3ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMC42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0ODI2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGV2ZGV2IGxpYiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ndmFsa292L3B5dGhvbi1ldmRldiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MThkZWJkZGJiM2Y1MmM2NjFhMTI5NzI0YTg4M2E4ZTIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MGM4YzAxYjMzNzg3NGM2NDYzODk0OGE0ZDdjYjQwNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MjY4NzQ0ZDg0OTNjMjczNjE0MDM2Y2Y2NDIzZmExNzU5NTJjNjRmYzFkOGQyNjUyMTBlNDhhNDQzN2E2YWYyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotICAgICR7UFlUSE9OX1BOfS1mY250bCBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzAuNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMC43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg3NWRhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzAuNy4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGV2ZGV2IGxpYiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ndmFsa292L3B5dGhvbi1ldmRldiIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MThkZWJkZGJiM2Y1MmM2NjFhMTI5NzI0YTg4M2E4ZTIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjN2U4NTVhZTlmOTdmODY5YTU5ZTc1YjI5ZjA1Y2U3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1N2VkYWZjNDY5YTQxNGY1OGI1MWFmMWJmYjllZTJiYWJiOWY2MjZkZDJkZjUzMGQ3MWMxMTc2ODcxODUwYWExIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICR7UFlUSE9OX1BOfS1mY250bCBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKaW5kZXggNmQ1NDgzNy4uZTExMjgzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKQEAgLTMsMTAgKzMsMTAgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9taXRzdWhpa28vZmxhc2svIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ZsYXNrX3B5bW9uZ28vd3JhcHBlcnMucHk7c3RhcnRsaW5lPTE7ZW5kbGluZT0yNDttZDU9ZGZmOTk4ZDVhODQ2OTUwMzYxMmVlNzc1N2YzYTIwNTIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9mbGFza19weW1vbmdvL3dyYXBwZXJzLnB5O3N0YXJ0bGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTQyNGM0ZTEwNDdkMjhlMDFiNGU0NjM0YTA2OWMwMTlkIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2JmNWZiY2QyMjcxOWQ4MzkzZTQ4MWJjYWMzNmJlMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzU4NjJkYWVjZTFjOTc5YTllYWI1ZjlkMWUzMmViNzgxNzc1ODQyMjczYjYyOWFlNWQxY2IyOGU2OTUzZGY3OCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkN2ExYjcxN2YyNzE1NGUxZjNhMzU1ZjhlYzI0NjdkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYmFhYTJiYTUxMDdkNzJiM2E4YmQ0YjVjMGM4ODgxMzE2ZTM1MzQwYWQxYWU5NzljYzEzZjFmM2M4ODQzYjNkIgogCiBQWVBJX1BBQ0tBR0UgPSAiRmxhc2stUHlNb25nbyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nb18wLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMC41LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMC40LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMC41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExOTBmMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBZGRzIFNRTEFsY2hlbXkgc3VwcG9ydCB0byB5b3VyIEZsYXNrIGFwcGxpY2F0aW9uLiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWVkMWI4Y2M3NDE1MTVhODM1YTdmNmJmMmY2MmVmNGEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOTNlNmFmMzg5YWZhYzY2NjY3MzNlMzY5YzA2Yzc5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMGQ4MjQxZWZiYTcyM2Q3Yjg3OGY3MzU1MGY1ZDNjMGZiYjA0MjQxNjEyM2I1MmIzNjY0MGI3NDkxZmEyMDhiIgotCi1QWVBJX1BBQ0tBR0UgPSAiRmxhc2stU1FMQWxjaGVteSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXNxbGFsY2hlbXkgJHtQWVRIT05fUE59LWZsYXNrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5OTc2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4zLjAuYmIKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiQWRkcyBTUUxBbGNoZW15IHN1cHBvcnQgdG8geW91ciBGbGFzayBhcHBsaWNhdGlvbi4iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVlZDFiOGNjNzQxNTE1YTgzNWE3ZjZiZjJmNjJlZjRhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzg2NDQ5ZjQ0ZTkwZTk5NjE0Mjg3MmFjNGI5N2Y3ZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGExOWZmNjJlMzFmODI4MjViNTQ2NzgxMWM3NmUyYTFjNjBiYmE5MjdlMTc1ZmUwOTFhNmY3MzkwNjNkZDgyOSIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLVNRTEFsY2hlbXkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1zcWxhbGNoZW15ICR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYwppbmRleCAwNDkzNWE2Li43NmI1ZmJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2suaW5jCkBAIC02LDggKzYsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xOTg2NmI3NmIwNTRhYjMwYzI3MGMwZWI5ZDdlNDNkNyIKIAotU1JDX1VSSVttZDVzdW1dID0gImMxZDMwZjUxY2ZmNGEzOGY5NDU0YjIzMzI4YTE1YzVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZTgwM2NkYmUzMjZhNjFlYmQ1YzVkMzUzOTU5Mzk3Yzg1ZjgyOWJlYzYxMGQ1OWNiNjM1YzlmOTdkN2NhOGIiCitTUkNfVVJJW21kNXN1bV0gPSAiOTcyNzhkZmRhZmRhOThiYTc5MDJlODkwYjAyODkxNzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDlmNDQ0NjEyMzdiNjllY2Q5MDFjYzdjZTY2ZmVlYTAzMTliOTE1ODc0M2RkMjdhMjg5OTk2MmFiMjE0ZGFjMSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2tfMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzAuMTIuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2tfMC4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2tfMC4xMi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODg5Y2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50LmluYwpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkEgY29yb3V0aW5lLWJhc2VkIFB5dGhvbiBuZXR3b3JraW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJnZXZlbnQgaXMgYSBjb3JvdXRpbmUtYmFzZWQgUHl0aG9uIG5ldHdvcmtpbmcgbGlicmFyeSB0aGF0IHVzZXMgZ3JlZW5sZXQgdG8gcHJvdmlkZSBcCithIGhpZ2gtbGV2ZWwgc3luY2hyb25vdXMgQVBJIG9uIHRvcCBvZiB0aGUgbGliZXZlbnQgZXZlbnQgbG9vcC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdldmVudC5vcmciCitMSUNFTlNFID0gIk1JVCAmIFB5dGhvbi0yLjAgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGU5OWFhYzI3YjQ3MGMyOWM2YzMwOWUwYzI3OWI2NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9OT1RJQ0U7bWQ1PTU5NjZjZDJjNjU4MjY1NmQyOGFiM2MzM2RhMzg2MGY4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlcHMvbGliZXYvTElDRU5TRTttZDU9ZDZhZDQxNmFmZDA0MGM5MDY5OGVkY2RmMWNiZWUzNDciCitERVBFTkRTICs9ICJsaWJldmVudCIKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1ncmVlbmxldCIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1ncmVlbmxldCBcCisJCSAgJHtQWVRIT05fUE59LW1pbWUgXAorCQkgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorCQkgICR7UFlUSE9OX1BOfS1yZSBcCisJCSAiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1nZXZlbnQ6IgorCitTUkNfVVJJX2FwcGVuZCA9ICIgXAorICAgIGZpbGU6Ly9saWJldi1jb25mLnBhdGNoO3BhdGNoPTE7cG51bT0xIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjdmMGJhZjM1NTM4NGZlNWZmMmVjZjY2ODUzNDIyNTU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3OTFjOGFlOWM1N2Q2ZjE1MzM1NDczNmUxY2NhYjFlMmJhZjZjOGQ5YWU1YTc3YTlhYzkwZjQxZTI5NjZiMmQiCisKKyMgVGhlIHB5dGhvbi1nZXZlbnQgaGFzIG5vIGF1dG9yZWNvbmYgYWJpbGl0eQorIyBhbmQgdGhlIGxvZ2ljIGZvciBkZXRlY3RpbmcgYSBjcm9zcyBjb21waWxlIGlzIGZsYXdlZAorIyBzbyBhbHdheXMgZm9yY2UgYSBjcm9zcyBjb21waWxlCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXNlZCAtaSAtZSAncy9eY3Jvc3NfY29tcGlsaW5nPW5vL2Nyb3NzX2NvbXBpbGluZz15ZXMvJyAke1N9L2RlcHMvbGliZXYvY29uZmlndXJlCisJc2VkIC1pIC1lICdzL15jcm9zc19jb21waWxpbmc9bm8vY3Jvc3NfY29tcGlsaW5nPXllcy8nICR7U30vZGVwcy9jLWFyZXMvY29uZmlndXJlCit9CisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTNmNDhmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb3JvdXRpbmUtYmFzZWQgUHl0aG9uIG5ldHdvcmtpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImdldmVudCBpcyBhIGNvcm91dGluZS1iYXNlZCBQeXRob24gbmV0d29ya2luZyBsaWJyYXJ5IHRoYXQgdXNlcyBncmVlbmxldCB0byBwcm92aWRlIFwKLWEgaGlnaC1sZXZlbCBzeW5jaHJvbm91cyBBUEkgb24gdG9wIG9mIHRoZSBsaWJldmVudCBldmVudCBsb29wLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2V2ZW50Lm9yZyIKLUxJQ0VOU0UgPSAiTUlUICYgUHl0aG9uLTIuMCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkYmIzM2QwMGUxZmQzMWM3MDQxNDYwYTgxYWMwYmQyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL05PVElDRTttZDU9NTk2NmNkMmM2NTgyNjU2ZDI4YWIzYzMzZGEzODYwZjggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVwcy9saWJldi9MSUNFTlNFO21kNT1kNmFkNDE2YWZkMDQwYzkwNjk4ZWRjZGYxY2JlZTM0NyIKLURFUEVORFMgKz0gInB5dGhvbi1ncmVlbmxldCBsaWJldmVudCIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tZ3JlZW5sZXQgcHl0aG9uLW1pbWUgcHl0aG9uLXBwcmludCBweXRob24tcmUiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovL2xpYmV2LWNvbmYucGF0Y2g7cGF0Y2g9MTtwbnVtPTEgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjcwMGEyNDMzYzhlMDYzNTQyNWU2Nzk4NzYwZWZjODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RlMzAwZDBlMzJjMzEzMTFlNDI2ZTRkNWQ3M2IzNjc3N2VkOTljMmJhYzNmOGZiYWQ5MzllZWIyYzI5ZmE3YyIKLQotIyBUaGUgcHl0aG9uLWdldmVudCBoYXMgbm8gYXV0b3JlY29uZiBhYmlsaXR5Ci0jIGFuZCB0aGUgbG9naWMgZm9yIGRldGVjdGluZyBhIGNyb3NzIGNvbXBpbGUgaXMgZmxhd2VkCi0jIHNvIGFsd2F5cyBmb3JjZSBhIGNyb3NzIGNvbXBpbGUKLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzL15jcm9zc19jb21waWxpbmc9bm8vY3Jvc3NfY29tcGlsaW5nPXllcy8nICR7U30vZGVwcy9saWJldi9jb25maWd1cmUKLQlzZWQgLWkgLWUgJ3MvXmNyb3NzX2NvbXBpbGluZz1uby9jcm9zc19jb21waWxpbmc9eWVzLycgJHtTfS9kZXBzL2MtYXJlcy9jb25maWd1cmUKLX0KLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTdjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS4yLjIuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHB5dGhvbi1nZXZlbnQuaW5jCitpbmhlcml0IHNldHVwdG9vbHMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ODIwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldC5pbmMKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIlB5dGhvbiBsaWdodHdlaWdodCBpbi1wcm9jZXNzIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmciCitMSUNFTlNFID0gIk1JVCAmIFBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAzMTQzZDdhMWE5ZjVkOGEwZmVlODI1ZjI0Y2E5YzM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuUFNGO21kNT1jMTA2OTMxZDk0MjllZGEwNDkyNjE3ZjAzN2I4ZjY5YSIKKworU1JDX1VSSVttZDVzdW1dID0gImU4NjM3NjQ3ZDU4YTI2YzRhMWY1MWNhMzkzZTUzYzAwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0Yzk5YzYwMTBhNWQxNTNkNDgxZmRhZjYzYjhhMDc4MjgyNWMwNzIxNTA2ZDg4MDQwM2EzYjliODJhZTM0N2UiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjEyLmJiCmluZGV4IDRmYzJjMWQuLmMxNDk3NmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTIuYmIKQEAgLTEsMTAgKzEsMiBAQAotU1VNTUFSWSA9ICJQeXRob24gbGlnaHR3ZWlnaHQgaW4tcHJvY2VzcyBjb25jdXJyZW50IHByb2dyYW1taW5nIgotTElDRU5TRSA9ICJNSVQgJiBQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMzE0M2Q3YTFhOWY1ZDhhMGZlZTgyNWYyNGNhOWMzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlBTRjttZDU9YzEwNjkzMWQ5NDI5ZWRhMDQ5MjYxN2YwMzdiOGY2OWEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlODYzNzY0N2Q1OGEyNmM0YTFmNTFjYTM5M2U1M2MwMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGM5OWM2MDEwYTVkMTUzZDQ4MWZkYWY2M2I4YTA3ODI4MjVjMDcyMTUwNmQ4ODA0MDNhM2I5YjgyYWUzNDdlIgotCi1pbmhlcml0IHB5cGkgZGlzdHV0aWxzCi0KK2luaGVyaXQgZGlzdHV0aWxzCityZXF1aXJlIHB5dGhvbi1ncmVlbmxldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIxMzZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuNi4zLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkdvb2dsZSBnUlBDIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncnBjLmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gInB5dGhvbi1ncnBjaW8iCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tZ3JwY2lvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitTUkNfVVJJW21kNXN1bV0gPSAiODM1ZjE5MTQyZTI2Y2I3YWQ2OGNlYzNhMDgzZWNkYTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdiMzExMGNlZDUwYTE4ZjFiMmJmN2RhNThlZDAxMWY1NzI3OGI0ODA4NGVkODAxM2M2N2EzNGQ0MmE1Y2EzNyIKKworIyBGb3IgdXNhZ2UgaW4gb3RoZXIgcmVjaXBpZXMgd2hlbiBjb21waWxpbmcgcHJvdG9idWYgZmlsZXMgKGUuZy4gYnkgZ3JwY2lvLXRvb2xzKQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmJjNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGIwMmJlNzRhMmVmZjhhYmM2MTJlZjg0ZjMwZTBmYmNlNmE3ZjY1ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDA5OjA0OjA3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBEbyBub3QgbWl4IEMgYW5kIEMrKyBjb21waWxlciBvcHRpb25zCisKK0VYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgdXNlZCBib3RoIHdpdGggQ0MgYW5kIENYWAorc28gdXNpbmcgLXN0ZD1jKysxMSBvciAtc3RkPWdudTk5IHRvZ2V0aGVyIHdpbGwgY2F1c2UKK2J1aWxkIHRpbWUgZXJyb3JzIGVzcGNpYWxseSB3aXRoIGNsYW5nCisKK2Vycm9yOiBpbnZhbGlkIGFyZ3VtZW50ICctc3RkPWdudTk5JyBub3QgYWxsb3dlZCB3aXRoICdDKysnCisKK2djYzcgKCBkZWZhdWx0cyBhcmUgLXN0ZD1nbnUxMSBhbmQgLXN0ZD1nbnUrKzE0ICkKKyBhcyB3ZWxsIGNsYW5nIGRlZmF1bHQgdG8gdGhlc2Ugc3RhbmRhcmRzIG1vZGUgb3IgbmV3ZXIKK2FueXdheQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2V0dXAucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCBjYjg1MjczLi5mNzk4NzhkIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMTE2LDcgKzExNiw3IEBAIGlmIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgTm9uZToKKyAgIGVsaWYgJ3dpbjMyJyBpbiBzeXMucGxhdGZvcm06CisgICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtRF9QWVRIT05fTVNWQycKKyAgIGVsaWYgImxpbnV4IiBpbiBzeXMucGxhdGZvcm06CistICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtc3RkPWMrKzExIC1zdGQ9Z251OTkgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKKysgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdiAtZm5vLWV4Y2VwdGlvbnMnCisgICBlbGlmICJkYXJ3aW4iIGluIHN5cy5wbGF0Zm9ybToKKyAgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdicKKyAKKy0tIAorMi4xMy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTU1ZjQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuNi4wLmJiCkBAIC0wLDAgKzEsMjUgQEAKK0RFU0NSSVBUSU9OID0gIkdvb2dsZSBnUlBDIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncnBjLmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gInB5dGhvbi1wcm90b2J1ZiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2ggXAorICAgICAgICAgICAiCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tZW51bTM0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1mdXR1cmVzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1wcm90b2J1ZiBcCisgICAgICAgICAgICAgICAgICBweXRob24tc2V0dXB0b29scyBcCisgICAgICAgICAgICAgICAgICBweXRob24tc2l4IFwKKyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSVttZDVzdW1dID0gImM5MWI4YzEwNWZmNDE2M2I0MTc5MGYzYjYzZGI5MmUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjZDc5M2Q1MTVlYzUzNTg3YTg5NjhmMmE1MzY0N2YxNDQ5NzYzYWQwNmJlMGQyODdlM2MxZTQ3NDE4ZTFlNTAiCisKKyMgRm9yIHVzYWdlIGluIG90aGVyIHJlY2lwZXMgd2hlbiBjb21waWxpbmcgcHJvdG9idWYgZmlsZXMgKGUuZy4gYnkgZ3JwY2lvLXRvb2xzKQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1OWUwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliLmluYwpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIkhUTUwgcGFyc2VyIGJhc2VkIG9uIHRoZSBXSEFUV0cgSFRNTCBzcGVjaWZjYXRpb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiYTVhZGE5ZTZmZWFkMWZkYzMyZjQzYzlmMTBiYTdjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODU3OGU0ZTNhMzQxNDM2Y2I5NzQzYTllNGEyOTkyMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWU3NDdjMGZmZDMwMjhkMjcyMjA2MTkzNmI1YzY1ZWU0ZmUxM2M4ZTQ2MTM1MTliNDQ0NzEyM2ZjNDU0NjI5OCIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LXdlYmVuY29kaW5ncyBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMC45OTk5OTk5OTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgppbmRleCBkMGY3YjU2Li5mNTk0MWEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgpAQCAtMSwxNCArMSwyIEBACi1TVU1NQVJZID0gIkhUTUwgcGFyc2VyIGJhc2VkIG9uIHRoZSBXSEFUV0cgSFRNTCBzcGVjaWZjYXRpb24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiYTVhZGE5ZTZmZWFkMWZkYzMyZjQzYzlmMTBiYTdjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODU3OGU0ZTNhMzQxNDM2Y2I5NzQzYTllNGEyOTkyMzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWU3NDdjMGZmZDMwMjhkMjcyMjA2MTkzNmI1YzY1ZWU0ZmUxM2M4ZTQ2MTM1MTliNDQ0NzEyM2ZjNDU0NjI5OCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0td2ViZW5jb2RpbmdzIFwKLSAgICAke1BZVEhPTl9QTn0teG1sIFwKLSAgICAiCitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWh0bWw1bGliLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hLmluYwppbmRleCBkMDk5YzBmLi5iMWQwZDE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgUHl0aG9uLTIuMCAmIFVuaWNvZGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YzliYTVhY2Q4Mjk1Nzk0OTJmZDVlYjMwNmM3YTA1NjUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYzFkOTkyYmVmNzNlODgyNGRiNDExYmI1ZDIxZjAxMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzY2I1Y2UwODA0NmM0ZTNhNTYwZmMwMmYxMzhkMGFjNjNlMDBmOGNlNTkwMWE1NmIzMmVjOGI3OTk0MDgyYWFiIgorU1JDX1VSSVttZDVzdW1dID0gImM3MDZlMjc5MGIwMTZiZDBlZDRlZGQyZDRiYTRkMTQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjNmE1ZGUzMDg5MDA5ZTNkYTdjNWRkZTY0YTE0MWRiYzg1NTFkNWI3ZjZjZjRlZDdjMjU2OGQwY2M1MjBhOGYiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCiAgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmFfMi42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYV8yLjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKaW5kZXggZGQ0YjgzYy4uNDVkYTc1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKQEAgLTEsOCArMSw5IEBACiBTVU1NQVJZID0gIlNpbXBsZSBtb2R1bGUgdG8gcGFyc2UgSVNPIDg2MDEgZGF0ZXMiCitIT01FUEFHRSA9ICJodHRwOi8vcHlpc284NjAxLnJlYWR0aGVkb2NzLm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIwNTYyNWYyMzM2ZmEwMjRlOGQ1N2U2NWM2NTk1ODQ0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjA2ZDExY2QxNGE2NDA5NmY5MDcwODYwNDRmMGZlMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThmYjUyZjc4ODgwYWUwNjMzMzZjOTRlYjViODdiMTgxZTZhMGNjMzNhNmMwMDg1MTFiYWM5YTZlOTgwZWYzMCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZGU5NDBmNjkxYzVlYTc1OWZiMjU0Mzg0YzhkZGNmNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWM0YjIwZTFmMzhhYTVjZjEwOWRkY2QzOTY0N2FjNDE5ZjkyODUxMmM4NjlkYzAxZDVjNzA5OGVkZGVkZTgyIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc284NjAxXzAuMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDFfMC4xLjEyLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc284NjAxXzAuMS4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMV8wLjEuMTIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODg0YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnQuaW5jCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gdXRpbGl0eSAvIGxpYnJhcnkgdG8gc29ydCBQeXRob24gaW1wb3J0cy4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2lzb3J0IgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNDkxNWEyY2U2MGU2ZmUzZGJjYmY1OTgyZGVlZjliNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY0NjE3MmQzYTRlMmU1M2U3MDE2ZTY2M2NjN2E4YjUzOGJlYzUyNWMzNjY3NWZjZmQyNzY3ZGYzMGIzOTgzIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTQ2ZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4yLjE1LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1pc29ydC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNjVkYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4yLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIHV0aWxpdHkgLyBsaWJyYXJ5IHRvIHNvcnQgUHl0aG9uIGltcG9ydHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9pc29ydCIKLUxJQ0VOU0UgPSAiTUlUIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzE0ODllYmQ5MzY0MjlkNWJkYTJhZjdhZTY2MmVkNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZiMjAwNDRmNDNjZjZlNjc4M2ZlOTVkMDU0ZTc1NGFjY2E1MmRkNDNmYmU5Mjc3YzFiZGZmODM1NTM3ZWE1YyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKaW5kZXggY2Y4MDEwZS4uMzVjYmIwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTIuaW5jCkBAIC00LDggKzQsOCBAQAogCiBQWVBJX1BBQ0tBR0UgPSAiSmluamEyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOWU1NWYwZGI2NjIwZGQ5OWExYjM2NjE4M2E5NDI3MGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzAyYTI0ZDk5MmY4NTZmYThkNWE3YTM2ZGI2MTI4MTk4ZDBjMjFlMWRhMzQ0NDhjYTIzNmM0MmU5MjM4NDgyNSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NDExNTM3MzI0YjRkYmEwOTU2YWFhODEwOWYzYzc3YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGFhMDFhMjEyY2Q2ZDY0MTQwMWNiMDFiNjA1ZjRhNGQ5ZjM3YmZjOTMwNDNkN2Y3NjBlYzcwZmI5OWZmOWZmIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1waWNrbGUgJHtQWVRIT05fUE59LWNyeXB0IFwKICAgICAke1BZVEhPTl9QTn0tbWF0aCAke1BZVEhPTl9QTn0tbmV0Y2xpZW50ICR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjkuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuOS41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi45LjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMTRiZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZICA9ICJBcHBsaW5nIEpTT04gcGF0Y2hlcyBpbiBQeXRob24gMi42KyBhbmQgMy54IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBhdGNoIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmIxNWM4NDNiN2EzMjkxMzBmNGUyNjZhMjgxZWJiMyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotU1JDX1VSSVttZDVzdW1dID0gIjgxOGQzNmUwNWQ2OGJhOTBjYTJiMjY1OTdiZDgyOTc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlMjNjZDA4YjJmNzI0NmY4ZjI0NzUzNjM1MDFlNzQwYzRlZjkzZjA4ZjJhM2I3YjliY2ZhYzBjYzM3ZmNlYjEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tanNvbiAke1BZVEhPTl9QTn0tanNvbnBvaW50ZXIgJHtQWVRIT05fUE59LW5ldGNsaWVudCAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXN0cmluZ29sZCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmM2MWE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTYuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSAgPSAiQXBwbGluZyBKU09OIHBhdGNoZXMgaW4gUHl0aG9uIDIuNisgYW5kIDMueCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVmYW5rb2VnbC9weXRob24tanNvbi1wYXRjaCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJiMTVjODQzYjdhMzI5MTMwZjRlMjY2YTI4MWViYjMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZWYxY2ViMDBkY2Y5OTJjOWU0MzYxMWY2OThmOTI3OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDI1YzI4YTA4Y2U3NDc0MjllZTc0NmJiMjE3OTZjM2I2NDE3ZWM4MjI4OGY4ZmU2NTE0ZGI3Mzk4ZjJhZjhhIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWpzb25wb2ludGVyICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWM4NzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzEuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIlJlc29sdmUgSlNPTiBQb2ludGVycyBpbiBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RlZmFua29lZ2wvcHl0aG9uLWpzb24tcG9pbnRlciIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJiMTVjODQzYjdhMzI5MTMwZjRlMjY2YTI4MWViYjMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNjhjMGM2YWQ2ODg5ZTljOTRlYzBmZWJhNzE5ZTQ1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmE1ZGNhYzM1ZWVmZDUzZTI1ZDZjZDRjMzEwZDk2M2M5ZjBiODk3NjQxNzcyY2Q2ZTVlN2I4OWRmN2VlMGIxIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXJlIHB5dGhvbi1qc29uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXJfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzEuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVjMWFhOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzEuMTIuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJSZXNvbHZlIEpTT04gUG9pbnRlcnMgaW4gUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBvaW50ZXIiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitTUkNfVVJJW21kNXN1bV0gPSAiZWFhYWQ3OWU5ODNkNThlY2JlZTViNGEzMjY3MjM3NzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODE5YjZkZDRmZDBhMThhYzIxOWUwMmEwMTE3ZjI0YjJkMzEyOTZiMGM0NzVjMzM4NjJjZmE5YTE2MTZkNjJjMyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1yZSBweXRob24tanNvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKaW5kZXggNzQ5MzNmNS4uZGI1N2M2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKQEAgLTUsNiArNSw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNTBjNmI2OWEzNzNhOGI1NWZmMWUwZWM2ZTc4ZjEzZjQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZmNWYzMTgwODcwODM2Y2FlNDBmMDZmYTEwNDE5ZjU1NzIwODE3NWYxM2FkN2JjMjZjYWE3N2JlYjFmNmUwMiIKIAorREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXZjdmVyc2lvbmVyLW5hdGl2ZSIKKwogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWNvcmUgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNkMmVhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5LmluYwpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkEgZmFzdCBhbmQgdGhvcm91Z2ggbGF6eSBvYmplY3QgcHJveHkiCitIT01FUEFHRSA9ICJodHRwczovL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5yZWFkdGhlZG9jcy5pby8iCitMSUNFTlNFID0gIkJTRCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWM2ODBkZjQyZDhhZDU2NDI3YTgzMzA4ODE3NjU4Y2MiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMTI4MTUyYjc2ZWI1YjliYTc1OTUwNDkzNjEzOWZkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjkxYmUzNjlmOTQ1ZjEwZDNhNDlmNWY5YmU4YjNkMGI5M2E0YzJiZThmOGE1YjgzYjA1NzFiODEyM2UwYTdhIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZDljZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkEgZmFzdCBhbmQgdGhvcm91Z2ggbGF6eSBvYmplY3QgcHJveHkiCi1IT01FUEFHRSA9ICJodHRwczovL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5yZWFkdGhlZG9jcy5pby8iCi1MSUNFTlNFID0gIkJTRCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTZiMTY3M2QxMDE2N2NiMzFiNzhlNjRmNTYxYzMyODYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NDFiNTU5MmJjMTJjNmVmN2U0OGVkMWQ3YTVmOTA2NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGQ0Y2YxYzc0Mjc5YzM0OWNiN2I5YzU0YTJlZmE1MTA1ODU0ZjU3ZGU1ZjJkMzU4MjllZTkzNjMxNTY0MjY4IgotCi1pbmhlcml0IHNldHVwdG9vbHMgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eV8xLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjRkNjBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWxhenktb2JqZWN0LXByb3h5LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzIuNC4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1YWQxZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzIuNC4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEyIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotU1VNTUFSWSA9ICJQcm92aWRlcyBhIHdyYXBwZXIgaW4gUHl0aG9uIHRvIExEQVAiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIExEQVAgXAotKExpZ2h0d2VpZ2h0IERpcmVjdG9yeSBBY2Nlc3MgUHJvdG9jb2wpIHRocm91Z2ggUHl0aG9uIG9wZXJhdGlvbnMgXAotaW5zdGVhZCBvZiBDIEFQSS4gVGhlIG1vZHVsZSBtYWlubHkgYWN0cyBhcyBhIHdyYXBwZXIgZm9yIHRoZSBcCi1PcGVuTERBUCAyLnggbGlicmFyaWVzLiBFcnJvcnMgd2lsbCBhcHBlYXIgYXMgZXhjZXB0aW9ucy4iCi0KLUxJQ0VOU0UgPSAiUFNGIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tbGRhcC5vcmcvIgotREVQRU5EUyA9ICJweXRob24gb3BlbmxkYXAgY3lydXMtc2FzbCIKLQotUFlQSV9QQUNLQUdFID0gInB5dGhvbi1sZGFwIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YTQxYzgyZWRmZmEwNDkxMjAwN2NhZTFkMjBjYWM1NTUiCi1TUkNfVVJJW21kNXN1bV0gPSAiN2M0NmM4YTA0YWNjMjI3YTc3OGM3OTAwYzg3Y2RmYzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTgxMGYxYjVhOWFlOTI1NWRmOTlmYjljMmRjYWI3MzUyZmVkMzI1Njg3ZWZkYTU2YzBmYWFlMWE4MmM1ZTNjYiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOl5saWJyYXJ5X2RpcnMgPS4qOjonIHNldHVwLmNmZwotICAgIHNlZCAtaSAtZSAnczpeaW5jbHVkZV9kaXJzID0uKjppbmNsdWRlX2RpcnMgPSA9L3Vzci9pbmNsdWRlL3Nhc2wvOicgc2V0dXAuY2ZnCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgJHtQWVRIT05fUE59LXBwcmludCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxNTc2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxvY2tmaWxlXzAuMTIuMi5iYgpAQCAtMCwwICsxLDEzIEBACitERVNDUklQVElPTiA9ICJQbGF0Zm9ybS1pbmRlcGVuZGVudCBmaWxlIGxvY2tpbmcgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL2xhdW5jaHBhZC5uZXQvcHlsb2NrZmlsZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tdGhyZWFkaW5nIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitTUkNfVVJJW21kNXN1bV0gPSAiYTZhMWE4Mjk1N2EyM2FmZGY0NGNmZGQwMzliNjVmZjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFlZDAyZGUwM2NiYTI0ZWZhYmNkNjAwYjMwNTQwMTQwNjM0ZmMwNmNmYTYwMzgyMmQ1MDhkNTM2MWU5Zjc5OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKaW5kZXggZDVlNmFlNC4uN2MwYTdkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKQEAgLTcsNyArNyw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vY29kZXNwZWFrLm5ldC9seG1sIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIkJTRCAmIEdQTHYyICYgTUlUICYgUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVMudHh0O21kNT1mOWYxZGMyNGY3MjBjMTQzYzIyNDBkZjQxZmU1MDczYiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUy50eHQ7bWQ1PWU0YzA0NWViYWQ5NThlYWQ0YjQ4MDA4ZjcwODM4NDAzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQ7bWQ1PWViMzRkMDM2YTZlM2Q1NjMxNGVlNDlhNjg1MmFjODkxIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9saWNlbnNlcy9CU0QudHh0O21kNT03MDBhMWZjMTdmNDc5N2Q0ZjJkMzQ5NzBjOGVlNjk0YiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGljZW5zZXMvR1BMLnR4dDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXApAQCAtMTgsOCArMTgsOCBAQAogCiBERVBFTkRTICs9ICJsaWJ4bWwyIGxpYnhzbHQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwNzU2OTJjZTQ0MmU2OWJiZDYwNGQ0NGUyMWMwMjc1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTUwMmQ3OGE1MWVlN2QxMjdiNDgyNGZmOTY1MDBmMDE4MWQzYzc4MjZlNmVlN2I4MDBkMDY4YmU3OTM2MWM3IgorU1JDX1VSSVttZDVzdW1dID0gIjI0NzU4MGJkNWQ5NDI4NzJiZDk3MmFkMDA4NmU1Y2JmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlM2FhZWI1ZjQ2OGE0OWY1MjNmMTY3MzZjY2ZmN2Q4MmFmMmI0YjMwMzI5MmJhM2QwNTJiNWIyOGYzZmJlNDciCiAKIERJU1RVVElMU19CVUlMRF9BUkdTICs9ICIgXAogICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXhzbHQtY29uZmlnPSdwa2ctY29uZmlnIGxpYnhzbHQnIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwvMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwvMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhZWNkNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGY4ZDJjMzM5NDc2NzAyNWIzYjI3YjcxMjQ4YjNlY2I1MDQ4MGNkZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNzoxMDo0NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBseG1sLmV0cmVlOiBBZGQgZW1wdHkgdmFyaWFkaWMgYXJndW1lbnQKLQotZm9ybWF0IGNoZWNrZXIgc2F5cyB0aGF0IGFyZ3VtZW50IDQgaXMgYSBwcmludGYgZm9ybWF0dGVkIGFyZ3VtZW50Ci1idXQgdGhlcmUgaXMgbm8gbW9yZSBhcmd1bWVudHMgdG8gZm9sbG93Ci0KLUZpeGVzIGxpYnhzbHQgZm9ybWF0IHdhcm5pbmdzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbHhtbC9seG1sLmV0cmVlLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2x4bWwvbHhtbC5ldHJlZS5jIGIvc3JjL2x4bWwvbHhtbC5ldHJlZS5jCi1pbmRleCBkNDgyMDkxLi5mYWFiMDZjIDEwMDY0NAotLS0tIGEvc3JjL2x4bWwvbHhtbC5ldHJlZS5jCi0rKysgYi9zcmMvbHhtbC9seG1sLmV0cmVlLmMKLUBAIC0xODYwODYsNyArMTg2MDg2LDcgQEAgc3RhdGljIHZvaWQgX19weXhfZl80bHhtbF81ZXRyZWVfX2NhbGxFeHRlbnNpb25FbGVtZW50KHhzbHRUcmFuc2Zvcm1Db250ZXh0ICpfX3AKLSAgKiAgICAgICAgIGV4Y2VwdDoKLSAgKi8KLSAgICAgICAgICAgICBfX3B5eF90XzI2ID0gX19QeXhfUHlPYmplY3RfQXNTdHJpbmcoX19weXhfdl9tZXNzYWdlKTsgaWYgKHVubGlrZWx5KCghX19weXhfdF8yNikgJiYgUHlFcnJfT2NjdXJyZWQoKSkpIF9fUFlYX0VSUigxOSwgMjI4LCBfX3B5eF9MMThfZXhjZXB0X2Vycm9yKQotLSAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNik7Ci0rICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2LCAiIik7Ci0gCi0gICAgICAgICAgICAgLyogInNyYy9seG1sL3hzbHRleHQucHhpIjoyMjkKLSAgKiAgICAgICAgICAgICAgICAgY19pbnN0X25vZGUubmFtZSwgX2NzdHIoZSkpCi1AQCAtMTg2MTM2LDcgKzE4NjEzNiw3IEBAIHN0YXRpYyB2b2lkIF9fcHl4X2ZfNGx4bWxfNWV0cmVlX19jYWxsRXh0ZW5zaW9uRWxlbWVudCh4c2x0VHJhbnNmb3JtQ29udGV4dCAqX19wCi0gICogICAgIGV4Y2VwdDoKLSAgKi8KLSAgICAgICAgICAgICBfX3B5eF90XzI2ID0gX19QeXhfUHlPYmplY3RfQXNTdHJpbmcoX19weXhfdl9tZXNzYWdlKTsgaWYgKHVubGlrZWx5KCghX19weXhfdF8yNikgJiYgUHlFcnJfT2NjdXJyZWQoKSkpIF9fUFlYX0VSUigxOSwgMjM0LCBfX3B5eF9MMThfZXhjZXB0X2Vycm9yKQotLSAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNik7Ci0rICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2LCAiIik7Ci0gCi0gICAgICAgICAgICAgLyogInNyYy9seG1sL3hzbHRleHQucHhpIjoyMzUKLSAgKiAgICAgICAgICAgICAgICAgIkVycm9yIGV4ZWN1dGluZyBleHRlbnNpb24gZWxlbWVudCAnJXMnIiwgY19pbnN0X25vZGUubmFtZSkKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfMy43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzMuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzkzYTNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfMy43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbHhtbC5pbmMKLQotU1JDX1VSSSA9ICIke1BZUElfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfNC4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2NiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1seG1sLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL2Nyb3NzLWNvbXBpbGUtcGxhdGZvcm0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY2NTRlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL2Nyb3NzLWNvbXBpbGUtcGxhdGZvcm0ucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRG8gbm90IGNvbXB1dGUgcGxhdGZvcm0sIHRoaXMgZG9lcyBub3Qgd29yayBpbiBjcm9zcyBjb21waWxlIGVudmlyb25tZW50CitzaW5jZSBpdCBwb2tlcyBhdCB0aGUgc3lzdGVtIGZvciBnZXR0aW5nIGFyY2hpdGVjdHVyZSB2YWx1ZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogTTJDcnlwdG8tMC4yNi4wL3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTTJDcnlwdG8tMC4yNi4wLm9yaWcvc2V0dXAucHkKKysrKyBNMkNyeXB0by0wLjI2LjAvc2V0dXAucHkKK0BAIC0xNDEsMTkgKzE0MSw2IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KKyAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYub3BlbnNzbCwgJ2luY2x1ZGUnLCAnb3BlbnNzbCcpKQorIAorLSAgICAgICAgICAgICMgRm9yIFJlZEhhdC1iYXNlZCBkaXN0cm9zLCB0aGUgJy1EX197YXJjaH1fXycgb3B0aW9uIGZvcgorLSAgICAgICAgICAgICMgU3dpZyBuZWVkcyB0byBiZSBub3JtYWxpemVkLCBwYXJ0aWN1bGFybHkgb24gaTM4Ni4KKy0gICAgICAgICAgICBtYWNoID0gcGxhdGZvcm0ubWFjaGluZSgpLmxvd2VyKCkKKy0gICAgICAgICAgICBpZiBtYWNoIGluICgnaTM4NicsICdpNDg2JywgJ2k1ODYnLCAnaTY4NicpOgorLSAgICAgICAgICAgICAgICBhcmNoID0gJ19faTM4Nl9fJworLSAgICAgICAgICAgIGVsaWYgbWFjaCBpbiAoJ3BwYzY0JywgJ3Bvd2VycGM2NCcpOgorLSAgICAgICAgICAgICAgICBhcmNoID0gJ19fcG93ZXJwYzY0X18nCistICAgICAgICAgICAgZWxpZiBtYWNoIGluICgncHBjJywgJ3Bvd2VycGMnKToKKy0gICAgICAgICAgICAgICAgYXJjaCA9ICdfX3Bvd2VycGNfXycKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBhcmNoID0gJ19fJXNfXycgJSBtYWNoCistICAgICAgICAgICAgc2VsZi5zd2lnX29wdHMuYXBwZW5kKCctRCVzJyAlIGFyY2gpCistCisgICAgICAgICBzZWxmLnN3aWdfb3B0cy5leHRlbmQoWyctSSVzJyAlIGkgZm9yIGkgaW4gc2VsZi5pbmNsdWRlX2RpcnNdKQorICAgICAgICAgc2VsZi5zd2lnX29wdHMuYXBwZW5kKCctaW5jbHVkZWFsbCcpCisgICAgICAgICBzZWxmLnN3aWdfb3B0cy5hcHBlbmQoJy1tb2Rlcm4nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by9tMmNyeXB0by0wLjI2LjQtZ2NjX21hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDczOGNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorSW1wb3J0ZWQgZnJvbSBGZWRvcmEKKworLS0tIE0yQ3J5cHRvL1NXSUcvX20yY3J5cHRvLmkJMjAxNy0wOS0yNiAxMToyNjozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBNMkNyeXB0by0wLjI2LjQvU1dJRy9fbTJjcnlwdG8uaQkyMDE3LTA5LTI2IDIxOjA0OjE0LjA4MDMzMDc0MSArMDIwMAorQEAgLTcsNiArNyw3IEBACisgICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAgSGVpa2tpIFRvaXZvbmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICovCisrJWltcG9ydCAiZ2NjX21hY3Jvcy5oIgorIAorICVtb2R1bGUodGhyZWFkcz0xKSBtMmNyeXB0bworIC8qIFdlIHJlYWxseSBkb24ndCBuZWVkIHRocmVhZGJsb2NrIChQeUdJTFN0YXRlX0Vuc3VyZSgpIGV0Yy4pIGFueXdoZXJlLgorQEAgLTE1LDExICsxNiw2IEBACisgJW5vdGhyZWFkYmxvY2s7CisgJW5vdGhyZWFkYWxsb3c7CisgCistI2lmIFNXSUdfVkVSU0lPTiA+PSAweDAzMDAwMAorLSNkZWZpbmUgX19XQ0hBUl9NQVhfXyBfX1dDSEFSX01BWAorLSNkZWZpbmUgX19XQ0hBUl9NSU5fXyBfX1dDSEFSX01JTgorLSNlbmRpZgorLQorICV7CisgI2lmIF9fR05VQ19fIDwgNQorICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtbGFiZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNTIzYmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBjcnlwdG8gYW5kIFNTTCB0b29sa2l0IgotSE9NRVBBR0UgPSAiaHR0cDovL2NoYW5kbGVycHJvamVjdC5vcmcvYmluL3ZpZXcvUHJvamVjdHMvTWVUb29DcnlwdG8iCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTk1Mjk1NjkzZjA0N2JiOGY3NjkyODI1MWE2MTU0YTYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDQwMjM0Mjg5ZmJlZjViZWQ0MDI5ZjBmN2QxZGFlMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWMzMDNhMTg4MTMwN2E1MWM4NWVlOGIxZDg3ODQ0ZDk4NjZlZTgyM2I0ZmRiYzUyZjdlNzkxODdjMmQ5YWNlZiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoICIKLQotUFlQSV9QQUNLQUdFID0gIk0yQ3J5cHRvIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgc2l0ZWluZm8KLQotREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tdHlwaW5nIgotCi1ESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9IC1JJHtTVEFHSU5HX0lOQ0RJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICJidWlsZF9leHQgLS1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1TV0lHX0ZFQVRVUkVTX3g4Ni02NCA9ICItRF9feDg2XzY0X18iCi1TV0lHX0ZFQVRVUkVTID89ICIiCi1leHBvcnQgU1dJR19GRUFUVVJFUwotCi0jIEdldCBhcm91bmQgYSBwcm9ibGVtIHdpdGggc3dpZywgYnV0IG9ubHkgaWYgdGhlCi0jIG11bHRpbGliIGhlYWRlciBmaWxlIGV4aXN0cy4KLSMKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTt0aGVuCi0gICAgICAgIGJpdD0iNjQiCi0gICAgZWxzZQotICAgICAgICBiaXQ9IjMyIgotICAgIGZpCi0KLSAgICBpZiBbIC1lICR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wvb3BlbnNzbGNvbmYtJHtiaXR9LmggXSA7dGhlbgotICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbwotICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi0ke2JpdH1cLi8iICIkaSIKLSAgICAgICAgZG9uZQotICAgIGVsaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLW4ke2JpdH0uaCBdIDt0aGVuCi0gICAgICAgIGZvciBpIGluIFNXSUcvX2VjLmkgU1dJRy9fZXZwLmk7IGRvCi0gICAgICAgICAgICBzZWQgLWkgLWUgInMvb3BlbnNzbGNvbmYuKlwuL29wZW5zc2xjb25mLW4ke2JpdH1cLi8iICIkaSIKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI2LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI2LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcyYzc2YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjYuNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkEgUHl0aG9uIGNyeXB0byBhbmQgU1NMIHRvb2xraXQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vbTJjcnlwdG8vbTJjcnlwdG8iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YjBlMWYwYjdkMGNlOGE2MmMxOGIxMjg3Yjk5MTgwMGUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXNldHVwLnB5LWxpbmstaW4tc3lzcm9vdC1ub3QtaW4taG9zdC1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNWM3NGMyNWJhOGI0NTEyMjMxOGExNjVhM2EyMDU5YWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNhZTdhY2MwYjM0ODIxZjhjMGRkZjY2NjVlNDgyODkzZmUxZjE5OGFkNjM3OWU2MWZmYTlkOGU2NWY1YzE5OSIKKworUFlQSV9QQUNLQUdFID0gIk0yQ3J5cHRvIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMgc2l0ZWluZm8KKworREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tdHlwaW5nIgorCitESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9IC1JJHtTVEFHSU5HX0lOQ0RJUn0iCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICJidWlsZF9leHQgLS1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0iCisKK1NXSUdfRkVBVFVSRVNfeDg2ID0gIi1EX19pMzg2X18iCitTV0lHX0ZFQVRVUkVTID89ICItRF9fJHtIT1NUX0FSQ0h9X18iCitleHBvcnQgU1dJR19GRUFUVVJFUworCisjIEdldCBhcm91bmQgYSBwcm9ibGVtIHdpdGggc3dpZywgYnV0IG9ubHkgaWYgdGhlCisjIG11bHRpbGliIGhlYWRlciBmaWxlIGV4aXN0cy4KKyMKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAke0NQUH0gLWRNIC0gPCAvZGV2L251bGwgfCBncmVwIC12IF9fU1REQ19fIHwgZ3JlcCAtdiBfX1JFR0lTVEVSX1BSRUZJWF9fIHwgZ3JlcCAtdiBfX0dOVUNfXyBcCisJfCBzZWQgJ3MvXlwoI2RlZmluZSBcKFteIF0qXCkgLipcKSQvI3VuZGVmIFwyXG5cMS8nID4gU1dJRy9nY2NfbWFjcm9zLmgKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTt0aGVuCisgICAgICAgIGJpdD0iNjQiCisgICAgZWxzZQorICAgICAgICBiaXQ9IjMyIgorICAgIGZpCisKKyAgICBpZiBbIC1lICR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wvb3BlbnNzbGNvbmYtJHtiaXR9LmggXSA7dGhlbgorICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbworICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi0ke2JpdH1cLi8iICIkaSIKKyAgICAgICAgZG9uZQorICAgIGVsaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLW4ke2JpdH0uaCBdIDt0aGVuCisgICAgICAgIGZvciBpIGluIFNXSUcvX2VjLmkgU1dJRy9fZXZwLmk7IGRvCisgICAgICAgICAgICBzZWQgLWkgLWUgInMvb3BlbnNzbGNvbmYuKlwuL29wZW5zc2xjb25mLW4ke2JpdH1cLi8iICIkaSIKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYwppbmRleCBkZTYxOTQ0Li5lNTBmOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYwpAQCAtMywxMCArMywxMCBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNmQxYWRjZjQ1ZDY5MzU5ZjI1NmMxY2VhMzI1NDEyNyIKIAotU1JDX1VSSVttZDVzdW1dID0gImY1YWIzZGVlZTRjMzdjZDZhOTIyZmI4MWU3MzBkYTZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0ZWMxYWZmNTliOTVhMTRiNDVlYjJlMjM3NjFhMDE3OWU5ODMxOWRhNWE3ZWI3NmI1NmVhOGNkYzdiODcxYzMiCitTUkNfVVJJW21kNXN1bV0gPSAiMmZjZWRjOTI4NGQ1MGU1NzdiNTE5MmU4ZTM1NzgzNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZiZTY5MDkxZGFjMjM2ZWE5YzZiYzdkMDEyYmVhYjQyMDEwZmE5MTRjNDU5NzkxZDYyN2RhZDQ5MTBlYjY2NSIKIAogUFlQSV9QQUNLQUdFID0gIk1hcmt1cFNhZmUiCiBpbmhlcml0IHB5cGkKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXN0cmluZ29sZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMC4yMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMC4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk2ZWZmMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzAuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbWFya3Vwc2FmZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM5ODg0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4wLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1tYXJrdXBzYWZlLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODE1ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1UaGlzIGZpeGVzIHRoZSBkZXBlbmRlbmN5IGNoZWNrcyBpbnNpZGUgb2Ygc2V0dXAucHkgc2luY2UgdGhpbmdzIGxpa2UKLSdpbXBvcnQgbnVtcHknIHdvbid0IHdvcmsgd2l0aCBiaXRiYWtlLgotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggMmYxMzgyMS4uZTZkNmVkMCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTExMywxMiArMTEzLDYgQEAgaWYgMToKLSAgICAgYmFzZWxpbmVfaW1hZ2VzID0gW2Nob3BfcGFja2FnZShmKSBmb3IgZiBpbiBiYXNlbGluZV9pbWFnZXNdCi0gICAgIHBhY2thZ2VfZGF0YVsnbWF0cGxvdGxpYiddLmV4dGVuZChiYXNlbGluZV9pbWFnZXMpCi0gCi0taWYgbm90IGNoZWNrX2Zvcl9udW1weSgpOgotLSAgICBzeXMuZXhpdCgxKQotLQotLWlmIG5vdCBjaGVja19mb3JfZnJlZXR5cGUoKToKLS0gICAgc3lzLmV4aXQoMSkKLS0KLSBidWlsZF9mdDJmb250KGV4dF9tb2R1bGVzLCBwYWNrYWdlcykKLSBidWlsZF90dGNvbnYoZXh0X21vZHVsZXMsIHBhY2thZ2VzKQotIGJ1aWxkX2NvbnRvdXIoZXh0X21vZHVsZXMsIHBhY2thZ2VzKQotQEAgLTEyOSw3ICsxMjMsNyBAQCBidWlsZF90cmkoZXh0X21vZHVsZXMsIHBhY2thZ2VzKQotIAotIHByaW50X3JhdygiIikKLSBwcmludF9yYXcoIk9QVElPTkFMIEJBQ0tFTkQgREVQRU5ERU5DSUVTIikKLS1oYXNfbGlicG5nID0gY2hlY2tfZm9yX2xpYnBuZygpCi0raGFzX2xpYnBuZyA9IFRydWUKLSAKLSBpZiBoYXNfbGlicG5nIGFuZCBvcHRpb25zWydidWlsZF9hZ2cnXToKLSAgICAgYnVpbGRfYWdnKGV4dF9tb2R1bGVzLCBwYWNrYWdlcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwZXh0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2gKaW5kZXggOWExM2ExOC4uMjFiOTA5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2gKQEAgLTEsNDAgKzEsMTEwIEBACiBUaGlzIGZpeGVzIHRoZSBudW1weSBpbXBvcnQgcHJvYmxlbSBpbiBzZXR1cGV4dC5weSB1c2luZyBhIGhhcmQtY29kZWQgcGF0aC4KIAotSW5kZXg6IG1hdHBsb3RsaWItMS4xLjAvc2V0dXBleHQucHkKK0luZGV4OiBtYXRwbG90bGliLTIuMC4yL3NldHVwZXh0LnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWF0cGxvdGxpYi0xLjEuMC5vcmlnL3NldHVwZXh0LnB5Ci0rKysgbWF0cGxvdGxpYi0xLjEuMC9zZXR1cGV4dC5weQotQEAgLTEyMiw4ICsxMjIsOCBAQCBudW1weV9pbmNfZGlycyA9IFtdCi0gIyBtYXRwbG90bGliIGJ1aWxkIG9wdGlvbnMsIHdoaWNoIGNhbiBiZSBhbHRlcmVkIHVzaW5nIHNldHVwLmNmZwotIG9wdGlvbnMgPSB7J2Rpc3BsYXlfc3RhdHVzJzogVHJ1ZSwKLSAgICAgICAgICAgICd2ZXJib3NlJzogRmFsc2UsCi0tICAgICAgICAgICAncHJvdmlkZV9weXR6JzogJ2F1dG8nLAotLSAgICAgICAgICAgJ3Byb3ZpZGVfZGF0ZXV0aWwnOiAnYXV0bycsCi0rICAgICAgICAgICAncHJvdmlkZV9weXR6JzogRmFsc2UsCi0rICAgICAgICAgICAncHJvdmlkZV9kYXRldXRpbCc6IEZhbHNlLAotICAgICAgICAgICAgJ2J1aWxkX2FnZyc6IFRydWUsCi0gICAgICAgICAgICAnYnVpbGRfZ3RrJzogJ2F1dG8nLAotICAgICAgICAgICAgJ2J1aWxkX2d0a2FnZyc6ICdhdXRvJywKLUBAIC0xNzYsMTAgKzE3Niw3IEBAIGlmIG9zLnBhdGguZXhpc3RzKHNldHVwX2NmZyk6Ci0gICAgIGV4Y2VwdDogcGFzcworLS0tIG1hdHBsb3RsaWItMi4wLjIub3JpZy9zZXR1cGV4dC5weQorKysrIG1hdHBsb3RsaWItMi4wLjIvc2V0dXBleHQucHkKK0BAIC0xNDgsNiArMTQ4LDcgQEAgZGVmIGhhc19pbmNsdWRlX2ZpbGUoaW5jbHVkZV9kaXJzLCBmaWxlbgorICAgICBSZXR1cm5zIGBUcnVlYCBpZiBgZmlsZW5hbWVgIGNhbiBiZSBmb3VuZCBpbiBvbmUgb2YgdGhlCisgICAgIGRpcmVjdG9yaWVzIGluIGBpbmNsdWRlX2RpcnNgLgorICAgICAiIiIKKysgICAgcmV0dXJuIFRydWUKKyAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICBpbmNsdWRlX2RpcnMgKz0gb3MuZW52aXJvbi5nZXQoJ0lOQ0xVREUnLCAnLicpLnNwbGl0KCc7JykKKyAgICAgZm9yIGRpciBpbiBpbmNsdWRlX2RpcnM6CitAQCAtMTcyLDcgKzE3Myw3IEBAIGRlZiBnZXRfYmFzZV9kaXJzKCk6CisgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0YW5kYXJkIGJhc2UgZGlyZWN0b3JpZXMgb24gdGhpcyBwbGF0Zm9ybS4KKyAgICAgIiIiCisgICAgIGlmIG9wdGlvbnNbJ2Jhc2VkaXJsaXN0J106CistICAgICAgICByZXR1cm4gb3B0aW9uc1snYmFzZWRpcmxpc3QnXQorKyAgICAgICAgcmV0dXJuIFtvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddXQogIAotICMgRm9yIGdldF9iYXNlX2ZsYWdzOgotLWlmIG9wdGlvbnNbJ2Jhc2VkaXJsaXN0J106Ci0tICAgIGJhc2VkaXJsaXN0ID0gb3B0aW9uc1snYmFzZWRpcmxpc3QnXS5zcGxpdCgpCi0tZWxzZToKLS0gICAgYmFzZWRpcmxpc3QgPSBiYXNlZGlyW3N5cy5wbGF0Zm9ybV0KLStiYXNlZGlybGlzdCA9IFtvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddXQotIHByaW50KCJiYXNlZGlybGlzdCBpczogJXMiICUgYmFzZWRpcmxpc3QpCisgICAgIGJhc2VkaXJfbWFwID0geworICAgICAgICAgJ3dpbjMyJzogWyd3aW4zMl9zdGF0aWMnLCBdLAorQEAgLTI2MCwxNCArMjYxLDYgQEAgZGVmIG1ha2VfZXh0ZW5zaW9uKG5hbWUsIGZpbGVzLCAqYXJncywgKgorICAgICBgZGlzdHV0aWxzLmNvcmUuRXh0ZW5zaW9uYCBjb25zdHJ1Y3Rvci4KKyAgICAgIiIiCisgICAgIGV4dCA9IERlbGF5ZWRFeHRlbnNpb24obmFtZSwgZmlsZXMsICphcmdzLCAqKmt3YXJncykKKy0gICAgZm9yIGRpciBpbiBnZXRfYmFzZV9kaXJzKCk6CistICAgICAgICBpbmNsdWRlX2RpciA9IG9zLnBhdGguam9pbihkaXIsICdpbmNsdWRlJykKKy0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGluY2x1ZGVfZGlyKToKKy0gICAgICAgICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZChpbmNsdWRlX2RpcikKKy0gICAgICAgIGZvciBsaWIgaW4gKCdsaWInLCAnbGliNjQnKToKKy0gICAgICAgICAgICBsaWJfZGlyID0gb3MucGF0aC5qb2luKGRpciwgbGliKQorLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxpYl9kaXIpOgorLSAgICAgICAgICAgICAgICBleHQubGlicmFyeV9kaXJzLmFwcGVuZChsaWJfZGlyKQorICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZCgnLicpCiAgCi0gaWYgb3B0aW9uc1snZGlzcGxheV9zdGF0dXMnXToKLUBAIC01NTUsOCArNTUyLDggQEAgZGVmIGNoZWNrX2Zvcl9udW1weSgpOgorICAgICByZXR1cm4gZXh0CitAQCAtMzE0LDYgKzMwNyw3IEBAIGNsYXNzIFBrZ0NvbmZpZyhvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgIiAgICBtYXRwbG90bGliIG1heSBub3QgYmUgYWJsZSB0byBmaW5kIHNvbWUgb2YgaXRzIGRlcGVuZGVuY2llcyIpCiAgCi0gZGVmIGFkZF9udW1weV9mbGFncyhtb2R1bGUpOgotICAgICAiQWRkIHRoZSBtb2R1bGVzIGZsYWdzIHRvIGJ1aWxkIGV4dGVuc2lvbnMgd2hpY2ggdXNlIG51bXB5IgotLSAgICBpbXBvcnQgbnVtcHkKLS0gICAgbW9kdWxlLmluY2x1ZGVfZGlycy5hcHBlbmQobnVtcHkuZ2V0X2luY2x1ZGUoKSkKLSsgICAgIyBIYXJkLWNvZGVkIHBhdGggZm9yIE9FIHNpbmNlIEkga25vdyB0aGlzIGlzIHdoZXJlIG51bXB5J3MgaW5jbHVkZSBkaXIgd2lsbCBiZQotKyAgICBtb2R1bGUuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXSwgJ3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZS8nKSkKKyAgICAgZGVmIHNldF9wa2djb25maWdfcGF0aChzZWxmKToKKysgICAgICAgIHJldHVybgorICAgICAgICAgcGtnY29uZmlnX3BhdGggPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xJQkRJUicpCisgICAgICAgICBpZiBwa2djb25maWdfcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgIHJldHVybgorQEAgLTg3NSwxNCArODY5LDE0IEBAIGNsYXNzIE51bXB5KFNldHVwUGFja2FnZSk6CisgICAgICAgICAgICAgcmVsb2FkKG51bXB5KQogIAotIGRlZiBhZGRfcG5nX2ZsYWdzKG1vZHVsZSk6Ci0gICAgIHRyeV9wa2djb25maWcobW9kdWxlLCAnbGlicG5nJywgJ3BuZycpCisgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3Rlc3QnLCBbXSkKKy0gICAgICAgIGV4dC5pbmNsdWRlX2RpcnMuYXBwZW5kKG51bXB5LmdldF9pbmNsdWRlKCkpCisrICAgICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXSwgJ3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZS8nKSkKKyAgICAgICAgIGlmIG5vdCBoYXNfaW5jbHVkZV9maWxlKAorICAgICAgICAgICAgICAgICBleHQuaW5jbHVkZV9kaXJzLCBvcy5wYXRoLmpvaW4oIm51bXB5IiwgImFycmF5b2JqZWN0LmgiKSk6CisgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAgIlRoZSBDIGhlYWRlcnMgZm9yIG51bXB5IGNvdWxkIG5vdCBiZSBmb3VuZC4gIgorICAgICAgICAgICAgICAgICAiWW91IG1heSBuZWVkIHRvIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IHBhY2thZ2UiKQorIAorLSAgICAgICAgcmV0dXJuIFtudW1weS5nZXRfaW5jbHVkZSgpXQorKyAgICAgICAgcmV0dXJuIFtvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXSwgJ3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZS8nKV0KKyAKKyAgICAgZGVmIGNoZWNrKHNlbGYpOgorICAgICAgICAgbWluX3ZlcnNpb24gPSBleHRyYWN0X3ZlcnNpb25zKClbJ19fdmVyc2lvbl9fbnVtcHlfXyddCitJbmRleDogbWF0cGxvdGxpYi0yLjAuMi9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1hdHBsb3RsaWItMi4wLjIub3JpZy9zZXR1cC5weQorKysrIG1hdHBsb3RsaWItMi4wLjIvc2V0dXAucHkKK0BAIC02NiwyOCArNjYsNiBAQCBtcGxfcGFja2FnZXMgPSBbCisgICAgIHNldHVwZXh0LlB5dGhvbigpLAorICAgICBzZXR1cGV4dC5QbGF0Zm9ybSgpLAorICAgICAnUmVxdWlyZWQgZGVwZW5kZW5jaWVzIGFuZCBleHRlbnNpb25zJywKKy0gICAgc2V0dXBleHQuTnVtcHkoKSwKKy0gICAgc2V0dXBleHQuU2l4KCksCistICAgIHNldHVwZXh0LkRhdGV1dGlsKCksCistICAgIHNldHVwZXh0LkZ1bmNUb29sczMyKCksCistICAgIHNldHVwZXh0LlN1YnByb2Nlc3MzMigpLAorLSAgICBzZXR1cGV4dC5QeXR6KCksCistICAgIHNldHVwZXh0LkN5Y2xlcigpLAorLSAgICBzZXR1cGV4dC5Ub3JuYWRvKCksCistICAgIHNldHVwZXh0LlB5cGFyc2luZygpLAorLSAgICBzZXR1cGV4dC5MaWJBZ2coKSwKKy0gICAgc2V0dXBleHQuRnJlZVR5cGUoKSwKKy0gICAgc2V0dXBleHQuRlQyRm9udCgpLAorLSAgICBzZXR1cGV4dC5QbmcoKSwKKy0gICAgc2V0dXBleHQuUWh1bGwoKSwKKy0gICAgc2V0dXBleHQuSW1hZ2UoKSwKKy0gICAgc2V0dXBleHQuVFRDb252KCksCistICAgIHNldHVwZXh0LlBhdGgoKSwKKy0gICAgc2V0dXBleHQuQ29udG91ckxlZ2FjeSgpLAorLSAgICBzZXR1cGV4dC5Db250b3VyKCksCistICAgIHNldHVwZXh0LkRlbGF1bmF5KCksCistICAgIHNldHVwZXh0LlFodWxsV3JhcCgpLAorLSAgICBzZXR1cGV4dC5UcmkoKSwKKyAgICAgJ09wdGlvbmFsIHN1YnBhY2thZ2VzJywKKyAgICAgc2V0dXBleHQuU2FtcGxlRGF0YSgpLAorICAgICBzZXR1cGV4dC5Ub29sa2l0cygpLAorQEAgLTEwMCwxMyArNzgsOCBAQCBtcGxfcGFja2FnZXMgPSBbCisgICAgIHNldHVwZXh0LkJhY2tlbmRNYWNPU1goKSwKKyAgICAgc2V0dXBleHQuQmFja2VuZFF0NSgpLAorICAgICBzZXR1cGV4dC5CYWNrZW5kUXQ0KCksCistICAgIHNldHVwZXh0LkJhY2tlbmRHdGszQWdnKCksCisgICAgIHNldHVwZXh0LkJhY2tlbmRHdGszQ2Fpcm8oKSwKKy0gICAgc2V0dXBleHQuQmFja2VuZEd0a0FnZygpLAorLSAgICBzZXR1cGV4dC5CYWNrZW5kVGtBZ2coKSwKKy0gICAgc2V0dXBleHQuQmFja2VuZFd4QWdnKCksCisgICAgIHNldHVwZXh0LkJhY2tlbmRHdGsoKSwKKy0gICAgc2V0dXBleHQuQmFja2VuZEFnZygpLAorICAgICBzZXR1cGV4dC5CYWNrZW5kQ2Fpcm8oKSwKKyAgICAgc2V0dXBleHQuV2luZG93aW5nKCksCisgICAgICdPcHRpb25hbCBMYVRlWCBkZXBlbmRlbmNpZXMnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYl8xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWJfMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzM2U2NmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYl8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIm1hdHBsb3RsaWIgaXMgYSBweXRob24gMkQgcGxvdHRpbmcgbGlicmFyeSB3aGljaCBwcm9kdWNlcyBwdWJsaWNhdGlvbiBxdWFsaXR5IGZpZ3VyZXMgaW4gYSB2YXJpZXR5IG9mIGhhcmRjb3B5IGZvcm1hdHMiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnR4dDttZDU9ODNjNWJmOGIxNmE1Zjk5NTA3ZjJmNDdhMjFhZTNiODEiCi1QUiA9ICJyMSIKLQotREVQRU5EUyArPSAicHl0aG9uLW51bXB5IGZyZWV0eXBlIGxpYnBuZyBweXRob24tZGF0ZXV0aWwgcHl0aG9uLXB5dHoiCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tY29yZSBweXRob24tZGlzdHV0aWxzIHB5dGhvbi1udW1weSBmcmVldHlwZSBsaWJwbmcgcHl0aG9uLWRhdGV1dGlsIHB5dGhvbi1weXR6IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9tYXRwbG90bGliL21hdHBsb3RsaWItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9zZXR1cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfc2V0dXBleHQucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbWF0cGxvdGxpYi0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIC0td2l0aC1weXRob24taW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0vLi4vIgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbiBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCi0gICAgdHJ1ZQotfQotCi0jIG5lZWQgdG8gZXhwb3J0IHRoZXNlIHZhcmlhYmxlcyBmb3IgcHl0aG9uLWNvbmZpZyB0byB3b3JrCi1leHBvcnQgUFlUSE9OUEFUSAotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTdhNjI3ZjMwYjNiMjc4MjFmODA4NjU5ODg5NTE0YzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmUzN2UxZDg2YzY1ZWNhY2FlNjY4M2Y4ODA1ZTA1MWU5OTA0ZTVmMmUwMmJmMmI3YTM0MjYyYzQ2YTZkMDZhNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWJfMi4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWMzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliXzIuMC4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK0RFU0NSSVBUSU9OID0gIm1hdHBsb3RsaWIgaXMgYSBweXRob24gMkQgcGxvdHRpbmcgbGlicmFyeSB3aGljaCBwcm9kdWNlcyBwdWJsaWNhdGlvbiBxdWFsaXR5IGZpZ3VyZXMgaW4gYSB2YXJpZXR5IG9mIGhhcmRjb3B5IGZvcm1hdHMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiUFNGIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS9MSUNFTlNFO21kNT1hZmVjNjE0OThhYTVmMGM0NTkzNjY4N2RhOWE1M2Q3NCIKKworREVQRU5EUyArPSAicHl0aG9uLW51bXB5IGZyZWV0eXBlIGxpYnBuZyBweXRob24tZGF0ZXV0aWwgcHl0aG9uLXB5dHoiCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tY29yZSBweXRob24tZGlzdHV0aWxzIHB5dGhvbi1udW1weSBmcmVldHlwZSBsaWJwbmcgcHl0aG9uLWRhdGV1dGlsIHB5dGhvbi1weXR6IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXRwbG90bGliL21hdHBsb3RsaWIvYXJjaGl2ZS92JHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zZXR1cGV4dC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiODk3MTdjMWVmM2M2ZmRjZDZmYjFmM2I1OTdhNDg1OGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWViZWQyMzkyMTU2Mjc5MmI2OGI4Y2EzNTVkZTVhYmMxNzZhZjQ0MjRmMTk4N2UyZmE5NWY2NWU1YzVlN2U4OSIKK1MgPSAiJHtXT1JLRElSfS9tYXRwbG90bGliLSR7UFZ9IgorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgorCitpbmhlcml0IHNldHVwdG9vbHMgcGtnY29uZmlnCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWM4OGIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRpbWUubW9ub3RvbmljKCkgZm9yIFB5dGhvbiAyLjAgdGhyb3VnaCAzLjIiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxNGM5M2FhYmMzZDZhZjI1ZWYwODZiMDMyYjEyM2NmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwZTFjZWNhNTYzY2E2YmIzMGIwZmIwNDdlZTEwMDI1MDNhZTZhZDM1ODVmYzljNmFmMzdhOGY3N2VjMjc0YmEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRocmVhZGluZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOTFkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4zLmJiCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGltZS5tb25vdG9uaWMoKSBmb3IgUHl0aG9uIDIuMCB0aHJvdWdoIDMuMiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQyNzk0YzBkZjViOTA3ZmRhY2UyMzVhNjE5ZDgwMzE0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzQzNTEyNTFkMWE2NzY2N2EyNWNkNzY3M2QyZTQ0YmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI0NjllMmQ3ZGQ0MDNmN2Y3Zjc5MjI3ZmU1YWQ1NTFlZTFlNzZmOGJiMzAwYWU5MzUyMDk4ODRiOTNjN2MxYiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jdHlwZXMgJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjhjZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIk1lc3NhZ2VQYWNrIChkZSlzZXJpYWxpemVyIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Q5NTIzMTgxZDlkNGZiZjdmZmNhNTJlYWEyYTU3NTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkY2Q4NTRmYjQxZWU3NTg0ZWJiZjM1ZTA0OWU2YmU5OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTJiMTlkZjBmMDM1MTllYzdmMTlmODI2YWZiOTM1YjIwMmQ4OTc5YjA4NTZjNmZiM2RjMjg5NTU3OTlmODg2IgorCitQWVBJX1BBQ0tBR0UgPSAibXNncGFjay1weXRob24iCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC40LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrXzAuNC44LmJiCmluZGV4IDhhMGFkOGYuLjJjMmM4ZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC40LjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjQuOC5iYgpAQCAtMSw5ICsxLDIgQEAKLVNVTU1BUlkgPSAiTWVzc2FnZVBhY2sgKGRlKXNlcmlhbGl6ZXIiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZDk1MjMxODFkOWQ0ZmJmN2ZmY2E1MmVhYTJhNTc1MSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRjZDg1NGZiNDFlZTc1ODRlYmJmMzVlMDQ5ZTZiZTk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhMmIxOWRmMGYwMzUxOWVjN2YxOWY4MjZhZmI5MzViMjAyZDg5NzliMDg1NmM2ZmIzZGMyODk1NTc5OWY4ODYiCi0KLVBZUElfUEFDS0FHRSA9ICJtc2dwYWNrLXB5dGhvbiIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1tc2dwYWNrLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50LmluYwppbmRleCAzYzYyNTNmLi4xMzNjYWIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01BTklGRVNULmluO21kNT1jZTIyYzBjZDk4NmQyZGUzZjcwNzNjZDZiNTUyM2FlMCIKIAotU1JDX1VSSVttZDVzdW1dID0gImIzYTk1OGMwZTlhYWY0ZDNmOGRkOTMzZjQ2ZjhjMWE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4MDk4N2VmMTk0MzM0YzUwMzg5ZTBkN2RlODg1ZmNjZjE1NjA1YzEzYzZlZWNhYWJkOGQ2YzQzNzY4ZWI4YWMiCitTUkNfVVJJW21kNXN1bV0gPSAiNTlhMmYwYTViM2I2MGU2YzUyMGE5Y2M3YmU5YWZmODciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JmZDhjNWNmY2JjMjQxYTkzY2E2YTRlNDVmOTUyNjUwZjVjN2VjZjdjNDliMWRiY2Y1ZjRkMzkwMjQwYmUwYiIKIAogUFlQSV9QQUNLQUdFID0gIm5kZ19odHRwc2NsaWVudCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC40LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmIwZjFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkci5pbmMKQEAgLTAsMCArMSw4IEBACitTVU1NQVJZID0gIkEgbmV0d29yayBhZGRyZXNzIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGZvciBQeXRob24uIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNjM0NWQ2OTVmZmUzNzc2ZjY4YTU2ZmU3OTYyZGI0NCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUxMDE5ZWY1OWM5M2YzOTc5YmNiMzdkM2I4NTI3ZTA3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4YWVlYzdjZGQwMzUwODFkM2E0YzMwNjM5NGIxOWQ2Nzc2MjNiZjc2ZmEwOTEzZjY2OTUxMjdjNzc1M2FlZmQiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyXzAuNy4xOS5iYgppbmRleCA1YjAzNzM1Li41ZTA4OWE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyXzAuNy4xOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyXzAuNy4xOS5iYgpAQCAtMSw4ICsxLDIgQEAKLVNVTU1BUlkgPSAiQSBuZXR3b3JrIGFkZHJlc3MgbWFuaXB1bGF0aW9uIGxpYnJhcnkgZm9yIFB5dGhvbi4iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2MzQ1ZDY5NWZmZTM3NzZmNjhhNTZmZTc5NjJkYjQ0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTEwMTllZjU5YzkzZjM5NzliY2IzN2QzYjg1MjdlMDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhhZWVjN2NkZDAzNTA4MWQzYTRjMzA2Mzk0YjE5ZDY3NzYyM2JmNzZmYTA5MTNmNjY5NTEyN2M3NzUzYWVmZCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLW5ldGFkZHIuaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreF8xLjExLmJiCmluZGV4IDI4YTdiYWEuLmJkYThhZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzEuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMS4xMS5iYgpAQCAtNiwzICs2LDUgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDBlNzBlMTBkZmI0NzYwMWNiYjM0MjVhMDBlMDNlMmEyZTk3NDc3YmU2ZjgwNjM4ZmVmOTFkNTRkZDFlNGI4IgogCiBpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLTJ0bzMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYwppbmRleCA3ZmYzZmIyLi5hZDFjZTZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dC5pbmMKQEAgLTEsMTEgKzEsMTYgQEAKIFNVTU1BUlkgPSAiTVFUVCB2ZXJzaW9uIDMuMS8zLjEuMSBjbGllbnQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiRVBMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lYjQ4YzZlZTJjYjlmNWI4YjlmZTc1ZTZmODE3YmRmYyIKK0xJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWI0OGM2ZWUyY2I5ZjViOGI5ZmU3NWU2ZjgxN2JkZmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9OGQzODNjMzc5ZTkxZDIwYmExOGE1MmMzZTdkM2E5NzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9YzA5ZjEyMTkzOWYwNjNhZWI1MjM1OTcyYmU4YzcyMmMgXAorIgogU1JDTkFNRSA9ICJwYWhvLW1xdHQiCiAKIGluaGVyaXQgcHlwaQotU1JDX1VSSVttZDVzdW1dID0gIjI0MTE1MGIzZmNiOTIwZGRjYTRkMzMxODFmMzIzOGIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxMDBhNmFhNzA2YWI2OTlkNDE0ZWMwMjcwNWEyMWViNjZmNDM2MTg0NjkxZDBiZjFmMmE4NWE2MjEzYzZjMWYiCitTUkNfVVJJW21kNXN1bV0gPSAiYjkzMzgyMzZlMjgzNmU4NTc5ZWYxNDA5NTYxODljYzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM5ZWY1NDk0Y2ZjMWU0MWE5ZmZmNjU0NGM1YTJjZDU5ZWE1ZDQwMWQ5MTE5YTA2ZWNmN2ZhZDZhMmZmZWI5MyIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfSA9ICJcCiAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHRfMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHRfMS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHRfMS4zLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZjM3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgID0gInBhbmRhcyBsaWJyYXJ5IGZvciBoaWdoLXBlcmZvcm1hbmNlIGRhdGEgYW5hbHlzaXMgdG9vbHMiCitERVNDUklQVElPTiA9ICJwYW5kYXMgaXMgYW4gb3BlbiBzb3VyY2UsIEJTRC1saWNlbnNlZCBsaWJyYXJ5IHByb3ZpZGluZyBcCitoaWdoLXBlcmZvcm1hbmNlLCBlYXN5LXRvLXVzZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGRhdGEgYW5hbHlzaXMgdG9vbHMgZm9yIFwKK3RoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhbmRhcy5weWRhdGEub3JnLyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjYwMTdkMzEzNDM0OTAxNzQwOTM4NmJlODUxNzYxNDUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZGY4NThmMjhiNGJmNGZhMDdkOWZiYjdmMjU2ODE3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzc3ZTA3NjMzZDgzZDU0NmM1NTcwNjQyMDE3OTU1MWM4ZTAxMDc1YjUzYzQ5N2RjZjhhZTQwMzY3NjZiYzY2IgorCitQWVBJX1BBQ0tBR0UgPSAicGFuZGFzIgoraW5oZXJpdCBweXBpCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LW51bXB5LW5hdGl2ZSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1udW1weSBcCisgICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXNfMC4yMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDk3M2M4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjAuMy5iYgpAQCAtMCwwICsxLDcgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcGFuZGFzLmluYworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LWltcG9ydGxpYiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlXzAuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjMzdjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlXzAuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGlmaWVzIGJ1aWxkaW5nIHBhcnNlIHR5cGVzIGJhc2VkIG9uIHRoZSBwYXJzZSBtb2R1bGUiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJlMzg0MDJlYjRiNmMyMjRlNDkxNGZkODJlMGUxNDM2IgotUFlQSV9QQUNLQUdFID0gInBhcnNlX3R5cGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMGJhNzBiYzVjYTY3NjI0MjA3YjBkZmNlZDAxZGM4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQwYjMyM2JhZmNiOGMyNWUwMDBjZTU1ODkwNDJhMWM5OWNiYTljM2JlYzc3YjlmNTkxZTQ2YmM5NjA2MTQ3IgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXBhcnNlIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxNmM1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJTaW1wbGlmaWVzIGJ1aWxkaW5nIHBhcnNlIHR5cGVzIGJhc2VkIG9uIHRoZSBwYXJzZSBtb2R1bGUiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQwNzMyMzgyMGNjYTBmMWQxOTJjYmJmOGEwNTE2Zjk1IgorUFlQSV9QQUNLQUdFID0gInBhcnNlX3R5cGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNWZhNTllNDU5NjVkMWIyODk2MDIzNzQyZGYyZTcwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTk2YmRjNzVkM2RkOTMwMzZmYmZlM2QwNDEyN2RhOWY2ZGYwYzI2YzM2ZTAxZTc2ZGE4NWFkZWY0MzM2YjNjIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXBhcnNlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkOTA1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUGFyc2Ugc3RyaW5ncyB1c2luZyBhIHNwZWNpZmljYXRpb24gYmFzZWQgb24gdGhlIFB5dGhvbiBmb3JtYXQoKSBzeW50YXgiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhcnNlLnB5O21kNT0wODNkOGVmOGY5OGEzMDM1ZGJmODkwYTgwODQ5OGZkZTtzdGFydGxpbmU9MTE4OTtlbmRsaW5lPTEyMDgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWE3ZTMyY2IzNTgxMDExMzEzN2Y2MDczZmIzMDYzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjRmMjhiYmU3YzBmMjQ5ODE2NjllYTkyYjJiYTcwNGVlNjNiNTM0NjAyN2U4MmJlMzAxMThiYjU3ODhmZjEwIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM3MjIxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuOC4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiUGFyc2Ugc3RyaW5ncyB1c2luZyBhIHNwZWNpZmljYXRpb24gYmFzZWQgb24gdGhlIFB5dGhvbiBmb3JtYXQoKSBzeW50YXgiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhcnNlLnB5O21kNT1hODRiNDk0NTYzYmJhNDY2YTJmMDJiMDVmMmU2YWQ0YTtzdGFydGxpbmU9MTE5MTtlbmRsaW5lPTEyMTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MjAwMjMzODU1MWJkZmEwZjAxYmJlNGU2NzlhMTdkZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDQ4ZGRlM2Y1Y2EwN2FkN2FjNzM1MDQ2MDk1MmQ4M2I2M2VhYWNlY2RhYzFiMzdmNDVmZDc0ODcwZDg0OWQyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl8yLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0NGE5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gQnVpbGQgUmVhc29uYWJsZW5lc3M6IFBCUiBpcyBhIGxpYnJhcnkgdGhhdCBpbmplY3RzIHNvbWUgdXNlZnVsIGFuZCBzZW5zaWJsZSBkZWZhdWx0IGJlaGF2aW9ycyBpbnRvIHlvdXIgc2V0dXB0b29scyBydW4iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BiciIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWRlY2U3ODIxYmYzZmQ3MGZlMTMwOWVhYTM3ZDUyYTIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkZmMxYzM3ODhlZmYwNmFjZmFhZGU2ZjE2NTVmYTQ5MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwY2NkMmRiNTI5YWZkMDcwZGY4MTViMTUyMWYwMTQwMWQ0M2RlMDM5NDExNzBmOGE4MDBlNzUzMWZhYmEyNjVkIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgICAgIHB5dGhvbi1waXAgXAotICAgICAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzMuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzMuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZmY4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfMy4xLjEuYmIKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAiUHl0aG9uIEJ1aWxkIFJlYXNvbmFibGVuZXNzOiBQQlIgaXMgYSBsaWJyYXJ5IHRoYXQgaW5qZWN0cyBzb21lIHVzZWZ1bCBhbmQgc2Vuc2libGUgZGVmYXVsdCBiZWhhdmlvcnMgaW50byB5b3VyIHNldHVwdG9vbHMgcnVuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wYnIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGU4MmMyZTA3YWY1NDRjNTZhNWI3MWM4MDE1MjViMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVmNjFjNzFhYWVmYzAyZDhlMzdjMGEzZWViOTgxNWZmNTI2ZWEyOGIzYjc2MzI0NzY5ZTYxNThkN2Y5NWJlMSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICAgICAgICBweXRob24tcGlwIFwKKyAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkMDk3OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiQSBQdXJlIFB5dGhvbiBFeHBlY3QgbGlrZSBNb2R1bGUgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wZXhwZWN0LnJlYWR0aGVkb2NzLm9yZy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWM3YTcyNTI1MTg4MGFmOGM2YTE0ODE4MTY2NTM4NWIiCisKK1NSQ05BTUUgPSAicGV4cGVjdCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM2OTQ0MTAwMDFhOTlkZmY4M2YwYjUwMGExY2ExYzk1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkMTMyNDY1YTc1YjU3YWE4MTgzNDFjNjUyMTM5MmEwNmNjNjYwZmViMzk4OGQ3ZjEwNzRmMzliZDIzYzlhOTIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWNvcmUgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LXRlcm1pbmFsIFwKKyAgICAke1BZVEhPTl9QTn0tcmVzb3VyY2UgXAorICAgICR7UFlUSE9OX1BOfS1mY250bCBcCisgICAgJHtQWVRIT05fUE59LXB0eXByb2Nlc3MgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzQ2YjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXBleHBlY3QuaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4xLmJiCmluZGV4IDI4NTE3NjEuLjVkZGQ4ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF85LjAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfOS4wLjEuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlBJUCBpcyBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGlwLnB5cGEuaW8vIgogTElDRU5TRSA9ICJNSVQgJiBMR1BMLTIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0ZW5kLmluYwppbmRleCAyZDIxY2M0Li43OGI2NzE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0ZW5kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0ZW5kLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBzdHViYmluZyBpbiBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWxleC9wcmV0ZW5kIgogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9NDExNzgwYzBiN2ZhNzU2NzUzZTk0YWZmZWVlNWJjOTkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzLmluYwppbmRleCA4MGQwYTU4Li4yOTdjMGQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3MuaW5jCkBAIC0zLDcgKzMsMTIgQEAKIExJQ0VOU0UgPSAiSVNDIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWVmNTU2NmFjNGZlZGU5ODE1ZWNjZjEyNGMyODEzMTciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMWRiZjQ5YTQxZTgwNDA4ZDM4NzRkOTc2YmE4OTRjYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjZhNTBmOWFjNzY4MjBmNjE5ZDc3ODliNTM1NDg4MWM4YzEwMDYwYTY0MDQ3ZTQxNTg2OGQ4ZjUwM2NjMmViIgorU1JDX1VSSVttZDVzdW1dID0gImY2NWNjZmNjMjMzOWQ1MjJiMmRkNTgwMWFhYTQwZGM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4OGQ4OWVlM2JkMDY3MTZhMGI4YjU1MDRkOWMzYmNiM2MxYzBhYjk4Zjk2ZGM3ZjFkYzVmNTY4MTJhNGY2MGEiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKKyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3NfMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3NfMS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXQuaW5jCmluZGV4IDMwYzJjODEuLmY1ZWQzNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMKQEAgLTIsOCArMiw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyY2RlN2RhODlmMGMxZjNlNDliZjk2OGQwMGQ1NTRmIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNDI3YjQ5NmQyYzE0N2JkMzgxOWJjM2E3ZjZlMGQ0OTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzNkNjhjYTA5Zjc2Y2Q3MzI4N2ZkZTdkZjU3NDhmZmFjZjI2YTgyMzhkZDYxZWU4MWFjNTA4NjBlYTdjNjc3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZmU3MDI5NTAwNmRiYzhhZmVkZDQzZTVlYmE5OTAzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTg1ODhmMTk4M2NhNDk3ZjFjZjRmZmRlMDFkOTc4YTNlYTAyYjAxYzhhMjZhOGJiYzVjZDJlNjZkODE2OTE3IgogCiBQWVBJX1BBQ0tBR0UgPSAicHJvbXB0X3Rvb2xraXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXRfMS4wLjEzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjU5ZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK0RFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMiCitIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tc2l4IgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gImJmYzBjNjFjMTU2YTk5NWU5MDk1MjE2OTdlNzU1NzgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmMDI2MDllZjQ0NTk4Nzk3NmEzYTI2YmZmNzcxMTljNTE4ZTA5MTVjOTY2NjFjM2EzYjE3ODU2ZDBlZjYzNzQiCisKKyMgRm9yIHVzYWdlIGluIG90aGVyIHJlY2lwaWVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRmYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy40LjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXByb3RvYnVmLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKaW5kZXggNmQzZWJmOC4uYzlhN2Y2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWwuaW5jCkBAIC0yLDggKzIsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZjAyZTk5ZjdmM2M5YTdmZThlY2ZjNWQ0NGMyYmU2MiIKIAotU1JDX1VSSVttZDVzdW1dID0gImM5YWEyNTk5ZGNkOWU1YjU5ZDcxYjY2NjBkMzk2MDYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmYzkxZDA2OGZhYTU2MTNjMDkzMzM1ZjBlNzU4NjczZWY4YzcyMmFkNGJmYTRhZGVkNjRjMTNhZTY5MDg5ZWIiCitTUkNfVVJJW21kNXN1bV0gPSAiNTI5MjQ0YWVhNWQzMmZiMGMyZWE0NmQ4MGNlNTRhYmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTJkZDljOGFiYmFkMTVmMDU1ZTk1NzkxMzAwMzViMzg2MTcwMjBjZTE3NmY0YTQ5OGI3ODcwZTYzMjFmZmE2NyIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbF81LjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbF81LjMuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuMi4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS4zLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmMmQwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUnVuIGEgc3VicHJvY2VzcyBpbiBhIHBzZXVkbyB0ZXJtaW5hbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wdHlwcm9jZXNzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2ZkY2Q1MWZhN2Q1ODA4ZGE0ZTc0MzQ2ZWUzOTQ0OTAiCisKK1NSQ05BTUUgPSAicHR5cHJvY2VzcyIKKworU1JDX1VSSVttZDVzdW1dID0gImQzYjhmZWJhZTFiOGM1M2IwNTRiZDgxOGQwYmI4NjY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2NDE5M2YwMDQ3YWQ2MDNiNzFmMjAyMzMyYWI1NTI3YzVlNTJhYTdjOGI2MDk3MDRmYzI4YzBkYzIwYzQzNjUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B0eXByb2Nlc3MiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWNvcmUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2E0NTg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB0eXByb2Nlc3MuaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jCmluZGV4IDRhYzUwMmUuLjFhZWYwZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKQEAgLTEsOCArMSw5IEBACiBTVU1NQVJZID0gIkxpYnJhcnkgd2l0aCBjcm9zcy1weXRob24gcGF0aCwgaW5pLXBhcnNpbmcsIGlvLCBjb2RlLCBsb2cgZmFjaWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9weS5yZWFkdGhlZG9jcy5pby8iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2YmIwMzIwYjA0YTBhNTAzZjEyZjY5ZmVhNDc5ZGU5IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjUwNmYzZGYyODc3MDhiMmY5OTU4OGI1Y2MzNTEwOTEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2OGVlMGI1ODY3MjgyNTk1ZDBiNDEwYTdmM2MwM2FiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNGI4OWZkMWZmMTE2MjM3NTExNTYwOGQwMWY3N2MzOGNjYTFkMGYyOGYzN2ZkNzE4MDA1ZTE5YjI4YmU0MWE3IgorU1JDX1VSSVttZDVzdW1dID0gImQ5YzNkOGY3MzRiMDgxOWZmNDhlMzU1ZDc3YmYxNzMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMmQ1ODVkMjIwNTBlOTBjN2QyOTNiNjQ1MWM4M2RiMDk3ZGY3Nzg3MTk3NGQ5MGVmZDVhMzBkYzEyZmNkZTMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuNC4zMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuNC4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS40LjMyLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjQuMzQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCmluZGV4IDRlYjJkOWIuLmRlZGIxOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PTI4MDYwNmQ5YzE4ZjIwMGUwM2UwYzI0N2FjNjE0NzVhIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzlmOTgxMzUwNzFjOGRkNWMzN2I2YzkyM2M1MWJlNDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM4YzRlYmQ4OGE3MThlNzAwZWUzNWM4ZDEyOWFjY2UyMjg2NTQyZGFhODBhODI4MjNhNzA3MzY0NGY3MDZhZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMmQwMWM1NjFkNDk5NjA1NTY0MWJiYmI3NGVkYTU4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDM4MGVhOTdkYjBlZGUwOTVhMGRkODdjZTMwMDNkNDZjMTk3MTkxZjkyNDIwNmU0M2Y3NzZmYzc3ZTUxZjA5IgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC4zLjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjIuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuMy42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMKaW5kZXggNmQzNmQ4Ny4uZTI3M2E4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExLmluYwpAQCAtMSw4ICsxLDcgQEAKIFNVTU1BUlkgPSAiU2VhbWxlc3Mgb3BlcmFiaWxpdHkgYmV0d2VlbiBDKysxMSBhbmQgUHl0aG9uIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dqYWtvYi9weWJpbmQxMSIKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTQ4NWQ5ZjhhYTFhYjUxM2JlYzBkZTJmNTVjZDY5NjcyIgotUFIgPSAicjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05YjI3ZmFjN2U5MzczMjNlM2RlOWNhM2E3ZGIzOGUzNyIKIAotU1JDX1VSSVttZDVzdW1dID0gImM5NjEwMzE2OGU5YWJjZWFhNmQ0NmY2MDc0ZGNhZjM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMWE0ODI0YWFkODhiMTA3M2ZlOGRiZDIxNjgzZTFlNTIyOGYzZWQzYjI5YzI3ODVmYmY1ZGVhNmJmMTA2M2MiCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ1NGQ4OTkxZjQ3YmVmZTU2ZDQxMjZkZjg2MWZjOTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk2YTkyNGZhZTZlMjcyMWVmYmYyNGY0NzU2MTI4NGZkMWVhMGI2NTU2MTlhODYyMWM0NDIzMDM2MTgzYjgyNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuMC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjIuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYjljNTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6XzAuMjIuYmIKQEAgLTAsMCArMSwxNyBAQAorREVTQ1JJUFRJT04gPSAiQmx1ZXRvb3RoIFB5dGhvbiBleHRlbnNpb24gbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL2thcnVsaXMuZ2l0aHViLmlvL3B5Ymx1ZXovIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK1JERVBFTkRTXyR7UE59ID0gImJsdWV6NSIKK0RFUEVORFMgPSAiYmx1ZXo1IgorCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YTcxZDA0NzVkMDhlZWU3NmQ4YjZkMGM2ZGJlYzU0MyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9jMS85OC8zMTQ5NDgxZDUwOGJlZTE3NDMzNWJlNjcyNTg4MGYwMGQyOTdhZmViZTc1YzE1ZTkxN2FmOGY2ZmUxNjkvUHlCbHVlei0wLjIyLnppcCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OWRhYjlkNWE4ZjBiNzk4YzgxMjVjN2Y2NDliZTNjZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2UwMDY3MTZhNTRkOWQxOGU4MTg2YTNmMWM4YjEyYThlNmJlZmVjZmZlOGZkNTgyOGEyOTFmYjY5NGNlNDlkIgorCitTID0gIiR7V09SS0RJUn0vUHlCbHVlei0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jCmluZGV4IDQ5MTNmNDIuLjZiMDU0ODIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyLmluYwpAQCAtMSw5ICsxLDEwIEBACiBTVU1NQVJZID0gIlBhcnNlciBvZiB0aGUgQyBsYW5ndWFnZSwgd3JpdHRlbiBpbiBwdXJlIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lbGliZW4vcHljcGFyc2VyIgogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMGNmY2E3YmJjMDYxMGY4NDk3MDdkOWU0ZmQ4MmVhYyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZjFjZWRiNGU2NDEwYTg4Y2U4ZTMwYjkxMDc5MTY5IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2E5OGRjYjUwYmMxMjc2ZjIzMDExOGY2YWY1YTQwYzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGFhYzMxZTkxN2MyNGNiMzM1N2Y1YTRkNTU2NmYyY2M5MWExOWNhNDE4NjJmNmMzYzIyZGM2MGE2Mjk2NzNiNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MjM3MGRhNTQzNTgyMDJhNjAxMzBlMjIzZDQ4ODEzNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OWE4Y2EwM2UyOTg1MWQ5NjYxNmFkMDQwNGI0YWFkN2Q5ZWUxNmYyNWM5Zjk3MDhhMTFmYWYyODEwZjdiMjI2IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyXzIuMTguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2NTM3OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBpbnRlcmZhY2UgZm9yIHRoZSBGaXJtYXRhIHByb3RvY29sIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NGRkY2VmNDMwYjdjNDRjYWEyMmIyZmY0YjM3YTNkZiIKK1BZUElfUEFDS0FHRSA9ICJweUZpcm1hdGEiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tcHlzZXJpYWwgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWU0YzIzY2E1YzM1ZDMwOTFkNTUwYTYzNTQwODExYTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjU0ZDQ5ZDY2YTlkOTNjMWVmOWM3MmNhMDEyNjQ0MTRjYjJkZTE3N2JhYWMxMTZjMTJkNWNjZTBjMzgwMTYwYyIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3ZTBmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YV8xLjAuMy5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHlmaXJtYXRhLmluYworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTViY2U2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYwpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZPSJQeWxpbnQgaXMgYSBQeXRob24gc291cmNlIGNvZGUgYW5hbHl6ZXIiCitIT01FUEFHRT0gImh0dHA6Ly93d3cucHlsaW50Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5OGExZWU5ODVhM2ViYzg3NmEyMGViNzU3N2RiYWI2OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjY1YjM4MTVjM2JmNzUyNGI4NDU3MTFkNTRjNDI0MmU0MDU3ZGQ5MzgyNjU4NjYyMDIzOWVjZGZlNTkxZmIxIgorCitpbmhlcml0IHB5cGkKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFzdHJvaWQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pc29ydCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCl7CisgICAgcm0gJHtEfSR7YmluZGlyfS9weWxpbnQKKyAgICBjYXQgPj4gJHtEfSR7YmluZGlyfS9weWxpbnQgPDxFT0YKKyMhL3Vzci9iaW4vZW52ICR7UFlUSE9OX1BOfQorZnJvbSBweWxpbnQgaW1wb3J0IHJ1bl9weWxpbnQKK3J1bl9weWxpbnQoKQorRU9GCisgICAgY2htb2QgNzU1ICR7RH0ke2JpbmRpcn0vcHlsaW50CisgICAgc2VkIC1pIC1lICdzOl4jIS91c3IvYmluL3B5dGhvbjojIS91c3IvYmluL2VudlwgJHtQWVRIT05fUE59OmcnICR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlsaW50L3Rlc3QvZGF0YS9hc2NyaXB0Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS42LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YjRhZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWT0iUHlsaW50IGlzIGEgUHl0aG9uIHNvdXJjZSBjb2RlIGFuYWx5emVyIgotSE9NRVBBR0U9ICJodHRwOi8vd3d3LnB5bGludC5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzFkYTIxODViZjU5MTQyNDc5ZTRmYTE2ZDhhOWUzNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTY3Mzk4NGE4ZGQ3OGU0YThiOGNmZGVlNTM1OWExMzA5ZDgzM2NmMzg0MDUwMDhmNGEyNDk5OTRhODQ1NjcxOSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1jb2RlY3MgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb250ZXh0bGliIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tY29yZSBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpc3R1dGlscyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWlvIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLW11bHRpcHJvY2Vzc2luZyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldHNlcnZlciBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1yZSBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tc2l4IFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tc3RyaW5nb2xkIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXRleHR1dGlscyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tYXN0cm9pZCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXdyYXB0IFwKLSAgICAgICAgICAgICAgICAgICBweXRob24taXNvcnQgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1sYXp5LW9iamVjdC1wcm94eSBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpewotICAgIHJtICR7RH0ke2JpbmRpcn0vcHlsaW50Ci0gICAgY2F0ID4+ICR7RH0ke2JpbmRpcn0vcHlsaW50IDw8RU9GCi0jIS91c3IvYmluL2VudiBweXRob24KLWZyb20gcHlsaW50IGltcG9ydCBydW5fcHlsaW50Ci1ydW5fcHlsaW50KCkKLUVPRgotICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L3B5bGludAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNTFkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS43LjQuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHNldHVwdG9vbHMgcHl0aG9uLWRpcgorcmVxdWlyZSBweXRob24tcHlsaW50LmluYworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMKaW5kZXggZmUyNWI1MC4uMjFiYTdiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jCkBAIC0xLDkgKzEsOSBAQAogREVTQ1JJUFRJT04gPSAiUHl0aG9uIEFQSSBmb3IgTUlTUCIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NSVNQL1B5TUlTUCIKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTJlMWVmZGM0MzM0OThjZWJkMzNlYzI3N2FkODc0MWU1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTM2MzljZjU3ODBmNzFiMTI1ZDNlOWQxZGMxMjdjMjAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MzIwZjQxYmY5NmNmMjJkMTNhZjdlYjMxZTFkMzIxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzdiZDk3ZjBlYTljN2ViMTkzNTkwMmYxYmM2ZmMxZWMyN2ViYTg2MDU2YzViOTM4MjM0YTcyMjk4OTFkNWEyIgorU1JDX1VSSVttZDVzdW1dID0gIjIwMjRiYWJkOTdhYjU3Y2EwMzYwMzk0ZWRjMzdmMmI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc0ODBhY2FkYThjYmE5NDcyYTg1MDcwYzU3YmFhZDg5YWU5ZGVlZDgyNmE3NTE1YTRjMTQ5YWM0ODkyMGMyNzMiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgJHtQWVRIT05fUE59LXJlcXVlc3RzICR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1qc29uc2NoZW1hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwXzIuNC42Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuODAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuNjcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuODAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMKaW5kZXggZTcwOWEzNi4uN2YxOTliNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMKQEAgLTgsMTIgKzgsMjAgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJhOTQ0OTQyZTE0OTZhZjE4ODY5MDNkMjc0ZGVkYjEzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYWE3N2Y4OGU1MWUyODFjOWYzMjhjZWE3MDFiYjZmM2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM1OTM0OWM2YzlmZjlmNDgyODA1Zjg5ZTY2ZTQ3Njg0NjMxN2RjN2IxZWVhOTc5ZDdkYTljMDg1N2VlMjcyMSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNWFlNTMwNzNhMjU2MDM1OTFlMDg1YjE4YmM1YTBlYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODIwZDkzNDE0ZjNiZWMxZmE0NTZjODRhZmJkNGFmMWI0M2ZmNDEzNjYzMjE2MTlkYjc0ZTZiYzA2NWQ2OTI0IgorCitQQUNLQUdFUyA9KyAiJHtQWVRIT05fUE59LWJzb24iCisKK0ZJTEVTXyR7UFlUSE9OX1BOfS1ic29uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2Jzb24vKiIKKworUkRFUEVORFNfJHtQWVRIT05fUE59LWJzb24gKz0gIiBcCisgICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tYnNvbiBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjUuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjQuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjUuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMKaW5kZXggNTc5Y2E2MC4uMWJmODMyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCkBAIC0xLDExICsxLDEyIEBACiBTVU1NQVJZID0gIlNpbXBsZSBQeXRob24gd3JhcHBlciBhcm91bmQgdGhlIE9wZW5TU0wgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlvcGVuc3NsLm9yZy8iCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKIAogREVQRU5EUyArPSAib3BlbnNzbCAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjYzNTUwMzc1OGM2NWVhNmY3MGQxOGQxYjE4ZTQ2ZDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc3OWEzYmJiNzRlNzlkYjIzNGFmNmEwODc3NTU2OGM2NzY5YjU4MjFmYWVjZjZlMmY0MTQzZWRiMjI3NTE2ZSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOWRjZDMwN2I4ZDIwNjhmOWRkNWFhYTNhM2E4ODk5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTYzMGI5MDY0YTgyZTA0ZDgyNDJlYTAxZDdjOTNkNzBlYzMyMGY1ZTNlZDQ4ZTk1ZmNhYmM2YjFkMGY2Yzc2IgogCiBQWVBJX1BBQ0tBR0UgPSAicHlPcGVuU1NMIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTYuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE3LjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE2LjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE3LjMuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKaW5kZXggMDMzZTBkYi4uMTlmNmQ1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCkBAIC0xNywzICsxNyw1IEBACiAgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMWQ0Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIHB1cmUgUHl0aG9uIG5ldGxpbmsgYW5kIExpbnV4IG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorTElDRU5TRSA9ICJHUEx2MiAmIEFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTC52MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5BcGFjaGUudjI7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMzYWRiMzYyYjY2MDNjNzI2OWMwYjNkZjMwNDVhNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNkZjQ0NjU2Y2Y2MjMzNjlmMGNiZjE4M2Q5ZDE0YTFhNTBlYmRmZmJkNTBkNGUzMGZmZGE2MmMwYTA1ZDdiMyIKKworU1JDX1VSSSArPSAiZmlsZTovL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2giCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXJvdXRlMjoiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgJHtQWVRIT05fUE59LXNpbXBsZWpzb24gXAorICAke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIFwKKyAgJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCisgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjMuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjMuMjIuYmIKaW5kZXggNzlkM2JkZC4uN2I5YzhlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC4zLjIyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuMy4yMi5iYgpAQCAtMSwyNCArMSwyIEBACi1TVU1NQVJZID0gIkEgcHVyZSBQeXRob24gbmV0bGluayBhbmQgTGludXggbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkdQTHYyICYgQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMLnYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkFwYWNoZS52MjttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzNhZGIzNjJiNjYwM2M3MjY5YzBiM2RmMzA0NWE1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2RmNDQ2NTZjZjYyMzM2OWYwY2JmMTgzZDlkMTRhMWE1MGViZGZmYmQ1MGQ0ZTMwZmZkYTYyYzBhMDVkN2IzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vaW1wb3J0LXNpbXBsZWpzb24tYXMtanNvbi5wYXRjaCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1zaW1wbGVqc29uIFwKLSAgcHl0aG9uLW11bHRpcHJvY2Vzc2luZyBcCi0gIHB5dGhvbi1pbyBweXRob24tcHByaW50IFwKLSAgcHl0aG9uLXBpY2tsZSBcCi0gIHB5dGhvbi1sb2dnaW5nIFwKLSAgcHl0aG9uLXRocmVhZGluZyBcCi0gIHB5dGhvbi10ZXh0dXRpbHMgXAotICBweXRob24tc3VicHJvY2VzcyBcCi0gIHB5dGhvbi1uZXRjbGllbnQgXAotIgorcmVxdWlyZSBweXRob24tcHlyb3V0ZTIuaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYwppbmRleCAyNTA4ZTc2Li45OWM2ZmM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWwuaW5jCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCiAiCiAKLVJTUkNfVVJJW21kNXN1bV0gPSAiNmFmZTRjMmU0N2JjZWM2ZWI3MDUxYjhjMWNlMTlkNTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk0OWNkZGZmYzJiMDU2ODMwNjVhM2NkMjM0NTExNGIxYTQ5YjA4ZGY4Y2I4NDNkNjliYTk5ZGMzZTE5ZWRjMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZDYxODNiMTU1MTlhMGFlOTY2NzVlOWMzMzMwYzY5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZTJkNDAxZmRlZTBlYWI5OTZjZjczNGU2Nzc3M2EwMTQzYjkzMjc3MmNhOGI0MjQ1MTQ0MGNmZWQ5NDJjNjI3IgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbF8zLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYwppbmRleCA1YWVjNmZjLi5jZjk1MDlhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWQ0NTdiY2ZmYjk2NjFiNDVmNzk5ZDRlZmVlNzJmMTYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NzFmNGMyMzk4MmZhODZiZjBlN2E0NDFmMWI2Yzg4MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjQxOWEyMjVmZjVkY2ZjM2M5Njk1ZWY4ZmM5YjRkOGNjOTk2NThlNjUwYzZkNDcxOGQ0YzhmNDUxZTYzZjQxIgorU1JDX1VSSVttZDVzdW1dID0gIjA3MDA3ZWM3ZWQ0NjI5MmRhYjA2MDEzZjJlM2FmMzY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwMDMyOWYyN2VmYTE1N2RiN2VmZTNjYTI2ZmNkNjkwMzNjZDYxZjgzODIyNDYxZWUzZjhhMzUzYjQ4ZTMzY2YiCiAKIFBZUElfUEFDS0FHRSA9ICJQeVNvY2tzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzXzEuNi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjYuNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjYuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjYuNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYwppbmRleCA4NWE4ZGUxLi5jMTczYTE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYwpAQCAtMiw5ICsyLDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTM4Yjk3MWMyYjRjMzNiOTc4ZDFiOWM5ZWNlOWFlNjMiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZGI3M2ViMThlY2EyNzI3OTQ0YTJkY2Y5NjNjNWE4MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODNhMzFlYWI0NWUzNzUyNDBlMjUwMTYxYTU1NjE2M2JjOGQyNTBlZGFiYTk3OTYwOTA5MzM4YzI3M2E4OWIzIgotCitTUkNfVVJJW21kNXN1bV0gPSAiYThkZDU3YzgwY2RlMzdhNTg3ZGQ4YzM3NzQwYzFhYjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM5MDkzZTdhMTg3ODA0MDlkOWEzODlmMjAzNjZmMmZkMzlhY2ZiMWRiNjE1NDVmZGIyZTkwY2RiZDBiY2FlNCIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfMi4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8yLjEyLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfMi4xMS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzIuMTIuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC5pbmMKaW5kZXggYzljOWJiZi4uNjE0MDI1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jCkBAIC0xLDkgKzEsMTMgQEAKIFNVTU1BUlkgPSAiU2ltcGxlIHBvd2VyZnVsIHRldGluZyB3aXRoIHB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXRlc3Qub3JnIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOGE1NjA5NjA4ZDlhNWExODA3MDViMGZhMjk4YWUwMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMzOWIyNDk2NWY0YWVmNjQyMjJjYjM1ZGU5ZDQ3Y2M0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjYzOTU5MmZhNDMwNTY3ZDAyNDE4OWYwOTdmY2RiZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjQzNDM0YTlmMWExODgyNzFkYTM1ZTIwMDY0Y2I4YjZjNTQ0MDk3NmM1YmI1NDFkYzdiNWIwZTNjZjc1ZDk0MCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MDFjMDA1YmQ1N2Y3MWU2M2JhMDE1YWIwODZmZTY3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDZlNDllMDM0MGE1MzI3NjQ5OTFjNDk4MjQ0YTYwZTNhMzdkNzQyNGE1MzJiM2ZmMWE2YTc2NTNmMWE0MDNhIgorCitTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9weXRlc3RfdmVyc2lvbl9maXgucGF0Y2ggIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKQEAgLTEzLDQgKzE3LDYgQEAKICAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCiAiCiAKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXRlc3Q6IgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyODNiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGUyZDgxMDA5Yzc5MGI0ZWJlY2VkODQwOGI2YmFlNzgwNjBjYWJjYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDA5OjM1OjUxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBzZXR1cC5weTogcmVtb3ZlIHRoZSBzZXR1cF9yZXF1aXJlcyBmb3Igc2V0dXB0b29scy1zY20KKworVGhlIHNldHVwX3JlcXVpcmVzIGFyZ3VtZW50IGZvcmNlcyB0aGUgZG93bmxvYWQgb2YgdGhlIGVnZyBmaWxlIGZvciBzZXR1cHRvb2xzLXNjbQorZHVyaW5nIHRoZSBkb19jb21waWxlIHBoYXNlLiAgVGhpcyBkb3dubG9hZCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdHlwaWNhbCBmZXRjaAorYW5kIG1pcnJvciBzdHJ1Y3R1cmUuICBUaGUgb25seSB1c2FnZSBvZiBzY20gaXMgdGhlIGdlbmVyYXRpb24gb2YgdGhlIF92ZXJzaW9uLnB5CitmaWxlIGFuZCBpbiB0aGUgcmVsZWFzZSB0YXJiYWxsIGl0IGlzIGFscmVhZHkgY29ycmVjdGx5IGNyZWF0ZWQKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KKy0tLQorIHNldHVwLnB5IHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDc1MTg2OGMuLmVmNmViZjEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC03MSw3ICs3MSw2IEBAIGRlZiBtYWluKCk6CisgICAgICAgICBrZXl3b3Jkcz0idGVzdCB1bml0dGVzdCIsCisgICAgICAgICBjbWRjbGFzcz17J3Rlc3QnOiBQeVRlc3R9LAorICAgICAgICAgIyB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBlbmFibGVkIGZvciByZWxlYXNlCistICAgICAgICBzZXR1cF9yZXF1aXJlcz1bJ3NldHVwdG9vbHMtc2NtJ10sCisgICAgICAgICBpbnN0YWxsX3JlcXVpcmVzPWluc3RhbGxfcmVxdWlyZXMsCisgICAgICAgICBleHRyYXNfcmVxdWlyZT1leHRyYXNfcmVxdWlyZSwKKyAgICAgICAgIHBhY2thZ2VzPVsnX3B5dGVzdCcsICdfcHl0ZXN0LmFzc2VydGlvbicsICdfcHl0ZXN0Ll9jb2RlJywgJ19weXRlc3QudmVuZG9yZWRfcGFja2FnZXMnXSwKKy0tIAorMi43LjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC9weXRlc3RfdmVyc2lvbl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvcHl0ZXN0X3ZlcnNpb25fZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOGY4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvcHl0ZXN0X3ZlcnNpb25fZml4LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Ugc3BlY2lmaWMpIAorCitweXRob24tcHl0ZXN0OiByZW1vdmUgZmV0Y2ggZHVyaW5nIGRvX2NvbXBpbGUgcGhhc2UKK2NvbW1pdDogYzk3NGZiZjllYmYxODU1NTJhYjY1MzAxZTA3YWY0NGYzNjUxN2FiZiAKKworaW50cm9kdWNlZCBhbiBpc3N1ZSBieSBtYWtpbmcgdGhlIHZlcnNpb24gMC4wLjAKK3RoaXMgZml4ZXMgdGhhdAorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IHB5dGVzdC0zLjIuMi9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHB5dGVzdC0zLjIuMi5vcmlnL3NldHVwLnB5CisrKysgcHl0ZXN0LTMuMi4yL3NldHVwLnB5CitAQCAtMSw1ICsxLDYgQEAKKyBpbXBvcnQgb3MKKyBpbXBvcnQgc3lzCisraW1wb3J0IHJlCisgaW1wb3J0IHNldHVwdG9vbHMKKyBpbXBvcnQgcGtnX3Jlc291cmNlcworIGZyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIENvbW1hbmQKK0BAIC0yMiw2ICsyMywxOCBAQCBjbGFzc2lmaWVycyA9IFsKKyB3aXRoIG9wZW4oJ1JFQURNRS5yc3QnKSBhcyBmZDoKKyAgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGZkLnJlYWQoKQorIAorK2RlZiByZWFkKCpuYW1lcywgKiprd2FyZ3MpOgorKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCAqbmFtZXMpLCAncicpIGFzIGZwOgorKyAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQorKworK2RlZiBmaW5kX3ZlcnNpb24oKmZpbGVfcGF0aHMpOgorKyAgICB2ZXJzaW9uX2ZpbGUgPSByZWFkKCpmaWxlX3BhdGhzKQorKyAgICB2ZXJzaW9uX21hdGNoID0gcmUuc2VhcmNoKHIiXnZlcnNpb24gPSBbJ1wnXShbXidcIl0qKVsnXCddIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2ZpbGUsIHJlLk0pCisrCisrICAgIGlmIHZlcnNpb25fbWF0Y2g6CisrICAgICAgICByZXR1cm4gdmVyc2lvbl9tYXRjaC5ncm91cCgxKQorKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZlcnNpb24gc3RyaW5nLiIpCisgCisgZGVmIGhhc19lbnZpcm9ubWVudF9tYXJrZXJfc3VwcG9ydCgpOgorICAgICAiIiIKK0BAIC01OSw5ICs3Miw3IEBAIGRlZiBtYWluKCk6CisgICAgICAgICBuYW1lPSdweXRlc3QnLAorICAgICAgICAgZGVzY3JpcHRpb249J3B5dGVzdDogc2ltcGxlIHBvd2VyZnVsIHRlc3Rpbmcgd2l0aCBQeXRob24nLAorICAgICAgICAgbG9uZ19kZXNjcmlwdGlvbj1sb25nX2Rlc2NyaXB0aW9uLAorLSAgICAgICAgdXNlX3NjbV92ZXJzaW9uPXsKKy0gICAgICAgICAgICAnd3JpdGVfdG8nOiAnX3B5dGVzdC9fdmVyc2lvbi5weScsCistICAgICAgICB9LAorKwl2ZXJzaW9uPWZpbmRfdmVyc2lvbigiX3B5dGVzdCIsICJfdmVyc2lvbi5weSIpLAorICAgICAgICAgdXJsPSdodHRwOi8vcHl0ZXN0Lm9yZycsCisgICAgICAgICBsaWNlbnNlPSdNSVQgbGljZW5zZScsCisgICAgICAgICBwbGF0Zm9ybXM9Wyd1bml4JywgJ2xpbnV4JywgJ29zeCcsICdjeWd3aW4nLCAnd2luMzInXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdF8zLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdF8zLjIuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzMuMC42LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy4yLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNGM1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQSBsaWJ1ZGV2IGJpbmRpbmciCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Y0ZDlkYjdkNzcyNjIyMTQ0Y2ExYmU2YjVkOTM1M2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk0YjdhMTAwMTUwMTE0NzQ4YWFhM2I3MDY2MzQ4NWRkMzYwNDU3YTcwOWJmYWFhZmU1YTk3NzM3MTAzM2YyYiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pICIvaW1wb3J0IHB5dWRldi9kIiAke1N9L3NldHVwLnB5CisgICAgc2VkIC1pICJzL3N0cihweXVkZXYuX192ZXJzaW9uX18pLycke1BWfScvZyIgJHtTfS9zZXR1cC5weQorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiCmluZGV4IGIwYTFhY2IuLjMyNTczYjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYgpAQCAtMSwyMiArMSw4IEBACi1TVU1NQVJZID0gIkEgbGlidWRldiBiaW5kaW5nIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSVttZDVzdW1dID0gImNmNGQ5ZGI3ZDc3MjYyMjE0NGNhMWJlNmI1ZDkzNTNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5NGI3YTEwMDE1MDExNDc0OGFhYTNiNzA2NjM0ODVkZDM2MDQ1N2E3MDliZmFhYWZlNWE5NzczNzEwMzNmMmIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAiL2ltcG9ydCBweXVkZXYvZCIgJHtTfS9zZXR1cC5weQotICAgIHNlZCAtaSAicy9zdHIocHl1ZGV2Ll9fdmVyc2lvbl9fKS8nJHtQVn0nL2ciICR7U30vc2V0dXAucHkKLX0KK3JlcXVpcmUgcHl0aG9uLXB5dWRldi5pbmMKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyMDEwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiLmluYwpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIlB5VVNCIHByb3ZpZGVzIFVTQiBhY2Nlc3Mgb24gdGhlIFB5dGhvbiBsYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXVzYi5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MGQ0NmJkYTYyNDhhMGI0YTQ2YTZkNTlhNjZlZTA4ZSIKK0RFUEVORFMgKz0gImxpYnVzYjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYzEyZTgzZmYzZWYxMDQ1ZDQzMDZkMTNhOTk1NWZjMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGVjNjYwNzdiZGNkNmYxYWE5ZTg5MmEwYTM1YTU0YmIzYzFlYzU2YWE3NDBlYWQ2NDM0OWMxOGYwMTg2ZDE5IgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiXzEuMC4wYjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMGIyLmJiCmluZGV4IGQyNzlhYmMuLmJiNzNkOWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiXzEuMC4wYjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjBiMi5iYgpAQCAtMSwxMCArMSwyIEBACi1TVU1NQVJZID0gIlB5VVNCIHByb3ZpZGVzIFVTQiBhY2Nlc3Mgb24gdGhlIFB5dGhvbiBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXVzYi5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MGQ0NmJkYTYyNDhhMGI0YTQ2YTZkNTlhNjZlZTA4ZSIKLURFUEVORFMgPSAibGlidXNiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImJjMTJlODNmZjNlZjEwNDVkNDMwNmQxM2E5OTU1ZmMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0ZWM2NjA3N2JkY2Q2ZjFhYTllODkyYTBhMzVhNTRiYjNjMWVjNTZhYTc0MGVhZDY0MzQ5YzE4ZjAxODZkMTkiCi0KLWluaGVyaXQgcHlwaSBkaXN0dXRpbHMKK2luaGVyaXQgZGlzdHV0aWxzCityZXF1aXJlIHB5dGhvbi1weXVzYi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYwppbmRleCAxN2ZmMjMxLi41NzFiYjA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXMuaW5jCkBAIC00LDUgKzQsNSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MWQ5YWQ1NjI5OWFiNjBiYTdiZTY1YTYyMTAwNGYyNyIKIAotU1JDX1VSSVttZDVzdW1dID0gIjNiMjZjMmI5NzAzYjRiNTZiMzBhMWFkNTA4ZTMxMDgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkZmJhZTZhY2ZjNTRlZGYwYTdhNDE1Yjk5ZTBiMjFjMGEzYzI3YTdmNzg3YjI5MmVlYTcyN2IxZmFjYzU1MzMiCitTUkNfVVJJW21kNXN1bV0gPSAiMDQ4MzQ4ZDhjZmUwYjVkMGJiYTJmNGQ4MzUwMDVjM2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTIyY2E5OTNjZWEyOTYyZGJiNTg4ZjlmMzBkMDAxNWFjNGFmY2M0NWJlZTI3ZDM5NzhjMGRiZTllOTdjNmMwZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzXzIuMTAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzXzIuMTAuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYwppbmRleCBiNjZmNjZlLi41ZDZkY2E1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jCkBAIC0xLDEwICsxLDEyIEBACiBERVNDUklQVElPTiA9ICJQeXRob24gSFRUUCBmb3IgSHVtYW5zLiIKIEhPTUVQQUdFID0gImh0dHA6Ly9weXRob24tcmVxdWVzdHMub3JnIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDliYjM1MTU4NjljMGY0MjZjYjg0NDFjODk5YWU3ZjUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NzlkNmEyM2IxNDNlMTNlYTBlNWUzYWE4MTI0ODgyMCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjkyMWVjNmI0OGYyZGRhZmM4YmI2MTYwOTU3YmFmNDQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MjJjZDA5NzYyZmFhMDEyNzYyMzAyNzBmZjE2YWY3YWNmN2M1YzQ1ZDYyMzg2OGQ5YmExMTZmMTU3OTFjZTgiCitTUkNfVVJJW21kNXN1bV0gPSAiMDgxNDEyYjJlZjc5YmRjNDgyMjk4OTFhZjEzZjRkODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM0NDNlNzMyNGJhNWI4NTA3MGM0YTgxOGFkZTI4YmZhYmVkZjE2ZWExMDIwNmRhMTEzMmVkYWE2ZGRhMjM3ZSIKKworaW5oZXJpdCBweXBpCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCkBAIC0xNSw2ICsxNyw4IEBACiAgICAgJHtQWVRIT05fUE59LXB5b3BlbnNzbCBcCiAgICAgJHtQWVRIT05fUE59LXB5c29ja3MgXAogICAgICR7UFlUSE9OX1BOfS11cmxsaWIzIFwKKyAgICAke1BZVEhPTl9QTn0tY2hhcmRldCBcCisgICAgJHtQWVRIT05fUE59LWlkbmEgXAogIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyN2JjOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcmVxdWVzdHMuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0temxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMTguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMTguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDdhMjlmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4xOC40LmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS16bGliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMGU1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeS5pbmMKQEAgLTAsMCArMSwxNiBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JiNDI0Mi9zZG5vdGlmeSIKK1NVTU1BUlkgPSAiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBzeXN0ZW1kJ3Mgc2VydmljZSBub3RpZmljYXRpb24gcHJvdG9jb2wgKHNkX25vdGlmeSkiCisKK0RFU0NSSVBUSU9OID0gIlwKKyAgc2Rub3RpZnkgaXMgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3lzdGVtZCBzZF9ub3RpZnkgcHJvdG9jb2wuIFwKKyAgVGhpcyBwcm90b2NvbCBjYW4gYmUgdXNlZCB0byBpbmZvcm0gc3lzdGVtZCBhYm91dCBzZXJ2aWNlIHN0YXJ0LXVwIGNvbXBsZXRpb24sIFwKKyAgd2F0Y2hkb2cgZXZlbnRzLCBhbmQgb3RoZXIgc2VydmljZSBzdGF0dXMgY2hhbmdlcy4gXAorICBUaHVzLCB0aGlzIHBhY2thZ2UgY2FuIGJlIHVzZWQgdG8gd3JpdGUgc3lzdGVtIHNlcnZpY2VzIGluIFB5dGhvbiB0aGF0IHBsYXkgbmljZWx5IHdpdGggc3lzdGVtZC4gXAorICAiCisKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9Y2M1NzJjY2M0YjE4YTRiN2QxM2JlNWQwMWJjODIxM2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDlkZGNhMWM3MGJlMTY5N2ZlY2M0NDNmYjFmZGIxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Mzk3N2ZjNzQ2YjM2Y2M0MTE4NGRkNDNjM2ZlODEzMjNlN2I4YjA2YzJiYjA4MjZjNGY1OWEyMGM1NmJiOWYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeV8wLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWFlM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMgcHlwaQorcmVxdWlyZSBweXRob24tc2Rub3RpZnkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ODI0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiB0aGUgc2VsZWN0b3JzIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjQiCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0xY2ZiYmY1OTBkOGQ1YjdmZTkzNzUxNjIxN2I3NzhiMyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwMzE5NGIxMGYzNWE1MjU4ZTA2NDI3MTJmZGQzNzUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0YjM3NDNiOTA0NjQ2MWFlYmJjZDEzYzE1ZTc5YWI5MWU3OWFjZmI2ZTAzMGI1NGEwZWM2MzYwYWUwYmJjNTIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgIiAgICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbGVjdG9yczM0XzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbGVjdG9yczM0XzEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTU0NWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4yLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiQmFja3BvcnQgb2YgdGhlIHNlbGVjdG9ycyBtb2R1bGUgZnJvbSBQeXRob24gMy40IgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MmZhZTAyMjJjMzFkNmMxMDQ4OGQ0YWI5M2E4NjNhZjciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYzg1NWExYzg4MzlhODExNDc2YzAxOWRjMDdkOTJkZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWY1MDY2MzM3ZjhhNzZmYjUyMzNmMjY3ODczZjg5YTI3YTE3YzEwYmY3OTU3NTk1NDg5NGJiNzE2ODY0NTFjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICIgICAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCmluZGV4IDBiMWFhOTEuLjY0NTRlZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCkBAIC0xLDkgKzEsOSBAQAogU1VNTUFSWSA9ICJTZXJpYWxpemF0aW9uIGJhc2VkIG9uIGFzdC5saXRlcmFsX2V2YWwiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0zNzczZTM5YzQ5MWJiMWY5Y2NjOTgzODlkNTcxNjlkNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05ZjYxMWQ0YzllMjgxNmQzODdiYWI2NGM0MGQ5MzI5NCIKIAotU1JDX1VSSVttZDVzdW1dID0gImNkZWY1OTZmNzI3Y2I2YjQxNzZjODk3NjlkMmQ0MWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0NmIyYzgzN2Y4ODk5NzFkZjM1NzVhZjlkYWRkOGYwOWJmZTQ4NTQ5ZWJjMWI5ZjY0MzQyNjNiNjUzNzA3Y2UiCitTUkNfVVJJW21kNXN1bV0gPSAiZDlkNmFmYTUxZjI1NjBjZjU5MzNkY2RmZDk0NzAxMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODQ4MGNlM2Q4ODY0Yjg5NzRkOWZlMzk2OTk4YzZhN2RhZTk2ZWRiNjhlZGY5MDViZmQzMmVhOWExMTg1M2JhNSIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjE5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwppbmRleCAzMjQ5ODcwLi44MWJiZjMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jCkBAIC0yLDggKzIsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MzhjMzY2ZjY5YjcyYzVkZjA1Yzk2ZGZmNzliMzVmMiIKIAotU1JDX1VSSVttZDVzdW1dID0gImI2OTE2Yzc4ZWQ2MjUzZDY2MDI0NDRmYWQ0Mjc5YzViIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZjEyZDA1YWEyMTU1YTQ2YWEzNTc0NTM3NTdmZmRjNDdkODdmODM5ZTYyMTE0ZjA0MmJjZWFjNmE2MTllMmYiCitTUkNfVVJJW21kNXN1bV0gPSAiZjE3NDkzZDUzZjBkODQyYmIwMTUyZjIxNDc3NTY0MGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDlhYjQ2ODU1ODk5ODZhNDJkYTg1NzA2YjMzMTFhMmY3NGYxYWY1NjdkMzlmZWU2Y2IxZTA4OGQ3YTc1ZmI1ZiIKIAogUFlQSV9QQUNLQUdFID0gInNldHVwdG9vbHNfc2NtIgogaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzEuMTUuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jCmluZGV4IDJlZWQxOTkuLjEzYzA0NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jCkBAIC00LDggKzQsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MjZhOTYzMWQyMjg1MWE3YTk3MGIxYTY3NzM2OGIxNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTNiZTYyMmU4ODMyM2M2ZjQzZmFkNjFmZmQwNWJlYmU3M2I5ZmQ5ODYzYTQ2ZDY4YjA1MmQyYWE3ZDcxY2UyIgorU1JDX1VSSVttZDVzdW1dID0gIjZlMmYxYmQ1ZmIwYTkyNmZhY2Y1ZDg5ZDIxN2E3MTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxYTIyZDQ5ZGRkOWExNjhiMTM2ZjI2Y2FjODdkOWEzMzU2NjBjZTA3YWE1YzYzMGI4ZTM2MDdkNmY0MzI1ZTciCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xMS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTAuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjExLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTE1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1Y2VjNWJmMDRkZDA4MjBkMGExODUzM2VhN2M3NzRhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDEyNzg5ZjliYWY3ZTlmYjI1MjRjMGM2NGYxNzczZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzBlOGE3N2JlZWQ0NTYyZTdmMTRmZTIzYTc4NmI1NGY2Mjk2ZTM0MzQ0YzIzYmM0MmYwN2IxNTAxOGZmOThlOSIKKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgJHtQWVRIT059IHNldHVwLnB5IC1xIGJkaXN0X2VnZyAtLWRpc3QtZGlyIC4vCit9Citkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8qLmVnZyAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LworfQorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNzU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMKaW5kZXggMDdlNzBkNy4uY2M4ZTgyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMKQEAgLTcsOCArNyw4IEBACiBQWVBJX1BBQ0tBR0UgPSAiU1FMQWxjaGVteSIKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiOTM4YjFlNWNhMjM3MmMzZWM5YTU4Njk5NmEzYjU2NTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY1Y2RjNzNjZDM0ODQ0OGVmMDE2NGY2Yzc3ZDQ1YTlmMjdjYTU3NWQzYzVkNzFjY2MzM2FkZjY4NGJjNmVmMCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMzI2NjlkNTNlOTAzYjM1MTIwNjUwMjY1NTJmM2JmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTE5MWUyOWUzNWI2ZmUxYWVmNzE3NWEwOWIxNzA3ZWJiN2JkMDhkMGIxN2NiMGZlYWRhNzZjNDllNWEyZDFlIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tanNvbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteV8xLjEuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjE0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdWJwcm9jZXNzMzJfMy4yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdWJwcm9jZXNzMzJfMy4yLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQzNzA2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnByb2Nlc3MzMl8zLjIuNy5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkEgYmFja3BvcnQgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIGZyb20gUHl0aG9uIDMuMiBmb3IgdXNlIG9uIDIueCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBiYWNrcG9ydCBvZiB0aGUgc3VicHJvY2VzcyBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZSBcCitmcm9tIFB5dGhvbiAzLjIgLSAzLjUgZm9yIHVzZSBvbiBQeXRob24gMi4gSXQgaW5jbHVkZXMgYnVnZml4ZXMgYW5kIHNvbWUgbmV3IFwKK2ZlYXR1cmVzLiAgT24gUE9TSVggc3lzdGVtcyBpdCBpcyBndWFyYW50ZWVkIHRvIGJlIHJlbGlhYmxlIHdoZW4gdXNlZCBpbiBcCit0aHJlYWRlZCBhcHBsaWNhdGlvbnMuIEl0IGluY2x1ZGVzIHRpbWVvdXQgc3VwcG9ydCBmcm9tIFB5dGhvbiAzLjMgYW5kIHRoZSBcCitydW4oKSBBUEkgZnJvbSAzLjUgYnV0IG90aGVyd2lzZSBtYXRjaGVzIDMuMidzIEFQSS4iCitMSUNFTlNFID0gIlB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kM2U2MmJhYThmYjk2YjExYTU5ZDNmMmNkMzM1ZDVjMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyNGM4MDFlNDc5ZDNlOTE2ODc5YWFlM2U5YzE1ZTE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlNDUwYTRhNGM1M2JmMTk3YWQ2NDAyYzU2NGI5ZjdhNTM1MzkzODU5MThlZjhmMTJiZGY0MzBhNjEwMzY1OTAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby5pbmMKaW5kZXggOWIxY2Y0MS4uMmM1ODY1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby5pbmMKQEAgLTYsOCArNiw4IEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtzdGFydGxpbmU9MjtlbmRsaW5lPTE1O21kNT01YWI3NTcxYTc5YWQ2MmQwY2E3YWVhMzA4YmFjNzU2MCIKIAotU1JDX1VSSVttZDVzdW1dID0gImI0ODE2ZWEyMDkxMTg2NjdmZmM1MmNlOWZmMDZhYzg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4OThmOTkyZjg5OGNkNDFlZWI4ZDUzYjZkZjc1NDk1ZjJmNDIzYjY2NzI4OTBhYWRhZjE5NmVhMTQ0OGVkY2MiCitTUkNfVVJJW21kNXN1bV0gPSAiYWI0MWY2NzY1ZDU4MDg5ZjMwYmE1MWU4ZWMwODRhN2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZiOGU0OTRjZDQ2YzY3NGQ4NmZhYzU4ODVhM2ZmODdiMGUyODM5MzdhNDdkNzRlYjNjMDJhNDhjOWU4OWFkMCIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0tbnVtYmVycyAke1BZVEhPTl9QTn0tZW1haWwgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAogICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsICR7UFlUSE9OX1BOfS1odG1sICR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1jZXJ0aWZpICR7UFlUSE9OX1BOfS10aHJlYWRpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzQuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjUuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjQuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjUuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGQ1ODRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKQEAgLTAsMCArMSwyNDMgQEAKK0RFU0NSSVBUSU9OID0gIlR3aXN0ZWQgaXMgYW4gZXZlbnQtZHJpdmVuIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTC4gXAorVHdpc3RlZCBzdXBwb3J0cyBUQ1AsIFVEUCwgU1NML1RMUywgbXVsdGljYXN0LCBVbml4IHNvY2tldHMsIGEgbGFyZ2UgbnVtYmVyIG9mIHByb3RvY29scyAgICAgICAgICAgICAgICAgICBcCisoaW5jbHVkaW5nIEhUVFAsIE5OVFAsIElNQVAsIFNTSCwgSVJDLCBGVFAsIGFuZCBvdGhlcnMpLCBhbmQgbXVjaCBtb3JlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudHdpc3RlZG1hdHJpeC5jb20iCisKKyN0d2lzdGVkL3RvcGZpbGVzL05FV1M6NjU1OiAtIFJlbGljZW5zZWQ6IE5vdyB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHJhdGhlciB0aGFuIExHUEwuCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThhOWMyZmJmY2JhN2Q3MDUwNGUzYmE1NDVlMTgyMGVkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmRiZWRiOTE4ZjBjNzI4OGE0YzY3MGY1OTM5M2VjZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRhMWE3ZTM1ZDVmY2FlMzdiYzljNzk3ODk3MGI1ZmViM2JjODI4MjIxNTViODY1NGVjNjM5MjVjMDVhZjc1YyIKKworUFlQSV9QQUNLQUdFID0gIlR3aXN0ZWQiCitQWVBJX1BBQ0tBR0VfRVhUID0gInRhci5iejIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgcmVtb3ZlIHNvbWUgdXNlbGVzcyBmaWxlcyBiZWZvcmUgcGFja2FnaW5nCisgICAgZmluZCAke0R9IFwoIC1uYW1lICIqLmJhdCIgLW8gLW5hbWUgIiouYyIgLW8gLW5hbWUgIiouaCIgXCkgLWV4ZWMgcm0gLWYge30gXDsKK30KKworUEFDS0FHRVMgKz0gIlwKKyAgICAke1BOfS16c2ggXAorICAgICR7UE59LXRlc3QgXAorICAgICR7UE59LXByb3RvY29scyBcCisgICAgJHtQTn0tY29uY2ggXAorICAgICR7UE59LW1haWwgXAorICAgICR7UE59LW5hbWVzIFwKKyAgICAke1BOfS1uZXdzIFwKKyAgICAke1BOfS1ydW5uZXIgXAorICAgICR7UE59LXdlYiBcCisgICAgJHtQTn0td29yZHMgXAorICAgICR7UE59LWZsb3cgXAorICAgICR7UE59LXBhaXIgXAorICAgICR7UE59LWNvcmUgXAorIgorCitQQUNLQUdFUyA9KyAiXAorICAgICR7UE59LXNyYyBcCisgICAgJHtQTn0tYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UE59LWJpbiBcCisgICAgJHtQTn0tY29yZSBcCisgICAgJHtQTn0tY29uY2ggXAorICAgICR7UE59LW1haWwgXAorICAgICR7UE59LW5hbWVzIFwKKyAgICAke1BOfS1ydW5uZXIgXAorICAgICR7UE59LXdlYiBcCisgICAgJHtQTn0td29yZHMgXAorIgorCitSREVQRU5EU18ke1BOfS1jb3JlID0gIiR7UFlUSE9OX1BOfS1jb3JlICR7UFlUSE9OX1BOfS16b3BlaW50ZXJmYWNlICR7UFlUSE9OX1BOfS1pbmNyZW1lbnRhbCAke1BZVEhPTl9QTn0tY29uc3RhbnRseSAke1BZVEhPTl9QTn0taHlwZXJsaW5rICR7UFlUSE9OX1BOfS1hdXRvbWF0IgorUkRFUEVORFNfJHtQTn0tdGVzdCA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWNvbmNoID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0tbWFpbCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LW5hbWVzID0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1uZXdzID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0tcnVubmVyID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0td2ViICs9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXdvcmRzICs9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tZmxvdyArPSAiJHtQTn0tY29yZSIKK1JERVBFTkRTXyR7UE59LXBhaXIgKz0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitGSUxFU18ke1BOfSA9ICIiCisKK0ZJTEVTXyR7UE59LXRlc3QgPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGVzdCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovdGVzdCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9oYXByb3h5L3Rlc3QvIFwKKyIKKworRklMRVNfJHtQTn0tcHJvdG9jb2xzID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy8qLnB5KiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9ncHMvIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL21pY2UvIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL2hhcHJveHkgXAorIgorCitGSUxFU18ke1BOfS16c2ggPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLiogXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdHdpc3RlZC1jb21wbGV0aW9uLnpzaCBcCisiCisKK0ZJTEVTXyR7UE59LWNvbmNoID0gIiBcCisgICAgJHtiaW5kaXJ9L2NrZXlnZW4gXAorICAgICR7YmluZGlyfS90a2NvbmNoIFwKKyAgICAke2JpbmRpcn0vY29uY2ggXAorICAgICR7YmluZGlyfS9jb25jaGZ0cCBcCisgICAgJHtiaW5kaXJ9L2NmdHAgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfY29uY2gucHkqIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29uY2ggIFwKKyIKKworRklMRVNfJHtQTn0tY29yZSA9ICIgXAorJHtiaW5kaXJ9L21hbmhvbGUgXAorJHtiaW5kaXJ9L21rdGFwIFwKKyR7YmluZGlyfS90d2lzdGQgXAorJHtiaW5kaXJ9L3RhcDJkZWIgXAorJHtiaW5kaXJ9L3RhcDJycG0gXAorJHtiaW5kaXJ9L3RhcGNvbnZlcnQgXAorJHtiaW5kaXJ9L3RrbWt0YXAgXAorJHtiaW5kaXJ9L3RyaWFsIFwKKyR7YmluZGlyfS9lYXN5X2luc3RhbGwqIFwKKyR7YmluZGlyfS9weWh0bWxpemVyIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vKi5zbyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19pbml0X18ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL25vdGVzdHBsdWdpbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdGVzdHBsdWdpbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mdHAucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfaW5ldC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9tYW5ob2xlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BvcnRmb3J3YXJkLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3NvY2tzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3RlbG5ldC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF90cmlhbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvZHJvcGluLmNhY2hlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY3JlZCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZW50ZXJwcmlzZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BlcnNpc3RlZCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvblwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGltZW91dHF1ZXVlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZpbGVwYXRoLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2R4cHJvZmlsZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9wbHVnaW4ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaHRtbGl6ZXIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX19pbml0X18ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzcGF0Y2gucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaG9vay5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aHJlYWRwb29sLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL290cC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91c2FnZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yb290cy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi92ZXJzaW9ucy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91cmxwYXRoLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3V0aWwucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcG9uZW50cy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2dmaWxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3J1bnRpbWUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVmbGVjdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb250ZXh0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RocmVhZGFibGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVidWlsZC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9mYWlsdXJlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvY2tmaWxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Zvcm1tZXRob2QucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmluYWxpemUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vd2luMzIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zaG9ydGN1dC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96aXBzdHJlYW0ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVsZWFzZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zeXNsb2cucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9nLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Byb2N1dGlscy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90ZXh0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL190d2lzdGVkX3pzaF9zdHViIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9zY3JpcHRzLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvc3ByZWFkLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGFwLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fX2luaXRfXy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL192ZXJzaW9uLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29weXJpZ2h0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW0ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90b3BmaWxlcyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL1R3aXN0ZWQqZWdnLWluZm8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2xvZ2dlci8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL190aHJlYWRzLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcG9zaXRpb25pbmcvIFwKKyIKKworRklMRVNfJHtQTn0tbWFpbCA9ICIgXAorJHtiaW5kaXJ9L21haWxtYWlsIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbWFpbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21haWwgXAorIgorCitGSUxFU18ke1BOfS1uYW1lcyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uYW1lcy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL25hbWVzIFwKKyIKKworRklMRVNfJHtQTn0tbmV3cyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uZXdzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbmV3cyBcCisiCisKK0ZJTEVTXyR7UE59LXJ1bm5lciA9ICIgXAorJHtsaWJkaXJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9ydW5uZXIvcG9ydG1hcC5zbyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcnVubmVyXAorIgorCitGSUxFU18ke1BOfS13ZWIgPSAiIFwKKyR7YmluZGlyfS93ZWJzZXRyb290IFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd2ViLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvd2ViXAorIgorCitGSUxFU18ke1BOfS13b3JkcyA9ICIgXAorJHtiaW5kaXJ9L2ltIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd29yZHMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC93b3Jkc1wKKyIKKworRklMRVNfJHtQTn0tZmxvdyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mbG93LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZmxvdyBcIgorCitGSUxFU18ke1BOfS1wYWlyID0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BhaXIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wYWlyIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovLmRlYnVnIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyovLmRlYnVnIFwKKyIKKworRklMRVNfJHtQTn0tZG9jICs9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX3B5ZG9jdG9ydGVtcGxhdGVzLyBcCisiCisKK1JERVBFTkRTX3tQTn0tc3JjID0gIiR7UE59IgorRklMRVNfJHtQTn0tc3JjID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyoucHkgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyovKi5weSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzEzLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTMuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzExMDZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTMuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlR3aXN0ZWQgaXMgYW4gZXZlbnQtZHJpdmVuIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTC4gXAotVHdpc3RlZCBzdXBwb3J0cyBUQ1AsIFVEUCwgU1NML1RMUywgbXVsdGljYXN0LCBVbml4IHNvY2tldHMsIGEgbGFyZ2UgbnVtYmVyIG9mIHByb3RvY29scyAgICAgICAgICAgICAgICAgICBcCi0oaW5jbHVkaW5nIEhUVFAsIE5OVFAsIElNQVAsIFNTSCwgSVJDLCBGVFAsIGFuZCBvdGhlcnMpLCBhbmQgbXVjaCBtb3JlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudHdpc3RlZG1hdHJpeC5jb20iCi0KLSN0d2lzdGVkL3RvcGZpbGVzL05FV1M6NjU1OiAtIFJlbGljZW5zZWQ6IE5vdyB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHJhdGhlciB0aGFuIExHUEwuCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2MDJkNzIyOGRhZjU5YTE2ZjBmMWIyNjQwYzQ2YmNhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODNmZTZjMGM5MTFjYzE2MDJkYmZmYjAzNmJlMGJhNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk1MTc1NjM4YzAxOWFjN2MwNjA0ZjRjMjkxNzI0YTE2ZmYxYWNkMDYyZTE4MWIwMTI5M2JmNGRjYmM2MmNmMyIKLQotUFlQSV9QQUNLQUdFID0gIlR3aXN0ZWQiCi1QWVBJX1BBQ0tBR0VfRVhUID0gInRhci5iejIiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIHJlbW92ZSBzb21lIHVzZWxlc3MgZmlsZXMgYmVmb3JlIHBhY2thZ2luZwotICAgIGZpbmQgJHtEfSBcKCAtbmFtZSAiKi5iYXQiIC1vIC1uYW1lICIqLmMiIC1vIC1uYW1lICIqLmgiIFwpIC1leGVjIHJtIC1mIHt9IFw7Ci19Ci0KLVBBQ0tBR0VTICs9ICJcCi0gICAgJHtQTn0tenNoIFwKLSAgICAke1BOfS10ZXN0IFwKLSAgICAke1BOfS1wcm90b2NvbHMgXAotICAgICR7UE59LWNvbmNoIFwKLSAgICAke1BOfS1sb3JlIFwKLSAgICAke1BOfS1tYWlsIFwKLSAgICAke1BOfS1uYW1lcyBcCi0gICAgJHtQTn0tbmV3cyBcCi0gICAgJHtQTn0tcnVubmVyIFwKLSAgICAke1BOfS13ZWIgXAotICAgICR7UE59LXdvcmRzIFwKLSAgICAke1BOfS1mbG93IFwKLSAgICAke1BOfS1wYWlyIFwKLSAgICAke1BOfS1jb3JlIFwKLSIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1zcmMgXAotICAgICR7UE59LWJpbiBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BOfS1iaW4gXAotICAgICR7UE59LWNvbmNoIFwKLSAgICAke1BOfS1sb3JlIFwKLSAgICAke1BOfS1tYWlsIFwKLSAgICAke1BOfS1uYW1lcyBcCi0gICAgJHtQTn0tbmV3cyBcCi0gICAgJHtQTn0tcnVubmVyIFwKLSAgICAke1BOfS13ZWIgXAotICAgICR7UE59LXdvcmRzIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tY29yZSA9ICJweXRob24tY29yZSBweXRob24tem9wZWludGVyZmFjZSBweXRob24tY29udGV4dGxpYiIKLVJERVBFTkRTXyR7UE59LXRlc3QgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1jb25jaCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKLVJERVBFTkRTXyR7UE59LWxvcmUgPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LW1haWwgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCi1SREVQRU5EU18ke1BOfS1uYW1lcyA9ICIke1BOfS1jb3JlIgotUkRFUEVORFNfJHtQTn0tbmV3cyA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKLVJERVBFTkRTXyR7UE59LXJ1bm5lciA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKLVJERVBFTkRTXyR7UE59LXdlYiArPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCi1SREVQRU5EU18ke1BOfS13b3JkcyArPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LWZsb3cgKz0gIiR7UE59LWNvcmUiCi1SREVQRU5EU18ke1BOfS1wYWlyICs9ICIke1BOfS1jb3JlIgotUkRFUEVORFNfJHtQTn0tZGJnID0gIiR7UE59IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotRklMRVNfJHtQTn0gPSAiIgotCi1GSUxFU18ke1BOfS10ZXN0ID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Rlc3QgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qL3Rlc3QgXAotIgotCi1GSUxFU18ke1BOfS1wcm90b2NvbHMgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzLyoucHkqIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL2dwcy8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvbWljZS8gXAotIgotCi1GSUxFU18ke1BOfS16c2ggPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaCBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLiogXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdHdpc3RlZC1jb21wbGV0aW9uLnpzaCBcCi0iCi0KLUZJTEVTXyR7UE59LWNvbmNoID0gIiBcCi0gICAgJHtiaW5kaXJ9L2NrZXlnZW4gXAotICAgICR7YmluZGlyfS90a2NvbmNoIFwKLSAgICAke2JpbmRpcn0vY29uY2ggXAotICAgICR7YmluZGlyfS9jb25jaGZ0cCBcCi0gICAgJHtiaW5kaXJ9L2NmdHAgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfY29uY2gucHkqIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29uY2ggIFwKLSIKLQotRklMRVNfJHtQTn0tY29yZSA9ICIgXAotJHtiaW5kaXJ9L21hbmhvbGUgXAotJHtiaW5kaXJ9L21rdGFwIFwKLSR7YmluZGlyfS90d2lzdGQgXAotJHtiaW5kaXJ9L3RhcDJkZWIgXAotJHtiaW5kaXJ9L3RhcDJycG0gXAotJHtiaW5kaXJ9L3RhcGNvbnZlcnQgXAotJHtiaW5kaXJ9L3RrbWt0YXAgXAotJHtiaW5kaXJ9L3RyaWFsIFwKLSR7YmluZGlyfS9lYXN5X2luc3RhbGwqIFwKLSR7YmluZGlyfS9weWh0bWxpemVyIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vKi5zbyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19pbml0X18ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL25vdGVzdHBsdWdpbi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdGVzdHBsdWdpbi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mdHAucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfaW5ldC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9tYW5ob2xlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BvcnRmb3J3YXJkLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3NvY2tzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3RlbG5ldC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF90cmlhbC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvZHJvcGluLmNhY2hlIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY3JlZCBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZW50ZXJwcmlzZSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BlcnNpc3RlZCBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvblwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGltZW91dHF1ZXVlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZpbGVwYXRoLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2R4cHJvZmlsZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9wbHVnaW4ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaHRtbGl6ZXIucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX19pbml0X18ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzcGF0Y2gucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaG9vay5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aHJlYWRwb29sLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL290cC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91c2FnZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yb290cy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi92ZXJzaW9ucy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91cmxwYXRoLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3V0aWwucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcG9uZW50cy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2dmaWxlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3J1bnRpbWUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVmbGVjdC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb250ZXh0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RocmVhZGFibGUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVidWlsZC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9mYWlsdXJlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvY2tmaWxlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Zvcm1tZXRob2QucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmluYWxpemUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vd2luMzIucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzdC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zaG9ydGN1dC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96aXBzdHJlYW0ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVsZWFzZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zeXNsb2cucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9nLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Byb2N1dGlscy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90ZXh0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL190d2lzdGVkX3pzaF9zdHViIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9zY3JpcHRzLyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvc3ByZWFkLyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGFwLyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fX2luaXRfXy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL192ZXJzaW9uLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29weXJpZ2h0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW0ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uLyoucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zLyoucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90b3BmaWxlcyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL1R3aXN0ZWQqZWdnLWluZm8gXAotIgotCi1GSUxFU18ke1BOfS1sb3JlID0gIiBcCi0ke2JpbmRpcn0vYm9va2lmeSBcCi0ke2JpbmRpcn0vbG9yZSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2xvcmUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9sb3JlIFwKLSIKLQotRklMRVNfJHtQTn0tbWFpbCA9ICIgXAotJHtiaW5kaXJ9L21haWxtYWlsIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbWFpbC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21haWwgXAotIgotCi1GSUxFU18ke1BOfS1uYW1lcyA9ICIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uYW1lcy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL25hbWVzIFwKLSIKLQotRklMRVNfJHtQTn0tbmV3cyA9ICIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uZXdzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbmV3cyBcCi0iCi0KLUZJTEVTXyR7UE59LXJ1bm5lciA9ICIgXAotJHtsaWJkaXJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9ydW5uZXIvcG9ydG1hcC5zbyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcnVubmVyXAotIgotCi1GSUxFU18ke1BOfS13ZWIgPSAiIFwKLSR7YmluZGlyfS93ZWJzZXRyb290IFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd2ViLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvd2ViXAotIgotCi1GSUxFU18ke1BOfS13b3JkcyA9ICIgXAotJHtiaW5kaXJ9L2ltIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd29yZHMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC93b3Jkc1wKLSIKLQotRklMRVNfJHtQTn0tZmxvdyA9ICIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mbG93LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZmxvdyBcIgotCi1GSUxFU18ke1BOfS1wYWlyID0gIiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BhaXIucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wYWlyIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovLmRlYnVnIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyovLmRlYnVnIFwKLSIKLQotUkRFUEVORFNfe1BOfS1zcmMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1zcmMgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi5weSBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi8qLnB5IFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZF8xNy45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjOGM2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi10d2lzdGVkLmluYworCitSREVQRU5EU18ke1BOfS1jb3JlICs9ICIke1BZVEhPTl9QTn0tY29udGV4dGxpYiIKKworIyBOb3QgeWV0IHBvcnRlZCB0byBweTMgeWV0IGF2YWlsYWJsZSBpbiBweTIKKyMgU2VlIHNyYy90d2lzdGVkL3B5dGhvbi9fc2V0dXAucHkgLS0gbm90UG9ydGVkTW9kdWxlcworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BOfS1uZXdzIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nLmluYwppbmRleCA0OWRhNGZlLi40NmJlNDdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZy5pbmMKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIlBTRiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ZmMyYjMwYjY3ZDBhODQyM2MyNTBlMDM4NmVkNzJmIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMzk5NmE3NDcxNThlNTU5MWFiZjY4OWMxYzVmOGY5ZGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2EyZGFhYzdlMzkzZThlZTg2ZTkxNDBjZDBjZjAxNzJmZjZiYjUwZWJkZjBiMDYyODE3NzBmOThmMzFiZmYyMSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNDNhZjBiZjNhZmQxODg3NjIyNzcxZjJmMWZmZThlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNTE0YmQ4NGIyODRkZDNlODQ0ZjAzMDVhYzA3NTExZjA5N2UzMjUxNzFmNmNjNGEyMDg3OGQxMWFkNzcxODQ5IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy41LjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZ18zLjYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNS4zLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZ18zLjYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NTRkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbi5pbmMKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSAgPSAiVWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIlVsdHJhSlNPTiBpcyBhbiB1bHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciB3cml0dGVuIGluIHB1cmUgQyB3aXRoIGJpbmRpbmdzIGZvciBQeXRob24gMi41KyBhbmQgMy4iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87c3RhcnRsaW5lPTg7ZW5kbGluZT05O21kNT00ZjM2OWIzYzNjMjkwYjRhZWRlODc5NmE0MDY1ZTVhYiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyZjc3YjBjY2U2ODZkZmE0ZGEyZTY4NDgwYjFkZDI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2NjA3M2U1NTA2ZTkxZDIwNGFiMGM2MTRhMTQ4ZDVhYTkzOGJkYmYxMDQ3NTFiZTY2ZjhhZDdhMjIyZjVmODYiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbl8xLjM1LmJiCmluZGV4IDIzOGRjOTIuLmIzYzZhZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb25fMS4zNS5iYgpAQCAtMSwxNSArMSwyIEBACi1TVU1NQVJZICA9ICJVbHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciBmb3IgUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiVWx0cmFKU09OIGlzIGFuIHVsdHJhIGZhc3QgSlNPTiBlbmNvZGVyIGFuZCBkZWNvZGVyIHdyaXR0ZW4gaW4gcHVyZSBDIHdpdGggYmluZGluZ3MgZm9yIFB5dGhvbiAyLjUrIGFuZCAzLiIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztzdGFydGxpbmU9ODtlbmRsaW5lPTk7bWQ1PTRmMzY5YjNjM2MyOTBiNGFlZGU4Nzk2YTQwNjVlNWFiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDJmNzdiMGNjZTY4NmRmYTRkYTJlNjg0ODBiMWRkMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjY2MDczZTU1MDZlOTFkMjA0YWIwYzYxNGExNDhkNWFhOTM4YmRiZjEwNDc1MWJlNjZmOGFkN2EyMjJmNWY4NiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXVqc29uLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDAyNTUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIlVuaWZpZWQgZGlmZiBwYXJzaW5nL21ldGFkYXRhIGV4dHJhY3Rpb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL21hdGlhc2IvcHl0aG9uLXVuaWRpZmYiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjNDM0YjA4ZWY0MmZlYTIzNWJiMDE5YjVlNWE5N2IzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzgwOTllZGY4OWQyZTNiYWMxNjEyMzc2NjYyNWEzOGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTdiYWY3MTg0NmE2OGM1MzA1YTdkNjAwNWRmYjVlY2E4Nzk4ZjEzODYxMTc2MzU1YTI4NWNiZGEzMjA2ODI0ZCIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ0MGNjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJVbmlmaWVkIGRpZmYgcGFyc2luZy9tZXRhZGF0YSBleHRyYWN0aW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXRpYXNiL3B5dGhvbi11bmlkaWZmIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YzQzNGIwOGVmNDJmZWEyMzViYjAxOWI1ZTVhOTdiMyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMxYTYxNzI5ZTY0ZWU0MDkxMzVhMmNjZWM4MGM3MTA0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5YjRiZTNlNTQ3OWRmYzZkNzc3NDdkMjNlYzk4MjAwNTU5Y2E2YTg0MmZhZDFmOTJjMmE3ZWI1NmI5OTE5NWIiCi0KLWluaGVyaXQgIHB5cGkgc2V0dXB0b29scwotCi1VID0gIiR7RH0ke0xJQkRJUn0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCl7Ci0gICAgbXYgJHtVfS90ZXN0cyAke1V9L3VuaWRpZmYvCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGIzZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXVuaWRpZmYuaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMKaW5kZXggNDg1ZjU3Zi4uY2Y3OTkyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMKQEAgLTEsMTAgKzEsMTAgQEAKIFNVTU1BUlkgPSAiUHl0aG9uIEhUVFAgbGlicmFyeSB3aXRoIHRocmVhZC1zYWZlIGNvbm5lY3Rpb24gcG9vbGluZywgZmlsZSBwb3N0IHN1cHBvcnQsIHNhbml0eSBmcmllbmRseSwgYW5kIG1vcmUiCiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhem93L3VybGxpYjMiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0wNmRmY2JiODhmYjA3ODdhMjAzOWUyNmFmMTEyNzZmNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lYTExNDg1MWFkOWE4YzMxMWFhYzg3MjhhNjgxYTA2NyIKIAotU1JDX1VSSVttZDVzdW1dID0gImU2MmQ0MjAwNjgwNzMwOGZlYTk1NTZjMTdhZjhlMjUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjNDliNjZhZGNiNDVlMTljNjk0NGNmZjM1ZWVkYjYwZWUyMjI4ZjBhZmJhNTFmNGRhMjljNDdlN2EzOThmMTUiCitTUkNfVVJJW21kNXN1bV0gPSAiMGRhN2JlZDNmZTk0YmY3ZGM1OWFlMzc4ODVjYzcyZjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2M0NGRhOGUxMTQ1NjM3MzM0MzE3ZmVlYmQ3MjhiZDg2OWEzNTI4NWI5M2NiYjRjY2EyNTc3ZGE3ZTYyZGI0ZiIKIAogUkRFUEVORFNfJHtQTn0gKz0gIlwKICAgICAke1BZVEhPTl9QTn0tY2VydGlmaSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjNfMS4yMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliM18xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjNfMS4yMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzk1MTkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHBhY2thZ2UgZm9yIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgdkNhcmQgYW5kIHZDYWxlbmRhciBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly92b2JqZWN0LnNreWhvdXNlY29uc3VsdGluZy5jb20vIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzM0MzJhM2U2ZTlhNDc4OGY3M2E5YWNjNGQ3YjFmYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmFlYTdkNGZiM2UyYmM4ZWY2MzY3ZTdmOWI0YWQwODQxYWExOTgwZmQ1ZGQ5NmQwNWM3YTkwZTM5ODgwODExYyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmYzNDNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNS5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlB5dGhvbiBwYWNrYWdlIGZvciBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIHZDYXJkIGFuZCB2Q2FsZW5kYXIgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vdm9iamVjdC5za3lob3VzZWNvbnN1bHRpbmcuY29tLyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS0yLjAudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gImFhNjI5ZDZhZTk1ZGI1ZWRmZDViMjQwMmViMTA3M2NiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmNTZjYWUxOTYzMDNkODc1NjgyYjk2NDhiNGJiNDNmZmM3NjlkMmYwZjgwMDk1OGUwYTUwNmFmODY3YjEyNDMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ1N2M1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJDaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcyBmb3IgbGVnYWN5IHdlYiBjb250ZW50IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztzdGFydGxpbmU9ODtlbmRsaW5lPTk7bWQ1PWFmNWM4MWJmZTk4ODU1YTU2ZDM2YjZiYTVkZTI5MDZmIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzJmNmUyNjFkNTJlNTdiZjdlMWM0ZDQxNTQ2ZDE1YjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjM2YTFjMjQ1ZjJkMzA0OTY1ZWI0ZTBhODI4NDgzNzkyNDFkYzA0Yjg2NWFmY2M0YWFiMTY3NDg1ODdlMTkyMyIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29kZWNzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzXzAuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzXzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZTJlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmU2Mjg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkNoYXJhY3RlciBlbmNvZGluZyBhbGlhc2VzIGZvciBsZWdhY3kgd2ViIGNvbnRlbnQiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO3N0YXJ0bGluZT04O2VuZGxpbmU9OTttZDU9MmZjNmM5OWExOWU2ZGJkZTlmN2EyMjM5MTQzYzlkMTMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4Nzg3MTRkNDUyNDFmNzk3MGRmZmQ4OTkxZDYxZmZmOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNWM1NWVlOTNiMjRlNzQwZmU5NTFjMzdiNWMyMjhkY2NjMWYxNzE0NTBlMTg4NTU1YTc3NTI2MWNjZTFiOTA0IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvZGVjcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYwppbmRleCBlNTVmNTZkLi5iMjk0OWEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWcuaW5jCkBAIC0xMCw4ICsxMCw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2OGY1MzYxYTJiMmNhOWZkZjI2YjM4YWFlY2I2ZmFhIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2I0MDEwNDc4ZGQzMzkwNWY5NTkyMGU0ODgwMjA0YTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDU1ZDc3OThhYzI2MzI2NmRiZDM4ZDQ4NDFmNzUzNGRkMzVjYTljM2RhNGE4ZGYzMDNmODQ4OGYzOGYzYmNjMCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzg1YjJjNWE3MTkzY2ZmMjRjNjg5YjMxZTExMjRkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDNhN2I4N2I3NDYzNTI0NDU0OGIzMGQzMGRiNGM4OTQ3ZmU2NGM1MTk4ZjU4ODk5ZGRjZDNhMTNjMjNiYjI2IgogCiBQWVBJX1BBQ0tBR0UgPSAiV2Vya3pldWciCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTEuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjEyLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTEuMTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTIuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NTU0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdC5pbmMKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGRlY29yYXRvcnMsIHdyYXBwZXJzIGFuZCBtb25rZXkgcGF0Y2hpbmcuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dyYXB0LnJlYWR0aGVkb2NzLm9yZy8iCitMSUNFTlNFID0gIkJTRCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjFjMjc5MzAwMTJlODZiM2RjN2UzNmY5MmU4M2M0ZDgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMTM0NmYzMTc4MmQ1MDQwMWY4MWMyMzQ1YjAzNzA3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNGQ1NjBkNDc5ZjJjMjFlMWI1NDQzYmJkMTVmZTdlYzRiMzdmZTdlNTNkMzM1ZDNiOWIwYTdiMTIyNmZlM2M2IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdF8xLjEwLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjQyNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC4xMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24td3JhcHQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdF8xLjEwLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdF8xLjEwLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWExYmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGRlY29yYXRvcnMsIHdyYXBwZXJzIGFuZCBtb25rZXkgcGF0Y2hpbmcuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dyYXB0LnJlYWR0aGVkb2NzLm9yZy8iCi1MSUNFTlNFID0gIkJTRCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODI3MDQ3MjU1OTI5OTFlYTg4YjA0MmQxNTBhNjYzMDMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YzJhN2U2MjYyYWNjMzk2ZWY2NTI4YjNkNjZiZDA0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZWExN2U4MTRlMzk4ODNjNmNmMWJiOWIwODM1ZDMxNmIyZjY5ZjBmMDg4MmZmZTdkYWQxZWRlNjZiYTgyYzczIgotCi1pbmhlcml0IHNldHVwdG9vbHMgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMKaW5kZXggYThmZThjNy4uZDFhYjA1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMKQEAgLTQsOSArNCw5IEBACiBTdHJvbmcgc3VwcG9ydCBmb3IgRXhjZWwgZGF0ZXMuIFVuaWNvZGUtYXdhcmUuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tZXhjZWwub3JnLyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGxyZC9saWNlbmNlcy5weTttZDU9YjU5ZGFjZTVjYzFkYjYwNGM0MjE5MTAwYjA0MjI4MTEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MDhiZDgxNDkzNjIzN2I2ZTEzNTVlNjM3MGIyNGIyYzEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YTkxYjY4OGNkNDk0NTQ3N2FjMjgxODdhNTRmOWEzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZmY4N2RkNWQ1MDQyNTA4NGY3MjE5Y2I2Zjg2YmIzZWI1YWEyOTA2M2Y1M2Q1MGJmMjcwZWQwMDdlOTQxMDY5IgorU1JDX1VSSVttZDVzdW1dID0gImI4NWM5OTE2YWM3NTVjYWQ0ODlhOTAwNWY1YTBkMzkwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMjE4ODU1MTNlNmQ5MTVmZTMzYThlZTVmZGZhNjc1NDMzYjYxNDA1YmExM2UyYTY5ZTYyZWUzNjgyOGQ3ZTIiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZF8xLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4xLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4wLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4xLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIzOGFlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiSW50ZXJmYWNlIGRlZmluaXRpb25zIGZvciBab3BlIHByb2R1Y3RzIgorTElDRU5TRSA9ICJaUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lNTRmZDc3NjI3NGMxYjc0MjNlYzEyODk3NGJkOWQ0NiIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3MDBhNGY1MjdjMTIwM2IzNGIxMGMyYjRlN2E2OTEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZDI2ZDVkZmJmZDYwYzY1MTUyOTM4ZmNiODJmOTQ5ZThkYWRhMzdjMDQxZjcyOTE2ZmVmNjYyMWJhNWM1Y2UiCisKK1BZUElfUEFDS0FHRSA9ICJ6b3BlLmludGVyZmFjZSIKKworUEFDS0FHRVMgPS4gIiR7UE59LXRlc3QgIgorCitSUFJPVklERVNfJHtQTn0gKz0gInpvcGUtaW50ZXJmYWNlcyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmVnZy8qLyovLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLmMiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyoudHh0IgorRklMRVNfJHtQTn0tdGVzdCArPSAiIFwKKyAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvdGVzdHMgXAorICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS9jb21tb24vdGVzdHMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OTYzOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJmYWNlIGRlZmluaXRpb25zIGZvciBab3BlIHByb2R1Y3RzIgotTElDRU5TRSA9ICJaUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lNTRmZDc3NjI3NGMxYjc0MjNlYzEyODk3NGJkOWQ0NiIKLQotU1JDX1VSSVttZDVzdW1dID0gImJhM2YzMmVhY2FlYTY2MDk0YjdlMmFlMjc4OGNlYzg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3ODBlZjY4Y2E4YzNmZTFhYmIzMGMwNThhNTkwMTUxMjlkNmUwNGE2YjAyYzJlNTZiOWM3ZGU2MDc4ZGZhODgiCi0KLVBZUElfUEFDS0FHRSA9ICJ6b3BlLmludGVyZmFjZSIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJQUk9WSURFU18ke1BOfSArPSAiem9wZS1pbnRlcmZhY2VzIgotRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmVnZy8qLyovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLmMiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyoudHh0IgotRklMRVNfJHtQTn0tdGVzdHMgPSAiIFwKLSAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvdGVzdHMgXAotICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS9jb21tb24vdGVzdHMgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkZmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC40LjMuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tem9wZWludGVyZmFjZS5pbmMKKworUkRFUEVORFNfJHtQTn0tdGVzdCArPSAicHl0aG9uLXVuaXR0ZXN0IHB5dGhvbi1kb2N0ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXBwZGlyc18xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjRlMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1hcHBkaXJzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTMyYzI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS41LjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1hc3Ryb2lkLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDM2NDlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuNS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi4zLjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjUuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJjcnlwdF8zLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlYzllMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1iY3J5cHQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVhdXRpZnVsc291cDRfNC42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVhdXRpZnVsc291cDRfNC42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ZGYxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWF1dGlmdWxzb3VwNF80LjYuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZTQ0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMC44LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1iaXRhcnJheS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzIuMC4wYjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMS41LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4wLjBiMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjExLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuOC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjExLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTcuMS4yMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTcuNy4yNy4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE3LjEuMjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTcuNy4yNy4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS45LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTEuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY292ZXJhZ2VfNC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY292ZXJhZ2VfNC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFhNWM1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb3ZlcmFnZV80LjQuMS5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkNvZGUgY292ZXJhZ2UgbWVhc3VyZW1lbnQgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vY292ZXJhZ2UucmVhZHRoZWRvY3MuaW8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YzRkOTk3Y2IzMmJlNDcwM2YxZmRlNTRlNmNkMWIxYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YTljNDQ0MDBlZTBmM2I0NTQ2MDY2ZTA3MTBlMTI1MGZkNzU4MzFhZGMwMmFiOTlkZGExNzZhZDg3MjZmNDI0IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMS43LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4wLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMS43LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4wLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI3LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yNS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjcuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRhdGV1dGlsXzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRhdGV1dGlsXzIuNi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi42LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYXRldXRpbF8yLjYuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjAuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMC4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjEuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nby1zb3V0aF8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kamFuZ28tc291dGhfMS4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1MTkxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kamFuZ28tc291dGhfMS4wLjIuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1kamFuZ28tc291dGguaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kamFuZ29fMS4xMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZTM4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuNS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWRqYW5nby5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1weW1vbmdvXzAuNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXB5bW9uZ29fMC41LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1weW1vbmdvXzAuNC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stcHltb25nb18wLjUuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2tfMC4xMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2tfMC4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzAuMTIuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdldmVudF8xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZXZlbnRfMS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxNzJlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZXZlbnRfMS4yLjIuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHB5dGhvbi1nZXZlbnQuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncmVlbmxldF8wLjQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZWRmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEyLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBkaXN0dXRpbHMzCityZXF1aXJlIHB5dGhvbi1ncmVlbmxldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmQ4YjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0bWw1bGliXzAuOTk5OTk5OTk5LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24taHRtbDVsaWIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaWRuYV8yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaWRuYV8yLjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pZG5hXzIuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvODYwMV8wLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvODYwMV8wLjEuMTIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pc284NjAxXzAuMS4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzbzg2MDFfMC4xLjEyLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvcnRfNC4yLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzb3J0XzQuMi4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTViM2UyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzb3J0XzQuMi4xNS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWlzb3J0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29uc2NoZW1hXzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25zY2hlbWFfMi42LjAuYmIKaW5kZXggNTNiODgzOS4uNWFhZWU2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25zY2hlbWFfMi42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25zY2hlbWFfMi42LjAuYmIKQEAgLTEsOCArMSw2IEBACiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLWpzb25zY2hlbWEuaW5jCiAKLURFUEVORFMgKz0gInB5dGhvbjMtdmN2ZXJzaW9uZXIiCi0KIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1taXNjIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYW5ndGFibGVfMC4wLjM3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxhbmd0YWJsZV8wLjAuMzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYyY2ExYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYW5ndGFibGVfMC4wLjM3LmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gImxhbmd0YWJsZSBpcyB1c2VkIHRvIGd1ZXNzIHJlYXNvbmFibGUgZGVmYXVsdHMgZm9yIGxvY2FsZSxcCitrZXlib2FyZCwgdGVycml0b3J5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21pa2UtZmFiaWFuL2xhbmd0YWJsZS8iCitMSUNFTlNFID0gIkdQTHYzKyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjNmMDAxZWVmMDI3YmE2OWVmMmZkYjM1YzY3MGI3ZGEyNmI3OWI1ZTIiCitQViA9ICIwLjAuMzcrZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWlrZS1mYWJpYW4vbGFuZ3RhYmxlLmdpdDticmFuY2g9bWFzdGVyIFwKKyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCisKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgPSAiLS1wcmVmaXg9JHtEfS8ke3ByZWZpeH0gXAorICAgIC0taW5zdGFsbC1kYXRhPSR7RH0vJHtkYXRhZGlyfS9sYW5ndGFibGUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUwZTEyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYXp5LW9iamVjdC1wcm94eV8xLjMuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWxhenktb2JqZWN0LXByb3h5LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWwvMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMDEyZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWwvMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMzZlNjRjZjJmMDY3NmVlNDIyYzFmZDQxNDU2OTY3ZjMwMTViMmZhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE3OjEwOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGx4bWwuZXRyZWU6IEFkZCBlbXB0eSB2YXJpYWRpYyBhcmd1bWVudAotCi1mb3JtYXQgY2hlY2tlciBzYXlzIHRoYXQgYXJndW1lbnQgNCBpcyBhIHByaW50ZiBmb3JtYXR0ZWQgYXJndW1lbnQKLWJ1dCB0aGVyZSBpcyBubyBtb3JlIGFyZ3VtZW50cyB0byBmb2xsb3cKLQotRml4ZXMgbGlieHNsdCBmb3JtYXQgd2FybmluZ3MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9seG1sL2x4bWwuZXRyZWUuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbHhtbC9seG1sLmV0cmVlLmMgYi9zcmMvbHhtbC9seG1sLmV0cmVlLmMKLWluZGV4IGQ0ODIwOTEuLmZhYWIwNmMgMTAwNjQ0Ci0tLS0gYS9zcmMvbHhtbC9seG1sLmV0cmVlLmMKLSsrKyBiL3NyYy9seG1sL2x4bWwuZXRyZWUuYwotQEAgLTE4NjA4Niw3ICsxODYwODYsNyBAQCBzdGF0aWMgdm9pZCBfX3B5eF9mXzRseG1sXzVldHJlZV9fY2FsbEV4dGVuc2lvbkVsZW1lbnQoeHNsdFRyYW5zZm9ybUNvbnRleHQgKl9fcAotICAqICAgICAgICAgZXhjZXB0OgotICAqLwotICAgICAgICAgICAgIF9fcHl4X3RfMjYgPSBfX1B5eF9QeU9iamVjdF9Bc1N0cmluZyhfX3B5eF92X21lc3NhZ2UpOyBpZiAodW5saWtlbHkoKCFfX3B5eF90XzI2KSAmJiBQeUVycl9PY2N1cnJlZCgpKSkgX19QWVhfRVJSKDE5LCAyMjgsIF9fcHl4X0wxOF9leGNlcHRfZXJyb3IpCi0tICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2KTsKLSsgICAgICAgICAgICB4c2x0VHJhbnNmb3JtRXJyb3IoX19weXhfdl9jX2N0eHQsIE5VTEwsIF9fcHl4X3ZfY19pbnN0X25vZGUsIF9fcHl4X3RfMjYsICIiKTsKLSAKLSAgICAgICAgICAgICAvKiAic3JjL2x4bWwveHNsdGV4dC5weGkiOjIyOQotICAqICAgICAgICAgICAgICAgICBjX2luc3Rfbm9kZS5uYW1lLCBfY3N0cihlKSkKLUBAIC0xODYxMzYsNyArMTg2MTM2LDcgQEAgc3RhdGljIHZvaWQgX19weXhfZl80bHhtbF81ZXRyZWVfX2NhbGxFeHRlbnNpb25FbGVtZW50KHhzbHRUcmFuc2Zvcm1Db250ZXh0ICpfX3AKLSAgKiAgICAgZXhjZXB0OgotICAqLwotICAgICAgICAgICAgIF9fcHl4X3RfMjYgPSBfX1B5eF9QeU9iamVjdF9Bc1N0cmluZyhfX3B5eF92X21lc3NhZ2UpOyBpZiAodW5saWtlbHkoKCFfX3B5eF90XzI2KSAmJiBQeUVycl9PY2N1cnJlZCgpKSkgX19QWVhfRVJSKDE5LCAyMzQsIF9fcHl4X0wxOF9leGNlcHRfZXJyb3IpCi0tICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2KTsKLSsgICAgICAgICAgICB4c2x0VHJhbnNmb3JtRXJyb3IoX19weXhfdl9jX2N0eHQsIE5VTEwsIF9fcHl4X3ZfY19pbnN0X25vZGUsIF9fcHl4X3RfMjYsICIiKTsKLSAKLSAgICAgICAgICAgICAvKiAic3JjL2x4bWwveHNsdGV4dC5weGkiOjIzNQotICAqICAgICAgICAgICAgICAgICAiRXJyb3IgZXhlY3V0aW5nIGV4dGVuc2lvbiBlbGVtZW50ICclcyciLCBjX2luc3Rfbm9kZS5uYW1lKQotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfMy43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF8zLjcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIxM2QyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF8zLjcuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tbHhtbC5pbmMKLQotU1JDX1VSSSA9ICIke1BZUElfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1seG1sLmV0cmVlLUFkZC1lbXB0eS12YXJpYWRpYy1hcmd1bWVudC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfNC4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0YmM3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbHhtbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlXzAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZV8xLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlXzAuMjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlXzEuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC40LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFja18wLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTZkN2RkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC40LjguYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1tc2dwYWNrLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdC8wMDAxLUFsbG93LWNhbGxpbmctbWFrZS1jbGVhbi13aXRob3V0LXNwaGlueC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3QvMDAwMS1BbGxvdy1jYWxsaW5nLW1ha2UtY2xlYW4td2l0aG91dC1zcGhpbngtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZDdlZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdC8wMDAxLUFsbG93LWNhbGxpbmctbWFrZS1jbGVhbi13aXRob3V0LXNwaGlueC1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gMzllMTNiNGUzZjdhMWQxZGQ3NDhlODBjZWUyNDFkNTExODY1ZDRlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBuZXh0cmVtLmNoPgotRGF0ZTogTW9uLCAxNiBKYW4gMjAxNyAyMToyOToxMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBBbGxvdyBjYWxsaW5nIG1ha2UgY2xlYW4gd2l0aG91dCBzcGhpbngtYnVpbGQKLQotQ3VycmVudGx5IG1ha2UgY2xlYW4gZmFpbHMgd2l0aG91dCBzcGhpbngtYnVpbGQgaW5zdGFsbGVkCi1Ib3dldmVyIHNwaGlueC1idWlsZCBpcyBub3QgcmVhbGx5IG5lY2Vzc2FyeSB0byBkbyBhIGNsZWFuLgotVGhpcyB0cmljayBtYWtlcyB0aGUgZG9jcy9NYWtlZmlsZSB1c2UgdGhlIGZhbHNlIGJpbmFyeSBpbnN0ZWFkIG9mCi1zcGhpbngtYnVpbGQgZm9yIHRoZSBjaGVjayB3aGVuIGEgY2xlYW4gaXMgZG9uZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL211bHRpZGljdC9wdWxsLzQxCi0KLS0tLQotIE1ha2VmaWxlIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDhmNTI1ZjMuLjZkNjAxZTUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC01MSw4ICs1MSw4IEBAIGNsZWFuOgotIAlybSAtcmYgY292ZXJhZ2UKLSAJcm0gLXJmIGJ1aWxkCi0gCXJtIC1yZiBjb3ZlcgotLQltYWtlIC1DIGRvY3MgY2xlYW4KLS0JcHl0aG9uIHNldHVwLnB5IGNsZWFuCi0rCW1ha2UgLUMgZG9jcyBjbGVhbiBTUEhJTlhCVUlMRD1mYWxzZQotKwlweXRob24zIHNldHVwLnB5IGNsZWFuCi0gCXJtIC1mIG11bHRpZGljdC9fbXVsdGlkaWN0Lmh0bWwKLSAJcm0gLWYgbXVsdGlkaWN0L19tdWx0aWRpY3QuYwotIAlybSAtZiBtdWx0aWRpY3QvX211bHRpZGljdC4qLnNvCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMi4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzIuMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjg5NWQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMi4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpZGljdHMgYXJlIHVzZWZ1bCBmb3Igd29ya2luZyB3aXRoIEhUVFAgaGVhZGVycywgVVJMIHF1ZXJ5IGFyZ3MgZXRjLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9tdWx0aWRpY3QvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTNmYzUwYTg4ZDBhMzY0MzEzZGY0YjIxZWYyMGMyOWUiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BbGxvdy1jYWxsaW5nLW1ha2UtY2xlYW4td2l0aG91dC1zcGhpbngtYnVpbGQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNTFkOTJlZGVjODdmZDk4ZTQzZWE4M2YzY2U2MDcyZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzdhYThjOWY2ODg0NmMzYjVkYjQzZmY4ZWQyYTdhODg0ZGJlODQ1ZDAxZjU1MTEzYTNmYmE3ODUxOGM0Y2Q3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8zLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY1NTZiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMy4yLjAuYmIKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIk11bHRpZGljdHMgYXJlIHVzZWZ1bCBmb3Igd29ya2luZyB3aXRoIEhUVFAgaGVhZGVycywgVVJMIHF1ZXJ5IGFyZ3MgZXRjLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9tdWx0aWRpY3QvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTc0Yzk4YWJlMGRlOGY3OThjYTYwOTEzN2Y5Y2VmNGEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiYTAxZGEzMWNhMTg1NTU1N2ExYjJlMDUzYzkzM2FmMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTI3YTdhOTUzMTczNzFjMTVlY2RhNzIwNmY2ZThjMTQ0ZjEwYTMzN2JiMmMzZTYxYjUxNzZkZWFmYmI4OGNiMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZGctaHR0cHNjbGllbnRfMC40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmRnLWh0dHBzY2xpZW50XzAuNC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmRnLWh0dHBzY2xpZW50XzAuNC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmRnLWh0dHBzY2xpZW50XzAuNC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0YWRkcl8wLjcuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0YWRkcl8wLjcuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0MTZhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZXRhZGRyXzAuNy4xOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLW5ldGFkZHIuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbnRwbGliXzAuMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW50cGxpYl8wLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ0MGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW50cGxpYl8wLjMuMy5iYgpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBvZmZlcnMgYSBzaW1wbGUgaW50ZXJmYWNlIHRvIHF1ZXJ5IE5UUCBzZXJ2ZXJzIGZyb20gUHl0aG9uLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9udHBsaWIucHk7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YWZhMDczMzhhOTU5NTI1N2U5NGMyMDVjM2U3MjIyNGQiCisKK1NSQ05BTUUgPSAibnRwbGliIgorU1JDX1VSSVttZDVzdW1dID0gImM3Y2M4ZTliMDlmNDBjODQ4MTk4NTlkNzBiNzc4NGNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0NjIxYjY0ZDUwYmU5NDYxZDliZDlhNzFiYTBiNGFmMDZmYmJmODE4YmJkNDgzNzUyZDk1YzFhNGUyNzNlZGUiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjNuYXRpdmUgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNmQ0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMi4wLjIuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJBIE11dGFibGVTZXQgdGhhdCByZW1lbWJlcnMgaXRzIG9yZGVyLCBzbyB0aGF0IGV2ZXJ5IGVudHJ5IGhhcyBhbiBpbmRleC4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9MdW1pbm9zb0luc2lnaHQvb3JkZXJlZC1zZXQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01JVC1MSUNFTlNFO21kNT0wZmViMGM4NWI3MjJmNDg4Yjg3ODQ0ZmI1ZjgxZDJkYyIKKworU1JDX1VSSVttZDVzdW1dID0gIjdiOGQ3M2RjNjRmZDNjNzgzZWNiNDhlMDUwYmZjYzBkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0MmNhZDVkN2Q1YjA3NjBkNWNiZTkzZGZiMzg1YWMyZWQ0MDJjYTFkNDhjOWY0ZTEwMmQ3ZDVjY2UzYTkwZWIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS4zLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuMy4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZGQ1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjAuMy5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXBhbmRhcy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YzOTIzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuMi4xLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcGV4cGVjdC5pbmMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZC8wMDAxLXJlbW92ZS1yZXF1aXJlbWVudC1vZi1ub3NlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZC8wMDAxLXJlbW92ZS1yZXF1aXJlbWVudC1vZi1ub3NlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZWVmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlkLzAwMDEtcmVtb3ZlLXJlcXVpcmVtZW50LW9mLW5vc2UucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAwNGQwNGE4ZmExZWYzZDhkYmRhZWJiYWFjOWFlOTM2ZTFjODIzNGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAyMToxNzo0MyAtMDQwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmUgcmVxdWlyZW1lbnQgb2Ygbm9zZQorCitUaGUgbm9zZSBleHRlbmRzIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIuCitEbyBub3QgbmVlZCB0aGUgdGVzdCBzdWl0ZSwgc28gcmVtb3ZlIHJlcXVpcmVtZW50IG9mIG5vc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggM2Y3YzdjYi4uYzQyYTU0NiAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTUzLDYgKzUzLDQgQEAgc2V0dXAoCisgICAgIGtleXdvcmRzPSdwaWQgcGlkZmlsZSBjb250ZXh0IG1hbmFnZXIgZGVjb3JhdG9yJywKKyAgICAgcGFja2FnZXM9WyJwaWQiXSwKKyAgICAgaW5zdGFsbF9yZXF1aXJlcz1bXSwKKy0gICAgdGVzdF9zdWl0ZT0nbm9zZS5jb2xsZWN0b3InLAorLSAgICBzZXR1cF9yZXF1aXJlcz1bJ25vc2U+PTEuMCddLAorICkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZF8yLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWRfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg4ZDlhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWRfMi4xLjEuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQaWRmaWxlIGZlYXR1cmluZyBzdGFsZSBkZXRlY3Rpb24gYW5kIGZpbGUtbG9ja2luZywgY2FuIGFsc28gXAorYmUgdXNlZCBhcyBjb250ZXh0LW1hbmFnZXIgb3IgZGVjb3JhdG9yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RyYnMvcGlkLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgzZDUzY2JkMzEwNTA2M2YyMDMwNWJjMzEzNDY0ZTI5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTYzNGIxZTNkNTQ1NTQ0YTlkNDk2ZTI1ZTQ1MzBkMTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQ0MzE2OWQzZGMyMTM5NzY5NWI0YTgyMDE2ZmFkYjRjZmRiMGVkOGIyZGRiNGFhYTQyOGUxNzAxYmIzNGUxZiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXJlcXVpcmVtZW50LW9mLW5vc2UucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21wbGljYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJjdGwvMDAwMS1zdXBwb3J0LWNyb3NzLWNvbXBsaWNhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzVhZTFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21wbGljYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA5YTE2ODAwNzM4NTQ3ZDExNzI4NDM1NGJiY2FkN2RkNzdkOWQwMzQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMSBBcHIgMjAxNiAwMzowNTo1NyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzdXBwb3J0IGNyb3NzLWNvbXBsaWNhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXR1cC5weSB8IDM1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggNjU4ZDFhNS4uZThiZTdlYiAxMDA3NTUKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTEzLDQxICsxMyw2IEBAIGltcG9ydCBzeXMKKyAjIC0gTmVlZCBnY2MKKyAjIC0gTmVlZCBDIGhlYWRlcnMKKyAjIC0gTmVlZCBsaWJjYXAgaGVhZGVycworLWlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKy0gICAgc3lzLnN0ZGVyci53cml0ZSgiVGhpcyBtb2R1bGUgb25seSB3b3JrcyBvbiBsaW51eFxuIikKKy0gICAgc3lzLmV4aXQoMSkKKy0KKy1rdmVycyA9IG9zLnVuYW1lKClbMl0KKy1pZiBrdmVycyA8ICcyLjYuMTgnIGFuZCBub3Qgb3MuZW52aXJvbi5nZXQoIlBSQ1RMX1NLSVBfS0VSTkVMX0NIRUNLIixGYWxzZSk6CistICAgIHN5cy5zdGRlcnIud3JpdGUoIlRoaXMgbW9kdWxlIHJlcXVpcmVzIGxpbnV4IDIuNi4xOCBvciBuZXdlclxuIikKKy0gICAgc3lzLmV4aXQoMSkKKy0KKy1pZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLDQpOgorLSAgICBzeXMuc3RkZXJyLndyaXRlKCJUaGlzIG1vZHVsZSByZXF1aXJlcyBweXRob24gMi40IG9yIG5ld2VyXG4iKQorLSAgICBzeXMuZXhpdCgxKQorLQorLWV4aXQgPSBGYWxzZQorLXRyeToKKy0gICAgc3VicHJvY2Vzcy5jYWxsKFsnZ2NjJywnLXYnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKy1leGNlcHQ6CistICAgIHN5cy5zdGRlcnIud3JpdGUoIllvdSBuZWVkIHRvIGluc3RhbGwgZ2NjIHRvIGJ1aWxkIHRoaXMgbW9kdWxlXG4iKQorLSAgICBzeXMuZXhpdCgxKQorLQorLXNwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2NwcCddLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCistc3AuY29tbXVuaWNhdGUoJyNpbmNsdWRlIDxzeXMvcHJjdGwuaD5cbicuZW5jb2RlKCkpCistaWYgc3AucmV0dXJuY29kZToKKy0gICAgc3lzLnN0ZGVyci53cml0ZSgiWW91IG5lZWQgdG8gaW5zdGFsbCBsaWJjIGRldmVsb3BtZW50IGhlYWRlcnMgdG8gYnVpbGQgdGhpcyBtb2R1bGVcbiIpCistICAgIGV4aXQgPSBUcnVlCistCistc3AgPSBzdWJwcm9jZXNzLlBvcGVuKFsnY3BwJ10sIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKy1zcC5jb21tdW5pY2F0ZSgnI2luY2x1ZGUgPHN5cy9jYXBhYmlsaXR5Lmg+XG4nLmVuY29kZSgpKQorLWlmIHNwLnJldHVybmNvZGU6CistICAgIHN5cy5zdGRlcnIud3JpdGUoIllvdSBuZWVkIHRvIGluc3RhbGwgbGliY2FwIGRldmVsb3BtZW50IGhlYWRlcnMgdG8gYnVpbGQgdGhpcyBtb2R1bGVcbiIpCistICAgIGV4aXQgPSBUcnVlCistCistaWYgZXhpdDoKKy0gICAgc3lzLmV4aXQoMSkKKy0KKyBfcHJjdGwgPSBFeHRlbnNpb24oIl9wcmN0bCIsCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgPSBbJ19wcmN0bG1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgPSBbJ3NlY3VyZWJpdHMuaCddLAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJjdGxfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJjdGxfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlODNjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bF8xLjYuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZICA9ICJDb250cm9sIHByb2Nlc3MgYXR0cmlidXRlcyB0aHJvdWdoIHByY3RsIgorREVTQ1JJUFRJT04gPSAiVGhlIGxpbnV4IHByY3RsIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gY29udHJvbCBzcGVjaWZpYyBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBcCitwcm9jZXNzJyBiZWhhdmlvdXIuIFVzYWdlIG9mIHRoZSBmdW5jdGlvbiBpcyBmYWlybHkgbWVzc3kgdGhvdWdoLCBkdWUgdG8gXAorbGltaXRhdGlvbnMgaW4gQyBhbmQgbGludXguIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgbmljZSBub24tbWVzc3kgcHl0aG9uKGljKSBcCitpbnRlcmZhY2UuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWViMmY0YmNkNjAzMjZmODNlNWRlYjU0MjM3MmQ1MmYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICIxMTA3ZDBiZTdiZWM0YjI4Yzg1YzYyYzQ1NDg4MmQxNjg0NGM5MzBhIgorUFYgPSAiMS42LjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zZXZlYXMvcHl0aG9uLXByY3RsO2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdXBwb3J0LWNyb3NzLWNvbXBsaWNhdGlvbi5wYXRjaCBcCisiCitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjNuYXRpdmUKKworREVQRU5EUyArPSAibGliY2FwIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvZ3Jlc3NfMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb2dyZXNzXzEuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb2dyZXNzXzEuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb2dyZXNzXzEuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb21wdC10b29sa2l0XzEuMC4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODFkMWRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb3RvYnVmXzMuNC4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHJvdG9idWYuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjMuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjMuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3NfMC41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHR5cHJvY2Vzc18wLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGNkMGUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3NfMC41LjIuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1wdHlwcm9jZXNzLmluYworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS40LjMyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuNC4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuNC4zMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuNC4zNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMV8wLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC4zLjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC4yLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC4zLjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJpbmQxMV8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJpbmQxMV8yLjIuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4yLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNwYXJzZXJfMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNwYXJzZXJfMi4xOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3BhcnNlcl8yLjE3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWZpcm1hdGFfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YWYxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMC4zLmJiCkBAIC0wLDAgKzEsMyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHlmaXJtYXRhLmluYworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuNy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjNlODMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjcuNC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uMy1kaXIKK3JlcXVpcmUgcHl0aG9uLXB5bGludC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjY3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuODAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjY3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC44MC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IyNTBhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHltb25nby5pbmMKLQotIyBSZXF1aXJlcyBfcHlkZWNpbWFsIHdoaWNoIGlzIGluIG1pc2MKLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LXNlbGVjdG9ycyBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjAyY2FiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy41LjEuYmIKQEAgLTAsMCArMSwxMCBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1weW1vbmdvLmluYworCisjIFJlcXVpcmVzIF9weWRlY2ltYWwgd2hpY2ggaXMgaW4gbWlzYworUkRFUEVORFNfJHtQWVRIT05fUE59LWJzb24gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVudW0gXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE2LjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTcuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE2LjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNy4zLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjMuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC4zLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyM2U3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC4zLjIyLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHlyb3V0ZTIuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS42LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjYuNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS42LjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi43LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl8yLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl8yLjEyLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzIuMTEuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfMi4xMi4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzMuMC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF8zLjIuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF8zLjAuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF8zLjIuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1ZGV2XzAuMjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjkyNTU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHB5dGhvbi1weXVkZXYuaW5jCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tbGFuZyBcCisiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjBiMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMGIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxM2U2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjBiMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgZGlzdHV0aWxzMworcmVxdWlyZSBweXRob24tcHl1c2IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVkaXNfMi4xMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZGlzXzIuMTAuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZGlzXzIuMTAuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZGlzXzIuMTAuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZpbGVfMS40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZmlsZV8xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjUyODc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZpbGVfMS40LjIuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJGaWxlIHRyYW5zcG9ydCBhZGFwdGVyIGZvciBSZXF1ZXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2Rhc2hlYS9yZXF1ZXN0cy1maWxlIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWNjNzI4ZDYwODdlNDM3OTYyMjdiMGEzMTQyMmRlNmIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOTA3ZWZiNzVmYWYwY2NiYjE4NTc0MzJiZjlkOGMwZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTE4ZTdjZmUwNDhlMDUzZmQxMDE5ZGZiODkxYjRjNTViODcxYzU2YzVhMzE2OTNkNzMzMjQwYzgwYjhmMTkxIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uMy1yZXF1ZXN0cyBcCisiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1mdHBfMC4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZnRwXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOTllZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZnRwXzAuMy4xLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiRlRQIFRyYW5zcG9ydCBBZGFwdGVyIGZvciBSZXF1ZXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL0x1a2FzYS9yZXF1ZXN0cy1mdHAiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NjgzYTIzYzk5NjhiOTc3MDk0NDFkYzg4NGQ0NmRmNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjFhNTJhZDEyMTllNjk2YjVhYmQ1NDQ5ZDFjY2MwMjk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MDRjZWI1Y2JhOGE1YzAxMzVlZDczODU5NjgyMGE3OGM1ZjJiZTkyZDc5YjI5Zjk2YmE5OWIxODNkODA1N2EiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBweXRob24zLXJlcXVlc3RzIFwKKyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlODY5YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy5pbmMKLQotIyBBZGQgdGhlIHJ1bnRpbWUgZGVwZW5kcyBmb3Igc2VsZWN0b3JzLnB5Ci1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1pc2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xOC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTFkOTkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTguNC5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXJlcXVlc3RzLmluYworCisjIEFkZCB0aGUgcnVudGltZSBkZXBlbmRzIGZvciBzZWxlY3RvcnMucHkKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tbWlzYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzdhZjEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNkbm90aWZ5XzAuMy4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMyBweXBpCityZXF1aXJlIHB5dGhvbi1zZG5vdGlmeS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjIzLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjE5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjIzLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzEuMTUuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzEuMTUuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzEuMTUuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xMS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjEwLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTEuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FsYWxjaGVteV8xLjEuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMS45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FsYWxjaGVteV8xLjEuMTQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvcm5hZG9fNC41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9ybmFkb180LjUuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NTMzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpc3RlZF8xNy45LjAuYmIKQEAgLTAsMCArMSw2NyBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi10d2lzdGVkLmluYworCitSREVQRU5EU18ke1BOfS1jb3JlICs9ICJweXRob24zLWxhbmciCisKK0ZJTEVTXyR7UE59LWNvcmVfYXBwZW5kICs9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX19weWNhY2hlX18gXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL19fcHljYWNoZV9fLypweWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9fX2luaXRfXyoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vbm90ZXN0cGx1Z2luKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90ZXN0cGx1Z2luKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2Z0cCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9pbmV0Ki5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX21hbmhvbGUqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcG9ydGZvcndhcmQqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfc29ja3MqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfdGVsbmV0Ki5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3RyaWFsKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2NvcmUqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcXRzdHViKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3JlYWN0b3JzKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9jcmVkKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9kcm9waW4qLmNhY2hlIFwKKyIKKworRklMRVNfJHtQTn0tbmFtZXNfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbmFtZXMqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LW5ld3NfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbmV3cyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tcHJvdG9jb2xzX2FwcGVuZCArPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9fX3B5Y2FjaGVfXy8qcHljIFwKKyIKKworRklMRVNfJHtQTn0tY29uY2hfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfY29uY2gqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LWxvcmVfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbG9yZSoucHljIFwKKyIKK0ZJTEVTXyR7UE59LW1haWxfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbWFpbCoucHljIFwKKyIKKworRklMRVNfJHtQTn0td2ViX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3dlYioucHljIFwKKyIKKworRklMRVNfJHtQTn0td29yZHNfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfd29yZHMqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LWZsb3dfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfZmxvdyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tcGFpcl9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9wYWlyKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1ydW5uZXJfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcnVubmVyKi5weWMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb25fMS4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTRjYzBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi11anNvbi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRkYzdlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS40LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tdW5pZGlmZi5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVybGxpYjNfMS4yMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmVuY29kaW5nc18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmZTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjEyLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjExLjE1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xMi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3JhcHRfMS4xMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjEwLjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZjQ0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3JhcHRfMS4xMC4xMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXdyYXB0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZF8xLjEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4wLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkXzEuMS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16b3BlaW50ZXJmYWNlXzQuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTE4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjQuMy5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tem9wZWludGVyZmFjZS5pbmMKKworUkRFUEVORFNfJHtQTn0tdGVzdCArPSAicHl0aG9uMy11bml0dGVzdCBweXRob24zLWRvY3Rlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVlMzIwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDEtY29tbWVudC1vdXQtc2VsaW51eC5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDdkNDgzYzI3YWMwYTIzY2EzYmJhN2YzMjA5MThhZmM0MDAxM2JkOGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTQ6MjU6NTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8xM10gY29tbWVudCBvdXQgc2VsaW51eAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvZmxhZ3MucHkgfCA1ICsrKy0tCisgYmxpdmV0L3V0aWwucHkgIHwgNiArKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC9mbGFncy5weSBiL2JsaXZldC9mbGFncy5weQoraW5kZXggMDY4MjJkYi4uYjU1YTkzZiAxMDA2NDQKKy0tLSBhL2JsaXZldC9mbGFncy5weQorKysrIGIvYmxpdmV0L2ZsYWdzLnB5CitAQCAtMjAsNyArMjAsNyBAQAorICMKKyAKKyBpbXBvcnQgc2hsZXgKKy1pbXBvcnQgc2VsaW51eAorKyNpbXBvcnQgc2VsaW51eAorIAorIAorIGNsYXNzIEZsYWdzKG9iamVjdCk6CitAQCAtNDksNyArNDksOCBAQCBjbGFzcyBGbGFncyhvYmplY3QpOgorICAgICAgICAgIworICAgICAgICAgIyBlbmFibGUvZGlzYWJsZSBmdW5jdGlvbmFsaXR5CisgICAgICAgICAjCistICAgICAgICBzZWxmLnNlbGludXggPSBzZWxpbnV4LmlzX3NlbGludXhfZW5hYmxlZCgpCisrICAgICAgICAjc2VsZi5zZWxpbnV4ID0gc2VsaW51eC5pc19zZWxpbnV4X2VuYWJsZWQoKQorKyAgICAgICAgc2VsZi5zZWxpbnV4ID0gRmFsc2UKKyAgICAgICAgIHNlbGYubXVsdGlwYXRoID0gVHJ1ZQorICAgICAgICAgc2VsZi5kbXJhaWQgPSBUcnVlCisgICAgICAgICBzZWxmLmliZnQgPSBUcnVlCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQoraW5kZXggZTNlNzFjZS4uMGNmNTE4OCAxMDA2NDQKKy0tLSBhL2JsaXZldC91dGlsLnB5CisrKysgYi9ibGl2ZXQvdXRpbC5weQorQEAgLTQsNyArNCw3IEBAIGltcG9ydCBnbG9iCisgaW1wb3J0IGl0ZXJ0b29scworIGltcG9ydCBvcworIGltcG9ydCBzaHV0aWwKKy1pbXBvcnQgc2VsaW51eAorKyNpbXBvcnQgc2VsaW51eAorIGltcG9ydCBzdWJwcm9jZXNzCisgaW1wb3J0IHJlCisgaW1wb3J0IHN5cworQEAgLTQzMSw2ICs0MzEsOCBAQCBkZWYgZ2V0X2Nvd19zeXNmc19wYXRoKGRldl9wYXRoLCBkZXZfc3lzZnNQYXRoKToKKyBkZWYgbWF0Y2hfcGF0aF9jb250ZXh0KHBhdGgpOgorICAgICAiIiIgUmV0dXJuIHRoZSBkZWZhdWx0IFNFTGludXggY29udGV4dCBmb3IgdGhlIGdpdmVuIHBhdGguICIiIgorICAgICBjb250ZXh0ID0gTm9uZQorKyAgICByZXR1cm4gY29udGV4dAorKworICAgICB0cnk6CisgICAgICAgICBjb250ZXh0ID0gc2VsaW51eC5tYXRjaHBhdGhjb24ob3MucGF0aC5ub3JtcGF0aChwYXRoKSwgMClbMV0KKyAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKK0BAIC00NTUsNiArNDU3LDggQEAgZGVmIHNldF9maWxlX2NvbnRleHQocGF0aCwgY29udGV4dCwgcm9vdD1Ob25lKToKKyAKKyAgICAgICAgICAgICBUcnVlIGlmIHN1Y2Nlc3NmdWwsIEZhbHNlIGlmIG5vdC4KKyAgICAgIiIiCisrICAgIHJldHVybiBGYWxzZQorKworICAgICBpZiByb290IGlzIE5vbmU6CisgICAgICAgICByb290ID0gJy8nCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMi1ydW5fcHJvZ3JhbS1zdXBwb3J0LXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFlNzFiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDg2NzQ0ZDQwOGI5MWFjZGNiMDg2YTAzZDc3NzlmY2RhMTUyZjJhYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTQ6Mzk6NTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xM10gcnVuX3Byb2dyYW0gc3VwcG9ydCB0aW1lb3V0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdXRpbC5weSB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5CitpbmRleCAwY2Y1MTg4Li5kNGJkOWJiIDEwMDY0NAorLS0tIGEvYmxpdmV0L3V0aWwucHkKKysrKyBiL2JsaXZldC91dGlsLnB5CitAQCAtMTU4LDYgKzE1OCwzMCBAQCBjbGFzcyBQYXRoKHN0cik6CisgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoLl9faGFzaF9fKCkKKyAKKytkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CisrICAgICIiImNhbGwgc2hlbGwtY29tbWFuZCBhbmQgZWl0aGVyIHJldHVybiBpdHMgb3V0cHV0IG9yIGtpbGwgaXQKKysgICAgaWYgaXQgZG9lc24ndCBub3JtYWxseSBleGl0IHdpdGhpbiB0aW1lb3V0IHNlY29uZHMgYW5kIHJldHVybiBOb25lIiIiCisrICAgIGltcG9ydCBzdWJwcm9jZXNzLCBkYXRldGltZSwgb3MsIHRpbWUsIHNpZ25hbAorKyAgICBzdGFydCA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisrCisrICAgIHRyeToKKysgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3YsICphcmdzLCAqKmt3YXJncykKKysgICAgICAgIHdoaWxlIHByb2MucG9sbCgpIGlzIE5vbmU6CisrICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisrICAgICAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKysgICAgICAgICAgICBpZiAobm93IC0gc3RhcnQpLnNlY29uZHM+IHRpbWVvdXQ6CisrICAgICAgICAgICAgICAgIG9zLmtpbGwocHJvYy5waWQsIHNpZ25hbC5TSUdLSUxMKQorKyAgICAgICAgICAgICAgICBvcy53YWl0cGlkKC0xLCBvcy5XTk9IQU5HKQorKyAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5kZWJ1ZygiJWQgc2Vjb25kcyB0aW1lb3V0IiAlIHRpbWVvdXQpCisrICAgICAgICAgICAgICAgIHJldHVybiAoLTEsIE5vbmUpCisrCisrCisrICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisrICAgICAgICBwcm9ncmFtX2xvZy5lcnJvcigiRXJyb3IgcnVubmluZyAlczogJXMiLCBhcmd2WzBdLCBlLnN0cmVycm9yKQorKyAgICAgICAgcmFpc2UKKysKKysgICAgcHJvZ3JhbV9sb2cuZGVidWcoIlJldHVybiBjb2RlOiAlZCIsIHByb2MucmV0dXJuY29kZSkKKysgICAgcmV0dXJuIChwcm9jLnJldHVybmNvZGUsIHByb2Muc3Rkb3V0LnJlYWQoKSkKKyAKKyBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYWxzZSwgYmluYXJ5X291dHB1dD1GYWxzZSk6CisgICAgIGlmIGVudl9wcnVuZSBpcyBOb25lOgorQEAgLTE4MCwzNiArMjA0LDIyIEBAIGRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhCisgICAgICAgICAgICAgc3RkZXJyX2RpciA9IHN1YnByb2Nlc3MuU1RET1VUCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHN0ZGVycl9kaXIgPSBzdWJwcm9jZXNzLlBJUEUKKy0gICAgICAgIHRyeToKKy0gICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihhcmd2LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN0ZGluLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0ZGVycl9kaXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPVRydWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1jaHJvb3QsIGN3ZD1yb290LCBlbnY9ZW52KQorLQorLSAgICAgICAgICAgIG91dCwgZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCistICAgICAgICAgICAgaWYgbm90IGJpbmFyeV9vdXRwdXQgYW5kIHNpeC5QWTM6CistICAgICAgICAgICAgICAgIG91dCA9IG91dC5kZWNvZGUoInV0Zi04IikKKy0gICAgICAgICAgICBpZiBvdXQ6CistICAgICAgICAgICAgICAgIGlmIG5vdCBzdGRlcnJfdG9fc3Rkb3V0OgorLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygic3Rkb3V0OiIpCistICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIG91dC5zcGxpdGxpbmVzKCk6CistICAgICAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCIlcyIsIGxpbmUpCistCistICAgICAgICAgICAgaWYgbm90IHN0ZGVycl90b19zdGRvdXQgYW5kIGVycjoKKy0gICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygic3RkZXJyOiIpCistICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGVyci5zcGxpdGxpbmVzKCk6CistICAgICAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCIlcyIsIGxpbmUpCistCistICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorLSAgICAgICAgICAgIHByb2dyYW1fbG9nLmVycm9yKCJFcnJvciBydW5uaW5nICVzOiAlcyIsIGFyZ3ZbMF0sIGUuc3RyZXJyb3IpCistICAgICAgICAgICAgcmFpc2UKKy0KKy0gICAgICAgIHByb2dyYW1fbG9nLmRlYnVnKCJSZXR1cm4gY29kZTogJWQiLCBwcm9jLnJldHVybmNvZGUpCistCistICAgIHJldHVybiAocHJvYy5yZXR1cm5jb2RlLCBvdXQpCisgCisrICAgICAgICByZXMsIG91dCA9IHRpbWVvdXRfY29tbWFuZChhcmd2LCAxMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN0ZGluLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdGRlcnJfZGlyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPVRydWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuPWNocm9vdCwgY3dkPXJvb3QsIGVudj1lbnYpCisrICAgICAgICBpZiBub3QgYmluYXJ5X291dHB1dCBhbmQgc2l4LlBZMzoKKysgICAgICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKCJ1dGYtOCIpCisrICAgICAgICBpZiBvdXQ6CisrICAgICAgICAgICAgaWYgbm90IHN0ZGVycl90b19zdGRvdXQ6CisrICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmluZm8oInN0ZG91dDoiKQorKyAgICAgICAgICAgIGZvciBsaW5lIGluIG91dC5zcGxpdGxpbmVzKCk6CisrICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmluZm8oIiVzIiwgbGluZSkKKysKKysgICAgcmV0dXJuIChyZXMsIG91dCkKKyAKKyBkZWYgcnVuX3Byb2dyYW0oKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgcmV0dXJuIF9ydW5fcHJvZ3JhbSgqYXJncywgKiprd2FyZ3MpWzBdCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDMtc3VwcG9ydC1pbmZpbml0LXRpbWVvdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OWZiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gOTIzMjY1ZTA0ZGY1OTIwZmM5OTM5M2FhMDVmNTg0MDMyYWExYjM4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjoxODowMiArMDgwMAorU3ViamVjdDogW1BBVENIIDAzLzEzXSBzdXBwb3J0IGluZmluaXQgdGltZW91dAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3V0aWwucHkgfCAxMiArKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQoraW5kZXggZDRiZDliYi4uNDRhMmRhNSAxMDA2NDQKKy0tLSBhL2JsaXZldC91dGlsLnB5CisrKysgYi9ibGl2ZXQvdXRpbC5weQorQEAgLTE1OCw2ICsxNTgsNyBAQCBjbGFzcyBQYXRoKHN0cik6CisgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoLl9faGFzaF9fKCkKKyAKKysjIHRpbWVvdXQgPSAtMSBtZWFucyBpbmZpbml0ZSB0aW1lb3V0LCBhbHdheXMgd2FpdC4KKyBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICIiImNhbGwgc2hlbGwtY29tbWFuZCBhbmQgZWl0aGVyIHJldHVybiBpdHMgb3V0cHV0IG9yIGtpbGwgaXQKKyAgICAgaWYgaXQgZG9lc24ndCBub3JtYWxseSBleGl0IHdpdGhpbiB0aW1lb3V0IHNlY29uZHMgYW5kIHJldHVybiBOb25lIiIiCitAQCAtMTY5LDcgKzE3MCw3IEBAIGRlZiB0aW1lb3V0X2NvbW1hbmQoYXJndiwgdGltZW91dCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIHdoaWxlIHByb2MucG9sbCgpIGlzIE5vbmU6CisgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKy0gICAgICAgICAgICBpZiAobm93IC0gc3RhcnQpLnNlY29uZHM+IHRpbWVvdXQ6CisrICAgICAgICAgICAgaWYgdGltZW91dCAhPSAtMSBhbmQgKG5vdyAtIHN0YXJ0KS5zZWNvbmRzPiB0aW1lb3V0OgorICAgICAgICAgICAgICAgICBvcy5raWxsKHByb2MucGlkLCBzaWduYWwuU0lHS0lMTCkKKyAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZCgtMSwgb3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIiVkIHNlY29uZHMgdGltZW91dCIgJSB0aW1lb3V0KQorQEAgLTE4Myw3ICsxODQsNyBAQCBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgIHByb2dyYW1fbG9nLmRlYnVnKCJSZXR1cm4gY29kZTogJWQiLCBwcm9jLnJldHVybmNvZGUpCisgICAgIHJldHVybiAocHJvYy5yZXR1cm5jb2RlLCBwcm9jLnN0ZG91dC5yZWFkKCkpCisgCistZGVmIF9ydW5fcHJvZ3JhbShhcmd2LCByb290PScvJywgc3RkaW49Tm9uZSwgZW52X3BydW5lPU5vbmUsIHN0ZGVycl90b19zdGRvdXQ9RmFsc2UsIGJpbmFyeV9vdXRwdXQ9RmFsc2UpOgorK2RlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhbHNlLCBiaW5hcnlfb3V0cHV0PUZhbHNlLCB0aW1lb3V0PTEwKToKKyAgICAgaWYgZW52X3BydW5lIGlzIE5vbmU6CisgICAgICAgICBlbnZfcHJ1bmUgPSBbXQorIAorQEAgLTE5Miw3ICsxOTMsMTAgQEAgZGVmIF9ydW5fcHJvZ3JhbShhcmd2LCByb290PScvJywgc3RkaW49Tm9uZSwgZW52X3BydW5lPU5vbmUsIHN0ZGVycl90b19zdGRvdXQ9RmEKKyAgICAgICAgICAgICBvcy5jaHJvb3Qocm9vdCkKKyAKKyAgICAgd2l0aCBwcm9ncmFtX2xvZ19sb2NrOiAgIyBweWxpbnQ6IGRpc2FibGU9bm90LWNvbnRleHQtbWFuYWdlcgorLSAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygiUnVubmluZy4uLiAlcyIsICIgIi5qb2luKGFyZ3YpKQorKyAgICAgICAgaWYgdGltZW91dCAhPSAtMToKKysgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCJSdW5uaW5nLi4uICVzIiwgIiAiLmpvaW4oYXJndikpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHByb2dyYW1fbG9nLmluZm8oIlJ1bm5pbmcuLi4gJXMgLi4uaW5maW5pdGUgdGltZW91dCIsICIgIi5qb2luKGFyZ3YpKQorIAorICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgIGVudi51cGRhdGUoeyJMQ19BTEwiOiAiQyIsCitAQCAtMjA1LDcgKzIwOSw3IEBAIGRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHN0ZGVycl9kaXIgPSBzdWJwcm9jZXNzLlBJUEUKKyAKKy0gICAgICAgIHJlcywgb3V0ID0gdGltZW91dF9jb21tYW5kKGFyZ3YsIDEwLAorKyAgICAgICAgcmVzLCBvdXQgPSB0aW1lb3V0X2NvbW1hbmQoYXJndiwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN0ZGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdGRlcnJfZGlyLAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA0LU1vdW50LXZhci12b2xhdGlsZS1kdXJpbmctaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDQtTW91bnQtdmFyLXZvbGF0aWxlLWR1cmluZy1pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODM3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA0LU1vdW50LXZhci12b2xhdGlsZS1kdXJpbmctaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIGMzOTU5YmQwMDY2NWUyNGE5NTViYmRiZWExZWY1NTVlNzYzNzJmMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTY6MjU6MTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xM10gTW91bnQgL3Zhci92b2xhdGlsZSBkdXJpbmcgaW5zdGFsbAorCitUaGUgaW5zdGFsbGVkIHN5c3RlbSBuZWVkcyAvdmFyL3ZvbGF0aWxlIGNsZWFuLCBvdGhlcndpc2UgaXQKK2NhdXNlZCBzeXN0ZW1kJ3Mgam91cm5hbGN0bCBmYWlsZWQgdG8gcmVjb3JkIGJvb3QgbG9nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvb3NpbnN0YWxsLnB5IHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvb3NpbnN0YWxsLnB5IGIvYmxpdmV0L29zaW5zdGFsbC5weQoraW5kZXggYTRmOTUzNS4uNjE4MTljMiAxMDA2NDQKKy0tLSBhL2JsaXZldC9vc2luc3RhbGwucHkKKysrKyBiL2JsaXZldC9vc2luc3RhbGwucHkKK0BAIC0yOTQsNiArMjk0LDcgQEAgY2xhc3MgRlNTZXQob2JqZWN0KToKKyAgICAgICAgIHNlbGYuX3N5c2ZzID0gTm9uZQorICAgICAgICAgc2VsZi5fcHJvYyA9IE5vbmUKKyAgICAgICAgIHNlbGYuX2RldnNobSA9IE5vbmUKKysgICAgICAgIHNlbGYuX3ZvbGF0aWxlID0gTm9uZQorICAgICAgICAgc2VsZi5fdXNiID0gTm9uZQorICAgICAgICAgc2VsZi5fc2VsaW51eCA9IE5vbmUKKyAgICAgICAgIHNlbGYuX3J1biA9IE5vbmUKK0BAIC0zMzUsNiArMzM2LDEyIEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6CisgICAgICAgICByZXR1cm4gc2VsZi5fZGV2c2htCisgCisgICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgdm9sYXRpbGUoc2VsZik6CisrICAgICAgICBpZiBub3Qgc2VsZi5fdm9sYXRpbGU6CisrICAgICAgICAgICAgc2VsZi5fdm9sYXRpbGUgPSBOb0RldmljZShmbXQ9Z2V0X2Zvcm1hdCgidG1wZnMiLCBkZXZpY2U9InRtcGZzIiwgbW91bnRwb2ludD0iL3Zhci92b2xhdGlsZSIpKQorKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZvbGF0aWxlCisrCisrICAgIEBwcm9wZXJ0eQorICAgICBkZWYgdXNiKHNlbGYpOgorICAgICAgICAgaWYgbm90IHNlbGYuX3VzYjoKKyAgICAgICAgICAgICBzZWxmLl91c2IgPSBOb0RldmljZShmbXQ9Z2V0X2Zvcm1hdCgidXNiZnMiLCBkZXZpY2U9InVzYmZzIiwgbW91bnRwb2ludD0iL3Byb2MvYnVzL3VzYiIpKQorQEAgLTU5MSw2ICs1OTgsNyBAQCBjbGFzcyBGU1NldChvYmplY3QpOgorIAorICAgICAgICAgZGV2aWNlcyA9IGxpc3Qoc2VsZi5tb3VudHBvaW50cy52YWx1ZXMoKSkgKyBzZWxmLnN3YXBfZGV2aWNlcworICAgICAgICAgZGV2aWNlcy5leHRlbmQoW3NlbGYuZGV2LCBzZWxmLmRldnNobSwgc2VsZi5kZXZwdHMsIHNlbGYuc3lzZnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52b2xhdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2MsIHNlbGYuc2VsaW51eCwgc2VsZi51c2IsIHNlbGYucnVuXSkKKyAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3BsYXRmb3JtLCBFRkkpOgorICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKHNlbGYuZWZpdmFycykKK0BAIC02NTAsNiArNjU4LDcgQEAgY2xhc3MgRlNTZXQob2JqZWN0KToKKyAgICAgICAgICIiIiB1bm1vdW50IGZpbGVzeXN0ZW1zLCBleGNlcHQgc3dhcCBpZiBzd2Fwb2ZmID09IEZhbHNlICIiIgorICAgICAgICAgZGV2aWNlcyA9IGxpc3Qoc2VsZi5tb3VudHBvaW50cy52YWx1ZXMoKSkgKyBzZWxmLnN3YXBfZGV2aWNlcworICAgICAgICAgZGV2aWNlcy5leHRlbmQoW3NlbGYuZGV2LCBzZWxmLmRldnNobSwgc2VsZi5kZXZwdHMsIHNlbGYuc3lzZnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52b2xhdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2MsIHNlbGYudXNiLCBzZWxmLnNlbGludXgsIHNlbGYucnVuXSkKKyAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3BsYXRmb3JtLCBFRkkpOgorICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKHNlbGYuZWZpdmFycykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMzQzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA1LXVwZGF0ZS1mc3RhYi1ieS1hcHBlbmRpbmcucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzODZmZjg5OTc2M2Y4NDczZWI5M2E3YTE1NzhmYjdjYzRmODZmNjZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjI4OjEyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTNdIHVwZGF0ZSBmc3RhYiBieSBhcHBlbmRpbmcKKworVGhlICdzdG9yYWdlLndyaXRlKCknIGhhcyB1cGRhdGVkIGZzdGFiIGJ5IG92ZXJ3cml0aW5nCit0aGUgb3JpZ2luYWwgb25lLCB3ZSBzaG91bGQgdXBkYXRlIGZzdGFiIGJ5IGFwcGVuZGluZwordG8ga2VlcCBvcmlnaW5hbCB0bXBmcyBwYXJ0aXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvb3NpbnN0YWxsLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L29zaW5zdGFsbC5weSBiL2JsaXZldC9vc2luc3RhbGwucHkKK2luZGV4IDYxODE5YzIuLmFmYTgyZGIgMTAwNjQ0CistLS0gYS9ibGl2ZXQvb3NpbnN0YWxsLnB5CisrKysgYi9ibGl2ZXQvb3NpbnN0YWxsLnB5CitAQCAtNzI4LDcgKzcyOCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6CisgICAgICAgICAjIC9ldGMvZnN0YWIKKyAgICAgICAgIGZzdGFiX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKCIlcy9ldGMvZnN0YWIiICUgZ2V0X3N5c3Jvb3QoKSkKKyAgICAgICAgIGZzdGFiID0gc2VsZi5mc3RhYigpCistICAgICAgICBvcGVuKGZzdGFiX3BhdGgsICJ3Iikud3JpdGUoZnN0YWIpCisrICAgICAgICBvcGVuKGZzdGFiX3BhdGgsICJhIikud3JpdGUoZnN0YWIpCisgCisgICAgICAgICAjIC9ldGMvY3J5cHR0YWIKKyAgICAgICAgIGNyeXB0dGFiX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKCIlcy9ldGMvY3J5cHR0YWIiICUgZ2V0X3N5c3Jvb3QoKSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNi1maXgtbmV3LnJvb3RzLW9iamVjdC1pcy1ub3QtaXRlcmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA2LWZpeC1uZXcucm9vdHMtb2JqZWN0LWlzLW5vdC1pdGVyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWZmNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNi1maXgtbmV3LnJvb3RzLW9iamVjdC1pcy1ub3QtaXRlcmFibGUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBjZDkyZWVhOGZhYjM3YmE2YjBjN2YwM2RhYTUyNTUzNDNkYzc1NzE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjMwOjIwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTNdIGZpeCBuZXcucm9vdHMgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L2JsaXZldC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC9ibGl2ZXQucHkgYi9ibGl2ZXQvYmxpdmV0LnB5CitpbmRleCA2YTMzZTljLi43OWFlOTFhIDEwMDY0NAorLS0tIGEvYmxpdmV0L2JsaXZldC5weQorKysrIGIvYmxpdmV0L2JsaXZldC5weQorQEAgLTE3NjEsNyArMTc2MSw3IEBAIGNsYXNzIEJsaXZldChvYmplY3QpOgorICAgICAgICAgICAgIHAgPSBwYXJ0aXRpb24uZGlzay5mb3JtYXQucGFydGVkX2Rpc2suZ2V0UGFydGl0aW9uQnlQYXRoKHBhcnRpdGlvbi5wYXRoKQorICAgICAgICAgICAgIHBhcnRpdGlvbi5wYXJ0ZWRfcGFydGl0aW9uID0gcAorIAorLSAgICAgICAgZm9yIHJvb3QgaW4gbmV3LnJvb3RzOgorKyAgICAgICAgZm9yIHJvb3QgaW4gbmV3LnJvb3RzIG9yIFtdOgorICAgICAgICAgICAgIHJvb3Quc3dhcHMgPSBbbmV3LmRldmljZXRyZWUuZ2V0X2RldmljZV9ieV9pZChkLmlkLCBoaWRkZW49VHJ1ZSkgZm9yIGQgaW4gcm9vdC5zd2Fwc10KKyAgICAgICAgICAgICByb290LnN3YXBzID0gW3MgZm9yIHMgaW4gcm9vdC5zd2FwcyBpZiBzXQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA3LWZpeC1pbmNvcnJlY3QtdGltZW91dC13aGlsZS1zeXN0ZW0tdGltZS1jaGFuZ2VkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTEyZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDc4ZWUyYjkwOTBmOTQwMGNjYzRmNzMwZTY3NGY1YWU5NzI3NDBjY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI2IEF1ZyAyMDE2IDAyOjAyOjQ5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTNdIGZpeCBpbmNvcnJlY3QgdGltZW91dCB3aGlsZSBzeXN0ZW0gdGltZSBjaGFuZ2VkCisKK1doaWxlIHN5c3RlbSB0aW1lIGNoYW5nZWQgYnkgTlRQLCBpbnZva2luZyB0aW1lb3V0X2NvbW1hbmQKK2JyZWFrcyB3aXRoIGluY29ycmVjdCB0aW1lb3V0LgorLS0tLS0tLS0KK3wwNTo0MDo1NSw4NzIgSU5GTyBwcm9ncmFtOiBSdW5uaW5nLi4uIG1vdW50IC10IGV4dDIgLW8KKyAgZGVmYXVsdHMscm8gL2Rldi9zZGEyIC9tbnQvc3lzaW1hZ2UKK3wwMTo0MDo1NSwwODYgREVCVUcgcHJvZ3JhbTogMTAgc2Vjb25kcyB0aW1lb3V0CistLS0tLS0tLQorCitVc2UgbnVtYmVydCBjb3VudCB0byByZXBsYWNlIGN1cnJlbnQgdGltZSBjb3VudCBjb3VsZCB3b3JrYXJvdW5kCit0aGUgaXNzdWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdXRpbC5weSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC91dGlsLnB5IGIvYmxpdmV0L3V0aWwucHkKK2luZGV4IDQ0YTJkYTUuLmIzYzQ1YWMgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdXRpbC5weQorKysrIGIvYmxpdmV0L3V0aWwucHkKK0BAIC0xNjMsMTQgKzE2MywxNCBAQCBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICIiImNhbGwgc2hlbGwtY29tbWFuZCBhbmQgZWl0aGVyIHJldHVybiBpdHMgb3V0cHV0IG9yIGtpbGwgaXQKKyAgICAgaWYgaXQgZG9lc24ndCBub3JtYWxseSBleGl0IHdpdGhpbiB0aW1lb3V0IHNlY29uZHMgYW5kIHJldHVybiBOb25lIiIiCisgICAgIGltcG9ydCBzdWJwcm9jZXNzLCBkYXRldGltZSwgb3MsIHRpbWUsIHNpZ25hbAorLSAgICBzdGFydCA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisrICAgIGNvdW50ID0gMAorIAorICAgICB0cnk6CisgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihhcmd2LCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICB3aGlsZSBwcm9jLnBvbGwoKSBpcyBOb25lOgorICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorLSAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCistICAgICAgICAgICAgaWYgdGltZW91dCAhPSAtMSBhbmQgKG5vdyAtIHN0YXJ0KS5zZWNvbmRzPiB0aW1lb3V0OgorKyAgICAgICAgICAgIGNvdW50ICs9IDEKKysgICAgICAgICAgICBpZiB0aW1lb3V0ICE9IC0xIGFuZCBjb3VudCA+IHRpbWVvdXQqMTA6CisgICAgICAgICAgICAgICAgIG9zLmtpbGwocHJvYy5waWQsIHNpZ25hbC5TSUdLSUxMKQorICAgICAgICAgICAgICAgICBvcy53YWl0cGlkKC0xLCBvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5kZWJ1ZygiJWQgc2Vjb25kcyB0aW1lb3V0IiAlIHRpbWVvdXQpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDgtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA4LXR3ZWFrLWJ0cmZzLXBhY2thZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTMzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA4LXR3ZWFrLWJ0cmZzLXBhY2thZ2VzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNmY2NjFhNTExZWVhMDk2YzA3Mzg4OGM3YWRiODM2YTlhODgwYjQ3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjozMzoxNSArMDgwMAorU3ViamVjdDogW1BBVENIIDA4LzEzXSB0d2VhayBidHJmcyBwYWNrYWdlcworCitJbiBvZS1jcmUveW9jdG8sIHdlIG5hbWUgYnRyZnMgcGFja2FnZSB3aXRoIGJ0cmZzLXRvb2xzLAorcmF0aGVyIHRoYW4gYnRyZnMtcHJvZ3MuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC9kZXZpY2VzL2J0cmZzLnB5IHwgMiArLQorIGJsaXZldC9mb3JtYXRzL2ZzLnB5ICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L2RldmljZXMvYnRyZnMucHkgYi9ibGl2ZXQvZGV2aWNlcy9idHJmcy5weQoraW5kZXggYzVjYjIxZi4uOWQ0MTdiMiAxMDA2NDQKKy0tLSBhL2JsaXZldC9kZXZpY2VzL2J0cmZzLnB5CisrKysgYi9ibGl2ZXQvZGV2aWNlcy9idHJmcy5weQorQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQlRSRlNEZXZpY2UoU3RvcmFnZURldmljZSk6CisgCisgICAgICIiIiBCYXNlIGNsYXNzIGZvciBCVFJGUyB2b2x1bWUgYW5kIHN1Yi12b2x1bWUgZGV2aWNlcy4gIiIiCisgICAgIF90eXBlID0gImJ0cmZzIgorLSAgICBfcGFja2FnZXMgPSBbImJ0cmZzLXByb2dzIl0KKysgICAgX3BhY2thZ2VzID0gWyJidHJmcy10b29scyJdCisgICAgIF9leHRlcm5hbF9kZXBlbmRlbmNpZXMgPSBbYXZhaWxhYmlsaXR5LkJMT0NLREVWX0JUUkZTX1BMVUdJTl0KKyAKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CitkaWZmIC0tZ2l0IGEvYmxpdmV0L2Zvcm1hdHMvZnMucHkgYi9ibGl2ZXQvZm9ybWF0cy9mcy5weQoraW5kZXggYTQ5ODI2Zi4uZThmMjE2ZCAxMDA2NDQKKy0tLSBhL2JsaXZldC9mb3JtYXRzL2ZzLnB5CisrKysgYi9ibGl2ZXQvZm9ybWF0cy9mcy5weQorQEAgLTkxOCw3ICs5MTgsNyBAQCBjbGFzcyBCVFJGUyhGUyk6CisgICAgIF9mb3JtYXR0YWJsZSA9IFRydWUKKyAgICAgX2xpbnV4X25hdGl2ZSA9IFRydWUKKyAgICAgX3N1cHBvcnRlZCA9IFRydWUKKy0gICAgX3BhY2thZ2VzID0gWyJidHJmcy1wcm9ncyJdCisrICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtdG9vbHMiXQorICAgICBfbWluX3NpemUgPSBTaXplKCIyNTYgTWlCIikKKyAgICAgX21heF9zaXplID0gU2l6ZSgiMTYgRWlCIikKKyAgICAgX21rZnNfY2xhc3MgPSBmc21rZnMuQlRSRlNNa2ZzCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDktaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOS1pbnZva2luZy1tb3VudC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDktaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTZhYzIxNTdlZTY3OTMzMDJlMjNkZGJjNWUzYjI0OWZhN2RhNWI3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMjE6MzA6MzIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xM10gaW52b2tpbmcgbW91bnQgd2l0aCBpbmZpbml0ZSB0aW1lb3V0CisKK1RoaXMgbGFyZ2UgdGltZW91dCBpcyBuZWVkZWQgd2hlbiBydW5uaW5nIG9uIG1hY2hpbmVzIHdpdGgKK2xvdHMgb2YgZGlza3MsIG9yIHdpdGggc2xvdyBkaXNrcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC91dGlsLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQoraW5kZXggYjNjNDVhYy4uOWYwMmIxOCAxMDA2NDQKKy0tLSBhL2JsaXZldC91dGlsLnB5CisrKysgYi9ibGl2ZXQvdXRpbC5weQorQEAgLTI1Nyw3ICsyNTcsNyBAQCBkZWYgbW91bnQoZGV2aWNlLCBtb3VudHBvaW50LCBmc3R5cGUsIG9wdGlvbnM9Tm9uZSk6CisgCisgICAgIGFyZ3YgPSBbIm1vdW50IiwgIi10IiwgZnN0eXBlLCAiLW8iLCBvcHRpb25zLCBkZXZpY2UsIG1vdW50cG9pbnRdCisgICAgIHRyeToKKy0gICAgICAgIHJjID0gcnVuX3Byb2dyYW0oYXJndikKKysgICAgICAgIHJjID0gcnVuX3Byb2dyYW0oYXJndiwgdGltZW91dD0tMSkKKyAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICByYWlzZQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVkOGZhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTAtdXNlLW9lLXZhcmlhYmxlLXRvLXJlcGxhY2UtaGFyZGNvZGVkLWRpci5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGUwNzEzM2RiY2YzYzUyZTFkZGQyZjEyNzk3ZGNkMTYxNDUyNjkyNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMDM6NTQ6MTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xM10gdXNlIG9lIHZhcmlhYmxlIHRvIHJlcGxhY2UgaGFyZGNvZGVkIGRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXAucHkgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDRkMDZhMzMuLmE5OTRkMDYgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC02MSwxMCArNjEsMTAgQEAgY2xhc3MgYmxpdmV0X3NkaXN0KHNkaXN0KToKKyAKKyAKKyBkYXRhX2ZpbGVzID0gWworLSAgICAoJy9ldGMvZGJ1cy0xL3N5c3RlbS5kJywgWydkYnVzL2JsaXZldC5jb25mJ10pLAorLSAgICAoJy91c3Ivc2hhcmUvZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcycsIFsnZGJ1cy9jb20ucmVkaGF0LkJsaXZldDEuc2VydmljZSddKSwKKy0gICAgKCcvdXNyL2xpYmV4ZWMnLCBbJ2RidXMvYmxpdmV0ZCddKSwKKy0gICAgKCcvdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbScsIFsnZGJ1cy9ibGl2ZXQuc2VydmljZSddKQorKyAgICAob3MuZW52aXJvbi5nZXQoJ3N5c2NvbmZkaXInKSsnL2RidXMtMS9zeXN0ZW0uZCcsIFsnZGJ1cy9ibGl2ZXQuY29uZiddKSwKKysgICAgKG9zLmVudmlyb24uZ2V0KCdkYXRhZGlyJykrJy9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzJywgWydkYnVzL2NvbS5yZWRoYXQuQmxpdmV0MS5zZXJ2aWNlJ10pLAorKyAgICAob3MuZW52aXJvbi5nZXQoJ2xpYmV4ZWNkaXInKSwgWydkYnVzL2JsaXZldGQnXSksCisrICAgIChvcy5lbnZpcm9uLmdldCgnc3lzdGVtZF9zeXN0ZW1fdW5pdGRpcicpLCBbJ2RidXMvYmxpdmV0LnNlcnZpY2UnXSkKKyBdCisgCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTEtaW52b2tpbmctZnNjay13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MWZlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZTlhYjQzNzZhMThjYzFiZDQxM2MwMDBiMDM2MzIwODMzZWVjODBkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNjowNToyNyArMDgwMAorU3ViamVjdDogW1BBVENIIDExLzEzXSBpbnZva2luZyBmc2NrIHdpdGggaW5maW5pdGUgdGltZW91dAorCitUaGlzIGxhcmdlIHRpbWVvdXQgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBtYWNoaW5lcyB3aXRoCitsb3RzIG9mIGRpc2tzLCBvciB3aXRoIHNsb3cgZGlza3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdGFza3MvZnNjay5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC90YXNrcy9mc2NrLnB5IGIvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKK2luZGV4IGM0MjE0ZGMuLmUxM2FjNmIgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdGFza3MvZnNjay5weQorKysrIGIvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKK0BAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIEZTQ0sodGFzay5CYXNpY0FwcGxpY2F0aW9uLCBmc3Rhc2suRlNUYXNrKToKKyAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKCJcbiIuam9pbihlcnJvcl9tc2dzKSkKKyAKKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICByYyA9IHV0aWwucnVuX3Byb2dyYW0oc2VsZi5fZnNja19jb21tYW5kKQorKyAgICAgICAgICAgIHJjID0gdXRpbC5ydW5fcHJvZ3JhbShzZWxmLl9mc2NrX2NvbW1hbmQsIHRpbWVvdXQ9LTEpCisgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIEZTRXJyb3IoImZpbGVzeXN0ZW0gY2hlY2sgZmFpbGVkOiAlcyIgJSBlKQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEyLWludm9raW5nLW1rZnMtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2JkYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDlmNWEwNDgxODFjZjI5ZDI0MWQ5NjgxNGU3MzZiODIzNWIzZDQyYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDE1OjQzOjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTNdIGludm9raW5nIG1rZnMgd2l0aCBpbmZpbml0ZSB0aW1lb3V0CisKK1RoaXMgbGFyZ2UgdGltZW91dCBpcyBuZWVkZWQgd2hlbiBydW5uaW5nIG9uIG1hY2hpbmVzIHdpdGgKK2xvdHMgb2YgZGlza3MsIG9yIHdpdGggc2xvdyBkaXNrcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC90YXNrcy9mc21rZnMucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdGFza3MvZnNta2ZzLnB5IGIvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weQoraW5kZXggYWQxNjZhYS4uN2JmNTA3NSAxMDA2NDQKKy0tLSBhL2JsaXZldC90YXNrcy9mc21rZnMucHkKKysrKyBiL2JsaXZldC90YXNrcy9mc21rZnMucHkKK0BAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgRlNNa2ZzKHRhc2suQmFzaWNBcHBsaWNhdGlvbiwgRlNNa2ZzVGFzayk6CisgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBbXQorICAgICAgICAgY21kID0gc2VsZi5fbWtmc19jb21tYW5kKG9wdGlvbnMsIGxhYmVsLCBzZXRfdXVpZCkKKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICByZXQgPSB1dGlsLnJ1bl9wcm9ncmFtKGNtZCkKKysgICAgICAgICAgICByZXQgPSB1dGlsLnJ1bl9wcm9ncmFtKGNtZCwgdGltZW91dD0tMSkKKyAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgcmFpc2UgRlNFcnJvcihlKQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEzLVJldmVydC1BZGFwdC10by1sb2dnaW5nLW1vZHVsZS1uYW1lLWNoYW5nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTMtUmV2ZXJ0LUFkYXB0LXRvLWxvZ2dpbmctbW9kdWxlLW5hbWUtY2hhbmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGY0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEzLVJldmVydC1BZGFwdC10by1sb2dnaW5nLW1vZHVsZS1uYW1lLWNoYW5nZS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGJmZGFmNzlhMjEwOWFjNmFlZDQwOGYwYzk0ZjY5NzY2OTkxZTYwZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEp1bCAyMDE3IDE0OjM0OjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTNdIFJldmVydCAiQWRhcHQgdG8gbG9nZ2luZyBtb2R1bGUgbmFtZSBjaGFuZ2UiCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWMsIHN5bmMgd2l0aCBhbmFjb25kYSBmMjYtcmVsZWFzZV0KKworVGhpcyByZXZlcnRzIGNvbW1pdCBjMzY3ZDYyYTUxNmU1NDFhZDI4NjM2YzgyNTkzMjFmMWM1MzQxN2NlLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvX19pbml0X18ucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvX19pbml0X18ucHkgYi9ibGl2ZXQvX19pbml0X18ucHkKK2luZGV4IDQ5Mjc3Y2IuLmEwMWU0ODcgMTAwNjQ0CistLS0gYS9ibGl2ZXQvX19pbml0X18ucHkKKysrKyBiL2JsaXZldC9fX2luaXRfXy5weQorQEAgLTEyNCw3ICsxMjQsNyBAQCBkZWYgZW5hYmxlX2luc3RhbGxlcl9tb2RlKCk6CisgICAgICAgICBmcm9tIHB5YW5hY29uZGEuY29uc3RhbnRzIGltcG9ydCBST09UX1BBVEggICMgcHlsaW50OiBkaXNhYmxlPXJlZGVmaW5lZC1vdXRlci1uYW1lLG5vLW5hbWUtaW4tbW9kdWxlCisgICAgICAgICBfc3RvcmFnZV9yb290ID0gX3N5c3Jvb3QgPSBST09UX1BBVEgKKyAKKy0gICAgZnJvbSBweWFuYWNvbmRhLmFuYWNvbmRhX2xvZ2dpbmcgaW1wb3J0IHByb2dyYW1fbG9nX2xvY2sKKysgICAgZnJvbSBweWFuYWNvbmRhLmFuYWNvbmRhX2xvZyBpbXBvcnQgcHJvZ3JhbV9sb2dfbG9jaworICAgICB1dGlsLnByb2dyYW1fbG9nX2xvY2sgPSBwcm9ncmFtX2xvZ19sb2NrCisgCisgICAgIGZsYWdzLmluc3RhbGxlcl9tb2RlID0gVHJ1ZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldF8yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhY2NhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldF8yLjIuMC5iYgpAQCAtMCwwICsxLDQ2IEBACitERVNDUklQVElPTiA9ICJBIHB5dGhvbiBtb2R1bGUgZm9yIHN5c3RlbSBzdG9yYWdlIGNvbmZpZ3VyYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9ibGl2ZXQiCitMSUNFTlNFID0gIkxHUEx2MisiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICIzOWRiODJmMjBkOGQ0OTA0YzBjNGRjODkxMmU1OTUxNzdjNTllMDkxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2JsaXZldDticmFuY2g9Mi4yLWRldmVsIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29tbWVudC1vdXQtc2VsaW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXJ1bl9wcm9ncmFtLXN1cHBvcnQtdGltZW91dC5wYXRjaFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtc3VwcG9ydC1pbmZpbml0LXRpbWVvdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Nb3VudC12YXItdm9sYXRpbGUtZHVyaW5nLWluc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC10d2Vhay1idHJmcy1wYWNrYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWludm9raW5nLW1vdW50LXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1pbnZva2luZy1mc2NrLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWludm9raW5nLW1rZnMtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtUmV2ZXJ0LUFkYXB0LXRvLWxvZ2dpbmctbW9kdWxlLW5hbWUtY2hhbmdlLnBhdGNoIFwKKyIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjNuYXRpdmUKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1weWtpY2tzdGFydCBweXRob24zLXB5dWRldiBcCisgICAgICAgICAgICAgICAgICBwYXJ0ZWQgcHl0aG9uMy1weXBhcnRlZCBtdWx0aXBhdGgtdG9vbHMgXAorICAgICAgICAgICAgICAgICAgbHNvZiBjcnlwdHNldHVwIGxpYmJsb2NrZGV2IFwKKyAgICAgICAgICAgICAgICAgIGxpYmJ5dGVzaXplIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyIKKworaW5oZXJpdCBzeXN0ZW1kCisKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJibGl2ZXQuc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0Z3VpXzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRndWlfMi4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM1MDdjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0Z3VpXzIuMS41LmJiCkBAIC0wLDAgKzEsMjcgQEAKK0RFU0NSSVBUSU9OID0gIkdVSSB0b29sIGZvciBzdG9yYWdlIGNvbmZpZ3VyYXRpb24gdXNpbmcgYmxpdmV0IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvYmxpdmV0LWd1aSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiNTJhZThjMDAwODQzYzA1YWJkMWQ4NzQ5ZjQ0YmJlMmU1ZDg5MWQzZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9ibGl2ZXQtZ3VpO2JyYW5jaD1tYXN0ZXIgXAorIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXB5Z29iamVjdCBweXRob24zIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtYmxpdmV0IGd0ayszICBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBpZCBsaWJyZXBvcnQgXAorIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9LyogXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhY2U0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ1LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQSBweXRob24gbGlicmFyeSBmb3IgaGFuZGxpbmcgZXhjZXB0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoZSBweXRob24tbWVoIHBhY2thZ2UgaXMgYSBweXRob24gbGlicmFyeSBmb3IgaGFuZGxpbmcsIHNhdmluZywgYW5kIHJlcG9ydGluZyBcCitleGNlcHRpb25zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9naXQvP3A9cHl0aG9uLW1laC5naXQiCitMSUNFTlNFID0gIkdQTHYyKyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHl0aG9uLW1laC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciBcCisiCitTUkNSRVYgPSAiMmJmYzc1MWZkNjgwNTE1ZDQ0ZjcwOTY5NDVhMWUyODJhMWY3ZDZhYSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDEtc3VwcG9ydC1hdXRoZW50aWNhdGlvbi1mb3Ita2lja3N0YXJ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAxLXN1cHBvcnQtYXV0aGVudGljYXRpb24tZm9yLWtpY2tzdGFydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTc2OTlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAxLXN1cHBvcnQtYXV0aGVudGljYXRpb24tZm9yLWtpY2tzdGFydC5wYXRjaApAQCAtMCwwICsxLDE1MSBAQAorRnJvbSBkMGQ4ODkwYjVlZjc0YzMxNTM4MWM5ZTFjZmY0YjFkMzI4OTIxMTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxIEp1biAyMDE3IDE1OjA3OjM2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBzdXBwb3J0IGF1dGhlbnRpY2F0aW9uIGZvciBraWNrc3RhcnQKKworV2hpbGUgZG93bmxvYWQga2lja3N0YXJ0IGZpbGUgZnJvbSB3ZWIgc2VydmVyLAord2Ugc3VwcG9ydCBiYXNpYy9kaWdlc3QgYXV0aGVudGljYXRpb24uCisKK0FkZCBLaWNrc3RhcnRBdXRoRXJyb3IgdG8gcmVwb3J0IGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUsCit3aGljaCB0aGUgaW52b2tlciBjb3VsZCBwYXJzZSB0aGlzIHNwZWNpZmljIGVycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBweWtpY2tzdGFydC9lcnJvcnMucHkgfCAxOSArKysrKysrKysrKysrKysrKysrCisgcHlraWNrc3RhcnQvbG9hZC5weSAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyBweWtpY2tzdGFydC9wYXJzZXIucHkgfCAgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvZXJyb3JzLnB5IGIvcHlraWNrc3RhcnQvZXJyb3JzLnB5CitpbmRleCBiNzZlODRjLi5mZDgxYmM4IDEwMDY0NAorLS0tIGEvcHlraWNrc3RhcnQvZXJyb3JzLnB5CisrKysgYi9weWtpY2tzdGFydC9lcnJvcnMucHkKK0BAIC0zNSw2ICszNSwxMCBAQCBJdCBhbHNvIGV4cG9ydHMgc2V2ZXJhbCBleGNlcHRpb24gY2xhc3NlczoKKyAKKyAgICAgS2lja3N0YXJ0VmVyc2lvbkVycm9yIC0gQW4gZXhjZXB0aW9uIGZvciBlcnJvcnMgcmVsYXRpbmcgdG8gdW5zdXBwb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4IHZlcnNpb25zLgorKworKyAgICBLaWNrc3RhcnRBdXRoRXJyb3IgLSBBbiBleGNlcHRpb24gZm9yIGVycm9ycyByZWxhdGluZyB0byBhdXRoZW50aWNhdGlvbgorKyAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWQgd2hpbGUgZG93bmxvYWRpbmcga2lja3N0YXJ0IGZyb20gd2ViIHNlcnZlcgorKworICIiIgorIGltcG9ydCB3YXJuaW5ncworIAorQEAgLTEwMywzICsxMDcsMTggQEAgY2xhc3MgS2lja3N0YXJ0VmVyc2lvbkVycm9yKEtpY2tzdGFydEVycm9yKToKKyAKKyAgICAgZGVmIF9fc3RyX18gKHNlbGYpOgorICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKysKKytjbGFzcyBLaWNrc3RhcnRBdXRoRXJyb3IoS2lja3N0YXJ0RXJyb3IpOgorKyAgICAiIiJBbiBleGNlcHRpb24gZm9yIGVycm9ycyByZWxhdGluZyB0byBhdXRoZW50aWNhdGlvbiBmYWlsZWQgd2hpbGUKKysgICAgICAgZG93bmxvYWRpbmcga2lja3N0YXJ0IGZyb20gd2ViIHNlcnZlcgorKyAgICAiIiIKKysgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CisrICAgICAgICAiIiJDcmVhdGUgYSBuZXcgS2lja3N0YXJ0QXV0aEVycm9yIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aXRoIHRoZQorKyAgICAgICAgICAgZGVzY3JpcHRpdmUgbWVzc2FnZSB2YWwuICB2YWwgc2hvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YKKysgICAgICAgICAgIGZvcm1hdEVycm9yTXNnLgorKyAgICAgICAgIiIiCisrICAgICAgICBLaWNrc3RhcnRFcnJvci5fX2luaXRfXyhzZWxmLCBtc2cpCisrCisrICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKysKK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9sb2FkLnB5IGIvcHlraWNrc3RhcnQvbG9hZC5weQoraW5kZXggMWY2OWI5Yy4uMGY1NzQxYiAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L2xvYWQucHkKKysrKyBiL3B5a2lja3N0YXJ0L2xvYWQucHkKK0BAIC0xOCwxMCArMTgsMTMgQEAKKyAjIHdpdGggdGhlIGV4cHJlc3MgcGVybWlzc2lvbiBvZiBSZWQgSGF0LCBJbmMuCisgIworIGltcG9ydCByZXF1ZXN0cworK2Zyb20gcmVxdWVzdHMuYXV0aCBpbXBvcnQgSFRUUERpZ2VzdEF1dGgKKytmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhUVFBCYXNpY0F1dGgKKysKKyBpbXBvcnQgc2h1dGlsCisgaW1wb3J0IHNpeAorIAorLWZyb20gcHlraWNrc3RhcnQuZXJyb3JzIGltcG9ydCBLaWNrc3RhcnRFcnJvcgorK2Zyb20gcHlraWNrc3RhcnQuZXJyb3JzIGltcG9ydCBLaWNrc3RhcnRFcnJvciwgS2lja3N0YXJ0QXV0aEVycm9yCisgZnJvbSBweWtpY2tzdGFydC5pMThuIGltcG9ydCBfCisgZnJvbSByZXF1ZXN0cy5leGNlcHRpb25zIGltcG9ydCBTU0xFcnJvciwgUmVxdWVzdEV4Y2VwdGlvbgorIAorQEAgLTI5LDcgKzMyLDcgQEAgX2lzX3VybCA9IGxhbWJkYSBsb2NhdGlvbjogJzovLycgaW4gbG9jYXRpb24gIyBSRkMgMzk4NgorIAorIFNTTF9WRVJJRlkgPSBUcnVlCisgCistZGVmIGxvYWRfdG9fc3RyKGxvY2F0aW9uKToKKytkZWYgbG9hZF90b19zdHIobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorICAgICAnJydMb2FkIGEgZGVzdGluYXRpb24gVVJMIG9yIGZpbGUgaW50byBhIHN0cmluZy4KKyAgICAgVHlwZSBvZiBpbnB1dCBpcyBpbmZlcnJlZCBhdXRvbWF0aWNhbGx5LgorIAorQEAgLTQwLDcgKzQzLDcgQEAgZGVmIGxvYWRfdG9fc3RyKGxvY2F0aW9uKToKKyAgICAgUmFpc2VzOiBLaWNrc3RhcnRFcnJvciBvbiBlcnJvciByZWFkaW5nJycnCisgCisgICAgIGlmIF9pc191cmwobG9jYXRpb24pOgorLSAgICAgICAgcmV0dXJuIF9sb2FkX3VybChsb2NhdGlvbikKKysgICAgICAgIHJldHVybiBfbG9hZF91cmwobG9jYXRpb24sIHVzZXI9dXNlciwgcGFzc3dkPXBhc3N3ZCkKKyAgICAgZWxzZToKKyAgICAgICAgIHJldHVybiBfbG9hZF9maWxlKGxvY2F0aW9uKQorIAorQEAgLTcxLDEzICs3NCwzMiBAQCBkZWYgbG9hZF90b19maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbik6CisgICAgICAgICBfY29weV9maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbikKKyAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbgorIAorK2RlZiBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorKworKyAgICBhdXRoID0gTm9uZQorKyAgICByZXF1ZXN0ID0gcmVxdWVzdHMuZ2V0KGxvY2F0aW9uLCB2ZXJpZnk9U1NMX1ZFUklGWSkKKysgICAgaWYgcmVxdWVzdC5zdGF0dXNfY29kZSA9PSByZXF1ZXN0cy5jb2Rlcy51bmF1dGhvcml6ZWQ6CisrICAgICAgICBpZiB1c2VyIGlzIE5vbmUgb3IgcGFzc3dkIGlzIE5vbmU6CisrICAgICAgICAgICAgbG9nLmluZm8oIlJlcXVpcmUgQXV0aGVudGljYXRpb24iKQorKyAgICAgICAgICAgIHJhaXNlIEtpY2tzdGFydEF1dGhFcnJvcigiUmVxdWlyZSBBdXRoZW50aWNhdGlvbi5cbkFwcGVuZCAna3N1c2VyPTx1c2VybmFtZT4ga3NwYXNzd2Q9PHBhc3N3b3JkPicgdG8gYm9vdCBjb21tYW5kIikKKyAKKysgICAgICAgIHJlYXNvbnMgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJXV1ctQXV0aGVudGljYXRlIiwgIiIpLnNwbGl0KCkKKysgICAgICAgIGlmIHJlYXNvbnM6CisrICAgICAgICAgICAgYXV0aF90eXBlID0gcmVhc29uc1swXQorKyAgICAgICAgaWYgYXV0aF90eXBlID09ICJCYXNpYyI6CisrICAgICAgICAgICAgYXV0aCA9IEhUVFBCYXNpY0F1dGgodXNlciwgcGFzc3dkKQorKyAgICAgICAgZWxpZiBhdXRoX3R5cGUgPT0gIkRpZ2VzdCI6CisrICAgICAgICAgICAgYXV0aD1IVFRQRGlnZXN0QXV0aCh1c2VyLCBwYXNzd2QpCisgCistZGVmIF9sb2FkX3VybChsb2NhdGlvbik6CisrICAgIHJldHVybiBhdXRoCisrCisrZGVmIF9sb2FkX3VybChsb2NhdGlvbiwgdXNlcj1Ob25lLCBwYXNzd2Q9Tm9uZSk6CisgICAgICcnJ0xvYWQgYSBsb2NhdGlvbiAoVVJMIG9yIGZpbGVuYW1lKSBhbmQgcmV0dXJuIGNvbnRlbnRzIGFzIHN0cmluZycnJworIAorKyAgICBhdXRoID0gX2dldF9hdXRoKGxvY2F0aW9uLCB1c2VyPXVzZXIsIHBhc3N3ZD1wYXNzd2QpCisrCisgICAgIHRyeToKKy0gICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0cy5nZXQobG9jYXRpb24sIHZlcmlmeT1TU0xfVkVSSUZZKQorKyAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RzLmdldChsb2NhdGlvbiwgdmVyaWZ5PVNTTF9WRVJJRlksIGF1dGg9YXV0aCkKKyAgICAgZXhjZXB0IFNTTEVycm9yIGFzIGU6CisgICAgICAgICByYWlzZSBLaWNrc3RhcnRFcnJvcihfKCdFcnJvciBzZWN1cmVseSBhY2Nlc3NpbmcgVVJMICIlcyInKSAlIGxvY2F0aW9uICsgJzoge2V9Jy5mb3JtYXQoZT1zdHIoZSkpKQorICAgICBleGNlcHQgUmVxdWVzdEV4Y2VwdGlvbiBhcyBlOgorZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L3BhcnNlci5weSBiL3B5a2lja3N0YXJ0L3BhcnNlci5weQoraW5kZXggZDJiMGZiZS4uMjZiNWRlOSAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L3BhcnNlci5weQorKysrIGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5CitAQCAtNzczLDcgKzc3Myw3IEBAIGNsYXNzIEtpY2tzdGFydFBhcnNlcihvYmplY3QpOgorICAgICAgICAgaSA9IFB1dEJhY2tJdGVyYXRvcihzLnNwbGl0bGluZXMoVHJ1ZSkgKyBbIiJdKQorICAgICAgICAgc2VsZi5fc3RhdGVNYWNoaW5lIChpKQorIAorLSAgICBkZWYgcmVhZEtpY2tzdGFydChzZWxmLCBmLCByZXNldD1UcnVlKToKKysgICAgZGVmIHJlYWRLaWNrc3RhcnQoc2VsZiwgZiwgcmVzZXQ9VHJ1ZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6CisgICAgICAgICAiIiJQcm9jZXNzIGEga2lja3N0YXJ0IGZpbGUsIGdpdmVuIGJ5IHRoZSBmaWxlbmFtZSBmLiIiIgorICAgICAgICAgaWYgcmVzZXQ6CisgICAgICAgICAgICAgc2VsZi5fcmVzZXQoKQorQEAgLTc5NCw3ICs3OTQsNyBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIHNlbGYuY3VycmVudGRpcltzZWxmLl9pbmNsdWRlRGVwdGhdID0gY2QKKyAKKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICBzID0gbG9hZF90b19zdHIoZikKKysgICAgICAgICAgICBzID0gbG9hZF90b19zdHIoZiwgdXNlcj11c2VybmFtZSwgcGFzc3dkPXBhc3N3b3JkKQorICAgICAgICAgZXhjZXB0IEtpY2tzdGFydEVycm9yIGFzIGU6CisgICAgICAgICAgICAgcmFpc2UgS2lja3N0YXJ0RXJyb3IoZm9ybWF0RXJyb3JNc2coMCwgbXNnPV8oIlVuYWJsZSB0byBvcGVuIGlucHV0IGtpY2tzdGFydCBmaWxlOiAlcyIpICUgc3RyKGUpKSkKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAyLXB5a2lja3N0YXJ0LXBhcnNlci5weS1hZGQtbG9jay1mb3ItcmVhZEtpY2tzdGFydC1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDItcHlraWNrc3RhcnQtcGFyc2VyLnB5LWFkZC1sb2NrLWZvci1yZWFkS2lja3N0YXJ0LWFuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjIxMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAyLXB5a2lja3N0YXJ0LXBhcnNlci5weS1hZGQtbG9jay1mb3ItcmVhZEtpY2tzdGFydC1hbmQucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbSBlNmU3NDdiODgzMTE0YmZhZDUxYWQ5M2Y4MjNlNjVmNWE0ZDY0MzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxIEp1biAyMDE3IDE1OjEyOjI5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBweWtpY2tzdGFydC9wYXJzZXIucHk6IGFkZCBsb2NrIGZvciByZWFkS2lja3N0YXJ0IGFuZAorIHN1cHBvcnQgaHR0cHMgd2l0aG91dCBjZXJ0aWZpY2F0aW9uCisKKy0gQWRkIGxvY2sgZm9yIHJlYWRLaWNrc3RhcnQgdG8gZml4IHJhY2UgaXNzdWUKKworLSBTdXBwb3J0IHRvIGRvd25sb2FkIGtpY2tzdGFydCBmaWxlIHRocm91Z2ggaHR0cHMgd2l0aG91dCBjZXJ0aWZpY2F0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcHlraWNrc3RhcnQvbG9hZC5weSAgIHwgIDIgKy0KKyBweWtpY2tzdGFydC9wYXJzZXIucHkgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L2xvYWQucHkgYi9weWtpY2tzdGFydC9sb2FkLnB5CitpbmRleCAwZjU3NDFiLi40OGM4Mjc2IDEwMDY0NAorLS0tIGEvcHlraWNrc3RhcnQvbG9hZC5weQorKysrIGIvcHlraWNrc3RhcnQvbG9hZC5weQorQEAgLTMwLDcgKzMwLDcgQEAgZnJvbSByZXF1ZXN0cy5leGNlcHRpb25zIGltcG9ydCBTU0xFcnJvciwgUmVxdWVzdEV4Y2VwdGlvbgorIAorIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICMgUkZDIDM5ODYKKyAKKy1TU0xfVkVSSUZZID0gVHJ1ZQorK1NTTF9WRVJJRlkgPSBGYWxzZQorIAorIGRlZiBsb2FkX3RvX3N0cihsb2NhdGlvbiwgdXNlcj1Ob25lLCBwYXNzd2Q9Tm9uZSk6CisgICAgICcnJ0xvYWQgYSBkZXN0aW5hdGlvbiBVUkwgb3IgZmlsZSBpbnRvIGEgc3RyaW5nLgorZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L3BhcnNlci5weSBiL3B5a2lja3N0YXJ0L3BhcnNlci5weQoraW5kZXggMjZiNWRlOS4uMjY0YmEwNSAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L3BhcnNlci5weQorKysrIGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5CitAQCAtNTcsNiArNTcsMjYgQEAgU1RBVEVfQ09NTUFORFMgPSAiY29tbWFuZHMiCisgCisgdmVyID0gdmVyc2lvbi5ERVZFTAorIAorK2ltcG9ydCBsb2dnaW5nCisrbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoImFuYWNvbmRhIikKKysKKytpbXBvcnQgaW5zcGVjdAorK2ltcG9ydCB0aHJlYWRpbmcKKytfcHJpdmF0ZV9rc19sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKKysKKytjbGFzcyBLc0xvY2sob2JqZWN0KToKKysgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKysgICAgICAgIGxvZy5pbmZvKCIlcyAlcyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGluc3BlY3Quc3RhY2soKVswXVszXSkpCisrICAgICAgICBfcHJpdmF0ZV9rc19sb2NrLmFjcXVpcmUoKQorKyAgICAgICAgcmV0dXJuIF9wcml2YXRlX2tzX2xvY2sKKysKKysgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorKyAgICAgICAgbG9nLmluZm8oIiVzICVzIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaW5zcGVjdC5zdGFjaygpWzBdWzNdKSkKKysgICAgICAgIF9wcml2YXRlX2tzX2xvY2sucmVsZWFzZSgpCisrCisrCisrX2tzX2xvY2sgPSBLc0xvY2soKQorKworIGRlZiBfcHJlcHJvY2Vzc1N0YXRlTWFjaGluZSAobGluZUl0ZXIpOgorICAgICBsID0gTm9uZQorICAgICBsaW5lbm8gPSAwCitAQCAtNzc0LDYgKzc5NCwxMCBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIHNlbGYuX3N0YXRlTWFjaGluZSAoaSkKKyAKKyAgICAgZGVmIHJlYWRLaWNrc3RhcnQoc2VsZiwgZiwgcmVzZXQ9VHJ1ZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6CisrICAgICAgICB3aXRoIF9rc19sb2NrOgorKyAgICAgICAgICAgIHNlbGYuX3JlYWRLaWNrc3RhcnQoZiwgcmVzZXQ9cmVzZXQsIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1wYXNzd29yZCkKKysKKysgICAgZGVmIF9yZWFkS2lja3N0YXJ0KHNlbGYsIGYsIHJlc2V0PVRydWUsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUpOgorICAgICAgICAgIiIiUHJvY2VzcyBhIGtpY2tzdGFydCBmaWxlLCBnaXZlbiBieSB0aGUgZmlsZW5hbWUgZi4iIiIKKyAgICAgICAgIGlmIHJlc2V0OgorICAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDMtY29tbWVudC1vdXQtc2VjdGlvbnMtc2h1dGRvd24tYW5kLWVudmlyb25tZW50LWluLWdlbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmIyNWZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBiZTYwMTJhNWRkNDlhZTVlOGFjMDM1NjU0YWIxYzZmMzdmMGRjOGY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxIEp1biAyMDE3IDE1OjE1OjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBjb21tZW50IG91dCBzZWN0aW9ucyBzaHV0ZG93biBhbmQgZW52aXJvbm1lbnQgaW4KKyBnZW5lcmF0ZWQga2lja3N0YXJ0IGZpbGUKKworQm90aCBvZiB0aGVtIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCitmaXh1cCEgYWRkIGNvbW1lbnRzIG9mIHNodXRkb3duIGZvciB1c2VyCistLS0KKyBweWtpY2tzdGFydC9jb21tYW5kcy9yZWJvb3QucHkgfCAzICsrKworIHB5a2lja3N0YXJ0L3BhcnNlci5weSAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5IGIvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5CitpbmRleCA4ODc5OWJhLi4yZDBjZWE5IDEwMDY0NAorLS0tIGEvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5CisrKysgYi9weWtpY2tzdGFydC9jb21tYW5kcy9yZWJvb3QucHkKK0BAIC00MSw2ICs0MSw5IEBAIGNsYXNzIEZDM19SZWJvb3QoS2lja3N0YXJ0Q29tbWFuZCk6CisgICAgICAgICBlbGlmIHNlbGYuYWN0aW9uID09IEtTX1NIVVRET1dOOgorICAgICAgICAgICAgIHJldHZhbCArPSAiIyBTaHV0ZG93biBhZnRlciBpbnN0YWxsYXRpb25cbnNodXRkb3duIgorICAgICAgICAgICAgIHJldHZhbCArPSBzZWxmLl9nZXRBcmdzQXNTdHIoKSArICJcbiIKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgcmV0dmFsICs9ICIjIFNodXRkb3duIGFmdGVyIGluc3RhbGxhdGlvblxuI3NodXRkb3duIgorKyAgICAgICAgICAgIHJldHZhbCArPSBzZWxmLl9nZXRBcmdzQXNTdHIoKSArICJcbiIKKyAKKyAgICAgICAgIHJldHVybiByZXR2YWwKKyAKK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9wYXJzZXIucHkgYi9weWtpY2tzdGFydC9wYXJzZXIucHkKK2luZGV4IDI2NGJhMDUuLmIzZjMzZDcgMTAwNjQ0CistLS0gYS9weWtpY2tzdGFydC9wYXJzZXIucHkKKysrKyBiL3B5a2lja3N0YXJ0L3BhcnNlci5weQorQEAgLTM4Myw3ICszODMsNyBAQCBjbGFzcyBQYWNrYWdlcyhLaWNrc3RhcnRPYmplY3QpOgorIAorICAgICAgICAgaWYgbm90IHNlbGYuZGVmYXVsdDoKKyAgICAgICAgICAgICBpZiBzZWxmLmVudmlyb25tZW50OgorLSAgICAgICAgICAgICAgICBwa2dzICs9ICJAXiVzXG4iICUgc2VsZi5lbnZpcm9ubWVudAorKyAgICAgICAgICAgICAgICBwa2dzICs9ICIjQF4lc1xuIiAlIHNlbGYuZW52aXJvbm1lbnQKKyAKKyAgICAgICAgICAgICBncnBzID0gc2VsZi5ncm91cExpc3QKKyAgICAgICAgICAgICBncnBzLnNvcnQoKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDQtbG9hZC5weS1yZXRyeS10by1pbnZva2UtcmVxdWVzdC13aXRoLXRpbWVvdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDQtbG9hZC5weS1yZXRyeS10by1pbnZva2UtcmVxdWVzdC13aXRoLXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyNTRmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwNC1sb2FkLnB5LXJldHJ5LXRvLWludm9rZS1yZXF1ZXN0LXdpdGgtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIGMwZTYzZjBkM2MwOWJkYWJiMGFkMmM4OGI3Y2M3M2U3NjE4ZGQ4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE1IEp1biAyMDE3IDE3OjM1OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBsb2FkLnB5OiByZXRyeSB0byBpbnZva2UgcmVxdWVzdCB3aXRoIHRpbWVvdXQKKworV2hpbGUgbmV0d29ya2xlc3MsIHVzZSByZXF1ZXN0IHRvIGZldGNoIGtpY2tzdGFydCBmaWxlIGZyb20KK25ldHdvcmssIGl0IGZhaWxlZCBhbmQgd2FpdCAzMDBzIHRvIGJyZWFrLCB3ZSBzaG91bGQgcmV0cnkKK3RvIGludm9rZSByZXF1ZXN0IHdpdGggdGltZW91dCBleHBsaWNpdGx5LiBTbyBpZiBpdCB0aGUKK25ldHdvcmsgaXMgdXAsIHRoZSBmZXRjaCB3b3Jrcy4KKworVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcHlraWNrc3RhcnQvbG9hZC5weSB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9sb2FkLnB5IGIvcHlraWNrc3RhcnQvbG9hZC5weQoraW5kZXggNDhjODI3Ni4uNzRiMjY2YiAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L2xvYWQucHkKKysrKyBiL3B5a2lja3N0YXJ0L2xvYWQucHkKK0BAIC0yMSw2ICsyMSw3IEBAIGltcG9ydCByZXF1ZXN0cworIGZyb20gcmVxdWVzdHMuYXV0aCBpbXBvcnQgSFRUUERpZ2VzdEF1dGgKKyBmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhUVFBCYXNpY0F1dGgKKyAKKytpbXBvcnQgdGltZQorIGltcG9ydCBzaHV0aWwKKyBpbXBvcnQgc2l4CisgCitAQCAtMjgsNiArMjksOSBAQCBmcm9tIHB5a2lja3N0YXJ0LmVycm9ycyBpbXBvcnQgS2lja3N0YXJ0RXJyb3IsIEtpY2tzdGFydEF1dGhFcnJvcgorIGZyb20gcHlraWNrc3RhcnQuaTE4biBpbXBvcnQgXworIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KKyAKKytpbXBvcnQgbG9nZ2luZworK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJhbmFjb25kYSIpCisrCisgX2lzX3VybCA9IGxhbWJkYSBsb2NhdGlvbjogJzovLycgaW4gbG9jYXRpb24gIyBSRkMgMzk4NgorIAorIFNTTF9WRVJJRlkgPSBGYWxzZQorQEAgLTc0LDYgKzc4LDI5IEBAIGRlZiBsb2FkX3RvX2ZpbGUobG9jYXRpb24sIGRlc3RpbmF0aW9uKToKKyAgICAgICAgIF9jb3B5X2ZpbGUobG9jYXRpb24sIGRlc3RpbmF0aW9uKQorICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uCisgCisrZGVmIF9hY2Nlc3NfdXJsKGxvY2F0aW9uKToKKysgICAgc3RhdHVzID0gRmFsc2UKKysKKysgICAgIyBSZXRyeSA0NSB0aW1lcywgd2FpdCA0NXN+MTM1cworKyAgICBpID0gMAorKyAgICB3aGlsZSBpIDwgNDU6CisrCisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RzLmdldChsb2NhdGlvbiwgdmVyaWZ5PVNTTF9WRVJJRlksIHRpbWVvdXQ9MikKKysgICAgICAgIGV4Y2VwdCBSZXF1ZXN0RXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgbG9nLmluZm8oIlRyeSAnJXMnICVkIHRpbWVzLCAlcyIgJSAobG9jYXRpb24sIGksIHN0cihlKSkpCisrICAgICAgICAgICAgc3RhdHVzID0gRmFsc2UKKysgICAgICAgICAgICBpICs9IDEKKysgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisrICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgc3RhdHVzID0gVHJ1ZQorKyAgICAgICAgICAgIHJldHVybiBzdGF0dXMKKysKKysgICAgcmV0dXJuIHN0YXR1cworKworKworIGRlZiBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorIAorICAgICBhdXRoID0gTm9uZQorQEAgLTk2LDYgKzEyMyw5IEBAIGRlZiBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorIGRlZiBfbG9hZF91cmwobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorICAgICAnJydMb2FkIGEgbG9jYXRpb24gKFVSTCBvciBmaWxlbmFtZSkgYW5kIHJldHVybiBjb250ZW50cyBhcyBzdHJpbmcnJycKKyAKKysgICAgaWYgbm90IF9hY2Nlc3NfdXJsKGxvY2F0aW9uKToKKysgICAgICAgIHJhaXNlIEtpY2tzdGFydEVycm9yKF8oIkNvbm5lY3Rpb24gJXMgZmFpbGVkIiAlIGxvY2F0aW9uKSkKKysKKyAgICAgYXV0aCA9IF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj11c2VyLCBwYXNzd2Q9cGFzc3dkKQorIAorICAgICB0cnk6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwNS10d2Vhay1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNjE0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGExZjU5ODIyM2JkNGNiY2M4NzdlYjJhYmEzZjU1ODZjNzVjOWQxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjEgQXVnIDIwMTcgMTA6MDU6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdHdlYWsgc2hlYmFuZyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0b29scy9rc3ZhbGlkYXRvci5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2tzdmFsaWRhdG9yLnB5IGIvdG9vbHMva3N2YWxpZGF0b3IucHkKK2luZGV4IGQ2MDUxZDUuLmMzNjgyZTggMTAwNzU1CistLS0gYS90b29scy9rc3ZhbGlkYXRvci5weQorKysrIGIvdG9vbHMva3N2YWxpZGF0b3IucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9weXRob24zCisgIworICMgQ2hyaXMgTHVtZW5zIDxjbHVtZW5zQHJlZGhhdC5jb20+CisgIworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8yLjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9weXRob24zLXB5a2lja3N0YXJ0XzIuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlNjAzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8yLjM1LmJiCkBAIC0wLDAgKzEsMjQgQEAKK0RFU0NSSVBUSU9OID0gIkEgcHl0aG9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBraWNrc3RhcnQgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9weWtpY2tzdGFydCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworREVQRU5EUyA9ICJweXRob24zIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXJlcXVlc3RzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2l4IFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weWtpY2tzdGFydC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXB5a2lja3N0YXJ0LTIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY29tbWVudC1vdXQtc2VjdGlvbnMtc2h1dGRvd24tYW5kLWVudmlyb25tZW50LWluLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImIyNzg3YTgxODU0MGU2NzhjMmY5YzVkY2EwYzZiYmQ2NWI4YjU1ZTUiCisKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWY4Y2ExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWQuaW5jCkBAIC0wLDAgKzEsMjEgQEAKK0RFU0NSSVBUSU9OID0gInB5cGFydGVkIGlzIGEgc2V0IG9mIFB5dGhvbiBtb2R1bGVzIHRoYXQgcHJvdmlkZSBQeXRob24gcHJvZ3JhbW1lcnMgXAorYW4gaW50ZXJmYWNlIHRvIGxpYnBhcnRlZCwgdGhlIEdOVSBwYXJ0ZWQgbGlicmFyeSBmb3IgZGlzayBwYXJ0aXRpb25pbmcgYW5kIFwKK2ZpbGVzeXN0ZW0gbWFuaXB1bGF0aW9uLiIKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBsaWJwYXJ0ZWQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHlwYXJ0ZWQiCitMSUNFTlNFID0gIkdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIFwKKyAgICBmaWxlOi8vc3JjL19wZWRtb2R1bGUuYztzdGFydGxpbmU9MTA7ZW5kbGluZT0yMjttZDU9ZWJjYjI1ZGRlMWFjOWM0NmU5ODZkZWM3OWI0MDRlN2UgXAorIgorREVQRU5EUyArPSAicGFydGVkIgorCisjIHVwc3RyZWFtIG9ubHkgcHVibGlzaGVzIHJlbGVhc2VzIGluIGdpdGh1YiBhcmNoaXZlcyB3aGljaCBhcmUgZGlzY291cmFnZWQKK1NSQ1JFViA9ICI2OWM0YTQ3OGU0M2QzZWZmNmFlM2EwMTE2ZmEzOGRhMDY3NzZkNWY1IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5cGFydGVkLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoIFwKKyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJwYXJ0ZWQgKD49IDIuMykiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMC43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMC43LmJiCmluZGV4IDgzMzVkMDguLjhhMTVhODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkXzMuMTAuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjEwLjcuYmIKQEAgLTEsMjcgKzEsMTIgQEAKLURFU0NSSVBUSU9OID0gInB5cGFydGVkIGlzIGEgc2V0IG9mIFB5dGhvbiBtb2R1bGVzIHRoYXQgcHJvdmlkZSBQeXRob24gcHJvZ3JhbW1lcnMgXAotYW4gaW50ZXJmYWNlIHRvIGxpYnBhcnRlZCwgdGhlIEdOVSBwYXJ0ZWQgbGlicmFyeSBmb3IgZGlzayBwYXJ0aXRpb25pbmcgYW5kIFwKLWZpbGVzeXN0ZW0gbWFuaXB1bGF0aW9uLiIKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBsaWJwYXJ0ZWQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHlwYXJ0ZWQiCi1MSUNFTlNFID0gIkdQTC0yLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIFwKLSAgICBmaWxlOi8vc3JjL19wZWRtb2R1bGUuYztzdGFydGxpbmU9MTA7ZW5kbGluZT0yMjttZDU9ZWJjYjI1ZGRlMWFjOWM0NmU5ODZkZWM3OWI0MDRlN2UgXAotIgotREVQRU5EUyArPSAicGFydGVkIHB5dGhvbi1yZSIKK3JlcXVpcmUgcHl0aG9uLXB5cGFydGVkLmluYworCitERVBFTkRTICs9ICJweXRob24tcmUiCiAKIFBWID0gIjMuMTAuNytnaXQke1NSQ1BWfSIKIAotIyB1cHN0cmVhbSBvbmx5IHB1Ymxpc2hlcyByZWxlYXNlcyBpbiBnaXRodWIgYXJjaGl2ZXMgd2hpY2ggYXJlIGRpc2NvdXJhZ2VkCi1TUkNSRVYgPSAiNjljNGE0NzhlNDNkM2VmZjZhZTNhMDExNmZhMzhkYTA2Nzc2ZDVmNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weXBhcnRlZC5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdmVyc2lvbi1mbG9hdC1jaGVjay5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCiBpbmhlcml0IGRpc3R1dGlscwogCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXN0cmluZ29sZCBweXRob24tY29kZWNzIHB5dGhvbi1tYXRoIHBhcnRlZCAoPj0gMi4zKSIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tc3RyaW5nb2xkIHB5dGhvbi1jb2RlY3MgcHl0aG9uLW1hdGgiCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24zLXB5cGFydGVkLzAwMDEtZml4LXZlcnNpb24tZmxvYXQtY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmYjBiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK2NoZWNrX21vZF92ZXJzaW9uIGJyZWFrcyBpZiBtb2R1bGUgdmVyc2lvbiBpcyBvZiB4LnkueiBmb3JtCit1c2UgYSByZWdleCB0byBoZWxwIGNhc3QgeC55LnogdmVyc2lvbiB0byBhIGZsb2F0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ2l0L3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc2V0dXAucHkKKysrKyBnaXQvc2V0dXAucHkKK0BAIC0yNSw2ICsyNSw3IEBAIGltcG9ydCBnbG9iCisgaW1wb3J0IG9zCisgaW1wb3J0IHBsYXRmb3JtCisgaW1wb3J0IHN5cworK2ltcG9ydCByZQorIGZyb20gZGlzdHV0aWxzLmNjb21waWxlciBpbXBvcnQgbmV3X2NvbXBpbGVyCisgZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBDb21waWxlRXJyb3IKKyBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IExpbmtFcnJvcgorQEAgLTUxLDYgKzUyLDggQEAgZGVmIHBrZ2NvbmZpZygqcGFja2FnZXMsICoqa3dhcmdzKToKKyAKKyBkZWYgY2hlY2tfbW9kX3ZlcnNpb24obW9kdWxlLCB2ZXJzaW9uKToKKyAgICAgbW9kdmVyc2lvbiA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsicGtnLWNvbmZpZyIsICItLW1vZHZlcnNpb24iLCBtb2R1bGVdKQorKyAgICBtYXRjaCA9IHJlLnNlYXJjaChiJyhbMC05XStcLlswLTldKyknLCBtb2R2ZXJzaW9uKQorKyAgICBtb2R2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgaWYgbm90IGZsb2F0KG1vZHZlcnNpb24pID49IGZsb2F0KHZlcnNpb24pOgorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiKioqIE1pbmltdW0gcmVxdWlyZWQgJXMgdmVyc2lvbjogJXMsIGZvdW5kOiAlc1xuIiAlIChtb2R1bGUsIHZlcnNpb24sIG1vZHZlcnNpb24sKSkKKyAgICAgICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbjMtcHlwYXJ0ZWRfMy4xMC43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24zLXB5cGFydGVkXzMuMTAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjcyYzJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24zLXB5cGFydGVkXzMuMTAuNy5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIHB5dGhvbi1weXBhcnRlZC5pbmMKKworREVQRU5EUyArPSAicHl0aG9uMy1yZSIKKworUFYgPSAiMy4xMC43K2dpdCR7U1JDUFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbWF0aCIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5d2JlbV8wLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl3YmVtXzAuOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl3YmVtXzAuOC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5d2JlbV8wLjguMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9DT1BZSU5HLk1JVApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5NTBkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9DT1BZSU5HLk1JVAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgCi1vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCAKLWluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIAotZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgCi1GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIAotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgCi1PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIAotVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzdiZDEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KLXJldmlzaW9uOiBIRUFECi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1ydWJ5XVtweXJvXScgaW4gdGhlIHN1YmplY3QnCi0KLVdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzaW5nIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXJ1YnldW3B5cm9dW1BBVENIJwotCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NsYXNzZXMvcnVieS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvY2xhc3Nlcy9ydWJ5LmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhY2YyZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvY2xhc3Nlcy9ydWJ5LmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotQlBWID89ICIke1BWfSIKLQotREVQRU5EUyArPSAiIFwKLSAgICBydWJ5LW5hdGl2ZSBcCi0iCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBydWJ5IFwKLSIKLQotZGVmIGdldF9ydWJ5dmVyc2lvbihwKToKLSAgICBpbXBvcnQgcmUKLSAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZQotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgZm91bmRfdmVyc2lvbiA9ICJTT01FVEhJTkcgRkFJTEVEISIKLQotICAgIGNtZCA9ICIlcy9ydWJ5IiAlIHAKLQotICAgIGlmIG5vdCBpc2ZpbGUoY21kKToKLSAgICAgICByZXR1cm4gZm91bmRfdmVyc2lvbgotCi0gICAgdmVyc2lvbiA9IHN1YnByb2Nlc3MuUG9wZW4oW2NtZCwgIi0tdmVyc2lvbiJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgidXRmLTgiKQotICAgIAotICAgIHIgPSByZS5jb21waWxlKCJydWJ5IChbMC05XStcLlswLTldK1wuWzAtOV0rKSoiKQotICAgIG0gPSByLm1hdGNoKHZlcnNpb24pCi0gICAgaWYgbToKLSAgICAgICAgZm91bmRfdmVyc2lvbiA9IG0uZ3JvdXAoMSkKLQotICAgIHJldHVybiBmb3VuZF92ZXJzaW9uCi0KLWRlZiBnZXRfcnVieWdlbXNsb2NhdGlvbihwKToKLSAgICBpbXBvcnQgcmUKLSAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZQotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgZm91bmRfbG9jID0gIlNPTUVUSElORyBGQUlMRUQhIgotCi0gICAgY21kID0gIiVzL2dlbSIgJSBwCi0KLSAgICBpZiBub3QgaXNmaWxlKGNtZCk6Ci0gICAgICAgcmV0dXJuIGZvdW5kX2xvYwotCi0gICAgbG9jID0gc3VicHJvY2Vzcy5Qb3BlbihbY21kLCAiZW52Il0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJ1dGYtOCIpCi0KLSAgICByID0gcmUuY29tcGlsZSgiLipcLSAoL3Vzci4qL3J1YnkvZ2Vtcy8uKikiKQotICAgIGZvciBsaW5lIGluIGxvYy5zcGxpdCgnXG4nKToKLSAgICAgICAgbSA9IHIubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGZvdW5kX2xvYyA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICByZXR1cm4gZm91bmRfbG9jCi0KLWRlZiBnZXRfcnVieWdlbXN2ZXJzaW9uKHApOgotICAgIGltcG9ydCByZQotICAgIGZyb20gb3MucGF0aCBpbXBvcnQgaXNmaWxlCi0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICBmb3VuZF92ZXJzaW9uID0gIlNPTUVUSElORyBGQUlMRUQhIgotCi0gICAgY21kID0gIiVzL2dlbSIgJSBwCi0KLSAgICBpZiBub3QgaXNmaWxlKGNtZCk6Ci0gICAgICAgcmV0dXJuIGZvdW5kX3ZlcnNpb24KLQotICAgIHZlcnNpb24gPSBzdWJwcm9jZXNzLlBvcGVuKFtjbWQsICJlbnYiLCAiZ2VtZGlyIl0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJ1dGYtOCIpCi0gICAgCi0gICAgciA9IHJlLmNvbXBpbGUoIi4qKFswLTldK1wuWzAtOV0rXC5bMC05XSspJCIpCi0gICAgbSA9IHIubWF0Y2godmVyc2lvbikKLSAgICBpZiBtOgotICAgICAgICBmb3VuZF92ZXJzaW9uID0gbS5ncm91cCgxKQotCi0gICAgcmV0dXJuIGZvdW5kX3ZlcnNpb24KLQotUlVCWV9WRVJTSU9OID89ICIke0BnZXRfcnVieXZlcnNpb24oIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSIpfSIKLVJVQllfR0VNX0RJUkVDVE9SWSA/PSAiJHtAZ2V0X3J1YnlnZW1zbG9jYXRpb24oIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSIpfSIKLVJVQllfR0VNX1ZFUlNJT04gPz0gIiR7QGdldF9ydWJ5Z2Vtc3ZlcnNpb24oIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSIpfSIKLQotZXhwb3J0IEdFTV9IT01FID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvbGliL3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059IgotCi1SVUJZX0JVSUxEX0dFTVMgPz0gIiR7QlBOfS5nZW1zcGVjIgotUlVCWV9JTlNUQUxMX0dFTVMgPz0gIiR7QlBOfS0ke0JQVn0uZ2VtIgotCi1SVUJZX0NPTVBJTEVfRkxBR1MgPz0gJ0xBTkc9ImVuX1VTLlVURi04IiBMQ19BTEw9ImVuX1VTLlVURi04IicKLQotcnVieV9kb19jb21waWxlKCkgewotCWZvciBnZW0gaW4gJHtSVUJZX0JVSUxEX0dFTVN9OyBkbwotCQkke1JVQllfQ09NUElMRV9GTEFHU30gZ2VtIGJ1aWxkICRnZW0KLQlkb25lCi19Ci0KLQotcnVieV9kb19pbnN0YWxsKCkgewotCWZvciBnZW0gaW4gJHtSVUJZX0lOU1RBTExfR0VNU307IGRvCi0JCWdlbSBpbnN0YWxsIC0taWdub3JlLWRlcGVuZGVuY2llcyAtLWxvY2FsIC0tZW52LXNoZWJhbmcgLS1pbnN0YWxsLWRpciAke0R9LyR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS8gJGdlbQotCWRvbmUKLQotCSMgY3JlYXRlIHN5bWxpbmsgZnJvbSB0aGUgZ2VtcyBiaW4gZGlyZWN0b3J5IHRvIC91c3IvYmluCi0JZm9yIGkgaW4gJHtEfS8ke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vYmluLyo7IGRvCi0JCWlmIFsgLWUgIiRpIiBdOyB0aGVuCi0JCQlpZiBbICEgLWQgJHtEfS8ke2JpbmRpcn0gXTsgdGhlbiBta2RpciAtcCAke0R9LyR7YmluZGlyfTsgZmkKLQkJCWI9YGJhc2VuYW1lICRpYAotCQkJbG4gLXNmICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9iaW4vJGIgJHtEfS8ke2JpbmRpcn0vJGIKLQkJZmkKLQlkb25lCi19Ci0KLUVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsCi0KLVBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfSAke1BOfS1kb2MgJHtQTn0tZGV2IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9nZW1zLyovKi8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZ2Vtcy8qLyovKi8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZ2Vtcy8qLyovKi8qLy5kZWJ1ZyBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9nZW1zLyovKi8qLyovKi8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZXh0ZW5zaW9ucy8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2V4dGVuc2lvbnMvKi8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2V4dGVuc2lvbnMvKi8qLyovKi8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZXh0ZW5zaW9ucy8qLyovKi8qLyovLmRlYnVnIFwKLSAgICAgICAgIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2dlbXMgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vY2FjaGUgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vYmluIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L3NwZWNpZmljYXRpb25zIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2J1aWxkX2luZm8gXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZXh0ZW5zaW9ucyBcCi0gICAgICAgICIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZG9jIFwKLSAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvY29uZi9sYXllci5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTI2YTVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NvbmYvbGF5ZXIuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRIIAotQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCi0KLSMgV2UgaGF2ZSBhIHJlY2lwZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gInJ1YnktbGF5ZXIiCi1CQkZJTEVfUEFUVEVSTl9ydWJ5LWxheWVyIDo9ICJeJHtMQVlFUkRJUn0vIgotQkJGSUxFX1BSSU9SSVRZX3J1YnktbGF5ZXIgPSAiNyIKLQotIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCi0jIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCi1MQVlFUlZFUlNJT05fcnVieS1sYXllciA9ICIxIgotCi1MQVlFUkRFUEVORFNfcnVieS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L3JlY2lwZXMtZGV2dG9vbHMvcnVieS9idW5kbGVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L3JlY2lwZXMtZGV2dG9vbHMvcnVieS9idW5kbGVyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4OTUyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvYnVuZGxlcl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk1ha2VzIHN1cmUgUnVieSBhcHBsaWNhdGlvbnMgcnVuIHRoZSBzYW1lIGNvZGUgb24gZXZlcnkgbWFjaGluZS4iCi1ERVNDUklQVElPTiA9ICJCdW5kbGVyIG1ha2VzIHN1cmUgUnVieSBhcHBsaWNhdGlvbnMgcnVuIHRoZSBzYW1lIGNvZGUgXAotb24gZXZlcnkgbWFjaGluZS4gSXQgZG9lcyB0aGlzIGJ5IG1hbmFnaW5nIHRoZSBnZW1zIHRoYXQgdGhlIFwKLWFwcGxpY2F0aW9uIGRlcGVuZHMgb24uIEdpdmVuIGEgbGlzdCBvZiBnZW1zLCBpdCBjYW4gYXV0b21hdGljYWxseSBcCi1kb3dubG9hZCBhbmQgaW5zdGFsbCB0aG9zZSBnZW1zLCBhcyB3ZWxsIGFzIGFueSBvdGhlciBnZW1zIG5lZWRlZCBieSBcCi10aGUgZ2VtcyB0aGF0IGFyZSBsaXN0ZWQuIEJlZm9yZSBpbnN0YWxsaW5nIGdlbXMsIGl0IGNoZWNrcyB0aGUgXAotdmVyc2lvbnMgb2YgZXZlcnkgZ2VtIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGNvbXBhdGlibGUsIGFuZCBjYW4gXAotYWxsIGJlIGxvYWRlZCBhdCB0aGUgc2FtZSB0aW1lLiBBZnRlciB0aGUgZ2VtcyBoYXZlIGJlZW4gaW5zdGFsbGVkLCBcCi1CdW5kbGVyIGNhbiBoZWxwIHlvdSB1cGRhdGUgc29tZSBvciBhbGwgb2YgdGhlbSB3aGVuIG5ldyB2ZXJzaW9ucyBcCi1iZWNvbWUgYXZhaWxhYmxlLiBGaW5hbGx5LCBpdCByZWNvcmRzIHRoZSBleGFjdCB2ZXJzaW9ucyB0aGF0IGhhdmUgXAotYmVlbiBpbnN0YWxsZWQsIHNvIHRoYXQgb3RoZXJzIGNhbiBpbnN0YWxsIHRoZSBleGFjdCBzYW1lIGdlbXMuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTE5NmJiOTYzZTYwMTYwOTgxN2Q3ZTlhYzlhNjRhODY3IgotCi1TUkNSRVYgPSAiMDZkYzg0NzJiOTE0MmZkNmFhZWZmZjc4MGQ2ZDI1MmMyMGRjMmEwNCIKLQotQlJBTkNIID0gIjEtOS1zdGFibGUiCi1QViA9ICIxLjkuNCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vYnVuZGxlci9idW5kbGVyLmdpdDticmFuY2g9JHtCUkFOQ0h9IFwKLSAgICAiCi0KLWluaGVyaXQgcnVieQotCi1SREVQRU5EU18ke1BOfSA9ICJnaXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1QTkJMQUNLTElTVFtidW5kbGVyXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY0MC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNGZjM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhpcyBsYXllciBkZXBlbmRzIG9uOgotCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHB5cm8KLXJldmlzaW9uOiBIRUFECi0KLUFuZCB3ZSdyZSB3b3JraW5nIHRvIGJyZWFrIHRoZSBkZXBlbmRlbmN5IG9uIHRoaXMgb25lOgotCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KLXJldmlzaW9uOiBIRUFECi0KLVRvIG1ha2UgQkJNQVNLJ2luZyBwZXIgbGF5ZXIgcG9zc2libGUgdGhlIGZvbGxvd2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlIGlzCi11c2VkOgotCi0kW0xBWUVSRElSfS88bGF5ZXIgbmFtZT4vcmVjaXBlcy08Z3JvdXAtbmFtZT4vPHJlY2lwZS1uYW1lPi88cmVjaXBlLW5hbWU+LmJiYXBwZW5kCi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1vZV1bbWV0YS1zeXN0ZW1kXVtweXJvXScgaW4gdGhlIHN1YmplY3QnCi0KLVdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1vZV1bbWV0YS1zeXN0ZW1kXVtweXJvXVtQQVRDSCcKLQotWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgotCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2M2Y0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9jb25mL2xheWVyLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIEl0IHJlYWxseSBkZXBlbmRzIG9uIG9yZGVyIG9mIHRoZSBsYXllcnMgYXBwZWFyaW5nIGluIEJCTEFZRVJTCi0jIHZhcmlhYmxlIGluIHRvcGxldmVsIGJibGF5ZXJzLmNvbmYgZmlsZSwgd2hlcmUgYml0YmFrZSB3aWxsIHNlYXJjaAotIyBmb3IgLmluYyBmaWxlcyBhbmQgb3RoZXJzIHdoZXJlIGJpdGJha2UgdXNlcyBCQlBBVEggc2luY2UgaXQgd2lsbAotIyBzZWFyY2ggdGhlIGRpcmVjdG9yaWVzIGZyb20gZmlyc3QgdG8gbGFzdCBhcyBzcGVjaWZpZWQgaW4gQkJQQVRICi0jIFRoZXJlZm9yZSBpZiB5b3Ugd2FudCBhIGdpdmVuIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgaGlnaCBwcmlvcml0eQotIyBmb3IgdGhlIC5pbmMgYW5kIC5jb25mIGV0Yy4gdGhlbiBjb25zaWRlciBpdCBhZGRpbmcgYXQgdGhlIGJlZ2lubmluZwotIyBvZiBCQlBBVEguIEZvciBiYmxheWVycyBiaXRiYWtlIHdpbGwgdXNlIEJCRklMRVNfUFJJT1JJVFkgdG8gcmVzb2x2ZQotIyB0aGUgcmVjaXBlIGNvbnRlbnRpb24gc28gdGhlIG9yZGVyIG9mIGRpcmVjdG9yaWVzIGluIEJCRklMRVMgZG9lcyAKLSMgbm90IG1hdHRlci4KLQotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIlwKLSAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCi0gICR7TEFZRVJESVJ9L29lLWNvcmUvcmVjaXBlcy0qLyovKi5iYmFwcGVuZCBcCi0iCi0KLUJCRklMRV9DT0xMRUNUSU9OUyArPSAic3lzdGVtZC1sYXllciIKLUJCRklMRV9QQVRURVJOX3N5c3RlbWQtbGF5ZXIgOj0gIl4ke0xBWUVSRElSfS8iCi0KLSMgRGVmaW5lIHRoZSBwcmlvcml0eSBmb3IgcmVjaXBlcyAoLmJiIGZpbGVzKSBmcm9tIHRoaXMgbGF5ZXIsCi0jIGNob29zaW5nIGNhcmVmdWxseSBob3cgdGhpcyBsYXllciBpbnRlcmFjdHMgd2l0aCBhbGwgb2YgdGhlCi0jIG90aGVyIGxheWVycy4KLQotQkJGSUxFX1BSSU9SSVRZX3N5c3RlbWQtbGF5ZXIgPSAiNyIKLQotU0lHR0VOX0VYQ0xVREVSRUNJUEVTX0FCSVNBRkUgKz0gIiBcCi0gIHN5c3RlbWQtc2VyaWFsZ2V0dHkgXAotIgotTEFZRVJERVBFTkRTX3N5c3RlbWQtbGF5ZXIgPSAiY29yZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1ic3Ava2V5bWFwcy9rZXltYXBzXzEuMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1ic3Ava2V5bWFwcy9rZXltYXBzXzEuMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxYjg3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtYnNwL2tleW1hcHMva2V5bWFwc18xLjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxYjg3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA2YjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kaGNsaWVudC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk2MjBjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kaGNsaWVudC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1EeW5hbWljIEhvc3QgQ29uZmlndXJhdGlvbiBQcm90b2NvbCAoREhDUCkKLUFmdGVyPXN5c2xvZy50YXJnZXQgbmV0d29yay50YXJnZXQKLQotW1NlcnZpY2VdCi1UeXBlPWZvcmtpbmcKLVBJREZpbGU9L3Zhci9ydW4vZGhjbGllbnQucGlkCi1FbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC9kaGNwLWNsaWVudAotRXhlY1N0YXJ0PS9zYmluL2RoY2xpZW50IC1jZiAvZXRjL2RoY3AvZGhjbGllbnQuY29uZiAtcSAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC5sZWFzZXMgJElOVEVSRkFDRVMKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3ZDkzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotIyBsb29rIGZvciBmaWxlcyBpbiB0aGUgbGF5ZXIgZmlyc3QKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1lTVEVNRF9QQUNLQUdFUyArPSAiZGhjcC1jbGllbnQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gImRoY2xpZW50LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWNsaWVudCA9ICJkaXNhYmxlIgotCi1GSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjbGllbnQuc2VydmljZSIKLVJQUk9WSURFU19kaGNwLXNlcnZlciArPSAiZGhjcC1zZXJ2ZXItc3lzdGVtZCIKLVJSRVBMQUNFU19kaGNwLXNlcnZlciArPSAiZGhjcC1zZXJ2ZXItc3lzdGVtZCIKLVJDT05GTElDVFNfZGhjcC1zZXJ2ZXIgKz0gImRoY3Atc2VydmVyLXN5c3RlbWQiCi1SUFJPVklERVNfZGhjcC1yZWxheSArPSAiZGhjcC1yZWxheS1zeXN0ZW1kIgotUlJFUExBQ0VTX2RoY3AtcmVsYXkgKz0gImRoY3AtcmVsYXktc3lzdGVtZCIKLVJDT05GTElDVFNfZGhjcC1yZWxheSArPSAiZGhjcC1yZWxheS1zeXN0ZW1kIgotUlBST1ZJREVTXyR7UE59LWNsaWVudCArPSAiZGhjcC1jbGllbnQtc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfS1jbGllbnQgKz0gImRoY3AtY2xpZW50LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59LWNsaWVudCArPSAiZGhjcC1jbGllbnQtc3lzdGVtZCIKLQotU1JDX1VSSSArPSAiZmlsZTovL2RoY2xpZW50LnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2RoY2xpZW50LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2EzMTI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZGJjMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59LXNzaGQgKz0gIiR7UE59LXNzaGQtc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfS1zc2hkICs9ICIke1BOfS1zc2hkLXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgKz0gIiR7UE59LXNzaGQtc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNlNmU3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnRfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnRfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAwNmIzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50XyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDJkNDUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0tc3lzbG9nICs9ICIke1BOfS1zeXNsb2ctc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfS1zeXNsb2cgKz0gIiR7UE59LXN5c2xvZy1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfS1zeXNsb2cgKz0gIiR7UE59LXN5c2xvZy1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAwNmIzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODFiODc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YWE1NDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU191ZGV2ICs9ICJ1ZGV2LXN5c3RlbWQiCi1SUkVQTEFDRVNfdWRldiArPSAidWRldi1zeXN0ZW1kIgotUkNPTkZMSUNUU191ZGV2ICs9ICJ1ZGV2LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA2YjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxYjg3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMDZiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMDZiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMDZiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lLXVuaXRzXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNjZhYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lLXVuaXRzXzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiTWFjaGluZSBzcGVjaWZpYyBzeXN0ZW1kIHVuaXRzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1QUiA9ICJyMTgiCi0KLWluaGVyaXQgc3lzdGVtZAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiIKLU5BVElWRV9TWVNURU1EX1NVUFBPUlQgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvUkVBRE1FCmluZGV4IGZhYjcyMTcuLmYyOTI4YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvUkVBRE1FCkBAIC0xMywxNCArMTMsMTQgQEAKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAogc3ViZGlyZWN0b3J5OiBtZXRhCi1icmFuY2g6IHB5cm8gCiticmFuY2g6IHJvY2tvIAogcmV2aXNpb246IEhFQUQKIAogRm9yIHNvbWUgcmVjaXBlcywgdGhlIG1ldGEtb2UgbGF5ZXIgaXMgcmVxdWlyZWQ6CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKIHN1YmRpcmVjdG9yeTogbWV0YS1vZQotYnJhbmNoOiBweXJvIAorYnJhbmNoOiByb2NrbyAKIHJldmlzaW9uOiBIRUFECiAKIApAQCAtNTIsMTMgKzUyLDkgQEAKIC0tLS0tLS0tLS0tCiAKIFNlbmQgcGF0Y2hlcyAvIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKLXdpdGggJ1ttZXRhLXdlYnNlcnZlcl1bcHlyb10nIGluIHRoZSBzdWJqZWN0Lgord2l0aCAnW21ldGEtd2Vic2VydmVyXScgaW4gdGhlIHN1YmplY3QuCiAKLVdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvPW9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS13ZWJzZXJ2ZXJdW3B5cm9dW1BBVENIJwotCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KK0xheWVyIG1haW50YWluZXI6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CiAKIAogTGljZW5zZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgppbmRleCBiYjUwOGE4Li44NGZkZDgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTUsNyArMTUsNyBAQAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX3dlYnNlcnZlciA9ICIxIgogCi1MQVlFUkRFUEVORFNfd2Vic2VydmVyID0gImNvcmUiCitMQVlFUkRFUEVORFNfd2Vic2VydmVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLW5hdGl2ZV8yLjQuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLW5hdGl2ZV8yLjQuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NzE3ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEFwYWNoZSBIVFRQIFNlcnZlciBpcyBhIHBvd2VyZnVsLCBlZmZpY2llbnQsIGFuZCBcCi1leHRlbnNpYmxlIHdlYiBzZXJ2ZXIuIgotU1VNTUFSWSA9ICJBcGFjaGUgSFRUUCBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iCi1ERVBFTkRTID0gImV4cGF0LW5hdGl2ZSBwY3JlLW5hdGl2ZSBhcHItbmF0aXZlIGFwci11dGlsLW5hdGl2ZSIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbmF0aXZlCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiZmY1YTJiNTQyZmE1ODg1NDQ1NWJmMWEwYjk0YjgzIgotU1JDX1VSSVttZDVzdW1dID0gIjI4MjZmNDk2MTkxMTJhZDU4MTNjMGJlNWFmY2M3ZGRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4N2VjMmRmMWM5ZmVlM2U2YmZkZTNjOGI4NTVhM2RkYjdjYTFhYjIwY2E4NzdiZDBlMmI2YmYzZjA1YzgwYjIiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2FwYWNoZTIgXAotICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfQotICAgIGNwIHNlcnZlci9nZW5fdGVzdF9jaGFyICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSBzdXBwb3J0L2FweHMgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDc1NSBodHRwZCAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwICR7U30vYnVpbGQvKi5tayAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCi0gICAgY3AgYnVpbGQvKi5tayAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCi0gICAgY3AgJHtTfS9idWlsZC9pbnN0ZHNvLnNoICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgotICAgIGNwICR7U30vaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCBpbmNsdWRlLyogJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgotICAgIGNwICR7U30vb3MvdW5peC9vcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L29zL3VuaXgvdW5peGQuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0KLSAgICBjcCBzdXBwb3J0L2VudnZhcnMtc3RkICR7RH0ke2JpbmRpcn0vZW52dmFycwotICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L2VudnZhcnMKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlODkzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLW5hdGl2ZV8yLjQuMjcuYmIKQEAgLTAsMCArMSw0NSBAQAorREVTQ1JJUFRJT04gPSAiVGhlIEFwYWNoZSBIVFRQIFNlcnZlciBpcyBhIHBvd2VyZnVsLCBlZmZpY2llbnQsIGFuZCBcCitleHRlbnNpYmxlIHdlYiBzZXJ2ZXIuIgorU1VNTUFSWSA9ICJBcGFjaGUgSFRUUCBTZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iCitERVBFTkRTID0gImV4cGF0LW5hdGl2ZSBwY3JlLW5hdGl2ZSBhcHItbmF0aXZlIGFwci11dGlsLW5hdGl2ZSIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbmF0aXZlCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiZmY1YTJiNTQyZmE1ODg1NDQ1NWJmMWEwYjk0YjgzIgorU1JDX1VSSVttZDVzdW1dID0gIjk3YjZiYmZhODNjODY2ZGJlMjBlZjMxN2UzYWZkMTA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxZmNjMTI4MjM4YTY5MDUxNWJkODE3NGQ1MzMwYTUzMDkxNjFlZjMxNGEzMjZhZTQ1YzdjMTVlZDEzOWMxM2EiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2FwYWNoZTIgXAorICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfQorICAgIGNwIHNlcnZlci9nZW5fdGVzdF9jaGFyICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSBzdXBwb3J0L2FweHMgJHtEfSR7YmluZGlyfS8KKyAgICBpbnN0YWxsIC1tIDc1NSBodHRwZCAke0R9JHtiaW5kaXJ9LworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwICR7U30vYnVpbGQvKi5tayAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCisgICAgY3AgYnVpbGQvKi5tayAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCisgICAgY3AgJHtTfS9idWlsZC9pbnN0ZHNvLnNoICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgorICAgIGNwICR7U30vaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCBpbmNsdWRlLyogJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgorICAgIGNwICR7U30vb3MvdW5peC9vcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L29zL3VuaXgvdW5peGQuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisKKyAgICBjcCBzdXBwb3J0L2VudnZhcnMtc3RkICR7RH0ke2JpbmRpcn0vZW52dmFycworICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L2VudnZhcnMKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhN2QzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgQXBhY2hlIEhUVFAgU2VydmVyIGlzIGEgcG93ZXJmdWwsIGVmZmljaWVudCwgYW5kIFwKLWV4dGVuc2libGUgd2ViIHNlcnZlci4iCi1TVU1NQVJZID0gIkFwYWNoZSBIVFRQIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIKLURFUEVORFMgPSAibGlidG9vbC1uYXRpdmUgYXBhY2hlMi1uYXRpdmUgb3BlbnNzbCBleHBhdCBwY3JlIGFwciBhcHItdXRpbCIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXJ2ZXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtY29yZWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC40LWV4cG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMS1zZWxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlLWx5bngtdG8tY3VybC1pbi1hcGFjaGVjdGwtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4zLWZpeC1yYWNlLWlzc3VlLW9mLWRpci1pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi5zZXJ2aWNlIFwKLSAgICAgICAgICAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiZmY1YTJiNTQyZmE1ODg1NDQ1NWJmMWEwYjk0YjgzIgotU1JDX1VSSVttZDVzdW1dID0gIjI4MjZmNDk2MTkxMTJhZDU4MTNjMGJlNWFmY2M3ZGRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4N2VjMmRmMWM5ZmVlM2U2YmZkZTNjOGI4NTVhM2RkYjdjYTFhYjIwY2E4NzdiZDBlMmI2YmYzZjA1YzgwYjIiCi0KLVMgPSAiJHtXT1JLRElSfS9odHRwZC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwYWNoZTIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImFweHMgY29uZmlnX3ZhcnMubWsgY29uZmlnLm5pY2UiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1EUEFUSF9NQVg9NDA5NiIKLUNGTEFHU19wcmVwZW5kID0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCAiCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3NsIFwKLSAgICAtLXdpdGgtc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAtLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwKLSAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIFwKLSAgICAtLWVuYWJsZS1pbmZvIFwKLSAgICAtLWVuYWJsZS1yZXdyaXRlIFwKLSAgICAtLXdpdGgtZGJtPXNkYm0gXAotICAgIC0td2l0aC1iZXJrZWxleS1kYj1ubyBcCi0gICAgLS1sb2NhbHN0YXRlZGlyPS92YXIvJHtCUE59IFwKLSAgICAtLXdpdGgtZ2RibT1ubyBcCi0gICAgLS13aXRoLW5kYm09bm8gXAotICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAotICAgIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0vJHtCUE59L21vZHVsZXMgXAotICAgIGFwX2N2X3ZvaWRfcHRyX2x0X2xvbmc9bm8gXAotICAgIC0tZW5hYmxlLW1wbXMtc2hhcmVkIFwKLSAgICBhY19jdl9oYXZlX3RocmVhZHNhZmVfcG9sbHNldD1ubyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW29wZW5sZGFwXSA9ICItLWVuYWJsZS1sZGFwIC0tZW5hYmxlLWF1dGhuei1sZGFwLC0tZGlzYWJsZS1sZGFwIC0tZGlzYWJsZS1hdXRobnotbGRhcCxvcGVubGRhcCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgY2F0ICR7V09SS0RJUn0vaW5pdCB8IFwKLSAgICAgICAgc2VkIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4vLCR7YmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9saWIsJHtsaWJkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyLywke3ByZWZpeH0vLGcnID4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLSAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLSAgICAjIHJlbW92ZSB0aGUgZ29vZnkgb3JpZ2luYWwgZmlsZXMuLi4KLSAgICBybSAtcmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9vcmlnaW5hbAotICAgICMgRXhwYXQgc2hvdWxkIGJlIGZvdW5kIGluIHRoZSBzdGFnaW5nIGFyZWEgdmlhIERFUEVORFMuLi4KLSAgICBybSAtZiAke0R9LyR7bGliZGlyfS9saWJleHBhdC4qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQKLQotICAgICMgRW5zdXJlIGNvbmZpZ3VyYXRpb24gZmlsZSBwdWxscyBpbiBjb25mLmQgYW5kIG1vZHVsZXMuZAotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kLyouY29uZiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5sb2FkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmNvbmZcblxuIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICAjIG1hdGNoIHdpdGggdGhhdCBpcyBpbiBpbml0IHNjcmlwdAotICAgIHByaW50ZiAiXG5QaWRGaWxlIC9ydW4vaHR0cGQucGlkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICAjIFNldCAnU2VydmVyTmFtZScgdG8gZml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcmVzdGFydCBhcGFjaGUgc2VydmljZQotICAgIHNlZCAtaSAncy9eI1NlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tL1NlcnZlck5hbWUgbG9jYWxob3N0LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTItdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotCi0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCi0gICAgICAgICAgIC1lICdzLEFQVV9JTkNMVURFRElSID0gLiosQVBVX0lOQ0xVREVESVIgPSAsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfQ09ORklHID0gLiosQVBVX0NPTkZJRyA9ICxnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZ192YXJzLm1rCi0KLSAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotICAgICAgICAgICAtZSAncywiLiovY29uZmlndXJlIiwiY29uZmlndXJlIixnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZy5uaWNlCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vYXB4cyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtzYmluZGlyfS9hcGFjaGVjdGwgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KLSAgICBzZWQgLWkgJ3MhbXkgJGluc3RhbGxidWlsZGRpciA9IC4qIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfS8ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCi0gICAgc2VkIC1pICdzIW15ICRsaWJ0b29sID0gLiohbXkgJGxpYnRvb2wgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCi0KLSAgICBzZWQgLWkgJ3MhXkFQUl9DT05GSUcgPSAuKiFBUFJfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkFQVV9DT05GSUcgPSAuKiFBUFVfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXmluY2x1ZGVkaXIgPSAuKiFpbmNsdWRlZGlyID0gJHtTVEFHSU5HX0lOQ0RJUn0vYXBhY2hlMiEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5DRkxBR1MgPSAtSVteIF0qIUNGTEFHUyA9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5FWFRSQV9MREZMQUdTID0gLiohRVhUUkFfTERGTEFHUyA9IC1MJHtTVEFHSU5HX0xJQkRJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeRVhUUkFfSU5DTFVERVMgPSAuKiFFWFRSQV9JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4gLUkke1NUQUdJTkdfSU5DRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIS0tc3lzcm9vdD1bXiBdKiEtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi19Ci0KLSMKLSMgaW1wbGljYXRpb25zIC0gdXNlZCBieSB1cGRhdGUtcmMuZCBzY3JpcHRzCi0jCi1JTklUU0NSSVBUX05BTUUgPSAiYXBhY2hlMiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDIwIgotTEVBRF9TT05BTUUgPSAibGliYXByLTEuc28uMCIKLQotUEFDS0FHRVMgPSAiJHtQTn0tc2NyaXB0cyAke1BOfS1kb2MgJHtQTn0tZGV2ICR7UE59LWRiZyAke1BOfSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21hZ2ljIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9taW1lLnR5cGVzIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0gIgotCi0jIHdlIG92ZXJyaWRlIGhlcmUgcmF0aGVyIHRoYW4gYXBwZW5kIHNvIHRoYXQgLnNvIGxpbmtzIGFyZQotIyBpbmNsdWRlZCBpbiB0aGUgcnVudGltZSBwYWNrYWdlIHJhdGhlciB0aGFuIGhlcmUgKC1kZXYpCi0jIGFuZCB0byBnZXQgYnVpbGQsIGljb25zLCBlcnJvciBpbnRvIHRoZSAtZGV2IHBhY2thZ2UKLUZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vaWNvbnMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2Vycm9yIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXByLWNvbmZpZyAke2JpbmRpcn0vYXB1LWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2FwciouZXhwIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyoubGEgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmEgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHhzIFwKLSAgICAgICAgICAgICAgICAiCi0KLQotIyBtYW51YWwgdG8gbWFudWFsCi1GSUxFU18ke1BOfS1kb2MgKz0gIiAke2RhdGFkaXJ9LyR7QlBOfS9tYW51YWwiCi0KLUZJTEVTXyR7UE59LXNjcmlwdHMgKz0gIiR7YmluZGlyfS9kYm1tYW5hZ2UiCi0KLSMKLSMgb3ZlcnJpZGUgdGhpcyB0b28gLSBoZXJlIGlzIHRoZSBkZWZhdWx0LCBsZXNzIGRhdGFkaXIKLSMKLUZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0gJHtzYmluZGlyfSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtzaGFyZWRzdGF0ZWRpcn0gJHtsb2NhbHN0YXRlZGlyfSAvYmluIC9zYmluIC9saWIvKi5zbyogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke0JQTn0iCi0KLSMgd2Ugd2FudCBodGRvY3MgYW5kIGNnaS1iaW4gdG8gZ28gd2l0aCB0aGUgYmluYXJ5Ci1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0vaHRkb2NzICR7ZGF0YWRpcn0vJHtCUE59L2NnaS1iaW4iCi0KLSNtYWtlIHN1cmUgdGhlIGxvbmUgLnNvIGxpbmtzIGFsc28gZ2V0IHdyYXBwZWQgaW4gdGhlIGJhc2UgcGFja2FnZQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS9wa2djb25maWcvKiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L21vZHVsZXMvLmRlYnVnIgotCi1SREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJwZXJsICR7UE59IgotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ODA4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yNy5iYgpAQCAtMCwwICsxLDE5NCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIEFwYWNoZSBIVFRQIFNlcnZlciBpcyBhIHBvd2VyZnVsLCBlZmZpY2llbnQsIGFuZCBcCitleHRlbnNpYmxlIHdlYiBzZXJ2ZXIuIgorU1VNTUFSWSA9ICJBcGFjaGUgSFRUUCBTZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iCitERVBFTkRTID0gImxpYnRvb2wtbmF0aXZlIGFwYWNoZTItbmF0aXZlIG9wZW5zc2wgZXhwYXQgcGNyZSBhcHIgYXByLXV0aWwiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2h0dHBkL2h0dHBkLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vc2VydmVyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4xLWNvcmVsaW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuNC1leHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtc2VsaW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi12b2xhdGlsZS5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZTIuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfYXBhY2hlMiBcCisgICAgICAgICAgIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5N2I2YmJmYTgzYzg2NmRiZTIwZWYzMTdlM2FmZDEwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWZjYzEyODIzOGE2OTA1MTViZDgxNzRkNTMzMGE1MzA5MTYxZWYzMTRhMzI2YWU0NWM3YzE1ZWQxMzljMTNhIgorCitTID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhcGFjaGUyLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtRFBBVEhfTUFYPTQwOTYiCitDRkxBR1NfcHJlcGVuZCA9ICItSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wgIgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNzbCBcCisgICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgLS13aXRoLWV4cGF0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCisgICAgLS1lbmFibGUtaW5mbyBcCisgICAgLS1lbmFibGUtcmV3cml0ZSBcCisgICAgLS13aXRoLWRibT1zZGJtIFwKKyAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAorICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyLyR7QlBOfSBcCisgICAgLS13aXRoLWdkYm09bm8gXAorICAgIC0td2l0aC1uZGJtPW5vIFwKKyAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS8ke0JQTn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKKyAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKKyAgICAtLWVuYWJsZS1tcG1zLXNoYXJlZCBcCisgICAgYWNfY3ZfaGF2ZV90aHJlYWRzYWZlX3BvbGxzZXQ9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0iCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXggLS1lbmFibGUtbGF5b3V0PURlYmlhbiAtLXByZWZpeD0ke2Jhc2VfcHJlZml4fS8sLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgorUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLS1lbmFibGUtbGRhcCAtLWVuYWJsZS1hdXRobnotbGRhcCwtLWRpc2FibGUtbGRhcCAtLWRpc2FibGUtYXV0aG56LWxkYXAsb3BlbmxkYXAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3M6JCcne3ByZWZpeH0vdXNyL2xpYi9jZ2ktYmluOiQnJ3tsaWJkaXJ9L2NnaS1iaW46ZycgJHtTfS9jb25maWcubGF5b3V0Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGNhdCAke1dPUktESVJ9L2luaXQgfCBcCisgICAgICAgIHNlZCAtZSAncywvdXNyL3NiaW4vLCR7c2JpbmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC91c3IvYmluLywke2JpbmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC91c3IvbGliLCR7bGliZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci8sJHtwcmVmaXh9LyxnJyA+ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgY2htb2QgNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgIyByZW1vdmUgdGhlIGdvb2Z5IG9yaWdpbmFsIGZpbGVzLi4uCisgICAgcm0gLXJmICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vb3JpZ2luYWwKKyAgICAjIEV4cGF0IHNob3VsZCBiZSBmb3VuZCBpbiB0aGUgc3RhZ2luZyBhcmVhIHZpYSBERVBFTkRTLi4uCisgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGliZXhwYXQuKgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kCisKKyAgICAjIEVuc3VyZSBjb25maWd1cmF0aW9uIGZpbGUgcHVsbHMgaW4gY29uZi5kIGFuZCBtb2R1bGVzLmQKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZC8qLmNvbmYiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyoubG9hZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5jb25mXG5cbiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisgICAgIyBtYXRjaCB3aXRoIHRoYXQgaXMgaW4gaW5pdCBzY3JpcHQKKyAgICBwcmludGYgIlxuUGlkRmlsZSAvcnVuL2h0dHBkLnBpZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisgICAgIyBTZXQgJ1NlcnZlck5hbWUnIHRvIGZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHJlc3RhcnQgYXBhY2hlIHNlcnZpY2UKKyAgICBzZWQgLWkgJ3MvXiNTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbS9TZXJ2ZXJOYW1lIGxvY2FsaG9zdC8nICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICBlbGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wNF9hcGFjaGUyICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA0X2FwYWNoZTIKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKKyAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKKworICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAorICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0NPTkZJRyA9IC4qLEFQVV9DT05GSUcgPSAsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWdfdmFycy5taworCisgICAgc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsIi4qL2NvbmZpZ3VyZSIsImNvbmZpZ3VyZSIsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWcubmljZQorICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJhcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzIgorCithcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKyAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCisgICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7YmluZGlyfS9hcHhzICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCisgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3NiaW5kaXJ9L2FwYWNoZWN0bCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9LworICAgIHNlZCAtaSAncyFteSAkaW5zdGFsbGJ1aWxkZGlyID0gLiohbXkgJGluc3RhbGxidWlsZGRpciA9ICIke1NUQUdJTkdfRElSX0hPU1R9LyR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIjshJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2FweHMKKyAgICBzZWQgLWkgJ3MhbXkgJGxpYnRvb2wgPSAuKiFteSAkbGlidG9vbCA9ICIke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIjshJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2FweHMKKworICAgIHNlZCAtaSAncyFeQVBSX0NPTkZJRyA9IC4qIUFQUl9DT05GSUcgPSAke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWchJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeQVBVX0NPTkZJRyA9IC4qIUFQVV9DT05GSUcgPSAke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWchJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeaW5jbHVkZWRpciA9IC4qIWluY2x1ZGVkaXIgPSAke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkNGTEFHUyA9IC1JW14gXSohQ0ZMQUdTID0gLUkke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkVYVFJBX0xERkxBR1MgPSAuKiFFWFRSQV9MREZMQUdTID0gLUwke1NUQUdJTkdfTElCRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5FWFRSQV9JTkNMVURFUyA9IC4qIUVYVFJBX0lOQ0xVREVTID0gLUkkKGluY2x1ZGVkaXIpIC1JLiAtSSR7U1RBR0lOR19JTkNESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhLS1zeXNyb290PVteIF0qIS0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKK30KKworIworIyBpbXBsaWNhdGlvbnMgLSB1c2VkIGJ5IHVwZGF0ZS1yYy5kIHNjcmlwdHMKKyMKK0lOSVRTQ1JJUFRfTkFNRSA9ICJhcGFjaGUyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgOTEgMjAiCitMRUFEX1NPTkFNRSA9ICJsaWJhcHItMS5zby4wIgorCitQQUNLQUdFUyA9ICIke1BOfS1zY3JpcHRzICR7UE59LWRvYyAke1BOfS1kZXYgJHtQTn0tZGJnICR7UE59IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZiBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWFnaWMgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21pbWUudHlwZXMgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfSAiCisKKyMgd2Ugb3ZlcnJpZGUgaGVyZSByYXRoZXIgdGhhbiBhcHBlbmQgc28gdGhhdCAuc28gbGlua3MgYXJlCisjIGluY2x1ZGVkIGluIHRoZSBydW50aW1lIHBhY2thZ2UgcmF0aGVyIHRoYW4gaGVyZSAoLWRldikKKyMgYW5kIHRvIGdldCBidWlsZCwgaWNvbnMsIGVycm9yIGludG8gdGhlIC1kZXYgcGFja2FnZQorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9pY29ucyBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vZXJyb3IgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHItY29uZmlnICR7YmluZGlyfS9hcHUtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXByKi5leHAgXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2FweHMgXAorICAgICAgICAgICAgICAgICIKKworCisjIG1hbnVhbCB0byBtYW51YWwKK0ZJTEVTXyR7UE59LWRvYyArPSAiICR7ZGF0YWRpcn0vJHtCUE59L21hbnVhbCIKKworRklMRVNfJHtQTn0tc2NyaXB0cyArPSAiJHtiaW5kaXJ9L2RibW1hbmFnZSIKKworIworIyBvdmVycmlkZSB0aGlzIHRvbyAtIGhlcmUgaXMgdGhlIGRlZmF1bHQsIGxlc3MgZGF0YWRpcgorIworRklMRVNfJHtQTn0gPSAgIiR7YmluZGlyfSAke3NiaW5kaXJ9ICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9L2xpYiouc28uKiAke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IC9iaW4gL3NiaW4gL2xpYi8qLnNvKiBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfSIKKworIyB3ZSB3YW50IGh0ZG9jcyBhbmQgY2dpLWJpbiB0byBnbyB3aXRoIHRoZSBiaW5hcnkKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS9odGRvY3MgJHtkYXRhZGlyfS8ke0JQTn0vY2dpLWJpbiIKKworI21ha2Ugc3VyZSB0aGUgbG9uZSAuc28gbGlua3MgYWxzbyBnZXQgd3JhcHBlZCBpbiB0aGUgYmFzZSBwYWNrYWdlCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke0JQTn0vbW9kdWxlcy8uZGVidWciCisKK1JERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIGxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gInBlcmwgJHtQTn0iCitSREVQRU5EU18ke1BOfS1kZXYgPSAicGVybCIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9jZ2ktYmluIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzL3ZvbGF0aWxlcy4wNF9hcGFjaGUyIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvZmlsZXMvdm9sYXRpbGVzLjA0X2FwYWNoZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIyMDc1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzL3ZvbGF0aWxlcy4wNF9hcGFjaGUyCkBAIC0wLDAgKzEsMyBAQAorIyA8dHlwZT4gPG93bmVyPiA8Z3JvdXA+IDxtb2RlPiA8cGF0aD4gPGxpbmtzb3VyY2U+CitkIHJvb3Qgcm9vdCAwNzU1IC92YXIvcnVuL2FwYWNoZTIgbm9uZQorZCByb290IHJvb3QgMDc1NSAvdmFyL2xvZy9hcGFjaGUyIG5vbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZS8wMDAxLWNvbmZpZ3VyZS5hYy1BZGQtZm9yZWlnbi10by1BTV9JTklUX0FVVE9NQUtFLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlLzAwMDEtY29uZmlndXJlLmFjLUFkZC1mb3JlaWduLXRvLUFNX0lOSVRfQVVUT01BS0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNiZTdjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZS8wMDAxLWNvbmZpZ3VyZS5hYy1BZGQtZm9yZWlnbi10by1BTV9JTklUX0FVVE9NQUtFLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNDU5MWI1YjQwZDY2YzE5ZWRjNzNiOTUxYWQwOTFkYWM2Mzk0NTRjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI1IEp1bCAyMDE3IDE2OjAwOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWRkIGZvcmVpZ24gdG8gQU1fSU5JVF9BVVRPTUFLRQorCitGaXhlcyBlcnJvcnMgbGlrZQorfCBNYWtlZmlsZS5hbTogZXJyb3I6IHJlcXVpcmVkIGZpbGUgJy4vUkVBRE1FJyBub3QgZm91bmQKK3wgTWFrZWZpbGUuYW06IGVycm9yOiByZXF1aXJlZCBmaWxlICcuL0NoYW5nZUxvZycgbm90IGZvdW5kCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQ2Mjk4ZjI3Li45OGNhYjc5MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzIsNyArMzIsNyBAQCBkbmwgSW5pdCBhdXRvY29uZiBhbmQgYXV0b21ha2UKKyBBQ19JTklUKFtjaGVyb2tlZV0sIFtjaGVyb2tlZV92ZXJzaW9uXSwgW2h0dHA6Ly9idWdzLmNoZXJva2VlLXByb2plY3QuY29tL10sIFtjaGVyb2tlZV0pCisgQUNfQ09ORklHX1NSQ0RJUihbY2hlcm9rZWUvc2VydmVyLmNdKQorIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKKy1BTV9JTklUX0FVVE9NQUtFKFtuby1kZWZpbmVdKQorK0FNX0lOSVRfQVVUT01BS0UoW25vLWRlZmluZSBmb3JlaWduXSkKKyAKKyBkbmwgRGVmaW5lIHZlcnNpb24KKyBBQ19ERUZJTkUoUEFDS0FHRV9NQUpPUl9WRVJTSU9OLCAiY2hlcm9rZWVfbWFqb3JfdmVyc2lvbiIsIFtWZXJzaW9uIHN0cmluZ10pCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWUvMDAwMS1tYWtlLURvLW5vdC1idWlsZC1wby1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZS8wMDAxLW1ha2UtRG8tbm90LWJ1aWxkLXBvLWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzBiNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWUvMDAwMS1tYWtlLURvLW5vdC1idWlsZC1wby1maWxlcy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGU5YWUzMjMxZWMxODhkZjgwMWZlNTFhYTk1ZDZhZmVjMmU1MmRiNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxNjoxNDoxOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWtlOiBEbyBub3QgYnVpbGQgcG8gZmlsZXMKKworVGFyZ2V0IGZhaWxzIHRvIGJ1aWxkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGYwMTI3OGMzLi5lYjg2NGMzNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgIyMgQ2hlcm9rZWU6IE1ha2VmaWxlLmFtICAtKi0gbWFrZWZpbGUgLSotCisgCistU1VCRElSUyA9IHBvIG00IHd3dyBpY29ucyB0aGVtZXMgcWEgZG9jIC4gYWRtaW4gY29udHJpYiBjaGVyb2tlZSBjZ2V0IHBhY2thZ2VzIGRic2xheWVyCisrU1VCRElSUyA9IG00IHd3dyBpY29ucyB0aGVtZXMgcWEgZG9jIC4gYWRtaW4gY29udHJpYiBjaGVyb2tlZSBjZ2V0IHBhY2thZ2VzIGRic2xheWVyCisgU1VGRklYRVMgPSAuc2FtcGxlLnByZSAuc2FtcGxlIC5oLnByZSAuaCAueG1sLnByZSAueG1sCisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV8xLjIuOTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfMS4yLjk4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTM5Zjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV8xLjIuOTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIkNoZXJva2VlIFdlYiBTZXJ2ZXIgZmFzdCBhbmQgc2VjdXJlIgotU1VNTUFSWV9jZ2V0ID0gIlNtYWxsIGRvd25sb2FkZXIgYmFzZWQgaW4gdGhlIENoZXJva2VlIGNsaWVudCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGVyb2tlZS1wcm9qZWN0LmNvbS8iCi1TRUNUSU9OID0gIm5ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVBSID0gInI5IgotCi1ERVBFTkRTID0gImxpYnBjcmUgb3BlbnNzbCBteXNxbDUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vbWlycm9yLmFhcm5ldC5lZHUuYXUvcHViLyR7QlBOfS8xLjIvJHtQVn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NoZXJva2VlLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY2hlcm9rZWUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGVyb2tlZS1pbnN0YWxsLWNvbmZpZ3VyZWQucHktb25jZS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjFiMDFlN2Q0NWMwZTgyZWNjMGM0MjU3YTljMjdmZWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDQyYjU2ODdiMWEzZGIzY2E4MTgxNjc1NDhjZTVkMzJjMzVlMjI3YzY2NDA3MzJkY2I2MjJhNmY0YTA3OGI3ZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tmZm1wZWddID0gIi0td2l0aC1mZm1wZWcsLS13aXRob3V0LWZmbXBlZyxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW2dlb2lwXSA9ICItLXdpdGgtZ2VvaXAsLS13aXRob3V0LWdlb2lwLGdlb2lwIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ubHMgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgLS13aXRoLXd3d3Jvb3Q9JHtsb2NhbHN0YXRlZGlyfS93d3cvY2hlcm9rZWUgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vY2hlcm9rZWUuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2hlcm9rZWUKLQotICAgICMgY2xlYW4gdXAgLmxhIGZpbGVzIGZvciBwbHVnaW5zCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGVyb2tlZS8qLmxhCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY2hlcm9rZWUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotfQotCi0jIFB1dCAtZGV2IG5lYXIgdGhlIGZyb250IHNvIHdlIGNhbiBtb3ZlIHRoZSAubGEgZmlsZXMgaW50byBpdCB3aXRoIGEgd2lsZGNhcmQKLVBBQ0tBR0VTID0rICJsaWJjaGVyb2tlZS1zZXJ2ZXIgbGliY2hlcm9rZWUtY2xpZW50IGxpYmNoZXJva2VlLWJhc2UgY2dldCIKLQotRklMRVNfY2dldCA9ICIke2JpbmRpcn0vY2dldCIKLUZJTEVTX2xpYmNoZXJva2VlLXNlcnZlciA9ICIke2xpYmRpcn0vbGliY2hlcm9rZWUtc2VydmVyJHtTT0xJQlN9IgotRklMRVNfbGliY2hlcm9rZWUtY2xpZW50ID0gIiR7bGliZGlyfS9saWJjaGVyb2tlZS1jbGllbnQke1NPTElCU30iCi1GSUxFU19saWJjaGVyb2tlZS1iYXNlID0gIiR7bGliZGlyfS9saWJjaGVyb2tlZS1iYXNlJHtTT0xJQlN9IgotCi0jIFBhY2sgdGhlIGh0ZG9jcwotRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vd3d3L2NoZXJva2VlIgotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2NoZXJva2VlL2NoZXJva2VlLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2NoZXJva2VlIFwKLSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNoZXJva2VlIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgOTEgOTEiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY2hlcm9rZWUuc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmN2VhZTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfZ2l0LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiQ2hlcm9rZWUgV2ViIFNlcnZlciBmYXN0IGFuZCBzZWN1cmUiCitTVU1NQVJZX2NnZXQgPSAiU21hbGwgZG93bmxvYWRlciBiYXNlZCBpbiB0aGUgQ2hlcm9rZWUgY2xpZW50IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmNoZXJva2VlLXByb2plY3QuY29tLyIKK1NFQ1RJT04gPSAibmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworREVQRU5EUyA9ICJ1bnppcC1uYXRpdmUgbGlicGNyZSBvcGVuc3NsIG15c3FsNSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitTUkNSRVYgPSAiNzVmMDQxZTIyNTVlNmRkMDY5MmRiMmYxNDYxMWMyNjQ3ZGJlODQyNSIKK1BWID0gIjEuMi4xMDQrZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2hlcm9rZWUvd2Vic2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL2NoZXJva2VlLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vY2hlcm9rZWUuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVyb2tlZS1pbnN0YWxsLWNvbmZpZ3VyZWQucHktb25jZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BZGQtZm9yZWlnbi10by1BTV9JTklUX0FVVE9NQUtFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1Eby1ub3QtYnVpbGQtcG8tZmlsZXMucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGJpbmNvbmZpZyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHB5dGhvbm5hdGl2ZQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbZmZtcGVnXSA9ICItLXdpdGgtZmZtcGVnLC0td2l0aG91dC1mZm1wZWcsbGliYXYiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tnZW9pcF0gPSAiLS13aXRoLWdlb2lwLC0td2l0aG91dC1nZW9pcCxnZW9pcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmxzIFwKKyAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgIC0td2l0aC13d3dyb290PSR7bG9jYWxzdGF0ZWRpcn0vd3d3L2NoZXJva2VlIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2NoZXJva2VlLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NoZXJva2VlCisKKyAgICAjIGNsZWFuIHVwIC5sYSBmaWxlcyBmb3IgcGx1Z2lucworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hlcm9rZWUvKi5sYQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NoZXJva2VlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKK30KKworIyBQdXQgLWRldiBuZWFyIHRoZSBmcm9udCBzbyB3ZSBjYW4gbW92ZSB0aGUgLmxhIGZpbGVzIGludG8gaXQgd2l0aCBhIHdpbGRjYXJkCitQQUNLQUdFUyA9KyAibGliY2hlcm9rZWUtc2VydmVyIGxpYmNoZXJva2VlLWNsaWVudCBsaWJjaGVyb2tlZS1iYXNlIGNnZXQiCisKK0ZJTEVTX2NnZXQgPSAiJHtiaW5kaXJ9L2NnZXQiCitGSUxFU19saWJjaGVyb2tlZS1zZXJ2ZXIgPSAiJHtsaWJkaXJ9L2xpYmNoZXJva2VlLXNlcnZlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmNoZXJva2VlLWNsaWVudCA9ICIke2xpYmRpcn0vbGliY2hlcm9rZWUtY2xpZW50JHtTT0xJQlN9IgorRklMRVNfbGliY2hlcm9rZWUtYmFzZSA9ICIke2xpYmRpcn0vbGliY2hlcm9rZWUtYmFzZSR7U09MSUJTfSIKKworIyBQYWNrIHRoZSBodGRvY3MKK0ZJTEVTXyR7UE59ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L3d3dy9jaGVyb2tlZSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9jaGVyb2tlZS9jaGVyb2tlZS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9jaGVyb2tlZSBcCisiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJjaGVyb2tlZSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDkxIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNoZXJva2VlLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYwppbmRleCBmOThmMjk5Li40YTk3ZTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKQEAgLTksNyArOSw3IEBACiAKIFNFQ1RJT04gPSAibmV0IgogCi1ERVBFTkRTID0gImxpYnBjcmUgZ3ppcCBvcGVuc3NsIgorREVQRU5EUyA9ICJsaWJwY3JlIHpsaWIgb3BlbnNzbCIKIAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly9uZ2lueC5vcmcvZG93bmxvYWQvbmdpbngtJHtQVn0udGFyLmd6IFwKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAogICAgIC0td2l0aC1odHRwX3NzbF9tb2R1bGUgXAogICAgIC0td2l0aC1odHRwX2d6aXBfc3RhdGljX21vZHVsZSBcCi0gICAgJHtFWFRSQV9PRUNPTkZ9CisgICAgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KIH0KIAogZG9faW5zdGFsbCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYyZmQ0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIG5naW54LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wYmI1OGVkMGRmZDRmNWRiZWNlM2I1MmFiYTc5ZjAyMyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwNGEyMGNiNGYwYjBjOWRiNzQ2YzYzMGQ4OWZmNGVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MDIwZjEzNjRjYWM0NTljYjczM2M0ZTFjYWVkMmQwMDM3NmU0MGVhMDU1ODhmYjg3OTMwNzZhNGM2OWRkOTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjExLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzU2NWZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjExLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBuZ2lueC5pbmMKLQotIyAxLjEwLnggYnJhbmNoIGlzIHRoZSBjdXJyZW50IHN0YWJsZSBicmFuY2gsIHRoZSByZWNvbW1lbmRlZCBkZWZhdWx0Ci0jIDEuMTEueCBpcyB0aGUgY3VycmVudCBtYWlubGluZSBicmFuY2hlcyBjb250YWluaW5nIGFsbCBuZXcgZmVhdHVyZXMKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzNzUzZGU1Zjg2YTFlZTAzNDFmZDJmOTQ5MWIyODIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZmIxMGY1NzkwNTVkMjdhMjI0MGQ1MWM3ZDg1YzE5MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzhiM2NhYmIwNzYzM2Y3NTRjZDlkZWUzMmZjOGUyMjU4MmJjZTIyYmZhNDA3YmU3NmE4MDZhYmQ5MzU1MzNkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwZTNhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjEuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIG5naW54LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDM3NTNkZTVmODZhMWVlMDM0MWZkMmY5NDkxYjI4MiIKKworU1JDX1VSSVttZDVzdW1dID0gImEzMDdlNzRhY2E5NTQwM2U1ZWUwMGYxNTM4MDdjZTU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3OTNiZjQyNjQ4NWEzMGY5MTAyMWI2Yjk0NWE5ZmQ4YTg0ZDg3ZDE3YjU2NjU2MmMzNzk3YWJhOGZhYzc2ZmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMy41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjJjMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuNS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIG5naW54LmluYworCisjIDEuMTIueCBicmFuY2ggaXMgdGhlIGN1cnJlbnQgc3RhYmxlIGJyYW5jaCwgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQKKyMgMS4xMy54IGlzIHRoZSBjdXJyZW50IG1haW5saW5lIGJyYW5jaGVzIGNvbnRhaW5pbmcgYWxsIG5ldyBmZWF0dXJlcworREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDM3NTNkZTVmODZhMWVlMDM0MWZkMmY5NDkxYjI4MiIKKworU1JDX1VSSVttZDVzdW1dID0gImYxOTM3MjIxNTlhZGZiMWViODExN2MwNDkxZmQxN2VjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlNzViOTQ0MjliM2Y3NDUzNzdhZWJhM2FmZjk3ZGE3N2JmMmIwM2ZjYjlmZjE1YjNiYWQ5YjAzOGRiMjlmMmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTI1YjI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNpbXBsZSwgc21hbGwsIHBvcnRhYmxlLCBmYXN0LCBhbmQgc2VjdXJlIEhUVFAgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiQSBzaW1wbGUsIHNtYWxsLCBwb3J0YWJsZSwgZmFzdCwgYW5kIHNlY3VyZSBIVFRQIHNlcnZlciAoc3VwcG9ydGVkIGZvcmsgb2YgdGh0dHBkKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbnNvdXJjZS5keWMuZWR1L3N0aHR0cGQiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy90aHR0cGQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0wYzU3NjJjMmMzNGRjYmU5ZWIxODgxNTUxNjUwMjg3MiIKLQotREVQRU5EUyArPSAiYmFzZS1wYXNzd2QiCi0KLVNSQ19VUkkgPSAiaHR0cDovL29wZW5zb3VyY2UuZHljLmVkdS9wdWIvc3RodHRwZC9zdGh0dHBkLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90aHR0cGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly90aHR0cGQuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjdkZDJkNTA2ZGM1ZmFkMmFkODc5NGIxODAwZDI2MzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTdkNjYwYTg4MTMzMWU5MzgxOGU4NzJjZTExNTM2ZjQ2MTEwNWQ3MGExOGRmYzVkZTU4OTU4NTFjNGIyYWZkYiIKLQotUyA9ICIke1dPUktESVJ9L3N0aHR0cGQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotU1JWX0RJUiA/PSAiJHtzZXJ2aWNlZGlyfS93d3ciCi0KLSMgTm90ZSB0aGF0IGAke3NiaW5kaXJ9L21ha2V3ZWInIGlzIGluc3RhbGxlZCBzZXRnaWQgdG8gdGhpcyBncm91cCwKLSMgYnV0ICR7U1JWX0RJUn0gaXMgbm90IGluc3RhbGxlZCBjaGdycCdkIHRvIHRoZSBncm91cCBieSBkZWZhdWx0LgotV0VCR1JPVVAgPz0gInd3dy1kYXRhIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgZXhwb3J0IFdFQkRJUj0ke1NSVl9ESVJ9Ci0gICAgZXhwb3J0IFdFQkdST1VQPSR7V0VCR1JPVVB9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLWMgLW0gNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdGh0dHBkCi0gICAgaW5zdGFsbCAtYyAtbSA3NTUgJHtXT1JLRElSfS90aHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQotICAgIHNlZCAtaSAtZSAncyxAQENPTkZGSUxFLCR7c3lzY29uZmRpcn0vdGh0dHBkLmNvbmYsZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RodHRwZAotICAgIHNlZCAtaSAtZSAncyxAQFNSVkRJUiwke1NSVl9ESVJ9LGcnICR7RH0ke3N5c2NvbmZkaXJ9L3RodHRwZC5jb25mCi0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RodHRwZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGh0dHBkLnNlcnZpY2UKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGh0dHBkLnNlcnZpY2UKLSAgICBzZWQgLWkgLWUgJ3MsQEBDT05GRklMRSwke3N5c2NvbmZkaXJ9L3RodHRwZC5jb25mLGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RodHRwZC5zZXJ2aWNlCi19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJ0aHR0cGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRodHRwZC5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfSArPSAiJHtTUlZfRElSfSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtTUlZfRElSfS9jZ2ktYmluLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlmZTU1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4xLmJiCkBAIC0wLDAgKzEsNTMgQEAKK1NVTU1BUlkgPSAiQSBzaW1wbGUsIHNtYWxsLCBwb3J0YWJsZSwgZmFzdCwgYW5kIHNlY3VyZSBIVFRQIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIkEgc2ltcGxlLCBzbWFsbCwgcG9ydGFibGUsIGZhc3QsIGFuZCBzZWN1cmUgSFRUUCBzZXJ2ZXIgKHN1cHBvcnRlZCBmb3JrIG9mIHRodHRwZCkuIgorSE9NRVBBR0UgPSAiaHR0cDovL29wZW5zb3VyY2UuZHljLmVkdS9zdGh0dHBkIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvdGh0dHBkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MGM1NzYyYzJjMzRkY2JlOWViMTg4MTU1MTY1MDI4NzIiCisKK0RFUEVORFMgKz0gImJhc2UtcGFzc3dkIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlbmVzcy8ke0JQTn0vYXJjaGl2ZS92JHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RodHRwZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3RodHRwZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzY2RhMWI2YzhjODU0MmIxNTEwZWFkYjhlNTQwZDhiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWVlMjgwNjQzMmVhZjViNWRkMjY3YTA1MjM3MDFmOWYxZmEwMGZlZmQ0OTlkNWJlYzQyMTY1YTQxZTA1ODQ2IgorCitTID0gIiR7V09SS0RJUn0vc3RodHRwZC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitTUlZfRElSID89ICIke3NlcnZpY2VkaXJ9L3d3dyIKKworIyBOb3RlIHRoYXQgYCR7c2JpbmRpcn0vbWFrZXdlYicgaXMgaW5zdGFsbGVkIHNldGdpZCB0byB0aGlzIGdyb3VwLAorIyBidXQgJHtTUlZfRElSfSBpcyBub3QgaW5zdGFsbGVkIGNoZ3JwJ2QgdG8gdGhlIGdyb3VwIGJ5IGRlZmF1bHQuCitXRUJHUk9VUCA/PSAid3d3LWRhdGEiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBleHBvcnQgV0VCRElSPSR7U1JWX0RJUn0KKyAgICBleHBvcnQgV0VCR1JPVVA9JHtXRUJHUk9VUH0KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC90aHR0cGQKKyAgICBpbnN0YWxsIC1jIC1tIDc1NSAke1dPUktESVJ9L3RodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgc2VkIC1pIC1lICdzLEBAQ09ORkZJTEUsJHtzeXNjb25mZGlyfS90aHR0cGQuY29uZixnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdGh0dHBkCisgICAgc2VkIC1pIC1lICdzLEBAU1JWRElSLCR7U1JWX0RJUn0sZycgJHtEfSR7c3lzY29uZmRpcn0vdGh0dHBkLmNvbmYKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdGh0dHBkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGh0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS90aHR0cGQuc2VydmljZQorICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS90aHR0cGQuc2VydmljZQorICAgIHNlZCAtaSAtZSAncyxAQENPTkZGSUxFLCR7c3lzY29uZmRpcn0vdGh0dHBkLmNvbmYsZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGh0dHBkLnNlcnZpY2UKK30KKworSU5JVFNDUklQVF9OQU1FID0gInRodHRwZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidGh0dHBkLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke1NSVl9ESVJ9IgorRklMRVNfJHtQTn0tZGJnICs9ICIke1NSVl9ESVJ9L2NnaS1iaW4vLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE4NzJhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViLWJhc2VkIE15U1FMIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGhwbXlhZG1pbi5uZXQiCi0jIE1haW4gY29kZSBpcyBHUEx2MiwgbGlicmFyaWVzL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYnJhcmllcy90Y3BkZi9MSUNFTlNFLlRYVDttZDU9NWM4N2I2NmE1MzU4ZWJjYzQ5NWIwM2UwYWZjZDM0MmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5waHBteWFkbWluLm5ldC9waHBNeUFkbWluLyR7UFZ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcy50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlLmNvbmYgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNjN2E2YTU3N2QxMGRlMDRhNWRkMjFhMDUwMTg1NDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQzYmFkMzhhOTVmMjFiYjAxNWJkYjc4YzljMDY3ZTBlYTc1MTBjMWIzNWQ0YjhlNzU3Y2I4OWM0MTNlM2JhYyIKLQotUyA9ICIke1dPUktESVJ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcyIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAqICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQotICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICAjIERvbid0IGluc3RhbGwgcGF0Y2hlcyB0byB0YXJnZXQKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L3BhdGNoZXMKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZC9waHBteWFkbWluLmNvbmYKLQotICAgICMgUmVtb3ZlIGEgZmV3IHNjcmlwdHMgdGhhdCBleHBsaWNpdGx5IHJlcXVpcmUgYmFzaCAoISkKLSAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9waHBteWFkbWluL2xpYnJhcmllcy90cmFuc2Zvcm1hdGlvbnMvKi5zaAotfQotCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC43LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcyZGI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy42LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiV2ViLWJhc2VkIE15U1FMIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGhwbXlhZG1pbi5uZXQiCisjIE1haW4gY29kZSBpcyBHUEx2MiwgdmVuZG9yL3RlY25pY2tjb20vdGNwZGYgaXMgdW5kZXIgTEdQTHYzLCBqcy9qcXVlcnkgaXMgdW5kZXIgTUlUCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdmVuZG9yL3RlY25pY2tjb20vdGNwZGYvTElDRU5TRS5UWFQ7bWQ1PTVjODdiNjZhNTM1OGViY2M0OTViMDNlMGFmY2QzNDJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pzL2pxdWVyeS9NSVQtTElDRU5TRS50eHQ7bWQ1PWU0M2FhNDM3YTZhMWJhNDIxNjUzYmQ1MDM0MzMzYmY5IFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnBocG15YWRtaW4ubmV0L3BocE15QWRtaW4vJHtQVn0vcGhwTXlBZG1pbi0ke1BWfS1hbGwtbGFuZ3VhZ2VzLnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUuY29uZiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOWFlYzA1ZDQ0YzY4YjRhYzVlNDk4NzExOGQ3MGNkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmFiNmI5MjMzNjM4NjY0NmJiYjE4OWQ1NTgxNzc5OTQ4N2I1YzI3YjA2Y2FiMGNkZmRjYWIzYzg4ZjU5ODhmIgorCitTID0gIiR7V09SS0RJUn0vcGhwTXlBZG1pbi0ke1BWfS1hbGwtbGFuZ3VhZ2VzIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQorICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICogJHtEfSR7ZGF0YWRpcn0vJHtCUE59CisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQorICAgICMgRG9uJ3QgaW5zdGFsbCBwYXRjaGVzIHRvIHRhcmdldAorICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS8ke0JQTn0vcGF0Y2hlcworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocG15YWRtaW4uY29uZgorCisgICAgIyBSZW1vdmUgYSBmZXcgc2NyaXB0cyB0aGF0IGV4cGxpY2l0bHkgcmVxdWlyZSBiYXNoICghKQorICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L3BocG15YWRtaW4vbGlicmFyaWVzL3RyYW5zZm9ybWF0aW9ucy8qLnNoCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLUNvcnJlY3QtVGltZW91dC1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1Db3JyZWN0LVRpbWVvdXQtaXNzdWUucGF0Y2gKaW5kZXggZDU1MjlhMi4uYWJlYTBkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLUNvcnJlY3QtVGltZW91dC1pc3N1ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhLzAwMDEtQ29ycmVjdC1UaW1lb3V0LWlzc3VlLnBhdGNoCkBAIC0xLDE5ICsxLDIxIEBACi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy5kL2NoYXJ0cy5kLnBsdWdpbiBiL3BsdWdpbnMuZC9jaGFydHMuZC5wbHVnaW4KLWluZGV4IDQwYzAzNTYuLmJjYTU3YjMgMTAwNzU1Ci0tLS0gYS9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCi0rKysgYi9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCi1AQCAtMTg0LDEwICsxODQsMTAgQEAgZmkKLSAjIHRpbWVvdXQgY29tbWFuZCB3ZSB1c2UsIHByb3ZpZGluZyBhIGZ1bmN0aW9uIHRoYXQKLSAjIGNhbiBlbXVsYXRlIHRoZSB0aW1lb3V0IGNvbW1hbmQgd2UgbmVlZDoKLSAjID4gdGltZW91dCBTRUNPTkRTIGNvbW1hbmQgLi4uCitJbmRleDogZ2l0L3BsdWdpbnMuZC9jaGFydHMuZC5wbHVnaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCisrKysgZ2l0L3BsdWdpbnMuZC9jaGFydHMuZC5wbHVnaW4KK0BAIC0yNDYsMTYgKzI0Niw2IEBAIGVsc2UKKyAgICAgaW5mbyAiY29uZmlndXJhdGlvbiBmaWxlICckbXljb25maWcnIG5vdCBmb3VuZC4gVXNpbmcgZGVmYXVsdHMuIgorIGZpCisgCistIyB3ZSBjaGVjayBmb3IgdGhlIHRpbWVvdXQgY29tbWFuZCwgYWZ0ZXIgd2UgbG9hZCBvdXIKKy0jIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgdGhlIHVzZXIgbWF5IG92ZXJ3cml0ZSB0aGUKKy0jIHRpbWVvdXQgY29tbWFuZCB3ZSB1c2UsIHByb3ZpZGluZyBhIGZ1bmN0aW9uIHRoYXQKKy0jIGNhbiBlbXVsYXRlIHRoZSB0aW1lb3V0IGNvbW1hbmQgd2UgbmVlZDoKKy0jID4gdGltZW91dCBTRUNPTkRTIGNvbW1hbmQgLi4uCiAtaWYgWyAkY2hlY2tfZm9yX3RpbWVvdXQgLWVxIDEgXQotLQl0aGVuCi0tCXJlcXVpcmVfY21kIHRpbWVvdXQgfHwgZXhpdCAxCistICAgIHRoZW4KKy0gICAgcmVxdWlyZV9jbWQgdGltZW91dCB8fCBleGl0IDEKIC1maQotKyNpZiBbICRjaGVja19mb3JfdGltZW91dCAtZXEgMSBdCi0rIwl0aGVuCi0rIwlyZXF1aXJlX2NtZCB0aW1lb3V0IHx8IGV4aXQgMQotKyNmaQotCistCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICMgaW50ZXJuYWwgY2hlY2tzCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhLzAwMDEtbWFrZWZpbGUtRG8tbm90LWJ1aWxkLWNvbnRyaWItZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLW1ha2VmaWxlLURvLW5vdC1idWlsZC1jb250cmliLWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTNhNGE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLW1ha2VmaWxlLURvLW5vdC1idWlsZC1jb250cmliLWRpci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDg3Zjg2ODkxOGE5YWUxZGNmOTNlMDFmM2UxNzdkMTg1YzE5YTE0OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAxNDozMjowOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWtlZmlsZTogRG8gbm90IGJ1aWxkIGNvbnRyaWIgZGlyCisKK0l0IGNvbnRhaW5zIGRlYmlhbiBidWlsZCBpdGVhbXMgYW55d2F5CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAzY2NmODJmOC4uYTg1MmU1MjkgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC01Miw3ICs1Miw2IEBAIFNVQkRJUlMgPSBcCisgCXNyYyBcCisgCXN5c3RlbSBcCisgCXdlYiBcCistCWNvbnRyaWIgXAorIAkkKE5VTEwpCisgCisgZGlzdF9ub2luc3RfREFUQT0gXAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgppbmRleCBkZTE0MDY0Li4xMDAzNjYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgpAQCAtMSwxMSArMSwxNSBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZpcmVob2wvbmV0ZGF0YS8iCiBTVU1NQVJZID0gIlJlYWwtdGltZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIgogTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTc0N2FmZTA3MGVhOWQ2YzJiZTBhMzEzNTM2MDlhMzViIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9YTRhM2I2NTBlYTNmNzQyNjljZGZkNDVhMzU1MGUyMTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpcmVob2wvbmV0ZGF0YS5naXQ7cHJvdG9jb2w9aHR0cHMiCi1TUkNSRVYgPSAiMzZjMTMwNGUzNzA5NDE3NGVhNTEwMDE5MDMwNThlNjUwNTMxMDdjYSIKLVBWID0gIjEuMC4xK2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpcmVob2wvbmV0ZGF0YS5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZmlsZS1Eby1ub3QtYnVpbGQtY29udHJpYi1kaXIucGF0Y2ggXAorIgorU1JDUkVWID0gImY1ZmEzNDZhMTg4ZTkwNmE4ZjJjY2UzYzJjZjMyYTg4Y2U4MWM2NjYiCitQViA9ICIxLjYuMCtnaXQke1NSQ1BWfSIKIAogIyBwYXRjaCB0byBkaXNhYmxlIHRpbWVvdXQgYmVjYXVzZSB0aW1lb3V0IGFyZSBub3QgYXZhaWxhYmxlIHdpdGggYWN0dWFsIHZlcnNpb24KICMgb2YgY29yZS11dGlscwpAQCAtMTksNyArMjMsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ERVBFTkRTICs9ICJ6bGliIgorREVQRU5EUyArPSAiemxpYiB1dGlsLWxpbnV4IgogCiBpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvd2VibWluLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL3dlYm1pbi5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Y2Y0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL3dlYm1pbi5zZXJ2aWNlCkBAIC0wLDAgKzEsMTUgQEAKK1tVbml0XQorRGVzY3JpcHRpb249V2VibWluIEFkbWluIFRvb2wKK1JlcXVpcmVzPWxvY2FsLWZzLnRhcmdldAorQWZ0ZXI9YmFzaWMudGFyZ2V0CitDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0CisKK1tTZXJ2aWNlXQorVHlwZT1vbmVzaG90CitSZW1haW5BZnRlckV4aXQ9eWVzCitFeGVjU3RhcnQ9QFNZU0NPTkZESVJAL3dlYm1pbi9zdGFydAorRXhlY1N0b3A9QFNZU0NPTkZESVJAL3dlYm1pbi9zdG9wCitFeGVjUmVsb2FkPUBTWVNDT05GRElSQC93ZWJtaW4vcmVsb2FkCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vd2VibWluXzEuODAxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44MDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NmMwZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44MDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotU1VNTUFSWSA9ICJXZWItYmFzZWQgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJtaW4uY29tIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0wMzczYWM5ZjYxMWU1NDJkZGViZTFlYzYzOTRhZmMzYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vd2ViYWRtaW4vd2VibWluLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXR1cC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LWV4Y2x1ZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmV0LWdlbmVyaWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXN0YXJ0dXAtb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtdmVyc2lvbi1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtZXhwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4cG9ydHMtbGliLnBsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vdW50LWV4Y2x1ZGVmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYW1iYS1jb25maWctZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Byb2Z0cGQtY29uZmlnLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXQtbGliLnBsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21lZGlhLXRvbWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXB5dGhvbjIuMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9teXNxbC1jb25maWctZml4LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxZDA1YjRlMzFhZDFiZDE0YmFiMTRlMGYxNTVjMDg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFkNDc3ZWRiNDFkYzFhOTAwNDQ4YWZjOGI1NTI4ZTEzNmIzNzc4ZDJkMzAzZjIzYmM1NjRhZmI5NzVlYjViZWQiCi0KLWluaGVyaXQgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgIyBSZW1vdmUgYmluYXJpZXMgYW5kIHBsdWdpbnMgZm9yIG90aGVyIHBsYXRmb3JtcwotICAgIHJtIC1yZiBhY2wvQXV0aGVuLVNvbGFyaXNSQkFDLTAuMSoKLSAgICBybSAtcmYgZm9ybWF0IGJzZGV4cG9ydHMgaHB1eGV4cG9ydHMgc2dpZXhwb3J0cwotICAgIHJtIC1yZiB6b25lcyByYmFjIHNtZiBpcGZ3IGlwZmlsdGVyIGRmc2FkbWluCi0gICAgcm0gLWYgbW91bnQvZnJlZWJzZC1tb3VudHMqIG1vdW50L25ldGJzZC1tb3VudHMqCi0gICAgcm0gLWYgbW91bnQvb3BlbmJzZC1tb3VudHMqIG1vdW50L21hY29zLW1vdW50cyoKLQotICAgICMgUmVtb3ZlIHNvbWUgcGx1Z2lucyBmb3IgdGhlIG1vbWVudAotICAgIHJtIC1yZiBsaWxvIGZyb3ggd3VmdHBkIHRlbG5ldCBwc2VydmVyIGNwYW4gc2hvcmV3YWxsIHdlYmFsaXplciBjZmVuZ2luZSBmc2R1bXAgcGFwCi0gICAgcm0gLXJmIG1ham9yZG9tbyBmZXRjaG1haWwgc2VuZG1haWwgbWFpbGJveGVzIHByb2NtYWlsIGZpbHRlciBtYWlsY2FwIGRvdmVjb3QgZXhpbSBzcGFtIHFtYWlsYWRtaW4gcG9zdGZpeAotICAgIHJtIC1yZiBzdHVubmVsIHNxdWlkIHNhcmcgcHB0cC1jbGllbnQgcHB0cC1zZXJ2ZXIgamFiYmVyIG9wZW5zbHAgc2VudHJ5IGNsdXN0ZXItKiB2Z2V0dHkgYnVybmVyIGhlYXJ0YmVhdAotCi0gICAgIyBBZGp1c3QgY29uZmlncwotICAgIFsgLWYgaW5pdC9jb25maWctZGViaWFuLWxpbnV4IF0gJiYgbXYgaW5pdC9jb25maWctZGViaWFuLWxpbnV4IGluaXQvY29uZmlnLWdlbmVyaWMtbGludXgKLSAgICBzZWQgLWkgInMvc2h1dGRvd25fY29tbWFuZD0uKi9zaHV0ZG93bl9jb21tYW5kPXBvd2Vyb2ZmLyIgaW5pdC9jb25maWctZ2VuZXJpYy1saW51eAotICAgIGVjaG8gImV4Y2x1ZGU9Ym9vdG1pc2Muc2gsc2luZ2xlLGhhbHQscmVib290LGhvc3RuYW1lLnNoLG1vZHV0aWxzLnNoLG1vdW50YWxsLnNoLG1vdW50bmZzLnNoLG5ldHdvcmtpbmcscG9wdWxhdGUtdm9sYXRpbGUuc2gscm1ub2xvZ2luLnNoLHNhdmUtcnRjLnNoLHVtb3VudGZzLHVtb3VudG5mcy5zaCxod2Nsb2NrLnNoLGNoZWNrcm9vdC5zaCxiYW5uZXIuc2gsdWRldix1ZGV2LWNhY2hlLGRldnB0cy5zaCxwc3BsYXNoLnNoLHNlbmRzaWdzLGZic2V0dXAsYm9vdGxvZ2Qsc3RvcC1ib290bG9nZCxzeXNmcy5zaCxzeXNsb2csc3lzbG9nLmJ1c3lib3gsdXJhbmRvbSx3ZWJtaW4sZnVuY3Rpb25zLmluaXRzY3JpcHRzLHJlYWQtb25seS1yb290ZnMtaG9vay5zaCIgPj4gaW5pdC9jb25maWctZ2VuZXJpYy1saW51eAotICAgIGVjaG8gImV4Y2x1ZGVmcz1kZXZwdHMsZGV2dG1wZnMsdXNiZGV2ZnMscHJvYyx0bXBmcyxzeXNmcyxkZWJ1Z2ZzIiA+PiBtb3VudC9jb25maWctZ2VuZXJpYy1saW51eAotCi0gICAgWyAtZiBleHBvcnRzL2NvbmZpZy1kZWJpYW4tbGludXggXSAmJiBtdiBleHBvcnRzL2NvbmZpZy1kZWJpYW4tbGludXggZXhwb3J0cy9jb25maWctZ2VuZXJpYy1saW51eAotICAgIHNlZCAtaSAicy9raWxsYWxsIC1IVVAgcnBjLm5mc2QgJiYgLy8iIGV4cG9ydHMvY29uZmlnLWdlbmVyaWMtbGludXgKLSAgICBzZWQgLWkgInMvbmV0c3RkX25mcy9uZnNzZXJ2ZXIvZyIgZXhwb3J0cy9jb25maWctZ2VuZXJpYy1saW51eAotCi0gICAgIyBGaXggaW5zYW5lIG5hbWluZyB0aGF0IGNhdXNlcyBwcm9ibGVtcyBhdCBwYWNrYWdpbmcgdGltZSAobXVzdCBiZSBkb25lIGJlZm9yZSBkZWxldGluZyBiZWxvdykKLSAgICBmaW5kIC4gLW5hbWUgIipcKioiIHwgd2hpbGUgcmVhZCBmcm9tCi0gICAgZG8KLSAgICAgICAgdG89YGVjaG8gIiRmcm9tIiB8IHNlZCAicy8qL0FMTC8iYAotICAgICAgICBtdiAiJGZyb20iICIkdG8iCi0gICAgZG9uZQotCi0gICAgIyBSZW1vdmUgc29tZSBvdGhlciBmaWxlcyB3ZSBkb24ndCBuZWVkCi0gICAgZmluZCAuIC1uYW1lICJjb25maWctKiIgLWEgXCEgLW5hbWUgImNvbmZpZy1nZW5lcmljLWxpbnV4IiAtYSBcISAtbmFtZSAiY29uZmlnLUFMTC1saW51eCIgLWEgXCEgLW5hbWUgIioucGwiIC1kZWxldGUKLSAgICBmaW5kIC4gLXJlZ2V4dHlwZSBwb3NpeC1leHRlbmRlZCAtcmVnZXggIi4qLyhvcGVuc2VydmVyfGFpeHxvc2YxfG9zZnxvcGVuYnNkfG5ldGJzZHxmcmVlYnNkfHVuaXh3YXJlfHNvbGFyaXN8bWFjb3N8aXJpeHxocHV4fGN5Z3dpbnx3aW5kb3dzKS1saWJcLnBsIiAtZGVsZXRlCi0gICAgcm0gLWYgd2VibWluLWdlbnRvby1pbml0IHdlYm1pbi1jYWxkZXJhLWluaXQgd2VibWluLWRlYmlhbi1wYW0gd2VibWluLXBhbQotCi0gICAgIyBEb24ndCBuZWVkIHRoZXNlIGF0IHJ1bnRpbWUgKGFuZCB3ZSBoYXZlIG91ciBvd24gc2V0dXAgc2NyaXB0KQotICAgIHJtIC1mIHNldHVwLnNoCi0gICAgcm0gLWYgc2V0dXAucGwKLQotICAgICMgVXNlIHBpZG9mIGZvciBmaW5kaW5nIFBJRHMKLSAgICBzZWQgLWkgInMvZmluZF9waWRfY29tbWFuZD0uKi9maW5kX3BpZF9jb21tYW5kPXBpZG9mIE5BTUUvIiBjb25maWctZ2VuZXJpYy1saW51eAotfQotCi1XRUJNSU5fTE9HSU4gPz0gImFkbWluIgotV0VCTUlOX1BBU1NXT1JEID89ICJwYXNzd29yZCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS93ZWJtaW4KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSB3ZWJtaW4taW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2VibWluCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS93ZWJtaW4KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluCi0gICAgY2QgJHtTfSB8fCBleGl0IDEKLSAgICB0YXIgLS1uby1zYW1lLW93bmVyIC0tZXhjbHVkZT0nLi9wYXRjaGVzJyAtLWV4Y2x1ZGU9Jy4vLnBjJyAtY3BmIC0gLiBcCi0gICAgICAgIHwgdGFyIC0tbm8tc2FtZS1vd25lciAteHBmIC0gLUMgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluCi0KLSAgICBybSAtZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vd2VibWluLWluaXQKLSAgICBybSAtZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vYWpheHRlcm0vYWpheHRlcm0vY29uZmlndXJlLmluaXRkLmdlbnRvbwotICAgIHJtIC1yZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vcGF0Y2hlcwotCi0gICAgIyBSdW4gc2V0dXAgc2NyaXB0Ci0gICAgZXhwb3J0IHBlcmw9cGVybAotICAgIGV4cG9ydCBwZXJsX3J1bnRpbWU9JHtiaW5kaXJ9L3BlcmwKLSAgICBleHBvcnQgcHJlZml4PSR7RH0KLSAgICBleHBvcnQgdGVtcGRpcj0ke1N9L2luc3RhbGxfdG1wCi0gICAgZXhwb3J0IHdhZGlyPSR7bGliZXhlY2Rpcn0vd2VibWluCi0gICAgZXhwb3J0IGNvbmZpZ19kaXI9JHtzeXNjb25mZGlyfS93ZWJtaW4KLSAgICBleHBvcnQgdmFyX2Rpcj0ke2xvY2Fsc3RhdGVkaXJ9L3dlYm1pbgotICAgIGV4cG9ydCBvc190eXBlPWdlbmVyaWMtbGludXgKLSAgICBleHBvcnQgb3NfdmVyc2lvbj0wCi0gICAgZXhwb3J0IHJlYWxfb3NfdHlwZT0iJHtESVNUUk9fTkFNRX0iCi0gICAgZXhwb3J0IHJlYWxfb3NfdmVyc2lvbj0iJHtESVNUUk9fVkVSU0lPTn0iCi0gICAgZXhwb3J0IHBvcnQ9MTAwMDAKLSAgICBleHBvcnQgbG9naW49JHtXRUJNSU5fTE9HSU59Ci0gICAgZXhwb3J0IHBhc3N3b3JkPSR7V0VCTUlOX1BBU1NXT1JEfQotICAgIGV4cG9ydCBzc2w9MAotICAgIGV4cG9ydCBhdGJvb3Q9MQotICAgIGV4cG9ydCBub19wYW09MQotICAgIG1rZGlyIC1wICR0ZW1wZGlyCi0gICAgJHtTfS8uLi9zZXR1cC5zaAotCi0gICAgIyBFbnN1cmUgY29ycmVjdCBQRVJMTElCIHBhdGgKLSAgICBzZWQgLWkgLWUgJ3MjJHtEfSMjZycgJHtEfSR7c3lzY29uZmRpcn0vd2VibWluL3N0YXJ0Ci19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJ3ZWJtaW4iCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSA1IDMgMiAuIHN0b3AgMTAgMCAxIDYgLiIKLQotIyBGSVhNRTogc29tZSBvZiB0aGlzIHNob3VsZCBiZSBmaWd1cmVkIG91dCBhdXRvbWF0aWNhbGx5Ci1SREVQRU5EU18ke1BOfSArPSAicGVybCBwZXJsLW1vZHVsZS1zb2NrZXQgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkgcGVybC1tb2R1bGUtY2FycCBwZXJsLW1vZHVsZS1zdHJpY3QiCi1SREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtd2FybmluZ3MgcGVybC1tb2R1bGUteHNsb2FkZXIgcGVybC1tb2R1bGUtcG9zaXggcGVybC1tb2R1bGUtYXV0b2xvYWRlciIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1mY250bCBwZXJsLW1vZHVsZS10aWUtaGFzaCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLWNvbnN0YW50IgotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBwZXJsLW1vZHVsZS1maWxlLWNvcHkgcGVybC1tb2R1bGUtc2RibS1maWxlIHBlcmwtbW9kdWxlLWZlYXR1cmUiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIndlYm1pbi1tb2R1bGUtKiB3ZWJtaW4tdGhlbWUtKiIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ3ZWJtaW4tbW9kdWxlLXN5c3RlbS1zdGF0dXMiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGUtcHJvYyAke1BOfS1tb2R1bGUtcmFpZCAke1BOfS1tb2R1bGUtZXhwb3J0cyAke1BOfS1tb2R1bGUtZmRpc2sgJHtQTn0tbW9kdWxlLWx2bSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1wcm9jID0gInByb2NwcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1yYWlkID0gIm1kYWRtIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlLWV4cG9ydHMgPSAicGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLXBhdGggcGVybC1tb2R1bGUtY3dkIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBwZXJsLW1vZHVsZS1maWxlLXNwZWMtdW5peCIKLVJSRUNPTU1FTkRTXyR7UE59LW1vZHVsZS1mZGlzayA9ICJwYXJ0ZWQiCi1SUkVDT01NRU5EU18ke1BOfS1tb2R1bGUtbHZtID0gImx2bTIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIGltcG9ydCBvcywgb3MucGF0aAotCi0gICAgd2FkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJleGVjZGlyfS93ZWJtaW4nLCBkKQotICAgIHdhZGlyX2ltYWdlID0gYmIuZGF0YS5leHBhbmQoJyR7RH0nLCBkKSArIHdhZGlyCi0gICAgbW9kdWxlcyA9IFtdCi0gICAgdGhlbWVzID0gW10KLSAgICBmb3IgbW9kIGluIG9zLmxpc3RkaXIod2FkaXJfaW1hZ2UpOgotICAgICAgICBtb2RpbmZvID0gb3MucGF0aC5qb2luKHdhZGlyX2ltYWdlLCBtb2QsICJtb2R1bGUuaW5mbyIpCi0gICAgICAgIHRoZW1laW5mbyA9IG9zLnBhdGguam9pbih3YWRpcl9pbWFnZSwgbW9kLCAidGhlbWUuaW5mbyIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1vZGluZm8pOgotICAgICAgICAgICAgbW9kdWxlcy5hcHBlbmQobW9kKQotICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHRoZW1laW5mbyk6Ci0gICAgICAgICAgICB0aGVtZXMuYXBwZW5kKG1vZCkKLQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHdhZGlyLCAnXiglcykkJyAlICJ8Ii5qb2luKG1vZHVsZXMpLCAnd2VibWluLW1vZHVsZS0lcycsICdXZWJtaW4gbW9kdWxlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSwgcHJlcGVuZD1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHdhZGlyLCAnXiglcykkJyAlICJ8Ii5qb2luKHRoZW1lcyksICd3ZWJtaW4tdGhlbWUtJXMnLCAnV2VibWluIHRoZW1lIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSwgcHJlcGVuZD1UcnVlKQotfQotCi0jIFRpbWUtc2F2ZXJzCi1wYWNrYWdlX2RvX3BrZ2NvbmZpZygpIHsKLSAgICA6Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL3dlYm1pbl8xLjg1MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vd2VibWluXzEuODUwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlODhlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL3dlYm1pbl8xLjg1MC5iYgpAQCAtMCwwICsxLDE2NyBAQAorU1VNTUFSWSA9ICJXZWItYmFzZWQgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJtaW4uY29tIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0wMzczYWM5ZjYxMWU1NDJkZGViZTFlYzYzOTRhZmMzYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vd2ViYWRtaW4vd2VibWluLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LWV4Y2x1ZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmV0LWdlbmVyaWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXN0YXJ0dXAtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtdmVyc2lvbi1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtZXhwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2V4cG9ydHMtbGliLnBsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LWV4Y2x1ZGVmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS1jb25maWctZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Byb2Z0cGQtY29uZmlnLWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtbGliLnBsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21lZGlhLXRvbWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXB5dGhvbjIuMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9teXNxbC1jb25maWctZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dlYm1pbi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImNkNmVlOThmNzNmOTQxODU2MjE5NzY3NWI5NTJkODFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2NmNhYTllNGNiNTBkNTQ0N2JjOGFjZWI3OTg5ZDIyODRkZGUwNjAyNzhmNDA0YjEzZTE3MWM3Y2UxNjkwZTEiCisKK2luaGVyaXQgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIFJlbW92ZSBiaW5hcmllcyBhbmQgcGx1Z2lucyBmb3Igb3RoZXIgcGxhdGZvcm1zCisgICAgcm0gLXJmIGFjbC9BdXRoZW4tU29sYXJpc1JCQUMtMC4xKgorICAgIHJtIC1yZiBmb3JtYXQgYnNkZXhwb3J0cyBocHV4ZXhwb3J0cyBzZ2lleHBvcnRzCisgICAgcm0gLXJmIHpvbmVzIHJiYWMgc21mIGlwZncgaXBmaWx0ZXIgZGZzYWRtaW4KKyAgICBybSAtZiBtb3VudC9mcmVlYnNkLW1vdW50cyogbW91bnQvbmV0YnNkLW1vdW50cyoKKyAgICBybSAtZiBtb3VudC9vcGVuYnNkLW1vdW50cyogbW91bnQvbWFjb3MtbW91bnRzKgorCisgICAgIyBSZW1vdmUgc29tZSBwbHVnaW5zIGZvciB0aGUgbW9tZW50CisgICAgcm0gLXJmIGxpbG8gZnJveCB3dWZ0cGQgdGVsbmV0IHBzZXJ2ZXIgY3BhbiBzaG9yZXdhbGwgd2ViYWxpemVyIGNmZW5naW5lIGZzZHVtcCBwYXAKKyAgICBybSAtcmYgbWFqb3Jkb21vIGZldGNobWFpbCBzZW5kbWFpbCBtYWlsYm94ZXMgcHJvY21haWwgZmlsdGVyIG1haWxjYXAgZG92ZWNvdCBleGltIHNwYW0gcW1haWxhZG1pbiBwb3N0Zml4CisgICAgcm0gLXJmIHN0dW5uZWwgc3F1aWQgc2FyZyBwcHRwLWNsaWVudCBwcHRwLXNlcnZlciBqYWJiZXIgb3BlbnNscCBzZW50cnkgY2x1c3Rlci0qIHZnZXR0eSBidXJuZXIgaGVhcnRiZWF0CisKKyAgICAjIEFkanVzdCBjb25maWdzCisgICAgWyAtZiBpbml0L2NvbmZpZy1kZWJpYW4tbGludXggXSAmJiBtdiBpbml0L2NvbmZpZy1kZWJpYW4tbGludXggaW5pdC9jb25maWctZ2VuZXJpYy1saW51eAorICAgIHNlZCAtaSAicy9zaHV0ZG93bl9jb21tYW5kPS4qL3NodXRkb3duX2NvbW1hbmQ9cG93ZXJvZmYvIiBpbml0L2NvbmZpZy1nZW5lcmljLWxpbnV4CisgICAgZWNobyAiZXhjbHVkZT1ib290bWlzYy5zaCxzaW5nbGUsaGFsdCxyZWJvb3QsaG9zdG5hbWUuc2gsbW9kdXRpbHMuc2gsbW91bnRhbGwuc2gsbW91bnRuZnMuc2gsbmV0d29ya2luZyxwb3B1bGF0ZS12b2xhdGlsZS5zaCxybW5vbG9naW4uc2gsc2F2ZS1ydGMuc2gsdW1vdW50ZnMsdW1vdW50bmZzLnNoLGh3Y2xvY2suc2gsY2hlY2tyb290LnNoLGJhbm5lci5zaCx1ZGV2LHVkZXYtY2FjaGUsZGV2cHRzLnNoLHBzcGxhc2guc2gsc2VuZHNpZ3MsZmJzZXR1cCxib290bG9nZCxzdG9wLWJvb3Rsb2dkLHN5c2ZzLnNoLHN5c2xvZyxzeXNsb2cuYnVzeWJveCx1cmFuZG9tLHdlYm1pbixmdW5jdGlvbnMuaW5pdHNjcmlwdHMscmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoIiA+PiBpbml0L2NvbmZpZy1nZW5lcmljLWxpbnV4CisgICAgZWNobyAiZXhjbHVkZWZzPWRldnB0cyxkZXZ0bXBmcyx1c2JkZXZmcyxwcm9jLHRtcGZzLHN5c2ZzLGRlYnVnZnMiID4+IG1vdW50L2NvbmZpZy1nZW5lcmljLWxpbnV4CisKKyAgICBbIC1mIGV4cG9ydHMvY29uZmlnLWRlYmlhbi1saW51eCBdICYmIG12IGV4cG9ydHMvY29uZmlnLWRlYmlhbi1saW51eCBleHBvcnRzL2NvbmZpZy1nZW5lcmljLWxpbnV4CisgICAgc2VkIC1pICJzL2tpbGxhbGwgLUhVUCBycGMubmZzZCAmJiAvLyIgZXhwb3J0cy9jb25maWctZ2VuZXJpYy1saW51eAorICAgIHNlZCAtaSAicy9uZXRzdGRfbmZzL25mc3NlcnZlci9nIiBleHBvcnRzL2NvbmZpZy1nZW5lcmljLWxpbnV4CisKKyAgICAjIEZpeCBpbnNhbmUgbmFtaW5nIHRoYXQgY2F1c2VzIHByb2JsZW1zIGF0IHBhY2thZ2luZyB0aW1lIChtdXN0IGJlIGRvbmUgYmVmb3JlIGRlbGV0aW5nIGJlbG93KQorICAgIGZpbmQgLiAtbmFtZSAiKlwqKiIgfCB3aGlsZSByZWFkIGZyb20KKyAgICBkbworICAgICAgICB0bz1gZWNobyAiJGZyb20iIHwgc2VkICJzLyovQUxMLyJgCisgICAgICAgIG12ICIkZnJvbSIgIiR0byIKKyAgICBkb25lCisKKyAgICAjIFJlbW92ZSBzb21lIG90aGVyIGZpbGVzIHdlIGRvbid0IG5lZWQKKyAgICBmaW5kIC4gLW5hbWUgImNvbmZpZy0qIiAtYSBcISAtbmFtZSAiY29uZmlnLWdlbmVyaWMtbGludXgiIC1hIFwhIC1uYW1lICJjb25maWctQUxMLWxpbnV4IiAtYSBcISAtbmFtZSAiKi5wbCIgLWRlbGV0ZQorICAgIGZpbmQgLiAtcmVnZXh0eXBlIHBvc2l4LWV4dGVuZGVkIC1yZWdleCAiLiovKG9wZW5zZXJ2ZXJ8YWl4fG9zZjF8b3NmfG9wZW5ic2R8bmV0YnNkfGZyZWVic2R8dW5peHdhcmV8c29sYXJpc3xtYWNvc3xpcml4fGhwdXh8Y3lnd2lufHdpbmRvd3MpLWxpYlwucGwiIC1kZWxldGUKKyAgICBybSAtZiB3ZWJtaW4tZ2VudG9vLWluaXQgd2VibWluLWNhbGRlcmEtaW5pdCB3ZWJtaW4tZGViaWFuLXBhbSB3ZWJtaW4tcGFtCisKKyAgICAjIERvbid0IG5lZWQgdGhlc2UgYXQgcnVudGltZSAoYW5kIHdlIGhhdmUgb3VyIG93biBzZXR1cCBzY3JpcHQpCisgICAgcm0gLWYgc2V0dXAuc2gKKyAgICBybSAtZiBzZXR1cC5wbAorCisgICAgIyBVc2UgcGlkb2YgZm9yIGZpbmRpbmcgUElEcworICAgIHNlZCAtaSAicy9maW5kX3BpZF9jb21tYW5kPS4qL2ZpbmRfcGlkX2NvbW1hbmQ9cGlkb2YgTkFNRS8iIGNvbmZpZy1nZW5lcmljLWxpbnV4Cit9CisKK1dFQk1JTl9MT0dJTiA/PSAiYWRtaW4iCitXRUJNSU5fUEFTU1dPUkQgPz0gInBhc3N3b3JkIgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3dlYm1pbgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1IHdlYm1pbi1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC93ZWJtaW4KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS93ZWJtaW4uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3dlYm1pbi5zZXJ2aWNlCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS93ZWJtaW4KKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluCisgICAgY2QgJHtTfSB8fCBleGl0IDEKKyAgICB0YXIgLS1uby1zYW1lLW93bmVyIC0tZXhjbHVkZT0nLi9wYXRjaGVzJyAtLWV4Y2x1ZGU9Jy4vLnBjJyAtY3BmIC0gLiBcCisgICAgICAgIHwgdGFyIC0tbm8tc2FtZS1vd25lciAteHBmIC0gLUMgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluCisKKyAgICBybSAtZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vd2VibWluLWluaXQKKyAgICBybSAtZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vYWpheHRlcm0vYWpheHRlcm0vY29uZmlndXJlLmluaXRkLmdlbnRvbworICAgIHJtIC1yZiAke0R9JHtsaWJleGVjZGlyfS93ZWJtaW4vcGF0Y2hlcworCisgICAgIyBSdW4gc2V0dXAgc2NyaXB0CisgICAgZXhwb3J0IHBlcmw9cGVybAorICAgIGV4cG9ydCBwZXJsX3J1bnRpbWU9JHtiaW5kaXJ9L3BlcmwKKyAgICBleHBvcnQgcHJlZml4PSR7RH0KKyAgICBleHBvcnQgdGVtcGRpcj0ke1N9L2luc3RhbGxfdG1wCisgICAgZXhwb3J0IHdhZGlyPSR7bGliZXhlY2Rpcn0vd2VibWluCisgICAgZXhwb3J0IGNvbmZpZ19kaXI9JHtzeXNjb25mZGlyfS93ZWJtaW4KKyAgICBleHBvcnQgdmFyX2Rpcj0ke2xvY2Fsc3RhdGVkaXJ9L3dlYm1pbgorICAgIGV4cG9ydCBvc190eXBlPWdlbmVyaWMtbGludXgKKyAgICBleHBvcnQgb3NfdmVyc2lvbj0wCisgICAgZXhwb3J0IHJlYWxfb3NfdHlwZT0iJHtESVNUUk9fTkFNRX0iCisgICAgZXhwb3J0IHJlYWxfb3NfdmVyc2lvbj0iJHtESVNUUk9fVkVSU0lPTn0iCisgICAgZXhwb3J0IHBvcnQ9MTAwMDAKKyAgICBleHBvcnQgbG9naW49JHtXRUJNSU5fTE9HSU59CisgICAgZXhwb3J0IHBhc3N3b3JkPSR7V0VCTUlOX1BBU1NXT1JEfQorICAgIGV4cG9ydCBzc2w9MAorICAgIGV4cG9ydCBhdGJvb3Q9MQorICAgIGV4cG9ydCBub19wYW09MQorICAgIG1rZGlyIC1wICR0ZW1wZGlyCisgICAgJHtTfS8uLi9zZXR1cC5zaAorCisgICAgIyBFbnN1cmUgY29ycmVjdCBQRVJMTElCIHBhdGgKKyAgICBzZWQgLWkgLWUgJ3MjJHtEfSMjZycgJHtEfSR7c3lzY29uZmRpcn0vd2VibWluL3N0YXJ0Cit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJ3ZWJtaW4iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSA1IDMgMiAuIHN0b3AgMTAgMCAxIDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndlYm1pbi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgorCisjIEZJWE1FOiBzb21lIG9mIHRoaXMgc2hvdWxkIGJlIGZpZ3VyZWQgb3V0IGF1dG9tYXRpY2FsbHkKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIHBlcmwtbW9kdWxlLXNvY2tldCBwZXJsLW1vZHVsZS1leHBvcnRlciBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBwZXJsLW1vZHVsZS1jYXJwIHBlcmwtbW9kdWxlLXN0cmljdCIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS13YXJuaW5ncyBwZXJsLW1vZHVsZS14c2xvYWRlciBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIgorUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWZjbnRsIHBlcmwtbW9kdWxlLXRpZS1oYXNoIHBlcmwtbW9kdWxlLXZhcnMgcGVybC1tb2R1bGUtdGltZS1sb2NhbCBwZXJsLW1vZHVsZS1jb25maWcgcGVybC1tb2R1bGUtY29uc3RhbnQiCitSREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtZmlsZS1nbG9iIHBlcmwtbW9kdWxlLWZpbGUtY29weSBwZXJsLW1vZHVsZS1zZGJtLWZpbGUgcGVybC1tb2R1bGUtZmVhdHVyZSIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAid2VibWluLW1vZHVsZS0qIHdlYm1pbi10aGVtZS0qIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIndlYm1pbi1tb2R1bGUtc3lzdGVtLXN0YXR1cyIKKworUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZS1wcm9jICR7UE59LW1vZHVsZS1yYWlkICR7UE59LW1vZHVsZS1leHBvcnRzICR7UE59LW1vZHVsZS1mZGlzayAke1BOfS1tb2R1bGUtbHZtIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLXByb2MgPSAicHJvY3BzIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLXJhaWQgPSAibWRhZG0iCitSREVQRU5EU18ke1BOfS1tb2R1bGUtZXhwb3J0cyA9ICJwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBwZXJsLW1vZHVsZS1jd2QgcGVybC1tb2R1bGUtZmlsZS1zcGVjIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy11bml4IgorUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlLWZkaXNrID0gInBhcnRlZCIKK1JSRUNPTU1FTkRTXyR7UE59LW1vZHVsZS1sdm0gPSAibHZtMiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgaW1wb3J0IG9zLCBvcy5wYXRoCisKKyAgICB3YWRpciA9IGJiLmRhdGEuZXhwYW5kKCcke2xpYmV4ZWNkaXJ9L3dlYm1pbicsIGQpCisgICAgd2FkaXJfaW1hZ2UgPSBiYi5kYXRhLmV4cGFuZCgnJHtEfScsIGQpICsgd2FkaXIKKyAgICBtb2R1bGVzID0gW10KKyAgICB0aGVtZXMgPSBbXQorICAgIGZvciBtb2QgaW4gb3MubGlzdGRpcih3YWRpcl9pbWFnZSk6CisgICAgICAgIG1vZGluZm8gPSBvcy5wYXRoLmpvaW4od2FkaXJfaW1hZ2UsIG1vZCwgIm1vZHVsZS5pbmZvIikKKyAgICAgICAgdGhlbWVpbmZvID0gb3MucGF0aC5qb2luKHdhZGlyX2ltYWdlLCBtb2QsICJ0aGVtZS5pbmZvIikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kaW5mbyk6CisgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2QpCisgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHModGhlbWVpbmZvKToKKyAgICAgICAgICAgIHRoZW1lcy5hcHBlbmQobW9kKQorCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgd2FkaXIsICdeKCVzKSQnICUgInwiLmpvaW4obW9kdWxlcyksICd3ZWJtaW4tbW9kdWxlLSVzJywgJ1dlYm1pbiBtb2R1bGUgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlLCBwcmVwZW5kPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgd2FkaXIsICdeKCVzKSQnICUgInwiLmpvaW4odGhlbWVzKSwgJ3dlYm1pbi10aGVtZS0lcycsICdXZWJtaW4gdGhlbWUgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlLCBwcmVwZW5kPVRydWUpCit9CisKKyMgVGltZS1zYXZlcnMKK3BhY2thZ2VfZG9fcGtnY29uZmlnKCkgeworICAgIDoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRQppbmRleCBhOGUyMWE5Li4zMzY3Nzk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvUkVBRE1FCkBAIC0xLDExICsxLDExIEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybworYnJhbmNoOiByb2NrbwogcmV2aXNpb246IEhFQUQKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAotYnJhbmNoOiBweXJvCiticmFuY2g6IHJvY2tvCiByZXZpc2lvbjogSEVBRAogbWV0YS14ZmNlIGRlcGVuZHMgb24gbWV0YS1vZSwgbWV0YS1nbm9tZSBhbmQgbWV0YS1tdWx0aW1lZGlhIGluIHRoaXMgcmVwb3NpdG9yeS4KIApAQCAtMTQsMTAgKzE0LDEwIEBACiAKIEJCTUFTSyA9ICJtZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhIgogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEteGZjZV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLXhmY2VdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzaW5nIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXhmY2VdW3B5cm9dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXhmY2VdW3JvY2tvXVtQQVRDSCcKIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgppbmRleCA2NGIxMDc3Li5hZDI1ZGNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCkBAIC0xNSw3ICsxNSw3IEBACiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciA9ICJjb3JlIgogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm9wZW5lbWJlZGRlZC1sYXllciIKIExBWUVSREVQRU5EU194ZmNlLWxheWVyICs9ICJnbm9tZS1sYXllciIKLUxBWUVSREVQRU5EU194ZmNlLWxheWVyICs9ICJvcGVuZW1iZWRkZWQtbGF5ZXIiCitMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibXVsdGltZWRpYS1sYXllciIKIExBWUVSREVQRU5EU194ZmNlLWxheWVyICs9ICJtZXRhLXB5dGhvbiIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLW91cHV0LWRpcmVjdG9yeS1mb3ItZGVza3RvcC1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtb3VwdXQtZGlyZWN0b3J5LWZvci1kZXNrdG9wLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYmZmZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtb3VwdXQtZGlyZWN0b3J5LWZvci1kZXNrdG9wLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGM4NWJmN2NjNWMxZTE3ODBkMjE1ZjZmZTIzM2UzZWQ0NTk3YzcyZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMSBTZXAgMjAxNSAwNjo1NDoyOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogY3JlYXRlIG91cHV0IGRpcmVjdG9yeSBmb3IgZGVza3RvcCBmaWxlCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQotCi1bMV06IGh0dHA6Ly9idWctYXR0YWNobWVudC54ZmNlLm9yZy9hdHRhY2htZW50LmNnaT9pZD02NDYwCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYTIyZmMyMC4uMmVmMGU1NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTEyMiw2ICsxMjIsNyBAQCBhcHBfZGVza3RvcF9EQVRBID0gJChhcHBfZGVza3RvcF9pbl9maWxlczouZGVza3RvcC5pbj0uZGVza3RvcCkKLSAKLSBzcmMveGZjZTQtc2NyZWVuc2hvb3Rlci5kZXNrdG9wLmluOiBzcmMveGZjZTQtc2NyZWVuc2hvb3Rlci5kZXNrdG9wLmluLmluCi0gCSQoQU1fVl9HRU4pICggXAotKwkJJChNS0RJUl9QKSAkKGRpciAkQCk7IFwKLSAJCXNlZCAtZSAic15AUExVR0lOX1BBVEhAXiQobGliZXhlY2RpcikvYXBwbGljYXRpb25zXiIgXAotIAkJCSQ8ID4gJEAgXAotIAkpCi0tLSAKLTIuMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL3hmY2U0LXNjcmVlbnNob290ZXJfMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWNiNjg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL3hmY2U0LXNjcmVlbnNob290ZXJfMS44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkFwcGxpY2F0aW9uIHRvIHRha2Ugc2NyZWVuc2hvdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMveGZjZTQtc2NyZWVuc2hvb3RlciIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OTE3MjhhMDczYmMwMDliNGZmYWYwMGI3NTk5ODU1IgotREVQRU5EUyA9ICJ4ZmNlNC1wYW5lbCBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBnZGstcGl4YnVmIGd0aysgZ2xpYi0yLjAgbGlic291cC0yLjQgZXhvIGxpYnhmaXhlcyB4ZXh0IHZpcnR1YWwvbGlieDExIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1vdXB1dC1kaXJlY3RvcnktZm9yLWRlc2t0b3AtZmlsZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNhMzJlY2M1NTY2NDUzYTU4ZjZhNGRkZDcwNjQ5NDQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkY2UyZGRmYWE4N2Y3MDNlODcwZTI5YmFlMTNmM2ZjODJhMWIzZjA2YjQ0ZjgzODY2NDBlNDVhMTM1ZjVmNjkiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCBsaWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMgXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL3hmY2U0LXNjcmVlbnNob290ZXJfMS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NDlkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOS4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQXBwbGljYXRpb24gdG8gdGFrZSBzY3JlZW5zaG90cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1zY3JlZW5zaG9vdGVyIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5MTcyOGEwNzNiYzAwOWI0ZmZhZjAwYjc1OTk4NTUiCitERVBFTkRTID0gInhmY2U0LXBhbmVsIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIGdkay1waXhidWYgZ3RrKyBnbGliLTIuMCBsaWJzb3VwLTIuNCBleG8gbGlieGZpeGVzIHhleHQgdmlydHVhbC9saWJ4MTEiCisKK2luaGVyaXQgeGZjZS1hcHAKKworU1JDX1VSSVttZDVzdW1dID0gIjc1ZTE1MDE0MThmOTA0NzY5ZTRmZDI1ZWZmNmEzOTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2MmIzMWQ5Y2YwNmE3NDE0YTI2NDAwYzJlYmU3YTJhZTdjMmIyMmFhNjBmOTk3ZjI1MTQ1ZWE5ZWJlNmUwZGIiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAtcCBsaWIKKyAgICBta2RpciAtcCBzcmMKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMgXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMxZDIxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIlRlcm1pbmFsIGVtdWxhdG9yIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyB2dGUgbGlieGZjZTR1aSIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkOWVhNTczMDFkNmE3NzBlNWRiOGU3ZWNkNmU0Y2RhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1YzExNjNiMzBlN2E0M2Q1NmZmOTJhMjUxOTNiZjlmMjljZTYwZTZjZjQzZTU5ODg1MzBkZjc5Yzg0Y2ZkYzgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyZWRiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNi5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIlRlcm1pbmFsIGVtdWxhdG9yIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyB2dGUgbGlieGZjZTR1aSIKKworaW5oZXJpdCB4ZmNlLWFwcAorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciIKKworU1JDX1VSSVttZDVzdW1dID0gIjkyZjVhMzM2NmUzMGY1ZjgyMzhkODI1MGY3MzBiNmFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjMmE1NjA0MDlhMGYwYjY2NmQxYzU1N2U5OTE3NDhiOTg2ZWMyNzU3MmE0NWFlODhiMGVlNWE0ODBkODgxZDciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWJpbmRpbmdzL3ZhbGEveGZjZTQtdmFsYV80LjEwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWJpbmRpbmdzL3ZhbGEveGZjZTQtdmFsYV80LjEwLjMuYmIKaW5kZXggYzllYWNlOC4uZDBhMDU5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1iaW5kaW5ncy92YWxhL3hmY2U0LXZhbGFfNC4xMC4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYgpAQCAtOSw3ICs5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwYmJiMWQ2ZTQ3M2UwZmU5YjMzNWI3YjFiNDlkOGE3MSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2E4ZjJiN2MwOWZjZGQzZDg2ZTBjNTJhZGVhM2M1OGNhMDExZDAxNDJhOTM5OTdhMDFiNGFmNzcyNjBhZTdiIgogCi1FWFRSQV9PRUNPTkYgPSAiLXdpdGgtdmFsYS1hcGk9MC4zNCIKK0VYVFJBX09FQ09ORiA9ICItd2l0aC12YWxhLWFwaT0wLjM2IgogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS92YWxhLSovdmFwaSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwteGZjZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLXhmY2UuYmIKaW5kZXggZjVjNWMyNi4uMjE5MzBiYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwteGZjZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC14ZmNlLmJiCkBAIC02LDYgKzYsNyBAQAogICAgIGtlcm5lbC1tb2R1bGVzIFwKICIKIAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIElNQUdFX0xJTkdVQVMgPz0gIiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2UxNWRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJEZWxpdmVyeSBmcmFtZXdvcmsgZm9yIGdlbmVyYWwgSW5wdXQgTWV0aG9kIGNvbmZpZ3VyYXRpb24iCi1ERVNDUklQVElPTiA9ICJJTVNldHRpbmdzIGlzIGEgZnJhbWV3b3JrIHRoYXQgZGVsaXZlcnMgSW5wdXQgTWV0aG9kIFwKLXNldHRpbmdzIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2VzIHNvIHRoZXkgdGFrZSBlZmZlY3QgXAotaW1tZWRpYXRlbHkgd2l0aG91dCBhbnkgbmVlZCB0byByZXN0YXJ0IGFwcGxpY2F0aW9ucyBcCi1vciB0aGUgZGVza3RvcC4gXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBjb3JlIERCdXMgc2VydmljZXMgYW5kIHNvbWUgdXRpbGl0aWVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pbXNldHRpbmdzLyIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSA9ICJodHRwczovL2JpdGJ1Y2tldC5vcmcvdGFnb2gvaW1zZXR0aW5ncy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWlzLXJlcXVpcmVkLWJ5LW5vdGlmeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdWx0aS1saW5lLUFDTE9DQUxfQU1GTEFHUy1pc25vdC1zdXBwb3J0ZWQtYnktYXV0b3JlY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbmFtZS11c2Utb2Ytc3Rkb3V0LWFuZC1zdGRlcnIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYjQzOWUyMWE3ZDg2ZmE5OWZiYzA0NTg2Yzc1NTM0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmMzNTM1MjM4NjA1N2JhNjhkNjlhMGI3ZDlhMWQwZDAxZWJiZDg5M2FhZmUwYTA5NGMzMTU4YzgwNzlhYzlhIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14aW5wdXRzaD01MC14aW5wdXQuc2ggXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGF0aWMgXAotICAgICAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImd0aysgZ2NvbmYgbGlibm90aWZ5IGRidXMtZ2xpYiBsaWJneGltIHhmY29uZiBpbnRsdG9vbC1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvKiAke2RhdGFkaXJ9L2dpci0xLjAvKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTRjZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjIuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJEZWxpdmVyeSBmcmFtZXdvcmsgZm9yIGdlbmVyYWwgSW5wdXQgTWV0aG9kIGNvbmZpZ3VyYXRpb24iCitERVNDUklQVElPTiA9ICJJTVNldHRpbmdzIGlzIGEgZnJhbWV3b3JrIHRoYXQgZGVsaXZlcnMgSW5wdXQgTWV0aG9kIFwKK3NldHRpbmdzIGFuZCBhcHBsaWVzIHRoZSBjaGFuZ2VzIHNvIHRoZXkgdGFrZSBlZmZlY3QgXAoraW1tZWRpYXRlbHkgd2l0aG91dCBhbnkgbmVlZCB0byByZXN0YXJ0IGFwcGxpY2F0aW9ucyBcCitvciB0aGUgZGVza3RvcC4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBjb3JlIERCdXMgc2VydmljZXMgYW5kIHNvbWUgdXRpbGl0aWVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pbXNldHRpbmdzLyIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSA9ICJodHRwczovL2JpdGJ1Y2tldC5vcmcvdGFnb2gvaW1zZXR0aW5ncy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZ3RrLWlzLXJlcXVpcmVkLWJ5LW5vdGlmeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tdWx0aS1saW5lLUFDTE9DQUxfQU1GTEFHUy1pc25vdC1zdXBwb3J0ZWQtYnktYXV0b3JlY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbmFtZS11c2Utb2Ytc3Rkb3V0LWFuZC1zdGRlcnIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTUzYjA1ODNhOWY0N2Q4YTYyYWYxZjkyZmI5ZDNiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MWFkZGYwNDU4Zjc2MDIxMmI2YjYxMDA4MzUwNjZlMTZkZWIzYThhNTBlYjAwNWEwZmMxN2ZiYWMwYTJhZTY2IgorCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14aW5wdXRzaD01MC14aW5wdXQuc2ggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGF0aWMgXAorICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gImd0aysgZ2NvbmYgbGlibm90aWZ5IGRidXMtZ2xpYiBsaWJneGltIHhmY29uZiBpbnRsdG9vbC1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvKiAke2RhdGFkaXJ9L2dpci0xLjAvKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtbXVsdGltZWRpYS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLW11bHRpbWVkaWEuYmIKaW5kZXggNzJhOTZmMy4uMTlhNmUyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtbXVsdGltZWRpYS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1tdWx0aW1lZGlhLmJiCkBAIC0xLDkgKzEsMTMgQEAKIFNVTU1BUlkgPSAiQWxsIHBhY2thZ2VzIG11bHRpbWVkaWEgcGFja2FnZXMgYXZhaWxhYmxlIGZvciBYRkNFIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIHhmbXBjIGFuZCB4ZmM0LW1wYy1wbHVnaW4KKyMgdGhhdCB3YW50cyBtcGQgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBSREVQRU5EU18ke1BOfSA9ICIgXAogICAgIHBhcm9sZSBcCiAgICAgeGZtcGMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmY2U0LW1wYy1wbHVnaW4veGZjZTQtbXBjLXBsdWdpbl8wLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94ZmNlNC1tcGMtcGx1Z2luL3hmY2U0LW1wYy1wbHVnaW5fMC41LjAuYmIKaW5kZXggZjcwOWU0ZC4uOWY1MDFmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmY2U0LW1wYy1wbHVnaW4veGZjZTQtbXBjLXBsdWdpbl8wLjUuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEveGZjZTQtbXBjLXBsdWdpbi94ZmNlNC1tcGMtcGx1Z2luXzAuNS4wLmJiCkBAIC04LDYgKzgsOSBAQAogCiBERVBFTkRTICs9ICJsaWJtcGQiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBkIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogIyBmb3Igbm93IHdlIHJlY29tbWVuZCBvdXIgb3duIG1wZC1zZXJ2ZXIKIFJSRUNPTU1FTkRTXyR7UE59ID0gIm1wZCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmbXBjL3hmbXBjXzAuMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmbXBjL3hmbXBjXzAuMi4zLmJiCmluZGV4IDNkOTAyYTEuLjg2OTQzNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94Zm1wYy94Zm1wY18wLjIuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEveGZtcGMveGZtcGNfMC4yLjMuYmIKQEAgLTQsNiArNCw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKIERFUEVORFMgPSAiZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBsaWJtcGQgdmFsYS1uYXRpdmUiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBkIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogIyBmb3Igbm93IHdlIHJlY29tbWVuZCBvdXIgb3duIG1wZC1zZXJ2ZXIKIFJSRUNPTU1FTkRTXyR7UE59ID0gIm1wZCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2YTViYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2xpcG1hbiBpcyBhIGNsaXBib2FyZCBtYW5hZ2VyIGZvciBYZmNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1jbGlwbWFuLXBsdWdpbiIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLURFUEVORFMgKz0gInhmY29uZiB4cHJvdG8gbGlieHRzdCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVhNWMwMWMzNDdmNDUwM2M1ODkwMjk3N2U2NzFlYTA5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0MWNjZTk2NjVhODllNTkzMGU3NTRlZjNlMjdmZjk3NTk0ZGEyMmI4MmIxNDAzMDk5ZWJjZjVjMThhNTM1MWYiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1saWJxcmVuY29kZSwtLWRpc2FibGUtbGlicXJlbmNvZGUscXJlbmNvZGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YmRmMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkNsaXBtYW4gaXMgYSBjbGlwYm9hcmQgbWFuYWdlciBmb3IgWGZjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtY2xpcG1hbi1wbHVnaW4iCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCitERVBFTkRTICs9ICJ4ZmNvbmYgeHByb3RvIGxpYnh0c3QiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MTY5MTQwYWY3YzlkM2ZkZGQ4YTVjOWUwZWZiNWE2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjJiNDVlMzI3ZTY3Y2MxODdkY2I5OWE2ZWY2ZDk1NTcwNDYzMDQ1YWNjZDI0NTQwZTE3MTcyZjAwNTE4OWIzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtbGlicXJlbmNvZGUsLS1kaXNhYmxlLWxpYnFyZW5jb2RlLHFyZW5jb2RlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjUwOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIG1lbnUgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vZ290dGNvZGUub3JnL3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbi8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gY21ha2UKLQotU1JDX1VSSVttZDVzdW1dID0gImViMDdjMjEwN2M5ZDEyNzZlOWIxYmVjMDFmNzM0N2ExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmZDk1YzMzMDA1NWZkNzkwMWE1OWE0ODU2OWQxNDg4NWMxNjgwMTdjNWZkYjJlMjMzOTc2YTc4YmNjYjg5MjMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJtZW51bGlicmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3YTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMy5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBtZW51IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL2dvdHRjb2RlLm9yZy94ZmNlNC13aGlza2VybWVudS1wbHVnaW4vIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGNtYWtlCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMzJhMmJiMGEwZDRhMmUzYzhjMTM2OTEwYzhiNTUxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODkxOGMxMjU1ZjdhYjg2Yjk1MGViZDEzNTU1ZmU4NzA0NmMwMWExYTRjYjBiNWQ0NjAwMjRiNmVmYzAxNzY5IgorCitSUkVDT01NRU5EU18ke1BOfSArPSAibWVudWxpYnJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmExNjM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy94a2IveGZjZTQteGtiLXBsdWdpbl8wLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiWEtCIGxheW91dCBzd2l0Y2hpbmcgcGFuZWwgcGx1Zy1pbiBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQteGtiLXBsdWdpbiIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ5NmYwOWYwODRiMGY3ZTZmMDJmNzY5YTg0NDkwYzZiIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZjY4ZTBkNTNiYWY2OGVjYzFhNzE2NWFkMzNjMjZhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MWZlMmUzM2ZlOTk5MzlkNWQwNmE2ODJlOTRlNDBlMDVlZjg0NGM5MzBhZDYxMjE1NDA5MGQxNThiMmNlNjgxIgotCi1ERVBFTkRTICs9ICJsaWJ4a2xhdmllciBsaWJ3bmNrIGxpYnJzdmcgZ2FyY29uIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC94a2IiCi0KLVJERVBFTkRTXyR7UE59ID0gInhmY2U0LXNldHRpbmdzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNjJjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMveGtiL3hmY2U0LXhrYi1wbHVnaW5fMC44LjAuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJYS0IgbGF5b3V0IHN3aXRjaGluZyBwYW5lbCBwbHVnLWluIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC14a2ItcGx1Z2luIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDk2ZjA5ZjA4NGIwZjdlNmYwMmY3NjlhODQ0OTBjNmIiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworU1JDX1VSSVttZDVzdW1dID0gImU0ZTg5Nzc0MWViZTI4MjcxOTI5NzFjMmFhYWQ4MzVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiMGQzYjlmNGI3YzNlM2U3YmU2NjhlMmY3Yzg0NWI4OWIxNmUwZWQzZGIyYmFjYjU0NGExNzI3MjY4MmNlZDAiCisKK0RFUEVORFMgKz0gImxpYnhrbGF2aWVyIGxpYnduY2szIGxpYnJzdmcgZ2FyY29uIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC94a2IiCisKK1JERVBFTkRTXyR7UE59ID0gInhmY2U0LXNldHRpbmdzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaAppbmRleCA4MDczZmNhLi45OTMxOGQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaApAQCAtMTUsMTEgKzE1LDExIEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CiAtLS0KICBNYWtlZmlsZS5hbSAgfCAxMCArLS0tLS0tLS0tCi0gY29uZmlndXJlLmFjIHwgMjYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzNSBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCAyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA5OTc5YjM2Li4wNWQ1OTRlIDEwMDY0NAoraW5kZXggNjJhZDE4ZC4uYmRjNWZhZSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQogQEAgLTEsMTUgKzEsNyBAQApAQCAtNDAsNyArNDAsNyBAQAogIGRpc3RjbGVhbi1sb2NhbDoKICAJcm0gLXJmICouY2FjaGUgKn4KIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI2NmM5MmIuLjUyNDMxMzIgMTAwNjQ0CitpbmRleCBiYTUzOTVkLi4yNjA1MDY3IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0xMTYsMTUgKzExNiw2IEBAIEFDX1BST0dfQ0MoKQpAQCAtNTksMzYgKzU5LDI2IEBACiAgCiAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCAqKiogQ2hlY2sgZm9yIHN0YW5kYXJkIGhlYWRlciBmaWxlcyAqKioKLUBAIC0xNzEsMjkgKzE2MiwxMiBAQCBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0BAIC0xNzEsMTkgKzE2Miw2IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCAqKiogQ2hlY2sgZm9yIHJlcXVpcmVkIHBhY2thZ2VzICoqKgogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIFhEVF9DSEVDS19QQUNLQUdFKFtHTElCXSwgW2dsaWItMi4wXSwgWzIuMzAuMF0pCi0tWERUX0NIRUNLX1BBQ0tBR0UoW0dJT10sIFtnaW8tMi4wXSwgWzIuMzAuMF0pCisgWERUX0NIRUNLX1BBQ0tBR0UoW0dMSUJdLCBbZ2xpYi0yLjBdLCBbMi40Mi4wXSkKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbR0lPXSwgW2dpby0yLjBdLCBbMi40Mi4wXSkKIC1YRFRfQ0hFQ0tfUEFDS0FHRShbR1RLXSwgW2d0aystMi4wXSwgWzIuMjQuMF0pCi0tWERUX0NIRUNLX1BBQ0tBR0UoW0dUSFJFQURdLCBbZ3RocmVhZC0yLjBdLCBbMi4zMC4wXSkKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbR1RLM10sIFtndGsrLTMuMF0sIFszLjIwLjBdKQorLVhEVF9DSEVDS19QQUNLQUdFKFtHVEhSRUFEXSwgW2d0aHJlYWQtMi4wXSwgWzIuNDIuMF0pCiAtWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VVRJTF0sIFtsaWJ4ZmNlNHV0aWwtMS4wXSwgWzQuMTAuMF0pCi0tWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VUldLCBbbGlieGZjZTR1aS0xXSwgWzQuMTAuMF0pCi0tWERUX0NIRUNLX09QVElPTkFMX1BBQ0tBR0UoW0dJT19VTklYXSwgW2dpby11bml4LTIuMF0sIFsyLjMwLjBdLCBbZ2lvLXVuaXhdLCBbR0lPLVVuaXggZmVhdHVyZXNdKQotIAotIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIGRubCAqKiogT3B0aW9uYWwgc3VwcG9ydCBmb3IgYSBHVEsrMyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5ICoqKgotIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLVhEVF9DSEVDS19PUFRJT05BTF9QQUNLQUdFKFtHVEszXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3RrKy0zLjBdLCBbMy42LjBdLCBbZ3RrM10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dUSysgMyBzdXBwb3J0XSkKLS1YRFRfQ0hFQ0tfT1BUSU9OQUxfUEFDS0FHRShbTElCWEZDRTRVSTJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaWJ4ZmNlNHVpLTJdLCBbNC4xMi4wXSwgW2xpYnhmY2U0dWkyXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbR1RLKyAzIHN1cHBvcnQ6IGxpYnhmY2U0dWktMl0pCi0gQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9HVEszX0xJQlJBUlldLCBbdGVzdCAieCRHVEszX0ZPVU5EIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JExJQlhGQ0U0VUkyX0ZPVU5EIiA9ICJ4eWVzIiBdKQotIAorLVhEVF9DSEVDS19QQUNLQUdFKFtMSUJYRkNFNFVJXSwgW2xpYnhmY2U0dWktMV0sIFs0LjEyLjBdKQorLVhEVF9DSEVDS19QQUNLQUdFKFtMSUJYRkNFNFVJMl0sIFtsaWJ4ZmNlNHVpLTJdLCBbNC4xMi4wXSkKKy1YRFRfQ0hFQ0tfT1BUSU9OQUxfUEFDS0FHRShbR0lPX1VOSVhdLCBbZ2lvLXVuaXgtMi4wXSwgWzIuNDIuMF0sIFtnaW8tdW5peF0sIFtHSU8tVW5peCBmZWF0dXJlc10pCistCiAtZG5sICoqKioqKioqKioqKioqKioqKioqKgogLWRubCAqKiogQ2hlY2sgZm9yIFgxMSAqKioKIC1kbmwgKioqKioqKioqKioqKioqKioqKioqCiAtWERUX0NIRUNLX0xJQlgxMV9SRVFVSVJFKCkKLS0KKyAKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCAqKiogQ2hlY2sgZm9yIGd0ay1kb2MgKioqCi0gZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioKIC0tIAotMi41LjUKKzIuOS40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyOWMzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjExLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTj0iQXBwbGljYXRpb24gbGlicmFyeSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJndGsrIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHZpcnR1YWwvbGlieDExIGxpYnVyaS1wZXJsLW5hdGl2ZSBjYWlybyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCB4ZmNlIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLQotIyBTUkNfVVJJIG11c3QgZm9sbG93IGluaGVyaXRlZCBvbmUKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovL2V4by1uby10ZXN0cy0wLjgucGF0Y2ggXAotICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICBmaWxlOi8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGIwMzZjODA0MmEyZWQ1ZDM3NjdkMTE3N2E0MjEzYTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzZiZDFjNDIyOTUwM2ZmM2MzMDE0ODVkZTNhNDFjNTVkZWM5M2U5OGRlMWE5ZWVmMWJlNzdmZTUwMmNhNGY3NyIKLQotUEFDS0FHRVMgPSsgImV4by1jc291cmNlIgotCi0jIE5vdGU6IHB5dGhvbiBiaW5kaW5ncyBkaWQgbm90IHdvcmsgaW4gb2UtZGV2IGFuZCBhcmUgYWJvdXQgdG8gYmUgbW92ZWQgdG8KLSMgcHl4ZmNlIHNlZSBodHRwOi8vY29tbWVudHMuZ21hbmUub3JnL2dtYW5lLmNvbXAuZGVza3RvcC54ZmNlLmRldmVsLnZlcnNpb240LzE5NTYwCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC8gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS94ZmNlNC9leG8tMSBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTX2V4by1jc291cmNlICs9ICIke2JpbmRpcn0vZXhvLWNzb3VyY2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NTA4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjExLjUuYmIKQEAgLTAsMCArMSwzOSBAQAorREVTQ1JJUFRJT049IkFwcGxpY2F0aW9uIGxpYnJhcnkgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSBsaWJ1cmktcGVybC1uYXRpdmUgY2Fpcm8iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgeGZjZSBweXRob25uYXRpdmUgcGVybG5hdGl2ZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCisKKyMgU1JDX1VSSSBtdXN0IGZvbGxvdyBpbmhlcml0ZWQgb25lCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9leG8tbm8tdGVzdHMtMC44LnBhdGNoIFwKKyAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKKyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgZmlsZTovL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjJlNTYwZWRmYThkZGY3N2UyMWM0Nzg3YTZmNjAwMTcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlODYyOWYzMzc4M2ViYTFjZTZkMDkyYTQyYzI4MjE3NDU4YTBjYzNkMWFkNzQ3NDA5N2I5MTg3MDU0OTU1YzEiCisKK1BBQ0tBR0VTID0rICJleG8tY3NvdXJjZSIKKworIyBOb3RlOiBweXRob24gYmluZGluZ3MgZGlkIG5vdCB3b3JrIGluIG9lLWRldiBhbmQgYXJlIGFib3V0IHRvIGJlIG1vdmVkIHRvCisjIHB5eGZjZSBzZWUgaHR0cDovL2NvbW1lbnRzLmdtYW5lLm9yZy9nbWFuZS5jb21wLmRlc2t0b3AueGZjZS5kZXZlbC52ZXJzaW9uNC8xOTU2MAorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvZXhvLTEgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8uZGVidWcgXAorIgorCitGSUxFU19leG8tY3NvdXJjZSArPSAiJHtiaW5kaXJ9L2V4by1jc291cmNlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2dhcmNvbi9nYXJjb25fMC40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMzI2MGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2dhcmNvbi9nYXJjb25fMC40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1ERVNDUklQVElPTj0iWGZjZSBNZW51IExpYnJhcnkiCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNGEwMWFiY2JkYWJmZmFlMWNhMjYzMzVhMjkzMjc2YiIKLURFUEVORFMgPSAieGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS14ZmNlLWFwcGxpY2F0aW9ucy5tZW51LWRvbi10LWJsb2F0LXNldHRpbmdzLW1lbnUtYnktLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImFiYTYyYjgwNzg3YWFjMjk1MDgzYmY3YWZkNDE5ZmZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4N2RjODU5NzEzYjY1MTg5OTJkNzYwZDRiODU4ZmIwMmU4YTMwNzA1ZTZmNmU4NzFkN2ExNGNjOTdiY2E5NzIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrLWRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGVza3RvcC1kaXJlY3RvcmllcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2dhcmNvbi9nYXJjb25fMC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZlMjM2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNi4xLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OPSJYZmNlIE1lbnUgTGlicmFyeSIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA0YTAxYWJjYmRhYmZmYWUxY2EyNjMzNWEyOTMyNzZiIgorREVQRU5EUyA9ICJ4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCB4ZmNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXhmY2UtYXBwbGljYXRpb25zLm1lbnUtZG9uLXQtYmxvYXQtc2V0dGluZ3MtbWVudS1ieS0ucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiMTc0NjkwYWQxOTI0M2Y3ZWY5NTI5Y2IwYzI0YjkwODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFjMzFiYTA0OThjMmNjMzlkZTRhOGUwYzIzNjc1MTBhZGJmNGJjMjEwNGMxN2ZlZWUzNThlNTFlNmFjZjYwMyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGstZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kZXNrdG9wLWRpcmVjdG9yaWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtYmFzZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWJhc2UuYmIKaW5kZXggZTJmMjM4Yy4uMTQwZGU0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtYmFzZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1iYXNlLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJBbGwgcGFja2FnZXMgcmVxdWlyZWQgZm9yIGEgYmFzZSBpbnN0YWxsYXRpb24gb2YgWEZDRSIKIFNFQ1RJT04gPSAieDExL3dtIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogUFIgPSAicjUiCiAKIGluaGVyaXQgcGFja2FnZWdyb3VwIGRpc3Ryb19mZWF0dXJlc19jaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1leHRlbmRlZC5iYgppbmRleCBjMDcxODhmLi5jYzIzMWI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1leHRlbmRlZC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1leHRlbmRlZC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQWxsIHBhY2thZ2VzIGZvciBmdWxsIFhGQ0UgaW5zdGFsbGF0aW9uIgogU0VDVElPTiA9ICJ4MTEvd20iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIFBSID0gInIxMCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzUwZThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRmlsZSBtYW5hZ2VyIGZvciB0aGUgWGZjZSBEZXNrdG9wIEVudmlyb25tZW50IgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImV4byBnbGliLTIuMCBndGsrIGdkay1waXhidWYgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgeGZjb25mIGxpYnNtIGRidXMtZ2xpYiBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJub3RpZnkgeGZjZTQtcGFuZWwgdWRldiIKLQotaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnhmY2Uub3JnL3NyYy94ZmNlLyR7QlBOfS8ke0AnJHtQVn0nWzA6M119L1RodW5hci0ke1BWfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjk3NDliZTgyNDdjYjE5ZWQwZmQzNmU0MTE4YzYyMzZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxYzdjMzEyMTgyN2Y1OTYxMDkwMGVmMWNjMTlhYTEwYTUwYWIyY2MzYWUzOGVlZTE1MTgxYjY0MjU2ZThiNDIiCi0KLVMgPSAiJHtXT1JLRElSfS9UaHVuYXItJHtQVn0vIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLWVuYWJsZS1wY3JlLC0tZGlzYWJsZS1wY3JlLGxpYnBjcmUiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS90aHVuYXJ4LTIvKiBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKiBcCi0gICAgJHtsaWJkaXJ9L1RodW5hci9bVHRdaHVuYXIqIFwKLSAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L1RodW5hciBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS90aHVuYXJ4LTIvLmRlYnVnLyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vVGh1bmFyLy5kZWJ1Zy8iCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImd2ZnMgZ3Zmc2QtdHJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxYjIzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkZpbGUgbWFuYWdlciBmb3IgdGhlIFhmY2UgRGVza3RvcCBFbnZpcm9ubWVudCIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorREVQRU5EUyA9ICJleG8gZ2xpYi0yLjAgZ3RrKyBnZGstcGl4YnVmIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHhmY29uZiBsaWJzbSBkYnVzLWdsaWIgc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCisKK2luaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMveGZjZS8ke0JQTn0vJHtAJyR7UFZ9J1swOjNdfS9UaHVuYXItJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYmRmM2M0YTU3ZmY4ODZjNTEyMzQxZjI0YjVlMGU4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjIyMDkxZjA3ZWM2ZGUyYzlkOWQ4OWM2MTI4OWQyYmMzNDM2YjM2YzhjNTNjY2JjOWMzMmNhOGE5OWYyMDg2IgorCitTID0gIiR7V09SS0RJUn0vVGh1bmFyLSR7UFZ9LyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwtLWRpc2FibGUtcGNyZSxsaWJwY3JlIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vdGh1bmFyeC0yLyogXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAorICAgICR7bGliZGlyfS9UaHVuYXIvW1R0XWh1bmFyKiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9UaHVuYXIgXAorICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vdGh1bmFyeC0yLy5kZWJ1Zy8gXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8uZGVidWcvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L1RodW5hci8uZGVidWcvIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJndmZzIGd2ZnNkLXRyYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24vbWFjaGluZS1ob3N0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24vbWFjaGluZS1ob3N0LmJiCmluZGV4IDAzYmQyMDUuLmM3OTE5NzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL21hY2hpbmUtaG9zdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2Vzc2lvbi9tYWNoaW5lLWhvc3QuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIk1ldGEgcGFja2FnZSBhZGRpbmcgbWFjaGluZSBuYW1lIHRvIGtub3duIGhvc3RzIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL1JFQURNRS5tZAppbmRleCBjMmVhMDQ4Li5mZTFjMmYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9SRUFETUUubWQKQEAgLTMzLDEyICszMywxMiBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiAqIFVSSTogZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQotICAqIGJyYW5jaDogcHlybworICAqIGJyYW5jaDogcm9ja28KICAgKiByZXZpc2lvbjogSEVBRAogCiAqIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvbWV0YS1vcGVuZW1iZWRkZWQKICAgKiBsYXllcnM6IG1ldGEtb2UsIG1ldGEtbXVsdGltZWRpYSwgbWV0YS1uZXR3b3JraW5nLCBtZXRhLXB5dGhvbgotICAqIGJyYW5jaDogcHlybworICAqIGJyYW5jaDogcm9ja28KICAgKiByZXZpc2lvbjogSEVBRAogCiAjIyBRdWljayBTdGFydApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvbGludXgtcmFzcGJlcnJ5cGktYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvbGludXgtcmFzcGJlcnJ5cGktYmFzZS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTI1ZDRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL2xpbnV4LXJhc3BiZXJyeXBpLWJhc2UuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWluaGVyaXQgbGludXgta2VybmVsLWJhc2UKLQotZGVmIGdldF9kdHMoZCwgdmVyPU5vbmUpOgotICAgIGltcG9ydCByZQotCi0gICAgc3RhZ2luZ19kaXIgPSBkLmdldFZhcigiU1RBR0lOR19LRVJORUxfQlVJTERESVIiKQotICAgIGR0cyA9IGQuZ2V0VmFyKCJLRVJORUxfREVWSUNFVFJFRSIpCi0KLSAgICAjIGQuZ2V0VmFyKCkgbWlnaHQgcmV0dXJuICdOb25lJyBhcyBhIG5vcm1hbCBzdHJpbmcKLSAgICAjIGxlYWRpbmcgdG8gJ2lzIE5vbmUnIGNoZWNrIGlzbid0IGVub3VnaC4KLSAgICAjIFRPRE86IEludmVzdGlnYXRlIGlmIHRoaXMgaXMgYSBidWcgaW4gYml0YmFrZQotICAgIGlmIHZlciBpcyBOb25lIG9yIHZlciA9PSAiTm9uZSI6Ci0gICAgICAgICcnJyBpZiAndmVyJyBpc24ndCBzZXQgdHJ5IHRvIGdyYWIgdGhlIGtlcm5lbCB2ZXJzaW9uCi0gICAgICAgIGZyb20gdGhlIGtlcm5lbCBzdGFnaW5nICcnJwotICAgICAgICB2ZXIgPSBnZXRfa2VybmVsdmVyc2lvbl9maWxlKHN0YWdpbmdfZGlyKQotCi0gICAgcmV0dXJuIGR0cwotCi0KLWRlZiBzcGxpdF9vdmVybGF5cyhkLCBvdXQsIHZlcj1Ob25lKToKLSAgICBkdHMgPSBnZXRfZHRzKGQsIHZlcikKLSAgICBpZiBvdXQ6Ci0gICAgICAgIG92ZXJsYXlzID0gb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoJ1xTK1wtb3ZlcmxheVwuZHRiJCcsIGR0cywgZCkKLSAgICAgICAgb3ZlcmxheXMgPSBvZS51dGlscy5zdHJfZmlsdGVyX291dCgnXFMrXC5kdGJvJCcsIG92ZXJsYXlzLCBkKQotICAgIGVsc2U6Ci0gICAgICAgIG92ZXJsYXlzID0gb2UudXRpbHMuc3RyX2ZpbHRlcignXFMrXC1vdmVybGF5XC5kdGIkJywgZHRzLCBkKSArIFwKLSAgICAgICAgICAgICAgICAgICAiICIgKyBvZS51dGlscy5zdHJfZmlsdGVyKCdcUytcLmR0Ym8kJywgZHRzLCBkKQotCi0gICAgcmV0dXJuIG92ZXJsYXlzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKaW5kZXggNTZhODU0ZS4uMmRkOTMyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL3NkY2FyZF9pbWFnZS1ycGkuYmJjbGFzcwpAQCAtMSw1ICsxLDQgQEAKIGluaGVyaXQgaW1hZ2VfdHlwZXMKLWluaGVyaXQgbGludXgtcmFzcGJlcnJ5cGktYmFzZQogCiAjCiAjIENyZWF0ZSBhbiBpbWFnZSB0aGF0IGNhbiBieSB3cml0dGVuIG9udG8gYSBTRCBjYXJkIHVzaW5nIGRkLgpAQCAtNDgsMTUgKzQ3LDE1IEBACiAKICMgVXNlIGFuIHVuY29tcHJlc3NlZCBleHQzIGJ5IGRlZmF1bHQgYXMgcm9vdGZzCiBTRElNR19ST09URlNfVFlQRSA/PSAiZXh0MyIKLVNESU1HX1JPT1RGUyA9ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS5yb290ZnMuJHtTRElNR19ST09URlNfVFlQRX0iCitTRElNR19ST09URlMgPSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS4ke1NESU1HX1JPT1RGU19UWVBFfSIKIAotSU1BR0VfREVQRU5EU19ycGktc2RpbWcgPSAiIFwKLQkJCXBhcnRlZC1uYXRpdmUgXAotCQkJbXRvb2xzLW5hdGl2ZSBcCi0JCQlkb3Nmc3Rvb2xzLW5hdGl2ZSBcCitkb19pbWFnZV9ycGlfc2RpbWdbZGVwZW5kc10gPSAiIFwKKwkJCXBhcnRlZC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCisJCQltdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAorCQkJZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCiAJCQl2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kgXAotCQkJJHtJTUFHRV9CT09UTE9BREVSfSBcCi0JCQkke0BiYi51dGlscy5jb250YWlucygnS0VSTkVMX0lNQUdFVFlQRScsICd1SW1hZ2UnLCAndS1ib290JywgJycsZCl9IFwKKwkJCSR7SU1BR0VfQk9PVExPQURFUn06ZG9fZGVwbG95IFwKKwkJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdSUElfVVNFX1VfQk9PVCcsICcxJywgJ3UtYm9vdDpkb19kZXBsb3knLCAnJyxkKX0gXAogCQkJIgogCiAjIFNEIGNhcmQgaW1hZ2UgbmFtZQpAQCAtNzYsNiArNzUsMTcgQEAKIFNESU1HX1ZGQVQgPSAiJHtJTUFHRV9OQU1FfS52ZmF0IgogU0RJTUdfTElOS19WRkFUID0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0udmZhdCIKIAorZGVmIHNwbGl0X292ZXJsYXlzKGQsIG91dCwgdmVyPU5vbmUpOgorICAgIGR0cyA9IGQuZ2V0VmFyKCJLRVJORUxfREVWSUNFVFJFRSIpCisgICAgaWYgb3V0OgorICAgICAgICBvdmVybGF5cyA9IG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KCdcUytcLW92ZXJsYXlcLmR0YiQnLCBkdHMsIGQpCisgICAgICAgIG92ZXJsYXlzID0gb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoJ1xTK1wuZHRibyQnLCBvdmVybGF5cywgZCkKKyAgICBlbHNlOgorICAgICAgICBvdmVybGF5cyA9IG9lLnV0aWxzLnN0cl9maWx0ZXIoJ1xTK1wtb3ZlcmxheVwuZHRiJCcsIGR0cywgZCkgKyBcCisgICAgICAgICAgICAgICAgICAgIiAiICsgb2UudXRpbHMuc3RyX2ZpbHRlcignXFMrXC5kdGJvJCcsIGR0cywgZCkKKworICAgIHJldHVybiBvdmVybGF5cworCiBJTUFHRV9DTURfcnBpLXNkaW1nICgpIHsKIAogCSMgQWxpZ24gcGFydGl0aW9ucwpAQCAtODYsNyArOTYsNyBAQAogCWVjaG8gIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCBCb290IHBhcnRpdGlvbiAke0JPT1RfU1BBQ0VfQUxJR05FRH0gS2lCIGFuZCBSb290RlMgJFJPT1RGU19TSVpFIEtpQiIKIAogCSMgQ2hlY2sgaWYgd2UgYXJlIGJ1aWxkaW5nIHdpdGggZGV2aWNlIHRyZWUgc3VwcG9ydAotCURUUz0iJHtAZ2V0X2R0cyhkKX0iCisJRFRTPSIke0tFUk5FTF9ERVZJQ0VUUkVFfSIKIAogCSMgSW5pdGlhbGl6ZSBzZGNhcmQgaW1hZ2UgZmlsZQogCWRkIGlmPS9kZXYvemVybyBvZj0ke1NESU1HfSBicz0xMDI0IGNvdW50PTAgc2Vlaz0ke1NESU1HX1NJWkV9CkBAIC0xMjYsMTYgKzEzNiwxMyBAQAogCQkJbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0tJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IDo6b3ZlcmxheXMvJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9CiAJCWRvbmUKIAlmaQotCWNhc2UgIiR7S0VSTkVMX0lNQUdFVFlQRX0iIGluCi0JInVJbWFnZSIpCisgICAgICAgIGlmIFsgIiR7UlBJX1VTRV9VX0JPT1R9IiA9ICIxIiBdOyB0aGVuCiAJCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS91LWJvb3QuYmluIDo6JHtTRElNR19LRVJORUxJTUFHRX0KLQkJbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0ke0tFUk5FTF9JTklUUkFNRlN9LSR7TUFDSElORX0uYmluIDo6dUltYWdlCisJCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9JHtLRVJORUxfSU5JVFJBTUZTfS0ke01BQ0hJTkV9LmJpbiA6OiR7S0VSTkVMX0lNQUdFVFlQRX0KIAkJbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9L2Jvb3Quc2NyIDo6Ym9vdC5zY3IKLQkJOzsKLQkqKQorCWVsc2UKIAkJbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0ke0tFUk5FTF9JTklUUkFNRlN9LSR7TUFDSElORX0uYmluIDo6JHtTRElNR19LRVJORUxJTUFHRX0KLQkJOzsKLQllc2FjCisJZmkKIAogCWlmIFsgLW4gJHtGQVRQQVlMT0FEfSBdIDsgdGhlbgogCQllY2hvICJDb3B5aW5nIHBheWxvYWQgaW50byBWRkFUIgpAQCAtMTUwLDIzICsxNTcsMTkgQEAKIAltY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC12ICR7V09SS0RJUn0vaW1hZ2UtdmVyc2lvbi1pbmZvIDo6CiAKICAgICAgICAgIyBEZXBsb3kgdmZhdCBwYXJ0aXRpb24gKGZvciB1LWJvb3QgY2FzZSBvbmx5KQotICAgICAgICBjYXNlICIke0tFUk5FTF9JTUFHRVRZUEV9IiBpbgotICAgICAgICAidUltYWdlIikKKyAgICAgICAgaWYgWyAiJHtSUElfVVNFX1VfQk9PVH0iID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgICAgICBjcCAke1dPUktESVJ9L2Jvb3QuaW1nICR7SU1HREVQTE9ZRElSfS8ke1NESU1HX1ZGQVR9CiAgICAgICAgICAgICAgICAgbG4gLXNmICR7U0RJTUdfVkZBVH0gJHtTRElNR19MSU5LX1ZGQVR9Ci0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBlc2FjCisgICAgICAgIGZpCiAKIAkjIEJ1cm4gUGFydGl0aW9ucwotCWRkIGlmPSR7V09SS0RJUn0vYm9vdC5pbWcgb2Y9JHtTRElNR30gY29udj1ub3RydW5jIHNlZWs9MSBicz0kKGV4cHIgJHtJTUFHRV9ST09URlNfQUxJR05NRU5UfSBcKiAxMDI0KSAmJiBzeW5jICYmIHN5bmMKKwlkZCBpZj0ke1dPUktESVJ9L2Jvb3QuaW1nIG9mPSR7U0RJTUd9IGNvbnY9bm90cnVuYyBzZWVrPTEgYnM9JChleHByICR7SU1BR0VfUk9PVEZTX0FMSUdOTUVOVH0gXCogMTAyNCkKIAkjIElmIFNESU1HX1JPT1RGU19UWVBFIGlzIGEgLnh6IGZpbGUgdXNlIHh6Y2F0CiAJaWYgZWNobyAiJHtTRElNR19ST09URlNfVFlQRX0iIHwgZWdyZXAgLXEgIipcLnh6IgogCXRoZW4KLQkJeHpjYXQgJHtTRElNR19ST09URlN9IHwgZGQgb2Y9JHtTRElNR30gY29udj1ub3RydW5jIHNlZWs9MSBicz0kKGV4cHIgMTAyNCBcKiAke0JPT1RfU1BBQ0VfQUxJR05FRH0gKyAke0lNQUdFX1JPT1RGU19BTElHTk1FTlR9IFwqIDEwMjQpICYmIHN5bmMgJiYgc3luYworCQl4emNhdCAke1NESU1HX1JPT1RGU30gfCBkZCBvZj0ke1NESU1HfSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPSQoZXhwciAxMDI0IFwqICR7Qk9PVF9TUEFDRV9BTElHTkVEfSArICR7SU1BR0VfUk9PVEZTX0FMSUdOTUVOVH0gXCogMTAyNCkKIAllbHNlCi0JCWRkIGlmPSR7U0RJTUdfUk9PVEZTfSBvZj0ke1NESU1HfSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPSQoZXhwciAxMDI0IFwqICR7Qk9PVF9TUEFDRV9BTElHTkVEfSArICR7SU1BR0VfUk9PVEZTX0FMSUdOTUVOVH0gXCogMTAyNCkgJiYgc3luYyAmJiBzeW5jCisJCWRkIGlmPSR7U0RJTUdfUk9PVEZTfSBvZj0ke1NESU1HfSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPSQoZXhwciAxMDI0IFwqICR7Qk9PVF9TUEFDRV9BTElHTkVEfSArICR7SU1BR0VfUk9PVEZTX0FMSUdOTUVOVH0gXCogMTAyNCkKIAlmaQogCiAJIyBPcHRpb25hbGx5IGFwcGx5IGNvbXByZXNzaW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgppbmRleCBiZWE1YTY1Li5iYmRjZTE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKQEAgLTEyLDMgKzEyLDEyIEBACiAjIEFkZGl0aW9uYWwgbGljZW5zZSBkaXJlY3Rvcmllcy4KIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vZmlsZXMvY3VzdG9tLWxpY2Vuc2VzIgogCisjIFRoZSBkeW5hbWljLWxheWVycyBkaXJlY3RvcnkgaG9zdHMgdGhlIGV4dGVuc2lvbnMgYW5kIGxheWVyIHNwZWNpZmljCisjIG1vZGlmaWNhdGlvbnMuCisjCisjIFRoZSAuYmJhcHBlbmQgYW5kIC5iYiBmaWxlcyBhcmUgaW5jbHVkZWQgaWYgdGhlIHJlc3BlY3RpdmUgbGF5ZXIKKyMgY29sbGVjdGlvbiBpcyBhdmFpbGFibGUuCitCQkZJTEVTICs9ICIke0AnICcuam9pbignJHtMQVlFUkRJUn0vZHluYW1pYy1sYXllcnMvJXMvcmVjaXBlcyovKi8qLmJiYXBwZW5kJyAlIGxheWVyIFwKKyAgICAgICAgICAgICAgIGZvciBsYXllciBpbiBCQkZJTEVfQ09MTEVDVElPTlMuc3BsaXQoKSl9IgorQkJGSUxFUyArPSAiJHtAJyAnLmpvaW4oJyR7TEFZRVJESVJ9L2R5bmFtaWMtbGF5ZXJzLyVzL3JlY2lwZXMqLyovKi5iYicgJSBsYXllciBcCisgICAgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gQkJGSUxFX0NPTExFQ1RJT05TLnNwbGl0KCkpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jCmluZGV4IDdlZDEwODguLjY4ODIyN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwpAQCAtNDEsNyArNDEsMTcgQEAKICAgICBvdmVybGF5cy9waTMtbWluaXVhcnQtYnQuZHRibyBcCiAgICAgb3ZlcmxheXMvdmM0LWttcy12M2QuZHRibyBcCiAgICAgIgotS0VSTkVMX0lNQUdFVFlQRSA/PSAiSW1hZ2UiCisKKyMgQnkgZGVmYXVsdDoKKyMKKyMgKiBXaGVuIHUtYm9vdCBpcyBkaXNhYmxlZCB1c2UgdGhlICJJbWFnZSIgZm9ybWF0IHdoaWNoIGNhbiBiZSBkaXJlY3RseSBsb2FkZWQKKyMgICBieSB0aGUgcnBpIGZpcm13YXJlLgorIworIyAqIFdoZW4gdS1ib290IGlzIGVuYWJsZWQgdXNlIHRoZSAidUltYWdlIiBmb3JtYXQgYW5kIHRoZSAiYm9vdG0iIGNvbW1hbmQKKyMgICB3aXRoaW4gdS1ib290IHRvIGxvYWQgdGhlIGtlcm5lbC4KK0tFUk5FTF9CT09UQ01EID8/PSAiYm9vdG0iCitLRVJORUxfSU1BR0VUWVBFX1VCT09UID8/PSAidUltYWdlIgorS0VSTkVMX0lNQUdFVFlQRSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1JQSV9VU0VfVV9CT09UJywgJzEnLCAnJHtLRVJORUxfSU1BR0VUWVBFX1VCT09UfScsICdJbWFnZScsIGQpfSIKIAogTUFDSElORV9GRUFUVVJFUyArPSAiYXBtIHVzYmhvc3Qga2V5Ym9hcmQgdmZhdCBleHQyIHNjcmVlbiB0b3VjaHNjcmVlbiBhbHNhIGJsdWV0b290aCB3aWZpIHNkaW8iCiAKQEAgLTgzLDcgKzkzLDcgQEAKIAogSU1BR0VfQk9PVF9GSUxFUyA/PSAiYmNtMjgzNS1ib290ZmlsZXMvKiBcCiAgICAgICAgICAgICAgICAgICR7QG1ha2VfZHRiX2Jvb3RfZmlsZXMoZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0tFUk5FTF9JTUFHRVRZUEUnLCAndUltYWdlJywgXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUlBJX1VTRV9VX0JPT1QnLCAnMScsIFwKICAgICAgICAgICAgICAgICAgICAgJyR7S0VSTkVMX0lNQUdFVFlQRX0gdS1ib290LmJpbjske1NESU1HX0tFUk5FTElNQUdFfSBib290LnNjcicsIFwKICAgICAgICAgICAgICAgICAgICAgJyR7S0VSTkVMX0lNQUdFVFlQRX07JHtTRElNR19LRVJORUxJTUFHRX0nLCBkKX0gXAogICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZgppbmRleCBlM2QxMWYyLi5lYmM5ZjM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKQEAgLTMxLDYgKzMxLDcgQEAKICAgICBvdmVybGF5cy9waTMtZGlzYWJsZS1idC5kdGJvIFwKICAgICBvdmVybGF5cy9waTMtbWluaXVhcnQtYnQuZHRibyBcCiAgICAgb3ZlcmxheXMvdmM0LWttcy12M2QuZHRibyBcCisgICAgb3ZlcmxheXMvdmM0LWZrbXMtdjNkLmR0Ym8gXAogICAgICIKIAogU0VSSUFMX0NPTlNPTEUgPz0gIjExNTIwMCB0dHlTMCIKQEAgLTM4LDMgKzM5LDggQEAKIAogVUJPT1RfTUFDSElORSA9ICJycGlfM19jb25maWciCiBNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgdmM0Z3JhcGhpY3MiCisKKyMgV2hlbiB1LWJvb3QgaXMgZW5hYmxlZCB3ZSBuZWVkIHRvIHVzZSB0aGUgIkltYWdlIiBmb3JtYXQgYW5kIHRoZSAiYm9vdGkiCisjIGNvbW1hbmQgdG8gbG9hZCB0aGUga2VybmVsCitLRVJORUxfSU1BR0VUWVBFX1VCT09UID89ICJJbWFnZSIKK0tFUk5FTF9CT09UQ01EID89ICJib290aSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9jb25mLnB5CmluZGV4IGNlMGJiMGEuLmViOThjNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29uZi5weQpAQCAtNTgsOSArNTgsOSBAQAogIyBidWlsdCBkb2N1bWVudHMuCiAjCiAjIFRoZSBzaG9ydCBYLlkgdmVyc2lvbi4KLXZlcnNpb24gPSAncHlybycKK3ZlcnNpb24gPSAncm9ja28nCiAjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCi1yZWxlYXNlID0gJ3B5cm8nCityZWxlYXNlID0gJ3JvY2tvJwogCiAjIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgogIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQKaW5kZXggMzY1YzQ5MC4uMzgwZDk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2V4dHJhLWJ1aWxkLWNvbmZpZy5tZApAQCAtOTUsMTQgKzk1LDIyIEBACiAKICAgICBFTkFCTEVfS0dEQiA9ICIxIgogCisjIyBEaXNhYmxlIHJwaSBib290IGxvZ28KKworVG8gZGlzYWJsZSBycGkgYm9vdCBsb2dvLCBzZXQgdGhpcyB2YXJpYWJsZSBpbiBsb2NhbC5jb25mOgorCisgICAgRElTQUJMRV9SUElfQk9PVF9MT0dPID0gIjEiCisKICMjIEJvb3QgdG8gVS1Cb290CiAKIFRvIGhhdmUgdS1ib290IGxvYWQga2VybmVsIGltYWdlLCBzZXQgaW4geW91ciBsb2NhbC5jb25mOgogCi0gICAgS0VSTkVMX0lNQUdFVFlQRSA9ICJ1SW1hZ2UiCisgICAgUlBJX1VTRV9VX0JPT1QgPSAiMSIKIAotVGhpcyB3aWxsIG1ha2Uga2VybmVsLmltZyBiZSB1LWJvb3QgaW1hZ2Ugd2hpY2ggd2lsbCBsb2FkIHVJbWFnZS4gQnkgZGVmYXVsdCwKLWtlcm5lbC5pbWcgaXMgdGhlIGFjdHVhbCBrZXJuZWwgaW1hZ2UgKGV4LiBJbWFnZSkuCitUaGlzIHdpbGwgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBpbWFnZSBmb3JtYXQgZm9yIHVzZSB3aXRoIHUtYm9vdCBhdXRvbWF0aWNhbGx5LgorRm9yIGZ1cnRoZXIgY3VzdG9taXNhdGlvbiB0aGUgS0VSTkVMX0lNQUdFVFlQRSBhbmQgS0VSTkVMX0JPT1RDTUQgdmFyaWFibGVzIGNhbgorYmUgb3ZlcnJpZGRlbiB0byBzZWxlY3QgdGhlIGV4YWN0IGtlcm5lbCBpbWFnZSB0eXBlIChlZy4gekltYWdlKSBhbmQgdS1ib290Citjb21tYW5kIChlZy4gYm9vdHopIHRvIGJlIHVzZWQuCiAKICMjIEltYWdlIHdpdGggSW5pdHJhbWZzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvYmNtMjgzNS1ib290ZmlsZXMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL2JjbTI4MzUtYm9vdGZpbGVzLmJiCmluZGV4IGIyNzllMTUuLmExMTUwMzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvYmNtMjgzNS1ib290ZmlsZXMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9iY20yODM1LWJvb3RmaWxlcy5iYgpAQCAtOSw3ICs5LDcgQEAKIAogUkRFUEVORFNfJHtQTn0gPSAicnBpLWNvbmZpZyIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBTID0gIiR7UlBJRldfU30vYm9vdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKaW5kZXggYjNjNTA4NC4uY2E0MTYwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCkBAIC01LDcgKzUsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBTUkNSRVYgPSAiNjQ4ZmZjNDcwODI0YzQzZWIwZDE2YzQ4NWY0YzI0ODE2YjMyY2Q2ZiIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9FdmlscGF1bC9SUGktY29uZmlnLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciBcCkBAIC0yMSw3ICsyMSw4IEBACiBQSVRGVDM1cj0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGl0ZnQzNXIiLCAiMSIsICIwIiwgZCl9IgogCiBWQzRHUkFQSElDUz0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IgotCitWQzREVEJPX3Jhc3BiZXJyeXBpMy02NCA9ICJ2YzQtZmttcy12M2QiCitWQzREVEJPID89ICJ2YzQta21zLXYzZCIKIGluaGVyaXQgZGVwbG95CiAKIGRvX2RlcGxveSgpIHsKQEAgLTExNCw3ICsxMTUsNyBAQAogICAgICMgVkM0IEdyYXBoaWNzIHN1cHBvcnQKICAgICBpZiBbICIke1ZDNEdSQVBISUNTfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBlY2hvICIjIEVuYWJsZSBWQzQgR3JhcGhpY3MiID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0Ci0gICAgICAgIGVjaG8gImR0b3ZlcmxheT12YzQta21zLXYzZCwke1ZDNF9DTUFfU0laRX0iID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIGVjaG8gImR0b3ZlcmxheT0ke1ZDNERUQk99LCR7VkM0X0NNQV9TSVpFfSIgPj4gJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQogCiAgICAgIyBXYXZlc2hhcmUgIkMiIDEwMjR4NjAwIDciIFJldjIuMSBJUFMgY2FwYWNpdGl2ZSB0b3VjaCAoaHR0cDovL3d3dy53YXZlc2hhcmUuY29tLzdpbmNoLUhETUktTENELUMuaHRtKQpAQCAtMTI5LDYgKzEzMCwxMiBAQAogfQogCiBkb19kZXBsb3lfYXBwZW5kX3Jhc3BiZXJyeXBpMy02NCgpIHsKKyAgICBlY2hvICIjIGhhdmUgYSBwcm9wZXJseSBzaXplZCBpbWFnZSIgPj4gJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICBlY2hvICJkaXNhYmxlX292ZXJzY2FuPTEiID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisKKyAgICBlY2hvICIjIEVuYWJsZSBhdWRpbyAobG9hZHMgc25kX2JjbTI4MzUpIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGVjaG8gImR0cGFyYW09YXVkaW89b24iID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisKICAgICAjIERldmljZSBUcmVlIHN1cHBvcnQKICAgICBlY2hvICIjIExvYWQgY29ycmVjdCBEZXZpY2UgVHJlZSBmb3IgQWFyY2g2NCIgPj4ke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAogICAgIGVjaG8gImRldmljZV90cmVlPWJjbTI3MTAtcnBpLTMtYi5kdGIiID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9maWxlcy9ib290LmNtZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9maWxlcy9ib290LmNtZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4NDUyZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvZmlsZXMvYm9vdC5jbWQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWZkdCBhZGRyICR7ZmR0X2FkZHJ9ICYmIGZkdCBnZXQgdmFsdWUgYm9vdGFyZ3MgL2Nob3NlbiBib290YXJncwotZmF0bG9hZCBtbWMgMDoxICR7a2VybmVsX2FkZHJfcn0gdUltYWdlCi1ib290bSAke2tlcm5lbF9hZGRyX3J9IC0gJHtmZHRfYWRkcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9maWxlcy9ib290LmNtZC5pbiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9maWxlcy9ib290LmNtZC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDU0Y2QwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL2ZpbGVzL2Jvb3QuY21kLmluCkBAIC0wLDAgKzEsMyBAQAorZmR0IGFkZHIgJHtmZHRfYWRkcn0gJiYgZmR0IGdldCB2YWx1ZSBib290YXJncyAvY2hvc2VuIGJvb3RhcmdzCitmYXRsb2FkIG1tYyAwOjEgJHtrZXJuZWxfYWRkcl9yfSBAQEtFUk5FTF9JTUFHRVRZUEVAQAorQEBLRVJORUxfQk9PVENNREBAICR7a2VybmVsX2FkZHJfcn0gLSAke2ZkdF9hZGRyfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL3JwaS11LWJvb3Qtc2NyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL3JwaS11LWJvb3Qtc2NyLmJiCmluZGV4IDQ5MzZkY2YuLjM0NTczMDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9ycGktdS1ib290LXNjci5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvcnBpLXUtYm9vdC1zY3IuYmIKQEAgLTEsMTMgKzEsMTYgQEAKIFNVTU1BUlkgPSAiVS1ib290IGJvb3Qgc2NyaXB0cyBmb3IgUmFzcGJlcnJ5IFBpIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLUNPTVBBVElCTEVfTUFDSElORSA9ICJycGkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKIERFUEVORFMgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgogCi1TUkNfVVJJID0gImZpbGU6Ly9ib290LmNtZCIKK1NSQ19VUkkgPSAiZmlsZTovL2Jvb3QuY21kLmluIgogCiBkb19jb21waWxlKCkgeworICAgIHNlZCAtZSAncy9AQEtFUk5FTF9JTUFHRVRZUEVAQC8ke0tFUk5FTF9JTUFHRVRZUEV9LycgXAorICAgICAgICAtZSAncy9AQEtFUk5FTF9CT09UQ01EQEAvJHtLRVJORUxfQk9PVENNRH0vJyBcCisgICAgICAgICIke1dPUktESVJ9L2Jvb3QuY21kLmluIiA+ICIke1dPUktESVJ9L2Jvb3QuY21kIgogICAgIG1raW1hZ2UgLUEgYXJtIC1UIHNjcmlwdCAtQyBub25lIC1uICJCb290IHNjcmlwdCIgLWQgIiR7V09SS0RJUn0vYm9vdC5jbWQiIGJvb3Quc2NyCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kCmluZGV4IDk1NmQ3NzYuLjAzZWZkNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfJS5iYmFwcGVuZApAQCAtMSw2ICsxLDYgQEAKIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKIAotU1JDX1VSSV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiBcCitCQ01fQlRfU09VUkNFUyA9ICAiIFwKICAgICBmaWxlOi8vQkNNNDM0MzBBMS5oY2QgXAogICAgIGZpbGU6Ly8wMDAxLWJjbTQzeHgtQWRkLWJjbTQzeHgtM3dpcmUtdmFyaWFudC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDItYmNtNDN4eC1UaGUtVUFSVC1zcGVlZC1tdXN0LWJlLXJlc2V0LWFmdGVyLXRoZS1maXJtdy5wYXRjaCBcCkBAIC05LDcgKzksNyBAQAogICAgIGZpbGU6Ly9icmNtNDM0Mzguc2VydmljZSBcCiAgICAgIgogCi1kb19pbnN0YWxsX2FwcGVuZF9yYXNwYmVycnlwaTMoKSB7CitlbmFibGVfYmNtX2JsdWV0b290aCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0vbGliL2Zpcm13YXJlL2JyY20vCiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vQkNNNDM0MzBBMS5oY2QgJHtEfS9saWIvZmlybXdhcmUvYnJjbS9CQ000MzQzMEExLmhjZAogCkBAIC0xOSw4ICsxOSwzMCBAQAogICAgIGZpCiB9CiAKLUZJTEVTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiIFwKK0JDTV9CVF9GSVJNV0FSRSA9ICAiIFwKICAgICAvbGliL2Zpcm13YXJlL2JyY20vQkNNNDM0MzBBMS5oY2QgXAogICAgICIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiIGJyY200MzQzOC5zZXJ2aWNlIgorQkNNX0JUX1NFUlZJQ0UgPSAgIiBicmNtNDM0Mzguc2VydmljZSIKKworIyBmb3IgcmFzcGJlcnJ5cGkzCitTUkNfVVJJX2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX1NPVVJDRVN9IgorCitkb19pbnN0YWxsX2FwcGVuZF9yYXNwYmVycnlwaTMoKSB7CisgICAgZW5hYmxlX2JjbV9ibHVldG9vdGgKK30KKworRklMRVNfJHtQTn1fYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgJHtCQ01fQlRfRklSTVdBUkV9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn1fYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgJHtCQ01fQlRfU0VSVklDRX0iCisKKyMgZm9yIHJhc3BiZXJyeXBpMC13aWZpCitTUkNfVVJJX2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfU09VUkNFU30iCisKK2RvX2luc3RhbGxfYXBwZW5kX3Jhc3BiZXJyeXBpMC13aWZpKCkgeworICAgIGVuYWJsZV9iY21fYmx1ZXRvb3RoCit9CisKK0ZJTEVTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfRklSTVdBUkV9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn1fYXBwZW5kX3Jhc3BiZXJyeXBpMC13aWZpID0gIiAke0JDTV9CVF9TRVJWSUNFfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS10ZXN0LWltYWdlLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLXRlc3QtaW1hZ2UuYmIKaW5kZXggYjU2MDJhNi4uYzhkYzQzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLXRlc3QtaW1hZ2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLXRlc3QtaW1hZ2UuYmIKQEAgLTEsNCArMSw2IEBACiAjIEJhc2UgdGhpcyBpbWFnZSBvbiBycGktYmFzaWMtaW1hZ2UKIGluY2x1ZGUgcnBpLWJhc2ljLWltYWdlLmJiCiAKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKKwogSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHBhY2thZ2Vncm91cC1ycGktdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtcnBpLXRlc3QuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXJwaS10ZXN0LmJiCmluZGV4IDI5ZTk5NWUuLjAyOWMxOGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtcnBpLXRlc3QuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgpAQCAtNCw4ICs0LDEzIEBACiAKIGluaGVyaXQgcGFja2FnZWdyb3VwCiAKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKKworT01YUExBWUVSX3JwaSA9ICJvbXhwbGF5ZXIiCitPTVhQTEFZRVJfcnBpX2FhcmNoNjQgPSAiIgorCiBSREVQRU5EU18ke1BOfSA9ICJcCi0gICAgb214cGxheWVyIFwKKyAgICAke09NWFBMQVlFUn0gXAogICAgIGJjbTI4MzUtdGVzdHMgXAogICAgIHdpcmluZ3BpIFwKICAgICBycGlvIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjUyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvYmNtMjgzNS9iY20yODM1XzEuNTIuYmIKaW5kZXggOGU0MWM2MS4uZWVmNmFmZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvYmNtMjgzNS9iY20yODM1XzEuNTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvYmNtMjgzNS9iY20yODM1XzEuNTIuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmFpcnNwYXljZS5jb20vbWlrZW0vYmNtMjgzNS9iY20yODM1LSR7UFZ9LnRhci5neiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlci5pbmMKaW5kZXggYTU0ODk1Ny4uM2NiNzljYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXIuaW5jCkBAIC0yLDcgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhcmZhdGEvcGktYmxhc3Rlci8iCiBTRUNUSU9OID0gImRldmVsL2xpYnMiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDtiZWdpbmxpbmU9MjEyO2VuZGxpbmU9MjM5O21kNT1hMDEyODY4ZWY1ZjgzYjlmMjU3YWYyNTNkN2NiMDdhMyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDtiZWdpbmxpbmU9MjI1O2VuZGxpbmU9MjUyO21kNT1hMDEyODY4ZWY1ZjgzYjlmMjU3YWYyNTNkN2NiMDdhMyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NhcmZhdGEvcGktYmxhc3RlciBcCiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaW5pdHNjcmlwdC1sc2ItZGVwZW5kZW5jeS5wYXRjaCBcCkBAIC0xNiw2ICsxNiw2IEBACiBJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiJHtQTn0uYm9vdC5zaCIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gImRlZmF1bHRzIDE1IDg1IgogCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicmFzcGJlcnJ5cGkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyX2dpdC5iYgppbmRleCBhYzgxMmFiLi43MzBmOWQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKQEAgLTEsMyArMSwzIEBACiByZXF1aXJlIHBpLWJsYXN0ZXIuaW5jCiAKLVNSQ1JFViA9ICI5ZjQ1ZWIyM2E4YTNiMmQxYzA4ZDA4YTZkNjhmMjA2ZmU5MWVjZjRjIgorU1JDUkVWID0gIjEwMzVhZDdkZmZiMjcwYzQwZWVjMWJiM2E2NTQxNzFhNzU1ZmJhOTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbnNlLWhhdF8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTkwYTI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gbW9kdWxlIHRvIGNvbnRyb2wgdGhlIFJhc3BiZXJyeSBQaSBTZW5zZSBIQVQgdXNlZCBpbiB0aGUgQXN0cm8gUGkgbWlzc2lvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL3B5dGhvbi1zZW5zZS1oYXQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS50eHQ7bWQ1PWQ4MGZlMzEyZTFmZjVmYmQ5NzM2OWIwOTNiZjIxY2RhIgotCi1TUkNOQU1FID0gInNlbnNlLWhhdCIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzEyMTdmMTVlYTk2MzA0MGYwNmUyZjUwNzIyMTg2Y2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzZjNzY3MDdjMGVhNTE0ZTRiMGYxZjk2ZjFiNWI3OTc1NTg3NTg5MWFhZTAzN2RmNzQzNGI2YWFkN2I5ZGJjYSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1ERVBFTkRTICs9ICIgXAotICAgIGpwZWcgXAotICAgIHpsaWIgXAotICAgIGZyZWV0eXBlIFwKLSAgICAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHB5dGhvbi1udW1weSBcCi0gICAgcHl0aG9uLXJ0aW11IFwKLSAgICBweXRob24taW1hZ2luZyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbnNlLWhhdF8yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2M0ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4yLjAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJQeXRob24gbW9kdWxlIHRvIGNvbnRyb2wgdGhlIFJhc3BiZXJyeSBQaSBTZW5zZSBIQVQgdXNlZCBpbiB0aGUgQXN0cm8gUGkgbWlzc2lvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL3B5dGhvbi1zZW5zZS1oYXQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS50eHQ7bWQ1PWQ4MGZlMzEyZTFmZjVmYmQ5NzM2OWIwOTNiZjIxY2RhIgorCitpbmhlcml0IHNldHVwdG9vbHMgcHlwaQorCitQWVBJX1BBQ0tBR0UgPSAic2Vuc2UtaGF0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjk5MjkyNTBjYjcyMzQ5YThhODJlZGYyNTg0YjFkODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAwMDk5OGQwNDJkOTZlZDcyMmQ0NTkzMTJlMWJlYmQwMTA3ZjlmMzAxNWNkMzRiM2U0ZmFiY2FiOWM4MDBhZiIKKworREVQRU5EUyArPSAiIFwKKyAgICBqcGVnIFwKKyAgICB6bGliIFwKKyAgICBmcmVldHlwZSBcCisgICAgIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBweXRob24tbnVtcHkgXAorICAgIHB5dGhvbi1ydGltdSBcCisgICAgcHl0aG9uLWltYWdpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA4ZWE5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIG1vZHVsZSB0byBjb250cm9sIFJhc3BiZXJyeSBQaSBHUElPIGNoYW5uZWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3Jhc3BiZXJyeS1ncGlvLXB5dGhvbi8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS50eHQ7bWQ1PTliOTU2MzBhNjQ4OTY2YjE0MmYxYTBkY2VhMDAxY2I3IgotCi1TUkNOQU1FID0gIlJQaS5HUElPIgotCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICBodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9SL1JQaS5HUElPLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbmVzdGVkLWZ1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjlkYjg2ZmQ1ZjNiYWU4NzJkZTlkYmIwNjhlZTBiMDk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyYWNmZjBlZjZiYmUzY2RmNmY0ZGJkZDczZDk2YWRkNTI5NGJiOTRiYWY3ZjUxYzFkOTAxODYxYWYzYzIzOTIiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicmFzcGJlcnJ5cGkiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGZmMDBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaS1ncGlvXzAuNi4zLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0RFU0NSSVBUSU9OID0gIkEgbW9kdWxlIHRvIGNvbnRyb2wgUmFzcGJlcnJ5IFBpIEdQSU8gY2hhbm5lbHMiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcmFzcGJlcnJ5LWdwaW8tcHl0aG9uLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFLnR4dDttZDU9OWI5NTYzMGE2NDg5NjZiMTQyZjFhMGRjZWEwMDFjYjciCisKK1BZUElfUEFDS0FHRSA9ICJSUGkuR1BJTyIKK2luaGVyaXQgcHlwaSBkaXN0dXRpbHMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmVtb3ZlLW5lc3RlZC1mdW5jdGlvbnMucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiZTRhYmUxY2ZiNWVhY2ViZTUzMDc4MDMyMjU2ZWI4MzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTVmYzBlYjVlNDAxOTYzYjZjMGEwMzY1MGRhNmI0MmM0MDA1ZjAyZDk2MmI4MTI0MWQ5NmM5OGQwYTU3ODUxNiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW9fMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW9fMC4xMC4wLmJiCmluZGV4IDFhNmNlZTcuLjk5OGZkYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpb18wLjEwLjAuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIAogaW5oZXJpdCBzZXR1cHRvb2xzCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgIHB5dGhvbi1sb2dnaW5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL3dpcmluZ3BpX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL3dpcmluZ3BpX2dpdC5iYgppbmRleCA3OTUzYTU1Li5mMWIwMWRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGlfZ2l0LmJiCkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1pbml0aWFsLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vd2lyaW5nUGkgLUkke1N9L2RldkxpYiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kX2dpdC5iYgppbmRleCA1NzlhYWNlLi5kMzhiMDJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmRfZ2l0LmJiCkBAIC0xMiw3ICsxMiw3IEBACiAKIFJQUk9WSURFU18ke1BOfSArPSAibGliZ2xlczIgZWdsIGxpYmVnbCIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBTUkNCUkFOQ0ggPSAibWFzdGVyIgogU1JDRk9SSyA9ICJyYXNwYmVycnlwaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYwppbmRleCBhMWM4ZDI5Li42NjhjNWNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy92Yy1ncmFwaGljcy92Yy1ncmFwaGljcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MuaW5jCkBAIC00LDcgKzQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ODZlNTNmNWY1OTA5ZWU2NjkwMDQxODAyOGRlMTE3ODAiCiAKIFBST1ZJREVTID0gInZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicmFzcGJlcnJ5cGkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKIGluY2x1ZGUgcmVjaXBlcy1ic3AvY29tbW9uL2Zpcm13YXJlLmluYwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZAppbmRleCBmMmNiN2FhLi41NWNmNzAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8lLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXyUuYmJhcHBlbmQKQEAgLTEsMTIgKzEsMTAgQEAKLUVYVFJBX09FQ09ORl9hcHBlbmRfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICcgLS1lbmFibGUtcnBpLWNvbXBvc2l0b3IgV0VTVE9OX05BVElWRV9CQUNLRU5EPXJwaS1iYWNrZW5kLnNvJywgZCl9IgotCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9ycGkgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnZmJkZXYnLCAnJywgZCl9IgogCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14d2F5bGFuZC10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNpbXBsZS1lZ2wtY2xpZW50cyBcCitFWFRSQV9PRUNPTkZfYXBwZW5kX3JwaSA9ICIgXAorICAgIC0tZGlzYWJsZS14d2F5bGFuZC10ZXN0IFwKKyAgICAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIFwKKyAgICAgICAgLS1kaXNhYmxlLXJlc2l6ZS1vcHRpbWl6YXRpb24gXAorICAgICAgICAtLWRpc2FibGUtc2V0dWlkLWluc3RhbGwgXAorICAgICcsIGQpfSBcCiAiCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnJywgJy0tZW5hYmxlLXJwaS1jb21wb3NpdG9yJywgZCl9IgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnLS1kaXNhYmxlLXJlc2l6ZS1vcHRpbWl6YXRpb24nLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICctLWRpc2FibGUtc2V0dWlkLWluc3RhbGwnLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICdXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9cnBpLWJhY2tlbmQuc28nLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNTYyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZgpAQCAtMCwwICsxLDYgQEAKKyMgCitTZWN0aW9uICJEZXZpY2UiCisJSWRlbnRpZmllciAibW9kZXNldCIKKwlEcml2ZXIgIm1vZGVzZXR0aW5nIgorCU9wdGlvbiAiQWNjZWxNZXRob2QiICJOb25lIgorRW5kU2VjdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCmluZGV4IGIzNjFlZWYuLjc5MDJmMjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKQEAgLTQsNyArNCw5IEBACiAgICAgZmlsZTovL3hvcmcuY29uZi5kLzk4LXBpdGZ0LmNvbmYgXAogICAgIGZpbGU6Ly94b3JnLmNvbmYuZC85OS1jYWxpYnJhdGlvbi5jb25mIFwKICIKLQorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3Jhc3BiZXJyeXBpMy02NCA9ICIgXAorICAgIGZpbGU6Ly94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mIFwKKyIKIGRvX2luc3RhbGxfYXBwZW5kX3JwaSAoKSB7CiAgICAgUElURlQ9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInBpdGZ0IiwgIjEiLCAiMCIsIGQpfSIKICAgICBpZiBbICIke1BJVEZUfSIgPSAiMSIgXTsgdGhlbgpAQCAtMTMsNSArMTUsOCBAQAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS94b3JnLmNvbmYuZC85OS1jYWxpYnJhdGlvbi5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvCiAgICAgZmkKIH0KLQorZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsX3Jhc3BiZXJyeXBpMy02NCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3hvcmcuY29uZi5kLzEwLW5vZ2xhbW9yLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8KK30KIEZJTEVTXyR7UE59X3JwaSArPSAiJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mICR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgppbmRleCAwODc5YmNiLi5iOTQ3NjU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS1kZXYuYmIKQEAgLTcsOCArNyw4IEBACiAKIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2xpbnV4LXJhc3BiZXJyeXBpOiIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMSIKLUxJTlVYX1JQSV9ERVZfQlJBTkNIID89ICJycGktNC4xMS55IgorTElOVVhfVkVSU0lPTiA/PSAiNC4xMyIKK0xJTlVYX1JQSV9ERVZfQlJBTkNIID89ICJycGktNC4xMy55IgogCiBTUkNSRVYgPSAiJHtBVVRPUkVWfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9saW51eC5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD0ke0xJTlVYX1JQSV9ERVZfQlJBTkNIfSBcCkBAIC0xNiwxMSArMTYsNiBAQAogIgogcmVxdWlyZSBsaW51eC1yYXNwYmVycnlwaS5pbmMKIAotIyBBIExPQURBRERSIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGEgdUltYWdlIGZvcm1hdCBrZXJuZWwuIFRoaXMgdmFsdWUgaXMgbm90Ci0jIHNldCBieSBkZWZhdWx0IGluIHJwaS00LjgueSBhbmQgbGF0ZXIgYnJhbmNoZXMgc28gd2UgbmVlZCB0byBwcm92aWRlIGl0Ci0jIG1hbnVhbGx5LiBUaGlzIHZhbHVlIHVudXNlZCBpZiBLRVJORUxfSU1BR0VUWVBFIGlzIG5vdCB1SW1hZ2UuCi1LRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9MHgwMDAwODAwMCIKLQogIyBEaXNhYmxlIHZlcnNpb24gY2hlY2sgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGVkaXQgdGhpcyByZWNpcGUgZXZlcnkgdGltZQogIyB1cHN0cmVhbSBidW1wcyB0aGUgdmVyc2lvbgogS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkuaW5jCmluZGV4IDkyNjVkNTUuLmRhMzZjYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYwpAQCAtMSwyNCArMSwyMiBAQAotcmVxdWlyZSBsaW51eC1ycGkuaW5jCi1pbmhlcml0IGxpbnV4LXJhc3BiZXJyeXBpLWJhc2UKLQogREVTQ1JJUFRJT04gPSAiTGludXggS2VybmVsIGZvciBSYXNwYmVycnkgUGkiCiBTRUNUSU9OID0gImtlcm5lbCIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKIAotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCi0gICAgICAgICIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBQRSA9ICIxIgogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAotIyBOT1RFOiBGb3Igbm93IHdlIHB1bGwgaW4gdGhlIGRlZmF1bHQgY29uZmlnIGZyb20gdGhlIFJQaSBrZXJuZWwgR0lUIHRyZWUuCi1LRVJORUxfREVGQ09ORklHX3Jhc3BiZXJyeXBpID89ICJiY21ycGlfZGVmY29uZmlnIgotS0VSTkVMX0RFRkNPTkZJR19yYXNwYmVycnlwaTIgPz0gImJjbTI3MDlfZGVmY29uZmlnIgotS0VSTkVMX0RFRkNPTkZJR19yYXNwYmVycnlwaTMtNjQgPz0gImJjbXJwaTNfZGVmY29uZmlnIgoraW5oZXJpdCBrZXJuZWwgc2l0ZWluZm8KK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0tDT05GSUdfTU9ERSA9ICItLWFsbGRlZmNvbmZpZyIKK0tCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkwLXdpZmkgPz0gImJjbXJwaV9kZWZjb25maWciCitLQlVJTERfREVGQ09ORklHX3Jhc3BiZXJyeXBpID89ICJiY21ycGlfZGVmY29uZmlnIgorS0JVSUxEX0RFRkNPTkZJR19yYXNwYmVycnlwaTIgPz0gImJjbTI3MDlfZGVmY29uZmlnIgorS0JVSUxEX0RFRkNPTkZJR19yYXNwYmVycnlwaTMgPz0gImJjbTI3MDlfZGVmY29uZmlnIgorS0JVSUxEX0RFRkNPTkZJR19yYXNwYmVycnlwaTMtNjQgPz0gImJjbXJwaTNfZGVmY29uZmlnIgogCiAjIENNRExJTkUgZm9yIHJhc3BiZXJyeXBpCiBDTURMSU5FID89ICJkd2Nfb3RnLmxwbV9lbmFibGU9MCBjb25zb2xlPXNlcmlhbDAsMTE1MjAwIHJvb3Q9L2Rldi9tbWNibGswcDIgcm9vdGZzdHlwZT1leHQ0IHJvb3R3YWl0IgpAQCAtMjYsMjAgKzI0LDE0MSBAQAogIyBBZGQgdGhlIGtlcm5lbCBkZWJ1Z2dlciBvdmVyIGNvbnNvbGUga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb24gaWYgZW5hYmxlZAogQ01ETElORV9hcHBlbmQgPSAnICR7QGJhc2VfY29uZGl0aW9uYWwoIkVOQUJMRV9LR0RCIiwgIjEiLCAia2dkYm9jPXNlcmlhbDAsMTE1MjAwIiwgIiIsIGQpfScKIAorIyBEaXNhYmxlIHJwaSBsb2dvIG9uIGJvb3QKK0NNRExJTkVfYXBwZW5kICs9ICcgJHtAYmFzZV9jb25kaXRpb25hbCgiRElTQUJMRV9SUElfQk9PVF9MT0dPIiwgIjEiLCAibG9nby5ub2xvZ28iLCAiIiwgZCl9JworCisjIFlvdSBjYW4gZGVmaW5lIENNRExJTkVfREVCVUcgYXMgImRlYnVnIiBpbiB5b3VyIGxvY2FsLmNvbmYgb3IgZGlzdHJvLmNvbmYKKyMgdG8gZW5hYmxlIGtlcm5lbCBkZWJ1Z2dpbmcuCitDTURMSU5FX0RFQlVHID89ICIiCitDTURMSU5FX2FwcGVuZCA9ICIgJHtDTURMSU5FX0RFQlVHfSIKKworIyBRdWlyayBmb3IgdWRldiBncmVhdGVyIG9yIGVxdWFsIDE0MQogVURFVl9HRV8xNDEgPz0gIjEiCiAKKyMgRW5hYmxlIE9BQkkgY29tcGF0IGZvciBwZW9wbGUgc3R1Y2sgd2l0aCBvYnNvbGV0ZSB1c2Vyc3BhY2UKK0FSTV9LRUVQX09BQkkgPz0gIjEiCisKK0tFUk5FTF9JTklUUkFNRlMgPz0gJyR7QGJhc2VfY29uZGl0aW9uYWwoIklOSVRSQU1GU19JTUFHRV9CVU5ETEUiLCAiMSIsICIxIiwgIiIsIGQpfScKKwogS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGl0ZnQyOHIiLCAic3RtcGUtdHMiLCAiIiwgZCl9IgogCi0jIFNldCBwcm9ncmFtbWF0aWNhbGx5IHNvbWUgdmFyaWFibGVzIGR1cmluZyByZWNpcGUgcGFyc2luZwotIyBTZWUgaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvY3VycmVudC9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCNhbm9ueW1vdXMtcHl0aG9uLWZ1bmN0aW9ucwotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBrZXJuZWx0eXBlID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEUnKQotICAgIGtlcm5lbGR0ID0gZ2V0X2R0cyhkLCBkLmdldFZhcignTElOVVhfVkVSU0lPTicpKQotICAgIGQuc2V0VmFyKCJLRVJORUxfREVWSUNFVFJFRSIsIGtlcm5lbGR0KQorIyBBIExPQURBRERSIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGEgdUltYWdlIGZvcm1hdCBrZXJuZWwuIFRoaXMgdmFsdWUgaXMgbm90CisjIHNldCBieSBkZWZhdWx0IGluIHJwaS00LjgueSBhbmQgbGF0ZXIgYnJhbmNoZXMgc28gd2UgbmVlZCB0byBwcm92aWRlIGl0CisjIG1hbnVhbGx5LiBUaGlzIHZhbHVlIHVudXNlZCBpZiBLRVJORUxfSU1BR0VUWVBFIGlzIG5vdCB1SW1hZ2UuCitLRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9MHgwMDAwODAwMCIKKworIyBTZXQgYSB2YXJpYWJsZSBpbiAuY29uZmlndXJlCisjICQxIC0gQ29uZmlndXJlIHZhcmlhYmxlIHRvIGJlIHNldAorIyAkMiAtIHZhbHVlIFtuL3kvdmFsdWVdCitrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlKCkgeworICAgICMgUmVtb3ZlIHRoZSBjb25maWcKKyAgICBDT05GX1NFRF9TQ1JJUFQ9IiRDT05GX1NFRF9TQ1JJUFQgL0NPTkZJR18kMVsgPV0vZDsiCisgICAgaWYgdGVzdCAiJDIiID0gIm4iCisgICAgdGhlbgorICAgICAgICBlY2hvICIjIENPTkZJR18kMSBpcyBub3Qgc2V0IiA+PiAke0J9Ly5jb25maWcKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIkNPTkZJR18kMT0kMiIgPj4gJHtCfS8uY29uZmlnCisgICAgZmkKIH0KIAotZG9fa2VybmVsX2NvbmZpZ21lX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vYXJjaC8ke0FSQ0h9L2NvbmZpZ3MvJHtLRVJORUxfREVGQ09ORklHfSAke1dPUktESVJ9L2RlZmNvbmZpZyB8fCBkaWUgIk5vIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgJHtNQUNISU5FfSAvICR7S0VSTkVMX0RFRkNPTkZJR30gYXZhaWxhYmxlLiIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIG12IC1mICR7Qn0vLmNvbmZpZyAke0J9Ly5jb25maWcucGF0Y2hlZAorICAgIENPTkZfU0VEX1NDUklQVD0iIgorCisgICAgIyBvYWJpIC8gZWFiaSBzdXBwb3J0CisgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBBRUFCSSB5CisgICAgaWYgWyAiJHtBUk1fS0VFUF9PQUJJfSIgPSAiMSIgXSA7IHRoZW4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBPQUJJX0NPTVBBVCB5CisgICAgZWxzZQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9BQklfQ09NUEFUIG4KKyAgICBmaQorCisgICAgIyBTZXQgY21kbGluZQorICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ01ETElORSAiXCIke0NNRExJTkV9XCIiCisKKyAgICAjIExvY2FsdmVyc2lvbgorICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTE9DQUxWRVJTSU9OICJcIlwiIgorICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTE9DQUxWRVJTSU9OX0FVVE8gbgorCisgICAgIyBVZGV2IHF1aXJrcworICAgICMgTmV3ZXIgdmVyc2lvbnMgb2YgdWRldiBtYW5kYXRlIHRoYXQgc3lzZnMgZG9lc24ndCBoYXZlIGRlcHJlY2F0ZWQgZW50cmllcworICAgIGlmIFsgIiR7VURFVl9HRV8xNDF9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTX0RFUFJFQ0FURUQgbgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTX0RFUFJFQ0FURURfVjIgbgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEhPVFBMVUcgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVFVkVOVF9IRUxQRVJfUEFUSCAiXCJcIiIKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVTklYIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTWVNGUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUFJPQ19GUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVE1QRlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElOT1RJRllfVVNFUiB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU0lHTkFMRkQgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFRNUEZTX1BPU0lYX0FDTCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQkxLX0RFVl9CU0cgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERFVlRNUEZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBERVZUTVBGU19NT1VOVCB5CisgICAgZmkKKworICAgICMgTmV3ZXIgaW5pdHMgbGlrZSBzeXN0ZW1kIG5lZWQgY2dyb3VwIHN1cHBvcnQKKyAgICBpZiBbICIke0tFUk5FTF9FTkFCTEVfQ0dST1VQU30iID0gIjEiIF0gOyB0aGVuCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX1NDSEVEIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfTlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9GUkVFWkVSIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfREVWSUNFIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDUFVTRVRTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBQUk9DX1BJRF9DUFVTRVQgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9DUFVBQ0NUIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBSRVNPVVJDRV9DT1VOVEVSUyB5CisgICAgZmkKKworICAgICMgcm9vdC1vdmVyLW5mcy1vdmVyLXVzYi1ldGggc3VwcG9ydC4gTGltaXRlZCwgYnV0IHNob3VsZCBjb3ZlciBzb21lIGNhc2VzCisgICAgIyBFbmFibGUgdGhpcyBieSBzZXR0aW5nIGEgcHJvcGVyIENNRExJTkVfTkZTUk9PVF9VU0IuCisgICAgaWYgWyAhIC16ICIke0NNRExJTkVfTkZTUk9PVF9VU0J9IiBdOyB0aGVuCisgICAgICAgIG9lbm90ZSAiQ29uZmlndXJpbmcgdGhlIGtlcm5lbCBmb3Igcm9vdC1vdmVyLW5mcy1vdmVyLXVzYi1ldGggd2l0aCBDTURMSU5FICR7Q01ETElORV9ORlNST09UX1VTQn0iCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5FVCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSVBfUE5QIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfR0FER0VUIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfR0FER0VUX1NFTEVDVEVEIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfRVRIIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBORlNfRlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJPT1RfTkZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBST09UX05GUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ01ETElORSAiXCIke0NNRExJTkVfTkZTUk9PVF9VU0J9XCIiCisgICAgZmkKKyAgICBpZiBbICEgLXogIiR7S0VSTkVMX0lOSVRSQU1GU30iIF07IHRoZW4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBCTEtfREVWX0lOSVRSRCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5JVFJBTUZTX1NPVVJDRSAiIgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJEX0daSVAgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9WRVJMQVlfRlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNRVUFTSEZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVQklGU19GUyB5CisgICAgZmkKKyAgICAjIEFjdGl2YXRlIENPTkZJR19MRUdBQ1lfUFRZUworICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTEVHQUNZX1BUWVMgeQorICAgICMgdGhpcyBtb2R1bGUgaXMgYnVpbHQgZXh0ZXJuYWxseSB2aWEgZHJiZC11dGlscworICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQkxLX0RFVl9EUkJEIG4KKworICAgICMgQWN0aXZhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVkM0CisgICAgVkM0R1JBUEhJQ1M9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIjEiLCAiMCIsIGQpfSIKKyAgICBpZiBbICR7VkM0R1JBUEhJQ1N9ID0gIjEiIF07IHRoZW4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJMkNfQkNNMjgzNSB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRFJNIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBEUk1fRkJERVZfRU1VTEFUSU9OIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBEUk1fVkM0IHkKKyAgICBmaQorCisgICAgIyBLZWVwIHRoaXMgdGhlIGxhc3QgbGluZQorICAgICMgUmVtb3ZlIGFsbCBtb2RpZmllZCBjb25maWdzIGFuZCBhZGQgdGhlIHJlc3QgdG8gLmNvbmZpZworICAgIHNlZCAtZSAiJHtDT05GX1NFRF9TQ1JJUFR9IiA8ICcke0J9Ly5jb25maWcucGF0Y2hlZCcgPj4gJyR7Qn0vLmNvbmZpZycKKyAgICBybSAtZiAke0J9Ly5jb25maWcucGF0Y2hlZAorCisgICAgeWVzICcnIHwgb2VfcnVubWFrZSBvbGRjb25maWcKK30KKworZG9fY29tcGlsZV9hcHBlbmRfcmFzcGJlcnJ5cGkzLTY0KCkgeworICAgIGNjX2V4dHJhPSQoZ2V0X2NjX29wdGlvbikKKyAgICBvZV9ydW5tYWtlIGR0YnMgQ0M9IiR7S0VSTkVMX0NDfSAkY2NfZXh0cmEgIiBMRD0iJHtLRVJORUxfTER9IiAke0tFUk5FTF9FWFRSQV9BUkdTfQogfQogCiBkb19pbnN0YWxsX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkvZGVmY29uZmlnIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpL2RlZmNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNiZjMyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkvZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyBEdW1teSBmaWxlIHRvIGdldCB0aHJvdWdoIGRvX2tlcm5lbF9jb25maWdtZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiCmluZGV4IGRmMjhmZGEuLjA2MWU4OTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzQuOS5iYgpAQCAtNiw4ICs2LDMgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9saW51eC5naXQ7YnJhbmNoPXJwaS00LjkueSIKIAogcmVxdWlyZSBsaW51eC1yYXNwYmVycnlwaS5pbmMKLQotIyBBIExPQURBRERSIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGEgdUltYWdlIGZvcm1hdCBrZXJuZWwuIFRoaXMgdmFsdWUgaXMgbm90Ci0jIHNldCBieSBkZWZhdWx0IGluIHJwaS00LjgueSBhbmQgbGF0ZXIgYnJhbmNoZXMgc28gd2UgbmVlZCB0byBwcm92aWRlIGl0Ci0jIG1hbnVhbGx5LiBUaGlzIHZhbHVlIHVudXNlZCBpZiBLRVJORUxfSU1BR0VUWVBFIGlzIG5vdCB1SW1hZ2UuCi1LRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9MHgwMDAwODAwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1ycGkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJwaS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMzgzYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJwaS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTGludXggS2VybmVsIgotU0VDVElPTiA9ICJrZXJuZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKLQotaW5oZXJpdCBrZXJuZWwgc2l0ZWluZm8KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgRW5hYmxlIE9BQkkgY29tcGF0IGZvciBwZW9wbGUgc3R1Y2sgd2l0aCBvYnNvbGV0ZSB1c2Vyc3BhY2UKLUFSTV9LRUVQX09BQkkgPz0gIjEiCi0KLSMgUXVpcmsgZm9yIHVkZXYgZ3JlYXRlciBvciBlcXVhbCAxNDEKLVVERVZfR0VfMTQxID89ICIxIgotCi0jIFlvdSBjYW4gZGVmaW5lIENNRExJTkVfREVCVUcgYXMgImRlYnVnIiBpbiB5b3VyIGxvY2FsLmNvbmYgb3IgZGlzdHJvLmNvbmYKLSMgdG8gZW5hYmxlIGtlcm5lbCBkZWJ1Z2dpbmcuCi1DTURMSU5FX0RFQlVHID89ICIiCi1DTURMSU5FX2FwcGVuZCA9ICIgJHtDTURMSU5FX0RFQlVHfSIKLQotS0VSTkVMX0lOSVRSQU1GUyA/PSAnJHtAYmFzZV9jb25kaXRpb25hbCgiSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSIsICIxIiwgIjEiLCAiIiwgZCl9JwotCi0jIFNldCBhIHZhcmlhYmxlIGluIC5jb25maWd1cmUKLSMgJDEgLSBDb25maWd1cmUgdmFyaWFibGUgdG8gYmUgc2V0Ci0jICQyIC0gdmFsdWUgW24veS92YWx1ZV0KLWtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUoKSB7Ci0gICAgIyBSZW1vdmUgdGhlIGNvbmZpZwotICAgIENPTkZfU0VEX1NDUklQVD0iJENPTkZfU0VEX1NDUklQVCAvQ09ORklHXyQxWyA9XS9kOyIKLSAgICBpZiB0ZXN0ICIkMiIgPSAibiIKLSAgICB0aGVuCi0gICAgICAgIGVjaG8gIiMgQ09ORklHXyQxIGlzIG5vdCBzZXQiID4+ICR7Qn0vLmNvbmZpZwotICAgIGVsc2UKLSAgICAgICAgZWNobyAiQ09ORklHXyQxPSQyIiA+PiAke0J9Ly5jb25maWcKLSAgICBmaQotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIENsZWFuIC5jb25maWcKLSAgICBlY2hvICIiID4gJHtCfS8uY29uZmlnCi0gICAgQ09ORl9TRURfU0NSSVBUPSIiCi0KLSAgICAjIG9hYmkgLyBlYWJpIHN1cHBvcnQKLSAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEFFQUJJIHkKLSAgICBpZiBbICIke0FSTV9LRUVQX09BQkl9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9BQklfQ09NUEFUIHkKLSAgICBlbHNlCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgT0FCSV9DT01QQVQgbgotICAgIGZpCi0KLSAgICAjIFNldCBjbWRsaW5lCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDTURMSU5FICJcIiR7Q01ETElORX1cIiIKLQotICAgICMgTG9jYWx2ZXJzaW9uCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMT0NBTFZFUlNJT04gIlwiXCIiCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMT0NBTFZFUlNJT05fQVVUTyBuCi0KLSAgICAjIFVkZXYgcXVpcmtzCi0gICAgIyBOZXdlciB2ZXJzaW9ucyBvZiB1ZGV2IG1hbmRhdGUgdGhhdCBzeXNmcyBkb2Vzbid0IGhhdmUgZGVwcmVjYXRlZCBlbnRyaWVzCi0gICAgaWYgWyAiJHtVREVWX0dFXzE0MX0iID0gIjEiIF0gOyB0aGVuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1lTRlNfREVQUkVDQVRFRCBuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1lTRlNfREVQUkVDQVRFRF9WMiBuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSE9UUExVRyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVUVWRU5UX0hFTFBFUl9QQVRIICJcIlwiIgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVOSVggeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBQUk9DX0ZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBUTVBGUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5PVElGWV9VU0VSIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTSUdOQUxGRCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVE1QRlNfUE9TSVhfQUNMIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBCTEtfREVWX0JTRyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgREVWVE1QRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERFVlRNUEZTX01PVU5UIHkKLSAgICBmaQotCi0gICAgIyBOZXdlciBpbml0cyBsaWtlIHN5c3RlbWQgbmVlZCBjZ3JvdXAgc3VwcG9ydAotICAgIGlmIFsgIiR7S0VSTkVMX0VOQUJMRV9DR1JPVVBTfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfU0NIRUQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUFMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9OUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX0ZSRUVaRVIgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9ERVZJQ0UgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENQVVNFVFMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFBST0NfUElEX0NQVVNFVCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX0NQVUFDQ1QgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJFU09VUkNFX0NPVU5URVJTIHkKLSAgICBmaQotCi0gICAgIyByb290LW92ZXItbmZzLW92ZXItdXNiLWV0aCBzdXBwb3J0LiBMaW1pdGVkLCBidXQgc2hvdWxkIGNvdmVyIHNvbWUgY2FzZXMKLSAgICAjIEVuYWJsZSB0aGlzIGJ5IHNldHRpbmcgYSBwcm9wZXIgQ01ETElORV9ORlNST09UX1VTQi4KLSAgICBpZiBbICEgLXogIiR7Q01ETElORV9ORlNST09UX1VTQn0iIF07IHRoZW4KLSAgICAgICAgb2Vub3RlICJDb25maWd1cmluZyB0aGUga2VybmVsIGZvciByb290LW92ZXItbmZzLW92ZXItdXNiLWV0aCB3aXRoIENNRExJTkUgJHtDTURMSU5FX05GU1JPT1RfVVNCfSIKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJTkVUIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJUF9QTlAgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9HQURHRVQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9HQURHRVRfU0VMRUNURUQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9FVEggeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE5GU19GUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUk9PVF9ORlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJPT1RfTkZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDTURMSU5FICJcIiR7Q01ETElORV9ORlNST09UX1VTQn1cIiIKLSAgICBmaQotICAgIGlmIFsgISAteiAiJHtLRVJORUxfSU5JVFJBTUZTfSIgXTsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEJMS19ERVZfSU5JVFJEIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJTklUUkFNRlNfU09VUkNFICIiCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUkRfR1pJUCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgT1ZFUkxBWV9GUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1FVQVNIRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVCSUZTX0ZTIHkKLSAgICBmaQotICAgICMgQWN0aXZhdGUgQ09ORklHX0xFR0FDWV9QVFlTCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMRUdBQ1lfUFRZUyB5Ci0KLSAgICAjIEFjdGl2YXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZDNAotICAgIFZDNEdSQVBISUNTPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ2YzRncmFwaGljcyIsICIxIiwgIjAiLCBkKX0iCi0gICAgaWYgWyAke1ZDNEdSQVBISUNTfSA9ICIxIiBdOyB0aGVuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSTJDX0JDTTI4MzUgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERSTSB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRFJNX0ZCREVWX0VNVUxBVElPTiB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRFJNX1ZDNCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRkJfQkNNMjcwOCBuCi0gICAgZmkKLQotICAgICMgS2VlcCB0aGlzIHRoZSBsYXN0IGxpbmUKLSAgICAjIFJlbW92ZSBhbGwgbW9kaWZpZWQgY29uZmlncyBhbmQgYWRkIHRoZSByZXN0IHRvIC5jb25maWcKLSAgICBzZWQgLWUgIiR7Q09ORl9TRURfU0NSSVBUfSIgPCAnJHtXT1JLRElSfS9kZWZjb25maWcnID4+ICcke0J9Ly5jb25maWcnCi0KLSAgICB5ZXMgJycgfCBvZV9ydW5tYWtlIG9sZGNvbmZpZwotfQotCi0jIEF1dG9tYXRpY2FsbHkgZGVwZW5kIG9uIGx6b3AtbmF0aXZlIGlmIENPTkZJR19LRVJORUxfTFpPIGlzIGVuYWJsZWQKLXB5dGhvbiAoKSB7Ci0gICAgdHJ5OgotICAgICAgICBkZWZjb25maWcgPSBiYi5mZXRjaDIubG9jYWxwYXRoKCdmaWxlOi8vZGVmY29uZmlnJywgZCkKLSAgICBleGNlcHQgYmIuZmV0Y2gyLkZldGNoRXJyb3I6Ci0gICAgICAgIHJldHVybgotCi0gICAgdHJ5OgotICAgICAgICBjb25maWdmaWxlID0gb3BlbihkZWZjb25maWcpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgJ0NPTkZJR19LRVJORUxfTFpPPXlcbicgaW4gY29uZmlnZmlsZS5yZWFkbGluZXMoKToKLSAgICAgICAgZGVwZW5kcyA9IGQuZ2V0VmFyKCdERVBFTkRTJywgRmFsc2UpCi0gICAgICAgIGQuc2V0VmFyKCdERVBFTkRTJywgZGVwZW5kcyArICcgbHpvcC1uYXRpdmUnKQotCi0gICAgY29uZmlnZmlsZS5jbG9zZSgpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwMi1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAyLWZpeC1kZWNvZGVyLWZsdXNoaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwMi1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMy1uby10aW1lb3V0LW9uLWdldC1zdGF0ZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMCUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTAlLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDE5ODY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMCUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jCi0jIE5lZWQgdG8gbWFrZSB0aGlzIGNvbmRpdGlvbmFsIHRvIGdzdHJlYW1lcjEKLSMKLVNSQ19VUklfYXBwZW5kX3JwaSA9ICIgXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBcCi0iCi0KLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dzdHJlYW1lcjEuMC1vbXgtMS4xMDoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIlLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzM4MWE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyJS5iYmFwcGVuZApAQCAtMCwwICsxLDEzIEBACisjCisjIE5lZWQgdG8gbWFrZSB0aGlzIGNvbmRpdGlvbmFsIHRvIGdzdHJlYW1lcjEKKyMKK1NSQ19VUklfYXBwZW5kX3JwaSA9ICIgXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBcCisiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dzdHJlYW1lcjEuMC1vbXgtMS4xMjoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNS1Eb24tdC1yZXF1aXJlLWludGVybmV0LWNvbm5lY3Rpb24tZHVyaW5nLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDUtRG9uLXQtcmVxdWlyZS1pbnRlcm5ldC1jb25uZWN0aW9uLWR1cmluZy1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjU2YWQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDUtRG9uLXQtcmVxdWlyZS1pbnRlcm5ldC1jb25uZWN0aW9uLWR1cmluZy1idWlsZC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDk3Y2I5NDA1ZjI4MWY1NGQ0MDgzZjMxMjZkNDQxYzhiNDRlYWZiODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDE5OjE0OjIwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHJlcXVpcmUgaW50ZXJuZXQgY29ubmVjdGlvbiBkdXJpbmcgYnVpbGQKKworVGhlIGZvbGxvd2luZyBpc3N1ZXMgYnJlYWsgb2ZmbGluZSBidWlsZHM6CisKKyogQnVpbGRpbmcgdGhlIG1hbiBwYWdlIHVzZXMgYSB3ZWIgc2VydmljZSBob3N0ZWQgb24gaGVyb2t1LgorCisqIE1ha2VmaWxlLmZmbXBlZyBleHBsaWNpdGx5IGRvZXMgYSAiZ2l0IGNsb25lIiBmcm9tIHRoZSBpbnRlcm5ldC4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZQorLS0tCisgTWFrZWZpbGUgICAgICAgIHwgNiArKy0tLS0KKyBNYWtlZmlsZS5mZm1wZWcgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA2MDUwMWIxLi42NDcxZjBmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzksMTQgKzc5LDEyIEBAIGZmbXBlZzoKKyAJbWFrZSAtZiBNYWtlZmlsZS5mZm1wZWcKKyAJbWFrZSAtZiBNYWtlZmlsZS5mZm1wZWcgaW5zdGFsbAorIAorLWRpc3Q6IG9teHBsYXllci5iaW4gb214cGxheWVyLjEKKytkaXN0OiBvbXhwbGF5ZXIuYmluCisgCW1rZGlyIC1wICQoRElTVCkvdXNyL2xpYi9vbXhwbGF5ZXIKKyAJbWtkaXIgLXAgJChESVNUKS91c3IvYmluCisgCW1rZGlyIC1wICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIKKy0JbWtkaXIgLXAgJChESVNUKS91c3Ivc2hhcmUvbWFuL21hbjEKKyAJY3Agb214cGxheWVyIG9teHBsYXllci5iaW4gJChESVNUKS91c3IvYmluCisgCWNwIENPUFlJTkcgJChESVNUKS91c3Ivc2hhcmUvZG9jL29teHBsYXllcgorIAljcCBSRUFETUUubWQgJChESVNUKS91c3Ivc2hhcmUvZG9jL29teHBsYXllci9SRUFETUUKKy0JY3Agb214cGxheWVyLjEgJChESVNUKS91c3Ivc2hhcmUvbWFuL21hbjEKKyAJY3AgLVAgZmZtcGVnX2NvbXBpbGVkL3Vzci9saWIvKi5zbyogJChESVNUKS91c3IvbGliL29teHBsYXllci8KKy0JdGFyIC1jemYgb214cGxheWVyLWRpc3QudGFyLmd6ICQoRElTVCkKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorKwl0YXIgLWN6ZiBvbXhwbGF5ZXItZGlzdC50YXIuZ3ogJChESVNUKQorZGlmZiAtLWdpdCBhL01ha2VmaWxlLmZmbXBlZyBiL01ha2VmaWxlLmZmbXBlZworaW5kZXggMjJkNDk1Yy4uODY1MTcyNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmZmbXBlZworKysrIGIvTWFrZWZpbGUuZmZtcGVnCitAQCAtNiw3ICs2LDcgQEAgRkZNUEVHX0VYVFJBX0NGTEFHUz89LW1mcHU9dmZwIC1tZmxvYXQtYWJpPSQoRkxPQVQpIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnUKKyBXT1JLPSQoUFdEKQorIAorIC5QSE9OWSA6IGFsbAorLWFsbDogY2hlY2tvdXQgY29uZmlndXJlIGNvbXBpbGUKKythbGw6IGNvbmZpZ3VyZSBjb21waWxlCisgCisgLlBIT05ZIDogY29weQorIGNvcHk6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA2LVByZXZlbnQtZmZtcGVnLWNvbmZpZ3VyZS1jb21waWxlLXJhY2UtY29uZGl0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDYtUHJldmVudC1mZm1wZWctY29uZmlndXJlLWNvbXBpbGUtcmFjZS1jb25kaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZhYzJkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA2LVByZXZlbnQtZmZtcGVnLWNvbmZpZ3VyZS1jb21waWxlLXJhY2UtY29uZGl0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNGExMzQxOWUzODA1YjU0MWZjNThlNTdmMWYyN2M0YTM4ODYwOWVmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMjA6MDI6MTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBmZm1wZWcgY29uZmlndXJlL2NvbXBpbGUgcmFjZSBjb25kaXRpb24KKworQWRkaXRpb25hbCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGlzIG5lZWRlZCBpbiBNYWtlZmlsZS5mZm1wZWcgdG8gZW5zdXJlIHRoYXQKK3RoZSBjb25maWd1cmUgc3RhZ2UgaXMgZmluaXNoZWQgYmVmb3JlIHRoZSBjb21waWxlIHN0YWdlIHN0YXJ0cy4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworLS0tCisgTWFrZWZpbGUuZmZtcGVnIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmZmbXBlZyBiL01ha2VmaWxlLmZmbXBlZworaW5kZXggODY1MTcyNC4uNjE5YzQ5YSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmZmbXBlZworKysrIGIvTWFrZWZpbGUuZmZtcGVnCitAQCAtNiw3ICs2LDcgQEAgRkZNUEVHX0VYVFJBX0NGTEFHUz89LW1mcHU9dmZwIC1tZmxvYXQtYWJpPSQoRkxPQVQpIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnUKKyBXT1JLPSQoUFdEKQorIAorIC5QSE9OWSA6IGFsbAorLWFsbDogY29uZmlndXJlIGNvbXBpbGUKKythbGw6IGNvbXBpbGUKKyAKKyAuUEhPTlkgOiBjb3B5CisgY29weToKK0BAIC0xNCw3ICsxNCw3IEBAIGNvcHk6CisgCSQoSE9TVCktc3RyaXAgKi5zbyoKKyAKKyAuUEhPTlkgOiBjb21waWxlCistY29tcGlsZTogCisrY29tcGlsZTogY29uZmlndXJlCisgCSskKE1BS0UpIC1DIGZmbXBlZworIAorIC5QSE9OWSA6IGNvbmZpZ3VyZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgppbmRleCAwZTBmOWJhLi5kYjAxZDc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllcl9naXQuYmIKQEAgLTEwLDE0ICsxMCwyNyBAQAogREVQRU5EUyA9ICJsaWJwY3JlIGxpYmF2IHZpcnR1YWwvZWdsIGJvb3N0IGZyZWV0eXBlIGRidXMgb3BlbnNzbCBzYW1iYSBsaWJzc2ggbGlib214aWwgY29yZXV0aWxzLW5hdGl2ZSBjdXJsLW5hdGl2ZSIKIFBSID0gInI0IgogCi1TUkNSRVYgPSAiMDYxNDI1YTVlYWJmNmU5ZWU0MzIyOTkxMWMwNzNhODYzZDE0NDAzOCIKK1NSQ1JFVl9kZWZhdWx0ID0gImI4ZmY1OWRjY2Q5MzA3ZjEwZGFkNzFiZWMyNTI1YTk1YmQ2YzYwM2IiCisKKyMgb214cGxheWVyIGJ1aWxkcyBpdHMgb3duIGNvcHkgb2YgZmZtcGVnIGZyb20gc291cmNlIGluc3RlYWQgb2YgdXNpbmcgdGhlCisjIHN5c3RlbSdzIGZmbXBlZyBsaWJyYXJ5LiBUaGlzIGlzbid0IGlkZWFsIGJ1dCBpdCdzIG9rIGZvciBub3cuIFdlIGRvIGhvd2V2ZXIKKyMgd2FudCB0byBrZWVwIGNvbnRyb2wgb2YgdGhlIGV4YWN0IHZlcnNpb24gb2YgZmZtcGVnIHVzZWQgaW5zdGVhZCBvZiBqdXN0CisjIGZldGNoaW5nIHRoZSBsYXRlc3QgY29tbWl0IG9uIGEgcmVsZWFzZSBicmFuY2ggKHdoaWNoIGlzIHdoYXQgdGhlIGNoZWNrb3V0IGpvYgorIyBpbiBNYWtlZmlsZS5mZm1wZWcgaW4gdGhlIG9teHBsYXllciBzb3VyY2UgdHJlZSBkb2VzKS4KKyMKKyMgVGhpcyBTUkNSRVYgY29ycmVzcG9uZHMgdG8gdGhlIHYzLjEuMTAgcmVsZWFzZSBvZiBmZm1wZWcuCitTUkNSRVZfZmZtcGVnID0gImFmYTM0Y2IzNmVkY2EwZmY4MDliN2U1ODQ3NGJiY2UxMjI3MWVjYmEiCisKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wb3Bjb3JubWl4L29teHBsYXllci5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBnaXQ6Ly9zb3VyY2UuZmZtcGVnLm9yZy9mZm1wZWc7YnJhbmNoPXJlbGVhc2UvMy4xO3Byb3RvY29sPWdpdDtkZXB0aD0xO25hbWU9ZmZtcGVnO2Rlc3RzdWZmaXg9Z2l0L2ZmbXBlZyBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1NYWtlZmlsZS5pbmNsdWRlLXdoaWNoLWluY2x1ZGVzLWhhcmRjb2RlZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUxpYnJhcmllcy1hbmQtaGVhZGVycy1mcm9tLWZmbXBlZy1hcmUtaW5zdGFsbGVkLWluLXUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtc3RyaXAtc3RlcC1pbi1NYWtlZmlsZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkZC1GRk1QRUdfRVhUUkFfQ0ZMQUdTLWFuZC1GRk1QRUdfRVhUUkFfTERGTEFHUy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtdGFyLWNvbW1hbmQtd2l0aC1ESVNULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VzZS1uYXRpdmUtcGtnLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1QcmV2ZW50LWZmbXBlZy1jb25maWd1cmUtY29tcGlsZS1yYWNlLWNvbmRpdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTUzLDcgKzY2LDggQEAKICAgICAjIE5lZWRlZCBmb3IgY29tcGlsZXIgdGVzdCBpbiBmZm1wZWcncyBjb25maWd1cmUKICAgICBta2RpciAtcCB0bXAKIAotICAgIG9lX3J1bm1ha2UgZmZtcGVnCisgICAgb2VfcnVubWFrZSAtZiBNYWtlZmlsZS5mZm1wZWcKKyAgICBvZV9ydW5tYWtlIC1mIE1ha2VmaWxlLmZmbXBlZyBpbnN0YWxsCiAgICAgb2VfcnVubWFrZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmJhcHBlbmQKaW5kZXggYzFjYjNiYy4uNTA1NzE5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYmFwcGVuZApAQCAtMSArMSwyIEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX3Jhc3BiZXJyeXBpID0gIiAtLWRpc2FibGUtYXNtIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgLS1kaXNhYmxlLWFzbSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vUkVBRE1FCmluZGV4IDI1NzhmOTAuLjdkODQyMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL1JFQURNRQpAQCAtNCw2ICs0LDI4IEBACiBUaGlzIGxheWVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIFhlbiwgS1ZNLCBMaWJ2aXJ0LCBhbmQgYXNzb2NpYXRlZAogcGFja2FnZXMgbmVjZXNzYXJ5IGZvciBjb25zdHJ1Y3RpbmcgT0UtYmFzZWQgdmlydHVhbGl6ZWQgc29sdXRpb25zLgogCitUaGUgYmJhcHBlbmQgZmlsZXMgZm9yIHNvbWUgcmVjaXBlIChlLmcuIGxpbnV4LXlvY3RvKSBpbiB0aGlzIGxheWVyIG5lZWRzIHRvCitoYXZlICd2aXJ0dWFsaXphdGlvbicgaW4gRElTVFJPX0ZFQVRVUkVTIHRvIGhhdmUgZWZmZWN0LiBUbyBlbmFibGUgdGhlbSwgYWRkCitpbiBjb25maWd1cmF0aW9uIGZpbGUgdGhlIGZvbGxvd2luZyBsaW5lLgorCisgIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHZpcnR1YWxpemF0aW9uIgorCitJZiBtZXRhLXZpcnR1YWxpemF0aW9uIGlzIGluY2x1ZGVkLCBidXQgdmlydHVhbGl6YXRpb24gaXMgbm90IGVuYWJsZWQgYXMgYQorZGlzdHJvIGZlYXR1cmUgYSB3YXJuaW5nIGlzIHByaW50ZWQgYXQgcGFyc2UgdGltZToKKworICAgIFlvdSBoYXZlIGluY2x1ZGVkIHRoZSBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyLCBidXQKKyAgICAndmlydHVhbGl6YXRpb24nIGhhcyBub3QgYmVlbiBlbmFibGVkIGluIHlvdXIgRElTVFJPX0ZFQVRVUkVTLiBTb21lIGJiYXBwZW5kIGZpbGVzCisgICAgbWF5IG5vdCB0YWtlIGVmZmVjdC4gU2VlIHRoZSBtZXRhLXZpcnR1YWxpemF0aW9uIFJFQURNRSBmb3IgZGV0YWlscyBvbiBlbmFibGluZworICAgIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQuCisKK0lmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZywgdGhpcyB3YXJuaW5nIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBmb2xsb3dpbmcKK3ZhcmlhYmxlIGluIHlvdXIgY29uZmlndXJhdGlvbjoKKworICBTS0lQX01FVEFfVklSVF9TQU5JVFlfQ0hFQ0sgPSAxCisKK0Fsc28gbm90ZSB0aGF0IHRoZXJlIGFyZSBrdm0gYW5kIHhlbiBzcGVjaWZpYyBkaXN0cm8gZmxhZ3MvZmVhdHVyZXMgdGhhdCBkZXBlbmRpbmcKK29uIHlvdXIgdXNlIGNhc2UuCisKIERlcGVuZGVuY2llcwogLS0tLS0tLS0tLS0tCiBUaGlzIGxheWVyIGRlcGVuZHMgb246CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY2xhc3Nlcy9zYW5pdHktbWV0YS12aXJ0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY2xhc3Nlcy9zYW5pdHktbWV0YS12aXJ0LmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRlZDA4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jbGFzc2VzL3Nhbml0eS1tZXRhLXZpcnQuYmJjbGFzcwpAQCAtMCwwICsxLDEwIEBACithZGRoYW5kbGVyIHZpcnRfYmJhcHBlbmRfZGlzdHJvY2hlY2sKK3ZpcnRfYmJhcHBlbmRfZGlzdHJvY2hlY2tbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5TYW5pdHlDaGVjayIKK3B5dGhvbiB2aXJ0X2JiYXBwZW5kX2Rpc3Ryb2NoZWNrKCkgeworICAgIHNraXBfY2hlY2sgPSBlLmRhdGEuZ2V0VmFyKCdTS0lQX01FVEFfVklSVF9TQU5JVFlfQ0hFQ0snKSA9PSAiMSIKKyAgICBpZiAndmlydHVhbGl6YXRpb24nIG5vdCBpbiBlLmRhdGEuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnKS5zcGxpdCgpIGFuZCBub3Qgc2tpcF9jaGVjazoKKyAgICAgICAgYmIud2FybigiWW91IGhhdmUgaW5jbHVkZWQgdGhlIG1ldGEtdmlydHVhbGl6YXRpb24gbGF5ZXIsIGJ1dCBcCisndmlydHVhbGl6YXRpb24nIGhhcyBub3QgYmVlbiBlbmFibGVkIGluIHlvdXIgRElTVFJPX0ZFQVRVUkVTLiBTb21lIGJiYXBwZW5kIGZpbGVzIFwKK21heSBub3QgdGFrZSBlZmZlY3QuIFNlZSB0aGUgbWV0YS12aXJ0dWFsaXphdGlvbiBSRUFETUUgZm9yIGRldGFpbHMgb24gZW5hYmxpbmcgXAordmlydHVhbGl6YXRpb24gc3VwcG9ydC4iKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggYmUwOGE5OC4uZjcxYzExNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9sYXllci5jb25mCkBAIC0yMiwzICsyMiw3IEBACiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3J1bmMgPz0gInJ1bmMtZG9ja2VyIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvY29udGFpbmVyZCA/PSAiY29udGFpbmVyZC1kb2NrZXIiCisKKyMgU2FuaXR5IGNoZWNrIGZvciBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyLgorIyBTZXR0aW5nIFNLSVBfTUVUQV9WSVJUX1NBTklUWV9DSEVDSyB0byAiMSIgd291bGQgc2tpcCB0aGUgYmJhcHBlbmQgZmlsZXMgY2hlY2suCitJTkhFUklUICs9ICJzYW5pdHktbWV0YS12aXJ0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQtZG9ja2VyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLWRvY2tlcl9naXQuYmIKaW5kZXggZjZkY2FlYy4uYjE4YTliYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQtZG9ja2VyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC1kb2NrZXJfZ2l0LmJiCkBAIC0xLDEwICsxLDE0IEBACitTUkNSRVYgPSAiM2FkZGQ4NDA2NTMxNDZjOTBhMjU0MzAxZDZjM2E2NjNjN2ZkNjQyOSIKK1NSQ19VUkkgPSAiXAorCWdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2NvbnRhaW5lcmQuZ2l0O2JyYW5jaD12MC4yLng7ZGVzdHN1ZmZpeD1naXQvc3JjL2dpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkIFwKKwkiCisKIGluY2x1ZGUgY29udGFpbmVyZC5pbmMKIAotU1JDUkVWID0gIjAzZTU4NjJlYzBkOGQzYjNmNzUwZTE5ZmNhM2VlMzY3ZTEzYzA5MGUiCi1TUkNfVVJJID0gIlwKLQlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9jb250YWluZXJkLmdpdDticmFuY2g9ZG9ja2VyLTEuMTMueCBcCi0JIgotQ09OVEFJTkVSRF9WRVJTSU9OID0gIjAuMi4zIgorQ09OVEFJTkVSRF9WRVJTSU9OID0gInYwLjIueCIKK1MgPSAiJHtXT1JLRElSfS9naXQvc3JjL2dpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkIgogCiBQUk9WSURFUyArPSAidmlydHVhbC9jb250YWluZXJkIgogUlBST1ZJREVTXyR7UE59ID0gInZpcnR1YWwvY29udGFpbmVyZCIKKworREVQRU5EUyArPSAiYnRyZnMtdG9vbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC5pbmMKaW5kZXggYjE0Mzk3OS4uZTdhMzcxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLmluYwpAQCAtOCwzMCArOCwyMyBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5jb2RlO21kNT1hYWRjMzBmOWMxNGQ4NzZkZWQ3YmVkYzBhZmQyZDNkNyIKIAorU1JDX1VSSSArPSAiZmlsZTovL2NvbnRhaW5lcmQuc2VydmljZSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogUFYgPSAiJHtDT05UQUlORVJEX1ZFUlNJT059K2dpdCR7U1JDUkVWfSIKIAogaW5oZXJpdCBnbworaW5oZXJpdCBnb2FyY2gKIAogUlJFQ09NTUVORFNfJHtQTn0gPSAibHhjIGRvY2tlciIKLUNPTlRBSU5FUkRfUEtHPSJnaXRodWIuY29tL2RvY2tlci9jb250YWluZXJkIgorQ09OVEFJTkVSRF9QS0c9ImdpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9BUkNIfSIKLQkjIHN1cHBvcnRlZCBhbWQ2NCwgMzg2LCBhcm0gYXJtNjQKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCWV4cG9ydCBHT0FSQ0g9ImFtZDY0IgotCWZpCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjQiIF07IHRoZW4KLQkJZXhwb3J0IEdPQVJDSD0iYXJtNjQiCi0JZmkKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXTsgdGhlbgotCQlleHBvcnQgR09BUkNIPSIzODYiCi0JZmkKLQogCSMgU2V0IEdPUEFUSC4gU2VlICdQQUNLQUdFUlMubWQnLiBEb24ndCByZWx5IG9uCiAJIyBkb2NrZXIgdG8gZG93bmxvYWQgaXRzIGRlcGVuZGVuY2llcyBidXQgcmF0aGVyCiAJIyB1c2UgZGVwZW5kZW5jaWVzIHBhY2thZ2VkIGluZGVwZW5kZW50bHkuCkBAIC0zOSwxNyArMzIsMTkgQEAKIAlybSAtcmYgLmdvcGF0aAogCW1rZGlyIC1wIC5nb3BhdGgvc3JjLyIkKGRpcm5hbWUgIiR7Q09OVEFJTkVSRF9QS0d9IikiCiAJbG4gLXNmIC4uLy4uLy4uLy4uIC5nb3BhdGgvc3JjLyIke0NPTlRBSU5FUkRfUEtHfSIKLQlleHBvcnQgR09QQVRIPSIke1N9Ly5nb3BhdGg6JHtTfS92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKLQlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0vJHtub25hcmNoX2xpYmRpcn0vJHtIT1NUX1NZU30vZ28iCi0JY2QgLQorCisgICAgICAgIGV4cG9ydCBHT1BBVEg9IiR7V09SS0RJUn0vZ2l0LyIKKyAgICAgICAgZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCiAKIAkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbwogCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgogCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKIAlleHBvcnQgQ0ZMQUdTPSIiCiAJZXhwb3J0IExERkxBR1M9IiIKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisgICAgICAgIGV4cG9ydCBHT19HQ0ZMQUdTPSIiCiAJZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIAlleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIApAQCAtNzQsOSArNjksOSBAQAogCiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gNjQ0ICR7U30vaGFjay9jb250YWluZXJkLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vY29udGFpbmVyZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCSAgICAgICAgIyBhZGp1c3QgZnJvbSAvdXNyL2xvY2FsL2JpbiB0byAvdXNyL2Jpbi8KLQkJc2VkIC1lICJzOi91c3IvbG9jYWwvYmluL2NvbnRhaW5lcmQ6JHtiaW5kaXJ9L2RvY2tlci1jb250YWluZXJkIC1sIFwidW5peFw6Ly8vdmFyL3J1bi9kb2NrZXIvbGliY29udGFpbmVyZC9kb2NrZXItY29udGFpbmVyZC5zb2NrXCI6ZyIgLWkgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NvbnRhaW5lcmQuc2VydmljZQorCQlzZWQgLWUgInM6L3Vzci9sb2NhbC9iaW4vY29udGFpbmVyZDoke2JpbmRpcn0vZG9ja2VyLWNvbnRhaW5lcmQ6ZyIgLWkgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NvbnRhaW5lcmQuc2VydmljZQogCWZpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9maWxlcy9jb250YWluZXJkLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvZmlsZXMvY29udGFpbmVyZC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNjMzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvZmlsZXMvY29udGFpbmVyZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTEgQEAKK1tVbml0XQorRGVzY3JpcHRpb249Y29udGFpbmVyZAorRG9jdW1lbnRhdGlvbj1odHRwczovL2NvbnRhaW5lcmQudG9vbHMKK0FmdGVyPW5ldHdvcmsudGFyZ2V0CisKK1tTZXJ2aWNlXQorRXhlY1N0YXJ0PS91c3IvbG9jYWwvYmluL2NvbnRhaW5lcmQKK0RlbGVnYXRlPXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2NyaS1vX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vY3JpLW9fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNGQ1NGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2NyaS1vX2dpdC5iYgpAQCAtMCwwICsxLDEzMCBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vIgorU1VNTUFSWSA9ICJPcGVuIENvbnRhaW5lciBJbml0aWF0aXZlLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIEt1YmVybmV0ZXMgQ29udGFpbmVyIFJ1bnRpbWUgSW50ZXJmYWNlIgorREVTQ1JJUFRJT04gPSAiY3JpLW8gaXMgbWVhbnQgdG8gcHJvdmlkZSBhbiBpbnRlZ3JhdGlvbiBwYXRoIGJldHdlZW4gT0NJIGNvbmZvcm1hbnQgXAorcnVudGltZXMgYW5kIHRoZSBrdWJlbGV0LiBTcGVjaWZpY2FsbHksIGl0IGltcGxlbWVudHMgdGhlIEt1YmVsZXQgQ29udGFpbmVyIFJ1bnRpbWUgXAorSW50ZXJmYWNlIChDUkkpIHVzaW5nIE9DSSBjb25mb3JtYW50IHJ1bnRpbWVzLiBUaGUgc2NvcGUgb2YgY3JpLW8gaXMgdGllZCB0byB0aGUgc2NvcGUgb2YgdGhlIENSSS4gXAorLiBcCitBdCBhIGhpZ2ggbGV2ZWwsIHdlIGV4cGVjdCB0aGUgc2NvcGUgb2YgY3JpLW8gdG8gYmUgcmVzdHJpY3RlZCB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdGllczogXAorLiBcCisgLSBTdXBwb3J0IG11bHRpcGxlIGltYWdlIGZvcm1hdHMgaW5jbHVkaW5nIHRoZSBleGlzdGluZyBEb2NrZXIgaW1hZ2UgZm9ybWF0IFwKKyAtIFN1cHBvcnQgZm9yIG11bHRpcGxlIG1lYW5zIHRvIGRvd25sb2FkIGltYWdlcyBpbmNsdWRpbmcgdHJ1c3QgJiBpbWFnZSB2ZXJpZmljYXRpb24gXAorIC0gQ29udGFpbmVyIGltYWdlIG1hbmFnZW1lbnQgKG1hbmFnaW5nIGltYWdlIGxheWVycywgb3ZlcmxheSBmaWxlc3lzdGVtcywgZXRjKSBcCisgLSBDb250YWluZXIgcHJvY2VzcyBsaWZlY3ljbGUgbWFuYWdlbWVudCBcCisgLSBNb25pdG9yaW5nIGFuZCBsb2dnaW5nIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIENSSSBcCisgLSBSZXNvdXJjZSBpc29sYXRpb24gYXMgcmVxdWlyZWQgYnkgdGhlIENSSSBcCisgIgorCitTUkNSRVZfY3JpLW8gPSAiNjVmYWFlNjc4MjhmYjNlYjNlYWMwNWI1ODJhYWU5ZjlkMWRlYTUxYyIKK1NSQ19VUkkgPSAiXAorCWdpdDovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8uZ2l0O25vYnJhbmNoPTE7bmFtZT1jcmktbyBcCisJZmlsZTovLzAwMDEtTWFrZWZpbGUtZm9yY2Utc3ltbGlua3MucGF0Y2ggXAorICAgICAgICBmaWxlOi8vY3Jpby5jb25mIFwKKwkiCisKKyMgQXBhY2hlLTIuMCBmb3IgZG9ja2VyCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PWUzZmM1MGE4OGQwYTM2NDMxM2RmNGIyMWVmMjBjMjllIgorCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCitQViA9ICIxLjAuMC1yYzMtZGV2K2dpdCR7U1JDUkVWX2NyaS1vfSIKKworREVQRU5EUyA9ICIgXAorICAgIGdsaWItMi4wIFwKKyAgICBidHJmcy10b29scyBcCisgICAgZ3BnbWUgXAorICAgIG9zdHJlZSBcCisgICAgbGliZGV2bWFwcGVyIFwKKyAgICAiCitSREVQRU5EU18ke1BOfSA9ICIgXAorICAgIGNuaSBcCisgICAgIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29uZmlnIgorCitSREVQRU5EU18ke1BOfSArPSAiIHZpcnR1YWwvY29udGFpbmVyZCB2aXJ0dWFsL3J1bmMiCitSREVQRU5EU18ke1BOfSArPSAiIGUyZnNwcm9ncy1ta2UyZnMiCisKK2luaGVyaXQgc3lzdGVtZAoraW5oZXJpdCBnbworaW5oZXJpdCBnb2FyY2gKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRT0iQlVJTERUQUdTPScnIgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0OiR7U30vc3JjL2ltcG9ydC92ZW5kb3IiCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENGTEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSIiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJIyBsaW5rIGZpeHVwcyBmb3IgY29tcGlsYXRpb24KKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCisJbWtkaXIgLXAgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vCisJbG4gLXNmIC4uLy4uLy4uLy4uL2NtZCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vY21kCisJbG4gLXNmIC4uLy4uLy4uLy4uL3Rlc3QgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vL3Rlc3QKKwlsbiAtc2YgLi4vLi4vLi4vLi4vb2NpICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktby9vY2kKKwlsbiAtc2YgLi4vLi4vLi4vLi4vc2VydmVyICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktby9zZXJ2ZXIKKwlsbiAtc2YgLi4vLi4vLi4vLi4vcGtnICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktby9wa2cKKwlsbiAtc2YgLi4vLi4vLi4vLi4vbGlicG9kICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktby9saWJwb2QKKwlsbiAtc2YgLi4vLi4vLi4vLi4vbGlia3BvZCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vbGlia3BvZAorCWxuIC1zZiAuLi8uLi8uLi8uLi91dGlscyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vdXRpbHMKKworCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydC8uZ29wYXRoOiR7U30vc3JjL2ltcG9ydC92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKKwlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0vJHtub25hcmNoX2xpYmRpcn0vJHtIT1NUX1NZU30vZ28iCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7Q0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtMREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJY2QgJHtTfS9zcmMvaW1wb3J0CisKKwlvZV9ydW5tYWtlIGJpbmFyaWVzCit9CisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke1BOfScsJycsZCl9IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnY3Jpby5zZXJ2aWNlJywnJyxkKX0iCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImVuYWJsZSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBsb2NhbGJpbmRpcj0iL3Vzci9sb2NhbC9iaW4iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2FsYmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmV4ZWNkaXJ9L2NyaW8KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jcmlvCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKworICAgIGluc3RhbGwgJHtXT1JLRElSfS9jcmlvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2NyaW8vY3Jpby5jb25mCisKKyAgICAjIHNhbXBsZSBjb25maWcgZmlsZXMsIHRoZXknbGwgZ28gaW4gdGhlICR7UE59LWNvbmZpZyBiZWxvdworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2NyaW8vY29uZmlnLworICAgIGluc3RhbGwgLW0gNzU1IC1EICR7U30vc3JjL2ltcG9ydC90ZXN0L3Rlc3RkYXRhLyogJHtEfS8ke3N5c2NvbmZkaXJ9L2NyaW8vY29uZmlnLworCisgICAgaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvY3JpbyAke0R9LyR7bG9jYWxiaW5kaXJ9CisgICAgaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvY3Jpb2N0bCAke0R9LyR7bG9jYWxiaW5kaXJ9CisgICAgaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQva3BvZCAke0R9LyR7bG9jYWxiaW5kaXJ9CisKKyAgICBpbnN0YWxsICR7U30vc3JjL2ltcG9ydC9jb25tb24vY29ubW9uICR7RH0vJHtsaWJleGVjZGlyfS9jcmlvCisgICAgaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvcGF1c2UvcGF1c2UgJHtEfS8ke2xpYmV4ZWNkaXJ9L2NyaW8KKworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9pbXBvcnQvY29udHJpYi9zeXN0ZW1kL2NyaW8uc2VydmljZSAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2ltcG9ydC9jb250cmliL3N5c3RlbWQvY3Jpby1zaHV0ZG93bi5zZXJ2aWNlICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KK30KKworRklMRVNfJHtQTn0tY29uZmlnID0gIiR7c3lzY29uZmRpcn0vY3Jpby9jb25maWcvKiIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCitGSUxFU18ke1BOfSArPSAiL3Vzci9sb2NhbC9iaW4vKiIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyBhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9maWxlcy8wMDAxLU1ha2VmaWxlLWZvcmNlLXN5bWxpbmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9maWxlcy8wMDAxLU1ha2VmaWxlLWZvcmNlLXN5bWxpbmtzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMGVhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZm9yY2Utc3ltbGlua3MucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBhNDQzMzk3OGJmMzI0NTI1YjRjMjYwYjBlOTYxNWFlMjcyNzFmZTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIwIFNlcCAyMDE3IDEyOjA1OjQwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmb3JjZSBzeW1saW5rcworCitTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ltcG9ydC9NYWtlZmlsZSBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKK2luZGV4IGUzZTUwNTBiYjdmNi4uNGFkM2ZiN2ZmMGE5IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQorKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQorQEAgLTUzLDcgKzUzLDcgQEAgaGVscDoKKyAuZ29wYXRob2s6CisgaWZlcSAoIiQod2lsZGNhcmQgJChHT1BLR0RJUikpIiwiIikKKyAJbWtkaXIgLXAgIiQoR09QS0dCQVNFRElSKSIKKy0JbG4gLXMgIiQoQ1VSRElSKSIgIiQoR09QS0dCQVNFRElSKSIKKysJbG4gLXNmICIkKENVUkRJUikiICIkKEdPUEtHQkFTRURJUikiCisgZW5kaWYKKyAJdG91Y2ggIiQoR09QQVRIKS8uZ29wYXRob2siCisgCistLSAKKzIuNC4wLjUzLmc4NDQwZjc0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vZmlsZXMvY3Jpby5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9maWxlcy9jcmlvLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFkN2Y0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vZmlsZXMvY3Jpby5jb25mCkBAIC0wLDAgKzEsMTQ3IEBACisjIGdlbmVyYXRlZCB2aWE6IGNyaW8gLS1jb25maWc9IiIgY29uZmlnIC0tZGVmYXVsdAorCisjIFRoZSAiY3JpbyIgdGFibGUgY29udGFpbnMgYWxsIG9mIHRoZSBzZXJ2ZXIgb3B0aW9ucy4KK1tjcmlvXQorCisjIHJvb3QgaXMgYSBwYXRoIHRvIHRoZSAicm9vdCBkaXJlY3RvcnkiLiBDUklPIHN0b3JlcyBhbGwgb2YgaXRzIGRhdGEsCisjIGluY2x1ZGluZyBjb250YWluZXIgaW1hZ2VzLCBpbiB0aGlzIGRpcmVjdG9yeS4KK3Jvb3QgPSAiL3Zhci9saWIvY29udGFpbmVycy9zdG9yYWdlIgorCisjIHJ1biBpcyBhIHBhdGggdG8gdGhlICJydW4gZGlyZWN0b3J5Ii4gQ1JJTyBzdG9yZXMgYWxsIG9mIGl0cyBzdGF0ZQorIyBpbiB0aGlzIGRpcmVjdG9yeS4KK3J1bnJvb3QgPSAiL3Zhci9ydW4vY29udGFpbmVycy9zdG9yYWdlIgorCisjIHN0b3JhZ2VfZHJpdmVyIHNlbGVjdCB3aGljaCBzdG9yYWdlIGRyaXZlciBpcyB1c2VkIHRvIG1hbmFnZSBzdG9yYWdlCisjIG9mIGltYWdlcyBhbmQgY29udGFpbmVycy4KK3N0b3JhZ2VfZHJpdmVyID0gIiIKKworIyBzdG9yYWdlX29wdGlvbiBpcyB1c2VkIHRvIHBhc3MgYW4gb3B0aW9uIHRvIHRoZSBzdG9yYWdlIGRyaXZlci4KK3N0b3JhZ2Vfb3B0aW9uID0gWworXQorCisjIFRoZSAiY3Jpby5hcGkiIHRhYmxlIGNvbnRhaW5zIHNldHRpbmdzIGZvciB0aGUga3ViZWxldC9nUlBDCisjIGludGVyZmFjZSAod2hpY2ggaXMgYWxzbyB1c2VkIGJ5IGNyaW9jdGwpLgorW2NyaW8uYXBpXQorCisjIGxpc3RlbiBpcyB0aGUgcGF0aCB0byB0aGUgQUZfTE9DQUwgc29ja2V0IG9uIHdoaWNoIGNyaW8gd2lsbCBsaXN0ZW4uCitsaXN0ZW4gPSAiL3Zhci9ydW4vY3Jpby5zb2NrIgorCisjIHN0cmVhbV9hZGRyZXNzIGlzIHRoZSBJUCBhZGRyZXNzIG9uIHdoaWNoIHRoZSBzdHJlYW0gc2VydmVyIHdpbGwgbGlzdGVuCitzdHJlYW1fYWRkcmVzcyA9ICIiCisKKyMgc3RyZWFtX3BvcnQgaXMgdGhlIHBvcnQgb24gd2hpY2ggdGhlIHN0cmVhbSBzZXJ2ZXIgd2lsbCBsaXN0ZW4KK3N0cmVhbV9wb3J0ID0gIjEwMDEwIgorCisjIGZpbGVfbG9ja2luZyBpcyB3aGV0aGVyIGZpbGUtYmFzZWQgbG9ja2luZyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZgorIyBpbi1tZW1vcnkgbG9ja2luZworZmlsZV9sb2NraW5nID0gdHJ1ZQorCisjIFRoZSAiY3Jpby5ydW50aW1lIiB0YWJsZSBjb250YWlucyBzZXR0aW5ncyBwZXJ0YWluaW5nIHRvIHRoZSBPQ0kKKyMgcnVudGltZSB1c2VkIGFuZCBvcHRpb25zIGZvciBob3cgdG8gc2V0IHVwIGFuZCBtYW5hZ2UgdGhlIE9DSSBydW50aW1lLgorW2NyaW8ucnVudGltZV0KKworIyBydW50aW1lIGlzIHRoZSBPQ0kgY29tcGF0aWJsZSBydW50aW1lIHVzZWQgZm9yIHRydXN0ZWQgY29udGFpbmVyIHdvcmtsb2Fkcy4KKyMgVGhpcyBpcyBhIG1hbmRhdG9yeSBzZXR0aW5nIGFzIHRoaXMgcnVudGltZSB3aWxsIGJlIHRoZSBkZWZhdWx0IG9uZQorIyBhbmQgd2lsbCBhbHNvIGJlIHVzZWQgZm9yIHVudHJ1c3RlZCBjb250YWluZXIgd29ya2xvYWRzIGlmCisjIHJ1bnRpbWVfdW50cnVzdGVkX3dvcmtsb2FkIGlzIG5vdCBzZXQuCitydW50aW1lID0gIi91c3IvYmluL3J1bmMiCisKKyMgcnVudGltZV91bnRydXN0ZWRfd29ya2xvYWQgaXMgdGhlIE9DSSBjb21wYXRpYmxlIHJ1bnRpbWUgdXNlZCBmb3IgdW50cnVzdGVkCisjIGNvbnRhaW5lciB3b3JrbG9hZHMuIFRoaXMgaXMgYW4gb3B0aW9uYWwgc2V0dGluZywgZXhjZXB0IGlmCisjIGRlZmF1bHRfY29udGFpbmVyX3RydXN0IGlzIHNldCB0byAidW50cnVzdGVkIi4KK3J1bnRpbWVfdW50cnVzdGVkX3dvcmtsb2FkID0gIiIKKworIyBkZWZhdWx0X3dvcmtsb2FkX3RydXN0IGlzIHRoZSBkZWZhdWx0IGxldmVsIG9mIHRydXN0IGNyaW8gcHV0cyBpbiBjb250YWluZXIKKyMgd29ya2xvYWRzLiBJdCBjYW4gZWl0aGVyIGJlICJ0cnVzdGVkIiBvciAidW50cnVzdGVkIiwgYW5kIHRoZSBkZWZhdWx0CisjIGlzICJ0cnVzdGVkIi4KKyMgQ29udGFpbmVycyBjYW4gYmUgcnVuIHRocm91Z2ggZGlmZmVyZW50IGNvbnRhaW5lciBydW50aW1lcywgZGVwZW5kaW5nIG9uCisjIHRoZSB0cnVzdCBoaW50cyB3ZSByZWNlaXZlIGZyb20ga3ViZWxldDoKKyMgLSBJZiBrdWJlbGV0IHRhZ3MgYSBjb250YWluZXIgd29ya2xvYWQgYXMgdW50cnVzdGVkLCBjcmlvIHdpbGwgdHJ5IGZpcnN0IHRvCisjIHJ1biBpdCB0aHJvdWdoIHRoZSB1bnRydXN0ZWQgY29udGFpbmVyIHdvcmtsb2FkIHJ1bnRpbWUuIElmIGl0IGlzIG5vdCBzZXQsCisjIGNyaW8gd2lsbCB1c2UgdGhlIHRydXN0ZWQgcnVudGltZS4KKyMgLSBJZiBrdWJlbGV0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250YWluZXIgd29ya2xvYWQgdHJ1c3QKKyMgbGV2ZWwsIHRoZSBzZWxlY3RlZCBydW50aW1lIHdpbGwgZGVwZW5kIG9uIHRoZSBkZWZhdWx0X2NvbnRhaW5lcl90cnVzdCBzZXR0aW5nLgorIyBJZiBpdCBpcyBzZXQgdG8gInVudHJ1c3RlZCIsIHRoZW4gYWxsIGNvbnRhaW5lcnMgZXhjZXB0IGZvciB0aGUgaG9zdCBwcml2aWxlZ2VkCisjIG9uZXMsIHdpbGwgYmUgcnVuIGJ5IHRoZSBydW50aW1lX3VudHJ1c3RlZF93b3JrbG9hZCBydW50aW1lLiBIb3N0IHByaXZpbGVnZWQKKyMgY29udGFpbmVycyBhcmUgYnkgZGVmaW5pdGlvbiB0cnVzdGVkIGFuZCB3aWxsIGFsd2F5cyB1c2UgdGhlIHRydXN0ZWQgY29udGFpbmVyCisjIHJ1bnRpbWUuIElmIGRlZmF1bHRfY29udGFpbmVyX3RydXN0IGlzIHNldCB0byAidHJ1c3RlZCIsIGNyaW8gd2lsbCB1c2UgdGhlIHRydXN0ZWQKKyMgY29udGFpbmVyIHJ1bnRpbWUgZm9yIGFsbCBjb250YWluZXJzLgorZGVmYXVsdF93b3JrbG9hZF90cnVzdCA9ICJ0cnVzdGVkIgorCisjIGNvbm1vbiBpcyB0aGUgcGF0aCB0byBjb25tb24gYmluYXJ5LCB1c2VkIGZvciBtYW5hZ2luZyB0aGUgcnVudGltZS4KK2Nvbm1vbiA9ICIvdXNyL2xpYmV4ZWMvY3Jpby9jb25tb24iCisKKyMgY29ubW9uX2VudiBpcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbGlzdCBmb3IgY29ubW9uIHByb2Nlc3MsCisjIHVzZWQgZm9yIHBhc3NpbmcgbmVjZXNzYXJ5IGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGNvbm1vbiBvciBydW50aW1lLgorY29ubW9uX2VudiA9IFsKKwkiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLAorXQorCisjIHNlbGludXggaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IFNFTGludXggd2lsbCBiZSB1c2VkIGZvciBwb2QKKyMgc2VwYXJhdGlvbiBvbiB0aGUgaG9zdC4gSWYgeW91IGVuYWJsZSB0aGlzIGZsYWcsIFNFTGludXggbXVzdCBiZSBydW5uaW5nCisjIG9uIHRoZSBob3N0Lgorc2VsaW51eCA9IGZhbHNlCisKKyMgc2VjY29tcF9wcm9maWxlIGlzIHRoZSBzZWNjb21wIGpzb24gcHJvZmlsZSBwYXRoIHdoaWNoIGlzIHVzZWQgYXMgdGhlCisjIGRlZmF1bHQgZm9yIHRoZSBydW50aW1lLgorc2VjY29tcF9wcm9maWxlID0gIi9ldGMvY3Jpby9zZWNjb21wLmpzb24iCisKKyMgYXBwYXJtb3JfcHJvZmlsZSBpcyB0aGUgYXBwYXJtb3IgcHJvZmlsZSBuYW1lIHdoaWNoIGlzIHVzZWQgYXMgdGhlCisjIGRlZmF1bHQgZm9yIHRoZSBydW50aW1lLgorYXBwYXJtb3JfcHJvZmlsZSA9ICJjcmlvLWRlZmF1bHQiCisKKyMgY2dyb3VwX21hbmFnZXIgaXMgdGhlIGNncm91cCBtYW5hZ2VtZW50IGltcGxlbWVudGF0aW9uIHRvIGJlIHVzZWQKKyMgZm9yIHRoZSBydW50aW1lLgorY2dyb3VwX21hbmFnZXIgPSAiY2dyb3VwZnMiCisKKyMgaG9va3NfZGlyX3BhdGggaXMgdGhlIG9jaSBob29rcyBkaXJlY3RvcnkgZm9yIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgaG9va3MKK2hvb2tzX2Rpcl9wYXRoID0gIi91c3Ivc2hhcmUvY29udGFpbmVycy9vY2kvaG9va3MuZCIKKworIyBwaWRzX2xpbWl0IGlzIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGFsbG93ZWQgaW4gYSBjb250YWluZXIKK3BpZHNfbGltaXQgPSAxMDI0CisKKyMgVGhlICJjcmlvLmltYWdlIiB0YWJsZSBjb250YWlucyBzZXR0aW5ncyBwZXJ0YWluaW5nIHRvIHRoZQorIyBtYW5hZ2VtZW50IG9mIE9DSSBpbWFnZXMuCitbY3Jpby5pbWFnZV0KKworIyBkZWZhdWx0X3RyYW5zcG9ydCBpcyB0aGUgcHJlZml4IHdlIHRyeSBwcmVwZW5kaW5nIHRvIGFuIGltYWdlIG5hbWUgaWYgdGhlCisjIGltYWdlIG5hbWUgYXMgd2UgcmVjZWl2ZSBpdCBjYW4ndCBiZSBwYXJzZWQgYXMgYSB2YWxpZCBzb3VyY2UgcmVmZXJlbmNlCitkZWZhdWx0X3RyYW5zcG9ydCA9ICJkb2NrZXI6Ly8iCisKKyMgcGF1c2VfaW1hZ2UgaXMgdGhlIGltYWdlIHdoaWNoIHdlIHVzZSB0byBpbnN0YW50aWF0ZSBpbmZyYSBjb250YWluZXJzLgorcGF1c2VfaW1hZ2UgPSAia3ViZXJuZXRlcy9wYXVzZSIKKworIyBwYXVzZV9jb21tYW5kIGlzIHRoZSBjb21tYW5kIHRvIHJ1biBpbiBhIHBhdXNlX2ltYWdlIHRvIGhhdmUgYSBjb250YWluZXIganVzdAorIyBzaXQgdGhlcmUuICBJZiB0aGUgaW1hZ2UgY29udGFpbnMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiwgdGhpcyB2YWx1ZSBuZWVkCisjIG5vdCBiZSBzcGVjaWZpZWQuCitwYXVzZV9jb21tYW5kID0gIi9wYXVzZSIKKworIyBzaWduYXR1cmVfcG9saWN5IGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHdoaWNoIGRlY2lkZXMgd2hhdCBzb3J0IG9mIHBvbGljeSB3ZQorIyB1c2Ugd2hlbiBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0byB0cnVzdCBhbiBpbWFnZSB0aGF0IHdlJ3ZlIHB1bGxlZC4KKyMgT3V0c2lkZSBvZiB0ZXN0aW5nIHNpdHVhdGlvbnMsIGl0IGlzIHN0cm9uZ2x5IGFkdmlzZWQgdGhhdCB0aGlzIGJlIGxlZnQKKyMgdW5zcGVjaWZpZWQgc28gdGhhdCB0aGUgZGVmYXVsdCBzeXN0ZW0td2lkZSBwb2xpY3kgd2lsbCBiZSB1c2VkLgorc2lnbmF0dXJlX3BvbGljeSA9ICIiCisKKyMgaW1hZ2Vfdm9sdW1lcyBjb250cm9scyBob3cgaW1hZ2Ugdm9sdW1lcyBhcmUgaGFuZGxlZC4KKyMgVGhlIHZhbGlkIHZhbHVlcyBhcmUgbWtkaXIgYW5kIGlnbm9yZS4KK2ltYWdlX3ZvbHVtZXMgPSAibWtkaXIiCisKKyMgaW5zZWN1cmVfcmVnaXN0cmllcyBpcyB1c2VkIHRvIHNraXAgVExTIHZlcmlmaWNhdGlvbiB3aGVuIHB1bGxpbmcgaW1hZ2VzLgoraW5zZWN1cmVfcmVnaXN0cmllcyA9IFsKK10KKworIyByZWdpc3RyaWVzIGlzIHVzZWQgdG8gc3BlY2lmeSBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHJlZ2lzdHJpZXMgdG8gYmUgdXNlZAorIyB3aGVuIHB1bGxpbmcgYW4gdW5xdWFsaWZpZWQgaW1hZ2UgKGUuZy4gZmVkb3JhOnJhd2hpZGUpLgorcmVnaXN0cmllcyA9IFsKK10KKworIyBUaGUgImNyaW8ubmV0d29yayIgdGFibGUgY29udGFpbnMgc2V0dGluZ3MgcGVydGFpbmluZyB0byB0aGUKKyMgbWFuYWdlbWVudCBvZiBDTkkgcGx1Z2lucy4KK1tjcmlvLm5ldHdvcmtdCisKKyMgbmV0d29ya19kaXIgaXMgaXMgd2hlcmUgQ05JIG5ldHdvcmsgY29uZmlndXJhdGlvbgorIyBmaWxlcyBhcmUgc3RvcmVkLgorbmV0d29ya19kaXIgPSAiL2V0Yy9jbmkvbmV0LmQvIgorCisjIHBsdWdpbl9kaXIgaXMgaXMgd2hlcmUgQ05JIHBsdWdpbiBiaW5hcmllcyBhcmUgc3RvcmVkLgorcGx1Z2luX2RpciA9ICIvb3B0L2NuaS9iaW4vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2NyaXVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2NyaXVfZ2l0LmJiCmluZGV4IDIxZGVlMmIuLjNhMDIxMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9jcml1X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvY3JpdV9naXQuYmIKQEAgLTEzLDIxICsxMywyMCBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MTJkZTQ1ODU0NGMxY2I2YTJiNTEyY2QzOTkyODZlMiIKIAotU1JDUkVWID0gImMwMzE0MTcyNTVmNmE1YzQ0MDlkMTVmZjBiMzZhZjVmNmU5MGM1NTkiCi1QUiA9ICJyMCIKLVBWID0gIjIuNStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJhMzFjMTg1NGUxMDU4MGEwOTYyMWU1MzljM2VjMDUyYjg3NWE4ZTA2IgorUFYgPSAiMy40K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veGVtdWwvY3JpdS5naXQ7cHJvdG9jb2w9Z2l0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY3JpdS1GaXgtdG9vbGNoYWluLWhhcmRjb2RlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY3JpdS1Ta2lwLWRvY3VtZW50YXRpb24taW5zdGFsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnJywgJ2ZpbGU6Ly9kaXNhYmxlLXNlbGludXgucGF0Y2gnLCBkKX0gXAogICAgICAgICAgICBmaWxlOi8vbGliLU1ha2VmaWxlLW92ZXJ3cml0ZS1pbnN0YWxsLWxpYi10by1hbGxvdy1tdWx0aWFyYy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKIAotREVQRU5EUyArPSAibGlibmwgbGliY2FwIHByb3RvYnVmLWMtbmF0aXZlIHByb3RvYnVmLWMgdXRpbC1saW51eC1uYXRpdmUiCitERVBFTkRTICs9ICJsaWJubCBsaWJjYXAgcHJvdG9idWYtYy1uYXRpdmUgcHJvdG9idWYtYyB1dGlsLWxpbnV4LW5hdGl2ZSBsaWJic2QgbGlibmV0IgorUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtNzcsMyArNzYsOCBAQAogICAgICAgICAgICAgJHtsaWJkaXJ9L3B5Y3JpdS8gXAogICAgICAgICAgICAgJHtsaWJkaXJ9L2NyaXQtMC4wLjEtcHkyLjcuZWdnLWluZm8gXAogICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCisgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2NvbXBlbC9zdGQubGliLmEgXAorICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9jb21wZWwvZmRzLmxpYi5hIFwKKyAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaAppbmRleCBhNzIxNDA1Li40OTA4ZTQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUNoYW5nZS1saWJyYXJpZXMtaW5zdGFsbC1kaXJlY3RvcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1DaGFuZ2UtbGlicmFyaWVzLWluc3RhbGwtZGlyZWN0b3J5LnBhdGNoCkBAIC0xLDI2ICsxLDI2IEBACi1Gcm9tIDdlYmRlMDZlMDBiNTkxYTg4Mzk3ZGFkNzRhMWFhNDdmZDU2MmViNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTYgQXVnIDIwMTYgMDk6NDg6MDggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGNyaXU6IENoYW5nZSBsaWJyYXJpZXMgaW5zdGFsbCBkaXJlY3RvcnkKK0Zyb20gNzgzOTAzMDU4MjkzMTY2MzNhY2VlMmNhNTYwNzMzMWIwZTM3YTEwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMTU6MTE6MzEgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3JpdTogQ2hhbmdlIGxpYnJhcmllcyBpbnN0YWxsIGRpcmVjdG9yeQogCiBJbnN0YWxsIHRoZSBsaWJyYXJpZXMgaW50byAvdXNyL2xpYihvciAvdXNyL2xpYjY0KQogCiBTaWduZWQtb2ZmLWJ5OiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZS5pbnN0YWxsIHwgMTMgLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluc3RhbGwgYi9NYWtlZmlsZS5pbnN0YWxsCi1pbmRleCBkYmMyMmUxLi5hMzBkYzk2IDEwMDY0NAoraW5kZXggMzk4N2JjYy4uNzNkOThhNCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmluc3RhbGwKICsrKyBiL01ha2VmaWxlLmluc3RhbGwKLUBAIC0xMSwxOSArMTEsNiBAQCBMSUJESVIJCT89ICQoUFJFRklYKS9saWIKLSBJTkNMVURFRElSCT89ICQoUFJFRklYKS9pbmNsdWRlL2NyaXUKLSBMSUJFWEVDRElSCT89ICQoUFJFRklYKS9saWJleGVjCitAQCAtOSwxOSArOSw2IEBAIExJQkVYRUNESVIJPz0gJChQUkVGSVgpL2xpYmV4ZWMKKyBSVU5ESVIJCT89IC9ydW4KICAKLS0jCisgIwogLSMgRm9yIHJlY2VudCBEZWJpYW4vVWJ1bnR1IHdpdGggbXVsdGlhcmNoIHN1cHBvcnQuCi0tREVCX0hPU1RfTVVMVElBUkNIID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9NVUxUSUFSQ0ggMj4vZGV2L251bGwpCistREVCX0hPU1RfTVVMVElBUkNIIDo9ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9NVUxUSUFSQ0ggMj4vZGV2L251bGwpCiAtaWZuZXEgIiQoREVCX0hPU1RfTVVMVElBUkNIKSIgIiIKIC0gICAgICAgIExJQkRJUgkJCT89ICQoUFJFRklYKS9saWIvJChERUJfSE9TVF9NVUxUSUFSQ0gpCiAtZWxzZQpAQCAtMzEsOCArMzEsOSBAQAogLSAgICAgICAgZW5kaWYKIC1lbmRpZgogLQotIGV4cG9ydCBCSU5ESVIgU0JJTkRJUiBNQU5ESVIgU1lTVEVNRFVOSVRESVIgTE9HUk9UQVRFRElSCi0gZXhwb3J0IElOQ0xVREVESVIgTElCRElSIERFU1RESVIgUFJFRklYIExJQkVYRUNESVIKKy0jCisgIyBMSUJESVIgZmFsbHMgYmFjayB0byB0aGUgc3RhbmRhcmQgcGF0aC4KKyBMSUJESVIgPz0gJChQUkVGSVgpL2xpYgogIAogLS0gCiAyLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1GaXgtdG9vbGNoYWluLWhhcmRjb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1GaXgtdG9vbGNoYWluLWhhcmRjb2RlLnBhdGNoCmluZGV4IGQzMGYyYWMuLmRjNWI4OTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUZpeC10b29sY2hhaW4taGFyZGNvZGUucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDA1N2QzMGYxNWU4MWRjYzQxNjJkNmZiZWUwNmYxMjY1NjQ1OTYzOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgNyBTZXAgMjAxNiAyMzo1NToxNSAtMDQwMAorRnJvbSBhZjY3OTg1M2E0NWZlNjNmNjgwYzk5ZTcwNDE2YzhhYzYyMGQyM2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgOCBTZXAgMjAxNyAxNTowMjoxNCAtMDQwMAogU3ViamVjdDogW1BBVENIXSBjcml1OiBGaXggdG9vbGNoYWluIGhhcmRjb2RlCiAKIFJlcGxhY2UgIjo9IiB0byAiPz0iIHNvIHRoYXQgdGhlIHRvb2xjaGFpbiB1c2VkIGJ5IGJpdGJha2UgYnVpbGQgc3lzdGVtIHdpbGwKQEAgLTgsNDUgKzgsMzIgQEAKIAogU2lnbmVkLW9mZi1ieTogWWFuZyBTaGkgPHlhbmcuc2hpQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGNyaXUvcGllL01ha2VmaWxlICAgICAgICAgICAgICB8ICAyICstCiAgc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rIHwgIDIgKy0KICBzY3JpcHRzL25tay9zY3JpcHRzL3Rvb2xzLm1rICAgfCA0MCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKyAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNTJjYmQ2YS4uZjY2Mjc5YiAxMDA2NDQKK2luZGV4IGYyNTgzYTIuLmQ3ZjUxZTUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC02MCw3ICs2MCw3IEBAIExEQVJDSAkJCT89ICQoU1JDQVJDSCkKLSAKLSBleHBvcnQgU1JDQVJDSCBMREFSQ0ggVkRTTworQEAgLTE3LDcgKzE3LDcgQEAgaWZlcSAoJChvcmlnaW4gSE9TVENGTEFHUyksIHVuZGVmaW5lZCkKKyAgICAgICAgIEhPU1RDRkxBR1MgOj0gJChDRkxBR1MpICQoVVNFUkNGTEFHUykKKyBlbmRpZgogIAogLVVOQU1FLU0gOj0gJChzaGVsbCB1bmFtZSAtbSkKICtVTkFNRS1NID89ICQoc2hlbGwgdW5hbWUgLW0pCi0gZXhwb3J0IFVOQU1FLU0KICAKLSBpZmVxICgkKEFSQ0gpLGFybSkKLWRpZmYgLS1naXQgYS9jcml1L3BpZS9NYWtlZmlsZSBiL2NyaXUvcGllL01ha2VmaWxlCi1pbmRleCAxMjViMDJmLi45OTc1ODcxIDEwMDY0NAotLS0tIGEvY3JpdS9waWUvTWFrZWZpbGUKLSsrKyBiL2NyaXUvcGllL01ha2VmaWxlCi1AQCAtMTcsNyArMTcsNyBAQCByZXN0b3Jlci1vYmotZQkJKz0gLi8kKEFSQ0hfRElSKS9zeXNjYWxscy5idWlsdC1pbi5vCiAgIwotIENGTEFHUwkJCTo9ICQoZmlsdGVyLW91dCAtcGcgJChDRkxBR1MtR0NPViksJChDRkxBR1MpKQotIENGTEFHUwkJCSs9IC1pcXVvdGUgJChTUkNfRElSKS9jcml1L3BpZS9waWVnZW4KLS1DRkxBR1MJCQkrPSAtaXF1b3RlICQoU1JDX0RJUikvY3JpdS9hcmNoLyQoQVJDSCkvaW5jbHVkZQotK0NGTEFHUwkJCSs9IC1pcXVvdGUgJChTUkNfRElSKS9jcml1L2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlCi0gQ0ZMQUdTCQkJKz0gLWlxdW90ZSAkKFNSQ19ESVIpL2NyaXUvaW5jbHVkZQotIENGTEFHUwkJCSs9IC1pcXVvdGUgJChTUkNfRElSKQotIAorICMgU3VwcG9ydGVkIEFyY2hpdGVjdHVyZXMKIGRpZmYgLS1naXQgYS9zY3JpcHRzL25tay9zY3JpcHRzL2luY2x1ZGUubWsgYi9zY3JpcHRzL25tay9zY3JpcHRzL2luY2x1ZGUubWsKLWluZGV4IDRjNDk2ZjcuLmE3MjUwY2QgMTAwNjQ0CitpbmRleCAwNGNjYjNhLi4wZDYzYmM3IDEwMDY0NAogLS0tIGEvc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rCiArKysgYi9zY3JpcHRzL25tay9zY3JpcHRzL2luY2x1ZGUubWsKIEBAIC0yMCw3ICsyMCw3IEBAIFNVQkFSQ0ggOj0gJChzaGVsbCB1bmFtZSAtbSB8IHNlZCAgICAgICBcCi0gICAgICAgICAgICAgICAgIC1lIHMvYWFyY2g2NC4qL2FybTY0LykKKyAgICAgICAgICAgICAgICAgLWUgcy9hYXJjaDY0LiovYWFyY2g2NC8pCiAgCiAgQVJDSAkJPz0gJChTVUJBUkNIKQogLVNSQ0FSQ0ggCTo9ICQoQVJDSCkKQEAgLTU1LDE2ICs0MiwyMCBAQAogIGV4cG9ydCBTVUJBUkNIIEFSQ0ggU1JDQVJDSAogIAogZGlmZiAtLWdpdCBhL3NjcmlwdHMvbm1rL3NjcmlwdHMvdG9vbHMubWsgYi9zY3JpcHRzL25tay9zY3JpcHRzL3Rvb2xzLm1rCi1pbmRleCAwNTM4ZGRlLi5lNGFmMDY4IDEwMDY0NAoraW5kZXggNTZkYmE4NC4uMTY5ODgyMSAxMDA2NDQKIC0tLSBhL3NjcmlwdHMvbm1rL3NjcmlwdHMvdG9vbHMubWsKICsrKyBiL3NjcmlwdHMvbm1rL3NjcmlwdHMvdG9vbHMubWsKLUBAIC0yLDI4ICsyLDI4IEBAIGlmbmRlZiBfX19fbm1rX2RlZmluZWRfX3Rvb2xzCitAQCAtMiwzMCArMiwzMCBAQCBpZm5kZWYgX19fX25ta19kZWZpbmVkX190b29scwogIAogICMKICAjIFN5c3RlbSB0b29scyBzaG9ydGhhbmRzCiAtUk0JCTo9IHJtIC1mCi0tTEQJCTo9ICQoQ1JPU1NfQ09NUElMRSlsZAotLUNDCQk6PSAkKENST1NTX0NPTVBJTEUpZ2NjCisrUk0JCT89IHJtIC1mCisgSE9TVExECQk/PSBsZAorLUxECQk6PSAkKENST1NTX0NPTVBJTEUpJChIT1NUTEQpCisrTEQJCT89ICQoQ1JPU1NfQ09NUElMRSkkKEhPU1RMRCkKKyBIT1NUQ0MJCT89IGdjYworLUNDCQk6PSAkKENST1NTX0NPTVBJTEUpJChIT1NUQ0MpCiAtQ1BQCQk6PSAkKENDKSAtRQogLUFTCQk6PSAkKENST1NTX0NPTVBJTEUpYXMKIC1BUgkJOj0gJChDUk9TU19DT01QSUxFKWFyCkBAIC03OSw5ICs3MCw3IEBACiAtUFlUSE9OCQk6PSBweXRob24KIC1GSU5ECQk6PSBmaW5kCiAtU0gJCTo9ICQoc2hlbGwgaWYgWyAteCAiJCRCQVNIIiBdOyB0aGVuIGVjaG8gJCRCQVNIOyAgICAgICAgXAotK1JNCQk/PSBybSAtZgotK0xECQk/PSAkKENST1NTX0NPTVBJTEUpbGQKLStDQwkJPz0gJChDUk9TU19DT01QSUxFKWdjYworK0NDCQk/PSAkKENST1NTX0NPTVBJTEUpJChIT1NUQ0MpCiArQ1BQCQk/PSAkKENDKSAtRQogK0FTCQk/PSAkKENST1NTX0NPTVBJTEUpYXMKICtBUgkJPz0gJChDUk9TU19DT01QSUxFKWFyCkBAIC0xMDUsOCArOTQsOCBAQAogK0VUQUdTCQk/PSBldGFncwogK0NUQUdTCQk/PSBjdGFncwogIAotIGV4cG9ydCBSTSBMRCBDQyBDUFAgQVMgQVIgU1RSSVAgT0JKQ09QWSBPQkpEVU1QCisgZXhwb3J0IFJNIEhPU1RMRCBMRCBIT1NUQ0MgQ0MgQ1BQIEFTIEFSIFNUUklQIE9CSkNPUFkgT0JKRFVNUAogIGV4cG9ydCBOTSBTSCBNQUtFIE1LRElSIEFXSyBQRVJMIFBZVEhPTiBTSCBDU0NPUEUKIC0tIAotMi44LjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9kaXNhYmxlLXNlbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvZGlzYWJsZS1zZWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDVkMDM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9kaXNhYmxlLXNlbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGJkMmVlYWRkZmMxZjEyZjg3MTg0ZDg3MGNjOWExYWRkZTFjZjBiMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNCBBcHIgMjAxNyAxMzowODo0OCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBjcml1L01ha2VmaWxlLmNvbmZpZzogZXhwbGljaXRseSByZW1vdmUgc2VsaW51eCBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsZSBmZWF0dXJlXQotCi1JdCBzaG93cyB3YXJuaW5nIHdoZW4gYnVpbGQgY3JpdXMgaWYgbGlic2VsaW51eCBoYXMgYmVlbiBidWlsdCBhbHJlYWR5OgotCi0gIFdBUk5JTkc6IFFBIElzc3VlOiBjcml1IHJkZXBlbmRzIG9uIGxpYnNlbGludXgsIGJ1dCBpdCBpc24ndCBhIGJ1aWxkIGRlcGVuZGVuY3k/IFtidWlsZC1kZXBzXQotCi1BcHBseSB0aGlzIHBhdGNoIHRvIGRpc2FibGUgc2VsaW51eCBzdXBwb3J0IHdoZW4gJ3NlbGludXgnIGlzIG5vdCBpbiBQQUNLQUdFQ09ORi4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci1bTUE6IENvbnRleHQgdXBkYXRlZCB0byBhcHBseSBhZ2FpbnN0IGNyaXUgdjIuNV0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjcml1L01ha2VmaWxlLmNvbmZpZyB8IDUgLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NyaXUvTWFrZWZpbGUuY29uZmlnIGIvY3JpdS9NYWtlZmlsZS5jb25maWcKLWluZGV4IGY1MzFiM2IuLjM3MjE2ZjggMTAwNjQ0Ci0tLS0gYS9jcml1L01ha2VmaWxlLmNvbmZpZwotKysrIGIvY3JpdS9NYWtlZmlsZS5jb25maWcKLUBAIC03LDExICs3LDYgQEAgaWZlcSAoJChjYWxsIHRyeS1jYywkKEZFQVRVUkVfVEVTVF9MSUJCU0RfREVWKSwtbGJzZCksdHJ1ZSkKLSAgICAgICAgIEZFQVRVUkVfREVGSU5FUwkrPSAtRENPTkZJR19IQVNfTElCQlNECi0gZW5kaWYKLSAKLS1pZmVxICgkKGNhbGwgcGtnLWNvbmZpZy1jaGVjayxsaWJzZWxpbnV4KSx5KQotLSAgICAgICAgTElCUwkJKz0gLWxzZWxpbnV4Ci0tICAgICAgICBGRUFUVVJFX0RFRklORVMJKz0gLURDT05GSUdfSEFTX1NFTElOVVgKLS1lbmRpZgotLQotIGV4cG9ydCBERUZJTkVTICs9ICQoRkVBVFVSRV9ERUZJTkVTKQotIGV4cG9ydCBDRkxBR1MgKz0gJChGRUFUVVJFX0RFRklORVMpCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9saWItTWFrZWZpbGUtb3ZlcndyaXRlLWluc3RhbGwtbGliLXRvLWFsbG93LW11bHRpYXJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2gKaW5kZXggOGJkYThjNC4uYzI1MTJhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDJlMGM1YzY2Nzg2MDE2ZjY0NDNkYTJjMWZmMTVhZDc3ZjAxOGVjOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg5ZjliODc5MDRiZDMxMmI4MTdmZmFhN2Q4M2FiZmQ1ZTg0ZDcyM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNCBBcHIgMjAxNyAxNjoxMjowNSAtMDQwMAorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDE1OjQwOjQ5IC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGxpYi9NYWtlZmlsZTogb3ZlcndyaXRlIGluc3RhbGwtbGliLCB0byBhbGxvdyBtdWx0aWFyY2gKIAogSSBhbSBub3Qgc3VyZSB3aHkgWW9jdG8gaW5zdGFsbHMgcHl0aG9uIG1vZHVsZXMgaW4gYXJjaCBzcGVjaWZpYwpAQCAtMTMsMTUgKzEzLDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IGYxYzA4MjEuLmM3MTRkMTIgMTAwNjQ0CitpbmRleCBiMWJiMDU3Li4wNmY1YzVkIDEwMDY0NAogLS0tIGEvbGliL01ha2VmaWxlCiArKysgYi9saWIvTWFrZWZpbGUKLUBAIC01Niw3ICs1Niw3IEBAIGluc3RhbGw6IGxpYi1jIGxpYi1weSAuLi9jcml0L2NyaXQgYy9jcml1LnBjLmluCi0gCSQoUSkgc2VkIC1lICdzLEB2ZXJzaW9uQCwkKENSSVVfVkVSU0lPTiksJyAtZSAncyxAbGliZGlyQCwkKExJQkRJUiksJyAtZSAncyxAaW5jbHVkZWRpckAsJChkaXIgJChJTkNMVURFRElSKSksJyBjL2NyaXUucGMuaW4gPiBjL2NyaXUucGMKLSAJJChRKSBpbnN0YWxsIC1tIDY0NCBjL2NyaXUucGMgJChERVNURElSKSQoTElCRElSKS9wa2djb25maWcKK0BAIC01Niw3ICs1Niw3IEBAIGluc3RhbGw6IGxpYi1jIGxpYi1weSBjcml0L2NyaXQgbGliL2MvY3JpdS5wYy5pbgorIAkkKFEpIHNlZCAtZSAncyxAdmVyc2lvbkAsJChDUklVX1ZFUlNJT04pLCcgLWUgJ3MsQGxpYmRpckAsJChMSUJESVIpLCcgLWUgJ3MsQGluY2x1ZGVkaXJALCQoZGlyICQoSU5DTFVERURJUikvY3JpdS8pLCcgbGliL2MvY3JpdS5wYy5pbiA+IGxpYi9jL2NyaXUucGMKKyAJJChRKSBpbnN0YWxsIC1tIDY0NCBsaWIvYy9jcml1LnBjICQoREVTVERJUikkKExJQkRJUikvcGtnY29uZmlnCiAgCSQoRSkgIiAgSU5TVEFMTCAiIGNyaXQKLS0JJChRKSBweXRob24gLi4vc2NyaXB0cy9jcml0LXNldHVwLnB5IGluc3RhbGwgLS1yb290PSQoREVTVERJUikgLS1wcmVmaXg9JChQUkVGSVgpIC0tcmVjb3JkICQoQ1JJVF9TRVRVUF9GSUxFUykKLSsJJChRKSBweXRob24gLi4vc2NyaXB0cy9jcml0LXNldHVwLnB5IGluc3RhbGwgLS1yb290PSQoREVTVERJUikgLS1wcmVmaXg9JChQUkVGSVgpIC0tcmVjb3JkICQoQ1JJVF9TRVRVUF9GSUxFUykgLS1pbnN0YWxsLWxpYj0kKElOU1RBTExfTElCKQorLQkkKFEpICQoUFlUSE9OX0JJTikgc2NyaXB0cy9jcml0LXNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JChERVNURElSKSQoUFJFRklYKSAtLXJlY29yZCAkKENSSVRfU0VUVVBfRklMRVMpCisrCSQoUSkgJChQWVRIT05fQklOKSBzY3JpcHRzL2NyaXQtc2V0dXAucHkgaW5zdGFsbCAtLXByZWZpeD0kKERFU1RESVIpJChQUkVGSVgpIC0tcmVjb3JkICQoQ1JJVF9TRVRVUF9GSUxFUykgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJChJTlNUQUxMX0xJQikKICAuUEhPTlk6IGluc3RhbGwKICAKICB1bmluc3RhbGw6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL2ZpbGVzLzAwMDEtQWxsb3ctbmV3ZXItdmVyc2lvbnMtb2YtcmVxdWVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL2ZpbGVzLzAwMDEtQWxsb3ctbmV3ZXItdmVyc2lvbnMtb2YtcmVxdWVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjN2JiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWNvbXBvc2UvZmlsZXMvMDAwMS1BbGxvdy1uZXdlci12ZXJzaW9ucy1vZi1yZXF1ZXN0cy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDE1Y2YxYTMxZjVhZjhmMDk1MzFiYjgzN2I5MmJkNmVhNDliZDE3NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDA4OjQxOjIxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IG5ld2VyIHZlcnNpb25zIG9mIHJlcXVlc3RzCisKK2RvY2tlciBjb21wb3NlIGhhcyBzdHJpY3QgcmVxdWlyZW1lbnRzIHRvIHVzZSByZXF1ZXN0cyA8IDIuMTIKKworSG93ZXZlciBpdCB3b3JrcyB3aXRob3V0IGlzc3VlcyB3aXRoIG5ld2VyIHZlcnNpb25zLCBzbyB0aGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNoZWNrLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgorLS0tCisgc2V0dXAucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCAxOTJhMGY2Li5mNDQ0NzU3IDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMzMsNyArMzMsNyBAQCBpbnN0YWxsX3JlcXVpcmVzID0gWworICAgICAnY2FjaGVkLXByb3BlcnR5ID49IDEuMi4wLCA8IDInLAorICAgICAnZG9jb3B0ID49IDAuNi4xLCA8IDAuNycsCisgICAgICdQeVlBTUwgPj0gMy4xMCwgPCA0JywKKy0gICAgJ3JlcXVlc3RzID49IDIuNi4xLCAhPSAyLjExLjAsIDwgMi4xMicsCisrICAgICdyZXF1ZXN0cyA+PSAyLjYuMSwgIT0gMi4xMS4wJywKKyAgICAgJ3RleHR0YWJsZSA+PSAwLjkuMCwgPCAwLjEwJywKKyAgICAgJ3dlYnNvY2tldC1jbGllbnQgPj0gMC4zMi4wLCA8IDEuMCcsCisgICAgICdkb2NrZXIgPj0gMi41LjEsIDwgMy4wJywKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItY29tcG9zZS9weXRob24zLWRvY2tlci1jb21wb3NlXzEuMTYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWNvbXBvc2UvcHl0aG9uMy1kb2NrZXItY29tcG9zZV8xLjE2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3NjFkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWNvbXBvc2UvcHl0aG9uMy1kb2NrZXItY29tcG9zZV8xLjE2LjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJNdWx0aS1jb250YWluZXIgb3JjaGVzdHJhdGlvbiBmb3IgRG9ja2VyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MzViMjY2YjM4OTlhYThhOTU5ZjE3ZDQxYzU2ZGVmOCIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWxsb3ctbmV3ZXItdmVyc2lvbnMtb2YtcmVxdWVzdHMucGF0Y2giCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiOGRjYWRmMDkxNDM2MDBmY2I1NzNiNDNmNDQ2YzhmOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmI0NmE2YTJjNGQxOTNhM2ZmMWU0ZDcyMDhlZWE5MjBiNjI5YzgxZGM5MjI1N2M4N2YzZjkzMDk1Y2ZiMGJkZiIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAke1BZVEhPTl9QTn0tY2FjaGVkLXByb3BlcnR5IFwKKyAgJHtQWVRIT05fUE59LWNlcnRpZmkgXAorICAke1BZVEhPTl9QTn0tY2hhcmRldCBcCisgICR7UFlUSE9OX1BOfS1jb2xvcmFtYSBcCisgICR7UFlUSE9OX1BOfS1kb2NrZXIgXAorICAke1BZVEhPTl9QTn0tZG9ja2VyLXB5Y3JlZHMgXAorICAke1BZVEhPTl9QTn0tZG9ja2VycHR5IFwKKyAgJHtQWVRIT05fUE59LWRvY29wdCBcCisgICR7UFlUSE9OX1BOfS1lbnVtIFwKKyAgJHtQWVRIT05fUE59LWlkbmEgXAorICAke1BZVEhPTl9QTn0tanNvbnNjaGVtYSBcCisgICR7UFlUSE9OX1BOfS1weXlhbWwgXAorICAke1BZVEhPTl9QTn0tcmVxdWVzdHMgXAorICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgJHtQWVRIT05fUE59LXRlcm1pbmFsIFwKKyAgJHtQWVRIT05fUE59LXRleHR0YWJsZSBcCisgICR7UFlUSE9OX1BOfS11cmxsaWIzIFwKKyAgJHtQWVRIT05fUE59LXdlYnNvY2tldC1jbGllbnQgXAorICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1kaXN0cmlidXRpb24vZG9ja2VyLWRpc3RyaWJ1dGlvbl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1kaXN0cmlidXRpb24vZG9ja2VyLWRpc3RyaWJ1dGlvbl9naXQuYmIKaW5kZXggMDhiNmQ3MC4uYWRkNWNlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItZGlzdHJpYnV0aW9uL2RvY2tlci1kaXN0cmlidXRpb25fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWRpc3RyaWJ1dGlvbi9kb2NrZXItZGlzdHJpYnV0aW9uX2dpdC5iYgpAQCAtMywxNiArMywxOCBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDI3OTRjMGRmNWI5MDdmZGFjZTIzNWE2MTlkODAzMTQiCiAKLVNSQ1JFVl9kaXN0cmlidXRpb249IjA4MTBlYmEyYWRmMDQ4Yjc3NjIxNDcyOTkxMjExOTI0ZDllYzMxYzUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2Rpc3RyaWJ1dGlvbi5naXQ7YnJhbmNoPW1hc3RlcjtuYW1lPWRpc3RyaWJ1dGlvbjtkZXN0c3VmZml4PWdpdC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvZGlzdHJpYnV0aW9uIFwKK1NSQ1JFVl9kaXN0cmlidXRpb249IjQ4Mjk0ZDkyOGNlZDVkZDliMzc4ZjdmZDdjNmY1ZGEzZmYzZjJjODkiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2Rpc3RyaWJ1dGlvbi5naXQ7YnJhbmNoPXJlbGVhc2UvMi42O25hbWU9ZGlzdHJpYnV0aW9uO2Rlc3RzdWZmaXg9Z2l0L3NyYy9naXRodWIuY29tL2RvY2tlci9kaXN0cmlidXRpb24gXAogICAgICAgICAgICBmaWxlOi8vZG9ja2VyLXJlZ2lzdHJ5LnNlcnZpY2UgXAogICAgICAgICAgICIKIAogUEFDS0FHRVMgPSsgImRvY2tlci1yZWdpc3RyeSIKIAotUFYgPSAidjIuNi4wLXJjK2dpdCR7U1JDUFZ9IgorUFYgPSAidjIuNi4yIgogUyA9ICIke1dPUktESVJ9L2dpdC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvZGlzdHJpYnV0aW9uIgogCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCiBpbmhlcml0IGdvYXJjaAogaW5oZXJpdCBnbwogCkBAIC0zMyw2ICszNSw4IEBACiAJZXhwb3J0IEdPX0dDRkxBR1M9IiIKIAlleHBvcnQgQ0dPX0xERkxBR1M9IiR7QlVJTERTREtfTERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIAorCWNkICR7U30KKwogCW9lX3J1bm1ha2UgYmluYXJpZXMKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZG9ja2VyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlcl9naXQuYmIKaW5kZXggNzQxNzBjYi4uNGJhNWU4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZG9ja2VyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9kb2NrZXJfZ2l0LmJiCkBAIC0xOCwxMSArMTgsMTMgQEAKICBzdWJ0bGUgYW5kL29yIGdsYXJpbmcgaXNzdWVzLiBcCiAgIgogCi1TUkNSRVZfZG9ja2VyID0gIjQ5YmY0NzRmOWVkN2NlNzE0M2E1OWQxOTY0ZmY3YjdmZDliNTIxNzgiCi1TUkNSRVZfbGlibmV0d29yaz0iMGY1MzQzNTRiODEzMDAzYTc1NDYwNjY4OTcyMmZlMjUzMTAxYmM0ZSIKK1NSQ1JFVl9kb2NrZXIgPSAiZTYzOWE3MGZiZTk5OWQ5NjM1NGE1YmNmNTYwMjMxYjdiOGFhOTM1YyIKK1NSQ1JFVl9saWJuZXR3b3JrID0gIjI2YWRkZjQzYTVkOTI1ZmY3OWQyNjJkYmJkYjUzNDRiYzJiNmUxOTgiCitTUkNSRVZfY2xpID0gImE3NjUyMThmMTk4OGU4NWI2OGFhMzk3N2YzNDg5M2VjN2IwNTlhNjAiCiBTUkNfVVJJID0gIlwKLQlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIuZ2l0O25vYnJhbmNoPTE7bmFtZT1kb2NrZXIgXAorCWdpdDovL2dpdGh1Yi5jb20vbW9ieS9tb2J5LmdpdDtub2JyYW5jaD0xO25hbWU9ZG9ja2VyIFwKIAlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrLmdpdDticmFuY2g9bWFzdGVyO25hbWU9bGlibmV0d29yaztkZXN0c3VmZml4PWxpYm5ldHdvcmsgXAorCWdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2NsaTticmFuY2g9bWFzdGVyO25hbWU9Y2xpO2Rlc3RzdWZmaXg9Y2xpIFwKIAlmaWxlOi8vZG9ja2VyLmluaXQgXAogCWZpbGU6Ly9oaS5Eb2NrZXJmaWxlIFwKIAlmaWxlOi8vY29udGV4dC11c2UtZ29sYW5nLm9yZy14LW5ldC1wa2ctdW50aWwtd2UtbW92ZS10by1nby5wYXRjaCBcCkBAIC0zMCwxMSArMzIsMTMgQEAKIAogIyBBcGFjaGUtMi4wIGZvciBkb2NrZXIKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFhZGMzMGY5YzE0ZDg3NmRlZDdiZWRjMGFmZDJkM2Q3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT05NzQwZDA5M2EwODA1MzBiNWM1YzY1NzNkZjlhZjQ1YSIKKworR09fSU1QT1JUID0gImltcG9ydCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotRE9DS0VSX1ZFUlNJT04gPSAiMS4xMy4wIgorRE9DS0VSX1ZFUlNJT04gPSAiMTcuMDYuMCIKIFBWID0gIiR7RE9DS0VSX1ZFUlNJT059K2dpdCR7U1JDUkVWX2RvY2tlcn0iCiAKIERFUEVORFMgPSAiIFwKQEAgLTQzLDcgKzQ3LDYgQEAKICAgICBnby1jb250ZXh0IFwKICAgICBnby1tdXggXAogICAgIGdvLXBhdHJpY2lhIFwKLSAgICBnby1saWJ0cnVzdCBcCiAgICAgZ28tbG9ncnVzIFwKICAgICBnby1mc25vdGlmeSBcCiAgICAgZ28tZGJ1cyBcCkBAIC04MCwyMCArODMsMjEgQEAKIAkjIFNldCBHT1BBVEguIFNlZSAnUEFDS0FHRVJTLm1kJy4gRG9uJ3QgcmVseSBvbgogCSMgZG9ja2VyIHRvIGRvd25sb2FkIGl0cyBkZXBlbmRlbmNpZXMgYnV0IHJhdGhlcgogCSMgdXNlIGRlcGVuZGVuY2llcyBwYWNrYWdlZCBpbmRlcGVuZGVudGx5LgotCWNkICR7U30KKwljZCAke1N9L3NyYy9pbXBvcnQKIAlybSAtcmYgLmdvcGF0aAogCW1rZGlyIC1wIC5nb3BhdGgvc3JjLyIkKGRpcm5hbWUgIiR7RE9DS0VSX1BLR30iKSIKIAlsbiAtc2YgLi4vLi4vLi4vLi4gLmdvcGF0aC9zcmMvIiR7RE9DS0VSX1BLR30iCiAKIAlta2RpciAtcCAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlcgotCWxuIC1zZiAuLi8uLi8uLi8uLi8uLi9saWJuZXR3b3JrIC5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2xpYm5ldHdvcmsKKwlsbiAtc2YgJHtXT1JLRElSfS9saWJuZXR3b3JrIC5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2xpYm5ldHdvcmsKKwlsbiAtc2YgJHtXT1JLRElSfS9jbGkgLmdvcGF0aC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvY2xpCiAKLQlleHBvcnQgR09QQVRIPSIke1N9Ly5nb3BhdGg6JHtTfS92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCiAJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgotCWNkIC0KIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCiAJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcworCWV4cG9ydCBHT0FSQ0g9JHtUQVJHRVRfR09BUkNIfQogCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtDRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCkBAIC0xMDcsNyArMTExLDEwIEBACiAJICAuL2hhY2svbWFrZS5zaCBkeW5iaW5hcnkKIAogCSMgYnVpbGQgdGhlIHByb3h5Ci0JZ28gYnVpbGQgLW8gJHtTfS9kb2NrZXItcHJveHkgZ2l0aHViLmNvbS9kb2NrZXIvbGlibmV0d29yay9jbWQvcHJveHkKKwlnbyBidWlsZCAtbyAke1N9L3NyYy9pbXBvcnQvZG9ja2VyLXByb3h5IGdpdGh1Yi5jb20vZG9ja2VyL2xpYm5ldHdvcmsvY21kL3Byb3h5CisKKyAgICAgICAgIyBidWlsZCB0aGUgY2xpCisJZ28gYnVpbGQgLW8gJHtTfS9zcmMvaW1wb3J0L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1jbGllbnQvZG9ja2VyIGdpdGh1Yi5jb20vZG9ja2VyL2NsaS9jbWQvZG9ja2VyCiB9CiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke1BOfScsJycsZCl9IgpAQCAtMTE3LDE5ICsxMjQsMTkgQEAKIAogSU5JVFNDUklQVF9QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywnJHtQTn0nLCcnLGQpfSIKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCdkb2NrZXIuaW5pdCcsJycsZCl9IgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAiJHtPU19ERUZBVUxUX0lOSVRTQ1JJUFRfUEFSQU1TfSIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gImRlZmF1bHRzIgogCiBkb19pbnN0YWxsKCkgewogCW1rZGlyIC1wICR7RH0vJHtiaW5kaXJ9Ci0JY3AgJHtTfS9idW5kbGVzL2xhdGVzdC9keW5iaW5hcnktY2xpZW50L2RvY2tlciAke0R9LyR7YmluZGlyfS9kb2NrZXIKLQljcCAke1N9L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1kYWVtb24vZG9ja2VyZCAke0R9LyR7YmluZGlyfS9kb2NrZXJkCi0JY3AgJHtTfS9kb2NrZXItcHJveHkgJHtEfS8ke2JpbmRpcn0vZG9ja2VyLXByb3h5CisJY3AgJHtTfS9zcmMvaW1wb3J0L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1jbGllbnQvZG9ja2VyICR7RH0vJHtiaW5kaXJ9L2RvY2tlcgorCWNwICR7U30vc3JjL2ltcG9ydC9idW5kbGVzL2xhdGVzdC9keW5iaW5hcnktZGFlbW9uL2RvY2tlcmQgJHtEfS8ke2JpbmRpcn0vZG9ja2VyZAorCWNwICR7U30vc3JjL2ltcG9ydC9kb2NrZXItcHJveHkgJHtEfS8ke2JpbmRpcn0vZG9ja2VyLXByb3h5CiAKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCiAJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQkJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb250cmliL2luaXQvc3lzdGVtZC9kb2NrZXIuKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSA2NDQgJHtTfS9zcmMvaW1wb3J0L2NvbnRyaWIvaW5pdC9zeXN0ZW1kL2RvY2tlci4qICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCQkjIHJlcGxhY2VzIG9uZSBjb3BpZWQgZnJvbSBhYm92ZSB3aXRoIG9uZSB0aGF0IHVzZXMgdGhlIGxvY2FsIHJlZ2lzdHJ5IGZvciBhIG1pcnJvcgotCQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbnRyaWIvaW5pdC9zeXN0ZW1kL2RvY2tlci5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDY0NCAke1N9L3NyYy9pbXBvcnQvY29udHJpYi9pbml0L3N5c3RlbWQvZG9ja2VyLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCiAJZWxzZQogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kb2NrZXIuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZG9ja2VyLmluaXQKQEAgLTEzNyw3ICsxNDQsNyBAQAogCiAJbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLwogCWNwICR7V09SS0RJUn0vaGkuRG9ja2VyZmlsZSAke0R9JHtkYXRhZGlyfS9kb2NrZXIvCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9jaGVjay1jb25maWcuc2ggJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLworCWluc3RhbGwgLW0gMDc1NSAke1N9L3NyYy9pbXBvcnQvY29udHJpYi9jaGVjay1jb25maWcuc2ggJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLwogfQogCiBpbmhlcml0IHVzZXJhZGQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy9jb250ZXh0LXVzZS1nb2xhbmcub3JnLXgtbmV0LXBrZy11bnRpbC13ZS1tb3ZlLXRvLWdvLnBhdGNoCmluZGV4IDI0MGI3NDQuLjdlZDYwNmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZmlsZXMvY29udGV4dC11c2UtZ29sYW5nLm9yZy14LW5ldC1wa2ctdW50aWwtd2UtbW92ZS10by1nby5wYXRjaApAQCAtMTEsMjAgKzExLDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CiAtLS0KLSBjbGllbnQvUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBjbGllbnQvY2xpZW50LmdvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBkYWVtb24vaW5mb191bml4LmdvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBpbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2FwaV9hdHRhY2hfdGVzdC5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBpbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSB2ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9sb2dicm9rZXIvc3Vic2NyaXB0aW9uLmdvICAgICB8IDIgKy0KLSB2ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9zdGF0ZS9yYWZ0L3N0b3JhZ2Uvd2Fsd3JhcC5nbyB8IDIgKy0KLSA3IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKyBjbGllbnQvUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQorIGNsaWVudC9jbGllbnQuZ28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCisgZGFlbW9uL2luZm9fdW5peC5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KKyBpbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2FwaV9hdHRhY2hfdGVzdC5nbyAgICAgICAgIHwgICAgMiArLQorIGludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28gfCAgICAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jbGllbnQvUkVBRE1FLm1kIGIvY2xpZW50L1JFQURNRS5tZAotaW5kZXggMDU5ZGZiMy4uOWRlNTRhYSAxMDA2NDQKLS0tLSBhL2NsaWVudC9SRUFETUUubWQKLSsrKyBiL2NsaWVudC9SRUFETUUubWQKLUBAIC04LDcgKzgsNyBAQCBGb3IgZXhhbXBsZSwgdG8gbGlzdCBydW5uaW5nIGNvbnRhaW5lcnMgKHRoZSBlcXVpdmFsZW50IG9mIGBkb2NrZXIgcHNgKToKKy0tLSBhL3NyYy9pbXBvcnQvY2xpZW50L1JFQURNRS5tZAorKysrIGIvc3JjL2ltcG9ydC9jbGllbnQvUkVBRE1FLm1kCitAQCAtOCw3ICs4LDcgQEAgRm9yIGV4YW1wbGUsIHRvIGxpc3QgcnVubmluZyBjb250YWluZXJzCiAgcGFja2FnZSBtYWluCiAgCiAgaW1wb3J0ICgKQEAgLTMzLDExICsyOSw5IEBACiAgCSJmbXQiCiAgCiAgCSJnaXRodWIuY29tL2RvY2tlci9kb2NrZXIvYXBpL3R5cGVzIgotZGlmZiAtLWdpdCBhL2NsaWVudC9jbGllbnQuZ28gYi9jbGllbnQvY2xpZW50LmdvCi1pbmRleCBhOWJkYWI2Li45NTkzM2FmIDEwMDY0NAotLS0tIGEvY2xpZW50L2NsaWVudC5nbwotKysrIGIvY2xpZW50L2NsaWVudC5nbwotQEAgLTE5LDcgKzE5LDcgQEAgRm9yIGV4YW1wbGUsIHRvIGxpc3QgcnVubmluZyBjb250YWluZXJzICh0aGUgZXF1aXZhbGVudCBvZiAiZG9ja2VyIHBzIik6CistLS0gYS9zcmMvaW1wb3J0L2NsaWVudC9jbGllbnQuZ28KKysrKyBiL3NyYy9pbXBvcnQvY2xpZW50L2NsaWVudC5nbworQEAgLTE5LDcgKzE5LDcgQEAgRm9yIGV4YW1wbGUsIHRvIGxpc3QgcnVubmluZyBjb250YWluZXJzCiAgCXBhY2thZ2UgbWFpbgogIAogIAlpbXBvcnQgKApAQCAtNDYsMTAgKzQwLDggQEAKICAJCSJmbXQiCiAgCiAgCQkiZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyL2FwaS90eXBlcyIKLWRpZmYgLS1naXQgYS9kYWVtb24vaW5mb191bml4LmdvIGIvZGFlbW9uL2luZm9fdW5peC5nbwotaW5kZXggOWM0MWMwZS4uNTdmOGE3YiAxMDA2NDQKLS0tLSBhL2RhZW1vbi9pbmZvX3VuaXguZ28KLSsrKyBiL2RhZW1vbi9pbmZvX3VuaXguZ28KKy0tLSBhL3NyYy9pbXBvcnQvZGFlbW9uL2luZm9fdW5peC5nbworKysrIGIvc3JjL2ltcG9ydC9kYWVtb24vaW5mb191bml4LmdvCiBAQCAtMyw3ICszLDcgQEAKICBwYWNrYWdlIGRhZW1vbgogIApAQCAtNTksMTAgKzUxLDggQEAKICAJIm9zL2V4ZWMiCiAgCSJzdHJpbmdzIgogIAotZGlmZiAtLWdpdCBhL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvIGIvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KLWluZGV4IGQ0M2JmM2EuLmU1ODAyYTcgMTAwNjQ0Ci0tLS0gYS9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2FwaV9hdHRhY2hfdGVzdC5nbwotKysrIGIvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KKy0tLSBhL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KKysrKyBiL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KIEBAIC0zLDcgKzMsNyBAQCBwYWNrYWdlIG1haW4KICBpbXBvcnQgKAogIAkiYnVmaW8iCkBAIC03MiwxMCArNjIsOCBAQAogIAkiaW8iCiAgCSJuZXQiCiAgCSJuZXQvaHR0cCIKLWRpZmYgLS1naXQgYS9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvIGIvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbwotaW5kZXggMjI0NDVlNS4uZDBhZmM4YyAxMDA2NDQKLS0tLSBhL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28KLSsrKyBiL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28KKy0tLSBhL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbworKysrIGIvc3JjL2ltcG9ydC9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvCiBAQCAtMyw3ICszLDcgQEAKICBwYWNrYWdlIG1haW4KICAKQEAgLTg1LDMyICs3MywzIEBACiAgCSJmbXQiCiAgCSJpby9pb3V0aWwiCiAgCSJvcyIKLWRpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9sb2dicm9rZXIvc3Vic2NyaXB0aW9uLmdvIGIvdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvbG9nYnJva2VyL3N1YnNjcmlwdGlvbi5nbwotaW5kZXggNmIzMjk1YS4uY2JmY2Y3ZSAxMDA2NDQKLS0tLSBhL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL2xvZ2Jyb2tlci9zdWJzY3JpcHRpb24uZ28KLSsrKyBiL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL2xvZ2Jyb2tlci9zdWJzY3JpcHRpb24uZ28KLUBAIC0xLDcgKzEsNyBAQAotIHBhY2thZ2UgbG9nYnJva2VyCi0gCi0gaW1wb3J0ICgKLS0JImNvbnRleHQiCi0rCSJnb2xhbmcub3JnL3gvbmV0L2NvbnRleHQiCi0gCSJmbXQiCi0gCSJzdHJpbmdzIgotIAkic3luYyIKLWRpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9zdGF0ZS9yYWZ0L3N0b3JhZ2Uvd2Fsd3JhcC5nbyBiL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL3N0YXRlL3JhZnQvc3RvcmFnZS93YWx3cmFwLmdvCi1pbmRleCA1YTZjNzFhLi5lZmU1OTIxIDEwMDY0NAotLS0tIGEvdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvc3RhdGUvcmFmdC9zdG9yYWdlL3dhbHdyYXAuZ28KLSsrKyBiL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL3N0YXRlL3JhZnQvc3RvcmFnZS93YWx3cmFwLmdvCi1AQCAtMSw3ICsxLDcgQEAKLSBwYWNrYWdlIHN0b3JhZ2UKLSAKLSBpbXBvcnQgKAotLQkiY29udGV4dCIKLSsJImdvbGFuZy5vcmcveC9uZXQvY29udGV4dCIKLSAJImlvIgotIAkiaW8vaW91dGlsIgotIAkib3MiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2RvY2tlci5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZmlsZXMvZG9ja2VyLmluaXQKaW5kZXggOWMwMWM3NS4uMmU4ZWI5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZmlsZXMvZG9ja2VyLmluaXQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZmlsZXMvZG9ja2VyLmluaXQKQEAgLTI4LDYgKzI4LDcgQEAKIHBpZGZpbGU9Ii92YXIvcnVuLyRwcm9nLnBpZCIKIGxvY2tmaWxlPSIvdmFyL2xvY2svc3Vic3lzLyRwcm9nIgogbG9nZmlsZT0iL3Zhci9sb2cvJHByb2ciCitvdGhlcl9hcmdzPSItLXJlZ2lzdHJ5LW1pcnJvcj1odHRwOi8vbG9jYWxob3N0OjUwMDAgLS1pbnNlY3VyZS1yZWdpc3RyeT1odHRwOi8vbG9jYWxob3N0OjUwMDAgLS1yYXctbG9ncyIKIAogWyAtZSAvZXRjL3N5c2NvbmZpZy8kcHJvZyBdICYmIC4gL2V0Yy9zeXNjb25maWcvJHByb2cKIApAQCAtMzgsOCArMzksOCBAQAogCiAgICAgaWYgISBbIC1mICRwaWRmaWxlIF07IHRoZW4KICAgICAgICAgcHJpbnRmICJTdGFydGluZyAkcHJvZzpcdCIKLSAgICAgICAgZWNobyAiXG4kKGRhdGUpXG4iID4+ICRsb2dmaWxlCi0gICAgICAgICIkdW5zaGFyZSIgLW0gLS0gJGV4ZWMgLWQgJG90aGVyX2FyZ3MgJj4+ICRsb2dmaWxlICYKKyAgICAgICAgZWNobyAtZSAiXG4kKGRhdGUpXG4iID4+ICRsb2dmaWxlCisgICAgICAgICIkdW5zaGFyZSIgLW0gLS0gJGV4ZWMgZGFlbW9uICRvdGhlcl9hcmdzICY+PiAkbG9nZmlsZSAmCiAgICAgICAgIHBpZD0kIQogICAgICAgICB0b3VjaCAkbG9ja2ZpbGUKICAgICAgICAgIyB3YWl0IHVwIHRvIDEwIHNlY29uZHMgZm9yIHRoZSBwaWRmaWxlIHRvIGV4aXN0LiAgc2VlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2t1YmVybmV0ZXMva3ViZXJuZXRlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2t1YmVybmV0ZXMva3ViZXJuZXRlc19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3MTYxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMva3ViZXJuZXRlcy9rdWJlcm5ldGVzX2dpdC5iYgpAQCAtMCwwICsxLDk4IEBACitIT01FUEFHRSA9ICJnaXQ6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva3ViZXJuZXRlcyIKK1NVTU1BUlkgPSAiUHJvZHVjdGlvbi1HcmFkZSBDb250YWluZXIgU2NoZWR1bGluZyBhbmQgTWFuYWdlbWVudCIKK0RFU0NSSVBUSU9OID0gIkt1YmVybmV0ZXMgaXMgYW4gb3BlbiBzb3VyY2Ugc3lzdGVtIGZvciBtYW5hZ2luZyBjb250YWluZXJpemVkIFwKK2FwcGxpY2F0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMsIHByb3ZpZGluZyBiYXNpYyBtZWNoYW5pc21zIGZvciBkZXBsb3ltZW50LCBcCittYWludGVuYW5jZSwgYW5kIHNjYWxpbmcgb2YgYXBwbGljYXRpb25zLiBcCisiCisKK1NSQ1JFVl9rdWJlcm5ldGVzID0gIjRiODM5NDY1Zjg0ZTdmYWY4NzZjNTE3MDNhYWY0OWIzN2ZkMTBkOWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlcm5ldGVzLmdpdDtub2JyYW5jaD0xO25hbWU9a3ViZXJuZXRlcyBcCisgICAgICAgICAgIgorCitERVBFTkRTICs9ICJyc3luYy1uYXRpdmUgXAorICAgICAgICAgICAgY29yZXV0aWxzLW5hdGl2ZSBcCisgICAgICAgICAgICIKKworUEFDS0FHRVMgPSsgImt1YmVhZG0iCitQQUNLQUdFUyA9KyAia3ViZWN0bCIKK1BBQ0tBR0VTID0rICJrdWJlbGV0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCisjIE5vdGU6IHdlIGFyZSBleHBsaWNpdGx5ICpub3QqIGFkZGluZyBkb2NrZXIgdG8gdGhlIHJkZXBlbmRzLCBzaW5jZSB3ZSBhbGxvdworIyAgICAgICBiYWNrZW5kcyBsaWtlIGNyaS1vIHRvIGJlIHVzZWQuCitSREVQRU5EU18ke1BOfSArPSAia3ViZWFkbSBcCisgICAgICAgICAgICAgICAgICAga3ViZWN0bCBcCisgICAgICAgICAgICAgICAgICAga3ViZWxldCBcCisgICAgICAgICAgICAgICAgICAgY25pIgorCitSREVQRU5EU19rdWJlYWRtID0gImt1YmVsZXQga3ViZWN0bCIKK1JERVBFTkRTX2t1YmVsZXQgPSAiaXB0YWJsZXMgc29jYXQgdXRpbC1saW51eCBldGh0b29sIGlwcm91dGUyIGVidGFibGVzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCitQViA9ICIxLjkuMC1hbHBoYS4xK2dpdCR7U1JDUkVWX2t1YmVybmV0ZXN9IgorCitpbmhlcml0IHN5c3RlbWQKK2luaGVyaXQgZ28KK2luaGVyaXQgZ29hcmNoCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKKwlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nbyIKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQ6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKKworCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCisJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcworCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKKwlleHBvcnQgQ0ZMQUdTPSIiCisJZXhwb3J0IExERkxBR1M9IiIKKwlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisKKwkjIGxpbmsgZml4dXBzIGZvciBjb21waWxhdGlvbgorCXJtIC1mICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisJbG4gLXNmIC4vICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7TERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCWNkICR7U30vc3JjL2ltcG9ydAorCSMgdG8gbGltaXQgd2hhdCBpcyBidWlsdCwgdXNlICdXSEFUJywgaS5lLiBtYWtlIFdIQVQ9Y21kL2t1YmVsZXQKKwltYWtlIGFsbAorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rdWJlbGV0LnNlcnZpY2UuZC8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0va3ViZXJuZXRlcy9tYW5pZmVzdHMvCisKKyAgICBpbnN0YWxsIC1tIDc1NSAtRCAke1N9L3NyYy9pbXBvcnQvX291dHB1dC9iaW4va3ViZSogJHtEfS8ke2JpbmRpcn0KKworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9pbXBvcnQvYnVpbGQvZGVicy9rdWJlbGV0LnNlcnZpY2UgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9pbXBvcnQvYnVpbGQvZGVicy8xMC1rdWJlYWRtLmNvbmYgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2t1YmVsZXQuc2VydmljZS5kLworfQorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywna3ViZWxldCcsJycsZCl9IgorU1lTVEVNRF9TRVJWSUNFX2t1YmVsZXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdrdWJlbGV0LnNlcnZpY2UnLCcnLGQpfSIKK1NZU1RFTURfQVVUT19FTkFCTEVfa3ViZWxldCA9ICJlbmFibGUiCisKK0ZJTEVTX2t1YmVhZG0gPSAiJHtiaW5kaXJ9L2t1YmVhZG0gJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rdWJlbGV0LnNlcnZpY2UuZC8qIgorRklMRVNfa3ViZWN0bCA9ICIke2JpbmRpcn0va3ViZWN0bCIKK0ZJTEVTX2t1YmVsZXQgPSAiJHtiaW5kaXJ9L2t1YmVsZXQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rdWJlbGV0LnNlcnZpY2UgJHtzeXNjb25mZGlyfS9rdWJlcm5ldGVzL21hbmlmZXN0cy8iCisKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MgYWxyZWFkeS1zdHJpcHBlZCIKKworZGVsdGFzayBjb21waWxlX3B0ZXN0X2Jhc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL0dlbmVyYXRlLWx4Yy1yZXN0b3JlLW5ldC1wcm9wZXJseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL0dlbmVyYXRlLWx4Yy1yZXN0b3JlLW5ldC1wcm9wZXJseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFkYjczMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9HZW5lcmF0ZS1seGMtcmVzdG9yZS1uZXQtcHJvcGVybHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotRnJvbSBlMDhmMzU3M2IzNTYxZjFmMDQ5MDYyNGY3Y2E5NWI3Y2NkODE1N2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotTWVzc2FnZS1JZDogPGUwOGYzNTczYjM1NjFmMWYwNDkwNjI0ZjdjYTk1YjdjY2Q4MTU3Y2IuMTQzNTE3NzQxOC5naXQuSmltLlNvbWVydmlsbGVAd2luZHJpdmVyLmNvbT4KLUZyb206IEppbSBTb21lcnZpbGxlIDxKaW0uU29tZXJ2aWxsZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyNCBKdW4gMjAxNSAxNjoxNjozOCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvMV0gR2VuZXJhdGUgbHhjLXJlc3RvcmUtbmV0IHByb3Blcmx5Ci0KLUl0J3MgYSBzY3JpcHQgdGhhdCBzaG91bGQgYmUgcnVuIHRocm91Z2ggdGhlIGNvbmZpZ3VyZQotbWVjaGFuaXNtIHRoZSBzYW1lIGFzIHRoZSBvdGhlcnMuICBXZSBzaW1wbHkgcmVuYW1lIGl0Ci10byBoYXZlIGEgLmluIGV4dGVuc2lvbiBhbmQgYWRkIGl0IHRvIGNvbmZpZ3VyZS5hYyAuCi0KLUFsc28sIGJ5IGdlbmVyYXRpbmcgdGhlIHNjcmlwdCBmcm9tIGEgLmluIGZpbGUsIGl0IGdldHMKLXBsYWNlZCBpbnRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGlzIHBsYXlzIG5pY2Ugd2l0aAotYnVpbGQgc3lzdGVtcyB0aGF0IGtlZXAgdGhlIHNyYyBzZXBhcmF0ZSBmcm9tIHRoZSBidWlsZAotZGlyZWN0b3J5LiAgV2l0aG91dCB0aGlzIGNoYW5nZSwgdGhlIGluc3RhbGwgc3RlcCB3b24ndAotZmluZCB0aGUgbHhjLXJlc3RvcmUtbmV0IHNjcmlwdCBhcyBpdCBzdGlsbCBqdXN0IHJlc2lkZXMKLWluIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBub3QgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBOb3QgYXBwbGljYWJsZS4gIFRoaXMgc2NyaXB0IGhhcyBhbHJlYWR5Ci1iZWVuIHJlYXJjaGl0ZWN0ZWQgb3V0IG9mIGV4aXN0ZW5jZSBieQotY2JhOThkMTI3YmY0OTBiMDE4YTAxNmI3OTJhZTA1ZmQyZDI5YzVlZToKLSJjL3I6IHVzZSBjcml1IG9wdGlvbiBpbnN0ZWFkIG9mIGx4Yy1yZXN0b3JlLW5ldAotCi1BcyBvZiBjcml1IDEuNSwgdGhlIC0tdmV0aC1wYWlyIGFyZ3VtZW50IHN1cHBvcnRzIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyIHRoYXQKLWlzIHRoZSBicmlkZ2UgbmFtZSB0byBhdHRhY2ggdG8uIFRoaXMgZW5hYmxlcyB1cyB0byBnZXQgcmlkIG9mIHRoZSBnb29meQotYWN0aW9uLXNjcmlwdCBoYWNrIHRoYXQgcGFzc2VkIGJyaWRnZSBuYW1lcyBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLVRoaXMgcGF0Y2ggaXMgb24gdG9wIG9mIHRoZSBzeXN0ZW1kL2x4Y2ZzIG1vdW50IHJld29yayBwYXRjaCwgYXMgd2UgcHJvYmFibHkKLXdhbnQgdG8gd2FpdCB0byB1c2UgMS41IG9wdGlvbnMgdW50aWwgaXQgaGFzIGJlZW4gb3V0IGZvciBhIHdoaWxlIGFuZCBpcyBpbgotZGlzdHJvcy4KLQotU2lnbmVkLW9mZi1ieTogVHljaG8gQW5kZXJzZW4gPHR5Y2hvLmFuZGVyc2VuQGNhbm9uaWNhbC5jb20+Ci1BY2tlZC1ieTogU2VyZ2UgRS4gSGFsbHluIDxzZXJnZS5oYWxseW5AdWJ1bnR1LmNvbT4iCi0KLVNpZ25lZC1vZmYtYnk6IEppbSBTb21lcnZpbGxlIDxKaW0uU29tZXJ2aWxsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQgICAgfCAyNiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9seGMvbHhjLXJlc3RvcmUtbmV0LmluIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDc1NSBzcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldAotIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldC5pbgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NzRiMmNkLi40OTcyODAzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03NjgsNiArNzY4LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFsKLSAJc3JjL2x4Yy9sZWdhY3kvbHhjLWxzCi0gCXNyYy9seGMvbHhjLmZ1bmN0aW9ucwotIAlzcmMvbHhjL3ZlcnNpb24uaAotKwlzcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldAotIAlzcmMvcHl0aG9uLWx4Yy9NYWtlZmlsZQotIAlzcmMvcHl0aG9uLWx4Yy9zZXR1cC5weQotIAotZGlmZiAtLWdpdCBhL3NyYy9seGMvbHhjLXJlc3RvcmUtbmV0IGIvc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggNmFlM2MxOS4uMDAwMDAwMAotLS0tIGEvc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQKLSsrKyAvZGV2L251bGwKLUBAIC0xLDI2ICswLDAgQEAKLS0jIS9iaW4vc2gKLS0KLS1zZXQgLWUKLS0KLS1pPTAKLS13aGlsZSB0cnVlOyBkbwotLQlldmFsICJicmlkZ2U9XCRMWENfQ1JJVV9CUklER0UkaSIKLS0JZXZhbCAidmV0aD1cJExYQ19DUklVX1ZFVEgkaSIKLS0KLS0JaWYgWyAteiAiJGJyaWRnZSIgXSB8fCBbIC16ICIkdmV0aCIgXTsgdGhlbgotLQkJZXhpdCAwCi0tCWZpCi0tCi0tCWlmIFsgIiRDUlRPT0xTX1NDUklQVF9BQ1RJT04iID0gIm5ldHdvcmstbG9jayIgXTsgdGhlbgotLQkJYnJjdGwgZGVsaWYgJGJyaWRnZSAkdmV0aAotLQlmaQotLQotLQlpZiBbICIkQ1JUT09MU19TQ1JJUFRfQUNUSU9OIiA9ICJuZXR3b3JrLXVubG9jayIgXTsgdGhlbgotLQkJYnJjdGwgYWRkaWYgJGJyaWRnZSAkdmV0aAotLQkJaXAgbGluayBzZXQgZGV2ICR2ZXRoIHVwCi0tCWZpCi0tCi0tCWk9JCgoaSsxKSkKLS1kb25lCi0tCi0tZXhpdCAxCi1kaWZmIC0tZ2l0IGEvc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQuaW4gYi9zcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldC5pbgotbmV3IGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAuLjZhZTNjMTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9seGMvbHhjLXJlc3RvcmUtbmV0LmluCi1AQCAtMCwwICsxLDI2IEBACi0rIyEvYmluL3NoCi0rCi0rc2V0IC1lCi0rCi0raT0wCi0rd2hpbGUgdHJ1ZTsgZG8KLSsJZXZhbCAiYnJpZGdlPVwkTFhDX0NSSVVfQlJJREdFJGkiCi0rCWV2YWwgInZldGg9XCRMWENfQ1JJVV9WRVRIJGkiCi0rCi0rCWlmIFsgLXogIiRicmlkZ2UiIF0gfHwgWyAteiAiJHZldGgiIF07IHRoZW4KLSsJCWV4aXQgMAotKwlmaQotKwotKwlpZiBbICIkQ1JUT09MU19TQ1JJUFRfQUNUSU9OIiA9ICJuZXR3b3JrLWxvY2siIF07IHRoZW4KLSsJCWJyY3RsIGRlbGlmICRicmlkZ2UgJHZldGgKLSsJZmkKLSsKLSsJaWYgWyAiJENSVE9PTFNfU0NSSVBUX0FDVElPTiIgPSAibmV0d29yay11bmxvY2siIF07IHRoZW4KLSsJCWJyY3RsIGFkZGlmICRicmlkZ2UgJHZldGgKLSsJCWlwIGxpbmsgc2V0IGRldiAkdmV0aCB1cAotKwlmaQotKwotKwlpPSQoKGkrMSkpCi0rZG9uZQotKwotK2V4aXQgMQotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL1VzZS1BQ19IRUFERVJfTUFKT1ItdG8tZGV0ZWN0LW1ham9yLW1pbm9yLW1ha2VkZXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWRldGVjdC1tYWpvci1taW5vci1tYWtlZGV2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWNlY2MwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL1VzZS1BQ19IRUFERVJfTUFKT1ItdG8tZGV0ZWN0LW1ham9yLW1pbm9yLW1ha2VkZXYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotRnJvbSA1Yzk1NzY3MWE1MTE0NDFiMTEyYjEzN2I4OGJmMGIxZjMxYWRhYzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2VyZ2VpIFRyb2ZpbW92aWNoIDxzaWFyaGVpdEBnb29nbGUuY29tPgotRGF0ZTogU2F0LCAyMSBKYW4gMjAxNyAxMTo1NzoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBVc2UgQUNfSEVBREVSX01BSk9SIHRvIGRldGVjdCBtYWpvcigpL21pbm9yKCkvbWFrZWRldigpCi0KLWNvbW1pdCBhZjY4MjRmY2U5Yzk1MzZmYmNhYmVmOGQ1NTQ3ZjZjNDg2ZjU1ZmRmIGZyb20KLWdpdDovL2dpdGh1Yi5jb20vbHhjL2x4Yy5naXQKLQotQmVmb3JlIHRoZSBjaGFuZ2UgYnVpbGQgZmFpbGVkIG9uIEdlbnRvbyBhczoKLQotICBiZGV2L2x4Y2x2bS5jOiBJbiBmdW5jdGlvbiAnbHZtX2RldGVjdCc6Ci0gIGJkZXYvbHhjbHZtLmM6MTQwOjQ6IGVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnbWFqb3InIFstV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQotICAgIG1ham9yKHN0YXRidWYuc3RfcmRldiksIG1pbm9yKHN0YXRidWYuc3RfcmRldikpOwotICAgIF5+fn5+Ci0gIGJkZXYvbHhjbHZtLmM6MTQwOjI4OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ21pbm9yJyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KLSAgICBtYWpvcihzdGF0YnVmLnN0X3JkZXYpLCBtaW5vcihzdGF0YnVmLnN0X3JkZXYpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgotCi1nbGliYyBwbGFucyB0byByZW1vdmUgPHN5cy9zeXNtYWNyb3MuaD4gZnJvbSBnbGliYydzIDxzeXMvdHlwZXMuaD46Ci0gICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTUtMTEvbXNnMDAyNTMuaHRtbAotCi1HZW50b28gYWxyZWFkeSBhcHBsaWVkIGdsaWJjIHBhdGNoIHRvIGV4cGVyaW1lbnRhbCBnbGliYy0yLjI0Ci10byBzdGFydCBwcmVwYXJpbmdmb3IgdGhlIGNoYW5nZS4KLQotQXV0b2NvbmYgaGFzIEFDX0hFQURFUl9NQUpPUiB0byBmaW5kIG91dCB3aGljaCBoZWFkZXIgZGVmaW5lcwotcmVxaXVyZWQgbWFjcm9zOgotICAgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYvbWFudWFsL2F1dG9jb25mLTIuNjkvaHRtbF9ub2RlL1BhcnRpY3VsYXItSGVhZGVycy5odG1sCi0KLVRoaXMgY2hhbmdlIHNob3VsZCBhbHNvIGluY3JlYXNlIHBvcnRhYmlsaXR5IGFjcm9zcyBvdGhlciBsaWJjcy4KLQotQnVnOiBodHRwczovL2J1Z3MuZ2VudG9vLm9yZy82MDQzNjAKLVNpZ25lZC1vZmYtYnk6IFNlcmdlaSBUcm9maW1vdmljaCA8c2lhcmhlaXRAZ29vZ2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgIHwgMyArKysKLSBzcmMvbHhjL2JkZXYvbHhjbHZtLmMgIHwgOSArKysrKysrKysKLSBzcmMvbHhjL2NvbmYuYyAgICAgICAgIHwgOCArKysrKysrKwotIHNyYy9seGMvbHhjY29udGFpbmVyLmMgfCA4ICsrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhmMzFjMjkuLjkyNGJhYTEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYwMSw2ICs2MDEsOSBAQCBBQ19DSEVDS19ERUNMUyhbUFJfQ0FQQlNFVF9EUk9QXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9wcmN0bC5oPl0pCi0gIyBDaGVjayBmb3Igc29tZSBoZWFkZXJzCi0gQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3NpZ25hbGZkLmggcHR5LmggaWZhZGRycy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL3BlcnNvbmFsaXR5LmggdXRtcHguaCBzeXMvdGltZXJmZC5oXSkKLSAKLSsjIGxvb2t1cCBtYWpvcigpL21pbm9yKCkvbWFrZWRldigpCi0rQUNfSEVBREVSX01BSk9SCi0rCi0gIyBDaGVjayBmb3Igc29tZSBzeXNjYWxscyBmdW5jdGlvbnMKLSBBQ19DSEVDS19GVU5DUyhbc2V0bnMgcGl2b3Rfcm9vdCBzZXRob3N0bmFtZSB1bnNoYXJlIHJhbmRfciBjb25mc3RyIGZhY2Nlc3NhdF0pCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2x4Yy9iZGV2L2x4Y2x2bS5jIGIvc3JjL2x4Yy9iZGV2L2x4Y2x2bS5jCi1pbmRleCAzZDQxYjEwLi40MTlkMWMyIDEwMDY0NAotLS0tIGEvc3JjL2x4Yy9iZGV2L2x4Y2x2bS5jCi0rKysgYi9zcmMvbHhjL2JkZXYvbHhjbHZtLmMKLUBAIC0zMiwxMCArMzIsMTkgQEAKLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSAKLSAjaW5jbHVkZSAiYmRldi5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSAjaW5jbHVkZSAibG9nLmgiCi0gI2luY2x1ZGUgImx4Y2x2bS5oIgotICNpbmNsdWRlICJ1dGlscy5oIgotIAotKy8qIG1ham9yKCkvbWlub3IoKSAqLwotKyNpZmRlZiBNQUpPUl9JTl9NS0RFVgotKyMgICAgaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VuZGlmCi0rI2lmZGVmIE1BSk9SX0lOX1NZU01BQ1JPUwotKyMgICAgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotKwotIGx4Y19sb2dfZGVmaW5lKGx4Y2x2bSwgbHhjKTsKLSAKLSBleHRlcm4gY2hhciAqZGlyX25ld19wYXRoKGNoYXIgKnNyYywgY29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3QgY2hhciAqbmFtZSwKLWRpZmYgLS1naXQgYS9zcmMvbHhjL2NvbmYuYyBiL3NyYy9seGMvY29uZi5jCi1pbmRleCAzYjAyM2VmLi41MzQwNmNhIDEwMDY0NAotLS0tIGEvc3JjL2x4Yy9jb25mLmMKLSsrKyBiL3NyYy9seGMvY29uZi5jCi1AQCAtMzksNiArMzksMTQgQEAKLSAjaW5jbHVkZSA8Z3JwLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAKLSsvKiBtYWtlZGV2KCkgKi8KLSsjaWZkZWYgTUFKT1JfSU5fTUtERVYKLSsjICAgIGluY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbmRpZgotKyNpZmRlZiBNQUpPUl9JTl9TWVNNQUNST1MKLSsjICAgIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWZkZWYgSEFWRV9TVEFUVkZTCi0gI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2x4Yy9seGNjb250YWluZXIuYyBiL3NyYy9seGMvbHhjY29udGFpbmVyLmMKLWluZGV4IDlmMTJjYTIuLmFhMDI4MzMgMTAwNjQ0Ci0tLS0gYS9zcmMvbHhjL2x4Y2NvbnRhaW5lci5jCi0rKysgYi9zcmMvbHhjL2x4Y2NvbnRhaW5lci5jCi1AQCAtNjEsNiArNjEsMTQgQEAKLSAjaW5jbHVkZSAidXRpbHMuaCIKLSAjaW5jbHVkZSAidmVyc2lvbi5oIgotIAotKy8qIG1ham9yKCkvbWlub3IoKSAqLwotKyNpZmRlZiBNQUpPUl9JTl9NS0RFVgotKyMgICAgaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VuZGlmCi0rI2lmZGVmIE1BSk9SX0lOX1NZU01BQ1JPUwotKyMgICAgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotKwotICNpZiBIQVZFX0lGQUREUlNfSAotICNpbmNsdWRlIDxpZmFkZHJzLmg+Ci0gI2Vsc2UKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9hdXRvbWFrZS1lbnN1cmUtVlBBVEgtYnVpbGRzLWNvcnJlY3RseS5wYXRjaAppbmRleCAyYjVjODUzLi42MWMwZTI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9hdXRvbWFrZS1lbnN1cmUtVlBBVEgtYnVpbGRzLWNvcnJlY3RseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9hdXRvbWFrZS1lbnN1cmUtVlBBVEgtYnVpbGRzLWNvcnJlY3RseS5wYXRjaApAQCAtMTUsNyArMTUsNyBAQAogQEAgLTY2LDcgKzY2LDcgQEAgYnVpbGR0ZXN0LVRFU1RTOiAkKFRFU1RTKQogIGluc3RhbGwtcHRlc3Q6CiAgCWluc3RhbGwgLWQgJChURVNUX0RJUikKLSAJaW5zdGFsbCAtRCAuLi9seGMvbGlibHhjLnNvICQoVEVTVF9ESVIpLy4uL2x4Yy9saWJseGMuc28KKyAJaW5zdGFsbCAtRCAuLi9seGMvLmxpYnMvbGlibHhjLnNvICQoVEVTVF9ESVIpLy4uL2x4Yy9saWJseGMuc28KIC0JaW5zdGFsbCAtRCAuLi8uLi9jb25maWcvdGVzdC1kcml2ZXIgJChURVNUX0RJUikvLi4vLi4vY29uZmlnL3Rlc3QtZHJpdmVyCiArCWluc3RhbGwgLUQgJCh0b3Bfc3JjZGlyKS9jb25maWcvdGVzdC1kcml2ZXIgJChURVNUX0RJUikvLi4vLi4vY29uZmlnL3Rlc3QtZHJpdmVyCiAgCWNwIE1ha2VmaWxlICQoVEVTVF9ESVIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9jZ3JvdXBzLXdvcmstYXJvdW5kLWlzc3VlLWluLWdjYy03LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvY2dyb3Vwcy13b3JrLWFyb3VuZC1pc3N1ZS1pbi1nY2MtNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc0MGZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvY2dyb3Vwcy13b3JrLWFyb3VuZC1pc3N1ZS1pbi1nY2MtNy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDU4YTJkODE3YTgyMTAwZDI4N2M2MGM2MzMxNWQ4MTQ0NWNkYmEzZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxNToxMjowOCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjZ3JvdXBzOiB3b3JrIGFyb3VuZCBpc3N1ZSBpbiBnY2MgNworCitUaGlzIHdvcmtzIGFyb3VuZAoraHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY3MgoraHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Nzg5NjkKKworQnkgcmVtb3ZpbmcgYSBzaW5nbGUgY2dyb3VwIGVudHJ5LiBGb3IgdGhlIG1ham9yaXR5IG9mIHVzZWNhc2VzIHRoaXMKK2xvc3Mgb2YgYSBzaW5nbGUgZW50cnkgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhbmQgb25jZSBnY2MgNyBpcyBmaXhlZAord2UgY2FuIHJldmVydCB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2x4Yy9jZ3JvdXBzL2NnZnNuZy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2x4Yy9jZ3JvdXBzL2NnZnNuZy5jIGIvc3JjL2x4Yy9jZ3JvdXBzL2NnZnNuZy5jCitpbmRleCBlYmQ1NDhiLi5jNTIwYWJkIDEwMDY0NAorLS0tIGEvc3JjL2x4Yy9jZ3JvdXBzL2NnZnNuZy5jCisrKysgYi9zcmMvbHhjL2Nncm91cHMvY2dmc25nLmMKK0BAIC0xMzczLDcgKzEzNzMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2dmc25nX2NyZWF0ZSh2b2lkICpoZGF0YSkKKyAJb2Zmc2V0ID0gY2duYW1lICsgbGVuIC0gNTsKKyAKKyBhZ2FpbjoKKy0JaWYgKGlkeCA9PSAxMDAwKSB7CisrCWlmIChpZHggPT0gOTk5KSB7CisgCQlFUlJPUigiVG9vIG1hbnkgY29uZmxpY3RpbmcgY2dyb3VwIG5hbWVzIik7CisgCQlnb3RvIG91dF9mcmVlOworIAl9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL3J1bnRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9ydW50ZXN0LnBhdGNoCmluZGV4IGU0ZTAzNGIuLjY1NzIyNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL3J1bnRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvcnVudGVzdC5wYXRjaApAQCAtMTksNyArMTksNyBAQAogKwogK2luc3RhbGwtcHRlc3Q6CiArCWluc3RhbGwgLWQgJChURVNUX0RJUikKLSsJaW5zdGFsbCAtRCAuLi9seGMvbGlibHhjLnNvICQoVEVTVF9ESVIpLy4uL2x4Yy9saWJseGMuc28KKysJaW5zdGFsbCAtRCAuLi9seGMvLmxpYnMvbGlibHhjLnNvICQoVEVTVF9ESVIpLy4uL2x4Yy9saWJseGMuc28KICsJaW5zdGFsbCAtRCAuLi8uLi9jb25maWcvdGVzdC1kcml2ZXIgJChURVNUX0RJUikvLi4vLi4vY29uZmlnL3Rlc3QtZHJpdmVyCiArCWNwIE1ha2VmaWxlICQoVEVTVF9ESVIpCiArCUAoZm9yIGZpbGUgaW4gJChURVNUUyk7IGRvIGluc3RhbGwgJCRmaWxlICQoVEVTVF9ESVIpOyAgZG9uZTspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OGQxYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImx4YyBhaW1zIHRvIHVzZSB0aGVzZSBuZXcgZnVuY3Rpb25uYWxpdGllcyB0byBwcm92aWRlIGFuIHVzZXJzcGFjZSBjb250YWluZXIgb2JqZWN0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotUFJJT1JJVFkgPSAib3B0aW9uYWwiCi1ERVBFTkRTID0gImxpYnhtbDIgbGliY2FwIgotUkRFUEVORFNfJHtQTn0gPSAiIFwKLQkJcnN5bmMgXAotCQlnemlwIFwKLQkJbGliY2FwLWJpbiBcCi0JCWJyaWRnZS11dGlscyBcCi0JCWRuc21hc3EgXAotCQlpbml0c2NyaXB0cyBcCi0JCXBlcmwtbW9kdWxlLXN0cmljdCBcCi0JCXBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLQkJcGVybC1tb2R1bGUtdmFycyBcCi0JCXBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIFwKLQkJcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotCQlwZXJsLW1vZHVsZS1jb25zdGFudCBcCi0JCXBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKLQkJcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkgXAotIgotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAotCQlnbGliYy11dGlscyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJmaWxlIG1ha2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpbnV4Y29udGFpbmVycy5vcmcvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotCWZpbGU6Ly9seGMtMS4wLjAtZGlzYWJsZS11ZGhjcC1mcm9tLWJ1c3lib3gtdGVtcGxhdGUucGF0Y2ggXAotCWZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLQlmaWxlOi8vcnVuLXB0ZXN0IFwKLQlmaWxlOi8vYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2ggXAotCWZpbGU6Ly9seGMtZml4LUItUy5wYXRjaCBcCi0JZmlsZTovL2x4Yy1kb2MtdXBncmFkZS10by11c2UtZG9jYm9vay0zLjEtRFRELnBhdGNoIFwKLQlmaWxlOi8vbG9ncy1vcHRpb25hbGx5LXVzZS1iYXNlLWZpbGVuYW1lcy10by1yZXBvcnQtc3JjLWZpbC5wYXRjaCBcCi0JZmlsZTovL1VzZS1BQ19IRUFERVJfTUFKT1ItdG8tZGV0ZWN0LW1ham9yLW1pbm9yLW1ha2VkZXYucGF0Y2ggXAotCSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0YTcyNDVhNjE0Y2QzMjk2YjBhZTljZWVlYjgzZmJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViNzM3ZTExNGQ4ZWYxZmViMTkzZmJhOTM2ZDc3YTU2OTdhN2M4YTEwMTk5YTA2OGNkZDkwZDFiZDI3YzEwZTQiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCi0KLSMgTGV0J3Mgbm90IGNvbmZpZ3VyZSBmb3IgdGhlIGhvc3QgZGlzdHJvLgotIwotUFRFU1RfQ09ORiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJy0tZW5hYmxlLXRlc3RzJywgJycsIGQpfSIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWRpc3Rybz0ke0RJU1RST30gJHtQVEVTVF9DT05GfSIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtaW5pdC1zY3JpcHQ9XAotJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdzeXN2aW5pdCwnLCAnJywgZCl9XAotJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxvZy1zcmMtYmFzZW5hbWUiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3I9ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0ZW1wbGF0ZXMgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdzZWxpbnV4JywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2RvY10gPSAiLS1lbmFibGUtZG9jIC0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1kb2MgLS1kaXNhYmxlLWFwaS1kb2NzLCwiCi1QQUNLQUdFQ09ORklHW3JwYXRoXSA9ICItLWVuYWJsZS1ycGF0aCwtLWRpc2FibGUtcnBhdGgsLCIKLVBBQ0tBR0VDT05GSUdbYXBwYXJtb3VyXSA9ICItLWVuYWJsZS1hcHBhcm1vciwtLWRpc2FibGUtYXBwYXJtb3IsYXBwYXJtb3IsYXBwYXJtb3IiCi1QQUNLQUdFQ09ORklHW3RlbXBsYXRlc10gPSAiLCwsICR7UE59LXRlbXBsYXRlcyIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0iLS1lbmFibGUtc2VjY29tcCwtLWRpc2FibGUtc2VjY29tcCxsaWJzZWNjb21wLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMyxweXRob24zLWNvcmUiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS1lbmFibGUtbHVhLC0tZGlzYWJsZS1sdWEsbHVhLGx1YSIKLQotIyByZXF1aXJlZCBieSBweXRob24zIHRvIHJ1biBzZXR1cC5weQotZXhwb3J0IEJVSUxEX1NZUwotZXhwb3J0IEhPU1RfU1lTCi1leHBvcnQgU1RBR0lOR19JTkNESVIKLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QgdXBkYXRlLXJjLmQgc3lzdGVtZCBweXRob24zbmF0aXZlCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2V0dXAiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2V0dXAgPSAibHhjLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNldHVwID0gImRpc2FibGUiCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc2V0dXAiCi1JTklUU0NSSVBUX05BTUVfe1BOfS1zZXR1cCA9ICJseGMiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zZXR1cCA9ICIke09TX0RFRkFVTFRfSU5JVFNDUklQVF9QQVJBTVN9IgotCi1GSUxFU18ke1BOfS1kb2MgPSAiJHttYW5kaXJ9ICR7aW5mb2Rpcn0iCi0jIEZvciBMWEMgdGhlIGRvY2RpciBvbmx5IGNvbnRhaW5zIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBseGMgcGFja2FnZQotRklMRVNfJHtQTn0gKz0gIiR7ZG9jZGlyfSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcHl0aG9uMyoiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sdWEvKiIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHVhL2x4Yy8qIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbHVhL2x4Yy8uZGVidWciCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbHhjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2x4Yy9ob29rcy8uZGVidWciCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVtcGxhdGVzICR7UE59LXNldHVwICR7UE59LW5ldHdvcmtpbmciCi1GSUxFU18ke1BOfS10ZW1wbGF0ZXMgKz0gIiR7ZGF0YWRpcn0vbHhjL3RlbXBsYXRlcyIKLVJERVBFTkRTXyR7UE59LXRlbXBsYXRlcyArPSAiYmFzaCIKLQotQUxMT1dfRU1QVFlfJHtQTn0tbmV0d29ya2luZyA9ICIxIgotCi1GSUxFU18ke1BOfS1zZXR1cCArPSAiJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIgotRklMRVNfJHtQTn0tc2V0dXAgKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCi1GSUxFU18ke1BOfS1zZXR1cCArPSAiJHtzeXNjb25mZGlyfS9pbml0LmQiCi0KLVBSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJseGMuc28uMSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIiBcCi0gICAgYWNfY3ZfcGF0aF9QWVRIT049JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zJyBcCi0gICAgYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLXBhY2thZ2VzJyBcCi0gICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtwcmVmaXh9LyR7bGliZGlyfS9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFRoZSAvdmFyL2NhY2hlL2x4YyBkaXJlY3RvcnkgY3JlYXRlZCBieSB0aGUgTWFrZWZpbGUKLQkjIGlzIHdpcGVkIG91dCBpbiB2b2xhdGlsZSwgd2UgbmVlZCB0byBjcmVhdGUgdGhpcyBhdCBib290LgotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQllY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbHhjIG5vbmUiIFwKLQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfbHhjCi0KLQlmb3IgaSBpbiBgZ3JlcCAtbCAiIyEgKi9iaW4vYmFzaCIgJHtEfSR7ZGF0YWRpcn0vbHhjL2hvb2tzLypgOyBkbyBcCi0JICAgIHNlZCAtZSAnc3wjISAqL2Jpbi9iYXNofCMhL2Jpbi9zaHwnIC1pICRpOyBkb25lCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkgICAgaW5zdGFsbCAtbSA3NTUgY29uZmlnL2luaXQvc3lzdmluaXQvbHhjKiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlmaQotCi0JIyBzaW5jZSBweXRob24zLW5hdGl2ZSBpcyB1c2VkIGZvciBpbnN0YWxsIGxvY2F0aW9uIHRoaXMgd2lsbCBub3QgYmUKLQkjIHN1aXRhYmxlIGZvciB0aGUgdGFyZ2V0IGFuZCB3ZSB3aWxsIGhhdmUgdG8gY29ycmVjdCB0aGUgcGFja2FnZSBpbnN0YWxsCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkgICAgaWYgWyAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbiogXTsgdGhlbiBtdiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbiogJHtEfSR7bGliZGlyfS87IGZpCi0JICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2V4ZWNfcHJlZml4fS9saWIKLQlmaQotfQotCi1FWFRSQV9PRU1BS0UgKz0gIlRFU1RfRElSPSR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cyIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DIHNyYy90ZXN0cyBpbnN0YWxsLXB0ZXN0Ci19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSgpIHsKLQlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0JCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfS1uZXR3b3JraW5nKCkgewotCWlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLQkJZXhpdCAxCi0JZmkKLQotCSMgc2V0dXAgZm9yIG91ciBicmlkZ2UKLSAgICAgICAgZWNobyAibHhjLm5ldHdvcmsubGluaz1seGNicjAiID4+ICR7c3lzY29uZmRpcn0vbHhjL2RlZmF1bHQuY29uZgotCi1jYXQgPj4gL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMgPDwgRU9GCi0KLWF1dG8gbHhjYnIwCi1pZmFjZSBseGNicjAgaW5ldCBkaGNwCi0JYnJpZGdlX3BvcnRzIGV0aDAKLQlicmlkZ2VfZmQgMAotCWJyaWRnZV9tYXh3YWl0IDAKLUVPRgotCi1jYXQ8PEVPRj4vZXRjL25ldHdvcmsvaWYtcHJlLXVwLmQvbHhjYnIwCi0jISAvYmluL3NoCi0KLWlmIHRlc3QgInhcJElGQUNFIiA9IHhseGNicjAgOyB0aGVuCi0gICAgICAgIGJyY3RsIHNob3cgfGdyZXAgbHhjYnIwID4gL2Rldi9udWxsIDI+L2Rldi9udWxsCi0gICAgICAgIGlmIFsgXCQ/ICE9IDAgXSA7IHRoZW4KLSAgICAgICAgICAgICAgICBicmN0bCBhZGRiciBseGNicjAKLSAgICAgICAgICAgICAgICBicmN0bCBhZGRpZiBseGNicjAgZXRoMAotICAgICAgICAgICAgICAgIGlwIGFkZHIgZmx1c2ggZXRoMAotICAgICAgICAgICAgICAgIGlmY29uZmlnIGV0aDAgdXAKLSAgICAgICAgZmkKLWZpCi1FT0YKLWNobW9kIDc1NSAvZXRjL25ldHdvcmsvaWYtcHJlLXVwLmQvbHhjYnIwCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNkNWExMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2x4Y18yLjAuOC5iYgpAQCAtMCwwICsxLDE3OSBAQAorREVTQ1JJUFRJT04gPSAibHhjIGFpbXMgdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbm5hbGl0aWVzIHRvIHByb3ZpZGUgYW4gdXNlcnNwYWNlIGNvbnRhaW5lciBvYmplY3QiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitERVBFTkRTID0gImxpYnhtbDIgbGliY2FwIgorUkRFUEVORFNfJHtQTn0gPSAiIFwKKwkJcnN5bmMgXAorCQlnemlwIFwKKwkJbGliY2FwLWJpbiBcCisJCWJyaWRnZS11dGlscyBcCisJCWRuc21hc3EgXAorCQlwZXJsLW1vZHVsZS1zdHJpY3QgXAorCQlwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisJCXBlcmwtbW9kdWxlLXZhcnMgXAorCQlwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciBcCisJCXBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKwkJcGVybC1tb2R1bGUtY29uc3RhbnQgXAorCQlwZXJsLW1vZHVsZS1vdmVybG9hZCBcCisJCXBlcmwtbW9kdWxlLWV4cG9ydGVyLWhlYXZ5IFwKKwkJZ21wIFwKKwkJbGliaWRuIFwKKwkJZ251dGxzIFwKKwkJbmV0dGxlIFwKKyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJmaWxlIG1ha2UgZ21wIG5ldHRsZSBnbnV0bHMgYmFzaCIKKworU1JDX1VSSSA9ICJodHRwOi8vbGludXhjb250YWluZXJzLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5neiBcCisJZmlsZTovL2x4Yy0xLjAuMC1kaXNhYmxlLXVkaGNwLWZyb20tYnVzeWJveC10ZW1wbGF0ZS5wYXRjaCBcCisJZmlsZTovL3J1bnRlc3QucGF0Y2ggXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorCWZpbGU6Ly9hdXRvbWFrZS1lbnN1cmUtVlBBVEgtYnVpbGRzLWNvcnJlY3RseS5wYXRjaCBcCisJZmlsZTovL2x4Yy1maXgtQi1TLnBhdGNoIFwKKwlmaWxlOi8vbHhjLWRvYy11cGdyYWRlLXRvLXVzZS1kb2Nib29rLTMuMS1EVEQucGF0Y2ggXAorCWZpbGU6Ly9sb2dzLW9wdGlvbmFsbHktdXNlLWJhc2UtZmlsZW5hbWVzLXRvLXJlcG9ydC1zcmMtZmlsLnBhdGNoIFwKKwlmaWxlOi8vY2dyb3Vwcy13b3JrLWFyb3VuZC1pc3N1ZS1pbi1nY2MtNy5wYXRjaCBcCisJIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2JmZDk1MjgwNTIyZDc5MzZjMDk3OWRmZWE5MmNkYjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ4ZTM0YjMwMmNmZTRjNDBjNmM5YWU1MDk3MDk2YWE1Y2MyYzFkZmNlZWEzZjBmMjJlM2UxNmM0YTRlODQ5NCIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKKworIyBMZXQncyBub3QgY29uZmlndXJlIGZvciB0aGUgaG9zdCBkaXN0cm8uCisjCitQVEVTVF9DT05GID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnLS1lbmFibGUtdGVzdHMnLCAnJywgZCl9IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtZGlzdHJvPSR7RElTVFJPfSAke1BURVNUX0NPTkZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1pbml0LXNjcmlwdD1cCiske0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3N5c3Zpbml0LCcsICcnLCBkKX1cCiske0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbG9nLXNyYy1iYXNlbmFtZSIKKworQ0ZMQUdTX2FwcGVuZCA9ICIgLVduby1lcnJvcj1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRlbXBsYXRlcyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ3NlbGludXgnLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbZG9jXSA9ICItLWVuYWJsZS1kb2MgLS1lbmFibGUtYXBpLWRvY3MsLS1kaXNhYmxlLWRvYyAtLWRpc2FibGUtYXBpLWRvY3MsLCIKK1BBQ0tBR0VDT05GSUdbcnBhdGhdID0gIi0tZW5hYmxlLXJwYXRoLC0tZGlzYWJsZS1ycGF0aCwsIgorUEFDS0FHRUNPTkZJR1thcHBhcm1vdXJdID0gIi0tZW5hYmxlLWFwcGFybW9yLC0tZGlzYWJsZS1hcHBhcm1vcixhcHBhcm1vcixhcHBhcm1vciIKK1BBQ0tBR0VDT05GSUdbdGVtcGxhdGVzXSA9ICIsLCwgJHtQTn0tdGVtcGxhdGVzIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSItLWVuYWJsZS1zZWNjb21wLC0tZGlzYWJsZS1zZWNjb21wLGxpYnNlY2NvbXAsbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLHB5dGhvbjMtY29yZSIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLWVuYWJsZS1sdWEsLS1kaXNhYmxlLWx1YSxsdWEsbHVhIgorCisjIHJlcXVpcmVkIGJ5IHB5dGhvbjMgdG8gcnVuIHNldHVwLnB5CitleHBvcnQgQlVJTERfU1lTCitleHBvcnQgSE9TVF9TWVMKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IFNUQUdJTkdfTElCRElSCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHB5dGhvbjNuYXRpdmUKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXR1cCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1zZXR1cCA9ICJseGMuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2V0dXAgPSAiZGlzYWJsZSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zZXR1cCIKK0lOSVRTQ1JJUFRfTkFNRV97UE59LXNldHVwID0gImx4YyIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNldHVwID0gImRlZmF1bHRzIgorCitGSUxFU18ke1BOfS1kb2MgPSAiJHttYW5kaXJ9ICR7aW5mb2Rpcn0iCisjIEZvciBMWEMgdGhlIGRvY2RpciBvbmx5IGNvbnRhaW5zIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBseGMgcGFja2FnZQorRklMRVNfJHtQTn0gKz0gIiR7ZG9jZGlyfSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcHl0aG9uMyoiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbHhjLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9seGMvaG9va3MvLmRlYnVnIgorUEFDS0FHRVMgPSsgIiR7UE59LXRlbXBsYXRlcyAke1BOfS1zZXR1cCAke1BOfS1uZXR3b3JraW5nICR7UE59LWx1YSIKK0ZJTEVTX2x1YS0ke1BOfSA9ICIke2RhdGFkaXJ9L2x1YSAke2xpYmRpcn0vbHVhIgorRklMRVNfbHVhLSR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2x1YS9seGMvLmRlYnVnIgorRklMRVNfJHtQTn0tdGVtcGxhdGVzICs9ICIke2RhdGFkaXJ9L2x4Yy90ZW1wbGF0ZXMiCitSREVQRU5EU18ke1BOfS10ZW1wbGF0ZXMgKz0gImJhc2giCisKK0FMTE9XX0VNUFRZXyR7UE59LW5ldHdvcmtpbmcgPSAiMSIKKworRklMRVNfJHtQTn0tc2V0dXAgKz0gIi9ldGMvdG1wZmlsZXMuZCIKK0ZJTEVTXyR7UE59LXNldHVwICs9ICIvbGliL3N5c3RlbWQvc3lzdGVtIgorRklMRVNfJHtQTn0tc2V0dXAgKz0gIi91c3IvbGliL3N5c3RlbWQvc3lzdGVtIgorRklMRVNfJHtQTn0tc2V0dXAgKz0gIi9ldGMvaW5pdC5kIgorCitQUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGlibHhjLnNvLjEiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICIgXAorICAgIGFjX2N2X3BhdGhfUFlUSE9OPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMycgXAorICAgIGFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9LyR7bGliZGlyfS9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycgXAorICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7cHJlZml4fS8ke2xpYmRpcn0vcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBUaGUgL3Zhci9jYWNoZS9seGMgZGlyZWN0b3J5IGNyZWF0ZWQgYnkgdGhlIE1ha2VmaWxlCisJIyBpcyB3aXBlZCBvdXQgaW4gdm9sYXRpbGUsIHdlIG5lZWQgdG8gY3JlYXRlIHRoaXMgYXQgYm9vdC4KKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2x4YyBub25lIiBcCisJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2x4YworCisJZm9yIGkgaW4gYGdyZXAgLWwgIiMhICovYmluL2Jhc2giICR7RH0ke2RhdGFkaXJ9L2x4Yy9ob29rcy8qYDsgZG8gXAorCSAgICBzZWQgLWUgJ3N8IyEgKi9iaW4vYmFzaHwjIS9iaW4vc2h8JyAtaSAkaTsgZG9uZQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJICAgIGluc3RhbGwgLW0gNzU1IGNvbmZpZy9pbml0L3N5c3Zpbml0L2x4YyogJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJZmkKKworCSMgc2luY2UgcHl0aG9uMy1uYXRpdmUgaXMgdXNlZCBmb3IgaW5zdGFsbCBsb2NhdGlvbiB0aGlzIHdpbGwgbm90IGJlCisJIyBzdWl0YWJsZSBmb3IgdGhlIHRhcmdldCBhbmQgd2Ugd2lsbCBoYXZlIHRvIGNvcnJlY3QgdGhlIHBhY2thZ2UgaW5zdGFsbAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJICAgIGlmIFsgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qIF07IHRoZW4gbXYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qICR7RH0ke2xpYmRpcn0vOyBmaQorCSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtleGVjX3ByZWZpeH0vbGliCisJZmkKK30KKworRVhUUkFfT0VNQUtFICs9ICJURVNUX0RJUj0ke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyBzcmMvdGVzdHMgaW5zdGFsbC1wdGVzdAorfQorCitwa2dfcG9zdGluc3RfJHtQTn0oKSB7CisJaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgorCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0tbmV0d29ya2luZygpIHsKKwlpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJCWV4aXQgMQorCWZpCisKKwkjIHNldHVwIGZvciBvdXIgYnJpZGdlCisgICAgICAgIGVjaG8gImx4Yy5uZXR3b3JrLmxpbms9bHhjYnIwIiA+PiAke3N5c2NvbmZkaXJ9L2x4Yy9kZWZhdWx0LmNvbmYKKworY2F0ID4+IC9ldGMvbmV0d29yay9pbnRlcmZhY2VzIDw8IEVPRgorCithdXRvIGx4Y2JyMAoraWZhY2UgbHhjYnIwIGluZXQgZGhjcAorCWJyaWRnZV9wb3J0cyBldGgwCisJYnJpZGdlX2ZkIDAKKwlicmlkZ2VfbWF4d2FpdCAwCitFT0YKKworY2F0PDxFT0Y+L2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2x4Y2JyMAorIyEgL2Jpbi9zaAorCitpZiB0ZXN0ICJ4XCRJRkFDRSIgPSB4bHhjYnIwIDsgdGhlbgorICAgICAgICBicmN0bCBzaG93IHxncmVwIGx4Y2JyMCA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbAorICAgICAgICBpZiBbIFwkPyAhPSAwIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgYnJjdGwgYWRkYnIgbHhjYnIwCisgICAgICAgICAgICAgICAgYnJjdGwgYWRkaWYgbHhjYnIwIGV0aDAKKyAgICAgICAgICAgICAgICBpcCBhZGRyIGZsdXNoIGV0aDAKKyAgICAgICAgICAgICAgICBpZmNvbmZpZyBldGgwIHVwCisgICAgICAgIGZpCitmaQorRU9GCitjaG1vZCA3NTUgL2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2x4Y2JyMAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvZmlsZXMvMDAwMS1pbWFnZS1tYW5pZmVzdC1SZWN1cnNpdmVseS1yZW1vdmUtcHJlLWV4aXN0aW5nLWVudHJpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvZmlsZXMvMDAwMS1pbWFnZS1tYW5pZmVzdC1SZWN1cnNpdmVseS1yZW1vdmUtcHJlLWV4aXN0aW5nLWVudHJpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTRmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9maWxlcy8wMDAxLWltYWdlLW1hbmlmZXN0LVJlY3Vyc2l2ZWx5LXJlbW92ZS1wcmUtZXhpc3RpbmctZW50cmkucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSAxZjIwNWMwYWVjNWVhOWU5ODNkNjFhNjRlN2NlODcxYWU0MTZiZWJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlcuIFRyZXZvciBLaW5nIiA8d2tpbmdAdHJlbWlseS51cz4KK0RhdGU6IFR1ZSwgMTggT2N0IDIwMTYgMDI6MTY6NDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGltYWdlL21hbmlmZXN0OiBSZWN1cnNpdmVseSByZW1vdmUgcHJlLWV4aXN0aW5nIGVudHJpZXMKKyB3aGVuIHVucGFja2luZworCitJbXBsZW1lbnRpbmcgdGhlIGxvZ2ljIHRoYXQgaXMgaW4tZmxpZ2h0IHdpdGggWzFdLCBidXQgdXNpbmcgcmVjdXJzaXZlCityZW1vdmFsIFsyXS4gIEdOVSB0YXIgaGFzIGEgLS1yZWN1cnNpdmUtdW5saW5rIG9wdGlvbiB0aGF0J3Mgbm90CitlbmFibGVkIGJ5IGRlZmF1bHQsIHdpdGggdGhlIG1vdGl2YXRpb24gYmVpbmcgc29tZXRoaW5nIGxpa2UgImZvbGtzCit3b3VsZCBiZSBtYWQgaWYgd2UgYmxldyBhd2F5IGEgZnVsbCB0cmVlIGFuZCByZXBsYWNlZCBpdCB3aXRoIGEgYnJva2VuCitzeW1saW5rIiBbM10uICBUaGF0IG1ha2VzIHNlbnNlIGZvciB3b3JraW5nIGZpbGVzeXN0ZW1zLCBidXQgd2UncmUKK2J1aWxkaW5nIHRoZSByb290ZnMgZnJvbSBzY3JhdGNoIGhlcmUgc28gbG9zaW5nIGluZm9ybWF0aW9uIGlzIG5vdCBhCitjb25jZXJuLiAgVGhpcyBjb21taXQgYWx3YXlzIHVzZXMgcmVjdXJzaXZlIHJlbW92YWwgdG8gZ2V0IHRoYXQgb2xkCit0aGluZyBvZmYgdGhlIGZpbGVzeXN0ZW0gKHdoYXRldmVyIGl0IHRha2VzIDspLgorCitUaGUgZXhjZXB0aW9uIHRvIHRoZSByZW1vdmFsIGlzIGlmIGJvdGggdGhlIHRhciBlbnRyeSBhbmQgZXhpc3RpbmcKK3BhdGggb2NjdXBhbnQgYXJlIGRpcmVjdG9yaWVzLiAgSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gdXNlIEdOVSB0YXIncworZGVmYXVsdCAtLW92ZXJ3cml0ZS1kaXIgYmVoYXZpb3IsIGJ1dCB1bnBhY2tMYXllcidzIG1ldGFkYXRhIGhhbmRsaW5nCitpcyBjdXJyZW50bHkgdmVyeSB3ZWFrIHNvIEkndmUgbGVmdCBpdCBhdCAiZG9uJ3QgZGVsZXRlIHRoZSBvbGQKK2RpcmVjdG9yeSIuCisKK1RoZSByZXdvcmtlZCBkaXJlY3RvcnkgY2FzZSBhbHNvIGZpeGVzIGEgbWlub3IgYnVnIGZyb20gNDQyMTBkMDUKKyhjbWQvb2NpLWltYWdlLXRvb2w6IGZpeCB1bnBhY2tpbmcuLi4sIDIwMTYtMDctMjIsICMxNzcpIHdoZXJlIHRoZToKKworICBpZiBmaSwgZXJyIDo9IG9zLkxzdGF0KHBhdGgpOyAhKGVyciA9PSBuaWwgJiYgZmkuSXNEaXIoKSkgeworCitibG9jayB3b3VsZCBub3QgZXJyb3Igb3V0IGlmIHRoZSBMc3RhdCBmYWlsZWQgZm9yIGEgcmVhc29uIGJlc2lkZXMgdGhlCithY2NlcHRhYmxlIElzTm90RXhpc3QuICBJbnN0ZWFkLCBpdCB3b3VsZCBhdHRlbXB0IHRvIGNhbGwgTWtkaXJBbGwsCit3aGljaCB3b3VsZCBwcm9iYWJseSBmYWlsIGZvciB0aGUgc2FtZSByZWFzb24gdGhhdCBMc3RhdCBmYWlsZWQKKyhlLmcuIEVOT1RESVIpLiAgQnV0IGl0J3MgYmV0dGVyIHRvIGhhbmRsZSB0aGUgTHN0YXQgZXJyb3JzIGRpcmVjdGx5LgorCitbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS1zcGVjL3B1bGwvMzE3CitbMl06IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS1zcGVjL3B1bGwvMzE3L2ZpbGVzI3I3OTIxNDcxOAorWzNdOiBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9tYW51YWwvaHRtbF9ub2RlL0RlYWxpbmctd2l0aC1PbGQtRmlsZXMuaHRtbAorCitTaWduZWQtb2ZmLWJ5OiBXLiBUcmV2b3IgS2luZyA8d2tpbmdAdHJlbWlseS51cz4KKy0tLQorIGltYWdlL21hbmlmZXN0LmdvIHwgMjIgKysrKysrKysrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW1hZ2UvbWFuaWZlc3QuZ28gYi9pbWFnZS9tYW5pZmVzdC5nbworaW5kZXggODgzNGMxZTVmMmYwLi4xNDRiZDRmNjIyMTkgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L2ltYWdlL21hbmlmZXN0LmdvCisrKysgYi9zcmMvaW1wb3J0L2ltYWdlL21hbmlmZXN0LmdvCitAQCAtMjUzLDExICsyNTMsMjcgQEAgbG9vcDoKKyAJCQljb250aW51ZSBsb29wCisgCQl9CisgCisrCQlpZiBoZHIuVHlwZWZsYWcgIT0gdGFyLlR5cGVEaXIgeworKwkJCWVyciA9IG9zLlJlbW92ZUFsbChwYXRoKQorKwkJCWlmIGVyciAhPSBuaWwgJiYgIW9zLklzTm90RXhpc3QoZXJyKSB7CisrCQkJCXJldHVybiBlcnIKKysJCQl9CisrCQl9CisrCisgCQlzd2l0Y2ggaGRyLlR5cGVmbGFnIHsKKyAJCWNhc2UgdGFyLlR5cGVEaXI6CistCQkJaWYgZmksIGVyciA6PSBvcy5Mc3RhdChwYXRoKTsgIShlcnIgPT0gbmlsICYmIGZpLklzRGlyKCkpIHsKKy0JCQkJaWYgZXJyMiA6PSBvcy5Na2RpckFsbChwYXRoLCBpbmZvLk1vZGUoKSk7IGVycjIgIT0gbmlsIHsKKy0JCQkJCXJldHVybiBlcnJvcnMuV3JhcChlcnIyLCAiZXJyb3IgY3JlYXRpbmcgZGlyZWN0b3J5IikKKysJCQlmaSwgZXJyIDo9IG9zLkxzdGF0KHBhdGgpCisrCQkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKysJCQkJcmV0dXJuIGVycgorKwkJCX0KKysJCQlpZiBvcy5Jc05vdEV4aXN0KGVycikgfHwgIWZpLklzRGlyKCkgeworKwkJCQllcnIgPSBvcy5SZW1vdmVBbGwocGF0aCkKKysJCQkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKysJCQkJCXJldHVybiBlcnIKKysJCQkJfQorKwkJCQllcnIgPSBvcy5Na2RpckFsbChwYXRoLCBpbmZvLk1vZGUoKSkKKysJCQkJaWYgZXJyICE9IG5pbCB7CisrCQkJCQlyZXR1cm4gZXJyCisgCQkJCX0KKyAJCQl9CisgCistLSAKKzIuNC4wLjUzLmc4NDQwZjc0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDItaW1hZ2UtbWFuaWZlc3QtU3BsaXQtdW5wYWNrTGF5ZXJFbnRyeS1pbnRvLWl0cy1vd24tZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDItaW1hZ2UtbWFuaWZlc3QtU3BsaXQtdW5wYWNrTGF5ZXJFbnRyeS1pbnRvLWl0cy1vd24tZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWJkY2RiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvZmlsZXMvMDAwMi1pbWFnZS1tYW5pZmVzdC1TcGxpdC11bnBhY2tMYXllckVudHJ5LWludG8taXRzLW93bi1mLnBhdGNoCkBAIC0wLDAgKzEsMjQyIEBACitGcm9tIDFlNTVmMmE4M2IxZjY0NDgwM2I2NDBiNzIxNzFiNGFlMGQ5NTIxN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiVy4gVHJldm9yIEtpbmciIDx3a2luZ0B0cmVtaWx5LnVzPgorRGF0ZTogVGh1LCAyMCBPY3QgMjAxNiAyMzozMDoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gaW1hZ2UvbWFuaWZlc3Q6IFNwbGl0IHVucGFja0xheWVyRW50cnkgaW50byBpdHMgb3duCisgZnVuY3Rpb24KKworVG8gaGVscCBhZGRyZXNzOgorCisgICQgbWFrZSBsaW50CisgIGNoZWNraW5nIGxpbnQKKyAgaW1hZ2UvbWFuaWZlc3QuZ286MTQwOjp3YXJuaW5nOiBjeWNsb21hdGljIGNvbXBsZXhpdHkgMzkgb2YgZnVuY3Rpb24gdW5wYWNrTGF5ZXIoKSBpcyBoaWdoICg+IDM1KSAoZ29jeWNsbykKKyAgLi4uCisKK1NpZ25lZC1vZmYtYnk6IFcuIFRyZXZvciBLaW5nIDx3a2luZ0B0cmVtaWx5LnVzPgorLS0tCisgaW1hZ2UvbWFuaWZlc3QuZ28gfCAxODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ltYWdlL21hbmlmZXN0LmdvIGIvaW1hZ2UvbWFuaWZlc3QuZ28KK2luZGV4IDE0NGJkNGY2MjIxOS4uZGZkNWE4M2Y3MGU0IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9pbWFnZS9tYW5pZmVzdC5nbworKysrIGIvc3JjL2ltcG9ydC9pbWFnZS9tYW5pZmVzdC5nbworQEAgLTIxOCwxMTYgKzIxOCwxMzEgQEAgbG9vcDoKKyAJCQlyZXR1cm4gZXJyb3JzLldyYXBmKGVyciwgImVycm9yIGFkdmFuY2luZyB0YXIgc3RyZWFtIikKKyAJCX0KKyAKKy0JCWhkci5OYW1lID0gZmlsZXBhdGguQ2xlYW4oaGRyLk5hbWUpCistCQlpZiAhc3RyaW5ncy5IYXNTdWZmaXgoaGRyLk5hbWUsIHN0cmluZyhvcy5QYXRoU2VwYXJhdG9yKSkgeworLQkJCS8vIE5vdCB0aGUgcm9vdCBkaXJlY3RvcnksIGVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IGV4aXN0cworLQkJCXBhcmVudCA6PSBmaWxlcGF0aC5EaXIoaGRyLk5hbWUpCistCQkJcGFyZW50UGF0aCA6PSBmaWxlcGF0aC5Kb2luKGRlc3QsIHBhcmVudCkKKy0JCQlpZiBfLCBlcnIyIDo9IG9zLkxzdGF0KHBhcmVudFBhdGgpOyBlcnIyICE9IG5pbCAmJiBvcy5Jc05vdEV4aXN0KGVycjIpIHsKKy0JCQkJaWYgZXJyMyA6PSBvcy5Na2RpckFsbChwYXJlbnRQYXRoLCAwNzU1KTsgZXJyMyAhPSBuaWwgeworLQkJCQkJcmV0dXJuIGVycjMKKy0JCQkJfQorLQkJCX0KKy0JCX0KKy0JCXBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBoZHIuTmFtZSkKKy0JCWlmIGVudHJpZXNbcGF0aF0geworLQkJCXJldHVybiBmbXQuRXJyb3JmKCJkdXBsaWNhdGUgZW50cnkgZm9yICVzIiwgcGF0aCkKKy0JCX0KKy0JCWVudHJpZXNbcGF0aF0gPSB0cnVlCistCQlyZWwsIGVyciA6PSBmaWxlcGF0aC5SZWwoZGVzdCwgcGF0aCkKKysJCXZhciB3aGl0ZW91dCBib29sCisrCQl3aGl0ZW91dCwgZXJyID0gdW5wYWNrTGF5ZXJFbnRyeShkZXN0LCBoZHIsIHRyLCAmZW50cmllcykKKyAJCWlmIGVyciAhPSBuaWwgeworIAkJCXJldHVybiBlcnIKKyAJCX0KKy0JCWluZm8gOj0gaGRyLkZpbGVJbmZvKCkKKy0JCWlmIHN0cmluZ3MuSGFzUHJlZml4KHJlbCwgIi4uIitzdHJpbmcob3MuUGF0aFNlcGFyYXRvcikpIHsKKy0JCQlyZXR1cm4gZm10LkVycm9yZigiJXEgaXMgb3V0c2lkZSBvZiAlcSIsIGhkci5OYW1lLCBkZXN0KQorKwkJaWYgd2hpdGVvdXQgeworKwkJCWNvbnRpbnVlIGxvb3AKKyAJCX0KKyAKKy0JCWlmIHN0cmluZ3MuSGFzUHJlZml4KGluZm8uTmFtZSgpLCAiLndoLiIpIHsKKy0JCQlwYXRoID0gc3RyaW5ncy5SZXBsYWNlKHBhdGgsICIud2guIiwgIiIsIDEpCisrCQkvLyBEaXJlY3RvcnkgbXRpbWVzIG11c3QgYmUgaGFuZGxlZCBhdCB0aGUgZW5kIHRvIGF2b2lkIGZ1cnRoZXIKKysJCS8vIGZpbGUgY3JlYXRpb24gaW4gdGhlbSB0byBtb2RpZnkgdGhlIGRpcmVjdG9yeSBtdGltZQorKwkJaWYgaGRyLlR5cGVmbGFnID09IHRhci5UeXBlRGlyIHsKKysJCQlkaXJzID0gYXBwZW5kKGRpcnMsIGhkcikKKysJCX0KKysJfQorKwlmb3IgXywgaGRyIDo9IHJhbmdlIGRpcnMgeworKwkJcGF0aCA6PSBmaWxlcGF0aC5Kb2luKGRlc3QsIGhkci5OYW1lKQorIAorLQkJCWlmIGVyciA6PSBvcy5SZW1vdmVBbGwocGF0aCk7IGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAidW5hYmxlIHRvIGRlbGV0ZSB3aGl0ZW91dCBwYXRoIikKKysJCWZpbmZvIDo9IGhkci5GaWxlSW5mbygpCisrCQkvLyBJIGJlbGlldmUgdGhlIG9sZCB2ZXJzaW9uIHdhcyB1c2luZyB0aW1lLk5vdygpLlVUQygpIHRvIG92ZXJjb21lIGFuCisrCQkvLyBpbnZhbGlkIGVycm9yIGZyb20gY2h0aW1lcy4uLi4uYnV0IGhlcmUgd2UgbG9zZSBoZHIuQWNjZXNzVGltZSBsaWtlIHRoaXMuLi4KKysJCWlmIGVyciA6PSBvcy5DaHRpbWVzKHBhdGgsIHRpbWUuTm93KCkuVVRDKCksIGZpbmZvLk1vZFRpbWUoKSk7IGVyciAhPSBuaWwgeworKwkJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJlcnJvciBjaGFuZ2luZyB0aW1lIikKKysJCX0KKysJfQorKwlyZXR1cm4gbmlsCisrfQorKworKy8vIHVucGFja0xheWVyRW50cnkgdW5wYWNrcyBhIHNpbmdsZSBlbnRyeSBmcm9tIGEgbGF5ZXIuCisrZnVuYyB1bnBhY2tMYXllckVudHJ5KGRlc3Qgc3RyaW5nLCBoZWFkZXIgKnRhci5IZWFkZXIsIHJlYWRlciBpby5SZWFkZXIsIGVudHJpZXMgKm1hcFtzdHJpbmddYm9vbCkgKHdoaXRlb3V0IGJvb2wsIGVyciBlcnJvcikgeworKwloZWFkZXIuTmFtZSA9IGZpbGVwYXRoLkNsZWFuKGhlYWRlci5OYW1lKQorKwlpZiAhc3RyaW5ncy5IYXNTdWZmaXgoaGVhZGVyLk5hbWUsIHN0cmluZyhvcy5QYXRoU2VwYXJhdG9yKSkgeworKwkJLy8gTm90IHRoZSByb290IGRpcmVjdG9yeSwgZW5zdXJlIHRoYXQgdGhlIHBhcmVudCBkaXJlY3RvcnkgZXhpc3RzCisrCQlwYXJlbnQgOj0gZmlsZXBhdGguRGlyKGhlYWRlci5OYW1lKQorKwkJcGFyZW50UGF0aCA6PSBmaWxlcGF0aC5Kb2luKGRlc3QsIHBhcmVudCkKKysJCWlmIF8sIGVycjIgOj0gb3MuTHN0YXQocGFyZW50UGF0aCk7IGVycjIgIT0gbmlsICYmIG9zLklzTm90RXhpc3QoZXJyMikgeworKwkJCWlmIGVycjMgOj0gb3MuTWtkaXJBbGwocGFyZW50UGF0aCwgMDc1NSk7IGVycjMgIT0gbmlsIHsKKysJCQkJcmV0dXJuIGZhbHNlLCBlcnIzCisgCQkJfQorKwkJfQorKwl9CisrCXBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBoZWFkZXIuTmFtZSkKKysJaWYgKCplbnRyaWVzKVtwYXRoXSB7CisrCQlyZXR1cm4gZmFsc2UsIGZtdC5FcnJvcmYoImR1cGxpY2F0ZSBlbnRyeSBmb3IgJXMiLCBwYXRoKQorKwl9CisrCSgqZW50cmllcylbcGF0aF0gPSB0cnVlCisrCXJlbCwgZXJyIDo9IGZpbGVwYXRoLlJlbChkZXN0LCBwYXRoKQorKwlpZiBlcnIgIT0gbmlsIHsKKysJCXJldHVybiBmYWxzZSwgZXJyCisrCX0KKysJaW5mbyA6PSBoZWFkZXIuRmlsZUluZm8oKQorKwlpZiBzdHJpbmdzLkhhc1ByZWZpeChyZWwsICIuLiIrc3RyaW5nKG9zLlBhdGhTZXBhcmF0b3IpKSB7CisrCQlyZXR1cm4gZmFsc2UsIGZtdC5FcnJvcmYoIiVxIGlzIG91dHNpZGUgb2YgJXEiLCBoZWFkZXIuTmFtZSwgZGVzdCkKKysJfQorIAorLQkJCWNvbnRpbnVlIGxvb3AKKysJaWYgc3RyaW5ncy5IYXNQcmVmaXgoaW5mby5OYW1lKCksICIud2guIikgeworKwkJcGF0aCA9IHN0cmluZ3MuUmVwbGFjZShwYXRoLCAiLndoLiIsICIiLCAxKQorKworKwkJaWYgZXJyID0gb3MuUmVtb3ZlQWxsKHBhdGgpOyBlcnIgIT0gbmlsIHsKKysJCQlyZXR1cm4gdHJ1ZSwgZXJyb3JzLldyYXAoZXJyLCAidW5hYmxlIHRvIGRlbGV0ZSB3aGl0ZW91dCBwYXRoIikKKyAJCX0KKyAKKy0JCWlmIGhkci5UeXBlZmxhZyAhPSB0YXIuVHlwZURpciB7CistCQkJZXJyID0gb3MuUmVtb3ZlQWxsKHBhdGgpCistCQkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKy0JCQkJcmV0dXJuIGVycgorLQkJCX0KKysJCXJldHVybiB0cnVlLCBuaWwKKysJfQorKworKwlpZiBoZWFkZXIuVHlwZWZsYWcgIT0gdGFyLlR5cGVEaXIgeworKwkJZXJyID0gb3MuUmVtb3ZlQWxsKHBhdGgpCisrCQlpZiBlcnIgIT0gbmlsICYmICFvcy5Jc05vdEV4aXN0KGVycikgeworKwkJCXJldHVybiBmYWxzZSwgZXJyCisgCQl9CisrCX0KKyAKKy0JCXN3aXRjaCBoZHIuVHlwZWZsYWcgeworLQkJY2FzZSB0YXIuVHlwZURpcjoKKy0JCQlmaSwgZXJyIDo9IG9zLkxzdGF0KHBhdGgpCisrCXN3aXRjaCBoZWFkZXIuVHlwZWZsYWcgeworKwljYXNlIHRhci5UeXBlRGlyOgorKwkJZmksIGVyciA6PSBvcy5Mc3RhdChwYXRoKQorKwkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKysJCQlyZXR1cm4gZmFsc2UsIGVycgorKwkJfQorKwkJaWYgb3MuSXNOb3RFeGlzdChlcnIpIHx8ICFmaS5Jc0RpcigpIHsKKysJCQllcnIgPSBvcy5SZW1vdmVBbGwocGF0aCkKKyAJCQlpZiBlcnIgIT0gbmlsICYmICFvcy5Jc05vdEV4aXN0KGVycikgeworLQkJCQlyZXR1cm4gZXJyCistCQkJfQorLQkJCWlmIG9zLklzTm90RXhpc3QoZXJyKSB8fCAhZmkuSXNEaXIoKSB7CistCQkJCWVyciA9IG9zLlJlbW92ZUFsbChwYXRoKQorLQkJCQlpZiBlcnIgIT0gbmlsICYmICFvcy5Jc05vdEV4aXN0KGVycikgeworLQkJCQkJcmV0dXJuIGVycgorLQkJCQl9CistCQkJCWVyciA9IG9zLk1rZGlyQWxsKHBhdGgsIGluZm8uTW9kZSgpKQorLQkJCQlpZiBlcnIgIT0gbmlsIHsKKy0JCQkJCXJldHVybiBlcnIKKy0JCQkJfQorKwkJCQlyZXR1cm4gZmFsc2UsIGVycgorIAkJCX0KKy0KKy0JCWNhc2UgdGFyLlR5cGVSZWcsIHRhci5UeXBlUmVnQToKKy0JCQlmLCBlcnIgOj0gb3MuT3BlbkZpbGUocGF0aCwgb3MuT19DUkVBVEV8b3MuT19XUk9OTFksIGluZm8uTW9kZSgpKQorKwkJCWVyciA9IG9zLk1rZGlyQWxsKHBhdGgsIGluZm8uTW9kZSgpKQorIAkJCWlmIGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAidW5hYmxlIHRvIG9wZW4gZmlsZSIpCisrCQkJCXJldHVybiBmYWxzZSwgZXJyCisgCQkJfQorKwkJfQorIAorLQkJCWlmIF8sIGVyciA6PSBpby5Db3B5KGYsIHRyKTsgZXJyICE9IG5pbCB7CistCQkJCWYuQ2xvc2UoKQorLQkJCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAidW5hYmxlIHRvIGNvcHkiKQorLQkJCX0KKy0JCQlmLkNsb3NlKCkKKysJY2FzZSB0YXIuVHlwZVJlZywgdGFyLlR5cGVSZWdBOgorKwkJZiwgZXJyIDo9IG9zLk9wZW5GaWxlKHBhdGgsIG9zLk9fQ1JFQVRFfG9zLk9fV1JPTkxZLCBpbmZvLk1vZGUoKSkKKysJCWlmIGVyciAhPSBuaWwgeworKwkJCXJldHVybiBmYWxzZSwgZXJyb3JzLldyYXAoZXJyLCAidW5hYmxlIHRvIG9wZW4gZmlsZSIpCisrCQl9CisgCistCQljYXNlIHRhci5UeXBlTGluazoKKy0JCQl0YXJnZXQgOj0gZmlsZXBhdGguSm9pbihkZXN0LCBoZHIuTGlua25hbWUpCisrCQlpZiBfLCBlcnIgOj0gaW8uQ29weShmLCByZWFkZXIpOyBlcnIgIT0gbmlsIHsKKysJCQlmLkNsb3NlKCkKKysJCQlyZXR1cm4gZmFsc2UsIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBjb3B5IikKKysJCX0KKysJCWYuQ2xvc2UoKQorIAorLQkJCWlmICFzdHJpbmdzLkhhc1ByZWZpeCh0YXJnZXQsIGRlc3QpIHsKKy0JCQkJcmV0dXJuIGZtdC5FcnJvcmYoImludmFsaWQgaGFyZGxpbmsgJXEgLT4gJXEiLCB0YXJnZXQsIGhkci5MaW5rbmFtZSkKKy0JCQl9CisrCWNhc2UgdGFyLlR5cGVMaW5rOgorKwkJdGFyZ2V0IDo9IGZpbGVwYXRoLkpvaW4oZGVzdCwgaGVhZGVyLkxpbmtuYW1lKQorIAorLQkJCWlmIGVyciA6PSBvcy5MaW5rKHRhcmdldCwgcGF0aCk7IGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCistCQkJfQorKwkJaWYgIXN0cmluZ3MuSGFzUHJlZml4KHRhcmdldCwgZGVzdCkgeworKwkJCXJldHVybiBmYWxzZSwgZm10LkVycm9yZigiaW52YWxpZCBoYXJkbGluayAlcSAtPiAlcSIsIHRhcmdldCwgaGVhZGVyLkxpbmtuYW1lKQorKwkJfQorIAorLQkJY2FzZSB0YXIuVHlwZVN5bWxpbms6CistCQkJdGFyZ2V0IDo9IGZpbGVwYXRoLkpvaW4oZmlsZXBhdGguRGlyKHBhdGgpLCBoZHIuTGlua25hbWUpCisrCQlpZiBlcnIgOj0gb3MuTGluayh0YXJnZXQsIHBhdGgpOyBlcnIgIT0gbmlsIHsKKysJCQlyZXR1cm4gZmFsc2UsIGVycgorKwkJfQorIAorLQkJCWlmICFzdHJpbmdzLkhhc1ByZWZpeCh0YXJnZXQsIGRlc3QpIHsKKy0JCQkJcmV0dXJuIGZtdC5FcnJvcmYoImludmFsaWQgc3ltbGluayAlcSAtPiAlcSIsIHBhdGgsIGhkci5MaW5rbmFtZSkKKy0JCQl9CisrCWNhc2UgdGFyLlR5cGVTeW1saW5rOgorKwkJdGFyZ2V0IDo9IGZpbGVwYXRoLkpvaW4oZmlsZXBhdGguRGlyKHBhdGgpLCBoZWFkZXIuTGlua25hbWUpCisgCistCQkJaWYgZXJyIDo9IG9zLlN5bWxpbmsoaGRyLkxpbmtuYW1lLCBwYXRoKTsgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKy0JCQl9CistCQljYXNlIHRhci5UeXBlWEdsb2JhbEhlYWRlcjoKKy0JCQlyZXR1cm4gbmlsCisrCQlpZiAhc3RyaW5ncy5IYXNQcmVmaXgodGFyZ2V0LCBkZXN0KSB7CisrCQkJcmV0dXJuIGZhbHNlLCBmbXQuRXJyb3JmKCJpbnZhbGlkIHN5bWxpbmsgJXEgLT4gJXEiLCBwYXRoLCBoZWFkZXIuTGlua25hbWUpCisgCQl9CistCQkvLyBEaXJlY3RvcnkgbXRpbWVzIG11c3QgYmUgaGFuZGxlZCBhdCB0aGUgZW5kIHRvIGF2b2lkIGZ1cnRoZXIKKy0JCS8vIGZpbGUgY3JlYXRpb24gaW4gdGhlbSB0byBtb2RpZnkgdGhlIGRpcmVjdG9yeSBtdGltZQorLQkJaWYgaGRyLlR5cGVmbGFnID09IHRhci5UeXBlRGlyIHsKKy0JCQlkaXJzID0gYXBwZW5kKGRpcnMsIGhkcikKKy0JCX0KKy0JfQorLQlmb3IgXywgaGRyIDo9IHJhbmdlIGRpcnMgeworLQkJcGF0aCA6PSBmaWxlcGF0aC5Kb2luKGRlc3QsIGhkci5OYW1lKQorIAorLQkJZmluZm8gOj0gaGRyLkZpbGVJbmZvKCkKKy0JCS8vIEkgYmVsaWV2ZSB0aGUgb2xkIHZlcnNpb24gd2FzIHVzaW5nIHRpbWUuTm93KCkuVVRDKCkgdG8gb3ZlcmNvbWUgYW4KKy0JCS8vIGludmFsaWQgZXJyb3IgZnJvbSBjaHRpbWVzLi4uLi5idXQgaGVyZSB3ZSBsb3NlIGhkci5BY2Nlc3NUaW1lIGxpa2UgdGhpcy4uLgorLQkJaWYgZXJyIDo9IG9zLkNodGltZXMocGF0aCwgdGltZS5Ob3coKS5VVEMoKSwgZmluZm8uTW9kVGltZSgpKTsgZXJyICE9IG5pbCB7CistCQkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgImVycm9yIGNoYW5naW5nIHRpbWUiKQorKwkJaWYgZXJyIDo9IG9zLlN5bWxpbmsoaGVhZGVyLkxpbmtuYW1lLCBwYXRoKTsgZXJyICE9IG5pbCB7CisrCQkJcmV0dXJuIGZhbHNlLCBlcnIKKyAJCX0KKysJY2FzZSB0YXIuVHlwZVhHbG9iYWxIZWFkZXI6CisrCQlyZXR1cm4gZmFsc2UsIG5pbAorIAl9CistCXJldHVybiBuaWwKKysKKysJcmV0dXJuIGZhbHNlLCBuaWwKKyB9CistLSAKKzIuNC4wLjUzLmc4NDQwZjc0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL29jaS1pbWFnZS10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9vY2ktaW1hZ2UtdG9vbHNfZ2l0LmJiCmluZGV4IDI5YTg5MjYuLjY4ZDczYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL29jaS1pbWFnZS10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvb2NpLWltYWdlLXRvb2xzX2dpdC5iYgpAQCAtMSw3ICsxLDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS10b29scyIKIFNVTU1BUlkgPSAiQSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB3b3JraW5nIHdpdGggdGhlIE9DSSBpbWFnZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiIKIExJQ0VOU0UgPSAiQXBhY2hlLTIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lM2ZjNTBhODhkMGEzNjQzMTNkZjRiMjFlZjIwYzI5ZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9ZTNmYzUwYTg4ZDBhMzY0MzEzZGY0YjIxZWYyMGMyOWUiCiAKIERFUEVORFMgPSAiXAogICAgICAgICAgICBvY2ktaW1hZ2Utc3BlYyBcCkBAIC0xMiwxMSArMTIsMTMgQEAKICAgICAgICAgICAgc3BmMTMtcGZsYWcgXAogICAgICAgICAgICIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzLmdpdCIKLVNSQ1JFViA9ICJhMzU4ZTAzZmRlNGUzNjI4YmY5ZmI3NjU2YmY2NDNiNjNmOTc1NjM2IgotUFYgPSAiMC4xLjArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1hZ2UtbWFuaWZlc3QtUmVjdXJzaXZlbHktcmVtb3ZlLXByZS1leGlzdGluZy1lbnRyaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWltYWdlLW1hbmlmZXN0LVNwbGl0LXVucGFja0xheWVyRW50cnktaW50by1pdHMtb3duLWYucGF0Y2giCiAKLVMgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiNGFiZTFhMTY2ZjliZTk3ZThlNzFiMWJiNGQ3NTk5Y2MyOTMyMzAxMSIKK1BWID0gIjAuMi4wLWRlditnaXQke1NSQ1BWfSIKK0dPX0lNUE9SVCA9ICJpbXBvcnQiCiAKIGluaGVyaXQgZ29hcmNoCiBpbmhlcml0IGdvCkBAIC0zNSwxMCArMzcsMTEgQEAKIAkjCiAJIyBXZSBhbHNvIG5lZWQgdG8gbGluayBpbiB0aGUgaXBhbGxvY2F0b3IgZGlyZWN0b3J5IGFzIHRoYXQgaXMgbm90IHVuZGVyCiAJIyBhIHNyYyBkaXJlY3RvcnkuCi0JbG4gLXNmbiAuICIke1N9L3ZlbmRvci9zcmMiCi0JbWtkaXIgLXAgIiR7U30vdmVuZG9yL3NyYy9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzLyIKLQlsbiAtc2ZuICIke1N9L2ltYWdlIiAiJHtTfS92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMvaW1hZ2UiCi0JZXhwb3J0IEdPUEFUSD0iJHtTfS92ZW5kb3IiCisJbG4gLXNmbiAuICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYyIKKwlta2RpciAtcCAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS10b29scy8iCisJbG4gLXNmbiAiJHtTfS9zcmMvaW1wb3J0L2ltYWdlIiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS10b29scy9pbWFnZSIKKwlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvdmVyc2lvbiIgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMvdmVyc2lvbiIKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgogCiAJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KIAkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCkBAIC00NywxNSArNTAsMTQgQEAKIAlleHBvcnQgTERGTEFHUz0iIgogCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0JVSUxEU0RLX0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIAlleHBvcnQgQ0dPX0xERkxBR1M9IiR7QlVJTERTREtfTERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwljZCAke1N9L3NyYy9pbXBvcnQKIAotCW9lX3J1bm1ha2UgdG9vbHMKKwlvZV9ydW5tYWtlIHRvb2wKIH0KIAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotCWluc3RhbGwgJHtTfS9vY2ktY3JlYXRlLXJ1bnRpbWUtYnVuZGxlICR7RH0vJHtzYmluZGlyfS8KLQlpbnN0YWxsICR7U30vb2NpLWltYWdlLXZhbGlkYXRlICR7RH0vJHtzYmluZGlyfS8KLQlpbnN0YWxsICR7U30vb2NpLXVucGFjayAke0R9LyR7c2JpbmRpcn0vCisJaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvb2NpLWltYWdlLXRvb2wgJHtEfS8ke3NiaW5kaXJ9LwogfQogCiBJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtc3BlYy9vY2ktcnVudGltZS1zcGVjX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtc3BlYy9vY2ktcnVudGltZS1zcGVjX2dpdC5iYgppbmRleCA4MmY4NTJmLi5kZWJhN2IzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXNwZWMvb2NpLXJ1bnRpbWUtc3BlY19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS1zcGVjL29jaS1ydW50aW1lLXNwZWNfZ2l0LmJiCkBAIC05LDggKzksOCBAQAogUEtHX05BTUUgPSAiZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy8ke1NSQ05BTUV9IgogU1JDX1VSSSA9ICJnaXQ6Ly8ke1BLR19OQU1FfS5naXQ7ZGVzdHN1ZmZpeD1naXQvc3JjLyR7UEtHX05BTUV9IgogCi1TUkNSRVYgPSAiNGFmMGM3MmY5MmFhY2YxYjQzNjE4ZDc5ODYxOTdkODIwOWZhZGYwYiIKLVBWID0gInYxLjAuMC1yYzQrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiYTM5YjFjZDRmZGY3NzQzYWI3MjFjYzlkYTU4YWJiZWUyZjg2MjRkMSIKK1BWID0gInYxLjAuMC1yYzYrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTM4LDQgKzM4LDQgQEAKIAogRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS9sb2NhbC9nby9zcmMvJHtQS0dfTkFNRX0vKiIKIAotQ0xFQU5CUk9LRU4gPSAiMSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9maWxlcy8wMDAxLVJldmVydC1pbXBsZW1lbnQtYWRkLXNldC1mdW5jdGlvbi1mb3ItaG9va3MtaXRlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXRvb2xzL2ZpbGVzLzAwMDEtUmV2ZXJ0LWltcGxlbWVudC1hZGQtc2V0LWZ1bmN0aW9uLWZvci1ob29rcy1pdGVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWE5MzEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9maWxlcy8wMDAxLVJldmVydC1pbXBsZW1lbnQtYWRkLXNldC1mdW5jdGlvbi1mb3ItaG9va3MtaXRlbXMucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAKK0Zyb20gMjkxMWVhYWJhYjkyZWMyY2RlYTJiMTczYzM0MjlkYjRhNTJiZWUyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMCBTZXAgMjAxNyAyMzoyODo1MiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgImltcGxlbWVudCBhZGQvc2V0IGZ1bmN0aW9uIGZvciBob29rcyBpdGVtcyIKKworVGhpcyByZXZlcnRzIGNvbW1pdCBkZjNhNDZmZWI5NzEzODZmOTIyYzdjMmMyODIyYjg4MzAxZjg3Y2IwLgorLS0tCisgY21kL29jaS1ydW50aW1lLXRvb2wvZ2VuZXJhdGUuZ28gfCAxMiArKysrKystLS0tLS0KKyBnZW5lcmF0ZS9nZW5lcmF0ZS5nbyAgICAgICAgICAgICB8IDQyICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ltcG9ydC9jbWQvb2NpLXJ1bnRpbWUtdG9vbC9nZW5lcmF0ZS5nbyBiL3NyYy9pbXBvcnQvY21kL29jaS1ydW50aW1lLXRvb2wvZ2VuZXJhdGUuZ28KK2luZGV4IGVkMTFmZThmMzcyOS4uNzEyMWNlNWZlMDdlIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9jbWQvb2NpLXJ1bnRpbWUtdG9vbC9nZW5lcmF0ZS5nbworKysrIGIvc3JjL2ltcG9ydC9jbWQvb2NpLXJ1bnRpbWUtdG9vbC9nZW5lcmF0ZS5nbworQEAgLTM1NCw3ICszNTQsNyBAQCBmdW5jIHNldHVwU3BlYyhnICpnZW5lcmF0ZS5HZW5lcmF0b3IsIGNvbnRleHQgKmNsaS5Db250ZXh0KSBlcnJvciB7CisgCQlmb3IgXywgcG9zdFN0YXJ0RW52IDo9IHJhbmdlIHBvc3RTdGFydEVudnMgeworIAkJCXBhdGgsIGVudiwgZXJyIDo9IHBhcnNlSG9va0Vudihwb3N0U3RhcnRFbnYpCisgCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKysJCQkJcmV0dXJuIG5pbAorIAkJCX0KKyAJCQlnLkFkZFBvc3RTdGFydEhvb2tFbnYocGF0aCwgZW52KQorIAkJfQorQEAgLTM4Nyw3ICszODcsNyBAQCBmdW5jIHNldHVwU3BlYyhnICpnZW5lcmF0ZS5HZW5lcmF0b3IsIGNvbnRleHQgKmNsaS5Db250ZXh0KSBlcnJvciB7CisgCQlmb3IgXywgcG9zdFN0b3BFbnYgOj0gcmFuZ2UgcG9zdFN0b3BFbnZzIHsKKyAJCQlwYXRoLCBlbnYsIGVyciA6PSBwYXJzZUhvb2tFbnYocG9zdFN0b3BFbnYpCisgCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKysJCQkJcmV0dXJuIG5pbAorIAkJCX0KKyAJCQlnLkFkZFBvc3RTdG9wSG9va0VudihwYXRoLCBlbnYpCisgCQl9CitAQCAtMzk4LDcgKzM5OCw3IEBAIGZ1bmMgc2V0dXBTcGVjKGcgKmdlbmVyYXRlLkdlbmVyYXRvciwgY29udGV4dCAqY2xpLkNvbnRleHQpIGVycm9yIHsKKyAJCWZvciBfLCBwb3N0U3RvcFRpbWVvdXQgOj0gcmFuZ2UgcG9zdFN0b3BUaW1lb3V0cyB7CisgCQkJcGF0aCwgdGltZW91dCwgZXJyIDo9IHBhcnNlSG9va1RpbWVvdXQocG9zdFN0b3BUaW1lb3V0KQorIAkJCWlmIGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCisrCQkJCXJldHVybiBuaWwKKyAJCQl9CisgCQkJZy5BZGRQb3N0U3RvcEhvb2tUaW1lb3V0KHBhdGgsIHRpbWVvdXQpCisgCQl9CitAQCAtNDA5LDcgKzQwOSw3IEBAIGZ1bmMgc2V0dXBTcGVjKGcgKmdlbmVyYXRlLkdlbmVyYXRvciwgY29udGV4dCAqY2xpLkNvbnRleHQpIGVycm9yIHsKKyAJCWZvciBfLCBob29rIDo9IHJhbmdlIHByZVN0YXJ0SG9va3MgeworIAkJCXBhdGgsIGFyZ3MsIGVyciA6PSBwYXJzZUhvb2soaG9vaykKKyAJCQlpZiBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycgorKwkJCQlyZXR1cm4gbmlsCisgCQkJfQorIAkJCWcuQWRkUHJlU3RhcnRIb29rKHBhdGgsIGFyZ3MpCisgCQl9CitAQCAtNDIwLDcgKzQyMCw3IEBAIGZ1bmMgc2V0dXBTcGVjKGcgKmdlbmVyYXRlLkdlbmVyYXRvciwgY29udGV4dCAqY2xpLkNvbnRleHQpIGVycm9yIHsKKyAJCWZvciBfLCBwcmVTdGFydEVudiA6PSByYW5nZSBwcmVTdGFydEVudnMgeworIAkJCXBhdGgsIGVudiwgZXJyIDo9IHBhcnNlSG9va0VudihwcmVTdGFydEVudikKKyAJCQlpZiBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycgorKwkJCQlyZXR1cm4gbmlsCisgCQkJfQorIAkJCWcuQWRkUHJlU3RhcnRIb29rRW52KHBhdGgsIGVudikKKyAJCX0KK0BAIC00MzEsNyArNDMxLDcgQEAgZnVuYyBzZXR1cFNwZWMoZyAqZ2VuZXJhdGUuR2VuZXJhdG9yLCBjb250ZXh0ICpjbGkuQ29udGV4dCkgZXJyb3IgeworIAkJZm9yIF8sIHByZVN0YXJ0VGltZW91dCA6PSByYW5nZSBwcmVTdGFydFRpbWVvdXRzIHsKKyAJCQlwYXRoLCB0aW1lb3V0LCBlcnIgOj0gcGFyc2VIb29rVGltZW91dChwcmVTdGFydFRpbWVvdXQpCisgCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKysJCQkJcmV0dXJuIG5pbAorIAkJCX0KKyAJCQlnLkFkZFByZVN0YXJ0SG9va1RpbWVvdXQocGF0aCwgdGltZW91dCkKKyAJCX0KK2RpZmYgLS1naXQgYS9zcmMvaW1wb3J0L2dlbmVyYXRlL2dlbmVyYXRlLmdvIGIvc3JjL2ltcG9ydC9nZW5lcmF0ZS9nZW5lcmF0ZS5nbworaW5kZXggODQ3NjJjM2NiZDA1Li5lZjVkMmNjOTViM2MgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L2dlbmVyYXRlL2dlbmVyYXRlLmdvCisrKysgYi9zcmMvaW1wb3J0L2dlbmVyYXRlL2dlbmVyYXRlLmdvCitAQCAtNzQ0LDM5ICs3NDQsMjkgQEAgZnVuYyAoZyAqR2VuZXJhdG9yKSBDbGVhclByZVN0YXJ0SG9va3MoKSB7CisgZnVuYyAoZyAqR2VuZXJhdG9yKSBBZGRQcmVTdGFydEhvb2socGF0aCBzdHJpbmcsIGFyZ3MgW11zdHJpbmcpIHsKKyAJZy5pbml0U3BlY0hvb2tzKCkKKyAJaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEFyZ3M6IGFyZ3N9CistCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5QcmVzdGFydCB7CistCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CistCQkJZy5zcGVjLkhvb2tzLlByZXN0YXJ0W2ldID0gaG9vaworLQkJCXJldHVybgorLQkJfQorLQl9CisgCWcuc3BlYy5Ib29rcy5QcmVzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUHJlc3RhcnQsIGhvb2spCisgfQorIAorIC8vIEFkZFByZVN0YXJ0SG9va0VudiBhZGRzIGVudnMgb2YgYSBwcmVzdGFydCBob29rIGludG8gZy5zcGVjLkhvb2tzLlByZXN0YXJ0LgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUHJlU3RhcnRIb29rRW52KHBhdGggc3RyaW5nLCBlbnZzIFtdc3RyaW5nKSB7CistCWcuaW5pdFNwZWNIb29rcygpCisrCWcuaW5pdFNwZWMoKQorIAlmb3IgaSwgaG9vayA6PSByYW5nZSBnLnNwZWMuSG9va3MuUHJlc3RhcnQgeworIAkJaWYgaG9vay5QYXRoID09IHBhdGggeworIAkJCWcuc3BlYy5Ib29rcy5QcmVzdGFydFtpXS5FbnYgPSBlbnZzCisgCQkJcmV0dXJuCisgCQl9CisgCX0KKy0JaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEVudjogZW52c30KKy0JZy5zcGVjLkhvb2tzLlByZXN0YXJ0ID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5QcmVzdGFydCwgaG9vaykKKyB9CisgCisgLy8gQWRkUHJlU3RhcnRIb29rVGltZW91dCBhZGRzIHRpbWVvdXQgb2YgYSBwcmVzdGFydCBob29rIGludG8gZy5zcGVjLkhvb2tzLlByZXN0YXJ0LgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUHJlU3RhcnRIb29rVGltZW91dChwYXRoIHN0cmluZywgdGltZW91dCBpbnQpIHsKKy0JZy5pbml0U3BlY0hvb2tzKCkKKysJZy5pbml0U3BlYygpCisgCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5QcmVzdGFydCB7CisgCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CisgCQkJZy5zcGVjLkhvb2tzLlByZXN0YXJ0W2ldLlRpbWVvdXQgPSAmdGltZW91dAorIAkJCXJldHVybgorIAkJfQorIAl9CistCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBUaW1lb3V0OiAmdGltZW91dH0KKy0JZy5zcGVjLkhvb2tzLlByZXN0YXJ0ID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5QcmVzdGFydCwgaG9vaykKKyB9CisgCisgLy8gQ2xlYXJQb3N0U3RvcEhvb2tzIGNsZWFyIGcuc3BlYy5Ib29rcy5Qb3N0c3RvcC4KK0BAIC03OTQsMzkgKzc4NCwyOSBAQCBmdW5jIChnICpHZW5lcmF0b3IpIENsZWFyUG9zdFN0b3BIb29rcygpIHsKKyBmdW5jIChnICpHZW5lcmF0b3IpIEFkZFBvc3RTdG9wSG9vayhwYXRoIHN0cmluZywgYXJncyBbXXN0cmluZykgeworIAlnLmluaXRTcGVjSG9va3MoKQorIAlob29rIDo9IHJzcGVjLkhvb2t7UGF0aDogcGF0aCwgQXJnczogYXJnc30KKy0JZm9yIGksIGhvb2sgOj0gcmFuZ2UgZy5zcGVjLkhvb2tzLlBvc3RzdG9wIHsKKy0JCWlmIGhvb2suUGF0aCA9PSBwYXRoIHsKKy0JCQlnLnNwZWMuSG9va3MuUG9zdHN0b3BbaV0gPSBob29rCistCQkJcmV0dXJuCistCQl9CistCX0KKyAJZy5zcGVjLkhvb2tzLlBvc3RzdG9wID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCwgaG9vaykKKyB9CisgCisgLy8gQWRkUG9zdFN0b3BIb29rRW52IGFkZHMgZW52cyBvZiBhIHBvc3RzdG9wIGhvb2sgaW50byBnLnNwZWMuSG9va3MuUG9zdHN0b3AuCisgZnVuYyAoZyAqR2VuZXJhdG9yKSBBZGRQb3N0U3RvcEhvb2tFbnYocGF0aCBzdHJpbmcsIGVudnMgW11zdHJpbmcpIHsKKy0JZy5pbml0U3BlY0hvb2tzKCkKKysJZy5pbml0U3BlYygpCisgCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCB7CisgCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CisgCQkJZy5zcGVjLkhvb2tzLlBvc3RzdG9wW2ldLkVudiA9IGVudnMKKyAJCQlyZXR1cm4KKyAJCX0KKyAJfQorLQlob29rIDo9IHJzcGVjLkhvb2t7UGF0aDogcGF0aCwgRW52OiBlbnZzfQorLQlnLnNwZWMuSG9va3MuUG9zdHN0b3AgPSBhcHBlbmQoZy5zcGVjLkhvb2tzLlBvc3RzdG9wLCBob29rKQorIH0KKyAKKyAvLyBBZGRQb3N0U3RvcEhvb2tUaW1lb3V0IGFkZHMgdGltZW91dCBvZiBhIHBvc3RzdG9wIGhvb2sgaW50byBnLnNwZWMuSG9va3MuUG9zdHN0b3AuCisgZnVuYyAoZyAqR2VuZXJhdG9yKSBBZGRQb3N0U3RvcEhvb2tUaW1lb3V0KHBhdGggc3RyaW5nLCB0aW1lb3V0IGludCkgeworLQlnLmluaXRTcGVjSG9va3MoKQorKwlnLmluaXRTcGVjKCkKKyAJZm9yIGksIGhvb2sgOj0gcmFuZ2UgZy5zcGVjLkhvb2tzLlBvc3RzdG9wIHsKKyAJCWlmIGhvb2suUGF0aCA9PSBwYXRoIHsKKyAJCQlnLnNwZWMuSG9va3MuUG9zdHN0b3BbaV0uVGltZW91dCA9ICZ0aW1lb3V0CisgCQkJcmV0dXJuCisgCQl9CisgCX0KKy0JaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIFRpbWVvdXQ6ICZ0aW1lb3V0fQorLQlnLnNwZWMuSG9va3MuUG9zdHN0b3AgPSBhcHBlbmQoZy5zcGVjLkhvb2tzLlBvc3RzdG9wLCBob29rKQorIH0KKyAKKyAvLyBDbGVhclBvc3RTdGFydEhvb2tzIGNsZWFyIGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQuCitAQCAtODQ0LDM5ICs4MjQsMjkgQEAgZnVuYyAoZyAqR2VuZXJhdG9yKSBDbGVhclBvc3RTdGFydEhvb2tzKCkgeworIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUG9zdFN0YXJ0SG9vayhwYXRoIHN0cmluZywgYXJncyBbXXN0cmluZykgeworIAlnLmluaXRTcGVjSG9va3MoKQorIAlob29rIDo9IHJzcGVjLkhvb2t7UGF0aDogcGF0aCwgQXJnczogYXJnc30KKy0JZm9yIGksIGhvb2sgOj0gcmFuZ2UgZy5zcGVjLkhvb2tzLlBvc3RzdGFydCB7CistCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CistCQkJZy5zcGVjLkhvb2tzLlBvc3RzdGFydFtpXSA9IGhvb2sKKy0JCQlyZXR1cm4KKy0JCX0KKy0JfQorIAlnLnNwZWMuSG9va3MuUG9zdHN0YXJ0ID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQsIGhvb2spCisgfQorIAorIC8vIEFkZFBvc3RTdGFydEhvb2tFbnYgYWRkcyBlbnZzIG9mIGEgcG9zdHN0YXJ0IGhvb2sgaW50byBnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUG9zdFN0YXJ0SG9va0VudihwYXRoIHN0cmluZywgZW52cyBbXXN0cmluZykgeworLQlnLmluaXRTcGVjSG9va3MoKQorKwlnLmluaXRTcGVjKCkKKyAJZm9yIGksIGhvb2sgOj0gcmFuZ2UgZy5zcGVjLkhvb2tzLlBvc3RzdGFydCB7CisgCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CisgCQkJZy5zcGVjLkhvb2tzLlBvc3RzdGFydFtpXS5FbnYgPSBlbnZzCisgCQkJcmV0dXJuCisgCQl9CisgCX0KKy0JaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEVudjogZW52c30KKy0JZy5zcGVjLkhvb2tzLlBvc3RzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LCBob29rKQorIH0KKyAKKyAvLyBBZGRQb3N0U3RhcnRIb29rVGltZW91dCBhZGRzIHRpbWVvdXQgb2YgYSBwb3N0c3RhcnQgaG9vayBpbnRvIGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQuCisgZnVuYyAoZyAqR2VuZXJhdG9yKSBBZGRQb3N0U3RhcnRIb29rVGltZW91dChwYXRoIHN0cmluZywgdGltZW91dCBpbnQpIHsKKy0JZy5pbml0U3BlY0hvb2tzKCkKKysJZy5pbml0U3BlYygpCisgCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQgeworIAkJaWYgaG9vay5QYXRoID09IHBhdGggeworIAkJCWcuc3BlYy5Ib29rcy5Qb3N0c3RhcnRbaV0uVGltZW91dCA9ICZ0aW1lb3V0CisgCQkJcmV0dXJuCisgCQl9CisgCX0KKy0JaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIFRpbWVvdXQ6ICZ0aW1lb3V0fQorLQlnLnNwZWMuSG9va3MuUG9zdHN0YXJ0ID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQsIGhvb2spCisgfQorIAorIC8vIEFkZFRtcGZzTW91bnQgYWRkcyBhIHRtcGZzIG1vdW50IGludG8gZy5zcGVjLk1vdW50cy4KKy0tIAorMi40LjAuNTMuZzg0NDBmNzQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9vY2ktcnVudGltZS10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXRvb2xzL29jaS1ydW50aW1lLXRvb2xzX2dpdC5iYgppbmRleCA0Zjc3ZGNlLi42MWI2OGI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXRvb2xzL29jaS1ydW50aW1lLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXRvb2xzL29jaS1ydW50aW1lLXRvb2xzX2dpdC5iYgpAQCAtMSwxNCArMSwxNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMiCiBTVU1NQVJZID0gIm9jaS1ydW50aW1lLXRvb2wgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB3b3JraW5nIHdpdGggdGhlIE9DSSBydW50aW1lIHNwZWNpZmljYXRpb24iCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjM1NWE2MWEzOTRhNTA0ZGFjZGU5MDFjOTU4ZjY2MmMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PWIzNTVhNjFhMzk0YTUwNGRhY2RlOTAxYzk1OGY2NjJjIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS10b29scy5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS10b29scy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtaW1wbGVtZW50LWFkZC1zZXQtZnVuY3Rpb24tZm9yLWhvb2tzLWl0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgogCi1TUkNSRVYgPSAiMDM4YjBjOTliODJmM2MwOGRlMzFmNmIwOWU2OTNlYjI0NjQ0YWZmZCIKLVBWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjZlN2RhODE0OGY0ZGUyYzllOWM5ZDNiMzQ1NTc2ODk4ZDRmNDEyY2IiCitQViA9ICIwLjEuMCtnaXQke1NSQ1BWfSIKK0dPX0lNUE9SVCA9ICJpbXBvcnQiCiAKLVMgPSAiJHtXT1JLRElSfS9naXQiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKIAogaW5oZXJpdCBnb2FyY2gKIGluaGVyaXQgZ28KQEAgLTE2LDcgKzE5LDcgQEAKIGRvX2NvbXBpbGUoKSB7CiAJZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKIAlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nbyIKLQlleHBvcnQgR09QQVRIPSIke1N9IgorCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgogCiAJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KIAkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCkBAIC0yNiwxMCArMjksMjQgQEAKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKKwkjIGxpbmsgZml4dXBzIGZvciBjb21waWxhdGlvbgorCXJtIC1mICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisJbG4gLXNmIC4vICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisJbWtkaXIgLXAgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMKKwlsbiAtc2YgLi4vLi4vLi4vLi4vZ2VuZXJhdGUgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMvZ2VuZXJhdGUKKwlsbiAtc2YgLi4vLi4vLi4vLi4vdmFsaWRhdGUgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMvdmFsaWRhdGUKKwlsbiAtc2YgLi4vLi4vLi4vLi4vY21kICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzL2NtZAorCWxuIC1zZiAuLi8uLi8uLi8uLi9lcnJvciAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS10b29scy9lcnJvcgorCWxuIC1zZiAuLi8uLi8uLi8uLi9zcGVjZXJyb3IgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMvc3BlY2Vycm9yCisJY2QgJHtTfS9zcmMvaW1wb3J0CisKIAlvZV9ydW5tYWtlCiB9CiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLQlpbnN0YWxsICR7U30vb2NpLXJ1bnRpbWUtdG9vbCAke0R9LyR7c2JpbmRpcn0vb2NpLXJ1bnRpbWUtdG9vbAorCWluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L29jaS1ydW50aW1lLXRvb2wgJHtEfS8ke3NiaW5kaXJ9L29jaS1ydW50aW1lLXRvb2wKIH0KKworZGVsdGFzayBjb21waWxlX3B0ZXN0X2Jhc2UKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2svMDAwMS1zZWxpbnV4LWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2svMDAwMS1zZWxpbnV4LWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoCmluZGV4IDUwN2NkMDguLjUwMTZmNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rLzAwMDEtc2VsaW51eC1kcm9wLXNlbGludXgtc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9vay8wMDAxLXNlbGludXgtZHJvcC1zZWxpbnV4LXN1cHBvcnQucGF0Y2gKQEAgLTUsMjUgKzUsMzQgQEAKIAogU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvc3lzdGVtZGhvb2suYyB8IDkgLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgZGVsZXRpb25zKC0pCisgc3JjL3N5c3RlbWRob29rLmMgfCAgIDEyIC0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kaG9vay5jIGIvc3JjL3N5c3RlbWRob29rLmMKLWluZGV4IDI3NGU1YjkxMDY5OS4uYjllOGYxYmUzNzZhIDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWRob29rLmMKICsrKyBiL3NyYy9zeXN0ZW1kaG9vay5jCi1AQCAtMTQsNyArMTQsNiBAQAorQEAgLTE2LDcgKzE2LDYgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGludXgvbGltaXRzLmg+CiAtI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgogICNpbmNsdWRlIDx5YWpsL3lhamxfdHJlZS5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CiAgCi0gI2luY2x1ZGUgImNvbmZpZy5oIgotQEAgLTUzOCwxNCArNTM3LDYgQEAgc3RhdGljIGludCBwcmVzdGFydChjb25zdCBjaGFyICpyb290ZnMsCitAQCAtMTI5LDkgKzEyOCw2IEBAIHN0YXRpYyBpbnQgY2hwZXJtKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnMKKyAJCQkJY2xvc2VkaXIoZGlyKTsKKyAJCQkJcmV0dXJuIC0xOworIAkJCX0KKy0JCQlpZiAoc2V0ZmlsZWNvbiAoZnVsbF9wYXRoLCBsYWJlbCkgPCAwKSB7CistCQkJCXByX3BlcnJvcigiRmFpbGVkIHRvIHNldCBjb250ZXh0ICVzIG9uICVzIiwgbGFiZWwsIGZ1bGxfcGF0aCk7CistCQkJfQorIAorIAkJCWlmIChkb0Nob3duKSB7CisgCQkJCS8qIENoYW5nZSB1aWQgYW5kIGdpZCB0byBzb21ldGhpbmcgdGhlIGNvbnRhaW5lciBjYW4gaGFuZGxlICovCitAQCAtNDk2LDE0ICs0OTIsNiBAQCBzdGF0aWMgaW50IHByZXN0YXJ0KGNvbnN0IGNoYXIgKnJvb3RmcywKKyAJCQkJcmV0dXJuIC0xOwogIAkJCX0KICAJCX0KLSAKKy0KIC0JCWlmIChzdHJjbXAoIiIsIG1vdW50X2xhYmVsKSkgewogLQkJCXJjID0gc2V0ZmlsZWNvbihqb3VybmFsX2RpciwgKHNlY3VyaXR5X2NvbnRleHRfdCltb3VudF9sYWJlbCk7CiAtCQkJaWYgKHJjIDwgMCkgewpAQCAtMzEsMTAgKzQwLDYgQEAKIC0JCQkJcmV0dXJuIC0xOwogLQkJCX0KIC0JCX0KLS0KLSAJCWlmIChtYWtlcGF0aChjb250X2pvdXJuYWxfZGlyLCAwNzU1KSA9PSAtMSkgewotIAkJCWlmIChlcnJubyAhPSBFRVhJU1QpIHsKLSAJCQkJcHJfcGVycm9yKCJGYWlsZWQgdG8gbWtkaXIgY29udGFpbmVyIGpvdXJuYWwgZGlyOiAlcyIsIGNvbnRfam91cm5hbF9kaXIpOwotLS0gCi0yLjQuMC41My5nODQ0MGY3NAotCisgCisgCQkvKiBBdHRlbXB0IHRvIGNyZWFyZSAvdmFyL2xvZy9qb3VybmFsIGluc2lkZSBvZiByb290ZnMsCisgCQkgICBpZiBzdWNjZXNzZnVsLCBvciBkaXJlY3RvcnkgZXhpc3RzLCBtb3VudCB0bXBmcyBvbiB0b3Agb2YKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rX2dpdC5iYgppbmRleCA4NzI4NzJhLi5mYzg4OTA1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9va19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2tfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogCiBERVBFTkRTID0gInlhamwgdXRpbC1saW51eCIKIAotU1JDUkVWID0gImNhNTE1YzFmMzk5YmQwYjE2ZTk0YjdjMzRhYTFlZjIwNDk4YmVjYTYiCitTUkNSRVYgPSAiMWFjOTU4YTQxOTdhOWVhNTIxNzQ4MTJmYzdkN2QwMzZhZjgxNDBkMyIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wcm9qZWN0YXRvbWljL29jaS1zeXN0ZW1kLWhvb2sgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zZWxpbnV4LWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcmlkZGxlci9yaWRkbGVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcmlkZGxlci9yaWRkbGVyX2dpdC5iYgppbmRleCBhZTZjNWVjLi45ZjdmZTZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3JpZGRsZXIvcmlkZGxlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9yaWRkbGVyL3JpZGRsZXJfZ2l0LmJiCkBAIC0xLDExICsxLDEyIEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamZyYXplbGxlL3JpZGRsZXIiCiBTVU1NQVJZID0gIkNvbnZlcnQgYGRvY2tlciBpbnNwZWN0YCB0byBvcGVuY29udGFpbmVycyAoT0NJIGNvbXBhdGlibGUpIHJ1bmMgc3BlYy4iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIwY2U0YzZhNGYzMmQ2ZWU0YTY4ZTNhNzUwNmRiM2YxIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT0yMGNlNGM2YTRmMzJkNmVlNGE2OGUzYTc1MDZkYjNmMSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2pmcmF6ZWxsZS9yaWRkbGVyO2JyYW5jaD1tYXN0ZXIiCiBTUkNSRVYgPSAiMjNiZWZhMGIyMzI4NzdiNWI1MDJiODI4ZTI0MTYxZDgwMWJkNjdmNiIKIFBWID0gIjAuMS4wK2dpdCR7U1JDUFZ9IgorR09fSU1QT1JUID0gImltcG9ydCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjYsMTAgKzI3LDEwIEBACiAJIwogCSMgV2UgYWxzbyBuZWVkIHRvIGxpbmsgaW4gdGhlIGlwYWxsb2NhdG9yIGRpcmVjdG9yeSBhcyB0aGF0IGlzIG5vdCB1bmRlcgogCSMgYSBzcmMgZGlyZWN0b3J5LgotCWxuIC1zZm4gLiAiJHtTfS92ZW5kb3Ivc3JjIgotCW1rZGlyIC1wICIke1N9L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9yaWRkbGVyIgotCWxuIC1zZm4gIiR7U30vcGFyc2UiICIke1N9L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9yaWRkbGVyL3BhcnNlIgotCWV4cG9ydCBHT1BBVEg9IiR7U30vdmVuZG9yIgorCWxuIC1zZm4gLiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMiCisJbWtkaXIgLXAgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovcmlkZGxlciIKKwlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvcGFyc2UiICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L3JpZGRsZXIvcGFyc2UiCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCiAJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcwpAQCAtMzgsMTEgKzM5LDEyIEBACiAJZXhwb3J0IExERkxBR1M9IiIKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJY2QgJHtTfS9zcmMvaW1wb3J0CiAKIAlvZV9ydW5tYWtlIHN0YXRpYwogfQogCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAke1N9L3JpZGRsZXIgJHtEfS8ke3NiaW5kaXJ9L3JpZGRsZXIKKwlpbnN0YWxsICR7U30vc3JjL2ltcG9ydC9yaWRkbGVyICR7RH0vJHtzYmluZGlyfS9yaWRkbGVyCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1EaXNhYmxlLWJ1aWxkaW5nLXJlY3Z0dHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1EaXNhYmxlLWJ1aWxkaW5nLXJlY3Z0dHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExZjY5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLURpc2FibGUtYnVpbGRpbmctcmVjdnR0eS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGFhMmZjN2IwZWFjYmE2MTE3NWYwODNjYzhkOGFkYzIzM2JjZDA1NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogVGh1LCAxMiBPY3QgMjAxNyAxMTozNDoyNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGJ1aWxkaW5nIHJlY3Z0dHkKKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZQorLS0tCisgTWFrZWZpbGUgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMGZjZjUwOC4uMjRmNDdkYyAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvTWFrZWZpbGUKKysrKyBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKK0BAIC0zOCw3ICszOCw2IEBAIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eTogJChTT1VSQ0VTKQorIAorIHN0YXRpYzogJChTT1VSQ0VTKQorIAlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgorLQlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKyAKKyByZWxlYXNlOgorIAlAZmxhZ19saXN0PShzZWNjb21wIHNlbGludXggYXBwYXJtb3Igc3RhdGljKTsgXAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1VcGRhdGUtdG8tcnVudGltZS1zcGVjLTE5OGYyM2Y4MjdlZWEzOTdkNDMzMWQ3ZWIwNDhkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXBkYXRlLXRvLXJ1bnRpbWUtc3BlYy0xOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2M3NmZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXBkYXRlLXRvLXJ1bnRpbWUtc3BlYy0xOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZC5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIGU4ZWY2MDI1YTRmNDg2MjBiYWY5MTczN2NkMzdlYjVlNmE0MGY0OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KK0RhdGU6IEZyaSwgMjMgSnVuIDIwMTcgMTc6MTQ6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFVwZGF0ZSB0byBydW50aW1lIHNwZWMKKyAxOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZDlkNGM3ZmY3YmVlCisKK1VwZGF0ZXMgbWVtb3J5IGxpbWl0cyB0byBiZSBpbnQ2NCwgYW5kIHJlbW92ZXMgUGxhdGZvcm0gZnJvbSBzcGVjLgorCitTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KKy0tLQorIHZlbmRvci5jb25mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyAuLi4vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvL2NvbmZpZy5nbyB8IDIzICsrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS92ZW5kb3IuY29uZiBiL3ZlbmRvci5jb25mCitpbmRleCBlMjNlN2VhNy4uMDlhOGE5MjQgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L3ZlbmRvci5jb25mCisrKysgYi9zcmMvaW1wb3J0L3ZlbmRvci5jb25mCitAQCAtMSw3ICsxLDcgQEAKKyAjIE9DSSBydW50aW1lLXNwZWMuIFdoZW4gdXBkYXRpbmcgdGhpcywgbWFrZSBzdXJlIHlvdSB1c2UgYSB2ZXJzaW9uIHRhZyByYXRoZXIKKyAjIHRoYW4gYSBjb21taXQgSUQgc28gaXQncyBtdWNoIG1vcmUgb2J2aW91cyB3aGF0IHZlcnNpb24gb2YgdGhlIHNwZWMgd2UgYXJlCisgIyB1c2luZy4KKy1naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYyAyMzljNGU0NGYyYTYxMmVkODVmNmRiOWM2NjI0N2FhMzNmNDM3ZTkxCisrZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMgMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQ5ZDRjN2ZmN2JlZQorICMgQ29yZSBsaWJjb250YWluZXIgZnVuY3Rpb25hbGl0eS4KKyBnaXRodWIuY29tL21ydW5hbHAvZmlsZXV0aWxzIGVkODY5YjAyOTY3NGMwZTljZTRjMGRmYTc4MTQwNWMyZDk5NDZkMDgKKyBnaXRodWIuY29tL29wZW5jb250YWluZXJzL3NlbGludXggdjEuMC4wLXJjMQorZGlmZiAtLWdpdCBhL3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMvc3BlY3MtZ28vY29uZmlnLmdvCitpbmRleCA4YmY4ZDkyNC4uNjhhYjExMmUgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28KKysrKyBiL3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvL2NvbmZpZy5nbworQEAgLTYsOCArNiw2IEBAIGltcG9ydCAib3MiCisgdHlwZSBTcGVjIHN0cnVjdCB7CisgCS8vIFZlcnNpb24gb2YgdGhlIE9wZW4gQ29udGFpbmVyIFJ1bnRpbWUgU3BlY2lmaWNhdGlvbiB3aXRoIHdoaWNoIHRoZSBidW5kbGUgY29tcGxpZXMuCisgCVZlcnNpb24gc3RyaW5nIGBqc29uOiJvY2lWZXJzaW9uImAKKy0JLy8gUGxhdGZvcm0gc3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uJ3MgdGFyZ2V0IHBsYXRmb3JtLgorLQlQbGF0Zm9ybSBQbGF0Zm9ybSBganNvbjoicGxhdGZvcm0iYAorIAkvLyBQcm9jZXNzIGNvbmZpZ3VyZXMgdGhlIGNvbnRhaW5lciBwcm9jZXNzLgorIAlQcm9jZXNzICpQcm9jZXNzIGBqc29uOiJwcm9jZXNzLG9taXRlbXB0eSJgCisgCS8vIFJvb3QgY29uZmlndXJlcyB0aGUgY29udGFpbmVyJ3Mgcm9vdCBmaWxlc3lzdGVtLgorQEAgLTEwMSwxNSArOTksNiBAQCB0eXBlIFJvb3Qgc3RydWN0IHsKKyAJUmVhZG9ubHkgYm9vbCBganNvbjoicmVhZG9ubHksb21pdGVtcHR5ImAKKyB9CisgCistLy8gUGxhdGZvcm0gc3BlY2lmaWVzIE9TIGFuZCBhcmNoIGluZm9ybWF0aW9uIGZvciB0aGUgaG9zdCBzeXN0ZW0gdGhhdCB0aGUgY29udGFpbmVyCistLy8gaXMgY3JlYXRlZCBmb3IuCistdHlwZSBQbGF0Zm9ybSBzdHJ1Y3QgeworLQkvLyBPUyBpcyB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KKy0JT1Mgc3RyaW5nIGBqc29uOiJvcyJgCistCS8vIEFyY2ggaXMgdGhlIGFyY2hpdGVjdHVyZQorLQlBcmNoIHN0cmluZyBganNvbjoiYXJjaCJgCistfQorLQorIC8vIE1vdW50IHNwZWNpZmllcyBhIG1vdW50IGZvciBhIGNvbnRhaW5lci4KKyB0eXBlIE1vdW50IHN0cnVjdCB7CisgCS8vIERlc3RpbmF0aW9uIGlzIHRoZSBhYnNvbHV0ZSBwYXRoIHdoZXJlIHRoZSBtb3VudCB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgY29udGFpbmVyLgorQEAgLTI4NCwxNSArMjczLDE1IEBAIHR5cGUgTGludXhCbG9ja0lPIHN0cnVjdCB7CisgLy8gTGludXhNZW1vcnkgZm9yIExpbnV4IGNncm91cCAnbWVtb3J5JyByZXNvdXJjZSBtYW5hZ2VtZW50CisgdHlwZSBMaW51eE1lbW9yeSBzdHJ1Y3QgeworIAkvLyBNZW1vcnkgbGltaXQgKGluIGJ5dGVzKS4KKy0JTGltaXQgKnVpbnQ2NCBganNvbjoibGltaXQsb21pdGVtcHR5ImAKKysJTGltaXQgKmludDY0IGBqc29uOiJsaW1pdCxvbWl0ZW1wdHkiYAorIAkvLyBNZW1vcnkgcmVzZXJ2YXRpb24gb3Igc29mdF9saW1pdCAoaW4gYnl0ZXMpLgorLQlSZXNlcnZhdGlvbiAqdWludDY0IGBqc29uOiJyZXNlcnZhdGlvbixvbWl0ZW1wdHkiYAorKwlSZXNlcnZhdGlvbiAqaW50NjQgYGpzb246InJlc2VydmF0aW9uLG9taXRlbXB0eSJgCisgCS8vIFRvdGFsIG1lbW9yeSBsaW1pdCAobWVtb3J5ICsgc3dhcCkuCistCVN3YXAgKnVpbnQ2NCBganNvbjoic3dhcCxvbWl0ZW1wdHkiYAorKwlTd2FwICppbnQ2NCBganNvbjoic3dhcCxvbWl0ZW1wdHkiYAorIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IChpbiBieXRlcykuCistCUtlcm5lbCAqdWludDY0IGBqc29uOiJrZXJuZWwsb21pdGVtcHR5ImAKKysJS2VybmVsICppbnQ2NCBganNvbjoia2VybmVsLG9taXRlbXB0eSJgCisgCS8vIEtlcm5lbCBtZW1vcnkgbGltaXQgZm9yIHRjcCAoaW4gYnl0ZXMpCistCUtlcm5lbFRDUCAqdWludDY0IGBqc29uOiJrZXJuZWxUQ1Asb21pdGVtcHR5ImAKKysJS2VybmVsVENQICppbnQ2NCBganNvbjoia2VybmVsVENQLG9taXRlbXB0eSJgCisgCS8vIEhvdyBhZ2dyZXNzaXZlIHRoZSBrZXJuZWwgd2lsbCBzd2FwIG1lbW9yeSBwYWdlcy4KKyAJU3dhcHBpbmVzcyAqdWludDY0IGBqc29uOiJzd2FwcGluZXNzLG9taXRlbXB0eSJgCisgfQorQEAgLTQ4Niw3ICs0NzUsNyBAQCB0eXBlIFdpbmRvd3NOZXR3b3JrIHN0cnVjdCB7CisgCUVuZHBvaW50TGlzdCBbXXN0cmluZyBganNvbjoiZW5kcG9pbnRMaXN0LG9taXRlbXB0eSJgCisgCS8vIFNwZWNpZmllcyBpZiB1bnF1YWxpZmllZCBETlMgbmFtZSByZXNvbHV0aW9uIGlzIGFsbG93ZWQuCisgCUFsbG93VW5xdWFsaWZpZWRETlNRdWVyeSBib29sIGBqc29uOiJhbGxvd1VucXVhbGlmaWVkRE5TUXVlcnksb21pdGVtcHR5ImAKKy0JLy8gQ29tbWEgc2VwZXJhdGVkIGxpc3Qgb2YgRE5TIHN1ZmZpeGVzIHRvIHVzZSBmb3IgbmFtZSByZXNvbHV0aW9uLgorKwkvLyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBETlMgc3VmZml4ZXMgdG8gdXNlIGZvciBuYW1lIHJlc29sdXRpb24uCisgCUROU1NlYXJjaExpc3QgW11zdHJpbmcgYGpzb246IkROU1NlYXJjaExpc3Qsb21pdGVtcHR5ImAKKyAJLy8gTmFtZSAoSUQpIG9mIHRoZSBjb250YWluZXIgdGhhdCB3ZSB3aWxsIHNoYXJlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suCisgCU5ldHdvcmtTaGFyZWRDb250YWluZXJOYW1lIHN0cmluZyBganNvbjoibmV0d29ya1NoYXJlZENvbnRhaW5lck5hbWUsb21pdGVtcHR5ImAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY1MTcxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gMDM3YzIwYjNiM2VmNWU5ZWFkMDI4MmFhNjRmOWI4OGMwYzE4OTM0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitEYXRlOiBUaHUsIDUgT2N0IDIwMTcgMTM6MTQ6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGNvcnJlY3QgZ28gY3Jvc3MtY29tcGlsZXIKKworV2UgbmVlZCB0byB1c2UgJyR7R099JyBhcyBzZXQgYnkgT3BlbkVtYmVkZGVkIGluc3RlYWQgb2YganVzdCAnZ28nLiBKdXN0IHVzaW5nCisnZ28nIHdpbGwgaW52b2tlIGdvLW5hdGl2ZS4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZQorLS0tCisgTWFrZWZpbGUgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDgxMTc4OTIuLjBmY2Y1MDggMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L01ha2VmaWxlCisrKysgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitAQCAtMjcsMTggKzI3LDE4IEBAIFNIRUxMIDo9ICQoc2hlbGwgY29tbWFuZCAtdiBiYXNoIDI+L2Rldi9udWxsKQorIC5ERUZBVUxUOiBydW5jCisgCisgcnVuYzogJChTT1VSQ0VTKQorLQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIHJ1bmMgLgorKwkkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIHJ1bmMgLgorIAorIGFsbDogcnVuYyByZWN2dHR5CisgCisgcmVjdnR0eTogY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5CisgCisgY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5OiAkKFNPVVJDRVMpCistCWdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorKwkkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKyAKKyBzdGF0aWM6ICQoU09VUkNFUykKKy0JQ0dPX0VOQUJMRUQ9MSBnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBydW5jIC4KKy0JQ0dPX0VOQUJMRUQ9MSBnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisrCUNHT19FTkFCTEVEPTEgJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gcnVuYyAuCisrCUNHT19FTkFCTEVEPTEgJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorIAorIHJlbGVhc2U6CisgCUBmbGFnX2xpc3Q9KHNlY2NvbXAgc2VsaW51eCBhcHBhcm1vciBzdGF0aWMpOyBcCitAQCAtNjIsMTUgKzYyLDE1IEBAIHJlbGVhc2U6CisgCQkJQ0dPX0VOQUJMRUQ9MTsgXAorIAkJfTsgXAorIAkJZWNobyAiQnVpbGRpbmcgdGFyZ2V0OiAkJG91dHB1dCI7IFwKKy0JCWdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICIkJGxkZmxhZ3MgJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQkdGFncyIgLW8gIiQkb3V0cHV0IiAuOyBcCisrCQkkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiJCRsZGZsYWdzICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkJHRhZ3MiIC1vICIkJG91dHB1dCIgLjsgXAorIAlkb25lCisgCisgZGJ1aWxkOiBydW5jaW1hZ2UKKyAJZG9ja2VyIHJ1biAtLXJtIC12ICQoQ1VSRElSKTovZ28vc3JjLyQoUFJPSkVDVCkgLS1wcml2aWxlZ2VkICQoUlVOQ19JTUFHRSkgbWFrZSBjbGVhbiBhbGwKKyAKKyBsaW50OgorLQlnbyB2ZXQgJChhbGxwYWNrYWdlcykKKy0JZ28gZm10ICQoYWxscGFja2FnZXMpCisrCSQoR08pIHZldCAkKGFsbHBhY2thZ2VzKQorKwkkKEdPKSBmbXQgJChhbGxwYWNrYWdlcykKKyAKKyBtYW46CisgCW1hbi9tZDJtYW4tYWxsLnNoCitAQCAtODgsNyArODgsNyBAQCB1bml0dGVzdDogcnVuY2ltYWdlCisgCWRvY2tlciBydW4gLWUgVEVTVEZMQUdTIC10IC0tcHJpdmlsZWdlZCAtLXJtIC12ICQoQ1VSRElSKTovZ28vc3JjLyQoUFJPSkVDVCkgJChSVU5DX0lNQUdFKSBtYWtlIGxvY2FsdW5pdHRlc3QKKyAKKyBsb2NhbHVuaXR0ZXN0OiBhbGwKKy0JZ28gdGVzdCAtdGltZW91dCAzbSAtdGFncyAiJChCVUlMRFRBR1MpIiAke1RFU1RGTEFHU30gLXYgJChhbGxwYWNrYWdlcykKKysJJChHTykgdGVzdCAtdGltZW91dCAzbSAtdGFncyAiJChCVUlMRFRBR1MpIiAke1RFU1RGTEFHU30gLXYgJChhbGxwYWNrYWdlcykKKyAKKyBpbnRlZ3JhdGlvbjogcnVuY2ltYWdlCisgCWRvY2tlciBydW4gLWUgVEVTVEZMQUdTIC10IC0tcHJpdmlsZWdlZCAtLXJtIC12ICQoQ1VSRElSKTovZ28vc3JjLyQoUFJPSkVDVCkgJChSVU5DX0lNQUdFKSBtYWtlIGxvY2FsaW50ZWdyYXRpb24KK0BAIC0xMzQsMTAgKzEzNCwxMCBAQCBjbGVhbjoKKyB2YWxpZGF0ZToKKyAJc2NyaXB0L3ZhbGlkYXRlLWdvZm10CisgCXNjcmlwdC92YWxpZGF0ZS1zaGZtdAorLQlnbyB2ZXQgJChhbGxwYWNrYWdlcykKKysJJChHTykgdmV0ICQoYWxscGFja2FnZXMpCisgCisgY2k6IHZhbGlkYXRlIGxvY2FsdGVzdAorIAorICMgbWVtb2l6ZSBhbGxwYWNrYWdlcywgc28gdGhhdCBpdCdzIGV4ZWN1dGVkIG9ubHkgb25jZSBhbmQgb25seSBpZiB1c2VkCistX2FsbHBhY2thZ2VzID0gJChzaGVsbCBnbyBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisrX2FsbHBhY2thZ2VzID0gJChzaGVsbCAkKEdPKSBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisgYWxscGFja2FnZXMgPSAkKGlmICQoX19hbGxwYWNrYWdlcyksLCQoZXZhbCBfX2FsbHBhY2thZ2VzIDo9ICQkKF9hbGxwYWNrYWdlcykpKSQoX19hbGxwYWNrYWdlcykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtcnVuYy1BZGQtY29uc29sZS1zb2NrZXQtZGV2LW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1ydW5jLUFkZC1jb25zb2xlLXNvY2tldC1kZXYtbnVsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGMxMjUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtcnVuYy1BZGQtY29uc29sZS1zb2NrZXQtZGV2LW51bGwucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAzZmZmMmEzNTA1ZmJhMWQxZmYwMDc0ZWRmZjE1NzA4YTc3ZjZjZmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTM6MzU6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnVuYzogQWRkIC0tY29uc29sZS1zb2NrZXQ9L2Rldi9udWxsCisKK1RoaXMgYWxsb3dzIGZvciBzZXR0aW5nIHVwIGEgZGV0YWNoZWQgc2Vzc2lvbiB3aGVyZSB5b3UgZG8gbm90IHdhbnQgdG8KK3NldCB0aGUgdGVybWluYWwgdG8gZmFsc2UgaW4gdGhlIGNvbmZpZy5qc29uLiAgTW9yZSBvciBsZXNzIHRoaXMgaXMgYQorcnVudGltZSBvdmVycmlkZS4KKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KKy0tLQorIHV0aWxzX2xpbnV4LmdvIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3V0aWxzX2xpbnV4LmdvIGIvdXRpbHNfbGludXguZ28KK2luZGV4IDgwODVmN2ZlLi5lNmQzMWIzNSAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvdXRpbHNfbGludXguZ28KKysrKyBiL3NyYy9pbXBvcnQvdXRpbHNfbGludXguZ28KK0BAIC0yMjcsNiArMjI3LDExIEBAIHR5cGUgcnVubmVyIHN0cnVjdCB7CisgfQorIAorIGZ1bmMgKHIgKnJ1bm5lcikgcnVuKGNvbmZpZyAqc3BlY3MuUHJvY2VzcykgKGludCwgZXJyb3IpIHsKKysJaWYgKHIuY29uc29sZVNvY2tldCA9PSAiL2Rldi9udWxsIikgeworKwkJci5kZXRhY2ggPSBmYWxzZQorKwkJci5jb25zb2xlU29ja2V0ID0gIiIKKysJCWNvbmZpZy5UZXJtaW5hbCA9IGZhbHNlCisrCX0KKyAJaWYgZXJyIDo9IHIuY2hlY2tUZXJtaW5hbChjb25maWcpOyBlcnIgIT0gbmlsIHsKKyAJCXIuZGVzdHJveSgpCisgCQlyZXR1cm4gLTEsIGVycgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDItUmVtb3ZlLVBsYXRmb3JtLWFzLW5vLWxvbmdlci1pbi1PQ0ktc3BlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3MGRlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSBlMTE0NjE4MmE4Y2ViYjVhNjEzM2E5ZTI5OGE1ZTRhY2Y5OTY1MmU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+CitEYXRlOiBGcmksIDIzIEp1biAyMDE3IDE3OjE2OjA4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBSZW1vdmUgUGxhdGZvcm0gYXMgbm8gbG9uZ2VyIGluIE9DSSBzcGVjCisKK1RoaXMgd2FzIG5ldmVyIHVzZWQsIGp1c3QgdmFsaWRhdGVkLCBzbyB3YXMgcmVtb3ZlZCBmcm9tIHNwZWMuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3RpbiBDb3JtYWNrIDxqdXN0aW4uY29ybWFja0Bkb2NrZXIuY29tPgorLS0tCisgbGliY29udGFpbmVyL3NwZWNjb252L2V4YW1wbGUuZ28gfCAgNSAtLS0tLQorIHNwZWMuZ28gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliY29udGFpbmVyL3NwZWNjb252L2V4YW1wbGUuZ28gYi9saWJjb250YWluZXIvc3BlY2NvbnYvZXhhbXBsZS5nbworaW5kZXggMzMxMzQxMTYuLmQ2NjIxMTk0IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9saWJjb250YWluZXIvc3BlY2NvbnYvZXhhbXBsZS5nbworKysrIGIvc3JjL2ltcG9ydC9saWJjb250YWluZXIvc3BlY2NvbnYvZXhhbXBsZS5nbworQEAgLTIsNyArMiw2IEBAIHBhY2thZ2Ugc3BlY2NvbnYKKyAKKyBpbXBvcnQgKAorIAkib3MiCistCSJydW50aW1lIgorIAkic3RyaW5ncyIKKyAKKyAJImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvIgorQEAgLTE1LDEwICsxNCw2IEBAIGZ1bmMgc1B0cihzIHN0cmluZykgKnN0cmluZyB7IHJldHVybiAmcyB9CisgZnVuYyBFeGFtcGxlKCkgKnNwZWNzLlNwZWMgeworIAlyZXR1cm4gJnNwZWNzLlNwZWN7CisgCQlWZXJzaW9uOiBzcGVjcy5WZXJzaW9uLAorLQkJUGxhdGZvcm06IHNwZWNzLlBsYXRmb3JteworLQkJCU9TOiAgIHJ1bnRpbWUuR09PUywKKy0JCQlBcmNoOiBydW50aW1lLkdPQVJDSCwKKy0JCX0sCisgCQlSb290OiBzcGVjcy5Sb290eworIAkJCVBhdGg6ICAgICAicm9vdGZzIiwKKyAJCQlSZWFkb25seTogdHJ1ZSwKK2RpZmYgLS1naXQgYS9zcGVjLmdvIGIvc3BlYy5nbworaW5kZXggOTJkMzhmNTcuLjg3NjkzN2QyIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9zcGVjLmdvCisrKysgYi9zcmMvaW1wb3J0L3NwZWMuZ28KK0BAIC03LDcgKzcsNiBAQCBpbXBvcnQgKAorIAkiZm10IgorIAkiaW8vaW91dGlsIgorIAkib3MiCistCSJydW50aW1lIgorIAorIAkiZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jL2xpYmNvbnRhaW5lci9jb25maWdzIgorIAkiZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jL2xpYmNvbnRhaW5lci9zcGVjY29udiIKK0BAIC0xMzEsOSArMTMwLDYgQEAgZnVuYyBsb2FkU3BlYyhjUGF0aCBzdHJpbmcpIChzcGVjICpzcGVjcy5TcGVjLCBlcnIgZXJyb3IpIHsKKyAJaWYgZXJyID0ganNvbi5OZXdEZWNvZGVyKGNmKS5EZWNvZGUoJnNwZWMpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBuaWwsIGVycgorIAl9CistCWlmIGVyciA9IHZhbGlkYXRlUGxhdGZvcm0oJnNwZWMuUGxhdGZvcm0pOyBlcnIgIT0gbmlsIHsKKy0JCXJldHVybiBuaWwsIGVycgorLQl9CisgCXJldHVybiBzcGVjLCB2YWxpZGF0ZVByb2Nlc3NTcGVjKHNwZWMuUHJvY2VzcykKKyB9CisgCitAQCAtMTQ4LDEzICsxNDQsMyBAQCBmdW5jIGNyZWF0ZUxpYkNvbnRhaW5lclJsaW1pdChybGltaXQgc3BlY3MuTGludXhSbGltaXQpIChjb25maWdzLlJsaW1pdCwgZXJyb3IpCisgCQlTb2Z0OiBybGltaXQuU29mdCwKKyAJfSwgbmlsCisgfQorLQorLWZ1bmMgdmFsaWRhdGVQbGF0Zm9ybShwbGF0Zm9ybSAqc3BlY3MuUGxhdGZvcm0pIGVycm9yIHsKKy0JaWYgcGxhdGZvcm0uT1MgIT0gcnVudGltZS5HT09TIHsKKy0JCXJldHVybiBmbXQuRXJyb3JmKCJ0YXJnZXQgb3MgJXMgbWlzbWF0Y2ggd2l0aCBjdXJyZW50IG9zICVzIiwgcGxhdGZvcm0uT1MsIHJ1bnRpbWUuR09PUykKKy0JfQorLQlpZiBwbGF0Zm9ybS5BcmNoICE9IHJ1bnRpbWUuR09BUkNIIHsKKy0JCXJldHVybiBmbXQuRXJyb3JmKCJ0YXJnZXQgYXJjaCAlcyBtaXNtYXRjaCB3aXRoIGN1cnJlbnQgYXJjaCAlcyIsIHBsYXRmb3JtLkFyY2gsIHJ1bnRpbWUuR09BUkNIKQorLQl9CistCXJldHVybiBuaWwKKy19CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMy1VcGRhdGUtbWVtb3J5LXNwZWNzLXRvLXVzZS1pbnQ2NC1ub3QtdWludDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDMtVXBkYXRlLW1lbW9yeS1zcGVjcy10by11c2UtaW50NjQtbm90LXVpbnQ2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE5YjdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDMtVXBkYXRlLW1lbW9yeS1zcGVjcy10by11c2UtaW50NjQtbm90LXVpbnQ2NC5wYXRjaApAQCAtMCwwICsxLDE5NCBAQAorRnJvbSAzZDkwNzRlYWQzM2E1YzI3ZGMyMGJiNDk0NTdjNjljNmQyYWU2YjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+CitEYXRlOiBGcmksIDIzIEp1biAyMDE3IDE3OjE3OjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBVcGRhdGUgbWVtb3J5IHNwZWNzIHRvIHVzZSBpbnQ2NCBub3QgdWludDY0CisKK3JlcGxhY2UgIzE0OTIgIzE0OTQKK2ZpeCAjMTQyMgorCitTaW5jZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3B1bGwvODc2IHRoZSBtZW1vcnkKK3NwZWNpZmljYXRpb25zIGFyZSBub3cgYGludDY0YCwgYXMgdGhhdCBiZXR0ZXIgbWF0Y2hlcyB0aGUgdmlzaWJsZSBpbnRlcmZhY2Ugd2hlcmUKK2AtMWAgaXMgYSB2YWxpZCB2YWx1ZS4gT3RoZXJ3aXNlIGZpbmRpbmcgdGhlIGNvcnJlY3QgdmFsdWUgd2FzIGRpZmZpY3VsdCBhcyBpdAord2FzIGtlcm5lbCBkZXBlbmRlbnQuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3RpbiBDb3JtYWNrIDxqdXN0aW4uY29ybWFja0Bkb2NrZXIuY29tPgorLS0tCisgbGliY29udGFpbmVyL2Nncm91cHMvZnMvbWVtb3J5LmdvICAgIHwgMzYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvIHwgMTAgKysrKystLS0tLQorIHVwZGF0ZS5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbyBiL2xpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbworaW5kZXggZGEyY2M5ZjguLmI3MzljNjMxIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9saWJjb250YWluZXIvY2dyb3Vwcy9mcy9tZW1vcnkuZ28KKysrKyBiL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL2Nncm91cHMvZnMvbWVtb3J5LmdvCitAQCAtNzMsMTQgKzczLDE0IEBAIGZ1bmMgRW5hYmxlS2VybmVsTWVtb3J5QWNjb3VudGluZyhwYXRoIHN0cmluZykgZXJyb3IgeworIAkvLyB1bnRpbCBhIGxpbWl0IGlzIHNldCBvbiB0aGUgY2dyb3VwIGFuZCBsaW1pdCBjYW5ub3QgYmUgc2V0IG9uY2UgdGhlCisgCS8vIGNncm91cCBoYXMgY2hpbGRyZW4sIG9yIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHRhc2tzIGluIHRoZSBjZ3JvdXAuCisgCWZvciBfLCBpIDo9IHJhbmdlIFtdaW50NjR7MSwgLTF9IHsKKy0JCWlmIGVyciA6PSBzZXRLZXJuZWxNZW1vcnkocGF0aCwgdWludDY0KGkpKTsgZXJyICE9IG5pbCB7CisrCQlpZiBlcnIgOj0gc2V0S2VybmVsTWVtb3J5KHBhdGgsIGkpOyBlcnIgIT0gbmlsIHsKKyAJCQlyZXR1cm4gZXJyCisgCQl9CisgCX0KKyAJcmV0dXJuIG5pbAorIH0KKyAKKy1mdW5jIHNldEtlcm5lbE1lbW9yeShwYXRoIHN0cmluZywga2VybmVsTWVtb3J5TGltaXQgdWludDY0KSBlcnJvciB7CisrZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IGludDY0KSBlcnJvciB7CisgCWlmIHBhdGggPT0gIiIgeworIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm5vIHN1Y2ggZGlyZWN0b3J5IGZvciAlcyIsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KQorIAl9CitAQCAtODgsNyArODgsNyBAQCBmdW5jIHNldEtlcm5lbE1lbW9yeShwYXRoIHN0cmluZywga2VybmVsTWVtb3J5TGltaXQgdWludDY0KSBlcnJvciB7CisgCQkvLyBrZXJuZWwgbWVtb3J5IGlzIG5vdCBlbmFibGVkIG9uIHRoZSBzeXN0ZW0gc28gd2Ugc2hvdWxkIGRvIG5vdGhpbmcKKyAJCXJldHVybiBuaWwKKyAJfQorLQlpZiBlcnIgOj0gaW91dGlsLldyaXRlRmlsZShmaWxlcGF0aC5Kb2luKHBhdGgsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KSwgW11ieXRlKHN0cmNvbnYuRm9ybWF0VWludChrZXJuZWxNZW1vcnlMaW1pdCwgMTApKSwgMDcwMCk7IGVyciAhPSBuaWwgeworKwlpZiBlcnIgOj0gaW91dGlsLldyaXRlRmlsZShmaWxlcGF0aC5Kb2luKHBhdGgsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KSwgW11ieXRlKHN0cmNvbnYuRm9ybWF0SW50KGtlcm5lbE1lbW9yeUxpbWl0LCAxMCkpLCAwNzAwKTsgZXJyICE9IG5pbCB7CisgCQkvLyBDaGVjayBpZiB0aGUgZXJyb3IgbnVtYmVyIHJldHVybmVkIGJ5IHRoZSBzeXNjYWxsIGlzICJFQlVTWSIKKyAJCS8vIFRoZSBFQlVTWSBzaWduYWwgaXMgcmV0dXJuZWQgb24gYXR0ZW1wdHMgdG8gd3JpdGUgdG8gdGhlCisgCQkvLyBtZW1vcnkua21lbS5saW1pdF9pbl9ieXRlcyBmaWxlIGlmIHRoZSBjZ3JvdXAgaGFzIGNoaWxkcmVuIG9yCitAQCAtMTA2LDE0ICsxMDYsMTIgQEAgZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IHVpbnQ2NCkgZXJyb3IgeworIH0KKyAKKyBmdW5jIHNldE1lbW9yeUFuZFN3YXAocGF0aCBzdHJpbmcsIGNncm91cCAqY29uZmlncy5DZ3JvdXApIGVycm9yIHsKKy0JdWxpbWl0ZWQgOj0gLTEKKy0KKy0JLy8gSWYgdGhlIG1lbW9yeSB1cGRhdGUgaXMgc2V0IHRvIHVpbnQ2NCgtMSkgd2Ugc2hvdWxkIGFsc28KKy0JLy8gc2V0IHN3YXAgdG8gdWludDY0KC0xKSwgaXQgbWVhbnMgdW5saW1pdGVkIG1lbW9yeS4KKy0JaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnkgPT0gdWludDY0KHVsaW1pdGVkKSB7CistCQkvLyBPbmx5IHNldCBzd2FwIGlmIGl0J3MgZW5ibGVkIGluIGtlcm5lbAorKwkvLyBJZiB0aGUgbWVtb3J5IHVwZGF0ZSBpcyBzZXQgdG8gLTEgd2Ugc2hvdWxkIGFsc28KKysJLy8gc2V0IHN3YXAgdG8gLTEsIGl0IG1lYW5zIHVubGltaXRlZCBtZW1vcnkuCisrCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5ID09IC0xIHsKKysJCS8vIE9ubHkgc2V0IHN3YXAgaWYgaXQncyBlbmFibGVkIGluIGtlcm5lbAorIAkJaWYgY2dyb3Vwcy5QYXRoRXhpc3RzKGZpbGVwYXRoLkpvaW4ocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0KSkgeworLQkJCWNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCA9IHVpbnQ2NCh1bGltaXRlZCkKKysJCQljZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgPSAtMQorIAkJfQorIAl9CisgCitAQCAtMTI4LDI5ICsxMjYsMjkgQEAgZnVuYyBzZXRNZW1vcnlBbmRTd2FwKHBhdGggc3RyaW5nLCBjZ3JvdXAgKmNvbmZpZ3MuQ2dyb3VwKSBlcnJvciB7CisgCQkvLyBXaGVuIHVwZGF0ZSBtZW1vcnkgbGltaXQsIHdlIHNob3VsZCBhZGFwdCB0aGUgd3JpdGUgc2VxdWVuY2UKKyAJCS8vIGZvciBtZW1vcnkgYW5kIHN3YXAgbWVtb3J5LCBzbyBpdCB3b24ndCBmYWlsIGJlY2F1c2UgdGhlIG5ldworIAkJLy8gdmFsdWUgYW5kIHRoZSBvbGQgdmFsdWUgZG9uJ3QgZml0IGtlcm5lbCdzIHZhbGlkYXRpb24uCistCQlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgPT0gdWludDY0KHVsaW1pdGVkKSB8fCBtZW1vcnlVc2FnZS5MaW1pdCA8IGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCB7CistCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworKwkJaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwID09IC0xIHx8IG1lbW9yeVVzYWdlLkxpbWl0IDwgdWludDY0KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCkgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworIAkJCQlyZXR1cm4gZXJyCisgCQkJfQorLQkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSwgMTApKTsgZXJyICE9IG5pbCB7CisrCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlMaW1pdCwgc3RyY29udi5Gb3JtYXRJbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgeworIAkJCQlyZXR1cm4gZXJyCisgCQkJfQorIAkJfSBlbHNlIHsKKy0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKKyAJCQkJcmV0dXJuIGVycgorIAkJCX0KKy0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7CisrCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJCXJldHVybiBlcnIKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSAhPSAwIHsKKy0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKKyAJCQkJcmV0dXJuIGVycgorIAkJCX0KKyAJCX0KKyAJCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCAhPSAwIHsKKy0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7CisrCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJCXJldHVybiBlcnIKKyAJCQl9CisgCQl9CitAQCAtMTcxLDEzICsxNjksMTMgQEAgZnVuYyAocyAqTWVtb3J5R3JvdXApIFNldChwYXRoIHN0cmluZywgY2dyb3VwICpjb25maWdzLkNncm91cCkgZXJyb3IgeworIAl9CisgCisgCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5UmVzZXJ2YXRpb24gIT0gMCB7CistCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsICJtZW1vcnkuc29mdF9saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVJlc2VydmF0aW9uLCAxMCkpOyBlcnIgIT0gbmlsIHsKKysJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgIm1lbW9yeS5zb2Z0X2xpbWl0X2luX2J5dGVzIiwgc3RyY29udi5Gb3JtYXRJbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnlSZXNlcnZhdGlvbiwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJcmV0dXJuIGVycgorIAkJfQorIAl9CisgCisgCWlmIGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQICE9IDAgeworLQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCAibWVtb3J5LmttZW0udGNwLmxpbWl0X2luX2J5dGVzIiwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQLCAxMCkpOyBlcnIgIT0gbmlsIHsKKysJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgIm1lbW9yeS5rbWVtLnRjcC5saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQLCAxMCkpOyBlcnIgIT0gbmlsIHsKKyAJCQlyZXR1cm4gZXJyCisgCQl9CisgCX0KK2RpZmYgLS1naXQgYS9saWJjb250YWluZXIvY29uZmlncy9jZ3JvdXBfbGludXguZ28gYi9saWJjb250YWluZXIvY29uZmlncy9jZ3JvdXBfbGludXguZ28KK2luZGV4IDNlMDUwOWRlLi5lMTVhNjYyZiAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvCisrKysgYi9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9jb25maWdzL2Nncm91cF9saW51eC5nbworQEAgLTQzLDE5ICs0MywxOSBAQCB0eXBlIFJlc291cmNlcyBzdHJ1Y3QgeworIAlEZXZpY2VzIFtdKkRldmljZSBganNvbjoiZGV2aWNlcyJgCisgCisgCS8vIE1lbW9yeSBsaW1pdCAoaW4gYnl0ZXMpCistCU1lbW9yeSB1aW50NjQgYGpzb246Im1lbW9yeSJgCisrCU1lbW9yeSBpbnQ2NCBganNvbjoibWVtb3J5ImAKKyAKKyAJLy8gTWVtb3J5IHJlc2VydmF0aW9uIG9yIHNvZnRfbGltaXQgKGluIGJ5dGVzKQorLQlNZW1vcnlSZXNlcnZhdGlvbiB1aW50NjQgYGpzb246Im1lbW9yeV9yZXNlcnZhdGlvbiJgCisrCU1lbW9yeVJlc2VydmF0aW9uIGludDY0IGBqc29uOiJtZW1vcnlfcmVzZXJ2YXRpb24iYAorIAorIAkvLyBUb3RhbCBtZW1vcnkgdXNhZ2UgKG1lbW9yeSArIHN3YXApOyBzZXQgYC0xYCB0byBlbmFibGUgdW5saW1pdGVkIHN3YXAKKy0JTWVtb3J5U3dhcCB1aW50NjQgYGpzb246Im1lbW9yeV9zd2FwImAKKysJTWVtb3J5U3dhcCBpbnQ2NCBganNvbjoibWVtb3J5X3N3YXAiYAorIAorIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IChpbiBieXRlcykKKy0JS2VybmVsTWVtb3J5IHVpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeSJgCisrCUtlcm5lbE1lbW9yeSBpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeSJgCisgCisgCS8vIEtlcm5lbCBtZW1vcnkgbGltaXQgZm9yIFRDUCB1c2UgKGluIGJ5dGVzKQorLQlLZXJuZWxNZW1vcnlUQ1AgdWludDY0IGBqc29uOiJrZXJuZWxfbWVtb3J5X3RjcCJgCisrCUtlcm5lbE1lbW9yeVRDUCBpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeV90Y3AiYAorIAorIAkvLyBDUFUgc2hhcmVzIChyZWxhdGl2ZSB3ZWlnaHQgdnMuIG90aGVyIGNvbnRhaW5lcnMpCisgCUNwdVNoYXJlcyB1aW50NjQgYGpzb246ImNwdV9zaGFyZXMiYAorZGlmZiAtLWdpdCBhL3VwZGF0ZS5nbyBiL3VwZGF0ZS5nbworaW5kZXggMGVhOTBkNjAuLjEzM2JlOTk5IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC91cGRhdGUuZ28KKysrKyBiL3NyYy9pbXBvcnQvdXBkYXRlLmdvCitAQCAtMTI0LDExICsxMjQsMTEgQEAgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZC4KKyAKKyAJCXIgOj0gc3BlY3MuTGludXhSZXNvdXJjZXN7CisgCQkJTWVtb3J5OiAmc3BlY3MuTGludXhNZW1vcnl7CistCQkJCUxpbWl0OiAgICAgICB1NjRQdHIoMCksCistCQkJCVJlc2VydmF0aW9uOiB1NjRQdHIoMCksCistCQkJCVN3YXA6ICAgICAgICB1NjRQdHIoMCksCistCQkJCUtlcm5lbDogICAgICB1NjRQdHIoMCksCistCQkJCUtlcm5lbFRDUDogICB1NjRQdHIoMCksCisrCQkJCUxpbWl0OiAgICAgICBpNjRQdHIoMCksCisrCQkJCVJlc2VydmF0aW9uOiBpNjRQdHIoMCksCisrCQkJCVN3YXA6ICAgICAgICBpNjRQdHIoMCksCisrCQkJCUtlcm5lbDogICAgICBpNjRQdHIoMCksCisrCQkJCUtlcm5lbFRDUDogICBpNjRQdHIoMCksCisgCQkJfSwKKyAJCQlDUFU6ICZzcGVjcy5MaW51eENQVXsKKyAJCQkJU2hhcmVzOiAgICAgICAgICB1NjRQdHIoMCksCitAQCAtMjEzLDcgKzIxMyw3IEBAIG90aGVyIG9wdGlvbnMgYXJlIGlnbm9yZWQuCisgCQkJfQorIAkJCWZvciBfLCBwYWlyIDo9IHJhbmdlIFtdc3RydWN0IHsKKyAJCQkJb3B0ICBzdHJpbmcKKy0JCQkJZGVzdCAqdWludDY0CisrCQkJCWRlc3QgKmludDY0CisgCQkJfXsKKyAJCQkJeyJtZW1vcnkiLCByLk1lbW9yeS5MaW1pdH0sCisgCQkJCXsibWVtb3J5LXN3YXAiLCByLk1lbW9yeS5Td2FwfSwKK0BAIC0yMzIsNyArMjMyLDcgQEAgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZC4KKyAJCQkJCX0gZWxzZSB7CisgCQkJCQkJdiA9IC0xCisgCQkJCQl9CistCQkJCQkqcGFpci5kZXN0ID0gdWludDY0KHYpCisrCQkJCQkqcGFpci5kZXN0ID0gdgorIAkJCQl9CisgCQkJfQorIAkJCXIuUGlkcy5MaW1pdCA9IGludDY0KGNvbnRleHQuSW50KCJwaWRzLWxpbWl0IikpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyX2dpdC5iYgppbmRleCA5NmQ0OGNhLi45ZGI0OGVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlcl9naXQuYmIKQEAgLTIsMTAgKzIsMTQgQEAKIAogIyBOb3RlOiB0aGlzIHJldiBpcyBiZWZvcmUgdGhlIHJlcXVpcmVkIHByb3RvY29sIGZpZWxkLCB1cGRhdGUgd2hlbiBhbGwgY29tcG9uZW50cwogIyAgICAgICBoYXZlIGJlZW4gdXBkYXRlZCB0byBtYXRjaC4KLVNSQ1JFViA9ICIyZjczOTNhNDczMDdhMTZmOGNlZTQ0YTM3YjI2MmU4YjgxMDIxZTNlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9ydW5jLmdpdDtub2JyYW5jaD0xIFwKK1NSQ1JFVl9ydW5jLWRvY2tlciA9ICI5ZDY4MjFkMWI1MzkwOGUyNDk0ODc3NDFlY2NkNTY3MjQ5Y2ExZDk5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9ydW5jLmdpdDtub2JyYW5jaD0xO25hbWU9cnVuYy1kb2NrZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VcGRhdGUtdG8tcnVudGltZS1zcGVjLTE5OGYyM2Y4MjdlZWEzOTdkNDMzMWQ3ZWIwNDhkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUmVtb3ZlLVBsYXRmb3JtLWFzLW5vLWxvbmdlci1pbi1PQ0ktc3BlYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ydW5jLUFkZC1jb25zb2xlLXNvY2tldC1kZXYtbnVsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoIFwKICAgICAgICAgICAiCiAKLVJVTkNfVkVSU0lPTiA9ICIxLjAuMC1yYzIiCi1QUk9WSURFUyArPSAidmlydHVhbC9ydW5jIgotUlBST1ZJREVTXyR7UE59ID0gInZpcnR1YWwvcnVuYyIKK1JVTkNfVkVSU0lPTiA9ICIxLjAuMC1yYzMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVycy8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnMvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2Q3MDE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnMvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIDYyMWU1ZTlhMTk2ZGFhYWY1ZWI0MzBhNDEzZmU1MTIxOGNmNDJjODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDE1OjQ1OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBjb3JyZWN0IGdvIGNyb3NzLWNvbXBpbGVyCisKK1dlIG5lZWQgdG8gdXNlICcke0dPfScgYXMgc2V0IGJ5IE9wZW5FbWJlZGRlZCBpbnN0ZWFkIG9mIGp1c3QgJ2dvJy4gSnVzdCB1c2luZworJ2dvJyB3aWxsIGludm9rZSBnby1uYXRpdmUuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIE1ha2VmaWxlIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA2NzgxYWM3Li43NGU1NTFkIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQorKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQorQEAgLTI3LDE4ICsyNywxOCBAQCBTSEVMTCA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYmFzaCAyPi9kZXYvbnVsbCkKKyAuREVGQVVMVDogcnVuYworIAorIHJ1bmM6ICQoU09VUkNFUykKKy0JZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KKysJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KKyAKKyBhbGw6IHJ1bmMgcmVjdnR0eQorIAorIHJlY3Z0dHk6IGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eQorIAorIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eTogJChTT1VSQ0VTKQorLQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKysJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisgCisgc3RhdGljOiAkKFNPVVJDRVMpCistCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gcnVuYyAuCistCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgorKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKyAKKyByZWxlYXNlOgorIAlAZmxhZ19saXN0PShzZWNjb21wIHNlbGludXggYXBwYXJtb3Igc3RhdGljKTsgXAorQEAgLTYyLDE1ICs2MiwxNSBAQCByZWxlYXNlOgorIAkJCUNHT19FTkFCTEVEPTE7IFwKKyAJCX07IFwKKyAJCWVjaG8gIkJ1aWxkaW5nIHRhcmdldDogJCRvdXRwdXQiOyBcCistCQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiJCRsZGZsYWdzICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkJHRhZ3MiIC1vICIkJG91dHB1dCIgLjsgXAorKwkJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIiQkbGRmbGFncyAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJCR0YWdzIiAtbyAiJCRvdXRwdXQiIC47IFwKKyAJZG9uZQorIAorIGRidWlsZDogcnVuY2ltYWdlCisgCWRvY2tlciBydW4gLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpIC0tcHJpdmlsZWdlZCAkKFJVTkNfSU1BR0UpIG1ha2UgY2xlYW4gYWxsCisgCisgbGludDoKKy0JZ28gdmV0ICQoYWxscGFja2FnZXMpCistCWdvIGZtdCAkKGFsbHBhY2thZ2VzKQorKwkkKEdPKSB2ZXQgJChhbGxwYWNrYWdlcykKKysJJChHTykgZm10ICQoYWxscGFja2FnZXMpCisgCisgbWFuOgorIAltYW4vbWQybWFuLWFsbC5zaAorQEAgLTg4LDcgKzg4LDcgQEAgdW5pdHRlc3Q6IHJ1bmNpbWFnZQorIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbHVuaXR0ZXN0CisgCisgbG9jYWx1bml0dGVzdDogYWxsCistCWdvIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCisrCSQoR08pIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCisgCisgaW50ZWdyYXRpb246IHJ1bmNpbWFnZQorIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbGludGVncmF0aW9uCitAQCAtMTMzLDEwICsxMzMsMTAgQEAgY2xlYW46CisgCisgdmFsaWRhdGU6CisgCXNjcmlwdC92YWxpZGF0ZS1nb2ZtdAorLQlnbyB2ZXQgJChhbGxwYWNrYWdlcykKKysJJChHTykgdmV0ICQoYWxscGFja2FnZXMpCisgCisgY2k6IHZhbGlkYXRlIGxvY2FsdGVzdAorIAorICMgbWVtb2l6ZSBhbGxwYWNrYWdlcywgc28gdGhhdCBpdCdzIGV4ZWN1dGVkIG9ubHkgb25jZSBhbmQgb25seSBpZiB1c2VkCistX2FsbHBhY2thZ2VzID0gJChzaGVsbCBnbyBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisrX2FsbHBhY2thZ2VzID0gJChzaGVsbCAkKEdPKSBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisgYWxscGFja2FnZXMgPSAkKGlmICQoX19hbGxwYWNrYWdlcyksLCQoZXZhbCBfX2FsbHBhY2thZ2VzIDo9ICQkKF9hbGxwYWNrYWdlcykpKSQoX19hbGxwYWNrYWdlcykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiCmluZGV4IDRhNmU4Y2QuLmE5NzY3NmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVyc19naXQuYmIKQEAgLTEsMTUgKzEsOCBAQAogaW5jbHVkZSBydW5jLmluYwogCi1TUkNSRVYgPSAiNzVmOGRhN2M4ODlhY2M0NTA5YTBjZjZmMGQzYThmOTU4NDc3ODM3NSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jO2JyYW5jaD1tYXN0ZXIgXAotICAgICAgICAgICIKLVJVTkNfVkVSU0lPTiA9ICIxLjAuMC1yYzMiCi1QUk9WSURFUyArPSAidmlydHVhbC9ydW5jIgotUlBST1ZJREVTXyR7UE59ID0gInZpcnR1YWwvcnVuYyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCSMgR28gbG9va3MgaW4gYSBzcmMgZGlyZWN0b3J5IHVuZGVyIGFueSBkaXJlY3RvcnkgaW4gR09QQVRIIGJ1dAotCSMgcnVuYy1vcGVuY29udGFpbmVycyB1c2VzICd2ZW5kb3InIGluc3RlYWQgb2YgJ3ZlbmRvci9zcmMnLiBXZSBjYW4gZml4Ci0JIyB0aGlzIHdpdGggYSBzeW1saW5rLgotCWxuIC1zZm4gLiAiJHtTfS92ZW5kb3Ivc3JjIgotfQorU1JDUkVWID0gIjJlN2NmZTAzNmUyYzZkYzUxY2NjYTZlYjdmYTNlZTZiNjM5NzZkY2QiCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jO2JyYW5jaD1tYXN0ZXIgXAorICAgIGZpbGU6Ly8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIFwKKyAgICAiCitSVU5DX1ZFUlNJT04gPSAiMS4wLjAtcmM0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMuaW5jCmluZGV4IDQ4MDg1NDcuLjAxNzkxMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy5pbmMKQEAgLTQsMzggKzQsNDAgQEAKIAogIyBBcGFjaGUtMi4wIGZvciBjb250YWluZXJkCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MzViMjY2YjM4OTlhYThhOTU5ZjE3ZDQxYzU2ZGVmOCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9NDM1YjI2NmIzODk5YWE4YTk1OWYxN2Q0MWM1NmRlZjgiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVBWID0gIiR7UlVOQ19WRVJTSU9OfStnaXQke1NSQ1JFVn0iCitQViA9ICIke1JVTkNfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIGluaGVyaXQgZ28KIFJSRUNPTU1FTkRTXyR7UE59ID0gImx4YyBkb2NrZXIiCitQUk9WSURFUyArPSAidmlydHVhbC9ydW5jIgorUlBST1ZJREVTXyR7UE59ID0gInZpcnR1YWwvcnVuYyIKKworR09fSU1QT1JUID0gImltcG9ydCIKIAogTElCQ09OVEFJTkVSX1BBQ0tBR0U9ImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9saWJjb250YWluZXIiCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiBFWFRSQV9PRU1BS0U9IkJVSUxEVEFHUz0nJyIKIAotaW5oZXJpdCBnb2FyY2gKLQogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgotCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgogCSMgU2V0IEdPUEFUSC4gU2VlICdQQUNLQUdFUlMubWQnLiBEb24ndCByZWx5IG9uCiAJIyBkb2NrZXIgdG8gZG93bmxvYWQgaXRzIGRlcGVuZGVuY2llcyBidXQgcmF0aGVyCiAJIyB1c2UgZGVwZW5kZW5jaWVzIHBhY2thZ2VkIGluZGVwZW5kZW50bHkuCi0JY2QgJHtTfQorCWNkICR7U30vc3JjL2ltcG9ydAogCXJtIC1yZiAuZ29wYXRoCiAJZG5hbWU9YGRpcm5hbWUgIiR7TElCQ09OVEFJTkVSX1BBQ0tBR0V9ImAKIAlibmFtZT1gYmFzZW5hbWUgIiR7TElCQ09OVEFJTkVSX1BBQ0tBR0V9ImAKIAlta2RpciAtcCAuZ29wYXRoL3NyYy8ke2RuYW1lfQogCiAJKGNkIC5nb3BhdGgvc3JjLyR7ZG5hbWV9OyBsbiAtc2YgLi4vLi4vLi4vLi4vLi4vJHtibmFtZX0gJHtibmFtZX0pCi0JZXhwb3J0IEdPUEFUSD0iJHtTfS8uZ29wYXRoOiR7U30vdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCi0JZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgotCWNkIC0KKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisKKwkjIEZpeCB1cCBzeW1saW5rIGZvciBnby1jcm9zcyBjb21waWxlcgorCXJtIC1mICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisJbG4gLXNmIC4vICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCiAKIAkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbwogCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKQEAgLTUxLDcgKzUzLDcgQEAKIGRvX2luc3RhbGwoKSB7CiAJbWtkaXIgLXAgJHtEfS8ke2JpbmRpcn0KIAotCWNwICR7U30vcnVuYyAke0R9LyR7YmluZGlyfS9ydW5jCisJY3AgJHtTfS9zcmMvaW1wb3J0L3J1bmMgJHtEfS8ke2JpbmRpcn0vcnVuYwogCWxuIC1zZiBydW5jICR7RH0vJHtiaW5kaXJ9L2RvY2tlci1ydW5jCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLzAwMDEtbnNleGVjLWZpeC1idWlsZC1hZ2FpbnN0LW11c2wtbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLzAwMDEtbnNleGVjLWZpeC1idWlsZC1hZ2FpbnN0LW11c2wtbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE1NzYzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy8wMDAxLW5zZXhlYy1maXgtYnVpbGQtYWdhaW5zdC1tdXNsLWxpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIGFjNmJkOTUzMTkyZmE2NzUyYTA3YmU3NTAxZjY5ZjdjZmZlMzNlOGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOYXRhbmFlbCBDb3BhIDxuYXRhbmFlbC5jb3BhQGRvY2tlci5jb20+Ci1EYXRlOiBUdWUsIDE5IEFwciAyMDE2IDEwOjQzOjAwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5zZXhlYzogZml4IGJ1aWxkIGFnYWluc3QgbXVzbCBsaWJjCi0KLVJlbW92ZSBhIHdyb25nbHkgYWRkZWQgaW5jbHVkZSB3aGljaCB3YXMgYWRkZWQgaW4gY29tbWl0IDNjMmU3N2VlIChBZGQgYQotY29tcGF0aWJpbGl0eSBoZWFkZXIgZm9yIENlbnRPUy9SSEVMIDYsIDIwMTYtMDEtMjkpIGFwcGFyZW50bHkgdG8KLWZpeCB0aGlzIGNvbXBpbGUgZXJyb3Igb24gY2VudG9zIDY6Ci0KLT4gSW4gZmlsZSBpbmNsdWRlZCBmcm9tCi0+IEdvZGVwcy9fd29ya3NwYWNlL3NyYy9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvbGliY29udGFpbmVyL25zZW50ZXIvbnNleGVjLmM6MjA6Ci0+IC91c3IvaW5jbHVkZS9saW51eC9uZXRsaW5rLmg6MzU6IGVycm9yOiBleHBlY3RlZCBzcGVjaWZpZXItcXVhbGlmaWVyLWxpc3QgYmVmb3JlICdzYV9mYW1pbHlfdCcKLQotVGhlIGdsaWJjIGJpdHMvc29ja2FkZHIuaCBzYXlzIHRoYXQgdGhpcyBoZWFkZXIgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkCi1kaXJlY3RseVsxXS4gSW5zdGVhZCwgc3lzL3NvY2tldC5oIHNob3VsZCBiZSB1c2VkLgotCi1UaGUgcHJvYmxlbSB3YXMgY29ycmVjdGx5IGZpeGVkIGxhdGVyLCBpbiBjb21taXQgMzk0ZmI1NSAoRml4IGJ1aWxkCi1lcnJvciBvbiBjZW50b3M2LCAyMDE2LTAzLTAyKSBzbyB0aGUgaW5jb3JyZWN0IGJpdHMvc29ja2FkZHIuaCBjYW4KLXNhZmVseSBiZSByZW1vdmVkLgotCi1UaGlzIGlzIG5lZWRlZCB0byBidWlsZCBtdXNsIGxpYmMuCi0KLUZpeGVzICM3NjEKLQotWzFdOiBodHRwczovL2dpdGh1Yi5tb2xnZW4ubXBnLmRlL2dpdC1taXJyb3IvZ2xpYmMvYmxvYi8yMDAwM2M0OTg4NDQyMmRhN2ZmYmM0NTljZGVlZTc2OGE2ZmVlMDdiL2JpdHMvc29ja2FkZHIuaCNMMjAKLQotU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmF0YW5hZWwuY29wYUBkb2NrZXIuY29tPgotU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBhdWxAcGF1bGJhcmtlci5tZS51az4KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQKLS0tLQotIGxpYmNvbnRhaW5lci9uc2VudGVyL25zZXhlYy5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNvbnRhaW5lci9uc2VudGVyL25zZXhlYy5jIGIvbGliY29udGFpbmVyL25zZW50ZXIvbnNleGVjLmMKLWluZGV4IDhmMzdkNmMuLjQwYThmODkgMTAwNjQ0Ci0tLS0gYS9saWJjb250YWluZXIvbnNlbnRlci9uc2V4ZWMuYwotKysrIGIvbGliY29udGFpbmVyL25zZW50ZXIvbnNleGVjLmMKLUBAIC0xOCw3ICsxOCw2IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxncnAuaD4KLSAKLS0jaW5jbHVkZSA8Yml0cy9zb2NrYWRkci5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotIC8vIEFsbCBhcmd1bWVudHMgc2hvdWxkIGJlIGFib3ZlIHRoZSBzdGFjayBiZWNhdXNlIGl0IGdyb3dzIGRvd24KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9zaW5ndWxhcml0eS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3Npbmd1bGFyaXR5L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODI0ODBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9zaW5ndWxhcml0eS9SRUFETUUKQEAgLTAsMCArMSw0NiBAQAorU2luZ3VsYXJpdHkgaXMgYSBjb250YWluZXIgcGxhdGZvcm0gYmFzZWQgb24gdGhlIHByaW5jaXBsZSBvZiBtb2JpbGl0eSBvZiAKK2NvbXB1dGUsIGFuZCBpdCBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGhpbiBIUEMgY2x1c3RlcnMuIEZvciBtb3JlIGluZm8gc2VlCitzaW5ndWxhcml0eS5sYmwuZ292LiAgCisKK1RvIHRlc3Qgd2hldGhlciB0aGUgc29mdHdhcmUgZnVuY3Rpb25zIGNvcnJlY3RseSwgeW91IGNhbiB1c2UgYHNpbmd1bGFyaXR5CitzZWxmdGVzdGAuIFRoaXMgaXMgd2hhdCB5b3Ugd291bGQgZXhwZWN0IHRvIHNlZToKKworfiMgc2luZ3VsYXJpdHkgc2VsZnRlc3QKKyArIHNoIC1jIHRlc3QgLWYgL2V0Yy9zaW5ndWxhcml0eS9zaW5ndWxhcml0eS5jb25mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9hY3Rpb24tc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9jcmVhdGUtc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9leHBhbmQtc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9leHBvcnQtc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9pbXBvcnQtc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKyArIHRlc3QgLXUgL3Vzci9saWJleGVjL3Npbmd1bGFyaXR5L2Jpbi9tb3VudC1zdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR2YWw9MCkgT0sKKworWW91IGNhbiBhbHNvIHB1bGwgYSBjb250YWluZXIgZnJvbSBEb2NrZXIgSHViIHRvIHByb3ZlIGZ1bGwgZnVuY3Rpb25hbGl0eQorKFRlc3Qgd2FzIHBlcmZvcm1lZCBvbiBhIFJhc3BiZXJyeSBQaSAzLCBoZW5jZSB0aGUgYXJtMzJ2NyBwYXJ0IG9mIHRoZSBEb2NrZXIKK2xpbmsuIE1ha2Ugc3VyZSB5b3UgcHVsbCBhbiBpbWFnZSB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggeW91ciBoYXJkd2FyZS4pIAorRm9yIGluc3RhbmNlOgorCit+IyBzaW5ndWxhcml0eSBwdWxsIGRvY2tlcjovL2FybTMydjcvZGViaWFuOmxhdGVzdAorSW5pdGlhbGl6aW5nIFNpbmd1bGFyaXR5IGltYWdlIHN1YnN5c3RlbQorT3BlbmluZyBpbWFnZSBmaWxlOiBkZWJpYW4tbGF0ZXN0LmltZworQ3JlYXRpbmcgMjAwTWlCIGltYWdlCitCaW5kaW5nIGltYWdlIHRvIGxvb3AKK0NyZWF0aW5nIGZpbGUgc3lzdGVtIHdpdGhpbiBpbWFnZQorSW1hZ2UgaXMgZG9uZTogZGViaWFuLWxhdGVzdC5pbWcKK0RvY2tlciBpbWFnZSBwYXRoOiBpbmRleC5kb2NrZXIuaW8vYXJtMzJ2Ny9kZWJpYW46bGF0ZXN0CitDYWNoZSBmb2xkZXIgc2V0IHRvIC9ob21lL3Jvb3QvLnNpbmd1bGFyaXR5L2RvY2tlcgorWzEvMV0gfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09fCAxMDAuMCUgCitJbXBvcnRpbmc6IGJhc2UgU2luZ3VsYXJpdHkgZW52aXJvbm1lbnQKK0ltcG9ydGluZzogL2hvbWUvcm9vdC8uc2luZ3VsYXJpdHkvZG9ja2VyL3NoYTI1NjplZDRmMWYwZDBhMDQ1N2U3Zjc2ZmZiMjVhOGQ2YTE5MzAwNzcwOWRkMzEyYjc2NDdjYjQ0ZmM2OTc5ZWM0YTUzLnRhci5negorSW1wb3J0aW5nOiAvaG9tZS9yb290Ly5zaW5ndWxhcml0eS9tZXRhZGF0YS9zaGEyNTY6ODk5OTdiMmMxNmIyOWM1YTNhMzE2ZTMxNDE3MmVmMjFiMzZmNjdjYzMyMDBiMWM0ZDk1OTI3ZjcxNmRiZWU4My50YXIuZ3oKK0RvbmUuIENvbnRhaW5lciBpcyBhdDogZGViaWFuLWxhdGVzdC5pbWcKK34jIHNpbmd1bGFyaXR5IHNoZWxsIGRlYmlhbi1sYXRlc3QuaW1nIAorU2luZ3VsYXJpdHk6IEludm9raW5nIGFuIGludGVyYWN0aXZlIHNoZWxsIHdpdGhpbiBjb250YWluZXIuLi4KKworU2luZ3VsYXJpdHkgZGViaWFuLWxhdGVzdC5pbWc6fj4gZWNobyAiSGVsbG8gZnJvbSB3aXRoaW4gdGhlIGNvbnRhaW5lciEiCitIZWxsbyBmcm9tIHdpdGhpbiB0aGUgY29udGFpbmVyIQorU2luZ3VsYXJpdHkgZGViaWFuLWxhdGVzdC5pbWc6fj4gbHMgLworYmluICAgZGV2ICBob21lICBsb3N0K2ZvdW5kICBtbnQgIHByb2MJcnVuICAgc2luZ3VsYXJpdHkgIHN5cwl1c3IKK2Jvb3QgIGV0YyAgbGliCSBtZWRpYQkgICAgIG9wdCAgcm9vdAlzYmluICBzcnYJICAgdG1wCXZhcgorU2luZ3VsYXJpdHkgZGViaWFuLWxhdGVzdC5pbWc6fj4gZXhpdAorZXhpdAorfiMgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3Npbmd1bGFyaXR5L3Npbmd1bGFyaXR5X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvc2luZ3VsYXJpdHkvc2luZ3VsYXJpdHlfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZWU4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3Npbmd1bGFyaXR5L3Npbmd1bGFyaXR5X2dpdC5iYgpAQCAtMCwwICsxLDM1IEBACisjIFNraXAgUUEgY2hlY2sgZm9yIGxpYnJhcnkgc3ltYm9saWMgbGlua3MgKGNvcmUgaXNzdWUgaXMgYSBwYWNrYWdpbmcgcHJvYmxlbSB3aXRoaW4gCisjIFNpbmd1bGFyaXR5IGJ1aWxkIC8gY29uZmlnOiByZWFkIHVwIG9uIHRoZSBkZXYtc28gdGVzdCBmb3IgbW9yZSBpbmZvKQorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdsaWJjIHB5dGhvbjMgY2EtY2VydGlmaWNhdGVzIG9wZW5zc2wgYmFzaCBlMmZzcHJvZ3MtbWtlMmZzIgorIyBTaW5ndWxhcml0eSBleHBlY3RzIHRvIGZpbmQgcHl0aG9uMyB1bmRlciB0aGUgbmFtZSBweXRob24sIHRoZXJlZm9yZSBib3RoCisjIGNhbm5vdCBiZSBpbnN0YWxsZWQgYXQgdGhlIHNhbWUgdGltZS4KK1JDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVC5tZDttZDU9YmU3OGMzNGU0ODNkZDdkODQzOTM1OGIxZTAyNGIyOTQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS1MQk5MLm1kO21kNT00NWEwMDdiNTI3ZTFhOTUwN2FhN2ZhODY5ZjhkN2VkZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLm1kO21kNT1kZjQzMjZiNDczZGI2NDI0MDMzZjFkOThhNTY0NWUzMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1lZDI2N2NmMzg2ZDliNzVhYjFmMjdmNDA3ZTkzNWIxMCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Npbmd1bGFyaXR5d2FyZS9zaW5ndWxhcml0eS5naXQ7cHJvdG9jb2w9aHR0cHMiCitQViA9ICIyLjMuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJlMjE0ZDRlYmYwYTEyNzRiMWM2M2IwOTVmZDU1YWU2MWM3ZTkyOTQ3IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHB5dGhvbm5hdGl2ZSBhdXRvdG9vbHMtYnJva2Vuc2VwCitFWFRSQV9PRUNPTkYgPSAiLS1wcmVmaXg9L3Vzci9sb2NhbCIKKworcGtnX3Bvc3RpbnN0XyR7UE59KCkgeworICAgICMgU2luZ3VsYXJpdHkgcmVxdWlyZXMgInB5dGhvbiIgdG8gcmVzb2x2ZSB0byAicHl0aG9uMyIgd2l0aGluIHRoZSBjb21tYW5kbGluZS4KKyAgICAjIFRoaXMgY3JlYXRlcyBhIHN5bWJvbGljIGxpbmsgZnJvbSBweXRob24zIHRvIHB5dGhvbi4gQSBzaWRlLWVmZmVjdCBvZiB0aGlzIGlzCisgICAgIyB0aGF0IHNjcmlwdHMgd2hpY2ggZXhwZWN0IFB5dGhvbiAyIG1heSBmYWlsIHRvIHJ1biBjb3JyZWN0bHkuCisgICAgbG4gLXNyICREJHtiaW5kaXJ9L3B5dGhvbjMgJEQke2JpbmRpcn0vcHl0aG9uIAorCisgICAgIyBweXRob24zIGV4cGVjdHMgQ0EgY2VydGlmaWNhdGVzIHRvIGJlIGluc3RhbGxlZCBpbiBhIGRpZmZlcmVudCBwbGFjZSB0byB3aGVyZQorICAgICMgdGhleSBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkLiBUaGVzZSBsaW5lcyBsaW5rIHRoZSB0d28gbG9jYXRpb25zLgorICAgIHJtIC1yICREJHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKKyAgICBsbiAtc3IgJEQke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyAkRCR7bGliZGlyfS9zc2wtMS4xIAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9ydW52L3J1bnZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9ydW52L3J1bnZfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjVkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3J1bnYvcnVudl9naXQuYmIKQEAgLTAsMCArMSw4MiBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2h5cGVyaHEvcnVudiIKK1NVTU1BUlkgPSAiSHlwZXJ2aXNvci1iYXNlZCBSdW50aW1lIGZvciBPQ0kiCitERVNDUklQVElPTiA9ICJIeXBlcnZpc29yLWJhc2VkIFJ1bnRpbWUgZm9yIE9DSSIKKworU1JDUkVWX3J1bnYgPSAiYjM2MGE2ODZhYmM2YzZlODk2MzgyOTkwZWYxYjkzZWYwN2M3YTY3NyIKK1NSQ19VUkkgPSAiXAorCWdpdDovL2dpdGh1Yi5jb20vaHlwZXJocS9ydW52LmdpdDtub2JyYW5jaD0xO25hbWU9cnVudiBcCisJIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PTQxMDZhNTA1NDBiZGVjM2I5NzM0ZjljNzA4ODJkMzgyIgorCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCitQViA9ICIwLjQuMCtnaXQke1NSQ1JFVl9ydW52fSIKKworaW5oZXJpdCBnbworaW5oZXJpdCBnb2FyY2gKK2luaGVyaXQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRUNPTkZJR1t4ZW5dID0gIi0td2l0aC14ZW4sLS13aXRob3V0LXhlbiwiCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9zcmMvaW1wb3J0LyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBxZW11IgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0OiR7U30vc3JjL2ltcG9ydC92ZW5kb3IiCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENGTEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSIiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJIyBsaW5rIGZpeHVwcyBmb3IgY29tcGlsYXRpb24KKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCisJbWtkaXIgLXAgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudgorCisJZWNobyBmZmYKKwlwd2QKKwlsbiAtc2Ygc3JjL2ltcG9ydC9jbGkKKwlsbiAtc2YgLi4vLi4vLi4vLi4vYXBpICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvYXBpCisJbG4gLXNmIC4uLy4uLy4uLy4uL2NsaSAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vaHlwZXJocS9ydW52L2NsaQorCWxuIC1zZiAuLi8uLi8uLi8uLi9saWIgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudi9saWIKKwlsbiAtc2YgLi4vLi4vLi4vLi4vZHJpdmVybG9hZGVyICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvZHJpdmVybG9hZGVyCisJbG4gLXNmIC4uLy4uLy4uLy4uL2ZhY3RvcnkgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudi9mYWN0b3J5CisJbG4gLXNmIC4uLy4uLy4uLy4uL2h5cGVyc3RhcnQgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudi9oeXBlcnN0YXJ0CisJbG4gLXNmIC4uLy4uLy4uLy4uL2h5cGVydmlzb3IgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudi9oeXBlcnZpc29yCisJbG4gLXNmIC4uLy4uLy4uLy4uL3RlbXBsYXRlICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvdGVtcGxhdGUKKworCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydC8uZ29wYXRoOiR7U30vc3JjL2ltcG9ydC92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKKwlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0vJHtub25hcmNoX2xpYmRpcn0vJHtIT1NUX1NZU30vZ28iCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7Q0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtMREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJb2VfcnVubWFrZSBidWlsZC1ydW52Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgbG9jYWxiaW5kaXI9Ii91c3IvbG9jYWwvYmluIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbGJpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3J1bnYgJHtEfS8ke2xvY2FsYmluZGlyfQorfQorCitkZWx0YXNrIGNvbXBpbGVfcHRlc3RfYmFzZQorCitGSUxFU18ke1BOfSArPSAiL3Vzci9sb2NhbC9iaW4vKiIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyBhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tc3lzdGVtZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9nby9nby1zeXN0ZW1kX2dpdC5iYgppbmRleCA1Y2JhYjkyLi5iNjFjOTdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9nby9nby1zeXN0ZW1kX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9nby9nby1zeXN0ZW1kX2dpdC5iYgpAQCAtMTIsOSArMTIsNyBAQAogU1JDUkVWID0gImI0YTU4ZDk1MTg4ZGQwOTJhZTIwMDcyYmFjMTRjZWNlMGU2N2MzODgiCiBQViA9ICI0K2dpdCR7U1JDUkVWfSIKIAotREVQRU5EUyArPSAiIFwKLSAgICBiYXNoIFwKLSIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9kaXNhYmxlX3Rlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvZGlzYWJsZV90ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlNzFjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9kaXNhYmxlX3Rlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotZGlmZiAtTmF1ciBwcm90b2J1Zi1jLTAuMTUub2xkL3NyYy9NYWtlZmlsZS5hbSBwcm90b2J1Zi1jLTAuMTUvc3JjL01ha2VmaWxlLmFtCi0tLS0gcHJvdG9idWYtYy0wLjE1Lm9sZC9zcmMvTWFrZWZpbGUuYW0JMjAxMi0xMS0yOCAxNDo1OTo1Ny44NDUyNTE5NDMgKzAxMDAKLSsrKyBwcm90b2J1Zi1jLTAuMTUvc3JjL01ha2VmaWxlLmFtCTIwMTItMTEtMjggMTU6MDA6MjMuNTQ5MjUyNjMyICswMTAwCi1AQCAtMSw1ICsxLDUgQEAKLSBpZiBCVUlMRF9QUk9UT0NfQwotLVNVQkRJUlMgPSAuIHRlc3QKLSsKLSBiaW5fUFJPR1JBTVMgPSBwcm90b2MtYwotIHByb3RvY19jX1NPVVJDRVMgPSBcCi0gZ29vZ2xlL3Byb3RvYnVmL2NvbXBpbGVyL2MvY19zZXJ2aWNlLmNjIFwKLUBAIC0yMyw3ICsyMyw3IEBACi0gbGliX0xUTElCUkFSSUVTID0gbGlicHJvdG9idWYtYy5sYQotIHByb3RvYnVmY2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dvb2dsZS9wcm90b2J1Zi1jCi0KLS1FWFRSQV9ESVNUID0gQ01ha2VMaXN0cy50eHQgdGVzdC9DTWFrZUxpc3RzLnR4dAotK0VYVFJBX0RJU1QgPSBDTWFrZUxpc3RzLnR4dAotCi0gbGlicHJvdG9idWZfY19sYV9TT1VSQ0VTID0gXAotIGdvb2dsZS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMtZGlzcGF0Y2guYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9wcm90b2J1Zi1hbGxvdy1ydW5uaW5nLXB5dGhvbi1zY3JpcHRzLWZyb20tYW55d2hlcmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9wcm90b2J1Zi1hbGxvdy1ydW5uaW5nLXB5dGhvbi1zY3JpcHRzLWZyb20tYW55d2hlcmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMjkzNDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvcHJvdG9idWYtYWxsb3ctcnVubmluZy1weXRob24tc2NyaXB0cy1mcm9tLWFueXdoZXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA0NmUzMzEyNjNlYjkyZTQ3NTEwZTg4NDc4YjI1NWYyMjZkMzAyNDVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VpdGggSG9sbWFuIDxLZWl0aC5Ib2xtYW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTggQXVnIDIwMTQgMTU6MTk6MzUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHJvdG9idWY6IGFsbG93IHJ1bm5pbmcgcHl0aG9uIHNjcmlwdHMgZnJvbSBhbnl3aGVyZQotCi1UaGUgTWFrZWZpbGUgdG8gZ2VuZXJhdGUgdGhlIGV4YW1wbGVzIHdpdGggR29vZ2xlIFByb3RvY29sIEJ1ZmZlcnMKLWdlbmVyYXRlcyBzb21lIHNjcmlwdHMgZm9yIHB5dGhvbi4gIEhvd2V2ZXIsIHRoZXNlIGdlbmVyYXRlZCBzY3JpcHRzCi1vbmx5IHdvcmsgaWYgdGhleSBhcmUgcmFuIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgc291cmNlIGZpbGVzLgotVGhpcyBmaXggZ2VuZXJhdGVzIHNjcmlwdHMgdG8gZXhlY3V0ZSBmcm9tIGFueXdoZXJlIG9uIHRoZSBzeXN0ZW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtlaXRoIEhvbG1hbiA8S2VpdGguSG9sbWFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBleGFtcGxlcy9NYWtlZmlsZSB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL01ha2VmaWxlIGIvZXhhbXBsZXMvTWFrZWZpbGUKLWluZGV4IDhkYzkwODMuLmE5OTNkNjMgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9NYWtlZmlsZQotKysrIGIvZXhhbXBsZXMvTWFrZWZpbGUKLUBAIC00OCwxMSArNDgsMTMgQEAgbGlzdF9wZW9wbGVfamF2YTogamF2YWNfbWlkZGxlbWFuCi0gYWRkX3BlcnNvbl9weXRob246IGFkZF9wZXJzb24ucHkgcHJvdG9jX21pZGRsZW1hbgotIAlAZWNobyAiV3JpdGluZyBzaG9ydGN1dCBzY3JpcHQgYWRkX3BlcnNvbl9weXRob24uLi4iCi0gCUBlY2hvICcjISAvYmluL3NoJyA+IGFkZF9wZXJzb25fcHl0aG9uCi0tCUBlY2hvICcuL2FkZF9wZXJzb24ucHkgIiQkQCInID4+IGFkZF9wZXJzb25fcHl0aG9uCi0rCUBlY2hvICdTQ1JJUFRfRElSPSQkKGRpcm5hbWUgJCQwKScgPj4gYWRkX3BlcnNvbl9weXRob24KLSsJQGVjaG8gJyQkU0NSSVBUX0RJUi9hZGRfcGVyc29uLnB5ICIkJEAiJyA+PiBhZGRfcGVyc29uX3B5dGhvbgotIAlAY2htb2QgK3ggYWRkX3BlcnNvbl9weXRob24KLQotIGxpc3RfcGVvcGxlX3B5dGhvbjogbGlzdF9wZW9wbGUucHkgcHJvdG9jX21pZGRsZW1hbgotIAlAZWNobyAiV3JpdGluZyBzaG9ydGN1dCBzY3JpcHQgbGlzdF9wZW9wbGVfcHl0aG9uLi4uIgotIAlAZWNobyAnIyEgL2Jpbi9zaCcgPiBsaXN0X3Blb3BsZV9weXRob24KLS0JQGVjaG8gJy4vbGlzdF9wZW9wbGUucHkgIiQkQCInID4+IGxpc3RfcGVvcGxlX3B5dGhvbgotKwlAZWNobyAnU0NSSVBUX0RJUj0kJChkaXJuYW1lICQkMCknID4+IGxpc3RfcGVvcGxlX3B5dGhvbgotKwlAZWNobyAnJCRTQ1JJUFRfRElSL2xpc3RfcGVvcGxlLnB5ICIkJEAiJyA+PiBsaXN0X3Blb3BsZV9weXRob24KLSAJQGNobW9kICt4IGxpc3RfcGVvcGxlX3B5dGhvbgotLS0KLTEuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTVhN2IwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIS9iaW4vYmFzaAotRElSPSIkKCBjZCAiJCggZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iICkiICYmIHB3ZCApIgotVEVTVF9GSUxFPSIvdG1wL3Rlc3QuZGF0YSIKLQotUkVUVkFMPTAKLSMgVGVzdCBldmVyeSB3cml0aW5nIHRlc3QgYXBwbGljYXRpb24KLWZvciB3cml0ZV9leGVfZnVsbF9wYXRoIGluICR7RElSfS9hZGRfcGVyc29uXyo7IGRvCi0JaWYgWyAteCAiJHt3cml0ZV9leGVfZnVsbF9wYXRofSIgXTsgdGhlbgotCQl3cml0ZV9leGU9YGJhc2VuYW1lICR7d3JpdGVfZXhlX2Z1bGxfcGF0aH1gCi0JCWVjaG8gIkdlbmVyYXRpbmcgbmV3IHRlc3QgZmlsZSB1c2luZyAke3dyaXRlX2V4ZX0uLi4iCi0JCSR7d3JpdGVfZXhlX2Z1bGxfcGF0aH0gIiR7VEVTVF9GSUxFfSIKLQkJUkVUVkFMPSQ/Ci0KLQkJIyBUZXN0IGV2ZXJ5IHJlYWRpbmcgdGVzdCBhcHBsaWNhdGlvbgotCQlmb3IgcmVhZF9leGVfZnVsbF9wYXRoIGluICR7RElSfS9saXN0X3Blb3BsZV8qOyBkbwotCQkJcmVhZF9leGU9YGJhc2VuYW1lICR7cmVhZF9leGVfZnVsbF9wYXRofWAKLQkJCWVjaG8gIlRlc3Q6IFdyaXRlIHdpdGggJHt3cml0ZV9leGV9OyBSZWFkIHdpdGggJHtyZWFkX2V4ZX0uLi4iCi0JCQlpZiBbIC14ICIke3JlYWRfZXhlX2Z1bGxfcGF0aH0iIF07IHRoZW4KLQkJCQkke3JlYWRfZXhlX2Z1bGxfcGF0aH0gIiR7VEVTVF9GSUxFfSIKLQkJCQlSRVRWQUw9JD8KLQkJCWZpCi0JCWRvbmUKLQotCQkjIENsZWFudXAuLi4KLQkJaWYgWyAtZSAiJHtURVNUX0ZJTEV9IiBdOyB0aGVuCi0JCQlybSAiJHtURVNUX0ZJTEV9IgotCQlmaQotCWZpCi1kb25lCi0KLWV4aXQgJFJFVFZBTAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYyNDk5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJwcm90b2J1Zi1jIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgY29kZSBnZW5lcmF0b3IgYW5kIHJ1bnRpbWUgbGlicmFyaWVzIHRvIHVzZSBQcm90b2NvbCBCdWZmZXJzIGZyb20gcHVyZSBDIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3Byb3RvYnVmLWMvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMzVjMzE5NWEzOTY4NTI0ZGMxNTI0YjRlYmVhMGMwZSIKLQotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLURFUEVORFMgPSAicHJvdG9idWYgcHJvdG9idWYtYy1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNTQ0MjQ5YzMyOTM5MWZmZjUxMmMzODc0ODk1Y2ZiZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NDZlYjQ4NDZmMTk1OThhZmZkYzM0OWQ4MTdhOGM0YzBjNjhmZDk0MDMwM2U2OTM0NzI1Yzg4OWYxNmYwMGJkIgotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjIuMS9wcm90b2J1Zi1jLTEuMi4xLnRhci5neiAiCi0jU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0iZmlsZTovLzAwMDEtcHJvdG9idWYtYy1SZW1vdmUtdGhlLXJ1bGVzLXdoaWNoLWRlcGVuZC1vbi10aGUtbmF0aS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wa2djb25maWc6JHtQS0dfQ09ORklHX1BBVEh9IgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS90L2dlbmVyYXRlZC1jb2RlMi9jeHgtZ2VuZXJhdGUtcGFja2VkLWRhdGEgJHtEfS8ke2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLW5hdGl2ZV8zLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLW5hdGl2ZV8zLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyZjYyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1uYXRpdmVfMy4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gInByb3RvYnVmIgotREVTQ1JJUFRJT04gPSAiUHJvdG9jb2wgQnVmZmVycyBhcmUgYSB3YXkgb2YgZW5jb2Rpbmcgc3RydWN0dXJlZCBkYXRhIGluIFwKLWFuIGVmZmljaWVudCB5ZXQgZXh0ZW5zaWJsZSBmb3JtYXQuIEdvb2dsZSB1c2VzIFByb3RvY29sIEJ1ZmZlcnMgZm9yIFwKLWFsbW9zdCBhbGwgb2YgaXRzIGludGVybmFsIFJQQyBwcm90b2NvbHMgYW5kIGZpbGUgZm9ybWF0cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHJvdG9idWYvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1OTUzYzc1MmVmYzkyOTliMTg0ZjkxYmVmNTQwMDk1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTRhNTMyYTc1Mzg1NTFkNWRlZjMxN2JmY2E0MWRhY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGEwYWU2M2NiZmZjMjc0ZWZiNTczYmRkZTlhMjUzZTNmMzJlNDU4YzQxMjYxZGY1MWM1ZGJjNWFkNTQxZThmNyIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi9hcmNoaXZlL3YzLjEuMC50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1wcm90b2J1Zi0zLjEuMC50YXIuZ3ogXAotCSIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXByb3RvYz1lY2hvIgotCi1pbmhlcml0IG5hdGl2ZSBhdXRvdG9vbHMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk0OGU2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLVNVTU1BUlkgPSAicHJvdG9idWYiCi1ERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIGFyZSBhIHdheSBvZiBlbmNvZGluZyBzdHJ1Y3R1cmVkIGRhdGEgaW4gXAotYW4gZWZmaWNpZW50IHlldCBleHRlbnNpYmxlIGZvcm1hdC4gR29vZ2xlIHVzZXMgUHJvdG9jb2wgQnVmZmVycyBmb3IgXAotYWxtb3N0IGFsbCBvZiBpdHMgaW50ZXJuYWwgUlBDIHByb3RvY29scyBhbmQgZmlsZSBmb3JtYXRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9wcm90b2J1Zi8iCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzU5NTNjNzUyZWZjOTI5OWIxODRmOTFiZWY1NDAwOTUiCi0KLVBSID0gInIwIgotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNGE1MzJhNzUzODU1MWQ1ZGVmMzE3YmZjYTQxZGFjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYTBhZTYzY2JmZmMyNzRlZmI1NzNiZGRlOWEyNTNlM2YzMmU0NThjNDEyNjFkZjUxYzVkYmM1YWQ1NDFlOGY3IgotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmL2FyY2hpdmUvdjMuMS4wLnRhci5nejtkb3dubG9hZGZpbGVuYW1lPXByb3RvYnVmLTMuMS4wLnRhci5nelwKLQkgICAgICAgIGZpbGU6Ly9wcm90b2J1Zi1hbGxvdy1ydW5uaW5nLXB5dGhvbi1zY3JpcHRzLWZyb20tYW55d2hlcmUucGF0Y2ggXAotCSAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICAiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtcHJvdG9jPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wcm90b2MiCi1pbmhlcml0IGF1dG90b29scyBzZXR1cHRvb2xzIHB0ZXN0Ci0KLURFUEVORFMgKz0gInByb3RvYnVmLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2giCi0KLVBZVEhPTl9TUkNfRElSPSJweXRob24iCi1URVNUX1NSQ19ESVI9ImV4YW1wbGVzIgotTEFOR19TVVBQT1JUPSJjcHAgcHl0aG9uIgotCi1kb19jb21waWxlKCkgewotCSMgQ29tcGlsZSBwcm90b2MgY29tcGlsZXIKLQliYXNlX2RvX2NvbXBpbGUKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQkjIE1vZGlmeSBtYWtlZmlsZSB0byB1c2UgdGhlIGNyb3NzLWNvbXBpbGVyCi0Jc2VkIC1lICJzfGMrK3wke0NYWH0gXCQoTERGTEFHUyl8ZyIgLWkgIiR7U30vJHtURVNUX1NSQ19ESVJ9L01ha2VmaWxlIgotCi0JbWtkaXIgLXAgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9IgotCi0JIyBBZGQgdGhlIGxvY2F0aW9uIG9mIHRoZSBjcm9zcy1jb21waWxlZCBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMKLQkjIHdoaWNoIGhhdmVuJ3QgYmVlbiBpbnN0YWxsZWQgeWV0LgotCWNwICIke0J9L3Byb3RvYnVmLnBjIiAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0Jc2VkIC1lICdzfGxpYmRpcj18bGliZGlyPSR7UEtHX0NPTkZJR19TWVNST09UX0RJUn18JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0Jc2VkIC1lICdzfENmbGFnczp8Q2ZsYWdzOiAtSSR7U30vc3JjfCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCXNlZCAtZSAnc3xMaWJzOnxMaWJzOiAtTCR7Qn0vc3JjLy5saWJzfCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCWV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7Qn0vJHtURVNUX1NSQ19ESVJ9IgotCi0JIyBTYXZlIHRoZSBwa2djZmcgc3lzcm9vdCB2YXJpYWJsZSwgYW5kIHVwZGF0ZSBpdCB0byBub3RoaW5nIHNvCi0JIyB0aGF0IGl0IGRvZXNuJ3QgYXBwZW5kIHRoZSBzeXNyb290IHRvIHRoZSBiZWdpbm5pbmcgb2YgcGF0aHMuCi0JIyBUaGUgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzIGFyZW4ndCBpbnN0YWxsZWQgdG8gdGhlIHRhcmdldAotCSMgc3lzdGVtIHlldC4gIFNvIHRoZSBhYnNvbHV0ZSBwYXRocyB3ZXJlIHNwZWNpZmllZCBhYm92ZS4KLQlzYXZlX3BrZ19jb25maWdfc3lzcm9vdF9kaXI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLQlleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0KLQotCSMgQ29tcGlsZSB0aGUgdGVzdHMKLQlmb3IgbGFuZyBpbiAke0xBTkdfU1VQUE9SVH07IGRvCi0JCW9lX3J1bm1ha2UgLUMgIiR7U30vJHtURVNUX1NSQ19ESVJ9IiAke2xhbmd9Ci0JZG9uZQotCi0JIyBSZXN0b3JlIHRoZSBwa2djb25maWcgc3lzcm9vdCB2YXJpYWJsZQotCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPSRzYXZlX3BrZ19jb25maWdfc3lzcm9vdF9kaXIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlsb2NhbCBvbGRkaXI9YHB3ZGAKLQotCSMgSW5zdGFsbCBwcm90b2MgY29tcGlsZXIKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBJbnN0YWxsIGhlYWRlciBmaWxlcwotCWV4cG9ydCBQUk9UT0M9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wcm90b2MiCi0JY2QgIiR7U30vJHtQWVRIT05fU1JDX0RJUn0iCi0JZGlzdHV0aWxzX2RvX2luc3RhbGwKLQotCWNkICIkb2xkZGlyIgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWxvY2FsIG9sZGRpcj1gcHdkYAotCi0JY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgotCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCi0JCWlmIFsgLXggIiRpIiBdOyB0aGVuCi0JCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQkJZmkKLQlkb25lCi0JY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQkKLQljZCAiJG9sZGRpciIKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jb3B0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jb3B0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjQ2NGMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2NvcHQuaW5jCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJQeXRob25pYyBhcmd1bWVudCBwYXJzZXIsIHRoYXQgd2lsbCBtYWtlIHlvdSBzbWlsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kb2NvcHQub3JnLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS1NSVQ7bWQ1PTA5Yjc3ZmI3NDk4Njc5MWEzZDRhMGU3NDZhMzdkODhmIgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjRiYzc0NTYxYjM3ZmFkNWQzZTdkMDM3ZjgyYTRjM2IxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YjNhODI1MjgwYmQ2NmIzYWE4MzU4NWVmNTljNGE4YzgyZjJjOGE1MjJkYmU3NTRhOGJjOGQwOGM4NWM0OTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMC4xLmJiCmluZGV4IDhhYzEyOTUuLjQ3ZjEyNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMC4xLmJiCkBAIC0xMyw3ICsxMyw3IEBACiAKIFNSQ05BTUUgPSAiZ2V2ZW50IgogCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9nL2dldmVudC8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvZy9nZXZlbnQvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiN2I5NTI1OTFkMWEwMTc0ZDZlYjZhYzQ3YmQ5NzVhYjYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDYyN2UyMTVkMDU4ZjcxZDk1ZTZiMjZkOWU3YmU0YzI2Mzc4OGE0NzU2YmQyODU4YTkzNzc1ZjZjMDcyZGY0MyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMC4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzAuMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjI5ZjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMC4yNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlZhcmlvdXMgaGVscGVycyB0byBwYXNzIHRydXN0ZWQgZGF0YSB0byB1bnRydXN0ZWQgZW52aXJvbm1lbnRzIGFuZCBiYWNrIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9pdHNkYW5nZXJvdXMvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2MTg0MWUyYmY1ZjA3ODg0MTQ4ZTJhNmYxYmNhYjBjIgotCi1QUiA9ICJyMCIKLVNSQ05BTUUgPSAiaXRzZGFuZ2Vyb3VzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9pLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhM2Q1NWFhNzkzNjlhZWY1MzQ1YzAzNmE4YTI2MzA3ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYmIzZmNmOGQzZTMzZGY4NjE3MDllY2FmODlkOWU2NjI5Y2ZmMGEyMTdiYzI4NDhmMWI0MWNkMzBkMzYwNTE5IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tanNvbiBweXRob24tbmV0Y2xpZW50IHB5dGhvbi16bGliIHB5dGhvbi1kYXRldGltZSBweXRob24tbGFuZyBweXRob24tY3J5cHQiCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjIyLjMuYmIKaW5kZXggOTgxNGQzZC4uOTVkNmVlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjIyLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjIyLjMuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0wY2NjYTcwOTdjMWQyOWZhNDJlNzVlOWMxNWM2ZmYyZSIKIAogU1JDTkFNRSA9ICJNMkNyeXB0byIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL00vTTJDcnlwdG8vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9NL00yQ3J5cHRvLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL20yY3J5cHRvLUZpeC1idWlsZC13aXRoLVNXSUctMy4wLjUucGF0Y2ggXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF8zLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfMy4xMS5iYgppbmRleCA5YTZmMmY2Li5jYjFkYjhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF8zLjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTEuYmIKQEAgLTE4LDcgKzE4LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTYwMTVmMDg4NzU5YjEwZTBiYzJiZjY0ODk4ZDRhZTE3IgogCiBTUkNOQU1FID0gIlB5WUFNTCIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXlhbWwub3JnL2Rvd25sb2FkL3B5eWFtbC8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL3B5eWFtbC5vcmcvZG93bmxvYWQvcHl5YW1sLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZjUwZTA4ZWYwZmU1NTE3ODQ3OWQzYTYxOGVmZTIxZGIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM2YzkzOGE4NzJlNWZmNDk0OTM4YjMzYjE0YWFhMTU2Y2I0MzllYzY3NTQ4ZmNhYjM1MzViYjc4YjA4NDZlOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjY2NzgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKLVNVTU1BUlkgPSAiUHl0aG9uIEhUVFAgZm9yIEh1bWFucy4iCi1ERVNDUklQVElPTiA9ICJcCi0gIFJlcXVlc3RzIGlzIGFuIEFwYWNoZTIgTGljZW5zZWQgSFRUUCBsaWJyYXJ5LCB3cml0dGVuIGluIFB5dGhvbiwgXAotICBmb3IgaHVtYW4gYmVpbmdzLiBcCi0gIC4gICAgICBcCi0gIE1vc3QgZXhpc3RpbmcgUHl0aG9uIG1vZHVsZXMgZm9yIHNlbmRpbmcgSFRUUCByZXF1ZXN0cyBhcmUgZXh0cmVtZWx5IFwKLSAgdmVyYm9zZSBhbmQgY3VtYmVyc29tZS4gUHl0aG9uJ3MgYnVpbHRpbiB1cmxsaWIyIG1vZHVsZSBwcm92aWRlcyBtb3N0IFwKLSAgb2YgdGhlIEhUVFAgY2FwYWJpbGl0aWVzIHlvdSBzaG91bGQgbmVlZCwgYnV0IHRoZSBhcGkgaXMgdGhvcm91Z2hseSBcCi0gIGJyb2tlbi4gIEl0IHJlcXVpcmVzIGFuIGVub3Jtb3VzIGFtb3VudCBvZiB3b3JrIChldmVuIG1ldGhvZCBvdmVycmlkZXMpIFwKLSAgdG8gcGVyZm9ybSB0aGUgc2ltcGxlc3Qgb2YgdGFza3MuIFwKLSAgLiAgICAgIFwKLSAgVGhpbmdzIHNob3VsZG4ndCBiZSB0aGlzIHdheS4gTm90IGluIFB5dGhvbiBcCi0gICIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NThjN2UxNjNjOWY4ZWUwMzcyNDZkYTEwMWM2YWZkMWUiCi0KLVNSQ05BTUUgPSAicmVxdWVzdHMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3IvcmVxdWVzdHMvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMjdlYTNkNzJkNzgyMjkwNmRkY2U1ZTI1MmQ2YWRkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGZlOGQ1YmY0ZGNkY2M0OTAwMjQ0NmM0N2ExNDZkMTdhYzEwZmFjZjAwZDkwODY2NTkwNjRhYzQzYjZjMjViIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZGZjZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL2NoZWVzZXNob3AucHl0aG9uLm9yZy9weXBpL3NpbXBsZWpzb24iCi1TVU1NQVJZID0gIlNpbXBsZSwgZmFzdCwgZXh0ZW5zaWJsZSBKU09OIGVuY29kZXIvZGVjb2RlciBmb3IgUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiXAotICBKU09OIDxodHRwOi8vanNvbi5vcmc+IGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIFB5dGhvbiAyLjUrIFwKLSAgYW5kIFB5dGhvbiAzLjMrLiAgSXQgaXMgcHVyZSBQeXRob24gY29kZSB3aXRoIG5vIGRlcGVuZGVuY2llcywgXAotICBidXQgaW5jbHVkZXMgYW4gb3B0aW9uYWwgQyBleHRlbnNpb24gZm9yIGEgc2VyaW91cyBzcGVlZCBib29zdCBcCi0gICIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCi1QUiA9ICJyMCIKLQotU1JDTkFNRSA9ICJzaW1wbGVqc29uIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9zL3NpbXBsZWpzb24vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTE3MzQ2ZTVlZTRlZDQ0MzRmZmU0ODVmOGU1OGY1ZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjNkN2Y3YjE0YTIwZjI5Zjc0MzI1YTY5ZTZkYjQ1OTI1ZWFmNmUzYTAwM2VhYjQ2YzAyMzRmZDA1MGE4YzkzZiIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHB5dGhvbi1yZSBcCi0gICAgcHl0aG9uLWlvIFwKLSAgICBweXRob24tbmV0c2VydmVyIFwKLSAgICBweXRob24tbnVtYmVycyBcCi0iCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjc5ZjlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmYwMGQ0YTUwNzEzZmE4NTk4NThkZDlhYmFhMzViMjEiCi0KLVNSQ05BTUUgPSAic2l4IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzRlZWQ1MDc1NDgxMTdiMmFiNTIzYWIxNGIyZjhiNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTA1ZjhkNjg2MTZmODI0OGUyNGJmMGU5MzcyZWYwNGQzY2MxMDEwNGYxOTgwZjU0ZDU3YjJjZTczYTVhZDU2YSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaGlueF8xLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BoaW54XzEuNC4xLmJiCmluZGV4IGI0YWU4NmIuLjgzNWIzNjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BoaW54XzEuNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BoaW54XzEuNC4xLmJiCkBAIC03LDcgKzcsNyBAQAogUFIgPSAicjAiCiBTUkNOQU1FID0gIlNwaGlueCIKIAotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvUy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9TLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0YzQ5ODhlMDMwNmEwNGNlZjhkY2NjMzg0MjgxZTU4NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjg3MWE3ODRkMjRhYmE5MjcwYjZiMjg1NDE1MzdhNTdlMmZjZjRkN2M3OTk0MTBlYmExODIzNmJjNzZkNmJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDczNGUwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKQEAgLTAsMCArMSwyNDQgQEAKK0RFU0NSSVBUSU9OID0gIlR3aXN0ZWQgaXMgYW4gZXZlbnQtZHJpdmVuIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTC4gXAorVHdpc3RlZCBzdXBwb3J0cyBUQ1AsIFVEUCwgU1NML1RMUywgbXVsdGljYXN0LCBVbml4IHNvY2tldHMsIGEgbGFyZ2UgbnVtYmVyIG9mIHByb3RvY29scyAgICAgICAgICAgICAgICAgICBcCisoaW5jbHVkaW5nIEhUVFAsIE5OVFAsIElNQVAsIFNTSCwgSVJDLCBGVFAsIGFuZCBvdGhlcnMpLCBhbmQgbXVjaCBtb3JlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudHdpc3RlZG1hdHJpeC5jb20iCisKKyN0d2lzdGVkL3RvcGZpbGVzL05FV1M6NjU1OiAtIFJlbGljZW5zZWQ6IE5vdyB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHJhdGhlciB0aGFuIExHUEwuCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2MDJkNzIyOGRhZjU5YTE2ZjBmMWIyNjQwYzQ2YmNhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODNmZTZjMGM5MTFjYzE2MDJkYmZmYjAzNmJlMGJhNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk1MTc1NjM4YzAxOWFjN2MwNjA0ZjRjMjkxNzI0YTE2ZmYxYWNkMDYyZTE4MWIwMTI5M2JmNGRjYmM2MmNmMyIKKworUFlQSV9QQUNLQUdFID0gIlR3aXN0ZWQiCitQWVBJX1BBQ0tBR0VfRVhUID0gInRhci5iejIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgcmVtb3ZlIHNvbWUgdXNlbGVzcyBmaWxlcyBiZWZvcmUgcGFja2FnaW5nCisgICAgZmluZCAke0R9IFwoIC1uYW1lICIqLmJhdCIgLW8gLW5hbWUgIiouYyIgLW8gLW5hbWUgIiouaCIgXCkgLWV4ZWMgcm0gLWYge30gXDsKK30KKworUEFDS0FHRVMgKz0gIlwKKyAgICAke1BOfS16c2ggXAorICAgICR7UE59LXRlc3QgXAorICAgICR7UE59LXByb3RvY29scyBcCisgICAgJHtQTn0tY29uY2ggXAorICAgICR7UE59LWxvcmUgXAorICAgICR7UE59LW1haWwgXAorICAgICR7UE59LW5hbWVzIFwKKyAgICAke1BOfS1uZXdzIFwKKyAgICAke1BOfS1ydW5uZXIgXAorICAgICR7UE59LXdlYiBcCisgICAgJHtQTn0td29yZHMgXAorICAgICR7UE59LWZsb3cgXAorICAgICR7UE59LXBhaXIgXAorICAgICR7UE59LWNvcmUgXAorIgorCitQQUNLQUdFUyA9KyAiXAorICAgICR7UE59LXNyYyBcCisgICAgJHtQTn0tYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UE59LWJpbiBcCisgICAgJHtQTn0tY29uY2ggXAorICAgICR7UE59LWxvcmUgXAorICAgICR7UE59LW1haWwgXAorICAgICR7UE59LW5hbWVzIFwKKyAgICAke1BOfS1uZXdzIFwKKyAgICAke1BOfS1ydW5uZXIgXAorICAgICR7UE59LXdlYiBcCisgICAgJHtQTn0td29yZHMgXAorIgorCitSREVQRU5EU18ke1BOfS1jb3JlID0gInB5dGhvbi1jb3JlIHB5dGhvbi16b3BlaW50ZXJmYWNlIHB5dGhvbi1jb250ZXh0bGliIgorUkRFUEVORFNfJHtQTn0tdGVzdCA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWNvbmNoID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0tbG9yZSA9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tbWFpbCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LW5hbWVzID0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1uZXdzID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0tcnVubmVyID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgorUkRFUEVORFNfJHtQTn0td2ViICs9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXdvcmRzICs9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tZmxvdyArPSAiJHtQTn0tY29yZSIKK1JERVBFTkRTXyR7UE59LXBhaXIgKz0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitGSUxFU18ke1BOfSA9ICIiCisKK0ZJTEVTXyR7UE59LXRlc3QgPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGVzdCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovdGVzdCBcCisiCisKK0ZJTEVTXyR7UE59LXByb3RvY29scyA9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvKi5weSogXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvZ3BzLyBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9taWNlLyBcCisiCisKK0ZJTEVTXyR7UE59LXpzaCA9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaGNvbXAuKiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90d2lzdGVkLWNvbXBsZXRpb24uenNoIFwKKyIKKworRklMRVNfJHtQTn0tY29uY2ggPSAiIFwKKyAgICAke2JpbmRpcn0vY2tleWdlbiBcCisgICAgJHtiaW5kaXJ9L3RrY29uY2ggXAorICAgICR7YmluZGlyfS9jb25jaCBcCisgICAgJHtiaW5kaXJ9L2NvbmNoZnRwIFwKKyAgICAke2JpbmRpcn0vY2Z0cCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9jb25jaC5weSogXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jb25jaCAgXAorIgorCitGSUxFU18ke1BOfS1jb3JlID0gIiBcCiske2JpbmRpcn0vbWFuaG9sZSBcCiske2JpbmRpcn0vbWt0YXAgXAorJHtiaW5kaXJ9L3R3aXN0ZCBcCiske2JpbmRpcn0vdGFwMmRlYiBcCiske2JpbmRpcn0vdGFwMnJwbSBcCiske2JpbmRpcn0vdGFwY29udmVydCBcCiske2JpbmRpcn0vdGtta3RhcCBcCiske2JpbmRpcn0vdHJpYWwgXAorJHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCogXAorJHtiaW5kaXJ9L3B5aHRtbGl6ZXIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi8qLnNvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX2luaXRfXy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvbm90ZXN0cGx1Z2luLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90ZXN0cGx1Z2luLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2Z0cC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9pbmV0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX21hbmhvbGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfcG9ydGZvcndhcmQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfc29ja3MucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfdGVsbmV0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3RyaWFsLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9kcm9waW4uY2FjaGUgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jcmVkIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9lbnRlcnByaXNlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFuaG9sZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFuaG9sZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGVyc2lzdGVkIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHNcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aW1lb3V0cXVldWUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmlsZXBhdGgucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZHhwcm9maWxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3BsdWdpbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9odG1saXplci5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fX2luaXRfXy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9kaXNwYXRjaC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9ob29rLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RocmVhZHBvb2wucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vb3RwLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3VzYWdlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Jvb3RzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3ZlcnNpb25zLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3VybHBhdGgucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXRpbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wb25lbnRzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvZ2ZpbGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcnVudGltZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWZsZWN0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbnRleHQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGhyZWFkYWJsZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWJ1aWxkLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZhaWx1cmUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9ja2ZpbGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZm9ybW1ldGhvZC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9maW5hbGl6ZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi93aW4zMi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9kaXN0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Nob3J0Y3V0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3ppcHN0cmVhbS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWxlYXNlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3N5c2xvZy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2cucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaGNvbXAucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcHJvY3V0aWxzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RleHQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX3R3aXN0ZWRfenNoX3N0dWIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3NjcmlwdHMvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9zcHJlYWQvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90YXAvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL19faW5pdF9fLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX3ZlcnNpb24ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jb3B5cmlnaHQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vKi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvKi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RvcGZpbGVzIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvVHdpc3RlZCplZ2ctaW5mbyBcCisiCisKK0ZJTEVTXyR7UE59LWxvcmUgPSAiIFwKKyR7YmluZGlyfS9ib29raWZ5IFwKKyR7YmluZGlyfS9sb3JlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbG9yZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2xvcmUgXAorIgorCitGSUxFU18ke1BOfS1tYWlsID0gIiBcCiske2JpbmRpcn0vbWFpbG1haWwgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9tYWlsLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFpbCBcCisiCisKK0ZJTEVTXyR7UE59LW5hbWVzID0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX25hbWVzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbmFtZXMgXAorIgorCitGSUxFU18ke1BOfS1uZXdzID0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX25ld3MucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9uZXdzIFwKKyIKKworRklMRVNfJHtQTn0tcnVubmVyID0gIiBcCiske2xpYmRpcn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3J1bm5lci9wb3J0bWFwLnNvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9ydW5uZXJcCisiCisKK0ZJTEVTXyR7UE59LXdlYiA9ICIgXAorJHtiaW5kaXJ9L3dlYnNldHJvb3QgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF93ZWIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC93ZWJcCisiCisKK0ZJTEVTXyR7UE59LXdvcmRzID0gIiBcCiske2JpbmRpcn0vaW0gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF93b3Jkcy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3dvcmRzXAorIgorCitGSUxFU18ke1BOfS1mbG93ID0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2Zsb3cucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9mbG93IFwiCisKK0ZJTEVTXyR7UE59LXBhaXIgPSAiIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfcGFpci5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BhaXIgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8uZGVidWcgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi8uZGVidWcgXAorIgorCitSREVQRU5EU197UE59LXNyYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXNyYyA9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5IFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLnB5IFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLyoucHkgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJvYl8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vib2JfMS42LjAuYmIKaW5kZXggOTNmMmFjZi4uNzFjNzRmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJvYl8xLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYm9iXzEuNi4wLmJiCkBAIC03LDcgKzcsNyBAQAogUFIgPSAicjAiCiBTUkNOQU1FID0gIldlYk9iIgogCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9XLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL1cvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIAogU1JDX1VSSVttZDVzdW1dID0gIjA4OWQ3ZmM2NzQ1ZjE3NTczNzgwMDIzN2M3Mjg3ODAyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzZDI2MmQ4ZjYxYjUxNjMyMWY3ODY4NzljOTI3N2ZhMjIwOWY3ZjU3ZWI0N2I1MzdlZWVjZmVhMzgzZDU1YjciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZWQtcHJvcGVydHlfMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZWQtcHJvcGVydHlfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxYWFiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hlZC1wcm9wZXJ0eV8xLjMuMC5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiQSBkZWNvcmF0b3IgZm9yIGNhY2hpbmcgcHJvcGVydGllcyBpbiBjbGFzc2VzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWRhbm55L2NhY2hlZC1wcm9wZXJ0eSIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGI3ZmY2MGM0ZTE0ZjU4NTM0MjAxMjQyODAzZDhhYmMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNGE2MDM5Zjc0MTgwMDcyNzU1MDVlMzU1MzU5Mzk2YTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDU4ZTc4YjFjNzI4NmVjZTg4N2Q5MmM5YmVlODI5ZGE4NTcxNzk5NGM1ZTNkZGQyNTNhNDA0NjdmNDg4YmM4MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yYW1hXzAuMy45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3JhbWFfMC4zLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4YjBkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yYW1hXzAuMy45LmJiCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJDcm9zcy1wbGF0Zm9ybSBjb2xvcmVkIHRlcm1pbmFsIHRleHQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RhcnRsZXkvY29sb3JhbWEiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xNGQwYjY0MDQ3ZWQ4ZjUxMGI1MWNlMDQ5NTk5NTM1OCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYTBlNDE1MjU5NjkwZjRkZDc0NTVjMjY4M2VlNTg1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OGViMjJmNGY4NDYxYjFkZjU3MzRhMDc0YjU3MDQyNDMwZmIwNmUxZDYxYmQxZTExYjA3OGMwZmU2ZDdhMWYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyLXB5Y3JlZHNfMC4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXItcHljcmVkc18wLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM4NDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyLXB5Y3JlZHNfMC4yLjEuYmIKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIGRvY2tlciBjcmVkZW50aWFscyBzdG9yZSBBUEkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hpbi0vZG9ja2VycHktY3JlZHMiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDgwZDVhZWJhYjc3MWZhZjdlNDIyYjc1OWMzMDU1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzgzM2EyY2YyODBiN2Q4YWJiZTFiODEyMTUzMDQxMzI1MGM2Y2Q0ZmZlZDJjMWNmMDg1ZjMzNTI2MmY3MzQ4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyXzIuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyXzIuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MWQ5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXJfMi41LjEuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBsaWJyYXJ5IGZvciB0aGUgRG9ja2VyIEVuZ2luZSBBUEkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXItcHkiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNGYzODQ2Zjk0MDQ1MzEyNzMwOWI5MjBlZWI4OTY2MCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDkxNzE1Mjk3NmRmMDc1ZTZlOTBlZTg1M2RmNjQxZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODc2ZTY5MDlkOGQyMzYwZTA1NDAzNjRjM2E5NTJhNjI4NDcxMzdmNDY3NGYyNDM5MzIwZWRlMTZkNmRiODgwIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcGlwLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisJcHl0aG9uMy1kb2NrZXItcHljcmVkcyBcCisJcHl0aG9uMy1yZXF1ZXN0cyBcCisJcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcnB0eV8wLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcnB0eV8wLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDBmMmEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VycHR5XzAuNC4xLmJiCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB0byB1c2UgdGhlIHBzZXVkby10dHkgb2YgYSBkb2NrZXIgY29udGFpbmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2QxMXd0cS9kb2NrZXJwdHkiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZmFmNzY3YmFhMjBhYzUyNGRjMTJmMTA3MWNhNDkzYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMjhiYWNiMzQ1MzZmM2VlNmEyY2NkNjY4YzI3ZThlNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWE5ZDY5ZDU3M2EwZGFhMzFiY2QxYzA3NzRlZWVkNWMxNWMyOTVmZTcxOWM2MWFjYTU1MGVkMTM5MzE1NmNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jb3B0XzAuNi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jb3B0XzAuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Mzc0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NvcHRfMC42LjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1kb2NvcHQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXh0dGFibGVfMC45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXh0dGFibGVfMC45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlNDAyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRleHR0YWJsZV8wLjkuMS5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAibW9kdWxlIGZvciBjcmVhdGluZyBzaW1wbGUgQVNDSUkgdGFibGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZvdXRhaXNlL3RleHR0YWJsZS8iCitMSUNFTlNFID0gIkxHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiYTcxMmI1YTU0NjRkNTFjNWZjNDNjNjRkOWQyY2QwZGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTE5MDQxNzczZmYwMzU5NmI1NjM5MjUzMmY5MzE1Y2IzYTMxMTZlNDA0ZmQ2ZjM2ZTc2YTdkYzA4OGQ5NWM3OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTMuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpc3RlZF8xMy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgwMTZjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTMuMi4wLmJiCkBAIC0wLDAgKzEsNjcgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tdHdpc3RlZC5pbmMKKworUkRFUEVORFNfJHtQTn0tY29yZSA9ICJweXRob24zLWNvcmUgcHl0aG9uMy16b3BlaW50ZXJmYWNlIHB5dGhvbjMtbGFuZyIKKworRklMRVNfJHtQTn0tY29yZV9hcHBlbmQgKz0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fX3B5Y2FjaGVfXyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX19weWNhY2hlX18vKnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL19faW5pdF9fKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9ub3Rlc3RwbHVnaW4qLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3Rlc3RwbHVnaW4qLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfZnRwKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2luZXQqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbWFuaG9sZSoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9wb3J0Zm9yd2FyZCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9zb2NrcyoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF90ZWxuZXQqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfdHJpYWwqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfY29yZSoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9xdHN0dWIqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcmVhY3RvcnMqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL2NyZWQqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL2Ryb3BpbiouY2FjaGUgXAorIgorCitGSUxFU18ke1BOfS1uYW1lc19hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9uYW1lcyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tbmV3c19hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9uZXdzKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1wcm90b2NvbHNfYXBwZW5kICs9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL19fcHljYWNoZV9fLypweWMgXAorIgorCitGSUxFU18ke1BOfS1jb25jaF9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9jb25jaCoucHljIFwKKyIKKworRklMRVNfJHtQTn0tbG9yZV9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9sb3JlKi5weWMgXAorIgorRklMRVNfJHtQTn0tbWFpbF9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9tYWlsKi5weWMgXAorIgorCitGSUxFU18ke1BOfS13ZWJfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfd2ViKi5weWMgXAorIgorCitGSUxFU18ke1BOfS13b3Jkc19hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF93b3JkcyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tZmxvd19hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9mbG93Ki5weWMgXAorIgorCitGSUxFU18ke1BOfS1wYWlyX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3BhaXIqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LXJ1bm5lcl9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9ydW5uZXIqLnB5YyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNDQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldC1jbGllbnRfMC40NC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZmM5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNDQuMC5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIldlYlNvY2tldCBjbGllbnQgZm9yIHB5dGhvbi4gaHliaTEzIGlzIHN1cHBvcnRlZC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0LWNsaWVudC93ZWJzb2NrZXQtY2xpZW50LmdpdCIKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xOGIwOWEyMGRkMTg2YWY0ZmQ2MGYxYTA4MzExNjI4YyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1BZUElfUEFDS0FHRSA9ICJ3ZWJzb2NrZXRfY2xpZW50IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzNkODdhYTE2YTIyMTJkYTQ0OGIzMGFjYTljNWJmM2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTVmNTg1NTY2ZTJlYTc0NTkxMzZhNjMyYjk3ODVhYTA4MTA5MzA2NDM5MTg3OGE0NDhjMzgyNDE1ZTk0OGQ3MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZGlvZF8xLjAuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2Rpb2RfMS4wLjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZDE1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2Rpb2RfMS4wLjI0LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiRGlvZCBpcyBhIHVzZXIgc3BhY2Ugc2VydmVyIGZvciB0aGUga2VybmVsIHY5ZnMgY2xpZW50LiIKK0RFU0NSSVBUSU9OID0gIlwKK0Rpb2QgaXMgYSB1c2VyIHNwYWNlIHNlcnZlciBmb3IgdGhlIGtlcm5lbCB2OWZzIGNsaWVudCAoOXAua28sIDlwbmV0LmtvKS4gXAorQWx0aG91Z2ggdGhlIGtlcm5lbCBjbGllbnQgc3VwcG9ydHMgc2V2ZXJhbCA5UCB2YXJpYW50cywgZGlvZCBvbmx5IHN1cHBvcnRzIFwKKzlQMjAwMC5MLCBhbmQgb25seSBpbiBpdHMgZmVhdHVyZS1jb21wbGV0ZSBmb3JtLCBhcyBpdCBhcHBlYXJlZCBpbiAyLjYuMzguIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworUFYgPSAiMS4wLjI0K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjBlYTNmZTNkODI5YjUwODUzMDdjZDI3YTUxMjcwOGQ5OWVmNDgxOTkiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2hhb3MvZGlvZC5naXQ7cHJvdG9jb2w9Z2l0IFwKKyAgICAgICAgICAgZmlsZTovL2Rpb2QgXAorICAgICAgICAgICBmaWxlOi8vZGlvZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtYWxsb3ctYnVpbGRzLXRvLXdvcmstd2l0aC1zZXBhcmF0ZS1idWlsZC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1hdXRvLmRpb2QuaW4tcmVtb3ZlLWJhc2hpc21zLnBhdGNoIFwKKyAgICAgICAgICAiCitERVBFTkRTID0gImxpYmNhcCBuY3Vyc2VzIHRjcC13cmFwcGVycyBsdWEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICAjIGluc3RhbGwgb3VyIGluaXQgYmFzZWQgb24gc3RhcnQtc3RvcC1kYWVtb24KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vZGlvZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGlvZAorICAgICAgICAjIGluc3RhbGwgYSByZWFsKG5vdCBjb21tZW50ZWQpIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgZGlvZAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaW9kLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZGlvZC5jb25mCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzLzAwMDEtYnVpbGQtYWxsb3ctYnVpbGRzLXRvLXdvcmstd2l0aC1zZXBhcmF0ZS1idWlsZC1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzLzAwMDEtYnVpbGQtYWxsb3ctYnVpbGRzLXRvLXdvcmstd2l0aC1zZXBhcmF0ZS1idWlsZC1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwZTBlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvMDAwMS1idWlsZC1hbGxvdy1idWlsZHMtdG8td29yay13aXRoLXNlcGFyYXRlLWJ1aWxkLWRpci5wYXRjaApAQCAtMCwwICsxLDEyNiBAQAorRnJvbSA0MzQwMzQ2ODI5OGVmNDE2N2JhYTVkODRkZTJlZTJlYWY3ZjQwMDdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgOSBKYW4gMjAxNSAxODozNDowNCArMDAwMAorU3ViamVjdDogW1BBVENIIDEvMl0gYnVpbGQ6IGFsbG93IGJ1aWxkcyB0byB3b3JrIHdpdGggc2VwYXJhdGUgYnVpbGQgZGlyCisKK1JlbW92ZSBhc3N1bXB0aW9ucyBpbiBpbmNsdWRlIHBhdGhzIHRoYXQgYXNzdW1lIHRoZSBidWlsZAoraXMgaGFwcGVuaW5nIGluIHRoZSBzb3VyY2UgZGlyZWN0b3JpZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CistLS0KKyBkaW9kL01ha2VmaWxlLmFtICAgICAgICAgICAgICB8IDIgKy0KKyBsaWJkaW9kL01ha2VmaWxlLmFtICAgICAgICAgICB8IDIgKy0KKyBsaWJsc2QvTWFrZWZpbGUuYW0gICAgICAgICAgICB8IDIgKy0KKyBsaWJucGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBzY3JpcHRzL01ha2VmaWxlLmFtICAgICAgICAgICB8IDYgKysrLS0tCisgdGVzdHMva2Vybi9kYmVuY2gvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyB1dGlscy9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8IDIgKy0KKyA3IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGlvZC9NYWtlZmlsZS5hbSBiL2Rpb2QvTWFrZWZpbGUuYW0KK2luZGV4IDc2NDRiZTcuLmZkYWYxMzAgMTAwNjQ0CistLS0gYS9kaW9kL01ha2VmaWxlLmFtCisrKysgYi9kaW9kL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyBBTV9DRkxBR1MgPSBAR0NDV0FSTkAKKyAKKyBBTV9DUFBGTEFHUyA9IFwKKy0JLUkuLi9saWJucGZzIC1JLi4vbGlibHNkIC1JLi4vbGliZGlvZAorKwktSSQoc3JjZGlyKS8uLi9saWJucGZzIC1JJChzcmNkaXIpLy4uL2xpYmxzZCAtSSQoc3JjZGlyKS8uLi9saWJkaW9kCisgCisgc2Jpbl9QUk9HUkFNUyA9IGRpb2QKKyAKK2RpZmYgLS1naXQgYS9saWJkaW9kL01ha2VmaWxlLmFtIGIvbGliZGlvZC9NYWtlZmlsZS5hbQoraW5kZXggNDgxMGUxNC4uNjkwNWNkZCAxMDA2NDQKKy0tLSBhL2xpYmRpb2QvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmRpb2QvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsNyBAQAorIEFNX0NGTEFHUyA9IEBHQ0NXQVJOQAorIAorIEFNX0NQUEZMQUdTID0gXAorLQktSS4uL2xpYm5wZnMgLUkuLi9saWJucGNsaWVudCAtSS4uL2xpYmxzZAorKwktSSQoc3JjZGlyKS8uLi9saWJucGZzIC1JJChzcmNkaXIpLy4uL2xpYm5wY2xpZW50IC1JJChzcmNkaXIpLy4uL2xpYmxzZAorIAorIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJkaW9kLmEKKyAKK2RpZmYgLS1naXQgYS9saWJsc2QvTWFrZWZpbGUuYW0gYi9saWJsc2QvTWFrZWZpbGUuYW0KK2luZGV4IGMzZTU2NTguLjdlMThiZjggMTAwNjQ0CistLS0gYS9saWJsc2QvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmxzZC9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgQU1fQ0ZMQUdTID0gQEdDQ1dBUk5ACisgCistQU1fQ1BQRkxBR1MgPSAtSS4uL2xpYmRpb2QKKytBTV9DUFBGTEFHUyA9IC1JJChzcmNkaXIpLy4uL2xpYmRpb2QKKyAKKyBub2luc3RfTElCUkFSSUVTID0gbGlibHNkLmEKKyAKK2RpZmYgLS1naXQgYS9saWJucGNsaWVudC9NYWtlZmlsZS5hbSBiL2xpYm5wY2xpZW50L01ha2VmaWxlLmFtCitpbmRleCA1MzA1ZGY5Li5jYmFmMjY2IDEwMDY0NAorLS0tIGEvbGlibnBjbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2xpYm5wY2xpZW50L01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyBBTV9DRkxBR1MgPSBAR0NDV0FSTkAKKyAKKyBBTV9DUFBGTEFHUyA9IFwKKy0JLUkuLi9saWJucGZzCisrCS1JJChzcmNkaXIpLy4uL2xpYm5wZnMKKyAKKyBub2luc3RfTElCUkFSSUVTID0gbGlibnBjbGllbnQuYQorIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZpbGUuYW0gYi9zY3JpcHRzL01ha2VmaWxlLmFtCitpbmRleCA1MWMyNGEzLi4yYWJhNzI4IDEwMDY0NAorLS0tIGEvc2NyaXB0cy9NYWtlZmlsZS5hbQorKysrIGIvc2NyaXB0cy9NYWtlZmlsZS5hbQorQEAgLTEsOSArMSw5IEBACistc3lzdGVtZGRpcj0kKHN5c2NvbmZkaXIpL3N5c3RlbWQvc3lzdGVtCisrc3lzdGVtZGRpcj0vbGliL3N5c3RlbWQvc3lzdGVtCisgCisgaW5zdGFsbC1kYXRhLWxvY2FsOgorLQkkKHRvcF9zcmNkaXIpL2NvbmZpZy9pbnN0YWxsLXNoIC1tIDc1NSAkKHNyY2RpcikvYXV0by5kaW9kIFwKKysJJCh0b3Bfc3JjZGlyKS9jb25maWcvaW5zdGFsbC1zaCAtbSA3NTUgLi9hdXRvLmRpb2QgXAorIAkJJChERVNURElSKSQoc3lzY29uZmRpcikvYXV0by5kaW9kCistCSQodG9wX3NyY2RpcikvY29uZmlnL2luc3RhbGwtc2ggLW0gNzU1ICQoc3JjZGlyKS9kaW9kLnNlcnZpY2UgXAorKwkkKHRvcF9zcmNkaXIpL2NvbmZpZy9pbnN0YWxsLXNoIC1tIDY0NCAuL2Rpb2Quc2VydmljZSBcCisgCQkkKERFU1RESVIpJChzeXN0ZW1kZGlyKS9kaW9kLnNlcnZpY2UKKyAKKyB1bmluc3RhbGwtbG9jYWw6CitkaWZmIC0tZ2l0IGEvdGVzdHMva2Vybi9kYmVuY2gvTWFrZWZpbGUuYW0gYi90ZXN0cy9rZXJuL2RiZW5jaC9NYWtlZmlsZS5hbQoraW5kZXggZTBjZGVmYS4uMTcwNGY5ZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2tlcm4vZGJlbmNoL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9rZXJuL2RiZW5jaC9NYWtlZmlsZS5hbQorQEAgLTIsNyArMiw3IEBAIEFNX0NGTEFHUyA9IC13CisgCisgIyBWRVJTSU9OPTQuMDAKKyAKKy1BTV9DUFBGTEFHUyA9IC1EREFUQURJUj1cIiQoWF9EQVRBRElSKVwiCisrQU1fQ1BQRkxBR1MgPSAtSS4gLUREQVRBRElSPVwiJChYX0RBVEFESVIpXCIKKyAKKyBMREFERCA9ICQoTElCUE9QVCkKKyAKK0BAIC0yNSw2ICsyNSw2IEBAIEJVSUxUX1NPVVJDRVMgPSBwcm90by5oCisgQ0xFQU5GSUxFUyA9IHByb3RvLmgKKyAKKyBwcm90by5oOiAkKGRiZW5jaF9TT1VSQ0VTKSBta3Byb3RvLnBsCistCXBlcmwgbWtwcm90by5wbCAkKGRiZW5jaF9TT1VSQ0VTKSA+IHByb3RvLmgKKysJJChzcmNkaXIpL21rcHJvdG8ucGwgJChwYXRzdWJzdCAlLCQoc3JjZGlyKSwkKGRiZW5jaF9TT1VSQ0VTKSkgPiBwcm90by5oCisgCisgRVhUUkFfRElTVCA9IG1rcHJvdG8ucGwKK2RpZmYgLS1naXQgYS91dGlscy9NYWtlZmlsZS5hbSBiL3V0aWxzL01ha2VmaWxlLmFtCitpbmRleCAxNjliNmM0Li45MWQ1NzFkIDEwMDY0NAorLS0tIGEvdXRpbHMvTWFrZWZpbGUuYW0KKysrKyBiL3V0aWxzL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyBBTV9DRkxBR1MgPSBAR0NDV0FSTkAKKyAKKyBBTV9DUFBGTEFHUyA9IFwKKy0JLUkuLi9saWJucGZzIC1JLi4vbGlibHNkIC1JLi4vbGliZGlvZCAtSS4uL2xpYm5wY2xpZW50CisrCS1JJChzcmNkaXIpLy4uL2xpYm5wZnMgLUkkKHNyY2RpcikvLi4vbGlibHNkIC1JJChzcmNkaXIpLy4uL2xpYmRpb2QgLUkkKHNyY2RpcikvLi4vbGlibnBjbGllbnQKKyAKKyBzYmluX1BST0dSQU1TID0gZGlvZG1vdW50IGRpb2RjYXQgZHRvcCBkaW9kbG9hZCBkaW9kbHMgZGlvZHNob3dtb3VudCBkaW9kZGF0ZQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy8wMDAyLWF1dG8uZGlvZC5pbi1yZW1vdmUtYmFzaGlzbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzLzAwMDItYXV0by5kaW9kLmluLXJlbW92ZS1iYXNoaXNtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWQ2ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy8wMDAyLWF1dG8uZGlvZC5pbi1yZW1vdmUtYmFzaGlzbXMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA1YTllMDlkYzVkZTgzM2RiMTE2MDc1MzAzNTFjZDg3Y2VjYmZkMTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMiBKdW4gMjAxNyAwNjozMjozMCArMDAwMAorU3ViamVjdDogW1BBVENIIDIvMl0gYXV0by5kaW9kLmluOiByZW1vdmUgYmFzaGlzbXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNjcmlwdHMvYXV0by5kaW9kLmluIHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9hdXRvLmRpb2QuaW4gYi9zY3JpcHRzL2F1dG8uZGlvZC5pbgoraW5kZXggZjYzZTAwNC4uNGQ1ZmMzYSAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvYXV0by5kaW9kLmluCisrKysgYi9zY3JpcHRzL2F1dG8uZGlvZC5pbgorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBhdXRvLmRpb2QgLSBleGVjdXRhYmxlIGF1dG9tb3VudGVyIG1hcCBmb3IgZGlvZCBmaWxlIHN5c3RlbXMKKyAjCitAQCAtNDEsMTUgKzQxLDE1IEBAIGRjYXRvcHRzPSIke0RJT0RfVElNRU9VVDorLXQgJERJT0RfVElNRU9VVH0iCisgZm9yIHNlcnZlciBpbiAkRElPRF9TRVJWRVJTOyBkbworICAgICAkRElPRF9ESU9EQ0FUIC1zICRzZXJ2ZXIgJGRjYXRvcHRzIGV4cG9ydHMgfCBhd2sgJ3twcmludCAkMX0nIHxcCisgICAgIHdoaWxlIHJlYWQgcGF0aDsgZG8KKy0gICAgICAgIGlmIFsgIiRwYXRoIiA9PSAiLyIgXTsgdGhlbgorLSAgICAgICAgICAgIGlmIFsgIiRrZXkiID09ICJST09UIiBdOyB0aGVuCisrICAgICAgICBpZiBbICIkcGF0aCIgPSAiLyIgXTsgdGhlbgorKyAgICAgICAgICAgIGlmIFsgIiRrZXkiID0gIlJPT1QiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgZWNobyAiJHByZWZpeCAkc2VydmVyOiRwYXRoIgorICAgICAgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgICAgICBmaQorLSAgICAgICAgZWxpZiBbICIka2V5IiA9PSAiJChlY2hvICRwYXRofHNlZCAtZSdzL15cLy8vJyAtZSdzL1wvLy4vZycpIiBdIFwKKy0gICAgICAgICAgfHwgWyAiJGtleSIgPT0gIiQoZWNobyAkcGF0aHxzZWQgLWUncy9eXC8vLycgLWUncy9cLy9fL2cnKSIgXSBcCistICAgICAgICAgIHx8IFsgIiRrZXkiID09ICIkKGVjaG8gJHBhdGh8c2VkIC1lJ3MvXlwvLy8nIC1lJ3MvXC8vLS9nJykiIF0gXAorLSAgICAgICAgICB8fCBbICIka2V5IiA9PSAiJChiYXNlbmFtZSAkcGF0aCkiIF07IHRoZW4KKysgICAgICAgIGVsaWYgWyAiJGtleSIgPSAiJChlY2hvICRwYXRofHNlZCAtZSdzL15cLy8vJyAtZSdzL1wvLy4vZycpIiBdIFwKKysgICAgICAgICAgfHwgWyAiJGtleSIgPSAiJChlY2hvICRwYXRofHNlZCAtZSdzL15cLy8vJyAtZSdzL1wvL18vZycpIiBdIFwKKysgICAgICAgICAgfHwgWyAiJGtleSIgPSAiJChlY2hvICRwYXRofHNlZCAtZSdzL15cLy8vJyAtZSdzL1wvLy0vZycpIiBdIFwKKysgICAgICAgICAgfHwgWyAiJGtleSIgPSAiJChiYXNlbmFtZSAkcGF0aCkiIF07IHRoZW4KKyAgICAgICAgICAgICBlY2hvICIkcHJlZml4ICRzZXJ2ZXI6JHBhdGgiCisgICAgICAgICAgICAgZXhpdCAwCisgICAgICAgICBmaQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy9kaW9kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy9kaW9kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMGJmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzL2Rpb2QKQEAgLTAsMCArMSw3NSBAQAorIyEvYmluL3NoCisjCisjIGNoa2NvbmZpZzogMzUgMjAgODAKKyMgZGVzY3JpcHRpb246IERpc3RyaWJ1dGVkIElucHV0IE91dHB1dCBEYWVtb24gCisjCisKKyMgR2V0IGZ1bmN0aW9uIGZyb20gZnVuY3Rpb25zIGxpYnJhcnkKKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisKK0JBU0U9ZGlvZAorUElERklMRT0vdmFyL3J1bi8kQkFTRS5waWQKK1BJRD1gdGVzdCAtZiAkUElERklMRSAmJiBjYXQgJFBJREZJTEVgCitESU9EX0JJTj0vdXNyL3NiaW4vJEJBU0UKK0RJT0RfQ09ORj0vZXRjLyRCQVNFLmNvbmYKK0RJT0RfT1BUUz0iLWMgJERJT0RfQ09ORiIKK0RJT0Q9IiRESU9EX0JJTiAkRElPRF9PUFRTIgorUkVUVkFMPTAKKworIyBTdGFydCB0aGUgc2VydmljZSAkQkFTRQorc3RhcnQoKQoreworICAgICAgICMgRm9yY2UgY3JlYXRpb24gb2YgdGhlIGxvZyBkaXJlY3RvcnkgZXZlbiBvbiBhIHRtcGZzIC92YXIvbG9nLgorICAgICAgIG1rZGlyIC1wIC92YXIvbG9nL2Rpb2QKKworICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXRlc3QgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUKKyAgICAgICBzdGF0dXM9JD8KKyAgICAgICBpZiBbICRzdGF0dXMgLWVxIDAgXTsgdGhlbgorICAgICAgICAgICBlY2hvICJkaW9kIHNlcnZpY2UgaXMgYWxyZWFkeSBydW5uaW5nIHdpdGggcGlkICRQSUQiCisgICAgICAgICAgIGV4aXQgMQorICAgICAgIGVsc2UKKyAgICAgICAgICAgZWNobyAtbiAiU3RhcnRpbmcgJEJBU0U6IgorICAgICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcGlkZmlsZSAkUElERklMRSBcCisJICAgICAtLWV4ZWMgJERJT0RfQklOIC0tICRESU9EX09QVFMKKyAgICAgICAgICAgUkVUVkFMPSQ/CisgICAgICAgICAgIGVjaG8KKyAgICAgICAgICAgWyAkUkVUVkFMIC1uZSAwIF0gJiYgZXhpdCAkUkVUVkFMCisgICAgICAgZmkKK30KKworIyBTdG9wIHRoZSBzZXJ2aWNlICRCQVNFCitzdG9wKCkKK3sKKyAgICBlY2hvIC1uICJTdG9wcGluZyAkQkFTRToiCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tdGVzdCAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRQorICAgIHN0YXR1cz0kPworICAgIGlmIFsgJHN0YXR1cyAtZXEgMCBdOyB0aGVuCisgICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRQorICAgICAgICBbIC13ICRQSURGSUxFIF0gJiYgcm0gLWYgJFBJREZJTEUKKyAgICBlbHNlCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1uYW1lICRCQVNFCisgICAgZmkKK30KKworCisjIyMgc2VydmljZSBhcmd1bWVudHMgIyMjCitjYXNlICQxIGluCisgICAgc3RhcnQpCisgICAgICAgIHN0YXJ0CisgICAgICAgIDs7CisgICAgc3RvcCkKKyAgICAgICAgc3RvcAorICAgICAgICA7OworICAgIHN0YXR1cykKKyAgICAgICAgc3RhdHVzICRCQVNFCisgICAgICAgIDs7CisgICAgcmVzdGFydCB8IGZvcmNlLXJlbG9hZCkKKyAgICAgICAgJDAgc3RvcAorICAgICAgICAkMCBzdGFydAorICAgICAgICA7OworICAgICopCisgICAgICAgIGVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydH0uIgorICAgICAgICBleGl0IDEKK2VzYWMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzL2Rpb2QuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvZGlvZC5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Nzc0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzL2Rpb2QuY29uZgpAQCAtMCwwICsxLDE1IEBACistLQorLS0gL2V0Yy9kaW9kLmNvbmYgLSBjb25maWcgZmlsZSBmb3IgZGlvZCBkaXN0cmlidXRlZCBJL08gZGFlbW9uCistLQorLS0gTk9URTogVGhpcyBjb25maWcgZmlsZSBpcyBhIGx1YSBzY3JpcHQgdGhhdCBkaW9kIHJ1bnMsIHRoZW4gZXh0cmFjdHMKKy0tIHRoZSB2YWx1ZSBvZiBjZXJ0YWluIGdsb2JhbGx5IGRlZmluZWQgdmFyaWFibGVzLiAgU2VlIGRpb2QuY29uZig1KS4KKworbGlzdGVuID0geyAiMC4wLjAuMDo1NjQiIH0KK253dGhyZWFkcyA9IDE2CithdXRoX3JlcXVpcmVkID0gMQorbG9nZGVzdCA9ICJzeXNsb2c6ZGFlbW9uOmVyciIKKworZXhwb3J0cyA9IHsgIi9nL2cwIiwgIi9nL2cxMCIgfQorCithbGxzcXVhc2ggPSAwCitzcXVhc2h1c2VyID0gIm5vYm9keSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1jb250cm9sbGVyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWNvbnRyb2xsZXIuYmIKaW5kZXggMGIyYTY3Yi4uYzgxNjU0NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWNvbnRyb2xsZXIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWNvbnRyb2xsZXIuYmIKQEAgLTMsNyArMyw2IEBACiAKIElNQUdFX0lOU1RBTEwgPSAiXAogICAgICR7Q09SRV9JTUFHRV9CQVNFX0lOU1RBTEx9IFwKLSAgICAke1JPT1RGU19QS0dNQU5BR0VfQk9PVFNUUkFQfSBcCiAgICAgcGFja2FnZWdyb3VwLWNvcmUtYmFzaWMgXAogICAgIG9wZW52c3dpdGNoIFwKICAgICBvcGVudnN3aXRjaC1jb250cm9sbGVyIFwKQEAgLTI2LDkgKzI1LDggQEAKICAgICAiCiAKIGluaGVyaXQgY29yZS1pbWFnZQotaW5oZXJpdCBpbWFnZS12bQogCi1JTUFHRV9GU1RZUEVTID0gInZtZGsgdGFyLmd6IgorSU1BR0VfRlNUWVBFUyA9ICJ3aWMudm1kayB0YXIuZ3oiCiAKICMgRW5zdXJlIGV4dHJhIHNwYWNlIGZvciBndWVzdCBpbWFnZXMKICNJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiNDE5NDMwNDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY2xvdWQtaW1hZ2UtZ3Vlc3QuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY2xvdWQtaW1hZ2UtZ3Vlc3QuYmIKaW5kZXggZTI0YmYwZC4uMjk1NzUwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWd1ZXN0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1ndWVzdC5iYgpAQCAtMyw3ICszLDYgQEAKIAogSU1BR0VfSU5TVEFMTCA9ICJcCiAgICAgJHtDT1JFX0lNQUdFX0JBU0VfSU5TVEFMTH0gXAotICAgICR7Uk9PVEZTX1BLR01BTkFHRV9CT09UU1RSQVB9IFwKICAgICBwYWNrYWdlZ3JvdXAtY29yZS1iYXNpYyBcCiAgICAgb3BlbmZsb3cgXAogICAgIHFlbXUgXCAgIApAQCAtMTMsNiArMTIsNSBAQAogICAgICIKIAogaW5oZXJpdCBjb3JlLWltYWdlCi1pbmhlcml0IGltYWdlLXZtCiAKLUlNQUdFX0ZTVFlQRVMgKz0gInZtZGsiCitJTUFHRV9GU1RZUEVTICs9ICJ3aWMudm1kayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4tYm9vdGltZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWJvb3RpbWcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTNhYTY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4tYm9vdGltZy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TWVNMSU5VWF9USU1FT1VUID0gIjEwIgotU1lTTElOVVhfTEFCRUwgPSAiYm9vdCIKLVNZU0xJTlVYX1hFTl9BUFBFTkQgPSAiZG9tMF9tZW09MTA0ODU3NiIKLVNZU0xJTlVYX0tFUk5FTF9BUFBFTkQgPSAicmFtZGlza19zaXplPTMyNzY4IHJvb3Q9L2Rldi9yYW0wIHJ3IGNvbnNvbGU9dHR5MCBjb25zb2xlPXR0eVMwLDExNTIwMG44IgotI0xBQkVMU19hcHBlbmQgPSAiICR7U1lTTElOVVhfTEFCRUx9ICIKLQotSU5JVFJEID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9CQVNFTkFNRX0tJHtNQUNISU5FfS5jcGlvLmx6bWEiCi0KLWRvX2Jvb3RpbWdbZGVwZW5kc10gKz0gIiR7SU1BR0VfQkFTRU5BTUV9OmRvX3Jvb3RmcyIKLQotaW5oZXJpdCBib290aW1nCi0KLXN5c2xpbnV4X3BvcHVsYXRlX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDA0NDQgJHtTVEFHSU5HX0xJQkRJUn0vc3lzbGludXgvbWJvb3QuYzMyICR7SERERElSfSR7U1lTTElOVVhESVJ9L21ib290LmMzMgotfQotCi1ncnViZWZpX3BvcHVsYXRlX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS94ZW4tJHtNQUNISU5FfS5neiAke0RFU1R9JHtFRklESVJ9L3hlbi5negotfQotCi1wb3B1bGF0ZV9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0veGVuLSR7TUFDSElORX0uZ3ogJHtERVNUfS94ZW4uZ3oKLX0KLQotYnVpbGRfc3lzbGludXhfY2ZnKCkgewotCWVjaG8gQUxMT1dPUFRJT05TIDEgPiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gU0VSSUFMIDAgMTE1MjAwID4gJHtTWVNMSU5VWENGR30KLQllY2hvIERFRkFVTFQgJHtTWVNMSU5VWF9MQUJFTH0gPj4gJHtTWVNMSU5VWENGR30KLQllY2hvIFRJTUVPVVQgJHtTWVNMSU5VWF9USU1FT1VUfSA+PiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gUFJPTVBUIDEgPj4gJHtTWVNMSU5VWENGR30KLQllY2hvIExBQkVMICR7U1lTTElOVVhfTEFCRUx9ID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyBLRVJORUwgbWJvb3QuYzMyID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyBBUFBFTkQgeGVuLmd6ICR7U1lTTElOVVhfWEVOX0FQUEVORH0gLS0tIHZtbGludXogJHtTWVNMSU5VWF9LRVJORUxfQVBQRU5EfSAtLS0gaW5pdHJkID4+ICR7U1lTTElOVVhDRkd9Ci19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4tZ3Vlc3QtaW1hZ2UtbWluaW1hbC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4tZ3Vlc3QtaW1hZ2UtbWluaW1hbC5iYgppbmRleCBhYjdlOTJjLi5kMzExZWFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWd1ZXN0LWltYWdlLW1pbmltYWwuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1ndWVzdC1pbWFnZS1taW5pbWFsLmJiCkBAIC0xLDE0ICsxLDE5IEBACiBERVNDUklQVElPTiA9ICJBIFhlbiBndWVzdCBpbWFnZS4iCiAKLWluaGVyaXQgY29yZS1pbWFnZQoraW5oZXJpdCBjb3JlLWltYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjawogCiBJTUFHRV9JTlNUQUxMICs9ICIgXAogICAgIHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ2FjcGknLCAna2VybmVsLW1vZHVsZS14ZW4tYWNwaS1wcm9jZXNzb3InLCAnJywgZCl9IFwKICAgICAiCiAKLUlNQUdFX0lOU1RBTEwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4Zjg2LXZpZGVvLWZiZGV2JywgJycsIGQpfSIKLUlNQUdFX0lOU1RBTEwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4Zjg2LXZpZGVvLXZlc2EnLCAnJywgZCl9IgorSU1BR0VfSU5TVEFMTCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZFQVRVUkVTJywgJ3gxMScsICcgeGY4Ni12aWRlby1mYmRldicsICcnLCBkKX0iCisKKyMgSW5zdGFsbCB4Zjg2LXZpZGVvLXZlc2Egb24geDg2IHBsYXRmb3Jtcy4KK0lNQUdFX0lOU1RBTExfYXBwZW5kX3g4Ni02NCA9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfRkVBVFVSRVMnLCAneDExJywgJyB4Zjg2LXZpZGVvLXZlc2EnLCAnJywgZCl9IgorSU1BR0VfSU5TVEFMTF9hcHBlbmRfeDg2ICAgID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GRUFUVVJFUycsICd4MTEnLCAnIHhmODYtdmlkZW8tdmVzYScsICcnLCBkKX0iCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZFQVRVUkVTJywgJ3gxMScsICcgeDExJywgJycsIGQpfSB4ZW4iCiAKIExJQ0VOU0UgPSAiTUlUIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWltYWdlLW1pbmltYWwuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWltYWdlLW1pbmltYWwuYmIKaW5kZXggYjhjMjAwMi4uYzM5ZDM3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1pbWFnZS1taW5pbWFsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4taW1hZ2UtbWluaW1hbC5iYgpAQCAtMTAsMTIgKzEwLDE3IEBACiAgICAga2VybmVsLW1vZHVsZS14ZW4tZ250YWxsb2MgXAogICAgIGtlcm5lbC1tb2R1bGUteGVuLWdudGRldiBcCiAgICAga2VybmVsLW1vZHVsZS14ZW4tbmV0YmFjayBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncGNpJywgJ2tlcm5lbC1tb2R1bGUteGVuLXBjaWJhY2snLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdwY2knLCAiJHtYRU5fUENJQkFDS19NT0RVTEV9IiwgJycsIGQpfSBcCiAgICAga2VybmVsLW1vZHVsZS14ZW4td2R0IFwKICAgICB4ZW4tYmFzZSBcCiAgICAgcWVtdSBcCiAgICAgIgogCisjIExpbnV4IGtlcm5lbCBvcHRpb24gQ09ORklHX1hFTl9QQ0lERVZfQkFDS0VORCBkZXBlbmRzIG9uIFg4NgorWEVOX1BDSUJBQ0tfTU9EVUxFID0gIiIKK1hFTl9QQ0lCQUNLX01PRFVMRV94ODYgICAgPSAia2VybmVsLW1vZHVsZS14ZW4tcGNpYmFjayIKK1hFTl9QQ0lCQUNLX01PRFVMRV94ODYtNjQgPSAia2VybmVsLW1vZHVsZS14ZW4tcGNpYmFjayIKKwogTElDRU5TRSA9ICJNSVQiCiAKIGluaGVyaXQgY29yZS1pbWFnZQpAQCAtNDIsNyArNDcsNyBAQAogCWluc3RhbGwgLW0gMDY0NCAke0RFUExPWV9ESVJfSU1BR0V9L3hlbi0ke01BQ0hJTkV9Lmd6ICR7REVTVH0ke0VGSURJUn0veGVuLmd6CiB9CiAKLXBvcHVsYXRlX2FwcGVuZCgpIHsKK3N5c2xpbnV4X3BvcHVsYXRlX2FwcGVuZCgpIHsKIAlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS94ZW4tJHtNQUNISU5FfS5neiAke0RFU1R9L3hlbi5negogfQogCkBAIC01MCwxMiArNTUsMTIgQEAKIFNZU0xJTlVYX0tFUk5FTF9BUkdTID89ICJyYW1kaXNrX3NpemU9MzI3Njggcm9vdD0vZGV2L3JhbTAgcncgY29uc29sZT1odmMwIGVhcmx5cHJpbnRrPXhlbiBjb25zb2xlPXR0eTAgcGFuaWM9MTAgTEFCRUw9Ym9vdCBkZWJ1Z3NoZWxsPTUiCiAKIGJ1aWxkX3N5c2xpbnV4X2NmZyAoKSB7Ci0JZWNobyAiQUxMT1dPUFRJT05TIDEiID4gJHtTWVNMSU5VWENGR30KLQllY2hvICJERUZBVUxUIGJvb3QiID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyAiVElNRU9VVCAxMCIgPj4gJHtTWVNMSU5VWENGR30KLQllY2hvICJQUk9NUFQgMSIgPj4gJHtTWVNMSU5VWENGR30KLQllY2hvICJMQUJFTCBib290IiA+PiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gIiAgS0VSTkVMIG1ib290LmMzMiIgPj4gJHtTWVNMSU5VWENGR30KLQllY2hvICIgIEFQUEVORCAveGVuLmd6ICR7U1lTTElOVVhfWEVOX0FSR1N9IC0tLSAvdm1saW51eiAke1NZU0xJTlVYX0tFUk5FTF9BUkdTfSAtLS0gL2luaXRyZCIgPj4gJHtTWVNMSU5VWENGR30KKwllY2hvICJBTExPV09QVElPTlMgMSIgPiAke1NZU0xJTlVYX0NGR30KKwllY2hvICJERUZBVUxUIGJvb3QiID4+ICR7U1lTTElOVVhfQ0ZHfQorCWVjaG8gIlRJTUVPVVQgMTAiID4+ICR7U1lTTElOVVhfQ0ZHfQorCWVjaG8gIlBST01QVCAxIiA+PiAke1NZU0xJTlVYX0NGR30KKwllY2hvICJMQUJFTCBib290IiA+PiAke1NZU0xJTlVYX0NGR30KKwllY2hvICIgIEtFUk5FTCBtYm9vdC5jMzIiID4+ICR7U1lTTElOVVhfQ0ZHfQorCWVjaG8gIiAgQVBQRU5EIC94ZW4uZ3ogJHtTWVNMSU5VWF9YRU5fQVJHU30gLS0tIC92bWxpbnV6ICR7U1lTTElOVVhfS0VSTkVMX0FSR1N9IC0tLSAvaW5pdHJkIiA+PiAke1NZU0xJTlVYX0NGR30KIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB4ZS9pcHhlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lweGUvaXB4ZV9naXQuYmIKaW5kZXggZDUyYzU2Ny4uYzBjOGE3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB4ZS9pcHhlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcHhlL2lweGVfZ2l0LmJiCkBAIC04LDcgKzgsNyBAQAogUFYgPSAiZ2l0ciR7U1JDUFZ9IgogUFIgPSAicjAiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmlweGUub3JnL2lweGUuZ2l0O3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmlweGUub3JnL2lweGUuZ2l0O3Byb3RvY29sPWh0dHBzIgogCiBGSUxFU18ke1BOfSA9ICIvdXNyL3NoYXJlL2Zpcm13YXJlLyoucm9tIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDEta3ZtdG9vbC05cC1maXhlZC1jb21waWxhdGlvbi1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2t2bXRvb2wvZmlsZXMvMDAwMS1rdm10b29sLTlwLWZpeGVkLWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOTExZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDEta3ZtdG9vbC05cC1maXhlZC1jb21waWxhdGlvbi1lcnJvci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGJjZDk1NGZmZGI5MzgzMDMwZTAyZDM1NmI1MWUwOWU0ZTJhNzEwNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXJpdXN6IFBlbG93c2tpIDxkYXJpdXN6LnBlbG93c2tpQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNSBOb3YgMjAxNyAxMjozOTo1MiArMDEwMAorU3ViamVjdDogW1BBVENIIDEvMl0ga3ZtdG9vbDogOXA6IGZpeGVkIGNvbXBpbGF0aW9uIGVycm9yCisKK21ha2VkZXYgaXMgZGVmaW5lZCBpbiBzeXMvc3lzbWFjcm9zLmgKKworU2lnbmVkLW9mZi1ieTogRGFyaXVzeiBQZWxvd3NraSA8ZGFyaXVzei5wZWxvd3NraUBnbWFpbC5jb20+CistLS0KKyB2aXJ0aW8vOXAuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdmlydGlvLzlwLmMgYi92aXJ0aW8vOXAuYworaW5kZXggNmFjYmZkZC4uMWRlZTJjMiAxMDA2NDQKKy0tLSBhL3ZpcnRpby85cC5jCisrKysgYi92aXJ0aW8vOXAuYworQEAgLTE1LDYgKzE1LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN5cy92ZnMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorIAorICNpbmNsdWRlIDxsaW51eC92aXJ0aW9fcmluZy5oPgorICNpbmNsdWRlIDxsaW51eC92aXJ0aW9fOXAuaD4KKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2t2bXRvb2wvZmlsZXMvMDAwMi1rdm10b29sLWFkZC1FWFRSQV9DRkxBR1MtdmFyaWFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDIta3ZtdG9vbC1hZGQtRVhUUkFfQ0ZMQUdTLXZhcmlhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MjUzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDIta3ZtdG9vbC1hZGQtRVhUUkFfQ0ZMQUdTLXZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gOTc3YTRkNDEwMTJkMTgxNGY1YTUzMzBjYWNjMmU0OTQ0ZGUzODdjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhcml1c3ogUGVsb3dza2kgPGRhcml1c3oucGVsb3dza2lAZ21haWwuY29tPgorRGF0ZTogU3VuLCA1IE5vdiAyMDE3IDEyOjM5OjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBrdm10b29sOiBhZGQgRVhUUkFfQ0ZMQUdTIHZhcmlhYmxlCisKK3RvIGF2b2lkIENGTEFHUyBvdmVycmlkaW5nIGludHJvZHVjZSBuZXcgRVhUUkFfQ0ZMQUdTIHZhcmlhYmxlCitmb3Igc2V0dGluZyB2aWEgY29tbWFuZCBhcmd1bWVudAorCitTaWduZWQtb2ZmLWJ5OiBEYXJpdXN6IFBlbG93c2tpIDxkYXJpdXN6LnBlbG93c2tpQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDY0YTBhMTYuLmJjYTFiMjYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yLDYgKzIsOCBAQAorICMgRGVmaW5lIFdFUlJPUj0wIHRvIGRpc2FibGUgLVdlcnJvci4KKyAjCisgCisrQ0ZMQUdTICs9ICQoRVhUUkFfQ0ZMQUdTKQorKworIGlmZXEgKCQoc3RyaXAgJChWKSksKQorIAlFID0gQGVjaG8KKyAJUSA9IEAKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2t2bXRvb2wva3ZtdG9vbC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2t2bXRvb2wva3ZtdG9vbC5iYgppbmRleCBiM2JmMjAyLi4zM2ZlYzMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2t2bXRvb2wuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9rdm10b29sLmJiCkBAIC01LDEwICs1LDE1IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKIAogREVQRU5EUyA9ICJkdGMgbGliYWlvIHpsaWIiCitkb19jb25maWd1cmVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgorCitpbmhlcml0IGtlcm5lbC1hcmNoCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3dpbGwva3ZtdG9vbC5naXQgXAogICAgICAgICAgICBmaWxlOi8vZXh0ZXJuYWwtY3Jvc3Njb21waWxlci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF2b2lkLXBvaW50ZXJzLWZvci1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEta3ZtdG9vbC05cC1maXhlZC1jb21waWxhdGlvbi1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWt2bXRvb2wtYWRkLUVYVFJBX0NGTEFHUy12YXJpYWJsZS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDUkVWID0gIjNmZWE4OWE5MjQ1MTFmOWY4ZmUwNWE4OTIwOThmYWQ3N2MxZWNhMGQiCkBAIC0xNiw3ICsyMSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLUVYVFJBX09FTUFLRT0nQVJDSD0iJHtUQVJHRVRfQVJDSH0iIFY9MScKK0VYVFJBX09FTUFLRT0nVj0xIEVYVFJBX0NGTEFHUz0iLUkke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC8ke0FSQ0h9L2luY2x1ZGUgLUkke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfS9hcmNoLyR7QVJDSH0vaW5jbHVkZS9nZW5lcmF0ZWQvIicKIAogZG9faW5zdGFsbCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydF8xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydF8xLjMuNS5iYgppbmRleCAxOWI3NTY3Li44ZWQyNTA1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnRfMS4zLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0XzEuMy41LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAjCiBSREVQRU5EU18ke1BOfSA9ICJnZXR0ZXh0LXJ1bnRpbWUiCiAKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGdhd2siCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBnYXdrIHBlcmwiCiAKIFJERVBFTkRTX2xpYnZpcnQtbGlidmlydGQgKz0gImJyaWRnZS11dGlscyBpcHRhYmxlcyBwbS11dGlscyBkbnNtYXNxIG5ldGNhdC1vcGVuYnNkIgogUkRFUEVORFNfbGlidmlydC1saWJ2aXJ0ZF9hcHBlbmRfeDg2LTY0ID0gIiBkbWlkZWNvZGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9zZWFiaW9zL3NlYWJpb3NfMS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9zZWFiaW9zL3NlYWJpb3NfMS45LjEuYmIKaW5kZXggNWMwOTVhYy4uMTQ0YjEzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvc2VhYmlvcy9zZWFiaW9zXzEuOS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3NlYWJpb3Mvc2VhYmlvc18xLjkuMS5iYgpAQCAtNCw3ICs0LDcgQEAKIFNFQ1RJT04gPSAiZmlybXdhcmUiCiAKIFNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vY29kZS5jb3JlYm9vdC5vcmcvcC9zZWFiaW9zL2Rvd25sb2Fkcy9nZXQvJHtQTn0tJHtQVn0udGFyLmd6IFwKKyAgICBodHRwczovL2NvZGUuY29yZWJvb3Qub3JnL3Avc2VhYmlvcy9kb3dubG9hZHMvZ2V0LyR7UE59LSR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovL2hvc3RjYy5wYXRjaCBcCiAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL2Jpb3NzdW1zXzAuN2EuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL2Jpb3NzdW1zXzAuN2EuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY2YmFkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3ZnYWJpb3MvYmlvc3N1bXNfMC43YS5iYgpAQCAtMCwwICsxLDM3IEBACitERVNDUklQVElPTiA9ICJiaW9zc3VtcyB0b29sIGZvciBidWlsZGluZyBQbGV4ODYvQm9jaHMgTEdQTCBWR0FCaW9zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ub25nbnUub3JnL3ZnYWJpb3MvIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK1NFQ1RJT04gPSAiZmlybXdhcmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjZjNjODI1NjU5ZTgyNTM5NjQ1ZGE0MWE3OTA4NTg5IgorCitTUkNfVVJJID0gICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9kb3dubG9hZC92Z2FiaW9zL3ZnYWJpb3MtJHtQVn0udGd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmMwZmU1YzBjYTA4MDgyYTkyOTNlM2E3YjIzZGM5MDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQyNGMzM2Q0YmZiNzgzMWUyMDY5Y2YzNjQ0OTM2YTUzZWYzZGUyMWQ0Njc4NzJiNTRjZTJlYTMwODgxYjg2NSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9iaW9zc3VtcyIKKworUyA9ICIke1dPUktESVJ9L3ZnYWJpb3MtJHtQVn0iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIERvbid0IG92ZXJyaWRlIHRoZSBjb21waWxlciBvciBpdHMgZmxhZ3M6CisgICAgc2VkICdzLF5DQyxESVNBQkxFRF9DQywnIC1pIE1ha2VmaWxlCisgICAgc2VkICdzLF5DRkxBR1MsRElTQUJMRURfQ0ZMQUdTLCcgLWkgTWFrZWZpbGUKKyAgICBzZWQgJ3MsXkxERkxBR1MsRElTQUJMRURfTERGTEFHUywnIC1pIE1ha2VmaWxlCisgICAgIyBTdXBwbHkgdGhlIEMgZmxhZ3MgdG8gdGhlIGNvbXBpbGVyOgorICAgIHNlZCAncywtbyBiaW9zc3VtcywkKENGTEFHUykgLW8gYmlvc3N1bXMsJyAtaSBNYWtlZmlsZQorfQorCitkb19jb21waWxlKCkgeworICAgICMgY2xlYW4gcmVtb3ZlcyBiaW5hcmllcyBkaXN0cmlidXRlZCB3aXRoIHNvdXJjZQorICAgIG9lX3J1bm1ha2UgY2xlYW4KKyAgICBvZV9ydW5tYWtlIGJpb3NzdW1zCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgbWtkaXIgLXAgIiR7RH0ke2JpbmRpcn0iCisgICAgaW5zdGFsbCAtbSAwNzU1IGJpb3NzdW1zICIke0R9JHtiaW5kaXJ9IgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy92Z2FiaW9zXzAuN2EuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL3ZnYWJpb3NfMC43YS5iYgppbmRleCAwZWQ4YmI0Li44Yzg5MDQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL3ZnYWJpb3NfMC43YS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL3ZnYWJpb3NfMC43YS5iYgpAQCAtMyw3ICszLDcgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBTRUNUSU9OID0gImZpcm13YXJlIgogCi1ERVBFTkRTID0gImRldjg2LW5hdGl2ZSIKK0RFUEVORFMgPSAiZGV2ODYtbmF0aXZlIGJpb3NzdW1zLW5hdGl2ZSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGNmM2M4MjU2NTllODI1Mzk2NDVkYTQxYTc5MDg1ODkiCiAKQEAgLTIwLDcgKzIwLDkgQEAKIFMgPSAiJHtXT1JLRElSfS8ke1BOfS0ke1BWfSIKIAogZG9fY29uZmlndXJlKCkgewotICAgIGVjaG8gIlNraXAgZG9fY29uZmlndXJlIgorICAgICMgT3ZlcnJpZGUgdG8gdXNlIHRoZSBuYXRpdmUtYnVpbHQgYmlvc3N1bXMgdG9vbDoKKyAgICBzZWQgJ3MsLi9iaW9zc3VtcyxiaW9zc3VtcywnIC1pIE1ha2VmaWxlCisgICAgc2VkICdzLCQoQ0MpIC1vIGJpb3NzdW1zIGJpb3NzdW1zLmMsdG91Y2ggYmlvc3N1bXMsJyAtaSBNYWtlZmlsZQogfQogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvZml4LWxpYnhjLXhjX2RvbV9hcm0tbWlzc2luZy1pbml0aWFsaXphdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTAxNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorY29tbWl0IDg4YmZiZjkwZTM1ZjEyMTNmOTk2N2E5N2RlZTBiMjAzOWY5OTk4YTQKK0F1dGhvcjogQmVybmQgS3VobHMgPGJlcm5kLmt1aGxzQHQtb25saW5lLmRlPgorRGF0ZTogICBTYXQgQXVnIDE5IDE2OjIxOjQyIDIwMTcgKzAyMDAKKworICAgIHRvb2xzL2xpYnhjL3hjX2RvbV9hcm06IGFkZCBtaXNzaW5nIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uCisgICAgCisgICAgVGhlIHZhcmlhYmxlIGRvbWN0bC51LmFkZHJlc3Nfc2l6ZS5zaXplIG1heSByZW1haW4gdW5pbml0aWFsaXplZCBpZgorICAgIGd1ZXN0X3R5cGUgaXMgbm90IG9uZSBvZiB4ZW4tMy4wLWFhcmNoNjQgb3IgeGVuLTMuMC1hcm12N2wuIEFuZCB0aGUKKyAgICBjb2RlIHByZWNpc2VseSBjaGVja3MgaWYgdGhpcyB2YXJpYWJsZSBpcyBzdGlsbCAwIHRvIGRlY2lkZSBpZiB0aGUKKyAgICBndWVzdCB0eXBlIGlzIHN1cHBvcnRlZCBvciBub3QuCisgICAgCisgICAgVGhpcyBmaXhlcyB0aGUgZm9sbG93aW5nIGJ1aWxkIGZhaWx1cmUgd2l0aCBnY2MgNy54OgorICAgIAorICAgIHhjX2RvbV9hcm0uYzoyMjk6MzE6IGVycm9yOiAnZG9tY3RsLnUuYWRkcmVzc19zaXplLnNpemUnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorICAgICAgICAgaWYgKCBkb21jdGwudS5hZGRyZXNzX3NpemUuc2l6ZSA9PSAwICkKKyAgICAKKyAgICBQYXRjaCBvcmlnaW5hbGx5IHRha2VuIGZyb20KKyAgICBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3hlbi1kZXZlbEBsaXN0cy54ZW4ub3JnL21zZzEwOTMxMy5odG1sLgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IEJlcm5kIEt1aGxzIDxiZXJuZC5rdWhsc0B0LW9ubGluZS5kZT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KKyAgICBBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KKworZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYworaW5kZXggZTdkNGJkMC4uZTY2OWZiMCAxMDA2NDQKKy0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYworKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2FybS5jCitAQCAtMjIzLDYgKzIyMyw4IEBAIHN0YXRpYyBpbnQgc2V0X21vZGUoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsIGNoYXIgKmd1ZXN0X3R5cGUpCisgCisgICAgIGRvbWN0bC5kb21haW4gPSBkb21pZDsKKyAgICAgZG9tY3RsLmNtZCAgICA9IFhFTl9ET01DVExfc2V0X2FkZHJlc3Nfc2l6ZTsKKysgICAgZG9tY3RsLnUuYWRkcmVzc19zaXplLnNpemUgPSAwOworKworICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodHlwZXMpOyBpKysgKQorICAgICAgICAgaWYgKCAhc3RyY21wKHR5cGVzW2ldLmd1ZXN0LCBndWVzdF90eXBlKSApCisgICAgICAgICAgICAgZG9tY3RsLnUuYWRkcmVzc19zaXplLnNpemUgPSB0eXBlc1tpXS5zaXplOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuLmluYwppbmRleCAzN2ZiNGNlLi5jYjMxNGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuLmluYwpAQCAtOTE0LDYgKzkxNCw5IEBACiAKICAgICAjIGRvIGNvbmZpZ3VyZQogICAgIG9lX3J1bmNvbmYKKyAgICBpZiBbICEgLWUgJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS0zMi5oIF07IHRoZW4KKyAgICAgICAgY3AgJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS02NC5oICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaAorICAgIGZpCiB9CiAKIGRvX2NvbXBpbGUoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVjOTEzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSB4ZW4uaW5jCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwczovL2Rvd25sb2Fkcy54ZW5wcm9qZWN0Lm9yZy9yZWxlYXNlL3hlbi8ke1BWfS94ZW4tJHtQVn0udGFyLmd6IFwKLSAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNzM4ZjdjNzQxMTEwMzQyNjIxY2I4YTRkMTBiMDE5MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTE1YzcxM2FiN2JhM2JmZGE4YjRhMjg1ZWQ5NzM1MjkzNjRmZDExMDBlNmRkNWE2MWYyOTU4M2RjNjY3YjA0IgotCi1TID0gIiR7V09SS0RJUn0veGVuLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW5fNC45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU5YzgwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW5fNC45LjAuYmIKQEAgLTAsMCArMSwxMiBAQAorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorcmVxdWlyZSB4ZW4uaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2Rvd25sb2Fkcy54ZW5wcm9qZWN0Lm9yZy9yZWxlYXNlL3hlbi8ke1BWfS94ZW4tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vZml4LWxpYnhjLXhjX2RvbV9hcm0tbWlzc2luZy1pbml0aWFsaXphdGlvbi5wYXRjaCBcCisgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjBhNzUzNjM3NjMwZjk4MmRmYmRiNjQxMjFmZDcxZTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2FkZTY0M2ZlMzMxMGQ0ZDZmOTdkMGMyMTVjNmZhMzIzYmMxMTMwZDdlNjRkN2UyMDQzZmZhYTczYTk2ZjMzYiIKKworUyA9ICIke1dPUktESVJ9L3hlbi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAzNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18lLmJiYXBwZW5kCkBAIC0wLDAgKzEsMTMgQEAKKyMgQ2hhbmdlIHRoZSBkZWZhdWx0IFhzZXJ2ZXIgT3BlbkdMIGNvbmZpZ3VyYXRpb24gZm9yIG5vbi14ODYgZGlzdHJvcyB3aXRoIFhlbjogZGVzZWxlY3QgJ2dsYW1vcicuCisjIFRoaXMgcmVtb3ZlcyB0aGUgZGVwZW5kZW5jeSBvbiBsaWJlZ2wgdG8gc2ltcGxpZnkgdGhlIGRvbVUgYnVpbGQuCisjCisjIFRvIG92ZXJyaWRlIHRoaXMgKGVnLiBpZiB3YW50ZWQgZm9yIGRvbTAgaW1hZ2VzKSBkZWZpbmU6CisjICAgUkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHUyA9ICIiCisKK1hFTl9SRU1PVkVEX09QRU5HTF9QS0dDT05GSUdTID89ICJnbGFtb3IiCitYRU5fUkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHU194ODYgPSAiIgorWEVOX1JFTU9WRURfT1BFTkdMX1BLR0NPTkZJR1NfeDg2LTY0ID0gIiIKKworUkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHUyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4ZW4nLCAiJHtYRU5fUkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHU30iLCAnJywgZCl9IgorCitPUEVOR0xfUEtHQ09ORklHU19yZW1vdmUgPSAiJHtSRU1PVkVEX09QRU5HTF9QS0dDT05GSUdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9kb2NrZXIuY2ZnIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2RvY2tlci5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlOGUzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9kb2NrZXIuY2ZnCkBAIC0wLDAgKzEsMTIgQEAKK0NPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEU9bQorQ09ORklHX0lQX05GX0ZJTFRFUj1tCitDT05GSUdfTkZfTkFUPW0KK0NPTkZJR19ORl9DT05OVFJBQ0tfSVBWND15CisKK0NPTkZJR19ETV9USElOX1BST1ZJU0lPTklORz1tCisKKworQ09ORklHX0lQX05GX05BVD1tCitDT05GSUdfSVBfTkZfVEFSR0VUX01BU1FVRVJBREU9bQorCitDT05GSUdfT1ZFUkxBWV9GUz15CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZG9ja2VyLnNjYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9kb2NrZXIuc2NjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMTc0NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZG9ja2VyLnNjYwpAQCAtMCwwICsxLDQgQEAKK2RlZmluZSBLRkVBVFVSRV9ERVNDUklQVElPTiAiRW5hYmxlIEZlYXR1cmVzIG5lZWRlZCBieSBkb2NrZXIgaW4gYWRkaXRpb24gdG8gTFhDIGZlYXR1cmVzIgorZGVmaW5lIEtGRUFUVVJFX0NPTVBBVElCSUxJVFkgYm9hcmQKKwora2NvbmYgbm9uLWhhcmR3YXJlIGRvY2tlci5jZmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9seGMuY2ZnIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2x4Yy5jZmcKaW5kZXggZmEyMzQ0YS4uYzI1ZDYwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2x4Yy5jZmcKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2x4Yy5jZmcKQEAgLTE1LDcgKzE1LDcgQEAKIENPTkZJR19ORVRfTlM9eQogCiBDT05GSUdfQ0xTX0NHUk9VUD1tCi1DT05GSUdfQkxLX0NHUk9VUD1tCitDT05GSUdfQkxLX0NHUk9VUD15CiBDT05GSUdfTkVUUFJJT19DR1JPVVA9bQogCiBDT05GSUdfREVWUFRTX01VTFRJUExFX0lOU1RBTkNFUz15CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNiZTg5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotCi1TUkNfVVJJICs9ICJmaWxlOi8veHQtY2hlY2tzdW0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly9lYnRhYmxlcy5zY2MgXAotCSAgICBmaWxlOi8vdnN3aXRjaC5zY2MgXAotCSAgICBmaWxlOi8vbHhjLnNjYyBcCi0JICAgICIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiIGZlYXR1cmVzL2t2bS9xZW11LWt2bS1lbmFibGUuc2NjIgotCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJvcGVudnN3aXRjaCIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bSIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bS1hbWQiCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0taW50ZWwiCi0KLSMgYXVmcyBrZXJuZWwgc3VwcG9ydCByZXF1aXJlZCBmb3IgeGVuLWltYWdlLW1pbmltYWwKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXVmcycsICcgZmVhdHVyZXMvYXVmcy9hdWZzLWVuYWJsZS5zY2MnLCAnJywgZCl9IgotCi0jIHhlbiBrZXJuZWwgc3VwcG9ydAotU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4ZW4nLCAnIGZpbGU6Ly94ZW4uc2NjJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKaW5kZXggZjNiZTg5ZS4uNjE3Y2FjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKQEAgLTEsMTkgKzEgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSSArPSAiZmlsZTovL3h0LWNoZWNrc3VtLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8vZWJ0YWJsZXMuc2NjIFwKLQkgICAgZmlsZTovL3Zzd2l0Y2guc2NjIFwKLQkgICAgZmlsZTovL2x4Yy5zY2MgXAotCSAgICAiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiBmZWF0dXJlcy9rdm0vcWVtdS1rdm0tZW5hYmxlLnNjYyIKLQotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAib3BlbnZzd2l0Y2giCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0iCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0tYW1kIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWludGVsIgotCi0jIGF1ZnMga2VybmVsIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHhlbi1pbWFnZS1taW5pbWFsCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2F1ZnMnLCAnIGZlYXR1cmVzL2F1ZnMvYXVmcy1lbmFibGUuc2NjJywgJycsIGQpfSIKLQotIyB4ZW4ga2VybmVsIHN1cHBvcnQKLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGVuJywgJyBmaWxlOi8veGVuLnNjYycsICcnLCBkKX0iCityZXF1aXJlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndmlydHVhbGl6YXRpb24nLCAnJHtCUE59X3ZpcnR1YWxpemF0aW9uLmluYycsICcnLCBkKX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE3Y2FjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEgQEAKK3JlcXVpcmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd2aXJ0dWFsaXphdGlvbicsICcke0JQTn1fdmlydHVhbGl6YXRpb24uaW5jJywgJycsIGQpfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKaW5kZXggZjNiZTg5ZS4uNjE3Y2FjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0xLDE5ICsxIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly94dC1jaGVja3N1bS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL2VidGFibGVzLnNjYyBcCi0JICAgIGZpbGU6Ly92c3dpdGNoLnNjYyBcCi0JICAgIGZpbGU6Ly9seGMuc2NjIFwKLQkgICAgIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZmVhdHVyZXMva3ZtL3FlbXUta3ZtLWVuYWJsZS5zY2MiCi0KLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIm9wZW52c3dpdGNoIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWFtZCIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bS1pbnRlbCIKLQotIyBhdWZzIGtlcm5lbCBzdXBwb3J0IHJlcXVpcmVkIGZvciB4ZW4taW1hZ2UtbWluaW1hbAotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhdWZzJywgJyBmZWF0dXJlcy9hdWZzL2F1ZnMtZW5hYmxlLnNjYycsICcnLCBkKX0iCi0KLSMgeGVuIGtlcm5lbCBzdXBwb3J0Ci1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICcgZmlsZTovL3hlbi5zY2MnLCAnJywgZCl9IgorcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3ZpcnR1YWxpemF0aW9uJywgJyR7QlBOfV92aXJ0dWFsaXphdGlvbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZAppbmRleCBmM2JlODllLi42MTdjYWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKQEAgLTEsMTkgKzEgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSSArPSAiZmlsZTovL3h0LWNoZWNrc3VtLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8vZWJ0YWJsZXMuc2NjIFwKLQkgICAgZmlsZTovL3Zzd2l0Y2guc2NjIFwKLQkgICAgZmlsZTovL2x4Yy5zY2MgXAotCSAgICAiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiBmZWF0dXJlcy9rdm0vcWVtdS1rdm0tZW5hYmxlLnNjYyIKLQotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAib3BlbnZzd2l0Y2giCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0iCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0tYW1kIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWludGVsIgotCi0jIGF1ZnMga2VybmVsIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHhlbi1pbWFnZS1taW5pbWFsCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2F1ZnMnLCAnIGZlYXR1cmVzL2F1ZnMvYXVmcy1lbmFibGUuc2NjJywgJycsIGQpfSIKLQotIyB4ZW4ga2VybmVsIHN1cHBvcnQKLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGVuJywgJyBmaWxlOi8veGVuLnNjYycsICcnLCBkKX0iCityZXF1aXJlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndmlydHVhbGl6YXRpb24nLCAnJHtCUE59X3ZpcnR1YWxpemF0aW9uLmluYycsICcnLCBkKX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b192aXJ0dWFsaXphdGlvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fdmlydHVhbGl6YXRpb24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MDVlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fdmlydHVhbGl6YXRpb24uaW5jCkBAIC0wLDAgKzEsMjAgQEAKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2xpbnV4LXlvY3RvOiIKKworU1JDX1VSSSArPSAiZmlsZTovL3h0LWNoZWNrc3VtLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8vZWJ0YWJsZXMuc2NjIFwKKwkgICAgZmlsZTovL3Zzd2l0Y2guc2NjIFwKKwkgICAgZmlsZTovL2x4Yy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL2RvY2tlci5zY2MgXAorCSAgICAiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2t2bScsICdmZWF0dXJlcy9rdm0vcWVtdS1rdm0tZW5hYmxlLnNjYycsICcnLCBkKX0iCisKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIm9wZW52c3dpdGNoIgorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdrdm0nLCAna3ZtJywgJycsIGQpfSIKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAna3ZtJywgJ2t2bS1hbWQnLCAnJywgZCl9IgorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdrdm0nLCAna3ZtLWludGVsJywgJycsIGQpfSIKKworIyBhdWZzIGtlcm5lbCBzdXBwb3J0IHJlcXVpcmVkIGZvciB4ZW4taW1hZ2UtbWluaW1hbAorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhdWZzJywgJyBmZWF0dXJlcy9hdWZzL2F1ZnMtZW5hYmxlLnNjYycsICcnLCBkKX0iCisKKyMgeGVuIGtlcm5lbCBzdXBwb3J0CitTUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICcgZmlsZTovL3hlbi5zY2MnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9jbmkvY25pX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvY25pL2NuaV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3YTgxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvY25pL2NuaV9naXQuYmIKQEAgLTAsMCArMSw5NSBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pIgorU1VNTUFSWSA9ICJDb250YWluZXIgTmV0d29yayBJbnRlcmZhY2UgLSBuZXR3b3JraW5nIGZvciBMaW51eCBjb250YWluZXJzIgorREVTQ1JJUFRJT04gPSAiQ05JIChDb250YWluZXIgTmV0d29yayBJbnRlcmZhY2UpLCBhIENsb3VkIE5hdGl2ZSBDb21wdXRpbmcgXAorRm91bmRhdGlvbiBwcm9qZWN0LCBjb25zaXN0cyBvZiBhIHNwZWNpZmljYXRpb24gYW5kIGxpYnJhcmllcyBmb3Igd3JpdGluZyBcCitwbHVnaW5zIHRvIGNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMgaW4gTGludXggY29udGFpbmVycywgYWxvbmcgd2l0aCBhIFwKK251bWJlciBvZiBzdXBwb3J0ZWQgcGx1Z2lucy4gQ05JIGNvbmNlcm5zIGl0c2VsZiBvbmx5IHdpdGggbmV0d29yayBjb25uZWN0aXZpdHkgXAorb2YgY29udGFpbmVycyBhbmQgcmVtb3ZpbmcgYWxsb2NhdGVkIHJlc291cmNlcyB3aGVuIHRoZSBjb250YWluZXIgaXMgZGVsZXRlZC4gXAorQmVjYXVzZSBvZiB0aGlzIGZvY3VzLCBDTkkgaGFzIGEgd2lkZSByYW5nZSBvZiBzdXBwb3J0IGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBcCitpcyBzaW1wbGUgdG8gaW1wbGVtZW50LiBcCisiCisKK1NSQ1JFVl9jbmkgPSAiNGI5ZTExYTUyNjZmZTUwMjIyZWQwMGM1OTczYzZlYTRhMzg0YTRiYiIKK1NSQ1JFVl9wbHVnaW5zID0gImMyMzhjOTNiNWU3YzY4MWYxOTM1ZmY4MTNiMzBlODJmOTZmNmMzNjciCitTUkNfVVJJID0gIlwKKwlnaXQ6Ly9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pLmdpdDtub2JyYW5jaD0xO25hbWU9Y25pIFwKKyAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL3BsdWdpbnMuZ2l0O25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1wbHVnaW5zO25hbWU9cGx1Z2lucyBcCisJIgorCitSUFJPVklERVNfJHtQTn0gKz0gImt1YmVybmV0ZXMtY25pIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PWZhODE4YTI1OWNiZWQ3Y2U4YmMyYTIyZDM1YTQ2NGZjIgorCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCitQViA9ICIwLjYuMCtnaXQke1NSQ1JFVl9jbml9IgorCitpbmhlcml0IGdvCitpbmhlcml0IGdvYXJjaAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0OiR7U30vc3JjL2ltcG9ydC92ZW5kb3IiCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENGTEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSIiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJIyBsaW5rIGZpeHVwcyBmb3IgY29tcGlsYXRpb24KKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCXJtIC1yZiAke1N9L3NyYy9pbXBvcnQvcGx1Z2lucworCXJtIC1yZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9wbHVnaW5zCisKKwlta2RpciAtcCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9jbmkKKworCWxuIC1zZiAuLi8uLi8uLi8uLi9saWJjbmkgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pL2xpYmNuaQorCWxuIC1zZiAuLi8uLi8uLi8uLi9wa2cgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pL3BrZworCWxuIC1zZiAuLi8uLi8uLi8uLi9jbml0b29sICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS9jbml0b29sCisJbG4gLXNmICR7V09SS0RJUn0vcGx1Z2lucyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9wbHVnaW5zCisKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7TERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCWNkICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS9saWJjbmkKKwlnbyBidWlsZAorCisJY2QgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pL2NuaXRvb2wKKwlnbyBidWlsZAorCisJY2QgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvcGx1Z2lucy8KKwlQTFVHSU5TPSJwbHVnaW5zL21ldGEvKiBwbHVnaW5zL21haW4vKiIKKwlta2RpciAtcCAke1dPUktESVJ9L3BsdWdpbnMvYmluLworCWZvciBwIGluICRQTFVHSU5TOyBkbworCSAgICBwbHVnaW49IiQoYmFzZW5hbWUgIiRwIikiCisJICAgIGVjaG8gImJ1aWxkaW5nOiAkcCIKKwkgICAgZ28gYnVpbGQgLW8gJHtXT1JLRElSfS9wbHVnaW5zL2Jpbi8kcGx1Z2luIGdpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9wbHVnaW5zLyRwCisJZG9uZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIGxvY2FsYmluZGlyPSIvb3B0L2NuaS9iaW4iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2FsYmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2NuaS9uZXQuZAorCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zcmMvaW1wb3J0L2NuaXRvb2wvY25pdG9vbCAke0R9LyR7bG9jYWxiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgLUQgJHtXT1JLRElSfS9wbHVnaW5zL2Jpbi8qICR7RH0vJHtsb2NhbGJpbmRpcn0KK30KKworRklMRVNfJHtQTn0gKz0gIi9vcHQvY25pL2Jpbi8qIgorCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJsZGZsYWdzIGFscmVhZHktc3RyaXBwZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL2ZpbGVzLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL2ZpbGVzLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ2NmUxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvbmV0bnMvZmlsZXMvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaApAQCAtMCwwICsxLDc3IEBACitGcm9tIGQ1YzMxOWJiNjExNTVkOTRiZWYyNTcxYTA5NWQ4Mjk4M2Q3ODZiOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogRnJpLCAxMyBPY3QgMjAxNyAxNzo1ODoxMSArMDAwMAorU3ViamVjdDogW1BBVENIXSBVc2UgY29ycmVjdCBnbyBjcm9zcy1jb21waWxlcgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCistLS0KKyBNYWtlZmlsZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggY2I5YTQ2ZC4uNjMzZjg4NCAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvTWFrZWZpbGUKKysrKyBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKK0BAIC0zMywxMiArMzMsMTIgQEAgYnVpbGQ6ICQoTkFNRSkgIyMgQnVpbGRzIGEgZHluYW1pYyBleGVjdXRhYmxlIG9yIHBhY2thZ2UKKyAKKyAkKE5BTUUpOiAqLmdvIFZFUlNJT04KKyAJQGVjaG8gIisgJEAiCistCWdvIGJ1aWxkIC10YWdzICIkKEJVSUxEVEFHUykiICR7R09fTERGTEFHU30gLW8gJChOQU1FKSAuCisrCSQoR08pIGJ1aWxkIC10YWdzICIkKEJVSUxEVEFHUykiICR7R09fTERGTEFHU30gLW8gJChOQU1FKSAuCisgCisgLlBIT05ZOiBzdGF0aWMKKyBzdGF0aWM6ICMjIEJ1aWxkcyBhIHN0YXRpYyBleGVjdXRhYmxlCisgCUBlY2hvICIrICRAIgorLQlDR09fRU5BQkxFRD0wIGdvIGJ1aWxkIFwKKysJQ0dPX0VOQUJMRUQ9MCAkKEdPKSBidWlsZCBcCisgCQkJCS10YWdzICIkKEJVSUxEVEFHUykgc3RhdGljX2J1aWxkIiBcCisgCQkJCSR7R09fTERGTEFHU19TVEFUSUN9IC1vICQoTkFNRSkgLgorIAorQEAgLTU1LDIxICs1NSwyMSBAQCBsaW50OiAjIyBWZXJpZmllcyBgZ29saW50YCBwYXNzZXMKKyAuUEhPTlk6IHRlc3QKKyB0ZXN0OiAjIyBSdW5zIHRoZSBnbyB0ZXN0cworIAlAZWNobyAiKyAkQCIKKy0JQGdvIHRlc3QgLXYgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28iICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorKwlAJChHTykgdGVzdCAtdiAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyIgJChzaGVsbCAkKEdPKSBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisgCisgLlBIT05ZOiB2ZXQKKyB2ZXQ6ICMjIFZlcmlmaWVzIGBnbyB2ZXRgIHBhc3NlcworIAlAZWNobyAiKyAkQCIKKy0JQGdvIHZldCAkKHNoZWxsIGdvIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcikgfCBncmVwIC12ICcucGIuZ286JyB8IHRlZSAvZGV2L3N0ZGVycgorKwlAJChHTykgdmV0ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKSB8IGdyZXAgLXYgJy5wYi5nbzonIHwgdGVlIC9kZXYvc3RkZXJyCisgCisgLlBIT05ZOiBpbnN0YWxsCisgaW5zdGFsbDogIyMgSW5zdGFsbHMgdGhlIGV4ZWN1dGFibGUgb3IgcGFja2FnZQorIAlAZWNobyAiKyAkQCIKKy0JQGdvIGluc3RhbGwgLgorKwlAJChHTykgaW5zdGFsbCAuCisgCisgZGVmaW5lIGJ1aWxkcHJldHR5CisgbWtkaXIgLXAgJChCVUlMRERJUikvJCgxKS8kKDIpOworLUdPT1M9JCgxKSBHT0FSQ0g9JCgyKSBDR09fRU5BQkxFRD0wIGdvIGJ1aWxkIFwKKytHT09TPSQoMSkgR09BUkNIPSQoMikgQ0dPX0VOQUJMRUQ9MCAkKEdPKSBidWlsZCBcCisgCSAtbyAkKEJVSUxERElSKS8kKDEpLyQoMikvJChOQU1FKSBcCisgCSAtYSAtdGFncyAiJChCVUlMRFRBR1MpIHN0YXRpY19idWlsZCBuZXRnbyIgXAorIAkgLWluc3RhbGxzdWZmaXggbmV0Z28gJHtHT19MREZMQUdTX1NUQVRJQ30gLjsKK0BAIC04Myw3ICs4Myw3IEBAIGNyb3NzOiAqLmdvIFZFUlNJT04gIyMgQnVpbGRzIHRoZSBjcm9zcy1jb21waWxlZCBiaW5hcmllcywgY3JlYXRpbmcgYSBjbGVhbiBkaXJlCisgCSQoZm9yZWFjaCBHT09TQVJDSCwkKEdPT1NBUkNIRVMpLCAkKGNhbGwgYnVpbGRwcmV0dHksJChzdWJzdCAvLCwkKGRpciAkKEdPT1NBUkNIKSkpLCQobm90ZGlyICQoR09PU0FSQ0gpKSkpCisgCisgZGVmaW5lIGJ1aWxkcmVsZWFzZQorLUdPT1M9JCgxKSBHT0FSQ0g9JCgyKSBDR09fRU5BQkxFRD0wIGdvIGJ1aWxkIFwKKytHT09TPSQoMSkgR09BUkNIPSQoMikgQ0dPX0VOQUJMRUQ9MCAkKEdPKSBidWlsZCBcCisgCSAtbyAkKEJVSUxERElSKS8kKE5BTUUpLSQoMSktJCgyKSBcCisgCSAtYSAtdGFncyAiJChCVUlMRFRBR1MpIHN0YXRpY19idWlsZCBuZXRnbyIgXAorIAkgLWluc3RhbGxzdWZmaXggbmV0Z28gJHtHT19MREZMQUdTX1NUQVRJQ30gLjsKK0BAIC05OSw3ICs5OSw3IEBAIHJlbGVhc2U6ICouZ28gVkVSU0lPTiAjIyBCdWlsZHMgdGhlIGNyb3NzLWNvbXBpbGVkIGJpbmFyaWVzLCBuYW1pbmcgdGhlbSBpbiBzdWNoCisgLlBIT05ZOiBidW1wLXZlcnNpb24KKyBCVU1QIDo9IHBhdGNoCisgYnVtcC12ZXJzaW9uOiAjIyBCdW1wIHRoZSB2ZXJzaW9uIGluIHRoZSB2ZXJzaW9uIGZpbGUuIFNldCBLSU5EIHRvIFsgcGF0Y2ggfCBtYWpvciB8IG1pbm9yIF0KKy0JQGdvIGdldCAtdSBnaXRodWIuY29tL2plc3NmcmF6L2p1bmsvc2VtYnVtcCAjIHVwZGF0ZSBzZW1idW1wIHRvb2wKKysJQCQoR08pIGdldCAtdSBnaXRodWIuY29tL2plc3NmcmF6L2p1bmsvc2VtYnVtcCAjIHVwZGF0ZSBzZW1idW1wIHRvb2wKKyAJJChldmFsIE5FV19WRVJTSU9OID0gJChzaGVsbCBzZW1idW1wIC0ta2luZCAkKEJVTVApICQoVkVSU0lPTikpKQorIAlAZWNobyAiQnVtcGluZyBWRVJTSU9OIGZyb20gJChWRVJTSU9OKSB0byAkKE5FV19WRVJTSU9OKSIKKyAJZWNobyAkKE5FV19WRVJTSU9OKSA+IFZFUlNJT04KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9uZXRuc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL25ldG5zX2dpdC5iYgppbmRleCA2NDFkNTVmLi5kMzU4MzZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL25ldG5zX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL25ldG5zX2dpdC5iYgpAQCAtMSwxMSArMSwxNCBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pmcmF6ZWxsZS9uZXRucyIKIFNVTU1BUlkgPSAiUnVuYyBob29rIGZvciBzZXR0aW5nIHVwIGRlZmF1bHQgYnJpZGdlIG5ldHdvcmtpbmcuIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGNlNGM2YTRmMzJkNmVlNGE2OGUzYTc1MDZkYjNmMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9MjBjZTRjNmE0ZjMyZDZlZTRhNjhlM2E3NTA2ZGIzZjEiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRuczticmFuY2g9bWFzdGVyIgotU1JDUkVWID0gIjg1YjFhYjlmY2NjYmFhNDA0YTI2MzZiNTJhNDhiYmRlMDI0MzdjZjciCi1QViA9ICIwLjEuMCtnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRuczticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ1JFViA9ICI3NGUyM2EwZTVjNGU3YWMwMTFhYWZjYzQ2MjM1ODZjMTk2ZjFiM2VmIgorUFYgPSAiMC4yLjEiCitHT19JTVBPUlQgPSAiaW1wb3J0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yMCwxMiArMjMsMTMgQEAKIAkjIEdvIGxvb2tzIGluIGEgc3JjIGRpcmVjdG9yeSB1bmRlciBhbnkgZGlyZWN0b3J5IGluIEdPUEFUSCBidXQgbmV0bnMKIAkjIHVzZXMgJ3ZlbmRvcicgaW5zdGVhZCBvZiAndmVuZG9yL3NyYycuIFdlIGNhbiBmaXggdGhpcyB3aXRoIGEgc3ltbGluay4KIAkjCi0JIyBXZSBhbHNvIG5lZWQgdG8gbGluayBpbiB0aGUgaXBhbGxvY2F0b3IgZGlyZWN0b3J5IGFzIHRoYXQgaXMgbm90IHVuZGVyCi0JIyBhIHNyYyBkaXJlY3RvcnkuCi0JbG4gLXNmbiAuICIke1N9L3ZlbmRvci9zcmMiCi0JbWtkaXIgLXAgIiR7U30vdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L25ldG5zIgotCWxuIC1zZm4gIiR7U30vaXBhbGxvY2F0b3IiICIke1N9L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRucy9pcGFsbG9jYXRvciIKLQlleHBvcnQgR09QQVRIPSIke1N9L3ZlbmRvciIKKwkjIFdlIGFsc28gbmVlZCB0byBsaW5rIGluIHRoZSBpcGFsbG9jYXRvciBhbmQgdmVyc2lvbiBkaXJlY3RvcmllcyBhcworCSMgdGhleSBhcmUgbm90IHVuZGVyIHRoZSBzcmMgZGlyZWN0b3J5LgorCWxuIC1zZm4gLiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMiCisJbWtkaXIgLXAgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnMiCisJbG4gLXNmbiAiJHtTfS9zcmMvaW1wb3J0L2lwYWxsb2NhdG9yIiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRucy9pcGFsbG9jYXRvciIKKwlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvdmVyc2lvbiIgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnMvdmVyc2lvbiIKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgogCiAJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KIAkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCkBAIC0zNSwxMCArMzksMTEgQEAKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKKwljZCAke1N9L3NyYy9pbXBvcnQKIAlvZV9ydW5tYWtlIHN0YXRpYwogfQogCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAke1N9L25ldG5zICR7RH0vJHtzYmluZGlyfS9uZXRucworCWluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L25ldG5zICR7RH0vJHtzYmluZGlyfS9uZXRucwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9jb25maWd1cmUtT25seS1saW5rLWFnYWluc3QtbGlicGNhcC1vbi1GcmVlQlNELnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9jb25maWd1cmUtT25seS1saW5rLWFnYWluc3QtbGlicGNhcC1vbi1GcmVlQlNELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTQ0Yjg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvY29uZmlndXJlLU9ubHktbGluay1hZ2FpbnN0LWxpYnBjYXAtb24tRnJlZUJTRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZDMwZTcxNGNjYjlkMTNjYWYzOWQxNGQ1YjJmYzk1MjNiNjc4ZWQ1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlbiBQZmFmZiA8YmxwQG5pY2lyYS5jb20+Ci1EYXRlOiBUaHUsIDE0IE1hciAyMDEzIDE1OjIwOjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogT25seSBsaW5rIGFnYWluc3QgbGlicGNhcCBvbiBGcmVlQlNELgotCi1jb21taXQgZDMwZTcxNGNjYjlkMTNjYWYzOWQxNGQ1YjJmYzk1MjNiNjc4ZWQ1MSB1cHN0cmVhbQotaHR0cDovL2dpdC5vcGVudnN3aXRjaC5vcmcvZ2l0L29wZW52c3dpdGNoCi0KLU9uIG90aGVyIHBsYXRmb3JtcyB0aGVyZSBpcyBubyBiZW5lZml0IHRvIGxpbmtpbmcgYWdhaW5zdCBsaWJwY2FwLCBiZWNhdXNlCi1pdCBpcyBub3QgdXNlZC4KLQotU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAbmljaXJhLmNvbT4KLUNDOiBFZCBNYXN0ZSA8ZW1hc3RlQGZyZWVic2Qub3JnPgotLS0tCi0gYWNpbmNsdWRlLm00IHwgNyArKysrKystCi0gY29uZmlndXJlLmFjIHwgMyArLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggZjA2MTBjOS4uMTlhNDdkZCAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMSw2ICsxLDYgQEAKLSAjIC0qLSBhdXRvY29uZiAtKi0KLSAKLS0jIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBOaWNpcmEsIEluYy4KLSsjIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBOaWNpcmEsIEluYy4KLSAjCi0gIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLUBAIC0yOTUsNiArMjk1LDggQEAgQUNfREVGVU4oW09WU19DSEVDS19JRl9QQUNLRVRdLAotICAgIGZpXSkKLSAKLSBkbmwgQ2hlY2tzIGZvciBuZXQvaWZfZGwuaC4KLStkbmwKLStkbmwgKFdlIHVzZSB0aGlzIGFzIGEgcHJveHkgZm9yIGNoZWNraW5nIHdoZXRoZXIgd2UncmUgYnVpbGRpbmcgb24gRnJlZUJTRC4pCi0gQUNfREVGVU4oW09WU19DSEVDS19JRl9ETF0sCi0gICBbQUNfQ0hFQ0tfSEVBREVSKFtuZXQvaWZfZGwuaF0sCi0gICAgICAgICAgICAgICAgICAgIFtIQVZFX0lGX0RMPXllc10sCi1AQCAtMzAzLDYgKzMwNSw5IEBAIEFDX0RFRlVOKFtPVlNfQ0hFQ0tfSUZfRExdLAotICAgIGlmIHRlc3QgIiRIQVZFX0lGX0RMIiA9IHllczsgdGhlbgotICAgICAgIEFDX0RFRklORShbSEFWRV9JRl9ETF0sIFsxXSwKLSAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIG5ldC9pZl9kbC5oIGlzIGF2YWlsYWJsZS5dKQotKwotKyAgICAgICMgT24gRnJlZUJTRCB3ZSB1c2UgbGlicGNhcCB0byBhY2Nlc3MgbmV0d29yayBkZXZpY2VzLgotKyAgICAgIEFDX1NFQVJDSF9MSUJTKFtwY2FwX29wZW5fbGl2ZV0sIFtwY2FwXSkKLSAgICBmaV0pCi0gCi0gZG5sIENoZWNrcyBmb3IgYnVnZ3kgc3RydG9rX3IuCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxY2FjZDI5Li5iZDQ5MTc5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xLDQgKzEsNCBAQAotLSMgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIE5pY2lyYSwgSW5jLgotKyMgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIE5pY2lyYSwgSW5jLgotICMKLSAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotQEAgLTQ0LDcgKzQ0LDYgQEAgQUNfU1lTX0xBUkdFRklMRQotIEFDX1NFQVJDSF9MSUJTKFtwb3ddLCBbbV0pCi0gQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdKQotIEFDX1NFQVJDSF9MSUJTKFt0aW1lcl9jcmVhdGVdLCBbcnRdKQotLUFDX1NFQVJDSF9MSUJTKFtwY2FwX29wZW5fbGl2ZV0sIFtwY2FwXSkKLSAKLSBPVlNfQ0hFQ0tfRVNYCi0gT1ZTX0NIRUNLX0NPVkVSQUdFCi0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tbWFrZS1yZW1haW5pbmctc2NyaXB0cy11c2UtdXNyLWJpbi1lbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaAppbmRleCA2OGY0NmZmLi40NDQxYzFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaApAQCAtMzMsNyArMzMsNyBAQAogKysrIGIvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogIGltcG9ydCBvcy5wYXRoCiAgaW1wb3J0IHN5cwpAQCAtNDMsNyArNDMsNyBAQAogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogIGltcG9ydCBzeXMKICBpbXBvcnQgb3MucGF0aApAQCAtNTMsNyArNTMsNyBAQAogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycwogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgCiAgaW1wb3J0IHN5cwogIGltcG9ydCBvcy5wYXRoCkBAIC02Myw3ICs2Myw3IEBACiArKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCiBAQCAtMSw0ICsxLDQgQEAKIC0jISAvdXNyL2Jpbi9weXRob24KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKICAKICBpbXBvcnQgZ2V0b3B0CiAgaW1wb3J0IHN5cwpAQCAtNzMsNyArNzMsNyBAQAogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogIGltcG9ydCBzeXMKICBpbXBvcnQgb3MucGF0aApAQCAtODMsNyArODMsNyBAQAogKysrIGIvYnVpbGQtYXV4L3htbDJucm9mZgogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgTmljaXJhLCBJbmMuCiAgIwpAQCAtOTMsNyArOTMsNyBAQAogKysrIGIvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLW92ZXJsYXktZHJpdmVyCiBAQCAtMSw0ICsxLDQgQEAKIC0jISAvdXNyL2Jpbi9weXRob24KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKICAjIENvcHlyaWdodCAoQykgMjAxNSBOaWNpcmEsIEluYy4KICAjCiAgIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKQEAgLTEwMyw3ICsxMDMsNyBAQAogKysrIGIvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLXVuZGVybGF5LWRyaXZlcgogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgIyBDb3B5cmlnaHQgKEMpIDIwMTUgTmljaXJhLCBJbmMuCiAgIwogICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CkBAIC0xMTMsNyArMTEzLDcgQEAKICsrKyBiL292c2RiL292c2RiLWRvYwogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUgTmljaXJhLCBJbmMuCiAgIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMmIyYTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1zd2l0Y2gtcmVtYWluaW5nLXNjcmlwdHMtdG8tdXNlLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gMTc2NTI4Y2EzYThiNzZjOWQwYmI3MWIxZTU2ZWVlYmNjYzY1NWM3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMgTWF5IDIwMTcgMTA6Mzk6MTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHl0aG9uOiBzd2l0Y2ggcmVtYWluaW5nIHNjcmlwdHMgdG8gdXNlIHB5dGhvbjMKKworV29yayB0byByZW1vdmUgdGhlIG1haW4gb3BlbnZzd2l0Y2ggcGFja2FnZSdzIGRlcGVuZGVuY3kgb24gcHl0aG9uIDIuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CistLS0KKyBvZnByb3RvL2lwZml4LWdlbi1lbnRpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90ZXN0LWw3LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB1dGlsaXRpZXMvY2hlY2twYXRjaC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB1dGlsaXRpZXMvb3ZzLWRldi5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB1dGlsaXRpZXMvb3ZzLXBpcGVnZW4ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB2dGVwL292cy12dGVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB4ZW5zZXJ2ZXIvZXRjX3hhcGkuZF9wbHVnaW5zX29wZW52c3dpdGNoLWNmZy11cGRhdGUgICB8IDIgKy0KKyB4ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX2ludGVyZmFjZS1yZWNvbmZpZ3VyZSB8IDIgKy0KKyB4ZW5zZXJ2ZXIvdXNyX3NoYXJlX29wZW52c3dpdGNoX3NjcmlwdHNfb3ZzLXhhcGktc3luYyB8IDIgKy0KKyA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29mcHJvdG8vaXBmaXgtZ2VuLWVudGl0aWVzIGIvb2Zwcm90by9pcGZpeC1nZW4tZW50aXRpZXMKK2luZGV4IDBiZTcxOTkuLmQyY2NlNDIgMTAwNzU1CistLS0gYS9vZnByb3RvL2lwZml4LWdlbi1lbnRpdGllcworKysrIGIvb2Zwcm90by9pcGZpeC1nZW4tZW50aXRpZXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIENvcHlyaWdodCAoQykgMjAxMiBOaWNpcmEsIEluYy4KKyAjCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1sNy5weSBiL3Rlc3RzL3Rlc3QtbDcucHkKK2luZGV4IGQ3ODU0YTEuLmYwOWRlZmIgMTAwNzU1CistLS0gYS90ZXN0cy90ZXN0LWw3LnB5CisrKysgYi90ZXN0cy90ZXN0LWw3LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgTmljaXJhLCBJbmMuCisgIworICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CitkaWZmIC0tZ2l0IGEvdXRpbGl0aWVzL2NoZWNrcGF0Y2gucHkgYi91dGlsaXRpZXMvY2hlY2twYXRjaC5weQoraW5kZXggMjZlYjVjMy4uMmUxOTMyYiAxMDA3NTUKKy0tLSBhL3V0aWxpdGllcy9jaGVja3BhdGNoLnB5CisrKysgYi91dGlsaXRpZXMvY2hlY2twYXRjaC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChjKSAyMDE2IFJlZCBIYXQsIEluYy4KKyAjCisgIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK2RpZmYgLS1naXQgYS91dGlsaXRpZXMvb3ZzLWRldi5weSBiL3V0aWxpdGllcy9vdnMtZGV2LnB5CitpbmRleCA5Y2UwZjA0Li44MzllMTNlIDEwMDc1NQorLS0tIGEvdXRpbGl0aWVzL292cy1kZXYucHkKKysrKyBiL3V0aWxpdGllcy9vdnMtZGV2LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgTmljaXJhLCBJbmMuCisgIworICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CitkaWZmIC0tZ2l0IGEvdXRpbGl0aWVzL292cy1waXBlZ2VuLnB5IGIvdXRpbGl0aWVzL292cy1waXBlZ2VuLnB5CitpbmRleCA0YmYyNDBmLi4yYThmMTNlIDEwMDc1NQorLS0tIGEvdXRpbGl0aWVzL292cy1waXBlZ2VuLnB5CisrKysgYi91dGlsaXRpZXMvb3ZzLXBpcGVnZW4ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE0LCAyMDE1IE5pY2lyYSwgSW5jLgorICMKKyAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworZGlmZiAtLWdpdCBhL3Z0ZXAvb3ZzLXZ0ZXAgYi92dGVwL292cy12dGVwCitpbmRleCBmZDY1MmQ0Li4xOWQ2M2Y5IDEwMDc1NQorLS0tIGEvdnRlcC9vdnMtdnRlcAorKysrIGIvdnRlcC9vdnMtdnRlcAorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIyBDb3B5cmlnaHQgKEMpIDIwMTMgTmljaXJhLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgIworICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CitkaWZmIC0tZ2l0IGEveGVuc2VydmVyL2V0Y194YXBpLmRfcGx1Z2luc19vcGVudnN3aXRjaC1jZmctdXBkYXRlIGIveGVuc2VydmVyL2V0Y194YXBpLmRfcGx1Z2luc19vcGVudnN3aXRjaC1jZmctdXBkYXRlCitpbmRleCBlNzQwNGUzLi41ZWRhZDc2IDEwMDc1NQorLS0tIGEveGVuc2VydmVyL2V0Y194YXBpLmRfcGx1Z2luc19vcGVudnN3aXRjaC1jZmctdXBkYXRlCisrKysgYi94ZW5zZXJ2ZXIvZXRjX3hhcGkuZF9wbHVnaW5zX29wZW52c3dpdGNoLWNmZy11cGRhdGUKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyB4YXBpIHBsdWdpbiBzY3JpcHQgdG8gdXBkYXRlIHRoZSBjYWNoZSBvZiBjb25maWd1cmF0aW9uIGl0ZW1zIGluIHRoZQorICMgb3ZzLXZzd2l0Y2hkIGNvbmZpZ3VyYXRpb24gdGhhdCBhcmUgbWFuYWdlZCBpbiB0aGUgeGFwaSBkYXRhYmFzZSB3aGVuCitkaWZmIC0tZ2l0IGEveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19pbnRlcmZhY2UtcmVjb25maWd1cmUgYi94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX2ludGVyZmFjZS1yZWNvbmZpZ3VyZQoraW5kZXggZWE0YTc0Mi4uYzY3NDVlZSAxMDA3NTUKKy0tLSBhL3hlbnNlcnZlci9vcHRfeGVuc291cmNlX2xpYmV4ZWNfaW50ZXJmYWNlLXJlY29uZmlndXJlCisrKysgYi94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX2ludGVyZmFjZS1yZWNvbmZpZ3VyZQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIENvcHlyaWdodCAoYykgMjAwOCwyMDA5IENpdHJpeCBTeXN0ZW1zLCBJbmMuCisgIworZGlmZiAtLWdpdCBhL3hlbnNlcnZlci91c3Jfc2hhcmVfb3BlbnZzd2l0Y2hfc2NyaXB0c19vdnMteGFwaS1zeW5jIGIveGVuc2VydmVyL3Vzcl9zaGFyZV9vcGVudnN3aXRjaF9zY3JpcHRzX292cy14YXBpLXN5bmMKK2luZGV4IGE3NzZjMDAuLmQ1ZmY4YWYgMTAwNzU1CistLS0gYS94ZW5zZXJ2ZXIvdXNyX3NoYXJlX29wZW52c3dpdGNoX3NjcmlwdHNfb3ZzLXhhcGktc3luYworKysrIGIveGVuc2VydmVyL3Vzcl9zaGFyZV9vcGVudnN3aXRjaF9zY3JpcHRzX292cy14YXBpLXN5bmMKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIE5pY2lyYSwgSW5jLgorICMKKyAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1Db252ZXJ0LXByaW50LXN0YXRlbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1Db252ZXJ0LXByaW50LXN0YXRlbWVudHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYxOTc1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDEtUHl0aG9uMy1jb21wYXRpYmlsaXR5LUNvbnZlcnQtcHJpbnQtc3RhdGVtZW50cy5wYXRjaApAQCAtMCwwICsxLDEyNjQgQEAKK0Zyb20gYzVjMThmOWM1ZjFiNzIxN2Q0M2FmNDNiZTk3MzZjMTc2MmM3ZWJiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IENvbnZlcnQgcHJpbnQgc3RhdGVtZW50cworCitDb21taXQgZDM0YTFjYzAyNTM2ZjlhODEyNTE3YTcxYWNjZWMzZmJkM2M2Yzk4YiBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAorCitUaGlzIHBhdGNoIGZpeGVzIHVwIGFsbCB0aGUgcHJpbnQgc3RhdGVtZW50cyB0byB3b3JrIHdpdGggcHl0aG9uMyBvcgorcHl0aG9uMi4KKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CistLS0KKyBidWlsZC1hdXgvY2hlY2stc3RydWN0cyAgICAgICB8ICAgNCArLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIHwgIDY4ICsrKy0tLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMgIHwgICAyICstCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcyAgfCAgIDIgKy0KKyBidWlsZC1hdXgvZXh0cmFjdC1vZnAtbXNncyAgICB8ICAgNiArLQorIG92c2RiL292c2RiLWRvYyAgICAgICAgICAgICAgIHwgICA2ICstCisgb3ZzZGIvb3ZzZGItaWRsYy5pbiAgICAgICAgICAgfCA1MjMgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgNyBmaWxlcyBjaGFuZ2VkLCAzMDYgaW5zZXJ0aW9ucygrKSwgMzA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMgYi9idWlsZC1hdXgvY2hlY2stc3RydWN0cworaW5kZXggZjc5ZjIzNS4uYmFlNTExZiAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzCisrKysgYi9idWlsZC1hdXgvY2hlY2stc3RydWN0cworQEAgLTIxMSw3ICsyMTEsNyBAQCBkZWYgY2hlY2tTdHJ1Y3RzKCk6CisgCisgICAgIGlmICctLWhlbHAnIGluIHN5cy5hcmd2OgorICAgICAgICAgYXJndjAgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQorLSAgICAgICAgcHJpbnQgJycnXAorKyAgICAgICAgcHJpbnQoJycnXAorICUoYXJndjApcywgZm9yIGNoZWNraW5nIHN0cnVjdCBhbmQgc3RydWN0IG1lbWJlciBhbGlnbm1lbnQKKyB1c2FnZTogJShhcmd2MClzIC1JcGF0aCBIRUFERVIgW0hFQURFUl0uLi4KKyAKK0BAIC0yMjYsNyArMjI2LDcgQEAgYXNzZXJ0aW9ucyB1c2luZyBPRlBfQVNTRVJULgorIAorIFRoaXMgcHJvZ3JhbSBpcyBzcGVjaWFsaXplZCBmb3IgcmVhZGluZyBPcGVuIHZTd2l0Y2gncyBPcGVuRmxvdyBoZWFkZXIKKyBmaWxlcy4gIEl0IHdpbGwgbm90IHdvcmsgb24gYXJiaXRyYXJ5IGhlYWRlciBmaWxlcyB3aXRob3V0IGV4dGVuc2lvbnMuXAorLScnJyAlIHsiYXJndjAiOiBhcmd2MH0KKysnJycgJSB7ImFyZ3YwIjogYXJndjB9KQorICAgICAgICAgc3lzLmV4aXQoMCkKKyAKKyAgICAgZ2xvYmFsIGZpbGVOYW1lCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworaW5kZXggMDA2MmFiOC4uODc0ZTZiNCAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCisrKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworQEAgLTY3LDcgKzY3LDcgQEAgZGVmIGZhdGFsKG1zZyk6CisgCisgZGVmIHVzYWdlKCk6CisgICAgIGFyZ3YwID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKKy0gICAgcHJpbnQgKCcnJ1wKKysgICAgcHJpbnQoJycnXAorICUoYXJndjApcywgZm9yIGV4dHJhY3RpbmcgT3BlbkZsb3cgYWN0aW9uIGRhdGEKKyB1c2FnZTogJShhcmd2MClzIE9GUF9BQ1RJT05TLkMgWy0tcHJvdG90eXBlcyB8IC0tZGVmaW5pdGlvbnNdCisgCitAQCAtMjM4LDM2ICsyMzgsMzYgQEAgZGVmIGV4dHJhY3Rfb2ZwX2FjdGlvbnMoZm4sIGRlZmluaXRpb25zKToKKyAgICAgaWYgbl9lcnJvcnM6CisgICAgICAgICBzeXMuZXhpdCgxKQorIAorLSAgICBwcmludCAiIiJcCisrICAgIHByaW50KCIiIlwKKyAvKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseTsgZG8gbm90IG1vZGlmeSEgICAgIC0qLSBidWZmZXItcmVhZC1vbmx5OiB0IC0qLSAqLworLSIiIgorKyIiIikKKyAKKyAgICAgaWYgZGVmaW5pdGlvbnM6CistICAgICAgICBwcmludCAiLyogVmVyaWZ5IHRoYXQgc3RydWN0cyB1c2VkIGFzIGFjdGlvbnMgYXJlIHJlYXNvbmFibGUgc2l6ZXMuICovIgorKyAgICAgICAgcHJpbnQoIi8qIFZlcmlmeSB0aGF0IHN0cnVjdHMgdXNlZCBhcyBhY3Rpb25zIGFyZSByZWFzb25hYmxlIHNpemVzLiAqLyIpCisgICAgICAgICBmb3IgcyBpbiBzb3J0ZWQoYXJnX3N0cnVjdHMpOgorLSAgICAgICAgICAgIHByaW50ICJCVUlMRF9BU1NFUlRfREVDTChzaXplb2YoJXMpICUlIE9GUF9BQ1RJT05fQUxJR04gPT0gMCk7IiAlIHMKKysgICAgICAgICAgICBwcmludCgiQlVJTERfQVNTRVJUX0RFQ0woc2l6ZW9mKCVzKSAlJSBPRlBfQUNUSU9OX0FMSUdOID09IDApOyIgJSBzKQorIAorLSAgICAgICAgcHJpbnQgIlxuc3RhdGljIHN0cnVjdCBvZnBhY3RfcmF3X2luc3RhbmNlIGFsbF9yYXdfaW5zdGFuY2VzW10gPSB7IgorKyAgICAgICAgcHJpbnQoIlxuc3RhdGljIHN0cnVjdCBvZnBhY3RfcmF3X2luc3RhbmNlIGFsbF9yYXdfaW5zdGFuY2VzW10gPSB7IikKKyAgICAgICAgIGZvciB2ZW5kb3IgaW4gZG9tYWluOgorICAgICAgICAgICAgIGZvciB0eXBlXyBpbiBkb21haW5bdmVuZG9yXToKKyAgICAgICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gZG9tYWluW3ZlbmRvcl1bdHlwZV9dOgorICAgICAgICAgICAgICAgICAgICAgZCA9IGRvbWFpblt2ZW5kb3JdW3R5cGVfXVt2ZXJzaW9uXQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICB7IHsgMHglMDh4LCAlMmQsIDB4JTAyeCB9LCAiICUgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvciwgdHlwZV8sIHZlcnNpb24pCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgJXMsIiAlIGRbImVudW0iXQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgIEhNQVBfTk9ERV9OVUxMX0lOSVRJQUxJWkVSLCIKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICBITUFQX05PREVfTlVMTF9JTklUSUFMSVpFUiwiCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgJXMsIiAlIGRbIm1pbl9sZW5ndGgiXQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICVzLCIgJSBkWyJtYXhfbGVuZ3RoIl0KKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAlcywiICUgZFsiYXJnX29mcyJdCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgJXMsIiAlIGRbImFyZ19sZW4iXQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgIFwiJXNcIiwiICUgcmUuc3ViKCdfUkFXWzAtOV0qJywgJycsIGRbImVudW0iXSwgMSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgeyB7IDB4JTA4eCwgJTJkLCAweCUwMnggfSwgIiAlICgKKysgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3IsIHR5cGVfLCB2ZXJzaW9uKSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAlcywiICUgZFsiZW51bSJdKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgIEhNQVBfTk9ERV9OVUxMX0lOSVRJQUxJWkVSLCIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgSE1BUF9OT0RFX05VTExfSU5JVElBTElaRVIsIikKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAlcywiICUgZFsibWluX2xlbmd0aCJdKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICVzLCIgJSBkWyJtYXhfbGVuZ3RoIl0pCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgJXMsIiAlIGRbImFyZ19vZnMiXSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAlcywiICUgZFsiYXJnX2xlbiJdKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgIFwiJXNcIiwiICUgcmUuc3ViKCdfUkFXWzAtOV0qJywgJycsIGRbImVudW0iXSwgMSkpCisgICAgICAgICAgICAgICAgICAgICBpZiBkWyJkZXByZWNhdGlvbiJdOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICBcIiVzXCIsIiAlIHJlLnN1YihyJyhbIlxcXSknLCByJ1xcXDEnLCBkWyJkZXByZWNhdGlvbiJdKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICBcIiVzXCIsIiAlIHJlLnN1YihyJyhbIlxcXSknLCByJ1xcXDEnLCBkWyJkZXByZWNhdGlvbiJdKSkKKyAgICAgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgIE5VTEwsIgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9LCIKKy0gICAgICAgIHByaW50ICJ9OyI7CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgIE5VTEwsIikKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSwiKQorKyAgICAgICAgcHJpbnQoIn07IikKKyAKKyAgICAgZm9yIHZlcnNpb25zIGluIGVudW1zLnZhbHVlcygpOgorICAgICAgICAgbmVlZF9vZnBfdmVyc2lvbiA9IEZhbHNlCitAQCAtMzE0LDExICszMTQsMTEgQEAgZGVmIGV4dHJhY3Rfb2ZwX2FjdGlvbnMoZm4sIGRlZmluaXRpb25zKToKKyAgICAgICAgICAgICBkZWNsICs9ICJ9IgorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBkZWNsICs9ICI7IgorLSAgICAgICAgcHJpbnQgZGVjbAorLSAgICAgICAgcHJpbnQKKysgICAgICAgIHByaW50KGRlY2wpCisrICAgICAgICBwcmludCgiIikKKyAKKyAgICAgaWYgZGVmaW5pdGlvbnM6CistICAgICAgICBwcmludCAiIiJcCisrICAgICAgICBwcmludCgiIiJcCisgc3RhdGljIGVudW0gb2ZwZXJyCisgb2ZwYWN0X2RlY29kZShjb25zdCBzdHJ1Y3Qgb2ZwX2FjdGlvbl9oZWFkZXIgKmEsIGVudW0gb2ZwX3Jhd19hY3Rpb25fdHlwZSByYXcsCisgICAgICAgICAgICAgICBlbnVtIG9mcF92ZXJzaW9uIHZlcnNpb24sIHVpbnQ2NF90IGFyZywKK0BAIC0zMjYsMTQgKzMyNiwxNCBAQCBvZnBhY3RfZGVjb2RlKGNvbnN0IHN0cnVjdCBvZnBfYWN0aW9uX2hlYWRlciAqYSwgZW51bSBvZnBfcmF3X2FjdGlvbl90eXBlIHJhdywKKyAgICAgICAgICAgICAgIHVpbnQ2NF90ICp0bHZfYml0bWFwLCBzdHJ1Y3Qgb2ZwYnVmICpvdXQpCisgeworICAgICBzd2l0Y2ggKHJhdykge1wKKy0iIiIKKysiIiIpCisgICAgICAgICBmb3IgdmVyc2lvbnMgaW4gZW51bXMudmFsdWVzKCk6CisgICAgICAgICAgICAgZW51bSA9IHZlcnNpb25zWzBdWyJlbnVtIl0KKy0gICAgICAgICAgICBwcmludCAiICAgIGNhc2UgJXM6IiAlIGVudW0KKysgICAgICAgICAgICBwcmludCgiICAgIGNhc2UgJXM6IiAlIGVudW0pCisgICAgICAgICAgICAgYmFzZV9hcmd0eXBlID0gdmVyc2lvbnNbMF1bImJhc2VfYXJndHlwZSJdCisgICAgICAgICAgICAgYXJnX3ZsX21mZl9tYXAgPSB2ZXJzaW9uc1swXVsiYXJnX3ZsX21mZl9tYXAiXQorICAgICAgICAgICAgIGlmIGJhc2VfYXJndHlwZSA9PSAndm9pZCc6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIHJldHVybiBkZWNvZGVfJXMob3V0KTsiICUgZW51bQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICByZXR1cm4gZGVjb2RlXyVzKG91dCk7IiAlIGVudW0pCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgaWYgYmFzZV9hcmd0eXBlLnN0YXJ0c3dpdGgoJ3N0cnVjdCcpOgorICAgICAgICAgICAgICAgICAgICAgYXJnID0gIkFMSUdORURfQ0FTVChjb25zdCAlcyAqLCBhKSIgJSBiYXNlX2FyZ3R5cGUKK0BAIC0zNDQsMTYgKzM0NCwxNiBAQCBvZnBhY3RfZGVjb2RlKGNvbnN0IHN0cnVjdCBvZnBfYWN0aW9uX2hlYWRlciAqYSwgZW51bSBvZnBfcmF3X2FjdGlvbl90eXBlIHJhdywKKyAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gImFyZyIKKyAgICAgICAgICAgICAgICAgaWYgYXJnX3ZsX21mZl9tYXA6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICByZXR1cm4gZGVjb2RlXyVzKCVzLCB2ZXJzaW9uLCB2bF9tZmZfbWFwLCB0bHZfYml0bWFwLCBvdXQpOyIgJSAoZW51bSwgYXJnKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgcmV0dXJuIGRlY29kZV8lcyglcywgdmVyc2lvbiwgdmxfbWZmX21hcCwgdGx2X2JpdG1hcCwgb3V0KTsiICUgKGVudW0sIGFyZykpCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICByZXR1cm4gZGVjb2RlXyVzKCVzLCB2ZXJzaW9uLCBvdXQpOyIgJSAoZW51bSwgYXJnKQorLSAgICAgICAgICAgIHByaW50CistICAgICAgICBwcmludCAiIiJcCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICByZXR1cm4gZGVjb2RlXyVzKCVzLCB2ZXJzaW9uLCBvdXQpOyIgJSAoZW51bSwgYXJnKSkKKysgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgIHByaW50KCIiIlwKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIE9WU19OT1RfUkVBQ0hFRCgpOworICAgICB9CisgfVwKKy0iIiIKKysiIiIpCisgICAgIGVsc2U6CisgICAgICAgICBmb3IgdmVyc2lvbnMgaW4gZW51bXMudmFsdWVzKCk6CisgICAgICAgICAgICAgZW51bSA9IHZlcnNpb25zWzBdWyJlbnVtIl0KK0BAIC0zNjgsMTUgKzM2OCwxNSBAQCBvZnBhY3RfZGVjb2RlKGNvbnN0IHN0cnVjdCBvZnBfYWN0aW9uX2hlYWRlciAqYSwgZW51bSBvZnBfcmF3X2FjdGlvbl90eXBlIHJhdywKKyAgICAgICAgICAgICAgICAgaWYgYXJnX3ZsX21mZl9tYXA6CisgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGUgKz0gJ2NvbnN0IHN0cnVjdCB2bF9tZmZfbWFwICosIHVpbnQ2NF90ICosICcKKyAgICAgICAgICAgICBwcm90b3R5cGUgKz0gInN0cnVjdCBvZnBidWYgKik7IgorLSAgICAgICAgICAgIHByaW50IHByb3RvdHlwZQorKyAgICAgICAgICAgIHByaW50KHByb3RvdHlwZSkKKyAKKy0gICAgICAgIHByaW50ICIiIgorKyAgICAgICAgcHJpbnQoIiIiCisgc3RhdGljIGVudW0gb2ZwZXJyIG9mcGFjdF9kZWNvZGUoY29uc3Qgc3RydWN0IG9mcF9hY3Rpb25faGVhZGVyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBvZnBfcmF3X2FjdGlvbl90eXBlIHJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG9mcF92ZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgYXJnLCBjb25zdCBzdHJ1Y3QgdmxfbWZmX21hcCAqdmxfbWZmX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqdGx2X2JpdG1hcCwgc3RydWN0IG9mcGJ1ZiAqb3V0KTsKKy0iIiIKKysiIiIpCisgCisgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAgaWYgJy0taGVscCcgaW4gc3lzLmFyZ3Y6CitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKK2luZGV4IDIzMTJiNzYuLjMzNmEyNDAgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCisrKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCitAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZwZXJyX2RvbWFpbiAlcyA9IHsKKyAgICAgICAgICAgICAgICAgdmVuZG9yLCB0eXBlXywgY29kZSA9IG1hcFtlbnVtXQorICAgICAgICAgICAgICAgICBpZiBjb2RlID09IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICBjb2RlID0gLTEKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgeyAlIzh4LCAlMmQsICUzZCB9LCAvKiAlcyAqLyIgJSAodmVuZG9yLCB0eXBlXywgY29kZSwgZW51bSkKKysgICAgICAgICAgICAgICAgcHJpbnQgKCIgICAgICAgIHsgJSM4eCwgJTJkLCAlM2QgfSwgLyogJXMgKi8iICUgKHZlbmRvciwgdHlwZV8sIGNvZGUsIGVudW0pKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHByaW50ICgiICAgICAgICB7ICAgICAgIC0xLCAtMSwgIC0xIH0sIC8qICVzICovIiAlIGVudW0pCisgICAgICAgICBwcmludCAoIiIiXAorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCitpbmRleCA0OThiODg3Li40MjVhODVmIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworQEAgLTcyOCw3ICs3MjgsNyBAQCBkZWYgbWFrZV9vdnNfZmllbGRzKG1ldGFfZmxvd19oLCBtZXRhX2Zsb3dfeG1sKToKKyBvdnNcLWZpZWxkcyBcLSBwcm90b2NvbCBoZWFkZXIgZmllbGRzIGluIE9wZW5GbG93IGFuZCBPcGVuIHZTd2l0Y2gKKyAuCisgLlBQCistJycnKSAlIHZlcnNpb24KKysnJycgJSB2ZXJzaW9uKQorIAorICAgICByZWN1cnNpdmVseV9yZXBsYWNlKGRvYywgJ294bV9jbGFzc2VzJywgbWFrZV9veG1fY2xhc3Nlc194bWwoZG9jdW1lbnQpKQorIAorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKK2luZGV4IDE4MTM2MzguLmE2N2U4NzAgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtbXNncworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKK0BAIC01NiwxNCArNTYsMTQgQEAgZGVmIGZhdGFsKG1zZyk6CisgCisgZGVmIHVzYWdlKCk6CisgICAgIGFyZ3YwID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKKy0gICAgcHJpbnQgJycnXAorKyAgICBwcmludCgnJydcCisgJShhcmd2MClzLCBmb3IgZXh0cmFjdGluZyBPcGVuRmxvdyBtZXNzYWdlIHR5cGVzIGZyb20gaGVhZGVyIGZpbGVzCisgdXNhZ2U6ICUoYXJndjApcyBJTlBVVCBPVVRQVVQKKyAgIHdoZXJlIElOUFVUIGlzIHRoZSBuYW1lIG9mIHRoZSBpbnB1dCBoZWFkZXIgZmlsZQorICAgICBhbmQgT1VUUFVUIGlzIHRoZSBvdXRwdXQgZmlsZSBuYW1lLgorIERlc3BpdGUgT1VUUFVULCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gdG8gc3Rkb3V0LCBhbmQgdGhlIE9VVFBVVCBhcmd1bWVudAorIG9ubHkgY29udHJvbHMgI2xpbmUgZGlyZWN0aXZlcyBpbiB0aGUgb3V0cHV0LlwKKy0nJycgJSB7ImFyZ3YwIjogYXJndjB9CisrJycnICUgeyJhcmd2MCI6IGFyZ3YwfSkKKyAgICAgc3lzLmV4aXQoMCkKKyAKKyBkZWYgbWFrZV9zaXplb2Yocyk6CitAQCAtMzc4LDUgKzM3OCw1IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgICAgICBsaW5lX251bWJlciA9IDAKKyAKKyAgICAgICAgIGZvciBsaW5lIGluIGV4dHJhY3Rfb2ZwX21zZ3Moc3lzLmFyZ3ZbMl0pOgorLSAgICAgICAgICAgIHByaW50IGxpbmUKKysgICAgICAgICAgICBwcmludChsaW5lKQorICAgICAgICAgCitkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItZG9jIGIvb3ZzZGIvb3ZzZGItZG9jCitpbmRleCA1Y2YyNmVlLi5iMzRmYjExIDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItZG9jCisrKysgYi9vdnNkYi9vdnNkYi1kb2MKK0BAIC0yNTgsNyArMjU4LDcgQEAgcmVwcmVzZW50IHN0cm9uZyByZWZlcmVuY2VzOyB0aGluIGxpbmVzIHJlcHJlc2VudCB3ZWFrIHJlZmVyZW5jZXMuCisgICAgIHJldHVybiBzCisgCisgZGVmIHVzYWdlKCk6CistICAgIHByaW50ICIiIlwKKysgICAgcHJpbnQoIiIiXAorICUoYXJndjApczogb3ZzZGIgc2NoZW1hIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yCisgUHJpbnRzIGRvY3VtZW50YXRpb24gZm9yIGFuIE9WU0RCIHNjaGVtYSBhcyBhbiBucm9mZi1mb3JtYXR0ZWQgbWFucGFnZS4KKyB1c2FnZTogJShhcmd2MClzIFtPUFRJT05TXSBTQ0hFTUEgWE1MCitAQCAtMjY5LDcgKzI2OSw3IEBAIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGU6CisgICAtLWVyLWRpYWdyYW09RElBR1JBTS5QSUMgICAgaW5jbHVkZSBFLVIgZGlhZ3JhbSBmcm9tIERJQUdSQU0uUElDCisgICAtLXZlcnNpb249VkVSU0lPTiAgICAgICAgICAgdXNlIFZFUlNJT04gdG8gZGlzcGxheSBvbiBkb2N1bWVudCBmb290ZXIKKyAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlXAorLSIiIiAlIHsnYXJndjAnOiBhcmd2MH0KKysiIiIgJSB7J2FyZ3YwJzogYXJndjB9KQorICAgICBzeXMuZXhpdCgwKQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CitAQCAtMzA0LDcgKzMwNCw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICBpZiBsZW4obGluZSk6CistICAgICAgICAgICAgICAgIHByaW50IGxpbmUKKysgICAgICAgICAgICAgICAgcHJpbnQobGluZSkKKyAKKyAgICAgZXhjZXB0IGVycm9yLkVycm9yLCBlOgorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKGFyZ3YwLCBlLm1zZykpCitkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItaWRsYy5pbiBiL292c2RiL292c2RiLWlkbGMuaW4KK2luZGV4IDcyMWFiNTAuLjEwNjQ0NDggMTAwNzU1CistLS0gYS9vdnNkYi9vdnNkYi1pZGxjLmluCisrKysgYi9vdnNkYi9vdnNkYi1pZGxjLmluCitAQCAtMSw1ICsxLDYgQEAKKyAjISBAUFlUSE9OQAorIAorK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyBpbXBvcnQgZ2V0b3B0CisgaW1wb3J0IG9zCisgaW1wb3J0IHJlCitAQCAtMTIzLDcgKzEyNCw3IEBAIGRlZiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CisgZGVmIHByaW50Q0lETEhlYWRlcihzY2hlbWFGaWxlKToKKyAgICAgc2NoZW1hID0gcGFyc2VTY2hlbWEoc2NoZW1hRmlsZSkKKyAgICAgcHJlZml4ID0gc2NoZW1hLmlkbFByZWZpeAorLSAgICBwcmludCAnJydcCisrICAgIHByaW50KCcnJ1wKKyAvKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSAtLSBkbyBub3QgbW9kaWZ5ISAgICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gKi8KKyAKKyAjaWZuZGVmICUocHJlZml4KXNJRExfSEVBREVSCitAQCAtMTM1LDM5ICsxMzYsMzkgQEAgZGVmIHByaW50Q0lETEhlYWRlcihzY2hlbWFGaWxlKToKKyAjaW5jbHVkZSAib3ZzZGItZGF0YS5oIgorICNpbmNsdWRlICJvdnNkYi1pZGwtcHJvdmlkZXIuaCIKKyAjaW5jbHVkZSAic21hcC5oIgorLSNpbmNsdWRlICJ1dWlkLmgiJycnICUgeydwcmVmaXgnOiBwcmVmaXgudXBwZXIoKX0KKysjaW5jbHVkZSAidXVpZC5oIicnJyAlIHsncHJlZml4JzogcHJlZml4LnVwcGVyKCl9KQorIAorICAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVyaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCisgCistICAgICAgICBwcmludCAiDCIKKy0gICAgICAgIHByaW50ICIvKiAlcyB0YWJsZS4gKi8iICUgdGFibGVOYW1lCistICAgICAgICBwcmludCAic3RydWN0ICVzIHsiICUgc3RydWN0TmFtZQorLSAgICAgICAgcHJpbnQgIlx0c3RydWN0IG92c2RiX2lkbF9yb3cgaGVhZGVyXzsiCisrICAgICAgICBwcmludCgiDCIpCisrICAgICAgICBwcmludCgiLyogJXMgdGFibGUuICovIiAlIHRhYmxlTmFtZSkKKysgICAgICAgIHByaW50KCJzdHJ1Y3QgJXMgeyIgJSBzdHJ1Y3ROYW1lKQorKyAgICAgICAgcHJpbnQoIlx0c3RydWN0IG92c2RiX2lkbF9yb3cgaGVhZGVyXzsiKQorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CistICAgICAgICAgICAgcHJpbnQgIlxuXHQvKiAlcyBjb2x1bW4uICovIiAlIGNvbHVtbk5hbWUKKysgICAgICAgICAgICBwcmludCgiXG5cdC8qICVzIGNvbHVtbi4gKi8iICUgY29sdW1uTmFtZSkKKyAgICAgICAgICAgICBjb21tZW50LCBtZW1iZXJzID0gY01lbWJlcnMocHJlZml4LCB0YWJsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk5hbWUsIGNvbHVtbiwgRmFsc2UpCisgICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgorLSAgICAgICAgICAgICAgICBwcmludCAiXHQlKHR5cGUpcyUobmFtZSlzOyUoY29tbWVudClzIiAlIG1lbWJlcgorLSAgICAgICAgcHJpbnQgIn07IgorKyAgICAgICAgICAgICAgICBwcmludCgiXHQlKHR5cGUpcyUobmFtZSlzOyUoY29tbWVudClzIiAlIG1lbWJlcikKKysgICAgICAgIHByaW50KCJ9OyIpCisgCisgICAgICAgICAjIENvbHVtbiBpbmRleGVzLgorICAgICAgICAgcHJpbnRFbnVtKCIlc19jb2x1bW5faWQiICUgc3RydWN0TmFtZS5sb3dlcigpLCBbIiVzX0NPTF8lcyIgJSAoc3RydWN0TmFtZS51cHBlcigpLCBjb2x1bW5OYW1lLnVwcGVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKV0KKyAgICAgICAgICAgICAgICAgICArIFsiJXNfTl9DT0xVTU5TIiAlIHN0cnVjdE5hbWUudXBwZXIoKV0pCisgCistICAgICAgICBwcmludAorKyAgICAgICAgcHJpbnQoIiIpCisgICAgICAgICBmb3IgY29sdW1uTmFtZSBpbiB0YWJsZS5jb2x1bW5zOgorLSAgICAgICAgICAgIHByaW50ICIjZGVmaW5lICUocylzX2NvbF8lKGMpcyAoJShzKXNfY29sdW1uc1slKFMpc19DT0xfJShDKXNdKSIgJSB7CisrICAgICAgICAgICAgcHJpbnQoIiNkZWZpbmUgJShzKXNfY29sXyUoYylzICglKHMpc19jb2x1bW5zWyUoUylzX0NPTF8lKEMpc10pIiAlIHsKKyAgICAgICAgICAgICAgICAgJ3MnOiBzdHJ1Y3ROYW1lLAorICAgICAgICAgICAgICAgICAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAgJ2MnOiBjb2x1bW5OYW1lLAorLSAgICAgICAgICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKX0KKysgICAgICAgICAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCl9KQorIAorLSAgICAgICAgcHJpbnQgIlxuZXh0ZXJuIHN0cnVjdCBvdnNkYl9pZGxfY29sdW1uICVzX2NvbHVtbnNbJXNfTl9DT0xVTU5TXTsiICUgKHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUudXBwZXIoKSkKKysgICAgICAgIHByaW50KCJcbmV4dGVybiBzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbHVtbiAlc19jb2x1bW5zWyVzX05fQ09MVU1OU107IiAlIChzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lLnVwcGVyKCkpKQorIAorLSAgICAgICAgcHJpbnQgJycnCisrICAgICAgICBwcmludCgnJycKKyBjb25zdCBzdHJ1Y3QgJShzKXMgKiUocylzX2dldF9mb3JfdXVpZChjb25zdCBzdHJ1Y3Qgb3ZzZGJfaWRsICosIGNvbnN0IHN0cnVjdCB1dWlkICopOworIGNvbnN0IHN0cnVjdCAlKHMpcyAqJShzKXNfZmlyc3QoY29uc3Qgc3RydWN0IG92c2RiX2lkbCAqKTsKKyBjb25zdCBzdHJ1Y3QgJShzKXMgKiUocylzX25leHQoY29uc3Qgc3RydWN0ICUocylzICopOworQEAgLTIwNSw4NyArMjA2LDg3IEBAIHZvaWQgJShzKXNfaW5pdChzdHJ1Y3QgJShzKXMgKik7Cisgdm9pZCAlKHMpc19kZWxldGUoY29uc3Qgc3RydWN0ICUocylzICopOworIHN0cnVjdCAlKHMpcyAqJShzKXNfaW5zZXJ0KHN0cnVjdCBvdnNkYl9pZGxfdHhuICopOworIGJvb2wgJShzKXNfaXNfdXBkYXRlZChjb25zdCBzdHJ1Y3QgJShzKXMgKiwgZW51bSAlKHMpc19jb2x1bW5faWQpOworLScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdTJzogc3RydWN0TmFtZS51cHBlcigpfQorKycnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdTJzogc3RydWN0TmFtZS51cHBlcigpfSkKKyAKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorLSAgICAgICAgICAgIHByaW50ICd2b2lkICUocylzX3ZlcmlmeV8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKik7JyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0KKysgICAgICAgICAgICBwcmludCgndm9pZCAlKHMpc192ZXJpZnlfJShjKXMoY29uc3Qgc3RydWN0ICUocylzICopOycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9KQorIAorLSAgICAgICAgcHJpbnQKKysgICAgICAgIHByaW50KCIiKQorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CisgICAgICAgICAgICAgaWYgY29sdW1uLnR5cGUudmFsdWU6CisgICAgICAgICAgICAgICAgIHZhbHVlUGFyYW0gPSAnLCBlbnVtIG92c2RiX2F0b21pY190eXBlIHZhbHVlX3R5cGUnCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgdmFsdWVQYXJhbSA9ICcnCistICAgICAgICAgICAgcHJpbnQgJ2NvbnN0IHN0cnVjdCBvdnNkYl9kYXR1bSAqJShzKXNfZ2V0XyUoYylzKGNvbnN0IHN0cnVjdCAlKHMpcyAqLCBlbnVtIG92c2RiX2F0b21pY190eXBlIGtleV90eXBlJSh2KXMpOycgJSB7CistICAgICAgICAgICAgICAgICdzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCAndic6IHZhbHVlUGFyYW19CisrICAgICAgICAgICAgcHJpbnQoJ2NvbnN0IHN0cnVjdCBvdnNkYl9kYXR1bSAqJShzKXNfZ2V0XyUoYylzKGNvbnN0IHN0cnVjdCAlKHMpcyAqLCBlbnVtIG92c2RiX2F0b21pY190eXBlIGtleV90eXBlJSh2KXMpOycgJSB7CisrICAgICAgICAgICAgICAgICdzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCAndic6IHZhbHVlUGFyYW19KQorIAorLSAgICAgICAgcHJpbnQKKysgICAgICAgIHByaW50KCIiKQorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CistICAgICAgICAgICAgcHJpbnQgJ3ZvaWQgJShzKXNfc2V0XyUoYylzKGNvbnN0IHN0cnVjdCAlKHMpcyAqLCcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LAorKyAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX3NldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKiwnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwgZW5kPScgJykKKyAgICAgICAgICAgICBpZiBjb2x1bW4udHlwZS5pc19zbWFwKCk6CisgICAgICAgICAgICAgICAgIGFyZ3MgPSBbJ2NvbnN0IHN0cnVjdCBzbWFwIConXQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIGNvbW1lbnQsIG1lbWJlcnMgPSBjTWVtYmVycyhwcmVmaXgsIHRhYmxlTmFtZSwgY29sdW1uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiwgVHJ1ZSkKKyAgICAgICAgICAgICAgICAgYXJncyA9IFsnJSh0eXBlKXMlKG5hbWUpcycgJSBtZW1iZXIgZm9yIG1lbWJlciBpbiBtZW1iZXJzXQorLSAgICAgICAgICAgIHByaW50ICclcyk7JyAlICcsICcuam9pbihhcmdzKQorKyAgICAgICAgICAgIHByaW50KCclcyk7JyAlICcsICcuam9pbihhcmdzKSkKKyAKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludCgiIikKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIGlmIGNvbHVtbi50eXBlLmlzX21hcCgpOgorLSAgICAgICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc191cGRhdGVfJShjKXNfc2V0a2V5KGNvbnN0IHN0cnVjdCAlKHMpcyAqLCAnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwKKy0gICAgICAgICAgICAgICAgcHJpbnQgJyUoY29sdHlwZSlzLCAlKHZhbHR5cGUpcyk7JyAlIHsnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAndmFsdHlwZSc6Y29sdW1uLnR5cGUudmFsdWUudG9fY29uc3RfY190eXBlKHByZWZpeCl9CistICAgICAgICAgICAgICAgIHByaW50ICd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19kZWxrZXkoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LAorLSAgICAgICAgICAgICAgICBwcmludCAnJShjb2x0eXBlKXMpOycgJSB7J2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KX0KKysgICAgICAgICAgICAgICAgcHJpbnQoJ3ZvaWQgJShzKXNfdXBkYXRlXyUoYylzX3NldGtleShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sIGVuZD0nICcpCisrICAgICAgICAgICAgICAgIHByaW50KCclKGNvbHR5cGUpcywgJSh2YWx0eXBlKXMpOycgJSB7J2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJ3ZvaWQgJShzKXNfdXBkYXRlXyUoYylzX2RlbGtleShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sIGVuZD0nICcpCisrICAgICAgICAgICAgICAgIHByaW50KCclKGNvbHR5cGUpcyk7JyAlIHsnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfSkKKyAgICAgICAgICAgICBpZiBjb2x1bW4udHlwZS5pc19zZXQoKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgJ3ZvaWQgJShzKXNfdXBkYXRlXyUoYylzX2FkZHZhbHVlKGNvbnN0IHN0cnVjdCAlKHMpcyAqLCAnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwKKy0gICAgICAgICAgICAgICAgcHJpbnQgJyUodmFsdHlwZSlzKTsnICUgeyd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCl9CistICAgICAgICAgICAgICAgIHByaW50ICd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19kZWx2YWx1ZShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sCistICAgICAgICAgICAgICAgIHByaW50ICclKHZhbHR5cGUpcyk7JyAlIHsndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfQorKyAgICAgICAgICAgICAgICBwcmludCgndm9pZCAlKHMpc191cGRhdGVfJShjKXNfYWRkdmFsdWUoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LCBlbmQ9JyAnKQorKyAgICAgICAgICAgICAgICBwcmludCgnJSh2YWx0eXBlKXMpOycgJSB7J3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KX0pCisrICAgICAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19kZWx2YWx1ZShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sIGVuZD0nICcpCisrICAgICAgICAgICAgICAgIHByaW50KCclKHZhbHR5cGUpcyk7JyAlIHsndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfSkKKyAKKy0gICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc19hZGRfY2xhdXNlXyUoYylzKHN0cnVjdCBvdnNkYl9pZGxfY29uZGl0aW9uICosIGVudW0gb3ZzZGJfZnVuY3Rpb24gZnVuY3Rpb24sJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sCisrICAgICAgICAgICAgcHJpbnQoJ3ZvaWQgJShzKXNfYWRkX2NsYXVzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqLCBlbnVtIG92c2RiX2Z1bmN0aW9uIGZ1bmN0aW9uLCcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LCBlbmQ9JyAnKQorICAgICAgICAgICAgIGlmIGNvbHVtbi50eXBlLmlzX3NtYXAoKToKKyAgICAgICAgICAgICAgICAgYXJncyA9IFsnY29uc3Qgc3RydWN0IHNtYXAgKiddCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgY29tbWVudCwgbWVtYmVycyA9IGNNZW1iZXJzKHByZWZpeCwgdGFibGVOYW1lLCBjb2x1bW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLCBUcnVlLCByZWZUYWJsZT1GYWxzZSkKKyAgICAgICAgICAgICAgICAgYXJncyA9IFsnJSh0eXBlKXMlKG5hbWUpcycgJSBtZW1iZXIgZm9yIG1lbWJlciBpbiBtZW1iZXJzXQorLSAgICAgICAgICAgIHByaW50ICclcyk7JyAlICcsICcuam9pbihhcmdzKQorKyAgICAgICAgICAgIHByaW50KCclcyk7JyAlICcsICcuam9pbihhcmdzKSkKKyAKKy0gICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc19zZXRfY29uZGl0aW9uKHN0cnVjdCBvdnNkYl9pZGwgKiwgc3RydWN0IG92c2RiX2lkbF9jb25kaXRpb24gKik7JyAlIHsncyc6IHN0cnVjdE5hbWV9LAorKyAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX3NldF9jb25kaXRpb24oc3RydWN0IG92c2RiX2lkbCAqLCBzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqKTsnICUgeydzJzogc3RydWN0TmFtZX0pCisgCistICAgICAgICBwcmludAorKyAgICAgICAgcHJpbnQoIiIpCisgCisgICAgICMgVGFibGUgaW5kZXhlcy4KKyAgICAgcHJpbnRFbnVtKCIlc3RhYmxlX2lkIiAlIHByZWZpeC5sb3dlcigpLCBbIiVzVEFCTEVfJXMiICUgKHByZWZpeC51cHBlcigpLCB0YWJsZU5hbWUudXBwZXIoKSkgZm9yIHRhYmxlTmFtZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcyldICsgWyIlc05fVEFCTEVTIiAlIHByZWZpeC51cHBlcigpXSkKKy0gICAgcHJpbnQKKysgICAgcHJpbnQoIiIpCisgICAgIGZvciB0YWJsZU5hbWUgaW4gc2NoZW1hLnRhYmxlczoKKy0gICAgICAgIHByaW50ICIjZGVmaW5lICUocClzdGFibGVfJSh0KXMgKCUocClzdGFibGVfY2xhc3Nlc1slKFApc1RBQkxFXyUoVClzXSkiICUgeworKyAgICAgICAgcHJpbnQoIiNkZWZpbmUgJShwKXN0YWJsZV8lKHQpcyAoJShwKXN0YWJsZV9jbGFzc2VzWyUoUClzVEFCTEVfJShUKXNdKSIgJSB7CisgICAgICAgICAgICAgJ3AnOiBwcmVmaXgsCisgICAgICAgICAgICAgJ1AnOiBwcmVmaXgudXBwZXIoKSwKKyAgICAgICAgICAgICAndCc6IHRhYmxlTmFtZS5sb3dlcigpLAorLSAgICAgICAgICAgICdUJzogdGFibGVOYW1lLnVwcGVyKCl9CistICAgIHByaW50ICJcbmV4dGVybiBzdHJ1Y3Qgb3ZzZGJfaWRsX3RhYmxlX2NsYXNzICVzdGFibGVfY2xhc3Nlc1slc05fVEFCTEVTXTsiICUgKHByZWZpeCwgcHJlZml4LnVwcGVyKCkpCisrICAgICAgICAgICAgJ1QnOiB0YWJsZU5hbWUudXBwZXIoKX0pCisrICAgIHByaW50KCJcbmV4dGVybiBzdHJ1Y3Qgb3ZzZGJfaWRsX3RhYmxlX2NsYXNzICVzdGFibGVfY2xhc3Nlc1slc05fVEFCTEVTXTsiICUgKHByZWZpeCwgcHJlZml4LnVwcGVyKCkpKQorIAorLSAgICBwcmludCAiXG5leHRlcm4gc3RydWN0IG92c2RiX2lkbF9jbGFzcyAlc2lkbF9jbGFzczsiICUgcHJlZml4CisrICAgIHByaW50KCJcbmV4dGVybiBzdHJ1Y3Qgb3ZzZGJfaWRsX2NsYXNzICVzaWRsX2NsYXNzOyIgJSBwcmVmaXgpCisgCistICAgIHByaW50ICJcbmNvbnN0IGNoYXIgKiAlc2dldF9kYl92ZXJzaW9uKHZvaWQpOyIgJSBwcmVmaXgKKy0gICAgcHJpbnQgIlxuI2VuZGlmIC8qICUocHJlZml4KXNJRExfSEVBREVSICovIiAlIHsncHJlZml4JzogcHJlZml4LnVwcGVyKCl9CisrICAgIHByaW50KCJcbmNvbnN0IGNoYXIgKiAlc2dldF9kYl92ZXJzaW9uKHZvaWQpOyIgJSBwcmVmaXgpCisrICAgIHByaW50KCJcbiNlbmRpZiAvKiAlKHByZWZpeClzSURMX0hFQURFUiAqLyIgJSB7J3ByZWZpeCc6IHByZWZpeC51cHBlcigpfSkKKyAKKyBkZWYgcHJpbnRFbnVtKHR5cGUsIG1lbWJlcnMpOgorICAgICBpZiBsZW4obWVtYmVycykgPT0gMDoKKyAgICAgICAgIHJldHVybgorIAorLSAgICBwcmludCAiXG5lbnVtICVzIHsiICUgdHlwZQorKyAgICBwcmludCgiXG5lbnVtICVzIHsiICUgdHlwZSkKKyAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzWzotMV06CistICAgICAgICBwcmludCAiICAgICVzLCIgJSBtZW1iZXIKKy0gICAgcHJpbnQgIiAgICAlcyIgJSBtZW1iZXJzWy0xXQorLSAgICBwcmludCAifTsiCisrICAgICAgICBwcmludCgiICAgICVzLCIgJSBtZW1iZXIpCisrICAgIHByaW50KCIgICAgJXMiICUgbWVtYmVyc1stMV0pCisrICAgIHByaW50KCJ9OyIpCisgCisgZGVmIHByaW50Q0lETFNvdXJjZShzY2hlbWFGaWxlKToKKyAgICAgc2NoZW1hID0gcGFyc2VTY2hlbWEoc2NoZW1hRmlsZSkKKyAgICAgcHJlZml4ID0gc2NoZW1hLmlkbFByZWZpeAorLSAgICBwcmludCAnJydcCisrICAgIHByaW50KCcnJ1wKKyAvKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSAtLSBkbyBub3QgbW9kaWZ5ISAgICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gKi8KKyAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CitAQCAtMjk2LDMzICsyOTcsMzMgQEAgZGVmIHByaW50Q0lETFNvdXJjZShzY2hlbWFGaWxlKToKKyAjaW5jbHVkZSAib3ZzZGItZXJyb3IuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorIAorLScnJyAlIHNjaGVtYS5pZGxIZWFkZXIKKysnJycgJSBzY2hlbWEuaWRsSGVhZGVyKQorIAorICAgICAjIENhc3QgZnVuY3Rpb25zLgorICAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVyaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCistICAgICAgICBwcmludCAnJycKKysgICAgICAgIHByaW50KCcnJworIHN0YXRpYyBzdHJ1Y3QgJShzKXMgKgorICUocylzX2Nhc3QoY29uc3Qgc3RydWN0IG92c2RiX2lkbF9yb3cgKnJvdykKKyB7CisgICAgIHJldHVybiByb3cgPyBDT05UQUlORVJfT0Yocm93LCBzdHJ1Y3QgJShzKXMsIGhlYWRlcl8pIDogTlVMTDsKKyB9XAorLScnJyAlIHsncyc6IHN0cnVjdE5hbWV9CisrJycnICUgeydzJzogc3RydWN0TmFtZX0pCisgCisgCisgICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKyAgICAgICAgIHN0cnVjdE5hbWUgPSAiJXMlcyIgJSAocHJlZml4LCB0YWJsZU5hbWUubG93ZXIoKSkKKy0gICAgICAgIHByaW50ICIMIgorLSAgICAgICAgcHJpbnQgIi8qICVzIHRhYmxlLiAqLyIgJSAodGFibGVOYW1lKQorKyAgICAgICAgcHJpbnQoIgwiKQorKyAgICAgICAgcHJpbnQoIi8qICVzIHRhYmxlLiAqLyIgJSAodGFibGVOYW1lKSkKKyAKKyAgICAgICAgICMgUGFyc2UgZnVuY3Rpb25zLgorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CistICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgcHJpbnQoJycnCisgc3RhdGljIHZvaWQKKyAlKHMpc19wYXJzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX3JvdyAqcm93XywgY29uc3Qgc3RydWN0IG92c2RiX2RhdHVtICpkYXR1bSkKKyB7CisgICAgIHN0cnVjdCAlKHMpcyAqcm93ID0gJShzKXNfY2FzdChyb3dfKTsnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjJzogY29sdW1uTmFtZX0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYyc6IGNvbHVtbk5hbWV9KQorICAgICAgICAgICAgIHR5cGUgPSBjb2x1bW4udHlwZQorICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CisgICAgICAgICAgICAgICAgIGtleVZhciA9ICJyb3ctPmtleV8lcyIgJSBjb2x1bW5OYW1lCitAQCAtMzMyLDg5ICszMzMsODkgQEAgc3RhdGljIHZvaWQKKyAgICAgICAgICAgICAgICAgdmFsdWVWYXIgPSBOb25lCisgCisgICAgICAgICAgICAgaWYgdHlwZS5pc19zbWFwKCk6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgc21hcF9pbml0KCZyb3ctPiVzKTsiICUgY29sdW1uTmFtZQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0dW0tPm47IGkrKykgeyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgc21hcF9hZGQoJnJvdy0+JXMsIiAlIGNvbHVtbk5hbWUKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgICAgICAgICAgZGF0dW0tPmtleXNbaV0uc3RyaW5nLCIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgICAgICAgICAgZGF0dW0tPnZhbHVlc1tpXS5zdHJpbmcpOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHNtYXBfaW5pdCgmcm93LT4lcyk7IiAlIGNvbHVtbk5hbWUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXR1bS0+bjsgaSsrKSB7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgc21hcF9hZGQoJnJvdy0+JXMsIiAlIGNvbHVtbk5hbWUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICAgICAgICAgIGRhdHVtLT5rZXlzW2ldLnN0cmluZywiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAgICAgICAgICBkYXR1bS0+dmFsdWVzW2ldLnN0cmluZyk7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IikKKyAgICAgICAgICAgICBlbGlmICh0eXBlLm5fbWluID09IDEgYW5kIHR5cGUubl9tYXggPT0gMSkgb3IgdHlwZS5pc19vcHRpb25hbF9wb2ludGVyKCk6CistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgaWYgKGRhdHVtLT5uID49IDEpIHsiCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGlmIChkYXR1bS0+biA+PSAxKSB7IikKKyAgICAgICAgICAgICAgICAgaWYgbm90IHR5cGUua2V5LnJlZl90YWJsZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzID0gZGF0dW0tPmtleXNbMF0uJXM7IiAlIChrZXlWYXIsIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCkpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlcyA9IGRhdHVtLT5rZXlzWzBdLiVzOyIgJSAoa2V5VmFyLCB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpKSkKKyAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzID0gJXMlc19jYXN0KG92c2RiX2lkbF9nZXRfcm93X2FyYyhyb3dfLCAmJXN0YWJsZV8lcywgJmRhdHVtLT5rZXlzWzBdLnV1aWQpKTsiICUgKGtleVZhciwgcHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCkpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlcyA9ICVzJXNfY2FzdChvdnNkYl9pZGxfZ2V0X3Jvd19hcmMocm93XywgJiVzdGFibGVfJXMsICZkYXR1bS0+a2V5c1swXS51dWlkKSk7IiAlIChrZXlWYXIsIHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpKSkKKyAKKyAgICAgICAgICAgICAgICAgaWYgdmFsdWVWYXI6CisgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdHlwZS52YWx1ZS5yZWZfdGFibGU6CistICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXMgPSBkYXR1bS0+dmFsdWVzWzBdLiVzOyIgJSAodmFsdWVWYXIsIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlcyA9IGRhdHVtLT52YWx1ZXNbMF0uJXM7IiAlICh2YWx1ZVZhciwgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpKSkKKyAgICAgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXMgPSAlcyVzX2Nhc3Qob3ZzZGJfaWRsX2dldF9yb3dfYXJjKHJvd18sICYlc3RhYmxlXyVzLCAmZGF0dW0tPnZhbHVlc1swXS51dWlkKSk7IiAlICh2YWx1ZVZhciwgcHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0gZWxzZSB7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAlcyIgJSB0eXBlLmtleS5pbml0Q0RlZmF1bHQoa2V5VmFyLCB0eXBlLm5fbWluID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMgPSAlcyVzX2Nhc3Qob3ZzZGJfaWRsX2dldF9yb3dfYXJjKHJvd18sICYlc3RhYmxlXyVzLCAmZGF0dW0tPnZhbHVlc1swXS51dWlkKSk7IiAlICh2YWx1ZVZhciwgcHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IGVsc2UgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICVzIiAlIHR5cGUua2V5LmluaXRDRGVmYXVsdChrZXlWYXIsIHR5cGUubl9taW4gPT0gMCkpCisgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXMiICUgdHlwZS52YWx1ZS5pbml0Q0RlZmF1bHQodmFsdWVWYXIsIHR5cGUubl9taW4gPT0gMCkKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMiICUgdHlwZS52YWx1ZS5pbml0Q0RlZmF1bHQodmFsdWVWYXIsIHR5cGUubl9taW4gPT0gMCkpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS5uX21heCAhPSBzeXMubWF4aW50OgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBzaXplX3QgbiA9IE1JTiglZCwgZGF0dW0tPm4pOyIgJSB0eXBlLm5fbWF4CisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHNpemVfdCBuID0gTUlOKCVkLCBkYXR1bS0+bik7IiAlIHR5cGUubl9tYXgpCisgICAgICAgICAgICAgICAgICAgICBuTWF4ID0gIm4iCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBuTWF4ID0gImRhdHVtLT5uIgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICVzID0gTlVMTDsiICUga2V5VmFyCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgJXMgPSBOVUxMOyIgJSBrZXlWYXIpCisgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAlcyA9IE5VTEw7IiAlIHZhbHVlVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgcm93LT5uXyVzID0gMDsiICUgY29sdW1uTmFtZQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJXM7IGkrKykgeyIgJSBuTWF4CisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICVzID0gTlVMTDsiICUgdmFsdWVWYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgcm93LT5uXyVzID0gMDsiICUgY29sdW1uTmFtZSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgbk1heCkKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS5rZXkucmVmX3RhYmxlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiIiXAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiIiXAorICAgICAgICAgc3RydWN0ICVzJXMgKmtleVJvdyA9ICVzJXNfY2FzdChvdnNkYl9pZGxfZ2V0X3Jvd19hcmMocm93XywgJiVzdGFibGVfJXMsICZkYXR1bS0+a2V5c1tpXS51dWlkKSk7CisgICAgICAgICBpZiAoIWtleVJvdykgeworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfVwKKy0iIiIgJSAocHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkKKysiIiIgJSAocHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkpCisgICAgICAgICAgICAgICAgICAgICBrZXlTcmMgPSAia2V5Um93IgorICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAga2V5U3JjID0gImRhdHVtLT5rZXlzW2ldLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZSBhbmQgdHlwZS52YWx1ZS5yZWZfdGFibGU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiIiJcCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiIiJcCisgICAgICAgICBzdHJ1Y3QgJXMlcyAqdmFsdWVSb3cgPSAlcyVzX2Nhc3Qob3ZzZGJfaWRsX2dldF9yb3dfYXJjKHJvd18sICYlc3RhYmxlXyVzLCAmZGF0dW0tPnZhbHVlc1tpXS51dWlkKSk7CisgICAgICAgICBpZiAoIXZhbHVlUm93KSB7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9XAorLSIiIiAlIChwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpKQorKyIiIiAlIChwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3JjID0gInZhbHVlUm93IgorICAgICAgICAgICAgICAgICBlbGlmIHZhbHVlVmFyOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWVTcmMgPSAiZGF0dW0tPnZhbHVlc1tpXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCkKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgaWYgKCFyb3ctPm5fJXMpIHsiICUgKGNvbHVtbk5hbWUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGlmICghcm93LT5uXyVzKSB7IiAlIChjb2x1bW5OYW1lKSkKKyAKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgICAgICVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqJXMpOyIgJSAoCistICAgICAgICAgICAgICAgICAgICBrZXlWYXIsIG5NYXgsIGtleVZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgICAgICVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqJXMpOyIgJSAoCisrICAgICAgICAgICAgICAgICAgICBrZXlWYXIsIG5NYXgsIGtleVZhcikpCisgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgICAgICVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqJXMpOyIgJSAoCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVWYXIsIG5NYXgsIHZhbHVlVmFyKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICB9IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAlc1tyb3ctPm5fJXNdID0gJXM7IiAlIChrZXlWYXIsIGNvbHVtbk5hbWUsIGtleVNyYykKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICAgICAlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKiVzKTsiICUgKAorKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVmFyLCBuTWF4LCB2YWx1ZVZhcikpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIH0iKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlc1tyb3ctPm5fJXNdID0gJXM7IiAlIChrZXlWYXIsIGNvbHVtbk5hbWUsIGtleVNyYykpCisgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXNbcm93LT5uXyVzXSA9ICVzOyIgJSAodmFsdWVWYXIsIGNvbHVtbk5hbWUsIHZhbHVlU3JjKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICByb3ctPm5fJXMrKzsiICUgY29sdW1uTmFtZQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0iCistICAgICAgICAgICAgcHJpbnQgIn0iCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlc1tyb3ctPm5fJXNdID0gJXM7IiAlICh2YWx1ZVZhciwgY29sdW1uTmFtZSwgdmFsdWVTcmMpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICByb3ctPm5fJXMrKzsiICUgY29sdW1uTmFtZSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IikKKysgICAgICAgICAgICBwcmludCgifSIpCisgCisgICAgICAgICAjIFVucGFyc2UgZnVuY3Rpb25zLgorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CisgICAgICAgICAgICAgdHlwZSA9IGNvbHVtbi50eXBlCisgICAgICAgICAgICAgaWYgdHlwZS5pc19zbWFwKCkgb3IgKHR5cGUubl9taW4gIT0gMSBvciB0eXBlLm5fbWF4ICE9IDEpIGFuZCBub3QgdHlwZS5pc19vcHRpb25hbF9wb2ludGVyKCk6CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyBzdGF0aWMgdm9pZAorICUocylzX3VucGFyc2VfJShjKXMoc3RydWN0IG92c2RiX2lkbF9yb3cgKnJvd18pCisgeworICAgICBzdHJ1Y3QgJShzKXMgKnJvdyA9ICUocylzX2Nhc3Qocm93Xyk7JycnICUgeydzJzogc3RydWN0TmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYyc6IGNvbHVtbk5hbWV9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2MnOiBjb2x1bW5OYW1lfSkKKyAKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS5pc19zbWFwKCk6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIHNtYXBfZGVzdHJveSgmcm93LT4lcyk7IiAlIGNvbHVtbk5hbWUKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgc21hcF9kZXN0cm95KCZyb3ctPiVzKTsiICUgY29sdW1uTmFtZSkKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CisgICAgICAgICAgICAgICAgICAgICAgICAga2V5VmFyID0gInJvdy0+a2V5XyVzIiAlIGNvbHVtbk5hbWUKK0BAIC00MjIsNDUgKzQyMyw0NSBAQCBzdGF0aWMgdm9pZAorICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICBrZXlWYXIgPSAicm93LT4lcyIgJSBjb2x1bW5OYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVWYXIgPSBOb25lCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGZyZWUoJXMpOyIgJSBrZXlWYXIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgZnJlZSglcyk7IiAlIGtleVZhcikKKyAgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZnJlZSglcyk7IiAlIHZhbHVlVmFyCistICAgICAgICAgICAgICAgIHByaW50ICd9JworKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgZnJlZSglcyk7IiAlIHZhbHVlVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgnfScpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworIHN0YXRpYyB2b2lkCisgJShzKXNfdW5wYXJzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX3JvdyAqcm93IE9WU19VTlVTRUQpCisgeworICAgICAvKiBOb3RoaW5nIHRvIGRvLiAqLworLX0nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9CisrfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0pCisgCisgICAgICAgICAjIEdlbmVyaWMgUm93IEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgorLSAgICAgICAgcHJpbnQgIiIiCisrICAgICAgICBwcmludCgiIiIKKyBzdGF0aWMgdm9pZAorICUocylzX2luaXRfXyhzdHJ1Y3Qgb3ZzZGJfaWRsX3JvdyAqcm93KQorIHsKKyAgICAgJShzKXNfaW5pdCglKHMpc19jYXN0KHJvdykpOworLX0iIiIgJSB7J3MnOiBzdHJ1Y3ROYW1lfQorK30iIiIgJSB7J3MnOiBzdHJ1Y3ROYW1lfSkKKyAKKyAgICAgICAgICMgUm93IEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgorLSAgICAgICAgcHJpbnQgIiIiCisrICAgICAgICBwcmludCgiIiIKKyAvKiBDbGVhcnMgdGhlIGNvbnRlbnRzIG9mICdyb3cnIGluIHRhYmxlICIlKHQpcyIuICovCisgdm9pZAorICUocylzX2luaXQoc3RydWN0ICUocylzICpyb3cpCisgeworLSAgICBtZW1zZXQocm93LCAwLCBzaXplb2YgKnJvdyk7ICIiIiAlIHsncyc6IHN0cnVjdE5hbWUsICd0JzogdGFibGVOYW1lfQorKyAgICBtZW1zZXQocm93LCAwLCBzaXplb2YgKnJvdyk7ICIiIiAlIHsncyc6IHN0cnVjdE5hbWUsICd0JzogdGFibGVOYW1lfSkKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIGlmIGNvbHVtbi50eXBlLmlzX3NtYXAoKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBzbWFwX2luaXQoJnJvdy0+JXMpOyIgJSBjb2x1bW5OYW1lCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgc21hcF9pbml0KCZyb3ctPiVzKTsiICUgY29sdW1uTmFtZSkKKyAgICAgICAgICAgICBlbGlmIChjb2x1bW4udHlwZS5uX21pbiA9PSAxIGFuZAorICAgICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlLm5fbWF4ID09IDEgYW5kCisgICAgICAgICAgICAgICAgICAgY29sdW1uLnR5cGUua2V5LnR5cGUgPT0gb3ZzLmRiLnR5cGVzLlN0cmluZ1R5cGUgYW5kCisgICAgICAgICAgICAgICAgICAgbm90IGNvbHVtbi50eXBlLnZhbHVlKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICByb3ctPiVzID0gXCJcIjsiICUgY29sdW1uTmFtZQorLSAgICAgICAgcHJpbnQgIn0iCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgcm93LT4lcyA9IFwiXCI7IiAlIGNvbHVtbk5hbWUpCisrICAgICAgICBwcmludCgifSIpCisgCisgICAgICAgICAjIEZpcnN0LCBuZXh0IGZ1bmN0aW9ucy4KKy0gICAgICAgIHByaW50ICcnJworKyAgICAgICAgcHJpbnQoJycnCisgLyogU2VhcmNoZXMgdGFibGUgIiUodClzIiBpbiAnaWRsJyBmb3IgYSByb3cgd2l0aCBVVUlEICd1dWlkJy4gIFJldHVybnMKKyAgKiBhIHBvaW50ZXIgdG8gdGhlIHJvdyBpZiB0aGVyZSBpcyBvbmUsIG90aGVyd2lzZSBhIG51bGwgcG9pbnRlci4gICovCisgY29uc3Qgc3RydWN0ICUocylzICoKK0BAIC01MTQsOSArNTE1LDkgQEAgY29uc3Qgc3RydWN0ICUocylzCisgICAgICAgICAnUCc6IHByZWZpeC51cHBlcigpLAorICAgICAgICAgJ3QnOiB0YWJsZU5hbWUsCisgICAgICAgICAndGwnOiB0YWJsZU5hbWUubG93ZXIoKSwKKy0gICAgICAgICdUJzogdGFibGVOYW1lLnVwcGVyKCl9CisrICAgICAgICAnVCc6IHRhYmxlTmFtZS51cHBlcigpfSkKKyAKKy0gICAgICAgIHByaW50ICcnJworKyAgICAgICAgcHJpbnQoJycnCisgCisgLyogRGVsZXRlcyAncm93JyBmcm9tIHRhYmxlICIlKHQpcyIuICAncm93JyBtYXkgYmUgZnJlZWQsIHNvIGl0IG11c3Qgbm90IGJlCisgICogYWNjZXNzZWQgYWZ0ZXJ3YXJkLgorQEAgLTU1MCwxMSArNTUxLDExIEBAIGJvb2wKKyAgICAgICAgICdQJzogcHJlZml4LnVwcGVyKCksCisgICAgICAgICAndCc6IHRhYmxlTmFtZSwKKyAgICAgICAgICd0bCc6IHRhYmxlTmFtZS5sb3dlcigpLAorLSAgICAgICAgJ1QnOiB0YWJsZU5hbWUudXBwZXIoKX0KKysgICAgICAgICdUJzogdGFibGVOYW1lLnVwcGVyKCl9KQorIAorICAgICAgICAgIyBWZXJpZnkgZnVuY3Rpb25zLgorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CistICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgcHJpbnQoJycnCisgLyogQ2F1c2VzIHRoZSBvcmlnaW5hbCBjb250ZW50cyBvZiBjb2x1bW4gIiUoYylzIiBpbiAncm93JyB0byBiZQorICAqIHZlcmlmaWVkIGFzIGEgcHJlcmVxdWlzaXRlIHRvIGNvbXBsZXRpbmcgdGhlIHRyYW5zYWN0aW9uLiAgVGhhdCBpcywgaWYKKyAgKiAiJShjKXMiIGluICdyb3cnIGNoYW5nZWQgKG9yIGlmICdyb3cnIHdhcyBkZWxldGVkKSBiZXR3ZWVuIHRoZQorQEAgLTU4NSw3ICs1ODYsNyBAQCB2b2lkCisgfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKSwKKyAgICAgICAgICdjJzogY29sdW1uTmFtZSwKKy0gICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpfQorKyAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCl9KQorIAorICAgICAgICAgIyBHZXQgZnVuY3Rpb25zLgorICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CitAQCAtNTk3LDcgKzU5OCw3IEBAIHZvaWQKKyAgICAgICAgICAgICAgICAgdmFsdWVQYXJhbSA9ICcnCisgICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9ICcnCisgICAgICAgICAgICAgICAgIHZhbHVlQ29tbWVudCA9ICcnCistICAgICAgICAgICAgcHJpbnQgIiIiCisrICAgICAgICAgICAgcHJpbnQoIiIiCisgLyogUmV0dXJucyB0aGUgIiUoYylzIiBjb2x1bW4ncyB2YWx1ZSBmcm9tIHRoZSAiJSh0KXMiIHRhYmxlIGluICdyb3cnCisgICogYXMgYSBzdHJ1Y3Qgb3ZzZGJfZGF0dW0uICBUaGlzIGlzIHVzZWZ1bCBvY2Nhc2lvbmFsbHk6IGZvciBleGFtcGxlLAorICAqIG92c2RiX2RhdHVtX2ZpbmRfa2V5KCkgaXMgYW4gZWFzaWVyIGFuZCBtb3JlIGVmZmljaWVudCB3YXkgdG8gc2VhcmNoCitAQCAtNjI1LDcgKzYyNiw3IEBAIGNvbnN0IHN0cnVjdCBvdnNkYl9kYXR1bSAqCisgICAgIHJldHVybiBvdnNkYl9pZGxfcmVhZCgmcm93LT5oZWFkZXJfLCAmJShzKXNfY29sXyUoYylzKTsKKyB9IiIiICUgeyd0JzogdGFibGVOYW1lLCAncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwKKyAgICAgICAgJ2t0JzogY29sdW1uLnR5cGUua2V5LnRvQXRvbWljVHlwZSgpLAorLSAgICAgICAndic6IHZhbHVlUGFyYW0sICd2dCc6IHZhbHVlVHlwZSwgJ3ZjJzogdmFsdWVDb21tZW50fQorKyAgICAgICAndic6IHZhbHVlUGFyYW0sICd2dCc6IHZhbHVlVHlwZSwgJ3ZjJzogdmFsdWVDb21tZW50fSkKKyAKKyAgICAgICAgICMgU2V0IGZ1bmN0aW9ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorQEAgLTYzNSw4ICs2MzYsOCBAQCBjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sIFRydWUpCisgCisgICAgICAgICAgICAgaWYgdHlwZS5pc19zbWFwKCk6CistICAgICAgICAgICAgICAgIHByaW50IGNvbW1lbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiIidm9pZAorKyAgICAgICAgICAgICAgICBwcmludChjb21tZW50KQorKyAgICAgICAgICAgICAgICBwcmludCgiIiJ2b2lkCisgJShzKXNfc2V0XyUoYylzKGNvbnN0IHN0cnVjdCAlKHMpcyAqcm93LCBjb25zdCBzdHJ1Y3Qgc21hcCAqJShjKXMpCisgeworICAgICBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gZGF0dW07CitAQCAtNjU0LDcgKzY1NSw3IEBAIGNvbnN0IHN0cnVjdCBvdnNkYl9kYXR1bSAqCisgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCisgICAgICAgICdjJzogY29sdW1uTmFtZSwKKy0gICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCl9CisrICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpfSkKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAKKyAgICAgICAgICAgICBrZXlWYXIgPSBtZW1iZXJzWzBdWyduYW1lJ10KK0BAIC02NjgsODQgKzY2OSw4NCBAQCBjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKgorICAgICAgICAgICAgICAgICBpZiBsZW4obWVtYmVycykgPiAxOgorICAgICAgICAgICAgICAgICAgICAgblZhciA9IG1lbWJlcnNbMV1bJ25hbWUnXQorIAorLSAgICAgICAgICAgIHByaW50IGNvbW1lbnQKKy0gICAgICAgICAgICBwcmludCAiIiJcCisrICAgICAgICAgICAgcHJpbnQoY29tbWVudCkKKysgICAgICAgICAgICBwcmludCgiIiJcCisgdm9pZAorICUocylzX3NldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKnJvdywgJShhcmdzKXMpCisgeworICAgICBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gZGF0dW07IiIiICUgeydzJzogc3RydWN0TmFtZSwKKyAgICAgICAgICdjJzogY29sdW1uTmFtZSwKKyAgICAgICAgICdhcmdzJzogJywgJy5qb2luKFsnJSh0eXBlKXMlKG5hbWUpcycKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAlIG0gZm9yIG0gaW4gbWVtYmVyc10pfQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbSBmb3IgbSBpbiBtZW1iZXJzXSl9KQorICAgICAgICAgICAgIGlmIHR5cGUubl9taW4gPT0gMSBhbmQgdHlwZS5uX21heCA9PSAxOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICB1bmlvbiBvdnNkYl9hdG9tIHZhbHVlOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS5uID0gMTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ua2V5cyA9ICZrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20gdmFsdWU7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ubiA9IDE7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIpKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSAmdmFsdWU7IgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiKyB0eXBlLnZhbHVlLmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgidmFsdWUuJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCB2YWx1ZVZhcikKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gJnZhbHVlOyIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICIrIHR5cGUudmFsdWUuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJ2YWx1ZS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksIHZhbHVlVmFyKSkKKyAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKyAgICAgICAgICAgICAgICAgdHhuX3dyaXRlX2Z1bmMgPSAib3ZzZGJfaWRsX3R4bl93cml0ZV9jbG9uZSIKKyAgICAgICAgICAgICBlbGlmIHR5cGUuaXNfb3B0aW9uYWxfcG9pbnRlcigpOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBpZiAoJXMpIHsiICUga2V5VmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLm4gPSAxOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ua2V5cyA9ICZrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0gZWxzZSB7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGlmICglcykgeyIgJSBrZXlWYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAxOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0gZWxzZSB7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgZGF0dW0ubiA9IDA7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgZGF0dW0ua2V5cyA9IE5VTEw7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIpCisgICAgICAgICAgICAgICAgIHR4bl93cml0ZV9mdW5jID0gIm92c2RiX2lkbF90eG5fd3JpdGVfY2xvbmUiCisgICAgICAgICAgICAgZWxpZiB0eXBlLm5fbWF4ID09IDE6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGlmICglcykgeyIgJSBuVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLm4gPSAxOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ua2V5cyA9ICZrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIioiICsga2V5VmFyKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0gZWxzZSB7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGlmICglcykgeyIgJSBuVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIioiICsga2V5VmFyKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IGVsc2UgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAwOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiKQorICAgICAgICAgICAgICAgICB0eG5fd3JpdGVfZnVuYyA9ICJvdnNkYl9pZGxfdHhuX3dyaXRlX2Nsb25lIgorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ubiA9ICVzOyIgJSBuVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ua2V5cyA9ICVzID8geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0ua2V5cykgOiBOVUxMOyIgJSAoblZhciwgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ubiA9ICVzOyIgJSBuVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLmtleXMgPSAlcyA/IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLmtleXMpIDogTlVMTDsiICUgKG5WYXIsIG5WYXIpKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSB4bWFsbG9jKCVzICogc2l6ZW9mICpkYXR1bS52YWx1ZXMpOyIgJSBuVmFyCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLnZhbHVlcyk7IiAlIG5WYXIpCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJXM7IGkrKykgeyIgJSBuVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICIgKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS5rZXlzW2ldLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSBrZXlWYXIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgIiArIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLmtleXNbaV0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIiVzW2ldIiAlIGtleVZhcikpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS52YWx1ZS5jb3B5Q1ZhbHVlKCJkYXR1bS52YWx1ZXNbaV0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCAiJXNbaV0iICUgdmFsdWVWYXIpCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLnZhbHVlLmNvcHlDVmFsdWUoImRhdHVtLnZhbHVlc1tpXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSB2YWx1ZVZhcikpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSB0eXBlLnZhbHVlLnRvQXRvbWljVHlwZSgpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSAiT1ZTREJfVFlQRV9WT0lEIgorICAgICAgICAgICAgICAgICB0eG5fd3JpdGVfZnVuYyA9ICJvdnNkYl9pZGxfdHhuX3dyaXRlIgorLSAgICAgICAgICAgIHByaW50ICIgICAgJShmKXMoJnJvdy0+aGVhZGVyXywgJiUocylzX2NvbF8lKGMpcywgJmRhdHVtKTsiIFwKKysgICAgICAgICAgICBwcmludCgiICAgICUoZilzKCZyb3ctPmhlYWRlcl8sICYlKHMpc19jb2xfJShjKXMsICZkYXR1bSk7IiBcCisgICAgICAgICAgICAgICAgICUgeydmJzogdHhuX3dyaXRlX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCistICAgICAgICAgICAgICAgICAgICdjJzogY29sdW1uTmFtZX0KKy0gICAgICAgICAgICBwcmludCAifSIKKysgICAgICAgICAgICAgICAgICAgJ2MnOiBjb2x1bW5OYW1lfSkKKysgICAgICAgICAgICBwcmludCgifSIpCisgICAgICAgICAjIFVwZGF0ZS9EZWxldGUgb2YgcGFydGlhbCBtYXAgY29sdW1uIGZ1bmN0aW9ucworICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSk6CisgICAgICAgICAgICAgdHlwZSA9IGNvbHVtbi50eXBlCisgICAgICAgICAgICAgaWYgdHlwZS5pc19tYXAoKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworIC8qIFNldHMgYW4gZWxlbWVudCBvZiB0aGUgIiUoYylzIiBtYXAgY29sdW1uIGZyb20gdGhlICIlKHQpcyIgdGFibGUgaW4gJ3JvdycKKyAgKiB0byAnbmV3X3ZhbHVlJyBnaXZlbiB0aGUga2V5IHZhbHVlICduZXdfa2V5Jy4KKyAgKgorQEAgLTc2MSwxNyArNzYyLDE3IEBAIHZvaWQKKyAgICAgZGF0dW0tPnZhbHVlcyA9IHhtYWxsb2MoZGF0dW0tPm4gKiBzaXplb2YgKmRhdHVtLT52YWx1ZXMpOworICcnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLAorICAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKSwKKy0gICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpLCAndCc6IHRhYmxlTmFtZX0KKysgICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpLCAndCc6IHRhYmxlTmFtZX0pCisgCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIm5ld19rZXkiKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIrIHR5cGUudmFsdWUuY29weUNWYWx1ZSgiZGF0dW0tPnZhbHVlc1swXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksICJuZXdfdmFsdWUiKQorLSAgICAgICAgICAgICAgICBwcmludCAnJycKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS0+a2V5c1swXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAibmV3X2tleSIpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIrIHR5cGUudmFsdWUuY29weUNWYWx1ZSgiZGF0dW0tPnZhbHVlc1swXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksICJuZXdfdmFsdWUiKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgICAgIG92c2RiX2lkbF90eG5fd3JpdGVfcGFydGlhbF9tYXAoJnJvdy0+aGVhZGVyXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJShzKXNfY29sXyUoYylzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdHVtKTsKKyB9JycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCdjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9DVHlwZShwcmVmaXgpLAorLSAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0KKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUudmFsdWUudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgLyogRGVsZXRlcyBhbiBlbGVtZW50IG9mIHRoZSAiJShjKXMiIG1hcCBjb2x1bW4gZnJvbSB0aGUgIiUodClzIiB0YWJsZSBpbiAncm93JworICAqIGdpdmVuIHRoZSBrZXkgdmFsdWUgJ2RlbGV0ZV9rZXknLgorICAqCitAQCAtNzg3LDE5ICs3ODgsMTkgQEAgdm9pZAorICAgICBkYXR1bS0+dmFsdWVzID0gTlVMTDsKKyAnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsJ2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwKKyAgICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS52YWx1ZS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCistICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKSwgJ3QnOiB0YWJsZU5hbWV9CisrICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKSwgJ3QnOiB0YWJsZU5hbWV9KQorIAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJkZWxldGVfa2V5IikKKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgImRlbGV0ZV9rZXkiKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgICAgIG92c2RiX2lkbF90eG5fZGVsZXRlX3BhcnRpYWxfbWFwKCZyb3ctPmhlYWRlcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiUocylzX2NvbF8lKGMpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXR1bSk7CisgfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvQ1R5cGUocHJlZml4KSwKKy0gICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS52YWx1ZS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9CisrICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUudmFsdWUudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfSkKKyAgICAgICAgICMgRW5kIFVwZGF0ZS9EZWxldGUgb2YgcGFydGlhbCBtYXBzCisgICAgICAgICAjIFVwZGF0ZS9EZWxldGUgb2YgcGFydGlhbCBzZXQgY29sdW1uIGZ1bmN0aW9ucworICAgICAgICAgICAgIGlmIHR5cGUuaXNfc2V0KCk6CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyAvKiBBZGRzIHRoZSB2YWx1ZSAnbmV3X3ZhbHVlJyB0byB0aGUgIiUoYylzIiBzZXQgY29sdW1uIGZyb20gdGhlICIlKHQpcyIgdGFibGUKKyAgKiBpbiAncm93Jy4KKyAgKgorQEAgLTgxNCwxNiArODE1LDE2IEBAIHZvaWQKKyAgICAgZGF0dW0tPmtleXMgPSB4bWFsbG9jKGRhdHVtLT5uICogc2l6ZW9mICpkYXR1bS0+dmFsdWVzKTsKKyAgICAgZGF0dW0tPnZhbHVlcyA9IE5VTEw7CisgJycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLAorLSAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ3QnOiB0YWJsZU5hbWV9CisrICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAndCc6IHRhYmxlTmFtZX0pCisgCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIm5ld192YWx1ZSIpCistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJuZXdfdmFsdWUiKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgICAgIG92c2RiX2lkbF90eG5fd3JpdGVfcGFydGlhbF9zZXQoJnJvdy0+aGVhZGVyXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJShzKXNfY29sXyUoYylzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdHVtKTsKKyB9JycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCdjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9DVHlwZShwcmVmaXgpLAorLSAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9KQorKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyAvKiBEZWxldGVzIHRoZSB2YWx1ZSAnZGVsZXRlX3ZhbHVlJyBmcm9tIHRoZSAiJShjKXMiIHNldCBjb2x1bW4gZnJvbSB0aGUKKyAgKiAiJSh0KXMiIHRhYmxlIGluICdyb3cnLgorICAqCitAQCAtODM5LDE1ICs4NDAsMTUgQEAgdm9pZAorICAgICBkYXR1bS0+dmFsdWVzID0gTlVMTDsKKyAnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsJ2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwKKyAgICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpLAorLSAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCksICd0JzogdGFibGVOYW1lfQorKyAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCksICd0JzogdGFibGVOYW1lfSkKKyAKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS0+a2V5c1swXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiZGVsZXRlX3ZhbHVlIikKKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgImRlbGV0ZV92YWx1ZSIpKQorKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyAgICAgb3ZzZGJfaWRsX3R4bl9kZWxldGVfcGFydGlhbF9zZXQoJnJvdy0+aGVhZGVyXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJShzKXNfY29sXyUoYylzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdHVtKTsKKyB9JycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCdjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9DVHlwZShwcmVmaXgpLAorLSAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9CisrICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0pCisgICAgICAgICAjIEVuZCBVcGRhdGUvRGVsZXRlIG9mIHBhcnRpYWwgc2V0CisgCisgICAgICAgICAjIEFkZCBjbGF1c2UgZnVuY3Rpb25zLgorQEAgLTg1OCw4ICs4NTksOCBAQCB2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiwgVHJ1ZSwgcmVmVGFibGU9RmFsc2UpCisgCisgICAgICAgICAgICAgaWYgdHlwZS5pc19zbWFwKCk6CistICAgICAgICAgICAgICAgIHByaW50IGNvbW1lbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiIidm9pZAorKyAgICAgICAgICAgICAgICBwcmludChjb21tZW50KQorKyAgICAgICAgICAgICAgICBwcmludCgiIiJ2b2lkCisgJShzKXNfYWRkX2NsYXVzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqY29uZCwgZW51bSBvdnNkYl9mdW5jdGlvbiBmdW5jdGlvbiwgY29uc3Qgc3RydWN0IHNtYXAgKiUoYylzKQorIHsKKyAgICAgc3RydWN0IG92c2RiX2RhdHVtIGRhdHVtOworQEAgLTg4NCw3ICs4ODUsNyBAQCB2b2lkCisgICAgICAgICdQJzogcHJlZml4LnVwcGVyKCksCisgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCistICAgICAgICdjJzogY29sdW1uTmFtZX0KKysgICAgICAgJ2MnOiBjb2x1bW5OYW1lfSkKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAKKyAgICAgICAgICAgICBrZXlWYXIgPSBtZW1iZXJzWzBdWyduYW1lJ10KK0BAIC04OTgsNzMgKzg5OSw3MyBAQCB2b2lkCisgICAgICAgICAgICAgICAgIGlmIGxlbihtZW1iZXJzKSA+IDE6CisgICAgICAgICAgICAgICAgICAgICBuVmFyID0gbWVtYmVyc1sxXVsnbmFtZSddCisgCistICAgICAgICAgICAgcHJpbnQgY29tbWVudAorLSAgICAgICAgICAgIHByaW50ICd2b2lkJworLSAgICAgICAgICAgIHByaW50ICclKHMpc19hZGRfY2xhdXNlXyUoYylzKHN0cnVjdCBvdnNkYl9pZGxfY29uZGl0aW9uICpjb25kLCBlbnVtIG92c2RiX2Z1bmN0aW9uIGZ1bmN0aW9uLCAlKGFyZ3MpcyknICUgXAorKyAgICAgICAgICAgIHByaW50KGNvbW1lbnQpCisrICAgICAgICAgICAgcHJpbnQoJ3ZvaWQnKQorKyAgICAgICAgICAgIHByaW50KCclKHMpc19hZGRfY2xhdXNlXyUoYylzKHN0cnVjdCBvdnNkYl9pZGxfY29uZGl0aW9uICpjb25kLCBlbnVtIG92c2RiX2Z1bmN0aW9uIGZ1bmN0aW9uLCAlKGFyZ3MpcyknICUgXAorICAgICAgICAgICAgICAgICB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsCistICAgICAgICAgICAgICAgICAnYXJncyc6ICcsICcuam9pbihbJyUodHlwZSlzJShuYW1lKXMnICUgbSBmb3IgbSBpbiBtZW1iZXJzXSl9CistICAgICAgICAgICAgcHJpbnQgInsiCistICAgICAgICAgICAgcHJpbnQgIiAgICBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gZGF0dW07IgorKyAgICAgICAgICAgICAgICAgJ2FyZ3MnOiAnLCAnLmpvaW4oWyclKHR5cGUpcyUobmFtZSlzJyAlIG0gZm9yIG0gaW4gbWVtYmVyc10pfSkKKysgICAgICAgICAgICBwcmludCgieyIpCisrICAgICAgICAgICAgcHJpbnQoIiAgICBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gZGF0dW07IikKKyAgICAgICAgICAgICBmcmVlID0gW10KKyAgICAgICAgICAgICBpZiB0eXBlLm5fbWluID09IDEgYW5kIHR5cGUubl9tYXggPT0gMToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IikKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgdW5pb24gb3ZzZGJfYXRvbSB2YWx1ZTsiCistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ubiA9IDE7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLmtleXMgPSAma2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyLCByZWZUYWJsZT1GYWxzZSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgdW5pb24gb3ZzZGJfYXRvbSB2YWx1ZTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS5uID0gMTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLmtleXMgPSAma2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksIGtleVZhciwgcmVmVGFibGU9RmFsc2UpKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSAmdmFsdWU7IgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiKyB0eXBlLnZhbHVlLmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgidmFsdWUuJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCB2YWx1ZVZhciwgcmVmVGFibGU9RmFsc2UpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9ICZ2YWx1ZTsiKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiKyB0eXBlLnZhbHVlLmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgidmFsdWUuJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCB2YWx1ZVZhciwgcmVmVGFibGU9RmFsc2UpKQorICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiKQorICAgICAgICAgICAgIGVsaWYgdHlwZS5pc19vcHRpb25hbF9wb2ludGVyKCk6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGlmICglcykgeyIgJSBrZXlWYXIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ubiA9IDE7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0gZWxzZSB7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGlmICglcykgeyIgJSBrZXlWYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAxOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IGVsc2UgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAwOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiKQorICAgICAgICAgICAgIGVsaWYgdHlwZS5uX21heCA9PSAxOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBpZiAoJXMpIHsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIqIiArIGtleVZhciwgcmVmVGFibGU9RmFsc2UpCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSBlbHNlIHsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLm4gPSAwOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ua2V5cyA9IE5VTEw7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0iCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgaWYgKCVzKSB7IiAlIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAxOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiKiIgKyBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IGVsc2UgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAwOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ubiA9ICVzOyIgJSBuVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ua2V5cyA9ICVzID8geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0ua2V5cykgOiBOVUxMOyIgJSAoblZhciwgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS5uID0gJXM7IiAlIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ua2V5cyA9ICVzID8geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0ua2V5cykgOiBOVUxMOyIgJSAoblZhciwgblZhcikpCisgICAgICAgICAgICAgICAgIGZyZWUgKz0gWydkYXR1bS5rZXlzJ10KKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0udmFsdWVzKTsiICUgblZhcgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSB4bWFsbG9jKCVzICogc2l6ZW9mICpkYXR1bS52YWx1ZXMpOyIgJSBuVmFyKQorICAgICAgICAgICAgICAgICAgICAgZnJlZSArPSBbJ2RhdHVtLnZhbHVlcyddCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJXM7IGkrKykgeyIgJSBuVmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImRhdHVtLmtleXNbaV0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIiVzW2ldIiAlIGtleVZhciwgcmVmVGFibGU9RmFsc2UpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgiZGF0dW0ua2V5c1tpXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiJXNbaV0iICUga2V5VmFyLCByZWZUYWJsZT1GYWxzZSkpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS52YWx1ZS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImRhdHVtLnZhbHVlc1tpXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSB2YWx1ZVZhciwgcmVmVGFibGU9RmFsc2UpCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLnZhbHVlLmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgiZGF0dW0udmFsdWVzW2ldLiVzIiAlIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSwgIiVzW2ldIiAlIHZhbHVlVmFyLCByZWZUYWJsZT1GYWxzZSkpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSB0eXBlLnZhbHVlLnRvQXRvbWljVHlwZSgpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSAiT1ZTREJfVFlQRV9WT0lEIgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIG92c2RiX2RhdHVtX3NvcnRfdW5pcXVlKCZkYXR1bSwgJXMsICVzKTsiICUgKAorLSAgICAgICAgICAgICAgICAgICAgdHlwZS5rZXkudG9BdG9taWNUeXBlKCksIHZhbHVlVHlwZSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBvdnNkYl9kYXR1bV9zb3J0X3VuaXF1ZSgmZGF0dW0sICVzLCAlcyk7IiAlICgKKysgICAgICAgICAgICAgICAgICAgIHR5cGUua2V5LnRvQXRvbWljVHlwZSgpLCB2YWx1ZVR5cGUpKQorIAorLSAgICAgICAgICAgIHByaW50IiIiICAgIG92c2RiX2lkbF9jb25kaXRpb25fYWRkX2NsYXVzZShjb25kLAorKyAgICAgICAgICAgIHByaW50KCIiIiAgICBvdnNkYl9pZGxfY29uZGl0aW9uX2FkZF9jbGF1c2UoY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiUocylzX2NvbF8lKGMpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXR1bSk7XAorQEAgLTk3NCwyOCArOTc1LDI4IEBAIHZvaWQKKyAgICAgICAgJ1AnOiBwcmVmaXgudXBwZXIoKSwKKyAgICAgICAgJ3MnOiBzdHJ1Y3ROYW1lLAorICAgICAgICAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKSwKKy0gICAgICAgJ2MnOiBjb2x1bW5OYW1lfQorKyAgICAgICAnYyc6IGNvbHVtbk5hbWV9KQorICAgICAgICAgICAgIGZvciB2YXIgaW4gZnJlZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmcmVlKCVzKTsiICUgdmFyCistICAgICAgICAgICAgcHJpbnQgIn0iCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZnJlZSglcyk7IiAlIHZhcikKKysgICAgICAgICAgICBwcmludCgifSIpCisgCistICAgICAgICBwcmludCAiIiIKKysgICAgICAgIHByaW50KCIiIgorIHZvaWQKKyAlKHMpc19zZXRfY29uZGl0aW9uKHN0cnVjdCBvdnNkYl9pZGwgKmlkbCwgc3RydWN0IG92c2RiX2lkbF9jb25kaXRpb24gKmNvbmRpdGlvbikKKyB7CisgICAgIG92c2RiX2lkbF9zZXRfY29uZGl0aW9uKGlkbCwgJiUocClzdGFibGVfJSh0bClzLCBjb25kaXRpb24pOworIH0iIiIgJSB7J3AnOiBwcmVmaXgsCisgICAgICAgICAncyc6IHN0cnVjdE5hbWUsCistICAgICAgICAndGwnOiB0YWJsZU5hbWUubG93ZXIoKX0KKysgICAgICAgICd0bCc6IHRhYmxlTmFtZS5sb3dlcigpfSkKKyAKKyAgICAgICAgICMgVGFibGUgY29sdW1ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIHByZXJlcXMgPSBbXQorICAgICAgICAgICAgIHggPSBjb2x1bW4udHlwZS5jSW5pdFR5cGUoIiVzX2NvbF8lcyIgJSAodGFibGVOYW1lLCBjb2x1bW5OYW1lKSwgcHJlcmVxcykKKyAgICAgICAgICAgICBpZiBwcmVyZXFzOgorLSAgICAgICAgICAgICAgICBwcmludCAnXG4nLmpvaW4ocHJlcmVxcykKKy0gICAgICAgIHByaW50ICJcbnN0cnVjdCBvdnNkYl9pZGxfY29sdW1uICVzX2NvbHVtbnNbJXNfTl9DT0xVTU5TXSA9IHsiICUgKAorLSAgICAgICAgICAgIHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUudXBwZXIoKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJ1xuJy5qb2luKHByZXJlcXMpKQorKyAgICAgICAgcHJpbnQoIlxuc3RydWN0IG92c2RiX2lkbF9jb2x1bW4gJXNfY29sdW1uc1slc19OX0NPTFVNTlNdID0geyIgJSAoCisrICAgICAgICAgICAgc3RydWN0TmFtZSwgc3RydWN0TmFtZS51cHBlcigpKSkKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIGlmIGNvbHVtbi5tdXRhYmxlOgorICAgICAgICAgICAgICAgICBtdXRhYmxlID0gInRydWUiCitAQCAtMTAwMyw3ICsxMDA0LDcgQEAgdm9pZAorICAgICAgICAgICAgICAgICBtdXRhYmxlID0gImZhbHNlIgorICAgICAgICAgICAgIHR5cGVfaW5pdCA9ICdcbicuam9pbigiICAgICAgICAgICAgIiArIHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gY29sdW1uLnR5cGUuY0luaXRUeXBlKCIlc19jb2xfJXMiICUgKHRhYmxlTmFtZSwgY29sdW1uTmFtZSksIHByZXJlcXMpKQorLSAgICAgICAgICAgIHByaW50ICIiIlwKKysgICAgICAgICAgICBwcmludCgiIiJcCisgICAgIFslKFApcyUoVClzX0NPTF8lKEMpc10gPSB7CisgICAgICAgICAgLm5hbWUgPSAiJShjKXMiLAorICAgICAgICAgIC50eXBlID0geworQEAgLTEwMTgsMzggKzEwMTksMzggQEAgdm9pZAorICAgICAgICAgICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpLAorICAgICAgICAgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgICAgICAgICAnbXV0YWJsZSc6IG11dGFibGUsCistICAgICAgICAgICAgICAgJ3R5cGUnOiB0eXBlX2luaXR9CistICAgICAgICBwcmludCAifTsiCisrICAgICAgICAgICAgICAgJ3R5cGUnOiB0eXBlX2luaXR9KQorKyAgICAgICAgcHJpbnQoIn07IikKKyAKKyAgICAgIyBUYWJsZSBjbGFzc2VzLgorLSAgICBwcmludCAiDCIKKy0gICAgcHJpbnQgInN0cnVjdCBvdnNkYl9pZGxfdGFibGVfY2xhc3MgJXN0YWJsZV9jbGFzc2VzWyVzTl9UQUJMRVNdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkKKysgICAgcHJpbnQoIgwiKQorKyAgICBwcmludCgic3RydWN0IG92c2RiX2lkbF90YWJsZV9jbGFzcyAlc3RhYmxlX2NsYXNzZXNbJXNOX1RBQkxFU10gPSB7IiAlIChwcmVmaXgsIHByZWZpeC51cHBlcigpKSkKKyAgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlcml0ZW1zKCkpOgorICAgICAgICAgc3RydWN0TmFtZSA9ICIlcyVzIiAlIChwcmVmaXgsIHRhYmxlTmFtZS5sb3dlcigpKQorICAgICAgICAgaWYgdGFibGUuaXNfcm9vdDoKKyAgICAgICAgICAgICBpc19yb290ID0gInRydWUiCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGlzX3Jvb3QgPSAiZmFsc2UiCistICAgICAgICBwcmludCAiICAgIHtcIiVzXCIsICVzLCIgJSAodGFibGVOYW1lLCBpc19yb290KQorLSAgICAgICAgcHJpbnQgIiAgICAgJXNfY29sdW1ucywgQVJSQVlfU0laRSglc19jb2x1bW5zKSwiICUgKAorLSAgICAgICAgICAgIHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUpCistICAgICAgICBwcmludCAiICAgICBzaXplb2Yoc3RydWN0ICVzKSwgJXNfaW5pdF9ffSwiICUgKHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUpCistICAgIHByaW50ICJ9OyIKKysgICAgICAgIHByaW50KCIgICAge1wiJXNcIiwgJXMsIiAlICh0YWJsZU5hbWUsIGlzX3Jvb3QpKQorKyAgICAgICAgcHJpbnQoIiAgICAgJXNfY29sdW1ucywgQVJSQVlfU0laRSglc19jb2x1bW5zKSwiICUgKAorKyAgICAgICAgICAgIHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUpKQorKyAgICAgICAgcHJpbnQoIiAgICAgc2l6ZW9mKHN0cnVjdCAlcyksICVzX2luaXRfX30sIiAlIChzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lKSkKKysgICAgcHJpbnQoIn07IikKKyAKKyAgICAgIyBJREwgY2xhc3MuCistICAgIHByaW50ICJcbnN0cnVjdCBvdnNkYl9pZGxfY2xhc3MgJXNpZGxfY2xhc3MgPSB7IiAlIHByZWZpeAorLSAgICBwcmludCAiICAgIFwiJXNcIiwgJXN0YWJsZV9jbGFzc2VzLCBBUlJBWV9TSVpFKCVzdGFibGVfY2xhc3NlcykiICUgKAorLSAgICAgICAgc2NoZW1hLm5hbWUsIHByZWZpeCwgcHJlZml4KQorLSAgICBwcmludCAifTsiCisrICAgIHByaW50KCJcbnN0cnVjdCBvdnNkYl9pZGxfY2xhc3MgJXNpZGxfY2xhc3MgPSB7IiAlIHByZWZpeCkKKysgICAgcHJpbnQoIiAgICBcIiVzXCIsICVzdGFibGVfY2xhc3NlcywgQVJSQVlfU0laRSglc3RhYmxlX2NsYXNzZXMpIiAlICgKKysgICAgICAgIHNjaGVtYS5uYW1lLCBwcmVmaXgsIHByZWZpeCkpCisrICAgIHByaW50KCJ9OyIpCisgCistICAgIHByaW50ICIiIgorKyAgICBwcmludCgiIiIKKyAvKiBSZXR1cm4gdGhlIHNjaGVtYSB2ZXJzaW9uLiAgVGhlIGNhbGxlciBtdXN0IG5vdCBmcmVlIHRoZSByZXR1cm5lZCB2YWx1ZS4gKi8KKyBjb25zdCBjaGFyICoKKyAlc2dldF9kYl92ZXJzaW9uKHZvaWQpCisgeworICAgICByZXR1cm4gIiVzIjsKKyB9CistIiIiICUgKHByZWZpeCwgc2NoZW1hLnZlcnNpb24pCisrIiIiICUgKHByZWZpeCwgc2NoZW1hLnZlcnNpb24pKQorIAorIAorIAorQEAgLTEwNzUsNyArMTA3Niw3IEBAIGRlZiBvdnNkYl9lc2NhcGUoc3RyaW5nKToKKyAgICAgcmV0dXJuIHJlLnN1YihyJ1siXFxcMDAwLVwwMzddJywgZXNjYXBlLCBzdHJpbmcpCisgCisgZGVmIHVzYWdlKCk6CistICAgIHByaW50ICIiIlwKKysgICAgcHJpbnQoIiIiXAorICUoYXJndjApczogb3ZzZGIgc2NoZW1hIGNvbXBpbGVyCisgdXNhZ2U6ICUoYXJndjApcyBbT1BUSU9OU10gQ09NTUFORCBBUkcuLi4KKyAKK0BAIC0xMDg3LDcgKzEwODgsNyBAQCBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQ6CisgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhbHNvIGF2YWlsYWJsZToKKyAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlCisgICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uXAorLSIiIiAlIHsnYXJndjAnOiBhcmd2MH0KKysiIiIgJSB7J2FyZ3YwJzogYXJndjB9KQorICAgICBzeXMuZXhpdCgwKQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CitAQCAtMTEwNSw3ICsxMTA2LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgICAgICAgICBpZiBrZXkgaW4gWyctaCcsICctLWhlbHAnXToKKyAgICAgICAgICAgICAgICAgdXNhZ2UoKQorICAgICAgICAgICAgIGVsaWYga2V5IGluIFsnLVYnLCAnLS12ZXJzaW9uJ106CistICAgICAgICAgICAgICAgIHByaW50ICJvdnNkYi1pZGxjIChPcGVuIHZTd2l0Y2gpIEBWRVJTSU9OQCIKKysgICAgICAgICAgICAgICAgcHJpbnQoIm92c2RiLWlkbGMgKE9wZW4gdlN3aXRjaCkgQFZFUlNJT05AIikKKyAgICAgICAgICAgICBlbGlmIGtleSBpbiBbJy1DJywgJy0tZGlyZWN0b3J5J106CisgICAgICAgICAgICAgICAgIG9zLmNoZGlyKHZhbHVlKQorICAgICAgICAgICAgIGVsc2U6CistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDItUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4Y2VwdGlvbi1jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMi1QeXRob24zLWNvbXBhdGliaWxpdHktZXhjZXB0aW9uLWNsZWFudXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTljMGYzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDItUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4Y2VwdGlvbi1jbGVhbnVwLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gYzk4ZmVlNDFkMTMwY2I5NDZhYTRlNjBmZWZhYTZjYmYyMDNmNjc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGV4Y2VwdGlvbiBjbGVhbnVwCisKK0NvbW1pdCA1MmU0YTQ3N2YwYjNjMGEwZWNlN2FkZWVkZTZlMDZlMDc4MTRmOGI5IGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK1RoZSBleGNlcHRpb24gc3ludGF4IHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCBweXRob24yIGFuZCBweXRob24zIGlzCit0byB1c2UgdGhlICJhcyIgZm9ybSBmb3IgImV4Y2VwdDoiLgorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgfCAyICstCisgb3ZzZGIvb3ZzZGItZG9jICAgICAgICAgICAgICB8IDQgKystLQorIG92c2RiL292c2RiLWlkbGMuaW4gICAgICAgICAgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCitpbmRleCA0MjVhODVmLi42MWU3NTJiIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworQEAgLTc4NCw3ICs3ODQsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICB0cnk6CisgICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdudV9nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydoZWxwJywgJ292cy12ZXJzaW9uPSddKQorLSAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBnZW86CisrICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3IgYXMgZ2VvOgorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKGFyZ3YwLCBnZW8ubXNnKSkKKyAgICAgICAgIHN5cy5leGl0KDEpCisgCitkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItZG9jIGIvb3ZzZGIvb3ZzZGItZG9jCitpbmRleCBiMzRmYjExLi45MThlODhhIDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItZG9jCisrKysgYi9vdnNkYi9vdnNkYi1kb2MKK0BAIC0yNzgsNyArMjc4LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdudV9nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnaFYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VyLWRpYWdyYW09JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uPScsICdoZWxwJ10pCistICAgICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBnZW86CisrICAgICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIGdlbzoKKyAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoYXJndjAsIGdlby5tc2cpKQorICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgCitAQCAtMzA2LDcgKzMwNiw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICAgICAgaWYgbGVuKGxpbmUpOgorICAgICAgICAgICAgICAgICBwcmludChsaW5lKQorIAorLSAgICBleGNlcHQgZXJyb3IuRXJyb3IsIGU6CisrICAgIGV4Y2VwdCBlcnJvci5FcnJvciBhcyBlOgorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKGFyZ3YwLCBlLm1zZykpCisgICAgICAgICBzeXMuZXhpdCgxKQorIAorZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCitpbmRleCAxMDY0NDQ4Li44Yjg1ZjBkIDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgorKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgorQEAgLTEwOTgsNyArMTA5OCw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZGlyZWN0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJ10pCistICAgICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBnZW86CisrICAgICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIGdlbzoKKyAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoYXJndjAsIGdlby5tc2cpKQorICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgCitAQCAtMTEzNiw3ICsxMTM2LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgICAgICAgICBzeXMuZXhpdCgxKQorIAorICAgICAgICAgZnVuYygqYXJnc1sxOl0pCistICAgIGV4Y2VwdCBvdnMuZGIuZXJyb3IuRXJyb3IsIGU6CisrICAgIGV4Y2VwdCBvdnMuZGIuZXJyb3IuRXJyb3IgYXMgZToKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChhcmd2MCwgZSkpCisgICAgICAgICBzeXMuZXhpdCgxKQorIAorLS0gCisyLjUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAzLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGVjZmlsZS10by1leGVjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMy1QeXRob24zLWNvbXBhdGliaWxpdHktZXhlY2ZpbGUtdG8tZXhlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODU5ODBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMy1QeXRob24zLWNvbXBhdGliaWxpdHktZXhlY2ZpbGUtdG8tZXhlYy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDljYmFlODZiZTAzNzU2ZGY3NjU2MGMxNTcyMDc1NmY5YWMwODgxNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAyMDozMzoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvOF0gUHl0aG9uMyBjb21wYXRpYmlsaXR5OiBleGVjZmlsZSB0byBleGVjCisKK0NvbW1pdCBhNGQxMGE3Y2E5MzdkNzM4NzNmNmY5ODYxOWQ4ODY4MmU2OWY1ZGJlIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK0FsbG93IGNvbXBhYmlsaXR5IHdpdGggcHl0aG9uMyBhbmQgcHl0aG9uMiBieSBjaGFuZ2luZyBleGVjZmlsZSgpIHRvCitleGVjKCkuCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgb3ZzZGIvb3ZzZGItaWRsYy5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCitpbmRleCA4Yjg1ZjBkLi4zZmExYTBmIDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgorKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgorQEAgLTE3LDcgKzE3LDcgQEAgZGVmIHBhcnNlU2NoZW1hKGZpbGVuYW1lKToKKyAKKyBkZWYgYW5ub3RhdGVTY2hlbWEoc2NoZW1hRmlsZSwgYW5ub3RhdGlvbkZpbGUpOgorICAgICBzY2hlbWFKc29uID0gb3ZzLmpzb24uZnJvbV9maWxlKHNjaGVtYUZpbGUpCistICAgIGV4ZWNmaWxlKGFubm90YXRpb25GaWxlLCBnbG9iYWxzKCksIHsicyI6IHNjaGVtYUpzb259KQorKyAgICBleGVjKGNvbXBpbGUob3Blbihhbm5vdGF0aW9uRmlsZSwgInJiIikucmVhZCgpLCBhbm5vdGF0aW9uRmlsZSwgJ2V4ZWMnKSwgZ2xvYmFscygpLCB7InMiOiBzY2hlbWFKc29ufSkKKyAgICAgb3ZzLmpzb24udG9fc3RyZWFtKHNjaGVtYUpzb24sIHN5cy5zdGRvdXQpCisgICAgIHN5cy5zdGRvdXQud3JpdGUoJ1xuJykKKyAKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNC1QeXRob24zLWNvbXBhdGliaWxpdHktaXRlcml0ZW1zLXRvLWl0ZW1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNC1QeXRob24zLWNvbXBhdGliaWxpdHktaXRlcml0ZW1zLXRvLWl0ZW1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzg2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA0LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1pdGVyaXRlbXMtdG8taXRlbXMucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gMGYzMThlNDcyZDk4OTdkOTkzOTVhZGNmYjE3Y2JlYWZmMDU2NzdiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGl0ZXJpdGVtcyB0byBpdGVtcworCitDb21taXQgNGFiNjY1NjIzY2JiNGM2NTA2ZTQ4YjgyZTBjOWZlODU4NWY0MmUxMyBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAorCitBbGxvdyBjb21wYWJpbGl0eSB3aXRoIHB5dGhvbjMgYW5kIHB5dGhvbjIgYnkgY2hhbmdpbmcgaXRlcml0ZW1zKCkgdG8KK2l0ZW1zKCkuCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMgfCAyICstCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycyAgfCAyICstCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcyAgfCAyICstCisgb3ZzZGIvb3ZzZGItaWRsYy5pbiAgICAgICAgICAgfCA4ICsrKystLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCitpbmRleCA4NzRlNmI0Li5jMTEyOTdjIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCitAQCAtMTMsNyArMTMsNyBAQCB2ZXJzaW9uX21hcCA9IHsiMS4wIjogMHgwMSwKKyAgICAgICAgICAgICAgICAiMS4zIjogMHgwNCwKKyAgICAgICAgICAgICAgICAiMS40IjogMHgwNSwKKyAgICAgICAgICAgICAgICAiMS41IjogMHgwNn0KKy12ZXJzaW9uX3JldmVyc2VfbWFwID0gZGljdCgodiwgaykgZm9yIChrLCB2KSBpbiB2ZXJzaW9uX21hcC5pdGVyaXRlbXMoKSkKKyt2ZXJzaW9uX3JldmVyc2VfbWFwID0gZGljdCgodiwgaykgZm9yIChrLCB2KSBpbiB2ZXJzaW9uX21hcC5pdGVtcygpKQorIAorICMgTWFwIGZyb20gdmVuZG9yIG5hbWUgdG8gdGhlIGxlbmd0aCBvZiB0aGUgYWN0aW9uIGhlYWRlci4KKyB2ZW5kb3JfbWFwID0geyJPRiI6ICgweDAwMDAwMDAwLCAgNCksCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKK2luZGV4IDMzNmEyNDAuLjcxYWUwYmQgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCisrKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCitAQCAtMTQsNyArMTQsNyBAQCB2ZXJzaW9uX21hcCA9IHsiMS4wIjogMHgwMSwKKyAgICAgICAgICAgICAgICAiMS40IjogMHgwNSwKKyAgICAgICAgICAgICAgICAiMS41IjogMHgwNiwKKyAgICAgICAgICAgICAgICAiMS42IjogMHgwN30KKy12ZXJzaW9uX3JldmVyc2VfbWFwID0gZGljdCgodiwgaykgZm9yIChrLCB2KSBpbiB2ZXJzaW9uX21hcC5pdGVyaXRlbXMoKSkKKyt2ZXJzaW9uX3JldmVyc2VfbWFwID0gZGljdCgodiwgaykgZm9yIChrLCB2KSBpbiB2ZXJzaW9uX21hcC5pdGVtcygpKQorIAorIHRva2VuID0gTm9uZQorIGxpbmUgPSAiIgorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCitpbmRleCA2MWU3NTJiLi5lZjk5N2RkIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworQEAgLTE2LDcgKzE2LDcgQEAgVkVSU0lPTiA9IHsiMS4wIjogMHgwMSwKKyAgICAgICAgICAgICIxLjMiOiAweDA0LAorICAgICAgICAgICAgIjEuNCI6IDB4MDUsCisgICAgICAgICAgICAiMS41IjogMHgwNn0KKy1WRVJTSU9OX1JFVkVSU0UgPSBkaWN0KCh2LGspIGZvciBrLCB2IGluIFZFUlNJT04uaXRlcml0ZW1zKCkpCisrVkVSU0lPTl9SRVZFUlNFID0gZGljdCgodixrKSBmb3IgaywgdiBpbiBWRVJTSU9OLml0ZW1zKCkpCisgCisgVFlQRVMgPSB7InU4IjogICAgICAgKDEsICAgRmFsc2UpLAorICAgICAgICAgICJiZTE2IjogICAgICgyLCAgIEZhbHNlKSwKK2RpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1pZGxjLmluIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgoraW5kZXggM2ZhMWEwZi4uNjE1NTQ4ZiAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWlkbGMuaW4KKysrKyBiL292c2RiL292c2RiLWlkbGMuaW4KK0BAIC0xMzgsNyArMTM4LDcgQEAgZGVmIHByaW50Q0lETEhlYWRlcihzY2hlbWFGaWxlKToKKyAjaW5jbHVkZSAic21hcC5oIgorICNpbmNsdWRlICJ1dWlkLmgiJycnICUgeydwcmVmaXgnOiBwcmVmaXgudXBwZXIoKX0pCisgCistICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKysgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCisgCisgICAgICAgICBwcmludCgiDCIpCitAQCAtMzAwLDcgKzMwMCw3IEBAIGRlZiBwcmludENJRExTb3VyY2Uoc2NoZW1hRmlsZSk6CisgJycnICUgc2NoZW1hLmlkbEhlYWRlcikKKyAKKyAgICAgIyBDYXN0IGZ1bmN0aW9ucy4KKy0gICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlcml0ZW1zKCkpOgorKyAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVtcygpKToKKyAgICAgICAgIHN0cnVjdE5hbWUgPSAiJXMlcyIgJSAocHJlZml4LCB0YWJsZU5hbWUubG93ZXIoKSkKKyAgICAgICAgIHByaW50KCcnJworIHN0YXRpYyBzdHJ1Y3QgJShzKXMgKgorQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgc3RydWN0ICUocylzICoKKyAnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lfSkKKyAKKyAKKy0gICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlcml0ZW1zKCkpOgorKyAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVtcygpKToKKyAgICAgICAgIHN0cnVjdE5hbWUgPSAiJXMlcyIgJSAocHJlZml4LCB0YWJsZU5hbWUubG93ZXIoKSkKKyAgICAgICAgIHByaW50KCIMIikKKyAgICAgICAgIHByaW50KCIvKiAlcyB0YWJsZS4gKi8iICUgKHRhYmxlTmFtZSkpCitAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZAorICAgICAjIFRhYmxlIGNsYXNzZXMuCisgICAgIHByaW50KCIMIikKKyAgICAgcHJpbnQoInN0cnVjdCBvdnNkYl9pZGxfdGFibGVfY2xhc3MgJXN0YWJsZV9jbGFzc2VzWyVzTl9UQUJMRVNdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkpCistICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKysgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCisgICAgICAgICBpZiB0YWJsZS5pc19yb290OgorICAgICAgICAgICAgIGlzX3Jvb3QgPSAidHJ1ZSIKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNS1QeXRob24zLWNvbXBhdGliaWxpdHktZml4LWludGVnZXItcHJvYmxlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA1LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1maXgtaW50ZWdlci1wcm9ibGVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTdhOTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNS1QeXRob24zLWNvbXBhdGliaWxpdHktZml4LWludGVnZXItcHJvYmxlbXMucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBiYzI5Zjk4ZjAxMzdmYTEwODNhNGNhY2Y4MzJkNTJmNzQwZDE1MGE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogZml4IGludGVnZXIgcHJvYmxlbXMKKworQ29tbWl0IGZhMTQ1ZjFhNTM5NDMyNDNmOTRhMzJjZTk4NTI1ZGI4NDk0YjAwNTIgZnJvbQoraHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKKworSW4gcHl0aG9uMyBtYXhpbnQgaXMgbm90IGRlZmluZWQsIGJ1dCBtYXhzaXplIGlzIGRlZmluZWQgaW4gYm90aAorcHl0aG9uMiBhbmQgcHl0aG9uMy4KKworVGhlIHB1dF90ZXh0KCkgd2lsbCBub3QgYXV0b21hdGljYWxseSB1c2UgYSB2YWx1ZSB3aGljaCBjYW1lIGluIGFzCitmbG9hdCBkdWUgdG8gYSBwaW9yIG1hdGggZnVuY3Rpb24gYW5kIHB5dGhvbjMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uCitUaGUgc2ltcGxlIGFuc3dlciBpcyB0byBjb252ZXJ0IGl0IHdpdGggaW50KCkgYW5kIG1vdmUgb24uCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgb3ZzZGIvb3ZzZGItaWRsYy5pbiAgIHwgMiArLQorIHB5dGhvbi9idWlsZC9ucm9mZi5weSB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItaWRsYy5pbiBiL292c2RiL292c2RiLWlkbGMuaW4KK2luZGV4IDYxNTU0OGYuLjdjYmNiZjUgMTAwNzU1CistLS0gYS9vdnNkYi9vdnNkYi1pZGxjLmluCisrKysgYi9vdnNkYi9vdnNkYi1pZGxjLmluCitAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyB2b2lkCisgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlcyIgJSB0eXBlLnZhbHVlLmluaXRDRGVmYXVsdCh2YWx1ZVZhciwgdHlwZS5uX21pbiA9PSAwKSkKKyAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IikKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBpZiB0eXBlLm5fbWF4ICE9IHN5cy5tYXhpbnQ6CisrICAgICAgICAgICAgICAgIGlmIHR5cGUubl9tYXggIT0gc3lzLm1heHNpemU6CisgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHNpemVfdCBuID0gTUlOKCVkLCBkYXR1bS0+bik7IiAlIHR5cGUubl9tYXgpCisgICAgICAgICAgICAgICAgICAgICBuTWF4ID0gIm4iCisgICAgICAgICAgICAgICAgIGVsc2U6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL2J1aWxkL25yb2ZmLnB5IGIvcHl0aG9uL2J1aWxkL25yb2ZmLnB5CitpbmRleCBjMjM4MzdmLi40MDFmNjk5IDEwMDY0NAorLS0tIGEvcHl0aG9uL2J1aWxkL25yb2ZmLnB5CisrKysgYi9weXRob24vYnVpbGQvbnJvZmYucHkKK0BAIC0xNDgsNiArMTQ4LDggQEAgZGVmIGZhdGFsKG1zZyk6CisgCisgCisgZGVmIHB1dF90ZXh0KHRleHQsIHgsIHksIHMpOgorKyAgICB4ID0gaW50KHgpCisrICAgIHkgPSBpbnQoeSkKKyAgICAgZXh0ZW5kID0geCArIGxlbihzKSAtIGxlbih0ZXh0W3ldKQorICAgICBpZiBleHRlbmQgPiAwOgorICAgICAgICAgdGV4dFt5XSArPSAnICcgKiBleHRlbmQKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNi1QeXRob24zLWNvbXBhdGliaWxpdHktbWF0aC1lcnJvci1jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNi1QeXRob24zLWNvbXBhdGliaWxpdHktbWF0aC1lcnJvci1jb21wYXRpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OTA1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA2LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1tYXRoLWVycm9yLWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSAzYTlmY2YxYzhmNjBjMTYwYzI4MmM5NzU1ZWUxYzdmOWY3ZTExM2MzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA2LzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogbWF0aCBlcnJvciBjb21wYXRpYmlsaXR5CisKK0NvbW1pdCAzZmE1YWE0Mjk0Mzc3ZTBmMzUyNjc5MzZkMGM1Y2FlYTNlNjFkYjQ4IGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK1RoZSB3YXkgbWF0aCBpcyBoYW5kbGVkIHdpdGggdHlwaW5nIGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGluIHB5dGhvbjMuCisKKyUgcHl0aG9uMjw8RU9GCit4PTEwCit5PTgKK3ByaW50KCh4ICsgKHkgLSAxKSkgLyB5ICogeSkKK0VPRgorMTYKKworcHl0aG9uMzw8RU9GCit4PTEwCit5PTgKK3ByaW50KCh4ICsgKHkgLSAxKSkgLyB5ICogeSkKK0VPRgorMTcuMAorCitTbyB3ZSBuZWVkIHRvIGZvcmNlIGFuIGludGVnZXIgZm9yIHRoZSByb3VuZCBmdW5jdGlvbiBhcyBmb2xsb3dzIGFuZAorbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHB5dGhvbjIuCisKK3B5dGhvbjM8PEVPRgoreD0xMAoreT04CitwcmludChpbnQoKHggKyAoeSAtIDEpKSAvIHkpICogeSkKK0VPRgorMTYKKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CistLS0KKyBidWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKK2luZGV4IGMxMTI5N2MuLmJkNzEzMWYgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKK0BAIC0zNSw3ICszNSw3IEBAIGxpbmUgPSAiIgorIGFyZ19zdHJ1Y3RzID0gc2V0KCkKKyAKKyBkZWYgcm91bmRfdXAoeCwgeSk6CistICAgIHJldHVybiAoeCArICh5IC0gMSkpIC8geSAqIHkKKysgICAgcmV0dXJuIGludCgoeCArICh5IC0gMSkpIC8geSkgKiB5CisgCisgZGVmIG9wZW5fZmlsZShmbik6CisgICAgIGdsb2JhbCBmaWxlX25hbWUKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNy1QeXRob24zLWNvbXBhdGliaWxpdHktdW5pY29kZS10by1zdHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA3LVB5dGhvbjMtY29tcGF0aWJpbGl0eS11bmljb2RlLXRvLXN0ci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWEzMmI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNy1QeXRob24zLWNvbXBhdGliaWxpdHktdW5pY29kZS10by1zdHIucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSAyZmU1OGY4N2IwMGQwZWMyNGQ2OTk3OTMwZDBiY2RiMTMwYzg0Mzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA3LzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogdW5pY29kZSB0byBzdHIKKworQ29tbWl0IDc0MzA5NTlkNGFkMTdkYjg5YjgzODdjM2FlZjU4YzhiMjMwY2FkMTAgZnJvbQoraHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKKworV2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gcHl0aG9uMiB0byBweXRob24zIHRoZSBmb2xsb3dpbmcgdHlwZSBjbGFzcworY2hhbmdlcyBvY2N1cmVkOgorCitweXRob24yIC0+IHB5dGhvbjMKK3VuaWNvZGUgLT4gc3RyCitzdHIgLT4gYnl0ZXMKKworVGhhdCBtZWFucyB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBweXRob24gdmVyc2lvbiBhbmQgZG8gdGhlIHJpZ2h0IHR5cGUKK2NoZWNrIHB5dGhvbjMgd2lsbCB0aHJvdyBhbiBlcnJvciB3aGVuIGl0IHRyaWVzIHRvIHVzZSB0aGUgdW5pY29kZQordHlwZSBiZWNhdXNlIGl0IGRvZXNuJ3QgZXhpc3QuCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgb3ZzZGIvb3ZzZGItZG9jIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWRvYyBiL292c2RiL292c2RiLWRvYworaW5kZXggOTE4ZTg4YS4uNDA2YzI5MyAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWRvYworKysrIGIvb3ZzZGIvb3ZzZGItZG9jCitAQCAtNjUsOSArNjUsMTUgQEAgZGVmIGNvbHVtbkdyb3VwVG9Ocm9mZih0YWJsZSwgZ3JvdXBYbWwsIGRvY3VtZW50ZWRfY29sdW1ucyk6CisgICAgICAgICAgICAgICAgIGlmIG5vZGUuaGFzQXR0cmlidXRlKCd0eXBlJyk6CisgICAgICAgICAgICAgICAgICAgICB0eXBlX3N0cmluZyA9IG5vZGUuYXR0cmlidXRlc1sndHlwZSddLm5vZGVWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgdHlwZV9qc29uID0gb3ZzLmpzb24uZnJvbV9zdHJpbmcoc3RyKHR5cGVfc3RyaW5nKSkKKy0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUodHlwZV9qc29uKSBpbiAoc3RyLCB1bmljb2RlKToKKy0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5FcnJvcigiJXMgJXM6JXMgaGFzIGludmFsaWQgJ3R5cGUnOiAlcyIgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGFibGUubmFtZSwgbmFtZSwga2V5LCB0eXBlX2pzb24pKQorKyAgICAgICAgICAgICAgICAgICAgIyBweTIgLT4gcHkzIG1lYW5zIHN0ciAtPiBieXRlcyBhbmQgdW5pY29kZSAtPiBzdHIKKysgICAgICAgICAgICAgICAgICAgIHRyeToKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHR5cGVfanNvbikgaW4gKHN0ciwgdW5pY29kZSk6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLkVycm9yKCIlcyAlczolcyBoYXMgaW52YWxpZCAndHlwZSc6ICVzIiAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGFibGUubmFtZSwgbmFtZSwga2V5LCB0eXBlX2pzb24pKQorKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUodHlwZV9qc29uKSBpbiAoYnl0ZXMsIHN0cik6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLkVycm9yKCIlcyAlczolcyBoYXMgaW52YWxpZCAndHlwZSc6ICVzIiAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGFibGUubmFtZSwgbmFtZSwga2V5LCB0eXBlX2pzb24pKQorICAgICAgICAgICAgICAgICAgICAgdHlwZV8gPSBvdnMuZGIudHlwZXMuQmFzZVR5cGUuZnJvbV9qc29uKHR5cGVfanNvbikKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfID0gY29sdW1uLnR5cGUudmFsdWUKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwOC1BVVRIT1JTLUFkZC1KYXNvbi1XZXNzZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA4LUFVVEhPUlMtQWRkLUphc29uLVdlc3NlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmMyYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwOC1BVVRIT1JTLUFkZC1KYXNvbi1XZXNzZWwucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBhMzI4OWFkZDgzNjhlMGM5NzBhZTFjMWM4NGY1ZGYxZjgxN2VkNDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KK0RhdGU6IFRodSwgNiBKdWwgMjAxNyAxNDowMToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDgvOF0gQVVUSE9SUzogQWRkIEphc29uIFdlc3NlbC4KKworQ29tbWl0IGE5MWM0Y2ZhZjg2MzcxOGJjOTRmYjljODg5MzliZDBiMDM4NWE2ZmUgZnJvbQoraHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKKworU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIEFVVEhPUlMucnN0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9BVVRIT1JTLnJzdCBiL0FVVEhPUlMucnN0CitpbmRleCA2M2U2YThkLi5kMGRjNzBkIDEwMDY0NAorLS0tIGEvQVVUSE9SUy5yc3QKKysrKyBiL0FVVEhPUlMucnN0CitAQCAtMTU2LDYgKzE1Niw3IEBAIEphbiBTY2hldXJpY2ggICAgICAgICAgICAgICAgICAgamFuLnNjaGV1cmljaEBlcmljc3Nvbi5jb20KKyBKYW4gVmFuc3RlZW5raXN0ZSAgICAgICAgICAgICAgIGphbkB2c3RvbmUuZXUKKyBKYXJubyBSYWphaGFsbWUgICAgICAgICAgICAgICAgIGphcm5vQG92bi5vcmcKKyBKYXNvbiBLw7Zsa2VyICAgICAgICAgICAgICAgICAgICBqYXNvbkBrb2Vsa2VyLm5ldAorK0phc29uIFdlc3NlbCAgICAgICAgICAgICAgICAgICAgamFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20KKyBKYXNwZXIgQ2FwZWwgICAgICAgICAgICAgICAgICAgIGphc3BlckBjYXBlbC50dgorIEplYW4gVG91cnJpbGhlcyAgICAgICAgICAgICAgICAganRAaHBsLmhwLmNvbQorIEplcmVteSBTdHJpYmxpbmcgICAgICAgICAgICAgICAgc3RyaWJAbmljaXJhLmNvbQorLS0gCisyLjUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9DVkUtMjAxNy05MjYzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvQ1ZFLTIwMTctOTI2My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmMzYWExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvQ1ZFLTIwMTctOTI2My5wYXRjaApAQCAtMCwwICsxLDI5IEBACitBIGJ1Z2d5IG9yIG1hbGljaW91cyBzd2l0Y2ggY291bGQgc2VuZCBhIHJvbGUgc3RhdHVzIG1lc3NhZ2Ugd2l0aCBhIGJhZAorcmVhc29uIGNvZGUsIHdoaWNoIGlmIHByaW50ZWQgYnkgT1ZTIHdvdWxkIGNhdXNlIGl0IHRvIGFib3J0LiAgVGhpcyBmaXhlcwordGhlIHByb2JsZW0uCisKK0NWRTogQ1ZFLTIwMTctOTI2MworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworUmVwb3J0ZWQtYnk6IEJoYXJnYXZhIFNoYXN0cnkgPGJzaGFzdHJ5IGF0IHNlYy50LWxhYnMudHUtYmVybGluLmRlPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHAgYXQgb3ZuLm9yZz4KKy0tLQorIGxpYi9vZnAtcHJpbnQuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL29mcC1wcmludC5jIGIvbGliL29mcC1wcmludC5jCitpbmRleCA3Y2E5NTMxMDA1MzkuLjE5MzJiYWY0ODcxZiAxMDA2NDQKKy0tLSBhL2xpYi9vZnAtcHJpbnQuYworKysrIGIvbGliL29mcC1wcmludC5jCitAQCAtMjE0Nyw3ICsyMTQ3LDggQEAgb2ZwX3ByaW50X3JvbGVfc3RhdHVzX21lc3NhZ2Uoc3RydWN0IGRzICpzdHJpbmcsIGNvbnN0IHN0cnVjdCBvZnBfaGVhZGVyICpvaCkKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIE9GUENSUl9OX1JFQVNPTlM6CisgICAgIGRlZmF1bHQ6CistICAgICAgICBPVlNfTk9UX1JFQUNIRUQoKTsKKysgICAgICAgIGRzX3B1dF9jc3RyKHN0cmluZywgIih1bmtub3duKSIpOworKyAgICAgICAgYnJlYWs7CisgICAgIH0KKyB9CisgCistLSAKKzIuMTAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvb3BlbnZzd2l0Y2gtYWRkLXB0ZXN0LWMyOThlZjc4MWMyZDM1ZDkzOWZlMTYzY2JjMmY0MWVhN2IxY2I4ZDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9vcGVudnN3aXRjaC1hZGQtcHRlc3QtYjI5Y2I4OWU5ZTlmZTMxMTliMmU1ZGQ1ZDRmYjc5MTQxNjM1YjdjYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvb3BlbnZzd2l0Y2gtYWRkLXB0ZXN0LWMyOThlZjc4MWMyZDM1ZDkzOWZlMTYzY2JjMmY0MWVhN2IxY2I4ZDEucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1iMjljYjg5ZTllOWZlMzExOWIyZTVkZDVkNGZiNzkxNDE2MzViN2NjLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guaW5jCmluZGV4IDFmMGI1MmIuLjU4ZTBmY2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guaW5jCkBAIC0xMSwxMSArMTEsMTEgQEAKIFNFQ1RJT04gPSAibmV0d29ya2luZyIKIExJQ0VOU0UgPSAiQXBhY2hlLTIiCiAKLURFUEVORFMgKz0gImJyaWRnZS11dGlscyBvcGVuc3NsIHB5dGhvbiBwZXJsIHB5dGhvbi1zaXgtbmF0aXZlIGNvcmV1dGlscy1uYXRpdmUiCitERVBFTkRTICs9ICJicmlkZ2UtdXRpbHMgb3BlbnNzbCBweXRob24zIHBlcmwgcHl0aG9uMy1zaXgtbmF0aXZlIGNvcmV1dGlscy1uYXRpdmUiCiAKIFJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4LXV1aWRnZW4gdXRpbC1saW51eC1saWJ1dWlkIGNvcmV1dGlscyBcCi0JcHl0aG9uIHBlcmwgcGVybC1tb2R1bGUtc3RyaWN0ICR7UE59LXN3aXRjaCBcCi0gICAgICAgIGJhc2ggcHl0aG9uLXR3aXN0ZWQgcHl0aG9uLXNpeCIKKyAgICAgICAgcHl0aG9uMyBwZXJsIHBlcmwtbW9kdWxlLXN0cmljdCAke1BOfS1zd2l0Y2ggXAorICAgICAgICBiYXNoIHB5dGhvbjMtdHdpc3RlZCBweXRob24zLXNpeCIKIFJERVBFTkRTXyR7UE59LXRlc3Rjb250cm9sbGVyID0gIiR7UE59IGxzYiAke1BOfS1wa2kiCiBSREVQRU5EU18ke1BOfS1zd2l0Y2ggPSAiJHtQTn0gb3BlbnNzbCBwcm9jcHMgdXRpbC1saW51eC11dWlkZ2VuIgogUkRFUEVORFNfJHtQTn0tcGtpID0gIiR7UE59IgpAQCAtMzQsNyArMzQsNyBAQAogCSIKIAogRVhUUkFfT0VDT05GICs9ICJcCi0JUFlUSE9OPXB5dGhvbiBcCisJUFlUSE9OPXB5dGhvbjMgXAogCVBZVEhPTjM9cHl0aG9uMyBcCiAJUEVSTD0ke2JpbmRpcn0vcGVybCBcCiAJIgpAQCAtNzAsNyArNzAsNyBAQAogRklMRVNfJHtQTn0gKz0gIi9ydW4iCiAKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059LyIKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHB5dGhvbjNuYXRpdmUKIAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zd2l0Y2giCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3dpdGNoID0gIiBcCkBAIC04Niw2ICs4NiwxMiBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59LXRlc3Rjb250cm9sbGVyID0gIm9wZW52c3dpdGNoLXRlc3Rjb250cm9sbGVyIgogSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tdGVzdGNvbnRyb2xsZXIgPSAiZGVmYXVsdHMgNzIiCiAKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgV29yayBhcm91bmQgdGhlIGZvciBNYWtlZmlsZSBDQz0kKGlmIC4uLi4pIGJ5IHN3YXBwaW5nIG91dCBhbnkKKwkjICItV2EsIiBhc3NlbWJseSBkaXJlY3RpdmVzIHdpdGggIi1YYXNzZW1ibGVyCisJQ0M9YGVjaG8gJyR7Q0N9JyB8IHNlZCAncy8tV2EsLy1YYXNzZW1ibGVyIC9nJ2AKK30KKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC8KIAlpbnN0YWxsIC1tIDY2MCAke1dPUktESVJ9L29wZW52c3dpdGNoLXN3aXRjaC1zZXR1cCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9vcGVudnN3aXRjaC1zd2l0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKaW5kZXggMWZiODJhZS4uYjRhYWIzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKQEAgLTMsMjAgKzMsMjAgQEAKIERFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgogCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiXAotCXB5dGhvbi1sb2dnaW5nIHB5dGhvbi1zeXNsb2cgcHl0aG9uLWFyZ3BhcnNlIHB5dGhvbi1pbyBcCi0JcHl0aG9uLWZjbnRsIHB5dGhvbi1zaGVsbCBweXRob24tbGFuZyBweXRob24teG1sIHB5dGhvbi1tYXRoIFwKLQlweXRob24tZGF0ZXRpbWUgcHl0aG9uLW5ldGNsaWVudCBweXRob24gc2VkIFwKKwlweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zeXNsb2cgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLWlvIFwKKwlweXRob24zLWZjbnRsIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1sYW5nIHB5dGhvbjMteG1sIHB5dGhvbjMtbWF0aCBcCisJcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zIHNlZCBcCiAJbGRkIHBlcmwtbW9kdWxlLXNvY2tldCBwZXJsLW1vZHVsZS1jYXJwIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLQlwZXJsLW1vZHVsZS14c2xvYWRlciBweXRob24tbmV0c2VydmVyIHB5dGhvbi10aHJlYWRpbmcgXAotCXB5dGhvbi1yZXNvdXJjZSBweXRob24tc3VicHJvY2VzcyBcCisJcGVybC1tb2R1bGUteHNsb2FkZXIgcHl0aG9uMy1uZXRzZXJ2ZXIgcHl0aG9uMy10aHJlYWRpbmcgXAorCXB5dGhvbjMtcmVzb3VyY2UgcHl0aG9uMy1zdWJwcm9jZXNzIGZpbmR1dGlscyB3aGljaCBcCiAJIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotUFYgPSAiMi43LjArJHtTUkNSRVZ9IgorUFYgPSAiMi43LjErJHtTUkNSRVZ9IgogCiBGSUxFU0VYVFJBUEFUSFNfYXBwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59LWdpdDoiCiAKLVNSQ1JFViA9ICJjMjk4ZWY3ODFjMmQzNWQ5MzlmZTE2M2NiYzJmNDFlYTdiMWNiOGQxIgorU1JDUkVWID0gImIyOWNiODllOWU5ZmUzMTE5YjJlNWRkNWQ0ZmI3OTE0MTYzNWI3Y2MiCiBTUkNfVVJJID0gImZpbGU6Ly9vcGVudnN3aXRjaC1zd2l0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbnZzd2l0Y2gtc3dpdGNoLXNldHVwIFwKICAgICAgICAgICAgZmlsZTovL29wZW52c3dpdGNoLXRlc3Rjb250cm9sbGVyIFwKQEAgLTI5LDEyICsyOSwzMCBAQAogICAgICAgICAgICBmaWxlOi8vcHl0aG9uLW1ha2UtcmVtYWluaW5nLXNjcmlwdHMtdXNlLXVzci1iaW4tZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLXRoZS1saW51eC1pZl9wYWNrZXQuaC1JbnRlcmZhY2UtZGlyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1EZWZpbmUtV0FJVF9BTlktaWYtbm90LXByb3ZpZGVkLWJ5LXN5c3RlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MjYzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zd2l0Y2gtcmVtYWluaW5nLXNjcmlwdHMtdG8tdXNlLXB5dGhvbjMucGF0Y2ggXAogICAgICAgICAgICAiCiAKKyMgVGVtcG9yYXJpbHkgYmFja3BvcnQgcGF0Y2hlcyB0byBiZXR0ZXIgc3VwcG9ydCBweTMuIFRoZXNlIGhhdmUgYmVlbgorIyBtZXJnZWQgdXBzdHJlYW0gYnV0IGFyZSBub3QgcGFydCBvZiB2Mi43LjEuCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QeXRob24zLWNvbXBhdGliaWxpdHktQ29udmVydC1wcmludC1zdGF0ZW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4Y2VwdGlvbi1jbGVhbnVwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4ZWNmaWxlLXRvLWV4ZWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1QeXRob24zLWNvbXBhdGliaWxpdHktaXRlcml0ZW1zLXRvLWl0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWZpeC1pbnRlZ2VyLXByb2JsZW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtUHl0aG9uMy1jb21wYXRpYmlsaXR5LW1hdGgtZXJyb3ItY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVB5dGhvbjMtY29tcGF0aWJpbGl0eS11bmljb2RlLXRvLXN0ci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LUFVVEhPUlMtQWRkLUphc29uLVdlc3NlbC5wYXRjaCBcCisiCisKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE3YjJjOWQ0YzcwODUzYTA5YzBlMTQzMTM3NzU0YjM1IgogCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RwZGtdID0gIi0td2l0aC1kcGRrPSR7U1RBR0lOR19ESVJfVEFSR0VUfS9vcHQvZHBkay8ke1RBUkdFVF9BUkNIfS1uYXRpdmUtbGludXhhcHAtZ2NjLCxkcGRrLCIKK0RQREtfSU5TVEFMTF9ESVIgPz0gIi9vcHQvZHBkayIKKworUEFDS0FHRUNPTkZJRyA/PSAibGliY2FwLW5nIgorUEFDS0FHRUNPTkZJR1tkcGRrXSA9ICItLXdpdGgtZHBkaz0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke0RQREtfSU5TVEFMTF9ESVJ9L3NoYXJlLyR7VEFSR0VUX0FSQ0h9LW5hdGl2ZS1saW51eGFwcC1nY2MsLGRwZGssZHBkayIKK1BBQ0tBR0VDT05GSUdbbGliY2FwLW5nXSA9ICItLWVuYWJsZS1saWJjYXBuZywtLWRpc2FibGUtbGliY2FwbmcsbGliY2FwLW5nLCIKIAogIyBEb24ndCBjb21waWxlIGtlcm5lbCBtb2R1bGVzIGJ5IGRlZmF1bHQgc2luY2UgaXQgaGVhdmlseSBkZXBlbmRzIG9uCiAjIGtlcm5lbCB2ZXJzaW9uLiBVc2UgdGhlIGluLWtlcm5lbCBtb2R1bGUgZm9yIG5vdy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTUyNjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Qb2t5Ci09PT09Ci0KLVBva3kgaXMgYW4gaW50ZWdyYXRpb24gb2YgdmFyaW91cyBjb21wb25lbnRzIHRvIGZvcm0gYSBjb21wbGV0ZSBwcmVwYWNrYWdlZAotYnVpbGQgc3lzdGVtIGFuZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gSXQgZmVhdHVyZXMgc3VwcG9ydCBmb3IgYnVpbGRpbmcKLWN1c3RvbWlzZWQgZW1iZWRkZWQgZGV2aWNlIHN0eWxlIGltYWdlcy4gVGhlcmUgYXJlIHJlZmVyZW5jZSBkZW1vIGltYWdlcwotZmVhdHVyaW5nIGEgWDExL01hdGNoYm94L0dUSyB0aGVtZWQgVUkgY2FsbGVkIFNhdG8uIFRoZSBzeXN0ZW0gc3VwcG9ydHMKLWNyb3NzLWFyY2hpdGVjdHVyZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB1c2luZyBRRU1VIGVtdWxhdGlvbiBhbmQgYQotc3RhbmRhbG9uZSB0b29sY2hhaW4gYW5kIFNESyB3aXRoIElERSBpbnRlZ3JhdGlvbi4KLQotQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgc3BlY2lmaWNzIG9mIGhhcmR3YXJlIHRoYXQgUG9reSBzdXBwb3J0cwotaXMgYXZhaWxhYmxlIGluIFJFQURNRS5oYXJkd2FyZS4gRnVydGhlciBoYXJkd2FyZSBzdXBwb3J0IGNhbiBlYXNpbHkgYmUgYWRkZWQKLWluIHRoZSBmb3JtIG9mIGxheWVycyB3aGljaCBleHRlbmQgdGhlIHN5c3RlbXMgY2FwYWJpbGl0aWVzIGluIGEgbW9kdWxhciB3YXkuCi0KLUFzIGFuIGludGVncmF0aW9uIGxheWVyIFBva3kgY29uc2lzdHMgb2Ygc2V2ZXJhbCB1cHN0cmVhbSBwcm9qZWN0cyBzdWNoIGFzIAotQml0QmFrZSwgT3BlbkVtYmVkZGVkLUNvcmUsIFlvY3RvIGRvY3VtZW50YXRpb24gYW5kIHZhcmlvdXMgc291cmNlcyBvZiBpbmZvcm1hdGlvbiAKLWUuZy4gZm9yIHRoZSBoYXJkd2FyZSBzdXBwb3J0LiBQb2t5IGlzIGluIHR1cm4gYSBjb21wb25lbnQgb2YgdGhlIFlvY3RvIFByb2plY3QuCi0KLVRoZSBZb2N0byBQcm9qZWN0IGhhcyBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgc3lzdGVtIGluY2x1ZGluZyBhIAotcmVmZXJlbmNlIG1hbnVhbCB3aGljaCBjYW4gYmUgZm91bmQgYXQ6Ci0gICAgaHR0cDovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbgotCi1PcGVuRW1iZWRkZWQtQ29yZSBpcyBhIGxheWVyIGNvbnRhaW5pbmcgdGhlIGNvcmUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdmVyc2lvbnMKLW9mIE9wZW5FbWJlZGRlZC4gSXQgaXMgZGlzdHJvLWxlc3MgKGNhbiBidWlsZCBhIGZ1bmN0aW9uYWwgaW1hZ2Ugd2l0aAotRElTVFJPID0gIm5vZGlzdHJvIikgYW5kIGNvbnRhaW5zIG9ubHkgZW11bGF0ZWQgbWFjaGluZSBzdXBwb3J0LgotCi1Gb3IgaW5mb3JtYXRpb24gYWJvdXQgT3BlbkVtYmVkZGVkLCBzZWUgdGhlIE9wZW5FbWJlZGRlZCB3ZWJzaXRlOgotICAgIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KLQotV2hlcmUgdG8gU2VuZCBQYXRjaGVzCi09PT09PT09PT09PT09PT09PT09PT0KLQotQXMgUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiByZXBvc2l0b3J5IChidWlsdCB1c2luZyBhIHRvb2wgY2FsbGVkIGNvbWJvLWxheWVyKSwKLXBhdGNoZXMgYWdhaW5zdCB0aGUgdmFyaW91cyBjb21wb25lbnRzIHNob3VsZCBiZSBzZW50IHRvIHRoZWlyIHJlc3BlY3RpdmUKLXVwc3RyZWFtczoKLQotYml0YmFrZToKLSAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UvCi0gICAgTWFpbGluZyBsaXN0OiBiaXRiYWtlLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKLQotZG9jdW1lbnRhdGlvbjoKLSAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kveW9jdG8tZG9jcy8KLSAgICBNYWlsaW5nIGxpc3Q6IHlvY3RvQHlvY3RvcHJvamVjdC5vcmcKLQotbWV0YS1wb2t5LCBtZXRhLXlvY3RvLWJzcDoKLSAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS15b2N0bygtYnNwKQotICAgIE1haWxpbmcgbGlzdDogcG9reUB5b2N0b3Byb2plY3Qub3JnCi0KLUV2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgc2VudCB0byB0aGUgT3BlbkVtYmVkZGVkIENvcmUgbWFpbGluZyBsaXN0LiAgSWYgaW4KLWRvdWJ0LCBjaGVjayB0aGUgb2UtY29yZSBnaXQgcmVwb3NpdG9yeSBmb3IgdGhlIGNvbnRlbnQgeW91IGludGVuZCB0byBtb2RpZnkuCi1CZWZvcmUgc2VuZGluZywgYmUgc3VyZSB0aGUgcGF0Y2hlcyBhcHBseSBjbGVhbmx5IHRvIHRoZSBjdXJyZW50IG9lLWNvcmUgZ2l0Ci1yZXBvc2l0b3J5LgotCi0gICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS8KLSAgICBNYWlsaW5nIGxpc3Q6IG9wZW5lbWJlZGRlZC1jb3JlQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKLQotTm90ZTogVGhlIHNjcmlwdHMgZGlyZWN0b3J5IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgY2FyZSBhcyBpdCBpcyBhIG1peCBvZgotb2UtY29yZSBhbmQgcG9reS1zcGVjaWZpYyBmaWxlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuTFNCIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5MU0IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkY2EzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuTFNCCkBAIC0wLDAgKzEsMjUgQEAKK09FLUNvcmUgYWltcyB0byBiZSBhYmxlIHRvIHByb3ZpZGUgYmFzaWMgTFNCIGNvbXBhdGlibGUgaW1hZ2VzLiBUaGVyZQorYXJlIHNvbWUgY2hhbGxlbmdlcyBmb3IgT0UgYXMgTFNCIGlzbid0IGFsd2F5cyAxMDAlIHJlbGV2YW50IHRvIGl0cwordGFyZ2V0IGVtYmVkZGVkIGFuZCBJb1QgYXVkaWVuY2VzLiAKKworT25lIGNoYWxsZW5nZSBpcyB0aGF0IHRoZSBMU0Igc3BlYyBpcyBubyBsb25nZXIgYmVpbmcgYWN0aXZlbHkKK2RldmVsb3BlZCBbaHR0cHM6Ly9naXRodWIuY29tL0xpbnV4U3RhbmRhcmRCYXNlL2xzYl0gYW5kIGhhcyAKK2NvbXBvbmVudHMgd2hpY2ggYXJlIGVuZCBvZiBsaWZlIG9yIHNpZ25pZmljYW50bHkgZGF0ZWQuIE9FIAordGhlcmVmb3JlIHByb3ZpZGVzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZm9sbG93aW5nIGNhdmVhdHM6CisKKyogUXQ0IGlzIHByb3ZpZGVkIGJ5IHRoZSBzZXBhcmF0ZSBtZXRhLXF0NCBsYXllci4gSXRzIG5vdGVkIHRoYXQgUXQ0IAorICBpcyBlbmQgb2YgbGlmZSBhbmQgdGhpcyBpc24ndCBzb21ldGhpbmcgdGhlIGNvcmUgcHJvamVjdCByZWd1bGFybHkgCisgIHRlc3RzIGFueSBsb25nZXIuIFVzZXJzIGFyZSByZWNvbW1lbmRlZCB0byBncm91cCB0b2dldGhlciB0byBzdXBwb3J0CisgIG1haW50ZW5hbmNlIG9mIHRoYXQgbGF5ZXIuIFtodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLXF0NC9dCisKKyogbWFpbHggaGFzIGJlZW4gZHJvcHBlZCBzaW5jZSBpdHMgbm8gbG9uZ2VyIGJlaW5nIGRldmVsb3BlZCB1cHN0cmVhbSAKKyAgYW5kIHRoZXJlIGFyZSBiZXR0ZXIsIG1vcmUgbW9kZXJuIHJlcGxhY2VtZW50cyBzdWNoIGFzIHMtbmFpbCAKKyAgKGh0dHA6Ly9zZGFvZGVuLmV1L2NvZGUuaHRtbCkgb3IgbWFpbHV0aWxzIChodHRwOi8vbWFpbHV0aWxzLm9yZy8pLgorCisqIEEgZmV3IHBlcmwgbW9kdWxlcyB0aGF0IHdlcmUgcmVxdWlyZWQgYnkgTFNCIDQueCBhcmVuJ3QgcHJvdmlkZWQ6CisgIGxpYmNsYXNzLWlzYSwgbGliZW52LCBsaWJkdW1wdmFsdWUsIGxpYmZpbGUtY2hlY2t0cmVlLAorICBsaWJpMThuLWNvbGxhdGUsIGxpYnBvZC1wbGFpbmVyLgorCisqIGxpYnBuZyAxLjIgaXNuJ3QgcHJvdmlkZWQ7IG9lLWNvcmUgaW5jbHVkZXMgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGxpYnBuZworICBpbnN0ZWFkLgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLmhhcmR3YXJlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZjY2Y3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLmhhcmR3YXJlCisrKyAvZGV2L251bGwKQEAgLTEsNDI5ICswLDAgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUG9reSBIYXJkd2FyZSBSRUFETUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT0KLQotVGhpcyBmaWxlIGdpdmVzIGRldGFpbHMgYWJvdXQgdXNpbmcgUG9reSB3aXRoIHRoZSByZWZlcmVuY2UgbWFjaGluZXMKLXN1cHBvcnRlZCBvdXQgb2YgdGhlIGJveC4gQSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHJlZmVyZW5jZSB0YXJnZXQgbWFjaGluZXMKLWNhbiBiZSBmb3VuZCBieSBsb29raW5nIGluIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXM6Ci0KLSAgIG1ldGEvY29uZi9tYWNoaW5lLwotICAgbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lLwotCi1JZiB5b3UgYXJlIGluIGRvdWJ0IGFib3V0IHVzaW5nIFBva3kvT3BlbkVtYmVkZGVkIHdpdGggeW91ciBoYXJkd2FyZSwgY29uc3VsdAotdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgYm9hcmQvZGV2aWNlLgotCi1TdXBwb3J0IGZvciBhZGRpdGlvbmFsIGRldmljZXMgaXMgbm9ybWFsbHkgYWRkZWQgYnkgY3JlYXRpbmcgQlNQIGxheWVycyAtIGZvcgotbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIHRoZSBZb2N0byBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MKLUd1aWRlIC0gZG9jdW1lbnRhdGlvbiBzb3VyY2UgaXMgaW4gZG9jdW1lbnRhdGlvbi9ic3BndWlkZSBvciBkb3dubG9hZCB0aGUgUERGCi1mcm9tOgotCi0gICBodHRwOi8veW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uCi0KLVN1cHBvcnQgZm9yIHBoeXNpY2FsIHJlZmVyZW5jZSBoYXJkd2FyZSBoYXMgbm93IGJlZW4gc3BsaXQgb3V0IGludG8gYQotbWV0YS15b2N0by1ic3AgbGF5ZXIgd2hpY2ggY2FuIGJlIHJlbW92ZWQgc2VwYXJhdGVseSBmcm9tIG90aGVyIGxheWVycyBpZiBub3QKLW5lZWRlZC4KLQotCi1RRU1VIEVtdWxhdGlvbiBUYXJnZXRzCi09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRvIHNpbXBsaWZ5IGRldmVsb3BtZW50LCB0aGUgYnVpbGQgc3lzdGVtIHN1cHBvcnRzIGJ1aWxkaW5nIGltYWdlcyB0bwotd29yayB3aXRoIHRoZSBRRU1VIGVtdWxhdG9yIGluIHN5c3RlbSBlbXVsYXRpb24gbW9kZS4gU2V2ZXJhbCBhcmNoaXRlY3R1cmVzCi1hcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKLQotICAqIEFSTSAocWVtdWFybSkKLSAgKiB4ODYgKHFlbXV4ODYpCi0gICogeDg2LTY0IChxZW11eDg2LTY0KQotICAqIFBvd2VyUEMgKHFlbXVwcGMpCi0gICogTUlQUyAocWVtdW1pcHMpCi0KLVVzZSBvZiB0aGUgUUVNVSBpbWFnZXMgaXMgY292ZXJlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotVGhlIGFwcHJvcHJpYXRlIE1BQ0hJTkUgdmFyaWFibGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgdGFyZ2V0IGlzIGdpdmVuCi1pbiBicmFja2V0cy4KLQotCi1IYXJkd2FyZSBSZWZlcmVuY2UgQm9hcmRzCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSBmb2xsb3dpbmcgYm9hcmRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgotCi0gICogVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZSkKLSAgKiBGcmVlc2NhbGUgTVBDODMxNUUtUkRCIChtcGM4MzE1ZS1yZGIpCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgYm9hcmQncyBzZWN0aW9uIGJlbG93LiBUaGUgYXBwcm9wcmlhdGUgTUFDSElORQotdmFyaWFibGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgYm9hcmQgaXMgZ2l2ZW4gaW4gYnJhY2tldHMuCi0KLVJlZmVyZW5jZSBCb2FyZCBNYWludGVuYW5jZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVNlbmQgcHVsbCByZXF1ZXN0cywgcGF0Y2hlcywgY29tbWVudHMgb3IgcXVlc3Rpb25zIGFib3V0IG1ldGEteW9jdG8tYnNwcyB0byBwb2t5QHlvY3RvcHJvamVjdC5vcmcKLQotTWFpbnRhaW5lcnM6IEtldmluIEhhbyA8a2V4aW4uaGFvQHdpbmRyaXZlci5jb20+Ci0gICAgICAgICAgICAgQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+Ci0KLUNvbnN1bWVyIERldmljZXMKLT09PT09PT09PT09PT09PT0KLQotVGhlIGZvbGxvd2luZyBjb25zdW1lciBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgotCi0gICogSW50ZWwgeDg2IGJhc2VkIFBDcyBhbmQgZGV2aWNlcyAoZ2VuZXJpY3g4NikKLSAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgZGV2aWNlJ3Mgc2VjdGlvbiBiZWxvdy4gVGhlIGFwcHJvcHJpYXRlIE1BQ0hJTkUKLXZhcmlhYmxlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRldmljZSBpcyBnaXZlbiBpbiBicmFja2V0cy4KLQotCi0KLSAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpYyBIYXJkd2FyZSBEb2N1bWVudGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLUludGVsIHg4NiBiYXNlZCBQQ3MgYW5kIGRldmljZXMgKGdlbmVyaWN4ODYqKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSBnZW5lcmljeDg2IGFuZCBnZW5lcmljeDg2LTY0IE1BQ0hJTkUgYXJlIHRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKLQotSW50ZWwgWGVvbi9Db3JlIGktU2VyaWVzOgotICArIEludGVsIE5VQzUgU2VyaWVzIC0gaXgtNTJ4eCBTZXJpZXMgU09DIChCcm9hZHdlbGwpCi0gICsgSW50ZWwgTlVDNiBTZXJpZXMgLSBpeC02Mnh4IFNlcmllcyBTT0MgKFNreWxha2UpCi0gICsgSW50ZWwgU2h1bXdheSBYZW9uIFNlcnZlcgotCi1JbnRlbCBBdG9tIHBsYXRmb3JtczoKLSAgKyBNaW5ub3dCb2FyZCBNQVggLSBFMzgyNSBTT0MgKEJheSBUcmFpbCkKLSAgKyBNaW5ub3dCb2FyZCBNQVggLSBUdXJib3QgKEFESSBFbmdpbmVlcmluZykgLSBFMzgyNiBTT0MgKEJheSBUcmFpbCkKLSAgICAtIFRoZXNlIGJvYXJkcyBjYW4gYmUgZWl0aGVyIDMyYm90IG9yIDY0Yml0IG1vZGVzIGRlcGVuZGluZyBvbiBmaXJtd2FyZQotICAgIC0gU2VlIG1pbm5vd2JvYXJkLm9yZyBmb3IgZGV0YWlscyAKLSAgKyBJbnRlbCBCcmFzd2VsbCBTT0MKLQotYW5kIGlzIGxpa2VseSB0byB3b3JrIG9uIG1hbnkgdW5saXN0ZWQgQXRvbS9Db3JlL1hlb24gYmFzZWQgZGV2aWNlcy4gVGhlIE1BQ0hJTkUKLXR5cGUgc3VwcG9ydHMgZXRoZXJuZXQsIHdpZmksIHNvdW5kLCBhbmQgSW50ZWwvdmVzYSBncmFwaGljcyBieSBkZWZhdWx0IGluCi1hZGRpdGlvbiB0byBjb21tb24gUEMgaW5wdXQgZGV2aWNlcywgYnVzc2VzLCBhbmQgc28gb24uCi0KLURlcGVuZGluZyBvbiB0aGUgZGV2aWNlLCBpdCBjYW4gYm9vdCBmcm9tIGEgdHJhZGl0aW9uYWwgaGFyZC1kaXNrLCBhIFVTQiBkZXZpY2UsCi1vciBvdmVyIHRoZSBuZXR3b3JrLiBXcml0aW5nIGdlbmVyYXRlZCBpbWFnZXMgdG8gcGh5c2ljYWwgbWVkaWEgaXMKLXN0cmFpZ2h0Zm9yd2FyZCB3aXRoIGEgY2F2ZWF0IGZvciBVU0IgZGV2aWNlcy4gVGhlIGZvbGxvd2luZyBleGFtcGxlcyBhc3N1bWUgdGhlCi10YXJnZXQgYm9vdCBkZXZpY2UgaXMgL2Rldi9zZGIsIGJlIHN1cmUgdG8gdmVyaWZ5IHRoaXMgYW5kIHVzZSB0aGUgY29ycmVjdAotZGV2aWNlIGFzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIHJ1biBhcyByb290IGFuZCBhcmUgbm90IHJldmVyc2FibGUuCi0KLVVTQiBEZXZpY2U6Ci0gIDEuIEJ1aWxkIGEgbGl2ZSBpbWFnZS4gVGhpcyBpbWFnZSB0eXBlIGNvbnNpc3RzIG9mIGEgc2ltcGxlIGZpbGVzeXN0ZW0KLSAgICAgd2l0aG91dCBhIHBhcnRpdGlvbiB0YWJsZSwgd2hpY2ggaXMgc3VpdGFibGUgZm9yIFVTQiBrZXlzLCBhbmQgd2l0aCB0aGUKLSAgICAgZGVmYXVsdCBzZXR1cCBmb3IgdGhlIGdlbmVyaWN4ODYgbWFjaGluZSwgdGhpcyBpbWFnZSB0eXBlIGlzIGJ1aWx0Ci0gICAgIGF1dG9tYXRpY2FsbHkgZm9yIGFueSBpbWFnZSB5b3UgYnVpbGQuIEZvciBleGFtcGxlOgotCi0gICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKLQotICAyLiBVc2UgdGhlICJkZCIgdXRpbGl0eSB0byB3cml0ZSB0aGUgaW1hZ2UgdG8gdGhlIHJhdyBibG9jayBkZXZpY2UuIEZvcgotICAgICBleGFtcGxlOgotCi0gICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYuaGRkaW1nIG9mPS9kZXYvc2RiCi0KLSAgSWYgdGhlIGRldmljZSBmYWlscyB0byBib290IHdpdGggIkJvb3QgZXJyb3IiIGRpc3BsYXllZCwgb3IgYXBwYXJlbnRseQotICBzdG9wcyBqdXN0IGFmdGVyIHRoZSBTWVNMSU5VWCB2ZXJzaW9uIGJhbm5lciwgaXQgaXMgbGlrZWx5IHRoZSBCSU9TIGNhbm5vdAotICB1bmRlcnN0YW5kIHRoZSBwaHlzaWNhbCBsYXlvdXQgb2YgdGhlIGRpc2sgKG9yIHJhdGhlciBpdCBleHBlY3RzIGEKLSAgcGFydGljdWxhciBsYXlvdXQgYW5kIGNhbm5vdCBoYW5kbGUgYW55dGhpbmcgZWxzZSkuIFRoZXJlIGFyZSB0d28gcG9zc2libGUKLSAgc29sdXRpb25zIHRvIHRoaXMgcHJvYmxlbToKLQotICAxLiBDaGFuZ2UgdGhlIEJJT1MgVVNCIERldmljZSBzZXR0aW5nIHRvIEhERCBtb2RlLiBUaGUgbGFiZWwgd2lsbCB2YXJ5IGJ5Ci0gICAgIGRldmljZSwgYnV0IHRoZSBpZGVhIGlzIHRvIGZvcmNlIEJJT1MgdG8gcmVhZCB0aGUgQ3lsaW5kZXIvSGVhZC9TZWN0b3IKLSAgICAgZ2VvbWV0cnkgZnJvbSB0aGUgZGV2aWNlLgotCi0gIDIuIFVzZSBhICIud2ljIiBpbWFnZSB3aXRoIGFuIEVGSSBwYXJ0aXRpb24KLQotICAgICBhKSBXaXRoIGEgZGVmYXVsdCBncnViLWVmaSBib290bG9hZGVyOgotICAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LndpYyBvZj0vZGV2L3NkYgotCi0gICAgIGIpIFVzZSBzeXN0ZW1kLWJvb3QgaW5zdGVhZAotICAgICAtIEJ1aWxkIGFuIGltYWdlIHdpdGggRUZJX1BST1ZJREVSPSJzeXN0ZW1kLWJvb3QiIHRoZW4gdXNlIHRoZSBhYm92ZQotICAgICAgIGRkIGNvbW1hbmQgdG8gd3JpdGUgdGhlIGltYWdlIHRvIGEgVVNCIHN0aWNrLgotCi0KLVRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgQmVhZ2xlYm9uZSBpcyBhbiBBUk0gQ29ydGV4LUE4IGRldmVsb3BtZW50IGJvYXJkIHdpdGggVVNCLCBFdGhlcm5ldCwgMkQvM0QKLWFjY2VsZXJhdGVkIGdyYXBoaWNzLCBhdWRpbywgc2VyaWFsLCBKVEFHLCBhbmQgU0QvTU1DLiBUaGUgQmxhY2sgYWRkcyBhIGZhc3RlcgotQ1BVLCBtb3JlIFJBTSwgZU1NQyBmbGFzaCBhbmQgYSBtaWNybyBIRE1JIHBvcnQuIFRoZSBiZWFnbGVib25lIE1BQ0hJTkUgaXMKLXRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKLQotICBvIEJlYWdsZWJvbmUgQmxhY2sgQTYKLSAgbyBCZWFnbGVib25lIEE2ICh0aGUgb3JpZ2luYWwgIldoaXRlIiBtb2RlbCkKLQotVGhlIEJlYWdsZWJvbmUgQmxhY2sgaGFzIGVNTUMsIHdoaWxlIHRoZSBXaGl0ZSBkb2VzIG5vdC4gUHJlc3NpbmcgdGhlIFVTRVIvQk9PVAotYnV0dG9uIHdoZW4gcG93ZXJpbmcgb24gd2lsbCB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIGJvb3Qgb3JkZXIuIEJ1dCBmb3IgdGhlIHNha2UKLW9mIHNpbXBsaWNpdHksIHRoZXNlIGluc3RydWN0aW9ucyBhc3N1bWUgeW91IGhhdmUgZXJhc2VkIHRoZSBlTU1DIG9uIHRoZSBCbGFjaywKLXNvIGl0cyBib290IGJlaGF2aW9yIG1hdGNoZXMgdGhhdCBvZiB0aGUgV2hpdGUgYW5kIGJvb3RzIG9mZiBvZiBTRCBjYXJkLiBUbyBkbwotdGhpcywgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSB1LWJvb3QgcHJvbXB0OgotCi0gICAgIyBtbWMgZGV2IDEKLSAgICAjIG1tYyBlcmFzZSAwIDUxMgotCi1UbyBmdXJ0aGVyIHRhaWxvciB0aGVzZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgYm9hcmQsIHBsZWFzZSByZWZlciB0byB0aGUKLWRvY3VtZW50YXRpb24gYXQgaHR0cDovL3d3dy5iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL3d3dy5iZWFnbGVib2FyZC5vcmcvYmxhY2sKLQotRnJvbSBhIExpbnV4IHN5c3RlbSB3aXRoIGFjY2VzcyB0byB0aGUgaW1hZ2UgZmlsZXMgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotCi0gIDEuIEJ1aWxkIGFuIGltYWdlLiBGb3IgZXhhbXBsZToKLQotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCi0KLSAgMi4gVXNlIHRoZSAiZGQiIHV0aWxpdHkgdG8gd3JpdGUgdGhlIGltYWdlIHRvIHRoZSBTRCBjYXJkLiBGb3IgZXhhbXBsZToKLQotICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLndpYyBvZj0vZGV2L3NkYgotCi0gIDMuIEluc2VydCB0aGUgU0QgY2FyZCBpbnRvIHRoZSBCZWFnbGVib25lIGFuZCBib290IHRoZSBib2FyZC4KLQotRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgTVBDODMxNSBQb3dlclBDIHJlZmVyZW5jZSBwbGF0Zm9ybSAoTVBDODMxNUUtUkRCKSBpcyBhaW1lZCBhdCBoYXJkd2FyZSBhbmQKLXNvZnR3YXJlIGRldmVsb3BtZW50IG9mIG5ldHdvcmsgYXR0YWNoZWQgc3RvcmFnZSAoTkFTKSBhbmQgZGlnaXRhbCBtZWRpYSBzZXJ2ZXIKLWFwcGxpY2F0aW9ucy4gVGhlIE1QQzgzMTVFLVJEQiBmZWF0dXJlcyB0aGUgUG93ZXJRVUlDQyBJSSBQcm8gcHJvY2Vzc29yLCB3aGljaAotaW5jbHVkZXMgYSBidWlsdC1pbiBzZWN1cml0eSBhY2NlbGVyYXRvci4KLQotKE5vdGU6IHlvdSBtYXkgZmluZCBpdCBlYXNpZXIgdG8gb3JkZXIgTVBDODMxNUUtUkRCQTsgdGhpcyBhcHBlYXJzIHRvIGJlIHRoZQotc2FtZSBib2FyZCBpbiBhbiBlbmNsb3N1cmUgd2l0aCBhY2Nlc3Nvcmllcy4gSW4gYW55IGNhc2UgaXQgaXMgZnVsbHkKLWNvbXBhdGlibGUgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuIGhlcmUuKQotCi1TZXR1cCBpbnN0cnVjdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6Ci0qIE5GUyByb290IHNldHVwIG9uIHlvdXIgd29ya3N0YXRpb24KLSogVEZUUCBzZXJ2ZXIgaW5zdGFsbGVkIG9uIHlvdXIgd29ya3N0YXRpb24KLSogU3RyYWlnaHQtdGhydSA5LWNvbmR1Y3RvciBzZXJpYWwgY2FibGUgKERCOSwgTS9GKSBjb25uZWN0ZWQgZnJvbSB5b3VyIAotICBQQyB0byBVQVJUMQotKiBFdGhlcm5ldCBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0IGV0aGVybmV0IHBvcnQgb24gdGhlIGJvYXJkCi0KLS0tLSBQcmVwYXJhdGlvbiAtLS0KLQotTm90ZTogaWYgeW91IGhhdmUgYWx0ZXJlZCB5b3VyIGJvYXJkJ3MgZXRoZXJuZXQgTUFDIGFkZHJlc3MoZXMpIGZyb20gdGhlCi1kZWZhdWx0cywgb3IgeW91IG5lZWQgdG8gZG8gc28gYmVjYXVzZSB5b3Ugd2FudCBtdWx0aXBsZSBib2FyZHMgb24gdGhlIHNhbWUKLW5ldHdvcmssIHRoZW4geW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlcyBpbiB0aGUgZHRzIGZpbGUgKHBhdGNoCi1saW51eC9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODMxNWVyZGIuZHRzIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSkuIElmCi15b3UgaGF2ZSBsZWZ0IHRoZW0gYXQgdGhlIGZhY3RvcnkgZGVmYXVsdCB0aGVuIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBkbwotYW55dGhpbmcgaGVyZS4KLQotTm90ZTogVG8gYm9vdCBmcm9tIFVTQiBkaXNrIHlvdSBuZWVkIHUtYm9vdCB0aGF0IHN1cHBvcnRzICdleHQybG9hZCB1c2InCi1jb21tYW5kLiBZb3UgbmVlZCB0byBzZXR1cCBURlRQIHNlcnZlciwgbG9hZCB1LWJvb3QgZnJvbSB0aGVyZSBhbmQKLWZsYXNoIGl0IHRvIE5PUiBmbGFzaC4KLQotQmV3YXJlISBGbGFzaGluZyBib290bG9hZGVyIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cyBvcGVyYXRpb24gdGhhdCBjYW4KLWJyaWNrIHlvdXIgZGV2aWNlIGlmIGRvbmUgaW5jb3JyZWN0bHkuIFBsZWFzZSwgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi13aGF0IGJlbG93IGNvbW1hbmRzIG1lYW4gYmVmb3JlIGV4ZWN1dGluZyB0aGVtLgotCi1Mb2FkIHRoZSBuZXcgdS1ib290LmJpbiBmcm9tIFRGVFAgc2VydmVyIHRvIG1lbW9yeSBhZGRyZXNzIDIwMDAwMAotPT4gdGZ0cCAyMDAwMDAgdS1ib290LmJpbgotCi1EaXNhYmxlIGZsYXNoIHByb3RlY3Rpb24KLT0+IHByb3RlY3Qgb2ZmIGFsbAotCi1FcmFzZSB0aGUgb2xkIHUtYm9vdCBmcm9tIGZlMDAwMDAwIHRvIGZlMDZmZmZmIGluIE5PUiBmbGFzaC4KLVRoZSBzaXplIGlzIDB4NzAwMDAgKDQ1ODc1MiBieXRlcykKLT0+IGVyYXNlIGZlMDAwMDAwIGZlMDZmZmZmCi0KLUNvcHkgdGhlIG5ldyB1LWJvb3QgZnJvbSBhZGRyZXNzIDIwMDAwMCB0byBmZTAwMDAwMAotdGhlIHNpemUgaXMgMHg3MDAwMC4gSXQgaGFzIHRvIGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdS1ib290LmJpbiBzaXplCi09PiBjcC5iIDIwMDAwMCBmZTAwMDAwMCA3MDAwMAotCi1FbmFibGUgZmxhc2ggcHJvdGVjdGlvbiBhZ2FpbgotPT4gcHJvdGVjdCBvbiBhbGwKLQotUmVzZXQgdGhlIGJvYXJkCi09PiByZXNldAotCi0tLS0gQm9vdGluZyBmcm9tIFVTQiBkaXNrIC0tLQotCi0gMS4gRmxhc2ggcGFydGl0aW9uZWQgaW1hZ2UgdG8gdGhlIFVTQiBkaXNrCi0KLSAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIud2ljIG9mPS9kZXYvc2RiCi0KLSAyLiBQbHVnIFVTQiBkaXNrIGludG8gdGhlIE1QQzgzMTUgYm9hcmQKLQotIDMuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAotICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAotICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgotCi0gICQgcGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwCi0KLSA0LiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCi0gICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCi0KLSA1LiBPcHRpb25hbC4gTG9hZCB0aGUgdS1ib290LmJpbiBmcm9tIHRoZSBVU0IgZGlzazoKLQotID0+IHVzYiBzdGFydAotID0+IGV4dDJsb2FkIHVzYiAwOjEgMjAwMDAwIHUtYm9vdC5iaW4KLQotICAgIGFuZCBmbGFzaCBpdCB0byBOT1IgZmxhc2ggYXMgZGVzY3JpYmVkIGFib3ZlLgotCi0gNi4gU2V0IGZkdGFkZHIgYW5kIGxvYWRhZGRyLiBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgaWYgeW91IHNldCB0aGVtIGJlZm9yZS4KLQotID0+IHNldGVudiBmZHRhZGRyIGEwMDAwMAotID0+IHNldGVudiBsb2FkYWRkciAxMDAwMDAwCi0KLSA3LiBMb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiBmcm9tIGZpcnN0IHBhcnRpdGlvbiBvZiB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxICRsb2FkYWRkciB1SW1hZ2UKLSA9PiBleHQybG9hZCB1c2IgMDoxICRmZHRhZGRyIGR0YgotCi0gOC4gU2V0IGJvb3RhcmdzIGFuZCBib290IHVwIHRoZSBkZXZpY2UKLQotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvc2RiMiBydyByb290d2FpdCBjb25zb2xlPXR0eVMwLDExNTIwMAotID0+IGJvb3RtICRsb2FkYWRkciAtICRmZHRhZGRyCi0KLQotLS0tIEJvb3RpbmcgZnJvbSBORlMgcm9vdCAtLS0KLQotTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgKGRldmljZSB0cmVlIGJsb2IpLCBhbmQgYm9vdCB0aGUgc3lzdGVtIGFzIGZvbGxvd3M6Ci0KLSAxLiBHZXQgdGhlIGtlcm5lbCAodUltYWdlLW1wYzgzMTVlLXJkYi5iaW4pIGFuZCBkdGIgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuZHRiKQotICAgIGZpbGVzIGZyb20gdGhlIHRtcC9kZXBsb3kgZGlyZWN0b3J5LCBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIFRGVFAKLSAgICBzZXJ2ZXIuCi0KLSAyLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gMy4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNC4gU2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSA9PiBzZXRlbnYgaXBhZGRyIDxib2FyZCBpcD4KLSA9PiBzZXRlbnYgc2VydmVyaXAgPHRmdHAgc2VydmVyIGlwPgotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9PG5mc3Jvb3QgaXA+Ojxyb290ZnMgcGF0aD4gaXA9PGJvYXJkIGlwPjo8c2VydmVyIGlwPjo8Z2F0ZXdheSBpcD46MjU1LjI1NS4yNTUuMDptcGM4MzE1ZTpldGgwOm9mZiBjb25zb2xlPXR0eVMwLDExNTIwMAotCi0gNS4gRG93bmxvYWQgdGhlIGtlcm5lbCBhbmQgZHRiLCBhbmQgYm9vdDoKLQotID0+IHRmdHAgMTAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmJpbgotID0+IHRmdHAgMjAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YgotID0+IGJvb3RtIDEwMDAwMDAgLSAyMDAwMDAwCi0KLS0tLSBCb290aW5nIGZyb20gSkZGUzIgcm9vdCAtLS0KLQotIDEuIEZpcnN0IGJvb3QgdGhlIGJvYXJkIHdpdGggTkZTIHJvb3QuCi0KLSAyLiBFcmFzZSB0aGUgTVREIHBhcnRpdGlvbiB3aGljaCB3aWxsIGJlIHVzZWQgYXMgcm9vdDoKLQotICAgICQgZmxhc2hfZXJhc2VhbGwgIC9kZXYvbXRkMwotCi0gMy4gQ29weSB0aGUgSkZGUzIgaW1hZ2UgdG8gdGhlIE1URCBwYXJ0aXRpb246Ci0KLSAgICAkIGZsYXNoY3AgY29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi5qZmZzMiAvZGV2L210ZDMKLQotIDQuIFRoZW4gcmVib290IHRoZSBib2FyZCBhbmQgc2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSAgICA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L210ZGJsb2NrMyByb290ZnN0eXBlPWpmZnMyIGNvbnNvbGU9dHR5UzAsMTE1MjAwCi0KLQotVWJpcXVpdGkgTmV0d29ya3MgRWRnZVJvdXRlciBMaXRlIChlZGdlcm91dGVyKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgRWRnZVJvdXRlciBMaXRlIGlzIHBhcnQgb2YgdGhlIEVkZ2VNYXggc2VyaWVzLiBJdCBpcyBhIE1JUFM2NCByb3V0ZXIKLShiYXNlZCBvbiB0aGUgQ2F2aXVtIE9jdGVvbiBwcm9jZXNzb3IpIHdpdGggNTEyTUIgb2YgUkFNLCB3aGljaCB1c2VzIGFuCi1pbnRlcm5hbCBVU0IgcGVuZHJpdmUgZm9yIHN0b3JhZ2UuCi0KLVNldHVwIGluc3RydWN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVlvdSB3aWxsIG5lZWQgdGhlIGZvbGxvd2luZzoKLSogUko0NSAtPiBzZXJpYWwgKCJyb2xsb3ZlciIpIGNhYmxlIGNvbm5lY3RlZCBmcm9tIHlvdXIgUEMgdG8gdGhlIENPTlNPTEUKLSAgcG9ydCBvbiB0aGUgZGV2aWNlCi0qIEV0aGVybmV0IGNvbm5lY3RlZCB0byB0aGUgZmlyc3QgZXRoZXJuZXQgcG9ydCBvbiB0aGUgYm9hcmQKLQotSWYgdXNpbmcgTkZTIGFzIHBhcnQgb2YgdGhlIHNldHVwIHByb2Nlc3MsIHlvdSB3aWxsIGFsc28gbmVlZDoKLSogTkZTIHJvb3Qgc2V0dXAgb24geW91ciB3b3Jrc3RhdGlvbgotKiBURlRQIHNlcnZlciBpbnN0YWxsZWQgb24geW91ciB3b3Jrc3RhdGlvbiAoaWYgZmV0Y2hpbmcgdGhlIGtlcm5lbCBmcm9tCi0gIFRGVFAsIHNlZSBiZWxvdykuCi0KLS0tLSBQcmVwYXJhdGlvbiAtLS0KLQotQnVpbGQgYW4gaW1hZ2UgKGUuZy4gY29yZS1pbWFnZS1taW5pbWFsKSB1c2luZyAiZWRnZXJvdXRlciIgYXMgdGhlIE1BQ0hJTkUuCi1JbiB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9uIGl0IGlzIGJhc2VkIG9uIGNvcmUtaW1hZ2UtbWluaW1hbC4gQW5vdGhlciB0YXJnZXQKLW1heSBiZSBzaW1pbGlhciB3aXRoIGl0LgotCi0tLS0gQm9vdGluZyBmcm9tIE5GUyByb290IC8ga2VybmVsIHZpYSBURlRQIC0tLQotCi1Mb2FkIHRoZSBrZXJuZWwsIGFuZCBib290IHRoZSBzeXN0ZW0gYXMgZm9sbG93czoKLQotIDEuIEdldCB0aGUga2VybmVsICh2bWxpbnV4KSBmaWxlIGZyb20gdGhlIHRtcC9kZXBsb3kvaW1hZ2VzL2VkZ2Vyb3V0ZXIKLSAgICBkaXJlY3RvcnksIGFuZCBtYWtlIHRoZW0gYXZhaWxhYmxlIG9uIHlvdXIgVEZUUCBzZXJ2ZXIuCi0KLSAyLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlTMCAtYiAxMTUyMDAKLQotIDMuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKLSAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKLQotIDQuIFNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgotCi0gPT4gc2V0ZW52IGlwYWRkciA8Ym9hcmQgaXA+Ci0gPT4gc2V0ZW52IHNlcnZlcmlwIDx0ZnRwIHNlcnZlciBpcD4KLQotIDUuIERvd25sb2FkIHRoZSBrZXJuZWwgYW5kIGJvb3Q6Ci0KLSA9PiB0ZnRwIHRmdHAgJGxvYWRhZGRyIHZtbGludXgKLSA9PiBib290b2N0bGludXggJGxvYWRhZGRyIGNvcmVtYXNrPTB4MyByb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9PG5mc3Jvb3QgaXA+Ojxyb290ZnMgcGF0aD4gaXA9PGJvYXJkIGlwPjo8c2VydmVyIGlwPjo8Z2F0ZXdheSBpcD46PG5ldG1hc2s+OmVkZ2Vyb3V0ZXI6ZXRoMDpvZmYgbXRkcGFydHM9cGh5c19tYXBwZWRfZmxhc2g6NTEyayhib290MCksNTEyayhib290MSksNjRrQDMwNzJrKGVlcHJvbSkKLQotLS0tIEJvb3RpbmcgZnJvbSBVU0IgZGlzayAtLS0KLQotVG8gYm9vdCBmcm9tIHRoZSBVU0IgZGlzaywgeW91IGVpdGhlciBuZWVkIHRvIHJlbW92ZSBpdCBmcm9tIHRoZSBlZGdlcm91dGVyCi1ib3ggYW5kIHBvcHVsYXRlIGl0IGZyb20gYW5vdGhlciBjb21wdXRlciwgb3IgdXNlIGEgcHJldmlvdXNseSBib290ZWQgTkZTCi1pbWFnZSBhbmQgcG9wdWxhdGUgZnJvbSB0aGUgZWRnZXJvdXRlciBpdHNlbGYuCi0KLVR5cGUgMTogVXNlIHBhcnRpdGlvbmVkIGltYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TdGVwczoKLQotIDEuIFJlbW92ZSB0aGUgVVNCIGRpc2sgZnJvbSB0aGUgZWRnZXJvdXRlciBhbmQgaW5zZXJ0IGl0IGludG8gYSBjb21wdXRlcgotICAgIHRoYXQgaGFzIGFjY2VzcyB0byB5b3VyIGJ1aWxkIGFydGlmYWN0cy4KLQotIDIuIEZsYXNoIHRoZSBpbWFnZS4KLQotICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLWVkZ2Vyb3V0ZXIud2ljIG9mPS9kZXYvc2RiCi0KLSAzLiBJbnNlcnQgVVNCIGRpc2sgaW50byB0aGUgZWRnZXJvdXRlciBhbmQgYm9vdCBpdC4KLQotVHlwZSAyOiBORlMKLS0tLS0tLS0tLS0tCi0KLU5vdGU6IElmIHlvdSBwbGFjZSB0aGUga2VybmVsIG9uIHRoZSBleHQzIHBhcnRpdGlvbiwgeW91IG11c3QgcmUtY3JlYXRlIHRoZQotICAgICAgZXh0MyBmaWxlc3lzdGVtLCBzaW5jZSB0aGUgZmFjdG9yeSB1LWJvb3QgY2FuIG9ubHkgaGFuZGxlIDEyOCBieXRlIGlub2RlcyBhbmQKLSAgICAgIGNhbm5vdCByZWFkIHRoZSBwYXJ0aXRpb24gb3RoZXJ3aXNlLgotCi0gICAgICBUaGVzZSBib290IGluc3RydWN0aW9ucyBhc3N1bWUgdGhhdCB5b3UgaGF2ZSByZWNyZWF0ZWQgdGhlIGV4dDMgZmlsZXN5c3RlbSB3aXRoCi0gICAgICAxMjggYnl0ZSBpbm9kZXMsIHlvdSBoYXZlIGFuIHVwZGF0ZWQgdWJvb3Qgb3IgeW91IGFyZSBydW5uaW5nIGFuZCBpbWFnZSBjYXBhYmxlCi0gICAgICBvZiBtYWtpbmcgdGhlIGZpbGVzeXN0ZW0gb24gdGhlIGJvYXJkIGl0c2VsZi4KLQotCi0gMS4gQm9vdCBmcm9tIE5GUyByb290Ci0KLSAyLiBNb3VudCB0aGUgVVNCIGRpc2sgcGFydGl0aW9uIDIgYW5kIHRoZW4gZXh0cmFjdCB0aGUgY29udGVudHMgb2YKLSAgICB0bXAvZGVwbG95L2NvcmUtaW1hZ2UtWFhYWC50YXIuYnoyIGludG8gaXQuCi0KLSAgICBCZWZvcmUgc3RhcnRpbmcsIGNvcHkgY29yZS1pbWFnZS1taW5pbWFsLXh4eC50YXIuYnoyIGFuZCB2bWxpbnV4IGludG8KLSAgICByb290ZnMgcGF0aCBvbiB5b3VyIHdvcmtzdGF0aW9uLgotCi0gICAgYW5kIHRoZW4sCi0gIAotICAgICAgIyBtb3VudCAvZGV2L3NkYTIgL21lZGlhL3NkYTIKLSAgICAgICMgdGFyIC14dmpwZiBjb3JlLWltYWdlLW1pbmltYWwtWFhYLnRhci5iejIgLUMgL21lZGlhL3NkYTIKLSAgICAgICMgY3Agdm1saW51eCAvbWVkaWEvc2RhMi9ib290L3ZtbGludXgKLSAgICAgICMgdW1vdW50IC9tZWRpYS9zZGEyCi0gICAgICAjIHJlYm9vdAotCi0gMy4gUmVib290IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQgdG8gZ2V0IHRvIHRoZSBVLUJvb3QKLSAgICBjb21tYW5kIGxpbmU6Ci0KLSAgICAjIHJlYm9vdAotCi0gNC4gTG9hZCB0aGUga2VybmVsIGFuZCBib290OgotCi0gICAgICA9PiBleHQybG9hZCB1c2IgMDoyICRsb2FkYWRkciBib290L3ZtbGludXgKLSAgICAgID0+IGJvb3RvY3RsaW51eCAkbG9hZGFkZHIgY29yZW1hc2s9MHgzIHJvb3Q9L2Rldi9zZGEyIHJ3IHJvb3R3YWl0IG10ZHBhcnRzPXBoeXNfbWFwcGVkX2ZsYXNoOjUxMmsoYm9vdDApLDUxMmsoYm9vdDEpLDY0a0AzMDcyayhlZXByb20pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLmhhcmR3YXJlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZQpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwLi44YjYyNThkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZQpAQCAtMCwwICsxIEBACittZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnBva3kgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnBva3kKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uMTg3N2RjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUucG9reQpAQCAtMCwwICsxIEBACittZXRhLXBva3kvUkVBRE1FLnBva3kKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnFlbXUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnFlbXUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1NmI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUucWVtdQpAQCAtMCwwICsxLDE1IEBACitRRU1VIEVtdWxhdGlvbiBUYXJnZXRzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHNpbXBsaWZ5IGRldmVsb3BtZW50LCB0aGUgYnVpbGQgc3lzdGVtIHN1cHBvcnRzIGJ1aWxkaW5nIGltYWdlcyB0bword29yayB3aXRoIHRoZSBRRU1VIGVtdWxhdG9yIGluIHN5c3RlbSBlbXVsYXRpb24gbW9kZS4gU2V2ZXJhbCBhcmNoaXRlY3R1cmVzCithcmUgY3VycmVudGx5IHN1cHBvcnRlZCBpbiAzMiBhbmQgNjQgYml0IHZhcmlhbnRzOgorCisgICogQVJNIChxZW11YXJtICsgcWVtdWFybTY0KQorICAqIHg4NiAocWVtdXg4NiArIHFlbXV4ODYtNjQpCisgICogUG93ZXJQQyAocWVtdXBwYyBvbmx5KQorICAqIE1JUFMgKHFlbXVtaXBzICsgcWVtdW1pcHM2NCkKKworVXNlIG9mIHRoZSBRRU1VIGltYWdlcyBpcyBjb3ZlcmVkIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCitUaGUgYXBwcm9wcmlhdGUgTUFDSElORSB2YXJpYWJsZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB0YXJnZXQgaXMgZ2l2ZW4KK2luIGJyYWNrZXRzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OWMzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9SRUFETUUKQEAgLTAsMCArMSwzNSBAQAorQml0YmFrZQorPT09PT09PQorCitCaXRCYWtlIGlzIGEgZ2VuZXJpYyB0YXNrIGV4ZWN1dGlvbiBlbmdpbmUgdGhhdCBhbGxvd3Mgc2hlbGwgYW5kIFB5dGhvbiB0YXNrcyB0byBiZSBydW4KK2VmZmljaWVudGx5IGFuZCBpbiBwYXJhbGxlbCB3aGlsZSB3b3JraW5nIHdpdGhpbiBjb21wbGV4IGludGVyLXRhc2sgZGVwZW5kZW5jeSBjb25zdHJhaW50cy4KK09uZSBvZiBCaXRCYWtlJ3MgbWFpbiB1c2VycywgT3BlbkVtYmVkZGVkLCB0YWtlcyB0aGlzIGNvcmUgYW5kIGJ1aWxkcyBlbWJlZGRlZCBMaW51eCBzb2Z0d2FyZQorc3RhY2tzIHVzaW5nIGEgdGFzay1vcmllbnRlZCBhcHByb2FjaC4KKworRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdGJha2UsIHNlZSB0aGUgT3BlbkVtYmVkZGVkIHdlYnNpdGU6CisgICAgaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnLworCitCaXRiYWtlIHBsYWluIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSBkb2MgZGlyZWN0b3J5IG9yIGl0cyBpbnRlZ3JhdGVkCitodG1sIHZlcnNpb24gYXQgdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZToKKyAgICBodHRwOi8veW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uCisKK0NvbnRyaWJ1dGluZworLS0tLS0tLS0tLS0tCisKK1BsZWFzZSByZWZlciB0bworaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnL3dpa2kvSG93X3RvX3N1Ym1pdF9hX3BhdGNoX3RvX09wZW5FbWJlZGRlZAorZm9yIGd1aWRlbGluZXMgb24gaG93IHRvIHN1Ym1pdCBwYXRjaGVzLCBqdXN0IG5vdGUgdGhhdCB0aGUgbGF0dGVyIGRvY3VtZW50YXRpb24gaXMgaW50ZW5kZWQKK2ZvciBPcGVuRW1iZWRkZWQgKGFuZCBpdHMgY29yZSkgbm90IGJpdGJha2UgcGF0Y2hlcyAoYml0YmFrZS1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKQorYnV0IGluIGdlbmVyYWwgbWFpbiBndWlkZWxpbmVzIGFwcGx5LiBPbmNlIHRoZSBjb21taXQocykgaGF2ZSBiZWVuIGNyZWF0ZWQsIHRoZSB3YXkgdG8gc2VuZAordGhlIHBhdGNoIGlzIHRocm91Z2ggZ2l0LXNlbmQtZW1haWwuIEZvciBleGFtcGxlLCB0byBzZW5kIHRoZSBsYXN0IGNvbW1pdCAoSEVBRCkgb24gY3VycmVudAorYnJhbmNoLCB0eXBlOgorCisgICAgZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBiaXRiYWtlLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKKworTWFpbGluZyBsaXN0OgorCisgICAgaHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iaXRiYWtlLWRldmVsCisKK1NvdXJjZSBjb2RlOgorCisgICAgaHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCmluZGV4IDlmNWMyZDQuLjNhY2MyM2EgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCkBAIC0zNiw5ICszNiw5IEBACiBmcm9tIGJiLm1haW4gaW1wb3J0IGJpdGJha2VfbWFpbiwgQml0QmFrZUNvbmZpZ1BhcmFtZXRlcnMsIEJCTWFpbkV4Y2VwdGlvbgogCiBpZiBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgIT0gInV0Zi04IjoKLSAgICBzeXMuZXhpdCgiUGxlYXNlIHVzZSBhIGxvY2FsZSBzZXR0aW5nIHdoaWNoIHN1cHBvcnRzIHV0Zi04LlxuUHl0aG9uIGNhbid0IGNoYW5nZSB0aGUgZmlsZXN5c3RlbSBsb2NhbGUgYWZ0ZXIgbG9hZGluZyBzbyB3ZSBuZWVkIGEgdXRmLTggd2hlbiBweXRob24gc3RhcnRzIG9yIHRoaW5ncyB3b24ndCB3b3JrLiIpCisgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjM0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM2LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1kaWZmc2lncyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWRpZmZzaWdzCmluZGV4IGViMmY4NTkuLjRlNmJiZGQgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWRpZmZzaWdzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWRpZmZzaWdzCkBAIC0zNCwxOCArMzQsMzkgQEAKIAogbG9nZ2VyID0gYmIubXNnLmxvZ2dlcl9jcmVhdGUoJ2JpdGJha2UtZGlmZnNpZ3MnKQogCitkZWYgZmluZF9zaWdpbmZvKHRpbmZvaWwsIHBuLCB0YXNrbmFtZSwgc2lncz1Ob25lKToKKyAgICByZXN1bHQgPSBOb25lCisgICAgdGluZm9pbC5zZXRfZXZlbnRfbWFzayhbJ2JiLmV2ZW50LkZpbmRTaWdJbmZvUmVzdWx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nZ2luZy5Mb2dSZWNvcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQnXSkKKyAgICByZXQgPSB0aW5mb2lsLnJ1bl9jb21tYW5kKCdmaW5kU2lnSW5mbycsIHBuLCB0YXNrbmFtZSwgc2lncykKKyAgICBpZiByZXQ6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBldmVudCA9IHRpbmZvaWwud2FpdF9ldmVudCgxKQorICAgICAgICAgICAgaWYgZXZlbnQ6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgyKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuRmluZFNpZ0luZm9SZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBldmVudC5yZXN1bHQKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKKyAgICBlbHNlOgorICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIHJlc3VsdCByZXR1cm5lZCBmcm9tIGZpbmRTaWdJbmZvIGNvbW1hbmQnKQorICAgICAgICBzeXMuZXhpdCgyKQorICAgIHJldHVybiByZXN1bHQKKwogZGVmIGZpbmRfY29tcGFyZV90YXNrKGJiaGFuZGxlciwgcG4sIHRhc2tuYW1lLCBzaWcxPU5vbmUsIHNpZzI9Tm9uZSwgY29sb3I9RmFsc2UpOgogICAgICIiIiBGaW5kIHRoZSBtb3N0IHJlY2VudCBzaWduYXR1cmUgZmlsZXMgZm9yIHRoZSBzcGVjaWZpZWQgUE4vdGFzayBhbmQgY29tcGFyZSB0aGVtICIiIgogCi0gICAgaWYgbm90IGhhc2F0dHIoYmIuc2lnZ2VuLCAnZmluZF9zaWdpbmZvJyk6Ci0gICAgICAgIGxvZ2dlci5lcnJvcignTWV0YWRhdGEgZG9lcyBub3Qgc3VwcG9ydCBmaW5kaW5nIHNpZ25hdHVyZSBkYXRhIGZpbGVzJykKLSAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgIGlmIG5vdCB0YXNrbmFtZS5zdGFydHN3aXRoKCdkb18nKToKICAgICAgICAgdGFza25hbWUgPSAnZG9fJXMnICUgdGFza25hbWUKIAogICAgIGlmIHNpZzEgYW5kIHNpZzI6Ci0gICAgICAgIHNpZ2ZpbGVzID0gYmIuc2lnZ2VuLmZpbmRfc2lnaW5mbyhwbiwgdGFza25hbWUsIFtzaWcxLCBzaWcyXSwgYmJoYW5kbGVyLmNvbmZpZ19kYXRhKQorICAgICAgICBzaWdmaWxlcyA9IGZpbmRfc2lnaW5mbyhiYmhhbmRsZXIsIHBuLCB0YXNrbmFtZSwgW3NpZzEsIHNpZzJdKQogICAgICAgICBpZiBsZW4oc2lnZmlsZXMpID09IDA6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIHNpZ2RhdGEgZmlsZXMgZm91bmQgbWF0Y2hpbmcgJXMgJXMgbWF0Y2hpbmcgZWl0aGVyICVzIG9yICVzJyAlIChwbiwgdGFza25hbWUsIHNpZzEsIHNpZzIpKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTU3LDcgKzc4LDcgQEAKICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgIGxhdGVzdGZpbGVzID0gW3NpZ2ZpbGVzW3NpZzFdLCBzaWdmaWxlc1tzaWcyXV0KICAgICBlbHNlOgotICAgICAgICBmaWxlZGF0ZXMgPSBiYi5zaWdnZW4uZmluZF9zaWdpbmZvKHBuLCB0YXNrbmFtZSwgTm9uZSwgYmJoYW5kbGVyLmNvbmZpZ19kYXRhKQorICAgICAgICBmaWxlZGF0ZXMgPSBmaW5kX3NpZ2luZm8oYmJoYW5kbGVyLCBwbiwgdGFza25hbWUpCiAgICAgICAgIGxhdGVzdGZpbGVzID0gc29ydGVkKGZpbGVkYXRlcy5rZXlzKCksIGtleT1sYW1iZGEgZjogZmlsZWRhdGVzW2ZdKVstMzpdCiAgICAgICAgIGlmIG5vdCBsYXRlc3RmaWxlczoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignTm8gc2lnZGF0YSBmaWxlcyBmb3VuZCBtYXRjaGluZyAlcyAlcycgJSAocG4sIHRhc2tuYW1lKSkKQEAgLTY5LDcgKzkwLDcgQEAKICAgICAjIERlZmluZSByZWN1cnNpb24gY2FsbGJhY2sKICAgICBkZWYgcmVjdXJzZWNiKGtleSwgaGFzaDEsIGhhc2gyKToKICAgICAgICAgaGFzaGVzID0gW2hhc2gxLCBoYXNoMl0KLSAgICAgICAgaGFzaGZpbGVzID0gYmIuc2lnZ2VuLmZpbmRfc2lnaW5mbyhrZXksIE5vbmUsIGhhc2hlcywgYmJoYW5kbGVyLmNvbmZpZ19kYXRhKQorICAgICAgICBoYXNoZmlsZXMgPSBmaW5kX3NpZ2luZm8oYmJoYW5kbGVyLCBrZXksIE5vbmUsIGhhc2hlcykKIAogICAgICAgICByZWNvdXQgPSBbXQogICAgICAgICBpZiBsZW4oaGFzaGZpbGVzKSA9PSAwOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCmluZGV4IDJiMDVkMjguLmQxODQwMTEgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAgICAgYWRkX2hlbHA9RmFsc2UpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1kZWJ1ZycsIGhlbHA9J0VuYWJsZSBkZWJ1ZyBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBoZWxwPSdQcmludCBvbmx5IGVycm9ycycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JjZScsIGhlbHA9J0ZvcmNlIGFkZCB3aXRob3V0IHJlY2lwZSBwYXJzZSB2ZXJpZmljYXRpb24nLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY29sb3InLCBjaG9pY2VzPVsnYXV0bycsICdhbHdheXMnLCAnbmV2ZXInXSwgZGVmYXVsdD0nYXV0bycsIGhlbHA9J0NvbG9yaXplIG91dHB1dCAod2hlcmUgJShtZXRhdmFyKXMgaXMgJShjaG9pY2VzKXMpJywgbWV0YXZhcj0nQ09MT1InKQogCiAgICAgZ2xvYmFsX2FyZ3MsIHVucGFyc2VkX2FyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncygpCkBAIC04OSw3ICs5MCw3IEBACiAKICAgICAgICAgaWYgZ2V0YXR0cihhcmdzLCAncGFyc2VyZWNpcGVzJywgRmFsc2UpOgogICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5kaXNhYmxlVHJhY2tpbmcoKQotICAgICAgICAgICAgdGluZm9pbC5wYXJzZVJlY2lwZXMoKQorICAgICAgICAgICAgdGluZm9pbC5wYXJzZV9yZWNpcGVzKCkKICAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZW5hYmxlVHJhY2tpbmcoKQogCiAgICAgICAgIHJldHVybiBhcmdzLmZ1bmMoYXJncykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXNlbGZ0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utc2VsZnRlc3QKaW5kZXggMzgwZTAwMy4uYWZlMTYwMyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utc2VsZnRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utc2VsZnRlc3QKQEAgLTI4LDYgKzI4LDcgQEAKIHRlc3RzID0gWyJiYi50ZXN0cy5jb2RlcGFyc2VyIiwKICAgICAgICAgICJiYi50ZXN0cy5jb3ciLAogICAgICAgICAgImJiLnRlc3RzLmRhdGEiLAorICAgICAgICAgImJiLnRlc3RzLmV2ZW50IiwKICAgICAgICAgICJiYi50ZXN0cy5mZXRjaCIsCiAgICAgICAgICAiYmIudGVzdHMucGFyc2UiLAogICAgICAgICAgImJiLnRlc3RzLnV0aWxzIl0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgppbmRleCBlZTJkNjIyLi5lOTI1MDU0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCkBAIC0xNyw3ICsxNyw3IEBACiBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCiAKIGlmIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAhPSAidXRmLTgiOgotICAgIHN5cy5leGl0KCJQbGVhc2UgdXNlIGEgbG9jYWxlIHNldHRpbmcgd2hpY2ggc3VwcG9ydHMgdXRmLTguXG5QeXRob24gY2FuJ3QgY2hhbmdlIHRoZSBmaWxlc3lzdGVtIGxvY2FsZSBhZnRlciBsb2FkaW5nIHNvIHdlIG5lZWQgYSB1dGYtOCB3aGVuIHB5dGhvbiBzdGFydHMgb3IgdGhpbmdzIHdvbid0IHdvcmsuIikKKyAgICBzeXMuZXhpdCgiUGxlYXNlIHVzZSBhIGxvY2FsZSBzZXR0aW5nIHdoaWNoIHN1cHBvcnRzIFVURi04IChzdWNoIGFzIExBTkc9ZW5fVVMuVVRGLTgpLlxuUHl0aG9uIGNhbid0IGNoYW5nZSB0aGUgZmlsZXN5c3RlbSBsb2NhbGUgYWZ0ZXIgbG9hZGluZyBzbyB3ZSBuZWVkIGEgVVRGLTggd2hlbiBQeXRob24gc3RhcnRzIG9yIHRoaW5ncyB3b24ndCB3b3JrLiIpCiAKICMgVXNlcnMgc2hvdWxkbid0IGJlIHJ1bm5pbmcgdGhpcyBjb2RlIGRpcmVjdGx5CiBpZiBsZW4oc3lzLmFyZ3YpICE9IDIgb3Igbm90IHN5cy5hcmd2WzFdLnN0YXJ0c3dpdGgoImRlY2FmYmFkIik6CkBAIC00OTksNCArNDk5LDMgQEAKIAogd29ya2VybG9nX3dyaXRlKCJleGl0dGluZyIpCiBzeXMuZXhpdCgwKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vZ2l0LW1ha2Utc2hhbGxvdyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9naXQtbWFrZS1zaGFsbG93Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI5NmQzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vZ2l0LW1ha2Utc2hhbGxvdwpAQCAtMCwwICsxLDE2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIiIiZ2l0LW1ha2Utc2hhbGxvdzogbWFrZSB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeSBzaGFsbG93CisKK1JlbW92ZSB0aGUgaGlzdG9yeSBvZiB0aGUgc3BlY2lmaWVkIHJldmlzaW9ucywgdGhlbiBvcHRpb25hbGx5IGZpbHRlciB0aGUKK2F2YWlsYWJsZSByZWZzIHRvIHRob3NlIHNwZWNpZmllZC4KKyIiIgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGVycm5vCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3ZlcnNpb24gPSAxLjAKKworCitkZWYgbWFpbigpOgorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6CisgICAgICAgIHN5cy5leGl0KCdQeXRob24gMy40IG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQnKQorCisgICAgZ2l0X2RpciA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdyZXYtcGFyc2UnLCAnLS1naXQtZGlyJ10pLnJzdHJpcCgpCisgICAgc2hhbGxvd19maWxlID0gb3MucGF0aC5qb2luKGdpdF9kaXIsICdzaGFsbG93JykKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhzaGFsbG93X2ZpbGUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaGVja19vdXRwdXQoWydnaXQnLCAnZmV0Y2gnLCAnLS11bnNoYWxsb3cnXSkKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnVubGluayhzaGFsbG93X2ZpbGUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgaWYgZXhjLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGFyZ3MgPSBwcm9jZXNzX2FyZ3MoKQorICAgIHJldnMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LWxpc3QnXSArIGFyZ3MucmV2aXNpb25zKS5zcGxpdGxpbmVzKCkKKworICAgIG1ha2Vfc2hhbGxvdyhzaGFsbG93X2ZpbGUsIGFyZ3MucmV2aXNpb25zLCBhcmdzLnJlZnMpCisKKyAgICByZWZfcmV2cyA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdyZXYtbGlzdCddICsgYXJncy5yZWZzKS5zcGxpdGxpbmVzKCkKKyAgICByZW1haW5pbmdfaGlzdG9yeSA9IHNldChyZXZzKSAmIHNldChyZWZfcmV2cykKKyAgICBmb3IgcmV2IGluIHJlbWFpbmluZ19oaXN0b3J5OgorICAgICAgICBpZiBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LXBhcnNlJywgJ3t9XkAnLmZvcm1hdChyZXYpXSk6CisgICAgICAgICAgICBzeXMuZXhpdCgnRXJyb3I6ICVzIHdhcyBub3QgbWFkZSBzaGFsbG93JyAlIHJldikKKworICAgIGZpbHRlcl9yZWZzKGFyZ3MucmVmcykKKworICAgIGlmIGFyZ3Muc2hyaW5rOgorICAgICAgICBzaHJpbmtfcmVwbyhnaXRfZGlyKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWydnaXQnLCAnZnNjaycsICctLXVucmVhY2hhYmxlJ10pCisKKworZGVmIHByb2Nlc3NfYXJncygpOgorICAgICMgVE9ETzogYWRkIGFyZ3VtZW50IHRvIGF1dG9tYXRpY2FsbHkga2VlcCBsb2NhbC1vbmx5IHJlZnMsIHNpbmNlIHRoZXkKKyAgICAjIGNhbid0IGJlIGVhc2lseSByZXN0b3JlZCB3aXRoIGEgZ2l0IGZldGNoLgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdSZW1vdmUgdGhlIGhpc3Rvcnkgb2YgdGhlIHNwZWNpZmllZCByZXZpc2lvbnMsIHRoZW4gb3B0aW9uYWxseSBmaWx0ZXIgdGhlIGF2YWlsYWJsZSByZWZzIHRvIHRob3NlIHNwZWNpZmllZC4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVmJywgJy1yJywgbWV0YXZhcj0nUkVGJywgYWN0aW9uPSdhcHBlbmQnLCBkZXN0PSdyZWZzJywgaGVscD0ncmVtb3ZlIGFsbCBidXQgdGhlIHNwZWNpZmllZCByZWZzIChjdW11bGF0aXZlKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zaHJpbmsnLCAnLXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdzaHJpbmsgdGhlIGdpdCByZXBvc2l0b3J5IGJ5IHJlcGFja2luZyBhbmQgcHJ1bmluZycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmV2aXNpb25zJywgbWV0YXZhcj0nUkVWSVNJT04nLCBuYXJncz0nKycsIGhlbHA9J2EgZ2l0IHJldmlzaW9uL2NvbW1pdCcpCisgICAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKKyAgICAgICAgc3lzLmV4aXQoMikKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBhcmdzLnJlZnM6CisgICAgICAgIGFyZ3MucmVmcyA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdyZXYtcGFyc2UnLCAnLS1zeW1ib2xpYy1mdWxsLW5hbWUnXSArIGFyZ3MucmVmcykuc3BsaXRsaW5lcygpCisgICAgZWxzZToKKyAgICAgICAgYXJncy5yZWZzID0gZ2V0X2FsbF9yZWZzKGxhbWJkYSByLCB0LCB0dDogdCA9PSAnY29tbWl0JyBvciB0dCA9PSAnY29tbWl0JykKKworICAgIGFyZ3MucmVmcyA9IGxpc3QoZmlsdGVyKGxhbWJkYSByOiBub3Qgci5lbmRzd2l0aCgnL0hFQUQnKSwgYXJncy5yZWZzKSkKKyAgICBhcmdzLnJldmlzaW9ucyA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdyZXYtcGFyc2UnXSArIFsnJXNee30nICUgaSBmb3IgaSBpbiBhcmdzLnJldmlzaW9uc10pLnNwbGl0bGluZXMoKQorICAgIHJldHVybiBhcmdzCisKKworZGVmIGNoZWNrX291dHB1dChjbWQsIGlucHV0PU5vbmUpOgorICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBpbnB1dD1pbnB1dCkKKworCitkZWYgbWFrZV9zaGFsbG93KHNoYWxsb3dfZmlsZSwgcmV2aXNpb25zLCByZWZzKToKKyAgICAiIiJSZW1vdmUgdGhlIGhpc3Rvcnkgb2YgdGhlIHNwZWNpZmllZCByZXZpc2lvbnMuIiIiCisgICAgZm9yIHJldiBpbiBmb2xsb3dfaGlzdG9yeV9pbnRlcnNlY3Rpb25zKHJldmlzaW9ucywgcmVmcyk6CisgICAgICAgIHByaW50KCJQcm9jZXNzaW5nICVzIiAlIHJldikKKyAgICAgICAgd2l0aCBvcGVuKHNoYWxsb3dfZmlsZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShyZXYgKyAnXG4nKQorCisKK2RlZiBnZXRfYWxsX3JlZnMocmVmX2ZpbHRlcj1Ob25lKToKKyAgICAiIiJSZXR1cm4gYWxsIHRoZSBleGlzdGluZyByZWZzIGluIHRoaXMgcmVwb3NpdG9yeSwgb3B0aW9uYWxseSBmaWx0ZXJpbmcgdGhlIHJlZnMuIiIiCisgICAgcmVmX291dHB1dCA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdmb3ItZWFjaC1yZWYnLCAnLS1mb3JtYXQ9JShyZWZuYW1lKVx0JShvYmplY3R0eXBlKVx0JSgqb2JqZWN0dHlwZSknXSkKKyAgICByZWZfc3BsaXQgPSBbdHVwbGUoaXRlcl9leHRlbmQobC5yc3BsaXQoJ1x0JyksIDMpKSBmb3IgbCBpbiByZWZfb3V0cHV0LnNwbGl0bGluZXMoKV0KKyAgICBpZiByZWZfZmlsdGVyOgorICAgICAgICByZWZfc3BsaXQgPSAoZSBmb3IgZSBpbiByZWZfc3BsaXQgaWYgcmVmX2ZpbHRlcigqZSkpCisgICAgcmVmcyA9IFtyWzBdIGZvciByIGluIHJlZl9zcGxpdF0KKyAgICByZXR1cm4gcmVmcworCisKK2RlZiBpdGVyX2V4dGVuZChpdGVyYWJsZSwgbGVuZ3RoLCBvYmo9Tm9uZSk6CisgICAgIiIiRW5zdXJlIHRoYXQgaXRlcmFibGUgaXMgdGhlIHNwZWNpZmllZCBsZW5ndGggYnkgZXh0ZW5kaW5nIHdpdGggb2JqLiIiIgorICAgIHJldHVybiBpdGVydG9vbHMuaXNsaWNlKGl0ZXJ0b29scy5jaGFpbihpdGVyYWJsZSwgaXRlcnRvb2xzLnJlcGVhdChvYmopKSwgbGVuZ3RoKQorCisKK2RlZiBmaWx0ZXJfcmVmcyhyZWZzKToKKyAgICAiIiJSZW1vdmUgYWxsIGJ1dCB0aGUgc3BlY2lmaWVkIHJlZnMgZnJvbSB0aGUgZ2l0IHJlcG9zaXRvcnkuIiIiCisgICAgYWxsX3JlZnMgPSBnZXRfYWxsX3JlZnMoKQorICAgIHRvX3JlbW92ZSA9IHNldChhbGxfcmVmcykgLSBzZXQocmVmcykKKyAgICBpZiB0b19yZW1vdmU6CisgICAgICAgIGNoZWNrX291dHB1dChbJ3hhcmdzJywgJy0wJywgJy1uJywgJzEnLCAnZ2l0JywgJ3VwZGF0ZS1yZWYnLCAnLWQnLCAnLS1uby1kZXJlZiddLAorICAgICAgICAgICAgICAgICAgICAgaW5wdXQ9Jycuam9pbihsICsgJ1wwJyBmb3IgbCBpbiB0b19yZW1vdmUpKQorCisKK2RlZiBmb2xsb3dfaGlzdG9yeV9pbnRlcnNlY3Rpb25zKHJldmlzaW9ucywgcmVmcyk6CisgICAgIiIiRGV0ZXJtaW5lIGFsbCB0aGUgcG9pbnRzIHdoZXJlIHRoZSBoaXN0b3J5IG9mIHRoZSBzcGVjaWZpZWQgcmV2aXNpb25zIGludGVyc2VjdHMgdGhlIHNwZWNpZmllZCByZWZzLiIiIgorICAgIHF1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUocmV2aXNpb25zKQorICAgIHNlZW4gPSBzZXQoKQorCisgICAgZm9yIHJldiBpbiBpdGVyX2V4Y2VwdChxdWV1ZS5wb3BsZWZ0LCBJbmRleEVycm9yKToKKyAgICAgICAgaWYgcmV2IGluIHNlZW46CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHBhcmVudHMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LXBhcnNlJywgJyVzXkAnICUgcmV2XSkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgeWllbGQgcmV2CisgICAgICAgIHNlZW4uYWRkKHJldikKKworICAgICAgICBpZiBub3QgcGFyZW50czoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY2hlY2tfcmVmcyA9IGNoZWNrX291dHB1dChbJ2dpdCcsICdtZXJnZS1iYXNlJywgJy0taW5kZXBlbmRlbnQnXSArIHNvcnRlZChyZWZzKSkuc3BsaXRsaW5lcygpCisgICAgICAgIGZvciBwYXJlbnQgaW4gcGFyZW50czoKKyAgICAgICAgICAgIGZvciByZWYgaW4gY2hlY2tfcmVmczoKKyAgICAgICAgICAgICAgICBwcmludCgiQ2hlY2tpbmcgJXMgdnMgJXMiICUgKHBhcmVudCwgcmVmKSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1lcmdlX2Jhc2UgPSBjaGVja19vdXRwdXQoWydnaXQnLCAnbWVyZ2UtYmFzZScsIHBhcmVudCwgcmVmXSkucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1lcmdlX2Jhc2UpCisKKworZGVmIGl0ZXJfZXhjZXB0KGZ1bmMsIGV4Y2VwdGlvbiwgc3RhcnQ9Tm9uZSk6CisgICAgIiIiWWllbGQgYSBmdW5jdGlvbiByZXBlYXRlZGx5IHVudGlsIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIiIiCisgICAgdHJ5OgorICAgICAgICBpZiBzdGFydCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHlpZWxkIHN0YXJ0KCkKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKQorICAgIGV4Y2VwdCBleGNlcHRpb246CisgICAgICAgIHBhc3MKKworCitkZWYgc2hyaW5rX3JlcG8oZ2l0X2Rpcik6CisgICAgIiIiU2hyaW5rIHRoZSBuZXdseSBzaGFsbG93IHJlcG9zaXRvcnksIHJlbW92aW5nIHRoZSB1bnJlYWNoYWJsZSBvYmplY3RzLiIiIgorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ2dpdCcsICdyZWZsb2cnLCAnZXhwaXJlJywgJy0tZXhwaXJlLXVucmVhY2hhYmxlPW5vdycsICctLWFsbCddKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ2dpdCcsICdyZXBhY2snLCAnLWFkJ10pCisgICAgdHJ5OgorICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGdpdF9kaXIsICdvYmplY3RzJywgJ2luZm8nLCAnYWx0ZXJuYXRlcycpKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgaWYgZXhjLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsnZ2l0JywgJ3BydW5lJywgJy0tZXhwaXJlJywgJ25vdyddKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCmluZGV4IDYxYTRhMGYuLjQwMzZmMGEgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC0xOCwxMiArMTgsMjEgQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uCiAKIEhFTFA9IgotVXNhZ2U6IHNvdXJjZSB0b2FzdGVyIHN0YXJ0fHN0b3AgW3dlYnBvcnQ9PGFkZHJlc3M6cG9ydD5dIFtub3dlYl0KK1VzYWdlOiBzb3VyY2UgdG9hc3RlciBzdGFydHxzdG9wIFt3ZWJwb3J0PTxhZGRyZXNzOnBvcnQ+XSBbbm93ZWJdIFtub2J1aWxkXQogICAgIE9wdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgICAgW25vd2ViXSBTZXR1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGJ1aWxkaW5nIHdpdGggdG9hc3RlciBidXQgZG9uJ3Qgc3RhcnQgdGhlIGRldmVsb3BtZW50IHNlcnZlcgorICAgICAgICBbbm9idWlsZF0gU2V0dXAgdGhlIGVudmlyb25tZW50IGZvciBjYXB0dXJpbmcgYnVpbGRzIHdpdGggdG9hc3RlciBidXQgZGlzYWJsZSBtYW5hZ2VkIGJ1aWxkcworICAgICAgICBbbm93ZWJdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRvbid0IHN0YXJ0IHRoZSB3ZWIgc2VydmVyCiAgICAgICAgIFt3ZWJwb3J0XSBTZXQgdGhlIGRldmVsb3BtZW50IHNlcnZlciAoZGVmYXVsdDogbG9jYWxob3N0OjgwMDApCiAiCiAKK2N1c3RvbV9leHRlbnRpb24oKQoreworICAgIGN1c3RvbV9leHRlbnNpb249JEJCQkFTRURJUi9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvY3VzdG9tX3RvYXN0ZXJfYXBwZW5kLnNoCisgICAgaWYgWyAtZiAkY3VzdG9tX2V4dGVuc2lvbiBdIDsgdGhlbgorICAgICAgICAkY3VzdG9tX2V4dGVuc2lvbiAkKgorICAgIGZpCit9CisKIGRhdGFiYXNlQ2hlY2soKQogewogICAgIHJldHZhbD0wCkBAIC01MCw2ICs1OSwxMSBAQAogd2Vic2VydmVyS2lsbEFsbCgpCiB7CiAgICAgbG9jYWwgcGlkZmlsZQorICAgIGlmIFsgLWYgJHtCVUlMRERJUn0vLnRvYXN0ZXJtYWluLnBpZCBdIDsgdGhlbgorICAgICAgICBjdXN0b21fZXh0ZW50aW9uIHdlYl9zdG9wX3Bvc3RwZW5kCisgICAgZWxzZQorICAgICAgICBjdXN0b21fZXh0ZW50aW9uIG5vd2ViX3N0b3BfcG9zdHBlbmQKKyAgICBmaQogICAgIGZvciBwaWRmaWxlIGluICR7QlVJTERESVJ9Ly50b2FzdGVybWFpbi5waWQgJHtCVUlMRERJUn0vLnJ1bmJ1aWxkcy5waWQ7IGRvCiAgICAgICAgIGlmIFsgLWYgJHtwaWRmaWxlfSBdOyB0aGVuCiAgICAgICAgICAgICBwaWQ9YGNhdCAke3BpZGZpbGV9YApAQCAtODksNiArMTAzLDcgQEAKICAgICBlbHNlCiAgICAgICAgIGVjaG8gIlRvYXN0ZXIgZGV2ZWxvcG1lbnQgd2Vic2VydmVyIHN0YXJ0ZWQgYXQgaHR0cDovLyRBRERSX1BPUlQiCiAgICAgICAgIGVjaG8gLWUgIlxuWW91IGNhbiBub3cgcnVuICdiaXRiYWtlIDx0YXJnZXQ+JyBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZCBtb25pdG9yIHlvdXIgYnVpbGQgaW4gVG9hc3Rlci5cbllvdSBjYW4gYWxzbyB1c2UgYSBUb2FzdGVyIHByb2plY3QgdG8gY29uZmlndXJlIGFuZCBydW4gYSBidWlsZC5cbiIKKyAgICAgICAgY3VzdG9tX2V4dGVudGlvbiB3ZWJfc3RhcnRfcG9zdHBlbmQgJEFERFJfUE9SVAogICAgIGZpCiAKICAgICByZXR1cm4gJHJldHZhbApAQCAtMTE2LDggKzEzMSwxNCBAQAogICAgICMgVmVyaWZ5IERqYW5nbyB2ZXJzaW9uCiAgICAgcmVxZmlsZT0kKHB5dGhvbjMgLWMgImltcG9ydCBvczsgcHJpbnQob3MucGF0aC5yZWFscGF0aCgnJEJCQkFTRURJUi90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQnKSkiKQogICAgIGV4cD0ncy9EamFuZ29cKFs+PD1dXCtcKVwoW14sXVwrXCksXChbPjw9XVwrXClcKC5cK1wpLycKLSAgICBleHA9JGV4cCdpbXBvcnQgc3lzLGRqYW5nbzt2ZXJzaW9uPWRqYW5nby5nZXRfdmVyc2lvbigpLnNwbGl0KCIuIik7JwotICAgIGV4cD0kZXhwJ3N5cy5leGl0KG5vdCAodmVyc2lvbiBcMSAiXDIiLnNwbGl0KCIuIikgYW5kIHZlcnNpb24gXDMgIlw0Ii5zcGxpdCgiLiIpKSkvcCcKKyAgICAjIGV4cGFuZCB2ZXJzaW9uIHBhcnRzIHRvIDIgZGlnaXRzIHRvIHN1cHBvcnQgMS4xMC54ID4gMS44CisgICAgIyAobm90ZTpoZWxwZXIgZnVuY3Rpb25zIGhhcmQgdG8gaW5zZXJ0IGluLWxpbmUpCisgICAgZXhwPSRleHAnaW1wb3J0IHN5cyxkamFuZ287JworICAgIGV4cD0kZXhwJ3ZlcnNpb249WyIlMDJkIiAlIGludChuKSBmb3IgbiBpbiBkamFuZ28uZ2V0X3ZlcnNpb24oKS5zcGxpdCgiLiIpXTsnCisgICAgZXhwPSRleHAndm1pbj1bIiUwMmQiICUgaW50KG4pIGZvciBuIGluICJcMiIuc3BsaXQoIi4iKV07JworICAgIGV4cD0kZXhwJ3ZtYXg9WyIlMDJkIiAlIGludChuKSBmb3IgbiBpbiAiXDQiLnNwbGl0KCIuIildOycKKyAgICBleHA9JGV4cCdzeXMuZXhpdChub3QgKHZlcnNpb24gXDEgdm1pbiBhbmQgdmVyc2lvbiBcMyB2bWF4KSknCisgICAgZXhwPSRleHAnL3AnCiAgICAgaWYgISBzZWQgLW4gIiRleHAiICRyZXFmaWxlIHwgcHl0aG9uMyAtIDsgdGhlbgogICAgICAgICByZXE9YGdyZXAgXkRqYW5nbyAkcmVxZmlsZWAKICAgICAgICAgZWNobyAiVGhpcyBwcm9ncmFtIG5lZWRzICRyZXEiCkBAIC0xNjIsOCArMTgzLDggQEAKIHVuc2V0IE9FX1JPT1QKIAogCi0KIFdFQlNFUlZFUj0xCitleHBvcnQgVE9BU1RFUl9CVUlMRFNFUlZFUj0xCiBBRERSX1BPUlQ9ImxvY2FsaG9zdDo4MDAwIgogdW5zZXQgQ01ECiBmb3IgcGFyYW0gaW4gJCo7IGRvCkBAIC0xNzEsNiArMTkyLDkgQEAKICAgICBub3dlYiApCiAgICAgICAgICAgICBXRUJTRVJWRVI9MAogICAgIDs7CisgICAgbm9idWlsZCApCisgICAgICAgICAgICBUT0FTVEVSX0JVSUxEU0VSVkVSPTAKKyAgICA7OwogICAgIHN0YXJ0ICkKICAgICAgICAgICAgIENNRD0kcGFyYW0KICAgICA7OwpAQCAtMjM1LDYgKzI1OSw3IEBACiBlY2hvICJUaGUgc3lzdGVtIHdpbGwgJENNRC4iCiAKICMgRXhlY3V0ZSB0aGUgY29tbWFuZHMKK2N1c3RvbV9leHRlbnRpb24gdG9hc3Rlcl9wcmVwZW5kICRDTUQgJEFERFJfUE9SVAogCiBjYXNlICRDTUQgaW4KICAgICBzdGFydCApCkBAIC0yNTYsMjIgKzI4MSwyOCBAQAogICAgICAgICAgICAgaWYgWyAhIC1mICIkVE9BU1RFUl9ESVIvdG9hc3Rlci5zcWxpdGUiIF0gOyB0aGVuCiAgICAgICAgICAgICAgICAgaWYgISBkYXRhYmFzZUNoZWNrOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIGVjaG8gIkZhaWxlZCAke0NNRH0uIgotICAgICAgICAgICAgICAgICAgcmV0dXJuIDQKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGN1c3RvbV9leHRlbnRpb24gbm93ZWJfc3RhcnRfcG9zdHBlbmQgJEFERFJfUE9SVAogICAgICAgICBmaQogICAgICAgICBpZiBbICRXRUJTRVJWRVIgLWd0IDAgXSAmJiAhIHdlYnNlcnZlclN0YXJ0QWxsOyB0aGVuCiAgICAgICAgICAgICBlY2hvICJGYWlsZWQgJHtDTUR9LiIKICAgICAgICAgICAgIHJldHVybiA0CiAgICAgICAgIGZpCiAgICAgICAgIGV4cG9ydCBCSVRCQUtFX1VJPSd0b2FzdGVydWknCi0gICAgICAgICRNQU5BR0UgcnVuYnVpbGRzIFwKLSAgICAgICAgICAgPC9kZXYvbnVsbCA+PiR7QlVJTERESVJ9L3RvYXN0ZXJfcnVuYnVpbGRzLmxvZyAyPiYxIFwKLSAgICAgICAgICAgJiBlY2hvICQhID4ke0JVSUxERElSfS8ucnVuYnVpbGRzLnBpZAorICAgICAgICBpZiBbICRUT0FTVEVSX0JVSUxEU0VSVkVSIC1lcSAxIF0gOyB0aGVuCisgICAgICAgICAgICAkTUFOQUdFIHJ1bmJ1aWxkcyBcCisgICAgICAgICAgICAgICA8L2Rldi9udWxsID4+JHtCVUlMRERJUn0vdG9hc3Rlcl9ydW5idWlsZHMubG9nIDI+JjEgXAorICAgICAgICAgICAgICAgJiBlY2hvICQhID4ke0JVSUxERElSfS8ucnVuYnVpbGRzLnBpZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBlY2hvICJUb2FzdGVyIGJ1aWxkIHNlcnZlciBub3Qgc3RhcnRlZC4iCisgICAgICAgIGZpCiAKICAgICAgICAgIyBzZXQgZmFpbCBzYWZlIHN0b3Agc3lzdGVtIG9uIHRlcm1pbmFsIGV4aXQKICAgICAgICAgdHJhcCBzdG9wX3N5c3RlbSBTSUdIVVAKICAgICAgICAgZWNobyAiU3VjY2Vzc2Z1bCAke0NNRH0uIgorICAgICAgICBjdXN0b21fZXh0ZW50aW9uIHRvYXN0ZXJfcG9zdHBlbmQgJENNRCAkQUREUl9QT1JUCiAgICAgICAgIHJldHVybiAwCiAgICAgOzsKICAgICBzdG9wICkKQEAgLTI3OSwzICszMTAsNSBAQAogICAgICAgICBlY2hvICJTdWNjZXNzZnVsICR7Q01EfS4iCiAgICAgOzsKIGVzYWMKK2N1c3RvbV9leHRlbnRpb24gdG9hc3Rlcl9wb3N0cGVuZCAkQ01EICRBRERSX1BPUlQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbAppbmRleCBkMWNlNDNlLi5jNzIxZTg2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbApAQCAtNjIwLDcgKzYyMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgR2l0IFN1Ym1vZHVsZXMgZmV0Y2hlciBpcyBub3QgYSBjb21wbGV0ZSBmZXRjaGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIGhhcyBrbm93biBpc3N1ZXMgd2hlcmUgaXQgZG9lcyBub3QgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIHNvdXJjZSBtaXJyb3JpbmcgaW5mcmFzdHJ1Y3R1cmUgcHJvcGVybHkuCisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWwgc291cmNlIG1pcnJvcmluZyBpbmZyYXN0cnVjdHVyZSBwcm9wZXJseS4gRnVydGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWJtb2R1bGUgc291cmNlcyBpdCBmZXRjaGVzIGFyZSBub3QgdmlzaWJsZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2luZyBhbmQgc291cmNlIGFyY2hpdmluZyBpbmZyYXN0cnVjdHVyZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCmluZGV4IDI2ODVjMGUuLjkyNTNlYWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCkBAIC0xMjgsMTUgKzEyOCw4IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB3YXMgaW5zcGlyZWQgYnkgYW5kIGRyZXcgaGVhdmlseSBmcm9tIHRoZXNlIHNvdXJjZXM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3lvY3RvQHlvY3RvcHJvamVjdC5vcmcvbXNnMDkzNzkuaHRtbCI+TWFpbGluZyBMaXN0IHBvc3QgLSBUaGUgQml0QmFrZSBlcXVpdmFsZW50IG9mICJIZWxsbywgV29ybGQhIjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTUwMzI1MTY1OTExL2h0dHA6Ly9oYW1iZWRkZWQub3JnL2Jsb2cvMjAxMi8xMS8yNC9mcm9tLWJpdGJha2UtaGVsbG8td29ybGQtdG8tYW4taW1hZ2UvIj5IYW1iZWRkZWQgTGludXggYmxvZyBwb3N0IC0gRnJvbSBCaXRiYWtlIEhlbGxvIFdvcmxkIHRvIGFuIEltYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB3YXMgaW5zcGlyZWQgYnkgYW5kIGRyZXcgaGVhdmlseSBmcm9tCisgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20veW9jdG9AeW9jdG9wcm9qZWN0Lm9yZy9tc2cwOTM3OS5odG1sIj5NYWlsaW5nIExpc3QgcG9zdCAtIFRoZSBCaXRCYWtlIGVxdWl2YWxlbnQgb2YgIkhlbGxvLCBXb3JsZCEiPC91bGluaz4uCiAgICAgICAgIDwvbm90ZT4KIAogICAgICAgICA8cGFyYT4KQEAgLTI2OSw3ICsyNjIsNyBAQAogICAgICAgICAgICAgICAgIGFuZCBkZWZpbmUgc29tZSBrZXkgQml0QmFrZSB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICBzZWUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNTAzMjUxNjU5MTEvaHR0cDovL2hhbWJlZGRlZC5vcmcvYmxvZy8yMDEyLzExLzI0L2Zyb20tYml0YmFrZS1oZWxsby13b3JsZC10by1hbi1pbWFnZS8jYW4tb3ZlcnZpZXctb2YtYml0YmFrZWNvbmYnPjwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UvdHJlZS9jb25mL2JpdGJha2UuY29uZic+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGNyZWF0ZSB0aGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgcHJvamVjdCBkaXJlY3Rvcnk6CkBAIC0zNTIsOSArMzQ1LDYgQEAKICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHRoZSA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4gY2FuIGhhdmUgbXVjaAogICAgICAgICAgICAgICAgIG1vcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGJ1aWxkIGVudmlyb25tZW50cyBCaXRCYWtlIGlzCiAgICAgICAgICAgICAgICAgc3VwcG9ydGluZy4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUsCi0gICAgICAgICAgICAgICAgeW91IGNhbiBsb29rIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTUwMzI1MTY1OTExL2h0dHA6Ly9oYW1iZWRkZWQub3JnL2Jsb2cvMjAxMi8xMS8yNC9mcm9tLWJpdGJha2UtaGVsbG8td29ybGQtdG8tYW4taW1hZ2UvI3Rhc2tzJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgpAQCAtMzc1LDggKzM2NSw4IEBACiAgICAgICAgICAgICAgICAgY29kZSBzZXBhcmF0ZSBmcm9tIHRoZSBnZW5lcmFsIG1ldGFkYXRhIHVzZWQgYnkgQml0QmFrZS4KICAgICAgICAgICAgICAgICBUaHVzLCB0aGlzIGV4YW1wbGUgY3JlYXRlcyBhbmQgdXNlcyBhIGxheWVyIGNhbGxlZCAibXlsYXllciIuCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGFkZGluZyBhIGxheWVyIGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE1MDMyNTE2NTkxMS9odHRwOi8vaGFtYmVkZGVkLm9yZy9ibG9nLzIwMTIvMTEvMjQvZnJvbS1iaXRiYWtlLWhlbGxvLXdvcmxkLXRvLWFuLWltYWdlLyNhZGRpbmctYW4tZXhhbXBsZS1sYXllcic+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGxheWVycyBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwjbGF5ZXJzJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDxwYXJhPk1pbmltYWxseSwgeW91IG5lZWQgYSByZWNpcGUgZmlsZSBhbmQgYSBsYXllciBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IGNhN2Y3MjQuLjA4ZDlhZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCkBAIC00NDAsNyArNDQwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgQnVpbGQgQ2hlY2tvdXQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQSBmaW5hbCBwb3NzaWJpbGl0eSBmb3IgZ2V0dGluZyBhIGNvcHkgb2YgQml0QmFrZSBpcyB0aGF0IGl0CiAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgY29tZXMgd2l0aCB5b3VyIGNoZWNrb3V0IG9mIGEgbGFyZ2VyIEJpdGJha2UtYmFzZWQgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBzdWNoIGFzIFBva3kgb3IgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBzdWNoIGFzIFBva3kuCiAgICAgICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIG1hbnVhbGx5IGNoZWNraW5nIG91dCBpbmRpdmlkdWFsIGxheWVycyBhbmQKICAgICAgICAgICAgICAgICAgICAgZ2x1aW5nIHRoZW0gdG9nZXRoZXIgeW91cnNlbGYsIHlvdSBjYW4gY2hlY2sKICAgICAgICAgICAgICAgICAgICAgb3V0IGFuIGVudGlyZSBidWlsZCBzeXN0ZW0uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCmluZGV4IDFkMWU1YjMuLjBjZmE1M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCkBAIC02NjksNyArNjY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgREVQRU5EUyA9ICJnbGliYyBuY3Vyc2VzIgogICAgICBPVkVSUklERVMgPSAibWFjaGluZTpsb2NhbCIKLSAgICAgREVQRU5EU19hcHBlbmRfbWFjaGluZSA9ICJsaWJtYWQiCisgICAgIERFUEVORFNfYXBwZW5kX21hY2hpbmUgPSAiIGxpYm1hZCIKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiBiZWNvbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xpYmMgbmN1cnNlcyBsaWJtYWQiLgpAQCAtODk5LDExICs4OTksMTIgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gZGlyZWN0aXZlIGlzIGEgcnVkaW1lbnRhcnkKLSAgICAgICAgICAgICAgICBtZWFucyBvZiBzcGVjaWZ5aW5nIHdoYXQgY2xhc3NlcyBvZiBmdW5jdGlvbmFsaXR5IHlvdXIKLSAgICAgICAgICAgICAgICByZWNpcGVzIHJlcXVpcmUuCisgICAgICAgICAgICAgICAgbWVhbnMgb2Ygc3BlY2lmeWluZyBmdW5jdGlvbmFsaXR5IGNvbnRhaW5lZCBpbiBjbGFzcyBmaWxlcworICAgICAgICAgICAgICAgIHRoYXQgeW91ciByZWNpcGVzIHJlcXVpcmUuCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZWFzaWx5IGFic3RyYWN0IG91dCB0aGUgdGFza3MgaW52b2x2ZWQgaW4KICAgICAgICAgICAgICAgICBidWlsZGluZyBhIHBhY2thZ2UgdGhhdCB1c2VzIEF1dG9jb25mIGFuZCBBdXRvbWFrZSBhbmQgcHV0Ci0gICAgICAgICAgICAgICAgdGhvc2UgdGFza3MgaW50byBhIGNsYXNzIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBieSB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICB0aG9zZSB0YXNrcyBpbnRvIGEgY2xhc3MgZmlsZSBhbmQgdGhlbiBoYXZlIHlvdXIgcmVjaXBlCisgICAgICAgICAgICAgICAgaW5oZXJpdCB0aGF0IGNsYXNzIGZpbGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtOTIyLDEzICs5MjMsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkIGNsYXNzIHdpdGhpbiB5b3VyIHJlY2lwZSBieSBkb2luZyBzbwogICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGUgImluaGVyaXQiIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBkaXJlY3RpdmUgdG8gaW5oZXJpdAorICAgICAgICAgICAgICAgIG11bHRpcGxlIGNsYXNzZXMsIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBpbmhlcml0IGJvdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY2xhc3NlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgYnVpbGRoaXN0b3J5IHJtX3dvcmsKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgaXQgaXMgcG9zc2libGUgdG8gaW5oZXJpdCBhIGNsYXNzCi0gICAgICAgICAgICAgICAgY29uZGl0aW9uYWxseSBieSB1c2luZwotICAgICAgICAgICAgICAgIGEgdmFyaWFibGUgZXhwcmVzc2lvbiBhZnRlciB0aGUgPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KKyAgICAgICAgICAgICAgICBBbiBhZHZhbnRhZ2Ugd2l0aCB0aGUgaW5oZXJpdCBkaXJlY3RpdmUgYXMgY29tcGFyZWQgdG8gYm90aAorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luY2x1ZGUtZGlyZWN0aXZlJz5pbmNsdWRlPC9saW5rPiBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZXF1aXJlLWluY2x1c2lvbic+cmVxdWlyZTwvbGluaz4gZGlyZWN0aXZlcworICAgICAgICAgICAgICAgIGlzIHRoYXQgeW91IGNhbiBpbmhlcml0IGNsYXNzIGZpbGVzIGNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSB2YXJpYWJsZSBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gc3RhdGVtZW50LgogICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGluaGVyaXQgJHtWQVJOQU1FfQpAQCAtOTg1LDYgKzk5NywxNyBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgaW5jbHVkZSBkaXJlY3RpdmUgaXMgYSBtb3JlIGdlbmVyaWMgbWV0aG9kIG9mIGluY2x1ZGluZworICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXMgY29tcGFyZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naW5oZXJpdC1kaXJlY3RpdmUnPmluaGVyaXQ8L2xpbms+IGRpcmVjdGl2ZSwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyByZXN0cmljdGVkIHRvIGNsYXNzIChpLmUuIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSBpbmNsdWRlIGRpcmVjdGl2ZSBpcyBhcHBsaWNhYmxlIGZvciBhbnkgb3RoZXIga2luZCBvZgorICAgICAgICAgICAgICAgIHNoYXJlZCBvciBlbmNhcHN1bGF0ZWQgZnVuY3Rpb25hbGl0eSBvciBjb25maWd1cmF0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICBkb2VzIG5vdCBzdWl0IGEgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgbmVlZGVkIGEgcmVjaXBlIHRvIGluY2x1ZGUgc29tZQogICAgICAgICAgICAgICAgIHNlbGYtdGVzdCBkZWZpbml0aW9uczoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMDE4LDYgKzEwNDEsMTggQEAKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmUgZGlyZWN0aXZlLCBsaWtlIHRoZSBpbmNsdWRlIGRpcmVjdGl2ZSBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgZGVzY3JpYmVkLCBpcyBhIG1vcmUgZ2VuZXJpYyBtZXRob2Qgb2YgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhcyBjb21wYXJlZCB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmhlcml0LWRpcmVjdGl2ZSc+aW5oZXJpdDwvbGluaz4gZGlyZWN0aXZlLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIHJlc3RyaWN0ZWQgdG8gY2xhc3MgKGkuZS4gPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmUgZGlyZWN0aXZlIGlzIGFwcGxpY2FibGUgZm9yIGFueSBvdGhlciBraW5kIG9mCisgICAgICAgICAgICAgICAgc2hhcmVkIG9yIGVuY2Fwc3VsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGNvbmZpZ3VyYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIGRvZXMgbm90IHN1aXQgYSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBTaW1pbGFyIHRvIGhvdyBCaXRCYWtlIGhhbmRsZXMKICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmNsdWRlLWRpcmVjdGl2ZSc+PGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICAgICAgaWYgdGhlIHBhdGggc3BlY2lmaWVkCkBAIC0xMDQ5LDggKzEwODQsOSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIGEgY29uZmlndXJhdGlvbiBmaWxlICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiksCi0gICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gZGlyZWN0aXZlIHRvCi0gICAgICAgICAgICAgICAgaW5oZXJpdCBhIGNsYXNzLgorICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHRvIGluaGVyaXQgYSBjbGFzcy4KICAgICAgICAgICAgICAgICBCaXRCYWtlIG9ubHkgc3VwcG9ydHMgdGhpcyBkaXJlY3RpdmUgd2hlbiB1c2VkIHdpdGhpbgogICAgICAgICAgICAgICAgIGEgY29uZmlndXJhdGlvbiBmaWxlLgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTA4Myw3ICsxMTE5LDcgQEAKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5wa2djb25maWc8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGNsYXNzZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKyAgICAgSU5IRVJJVCArPSAiYXV0b3Rvb2xzIHBrZ2NvbmZpZyIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTIwMjksNyArMjA2NSw3IEBACiAgICAgICAgICAgICBiZWZvcmUgYW55IHRhc2tzIGFyZSBleGVjdXRlZCBzbyB3b3VsZCBiZSBpbiB0aGUgZ2xvYmFsCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRhdGFzdG9yZSBuYW1lc3BhY2UuCiAgICAgICAgICAgICBObyByZWNpcGUtc3BlY2lmaWMgbWV0YWRhdGEgZXhpc3RzIGluIHRoYXQgbmFtZXNwYWNlLgotICAgICAgICAgICAgVGhlICJCdWlsZFN0YXJ0ZWQiIGFuZCAiYnVpbGRDb21wbGV0ZWQiIGV2ZW50cyBhbHNvIHJ1biBpbgorICAgICAgICAgICAgVGhlICJCdWlsZFN0YXJ0ZWQiIGFuZCAiQnVpbGRDb21wbGV0ZWQiIGV2ZW50cyBhbHNvIHJ1biBpbgogICAgICAgICAgICAgdGhlIG1haW4gY29va2VyL3NlcnZlciBwcm9jZXNzIHJhdGhlciB0aGFuIGFueSB3b3JrZXIgY29udGV4dC4KICAgICAgICAgICAgIFRodXMsIGFueSBjaGFuZ2VzIG1hZGUgdG8gdGhlIGRhdGFzdG9yZSB3b3VsZCBiZSBzZWVuIGJ5IG90aGVyCiAgICAgICAgICAgICBjb29rZXIvc2VydmVyIGV2ZW50cyB3aXRoaW4gdGhlIGN1cnJlbnQgYnVpbGQgYnV0IG5vdCBzZWVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbAppbmRleCAwZTg5YmYyLi5kODllMTIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTExNDMsOCArMTE0Myw2IEBACiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNldHMgdGhlIGJhc2UgbG9jYXRpb24gd2hlcmUgbGF5ZXJzIGFyZSBzdG9yZWQuCi0gICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgbG9jYXRpb24gaXMgc2V0IHRvCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0NPUkVCQVNFfTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBsYXllcmluZGV4LWZldGNoPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgICAgIHRlbGxzIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHdoZXJlIHRvIHBsYWNlCkBAIC0xNTk2LDkgKzE1OTQsMTkgQEAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTkhFUklUJz48Z2xvc3N0ZXJtPklOSEVSSVQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ2F1c2VzIHRoZSBuYW1lZCBjbGFzcyB0byBiZSBpbmhlcml0ZWQgYXQKLSAgICAgICAgICAgICAgICAgICAgdGhpcyBwb2ludCBkdXJpbmcgcGFyc2luZy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIG9ubHkgdmFsaWQgaW4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgQ2F1c2VzIHRoZSBuYW1lZCBjbGFzcyBvciBjbGFzc2VzIHRvIGJlIGluaGVyaXRlZCBnbG9iYWxseS4KKyAgICAgICAgICAgICAgICAgICAgQW5vbnltb3VzIGZ1bmN0aW9ucyBpbiB0aGUgY2xhc3Mgb3IgY2xhc3NlcworICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGV4ZWN1dGVkIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYmFzZSBjb25maWd1cmF0aW9uIGFuZCBpbiBlYWNoIGluZGl2aWR1YWwgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpZ25vcmVzIGNoYW5nZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPiBpbiBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4sIHNlZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9ImluaGVyaXQtY29uZmlndXJhdGlvbi1kaXJlY3RpdmUiPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBEaXJlY3RpdmU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE4OTMsNyArMTkwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlczoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfVkVSU0lPTl9weXRob24gPSAiMi43LjMiCi0gICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID0gIjMuMTAlIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA9ICI0LjEyJSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL0NPVy5weQppbmRleCAzNmViYmQ5Li5iZWM2MjA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKQEAgLTMsNyArMyw3IEBACiAjCiAjIFRoaXMgaXMgYSBjb3B5IG9uIHdyaXRlIGRpY3Rpb25hcnkgYW5kIHNldCB3aGljaCBhYnVzZXMgY2xhc3NlcyB0byB0cnkgYW5kIGJlIG5pY2UgYW5kIGZhc3QuCiAjCi0jIENvcHlyaWdodCAoQykgMjAwNiBUaW0gQW1zZWxsCisjIENvcHlyaWdodCAoQykgMjAwNiBUaW0gQW5zZWxsCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKaW5kZXggYmZlMGNhNS4uNTI2ODgzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQpAQCAtMjEsNyArMjEsNyBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1fX3ZlcnNpb25fXyA9ICIxLjM0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM2LjAiCiAKIGltcG9ydCBzeXMKIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKaW5kZXggZTdlZWI0Zi4uODZjZTBlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQpAQCAtODYsOSArODYsOSBAQAogY2xhc3MgQ29yZVJlY2lwZUluZm8oUmVjaXBlSW5mb0NvbW1vbik6CiAgICAgX19zbG90c19fID0gKCkKIAotICAgIGNhY2hlZmlsZSA9ICJiYl9jYWNoZS5kYXQiICAgCisgICAgY2FjaGVmaWxlID0gImJiX2NhY2hlLmRhdCIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbWV0YWRhdGEpOiAgICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbWV0YWRhdGEpOgogICAgICAgICBzZWxmLmZpbGVfZGVwZW5kcyA9IG1ldGFkYXRhLmdldFZhcignX19kZXBlbmRzJywgRmFsc2UpCiAgICAgICAgIHNlbGYudGltZXN0YW1wID0gYmIucGFyc2UuY2FjaGVkX210aW1lKGZpbGVuYW1lKQogICAgICAgICBzZWxmLnZhcmlhbnRzID0gc2VsZi5saXN0dmFyKCdfX1ZBUklBTlRTJywgbWV0YWRhdGEpICsgWycnXQpAQCAtMTA3LDcgKzEwNyw3IEBACiAKICAgICAgICAgc2VsZi5wbiA9IHNlbGYuZ2V0dmFyKCdQTicsIG1ldGFkYXRhKQogICAgICAgICBzZWxmLnBhY2thZ2VzID0gc2VsZi5saXN0dmFyKCdQQUNLQUdFUycsIG1ldGFkYXRhKQotICAgICAgICBpZiBub3Qgc2VsZi5wbiBpbiBzZWxmLnBhY2thZ2VzOgorICAgICAgICBpZiBub3Qgc2VsZi5wYWNrYWdlczoKICAgICAgICAgICAgIHNlbGYucGFja2FnZXMuYXBwZW5kKHNlbGYucG4pCiAKICAgICAgICAgc2VsZi5iYXNldGFza2hhc2hlcyA9IHNlbGYudGFza3ZhcignQkJfQkFTRUhBU0gnLCBzZWxmLnRhc2tzLCBtZXRhZGF0YSkKQEAgLTEyMiw3ICsxMjIsNyBAQAogICAgICAgICBzZWxmLmRlZmF1bHRwcmVmID0gc2VsZi5pbnR2YXIoJ0RFRkFVTFRfUFJFRkVSRU5DRScsIG1ldGFkYXRhKQogICAgICAgICBzZWxmLm5vdF93b3JsZCA9IHNlbGYuZ2V0dmFyKCdFWENMVURFX0ZST01fV09STEQnLCBtZXRhZGF0YSkKICAgICAgICAgc2VsZi5zdGFtcCA9IHNlbGYuZ2V0dmFyKCdTVEFNUCcsIG1ldGFkYXRhKQotICAgICAgICBzZWxmLnN0YW1wY2xlYW4gPSBzZWxmLmdldHZhcignU1RBTVBDTEVBTicsIG1ldGFkYXRhKSAgICAgICAgCisgICAgICAgIHNlbGYuc3RhbXBjbGVhbiA9IHNlbGYuZ2V0dmFyKCdTVEFNUENMRUFOJywgbWV0YWRhdGEpCiAgICAgICAgIHNlbGYuc3RhbXBfZXh0cmFpbmZvID0gc2VsZi5mbGFnbGlzdCgnc3RhbXAtZXh0cmEtaW5mbycsIHNlbGYudGFza3MsIG1ldGFkYXRhKQogICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1zID0gc2VsZi5mbGFnbGlzdCgnZmlsZS1jaGVja3N1bXMnLCBzZWxmLnRhc2tzLCBtZXRhZGF0YSwgVHJ1ZSkKICAgICAgICAgc2VsZi5wYWNrYWdlc19keW5hbWljID0gc2VsZi5saXN0dmFyKCdQQUNLQUdFU19EWU5BTUlDJywgbWV0YWRhdGEpCkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgIGNhY2hlZGF0YS5wYWNrYWdlc19keW5hbWljW3BhY2thZ2VdLmFwcGVuZChmbikKIAogICAgICAgICAjIEJ1aWxkIGhhc2ggb2YgcnVudGltZSBkZXBlbmRzIGFuZCByZWNvbW1lbmRzCi0gICAgICAgIGZvciBwYWNrYWdlIGluIHNlbGYucGFja2FnZXMgKyBbc2VsZi5wbl06CisgICAgICAgIGZvciBwYWNrYWdlIGluIHNlbGYucGFja2FnZXM6CiAgICAgICAgICAgICBjYWNoZWRhdGEucnVuZGVwc1tmbl1bcGFja2FnZV0gPSBsaXN0KHNlbGYucmRlcGVuZHMpICsgc2VsZi5yZGVwZW5kc19wa2dbcGFja2FnZV0KICAgICAgICAgICAgIGNhY2hlZGF0YS5ydW5yZWNzW2ZuXVtwYWNrYWdlXSA9IGxpc3Qoc2VsZi5ycmVjb21tZW5kcykgKyBzZWxmLnJyZWNvbW1lbmRzX3BrZ1twYWNrYWdlXQogCkBAIC0zNzUsOCArMzc1LDggQEAKICAgICAgICAgZGF0YSA9IGRhdGFidWlsZGVyLmRhdGEKIAogICAgICAgICAjIFBhc3MgY2FjaGVzX2FycmF5IGluZm9ybWF0aW9uIGludG8gQ2FjaGUgQ29uc3RydWN0b3IKLSAgICAgICAgIyBJdCB3aWxsIGJlIHVzZWQgbGF0ZXIgZm9yIGRlY2lkaW5nIHdoZXRoZXIgd2UgCi0gICAgICAgICMgbmVlZCBleHRyYSBjYWNoZSBmaWxlIGR1bXAvbG9hZCBzdXBwb3J0IAorICAgICAgICAjIEl0IHdpbGwgYmUgdXNlZCBsYXRlciBmb3IgZGVjaWRpbmcgd2hldGhlciB3ZQorICAgICAgICAjIG5lZWQgZXh0cmEgY2FjaGUgZmlsZSBkdW1wL2xvYWQgc3VwcG9ydAogICAgICAgICBzZWxmLmNhY2hlc19hcnJheSA9IGNhY2hlc19hcnJheQogICAgICAgICBzZWxmLmNhY2hlZGlyID0gZGF0YS5nZXRWYXIoIkNBQ0hFIikKICAgICAgICAgc2VsZi5jbGVhbiA9IHNldCgpCkBAIC00MjEsNyArNDIxLDcgQEAKICAgICAgICAgICAgICAgICBjYWNoZXNpemUgKz0gb3MuZnN0YXQoY2FjaGVmaWxlLmZpbGVubygpKS5zdF9zaXplCiAKICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5DYWNoZUxvYWRTdGFydGVkKGNhY2hlc2l6ZSksIHNlbGYuZGF0YSkKLSAgICAgICAgCisKICAgICAgICAgZm9yIGNhY2hlX2NsYXNzIGluIHNlbGYuY2FjaGVzX2FycmF5OgogICAgICAgICAgICAgY2FjaGVmaWxlID0gZ2V0Q2FjaGVGaWxlKHNlbGYuY2FjaGVkaXIsIGNhY2hlX2NsYXNzLmNhY2hlZmlsZSwgc2VsZi5kYXRhX2hhc2gpCiAgICAgICAgICAgICB3aXRoIG9wZW4oY2FjaGVmaWxlLCAicmIiKSBhcyBjYWNoZWZpbGU6CkBAIC00MzgsOCArNDM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0NhY2hlIHZlcnNpb24gbWlzbWF0Y2gsIHJlYnVpbGRpbmcuLi4nKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBlbGlmIGJpdGJha2VfdmVyICE9IGJiLl9fdmVyc2lvbl9fOgotICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0JpdGJha2UgdmVyc2lvbiBtaXNtYXRjaCwgcmVidWlsZGluZy4uLicpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0JpdGJha2UgdmVyc2lvbiBtaXNtYXRjaCwgcmVidWlsZGluZy4uLicpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICAgICAgIyBMb2FkIHRoZSByZXN0IG9mIHRoZSBjYWNoZSBmaWxlCiAgICAgICAgICAgICAgICAgY3VycmVudF9wcm9ncmVzcyA9IDAKQEAgLTYxNiwxMyArNjE2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGEgPSBmbC5maW5kKCI6VHJ1ZSIpCiAgICAgICAgICAgICAgICAgICAgIGIgPSBmbC5maW5kKCI6RmFsc2UiKQogICAgICAgICAgICAgICAgICAgICBpZiAoKGEgPCAwKSBhbmQgYikgb3IgKChiID4gMCkgYW5kIChiIDwgYSkpOgotICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmIrNl0KLSAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFtiKzc6XQorICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsWzpiKzZdCisgICAgICAgICAgICAgICAgICAgICAgICBmbCA9IGZsW2IrNzpdCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgKChiIDwgMCkgYW5kIGEpIG9yICgoYSA+IDApIGFuZCAoYSA8IGIpKToKLSAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsWzphKzVdCi0gICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYSs2Ol0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6YSs1XQorICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFthKzY6XQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbC5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgIGlmICIqIiBpbiBmOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTg4Niw0ICs4ODYsMyBAQAogICAgICAgICAgICAgcC5kdW1wKFtkYXRhLCBzZWxmLl9fY2xhc3NfXy5DQUNIRV9WRVJTSU9OXSkKIAogICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGdsZikKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQppbmRleCBhOTE5ZjU4Li42Yzk2NmUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQpAQCAtNTAsNiArNTAsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKICAgICAgICAgc2VsZi5lcnJvciA9IG1lc3NhZ2UKICAgICAgICAgQ29tbWFuZEV4aXQuX19pbml0X18oc2VsZiwgMSkKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJDb21tYW5kIGV4ZWN1dGlvbiBmYWlsZWQ6ICVzIiAlIHNlbGYuZXJyb3IKIAogY2xhc3MgQ29tbWFuZEVycm9yKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzYsNyArNzgsOCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKSBvciBGYWxzZSA9PSBnZXRhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsICJOb3QgYWJsZSB0byBleGVjdXRlIG5vdCByZWFkb25seSBjb21tYW5kcyBpbiByZWFkb25seSBtb2RlIgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGdldGF0dHIoY29tbWFuZF9tZXRob2QsICduZWVkY29uZmlnJywgRmFsc2UpOgorICAgICAgICAgICAgICAgIHNlbGYuY29va2VyLnByb2Nlc3NfaW5vdGlmeV91cGRhdGVzKCkKKyAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGNvbW1hbmRfbWV0aG9kLCAnbmVlZGNvbmZpZycsIFRydWUpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvb2tlci51cGRhdGVDYWNoZVN5bmMoKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbW1hbmRfbWV0aG9kKHNlbGYsIGNvbW1hbmRsaW5lKQogICAgICAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBleGM6CkBAIC05Niw2ICs5OSw3IEBACiAKICAgICBkZWYgcnVuQXN5bmNDb21tYW5kKHNlbGYpOgogICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCiAgICAgICAgICAgICBpZiBzZWxmLmNvb2tlci5zdGF0ZSBpbiAoYmIuY29va2VyLnN0YXRlLmVycm9yLCBiYi5jb29rZXIuc3RhdGUuc2h1dGRvd24sIGJiLmNvb2tlci5zdGF0ZS5mb3JjZXNodXRkb3duKToKICAgICAgICAgICAgICAgICAjIHVwZGF0ZUNhY2hlIHdpbGwgdHJpZ2dlciBhIHNodXRkb3duIG9mIHRoZSBwYXJzZXIKICAgICAgICAgICAgICAgICAjIGFuZCB0aGVuIHJhaXNlIEJCSGFuZGxlZEV4Y2VwdGlvbiB0cmlnZ2VyaW5nIGFuIGV4aXQKQEAgLTE0MSw2ICsxNDUsOSBAQAogICAgICAgICBzZWxmLmN1cnJlbnRBc3luY0NvbW1hbmQgPSBOb25lCiAgICAgICAgIHNlbGYuY29va2VyLmZpbmlzaGNvbW1hbmQoKQogCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLnJlbW90ZWRhdGFzdG9yZXMgPSBiYi5yZW1vdGVkYXRhLlJlbW90ZURhdGFzdG9yZXMoc2VsZi5jb29rZXIpCisKIGRlZiBzcGxpdF9tY19wbihwbik6CiAgICAgaWYgcG4uc3RhcnRzd2l0aCgibXVsdGljb25maWc6Iik6CiAgICAgICAgIF8sIG1jLCBwbiA9IHBuLnNwbGl0KCI6IiwgMikKQEAgLTIzMyw1OSArMjQwLDE1IEBACiAgICAgICAgIGNvbW1hbmQuY29va2VyLmNvbmZpZ3VyYXRpb24ucG9zdGZpbGUgPSBwb3N0ZmlsZXMKICAgICBzZXRQcmVQb3N0Q29uZkZpbGVzLm5lZWRjb25maWcgPSBGYWxzZQogCi0gICAgZGVmIGdldENwdUNvdW50KHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgICIiIgotICAgICAgICBHZXQgdGhlIENQVSBjb3VudCBvbiB0aGUgYml0YmFrZSBzZXJ2ZXIKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBiYi51dGlscy5jcHVfY291bnQoKQotICAgIGdldENwdUNvdW50LnJlYWRvbmx5ID0gVHJ1ZQotICAgIGdldENwdUNvdW50Lm5lZWRjb25maWcgPSBGYWxzZQotCiAgICAgZGVmIG1hdGNoRmlsZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBmTWF0Y2ggPSBwYXJhbXNbMF0KICAgICAgICAgcmV0dXJuIGNvbW1hbmQuY29va2VyLm1hdGNoRmlsZShmTWF0Y2gpCiAgICAgbWF0Y2hGaWxlLm5lZWRjb25maWcgPSBGYWxzZQogCi0gICAgZGVmIGdlbmVyYXRlTmV3SW1hZ2Uoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgaW1hZ2UgPSBwYXJhbXNbMF0KLSAgICAgICAgYmFzZV9pbWFnZSA9IHBhcmFtc1sxXQotICAgICAgICBwYWNrYWdlX3F1ZXVlID0gcGFyYW1zWzJdCi0gICAgICAgIHRpbWVzdGFtcCA9IHBhcmFtc1szXQotICAgICAgICBkZXNjcmlwdGlvbiA9IHBhcmFtc1s0XQotICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIuZ2VuZXJhdGVOZXdJbWFnZShpbWFnZSwgYmFzZV9pbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfcXVldWUsIHRpbWVzdGFtcCwgZGVzY3JpcHRpb24pCi0KLSAgICBkZWYgZW5zdXJlRGlyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGRpcmVjdG9yeSA9IHBhcmFtc1swXQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGlyZWN0b3J5KQotICAgIGVuc3VyZURpci5uZWVkY29uZmlnID0gRmFsc2UKLQotICAgIGRlZiBzZXRWYXJGaWxlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgICIiIgotICAgICAgICBTYXZlIGEgdmFyaWFibGUgaW4gYSBmaWxlOyB1c2VkIGZvciBzYXZpbmcgaW4gYSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICAgICAgIiIiCi0gICAgICAgIHZhciA9IHBhcmFtc1swXQotICAgICAgICB2YWwgPSBwYXJhbXNbMV0KLSAgICAgICAgZGVmYXVsdF9maWxlID0gcGFyYW1zWzJdCi0gICAgICAgIG9wID0gcGFyYW1zWzNdCi0gICAgICAgIGNvbW1hbmQuY29va2VyLm1vZGlmeUNvbmZpZ3VyYXRpb25WYXIodmFyLCB2YWwsIGRlZmF1bHRfZmlsZSwgb3ApCi0gICAgc2V0VmFyRmlsZS5uZWVkY29uZmlnID0gRmFsc2UKLQotICAgIGRlZiByZW1vdmVWYXJGaWxlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgICIiIgotICAgICAgICBSZW1vdmUgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBmcm9tIGEgZmlsZQotICAgICAgICAiIiIKLSAgICAgICAgdmFyID0gcGFyYW1zWzBdCi0gICAgICAgIGNvbW1hbmQuY29va2VyLnJlbW92ZUNvbmZpZ3VyYXRpb25WYXIodmFyKQotICAgIHJlbW92ZVZhckZpbGUubmVlZGNvbmZpZyA9IEZhbHNlCi0KLSAgICBkZWYgY3JlYXRlQ29uZmlnRmlsZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlIGFuIGV4dHJhIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAiIiIKLSAgICAgICAgbmFtZSA9IHBhcmFtc1swXQotICAgICAgICBjb21tYW5kLmNvb2tlci5jcmVhdGVDb25maWdGaWxlKG5hbWUpCi0gICAgY3JlYXRlQ29uZmlnRmlsZS5uZWVkY29uZmlnID0gRmFsc2UKKyAgICBkZWYgZ2V0VUlIYW5kbGVyTnVtKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIHJldHVybiBiYi5ldmVudC5nZXRfdWloYW5kbGVyKCkKKyAgICBnZXRVSUhhbmRsZXJOdW0ubmVlZGNvbmZpZyA9IEZhbHNlCisgICAgZ2V0VUlIYW5kbGVyTnVtLnJlYWRvbmx5ID0gVHJ1ZQogCiAgICAgZGVmIHNldEV2ZW50TWFzayhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBoYW5kbGVyTnVtID0gcGFyYW1zWzBdCkBAIC0zMjMsNiArMjg2LDcgQEAKICAgICBwYXJzZUNvbmZpZ3VyYXRpb24ubmVlZGNvbmZpZyA9IEZhbHNlCiAKICAgICBkZWYgZ2V0TGF5ZXJQcmlvcml0aWVzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIGNvbW1hbmQuY29va2VyLnBhcnNlQ29uZmlndXJhdGlvbigpCiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgICMgcmVnZXggb2JqZWN0cyBjYW5ub3QgYmUgbWFyc2hhbGxlZCBieSB4bWxycGMKICAgICAgICAgZm9yIGNvbGxlY3Rpb24sIHBhdHRlcm4sIHJlZ2V4LCBwcmkgaW4gY29tbWFuZC5jb29rZXIuYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzOgpAQCAtMzU0LDYgKzMxOCwzOCBAQAogICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5wa2dfcGVwdnByCiAgICAgZ2V0UmVjaXBlVmVyc2lvbnMucmVhZG9ubHkgPSBUcnVlCiAKKyAgICBkZWYgZ2V0UmVjaXBlUHJvdmlkZXMoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLmZuX3Byb3ZpZGVzCisgICAgZ2V0UmVjaXBlUHJvdmlkZXMucmVhZG9ubHkgPSBUcnVlCisKKyAgICBkZWYgZ2V0UmVjaXBlUGFja2FnZXMoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBhY2thZ2VzCisgICAgZ2V0UmVjaXBlUGFja2FnZXMucmVhZG9ubHkgPSBUcnVlCisKKyAgICBkZWYgZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1jID0gcGFyYW1zWzBdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgbWMgPSAnJworICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5wYWNrYWdlc19keW5hbWljCisgICAgZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljLnJlYWRvbmx5ID0gVHJ1ZQorCisgICAgZGVmIGdldFJQcm92aWRlcnMoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnJwcm92aWRlcnMKKyAgICBnZXRSUHJvdmlkZXJzLnJlYWRvbmx5ID0gVHJ1ZQorCiAgICAgZGVmIGdldFJ1bnRpbWVEZXBlbmRzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgIHRyeToKQEAgLTU5MiwxMSArNTg4LDE0IEBACiAgICAgICAgIGJmaWxlID0gcGFyYW1zWzBdCiAgICAgICAgIHRhc2sgPSBwYXJhbXNbMV0KICAgICAgICAgaWYgbGVuKHBhcmFtcykgPiAyOgotICAgICAgICAgICAgaGlkZXdhcm5pbmcgPSBwYXJhbXNbMl0KKyAgICAgICAgICAgIGludGVybmFsID0gcGFyYW1zWzJdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoaWRld2FybmluZyA9IEZhbHNlCisgICAgICAgICAgICBpbnRlcm5hbCA9IEZhbHNlCiAKLSAgICAgICAgY29tbWFuZC5jb29rZXIuYnVpbGRGaWxlKGJmaWxlLCB0YXNrLCBoaWRld2FybmluZykKKyAgICAgICAgaWYgaW50ZXJuYWw6CisgICAgICAgICAgICBjb21tYW5kLmNvb2tlci5idWlsZEZpbGVJbnRlcm5hbChiZmlsZSwgdGFzaywgZmlyZWV2ZW50cz1GYWxzZSwgcXVpZXRsb2c9VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQuY29va2VyLmJ1aWxkRmlsZShiZmlsZSwgdGFzaykKICAgICBidWlsZEZpbGUubmVlZGNhY2hlID0gRmFsc2UKIAogICAgIGRlZiBidWlsZFRhcmdldHMoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKQEAgLTY0NiwxNyArNjQ1LDYgQEAKICAgICAgICAgY29tbWFuZC5maW5pc2hBc3luY0NvbW1hbmQoKQogICAgIGdlbmVyYXRlVGFyZ2V0c1RyZWUubmVlZGNhY2hlID0gVHJ1ZQogCi0gICAgZGVmIGZpbmRDb3JlQmFzZUZpbGVzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgICIiIgotICAgICAgICBGaW5kIGNlcnRhaW4gZmlsZXMgaW4gQ09SRUJBU0UgZGlyZWN0b3J5LiBpLmUuIExheWVycwotICAgICAgICAiIiIKLSAgICAgICAgc3ViZGlyID0gcGFyYW1zWzBdCi0gICAgICAgIGZpbGVuYW1lID0gcGFyYW1zWzFdCi0KLSAgICAgICAgY29tbWFuZC5jb29rZXIuZmluZENvcmVCYXNlRmlsZXMoc3ViZGlyLCBmaWxlbmFtZSkKLSAgICAgICAgY29tbWFuZC5maW5pc2hBc3luY0NvbW1hbmQoKQotICAgIGZpbmRDb3JlQmFzZUZpbGVzLm5lZWRjYWNoZSA9IEZhbHNlCi0KICAgICBkZWYgZmluZENvbmZpZ0ZpbGVzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgICIiIgogICAgICAgICBGaW5kIGNvbmZpZyBmaWxlcyB3aGljaCBwcm92aWRlIGFwcHJvcHJpYXRlIHZhbHVlcwpAQCAtNzY0LDMgKzc1MiwxNCBAQAogICAgICAgICBjb21tYW5kLmZpbmlzaEFzeW5jQ29tbWFuZCgpCiAgICAgY2xpZW50Q29tcGxldGUubmVlZGNhY2hlID0gRmFsc2UKIAorICAgIGRlZiBmaW5kU2lnSW5mbyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICAiIiIKKyAgICAgICAgRmluZCBzaWduYXR1cmUgaW5mbyBmaWxlcyB2aWEgdGhlIHNpZ25hdHVyZSBnZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHBuID0gcGFyYW1zWzBdCisgICAgICAgIHRhc2tuYW1lID0gcGFyYW1zWzFdCisgICAgICAgIHNpZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAgcmVzID0gYmIuc2lnZ2VuLmZpbmRfc2lnaW5mbyhwbiwgdGFza25hbWUsIHNpZ3MsIGNvbW1hbmQuY29va2VyLmRhdGEpCisgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuRmluZFNpZ0luZm9SZXN1bHQocmVzKSwgY29tbWFuZC5jb29rZXIuZGF0YSkKKyAgICAgICAgY29tbWFuZC5maW5pc2hBc3luY0NvbW1hbmQoKQorICAgIGZpbmRTaWdJbmZvLm5lZWRjYWNoZSA9IEZhbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQppbmRleCAzYzllODhjLi5jN2ZkZDcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTE4MSwxNSArMTgxLDE1IEBACiAgICAgICAgIHNlbGYuY29uZmlnbm90aWZpZXIgPSBweWlub3RpZnkuTm90aWZpZXIoc2VsZi5jb25maWd3YXRjaGVyLCBzZWxmLmNvbmZpZ19ub3RpZmljYXRpb25zKQogICAgICAgICBzZWxmLndhdGNobWFzayA9IHB5aW5vdGlmeS5JTl9DTE9TRV9XUklURSB8IHB5aW5vdGlmeS5JTl9DUkVBVEUgfCBweWlub3RpZnkuSU5fREVMRVRFIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIHB5aW5vdGlmeS5JTl9ERUxFVEVfU0VMRiB8IHB5aW5vdGlmeS5JTl9NT0RJRlkgfCBweWlub3RpZnkuSU5fTU9WRV9TRUxGIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHB5aW5vdGlmeS5JTl9NT1ZFRF9GUk9NIHwgcHlpbm90aWZ5LklOX01PVkVEX1RPIAorICAgICAgICAgICAgICAgICAgICAgICAgIHB5aW5vdGlmeS5JTl9NT1ZFRF9GUk9NIHwgcHlpbm90aWZ5LklOX01PVkVEX1RPCiAgICAgICAgIHNlbGYud2F0Y2hlciA9IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXIoKQogICAgICAgICBzZWxmLndhdGNoZXIuYmJzZWVuID0gW10KICAgICAgICAgc2VsZi53YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gW10KICAgICAgICAgc2VsZi5ub3RpZmllciA9IHB5aW5vdGlmeS5Ob3RpZmllcihzZWxmLndhdGNoZXIsIHNlbGYubm90aWZpY2F0aW9ucykKIAotICAgICAgICAjIElmIGJlaW5nIGNhbGxlZCBieSBzb21ldGhpbmcgbGlrZSB0aW5mb2lsLCB3ZSBuZWVkIHRvIGNsZWFuIGNhY2hlZCBkYXRhIAorICAgICAgICAjIElmIGJlaW5nIGNhbGxlZCBieSBzb21ldGhpbmcgbGlrZSB0aW5mb2lsLCB3ZSBuZWVkIHRvIGNsZWFuIGNhY2hlZCBkYXRhCiAgICAgICAgICMgd2hpY2ggbWF5IG5vdyBiZSBpbnZhbGlkCi0gICAgICAgIGJiLnBhcnNlLl9fbXRpbWVfY2FjaGUgPSB7fQorICAgICAgICBiYi5wYXJzZS5jbGVhcl9jYWNoZSgpCiAgICAgICAgIGJiLnBhcnNlLkJCSGFuZGxlci5jYWNoZWRfc3RhdGVtZW50cyA9IHt9CiAKICAgICAgICAgc2VsZi51aV9jbWRsaW5lID0gTm9uZQpAQCAtMjA1LDMxICsyMDUsMTEgQEAKIAogICAgICAgICBzZWxmLmlub3RpZnlfbW9kaWZpZWRfZmlsZXMgPSBbXQogCi0gICAgICAgIGRlZiBfcHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMoc2VydmVyLCBub3RpZmllcl9saXN0LCBhYm9ydCk6Ci0gICAgICAgICAgICBmb3IgbiBpbiBub3RpZmllcl9saXN0OgotICAgICAgICAgICAgICAgIGlmIG4uY2hlY2tfZXZlbnRzKHRpbWVvdXQ9MCk6Ci0gICAgICAgICAgICAgICAgICAgICMgcmVhZCBub3RpZmllZCBldmVudHMgYW5kIGVucWV1ZSB0aGVtCi0gICAgICAgICAgICAgICAgICAgIG4ucmVhZF9ldmVudHMoKQotICAgICAgICAgICAgICAgICAgICBuLnByb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgZGVmIF9wcm9jZXNzX2lub3RpZnlfdXBkYXRlcyhzZXJ2ZXIsIGNvb2tlciwgYWJvcnQpOgorICAgICAgICAgICAgY29va2VyLnByb2Nlc3NfaW5vdGlmeV91cGRhdGVzKCkKICAgICAgICAgICAgIHJldHVybiAxLjAKIAotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24uc2VydmVyX3JlZ2lzdGVyX2lkbGVjYWxsYmFjayhfcHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMsIFtzZWxmLmNvbmZpZ25vdGlmaWVyLCBzZWxmLm5vdGlmaWVyXSkKLQotICAgICAgICBzZWxmLmJhc2Vjb25maWdfdmFsaWQgPSBUcnVlCi0gICAgICAgIHNlbGYucGFyc2VjYWNoZV92YWxpZCA9IEZhbHNlCi0KLSAgICAgICAgIyBUYWtlIGEgbG9jayBzbyBvbmx5IG9uZSBjb3B5IG9mIGJpdGJha2UgY2FuIHJ1biBhZ2FpbnN0IGEgZ2l2ZW4gYnVpbGQKLSAgICAgICAgIyBkaXJlY3RvcnkgYXQgYSB0aW1lCi0gICAgICAgIGlmIG5vdCBzZWxmLmxvY2tCaXRiYWtlKCk6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiT25seSBvbmUgY29weSBvZiBiaXRiYWtlIHNob3VsZCBiZSBydW4gYWdhaW5zdCBhIGJ1aWxkIGRpcmVjdG9yeSIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYubG9jay5zZWVrKDApCi0gICAgICAgICAgICBzZWxmLmxvY2sudHJ1bmNhdGUoKQotICAgICAgICAgICAgaWYgbGVuKGNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlKSA+PSAyOgotICAgICAgICAgICAgICAgIHNlbGYubG9jay53cml0ZSgiJXM6JXNcbiIgJSAoY29uZmlndXJhdGlvbi5pbnRlcmZhY2VbMF0sIGNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlWzFdKSk7Ci0gICAgICAgICAgICBzZWxmLmxvY2suZmx1c2goKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbi5zZXJ2ZXJfcmVnaXN0ZXJfaWRsZWNhbGxiYWNrKF9wcm9jZXNzX2lub3RpZnlfdXBkYXRlcywgc2VsZikKIAogICAgICAgICAjIFRPU1RPUCBtdXN0IG5vdCBiZSBzZXQgb3Igb3VyIGNoaWxkcmVuIHdpbGwgaGFuZyB3aGVuIHRoZXkgb3V0cHV0CiAgICAgICAgIHRyeToKQEAgLTI1MywxMCArMjMzLDE5IEBACiAgICAgICAgICMgTGV0IFNJR0hVUCBleGl0IGFzIFNJR1RFUk0KICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBzZWxmLnNpZ3Rlcm1fZXhjZXB0aW9uKQogCisgICAgZGVmIHByb2Nlc3NfaW5vdGlmeV91cGRhdGVzKHNlbGYpOgorICAgICAgICBmb3IgbiBpbiBbc2VsZi5jb25maWdub3RpZmllciwgc2VsZi5ub3RpZmllcl06CisgICAgICAgICAgICBpZiBuLmNoZWNrX2V2ZW50cyh0aW1lb3V0PTApOgorICAgICAgICAgICAgICAgICMgcmVhZCBub3RpZmllZCBldmVudHMgYW5kIGVucWV1ZSB0aGVtCisgICAgICAgICAgICAgICAgbi5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICAgICAgbi5wcm9jZXNzX2V2ZW50cygpCisKICAgICBkZWYgY29uZmlnX25vdGlmaWNhdGlvbnMoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBldmVudC5tYXNrbmFtZSA9PSAiSU5fUV9PVkVSRkxPVyI6CiAgICAgICAgICAgICBiYi53YXJuKCJpbm90aWZ5IGV2ZW50IHF1ZXVlIG92ZXJmbG93ZWQsIGludmFsaWRhdGluZyBjYWNoZXMuIikKKyAgICAgICAgICAgIHNlbGYucGFyc2VjYWNoZV92YWxpZCA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLmJhc2Vjb25maWdfdmFsaWQgPSBGYWxzZQorICAgICAgICAgICAgYmIucGFyc2UuY2xlYXJfY2FjaGUoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBldmVudC5wYXRobmFtZSBpbiBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJ3YXRjaGVkZmlsZXM6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTI2OCw2ICsyNTcsMTAgQEAKICAgICAgICAgaWYgZXZlbnQubWFza25hbWUgPT0gIklOX1FfT1ZFUkZMT1ciOgogICAgICAgICAgICAgYmIud2FybigiaW5vdGlmeSBldmVudCBxdWV1ZSBvdmVyZmxvd2VkLCBpbnZhbGlkYXRpbmcgY2FjaGVzLiIpCiAgICAgICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQorICAgICAgICAgICAgYmIucGFyc2UuY2xlYXJfY2FjaGUoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGV2ZW50LnBhdGhuYW1lLmVuZHN3aXRoKCJiaXRiYWtlLWNvb2tlcmRhZW1vbi5sb2ciKSBcCisgICAgICAgICAgICAgICAgb3IgZXZlbnQucGF0aG5hbWUuZW5kc3dpdGgoImJpdGJha2UubG9jayIpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBldmVudC5wYXRobmFtZSBpbiBzZWxmLmlub3RpZnlfbW9kaWZpZWRfZmlsZXM6CiAgICAgICAgICAgICBzZWxmLmlub3RpZnlfbW9kaWZpZWRfZmlsZXMuYXBwZW5kKGV2ZW50LnBhdGhuYW1lKQpAQCAtMjg4LDcgKzI4MSw3IEBACiAgICAgICAgICAgICB3YXRjaHRhcmdldCA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgIyBXZSB0cnkgYW5kIGFkZCB3YXRjaGVzIGZvciBmaWxlcyB0aGF0IGRvbid0IGV4aXN0IGJ1dCBpZiB0aGV5IGRpZCwgd291bGQgaW5mbHVlbmNlCi0gICAgICAgICAgICAgICAgIyB0aGUgcGFyc2VyLiBUaGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGVzZSBmaWxlcyBtYXkgbm90IGV4aXN0LCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgCisgICAgICAgICAgICAgICAgIyB0aGUgcGFyc2VyLiBUaGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGVzZSBmaWxlcyBtYXkgbm90IGV4aXN0LCBpbiB3aGljaCBjYXNlIHdlIG5lZWQKICAgICAgICAgICAgICAgICAjIHRvIHdhdGNoIGFueSBwYXJlbnQgdGhhdCBkb2VzIGV4aXN0IGZvciBjaGFuZ2VzLgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5hZGRfd2F0Y2goZiwgc2VsZi53YXRjaG1hc2ssIHF1aWV0PUZhbHNlKQpAQCAtMzgyLDYgKzM3NSwxNSBAQAogICAgICAgICBzZWxmLmRhdGEucmVuYW1lVmFyKCJfX2RlcGVuZHMiLCAiX19iYXNlX2RlcGVuZHMiKQogICAgICAgICBzZWxmLmFkZF9maWxld2F0Y2goc2VsZi5kYXRhLmdldFZhcigiX19iYXNlX2RlcGVuZHMiLCBGYWxzZSksIHNlbGYuY29uZmlnd2F0Y2hlcikKIAorICAgICAgICBzZWxmLmJhc2Vjb25maWdfdmFsaWQgPSBUcnVlCisgICAgICAgIHNlbGYucGFyc2VjYWNoZV92YWxpZCA9IEZhbHNlCisKKyAgICBkZWYgaGFuZGxlUFJTZXJ2KHNlbGYpOgorICAgICAgICAjIFNldHVwIGEgUFIgU2VydmVyIGJhc2VkIG9uIHRoZSBuZXcgY29uZmlndXJhdGlvbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnByaG9zdCA9IHByc2Vydi5zZXJ2LmF1dG9fc3RhcnQoc2VsZi5kYXRhKQorICAgICAgICBleGNlcHQgcHJzZXJ2LnNlcnYuUFJTZXJ2aWNlQ29uZmlnRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gc3RhcnQgUFIgU2VydmVyLCBleGl0dGluZyIpCiAKICAgICBkZWYgZW5hYmxlRGF0YVRyYWNraW5nKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24udHJhY2tpbmcgPSBUcnVlCkBAIC0zOTMsMTM4ICszOTUsNiBAQAogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJkYXRhIik6CiAgICAgICAgICAgICBzZWxmLmRhdGEuZGlzYWJsZVRyYWNraW5nKCkKIAotICAgIGRlZiBtb2RpZnlDb25maWd1cmF0aW9uVmFyKHNlbGYsIHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUsIG9wKToKLSAgICAgICAgaWYgb3AgPT0gImFwcGVuZCI6Ci0gICAgICAgICAgICBzZWxmLmFwcGVuZENvbmZpZ3VyYXRpb25WYXIodmFyLCB2YWwsIGRlZmF1bHRfZmlsZSkKLSAgICAgICAgZWxpZiBvcCA9PSAic2V0IjoKLSAgICAgICAgICAgIHNlbGYuc2F2ZUNvbmZpZ3VyYXRpb25WYXIodmFyLCB2YWwsIGRlZmF1bHRfZmlsZSwgIj0iKQotICAgICAgICBlbGlmIG9wID09ICJlYXJseUFzc2lnbiI6Ci0gICAgICAgICAgICBzZWxmLnNhdmVDb25maWd1cmF0aW9uVmFyKHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUsICI/PSIpCi0KLQotICAgIGRlZiBhcHBlbmRDb25maWd1cmF0aW9uVmFyKHNlbGYsIHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUpOgotICAgICAgICAjYWRkIGFwcGVuZCB2YXIgb3BlcmF0aW9uIHRvIHRoZSBlbmQgb2YgZGVmYXVsdF9maWxlCi0gICAgICAgIGRlZmF1bHRfZmlsZSA9IGJiLmNvb2tlcmRhdGEuZmluZENvbmZpZ0ZpbGUoZGVmYXVsdF9maWxlLCBzZWxmLmRhdGEpCi0KLSAgICAgICAgdG90YWwgPSAiI2FkZGVkIGJ5IGhvYiIKLSAgICAgICAgdG90YWwgKz0gIlxuJXMgKz0gXCIlc1wiXG4iICUgKHZhciwgdmFsKQotCi0gICAgICAgIHdpdGggb3BlbihkZWZhdWx0X2ZpbGUsICdhJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUodG90YWwpCi0KLSAgICAgICAgI2FkZCB0byBoaXN0b3J5Ci0gICAgICAgIGxvZ2luZm8gPSB7Im9wIjoiYXBwZW5kIiwgImZpbGUiOmRlZmF1bHRfZmlsZSwgImxpbmUiOnRvdGFsLmNvdW50KCJcbiIpfQotICAgICAgICBzZWxmLmRhdGEuYXBwZW5kVmFyKHZhciwgdmFsLCAqKmxvZ2luZm8pCi0KLSAgICBkZWYgc2F2ZUNvbmZpZ3VyYXRpb25WYXIoc2VsZiwgdmFyLCB2YWwsIGRlZmF1bHRfZmlsZSwgb3ApOgotCi0gICAgICAgIHJlcGxhY2VkID0gRmFsc2UKLSAgICAgICAgI2RvIG5vdCBzYXZlIGlmIG5vdGhpbmcgY2hhbmdlZAotICAgICAgICBpZiBzdHIodmFsKSA9PSBzZWxmLmRhdGEuZ2V0VmFyKHZhciwgRmFsc2UpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgY29uZl9maWxlcyA9IHNlbGYuZGF0YS52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9maWxlcyh2YXIpCi0KLSAgICAgICAgI2Zvcm1hdCB0aGUgdmFsdWUgd2hlbiBpdCBpcyBhIGxpc3QKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWwsIGxpc3QpOgotICAgICAgICAgICAgbGlzdHZhbCA9ICIiCi0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsOgotICAgICAgICAgICAgICAgIGxpc3R2YWwgKz0gIiVzICAgIiAlIHZhbHVlCi0gICAgICAgICAgICB2YWwgPSBsaXN0dmFsCi0KLSAgICAgICAgdG9wZGlyID0gc2VsZi5kYXRhLmdldFZhcigiVE9QRElSIiwgRmFsc2UpCi0KLSAgICAgICAgI2NvbW1lbnQgb3IgcmVwbGFjZSBvcGVyYXRpb25zIG1hZGUgb24gdmFyCi0gICAgICAgIGZvciBjb25mX2ZpbGUgaW4gY29uZl9maWxlczoKLSAgICAgICAgICAgIGlmIHRvcGRpciBpbiBjb25mX2ZpbGU6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGNvbmZfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZGxpbmVzKCkKLQotICAgICAgICAgICAgICAgIGxpbmVzID0gc2VsZi5kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2xpbmVzKHZhciwgY29uZl9maWxlKQotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgICAgICAgICB0b3RhbCA9ICIiCi0gICAgICAgICAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gYwotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpPT1pbnQobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gbGVuKHRvdGFsKQotICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHRvdGFsLnJmaW5kKHZhciwgMCwgZW5kX2luZGV4KQotCi0gICAgICAgICAgICAgICAgICAgIGJlZ2luX2xpbmUgPSB0b3RhbC5jb3VudCgiXG4iLDAsaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIGVuZF9saW5lID0gaW50KGxpbmUpCi0KLSAgICAgICAgICAgICAgICAgICAgI2NoZWNrIGlmIHRoZSB2YXJpYWJsZSB3YXMgc2F2ZWQgYmVmb3JlIGluIHRoZSBzYW1lIHdheQotICAgICAgICAgICAgICAgICAgICAjaWYgdHJ1ZSBpdCByZXBsYWNlIHRoZSBwbGFjZSB3aGVyZSB0aGUgdmFyaWFibGUgd2FzIGRlY2xhcmVkCi0gICAgICAgICAgICAgICAgICAgICNlbHNlIGl0IGNvbW1lbnRzIGl0Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRzW2JlZ2luX2xpbmUtMV09PSAiI2FkZGVkIGJ5IGhvYlxuIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW2JlZ2luX2xpbmVdID0gIiVzICVzIFwiJXNcIlxuIiAlICh2YXIsIG9wLCB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpaSBpbiByYW5nZShiZWdpbl9saW5lLCBlbmRfbGluZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbaWldID0gIiMiICsgY29udGVudHNbaWldCi0KLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oY29uZl9maWxlLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhjb250ZW50cykKLQotICAgICAgICBpZiByZXBsYWNlZCA9PSBGYWxzZToKLSAgICAgICAgICAgICNyZW1vdmUgdmFyIGZyb20gaGlzdG9yeQotICAgICAgICAgICAgc2VsZi5kYXRhLnZhcmhpc3RvcnkuZGVsX3Zhcl9oaXN0b3J5KHZhcikKLQotICAgICAgICAgICAgI2FkZCB2YXIgdG8gdGhlIGVuZCBvZiBkZWZhdWx0X2ZpbGUKLSAgICAgICAgICAgIGRlZmF1bHRfZmlsZSA9IGJiLmNvb2tlcmRhdGEuZmluZENvbmZpZ0ZpbGUoZGVmYXVsdF9maWxlLCBzZWxmLmRhdGEpCi0KLSAgICAgICAgICAgICNhZGQgdGhlIHZhcmlhYmxlIG9uIGEgc2luZ2xlIGxpbmUsIHRvIGJlIGVhc3kgdG8gcmVwbGFjZSB0aGUgc2Vjb25kIHRpbWUKLSAgICAgICAgICAgIHRvdGFsID0gIlxuI2FkZGVkIGJ5IGhvYiIKLSAgICAgICAgICAgIHRvdGFsICs9ICJcbiVzICVzIFwiJXNcIlxuIiAlICh2YXIsIG9wLCB2YWwpCi0KLSAgICAgICAgICAgIHdpdGggb3BlbihkZWZhdWx0X2ZpbGUsICdhJykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHRvdGFsKQotCi0gICAgICAgICAgICAjYWRkIHRvIGhpc3RvcnkKLSAgICAgICAgICAgIGxvZ2luZm8gPSB7Im9wIjoic2V0IiwgImZpbGUiOmRlZmF1bHRfZmlsZSwgImxpbmUiOnRvdGFsLmNvdW50KCJcbiIpfQotICAgICAgICAgICAgc2VsZi5kYXRhLnNldFZhcih2YXIsIHZhbCwgKipsb2dpbmZvKQotCi0gICAgZGVmIHJlbW92ZUNvbmZpZ3VyYXRpb25WYXIoc2VsZiwgdmFyKToKLSAgICAgICAgY29uZl9maWxlcyA9IHNlbGYuZGF0YS52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9maWxlcyh2YXIpCi0gICAgICAgIHRvcGRpciA9IHNlbGYuZGF0YS5nZXRWYXIoIlRPUERJUiIsIEZhbHNlKQotCi0gICAgICAgIGZvciBjb25mX2ZpbGUgaW4gY29uZl9maWxlczoKLSAgICAgICAgICAgIGlmIHRvcGRpciBpbiBjb25mX2ZpbGU6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGNvbmZfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZGxpbmVzKCkKLQotICAgICAgICAgICAgICAgIGxpbmVzID0gc2VsZi5kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2xpbmVzKHZhciwgY29uZl9maWxlKQotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgICAgICAgICB0b3RhbCA9ICIiCi0gICAgICAgICAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gYwotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpPT1pbnQobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gbGVuKHRvdGFsKQotICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHRvdGFsLnJmaW5kKHZhciwgMCwgZW5kX2luZGV4KQotCi0gICAgICAgICAgICAgICAgICAgIGJlZ2luX2xpbmUgPSB0b3RhbC5jb3VudCgiXG4iLDAsaW5kZXgpCi0KLSAgICAgICAgICAgICAgICAgICAgI2NoZWNrIGlmIHRoZSB2YXJpYWJsZSB3YXMgc2F2ZWQgYmVmb3JlIGluIHRoZSBzYW1lIHdheQotICAgICAgICAgICAgICAgICAgICBpZiBjb250ZW50c1tiZWdpbl9saW5lLTFdPT0gIiNhZGRlZCBieSBob2JcbiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tiZWdpbl9saW5lLTFdID0gY29udGVudHNbYmVnaW5fbGluZV0gPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tiZWdpbl9saW5lXSA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB2YXIgZnJvbSBoaXN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YS52YXJoaXN0b3J5LmRlbF92YXJfaGlzdG9yeSh2YXIsIGNvbmZfZmlsZSwgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGEuZGVsVmFyKHZhcikKLQotICAgICAgICAgICAgICAgIHdpdGggb3Blbihjb25mX2ZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZWxpbmVzKGNvbnRlbnRzKQotCi0gICAgZGVmIGNyZWF0ZUNvbmZpZ0ZpbGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHBhdGggPSBvcy5nZXRjd2QoKQotICAgICAgICBjb25mcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAiY29uZiIsIG5hbWUpCi0gICAgICAgIG9wZW4oY29uZnBhdGgsICd3JykuY2xvc2UoKQotCiAgICAgZGVmIHBhcnNlQ29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgIyBTZXQgbG9nIGZpbGUgdmVyYm9zaXR5CiAgICAgICAgIHZlcmJvc2Vsb2dzID0gYmIudXRpbHMudG9fYm9vbGVhbihzZWxmLmRhdGEuZ2V0VmFyKCJCQl9WRVJCT1NFX0xPR1MiLCBGYWxzZSkpCkBAIC01NDcsMjEgKzQxNywyNyBAQAogCiAgICAgICAgIHNlbGYuaGFuZGxlQ29sbGVjdGlvbnMoc2VsZi5kYXRhLmdldFZhcigiQkJGSUxFX0NPTExFQ1RJT05TIikpCiAKKyAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKwogICAgIGRlZiB1cGRhdGVDb25maWdPcHRzKHNlbGYsIG9wdGlvbnMsIGVudmlyb25tZW50LCBjbWRsaW5lKToKICAgICAgICAgc2VsZi51aV9jbWRsaW5lID0gY21kbGluZQogICAgICAgICBjbGVhbiA9IFRydWUKICAgICAgICAgZm9yIG8gaW4gb3B0aW9uczoKICAgICAgICAgICAgIGlmIG8gaW4gWydwcmVmaWxlJywgJ3Bvc3RmaWxlJ106CisgICAgICAgICAgICAgICAgIyBPbmx5IHRoZXNlIG9wdGlvbnMgbWF5IHJlcXVpcmUgYSByZXBhcnNlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYuY29uZmlndXJhdGlvbiwgbykgPT0gb3B0aW9uc1tvXToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVmFsdWUgaXMgdGhlIHNhbWUsIG5vIG5lZWQgdG8gbWFyayBkaXJ0eQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk1hcmtpbmcgYXMgZGlydHkgZHVlIHRvICclcycgb3B0aW9uIGNoYW5nZSB0byAnJXMnIiAlIChvLCBvcHRpb25zW29dKSkKKyAgICAgICAgICAgICAgICBwcmludCgiTWFya2luZyBhcyBkaXJ0eSBkdWUgdG8gJyVzJyBvcHRpb24gY2hhbmdlIHRvICclcyciICUgKG8sIG9wdGlvbnNbb10pKQogICAgICAgICAgICAgICAgIGNsZWFuID0gRmFsc2UKLSAgICAgICAgICAgICAgICBzZXJ2ZXJfdmFsID0gZ2V0YXR0cihzZWxmLmNvbmZpZ3VyYXRpb24sICIlc19zZXJ2ZXIiICUgbykKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3B0aW9uc1tvXSBhbmQgc2VydmVyX3ZhbDoKLSAgICAgICAgICAgICAgICAgICAgIyByZXN0b3JlIHZhbHVlIHByb3ZpZGVkIG9uIHNlcnZlciBzdGFydAotICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuY29uZmlndXJhdGlvbiwgbywgc2VydmVyX3ZhbCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5jb25maWd1cmF0aW9uLCBvLCBvcHRpb25zW29dKQogICAgICAgICBmb3IgayBpbiBiYi51dGlscy5hcHByb3ZlZF92YXJpYWJsZXMoKToKICAgICAgICAgICAgIGlmIGsgaW4gZW52aXJvbm1lbnQgYW5kIGsgbm90IGluIHNlbGYuY29uZmlndXJhdGlvbi5lbnY6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJVcGRhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyB0byAlcyIgJSAoaywgZW52aXJvbm1lbnRba10pKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXBkYXRpbmcgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlICVzIHRvICVzIiAlIChrLCBlbnZpcm9ubWVudFtrXSkpCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLmVudltrXSA9IGVudmlyb25tZW50W2tdCiAgICAgICAgICAgICAgICAgY2xlYW4gPSBGYWxzZQogICAgICAgICAgICAgaWYgayBpbiBzZWxmLmNvbmZpZ3VyYXRpb24uZW52IGFuZCBrIG5vdCBpbiBlbnZpcm9ubWVudDoKQEAgLTU2OSwxNCArNDQ1LDEzIEBACiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuY29uZmlndXJhdGlvbi5lbnZba10KICAgICAgICAgICAgICAgICBjbGVhbiA9IEZhbHNlCiAgICAgICAgICAgICBpZiBrIG5vdCBpbiBzZWxmLmNvbmZpZ3VyYXRpb24uZW52IGFuZCBrIG5vdCBpbiBlbnZpcm9ubWVudDoKLSAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgZW52aXJvbm1lbnRba10gIT0gc2VsZi5jb25maWd1cmF0aW9uLmVudltrXToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlVwZGF0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzIHRvICVzIiAlIChrLCBlbnZpcm9ubWVudFtrXSkpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJVcGRhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBmcm9tICVzIHRvICVzIiAlIChrLCBzZWxmLmNvbmZpZ3VyYXRpb24uZW52W2tdLCBlbnZpcm9ubWVudFtrXSkpCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLmVudltrXSA9IGVudmlyb25tZW50W2tdCiAgICAgICAgICAgICAgICAgY2xlYW4gPSBGYWxzZQogICAgICAgICBpZiBub3QgY2xlYW46CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkJhc2UgZW52aXJvbm1lbnQgY2hhbmdlLCB0cmlnZ2VyaW5nIHJlcGFyc2UiKQotICAgICAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gRmFsc2UgICAgICAgIAogICAgICAgICAgICAgc2VsZi5yZXNldCgpCiAKICAgICBkZWYgcnVuQ29tbWFuZHMoc2VsZiwgc2VydmVyLCBkYXRhLCBhYm9ydCk6CkBAIC02MTYsNiArNDkxLDEyIEBACiAgICAgICAgIGlmIG5vdCBwa2dzX3RvX2J1aWxkOgogICAgICAgICAgICAgcGtnc190b19idWlsZCA9IFtdCiAKKyAgICAgICAgb3JpZ190cmFja2luZyA9IHNlbGYuY29uZmlndXJhdGlvbi50cmFja2luZworICAgICAgICBpZiBub3Qgb3JpZ190cmFja2luZzoKKyAgICAgICAgICAgIHNlbGYuZW5hYmxlRGF0YVRyYWNraW5nKCkKKyAgICAgICAgICAgIHNlbGYucmVzZXQoKQorCisKICAgICAgICAgaWYgYnVpbGRmaWxlOgogICAgICAgICAgICAgIyBQYXJzZSB0aGUgY29uZmlndXJhdGlvbiBoZXJlLiBXZSBuZWVkIHRvIGRvIGl0IGV4cGxpY2l0bHkgaGVyZSBzaW5jZQogICAgICAgICAgICAgIyB0aGlzIHNob3dFbnZpcm9ubWVudCgpIGNvZGUgcGF0aCBkb2Vzbid0IHVzZSB0aGUgY2FjaGUKQEAgLTY2MCw2ICs1NDEsOSBAQAogICAgICAgICAgICAgaWYgZW52ZGF0YS5nZXRWYXJGbGFnKGUsICdmdW5jJywgRmFsc2UpIGFuZCBlbnZkYXRhLmdldFZhckZsYWcoZSwgJ3B5dGhvbicsIEZhbHNlKToKICAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4oIlxucHl0aG9uICVzICgpIHtcbiVzfVxuIiwgZSwgZW52ZGF0YS5nZXRWYXIoZSwgRmFsc2UpKQogCisgICAgICAgIGlmIG5vdCBvcmlnX3RyYWNraW5nOgorICAgICAgICAgICAgc2VsZi5kaXNhYmxlRGF0YVRyYWNraW5nKCkKKyAgICAgICAgICAgIHNlbGYucmVzZXQoKQogCiAgICAgZGVmIGJ1aWxkVGFza0RhdGEoc2VsZiwgcGtnc190b19idWlsZCwgdGFzaywgYWJvcnQsIGFsbG93aW5jb21wbGV0ZT1GYWxzZSk6CiAgICAgICAgICIiIgpAQCAtODE3LDEyICs3MDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgZGVwZW5kX3RyZWVbInBuIl1bcG5dW2VpXSA9IHZhcnMoc2VsZi5yZWNpcGVjYWNoZXNbbWNdKVtlaV1bdGFza2ZuXQogCiAKKyAgICAgICAgICAgIGRvdG5hbWUgPSAiJXMuJXMiICUgKHBuLCBiYi5ydW5xdWV1ZS50YXNrbmFtZV9mcm9tX3RpZCh0aWQpKQorICAgICAgICAgICAgaWYgbm90IGRvdG5hbWUgaW4gZGVwZW5kX3RyZWVbInRkZXBlbmRzIl06CisgICAgICAgICAgICAgICAgZGVwZW5kX3RyZWVbInRkZXBlbmRzIl1bZG90bmFtZV0gPSBbXQogICAgICAgICAgICAgZm9yIGRlcCBpbiBycS5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzOgogICAgICAgICAgICAgICAgIChkZXBtYywgZGVwZm4sIGRlcHRhc2tuYW1lLCBkZXB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4oZGVwKQogICAgICAgICAgICAgICAgIGRlcHBuID0gc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19mbltkZXB0YXNrZm5dCi0gICAgICAgICAgICAgICAgZG90bmFtZSA9ICIlcy4lcyIgJSAocG4sIGJiLnJ1bnF1ZXVlLnRhc2tuYW1lX2Zyb21fdGlkKHRpZCkpCi0gICAgICAgICAgICAgICAgaWYgbm90IGRvdG5hbWUgaW4gZGVwZW5kX3RyZWVbInRkZXBlbmRzIl06Ci0gICAgICAgICAgICAgICAgICAgIGRlcGVuZF90cmVlWyJ0ZGVwZW5kcyJdW2RvdG5hbWVdID0gW10KICAgICAgICAgICAgICAgICBkZXBlbmRfdHJlZVsidGRlcGVuZHMiXVtkb3RuYW1lXS5hcHBlbmQoIiVzLiVzIiAlIChkZXBwbiwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQoZGVwKSkpCiAgICAgICAgICAgICBpZiB0YXNrZm4gbm90IGluIHNlZW5fZm5zOgogICAgICAgICAgICAgICAgIHNlZW5fZm5zLmFwcGVuZCh0YXNrZm4pCkBAIC05MTMsMTMgKzc5NywxMyBAQAogICAgICAgICAgICAgICAgIHNlZW5fZm5zLmFwcGVuZCh0YXNrZm4pCiAKICAgICAgICAgICAgICAgICBkZXBlbmRfdHJlZVsiZGVwZW5kcyJdW3BuXSA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdGFza2RhdGFbbWNdLmRlcGlkc1t0YXNrZm5dOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gdGFza2RhdGFbbWNdLmRlcGlkc1t0YXNrZm5dOgogICAgICAgICAgICAgICAgICAgICBwbl9wcm92aWRlciA9ICIiCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlcCBpbiB0YXNrZGF0YVttY10uYnVpbGRfdGFyZ2V0cyBhbmQgdGFza2RhdGFbbWNdLmJ1aWxkX3RhcmdldHNbZGVwXToKICAgICAgICAgICAgICAgICAgICAgICAgIGZuX3Byb3ZpZGVyID0gdGFza2RhdGFbbWNdLmJ1aWxkX3RhcmdldHNbZGVwXVswXQogICAgICAgICAgICAgICAgICAgICAgICAgcG5fcHJvdmlkZXIgPSBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX2ZuW2ZuX3Byb3ZpZGVyXQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcG5fcHJvdmlkZXIgPSBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBwbl9wcm92aWRlciA9IGRlcAogICAgICAgICAgICAgICAgICAgICBwbl9wcm92aWRlciA9IHNlbGYuYWRkX21jX3ByZWZpeChtYywgcG5fcHJvdmlkZXIpCiAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF90cmVlWyJkZXBlbmRzIl1bcG5dLmFwcGVuZChwbl9wcm92aWRlcikKIApAQCAtMTA0NiwxOCArOTMwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJsb2cuZXJyb3IoImNvbmZsaWN0aW5nIHByZWZlcmVuY2VzIGZvciAlczogYm90aCAlcyBhbmQgJXMgc3BlY2lmaWVkIiwgcHJvdmlkZWUsIHByb3ZpZGVyLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJlZmVycmVkW3Byb3ZpZGVlXSkKICAgICAgICAgICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJlZmVycmVkW3Byb3ZpZGVlXSA9IHByb3ZpZGVyCiAKLSAgICBkZWYgZmluZENvcmVCYXNlRmlsZXMoc2VsZiwgc3ViZGlyLCBjb25maWdmaWxlKToKLSAgICAgICAgY29yZWJhc2UgPSBzZWxmLmRhdGEuZ2V0VmFyKCdDT1JFQkFTRScpIG9yICIiCi0gICAgICAgIHBhdGhzID0gW10KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoY29yZWJhc2UgKyAnLycgKyBzdWJkaXIpOgotICAgICAgICAgICAgZm9yIGQgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBjb25maWdmaWxlcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBkLCBjb25maWdmaWxlKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ2ZpbGVwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCBkKSkKLQotICAgICAgICBpZiBwYXRoczoKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQ29yZUJhc2VGaWxlc0ZvdW5kKHBhdGhzKSwgc2VsZi5kYXRhKQotCiAgICAgZGVmIGZpbmRDb25maWdGaWxlUGF0aChzZWxmLCBjb25maWdmaWxlKToKICAgICAgICAgIiIiCiAgICAgICAgIEZpbmQgdGhlIGxvY2F0aW9uIG9uIGRpc2sgb2YgY29uZmlnZmlsZSBhbmQgaWYgaXQgZXhpc3RzIGFuZCB3YXMgcGFyc2VkIGJ5IEJpdEJha2UKQEAgLTEzMTQsMTIgKzExODYsMjYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFNldHVwIGFueSB2YXJpYWJsZXMgbmVlZGVkIGJlZm9yZSBzdGFydGluZyBhIGJ1aWxkCiAgICAgICAgICIiIgotICAgICAgICB0ID0gdGltZS5nbXRpbWUoKSAKLSAgICAgICAgaWYgbm90IHNlbGYuZGF0YS5nZXRWYXIoIkJVSUxETkFNRSIsIEZhbHNlKToKLSAgICAgICAgICAgIHNlbGYuZGF0YS5zZXRWYXIoIkJVSUxETkFNRSIsICIke0RBVEV9JHtUSU1FfSIpCi0gICAgICAgIHNlbGYuZGF0YS5zZXRWYXIoIkJVSUxEU1RBUlQiLCB0aW1lLnN0cmZ0aW1lKCclbS8lZC8lWSAlSDolTTolUycsIHQpKQotICAgICAgICBzZWxmLmRhdGEuc2V0VmFyKCJEQVRFIiwgdGltZS5zdHJmdGltZSgnJVklbSVkJywgdCkpCi0gICAgICAgIHNlbGYuZGF0YS5zZXRWYXIoIlRJTUUiLCB0aW1lLnN0cmZ0aW1lKCclSCVNJVMnLCB0KSkKKyAgICAgICAgdCA9IHRpbWUuZ210aW1lKCkKKyAgICAgICAgZm9yIG1jIGluIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhOgorICAgICAgICAgICAgZHMgPSBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10KKyAgICAgICAgICAgIGlmIG5vdCBkcy5nZXRWYXIoIkJVSUxETkFNRSIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBkcy5zZXRWYXIoIkJVSUxETkFNRSIsICIke0RBVEV9JHtUSU1FfSIpCisgICAgICAgICAgICBkcy5zZXRWYXIoIkJVSUxEU1RBUlQiLCB0aW1lLnN0cmZ0aW1lKCclbS8lZC8lWSAlSDolTTolUycsIHQpKQorICAgICAgICAgICAgZHMuc2V0VmFyKCJEQVRFIiwgdGltZS5zdHJmdGltZSgnJVklbSVkJywgdCkpCisgICAgICAgICAgICBkcy5zZXRWYXIoIlRJTUUiLCB0aW1lLnN0cmZ0aW1lKCclSCVNJVMnLCB0KSkKKworICAgIGRlZiByZXNldF9tdGltZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXNldCBtdGltZSBjYWNoZXMgLSB0aGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2hlbiBtZW1vcnkgcmVzaWRlbnQgYXMgc29tZXRoaW5nCisgICAgICAgIHdoaWNoIGlzIGNhY2hlZCBpcyBub3QgdW5saWtlbHkgdG8gaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IGludm9jYXRpb24gKGUuZy4gYQorICAgICAgICBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhIHJlY2lwZSBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhlIHVzZXIpLgorICAgICAgICAiIiIKKyAgICAgICAgYnVpbGQucmVzZXRfY2FjaGUoKQorICAgICAgICBiYi5mZXRjaC5fY2hlY2tzdW1fY2FjaGUubXRpbWVfY2FjaGUuY2xlYXIoKQorICAgICAgICBzaWdnZW5fY2FjaGUgPSBnZXRhdHRyKGJiLnBhcnNlLnNpZ2dlbiwgJ2NoZWNrc3VtX2NhY2hlJywgTm9uZSkKKyAgICAgICAgaWYgc2lnZ2VuX2NhY2hlOgorICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLmNoZWNrc3VtX2NhY2hlLm10aW1lX2NhY2hlLmNsZWFyKCkKIAogICAgIGRlZiBtYXRjaEZpbGVzKHNlbGYsIGJmKToKICAgICAgICAgIiIiCkBAIC0xMzYwLDE2ICsxMjQ2LDIyIEBACiAgICAgICAgICAgICByYWlzZSBOb1NwZWNpZmljTWF0Y2gKICAgICAgICAgcmV0dXJuIG1hdGNoZXNbMF0KIAotICAgIGRlZiBidWlsZEZpbGUoc2VsZiwgYnVpbGRmaWxlLCB0YXNrLCBoaWRld2FybmluZz1GYWxzZSk6CisgICAgZGVmIGJ1aWxkRmlsZShzZWxmLCBidWlsZGZpbGUsIHRhc2spOgogICAgICAgICAiIiIKICAgICAgICAgQnVpbGQgdGhlIGZpbGUgbWF0Y2hpbmcgcmVnZXhwIGJ1aWxkZmlsZQogICAgICAgICAiIiIKICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZEluaXQoKSwgc2VsZi5kYXRhKQogCi0gICAgICAgIGlmIG5vdCBoaWRld2FybmluZzoKLSAgICAgICAgICAgICMgVG9vIG1hbnkgcGVvcGxlIHVzZSAtYiBiZWNhdXNlIHRoZXkgdGhpbmsgaXQncyBob3cgeW91IG5vcm1hbGx5Ci0gICAgICAgICAgICAjIHNwZWNpZnkgYSB0YXJnZXQgdG8gYmUgYnVpbHQsIHNvIHNob3cgYSB3YXJuaW5nCi0gICAgICAgICAgICBiYi53YXJuKCJCdWlsZGZpbGUgc3BlY2lmaWVkLCBkZXBlbmRlbmNpZXMgd2lsbCBub3QgYmUgaGFuZGxlZC4gSWYgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudCwgZG8gbm90IHVzZSAtYiAvIC0tYnVpbGRmaWxlLiIpCisgICAgICAgICMgVG9vIG1hbnkgcGVvcGxlIHVzZSAtYiBiZWNhdXNlIHRoZXkgdGhpbmsgaXQncyBob3cgeW91IG5vcm1hbGx5CisgICAgICAgICMgc3BlY2lmeSBhIHRhcmdldCB0byBiZSBidWlsdCwgc28gc2hvdyBhIHdhcm5pbmcKKyAgICAgICAgYmIud2FybigiQnVpbGRmaWxlIHNwZWNpZmllZCwgZGVwZW5kZW5jaWVzIHdpbGwgbm90IGJlIGhhbmRsZWQuIElmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIGRvIG5vdCB1c2UgLWIgLyAtLWJ1aWxkZmlsZS4iKQorCisgICAgICAgIHNlbGYuYnVpbGRGaWxlSW50ZXJuYWwoYnVpbGRmaWxlLCB0YXNrKQorCisgICAgZGVmIGJ1aWxkRmlsZUludGVybmFsKHNlbGYsIGJ1aWxkZmlsZSwgdGFzaywgZmlyZWV2ZW50cz1UcnVlLCBxdWlldGxvZz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBCdWlsZCB0aGUgZmlsZSBtYXRjaGluZyByZWdleHAgYnVpbGRmaWxlCisgICAgICAgICIiIgogCiAgICAgICAgICMgUGFyc2UgdGhlIGNvbmZpZ3VyYXRpb24gaGVyZS4gV2UgbmVlZCB0byBkbyBpdCBleHBsaWNpdGx5IGhlcmUgc2luY2UKICAgICAgICAgIyBidWlsZEZpbGUoKSBkb2Vzbid0IHVzZSB0aGUgY2FjaGUKQEAgLTEzODUsNiArMTI3Nyw3IEBACiAgICAgICAgIGZuID0gc2VsZi5tYXRjaEZpbGUoZm4pCiAKICAgICAgICAgc2VsZi5idWlsZFNldFZhcnMoKQorICAgICAgICBzZWxmLnJlc2V0X210aW1lX2NhY2hlcygpCiAKICAgICAgICAgYmJfY2FjaGUgPSBiYi5jYWNoZS5DYWNoZShzZWxmLmRhdGFidWlsZGVyLCBzZWxmLmRhdGFfaGFzaCwgc2VsZi5jYWNoZXNfYXJyYXkpCiAKQEAgLTE0MTEsOCArMTMwNCw4IEBACiAgICAgICAgICMgUmVtb3ZlIGV4dGVybmFsIGRlcGVuZGVuY2llcwogICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1ttY10udGFza19kZXBzW2ZuXVsnZGVwZW5kcyddID0ge30KICAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLmRlcHNbZm5dID0gW10KLSAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnJ1bmRlcHNbZm5dID0gW10KLSAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnJ1bnJlY3NbZm5dID0gW10KKyAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnJ1bmRlcHNbZm5dID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnJ1bnJlY3NbZm5dID0gZGVmYXVsdGRpY3QobGlzdCkKIAogICAgICAgICAjIEludmFsaWRhdGUgdGFzayBmb3IgdGFyZ2V0IGlmIGZvcmNlIG1vZGUgYWN0aXZlCiAgICAgICAgIGlmIHNlbGYuY29uZmlndXJhdGlvbi5mb3JjZToKQEAgLTE0MjIsMTAgKzEzMTUsMTUgQEAKICAgICAgICAgIyBTZXR1cCB0YXNrZGF0YSBzdHJ1Y3R1cmUKICAgICAgICAgdGFza2RhdGEgPSB7fQogICAgICAgICB0YXNrZGF0YVttY10gPSBiYi50YXNrZGF0YS5UYXNrRGF0YShzZWxmLmNvbmZpZ3VyYXRpb24uYWJvcnQpCi0gICAgICAgIHRhc2tkYXRhW21jXS5hZGRfcHJvdmlkZXIoc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIGl0ZW0pCisgICAgICAgIHRhc2tkYXRhW21jXS5hZGRfcHJvdmlkZXIoc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIGl0ZW0pCiAKLSAgICAgICAgYnVpbGRuYW1lID0gc2VsZi5kYXRhLmdldFZhcigiQlVJTEROQU1FIikKLSAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZFN0YXJ0ZWQoYnVpbGRuYW1lLCBbaXRlbV0pLCBzZWxmLmRhdGEpCisgICAgICAgIGlmIHF1aWV0bG9nOgorICAgICAgICAgICAgcnFsb2dsZXZlbCA9IGJiLnJ1bnF1ZXVlLmxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpCisgICAgICAgICAgICBiYi5ydW5xdWV1ZS5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQorCisgICAgICAgIGJ1aWxkbmFtZSA9IHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXS5nZXRWYXIoIkJVSUxETkFNRSIpCisgICAgICAgIGlmIGZpcmVldmVudHM6CisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkJ1aWxkU3RhcnRlZChidWlsZG5hbWUsIFtpdGVtXSksIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSkKIAogICAgICAgICAjIEV4ZWN1dGUgdGhlIHJ1bnF1ZXVlCiAgICAgICAgIHJ1bmxpc3QgPSBbW21jLCBpdGVtLCB0YXNrLCBmbl1dCkBAIC0xNDUyLDExICsxMzUwLDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dmFsID0gRmFsc2UKICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0IGFzIGV4YzoKICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKHN0cihleGMpKQorICAgICAgICAgICAgICAgIGlmIHF1aWV0bG9nOgorICAgICAgICAgICAgICAgICAgICBiYi5ydW5xdWV1ZS5sb2dnZXIuc2V0TGV2ZWwocnFsb2dsZXZlbCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICAgICAgaWYgbm90IHJldHZhbDoKLSAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKGxlbihycS5ycWRhdGEucnVudGFza2VudHJpZXMpLCBidWlsZG5hbWUsIGl0ZW0sIGZhaWx1cmVzLCBpbnRlcnJ1cHRlZCksIHNlbGYuZGF0YSkKKyAgICAgICAgICAgICAgICBpZiBmaXJlZXZlbnRzOgorICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKGxlbihycS5ycWRhdGEucnVudGFza2VudHJpZXMpLCBidWlsZG5hbWUsIGl0ZW0sIGZhaWx1cmVzLCBpbnRlcnJ1cHRlZCksIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSkKICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKG1zZykKKyAgICAgICAgICAgICAgICAjIFdlIHRyYXNoZWQgc2VsZi5yZWNpcGVjYWNoZXMgYWJvdmUKKyAgICAgICAgICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbi5saW1pdGVkX2RlcHMgPSBGYWxzZQorICAgICAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5yZXNldChzZWxmLmRhdGEpCisgICAgICAgICAgICAgICAgaWYgcXVpZXRsb2c6CisgICAgICAgICAgICAgICAgICAgIGJiLnJ1bnF1ZXVlLmxvZ2dlci5zZXRMZXZlbChycWxvZ2xldmVsKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgaWYgcmV0dmFsIGlzIFRydWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE0OTEsMTQgKzEzOTgsMTcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICAgICAgaWYgbm90IHJldHZhbDoKLSAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKGxlbihycS5ycWRhdGEucnVudGFza2VudHJpZXMpLCBidWlsZG5hbWUsIHRhcmdldHMsIGZhaWx1cmVzLCBpbnRlcnJ1cHRlZCksIHNlbGYuZGF0YSkKLSAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKG1zZykKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZvciBtYyBpbiBzZWxmLm11bHRpY29uZmlnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQobGVuKHJxLnJxZGF0YS5ydW50YXNrZW50cmllcyksIGJ1aWxkbmFtZSwgdGFyZ2V0cywgZmFpbHVyZXMsIGludGVycnVwdGVkKSwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZC5maW5pc2hBc3luY0NvbW1hbmQobXNnKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgaWYgcmV0dmFsIGlzIFRydWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiByZXR2YWwKIAotICAgICAgICBidWlsZC5yZXNldF9jYWNoZSgpCisgICAgICAgIHNlbGYucmVzZXRfbXRpbWVfY2FjaGVzKCkKICAgICAgICAgc2VsZi5idWlsZFNldFZhcnMoKQogCiAgICAgICAgICMgSWYgd2UgYXJlIHRvbGQgdG8gZG8gdGhlIE5vbmUgdGFzayB0aGVuIHF1ZXJ5IHRoZSBkZWZhdWx0IHRhc2sKQEAgLTE1MjMsNyArMTQzMyw4IEBACiAgICAgICAgICAgICAgICAgbnRhcmdldHMuYXBwZW5kKCJtdWx0aWNvbmZpZzolczolczolcyIgJSAodGFyZ2V0WzBdLCB0YXJnZXRbMV0sIHRhcmdldFsyXSkpCiAgICAgICAgICAgICBudGFyZ2V0cy5hcHBlbmQoIiVzOiVzIiAlICh0YXJnZXRbMV0sIHRhcmdldFsyXSkpCiAKLSAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZFN0YXJ0ZWQoYnVpbGRuYW1lLCBudGFyZ2V0cyksIHNlbGYuZGF0YSkKKyAgICAgICAgZm9yIG1jIGluIHNlbGYubXVsdGljb25maWdzOgorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZFN0YXJ0ZWQoYnVpbGRuYW1lLCBudGFyZ2V0cyksIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSkKIAogICAgICAgICBycSA9IGJiLnJ1bnF1ZXVlLlJ1blF1ZXVlKHNlbGYsIHNlbGYuZGF0YSwgc2VsZi5yZWNpcGVjYWNoZXMsIHRhc2tkYXRhLCBydW5saXN0KQogICAgICAgICBpZiAndW5pdmVyc2UnIGluIHRhcmdldHM6CkBAIC0xNTU2LDU1ICsxNDY3LDYgQEAKICAgICAgICAgcmV0dXJuIGR1bXAKIAogCi0gICAgZGVmIGdlbmVyYXRlTmV3SW1hZ2Uoc2VsZiwgaW1hZ2UsIGJhc2VfaW1hZ2UsIHBhY2thZ2VfcXVldWUsIHRpbWVzdGFtcCwgZGVzY3JpcHRpb24pOgotICAgICAgICAnJycKLSAgICAgICAgQ3JlYXRlIGEgbmV3IGltYWdlIHdpdGggYSAicmVxdWlyZSIvImluaGVyaXQiIGJhc2VfaW1hZ2Ugc3RhdGVtZW50Ci0gICAgICAgICcnJwotICAgICAgICBpZiB0aW1lc3RhbXA6Ci0gICAgICAgICAgICBpbWFnZV9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChpbWFnZSlbMF0KLSAgICAgICAgICAgIHRpbWVzdHIgPSB0aW1lLnN0cmZ0aW1lKCItJVklbSVkLSVIJU0lUyIpCi0gICAgICAgICAgICBkZXN0ID0gaW1hZ2VfbmFtZSArIHN0cih0aW1lc3RyKSArICIuYmIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaW1hZ2UuZW5kc3dpdGgoIi5iYiIpOgotICAgICAgICAgICAgICAgIGRlc3QgPSBpbWFnZSArICIuYmIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlc3QgPSBpbWFnZQotCi0gICAgICAgIGJhc2VuYW1lID0gRmFsc2UKLSAgICAgICAgaWYgYmFzZV9pbWFnZToKLSAgICAgICAgICAgIHdpdGggb3BlbihiYXNlX2ltYWdlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgcmVxdWlyZV9saW5lID0gZi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgcCA9IHJlLmNvbXBpbGUoIklNQUdFX0JBU0VOQU1FICo9IikKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgICAgICBpZiBwLnNlYXJjaChsaW5lKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lID0gVHJ1ZQotCi0gICAgICAgIHdpdGggb3BlbihkZXN0LCAidyIpIGFzIGltYWdlZmlsZToKLSAgICAgICAgICAgIGlmIGJhc2VfaW1hZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpbWFnZWZpbGUud3JpdGUoImluaGVyaXQgY29yZS1pbWFnZVxuIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdG9wZGlyID0gc2VsZi5kYXRhLmdldFZhcigiVE9QRElSIiwgRmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgdG9wZGlyIGluIGJhc2VfaW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VfaW1hZ2UgPSByZXF1aXJlX2xpbmUuc3BsaXQoKVsxXQotICAgICAgICAgICAgICAgIGltYWdlZmlsZS53cml0ZSgicmVxdWlyZSAiICsgYmFzZV9pbWFnZSArICJcbiIpCi0gICAgICAgICAgICBpbWFnZV9pbnN0YWxsID0gIklNQUdFX0lOU1RBTEwgPSBcIiIKLSAgICAgICAgICAgIGZvciBwYWNrYWdlIGluIHBhY2thZ2VfcXVldWU6Ci0gICAgICAgICAgICAgICAgaW1hZ2VfaW5zdGFsbCArPSBzdHIocGFja2FnZSkgKyAiICIKLSAgICAgICAgICAgIGltYWdlX2luc3RhbGwgKz0gIlwiXG4iCi0gICAgICAgICAgICBpbWFnZWZpbGUud3JpdGUoaW1hZ2VfaW5zdGFsbCkKLQotICAgICAgICAgICAgZGVzY3JpcHRpb25fdmFyID0gIkRFU0NSSVBUSU9OID0gXCIiICsgZGVzY3JpcHRpb24gKyAiXCJcbiIKLSAgICAgICAgICAgIGltYWdlZmlsZS53cml0ZShkZXNjcmlwdGlvbl92YXIpCi0KLSAgICAgICAgICAgIGlmIGJhc2VuYW1lOgotICAgICAgICAgICAgICAgICMgSWYgdGhpcyBpcyBvdmVyd3JpdHRlbiBpbiBhIGluaGVyaXRlZCBpbWFnZSwgcmVzZXQgaXQgdG8gZGVmYXVsdAotICAgICAgICAgICAgICAgIGltYWdlX2Jhc2VuYW1lID0gIklNQUdFX0JBU0VOQU1FID0gXCIke1BOfVwiXG4iCi0gICAgICAgICAgICAgICAgaW1hZ2VmaWxlLndyaXRlKGltYWdlX2Jhc2VuYW1lKQotCi0gICAgICAgIHNlbGYuc3RhdGUgPSBzdGF0ZS5pbml0aWFsCi0gICAgICAgIGlmIHRpbWVzdGFtcDoKLSAgICAgICAgICAgIHJldHVybiB0aW1lc3RyCi0KICAgICBkZWYgdXBkYXRlQ2FjaGVTeW5jKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnN0YXRlID09IHN0YXRlLnJ1bm5pbmc6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTE2MTksOCArMTQ4MSw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLmJhc2Vjb25maWdfdmFsaWQ6CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJlbG9hZGluZyBiYXNlIGNvbmZpZ3VyYXRpb24gZGF0YSIpCiAgICAgICAgICAgICBzZWxmLmluaXRDb25maWd1cmF0aW9uRGF0YSgpCi0gICAgICAgICAgICBzZWxmLmJhc2Vjb25maWdfdmFsaWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5oYW5kbGVQUlNlcnYoKQogCiAgICAgIyBUaGlzIGlzIGNhbGxlZCBmb3IgYWxsIGFzeW5jIGNvbW1hbmRzIHdoZW4gc2VsZi5zdGF0ZSAhPSBydW5uaW5nCiAgICAgZGVmIHVwZGF0ZUNhY2hlKHNlbGYpOgpAQCAtMTYzNiw2ICsxNDk3LDcgQEAKICAgICAgICAgICAgIHNlbGYudXBkYXRlQ2FjaGVTeW5jKCkKIAogICAgICAgICBpZiBzZWxmLnN0YXRlICE9IHN0YXRlLnBhcnNpbmcgYW5kIG5vdCBzZWxmLnBhcnNlY2FjaGVfdmFsaWQ6CisgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucmVzZXQoc2VsZi5kYXRhKQogICAgICAgICAgICAgc2VsZi5wYXJzZUNvbmZpZ3VyYXRpb24gKCkKICAgICAgICAgICAgIGlmIENvb2tlckZlYXR1cmVzLlNFTkRfU0FOSVRZRVZFTlRTIGluIHNlbGYuZmVhdHVyZXNldDoKICAgICAgICAgICAgICAgICBmb3IgbWMgaW4gc2VsZi5tdWx0aWNvbmZpZ3M6CkBAIC0xNzIzLDQ2ICsxNTg1LDE0IEBACiAgICAgICAgIHJldHVybiBwa2dzX3RvX2J1aWxkCiAKICAgICBkZWYgcHJlX3NlcnZlKHNlbGYpOgotICAgICAgICAjIEVtcHR5IHRoZSBlbnZpcm9ubWVudC4gVGhlIGVudmlyb25tZW50IHdpbGwgYmUgcG9wdWxhdGVkIGFzCi0gICAgICAgICMgbmVjZXNzYXJ5IGZyb20gdGhlIGRhdGEgc3RvcmUuCi0gICAgICAgICNiYi51dGlscy5lbXB0eV9lbnZpcm9ubWVudCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucHJob3N0ID0gcHJzZXJ2LnNlcnYuYXV0b19zdGFydChzZWxmLmRhdGEpCi0gICAgICAgIGV4Y2VwdCBwcnNlcnYuc2Vydi5QUlNlcnZpY2VDb25maWdFcnJvcjoKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoQ29va2VyRXhpdCgpLCBzZWxmLmRhdGEpCi0gICAgICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUuZXJyb3IKKyAgICAgICAgIyBXZSBub3cgYXJlIGluIG91ciBvd24gcHJvY2VzcyBzbyB3ZSBjYW4gY2FsbCB0aGlzIGhlcmUuCisgICAgICAgICMgUFJTZXJ2IGV4aXRzIGlmIGl0cyBwYXJlbnQgcHJvY2VzcyBleGl0cworICAgICAgICBzZWxmLmhhbmRsZVBSU2VydigpCiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHBvc3Rfc2VydmUoc2VsZik6Ci0gICAgICAgIHByc2Vydi5zZXJ2LmF1dG9fc2h1dGRvd24oc2VsZi5kYXRhKQorICAgICAgICBwcnNlcnYuc2Vydi5hdXRvX3NodXRkb3duKCkKICAgICAgICAgYmIuZXZlbnQuZmlyZShDb29rZXJFeGl0KCksIHNlbGYuZGF0YSkKLSAgICAgICAgbG9ja2ZpbGUgPSBzZWxmLmxvY2submFtZQotICAgICAgICBzZWxmLmxvY2suY2xvc2UoKQotICAgICAgICBzZWxmLmxvY2sgPSBOb25lCi0KLSAgICAgICAgd2hpbGUgbm90IHNlbGYubG9jazoKLSAgICAgICAgICAgIHdpdGggYmIudXRpbHMudGltZW91dCgzKToKLSAgICAgICAgICAgICAgICBzZWxmLmxvY2sgPSBiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZSwgc2hhcmVkPUZhbHNlLCByZXRyeT1GYWxzZSwgYmxvY2s9VHJ1ZSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5sb2NrOgotICAgICAgICAgICAgICAgICAgICAjIFNvbWUgc3lzdGVtcyBtYXkgbm90IGhhdmUgbHNvZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgcHJvY3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2NzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJsc29mIiwgJy13JywgbG9ja2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBpZiBwcm9jcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBGYWxsIGJhY2sgdG8gZnVzZXIgaWYgbHNvZiBpcyB1bmF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJmdXNlciIsICctdicsIGxvY2tmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRGVsYXlpbmcgc2h1dGRvd24gZHVlIHRvIGFjdGl2ZSBwcm9jZXNzZXMgd2hpY2ggYXBwZWFyIHRvIGJlIGhvbGRpbmcgYml0YmFrZS5sb2NrIgotICAgICAgICAgICAgICAgICAgICBpZiBwcm9jczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAiOlxuJXMiICUgc3RyKHByb2NzKQotICAgICAgICAgICAgICAgICAgICBwcmludChtc2cpCiAKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCBmb3JjZSA9IEZhbHNlKToKQEAgLTE3ODQsNDYgKzE2MTQsMTIgQEAKIAogICAgIGRlZiBjbGllbnRDb21wbGV0ZShzZWxmKToKICAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIGNsaWVudCBpcyBkb25lIHVzaW5nIHRoZSBzZXJ2ZXIiIiIKLSAgICAgICAgaWYgc2VsZi5jb25maWd1cmF0aW9uLnNlcnZlcl9vbmx5OgotICAgICAgICAgICAgc2VsZi5maW5pc2hjb21tYW5kKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oVHJ1ZSkKKyAgICAgICAgc2VsZi5maW5pc2hjb21tYW5kKCkKKyAgICAgICAgc2VsZi5leHRyYWNvbmZpZ2RhdGEgPSB7fQorICAgICAgICBzZWxmLmNvbW1hbmQucmVzZXQoKQorICAgICAgICBzZWxmLmRhdGFidWlsZGVyLnJlc2V0KCkKKyAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhYnVpbGRlci5kYXRhCiAKLSAgICBkZWYgbG9ja0JpdGJha2Uoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdsb2NrJyk6Ci0gICAgICAgICAgICBzZWxmLmxvY2sgPSBOb25lCi0gICAgICAgICAgICBpZiBzZWxmLmRhdGE6Ci0gICAgICAgICAgICAgICAgbG9ja2ZpbGUgPSBzZWxmLmRhdGEuZXhwYW5kKCIke1RPUERJUn0vYml0YmFrZS5sb2NrIikKLSAgICAgICAgICAgICAgICBpZiBsb2NrZmlsZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NrID0gYmIudXRpbHMubG9ja2ZpbGUobG9ja2ZpbGUsIEZhbHNlLCBGYWxzZSkKLSAgICAgICAgcmV0dXJuIHNlbGYubG9jawotCi0gICAgZGVmIHVubG9ja0JpdGJha2Uoc2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2xvY2snKSBhbmQgc2VsZi5sb2NrOgotICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShzZWxmLmxvY2spCi0KLWRlZiBzZXJ2ZXJfbWFpbihjb29rZXIsIGZ1bmMsICphcmdzKToKLSAgICBjb29rZXIucHJlX3NlcnZlKCkKLQotICAgIGlmIGNvb2tlci5jb25maWd1cmF0aW9uLnByb2ZpbGU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBjUHJvZmlsZSBhcyBwcm9maWxlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGltcG9ydCBwcm9maWxlCi0gICAgICAgIHByb2YgPSBwcm9maWxlLlByb2ZpbGUoKQotCi0gICAgICAgIHJldCA9IHByb2ZpbGUuUHJvZmlsZS5ydW5jYWxsKHByb2YsIGZ1bmMsICphcmdzKQotCi0gICAgICAgIHByb2YuZHVtcF9zdGF0cygicHJvZmlsZS5sb2ciKQotICAgICAgICBiYi51dGlscy5wcm9jZXNzX3Byb2ZpbGVsb2coInByb2ZpbGUubG9nIikKLSAgICAgICAgcHJpbnQoIlJhdyBwcm9maWxpbmcgaW5mb3JtYXRpb24gc2F2ZWQgdG8gcHJvZmlsZS5sb2cgYW5kIHByb2Nlc3NlZCBzdGF0aXN0aWNzIHRvIHByb2ZpbGUubG9nLnByb2Nlc3NlZCIpCi0KLSAgICBlbHNlOgotICAgICAgICByZXQgPSBmdW5jKCphcmdzKQotCi0gICAgY29va2VyLnBvc3Rfc2VydmUoKQotCi0gICAgcmV0dXJuIHJldAogCiBjbGFzcyBDb29rZXJFeGl0KGJiLmV2ZW50LkV2ZW50KToKICAgICAiIiIKQEAgLTE4OTAsMTUgKzE2ODYsMjMgQEAKIAogICAgICAgICAjIFdlIG5lZWQgdG8gdHJhY2sgd2hlcmUgd2UgbG9vayBzbyB0aGF0IHdlIGNhbiBhZGQgaW5vdGlmeSB3YXRjaGVzLiBUaGVyZQogICAgICAgICAjIGlzIG5vIG5pY2Ugd2F5IHRvIGRvIHRoaXMsIHRoaXMgaXMgaG9ycmlkLiBXZSBpbnRlcmNlcHQgdGhlIG9zLmxpc3RkaXIoKQotICAgICAgICAjIGNhbGxzIHdoaWxlIHdlIHJ1biBnbG9iKCkuCisgICAgICAgICMgKG9yIG9zLnNjYW5kaXIoKSBmb3IgcHl0aG9uIDMuNispIGNhbGxzIHdoaWxlIHdlIHJ1biBnbG9iKCkuCiAgICAgICAgIG9yaWdsaXN0ZGlyID0gb3MubGlzdGRpcgorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2NhbmRpcicpOgorICAgICAgICAgICAgb3JpZ3NjYW5kaXIgPSBvcy5zY2FuZGlyCiAgICAgICAgIHNlYXJjaGRpcnMgPSBbXQogCiAgICAgICAgIGRlZiBvdXJsaXN0ZGlyKGQpOgogICAgICAgICAgICAgc2VhcmNoZGlycy5hcHBlbmQoZCkKICAgICAgICAgICAgIHJldHVybiBvcmlnbGlzdGRpcihkKQogCisgICAgICAgIGRlZiBvdXJzY2FuZGlyKGQpOgorICAgICAgICAgICAgc2VhcmNoZGlycy5hcHBlbmQoZCkKKyAgICAgICAgICAgIHJldHVybiBvcmlnc2NhbmRpcihkKQorCiAgICAgICAgIG9zLmxpc3RkaXIgPSBvdXJsaXN0ZGlyCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdzY2FuZGlyJyk6CisgICAgICAgICAgICBvcy5zY2FuZGlyID0gb3Vyc2NhbmRpcgogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIENhbid0IHVzZSBzZXQgaGVyZSBhcyBvcmRlciBpcyBpbXBvcnRhbnQKICAgICAgICAgICAgIG5ld2ZpbGVzID0gW10KQEAgLTE5MTgsNiArMTcyMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZmlsZXMuYXBwZW5kKGcpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5saXN0ZGlyID0gb3JpZ2xpc3RkaXIKKyAgICAgICAgICAgIGlmIGhhc2F0dHIob3MsICdzY2FuZGlyJyk6CisgICAgICAgICAgICAgICAgb3Muc2NhbmRpciA9IG9yaWdzY2FuZGlyCiAKICAgICAgICAgYmJtYXNrID0gY29uZmlnLmdldFZhcignQkJNQVNLJykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weQppbmRleCBlNDA4YTM1Li5mYWI0N2M3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weQpAQCAtNDEsMTAgKzQxLDYgQEAKIAogICAgICAgICBzZWxmLm9wdGlvbnMucGtnc190b19idWlsZCA9IHRhcmdldHMgb3IgW10KIAotICAgICAgICBzZWxmLm9wdGlvbnMudHJhY2tpbmcgPSBGYWxzZQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYub3B0aW9ucywgInNob3dfZW52aXJvbm1lbnQiKSBhbmQgc2VsZi5vcHRpb25zLnNob3dfZW52aXJvbm1lbnQ6Ci0gICAgICAgICAgICBzZWxmLm9wdGlvbnMudHJhY2tpbmcgPSBUcnVlCi0KICAgICAgICAgZm9yIGtleSwgdmFsIGluIHNlbGYub3B0aW9ucy5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIHZhbCkKIApAQCAtNzMsMTUgKzY5LDE1IEBACiAKICAgICBkZWYgdXBkYXRlVG9TZXJ2ZXIoc2VsZiwgc2VydmVyLCBlbnZpcm9ubWVudCk6CiAgICAgICAgIG9wdGlvbnMgPSB7fQotICAgICAgICBmb3IgbyBpbiBbImFib3J0IiwgInRyeWFsdGNvbmZpZ3MiLCAiZm9yY2UiLCAiaW52YWxpZGF0ZV9zdGFtcCIsIAotICAgICAgICAgICAgICAgICAgInZlcmJvc2UiLCAiZGVidWciLCAiZHJ5X3J1biIsICJkdW1wX3NpZ25hdHVyZXMiLCAKKyAgICAgICAgZm9yIG8gaW4gWyJhYm9ydCIsICJmb3JjZSIsICJpbnZhbGlkYXRlX3N0YW1wIiwKKyAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImRlYnVnIiwgImRyeV9ydW4iLCAiZHVtcF9zaWduYXR1cmVzIiwKICAgICAgICAgICAgICAgICAgICJkZWJ1Z19kb21haW5zIiwgImV4dHJhX2Fzc3VtZV9wcm92aWRlZCIsICJwcm9maWxlIiwKLSAgICAgICAgICAgICAgICAgICJwcmVmaWxlIiwgInBvc3RmaWxlIl06CisgICAgICAgICAgICAgICAgICAicHJlZmlsZSIsICJwb3N0ZmlsZSIsICJzZXJ2ZXJfdGltZW91dCJdOgogICAgICAgICAgICAgb3B0aW9uc1tvXSA9IGdldGF0dHIoc2VsZi5vcHRpb25zLCBvKQogCiAgICAgICAgIHJldCwgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbInVwZGF0ZUNvbmZpZyIsIG9wdGlvbnMsIGVudmlyb25tZW50LCBzeXMuYXJndl0pCiAgICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5hYmxlIHRvIHVwZGF0ZSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gd2l0aCBsb2NhbCBwYXJhbWV0ZXJzOiAlcyIgJSBlcnJvcikKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5hYmxlIHRvIHVwZGF0ZSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gd2l0aCBsb2NhbCBwYXJhbWV0ZXJzOiAlcyIgJSBlcnJvcikKIAogICAgIGRlZiBwYXJzZUFjdGlvbnMoc2VsZik6CiAgICAgICAgICMgUGFyc2UgYW55IGNvbW1hbmRsaW5lIGludG8gYWN0aW9ucwpAQCAtMTMxLDggKzEyNyw2IEBACiAgICAgICAgIHNlbGYuZXh0cmFfYXNzdW1lX3Byb3ZpZGVkID0gW10KICAgICAgICAgc2VsZi5wcmVmaWxlID0gW10KICAgICAgICAgc2VsZi5wb3N0ZmlsZSA9IFtdCi0gICAgICAgIHNlbGYucHJlZmlsZV9zZXJ2ZXIgPSBbXQotICAgICAgICBzZWxmLnBvc3RmaWxlX3NlcnZlciA9IFtdCiAgICAgICAgIHNlbGYuZGVidWcgPSAwCiAgICAgICAgIHNlbGYuY21kID0gTm9uZQogICAgICAgICBzZWxmLmFib3J0ID0gVHJ1ZQpAQCAtMTQ0LDcgKzEzOCw4IEBACiAgICAgICAgIHNlbGYuZHVtcF9zaWduYXR1cmVzID0gW10KICAgICAgICAgc2VsZi5kcnlfcnVuID0gRmFsc2UKICAgICAgICAgc2VsZi50cmFja2luZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuaW50ZXJmYWNlID0gW10KKyAgICAgICAgc2VsZi54bWxycGNpbnRlcmZhY2UgPSBbXQorICAgICAgICBzZWxmLnNlcnZlcl90aW1lb3V0ID0gTm9uZQogICAgICAgICBzZWxmLndyaXRlZXZlbnRsb2cgPSBGYWxzZQogICAgICAgICBzZWxmLnNlcnZlcl9vbmx5ID0gRmFsc2UKICAgICAgICAgc2VsZi5saW1pdGVkX2RlcHMgPSBGYWxzZQpAQCAtMTU3LDcgKzE1Miw2IEBACiAgICAgICAgICAgICBpZiBrZXkgaW4gcGFyYW1ldGVycy5vcHRpb25zLl9fZGljdF9fOgogICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCBwYXJhbWV0ZXJzLm9wdGlvbnMuX19kaWN0X19ba2V5XSkKICAgICAgICAgc2VsZi5lbnYgPSBwYXJhbWV0ZXJzLmVudmlyb25tZW50LmNvcHkoKQotICAgICAgICBzZWxmLnRyYWNraW5nID0gcGFyYW1ldGVycy50cmFja2luZwogCiAgICAgZGVmIHNldFNlcnZlclJlZ0lkbGVDYWxsYmFjayhzZWxmLCBzcmNiKToKICAgICAgICAgc2VsZi5zZXJ2ZXJfcmVnaXN0ZXJfaWRsZWNhbGxiYWNrID0gc3JjYgpAQCAtMTczLDcgKzE2Nyw3IEBACiAKICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsc3RhdGUpOgogICAgICAgICBmb3IgayBpbiBzdGF0ZToKLSAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgc3RhdGVba10pIAorICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCBzdGF0ZVtrXSkKIAogCiBkZWYgY2F0Y2hfcGFyc2VfZXJyb3IoZnVuYyk6CkBAIC0yMzAsNiArMjI0LDI3IEBACiAKICAgICByZXR1cm4gTm9uZQogCisjCisjIFdlIHNlYXJjaCBmb3IgYSBjb25mL2JibGF5ZXJzLmNvbmYgdW5kZXIgYW4gZW50cnkgaW4gQkJQQVRIIG9yIGluIGN3ZCB3b3JraW5nIAorIyB1cCB0byAvLiBJZiB0aGF0IGZhaWxzLCB3ZSBzZWFyY2ggZm9yIGEgY29uZi9iaXRiYWtlLmNvbmYgaW4gQkJQQVRILgorIworCitkZWYgZmluZFRvcGRpcigpOgorICAgIGQgPSBiYi5kYXRhLmluaXQoKQorICAgIGJicGF0aCA9IE5vbmUKKyAgICBpZiAnQkJQQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBiYnBhdGggPSBvcy5lbnZpcm9uWydCQlBBVEgnXQorICAgICAgICBkLnNldFZhcignQkJQQVRIJywgYmJwYXRoKQorCisgICAgbGF5ZXJjb25mID0gZmluZENvbmZpZ0ZpbGUoImJibGF5ZXJzLmNvbmYiLCBkKQorICAgIGlmIGxheWVyY29uZjoKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUobGF5ZXJjb25mKSkKKyAgICBpZiBiYnBhdGg6CisgICAgICAgIGJpdGJha2Vjb25mID0gYmIudXRpbHMud2hpY2goYmJwYXRoLCAiY29uZi9iaXRiYWtlLmNvbmYiKQorICAgICAgICBpZiBiaXRiYWtlY29uZjoKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKGJpdGJha2Vjb25mKSkKKyAgICByZXR1cm4gTm9uZQorCiBjbGFzcyBDb29rZXJEYXRhQnVpbGRlcihvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tlcmNmZywgd29ya2VyID0gRmFsc2UpOgpAQCAtMjU1LDcgKzI3MCw3IEBACiAgICAgICAgIGZpbHRlcmVkX2tleXMgPSBiYi51dGlscy5hcHByb3ZlZF92YXJpYWJsZXMoKQogICAgICAgICBiYi5kYXRhLmluaGVyaXRGcm9tT1Moc2VsZi5iYXNlZGF0YSwgc2VsZi5zYXZlZGVudiwgZmlsdGVyZWRfa2V5cykKICAgICAgICAgc2VsZi5iYXNlZGF0YS5zZXRWYXIoIkJCX09SSUdFTlYiLCBzZWxmLnNhdmVkZW52KQotICAgICAgICAKKwogICAgICAgICBpZiB3b3JrZXI6CiAgICAgICAgICAgICBzZWxmLmJhc2VkYXRhLnNldFZhcigiQkJfV09SS0VSQ09OVEVYVCIsICIxIikKIApAQCAtMjk0LDYgKzMwOSw4IEBACiAgICAgICAgICAgICAgICAgbWNkYXRhID0gc2VsZi5wYXJzZUNvbmZpZ3VyYXRpb25GaWxlcyhzZWxmLnByZWZpbGVzLCBzZWxmLnBvc3RmaWxlcywgY29uZmlnKQogICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQ29uZmlnUGFyc2VkKCksIG1jZGF0YSkKICAgICAgICAgICAgICAgICBzZWxmLm1jZGF0YVtjb25maWddID0gbWNkYXRhCisgICAgICAgICAgICBpZiBtdWx0aWNvbmZpZzoKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk11bHRpQ29uZmlnUGFyc2VkKHNlbGYubWNkYXRhKSwgc2VsZi5kYXRhKQogCiAgICAgICAgIGV4Y2VwdCAoU3ludGF4RXJyb3IsIGJiLkJCSGFuZGxlZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByYWlzZSBiYi5CQkhhbmRsZWRFeGNlcHRpb24KQEAgLTMwNCw2ICszMjEsMTggQEAKICAgICAgICAgICAgIGxvZ2dlci5leGNlcHRpb24oIkVycm9yIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcyIpCiAgICAgICAgICAgICByYWlzZSBiYi5CQkhhbmRsZWRFeGNlcHRpb24KIAorICAgICAgICAjIENyZWF0ZSBhIGNvcHkgc28gd2UgY2FuIHJlc2V0IGF0IGEgbGF0ZXIgZGF0ZSB3aGVuIFVJcyBkaXNjb25uZWN0CisgICAgICAgIHNlbGYub3JpZ2RhdGEgPSBzZWxmLmRhdGEKKyAgICAgICAgc2VsZi5kYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KHNlbGYub3JpZ2RhdGEpCisgICAgICAgIHNlbGYubWNkYXRhWycnXSA9IHNlbGYuZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICAjIFdlIG1heSBub3QgaGF2ZSBydW4gcGFyc2VCYXNlQ29uZmlndXJhdGlvbigpIHlldAorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnb3JpZ2RhdGEnKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoc2VsZi5vcmlnZGF0YSkKKyAgICAgICAgc2VsZi5tY2RhdGFbJyddID0gc2VsZi5kYXRhCisKICAgICBkZWYgX2ZpbmRMYXllckNvbmYoc2VsZiwgZGF0YSk6CiAgICAgICAgIHJldHVybiBmaW5kQ29uZmlnRmlsZSgiYmJsYXllcnMuY29uZiIsIGRhdGEpCiAKQEAgLTM0Niw2ICszNzUsMjcgQEAKICAgICAgICAgICAgIGRhdGEuZGVsVmFyKCdMQVlFUkRJUl9SRScpCiAgICAgICAgICAgICBkYXRhLmRlbFZhcignTEFZRVJESVInKQogCisgICAgICAgICAgICBiYmZpbGVzX2R5bmFtaWMgPSAoZGF0YS5nZXRWYXIoJ0JCRklMRVNfRFlOQU1JQycpIG9yICIiKS5zcGxpdCgpCisgICAgICAgICAgICBjb2xsZWN0aW9ucyA9IChkYXRhLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykgb3IgIiIpLnNwbGl0KCkKKyAgICAgICAgICAgIGludmFsaWQgPSBbXQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGJiZmlsZXNfZHluYW1pYzoKKyAgICAgICAgICAgICAgICBwYXJ0cyA9IGVudHJ5LnNwbGl0KCI6IiwgMSkKKyAgICAgICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IDI6CisgICAgICAgICAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKGVudHJ5KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGwsIGYgPSBwYXJ0cworICAgICAgICAgICAgICAgIGlmIGwgaW4gY29sbGVjdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kVmFyKCJCQkZJTEVTIiwgIiAiICsgZikKKyAgICAgICAgICAgIGlmIGludmFsaWQ6CisgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkJCRklMRVNfRFlOQU1JQyBlbnRyaWVzIG11c3QgYmUgb2YgdGhlIGZvcm0gPGNvbGxlY3Rpb24gbmFtZT46PGZpbGVuYW1lIHBhdHRlcm4+LCBub3Q6XG4gICAgJXMiICUgIlxuICAgICIuam9pbihpbnZhbGlkKSkKKworICAgICAgICAgICAgbGF5ZXJzZXJpZXMgPSBzZXQoKGRhdGEuZ2V0VmFyKCJMQVlFUlNFUklFU19DT1JFTkFNRVMiKSBvciAiIikuc3BsaXQoKSkKKyAgICAgICAgICAgIGZvciBjIGluIGNvbGxlY3Rpb25zOgorICAgICAgICAgICAgICAgIGNvbXBhdCA9IHNldCgoZGF0YS5nZXRWYXIoIkxBWUVSU0VSSUVTX0NPTVBBVF8lcyIgJSBjKSBvciAiIikuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICBpZiBjb21wYXQgYW5kIG5vdCAoY29tcGF0ICYgbGF5ZXJzZXJpZXMpOgorICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiTGF5ZXIgJXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgY29yZSBsYXllciB3aGljaCBvbmx5IHN1cHBvcnRzIHRoZXNlIHNlcmllczogJXMgKGxheWVyIGlzIGNvbXBhdGlibGUgd2l0aCAlcykiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjLCAiICIuam9pbihsYXllcnNlcmllcyksICIgIi5qb2luKGNvbXBhdCkpKQorCiAgICAgICAgIGlmIG5vdCBkYXRhLmdldFZhcigiQkJQQVRIIik6CiAgICAgICAgICAgICBtc2cgPSAiVGhlIEJCUEFUSCB2YXJpYWJsZSBpcyBub3Qgc2V0IgogICAgICAgICAgICAgaWYgbm90IGxheWVyY29uZjoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYWVtb25pemUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGFlbW9uaXplLnB5CmluZGV4IGFiNGE5NTQuLjgzMDBkMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYWVtb25pemUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhZW1vbml6ZS5weQpAQCAtMSw0OCArMSwxNCBAQAogIiIiCiBQeXRob24gRGFlbW9uaXppbmcgaGVscGVyCiAKLUNvbmZpZ3VyYWJsZSBkYWVtb24gYmVoYXZpb3JzOgotCi0gICAgMS4pIFRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNldCB0byB0aGUgIi8iIGRpcmVjdG9yeS4KLSAgICAyLikgVGhlIGN1cnJlbnQgZmlsZSBjcmVhdGlvbiBtb2RlIG1hc2sgc2V0IHRvIDAuCi0gICAgMy4pIENsb3NlIGFsbCBvcGVuIGZpbGVzICgxMDI0KS4gCi0gICAgNC4pIFJlZGlyZWN0IHN0YW5kYXJkIEkvTyBzdHJlYW1zIHRvICIvZGV2L251bGwiLgotCi1BIGZhaWxlZCBjYWxsIHRvIGZvcmsoKSBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotUmVmZXJlbmNlczoKLSAgICAxKSBBZHZhbmNlZCBQcm9ncmFtbWluZyBpbiB0aGUgVW5peCBFbnZpcm9ubWVudDogVy4gUmljaGFyZCBTdGV2ZW5zCi0JaHR0cDovL3d3dy5hcHVlYm9vay5jb20vYXB1ZTNlLmh0bWwKLSAgICAyKSBUaGUgTGludXggUHJvZ3JhbW1pbmcgSW50ZXJmYWNlOiBNaWNoYWVsIEtlcnJpc2sKLQlodHRwOi8vbWFuNy5vcmcvdGxwaS9pbmRleC5odG1sCi0gICAgMykgVW5peCBQcm9ncmFtbWluZyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uczoKLQlodHRwOi8vd3d3LmZhcXMub3JnL2ZhcXMvdW5peC1mYXEvcHJvZ3JhbW1lci9mYXEvCi0KLU1vZGlmaWVkIHRvIGFsbG93IGEgZnVuY3Rpb24gdG8gYmUgZGFlbW9uaXplZCBhbmQgcmV0dXJuIGZvciAKLWJpdGJha2UgdXNlIGJ5IFJpY2hhcmQgUHVyZGllCitPcmlnaW5hbGx5IGJhc2VkIG9uIGNvZGUgQ29weXJpZ2h0IChDKSAyMDA1IENoYWQgSi4gU2Nocm9lZGVyIGJ1dCBub3cgaGVhdmlseSBtb2RpZmllZAordG8gYWxsb3cgYSBmdW5jdGlvbiB0byBiZSBkYWVtb25pemVkIGFuZCByZXR1cm4gZm9yIGJpdGJha2UgdXNlIGJ5IFJpY2hhcmQgUHVyZGllCiAiIiIKIAotX19hdXRob3JfXyA9ICJDaGFkIEouIFNjaHJvZWRlciIKLV9fY29weXJpZ2h0X18gPSAiQ29weXJpZ2h0IChDKSAyMDA1IENoYWQgSi4gU2Nocm9lZGVyIgotX192ZXJzaW9uX18gPSAiMC4yIgotCi0jIFN0YW5kYXJkIFB5dGhvbiBtb2R1bGVzLgotaW1wb3J0IG9zICAgICAgICAgICAgICAgICAgICAjIE1pc2NlbGxhbmVvdXMgT1MgaW50ZXJmYWNlcy4KLWltcG9ydCBzeXMgICAgICAgICAgICAgICAgICAgIyBTeXN0ZW0tc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgZnVuY3Rpb25zLgotCi0jIERlZmF1bHQgZGFlbW9uIHBhcmFtZXRlcnMuCi0jIEZpbGUgbW9kZSBjcmVhdGlvbiBtYXNrIG9mIHRoZSBkYWVtb24uCi0jIEZvciBCaXRCYWtlJ3MgY2hpbGRyZW4sIHdlIGRvIHdhbnQgdG8gaW5oZXJpdCB0aGUgcGFyZW50IHVtYXNrLgotVU1BU0sgPSBOb25lCi0KLSMgRGVmYXVsdCBtYXhpbXVtIGZvciB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBmaWxlIGRlc2NyaXB0b3JzLgotTUFYRkQgPSAxMDI0Ci0KLSMgVGhlIHN0YW5kYXJkIEkvTyBmaWxlIGRlc2NyaXB0b3JzIGFyZSByZWRpcmVjdGVkIHRvIC9kZXYvbnVsbCBieSBkZWZhdWx0LgotaWYgKGhhc2F0dHIob3MsICJkZXZudWxsIikpOgotICAgIFJFRElSRUNUX1RPID0gb3MuZGV2bnVsbAotZWxzZToKLSAgICBSRURJUkVDVF9UTyA9ICIvZGV2L251bGwiCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBpbworaW1wb3J0IHRyYWNlYmFjawogCiBkZWYgY3JlYXRlRGFlbW9uKGZ1bmN0aW9uLCBsb2dmaWxlKToKICAgICAiIiIKQEAgLTY1LDM2ICszMSw2IEBACiAgICAgICAgICMgbGVhZGVyIG9mIHRoZSBuZXcgcHJvY2VzcyBncm91cCwgd2UgY2FsbCBvcy5zZXRzaWQoKS4gIFRoZSBwcm9jZXNzIGlzCiAgICAgICAgICMgYWxzbyBndWFyYW50ZWVkIG5vdCB0byBoYXZlIGEgY29udHJvbGxpbmcgdGVybWluYWwuCiAgICAgICAgIG9zLnNldHNpZCgpCi0KLSAgICAgICAgIyBJcyBpZ25vcmluZyBTSUdIVVAgbmVjZXNzYXJ5PwotICAgICAgICAjCi0gICAgICAgICMgSXQncyBvZnRlbiBzdWdnZXN0ZWQgdGhhdCB0aGUgU0lHSFVQIHNpZ25hbCBzaG91bGQgYmUgaWdub3JlZCBiZWZvcmUKLSAgICAgICAgIyB0aGUgc2Vjb25kIGZvcmsgdG8gYXZvaWQgcHJlbWF0dXJlIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9jZXNzLiAgVGhlCi0gICAgICAgICMgcmVhc29uIGlzIHRoYXQgd2hlbiB0aGUgZmlyc3QgY2hpbGQgdGVybWluYXRlcywgYWxsIHByb2Nlc3NlcywgZS5nLgotICAgICAgICAjIHRoZSBzZWNvbmQgY2hpbGQsIGluIHRoZSBvcnBoYW5lZCBncm91cCB3aWxsIGJlIHNlbnQgYSBTSUdIVVAuCi0gICAgICAgICMKLSAgICAgICAgIyAiSG93ZXZlciwgYXMgcGFydCBvZiB0aGUgc2Vzc2lvbiBtYW5hZ2VtZW50IHN5c3RlbSwgdGhlcmUgYXJlIGV4YWN0bHkKLSAgICAgICAgIyB0d28gY2FzZXMgd2hlcmUgU0lHSFVQIGlzIHNlbnQgb24gdGhlIGRlYXRoIG9mIGEgcHJvY2VzczoKLSAgICAgICAgIwotICAgICAgICAjICAgIDEpIFdoZW4gdGhlIHByb2Nlc3MgdGhhdCBkaWVzIGlzIHRoZSBzZXNzaW9uIGxlYWRlciBvZiBhIHNlc3Npb24gdGhhdAotICAgICAgICAjICAgICAgICBpcyBhdHRhY2hlZCB0byBhIHRlcm1pbmFsIGRldmljZSwgU0lHSFVQIGlzIHNlbnQgdG8gYWxsIHByb2Nlc3NlcwotICAgICAgICAjICAgICAgICBpbiB0aGUgZm9yZWdyb3VuZCBwcm9jZXNzIGdyb3VwIG9mIHRoYXQgdGVybWluYWwgZGV2aWNlLgotICAgICAgICAjICAgIDIpIFdoZW4gdGhlIGRlYXRoIG9mIGEgcHJvY2VzcyBjYXVzZXMgYSBwcm9jZXNzIGdyb3VwIHRvIGJlY29tZQotICAgICAgICAjICAgICAgICBvcnBoYW5lZCwgYW5kIG9uZSBvciBtb3JlIHByb2Nlc3NlcyBpbiB0aGUgb3JwaGFuZWQgZ3JvdXAgYXJlCi0gICAgICAgICMgICAgICAgIHN0b3BwZWQsIHRoZW4gU0lHSFVQIGFuZCBTSUdDT05UIGFyZSBzZW50IHRvIGFsbCBtZW1iZXJzIG9mIHRoZQotICAgICAgICAjICAgICAgICBvcnBoYW5lZCBncm91cC4iIFsyXQotICAgICAgICAjCi0gICAgICAgICMgVGhlIGZpcnN0IGNhc2UgY2FuIGJlIGlnbm9yZWQgc2luY2UgdGhlIGNoaWxkIGlzIGd1YXJhbnRlZWQgbm90IHRvIGhhdmUKLSAgICAgICAgIyBhIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiAgVGhlIHNlY29uZCBjYXNlIGlzbid0IHNvIGVhc3kgdG8gZGlzbWlzcy4KLSAgICAgICAgIyBUaGUgcHJvY2VzcyBncm91cCBpcyBvcnBoYW5lZCB3aGVuIHRoZSBmaXJzdCBjaGlsZCB0ZXJtaW5hdGVzIGFuZAotICAgICAgICAjIFBPU0lYLjEgcmVxdWlyZXMgdGhhdCBldmVyeSBTVE9QUEVEIHByb2Nlc3MgaW4gYW4gb3JwaGFuZWQgcHJvY2VzcwotICAgICAgICAjIGdyb3VwIGJlIHNlbnQgYSBTSUdIVVAgc2lnbmFsIGZvbGxvd2VkIGJ5IGEgU0lHQ09OVCBzaWduYWwuICBTaW5jZSB0aGUKLSAgICAgICAgIyBzZWNvbmQgY2hpbGQgaXMgbm90IFNUT1BQRUQgdGhvdWdoLCB3ZSBjYW4gc2FmZWx5IGZvcmVnbyBpZ25vcmluZyB0aGUKLSAgICAgICAgIyBTSUdIVVAgc2lnbmFsLiAgSW4gYW55IGNhc2UsIHRoZXJlIGFyZSBubyBpbGwtZWZmZWN0cyBpZiBpdCBpcyBpZ25vcmVkLgotICAgICAgICAjCi0gICAgICAgICMgaW1wb3J0IHNpZ25hbCAgICAgICAgICAgICAgIyBTZXQgaGFuZGxlcnMgZm9yIGFzeW5jaHJvbm91cyBldmVudHMuCi0gICAgICAgICMgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBzaWduYWwuU0lHX0lHTikKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIEZvcmsgYSBzZWNvbmQgY2hpbGQgYW5kIGV4aXQgaW1tZWRpYXRlbHkgdG8gcHJldmVudCB6b21iaWVzLiAgVGhpcwogICAgICAgICAgICAgIyBjYXVzZXMgdGhlIHNlY29uZCBjaGlsZCBwcm9jZXNzIHRvIGJlIG9ycGhhbmVkLCBtYWtpbmcgdGhlIGluaXQKQEAgLTEwOCw4NiArNDQsMzkgQEAKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgWyVkXSIgJSAoZS5zdHJlcnJvciwgZS5lcnJubykpCiAKLSAgICAgICAgaWYgKHBpZCA9PSAwKTogICMgVGhlIHNlY29uZCBjaGlsZC4KLSAgICAgICAgICAgICMgV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0aGUgZmlsZSBtb2RlIGNyZWF0aW9uIG1hc2sgaW5oZXJpdGVkIGZyb20KLSAgICAgICAgICAgICMgdGhlIHBhcmVudCwgc28gd2UgZ2l2ZSB0aGUgY2hpbGQgY29tcGxldGUgY29udHJvbCBvdmVyIHBlcm1pc3Npb25zLgotICAgICAgICAgICAgaWYgVU1BU0sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgb3MudW1hc2soVU1BU0spCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIChwaWQgIT0gMCk6CiAgICAgICAgICAgICAjIFBhcmVudCAodGhlIGZpcnN0IGNoaWxkKSBvZiB0aGUgc2Vjb25kIGNoaWxkLgorICAgICAgICAgICAgIyBleGl0KCkgb3IgX2V4aXQoKT8KKyAgICAgICAgICAgICMgX2V4aXQgaXMgbGlrZSBleGl0KCksIGJ1dCBpdCBkb2Vzbid0IGNhbGwgYW55IGZ1bmN0aW9ucyByZWdpc3RlcmVkCisgICAgICAgICAgICAjIHdpdGggYXRleGl0IChhbmQgb25fZXhpdCkgb3IgYW55IHJlZ2lzdGVyZWQgc2lnbmFsIGhhbmRsZXJzLiAgSXQgYWxzbworICAgICAgICAgICAgIyBjbG9zZXMgYW55IG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4gIFVzaW5nIGV4aXQoKSBtYXkgY2F1c2UgYWxsIHN0ZGlvCisgICAgICAgICAgICAjIHN0cmVhbXMgdG8gYmUgZmx1c2hlZCB0d2ljZSBhbmQgYW55IHRlbXBvcmFyeSBmaWxlcyBtYXkgYmUgdW5leHBlY3RlZGx5CisgICAgICAgICAgICAjIHJlbW92ZWQuICBJdCdzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0aGF0IGNoaWxkIGJyYW5jaGVzIG9mIGEgZm9yaygpCisgICAgICAgICAgICAjIGFuZCB0aGUgcGFyZW50IGJyYW5jaChlcykgb2YgYSBkYWVtb24gdXNlIF9leGl0KCkuCiAgICAgICAgICAgICBvcy5fZXhpdCgwKQogICAgIGVsc2U6Ci0gICAgICAgICMgZXhpdCgpIG9yIF9leGl0KCk/Ci0gICAgICAgICMgX2V4aXQgaXMgbGlrZSBleGl0KCksIGJ1dCBpdCBkb2Vzbid0IGNhbGwgYW55IGZ1bmN0aW9ucyByZWdpc3RlcmVkCi0gICAgICAgICMgd2l0aCBhdGV4aXQgKGFuZCBvbl9leGl0KSBvciBhbnkgcmVnaXN0ZXJlZCBzaWduYWwgaGFuZGxlcnMuICBJdCBhbHNvCi0gICAgICAgICMgY2xvc2VzIGFueSBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuICBVc2luZyBleGl0KCkgbWF5IGNhdXNlIGFsbCBzdGRpbwotICAgICAgICAjIHN0cmVhbXMgdG8gYmUgZmx1c2hlZCB0d2ljZSBhbmQgYW55IHRlbXBvcmFyeSBmaWxlcyBtYXkgYmUgdW5leHBlY3RlZGx5Ci0gICAgICAgICMgcmVtb3ZlZC4gIEl0J3MgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRoYXQgY2hpbGQgYnJhbmNoZXMgb2YgYSBmb3JrKCkKLSAgICAgICAgIyBhbmQgdGhlIHBhcmVudCBicmFuY2goZXMpIG9mIGEgZGFlbW9uIHVzZSBfZXhpdCgpLgorICAgICAgICBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgcmV0dXJuCiAKLSAgICAjIENsb3NlIGFsbCBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuICBUaGlzIHByZXZlbnRzIHRoZSBjaGlsZCBmcm9tIGtlZXBpbmcKLSAgICAjIG9wZW4gYW55IGZpbGUgZGVzY3JpcHRvcnMgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIFRoZXJlIGlzIGEgdmFyaWV0eQotICAgICMgb2YgbWV0aG9kcyB0byBhY2NvbXBsaXNoIHRoaXMgdGFzay4gIFRocmVlIGFyZSBsaXN0ZWQgYmVsb3cuCi0gICAgIwotICAgICMgVHJ5IHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZSwgU0NfT1BFTl9NQVgsIHRvIG9idGFpbiB0aGUgbWF4aW11bQotICAgICMgbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyB0byBjbG9zZS4gIElmIGl0IGRvZXNuJ3QgZXhpc3QsIHVzZQotICAgICMgdGhlIGRlZmF1bHQgdmFsdWUgKGNvbmZpZ3VyYWJsZSkuCi0gICAgIwotICAgICMgdHJ5OgotICAgICMgICAgIG1heGZkID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQotICAgICMgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgIyAgICAgbWF4ZmQgPSBNQVhGRAotICAgICMKLSAgICAjIE9SCi0gICAgIwotICAgICMgaWYgKG9zLnN5c2NvbmZfbmFtZXMuaGFzX2tleSgiU0NfT1BFTl9NQVgiKSk6Ci0gICAgIyAgICAgbWF4ZmQgPSBvcy5zeXNjb25mKCJTQ19PUEVOX01BWCIpCi0gICAgIyBlbHNlOgotICAgICMgICAgIG1heGZkID0gTUFYRkQKLSAgICAjCi0gICAgIyBPUgotICAgICMKLSAgICAjIFVzZSB0aGUgZ2V0cmxpbWl0IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgbWF4aW11bSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyCi0gICAgIyB0aGF0IGNhbiBiZSBvcGVuZWQgYnkgdGhpcyBwcm9jZXNzLiAgSWYgdGhlcmUgaXMgbm8gbGltaXQgb24gdGhlCi0gICAgIyByZXNvdXJjZSwgdXNlIHRoZSBkZWZhdWx0IHZhbHVlLgotICAgICMKLSAgICBpbXBvcnQgcmVzb3VyY2UgICAgICAgICAgICAgIyBSZXNvdXJjZSB1c2FnZSBpbmZvcm1hdGlvbi4KLSAgICBtYXhmZCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfTk9GSUxFKVsxXQotICAgIGlmIChtYXhmZCA9PSByZXNvdXJjZS5STElNX0lORklOSVRZKToKLSAgICAgICAgbWF4ZmQgPSBNQVhGRAotICAKLSAgICAjIEl0ZXJhdGUgdGhyb3VnaCBhbmQgY2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMuCi0jICAgIGZvciBmZCBpbiByYW5nZSgwLCBtYXhmZCk6Ci0jICAgICAgICB0cnk6Ci0jICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0jICAgICAgICBleGNlcHQgT1NFcnJvcjogICAgICAgICMgRVJST1IsIGZkIHdhc24ndCBvcGVuIHRvIGJlZ2luIHdpdGggKGlnbm9yZWQpCi0jICAgICAgICAgICAgcGFzcworICAgICMgVGhlIHNlY29uZCBjaGlsZC4KIAotICAgICMgUmVkaXJlY3QgdGhlIHN0YW5kYXJkIEkvTyBmaWxlIGRlc2NyaXB0b3JzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gIFNpbmNlCi0gICAgIyB0aGUgZGFlbW9uIGhhcyBubyBjb250cm9sbGluZyB0ZXJtaW5hbCwgbW9zdCBkYWVtb25zIHJlZGlyZWN0IHN0ZGluLAotICAgICMgc3Rkb3V0LCBhbmQgc3RkZXJyIHRvIC9kZXYvbnVsbC4gIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IHNpZGUtZWZmZWN0cwotICAgICMgZnJvbSByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZSBzdGFuZGFyZCBJL08gZmlsZSBkZXNjcmlwdG9ycy4KLQotICAgICMgVGhpcyBjYWxsIHRvIG9wZW4gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gdGhlIGxvd2VzdCBmaWxlIGRlc2NyaXB0b3IsCi0gICAgIyB3aGljaCB3aWxsIGJlIDAgKHN0ZGluKSwgc2luY2UgaXQgd2FzIGNsb3NlZCBhYm92ZS4KLSMgICAgb3Mub3BlbihSRURJUkVDVF9UTywgb3MuT19SRFdSKSAgICAjIHN0YW5kYXJkIGlucHV0ICgwKQotCi0gICAgIyBEdXBsaWNhdGUgc3RhbmRhcmQgaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvci4KLSMgICAgb3MuZHVwMigwLCAxKSAgICAgICAgICAgICAgICAgICAgICAjIHN0YW5kYXJkIG91dHB1dCAoMSkKLSMgICAgb3MuZHVwMigwLCAyKSAgICAgICAgICAgICAgICAgICAgICAjIHN0YW5kYXJkIGVycm9yICgyKQotCi0KKyAgICAjIFJlcGxhY2Ugc3RhbmRhcmQgZmRzIHdpdGggb3VyIG93bgogICAgIHNpID0gb3BlbignL2Rldi9udWxsJywgJ3InKQotICAgIHNvID0gb3Blbihsb2dmaWxlLCAndycpCi0gICAgc2UgPSBzbwotCi0KLSAgICAjIFJlcGxhY2UgdGhvc2UgZmRzIHdpdGggb3VyIG93bgogICAgIG9zLmR1cDIoc2kuZmlsZW5vKCksIHN5cy5zdGRpbi5maWxlbm8oKSkKLSAgICBvcy5kdXAyKHNvLmZpbGVubygpLCBzeXMuc3Rkb3V0LmZpbGVubygpKQotICAgIG9zLmR1cDIoc2UuZmlsZW5vKCksIHN5cy5zdGRlcnIuZmlsZW5vKCkpCiAKLSAgICBmdW5jdGlvbigpCisgICAgdHJ5OgorICAgICAgICBzbyA9IG9wZW4obG9nZmlsZSwgJ2ErJykKKyAgICAgICAgc2UgPSBzbworICAgICAgICBvcy5kdXAyKHNvLmZpbGVubygpLCBzeXMuc3Rkb3V0LmZpbGVubygpKQorICAgICAgICBvcy5kdXAyKHNlLmZpbGVubygpLCBzeXMuc3RkZXJyLmZpbGVubygpKQorICAgIGV4Y2VwdCBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbjoKKyAgICAgICAgc3lzLnN0ZG91dCA9IG9wZW4obG9nZmlsZSwgJ2ErJykKKyAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5zdGRvdXQKIAotICAgIG9zLl9leGl0KDApCisgICAgdHJ5OgorICAgICAgICBmdW5jdGlvbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBmaW5hbGx5OgorICAgICAgICBiYi5ldmVudC5wcmludF91aV9xdWV1ZSgpCisgICAgICAgIG9zLl9leGl0KDApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CmluZGV4IDEzNGFmYWEuLjgwYTc4NzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICAgICAgICAgIHJldHVybiBkZXBzLCB2YWx1ZQogICAgICAgICB2YXJmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5LCBbInZhcmRlcHMiLCAidmFyZGVwdmFsdWUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiZXhwb3J0cyIsICJwb3N0ZnVuY3MiLCAicHJlZnVuY3MiLCAibGluZW5vIiwgImZpbGVuYW1lIl0pIG9yIHt9CiAgICAgICAgIHZhcmRlcHMgPSB2YXJmbGFncy5nZXQoInZhcmRlcHMiKQotICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyKGtleSwgRmFsc2UpCisgICAgICAgIHZhbHVlID0gZC5nZXRWYXJGbGFnKGtleSwgIl9jb250ZW50IiwgRmFsc2UpCiAKICAgICAgICAgZGVmIGhhbmRsZV9jb250YWlucyh2YWx1ZSwgY29udGFpbnMsIGQpOgogICAgICAgICAgICAgbmV3dmFsdWUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQppbmRleCA3ZGMxYzY4Li43YjA5YWY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQpAQCAtMzksNyArMzksNyBAQAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuRGF0YSIpCiAKIF9fc2V0dmFyX2tleXdvcmRfXyA9IFsiX2FwcGVuZCIsICJfcHJlcGVuZCIsICJfcmVtb3ZlIl0KLV9fc2V0dmFyX3JlZ2V4cF9fID0gcmUuY29tcGlsZSgnKD9QPGJhc2U+Lio/KSg/UDxrZXl3b3JkPl9hcHBlbmR8X3ByZXBlbmR8X3JlbW92ZSkoXyg/UDxhZGQ+LiopKT8kJykKK19fc2V0dmFyX3JlZ2V4cF9fID0gcmUuY29tcGlsZSgnKD9QPGJhc2U+Lio/KSg/UDxrZXl3b3JkPl9hcHBlbmR8X3ByZXBlbmR8X3JlbW92ZSkoXyg/UDxhZGQ+W15BLVpdKikpPyQnKQogX19leHBhbmRfdmFyX3JlZ2V4cF9fID0gcmUuY29tcGlsZShyIlwke1tee31AXG5cdCA6XSt9IikKIF9fZXhwYW5kX3B5dGhvbl9yZWdleHBfXyA9IHJlLmNvbXBpbGUociJcJHtALis/fSIpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQppbmRleCA2ZDg0OTNiLi41MjA3MmI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CkBAIC0xNDksMjMgKzE0OSwzNCBAQAogCiAgICAgICAgICMgRmlyc3QgY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYW55IHByb3BlciBtZXNzYWdlcwogICAgICAgICBtc2dwcmludCA9IEZhbHNlCisgICAgICAgIG1zZ2VycnMgPSBGYWxzZQorCisgICAgICAgICMgU2hvdWxkIHdlIHByaW50IHRvIHN0ZGVycj8KKyAgICAgICAgZm9yIGV2ZW50IGluIHVpX3F1ZXVlWzpdOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpIGFuZCBldmVudC5sZXZlbG5vID49IGxvZ2dpbmcuV0FSTklORzoKKyAgICAgICAgICAgICAgICBtc2dlcnJzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgbXNnZXJyczoKKyAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0ZGVycikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0ZG91dCkKKwogICAgICAgICBmb3IgZXZlbnQgaW4gdWlfcXVldWVbOl06CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CiAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA+IGxvZ2dpbmcuREVCVUc6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPj0gbG9nZ2luZy5XQVJOSU5HOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoc3Rkb3V0KQogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBtc2dwcmludCA9IFRydWUKLSAgICAgICAgaWYgbXNncHJpbnQ6Ci0gICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIE5vcGUsIHNvIGp1c3QgcHJpbnQgYWxsIG9mIHRoZSBtZXNzYWdlcyB3ZSBoYXZlIChpbmNsdWRpbmcgZGVidWcgbWVzc2FnZXMpCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0ZG91dCkKLSAgICAgICAgZm9yIGV2ZW50IGluIHVpX3F1ZXVlWzpdOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgotICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgICAgIGlmIG5vdCBtc2dwcmludDoKKyAgICAgICAgICAgIGZvciBldmVudCBpbiB1aV9xdWV1ZVs6XToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgICAgIGlmIG1zZ2VycnM6CisgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihzdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihzdGRvdXQpCiAKIGRlZiBmaXJlX3VpX2hhbmRsZXJzKGV2ZW50LCBkKToKICAgICBnbG9iYWwgX3RocmVhZF9sb2NrCkBAIC0yMTIsNiArMjIzLDEyIEBACiAgICAgaWYgd29ya2VyX2ZpcmU6CiAgICAgICAgIHdvcmtlcl9maXJlKGV2ZW50LCBkKQogICAgIGVsc2U6CisgICAgICAgICMgSWYgbWVzc2FnZXMgaGF2ZSBiZWVuIHF1ZXVlZCB1cCwgY2xlYXIgdGhlIHF1ZXVlCisgICAgICAgIGdsb2JhbCBfdWlyZWFkeSwgdWlfcXVldWUKKyAgICAgICAgaWYgX3VpcmVhZHkgYW5kIHVpX3F1ZXVlOgorICAgICAgICAgICAgZm9yIHF1ZXVlX2V2ZW50IGluIHVpX3F1ZXVlOgorICAgICAgICAgICAgICAgIGZpcmVfdWlfaGFuZGxlcnMocXVldWVfZXZlbnQsIGQpCisgICAgICAgICAgICB1aV9xdWV1ZSA9IFtdCiAgICAgICAgIGZpcmVfdWlfaGFuZGxlcnMoZXZlbnQsIGQpCiAKIGRlZiBmaXJlX2Zyb21fd29ya2VyKGV2ZW50LCBkKToKQEAgLTI2NCw2ICsyODEsMTEgQEAKIGRlZiByZW1vdmUobmFtZSwgaGFuZGxlcik6CiAgICAgIiIiUmVtb3ZlIGFuIEV2ZW50IGhhbmRsZXIiIiIKICAgICBfaGFuZGxlcnMucG9wKG5hbWUpCisgICAgaWYgbmFtZSBpbiBfY2F0Y2hhbGxfaGFuZGxlcnM6CisgICAgICAgIF9jYXRjaGFsbF9oYW5kbGVycy5wb3AobmFtZSkKKyAgICBmb3IgZXZlbnQgaW4gX2V2ZW50X2hhbmRsZXJfbWFwLmtleXMoKToKKyAgICAgICAgaWYgbmFtZSBpbiBfZXZlbnRfaGFuZGxlcl9tYXBbZXZlbnRdOgorICAgICAgICAgICAgX2V2ZW50X2hhbmRsZXJfbWFwW2V2ZW50XS5wb3AobmFtZSkKIAogZGVmIGdldF9oYW5kbGVycygpOgogICAgIHJldHVybiBfaGFuZGxlcnMKQEAgLTI3NywyMCArMjk5LDI4IEBACiAgICAgX2V2ZW50ZmlsdGVyID0gZnVuYwogCiBkZWYgcmVnaXN0ZXJfVUlIaGFuZGxlcihoYW5kbGVyLCBtYWludWk9RmFsc2UpOgotICAgIGlmIG1haW51aToKLSAgICAgICAgZ2xvYmFsIF91aXJlYWR5Ci0gICAgICAgIF91aXJlYWR5ID0gVHJ1ZQogICAgIGJiLmV2ZW50Ll91aV9oYW5kbGVyX3NlcSA9IGJiLmV2ZW50Ll91aV9oYW5kbGVyX3NlcSArIDEKICAgICBfdWlfaGFuZGxlcnNbX3VpX2hhbmRsZXJfc2VxXSA9IGhhbmRsZXIKICAgICBsZXZlbCwgZGVidWdfZG9tYWlucyA9IGJiLm1zZy5jb25zdHJ1Y3RMb2dPcHRpb25zKCkKICAgICBfdWlfbG9nZmlsdGVyc1tfdWlfaGFuZGxlcl9zZXFdID0gVUlFdmVudEZpbHRlcihsZXZlbCwgZGVidWdfZG9tYWlucykKKyAgICBpZiBtYWludWk6CisgICAgICAgIGdsb2JhbCBfdWlyZWFkeQorICAgICAgICBfdWlyZWFkeSA9IF91aV9oYW5kbGVyX3NlcQogICAgIHJldHVybiBfdWlfaGFuZGxlcl9zZXEKIAotZGVmIHVucmVnaXN0ZXJfVUlIaGFuZGxlcihoYW5kbGVyTnVtKToKK2RlZiB1bnJlZ2lzdGVyX1VJSGhhbmRsZXIoaGFuZGxlck51bSwgbWFpbnVpPUZhbHNlKToKKyAgICBpZiBtYWludWk6CisgICAgICAgIGdsb2JhbCBfdWlyZWFkeQorICAgICAgICBfdWlyZWFkeSA9IEZhbHNlCiAgICAgaWYgaGFuZGxlck51bSBpbiBfdWlfaGFuZGxlcnM6CiAgICAgICAgIGRlbCBfdWlfaGFuZGxlcnNbaGFuZGxlck51bV0KICAgICByZXR1cm4KIAorZGVmIGdldF91aWhhbmRsZXIoKToKKyAgICBpZiBfdWlyZWFkeSBpcyBGYWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm4gX3VpcmVhZHkKKwogIyBDbGFzcyB0byBhbGxvdyBmaWx0ZXJpbmcgb2YgZXZlbnRzIGFuZCBzcGVjaWZpYyBmaWx0ZXJpbmcgb2YgTG9nUmVjb3JkcyAqYmVmb3JlKiB3ZSBwdXQgdGhlbSBvdmVyIHRoZSBJUEMKIGNsYXNzIFVJRXZlbnRGaWx0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGV2ZWwsIGRlYnVnX2RvbWFpbnMpOgpAQCAtMzUzLDYgKzM4MywxMiBAQAogY2xhc3MgQ29uZmlnUGFyc2VkKEV2ZW50KToKICAgICAiIiJDb25maWd1cmF0aW9uIFBhcnNpbmcgQ29tcGxldGUiIiIKIAorY2xhc3MgTXVsdGlDb25maWdQYXJzZWQoRXZlbnQpOgorICAgICIiIk11bHRpLUNvbmZpZyBQYXJzaW5nIENvbXBsZXRlIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1jZGF0YSk6CisgICAgICAgIHNlbGYubWNkYXRhID0gbWNkYXRhCisgICAgICAgIEV2ZW50Ll9faW5pdF9fKHNlbGYpCisKIGNsYXNzIFJlY2lwZUV2ZW50KEV2ZW50KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZm4pOgogICAgICAgICBzZWxmLmZuID0gZm4KQEAgLTQ5Niw2ICs1MzIsMjggQEAKICAgICBkZWYgaXNSdW50aW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fcnVudGltZQogCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG1zZyA9ICcnCisgICAgICAgIGlmIHNlbGYuX3J1bnRpbWU6CisgICAgICAgICAgICByID0gIlIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByID0gIiIKKworICAgICAgICBleHRyYSA9ICcnCisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFzb25zOgorICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfbWF0Y2hlczoKKyAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKHNlbGYuX2Nsb3NlX21hdGNoZXMpCisKKyAgICAgICAgaWYgc2VsZi5fZGVwZW5kZWVzOgorICAgICAgICAgICAgbXNnID0gIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIChidXQgJXMgJXNERVBFTkRTIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCklcyIgJSAociwgc2VsZi5faXRlbSwgIiwgIi5qb2luKHNlbGYuX2RlcGVuZGVlcyksIHIsIGV4dHJhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnJXMiICUgKHIsIHNlbGYuX2l0ZW0sIGV4dHJhKQorICAgICAgICBpZiBzZWxmLl9yZWFzb25zOgorICAgICAgICAgICAgZm9yIHJlYXNvbiBpbiBzZWxmLl9yZWFzb25zOgorICAgICAgICAgICAgICAgIG1zZyArPSAnXG4nICsgcmVhc29uCisgICAgICAgIHJldHVybiBtc2cKKworCiBjbGFzcyBNdWx0aXBsZVByb3ZpZGVycyhFdmVudCk6CiAgICAgIiIiTXVsdGlwbGUgUHJvdmlkZXJzIiIiCiAKQEAgLTUyMyw2ICs1ODEsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9jYW5kaWRhdGVzCiAKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbXNnID0gIk11bHRpcGxlIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIGZvciAlcyVzICglcykiICUgKHNlbGYuX2lzX3J1bnRpbWUgYW5kICJydW50aW1lICIgb3IgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oc2VsZi5fY2FuZGlkYXRlcykpCisgICAgICAgIHJ0aW1lID0gIiIKKyAgICAgICAgaWYgc2VsZi5faXNfcnVudGltZToKKyAgICAgICAgICAgIHJ0aW1lID0gIlIiCisgICAgICAgIG1zZyArPSAiXG5Db25zaWRlciBkZWZpbmluZyBhIFBSRUZFUlJFRF8lc1BST1ZJREVSIGVudHJ5IHRvIG1hdGNoICVzIiAlIChydGltZSwgc2VsZi5faXRlbSkKKyAgICAgICAgcmV0dXJuIG1zZworCiBjbGFzcyBQYXJzZVN0YXJ0ZWQoT3BlcmF0aW9uU3RhcnRlZCk6CiAgICAgIiIiUmVjaXBlIHBhcnNpbmcgZm9yIHRoZSBydW5xdWV1ZSBoYXMgYmVndW4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG90YWwpOgpAQCAtNjE2LDE0ICs2ODQsNiBAQAogICAgICAgICBzZWxmLl9wYXR0ZXJuID0gcGF0dGVybgogICAgICAgICBzZWxmLl9tYXRjaGVzID0gbWF0Y2hlcwogCi1jbGFzcyBDb3JlQmFzZUZpbGVzRm91bmQoRXZlbnQpOgotICAgICIiIgotICAgIEV2ZW50IHdoZW4gYSBsaXN0IG9mIGFwcHJvcHJpYXRlIGNvbmZpZyBmaWxlcyBoYXMgYmVlbiBnZW5lcmF0ZWQKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aHMpOgotICAgICAgICBFdmVudC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9wYXRocyA9IHBhdGhzCi0KIGNsYXNzIENvbmZpZ0ZpbGVzRm91bmQoRXZlbnQpOgogICAgICIiIgogICAgIEV2ZW50IHdoZW4gYSBsaXN0IG9mIGFwcHJvcHJpYXRlIGNvbmZpZyBmaWxlcyBoYXMgYmVlbiBnZW5lcmF0ZWQKQEAgLTY5NCwxOSArNzU0LDYgQEAKICAgICAgICAgcmVjb3JkLnRhc2twaWQgPSB3b3JrZXJfcGlkCiAgICAgICAgIHJldHVybiBUcnVlCiAKLWNsYXNzIFJlcXVlc3RQYWNrYWdlSW5mbyhFdmVudCk6Ci0gICAgIiIiCi0gICAgRXZlbnQgdG8gcmVxdWVzdCBwYWNrYWdlIGluZm9ybWF0aW9uCi0gICAgIiIiCi0KLWNsYXNzIFBhY2thZ2VJbmZvKEV2ZW50KToKLSAgICAiIiIKLSAgICBQYWNrYWdlIGluZm9ybWF0aW9uIGZvciBHVUkKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtnaW5mb2xpc3QpOgotICAgICAgICBFdmVudC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9wa2dpbmZvbGlzdCA9IHBrZ2luZm9saXN0Ci0KIGNsYXNzIE1ldGFkYXRhRXZlbnQoRXZlbnQpOgogICAgICIiIgogICAgIEdlbmVyaWMgZXZlbnQgdGhhdCB0YXJnZXQgZm9yIE9FLUNvcmUgY2xhc3NlcwpAQCAtNzg0LDMgKzgzMSwxMCBAQAogICAgIEV2ZW50IHRvIGluZGljYXRlIG5ldHdvcmsgdGVzdCBoYXMgZmFpbGVkCiAgICAgIiIiCiAKK2NsYXNzIEZpbmRTaWdJbmZvUmVzdWx0KEV2ZW50KToKKyAgICAiIiIKKyAgICBFdmVudCB0byByZXR1cm4gcmVzdWx0cyBmcm9tIGZpbmRTaWdJbmZvIGNvbW1hbmQKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzdWx0KToKKyAgICAgICAgRXZlbnQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IGI4NTNkYTMuLmY3MGYxYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQpAQCAtMzksNiArMzksNyBAQAogaW1wb3J0IGJiLnBlcnNpc3RfZGF0YSwgYmIudXRpbHMKIGltcG9ydCBiYi5jaGVja3N1bQogaW1wb3J0IGJiLnByb2Nlc3MKK2ltcG9ydCBiYi5ldmVudAogCiBfX3ZlcnNpb25fXyA9ICIyIgogX2NoZWNrc3VtX2NhY2hlID0gYmIuY2hlY2tzdW0uRmlsZUNoZWNrc3VtQ2FjaGUoKQpAQCAtNDgsMTEgKzQ5LDExIEBACiBjbGFzcyBCQkZldGNoRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAgIiIiQ2xhc3MgYWxsIGZldGNoIGV4Y2VwdGlvbnMgaW5oZXJpdCBmcm9tIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgc2VsZi5tc2cgPSBtZXNzYWdlCi0gICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5tc2cgPSBtZXNzYWdlCisgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICByZXR1cm4gc2VsZi5tc2cKKyAgICAgICAgcmV0dXJuIHNlbGYubXNnCiAKIGNsYXNzIFVudHJ1c3RlZFVybChCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gZW5jb3VudGVyaW5nIGEgaG9zdCBub3QgbGlzdGVkIGluIEJCX0FMTE9XRURfTkVUV09SS1MiIiIKQEAgLTY4LDI0ICs2OSwyNCBAQAogY2xhc3MgTWFsZm9ybWVkVXJsKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB1cmwiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBtZXNzYWdlPScnKToKLSAgICAgICAgIGlmIG1lc3NhZ2U6Ci0gICAgICAgICAgICAgbXNnID0gbWVzc2FnZQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBtc2cgPSAiVGhlIFVSTDogJyVzJyBpcyBpbnZhbGlkIGFuZCBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQiICUgdXJsCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAodXJsLCkKKyAgICAgICAgaWYgbWVzc2FnZToKKyAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJUaGUgVVJMOiAnJXMnIGlzIGludmFsaWQgYW5kIGNhbm5vdCBiZSBpbnRlcnByZXRlZCIgJSB1cmwKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCisgICAgICAgIHNlbGYuYXJncyA9ICh1cmwsKQogCiBjbGFzcyBGZXRjaEVycm9yKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkdlbmVyYWwgZmV0Y2hlciBleGNlcHRpb24gd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbmNvcnJlY3RseSIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCB1cmwgPSBOb25lKToKLSAgICAgICAgIGlmIHVybDoKKyAgICAgICAgaWYgdXJsOgogICAgICAgICAgICAgbXNnID0gIkZldGNoZXIgZmFpbHVyZSBmb3IgVVJMOiAnJXMnLiAlcyIgJSAodXJsLCBtZXNzYWdlKQotICAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1zZyA9ICJGZXRjaGVyIGZhaWx1cmU6ICVzIiAlIG1lc3NhZ2UKLSAgICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKLSAgICAgICAgIHNlbGYuYXJncyA9IChtZXNzYWdlLCB1cmwpCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQogCiBjbGFzcyBDaGVja3N1bUVycm9yKEZldGNoRXJyb3IpOgogICAgICIiIkV4Y2VwdGlvbiB3aGVuIG1pc21hdGNoZWQgY2hlY2tzdW0gZW5jb3VudGVyZWQiIiIKQEAgLTk5LDQ5ICsxMDAsNTYgQEAKIGNsYXNzIFVucGFja0Vycm9yKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkdlbmVyYWwgZmV0Y2hlciBleGNlcHRpb24gd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbmNvcnJlY3RseSB3aGVuIHVucGFja2luZyIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCB1cmwpOgotICAgICAgICAgbXNnID0gIlVucGFjayBmYWlsdXJlIGZvciBVUkw6ICclcycuICVzIiAlICh1cmwsIG1lc3NhZ2UpCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQorICAgICAgICBtc2cgPSAiVW5wYWNrIGZhaWx1cmUgZm9yIFVSTDogJyVzJy4gJXMiICUgKHVybCwgbWVzc2FnZSkKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCisgICAgICAgIHNlbGYuYXJncyA9IChtZXNzYWdlLCB1cmwpCiAKIGNsYXNzIE5vTWV0aG9kRXJyb3IoQkJGZXRjaEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gYSBzdXBwbGllZCB1cmwgb3Igc2V0IG9mIHVybHMiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsKToKLSAgICAgICAgIG1zZyA9ICJDb3VsZCBub3QgZmluZCBhIGZldGNoZXIgd2hpY2ggc3VwcG9ydHMgdGhlIFVSTDogJyVzJyIgJSB1cmwKLSAgICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKLSAgICAgICAgIHNlbGYuYXJncyA9ICh1cmwsKQorICAgICAgICBtc2cgPSAiQ291bGQgbm90IGZpbmQgYSBmZXRjaGVyIHdoaWNoIHN1cHBvcnRzIHRoZSBVUkw6ICclcyciICUgdXJsCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLmFyZ3MgPSAodXJsLCkKIAogY2xhc3MgTWlzc2luZ1BhcmFtZXRlckVycm9yKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZldGNoIG1ldGhvZCBpcyBtaXNzaW5nIGEgY3JpdGljYWwgcGFyYW1ldGVyIGluIHRoZSB1cmwiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWlzc2luZywgdXJsKToKLSAgICAgICAgIG1zZyA9ICJVUkw6ICclcycgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICclcyciICUgKHVybCwgbWlzc2luZykKLSAgICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgICBzZWxmLm1pc3NpbmcgPSBtaXNzaW5nCi0gICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKLSAgICAgICAgIHNlbGYuYXJncyA9IChtaXNzaW5nLCB1cmwpCisgICAgICAgIG1zZyA9ICJVUkw6ICclcycgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICclcyciICUgKHVybCwgbWlzc2luZykKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAgICAgICAgc2VsZi5taXNzaW5nID0gbWlzc2luZworICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5hcmdzID0gKG1pc3NpbmcsIHVybCkKIAogY2xhc3MgUGFyYW1ldGVyRXJyb3IoQkJGZXRjaEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgdXJsIGNhbm5vdCBiZSBwcm9jY2Vzc2VkIGR1ZSB0byBpbnZhbGlkIHBhcmFtZXRlcnMuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIHVybCk6Ci0gICAgICAgICBtc2cgPSAiVVJMOiAnJXMnIGhhcyBpbnZhbGlkIHBhcmFtZXRlcnMuICVzIiAlICh1cmwsIG1lc3NhZ2UpCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQorICAgICAgICBtc2cgPSAiVVJMOiAnJXMnIGhhcyBpbnZhbGlkIHBhcmFtZXRlcnMuICVzIiAlICh1cmwsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQogCiBjbGFzcyBOZXR3b3JrQWNjZXNzKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBuZXR3b3JrIGFjY2VzcyBpcyBkaXNhYmxlZCBidXQgaXQgaXMgcmVxdWlyZWQuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgY21kKToKLSAgICAgICAgIG1zZyA9ICJOZXR3b3JrIGFjY2VzcyBkaXNhYmxlZCB0aHJvdWdoIEJCX05PX05FVFdPUksgKG9yIHNldCBpbmRpcmVjdGx5IGR1ZSB0byB1c2Ugb2YgQkJfRkVUQ0hfUFJFTUlSUk9ST05MWSkgYnV0IGFjY2VzcyByZXF1ZXN0ZWQgd2l0aCBjb21tYW5kICVzIChmb3IgdXJsICVzKSIgJSAoY21kLCB1cmwpCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgc2VsZi5jbWQgPSBjbWQKLSAgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQotICAgICAgICAgc2VsZi5hcmdzID0gKHVybCwgY21kKQorICAgICAgICBtc2cgPSAiTmV0d29yayBhY2Nlc3MgZGlzYWJsZWQgdGhyb3VnaCBCQl9OT19ORVRXT1JLIChvciBzZXQgaW5kaXJlY3RseSBkdWUgdG8gdXNlIG9mIEJCX0ZFVENIX1BSRU1JUlJPUk9OTFkpIGJ1dCBhY2Nlc3MgcmVxdWVzdGVkIHdpdGggY29tbWFuZCAlcyAoZm9yIHVybCAlcykiICUgKGNtZCwgdXJsKQorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBzZWxmLmNtZCA9IGNtZAorICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5hcmdzID0gKHVybCwgY21kKQogCiBjbGFzcyBOb25Mb2NhbE1ldGhvZChFeGNlcHRpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYpCiAKK2NsYXNzIE1pc3NpbmdDaGVja3N1bUV2ZW50KGJiLmV2ZW50LkV2ZW50KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBtZDVzdW0sIHNoYTI1NnN1bSk6CisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIHNlbGYuY2hlY2tzdW1zID0geydtZDVzdW0nOiBtZDVzdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyNTZzdW0nOiBzaGEyNTZzdW19CisgICAgICAgIGJiLmV2ZW50LkV2ZW50Ll9faW5pdF9fKHNlbGYpCisKIAogY2xhc3MgVVJJKG9iamVjdCk6CiAgICAgIiIiCkBAIC00MDMsOCArNDExLDYgQEAKIAogICAgIHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBzd2QsIHAgPSBkZWNvZGVkCiAKLSAgICBpZiBub3QgcGF0aDoKLSAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCdwYXRoJywgImVuY29kZWQgZnJvbSB0aGUgZGF0YSAlcyIgJSBzdHIoZGVjb2RlZCkpCiAgICAgaWYgbm90IHR5cGU6CiAgICAgICAgIHJhaXNlIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcigndHlwZScsICJlbmNvZGVkIGZyb20gdGhlIGRhdGEgJXMiICUgc3RyKGRlY29kZWQpKQogICAgIHVybCA9ICclczovLycgJSB0eXBlCkBAIC00MTUsMTcgKzQyMSwxOCBAQAogICAgICAgICB1cmwgKz0gIkAiCiAgICAgaWYgaG9zdCBhbmQgdHlwZSAhPSAiZmlsZSI6CiAgICAgICAgIHVybCArPSAiJXMiICUgaG9zdAotICAgICMgU3RhbmRhcmRpc2UgcGF0aCB0byBlbnN1cmUgY29tcGFyaXNvbnMgd29yawotICAgIHdoaWxlICcvLycgaW4gcGF0aDoKLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiLy8iLCAiLyIpCi0gICAgdXJsICs9ICIlcyIgJSB1cmxsaWIucGFyc2UucXVvdGUocGF0aCkKKyAgICBpZiBwYXRoOgorICAgICAgICAjIFN0YW5kYXJkaXNlIHBhdGggdG8gZW5zdXJlIGNvbXBhcmlzb25zIHdvcmsKKyAgICAgICAgd2hpbGUgJy8vJyBpbiBwYXRoOgorICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiLy8iLCAiLyIpCisgICAgICAgIHVybCArPSAiJXMiICUgdXJsbGliLnBhcnNlLnF1b3RlKHBhdGgpCiAgICAgaWYgcDoKICAgICAgICAgZm9yIHBhcm0gaW4gcDoKICAgICAgICAgICAgIHVybCArPSAiOyVzPSVzIiAlIChwYXJtLCBwW3Bhcm1dKQogCiAgICAgcmV0dXJuIHVybAogCi1kZWYgdXJpX3JlcGxhY2UodWQsIHVyaV9maW5kLCB1cmlfcmVwbGFjZSwgcmVwbGFjZW1lbnRzLCBkKToKK2RlZiB1cmlfcmVwbGFjZSh1ZCwgdXJpX2ZpbmQsIHVyaV9yZXBsYWNlLCByZXBsYWNlbWVudHMsIGQsIG1pcnJvcnRhcmJhbGw9Tm9uZSk6CiAgICAgaWYgbm90IHVkLnVybCBvciBub3QgdXJpX2ZpbmQgb3Igbm90IHVyaV9yZXBsYWNlOgogICAgICAgICBsb2dnZXIuZXJyb3IoInVyaV9yZXBsYWNlOiBwYXNzZWQgYW4gdW5kZWZpbmVkIHZhbHVlLCBub3QgcmVwbGFjaW5nIikKICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTQ1NSw3ICs0NjIsNyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdF9kZWNvZGVkW2xvY11ba10gPSB1cmlfcmVwbGFjZV9kZWNvZGVkW2xvY11ba10KICAgICAgICAgZWxpZiAocmUubWF0Y2gocmVnZXhwLCB1cmlfZGVjb2RlZFtsb2NdKSk6CiAgICAgICAgICAgICBpZiBub3QgdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdOgotICAgICAgICAgICAgICAgIHJlc3VsdF9kZWNvZGVkW2xvY10gPSAiIiAgICAKKyAgICAgICAgICAgICAgICByZXN1bHRfZGVjb2RlZFtsb2NdID0gIiIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmVwbGFjZW1lbnRzOgogICAgICAgICAgICAgICAgICAgICB1cmlfcmVwbGFjZV9kZWNvZGVkW2xvY10gPSB1cmlfcmVwbGFjZV9kZWNvZGVkW2xvY10ucmVwbGFjZShrLCByZXBsYWNlbWVudHNba10pCkBAIC00NjQsOSArNDcxLDkgQEAKICAgICAgICAgICAgIGlmIGxvYyA9PSAyOgogICAgICAgICAgICAgICAgICMgSGFuZGxlIHBhdGggbWFuaXB1bGF0aW9ucwogICAgICAgICAgICAgICAgIGJhc2VuYW1lID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIHVyaV9kZWNvZGVkWzBdICE9IHVyaV9yZXBsYWNlX2RlY29kZWRbMF0gYW5kIHVkLm1pcnJvcnRhcmJhbGw6CisgICAgICAgICAgICAgICAgaWYgdXJpX2RlY29kZWRbMF0gIT0gdXJpX3JlcGxhY2VfZGVjb2RlZFswXSBhbmQgbWlycm9ydGFyYmFsbDoKICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB1cmwgdHlwZXMgZGlmZmVyLCBtdXN0IGJlIGEgbWlycm9ydGFyYmFsbCBtYXBwaW5nCi0gICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZSh1ZC5taXJyb3J0YXJiYWxsKQorICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobWlycm9ydGFyYmFsbCkKICAgICAgICAgICAgICAgICAgICAgIyBLaWxsIHBhcmFtZXRlcnMsIHRoZXkgbWFrZSBubyBzZW5zZSBmb3IgbWlycm9yIHRhcmJhbGxzCiAgICAgICAgICAgICAgICAgICAgIHVyaV9kZWNvZGVkWzVdID0ge30KICAgICAgICAgICAgICAgICBlbGlmIHVkLmxvY2FscGF0aCBhbmQgdWQubWV0aG9kLnN1cHBvcnRzX2NoZWNrc3VtKHVkKToKQEAgLTU4NCw2ICs1OTEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKSkKICAgICAgICAgICAgIHJhaXNlIE5vQ2hlY2tzdW1FcnJvcignTWlzc2luZyBTUkNfVVJJIGNoZWNrc3VtJywgdWQudXJsKQogCisgICAgICAgIGJiLmV2ZW50LmZpcmUoTWlzc2luZ0NoZWNrc3VtRXZlbnQodWQudXJsLCBtZDVkYXRhLCBzaGEyNTZkYXRhKSwgZCkKKworICAgICAgICBpZiBzdHJpY3QgPT0gImlnbm9yZSI6CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIF9NRDVfS0VZOiBtZDVkYXRhLAorICAgICAgICAgICAgICAgIF9TSEEyNTZfS0VZOiBzaGEyNTZkYXRhCisgICAgICAgICAgICB9CisKICAgICAgICAgIyBMb2cgbWlzc2luZyBzdW1zIHNvIHVzZXIgY2FuIG1vcmUgZWFzaWx5IGFkZCB0aGVtCiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIG1kNSBTUkNfVVJJIGNoZWNrc3VtIGZvciAlcywgY29uc2lkZXIgYWRkaW5nIHRvIHRoZSByZWNpcGU6XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyInLApAQCAtNzMzLDcgKzc0OCw3IEBACiAgICAgSW4gdGhlIG11bHRpIFNDTSBjYXNlLCB3ZSBidWlsZCBhIHZhbHVlIGJhc2VkIG9uIFNSQ1JFVl9GT1JNQVQgd2hpY2ggbXVzdAogICAgIGhhdmUgYmVlbiBzZXQuCiAKLSAgICBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgd2UgcHV0IHRoZSBzdHJpbmcgIkFVVE9JTkMrIiBpbnRvIHJldHVybiB2YWx1ZSBpZiB0aGUgcmV2aXNpb25zIGFyZSBub3QgCisgICAgVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIHB1dCB0aGUgc3RyaW5nICJBVVRPSU5DKyIgaW50byByZXR1cm4gdmFsdWUgaWYgdGhlIHJldmlzaW9ucyBhcmUgbm90CiAgICAgaW5jcmVtZW50YWwsIG90aGVyIGNvZGUgaXMgdGhlbiByZXNwb25zaWJsZSBmb3IgdHVybmluZyB0aGF0IGludG8gYW4gaW5jcmVhc2luZyB2YWx1ZSAoaWYgbmVlZGVkKQogCiAgICAgQSBtZXRob2RfbmFtZSBjYW4gYmUgc3VwcGxpZWQgdG8gcmV0cmlldmUgYW4gYWx0ZXJuYXRpdmVseSBmb3JtYXR0ZWQgcmV2aXNpb24gZnJvbSBhIGZldGNoZXIsIGlmCkBAIC03ODUsNyArODAwLDcgQEAKICAgICBmb3JtYXQgPSByZS5zdWIobmFtZV90b19yZXZfcmUsIGxhbWJkYSBtYXRjaDogbmFtZV90b19yZXZbbWF0Y2guZ3JvdXAoMCldLCBmb3JtYXQpCiAKICAgICBpZiBzZWVuYXV0b2luYzoKLSAgICAgICBmb3JtYXQgPSAiQVVUT0lOQysiICsgZm9ybWF0CisgICAgICAgIGZvcm1hdCA9ICJBVVRPSU5DKyIgKyBmb3JtYXQKIAogICAgIHJldHVybiBmb3JtYXQKIApAQCAtODkyLDQ1ICs5MDcsNDcgQEAKICAgICByZXBsYWNlbWVudHNbIkJBU0VOQU1FIl0gPSBvcmlndWQucGF0aC5zcGxpdCgiLyIpWy0xXQogICAgIHJlcGxhY2VtZW50c1siTUlSUk9STkFNRSJdID0gb3JpZ3VkLmhvc3QucmVwbGFjZSgnOicsJy4nKSArIG9yaWd1ZC5wYXRoLnJlcGxhY2UoJy8nLCAnLicpLnJlcGxhY2UoJyonLCAnLicpCiAKLSAgICBkZWYgYWRkdXJpKHVkLCB1cmlzLCB1ZHMsIG1pcnJvcnMpOgorICAgIGRlZiBhZGR1cmkodWQsIHVyaXMsIHVkcywgbWlycm9ycywgdGFyYmFsbHMpOgogICAgICAgICBmb3IgbGluZSBpbiBtaXJyb3JzOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIChmaW5kLCByZXBsYWNlKSA9IGxpbmUKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBuZXd1cmkgPSB1cmlfcmVwbGFjZSh1ZCwgZmluZCwgcmVwbGFjZSwgcmVwbGFjZW1lbnRzLCBsZCkKLSAgICAgICAgICAgIGlmIG5vdCBuZXd1cmkgb3IgbmV3dXJpIGluIHVyaXMgb3IgbmV3dXJpID09IG9yaWd1ZC51cmw6Ci0gICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgbm90IHRydXN0ZWRfbmV0d29yayhsZCwgbmV3dXJpKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk1pcnJvciAlcyBub3QgaW4gdGhlIGxpc3Qgb2YgdHJ1c3RlZCBuZXR3b3Jrcywgc2tpcHBpbmciICUgIChuZXd1cmkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3IgdGFyYmFsbCBpbiB0YXJiYWxsczoKKyAgICAgICAgICAgICAgICBuZXd1cmkgPSB1cmlfcmVwbGFjZSh1ZCwgZmluZCwgcmVwbGFjZSwgcmVwbGFjZW1lbnRzLCBsZCwgdGFyYmFsbCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbmV3dXJpIG9yIG5ld3VyaSBpbiB1cmlzIG9yIG5ld3VyaSA9PSBvcmlndWQudXJsOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIG1pcnJvcnMgbWludXMgdGhlIGN1cnJlbnQgbGluZQotICAgICAgICAgICAgIyB0aGlzIHdpbGwgcHJldmVudCB1cyBmcm9tIHJlY3Vyc2l2ZWx5IHByb2Nlc3NpbmcgdGhlIHNhbWUgbGluZQotICAgICAgICAgICAgIyBhcyB3ZWxsIGFzIGluZGlyZWN0IHJlY3Vyc2lvbiBBIC0+IEIgLT4gQyAtPiBBCi0gICAgICAgICAgICBsb2NhbG1pcnJvcnMgPSBsaXN0KG1pcnJvcnMpCi0gICAgICAgICAgICBsb2NhbG1pcnJvcnMucmVtb3ZlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IHRydXN0ZWRfbmV0d29yayhsZCwgbmV3dXJpKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNaXJyb3IgJXMgbm90IGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgbmV0d29ya3MsIHNraXBwaW5nIiAlICAobmV3dXJpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5ld3VkID0gRmV0Y2hEYXRhKG5ld3VyaSwgbGQpCi0gICAgICAgICAgICAgICAgbmV3dWQuc2V0dXBfbG9jYWxwYXRoKGxkKQotICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNaXJyb3IgZmV0Y2ggZmFpbHVyZSBmb3IgdXJsICVzIChvcmlnaW5hbCB1cmw6ICVzKSIgJSAobmV3dXJpLCBvcmlndWQudXJsKSkKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgc3RyKGUpKQorICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgbWlycm9ycyBtaW51cyB0aGUgY3VycmVudCBsaW5lCisgICAgICAgICAgICAgICAgIyB0aGlzIHdpbGwgcHJldmVudCB1cyBmcm9tIHJlY3Vyc2l2ZWx5IHByb2Nlc3NpbmcgdGhlIHNhbWUgbGluZQorICAgICAgICAgICAgICAgICMgYXMgd2VsbCBhcyBpbmRpcmVjdCByZWN1cnNpb24gQSAtPiBCIC0+IEMgLT4gQQorICAgICAgICAgICAgICAgIGxvY2FsbWlycm9ycyA9IGxpc3QobWlycm9ycykKKyAgICAgICAgICAgICAgICBsb2NhbG1pcnJvcnMucmVtb3ZlKGxpbmUpCisKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgc2V0dXBfbG9jYWxwYXRoIG9mIGZpbGU6Ly8gdXJscyBtYXkgZmFpbCwgd2Ugc2hvdWxkIHN0aWxsIHNlZSAKLSAgICAgICAgICAgICAgICAgICAgIyBpZiBtaXJyb3JzIG9mIHRoZSB1cmwgZXhpc3QKLSAgICAgICAgICAgICAgICAgICAgYWRkdXJpKG5ld3VkLCB1cmlzLCB1ZHMsIGxvY2FsbWlycm9ycykKLSAgICAgICAgICAgICAgICBleGNlcHQgVW5ib3VuZExvY2FsRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBjb250aW51ZSAgIAotICAgICAgICAgICAgdXJpcy5hcHBlbmQobmV3dXJpKQotICAgICAgICAgICAgdWRzLmFwcGVuZChuZXd1ZCkKKyAgICAgICAgICAgICAgICAgICAgbmV3dWQgPSBGZXRjaERhdGEobmV3dXJpLCBsZCkKKyAgICAgICAgICAgICAgICAgICAgbmV3dWQuc2V0dXBfbG9jYWxwYXRoKGxkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk1pcnJvciBmZXRjaCBmYWlsdXJlIGZvciB1cmwgJXMgKG9yaWdpbmFsIHVybDogJXMpIiAlIChuZXd1cmksIG9yaWd1ZC51cmwpKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgc3RyKGUpKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNldHVwX2xvY2FscGF0aCBvZiBmaWxlOi8vIHVybHMgbWF5IGZhaWwsIHdlIHNob3VsZCBzdGlsbCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbWlycm9ycyBvZiB0aGUgdXJsIGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICBhZGR1cmkobmV3dWQsIHVyaXMsIHVkcywgbG9jYWxtaXJyb3JzLCB0YXJiYWxscykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuYm91bmRMb2NhbEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHVyaXMuYXBwZW5kKG5ld3VyaSkKKyAgICAgICAgICAgICAgICB1ZHMuYXBwZW5kKG5ld3VkKQogCi0gICAgICAgICAgICBhZGR1cmkobmV3dWQsIHVyaXMsIHVkcywgbG9jYWxtaXJyb3JzKQorICAgICAgICAgICAgICAgIGFkZHVyaShuZXd1ZCwgdXJpcywgdWRzLCBsb2NhbG1pcnJvcnMsIHRhcmJhbGxzKQogCi0gICAgYWRkdXJpKG9yaWd1ZCwgdXJpcywgdWRzLCBtaXJyb3JzKQorICAgIGFkZHVyaShvcmlndWQsIHVyaXMsIHVkcywgbWlycm9ycywgb3JpZ3VkLm1pcnJvcnRhcmJhbGxzIG9yIFtOb25lXSkKIAogICAgIHJldHVybiB1cmlzLCB1ZHMKIApAQCAtOTc1LDggKzk5Miw4IEBACiAgICAgICAgICMgV2UgbWF5IGJlIG9idGFpbmluZyBhIG1pcnJvciB0YXJiYWxsIHdoaWNoIG5lZWRzIGZ1cnRoZXIgcHJvY2Vzc2luZyBieSB0aGUgcmVhbCBmZXRjaGVyCiAgICAgICAgICMgSWYgdGhhdCB0YXJiYWxsIGlzIGEgbG9jYWwgZmlsZTovLyB3ZSBuZWVkIHRvIHByb3ZpZGUgYSBzeW1saW5rIHRvIGl0CiAgICAgICAgIGRsZGlyID0gbGQuZ2V0VmFyKCJETF9ESVIiKQotICAgICAgICBpZiBvcmlndWQubWlycm9ydGFyYmFsbCBhbmQgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpID09IG9zLnBhdGguYmFzZW5hbWUob3JpZ3VkLm1pcnJvcnRhcmJhbGwpIFwKLSAgICAgICAgICAgICAgICBhbmQgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpICE9IG9zLnBhdGguYmFzZW5hbWUob3JpZ3VkLmxvY2FscGF0aCk6CisKKyAgICAgICAgaWYgb3JpZ3VkLm1pcnJvcnRhcmJhbGxzIGFuZCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkgaW4gb3JpZ3VkLm1pcnJvcnRhcmJhbGxzIGFuZCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkgIT0gb3MucGF0aC5iYXNlbmFtZShvcmlndWQubG9jYWxwYXRoKToKICAgICAgICAgICAgICMgQ3JlYXRlIGRvbmVzdGFtcCBpbiBvbGQgZm9ybWF0IHRvIGF2b2lkIHRyaWdnZXJpbmcgYSByZS1kb3dubG9hZAogICAgICAgICAgICAgaWYgdWQuZG9uZXN0YW1wOgogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUodWQuZG9uZXN0YW1wKSkKQEAgLTk5Myw3ICsxMDEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgaWYgbm90IHZlcmlmeV9kb25lc3RhbXAob3JpZ3VkLCBsZCkgb3Igb3JpZ3VkLm1ldGhvZC5uZWVkX3VwZGF0ZShvcmlndWQsIGxkKToKICAgICAgICAgICAgICAgICBvcmlndWQubWV0aG9kLmRvd25sb2FkKG9yaWd1ZCwgbGQpCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvcmlndWQubWV0aG9kLCJidWlsZF9taXJyb3JfZGF0YSIpOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIob3JpZ3VkLm1ldGhvZCwgImJ1aWxkX21pcnJvcl9kYXRhIik6CiAgICAgICAgICAgICAgICAgICAgIG9yaWd1ZC5tZXRob2QuYnVpbGRfbWlycm9yX2RhdGEob3JpZ3VkLCBsZCkKICAgICAgICAgICAgIHJldHVybiBvcmlndWQubG9jYWxwYXRoCiAgICAgICAgICMgT3RoZXJ3aXNlIHRoZSByZXN1bHQgaXMgYSBsb2NhbCBmaWxlOi8vIGFuZCB3ZSBzeW1saW5rIHRvIGl0CkBAIC0xMDE1LDcgKzEwMzIsNyBAQAogCiAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKICAgICAgICAgaWYgZS5lcnJubyBpbiBbb3MuZXJybm8uRVNUQUxFXToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJTdGFsZSBFcnJvciBPYnNlcnZlZCAlcy4iICUgdWQudXJsKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlN0YWxlIEVycm9yIE9ic2VydmVkICVzLiIgJSB1ZC51cmwpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmFpc2UKIApAQCAtMTExNSw3ICsxMTMyLDcgQEAKICAgICBhdHRlbXB0cy5hcHBlbmQoIlNSQ1JFViIpCiAKICAgICBmb3IgYSBpbiBhdHRlbXB0czoKLSAgICAgICAgc3JjcmV2ID0gZC5nZXRWYXIoYSkgICAgICAgICAgICAgIAorICAgICAgICBzcmNyZXYgPSBkLmdldFZhcihhKQogICAgICAgICBpZiBzcmNyZXYgYW5kIHNyY3JldiAhPSAiSU5WQUxJRCI6CiAgICAgICAgICAgICBicmVhawogCkBAIC0xMTMwLDcgKzExNDcsNyBAQAogICAgICAgICBpZiBzcmNyZXYgPT0gIklOVkFMSUQiIG9yIG5vdCBzcmNyZXY6CiAgICAgICAgICAgICByZXR1cm4gcGFybXJldgogICAgICAgICBpZiBzcmNyZXYgIT0gcGFybXJldjoKLSAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIkNvbmZsaWN0aW5nIHJldmlzaW9ucyAoJXMgZnJvbSBTUkNSRVYgYW5kICVzIGZyb20gdGhlIHVybCkgZm91bmQsIHBsZWFzZSBzcGNpZnkgb25lIHZhbGlkIHZhbHVlIiAlIChzcmNyZXYsIHBhcm1yZXYpKQorICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiQ29uZmxpY3RpbmcgcmV2aXNpb25zICglcyBmcm9tIFNSQ1JFViBhbmQgJXMgZnJvbSB0aGUgdXJsKSBmb3VuZCwgcGxlYXNlIHNwZWNpZnkgb25lIHZhbGlkIHZhbHVlIiAlIChzcmNyZXYsIHBhcm1yZXYpKQogICAgICAgICByZXR1cm4gcGFybXJldgogCiAgICAgaWYgc3JjcmV2ID09ICJJTlZBTElEIiBvciBub3Qgc3JjcmV2OgpAQCAtMTE5MCw3ICsxMjA3LDcgQEAKICAgICAgICAgc2VsZi5sb2NhbGZpbGUgPSAiIgogICAgICAgICBzZWxmLmxvY2FscGF0aCA9IE5vbmUKICAgICAgICAgc2VsZi5sb2NrZmlsZSA9IE5vbmUKLSAgICAgICAgc2VsZi5taXJyb3J0YXJiYWxsID0gTm9uZQorICAgICAgICBzZWxmLm1pcnJvcnRhcmJhbGxzID0gW10KICAgICAgICAgc2VsZi5iYXNlbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5iYXNlcGF0aCA9IE5vbmUKICAgICAgICAgKHNlbGYudHlwZSwgc2VsZi5ob3N0LCBzZWxmLnBhdGgsIHNlbGYudXNlciwgc2VsZi5wc3dkLCBzZWxmLnBhcm0pID0gZGVjb2RldXJsKGQuZXhwYW5kKHVybCkpCkBAIC0xMjI4LDcgKzEyNDUsNyBAQAogICAgICAgICBmb3IgbSBpbiBtZXRob2RzOgogICAgICAgICAgICAgaWYgbS5zdXBwb3J0cyhzZWxmLCBkKToKICAgICAgICAgICAgICAgICBzZWxmLm1ldGhvZCA9IG0KLSAgICAgICAgICAgICAgICBicmVhayAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgIGlmIG5vdCBzZWxmLm1ldGhvZDoKICAgICAgICAgICAgIHJhaXNlIE5vTWV0aG9kRXJyb3IodXJsKQpAQCAtMTI2Myw3ICsxMjgwLDcgQEAKICAgICAgICAgZWxpZiBzZWxmLmJhc2VwYXRoIG9yIHNlbGYuYmFzZW5hbWU6CiAgICAgICAgICAgICBiYXNlcGF0aCA9IGRsZGlyICsgb3Muc2VwICsgKHNlbGYuYmFzZXBhdGggb3Igc2VsZi5iYXNlbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBiYi5mYXRhbCgiQ2FuJ3QgZGV0ZXJtaW5lIGxvY2sgcGF0aCBmb3IgdXJsICVzIiAlIHVybCkKKyAgICAgICAgICAgIGJiLmZhdGFsKCJDYW4ndCBkZXRlcm1pbmUgbG9jayBwYXRoIGZvciB1cmwgJXMiICUgdXJsKQogCiAgICAgICAgIHNlbGYuZG9uZXN0YW1wID0gYmFzZXBhdGggKyAnLmRvbmUnCiAgICAgICAgIHNlbGYubG9ja2ZpbGUgPSBiYXNlcGF0aCArICcubG9jaycKQEAgLTEzMjYsMTMgKzEzNDMsMTMgQEAKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih1cmxkYXRhLmxvY2FscGF0aCkgPT0gVHJ1ZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiB1cmxkYXRhLmxvY2FscGF0aC5maW5kKCIqIikgIT0gLTE6Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJlY29tbWVuZHNfY2hlY2tzdW0oc2VsZiwgdXJsZGF0YSk6CiAgICAgICAgICIiIgotICAgICAgICBJcyB0aGUgYmFja2VuZCBvbiB3aGVyZSBjaGVja3N1bW1pbmcgaXMgcmVjb21tZW5kZWQgKHNob3VsZCB3YXJuaW5ncyAKKyAgICAgICAgSXMgdGhlIGJhY2tlbmQgb24gd2hlcmUgY2hlY2tzdW1taW5nIGlzIHJlY29tbWVuZGVkIChzaG91bGQgd2FybmluZ3MKICAgICAgICAgYmUgZGlzcGxheWVkIGlmIHRoZXJlIGlzIG5vIGNoZWNrc3VtKT8KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTU0Miw2ICsxNTU5LDE0IEBACiAgICAgICAgIGtleSA9IHNlbGYuX3JldmlzaW9uX2tleSh1ZCwgZCwgbmFtZSkKICAgICAgICAgcmV0dXJuICIlcy0lcyIgJSAoa2V5LCBkLmdldFZhcigiUE4iKSBvciAiIikKIAorICAgIGRlZiBsYXRlc3RfdmVyc2lvbnN0cmluZyhzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIgorICAgICAgICBDb21wdXRlIHRoZSBsYXRlc3QgcmVsZWFzZSBuYW1lIGxpa2UgIngueS54IiBpbiAieC55LngrZ2l0SEFTSCIKKyAgICAgICAgYnkgc2VhcmNoaW5nIHRocm91Z2ggdGhlIHRhZ3Mgb3V0cHV0IG9mIGxzLXJlbW90ZSwgY29tcGFyaW5nCisgICAgICAgIHZlcnNpb25zIGFuZCByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgbWF0Y2ggYXMgYSAodmVyc2lvbiwgcmV2aXNpb24pIHBhaXIuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKCcnLCAnJykKKwogY2xhc3MgRmV0Y2gob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJscywgZCwgY2FjaGUgPSBUcnVlLCBsb2NhbG9ubHkgPSBGYWxzZSwgY29ubmVjdGlvbl9jYWNoZSA9IE5vbmUpOgogICAgICAgICBpZiBsb2NhbG9ubHkgYW5kIGNhY2hlOgpAQCAtMTYxMiw3ICsxNjM3LDcgQEAKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCBuZXR3b3JrKQotIAorCiAgICAgICAgICAgICAgICAgaWYgdmVyaWZ5X2RvbmVzdGFtcCh1ZCwgc2VsZi5kKSBhbmQgbm90IG0ubmVlZF91cGRhdGUodWQsIHNlbGYuZCk6CiAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHVkLmxvY2FscGF0aAogICAgICAgICAgICAgICAgIGVsaWYgbS50cnlfcHJlbWlycm9yKHVkLCBzZWxmLmQpOgpAQCAtMTcwOCw5ICsxNzMzLDggQEAKICAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCiAgICAgICAgICAgICBpZiBub3QgcmV0OgogICAgICAgICAgICAgICAgICMgTmV4dCB0cnkgY2hlY2tpbmcgZnJvbSB0aGUgb3JpZ2luYWwgdXJpLCB1Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKHNlbGYsIHVkLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldCA9IG0uY2hlY2tzdGF0dXMoc2VsZiwgdWQsIHNlbGYuZCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmV0OgogICAgICAgICAgICAgICAgICAgICAjIEZpbmFsbHksIHRyeSBjaGVja2luZyB1cmksIHUsIGZyb20gTUlSUk9SUwogICAgICAgICAgICAgICAgICAgICBtaXJyb3JzID0gbWlycm9yX2Zyb21fc3RyaW5nKHNlbGYuZC5nZXRWYXIoJ01JUlJPUlMnKSkKICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycywgVHJ1ZSkKQEAgLTE3MjAsNyArMTc0NCw3IEBACiAKICAgICBkZWYgdW5wYWNrKHNlbGYsIHJvb3QsIHVybHM9Tm9uZSk6CiAgICAgICAgICIiIgotICAgICAgICBDaGVjayBhbGwgdXJscyBleGlzdCB1cHN0cmVhbQorICAgICAgICBVbnBhY2sgdXJscyB0byByb290CiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG5vdCB1cmxzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQppbmRleCA3NDQyZjg0Li41ZWY4Y2Q2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQpAQCAtNzAsMTEgKzcwLDE0IEBACiAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVycm5vCitpbXBvcnQgZm5tYXRjaAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBiYgotaW1wb3J0IGVycm5vCiBpbXBvcnQgYmIucHJvZ3Jlc3MKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZApAQCAtMTcyLDE4ICsxNzUsNjYgQEAKICAgICAgICAgYnJhbmNoZXMgPSB1ZC5wYXJtLmdldCgiYnJhbmNoIiwgIm1hc3RlciIpLnNwbGl0KCcsJykKICAgICAgICAgaWYgbGVuKGJyYW5jaGVzKSAhPSBsZW4odWQubmFtZXMpOgogICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLlBhcmFtZXRlckVycm9yKCJUaGUgbnVtYmVyIG9mIG5hbWUgYW5kIGJyYW5jaCBwYXJhbWV0ZXJzIGlzIG5vdCBiYWxhbmNlZCIsIHVkLnVybCkKKworICAgICAgICB1ZC5jbG9uZWZsYWdzID0gIi1zIC1uIgorICAgICAgICBpZiB1ZC5iYXJlY2xvbmU6CisgICAgICAgICAgICB1ZC5jbG9uZWZsYWdzICs9ICIgLS1taXJyb3IiCisKKyAgICAgICAgdWQuc2hhbGxvdyA9IGQuZ2V0VmFyKCJCQl9HSVRfU0hBTExPVyIpID09ICIxIgorICAgICAgICB1ZC5zaGFsbG93X2V4dHJhX3JlZnMgPSAoZC5nZXRWYXIoIkJCX0dJVF9TSEFMTE9XX0VYVFJBX1JFRlMiKSBvciAiIikuc3BsaXQoKQorCisgICAgICAgIGRlcHRoX2RlZmF1bHQgPSBkLmdldFZhcigiQkJfR0lUX1NIQUxMT1dfREVQVEgiKQorICAgICAgICBpZiBkZXB0aF9kZWZhdWx0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlcHRoX2RlZmF1bHQgPSBpbnQoZGVwdGhfZGVmYXVsdCBvciAwKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLkZldGNoRXJyb3IoIkludmFsaWQgZGVwdGggZm9yIEJCX0dJVF9TSEFMTE9XX0RFUFRIOiAlcyIgJSBkZXB0aF9kZWZhdWx0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBkZXB0aF9kZWZhdWx0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLkZldGNoRXJyb3IoIkludmFsaWQgZGVwdGggZm9yIEJCX0dJVF9TSEFMTE9XX0RFUFRIOiAlcyIgJSBkZXB0aF9kZWZhdWx0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVwdGhfZGVmYXVsdCA9IDEKKyAgICAgICAgdWQuc2hhbGxvd19kZXB0aHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGE6IGRlcHRoX2RlZmF1bHQpCisKKyAgICAgICAgcmV2c19kZWZhdWx0ID0gZC5nZXRWYXIoIkJCX0dJVF9TSEFMTE9XX1JFVlMiLCBUcnVlKQorICAgICAgICB1ZC5zaGFsbG93X3JldnMgPSBbXQogICAgICAgICB1ZC5icmFuY2hlcyA9IHt9CiAgICAgICAgIGZvciBwb3MsIG5hbWUgaW4gZW51bWVyYXRlKHVkLm5hbWVzKToKICAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaGVzW3Bvc10KICAgICAgICAgICAgIHVkLmJyYW5jaGVzW25hbWVdID0gYnJhbmNoCiAgICAgICAgICAgICB1ZC51bnJlc29sdmVkcmV2W25hbWVdID0gYnJhbmNoCiAKKyAgICAgICAgICAgIHNoYWxsb3dfZGVwdGggPSBkLmdldFZhcigiQkJfR0lUX1NIQUxMT1dfREVQVEhfJXMiICUgbmFtZSkKKyAgICAgICAgICAgIGlmIHNoYWxsb3dfZGVwdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzaGFsbG93X2RlcHRoID0gaW50KHNoYWxsb3dfZGVwdGggb3IgMCkKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLkZldGNoRXJyb3IoIkludmFsaWQgZGVwdGggZm9yIEJCX0dJVF9TSEFMTE9XX0RFUFRIXyVzOiAlcyIgJSAobmFtZSwgc2hhbGxvd19kZXB0aCkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2hhbGxvd19kZXB0aCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5mZXRjaDIuRmV0Y2hFcnJvcigiSW52YWxpZCBkZXB0aCBmb3IgQkJfR0lUX1NIQUxMT1dfREVQVEhfJXM6ICVzIiAlIChuYW1lLCBzaGFsbG93X2RlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgdWQuc2hhbGxvd19kZXB0aHNbbmFtZV0gPSBzaGFsbG93X2RlcHRoCisKKyAgICAgICAgICAgIHJldnMgPSBkLmdldFZhcigiQkJfR0lUX1NIQUxMT1dfUkVWU18lcyIgJSBuYW1lKQorICAgICAgICAgICAgaWYgcmV2cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB1ZC5zaGFsbG93X3JldnMuZXh0ZW5kKHJldnMuc3BsaXQoKSkKKyAgICAgICAgICAgIGVsaWYgcmV2c19kZWZhdWx0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHVkLnNoYWxsb3dfcmV2cy5leHRlbmQocmV2c19kZWZhdWx0LnNwbGl0KCkpCisKKyAgICAgICAgaWYgKHVkLnNoYWxsb3cgYW5kCisgICAgICAgICAgICAgICAgbm90IHVkLnNoYWxsb3dfcmV2cyBhbmQKKyAgICAgICAgICAgICAgICBhbGwodWQuc2hhbGxvd19kZXB0aHNbbl0gPT0gMCBmb3IgbiBpbiB1ZC5uYW1lcykpOgorICAgICAgICAgICAgIyBTaGFsbG93IGRpc2FibGVkIGZvciB0aGlzIFVSTAorICAgICAgICAgICAgdWQuc2hhbGxvdyA9IEZhbHNlCisKICAgICAgICAgaWYgdWQudXNlaGVhZDoKICAgICAgICAgICAgIHVkLnVucmVzb2x2ZWRyZXZbJ2RlZmF1bHQnXSA9ICdIRUFEJwogCiAgICAgICAgIHVkLmJhc2VjbWQgPSBkLmdldFZhcigiRkVUQ0hDTURfZ2l0Iikgb3IgImdpdCAtYyBjb3JlLmZzeW5jb2JqZWN0ZmlsZXM9MCIKIAotICAgICAgICB1ZC53cml0ZV90YXJiYWxscyA9ICgoZC5nZXRWYXIoIkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyIpIG9yICIwIikgIT0gIjAiKSBvciB1ZC5yZWJhc2VhYmxlCisgICAgICAgIHdyaXRlX3RhcmJhbGxzID0gZC5nZXRWYXIoIkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyIpIG9yICIwIgorICAgICAgICB1ZC53cml0ZV90YXJiYWxscyA9IHdyaXRlX3RhcmJhbGxzICE9ICIwIiBvciB1ZC5yZWJhc2VhYmxlCisgICAgICAgIHVkLndyaXRlX3NoYWxsb3dfdGFyYmFsbHMgPSAoZC5nZXRWYXIoIkJCX0dFTkVSQVRFX1NIQUxMT1dfVEFSQkFMTFMiKSBvciB3cml0ZV90YXJiYWxscykgIT0gIjAiCiAKICAgICAgICAgdWQuc2V0dXBfcmV2aXNpb25zKGQpCiAKQEAgLTIwNSwxMyArMjU2LDQyIEBACiAgICAgICAgIGlmIHVkLnJlYmFzZWFibGU6CiAgICAgICAgICAgICBmb3IgbmFtZSBpbiB1ZC5uYW1lczoKICAgICAgICAgICAgICAgICBnaXRzcmNuYW1lID0gZ2l0c3JjbmFtZSArICdfJyArIHVkLnJldmlzaW9uc1tuYW1lXQotICAgICAgICB1ZC5taXJyb3J0YXJiYWxsID0gJ2dpdDJfJXMudGFyLmd6JyAlIGdpdHNyY25hbWUKLSAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIHVkLm1pcnJvcnRhcmJhbGwpCi0gICAgICAgIGdpdGRpciA9IGQuZ2V0VmFyKCJHSVRESVIiKSBvciAoZC5nZXRWYXIoIkRMX0RJUiIpICsgIi9naXQyLyIpCi0gICAgICAgIHVkLmNsb25lZGlyID0gb3MucGF0aC5qb2luKGdpdGRpciwgZ2l0c3JjbmFtZSkKIAorICAgICAgICBkbF9kaXIgPSBkLmdldFZhcigiRExfRElSIikKKyAgICAgICAgZ2l0ZGlyID0gZC5nZXRWYXIoIkdJVERJUiIpIG9yIChkbF9kaXIgKyAiL2dpdDIvIikKKyAgICAgICAgdWQuY2xvbmVkaXIgPSBvcy5wYXRoLmpvaW4oZ2l0ZGlyLCBnaXRzcmNuYW1lKQogICAgICAgICB1ZC5sb2NhbGZpbGUgPSB1ZC5jbG9uZWRpcgogCisgICAgICAgIG1pcnJvcnRhcmJhbGwgPSAnZ2l0Ml8lcy50YXIuZ3onICUgZ2l0c3JjbmFtZQorICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGRsX2RpciwgbWlycm9ydGFyYmFsbCkKKyAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KKyAgICAgICAgaWYgdWQuc2hhbGxvdzoKKyAgICAgICAgICAgIHRhcmJhbGxuYW1lID0gZ2l0c3JjbmFtZQorICAgICAgICAgICAgaWYgdWQuYmFyZWNsb25lOgorICAgICAgICAgICAgICAgIHRhcmJhbGxuYW1lID0gIiVzX2JhcmUiICUgdGFyYmFsbG5hbWUKKworICAgICAgICAgICAgaWYgdWQuc2hhbGxvd19yZXZzOgorICAgICAgICAgICAgICAgIHRhcmJhbGxuYW1lID0gIiVzXyVzIiAlICh0YXJiYWxsbmFtZSwgIl8iLmpvaW4oc29ydGVkKHVkLnNoYWxsb3dfcmV2cykpKQorCisgICAgICAgICAgICBmb3IgbmFtZSwgcmV2aXNpb24gaW4gc29ydGVkKHVkLnJldmlzaW9ucy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICB0YXJiYWxsbmFtZSA9ICIlc18lcyIgJSAodGFyYmFsbG5hbWUsIHVkLnJldmlzaW9uc1tuYW1lXVs6N10pCisgICAgICAgICAgICAgICAgZGVwdGggPSB1ZC5zaGFsbG93X2RlcHRoc1tuYW1lXQorICAgICAgICAgICAgICAgIGlmIGRlcHRoOgorICAgICAgICAgICAgICAgICAgICB0YXJiYWxsbmFtZSA9ICIlcy0lcyIgJSAodGFyYmFsbG5hbWUsIGRlcHRoKQorCisgICAgICAgICAgICBzaGFsbG93X3JlZnMgPSBbXQorICAgICAgICAgICAgaWYgbm90IHVkLm5vYnJhbmNoOgorICAgICAgICAgICAgICAgIHNoYWxsb3dfcmVmcy5leHRlbmQodWQuYnJhbmNoZXMudmFsdWVzKCkpCisgICAgICAgICAgICBpZiB1ZC5zaGFsbG93X2V4dHJhX3JlZnM6CisgICAgICAgICAgICAgICAgc2hhbGxvd19yZWZzLmV4dGVuZChyLnJlcGxhY2UoJ3JlZnMvaGVhZHMvJywgJycpLnJlcGxhY2UoJyonLCAnQUxMJykgZm9yIHIgaW4gdWQuc2hhbGxvd19leHRyYV9yZWZzKQorICAgICAgICAgICAgaWYgc2hhbGxvd19yZWZzOgorICAgICAgICAgICAgICAgIHRhcmJhbGxuYW1lID0gIiVzXyVzIiAlICh0YXJiYWxsbmFtZSwgIl8iLmpvaW4oc29ydGVkKHNoYWxsb3dfcmVmcykpLnJlcGxhY2UoJy8nLCAnLicpKQorCisgICAgICAgICAgICBmZXRjaGVyID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18ubG93ZXIoKQorICAgICAgICAgICAgdWQuc2hhbGxvd3RhcmJhbGwgPSAnJXNzaGFsbG93XyVzLnRhci5neicgJSAoZmV0Y2hlciwgdGFyYmFsbG5hbWUpCisgICAgICAgICAgICB1ZC5mdWxsc2hhbGxvdyA9IG9zLnBhdGguam9pbihkbF9kaXIsIHVkLnNoYWxsb3d0YXJiYWxsKQorICAgICAgICAgICAgdWQubWlycm9ydGFyYmFsbHMuaW5zZXJ0KDAsIHVkLnNoYWxsb3d0YXJiYWxsKQorCiAgICAgZGVmIGxvY2FscGF0aChzZWxmLCB1ZCwgZCk6CiAgICAgICAgIHJldHVybiB1ZC5jbG9uZWRpcgogCkBAIC0yMjEsNiArMzAxLDggQEAKICAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29udGFpbnNfcmVmKHVkLCBkLCBuYW1lLCB1ZC5jbG9uZWRpcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgdWQuc2hhbGxvdyBhbmQgdWQud3JpdGVfc2hhbGxvd190YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGlmIHVkLndyaXRlX3RhcmJhbGxzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTIzNyw4ICszMTksMTYgQEAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiJGZXRjaCB1cmwiIiIKIAotICAgICAgICAjIElmIHRoZSBjaGVja291dCBkb2Vzbid0IGV4aXN0IGFuZCB0aGUgbWlycm9yIHRhcmJhbGwgZG9lcywgZXh0cmFjdCBpdAotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQuY2xvbmVkaXIpIGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKKyAgICAgICAgbm9fY2xvbmUgPSBub3Qgb3MucGF0aC5leGlzdHModWQuY2xvbmVkaXIpCisgICAgICAgIG5lZWRfdXBkYXRlID0gbm9fY2xvbmUgb3Igc2VsZi5uZWVkX3VwZGF0ZSh1ZCwgZCkKKworICAgICAgICAjIEEgY3VycmVudCBjbG9uZSBpcyBwcmVmZXJyZWQgdG8gZWl0aGVyIHRhcmJhbGwsIGEgc2hhbGxvdyB0YXJiYWxsIGlzCisgICAgICAgICMgcHJlZmVycmVkIHRvIGFuIG91dCBvZiBkYXRlIGNsb25lLCBhbmQgYSBtaXNzaW5nIGNsb25lIHdpbGwgdXNlCisgICAgICAgICMgZWl0aGVyIHRhcmJhbGwuCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KSBhbmQgbmVlZF91cGRhdGU6CisgICAgICAgICAgICB1ZC5sb2NhbHBhdGggPSB1ZC5mdWxsc2hhbGxvdworICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcikgYW5kIG5vX2Nsb25lOgogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteHpmICVzIiAlIHVkLmZ1bGxtaXJyb3IsIGQsIHdvcmtkaXI9dWQuY2xvbmVkaXIpCiAKQEAgLTI4NCw5ICszNzQsMjEgQEAKICAgICAgICAgICAgICAgICByYWlzZSBiYi5mZXRjaDIuRmV0Y2hFcnJvcigiVW5hYmxlIHRvIGZpbmQgcmV2aXNpb24gJXMgaW4gYnJhbmNoICVzIGV2ZW4gZnJvbSB1cHN0cmVhbSIgJSAodWQucmV2aXNpb25zW25hbWVdLCB1ZC5icmFuY2hlc1tuYW1lXSkpCiAKICAgICBkZWYgYnVpbGRfbWlycm9yX2RhdGEoc2VsZiwgdWQsIGQpOgotICAgICAgICAjIEdlbmVyYXRlIGEgbWlycm9yIHRhcmJhbGwgaWYgbmVlZGVkCi0gICAgICAgIGlmIHVkLndyaXRlX3RhcmJhbGxzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICAjIGl0J3MgcG9zc2libGUgdGhhdCB0aGlzIHN5bWxpbmsgcG9pbnRzIHRvIHJlYWQtb25seSBmaWxlc3lzdGVtIHdpdGggUFJFTUlSUk9SCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIHVkLndyaXRlX3NoYWxsb3dfdGFyYmFsbHM6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQuZnVsbHNoYWxsb3cpOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHVkLmZ1bGxzaGFsbG93KToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHVkLmZ1bGxzaGFsbG93KQorICAgICAgICAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kLmdldFZhcignRExfRElSJykpCisgICAgICAgICAgICAgICAgc2hhbGxvd2Nsb25lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdnaXQnKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9uZV9zaGFsbG93X2xvY2FsKHVkLCBzaGFsbG93Y2xvbmUsIGQpCisKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNyZWF0aW5nIHRhcmJhbGwgb2YgZ2l0IHJlcG9zaXRvcnkiKQorICAgICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC1jemYgJXMgLiIgJSB1ZC5mdWxsc2hhbGxvdywgZCwgd29ya2Rpcj1zaGFsbG93Y2xvbmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0b3VjaCAlcy5kb25lIiAlIHVkLmZ1bGxzaGFsbG93LCBkKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh0ZW1wZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIGVsaWYgdWQud3JpdGVfdGFyYmFsbHMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHVkLmZ1bGxtaXJyb3IpOgogICAgICAgICAgICAgICAgIG9zLnVubGluayh1ZC5mdWxsbWlycm9yKQogCkBAIC0yOTQsNiArMzk2LDYyIEBACiAgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC1jemYgJXMgLiIgJSB1ZC5mdWxsbWlycm9yLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRvdWNoICVzLmRvbmUiICUgdWQuZnVsbG1pcnJvciwgZCkKIAorICAgIGRlZiBjbG9uZV9zaGFsbG93X2xvY2FsKHNlbGYsIHVkLCBkZXN0LCBkKToKKyAgICAgICAgIiIiQ2xvbmUgdGhlIHJlcG8gYW5kIG1ha2UgaXQgc2hhbGxvdy4KKworICAgICAgICBUaGUgdXBzdHJlYW0gdXJsIG9mIHRoZSBuZXcgY2xvbmUgaXNuJ3Qgc2V0IGF0IHRoaXMgdGltZSwgYXMgaXQnbGwgYmUKKyAgICAgICAgc2V0IGNvcnJlY3RseSB3aGVuIHVucGFja2VkLiIiIgorICAgICAgICBydW5mZXRjaGNtZCgiJXMgY2xvbmUgJXMgJXMgJXMiICUgKHVkLmJhc2VjbWQsIHVkLmNsb25lZmxhZ3MsIHVkLmNsb25lZGlyLCBkZXN0KSwgZCkKKworICAgICAgICB0b19wYXJzZSwgc2hhbGxvd19icmFuY2hlcyA9IFtdLCBbXQorICAgICAgICBmb3IgbmFtZSBpbiB1ZC5uYW1lczoKKyAgICAgICAgICAgIHJldmlzaW9uID0gdWQucmV2aXNpb25zW25hbWVdCisgICAgICAgICAgICBkZXB0aCA9IHVkLnNoYWxsb3dfZGVwdGhzW25hbWVdCisgICAgICAgICAgICBpZiBkZXB0aDoKKyAgICAgICAgICAgICAgICB0b19wYXJzZS5hcHBlbmQoJyVzfiVkXnt9JyAlIChyZXZpc2lvbiwgZGVwdGggLSAxKSkKKworICAgICAgICAgICAgIyBGb3Igbm9icmFuY2gsIHdlIG5lZWQgYSByZWYsIG90aGVyd2lzZSB0aGUgY29tbWl0cyB3aWxsIGJlCisgICAgICAgICAgICAjIHJlbW92ZWQsIGFuZCBmb3Igbm9uLW5vYnJhbmNoLCB3ZSB0cnVuY2F0ZSB0aGUgYnJhbmNoIHRvIG91cgorICAgICAgICAgICAgIyBzcmNyZXYsIHRvIGF2b2lkIGtlZXBpbmcgdW5uZWNlc3NhcnkgaGlzdG9yeSBiZXlvbmQgdGhhdC4KKyAgICAgICAgICAgIGJyYW5jaCA9IHVkLmJyYW5jaGVzW25hbWVdCisgICAgICAgICAgICBpZiB1ZC5ub2JyYW5jaDoKKyAgICAgICAgICAgICAgICByZWYgPSAicmVmcy9zaGFsbG93LyVzIiAlIG5hbWUKKyAgICAgICAgICAgIGVsaWYgdWQuYmFyZWNsb25lOgorICAgICAgICAgICAgICAgIHJlZiA9ICJyZWZzL2hlYWRzLyVzIiAlIGJyYW5jaAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZWYgPSAicmVmcy9yZW1vdGVzL29yaWdpbi8lcyIgJSBicmFuY2gKKworICAgICAgICAgICAgc2hhbGxvd19icmFuY2hlcy5hcHBlbmQocmVmKQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHVwZGF0ZS1yZWYgJXMgJXMiICUgKHVkLmJhc2VjbWQsIHJlZiwgcmV2aXNpb24pLCBkLCB3b3JrZGlyPWRlc3QpCisKKyAgICAgICAgIyBNYXAgc3JjcmV2K2RlcHRocyB0byByZXZpc2lvbnMKKyAgICAgICAgcGFyc2VkX2RlcHRocyA9IHJ1bmZldGNoY21kKCIlcyByZXYtcGFyc2UgJXMiICUgKHVkLmJhc2VjbWQsICIgIi5qb2luKHRvX3BhcnNlKSksIGQsIHdvcmtkaXI9ZGVzdCkKKworICAgICAgICAjIFJlc29sdmUgc3BlY2lmaWVkIHJldmlzaW9ucworICAgICAgICBwYXJzZWRfcmV2cyA9IHJ1bmZldGNoY21kKCIlcyByZXYtcGFyc2UgJXMiICUgKHVkLmJhc2VjbWQsICIgIi5qb2luKCciJXNee30iJyAlIHIgZm9yIHIgaW4gdWQuc2hhbGxvd19yZXZzKSksIGQsIHdvcmtkaXI9ZGVzdCkKKyAgICAgICAgc2hhbGxvd19yZXZpc2lvbnMgPSBwYXJzZWRfZGVwdGhzLnNwbGl0bGluZXMoKSArIHBhcnNlZF9yZXZzLnNwbGl0bGluZXMoKQorCisgICAgICAgICMgQXBwbHkgZXh0cmEgcmVmIHdpbGRjYXJkcworICAgICAgICBhbGxfcmVmcyA9IHJ1bmZldGNoY21kKCclcyBmb3ItZWFjaC1yZWYgIi0tZm9ybWF0PSUlKHJlZm5hbWUpIicgJSB1ZC5iYXNlY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIHdvcmtkaXI9ZGVzdCkuc3BsaXRsaW5lcygpCisgICAgICAgIGZvciByIGluIHVkLnNoYWxsb3dfZXh0cmFfcmVmczoKKyAgICAgICAgICAgIGlmIG5vdCB1ZC5iYXJlY2xvbmU6CisgICAgICAgICAgICAgICAgciA9IHIucmVwbGFjZSgncmVmcy9oZWFkcy8nLCAncmVmcy9yZW1vdGVzL29yaWdpbi8nKQorCisgICAgICAgICAgICBpZiAnKicgaW4gcjoKKyAgICAgICAgICAgICAgICBtYXRjaGVzID0gZmlsdGVyKGxhbWJkYSBhOiBmbm1hdGNoLmZubWF0Y2hjYXNlKGEsIHIpLCBhbGxfcmVmcykKKyAgICAgICAgICAgICAgICBzaGFsbG93X2JyYW5jaGVzLmV4dGVuZChtYXRjaGVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaGFsbG93X2JyYW5jaGVzLmFwcGVuZChyKQorCisgICAgICAgICMgTWFrZSB0aGUgcmVwb3NpdG9yeSBzaGFsbG93CisgICAgICAgIHNoYWxsb3dfY21kID0gWydnaXQnLCAnbWFrZS1zaGFsbG93JywgJy1zJ10KKyAgICAgICAgZm9yIGIgaW4gc2hhbGxvd19icmFuY2hlczoKKyAgICAgICAgICAgIHNoYWxsb3dfY21kLmFwcGVuZCgnLXInKQorICAgICAgICAgICAgc2hhbGxvd19jbWQuYXBwZW5kKGIpCisgICAgICAgIHNoYWxsb3dfY21kLmV4dGVuZChzaGFsbG93X3JldmlzaW9ucykKKyAgICAgICAgcnVuZmV0Y2hjbWQoc3VicHJvY2Vzcy5saXN0MmNtZGxpbmUoc2hhbGxvd19jbWQpLCBkLCB3b3JrZGlyPWRlc3QpCisKICAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKICAgICAgICAgIiIiIHVucGFjayB0aGUgZG93bmxvYWRlZCBzcmMgdG8gZGVzdGRpciIiIgogCkBAIC0zMTAsMTEgKzQ2OCwxMiBAQAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0ZGlyKToKICAgICAgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKGRlc3RkaXIpCiAKLSAgICAgICAgY2xvbmVmbGFncyA9ICItcyAtbiIKLSAgICAgICAgaWYgdWQuYmFyZWNsb25lOgotICAgICAgICAgICAgY2xvbmVmbGFncyArPSAiIC0tbWlycm9yIgorICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCAobm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKSBvciBzZWxmLm5lZWRfdXBkYXRlKHVkLCBkKSk6CisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXh6ZiAlcyIgJSB1ZC5mdWxsc2hhbGxvdywgZCwgd29ya2Rpcj1kZXN0ZGlyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGNsb25lICVzICVzLyAlcyIgJSAodWQuYmFzZWNtZCwgdWQuY2xvbmVmbGFncywgdWQuY2xvbmVkaXIsIGRlc3RkaXIpLCBkKQogCi0gICAgICAgIHJ1bmZldGNoY21kKCIlcyBjbG9uZSAlcyAlcy8gJXMiICUgKHVkLmJhc2VjbWQsIGNsb25lZmxhZ3MsIHVkLmNsb25lZGlyLCBkZXN0ZGlyKSwgZCkKICAgICAgICAgcmVwb3VybCA9IHNlbGYuX2dldF9yZXBvX3VybCh1ZCkKICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAlcyIgJSAodWQuYmFzZWNtZCwgcmVwb3VybCksIGQsIHdvcmtkaXI9ZGVzdGRpcikKICAgICAgICAgaWYgbm90IHVkLm5vY2hlY2tvdXQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdGFubmV4LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQppbmRleCBjNjZjMjExLi5hOWI2OWNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdGFubmV4LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkKQEAgLTMzLDYgKzMzLDExIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gdWQudHlwZSBpbiBbJ2dpdGFubmV4J10KIAorICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgorICAgICAgICBzdXBlcihHaXRBTk5FWCwgc2VsZikudXJsZGF0YV9pbml0KHVkLCBkKQorICAgICAgICBpZiB1ZC5zaGFsbG93OgorICAgICAgICAgICAgdWQuc2hhbGxvd19leHRyYV9yZWZzICs9IFsncmVmcy9oZWFkcy9naXQtYW5uZXgnLCAncmVmcy9oZWFkcy9zeW5jZWQvKiddCisKICAgICBkZWYgdXNlc19hbm5leChzZWxmLCB1ZCwgZCwgd2QpOgogICAgICAgICBmb3IgbmFtZSBpbiB1ZC5uYW1lczoKICAgICAgICAgICAgIHRyeToKQEAgLTU1LDkgKzYwLDIxIEBACiAgICAgZGVmIGRvd25sb2FkKHNlbGYsIHVkLCBkKToKICAgICAgICAgR2l0LmRvd25sb2FkKHNlbGYsIHVkLCBkKQogCi0gICAgICAgIGFubmV4ID0gc2VsZi51c2VzX2FubmV4KHVkLCBkLCB1ZC5jbG9uZWRpcikKLSAgICAgICAgaWYgYW5uZXg6Ci0gICAgICAgICAgICBzZWxmLnVwZGF0ZV9hbm5leCh1ZCwgZCwgdWQuY2xvbmVkaXIpCisgICAgICAgIGlmIG5vdCB1ZC5zaGFsbG93IG9yIHVkLmxvY2FscGF0aCAhPSB1ZC5mdWxsc2hhbGxvdzoKKyAgICAgICAgICAgIGlmIHNlbGYudXNlc19hbm5leCh1ZCwgZCwgdWQuY2xvbmVkaXIpOgorICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX2FubmV4KHVkLCBkLCB1ZC5jbG9uZWRpcikKKworICAgIGRlZiBjbG9uZV9zaGFsbG93X2xvY2FsKHNlbGYsIHVkLCBkZXN0LCBkKToKKyAgICAgICAgc3VwZXIoR2l0QU5ORVgsIHNlbGYpLmNsb25lX3NoYWxsb3dfbG9jYWwodWQsIGRlc3QsIGQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGFubmV4IGluaXQiICUgdWQuYmFzZWNtZCwgZCwgd29ya2Rpcj1kZXN0KQorICAgICAgICBleGNlcHQgYmIuZmV0Y2guRmV0Y2hFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLnVzZXNfYW5uZXgodWQsIGQsIGRlc3QpOgorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGFubmV4IGdldCIgJSB1ZC5iYXNlY21kLCBkLCB3b3JrZGlyPWRlc3QpCisgICAgICAgICAgICBydW5mZXRjaGNtZCgiY2htb2QgdSt3IC1SICVzLy5naXQvYW5uZXgiICUgKGRlc3QpLCBkLCBxdWlldD1UcnVlLCB3b3JrZGlyPWRlc3QpCiAKICAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKICAgICAgICAgR2l0LnVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5CmluZGV4IGE5NTU4NGMuLjBhZmYxMDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQpAQCAtMTE3LDE0ICsxMTcsMTkgQEAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgogICAgICAgICBHaXQuZG93bmxvYWQoc2VsZiwgdWQsIGQpCiAKLSAgICAgICAgc3VibW9kdWxlcyA9IHNlbGYudXNlc19zdWJtb2R1bGVzKHVkLCBkLCB1ZC5jbG9uZWRpcikKLSAgICAgICAgaWYgc3VibW9kdWxlczoKLSAgICAgICAgICAgIHNlbGYudXBkYXRlX3N1Ym1vZHVsZXModWQsIGQpCisgICAgICAgIGlmIG5vdCB1ZC5zaGFsbG93IG9yIHVkLmxvY2FscGF0aCAhPSB1ZC5mdWxsc2hhbGxvdzoKKyAgICAgICAgICAgIHN1Ym1vZHVsZXMgPSBzZWxmLnVzZXNfc3VibW9kdWxlcyh1ZCwgZCwgdWQuY2xvbmVkaXIpCisgICAgICAgICAgICBpZiBzdWJtb2R1bGVzOgorICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX3N1Ym1vZHVsZXModWQsIGQpCisKKyAgICBkZWYgY2xvbmVfc2hhbGxvd19sb2NhbChzZWxmLCB1ZCwgZGVzdCwgZCk6CisgICAgICAgIHN1cGVyKEdpdFNNLCBzZWxmKS5jbG9uZV9zaGFsbG93X2xvY2FsKHVkLCBkZXN0LCBkKQorCisgICAgICAgIHJ1bmZldGNoY21kKCdjcCAtZnBQUkggIiVzL21vZHVsZXMiICIlcy8iJyAlICh1ZC5jbG9uZWRpciwgb3MucGF0aC5qb2luKGRlc3QsICcuZ2l0JykpLCBkKQogCiAgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCk6CiAgICAgICAgIEdpdC51bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpCi0gICAgICAgIAotICAgICAgICBzdWJtb2R1bGVzID0gc2VsZi51c2VzX3N1Ym1vZHVsZXModWQsIGQsIHVkLmRlc3RkaXIpCi0gICAgICAgIGlmIHN1Ym1vZHVsZXM6CisKKyAgICAgICAgaWYgc2VsZi51c2VzX3N1Ym1vZHVsZXModWQsIGQsIHVkLmRlc3RkaXIpOgogICAgICAgICAgICAgcnVuZmV0Y2hjbWQodWQuYmFzZWNtZCArICIgY2hlY2tvdXQgIiArIHVkLnJldmlzaW9uc1t1ZC5uYW1lc1swXV0sIGQsIHdvcmtkaXI9dWQuZGVzdGRpcikKICAgICAgICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlIiwgZCwgd29ya2Rpcj11ZC5kZXN0ZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvaGcucHkKaW5kZXggYjVmMjY4Ni4uZDA4NTdlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CkBAIC03Niw4ICs3Niw5IEBACiAgICAgICAgICMgQ3JlYXRlIHBhdGhzIHRvIG1lcmN1cmlhbCBjaGVja291dHMKICAgICAgICAgaGdzcmNuYW1lID0gJyVzXyVzXyVzJyAlICh1ZC5tb2R1bGUucmVwbGFjZSgnLycsICcuJyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZC5ob3N0LCB1ZC5wYXRoLnJlcGxhY2UoJy8nLCAnLicpKQotICAgICAgICB1ZC5taXJyb3J0YXJiYWxsID0gJ2hnXyVzLnRhci5neicgJSBoZ3NyY25hbWUKLSAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIHVkLm1pcnJvcnRhcmJhbGwpCisgICAgICAgIG1pcnJvcnRhcmJhbGwgPSAnaGdfJXMudGFyLmd6JyAlIGhnc3JjbmFtZQorICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKKyAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KIAogICAgICAgICBoZ2RpciA9IGQuZ2V0VmFyKCJIR0RJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL2hnLyIpCiAgICAgICAgIHVkLnBrZ2RpciA9IG9zLnBhdGguam9pbihoZ2RpciwgaGdzcmNuYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQppbmRleCA3M2E3NWZlLi5iNWYxNDhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQpAQCAtOTEsOSArOTEsMTAgQEAKICAgICAgICAgdWQucHJlZml4ZGlyID0gcHJlZml4ZGlyCiAKICAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSAoKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIpICE9ICIwIikKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbCA9ICducG1fJXMtJXMudGFyLnh6JyAlICh1ZC5wa2duYW1lLCB1ZC52ZXJzaW9uKQotICAgICAgICB1ZC5taXJyb3J0YXJiYWxsID0gdWQubWlycm9ydGFyYmFsbC5yZXBsYWNlKCcvJywgJy0nKQotICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgdWQubWlycm9ydGFyYmFsbCkKKyAgICAgICAgbWlycm9ydGFyYmFsbCA9ICducG1fJXMtJXMudGFyLnh6JyAlICh1ZC5wa2duYW1lLCB1ZC52ZXJzaW9uKQorICAgICAgICBtaXJyb3J0YXJiYWxsID0gbWlycm9ydGFyYmFsbC5yZXBsYWNlKCcvJywgJy0nKQorICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKKyAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KIAogICAgIGRlZiBuZWVkX3VwZGF0ZShzZWxmLCB1ZCwgZCk6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCk6CkBAIC0yNjIsMjYgKzI2MywyNyBAQAogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteEpmICVzIiAlICh1ZC5mdWxsbWlycm9yKSwgZCwgd29ya2Rpcj1kZXN0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgc2h3cmYgPSBkLmdldFZhcignTlBNX1NIUklOS1dSQVAnKQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBzaHJpbmt3cmFwIGZpbGUgaXMgJXMiICUgc2h3cmYpCi0gICAgICAgIGlmIHNod3JmOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzaHdyZikgYXMgZGF0YWZpbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNocmlua29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9TSFJJTktXUkFQIGZpbGUgIiVzIiBmb3IgJXM6ICVzJyAlIChzaHdyZiwgdWQucGtnbmFtZSwgc3RyKGUpKSkKLSAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIHNocmlua3dyYXAgZmlsZSBpbiBOUE1fU0hSSU5LV1JBUCBmb3IgJXMsIHRoaXMgd2lsbCBsZWFkIHRvIHVucmVsaWFibGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQotICAgICAgICBsY2tkZiA9IGQuZ2V0VmFyKCdOUE1fTE9DS0RPV04nKQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBsb2NrZG93biBmaWxlIGlzICVzIiAlIGxja2RmKQotICAgICAgICBpZiBsY2tkZjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGNrZGYpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgICAgICAgICBsb2NrZG93biA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9MT0NLRE9XTiBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAobGNrZGYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCi0gICAgICAgIGVsaWYgbm90IHVkLmlnbm9yZV9jaGVja3N1bXM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBsb2NrZG93biBmaWxlIGluIE5QTV9MT0NLRE9XTiBmb3IgJXMsIHRoaXMgd2lsbCBsZWFkIHRvIHVucmVwcm9kdWNpYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKKyAgICAgICAgaWYgdWQucGFybS5nZXQoIm5vdmVyaWZ5IiwgTm9uZSkgIT0gJzEnOgorICAgICAgICAgICAgc2h3cmYgPSBkLmdldFZhcignTlBNX1NIUklOS1dSQVAnKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJOUE0gc2hyaW5rd3JhcCBmaWxlIGlzICVzIiAlIHNod3JmKQorICAgICAgICAgICAgaWYgc2h3cmY6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2h3cmYpIGFzIGRhdGFmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2hyaW5rb2JqID0ganNvbi5sb2FkKGRhdGFmaWxlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcignRXJyb3IgbG9hZGluZyBOUE1fU0hSSU5LV1JBUCBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAoc2h3cmYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCisgICAgICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIHNocmlua3dyYXAgZmlsZSBpbiBOUE1fU0hSSU5LV1JBUCBmb3IgJXMsIHRoaXMgd2lsbCBsZWFkIHRvIHVucmVsaWFibGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQorICAgICAgICAgICAgbGNrZGYgPSBkLmdldFZhcignTlBNX0xPQ0tET1dOJykKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTlBNIGxvY2tkb3duIGZpbGUgaXMgJXMiICUgbGNrZGYpCisgICAgICAgICAgICBpZiBsY2tkZjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihsY2tkZikgYXMgZGF0YWZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZG93biA9IGpzb24ubG9hZChkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoJ0Vycm9yIGxvYWRpbmcgTlBNX0xPQ0tET1dOIGZpbGUgIiVzIiBmb3IgJXM6ICVzJyAlIChsY2tkZiwgdWQucGtnbmFtZSwgc3RyKGUpKSkKKyAgICAgICAgICAgIGVsaWYgbm90IHVkLmlnbm9yZV9jaGVja3N1bXM6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3NpbmcgbG9ja2Rvd24gZmlsZSBpbiBOUE1fTE9DS0RPV04gZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlcHJvZHVjaWJsZSBidWlsZHMhJyAlIHVkLnBrZ25hbWUpCiAKICAgICAgICAgaWYgKCduYW1lJyBub3QgaW4gc2hyaW5rb2JqKToKICAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyh1ZC5wa2duYW1lLCBqc29uZGVwb2JqLCB1ZC52ZXJzaW9uLCBkLCB1ZCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcmVwby5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcmVwby5weQppbmRleCAxYmU5MWNjLi5jMjJkOWI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3JlcG8ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9yZXBvLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAorZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgbG9nZ2VyCiAKIGNsYXNzIFJlcG8oRmV0Y2hNZXRob2QpOgogICAgICIiIkNsYXNzIHRvIGZldGNoIGEgbW9kdWxlIG9yIG1vZHVsZXMgZnJvbSByZXBvIChnaXQpIHJlcG9zaXRvcmllcyIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CmluZGV4IGFlMGZmYTguLjdjNDljMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKQEAgLTMwLDYgKzMwLDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgb3MKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgZXJybm8KIGltcG9ydCBiYgogaW1wb3J0IGJiLnByb2dyZXNzCiBpbXBvcnQgdXJsbGliLnJlcXVlc3QsIHVybGxpYi5wYXJzZSwgdXJsbGliLmVycm9yCkBAIC04OSwxMyArOTAsMTMgQEAKIAogICAgICAgICBzZWxmLmJhc2VjbWQgPSBkLmdldFZhcigiRkVUQ0hDTURfd2dldCIpIG9yICIvdXNyL2Jpbi9lbnYgd2dldCAtdCAyIC1UIDMwIC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSIKIAotICAgIGRlZiBfcnVud2dldChzZWxmLCB1ZCwgZCwgY29tbWFuZCwgcXVpZXQpOgorICAgIGRlZiBfcnVud2dldChzZWxmLCB1ZCwgZCwgY29tbWFuZCwgcXVpZXQsIHdvcmtkaXI9Tm9uZSk6CiAKICAgICAgICAgcHJvZ3Jlc3NoYW5kbGVyID0gV2dldFByb2dyZXNzSGFuZGxlcihkKQogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRmV0Y2hpbmcgJXMgdXNpbmcgY29tbWFuZCAnJXMnIiAlICh1ZC51cmwsIGNvbW1hbmQpKQogICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgY29tbWFuZCwgdWQudXJsKQotICAgICAgICBydW5mZXRjaGNtZChjb21tYW5kICsgJyAtLXByb2dyZXNzPWRvdCAtdicsIGQsIHF1aWV0LCBsb2c9cHJvZ3Jlc3NoYW5kbGVyKQorICAgICAgICBydW5mZXRjaGNtZChjb21tYW5kICsgJyAtLXByb2dyZXNzPWRvdCAtdicsIGQsIHF1aWV0LCBsb2c9cHJvZ3Jlc3NoYW5kbGVyLCB3b3JrZGlyPXdvcmtkaXIpCiAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiJGZXRjaCB1cmxzIiIiCkBAIC0yMDYsOCArMjA3LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOiAjIFhYWCB3aGF0IGVycm9yPwogICAgICAgICAgICAgICAgICAgICAjIERvbid0IGNsb3NlIGNvbm5lY3Rpb24gd2hlbiBjYWNoZSBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICAjIEluc3RlYWQsIHRyeSB0byBkZXRlY3QgY29ubmVjdGlvbnMgdGhhdCBhcmUgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgICMgdXNhYmxlIChmb3IgZXhhbXBsZSwgY2xvc2VkIHVuZXhwZWN0ZWRseSkgYW5kIHJlbW92ZQorICAgICAgICAgICAgICAgICAgICAjIHRoZW0gZnJvbSB0aGUgY2FjaGUuCiAgICAgICAgICAgICAgICAgICAgIGlmIGZldGNoLmNvbm5lY3Rpb25fY2FjaGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXJyLCBPU0Vycm9yKSBhbmQgZXJyLmVycm5vID09IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgY29ubmVjdGlvbiBkZXNwaXRlIHRoZSBLZWVwLUFsaXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgIyBBcHBhcmVudGx5IHVybGxpYiB0aGVuIHVzZXMgdGhlIGZpbGUgZGVzY3JpcHRvciwgZXhwZWN0aW5nIGl0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3RlZCwgd2hlbiBpbiByZWFsaXR5IHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgZ29uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgbGV0IHRoZSByZXF1ZXN0IGZhaWwgYW5kIGV4cGVjdCBpdCB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgIyB0cmllZCBvbmNlIG1vcmUgKCJ0cnlfYWdhaW4iIGluIGNoZWNrX3N0YXR1cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgZGVhZCBjb25uZWN0aW9uIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGl0IHN0aWxsIGZhaWxzLCB3ZSBnaXZlIHVwLCB3aGljaCBjYW4gaGFwcGVuZCBmb3IgYmFkCisgICAgICAgICAgICAgICAgICAgICAgICAjIEhUVFAgcHJveHkgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaC5jb25uZWN0aW9uX2NhY2hlLnJlbW92ZV9jb25uZWN0aW9uKGguaG9zdCwgaC5wb3J0KQogICAgICAgICAgICAgICAgICAgICByYWlzZSB1cmxsaWIuZXJyb3IuVVJMRXJyb3IoZXJyKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTI2OSwxMSArMjgzLDYgQEAKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaHR0cF9lcnJvcl80MDMgPSBodHRwX2Vycm9yXzQwNQogCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIFNvbWUgc2VydmVycyAoZS5nLiBGdXNpb25Gb3JnZSkgcmV0dXJucyA0MDYgTm90IEFjY2VwdGFibGUgd2hlbiB0aGV5Ci0gICAgICAgICAgICBhY3R1YWxseSBtZWFuIDQwNSBNZXRob2QgTm90IEFsbG93ZWQuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGh0dHBfZXJyb3JfNDA2ID0gaHR0cF9lcnJvcl80MDUKIAogICAgICAgICBjbGFzcyBGaXhlZEhUVFBSZWRpcmVjdEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlcik6CiAgICAgICAgICAgICAiIiIKQEAgLTMwMiw3ICszMTEsOSBAQAogICAgICAgICAgICAgdXJpID0gdWQudXJsLnNwbGl0KCI7IilbMF0KICAgICAgICAgICAgIHIgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHVyaSkKICAgICAgICAgICAgIHIuZ2V0X21ldGhvZCA9IGxhbWJkYTogIkhFQUQiCi0KKyAgICAgICAgICAgICMgU29tZSBzZXJ2ZXJzIChGdXNpb25Gb3JnZSwgYXMgdXNlZCBvbiBBbGlvdGgpIHJlcXVpcmUgdGhhdCB0aGUKKyAgICAgICAgICAgICMgb3B0aW9uYWwgQWNjZXB0IGhlYWRlciBpcyBzZXQuCisgICAgICAgICAgICByLmFkZF9oZWFkZXIoIkFjY2VwdCIsICIqLyoiKQogICAgICAgICAgICAgZGVmIGFkZF9iYXNpY19hdXRoKGxvZ2luX3N0ciwgcmVxdWVzdCk6CiAgICAgICAgICAgICAgICAgJycnQWRkcyBCYXNpYyBhdXRoIHRvIGh0dHAgcmVxdWVzdCwgcGFzcyBpbiBsb2dpbjpwYXNzd29yZCBhcyBzdHJpbmcnJycKICAgICAgICAgICAgICAgICBpbXBvcnQgYmFzZTY0CkBAIC00MDgsMTcgKzQxOSwxNiBAQAogICAgICAgICBSdW4gZmV0Y2ggY2hlY2tzdGF0dXMgdG8gZ2V0IGRpcmVjdG9yeSBpbmZvcm1hdGlvbgogICAgICAgICAiIiIKICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0id2dldC1pbmRleC0iKSBhcyB3b3JrZGlyLCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPXdvcmtkaXIsIHByZWZpeD0id2dldC1saXN0aW5nLSIpIGFzIGY6CisgICAgICAgICAgICBhZ2VudCA9ICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuMTIpIEdlY2tvLzIwMTAxMDI3IFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjEyIgorICAgICAgICAgICAgZmV0Y2hjbWQgPSBzZWxmLmJhc2VjbWQKKyAgICAgICAgICAgIGZldGNoY21kICs9ICIgLU8gIiArIGYubmFtZSArICIgLS11c2VyLWFnZW50PSciICsgYWdlbnQgKyAiJyAnIiArIHVyaSArICInIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3J1bndnZXQodWQsIGQsIGZldGNoY21kLCBUcnVlLCB3b3JrZGlyPXdvcmtkaXIpCisgICAgICAgICAgICAgICAgZmV0Y2hyZXN1bHQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGZldGNocmVzdWx0ID0gIiIKIAotICAgICAgICBhZ2VudCA9ICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuMTIpIEdlY2tvLzIwMTAxMDI3IFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjEyIgotICAgICAgICBmZXRjaGNtZCA9IHNlbGYuYmFzZWNtZAotICAgICAgICBmZXRjaGNtZCArPSAiIC1PICIgKyBmLm5hbWUgKyAiIC0tdXNlci1hZ2VudD0nIiArIGFnZW50ICsgIicgJyIgKyB1cmkgKyAiJyIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcnVud2dldCh1ZCwgZCwgZmV0Y2hjbWQsIFRydWUpCi0gICAgICAgICAgICBmZXRjaHJlc3VsdCA9IGYucmVhZCgpCi0gICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGZldGNocmVzdWx0ID0gIiIKLQotICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIGZldGNocmVzdWx0CiAKICAgICBkZWYgX2NoZWNrX2xhdGVzdF92ZXJzaW9uKHNlbGYsIHVybCwgcGFja2FnZSwgcGFja2FnZV9yZWdleCwgY3VycmVudF92ZXJzaW9uLCB1ZCwgZCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbWFpbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tYWluLnB5CmluZGV4IDhjOTQ4YzIuLjc3MTFiMjkgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tYWluLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tYWluLnB5CkBAIC0yOCw2ICsyOCw4IEBACiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGZjbnRsCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjawogCiBpbXBvcnQgYmIKIGZyb20gYmIgaW1wb3J0IGV2ZW50CkBAIC0zNywxMSArMzksMTcgQEAKIGZyb20gYmIgaW1wb3J0IHNlcnZlcgogZnJvbSBiYiBpbXBvcnQgY29va2VyZGF0YQogCitpbXBvcnQgYmIuc2VydmVyLnByb2Nlc3MKK2ltcG9ydCBiYi5zZXJ2ZXIueG1scnBjY2xpZW50CisKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKIAogY2xhc3MgQkJNYWluRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAgcGFzcwogCitjbGFzcyBCQk1haW5GYXRhbChiYi5CQkhhbmRsZWRFeGNlcHRpb24pOgorICAgIHBhc3MKKwogZGVmIHByZXNlbnRfb3B0aW9ucyhvcHRpb25saXN0KToKICAgICBpZiBsZW4ob3B0aW9ubGlzdCkgPiAxOgogICAgICAgICByZXR1cm4gJyBvciAnLmpvaW4oWycsICcuam9pbihvcHRpb25saXN0WzotMV0pLCBvcHRpb25saXN0Wy0xXV0pCkBAIC01OCw5ICs2Niw2IEBACiAgICAgICAgIGlmIG9wdGlvbi5kZXN0ID09ICd1aSc6CiAgICAgICAgICAgICB2YWxpZF91aXMgPSBsaXN0X2V4dGVuc2lvbl9tb2R1bGVzKGJiLnVpLCAnbWFpbicpCiAgICAgICAgICAgICBvcHRpb24uaGVscCA9IG9wdGlvbi5oZWxwLnJlcGxhY2UoJ0BDSE9JQ0VTQCcsIHByZXNlbnRfb3B0aW9ucyh2YWxpZF91aXMpKQotICAgICAgICBlbGlmIG9wdGlvbi5kZXN0ID09ICdzZXJ2ZXJ0eXBlJzoKLSAgICAgICAgICAgIHZhbGlkX3NlcnZlcl90eXBlcyA9IGxpc3RfZXh0ZW5zaW9uX21vZHVsZXMoYmIuc2VydmVyLCAnQml0QmFrZVNlcnZlcicpCi0gICAgICAgICAgICBvcHRpb24uaGVscCA9IG9wdGlvbi5oZWxwLnJlcGxhY2UoJ0BDSE9JQ0VTQCcsIHByZXNlbnRfb3B0aW9ucyh2YWxpZF9zZXJ2ZXJfdHlwZXMpKQogCiAgICAgICAgIHJldHVybiBvcHRwYXJzZS5JbmRlbnRlZEhlbHBGb3JtYXR0ZXIuZm9ybWF0X29wdGlvbihzZWxmLCBvcHRpb24pCiAKQEAgLTE0OCwxMSArMTUzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIGFuZCBhbnl0aGluZyBkZXBlbmRpbmcgb24gaXQgY2Fubm90IGJlIGJ1aWx0LCBhcyBtdWNoIGFzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zc2libGUgd2lsbCBiZSBidWlsdCBiZWZvcmUgc3RvcHBpbmcuIikKIAotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWEiLCAiLS10cnlhbHRjb25maWdzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0idHJ5YWx0Y29uZmlncyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNvbnRpbnVlIHdpdGggYnVpbGRzIGJ5IHRyeWluZyB0byB1c2UgYWx0ZXJuYXRpdmUgcHJvdmlkZXJzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hlcmUgcG9zc2libGUuIikKLQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWYiLCAiLS1mb3JjZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRm9yY2UgdGhlIHNwZWNpZmllZCB0YXJnZXRzL3Rhc2sgdG8gcnVuIChpbnZhbGlkYXRpbmcgYW55ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhpc3Rpbmcgc3RhbXAgZmlsZSkuIikKQEAgLTIzOCwxMSArMjM4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1vcy5lbnZpcm9uLmdldCgnQklUQkFLRV9VSScsICdrbm90dHknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVGhlIHVzZXIgaW50ZXJmYWNlIHRvIHVzZSAoQENIT0lDRVNAIC0gZGVmYXVsdCAlZGVmYXVsdCkuIikKIAotICAgICAgICAjIEBDSE9JQ0VTQCBpcyBzdWJzdGl0dXRlZCBvdXQgYnkgQml0YmFrZUhlbHBGb3JtYXR0ZXIgYWJvdmUKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi10IiwgIi0tc2VydmVydHlwZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJzZXJ2ZXJ0eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1bInByb2Nlc3MiLCAieG1scnBjIl1bIkJCU0VSVkVSIiBpbiBvcy5lbnZpcm9uXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQ2hvb3NlIHdoaWNoIHNlcnZlciB0eXBlIHRvIHVzZSAoQENIT0lDRVNAIC0gZGVmYXVsdCAlZGVmYXVsdCkuIikKLQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdG9rZW4iLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ieG1scnBjdG9rZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PW9zLmVudmlyb24uZ2V0KCJCQlRPS0VOIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlNwZWNpZnkgdGhlIGNvbm5lY3Rpb24gdG9rZW4gdG8gYmUgdXNlZCB3aGVuIGNvbm5lY3RpbmcgIgpAQCAtMjU4LDE1ICsyNTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJpdGJha2Ugd2l0aG91dCBhIFVJLCBvbmx5IHN0YXJ0aW5nIGEgc2VydmVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKGNvb2tlcikgcHJvY2Vzcy4iKQogCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1mb3JlZ3JvdW5kIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJpdGJha2Ugc2VydmVyIGluIGZvcmVncm91bmQuIikKLQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLUIiLCAiLS1iaW5kIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImJpbmQiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJUaGUgbmFtZS9hZGRyZXNzIGZvciB0aGUgYml0YmFrZSBzZXJ2ZXIgdG8gYmluZCB0by4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJUaGUgbmFtZS9hZGRyZXNzIGZvciB0aGUgYml0YmFrZSB4bWxycGMgc2VydmVyIHRvIGJpbmQgdG8uIikKIAotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLVQiLCAiLS1pZGxlLXRpbWVvdXQiLCB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1pbnQob3MuZW52aXJvbi5nZXQoIkJCVElNRU9VVCIsICIwIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTZXQgdGltZW91dCB0byB1bmxvYWQgYml0YmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLVQiLCAiLS1pZGxlLXRpbWVvdXQiLCB0eXBlPWZsb2F0LCBkZXN0PSJzZXJ2ZXJfdGltZW91dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9b3MuZ2V0ZW52KCJCQl9TRVJWRVJfVElNRU9VVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTZXQgdGltZW91dCB0byB1bmxvYWQgYml0YmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHksICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldCB0byAtMSBtZWFucyBubyB1bmxvYWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQ6IEVudmlyb25tZW50IHZhcmlhYmxlIEJCX1NFUlZFUl9USU1FT1VULiIpCiAKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW5vLXNldHNjZW5lIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ibm9zZXRzY2VuZSIsIGRlZmF1bHQ9RmFsc2UsCkBAIC0yODMsNyArMjc3LDcgQEAKIAogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLW0iLCAiLS1raWxsLXNlcnZlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9ImtpbGxfc2VydmVyIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVGVybWluYXRlIHRoZSByZW1vdGUgc2VydmVyLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlRlcm1pbmF0ZSBhbnkgcnVubmluZyBiaXRiYWtlIHNlcnZlci4iKQogCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1vYnNlcnZlLW9ubHkiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJvYnNlcnZlX29ubHkiLCBkZWZhdWx0PUZhbHNlLApAQCAtMzIyLDcwICszMTYsMjAgQEAKICAgICAgICAgICAgIGV2ZW50bG9nID0gImJpdGJha2VfZXZlbnRsb2dfJXMuanNvbiIgJSBkYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKICAgICAgICAgICAgIG9wdGlvbnMud3JpdGVldmVudGxvZyA9IGV2ZW50bG9nCiAKLSAgICAgICAgIyBpZiBCQlNFUlZFUiBzYXlzIHRvIGF1dG9kZXRlY3QsIGxldCdzIGRvIHRoYXQKLSAgICAgICAgaWYgb3B0aW9ucy5yZW1vdGVfc2VydmVyOgotICAgICAgICAgICAgcG9ydCA9IC0xCi0gICAgICAgICAgICBpZiBvcHRpb25zLnJlbW90ZV9zZXJ2ZXIgIT0gJ2F1dG9zdGFydCc6Ci0gICAgICAgICAgICAgICAgaG9zdCwgcG9ydCA9IG9wdGlvbnMucmVtb3RlX3NlcnZlci5zcGxpdCgiOiIsIDIpCisgICAgICAgIGlmIG9wdGlvbnMuYmluZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjQ2hlY2tpbmcgdGhhdCB0aGUgcG9ydCBpcyBhIG51bWJlciBhbmQgaXMgYSAnOicgZGVsaW1pdGVkIHZhbHVlCisgICAgICAgICAgICAgICAgKGhvc3QsIHBvcnQpID0gb3B0aW9ucy5iaW5kLnNwbGl0KCc6JykKICAgICAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQpCi0gICAgICAgICAgICAjIHVzZSBhdXRvbWF0aWMgcG9ydCBpZiBwb3J0IHNldCB0byAtMSwgbWVhbnMgcmVhZCBpdCBmcm9tCi0gICAgICAgICAgICAjIHRoZSBiaXRiYWtlLmxvY2sgZmlsZTsgdGhpcyBpcyBhIGJpdCB0cmlja3ksIGJ1dCB3ZSBhbHdheXMgZXhwZWN0Ci0gICAgICAgICAgICAjIHRvIGJlIGluIHRoZSBiYXNlIG9mIHRoZSBidWlsZCBkaXJlY3RvcnkgaWYgd2UgbmVlZCB0byBoYXZlIGEKLSAgICAgICAgICAgICMgY2hhbmNlIHRvIHN0YXJ0IHRoZSBzZXJ2ZXIgbGF0ZXIsIGFueXdheQotICAgICAgICAgICAgaWYgcG9ydCA9PSAtMToKLSAgICAgICAgICAgICAgICBsb2NrX2xvY2F0aW9uID0gIi4vYml0YmFrZS5sb2NrIgotICAgICAgICAgICAgICAgICMgd2UgdHJ5IHRvIHJlYWQgdGhlIGFkZHJlc3MgYXQgYWxsIHRpbWVzOyBpZiB0aGUgc2VydmVyIGlzIG5vdCBzdGFydGVkLAotICAgICAgICAgICAgICAgICMgd2UnbGwgdHJ5IHRvIHN0YXJ0IGl0IGFmdGVyIHRoZSBmaXJzdCBjb25uZWN0IGZhaWxzLCBiZWxvdwotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbGYgPSBvcGVuKGxvY2tfbG9jYXRpb24sICdyJykKLSAgICAgICAgICAgICAgICAgICAgcmVtb3RlZGVmID0gbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBbaG9zdCwgcG9ydF0gPSByZW1vdGVkZWYuc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQpCi0gICAgICAgICAgICAgICAgICAgIGxmLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5yZW1vdGVfc2VydmVyID0gcmVtb3RlZGVmCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25zLnJlbW90ZV9zZXJ2ZXIgIT0gJ2F1dG9zdGFydCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZhaWxlZCB0byByZWFkIGJpdGJha2UubG9jayAoJXMpLCBpbnZhbGlkIHBvcnQiICUgc3RyKGUpKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLEluZGV4RXJyb3IpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IE1hbGZvcm1lZCBob3N0OnBvcnQgYmluZCBwYXJhbWV0ZXIiKQorICAgICAgICAgICAgb3B0aW9ucy54bWxycGNpbnRlcmZhY2UgPSAoaG9zdCwgcG9ydCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMueG1scnBjaW50ZXJmYWNlID0gKE5vbmUsIDApCiAKICAgICAgICAgcmV0dXJuIG9wdGlvbnMsIHRhcmdldHNbMTpdCiAKIAotZGVmIHN0YXJ0X3NlcnZlcihzZXJ2ZXJtb2R1bGUsIGNvbmZpZ1BhcmFtcywgY29uZmlndXJhdGlvbiwgZmVhdHVyZXMpOgotICAgIHNlcnZlciA9IHNlcnZlcm1vZHVsZS5CaXRCYWtlU2VydmVyKCkKLSAgICBzaW5nbGVfdXNlID0gbm90IGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seSBhbmQgb3MuZ2V0ZW52KCdCQlNFUlZFUicpICE9ICdhdXRvc3RhcnQnCi0gICAgaWYgY29uZmlnUGFyYW1zLmJpbmQ6Ci0gICAgICAgIChob3N0LCBwb3J0KSA9IGNvbmZpZ1BhcmFtcy5iaW5kLnNwbGl0KCc6JykKLSAgICAgICAgc2VydmVyLmluaXRTZXJ2ZXIoKGhvc3QsIGludChwb3J0KSksIHNpbmdsZV91c2U9c2luZ2xlX3VzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PWNvbmZpZ1BhcmFtcy5pZGxlX3RpbWVvdXQpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlID0gW3NlcnZlci5zZXJ2ZXJJbXBsLmhvc3QsIHNlcnZlci5zZXJ2ZXJJbXBsLnBvcnRdCi0gICAgZWxzZToKLSAgICAgICAgc2VydmVyLmluaXRTZXJ2ZXIoc2luZ2xlX3VzZT1zaW5nbGVfdXNlKQotICAgICAgICBjb25maWd1cmF0aW9uLmludGVyZmFjZSA9IFtdCi0KLSAgICB0cnk6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0U2VydmVyUmVnSWRsZUNhbGxiYWNrKHNlcnZlci5nZXRTZXJ2ZXJJZGxlQ0IoKSkKLQotICAgICAgICBjb29rZXIgPSBiYi5jb29rZXIuQkJDb29rZXIoY29uZmlndXJhdGlvbiwgZmVhdHVyZXMpCi0KLSAgICAgICAgc2VydmVyLmFkZGNvb2tlcihjb29rZXIpCi0gICAgICAgIHNlcnZlci5zYXZlQ29ubmVjdGlvbkRldGFpbHMoKQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgd2hpbGUgaGFzYXR0cihzZXJ2ZXIsICJldmVudF9xdWV1ZSIpOgotICAgICAgICAgICAgaW1wb3J0IHF1ZXVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIuZXZlbnRfcXVldWUuZ2V0KGJsb2NrPUZhbHNlKQotICAgICAgICAgICAgZXhjZXB0IChxdWV1ZS5FbXB0eSwgSU9FcnJvcik6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQotICAgICAgICByYWlzZQotICAgIGlmIG5vdCBjb25maWdQYXJhbXMuZm9yZWdyb3VuZDoKLSAgICAgICAgc2VydmVyLmRldGFjaCgpCi0gICAgICAgIGNvb2tlci5zaHV0ZG93bigpCi0gICAgY29va2VyLmxvY2suY2xvc2UoKQotICAgIHJldHVybiBzZXJ2ZXIKLQotCiBkZWYgYml0YmFrZV9tYWluKGNvbmZpZ1BhcmFtcywgY29uZmlndXJhdGlvbik6CiAKICAgICAjIFB5dGhvbiBtdWx0aXByb2Nlc3NpbmcgcmVxdWlyZXMgL2Rldi9zaG0gb24gTGludXgKQEAgLTQwNiw0NSArMzUwLDE1IEBACiAKICAgICBjb25maWd1cmF0aW9uLnNldENvbmZpZ1BhcmFtZXRlcnMoY29uZmlnUGFyYW1zKQogCi0gICAgaWYgY29uZmlnUGFyYW1zLnNlcnZlcl9vbmx5OgotICAgICAgICBpZiBjb25maWdQYXJhbXMuc2VydmVydHlwZSAhPSAieG1scnBjIjoKLSAgICAgICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IElmICctLXNlcnZlci1vbmx5JyBpcyBkZWZpbmVkLCB3ZSBtdXN0IHNldCB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJ0eXBlIGFzICd4bWxycGMnLlxuIikKLSAgICAgICAgaWYgbm90IGNvbmZpZ1BhcmFtcy5iaW5kOgotICAgICAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGQVRBTDogVGhlICctLXNlcnZlci1vbmx5JyBvcHRpb24gcmVxdWlyZXMgYSBuYW1lL2FkZHJlc3MgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBiaW5kIHRvIHdpdGggdGhlIC1CIG9wdGlvbi5cbiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgI0NoZWNraW5nIHRoYXQgdGhlIHBvcnQgaXMgYSBudW1iZXIKLSAgICAgICAgICAgICAgICBpbnQoY29uZmlnUGFyYW1zLmJpbmQuc3BsaXQoIjoiKVsxXSkKLSAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvcixJbmRleEVycm9yKToKLSAgICAgICAgICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAiRkFUQUw6IE1hbGZvcm1lZCBob3N0OnBvcnQgYmluZCBwYXJhbWV0ZXIiKQotICAgICAgICBpZiBjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlcjoKKyAgICBpZiBjb25maWdQYXJhbXMuc2VydmVyX29ubHkgYW5kIGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyOgogICAgICAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGQVRBTDogVGhlICctLXNlcnZlci1vbmx5JyBvcHRpb24gY29uZmxpY3RzIHdpdGggJXMuXG4iICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInRoZSBCQlNFUlZFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSIgaWYgIkJCU0VSVkVSIiBpbiBvcy5lbnZpcm9uIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAidGhlICctLXJlbW90ZS1zZXJ2ZXInIG9wdGlvbiIpKQogCi0gICAgZWxpZiBjb25maWdQYXJhbXMuZm9yZWdyb3VuZDoKLSAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGQVRBTDogVGhlICctLWZvcmVncm91bmQnIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIC0tc2VydmVyLW9ubHkuXG4iKQotCi0gICAgaWYgY29uZmlnUGFyYW1zLmJpbmQgYW5kIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJ0eXBlICE9ICJ4bWxycGMiOgotICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZBVEFMOiBJZiAnLUInIG9yICctLWJpbmQnIGlzIGRlZmluZWQsIHdlIG11c3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldCB0aGUgc2VydmVydHlwZSBhcyAneG1scnBjJy5cbiIpCi0KLSAgICBpZiBjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciBhbmQgY29uZmlnUGFyYW1zLnNlcnZlcnR5cGUgIT0gInhtbHJwYyI6Ci0gICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IElmICctLXJlbW90ZS1zZXJ2ZXInIGlzIGRlZmluZWQsIHdlIG11c3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldCB0aGUgc2VydmVydHlwZSBhcyAneG1scnBjJy5cbiIpCi0KLSAgICBpZiBjb25maWdQYXJhbXMub2JzZXJ2ZV9vbmx5IGFuZCAobm90IGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyIG9yIGNvbmZpZ1BhcmFtcy5iaW5kKToKKyAgICBpZiBjb25maWdQYXJhbXMub2JzZXJ2ZV9vbmx5IGFuZCBub3QgKGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyIG9yIGNvbmZpZ1BhcmFtcy5iaW5kKToKICAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGQVRBTDogJy0tb2JzZXJ2ZS1vbmx5JyBjYW4gb25seSBiZSB1c2VkIGJ5IFVJIGNsaWVudHMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbm5lY3RpbmcgdG8gYSBzZXJ2ZXIuXG4iKQogCi0gICAgaWYgY29uZmlnUGFyYW1zLmtpbGxfc2VydmVyIGFuZCBub3QgY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXI6Ci0gICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6ICctLWtpbGwtc2VydmVyJyBjYW4gb25seSBiZSB1c2VkIHRvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXJtaW5hdGUgYSByZW1vdGUgc2VydmVyIikKLQogICAgIGlmICJCQkRFQlVHIiBpbiBvcy5lbnZpcm9uOgogICAgICAgICBsZXZlbCA9IGludChvcy5lbnZpcm9uWyJCQkRFQlVHIl0pCiAgICAgICAgIGlmIGxldmVsID4gY29uZmlndXJhdGlvbi5kZWJ1ZzoKQEAgLTQ1Myw5ICszNjcsMTMgQEAKICAgICBiYi5tc2cuaW5pdF9tc2djb25maWcoY29uZmlnUGFyYW1zLnZlcmJvc2UsIGNvbmZpZ3VyYXRpb24uZGVidWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uZGVidWdfZG9tYWlucykKIAotICAgIHNlcnZlciwgc2VydmVyX2Nvbm5lY3Rpb24sIHVpX21vZHVsZSA9IHNldHVwX2JpdGJha2UoY29uZmlnUGFyYW1zLCBjb25maWd1cmF0aW9uKQotICAgIGlmIHNlcnZlcl9jb25uZWN0aW9uIGlzIE5vbmUgYW5kIGNvbmZpZ1BhcmFtcy5raWxsX3NlcnZlcjoKLSAgICAgICAgcmV0dXJuIDAKKyAgICBzZXJ2ZXJfY29ubmVjdGlvbiwgdWlfbW9kdWxlID0gc2V0dXBfYml0YmFrZShjb25maWdQYXJhbXMsIGNvbmZpZ3VyYXRpb24pCisgICAgIyBObyBzZXJ2ZXIgY29ubmVjdGlvbgorICAgIGlmIHNlcnZlcl9jb25uZWN0aW9uIGlzIE5vbmU6CisgICAgICAgIGlmIGNvbmZpZ1BhcmFtcy5zdGF0dXNfb25seToKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGlmIGNvbmZpZ1BhcmFtcy5raWxsX3NlcnZlcjoKKyAgICAgICAgICAgIHJldHVybiAwCiAKICAgICBpZiBub3QgY29uZmlnUGFyYW1zLnNlcnZlcl9vbmx5OgogICAgICAgICBpZiBjb25maWdQYXJhbXMuc3RhdHVzX29ubHk6CkBAIC00NjMsMTYgKzM4MSwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIDAKIAogICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgZXZlbnQgaW4gYmIuZXZlbnQudWlfcXVldWU6CisgICAgICAgICAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24uZXZlbnRzLnF1ZXVlX2V2ZW50KGV2ZW50KQorICAgICAgICAgICAgYmIuZXZlbnQudWlfcXVldWUgPSBbXQorCiAgICAgICAgICAgICByZXR1cm4gdWlfbW9kdWxlLm1haW4oc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbiwgc2VydmVyX2Nvbm5lY3Rpb24uZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1BhcmFtcykKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGJiLmV2ZW50LnVpX3F1ZXVlID0gW10KICAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uLnRlcm1pbmF0ZSgpCiAgICAgZWxzZToKLSAgICAgICAgcHJpbnQoIkJpdGJha2Ugc2VydmVyIGFkZHJlc3M6ICVzLCBzZXJ2ZXIgcG9ydDogJXMiICUgKHNlcnZlci5zZXJ2ZXJJbXBsLmhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuc2VydmVySW1wbC5wb3J0KSkKLSAgICAgICAgaWYgY29uZmlnUGFyYW1zLmZvcmVncm91bmQ6Ci0gICAgICAgICAgICBzZXJ2ZXIuc2VydmVySW1wbC5zZXJ2ZV9mb3JldmVyKCkKICAgICAgICAgcmV0dXJuIDAKIAogICAgIHJldHVybiAxCkBAIC00OTUsNTggKzQxMiw5MyBAQAogICAgICAgICAjIENvbGxlY3QgdGhlIGZlYXR1cmUgc2V0IGZvciB0aGUgVUkKICAgICAgICAgZmVhdHVyZXNldCA9IGdldGF0dHIodWlfbW9kdWxlLCAiZmVhdHVyZVNldCIsIFtdKQogCi0gICAgaWYgY29uZmlnUGFyYW1zLnNlcnZlcl9vbmx5OgotICAgICAgICBmb3IgcGFyYW0gaW4gKCdwcmVmaWxlJywgJ3Bvc3RmaWxlJyk6Ci0gICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIoY29uZmlnUGFyYW1zLCBwYXJhbSkKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIHNldGF0dHIoY29uZmlndXJhdGlvbiwgIiVzX3NlcnZlciIgJSBwYXJhbSwgdmFsdWUpCi0gICAgICAgICAgICAgICAgcGFyYW0gPSAiJXNfc2VydmVyIiAlIHBhcmFtCi0KICAgICBpZiBleHRyYWZlYXR1cmVzOgogICAgICAgICBmb3IgZmVhdHVyZSBpbiBleHRyYWZlYXR1cmVzOgogICAgICAgICAgICAgaWYgbm90IGZlYXR1cmUgaW4gZmVhdHVyZXNldDoKICAgICAgICAgICAgICAgICBmZWF0dXJlc2V0LmFwcGVuZChmZWF0dXJlKQogCi0gICAgc2VydmVybW9kdWxlID0gaW1wb3J0X2V4dGVuc2lvbl9tb2R1bGUoYmIuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdQYXJhbXMuc2VydmVydHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JpdEJha2VTZXJ2ZXInKQorICAgIHNlcnZlcl9jb25uZWN0aW9uID0gTm9uZQorCiAgICAgaWYgY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXI6Ci0gICAgICAgIGlmIG9zLmdldGVudignQkJTRVJWRVInKSA9PSAnYXV0b3N0YXJ0JzoKLSAgICAgICAgICAgIGlmIGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyID09ICdhdXRvc3RhcnQnIG9yIFwKLSAgICAgICAgICAgICAgIG5vdCBzZXJ2ZXJtb2R1bGUuY2hlY2tfY29ubmVjdGlvbihjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciwgdGltZW91dD0yKToKLSAgICAgICAgICAgICAgICBjb25maWdQYXJhbXMuYmluZCA9ICdsb2NhbGhvc3Q6MCcKLSAgICAgICAgICAgICAgICBzcnYgPSBzdGFydF9zZXJ2ZXIoc2VydmVybW9kdWxlLCBjb25maWdQYXJhbXMsIGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzZXQpCi0gICAgICAgICAgICAgICAgY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXIgPSAnJXM6JWQnICUgdHVwbGUoY29uZmlndXJhdGlvbi5pbnRlcmZhY2UpCi0gICAgICAgICAgICAgICAgYmIuZXZlbnQudWlfcXVldWUgPSBbXQotICAgICAgICAjIHdlIHN0YXJ0IGEgc3R1YiBzZXJ2ZXIgdGhhdCBpcyBhY3R1YWxseSBhIFhNTFJQQ2xpZW50IHRoYXQgY29ubmVjdHMgdG8gYSByZWFsIHNlcnZlcgotICAgICAgICBmcm9tIGJiLnNlcnZlci54bWxycGMgaW1wb3J0IEJpdEJha2VYTUxSUENDbGllbnQKLSAgICAgICAgc2VydmVyID0gc2VydmVybW9kdWxlLkJpdEJha2VYTUxSUENDbGllbnQoY29uZmlnUGFyYW1zLm9ic2VydmVfb25seSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnUGFyYW1zLnhtbHJwY3Rva2VuKQotICAgICAgICBzZXJ2ZXIuc2F2ZUNvbm5lY3Rpb25EZXRhaWxzKGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyKQorICAgICAgICAjIENvbm5lY3QgdG8gYSByZW1vdGUgWE1MUlBDIHNlcnZlcgorICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbiA9IGJiLnNlcnZlci54bWxycGNjbGllbnQuY29ubmVjdFhNTFJQQyhjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciwgZmVhdHVyZXNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnUGFyYW1zLm9ic2VydmVfb25seSwgY29uZmlnUGFyYW1zLnhtbHJwY3Rva2VuKQogICAgIGVsc2U6Ci0gICAgICAgICMgd2Ugc3RhcnQgYSBzZXJ2ZXIgd2l0aCBhIGdpdmVuIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VydmVyID0gc3RhcnRfc2VydmVyKHNlcnZlcm1vZHVsZSwgY29uZmlnUGFyYW1zLCBjb25maWd1cmF0aW9uLCBmZWF0dXJlc2V0KQorICAgICAgICByZXRyaWVzID0gOAorICAgICAgICB3aGlsZSByZXRyaWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRvcGRpciwgbG9jayA9IGxvY2tCaXRiYWtlKCkKKyAgICAgICAgICAgICAgICBzb2NrbmFtZSA9IHRvcGRpciArICIvYml0YmFrZS5zb2NrIgorICAgICAgICAgICAgICAgIGlmIGxvY2s6CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbmZpZ1BhcmFtcy5zdGF0dXNfb25seSBvciBjb25maWdQYXJhbXMua2lsbF9zZXJ2ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYml0YmFrZSBzZXJ2ZXIgaXMgbm90IHJ1bm5pbmcuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2suY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBzdGFydCBhIHNlcnZlciB3aXRoIGEgZ2l2ZW4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4iKQorICAgICAgICAgICAgICAgICAgICAjIENsZWFyIHRoZSBldmVudCBxdWV1ZSBzaW5jZSB3ZSBhbHJlYWR5IGRpc3BsYXllZCBtZXNzYWdlcworICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC51aV9xdWV1ZSA9IFtdCisgICAgICAgICAgICAgICAgICAgIHNlcnZlciA9IGJiLnNlcnZlci5wcm9jZXNzLkJpdEJha2VTZXJ2ZXIobG9jaywgc29ja25hbWUsIGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzZXQpCisKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiUmVjb25uZWN0aW5nIHRvIGJpdGJha2Ugc2VydmVyLi4uIikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNvY2tuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJQcmV2aW91cyBiaXRiYWtlIGluc3RhbmNlIHNodXR0aW5nIGRvd24/LCB3YWl0aW5nIHRvIHJldHJ5Li4uIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBXYWl0IGZvciA1cyBvciB1bnRpbCB3ZSBjYW4gZ2V0IHRoZSBsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3QgbG9jayBhbmQgaSA8IDUwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8sIGxvY2sgPSBsb2NrQml0YmFrZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnNlcnZlci5wcm9jZXNzLlByb2Nlc3NUaW1lb3V0KCJCaXRiYWtlIHN0aWxsIHNodXR0aW5nIGRvd24gYXMgc29ja2V0IGV4aXN0cyBidXQgbm8gbG9jaz8iKQorICAgICAgICAgICAgICAgIGlmIG5vdCBjb25maWdQYXJhbXMuc2VydmVyX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uID0gYmIuc2VydmVyLnByb2Nlc3MuY29ubmVjdFByb2Nlc3NTZXJ2ZXIoc29ja25hbWUsIGZlYXR1cmVzZXQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIHNlcnZlciBtYXkgaGF2ZSBiZWVuIHNodXR0aW5nIGRvd24gYnV0IG5vdCBjbG9zZWQgdGhlIHNvY2tldCB5ZXQuIElmIHRoYXQgaGFwcGVuZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlnbm9yZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9jb25uZWN0aW9uIG9yIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBCQk1haW5GYXRhbDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24sIGJiLnNlcnZlci5wcm9jZXNzLlByb2Nlc3NUaW1lb3V0KSBhcyBlOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXRyaWVzOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIHJldHJpZXMgLT0gMQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgKGJiLnNlcnZlci5wcm9jZXNzLlByb2Nlc3NUaW1lb3V0LCBCcm9rZW5QaXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJldHJ5aW5nIHNlcnZlciBjb25uZWN0aW9uLi4uIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiUmV0cnlpbmcgc2VydmVyIGNvbm5lY3Rpb24uLi4gKCVzKSIgJSB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgaWYgbm90IHJldHJpZXM6CisgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byBjb25uZWN0IHRvIGJpdGJha2Ugc2VydmVyLCBvciBzdGFydCBvbmUiKQorICAgICAgICAgICAgaWYgcmV0cmllcyA8IDU6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KQorCisgICAgaWYgY29uZmlnUGFyYW1zLmtpbGxfc2VydmVyOgorICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbi5jb25uZWN0aW9uLnRlcm1pbmF0ZVNlcnZlcigpCisgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uLnRlcm1pbmF0ZSgpCiAgICAgICAgIGJiLmV2ZW50LnVpX3F1ZXVlID0gW10KKyAgICAgICAgbG9nZ2VyLmluZm8oIlRlcm1pbmF0ZWQgYml0YmFrZSBzZXJ2ZXIuIikKKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKIAotICAgIGlmIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seToKLSAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24gPSBOb25lCi0gICAgZWxzZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24gPSBzZXJ2ZXIuZXN0YWJsaXNoQ29ubmVjdGlvbihmZWF0dXJlc2V0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyICVzOiAlcyIgJSAoY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXIsIHN0cihlKSkpCisgICAgIyBSZXN0b3JlIHRoZSBlbnZpcm9ubWVudCBpbiBjYXNlIHRoZSBVSSBuZWVkcyBpdAorICAgIGZvciBrIGluIGNsZWFuZWR2YXJzOgorICAgICAgICBvcy5lbnZpcm9uW2tdID0gY2xlYW5lZHZhcnNba10KIAotICAgICAgICBpZiBjb25maWdQYXJhbXMua2lsbF9zZXJ2ZXI6Ci0gICAgICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbi5jb25uZWN0aW9uLnRlcm1pbmF0ZVNlcnZlcigpCi0gICAgICAgICAgICBiYi5ldmVudC51aV9xdWV1ZSA9IFtdCi0gICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCiAKLSAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24uc2V0dXBFdmVudFF1ZXVlKCkKKyAgICByZXR1cm4gc2VydmVyX2Nvbm5lY3Rpb24sIHVpX21vZHVsZQogCi0gICAgICAgICMgUmVzdG9yZSB0aGUgZW52aXJvbm1lbnQgaW4gY2FzZSB0aGUgVUkgbmVlZHMgaXQKLSAgICAgICAgZm9yIGsgaW4gY2xlYW5lZHZhcnM6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uW2tdID0gY2xlYW5lZHZhcnNba10KK2RlZiBsb2NrQml0YmFrZSgpOgorICAgIHRvcGRpciA9IGJiLmNvb2tlcmRhdGEuZmluZFRvcGRpcigpCisgICAgaWYgbm90IHRvcGRpcjoKKyAgICAgICAgYmIuZXJyb3IoIlVuYWJsZSB0byBmaW5kIGNvbmYvYmJsYXllcnMuY29uZiBvciBjb25mL2JpdGJha2UuY29uZi4gQkJBUFRIIGlzIHVuc2V0IGFuZC9vciBub3QgaW4gYSBidWlsZCBkaXJlY3Rvcnk/IikKKyAgICAgICAgcmFpc2UgQkJNYWluRmF0YWwKKyAgICBsb2NrZmlsZSA9IHRvcGRpciArICIvYml0YmFrZS5sb2NrIgorICAgIHJldHVybiB0b3BkaXIsIGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlLCBGYWxzZSwgRmFsc2UpCiAKLSAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKLQotICAgIHJldHVybiBzZXJ2ZXIsIHNlcnZlcl9jb25uZWN0aW9uLCB1aV9tb2R1bGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbXNnLnB5CmluZGV4IDkwYjE1ODIuLmYxNzIzYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQpAQCAtMjE2LDMgKzIxNiwxMCBAQAogICAgICAgICBsb2dnZXIuaGFuZGxlcnMgPSBbY29uc29sZV0KICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCiAgICAgcmV0dXJuIGxvZ2dlcgorCitkZWYgaGFzX2NvbnNvbGVfaGFuZGxlcihsb2dnZXIpOgorICAgIGZvciBoYW5kbGVyIGluIGxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgICAgICAgICAgaWYgaGFuZGxlci5zdHJlYW0gaW4gW3N5cy5zdGRlcnIsIHN5cy5zdGRvdXRdOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkKaW5kZXggYTI5NTJlYy4uMmZjNDAwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weQpAQCAtODQsNiArODQsMTAgQEAKICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJVcGRhdGluZyBtdGltZSBjYWNoZSBmb3IgJXMiICUgZikKICAgICAgICAgdXBkYXRlX210aW1lKGYpCiAKK2RlZiBjbGVhcl9jYWNoZSgpOgorICAgIGdsb2JhbCBfX210aW1lX2NhY2hlCisgICAgX19tdGltZV9jYWNoZSA9IHt9CisKIGRlZiBtYXJrX2RlcGVuZGVuY3koZCwgZik6CiAgICAgaWYgZi5zdGFydHN3aXRoKCcuLycpOgogICAgICAgICBmID0gIiVzLyVzIiAlIChvcy5nZXRjd2QoKSwgZlsyOl0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQppbmRleCBmZTkxOGE0Li5mODlhZDI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgIHRyeToKICAgICAgICAgc3RhdGVtZW50cy5ldmFsKGQpCiAgICAgZXhjZXB0IGJiLnBhcnNlLlNraXBSZWNpcGU6Ci0gICAgICAgIGJiLmRhdGEuc2V0VmFyKCJfX1NLSVBQRUQiLCBUcnVlLCBkKQorICAgICAgICBkLnNldFZhcigiX19TS0lQUEVEIiwgVHJ1ZSkKICAgICAgICAgaWYgaW5jbHVkZSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuIHsgIiIgOiBkIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5CmluZGV4IGY3ZDBjZjcuLjk3YWExMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkKQEAgLTMyLDcgKzMyLDcgQEAKIAogX19jb25maWdfcmVnZXhwX18gID0gcmUuY29tcGlsZSggciIiIgogICAgIF4KLSAgICAoP1A8ZXhwPmV4cG9ydFxzKik/CisgICAgKD9QPGV4cD5leHBvcnRccyspPwogICAgICg/UDx2YXI+W2EtekEtWjAtOVwtXysuJHt9L35dKz8pCiAgICAgKFxbKD9QPGZsYWc+W2EtekEtWjAtOVwtXysuXSspXF0pPwogCkBAIC02OSwxOCArNjksMjYgQEAKIGRlZiBzdXBwb3J0cyhmbiwgZCk6CiAgICAgcmV0dXJuIGZuWy01Ol0gPT0gIi5jb25mIgogCi1kZWYgaW5jbHVkZShwYXJlbnRmbiwgZm4sIGxpbmVubywgZGF0YSwgZXJyb3Jfb3V0KToKK2RlZiBpbmNsdWRlKHBhcmVudGZuLCBmbnMsIGxpbmVubywgZGF0YSwgZXJyb3Jfb3V0KToKICAgICAiIiIKICAgICBlcnJvcl9vdXQ6IEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHZlcmIgKGUuZy4gImluY2x1ZGUiLCAiaW5oZXJpdCIpIHRvIGJlCiAgICAgdXNlZCBpbiBhIFBhcnNlRXJyb3IgdGhhdCB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgZmlsZSB0byBiZSBpbmNsdWRlZCBjb3VsZAogICAgIG5vdCBiZSBpbmNsdWRlZC4gU3BlY2lmeSBGYWxzZSB0byBhdm9pZCByYWlzaW5nIGFuIGVycm9yIGluIHRoaXMgY2FzZS4KICAgICAiIiIKKyAgICBmbnMgPSBkYXRhLmV4cGFuZChmbnMpCisgICAgcGFyZW50Zm4gPSBkYXRhLmV4cGFuZChwYXJlbnRmbikKKworICAgICMgImluY2x1ZGUiIG9yICJyZXF1aXJlIiBhY2NlcHQgemVybyB0byBuIHNwYWNlLXNlcGFyYXRlZCBmaWxlIG5hbWVzIHRvIGluY2x1ZGUuCisgICAgZm9yIGZuIGluIGZucy5zcGxpdCgpOgorICAgICAgICBpbmNsdWRlX3NpbmdsZV9maWxlKHBhcmVudGZuLCBmbiwgbGluZW5vLCBkYXRhLCBlcnJvcl9vdXQpCisKK2RlZiBpbmNsdWRlX3NpbmdsZV9maWxlKHBhcmVudGZuLCBmbiwgbGluZW5vLCBkYXRhLCBlcnJvcl9vdXQpOgorICAgICIiIgorICAgIEhlbHBlciBmdW5jdGlvbiBmb3IgaW5jbHVkZSgpIHdoaWNoIGRvZXMgbm90IGV4cGFuZCBvciBzcGxpdCBpdHMgcGFyYW1ldGVycy4KKyAgICAiIiIKICAgICBpZiBwYXJlbnRmbiA9PSBmbjogIyBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZm4gPSBkYXRhLmV4cGFuZChmbikKLSAgICBwYXJlbnRmbiA9IGRhdGEuZXhwYW5kKHBhcmVudGZuKQotCiAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoZm4pOgogICAgICAgICBkbmFtZSA9IG9zLnBhdGguZGlybmFtZShwYXJlbnRmbikKICAgICAgICAgYmJwYXRoID0gIiVzOiVzIiAlIChkbmFtZSwgZGF0YS5nZXRWYXIoIkJCUEFUSCIpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Byb2Nlc3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcHJvY2Vzcy5weQppbmRleCBhNGE1NTk5Li5lNjk2OTdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcHJvY2Vzcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcHJvY2Vzcy5weQpAQCAtOTQsNDYgKzk0LDUzIEBACiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZnVuYyhkYXRhKQogCisgICAgZGVmIHJlYWRfYWxsX3BpcGVzKGxvZywgcmluLCBvdXRkYXRhLCBlcnJkYXRhKToKKyAgICAgICAgcmxpc3QgPSByaW4KKyAgICAgICAgc3Rkb3V0YnVmID0gYiIiCisgICAgICAgIHN0ZGVycmJ1ZiA9IGIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHIsdyxlID0gc2VsZWN0LnNlbGVjdCAocmxpc3QsIFtdLCBbXSwgMSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICByZWFkZXh0cmFzKHIpCisKKyAgICAgICAgaWYgcGlwZS5zdGRvdXQgaW4gcjoKKyAgICAgICAgICAgIGRhdGEgPSBzdGRvdXRidWYgKyBwaXBlLnN0ZG91dC5yZWFkKCkKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmUgYW5kIGxlbihkYXRhKSA+IDA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgICAgICAgICAgb3V0ZGF0YS5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbG9nLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvZy5mbHVzaCgpCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dGJ1ZiA9IGIiIgorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHN0ZG91dGJ1ZiA9IGRhdGEKKworICAgICAgICBpZiBwaXBlLnN0ZGVyciBpbiByOgorICAgICAgICAgICAgZGF0YSA9IHN0ZGVycmJ1ZiArIHBpcGUuc3RkZXJyLnJlYWQoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZSBhbmQgbGVuKGRhdGEpID4gMDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgICAgICAgICBlcnJkYXRhLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgICAgICAgICBsb2cud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbG9nLmZsdXNoKCkKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyYnVmID0gYiIiCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyYnVmID0gZGF0YQorCiAgICAgdHJ5OgorICAgICAgICAjIFJlYWQgYWxsIHBpcGVzIHdoaWxlIHRoZSBwcm9jZXNzIGlzIG9wZW4KICAgICAgICAgd2hpbGUgcGlwZS5wb2xsKCkgaXMgTm9uZToKLSAgICAgICAgICAgIHJsaXN0ID0gcmluCi0gICAgICAgICAgICBzdGRvdXRidWYgPSBiIiIKLSAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGIiIgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHIsdyxlID0gc2VsZWN0LnNlbGVjdCAocmxpc3QsIFtdLCBbXSwgMSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHJlYWRfYWxsX3BpcGVzKGxvZywgcmluLCBvdXRkYXRhLCBlcnJkYXRhKQogCi0gICAgICAgICAgICBpZiBwaXBlLnN0ZG91dCBpbiByOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzdGRvdXRidWYgKyBwaXBlLnN0ZG91dC5yZWFkKCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lIGFuZCBsZW4oZGF0YSkgPiAwOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dGRhdGEuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGJ1ZiA9IGIiIgotICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0YnVmID0gZGF0YQotCi0gICAgICAgICAgICBpZiBwaXBlLnN0ZGVyciBpbiByOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzdGRlcnJidWYgKyBwaXBlLnN0ZGVyci5yZWFkKCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lIGFuZCBsZW4oZGF0YSkgPiAwOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycmRhdGEuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGIiIgotICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyYnVmID0gZGF0YQotCi0gICAgICAgICAgICByZWFkZXh0cmFzKHIpCi0KLSAgICBmaW5hbGx5OiAgICAKKyAgICAgICAgIyBQb2Nlc3MgY2xvc2VkLCBkcmFpbiBhbGwgcGlwZXMuLi4KKyAgICAgICAgcmVhZF9hbGxfcGlwZXMobG9nLCByaW4sIG91dGRhdGEsIGVycmRhdGEpCisgICAgZmluYWxseToKICAgICAgICAgbG9nLmZsdXNoKCkKIAotICAgIHJlYWRleHRyYXMoW2ZvYmogZm9yIGZvYmosIF8gaW4gZXh0cmFmaWxlc10pCi0KICAgICBpZiBwaXBlLnN0ZG91dCBpcyBub3QgTm9uZToKICAgICAgICAgcGlwZS5zdGRvdXQuY2xvc2UoKQogICAgIGlmIHBpcGUuc3RkZXJyIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CmluZGV4IDdkMmZmODEuLmFlMTJjMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTEzNTUsMTIgKzEzNTUsNyBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgJWQgdGFza3Mgb2Ygd2hpY2ggJWQgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5kIGFsbCBzdWNjZWVkZWQuIiwgc2VsZi5ycWV4ZS5zdGF0cy5jb21wbGV0ZWQsIHNlbGYucnFleGUuc3RhdHMuc2tpcHBlZCkKIAogICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIHJ1blF1ZXVlRmFpbGVkOgotICAgICAgICAgICAgaWYgbm90IHNlbGYucnFkYXRhLnRhc2tEYXRhWycnXS50cnlhbHRjb25maWdzOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLnJ1bnF1ZXVlLlRhc2tGYWlsdXJlKHNlbGYucnFleGUuZmFpbGVkX3RpZHMpCi0gICAgICAgICAgICBmb3IgdGlkIGluIHNlbGYucnFleGUuZmFpbGVkX3RpZHM6Ci0gICAgICAgICAgICAgICAgKG1jLCBmbiwgdG4sIF8pID0gc3BsaXRfdGlkX21jZm4odGlkKQotICAgICAgICAgICAgICAgIHNlbGYucnFkYXRhLnRhc2tEYXRhW21jXS5mYWlsX2ZuKGZuKQotICAgICAgICAgICAgc2VsZi5ycWRhdGEucmVzZXQoKQorICAgICAgICAgICAgcmFpc2UgYmIucnVucXVldWUuVGFza0ZhaWx1cmUoc2VsZi5ycWV4ZS5mYWlsZWRfdGlkcykKIAogICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIHJ1blF1ZXVlQ29tcGxldGU6CiAgICAgICAgICAgICAjIEFsbCBkb25lCkBAIC0xODM5LDcgKzE4MzQsNyBAQAogICAgICAgICBSdW4gdGhlIHRhc2tzIGluIGEgcXVldWUgcHJlcGFyZWQgYnkgcnFkYXRhLnByZXBhcmUoKQogICAgICAgICAiIiIKIAotICAgICAgICBpZiBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdCBhbmQgbm90IHNlbGYucnFkYXRhLnNldHNjZW5ld2hpdGVsaXN0X2NoZWNrZWQ6CisgICAgICAgIGlmIHNlbGYucnFkYXRhLnNldHNjZW5ld2hpdGVsaXN0IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5ycWRhdGEuc2V0c2NlbmV3aGl0ZWxpc3RfY2hlY2tlZDoKICAgICAgICAgICAgIHNlbGYucnFkYXRhLnNldHNjZW5ld2hpdGVsaXN0X2NoZWNrZWQgPSBUcnVlCiAKICAgICAgICAgICAgICMgQ2hlY2sgdGFza3MgdGhhdCBhcmUgZ29pbmcgdG8gcnVuIGFnYWluc3QgdGhlIHdoaXRlbGlzdApAQCAtMTkzMiw3ICsxOTI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnEuc3RhdGUgPSBydW5RdWV1ZUZhaWxlZAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0cy50YXNrRmFpbGVkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5ycS5mYWtld29ya2VyW21jXS5wcm9jZXNzLnN0ZGluLndyaXRlKGIiPHJ1bnRhc2s+IiArIHBpY2tsZS5kdW1wcygodGFza2ZuLCB0YXNrLCB0YXNrbmFtZSwgRmFsc2UsIHNlbGYuY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhmbiksIHRhc2tkZXBkYXRhLCBzZWxmLnJxZGF0YS5zZXRzY2VuZV9lbmZvcmNlKSkgKyBiIjwvcnVudGFzaz4iKQorICAgICAgICAgICAgICAgIHNlbGYucnEuZmFrZXdvcmtlclttY10ucHJvY2Vzcy5zdGRpbi53cml0ZShiIjxydW50YXNrPiIgKyBwaWNrbGUuZHVtcHMoKHRhc2tmbiwgdGFzaywgdGFza25hbWUsIEZhbHNlLCBzZWxmLmNvb2tlci5jb2xsZWN0aW9uLmdldF9maWxlX2FwcGVuZHModGFza2ZuKSwgdGFza2RlcGRhdGEsIHNlbGYucnFkYXRhLnNldHNjZW5lX2VuZm9yY2UpKSArIGIiPC9ydW50YXNrPiIpCiAgICAgICAgICAgICAgICAgc2VsZi5ycS5mYWtld29ya2VyW21jXS5wcm9jZXNzLnN0ZGluLmZsdXNoKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5ycS53b3JrZXJbbWNdLnByb2Nlc3Muc3RkaW4ud3JpdGUoYiI8cnVudGFzaz4iICsgcGlja2xlLmR1bXBzKCh0YXNrZm4sIHRhc2ssIHRhc2tuYW1lLCBGYWxzZSwgc2VsZi5jb29rZXIuY29sbGVjdGlvbi5nZXRfZmlsZV9hcHBlbmRzKHRhc2tmbiksIHRhc2tkZXBkYXRhLCBzZWxmLnJxZGF0YS5zZXRzY2VuZV9lbmZvcmNlKSkgKyBiIjwvcnVudGFzaz4iKQpAQCAtMjI1NCw3ICsyMjQ5LDcgQEAKICAgICAgICAgc2VsZi5zY2VuZXF1ZXVlX3VwZGF0ZWNvdW50ZXJzKHRhc2spCiAKICAgICBkZWYgY2hlY2tfdGFza2ZhaWwoc2VsZiwgdGFzayk6Ci0gICAgICAgIGlmIHNlbGYucnFkYXRhLnNldHNjZW5ld2hpdGVsaXN0OgorICAgICAgICBpZiBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJlYWx0YXNrID0gdGFzay5zcGxpdCgnX3NldHNjZW5lJylbMF0KICAgICAgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCB0YXNrZm4pID0gc3BsaXRfdGlkX21jZm4ocmVhbHRhc2spCiAgICAgICAgICAgICBwbiA9IHNlbGYucnFkYXRhLmRhdGFDYWNoZXNbbWNdLnBrZ19mblt0YXNrZm5dCkBAIC0yMzcyLDcgKzIzNjcsNyBAQAogICAgICAgICBzZWxmLnJxLnNjZW5lcXVldWVfY292ZXJlZCA9IHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkCiAgICAgICAgIHNlbGYucnEuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkID0gc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQKIAotICAgICAgICBsb2dnZXIuZGVidWcoMSwgJ1dlIGNhbiBza2lwIHRhc2tzICVzJywgc29ydGVkKHNlbGYucnEuc2NlbmVxdWV1ZV9jb3ZlcmVkKSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdXZSBjYW4gc2tpcCB0YXNrcyAlcycsICJcbiIuam9pbihzb3J0ZWQoc2VsZi5ycS5zY2VuZXF1ZXVlX2NvdmVyZWQpKSkKIAogICAgICAgICBzZWxmLnJxLnN0YXRlID0gcnVuUXVldWVSdW5Jbml0CiAKQEAgLTI0ODgsNiArMjQ4Myw5IEBACiAgICAgICAgIHJ1blF1ZXVlRXZlbnQuX19pbml0X18oc2VsZiwgdGFzaywgc3RhdHMsIHJxKQogICAgICAgICBzZWxmLmV4aXRjb2RlID0gZXhpdGNvZGUKIAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIlRhc2sgKCVzKSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJyVzJyIgJSAoc2VsZi50YXNrc3RyaW5nLCBzZWxmLmV4aXRjb2RlKQorCiBjbGFzcyBzY2VuZVF1ZXVlVGFza0ZhaWxlZChzY2VuZVF1ZXVlRXZlbnQpOgogICAgICIiIgogICAgIEV2ZW50IG5vdGlmeWluZyBhIHNldHNjZW5lIHRhc2sgZmFpbGVkCkBAIC0yNDk2LDYgKzI0OTQsOSBAQAogICAgICAgICBzY2VuZVF1ZXVlRXZlbnQuX19pbml0X18oc2VsZiwgdGFzaywgc3RhdHMsIHJxKQogICAgICAgICBzZWxmLmV4aXRjb2RlID0gZXhpdGNvZGUKIAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIlNldHNjZW5lIHRhc2sgKCVzKSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJyVzJyAtIHJlYWwgdGFzayB3aWxsIGJlIHJ1biBpbnN0ZWFkIiAlIChzZWxmLnRhc2tzdHJpbmcsIHNlbGYuZXhpdGNvZGUpCisKIGNsYXNzIHNjZW5lUXVldWVDb21wbGV0ZShzY2VuZVF1ZXVlRXZlbnQpOgogICAgICIiIgogICAgIEV2ZW50IHdoZW4gYWxsIHRoZSBzY2VuZVF1ZXVlIHRhc2tzIGFyZSBjb21wbGV0ZQpAQCAtMjYwMiw3ICsyNjAzLDcgQEAKIAogZGVmIGNoZWNrX3NldHNjZW5lX2VuZm9yY2Vfd2hpdGVsaXN0KHBuLCB0YXNrbmFtZSwgd2hpdGVsaXN0KToKICAgICBpbXBvcnQgZm5tYXRjaAotICAgIGlmIHdoaXRlbGlzdDoKKyAgICBpZiB3aGl0ZWxpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgIGl0ZW0gPSAnJXM6JXMnICUgKHBuLCB0YXNrbmFtZSkKICAgICAgICAgZm9yIHdoaXRlbGlzdF9pdGVtIGluIHdoaXRlbGlzdDoKICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChpdGVtLCB3aGl0ZWxpc3RfaXRlbSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9fX2luaXRfXy5weQppbmRleCA1MzhhNjMzLi41YTNmYmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvX19pbml0X18ucHkKQEAgLTE4LDgyICsxOCw0IEBACiAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKLSIiIiBCYXNlIGNvZGUgZm9yIEJpdGJha2Ugc2VydmVyIHByb2Nlc3MKIAotSGF2ZSBhIGNvbW1vbiBiYXNlIGZvciB0aGF0IGFsbCBCaXRiYWtlIHNlcnZlciBjbGFzc2VzIGVuc3VyZXMgYSBjb25zaXN0ZW50Ci1hcHByb2FjaCB0byB0aGUgaW50ZXJmYWNlLCBhbmQgbWluaW1pemUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGNvZGUgZHVwbGljYXRpb24uCi0KLSIiIgotCi0iIiIgIEJhc2VJbXBsU2VydmVyKCkgdGhlIGJhc2UgY2xhc3MgZm9yIGFsbCBYWFNlcnZlcigpIGltcGxlbWVudGF0aW9ucy4KLQotICAgIFRoZXNlIGNsYXNzZXMgY29udGFpbiB0aGUgYWN0dWFsIGNvZGUgdGhhdCBydW5zIHRoZSBzZXJ2ZXIgc2lkZSwgaS5lLgotICAgIGxpc3RlbnMgZm9yIHRoZSBjb21tYW5kcyBhbmQgZXhlY3V0ZXMgdGhlbS4gQWx0aG91Z2ggdGhlc2UgaW1wbGVtZW50YXRpb25zCi0gICAgY29udGFpbiBhbGwgdGhlIGRhdGEgb2YgdGhlIG9yaWdpbmFsIGJpdGJha2UgY29tbWFuZCwgaS5lIHRoZSBjb29rZXIgaW5zdGFuY2UsCi0gICAgdGhleSBtYXkgd2VsbCBydW4gb24gYSBkaWZmZXJlbnQgcHJvY2VzcyBvciBldmVuIG1hY2hpbmUuCi0KLSIiIgotCi1jbGFzcyBCYXNlSW1wbFNlcnZlcigpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5faWRsZWZ1bnMgPSB7fQotCi0gICAgZGVmIGFkZGNvb2tlcihzZWxmLCBjb29rZXIpOgotICAgICAgICBzZWxmLmNvb2tlciA9IGNvb2tlcgotCi0gICAgZGVmIHJlZ2lzdGVyX2lkbGVfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgotICAgICAgICAiIiJSZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGlsZSB0aGUgc2VydmVyIGlzIGlkbGUiIiIKLSAgICAgICAgYXNzZXJ0IGhhc2F0dHIoZnVuY3Rpb24sICdfX2NhbGxfXycpCi0gICAgICAgIHNlbGYuX2lkbGVmdW5zW2Z1bmN0aW9uXSA9IGRhdGEKLQotCi0KLSIiIiBCaXRCYWtlQmFzZVNlcnZlckNvbm5lY3Rpb24gY2xhc3MgaXMgdGhlIGNvbW1vbiBhbmNlc3RvciB0byBhbGwKLSAgICBCaXRCYWtlU2VydmVyQ29ubmVjdGlvbiBjbGFzc2VzLgotCi0gICAgVGhlc2UgY2xhc3NlcyBjb250cm9sIHRoZSByZW1vdGUgc2VydmVyLiBUaGUgb25seSBjb21tYW5kIGN1cnJlbnRseQotICAgIGltcGxlbWVudGVkIGlzIHRoZSB0ZXJtaW5hdGUoKSBjb21tYW5kLgotCi0iIiIKLQotY2xhc3MgQml0QmFrZUJhc2VTZXJ2ZXJDb25uZWN0aW9uKCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlckltcGwpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVybWluYXRlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2V0dXBFdmVudFF1ZXVlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLQotIiIiIEJpdEJha2VCYXNlU2VydmVyIGNsYXNzIGlzIHRoZSBjb21tb24gYW5jZXN0b3IgdG8gYWxsIEJpdGJha2Ugc2VydmVycwotCi0gICAgRGVyaXZlIHRoaXMgY2xhc3MgaW4gb3JkZXIgdG8gaW1wbGVtZW50IGEgQml0QmFrZVNlcnZlciB3aGljaCBpcyB0aGUKLSAgICBjb250cm9sbGluZyBzdHViIGZvciB0aGUgYWN0dWFsIHNlcnZlciBpbXBsZW1lbnRhdGlvbgotCi0iIiIKLWNsYXNzIEJpdEJha2VCYXNlU2VydmVyKG9iamVjdCk6Ci0gICAgZGVmIGluaXRTZXJ2ZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVySW1wbCA9IE5vbmUgICMgd2UgZW5zdXJlIGEgcnVudGltZSBjcmFzaCBpZiBub3Qgb3ZlcmxvYWRlZAotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBOb25lCi0gICAgICAgIHJldHVybgotCi0gICAgZGVmIGFkZGNvb2tlcihzZWxmLCBjb29rZXIpOgotICAgICAgICBzZWxmLmNvb2tlciA9IGNvb2tlcgotICAgICAgICBzZWxmLnNlcnZlckltcGwuYWRkY29va2VyKGNvb2tlcikKLQotICAgIGRlZiBnZXRTZXJ2ZXJJZGxlQ0Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlckltcGwucmVnaXN0ZXJfaWRsZV9mdW5jdGlvbgotCi0gICAgZGVmIHNhdmVDb25uZWN0aW9uRGV0YWlscyhzZWxmKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYgZGV0YWNoKHNlbGYpOgotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBlc3RhYmxpc2hDb25uZWN0aW9uKHNlbGYsIGZlYXR1cmVzZXQpOgotICAgICAgICByYWlzZSAgICJNdXN0IHJlZGVmaW5lIHRoZSAlcy5lc3RhYmxpc2hDb25uZWN0aW9uKCkiICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KLQotICAgIGRlZiBlbmRTZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb24udGVybWluYXRlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQppbmRleCBjM2MxNDUwLi4zZDMxMzU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CkBAIC0yMiwxMjUgKzIyLDI0NSBAQAogCiBpbXBvcnQgYmIKIGltcG9ydCBiYi5ldmVudAotaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCBhcnJheQogaW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHNlbGVjdAotZnJvbSBxdWV1ZSBpbXBvcnQgRW1wdHkKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBFdmVudCwgUHJvY2VzcywgdXRpbCwgUXVldWUsIFBpcGUsIHF1ZXVlcywgTWFuYWdlcgotCi1mcm9tIC4gaW1wb3J0IEJpdEJha2VCYXNlU2VydmVyLCBCaXRCYWtlQmFzZVNlcnZlckNvbm5lY3Rpb24sIEJhc2VJbXBsU2VydmVyCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IGVycm5vCitpbXBvcnQgcmUKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGJiLnNlcnZlci54bWxycGNzZXJ2ZXIKK2Zyb20gYmIgaW1wb3J0IGRhZW1vbml6ZQorZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHF1ZXVlcwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZScpCiAKLWNsYXNzIFNlcnZlckNvbW11bmljYXRvcigpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uLCBldmVudF9oYW5kbGUsIHNlcnZlcik6Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5ldmVudF9oYW5kbGUgPSBldmVudF9oYW5kbGUKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKK2NsYXNzIFByb2Nlc3NUaW1lb3V0KFN5c3RlbUV4aXQpOgorICAgIHBhc3MKIAotICAgIGRlZiBydW5Db21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICAjIEB0b2RvIHRyeS9leGNlcHQKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmQoY29tbWFuZCkKLQotICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToKLSAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKLQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBkb24ndCBsZXQgdGhlIHVzZXIgY3RybC1jIHdoaWxlIHdlJ3JlIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmb3IgaWR4IGluIHJhbmdlKDAsNCk6ICMgMCwgMSwgMiwgMwotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbm5lY3Rpb24ucG9sbCg1KToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24ucmVjdigpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaW1lb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCBiaXRiYWtlIHNlcnZlciIpCi0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIkdhdmUgdXA7IFRvbyBtYW55IHRyaWVzOiB0aW1lb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCBiaXRiYWtlIHNlcnZlciIpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldEV2ZW50SGFuZGxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ldmVudF9oYW5kbGUudmFsdWUKLQotY2xhc3MgRXZlbnRBZGFwdGVyKCk6Ci0gICAgIiIiCi0gICAgQWRhcHRlciB0byB3cmFwIG91ciBldmVudCBxdWV1ZSBzaW5jZSB0aGUgY2FsbGVyIChiYi5ldmVudCkgZXhwZWN0cyB0bwotICAgIGNhbGwgYSBzZW5kKCkgbWV0aG9kLCBidXQgb3VyIGFjdHVhbCBxdWV1ZSBvbmx5IGhhcyBwdXQoKQotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQotCi0gICAgZGVmIHNlbmQoc2VsZiwgZXZlbnQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dChldmVudCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICBwcmludCgiRXZlbnRBZGFwdGVyIHB1a2VkOiAlcyIgJSBzdHIoZXJyKSkKLQotCi1jbGFzcyBQcm9jZXNzU2VydmVyKFByb2Nlc3MsIEJhc2VJbXBsU2VydmVyKToKK2NsYXNzIFByb2Nlc3NTZXJ2ZXIobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgogICAgIHByb2ZpbGVfZmlsZW5hbWUgPSAicHJvZmlsZS5sb2ciCiAgICAgcHJvZmlsZV9wcm9jZXNzZWRfZmlsZW5hbWUgPSAicHJvZmlsZS5sb2cucHJvY2Vzc2VkIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1hbmRfY2hhbm5lbCwgZXZlbnRfcXVldWUsIGZlYXR1cmVsaXN0KToKLSAgICAgICAgQmFzZUltcGxTZXJ2ZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgUHJvY2Vzcy5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmNvbW1hbmRfY2hhbm5lbCA9IGNvbW1hbmRfY2hhbm5lbAotICAgICAgICBzZWxmLmV2ZW50X3F1ZXVlID0gZXZlbnRfcXVldWUKLSAgICAgICAgc2VsZi5ldmVudCA9IEV2ZW50QWRhcHRlcihldmVudF9xdWV1ZSkKLSAgICAgICAgc2VsZi5mZWF0dXJlbGlzdCA9IGZlYXR1cmVsaXN0CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2ssIHNvY2ssIHNvY2tuYW1lKToKKyAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWwgPSBGYWxzZQorICAgICAgICBzZWxmLmNvbW1hbmRfY2hhbm5lbF9yZXBseSA9IEZhbHNlCiAgICAgICAgIHNlbGYucXVpdCA9IEZhbHNlCiAgICAgICAgIHNlbGYuaGVhcnRiZWF0X3NlY29uZHMgPSAxICMgZGVmYXVsdCwgQkJfSEVBUlRCRUFUX0VWRU5UIHdpbGwgYmUgY2hlY2tlZCBvbmNlIHdlIGhhdmUgYSBkYXRhc3RvcmUuCiAgICAgICAgIHNlbGYubmV4dF9oZWFydGJlYXQgPSB0aW1lLnRpbWUoKQogCi0gICAgICAgIHNlbGYucXVpdGluLCBzZWxmLnF1aXRvdXQgPSBQaXBlKCkKLSAgICAgICAgc2VsZi5ldmVudF9oYW5kbGUgPSBtdWx0aXByb2Nlc3NpbmcuVmFsdWUoImkiKQorICAgICAgICBzZWxmLmV2ZW50X2hhbmRsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5oYXZldWkgPSBGYWxzZQorICAgICAgICBzZWxmLmxhc3R1aSA9IEZhbHNlCisgICAgICAgIHNlbGYueG1scnBjID0gRmFsc2UKKworICAgICAgICBzZWxmLl9pZGxlZnVucyA9IHt9CisKKyAgICAgICAgc2VsZi5iaXRiYWtlX2xvY2sgPSBsb2NrCisgICAgICAgIHNlbGYuc29jayA9IHNvY2sKKyAgICAgICAgc2VsZi5zb2NrbmFtZSA9IHNvY2tuYW1lCisKKyAgICBkZWYgcmVnaXN0ZXJfaWRsZV9mdW5jdGlvbihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgICIiIlJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgaWRsZSIiIgorICAgICAgICBhc3NlcnQgaGFzYXR0cihmdW5jdGlvbiwgJ19fY2FsbF9fJykKKyAgICAgICAgc2VsZi5faWRsZWZ1bnNbZnVuY3Rpb25dID0gZGF0YQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgZm9yIGV2ZW50IGluIGJiLmV2ZW50LnVpX3F1ZXVlOgotICAgICAgICAgICAgc2VsZi5ldmVudF9xdWV1ZS5wdXQoZXZlbnQpCi0gICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlLnZhbHVlID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLCBUcnVlKQorCisgICAgICAgIGlmIHNlbGYueG1scnBjaW50ZXJmYWNlWzBdOgorICAgICAgICAgICAgc2VsZi54bWxycGMgPSBiYi5zZXJ2ZXIueG1scnBjc2VydmVyLkJpdEJha2VYTUxSUENTZXJ2ZXIoc2VsZi54bWxycGNpbnRlcmZhY2UsIHNlbGYuY29va2VyLCBzZWxmKQorCisgICAgICAgICAgICBwcmludCgiQml0YmFrZSBYTUxSUEMgc2VydmVyIGFkZHJlc3M6ICVzLCBzZXJ2ZXIgcG9ydDogJXMiICUgKHNlbGYueG1scnBjLmhvc3QsIHNlbGYueG1scnBjLnBvcnQpKQogCiAgICAgICAgIGhlYXJ0YmVhdF9ldmVudCA9IHNlbGYuY29va2VyLmRhdGEuZ2V0VmFyKCdCQl9IRUFSVEJFQVRfRVZFTlQnKQogICAgICAgICBpZiBoZWFydGJlYXRfZXZlbnQ6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5oZWFydGJlYXRfc2Vjb25kcyA9IGZsb2F0KGhlYXJ0YmVhdF9ldmVudCkKICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIFRocm93aW5nIGFuIGV4Y2VwdGlvbiBoZXJlIGNhdXNlcyBiaXRiYWtlIHRvIGhhbmcuCi0gICAgICAgICAgICAgICAgIyBKdXN0IHdhcm4gYWJvdXQgdGhlIGludmFsaWQgc2V0dGluZyBhbmQgY29udGludWUKICAgICAgICAgICAgICAgICBiYi53YXJuKCdJZ25vcmluZyBpbnZhbGlkIEJCX0hFQVJUQkVBVF9FVkVOVD0lcywgbXVzdCBiZSBhIGZsb2F0IHNwZWNpZnlpbmcgc2Vjb25kcy4nICUgaGVhcnRiZWF0X2V2ZW50KQotICAgICAgICBiYi5jb29rZXIuc2VydmVyX21haW4oc2VsZi5jb29rZXIsIHNlbGYubWFpbikKKworICAgICAgICBzZWxmLnRpbWVvdXQgPSBzZWxmLnNlcnZlcl90aW1lb3V0IG9yIHNlbGYuY29va2VyLmRhdGEuZ2V0VmFyKCdCQl9TRVJWRVJfVElNRU9VVCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYudGltZW91dDoKKyAgICAgICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSBmbG9hdChzZWxmLnRpbWVvdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGJiLndhcm4oJ0lnbm9yaW5nIGludmFsaWQgQkJfU0VSVkVSX1RJTUVPVVQ9JXMsIG11c3QgYmUgYSBmbG9hdCBzcGVjaWZ5aW5nIHNlY29uZHMuJyAlIHNlbGYudGltZW91dCkKKworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrLnNlZWsoMCkKKyAgICAgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrLnRydW5jYXRlKCkKKyAgICAgICAgICAgIGlmIHNlbGYueG1scnBjOgorICAgICAgICAgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrLndyaXRlKCIlcyAlczolc1xuIiAlIChvcy5nZXRwaWQoKSwgc2VsZi54bWxycGMuaG9zdCwgc2VsZi54bWxycGMucG9ydCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrLndyaXRlKCIlc1xuIiAlIChvcy5nZXRwaWQoKSkpCisgICAgICAgICAgICBzZWxmLmJpdGJha2VfbG9jay5mbHVzaCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KCJFcnJvciB3cml0aW5nIHRvIGxvY2sgZmlsZTogJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucHJvZmlsZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbXBvcnQgY1Byb2ZpbGUgYXMgcHJvZmlsZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGltcG9ydCBwcm9maWxlCisgICAgICAgICAgICBwcm9mID0gcHJvZmlsZS5Qcm9maWxlKCkKKworICAgICAgICAgICAgcmV0ID0gcHJvZmlsZS5Qcm9maWxlLnJ1bmNhbGwocHJvZiwgc2VsZi5tYWluKQorCisgICAgICAgICAgICBwcm9mLmR1bXBfc3RhdHMoInByb2ZpbGUubG9nIikKKyAgICAgICAgICAgIGJiLnV0aWxzLnByb2Nlc3NfcHJvZmlsZWxvZygicHJvZmlsZS5sb2ciKQorICAgICAgICAgICAgcHJpbnQoIlJhdyBwcm9maWxpbmcgaW5mb3JtYXRpb24gc2F2ZWQgdG8gcHJvZmlsZS5sb2cgYW5kIHByb2Nlc3NlZCBzdGF0aXN0aWNzIHRvIHByb2ZpbGUubG9nLnByb2Nlc3NlZCIpCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldCA9IHNlbGYubWFpbigpCisKKyAgICAgICAgcmV0dXJuIHJldAogCiAgICAgZGVmIG1haW4oc2VsZik6Ci0gICAgICAgICMgSWdub3JlIFNJR0lOVCB3aXRoaW4gdGhlIHNlcnZlciwgYXMgYWxsIFNJR0lOVCBoYW5kbGluZyBpcyBkb25lIGJ5Ci0gICAgICAgICMgdGhlIFVJIGFuZCBjb21tdW5pY2F0ZWQgdG8gdXMKLSAgICAgICAgc2VsZi5xdWl0aW4uY2xvc2UoKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdfSUdOKQorICAgICAgICBzZWxmLmNvb2tlci5wcmVfc2VydmUoKQorCiAgICAgICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIkNvb2tlciIpCisKKyAgICAgICAgcmVhZHkgPSBbXQorCisgICAgICAgIHNlbGYuY29udHJvbGxlcnNvY2sgPSBGYWxzZQorICAgICAgICBmZHMgPSBbc2VsZi5zb2NrXQorICAgICAgICBpZiBzZWxmLnhtbHJwYzoKKyAgICAgICAgICAgIGZkcy5hcHBlbmQoc2VsZi54bWxycGMpCisgICAgICAgIHByaW50KCJFbnRlcmluZyBzZXJ2ZXIgY29ubmVjdGlvbiBsb29wIikKKworICAgICAgICBkZWYgZGlzY29ubmVjdF9jbGllbnQoc2VsZiwgZmRzKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhdmV1aToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHByaW50KCJEaXNjb25uZWN0aW5nIENsaWVudCIpCisgICAgICAgICAgICBmZHMucmVtb3ZlKHNlbGYuY29udHJvbGxlcnNvY2spCisgICAgICAgICAgICBmZHMucmVtb3ZlKHNlbGYuY29tbWFuZF9jaGFubmVsKQorICAgICAgICAgICAgYmIuZXZlbnQudW5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuZXZlbnRfaGFuZGxlLCBUcnVlKQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWxfcmVwbHkud3JpdGVyLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuZXZlbnRfd3JpdGVyLndyaXRlci5jbG9zZSgpCisgICAgICAgICAgICBkZWwgc2VsZi5ldmVudF93cml0ZXIKKyAgICAgICAgICAgIHNlbGYuY29udHJvbGxlcnNvY2suY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5jb250cm9sbGVyc29jayA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLmhhdmV1aSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLmxhc3R1aSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBzZWxmLmNvb2tlci5jbGllbnRDb21wbGV0ZSgpCisgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgiTm8gdGltZW91dCwgZXhpdGluZy4iKQorICAgICAgICAgICAgICAgIHNlbGYucXVpdCA9IFRydWUKKwogICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tbWFuZF9jaGFubmVsLnBvbGwoKToKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuY29tbWFuZF9jaGFubmVsLnJlY3YoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bkNvbW1hbmQoY29tbWFuZCkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnF1aXRvdXQucG9sbCgpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnF1aXRvdXQucmVjdigpCisgICAgICAgICAgICBpZiBzZWxmLnNvY2sgaW4gcmVhZHk6CisgICAgICAgICAgICAgICAgc2VsZi5jb250cm9sbGVyc29jaywgYWRkcmVzcyA9IHNlbGYuc29jay5hY2NlcHQoKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuaGF2ZXVpOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiRHJvcHBpbmcgY29ubmVjdGlvbiBhdHRlbXB0IGFzIHdlIGhhdmUgYSBVSSAlcyIgJSAoc3RyKHJlYWR5KSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udHJvbGxlcnNvY2suY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJBY2NlcHRpbmcgJXMiICUgKHN0cihyZWFkeSkpKQorICAgICAgICAgICAgICAgICAgICBmZHMuYXBwZW5kKHNlbGYuY29udHJvbGxlcnNvY2spCisgICAgICAgICAgICBpZiBzZWxmLmNvbnRyb2xsZXJzb2NrIGluIHJlYWR5OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkNvbm5lY3RpbmcgQ2xpZW50IikKKyAgICAgICAgICAgICAgICAgICAgdWlfZmRzID0gcmVjdmZkcyhzZWxmLmNvbnRyb2xsZXJzb2NrLCAzKQorCisgICAgICAgICAgICAgICAgICAgICMgV2hlcmUgdG8gd3JpdGUgZXZlbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIHdyaXRlciA9IENvbm5lY3Rpb25Xcml0ZXIodWlfZmRzWzBdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV2ZW50X2hhbmRsZSA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIod3JpdGVyLCBUcnVlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV2ZW50X3dyaXRlciA9IHdyaXRlcgorCisgICAgICAgICAgICAgICAgICAgICMgV2hlcmUgdG8gcmVhZCBjb21tYW5kcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IENvbm5lY3Rpb25SZWFkZXIodWlfZmRzWzFdKQorICAgICAgICAgICAgICAgICAgICBmZHMuYXBwZW5kKHJlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWwgPSByZWFkZXIKKworICAgICAgICAgICAgICAgICAgICAjIFdoZXJlIHRvIHNlbmQgY29tbWFuZCByZXR1cm4gdmFsdWVzIHRvCisgICAgICAgICAgICAgICAgICAgIHdyaXRlciA9IENvbm5lY3Rpb25Xcml0ZXIodWlfZmRzWzJdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfY2hhbm5lbF9yZXBseSA9IHdyaXRlcgorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaGF2ZXVpID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgZXhjZXB0IChFT0ZFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3RfY2xpZW50KHNlbGYsIGZkcykKKworICAgICAgICAgICAgaWYgbm90IHNlbGYudGltZW91dCA9PSAtMS4wIGFuZCBub3Qgc2VsZi5oYXZldWkgYW5kIHNlbGYubGFzdHVpIGFuZCBzZWxmLnRpbWVvdXQgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYubGFzdHVpICsgc2VsZi50aW1lb3V0KSA8IHRpbWUudGltZSgpOgorICAgICAgICAgICAgICAgIHByaW50KCJTZXJ2ZXIgdGltZW91dCwgZXhpdGluZy4iKQorICAgICAgICAgICAgICAgIHNlbGYucXVpdCA9IFRydWUKKworICAgICAgICAgICAgaWYgc2VsZi5jb21tYW5kX2NoYW5uZWwgaW4gcmVhZHk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5jb21tYW5kX2NoYW5uZWwuZ2V0KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgQ2xpZW50IGNvbm5lY3Rpb24gc2h1dHRpbmcgZG93bgorICAgICAgICAgICAgICAgICAgICByZWFkeSA9IFtdCisgICAgICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3RfY2xpZW50KHNlbGYsIGZkcykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBjb21tYW5kWzBdID09ICJ0ZXJtaW5hdGVTZXJ2ZXIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnF1aXQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwcmludCgiUnVubmluZyBjb21tYW5kICVzIiAlIGNvbW1hbmQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZF9jaGFubmVsX3JlcGx5LnNlbmQoc2VsZi5jb29rZXIuY29tbWFuZC5ydW5Db21tYW5kKGNvbW1hbmQpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKCdFeGNlcHRpb24gaW4gc2VydmVyIG1haW4gZXZlbnQgbG9vcCBydW5uaW5nIGNvbW1hbmQgJXMgKCVzKScgJSAoY29tbWFuZCwgc3RyKGUpKSkKKworICAgICAgICAgICAgaWYgc2VsZi54bWxycGMgaW4gcmVhZHk6CisgICAgICAgICAgICAgICAgc2VsZi54bWxycGMuaGFuZGxlX3JlcXVlc3RzKCkKKworICAgICAgICAgICAgcmVhZHkgPSBzZWxmLmlkbGVfY29tbWFuZHMoLjEsIGZkcykKKworICAgICAgICBwcmludCgiRXhpdGluZyIpCisgICAgICAgICMgUmVtb3ZlIHRoZSBzb2NrZXQgZmlsZSBzbyB3ZSBkb24ndCBnZXQgYW55IG1vcmUgY29ubmVjdGlvbnMgdG8gYXZvaWQgcmFjZXMKKyAgICAgICAgb3MudW5saW5rKHNlbGYuc29ja25hbWUpCisgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCisKKyAgICAgICAgdHJ5OiAKKyAgICAgICAgICAgIHNlbGYuY29va2VyLnNodXRkb3duKFRydWUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmNvb2tlci5wb3N0X3NlcnZlKCkKKworICAgICAgICAjIEZpbmFsbHkgcmVsZWFzZSB0aGUgbG9ja2ZpbGUgYnV0IHdhcm4gYWJvdXQgb3RoZXIgcHJvY2Vzc2VzIGhvbGRpbmcgaXQgb3BlbgorICAgICAgICBsb2NrID0gc2VsZi5iaXRiYWtlX2xvY2sKKyAgICAgICAgbG9ja2ZpbGUgPSBsb2NrLm5hbWUKKyAgICAgICAgbG9jay5jbG9zZSgpCisgICAgICAgIGxvY2sgPSBOb25lCisKKyAgICAgICAgd2hpbGUgbm90IGxvY2s6CisgICAgICAgICAgICB3aXRoIGJiLnV0aWxzLnRpbWVvdXQoMyk6CisgICAgICAgICAgICAgICAgbG9jayA9IGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlLCBzaGFyZWQ9RmFsc2UsIHJldHJ5PUZhbHNlLCBibG9jaz1UcnVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsb2NrOgorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgc3lzdGVtcyBtYXkgbm90IGhhdmUgbHNvZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgcHJvY3MgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuQ29tbWFuZChbInN0YXRlRm9yY2VTaHV0ZG93biJdKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsibHNvZiIsICctdycsIGxvY2tmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgcHJvY3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRmFsbCBiYWNrIHRvIGZ1c2VyIGlmIGxzb2YgaXMgdW5hdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsiZnVzZXIiLCAnLXYnLCBsb2NrZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgICAgICAgICBzZWxmLmlkbGVfY29tbWFuZHMoLjEsIFtzZWxmLmNvbW1hbmRfY2hhbm5lbCwgc2VsZi5xdWl0b3V0XSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmV4Y2VwdGlvbignUnVubmluZyBjb21tYW5kICVzJywgY29tbWFuZCkKLQotICAgICAgICBzZWxmLmV2ZW50X3F1ZXVlLmNsb3NlKCkKLSAgICAgICAgYmIuZXZlbnQudW5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuZXZlbnRfaGFuZGxlLnZhbHVlKQotICAgICAgICBzZWxmLmNvbW1hbmRfY2hhbm5lbC5jbG9zZSgpCi0gICAgICAgIHNlbGYuY29va2VyLnNodXRkb3duKFRydWUpCi0gICAgICAgIHNlbGYucXVpdG91dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJEZWxheWluZyBzaHV0ZG93biBkdWUgdG8gYWN0aXZlIHByb2Nlc3NlcyB3aGljaCBhcHBlYXIgdG8gYmUgaG9sZGluZyBiaXRiYWtlLmxvY2siCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2NzOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICI6XG4lcyIgJSBzdHIocHJvY3MpCisgICAgICAgICAgICAgICAgICAgIHByaW50KG1zZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgV2UgaG9sZCB0aGUgbG9jayBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBmaWxlIChoaWRlIHN0YWxlIHBpZCBkYXRhKQorICAgICAgICBiYi51dGlscy5yZW1vdmUobG9ja2ZpbGUpCisgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKIAogICAgIGRlZiBpZGxlX2NvbW1hbmRzKHNlbGYsIGRlbGF5LCBmZHM9Tm9uZSk6CiAgICAgICAgIG5leHRzbGVlcCA9IGRlbGF5CkBAIC0xODYsMTA5ICszMDYsMzE3IEBACiAgICAgICAgICAgICBuZXh0c2xlZXAgPSBzZWxmLm5leHRfaGVhcnRiZWF0IC0gbm93CiAKICAgICAgICAgaWYgbmV4dHNsZWVwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChmZHMsW10sW10sbmV4dHNsZWVwKQorICAgICAgICAgICAgaWYgc2VsZi54bWxycGM6CisgICAgICAgICAgICAgICAgbmV4dHNsZWVwID0gc2VsZi54bWxycGMuZ2V0X3RpbWVvdXQobmV4dHNsZWVwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KGZkcyxbXSxbXSxuZXh0c2xlZXApWzBdCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICAjIElnbm9yZSBFSU5UUgorICAgICAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGVjdC5zZWxlY3QoZmRzLFtdLFtdLDApWzBdCisKKworY2xhc3MgU2VydmVyQ29tbXVuaWNhdG9yKCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm5lY3Rpb24sIHJlY3YpOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAgIHNlbGYucmVjdiA9IHJlY3YKIAogICAgIGRlZiBydW5Db21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICAiIiIKLSAgICAgICAgUnVuIGEgY29va2VyIGNvbW1hbmQgb24gdGhlIHNlcnZlcgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWwuc2VuZChzZWxmLmNvb2tlci5jb21tYW5kLnJ1bkNvbW1hbmQoY29tbWFuZCkpCisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kKGNvbW1hbmQpCisgICAgICAgIGlmIG5vdCBzZWxmLnJlY3YucG9sbCgzMCk6CisgICAgICAgICAgICByYWlzZSBQcm9jZXNzVGltZW91dCgiVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHJlcGx5IGZyb20gdGhlIGJpdGJha2Ugc2VydmVyIikKKyAgICAgICAgcmV0dXJuIHNlbGYucmVjdi5nZXQoKQogCi0gICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYucXVpdGluLnNlbmQoInF1aXQiKQotICAgICAgICBzZWxmLnF1aXRpbi5jbG9zZSgpCi0KLWNsYXNzIEJpdEJha2VQcm9jZXNzU2VydmVyQ29ubmVjdGlvbihCaXRCYWtlQmFzZVNlcnZlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXJJbXBsLCB1aV9jaGFubmVsLCBldmVudF9xdWV1ZSk6Ci0gICAgICAgIHNlbGYucHJvY3NlcnZlciA9IHNlcnZlckltcGwKLSAgICAgICAgc2VsZi51aV9jaGFubmVsID0gdWlfY2hhbm5lbAotICAgICAgICBzZWxmLmV2ZW50X3F1ZXVlID0gZXZlbnRfcXVldWUKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gU2VydmVyQ29tbXVuaWNhdG9yKHNlbGYudWlfY2hhbm5lbCwgc2VsZi5wcm9jc2VydmVyLmV2ZW50X2hhbmRsZSwgc2VsZi5wcm9jc2VydmVyKQotICAgICAgICBzZWxmLmV2ZW50cyA9IHNlbGYuZXZlbnRfcXVldWUKLSAgICAgICAgc2VsZi50ZXJtaW5hdGVkID0gRmFsc2UKLQotICAgIGRlZiBzaWd0ZXJtX3Rlcm1pbmF0ZShzZWxmKToKLSAgICAgICAgYmIuZXJyb3IoIlVJIHJlY2VpdmVkIFNJR1RFUk0iKQotICAgICAgICBzZWxmLnRlcm1pbmF0ZSgpCi0KLSAgICBkZWYgdGVybWluYXRlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi50ZXJtaW5hdGVkID0gVHJ1ZQotICAgICAgICBkZWYgZmx1c2hldmVudHMoKToKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBldmVudCA9IHNlbGYuZXZlbnRfcXVldWUuZ2V0KGJsb2NrPUZhbHNlKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoRW1wdHksIElPRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKLQotICAgICAgICBzZWxmLnByb2NzZXJ2ZXIuc3RvcCgpCi0KLSAgICAgICAgd2hpbGUgc2VsZi5wcm9jc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICBmbHVzaGV2ZW50cygpCi0gICAgICAgICAgICBzZWxmLnByb2NzZXJ2ZXIuam9pbigwLjEpCi0KLSAgICAgICAgc2VsZi51aV9jaGFubmVsLmNsb3NlKCkKLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuZXZlbnRfcXVldWUuc2V0ZXhpdCgpCi0gICAgICAgICMgWFhYOiBDYWxsIGV4cGxpY2l0eSBjbG9zZSBpbiBfd3JpdGVyIHRvIGF2b2lkCi0gICAgICAgICMgZmQgbGVha2FnZSBiZWNhdXNlIGlzbid0IGNhbGxlZCBvbiBRdWV1ZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuZXZlbnRfcXVldWUuX3dyaXRlci5jbG9zZSgpCi0KLSMgV3JhcCBRdWV1ZSB0byBwcm92aWRlIEFQSSB3aGljaCBpc24ndCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMKLWNsYXNzIFByb2Nlc3NFdmVudFF1ZXVlKG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuUXVldWUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplKToKLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcy5RdWV1ZS5fX2luaXRfXyhzZWxmLCBtYXhzaXplLCBjdHg9bXVsdGlwcm9jZXNzaW5nLmdldF9jb250ZXh0KCkpCi0gICAgICAgIHNlbGYuZXhpdCA9IEZhbHNlCi0gICAgICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIlByb2Nlc3NFUXVldWUiKQotCi0gICAgZGVmIHNldGV4aXQoc2VsZik6Ci0gICAgICAgIHNlbGYuZXhpdCA9IFRydWUKLQotICAgIGRlZiB3YWl0RXZlbnQoc2VsZiwgdGltZW91dCk6Ci0gICAgICAgIGlmIHNlbGYuZXhpdDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldEV2ZW50KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0RXZlbnQoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0KFRydWUsIHRpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBFbXB0eToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0RXZlbnQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlci5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAgIHNlbGYuc2V0ZXhpdCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCi0gICAgICAgIGV4Y2VwdCBFbXB0eToKLSAgICAgICAgICAgIGlmIHNlbGYuZXhpdDoKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotY2xhc3MgQml0QmFrZVNlcnZlcihCaXRCYWtlQmFzZVNlcnZlcik6Ci0gICAgZGVmIGluaXRTZXJ2ZXIoc2VsZiwgc2luZ2xlX3VzZT1UcnVlKToKLSAgICAgICAgIyBlc3RhYmxpc2ggY29tbXVuaWNhdGlvbiBjaGFubmVscy4gIFdlIHVzZSBiaWRpcmVjdGlvbmFsIHBpcGVzIGZvcgotICAgICAgICAjIHVpIDwtLT4gc2VydmVyIGNvbW1hbmQvcmVzcG9uc2UgcGFpcnMKLSAgICAgICAgIyBhbmQgYSBxdWV1ZSBmb3Igc2VydmVyIC0+IHVpIGV2ZW50IG5vdGlmaWNhdGlvbnMKLSAgICAgICAgIwotICAgICAgICBzZWxmLnVpX2NoYW5uZWwsIHNlbGYuc2VydmVyX2NoYW5uZWwgPSBQaXBlKCkKLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZSA9IFByb2Nlc3NFdmVudFF1ZXVlKDApCi0gICAgICAgIHNlbGYuc2VydmVySW1wbCA9IFByb2Nlc3NTZXJ2ZXIoc2VsZi5zZXJ2ZXJfY2hhbm5lbCwgc2VsZi5ldmVudF9xdWV1ZSwgTm9uZSkKLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZS5zZXJ2ZXIgPSBzZWxmLnNlcnZlckltcGwKLQotICAgIGRlZiBkZXRhY2goc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVySW1wbC5zdGFydCgpCi0gICAgICAgIHJldHVybgotCi0gICAgZGVmIGVzdGFibGlzaENvbm5lY3Rpb24oc2VsZiwgZmVhdHVyZXNldCk6Ci0KLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gQml0QmFrZVByb2Nlc3NTZXJ2ZXJDb25uZWN0aW9uKHNlbGYuc2VydmVySW1wbCwgc2VsZi51aV9jaGFubmVsLCBzZWxmLmV2ZW50X3F1ZXVlKQotCi0gICAgICAgIF8sIGVycm9yID0gc2VsZi5jb25uZWN0aW9uLmNvbm5lY3Rpb24ucnVuQ29tbWFuZChbInNldEZlYXR1cmVzIiwgZmVhdHVyZXNldF0pCisgICAgZGVmIHVwZGF0ZUZlYXR1cmVTZXQoc2VsZiwgZmVhdHVyZXNldCk6CisgICAgICAgIF8sIGVycm9yID0gc2VsZi5ydW5Db21tYW5kKFsic2V0RmVhdHVyZXMiLCBmZWF0dXJlc2V0XSkKICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBzZXQgdGhlIGNvb2tlciB0byB0aGUgY29ycmVjdCBmZWF0dXJlc2V0OiAlcyIgJSBlcnJvcikKICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIGxhbWJkYSBpLCBzOiBzZWxmLmNvbm5lY3Rpb24uc2lndGVybV90ZXJtaW5hdGUoKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGlvbgorCisgICAgZGVmIGdldEV2ZW50SGFuZGxlKHNlbGYpOgorICAgICAgICBoYW5kbGUsIGVycm9yID0gc2VsZi5ydW5Db21tYW5kKFsiZ2V0VUlIYW5kbGVyTnVtIl0pCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IFVJIEhhbmRsZXIgTnVtYmVyOiAlcyIgJSBlcnJvcikKKyAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCisKKyAgICAgICAgcmV0dXJuIGhhbmRsZQorCisgICAgZGVmIHRlcm1pbmF0ZVNlcnZlcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmQoWyd0ZXJtaW5hdGVTZXJ2ZXInXSkKKyAgICAgICAgcmV0dXJuCisKK2NsYXNzIEJpdEJha2VQcm9jZXNzU2VydmVyQ29ubmVjdGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1aV9jaGFubmVsLCByZWN2LCBlcSwgc29jayk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IFNlcnZlckNvbW11bmljYXRvcih1aV9jaGFubmVsLCByZWN2KQorICAgICAgICBzZWxmLmV2ZW50cyA9IGVxCisgICAgICAgICMgU2F2ZSBzb2NrIHNvIGl0IGRvZXNuJ3QgZ2V0IGdjJ2QgZm9yIHRoZSBsaWZlIG9mIG91ciBjb25uZWN0aW9uCisgICAgICAgIHNlbGYuc29ja2V0X2Nvbm5lY3Rpb24gPSBzb2NrCisKKyAgICBkZWYgdGVybWluYXRlKHNlbGYpOgorICAgICAgICBzZWxmLnNvY2tldF9jb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLmNvbm5lY3Rpb24uY2xvc2UoKQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVjdi5jbG9zZSgpCisgICAgICAgIHJldHVybgorCitjbGFzcyBCaXRCYWtlU2VydmVyKG9iamVjdCk6CisgICAgc3RhcnRfbG9nX2Zvcm1hdCA9ICctLS0gU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIgcGlkICVzIGF0ICVzIC0tLScKKyAgICBzdGFydF9sb2dfZGF0ZXRpbWVfZm9ybWF0ID0gJyVZLSVtLSVkICVIOiVNOiVTLiVmJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2ssIHNvY2tuYW1lLCBjb25maWd1cmF0aW9uLCBmZWF0dXJlc2V0KToKKworICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuZmVhdHVyZXNldCA9IGZlYXR1cmVzZXQKKyAgICAgICAgc2VsZi5zb2NrbmFtZSA9IHNvY2tuYW1lCisgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrID0gbG9jaworICAgICAgICBzZWxmLnJlYWR5cGlwZSwgc2VsZi5yZWFkeXBpcGVpbiA9IG9zLnBpcGUoKQorCisgICAgICAgICMgQ3JlYXRlIHNlcnZlciBjb250cm9sIHNvY2tldAorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzb2NrbmFtZSk6CisgICAgICAgICAgICBvcy51bmxpbmsoc29ja25hbWUpCisKKyAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAjIEFGX1VOSVggaGFzIHBhdGggbGVuZ3RoIGlzc3VlcyBzbyBjaGRpciBoZXJlIHRvIHdvcmthcm91bmQKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguam9pbihjd2QsICJiaXRiYWtlLWNvb2tlcmRhZW1vbi5sb2ciKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShzb2NrbmFtZSkpCisgICAgICAgICAgICBzZWxmLnNvY2suYmluZChvcy5wYXRoLmJhc2VuYW1lKHNvY2tuYW1lKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKKyAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigxKQorCisgICAgICAgIG9zLnNldF9pbmhlcml0YWJsZShzZWxmLnNvY2suZmlsZW5vKCksIFRydWUpCisgICAgICAgIHN0YXJ0ZGF0ZXRpbWUgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorICAgICAgICBiYi5kYWVtb25pemUuY3JlYXRlRGFlbW9uKHNlbGYuX3N0YXJ0U2VydmVyLCBsb2dmaWxlKQorICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmJpdGJha2VfbG9jay5jbG9zZSgpCisKKyAgICAgICAgcmVhZHkgPSBDb25uZWN0aW9uUmVhZGVyKHNlbGYucmVhZHlwaXBlKQorICAgICAgICByID0gcmVhZHkucG9sbCgzMCkKKyAgICAgICAgaWYgcjoKKyAgICAgICAgICAgIHIgPSByZWFkeS5nZXQoKQorICAgICAgICBpZiBub3QgciBvciByICE9ICJyZWFkeSI6CisgICAgICAgICAgICByZWFkeS5jbG9zZSgpCisgICAgICAgICAgICBiYi5lcnJvcigiVW5hYmxlIHRvIHN0YXJ0IGJpdGJha2Ugc2VydmVyIikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgorICAgICAgICAgICAgICAgIGxvZ3N0YXJ0X3JlID0gcmUuY29tcGlsZShzZWxmLnN0YXJ0X2xvZ19mb3JtYXQgJSAoJyhbMC05XSspJywgJyhbMC05LV0rIFswLTk6Ll0rKScpKQorICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gbG9nc3RhcnRfcmUubWF0Y2gobGluZS5yc3RyaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxkYXRldGltZSA9IGRhdGV0aW1lLmRhdGV0aW1lLnN0cnB0aW1lKHJlcy5ncm91cCgyKSwgc2VsZi5zdGFydF9sb2dfZGF0ZXRpbWVfZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZGF0ZXRpbWUgPj0gc3RhcnRkYXRldGltZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBpZiBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDEwOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIkxhc3QgMTAgbGluZXMgb2Ygc2VydmVyIGxvZyBmb3IgdGhpcyBzZXNzaW9uICglcyk6XG4lcyIgJSAobG9nZmlsZSwgIiIuam9pbihsaW5lc1stMTA6XSkpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIlNlcnZlciBsb2cgZm9yIHRoaXMgc2Vzc2lvbiAoJXMpOlxuJXMiICUgKGxvZ2ZpbGUsICIiLmpvaW4obGluZXMpKSkKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkKKyAgICAgICAgcmVhZHkuY2xvc2UoKQorICAgICAgICBvcy5jbG9zZShzZWxmLnJlYWR5cGlwZWluKQorCisgICAgZGVmIF9zdGFydFNlcnZlcihzZWxmKToKKyAgICAgICAgcHJpbnQoc2VsZi5zdGFydF9sb2dfZm9ybWF0ICUgKG9zLmdldHBpZCgpLCBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZShzZWxmLnN0YXJ0X2xvZ19kYXRldGltZV9mb3JtYXQpKSkKKyAgICAgICAgc2VydmVyID0gUHJvY2Vzc1NlcnZlcihzZWxmLmJpdGJha2VfbG9jaywgc2VsZi5zb2NrLCBzZWxmLnNvY2tuYW1lKQorICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24uc2V0U2VydmVyUmVnSWRsZUNhbGxiYWNrKHNlcnZlci5yZWdpc3Rlcl9pZGxlX2Z1bmN0aW9uKQorICAgICAgICB3cml0ZXIgPSBDb25uZWN0aW9uV3JpdGVyKHNlbGYucmVhZHlwaXBlaW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY29va2VyID0gYmIuY29va2VyLkJCQ29va2VyKHNlbGYuY29uZmlndXJhdGlvbiwgc2VsZi5mZWF0dXJlc2V0KQorICAgICAgICAgICAgd3JpdGVyLnNlbmQoInJlYWR5IikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgd3JpdGVyLnNlbmQoImZhaWwiKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYucmVhZHlwaXBlaW4pCisgICAgICAgIHNlcnZlci5jb29rZXIgPSBzZWxmLmNvb2tlcgorICAgICAgICBzZXJ2ZXIuc2VydmVyX3RpbWVvdXQgPSBzZWxmLmNvbmZpZ3VyYXRpb24uc2VydmVyX3RpbWVvdXQKKyAgICAgICAgc2VydmVyLnhtbHJwY2ludGVyZmFjZSA9IHNlbGYuY29uZmlndXJhdGlvbi54bWxycGNpbnRlcmZhY2UKKyAgICAgICAgcHJpbnQoIlN0YXJ0ZWQgYml0YmFrZSBzZXJ2ZXIgcGlkICVkIiAlIG9zLmdldHBpZCgpKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorCitkZWYgY29ubmVjdFByb2Nlc3NTZXJ2ZXIoc29ja25hbWUsIGZlYXR1cmVzZXQpOgorICAgICMgQ29ubmVjdCB0byBzb2NrZXQKKyAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICMgQUZfVU5JWCBoYXMgcGF0aCBsZW5ndGggaXNzdWVzIHNvIGNoZGlyIGhlcmUgdG8gd29ya2Fyb3VuZAorICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisKKyAgICB0cnk6CisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShzb2NrbmFtZSkpCisgICAgICAgIHNvY2suY29ubmVjdChvcy5wYXRoLmJhc2VuYW1lKHNvY2tuYW1lKSkKKyAgICBmaW5hbGx5OgorICAgICAgICBvcy5jaGRpcihjd2QpCisKKyAgICByZWFkZmQgPSB3cml0ZWZkID0gcmVhZGZkMSA9IHdyaXRlZmQxID0gcmVhZGZkMiA9IHdyaXRlZmQyID0gTm9uZQorICAgIGVxID0gY29tbWFuZF9jaGFuX3JlY3YgPSBjb21tYW5kX2NoYW4gPSBOb25lCisKKyAgICB0cnk6CisKKyAgICAgICAgIyBTZW5kIGFuIGZkIGZvciB0aGUgcmVtb3RlIHRvIHdyaXRlIGV2ZW50cyB0bworICAgICAgICByZWFkZmQsIHdyaXRlZmQgPSBvcy5waXBlKCkKKyAgICAgICAgZXEgPSBCQlVJRXZlbnRRdWV1ZShyZWFkZmQpCisgICAgICAgICMgU2VuZCBhbiBmZCBmb3IgdGhlIHJlbW90ZSB0byByZWNpZXZlIGNvbW1hbmRzIGZyb20KKyAgICAgICAgcmVhZGZkMSwgd3JpdGVmZDEgPSBvcy5waXBlKCkKKyAgICAgICAgY29tbWFuZF9jaGFuID0gQ29ubmVjdGlvbldyaXRlcih3cml0ZWZkMSkKKyAgICAgICAgIyBTZW5kIGFuIGZkIGZvciB0aGUgcmVtb3RlIHRvIHdyaXRlIGNvbW1hbmRzIHJlc3VsdHMgdG8KKyAgICAgICAgcmVhZGZkMiwgd3JpdGVmZDIgPSBvcy5waXBlKCkKKyAgICAgICAgY29tbWFuZF9jaGFuX3JlY3YgPSBDb25uZWN0aW9uUmVhZGVyKHJlYWRmZDIpCisKKyAgICAgICAgc2VuZGZkcyhzb2NrLCBbd3JpdGVmZCwgcmVhZGZkMSwgd3JpdGVmZDJdKQorCisgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uID0gQml0QmFrZVByb2Nlc3NTZXJ2ZXJDb25uZWN0aW9uKGNvbW1hbmRfY2hhbiwgY29tbWFuZF9jaGFuX3JlY3YsIGVxLCBzb2NrKQorCisgICAgICAgICMgQ2xvc2UgdGhlIGVuZHMgb2YgdGhlIHBpcGVzIHdlIHdvbid0IHVzZQorICAgICAgICBmb3IgaSBpbiBbd3JpdGVmZCwgcmVhZGZkMSwgd3JpdGVmZDJdOgorICAgICAgICAgICAgb3MuY2xvc2UoaSkKKworICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbi5jb25uZWN0aW9uLnVwZGF0ZUZlYXR1cmVTZXQoZmVhdHVyZXNldCkKKworICAgIGV4Y2VwdCAoRXhjZXB0aW9uLCBTeXN0ZW1FeGl0KSBhcyBlOgorICAgICAgICBpZiBjb21tYW5kX2NoYW5fcmVjdjoKKyAgICAgICAgICAgIGNvbW1hbmRfY2hhbl9yZWN2LmNsb3NlKCkKKyAgICAgICAgaWYgY29tbWFuZF9jaGFuOgorICAgICAgICAgICAgY29tbWFuZF9jaGFuLmNsb3NlKCkKKyAgICAgICAgZm9yIGkgaW4gW3dyaXRlZmQsIHJlYWRmZDEsIHdyaXRlZmQyXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShpKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgcmFpc2UKKworICAgIHJldHVybiBzZXJ2ZXJfY29ubmVjdGlvbgorCitkZWYgc2VuZGZkcyhzb2NrLCBmZHMpOgorICAgICAgICAnJydTZW5kIGFuIGFycmF5IG9mIGZkcyBvdmVyIGFuIEFGX1VOSVggc29ja2V0LicnJworICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgnaScsIGZkcykKKyAgICAgICAgbXNnID0gYnl0ZXMoW2xlbihmZHMpICUgMjU2XSkKKyAgICAgICAgc29jay5zZW5kbXNnKFttc2ddLCBbKHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU0NNX1JJR0hUUywgZmRzKV0pCisKK2RlZiByZWN2ZmRzKHNvY2ssIHNpemUpOgorICAgICAgICAnJydSZWNlaXZlIGFuIGFycmF5IG9mIGZkcyBvdmVyIGFuIEFGX1VOSVggc29ja2V0LicnJworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2knKQorICAgICAgICBieXRlc19zaXplID0gYS5pdGVtc2l6ZSAqIHNpemUKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNvY2sucmVjdm1zZygxLCBzb2NrZXQuQ01TR19MRU4oYnl0ZXNfc2l6ZSkpCisgICAgICAgIGlmIG5vdCBtc2cgYW5kIG5vdCBhbmNkYXRhOgorICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbGVuKGFuY2RhdGEpICE9IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdyZWNlaXZlZCAlZCBpdGVtcyBvZiBhbmNkYXRhJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihhbmNkYXRhKSkKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICBpZiBsZW4oY21zZ19kYXRhKSAlIGEuaXRlbXNpemUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKGEpICUgMjU2ID09IG1zZ1swXQorICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KGEpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSW52YWxpZCBkYXRhIHJlY2VpdmVkJykKKworY2xhc3MgQkJVSUV2ZW50UXVldWU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRmZCk6CisKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlID0gW10KKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTm90aWZ5ID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgICAgICBzZWxmLnJlYWRlciA9IENvbm5lY3Rpb25SZWFkZXIocmVhZGZkKQorCisgICAgICAgIHNlbGYudCA9IHRocmVhZGluZy5UaHJlYWQoKQorICAgICAgICBzZWxmLnQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgIHNlbGYudC5ydW4gPSBzZWxmLnN0YXJ0Q2FsbGJhY2tIYW5kbGVyCisgICAgICAgIHNlbGYudC5zdGFydCgpCisKKyAgICBkZWYgZ2V0RXZlbnQoc2VsZik6CisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2suYWNxdWlyZSgpCisKKyAgICAgICAgaWYgbGVuKHNlbGYuZXZlbnRRdWV1ZSkgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2sucmVsZWFzZSgpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGl0ZW0gPSBzZWxmLmV2ZW50UXVldWUucG9wKDApCisKKyAgICAgICAgaWYgbGVuKHNlbGYuZXZlbnRRdWV1ZSkgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuZXZlbnRRdWV1ZU5vdGlmeS5jbGVhcigpCisKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTG9jay5yZWxlYXNlKCkKKyAgICAgICAgcmV0dXJuIGl0ZW0KKworICAgIGRlZiB3YWl0RXZlbnQoc2VsZiwgZGVsYXkpOgorICAgICAgICBzZWxmLmV2ZW50UXVldWVOb3RpZnkud2FpdChkZWxheSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0RXZlbnQoKQorCisgICAgZGVmIHF1ZXVlX2V2ZW50KHNlbGYsIGV2ZW50KToKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlLmFwcGVuZChldmVudCkKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTm90aWZ5LnNldCgpCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2sucmVsZWFzZSgpCisKKyAgICBkZWYgc2VuZF9ldmVudChzZWxmLCBldmVudCk6CisgICAgICAgIHNlbGYucXVldWVfZXZlbnQocGlja2xlLmxvYWRzKGV2ZW50KSkKKworICAgIGRlZiBzdGFydENhbGxiYWNrSGFuZGxlcihzZWxmKToKKyAgICAgICAgYmIudXRpbHMuc2V0X3Byb2Nlc3NfbmFtZSgiVUlFdmVudFF1ZXVlIikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnJlYWRlci53YWl0KCkKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlbGYucmVhZGVyLmdldCgpCisgICAgICAgICAgICAgICAgc2VsZi5xdWV1ZV9ldmVudChldmVudCkKKyAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAjIEVhc2llc3Qgd2F5IHRvIGV4aXQgaXMgdG8gY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBjYXVzZSBhbiBleGl0CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5yZWFkZXIuY2xvc2UoKQorCitjbGFzcyBDb25uZWN0aW9uUmVhZGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmQpOgorICAgICAgICBzZWxmLnJlYWRlciA9IG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkNvbm5lY3Rpb24oZmQsIHdyaXRhYmxlPUZhbHNlKQorICAgICAgICBzZWxmLnJsb2NrID0gbXVsdGlwcm9jZXNzaW5nLkxvY2soKQorCisgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXQoW3NlbGYucmVhZGVyXSwgdGltZW91dCkKKworICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5wb2xsKHRpbWVvdXQpCisKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYucmxvY2s6CisgICAgICAgICAgICByZXMgPSBzZWxmLnJlYWRlci5yZWN2X2J5dGVzKCkKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLmZpbGVubygpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5jbG9zZSgpCisKKworY2xhc3MgQ29ubmVjdGlvbldyaXRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKKyAgICAgICAgc2VsZi53cml0ZXIgPSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uKGZkLCByZWFkYWJsZT1GYWxzZSkKKyAgICAgICAgc2VsZi53bG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKKyAgICAgICAgIyBXaHkgYmIuZXZlbnQgbmVlZHMgdGhpcyBJIGhhdmUgbm8gaWRlYQorICAgICAgICBzZWxmLmV2ZW50ID0gc2VsZgorCisgICAgZGVmIHNlbmQoc2VsZiwgb2JqKToKKyAgICAgICAgb2JqID0gbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbi5Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCisgICAgICAgIHdpdGggc2VsZi53bG9jazoKKyAgICAgICAgICAgIHNlbGYud3JpdGVyLnNlbmRfYnl0ZXMob2JqKQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLmZpbGVubygpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRlci5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDYwMDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIyICswLDAgQEAKLSMKLSMgQml0QmFrZSBYTUxSUEMgU2VydmVyCi0jCi0jIENvcHlyaWdodCAoQykgMjAwNiAtIDIwMDcgIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIKLSMgQ29weXJpZ2h0IChDKSAyMDA2IC0gMjAwOCAgUmljaGFyZCBQdXJkaWUKLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0KLSIiIgotICAgIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYW4geG1scnBjIHNlcnZlciBmb3IgQml0QmFrZS4KLQotICAgIFVzZSB0aGlzIGJ5IGRlcml2aW5nIGEgY2xhc3MgZnJvbSBCaXRCYWtlWE1MUlBDU2VydmVyIGFuZCB0aGVuIGFkZGluZwotICAgIG1ldGhvZHMgd2hpY2ggeW91IHdhbnQgdG8gImV4cG9ydCIgdmlhIFhNTFJQQy4gSWYgdGhlIG1ldGhvZHMgaGF2ZSB0aGUKLSAgICBwcmVmaXggeG1scnBjXywgdGhlbiByZWdpc3RlcmluZyB0aG9zZSBmdW5jdGlvbiB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5LAotICAgIGlmIG5vdCwgeW91IG5lZWQgdG8gY2FsbCByZWdpc3Rlcl9mdW5jdGlvbi4KLQotICAgIFVzZSByZWdpc3Rlcl9pZGxlX2Z1bmN0aW9uKCkgdG8gYWRkIGEgZnVuY3Rpb24gd2hpY2ggdGhlIHhtbHJwYyBzZXJ2ZXIKLSAgICBjYWxscyBmcm9tIHdpdGhpbiBzZXJ2ZXJfZm9yZXZlciB3aGVuIG5vIHJlcXVlc3RzIGFyZSBwZW5kaW5nLiBNYWtlIHN1cmUKLSAgICB0aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgbm9uLWJsb2NraW5nIG9yIGVsc2UgeW91IHdpbGwgaW50cm9kdWNlIGxhdGVuY3kKLSAgICBpbiB0aGUgc2VydmVyJ3MgbWFpbiBsb29wLgotIiIiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IHRpbWUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzaWduYWwKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBwaWNrbGUKLWltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgc2VsZWN0Ci1pbXBvcnQgaHR0cC5jbGllbnQKLWltcG9ydCB4bWxycGMuY2xpZW50Ci1mcm9tIHhtbHJwYy5zZXJ2ZXIgaW1wb3J0IFNpbXBsZVhNTFJQQ1NlcnZlciwgU2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIKLQotaW1wb3J0IGJiCi1mcm9tIGJiIGltcG9ydCBkYWVtb25pemUKLWZyb20gYmIudWkgaW1wb3J0IHVpZXZlbnQKLWZyb20gLiBpbXBvcnQgQml0QmFrZUJhc2VTZXJ2ZXIsIEJpdEJha2VCYXNlU2VydmVyQ29ubmVjdGlvbiwgQmFzZUltcGxTZXJ2ZXIKLQotREVCVUcgPSBGYWxzZQotCi1jbGFzcyBCQlRyYW5zcG9ydCh4bWxycGMuY2xpZW50LlRyYW5zcG9ydCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVvdXQpOgotICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbl90b2tlbiA9IE5vbmUKLSAgICAgICAgeG1scnBjLmNsaWVudC5UcmFuc3BvcnQuX19pbml0X18oc2VsZikKLQotICAgICMgTW9kaWZpZWQgZnJvbSBkZWZhdWx0IHRvIHBhc3MgdGltZW91dCB0byBIVFRQQ29ubmVjdGlvbgotICAgIGRlZiBtYWtlX2Nvbm5lY3Rpb24oc2VsZiwgaG9zdCk6Ci0gICAgICAgICNyZXR1cm4gYW4gZXhpc3RpbmcgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4gIFRoaXMgYWxsb3dzCi0gICAgICAgICNIVFRQLzEuMSBrZWVwLWFsaXZlLgotICAgICAgICBpZiBzZWxmLl9jb25uZWN0aW9uIGFuZCBob3N0ID09IHNlbGYuX2Nvbm5lY3Rpb25bMF06Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQotCi0gICAgICAgICMgY3JlYXRlIGEgSFRUUCBjb25uZWN0aW9uIG9iamVjdCBmcm9tIGEgaG9zdCBkZXNjcmlwdG9yCi0gICAgICAgIGNob3N0LCBzZWxmLl9leHRyYV9oZWFkZXJzLCB4NTA5ID0gc2VsZi5nZXRfaG9zdF9pbmZvKGhvc3QpCi0gICAgICAgICNzdG9yZSB0aGUgaG9zdCBhcmd1bWVudCBhbG9uZyB3aXRoIHRoZSBjb25uZWN0aW9uIG9iamVjdAotICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gaG9zdCwgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oY2hvc3QsIHRpbWVvdXQ9c2VsZi50aW1lb3V0KQotICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQotCi0gICAgZGVmIHNldF9jb25uZWN0aW9uX3Rva2VuKHNlbGYsIHRva2VuKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uX3Rva2VuID0gdG9rZW4KLQotICAgIGRlZiBzZW5kX2NvbnRlbnQoc2VsZiwgaCwgYm9keSk6Ci0gICAgICAgIGlmIHNlbGYuY29ubmVjdGlvbl90b2tlbjoKLSAgICAgICAgICAgIGgucHV0aGVhZGVyKCJCaXRiYWtlLXRva2VuIiwgc2VsZi5jb25uZWN0aW9uX3Rva2VuKQotICAgICAgICB4bWxycGMuY2xpZW50LlRyYW5zcG9ydC5zZW5kX2NvbnRlbnQoc2VsZiwgaCwgYm9keSkKLQotZGVmIF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQsIHRpbWVvdXQgPSA2MCk6Ci0gICAgdCA9IEJCVHJhbnNwb3J0KHRpbWVvdXQpCi0gICAgcyA9IHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkoImh0dHA6Ly8lczolZC8iICUgKGhvc3QsIHBvcnQpLCB0cmFuc3BvcnQ9dCwgYWxsb3dfbm9uZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQotICAgIHJldHVybiBzLCB0Ci0KLWRlZiBjaGVja19jb25uZWN0aW9uKHJlbW90ZSwgdGltZW91dCk6Ci0gICAgdHJ5OgotICAgICAgICBob3N0LCBwb3J0ID0gcmVtb3RlLnNwbGl0KCI6IikKLSAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIHJlYWQgcmVtb3RlIGRlZmluaXRpb24gKCVzKSIgJSBzdHIoZSkpCi0gICAgICAgIHJhaXNlIGUKLQotICAgIHNlcnZlciwgX3RyYW5zcG9ydCA9IF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQsIHRpbWVvdXQpCi0gICAgdHJ5OgotICAgICAgICByZXQsIGVyciA9ICBzZXJ2ZXIucnVuQ29tbWFuZChbJ2dldFZhcmlhYmxlJywgJ1RPUERJUiddKQotICAgICAgICBpZiBlcnIgb3Igbm90IHJldDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KLWNsYXNzIEJpdEJha2VTZXJ2ZXJDb21tYW5kcygpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcik6Ci0gICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCi0gICAgICAgIHNlbGYuaGFzX2NsaWVudCA9IEZhbHNlCi0KLSAgICBkZWYgcmVnaXN0ZXJFdmVudEhhbmRsZXIoc2VsZiwgaG9zdCwgcG9ydCk6Ci0gICAgICAgICIiIgotICAgICAgICBSZWdpc3RlciBhIHJlbW90ZSBVSSBFdmVudCBIYW5kbGVyCi0gICAgICAgICIiIgotICAgICAgICBzLCB0ID0gX2NyZWF0ZV9zZXJ2ZXIoaG9zdCwgcG9ydCkKLQotICAgICAgICAjIHdlIGRvbid0IGFsbG93IGNvbm5lY3Rpb25zIGlmIHRoZSBjb29rZXIgaXMgcnVubmluZwotICAgICAgICBpZiAoc2VsZi5jb29rZXIuc3RhdGUgaW4gW2JiLmNvb2tlci5zdGF0ZS5wYXJzaW5nLCBiYi5jb29rZXIuc3RhdGUucnVubmluZ10pOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsICJDb29rZXIgaXMgYnVzeTogJXMiICUgYmIuY29va2VyLnN0YXRlLmdldF9uYW1lKHNlbGYuY29va2VyLnN0YXRlKQotCi0gICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzLCBUcnVlKQotICAgICAgICByZXR1cm4gc2VsZi5ldmVudF9oYW5kbGUsICdPSycKLQotICAgIGRlZiB1bnJlZ2lzdGVyRXZlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXJOdW0pOgotICAgICAgICAiIiIKLSAgICAgICAgVW5yZWdpc3RlciBhIHJlbW90ZSBVSSBFdmVudCBIYW5kbGVyCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gYmIuZXZlbnQudW5yZWdpc3Rlcl9VSUhoYW5kbGVyKGhhbmRsZXJOdW0pCi0KLSAgICBkZWYgcnVuQ29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJ1biBhIGNvb2tlciBjb21tYW5kIG9uIHRoZSBzZXJ2ZXIKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmNvb2tlci5jb21tYW5kLnJ1bkNvbW1hbmQoY29tbWFuZCwgc2VsZi5zZXJ2ZXIucmVhZG9ubHkpCi0KLSAgICBkZWYgZ2V0RXZlbnRIYW5kbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmV2ZW50X2hhbmRsZQotCi0gICAgZGVmIHRlcm1pbmF0ZVNlcnZlcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRyaWdnZXIgdGhlIHNlcnZlciB0byBxdWl0Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNlcnZlci5xdWl0ID0gVHJ1ZQotICAgICAgICBwcmludCgiU2VydmVyIChjb29rZXIpIGV4aXRpbmciKQotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBhZGRDbGllbnQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuaGFzX2NsaWVudDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHRva2VuID0gaGFzaGxpYi5tZDUoc3RyKHRpbWUudGltZSgpKS5lbmNvZGUoInV0Zi04IikpLmhleGRpZ2VzdCgpCi0gICAgICAgIHNlbGYuc2VydmVyLnNldF9jb25uZWN0aW9uX3Rva2VuKHRva2VuKQotICAgICAgICBzZWxmLmhhc19jbGllbnQgPSBUcnVlCi0gICAgICAgIHJldHVybiB0b2tlbgotCi0gICAgZGVmIHJlbW92ZUNsaWVudChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5oYXNfY2xpZW50OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2V0X2Nvbm5lY3Rpb25fdG9rZW4oTm9uZSkKLSAgICAgICAgICAgIHNlbGYuaGFzX2NsaWVudCA9IEZhbHNlCi0gICAgICAgICAgICBpZiBzZWxmLnNlcnZlci5zaW5nbGVfdXNlOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnF1aXQgPSBUcnVlCi0KLSMgVGhpcyByZXF1ZXN0IGhhbmRsZXIgY2hlY2tzIGlmIHRoZSByZXF1ZXN0IGhhcyBhICJCaXRiYWtlLXRva2VuIiBoZWFkZXIKLSMgZmllbGQgKHRoaXMgY29tZXMgZnJvbSB0aGUgY2xpZW50IHNpZGUpIGFuZCBjb21wYXJlcyBpdCB3aXRoIGl0cyBpbnRlcm5hbAotIyAiQml0YmFrZS10b2tlbiIgZmllbGQgKHRoaXMgY29tZXMgZnJvbSB0aGUgc2VydmVyKS4gSWYgdGhlIHR3byBhcmUgbm90Ci0jIGVxdWFsLCBpdCBpcyBhc3N1bWVkIHRoYXQgYSBjbGllbnQgaXMgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlcgotIyB3aGlsZSBhbm90aGVyIGNsaWVudCBpcyBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlci4gSW4gdGhpcyBjYXNlLCBhIDUwMyBlcnJvcgotIyAoInNlcnZpY2UgdW5hdmFpbGFibGUiKSBpcyByZXR1cm5lZCB0byB0aGUgY2xpZW50LgotY2xhc3MgQml0QmFrZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcik6Ci0gICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCi0gICAgICAgIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCi0KLSAgICBkZWYgZG9fUE9TVChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVtb3RlX3Rva2VuID0gc2VsZi5oZWFkZXJzWyJCaXRiYWtlLXRva2VuIl0KLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmVtb3RlX3Rva2VuID0gTm9uZQotICAgICAgICBpZiByZW1vdGVfdG9rZW4gIT0gc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbl90b2tlbiBhbmQgcmVtb3RlX3Rva2VuICE9ICJvYnNlcnZlciI6Ci0gICAgICAgICAgICBzZWxmLnJlcG9ydF81MDMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcmVtb3RlX3Rva2VuID09ICJvYnNlcnZlciI6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZG9ubHkgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlYWRvbmx5ID0gRmFsc2UKLSAgICAgICAgICAgIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLmRvX1BPU1Qoc2VsZikKLQotICAgIGRlZiByZXBvcnRfNTAzKHNlbGYpOgotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNTAzKQotICAgICAgICByZXNwb25zZSA9ICdObyBtb3JlIGNsaWVudCBhbGxvd2VkJwotICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9wbGFpbiIpCi0gICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIiwgc3RyKGxlbihyZXNwb25zZSkpKQotICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgc2VsZi53ZmlsZS53cml0ZShieXRlcyhyZXNwb25zZSwgJ3V0Zi04JykpCi0KLQotY2xhc3MgWE1MUlBDUHJveHlTZXJ2ZXIoQmFzZUltcGxTZXJ2ZXIpOgotICAgICIiIiBub3QgYSByZWFsIHdvcmtpbmcgc2VydmVyLCBidXQgYSBzdHViIGZvciBhIHByb3h5IHNlcnZlciBjb25uZWN0aW9uCi0KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKLSAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAotCi1jbGFzcyBYTUxSUENTZXJ2ZXIoU2ltcGxlWE1MUlBDU2VydmVyLCBCYXNlSW1wbFNlcnZlcik6Ci0gICAgIyByZW1vdmUgdGhpcyB3aGVuIHlvdSdyZSBkb25lIHdpdGggZGVidWdnaW5nCi0gICAgIyBhbGxvd19yZXVzZV9hZGRyZXNzID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVyZmFjZSwgc2luZ2xlX3VzZT1GYWxzZSwgaWRsZV90aW1lb3V0PTApOgotICAgICAgICAiIiIKLSAgICAgICAgQ29uc3RydWN0b3IKLSAgICAgICAgIiIiCi0gICAgICAgIEJhc2VJbXBsU2VydmVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuc2luZ2xlX3VzZSA9IHNpbmdsZV91c2UKLSAgICAgICAgIyBVc2UgYXV0byBwb3J0IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKGludGVyZmFjZVsxXSA9PSAtMSk6Ci0gICAgICAgICAgICBpbnRlcmZhY2UgPSAoaW50ZXJmYWNlWzBdLCAwKQotICAgICAgICBTaW1wbGVYTUxSUENTZXJ2ZXIuX19pbml0X18oc2VsZiwgaW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXI9Qml0QmFrZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9RmFsc2UsIGFsbG93X25vbmU9VHJ1ZSkKLSAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbl90b2tlbiA9IE5vbmUKLSAgICAgICAgI3NlbGYucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQotICAgICAgICBzZWxmLmNvbW1hbmRzID0gQml0QmFrZVNlcnZlckNvbW1hbmRzKHNlbGYpCi0gICAgICAgIHNlbGYuYXV0b3JlZ2lzdGVyX2FsbF9mdW5jdGlvbnMoc2VsZi5jb21tYW5kcywgIiIpCi0gICAgICAgIHNlbGYuaW50ZXJmYWNlID0gaW50ZXJmYWNlCi0gICAgICAgIHNlbGYudGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuaWRsZV90aW1lb3V0ID0gaWRsZV90aW1lb3V0Ci0gICAgICAgIGlmIGlkbGVfdGltZW91dDoKLSAgICAgICAgICAgIHNlbGYucmVnaXN0ZXJfaWRsZV9mdW5jdGlvbihzZWxmLmhhbmRsZV9pZGxlX3RpbWVvdXQsIHNlbGYpCi0KLSAgICBkZWYgYWRkY29va2VyKHNlbGYsIGNvb2tlcik6Ci0gICAgICAgIEJhc2VJbXBsU2VydmVyLmFkZGNvb2tlcihzZWxmLCBjb29rZXIpCi0gICAgICAgIHNlbGYuY29tbWFuZHMuY29va2VyID0gY29va2VyCi0KLSAgICBkZWYgYXV0b3JlZ2lzdGVyX2FsbF9mdW5jdGlvbnMoc2VsZiwgY29udGV4dCwgcHJlZml4KToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgcmVnaXN0ZXJpbmcgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgc2NvcGUKLSAgICAgICAgb2YgdGhpcyBjbGFzcyB0aGF0IHN0YXJ0IHdpdGggYSBjb21tb24gcHJlZml4Ci0gICAgICAgICIiIgotICAgICAgICBtZXRob2RsaXN0ID0gaW5zcGVjdC5nZXRtZW1iZXJzKGNvbnRleHQsIGluc3BlY3QuaXNtZXRob2QpCi0gICAgICAgIGZvciBuYW1lLCBtZXRob2QgaW4gbWV0aG9kbGlzdDoKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAgIHNlbGYucmVnaXN0ZXJfZnVuY3Rpb24obWV0aG9kLCBuYW1lW2xlbihwcmVmaXgpOl0pCi0KLSAgICBkZWYgaGFuZGxlX2lkbGVfdGltZW91dChzZWxmLCBzZXJ2ZXIsIGRhdGEsIGFib3J0KToKLSAgICAgICAgaWYgbm90IGFib3J0OgotICAgICAgICAgICAgaWYgdGltZS50aW1lKCkgLSBzZXJ2ZXIudGltZSA+IHNlcnZlci5pZGxlX3RpbWVvdXQ6Ci0gICAgICAgICAgICAgICAgc2VydmVyLnF1aXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcHJpbnQoIlNlcnZlciBpZGxlIHRpbWVvdXQgZXhwaXJlZCIpCi0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6Ci0gICAgICAgICMgU3RhcnQgdGhlIGFjdHVhbCBYTUxSUEMgc2VydmVyCi0gICAgICAgIGJiLmNvb2tlci5zZXJ2ZXJfbWFpbihzZWxmLmNvb2tlciwgc2VsZi5fc2VydmVfZm9yZXZlcikKLQotICAgIGRlZiBfc2VydmVfZm9yZXZlcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFNlcnZlIFJlcXVlc3RzLiBPdmVybG9hZGVkIHRvIGhvbm9yIGEgcXVpdCBjb21tYW5kCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQotICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgotICAgICAgICAgICAgZmRzID0gW3NlbGZdCi0gICAgICAgICAgICBuZXh0c2xlZXAgPSAwLjEKLSAgICAgICAgICAgIGZvciBmdW5jdGlvbiwgZGF0YSBpbiBsaXN0KHNlbGYuX2lkbGVmdW5zLml0ZW1zKCkpOgotICAgICAgICAgICAgICAgIHJldHZhbCA9IE5vbmUKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IGZ1bmN0aW9uKHNlbGYsIGRhdGEsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiByZXR2YWwgaXMgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5faWRsZWZ1bnNbZnVuY3Rpb25dCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgcmV0dmFsIGlzIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0c2xlZXAgPSAwCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXR2YWwsIGZsb2F0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXR2YWwgPCBuZXh0c2xlZXApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRzbGVlcCA9IHJldHZhbAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmRzID0gZmRzICsgcmV0dmFsCi0gICAgICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgICAgICBpZiByZXR2YWwgPT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGZ1bmN0aW9uIGV4ZWN1dGUgZmFpbGVkOyBkZWxldGUgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9pZGxlZnVuc1tmdW5jdGlvbl0KLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICBzb2NrdGltZW91dCA9IHNlbGYuc29ja2V0LmdldHRpbWVvdXQoKSBvciBuZXh0c2xlZXAKLSAgICAgICAgICAgIHNvY2t0aW1lb3V0ID0gbWluKHNvY2t0aW1lb3V0LCBuZXh0c2xlZXApCi0gICAgICAgICAgICAjIE1pcnJvciB3aGF0IEJhc2VTZXJ2ZXIgaGFuZGxlX3JlcXVlc3Qgd291bGQgZG8KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmZF9zZXRzID0gc2VsZWN0LnNlbGVjdChmZHMsIFtdLCBbXSwgc29ja3RpbWVvdXQpCi0gICAgICAgICAgICAgICAgaWYgZmRfc2V0c1swXSBhbmQgc2VsZiBpbiBmZF9zZXRzWzBdOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlkbGVfdGltZW91dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyB3ZSBpZ25vcmUgaW50ZXJydXB0ZWQgY2FsbHMKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBUZWxsIGlkbGUgZnVuY3Rpb25zIHdlJ3JlIGV4aXRpbmcKLSAgICAgICAgZm9yIGZ1bmN0aW9uLCBkYXRhIGluIGxpc3Qoc2VsZi5faWRsZWZ1bnMuaXRlbXMoKSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gZnVuY3Rpb24oc2VsZiwgZGF0YSwgVHJ1ZSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYgc2V0X2Nvbm5lY3Rpb25fdG9rZW4oc2VsZiwgdG9rZW4pOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb25fdG9rZW4gPSB0b2tlbgotCi1jbGFzcyBCaXRCYWtlWE1MUlBDU2VydmVyQ29ubmVjdGlvbihCaXRCYWtlQmFzZVNlcnZlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXJJbXBsLCBjbGllbnRpbmZvPSgibG9jYWxob3N0IiwgMCksIG9ic2VydmVyX29ubHkgPSBGYWxzZSwgZmVhdHVyZXNldCA9IE5vbmUpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb24sIHNlbGYudHJhbnNwb3J0ID0gX2NyZWF0ZV9zZXJ2ZXIoc2VydmVySW1wbC5ob3N0LCBzZXJ2ZXJJbXBsLnBvcnQpCi0gICAgICAgIHNlbGYuY2xpZW50aW5mbyA9IGNsaWVudGluZm8KLSAgICAgICAgc2VsZi5zZXJ2ZXJJbXBsID0gc2VydmVySW1wbAotICAgICAgICBzZWxmLm9ic2VydmVyX29ubHkgPSBvYnNlcnZlcl9vbmx5Ci0gICAgICAgIGlmIGZlYXR1cmVzZXQ6Ci0gICAgICAgICAgICBzZWxmLmZlYXR1cmVzZXQgPSBmZWF0dXJlc2V0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZlYXR1cmVzZXQgPSBbXQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZiwgdG9rZW4gPSBOb25lKToKLSAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYub2JzZXJ2ZXJfb25seToKLSAgICAgICAgICAgICAgICB0b2tlbiA9ICJvYnNlcnZlciIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLmNvbm5lY3Rpb24uYWRkQ2xpZW50KCkKLQotICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLnRyYW5zcG9ydC5zZXRfY29ubmVjdGlvbl90b2tlbih0b2tlbikKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBzZXR1cEV2ZW50UXVldWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZXZlbnRzID0gdWlldmVudC5CQlVJRXZlbnRRdWV1ZShzZWxmLmNvbm5lY3Rpb24sIHNlbGYuY2xpZW50aW5mbykKLSAgICAgICAgZm9yIGV2ZW50IGluIGJiLmV2ZW50LnVpX3F1ZXVlOgotICAgICAgICAgICAgc2VsZi5ldmVudHMucXVldWVfZXZlbnQoZXZlbnQpCi0KLSAgICAgICAgXywgZXJyb3IgPSBzZWxmLmNvbm5lY3Rpb24ucnVuQ29tbWFuZChbInNldEZlYXR1cmVzIiwgc2VsZi5mZWF0dXJlc2V0XSkKLSAgICAgICAgaWYgZXJyb3I6Ci0gICAgICAgICAgICAjIGRpc2Nvbm5lY3QgdGhlIGNsaWVudCwgd2UgY2FuJ3QgbWFrZSB0aGUgc2V0RmVhdHVyZSB3b3JrCi0gICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCkKLSAgICAgICAgICAgICMgbm8gbmVlZCB0byBsb2cgaXQgaGVyZSwgdGhlIGVycm9yIHNoYWxsIGJlIHNlbnQgdG8gdGhlIGNsaWVudAotICAgICAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbihlcnJvcikKLQotICAgIGRlZiByZW1vdmVDbGllbnQoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLm9ic2VydmVyX29ubHk6Ci0gICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCkKLQotICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6Ci0gICAgICAgICMgRG9uJ3Qgd2FpdCBmb3Igc2VydmVyIGluZGVmaW5pdGVseQotICAgICAgICBpbXBvcnQgc29ja2V0Ci0gICAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dCgyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmV2ZW50cy5zeXN0ZW1fcXVpdCgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotY2xhc3MgQml0QmFrZVNlcnZlcihCaXRCYWtlQmFzZVNlcnZlcik6Ci0gICAgZGVmIGluaXRTZXJ2ZXIoc2VsZiwgaW50ZXJmYWNlID0gKCJsb2NhbGhvc3QiLCAwKSwKLSAgICAgICAgICAgICAgICAgICBzaW5nbGVfdXNlID0gRmFsc2UsIGlkbGVfdGltZW91dD0wKToKLSAgICAgICAgc2VsZi5pbnRlcmZhY2UgPSBpbnRlcmZhY2UKLSAgICAgICAgc2VsZi5zZXJ2ZXJJbXBsID0gWE1MUlBDU2VydmVyKGludGVyZmFjZSwgc2luZ2xlX3VzZSwgaWRsZV90aW1lb3V0KQotCi0gICAgZGVmIGRldGFjaChzZWxmKToKLSAgICAgICAgZGFlbW9uaXplLmNyZWF0ZURhZW1vbihzZWxmLnNlcnZlckltcGwuc2VydmVfZm9yZXZlciwgImJpdGJha2UtY29va2VyZGFlbW9uLmxvZyIpCi0gICAgICAgIGRlbCBzZWxmLmNvb2tlcgotCi0gICAgZGVmIGVzdGFibGlzaENvbm5lY3Rpb24oc2VsZiwgZmVhdHVyZXNldCk6Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IEJpdEJha2VYTUxSUENTZXJ2ZXJDb25uZWN0aW9uKHNlbGYuc2VydmVySW1wbCwgc2VsZi5pbnRlcmZhY2UsIEZhbHNlLCBmZWF0dXJlc2V0KQotICAgICAgICByZXR1cm4gc2VsZi5jb25uZWN0aW9uLmNvbm5lY3QoKQotCi0gICAgZGVmIHNldF9jb25uZWN0aW9uX3Rva2VuKHNlbGYsIHRva2VuKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uLnRyYW5zcG9ydC5zZXRfY29ubmVjdGlvbl90b2tlbih0b2tlbikKLQotY2xhc3MgQml0QmFrZVhNTFJQQ0NsaWVudChCaXRCYWtlQmFzZVNlcnZlcik6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2JzZXJ2ZXJfb25seSA9IEZhbHNlLCB0b2tlbiA9IE5vbmUpOgotICAgICAgICBzZWxmLnRva2VuID0gdG9rZW4KLQotICAgICAgICBzZWxmLm9ic2VydmVyX29ubHkgPSBvYnNlcnZlcl9vbmx5Ci0gICAgICAgICMgaWYgd2UgbmVlZCBleHRyYSBjYWNoZXMsIGp1c3QgdGVsbCB0aGUgc2VydmVyIHRvIGxvYWQgdGhlbSBhbGwKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNhdmVDb25uZWN0aW9uRGV0YWlscyhzZWxmLCByZW1vdGUpOgotICAgICAgICBzZWxmLnJlbW90ZSA9IHJlbW90ZQotCi0gICAgZGVmIGVzdGFibGlzaENvbm5lY3Rpb24oc2VsZiwgZmVhdHVyZXNldCk6Ci0gICAgICAgICMgVGhlIGZvcm1hdCBvZiAicmVtb3RlIiBtdXN0IGJlICJzZXJ2ZXI6cG9ydCIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgW2hvc3QsIHBvcnRdID0gc2VsZi5yZW1vdGUuc3BsaXQoIjoiKQotICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gcmVhZCByZW1vdGUgZGVmaW5pdGlvbiAoJXMpIiAlIHN0cihlKSkKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICAjIFdlIG5lZWQgb3VyIElQIGZvciB0aGUgc2VydmVyIGNvbm5lY3Rpb24uIFdlIGdldCB0aGUgSVAKLSAgICAgICAgIyBieSB0cnlpbmcgdG8gY29ubmVjdCB3aXRoIHRoZSBzZXJ2ZXIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQotICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgIGlwID0gcy5nZXRzb2NrbmFtZSgpWzBdCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgYmIud2FybigiQ291bGQgbm90IGNyZWF0ZSBzb2NrZXQgZm9yICVzOiVzICglcykiICUgKGhvc3QsIHBvcnQsIHN0cihlKSkpCi0gICAgICAgICAgICByYWlzZSBlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc2VydmVySW1wbCA9IFhNTFJQQ1Byb3h5U2VydmVyKGhvc3QsIHBvcnQsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCi0gICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBCaXRCYWtlWE1MUlBDU2VydmVyQ29ubmVjdGlvbihzZWxmLnNlcnZlckltcGwsIChpcCwgMCksIHNlbGYub2JzZXJ2ZXJfb25seSwgZmVhdHVyZXNldCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24uY29ubmVjdChzZWxmLnRva2VuKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBiYi53YXJuKCJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIgYXQgJXM6JXMgKCVzKSIgJSAoaG9zdCwgcG9ydCwgc3RyKGUpKSkKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgIGRlZiBlbmRTZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY2MWE5ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5CkBAIC0wLDAgKzEsMTU0IEBACisjCisjIEJpdEJha2UgWE1MUlBDIENsaWVudCBJbnRlcmZhY2UKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA2IC0gMjAwNyAgTWljaGFlbCAnTWlja2V5JyBMYXVlcgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgLSAyMDA4ICBSaWNoYXJkIFB1cmRpZQorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBodHRwLmNsaWVudAoraW1wb3J0IHhtbHJwYy5jbGllbnQKKworaW1wb3J0IGJiCitmcm9tIGJiLnVpIGltcG9ydCB1aWV2ZW50CisKK2NsYXNzIEJCVHJhbnNwb3J0KHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZW91dCk6CisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uX3Rva2VuID0gTm9uZQorICAgICAgICB4bWxycGMuY2xpZW50LlRyYW5zcG9ydC5fX2luaXRfXyhzZWxmKQorCisgICAgIyBNb2RpZmllZCBmcm9tIGRlZmF1bHQgdG8gcGFzcyB0aW1lb3V0IHRvIEhUVFBDb25uZWN0aW9uCisgICAgZGVmIG1ha2VfY29ubmVjdGlvbihzZWxmLCBob3N0KToKKyAgICAgICAgI3JldHVybiBhbiBleGlzdGluZyBjb25uZWN0aW9uIGlmIHBvc3NpYmxlLiAgVGhpcyBhbGxvd3MKKyAgICAgICAgI0hUVFAvMS4xIGtlZXAtYWxpdmUuCisgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3Rpb24gYW5kIGhvc3QgPT0gc2VsZi5fY29ubmVjdGlvblswXToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uWzFdCisKKyAgICAgICAgIyBjcmVhdGUgYSBIVFRQIGNvbm5lY3Rpb24gb2JqZWN0IGZyb20gYSBob3N0IGRlc2NyaXB0b3IKKyAgICAgICAgY2hvc3QsIHNlbGYuX2V4dHJhX2hlYWRlcnMsIHg1MDkgPSBzZWxmLmdldF9ob3N0X2luZm8oaG9zdCkKKyAgICAgICAgI3N0b3JlIHRoZSBob3N0IGFyZ3VtZW50IGFsb25nIHdpdGggdGhlIGNvbm5lY3Rpb24gb2JqZWN0CisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSBob3N0LCBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihjaG9zdCwgdGltZW91dD1zZWxmLnRpbWVvdXQpCisgICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uWzFdCisKKyAgICBkZWYgc2V0X2Nvbm5lY3Rpb25fdG9rZW4oc2VsZiwgdG9rZW4pOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25fdG9rZW4gPSB0b2tlbgorCisgICAgZGVmIHNlbmRfY29udGVudChzZWxmLCBoLCBib2R5KToKKyAgICAgICAgaWYgc2VsZi5jb25uZWN0aW9uX3Rva2VuOgorICAgICAgICAgICAgaC5wdXRoZWFkZXIoIkJpdGJha2UtdG9rZW4iLCBzZWxmLmNvbm5lY3Rpb25fdG9rZW4pCisgICAgICAgIHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0LnNlbmRfY29udGVudChzZWxmLCBoLCBib2R5KQorCitkZWYgX2NyZWF0ZV9zZXJ2ZXIoaG9zdCwgcG9ydCwgdGltZW91dCA9IDYwKToKKyAgICB0ID0gQkJUcmFuc3BvcnQodGltZW91dCkKKyAgICBzID0geG1scnBjLmNsaWVudC5TZXJ2ZXJQcm94eSgiaHR0cDovLyVzOiVkLyIgJSAoaG9zdCwgcG9ydCksIHRyYW5zcG9ydD10LCBhbGxvd19ub25lPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgcmV0dXJuIHMsIHQKKworZGVmIGNoZWNrX2Nvbm5lY3Rpb24ocmVtb3RlLCB0aW1lb3V0KToKKyAgICB0cnk6CisgICAgICAgIGhvc3QsIHBvcnQgPSByZW1vdGUuc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnQpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gcmVhZCByZW1vdGUgZGVmaW5pdGlvbiAoJXMpIiAlIHN0cihlKSkKKyAgICAgICAgcmFpc2UgZQorCisgICAgc2VydmVyLCBfdHJhbnNwb3J0ID0gX2NyZWF0ZV9zZXJ2ZXIoaG9zdCwgcG9ydCwgdGltZW91dCkKKyAgICB0cnk6CisgICAgICAgIHJldCwgZXJyID0gIHNlcnZlci5ydW5Db21tYW5kKFsnZ2V0VmFyaWFibGUnLCAnVE9QRElSJ10pCisgICAgICAgIGlmIGVyciBvciBub3QgcmV0OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZXhjZXB0IENvbm5lY3Rpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworY2xhc3MgQml0QmFrZVhNTFJQQ1NlcnZlckNvbm5lY3Rpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgY2xpZW50aW5mbz0oImxvY2FsaG9zdCIsIDApLCBvYnNlcnZlcl9vbmx5ID0gRmFsc2UsIGZlYXR1cmVzZXQgPSBOb25lKToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBzZWxmLnRyYW5zcG9ydCA9IF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQpCisgICAgICAgIHNlbGYuY2xpZW50aW5mbyA9IGNsaWVudGluZm8KKyAgICAgICAgc2VsZi5vYnNlcnZlcl9vbmx5ID0gb2JzZXJ2ZXJfb25seQorICAgICAgICBpZiBmZWF0dXJlc2V0OgorICAgICAgICAgICAgc2VsZi5mZWF0dXJlc2V0ID0gZmVhdHVyZXNldAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mZWF0dXJlc2V0ID0gW10KKworICAgICAgICBzZWxmLmV2ZW50cyA9IHVpZXZlbnQuQkJVSUV2ZW50UXVldWUoc2VsZi5jb25uZWN0aW9uLCBzZWxmLmNsaWVudGluZm8pCisKKyAgICAgICAgXywgZXJyb3IgPSBzZWxmLmNvbm5lY3Rpb24ucnVuQ29tbWFuZChbInNldEZlYXR1cmVzIiwgc2VsZi5mZWF0dXJlc2V0XSkKKyAgICAgICAgaWYgZXJyb3I6CisgICAgICAgICAgICAjIGRpc2Nvbm5lY3QgdGhlIGNsaWVudCwgd2UgY2FuJ3QgbWFrZSB0aGUgc2V0RmVhdHVyZSB3b3JrCisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCkKKyAgICAgICAgICAgICMgbm8gbmVlZCB0byBsb2cgaXQgaGVyZSwgdGhlIGVycm9yIHNoYWxsIGJlIHNlbnQgdG8gdGhlIGNsaWVudAorICAgICAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbihlcnJvcikKKworICAgIGRlZiBjb25uZWN0KHNlbGYsIHRva2VuID0gTm9uZSk6CisgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLm9ic2VydmVyX29ubHk6CisgICAgICAgICAgICAgICAgdG9rZW4gPSAib2JzZXJ2ZXIiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5jb25uZWN0aW9uLmFkZENsaWVudCgpCisKKyAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi50cmFuc3BvcnQuc2V0X2Nvbm5lY3Rpb25fdG9rZW4odG9rZW4pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgcmVtb3ZlQ2xpZW50KHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5vYnNlcnZlcl9vbmx5OgorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCisKKyAgICBkZWYgdGVybWluYXRlKHNlbGYpOgorICAgICAgICAjIERvbid0IHdhaXQgZm9yIHNlcnZlciBpbmRlZmluaXRlbHkKKyAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KDIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuZXZlbnRzLnN5c3RlbV9xdWl0KCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworCitkZWYgY29ubmVjdFhNTFJQQyhyZW1vdGUsIGZlYXR1cmVzZXQsIG9ic2VydmVyX29ubHkgPSBGYWxzZSwgdG9rZW4gPSBOb25lKToKKyAgICAjIFRoZSBmb3JtYXQgb2YgInJlbW90ZSIgbXVzdCBiZSAic2VydmVyOnBvcnQiCisgICAgdHJ5OgorICAgICAgICBbaG9zdCwgcG9ydF0gPSByZW1vdGUuc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnQpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gcGFyc2UgcmVtb3RlIGRlZmluaXRpb24gJXMgKCVzKSIgJSAocmVtb3RlLCBzdHIoZSkpKQorICAgICAgICByYWlzZSBlCisKKyAgICAjIFdlIG5lZWQgb3VyIElQIGZvciB0aGUgc2VydmVyIGNvbm5lY3Rpb24uIFdlIGdldCB0aGUgSVAKKyAgICAjIGJ5IHRyeWluZyB0byBjb25uZWN0IHdpdGggdGhlIHNlcnZlcgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQorICAgICAgICBzLmNvbm5lY3QoKGhvc3QsIHBvcnQpKQorICAgICAgICBpcCA9IHMuZ2V0c29ja25hbWUoKVswXQorICAgICAgICBzLmNsb3NlKCkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJiLndhcm4oIkNvdWxkIG5vdCBjcmVhdGUgc29ja2V0IGZvciAlczolcyAoJXMpIiAlIChob3N0LCBwb3J0LCBzdHIoZSkpKQorICAgICAgICByYWlzZSBlCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gQml0QmFrZVhNTFJQQ1NlcnZlckNvbm5lY3Rpb24oaG9zdCwgcG9ydCwgKGlwLCAwKSwgb2JzZXJ2ZXJfb25seSwgZmVhdHVyZXNldCkKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24uY29ubmVjdCh0b2tlbikKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJiLndhcm4oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlciBhdCAlczolcyAoJXMpIiAlIChob3N0LCBwb3J0LCBzdHIoZSkpKQorICAgICAgICByYWlzZSBlCisKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NWIxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQpAQCAtMCwwICsxLDE1OCBAQAorIworIyBCaXRCYWtlIFhNTFJQQyBTZXJ2ZXIgSW50ZXJmYWNlCisjCisjIENvcHlyaWdodCAoQykgMjAwNiAtIDIwMDcgIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIKKyMgQ29weXJpZ2h0IChDKSAyMDA2IC0gMjAwOCAgUmljaGFyZCBQdXJkaWUKKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IHRpbWUKK2ltcG9ydCBpbnNwZWN0Citmcm9tIHhtbHJwYy5zZXJ2ZXIgaW1wb3J0IFNpbXBsZVhNTFJQQ1NlcnZlciwgU2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIKKworaW1wb3J0IGJiCisKKyMgVGhpcyByZXF1ZXN0IGhhbmRsZXIgY2hlY2tzIGlmIHRoZSByZXF1ZXN0IGhhcyBhICJCaXRiYWtlLXRva2VuIiBoZWFkZXIKKyMgZmllbGQgKHRoaXMgY29tZXMgZnJvbSB0aGUgY2xpZW50IHNpZGUpIGFuZCBjb21wYXJlcyBpdCB3aXRoIGl0cyBpbnRlcm5hbAorIyAiQml0YmFrZS10b2tlbiIgZmllbGQgKHRoaXMgY29tZXMgZnJvbSB0aGUgc2VydmVyKS4gSWYgdGhlIHR3byBhcmUgbm90CisjIGVxdWFsLCBpdCBpcyBhc3N1bWVkIHRoYXQgYSBjbGllbnQgaXMgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlcgorIyB3aGlsZSBhbm90aGVyIGNsaWVudCBpcyBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlci4gSW4gdGhpcyBjYXNlLCBhIDUwMyBlcnJvcgorIyAoInNlcnZpY2UgdW5hdmFpbGFibGUiKSBpcyByZXR1cm5lZCB0byB0aGUgY2xpZW50LgorY2xhc3MgQml0QmFrZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcik6CisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCisgICAgICAgIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCisKKyAgICBkZWYgZG9fUE9TVChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVtb3RlX3Rva2VuID0gc2VsZi5oZWFkZXJzWyJCaXRiYWtlLXRva2VuIl0KKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmVtb3RlX3Rva2VuID0gTm9uZQorICAgICAgICBpZiAwIGFuZCByZW1vdGVfdG9rZW4gIT0gc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbl90b2tlbiBhbmQgcmVtb3RlX3Rva2VuICE9ICJvYnNlcnZlciI6CisgICAgICAgICAgICBzZWxmLnJlcG9ydF81MDMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcmVtb3RlX3Rva2VuID09ICJvYnNlcnZlciI6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZG9ubHkgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlYWRvbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLmRvX1BPU1Qoc2VsZikKKworICAgIGRlZiByZXBvcnRfNTAzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNTAzKQorICAgICAgICByZXNwb25zZSA9ICdObyBtb3JlIGNsaWVudCBhbGxvd2VkJworICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9wbGFpbiIpCisgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIiwgc3RyKGxlbihyZXNwb25zZSkpKQorICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi53ZmlsZS53cml0ZShieXRlcyhyZXNwb25zZSwgJ3V0Zi04JykpCisKK2NsYXNzIEJpdEJha2VYTUxSUENTZXJ2ZXIoU2ltcGxlWE1MUlBDU2VydmVyKToKKyAgICAjIHJlbW92ZSB0aGlzIHdoZW4geW91J3JlIGRvbmUgd2l0aCBkZWJ1Z2dpbmcKKyAgICAjIGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW50ZXJmYWNlLCBjb29rZXIsIHBhcmVudCk6CisgICAgICAgICMgVXNlIGF1dG8gcG9ydCBjb25maWd1cmF0aW9uCisgICAgICAgIGlmIChpbnRlcmZhY2VbMV0gPT0gLTEpOgorICAgICAgICAgICAgaW50ZXJmYWNlID0gKGludGVyZmFjZVswXSwgMCkKKyAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPUJpdEJha2VYTUxSUENSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPUZhbHNlLCBhbGxvd19ub25lPVRydWUpCisgICAgICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBzZWxmLmludGVyZmFjZSA9IGludGVyZmFjZQorCisgICAgICAgIHNlbGYuY29ubmVjdGlvbl90b2tlbiA9IE5vbmUKKyAgICAgICAgc2VsZi5jb21tYW5kcyA9IEJpdEJha2VYTUxSUENTZXJ2ZXJDb21tYW5kcyhzZWxmKQorICAgICAgICBzZWxmLnJlZ2lzdGVyX2Z1bmN0aW9ucyhzZWxmLmNvbW1hbmRzLCAiIikKKworICAgICAgICBzZWxmLmNvb2tlciA9IGNvb2tlcgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisKKyAgICBkZWYgcmVnaXN0ZXJfZnVuY3Rpb25zKHNlbGYsIGNvbnRleHQsIHByZWZpeCk6CisgICAgICAgICIiIgorICAgICAgICBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHJlZ2lzdGVyaW5nIGFsbCBmdW5jdGlvbnMgaW4gdGhlIHNjb3BlCisgICAgICAgIG9mIHRoaXMgY2xhc3MgdGhhdCBzdGFydCB3aXRoIGEgY29tbW9uIHByZWZpeAorICAgICAgICAiIiIKKyAgICAgICAgbWV0aG9kbGlzdCA9IGluc3BlY3QuZ2V0bWVtYmVycyhjb250ZXh0LCBpbnNwZWN0LmlzbWV0aG9kKQorICAgICAgICBmb3IgbmFtZSwgbWV0aG9kIGluIG1ldGhvZGxpc3Q6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgICAgICAgICBzZWxmLnJlZ2lzdGVyX2Z1bmN0aW9uKG1ldGhvZCwgbmFtZVtsZW4ocHJlZml4KTpdKQorCisgICAgZGVmIGdldF90aW1lb3V0KHNlbGYsIGRlbGF5KToKKyAgICAgICAgc29ja3RpbWVvdXQgPSBzZWxmLnNvY2tldC5nZXR0aW1lb3V0KCkgb3IgZGVsYXkKKyAgICAgICAgcmV0dXJuIG1pbihzb2NrdGltZW91dCwgZGVsYXkpCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3RzKHNlbGYpOgorICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKworY2xhc3MgQml0QmFrZVhNTFJQQ1NlcnZlckNvbW1hbmRzKCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKKyAgICAgICAgc2VsZi5oYXNfY2xpZW50ID0gRmFsc2UKKworICAgIGRlZiByZWdpc3RlckV2ZW50SGFuZGxlcihzZWxmLCBob3N0LCBwb3J0KToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgcmVtb3RlIFVJIEV2ZW50IEhhbmRsZXIKKyAgICAgICAgIiIiCisgICAgICAgIHMsIHQgPSBiYi5zZXJ2ZXIueG1scnBjY2xpZW50Ll9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQpCisKKyAgICAgICAgIyB3ZSBkb24ndCBhbGxvdyBjb25uZWN0aW9ucyBpZiB0aGUgY29va2VyIGlzIHJ1bm5pbmcKKyAgICAgICAgaWYgKHNlbGYuc2VydmVyLmNvb2tlci5zdGF0ZSBpbiBbYmIuY29va2VyLnN0YXRlLnBhcnNpbmcsIGJiLmNvb2tlci5zdGF0ZS5ydW5uaW5nXSk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgIkNvb2tlciBpcyBidXN5OiAlcyIgJSBiYi5jb29rZXIuc3RhdGUuZ2V0X25hbWUoc2VsZi5zZXJ2ZXIuY29va2VyLnN0YXRlKQorCisgICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzLCBUcnVlKQorICAgICAgICByZXR1cm4gc2VsZi5ldmVudF9oYW5kbGUsICdPSycKKworICAgIGRlZiB1bnJlZ2lzdGVyRXZlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXJOdW0pOgorICAgICAgICAiIiIKKyAgICAgICAgVW5yZWdpc3RlciBhIHJlbW90ZSBVSSBFdmVudCBIYW5kbGVyCisgICAgICAgICIiIgorICAgICAgICByZXQgPSBiYi5ldmVudC51bnJlZ2lzdGVyX1VJSGhhbmRsZXIoaGFuZGxlck51bSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5ldmVudF9oYW5kbGUgPSBOb25lCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBydW5Db21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICAiIiIKKyAgICAgICAgUnVuIGEgY29va2VyIGNvbW1hbmQgb24gdGhlIHNlcnZlcgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmNvb2tlci5jb21tYW5kLnJ1bkNvbW1hbmQoY29tbWFuZCwgc2VsZi5zZXJ2ZXIucmVhZG9ubHkpCisKKyAgICBkZWYgZ2V0RXZlbnRIYW5kbGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmV2ZW50X2hhbmRsZQorCisgICAgZGVmIHRlcm1pbmF0ZVNlcnZlcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRyaWdnZXIgdGhlIHNlcnZlciB0byBxdWl0CisgICAgICAgICIiIgorICAgICAgICBzZWxmLnNlcnZlci5wYXJlbnQucXVpdCA9IFRydWUKKyAgICAgICAgcHJpbnQoIlhNTFJQQyBTZXJ2ZXIgdHJpZ2dlcmluZyBleGl0IikKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgYWRkQ2xpZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlci5wYXJlbnQuaGF2ZXVpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdG9rZW4gPSBoYXNobGliLm1kNShzdHIodGltZS50aW1lKCkpLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbl90b2tlbiA9IHRva2VuCisgICAgICAgIHNlbGYuc2VydmVyLnBhcmVudC5oYXZldWkgPSBUcnVlCisgICAgICAgIHJldHVybiB0b2tlbgorCisgICAgZGVmIHJlbW92ZUNsaWVudChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucGFyZW50LmhhdmV1aToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25fdG9rZW4gPSBOb25lCisgICAgICAgICAgICBzZWxmLnNlcnZlci5wYXJlbnQuaGF2ZXVpID0gRmFsc2UKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKaW5kZXggZjcxMTkwYS4uNWVmODJkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2lnZ2VuLnB5CkBAIC02OSw2ICs2OSwxMCBAQAogICAgIGRlZiBzZXRfdGFza2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYucnVudGFza2RlcHMsIHNlbGYudGFza2hhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoID0gZGF0YQogCisgICAgZGVmIHJlc2V0KHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9faW5pdF9fKGRhdGEpCisKKwogY2xhc3MgU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWMoU2lnbmF0dXJlR2VuZXJhdG9yKToKICAgICAiIiIKICAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQppbmRleCA4Yzk2YTU2Li4wZWE2YzBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgIiIiCiAgICAgQml0QmFrZSBUYXNrIERhdGEgaW1wbGVtZW50YXRpb24KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWJvcnQgPSBUcnVlLCB0cnlhbHRjb25maWdzID0gRmFsc2UsIHNraXBsaXN0ID0gTm9uZSwgYWxsb3dpbmNvbXBsZXRlID0gRmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhYm9ydCA9IFRydWUsIHNraXBsaXN0ID0gTm9uZSwgYWxsb3dpbmNvbXBsZXRlID0gRmFsc2UpOgogICAgICAgICBzZWxmLmJ1aWxkX3RhcmdldHMgPSB7fQogICAgICAgICBzZWxmLnJ1bl90YXJnZXRzID0ge30KIApAQCAtNjYsNyArNjYsNiBAQAogICAgICAgICBzZWxmLmZhaWxlZF9mbnMgPSBbXQogCiAgICAgICAgIHNlbGYuYWJvcnQgPSBhYm9ydAotICAgICAgICBzZWxmLnRyeWFsdGNvbmZpZ3MgPSB0cnlhbHRjb25maWdzCiAgICAgICAgIHNlbGYuYWxsb3dpbmNvbXBsZXRlID0gYWxsb3dpbmNvbXBsZXRlCiAKICAgICAgICAgc2VsZi5za2lwbGlzdCA9IHNraXBsaXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdlYjFmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ldmVudC5weQpAQCAtMCwwICsxLDM3NyBAQAorIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKKyMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KKyMKKyMgQml0QmFrZSBUZXN0cyBmb3IgdGhlIEV2ZW50IGltcGxlbWVudGF0aW9uIChldmVudC5weSkKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorIworCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBiYgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBiYi5jb21wYXQKK2ltcG9ydCBiYi5ldmVudAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKK2ltcG9ydCBwaWNrbGUKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBjYWxsCisKKworY2xhc3MgRXZlbnRRdWV1ZVN0dWIoKToKKyAgICAiIiIgQ2xhc3MgdXNlZCBhcyBzcGVjaWZpY2F0aW9uIGZvciBVSSBldmVudCBoYW5kbGVyIHF1ZXVlIHN0dWIgb2JqZWN0cyAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHJldHVybgorCisgICAgZGVmIHNlbmQoc2VsZiwgZXZlbnQpOgorICAgICAgICByZXR1cm4KKworCitjbGFzcyBQaWNrbGVFdmVudFF1ZXVlU3R1YigpOgorICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgcXVldWUgc3R1YiBvYmplY3RzCisgICAgICAgIHdpdGggc2VuZHBpY2tsZSBtZXRob2QgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICByZXR1cm4KKworICAgIGRlZiBzZW5kcGlja2xlKHNlbGYsIHBpY2tsZWRfZXZlbnQpOgorICAgICAgICByZXR1cm4KKworCitjbGFzcyBVSUNsaWVudFN0dWIoKToKKyAgICAiIiIgQ2xhc3MgdXNlZCBhcyBzcGVjaWZpY2F0aW9uIGZvciBVSSBldmVudCBoYW5kbGVyIHN0dWIgb2JqZWN0cyAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZXZlbnQgPSBOb25lCisKKworY2xhc3MgRXZlbnRIYW5kbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBFdmVudCBoYW5kbGluZyB0ZXN0IGNsYXNzICIiIgorICAgIF90aHJlYWRsb2NrX3Rlc3RfY2FsbHMgPSBbXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MgPSBNb2NrKCkKKyAgICAgICAgdWlfY2xpZW50MSA9IFVJQ2xpZW50U3R1YigpCisgICAgICAgIHVpX2NsaWVudDIgPSBVSUNsaWVudFN0dWIoKQorICAgICAgICBzZWxmLl90ZXN0X3VpMSA9IE1vY2sod3JhcHM9dWlfY2xpZW50MSkKKyAgICAgICAgc2VsZi5fdGVzdF91aTIgPSBNb2NrKHdyYXBzPXVpX2NsaWVudDIpCisgICAgICAgIGltcG9ydGxpYi5yZWxvYWQoYmIuZXZlbnQpCisKKyAgICBkZWYgX2NyZWF0ZV90ZXN0X2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAiIiIgTWV0aG9kIHVzZWQgdG8gY3JlYXRlIGEgdGVzdCBoYW5kbGVyIG9yZGVyZWQgZGljdGlvbmFyeSAiIiIKKyAgICAgICAgdGVzdF9oYW5kbGVycyA9IGJiLmNvbXBhdC5PcmRlcmVkRGljdCgpCisgICAgICAgIHRlc3RfaGFuZGxlcnNbImhhbmRsZXIxIl0gPSBzZWxmLl90ZXN0X3Byb2Nlc3MuaGFuZGxlcjEKKyAgICAgICAgdGVzdF9oYW5kbGVyc1siaGFuZGxlcjIiXSA9IHNlbGYuX3Rlc3RfcHJvY2Vzcy5oYW5kbGVyMgorICAgICAgICByZXR1cm4gdGVzdF9oYW5kbGVycworCisgICAgZGVmIHRlc3RfY2xhc3NfaGFuZGxlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHNldF9jbGFzc19oYW5kbGVycyBhbmQgZ2V0X2NsYXNzX2hhbmRsZXJzIG1ldGhvZHMgIiIiCisgICAgICAgIHRlc3RfaGFuZGxlcnMgPSBzZWxmLl9jcmVhdGVfdGVzdF9oYW5kbGVycygpCisgICAgICAgIGJiLmV2ZW50LnNldF9jbGFzc19oYW5kbGVycyh0ZXN0X2hhbmRsZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfaGFuZGxlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuZ2V0X2NsYXNzX2hhbmRsZXJzKCkpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3Qgc2V0X2hhbmRsZXJzIGFuZCBnZXRfaGFuZGxlcnMgIiIiCisgICAgICAgIHRlc3RfaGFuZGxlcnMgPSBzZWxmLl9jcmVhdGVfdGVzdF9oYW5kbGVycygpCisgICAgICAgIGJiLmV2ZW50LnNldF9oYW5kbGVycyh0ZXN0X2hhbmRsZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfaGFuZGxlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuZ2V0X2hhbmRsZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGVhbl9jbGFzc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgY2xlYW5fY2xhc3NfaGFuZGxlcnMgbWV0aG9kICIiIgorICAgICAgICBjbGVhbkRpY3QgPSBiYi5jb21wYXQuT3JkZXJlZERpY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsZWFuRGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5jbGVhbl9jbGFzc19oYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHJlZ2lzdGVyIG1ldGhvZCBmb3IgY2xhc3MgaGFuZGxlcnMgIiIiCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJoYW5kbGVyIiwgc2VsZi5fdGVzdF9wcm9jZXNzLmhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICBoYW5kbGVyc19kaWN0ID0gYmIuZXZlbnQuZ2V0X2NsYXNzX2hhbmRsZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiaGFuZGxlciIsIGhhbmRsZXJzX2RpY3QpCisKKyAgICBkZWYgdGVzdF9hbHJlYWR5X3JlZ2lzdGVyZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGRldGVjdGlvbiBvZiBhbiBhbHJlYWR5IHJlZ2lzdGVkIGNsYXNzIGhhbmRsZXIgIiIiCisgICAgICAgIGJiLmV2ZW50LnJlZ2lzdGVyKCJoYW5kbGVyIiwgc2VsZi5fdGVzdF9wcm9jZXNzLmhhbmRsZXIpCisgICAgICAgIGhhbmRsZXJzX2RpY3QgPSBiYi5ldmVudC5nZXRfY2xhc3NfaGFuZGxlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEluKCJoYW5kbGVyIiwgaGFuZGxlcnNfZGljdCkKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXIoImhhbmRsZXIiLCBzZWxmLl90ZXN0X3Byb2Nlc3MuaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LkFscmVhZHlSZWdpc3RlcmVkKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHJlZ2lzdGVyIG1ldGhvZCByZWNlaXZpbmcgY29kZSBpbiBzdHJpbmcgIiIiCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJzdHJpbmdfaGFuZGxlciIsICIgICAgcmV0dXJuIFRydWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgaGFuZGxlcnNfZGljdCA9IGJiLmV2ZW50LmdldF9jbGFzc19oYW5kbGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmluZ19oYW5kbGVyIiwgaGFuZGxlcnNfZGljdCkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3dpdGhfbWFzayhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgcmVnaXN0ZXIgbWV0aG9kIHdpdGggZXZlbnQgbWFza2luZyAiIiIKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCIsCisgICAgICAgICAgICAgICAgImJiLmV2ZW50Lk9wZXJhdGlvbkNvbXBsZXRlZCJdCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICBoYW5kbGVyc19kaWN0ID0gYmIuZXZlbnQuZ2V0X2NsYXNzX2hhbmRsZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiZXZlbnRfaGFuZGxlciIsIGhhbmRsZXJzX2RpY3QpCisKKyAgICBkZWYgdGVzdF9yZW1vdmUoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHJlbW92ZSBtZXRob2QgZm9yIGNsYXNzIGhhbmRsZXJzICIiIgorICAgICAgICB0ZXN0X2hhbmRsZXJzID0gc2VsZi5fY3JlYXRlX3Rlc3RfaGFuZGxlcnMoKQorICAgICAgICBiYi5ldmVudC5zZXRfY2xhc3NfaGFuZGxlcnModGVzdF9oYW5kbGVycykKKyAgICAgICAgY291bnQgPSBsZW4odGVzdF9oYW5kbGVycykKKyAgICAgICAgYmIuZXZlbnQucmVtb3ZlKCJoYW5kbGVyMSIsIE5vbmUpCisgICAgICAgIHRlc3RfaGFuZGxlcnMgPSBiYi5ldmVudC5nZXRfY2xhc3NfaGFuZGxlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0X2hhbmRsZXJzKSwgY291bnQgLSAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGJiLmV2ZW50LnJlbW92ZSgiaGFuZGxlcjEiLCBOb25lKQorCisgICAgZGVmIHRlc3RfZXhlY3V0ZV9oYW5kbGVyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBleGVjdXRlX2hhbmRsZXIgbWV0aG9kIGZvciBjbGFzcyBoYW5kbGVycyAiIiIKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uUHJvZ3Jlc3MiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5PcGVyYXRpb25Qcm9ncmVzcyhjdXJyZW50PTEwLCB0b3RhbD0xMDApCisgICAgICAgIGJiLmV2ZW50LmV4ZWN1dGVfaGFuZGxlcigiZXZlbnRfaGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKyAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoZXZlbnQpCisKKyAgICBkZWYgdGVzdF9maXJlX2NsYXNzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBmaXJlX2NsYXNzX2hhbmRsZXJzIG1ldGhvZCAiIiIKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCJdCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIioiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCgpCisgICAgICAgIGV2ZW50MiA9IGJiLmV2ZW50Lk9wZXJhdGlvbkNvbXBsZXRlZCh0b3RhbD0xMjMpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQxLCBOb25lKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MiwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIxID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgZXhwZWN0ZWRfZXZlbnRfaGFuZGxlcjIgPSBbY2FsbChldmVudDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKGV2ZW50MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoZXZlbnQyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIyLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2hhbmRsZXJfZXZlbnRfbWFwcGluZyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgY2hhbmdpbmcgdGhlIGV2ZW50IG1hcHBpbmcgZm9yIGNsYXNzIGhhbmRsZXJzICIiIgorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuT3BlcmF0aW9uQ29tcGxldGVkKHRvdGFsPTEyMykKKworICAgICAgICAjIHJlZ2lzdGVyIGhhbmRsZXIgZm9yIGFsbCBldmVudHMKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXIoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQxKSwgY2FsbChldmVudDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMS5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgICAgICAjIHVucmVnaXN0ZXIgaGFuZGxlciBhbmQgcmVnaXN0ZXIgaXQgb25seSBmb3IgT3BlcmF0aW9uU3RhcnRlZAorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZW1vdmUoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSkKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCJdCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQxLCBOb25lKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MiwgTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbChldmVudDEpLCBjYWxsKGV2ZW50MiksIGNhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICAgICAgIyB1bnJlZ2lzdGVyIGhhbmRsZXIgYW5kIHJlZ2lzdGVyIGl0IG9ubHkgZm9yIE9wZXJhdGlvbkNvbXBsZXRlZAorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZW1vdmUoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSkKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uQ29tcGxldGVkIl0KKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXIoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDEsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSksIGNhbGwoZXZlbnQyKSwgY2FsbChldmVudDEpLCBjYWxsKGV2ZW50MildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgcmVnaXN0ZXJfVUlIaGFuZGxlciBtZXRob2QgIiIiCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMSkKKworICAgIGRlZiB0ZXN0X1VJSGhhbmRsZXJfYWxyZWFkeV9yZWdpc3RlcmVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCByZWdpc3RlcmluZyBhbiBVSUhoYW5kbGVyIGFscmVhZHkgZXhpc3RpbmcgIiIiCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMSkKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMSwgbWFpbnVpPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAyKQorCisgICAgZGVmIHRlc3RfdW5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCB1bnJlZ2lzdGVyX1VJSGhhbmRsZXIgbWV0aG9kICIiIgorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnVucmVnaXN0ZXJfVUlIaGFuZGxlcigxKQorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2ZpcmVfdWlfaGFuZGxlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGZpcmVfdWlfaGFuZGxlcnMgbWV0aG9kICIiIgorICAgICAgICBzZWxmLl90ZXN0X3VpMS5ldmVudCA9IE1vY2soc3BlY19zZXQ9RXZlbnRRdWV1ZVN0dWIpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMSkKKyAgICAgICAgc2VsZi5fdGVzdF91aTIuZXZlbnQgPSBNb2NrKHNwZWNfc2V0PVBpY2tsZUV2ZW50UXVldWVTdHViKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkyLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDIpCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBiYi5ldmVudC5maXJlX3VpX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbChldmVudDEpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfdWkxLmV2ZW50LnNlbmQuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwocGlja2xlLmR1bXBzKGV2ZW50MSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfdWkyLmV2ZW50LnNlbmRwaWNrbGUuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9maXJlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBmaXJlIG1ldGhvZCB1c2VkIHRvIHRyaWdnZXIgY2xhc3MgYW5kIHVpIGV2ZW50IGhhbmRsZXJzICIiIgorICAgICAgICBtYXNrID0gWyJiYi5ldmVudC5Db25maWdQYXJzZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBNb2NrKHNwZWNfc2V0PUV2ZW50UXVldWVTdHViKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuQ29uZmlnUGFyc2VkKCkKKyAgICAgICAgYmIuZXZlbnQuZmlyZShldmVudDEsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2ZpcmVfZnJvbV93b3JrZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGZpcmVfZnJvbV93b3JrZXIgbWV0aG9kICIiIgorICAgICAgICBzZWxmLl90ZXN0X3VpMS5ldmVudCA9IE1vY2soc3BlY19zZXQ9RXZlbnRRdWV1ZVN0dWIpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMSkKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuQ29uZmlnUGFyc2VkKCkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9mcm9tX3dvcmtlcihldmVudDEsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3VpMS5ldmVudC5zZW5kLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcHJpbnRfdWlfcXVldWUoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHByaW50X3VpX3F1ZXVlIG1ldGhvZCAiIiIKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCgpCisgICAgICAgIGV2ZW50MiA9IGJiLmV2ZW50Lk9wZXJhdGlvbkNvbXBsZXRlZCh0b3RhbD0xMjMpCisgICAgICAgIGJiLmV2ZW50LmZpcmUoZXZlbnQxLCBOb25lKQorICAgICAgICBiYi5ldmVudC5maXJlKGV2ZW50MiwgTm9uZSkKKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihiYi5ldmVudC5Mb2dIYW5kbGVyKCkpCisgICAgICAgIGxvZ2dlci5pbmZvKCJUZXN0IGluZm8gTG9nUmVjb3JkIikKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlRlc3Qgd2FybmluZyBMb2dSZWNvcmQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TG9ncygiQml0QmFrZSIsIGxldmVsPSJJTkZPIikgYXMgY206CisgICAgICAgICAgICBiYi5ldmVudC5wcmludF91aV9xdWV1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20ub3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiSU5GTzpCaXRCYWtlOlRlc3QgaW5mbyBMb2dSZWNvcmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzpCaXRCYWtlOlRlc3Qgd2FybmluZyBMb2dSZWNvcmQiXSkKKworICAgIGRlZiBfc2V0X3RocmVhZGxvY2tfdGVzdF9tb2NrdXBzKHNlbGYpOgorICAgICAgICAiIiIgQ3JlYXRlIFVJIGV2ZW50IGhhbmRsZXIgbW9ja3VwcyB1c2VkIGluIGVuYWJsZSBhbmQgZGlzYWJsZQorICAgICAgICAgICAgdGhyZWFkbG9jayB0ZXN0cyAiIiIKKyAgICAgICAgZGVmIHVpMV9ldmVudF9zZW5kKGV2ZW50KToKKyAgICAgICAgICAgIGlmIHR5cGUoZXZlbnQpIGlzIGJiLmV2ZW50LkNvbmZpZ1BhcnNlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWRsb2NrX3Rlc3RfY2FsbHMuYXBwZW5kKCJ3MV91aTEiKQorICAgICAgICAgICAgaWYgdHlwZShldmVudCkgaXMgYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWRsb2NrX3Rlc3RfY2FsbHMuYXBwZW5kKCJ3Ml91aTEiKQorICAgICAgICAgICAgdGltZS5zbGVlcCgyKQorCisgICAgICAgIGRlZiB1aTJfZXZlbnRfc2VuZChldmVudCk6CisgICAgICAgICAgICBpZiB0eXBlKGV2ZW50KSBpcyBiYi5ldmVudC5Db25maWdQYXJzZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLmFwcGVuZCgidzFfdWkyIikKKyAgICAgICAgICAgIGlmIHR5cGUoZXZlbnQpIGlzIGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLmFwcGVuZCgidzJfdWkyIikKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMikKKworICAgICAgICBzZWxmLl90aHJlYWRsb2NrX3Rlc3RfY2FsbHMgPSBbXQorICAgICAgICBzZWxmLl90ZXN0X3VpMS5ldmVudCA9IEV2ZW50UXVldWVTdHViKCkKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZCA9IHVpMV9ldmVudF9zZW5kCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMSkKKyAgICAgICAgc2VsZi5fdGVzdF91aTIuZXZlbnQgPSBFdmVudFF1ZXVlU3R1YigpCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyLmV2ZW50LnNlbmQgPSB1aTJfZXZlbnRfc2VuZAorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkyLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDIpCisKKyAgICBkZWYgX3NldF9hbmRfcnVuX3RocmVhZGxvY2tfdGVzdF93b3JrZXJzKHNlbGYpOgorICAgICAgICAiIiIgQ3JlYXRlIGFuZCBydW4gdGhlIHdvcmtlcnMgdXNlZCB0byB0cmlnZ2VyIGV2ZW50cyBpbiBlbmFibGUgYW5kCisgICAgICAgICAgICBkaXNhYmxlIHRocmVhZGxvY2sgdGVzdHMgIiIiCisgICAgICAgIHdvcmtlcjEgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl90aHJlYWRfbG9ja190ZXN0X3dvcmtlcjEpCisgICAgICAgIHdvcmtlcjIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl90aHJlYWRfbG9ja190ZXN0X3dvcmtlcjIpCisgICAgICAgIHdvcmtlcjEuc3RhcnQoKQorICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgIHdvcmtlcjIuc3RhcnQoKQorICAgICAgICB3b3JrZXIxLmpvaW4oKQorICAgICAgICB3b3JrZXIyLmpvaW4oKQorCisgICAgZGVmIF90aHJlYWRfbG9ja190ZXN0X3dvcmtlcjEoc2VsZik6CisgICAgICAgICIiIiBGaXJzdCB3b3JrZXIgdXNlZCB0byBmaXJlIHRoZSBDb25maWdQYXJzZWQgZXZlbnQgZm9yIGVuYWJsZSBhbmQKKyAgICAgICAgICAgIGRpc2FibGUgdGhyZWFkbG9ja3MgdGVzdHMgIiIiCisgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQ29uZmlnUGFyc2VkKCksIE5vbmUpCisKKyAgICBkZWYgX3RocmVhZF9sb2NrX3Rlc3Rfd29ya2VyMihzZWxmKToKKyAgICAgICAgIiIiIFNlY29uZCB3b3JrZXIgdXNlZCB0byBmaXJlIHRoZSBPcGVyYXRpb25TdGFydGVkIGV2ZW50IGZvciBlbmFibGUKKyAgICAgICAgICAgIGFuZCBkaXNhYmxlIHRocmVhZGxvY2tzIHRlc3RzICIiIgorICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2VuYWJsZV90aHJlYWRsb2NrKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBlbmFibGVfdGhyZWFkbG9jayBtZXRob2QgIiIiCisgICAgICAgIHNlbGYuX3NldF90aHJlYWRsb2NrX3Rlc3RfbW9ja3VwcygpCisgICAgICAgIGJiLmV2ZW50LmVuYWJsZV90aHJlYWRsb2NrKCkKKyAgICAgICAgc2VsZi5fc2V0X2FuZF9ydW5fdGhyZWFkbG9ja190ZXN0X3dvcmtlcnMoKQorICAgICAgICAjIENhbGxzIHRvIFVJIGhhbmRsZXJzIHNob3VsZCBiZSBpbiBvcmRlciBhcyBhbGwgdGhlIHJlZ2lzdGVyZWQKKyAgICAgICAgIyBoYW5kbGVycyBmb3IgdGhlIGV2ZW50IGNvbWluZyBmcm9tIHRoZSBmaXJzdCB3b3JrZXIgc2hvdWxkIGJlCisgICAgICAgICMgY2FsbGVkIGJlZm9yZSBwcm9jZXNzaW5nIHRoZSBldmVudCBmcm9tIHRoZSBzZWNvbmQgd29ya2VyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIncxX3VpMSIsICJ3MV91aTIiLCAidzJfdWkxIiwgIncyX3VpMiJdKQorCisgICAgZGVmIHRlc3RfZGlzYWJsZV90aHJlYWRsb2NrKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBkaXNhYmxlX3RocmVhZGxvY2sgbWV0aG9kICIiIgorICAgICAgICBzZWxmLl9zZXRfdGhyZWFkbG9ja190ZXN0X21vY2t1cHMoKQorICAgICAgICBiYi5ldmVudC5kaXNhYmxlX3RocmVhZGxvY2soKQorICAgICAgICBzZWxmLl9zZXRfYW5kX3J1bl90aHJlYWRsb2NrX3Rlc3Rfd29ya2VycygpCisgICAgICAgICMgQ2FsbHMgdG8gVUkgaGFuZGxlcnMgc2hvdWxkIGJlIGludGVydHdpbmVkIHRvZ2V0aGVyLiBUaGFua3MgdG8gdGhlCisgICAgICAgICMgZGVsYXkgaW4gdGhlIHJlZ2lzdGVyZWQgaGFuZGxlcnMgZm9yIHRoZSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlyc3QKKyAgICAgICAgIyB3b3JrZXIsIHRoZSBldmVudCBjb21pbmcgZnJvbSB0aGUgc2Vjb25kIHdvcmtlciBzdGFydHMgYmVpbmcKKyAgICAgICAgIyBwcm9jZXNzZWQgYmVmb3JlIGZpbmlzaGluZyBoYW5kbGluZyB0aGUgZmlyc3Qgd29ya2VyIGV2ZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIncxX3VpMSIsICJ3Ml91aTEiLCAidzFfdWkyIiwgIncyX3VpMiJdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CmluZGV4IDVhOGQ4OTIuLjdkN2M1ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKQEAgLTI4LDYgKzI4LDExIEBACiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKIGltcG9ydCBiYgogCitkZWYgc2tpcElmTm9OZXR3b3JrKCk6CisgICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKKyAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoIk5ldHdvcmsgdGVzdHMgYmVpbmcgc2tpcHBlZCIpCisgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKIGNsYXNzIFVSSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRlc3RfdXJpcyA9IHsKICAgICAgICAgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9pbmRleC5odG1sIiA6IHsKQEAgLTUxOCwxNDEgKzUyMywxNTMgQEAKICAgICAgICAgICAgIHNlbGYuZmV0Y2hVbnBhY2soWydmaWxlOi8vYTtzdWJkaXI9L2Jpbi9zaCddKQogCiBjbGFzcyBGZXRjaGVyTmV0d29ya1Rlc3QoRmV0Y2hlclRlc3QpOgorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2ZldGNoKHNlbGYpOgorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjEudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4wLnRhci5neiIpLCA1Nzc0OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjEudGFyLmd6IiksIDU3ODkyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgIjEiKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjEudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvcy5saXN0ZGlyKHNlbGYudW5wYWNrZGlyICsgIi9iaXRiYWtlLTEuMC8iKSksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9zLmxpc3RkaXIoc2VsZi51bnBhY2tkaXIgKyAiL2JpdGJha2UtMS4xLyIpKSwgOSkKIAotICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6Ci0gICAgICAgIHByaW50KCJVbnNldCBCQl9TS0lQX05FVFRFU1RTIHRvIHJ1biBuZXR3b3JrIHRlc3RzIikKLSAgICBlbHNlOgotICAgICAgICBkZWYgdGVzdF9mZXRjaChzZWxmKToKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiIsICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMS50YXIuZ3oiXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMS50YXIuZ3oiKSwgNTc4OTIpCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgIjEiKQotICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6IiwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4xLnRhci5neiJdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9mZXRjaF9taXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuZC5zZXRWYXIoIk1JUlJPUlMiLCAiaHR0cDovLy4qLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlIikKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9mZXRjaF9taXJyb3Jfb2ZfbWlycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmQuc2V0VmFyKCJNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBodHRwOi8vaW52YWxpZDIueW9jdG9wcm9qZWN0Lm9yZy8gXG4gaHR0cDovL2ludmFsaWQyLnlvY3RvcHJvamVjdC5vcmcvLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UiKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4wLnRhci5neiIpLCA1Nzc0OSkKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2ZldGNoX2ZpbGVfbWlycm9yX29mX21pcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiTUlSUk9SUyIsICJodHRwOi8vLiovLiogZmlsZTovLy9zb21lMXdoZXJlLyBcbiBmaWxlOi8vL3NvbWUxd2hlcmUvLiogZmlsZTovL3NvbWUyd2hlcmUvIFxuIGZpbGU6Ly9zb21lMndoZXJlLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlIikKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIG9zLm1rZGlyKHNlbGYuZGxkaXIgKyAiL3NvbWUyd2hlcmUiKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZmV0Y2hfcHJlbWlycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIGdpdGZldGNoZXIoc2VsZiwgdXJsMSwgdXJsMik6CisgICAgICAgIGRlZiBjaGVja3JldmlzaW9uKHNlbGYsIGZldGNoZXIpOgogICAgICAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvcy5saXN0ZGlyKHNlbGYudW5wYWNrZGlyICsgIi9iaXRiYWtlLTEuMC8iKSksIDkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvcy5saXN0ZGlyKHNlbGYudW5wYWNrZGlyICsgIi9iaXRiYWtlLTEuMS8iKSksIDkpCisgICAgICAgICAgICByZXZpc2lvbiA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLCBzaGVsbD1UcnVlLCBjd2Q9c2VsZi51bnBhY2tkaXIgKyAiL2dpdCIpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2aXNpb24sICIyNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IikKIAotICAgICAgICBkZWYgdGVzdF9mZXRjaF9taXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiLCAiMSIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlNSQ1JFViIsICIyNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IikKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmwxXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgY2hlY2tyZXZpc2lvbihzZWxmLCBmZXRjaGVyKQorICAgICAgICAjIFdpcGUgb3V0IHRoZSBkbGRpciBjbG9uZSBhbmQgdGhlIHVucGFja2VkIHNvdXJjZSwgdHVybiBvZmYgdGhlIG5ldHdvcmsgYW5kIGNoZWNrIG1pcnJvciB0YXJiYWxsIHdvcmtzCisgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHNlbGYuZGxkaXIgKyAiL2dpdDIvIikKKyAgICAgICAgYmIudXRpbHMucHJ1bmVkaXIoc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsMl0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGNoZWNrcmV2aXNpb24oc2VsZiwgZmV0Y2hlcikKIAotICAgICAgICBkZWYgdGVzdF9mZXRjaF9taXJyb3Jfb2ZfbWlycm9yKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiTUlSUk9SUyIsICJodHRwOi8vLiovLiogaHR0cDovL2ludmFsaWQyLnlvY3RvcHJvamVjdC5vcmcvIFxuIGh0dHA6Ly9pbnZhbGlkMi55b2N0b3Byb2plY3Qub3JnLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlIikKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2goc2VsZik6CisgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQogCi0gICAgICAgIGRlZiB0ZXN0X2ZldGNoX2ZpbGVfbWlycm9yX29mX21pcnJvcihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIk1JUlJPUlMiLCAiaHR0cDovLy4qLy4qIGZpbGU6Ly8vc29tZTF3aGVyZS8gXG4gZmlsZTovLy9zb21lMXdoZXJlLy4qIGZpbGU6Ly9zb21lMndoZXJlLyBcbiBmaWxlOi8vc29tZTJ3aGVyZS8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKLSAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGxkaXIgKyAiL3NvbWUyd2hlcmUiKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfZ29vZHNyY3JldihzZWxmKToKKyAgICAgICAgIyBTUkNSRVYgaXMgc2V0IGJ1dCBtYXRjaGVzIHJldj0gcGFyYW1ldGVyCisgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7cmV2PTI3MGEwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQogCi0gICAgICAgIGRlZiB0ZXN0X2ZldGNoX3ByZW1pcnJvcihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiaHR0cDovLy4qLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlIikKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfYmFkc3JjcmV2KHNlbGYpOgorICAgICAgICAjIFNSQ1JFViBpcyBzZXQgYnV0IGRvZXMgbm90IG1hdGNoIHJldj0gcGFyYW1ldGVyCisgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7cmV2PWRlYWQwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLkZldGNoRXJyb3IsIHNlbGYuZ2l0ZmV0Y2hlciwgdXJsMSwgdXJsMikKIAotICAgICAgICBkZWYgZ2l0ZmV0Y2hlcihzZWxmLCB1cmwxLCB1cmwyKToKLSAgICAgICAgICAgIGRlZiBjaGVja3JldmlzaW9uKHNlbGYsIGZldGNoZXIpOgotICAgICAgICAgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gYmIucHJvY2Vzcy5ydW4oImdpdCByZXYtcGFyc2UgSEVBRCIsIHNoZWxsPVRydWUsIGN3ZD1zZWxmLnVucGFja2RpciArICIvZ2l0IilbMF0uc3RyaXAoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2aXNpb24sICIyNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IikKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRmZXRjaF90YWdhbmRyZXYoc2VsZik6CisgICAgICAgICMgU1JDUkVWIGlzIHNldCBidXQgZG9lcyBub3QgbWF0Y2ggcmV2PSBwYXJhbWV0ZXIKKyAgICAgICAgdXJsMSA9IHVybDIgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZTtyZXY9MjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNTt0YWc9MjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2guRmV0Y2hFcnJvciwgc2VsZi5naXRmZXRjaGVyLCB1cmwxLCB1cmwyKQogCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiLCAiMSIpCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCAiMjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybDFdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKLSAgICAgICAgICAgIGNoZWNrcmV2aXNpb24oc2VsZiwgZmV0Y2hlcikKLSAgICAgICAgICAgICMgV2lwZSBvdXQgdGhlIGRsZGlyIGNsb25lIGFuZCB0aGUgdW5wYWNrZWQgc291cmNlLCB0dXJuIG9mZiB0aGUgbmV0d29yayBhbmQgY2hlY2sgbWlycm9yIHRhcmJhbGwgd29ya3MKLSAgICAgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHNlbGYuZGxkaXIgKyAiL2dpdDIvIikKLSAgICAgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHNlbGYudW5wYWNrZGlyKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfTk9fTkVUV09SSyIsICIxIikKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsMl0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgY2hlY2tyZXZpc2lvbihzZWxmLCBmZXRjaGVyKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX2xvY2FsdXNlaGVhZChzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgZHVtbXkgbG9jYWwgR2l0IHJlcG8KKyAgICAgICAgc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPXNlbGYudGVtcGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSdnaXRmZXRjaF9sb2NhbHVzZWhlYWRfJykKKyAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguYWJzcGF0aChzcmNfZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGluaXQiLCBjd2Q9c3JjX2RpcikKKyAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSdEdW1teSBjb21taXQnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNyY19kaXIpCisgICAgICAgICMgVXNlIG90aGVyIGJyYW5jaCB0aGFuIG1hc3RlcgorICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNoZWNrb3V0IC1iIG15LWRldmVsIiwgY3dkPXNyY19kaXIpCisgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0nRHVtbXkgY29tbWl0IDInIiwKKyAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNyY19kaXIpCisgICAgICAgIHN0ZG91dCA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLCBjd2Q9c3JjX2RpcikKKyAgICAgICAgb3JpZ19yZXYgPSBzdGRvdXRbMF0uc3RyaXAoKQogCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoKHNlbGYpOgotICAgICAgICAgICAgdXJsMSA9IHVybDIgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIKLSAgICAgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQorICAgICAgICAjIEZldGNoIGFuZCBjaGVjayByZXZpc2lvbgorICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCAiQVVUT0lOQyIpCisgICAgICAgIHVybCA9ICJnaXQ6Ly8iICsgc3JjX2RpciArICI7cHJvdG9jb2w9ZmlsZTt1c2VoZWFkPTEiCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHN0ZG91dCA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9b3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZ2l0JykpCisgICAgICAgIHVucGFja19yZXYgPSBzdGRvdXRbMF0uc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfcmV2LCB1bnBhY2tfcmV2KQogCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX2dvb2RzcmNyZXYoc2VsZik6Ci0gICAgICAgICAgICAjIFNSQ1JFViBpcyBzZXQgYnV0IG1hdGNoZXMgcmV2PSBwYXJhbWV0ZXIKLSAgICAgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7cmV2PTI3MGEwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiCi0gICAgICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRmZXRjaF9yZW1vdGV1c2VoZWFkKHNlbGYpOgorICAgICAgICB1cmwgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZTt1c2VoZWFkPTEiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLlBhcmFtZXRlckVycm9yLCBzZWxmLmdpdGZldGNoZXIsIHVybCwgdXJsKQogCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX2JhZHNyY3JldihzZWxmKToKLSAgICAgICAgICAgICMgU1JDUkVWIGlzIHNldCBidXQgZG9lcyBub3QgbWF0Y2ggcmV2PSBwYXJhbWV0ZXIKLSAgICAgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7cmV2PWRlYWQwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaC5GZXRjaEVycm9yLCBzZWxmLmdpdGZldGNoZXIsIHVybDEsIHVybDIpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfcHJlbWlycm9yKHNlbGYpOgorICAgICAgICB1cmwxID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCisgICAgICAgIHVybDIgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKKyAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UgXG4iKQorICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKIAotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaF90YWdhbmRyZXYoc2VsZik6Ci0gICAgICAgICAgICAjIFNSQ1JFViBpcyBzZXQgYnV0IGRvZXMgbm90IG1hdGNoIHJldj0gcGFyYW1ldGVyCi0gICAgICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3Jldj0yNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1O3RhZz0yNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2guRmV0Y2hFcnJvciwgc2VsZi5naXRmZXRjaGVyLCB1cmwxLCB1cmwyKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjIoc2VsZik6CisgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKKyAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCiAKLSAgICAgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfbG9jYWx1c2VoZWFkKHNlbGYpOgotICAgICAgICAgICAgIyBDcmVhdGUgZHVtbXkgbG9jYWwgR2l0IHJlcG8KLSAgICAgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1zZWxmLnRlbXBkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9J2dpdGZldGNoX2xvY2FsdXNlaGVhZF8nKQotICAgICAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguYWJzcGF0aChzcmNfZGlyKQotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBpbml0IiwgY3dkPXNyY19kaXIpCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tJ0R1bW15IGNvbW1pdCciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNyY19kaXIpCi0gICAgICAgICAgICAjIFVzZSBvdGhlciBicmFuY2ggdGhhbiBtYXN0ZXIKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgY2hlY2tvdXQgLWIgbXktZGV2ZWwiLCBjd2Q9c3JjX2RpcikKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0nRHVtbXkgY29tbWl0IDInIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmNfZGlyKQotICAgICAgICAgICAgc3Rkb3V0ID0gYmIucHJvY2Vzcy5ydW4oImdpdCByZXYtcGFyc2UgSEVBRCIsIGN3ZD1zcmNfZGlyKQotICAgICAgICAgICAgb3JpZ19yZXYgPSBzdGRvdXRbMF0uc3RyaXAoKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjMoc2VsZik6CisgICAgICAgIHJlYWx1cmwgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIKKyAgICAgICAgZHVtbXl1cmwgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKKyAgICAgICAgc2VsZi5zb3VyY2VkaXIgPSBzZWxmLnVucGFja2Rpci5yZXBsYWNlKCJ1bnBhY2tlZCIsICJzb3VyY2VtaXJyb3IuZ2l0IikKKyAgICAgICAgb3MuY2hkaXIoc2VsZi50ZW1wZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNsb25lICVzICVzIDI+IC9kZXYvbnVsbCIgJSAocmVhbHVybCwgc2VsZi5zb3VyY2VkaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgIiVzIGdpdDovLyVzO3Byb3RvY29sPWZpbGUgXG4iICUgKGR1bW15dXJsLCBzZWxmLnNvdXJjZWRpcikpCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihkdW1teXVybCwgZHVtbXl1cmwpCiAKLSAgICAgICAgICAgICMgRmV0Y2ggYW5kIGNoZWNrIHJldmlzaW9uCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCAiQVVUT0lOQyIpCi0gICAgICAgICAgICB1cmwgPSAiZ2l0Oi8vIiArIHNyY19kaXIgKyAiO3Byb3RvY29sPWZpbGU7dXNlaGVhZD0xIgotICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKLSAgICAgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQotICAgICAgICAgICAgc3Rkb3V0ID0gYmIucHJvY2Vzcy5ydW4oImdpdCByZXYtcGFyc2UgSEVBRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9b3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZ2l0JykpCi0gICAgICAgICAgICB1bnBhY2tfcmV2ID0gc3Rkb3V0WzBdLnN0cmlwKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ19yZXYsIHVucGFja19yZXYpCi0KLSAgICAgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfcmVtb3RldXNlaGVhZChzZWxmKToKLSAgICAgICAgICAgIHVybCA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3VzZWhlYWQ9MSIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLlBhcmFtZXRlckVycm9yLCBzZWxmLmdpdGZldGNoZXIsIHVybCwgdXJsKQotCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcihzZWxmKToKLSAgICAgICAgICAgIHVybDEgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIKLSAgICAgICAgICAgIHVybDIgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKLSAgICAgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQotCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjIoc2VsZik6Ci0gICAgICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIgotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UgXG4iKQotICAgICAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCi0KLSAgICAgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfcHJlbWlycm9yMyhzZWxmKToKLSAgICAgICAgICAgIHJlYWx1cmwgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIKLSAgICAgICAgICAgIGR1bW15dXJsID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCi0gICAgICAgICAgICBzZWxmLnNvdXJjZWRpciA9IHNlbGYudW5wYWNrZGlyLnJlcGxhY2UoInVucGFja2VkIiwgInNvdXJjZW1pcnJvci5naXQiKQotICAgICAgICAgICAgb3MuY2hkaXIoc2VsZi50ZW1wZGlyKQotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBjbG9uZSAlcyAlcyAyPiAvZGV2L251bGwiICUgKHJlYWx1cmwsIHNlbGYuc291cmNlZGlyKSwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiJXMgZ2l0Oi8vJXM7cHJvdG9jb2w9ZmlsZSBcbiIgJSAoZHVtbXl1cmwsIHNlbGYuc291cmNlZGlyKSkKLSAgICAgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihkdW1teXVybCwgZHVtbXl1cmwpCi0KLSAgICAgICAgZGVmIHRlc3RfZ2l0X3N1Ym1vZHVsZShzZWxmKToKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImdpdHNtOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0LXN1Ym1vZHVsZS10ZXN0O3Jldj1mMTJlNTdmMmVkZjBhYTUzNGNmMTYxNmZhOTgzZDE2NWE5MmIwODQyIl0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgIyBQcmV2aW91cyBjd2QgaGFzIGJlZW4gZGVsZXRlZAotICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKHNlbGYudW5wYWNrZGlyKSkKLSAgICAgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImdpdHNtOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0LXN1Ym1vZHVsZS10ZXN0O3Jldj1mMTJlNTdmMmVkZjBhYTUzNGNmMTYxNmZhOTgzZDE2NWE5MmIwODQyIl0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgICMgUHJldmlvdXMgY3dkIGhhcyBiZWVuIGRlbGV0ZWQKKyAgICAgICAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKHNlbGYudW5wYWNrZGlyKSkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCiAKIAogY2xhc3MgVHJ1c3RlZE5ldHdvcmtzVGVzdChGZXRjaGVyVGVzdCk6CkBAIC03ODIsMzIgKzc5OSwzMiBAQAogICAgICAgICAoImRiIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLTUuMy4yMS50YXIuZ3oiLCAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL3Byb2R1Y3RzL2JlcmtlbGV5ZGIvZG93bmxvYWRzL2luZGV4LTA4Mjk0NC5odG1sIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL290bi9iZXJrZWxleS1kYi8oP1A8bmFtZT5kYi0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLnRhclwuZ3oiKQogICAgICAgICAgICAgOiAiNi4xLjE5IiwKICAgICB9Ci0gICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKLSAgICAgICAgcHJpbnQoIlVuc2V0IEJCX1NLSVBfTkVUVEVTVFMgdG8gcnVuIG5ldHdvcmsgdGVzdHMiKQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiB0ZXN0X2dpdF9sYXRlc3RfdmVyc2lvbnN0cmluZyhzZWxmKToKLSAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYudGVzdF9naXRfdXJpcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBOIiwga1swXSkKLSAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCBrWzJdKQotICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYIiwga1szXSkKLSAgICAgICAgICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEoa1sxXSwgc2VsZi5kKQotICAgICAgICAgICAgICAgIHB1cHZlcj0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIikKLSAgICAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQogCi0gICAgICAgIGRlZiB0ZXN0X3dnZXRfbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZik6Ci0gICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQotICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1VSSSIsIGtbMl0pCi0gICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfUkVHRVgiLCBrWzNdKQotICAgICAgICAgICAgICAgIHVkID0gYmIuZmV0Y2gyLkZldGNoRGF0YShrWzFdLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIikKLSAgICAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdF9sYXRlc3RfdmVyc2lvbnN0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIGssIHYgaW4gc2VsZi50ZXN0X2dpdF91cmlzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCisgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCBrWzJdKQorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVgiLCBrWzNdKQorICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKKyAgICAgICAgICAgIHB1cHZlcj0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCisgICAgICAgICAgICB2ZXJzdHJpbmcgPSBwdXB2ZXJbMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiIpCisgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF93Z2V0X2xhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYpOgorICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCisgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBrWzJdKQorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfUkVHRVgiLCBrWzNdKQorICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKKyAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24iKQorICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQogCiAKIGNsYXNzIEZldGNoQ2hlY2tTdGF0dXNUZXN0KEZldGNoZXJUZXN0KToKQEAgLTgyMCwzNyArODM3LDYzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9vcGtnL29wa2ctMC4xLjcudGFyLmd6IiwKICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL29wa2cvb3BrZy0wLjMuMC50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvYXV0b2NvbmYvYXV0b2NvbmYtMi42MC50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvY2hlc3MvZ251Y2hlc3MtNS4wOC50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ21wL2dtcC00LjAudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2xpYmZmaS9saWJmZmktMS4yMC50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2F1dG9jb25mL2F1dG9jb25mLTIuNjAudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY2hlc3MvZ251Y2hlc3MtNS4wOC50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9nbXAvZ21wLTQuMC50YXIuZ3oiLAogICAgICAgICAgICAgICAgICAgICAgICMgR2l0SHViIHJlbGVhc2VzIGFyZSBob3N0ZWQgb24gQW1hem9uIFMzLCB3aGljaCBkb2Vzbid0IHN1cHBvcnQgSEVBRAogICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8xLjEvdHNsaWItMS4xLnRhci54eiIKICAgICAgICAgICAgICAgICAgICAgICBdCiAKLSAgICBpZiBvcy5lbnZpcm9uLmdldCgiQkJfU0tJUF9ORVRURVNUUyIpID09ICJ5ZXMiOgotICAgICAgICBwcmludCgiVW5zZXQgQkJfU0tJUF9ORVRURVNUUyB0byBydW4gbmV0d29yayB0ZXN0cyIpCi0gICAgZWxzZToKLQotICAgICAgICBkZWYgdGVzdF93Z2V0X2NoZWNrc3RhdHVzKHNlbGYpOgotICAgICAgICAgICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goc2VsZi50ZXN0X3dnZXRfdXJpcywgc2VsZi5kKQotICAgICAgICAgICAgZm9yIHUgaW4gc2VsZi50ZXN0X3dnZXRfdXJpczoKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF93Z2V0X2NoZWNrc3RhdHVzKHNlbGYpOgorICAgICAgICBmZXRjaCA9IGJiLmZldGNoMi5GZXRjaChzZWxmLnRlc3Rfd2dldF91cmlzLCBzZWxmLmQpCisgICAgICAgIGZvciB1IGluIHNlbGYudGVzdF93Z2V0X3VyaXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dSk6CiAgICAgICAgICAgICAgICAgdWQgPSBmZXRjaC51ZFt1XQogICAgICAgICAgICAgICAgIG0gPSB1ZC5tZXRob2QKICAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKGZldGNoLCB1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXQsIG1zZz0iVVJJICVzLCBjYW4ndCBjaGVjayBzdGF0dXMiICUgKHUpKQogCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3Rfd2dldF9jaGVja3N0YXR1c19jb25uZWN0aW9uX2NhY2hlKHNlbGYpOgorICAgICAgICBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hDb25uZWN0aW9uQ2FjaGUKIAotICAgICAgICBkZWYgdGVzdF93Z2V0X2NoZWNrc3RhdHVzX2Nvbm5lY3Rpb25fY2FjaGUoc2VsZik6Ci0gICAgICAgICAgICBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hDb25uZWN0aW9uQ2FjaGUKKyAgICAgICAgY29ubmVjdGlvbl9jYWNoZSA9IEZldGNoQ29ubmVjdGlvbkNhY2hlKCkKKyAgICAgICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goc2VsZi50ZXN0X3dnZXRfdXJpcywgc2VsZi5kLAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2NhY2hlID0gY29ubmVjdGlvbl9jYWNoZSkKIAotICAgICAgICAgICAgY29ubmVjdGlvbl9jYWNoZSA9IEZldGNoQ29ubmVjdGlvbkNhY2hlKCkKLSAgICAgICAgICAgIGZldGNoID0gYmIuZmV0Y2gyLkZldGNoKHNlbGYudGVzdF93Z2V0X3VyaXMsIHNlbGYuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fY2FjaGUgPSBjb25uZWN0aW9uX2NhY2hlKQotCi0gICAgICAgICAgICBmb3IgdSBpbiBzZWxmLnRlc3Rfd2dldF91cmlzOgorICAgICAgICBmb3IgdSBpbiBzZWxmLnRlc3Rfd2dldF91cmlzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXUpOgogICAgICAgICAgICAgICAgIHVkID0gZmV0Y2gudWRbdV0KICAgICAgICAgICAgICAgICBtID0gdWQubWV0aG9kCiAgICAgICAgICAgICAgICAgcmV0ID0gbS5jaGVja3N0YXR1cyhmZXRjaCwgdWQsIHNlbGYuZCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmV0LCBtc2c9IlVSSSAlcywgY2FuJ3QgY2hlY2sgc3RhdHVzIiAlICh1KSkKIAotICAgICAgICAgICAgY29ubmVjdGlvbl9jYWNoZS5jbG9zZV9jb25uZWN0aW9ucygpCisgICAgICAgIGNvbm5lY3Rpb25fY2FjaGUuY2xvc2VfY29ubmVjdGlvbnMoKQorCisKK2NsYXNzIEdpdE1ha2VTaGFsbG93VGVzdChGZXRjaGVyVGVzdCk6CisgICAgYml0YmFrZV9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguam9pbihfX2ZpbGVfXykpLCAnLi4nLCAnLi4nLCAnLi4nKQorICAgIG1ha2Vfc2hhbGxvd19wYXRoID0gb3MucGF0aC5qb2luKGJpdGJha2VfZGlyLCAnYmluJywgJ2dpdC1tYWtlLXNoYWxsb3cnKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBGZXRjaGVyVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBzZWxmLmdpdGRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXRzaGFsbG93JykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuZ2l0ZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGluaXQnLCBjd2Q9c2VsZi5naXRkaXIpCisKKyAgICBkZWYgYXNzZXJ0UmVmcyhzZWxmLCBleHBlY3RlZF9yZWZzKToKKyAgICAgICAgYWN0dWFsX3JlZnMgPSBzZWxmLmdpdChbJ2Zvci1lYWNoLXJlZicsICctLWZvcm1hdD0lKHJlZm5hbWUpJ10pLnNwbGl0bGluZXMoKQorICAgICAgICBmdWxsX2V4cGVjdGVkID0gc2VsZi5naXQoWydyZXYtcGFyc2UnLCAnLS1zeW1ib2xpYy1mdWxsLW5hbWUnXSArIGV4cGVjdGVkX3JlZnMpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmdWxsX2V4cGVjdGVkKSwgc29ydGVkKGFjdHVhbF9yZWZzKSkKKworICAgIGRlZiBhc3NlcnRSZXZDb3VudChzZWxmLCBleHBlY3RlZF9jb3VudCwgYXJncz1Ob25lKToKKyAgICAgICAgaWYgYXJncyBpcyBOb25lOgorICAgICAgICAgICAgYXJncyA9IFsnSEVBRCddCisgICAgICAgIHJldnMgPSBzZWxmLmdpdChbJ3Jldi1saXN0J10gKyBhcmdzKQorICAgICAgICBhY3R1YWxfY291bnQgPSBsZW4ocmV2cy5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY291bnQsIGFjdHVhbF9jb3VudCwgbXNnPSdPYmplY3QgY291bnQgYCVkYCBpcyBub3QgdGhlIGV4cGVjdGVkIGAlZGAnICUgKGFjdHVhbF9jb3VudCwgZXhwZWN0ZWRfY291bnQpKQorCisgICAgZGVmIGdpdChzZWxmLCBjbWQpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGNtZCwgc3RyKToKKyAgICAgICAgICAgIGNtZCA9ICdnaXQgJyArIGNtZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gWydnaXQnXSArIGNtZAorICAgICAgICByZXR1cm4gYmIucHJvY2Vzcy5ydW4oY21kLCBjd2Q9c2VsZi5naXRkaXIpWzBdCisKKyAgICBkZWYgbWFrZV9zaGFsbG93KHNlbGYsIGFyZ3M9Tm9uZSk6CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBbJ0hFQUQnXQorICAgICAgICByZXR1cm4gYmIucHJvY2Vzcy5ydW4oW3NlbGYubWFrZV9zaGFsbG93X3BhdGhdICsgYXJncywgY3dkPXNlbGYuZ2l0ZGlyKQorCisgICAgZGVmIGFkZF9lbXB0eV9maWxlKHNlbGYsIHBhdGgsIG1zZz1Ob25lKToKKyAgICAgICAgaWYgbXNnIGlzIE5vbmU6CisgICAgICAgICAgICBtc2cgPSBwYXRoCisgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCBwYXRoKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgIHNlbGYuZ2l0KFsnYWRkJywgcGF0aF0pCisgICAgICAgIHNlbGYuZ2l0KFsnY29tbWl0JywgJy1tJywgbXNnLCBwYXRoXSkKKworICAgIGRlZiB0ZXN0X21ha2Vfc2hhbGxvd19zaW5nbGVfYnJhbmNoX25vX21lcmdlKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMikKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfc2luZ2xlX2JyYW5jaF9vbmVfbWVyZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCBtYXN0ZXInKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdkJykKKyAgICAgICAgc2VsZi5naXQoJ21lcmdlIC0tbm8tZmYgLS1uby1lZGl0IGFfYnJhbmNoJykKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCAtZCBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2UnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDYpCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KFsnSEVBRH4yJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNSkKKworICAgIGRlZiB0ZXN0X21ha2Vfc2hhbGxvd19hdF9tZXJnZShzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJykKKyAgICAgICAgc2VsZi5naXQoJ21lcmdlIC0tbm8tZmYgLS1uby1lZGl0IGFfYnJhbmNoJykKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCAtZCBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMykKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfYW5ub3RhdGVkX3RhZyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmdpdCgndGFnIC1hIC1tIGFfdGFnIGFfdGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyKQorICAgICAgICBzZWxmLm1ha2Vfc2hhbGxvdyhbJ2FfdGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKworICAgIGRlZiB0ZXN0X21ha2Vfc2hhbGxvd19tdWx0aV9yZWYoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCBtYXN0ZXInKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdkJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoXzInKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhX3RhZycpCisgICAgICAgIHNlbGYuZ2l0KCd0YWcgYV90YWcnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJykKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCAtRCBhX2JyYW5jaF8yJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNiwgWyctLWFsbCddKQorICAgICAgICBzZWxmLm1ha2Vfc2hhbGxvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNSwgWyctLWFsbCddKQorCisgICAgZGVmIHRlc3RfbWFrZV9zaGFsbG93X211bHRpX3JlZl90cmltKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCBtYXN0ZXInKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgWyctLWFsbCddKQorICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnYV9icmFuY2gnXSkKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coWyctcicsICdtYXN0ZXInLCAnSEVBRCddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEsIFsnLS1hbGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJ10pCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfbm9vcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfYml0YmFrZShzZWxmKToKKyAgICAgICAgc2VsZi5naXQoJ3JlbW90ZSBhZGQgb3JpZ2luIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvYml0YmFrZScpCisgICAgICAgIHNlbGYuZ2l0KCdmZXRjaCAtLXRhZ3Mgb3JpZ2luJykKKyAgICAgICAgb3JpZ19yZXZzID0gbGVuKHNlbGYuZ2l0KCdyZXYtbGlzdCAtLWFsbCcpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coWydyZWZzL3RhZ3MvMS4xMC4wJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQob3JpZ19yZXZzIC0gMTc0NiwgWyctLWFsbCddKQorCitjbGFzcyBHaXRTaGFsbG93VGVzdChGZXRjaGVyVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBGZXRjaGVyVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBzZWxmLmdpdGRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXQnKQorICAgICAgICBzZWxmLnNyY2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXRzb3VyY2UnKQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2luaXQnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1dPUktESVInLCBzZWxmLnRlbXBkaXIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1MnLCBzZWxmLmdpdGRpcikKKyAgICAgICAgc2VsZi5kLmRlbFZhcignUFJFTUlSUk9SUycpCisgICAgICAgIHNlbGYuZC5kZWxWYXIoJ01JUlJPUlMnKQorCisgICAgICAgIHVyaSA9ICdnaXQ6Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ19VUkknLCB1cmkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVicsICcke0FVVE9SRVZ9JykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQVVUT1JFVicsICcke0BiYi5mZXRjaDIuZ2V0X2F1dG9yZXYoZCl9JykKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPVycsICcxJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJywgJzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HRU5FUkFURV9TSEFMTE9XX1RBUkJBTExTJywgJzEnKQorCisgICAgZGVmIGFzc2VydFJlZnMoc2VsZiwgZXhwZWN0ZWRfcmVmcywgY3dkPU5vbmUpOgorICAgICAgICBpZiBjd2QgaXMgTm9uZToKKyAgICAgICAgICAgIGN3ZCA9IHNlbGYuZ2l0ZGlyCisgICAgICAgIGFjdHVhbF9yZWZzID0gc2VsZi5naXQoWydmb3ItZWFjaC1yZWYnLCAnLS1mb3JtYXQ9JShyZWZuYW1lKSddLCBjd2Q9Y3dkKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgZnVsbF9leHBlY3RlZCA9IHNlbGYuZ2l0KFsncmV2LXBhcnNlJywgJy0tc3ltYm9saWMtZnVsbC1uYW1lJ10gKyBleHBlY3RlZF9yZWZzLCBjd2Q9Y3dkKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2V0KGZ1bGxfZXhwZWN0ZWQpKSwgc29ydGVkKHNldChhY3R1YWxfcmVmcykpKQorCisgICAgZGVmIGFzc2VydFJldkNvdW50KHNlbGYsIGV4cGVjdGVkX2NvdW50LCBhcmdzPU5vbmUsIGN3ZD1Ob25lKToKKyAgICAgICAgaWYgYXJncyBpcyBOb25lOgorICAgICAgICAgICAgYXJncyA9IFsnSEVBRCddCisgICAgICAgIGlmIGN3ZCBpcyBOb25lOgorICAgICAgICAgICAgY3dkID0gc2VsZi5naXRkaXIKKyAgICAgICAgcmV2cyA9IHNlbGYuZ2l0KFsncmV2LWxpc3QnXSArIGFyZ3MsIGN3ZD1jd2QpCisgICAgICAgIGFjdHVhbF9jb3VudCA9IGxlbihyZXZzLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jb3VudCwgYWN0dWFsX2NvdW50LCBtc2c9J09iamVjdCBjb3VudCBgJWRgIGlzIG5vdCB0aGUgZXhwZWN0ZWQgYCVkYCcgJSAoYWN0dWFsX2NvdW50LCBleHBlY3RlZF9jb3VudCkpCisKKyAgICBkZWYgZ2l0KHNlbGYsIGNtZCwgY3dkPU5vbmUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGNtZCwgc3RyKToKKyAgICAgICAgICAgIGNtZCA9ICdnaXQgJyArIGNtZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gWydnaXQnXSArIGNtZAorICAgICAgICBpZiBjd2QgaXMgTm9uZToKKyAgICAgICAgICAgIGN3ZCA9IHNlbGYuZ2l0ZGlyCisgICAgICAgIHJldHVybiBiYi5wcm9jZXNzLnJ1bihjbWQsIGN3ZD1jd2QpWzBdCisKKyAgICBkZWYgYWRkX2VtcHR5X2ZpbGUoc2VsZiwgcGF0aCwgY3dkPU5vbmUsIG1zZz1Ob25lKToKKyAgICAgICAgaWYgbXNnIGlzIE5vbmU6CisgICAgICAgICAgICBtc2cgPSBwYXRoCisgICAgICAgIGlmIGN3ZCBpcyBOb25lOgorICAgICAgICAgICAgY3dkID0gc2VsZi5zcmNkaXIKKyAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oY3dkLCBwYXRoKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgIHNlbGYuZ2l0KFsnYWRkJywgcGF0aF0sIGN3ZCkKKyAgICAgICAgc2VsZi5naXQoWydjb21taXQnLCAnLW0nLCBtc2csIHBhdGhdLCBjd2QpCisKKyAgICBkZWYgZmV0Y2goc2VsZiwgdXJpPU5vbmUpOgorICAgICAgICBpZiB1cmkgaXMgTm9uZToKKyAgICAgICAgICAgIHVyaXMgPSBzZWxmLmQuZ2V0VmFyKCdTUkNfVVJJJywgVHJ1ZSkuc3BsaXQoKQorICAgICAgICAgICAgdXJpID0gdXJpc1swXQorICAgICAgICAgICAgZCA9IHNlbGYuZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZCA9IHNlbGYuZC5jcmVhdGVDb3B5KCkKKyAgICAgICAgICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgdXJpKQorICAgICAgICAgICAgdXJpID0gZC5leHBhbmQodXJpKQorICAgICAgICAgICAgdXJpcyA9IFt1cmldCisKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaCh1cmlzLCBkKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW3VyaV0KKyAgICAgICAgcmV0dXJuIGZldGNoZXIsIHVkCisKKyAgICBkZWYgZmV0Y2hfYW5kX3VucGFjayhzZWxmLCB1cmk9Tm9uZSk6CisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCh1cmkpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYuZC5nZXRWYXIoJ1MnKSkKKyAgICAgICAgcmV0dXJuIGZldGNoZXIsIHVkCisKKyAgICBkZWYgZmV0Y2hfc2hhbGxvdyhzZWxmLCB1cmk9Tm9uZSwgZGlzYWJsZWQ9RmFsc2UsIGtlZXBjbG9uZT1GYWxzZSk6CisgICAgICAgICIiIkZldGNoIGEgdXJpLCBnZW5lcmF0aW5nIGEgc2hhbGxvdyB0YXJiYWxsLCB0aGVuIHVucGFjayB1c2luZyBpdCIiIgorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2hfYW5kX3VucGFjayh1cmkpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyh1ZC5jbG9uZWRpciksICdHaXQgY2xvbmUgaW4gRExESVIgKCVzKSBkb2VzIG5vdCBleGlzdCBmb3IgdXJpICVzJyAlICh1ZC5jbG9uZWRpciwgdXJpKQorCisgICAgICAgICMgQ29uZmlybSB0aGF0IHRoZSB1bnBhY2tlZCByZXBvIGlzIHVuc2hhbGxvdworICAgICAgICBpZiBub3QgZGlzYWJsZWQ6CisgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsIHVkLm1pcnJvcnRhcmJhbGxzWzBdKSkKKworICAgICAgICAjIGZldGNoIGFuZCB1bnBhY2ssIGZyb20gdGhlIHNoYWxsb3cgdGFyYmFsbAorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLmNsb25lZGlyLCByZWN1cnNlPVRydWUpCisKKyAgICAgICAgIyBjb25maXJtIHRoYXQgdGhlIHVucGFja2VkIHJlcG8gaXMgdXNlZCB3aGVuIG5vIGdpdCBjbG9uZSBvciBnaXQKKyAgICAgICAgIyBtaXJyb3IgdGFyYmFsbCBpcyBhdmFpbGFibGUKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoX2FuZF91bnBhY2sodXJpKQorICAgICAgICBpZiBub3QgZGlzYWJsZWQ6CisgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnLmdpdCcsICdzaGFsbG93JykpLCAnVW5wYWNrZWQgZ2l0IHJlcG9zaXRvcnkgYXQgJXMgaXMgbm90IHNoYWxsb3cnICUgc2VsZi5naXRkaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnLmdpdCcsICdzaGFsbG93JykpLCAnVW5wYWNrZWQgZ2l0IHJlcG9zaXRvcnkgYXQgJXMgaXMgc2hhbGxvdycgJSBzZWxmLmdpdGRpcgorICAgICAgICByZXR1cm4gZmV0Y2hlciwgdWQKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfZGlzYWJsZWQoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1cnLCAnMCcpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdyhkaXNhYmxlZD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X25vYnJhbmNoKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNyY3JldiA9IHNlbGYuZ2l0KCdyZXYtcGFyc2UgSEVBRCcsIGN3ZD1zZWxmLnNyY2Rpcikuc3RyaXAoKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVYnLCBzcmNyZXYpCisgICAgICAgIHVyaSA9IHNlbGYuZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKS5zcGxpdCgpWzBdCisgICAgICAgIHVyaSA9ICclcztub2JyYW5jaD0xO2JhcmU9MScgJSB1cmkKKworICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3codXJpKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICAgICAgIyBzaGFsbG93IHJlZnMgYXJlIHVzZWQgdG8gZW5zdXJlIHRoZSBzcmNyZXYgc3RpY2tzIGFyb3VuZCB3aGVuIHdlCisgICAgICAgICMgaGF2ZSBubyBvdGhlciBicmFuY2hlcyByZWZlcmVuY2luZyBpdAorICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydyZWZzL3NoYWxsb3cvZGVmYXVsdCddKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19kZWZhdWx0X2RlcHRoXzEoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGluaXRpYWwgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2RlcHRoXzBfZGlzYWJsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnMCcpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdyhkaXNhYmxlZD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2RlcHRoX2RlZmF1bHRfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnMicpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIX2RlZmF1bHQnLCAnMScpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfZGVwdGhfZGVmYXVsdF9vdmVycmlkZV9kaXNhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDMsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSCcsICcwJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEhfZGVmYXVsdCcsICcyJykKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyKQorCisgICAgZGVmIHRlc3RfY3VycmVudF9zaGFsbG93X291dF9vZl9kYXRlX2Nsb25lKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBpbml0aWFsIGdpdCByZXBvCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgICMgQ2xvbmUgYW5kIGdlbmVyYXRlIG1pcnJvciB0YXJiYWxsCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCgpCisKKyAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSBhIGN1cnJlbnQgbWlycm9yIHRhcmJhbGwsIGJ1dCBhbiBvdXQgb2YgZGF0ZSBjbG9uZQorICAgICAgICBzZWxmLmdpdCgndXBkYXRlLXJlZiByZWZzL2hlYWRzL21hc3RlciByZWZzL2hlYWRzL21hc3Rlcn4xJywgY3dkPXVkLmNsb25lZGlyKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIGN3ZD11ZC5jbG9uZWRpcikKKworICAgICAgICAjIEZldGNoIGFuZCB1bnBhY2ssIGZyb20gdGhlIGN1cnJlbnQgdGFyYmFsbCwgbm90IHRoZSBvdXQgb2YgZGF0ZSBjbG9uZQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi5kLmdldFZhcignV09SS0RJUicpKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3NpbmdsZV9icmFuY2hfbm9fbWVyZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnYScpKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnYicpKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19ub19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5naXQoJ2ZzY2sgLS1kYW5nbGluZycpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3NyY3Jldl9icmFuY2hfdHJ1bmNhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBiX2NvbW1pdCA9IHNlbGYuZ2l0KCdyZXYtcGFyc2UgSEVBRCcsIGN3ZD1zZWxmLnNyY2RpcikucnN0cmlwKCkKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVicsIGJfY29tbWl0KQorICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coKQorCisgICAgICAgICMgVGhlICdjJyBjb21taXQgd2FzIHJlbW92ZWQgZW50aXJlbHksIGFuZCAnYScgd2FzIHJlbW92ZWQgZnJvbSBoaXN0b3J5CisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSwgWyctLWFsbCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2l0KCdyZXYtcGFyc2UgSEVBRCcpLnN0cmlwKCksIGJfY29tbWl0KQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnYScpKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnYicpKQorICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfcmVmX3BydW5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ2FfYnJhbmNoJ10sIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlciddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3N1Ym1vZHVsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzbWRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXRzdWJtb2R1bGUnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc21kaXIpCisgICAgICAgIHNlbGYuZ2l0KCdpbml0JywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhc3ViJywgY3dkPXNtZGlyKQorCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgaW5pdCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ3N1Ym1vZHVsZSBhZGQgZmlsZTovLyVzJyAlIHNtZGlyLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgdXBkYXRlJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29tbWl0IC1tIHN1Ym1vZHVsZSAtYScsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICB1cmkgPSAnZ2l0c206Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaF9zaGFsbG93KHVyaSkKKworICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisgICAgICAgIGFzc2VydCAnLi8uZ2l0L21vZHVsZXMvJyBpbiBiYi5wcm9jZXNzLnJ1bigndGFyIC10emYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYuZGxkaXIsIHVkLm1pcnJvcnRhcmJhbGxzWzBdKSlbMF0KKyAgICAgICAgYXNzZXJ0IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCisKKyAgICBpZiBhbnkob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHAsICdnaXQtYW5uZXgnKSkgZm9yIHAgaW4gb3MuZW52aXJvbi5nZXQoJ1BBVEgnKS5zcGxpdCgnOicpKToKKyAgICAgICAgZGVmIHRlc3Rfc2hhbGxvd19hbm5leChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgICAgICBzZWxmLmdpdCgnYW5uZXggaW5pdCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuc3JjZGlyLCAnYycpLCAndycpLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuZ2l0KCdhbm5leCBhZGQgYycsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgICAgIHNlbGYuZ2l0KCdjb21taXQgLW0gYW5uZXgtYyAtYScsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdjaG1vZCB1K3cgLVIgJXMnICUgb3MucGF0aC5qb2luKHNlbGYuc3JjZGlyLCAnLmdpdCcsICdhbm5leCcpKQorCisgICAgICAgICAgICB1cmkgPSAnZ2l0YW5uZXg6Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisgICAgICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2hfc2hhbGxvdyh1cmkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKyAgICAgICAgICAgIGFzc2VydCAnLi8uZ2l0L2FubmV4LycgaW4gYmIucHJvY2Vzcy5ydW4oJ3RhciAtdHpmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCB1ZC5taXJyb3J0YXJiYWxsc1swXSkpWzBdCisgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnYycpKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19tdWx0aV9vbmVfdXJpKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBpbml0aWFsIGdpdCByZXBvCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdjJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZCcpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCBtYXN0ZXInLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCd0YWcgdjAuMCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZScpCisgICAgICAgIHNlbGYuZ2l0KCdtZXJnZSAtLW5vLWZmIC0tbm8tZWRpdCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHVyaSA9IHNlbGYuZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKS5zcGxpdCgpWzBdCisgICAgICAgIHVyaSA9ICclczticmFuY2g9bWFzdGVyLGFfYnJhbmNoO25hbWU9bWFzdGVyLGFfYnJhbmNoJyAlIHVyaQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19SRVZTJywgJ3YwLjAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVZfbWFzdGVyJywgJyR7QVVUT1JFVn0nKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVZfYV9icmFuY2gnLCAnJHtBVVRPUkVWfScpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KHVyaSkKKworICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlcicsICdvcmlnaW4vbWFzdGVyJywgJ29yaWdpbi9hX2JyYW5jaCddKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19tdWx0aV9vbmVfdXJpX2RlcHRocyhzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgaW5pdGlhbCBnaXQgcmVwbworICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2QnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdlJykKKyAgICAgICAgc2VsZi5naXQoJ21lcmdlIC0tbm8tZmYgLS1uby1lZGl0IGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCg3LCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgdXJpID0gc2VsZi5kLmdldFZhcignU1JDX1VSSScsIFRydWUpLnNwbGl0KClbMF0KKyAgICAgICAgdXJpID0gJyVzO2JyYW5jaD1tYXN0ZXIsYV9icmFuY2g7bmFtZT1tYXN0ZXIsYV9icmFuY2gnICUgdXJpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnMCcpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIX21hc3RlcicsICczJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEhfYV9icmFuY2gnLCAnMScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVl9tYXN0ZXInLCAnJHtBVVRPUkVWfScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVl9hX2JyYW5jaCcsICcke0FVVE9SRVZ9JykKKworICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3codXJpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNCwgWyctLWFsbCddKQorICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlcicsICdvcmlnaW4vYV9icmFuY2gnXSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfY2xvbmVfcHJlZmVycmVkX292ZXJfc2hhbGxvdyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZW5lcmF0ZSB0aGUgc2hhbGxvdyB0YXJiYWxsCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCgpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgdWQubWlycm9ydGFyYmFsbHNbMF0pKQorCisgICAgICAgICMgRmV0Y2ggYW5kIHVucGFjayB3aXRoIGJvdGggdGhlIGNsb25lZGlyIGFuZCBzaGFsbG93IHRhcmJhbGwgYXZhaWxhYmxlCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmdpdGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2hfYW5kX3VucGFjaygpCisKKyAgICAgICAgIyBUaGUgdW5wYWNrZWQgdHJlZSBzaG91bGQgKm5vdCogYmUgc2hhbGxvdworICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIpCisgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnLmdpdCcsICdzaGFsbG93JykpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X21pcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2VuZXJhdGUgdGhlIHNoYWxsb3cgdGFyYmFsbAorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2goKQorICAgICAgICBtaXJyb3J0YXJiYWxsID0gdWQubWlycm9ydGFyYmFsbHNbMF0KKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCBtaXJyb3J0YXJiYWxsKSkKKworICAgICAgICAjIFNldCB1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2dpdDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisKKyAgICAgICAgb3MucmVuYW1lKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCBtaXJyb3J0YXJiYWxsKSwKKyAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG1pcnJvcnRhcmJhbGwpKQorCisgICAgICAgICMgRmV0Y2ggZnJvbSB0aGUgbWlycm9yCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmRsZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmdpdGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBzZWxmLmZldGNoX2FuZF91bnBhY2soKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2ludmFsaWRfZGVwdGgoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSCcsICctMTInKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZmV0Y2goKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19pbnZhbGlkX2RlcHRoX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSF9kZWZhdWx0JywgJy0xMicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5mZXRjaCgpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2V4dHJhX3JlZnMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ2FfYnJhbmNoJ10sIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfRVhUUkFfUkVGUycsICdyZWZzL2hlYWRzL2FfYnJhbmNoJykKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlcicsICdvcmlnaW4vYV9icmFuY2gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19leHRyYV9yZWZzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCd0YWcgdjEuMCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ2FfYnJhbmNoJywgJ3YxLjAnXSwgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19FWFRSQV9SRUZTJywgJ3JlZnMvdGFncy8qJykKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlcicsICd2MS4wJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfbWlzc2luZ19leHRyYV9yZWZzKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfRVhUUkFfUkVGUycsICdyZWZzL2hlYWRzL2ZvbycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5mZXRjaCgpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X21pc3NpbmdfZXh0cmFfcmVmc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0VYVFJBX1JFRlMnLCAncmVmcy90YWdzLyonKQorICAgICAgICBzZWxmLmZldGNoKCkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfcmVtb3ZlX3JldnMoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGluaXRpYWwgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgLWIgYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdkJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IG1hc3RlcicsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ3RhZyB2MC4wIGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdlJykKKyAgICAgICAgc2VsZi5naXQoJ21lcmdlIC0tbm8tZmYgLS1uby1lZGl0IGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnYnJhbmNoIC1kIGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCg3LCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnMCcpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX1JFVlMnLCAndjAuMCcpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDUpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2ludmFsaWRfcmV2cyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19SRVZTJywgJ3YwLjAnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5mZXRjaCgpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9iaXRiYWtlKHNlbGYpOgorICAgICAgICBzZWxmLmdpdCgncmVtb3RlIGFkZCAtLW1pcnJvcj1mZXRjaCBvcmlnaW4gZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvYml0YmFrZScsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2NvbmZpZyBjb3JlLmJhcmUgdHJ1ZScsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2ZldGNoJywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICAjIE5vdGUgdGhhdCB0aGUgMS4xMC4wIHRhZyBpcyBhbm5vdGF0ZWQsIHNvIHRoaXMgYWxzbyB0ZXN0cworICAgICAgICAjIHJlZmVyZW5jZSBvZiBhbiBhbm5vdGF0ZWQgdnMgdW5hbm5vdGF0ZWQgdGFnCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX1JFVlMnLCAnMS4xMC4wJykKKworICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coKQorCisgICAgICAgICMgQ29uZmlybSB0aGF0IHRoZSBoaXN0b3J5IG9mIDEuMTAuMCB3YXMgcmVtb3ZlZAorICAgICAgICBvcmlnX3JldnMgPSBsZW4oc2VsZi5naXQoJ3Jldi1saXN0IG1hc3RlcicsIGN3ZD1zZWxmLnNyY2Rpcikuc3BsaXRsaW5lcygpKQorICAgICAgICByZXZzID0gbGVuKHNlbGYuZ2l0KCdyZXYtbGlzdCBtYXN0ZXInKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ19yZXZzLCByZXZzKQorICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlciddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KG9yaWdfcmV2cyAtIDE3NTgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcGFyc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcGFyc2UucHkKaW5kZXggYWI2Y2E5MC4uOGYxNmJhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3BhcnNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9wYXJzZS5weQpAQCAtODMsNyArODMsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhcigiQSIpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0VmFyRmxhZygiQSIsImZsYWciKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhcigiQiIpLCAiMiIpCi0gICAgICAgIAorCisgICAgZXhwb3J0dGVzdCA9ICIiIgorQSA9ICJhIgorZXhwb3J0IEIgPSAiYiIKK2V4cG9ydCBDCitleHBvcnREID0gImQiCisiIiIKKworICAgIGRlZiB0ZXN0X3BhcnNlX2V4cG9ydHMoc2VsZik6CisgICAgICAgIGYgPSBzZWxmLnBhcnNlaGVscGVyKHNlbGYuZXhwb3J0dGVzdCkKKyAgICAgICAgZCA9IGJiLnBhcnNlLmhhbmRsZShmLm5hbWUsIHNlbGYuZClbJyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXIoIkEiKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLmdldFZhckZsYWcoIkEiLCAiZXhwb3J0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXIoIkIiKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0VmFyRmxhZygiQiIsICJleHBvcnQiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZC5nZXRWYXIoIkMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhckZsYWcoIkMiLCAiZXhwb3J0IiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQuZ2V0VmFyKCJEIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQuZ2V0VmFyRmxhZygiRCIsICJleHBvcnQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhcigiZXhwb3J0RCIpLCAiZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQuZ2V0VmFyRmxhZygiZXhwb3J0RCIsICJleHBvcnQiKSkKKwogCiAgICAgb3ZlcnJpZGV0ZXN0ID0gIiIiCiBSUkVDT01NRU5EU18ke1BOfSA9ICJhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQppbmRleCA5MjgzMzNhLi5mYTk1ZjYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQpAQCAtMiw2ICsyLDcgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KICMgQ29weXJpZ2h0IChDKSAyMDExIE1lbnRvciBHcmFwaGljcyBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMiBSaWNoYXJkIFB1cmRpZQogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtNTQsNiArNTUsNyBAQAogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBydW5fY29tbWFuZCBmYWlscyIiIgogCiBjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yOgorICAgICIiIkNvbm5lY3RvciBvYmplY3QgdXNlZCB0byBlbmFibGUgYWNjZXNzIHRvIGRhdGFzdG9yZSBvYmplY3RzIHZpYSB0aW5mb2lsIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCwgZHNpbmRleCk6CiAgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKQEAgLTE3Miw2ICsxNzQsMTQgQEAKICAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX2RwJzoKICAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJykgb3Ige30KKyAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnZm5fcHJvdmlkZXMnOgorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnKSBvciB7fQorICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlcyc6CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycpIG9yIHt9CisgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzX2R5bmFtaWMnOgorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljJykgb3Ige30KKyAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnByb3ZpZGVycyc6CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSUHJvdmlkZXJzJykgb3Ige30KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQogCkBAIC0yMDgsMTkgKzIxOCwxMTkgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIocG4pCiAKIAorY2xhc3MgVGluZm9pbFJlY2lwZUluZm86CisgICAgIiIiCisgICAgUHJvdmlkZXMgYSBjb252ZW5pZW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjYWNoZWQgaW5mb3JtYXRpb24gZm9yIGEgc2luZ2xlIHJlY2lwZS4KKyAgICBTb21lIGF0dHJpYnV0ZXMgYXJlIHNldCBvbiBjb25zdHJ1Y3Rpb24sIG90aGVycyBhcmUgcmVhZCBvbi1kZW1hbmQgKHdoaWNoIGludGVybmFsbHkKKyAgICBtYXkgcmVzdWx0IGluIGEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIHRvIHRoZSBiaXRiYWtlIHNlcnZlciB0aGUgZmlyc3QgdGltZSkuCisgICAgTm90ZSB0aGF0IG9ubHkgaW5mb3JtYXRpb24gd2hpY2ggaXMgY2FjaGVkIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoaXMgb2JqZWN0IC0gaWYKKyAgICB5b3UgbmVlZCBvdGhlciB2YXJpYWJsZSB2YWx1ZXMgeW91IHdpbGwgbmVlZCB0byBwYXJzZSB0aGUgcmVjaXBlIHVzaW5nCisgICAgVGluZm9pbC5wYXJzZV9yZWNpcGUoKS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVjaXBlY2FjaGUsIGQsIHBuLCBmbiwgZm5zKToKKyAgICAgICAgc2VsZi5fcmVjaXBlY2FjaGUgPSByZWNpcGVjYWNoZQorICAgICAgICBzZWxmLl9kID0gZAorICAgICAgICBzZWxmLnBuID0gcG4KKyAgICAgICAgc2VsZi5mbiA9IGZuCisgICAgICAgIHNlbGYuZm5zID0gZm5zCisgICAgICAgIHNlbGYuaW5oZXJpdF9maWxlcyA9IHJlY2lwZWNhY2hlLmluaGVyaXRzW2ZuXQorICAgICAgICBzZWxmLmRlcGVuZHMgPSByZWNpcGVjYWNoZS5kZXBzW2ZuXQorICAgICAgICAoc2VsZi5wZSwgc2VsZi5wdiwgc2VsZi5wcikgPSByZWNpcGVjYWNoZS5wa2dfcGVwdnByW2ZuXQorICAgICAgICBzZWxmLl9jYWNoZWRfcGFja2FnZXMgPSBOb25lCisgICAgICAgIHNlbGYuX2NhY2hlZF9ycHJvdmlkZXMgPSBOb25lCisgICAgICAgIHNlbGYuX2NhY2hlZF9wYWNrYWdlc19keW5hbWljID0gTm9uZQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lID09ICdhbHRlcm5hdGVzJzoKKyAgICAgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmLmZucyBpZiB4ICE9IHNlbGYuZm5dCisgICAgICAgIGVsaWYgbmFtZSA9PSAncmRlcGVuZHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2lwZWNhY2hlLnJ1bmRlcHNbc2VsZi5mbl0KKyAgICAgICAgZWxpZiBuYW1lID09ICdycmVjb21tZW5kcyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVjaXBlY2FjaGUucnVucmVjc1tzZWxmLmZuXQorICAgICAgICBlbGlmIG5hbWUgPT0gJ3Byb3ZpZGVzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNpcGVjYWNoZS5mbl9wcm92aWRlc1tzZWxmLmZuXQorICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzJzoKKyAgICAgICAgICAgIGlmIHNlbGYuX2NhY2hlZF9wYWNrYWdlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9wYWNrYWdlcyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHBrZywgZm5zIGluIHNlbGYuX3JlY2lwZWNhY2hlLnBhY2thZ2VzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZm4gaW4gZm5zOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkX3BhY2thZ2VzLmFwcGVuZChwa2cpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkX3BhY2thZ2VzCisgICAgICAgIGVsaWYgbmFtZSA9PSAncGFja2FnZXNfZHluYW1pYyc6CisgICAgICAgICAgICBpZiBzZWxmLl9jYWNoZWRfcGFja2FnZXNfZHluYW1pYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9wYWNrYWdlc19keW5hbWljID0gW10KKyAgICAgICAgICAgICAgICBmb3IgcGtnLCBmbnMgaW4gc2VsZi5fcmVjaXBlY2FjaGUucGFja2FnZXNfZHluYW1pYy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZuIGluIGZuczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9wYWNrYWdlc19keW5hbWljLmFwcGVuZChwa2cpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkX3BhY2thZ2VzX2R5bmFtaWMKKyAgICAgICAgZWxpZiBuYW1lID09ICdycHJvdmlkZXMnOgorICAgICAgICAgICAgaWYgc2VsZi5fY2FjaGVkX3Jwcm92aWRlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9ycHJvdmlkZXMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBwa2csIGZucyBpbiBzZWxmLl9yZWNpcGVjYWNoZS5ycHJvdmlkZXJzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZm4gaW4gZm5zOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkX3Jwcm92aWRlcy5hcHBlbmQocGtnKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9ycHJvdmlkZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBpbnN0YW5jZSBoYXMgbm8gYXR0cmlidXRlICclcyciICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKKyAgICBkZWYgaW5oZXJpdHMoc2VsZiwgb25seV9yZWNpcGU9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IHRoZSBpbmhlcml0ZWQgY2xhc3NlcyBmb3IgYSByZWNpcGUuIFJldHVybnMgdGhlIGNsYXNzIG5hbWVzIG9ubHkuCisgICAgICAgIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBvbmx5X3JlY2lwZTogVHJ1ZSB0byByZXR1cm4gb25seSB0aGUgY2xhc3NlcyBpbmhlcml0ZWQgYnkgdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZiwgRmFsc2UgdG8gcmV0dXJuIGFsbCBjbGFzc2VzIGluaGVyaXRlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGV4dCBmb3IgdGhlIHJlY2lwZSAod2hpY2ggaW5jbHVkZXMgZ2xvYmFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0ZWQgY2xhc3NlcykuCisgICAgICAgICIiIgorICAgICAgICBpZiBvbmx5X3JlY2lwZToKKyAgICAgICAgICAgIGdsb2JhbF9pbmhlcml0ID0gW3ggZm9yIHggaW4gKHNlbGYuX2QuZ2V0VmFyKCdCQklOQ0xVREVEJykgb3IgJycpLnNwbGl0KCkgaWYgeC5lbmRzd2l0aCgnLmJiY2xhc3MnKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdsb2JhbF9pbmhlcml0ID0gW10KKyAgICAgICAgZm9yIGNsc2ZpbGUgaW4gc2VsZi5pbmhlcml0X2ZpbGVzOgorICAgICAgICAgICAgaWYgb25seV9yZWNpcGUgYW5kIGNsc2ZpbGUgaW4gZ2xvYmFsX2luaGVyaXQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNsc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoY2xzZmlsZSkpWzBdCisgICAgICAgICAgICB5aWVsZCBjbHNuYW1lCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMnICUgc2VsZi5wbgorCisKIGNsYXNzIFRpbmZvaWw6CisgICAgIiIiCisgICAgVGluZm9pbCAtIGFuIEFQSSBmb3Igc2NyaXB0cyBhbmQgdXRpbGl0aWVzIHRvIHF1ZXJ5CisgICAgQml0QmFrZSBpbnRlcm5hbHMgYW5kIHBlcmZvcm0gYnVpbGQgb3BlcmF0aW9ucy4KKyAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQ9c3lzLnN0ZG91dCwgdHJhY2tpbmc9RmFsc2UsIHNldHVwX2xvZ2dpbmc9VHJ1ZSk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBuZXcgdGluZm9pbCBvYmplY3QuCisgICAgICAgIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBvdXRwdXQ6IHNwZWNpZmllcyB3aGVyZSBjb25zb2xlIG91dHB1dCBzaG91bGQgYmUgc2VudC4gRGVmYXVsdHMKKyAgICAgICAgICAgICAgICAgICAgdG8gc3lzLnN0ZG91dC4KKyAgICAgICAgICAgIHRyYWNraW5nOiBUcnVlIHRvIGVuYWJsZSB2YXJpYWJsZSBoaXN0b3J5IHRyYWNraW5nLCBGYWxzZSB0bworICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIGl0IChkZWZhdWx0KS4gRW5hYmxpbmcgdGhpcyBoYXMgYSBtaW5vcgorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBpbXBhY3Qgc28gdHlwaWNhbGx5IGl0IGlzbid0IGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgdW5sZXNzIHlvdSBuZWVkIHRvIHF1ZXJ5IHZhcmlhYmxlIGhpc3RvcnkuCisgICAgICAgICAgICBzZXR1cF9sb2dnaW5nOiBUcnVlIHRvIHNldHVwIGEgbG9nZ2VyIHNvIHRoYXQgdGhpbmdzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigpIHdpbGwgd29yayBpbW1lZGlhdGVseSBhbmQgdGltZW91dCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICBhcmUgdmlzaWJsZTsgRmFsc2UgdG8gbGV0IEJpdEJha2UgZG8gdGhpcyBpdHNlbGYuCisgICAgICAgICIiIgogICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlJykKICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IE5vbmUKICAgICAgICAgc2VsZi5jb29rZXIgPSBOb25lCiAgICAgICAgIHNlbGYudHJhY2tpbmcgPSB0cmFja2luZwogICAgICAgICBzZWxmLnVpX21vZHVsZSA9IE5vbmUKICAgICAgICAgc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbiA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNpcGVzX3BhcnNlZCA9IEZhbHNlCisgICAgICAgIHNlbGYucXVpZXQgPSAwCisgICAgICAgIHNlbGYub2xkaGFuZGxlcnMgPSBzZWxmLmxvZ2dlci5oYW5kbGVyc1s6XQogICAgICAgICBpZiBzZXR1cF9sb2dnaW5nOgogICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSAqY2xpZW50LXNpZGUqIGxvZ2dlciwgbm90aGluZyB0byBkbyB3aXRoCiAgICAgICAgICAgICAjIGxvZ2dpbmcgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyCiAgICAgICAgICAgICBiYi5tc2cubG9nZ2VyX2NyZWF0ZSgnQml0QmFrZScsIG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYubG9jYWxoYW5kbGVycyA9IFtdCisgICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgICAgICBpZiBoYW5kbGVyIG5vdCBpbiBzZWxmLm9sZGhhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsaGFuZGxlcnMuYXBwZW5kKGhhbmRsZXIpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgpAQCAtMjI4LDE5ICszMzgsNjEgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgIHNlbGYuc2h1dGRvd24oKQogCi0gICAgZGVmIHByZXBhcmUoc2VsZiwgY29uZmlnX29ubHk9RmFsc2UsIGNvbmZpZ19wYXJhbXM9Tm9uZSwgcXVpZXQ9MCk6CisgICAgZGVmIHByZXBhcmUoc2VsZiwgY29uZmlnX29ubHk9RmFsc2UsIGNvbmZpZ19wYXJhbXM9Tm9uZSwgcXVpZXQ9MCwgZXh0cmFfZmVhdHVyZXM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBQcmVwYXJlcyB0aGUgdW5kZXJseWluZyBCaXRCYWtlIHN5c3RlbSB0byBiZSB1c2VkIHZpYSB0aW5mb2lsLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHByaW9yIHRvIGNhbGxpbmcgYW55IG9mIHRoZSBvdGhlcgorICAgICAgICBmdW5jdGlvbnMgaW4gdGhlIEFQSS4KKyAgICAgICAgTk9URTogaWYgeW91IGNhbGwgcHJlcGFyZSgpIHlvdSBtdXN0IGFic29sdXRlbHkgY2FsbCBzaHV0ZG93bigpCisgICAgICAgIGJlZm9yZSB5b3VyIGNvZGUgdGVybWluYXRlcy4gWW91IGNhbiB1c2UgYSAid2l0aCIgYmxvY2sgdG8gZW5zdXJlCisgICAgICAgIHRoaXMgaGFwcGVucyBlLmcuCisKKyAgICAgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoKQorICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBjb25maWdfb25seTogVHJ1ZSB0byByZWFkIG9ubHkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIG5vdCBsb2FkCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2FjaGUgLyBwYXJzZSByZWNpcGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UganVzdAorICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0byBxdWVyeSB0aGUgdmFsdWUgb2YgYSB2YXJpYWJsZSBhdCB0aGUgZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCBvciB5b3Ugd2FudCB0byBkbyBhbnl0aGluZyBlbHNlIHRoYXQgZG9lc24ndAorICAgICAgICAgICAgICAgICAgICAgICAgaW52b2x2ZSBrbm93aW5nIGFueXRoaW5nIGFib3V0IHRoZSByZWNpcGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBjb25maWd1cmF0aW9uLiBGYWxzZSBsb2FkcyB0aGUgY2FjaGUgLyBwYXJzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICBjb25maWdfcGFyYW1zOiBvcHRpb25hbGx5IHNwZWNpZnkgeW91ciBvd24gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy4gSWYgbm90IHNwZWNpZmllZCBhbiBpbnN0YW5jZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgVGluZm9pbENvbmZpZ1BhcmFtZXRlcnMgd2lsbCBiZSBjcmVhdGVkIGludGVybmFsbHkuCisgICAgICAgICAgICBxdWlldDogICAgICBxdWlldCBsZXZlbCBjb250cm9sbGluZyBjb25zb2xlIG91dHB1dCAtIGVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJpdGJha2UncyAtcS8tLXF1aWV0IG9wdGlvbi4gRGVmYXVsdCBvZiAwIGdpdmVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBvdXRwdXQgbGV2ZWwgYXMgbm9ybWFsIGJpdGJha2UgZXhlY3V0aW9uLgorICAgICAgICAgICAgZXh0cmFfZmVhdHVyZXM6IGV4dHJhIGZlYXR1cmVzIHRvIGJlIGFkZGVkIHRvIHRoZSBmZWF0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlci4gU2VlCisgICAgICAgICAgICAgICAgICAgICAgICBDb29rZXJGZWF0dXJlcy5fZmVhdHVyZV9saXN0IGZvciBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKKwogICAgICAgICBpZiBzZWxmLnRyYWNraW5nOgogICAgICAgICAgICAgZXh0cmFmZWF0dXJlcyA9IFtiYi5jb29rZXIuQ29va2VyRmVhdHVyZXMuQkFTRURBVEFTVE9SRV9UUkFDS0lOR10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4dHJhZmVhdHVyZXMgPSBbXQogCisgICAgICAgIGlmIGV4dHJhX2ZlYXR1cmVzOgorICAgICAgICAgICAgZXh0cmFmZWF0dXJlcyArPSBleHRyYV9mZWF0dXJlcworCiAgICAgICAgIGlmIG5vdCBjb25maWdfcGFyYW1zOgogICAgICAgICAgICAgY29uZmlnX3BhcmFtcyA9IFRpbmZvaWxDb25maWdQYXJhbWV0ZXJzKGNvbmZpZ19vbmx5PWNvbmZpZ19vbmx5LCBxdWlldD1xdWlldCkKIAogICAgICAgICBjb29rZXJjb25maWcgPSBDb29rZXJDb25maWd1cmF0aW9uKCkKICAgICAgICAgY29va2VyY29uZmlnLnNldENvbmZpZ1BhcmFtZXRlcnMoY29uZmlnX3BhcmFtcykKIAotICAgICAgICBzZXJ2ZXIsIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24sIHVpX21vZHVsZSA9IHNldHVwX2JpdGJha2UoY29uZmlnX3BhcmFtcywKKyAgICAgICAgaWYgbm90IGNvbmZpZ19vbmx5OgorICAgICAgICAgICAgIyBEaXNhYmxlIGxvY2FsIGxvZ2dlcnMgYmVjYXVzZSB0aGUgVUkgbW9kdWxlIGlzIGdvaW5nIHRvIHNldCB1cCBpdHMgb3duCisgICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvY2FsaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaGFuZGxlcnMucmVtb3ZlKGhhbmRsZXIpCisgICAgICAgICAgICBzZWxmLmxvY2FsaGFuZGxlcnMgPSBbXQorCisgICAgICAgIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24sIHVpX21vZHVsZSA9IHNldHVwX2JpdGJha2UoY29uZmlnX3BhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZXJjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFmZWF0dXJlcykKIApAQCAtMjY2LDYgKzQxOCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgncGFyc2VDb25maWd1cmF0aW9uJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5ydW5fYWN0aW9ucyhjb25maWdfcGFyYW1zKQorICAgICAgICAgICAgICAgIHNlbGYucmVjaXBlc19wYXJzZWQgPSBUcnVlCiAKICAgICAgICAgICAgIHNlbGYuY29uZmlnX2RhdGEgPSBiYi5kYXRhLmluaXQoKQogICAgICAgICAgICAgY29ubmVjdG9yID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBOb25lKQpAQCAtMjg1LDcgKzQzOCwxMyBAQAogCiAgICAgZGVmIHBhcnNlUmVjaXBlcyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEZvcmNlIGEgcGFyc2Ugb2YgYWxsIHJlY2lwZXMuIE5vcm1hbGx5IHlvdSBzaG91bGQgc3BlY2lmeQorICAgICAgICBMZWdhY3kgZnVuY3Rpb24gLSB1c2UgcGFyc2VfcmVjaXBlcygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBhcnNlX3JlY2lwZXMoKQorCisgICAgZGVmIHBhcnNlX3JlY2lwZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIGluZm9ybWF0aW9uIG9uIGFsbCByZWNpcGVzLiBOb3JtYWxseSB5b3Ugc2hvdWxkIHNwZWNpZnkKICAgICAgICAgY29uZmlnX29ubHk9RmFsc2Ugd2hlbiBjYWxsaW5nIHByZXBhcmUoKSBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMKICAgICAgICAgZnVuY3Rpb247IHRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgeW91IG5lZWQKICAgICAgICAgdG8gaW5pdGlhbGlzZSBUaW5mb2lsIGFuZCB1c2UgaXQgd2l0aCBjb25maWdfb25seT1UcnVlIGZpcnN0IGFuZApAQCAtMjkzLDYgKzQ1Miw3IEBACiAgICAgICAgICIiIgogICAgICAgICBjb25maWdfcGFyYW1zID0gVGluZm9pbENvbmZpZ1BhcmFtZXRlcnMoY29uZmlnX29ubHk9RmFsc2UpCiAgICAgICAgIHNlbGYucnVuX2FjdGlvbnMoY29uZmlnX3BhcmFtcykKKyAgICAgICAgc2VsZi5yZWNpcGVzX3BhcnNlZCA9IFRydWUKIAogICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21tYW5kLCAqcGFyYW1zKToKICAgICAgICAgIiIiCkBAIC0zMzksOSArNDk5LDE2IEBACiAgICAgICAgIHJldHVybiBzZWxmLnNlcnZlcl9jb25uZWN0aW9uLmV2ZW50cy53YWl0RXZlbnQodGltZW91dCkKIAogICAgIGRlZiBnZXRfb3ZlcmxheWVkX3JlY2lwZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGaW5kIHJlY2lwZXMgd2hpY2ggYXJlIG92ZXJsYXllZCAoaS5lLiB3aGVyZSByZWNpcGVzIGV4aXN0IGluIG11bHRpcGxlIGxheWVycykKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnJ1bl9jb21tYW5kKCdnZXRPdmVybGF5ZWRSZWNpcGVzJykpCiAKICAgICBkZWYgZ2V0X3NraXBwZWRfcmVjaXBlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEZpbmQgcmVjaXBlcyB3aGljaCB3ZXJlIHNraXBwZWQgKGkuZS4gU2tpcFJlY2lwZSB3YXMgcmFpc2VkCisgICAgICAgIGR1cmluZyBwYXJzaW5nKS4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBPcmRlcmVkRGljdChzZWxmLnJ1bl9jb21tYW5kKCdnZXRTa2lwcGVkUmVjaXBlcycpKQogCiAgICAgZGVmIGdldF9hbGxfcHJvdmlkZXJzKHNlbGYpOgpAQCAtMzc0LDggKzU0MSw3NyBAQAogICAgICAgICByZXR1cm4gYmVzdFszXQogCiAgICAgZGVmIGdldF9maWxlX2FwcGVuZHMoc2VsZiwgZm4pOgorICAgICAgICAiIiIKKyAgICAgICAgRmluZCB0aGUgYmJhcHBlbmRzIGZvciBhIHJlY2lwZSBmaWxlCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZ2V0RmlsZUFwcGVuZHMnLCBmbikKIAorICAgIGRlZiBhbGxfcmVjaXBlcyhzZWxmLCBtYz0nJywgc29ydD1UcnVlKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuYWJsZSBpdGVyYXRpbmcgb3ZlciBhbGwgcmVjaXBlcyBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorICAgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgVGluZm9pbFJlY2lwZUluZm8gb2JqZWN0cyBjcmVhdGVkIG9uIGRlbWFuZC4KKyAgICAgICAgUGFyYW1ldGVyczoKKyAgICAgICAgICAgIG1jOiBUaGUgbXVsdGljb25maWcsIGRlZmF1bHQgb2YgJycgdXNlcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgc29ydDogVHJ1ZSB0byBzb3J0IHJlY2lwZXMgYWxwaGFiZXRpY2FsbHkgKGRlZmF1bHQpLCBGYWxzZSBvdGhlcndpc2UKKyAgICAgICAgIiIiCisgICAgICAgIHJlY2lwZWNhY2hlID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzW21jXQorICAgICAgICBpZiBzb3J0OgorICAgICAgICAgICAgcmVjaXBlcyA9IHNvcnRlZChyZWNpcGVjYWNoZS5wa2dfcG4uaXRlbXMoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlY2lwZXMgPSByZWNpcGVjYWNoZS5wa2dfcG4uaXRlbXMoKQorICAgICAgICBmb3IgcG4sIGZucyBpbiByZWNpcGVzOgorICAgICAgICAgICAgcHJvdiA9IHNlbGYuZmluZF9iZXN0X3Byb3ZpZGVyKHBuKQorICAgICAgICAgICAgcmVjaXBlID0gVGluZm9pbFJlY2lwZUluZm8ocmVjaXBlY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG49cG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbj1wcm92WzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPWZucykKKyAgICAgICAgICAgIHlpZWxkIHJlY2lwZQorCisgICAgZGVmIGFsbF9yZWNpcGVfZmlsZXMoc2VsZiwgbWM9JycsIHZhcmlhbnRzPVRydWUsIHByZWZlcnJlZF9vbmx5PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuYWJsZSBpdGVyYXRpbmcgb3ZlciBhbGwgcmVjaXBlIGZpbGVzIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciBmaWxlIHBhdGhzLgorICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgbWM6IFRoZSBtdWx0aWNvbmZpZywgZGVmYXVsdCBvZiAnJyB1c2VzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB2YXJpYW50czogVHJ1ZSB0byBpbmNsdWRlIHZhcmlhbnRzIG9mIHJlY2lwZXMgY3JlYXRlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgQkJDTEFTU0VYVEVORCAoZGVmYXVsdCkgb3IgRmFsc2UgdG8gZXhjbHVkZSB0aGVtCisgICAgICAgICAgICBwcmVmZXJyZWRfb25seTogVHJ1ZSB0byBpbmNsdWRlIG9ubHkgdGhlIHByZWZlcnJlZCByZWNpcGUgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBleGlzdCBwcm92aWRpbmcgdGhlIHNhbWUgUE4sIEZhbHNlIHRvIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICBhbGwgcmVjaXBlcworICAgICAgICAiIiIKKyAgICAgICAgcmVjaXBlY2FjaGUgPSBzZWxmLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdCisgICAgICAgIGlmIHByZWZlcnJlZF9vbmx5OgorICAgICAgICAgICAgZmlsZXMgPSBbXQorICAgICAgICAgICAgZm9yIHBuIGluIHJlY2lwZWNhY2hlLnBrZ19wbi5rZXlzKCk6CisgICAgICAgICAgICAgICAgcHJvdiA9IHNlbGYuZmluZF9iZXN0X3Byb3ZpZGVyKHBuKQorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChwcm92WzNdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZXMgPSByZWNpcGVjYWNoZS5wa2dfZm4ua2V5cygpCisgICAgICAgIGZvciBmbiBpbiBzb3J0ZWQoZmlsZXMpOgorICAgICAgICAgICAgaWYgbm90IHZhcmlhbnRzIGFuZCBmbi5zdGFydHN3aXRoKCd2aXJ0dWFsOicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB5aWVsZCBmbgorCisKKyAgICBkZWYgZ2V0X3JlY2lwZV9pbmZvKHNlbGYsIHBuLCBtYz0nJyk6CisgICAgICAgICIiIgorICAgICAgICBHZXQgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyByZWNpcGUgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBieSBuYW1lIChQTikuCisgICAgICAgIFJldHVybnMgYSBUaW5mb2lsUmVjaXBlSW5mbyBvYmplY3QgY3JlYXRlZCBvbiBkZW1hbmQuCisgICAgICAgIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBtYzogVGhlIG11bHRpY29uZmlnLCBkZWZhdWx0IG9mICcnIHVzZXMgdGhlIG1haW4gY29uZmlndXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJlY2lwZWNhY2hlID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzW21jXQorICAgICAgICBwcm92ID0gc2VsZi5maW5kX2Jlc3RfcHJvdmlkZXIocG4pCisgICAgICAgIGZuID0gcHJvdlszXQorICAgICAgICBhY3R1YWxfcG4gPSByZWNpcGVjYWNoZS5wa2dfZm5bZm5dCisgICAgICAgIHJlY2lwZSA9IFRpbmZvaWxSZWNpcGVJbmZvKHJlY2lwZWNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuPWFjdHVhbF9wbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuPWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPXJlY2lwZWNhY2hlLnBrZ19wblthY3R1YWxfcG5dKQorICAgICAgICByZXR1cm4gcmVjaXBlCisKICAgICBkZWYgcGFyc2VfcmVjaXBlKHNlbGYsIHBuKToKICAgICAgICAgIiIiCiAgICAgICAgIFBhcnNlIHRoZSBzcGVjaWZpZWQgcmVjaXBlIGFuZCByZXR1cm4gYSBkYXRhc3RvcmUgb2JqZWN0CkBAIC0zOTksMjYgKzYzNSwxOTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGNvbmZpZ19kYXRhIHRoZW4geW91IGNhbm5vdCB1c2UgYSB2aXJ0dWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbiBmb3IgZm4uCiAgICAgICAgICIiIgotICAgICAgICBpZiBhcHBlbmRzIGFuZCBhcHBlbmRsaXN0ID09IFtdOgotICAgICAgICAgICAgYXBwZW5kcyA9IEZhbHNlCi0gICAgICAgIGlmIGNvbmZpZ19kYXRhOgotICAgICAgICAgICAgZGN0ciA9IGJiLnJlbW90ZWRhdGEuUmVtb3RlRGF0YXN0b3Jlcy50cmFuc21pdF9kYXRhc3RvcmUoY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBkY3RyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCkKLSAgICAgICAgaWYgZHNjb246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVjb252ZXJ0X3R5cGUoZHNjb24sICdEYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHNlbGYudHJhY2tpbmc6CisgICAgICAgICAgICAjIEVuYWJsZSBoaXN0b3J5IHRyYWNraW5nIGp1c3QgZm9yIHRoZSBwYXJzZSBvcGVyYXRpb24KKyAgICAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoJ2VuYWJsZURhdGFUcmFja2luZycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGFwcGVuZHMgYW5kIGFwcGVuZGxpc3QgPT0gW106CisgICAgICAgICAgICAgICAgYXBwZW5kcyA9IEZhbHNlCisgICAgICAgICAgICBpZiBjb25maWdfZGF0YToKKyAgICAgICAgICAgICAgICBkY3RyID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzLnRyYW5zbWl0X2RhdGFzdG9yZShjb25maWdfZGF0YSkKKyAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBkY3RyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0KQorICAgICAgICAgICAgaWYgZHNjb246CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY29udmVydF90eXBlKGRzY29uLCAnRGF0YVN0b3JlQ29ubmVjdGlvbkhhbmRsZScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzZWxmLnRyYWNraW5nOgorICAgICAgICAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoJ2Rpc2FibGVEYXRhVHJhY2tpbmcnKQogCi0gICAgZGVmIGJ1aWxkX2ZpbGUoc2VsZiwgYnVpbGRmaWxlLCB0YXNrKToKKyAgICBkZWYgYnVpbGRfZmlsZShzZWxmLCBidWlsZGZpbGUsIHRhc2ssIGludGVybmFsPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgUnVucyB0aGUgc3BlY2lmaWVkIHRhc2sgZm9yIGp1c3QgYSBzaW5nbGUgcmVjaXBlIChpLmUuIG5vIGRlcGVuZGVuY2llcykuCi0gICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBiaXRiYWtlIC1iLCBleGNlcHQgbm8gd2FybmluZyB3aWxsIGJlIHByaW50ZWQuCisgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBiaXRiYWtlIC1iLCBleGNlcHQgd2l0aCB0aGUgZGVmYXVsdCBpbnRlcm5hbD1UcnVlCisgICAgICAgIG5vIHdhcm5pbmcgYWJvdXQgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcHJvZHVjZWQsIG5vcm1hbCBpbmZvIG1lc3NhZ2VzCisgICAgICAgIGZyb20gdGhlIHJ1bnF1ZXVlIHdpbGwgYmUgc2lsZW5jZWQgYW5kIEJ1aWxkSW5pdCwgQnVpbGRTdGFydGVkIGFuZAorICAgICAgICBCdWlsZENvbXBsZXRlZCBldmVudHMgd2lsbCBub3QgYmUgZmlyZWQuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnYnVpbGRGaWxlJywgYnVpbGRmaWxlLCB0YXNrLCBUcnVlKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnYnVpbGRGaWxlJywgYnVpbGRmaWxlLCB0YXNrLCBpbnRlcm5hbCkKKworICAgIGRlZiBidWlsZF90YXJnZXRzKHNlbGYsIHRhcmdldHMsIHRhc2s9Tm9uZSwgaGFuZGxlX2V2ZW50cz1UcnVlLCBleHRyYV9ldmVudHM9Tm9uZSwgZXZlbnRfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBCdWlsZHMgdGhlIHNwZWNpZmllZCB0YXJnZXRzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBub3JtYWwgaW52b2NhdGlvbgorICAgICAgICBvZiBiaXRiYWtlLiBIYXMgYnVpbHQtaW4gZXZlbnQgaGFuZGxpbmcgd2hpY2ggaXMgZW5hYmxlZCBieSBkZWZhdWx0IGFuZAorICAgICAgICBjYW4gYmUgZXh0ZW5kZWQgaWYgbmVlZGVkLgorICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgdGFyZ2V0czoKKyAgICAgICAgICAgICAgICBPbmUgb3IgbW9yZSB0YXJnZXRzIHRvIGJ1aWxkLiBDYW4gYmUgYSBsaXN0IG9yIGEKKyAgICAgICAgICAgICAgICBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5nLgorICAgICAgICAgICAgdGFzazoKKyAgICAgICAgICAgICAgICBUaGUgdGFzayB0byBydW47IGlmIE5vbmUgdGhlbiB0aGUgdmFsdWUgb2YgQkJfREVGQVVMVF9UQVNLCisgICAgICAgICAgICAgICAgd2lsbCBiZSB1c2VkLiBEZWZhdWx0IE5vbmUuCisgICAgICAgICAgICBoYW5kbGVfZXZlbnRzOgorICAgICAgICAgICAgICAgIFRydWUgdG8gaGFuZGxlIGV2ZW50cyBpbiBhIHNpbWlsYXIgd2F5IHRvIG5vcm1hbCBiaXRiYWtlCisgICAgICAgICAgICAgICAgaW52b2NhdGlvbiB3aXRoIGtub3R0eTsgRmFsc2UgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IChvbiB0aGUKKyAgICAgICAgICAgICAgICBhc3N1bXB0aW9uIHRoYXQgdGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUgZXZlbnRzIGluc3RlYWQpLgorICAgICAgICAgICAgICAgIERlZmF1bHQgVHJ1ZS4KKyAgICAgICAgICAgIGV4dHJhX2V2ZW50czoKKyAgICAgICAgICAgICAgICBBbiBvcHRpb25hbCBsaXN0IG9mIGV2ZW50cyB0byBhZGQgdG8gdGhlIGV2ZW50IG1hc2sgKGlmCisgICAgICAgICAgICAgICAgaGFuZGxlX2V2ZW50cz1UcnVlKS4gSWYgeW91IGFkZCBldmVudHMgaGVyZSB5b3UgYWxzbyBuZWVkCisgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSBhIGNhbGxiYWNrIGZ1bmN0aW9uIGluIGV2ZW50X2NhbGxiYWNrIHRoYXQgd2lsbAorICAgICAgICAgICAgICAgIGhhbmRsZSB0aGUgYWRkaXRpb25hbCBldmVudHMuIERlZmF1bHQgTm9uZS4KKyAgICAgICAgICAgIGV2ZW50X2NhbGxiYWNrOgorICAgICAgICAgICAgICAgIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRha2luZyBhIHNpbmdsZSBwYXJhbWV0ZXIgd2hpY2gKKyAgICAgICAgICAgICAgICB3aWxsIGJlIGNhbGxlZCBmaXJzdCB1cG9uIHJlY2VpdmluZyBhbnkgZXZlbnQgKGlmCisgICAgICAgICAgICAgICAgaGFuZGxlX2V2ZW50cz1UcnVlKSBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIG92ZXJyaWRlIG9yCisgICAgICAgICAgICAgICAgZXh0ZW5kIHRoZSBldmVudCBoYW5kbGluZy4gRGVmYXVsdCBOb25lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0YXJnZXRzLCBzdHIpOgorICAgICAgICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuc3BsaXQoKQorICAgICAgICBpZiBub3QgdGFzazoKKyAgICAgICAgICAgIHRhc2sgPSBzZWxmLmNvbmZpZ19kYXRhLmdldFZhcignQkJfREVGQVVMVF9UQVNLJykKKworICAgICAgICBpZiBoYW5kbGVfZXZlbnRzOgorICAgICAgICAgICAgIyBBIHJlYXNvbmFibGUgc2V0IG9mIGRlZmF1bHQgZXZlbnRzIG1hdGNoaW5nIHVwIHdpdGggdGhvc2Ugd2UgaGFuZGxlIGJlbG93CisgICAgICAgICAgICBldmVudG1hc2sgPSBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuZXZlbnQuQnVpbGRTdGFydGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ldmVudC5CdWlsZENvbXBsZXRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnbG9nZ2luZy5Mb2dSZWNvcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50Lk5vUHJvdmlkZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5idWlsZC5UYXNrU3RhcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza0ZhaWxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza0ZhaWxlZFNpbGVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1Byb2dyZXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTdGFydGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza1N0YXJ0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50LlByb2Nlc3NTdGFydGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBleHRyYV9ldmVudHM6CisgICAgICAgICAgICAgICAgZXZlbnRtYXNrLmV4dGVuZChleHRyYV9ldmVudHMpCisgICAgICAgICAgICByZXQgPSBzZWxmLnNldF9ldmVudF9tYXNrKGV2ZW50bWFzaykKKworICAgICAgICBpbmNsdWRlbG9ncyA9IHNlbGYuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQklOQ0xVREVMT0dTJykKKyAgICAgICAgbG9nbGluZXMgPSBzZWxmLmNvbmZpZ19kYXRhLmdldFZhcignQkJJTkNMVURFTE9HU19MSU5FUycpCisKKyAgICAgICAgcmV0ID0gc2VsZi5ydW5fY29tbWFuZCgnYnVpbGRUYXJnZXRzJywgdGFyZ2V0cywgdGFzaykKKyAgICAgICAgaWYgaGFuZGxlX2V2ZW50czoKKyAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlCisgICAgICAgICAgICAjIEJvcnJvd2VkIGZyb20ga25vdHR5LCBpbnN0ZWFkIHNvbWV3aGF0IGhhY2tpbHkgd2UgdXNlIHRoZSBoZWxwZXIKKyAgICAgICAgICAgICMgYXMgdGhlIG9iamVjdCB0byBzdG9yZSAic2h1dGRvd24iIG9uCisgICAgICAgICAgICBoZWxwZXIgPSBiYi51aS51aWhlbHBlci5CQlVJSGVscGVyKCkKKyAgICAgICAgICAgICMgV2Ugc2V0IHVwIGxvZ2dpbmcgb3B0aW9uYWxseSBpbiB0aGUgY29uc3RydWN0b3Igc28gbm93IHdlIG5lZWQgdG8KKyAgICAgICAgICAgICMgZ3JhYiB0aGUgaGFuZGxlcnMgdG8gcGFzcyB0byBUZXJtaW5hbEZpbHRlcgorICAgICAgICAgICAgY29uc29sZSA9IE5vbmUKKyAgICAgICAgICAgIGVycmNvbnNvbGUgPSBOb25lCisgICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6CisgICAgICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlID0gaGFuZGxlcgorICAgICAgICAgICAgICAgICAgICBlbGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJjb25zb2xlID0gaGFuZGxlcgorICAgICAgICAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKKyAgICAgICAgICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQorICAgICAgICAgICAgaGVscGVyLnNodXRkb3duID0gMAorICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IE5vbmUKKyAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIGNvbnNvbGUsIGVycmNvbnNvbGUsIGZvcm1hdCwgcXVpZXQ9c2VsZi5xdWlldCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudCA9IHNlbGYud2FpdF9ldmVudCgwLjI1KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnRfY2FsbGJhY2sgYW5kIGV2ZW50X2NhbGxiYWNrKGV2ZW50KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoZWxwZXIuZXZlbnRIYW5kbGVyKGV2ZW50KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZFNpbGVudCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTG9nZmlsZSBmb3IgZmFpbGVkIHNldHNjZW5lIHRhc2sgaXMgJXMiICUgZXZlbnQubG9nZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnVpLmtub3R0eS5wcmludF9ldmVudF9sb2coZXZlbnQsIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgdGVybWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucXVpZXQgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IGJiLnVpLmtub3R0eS5uZXdfcHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIGV2ZW50LnRvdGFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXByb2dyZXNzLnN0YXJ0KEZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucXVpZXQgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2Vwcm9ncmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MudXBkYXRlKGV2ZW50LnByb2dyZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiR290IFByb2Nlc3NQcm9ncmVzcyBldmVudCBmb3Igc29tZXRpbmcgdGhhdCBuZXZlciBzdGFydGVkPyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5xdWlldCA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZXByb2dyZXNzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcy5maW5pc2goKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXByb2dyZXNzID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCA9PSAwIG9yIGV2ZW50LmxldmVsbm8gPiBsb2dnaW5nLklORk86CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTm9Qcm92aWRlcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHN0cihldmVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaGVscGVyLnNodXRkb3duID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci51cGRhdGVGb290ZXIoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtZmlsdGVyLmNsZWFyRm9vdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhlbHBlci5zaHV0ZG93biA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcblNlY29uZCBLZXlib2FyZCBJbnRlcnJ1cHQsIHN0b3BwaW5nLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHNlbGYucnVuX2NvbW1hbmQoInN0YXRlRm9yY2VTaHV0ZG93biIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV0IGFuZCByZXRbMl06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gY2xlYW5seSBzdG9wOiAlcyIgJSByZXRbMl0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGhlbHBlci5zaHV0ZG93biA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIEludGVycnVwdCwgY2xvc2luZyBkb3duLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHNlbGYucnVuX2NvbW1hbmQoInN0YXRlU2h1dGRvd24iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJldCBhbmQgcmV0WzJdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGNsZWFubHkgc2h1dGRvd246ICVzIiAlIHJldFsyXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlci5zaHV0ZG93biA9IGhlbHBlci5zaHV0ZG93biArIDEKKyAgICAgICAgICAgICAgICB0ZXJtZmlsdGVyLmNsZWFyRm9vdGVyKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdGVybWZpbHRlci5maW5pc2goKQorICAgICAgICAgICAgaWYgaGVscGVyLmZhaWxlZF90YXNrczoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJldAogCiAgICAgZGVmIHNodXRkb3duKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU2h1dCBkb3duIHRpbmZvaWwuIERpc2Nvbm5lY3RzIGZyb20gdGhlIHNlcnZlciBhbmQgZ3JhY2VmdWxseQorICAgICAgICByZWxlYXNlcyBhbnkgYXNzb2NpYXRlZCByZXNvdXJjZXMuIFlvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBpZgorICAgICAgICBwcmVwYXJlKCkgaGFzIGJlZW4gY2FsbGVkLCBvciB1c2UgYSB3aXRoLi4uIGJsb2NrIHdoZW4geW91IGNyZWF0ZQorICAgICAgICB0aGUgdGluZm9pbCBvYmplY3Qgd2hpY2ggd2lsbCBlbnN1cmUgdGhhdCBpdCBnZXRzIGNhbGxlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb246CiAgICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdjbGllbnRDb21wbGV0ZScpCiAgICAgICAgICAgICBfc2VydmVyX2Nvbm5lY3Rpb25zLnJlbW92ZShzZWxmLnNlcnZlcl9jb25uZWN0aW9uKQpAQCAtNDI2LDYgKzgzNSwxMiBAQAogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbi50ZXJtaW5hdGUoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbiA9IE5vbmUKIAorICAgICAgICAjIFJlc3RvcmUgbG9nZ2luZyBoYW5kbGVycyB0byBob3cgaXQgbG9va2VkIHdoZW4gd2Ugc3RhcnRlZAorICAgICAgICBpZiBzZWxmLm9sZGhhbmRsZXJzOgorICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaWYgaGFuZGxlciBub3QgaW4gc2VsZi5vbGRoYW5kbGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaGFuZGxlcnMucmVtb3ZlKGhhbmRsZXIpCisKICAgICBkZWYgX3JlY29udmVydF90eXBlKHNlbGYsIG9iaiwgb3JpZ3R5cGVuYW1lKToKICAgICAgICAgIiIiCiAgICAgICAgIENvbnZlcnQgYW4gb2JqZWN0IGJhY2sgdG8gdGhlIHJpZ2h0IHR5cGUsIGluIHRoZSBjYXNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvYnVpbGRpbmZvaGVscGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQppbmRleCBlNDUxYzYzLi41MjRhNWIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvYnVpbGRpbmZvaGVscGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkKQEAgLTcxOSw3ICs3MTksMTEgQEAKIAogICAgIGRlZiBzYXZlX2J1aWxkX3BhY2thZ2VfaW5mb3JtYXRpb24oc2VsZiwgYnVpbGRfb2JqLCBwYWNrYWdlX2luZm8sIHJlY2lwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdF9wYWNrYWdlKToKLSAgICAgICAjIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkX29iaiwgQnVpbGQpCisgICAgICAgICMgYXNzZXJ0IGlzaW5zdGFuY2UoYnVpbGRfb2JqLCBCdWlsZCkKKworICAgICAgICBpZiBub3QgJ1BOJyBpbiBwYWNrYWdlX2luZm8ua2V5cygpOgorICAgICAgICAgICAgIyBubyBwYWNrYWdlIGRhdGEgdG8gc2F2ZSAoZS5nLiAnT1BLR04nPSJsaWI2NC0qInwibGliMzItKiIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICMgY3JlYXRlIGFuZCBzYXZlIHRoZSBvYmplY3QKICAgICAgICAgcG5hbWUgPSBwYWNrYWdlX2luZm9bJ1BLRyddCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkva25vdHR5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQppbmRleCA4MmFhN2M0Li5mYTg4ZTZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkva25vdHR5LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkKQEAgLTIwNyw4ICsyMDcsMTAgQEAKICAgICAgICAgICAgIHNlbGYuaW50ZXJhY3RpdmUgPSBGYWxzZQogICAgICAgICAgICAgYmIubm90ZSgiVW5hYmxlIHRvIHVzZSBpbnRlcmFjdGl2ZSBtb2RlIGZvciB0aGlzIHRlcm1pbmFsLCB1c2luZyBmYWxsYmFjayIpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCi0gICAgICAgIGVycmNvbnNvbGUuYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmLCBmb3JtYXQpKQorICAgICAgICBpZiBjb25zb2xlOgorICAgICAgICAgICAgY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCisgICAgICAgIGlmIGVycmNvbnNvbGU6CisgICAgICAgICAgICBlcnJjb25zb2xlLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZiwgZm9ybWF0KSkKIAogICAgICAgICBzZWxmLm1haW5fcHJvZ3Jlc3MgPSBOb25lCiAKQEAgLTMxMCw2ICszMTIsMzIgQEAKICAgICAgICAgICAgIGZkID0gc3lzLnN0ZGluLmZpbGVubygpCiAgICAgICAgICAgICBzZWxmLnRlcm1pb3MudGNzZXRhdHRyKGZkLCBzZWxmLnRlcm1pb3MuVENTQURSQUlOLCBzZWxmLnN0ZGluYmFja3VwKQogCitkZWYgcHJpbnRfZXZlbnRfbG9nKGV2ZW50LCBpbmNsdWRlbG9ncywgbG9nbGluZXMsIHRlcm1maWx0ZXIpOgorICAgICMgRklYTUUgcmVmYWN0b3IgdGhpcyBvdXQgZnVydGhlcgorICAgIGxvZ2ZpbGUgPSBldmVudC5sb2dmaWxlCisgICAgaWYgbG9nZmlsZSBhbmQgb3MucGF0aC5leGlzdHMobG9nZmlsZSk6CisgICAgICAgIHRlcm1maWx0ZXIuY2xlYXJGb290ZXIoKQorICAgICAgICBiYi5lcnJvcigiTG9nZmlsZSBvZiBmYWlsdXJlIHN0b3JlZCBpbjogJXMiICUgbG9nZmlsZSkKKyAgICAgICAgaWYgaW5jbHVkZWxvZ3MgYW5kIG5vdCBldmVudC5lcnJwcmludGVkOgorICAgICAgICAgICAgcHJpbnQoIkxvZyBkYXRhIGZvbGxvd3M6IikKKyAgICAgICAgICAgIGYgPSBvcGVuKGxvZ2ZpbGUsICJyIikKKyAgICAgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgbCA9IGYucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIGwgPT0gJyc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbCA9IGwucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsb2dsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgfCAlcycgJSBsKQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gaW50KGxvZ2xpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLnBvcCgwKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCd8ICVzJyAlIGwpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGxpbmVzOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgICAgICBwcmludChsaW5lKQorCiBkZWYgX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIG9ic2VydmVfb25seSk6CiAgICAgIyBHZXQgdmFsdWVzIG9mIHZhcmlhYmxlcyB3aGljaCBjb250cm9sIG91ciBvdXRwdXQKICAgICBpbmNsdWRlbG9ncywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbImdldFZhcmlhYmxlIiwgIkJCSU5DTFVERUxPR1MiXSkKQEAgLTM0Miw2ICszNzAsOSBAQAogCiBkZWYgbWFpbihzZXJ2ZXIsIGV2ZW50SGFuZGxlciwgcGFyYW1zLCB0ZiA9IFRlcm1pbmFsRmlsdGVyKToKIAorICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgorICAgICAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKKwogICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUgPSBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlciwgcGFyYW1zLm9ic2VydmVfb25seSkKIAogICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgc3lzLnN0ZG91dC5pc2F0dHkoKToKQEAgLTM2NSw4ICszOTYsOSBAQAogICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGVycmNvbnNvbGUsIGJiLm1zZy5CQkxvZ0ZpbHRlclN0ZEVycikKICAgICBjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCiAgICAgZXJyY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoZXJyY29uc29sZSkKKyAgICBpZiBub3QgYmIubXNnLmhhc19jb25zb2xlX2hhbmRsZXIobG9nZ2VyKToKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoZXJyY29uc29sZSkKIAogICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIktub3R0eVVJIikKIApAQCAtMzk1LDcgKzQyNyw2IEBACiAgICAgdW5pdmVyc2UgPSBGYWxzZQogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCi0gICAgICAgIHBhcmFtcy51cGRhdGVUb1NlcnZlcihzZXJ2ZXIsIG9zLmVudmlyb24uY29weSgpKQogICAgICAgICBjbWRsaW5lID0gcGFyYW1zLnBhcnNlQWN0aW9ucygpCiAgICAgICAgIGlmIG5vdCBjbWRsaW5lOgogICAgICAgICAgICAgcHJpbnQoIk5vdGhpbmcgdG8gZG8uICBVc2UgJ2JpdGJha2Ugd29ybGQnIHRvIGJ1aWxkIGV2ZXJ5dGhpbmcsIG9yIHJ1biAnYml0YmFrZSAtLWhlbHAnIGZvciB1c2FnZSBpbmZvcm1hdGlvbi4iKQpAQCAtNDcxLDExICs1MDIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICAgICAgIyBQcmVmaXggdGFzayBtZXNzYWdlcyB3aXRoIHJlY2lwZS90YXNrCi0gICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgaW4gaGVscGVyLnJ1bm5pbmdfdGFza3M6CisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgaW4gaGVscGVyLnJ1bm5pbmdfdGFza3MgYW5kIGV2ZW50LmxldmVsbm8gIT0gZm9ybWF0LlBMQUlOOgogICAgICAgICAgICAgICAgICAgICAgICAgdGFza2luZm8gPSBoZWxwZXIucnVubmluZ190YXNrc1tldmVudC50YXNrcGlkXQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gdGFza2luZm9bJ3RpdGxlJ10gKyAnOiAnICsgZXZlbnQubXNnCiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihldmVudCwgJ2ZuJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSBldmVudC5mbiArICc6ICcgKyBldmVudC5tc2cKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC00ODQsMjkgKzUxNSw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWQpOgogICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IDEKLSAgICAgICAgICAgICAgICBsb2dmaWxlID0gZXZlbnQubG9nZmlsZQotICAgICAgICAgICAgICAgIGlmIGxvZ2ZpbGUgYW5kIG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB0ZXJtZmlsdGVyLmNsZWFyRm9vdGVyKCkKLSAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIkxvZ2ZpbGUgb2YgZmFpbHVyZSBzdG9yZWQgaW46ICVzIiAlIGxvZ2ZpbGUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGluY2x1ZGVsb2dzIGFuZCBub3QgZXZlbnQuZXJycHJpbnRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJMb2cgZGF0YSBmb2xsb3dzOiIpCi0gICAgICAgICAgICAgICAgICAgICAgICBmID0gb3Blbihsb2dmaWxlLCAiciIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsID09ICcnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsLnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9nbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnIHwgJXMnICUgbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IGludChsb2dsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5wb3AoMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnfCAlcycgJSBsKQotICAgICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQobGluZSkKKyAgICAgICAgICAgICAgICBwcmludF9ldmVudF9sb2coZXZlbnQsIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgdGVybWZpbHRlcikKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tCYXNlKToKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhldmVudC5fbWVzc2FnZSkKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTU5LDcgKzU2OCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gZXZlbnQuZXhpdGNvZGUKICAgICAgICAgICAgICAgICBpZiBldmVudC5lcnJvcjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgZXhlY3V0aW9uIGZhaWxlZDogJXMiLCBldmVudC5lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgbWFpbi5zaHV0ZG93biA9IDIKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRXhpdCk6CkBAIC01NzAsMzkgKzU3OSwxNiBAQAogICAgICAgICAgICAgICAgIG1haW4uc2h1dGRvd24gPSAyCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygibXVsdGlwbGUgcHJvdmlkZXJzIGFyZSBhdmFpbGFibGUgZm9yICVzJXMgKCVzKSIsIGV2ZW50Ll9pc19ydW50aW1lIGFuZCAicnVudGltZSAiIG9yICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Ll9pdGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIuam9pbihldmVudC5fY2FuZGlkYXRlcykpCi0gICAgICAgICAgICAgICAgcnRpbWUgPSAiIgotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9pc19ydW50aW1lOgotICAgICAgICAgICAgICAgICAgICBydGltZSA9ICJSIgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjb25zaWRlciBkZWZpbmluZyBhIFBSRUZFUlJFRF8lc1BST1ZJREVSIGVudHJ5IHRvIG1hdGNoICVzIiAlIChydGltZSwgZXZlbnQuX2l0ZW0pKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9ydW50aW1lOgotICAgICAgICAgICAgICAgICAgICByID0gIlIiCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgciA9ICIiCi0KLSAgICAgICAgICAgICAgICBleHRyYSA9ICcnCi0gICAgICAgICAgICAgICAgaWYgbm90IGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5fY2xvc2VfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhID0gIi4gQ2xvc2UgbWF0Y2hlczpcbiAgJXMiICUgJ1xuICAnLmpvaW4oZXZlbnQuX2Nsb3NlX21hdGNoZXMpCi0KICAgICAgICAgICAgICAgICAjIEZvciB1bml2ZXJzZSBidWlsZHMsIG9ubHkgc2hvdyB0aGVzZSBhcyB3YXJuaW5ncywgbm90IGVycm9ycwotICAgICAgICAgICAgICAgIGggPSBsb2dnZXIud2FybmluZwogICAgICAgICAgICAgICAgIGlmIG5vdCB1bml2ZXJzZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gMQogICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgKyAxCi0gICAgICAgICAgICAgICAgICAgIGggPSBsb2dnZXIuZXJyb3IKLQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9kZXBlbmRlZXM6Ci0gICAgICAgICAgICAgICAgICAgIGgoIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIChidXQgJXMgJXNERVBFTkRTIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCklcyIsIHIsIGV2ZW50Ll9pdGVtLCAiLCAiLmpvaW4oZXZlbnQuX2RlcGVuZGVlcyksIHIsIGV4dHJhKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoKCJOb3RoaW5nICVzUFJPVklERVMgJyVzJyVzIiwgciwgZXZlbnQuX2l0ZW0sIGV4dHJhKQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICBmb3IgcmVhc29uIGluIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgaCgiJXMiLCByZWFzb24pCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tTdGFydGVkKToKQEAgLTYyNCwxMyArNjEwLDExIEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQpOgogICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IDEKICAgICAgICAgICAgICAgICB0YXNrZmFpbHVyZXMuYXBwZW5kKGV2ZW50LnRhc2tzdHJpbmcpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUYXNrICglcykgZmFpbGVkIHdpdGggZXhpdCBjb2RlICclcyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC50YXNrc3RyaW5nLCBldmVudC5leGl0Y29kZSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlNldHNjZW5lIHRhc2sgKCVzKSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJyVzJyAtIHJlYWwgdGFzayB3aWxsIGJlIHJ1biBpbnN0ZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC50YXNrc3RyaW5nLCBldmVudC5leGl0Y29kZSkKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkRlcFRyZWVHZW5lcmF0ZWQpOgpAQCAtNjYzLDYgKzY0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuTWV0YWRhdGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5TdGFtcFVwZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5Db25maWdQYXJzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuTXVsdGlDb25maWdQYXJzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuUmVjaXBlUGFyc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXZlbnQsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CmluZGV4IGNhODQ1YTMuLjg2OTBjNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CkBAIC0zMTUsNyArMzE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBhbHNvIGFsbG93IHRoZW0gdG8gbm93IGV4aXQgd2l0aCBhIHNpbmdsZSBeQwogICAgICAgICAgICAgICAgICAgICBzaHV0ZG93biA9IDIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQpOgotICAgICAgICAgICAgICAgICAgICBtdy5hcHBlbmRUZXh0KCJDb21tYW5kIGV4ZWN1dGlvbiBmYWlsZWQ6ICVzIiAlIGV2ZW50LmVycm9yKQorICAgICAgICAgICAgICAgICAgICBtdy5hcHBlbmRUZXh0KHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMikKICAgICAgICAgICAgICAgICAgICAgZXhpdGZsYWcgPSBUcnVlCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRXhpdCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CmluZGV4IDlkMTRlY2UuLjBlOGU5ZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CkBAIC02Myw3ICs2Myw5IEBACiAgICAgICAgIHNlbGYuY3VycmVudCA9IE5vbmUKICAgICAgICAgc2VsZi5maWx0ZXJfbW9kZWwgPSBtb2RlbC5maWx0ZXJfbmV3KCkKICAgICAgICAgc2VsZi5maWx0ZXJfbW9kZWwuc2V0X3Zpc2libGVfZnVuYyhzZWxmLl9maWx0ZXIpCi0gICAgICAgIHNlbGYuc2V0X21vZGVsKHNlbGYuZmlsdGVyX21vZGVsKQorICAgICAgICBzZWxmLnNvcnRfbW9kZWwgPSBzZWxmLmZpbHRlcl9tb2RlbC5zb3J0X25ld193aXRoX21vZGVsKCkKKyAgICAgICAgc2VsZi5zb3J0X21vZGVsLnNldF9zb3J0X2NvbHVtbl9pZChDT0xfREVQX1BBUkVOVCwgR3RrLlNvcnRUeXBlLkFTQ0VORElORykKKyAgICAgICAgc2VsZi5zZXRfbW9kZWwoc2VsZi5zb3J0X21vZGVsKQogICAgICAgICBzZWxmLmFwcGVuZF9jb2x1bW4oR3RrLlRyZWVWaWV3Q29sdW1uKGxhYmVsLCBHdGsuQ2VsbFJlbmRlcmVyVGV4dCgpLCB0ZXh0PUNPTF9ERVBfUEFSRU5UKSkKIAogICAgIGRlZiBfZmlsdGVyKHNlbGYsIG1vZGVsLCBpdGVyLCBkYXRhKToKQEAgLTI4NiwyMyArMjg4LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Ob1Byb3ZpZGVyKToKLSAgICAgICAgICAgICAgICBpZiBldmVudC5fcnVudGltZToKLSAgICAgICAgICAgICAgICAgICAgciA9ICJSIgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAiIgotCi0gICAgICAgICAgICAgICAgZXh0cmEgPSAnJwotICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQuX2Nsb3NlX21hdGNoZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKGV2ZW50Ll9jbG9zZV9tYXRjaGVzKQotCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQuX2RlcGVuZGVlczoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIChidXQgJXMgJXNERVBFTkRTIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCklcyIgJSAociwgZXZlbnQuX2l0ZW0sICIsICIuam9pbihldmVudC5fZGVwZW5kZWVzKSwgciwgZXh0cmEpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJOb3RoaW5nICVzUFJPVklERVMgJyVzJyVzIiAlIChyLCBldmVudC5faXRlbSwgZXh0cmEpKQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICBmb3IgcmVhc29uIGluIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVhc29uKQorICAgICAgICAgICAgICAgIHByaW50KHN0cihldmVudCkpCiAKICAgICAgICAgICAgICAgICBfLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVTaHV0ZG93biJdKQogICAgICAgICAgICAgICAgIGlmIGVycm9yOgpAQCAtMzEwLDcgKzI5Niw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKLSAgICAgICAgICAgICAgICBwcmludCgiQ29tbWFuZCBleGVjdXRpb24gZmFpbGVkOiAlcyIgJSBldmVudC5lcnJvcikKKyAgICAgICAgICAgICAgICBwcmludChzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5leGl0Y29kZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRFeGl0KToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5CmluZGV4IDcxZjA0ZmEuLjg4Y2VjMzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL3RvYXN0ZXJ1aS5weQpAQCAtMzIwLDI5ICszMjAsMTMgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkNhY2hlTG9hZENvbXBsZXRlZCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygibXVsdGlwbGUgcHJvdmlkZXJzIGFyZSBhdmFpbGFibGUgZm9yICVzJXMgKCVzKSIsIGV2ZW50Ll9pc19ydW50aW1lIGFuZCAicnVudGltZSAiIG9yICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Ll9pdGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIuam9pbihldmVudC5fY2FuZGlkYXRlcykpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNvbnNpZGVyIGRlZmluaW5nIGEgUFJFRkVSUkVEX1BST1ZJREVSIGVudHJ5IHRvIG1hdGNoICVzIiwgZXZlbnQuX2l0ZW0pCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oc3RyKGV2ZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Ob1Byb3ZpZGVyKToKICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgKyAxCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQuX3J1bnRpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAiUiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByID0gIiIKLQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9kZXBlbmRlZXM6Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgPSAiTm90aGluZyAlc1BST1ZJREVTICclcycgKGJ1dCAlcyAlc0RFUEVORFMgb24gb3Igb3RoZXJ3aXNlIHJlcXVpcmVzIGl0KSIgJSAociwgZXZlbnQuX2l0ZW0sICIsICIuam9pbihldmVudC5fZGVwZW5kZWVzKSwgcikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIiAlIChyLCBldmVudC5faXRlbSkKLQorICAgICAgICAgICAgICAgIHRleHQgPSBzdHIoZXZlbnQpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHRleHQpCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQuX3JlYXNvbnM6Ci0gICAgICAgICAgICAgICAgICAgIGZvciByZWFzb24gaW4gZXZlbnQuX3JlYXNvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIiwgcmVhc29uKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWFzb24KICAgICAgICAgICAgICAgICBidWlsZGluZm9oZWxwZXIuc3RvcmVfbG9nX2Vycm9yKHRleHQpCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMzY0LDggKzM0OCw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQpOgogICAgICAgICAgICAgICAgIGJ1aWxkaW5mb2hlbHBlci51cGRhdGVfYW5kX3N0b3JlX3Rhc2soZXZlbnQpCiAgICAgICAgICAgICAgICAgdGFza2ZhaWx1cmVzLmFwcGVuZChldmVudC50YXNrc3RyaW5nKQotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVGFzayAoJXMpIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFza3N0cmluZywgZXZlbnQuZXhpdGNvZGUpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgKGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrQ29tcGxldGVkLCBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCkpOgpAQCAtMzgyLDcgKzM2NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzICs9IDEKICAgICAgICAgICAgICAgICAgICAgZXJyb3Jjb2RlID0gMQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgZXhlY3V0aW9uIGZhaWxlZDogJXMiLCBldmVudC5lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCk6CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5mb2hlbHBlci5zY2FuX2ltYWdlX2FydGlmYWN0cygpCiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5mb2hlbHBlci5jbG9uZV9yZXF1aXJlZF9zZGtfYXJ0aWZhY3RzKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQppbmRleCAxMTNmY2VkLi45NjNjMWVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CkBAIC02MSw2ICs2MSw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF1bJ3Byb2dyZXNzJ10gPSBldmVudC5wcm9ncmVzcwogICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydyYXRlJ10gPSBldmVudC5yYXRlCiAgICAgICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgZ2V0VGFza3Moc2VsZik6CiAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IEZhbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKaW5kZXggNmE0NGRiNS4uYzU0MGI0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtNzcxLDEzICs3NzEsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICByZW5hbWVmYWlsZWQgPSAxCisgICAgIyBvcy5yZW5hbWUgbmVlZHMgdG8ga25vdyB0aGUgZGVzdCBwYXRoIGVuZGluZyB3aXRoIGZpbGUgbmFtZQorICAgICMgc28gYXBwZW5kIHRoZSBmaWxlIG5hbWUgdG8gYSBwYXRoIG9ubHkgaWYgaXQncyBhIGRpciBzcGVjaWZpZWQKKyAgICBzcmNmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3JjKQorICAgIGRlc3RwYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIHNyY2ZuYW1lKSBpZiBvcy5wYXRoLmlzZGlyKGRlc3QpIFwKKyAgICAgICAgICAgICAgICBlbHNlIGRlc3QKKwogICAgIGlmIHNzdGF0W3N0YXQuU1RfREVWXSA9PSBkc3RhdFtzdGF0LlNUX0RFVl06CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgb3MucmVuYW1lIG5lZWRzIHRvIGtub3cgdGhlIGRlc3QgcGF0aCBlbmRpbmcgd2l0aCBmaWxlIG5hbWUKLSAgICAgICAgICAgICMgc28gYXBwZW5kIHRoZSBmaWxlIG5hbWUgdG8gYSBwYXRoIG9ubHkgaWYgaXQncyBhIGRpciBzcGVjaWZpZWQKLSAgICAgICAgICAgIHNyY2ZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzcmMpCi0gICAgICAgICAgICBkZXN0cGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBzcmNmbmFtZSkgaWYgb3MucGF0aC5pc2RpcihkZXN0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlc3QKICAgICAgICAgICAgIG9zLnJlbmFtZShzcmMsIGRlc3RwYXRoKQogICAgICAgICAgICAgcmVuYW1lZmFpbGVkID0gMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CkBAIC03OTEsOCArNzkyLDggQEAKICAgICAgICAgZGlkY29weSA9IDAKICAgICAgICAgaWYgc3RhdC5TX0lTUkVHKHNzdGF0W3N0YXQuU1RfTU9ERV0pOgogICAgICAgICAgICAgdHJ5OiAjIEZvciBzYWZldHkgY29weSB0aGVuIG1vdmUgaXQgb3Zlci4KLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkZXN0ICsgIiNuZXciKQotICAgICAgICAgICAgICAgIG9zLnJlbmFtZShkZXN0ICsgIiNuZXciLCBkZXN0KQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRlc3RwYXRoICsgIiNuZXciKQorICAgICAgICAgICAgICAgIG9zLnJlbmFtZShkZXN0cGF0aCArICIjbmV3IiwgZGVzdHBhdGgpCiAgICAgICAgICAgICAgICAgZGlkY29weSA9IDEKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBwcmludCgnbW92ZWZpbGU6IGNvcHknLCBzcmMsICctPicsIGRlc3QsICdmYWlsZWQuJywgZSkKQEAgLTgxMyw5ICs4MTQsOSBAQAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGlmIG5ld210aW1lOgotICAgICAgICBvcy51dGltZShkZXN0LCAobmV3bXRpbWUsIG5ld210aW1lKSkKKyAgICAgICAgb3MudXRpbWUoZGVzdHBhdGgsIChuZXdtdGltZSwgbmV3bXRpbWUpKQogICAgIGVsc2U6Ci0gICAgICAgIG9zLnV0aW1lKGRlc3QsIChzc3RhdFtzdGF0LlNUX0FUSU1FXSwgc3N0YXRbc3RhdC5TVF9NVElNRV0pKQorICAgICAgICBvcy51dGltZShkZXN0cGF0aCwgKHNzdGF0W3N0YXQuU1RfQVRJTUVdLCBzc3RhdFtzdGF0LlNUX01USU1FXSkpCiAgICAgICAgIG5ld210aW1lID0gc3N0YXRbc3RhdC5TVF9NVElNRV0KICAgICByZXR1cm4gbmV3bXRpbWUKIApAQCAtMTUwMiw3ICsxNTAzLDcgQEAKIAogZGVmIGxvYWRfcGx1Z2lucyhsb2dnZXIsIHBsdWdpbnMsIHBsdWdpbnBhdGgpOgogICAgIGRlZiBsb2FkX3BsdWdpbihuYW1lKToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKCdMb2FkaW5nIHBsdWdpbiAlcycgJSBuYW1lKQorICAgICAgICBsb2dnZXIuZGVidWcoMSwgJ0xvYWRpbmcgcGx1Z2luICVzJyAlIG5hbWUpCiAgICAgICAgIGZwLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUobmFtZSwgW3BsdWdpbnBhdGhdKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gaW1wLmxvYWRfbW9kdWxlKG5hbWUsIGZwLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCkBAIC0xNTEwLDcgKzE1MTEsNyBAQAogICAgICAgICAgICAgaWYgZnA6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCi0gICAgbG9nZ2VyLmRlYnVnKCdMb2FkaW5nIHBsdWdpbnMgZnJvbSAlcy4uLicgJSBwbHVnaW5wYXRoKQorICAgIGxvZ2dlci5kZWJ1ZygxLCAnTG9hZGluZyBwbHVnaW5zIGZyb20gJXMuLi4nICUgcGx1Z2lucGF0aCkKIAogICAgIGV4cGFuZGVkID0gKGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4ocGx1Z2lucGF0aCwgJyonICsgZXh0KSkKICAgICAgICAgICAgICAgICBmb3IgZXh0IGluIHB5dGhvbl9leHRlbnNpb25zKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKaW5kZXggY2Y5NDcwNC4uYjEzMjZlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvYWN0aW9uLnB5CkBAIC0xLDcgKzEsOSBAQAogaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogCiBpbXBvcnQgYmIudXRpbHMKIApAQCAtMzIsMTAgKzM0LDI2IEBACiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJVbmFibGUgdG8gZmluZCBiYmxheWVycy5jb25mXG4iKQogICAgICAgICAgICAgcmV0dXJuIDEKIAotICAgICAgICBub3RhZGRlZCwgXyA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBsYXllcmRpciwgTm9uZSkKLSAgICAgICAgaWYgbm90YWRkZWQ6Ci0gICAgICAgICAgICBmb3IgaXRlbSBpbiBub3RhZGRlZDoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgJXMgaXMgYWxyZWFkeSBpbiBCQkxBWUVSU1xuIiAlIGl0ZW0pCisgICAgICAgICMgQmFjayB1cCBiYmxheWVycy5jb25mIHRvIHRlbXBkaXIgYmVmb3JlIHdlIGFkZCBsYXllcnMKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBiYWNrdXAgPSB0ZW1wZGlyICsgIi9iYmxheWVycy5jb25mLmJhayIKKyAgICAgICAgc2h1dGlsLmNvcHkyKGJibGF5ZXJzX2NvbmYsIGJhY2t1cCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBub3RhZGRlZCwgXyA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBsYXllcmRpciwgTm9uZSkKKyAgICAgICAgICAgIGlmIG5vdCAoYXJncy5mb3JjZSBvciBub3RhZGRlZCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbmZvaWwucGFyc2VSZWNpcGVzKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgYmIudGluZm9pbC5UaW5mb2lsVUlFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICMgUmVzdG9yZSB0aGUgYmFjayB1cCBjb3B5IG9mIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKGJhY2t1cCwgYmJsYXllcnNfY29uZikKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlBhcnNlIGZhaWx1cmUgd2l0aCB0aGUgc3BlY2lmaWVkIGxheWVyIGFkZGVkIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBub3RhZGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNwZWNpZmllZCBsYXllciAlcyBpcyBhbHJlYWR5IGluIEJCTEFZRVJTXG4iICUgaXRlbSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBiYWNrIHVwIGNvcHkgb2YgYmJsYXllcnMuY29uZgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQogCiAgICAgZGVmIGRvX3JlbW92ZV9sYXllcihzZWxmLCBhcmdzKToKICAgICAgICAgIiIiUmVtb3ZlIGEgbGF5ZXIgZnJvbSBiYmxheWVycy5jb25mLiIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQppbmRleCA1MDZjMTEwLi45YWYzODVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQpAQCAtMjQ3LDYgKzI0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4oIkFkZGluZyBsYXllciBcIiVzXCIgdG8gY29uZi9iYmxheWVycy5jb25mIiAlIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGxvY2FsYXJncyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgpCiAgICAgICAgICAgICAgICAgICAgIGxvY2FsYXJncy5sYXllcmRpciA9IGxheWVyZGlyCisgICAgICAgICAgICAgICAgICAgIGxvY2FsYXJncy5mb3JjZSA9IGFyZ3MuZm9yY2UKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb19hZGRfbGF5ZXIobG9jYWxhcmdzKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKaW5kZXggYTdlZmE1OC4uNmE5OTcyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCiBpbXBvcnQgc3FsaXRlMwotaW1wb3J0IGJiLnNlcnZlci54bWxycGMKK2ltcG9ydCBiYi5zZXJ2ZXIueG1scnBjY2xpZW50CiBpbXBvcnQgcHJzZXJ2CiBpbXBvcnQgcHJzZXJ2LmRiCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBzZWxlY3QKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuUFJzZXJ2IikKIApAQCAtNTksNiArNjAsOCBAQAogICAgICAgICBzZWxmLnJlZ2lzdGVyX2Z1bmN0aW9uKHNlbGYuaW1wb3J0b25lLCAiaW1wb3J0b25lIikKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCiAKKyAgICAgICAgc2VsZi5xdWl0cGlwZWluLCBzZWxmLnF1aXRwaXBlb3V0ID0gb3MucGlwZSgpCisKICAgICAgICAgc2VsZi5yZXF1ZXN0cXVldWUgPSBxdWV1ZS5RdWV1ZSgpCiAgICAgICAgIHNlbGYuaGFuZGxlcnRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0ID0gc2VsZi5wcm9jZXNzX3JlcXVlc3RfdGhyZWFkKQogICAgICAgICBzZWxmLmhhbmRsZXJ0aHJlYWQuZGFlbW9uID0gRmFsc2UKQEAgLTc1LDEyICs3OCwxNCBAQAogCiAgICAgICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIlBSU2VydiBIYW5kbGVyIikKIAotICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0ZmxhZzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpID0gc2VsZi5yZXF1ZXN0cXVldWUuZ2V0KFRydWUsIDMwKQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgogICAgICAgICAgICAgICAgIHNlbGYudGFibGUuc3luY19pZl9kaXJ0eSgpCiAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHJlcXVlc3QgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCkBAIC0xMDAsNyArMTA1LDggQEAKICAgICBkZWYgc2lndGVybV9oYW5kbGVyKHNlbGYsIHNpZ251bSwgc3RhY2spOgogICAgICAgICBpZiBzZWxmLnRhYmxlOgogICAgICAgICAgICAgc2VsZi50YWJsZS5zeW5jKCkKLSAgICAgICAgc2VsZi5xdWl0PVRydWUKKyAgICAgICAgc2VsZi5xdWl0KCkKKyAgICAgICAgc2VsZi5yZXF1ZXN0cXVldWUucHV0KChOb25lLCBOb25lKSkKIAogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICBzZWxmLnJlcXVlc3RxdWV1ZS5wdXQoKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKSkKQEAgLTEzNiw3ICsxNDIsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi50YWJsZS5pbXBvcnRvbmUodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0sIHZhbHVlKQogCiAgICAgZGVmIHBpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5xdWl0CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5xdWl0ZmxhZwogCiAgICAgZGVmIGdldGluZm8oc2VsZik6CiAgICAgICAgIHJldHVybiAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpCkBAIC0xNTIsMTIgKzE1OCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBxdWl0KHNlbGYpOgotICAgICAgICBzZWxmLnF1aXQ9VHJ1ZQorICAgICAgICBzZWxmLnF1aXRmbGFnPVRydWUKKyAgICAgICAgb3Mud3JpdGUoc2VsZi5xdWl0cGlwZW91dCwgYiJxIikKKyAgICAgICAgb3MuY2xvc2Uoc2VsZi5xdWl0cGlwZW91dCkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgd29ya19mb3JldmVyKHNlbGYsKToKLSAgICAgICAgc2VsZi5xdWl0ID0gRmFsc2UKLSAgICAgICAgc2VsZi50aW1lb3V0ID0gMC41CisgICAgICAgIHNlbGYucXVpdGZsYWcgPSBGYWxzZQorICAgICAgICAjIFRoaXMgdGltZW91dCBhcHBsaWVzIHRvIHRoZSBwb2xsIGluIFRDUFNlcnZlciwgd2UgbmVlZCB0aGUgc2VsZWN0IAorICAgICAgICAjIGJlbG93IHRvIHdha2Ugb24gb3VyIHF1aXQgcGlwZSBjbG9zaW5nLiBXZSBvbmx5IGV2ZXIgY2FsbCBpbnRvIGhhbmRsZV9yZXF1ZXN0CisgICAgICAgICMgaWYgdGhlcmUgaXMgZGF0YSB0aGVyZS4KKyAgICAgICAgc2VsZi50aW1lb3V0ID0gMC4wMQogCiAgICAgICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIlBSU2VydiIpCiAKQEAgLTE2OSwxMiArMTgwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYmZpbGUsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzdHIob3MuZ2V0cGlkKCkpKSkKIAogICAgICAgICBzZWxmLmhhbmRsZXJ0aHJlYWQuc3RhcnQoKQotICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgotICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHdoaWxlIG5vdCBzZWxmLnF1aXRmbGFnOgorICAgICAgICAgICAgcmVhZHkgPSBzZWxlY3Quc2VsZWN0KFtzZWxmLmZpbGVubygpLCBzZWxmLnF1aXRwaXBlaW5dLCBbXSwgW10sIDMwKQorICAgICAgICAgICAgaWYgc2VsZi5xdWl0ZmxhZzoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgc2VsZi5maWxlbm8oKSBpbiByZWFkeVswXToKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9yZXF1ZXN0KCkKICAgICAgICAgc2VsZi5oYW5kbGVydGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmRiLmRpc2Nvbm5lY3QoKQogICAgICAgICBsb2dnZXIuaW5mbygiUFJTZXJ2ZXI6IHN0b3BwaW5nLi4uIikKICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBvcy5jbG9zZShzZWxmLnF1aXRwaXBlaW4pCiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpAQCAtMTgyLDYgKzE5OCw3IEBACiAgICAgICAgICAgICBwaWQgPSBzZWxmLmRhZW1vbml6ZSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwaWQgPSBzZWxmLmZvcmsoKQorICAgICAgICAgICAgc2VsZi5waWQgPSBwaWQKIAogICAgICAgICAjIEVuc3VyZSBib3RoIHRoZSBwYXJlbnQgc2VlcyB0aGlzIGFuZCB0aGUgY2hpbGQgZnJvbSB0aGUgd29ya19mb3JldmVyIGxvZyBlbnRyeSBhYm92ZQogICAgICAgICBsb2dnZXIuaW5mbygiU3RhcnRlZCBQUlNlcnZlciB3aXRoIERCZmlsZTogJXMsIElQOiAlcywgUE9SVDogJXMsIFBJRDogJXMiICUKQEAgLTMwMCw3ICszMTcsNyBAQAogICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHNpbmdsZXRvbi5nZXRpbmZvKCkKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiwgc2VsZi50cmFuc3BvcnQgPSBiYi5zZXJ2ZXIueG1scnBjLl9jcmVhdGVfc2VydmVyKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24sIHNlbGYudHJhbnNwb3J0ID0gYmIuc2VydmVyLnhtbHJwY2NsaWVudC5fY3JlYXRlX3NlcnZlcihzZWxmLmhvc3QsIHNlbGYucG9ydCkKIAogICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTQyOCw2ICs0NDUsOSBAQAogZGVmIGF1dG9fc3RhcnQoZCk6CiAgICAgZ2xvYmFsIHNpbmdsZXRvbgogCisgICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyCisgICAgYXV0b19zaHV0ZG93bigpCisKICAgICBob3N0X3BhcmFtcyA9IGxpc3QoZmlsdGVyKE5vbmUsIChkLmdldFZhcignUFJTRVJWX0hPU1QnKSBvciAnJykuc3BsaXQoJzonKSkpCiAgICAgaWYgbm90IGhvc3RfcGFyYW1zOgogICAgICAgICByZXR1cm4gTm9uZQpAQCAtNDY0LDcgKzQ4NCw3IEBACiAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiUFJzZXJ2aWNlICVzOiVkIG5vdCBhdmFpbGFibGUiICUgKGhvc3QsIHBvcnQpKQogICAgICAgICByYWlzZSBQUlNlcnZpY2VDb25maWdFcnJvcgogCi1kZWYgYXV0b19zaHV0ZG93bihkPU5vbmUpOgorZGVmIGF1dG9fc2h1dGRvd24oKToKICAgICBnbG9iYWwgc2luZ2xldG9uCiAgICAgaWYgc2luZ2xldG9uOgogICAgICAgICBob3N0LCBwb3J0ID0gc2luZ2xldG9uLmdldGluZm8oKQpAQCAtNDcyLDYgKzQ5MiwxMSBAQAogICAgICAgICAgICAgUFJTZXJ2ZXJDb25uZWN0aW9uKGhvc3QsIHBvcnQpLnRlcm1pbmF0ZSgpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU3RvcCBQUlNlcnZpY2UgJXM6JWQgZmFpbGVkIiAlIChob3N0LHBvcnQpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndhaXRwaWQoc2luZ2xldG9uLnByc2Vydi5waWQsIDApCisgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2luZ2xldG9uID0gTm9uZQogCiBkZWYgcGluZyhob3N0LCBwb3J0KToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKaW5kZXggNjQ3MjJmMi4uODg4MTc1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKQEAgLTEsNyArMSw3IEBACiAjCiAjIEJpdEJha2UgVG9hc3RlciBJbXBsZW1lbnRhdGlvbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgICAgICAgIEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE3ICAgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTE3LDkgKzE3LDExIEBACiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBwYXR0ZXJucywgaW5jbHVkZSwgdXJsCitmcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IGluY2x1ZGUsIHVybAogCi11cmxwYXR0ZXJucyA9IHBhdHRlcm5zKCdibGRjb2xsZWN0b3Iudmlld3MnLAoraW1wb3J0IGJsZGNvbGxlY3Rvci52aWV3cworCit1cmxwYXR0ZXJucyA9IFsKICAgICAgICAgIyBsYW5kaW5nIHBvaW50IGZvciBwdXNoaW5nIGEgYml0YmFrZV9ldmVudGxvZy5qc29uIGZpbGUgdG8gdGhpcyB0b2FzdGVyIGluc3RhY2UKLSAgICAgICAgdXJsKHInXmV2ZW50ZmlsZSQnLCAnZXZlbnRmaWxlJywgbmFtZT0nZXZlbnRmaWxlJyksCi0gICAgICAgICkKKyAgICAgICAgdXJsKHInXmV2ZW50ZmlsZSQnLCBibGRjb2xsZWN0b3Iudmlld3MuZXZlbnRmaWxlLCBuYW1lPSdldmVudGZpbGUnKSwKK10KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKaW5kZXggOTEyZjY3Yi4uNTE5NTYwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKQEAgLTM3LDggKzM3LDggQEAKICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiZSk6Ci0gICAgICAgIGltcG9ydCBiYi5zZXJ2ZXIueG1scnBjCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGJiLnNlcnZlci54bWxycGMuX2NyZWF0ZV9zZXJ2ZXIoYmUuYmJhZGRyZXNzLAorICAgICAgICBpbXBvcnQgYmIuc2VydmVyLnhtbHJwY2NsaWVudAorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBiYi5zZXJ2ZXIueG1scnBjY2xpZW50Ll9jcmVhdGVfc2VydmVyKGJlLmJiYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoYmUuYmJwb3J0KSlbMF0KIAogICAgIGRlZiBfcnVuQ29tbWFuZChzZWxmLCBjb21tYW5kKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKaW5kZXggMTIwNzEwMi4uNGMxNzU2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAoraW1wb3J0IHRpbWUKIGZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCiBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCUkxheWVyLCBCUlZhcmlhYmxlLCBCUlRhcmdldCwgQlJCaXRiYWtlCkBAIC01MSwxMiArNTIsMTQgQEAKICAgICAgICAgc2VsZi5wb2t5ZGlybmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5pc2xheWVyc2V0ID0gRmFsc2UKIAotICAgIGRlZiBfc2hlbGxjbWQoc2VsZiwgY29tbWFuZCwgY3dkPU5vbmUsIG5vd2FpdD1GYWxzZSk6CisgICAgZGVmIF9zaGVsbGNtZChzZWxmLCBjb21tYW5kLCBjd2Q9Tm9uZSwgbm93YWl0PUZhbHNlLGVudj1Ob25lKToKICAgICAgICAgaWYgY3dkIGlzIE5vbmU6CiAgICAgICAgICAgICBjd2QgPSBzZWxmLmJlLnNvdXJjZWRpcgorICAgICAgICBpZiBlbnYgaXMgTm9uZToKKyAgICAgICAgICAgIGVudj1vcy5lbnZpcm9uLmNvcHkoKQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygibGJjX3NoZWxsY21tZDogKCVzKSAlcyIgJSAoY3dkLCBjb21tYW5kKSkKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgY3dkID0gY3dkLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBsb2dnZXIuZGVidWcoImxiY19zaGVsbGNtZDogKCVzKSAlcyIgJSAoY3dkLCBjb21tYW5kKSkKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgY3dkID0gY3dkLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCBlbnY9ZW52KQogICAgICAgICBpZiBub3dhaXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgKG91dCxlcnIpID0gcC5jb21tdW5pY2F0ZSgpCkBAIC04NSw2ICs4OCwxMSBAQAogICAgICAgICByZXR1cm4gbG9jYWxfY2hlY2tvdXRfcGF0aAogCiAKKyAgICBkZWYgc2V0Q2xvbmVTdGF0dXMoc2VsZixiaXRiYWtlLHN0YXR1cyx0b3RhbCxjdXJyZW50KToKKyAgICAgICAgYml0YmFrZS5yZXEuYnVpbGQucmVwb3NfY2xvbmVkPWN1cnJlbnQKKyAgICAgICAgYml0YmFrZS5yZXEuYnVpbGQucmVwb3NfdG9fY2xvbmU9dG90YWwKKyAgICAgICAgYml0YmFrZS5yZXEuYnVpbGQuc2F2ZSgpCisKICAgICBkZWYgc2V0TGF5ZXJzKHNlbGYsIGJpdGJha2UsIGxheWVycywgdGFyZ2V0cyk6CiAgICAgICAgICIiIiBhIHdvcmQgb2YgYXR0ZW50aW9uOiBieSBjb252ZW50aW9uLCB0aGUgZmlyc3QgbGF5ZXIgZm9yIGFueSBidWlsZCB3aWxsIGJlIHBva3khICIiIgogCkBAIC05Miw2ICsxMDAsOCBAQAogCiAgICAgICAgIGxheWVybGlzdCA9IFtdCiAgICAgICAgIG5vbmdpdGxheWVybGlzdCA9IFtdCisgICAgICAgIGdpdF9lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAjIChub3RlOiBhZGQgY3VzdG9tIGVudmlyb25tZW50IHNldHRpbmdzIGhlcmUpCiAKICAgICAgICAgIyBzZXQgbGF5ZXJzIGluIHRoZSBsYXllcnNvdXJjZQogCkBAIC0xMzIsNyArMTQyLDcgQEAKICAgICAgICAgY2FjaGVkX2xheWVycyA9IHt9CiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHJlbW90ZXMgaW4gc2VsZi5fc2hlbGxjbWQoImdpdCByZW1vdGUgLXYiLCBzZWxmLmJlLnNvdXJjZWRpcikuc3BsaXQoIlxuIik6CisgICAgICAgICAgICBmb3IgcmVtb3RlcyBpbiBzZWxmLl9zaGVsbGNtZCgiZ2l0IHJlbW90ZSAtdiIsIHNlbGYuYmUuc291cmNlZGlyLGVudj1naXRfZW52KS5zcGxpdCgiXG4iKToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlbW90ZSA9IHJlbW90ZXMuc3BsaXQoIlx0IilbMV0uc3BsaXQoIiAiKVswXQogICAgICAgICAgICAgICAgICAgICBpZiByZW1vdGUgbm90IGluIGNhY2hlZF9sYXllcnM6CkBAIC0xNDcsNyArMTU3LDEzIEBACiAgICAgICAgIGxvZ2dlci5pbmZvKCJVc2luZyBwcmUtY2hlY2tlZCBvdXQgc291cmNlIGZvciBsYXllciAlcyIsIGNhY2hlZF9sYXllcnMpCiAKICAgICAgICAgIyAzLiBjaGVja291dCB0aGUgcmVwb3NpdG9yaWVzCisgICAgICAgIGNsb25lX2NvdW50PTAKKyAgICAgICAgY2xvbmVfdG90YWw9bGVuKGdpdHJlcG9zLmtleXMoKSkKKyAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdTdGFydGVkJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCkKICAgICAgICAgZm9yIGdpdHVybCwgY29tbWl0IGluIGdpdHJlcG9zLmtleXMoKToKKyAgICAgICAgICAgIHNlbGYuc2V0Q2xvbmVTdGF0dXMoYml0YmFrZSwncHJvZ3Jlc3MnLGNsb25lX3RvdGFsLGNsb25lX2NvdW50KQorICAgICAgICAgICAgY2xvbmVfY291bnQgKz0gMQorCiAgICAgICAgICAgICBsb2NhbGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5iZS5zb3VyY2VkaXIsIHNlbGYuZ2V0R2l0Q2xvbmVEaXJlY3RvcnkoZ2l0dXJsLCBjb21taXQpKQogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGdpdHVybCAlczolcyBjaGVja2luZyBvdXQgaW4gY3VycmVudCBkaXJlY3RvcnkgJXMiICUgKGdpdHVybCwgY29tbWl0LCBsb2NhbGRpcm5hbWUpKQogCkBAIC0xNTUsNyArMTcxLDcgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2FsZGlybmFtZSk6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsb2NhbHJlbW90ZXMgPSBzZWxmLl9zaGVsbGNtZCgiZ2l0IHJlbW90ZSAtdiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZGlybmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZ2l0dXJsIGluIGxvY2FscmVtb3RlcyBhbmQgY29tbWl0ICE9ICdIRUFEJzoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJ1aWxkU2V0dXBFeGNlcHRpb24oIkV4aXN0aW5nIGdpdCByZXBvc2l0b3J5IGF0ICVzLCBidXQgd2l0aCBkaWZmZXJlbnQgcmVtb3RlcyAoJyVzJywgZXhwZWN0ZWQgJyVzJykuIFRvYXN0ZXIgd2lsbCBub3QgY29udGludWUgb3V0IG9mIGZlYXIgb2YgZGFtYWdpbmcgc29tZXRoaW5nLiIgJSAobG9jYWxkaXJuYW1lLCAiLCAiLmpvaW4obG9jYWxyZW1vdGVzLnNwbGl0KCJcbiIpKSwgZ2l0dXJsKSkKICAgICAgICAgICAgICAgICBleGNlcHQgU2hlbGxDbWRFeGNlcHRpb246CkBAIC0xNjUsMTggKzE4MSwxOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBnaXR1cmwgaW4gY2FjaGVkX2xheWVyczoKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXIgZ2l0LWNvcHlpbmcgJXMgdG8gJXMiICUgKGNhY2hlZF9sYXllcnNbZ2l0dXJsXSwgbG9jYWxkaXJuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCBjbG9uZSBcIiVzXCIgXCIlc1wiIiAlIChjYWNoZWRfbGF5ZXJzW2dpdHVybF0sIGxvY2FsZGlybmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgcmVtb3RlIHJlbW92ZSBvcmlnaW4iLCBsb2NhbGRpcm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgcmVtb3RlIGFkZCBvcmlnaW4gXCIlc1wiIiAlIGdpdHVybCwgbG9jYWxkaXJuYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgiZ2l0IGNsb25lIFwiJXNcIiBcIiVzXCIiICUgKGNhY2hlZF9sYXllcnNbZ2l0dXJsXSwgbG9jYWxkaXJuYW1lKSxlbnY9Z2l0X2VudikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCByZW1vdGUgcmVtb3ZlIG9yaWdpbiIsIGxvY2FsZGlybmFtZSxlbnY9Z2l0X2VudikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCByZW1vdGUgYWRkIG9yaWdpbiBcIiVzXCIiICUgZ2l0dXJsLCBsb2NhbGRpcm5hbWUsZW52PWdpdF9lbnYpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGNsb25pbmcgJXMgaW4gJXMiICUgKGdpdHVybCwgbG9jYWxkaXJuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoJ2dpdCBjbG9uZSAiJXMiICIlcyInICUgKGdpdHVybCwgbG9jYWxkaXJuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoJ2dpdCBjbG9uZSAiJXMiICIlcyInICUgKGdpdHVybCwgbG9jYWxkaXJuYW1lKSxlbnY9Z2l0X2VudikKIAogICAgICAgICAgICAgIyBicmFuY2ggbWFnaWMgbmFtZSAiSEVBRCIgd2lsbCBpbmhpYml0IGNoZWNrb3V0CiAgICAgICAgICAgICBpZiBjb21taXQgIT0gIkhFQUQiOgogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBjaGVja2luZyBvdXQgY29tbWl0ICVzIHRvICVzICIgJSAoY29tbWl0LCBsb2NhbGRpcm5hbWUpKQogICAgICAgICAgICAgICAgIHJlZiA9IGNvbW1pdCBpZiByZS5tYXRjaCgnXlthLWZBLUYwLTldKyQnLCBjb21taXQpIGVsc2UgJ29yaWdpbi8lcycgJSBjb21taXQKLSAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgnZ2l0IGZldGNoIC0tYWxsICYmIGdpdCByZXNldCAtLWhhcmQgIiVzIicgJSByZWYsIGxvY2FsZGlybmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgnZ2l0IGZldGNoIC0tYWxsICYmIGdpdCByZXNldCAtLWhhcmQgIiVzIicgJSByZWYsIGxvY2FsZGlybmFtZSxlbnY9Z2l0X2VudikKIAogICAgICAgICAgICAgIyB0YWtlIHRoZSBsb2NhbGRpcm5hbWUgYXMgcG9reSBkaXIgaWYgd2UgY2FuIGZpbmQgdGhlIG9lLWluaXQtYnVpbGQtZW52CiAgICAgICAgICAgICBpZiBzZWxmLnBva3lkaXJuYW1lIGlzIE5vbmUgYW5kIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihsb2NhbGRpcm5hbWUsICJvZS1pbml0LWJ1aWxkLWVudiIpKToKQEAgLTE4Niw3ICsyMDIsNyBAQAogICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHdlIGhhdmUgYSB3b3JraW5nIGJpdGJha2UKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYucG9reWRpcm5hbWUsICdiaXRiYWtlJykpOgogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImxvY2FsaG9zdGJlY29udHJvbGxlcjogY2hlY2tpbmcgYml0YmFrZSBpbnRvIHRoZSBwb2t5IGRpcm5hbWUgJXMgIiAlIHNlbGYucG9reWRpcm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgY2xvbmUgLWIgXCIlc1wiIFwiJXNcIiBcIiVzXCIgIiAlIChiaXRiYWtlLmNvbW1pdCwgYml0YmFrZS5naXR1cmwsIG9zLnBhdGguam9pbihzZWxmLnBva3lkaXJuYW1lLCAnYml0YmFrZScpKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCBjbG9uZSAtYiBcIiVzXCIgXCIlc1wiIFwiJXNcIiAiICUgKGJpdGJha2UuY29tbWl0LCBiaXRiYWtlLmdpdHVybCwgb3MucGF0aC5qb2luKHNlbGYucG9reWRpcm5hbWUsICdiaXRiYWtlJykpLGVudj1naXRfZW52KQogCiAgICAgICAgICAgICAjIHZlcmlmeSBvdXIgcmVwb3NpdG9yaWVzCiAgICAgICAgICAgICBmb3IgbmFtZSwgZGlycGF0aCBpbiBnaXRyZXBvc1soZ2l0dXJsLCBjb21taXQpXToKQEAgLTE5OCw2ICsyMTQsNyBAQAogICAgICAgICAgICAgICAgIGlmIG5hbWUgIT0gImJpdGJha2UiOgogICAgICAgICAgICAgICAgICAgICBsYXllcmxpc3QuYXBwZW5kKGxvY2FsZGlycGF0aC5yc3RyaXAoIi8iKSkKIAorICAgICAgICBzZWxmLnNldENsb25lU3RhdHVzKGJpdGJha2UsJ2NvbXBsZXRlJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCkKICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGN1cnJlbnQgbGF5ZXIgbGlzdCAlcyAiICUgcGZvcm1hdChsYXllcmxpc3QpKQogCiAgICAgICAgIGlmIHNlbGYucG9reWRpcm5hbWUgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuYmUuc291cmNlZGlyLCAib2UtaW5pdC1idWlsZC1lbnYiKSk6CkBAIC0zMTksMTYgKzMzNiwzMiBAQAogICAgICAgICAgICAgICAgIGNvbmYud3JpdGUoJyVzPSIlcyJcbicgJSAodmFyLm5hbWUsIHZhci52YWx1ZSkpCiAgICAgICAgICAgICBjb25mLndyaXRlKCdJTkhFUklUKz0idG9hc3RlciBidWlsZGhpc3RvcnkiJykKIAorICAgICAgICAjIGNsZWFuIHRoZSBUb2FzdGVyIHRvIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgIGVudl9jbGVhbiA9ICd1bnNldCBCQlBBVEg7JyAjIGNsZWFuIEJCUEFUSCBmb3IgPD0gWVAtMi40LjAKKwogICAgICAgICAjIHJ1biBiaXRiYWtlIHNlcnZlciBmcm9tIHRoZSBjbG9uZQogICAgICAgICBiaXRiYWtlID0gb3MucGF0aC5qb2luKHNlbGYucG9reWRpcm5hbWUsICdiaXRiYWtlJywgJ2JpbicsICdiaXRiYWtlJykKICAgICAgICAgdG9hc3RlcmxheWVycyA9IG9zLnBhdGguam9pbihidWlsZGRpciwiY29uZi90b2FzdGVyLWJibGF5ZXJzLmNvbmYiKQotICAgICAgICBzZWxmLl9zaGVsbGNtZCgnYmFzaCAtYyBcInNvdXJjZSAlcyAlczsgQklUQkFLRV9VST0ia25vdHR5IiAlcyAtLXJlYWQgJXMgLS1yZWFkICVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLW9ubHkgLXQgeG1scnBjIC1CIDAuMC4wLjA6MFwiJyAlIChvZV9pbml0LAorICAgICAgICBzZWxmLl9zaGVsbGNtZCgnJXMgYmFzaCAtYyBcInNvdXJjZSAlcyAlczsgQklUQkFLRV9VST0ia25vdHR5IiAlcyAtLXJlYWQgJXMgLS1yZWFkICVzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLW9ubHkgLUIgMC4wLjAuMDowXCInICUgKGVudl9jbGVhbiwgb2VfaW5pdCwKICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXIsIGJpdGJha2UsIGNvbmZwYXRoLCB0b2FzdGVybGF5ZXJzKSwgc2VsZi5iZS5zb3VyY2VkaXIpCiAKICAgICAgICAgIyByZWFkIHBvcnQgbnVtYmVyIGZyb20gYml0YmFrZS5sb2NrCi0gICAgICAgIHNlbGYuYmUuYmJwb3J0ID0gIiIKKyAgICAgICAgc2VsZi5iZS5iYnBvcnQgPSAtMQogICAgICAgICBiYmxvY2sgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdiaXRiYWtlLmxvY2snKQorICAgICAgICAjIGFsbG93IDEwIHNlY29uZHMgZm9yIGJiIGxvY2sgZmlsZSB0byBhcHBlYXIgYnV0IGFsc28gYmUgcG9wdWxhdGVkCisgICAgICAgIGZvciBsb2NrX2NoZWNrIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhiYmxvY2spOgorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiB3YWl0aW5nIGZvciBiYmxvY2sgZmlsZSB0byBhcHBlYXIiKQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgMTAgPCBvcy5zdGF0KGJibG9jaykuc3Rfc2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IHdhaXRpbmcgZm9yIGJibG9jayBjb250ZW50IHRvIGFwcGVhciIpCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJDYW5ub3QgZmluZCBiaXRiYWtlIHNlcnZlciBsb2NrIGZpbGUgJyVzJy4gQWJvcnRpbmcuIiAlIGJibG9jaykKKwogICAgICAgICB3aXRoIG9wZW4oYmJsb2NrKSBhcyBmcGxvY2s6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcGxvY2s6CiAgICAgICAgICAgICAgICAgaWYgIjoiIGluIGxpbmU6CkBAIC0zMzYsNyArMzY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGJpdGJha2UgcG9ydCAlcyIsIHNlbGYuYmUuYmJwb3J0KQogICAgICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIGlmIG5vdCBzZWxmLmJlLmJicG9ydDoKKyAgICAgICAgaWYgLTEgPT0gc2VsZi5iZS5iYnBvcnQ6CiAgICAgICAgICAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGNhbid0IHJlYWQgYml0YmFrZSBwb3J0IGZyb20gJXMiICUgYmJsb2NrKQogCiAgICAgICAgIHNlbGYuYmUuYmJhZGRyZXNzID0gImxvY2FsaG9zdCIKQEAgLTM1NywxMCArMzkwLDExIEBACiAgICAgICAgIGxvZyA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ3RvYXN0ZXJfdWkubG9nJykKICAgICAgICAgbG9jYWxfYml0YmFrZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MuZ2V0ZW52KCdCQkJBU0VESVInKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UnKQotICAgICAgICBzZWxmLl9zaGVsbGNtZChbJ2Jhc2ggLWMgXCIoVE9BU1RFUl9CUkJFPSIlcyIgQkJTRVJWRVI9IjAuMC4wLjA6LTEiICcKLSAgICAgICAgICAgICAgICAgICAgICAgICclcyAlcyAtdSB0b2FzdGVydWkgLS10b2tlbj0iIiA+PiVzIDI+JjE7JwotICAgICAgICAgICAgICAgICAgICAgICAgJ0JJVEJBS0VfVUk9Imtub3R0eSIgQkJTRVJWRVI9MC4wLjAuMDotMSAlcyAtbSkmXCInIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICUgKGJyYmUsIGxvY2FsX2JpdGJha2UsIGJidGFyZ2V0cywgbG9nLCBiaXRiYWtlKV0sCisgICAgICAgIHNlbGYuX3NoZWxsY21kKFsnJXMgYmFzaCAtYyBcIihUT0FTVEVSX0JSQkU9IiVzIiBCQlNFUlZFUj0iMC4wLjAuMDolcyIgJworICAgICAgICAgICAgICAgICAgICAgICAgJyVzICVzIC11IHRvYXN0ZXJ1aSAgLS1yZWFkICVzIC0tcmVhZCAlcyAtLXRva2VuPSIiID4+JXMgMj4mMTsnCisgICAgICAgICAgICAgICAgICAgICAgICAnQklUQkFLRV9VST0ia25vdHR5IiBCQlNFUlZFUj0wLjAuMC4wOiVzICVzIC1tKSZcIicgXAorICAgICAgICAgICAgICAgICAgICAgICAgJSAoZW52X2NsZWFuLCBicmJlLCBzZWxmLmJlLmJicG9ydCwgbG9jYWxfYml0YmFrZSwgYmJ0YXJnZXRzLCBjb25mcGF0aCwgdG9hc3RlcmxheWVycywgbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5iZS5iYnBvcnQsIGJpdGJha2UsKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGRpciwgbm93YWl0PVRydWUpCiAKICAgICAgICAgbG9nZ2VyLmRlYnVnKCdsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IEJ1aWxkIGxhdW5jaGVkLCBleGl0aW5nLiAnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CmluZGV4IDJlZDk5NGYuLjU4MjExNGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IE5vQXJnc0NvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKIGZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgogCiBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQgaW1wb3J0IGNhbGxfY29tbWFuZApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBhdGgpCiAKIAotY2xhc3MgQ29tbWFuZChOb0FyZ3NDb21tYW5kKToKK2NsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgogICAgIGFyZ3MgPSAiIgogICAgIGhlbHAgPSAiVmVyaWZpZXMgdGhhdCB0aGUgY29uZmlndXJlZCBzZXR0aW5ncyBhcmUgdmFsaWQgYW5kIHVzYWJsZSwgb3IgcHJvbXB0cyB0aGUgdXNlciB0byBmaXggdGhlIHNldHRpbmdzLiIKIApAQCAtNzUsNyArNzUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAic2V0dGluZ3MiKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfY29uZiA9IG9zLmVudmlyb24uZ2V0KCJURU1QTEFURUNPTkYiLCAiIikKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgInBva3kiIGluIHRlbXBsYXRlX2NvbmY6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmZpbHRlcihuYW1lPSdDVVNUT01fWE1MX09OTFknKS5jb3VudCgpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgdXNlIHRoZSBjdXN0b20gc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmICJwb2t5IiBpbiB0ZW1wbGF0ZV9jb25mOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJMb2FkaW5nIHBva3kgY29uZmlndXJhdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9jb21tYW5kKCJsb2FkZGF0YSIsICJwb2t5IikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTIsNyArMTU1LDcgQEAKIAogCiAKLSAgICBkZWYgaGFuZGxlX25vYXJncyhzZWxmLCAqKm9wdGlvbnMpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgKipvcHRpb25zKToKICAgICAgICAgcmV0dmFsID0gMAogICAgICAgICByZXR2YWwgKz0gc2VsZi5fdmVyaWZ5X2J1aWxkX2Vudmlyb25tZW50KCkKICAgICAgICAgcmV0dmFsICs9IHNlbGYuX3ZlcmlmeV9kZWZhdWx0X3NldHRpbmdzKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CmluZGV4IGRmMTFmOWQuLjc5MWU1M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL3J1bmJ1aWxkcy5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBOb0FyZ3NDb21tYW5kCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKIGZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCiAKQEAgLTE2LDcgKzE2LDcgQEAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0b2FzdGVyIikKIAogCi1jbGFzcyBDb21tYW5kKE5vQXJnc0NvbW1hbmQpOgorY2xhc3MgQ29tbWFuZChCYXNlQ29tbWFuZCk6CiAgICAgYXJncyA9ICIiCiAgICAgaGVscCA9ICJTY2hlZHVsZXMgYW5kIGV4ZWN1dGVzIGJ1aWxkIHJlcXVlc3RzIGFzIHBvc3NpYmxlLiAiXAogICAgICAgICAgICAiRG9lcyBub3QgcmV0dXJuIChpbnRlcnJ1cHQgd2l0aCBDdHJsLUMpIgpAQCAtNzksNiArNzksMTQgQEAKICAgICAgICAgICAgIGJyLnNhdmUoKQogICAgICAgICAgICAgYmVjLmJlLmxvY2sgPSBCdWlsZEVudmlyb25tZW50LkxPQ0tfRlJFRQogICAgICAgICAgICAgYmVjLmJlLnNhdmUoKQorICAgICAgICAgICAgIyBDYW5jZWwgdGhlIHBlbmRpbmcgYnVpbGQgYW5kIHJlcG9ydCB0aGUgZXhjZXB0aW9uIHRvIHRoZSBVSQorICAgICAgICAgICAgbG9nX29iamVjdCA9IExvZ01lc3NhZ2Uub2JqZWN0cy5jcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgPSBici5idWlsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IExvZ01lc3NhZ2UuRVhDRVBUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJtc2cpCisgICAgICAgICAgICBsb2dfb2JqZWN0LnNhdmUoKQorICAgICAgICAgICAgYnIuYnVpbGQub3V0Y29tZSA9IEJ1aWxkLkZBSUxFRAorICAgICAgICAgICAgYnIuYnVpbGQuc2F2ZSgpCiAKICAgICBkZWYgYXJjaGl2ZShzZWxmKToKICAgICAgICAgZm9yIGJyIGluIEJ1aWxkUmVxdWVzdC5vYmplY3RzLmZpbHRlcihzdGF0ZT1CdWlsZFJlcXVlc3QuUkVRX0FSQ0hJVkUpOgpAQCAtMTY4LDcgKzE3Niw3IEBACiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJydW5idWlsZHM6IHNjaGVkdWxlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCiAKLSAgICBkZWYgaGFuZGxlX25vYXJncyhzZWxmLCAqKm9wdGlvbnMpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgKipvcHRpb25zKToKICAgICAgICAgcGlkZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIsICIuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLnJ1bmJ1aWxkcy5waWQiKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvY3VzdG9tX3RvYXN0ZXJfYXBwZW5kLnNoX3NhbXBsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9jdXN0b21fdG9hc3Rlcl9hcHBlbmQuc2hfc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhjNGUxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvY3VzdG9tX3RvYXN0ZXJfYXBwZW5kLnNoX3NhbXBsZQpAQCAtMCwwICsxLDQ5IEBACisjIS9iaW4vYmFzaAorCisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3JwLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyMgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCisjIFRoaXMgaXMgc2FtcGxlIHNvZnR3YXJlLiBSZW5hbWUgaXQgdG8gJ2N1c3RvbV90b2FzdGVyX2FwcGVuZC5zaCcgYW5kCisjIGVuYWJsZSB0aGUgcmVzcGVjdGl2ZSBjdXN0b20gc2VjdGlvbnMuCisKK3ZlcmJvc2U9MAoraWYgWyAkdmVyYm9zZSAtbmUgMCBdIDsgdGhlbgorICAgIGVjaG8gImN1c3RvbV90b2FzdGVyX2FwcGVuZC5zaDokKiIKK2ZpCisKK2lmIFsgInRvYXN0ZXJfcHJlcGVuZCIgPSAiJDEiIF0gOyB0aGVuCisgICAgZWNobyAiQWRkIGN1c3RvbSBhY3Rpb25zIGhlcmUgd2hlbiBUb2FzdGVyIHNjcmlwdCBpcyBzdGFydGVkIgorZmkKKworaWYgWyAid2ViX3N0YXJ0X3Bvc3RwZW5kIiA9ICIkMSIgXSA7IHRoZW4KKyAgICBlY2hvICJBZGQgY3VzdG9tIGFjdGlvbnMgaGVyZSBhZnRlciBUb2FzdGVyIHdlYiBzZXJ2aWNlIGlzIHN0YXJ0ZWQiCitmaQorCitpZiBbICJ3ZWJfc3RvcF9wb3N0cGVuZCIgPSAiJDEiIF0gOyB0aGVuCisgICAgZWNobyAiQWRkIGN1c3RvbSBhY3Rpb25zIGhlcmUgYWZ0ZXIgVG9hc3RlciB3ZWIgc2VydmljZSBpcyBzdG9wcGVkIgorZmkKKworaWYgWyAibm93ZWJfc3RhcnRfcG9zdHBlbmQiID0gIiQxIiBdIDsgdGhlbgorICAgIGVjaG8gIkFkZCBjdXN0b20gYWN0aW9ucyBoZXJlIGFmdGVyIFRvYXN0ZXIgKG5vIHdlYikgc2VydmljZSBpcyBzdGFydGVkIgorZmkKKworaWYgWyAibm93ZWJfc3RvcF9wb3N0cGVuZCIgPSAiJDEiIF0gOyB0aGVuCisgICAgZWNobyAiQWRkIGN1c3RvbSBhY3Rpb25zIGhlcmUgYWZ0ZXIgVG9hc3RlciAobm8gd2ViKSBzZXJ2aWNlIGlzIHN0b3BwZWQiCitmaQorCitpZiBbICJ0b2FzdGVyX3Bvc3RwZW5kIiA9ICIkMSIgXSA7IHRoZW4KKyAgICBlY2hvICJBZGQgY3VzdG9tIGFjdGlvbnMgaGVyZSBhZnRlciBUb2FzdGVyIHNjcmlwdCBpcyBkb25lIgorZmkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCmluZGV4IDY2YzM1OTUuLjAwNzIwYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKQEAgLTgsOSArOCw5IEBACiAKICAgPCEtLSBCaXRiYWtlIHZlcnNpb25zIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1ldGFkYXRhIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnB5cm88L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS4zNDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj4xLjM2PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPkhFQUQ8L2ZpZWxkPgpAQCAtMjUsMTEgKzI1LDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cHlybzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBQeXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBSb2NrbzwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5weXJvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cHlyb1wiJmd0O09wZW5FbWJlZGRlZCBQeXJvJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD1yb2Nrb1wiJmd0O09wZW5FbWJlZGRlZCBSb2NrbyZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAppbmRleCA3ODI3YWFjLi4yZjM5ZDc3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnB5cm88L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+cm9ja288L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMiI+CkBAIC0yOSwxMSArMjksMTEgQEAKIAogICA8IS0tIFJlbGVhc2VzIGF2YWlsYWJsZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5weXJvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjMgIlB5cm8iPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMi40ICJSb2NrbyI8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5iaXRiYWtldmVyc2lvbiIgbmFtZT0iYml0YmFrZV92ZXJzaW9uIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+cHlybzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cHlybyImZ3Q7WW9jdG8gUHJvamVjdCBQeXJvIGJyYW5jaCZsdDsvYSZndDsuPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXJvY2tvIiZndDtZb2N0byBQcm9qZWN0IFJvY2tvIGJyYW5jaCZsdDsvYSZndDsuPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bG9jYWw8L2ZpZWxkPgpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MTwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiI+CkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnB5cm88L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+cm9ja288L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEtcG9reTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjUiPgpAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjgiPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CmluZGV4IDQ4MjkwOGQuLmVmYzZiM2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKQEAgLTQsNyArNCw3IEBACiAjCiAjIEJpdEJha2UgVG9hc3RlciBJbXBsZW1lbnRhdGlvbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTYgICAgICAgIEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxNi0yMDE3ICAgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTE5LDEwICsxOSwxMiBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgTm9BcmdzQ29tbWFuZAorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJTb3VyY2UsIExheWVyLCBSZWxlYXNlLCBMYXllcl9WZXJzaW9uCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyVmVyc2lvbkRlcGVuZGVuY3ksIE1hY2hpbmUsIFJlY2lwZQorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBEaXN0cm8KK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgVG9hc3RlclNldHRpbmcKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC01Niw3ICs1OCw3IEBACiAgICAgICAgIHNlbGYuc2lnbmFsID0gRmFsc2UKIAogCi1jbGFzcyBDb21tYW5kKE5vQXJnc0NvbW1hbmQpOgorY2xhc3MgQ29tbWFuZChCYXNlQ29tbWFuZCk6CiAgICAgYXJncyA9ICIiCiAgICAgaGVscCA9ICJVcGRhdGVzIGxvY2FsbHkgY2FjaGVkIGluZm9ybWF0aW9uIGZyb20gYSBsYXllcmluZGV4IHNlcnZlciIKIApAQCAtODAsNiArODIsOCBAQAogICAgICAgICBvcy5zeXN0ZW0oJ3NldHRlcm0gLWN1cnNvciBvZmYnKQogCiAgICAgICAgIHNlbGYuYXBpdXJsID0gREVGQVVMVF9MQVlFUklOREVYX1NFUlZFUgorICAgICAgICBpZiBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmZpbHRlcihuYW1lPSdDVVNUT01fTEFZRVJJTkRFWF9TRVJWRVInKS5jb3VudCgpID09IDE6CisgICAgICAgICAgICBzZWxmLmFwaXVybCA9IFRvYXN0ZXJTZXR0aW5nLm9iamVjdHMuZ2V0KG5hbWUgPSAnQ1VTVE9NX0xBWUVSSU5ERVhfU0VSVkVSJykudmFsdWUKIAogICAgICAgICBhc3NlcnQgc2VsZi5hcGl1cmwgaXMgbm90IE5vbmUKICAgICAgICAgdHJ5OgpAQCAtOTEsNyArOTUsOSBAQAogCiAgICAgICAgIHByb3h5X3NldHRpbmdzID0gb3MuZW52aXJvbi5nZXQoImh0dHBfcHJveHkiLCBOb25lKQogCi0gICAgICAgIGRlZiBfZ2V0X2pzb25fcmVzcG9uc2UoYXBpdXJsPURFRkFVTFRfTEFZRVJJTkRFWF9TRVJWRVIpOgorICAgICAgICBkZWYgX2dldF9qc29uX3Jlc3BvbnNlKGFwaXVybD1Ob25lKToKKyAgICAgICAgICAgIGlmIE5vbmUgPT0gYXBpdXJsOgorICAgICAgICAgICAgICAgIGFwaXVybD1zZWxmLmFwaXVybAogICAgICAgICAgICAgaHR0cF9wcm9ncmVzcyA9IFNwaW5uZXIoKQogICAgICAgICAgICAgaHR0cF9wcm9ncmVzcy5zdGFydCgpCiAKQEAgLTI1MSw2ICsyNTcsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzX29uPWx2ZCkKICAgICAgICAgICAgIHNlbGYubWluaV9wcm9ncmVzcygiTGF5ZXIgdmVyc2lvbiBkZXBlbmRlbmNpZXMiLCBpLCB0b3RhbCkKIAorICAgICAgICAjIHVwZGF0ZSBEaXN0cm9zCisgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBkaXN0cm8gaW5mb3JtYXRpb24iKQorICAgICAgICBkaXN0cm9zX2luZm8gPSBfZ2V0X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBhcGlsaW5rc1snZGlzdHJvcyddICsgIj9maWx0ZXI9bGF5ZXJicmFuY2hfX2JyYW5jaF9fbmFtZTolcyIgJQorICAgICAgICAgICAgIk9SIi5qb2luKHdoaXRlbGlzdF9icmFuY2hfbmFtZXMpKQorCisgICAgICAgIHRvdGFsID0gbGVuKGRpc3Ryb3NfaW5mbykKKyAgICAgICAgZm9yIGksIGRpIGluIGVudW1lcmF0ZShkaXN0cm9zX2luZm8pOgorICAgICAgICAgICAgZGlzdHJvLCBjcmVhdGVkID0gRGlzdHJvLm9iamVjdHMuZ2V0X29yX2NyZWF0ZSgKKyAgICAgICAgICAgICAgICBuYW1lPWRpWyduYW1lJ10sCisgICAgICAgICAgICAgICAgbGF5ZXJfdmVyc2lvbj1MYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0KAorICAgICAgICAgICAgICAgICAgICBwaz1saV9sYXllcl9icmFuY2hfaWRfdG9fdG9hc3Rlcl9sdl9pZFtkaVsnbGF5ZXJicmFuY2gnXV0pKQorICAgICAgICAgICAgZGlzdHJvLnVwX2RhdGUgPSBkaVsndXBkYXRlZCddCisgICAgICAgICAgICBkaXN0cm8ubmFtZSA9IGRpWyduYW1lJ10KKyAgICAgICAgICAgIGRpc3Ryby5kZXNjcmlwdGlvbiA9IGRpWydkZXNjcmlwdGlvbiddCisgICAgICAgICAgICBkaXN0cm8uc2F2ZSgpCisgICAgICAgICAgICBzZWxmLm1pbmlfcHJvZ3Jlc3MoImRpc3Ryb3MiLCBpLCB0b3RhbCkKKwogICAgICAgICAjIHVwZGF0ZSBtYWNoaW5lcwogICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgbWFjaGluZSBpbmZvcm1hdGlvbiIpCiAgICAgICAgIG1hY2hpbmVzX2luZm8gPSBfZ2V0X2pzb25fcmVzcG9uc2UoCkBAIC0zMDksNSArMzMzLDUgQEAKIAogICAgICAgICBvcy5zeXN0ZW0oJ3NldHRlcm0gLWN1cnNvciBvbicpCiAKLSAgICBkZWYgaGFuZGxlX25vYXJncyhzZWxmLCAqKm9wdGlvbnMpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgKipvcHRpb25zKToKICAgICAgICAgc2VsZi51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxNl9jbG9uZV9wcm9ncmVzcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTZfY2xvbmVfcHJvZ3Jlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0MDIzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTZfY2xvbmVfcHJvZ3Jlc3MucHkKQEAgLTAsMCArMSwyNCBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworCitmcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCisKK2NsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CisKKyAgICBkZXBlbmRlbmNpZXMgPSBbCisgICAgICAgICgnb3JtJywgJzAwMTVfbGF5ZXJfbG9jYWxfc291cmNlX2RpcicpLAorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCisgICAgICAgICAgICBuYW1lPSdyZXBvc19jbG9uZWQnLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpLAorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAorICAgICAgICAgICAgbmFtZT0ncmVwb3NfdG9fY2xvbmUnLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpLCAjIChkZWZhdWx0IG9mZikKKyAgICAgICAgKSwKKyAgICBdCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjNTkwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5CkBAIC0wLDAgKzEsMjUgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworCitjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgorCisgICAgZGVwZW5kZW5jaWVzID0gWworICAgICAgICAoJ29ybScsICcwMDE2X2Nsb25lX3Byb2dyZXNzJyksCisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IFsKKyAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKKyAgICAgICAgICAgIG5hbWU9J0Rpc3RybycsCisgICAgICAgICAgICBmaWVsZHM9WworICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCisgICAgICAgICAgICAgICAgKCd1cF9pZCcsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ3VwX2RhdGUnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICgnbmFtZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKKyAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICksCisgICAgXQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQppbmRleCBhNDlmOWE0Li4zYTdkZmY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKQEAgLTMyMSw2ICszMjEsMjIgQEAKIAogICAgICAgICByZXR1cm4gcXVlcnlzZXQKIAorICAgIGRlZiBnZXRfYXZhaWxhYmxlX2Rpc3Ryb3Moc2VsZik6CisgICAgICAgICIiIiBSZXR1cm5zIFF1ZXJ5U2V0IG9mIGFsbCBEaXN0cm9zIHdoaWNoIGFyZSBwcm92aWRlZCBieSB0aGUKKyAgICAgICAgTGF5ZXJzIGN1cnJlbnRseSBhZGRlZCB0byB0aGUgUHJvamVjdCAiIiIKKyAgICAgICAgcXVlcnlzZXQgPSBEaXN0cm8ub2JqZWN0cy5maWx0ZXIoCisgICAgICAgICAgICBsYXllcl92ZXJzaW9uX19pbj1zZWxmLmdldF9wcm9qZWN0X2xheWVyX3ZlcnNpb25zKCkpCisKKyAgICAgICAgcmV0dXJuIHF1ZXJ5c2V0CisKKyAgICBkZWYgZ2V0X2FsbF9jb21wYXRpYmxlX2Rpc3Ryb3Moc2VsZik6CisgICAgICAgICIiIiBSZXR1cm5zIFF1ZXJ5U2V0IG9mIGFsbCB0aGUgY29tcGF0aWJsZSBXaW5kIFJpdmVyIGRpc3Ryb3MgYXZhaWxhYmxlIHRvIHRoZQorICAgICAgICBwcm9qZWN0IGluY2x1ZGluZyBvbmVzIGZyb20gTGF5ZXJzIG5vdCBjdXJyZW50bHkgYWRkZWQgIiIiCisgICAgICAgIHF1ZXJ5c2V0ID0gRGlzdHJvLm9iamVjdHMuZmlsdGVyKAorICAgICAgICAgICAgbGF5ZXJfdmVyc2lvbl9faW49c2VsZi5nZXRfYWxsX2NvbXBhdGlibGVfbGF5ZXJfdmVyc2lvbnMoKSkKKworICAgICAgICByZXR1cm4gcXVlcnlzZXQKKwogICAgIGRlZiBnZXRfYXZhaWxhYmxlX3JlY2lwZXMoc2VsZik6CiAgICAgICAgICIiIiBSZXR1cm5zIFF1ZXJ5U2V0IG9mIGFsbCB0aGUgcmVjaXBlcyB0aGF0IGFyZSBwcm92aWRlZCBieSBsYXllcnMKICAgICAgICAgYWRkZWQgdG8gdGhpcyBwcm9qZWN0ICIiIgpAQCAtNDM1LDcgKzQ1MSwxMyBAQAogICAgIHJlY2lwZXNfdG9fcGFyc2UgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSkKIAogICAgICMgbnVtYmVyIG9mIHJlY2lwZXMgcGFyc2VkIHNvIGZhciBmb3IgdGhpcyBidWlsZAotICAgIHJlY2lwZXNfcGFyc2VkID0gbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTApCisgICAgcmVjaXBlc19wYXJzZWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSkKKworICAgICMgbnVtYmVyIG9mIHJlcG9zIHRvIGNsb25lIGZvciB0aGlzIGJ1aWxkCisgICAgcmVwb3NfdG9fY2xvbmUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSkKKworICAgICMgbnVtYmVyIG9mIHJlcG9zIGNsb25lZCBzbyBmYXIgZm9yIHRoaXMgYnVpbGQgKGRlZmF1bHQgb2ZmKQorICAgIHJlcG9zX2Nsb25lZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0xKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBnZXRfcmVjZW50KHByb2plY3Q9Tm9uZSk6CkBAIC00ODYsNyArNTA4LDcgQEAKICAgICAgICAgdGYgPSBUYXNrLm9iamVjdHMuZmlsdGVyKGJ1aWxkID0gc2VsZikKICAgICAgICAgdGZjID0gdGYuY291bnQoKQogICAgICAgICBpZiB0ZmMgPiAwOgotICAgICAgICAgICAgY29tcGxldGVwZXIgPSB0Zi5leGNsdWRlKG9yZGVyX19pc251bGw9VHJ1ZSkuY291bnQoKSoxMDAgLy8gdGZjCisgICAgICAgICAgICBjb21wbGV0ZXBlciA9IHRmLmV4Y2x1ZGUob3V0Y29tZT1UYXNrLk9VVENPTUVfTkEpLmNvdW50KCkqMTAwIC8vIHRmYwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tcGxldGVwZXIgPSAwCiAgICAgICAgIHJldHVybiBjb21wbGV0ZXBlcgpAQCAtNjY3LDYgKzY4OSwxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgaXNfY2xvbmluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRydWUgaWYgdGhlIGJ1aWxkIGlzIHN0aWxsIGNsb25pbmcgcmVwb3MKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLm91dGNvbWUgPT0gQnVpbGQuSU5fUFJPR1JFU1MgYW5kIFwKKyAgICAgICAgICAgIHNlbGYucmVwb3NfY2xvbmVkIDwgc2VsZi5yZXBvc190b19jbG9uZQorCiAgICAgZGVmIGlzX3BhcnNpbmcoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBUcnVlIGlmIHRoZSBidWlsZCBpcyBzdGlsbCBwYXJzaW5nIHJlY2lwZXMKQEAgLTY4MCwxMCArNzA5LDExIEBACiAgICAgICAgIHRhc2tzLgogCiAgICAgICAgIE5vdGUgdGhhdCB0aGUgbWVjaGFuaXNtIGZvciB0ZXN0aW5nIHdoZXRoZXIgYSBUYXNrIGlzICJkb25lIiBpcyB3aGV0aGVyCi0gICAgICAgIGl0cyBvcmRlciBmaWVsZCBpcyBzZXQsIGFzIHBlciB0aGUgY29tcGxldGVwZXIoKSBtZXRob2QuCisgICAgICAgIGl0cyBvdXRjb21lIGZpZWxkIGlzIHNldCwgYXMgcGVyIHRoZSBjb21wbGV0ZXBlcigpIG1ldGhvZC4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLm91dGNvbWUgPT0gQnVpbGQuSU5fUFJPR1JFU1MgYW5kIFwKLSAgICAgICAgICAgIHNlbGYudGFza19idWlsZC5maWx0ZXIob3JkZXJfX2lzbnVsbD1GYWxzZSkuY291bnQoKSA9PSAwCisgICAgICAgICAgICBzZWxmLnRhc2tfYnVpbGQuZXhjbHVkZShvdXRjb21lPVRhc2suT1VUQ09NRV9OQSkuY291bnQoKSA9PSAwCisKIAogICAgIGRlZiBnZXRfc3RhdGUoc2VsZik6CiAgICAgICAgICIiIgpAQCAtNjk4LDYgKzcyOCw4IEBACiAgICAgICAgICAgICByZXR1cm4gJ0NhbmNlbGxpbmcnOwogICAgICAgICBlbGlmIHNlbGYuaXNfcXVldWVkKCk6CiAgICAgICAgICAgICByZXR1cm4gJ1F1ZXVlZCcKKyAgICAgICAgZWxpZiBzZWxmLmlzX2Nsb25pbmcoKToKKyAgICAgICAgICAgIHJldHVybiAnQ2xvbmluZycKICAgICAgICAgZWxpZiBzZWxmLmlzX3BhcnNpbmcoKToKICAgICAgICAgICAgIHJldHVybiAnUGFyc2luZycKICAgICAgICAgZWxpZiBzZWxmLmlzX3N0YXJ0aW5nKCk6CkBAIC0xNDg1LDEyICsxNTE3LDEyIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVfdXJsX3BhdGgoc2VsZi5sYXllci52Y3Nfd2ViX3RyZWVfYmFzZV91cmwsICcnKQogCiAgICAgZGVmIGdldF92Y3NfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNvbW1pdCBpcyBub3QgTm9uZSBhbmQgbGVuKHNlbGYuY29tbWl0KSA+IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21taXQKICAgICAgICAgaWYgc2VsZi5icmFuY2ggaXMgbm90IE5vbmUgYW5kIGxlbihzZWxmLmJyYW5jaCkgPiAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnJhbmNoCiAgICAgICAgIGlmIHNlbGYucmVsZWFzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlbGVhc2UubmFtZQotICAgICAgICBpZiBzZWxmLmNvbW1pdCBpcyBub3QgTm9uZSBhbmQgbGVuKHNlbGYuY29tbWl0KSA+IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb21taXQKICAgICAgICAgcmV0dXJuICdOL0EnCiAKICAgICBkZWYgZ2V0X2RldGFpbHNwYWdlX3VybChzZWxmLCBwcm9qZWN0X2lkPU5vbmUpOgpAQCAtMTYyNiw3ICsxNjU4LDcgQEAKIAogICAgIGRlZiBnZXRfYmFzZV9yZWNpcGVfZmlsZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSBiYXNlIHJlY2lwZSBmaWxlIHBhdGggaWYgaXQgZXhpc3RzIG9uIHRoZSBmaWxlIHN5c3RlbSIiIgotICAgICAgICBwYXRoX3NjaGVtYV9vbmUgPSAiJXMvJXMiICUgKHNlbGYuYmFzZV9yZWNpcGUubGF5ZXJfdmVyc2lvbi5kaXJwYXRoLAorICAgICAgICBwYXRoX3NjaGVtYV9vbmUgPSAiJXMvJXMiICUgKHNlbGYuYmFzZV9yZWNpcGUubGF5ZXJfdmVyc2lvbi5sb2NhbF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFzZV9yZWNpcGUuZmlsZV9wYXRoKQogCiAgICAgICAgIHBhdGhfc2NoZW1hX3R3byA9IHNlbGYuYmFzZV9yZWNpcGUuZmlsZV9wYXRoCkBAIC0xNzgwLDYgKzE4MTIsMjEgQEAKICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgIGxvZ2dlci5pbmZvKCJTdG9wcGluZyBleGlzdGluZyBydW5idWlsZHM6IG5vIGN1cnJlbnQgcHJvY2VzcyBmb3VuZCIpCiAKK2NsYXNzIERpc3Rybyhtb2RlbHMuTW9kZWwpOgorICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsibmFtZSIsICJkZXNjcmlwdGlvbiIsICJsYXllcl92ZXJzaW9uX19sYXllcl9fbmFtZSJdCisgICAgdXBfZGF0ZSA9IG1vZGVscy5EYXRlVGltZUZpZWxkKG51bGwgPSBUcnVlLCBkZWZhdWx0ID0gTm9uZSkKKworICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicpCisgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCisgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQorCisgICAgZGVmIGdldF92Y3NfZGlzdHJvX2ZpbGVfbGlua191cmwoc2VsZik6CisgICAgICAgIHBhdGggPSBzZWxmLm5hbWUrJy5jb25mJworICAgICAgICByZXR1cm4gc2VsZi5sYXllcl92ZXJzaW9uLmdldF92Y3NfZmlsZV9saW5rX3VybChwYXRoKQorCisgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkRpc3RybyAiICsgc2VsZi5uYW1lICsgIigiICsgc2VsZi5kZXNjcmlwdGlvbiArICIpIgorCiBkamFuZ28uZGIubW9kZWxzLnNpZ25hbHMucG9zdF9zYXZlLmNvbm5lY3QoaW52YWxpZGF0ZV9jYWNoZSkKIGRqYW5nby5kYi5tb2RlbHMuc2lnbmFscy5wb3N0X2RlbGV0ZS5jb25uZWN0KGludmFsaWRhdGVfY2FjaGUpCiBkamFuZ28uZGIubW9kZWxzLnNpZ25hbHMubTJtX2NoYW5nZWQuY29ubmVjdChpbnZhbGlkYXRlX2NhY2hlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQppbmRleCAxYTY1MDdjLi5hYjZiYTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQpAQCAtMTgsNiArMTgsNyBAQAogCiAjIFBsZWFzZSBydW4gZmxha2U4IG9uIHRoaXMgZmlsZSBiZWZvcmUgc2VuZGluZyBwYXRjaGVzCiAKK2ltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IGpzb24KQEAgLTI4LDcgKzI5LDcgQEAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUmVjaXBlLCBDdXN0b21JbWFnZVJlY2lwZSwgQ3VzdG9tSW1hZ2VQYWNrYWdlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBUYXJnZXQsIFBhY2thZ2UsIFBhY2thZ2VfRGVwZW5kZW5jeQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0VmFyaWFibGUKLWZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdAorZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRSZXF1ZXN0LCBCdWlsZEVudmlyb25tZW50CiBmcm9tIGJsZGNvbnRyb2wgaW1wb3J0IGJiY29udHJvbGxlcgogCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UsIEpzb25SZXNwb25zZQpAQCAtNTA5LDYgKzUxMCwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHBhY2thZ2UucGFja2FnZS5uYW1lLCBlKSkKICAgICAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgICAgICMgcHJlLWNyZWF0ZSBsYXllciBkaXJlY3Rvcnkgc3RydWN0dXJlLCBzbyB0aGF0IG90aGVyIGJ1aWxkcworICAgICAgICAjIGFyZSBub3QgYmxvY2tlZCBieSB0aGlzIG5ldyByZWNpcGUgZGVwZW5kZWN5CisgICAgICAgICMgTk9URTogdGhpcyBpcyBwYXJhbGxlbCBjb2RlIHRvICdsb2NhbGhvc3RiZWNvbnRyb2xsZXIucHknCisgICAgICAgIGJlID0gQnVpbGRFbnZpcm9ubWVudC5vYmplY3RzLmFsbCgpWzBdCisgICAgICAgIGxheWVycGF0aCA9IG9zLnBhdGguam9pbihiZS5idWlsZGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUltYWdlUmVjaXBlLkxBWUVSX05BTUUpCisgICAgICAgIGZvciBuYW1lIGluICgiY29uZiIsICJyZWNpcGVzIik6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGxheWVycGF0aCwgbmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgpCisgICAgICAgICMgcHJlLWNyZWF0ZSBsYXllci5jb25mCisgICAgICAgIGNvbmZpZyA9IG9zLnBhdGguam9pbihsYXllcnBhdGgsICJjb25mIiwgImxheWVyLmNvbmYiKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoY29uZmlnKToKKyAgICAgICAgICAgIHdpdGggb3Blbihjb25maWcsICJ3IikgYXMgY29uZjoKKyAgICAgICAgICAgICAgICBjb25mLndyaXRlKCdCQlBBVEggLj0gIjoke0xBWUVSRElSfSJcbkJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMvKi5iYiJcbicpCisgICAgICAgICMgcHJlLWNyZWF0ZSBuZXcgaW1hZ2UncyByZWNpcGUgZmlsZQorICAgICAgICByZWNpcGVfcGF0aCA9IG9zLnBhdGguam9pbihsYXllcnBhdGgsICJyZWNpcGVzIiwgIiVzLmJiIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5uYW1lKQorICAgICAgICB3aXRoIG9wZW4ocmVjaXBlX3BhdGgsICJ3IikgYXMgcmVjaXBlZjoKKyAgICAgICAgICAgIHJlY2lwZWYud3JpdGUocmVjaXBlLmdlbmVyYXRlX3JlY2lwZV9maWxlX2NvbnRlbnRzKCkpCisKICAgICAgICAgcmV0dXJuIEpzb25SZXNwb25zZSgKICAgICAgICAgICAgIHsiZXJyb3IiOiAib2siLAogICAgICAgICAgICAgICJwYWNrYWdlcyI6IHJlY2lwZS5nZXRfYWxsX3BhY2thZ2VzKCkuY291bnQoKSwKQEAgLTc1Miw3ICs3NzQsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9yZXNwb25zZSgiUGFja2FnZSAlcyBub3QgZm91bmQgaW4gZXhjbHVkZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYnV0IHdhcyBpbiBpbmNsdWRlZCBsaXN0IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UubmFtZSkKLQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVjaXBlLmFwcGVuZHNfc2V0LmFkZChwYWNrYWdlKQogICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBwYWNrYWdlIGlzIG5vdCBpbiB0aGUgZXhjbHVkZXMgc2V0CkBAIC03NjAsMjYgKzc4MSwyNyBAQAogICAgICAgICAgICAgICAgIHJlY2lwZS5leGNsdWRlc19zZXQucmVtb3ZlKHBhY2thZ2UpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgIyBBZGQgdGhlIGRlcGVuZGVuY2llcyB3ZSB0aGluayB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZWNpcGUKLSAgICAgICAgICAgICMgYXMgYSByZXN1bHQgb2YgYXBwZW5kaW5nIHRoaXMgcGFja2FnZS4KLSAgICAgICAgICAgICMgVE9ETyB0aGlzIHNob3VsZCByZWN1cnNlIGRvd24gdGhlIGVudGlyZSBkZXBzIHRyZWUKLSAgICAgICAgICAgIGZvciBkZXAgaW4gcGFja2FnZS5wYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UuYWxsX2RlcGVuZHMoKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGN1c3RfcGFja2FnZSA9IEN1c3RvbUltYWdlUGFja2FnZS5vYmplY3RzLmdldCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZGVwLmRlcGVuZHNfb24ubmFtZSkKIAotICAgICAgICAgICAgICAgICAgICByZWNpcGUuaW5jbHVkZXNfc2V0LmFkZChjdXN0X3BhY2thZ2UpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBhZGRpbmcgdGhlIHByZS1yZXF1aXNpdGUgcGFja2FnZSwgbWFrZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBzdXJlIGl0J3Mgbm90IGluIHRoZSBleGNsdWRlZCBsaXN0IGZyb20gYQotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmlvciByZW1vdmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmV4Y2x1ZGVzX3NldC5yZW1vdmUoY3VzdF9wYWNrYWdlKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgcGFja2FnZS5Eb2VzTm90RXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIERvbid0IGNhcmUgaWYgdGhlIHBhY2thZ2UgaGFkIG5ldmVyIGJlZW4gZXhjbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDb3VsZCBub3QgYWRkIHBhY2thZ2UncyBzdWdnZXN0ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMgdG8gdGhlIGxpc3QiKQorICAgICAgICAjIEFkZCB0aGUgZGVwZW5kZW5jaWVzIHdlIHRoaW5rIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJlY2lwZQorICAgICAgICAjIGFzIGEgcmVzdWx0IG9mIGFwcGVuZGluZyB0aGlzIHBhY2thZ2UuCisgICAgICAgICMgVE9ETyB0aGlzIHNob3VsZCByZWN1cnNlIGRvd24gdGhlIGVudGlyZSBkZXBzIHRyZWUKKyAgICAgICAgZm9yIGRlcCBpbiBwYWNrYWdlLnBhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZS5hbGxfZGVwZW5kcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGN1c3RfcGFja2FnZSA9IEN1c3RvbUltYWdlUGFja2FnZS5vYmplY3RzLmdldCgKKyAgICAgICAgICAgICAgICAgICAgbmFtZT1kZXAuZGVwZW5kc19vbi5uYW1lKQorCisgICAgICAgICAgICAgICAgcmVjaXBlLmluY2x1ZGVzX3NldC5hZGQoY3VzdF9wYWNrYWdlKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBXaGVuIGFkZGluZyB0aGUgcHJlLXJlcXVpc2l0ZSBwYWNrYWdlLCBtYWtlCisgICAgICAgICAgICAgICAgICAgICMgc3VyZSBpdCdzIG5vdCBpbiB0aGUgZXhjbHVkZWQgbGlzdCBmcm9tIGEKKyAgICAgICAgICAgICAgICAgICAgIyBwcmlvciByZW1vdmFsLgorICAgICAgICAgICAgICAgICAgICByZWNpcGUuZXhjbHVkZXNfc2V0LnJlbW92ZShjdXN0X3BhY2thZ2UpCisgICAgICAgICAgICAgICAgZXhjZXB0IHBhY2thZ2UuRG9lc05vdEV4aXN0OgorICAgICAgICAgICAgICAgICAgICAjIERvbid0IGNhcmUgaWYgdGhlIHBhY2thZ2UgaGFkIG5ldmVyIGJlZW4gZXhjbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDb3VsZCBub3QgYWRkIHBhY2thZ2UncyBzdWdnZXN0ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyB0byB0aGUgbGlzdCIpCiAgICAgICAgIHJldHVybiBKc29uUmVzcG9uc2UoeyJlcnJvciI6ICJvayJ9KQogCiAgICAgZGVmIGRlbGV0ZShzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOgpAQCAtNzk3LDIyICs4MTksMjQgQEAKICAgICAgICAgICAgICAgICByZWNpcGUuZXhjbHVkZXNfc2V0LmFkZChwYWNrYWdlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZWNpcGUuYXBwZW5kc19zZXQucmVtb3ZlKHBhY2thZ2UpCi0gICAgICAgICAgICAgICAgYWxsX2N1cnJlbnRfcGFja2FnZXMgPSByZWNpcGUuZ2V0X2FsbF9wYWNrYWdlcygpCiAKLSAgICAgICAgICAgICAgICByZXZlcnNlX2RlcHNfZGljdGxpc3QgPSBzZWxmLl9nZXRfYWxsX2RlcGVuZGVudHMoCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UucGssCi0gICAgICAgICAgICAgICAgICAgIGFsbF9jdXJyZW50X3BhY2thZ2VzKQorICAgICAgICAgICAgIyByZW1vdmUgZGVwZW5kZW5jaWVzIGFzIHdlbGwKKyAgICAgICAgICAgIGFsbF9jdXJyZW50X3BhY2thZ2VzID0gcmVjaXBlLmdldF9hbGxfcGFja2FnZXMoKQogCi0gICAgICAgICAgICAgICAgaWRzID0gW2VudHJ5WydwayddIGZvciBlbnRyeSBpbiByZXZlcnNlX2RlcHNfZGljdGxpc3RdCi0gICAgICAgICAgICAgICAgcmV2ZXJzZV9kZXBzID0gQ3VzdG9tSW1hZ2VQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbj1pZHMpCi0gICAgICAgICAgICAgICAgZm9yIHIgaW4gcmV2ZXJzZV9kZXBzOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiByLmlkIGluIGluY2x1ZGVkX3BhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5leGNsdWRlc19zZXQuYWRkKHIpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5hcHBlbmRzX3NldC5yZW1vdmUocikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmV2ZXJzZV9kZXBzX2RpY3RsaXN0ID0gc2VsZi5fZ2V0X2FsbF9kZXBlbmRlbnRzKAorICAgICAgICAgICAgICAgIHBhY2thZ2UucGssCisgICAgICAgICAgICAgICAgYWxsX2N1cnJlbnRfcGFja2FnZXMpCisKKyAgICAgICAgICAgIGlkcyA9IFtlbnRyeVsncGsnXSBmb3IgZW50cnkgaW4gcmV2ZXJzZV9kZXBzX2RpY3RsaXN0XQorICAgICAgICAgICAgcmV2ZXJzZV9kZXBzID0gQ3VzdG9tSW1hZ2VQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbj1pZHMpCisgICAgICAgICAgICBmb3IgciBpbiByZXZlcnNlX2RlcHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiByLmlkIGluIGluY2x1ZGVkX3BhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmV4Y2x1ZGVzX3NldC5hZGQocikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5hcHBlbmRzX3NldC5yZW1vdmUocikKKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICAgICAgcmV0dXJuIEpzb25SZXNwb25zZSh7ImVycm9yIjogIm9rIn0pCiAgICAgICAgIGV4Y2VwdCBDdXN0b21JbWFnZVJlY2lwZS5Eb2VzTm90RXhpc3Q6CkBAIC04NzQsNiArODk4LDEyIEBACiAgICAgICAgICAgICBtYWNoaW5ldmFyLnZhbHVlID0gcmVxdWVzdC5QT1NUWydtYWNoaW5lTmFtZSddCiAgICAgICAgICAgICBtYWNoaW5ldmFyLnNhdmUoKQogCisgICAgICAgICMgRGlzdHJvIG5hbWUgY2hhbmdlCisgICAgICAgIGlmICdkaXN0cm9OYW1lJyBpbiByZXF1ZXN0LlBPU1Q6CisgICAgICAgICAgICBkaXN0cm92YXIgPSBwcmoucHJvamVjdHZhcmlhYmxlX3NldC5nZXQobmFtZT0iRElTVFJPIikKKyAgICAgICAgICAgIGRpc3Ryb3Zhci52YWx1ZSA9IHJlcXVlc3QuUE9TVFsnZGlzdHJvTmFtZSddCisgICAgICAgICAgICBkaXN0cm92YXIuc2F2ZSgpCisKICAgICAgICAgcmV0dXJuIEpzb25SZXNwb25zZSh7ImVycm9yIjogIm9rIn0pCiAKICAgICBkZWYgZ2V0KHNlbGYsIHJlcXVlc3QsICphcmdzLCAqKmt3YXJncyk6CkBAIC05NjAsMTAgKzk5MCwxMSBAQAogICAgICAgICBleGNlcHQgUHJvamVjdFZhcmlhYmxlLkRvZXNOb3RFeGlzdDoKICAgICAgICAgICAgIGRhdGFbIm1hY2hpbmUiXSA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGF0YVsiZGlzdHJvIl0gPSBwcm9qZWN0LnByb2plY3R2YXJpYWJsZV9zZXQuZ2V0KAotICAgICAgICAgICAgICAgIG5hbWU9IkRJU1RSTyIpLnZhbHVlCisgICAgICAgICAgICBkYXRhWyJkaXN0cm8iXSA9IHsibmFtZSI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5wcm9qZWN0dmFyaWFibGVfc2V0LmdldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iRElTVFJPIikudmFsdWV9CiAgICAgICAgIGV4Y2VwdCBQcm9qZWN0VmFyaWFibGUuRG9lc05vdEV4aXN0OgotICAgICAgICAgICAgZGF0YVsiZGlzdHJvIl0gPSAiLS0gbm90IHNldCB5ZXQiCisgICAgICAgICAgICBkYXRhWyJkaXN0cm8iXSA9IE5vbmUKIAogICAgICAgICBkYXRhWydlcnJvciddID0gIm9rIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9tcmJzZWN0aW9uLmpzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcwppbmRleCA3M2QwOTM1Li5jMGM1ZmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9tcmJzZWN0aW9uLmpzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL21yYnNlY3Rpb24uanMKQEAgLTYxLDYgKzYxLDEyIEBACiAgICAgcmV0dXJuIChjYWNoZWQucmVjaXBlc19wYXJzZWRfcGVyY2VudGFnZSAhPT0gYnVpbGQucmVjaXBlc19wYXJzZWRfcGVyY2VudGFnZSk7CiAgIH0KIAorICAvLyByZXR1cm5zIHRydWUgaWYgdGhlIG51bWJlciBvZiByZXBvcyBjbG9uZWQvdG8gY2xvbmUgY2hhbmdlZAorICBmdW5jdGlvbiBjbG9uZVByb2dyZXNzQ2hhbmdlZChidWlsZCkgeworICAgIHZhciBjYWNoZWQgPSBnZXRDYWNoZWQoYnVpbGQpOworICAgIHJldHVybiAoY2FjaGVkLnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlICE9PSBidWlsZC5yZXBvc19jbG9uZWRfcGVyY2VudGFnZSk7CisgIH0KKwogICBmdW5jdGlvbiByZWZyZXNoTW9zdFJlY2VudEJ1aWxkcygpewogICAgIGxpYnRvYXN0ZXIuZ2V0TW9zdFJlY2VudEJ1aWxkcygKICAgICAgIGxpYnRvYXN0ZXIuY3R4Lm1vc3RSZWNlbnRCdWlsZHNVcmwsCkBAIC0xMDAsNiArMTA2LDE1IEBACiAKICAgICAgICAgICAgIGNvbnRhaW5lci5odG1sKGh0bWwpOwogICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChjbG9uZVByb2dyZXNzQ2hhbmdlZChidWlsZCkpIHsKKyAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgY2xvbmUgcHJvZ3Jlc3MgdGV4dAorICAgICAgICAgICAgc2VsZWN0b3IgPSAnI3JlcG9zLWNsb25lZC1wZXJjZW50YWdlLScgKyBidWlsZC5pZDsKKyAgICAgICAgICAgICQoc2VsZWN0b3IpLmh0bWwoYnVpbGQucmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UpOworCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHJlY2lwZSBwcm9ncmVzcyBiYXIKKyAgICAgICAgICAgIHNlbGVjdG9yID0gJyNyZXBvcy1jbG9uZWQtcGVyY2VudGFnZS1iYXItJyArIGJ1aWxkLmlkOworICAgICAgICAgICAgJChzZWxlY3Rvcikud2lkdGgoYnVpbGQucmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UgKyAnJScpOworICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmICh0YXNrc1Byb2dyZXNzQ2hhbmdlZChidWlsZCkpIHsKICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgdGFzayBwcm9ncmVzcyB0ZXh0CiAgICAgICAgICAgICBzZWxlY3RvciA9ICcjYnVpbGQtcGMtZG9uZS0nICsgYnVpbGQuaWQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0cGFnZS5qcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3RwYWdlLmpzCmluZGV4IDIxYWRmODEuLjUwNjQ3MWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3RwYWdlLmpzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3RwYWdlLmpzCkBAIC0xNSw2ICsxNSwxMyBAQAogICB2YXIgbWFjaGluZUlucHV0Rm9ybSA9ICQoIiNtYWNoaW5lLWlucHV0LWZvcm0iKTsKICAgdmFyIGludmFsaWRNYWNoaW5lTmFtZUhlbHAgPSAkKCIjaW52YWxpZC1tYWNoaW5lLW5hbWUtaGVscCIpOwogCisgIHZhciBkaXN0cm9DaGFuZ2VJbnB1dCA9ICQoIiNkaXN0cm8tY2hhbmdlLWlucHV0Iik7CisgIHZhciBkaXN0cm9DaGFuZ2VCdG4gPSAkKCIjZGlzdHJvLWNoYW5nZS1idG4iKTsKKyAgdmFyIGRpc3Ryb0Zvcm0gPSAkKCIjc2VsZWN0LWRpc3Ryby1mb3JtIik7CisgIHZhciBkaXN0cm9DaGFuZ2VGb3JtVG9nZ2xlID0gJCgiI2NoYW5nZS1kaXN0cm8tdG9nZ2xlIik7CisgIHZhciBkaXN0cm9OYW1lVGl0bGUgPSAkKCIjcHJvamVjdC1kaXN0cm8tbmFtZSIpOworICB2YXIgZGlzdHJvQ2hhbmdlQ2FuY2VsID0gJCgiI2NhbmNlbC1kaXN0cm8tY2hhbmdlIik7CisKICAgdmFyIGZyZXFCdWlsZEJ0biA9ICAkKCIjZnJlcS1idWlsZC1idG4iKTsKICAgdmFyIGZyZXFCdWlsZExpc3QgPSAkKCIjZnJlcS1idWlsZC1saXN0Iik7CiAKQEAgLTI2LDYgKzMzLDcgQEAKIAogICB2YXIgY3VycmVudExheWVyQWRkU2VsZWN0aW9uOwogICB2YXIgY3VycmVudE1hY2hpbmVBZGRTZWxlY3Rpb24gPSAiIjsKKyAgdmFyIGN1cnJlbnREaXN0cm9BZGRTZWxlY3Rpb24gPSAiIjsKIAogICB2YXIgdXJsUGFyYW1zID0gbGlidG9hc3Rlci5wYXJzZVVybFBhcmFtcygpOwogCkBAIC00NSw2ICs1MywxNyBAQAogICAgICAgdXBkYXRlTWFjaGluZU5hbWUocHJqSW5mby5tYWNoaW5lLm5hbWUpOwogICAgIH0KIAorICAgIC8qIElmIHdlJ3JlIHJlY2VpdmluZyBhIGRpc3RybyBzZXQgZnJvbSB0aGUgdXJsIGFuZCBpdCdzIGRpZmZlcmVudCBmcm9tCisgICAgICogb3VyIGN1cnJlbnQgZGlzdHJvIHRoZW4gYWN0aXZhdGUgc2V0IG1hY2hpbmUgc2VxdWVuY2UuCisgICAgICovCisgICAgaWYgKHVybFBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnc2V0RGlzdHJvJykgJiYKKyAgICAgICAgdXJsUGFyYW1zLnNldERpc3RybyAhPT0gcHJqSW5mby5kaXN0cm8ubmFtZSl7CisgICAgICAgIGRpc3Ryb0NoYW5nZUlucHV0LnZhbCh1cmxQYXJhbXMuc2V0RGlzdHJvKTsKKyAgICAgICAgZGlzdHJvQ2hhbmdlQnRuLmNsaWNrKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHVwZGF0ZURpc3Ryb05hbWUocHJqSW5mby5kaXN0cm8ubmFtZSk7CisgICAgfQorCiAgICAvKiBOb3cgd2UncmUgcmVhbGx5IHJlYWR5IHNob3cgdGhlIHBhZ2UgKi8KICAgICAkKCIjcHJvamVjdC1wYWdlIikuc2hvdygpOwogCkBAIC0yNzgsNiArMjk3LDYwIEBACiAgIH0pOwogCiAKKyAgLyogQ2hhbmdlIGRpc3RybyBmdW5jdGlvbmFsaXR5ICovCisKKyAgZGlzdHJvQ2hhbmdlRm9ybVRvZ2dsZS5jbGljayhmdW5jdGlvbigpeworICAgIGRpc3Ryb0Zvcm0uc2xpZGVEb3duKCk7CisgICAgZGlzdHJvTmFtZVRpdGxlLmhpZGUoKTsKKyAgICAkKHRoaXMpLmhpZGUoKTsKKyAgfSk7CisKKyAgZGlzdHJvQ2hhbmdlQ2FuY2VsLmNsaWNrKGZ1bmN0aW9uKCl7CisgICAgZGlzdHJvRm9ybS5zbGlkZVVwKGZ1bmN0aW9uKCl7CisgICAgICBkaXN0cm9OYW1lVGl0bGUuc2hvdygpOworICAgICAgZGlzdHJvQ2hhbmdlRm9ybVRvZ2dsZS5zaG93KCk7CisgICAgfSk7CisgIH0pOworCisgIGZ1bmN0aW9uIHVwZGF0ZURpc3Ryb05hbWUoZGlzdHJvTmFtZSl7CisgICAgZGlzdHJvQ2hhbmdlSW5wdXQudmFsKGRpc3Ryb05hbWUpOworICAgIGRpc3Ryb05hbWVUaXRsZS50ZXh0KGRpc3Ryb05hbWUpOworICB9CisKKyAgbGlidG9hc3Rlci5tYWtlVHlwZWFoZWFkKGRpc3Ryb0NoYW5nZUlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9hc3Rlci5jdHguZGlzdHJvc1R5cGVBaGVhZFVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgfSwgZnVuY3Rpb24oaXRlbSl7CisgICAgY3VycmVudERpc3Ryb0FkZFNlbGVjdGlvbiA9IGl0ZW0ubmFtZTsKKyAgICBkaXN0cm9DaGFuZ2VCdG4ucmVtb3ZlQXR0cigiZGlzYWJsZWQiKTsKKyAgfSk7CisKKyAgZGlzdHJvQ2hhbmdlQnRuLmNsaWNrKGZ1bmN0aW9uKGUpeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAvKiBXZSBhY2NlcHQgYW55IHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdHlwZWFoZWFkIHNlbGVjdGlvbiBvciBub3QgKi8KKyAgICBpZiAoZGlzdHJvQ2hhbmdlSW5wdXQudmFsKCkubGVuZ3RoID09PSAwKQorICAgICAgcmV0dXJuOworCisgICAgY3VycmVudERpc3Ryb0FkZFNlbGVjdGlvbiA9IGRpc3Ryb0NoYW5nZUlucHV0LnZhbCgpOworCisgICAgbGlidG9hc3Rlci5lZGl0Q3VycmVudFByb2plY3QoCisgICAgICB7IGRpc3Ryb05hbWUgOiBjdXJyZW50RGlzdHJvQWRkU2VsZWN0aW9uIH0sCisgICAgICBmdW5jdGlvbigpeworICAgICAgICAvKiBTdWNjZXNzIG1hY2hpbmUgY2hhbmdlZCAqLworICAgICAgICB1cGRhdGVEaXN0cm9OYW1lKGN1cnJlbnREaXN0cm9BZGRTZWxlY3Rpb24pOworICAgICAgICBkaXN0cm9DaGFuZ2VDYW5jZWwuY2xpY2soKTsKKworICAgICAgICAvKiBTaG93IHRoZSBhbGVydCBtZXNzYWdlICovCisgICAgICAgIHZhciBtZXNzYWdlID0gJCgnPHNwYW4+WW91IGhhdmUgY2hhbmdlZCB0aGUgZGlzdHJvIHRvOiA8c3Ryb25nPjxzcGFuIGlkPSJub3RpZnktbWFjaGluZS1uYW1lIj48L3NwYW4+PC9zdHJvbmc+PC9zcGFuPicpOworICAgICAgICBtZXNzYWdlLmZpbmQoIiNub3RpZnktbWFjaGluZS1uYW1lIikudGV4dChjdXJyZW50RGlzdHJvQWRkU2VsZWN0aW9uKTsKKyAgICAgICAgbGlidG9hc3Rlci5zaG93Q2hhbmdlTm90aWZpY2F0aW9uKG1lc3NhZ2UpOworICAgIH0sCisgICAgICBmdW5jdGlvbigpeworICAgICAgICAvKiBGYWlsZWQgbWFjaGluZSBjaGFuZ2VkICovCisgICAgICAgIGNvbnNvbGUud2FybigiRmFpbGVkIHRvIGNoYW5nZSBkaXN0cm8iKTsKKyAgICB9KTsKKyAgfSk7CisKKwogICAvKiBDaGFuZ2UgcmVsZWFzZSBmdW5jdGlvbmFsaXR5ICovCiAgIGZ1bmN0aW9uIHVwZGF0ZVByb2plY3RSZWxlYXNlKHJlbGVhc2UpewogICAgIHJlbGVhc2VUaXRsZS50ZXh0KHJlbGVhc2UuZGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvcHJvamVjdHRvcGJhci5qcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMKaW5kZXggOTJhYjJkNi4uNjkyMjBhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvcHJvamVjdHRvcGJhci5qcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0dG9wYmFyLmpzCkBAIC03MywxNCArNzMsMTQgQEAKIAogICBuZXdCdWlsZFRhcmdldEJ1aWxkQnRuLmNsaWNrKGZ1bmN0aW9uIChlKSB7CiAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgIGlmICghbmV3QnVpbGRUYXJnZXRJbnB1dC52YWwoKSkgeworICAgIGlmICghbmV3QnVpbGRUYXJnZXRJbnB1dC52YWwoKS50cmltKCkpIHsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLyogV2UgdXNlIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgc28gYXMgdG8gbWFpbnRhaW4gYW55IGNvbW1hbmQgYWxzbwogICAgICAqIGFkZGVkIGUuZy4gY29yZS1pbWFnZS1taW5pbWFsOmNsZWFuIGFuZCBiZWNhdXNlIHdlIGNhbiBidWlsZCB0YXJnZXRzCiAgICAgICogdGhhdCB0b2FzdGVyIGRvZXNuJ3QgeWV0IGtub3cgYWJvdXQKICAgICAgKi8KLSAgICBzZWxlY3RlZFRhcmdldCA9IHsgbmFtZTogbmV3QnVpbGRUYXJnZXRJbnB1dC52YWwoKSB9OworICAgIHNlbGVjdGVkVGFyZ2V0ID0geyBuYW1lOiBuZXdCdWlsZFRhcmdldElucHV0LnZhbCgpLnRyaW0oKSB9OwogCiAgICAgLyogRmlyZSBvZmYgdGhlIGJ1aWxkICovCiAgICAgbGlidG9hc3Rlci5zdGFydEFCdWlsZChudWxsLCBzZWxlY3RlZFRhcmdldC5uYW1lLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQppbmRleCBlMmQyM2MxLi5kY2EyZmEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQpAQCAtMjMsNiArMjMsNyBAQAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBSZWNpcGUsIFByb2plY3RMYXllciwgTGF5ZXJfVmVyc2lvbiwgTWFjaGluZSwgUHJvamVjdAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgUGFja2FnZSwgVGFyZ2V0LCBCdWlsZCwgTG9nTWVzc2FnZSwgVGFzawogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVBhY2thZ2UsIFBhY2thZ2VfRGVwZW5kZW5jeU1hbmFnZXIKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCiBmcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEsIE1heCwgU3VtLCBDb3VudCwgV2hlbiwgQ2FzZSwgVmFsdWUsIEludGVnZXJGaWVsZAogZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCB1cmwKIGZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlLCByZXNvbHZlCkBAIC0xNTM2LDMgKzE1MzcsOTMgQEAKICAgICAgICAgICAgIGNvbnRleHRbJ2J1aWxkX2luX3Byb2dyZXNzX25vbmVfY29tcGxldGVkJ10gPSBGYWxzZQogCiAgICAgICAgIHJldHVybiBjb250ZXh0CisKKworY2xhc3MgRGlzdHJvc1RhYmxlKFRvYXN0ZXJUYWJsZSk6CisgICAgIiIiVGFibGUgb2YgRGlzdHJvcyBpbiBUb2FzdGVyIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRGlzdHJvc1RhYmxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuZW1wdHlfc3RhdGUgPSAiVG9hc3RlciBoYXMgbm8gZGlzdHJvIGluZm9ybWF0aW9uIGZvciB0aGlzIHByb2plY3QuIFNhZGx5LCAJCQkgICBkaXN0cm8gaW5mb3JtYXRpb24gY2Fubm90IGJlIG9idGFpbmVkIGZyb20gYnVpbGRzLCBzbyB0aGlzIAkJCQkgIHBhZ2Ugd2lsbCByZW1haW4gZW1wdHkuIgorICAgICAgICBzZWxmLnRpdGxlID0gIkNvbXBhdGlibGUgRGlzdHJvcyIKKyAgICAgICAgc2VsZi5kZWZhdWx0X29yZGVyYnkgPSAibmFtZSIKKworICAgIGRlZiBnZXRfY29udGV4dF9kYXRhKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgY29udGV4dCA9IHN1cGVyKERpc3Ryb3NUYWJsZSwgc2VsZikuZ2V0X2NvbnRleHRfZGF0YSgqKmt3YXJncykKKyAgICAgICAgY29udGV4dFsncHJvamVjdCddID0gUHJvamVjdC5vYmplY3RzLmdldChwaz1rd2FyZ3NbJ3BpZCddKQorICAgICAgICByZXR1cm4gY29udGV4dAorCisgICAgZGVmIHNldHVwX2ZpbHRlcnMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9a3dhcmdzWydwaWQnXSkKKworICAgICAgICBpbl9jdXJyZW50X3Byb2plY3RfZmlsdGVyID0gVGFibGVGaWx0ZXIoCisgICAgICAgICAgICAiaW5fY3VycmVudF9wcm9qZWN0IiwKKyAgICAgICAgICAgICJGaWx0ZXIgYnkgcHJvamVjdCBEaXN0cm9zIgorICAgICAgICApCisKKyAgICAgICAgaW5fcHJvamVjdF9hY3Rpb24gPSBUYWJsZUZpbHRlckFjdGlvblRvZ2dsZSgKKyAgICAgICAgICAgICJpbl9wcm9qZWN0IiwKKyAgICAgICAgICAgICJEaXN0cm8gcHJvdmlkZWQgYnkgbGF5ZXJzIGFkZGVkIHRvIHRoaXMgcHJvamVjdCIsCisgICAgICAgICAgICBQcm9qZWN0RmlsdGVycy5pbl9wcm9qZWN0KHNlbGYucHJvamVjdF9sYXllcnMpCisgICAgICAgICkKKworICAgICAgICBub3RfaW5fcHJvamVjdF9hY3Rpb24gPSBUYWJsZUZpbHRlckFjdGlvblRvZ2dsZSgKKyAgICAgICAgICAgICJub3RfaW5fcHJvamVjdCIsCisgICAgICAgICAgICAiRGlzdHJvcyBwcm92aWRlZCBieSBsYXllcnMgbm90IGFkZGVkIHRvIHRoaXMgcHJvamVjdCIsCisgICAgICAgICAgICBQcm9qZWN0RmlsdGVycy5ub3RfaW5fcHJvamVjdChzZWxmLnByb2plY3RfbGF5ZXJzKQorICAgICAgICApCisKKyAgICAgICAgaW5fY3VycmVudF9wcm9qZWN0X2ZpbHRlci5hZGRfYWN0aW9uKGluX3Byb2plY3RfYWN0aW9uKQorICAgICAgICBpbl9jdXJyZW50X3Byb2plY3RfZmlsdGVyLmFkZF9hY3Rpb24obm90X2luX3Byb2plY3RfYWN0aW9uKQorICAgICAgICBzZWxmLmFkZF9maWx0ZXIoaW5fY3VycmVudF9wcm9qZWN0X2ZpbHRlcikKKworICAgIGRlZiBzZXR1cF9xdWVyeXNldChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwcmogPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrID0ga3dhcmdzWydwaWQnXSkKKyAgICAgICAgc2VsZi5xdWVyeXNldCA9IHByai5nZXRfYWxsX2NvbXBhdGlibGVfZGlzdHJvcygpCisgICAgICAgIHNlbGYucXVlcnlzZXQgPSBzZWxmLnF1ZXJ5c2V0Lm9yZGVyX2J5KHNlbGYuZGVmYXVsdF9vcmRlcmJ5KQorCisgICAgICAgIHNlbGYuc3RhdGljX2NvbnRleHRfZXh0cmFbJ2N1cnJlbnRfbGF5ZXJzJ10gPSBcCisgICAgICAgICAgICAgICAgc2VsZi5wcm9qZWN0X2xheWVycyA9IFwKKyAgICAgICAgICAgICAgICBwcmouZ2V0X3Byb2plY3RfbGF5ZXJfdmVyc2lvbnMocGs9VHJ1ZSkKKworICAgIGRlZiBzZXR1cF9jb2x1bW5zKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisKKyAgICAgICAgc2VsZi5hZGRfY29sdW1uKHRpdGxlPSJEaXN0cm8iLAorICAgICAgICAgICAgICAgICAgICAgICAgaGlkZWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmFibGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWU9Im5hbWUiKQorCisgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iRGVzY3JpcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZT0iZGVzY3JpcHRpb24iKQorCisgICAgICAgIGxheWVyX2xpbmtfdGVtcGxhdGUgPSAnJycKKyAgICAgICAgPGEgaHJlZj0ieyUgdXJsICdsYXllcmRldGFpbHMnIGV4dHJhLnBpZCBkYXRhLmxheWVyX3ZlcnNpb24uaWQgJX0iPgorICAgICAgICB7e2RhdGEubGF5ZXJfdmVyc2lvbi5sYXllci5uYW1lfX08L2E+CisgICAgICAgICcnJworCisgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iTGF5ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfbmFtZT0ibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfdGVtcGxhdGU9bGF5ZXJfbGlua190ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyYWJsZT1UcnVlKQorCisgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iR2l0IHJldmlzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dD0iVGhlIEdpdCBicmFuY2gsIHRhZyBvciBjb21taXQuIEZvciB0aGUgbGF5ZXJzIGZyb20gdGhlIE9wZW5FbWJlZGRlZCBsYXllciBzb3VyY2UsIHRoZSByZXZpc2lvbiBpcyBhbHdheXMgdGhlIGJyYW5jaCBjb21wYXRpYmxlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB5b3Ugc2VsZWN0ZWQgZm9yIHRoaXMgcHJvamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWU9ImxheWVyX3ZlcnNpb25fX2dldF92Y3NfcmVmZXJlbmNlIikKKworICAgICAgICB3cnRlbXBsYXRlX2ZpbGVfdGVtcGxhdGUgPSAnJyc8Y29kZT5jb25mL21hY2hpbmUve3tkYXRhLm5hbWV9fS5jb25mPC9jb2RlPgorICAgICAgICA8YSBocmVmPSJ7e2RhdGEuZ2V0X3Zjc19tYWNoaW5lX2ZpbGVfbGlua191cmx9fSIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW5ldy13aW5kb3ciPjwvaT48L2E+JycnCisKKyAgICAgICAgc2VsZi5hZGRfY29sdW1uKHRpdGxlPSJEaXN0cm8gZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19kYXRhX25hbWU9InRlbXBsYXRlZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfZGF0YV90ZW1wbGF0ZT13cnRlbXBsYXRlX2ZpbGVfdGVtcGxhdGUpCisKKworICAgICAgICBzZWxmLmFkZF9jb2x1bW4odGl0bGU9IlNlbGVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ9IlNldHMgdGhlIHNlbGVjdGVkIGRpc3RybyB0byB0aGUgcHJvamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoaWRlYWJsZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9uYW1lPSJpbl9jdXJyZW50X3Byb2plY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfbmFtZT0iYWRkLWRlbC1sYXllcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfdGVtcGxhdGU9J3slIGluY2x1ZGUgImRpc3Ryb19idG4uaHRtbCIgJX0nKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9iYXNlLmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9iYXNlLmh0bWwKaW5kZXggMzJiNDk3OS4uNGY3MjA2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZS5odG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2UuaHRtbApAQCAtNDksNiArNDksNyBAQAogICAgICAgICByZWNpcGVzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9yZWNpcGVzdHlwZWFoZWFkJyBwcm9qZWN0LmlkIGFzIHBhdHVybCV9e3twYXR1cmx8anNvbn19LAogICAgICAgICBsYXllcnNUeXBlQWhlYWRVcmw6IHslIHVybCAneGhyX2xheWVyc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKICAgICAgICAgbWFjaGluZXNUeXBlQWhlYWRVcmw6IHslIHVybCAneGhyX21hY2hpbmVzdHlwZWFoZWFkJyBwcm9qZWN0LmlkIGFzIHBhdHVybCV9e3twYXR1cmx8anNvbn19LAorICAgICAgICBkaXN0cm9zVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9kaXN0cm9zdHlwZWFoZWFkJyBwcm9qZWN0LmlkIGFzIHBhdHVybCV9e3twYXR1cmx8anNvbn19LAogICAgICAgICBwcm9qZWN0QnVpbGRzVXJsOiB7JSB1cmwgJ3Byb2plY3RidWlsZHMnIHByb2plY3QuaWQgYXMgcGJ1cmwgJX17e3BidXJsfGpzb259fSwKICAgICAgICAgeGhyQ3VzdG9tUmVjaXBlVXJsIDogInslIHVybCAneGhyX2N1c3RvbXJlY2lwZScgJX0iLAogICAgICAgICBwcm9qZWN0SWQgOiB7e3Byb2plY3QuaWR9fSwKQEAgLTEwOSw2ICsxMTAsNyBAQAogICAgICAgICAgICAgICAgIEFsbCBidWlsZHMKICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICB7JSBpZiBwcm9qZWN0X2VuYWJsZSAlfQogICAgICAgICAgICAgICA8bGkgaWQ9Im5hdmJhci1hbGwtcHJvamVjdHMiCiAgICAgICAgICAgICAgIHslIGlmIHJlcXVlc3QucmVzb2x2ZXJfbWF0Y2gudXJsX25hbWUgPT0gJ2FsbC1wcm9qZWN0cycgICV9CiAgICAgICAgICAgICAgIGNsYXNzPSJhY3RpdmUiCkBAIC0xMTgsNiArMTIwLDcgQEAKICAgICAgICAgICAgICAgICBBbGwgcHJvamVjdHMKICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgPGxpIGlkPSJuYXZiYXItZG9jcyI+CiAgICAgICAgICAgICAgIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9sYXRlc3QvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCI+CkBAIC0xMjYsNyArMTI5LDkgQEAKICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIHslIGlmIHByb2plY3RfZW5hYmxlICV9CiAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IG5hdmJhci1idG4gbmF2YmFyLXJpZ2h0IiBpZD0ibmV3LXByb2plY3QtYnV0dG9uIiBocmVmPSJ7JSB1cmwgJ25ld3Byb2plY3QnICV9Ij5OZXcgcHJvamVjdDwvYT4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgPC9kaXY+CiAgICAgICA8L2Rpdj4KICAgICA8L25hdj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0cGFnZS5odG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZXByb2plY3RwYWdlLmh0bWwKaW5kZXggODQyN2QyNS4uZjJiYjJlYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZXByb2plY3RwYWdlLmh0bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZXByb2plY3RwYWdlLmh0bWwKQEAgLTMyLDYgKzMyLDcgQEAKICAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3Rzb2Z0d2FyZXJlY2lwZXMnIHByb2plY3QuaWQgJX0iPlNvZnR3YXJlIHJlY2lwZXM8L2E+PC9saT4KICAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RtYWNoaW5lcycgcHJvamVjdC5pZCAlfSI+TWFjaGluZXM8L2E+PC9saT4KICAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RsYXllcnMnIHByb2plY3QuaWQgJX0iPkxheWVyczwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdGRpc3Ryb3MnIHByb2plY3QuaWQgJX0iPkRpc3Ryb3M8L2E+PC9saT4KICAgICAgIDxsaSBjbGFzcz0ibmF2LWhlYWRlciI+RXh0cmEgY29uZmlndXJhdGlvbjwvbGk+CiAgICAgICA8bGk+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0Y29uZicgcHJvamVjdC5pZCAlfSI+Qml0QmFrZSB2YXJpYWJsZXM8L2E+PC9saT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvZGlzdHJvX2J0bi5odG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvZGlzdHJvX2J0bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYzc5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9kaXN0cm9fYnRuLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0JyBleHRyYS5waWQgJX0/c2V0RGlzdHJvPXt7ZGF0YS5uYW1lfX0iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLWJsb2NrIGxheWVyLWV4aXN0cy17e2RhdGEubGF5ZXJfdmVyc2lvbi5pZH19IgorICAgIHslIGlmIGRhdGEubGF5ZXJfdmVyc2lvbi5wayBub3QgaW4gZXh0cmEuY3VycmVudF9sYXllcnMgJX0KKyAgICBzdHlsZT0iZGlzcGxheTpub25lOyIKKyAgICB7JSBlbmRpZiAlfT4KKyAgU2V0IGRpc3RybzwvYT4KKzxhIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLWJsb2NrIGxheWVyYnRuIGxheWVyLWFkZC17e2RhdGEubGF5ZXJfdmVyc2lvbi5pZH19IiBkYXRhLWxheWVyPSd7CisgICAgImlkIjoge3tkYXRhLmxheWVyX3ZlcnNpb24uaWR9fSwKKyAgICAibmFtZSI6ICAie3tkYXRhLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZX19IiwKKyAgICAieGhyTGF5ZXJVcmwiOiAieyUgdXJsICJ4aHJfbGF5ZXIiIGV4dHJhLnBpZCBkYXRhLnBrICV9IiwKKyAgICAibGF5ZXJkZXRhaWx1cmwiOiAieyV1cmwgJ2xheWVyZGV0YWlscycgZXh0cmEucGlkIGRhdGEubGF5ZXJfdmVyc2lvbi5pZCAlfSIKKyAgICB9JyBkYXRhLWRpcmVjdGl2ZT0iYWRkIgorICAgIHslIGlmIGRhdGEubGF5ZXJfdmVyc2lvbi5wayBpbiBleHRyYS5jdXJyZW50X2xheWVycyAlfQorICAgIHN0eWxlPSJkaXNwbGF5Om5vbmU7IgorICAgIHslIGVuZGlmICV9Cis+CisgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXBsdXMiPjwvc3Bhbj4KKyAgQWRkIGxheWVyCisgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gZ2V0LWhlbHAiIHRpdGxlPSJUbyBzZWxlY3QgdGhpcyBkaXN0cm8sIHlvdSBtdXN0IGZpcnN0IGFkZCB0aGUge3tkYXRhLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZX19IGxheWVyIHRvIHlvdXIgcHJvamVjdCI+PC9pPgorPC9hPgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9oZWFsdGguaHRtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2hlYWx0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxN2ZkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9oZWFsdGguaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorICA8aGVhZD48dGl0bGU+VG9hc3RlciBIZWFsdGg8L3RpdGxlPjwvaGVhZD4KKyAgPGJvZHk+T2s8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xhbmRpbmcuaHRtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xhbmRpbmcuaHRtbAppbmRleCA0OTg2NjMyLi43MGM3MzU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9sYW5kaW5nLmh0bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbGFuZGluZy5odG1sCkBAIC0xNCwxMiArMTQsMjAgQEAKIAogICAgICAgICAgICAgICA8cD5BIHdlYiBpbnRlcmZhY2UgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnIj5PcGVuRW1iZWRkZWQ8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvdG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL2JpdGJha2UiPkJpdEJha2U8L2E+LCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnIj5Zb2N0byBQcm9qZWN0PC9hPiBidWlsZCBzeXN0ZW0uPC9wPgogCisJCSAgICAgICAgICA8cCBjbGFzcz0idG9wLWFpciI+CisJCSAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLWluZm8gYnRuLWxnIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9sYXRlc3QvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCN0b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlIj4KKwkJCSAgICAgICAgICAgIFRvYXN0ZXIgaXMgcmVhZHkgdG8gY2FwdHVyZSB5b3VyIGNvbW1hbmQgbGluZSBidWlsZHMKKwkJICAgICAgICAgICAgPC9hPgorCQkgICAgICAgICAgPC9wPgorCiAJCSAgICAgICAgICB7JSBpZiBsdnNfbm9zICV9CisgICAgICAgICAgICAgICAgICAgIHslIGlmIHByb2plY3RfZW5hYmxlICV9CiAJCSAgICAgICAgICAgIDxwIGNsYXNzPSJ0b3AtYWlyIj4KIAkJICAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGJ0bi1sZyIgaHJlZj0ieyUgdXJsICduZXdwcm9qZWN0JyAlfSI+Ci0JCQkgICAgICAgICAgICAgIFRvIHN0YXJ0IGJ1aWxkaW5nLCBjcmVhdGUgeW91ciBmaXJzdCBUb2FzdGVyIHByb2plY3QKKwkJCSAgICAgICAgICAgICAgQ3JlYXRlIHlvdXIgZmlyc3QgVG9hc3RlciBwcm9qZWN0IHRvIHJ1biBtYW5hZ2UgYnVpbGRzCiAJCSAgICAgICAgICAgICAgPC9hPgogCQkgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAJCSAgICAgICAgICB7JSBlbHNlICV9CiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyBsZWFkIHRvcC1haXIiPgogICAgICAgICAgICAgICAgICAgVG9hc3RlciBoYXMgbm8gbGF5ZXIgaW5mb3JtYXRpb24uIFdpdGhvdXQgbGF5ZXIgaW5mb3JtYXRpb24sIHlvdSBjYW5ub3QgcnVuIGJ1aWxkcy4gVG8gZ2VuZXJhdGUgbGF5ZXIgaW5mb3JtYXRpb24geW91IGNhbjoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL21yYl9zZWN0aW9uLmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9tcmJfc2VjdGlvbi5odG1sCmluZGV4IGI3NjFmZmUuLmM1YjlmZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL21yYl9zZWN0aW9uLmh0bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbXJiX3NlY3Rpb24uaHRtbApAQCAtNjQsNyArNjQsOSBAQAogICA8L2Rpdj4KIAogICA8ZGl2IGRhdGEtYnVpbGQtc3RhdGU9IjwlOnN0YXRlJT4iPgotICAgIDwlaWYgc3RhdGUgPT0gJ1BhcnNpbmcnJT4KKyAgICA8JWlmIHN0YXRlID09ICdDbG9uaW5nJyU+CisgICAgICA8JWluY2x1ZGUgdG1wbD0nI2Nsb25pbmctcmVwb3MtYnVpbGQtdGVtcGxhdGUnLyU+CisgICAgPCVlbHNlIHN0YXRlID09ICdQYXJzaW5nJyU+CiAgICAgICA8JWluY2x1ZGUgdG1wbD0nI3BhcnNpbmctcmVjaXBlcy1idWlsZC10ZW1wbGF0ZScvJT4KICAgICA8JWVsc2Ugc3RhdGUgPT0gJ1F1ZXVlZCclPgogICAgICAgPCVpbmNsdWRlIHRtcGw9JyNxdWV1ZWQtYnVpbGQtdGVtcGxhdGUnLyU+CkBAIC05OCw2ICsxMDAsMzEgQEAKICAgPC9kaXY+CiA8L3NjcmlwdD4KIAorPCEtLSBjbG9uaW5nIHJlcG9zIGJ1aWxkIC0tPgorPHNjcmlwdCBpZD0iY2xvbmluZy1yZXBvcy1idWlsZC10ZW1wbGF0ZSIgdHlwZT0idGV4dC94LWpzcmVuZGVyIj4KKyAgPCEtLSBwcm9ncmVzcyBiYXIgYW5kIHBhcnNlIGNvbXBsZXRpb24gcGVyY2VudGFnZSAtLT4KKyAgPGRpdiBkYXRhLXJvbGU9ImJ1aWxkLXN0YXR1cyIgY2xhc3M9ImNvbC1tZC00IGNvbC1tZC1vZmZzZXQtMSBwcm9ncmVzcy1pbmZvIj4KKyAgICA8IS0tIHByb2dyZXNzIGJhciAtLT4KKyAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CisgICAgICA8ZGl2IGlkPSJyZXBvcy1jbG9uZWQtcGVyY2VudGFnZS1iYXItPCU6aWQlPiIKKyAgICAgICAgICAgc3R5bGU9IndpZHRoOiA8JTpyZXBvc19jbG9uZWRfcGVyY2VudGFnZSU+JTsiCisgICAgICAgICAgIGNsYXNzPSJwcm9ncmVzcy1iYXIiPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgY2xhc3M9ImNvbC1tZC00IHByb2dyZXNzLWluZm8iPgorICAgIDwhLS0gcGFyc2UgY29tcGxldGlvbiBwZXJjZW50YWdlIC0tPgorICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gZ2V0LWhlbHAgZ2V0LWhlbHAtYmx1ZSIKKyAgICAgICAgICB0aXRsZT0iVG9hc3RlciBpcyBjbG9uaW5nIHRoZSByZXBvcyByZXF1aXJlZCBmb3IgeW91ciBidWlsZCI+CisgICAgPC9zcGFuPgorCisgICAgQ2xvbmluZyA8c3BhbiBpZD0icmVwb3MtY2xvbmVkLXBlcmNlbnRhZ2UtPCU6aWQlPiI+PCU6cmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UlPjwvc3Bhbj4lIGNvbXBsZXRlCisKKyAgICA8JWluY2x1ZGUgdG1wbD0nI2NhbmNlbC10ZW1wbGF0ZScvJT4KKyAgPC9kaXY+Cis8L3NjcmlwdD4KKwogPCEtLSBwYXJzaW5nIHJlY2lwZXMgYnVpbGQgLS0+CiA8c2NyaXB0IGlkPSJwYXJzaW5nLXJlY2lwZXMtYnVpbGQtdGVtcGxhdGUiIHR5cGU9InRleHQveC1qc3JlbmRlciI+CiAgIDwhLS0gcHJvZ3Jlc3MgYmFyIGFuZCBwYXJzZSBjb21wbGV0aW9uIHBlcmNlbnRhZ2UgLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Lmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Lmh0bWwKaW5kZXggYWI3ZTY2NS4uMTE2MDNkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdC5odG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL3Byb2plY3QuaHRtbApAQCAtNzcsNiArNzcsMjIgQEAKICAgICAgIDwvZm9ybT4KICAgICA8L2Rpdj4KIAorICAgIDxkaXYgY2xhc3M9IndlbGwgd2VsbC10cmFuc3BhcmVudCIgaWQ9ImRpc3Ryby1zZWN0aW9uIj4KKyAgICAgIDxoMz5EaXN0cm88L2gzPgorCisgICAgICA8cCBjbGFzcz0ibGVhZCI+PHNwYW4gaWQ9InByb2plY3QtZGlzdHJvLW5hbWUiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZWRpdCIgaWQ9ImNoYW5nZS1kaXN0cm8tdG9nZ2xlIj48L3NwYW4+PC9wPgorCisgICAgICA8Zm9ybSBpZD0ic2VsZWN0LWRpc3Ryby1mb3JtIiBzdHlsZT0iZGlzcGxheTpub25lOyIgY2xhc3M9ImZvcm0taW5saW5lIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtYmxvY2siPkRpc3RybyBzdWdnZXN0aW9ucyBjb21lIGZyb20gdGhlIExheWVyIEluZGV4PC9hPjwvc3Bhbj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CisgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJkaXN0cm8tY2hhbmdlLWlucHV0IiBhdXRvY29tcGxldGU9Im9mZiIgdmFsdWU9IiIgZGF0YS1wcm92aWRlPSJ0eXBlYWhlYWQiIGRhdGEtbWlubGVuZ3RoPSIxIiBkYXRhLWF1dG9jb21wbGV0ZT0ib2ZmIiB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxidXR0b24gaWQ9ImRpc3Ryby1jaGFuZ2UtYnRuIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJidXR0b24iPlNhdmU8L2J1dHRvbj4KKyAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImNhbmNlbC1kaXN0cm8tY2hhbmdlIiBjbGFzcz0iYnRuIGJ0bi1saW5rIj5DYW5jZWw8L2E+CisgICAgICAgIDxwIGNsYXNzPSJmb3JtLWxpbmsiPjxhIGhyZWY9InslIHVybCAncHJvamVjdGRpc3Ryb3MnIHByb2plY3QuaWQgJX0iPlZpZXcgY29tcGF0aWJsZSBkaXN0cm9zPC9hPjwvcD4KKyAgICAgIDwvZm9ybT4KKyAgICA8L2Rpdj4KKwogICAgIDxkaXYgY2xhc3M9IndlbGwgd2VsbC10cmFuc3BhcmVudCI+CiAgICAgICA8aDM+TW9zdCBidWlsdCByZWNpcGVzPC9oMz4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CmluZGV4IDU4YzY1MGYuLjVhYTBmOGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKQEAgLTEwMCw2ICsxMDAsMzYgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAogCitjbGFzcyBEaXN0cm9zVHlwZUFoZWFkKFRvYXN0ZXJUeXBlQWhlYWQpOgorICAgICIiIiBUeXBlYWhlYWQgZm9yIGFsbCB0aGUgZGlzdHJvcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvamVjdCdzCisgICAgY29uZmlndXJhdGlvbiAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKERpc3Ryb3NUeXBlQWhlYWQsIHNlbGYpLl9faW5pdF9fKCkKKworICAgIGRlZiBhcHBseV9zZWFyY2goc2VsZiwgc2VhcmNoX3Rlcm0sIHByaiwgcmVxdWVzdCk6CisgICAgICAgIGRpc3Ryb3MgPSBwcmouZ2V0X2F2YWlsYWJsZV9kaXN0cm9zKCkKKyAgICAgICAgZGlzdHJvcyA9IGRpc3Ryb3Mub3JkZXJfYnkoIm5hbWUiKQorCisgICAgICAgIHByaW1hcnlfcmVzdWx0cyA9IGRpc3Ryb3MuZmlsdGVyKG5hbWVfX2lzdGFydHN3aXRoPXNlYXJjaF90ZXJtKQorICAgICAgICBzZWNvbmRhcnlfcmVzdWx0cyA9IGRpc3Ryb3MuZmlsdGVyKG5hbWVfX2ljb250YWlucz1zZWFyY2hfdGVybSkuZXhjbHVkZShwa19faW49cHJpbWFyeV9yZXN1bHRzKQorICAgICAgICB0ZXJ0aWFyeV9yZXN1bHRzID0gZGlzdHJvcy5maWx0ZXIobGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWVfX2ljb250YWlucz1zZWFyY2hfdGVybSkuZXhjbHVkZShwa19faW49cHJpbWFyeV9yZXN1bHRzKS5leGNsdWRlKHBrX19pbj1zZWNvbmRhcnlfcmVzdWx0cykKKworICAgICAgICByZXN1bHRzID0gW10KKworICAgICAgICBmb3IgZGlzdHJvIGluIGxpc3QocHJpbWFyeV9yZXN1bHRzKSArIGxpc3Qoc2Vjb25kYXJ5X3Jlc3VsdHMpICsgbGlzdCh0ZXJ0aWFyeV9yZXN1bHRzKToKKworICAgICAgICAgICAgZGV0YWlsID0gIlsgJXMgXSIgJSAoZGlzdHJvLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZSkKKyAgICAgICAgICAgIG5lZWRlZF9maWVsZHMgPSB7CisgICAgICAgICAgICAgICAgJ2lkJyA6IGRpc3Ryby5waywKKyAgICAgICAgICAgICAgICAnbmFtZScgOiBkaXN0cm8ubmFtZSwKKyAgICAgICAgICAgICAgICAnZGV0YWlsJyA6IGRldGFpbCwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobmVlZGVkX2ZpZWxkcykKKworICAgICAgICByZXR1cm4gcmVzdWx0cworCisKIGNsYXNzIFJlY2lwZXNUeXBlQWhlYWQoVG9hc3RlclR5cGVBaGVhZCk6CiAgICAgIiIiIFR5cGVhaGVhZCBmb3IgYWxsIHRoZSByZWNpcGVzIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwcm9qZWN0J3MKICAgICBjb25maWd1cmF0aW9uICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CmluZGV4IGQ5MmYxOTAuLmUwN2IwZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKQEAgLTEsNyArMSw3IEBACiAjCiAjIEJpdEJha2UgVG9hc3RlciBJbXBsZW1lbnRhdGlvbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgICAgICAgIEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxMy0yMDE3ICAgIEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0xNiw3ICsxNiw3IEBACiAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKLWZyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgcGF0dGVybnMsIGluY2x1ZGUsIHVybAorZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKIGZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFJlZGlyZWN0VmlldywgVGVtcGxhdGVWaWV3CiAKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZUJhZFJlcXVlc3QKQEAgLTI1LDQ5ICsyNSw1MCBAQAogZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCB0eXBlYWhlYWRzCiBmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IGFwaQogZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCB3aWRnZXRzCitmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IHZpZXdzCiAKLXVybHBhdHRlcm5zID0gcGF0dGVybnMoJ3RvYXN0ZXJndWkudmlld3MnLAordXJscGF0dGVybnMgPSBbCiAgICAgICAgICMgbGFuZGluZyBwYWdlCi0gICAgICAgIHVybChyJ15sYW5kaW5nLyQnLCAnbGFuZGluZycsIG5hbWU9J2xhbmRpbmcnKSwKKyAgICAgICAgdXJsKHInXmxhbmRpbmcvJCcsIHZpZXdzLmxhbmRpbmcsIG5hbWU9J2xhbmRpbmcnKSwKIAogICAgICAgICB1cmwocideYnVpbGRzLyQnLAogICAgICAgICAgICAgdGFibGVzLkFsbEJ1aWxkc1RhYmxlLmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0iYnVpbGRzLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSdhbGwtYnVpbGRzJyksCiAKICAgICAgICAgIyBidWlsZCBpbmZvIG5hdmlnYXRpb24KLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspJCcsICdidWlsZGRhc2hib2FyZCcsIG5hbWU9ImJ1aWxkZGFzaGJvYXJkIiksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKSQnLCB2aWV3cy5idWlsZGRhc2hib2FyZCwgbmFtZT0iYnVpbGRkYXNoYm9hcmQiKSwKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3Rhc2tzLyQnLAogICAgICAgICAgICAgYnVpbGR0YWJsZXMuQnVpbGRUYXNrc1RhYmxlLmFzX3ZpZXcoCiAgICAgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0iYnVpbGRpbmZvLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSd0YXNrcycpLAogCi0gICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXNrLyg/UDx0YXNrX2lkPlxkKykkJywgJ3Rhc2snLCBuYW1lPSd0YXNrJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXNrLyg/UDx0YXNrX2lkPlxkKykkJywgdmlld3MudGFzaywgbmFtZT0ndGFzaycpLAogCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9yZWNpcGVzLyQnLAogICAgICAgICAgICAgYnVpbGR0YWJsZXMuQnVpbHRSZWNpcGVzVGFibGUuYXNfdmlldygKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9uYW1lPSJidWlsZGluZm8tdG9hc3RlcnRhYmxlLmh0bWwiKSwKICAgICAgICAgICAgIG5hbWU9J3JlY2lwZXMnKSwKIAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlLyg/UDxyZWNpcGVfaWQ+XGQrKS9hY3RpdmVfdGFiLyg/UDxhY3RpdmVfdGFiPlxkezF9KSQnLCAncmVjaXBlJywgbmFtZT0ncmVjaXBlJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9yZWNpcGUvKD9QPHJlY2lwZV9pZD5cZCspL2FjdGl2ZV90YWIvKD9QPGFjdGl2ZV90YWI+XGR7MX0pJCcsIHZpZXdzLnJlY2lwZSwgbmFtZT0ncmVjaXBlJyksCiAKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3JlY2lwZS8oP1A8cmVjaXBlX2lkPlxkKykkJywgJ3JlY2lwZScsIG5hbWU9J3JlY2lwZScpLAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlX3BhY2thZ2VzLyg/UDxyZWNpcGVfaWQ+XGQrKSQnLCAncmVjaXBlX3BhY2thZ2VzJywgbmFtZT0ncmVjaXBlX3BhY2thZ2VzJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9yZWNpcGUvKD9QPHJlY2lwZV9pZD5cZCspJCcsIHZpZXdzLnJlY2lwZSwgbmFtZT0ncmVjaXBlJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9yZWNpcGVfcGFja2FnZXMvKD9QPHJlY2lwZV9pZD5cZCspJCcsIHZpZXdzLnJlY2lwZV9wYWNrYWdlcywgbmFtZT0ncmVjaXBlX3BhY2thZ2VzJyksCiAKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3BhY2thZ2VzLyQnLAogICAgICAgICAgICAgYnVpbGR0YWJsZXMuQnVpbHRQYWNrYWdlc1RhYmxlLmFzX3ZpZXcoCiAgICAgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0iYnVpbGRpbmZvLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSdwYWNrYWdlcycpLAogCi0gICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9wYWNrYWdlLyg/UDxwYWNrYWdlX2lkPlxkKykkJywgJ3BhY2thZ2VfYnVpbHRfZGV0YWlsJywKKyAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3BhY2thZ2UvKD9QPHBhY2thZ2VfaWQ+XGQrKSQnLCB2aWV3cy5wYWNrYWdlX2J1aWx0X2RldGFpbCwKICAgICAgICAgICAgICAgICBuYW1lPSdwYWNrYWdlX2J1aWx0X2RldGFpbCcpLAogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcGFja2FnZV9idWlsdF9kZXBlbmRlbmNpZXMvKD9QPHBhY2thZ2VfaWQ+XGQrKSQnLAotICAgICAgICAgICAgJ3BhY2thZ2VfYnVpbHRfZGVwZW5kZW5jaWVzJywgbmFtZT0ncGFja2FnZV9idWlsdF9kZXBlbmRlbmNpZXMnKSwKKyAgICAgICAgICAgIHZpZXdzLnBhY2thZ2VfYnVpbHRfZGVwZW5kZW5jaWVzLCBuYW1lPSdwYWNrYWdlX2J1aWx0X2RlcGVuZGVuY2llcycpLAogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcGFja2FnZV9pbmNsdWRlZF9kZXRhaWwvKD9QPHRhcmdldF9pZD5cZCspLyg/UDxwYWNrYWdlX2lkPlxkKykkJywKLSAgICAgICAgICAgICdwYWNrYWdlX2luY2x1ZGVkX2RldGFpbCcsIG5hbWU9J3BhY2thZ2VfaW5jbHVkZWRfZGV0YWlsJyksCisgICAgICAgICAgICB2aWV3cy5wYWNrYWdlX2luY2x1ZGVkX2RldGFpbCwgbmFtZT0ncGFja2FnZV9pbmNsdWRlZF9kZXRhaWwnKSwKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3BhY2thZ2VfaW5jbHVkZWRfZGVwZW5kZW5jaWVzLyg/UDx0YXJnZXRfaWQ+XGQrKS8oP1A8cGFja2FnZV9pZD5cZCspJCcsCi0gICAgICAgICAgICAncGFja2FnZV9pbmNsdWRlZF9kZXBlbmRlbmNpZXMnLCBuYW1lPSdwYWNrYWdlX2luY2x1ZGVkX2RlcGVuZGVuY2llcycpLAorICAgICAgICAgICAgdmlld3MucGFja2FnZV9pbmNsdWRlZF9kZXBlbmRlbmNpZXMsIG5hbWU9J3BhY2thZ2VfaW5jbHVkZWRfZGVwZW5kZW5jaWVzJyksCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9wYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzLyg/UDx0YXJnZXRfaWQ+XGQrKS8oP1A8cGFja2FnZV9pZD5cZCspJCcsCi0gICAgICAgICAgICAncGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcycsIG5hbWU9J3BhY2thZ2VfaW5jbHVkZWRfcmV2ZXJzZV9kZXBlbmRlbmNpZXMnKSwKKyAgICAgICAgICAgIHZpZXdzLnBhY2thZ2VfaW5jbHVkZWRfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsIG5hbWU9J3BhY2thZ2VfaW5jbHVkZWRfcmV2ZXJzZV9kZXBlbmRlbmNpZXMnKSwKIAogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKSQnLAogICAgICAgICAgICAgYnVpbGR0YWJsZXMuSW5zdGFsbGVkUGFja2FnZXNUYWJsZS5hc192aWV3KApAQCAtNzUsMTEgKzc2LDExIEBACiAgICAgICAgICAgICBuYW1lPSd0YXJnZXQnKSwKIAogCi0gICAgICAgIHVybChyJ15kZW50cmllcy9idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXJnZXQvKD9QPHRhcmdldF9pZD5cZCspJCcsICd4aHJfZGlyaW5mbycsIG5hbWU9J2RpcmluZm9fYWpheCcpLAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKS9kaXJpbmZvJCcsICdkaXJpbmZvJywgbmFtZT0nZGlyaW5mbycpLAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKS9kaXJpbmZvX2ZpbGVwYXRoL18oP1A8ZmlsZV9wYXRoPig/Oi9bXi9cbl0rKSopJCcsICdkaXJpbmZvJywgbmFtZT0nZGlyaW5mb19maWxlcGF0aCcpLAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvY29uZmlndXJhdGlvbiQnLCAnY29uZmlndXJhdGlvbicsIG5hbWU9J2NvbmZpZ3VyYXRpb24nKSwKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL2NvbmZpZ3ZhcnMkJywgJ2NvbmZpZ3ZhcnMnLCBuYW1lPSdjb25maWd2YXJzJyksCisgICAgICAgIHVybChyJ15kZW50cmllcy9idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXJnZXQvKD9QPHRhcmdldF9pZD5cZCspJCcsIHZpZXdzLnhocl9kaXJpbmZvLCBuYW1lPSdkaXJpbmZvX2FqYXgnKSwKKyAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3RhcmdldC8oP1A8dGFyZ2V0X2lkPlxkKykvZGlyaW5mbyQnLCB2aWV3cy5kaXJpbmZvLCBuYW1lPSdkaXJpbmZvJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXJnZXQvKD9QPHRhcmdldF9pZD5cZCspL2RpcmluZm9fZmlsZXBhdGgvXyg/UDxmaWxlX3BhdGg+KD86L1teL1xuXSspKikkJywgdmlld3MuZGlyaW5mbywgbmFtZT0nZGlyaW5mb19maWxlcGF0aCcpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvY29uZmlndXJhdGlvbiQnLCB2aWV3cy5jb25maWd1cmF0aW9uLCBuYW1lPSdjb25maWd1cmF0aW9uJyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9jb25maWd2YXJzJCcsIHZpZXdzLmNvbmZpZ3ZhcnMsIG5hbWU9J2NvbmZpZ3ZhcnMnKSwKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL2J1aWxkdGltZSQnLAogICAgICAgICAgICAgYnVpbGR0YWJsZXMuQnVpbGRUaW1lVGFibGUuYXNfdmlldygKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9uYW1lPSJidWlsZGluZm8tdG9hc3RlcnRhYmxlLmh0bWwiKSwKQEAgLTk3LDI2ICs5OCwyNiBAQAogCiAgICAgICAgICMgaW1hZ2UgaW5mb3JtYXRpb24gZGlyCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXJnZXQvKD9QPHRhcmdldF9pZD5cZCspL3BhY2thZ2VmaWxlLyg/UDxwYWNrYWdlZmlsZV9pZD5cZCspJCcsCi0gICAgICAgICAgICAgJ2ltYWdlX2luZm9ybWF0aW9uX2RpcicsIG5hbWU9J2ltYWdlX2luZm9ybWF0aW9uX2RpcicpLAorICAgICAgICAgICAgIHZpZXdzLmltYWdlX2luZm9ybWF0aW9uX2RpciwgbmFtZT0naW1hZ2VfaW5mb3JtYXRpb25fZGlyJyksCiAKICAgICAgICAgIyBidWlsZCBkb3dubG9hZCBhcnRpZmFjdAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvYXJ0aWZhY3QvKD9QPGFydGlmYWN0X3R5cGU+XHcrKS9pZC8oP1A8YXJ0aWZhY3RfaWQ+XHcrKScsICdidWlsZF9hcnRpZmFjdCcsIG5hbWU9ImJ1aWxkX2FydGlmYWN0IiksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9hcnRpZmFjdC8oP1A8YXJ0aWZhY3RfdHlwZT5cdyspL2lkLyg/UDxhcnRpZmFjdF9pZD5cdyspJywgdmlld3MuYnVpbGRfYXJ0aWZhY3QsIG5hbWU9ImJ1aWxkX2FydGlmYWN0IiksCiAKICAgICAgICAgIyBwcm9qZWN0IFVSTHMKLSAgICAgICAgdXJsKHInXm5ld3Byb2plY3QvJCcsICduZXdwcm9qZWN0JywgbmFtZT0nbmV3cHJvamVjdCcpLAorICAgICAgICB1cmwocidebmV3cHJvamVjdC8kJywgdmlld3MubmV3cHJvamVjdCwgbmFtZT0nbmV3cHJvamVjdCcpLAogCiAgICAgICAgIHVybChyJ15wcm9qZWN0cy8kJywKICAgICAgICAgICAgIHRhYmxlcy5Qcm9qZWN0c1RhYmxlLmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0icHJvamVjdHMtdG9hc3RlcnRhYmxlLmh0bWwiKSwKICAgICAgICAgICAgIG5hbWU9J2FsbC1wcm9qZWN0cycpLAogCi0gICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS8kJywgJ3Byb2plY3QnLCBuYW1lPSdwcm9qZWN0JyksCi0gICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9jb25maWd1cmF0aW9uJCcsICdwcm9qZWN0Y29uZicsIG5hbWU9J3Byb2plY3Rjb25mJyksCisgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS8kJywgdmlld3MucHJvamVjdCwgbmFtZT0ncHJvamVjdCcpLAorICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvY29uZmlndXJhdGlvbiQnLCB2aWV3cy5wcm9qZWN0Y29uZiwgbmFtZT0ncHJvamVjdGNvbmYnKSwKICAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL2J1aWxkcy8kJywKICAgICAgICAgICAgIHRhYmxlcy5Qcm9qZWN0QnVpbGRzVGFibGUuYXNfdmlldyh0ZW1wbGF0ZV9uYW1lPSJwcm9qZWN0YnVpbGRzLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSdwcm9qZWN0YnVpbGRzJyksCiAKICAgICAgICAgIyB0aGUgaW1wb3J0IGxheWVyIGlzIGEgcHJvamVjdC1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5OwotICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvaW1wb3J0bGF5ZXIkJywgJ2ltcG9ydGxheWVyJywgbmFtZT0naW1wb3J0bGF5ZXInKSwKKyAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL2ltcG9ydGxheWVyJCcsIHZpZXdzLmltcG9ydGxheWVyLCBuYW1lPSdpbXBvcnRsYXllcicpLAogCiAgICAgICAgICMgdGhlIHRhYmxlIHBhZ2VzIHRoYXQgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBUb2FzdGVyVGFibGUgd2lkZ2V0CiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9tYWNoaW5lcy8kJywKQEAgLTE0Miw3ICsxNDMsNyBAQAogICAgICAgICAgICAgbmFtZT0icHJvamVjdGxheWVycyIpLAogCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9sYXllci8oP1A8bGF5ZXJpZD5cZCspJCcsCi0gICAgICAgICAgICAnbGF5ZXJkZXRhaWxzJywgbmFtZT0nbGF5ZXJkZXRhaWxzJyksCisgICAgICAgICAgICB2aWV3cy5sYXllcmRldGFpbHMsIG5hbWU9J2xheWVyZGV0YWlscycpLAogCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9sYXllci8oP1A8bGF5ZXJpZD5cZCspL3JlY2lwZXMvJCcsCiAgICAgICAgICAgICB0YWJsZXMuTGF5ZXJSZWNpcGVzVGFibGUuYXNfdmlldyh0ZW1wbGF0ZV9uYW1lPSJnZW5lcmljLXRvYXN0ZXJ0YWJsZS1wYWdlLmh0bWwiKSwKQEAgLTE1Nyw2ICsxNTgsMTEgQEAKICAgICAgICAgICAgIG5hbWU9dGFibGVzLkxheWVyTWFjaGluZXNUYWJsZS5fX25hbWVfXy5sb3dlcigpKSwKIAogCisgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9kaXN0cm9zLyQnLAorICAgICAgICAgICAgdGFibGVzLkRpc3Ryb3NUYWJsZS5hc192aWV3KHRlbXBsYXRlX25hbWU9ImdlbmVyaWMtdG9hc3RlcnRhYmxlLXBhZ2UuaHRtbCIpLAorICAgICAgICAgICAgbmFtZT0icHJvamVjdGRpc3Ryb3MiKSwKKworCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9jdXN0b21yZWNpcGUvKD9QPGN1c3RyZWNpcGVpZD5cZCspL3NlbGVjdHBhY2thZ2VzLyQnLAogICAgICAgICAgICAgdGFibGVzLlNlbGVjdFBhY2thZ2VzVGFibGUuYXNfdmlldygpLCBuYW1lPSJyZWNpcGVzZWxlY3RwYWNrYWdlcyIpLAogCkBAIC0xNjYsNyArMTcyLDcgQEAKICAgICAgICAgICAgIG5hbWU9ImN1c3RvbXJlY2lwZSIpLAogCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9jdXN0b21yZWNpcGUvKD9QPHJlY2lwZV9pZD5cZCspL2Rvd25sb2FkJCcsCi0gICAgICAgICAgICAnY3VzdG9tcmVjaXBlX2Rvd25sb2FkJywKKyAgICAgICAgICAgIHZpZXdzLmN1c3RvbXJlY2lwZV9kb3dubG9hZCwKICAgICAgICAgICAgIG5hbWU9ImN1c3RvbXJlY2lwZWRvd25sb2FkIiksCiAKICAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL3JlY2lwZS8oP1A8cmVjaXBlX2lkPlxkKykkJywKQEAgLTE4Niw5ICsxOTIsMTIgQEAKICAgICAgICAgICAgIHR5cGVhaGVhZHMuR2l0UmV2aXNpb25UeXBlQWhlYWQuYXNfdmlldygpLAogICAgICAgICAgICAgbmFtZT0neGhyX2dpdHJldnR5cGVhaGVhZCcpLAogCi0gICAgICAgIHVybChyJ154aHJfdGVzdHJlbGVhc2VjaGFuZ2UvKD9QPHBpZD5cZCspJCcsICd4aHJfdGVzdHJlbGVhc2VjaGFuZ2UnLAorICAgICAgICB1cmwocideeGhyX3R5cGVhaGVhZC8oP1A8cGlkPlxkKykvZGlzdHJvcyQnLAorICAgICAgICAgICAgdHlwZWFoZWFkcy5EaXN0cm9zVHlwZUFoZWFkLmFzX3ZpZXcoKSwgbmFtZT0neGhyX2Rpc3Ryb3N0eXBlYWhlYWQnKSwKKworICAgICAgICB1cmwocideeGhyX3Rlc3RyZWxlYXNlY2hhbmdlLyg/UDxwaWQ+XGQrKSQnLCB2aWV3cy54aHJfdGVzdHJlbGVhc2VjaGFuZ2UsCiAgICAgICAgICAgICBuYW1lPSd4aHJfdGVzdHJlbGVhc2VjaGFuZ2UnKSwKLSAgICAgICAgdXJsKHInXnhocl9jb25maWd2YXJlZGl0Lyg/UDxwaWQ+XGQrKSQnLCAneGhyX2NvbmZpZ3ZhcmVkaXQnLAorICAgICAgICB1cmwocideeGhyX2NvbmZpZ3ZhcmVkaXQvKD9QPHBpZD5cZCspJCcsIHZpZXdzLnhocl9jb25maWd2YXJlZGl0LAogICAgICAgICAgICAgbmFtZT0neGhyX2NvbmZpZ3ZhcmVkaXQnKSwKIAogICAgICAgICB1cmwocideeGhyX2xheWVyLyg/UDxwaWQ+XGQrKS8oP1A8bGF5ZXJ2ZXJzaW9uX2lkPlxkKykkJywKQEAgLTIwMCw3ICsyMDksNyBAQAogICAgICAgICAgICAgbmFtZT0neGhyX2xheWVyJyksCiAKICAgICAgICAgIyBKUyBVbml0IHRlc3RzCi0gICAgICAgIHVybChyJ15qcy11bml0LXRlc3RzLyQnLCAnanN1bml0dGVzdHMnLCBuYW1lPSdqcy11bml0LXRlc3RzJyksCisgICAgICAgIHVybChyJ15qcy11bml0LXRlc3RzLyQnLCB2aWV3cy5qc3VuaXR0ZXN0cywgbmFtZT0nanMtdW5pdC10ZXN0cycpLAogCiAgICAgICAgICMgaW1hZ2UgY3VzdG9taXNhdGlvbiBmdW5jdGlvbmFsaXR5CiAgICAgICAgIHVybChyJ154aHJfY3VzdG9tcmVjaXBlLyg/UDxyZWNpcGVfaWQ+XGQrKScKQEAgLTIzNSw2ICsyNDQsMTEgQEAKICAgICAgICAgdXJsKHInXm1vc3RyZWNlbnRidWlsZHMkJywgd2lkZ2V0cy5Nb3N0UmVjZW50QnVpbGRzVmlldy5hc192aWV3KCksCiAgICAgICAgICAgICBuYW1lPSdtb3N0X3JlY2VudF9idWlsZHMnKSwKIAotICAgICAgICAgICMgZGVmYXVsdCByZWRpcmVjdGlvbgorICAgICAgICAjIEpTT04gZGF0YSBmb3IgYWdncmVnYXRvcnMKKyAgICAgICAgdXJsKHInXmFwaS9idWlsZHMkJywgdmlld3MuanNvbl9idWlsZHMsIG5hbWU9J2pzb25fYnVpbGRzJyksCisgICAgICAgIHVybChyJ15hcGkvYnVpbGRpbmckJywgdmlld3MuanNvbl9idWlsZGluZywgbmFtZT0nanNvbl9idWlsZGluZycpLAorICAgICAgICB1cmwocideYXBpL2J1aWxkLyg/UDxidWlsZF9pZD5cZCspJCcsIHZpZXdzLmpzb25fYnVpbGQsIG5hbWU9J2pzb25fYnVpbGQnKSwKKworICAgICAgICAjIGRlZmF1bHQgcmVkaXJlY3Rpb24KICAgICAgICAgdXJsKHInXiQnLCBSZWRpcmVjdFZpZXcuYXNfdmlldyh1cmw9J2xhbmRpbmcnLCBwZXJtYW5lbnQ9VHJ1ZSkpLAotKQorXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKaW5kZXggNzVjNTkxMS4uMzRlZDJiMiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3ZpZXdzLnB5CkBAIC0zNSw3ICszNSw3IEBACiBmcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZSwgcmVzb2x2ZQogZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBNdWx0aXBsZU9iamVjdHNSZXR1cm5lZCwgT2JqZWN0RG9lc05vdEV4aXN0CiBmcm9tIGRqYW5nby5jb3JlLnBhZ2luYXRvciBpbXBvcnQgUGFnaW5hdG9yLCBFbXB0eVBhZ2UsIFBhZ2VOb3RBbkludGVnZXIKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZU5vdEZvdW5kCitmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VOb3RGb3VuZCwgSnNvblJlc3BvbnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVkZWx0YSwgZGF0ZXRpbWUKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGpzb24gYXMganNvbmZpbHRlcgpAQCAtNDksNiArNDksOCBAQAogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCiAKKyMgUHJvamVjdCBjcmVhdGlvbiBhbmQgbWFuYWdlZCBidWlsZCBlbmFibGUKK3Byb2plY3RfZW5hYmxlID0gKCcxJyA9PSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9CVUlMRFNFUlZFUicpKQogCiBjbGFzcyBNaW1lVHlwZUZpbmRlcihvYmplY3QpOgogICAgICMgc2V0dGluZyB0aGlzIHRvIEZhbHNlIGVuYWJsZXMgYWRkaXRpb25hbCBub24tc3RhbmRhcmQgbWltZXR5cGVzCkBAIC02NSw2ICs2NywxMiBAQAogICAgICAgICAgICAgZ3Vlc3NlZF90eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKICAgICAgICAgcmV0dXJuIGd1ZXNzZWRfdHlwZQogCisjIHNpbmdsZSBwb2ludCB0byBhZGQgZ2xvYmFsIHZhbHVlcyBpbnRvIHRoZSBjb250ZXh0IGJlZm9yZSByZW5kZXJpbmcKK2RlZiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCBwYWdlLCBjb250ZXh0KToKKyAgICBjb250ZXh0Wydwcm9qZWN0X2VuYWJsZSddID0gcHJvamVjdF9lbmFibGUKKyAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHBhZ2UsIGNvbnRleHQpCisKKwogIyBhbGwgbmV3IHNlc3Npb25zIHNob3VsZCBjb21lIHRocm91Z2ggdGhlIGxhbmRpbmcgcGFnZTsKICMgZGV0ZXJtaW5lIGluIHdoaWNoIG1vZGUgd2UgYXJlIHJ1bm5pbmcgaW4sIGFuZCByZWRpcmVjdCBhcHByb3ByaWF0ZWx5CiBkZWYgbGFuZGluZyhyZXF1ZXN0KToKQEAgLTg2LDcgKzk0LDcgQEAKIAogICAgIGNvbnRleHQgPSB7J2x2c19ub3MnIDogTGF5ZXJfVmVyc2lvbi5vYmplY3RzLmFsbCgpLmNvdW50KCl9CiAKLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICdsYW5kaW5nLmh0bWwnLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAnbGFuZGluZy5odG1sJywgY29udGV4dCkKIAogZGVmIG9ianRvanNvbihvYmopOgogICAgIGZyb20gZGphbmdvLmRiLm1vZGVscy5xdWVyeSBpbXBvcnQgUXVlcnlTZXQKQEAgLTI3Nyw3ICsyODUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIGludmFsaWQgKyBzdHIoZmllbGRfaW5wdXRfbGlzdCkKIAogICAgICAgICAjIENoZWNrIHdlIGFyZSBsb29raW5nIGZvciBhIHZhbGlkIGZpZWxkCi0gICAgICAgIHZhbGlkX2ZpZWxkcyA9IG1vZGVsLl9tZXRhLmdldF9hbGxfZmllbGRfbmFtZXMoKQorICAgICAgICB2YWxpZF9maWVsZHMgPSBbZi5uYW1lIGZvciBmIGluIG1vZGVsLl9tZXRhLmdldF9maWVsZHMoKV0KICAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkX2lucHV0X2xpc3RbMF0uc3BsaXQoQU5EX1ZBTFVFX1NFUEFSQVRPUik6CiAgICAgICAgICAgICBpZiBUcnVlIGluIFtmaWVsZC5zdGFydHN3aXRoKHgpIGZvciB4IGluIHZhbGlkX2ZpZWxkc106CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTQ1NywxMCArNDY1LDE1IEBACiAgICAgICAgIG5wa2cgPSAwCiAgICAgICAgIHBrZ3N6ID0gMAogICAgICAgICBwYWNrYWdlID0gTm9uZQotICAgICAgICBmb3IgcGFja2FnZSBpbiBQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbiA9IFt4LnBhY2thZ2VfaWQgZm9yIHggaW4gdC50YXJnZXRfaW5zdGFsbGVkX3BhY2thZ2Vfc2V0LmFsbCgpXSk6Ci0gICAgICAgICAgICBwa2dzeiA9IHBrZ3N6ICsgcGFja2FnZS5zaXplCi0gICAgICAgICAgICBpZiBwYWNrYWdlLmluc3RhbGxlZF9uYW1lOgotICAgICAgICAgICAgICAgIG5wa2cgPSBucGtnICsgMQorICAgICAgICAjIENodW5rIHRoZSBxdWVyeSB0byBhdm9pZCAidG9vIG1hbnkgU1FMIHZhcmlhYmxlcyIgZXJyb3IKKyAgICAgICAgcGFja2FnZV9zZXQgPSB0LnRhcmdldF9pbnN0YWxsZWRfcGFja2FnZV9zZXQuYWxsKCkKKyAgICAgICAgcGFja2FnZV9zZXRfbGVuID0gbGVuKHBhY2thZ2Vfc2V0KQorICAgICAgICBmb3IgcHNfc3RhcnQgaW4gcmFuZ2UoMCxwYWNrYWdlX3NldF9sZW4sNTAwKToKKyAgICAgICAgICAgIHBzX3N0b3AgPSBtaW4ocHNfc3RhcnQrNTAwLHBhY2thZ2Vfc2V0X2xlbikKKyAgICAgICAgICAgIGZvciBwYWNrYWdlIGluIFBhY2thZ2Uub2JqZWN0cy5maWx0ZXIoaWRfX2luID0gW3gucGFja2FnZV9pZCBmb3IgeCBpbiBwYWNrYWdlX3NldFtwc19zdGFydDpwc19zdG9wXV0pOgorICAgICAgICAgICAgICAgIHBrZ3N6ID0gcGtnc3ogKyBwYWNrYWdlLnNpemUKKyAgICAgICAgICAgICAgICBpZiBwYWNrYWdlLmluc3RhbGxlZF9uYW1lOgorICAgICAgICAgICAgICAgICAgICBucGtnID0gbnBrZyArIDEKICAgICAgICAgZWxlbVsnbnBrZyddID0gbnBrZwogICAgICAgICBlbGVtWydwa2dzeiddID0gcGtnc3oKICAgICAgICAgdGkgPSBUYXJnZXRfSW1hZ2VfRmlsZS5vYmplY3RzLmZpbHRlcih0YXJnZXRfaWQgPSB0LmlkKQpAQCAtNTE0LDcgKzUyNyw3IEBACiAgICAgICAgICAgICAncGFja2FnZWNvdW50JyAgICA6IHBhY2thZ2VDb3VudCwKICAgICAgICAgICAgICdsb2dtZXNzYWdlcycgICAgIDogbG9nbWVzc2FnZXMsCiAgICAgfQotICAgIHJldHVybiByZW5kZXIoIHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0ICkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIoIHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0ICkKIAogCiAKQEAgLTU4Niw3ICs1OTksNyBAQAogICAgICAgICAgICAgYnVpbGRfX2NvbXBsZXRlZF9vbl9fbHQ9dGFza19vYmplY3QuYnVpbGQuY29tcGxldGVkX29uKS5leGNsdWRlKAogICAgICAgICAgICAgb3JkZXJfX2lzbnVsbD1UcnVlKS5leGNsdWRlKG91dGNvbWU9VGFzay5PVVRDT01FX05BKS5vcmRlcl9ieSgnLWJ1aWxkX19jb21wbGV0ZWRfb24nKQogCi0gICAgcmV0dXJuIHJlbmRlciggcmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQgKQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlciggcmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQgKQogCiBkZWYgcmVjaXBlKHJlcXVlc3QsIGJ1aWxkX2lkLCByZWNpcGVfaWQsIGFjdGl2ZV90YWI9IjEiKToKICAgICB0ZW1wbGF0ZSA9ICJyZWNpcGUuaHRtbCIKQEAgLTYxMyw3ICs2MjYsNyBAQAogICAgICAgICAgICAgJ3BhY2thZ2VfY291bnQnIDogcGFja2FnZV9jb3VudCwKICAgICAgICAgICAgICd0YWJfc3RhdGVzJyA6IHRhYl9zdGF0ZXMsCiAgICAgfQotICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogCiBkZWYgcmVjaXBlX3BhY2thZ2VzKHJlcXVlc3QsIGJ1aWxkX2lkLCByZWNpcGVfaWQpOgogICAgIHRlbXBsYXRlID0gInJlY2lwZV9wYWNrYWdlcy5odG1sIgpAQCAtNjU4LDcgKzY3MSw3IEBACiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXQogICAgICAgIH0KLSAgICByZXNwb25zZSA9IHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXNwb25zZSA9IHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogICAgIF9zZXRfcGFyYW1ldGVyc192YWx1ZXMocGFnZXNpemUsIG9yZGVyYnksIHJlcXVlc3QpCiAgICAgcmV0dXJuIHJlc3BvbnNlCiAKQEAgLTc4MCw3ICs3OTMsNyBAQAogICAgICAgICAgICAgICAgICdkaXJfbGlzdCc6IGRpcl9saXN0LAogICAgICAgICAgICAgICAgICdmaWxlX3BhdGgnOiBmaWxlX3BhdGgsCiAgICAgICAgICAgICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogZGVmIF9maW5kX3Rhc2tfZGVwKHRhc2tfb2JqZWN0KToKICAgICB0ZGVwcyA9IFRhc2tfRGVwZW5kZW5jeS5vYmplY3RzLmZpbHRlcih0YXNrPXRhc2tfb2JqZWN0KS5maWx0ZXIoZGVwZW5kc19vbl9fb3JkZXJfX2d0PTApCkBAIC04MzIsNyArODQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkJzogYnVpbGQsCiAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0JzogYnVpbGQucHJvamVjdCwKICAgICAgICAgICAgICAgICAgICAgJ3RhcmdldHMnOiBUYXJnZXQub2JqZWN0cy5maWx0ZXIoYnVpbGQ9YnVpbGRfaWQpfSkKLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogCiBkZWYgY29uZmlndmFycyhyZXF1ZXN0LCBidWlsZF9pZCk6CkBAIC05MjEsNyArOTM0LDcgQEAKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgfQogCi0gICAgcmVzcG9uc2UgPSByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmVzcG9uc2UgPSB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCkBAIC05MzQsNyArOTQ3LDcgQEAKICAgICAgICAgJ3Byb2plY3QnOiBidWlsZC5wcm9qZWN0LAogICAgICAgICAnb2JqZWN0cycgOiBmaWxlcwogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogCiAjIEEgc2V0IG9mIGRlcGVuZGVuY3kgdHlwZXMgdmFsaWQgZm9yIGJvdGggaW5jbHVkZWQgYW5kIGJ1aWx0IHBhY2thZ2Ugdmlld3MKQEAgLTEwODcsNyArMTEwMCw3IEBACiAgICAgaWYgcGF0aHMuYWxsKCkuY291bnQoKSA8IDI6CiAgICAgICAgIGNvbnRleHRbJ2Rpc2FibGVfc29ydCddID0gVHJ1ZTsKIAotICAgIHJlc3BvbnNlID0gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJlc3BvbnNlID0gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAgICAgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCkKICAgICByZXR1cm4gcmVzcG9uc2UKIApAQCAtMTEwNiw3ICsxMTE5LDcgQEAKICAgICAgICAgICAgICdvdGhlcl9kZXBzJyA6ICAgZGVwZW5kZW5jaWVzWydvdGhlcl9kZXBzJ10sCiAgICAgICAgICAgICAnZGVwZW5kZW5jeV9jb3VudCcgOiBfZ2V0X3BhY2thZ2VfZGVwZW5kZW5jeV9jb3VudChwYWNrYWdlLCAtMSwgIEZhbHNlKQogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogCiBkZWYgcGFja2FnZV9pbmNsdWRlZF9kZXRhaWwocmVxdWVzdCwgYnVpbGRfaWQsIHRhcmdldF9pZCwgcGFja2FnZV9pZCk6CkBAIC0xMTUyLDcgKzExNjUsNyBAQAogICAgIH0KICAgICBpZiBwYXRocy5hbGwoKS5jb3VudCgpIDwgMjoKICAgICAgICAgY29udGV4dFsnZGlzYWJsZV9zb3J0J10gPSBUcnVlCi0gICAgcmVzcG9uc2UgPSByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmVzcG9uc2UgPSB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCkBAIC0xMTc2LDcgKzExODksNyBAQAogICAgICAgICAgICAgJ3JldmVyc2VfY291bnQnIDogX2dldF9wYWNrYWdlX3JldmVyc2VfZGVwX2NvdW50KHBhY2thZ2UsIHRhcmdldF9pZCksCiAgICAgICAgICAgICAnZGVwZW5kZW5jeV9jb3VudCcgOiBfZ2V0X3BhY2thZ2VfZGVwZW5kZW5jeV9jb3VudChwYWNrYWdlLCB0YXJnZXRfaWQsIFRydWUpCiAgICAgfQotICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogCiBkZWYgcGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcyhyZXF1ZXN0LCBidWlsZF9pZCwgdGFyZ2V0X2lkLCBwYWNrYWdlX2lkKToKICAgICB0ZW1wbGF0ZSA9ICJwYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzLmh0bWwiCkBAIC0xMjI3LDcgKzEyNDAsNyBAQAogICAgIH0KICAgICBpZiBvYmplY3RzLmFsbCgpLmNvdW50KCkgPCAyOgogICAgICAgICBjb250ZXh0WydkaXNhYmxlX3NvcnQnXSA9IFRydWUKLSAgICByZXNwb25zZSA9IHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXNwb25zZSA9IHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogICAgIF9zZXRfcGFyYW1ldGVyc192YWx1ZXMocGFnZXNpemUsIG9yZGVyYnksIHJlcXVlc3QpCiAgICAgcmV0dXJuIHJlc3BvbnNlCiAKQEAgLTEyNTEsNiArMTI2NCw4OSBAQAogICAgIH0KICAgICByZXR1cm4gcmV0CiAKKyMgUkVTVC1iYXNlZCBBUEkgY2FsbHMgdG8gcmV0dXJuIGJ1aWxkL2J1aWxkaW5nIHN0YXR1cyB0byBleHRlcm5hbCBUb2FzdGVyCisjIG1hbmFnZXJzIGFuZCBhZ2dyZWdhdG9ycyB2aWEgSlNPTgorCitkZWYgX2pzb25fYnVpbGRfc3RhdHVzKGJ1aWxkX2lkLGV4dGVuZCk6CisgICAgYnVpbGRfc3RhdCA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGJ1aWxkID0gQnVpbGQub2JqZWN0cy5nZXQoIHBrID0gYnVpbGRfaWQgKQorICAgICAgICBidWlsZF9zdGF0ID0ge30KKyAgICAgICAgYnVpbGRfc3RhdFsnaWQnXSA9IGJ1aWxkLmlkCisgICAgICAgIGJ1aWxkX3N0YXRbJ25hbWUnXSA9IGJ1aWxkLmJ1aWxkX25hbWUKKyAgICAgICAgYnVpbGRfc3RhdFsnbWFjaGluZSddID0gYnVpbGQubWFjaGluZQorICAgICAgICBidWlsZF9zdGF0WydkaXN0cm8nXSA9IGJ1aWxkLmRpc3RybworICAgICAgICBidWlsZF9zdGF0WydzdGFydCddID0gYnVpbGQuc3RhcnRlZF9vbgorICAgICAgICAjIGxvb2sgdXAgdGFyZ2V0IG5hbWUKKyAgICAgICAgdGFyZ2V0PSBUYXJnZXQub2JqZWN0cy5nZXQoIGJ1aWxkID0gYnVpbGQgKQorICAgICAgICBpZiB0YXJnZXQ6CisgICAgICAgICAgICBpZiB0YXJnZXQudGFzazoKKyAgICAgICAgICAgICAgICBidWlsZF9zdGF0Wyd0YXJnZXQnXSA9ICclczolcycgJSAodGFyZ2V0LnRhcmdldCx0YXJnZXQudGFzaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnVpbGRfc3RhdFsndGFyZ2V0J10gPSAnJXMnICUgKHRhcmdldC50YXJnZXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsZF9zdGF0Wyd0YXJnZXQnXSA9ICcnCisgICAgICAgICMgbG9vayB1cCBwcm9qZWN0IG5hbWUKKyAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQoIGJ1aWxkID0gYnVpbGQgKQorICAgICAgICBpZiBwcm9qZWN0OgorICAgICAgICAgICAgYnVpbGRfc3RhdFsncHJvamVjdCddID0gcHJvamVjdC5uYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsZF9zdGF0Wydwcm9qZWN0J10gPSAnJworICAgICAgICBpZiBCdWlsZC5JTl9QUk9HUkVTUyA9PSBidWlsZC5vdXRjb21lOgorICAgICAgICAgICAgbm93ID0gdGltZXpvbmUubm93KCkKKyAgICAgICAgICAgIHRpbWVkaWZmID0gbm93IC0gYnVpbGQuc3RhcnRlZF9vbgorICAgICAgICAgICAgYnVpbGRfc3RhdFsnc2Vjb25kcyddPSclLjNmJyAlIHRpbWVkaWZmLnRvdGFsX3NlY29uZHMoKQorICAgICAgICAgICAgYnVpbGRfc3RhdFsnY2xvbmUnXT0nJWQ6JWQnICUgKGJ1aWxkLnJlcG9zX2Nsb25lZCxidWlsZC5yZXBvc190b19jbG9uZSkKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3BhcnNlJ109JyVkOiVkJyAlIChidWlsZC5yZWNpcGVzX3BhcnNlZCxidWlsZC5yZWNpcGVzX3RvX3BhcnNlKQorICAgICAgICAgICAgdGYgPSBUYXNrLm9iamVjdHMuZmlsdGVyKGJ1aWxkID0gYnVpbGQpCisgICAgICAgICAgICB0ZmMgPSB0Zi5jb3VudCgpCisgICAgICAgICAgICBpZiB0ZmMgPiAwOgorICAgICAgICAgICAgICAgIHRmZCA9IHRmLmV4Y2x1ZGUob3JkZXJfX2lzbnVsbD1UcnVlKS5jb3VudCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRmZCA9IDAKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3Rhc2snXT0nJWQ6JWQnICUgKHRmZCx0ZmMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsZF9zdGF0WydvdXRjb21lJ10gPSBidWlsZC5nZXRfb3V0Y29tZV90ZXh0KCkKKyAgICAgICAgICAgIHRpbWVkaWZmID0gYnVpbGQuY29tcGxldGVkX29uIC0gYnVpbGQuc3RhcnRlZF9vbgorICAgICAgICAgICAgYnVpbGRfc3RhdFsnc2Vjb25kcyddPSclLjNmJyAlIHRpbWVkaWZmLnRvdGFsX3NlY29uZHMoKQorICAgICAgICAgICAgYnVpbGRfc3RhdFsnc3RvcCddID0gYnVpbGQuY29tcGxldGVkX29uCisgICAgICAgICAgICBtZXNzYWdlcyA9IExvZ01lc3NhZ2Uub2JqZWN0cy5hbGwoKS5maWx0ZXIoYnVpbGQgPSBidWlsZCkKKyAgICAgICAgICAgIGVycm9ycyA9IGxlbihtZXNzYWdlcy5maWx0ZXIobGV2ZWw9TG9nTWVzc2FnZS5FUlJPUikgfAorICAgICAgICAgICAgICAgICBtZXNzYWdlcy5maWx0ZXIobGV2ZWw9TG9nTWVzc2FnZS5FWENFUFRJT04pIHwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZXMuZmlsdGVyKGxldmVsPUxvZ01lc3NhZ2UuQ1JJVElDQUwpKQorICAgICAgICAgICAgYnVpbGRfc3RhdFsnZXJyb3JzJ10gPSBlcnJvcnMKKyAgICAgICAgICAgIHdhcm5pbmdzID0gbGVuKG1lc3NhZ2VzLmZpbHRlcihsZXZlbD1Mb2dNZXNzYWdlLldBUk5JTkcpKQorICAgICAgICAgICAgYnVpbGRfc3RhdFsnd2FybmluZ3MnXSA9IHdhcm5pbmdzCisgICAgICAgIGlmIGV4dGVuZDoKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ2Nvb2tlcl9sb2cnXSA9IGJ1aWxkLmNvb2tlcl9sb2dfcGF0aAorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYnVpbGRfc3RhdGUgPSBzdHIoZSkKKyAgICByZXR1cm4gYnVpbGRfc3RhdAorCitkZWYganNvbl9idWlsZHMocmVxdWVzdCk6CisgICAgYnVpbGRfdGFibGUgPSBbXQorICAgIGJ1aWxkcyA9IFtdCisgICAgdHJ5OgorICAgICAgICBidWlsZHMgPSBCdWlsZC5vYmplY3RzLmV4Y2x1ZGUob3V0Y29tZT1CdWlsZC5JTl9QUk9HUkVTUykub3JkZXJfYnkoIi1zdGFydGVkX29uIikKKyAgICAgICAgZm9yIGJ1aWxkIGluIGJ1aWxkczoKKyAgICAgICAgICAgIGJ1aWxkX3RhYmxlLmFwcGVuZChfanNvbl9idWlsZF9zdGF0dXMoYnVpbGQuaWQsRmFsc2UpKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYnVpbGRfdGFibGUgPSBzdHIoZSkKKyAgICByZXR1cm4gSnNvblJlc3BvbnNlKHsnYnVpbGRzJyA6IGJ1aWxkX3RhYmxlLCAnY291bnQnIDogbGVuKGJ1aWxkcyl9KQorCitkZWYganNvbl9idWlsZGluZyhyZXF1ZXN0KToKKyAgICBidWlsZF90YWJsZSA9IFtdCisgICAgYnVpbGRzID0gW10KKyAgICB0cnk6CisgICAgICAgIGJ1aWxkcyA9IEJ1aWxkLm9iamVjdHMuZmlsdGVyKG91dGNvbWU9QnVpbGQuSU5fUFJPR1JFU1MpLm9yZGVyX2J5KCItc3RhcnRlZF9vbiIpCisgICAgICAgIGZvciBidWlsZCBpbiBidWlsZHM6CisgICAgICAgICAgICBidWlsZF90YWJsZS5hcHBlbmQoX2pzb25fYnVpbGRfc3RhdHVzKGJ1aWxkLmlkLEZhbHNlKSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJ1aWxkX3RhYmxlID0gc3RyKGUpCisgICAgcmV0dXJuIEpzb25SZXNwb25zZSh7J2J1aWxkaW5nJyA6IGJ1aWxkX3RhYmxlLCAnY291bnQnIDogbGVuKGJ1aWxkcyl9KQorCitkZWYganNvbl9idWlsZChyZXF1ZXN0LGJ1aWxkX2lkKToKKyAgICByZXR1cm4gSnNvblJlc3BvbnNlKHsnYnVpbGQnIDogX2pzb25fYnVpbGRfc3RhdHVzKGJ1aWxkX2lkLFRydWUpfSkKIAogCiBpbXBvcnQgdG9hc3Rlcm1haW4uc2V0dGluZ3MKQEAgLTEyNzcsNiArMTM3Myw5IEBACiAKICAgICAjIG5ldyBwcm9qZWN0CiAgICAgZGVmIG5ld3Byb2plY3QocmVxdWVzdCk6CisgICAgICAgIGlmIG5vdCBwcm9qZWN0X2VuYWJsZToKKyAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCggbGFuZGluZyApCisKICAgICAgICAgdGVtcGxhdGUgPSAibmV3cHJvamVjdC5odG1sIgogICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKQEAgLTEyOTEsNyArMTM5MCw3IEBACiAKICAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gIkdFVCI6CiAgICAgICAgICAgICAjIHJlbmRlciBuZXcgcHJvamVjdCBwYWdlCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogICAgICAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKICAgICAgICAgICAgIG1hbmRhdG9yeV9maWVsZHMgPSBbJ3Byb2plY3RuYW1lJywgJ3B0eXBlJ10KICAgICAgICAgICAgIHRyeToKQEAgLTEzMzEsNyArMTQzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbJ2FsZXJ0J10gPSAiWW91ciBjaG9zZW4gdXNlcm5hbWUgaXMgYWxyZWFkeSB1c2VkIgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbJ2FsZXJ0J10gPSBzdHIoZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogICAgICAgICByYWlzZSBFeGNlcHRpb24oIkludmFsaWQgSFRUUCBtZXRob2QgZm9yIHRoaXMgcGFnZSIpCiAKQEAgLTEzMzksNyArMTQzOCw3IEBACiAgICAgZGVmIHByb2plY3QocmVxdWVzdCwgcGlkKToKICAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9cGlkKQogICAgICAgICBjb250ZXh0ID0geyJwcm9qZWN0IjogcHJvamVjdH0KLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAicHJvamVjdC5odG1sIiwgY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJwcm9qZWN0Lmh0bWwiLCBjb250ZXh0KQogCiAgICAgZGVmIGpzdW5pdHRlc3RzKHJlcXVlc3QpOgogICAgICAgICAiIiIgUHJvdmlkZXMgYSBwYWdlIGZvciB0aGUganMgdW5pdCB0ZXN0cyAiIiIKQEAgLTEzNjUsNyArMTQ2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iTUFDSElORSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9InFlbXV4ODYiKQogICAgICAgICBjb250ZXh0ID0geydwcm9qZWN0JzogbmV3X3Byb2plY3R9Ci0gICAgICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgImpzLXVuaXQtdGVzdHMuaHRtbCIsIGNvbnRleHQpCisgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAianMtdW5pdC10ZXN0cy5odG1sIiwgY29udGV4dCkKIAogICAgIGZyb20gZGphbmdvLnZpZXdzLmRlY29yYXRvcnMuY3NyZiBpbXBvcnQgY3NyZl9leGVtcHQKICAgICBAY3NyZl9leGVtcHQKQEAgLTE1MDAsNyArMTU5OSw3IEBACiAgICAgICAgIGNvbnRleHQgPSB7CiAgICAgICAgICAgICAncHJvamVjdCc6IFByb2plY3Qub2JqZWN0cy5nZXQoaWQ9cGlkKSwKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKICAgICBkZWYgbGF5ZXJkZXRhaWxzKHJlcXVlc3QsIHBpZCwgbGF5ZXJpZCk6CiAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPXBpZCkKQEAgLTE1MjksNyArMTYyOCw3IEBACiAgICAgICAgICAgICAncHJvamVjdGxheWVycyc6IGxpc3QocHJvamVjdF9sYXllcnMpCiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICdsYXllcmRldGFpbHMuaHRtbCcsIGNvbnRleHQpCisgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAnbGF5ZXJkZXRhaWxzLmh0bWwnLCBjb250ZXh0KQogCiAKICAgICBkZWYgZ2V0X3Byb2plY3RfY29uZmlndmFyc19jb250ZXh0KCk6CkBAIC0xNjE5LDcgKzE3MTgsNyBAQAogICAgICAgICBleGNlcHQgKFByb2plY3RWYXJpYWJsZS5Eb2VzTm90RXhpc3QsIEJ1aWxkRW52aXJvbm1lbnQuRG9lc05vdEV4aXN0KToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICJwcm9qZWN0Y29uZi5odG1sIiwgY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJwcm9qZWN0Y29uZi5odG1sIiwgY29udGV4dCkKIAogICAgIGRlZiBfZmlsZV9uYW1lc19mb3JfYXJ0aWZhY3QoYnVpbGQsIGFydGlmYWN0X3R5cGUsIGFydGlmYWN0X2lkKToKICAgICAgICAgIiIiCkBAIC0xNjg2LDYgKzE3ODUsNyBAQAogCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgInVuYXZhaWxhYmxlX2FydGlmYWN0Lmh0bWwiKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAidW5hdmFpbGFibGVfYXJ0aWZhY3QuaHRtbCIpCiAgICAgICAgIGV4Y2VwdCAoT2JqZWN0RG9lc05vdEV4aXN0LCBJT0Vycm9yKToKLSAgICAgICAgICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgInVuYXZhaWxhYmxlX2FydGlmYWN0Lmh0bWwiKQorICAgICAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJ1bmF2YWlsYWJsZV9hcnRpZmFjdC5odG1sIikKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CmluZGV4IDZiN2I5ODEuLmExNzkyZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKQEAgLTQxLDYgKzQxLDcgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQoraW1wb3J0IG9zCiAKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXJNYXAKIApAQCAtODYsNiArODcsOSBAQAogICAgICAgICBjb250ZXh0Wyd0YWJsZV9uYW1lJ10gPSB0eXBlKHNlbGYpLl9fbmFtZV9fLmxvd2VyKCkKICAgICAgICAgY29udGV4dFsnZW1wdHlfc3RhdGUnXSA9IHNlbGYuZW1wdHlfc3RhdGUKIAorICAgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMKKyAgICAgICAgY29udGV4dFsncHJvamVjdF9lbmFibGUnXSA9ICgnMScgPT0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfQlVJTERTRVJWRVInKSkKKwogICAgICAgICByZXR1cm4gY29udGV4dAogCiAgICAgZGVmIGdldChzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOgpAQCAtNTExLDYgKzUxNSwxMCBAQAogICAgICAgICAgICAgICAgIGludCgoYnVpbGRfb2JqLnJlY2lwZXNfcGFyc2VkIC8KICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX29iai5yZWNpcGVzX3RvX3BhcnNlKSAqIDEwMCkKIAorICAgICAgICAgICAgYnVpbGRbJ3JlcG9zX2Nsb25lZF9wZXJjZW50YWdlJ10gPSBcCisgICAgICAgICAgICAgICAgaW50KChidWlsZF9vYmoucmVwb3NfY2xvbmVkIC8KKyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX29iai5yZXBvc190b19jbG9uZSkgKiAxMDApCisKICAgICAgICAgICAgIHRhc2tzX2NvbXBsZXRlX3BlcmNlbnRhZ2UgPSAwCiAgICAgICAgICAgICBpZiBidWlsZF9vYmoub3V0Y29tZSBpbiAoQnVpbGQuU1VDQ0VFREVELCBCdWlsZC5GQUlMRUQpOgogICAgICAgICAgICAgICAgIHRhc2tzX2NvbXBsZXRlX3BlcmNlbnRhZ2UgPSAxMDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQppbmRleCA4ZGZlZjBhLi43MGI1ODEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CkBAIC0xLDEzICsxLDEzIEBACi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgTm9BcmdzQ29tbWFuZCwgQ29tbWFuZEVycm9yCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCdWlsZAogaW1wb3J0IG9zCiAKIAogCi1jbGFzcyBDb21tYW5kKE5vQXJnc0NvbW1hbmQpOgorY2xhc3MgQ29tbWFuZChCYXNlQ29tbWFuZCk6CiAgICAgYXJncyAgICA9ICIiCiAgICAgaGVscCAgICA9ICJMaXN0cyBjdXJyZW50IGJ1aWxkcyIKIAotICAgIGRlZiBoYW5kbGVfbm9hcmdzKHNlbGYsKipvcHRpb25zKToKKyAgICBkZWYgaGFuZGxlKHNlbGYsKipvcHRpb25zKToKICAgICAgICAgZm9yIGIgaW4gQnVpbGQub2JqZWN0cy5hbGwoKToKICAgICAgICAgICAgIHByaW50KCIlZDogJXMgJXMgJXMiICUgKGIucGssIGIubWFjaGluZSwgYi5kaXN0cm8sICIsIi5qb2luKFt4LnRhcmdldCBmb3IgeCBpbiBiLnRhcmdldF9zZXQuYWxsKCldKSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CmluZGV4IDFmZDY0OWMuLjEzNTQxZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CkBAIC0yNCw3ICsyNCw2IEBACiBpbXBvcnQgb3MKIAogREVCVUcgPSBUcnVlCi1URU1QTEFURV9ERUJVRyA9IERFQlVHCiAKICMgU2V0IHRvIFRydWUgdG8gc2VlIHRoZSBTUUwgcXVlcmllcyBpbiBjb25zb2xlCiBTUUxfREVCVUcgPSBGYWxzZQpAQCAtMTYxLDEyICsxNjAsNDcgQEAKICMgTWFrZSB0aGlzIHVuaXF1ZSwgYW5kIGRvbid0IHNoYXJlIGl0IHdpdGggYW55Ym9keS4KIFNFQ1JFVF9LRVkgPSAnTk9UX1NVSVRBQkxFX0ZPUl9IT1NURURfREVQTE9ZTUVOVCcKIAotIyBMaXN0IG9mIGNhbGxhYmxlcyB0aGF0IGtub3cgaG93IHRvIGltcG9ydCB0ZW1wbGF0ZXMgZnJvbSB2YXJpb3VzIHNvdXJjZXMuCi1URU1QTEFURV9MT0FERVJTID0gKAotICAgICdkamFuZ28udGVtcGxhdGUubG9hZGVycy5maWxlc3lzdGVtLkxvYWRlcicsCi0gICAgJ2RqYW5nby50ZW1wbGF0ZS5sb2FkZXJzLmFwcF9kaXJlY3Rvcmllcy5Mb2FkZXInLAotIyAgICAgJ2RqYW5nby50ZW1wbGF0ZS5sb2FkZXJzLmVnZ3MuTG9hZGVyJywKLSkKK2NsYXNzIEludmFsaWRTdHJpbmcoc3RyKToKKyAgICBkZWYgX19tb2RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGZyb20gZGphbmdvLnRlbXBsYXRlLmJhc2UgaW1wb3J0IFRlbXBsYXRlU3ludGF4RXJyb3IKKyAgICAgICAgcmFpc2UgVGVtcGxhdGVTeW50YXhFcnJvcigKKyAgICAgICAgICAgICJVbmRlZmluZWQgdmFyaWFibGUgb3IgdW5rbm93biB2YWx1ZSBmb3I6IFwiJXNcIiIgJSBvdGhlcikKKworVEVNUExBVEVTID0gWworICAgIHsKKyAgICAgICAgJ0JBQ0tFTkQnOiAnZGphbmdvLnRlbXBsYXRlLmJhY2tlbmRzLmRqYW5nby5EamFuZ29UZW1wbGF0ZXMnLAorICAgICAgICAnRElSUyc6IFsKKyAgICAgICAgICAgICMgUHV0IHN0cmluZ3MgaGVyZSwgbGlrZSAiL2hvbWUvaHRtbC9kamFuZ29fdGVtcGxhdGVzIiBvciAiQzovd3d3L2RqYW5nby90ZW1wbGF0ZXMiLgorICAgICAgICAgICAgIyBBbHdheXMgdXNlIGZvcndhcmQgc2xhc2hlcywgZXZlbiBvbiBXaW5kb3dzLgorICAgICAgICAgICAgIyBEb24ndCBmb3JnZXQgdG8gdXNlIGFic29sdXRlIHBhdGhzLCBub3QgcmVsYXRpdmUgcGF0aHMuCisgICAgICAgIF0sCisgICAgICAgICdPUFRJT05TJzogeworICAgICAgICAgICAgJ2NvbnRleHRfcHJvY2Vzc29ycyc6IFsKKyAgICAgICAgICAgICAgICAjIEluc2VydCB5b3VyIFRFTVBMQVRFX0NPTlRFWFRfUFJPQ0VTU09SUyBoZXJlIG9yIHVzZSB0aGlzCisgICAgICAgICAgICAgICAgIyBsaXN0IGlmIHlvdSBoYXZlbid0IGN1c3RvbWl6ZWQgdGhlbToKKyAgICAgICAgICAgICAgICAnZGphbmdvLmNvbnRyaWIuYXV0aC5jb250ZXh0X3Byb2Nlc3NvcnMuYXV0aCcsCisgICAgICAgICAgICAgICAgJ2RqYW5nby50ZW1wbGF0ZS5jb250ZXh0X3Byb2Nlc3NvcnMuZGVidWcnLAorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLmkxOG4nLAorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLm1lZGlhJywKKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmNvbnRleHRfcHJvY2Vzc29ycy5zdGF0aWMnLAorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLnR6JywKKyAgICAgICAgICAgICAgICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMuY29udGV4dF9wcm9jZXNzb3JzLm1lc3NhZ2VzJywKKyAgICAgICAgICAgICAgICAjIEN1c3RvbQorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLnJlcXVlc3QnLAorICAgICAgICAgICAgICAgICd0b2FzdGVyZ3VpLnZpZXdzLm1hbmFnZWRjb250ZXh0cHJvY2Vzc29yJywKKworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdsb2FkZXJzJzogWworICAgICAgICAgICAgICAgICMgTGlzdCBvZiBjYWxsYWJsZXMgdGhhdCBrbm93IGhvdyB0byBpbXBvcnQgdGVtcGxhdGVzIGZyb20gdmFyaW91cyBzb3VyY2VzLgorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUubG9hZGVycy5maWxlc3lzdGVtLkxvYWRlcicsCisgICAgICAgICAgICAgICAgJ2RqYW5nby50ZW1wbGF0ZS5sb2FkZXJzLmFwcF9kaXJlY3Rvcmllcy5Mb2FkZXInLAorICAgICAgICAgICAgICAgICMnZGphbmdvLnRlbXBsYXRlLmxvYWRlcnMuZWdncy5Mb2FkZXInLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdzdHJpbmdfaWZfaW52YWxpZCc6IEludmFsaWRTdHJpbmcoIiVzIiksCisgICAgICAgICAgICAnZGVidWcnOiBERUJVRywKKyAgICAgICAgfSwKKyAgICB9LAorXQogCiBNSURETEVXQVJFX0NMQVNTRVMgPSAoCiAgICAgJ2RqYW5nby5taWRkbGV3YXJlLmNvbW1vbi5Db21tb25NaWRkbGV3YXJlJywKQEAgLTIwMywyMiArMjM3LDYgQEAKICMgUHl0aG9uIGRvdHRlZCBwYXRoIHRvIHRoZSBXU0dJIGFwcGxpY2F0aW9uIHVzZWQgYnkgRGphbmdvJ3MgcnVuc2VydmVyLgogV1NHSV9BUFBMSUNBVElPTiA9ICd0b2FzdGVybWFpbi53c2dpLmFwcGxpY2F0aW9uJwogCi1URU1QTEFURV9ESVJTID0gKAotICAgICMgUHV0IHN0cmluZ3MgaGVyZSwgbGlrZSAiL2hvbWUvaHRtbC9kamFuZ29fdGVtcGxhdGVzIiBvciAiQzovd3d3L2RqYW5nby90ZW1wbGF0ZXMiLgotICAgICMgQWx3YXlzIHVzZSBmb3J3YXJkIHNsYXNoZXMsIGV2ZW4gb24gV2luZG93cy4KLSAgICAjIERvbid0IGZvcmdldCB0byB1c2UgYWJzb2x1dGUgcGF0aHMsIG5vdCByZWxhdGl2ZSBwYXRocy4KLSkKLQotVEVNUExBVEVfQ09OVEVYVF9QUk9DRVNTT1JTID0gKCdkamFuZ28uY29udHJpYi5hdXRoLmNvbnRleHRfcHJvY2Vzc29ycy5hdXRoJywKLSAnZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLmRlYnVnJywKLSAnZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLmkxOG4nLAotICdkamFuZ28uY29yZS5jb250ZXh0X3Byb2Nlc3NvcnMubWVkaWEnLAotICdkamFuZ28uY29yZS5jb250ZXh0X3Byb2Nlc3NvcnMuc3RhdGljJywKLSAnZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLnR6JywKLSAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMuY29udGV4dF9wcm9jZXNzb3JzLm1lc3NhZ2VzJywKLSAiZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLnJlcXVlc3QiLAotICd0b2FzdGVyZ3VpLnZpZXdzLm1hbmFnZWRjb250ZXh0cHJvY2Vzc29yJywKLSApCiAKIElOU1RBTExFRF9BUFBTID0gKAogICAgICdkamFuZ28uY29udHJpYi5hdXRoJywKQEAgLTM0OCwxMCArMzY2LDQgQEAKICMKIAogCi1jbGFzcyBJbnZhbGlkU3RyaW5nKHN0cik6Ci0gICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBmcm9tIGRqYW5nby50ZW1wbGF0ZS5iYXNlIGltcG9ydCBUZW1wbGF0ZVN5bnRheEVycm9yCi0gICAgICAgIHJhaXNlIFRlbXBsYXRlU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAiVW5kZWZpbmVkIHZhcmlhYmxlIG9yIHVua25vd24gdmFsdWUgZm9yOiBcIiVzXCIiICUgb3RoZXIpCiAKLVRFTVBMQVRFX1NUUklOR19JRl9JTlZBTElEID0gSW52YWxpZFN0cmluZygiJXMiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3VybHMucHkKaW5kZXggMWY4NTk5ZS4uZTJmYjBhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CkBAIC0xOSw5ICsxOSwxMCBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHBhdHRlcm5zLCBpbmNsdWRlLCB1cmwKLWZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFJlZGlyZWN0VmlldworZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKK2Zyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFJlZGlyZWN0VmlldywgVGVtcGxhdGVWaWV3CiBmcm9tIGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNhY2hlIGltcG9ydCBuZXZlcl9jYWNoZQoraW1wb3J0IGJsZGNvbGxlY3Rvci52aWV3cwogCiBpbXBvcnQgbG9nZ2luZwogCkBAIC0zMSw3ICszMiw3IEBACiBmcm9tIGRqYW5nby5jb250cmliIGltcG9ydCBhZG1pbgogYWRtaW4uYXV0b2Rpc2NvdmVyKCkKIAotdXJscGF0dGVybnMgPSBwYXR0ZXJucygnJywKK3VybHBhdHRlcm5zID0gWwogCiAgICAgIyBFeGFtcGxlczoKICAgICAjIHVybChyJ150b2FzdGVyLycsIGluY2x1ZGUoJ3RvYXN0ZXIuZm9vLnVybHMnKSksCkBAIC00MiwxMSArNDMsMTMgQEAKIAogICAgICMgVGhpcyBpcyBoZXJlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIHdpbGwgYmUgZGVwcmVjYXRlZAogICAgICMgaW4gdGhlIGZ1dHVyZS4KLSAgICB1cmwocideb3JtL2V2ZW50ZmlsZSQnLCAnYmxkY29sbGVjdG9yLnZpZXdzLmV2ZW50ZmlsZScpLAorICAgIHVybChyJ15vcm0vZXZlbnRmaWxlJCcsIGJsZGNvbGxlY3Rvci52aWV3cy5ldmVudGZpbGUpLAorCisgICAgdXJsKHInXmhlYWx0aCQnLCBUZW1wbGF0ZVZpZXcuYXNfdmlldyh0ZW1wbGF0ZV9uYW1lPSJoZWFsdGguaHRtbCIpLCBuYW1lPSdUb2FzdGVyIEhlYWx0aCcpLAogCiAgICAgIyBpZiBubyBhcHBsaWNhdGlvbiBpcyBzZWxlY3RlZCwgd2UgaGF2ZSB0aGUgbWFnaWMgdG9hc3Rlcmd1aSBhcHAgaGVyZQogICAgIHVybChyJ14kJywgbmV2ZXJfY2FjaGUoUmVkaXJlY3RWaWV3LmFzX3ZpZXcodXJsPScvdG9hc3Rlcmd1aS8nLCBwZXJtYW5lbnQ9VHJ1ZSkpKSwKLSkKK10KIAogaW1wb3J0IHRvYXN0ZXJtYWluLnNldHRpbmdzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dAppbmRleCBlNjFjOGUyLi5jMGVjMzY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0CkBAIC0xLDMgKzEsMyBAQAotRGphbmdvPjEuOCw8MS45CitEamFuZ28+MS44LDwxLjExLjkKIGJlYXV0aWZ1bHNvdXA0Pj00LjQuMAogcHl0egpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQppbmRleCA5MDc3YzgxLi45ODkxMDk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtOCw3ICs4LDcgQEAKICMgc3lzdGVtLiAgVGhlc2UgbWFudWFscyBhbHNvIGluY2x1ZGUgYW4gImVjbGlwc2UiIHN1Yi1kaXJlY3RvcnkgYXMgcGFydCBvZgogIyB0aGUgbWFrZSBwcm9jZXNzLgogIwotIyBOb3RlIHRoYXQgdGhlIGZpZ3VyZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbAorIyBOb3RlIHRoYXQgdGhlIGZpZ3VyZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAogIyBkaWZmZXIgZGVwZW5kaW5nIG9uIHRoZSBCUkFOQ0ggYmVpbmcgYnVpbHQuCiAjCiAjIFRoZSBNYWtlZmlsZSBoYXMgdGhlc2UgdGFyZ2V0czoKQEAgLTQyLDcgKzQyLDcgQEAKICMgVG8gYnVpbGQgYSBtYW51YWwsIHlvdSBtdXN0IGludm9rZSBNYWtlZmlsZSB3aXRoIHRoZSBET0MgYXJndW1lbnQuICBJZiB5b3UKICMgYXJlIGdvaW5nIHRvIHB1Ymxpc2ggdGhlIG1hbnVhbCwgdGhlbiB5b3UgbXVzdCBpbnZva2UgTWFrZWZpbGUgd2l0aCBib3RoIHRoZQogIyBET0MgYW5kIHRoZSBWRVIgYXJndW1lbnQuICBGdXJ0aGVybW9yZSwgaWYgeW91IGFyZSBidWlsZGluZyBvciBwdWJsaXNoaW5nCi0jIHRoZSBlZGlzb24gb3IgZGVuemlsIHZlcnNpb25zIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBvcgorIyB0aGUgZWRpc29uIG9yIGRlbnppbCB2ZXJzaW9ucyBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgb3IKICMgdGhlIG1lZ2EtbWFudWFsLCB5b3UgbXVzdCBhbHNvIHVzZSB0aGUgQlJBTkNIIGFyZ3VtZW50LgogIwogIyBFeGFtcGxlczoKQEAgLTU5LDcgKzU5LDcgQEAKICMgJ21ha2UgRE9DPXlvY3RvLXByb2plY3QtcXMnIGNvbW1hbmQgd291bGQgYmUgZXF1aXZhbGVudC4gVGhlIHRoaXJkIGV4YW1wbGUKICMgZ2VuZXJhdGVzIGp1c3QgdGhlIFBERiB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCiAjIFRoZSBmb3VydGggZXhhbXBsZSBnZW5lcmF0ZXMgdGhlIEhUTUwgJ2VkaXNvbicgdmVyc2lvbiBhbmQgKGlmIGF2YWlsYWJsZSkKLSMgdGhlIEVjbGlwc2UgaGVscCB2ZXJzaW9uIG9mIHRoZSBZUCBEZXZlbG9wbWVudCBNYW51YWwuICBUaGUgbGFzdCBleGFtcGxlCisjIHRoZSBFY2xpcHNlIGhlbHAgdmVyc2lvbiBvZiB0aGUgWVAgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLiAgVGhlIGxhc3QgZXhhbXBsZQogIyBnZW5lcmF0ZXMgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgbWVnYS1tYW51YWwgYW5kIHVzZXMgdGhlICdkZW56aWwnCiAjIGJyYW5jaCB3aGVuIGNob29zaW5nIGZpZ3VyZXMgZm9yIHRoZSB0YXJiYWxsIG9mIGZpZ3VyZXMuICBBbnkgZXhhbXBsZSB0aGF0IGRvZXMKICMgbm90IHVzZSB0aGUgQlJBTkNIIGFyZ3VtZW50IGJ1aWxkcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgc2V0LgpAQCAtNzksMTUgKzc5LDE2IEBACiAjIFRoZSBmaXJzdCBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS43IHZlcnNpb24gb2YgYm90aCB0aGUgUERGIGFuZCBIVE1MIHZlcnNpb25zIG9mCiAjIHRoZSBCU1AgR3VpZGUuICBUaGUgc2Vjb25kIGV4YW1wbGUgcHVibGlzaGVzIHRoZSAxLjYgdmVyc2lvbiBvZiBib3RoIHRoZSBQREYgYW5kCiAjIEhUTUwgdmVyc2lvbnMgb2YgdGhlIEFEVCBNYW51YWwuIFRoZSB0aGlyZCBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS4xLjEgdmVyc2lvbiBvZgotIyB0aGUgUERGIGFuZCBIVE1MIFlQIERldmVsb3BtZW50IE1hbnVhbCBmb3IgdGhlICdlZGlzb24nIGJyYW5jaC4gIFRoZSBmb3VydGggZXhhbXBsZQotIyBwdWJsaXNoZXMgdGhlIDEuMiB2ZXJzaW9uIG9mIHRoZSBQREYgYW5kIEhUTUwgWVAgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciB0aGUKLSMgJ2RlbnppbCcgYnJhbmNoLgorIyB0aGUgUERGIGFuZCBIVE1MIFlQIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgdGhlICdlZGlzb24nIGJyYW5jaC4gIFRoZSBmb3VydGgKKyMgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuMiB2ZXJzaW9uIG9mIHRoZSBQREYgYW5kIEhUTUwgWVAgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisjIGZvciB0aGUgJ2RlbnppbCcgYnJhbmNoLgogIwogCiBpZmVxICgkKERPQyksYnNwLWd1aWRlKQogWFNMVE9QVFMgPSAtLXhpbmNsdWRlCiBBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKIFRBUkZJTEVTID0gYnNwLXN0eWxlLmNzcyBic3AtZ3VpZGUuaHRtbCBmaWd1cmVzL2JzcC10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCiBGSUdVUkVTID0gZmlndXJlcwpAQCAtMTI4LDE0ICsxMjksOCBAQAogICAgICAgICAgICBmaWd1cmVzL3dpcC5wbmcKICAgICAgICAgZWxzZQogVEFSRklMRVMgPSBkZXYtc3R5bGUuY3NzIGRldi1tYW51YWwuaHRtbCBcCi0gICAgICAgICAgIGZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nIFwKLSAgICAgICAgICAgZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMS5wbmcgZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcgZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9kZXYtdGl0bGUucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBcCiAgICAgICAgICAgIGVjbGlwc2UKIAllbmRpZgogCkBAIC0xNDgsNyArMTQzLDcgQEAKIGlmZXEgKCQoRE9DKSx5b2N0by1wcm9qZWN0LXFzKQogWFNMVE9QVFMgPSAtLXhpbmNsdWRlCiBBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0geW9jdG8tcHJvamVjdC1xcy5odG1sIHFzLXN0eWxlLmNzcyBmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZyBcCitUQVJGSUxFUyA9IHlvY3RvLXByb2plY3QtcXMuaHRtbCBxcy1zdHlsZS5jc3MgXAogICAgICAgICAgICBmaWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZyBcCiAgICAgICAgICAgIGVjbGlwc2UKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKQEAgLTE5NSw4ICsxOTAsOCBAQAogCWZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCiAJZmlndXJlcy93aXAucG5nCiAgICAgICAgIGVsc2UKLVRBUkZJTEVTID0gbWVnYS1tYW51YWwuaHRtbCBtZWdhLXN0eWxlLmNzcyBmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZyBcCi0gICAgICAgIGZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nICBcCitUQVJGSUxFUyA9IG1lZ2EtbWFudWFsLmh0bWwgbWVnYS1zdHlsZS5jc3MgXAorICAgICAgICBmaWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAogCWZpZ3VyZXMvdXNpbmctYS1wcmUtYnVpbHQtaW1hZ2UucG5nIFwKIAlmaWd1cmVzL3Bva3ktdGl0bGUucG5nIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcgXApAQCAtMjA2LDcgKzIwMSw3IEBACiAgICAgICAgIGZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBcCiAJZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIGZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyBcCi0JZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMS5wbmcgZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyBcCisJZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyBcCiAJZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGZpZ3VyZXMveXAtZG93bmxvYWQucG5nIFwKICAgICAgICAgZmlndXJlcy9wcm9maWxlLXRpdGxlLnBuZyBmaWd1cmVzL2tlcm5lbHNoYXJrLWFsbC5wbmcgXAogICAgICAgICBmaWd1cmVzL2tlcm5lbHNoYXJrLWNob29zZS1ldmVudHMucG5nIFwKQEAgLTI0NCwxMyArMjM5LDEyIEBACiAJZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIFwKIAlmaWd1cmVzL2J1aWxkLXdvcmtzcGFjZS1kaXJlY3RvcnkucG5nIGZpZ3VyZXMvbWVnYS10aXRsZS5wbmcgXAogCWZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmcgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgXAotCWZpZ3VyZXMvc2ltcGxlLWNvbmZpZ3VyYXRpb24ucG5nIGZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcgXAotCWZpZ3VyZXMvZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcgZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgXAorCWZpZ3VyZXMvc2ltcGxlLWNvbmZpZ3VyYXRpb24ucG5nIFwKIAlmaWd1cmVzL2NvbXBhdGlibGUtbGF5ZXJzLnBuZyBmaWd1cmVzL2ltcG9ydC1sYXllci5wbmcgZmlndXJlcy9uZXctcHJvamVjdC5wbmcgXAogCWZpZ3VyZXMvc2RrLWVudmlyb25tZW50LnBuZyBmaWd1cmVzL3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS5wbmcgXAogCWZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1leHRlbnNpYmxlLXNkay1kaXJlY3RvcnkucG5nIFwKIAlmaWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBmaWd1cmVzL3Nkay1lY2xpcHNlLWRldi1mbG93LnBuZyBcCi0JZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nCisJZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZwogCWVuZGlmCiAKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKQEAgLTI2Miw3ICsyNTYsNyBAQAogaWZlcSAoJChET0MpLHJlZi1tYW51YWwpCiBYU0xUT1BUUyA9IC0teGluY2x1ZGUKIEFMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbAotVEFSRklMRVMgPSByZWYtbWFudWFsLmh0bWwgcmVmLXN0eWxlLmNzcyBmaWd1cmVzL3Bva3ktdGl0bGUucG5nIFwKK1RBUkZJTEVTID0gcmVmLW1hbnVhbC5odG1sIHJlZi1zdHlsZS5jc3MgZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAogCWZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIGVjbGlwc2UgXAogICAgICAgICBmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIGZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIFwKIAlmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBcCkBAIC0yNzEsNyArMjY1LDggQEAKIAlmaWd1cmVzL3BhdGNoaW5nLnBuZyBmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBcCiAJZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgXAogCWZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nIFwKLQlmaWd1cmVzL2J1aWxkLXdvcmtzcGFjZS1kaXJlY3RvcnkucG5nCisJZmlndXJlcy9idWlsZC13b3Jrc3BhY2UtZGlyZWN0b3J5LnBuZyBmaWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgXAorCWZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmcKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKIEZJR1VSRVMgPSBmaWd1cmVzCiBTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCkBAIC0zMzAsOCArMzI1LDggQEAKIFhTTFRPUFRTID0gLS14aW5jbHVkZQogQUxMUFJFUSA9IGh0bWwgZWNsaXBzZSB0YXJiYWxsCiBUQVJGSUxFUyA9IGtlcm5lbC1kZXYuaHRtbCBrZXJuZWwtZGV2LXN0eWxlLmNzcyBcCi0gICAgICAgICAgIGZpZ3VyZXMva2VybmVsLWRldi10aXRsZS5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9rZXJuZWwtZGV2LXRpdGxlLnBuZyBmaWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9rZXJuZWwtYXJjaGl0ZWN0dXJlLW92ZXJ2aWV3LnBuZyBmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCiBGSUdVUkVTID0gZmlndXJlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vUkVBRE1FCmluZGV4IGE0ZTcwYTguLmQ2NGYyZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9SRUFETUUKQEAgLTM2LDggKzM2LDggQEAKIAogKiBzZGstbWFudWFsICAgICAgIC0gVGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlLgogKiBic3AtZ3VpZGUgICAgICAgIC0gVGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlCi0qIGRldi1tYW51YWwgICAgICAgLSBUaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKLSoga2VybmVsLWRldiAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwKKyogZGV2LW1hbnVhbCAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorKiBrZXJuZWwtZGV2ICAgICAgIC0gVGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAogKiByZWYtbWFudWFsICAgICAgIC0gVGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbAogKiB5b2N0by1wcm9qZWN0LXFzIC0gVGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQKICogbWVnYS1tYW51YWwgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsLCB3aGljaCBpcyBhbiBhZ2dyZWdhdGVkIG1hbnVhbCBjb21wcmlzZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKaW5kZXggZjBlZTM5OS4uNTc2ZWQxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKQEAgLTIyLDE4ICsyMiwxMSBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TYXVsPC9maXJzdG5hbWU+IDxzdXJuYW1lPldvbGQ8L3N1cm5hbWU+CisgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNhdWwud29sZEBpbnRlbC5jb208L2VtYWlsPgotICAgICAgICAgICAgPC9hdXRob3I+Ci0gICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+UmljaGFyZDwvZmlyc3RuYW1lPiA8c3VybmFtZT5QdXJkaWU8L3N1cm5hbWU+Ci0gICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5MaW51eCBGb3VuZGF0aW9uPC9vcmduYW1lPgotICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc8L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMTE5LDI0ICsxMTIsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTUwLDM0ICsxMzgsMzQgQEAKICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCiAgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgQm9hcmQKLSAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZSBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlICh2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIERldmVsb3BlcidzIEd1aWRlPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gZm9yIHdoaWNoIHlvdSB3YW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUsIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy9sYXRlc3QvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKaW5kZXggYTkyZTYxMS4uZDdiNmYxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgICAgICAgICBUbyBoZWxwIHVuZGVyc3RhbmQgdGhlIEJTUCBsYXllciBjb25jZXB0LCBjb25zaWRlciB0aGUgQlNQcyB0aGF0IHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYW5kIHByb3ZpZGVzIHdpdGggZWFjaCByZWxlYXNlLgogICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBsYXllcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CiAgICAgICAgICAgICAgICAgdGhyb3VnaCBhIHdlYiBpbnRlcmZhY2UgYXQKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgSWYgeW91IGdvIHRvIHRoYXQgaW50ZXJmYWNlLCB5b3Ugd2lsbCBmaW5kIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdApAQCAtODMsMTIgKzgzLDEyIEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcwogICAgICAgICAgICAgICAgIGZyb20gYSBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNnZXR0aW5nLXNldHVwJz5HZXR0aW5nIFNldCBVcDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gYWxzbyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBhbHNvIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC05OCwxMiArOTgsMTAgQEAKICAgICAgICAgICAgICAgICBUaGlzIHJvb3QgaXMgd2hhdCB5b3UgYWRkIHRvIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgIHdoaWNoIGlzIGVzdGFibGlzaGVkIGFmdGVyIHlvdSBydW4gb25lIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHRzIChpLmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgZXN0YWJsaXNoZWQgYWZ0ZXIgeW91IHJ1biB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KS4KICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlIHJvb3QgYWxsb3dzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJlY29nbml6ZSB0aGUgQlNQCiAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBhbmQgZnJvbSBpdCBidWlsZCBhbiBpbWFnZS4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CkBAIC0xNDEsNyArMTM5LDE0OSBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncHJlcGFyaW5nLXlvdXItYnVpbGQtaG9zdC10by13b3JrLXdpdGgtYnNwLWxheWVycyc+CisgICAgICAgICAgICA8dGl0bGU+UHJlcGFyaW5nIFlvdXIgQnVpbGQgSG9zdCB0byBXb3JrIFdpdGggQlNQIExheWVyczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGdldCB5b3VyIGJ1aWxkIGhvc3QgcmVhZHkKKyAgICAgICAgICAgICAgICB0byB3b3JrIHdpdGggQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBob3N0IHNldCB1cCwgeW91IGNhbiBjcmVhdGUgdGhlIGxheWVyCisgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPkNyZWF0aW5nIGEgbmV3IEJTUCBMYXllciBVc2luZyB0aGUgeW9jdG8tYnNwIFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHN0cnVjdHVyYWwgaW5mb3JtYXRpb24gb24gQlNQcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgYXJlIHNldCB1cCB0byB1c2UgQml0QmFrZSBpbiBhIHNoZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhIG5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBhIGxvY2FsIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwb3NzaWJseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGNoZWNrIG91dCB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSB0aGUgQlNQIExheWVyIFlvdSBXYW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBtYW55IEJTUHMsIHdoaWNoIGFyZSBtYWludGFpbmVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGVpciBvd24gbGF5ZXJzIG9yIGluIGxheWVycyBkZXNpZ25lZCB0byBjb250YWluIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJTUHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBnZXQgYW4gaWRlYSBvZiBtYWNoaW5lIHN1cHBvcnQgdGhyb3VnaCBCU1AgbGF5ZXJzLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9tYWNoaW5lcyc+aW5kZXggb2YgbWFjaGluZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IENsb25lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgaGFyZHdhcmUgaXMgYmFzZWQgb24gY3VycmVudCBJbnRlbCBDUFVzIGFuZCBkZXZpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBsZXZlcmFnZSB0aGlzIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEJTUCBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgbGF5ZXIncworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS1pbnRlbC90cmVlL1JFQURNRSc+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TmF2aWdhdGUgdG8gWW91ciBTb3VyY2UgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1pbnRlbC5naXQKKyAgICAgQ2xvbmluZyBpbnRvICdtZXRhLWludGVsJy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDE0MjI0LCBkb25lLgorICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDQ1OTEvNDU5MSksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgMTQyMjQgKGRlbHRhIDgyNDUpLCByZXVzZWQgMTM5ODUgKGRlbHRhIDgwMDYpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgxNDIyNC8xNDIyNCksIDQuMjkgTWlCIHwgMi45MCBNaUIvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoODI0NS84MjQ1KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgT3V0IHRoZSBQcm9wZXIgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggeW91IGNoZWNrIG91dCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBtdXN0IG1hdGNoIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCB5b3UgYXJlIHVzaW5nIGZvciB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICZESVNUUk9fTkFNRV9OT19DQVA7KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjaGVja291dCA8cmVwbGFjZWFibGU+YnJhbmNoX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9uIGhvdyB0byBkaXNjb3ZlciBicmFuY2ggbmFtZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0IG9uIGEgYnJhbmNoLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBCeSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IFNldCBVcCBhbiBBbHRlcm5hdGl2ZSBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgaGFyZHdhcmUgY2FuIGJlIG1vcmUgY2xvc2VseSBsZXZlcmFnZWQgdG8gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIEJTUCBub3Qgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIsIHlvdSBjYW4gY2xvbmUgdGhhdCBCU1AgbGF5ZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcHJvY2VzcyBpcyBpZGVudGljYWwgdG8gdGhlIHByb2Nlc3MgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGV4Y2VwdCBmb3IgdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGRldGVybWluZSB0aGF0IHlvdXIgaGFyZHdhcmUgbW9zdAorICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VseSBtYXRjaGVzIHRoZSA8ZmlsZW5hbWU+bWV0YS1taW5ub3c8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lIHRoYXQgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtbWlubm93CisgICAgIENsb25pbmcgaW50byAnbWV0YS1taW5ub3cnLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogNDU2LCBkb25lLgorICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDI4My8yODMpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDQ1NiAoZGVsdGEgMTYzKSwgcmV1c2VkIDM4NCAoZGVsdGEgOTEpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICg0NTYvNDU2KSwgOTYuNzQgS2lCIHwgMCBieXRlcy9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgxNjMvMTYzKSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLCBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgb24geW91ciBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhpcyBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBzY3JpcHQgcnVucywgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNDE3LDcgKzU1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VkIHdpdGggdGhlIEJTUC4KICAgICAgICAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGFsc28gaGVscHMgeW91IGZpbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyB0aGF0IHNoaXAgd2l0aCB0aGUgQlNQLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBCU1AncyA8ZmlsZW5hbWU+YmluYXJ5PC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzCkBAIC01MjIsNyArNjYyLDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgc2ltcGx5IG1ha2VzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGF3YXJlIG9mIHRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9uIGRpcmVjdG9yaWVzLgogICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBtdXN0IGV4aXN0IHNvIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIHJlY29nbml6ZSB0aGUgQlNQLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTU3MSw3ICs3MTEsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUdW5pbmcgZmlsZXMgYXJlIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5pYTMyLWJhc2UuaW5jPC9maWxlbmFtZT4gZmlsZSByZXNpZGVzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC02MjcsNyArNzY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZm9ybWZhY3RvciByZWNpcGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbm90ZT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNjY3LDcgKzgwNyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciB5b3VyIEJTUCwgeW91IHR5cGljYWxseSB3YW50IHRvIHVzZSBhbiBleGlzdGluZyBZb2N0bwogICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGtlcm5lbCByZWNpcGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBlbmQgbWFjaGluZS1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgcmVjaXBlCiAgICAgICAgICAgICAgICAgICAgIGJ5IHVzaW5nIGEgc2ltaWxhcmx5IG5hbWVkIGFwcGVuZCBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluCkBAIC03MTAsNiArODUwLDIwNCBAQAogICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICA8L3NlY3Rpb24+CiAKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBoaWdoLWxldmVsIHByb2NlZHVyZSB5b3UgY2FuIGZvbGxvdworICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSBhIEJTUCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC9saW5rPi4KKyAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaCBjb250YWlucworICAgICAgICAgICAgICAgIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIGlzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgZXhhbXBsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gY3JlYXRlIGEgbmV3IGxheWVyIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIHRvb2xzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpbGx1c3RyYXRpb24gYW5kIGxpc3Qgc3VtbWFyaXplIHRoZSBCU1AKKyAgICAgICAgICAgICAgICBjcmVhdGlvbiBnZW5lcmFsIHdvcmtmbG93LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIHRvIFN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyN5cC1yZXNvdXJjZXMnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciBvcHRpb25zIG9uIGhvdworICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVzdGFibGlzaCB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3NpdG9yeSBvbiBZb3VyIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2aW5nIGxvY2FsIGNvcGllcyBvZiB0aGVzZSBzdXBwb3J0ZWQgQlNQIGxheWVycyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBzeXN0ZW0gZ2l2ZXMgeW91IGFjY2VzcyB0byBsYXllcnMgeW91IG1pZ2h0IGJlIGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIG9uIG9yIG1vZGlmeSB0byBjcmVhdGUgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayB3aXRoIEJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIFlvdXIgT3duIEJTUCBMYXllciBVc2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+PGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGlkZWFsIGZvciBpc29sYXRpbmcgYW5kIHN0b3Jpbmcgd29yayBmb3IgYQorICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gcGllY2Ugb2YgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBBIGxheWVyIGlzIHJlYWxseSBqdXN0IGEgbG9jYXRpb24gb3IgYXJlYSBpbiB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlIHRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCBhIEJTUCBpcywgaW4gaXRzZWxmLCBhIHNwZWNpYWwgdHlwZSBvZiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgbmV3IEJTUCBsYXllciB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoYXQgc2NyaXB0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgZXhhbXBsZSB0aGF0IGlsbHVzdHJhdGVzIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFuIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgYXJlIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IG9yIG90aGVyIGRlcGVuZGVuY2llcyBpbiBvcmRlciBmb3IgaXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgYW5kIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciwgaW4gdGhpcyBjYXNlLCB3b3VsZCBiZSB3aGVyZSBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzIHRoYXQgZGVmaW5lIHRob3NlIGRlcGVuZGVuY2llcyBhcmUga2VwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBrZXkgcG9pbnQgZm9yIGEgbGF5ZXIgaXMgdGhhdCBpdCBpcyBhbiBpc29sYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvamVjdCB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGtub3dzCisgICAgICAgICAgICAgICAgICAgICAgICBhYm91dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpdmUgQlNQcyBleGlzdCB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhZ2xlYm9uZTwvZmlsZW5hbWU+IChBUk0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tcGM4MzE1ZTwvZmlsZW5hbWU+IChQb3dlclBDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmVkZ2Vyb3V0ZXI8L2ZpbGVuYW1lPiAoTUlQUykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGVzZSBmaXZlIEJTUHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCBhbmQgZGlzcGVyc2VkIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhyZWUgY29yZSBJbnRlbCBCU1BzIGV4aXN0IGFzIHBhcnQgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCByZWxlYXNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVsLWNvcmUyLTMyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZSBDb3JlMiBmYW1pbHkgb2YgQ1BVcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhbGwgQ1BVcyBwcmlvciB0byB0aGUgU2lsdmVybW9udCBjb3JlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlaTctNjQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgTmVoYWxlbSBhbmQgbGF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUgYW5kIFhlb24gQ1BVcyBhcyB3ZWxsIGFzIFNpbHZlcm1vbnQgYW5kIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9tIENQVXMsIHN1Y2ggYXMgdGhlIEJheXRyYWlsIFNvQ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVsLXF1YXJrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZSBJbnRlbCBHYWxpbGVvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4xICZhbXA7IGdlbjIgZGV2ZWxvcG1lbnQgYm9hcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3Ugc2V0IHVwIGEgbGF5ZXIgZm9yIGEgbmV3IEJTUCwgeW91IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93IGEgc3RhbmRhcmQgbGF5b3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsYXlvdXQgaXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgc3RhbmRhcmQgbGF5b3V0LCB5b3Ugd2lsbCBub3RpY2UgYSBzdWdnZXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBmb3IgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBzdGFuZGFyZCBsYXlvdXQgZm9yIGEgQlNQIGJ5IGV4YW1pbmluZworICAgICAgICAgICAgICAgICAgICAgICAgYW55IHN1cHBvcnRlZCBCU1AgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGluc2lkZSB0aGUgU291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgQ29uZmlndXJhdGlvbiBDaGFuZ2VzIHRvIFlvdXIgTmV3IEJTUAorICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBCU1AgbGF5ZXIgc3RydWN0dXJlIG9yZ2FuaXplcyB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGVkaXQgaW4gPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyYWwgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoaW4gdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpZGVudGlmeSB3aGVyZSB5b3VyIG5ldyBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgb24gdGhlIGxvY2FsIHN5c3RlbSBhbmQgaWRlbnRpZnkgd2hpY2gga2VybmVsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGdvaW5nIHRvIHVzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgYWJsZSB0byBpbnRlcmFjdGl2ZWx5IGNvbmZpZ3VyZSBtYW55IHRoaW5ncyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCU1AgKGUuZy4ga2V5Ym9hcmQsIHRvdWNoc2NyZWVuLCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFJlY2lwZSBDaGFuZ2VzIHRvIFlvdXIgTmV3IEJTUAorICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZSBjaGFuZ2VzIGluY2x1ZGUgYWx0ZXJpbmcgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcyksIHJlbW92aW5nIHJlY2lwZXMgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgdXNlLCBhbmQgYWRkaW5nIG5ldyByZWNpcGVzIG9yIGFwcGVuZCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgdGhhdCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCB5b3VyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgbWFkZSBhbGwgdGhlIGNoYW5nZXMgdG8geW91ciBCU1AgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGVyZSByZW1haW5zIGEgZmV3IHRoaW5ncyB5b3UgbmVlZCB0byBkbyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyIGZvciBpdCB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBnZXQgdGhlIGJ1aWxkIGVudmlyb25tZW50IHJlYWR5IGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBuZWVkIHRvIGJlIHN1cmUgdHdvIGtleSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBhcmUgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5OiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IG1ha2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgbmV3IGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGxldCB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBrbm93IGFib3V0IHlvdXIgbmV3IGxheWVyLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGVudGlyZSBwcm9jZXNzIGZvciBidWlsZGluZyBhbiBpbWFnZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnZpZXdlZCBpbiB0aGUgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgd2FudCB0byByZWZlcmVuY2UgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSBCaXRCYWtlIHRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGltYWdlcyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBpbWFnZSB5b3Ugd2FudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGJ1aWxkIHByb2Nlc3Mgc3VwcG9ydHMgc2V2ZXJhbCB0eXBlcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzIHRvIHNhdGlzZnkgZGlmZmVyZW50IG5lZWRzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gc3VwcG9ydGVkIGltYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKwogICAgICAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZW1lbnRzLWFuZC1yZWNvbW1lbmRhdGlvbnMtZm9yLXJlbGVhc2VkLWJzcHMnPgogICAgICAgICAgICAgPHRpdGxlPlJlcXVpcmVtZW50cyBhbmQgUmVjb21tZW5kYXRpb25zIGZvciBSZWxlYXNlZCBCU1BzPC90aXRsZT4KIApAQCAtNzMyLDI0ICsxMDcwLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGd1aWRlbGluZXMgb24gY3JlYXRpbmcgYSBsYXllciB0aGF0IG1lZXRzIHRoZXNlIGJhc2UgcmVxdWlyZW1lbnRzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IiBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBDcmVhdGluZyBMYXllcnMiPC91bGluaz4gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBDcmVhdGluZyBMYXllcnMiPC91bGluaz4gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZXF1aXJlbWVudHMgaW4gdGhpcyBzZWN0aW9uIGFwcGx5IHJlZ2FyZGxlc3Mgb2YgaG93IHlvdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYSBCU1AuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjb25zdWx0IHRoZSBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbiBndWlkZWxpbmVzIGZvciB5b3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgcmVsZWFzZSBwcm9jZXNzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIHBhY2thZ2luZyBhbmQgZGlzdHJpYnV0aW9uIHJlcXVpcmVtZW50cywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RoaXJkX1BhcnR5X0JTUF9SZWxlYXNlX1Byb2Nlc3MnPlRoaXJkIFBhcnR5IEJTUCBSZWxlYXNlIFByb2Nlc3M8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBCU1AgYXMgaXQgaXMgbWFkZSBhdmFpbGFibGUgdG8gYSBkZXZlbG9wZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVsZWFzZWQgZm9ybSBvZiB0aGUgQlNQLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgQlNQIE1ldGFkYXRhIGNhbiBiZSBjb250YWluZWQgd2l0aGluIGEgR2l0IHJlcG9zaXRvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY291bGQgaGF2ZSBhIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGVhcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb2ZmaWNpYWxseSByZWxlYXNlZCBCU1AgbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9mZmljaWFsbHkgcmVsZWFzZWQgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkl0IGlzIG5vdCByZXF1aXJlZCB0aGF0IHNwZWNpZmljIHBhY2thZ2VzIG9yIHBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb25zIGV4aXN0IGluIHRoZSBCU1AgbGF5ZXIsIGJleW9uZCB0aGUgcmVxdWlyZW1lbnRzIGZvciBnZW5lcmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBubyByZXF1aXJlbWVudCBleGlzdHMgZGljdGF0aW5nIHRoYXQgYSBzcGVjaWZpYyBrZXJuZWwgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgdmVyc2lvbiBiZSB1c2VkIGluIGEgZ2l2ZW4gQlNQLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCB2ZXJzaW9uIGJlIHVzZWQgaW4gYSBnaXZlbiBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtNzc2LDcgKzExMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIDxmaWxlbmFtZT5yZWNpcGVzLnR4dDwvZmlsZW5hbWU+IGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW4gdGhlIE9wZW5FbWJlZGRlZCBDb3JlIExheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+KSBmb3VuZCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS90cmVlL21ldGEnPjwvdWxpbms+LgpAQCAtODMyLDggKzExNzQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgcGVyc29uIHRvIHdob20gcGF0Y2hlcyBhbmQgcXVlc3Rpb25zIHNob3VsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgc2VudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZmluZCB0aGUgcmlnaHQgcGVyc29uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluc3RydWN0aW9ucyBvbiBob3cgdG8gYnVpbGQgdGhlIEJTUCB1c2luZyB0aGUgQlNQCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci48L3BhcmE+PC9saXN0aXRlbT4KQEAgLTkzNyw3ICsxMjc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIG1vZGlmaWVkIHJlY2lwZS4KICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgeW91ciBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBCU1AgbGF5ZXIKQEAgLTExNDQsNyArMTQ4Niw3IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRGVzaWduZWQgdG8gaGF2ZSBhICBjb21tYW5kIGludGVyZmFjZSBzb21ld2hhdCBsaWtlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4sIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiwgZWFjaAogICAgICAgICAgICAgICAgICAgICB0b29sIGlzIHN0cnVjdHVyZWQgYXMgYSBzZXQgb2Ygc3ViLWNvbW1hbmRzIHVuZGVyIGEKICAgICAgICAgICAgICAgICAgICAgdG9wLWxldmVsIGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSB0b3AtbGV2ZWwgY29tbWFuZCAoPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+CkBAIC0xMTU1LDcgKzE0OTcsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJvdGggdG9vbHMgcmVzaWRlIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0byB1c2UgdGhlIHNjcmlwdHMsIHlvdSBtdXN0IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQganVzdCBhcyB5b3Ugd291bGQgd2hlbiBpbnZva2luZyBhIGJ1aWxkOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMjUxLDExICsxNTkzLDExIEBACiAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBCU1AgYW5kIHBlcmZvcm0gYmFzaWMga2VybmVsIG1haW50ZW5hbmNlIG9uIHRoYXQgQlNQIHVzaW5nCiAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scy4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPiB0b29sIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0IHRvIGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgYSAiZ2VuZXJpYyIgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhpcyB0b29sLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS15b2N0by1sYXllci1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgeW9jdG8tbGF5ZXIgU2NyaXB0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEd1aWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoaXMgc2NyaXB0IHRvIGNyZWF0ZSBhIGxheWVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTM4NCw4ICsxNzI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZG8gd2FudCB0byB1c2UuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TmV4dCwgdGhlIHNjcmlwdCBhc2tzIHdoZXRoZXIgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSBhIG5ldwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBjcmVhdGVkIGVzcGVjaWFsbHkgZm9yIHlvdXIgQlNQIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2FsLWtlcm5lbC1maWxlcyc+TGludXggWW9jdG8gS2VybmVsPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggWW9jdG8gS2VybmVsIEdpdCByZXBvc2l0b3J5IC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3QsIHRoZW4gdGhlIHNjcmlwdCByZS11c2VzIGFuIGV4aXN0aW5nIGJyYW5jaC48L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlLCB0aGUgZGVmYXVsdCAob3IgInllcyIpIGlzIGFjY2VwdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGEgbmV3IGJyYW5jaCBpcyBjcmVhdGVkIGZvciB0aGUgQlNQIHJhdGhlciB0aGFuIHVzaW5nIGEgY29tbW9uLCBzaGFyZWQKQEAgLTE0MDYsNyArMTc0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgYXJlIGFjY2VwdGVkIGZvciBlYWNoLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkJ5IGRlZmF1bHQsIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUgbmV3IEJTUCBMYXllciBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3kvYnVpbGQ8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjgyYTFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCmluZGV4IDU5OGY4NzcuLjAwODE3MzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCkBAIC0xOCw3ICsxOCw4IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBvcmdhbml6aW5nCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IGludG8gbXVsdGlwbGUgbGF5ZXJzLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gaW50bworICAgICAgICAgICAgbXVsdGlwbGUgbGF5ZXJzLgogICAgICAgICAgICAgTGF5ZXJzIGFsbG93IHlvdSB0byBpc29sYXRlIGRpZmZlcmVudCB0eXBlcyBvZiBjdXN0b21pemF0aW9ucyBmcm9tCiAgICAgICAgICAgICBlYWNoIG90aGVyLgogICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllciB3aGVuCkBAIC01OCw3ICs1OSw3IEBACiAgICAgICAgICAgICA8dGl0bGU+TGF5ZXJzPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgIGNvbnRhaW5zIGJvdGggZ2VuZXJhbCBsYXllcnMgYW5kIEJTUAogICAgICAgICAgICAgICAgIGxheWVycyByaWdodCBvdXQgb2YgdGhlIGJveC4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGVhc2lseSBpZGVudGlmeSBsYXllcnMgdGhhdCBzaGlwIHdpdGggYQpAQCAtMTA3LDcgKzEwOCw3IEBACiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBhbmQgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUteW9jdG8tbGF5ZXItc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWxheWVyIFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBmdXJ0aGVyIGRvd24gaW4gdGhpcyBtYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTI1NCwxOTcgKzI1NSwxODIgQEAKICAgICAgICAgPC9zZWN0aW9uPgogCiAgICAgICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy10by1mb2xsb3ctd2hlbi1jcmVhdGluZy1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPkJlc3QgUHJhY3RpY2VzIHRvIEZvbGxvdyBXaGVuIENyZWF0aW5nIExheWVyczwvdGl0bGU+CisgICAgICAgICAgICA8dGl0bGU+Rm9sbG93aW5nIEJlc3QgUHJhY3RpY2VzIFdoZW4gQ3JlYXRpbmcgTGF5ZXJzPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVG8gY3JlYXRlIGxheWVycyB0aGF0IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4gYW5kIHRoYXQgd2lsbAogICAgICAgICAgICAgICAgIG5vdCBpbXBhY3QgYnVpbGRzIGZvciBvdGhlciBtYWNoaW5lcywgeW91IHNob3VsZCBjb25zaWRlciB0aGUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nYXZvaWQtb3ZlcmxheWluZy1lbnRpcmUtcmVjaXBlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkF2b2lkICJPdmVybGF5aW5nIiBFbnRpcmUgUmVjaXBlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXZvaWQgIm92ZXJsYXlpbmciIGVudGlyZSByZWNpcGVzIGZyb20gb3RoZXIgbGF5ZXJzIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIGRvIG5vdCBjb3B5IGFuIGVudGlyZSByZWNpcGUgaW50byB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxheWVyIGFuZCB0aGVuIG1vZGlmeSBpdC4KLSAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCB1c2UgYW4gYXBwZW5kIGZpbGUgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgdG8gb3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgb25seSB0aG9zZSBwYXJ0cyBvZiB0aGUgb3JpZ2luYWwgcmVjaXBlIHlvdSBuZWVkIHRvIG1vZGlmeS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdhdm9pZC1kdXBsaWNhdGluZy1pbmNsdWRlLWZpbGVzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+QXZvaWQgRHVwbGljYXRpbmcgSW5jbHVkZSBGaWxlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXZvaWQgZHVwbGljYXRpbmcgaW5jbHVkZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgVXNlIGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2VzIGFuIGluY2x1ZGUgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHlvdSBhcmUgaW50cm9kdWNpbmcgYSBuZXcgcmVjaXBlIHRoYXQgcmVxdWlyZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGluY2x1ZGVkIGZpbGUsIHVzZSB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXIgZGlyZWN0b3J5IHRvIHJlZmVyIHRvIHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdXNlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlIHJlY2lwZXMtY29yZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmZpbGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+cmVxdWlyZSA8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UncmUgZmluZGluZyB5b3UgaGF2ZSB0byBvdmVybGF5IHRoZSBpbmNsdWRlIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgIGl0IGNvdWxkIGluZGljYXRlIGEgZGVmaWNpZW5jeSBpbiB0aGUgaW5jbHVkZSBmaWxlIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciB0byB3aGljaCBpdCBvcmlnaW5hbGx5IGJlbG9uZ3MuCi0gICAgICAgICAgICAgICAgICAgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBzaG91bGQgdHJ5IHRvIGFkZHJlc3MgdGhhdAotICAgICAgICAgICAgICAgICAgICBkZWZpY2llbmN5IGluc3RlYWQgb2Ygb3ZlcmxheWluZyB0aGUgaW5jbHVkZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGFkZHJlc3MgdGhpcyBieSBnZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVyIG9mIHRoZSBpbmNsdWRlIGZpbGUgdG8gYWRkIGEgdmFyaWFibGUgb3IKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHRvIG1ha2UgaXQgZWFzeSB0byBvdmVycmlkZSB0aGUgcGFydHMgbmVlZGluZwotICAgICAgICAgICAgICAgICAgICB0byBiZSBvdmVycmlkZGVuLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS15b3VyLWxheWVycyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlN0cnVjdHVyZSBZb3VyIExheWVyczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUHJvcGVyIHVzZSBvZiBvdmVycmlkZXMgd2l0aGluIGFwcGVuZCBmaWxlcyBhbmQgcGxhY2VtZW50Ci0gICAgICAgICAgICAgICAgICAgIG9mIG1hY2hpbmUtc3BlY2lmaWMgZmlsZXMgd2l0aGluIHlvdXIgbGF5ZXIgY2FuIGVuc3VyZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGEgYnVpbGQgaXMgbm90IHVzaW5nIHRoZSB3cm9uZyBNZXRhZGF0YSBhbmQgbmVnYXRpdmVseQotICAgICAgICAgICAgICAgICAgICBpbXBhY3RpbmcgYSBidWlsZCBmb3IgYSBkaWZmZXJlbnQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Nb2RpZnlpbmcgVmFyaWFibGVzIHRvIFN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIERpZmZlcmVudCBNYWNoaW5lOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgaGF2ZSBhIGxheWVyIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4gdGhhdCBhZGRzIHN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYnVpbGRpbmcgbWFjaGluZSAib25lIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBkbyBzbywgeW91IHVzZSBhbiBhcHBlbmQgZmlsZSBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzLmJiYXBwZW5kPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgZGVwZW5kZW5jeSBvbiAiZm9vIiBieSBhbHRlcmluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGluIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXZvaWQgIk92ZXJsYXlpbmciIEVudGlyZSBSZWNpcGVzIGZyb20gT3RoZXIgTGF5ZXJzIGluIFlvdXIgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIGRvIG5vdCBjb3B5IGFuIGVudGlyZSByZWNpcGUgaW50byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBhbmQgdGhlbiBtb2RpZnkgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBSYXRoZXIsIHVzZSBhbiBhcHBlbmQgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgdG8gb3ZlcnJpZGUgb25seSB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgb2YgdGhlIG9yaWdpbmFsIHJlY2lwZSB5b3UgbmVlZCB0byBtb2RpZnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF2b2lkIER1cGxpY2F0aW5nIEluY2x1ZGUgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZSB0aGF0IHVzZXMgYW4gaW5jbHVkZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHlvdSBhcmUgaW50cm9kdWNpbmcgYSBuZXcgcmVjaXBlIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbmNsdWRlZCBmaWxlLCB1c2UgdGhlIHBhdGggcmVsYXRpdmUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsYXllciBkaXJlY3RvcnkgdG8gcmVmZXIgdG8gdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZSByZWNpcGVzLWNvcmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZSA8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91J3JlIGZpbmRpbmcgeW91IGhhdmUgdG8gb3ZlcmxheSB0aGUgaW5jbHVkZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgY291bGQgaW5kaWNhdGUgYSBkZWZpY2llbmN5IGluIHRoZSBpbmNsdWRlIGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciB0byB3aGljaCBpdCBvcmlnaW5hbGx5IGJlbG9uZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3Ugc2hvdWxkIHRyeSB0byBhZGRyZXNzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmljaWVuY3kgaW5zdGVhZCBvZiBvdmVybGF5aW5nIHRoZSBpbmNsdWRlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGFkZHJlc3MgdGhpcyBieSBnZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciBvZiB0aGUgaW5jbHVkZSBmaWxlIHRvIGFkZCBhIHZhcmlhYmxlIG9yCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8gbWFrZSBpdCBlYXN5IHRvIG92ZXJyaWRlIHRoZSBwYXJ0cyBuZWVkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBvdmVycmlkZGVuLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdHJ1Y3R1cmUgWW91ciBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlciB1c2Ugb2Ygb3ZlcnJpZGVzIHdpdGhpbiBhcHBlbmQgZmlsZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQgb2YgbWFjaGluZS1zcGVjaWZpYyBmaWxlcyB3aXRoaW4geW91ciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGVuc3VyZSB0aGF0IGEgYnVpbGQgaXMgbm90IHVzaW5nIHRoZSB3cm9uZyBNZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZ2F0aXZlbHkgaW1wYWN0aW5nIGEgYnVpbGQgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGV4YW1wbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Nb2RpZnkgVmFyaWFibGVzIHRvIFN1cHBvcnQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWZmZXJlbnQgTWFjaGluZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3NlIHlvdSBoYXZlIGEgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4gdGhhdCBhZGRzIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJ1aWxkaW5nIG1hY2hpbmUgIm9uZSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGRvIHNvLCB5b3UgdXNlIGFuIGFwcGVuZCBmaWxlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzLmJiYXBwZW5kPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIGRlcGVuZGVuY3kgb24gImZvbyIgYnkgYWx0ZXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgREVQRU5EUyA9ICJmb28iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZXBlbmRlbmN5IGlzIGNyZWF0ZWQgZHVyaW5nIGFueSBidWlsZCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IG5vdCB3YW50IHRoaXMgZGVwZW5kZW5jeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgbWFjaGluZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFyZSBidWlsZGluZyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lICJ0d28iIGJ1dCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGhhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmU8L2ZpbGVuYW1lPiBsYXllciBpbmNsdWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlczwvZmlsZW5hbWU+IGZvciBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3byIgd2lsbCBhbHNvIGhhdmUgdGhlIGRlcGVuZGVuY3kgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4uPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgYXBwbHkgb25seSB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgbWFjaGluZSAib25lIiwgdXNlIGEgbWFjaGluZSBvdmVycmlkZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gc3RhdGVtZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVwZW5kZW5jeSBpcyBjcmVhdGVkIGR1cmluZyBhbnkgYnVpbGQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyB0aGUgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBtaWdodCBub3Qgd2FudCB0aGlzIGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFyZSBidWlsZGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSAidHdvIiBidXQgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmU8L2ZpbGVuYW1lPiBsYXllciBpbmNsdWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBidWlsZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzPC9maWxlbmFtZT4gZm9yIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3byIgd2lsbCBhbHNvIGhhdmUgdGhlIGRlcGVuZGVuY3kgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyBhcHBseSBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgbWFjaGluZSAib25lIiwgdXNlIGEgbWFjaGluZSBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IHN0YXRlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBERVBFTkRTX29uZSA9ICJmb28iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZm9sbG93IHRoZSBzYW1lIHN0cmF0ZWd5IHdoZW4gdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZm9sbG93IHRoZSBzYW1lIHN0cmF0ZWd5IHdoZW4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4gb3BlcmF0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBERVBFTkRTX2FwcGVuZF9vbmUgPSAiIGZvbyIKICAgICAgREVQRU5EU19wcmVwZW5kX29uZSA9ICJmb28gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgbGluZSBmcm9tIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZ251dGxzLCB3aGljaCBhZGRzIGRlcGVuZGVuY2llcyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdwLXN0YW5kYWxvbmUiIHdoZW4gYnVpbGRpbmcgd2l0aCB0aGUgbXVzbCBDCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gYWN0dWFsIGV4YW1wbGUsIGhlcmUncyBhIGxpbmUgZnJvbSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBnbnV0bHMsIHdoaWNoIGFkZHMgZGVwZW5kZW5jaWVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdwLXN0YW5kYWxvbmUiIHdoZW4gYnVpbGRpbmcgd2l0aCB0aGUgbXVzbCBDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdm9pZGluZyAiKz0iIGFuZCAiPSsiIGFuZCB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVjb21tZW5kZWQgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBsYWNlIE1hY2hpbmUtU3BlY2lmaWMgRmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBNYWNoaW5lLVNwZWNpZmljIExvY2F0aW9uczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGhhdmUgYSBiYXNlIHJlY2lwZSwgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzLmJiPC9maWxlbmFtZT4sIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCB0byBhIGZpbGUsIHlvdSBjYW4gdXNlIGFuIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY2F1c2UgdGhlIGJ1aWxkIHRvIHVzZSB5b3VyIG93biB2ZXJzaW9uIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFuIGFwcGVuZCBmaWxlIGluIHlvdXIgbGF5ZXIgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy5iYmFwcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgZXh0ZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdm9pZGluZyAiKz0iIGFuZCAiPSsiIGFuZCB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlY29tbWVuZGVkIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGxhY2UgTWFjaGluZS1TcGVjaWZpYyBGaWxlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lLVNwZWNpZmljIExvY2F0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBoYXZlIGEgYmFzZSByZWNpcGUsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UtZmlsZXMuYmI8L2ZpbGVuYW1lPiwgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IHRvIGEgZmlsZSwgeW91IGNhbiB1c2UgYW4gYXBwZW5kIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY2F1c2UgdGhlIGJ1aWxkIHRvIHVzZSB5b3VyIG93biB2ZXJzaW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYW4gYXBwZW5kIGZpbGUgaW4geW91ciBsYXllciBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy5iYmFwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGV4dGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7QlBOfToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBmb3IgbWFjaGluZSAib25lIiB3aWxsIHBpY2sgdXAgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsZSBhcyBsb25nIGFzIHlvdSBoYXZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy88L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgYXJlIGJ1aWxkaW5nIGZvciBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBpbmNsdWRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YS1vbmU8L2ZpbGVuYW1lPiBsYXllciBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gb2YgeW91ciBtYWNoaW5lLXNwZWNpZmljIGZpbGUgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlyc3QgbG9jYXRpb24gd2hlcmUgdGhhdCBmaWxlIGlzIGZvdW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgZm9yIGFsbCBtYWNoaW5lcyB3aWxsIGFsc28gdXNlIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIGZpbGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gbWFrZSBzdXJlIHRoYXQgYSBtYWNoaW5lLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyB1c2VkIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZSBieSBwdXR0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcmF0aGVyIHRoYW4gcGxhY2luZyB0aGUgZmlsZSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzLzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgc2hvd24gYWJvdmUsIHB1dCBpdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL29uZS88L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgb25seSBkb2VzIHRoaXMgbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gYnVpbGRpbmcgZm9yIG1hY2hpbmUgIm9uZSIsIGJ1dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzIGxvY2F0ZXMgdGhlIGZpbGUgbW9yZSBxdWlja2x5LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JbiBzdW1tYXJ5LCB5b3UgbmVlZCB0byBwbGFjZSBhbGwgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkIGZyb20gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgbWFjaGluZS1zcGVjaWZpYyBzdWJkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIGluIG9yZGVyIHRvIHJlc3RyaWN0IHRob3NlIGZpbGVzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBidWlsZHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J290aGVyLXJlY29tbWVuZGF0aW9ucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPk90aGVyIFJlY29tbWVuZGF0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgV2UgYWxzbyByZWNvbW1lbmQgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB5b3Ugd2FudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgbG9nbyB3aXRoIHlvdXIgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgeW91ciBsYXllciwgcGVyZm9ybSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyB0byBhcHBseSBmb3IgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21ha2luZy1zdXJlLXlvdXItbGF5ZXItaXMtY29tcGF0aWJsZS13aXRoLXlvY3RvLXByb2plY3QnPk1ha2luZyBTdXJlIFlvdXIgTGF5ZXIgaXMgQ29tcGF0aWJsZSBXaXRoIFlvY3RvIFByb2plY3Q8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3RvcmUgY3VzdG9tIGxheWVycyBpbiBhIEdpdCByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBmb3JtYXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xvbmUgdGhlIHJlcG9zaXRvcnkgYWxvbmdzaWRlIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZXNlIHJlY29tbWVuZGF0aW9ucyBrZWVwcyB5b3VyIFNvdXJjZSBEaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgICAgICBpdHMgY29uZmlndXJhdGlvbiBlbnRpcmVseSBpbnNpZGUgdGhlIFlvY3RvIFByb2plY3QncyBjb3JlCi0gICAgICAgICAgICAgICAgICAgICBiYXNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgZm9yIG1hY2hpbmUgIm9uZSIgd2lsbCBwaWNrIHVwIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBmaWxlIGFzIGxvbmcgYXMgeW91IGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgYnVpbGRpbmcgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IGxheWVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gb2YgeW91ciBtYWNoaW5lLXNwZWNpZmljIGZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGxvY2F0aW9uIHdoZXJlIHRoYXQgZmlsZSBpcyBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRpbmcgdG8gPGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgZm9yIGFsbCBtYWNoaW5lcyB3aWxsIGFsc28gdXNlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBmaWxlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBtYWtlIHN1cmUgdGhhdCBhIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyB1c2VkIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZSBieSBwdXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcmF0aGVyIHRoYW4gcGxhY2luZyB0aGUgZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBzaG93biBhYm92ZSwgcHV0IGl0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL29uZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IG9ubHkgZG9lcyB0aGlzIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBidWlsZGluZyBmb3IgbWFjaGluZSAib25lIiwgYnV0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzIGxvY2F0ZXMgdGhlIGZpbGUgbW9yZSBxdWlja2x5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc3VtbWFyeSwgeW91IG5lZWQgdG8gcGxhY2UgYWxsIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWQgZnJvbSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgbWFjaGluZS1zcGVjaWZpYyBzdWJkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBpbiBvcmRlciB0byByZXN0cmljdCB0aG9zZSBmaWxlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGVyZm9ybSBTdGVwcyB0byBBcHBseSBmb3IgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgQ29tcGF0aWJpbGl0eSBsb2dvIHdpdGggeW91ciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXBwbGljYXRpb24gdGhhdCB1c2VzIHlvdXIgbGF5ZXIsIHBlcmZvcm0gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyB0byBhcHBseSBmb3IgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3VyLWxheWVyLWlzLWNvbXBhdGlibGUtd2l0aC15b2N0by1wcm9qZWN0Jz5NYWtpbmcgU3VyZSBZb3VyIExheWVyIGlzIENvbXBhdGlibGUgV2l0aCBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZvbGxvdyB0aGUgTGF5ZXIgTmFtaW5nIENvbnZlbnRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIGN1c3RvbSBsYXllcnMgaW4gYSBHaXQgcmVwb3NpdG9yeSB0aGF0IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Hcm91cCBZb3VyIExheWVycyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDbG9uZSB5b3VyIHJlcG9zaXRvcnkgYWxvbmdzaWRlIG90aGVyIGNsb25lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nbWFraW5nLXN1cmUteW91ci1sYXllci1pcy1jb21wYXRpYmxlLXdpdGgteW9jdG8tcHJvamVjdCc+CkBAIC00NTYsNjUgKzQ0Miw3NCBAQAogICAgICAgICAgICAgICAgIGV4aXN0aW5nIFlvY3RvIFByb2plY3QgbGF5ZXJzIChpLmUuIHRoZSBsYXllciBpcyBjb21wYXRpYmxlCiAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCkuCiAgICAgICAgICAgICAgICAgRW5zdXJpbmcgY29tcGF0aWJpbGl0eSBtYWtlcyB0aGUgbGF5ZXIgZWFzeSB0byBiZSBjb25zdW1lZAotICAgICAgICAgICAgICAgIGJ5IG90aGVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgYW5kIGFsbG93cyB5b3UKLSAgICAgICAgICAgICAgICBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5IGxvZ28uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFZlcnNpb24gMS4wIG9mIHRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgUHJvZ3JhbSBoYXMKLSAgICAgICAgICAgICAgICBiZWVuIGluIGV4aXN0ZW5jZSBmb3IgYSBudW1iZXIgb2YgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm9ncmFtIGNvbnNpc3RzIG9mIHRoZSBsYXllciBhcHBsaWNhdGlvbgotICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhhdCByZXF1ZXN0cyBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIENvbXBhdGliaWxpdHkgbG9nbyBmb3IgeW91ciBsYXllciBhbmQgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHZlcnNpb24gMS4wIG9mIHRoZSBmb3JtIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy93ZWJmb3JtL3lvY3RvLXByb2plY3QtY29tcGF0aWJsZS1yZWdpc3RyYXRpb24nPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIFRvIGJlIGdyYW50ZWQgcGVybWlzc2lvbiB0byB1c2UgdGhlIGxvZ28sIHlvdSBuZWVkIHRvIGJlIGFibGUKLSAgICAgICAgICAgICAgICB0byBhbnN3ZXIgIlllcyIgdG8gdGhlIHF1ZXN0aW9ucyBvciBoYXZlIGFuIGFjY2VwdGFibGUKLSAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiBmb3IgYW55IHF1ZXN0aW9ucyBhbnN3ZXJlZCAiTm8iLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIHNlY29uZCB2ZXJzaW9uICgyLjApIG9mIHRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkKLSAgICAgICAgICAgICAgICBQcm9ncmFtIGlzIGN1cnJlbnRseSB1bmRlciBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgICAgICBJbmNsdWRlZCBhcyBwYXJ0IG9mIHZlcnNpb24gMi4wIChhbmQgY3VycmVudGx5IGF2YWlsYWJsZSkgaXMKLSAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnlvY3RvLWNvbXBhdC1sYXllci5weTwvZmlsZW5hbWU+IHNjcmlwdC4KLSAgICAgICAgICAgICAgICBXaGVuIHJ1biBhZ2FpbnN0IGEgbGF5ZXIsIHRoaXMgc2NyaXB0IHRlc3RzIHRoZSBsYXllciBhZ2FpbnN0Ci0gICAgICAgICAgICAgICAgdGlnaHRlciBjb25zdHJhaW50cyBiYXNlZCBvbiBleHBlcmllbmNlcyBvZiBob3cgbGF5ZXJzIGhhdmUKLSAgICAgICAgICAgICAgICB3b3JrZWQgaW4gdGhlIHJlYWwgd29ybGQgYW5kIHdoZXJlIHBpdGZhbGxzIGhhdmUgYmVlbiBmb3VuZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUGFydCBvZiB0aGUgMi4wIHZlcnNpb24gb2YgdGhlIHByb2dyYW0gdGhhdCBpcyBub3QgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgYXZhaWxhYmxlIGJ1dCBpcyBpbiBkZXZlbG9wbWVudCBpcyBhbiB1cGRhdGVkIGNvbXBhdGliaWxpdHkKLSAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBmb3JtLgotICAgICAgICAgICAgICAgIFRoaXMgdXBkYXRlZCBmb3JtLCBhbW9uZyBvdGhlciBxdWVzdGlvbnMsIHNwZWNpZmljYWxseQotICAgICAgICAgICAgICAgIGFza3MgaWYgeW91ciBsYXllciBoYXMgcGFzc2VkIHRoZSB0ZXN0IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1jb21wYXQtbGF5ZXIucHk8L2ZpbGVuYW1lPiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgIEV2ZW4gdGhvdWdoIHRoZSB1cGRhdGVkIGFwcGxpY2F0aW9uIGZvcm0gaXMgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlIGZvciB2ZXJzaW9uIDIuMCBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICBDb21wYXRpYmlsaXR5IFByb2dyYW0sIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tY29tcGF0LWxheWVyLnB5PC9maWxlbmFtZT4gc2NyaXB0IGlzCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBpbiBPRS1Db3JlLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgc2NyaXB0IHRvIGFzc2VzcyB0aGUgc3RhdHVzIG9mIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJzIGluIGFkdmFuY2Ugb2YgdGhlIDIuMCByZWxlYXNlIG9mIHRoZSBwcm9ncmFtLgorICAgICAgICAgICAgICAgIGJ5IG90aGVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgYW5kIGNvdWxkIGFsbG93IHlvdQorICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGlibGUgTG9nby4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgT25seSBZb2N0byBQcm9qZWN0IG1lbWJlciBvcmdhbml6YXRpb25zIGFyZSBwZXJtaXR0ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGlibGUgTG9nby4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvZ28gaXMgbm90IGF2YWlsYWJsZSBmb3IgZ2VuZXJhbCB1c2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYmVjb21lIGEgWW9jdG8gUHJvamVjdCBtZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICAgICAgICAgICAgdmVyc2lvbiAxLjAgcmVnaXN0cmF0aW9uIGZvcm0gYW5kIG9uIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1jb21wYXQtbGF5ZXIucHk8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgQ29tcGF0aWJpbGl0eSBQcm9ncmFtIGNvbnNpc3RzIG9mIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBwcm9jZXNzIHRoYXQgcmVxdWVzdHMgcGVybWlzc2lvbiB0byB1c2UgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCBDb21wYXRpYmlsaXR5IExvZ28gZm9yIHlvdXIgbGF5ZXIgYW5kIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIGNvbnNpc3RzIG9mIHR3byBwYXJ0czoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NmdWxseSBwYXNzaW5nIGEgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPnlvY3RvLWNoZWNrLWxheWVyPC9maWxlbmFtZT4pIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcnVuIGFnYWluc3QgeW91ciBsYXllciwgdGVzdHMgaXQgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMgYmFzZWQgb24gZXhwZXJpZW5jZXMgb2YgaG93IGxheWVycyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZWQgaW4gdGhlIHJlYWwgd29ybGQgYW5kIHdoZXJlIHBpdGZhbGxzIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuCisgICAgICAgICAgICAgICAgICAgICAgICBHZXR0aW5nIGEgIlBBU1MiIHJlc3VsdCBmcm9tIHRoZSBzY3JpcHQgaXMgcmVxdWlyZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsIGNvbXBhdGliaWxpdHkgcmVnaXN0cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRpb24gb2YgYW4gYXBwbGljYXRpb24gYWNjZXB0YW5jZSBmb3JtLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBmaW5kIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL3dlYmZvcm0veW9jdG8tcHJvamVjdC1jb21wYXRpYmxlLXJlZ2lzdHJhdGlvbic+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1jb21wYXRpYmlsaXR5LXByb2dyYW0tYXBwbGljYXRpb24nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgUHJvZ3JhbSBBcHBsaWNhdGlvbjwvdGl0bGU+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBsb2dvLCB5b3UgbmVlZCB0byBzYXRpc2Z5CisgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBCZSBhYmxlIHRvIGNoZWNrIHRoZSBib3ggaW5kaWNhdGluZyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgZ290IGEgIlBBU1MiIHdoZW4gcnVubmluZyB0aGUgc2NyaXB0IGFnYWluc3QgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyICJZZXMiIHRvIHRoZSBxdWVzdGlvbnMgb24gdGhlIGZvcm0gb3IgaGF2ZSBhbgorICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0YWJsZSBleHBsYW5hdGlvbiBmb3IgYW55IHF1ZXN0aW9ucyBhbnN3ZXJlZCAiTm8iLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGEgWW9jdG8gUHJvamVjdCBNZW1iZXIgT3JnYW5pemF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByZXNlbnRzIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbiBmb3JtIGFuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tY2hlY2stbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LWNvbXBhdGlibGUtcHJvZ3JhbS1hcHBsaWNhdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgQ29tcGF0aWJsZSBQcm9ncmFtIEFwcGxpY2F0aW9uPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDEuMCB2ZXJzaW9uIG9mIHRoZSBmb3JtIHRvIGFwcGx5IGZvciB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxheWVyJ3MgY29tcGF0aWJpbGl0eSBhcHByb3ZhbC4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb3JtIHRvIGFwcGx5IGZvciB5b3VyIGxheWVyJ3MgYXBwcm92YWwuCiAgICAgICAgICAgICAgICAgICAgIFVwb24gc3VjY2Vzc2Z1bCBhcHBsaWNhdGlvbiwgeW91IGNhbiB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgIFByb2plY3QgQ29tcGF0aWJpbGl0eSBsb2dvIHdpdGggeW91ciBsYXllciBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgQ29tcGF0aWJpbGl0eSBMb2dvIHdpdGggeW91ciBsYXllciBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB5b3VyIGxheWVyLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtNTUyLDI2ICs1NDcsMTggQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd5b2N0by1jb21wYXQtbGF5ZXItcHktc2NyaXB0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnlvY3RvLWNvbXBhdC1sYXllci5weTwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tY2hlY2stbGF5ZXItc2NyaXB0Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnlvY3RvLWNoZWNrLWxheWVyPC9maWxlbmFtZT4gU2NyaXB0PC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWNvbXBhdC1sYXllci5weTwvZmlsZW5hbWU+IHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgY3VycmVudGx5IGF2YWlsYWJsZSwgcHJvdmlkZXMgeW91IGEgd2F5IHRvCi0gICAgICAgICAgICAgICAgICAgIGFzc2VzcyBob3cgY29tcGF0aWJsZSB5b3VyIGxheWVyIGlzIHdpdGggdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tY2hlY2stbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgeW91IGEgd2F5IHRvIGFzc2VzcyBob3cgY29tcGF0aWJsZSB5b3VyIGxheWVyIGlzCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcnVuIHRoaXMgc2NyaXB0IHByaW9yIHRvIHVzaW5nIHRoZSBmb3JtIHRvCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5IGZvciBjb21wYXRpYmlsaXR5IGFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgaXMgcGFydCBvZiB0aGUgMi4wIHJlbGVhc2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgUHJvZ3JhbSwgeW91IGFyZSBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHRvIHN1Y2Nlc3NmdWxseSBydW4geW91ciBsYXllciBhZ2FpbnN0IGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBiZSBncmFudGVkIGNvbXBhdGliaWxpdHkgc3RhdHVzLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgYSBnb29kIGlkZWEgYXMgaXQgcHJvbW90ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlbGwtYmVoYXZlZCBsYXllcnMgYW5kIGdpdmVzIHlvdSBhbiBpZGVhIG9mIHdoZXJlIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIHN0YW5kcyByZWdhcmRpbmcgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBhY2hpZXZlIGEgIlBBU1MiIHJlc3VsdCBpbiBvcmRlciB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHlvdXIgYXBwbGljYXRpb24gZm9ybSBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNTg4LDcgKzU3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHlvdXIgYnVpbGQgZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52Ci0gICAgICQgeW9jdG8tY29tcGF0LWxheWVyLnB5IDxyZXBsYWNlYWJsZT55b3VyX2xheWVyX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICQgeW9jdG8tY2hlY2stbGF5ZXIgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdGhlIGFjdHVhbCBkaXJlY3RvcnkgZm9yIHlvdXIgbGF5ZXIKICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KQEAgLTY1NSw3ICs2NDIsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPkJCTEFZRVJTPC91bGluaz48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCiAgICAgICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBlbmFibGUgYSBsYXllciBuYW1lZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC03MzYsNyArNzIzLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBtYWluIGZvcm1mYWN0b3IgcmVjaXBlIGFuZCBhCiAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBmb3JtZmFjdG9yIGFwcGVuZCBmaWxlIGJvdGggZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgbWFpbiBmb3JtZmFjdG9yIHJlY2lwZSwgd2hpY2ggaXMgbmFtZWQKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmI8L2ZpbGVuYW1lPiBhbmQgbG9jYXRlZCBpbiB0aGUKICAgICAgICAgICAgICAgICAibWV0YSIgbGF5ZXIgYXQKQEAgLTk3NSwxMjggKzk2MiwxNjMgQEAKICAgICAgLi4uCiAgICAgIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zb21ldGhpbmcgLS1lbmFibGUtc29tZXRoaW5nZWxzZSIKICAgICAgLi4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5sYXllcmluZGV4LWZldGNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZldGNoZXMgYSBsYXllciBmcm9tIGEgbGF5ZXIgaW5kZXgsIGFsb25nIHdpdGggaXRzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgbGF5ZXJzLCBhbmQgYWRkcyB0aGUgbGF5ZXJzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5sYXllcmluZGV4LXNob3ctZGVwZW5kczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGaW5kcyBsYXllciBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgbGF5ZXIgaW5kZXguCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5jcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhIGJhc2ljIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS15b2N0by1sYXllci1zY3JpcHQnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgeW9jdG8tbGF5ZXIgU2NyaXB0PC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQgc2ltcGxpZmllcworICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLWxheWVyPC9maWxlbmFtZT4gc3ViY29tbWFuZCBzaW1wbGlmaWVzCiAgICAgICAgICAgICAgICAgY3JlYXRpbmcgYSBuZXcgZ2VuZXJhbCBsYXllci4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTcGVjaWZpYyAoQlNQKQotICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFNwZWNpZmljIChCU1ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VzIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCwgd2hpY2ggaXMgZGVwcmVjYXRlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNCByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZXMgdG8gZnVuY3Rpb24gYXMgcGFydCBvZiB0aGUgMi40IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgd2lsbCBiZSByZW1vdmVkIHBvc3QgMi40LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kZSBvZiB0aGUgc2NyaXB0J3Mgb3BlcmF0aW9uIGlzIHRvIHByb21wdCB5b3UgZm9yCi0gICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIHRoZSBsYXllcjoKKyAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBtb2RlIG9mIHRoZSBzY3JpcHQncyBvcGVyYXRpb24gd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgc3ViY29tbWFuZCBpcyB0byBjcmVhdGUgYSBsYXllciB3aXRoIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBsYXllciBwcmlvcml0eS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgbGF5ZXIgcHJpb3JpdHkgb2YgNi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hldGhlciBvciBub3QgdG8gY3JlYXRlIGEgc2FtcGxlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgYSBzYW1wbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5yZWNpcGVzLWV4YW1wbGU8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgYSBmdXJ0aGVyIHN1YmRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4YW1wbGU8L2ZpbGVuYW1lPiwgd2hpY2ggY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIDxmaWxlbmFtZT5leGFtcGxlLmJiPC9maWxlbmFtZT4gcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgPGZpbGVuYW1lID5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGxpY2Vuc2Ugc3RhdGVtZW50IGZvciB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFzc3VtZXMgeW91IHdhbnQgdG8gdXNlIHRoZSBNSVQgbGljZW5zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1vc3QgbGF5ZXJzLCBmb3IgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGEgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmluZyB0aGUgY29udGVudHMgb2YgeW91ciBuZXcgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXIgY3JlYXRlPC9maWxlbmFtZT4gc3ViLWNvbW1hbmQKLSAgICAgICAgICAgICAgICB0byBjcmVhdGUgYSBuZXcgZ2VuZXJhbCBsYXllci4KLSAgICAgICAgICAgICAgICBJbiBpdHMgc2ltcGxlc3QgZm9ybSwgeW91IGNhbiBjcmVhdGUgYSBsYXllciBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIEluIGl0cyBzaW1wbGVzdCBmb3JtLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybQorICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSBhIGxheWVyLgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGNyZWF0ZXMgYSBsYXllciB3aG9zZSBuYW1lIGNvcnJlc3BvbmRzIHRvCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+IGluIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1sYXllciBjcmVhdGUgbXlsYXllcgorICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgY3JlYXRlcyBhIGxheWVyIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllciBjcmVhdGU8L2ZpbGVuYW1lPiBjb21tYW5kIHJ1bnMsCi0gICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBwcm9tcHRzIGFwcGVhciBpbiBicmFja2V0cy4KLSAgICAgICAgICAgICAgICBQcmVzc2luZyBlbnRlciB3aXRob3V0IHN1cHBseWluZyBhbnl0aGluZyBmb3IgdGhlIHByb21wdHMKLSAgICAgICAgICAgICAgICBvciBwcmVzc2luZyBlbnRlciBhbmQgcHJvdmlkaW5nIGFuIGludmFsaWQgcmVzcG9uc2UgY2F1c2VzIHRoZQotICAgICAgICAgICAgICAgIHNjcmlwdCB0byBhY2NlcHQgdGhlIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgICAgICAgICAgT25jZSB0aGUgc2NyaXB0IGNvbXBsZXRlcywgdGhlIG5ldyBsYXllcgotICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBuYW1lcyB0aGUgbGF5ZXIgYnkgcHJlcGVuZGluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+IHRvIHRoZSBuYW1lIHlvdSBwcm92aWRlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNldCB0aGUgcHJpb3JpdHkgb2YgdGhlIGxheWVyIHRvIG90aGVyIHRoYW4gdGhlCisgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSBvZiAiNiIsIHlvdSBjYW4gZWl0aGVyIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JmRhc2g7JmRhc2g7cHJpb3JpdHk8L2ZpbGVuYW1lPiBvcHRpb24gb3IgeW91IGNhbgorICAgICAgICAgICAgICAgIGVkaXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YWx1ZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGFmdGVyIHRoZQorICAgICAgICAgICAgICAgIHNjcmlwdCBjcmVhdGVzIGl0LgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBpZiB5b3Ugd2FudCB0byBnaXZlIHRoZSBleGFtcGxlIHJlY2lwZSBmaWxlCisgICAgICAgICAgICAgICAgc29tZSBuYW1lIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZkYXNoOyZkYXNoO2V4YW1wbGUtcmVjaXBlLW5hbWU8L2ZpbGVuYW1lPiBvcHRpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE1pbmltYWxseSwgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgd2l0aGluIHRoZSBsYXllcjoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBsYXllcidzIGNvbmZpZ3VyYXRpb24gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByb290IG5hbWUgZm9yIHRoZSBmaWxlIGlzIHRoZSBzYW1lIGFzIHRoZSByb290IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgcHJvdmlkZWQgZm9yIHRoZSBsYXllciAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+IGZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb3B5cmlnaHQgYW5kIHVzZSBub3RpY2UgZm9yIHRoZSBzb2Z0d2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgZmlsZSBkZXNjcmliaW5nIHRoZSBjb250ZW50cyBvZiB5b3VyIG5ldyBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgY2hvb3NlIHRvIGdlbmVyYXRlIGEgc2FtcGxlIHJlY2lwZSBmaWxlLCB0aGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgcHJvbXB0cyB5b3UgZm9yIHRoZSBuYW1lIGZvciB0aGUgcmVjaXBlIGFuZCB0aGVuIGNyZWF0ZXMgaXQKLSAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmxheWVyPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBjcmVhdGVzIGEgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgYW5kIGEKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHdoaWNoIGNvbnRhaW5zIGEgc2FtcGxlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhlbGxvd29ybGQuYzwvZmlsZW5hbWU+IHNvdXJjZSBmaWxlLCBhbG9uZyB3aXRoCi0gICAgICAgICAgICAgICAgYSBzYW1wbGUgcGF0Y2ggZmlsZS4KLSAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSByZWNpcGUgbmFtZSwgdGhlIHNjcmlwdCB1c2VzCi0gICAgICAgICAgICAgICAgImV4YW1wbGUiLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgY2hvb3NlIHRvIGdlbmVyYXRlIGEgc2FtcGxlIGFwcGVuZCBmaWxlLCB0aGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgcHJvbXB0cyB5b3UgZm9yIHRoZSBuYW1lIGZvciB0aGUgZmlsZSBhbmQgdGhlbiBjcmVhdGVzIGl0Ci0gICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+L3JlY2lwZXMtZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBhIHNhbXBsZSBwYXRjaCBmaWxlLgotICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZSBhIHJlY2lwZSBuYW1lLCB0aGUgc2NyaXB0IHVzZXMKLSAgICAgICAgICAgICAgICAiZXhhbXBsZSIuCi0gICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBhbHNvIHByb21wdHMgeW91IGZvciB0aGUgdmVyc2lvbiBvZiB0aGUgYXBwZW5kIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gc2hvdWxkIG1hdGNoIHRoZSByZWNpcGUgdG8gd2hpY2ggdGhlIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgaXMgYXNzb2NpYXRlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGVhc2llc3Qgd2F5IHRvIHNlZSBob3cgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgc2NyaXB0IHdvcmtzIGlzIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgc2NyaXB0LgorICAgICAgICAgICAgICAgIFRoZSBlYXNpZXN0IHdheSB0byBzZWUgaG93IHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgd29ya3MgaXMgdG8gZXhwZXJpbWVudCB3aXRoIHRoZSBzY3JpcHQuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHJlYWQgdGhlIHVzYWdlIGluZm9ybWF0aW9uIGJ5IGVudGVyaW5nIHRoZQogICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tbGF5ZXIgaGVscAorICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciAtLWhlbHAKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgdXNhZ2U6IGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciBbLWhdIFstLXByaW9yaXR5IFBSSU9SSVRZXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstLWV4YW1wbGUtcmVjaXBlLW5hbWUgRVhBTVBMRVJFQ0lQRV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcmRpcgorCisgICAgIENyZWF0ZSBhIGJhc2ljIGxheWVyCisKKyAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgICAgbGF5ZXJkaXIgICAgICAgICAgICAgIExheWVyIGRpcmVjdG9yeSB0byBjcmVhdGUKKworICAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAtLXByaW9yaXR5IFBSSU9SSVRZLCAtcCBQUklPUklUWQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXllciBkaXJlY3RvcnkgdG8gY3JlYXRlCisgICAgICAgLS1leGFtcGxlLXJlY2lwZS1uYW1lIEVYQU1QTEVSRUNJUEUsIC1lIEVYQU1QTEVSRUNJUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgb2YgdGhlIGV4YW1wbGUgcmVjaXBlCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBPbmNlIHlvdSBjcmVhdGUgeW91ciBnZW5lcmFsIGxheWVyLCB5b3UgbXVzdCBhZGQgaXQgdG8geW91cgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUgYSBsYXllciBuYW1lZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPiBpcyBhZGRlZDoKKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFkZCB5b3VyIGxheWVyIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBhZGQtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJMQVlFUlMgPSA/IiBcCi0gICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXBva3kgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXlvY3RvLWJzcCBcCi0gICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtbXlsYXllciBcCi0gICAgICAgICIKKyAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2NvdHRyaWY8L2ZpbGVuYW1lPiBpcyBhZGRlZCBhbmQgdGhlbiB0aGUKKyAgICAgICAgICAgICAgICBsYXllcnMgYXJlIHNob3duIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBzaG93LWxheWVyczwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRlZCAxMjc1IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgorICAgICBQYXJzaW5nIHJlY2lwZXM6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBQYXJzaW5nIG9mIDgxOSAuYmIgZmlsZXMgY29tcGxldGUgKDgxNyBjYWNoZWQsIDIgcGFyc2VkKS4gMTI3NiB0YXJnZXRzLCA0NCBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgICQgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgbGF5ZXIgICAgICAgICAgICAgICAgIHBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5CisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIG1ldGEgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEgICAgICAgICAgICAgICAgICA1CisgICAgIG1ldGEtcG9reSAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEtcG9reSAgICAgICAgICAgICA1CisgICAgIG1ldGEteW9jdG8tYnNwICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEteW9jdG8tYnNwICAgICAgICA1CisgICAgIG1ldGEtbXlsYXllciAgICAgICAgICAvaG9tZS9zY290dHJpZi9tZXRhLW15bGF5ZXIgICAgICAgICAgICAgICA2CisgICAgIHdvcmtzcGFjZSAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3dvcmtzcGFjZSAgICAgICA5OQorICAgICBtZXRhLXNjb3R0cmlmICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC9tZXRhLXNjb3R0cmlmICAgNgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlIGxheWVyIHRvIHRoaXMgZmlsZSBlbmFibGVzIHRoZSBidWlsZCBzeXN0ZW0gdG8KICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGxheWVyIGR1cmluZyB0aGUgYnVpbGQuCkBAIC0xMTkzLDcgKzEyMTUsNyBAQAogICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIGEgcmVjaXBlIGFuZCB1c2luZwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGZyb20gd2l0aGluCiAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTE0OTYsNiArMTUxOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2ltaWxhciBpbiBmdW5jdGlvbiB0byB0aGUgcmVjaXBlIHlvdSBuZWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiByZWNpcGUgc3ludGF4LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWNpcGUtc3ludGF4Jz5SZWNpcGUgU3ludGF4PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLWNyZWF0aW5nLXRoZS1iYXNlLXJlY2lwZS11c2luZy1kZXZ0b29sJz4KQEAgLTE1MTYsOCArMTU0Myw5IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNlLWRldnRvb2wtdG8taW50ZWdyYXRlLW5ldy1jb2RlJz5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdG8gQWRkIGFuIEFwcGxpY2F0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hLWNsb3Nlci1sb29rLWF0LWRldnRvb2wtYWRkJz5BIENsb3NlciBMb29rIGF0IDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gYWRkPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMTU0MCwxMiArMTU2OCwxMCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRvIHJ1biB0aGUgdG9vbCwgeW91IGp1c3QgbmVlZCB0byBiZSBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZlIHNvdXJjZWQgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAogICAgICAgICAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4pLgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IHN5bnRheDoKICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIDxmaWxlbmFtZT5yZWNpcGV0b29sIC1oPC9maWxlbmFtZT4gb3IKQEAgLTE3MTUsMzAzICsxNzQxLDYgQEAKICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3VuZGVyc3RhbmRpbmctcmVjaXBlLXN5bnRheCc+Ci0gICAgICAgICAgICA8dGl0bGU+VW5kZXJzdGFuZGluZyBSZWNpcGUgU3ludGF4PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyByZWNpcGUgZmlsZSBzeW50YXggaXMgaW1wb3J0YW50IGZvcgotICAgICAgICAgICAgICAgIHdyaXRpbmcgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgb3ZlcnZpZXdzIHRoZSBiYXNpYyBpdGVtcyB0aGF0IG1ha2UgdXAgYQotICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlIGZpbGUuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgY29tcGxldGUgQml0QmFrZSBzeW50YXggZGVzY3JpcHRpb25zLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBjaGFwdGVyIG9mIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlIGFzc2lnbm1lbnRzIGFsbG93IGEgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBhc3NpZ25tZW50LCBhcHBlbmRpbmcgYW5kIHByZXBlbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBzb21lIG9mIHRoZSB3YXlzCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB2YXJpYWJsZXMgaW4gcmVjaXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUyA9ICIke1dPUktESVJ9L3Bvc3RmaXgtJHtQVn0iCi0gICAgIENGTEFHUyArPSAiLUROT19BU00iCi0gICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vZml4dXAucGF0Y2giCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GdW5jdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyBwcm92aWRlIGEgc2VyaWVzIG9mIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IHVzdWFsbHkgdXNlIGZ1bmN0aW9ucyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSB0YXNrIGZ1bmN0aW9uIG9yIHRvIGNvbXBsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgZGVmYXVsdCBmdW5jdGlvbiAoaS5lLiBhcHBlbmQgb3IgcHJlcGVuZCB0byBhbgotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb24pLgotICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQgZnVuY3Rpb25zIHVzZSA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBzaGVsbAotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4LCBhbHRob3VnaCBhY2Nlc3MgdG8gT3BlbkVtYmVkZGVkIHZhcmlhYmxlcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsIG1ldGhvZHMgYXJlIGFsc28gYXZhaWxhYmxlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+IHJlY2lwZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKLSAgICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCi0gICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW1wbGVtZW50IG5ldyBmdW5jdGlvbnMgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNhbGxlZCBiZXR3ZWVuIGV4aXN0aW5nIHRhc2tzIGFzIGxvbmcgYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW1wbGVtZW50IGZ1bmN0aW9ucyBpbiBQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzZWVuIGluIHRoZSBtYWpvcml0eSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5LZXl3b3Jkczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSByZWNpcGVzIHVzZSBvbmx5IGEgZmV3IGtleXdvcmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IHVzZSBrZXl3b3JkcyB0byBpbmNsdWRlIGNvbW1vbgotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zICg8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+KSwgbG9hZCBwYXJ0cwotICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSByZWNpcGUgZnJvbSBvdGhlciBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+KSBhbmQgZXhwb3J0IHZhcmlhYmxlcwotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGVudmlyb25tZW50ICg8ZmlsZW5hbWU+ZXhwb3J0PC9maWxlbmFtZT4pLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGUgdXNlIG9mIHNvbWUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgUE9TVENPTkYgPSAiJHtTVEFHSU5HX0JJTkRJUn0vcG9zdGNvbmYiCi0gICAgIGluaGVyaXQgYXV0b2NvbmYKLSAgICAgcmVxdWlyZSBvdGhlcmZpbGUuaW5jCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db21tZW50czo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQW55IGxpbmVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgaGFzaCBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgYXJlIGlnbm9yZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgVGhpcyBpcyBhIGNvbW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIG5leHQgbGlzdCBzdW1tYXJpemVzIHRoZSBtb3N0IGltcG9ydGFudCBhbmQgbW9zdCBjb21tb25seQotICAgICAgICAgICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgcGFydHMgb2YgdGhlIHN5bnRheCwgeW91IGNhbgotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KLSAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGluZSBDb250aW51YXRpb246IDxmaWxlbmFtZT5cPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGJhY2t3YXJkIHNsYXNoICg8ZmlsZW5hbWU+XDwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIHNwbGl0IGEgc3RhdGVtZW50IG92ZXIgbXVsdGlwbGUgbGluZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBQbGFjZSB0aGUgc2xhc2ggY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgaXMgdG8gYmUgY29udGludWVkIG9uIHRoZSBuZXh0IGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUiA9ICJBIHJlYWxseSBsb25nIFwKLSAgICAgICAgICAgIGxpbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IGhhdmUgYW55IGNoYXJhY3RlcnMgaW5jbHVkaW5nIHNwYWNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRhYnMgYWZ0ZXIgdGhlIHNsYXNoIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNpbmcgVmFyaWFibGVzOiA8ZmlsZW5hbWU+JHsuLi59PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4kezxyZXBsYWNlYWJsZT5WQVJOQU1FPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4gc3ludGF4IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnBuZy96bGliLSR7UFZ9LnRhci5neiIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIHZhbHVlIG9mIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBleHByZXNzZWQgaW4gdGhpcyBmb3JtIGRvZXMgbm90IGdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4cGFuc2lvbiBvZiB0aGVzZSBleHByZXNzaW9ucyBoYXBwZW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb24tZGVtYW5kIGxhdGVyIChlLmcuIHVzdWFsbHkgd2hlbiBhIGZ1bmN0aW9uIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBtb3N0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZXkgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSByYXJlIG9jY2FzaW9uIHRoYXQgeW91IGRvIG5lZWQgdGhlIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiB0byBiZSBleHBhbmRlZCBpbW1lZGlhdGVseSwgeW91IGNhbiB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gd2hlbiB5b3UgbWFrZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LCBidXQgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IG5lZWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlF1b3RlIEFsbCBBc3NpZ25tZW50czogPGZpbGVuYW1lPiI8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiI8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUgaW4gYWxsIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSMSA9ICIke09USEVSVkFSfSIKLSAgICAgVkFSMiA9ICJUaGUgdmVyc2lvbiBpcyAke1BWfSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNvbmRpdGlvbmFsIEFzc2lnbm1lbnQ6IDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWwgYXNzaWdubWVudCBpcyB1c2VkIHRvIGFzc2lnbiBhIHZhbHVlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBhIHZhcmlhYmxlLCBidXQgb25seSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBjdXJyZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0LgotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbCBzaWduCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj89PC9maWxlbmFtZT4pIHRvIG1ha2UgYSAic29mdCIgYXNzaWdubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgY29uZGl0aW9uYWwgYXNzaWdubWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgInNvZnQiIGFzc2lnbm1lbnRzIGFyZSB1c2VkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvciB2YXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGFsbG93ZWQgdG8gY29tZSB0aHJvdWdoIGZyb20gdGhlIGV4dGVybmFsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIGN1cnJlbnRseSBlbXB0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4gaGFzIGFscmVhZHkgYmVlbgotICAgICAgICAgICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxlZnQgd2l0aCB0aGUgdmFsdWUgIk9yaWdpbmFsIHZhbHVlIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSMSA9ICJPcmlnaW5hbCB2YWx1ZSIKLSAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXBwZW5kaW5nOiA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcGx1cyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgdGhlIGVxdWFscyBzaWduCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPis9PC9maWxlbmFtZT4pIHRvIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgYWRkcyBhIHNwYWNlIGJldHdlZW4gdGhlIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCBvZiB0aGUgdmFyaWFibGUgYW5kIHRoZSBuZXcgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwZW5kaW5nOiA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4pIHRvIHByZXBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBuZXcgY29udGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZXhpc3RpbmcgY29udGVudCBvZiB0aGUgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIgPSsgIlN0YXJ0cyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGVuZGluZzogPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGRvZXMgbm90IGFkZCBhbnkgYWRkaXRpb25hbCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+IG9wZXJhdG9ycyBoYXZlIGJlZW4gYXBwbGllZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIG9jY3VycmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgc3RhcnQgdG8gZW5zdXJlIHRoZSBhcHBlbmRlZAotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgbm90IG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyB2YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwZW5kaW5nOiA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3IgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIG9wZXJhdG9yIGlzIGFwcGxpZWQgYWZ0ZXIgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYWxsIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gYXNzaWdubWVudHMgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgb2NjdXJyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHNwYWNlIGJlaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IGFkZGVkIHRvIHRoZSBlbmQgdG8gZW5zdXJlIHRoZSBwcmVwZW5kZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIENGTEFHU19wcmVwZW5kID0gIi1JJHtTfS9teWluY2x1ZGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDRkxBR1NfcHJlcGVuZF9zaDQgPSAiLUkke1N9L215aW5jbHVkZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3ZlcnJpZGVzOjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIG92ZXJyaWRlcyB0byBzZXQgYSB2YWx1ZSBjb25kaXRpb25hbGx5LAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbGx5IGJhc2VkIG9uIGhvdyB0aGUgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQlJBTkNIJz48ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlJ3MgdmFsdWUgdG8gInN0YW5kYXJkL2Jhc2UiIGZvciBhbnkgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGZvciBxZW11YXJtIHdoZXJlIGl0IHNob3VsZCBiZSBzZXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIsIHlvdSB3b3VsZCBkbyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JSQU5DSCA9ICJzdGFuZGFyZC9iYXNlIgotICAgICBLQlJBTkNIX3FlbXVhcm0gID0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzIGFyZSBhbHNvIHVzZWQgdG8gc2VwYXJhdGUgYWx0ZXJuYXRlIHZhbHVlcwotICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSB2YXJpYWJsZSBpbiBvdGhlciBzaXR1YXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdoZW4gc2V0dGluZyB2YXJpYWJsZXMgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBwcm9kdWNlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNpcGUsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBhbiBvdmVycmlkZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbmRlbnRhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHNwYWNlcyBmb3IgaW5kZW50YXRpb24gcmF0aGVyIHRoYW4gdGhhbiB0YWJzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGEgcG9saWN5IGRlY2lzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UgdGFicyBpbiBzaGVsbCBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGluZGVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgUHl0aG9uIGZvciBDb21wbGV4IE9wZXJhdGlvbnM6IDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGFkdmFuY2VkIHByb2Nlc3NpbmcsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGNvZGUgZHVyaW5nIHZhcmlhYmxlIGFzc2lnbm1lbnRzIChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2ggYW5kIHJlcGxhY2VtZW50IG9uIGEgdmFyaWFibGUpLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBpbmRpY2F0ZSBQeXRob24gY29kZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4IGZvciB0aGUgdmFyaWFibGUgYXNzaWdubWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy96aXAke0BkLmdldFZhcignUFYnLDEpLnJlcGxhY2UoJy4nLCAnJyl9LnRnegotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hlbGwgRnVuY3Rpb24gU3ludGF4OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBzaGVsbCBmdW5jdGlvbnMgYXMgaWYgeW91IHdlcmUgd3JpdGluZyBhIHNoZWxsCi0gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZW5zdXJlIHRoYXQgeW91ciBzY3JpcHQgd29ya3Mgd2l0aCBhIGdlbmVyaWMKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaDwvZmlsZW5hbWU+IGFuZCB0aGF0IGl0IGRvZXMgbm90IHJlcXVpcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNhbWUgY29uc2lkZXJhdGlvbnMgYXBwbHkgdG8gdmFyaW91cyBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JlcDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXdrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIHRoYXQgeW91IG1pZ2h0IHdpc2ggdG8gdXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQotICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIC0gaW5jbHVkaW5nIHRob3NlIGZyb20gQnVzeUJveC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KICAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtcnVubmluZy1hLWJ1aWxkLW9uLXRoZS1yZWNpcGUnPgogICAgICAgICAgICAgPHRpdGxlPlJ1bm5pbmcgYSBCdWlsZCBvbiB0aGUgUmVjaXBlPC90aXRsZT4KIApAQCAtMjAyMywxMiArMTc1MiwxMCBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgaGF2ZSBzb3VyY2VkIGEgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IChpLmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pCiAgICAgICAgICAgICAgICAgYW5kIHlvdSBhcmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgdXNlIEJpdEJha2UgdG8gcHJvY2VzcyB5b3VyIHJlY2lwZS4KICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgdG8gcHJvdmlkZSBpcyB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJhc2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBvZiB0aGUgcmVjaXBlIGFzIGRlc2NyaWJlZApAQCAtMjA4Myw4ICsxODEwLDggQEAKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nsb3Nlci1sb29rJz5BIENsb3NlciBMb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgaW4KKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgogICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgpAQCAtMzA3NCw3ICsyODAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+c3lzdGVtZC5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KQEAgLTM5NjcsNiArMzY5NCw0MTcgQEAKICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAorICAgIDxzZWN0aW9uIGlkPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPgorICAgICAgICA8dGl0bGU+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgaGVscGZ1bCBkdXJpbmcgZGV2ZWxvcG1lbnQgdG8gbW9kaWZ5IHRoZQorICAgICAgICAgICAgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIHVzZWQgYnkgcmVjaXBlcyB0byBidWlsZCBwYWNrYWdlcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgZGV2ZWxvcGluZyBhIHBhdGNoIGFuZCB5b3UgbmVlZCB0bworICAgICAgICAgICAgZXhwZXJpbWVudCBhIGJpdCB0byBmaWd1cmUgb3V0IHlvdXIgc29sdXRpb24uCisgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBpbml0aWFsbHkgYnVpbHQgdGhlIHBhY2thZ2UsIHlvdSBjYW4gaXRlcmF0aXZlbHkKKyAgICAgICAgICAgIHR3ZWFrIHRoZSBzb3VyY2UgY29kZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICBhbmQgdGhlbiB5b3UgY2FuIGZvcmNlIGEgcmUtY29tcGlsZSBhbmQgcXVpY2tseSB0ZXN0IHlvdXIgYWx0ZXJlZAorICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgIE9uY2UgeW91IHNldHRsZSBvbiBhIHNvbHV0aW9uLCB5b3UgY2FuIHRoZW4gcHJlc2VydmUgeW91ciBjaGFuZ2VzCisgICAgICAgICAgICBpbiB0aGUgZm9ybSBvZiBwYXRjaGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgdGhlIHVucGFja2VkIHRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHJlY2lwZXMKKyAgICAgICAgICAgIHRvIGJ1aWxkIHBhY2thZ2VzIGlzIGF2YWlsYWJsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGFzCisgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBCZWxvdyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgIGFzIGRlZmluZWQgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFMgPSAiJHtXT1JLRElSfS8ke0JQfSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBtYW55IHJlY2lwZXMgb3ZlcnJpZGUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHJlY2lwZXMgdGhhdCBmZXRjaCB0aGVpciBzb3VyY2UgZnJvbSBHaXQgdXN1YWxseSBzZXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdG8gPGZpbGVuYW1lPiR7V09SS0RJUn0vZ2l0PC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlAnPjxmaWxlbmFtZT5CUDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICByZXByZXNlbnRzIHRoZSBiYXNlIHJlY2lwZSBuYW1lLCB3aGljaCBjb25zaXN0cyBvZiB0aGUgbmFtZQorICAgICAgICAgICAgICAgIGFuZCB2ZXJzaW9uOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQlAgPSAiJHtCUE59LSR7UFZ9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHBhdGggdG8gdGhlIHdvcmsgZGlyZWN0b3J5IGZvciB0aGUgcmVjaXBlCisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgIGlzIGRlZmluZWQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtUTVBESVJ9L3dvcmsvJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30vJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGFjdHVhbCBkaXJlY3RvcnkgZGVwZW5kcyBvbiBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBidWlsZCBvdXRwdXQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NVUxUSU1BQ0hfVEFSR0VUX1NZUyc+PGZpbGVuYW1lPk1VTFRJTUFDSF9UQVJHRVRfU1lTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBzeXN0ZW0gaWRlbnRpZmllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURU5EUEUnPjxmaWxlbmFtZT5FWFRFTkRQRTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBlcG9jaCAtIChpZgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgbm90IHNwZWNpZmllZCwgd2hpY2ggaXMgdXN1YWxseSB0aGUgY2FzZSBmb3IgbW9zdAorICAgICAgICAgICAgICAgICAgICByZWNpcGVzLCB0aGVuIDxmaWxlbmFtZT5FWFRFTkRQRTwvZmlsZW5hbWU+IGlzIGJsYW5rKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgcmV2aXNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGFzc3VtZSBhIFNvdXJjZSBEaXJlY3RvcnkgdG9wLWxldmVsIGZvbGRlcgorICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiwgYSBkZWZhdWx0IEJ1aWxkIERpcmVjdG9yeSBhdAorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvYnVpbGQ8L2ZpbGVuYW1lPiwgYW5kIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LXBva3ktbGludXg8L2ZpbGVuYW1lPiBtYWNoaW5lIHRhcmdldAorICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgRnVydGhlcm1vcmUsIHN1cHBvc2UgeW91ciByZWNpcGUgaXMgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAuYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHdvcmsgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0bworICAgICAgICAgICAgYnVpbGQgdGhlIHBhY2thZ2Ugd291bGQgYmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvZm9vLzEuMy4wLXIwCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0idXNpbmctYS1xdWlsdC13b3JrZmxvdyI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBRdWlsdCBpbiBZb3VyIFdvcmtmbG93PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3F1aWx0Jz5RdWlsdDwvdWxpbms+CisgICAgICAgICAgICBpcyBhIHBvd2VyZnVsIHRvb2wgdGhhdCBhbGxvd3MgeW91IHRvIGNhcHR1cmUgc291cmNlIGNvZGUgY2hhbmdlcworICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgYSBjbGVhbiBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdXRsaW5lcyB0aGUgdHlwaWNhbCB3b3JrZmxvdyB5b3UgY2FuIHVzZSB0byBtb2RpZnkKKyAgICAgICAgICAgIHNvdXJjZSBjb2RlLCB0ZXN0IGNoYW5nZXMsIGFuZCB0aGVuIHByZXNlcnZlIHRoZSBjaGFuZ2VzIGluIHRoZQorICAgICAgICAgICAgZm9ybSBvZiBhIHBhdGNoIGFsbCB1c2luZyBRdWlsdC4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIFdpdGggcmVnYXJkIHRvIHByZXNlcnZpbmcgY2hhbmdlcyB0byBzb3VyY2UgZmlsZXMsIGlmIHlvdQorICAgICAgICAgICAgICAgIGNsZWFuIGEgcmVjaXBlIG9yIGhhdmUgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPiBlbmFibGVkLAorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3c8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbAorICAgICAgICAgICAgICAgIGlzIGEgc2FmZXIgZGV2ZWxvcG1lbnQgZmxvdyB0aGFuIHRoZSBmbG93IHRoYXQgdXNlcyBRdWlsdC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHM6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmluZCB0aGUgU291cmNlIENvZGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGVtcG9yYXJ5IHNvdXJjZSBjb2RlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZmluZGluZy10aGUtdGVtcG9yYXJ5LXNvdXJjZS1jb2RlJz5GaW5kaW5nIFRlbXBvcmFyeSBTb3VyY2UgQ29kZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gdG8gbGVhcm4gaG93IHRvIGxvY2F0ZSB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgZm9yIGEgcGFydGljdWxhciBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgWW91ciBXb3JraW5nIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZSB0ZW1wb3JhcnkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIFRoYXQgZGlyZWN0b3J5IGlzIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTmV3IFBhdGNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBtb2RpZnlpbmcgc291cmNlIGNvZGUsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICAgICAgICAgICAgICBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgVG8gY3JlYXRlIGEgbmV3IHBhdGNoIGZpbGUsIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQgbmV3PC9maWxlbmFtZT4gYXMgYmVsb3c6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBxdWlsdCBuZXcgbXlfY2hhbmdlcy5wYXRjaAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5vdGlmeSBRdWlsdCBhbmQgQWRkIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIGNyZWF0aW5nIHRoZSBwYXRjaCwgeW91IG5lZWQgdG8gbm90aWZ5IFF1aWx0IGFib3V0CisgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyB5b3UgcGxhbiB0byBlZGl0LgorICAgICAgICAgICAgICAgICAgICBZb3Ugbm90aWZ5IFF1aWx0IGJ5IGFkZGluZyB0aGUgZmlsZXMgdG8gdGhlIHBhdGNoIHlvdQorICAgICAgICAgICAgICAgICAgICBqdXN0IGNyZWF0ZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBxdWlsdCBhZGQgZmlsZTEuYyBmaWxlMi5jIGZpbGUzLmMKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBNYWtlIHlvdXIgY2hhbmdlcyBpbiB0aGUgc291cmNlIGNvZGUgdG8gdGhlIGZpbGVzIHlvdSBhZGRlZAorICAgICAgICAgICAgICAgICAgICB0byB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgbW9kaWZpZWQgdGhlIHNvdXJjZSBjb2RlLCB0aGUgZWFzaWVzdCB3YXkgdG8KKyAgICAgICAgICAgICAgICAgICAgdGVzdCB5b3VyIGNoYW5nZXMgaXMgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiB0YXNrIGFzIHNob3duIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgY29tcGlsZSAtZiA8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4tLWZvcmNlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGZvcmNlcyB0aGUgc3BlY2lmaWVkIHRhc2sgdG8gZXhlY3V0ZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGZpbmQgcHJvYmxlbXMgd2l0aCB5b3VyIGNvZGUsIHlvdSBjYW4ganVzdCBrZWVwCisgICAgICAgICAgICAgICAgICAgIGVkaXRpbmcgYW5kIHJlLXRlc3RpbmcgaXRlcmF0aXZlbHkgdW50aWwgdGhpbmdzIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHRoZSBtb2RpZmljYXRpb25zIHlvdSBtYWtlIHRvIHRoZSB0ZW1wb3JhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIGRpc2FwcGVhciBvbmNlIHlvdSBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY2xlYW4nPjxmaWxlbmFtZT5kb19jbGVhbjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY2xlYW5hbGwnPjxmaWxlbmFtZT5kb19jbGVhbmFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tzIHVzaW5nIEJpdEJha2UgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIGNsZWFuIDxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBjbGVhbmFsbCA8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpY2F0aW9ucyB3aWxsIGFsc28gZGlzYXBwZWFyIGlmIHlvdSB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IGZlYXR1cmUgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBQYXRjaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGV4cGVjdGVkLCB5b3UgbmVlZCB0byB1c2UgUXVpbHQKKyAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIHBhdGNoIHRoYXQgY29udGFpbnMgYWxsIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHF1aWx0IHJlZnJlc2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB0aGUgPGZpbGVuYW1lPm15X2NoYW5nZXMucGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGhhcyBhbGwgeW91ciBlZGl0cyBtYWRlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZTEuYzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZmlsZTIuYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmZpbGUzLmM8L2ZpbGVuYW1lPiBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSByZXN1bHRpbmcgcGF0Y2ggZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhdGNoZXMvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5TPC9maWxlbmFtZT4pIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29weSB0aGUgUGF0Y2ggRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgY29weSB0aGUgcGF0Y2ggZmlsZSBpbnRvIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+LCB3aGljaCB5b3UgY2FuIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgdGhhdCBob2xkcyB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUgb3IgdGhlIGFwcGVuZAorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBQbGFjaW5nIHRoZSBwYXRjaCBoZXJlIGd1YXJhbnRlZXMgdGhhdCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB3aWxsIGZpbmQgdGhlIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBOZXh0LCBhZGQgdGhlIHBhdGNoIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+U1JDX1VSSTwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9teV9jaGFuZ2VzLnBhdGNoIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWFwcGRldi1kZXZzaGVsbCI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBhIERldmVsb3BtZW50IFNoZWxsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gZGVidWdnaW5nIGNlcnRhaW4gY29tbWFuZHMgb3IgZXZlbiB3aGVuIGp1c3QgZWRpdGluZyBwYWNrYWdlcywKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGNhbiBiZSBhIHVzZWZ1bCB0b29sLgorICAgICAgICAgICAgV2hlbiB5b3UgaW52b2tlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBhbGwgdGFza3MgdXAgdG8gYW5kCisgICAgICAgICAgICBpbmNsdWRpbmcKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgYXJlIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuCisgICAgICAgICAgICBUaGVuLCBhIG5ldyB0ZXJtaW5hbCBpcyBvcGVuZWQgYW5kIHlvdSBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBJbiB0aGUgbmV3IHRlcm1pbmFsLCBhbGwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZC1yZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUKKyAgICAgICAgICAgIHN0aWxsIGRlZmluZWQgc28geW91IGNhbiB1c2UgY29tbWFuZHMgc3VjaCBhcyA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlIGNvbW1hbmRzIGV4ZWN1dGUganVzdCBhcyBpZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3ZXJlIGV4ZWN1dGluZyB0aGVtLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB3b3JraW5nIHRoaXMgd2F5IGNhbiBiZSBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGEgYnVpbGQgb3IgcHJlcGFyaW5nCisgICAgICAgICAgICBzb2Z0d2FyZSB0byBiZSB1c2VkIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBvbiBhIHRhcmdldCBuYW1lZAorICAgICAgICAgICAgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3A8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgZGV2c2hlbGwKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjb21tYW5kIHNwYXducyBhIHRlcm1pbmFsIHdpdGggYSBzaGVsbCBwcm9tcHQgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU9FX1RFUk1JTkFMJz48ZmlsZW5hbWU+T0VfVEVSTUlOQUw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBjb250cm9scyB3aGF0IHR5cGUgb2Ygc2hlbGwgaXMgb3BlbmVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3Igc3Bhd25lZCB0ZXJtaW5hbHMsIHRoZSBmb2xsb3dpbmcgb2NjdXJzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5wa2djb25maWc8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgZmluZCB0aGUgY29ycmVjdAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnBjPC9maWxlbmFtZT4gZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gY29tbWFuZCBmaW5kcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzaXRlIGZpbGVzIGFzIHdlbGwgYXMgYW55IG90aGVyIG5lY2Vzc2FyeSBmaWxlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaXRoaW4gdGhpcyBlbnZpcm9ubWVudCwgeW91IGNhbiBydW4gY29uZmlndXJlIG9yIGNvbXBpbGUKKyAgICAgICAgICAgIGNvbW1hbmRzIGFzIGlmIHRoZXkgd2VyZSBiZWluZyBydW4gYnkKKyAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGl0c2VsZi4KKyAgICAgICAgICAgIEFzIG5vdGVkIGVhcmxpZXIsIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbHNvIGF1dG9tYXRpY2FsbHkgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBtYW51YWxseSBydW4gYSBzcGVjaWZpYyB0YXNrIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgcnVuIHRoZSBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT5ydW4uKjwvZmlsZW5hbWU+IHNjcmlwdCBpbgorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS90ZW1wPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSAoZS5nLiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4uZG9fY29uZmlndXJlLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBpZDwvcmVwbGFjZWFibGU+KS4KKyAgICAgICAgICAgIElmIGEgdGFzaydzIHNjcmlwdCBkb2VzIG5vdCBleGlzdCwgd2hpY2ggd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIHRhc2sgd2FzCisgICAgICAgICAgICBza2lwcGVkIGJ5IHdheSBvZiB0aGUgc3N0YXRlIGNhY2hlLCB5b3UgY2FuIGNyZWF0ZSB0aGUgdGFzayBieSBmaXJzdCBydW5uaW5nCisgICAgICAgICAgICBpdCBvdXRzaWRlIG9mIHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXNrPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4ZWN1dGlvbiBvZiBhIHRhc2sncyA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFuZCBCaXRCYWtlJ3MgZXhlY3V0aW9uIG9mIGEgdGFzayBhcmUgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHJ1bm5pbmcgdGhlIHNjcmlwdCByZS1ydW5zIHRoZSB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IGFzIGl0IHdvdWxkIGJlIHJ1biB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW55IDxmaWxlbmFtZT5ydW4uKjwvZmlsZW5hbWU+IGZpbGUgdGhhdCBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhIDxmaWxlbmFtZT4ucGlkPC9maWxlbmFtZT4gZXh0ZW5zaW9uIGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbGljIGxpbmsgKHN5bWxpbmspIHRvIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmVtZW1iZXIsIHRoYXQgdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGlzIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzCisgICAgICAgICAgICB5b3UgdG8gZ2V0IGludG8gdGhlIEJpdEJha2UgdGFzayBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgICAgICBBbmQgYXMgc3VjaCwgYWxsIGNvbW1hbmRzIG11c3QgYmUgY2FsbGVkIGp1c3QgYXMgQml0QmFrZSB3b3VsZCBjYWxsIHRoZW0uCisgICAgICAgICAgICBUaGF0IG1lYW5zIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbnMgZm9yCisgICAgICAgICAgICBjcm9zcy1jb21waWxhdGlvbiBhbmQgc28gZm9ydGggYXMgYXBwbGljYWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBleGl0IHRoZSBzaGVsbAorICAgICAgICAgICAgb3IgY2xvc2UgdGhlIHRlcm1pbmFsIHdpbmRvdy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgd29ydGggcmVtZW1iZXJpbmcgdGhhdCB3aGVuIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIHVzZSB0aGUgZnVsbCBjb21waWxlciBuYW1lIHN1Y2ggYXMgPGZpbGVuYW1lPmFybS1wb2t5LWxpbnV4LWdudWVhYmktZ2NjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBqdXN0IHVzaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNhbWUgYXBwbGllcyB0byBvdGhlciBhcHBsaWNhdGlvbnMgc3VjaCBhcyA8ZmlsZW5hbWU+YmludXRpbHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPiBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugc2V0cyB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc3VjaCBhcyA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBhc3Npc3QgYXBwbGljYXRpb25zLCBzdWNoIGFzIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gdG8gZmluZCB0aGUgY29ycmVjdCB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IHN0aWxsIHdvcmtzIG92ZXIKKyAgICAgICAgICAgICAgICAgICAgWDExIGZvcndhcmRpbmcgYW5kIHNpbWlsYXIgc2l0dWF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWFwcGRldi1kZXZweXNoZWxsIj4KKyAgICAgICAgPHRpdGxlPlVzaW5nIGEgRGV2ZWxvcG1lbnQgUHl0aG9uIFNoZWxsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNpbWlsYXIgdG8gd29ya2luZyB3aXRoaW4gYSBkZXZlbG9wbWVudCBzaGVsbCBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAgICAgIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB5b3UgY2FuIGFsc28gc3Bhd24gYW5kIHdvcmsgd2l0aGluIGFuCisgICAgICAgICAgICBpbnRlcmFjdGl2ZSBQeXRob24gZGV2ZWxvcG1lbnQgc2hlbGwuCisgICAgICAgICAgICBXaGVuIGRlYnVnZ2luZyBjZXJ0YWluIGNvbW1hbmRzIG9yIGV2ZW4gd2hlbiBqdXN0IGVkaXRpbmcgcGFja2FnZXMsCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+IGNhbiBiZSBhIHVzZWZ1bCB0b29sLgorICAgICAgICAgICAgV2hlbiB5b3UgaW52b2tlIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4sIGFsbCB0YXNrcyB1cCB0byBhbmQKKyAgICAgICAgICAgIGluY2x1ZGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBhcmUgcnVuIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldC4KKyAgICAgICAgICAgIFRoZW4gYSBuZXcgdGVybWluYWwgaXMgb3BlbmVkLgorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBrZXkgUHl0aG9uIG9iamVjdHMgYW5kIGNvZGUgYXJlIGF2YWlsYWJsZSBpbiB0aGUgc2FtZQorICAgICAgICAgICAgd2F5IHRoZXkgYXJlIHRvIEJpdEJha2UgdGFza3MsIGluIHBhcnRpY3VsYXIsIHRoZSBkYXRhIHN0b3JlICdkJy4KKyAgICAgICAgICAgIFNvLCBjb21tYW5kcyBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgYXJlIHVzZWZ1bCB3aGVuIGV4cGxvcmluZyB0aGUgZGF0YQorICAgICAgICAgICAgc3RvcmUgYW5kIHJ1bm5pbmcgZnVuY3Rpb25zOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweWRldnNoZWxsPiBkLmdldFZhcigiU1RBR0lOR19ESVIiLCBUcnVlKQorICAgICAnL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cycKKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIlNUQUdJTkdfRElSIiwgRmFsc2UpCisgICAgICcke1RNUERJUn0vc3lzcm9vdHMnCisgICAgIHB5ZGV2c2hlbGw+IGQuc2V0VmFyKCJGT08iLCAiYmFyIikKKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIkZPTyIsIFRydWUpCisgICAgICdiYXInCisgICAgIHB5ZGV2c2hlbGw+IGQuZGVsVmFyKCJGT08iKQorICAgICBweWRldnNoZWxsPiBkLmdldFZhcigiRk9PIiwgVHJ1ZSkKKyAgICAgcHlkZXZzaGVsbD4gYmIuYnVpbGQuZXhlY19mdW5jKCJkb191bnBhY2siLCBkKQorICAgICBweWRldnNoZWxsPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGNvbW1hbmRzIGV4ZWN1dGUganVzdCBhcyBpZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3ZXJlIGV4ZWN1dGluZyB0aGVtLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB3b3JraW5nIHRoaXMgd2F5IGNhbiBiZSBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGEgYnVpbGQgb3IgcHJlcGFyaW5nCisgICAgICAgICAgICBzb2Z0d2FyZSB0byBiZSB1c2VkIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+IG9uIGEgdGFyZ2V0IG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZweXNoZWxsCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCBhbmQgcGxhY2VzIHlvdSBpbiBhbiBpbnRlcmFjdGl2ZQorICAgICAgICAgICAgUHl0aG9uIGludGVycHJldGVyIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PRV9URVJNSU5BTCc+PGZpbGVuYW1lPk9FX1RFUk1JTkFMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHVzaW5nIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4sIHlvdQorICAgICAgICAgICAgY2FuIGV4aXQgdGhlIHNoZWxsIGVpdGhlciBieSB1c2luZyBDdHJsK2Qgb3IgY2xvc2luZyB0aGUgdGVybWluYWwKKyAgICAgICAgICAgIHdpbmRvdy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSdwbGF0ZGV2LWJ1aWxkaW5nLXRhcmdldHMtd2l0aC1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+CiAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBUYXJnZXRzIHdpdGggTXVsdGlwbGUgQ29uZmlndXJhdGlvbnM8L3RpdGxlPgogCkBAIC00MTc3LDcgKzQzMTUsNyBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgU2V2ZXJhbCBleGFtcGxlcyBleGlzdCBpbiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1za2VsZXRvbjwvZmlsZW5hbWU+IGxheWVyIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CisgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb25mL211bHRpbGliLWV4YW1wbGUuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGU8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTQyMDMsNyArNDM0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIE1hbnkgc3RhbmRhcmQgcmVjaXBlcyBhcmUgYWxyZWFkeSBleHRlbmRlZCBhbmQgc3VwcG9ydCBtdWx0aXBsZSBsaWJyYXJpZXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hlY2sgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NvbmYvbXVsdGlsaWIuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gdG8gc2VlIGhvdyB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiB0byBzZWUgaG93IHRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAgZG9uZSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCQ0xBU1NFWFRFTkQnPjxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KQEAgLTQyMzksNyArNDM3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGxpYnJhcmllcyB5b3Ugd2FudCB0byBidWlsZC4KICAgICAgICAgICAgICAgICAgICAgWW91IGFjY29tcGxpc2ggdGhpcyB0aHJvdWdoIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIHdvdWxkIGJlIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgTUFDSElORSA9ICJxZW11eDg2LTY0IgpAQCAtNDMxNSw3ICs0NDUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHVuaXF1ZSBhcmNoaXRlY3R1cmUgaXMgZGVmaW5lZCBmb3IgdGhlIE11bHRpbGliIHBhY2thZ2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggY3JlYXRpbmcgYSB1bmlxdWUgZGVwbG95IGZvbGRlciB1bmRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3JwbTwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+bGliMzI8L2ZpbGVuYW1lPiBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtNjQ8L2ZpbGVuYW1lPiBpbWFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcG9zc2libGUgYXJjaGl0ZWN0dXJlcyBpbiB0aGUgc3lzdGVtIGFyZSAiYWxsIiwgInFlbXV4ODZfNjQiLApAQCAtNDY3NSw4ICs0ODEzLDggQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMnPgotICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzLXVzaW5nLXdpYyc+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENyZWF0aW5nIGFuIGltYWdlIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdGFyZ2V0IHVzaW5nIHRoZQpAQCAtNDY5MiwxMTI0ICs0ODMwLDc4MSBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGdlbmVyYXRlIHBhcnRpdGlvbmVkIGltYWdlcwotICAgICAgICAgICAgKDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi53aWM8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgIHR3byB3YXlzOiB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbmQgYnkgcnVubmluZwotICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBJbWFnZSBDcmVhdG9yIFdpYyBkaXJlY3RseS4KLSAgICAgICAgICAgIFRoZSBmb3JtZXIgd2F5IGlzIHByZWZlcmFibGUgYXMgaXQgaXMgZWFzaWVyIHRvIHVzZSBhbmQgdW5kZXJzdGFuZC4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZCBnZW5lcmF0ZXMgcGFydGl0aW9uZWQKKyAgICAgICAgICAgIGltYWdlcyBmcm9tIGV4aXN0aW5nIE9wZW5FbWJlZGRlZCBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgICAgICBJbWFnZSBnZW5lcmF0aW9uIGlzIGRyaXZlbiBieSBwYXJ0aXRpb25pbmcgY29tbWFuZHMKKyAgICAgICAgICAgIGNvbnRhaW5lZCBpbiBhbiBPcGVuZW1iZWRkZWQga2lja3N0YXJ0IGZpbGUKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBzcGVjaWZpZWQgZWl0aGVyIGRpcmVjdGx5IG9uCisgICAgICAgICAgICB0aGUgY29tbWFuZCBsaW5lIG9yIGFzIG9uZSBvZiBhIHNlbGVjdGlvbiBvZiBjYW5uZWQKKyAgICAgICAgICAgIGtpY2tzdGFydCBmaWxlcyBhcyBzaG93biB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IGNvbW1hbmQgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYS1wcm92aWRlZC1raWNrc3RhcnQtZmlsZSc+VXNpbmcgYW4gRXhpc3RpbmcgS2lja3N0YXJ0IEZpbGU8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIFdoZW4geW91IGFwcGx5IHRoZSBjb21tYW5kIHRvIGEgZ2l2ZW4gc2V0IG9mIGJ1aWxkCisgICAgICAgICAgICBhcnRpZmFjdHMsIHRoZSByZXN1bHQgaXMgYW4gaW1hZ2Ugb3Igc2V0IG9mIGltYWdlcyB0aGF0CisgICAgICAgICAgICBjYW4gYmUgZGlyZWN0bHkgd3JpdHRlbiBvbnRvIG1lZGlhIGFuZCB1c2VkIG9uIGEgcGFydGljdWxhcgorICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGEga2lja3N0YXJ0IGZpbGUgcmVmZXJlbmNlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC91bGluaz4iCisgICAgICAgICAgICAgICAgQ2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXdpYy1pbWFnZXMtb2UnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCB0aGUgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgICAgIGl0IGlzIGJhc2VkIG9uIGlzIGJ5IGRlZmluaXRpb24gaW5jb21wbGV0ZS4KKyAgICAgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoZSBjb21tYW5kIGlzIHRvIGFsbG93IHRoZSBnZW5lcmF0aW9uIG9mCisgICAgICAgICAgICBjdXN0b21pemVkIGltYWdlcywgYW5kIGFzIHN1Y2gsIHdhcyBkZXNpZ25lZCB0byBiZQorICAgICAgICAgICAgY29tcGxldGVseSBleHRlbnNpYmxlIHRocm91Z2ggYSBwbHVnLWluIGludGVyZmFjZS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz5XaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICAgICBvbiB0aGVzZSBwbHVnLWlucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBXaWMsCisgICAgICAgICAgICBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBoYXZlIGluCisgICAgICAgICAgICBwbGFjZSB0byBydW4gdGhlIHRvb2wsIHByb3ZpZGVzIGluc3RydWN0aW9uIG9uIGhvdyB0byB1c2UKKyAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eSwgYW5kIHByb3ZpZGVzIHNldmVyYWwgZXhhbXBsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLWJhY2tncm91bmQnPgorICAgICAgICAgICAgPHRpdGxlPkJhY2tncm91bmQ8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZ2VuZXJhdGUKLSAgICAgICAgICAgICAgICBwYXJ0aXRpb25lZCBpbWFnZXMgdGhlIHNhbWUgd2F5IGFzIGl0IGdlbmVyYXRlcwotICAgICAgICAgICAgICAgIGFueSBvdGhlciBpbWFnZSB0eXBlLgotICAgICAgICAgICAgICAgIFRvIGdlbmVyYXRlIGEgcGFydGl0aW9uZWQgaW1hZ2UsIHlvdSBuZWVkIHRvIG1vZGlmeQotICAgICAgICAgICAgICAgIHR3byB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBvbiB0aGUgV2ljIHV0aWxpdHkuCisgICAgICAgICAgICAgICAgV2hpbGUgbm9uZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIHRvIHVzZQorICAgICAgICAgICAgICAgIFdpYywgeW91IG1pZ2h0IGZpbmQgaXQgaW50ZXJlc3RpbmcuCiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgIldpYyIgaXMgZGVyaXZlZCBmcm9tIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UgQ3JlYXRvciAob2VpYykuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIm9lIiBkaXBodGhvbmcgaW4gIm9laWMiIHdhcyBwcm9tb3RlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldHRlciAidyIsIGJlY2F1c2UgIm9laWMiIGlzIGJvdGggZGlmZmljdWx0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICByZW1lbWJlciBhbmQgdG8gcHJvbm91bmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgTWVlZ28gSW1hZ2UgQ3JlYXRvciAoPGZpbGVuYW1lPm1pYzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFdpYyBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhdmlseSBtb2RpZmllZCB0byBtYWtlIGRpcmVjdCB1c2Ugb2YgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhcnRpZmFjdHMgaW5zdGVhZCBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGFyZSBhbHJlYWR5IGluY29ycG9yYXRlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBpcyBhIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYWxvbmUgdXRpbGl0eSB0aGF0IGluaXRpYWxseSBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZWFzaWVyLXRvLXVzZSBhbmQgbW9yZSBmbGV4aWJsZSByZXBsYWNlbWVudHMgZm9yIGFuCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGluIE9FIENvcmUncworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UtbGl2ZSc+PGZpbGVuYW1lPmltYWdlLWxpdmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgPGZpbGVuYW1lPm1rZWZpZGlzay5zaDwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBhbmQgdGhvc2UgZXhhbXBsZXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2l0aCBXaWMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIHRob3NlIHNjcmlwdHMgaXMgaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGEgZ2VuZXJhbC1wdXJwb3NlIHBhcnRpdGlvbmluZyBsYW5ndWFnZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIFJlZGhhdCBraWNrc3RhcnQgc3ludGF4LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1yZXF1aXJlbWVudHMnPgorICAgICAgICAgICAgPHRpdGxlPlJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSB0aGUgV2ljIHV0aWxpdHkgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtLCB5b3VyIHN5c3RlbSBuZWVkcyB0byBtZWV0IHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICByZXF1aXJlbWVudHM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IGRpc3RyaWJ1dGlvbiBvbiB5b3VyIGRldmVsb3BtZW50IGhvc3QgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsaXN0IG9mIGRpc3RyaWJ1dGlvbnMgdGhhdCBzdXBwb3J0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgc3lzdGVtIHV0aWxpdGllcywgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwPC9maWxlbmFtZT4sIG11c3QgYmUgaW5zdGFsbGVkIG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3Qgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGhhdmUgc291cmNlZCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgdGhlIGJ1aWxkIGFydGlmYWN0cyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUsIHdoaWNoIHR5cGljYWxseSBtZWFucyB0aGF0IHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFscmVhZHkgY3JlYXRlZCBhbiBpbWFnZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5lbWJlZGRlZCBidWlsZCBzeXN0ZW0gKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBpdCBtaWdodCBzZWVtIHJlZHVuZGFudCB0byBnZW5lcmF0ZSBhbiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gY3JlYXRlIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMsIHRoZSBjdXJyZW50IHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYyByZXF1aXJlcyB0aGUgYXJ0aWZhY3RzCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9ybSBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGJ1aWxkIHNldmVyYWwgbmF0aXZlIHRvb2xzLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHRvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgcGFydGVkLW5hdGl2ZSBkb3Nmc3Rvb2xzLW5hdGl2ZSBtdG9vbHMtbmF0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSAid2ljIiBhcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSB0aGUgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+d2ljIGtpY2tzdGFydCBmaWxlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz53aWMga2lja3N0YXJ0IGZpbGU8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIEZ1cnRoZXIgc3RlcHMgdG8gZ2VuZXJhdGUgYSBwYXJ0aXRpb25lZCBpbWFnZQotICAgICAgICAgICAgICAgIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IG90aGVyIGltYWdlIHR5cGUuCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGltYWdlIHR5cGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2J1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0ZS13aWMtaW1hZ2VzLXdpYyc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcgT3BlbkVtYmVkZGVkIEltYWdlIENyZWF0b3IgV2ljIHRvIEdlbmVyYXRlIFBhcnRpdGlvbmVkIEltYWdlczwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtZ2V0dGluZy1oZWxwJz4KKyAgICAgICAgICAgIDx0aXRsZT5HZXR0aW5nIEhlbHA8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgZ2VuZXJhdGVzIHBhcnRpdGlvbmVkCi0gICAgICAgICAgICAgICAgaW1hZ2VzIGZyb20gZXhpc3RpbmcgT3BlbkVtYmVkZGVkIGJ1aWxkIGFydGlmYWN0cy4KLSAgICAgICAgICAgICAgICBJbWFnZSBnZW5lcmF0aW9uIGlzIGRyaXZlbiBieSBwYXJ0aXRpb25pbmcgY29tbWFuZHMKLSAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gYW4gT3BlbmVtYmVkZGVkIGtpY2tzdGFydCBmaWxlCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIHNwZWNpZmllZCBlaXRoZXIgZGlyZWN0bHkgb24KLSAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCBsaW5lIG9yIGFzIG9uZSBvZiBhIHNlbGVjdGlvbiBvZiBjYW5uZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+IGZpbGVzIGFzIHNob3duIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IGNvbW1hbmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcHJvdmlkZWQta2lja3N0YXJ0LWZpbGUnPlVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIFdoZW4geW91IGFwcGx5IHRoZSBjb21tYW5kIHRvIGEgZ2l2ZW4gc2V0IG9mIGJ1aWxkCi0gICAgICAgICAgICAgICAgYXJ0aWZhY3RzLCB0aGUgcmVzdWx0IGlzIGFuIGltYWdlIG9yIHNldCBvZiBpbWFnZXMgdGhhdAotICAgICAgICAgICAgICAgIGNhbiBiZSBkaXJlY3RseSB3cml0dGVuIG9udG8gbWVkaWEgYW5kIHVzZWQgb24gYSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgc3lzdGVtLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHRoZSBpbmZyYXN0cnVjdHVyZQotICAgICAgICAgICAgICAgIGl0IGlzIGJhc2VkIG9uIGlzIGJ5IGRlZmluaXRpb24gaW5jb21wbGV0ZS4KLSAgICAgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgY29tbWFuZCBpcyB0byBhbGxvdyB0aGUgZ2VuZXJhdGlvbiBvZgotICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgaW1hZ2VzLCBhbmQgYXMgc3VjaCwgd2FzIGRlc2lnbmVkIHRvIGJlCi0gICAgICAgICAgICAgICAgY29tcGxldGVseSBleHRlbnNpYmxlIHRocm91Z2ggYSBwbHVnLWluIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtcGx1Z2lucyc+UGx1Zy1pbnM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBsdWctaW5zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIFdpYywKLSAgICAgICAgICAgICAgICBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBoYXZlIGluCi0gICAgICAgICAgICAgICAgcGxhY2UgdG8gcnVuIHRoZSB0b29sLCBwcm92aWRlcyBpbnN0cnVjdGlvbiBvbiBob3cgdG8gdXNlCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiB1dGlsaXR5LAotICAgICAgICAgICAgICAgIGFuZCBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLWJhY2tncm91bmQnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5CYWNrZ3JvdW5kPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYWNrZ3JvdW5kIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gdXRpbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgV2hpbGUgbm9uZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICBXaWMsIHlvdSBtaWdodCBmaW5kIGl0IGludGVyZXN0aW5nLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lICJXaWMiIGlzIGRlcml2ZWQgZnJvbSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSBDcmVhdG9yIChvZWljKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIm9lIiBkaXBodGhvbmcgaW4gIm9laWMiIHdhcyBwcm9tb3RlZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXIgInciLCBiZWNhdXNlICJvZWljIiBpcyBib3RoIGRpZmZpY3VsdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWVtYmVyIGFuZCB0byBwcm9ub3VuY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVlZ28gSW1hZ2UgQ3JlYXRvciAoPGZpbGVuYW1lPm1pYzwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1ld29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgV2ljIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhdmlseSBtb2RpZmllZCB0byBtYWtlIGRpcmVjdCB1c2Ugb2YgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXJ0aWZhY3RzIGluc3RlYWQgb2YgcGFja2FnZSBpbnN0YWxsYXRpb24gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgd2hpY2ggYXJlIGFscmVhZHkgaW5jb3Jwb3JhdGVkIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYXJ0aWZhY3RzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBpcyBhIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lIHV0aWxpdHkgdGhhdCBpbml0aWFsbHkgcHJvdmlkZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIGFuZCBtb3JlIGZsZXhpYmxlIHJlcGxhY2VtZW50cyBmb3IgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBmdW5jdGlvbmFsaXR5IGluIE9FIENvcmUncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWltYWdlLWxpdmUnPjxmaWxlbmFtZT5pbWFnZS1saXZlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCA8ZmlsZW5hbWU+bWtlZmlkaXNrLnNoPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgYW5kIHRob3NlIGV4YW1wbGVzIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aXRoIFdpYyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIHRob3NlIHNjcmlwdHMgaXMgaW1wbGVtZW50ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBhIGdlbmVyYWwtcHVycG9zZSBwYXJ0aXRpb25pbmcgbGFuZ3VhZ2UsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gUmVkaGF0IGtpY2tzdGFydCBzeW50YXguPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1yZXF1aXJlbWVudHMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5SZXF1aXJlbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IHV0aWxpdHkKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIHN5c3RlbSwgeW91ciBzeXN0ZW0gbmVlZHMKLSAgICAgICAgICAgICAgICAgICAgdG8gbWVldCB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgTGludXggZGlzdHJpYnV0aW9uIG9uIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IG11c3Qgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGlzdCBvZiBkaXN0cmlidXRpb25zIHRoYXQgc3VwcG9ydCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBzeXN0ZW0gdXRpbGl0aWVzLCBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwPC9maWxlbmFtZT4sIG11c3QgYmUgaW5zdGFsbGVkIG9uIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIHRoZSBidWlsZCBhcnRpZmFjdHMgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIHRoYXQgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFscmVhZHkgY3JlYXRlZCBhbiBpbWFnZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuZW1iZWRkZWQgYnVpbGQgc3lzdGVtIChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBpdCBtaWdodCBzZWVtIHJlZHVuZGFudCB0byBnZW5lcmF0ZSBhbiBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGNyZWF0ZSBhbiBpbWFnZSB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYywgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYyByZXF1aXJlcyB0aGUgYXJ0aWZhY3RzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gZ2VuZXJhdGVkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYnVpbGQgc2V2ZXJhbCBuYXRpdmUgdG9vbHMsIHdoaWNoIGFyZSB0b29scwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHRvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIHBhcnRlZC1uYXRpdmUgZG9zZnN0b29scy1uYXRpdmUgbXRvb2xzLW5hdGl2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBoYXZlIHNvdXJjZWQgb25lIG9mIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdHMgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLWdldHRpbmctaGVscCc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgSGVscDwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgZ2VuZXJhbCBoZWxwIGZvciB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgYnkgZW50ZXJpbmcgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIGJ5IGl0c2VsZiBvciBieSBlbnRlcmluZyB0aGUgY29tbWFuZCB3aXRoIGEgaGVscCBhcmd1bWVudAotICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgZ2VuZXJhbCBoZWxwIGZvciB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZCBieSBlbnRlcmluZyB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICBieSBpdHNlbGYgb3IgYnkgZW50ZXJpbmcgdGhlIGNvbW1hbmQgd2l0aCBhIGhlbHAgYXJndW1lbnQKKyAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgLWgKICAgICAgJCB3aWMgLS1oZWxwCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgV2ljIHN1cHBvcnRzIHR3byBjb21tYW5kczoKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bGlzdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIGZvciB0aGVzZSBjb21tYW5kcyBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDdXJyZW50bHksIFdpYyBzdXBwb3J0cyBzZXZlbiBjb21tYW5kczoKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3A8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmNyZWF0ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5saXN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5ybTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d3JpdGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIGZvciB0aGVzZSBjb21tYW5kcyBhcyBmb2xsb3dzIHdpdGgKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+IGJlaW5nIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBoZWxwIDxyZXBsYWNlYWJsZT5jb21tYW5kPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgd2l0aCA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+IGJlaW5nIGVpdGhlcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBkZXRhaWxlZCBoZWxwIG9uIGEgbnVtYmVyIG9mIHRvcGljcwotICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBoZWxwIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+d2ljIC0taGVscDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlzIGEgbGlzdCBvZiBhdmFpbGFibGUgaGVscAotICAgICAgICAgICAgICAgICAgICB0b3BpY3MgdW5kZXIgYSAiSGVscCB0b3BpY3MiIGhlYWRpbmcuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaGF2ZSB0aGUgaGVscCBzeXN0ZW0gZGlzcGxheSB0aGUgaGVscCB0ZXh0IGZvcgotICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIHRvcGljIGJ5IHByZWZhY2luZyB0aGUgdG9waWMgd2l0aAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljIGhlbHA8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBkZXRhaWxlZCBoZWxwIG9uIGEgbnVtYmVyIG9mIHRvcGljcworICAgICAgICAgICAgICAgIGZyb20gdGhlIGhlbHAgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPndpYyAtLWhlbHA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpc3BsYXlzIGEgbGlzdCBvZiBhdmFpbGFibGUgaGVscAorICAgICAgICAgICAgICAgIHRvcGljcyB1bmRlciBhICJIZWxwIHRvcGljcyIgaGVhZGluZy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGhhdmUgdGhlIGhlbHAgc3lzdGVtIGRpc3BsYXkgdGhlIGhlbHAgdGV4dCBmb3IKKyAgICAgICAgICAgICAgICBhIGdpdmVuIHRvcGljIGJ5IHByZWZhY2luZyB0aGUgdG9waWMgd2l0aAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgaGVscDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+aGVscF90b3BpYzwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgaW1hZ2VzCi0gICAgICAgICAgICAgICAgICAgIFdpYyBjcmVhdGVzIHVzaW5nIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICBraWNrc3RhcnQgZmlsZXMgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm0gb2YgdGhlIGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgaW1hZ2VzIFdpYyBjcmVhdGVzIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIGtpY2tzdGFydCBmaWxlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybSBvZgorICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgbGlzdCA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiBoZWxwCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgd2l0aCA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBiZWluZyBlaXRoZXIgPGZpbGVuYW1lPmRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWtlZmlkaXNrPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4sIHlvdSBjYW4gcHJvdmlkZQorICAgICAgICAgICAgICAgIGFueSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICBiZWFnbGVib25lCisgICAgICAgbXBjODMxNWUtcmRiCisgICAgICAgZ2VuZXJpY3g4NgorICAgICAgIGVkZ2Vyb3V0ZXIKKyAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sKKyAgICAgICBkaXJlY3RkaXNrLWdwdAorICAgICAgIG1rZWZpZGlzaworICAgICAgIGRpcmVjdGRpc2sKKyAgICAgICBzeXN0ZW1kLWJvb3RkaXNrCisgICAgICAgbWtoeWJyaWRpc28KKyAgICAgICBzZGltYWdlLWJvb3RwYXJ0CisgICAgICAgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMKKyAgICAgICBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdvcGVyYXRpb25hbC1tb2Rlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPk9wZXJhdGlvbmFsIE1vZGVzPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J29wZXJhdGlvbmFsLW1vZGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5PcGVyYXRpb25hbCBNb2RlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIFdpYyBpbiB0d28gZGlmZmVyZW50CisgICAgICAgICAgICAgICAgbW9kZXMsIGRlcGVuZGluZyBvbiBob3cgbXVjaCBjb250cm9sIHlvdSBuZWVkIGZvcgorICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdGhlIE9wZW5lbWJlZGRlZCBidWlsZCBhcnRpZmFjdHMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICB1c2VkIGZvciBjcmVhdGluZyB0aGUgaW1hZ2U6IFJhdyBhbmQgQ29va2VkOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SYXcgTW9kZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGV4cGxpY2l0bHkgc3BlY2lmeSBidWlsZCBhcnRpZmFjdHMgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvb2tlZCBNb2RlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZyBhbmQgaW1hZ2UgbmFtZSBhcmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgYW5kIHByb3ZpZGUgdGhlIGJ1aWxkIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBqdXN0IHN1cHBseSBhIGtpY2tzdGFydCBmaWxlIGFuZCB0aGUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGltYWdlIGZyb20gd2hpY2ggdG8gdXNlIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSBtb2RlIHlvdSB1c2UsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgYXJ0aWZhY3RzIHJlYWR5IGFuZCBhdmFpbGFibGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdyYXctbW9kZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlJhdyBNb2RlPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBXaWMgaW4gdHdvIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICBtb2RlcywgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIGNvbnRyb2wgeW91IG5lZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdGhlIE9wZW5lbWJlZGRlZCBidWlsZCBhcnRpZmFjdHMgdGhhdCBhcmUKLSAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGltYWdlOiBSYXcgYW5kIENvb2tlZDoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmF3IE1vZGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgZXhwbGljaXRseSBzcGVjaWZ5IGJ1aWxkIGFydGlmYWN0cyB0aHJvdWdoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29va2VkIE1vZGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIGFuZCBpbWFnZSBuYW1lIGFyZSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgYW5kIHByb3ZpZGUgdGhlIGJ1aWxkIGFydGlmYWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgV2ljIGluIHJhdyBtb2RlIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByaW1hcnkgdXNlIGZvciByYXcgbW9kZSBpcyBpZiB5b3UgaGF2ZSBidWlsdAorICAgICAgICAgICAgICAgICAgICB5b3VyIGtlcm5lbCBvdXRzaWRlIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgY2FuIHBvaW50IHRvIGFyYml0cmFyeSBrZXJuZWwsCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBsb2NhdGlvbnMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJhc3QgdGhpcyBiZWhhdmlvciB3aXRoIGNvb2tlZCBtb2RlIHdoZXJlIFdpYworICAgICAgICAgICAgICAgICAgICBsb29rcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4pLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSBtb2RlIHlvdSB1c2UsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIGFydGlmYWN0cyByZWFkeSBhbmQgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBlbnZpcm9ubWVudCBtdXN0IGJlIHNldCB1cCB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHNjcmlwdCBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdyYXctbW9kZSc+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5SYXcgTW9kZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhbCBmb3JtIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgaW4gcmF3IG1vZGUgaXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgd2ljIGNyZWF0ZSA8cmVwbGFjZWFibGU+aW1hZ2VfbmFtZTwvcmVwbGFjZWFibGU+LndrcyBbPHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPl0gWy4uLl0KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYWwgZm9ybSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgaW4gcmF3IG1vZGUgaXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgY3JlYXRlIDxyZXBsYWNlYWJsZT53a3NfZmlsZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5vcHRpb25zPC9yZXBsYWNlYWJsZT4gLi4uCiAKICAgICAgICBXaGVyZToKIAotICAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV9uYW1lPC9yZXBsYWNlYWJsZT4ud2tzCisgICAgICAgICAgPHJlcGxhY2VhYmxlPndrc19maWxlPC9yZXBsYWNlYWJsZT46CiAgICAgICAgICAgICAgQW4gT3BlbkVtYmVkZGVkIGtpY2tzdGFydCBmaWxlLiAgWW91IGNhbiBwcm92aWRlCiAgICAgICAgICAgICAgeW91ciBvd24gY3VzdG9tIGZpbGUgb3IgdXNlIGEgZmlsZSBmcm9tIGEgc2V0IG9mCiAgICAgICAgICAgICAgZXhpc3RpbmcgZmlsZXMgYXMgZGVzY3JpYmVkIGJ5IGZ1cnRoZXIgb3B0aW9ucy4KIAotICAgICAgICAgIC1vIDxyZXBsYWNlYWJsZT5PVVRESVI8L3JlcGxhY2VhYmxlPiwgLS1vdXRkaXI9PHJlcGxhY2VhYmxlPk9VVERJUjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgVGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRlIGltYWdlLgorICAgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAgICAgICAtbyA8cmVwbGFjZWFibGU+T1VURElSPC9yZXBsYWNlYWJsZT4sIC0tb3V0ZGlyIDxyZXBsYWNlYWJsZT5PVVRESVI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgZGlyZWN0b3J5IHRvIGNyZWF0ZSBpbWFnZSBpbgorICAgICAgICAgICAgLWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPiwgLS1pbWFnZS1uYW1lIDxyZXBsYWNlYWJsZT5JTUFHRV9OQU1FPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIG9mIHRoZSBpbWFnZSB0byB1c2UgdGhlIGFydGlmYWN0cyBmcm9tIGUuZy4gY29yZS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS1zYXRvCisgICAgICAgICAgICAtciA8cmVwbGFjZWFibGU+Uk9PVEZTX0RJUjwvcmVwbGFjZWFibGU+LCAtLXJvb3Rmcy1kaXIgPHJlcGxhY2VhYmxlPlJPT1RGU19ESVI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gdGhlIC9yb290ZnMgZGlyIHRvIHVzZSBhcyB0aGUgLndrcyByb290ZnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UKKyAgICAgICAgICAgIC1iIDxyZXBsYWNlYWJsZT5CT09USU1HX0RJUjwvcmVwbGFjZWFibGU+LCAtLWJvb3RpbWctZGlyIDxyZXBsYWNlYWJsZT5CT09USU1HX0RJUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byB0aGUgZGlyIGNvbnRhaW5pbmcgdGhlIGJvb3QgYXJ0aWZhY3RzIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL0VGSSBvciAvc3lzbGludXggZGlycykgdG8gdXNlIGFzIHRoZSAud2tzIGJvb3RpbWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UKKyAgICAgICAgICAgIC1rIDxyZXBsYWNlYWJsZT5LRVJORUxfRElSPC9yZXBsYWNlYWJsZT4sIC0ta2VybmVsLWRpciA8cmVwbGFjZWFibGU+S0VSTkVMX0RJUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byB0aGUgZGlyIGNvbnRhaW5pbmcgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLndrcyBib290aW1nCisgICAgICAgICAgICAtbiA8cmVwbGFjZWFibGU+TkFUSVZFX1NZU1JPT1Q8L3JlcGxhY2VhYmxlPiwgLS1uYXRpdmUtc3lzcm9vdCA8cmVwbGFjZWFibGU+TkFUSVZFX1NZU1JPT1Q8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBpbWFnZQorICAgICAgICAgICAgLXMsIC0tc2tpcC1idWlsZC1jaGVjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgdGhlIGJ1aWxkIGNoZWNrCisgICAgICAgICAgICAtZiwgLS1idWlsZC1yb290ZnMgICAgYnVpbGQgcm9vdGZzCisgICAgICAgICAgICAtYyB7Z3ppcCxiemlwMix4en0sIC0tY29tcHJlc3Mtd2l0aCB7Z3ppcCxiemlwMix4en0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyBpbWFnZSB3aXRoIHNwZWNpZmllZCBjb21wcmVzc29yCisgICAgICAgICAgICAtbSwgLS1ibWFwICAgICAgICAgICAgZ2VuZXJhdGUgLmJtYXAKKyAgICAgICAgICAgIC0tbm8tZnN0YWItdXBkYXRlICAgICBEbyBub3QgY2hhbmdlIGZzdGFiIGZpbGUuCisgICAgICAgICAgICAtdiA8cmVwbGFjZWFibGU+VkFSU19ESVI8L3JlcGxhY2VhYmxlPiwgLS12YXJzIDxyZXBsYWNlYWJsZT5WQVJTX0RJUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGggJmx0O2ltYWdlJmd0Oy5lbnYgZmlsZXMgdGhhdCBzdG9yZSBiaXRiYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzCisgICAgICAgICAgICAtRCwgLS1kZWJ1ZyAgICAgICAgICAgb3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgcm9vdCBwcml2aWxlZ2VzIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgV2ljLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gZmFjdCwgeW91IHNob3VsZCBub3QgcnVuIGFzIHJvb3Qgd2hlbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdHkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAtaSA8cmVwbGFjZWFibGU+UFJPUEVSVElFU19GSUxFPC9yZXBsYWNlYWJsZT4sIC0taW5maWxlPTxyZXBsYWNlYWJsZT5QUk9QRVJUSUVTX0ZJTEU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgIFRoZSBuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIHRoZSB2YWx1ZXMgZm9yIGltYWdlCi0gICAgICAgICAgICAgcHJvcGVydGllcyBhcyBhIEpTT04gZmlsZS4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdjb29rZWQtbW9kZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNvb2tlZCBNb2RlPC90aXRsZT4KIAotICAgICAgICAgIC1lIDxyZXBsYWNlYWJsZT5JTUFHRV9OQU1FPC9yZXBsYWNlYWJsZT4sIC0taW1hZ2UtbmFtZT08cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGltYWdlIGZyb20gd2hpY2ggdG8gdXNlIHRoZSBhcnRpZmFjdHMKLSAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIFdpYyBpbiBjb29rZWQgbW9kZSBsZXZlcmFnZXMgb2ZmIGFydGlmYWN0cyBpbgorICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSBrZXJuZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGxvY2F0aW9ucyBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgdG8gcHJvdmlkZSBpcyBhIGtpY2tzdGFydCBmaWxlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgaW1hZ2UgZnJvbSB3aGljaCB0byB1c2UgYXJ0aWZhY3RzIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSAiLWUiIG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGxvb2tzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPikKKyAgICAgICAgICAgICAgICAgICAgZm9yIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAtciA8cmVwbGFjZWFibGU+Uk9PVEZTX0RJUjwvcmVwbGFjZWFibGU+LCAtLXJvb3Rmcy1kaXI9PHJlcGxhY2VhYmxlPlJPT1RGU19ESVI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgIFRoZSBwYXRoIHRvIHRoZSA8ZmlsZW5hbWU+L3Jvb3RmczwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byB1c2UgYXMgdGhlCi0gICAgICAgICAgICAgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiByb290ZnMgc291cmNlLgotCi0gICAgICAgICAgLWIgPHJlcGxhY2VhYmxlPkJPT1RJTUdfRElSPC9yZXBsYWNlYWJsZT4sIC0tYm9vdGltZy1kaXI9PHJlcGxhY2VhYmxlPkJPT1RJTUdfRElSPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGJvb3QgYXJ0aWZhY3RzCi0gICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9FRkk8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+L3N5c2xpbnV4PC9maWxlbmFtZT4pIHRvIHVzZSBhcyB0aGUgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBib290aW1nCi0gICAgICAgICAgICAgc291cmNlLgotCi0gICAgICAgICAgLWsgPHJlcGxhY2VhYmxlPktFUk5FTF9ESVI8L3JlcGxhY2VhYmxlPiwgLS1rZXJuZWwtZGlyPTxyZXBsYWNlYWJsZT5LRVJORUxfRElSPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGtlcm5lbCB0byB1c2UKLSAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBib290IGltYWdlLgotCi0gICAgICAgICAgLW4gPHJlcGxhY2VhYmxlPk5BVElWRV9TWVNST09UPC9yZXBsYWNlYWJsZT4sIC0tbmF0aXZlLXN5c3Jvb3Q9PHJlcGxhY2VhYmxlPk5BVElWRV9TWVNST09UPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QgY29udGFpbmluZyB0aGUgdG9vbHMgdG8gdXNlCi0gICAgICAgICAgICAgdG8gYnVpbGQgdGhlIGltYWdlLgotCi0gICAgICAgICAgLXMsIC0tc2tpcC1idWlsZC1jaGVjawotICAgICAgICAgICAgICBTa2lwcyB0aGUgYnVpbGQgY2hlY2suCi0KLSAgICAgICAgICAtRCwgLS1kZWJ1ZwotICAgICAgICAgICAgICBPdXRwdXQgZGVidWcgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgcm9vdCBwcml2aWxlZ2VzIHRvIHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCB5b3Ugc2hvdWxkIG5vdCBydW4gYXMgcm9vdCB3aGVuIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29va2VkLW1vZGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29va2VkIE1vZGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYWwgZm9ybSBvZiB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIENvb2tlZCBNb2RlIGlzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgPHJlcGxhY2VhYmxlPmtpY2tzdGFydF9maWxlPC9yZXBsYWNlYWJsZT4gLWUgPHJlcGxhY2VhYmxlPmltYWdlX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhbCBmb3JtIG9mIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB1c2luZyBDb29rZWQgTW9kZSBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPiAtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+CiAKICAgICAgICBXaGVyZToKIAotICAgICAgICAgICA8cmVwbGFjZWFibGU+a2lja3N0YXJ0X2ZpbGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgQW4gT3BlbkVtYmVkZGVkIGtpY2tzdGFydCBmaWxlLiBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24KLSAgICAgICAgICAgICAgIGN1c3RvbSBmaWxlIG9yIGEgc3VwcGxpZWQgZmlsZS4KKyAgICAgICAgICA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICBBbiBPcGVuRW1iZWRkZWQga2lja3N0YXJ0IGZpbGUuICBZb3UgY2FuIHByb3ZpZGUKKyAgICAgICAgICAgICB5b3VyIG93biBjdXN0b20gZmlsZSBvciB1c2UgYSBmaWxlIGZyb20gYSBzZXQgb2YKKyAgICAgICAgICAgICBleGlzdGluZyBmaWxlcyBwcm92aWRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgcmVsZWFzZS4KIAotICAgICAgICAgICA8cmVwbGFjZWFibGU+aW1hZ2VfbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZm9ybSBpcyB0aGUgc2ltcGxlc3QgYW5kIG1vc3QgdXNlci1mcmllbmRseSwgYXMgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHJlcXVpcmUgc3BlY2lmeWluZyBhbGwgaW5kaXZpZHVhbCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgeW91ciBvd24KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZmlsZSBvciBvbmUgcHJvdmlkZWQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hLXByb3ZpZGVkLWtpY2tzdGFydC1maWxlJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgYW4gRXhpc3RpbmcgS2lja3N0YXJ0IEZpbGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgd2FudCB0byBjcmVhdGUgeW91ciBvd24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgY2FuIHVzZSBhbiBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICBmaWxlIHByb3ZpZGVkIGJ5IHRoZSBXaWMgaW5zdGFsbGF0aW9uLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGxpc3QgdGhlIGF2YWlsYWJsZSBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBsaXN0IGltYWdlcwotICAgICBkaXJlY3RkaXNrIENyZWF0ZSBhICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCi0gICAgIG1rZWZpZGlzayBDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UKKyAgICAgICAgICByZXF1aXJlZCBhcmd1bWVudDoKKyAgICAgICAgICAgICAtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+LCAtLWltYWdlLW5hbWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gZS5nLiBjb3JlLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLXNhdG8KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgYW4gZXhpc3RpbmcgZmlsZSwgeW91IGRvIG5vdCBoYXZlIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBpbiBSYXcgTW9kZSB0aGF0IHVzZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrPC9maWxlbmFtZT4gZmlsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hLXByb3ZpZGVkLWtpY2tzdGFydC1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhbiBFeGlzdGluZyBLaWNrc3RhcnQgRmlsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgd2FudCB0byBjcmVhdGUgeW91ciBvd24ga2lja3N0YXJ0IGZpbGUsIHlvdQorICAgICAgICAgICAgICAgIGNhbiB1c2UgYW4gZXhpc3RpbmcgZmlsZSBwcm92aWRlZCBieSB0aGUgV2ljIGluc3RhbGxhdGlvbi4KKyAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBraWNrc3RhcnQgZmlsZXMgY2FuIGJlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIHR3byBsb2NhdGlvbnM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5L21ldGEteW9jdG8tYnNwL3dpYworICAgICBwb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gbGlzdCB0aGUgYXZhaWxhYmxlIGtpY2tzdGFydAorICAgICAgICAgICAgICAgIGZpbGVzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbGlzdCBpbWFnZXMKKyAgICAgICBiZWFnbGVib25lICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCisgICAgICAgbXBjODMxNWUtcmRiICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCisgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisgICAgICAgZWRnZXJvdXRlciAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgRWRnZXJvdXRlcgorICAgICAgIHFlbXV4ODYtZGlyZWN0ZGlzayAgICAgICAgICAgIAkJQ3JlYXRlIGEgcWVtdSBtYWNoaW5lICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzay1ncHQgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIG1rZWZpZGlzayAgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzayAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIHN5c3RlbWQtYm9vdGRpc2sgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIHdpdGggc3lzdGVtZC1ib290CisgICAgICAgbWtoeWJyaWRpc28gICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSBoeWJyaWQgSVNPIGltYWdlCisgICAgICAgc2RpbWFnZS1ib290cGFydCAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSB3aXRoIGEgYm9vdCBwYXJ0aXRpb24KKyAgICAgICBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAgICAgICAJCUNyZWF0ZSBtdWx0aSByb290ZnMgaW1hZ2UgdXNpbmcgcm9vdGZzIHBsdWdpbgorICAgICAgIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2Ugd2l0aCBjdXN0b20gYm9vdGxvYWRlciBjb25maWcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIGFuIGV4aXN0aW5nIGZpbGUsIHlvdSBkbyBub3QgaGF2ZSB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGluIFJhdyBNb2RlIHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzazwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBjcmVhdGUgZGlyZWN0ZGlzayAtciA8cmVwbGFjZWFibGU+cm9vdGZzX2RpcjwvcmVwbGFjZWFibGU+IC1iIDxyZXBsYWNlYWJsZT5ib290aW1nX2RpcjwvcmVwbGFjZWFibGU+IFwKICAgICAgICAgICAgLWsgPHJlcGxhY2VhYmxlPmtlcm5lbF9kaXI8L3JlcGxhY2VhYmxlPiAtbiA8cmVwbGFjZWFibGU+bmF0aXZlX3N5c3Jvb3Q8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0aGUgYWN0dWFsIHBhcnRpdGlvbiBsYW5ndWFnZSBjb21tYW5kcwotICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSA8ZmlsZW5hbWU+bWtlZmlkaXNrLndrczwvZmlsZW5hbWU+IGZpbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYW4gaW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlCi0gICAgICMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIEVGSSBkaXNrIGltYWdlIHRoYXQgdGhlIHVzZXIKLSAgICAgIyBjYW4gZGlyZWN0bHkgZGQgdG8gYm9vdCBtZWRpYS4KLQotICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNAotCi0gICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQKLQorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGFjdHVhbCBwYXJ0aXRpb24gbGFuZ3VhZ2UgY29tbWFuZHMKKyAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSA8ZmlsZW5hbWU+Z2VuZXJpY3g4Ni53a3M8L2ZpbGVuYW1lPiBmaWxlIHRvCisgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYW4gaW1hZ2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisgICAgICMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KiBtYWNoaW5lcworICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9Z3J1Yi1lZmkiIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorICAgICBwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0IC0tdXNlLXV1aWQKICAgICAgcGFydCBzd2FwIC0tb25kaXNrIHNkYSAtLXNpemUgNDQgLS1sYWJlbCBzd2FwMSAtLWZzdHlwZT1zd2FwCiAKLSAgICAgYm9vdGxvYWRlciAgLS10aW1lb3V0PTEwICAtLWFwcGVuZD0icm9vdHdhaXQgcm9vdGZzdHlwZT1leHQzIGNvbnNvbGU9dHR5UENIMCwxMTUyMDAgY29uc29sZT10dHkwIHZtYWxsb2M9MjU2TUIgc25kLWhkYS1pbnRlbC5lbmFibGVfbXNpPTAiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgIGJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLXVzYWdlLWV4YW1wbGVzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLXVzYWdlLWV4YW1wbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gdXNlCisgICAgICAgICAgICAgICAgdGhlIFdpYyB1dGlsaXR5LgorICAgICAgICAgICAgICAgIEFsbCB0aGUgZXhhbXBsZXMgYXNzdW1lIHRoZSBsaXN0IG9mIHJlcXVpcmVtZW50cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd2ljLXJlcXVpcmVtZW50cyc+UmVxdWlyZW1lbnRzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGhhdmUgYmVlbiBtZXQuCisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGFzc3VtZSB0aGUgcHJldmlvdXNseSBnZW5lcmF0ZWQgaW1hZ2UgaXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdnZW5lcmF0ZS1hbi1pbWFnZS11c2luZy1hLXByb3ZpZGVkLWtpY2tzdGFydC1maWxlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+R2VuZXJhdGUgYW4gSW1hZ2UgdXNpbmcgYW4gRXhpc3RpbmcgS2lja3N0YXJ0IEZpbGU8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gdXRpbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgQWxsIHRoZSBleGFtcGxlcyBhc3N1bWUgdGhlIGxpc3Qgb2YgcmVxdWlyZW1lbnRzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd2ljLXJlcXVpcmVtZW50cyc+UmVxdWlyZW1lbnRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBoYXZlIGJlZW4gbWV0LgotICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZXMgYXNzdW1lIHRoZSBwcmV2aW91c2x5IGdlbmVyYXRlZCBpbWFnZSBpcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2dlbmVyYXRlLWFuLWltYWdlLXVzaW5nLWEtcHJvdmlkZWQta2lja3N0YXJ0LWZpbGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+R2VuZXJhdGUgYW4gSW1hZ2UgdXNpbmcgYW4gRXhpc3RpbmcgS2lja3N0YXJ0IEZpbGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHJ1bnMgaW4gQ29va2VkIE1vZGUgYW5kIHVzZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWtlZmlkaXNrPC9maWxlbmFtZT4ga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBydW5zIGluIENvb2tlZCBNb2RlIGFuZCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWtlZmlkaXNrPC9maWxlbmFtZT4ga2lja3N0YXJ0IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgY3JlYXRlIG1rZWZpZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgQ2hlY2tpbmcgYmFzaWMgYnVpbGQgZW52aXJvbm1lbnQuLi4KLSAgICAgRG9uZS4KLQotICAgICBDcmVhdGluZyBpbWFnZShzKS4uLgotCi0gICAgIEluZm86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgICA8cmVwbGFjZWFibGU+Y3VycmVudF9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPi9idWlsZC9ta2VmaWRpc2stMjAxMzEwMjMwOTQ2LXNkYS5kaXJlY3QKKyAgICAgSU5GTzogQnVpbGRpbmcgd2ljLXRvb2xzLi4uCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgIElORk86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6CisgICAgICAgLi9ta2VmaWRpc2stMjAxNzEwMDYxNDA5LXNkYS5kaXJlY3QKIAogICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKLSAgICAgIFJPT1RGU19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvd29yay9taW5ub3ctcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcwotICAgICAgQk9PVElNR19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvd29yay9taW5ub3ctcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL2NvcmUtaW1hZ2UtbWluaW1hbC0xLjAvaGRkaW1nCi0gICAgICBLRVJORUxfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL21pbm5vdy91c3Ivc3JjL2tlcm5lbAotICAgICAgTkFUSVZFX1NZU1JPT1Q6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4CisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAud2ljLnI0aGtkczBiL3Jvb3Rmc19jb3B5CisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCi0gICAgIFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2Uvc2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcy9ta2VmaWRpc2sud2tzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBzaG93cyB0aGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbiBpbWFnZSBieSBydW5uaW5nIGluIENvb2tlZCBNb2RlIGFuZCB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+IG9wdGlvbiB3aXRoIGFuIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBraWNrc3RhcnQgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCB0aGF0IGlzIG5lY2Vzc2FyeSBpcyB0byBzcGVjaWZ5IHRoZSBpbWFnZSB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSB0aGUgYXJ0aWZhY3RzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IG5lZWRzIHRvIGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXQgdG8gdGhlIG1hY2hpbmUgeW91IGFyZSB1c2luZywgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaW5ub3ciIGluIHRoaXMgZXhhbXBsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICBJTkZPOiBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgorICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvbWtlZmlkaXNrLndrcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIHNob3dzIHRoZSBlYXNpZXN0IHdheSB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgYnkgcnVubmluZyBpbiBjb29rZWQgbW9kZSBhbmQgc3VwcGx5aW5nCisgICAgICAgICAgICAgICAgICAgIGEga2lja3N0YXJ0IGZpbGUgYW5kIHRoZSAiLWUiIG9wdGlvbiB0byBwb2ludCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBuZWVkcyB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldCB0byB0aGUgbWFjaGluZSB5b3UgYXJlIHVzaW5nLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICAicWVtdXg4NiIgaW4gdGhpcyBleGFtcGxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgc3BlY2lmaWVzIHRoZSBleGFjdCBpbWFnZSBjcmVhdGVkIGFzIHdlbGwgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGl0IHdhcyBjcmVhdGVkLCB3aGljaCBpcyBpbiB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGFsc28gbmFtZXMgdGhlIGFydGlmYWN0cyB1c2VkIGFuZCB0aGUgZXhhY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gc2NyaXB0IHRoYXQgd2FzIHVzZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHZlcmlmeSB0aGUgZGV0YWlscyBwcm92aWRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGltYWdlIHdhcyBpbmRlZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGV4YWN0bHkgYXMgZXhwZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgaW1hZ2UgYnVpbGRzLCB0aGUgb3V0cHV0IHByb3ZpZGVzIGltYWdlCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBhcnRpZmFjdCB1c2UsIGFuZCBraWNrc3RhcnQgZmlsZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyB2ZXJpZnkgdGhlIGRldGFpbHMgcHJvdmlkZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGltYWdlIHdhcyBpbmRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgZXhhY3RseSBhcyBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZSwgeW91IGNhbiBub3cgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0byBhIFVTQiBzdGljaywgb3Igd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgeW91ciBpbWFnZSwgYW5kIGJvb3QgdGhlIHJlc3VsdGluZyBtZWRpYS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gd3JpdGUgdGhlIGltYWdlIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCBjb3B5IGJ1aWxkL21rZWZpZGlzay0yMDEzMTAyMzA5NDYtc2RhLmRpcmVjdCAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRkIGlmPWJ1aWxkL21rZWZpZGlzay0yMDEzMTAyMzA5NDYtc2RhLmRpcmVjdCBvZj0vZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiB0byBmbGFzaCBhIGRldmljZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW4gaW1hZ2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZmxhc2hpbmctaW1hZ2VzLXVzaW5nLWJtYXB0b29sJz5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZSwgeW91IGNhbiBub3cgd3JpdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIGEgVVNCIHN0aWNrLCBvciB3aGF0ZXZlciBtZWRpYSBmb3Igd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHlvdXIgaW1hZ2UsIGFuZCBib290IGZyb20gdGhlIG1lZGlhLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHdyaXRlIHRoZSBpbWFnZSBieSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcHRvb2wgY29weSBidWlsZC9ta2VmaWRpc2stMjAxNzEwMDYxNDA5LXNkYS5kaXJlY3QgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkZCBpZj1idWlsZC9ta2VmaWRpc2stMjAxNzEwMDYxNDA5LXNkYS5kaXJlY3Qgb2Y9L2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiB0byBmbGFzaCBhIGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBpbWFnZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+Rmxhc2hpbmcgSW1hZ2VzIFVzaW5nIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1tb2RpZmllZC1raWNrc3RhcnQtZmlsZSc+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhIE1vZGlmaWVkIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hLW1vZGlmaWVkLWtpY2tzdGFydC1maWxlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgYSBNb2RpZmllZCBLaWNrc3RhcnQgRmlsZTwvdGl0bGU+CiAKLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHBhcnRpdGlvbmVkIGltYWdlIGNyZWF0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBkcml2ZW4gYnkgdGhlIGtpY2tzdGFydCBmaWxlLCBpdCBpcyBlYXN5IHRvIGFmZmVjdAotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgY3JlYXRpb24gYnkgY2hhbmdpbmcgdGhlIHBhcmFtZXRlcnMgaW4gdGhlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhhdCB0aHJvdWdoIG1vZGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT5kaXJlY3RkaXNrPC9maWxlbmFtZT4ga2lja3N0YXJ0IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBwYXJ0aXRpb25lZCBpbWFnZSBjcmVhdGlvbiBpcyBkcml2ZW4gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGtpY2tzdGFydCBmaWxlLCBpdCBpcyBlYXN5IHRvIGFmZmVjdCBpbWFnZSBjcmVhdGlvbiBieQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2luZyB0aGUgcGFyYW1ldGVycyBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgZGVtb25zdHJhdGVzIHRoYXQgdGhyb3VnaCBtb2RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdDwvZmlsZW5hbWU+IGtpY2tzdGFydAorICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IHRvIHNob3cgdGhlIGxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIGV4aXN0aW5nIGtpY2tzdGFydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlc2UgZmlsZXMgcmVzaWRlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcy88L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgYXZhaWxhYmxlIGZpbGVzIHJlc2lkZSBpbiB0aGlzIGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gY3JlYXRlIGFuZCBhZGQgeW91ciBvd24gY3VzdG9tIGZpbGVzIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCB1c2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljIGxpc3QgaW1hZ2VzPC9maWxlbmFtZT4gY29tbWFuZCB3b3VsZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHlvdXIga2lja3N0YXJ0IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljIGxpc3QgaW1hZ2VzPC9maWxlbmFtZT4gdG8gc2hvdyB0aGUgbGlzdAorICAgICAgICAgICAgICAgICAgICBvZiBleGlzdGluZyBraWNrc3RhcnQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdC53a3M8L2ZpbGVuYW1lPiBmaWxlIHJlc2lkZXMgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBhdmFpbGFibGUgZmlsZXMgcmVzaWRlIGluIHRoaXMgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNyZWF0ZSBhbmQgYWRkIHlvdXIgb3duIGN1c3RvbSBmaWxlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IHVzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IGNvbW1hbmQgd291bGQgdGhlbgorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHlvdXIga2lja3N0YXJ0IGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzazwvZmlsZW5hbWU+IGZpbGUgYWxyZWFkeSBkb2VzIG1vc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHdoYXQgaXMgbmVlZGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgZm9yIHRoZSBoYXJkd2FyZSBpbiB0aGlzIGV4YW1wbGUsIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBuZWVkIHRvIGJvb3QgZnJvbSA8ZmlsZW5hbWU+c2RiPC9maWxlbmFtZT4gaW5zdGVhZAotICAgICAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnNkYTwvZmlsZW5hbWU+LCB3aGljaCBpcyB3aGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBraWNrc3RhcnQgZmlsZSB1c2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdDwvZmlsZW5hbWU+IGZpbGUgYWxyZWFkeSBkb2VzCisgICAgICAgICAgICAgICAgICAgIG1vc3Qgb2Ygd2hhdCBpcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGZvciB0aGUgaGFyZHdhcmUgaW4gdGhpcyBleGFtcGxlLCB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBuZWVkIHRvIGJvb3QgZnJvbSA8ZmlsZW5hbWU+c2RiPC9maWxlbmFtZT4gaW5zdGVhZAorICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+c2RhPC9maWxlbmFtZT4sIHdoaWNoIGlzIHdoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdDwvZmlsZW5hbWU+IGtpY2tzdGFydCBmaWxlCisgICAgICAgICAgICAgICAgICAgIHVzZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgYmVnaW5zIGJ5IG1ha2luZyBhIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay53a3M8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIGJ5IGNoYW5naW5nIHRoZSBsaW5lcyB0aGF0IHNwZWNpZnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgZGlzayBmcm9tIHdoaWNoIHRvIGJvb3QuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY3AgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay53a3MgXAotICAgICAgICAgIC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGIud2tzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBOZXh0LCB0aGUgZXhhbXBsZSBtb2RpZmllcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrc2RiLndrczwvZmlsZW5hbWU+IGZpbGUgYW5kIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBpbnN0YW5jZXMgb2YgIjxmaWxlbmFtZT4tLW9uZGlzayBzZGE8L2ZpbGVuYW1lPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvICI8ZmlsZW5hbWU+LS1vbmRpc2sgc2RiPC9maWxlbmFtZT4iLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgY2hhbmdlcyB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyBhbmQgbGVhdmVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVtYWluaW5nIGxpbmVzIHVudG91Y2hlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgYmVnaW5zIGJ5IG1ha2luZyBhIGNvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdC53a3M8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgdGhlbiBieSBjaGFuZ2luZyB0aGUgbGluZXMgdGhhdCBzcGVjaWZ5CisgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgZGlzayBmcm9tIHdoaWNoIHRvIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjcCAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2stZ3B0LndrcyBcCisgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrc2RiLWdwdC53a3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBOZXh0LCB0aGUgZXhhbXBsZSBtb2RpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2tzZGItZ3B0LndrczwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgYWxsIGluc3RhbmNlcyBvZgorICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPi0tb25kaXNrIHNkYTwvZmlsZW5hbWU+IiB0bworICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPi0tb25kaXNrIHNkYjwvZmlsZW5hbWU+Ii4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgY2hhbmdlcyB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyBhbmQgbGVhdmVzCisgICAgICAgICAgICAgICAgICAgIHRoZSByZW1haW5pbmcgbGluZXMgdW50b3VjaGVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHBhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1wY2Jpb3MgLS1vbmRpc2sgc2RiIC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKLSAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbGluZXMgYXJlIGNoYW5nZWQsIHRoZSBleGFtcGxlIGdlbmVyYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrc2RiPC9maWxlbmFtZT4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBwb2ludHMgdGhlIHByb2Nlc3MgYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gYXJ0aWZhY3RzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE5leHQgVW5pdCBvZiBDb21wdXRpbmcgKG51YykKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgZGlyZWN0ZGlza3NkYiAtZSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgQ2hlY2tpbmcgYmFzaWMgYnVpbGQgZW52aXJvbm1lbnQuLi4KLSAgICAgRG9uZS4KKyAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbGluZXMgYXJlIGNoYW5nZWQsIHRoZSBleGFtcGxlIGdlbmVyYXRlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2tzZGItZ3B0PC9maWxlbmFtZT4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIHBvaW50cyB0aGUgcHJvY2VzcyBhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFydGlmYWN0cyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIE5leHQgVW5pdCBvZiBDb21wdXRpbmcgKG51YykKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBjcmVhdGUgZGlyZWN0ZGlza3NkYi1ncHQgLWUgY29yZS1pbWFnZS1taW5pbWFsCisgICAgIElORk86IEJ1aWxkaW5nIHdpYy10b29scy4uLgorICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgLgorICAgICBJbml0aWFsaXNpbmcgdGFza3M6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMQorICAgICBOT1RFOiBFeGVjdXRpbmcgU2V0U2NlbmUgVGFza3MKKyAgICAgTk9URTogRXhlY3V0aW5nIFJ1blF1ZXVlIFRhc2tzCisgICAgIE5PVEU6IFRhc2tzIFN1bW1hcnk6IEF0dGVtcHRlZCAxMTYxIHRhc2tzIG9mIHdoaWNoIDExNTcgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5kIGFsbCBzdWNjZWVkZWQuCisgICAgIElORk86IENyZWF0aW5nIGltYWdlKHMpLi4uCiAKLSAgICAgQ3JlYXRpbmcgaW1hZ2UocykuLi4KLQotICAgICBJbmZvOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgotICAgICAgPHJlcGxhY2VhYmxlPmN1cnJlbnRfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4vYnVpbGQvZGlyZWN0ZGlza3NkYi0yMDEzMTAyMzExMzEtc2RiLmRpcmVjdAorICAgICBJTkZPOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgIC4vZGlyZWN0ZGlza3NkYi1ncHQtMjAxNzEwMDkwOTM4LXNkYi5kaXJlY3QKIAogICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKKyAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC53aWMuaGszd2w2em4vcm9vdGZzX2NvcHkKKyAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQorICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NgorICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCiAKLSAgICAgIFJPT1RGU19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvd29yay9udWMtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcwotICAgICAgQk9PVElNR19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvbnVjL3Vzci9zaGFyZQotICAgICAgS0VSTkVMX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9udWMvdXNyL3NyYy9rZXJuZWwKLSAgICAgIE5BVElWRV9TWVNST09UOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eAotCi0gICAgIFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2Uvc2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcy9kaXJlY3RkaXNrc2RiLndrcwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB5b3UgY2FuIG5vdyBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT4gdGhlIGltYWdlIHRvIGEgVVNCIHN0aWNrLCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdSBidWlsdCB5b3VyIGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJvb3QgdGhlIHJlc3VsdGluZyBtZWRpYToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRkIGlmPWJ1aWxkL2RpcmVjdGRpc2tzZGItMjAxMzEwMjMxMTMxLXNkYi5kaXJlY3Qgb2Y9L2Rldi9zZGIKLSAgICAgODYwMTgrMCByZWNvcmRzIGluCi0gICAgIDg2MDE4KzAgcmVjb3JkcyBvdXQKLSAgICAgNDQwNDEyMTYgYnl0ZXMgKDQ0IE1CKSBjb3BpZWQsIDEzLjA3MzQgcywgMy40IE1CL3MKLSAgICAgW3RyeiBhdCBlbXBhbmFkYSB0bXBdJCBzdWRvIGVqZWN0IC9kZXYvc2RiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYW4taW1hZ2UtYmFzZWQtb24tY29yZS1pbWFnZS1taW5pbWFsLWFuZC1jcm93bmJheS1ub2VtZ2QnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYW4gSW1hZ2UgQmFzZWQgb24gPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Y3Jvd25iYXktbm9lbWdkPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGNyZWF0ZXMgYW4gaW1hZ2UgYmFzZWQgb24KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBhbmQgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3duYmF5LW5vZW1nZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdvcmtzIHJpZ2h0IG91dCBvZiB0aGUgYm94LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwKLQotICAgICBDaGVja2luZyBiYXNpYyBidWlsZCBlbnZpcm9ubWVudC4uLgotICAgICBEb25lLgotCi0gICAgIENyZWF0aW5nIGltYWdlKHMpLi4uCi0KLSAgICAgSW5mbzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKLSAgICAgIDxyZXBsYWNlYWJsZT5jdXJyZW50X2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+L2J1aWxkL2RpcmVjdGRpc2stMjAxMzA5MjUyMzUwLXNkYS5kaXJlY3QKLQotICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKLQotICAgICBST09URlNfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3dvcmsvY3Jvd25iYXlfbm9lbWdkLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKLSAgICAgQk9PVElNR19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zaGFyZQotICAgICBLRVJORUxfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL2Nyb3duYmF5LW5vZW1nZC91c3Ivc3JjL2tlcm5lbAotICAgICBOQVRJVkVfU1lTUk9PVDogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NyYy9rZXJuZWwKLQotICAgICBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgotICAgICAgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay53a3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hLW1vZGlmaWVkLWtpY2tzdGFydC1maWxlLWFuZC1ydW5uaW5nLWluLXJhdy1tb2RlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGEgTW9kaWZpZWQgS2lja3N0YXJ0IEZpbGUgYW5kIFJ1bm5pbmcgaW4gUmF3IE1vZGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgbWFudWFsbHkgc3BlY2lmaWVzIGVhY2ggYnVpbGQgYXJ0aWZhY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIChydW5zIGluIFJhdyBNb2RlKSBhbmQgdXNlcyBhIG1vZGlmaWVkIGtpY2tzdGFydCBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgYWxzbyB1c2VzIHRoZSA8ZmlsZW5hbWU+LW88L2ZpbGVuYW1lPiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhdXNlIFdpYyB0byBjcmVhdGUgdGhlIG91dHB1dAotICAgICAgICAgICAgICAgICAgICAgICAgc29tZXdoZXJlIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgb3V0cHV0IGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgY3JlYXRlIH4vdGVzdC53a3MgLW8gL2hvbWUvdHJ6L3Rlc3R3aWMgLS1yb290ZnMtZGlyIFwKLSAgICAgICAgICAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3dvcmsvY3Jvd25iYXlfbm9lbWdkLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMgXAotICAgICAgICAgIC0tYm9vdGltZy1kaXIgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NoYXJlIFwKLSAgICAgICAgICAtLWtlcm5lbC1kaXIgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NyYy9rZXJuZWwgXAotICAgICAgICAgIC0tbmF0aXZlLXN5c3Jvb3QgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgKLQotICAgICBDcmVhdGluZyBpbWFnZShzKS4uLgotCi0gICAgIEluZm86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgICAvaG9tZS90cnovdGVzdHdpYy9idWlsZC90ZXN0LTIwMTMwOTI2MDAzMi1zZGEuZGlyZWN0Ci0KLSAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6Ci0KLSAgICAgUk9PVEZTX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC93b3JrL2Nyb3duYmF5X25vZW1nZC1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzCi0gICAgIEJPT1RJTUdfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL2Nyb3duYmF5LW5vZW1nZC91c3Ivc2hhcmUKLSAgICAgS0VSTkVMX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NyYy9rZXJuZWwKLSAgICAgTkFUSVZFX1NZU1JPT1Q6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zcmMva2VybmVsCi0KLSAgICAgVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKLSAgICAgIC9ob21lL3Ryei90ZXN0LndrcwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZCBub3QgaGF2ZSB0byBiZSBzcGVjaWZpZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgc2luY2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdCBpcyBtYW51YWxseSBzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgIElORk86IFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6CisgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrc2RiLWdwdC53a3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUsIHlvdSBjYW4gbm93IGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+IHRoZSBpbWFnZSB0byBhIFVTQiBzdGljaywgb3IKKyAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdSBidWlsdCB5b3VyIGltYWdlLAorICAgICAgICAgICAgICAgICAgICBhbmQgYm9vdCB0aGUgcmVzdWx0aW5nIG1lZGlhOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkZCBpZj1kaXJlY3RkaXNrc2RiLWdwdC0yMDE3MTAwOTA5Mzgtc2RiLmRpcmVjdCBvZj0vZGV2L3NkYgorICAgICAxNDA5NjYrMCByZWNvcmRzIGluCisgICAgIDE0MDk2NiswIHJlY29yZHMgb3V0CisgICAgIDcyMTc0NTkyIGJ5dGVzICg3MiBNQiwgNjkgTWlCKSBjb3BpZWQsIDc4LjAyODIgcywgOTI1IGtCL3MKKyAgICAgJCBzdWRvIGVqZWN0IC9kZXYvc2RiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXBsdWdpbnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5QbHVnLWluczwvdGl0bGU+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1tb2RpZmllZC1raWNrc3RhcnQtZmlsZS1hbmQtcnVubmluZy1pbi1yYXctbW9kZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGEgTW9kaWZpZWQgS2lja3N0YXJ0IEZpbGUgYW5kIFJ1bm5pbmcgaW4gUmF3IE1vZGU8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFBsdWctaW5zIGFsbG93IFdpYyBmdW5jdGlvbmFsaXR5IHRvCi0gICAgICAgICAgICAgICAgICAgIGJlIGV4dGVuZGVkIGFuZCBzcGVjaWFsaXplZCBieSB1c2Vycy4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgcGx1Zy1pbiBpbnRlcmZhY2UsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIHNvdXJjZSBwbHVnLWlucy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgbWFudWFsbHkgc3BlY2lmaWVzIGVhY2ggYnVpbGQgYXJ0aWZhY3QKKyAgICAgICAgICAgICAgICAgICAgKHJ1bnMgaW4gUmF3IE1vZGUpIGFuZCB1c2VzIGEgbW9kaWZpZWQga2lja3N0YXJ0IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGFsc28gdXNlcyB0aGUgPGZpbGVuYW1lPi1vPC9maWxlbmFtZT4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgIHRvIGNhdXNlIFdpYyB0byBjcmVhdGUgdGhlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICBzb21ld2hlcmUgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBvdXRwdXQgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgY3VycmVudCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgY3JlYXRlIC9ob21lL3Njb3R0cmlmL215X3lvY3RvL3Rlc3Qud2tzIC1vIC9ob21lL3Njb3R0cmlmL3Rlc3R3aWMgXAorICAgICAgICAgIC0tcm9vdGZzLWRpciAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcyBcCisgICAgICAgICAgLS1ib290aW1nLWRpciAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZSBcCisgICAgICAgICAgLS1rZXJuZWwtZGlyIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NiBcCisgICAgICAgICAgLS1uYXRpdmUtc3lzcm9vdCAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQorCisgICAgIElORk86IENyZWF0aW5nIGltYWdlKHMpLi4uCisKKyAgICAgSU5GTzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3Rlc3QtMjAxNzEwMDkxNDQ1LXNkYi5kaXJlY3QKKworICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKKyAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3RtcC53aWMueDR3aXBibWIvcm9vdGZzX2NvcHkKKyAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQorICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NgorICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisKKyAgICAgSU5GTzogVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKKyAgICAgICAvaG9tZS9zY290dHJpZi9teV95b2N0by90ZXN0LndrcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZGlkIG5vdCBoYXZlIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHNpbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdCBpcyBtYW51YWxseSBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctd2ljLXRvLW1hbmlwdWxhdGUtYW4taW1hZ2UnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBXaWMgdG8gTWFuaXB1bGF0ZSBhbiBJbWFnZTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU291cmNlIHBsdWctaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplCi0gICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGluCi0gICAgICAgICAgICAgICAgICAgIFdpYywgbWFpbmx5IHRoZSBjb250ZW50cyBvZgotICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zLgotICAgICAgICAgICAgICAgICAgICBUaGUgcGx1Zy1pbnMgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IgbWFwcGluZyB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZmlsZXMgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IGtleXdvcmQgdG8gYQotICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHBsdWctaW4gaW1wbGVtZW50YXRpb24gdGhhdCBwb3B1bGF0ZXMgYQotICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGltYWdlIG1hbmlwdWxhdGlvbiBhbGxvd3MgeW91IHRvIHNob3J0ZW4gdHVybmFyb3VuZAorICAgICAgICAgICAgICAgICAgICB0aW1lIGR1cmluZyBpbWFnZSBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIFdpYyB0byBkZWxldGUgdGhlIGtlcm5lbCBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgYSBXaWMgaW1hZ2UgYW5kIHRoZW4gaW5zZXJ0IGEgbmV3bHkgYnVpbHQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNhdmVzIHlvdSB0aW1lIGZyb20gaGF2aW5nIHRvIHJlYnVpbGQgdGhlIGVudGlyZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBlYWNoIHRpbWUgeW91IG1vZGlmeSB0aGUga2VybmVsLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBuYXRpdmUgdG9vbHMsIGJvb3Rsb2FkZXJzLCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGEgV2ljIGltYWdlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV0tTX0ZJTEVfREVQRU5EUyc+PGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSBXaWMgdG8gbWFuaXB1bGF0ZSBhIFdpYyBpbWFnZSBhcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBleGFtcGxlLCB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUgbXVzdCBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEEgc291cmNlIHBsdWctaW4gaXMgY3JlYXRlZCBhcyBhIHN1YmNsYXNzIG9mCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHBsdWctaW4gZmlsZSBjb250YWluaW5nIGl0IGlzIGFkZGVkIHRvCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICAgICAgbWFrZSB0aGUgcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIFdpYyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU291cmNlIHBsdWctaW5zIGNhbiBhbHNvIGJlIGltcGxlbWVudGVkIGFuZCBhZGRlZCBieQotICAgICAgICAgICAgICAgICAgICBleHRlcm5hbCBsYXllcnMuCi0gICAgICAgICAgICAgICAgICAgIEFzIHN1Y2gsIGFueSBwbHVnLWlucyBmb3VuZCBpbiBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIGFuIGV4dGVybmFsIGxheWVyIGFyZSBhbHNvIG1hZGUKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gbmVlZHMKLSAgICAgICAgICAgICAgICAgICAgdG8gaW52b2tlIGEgcGFydGl0aW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCBsb29rcwotICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHBsdWctaW4gdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gcGFyYW1ldGVyIGdpdmVuIHRvCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHBhcnRpdGlvbiBpcyBzZXQgdXAgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zICAgLi4uCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1ldGhvZHMgZGVmaW5lZCBhcyBjbGFzcyBtZW1iZXJzIG9mIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgIGhhdmluZyB0aGUgbWF0Y2hpbmcgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLm5hbWU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjbGFzcyBtZW1iZXIgYXJlIHVzZWQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIHBsdWctaW4gZGVmaW5pdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2UgYm9vdGltZy1wY2Jpb3M8L2ZpbGVuYW1lPiB1c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBhbiBleGFtcGxlCi0gICAgICAgICAgICAgICAgICAgIG1ldGhvZCBjYWxsZWQgYnkgdGhlIFdpYyBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgICB3aGVuIGl0IG5lZWRzIHRvIGludm9rZSBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24tcHJlcGFyYXRpb24gZnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICBjbGFzcyBCb290aW1nUGNiaW9zUGx1Z2luKFNvdXJjZVBsdWdpbik6Ci0gICAgICAgIG5hbWUgPSAnYm9vdGltZy1wY2Jpb3MnCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgZGVmIGRvX3ByZXBhcmVfcGFydGl0aW9uKHNlbGYsIHBhcnQsIC4uLikKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgc3ViY2xhc3MgaXRzZWxmIGRvZXMgbm90IGltcGxlbWVudCBhIGZ1bmN0aW9uLCBhCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmVyc2lvbiBpbiBhIHN1cGVyY2xhc3MgaXMgbG9jYXRlZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgdXNlZCwgd2hpY2ggaXMgd2h5IGFsbCBwbHVnLWlucyBtdXN0IGJlIGRlcml2ZWQgZnJvbQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIG1ldGhvZHMsIHdoaWNoIGlzIHRoZSBjdXJyZW50IHNldCBvZiBtZXRob2RzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIGltcGxlbWVudGVkIG9yIG92ZXJyaWRkZW4gYnkKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gcGx1Zy1pbnMuCi0gICAgICAgICAgICAgICAgICAgIEFueSBtZXRob2RzIG5vdCBpbXBsZW1lbnRlZCBieSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBzdWJjbGFzcyBpbmhlcml0IHRoZQotICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgcHJlc2VudCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLgotICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gc291cmNlIGZvciBkZXRhaWxzOgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZXhhbWluZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBXaWMKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIGRlbGV0ZXMgdGhlIGV4aXN0aW5nIGtlcm5lbCwgYW5kIHRoZW4gaW5zZXJ0cyBhCisgICAgICAgICAgICAgICAgICAgIG5ldyBrZXJuZWw6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxlZCB0byBkbyB0aGUgYWN0dWFsIGNvbnRlbnQgcG9wdWxhdGlvbiBmb3IgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaXN0IHRoZSBQYXJ0aXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIGxzPC9maWxlbmFtZT4gY29tbWFuZCB0byBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBwYXJ0aXRpb25zIGluIHRoZSBXaWMgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYworICAgICBOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZQorICAgICAgMSAgICAgICAxMDQ4NTc2ICAgICAyNTA0MTkxOSAgICAgMjM5OTMzNDQgIGZhdDE2CisgICAgICAyICAgICAgMjUxNjU4MjQgICAgIDcyMTU3MTgzICAgICA0Njk5MTM2MCAgZXh0NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgb3V0cHV0IHNob3dzIHR3byBwYXJ0aXRpb25zIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni53aWM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIGEgUGFydGljdWxhciBQYXJ0aXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT53aWMgbHM8L2ZpbGVuYW1lPiBjb21tYW5kIGFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGluIGEgZGlmZmVyZW50IGZvcm0gdG8gZXhhbWluZSBhIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBtZXRob2QgcHJlcGFyZXMgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIGltYWdlIHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzayBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGJlZm9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY3JlYXRlIGN1c3RvbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGEgcGFydGl0aW9uIChlLmcuIHN5c2xpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ3J1YiBjb25maWd1cmF0aW9uIGZpbGVzKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2luc3RhbGxfZGlzaygpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsZWQgYWZ0ZXIgYWxsIHBhcnRpdGlvbnMgaGF2ZSBiZWVuIHByZXBhcmVkIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxlZCBpbnRvIGEgZGlzayBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBwcm92aWRlcyBhIGhvb2sgdG8gYWxsb3cgZmluYWxpemF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSBkaXNrIGltYWdlLCAoZS5nLiB3cml0aW5nIGFuIE1CUikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19zdGFnZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lhbCBjb250ZW50LXN0YWdpbmcgaG9vayBjYWxsZWQgYmVmb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3JtYWxseSBlbXB0eS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VHlwaWNhbGx5LCBhIHBhcnRpdGlvbiBqdXN0IHVzZXMgdGhlIHBhc3NlZC1pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyB0aGluZ3MgbWlnaHQgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGFpbG9yZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2VydGFpbiBmaWxlcyBtaWdodCBhZGRpdGlvbmFsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIHRha2VuIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXIgKyAvYm9vdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaG9vayBhbGxvd3MgdGhvc2UgZmlsZXMgdG8gYmUgc3RhZ2VkIGluIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21pemVkIGZhc2hpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRfYml0YmFrZV92YXIoKTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gYWNjZXNzIG5vbi1zdGFuZGFyZCB2YXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWlnaHQgd2FudCB0byB1c2UgZm9yIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGNvbW1hbmQgdXNhZ2Ugb24gYW55IFdpYyBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBoZWxwIDxyZXBsYWNlYWJsZT5jb21tYW5kPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaW91cyB3YXlzIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsczwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgaGVscCBscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIHdoYXQgaXMgaW4gUGFydGl0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni53aWM6MQorICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyBFODk0LTE4MDkKKyAgICAgRGlyZWN0b3J5IGZvciA6Oi8KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNjaGVtZSBpcyBleHRlbnNpYmxlLgotICAgICAgICAgICAgICAgICAgICBBZGRpbmcgbW9yZSBob29rcyBpcyBhIHNpbXBsZSBtYXR0ZXIgb2YgYWRkaW5nIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBtZXRob2RzIHRvIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBjbGFzc2VzLgotICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSB0aGF0IHRoZW4gbmVlZHMgdG8gY2FsbCB0aGUgcGx1Zy1pbiBtZXRob2RzIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbi5nZXRfc291cmNlX3BsdWdpbl9tZXRob2RzKCk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICB0byBmaW5kIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIGNhbGwuCi0gICAgICAgICAgICAgICAgICAgIFJldHJpZXZhbCBvZiB0aG9zZSBtZXRob2RzIGlzIGFjY29tcGxpc2hlZAotICAgICAgICAgICAgICAgICAgICBieSBmaWxsaW5nIHVwIGEgZGljdCB3aXRoIGtleXMKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgotICAgICAgICAgICAgICAgICAgICBPbiBzdWNjZXNzLCB0aGVzZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBhY3R1YWwKLSAgICAgICAgICAgICAgICAgICAgbWV0aG9kcy4KLSAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlZSB0aGUgV2ljCi0gICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGZvciBleGFtcGxlcyBhbmQgZGV0YWlscy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgIGxpYmNvbTMyIGMzMiAgICAxODY1MDAgMjAxNy0xMC0wOSAgMTY6MDYKKyAgICAgbGlidXRpbCAgYzMyICAgICAyNDE0OCAyMDE3LTEwLTA5ICAxNjowNgorICAgICBzeXNsaW51eCBjZmcgICAgICAgMjIwIDIwMTctMTAtMDkgIDE2OjA2CisgICAgIHZlc2FtZW51IGMzMiAgICAgMjcxMDQgMjAxNy0xMC0wOSAgMTY6MDYKKyAgICAgdm1saW51eiAgICAgICAgNjkwNDYwOCAyMDE3LTEwLTA5ICAxNjowNgorICAgICAgICAgICAgIDUgZmlsZXMgICAgICAgICAgIDcgMTQyIDU4MCBieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgNTgyIDY1NiBieXRlcyBmcmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBvdXRwdXQgc2hvd3MgZml2ZSBmaWxlcywgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dm1saW51ejwvZmlsZW5hbWU+IGJlaW5nIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG9yIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5tdG9vbHNyYzwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHN1cmUgdG8gaGF2ZSB0aGUgbGluZSDigJxtdG9vbHNfc2tpcF9jaGVjaz0x4oCcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVuLCBydW4gdGhlIFdpYyBjb21tYW5kIGFnYWluOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVSUk9SOiBfZXhlY19jbWQ6IC91c3IvYmluL21kaXIgLWkgL3RtcC93aWMtcGFydHRmb2t1d3JhIDo6LyByZXR1cm5lZCAnMScgaW5zdGVhZCBvZiAwCisgICAgICBvdXRwdXQ6IFRvdGFsIG51bWJlciBvZiBzZWN0b3JzICg0NzgyNCkgbm90IGEgbXVsdGlwbGUgb2Ygc2VjdG9ycyBwZXIgdHJhY2sgKDMyKSEKKyAgICAgIEFkZCBtdG9vbHNfc2tpcF9jaGVjaz0xIHRvIHlvdXIgLm10b29sc3JjIGZpbGUgdG8gc2tpcCB0aGlzIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlbW92ZSB0aGUgT2xkIEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT53aWMgcm08L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgPGZpbGVuYW1lPnZtbGludXo8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXJuZWwpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIHJtIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljOjEvdm1saW51egorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFkZCBJbiB0aGUgTmV3IEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT53aWMgY3A8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgdXBkYXRlZCBrZXJuZWwgdG8gdGhlIFdpYyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgYnVpbHQgeW91ciBrZXJuZWwsIGl0IGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGluIGRpZmZlcmVudCBwbGFjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIFNESyB0byBidWlsZCB5b3VyIGtlcm5lbCwgaXQgcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZWQgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsLCB0aGUga2VybmVsIHdpbGwgYmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53b3Jrc3BhY2Uvc291cmNlczwvZmlsZW5hbWU+IGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgV2ljIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzCi0gICAgICAgICAgICAgICAgICAgIG9ubHkgdGhlIGJhc2ljIGtpY2tzdGFydCBwYXJ0aXRpb25pbmcgY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXJ0aXRpb248L2ZpbGVuYW1lPiAob3IgPGZpbGVuYW1lPnBhcnQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmb3Igc2hvcnQpIGFuZCA8ZmlsZW5hbWU+Ym9vdGxvYWRlcjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZSB1cGRhdGVzIHdpbGwgaW1wbGVtZW50IG1vcmUgY29tbWFuZHMgYW5kIG9wdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGFueXRoaW5nIHRoYXQgaXMgbm90IHNwZWNpZmljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkLCByZXN1bHRzIGNhbiBiZSB1bnByZWRpY3RhYmxlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHRoZSBjb21tYW5kcywgdGhlaXIgc3ludGF4LAotICAgICAgICAgICAgICAgICAgICBhbmQgbWVhbmluZ3MuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kcyBhcmUgYmFzZWQgb24gdGhlIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICBraWNrc3RhcnQgdmVyc2lvbnMgYnV0IHdpdGggbW9kaWZpY2F0aW9ucyB0bwotICAgICAgICAgICAgICAgICAgICByZWZsZWN0IFdpYyBjYXBhYmlsaXRpZXMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSBjb21tYW5kcwotICAgICAgICAgICAgICAgICAgICBhdCB0aGUgZm9sbG93aW5nIGxpbmtzOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNwYXJ0X29yX3BhcnRpdGlvbic+aHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I3BhcnRfb3JfcGFydGl0aW9uPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjYm9vdGxvYWRlcic+aHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I2Jvb3Rsb2FkZXI8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29tbWFuZC1wYXJ0LW9yLXBhcnRpdGlvbic+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db21tYW5kOiBwYXJ0IG9yIHBhcnRpdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEVpdGhlciBvZiB0aGVzZSBjb21tYW5kcyBjcmVhdGUgYSBwYXJ0aXRpb24gb24gdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBmb2xsb3dpbmcgc3ludGF4OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwYXJ0IFs8cmVwbGFjZWFibGU+bW50cG9pbnQ8L3JlcGxhY2VhYmxlPl0KLSAgICAgcGFydGl0aW9uIFs8cmVwbGFjZWFibGU+bW50cG9pbnQ8L3JlcGxhY2VhYmxlPl0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZQotICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT4sIFdpYyBjcmVhdGVzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBidXQgZG9lcyBub3QgbW91bnQgaXQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHdoZXJlIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBtb3VudGVkIGFuZCBtdXN0IGJlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LzxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsICIvIiwgIi91c3IiLCBvciAiL2hvbWUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN3YXA8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNyZWF0ZWQgcGFydGl0aW9uIGlzIHVzZWQgYXMgc3dhcCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+IGNhdXNlcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpdGlvbiB0byBhdXRvbWF0aWNhbGx5IGJlIG1vdW50ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaWMgYWNoaWV2ZXMgdGhpcyBieSBhZGRpbmcgZW50cmllcyB0byB0aGUgZmlsZXN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgKGZzdGFiKSBkdXJpbmcgaW1hZ2UgZ2VuZXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB3aWMgdG8gZ2VuZXJhdGUgYSB2YWxpZCBmc3RhYiwgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gcHJvdmlkZSBvbmUgb2YgdGhlIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBwYXJ0aXRpb24gb3B0aW9ucyBhcwotICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyAiLyIgYXMgdGhlIG1vdW50cG9pbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzICItLW9uZGlzayIgdG8gZm9yY2UgdGhlIHBhcnRpdGlvbiBvbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGRpc2s6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb3RoZXIgc3VwcG9ydGVkIG9wdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHdpdGggdGhlIDxmaWxlbmFtZT5wYXJ0PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFydGl0aW9uPC9maWxlbmFtZT4gY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW11bSBwYXJ0aXRpb24gc2l6ZSBpbiBNQnl0ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gaW50ZWdlciB2YWx1ZSBzdWNoIGFzIDUwMC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IGFwcGVuZCB0aGUgbnVtYmVyIHdpdGggIk1CIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRoaXMgb3B0aW9uIGlmIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzIHRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEgdGhhdCBwb3B1bGF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHZhbHVlIGZvciB0aGlzIG9wdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIiwgYnV0IHlvdSBjYW4gdXNlIGFueSB2YWx1ZSB0aGF0IG1hcHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2YWxpZCBzb3VyY2UgcGx1Zy1pbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzb3VyY2UgcGx1Zy1pbnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtcGx1Z2lucyc+UGx1Zy1pbnM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2Ugcm9vdGZzPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBjcmVhdGVzIGEgcGFydGl0aW9uIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlIGFzIG5lZWRlZCBhbmQgdG8gZmlsbCBpdCB3aXRoIHRoZSBjb250ZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtIHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tcjwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGhlIGVxdWl2YWxlbnQgcm9vdGZzIGRlcml2ZWQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4gY29tbWFuZC1saW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzeXN0ZW0gdHlwZSB1c2VkIHRvIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIGlzIGRyaXZlbiBieSB0aGUgdmFsdWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+IG9wdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgZm9yIHRoZSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZW50cnkgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tZnN0eXBlPC9maWxlbmFtZT4gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dzIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlIDxyZXBsYWNlYWJsZT5wbHVnaW4tbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBjcmVhdGVzIGEgcGFydGl0aW9uIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlIGFzIG5lZWRlZCBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgY29udGVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHBhcnRpdGlvbiB0aGF0IGlzIGdlbmVyYXRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHBsdWctaW4gbmFtZSB1c2luZyB0aGUgZGF0YSBwb2ludGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJ5IHRoZSA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9yIHRoZSBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YWN0bHkgd2hhdCB0aG9zZSBjb250ZW50cyBhbmQgZmlsZXN5c3RlbSB0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCB1cCBiZWluZyBhcmUgZGVwZW5kZW50IG9uIHRoZSBnaXZlbiBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkbyBub3QgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBvcHRpb24sIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5IHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbXVzdCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPiBvcHRpb24gdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2l6ZSBvZiB0aGUgZW1wdHkgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1vbmRpc2s8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LS1vbmRyaXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VzIHRoZSBwYXJ0aXRpb24gdG8gYmUgY3JlYXRlZCBvbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZGlzay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnN0eXBlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0cyB0aGUgZmlsZSBzeXN0ZW0gdHlwZSBmb3IgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgdmFsdWVzIGFyZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZXh0MjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YnRyZnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zd2FwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnNvcHRpb25zPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnJlZS1mb3JtIHN0cmluZyBvZiBvcHRpb25zIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgd2hlbiBtb3VudGluZyB0aGUgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdHJpbmcgd2lsbCBiZSBjb3BpZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBmaWxlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgc3lzdGVtIGFuZCBzaG91bGQgYmUgZW5jbG9zZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgImRlZmF1bHRzIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tbGFiZWwgbGFiZWw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxhYmVsIHRvIGdpdmUgdG8gdGhlIGZpbGVzeXN0ZW0gdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSBvbiB0aGUgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZ2l2ZW4gbGFiZWwgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLCBhIG5ldyBsYWJlbCBpcyBjcmVhdGVkIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1hY3RpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrcyB0aGUgcGFydGl0aW9uIGFzIGFjdGl2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYWxpZ24gKGluIEtCeXRlcyk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXlzIHRvIHN0YXJ0IGEgcGFydGl0aW9uIG9uIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT4gS0J5dGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLW5vLXRhYmxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMtc3BlY2lmaWMgb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgb3B0aW9uIHJlc2VydmVzIHNwYWNlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIGFuZCBjYXVzZXMgaXQgdG8gYmVjb21lIHBvcHVsYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHBhcnRpdGlvbiBpcyBub3QgYWRkZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiB0YWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXh0cmEtc3BhY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRzIGV4dHJhIHNwYWNlIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHNpemUgY2FuIGdvIGJleW9uZCB0aGUgc2l6ZSBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIDxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPiBvcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwIE1ieXRlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tb3ZlcmhlYWQtZmFjdG9yPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllcyB0aGUgc2l6ZSBvZiB0aGUgcGFydGl0aW9uIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ncyB2YWx1ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3VwcGx5IGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjEuMyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXBhcnQtdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgcGFydGl0aW9uIHR5cGUgZ2xvYmFsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlIGlkZW50aWZpZXIgKEdVSUQpIGZvciBHUFQgcGFydGl0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIHBhcnRpdGlvbiB0eXBlIEdVSURzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1VJRF9QYXJ0aXRpb25fVGFibGUjUGFydGl0aW9uX3R5cGVfR1VJRHMnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS11c2UtdXVpZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlcyBXaWMgdG8gZ2VuZXJhdGUgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20gR1VJRCBmb3IgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBpZGVudGlmaWVyIGlzIHVzZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiB0byBzcGVjaWZ5IHRoZSByb290Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tdXVpZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUgcGFydGl0aW9uIFVVSUQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29tbWFuZC1ib290bG9hZGVyJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbW1hbmQ6IGJvb3Rsb2FkZXI8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIHNwZWNpZmllcyBob3cgdGhlIGJvb3Rsb2FkZXIgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkIGFuZCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVyIGZ1bmN0aW9uYWxpdHkgYW5kIGJvb3QgcGFydGl0aW9ucyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRlZCBieSB0aGUgdmFyaW91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbnMgdGhhdCBpbXBsZW1lbnQgYm9vdGxvYWRlciBmdW5jdGlvbmFsaXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBib290bG9hZGVyIGNvbW1hbmQgZXNzZW50aWFsbHkgcHJvdmlkZXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYW5zIG9mIG1vZGlmeWluZyBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXRpbWVvdXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlciB0aW1lcyBvdXQgYW5kIGJvb3RzIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYXBwZW5kPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGtlcm5lbCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c2xpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BUFBFTkQ8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3J1YjwvZmlsZW5hbWU+IGtlcm5lbCBjb21tYW5kIGxpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWNvbmZpZ2ZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB1c2VyLWRlZmluZWQgY29uZmlndXJhdGlvbiBmaWxlIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm9vdGxvYWRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIGEgZnVsbCBwYXRobmFtZSBmb3IgdGhlIGZpbGUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBmaWxlIHRoYXQgZXhpc3RzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2FubmVkLXdrczwvZmlsZW5hbWU+IGZvbGRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb3ZlcnJpZGVzIGFsbCBvdGhlciBib290bG9hZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhc3N1bWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd2FzIHVzZWQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBjcCB+L3Bva3lfc2RrL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9saW51eC15b2N0by80LjEyLjEyK2dpdDk5OS1yMC9saW51eC15b2N0by00LjEyLjEyK2dpdDk5OS9hcmNoL3g4Ni9ib290L2J6SW1hZ2UgXAorICAgICAgICB+L3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni53aWM6MS92bWxpbnV6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbmV3IGtlcm5lbCBpcyBhZGRlZCBiYWNrIGludG8gdGhlIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdmbGFzaGluZy1pbWFnZXMtdXNpbmctYm1hcHRvb2wnPjxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmbGFzaCB5b3VyIHdpYyBpbWFnZSBvbnRvIGFuIFNEIGNhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgVVNCIHN0aWNrIGFuZCB0ZXN0IHlvdXIgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsbHkgMTAgdG8gMjAgdGltZXMgZmFzdGVyIHRoYW4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIApAQCAtNTgxNyw4ODcgKzU2MTIsMjMxIEBACiAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIGluaXRyYW1mcyBpcyB0aGUgc3VjY2Vzc29yIG9mIEluaXRpYWwgUkFNIERpc2sgKGluaXRyZCkuCi0gICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsIGZpbGUgc3lzdGVtCi0gICAgICAgICAgICB0aGF0IGdldHMgbG9hZGVkIGludG8gbWVtb3J5IGR1cmluZyB0aGUgTGludXggc3RhcnR1cCBwcm9jZXNzLgotICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKLSAgICAgICAgICAgIGluaXRpYWxpemF0aW9uLCB0aGUgaW5pdHJhbWZzIG5lZWRzIHRvIGNvbnRhaW4gYWxsIG9mIHRoZSBkZXZpY2UKLSAgICAgICAgICAgIGRyaXZlcnMgYW5kIHRvb2xzIG5lZWRlZCB0byBtb3VudCB0aGUgZmluYWwgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgQW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZSBwcm92aWRlcyBhIHRlbXBvcmFyeQorICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHVzZWQgZm9yIGVhcmx5IHN5c3RlbSBpbml0aWFsaXphdGlvbiAoZS5nLgorICAgICAgICAgICAgbG9hZGluZyBvZiBtb2R1bGVzIG5lZWRlZCB0byBsb2NhdGUgYW5kIG1vdW50IHRoZSAicmVhbCIgcm9vdAorICAgICAgICAgICAgZmlsZXN5c3RlbSkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgaW5pdHJhbWZzIGltYWdlIGlzIHRoZSBzdWNjZXNzb3Igb2YgaW5pdGlhbCBSQU0gZGlzaworICAgICAgICAgICAgICAgIChpbml0cmQpLgorICAgICAgICAgICAgICAgIEl0IGlzIGEgImNvcHkgaW4gYW5kIG91dCIgKGNwaW8pIGFyY2hpdmUgb2YgdGhlIGluaXRpYWwKKyAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHRoYXQgZ2V0cyBsb2FkZWQgaW50byBtZW1vcnkgZHVyaW5nIHRoZSBMaW51eAorICAgICAgICAgICAgICAgIHN0YXJ0dXAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIExpbnV4IHVzZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcmNoaXZlIGR1cmluZworICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uLCB0aGUgaW5pdHJhbWZzIGltYWdlIG5lZWRzIHRvIGNvbnRhaW4gYWxsIG9mIHRoZQorICAgICAgICAgICAgICAgIGRldmljZSBkcml2ZXJzIGFuZCB0b29scyBuZWVkZWQgdG8gbW91bnQgdGhlIGZpbmFsIHJvb3QKKyAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBidWlsZCBhbiBpbml0cmFtZnMgaW1hZ2UgYW5kIGJ1bmRsZSBpdCBpbnRvIHRoZSBrZXJuZWwsIHNldCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCBhbmQgc2V0IHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPm1hY2hpbmUuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGFuIGluaXRyYW1mcyBpbWFnZToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIGluaXRyYW1mcyBJbWFnZSBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhcyBhbiBleGFtcGxlIGZyb20gd2hpY2ggdG8gd29yay4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVjaWRlIGlmIFlvdSBOZWVkIHRvIEJ1bmRsZSB0aGUgaW5pdHJhbWZzIEltYWdlCisgICAgICAgICAgICAgICAgICAgIEludG8gdGhlIEtlcm5lbCBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgaW5pdHJhbWZzIGltYWdlIHRoYXQgaXMgYnVpbHQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgYnVuZGxlZCBpbiB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UsIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgcmVjaXBlIHRoYXQgYnVpbGRzIHRoZSBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG8gYnVuZGxlIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHdpdGggdGhlIGtlcm5lbCBpbWFnZSB0byBhdm9pZCBjaXJjdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIGtlcm5lbCByZWNpcGUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHJlY2lwZSBzaG91bGQgdGhlIGluaXRyYW1mcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBrZXJuZWwgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZsYWcgY2F1c2VzIHRoZSBpbml0cmFtZnMgaW1hZ2UgdG8gYmUgdW5wYWNrZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgPGZpbGVuYW1lPiR7Qn0vdXNyLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVucGFja2VkIGluaXRyYW1mcyBpbWFnZSBpcyB0aGVuIHBhc3NlZCB0byB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRSc+PGZpbGVuYW1lPkNPTkZJR19JTklUUkFNRlNfU09VUkNFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYWxsb3dpbmcgdGhlIGluaXRyYW1mcyBpbWFnZSB0byBiZSBidWlsdCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgbm9ybWFsbHkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBub3QgYnVuZGxlIHRoZSBpbml0cmFtZnMgaW1hZ2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBpbWFnZSwgeW91IGFyZSBlc3NlbnRpYWxseSB1c2luZyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5pdHJkJz5Jbml0aWFsIFJBTSBEaXNrIChpbml0cmQpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbiBpbml0cmQgaXMgaGFuZGxlZCBwcmltYXJpbHkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkRfSU1BR0UnPjxmaWxlbmFtZT5JTklUUkRfSU1BR0U8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSRF9MSVZFPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSRF9JTUFHRV9MSVZFPC9maWxlbmFtZT4gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZS5iYmNsYXNzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKzwhLS0KK1NvbWUgbm90ZXMgZnJvbSBDYWw6CisKKyAgICBBIG5vbi1idW5kbGVkIGluaXRyYW1mcyBpcyBlc3NlbnRpYWxseSBhbiBpbml0cmQsIHdoaWNoIEkgYW0gZGlzY292ZXJpbmcKKyAgICB0byBiZSByYXRoZXIgY29uZnVzaW5nbHkgc3VwcG9ydGVkIGluIE9FIGF0IHRoZSBtb21lbnQuCisKKyAgICBJdHMgcHJpbWFyaWx5IGhhbmRsZWQgdGhyb3VnaCBJTklUUkRfSU1BR0UoX0xJVkUvX1ZNKSBhbmQgSU5JVFJEKF9MSVZFL19WTSkKKyAgICB2YXJpYWJsZXMuIElOSVRSRF9JTUFHRSogaXMgdGhlIHByaW1hcnkgaW1hZ2UgdGFyZ2V0LCB3aGljaCBnZXRzIGFkZGVkIHRvCisgICAgSU5JVFJEKiwgd2hpY2ggaXMgYSBsaXN0IG9mIGNwaW8gZmlsZXN5c3RlbXMuIFlvdSBjYW4gYWRkIG1vcmUgY3BpbworICAgIGZpbGVzeXN0ZW1zIHRvIHRoZSBJTklUUkQgdmFyaWFibGUgdG8gYWRkIG1vcmUgdG8gdGhlIGluaXRyZC4gRm9yCisgICAgaW5zdGFuY2UsIG1ldGEtaW50ZWwgYWRkcyBpbnRlbC1taWNyb2NvZGUgdmlhIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgSU5JVFJEX0xJVkVfcHJlcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdpbnRlbC11Y29kZScsICcke0RFUExPWV9ESVJfSU1BR0V9L21pY3JvY29kZS5jcGlvICcsICcnLCBkKX0iCisKKyAgICBJZiAnaW50ZWwtdWNvZGUnIGlzIGluIE1BQ0hJTkVfRkVBVFVSRVMsIHRoaXMgcmVzb2x2ZXMgdG86CisKKyAgICAgICAgSU5JVFJEX0xJVkVfcHJlcGVuZCA9ICIke0RFUExPWV9ESVJfSU1BR0V9L21pY3JvY29kZS5jcGlvICIKKworICAgIFVuZm9ydHVuYXRlbHkgeW91IG5lZWQgdGhlIGZ1bGwgcGF0aCwgYW5kIGl0cyB1cCB0byB5b3UgdG8gc29ydCBvdXQKKyAgICBkZXBlbmRlbmNpZXMgYXMgd2VsbC4gRm9yIGluc3RhbmNlLCB3ZSBoYXZlIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ2ludGVsLXVjb2RlJywgJyBpbnRlbC1taWNyb2NvZGUnLCAnJywgZCl9IgorCisgICAgd2hpY2ggcmVzb2x2ZXMgdG86CisKKyAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFNfYXBwZW5kID0gImludGVsLW1pY3JvY29kZSIKKworICAgIEhvd2V2ZXIsIHRoZSBhYm92ZSBpcyBvbmx5IHRydWUgd2l0aCB0aGUgImxpdmUiIElNQUdFX0ZTVFlQRS4gV2ljIGlzCisgICAgYW5vdGhlciBiZWFzdCBlbnRpcmVseSwgd2l0aCBjdXJyZW50IHdpYyBraWNrc3RhcnQgZmlsZXMgbm90IHN1cHBvcnRpbmcKKyAgICBpbml0cmRzLCBhbmQgb25seSBwYXJ0aWFsIHN1cHBvcnQgaW4gdGhlIHNvdXJjZSBwbHVnaW5zLiBUaGF0IGJlaW5nIHNhaWQsCisgICAgSSBrbm93IHRoZSBnZW5lcmljIGJvb3RmcyB3b3JrIEVkIGlzIHdvcmtpbmcgb24gd2lsbCBoZWxwIGltbWVuc2VseSBpbiB0aGlzCisgICAgYXNwZWN0LiBIZSBvciBTYXVsIGNhbiBwcm92aWRlIG1vcmUgZGV0YWlscyBoZXJlLgorCisgICAgQW55aG93LCBpdHMgcmF0aGVyIGZyYWN0dXJlZCBhbmQgY29uZnVzaW5nIGFuZCBjb3VsZCBwcm9iYWJseSB1c2UgYQorICAgIHJld29yayBob25lc3RseS4gSSBkb24ndCBrbm93IGhvdyBmZWFzaWJsZSBpdCBpcyB0byBkb2N1bWVudCBhbGwgdGhlCisgICAgZGV0YWlscyBhbmQgY29ybmVyIGNhc2VzIG9mIHRoaXMgYXJlYS4KKy0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQWRkIEl0ZW1zIHRvIHRoZSBpbml0cmFtZnMgSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgVGhyb3VnaCB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYWRkIGl0ZW1zIHRvIHRoZSBpbml0cmFtZnMgaW1hZ2UgYnkgd2F5IG9mIGl0cworICAgICAgICAgICAgICAgICAgICByZWNpcGUsIHlvdSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBnaXZlcyBtb3JlIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICBjb250cm9sIG9mIHdoYXQgaXMgYWRkZWQgdG8gdGhlIGltYWdlIGFzIGNvbXBhcmVkIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0cyB5b3UgbWlnaHQgbm90IG5lY2Vzc2FyaWx5IHdhbnQgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZSc+PGZpbGVuYW1lPmltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz48ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIEtlcm5lbCBJbWFnZSBhbmQgdGhlIGluaXRyYW1mcworICAgICAgICAgICAgICAgICAgICBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGtlcm5lbCBpbWFnZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBpbml0cmFtZnMgaW1hZ2UgcmVjaXBlIGlzIGEgZGVwZW5kZW5jeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLCB0aGUgaW5pdHJhbWZzIGltYWdlIGlzIGJ1aWx0IGFzIHdlbGwgYW5kCisgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aCB0aGUga2VybmVsIGltYWdlIGlmIHlvdSB1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlc2NyaWJlZCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZmxhc2hpbmctaW1hZ2VzLXVzaW5nLWJtYXB0b29sJz4KKyAgICAgICAgPHRpdGxlPkZsYXNoaW5nIEltYWdlcyBVc2luZyA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbiBlYXN5IHdheSB0byBmbGFzaCBhbiBpbWFnZSB0byBhIGJvb3RhYmxlIGRldmljZSBpcyB0byB1c2UKKyAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+LCB3aGljaCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcsIGlzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gZmxhc2ggYSBXaWMgaW1hZ2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiB0byBmbGFzaCBhbnkKKyAgICAgICAgICAgICAgICB0eXBlIG9mIGltYWdlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGZsYXNoIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFVubGVzcyB5b3UgYXJlIGFibGUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgYXMgbWVudGlvbmVkIGluIHRoZSBub3RlCisgICAgICAgICAgICAgICAgaW4gdGhlIHNlY29uZCBidWxsZXQgb2Ygc3RlcCAzIGZ1cnRoZXIgZG93biwgeW91IHdpbGwgbmVlZCB0byBidWlsZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGJlZm9yZSB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICBCdWlsZCB0aGUgdG9vbCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgYm1hcC10b29scy1uYXRpdmUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBkYXRlIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCBZb3VyIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCkgb3IgdGFrZSB0aGUgc3RlcAorICAgICAgICAgICAgICAgICAgICBidWlsZCB0aGUgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Rmxhc2ggdGhlIERldmljZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGbGFzaCB0aGUgZGV2aWNlIHdpdGggdGhlIGltYWdlIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGRlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgc2V0dXA6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBtZWRpYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhpcyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgYm1hcHRvb2wgY29weSAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQtY29yZS1pbWFnZS1taW5pbWFsLTxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4ud2ljIC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWVkaWEsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gY2htb2QgNjY2IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBibWFwdG9vbCBjb3B5IC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC1jb3JlLWltYWdlLW1pbmltYWwtPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgVWJ1bnR1IG9yIERlYmlhbiBkaXN0cmlidXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwLXRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYW5kIHRoZW4gdXNlIHRoZSB0b29sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgc3BlY2lmeWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGV2ZW4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBhY2NvdW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYm1hcC10b29scworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgaGVscCBvbiB0aGUgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gY29tbWFuZCwgdXNlIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgPSAiMSIKLSAgICAgSU5JVFJBTUZTX0lNQUdFID0gIjxyZXBsYWNlYWJsZT5pbWFnZV9yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+IgorICAgICAkIGJtYXB0b29sIC0taGVscAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmxhZyBjYXVzZXMgdGhlIGluaXRyYW1mcyBjcmVhdGVkIGJ5IHRoZSByZWNpcGUgYW5kIGRlZmluZWQgYnkKLSAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPiB0byBiZSB1bnBhY2tlZCBpbnRvIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPiR7Qn0vdXNyLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIFRoZSB1bnBhY2tlZCBpbml0cmFtZnMgaXMgdGhlbiBwYXNzZWQgdG8gdGhlIGtlcm5lbCdzCi0gICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiB1c2luZyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRSc+PGZpbGVuYW1lPkNPTkZJR19JTklUUkFNRlNfU09VUkNFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgdmFyaWFibGUsIGFsbG93aW5nIGluaXRyYW1mcyB0byBiZSBidWlsdCBpbiB0byB0aGUga2VybmVsCi0gICAgICAgICAgICBub3JtYWxseS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBwcmVmZXJyZWQgbWV0aG9kIGlzIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gdmFyaWFibGUgcmF0aGVyIHRoYW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSQU1GU19UQVNLPC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+SU5JVFJBTUZTX1RBU0s8L2ZpbGVuYW1lPiBpcyBzdXBwb3J0ZWQgZm9yCi0gICAgICAgICAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCB1c2Ugb2YgdGhpcyB2YXJpYWJsZSBoYXMgY2lyY3VsYXIgZGVwZW5kZW5jeQotICAgICAgICAgICAgICAgIHByb2JsZW1zLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2UgZGVwZW5kZW5jeQotICAgICAgICAgICAgICAgIHByb2JsZW1zLgotICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcmVjaXBlIHRoYXQgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBwb2ludHMgdG8gbXVzdCBwcm9kdWNlIGEgPGZpbGVuYW1lPi5jcGlvLmd6PC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmNwaW8udGFyPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4uY3Bpby5sejQ8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT4uY3Bpby5sem1hPC9maWxlbmFtZT4sIG9yCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmNwaW8ueHo8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgWW91IGNhbiBlbnN1cmUgeW91IHByb2R1Y2Ugb25lIG9mIHRoZXNlIDxmaWxlbmFtZT4uY3Bpby4qPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGVzIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTklUUkFNRlNfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHRvIG9uZSBvciBtb3JlIG9mIHRoZSBhYm92ZQotICAgICAgICAgICAgZmlsZSB0eXBlcy4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIElmIHlvdSBhZGQgaXRlbXMgdG8gdGhlIGluaXRyYW1mcyBpbWFnZSBieSB3YXkgb2YgaXRzIHJlY2lwZSwKLSAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBnaXZlcyBtb3JlIGRpcmVjdCBjb250cm9sCi0gICAgICAgICAgICAgICAgb2Ygd2hhdCBpcyBhZGRlZCB0byB0aGUgaW1hZ2UgYXMgY29tcGFyZWQgdG8gdGhlIGRlZmF1bHRzIHlvdQotICAgICAgICAgICAgICAgIG1pZ2h0IG5vdCBuZWNlc3NhcmlseSB3YW50IHRoYXQgYXJlIHNldCBieSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZSc+PGZpbGVuYW1lPmltYWdlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3Nlcy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmluZy10aGUta2VybmVsJz4KLSAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGNvbnNpc3RzIG9mIG1ha2luZyBzdXJlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGhhcyBhbGwgdGhlIHJpZ2h0IGluZm9ybWF0aW9uCi0gICAgICAgICAgICBpbiBpdCBmb3IgdGhlIGltYWdlIHlvdSBhcmUgYnVpbGRpbmcuCi0gICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGFuZAotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgdG8gbWFrZSBzdXJlIHlvdXIKLSAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBqdXN0IGhvdyB5b3UgbmVlZCBpdC4KLSAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzYXZlIGtub3duIGNvbmZpZ3VyYXRpb25zIGluIGEKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gdXNlCi0gICAgICAgICAgICBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgY3JlYXRlIGFuZCB1c2UgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIGFuZCBob3cgdG8gaW50ZXJhY3RpdmVseQotICAgICAgICAgICAgbW9kaWZ5IHlvdXIgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRvIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgIGxlYW5lc3Qga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBwb3NzaWJsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctbWVudWNvbmZpZyc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGVhc2llc3Qgd2F5IHRvIGRlZmluZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgaXMgdG8gc2V0IHRoZW0gdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wuCi0gICAgICAgICAgICAgICAgVGhpcyB0b29sIHByb3ZpZGVzIGFuIGludGVyYWN0aXZlIG1ldGhvZCB3aXRoIHdoaWNoCi0gICAgICAgICAgICAgICAgdG8gc2V0IGtlcm5lbCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LCBzZWUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lbnVjb25maWcnPjwvdWxpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyB1c2UgdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCB5b3UgbXVzdCBsYXVuY2ggaXQgdXNpbmcgQml0QmFrZS4KLSAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZW52aXJvbm1lbnQgbXVzdCBiZSBzZXQgdXAgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHNjcmlwdCBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgWW91IG11c3QgYWxzbyBiZSBzdXJlIG9mIHRoZSBzdGF0ZSBvZiB5b3VyIGJ1aWxkIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgcnVuIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhc3N1bWluZyB0aGUgU291cmNlIERpcmVjdG9yeSdzIHRvcC1sZXZlbCBmb2xkZXIgaXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9wb2t5PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIHBva3kKLSAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKLSAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdtZSAtZgotICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgbWVudWNvbmZpZwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gY29tZXMgdXAsIGl0cyBzdGFuZGFyZAotICAgICAgICAgICAgICAgIGludGVyZmFjZSBhbGxvd3MgeW91IHRvIGludGVyYWN0aXZlbHkgZXhhbWluZSBhbmQgY29uZmlndXJlCi0gICAgICAgICAgICAgICAgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgIEFmdGVyIG1ha2luZyB5b3VyIGNoYW5nZXMsIHNpbXBseSBleGl0IHRoZSB0b29sIGFuZCBzYXZlIHlvdXIKLSAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIGNyZWF0ZSBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgdGhhdCBjb25maWd1cmVzIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAga2VybmVsLgotICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJlY29nbml6ZXMgdGhpcyBrZXJuZWwgYXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGZyb20gdGhlIHNoZWxsIGluIHdoaWNoIHlvdSBwcmV2aW91c2x5IHNvdXJjZWQgdGhlCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgaW5pdGlhbGl6YXRpb24gc2NyaXB0IGNsZWFucyB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIGFuZCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIHJ1bnMgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gbGF1bmNoZXMsIHVzZSB0aGUgaW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgc2VsZWN0aW9ucyB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluCi0gICAgICAgICAgICAgICAgd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgPGZpbGVuYW1lPkNPTkZJR19TTVA8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIHNldHRpbmcuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGl0IGF0IDxmaWxlbmFtZT5Qcm9jZXNzb3IgVHlwZSBhbmQgRmVhdHVyZXM8L2ZpbGVuYW1lPiB1bmRlcgotICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIHNlbGVjdGlvbiA8ZmlsZW5hbWU+U3ltbWV0cmljIE11bHRpLXByb2Nlc3NpbmcgU3VwcG9ydDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEFmdGVyIGhpZ2hsaWdodGluZyB0aGUgc2VsZWN0aW9uLCB1c2UgdGhlIGFycm93IGtleXMgdG8gc2VsZWN0IG9yIGRlc2VsZWN0Ci0gICAgICAgICAgICAgICAgdGhlIHNldHRpbmcuCi0gICAgICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHdpdGggYWxsIHlvdXIgc2VsZWN0aW9ucywgZXhpdCBvdXQgYW5kIHNhdmUgdGhlbS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU2F2aW5nIHRoZSBzZWxlY3Rpb25zIHVwZGF0ZXMgdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgotICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIGNvbmZpZ3VyZSB0aGUKLSAgICAgICAgICAgICAgICBrZXJuZWwgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYW5kIGV4YW1pbmUgdGhpcyBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3dvcmsvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhlIGFjdHVhbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGlzIGxvY2F0ZWQgaW4gdGhlIGFyZWEgd2hlcmUgdGhlCi0gICAgICAgICAgICAgICAgc3BlY2lmaWMga2VybmVsIGlzIGJ1aWx0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2VyZSBidWlsZGluZyBhIExpbnV4IFlvY3RvIGtlcm5lbCBiYXNlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICBMaW51eCAzLjE0IGtlcm5lbCBhbmQgeW91IHdlcmUgYnVpbGRpbmcgYSBRRU1VIGltYWdlIHRhcmdldGVkIGZvcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54ODY8L2ZpbGVuYW1lPiBhcmNoaXRlY3R1cmUsIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB3b3VsZCBiZSBsb2NhdGVkIGhlcmU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9saW51eC15b2N0by0zLjE0LjExK2dpdDErODRmLi4uCi0gICAgICAgIC4uLjY1NmVkMzAtcjEvbGludXgtcWVtdXg4Ni1zdGFuZGFyZC1idWlsZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZGlyZWN0b3J5IGlzIGFydGlmaWNpYWxseSBzcGxpdCBhbmQgbWFueSBvZiB0aGUgY2hhcmFjdGVycwotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWN0dWFsIGZpbGVuYW1lIGFyZSBvbWl0dGVkIGluIG9yZGVyIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgQWxzbywgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgeW91IGFyZSB1c2luZywgdGhlIGV4YWN0IHBhdGhuYW1lCi0gICAgICAgICAgICAgICAgICAgIGZvciA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNC4uLjwvZmlsZW5hbWU+IG1pZ2h0IGRpZmZlci4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgY2FuIHNlZSB0aGUga2VybmVsIHNldHRpbmdzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGVudHJ5IHNob3dzIHRoYXQgc3ltbWV0cmljIG11bHRpLXByb2Nlc3NvciBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgaXMgbm90IHNldDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgQ09ORklHX1NNUCBpcyBub3Qgc2V0Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIGdvb2QgbWV0aG9kIHRvIGlzb2xhdGUgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBpcyB0byB1c2UgYSBjb21iaW5hdGlvbiBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wgYW5kIHNpbXBsZSBzaGVsbCBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICBCZWZvcmUgY2hhbmdpbmcgY29uZmlndXJhdGlvbnMgd2l0aCA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LCBjb3B5IHRoZQotICAgICAgICAgICAgICAgIGV4aXN0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gYW5kIHJlbmFtZSBpdCB0byBzb21ldGhpbmcgZWxzZSwKLSAgICAgICAgICAgICAgICB1c2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0byBtYWtlCi0gICAgICAgICAgICAgICAgYXMgbWFueSBjaGFuZ2VzIGFzIHlvdSB3YW50IGFuZCBzYXZlIHRoZW0sIHRoZW4gY29tcGFyZSB0aGUgcmVuYW1lZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSBhZ2FpbnN0IHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHJlc3VsdGluZyBkaWZmZXJlbmNlcyBhcyB5b3VyIGJhc2UgdG8gY3JlYXRlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzCi0gICAgICAgICAgICAgICAgdG8gcGVybWFuZW50bHkgc2F2ZSBpbiB5b3VyIGtlcm5lbCBsYXllci4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBtYWtlIGEgY29weSBvZiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBhbmQgZG9uJ3QganVzdAotICAgICAgICAgICAgICAgICAgICByZW5hbWUgaXQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gbmVlZHMgYW4gZXhpc3RpbmcgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRvIHdvcmsuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWEtZGVmY29uZmlnLWZpbGUnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gRmlsZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMgc2ltcGx5IGEKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IHJlbmFtZWQgdG8gImRlZmNvbmZpZyIuCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgIHRvIHJldGFpbiBhIGtub3duIHNldCBvZiBrZXJuZWwgY29uZmlndXJhdGlvbnMgZnJvbSB3aGljaCB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBkcmF3IHRvIGNyZWF0ZSB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIE91dC1vZi10aGUtYm94LCB0aGUgWW9jdG8gUHJvamVjdCBuZXZlciBzaGlwcyBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAga2VybmVsLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gY3JlYXRlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+LCBzdGFydCB3aXRoIGEKLSAgICAgICAgICAgICAgICBjb21wbGV0ZSwgd29ya2luZyBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgICAgICAgQ29weSB0aGF0IGZpbGUgdG8gdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIHlvdXIgbGF5ZXIncwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgYW5kIHJlbmFtZQotICAgICAgICAgICAgICAgIHRoZSBjb3BpZWQgZmlsZSB0byAiZGVmY29uZmlnIi4KLSAgICAgICAgICAgICAgICBUaGVuLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB0aGUgbGludXgteW9jdG8KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyIGxheWVyOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZGVmY29uZmlnIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdGVsbHMgdGhlIGJ1aWxkIHN5c3RlbSBob3cgdG8gc2VhcmNoIGZvciB0aGUgZmlsZSwgd2hpbGUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBleHRlbmRzIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgKHNlYXJjaCBkaXJlY3RvcmllcykgdG8gaW5jbHVkZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiBkaXJlY3RvcnkgeW91IGNyZWF0ZWQgdG8gaG9sZCB0aGUKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgY29uZmlndXJhdGlvbnMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGFwcGx5aW5nIGFueQotICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLgotICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBhbnkgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgeW91IHByb3ZpZGUuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHJlYWxpemUgdGhhdCBpZiB5b3UgaGF2ZSBhbnkgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGVzZSBvbiB0b3Agb2YgYW5kCi0gICAgICAgICAgICAgICAgICAgIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzdGluZyBkZWZjb25maWcgZmlsZSBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC91bGluaz4iCi0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNnZW5lcmF0aW5nLWNvbmZpZ3VyYXRpb24tZmlsZXMnPkdlbmVyYXRpbmcgQ29uZmlndXJhdGlvbiBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb25zLCBib3RoIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIE1hbnVhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGFyZSBzaW1wbHkga2VybmVsIG9wdGlvbnMgdGhhdCBhcHBlYXIgaW4gYSBmaWxlCi0gICAgICAgICAgICAgICAgcGxhY2VkIHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBmaW5kIGFuZCBhcHBseSB0aGVtLgotICAgICAgICAgICAgICAgIFN5bnRhY3RpY2FsbHksIHRoZSBjb25maWd1cmF0aW9uIHN0YXRlbWVudCBpcyBpZGVudGljYWwgdG8gd2hhdCB3b3VsZCBhcHBlYXIKLSAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB0bXAvd29yay88cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LXBva3ktbGludXgvbGludXgteW9jdG8tPHJlcGxhY2VhYmxlPnJlbGVhc2Vfc3BlY2lmaWNfc3RyaW5nPC9yZXBsYWNlYWJsZT4vbGludXgtPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YnVpbGRfdHlwZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJdCBpcyBzaW1wbGUgdG8gY3JlYXRlIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaXNzdWluZyB0aGUgZm9sbG93aW5nIGZyb20gdGhlIHNoZWxsIGNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50Ci0gICAgICAgICAgICAgICAgZmlsZSBuYW1lZCA8ZmlsZW5hbWU+bXlfc21wLmNmZzwvZmlsZW5hbWU+IHRoYXQgZW5hYmxlcyBtdWx0aS1wcm9jZXNzb3Igc3VwcG9ydAotICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUga2VybmVsOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBlY2hvICJDT05GSUdfU01QPXkiID4+IG15X3NtcC5jZmcKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEFsbCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIG11c3QgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGV4dGVuc2lvbiBpbiBvcmRlciBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmVjb2duaXplIHRoZW0gYXMgYQotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50LgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlcmUgZG8geW91IHB1dCB5b3VyIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXM/Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBwbGFjZSB0aGVzZSBmaWxlcyBpbiB0aGUgc2FtZSBhcmVhIHBvaW50ZWQgdG8gYnkKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBpY2tzIHVwIHRoZSBjb25maWd1cmF0aW9uIGFuZAotICAgICAgICAgICAgICAgIGFkZHMgaXQgdG8gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBhIHNldCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMKLSAgICAgICAgICAgICAgICBpbiBhIGZpbGUgY2FsbGVkIDxmaWxlbmFtZT5teWNvbmZpZy5jZmc8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBJZiB5b3UgcHV0IHRoYXQgZmlsZSBpbnNpZGUgYSBkaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiB0aGF0IHJlc2lkZXMgaW4gdGhlIHNhbWUKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlIGFuZCB0aGVuIGFkZCBhCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgc3VjaCBhcyB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgdG8gdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlLCB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB3aWxsIGJlIHBpY2tlZCB1cCBhbmQgYXBwbGllZCB3aGVuIHRoZSBrZXJuZWwgaXMgYnVpbHQuCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXljb25maWcuY2ZnIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHlvdSBjYW4gZ3JvdXAgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBpbnRvIG11bHRpcGxlIGZpbGVzIGFuZAotICAgICAgICAgICAgICAgIG5hbWUgdGhlbSBhbGwgaW4gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBncm91cCBzZXBhcmF0ZSBjb25maWd1cmF0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIEV0aGVybmV0IGFuZCBncmFwaGljcwotICAgICAgICAgICAgICAgIGludG8gdGhlaXIgb3duIGZpbGVzIGFuZCBhZGQgdGhvc2UgYnkgdXNpbmcgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBsaWtlIHRoZQotICAgICAgICAgICAgICAgIGZvbGxvd2luZyBpbiB5b3VyIGFwcGVuZCBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL215Y29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8vZXRoLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8vZ2Z4LmNmZyIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZmluZS10dW5pbmctdGhlLWtlcm5lbC1jb25maWd1cmF0aW9uLWZpbGUnPgotICAgICAgICAgICAgPHRpdGxlPkZpbmUtVHVuaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBtYWtlIHN1cmUgdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBhcyBsZWFuIG9yIGVmZmljaWVudCBhcwotICAgICAgICAgICAgICAgIHBvc3NpYmxlIGJ5IHJlYWRpbmcgdGhlIG91dHB1dCBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgYXVkaXQsCi0gICAgICAgICAgICAgICAgbm90aW5nIGFueSBpc3N1ZXMsIG1ha2luZyBjaGFuZ2VzIHRvIGNvcnJlY3QgdGhlIGlzc3VlcywgYW5kIHRoZW4gcmVwZWF0aW5nLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcywgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2sgcnVucy4KLSAgICAgICAgICAgICAgICBUaGlzIHRhc2sgdmFsaWRhdGVzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBieSBjaGVja2luZyB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCB0aGUgaW5wdXQgZmlsZXMuCi0gICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBjaGVjaywgdGhlIHRhc2sgcHJvZHVjZXMgd2FybmluZyBtZXNzYWdlcyBmb3IgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgIGlzc3VlczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVxdWVzdGVkIG9wdGlvbnMgdGhhdCBkaWQgbm90IG1ha2UgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db25maWd1cmF0aW9uIGl0ZW1zIHRoYXQgYXBwZWFyIHR3aWNlIGluIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJhdGlvbiBpdGVtcyB0YWdnZWQgYXMgInJlcXVpcmVkIiB0aGF0IHdlcmUgb3ZlcnJpZGRlbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBib2FyZCBvdmVycmlkZXMgYSBub24tYm9hcmQgc3BlY2lmaWMgb3B0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TGlzdGVkIG9wdGlvbnMgbm90IHZhbGlkIGZvciB0aGUga2VybmVsIGJlaW5nIHByb2Nlc3NlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgb3B0aW9uIGRvZXMgbm90IGFwcGVhciBhbnl3aGVyZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrIGNhbgotICAgICAgICAgICAgICAgICAgICBhbHNvIG9wdGlvbmFsbHkgcmVwb3J0IGlmIGFuIG9wdGlvbiBpcyBvdmVycmlkZGVuIGR1cmluZwotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGVhY2ggb3V0cHV0IHdhcm5pbmcsIGEgbWVzc2FnZSBwb2ludHMgdG8gdGhlIGZpbGUKLSAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aGUgb3B0aW9ucyBhbmQgYSBwb2ludGVyIHRvIHRoZQotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdGhhdCBkZWZpbmVzIHRoZW0uCi0gICAgICAgICAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGUgZmlsZXMgYXJlIHRoZSBrZXkgdG8gc3RyZWFtbGluaW5nIHRoZQotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIHN0cmVhbWxpbmUgdGhlIGNvbmZpZ3VyYXRpb24sIGRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3RhcnQgd2l0aCBhIGZ1bGwgY29uZmlndXJhdGlvbiB0aGF0IHlvdQotICAgICAgICAgICAgICAgICAgICAgICAga25vdyB3b3JrcyAtIGl0IGJ1aWxkcyBhbmQgYm9vdHMgc3VjY2Vzc2Z1bGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgd2lsbCBiZSB5b3VyIGJhc2VsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZXBhcmF0ZWx5IHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGFrZSB0aGUgcmVzdWx0aW5nIGxpc3Qgb2YgZmlsZXMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyBhbmQgZG8gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcm9wIHZhbHVlcyB0aGF0IGFyZSByZWRlZmluZWQgaW4gdGhlIGZyYWdtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkbyBub3QgY2hhbmdlIHRoZSBmaW5hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZSBhbmQgcG90ZW50aWFsbHkgZHJvcCB2YWx1ZXMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgb3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZSBhbmQgcG90ZW50aWFsbHkgcmVtb3ZlIG5vbi1ib2FyZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSByZXBlYXRlZCBhbmQgaW52YWxpZCBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSB3b3JrZWQgdGhyb3VnaCB0aGUgb3V0cHV0IG9mIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYXVkaXQsIHlvdSBjYW4gcmUtcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2tzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIHJlc3VsdHMgb2YgeW91ciBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbW9yZSBpc3N1ZXMsIHlvdSBjYW4gZGVhbCB3aXRoIHRoZW0gYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZWx5IHdvcmtpbmcgdGhyb3VnaCBzdGVwcyB0d28gdGhyb3VnaCBmb3VyIGV2ZW50dWFsbHkgeWllbGRzCi0gICAgICAgICAgICAgICAgYSBtaW5pbWFsLCBzdHJlYW1saW5lZCBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgYmVzdCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+LCB5b3UgY2FuIGJ1aWxkIHRoZSBMaW51eAotICAgICAgICAgICAgICAgIFlvY3RvIGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdkZXRlcm1pbmluZy1oYXJkd2FyZS1hbmQtbm9uLWhhcmR3YXJlLWZlYXR1cmVzLWZvci10aGUta2VybmVsLWNvbmZpZ3VyYXRpb24tYXVkaXQtcGhhc2UnPgotICAgICAgICAgICAgPHRpdGxlPkRldGVybWluaW5nIEhhcmR3YXJlIGFuZCBOb24tSGFyZHdhcmUgRmVhdHVyZXMgZm9yIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBBdWRpdCBQaGFzZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgcGFydCBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYXVkaXQKLSAgICAgICAgICAgICAgICBwaGFzZSB0aGF0IG1vc3QgZGV2ZWxvcGVycyBjYW4gaWdub3JlLgotICAgICAgICAgICAgICAgIER1cmluZyB0aGlzIHBhcnQgb2YgdGhlIGF1ZGl0IHBoYXNlLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZQotICAgICAgICAgICAgICAgIGZyYWdtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBUaGVzZSBmcmFnbWVudHMgY2FuIGJlIHN5c3RlbSBmcmFnbWVudHMsIGRpc3RybyBmcmFnbWVudHMsCi0gICAgICAgICAgICAgICAgb3IgdXNlciBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZWlyIG9yaWdpbiwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICB3YXJucyB0aGUgdXNlciBpZiBhIHNwZWNpZmljIG9wdGlvbiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIG5vdCBvdmVyd2hlbG0gdGhlIHVzZXIgd2l0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzLAotICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgdGhlIHN5c3RlbSBvbmx5IHJlcG9ydHMgb24gbWlzc2luZyAiaGFyZHdhcmUiCi0gICAgICAgICAgICAgICAgb3B0aW9ucyBiZWNhdXNlIGEgbWlzc2luZyBoYXJkd2FyZSBvcHRpb24gY291bGQgbWVhbiBhIGJvb3QKLSAgICAgICAgICAgICAgICBmYWlsdXJlIG9yIHRoYXQgaW1wb3J0YW50IGhhcmR3YXJlIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIGdpdmVuIG9wdGlvbiBpcyAiaGFyZHdhcmUiIG9yCi0gICAgICAgICAgICAgICAgIm5vbi1oYXJkd2FyZSIsIHRoZSBrZXJuZWwgTWV0YWRhdGEgY29udGFpbnMgZmlsZXMgdGhhdAotICAgICAgICAgICAgICAgIGNsYXNzaWZ5IGluZGl2aWR1YWwgb3IgZ3JvdXBzIG9mIG9wdGlvbnMgYXMgZWl0aGVyIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgb3Igbm9uLWhhcmR3YXJlLgotICAgICAgICAgICAgICAgIFRvIGJldHRlciBzaG93IHRoaXMsIGNvbnNpZGVyIGEgc2l0dWF0aW9uIHdoZXJlIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qga2VybmVsIGNhY2hlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmlsZXM6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBrZXJuZWwtY2FjaGUvZmVhdHVyZXMvZHJtLXBzYi9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2ZlYXR1cmVzL2tnZGIvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9rdHlwZXMvYmFzZS9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGEzMi9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9mc2wtbXBjODMxNWUtcmRiL2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvYnNwL3FlbXUtcHBjMzIvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9ic3AvcWVtdWFybWE5L2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTY0L2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvYnNwL2FybS12ZXJzYXRpbGUtOTI2ZWpzL2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvYnNwL2NvbW1vbi1wYy9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9jb21tb24tcGMtNjQvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9mZWF0dXJlcy9yZmtpbGwvbm9uLWhhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvZmVhdHVyZXMvYXVmcy9ub24taGFyZHdhcmUua2NmCi0gICAgIGtlcm5lbC1jYWNoZS9mZWF0dXJlcy9vY2Yvbm9uLWhhcmR3YXJlLmtjZgotICAgICBrZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmtjZgotICAgICBrZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUua2NmCi0gICAgIGtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5rY2YKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByb3ZpZGVzIGV4cGxhbmF0aW9ucyBmb3IgdGhlIHZhcmlvdXMKLSAgICAgICAgICAgICAgICBmaWxlczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwgS2NvbmZpZyBmaWxlcyB0aGF0IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9wdGlvbnMgb25seS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5vbi1oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIEtjb25maWcgZmlsZXMgdGhhdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgICAgICBub24taGFyZHdhcmUgb3B0aW9ucyBvbmx5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aGFyZHdhcmUuY2ZnPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPiBvcHRpb25zIHRoYXQgYXJlIGhhcmR3YXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSB3aXRoaW4gYSBLY29uZmlnCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHNwZWNpZmllZCBieSBhIGhhcmR3YXJlIG9yIG5vbi1oYXJkd2FyZQotICAgICAgICAgICAgICAgICAgICAgICAgS2NvbmZpZyBmaWxlIChpLmUuIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vbi1oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ub24taGFyZHdhcmUuY2ZnPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPiBvcHRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgaGFyZHdhcmUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhleSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBhIEtjb25maWcgZmlsZSBzcGVjaWZpZWQgYnkgYSBoYXJkd2FyZSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWhhcmR3YXJlIEtjb25maWcgZmlsZSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBzcGVjaWZpYyBleGFtcGxlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTMyL2hhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ09ORklHX1NFUklBTF84MjUwCi0gICAgIENPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFCi0gICAgIENPTkZJR19TRVJJQUxfODI1MF9OUl9VQVJUUwotICAgICBDT05GSUdfU0VSSUFMXzgyNTBfUENJCi0gICAgIENPTkZJR19TRVJJQUxfQ09SRQotICAgICBDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRQotICAgICBDT05GSUdfVkdBX0FSQgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYXVkaXQgYXV0b21hdGljYWxseSBkZXRlY3RzIHRoZXNlCi0gICAgICAgICAgICAgICAgZmlsZXMgKGhlbmNlIHRoZSBuYW1lcyBtdXN0IGJlIGV4YWN0bHkgdGhlIG9uZXMgZGlzY3Vzc2VkIGhlcmUpLAotICAgICAgICAgICAgICAgIGFuZCB1c2VzIHRoZW0gYXMgaW5wdXRzIHdoZW4gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB0aGUKLSAgICAgICAgICAgICAgICBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgdXNlci1zcGVjaWZpZWQga2VybmVsIE1ldGFkYXRhIHJlcG9zaXRvcnksIG9yIHJlY2lwZSBzcGFjZQotICAgICAgICAgICAgICAgIGZlYXR1cmUsIGNhbiB1c2UgdGhlc2Ugc2FtZSBmaWxlcyB0byBjbGFzc2lmeSBvcHRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgZm91bmQgd2l0aGluIGl0cyA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGZpbGVzIGFzIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgb3Igbm9uLWhhcmR3YXJlLCB0byBwcmV2ZW50IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGZyb20KLSAgICAgICAgICAgICAgICBwcm9kdWNpbmcgYW4gZXJyb3Igb3Igd2FybmluZyB3aGVuIGFuIG9wdGlvbiBpcyBub3QgaW4gdGhlCi0gICAgICAgICAgICAgICAgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InBhdGNoaW5nLXRoZS1rZXJuZWwiPgotICAgICAgICA8dGl0bGU+UGF0Y2hpbmcgdGhlIEtlcm5lbDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBQYXRjaGluZyB0aGUga2VybmVsIGludm9sdmVzIGNoYW5naW5nIG9yIGFkZGluZyBjb25maWd1cmF0aW9ucyB0byBhbiBleGlzdGluZyBrZXJuZWwsCi0gICAgICAgICAgICBjaGFuZ2luZyBvciBhZGRpbmcgcmVjaXBlcyB0byB0aGUga2VybmVsIHRoYXQgYXJlIG5lZWRlZCB0byBzdXBwb3J0IHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLAotICAgICAgICAgICAgb3IgZXZlbiBhbHRlcmluZyB0aGUgc291cmNlIGNvZGUgaXRzZWxmLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQKLSAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICB1bmRlciA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IHRvIG1hbmFnZSBrZXJuZWwgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNtYW5hZ2luZy1rZXJuZWwtcGF0Y2hlcy1hbmQtY29uZmlnLWl0ZW1zLXdpdGgteW9jdG8ta2VybmVsJz5NYW5hZ2luZyBrZXJuZWwgUGF0Y2hlcyBhbmQgQ29uZmlnIEl0ZW1zIHdpdGggeW9jdG8ta2VybmVsPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIERldmVsb3BlcidzIEd1aWRlIGZvcgotICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGV4YW1wbGUgY3JlYXRlcyBhIHNpbXBsZSBwYXRjaCBieSBhZGRpbmcgc29tZSBRRU1VIGVtdWxhdG9yIGNvbnNvbGUKLSAgICAgICAgICAgIG91dHB1dCBhdCBib290IHRpbWUgdGhyb3VnaCA8ZmlsZW5hbWU+cHJpbnRrPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbiB0aGUga2VybmVsJ3MKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IHNvdXJjZSBjb2RlIGZpbGUuCi0gICAgICAgICAgICBBcHBseWluZyB0aGUgcGF0Y2ggYW5kIGJvb3RpbmcgdGhlIG1vZGlmaWVkIGltYWdlIGNhdXNlcyB0aGUgYWRkZWQKLSAgICAgICAgICAgIG1lc3NhZ2VzIHRvIGFwcGVhciBvbiB0aGUgZW11bGF0b3IncyBjb25zb2xlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXhhbXBsZSBhc3N1bWVzIGEgY2xlYW4gYnVpbGQgZXhpc3RzIGZvciB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgbWFjaGluZSBpbiBhCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+IGlzCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBhbmQgaXMgbG9jYXRlZCBpbiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgdGhlIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggMy40IGtlcm5lbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWxzbywgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcGF0Y2hpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNhcHBseWluZy1wYXRjaGVzJz5BcHBseWluZyBQYXRjaGVzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRlLWEtbGF5ZXItZm9yLXlvdXItY2hhbmdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3JlYXRlIGEgTGF5ZXIgZm9yIHlvdXIgQ2hhbmdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGNyZWF0ZSBhIGxheWVyIHNvIHlvdSBjYW4gaXNvbGF0ZSB5b3VyCi0gICAgICAgICAgICAgICAgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAotICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSB0aGUgbGF5ZXIsIHRoaXMgZXhhbXBsZSBzdGVwcyB0aHJvdWdoIHRoZSBwcm9jZXNzCi0gICAgICAgICAgICAgICAgYnkgaGFuZC4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBpbmZvcm1hdGlvbiBvbiB0aGUgc2NyaXB0IHRoYXQgY3JlYXRlcyBhIGdlbmVyYWwKLSAgICAgICAgICAgICAgICBsYXllciwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWxheWVyLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSB5b2N0by1sYXllciBTY3JpcHQ8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZXNlIHR3byBjb21tYW5kcyBjcmVhdGUgYSBkaXJlY3RvcnkgeW91IGNhbiB1c2UgZm9yIHlvdXIKLSAgICAgICAgICAgICAgICBsYXllcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9wb2t5Ci0gICAgICQgbWtkaXIgbWV0YS1teWxheWVyCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIENyZWF0aW5nIGEgZGlyZWN0b3J5IHRoYXQgZm9sbG93cyB0aGUgWW9jdG8gUHJvamVjdCBsYXllciBuYW1pbmcKLSAgICAgICAgICAgICAgICBjb252ZW50aW9ucyBzZXRzIHVwIHRoZSBsYXllciBmb3IgeW91ciBjaGFuZ2VzLgotICAgICAgICAgICAgICAgIFRoZSBsYXllciBpcyB3aGVyZSB5b3UgcGxhY2UgeW91ciBjb25maWd1cmF0aW9uIGZpbGVzLCBhcHBlbmQKLSAgICAgICAgICAgICAgICBmaWxlcywgYW5kIHBhdGNoIGZpbGVzLgotICAgICAgICAgICAgICAgIFRvIGxlYXJuIG1vcmUgYWJvdXQgY3JlYXRpbmcgYSBsYXllciBhbmQgZmlsbGluZyBpdCB3aXRoIHRoZQotICAgICAgICAgICAgICAgIGZpbGVzIHlvdSBuZWVkLCBzZWUgdGhlICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKLSAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdmaW5kaW5nLXRoZS1rZXJuZWwtc291cmNlLWNvZGUnPgotICAgICAgICAgICAgPHRpdGxlPkZpbmRpbmcgdGhlIEtlcm5lbCBTb3VyY2UgQ29kZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEVhY2ggdGltZSB5b3UgYnVpbGQgYSBrZXJuZWwgaW1hZ2UsIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgaXMgZmV0Y2hlZAotICAgICAgICAgICAgICAgIGFuZCB1bnBhY2tlZCBpbnRvIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJHtTfS9saW51eAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPkZpbmRpbmcgVGVtcG9yYXJ5IFNvdXJjZSBDb2RlPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGFuZCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgc291cmNlIGlzIGtlcHQgZHVyaW5nIGEgYnVpbGQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHdlIGFyZSBnb2luZyB0byBwYXRjaCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5pdC9jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICBieSBhZGRpbmcgc29tZSBzaW1wbGUgY29uc29sZSA8ZmlsZW5hbWU+cHJpbnRrPC9maWxlbmFtZT4gc3RhdGVtZW50cyB0aGF0IHdlIGNhbgotICAgICAgICAgICAgICAgIHNlZSB3aGVuIHdlIGJvb3QgdGhlIGltYWdlIHVzaW5nIFFFTVUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctdGhlLXBhdGNoJz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyB0aGUgUGF0Y2g8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUd28gbWV0aG9kcyBleGlzdCBieSB3aGljaCB5b3UgY2FuIGNyZWF0ZSB0aGUgcGF0Y2g6Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC1pbi15b3VyLXdvcmtmbG93Jz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9saW5rPiBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd1c2luZy1hLXF1aWx0LXdvcmtmbG93Jz5RdWlsdDwvbGluaz4uCi0gICAgICAgICAgICAgICAgRm9yIGtlcm5lbCBwYXRjaGVzLCB0aGUgR2l0IHdvcmtmbG93IGlzIG1vcmUgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGFzc3VtZXMgdGhlIEdpdCB3b3JrZmxvdyBhbmQgc2hvd3MgdGhlIHN0ZXBzIHNwZWNpZmljIHRvCi0gICAgICAgICAgICAgICAgdGhpcyBleGFtcGxlLgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgdG8gd2hlcmUgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBiZWZvcmUgbWFraW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGVkaXRzIHRvIHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8tJHtQVn0tJHtQUn0vbGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgeW91IGFyZSB3b3JraW5nIGluIGFuIGVzdGFibGlzaGVkIEdpdCByZXBvc2l0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgYmUgaW4gdGhpcyBkaXJlY3RvcnkgaW4gb3JkZXIgdG8gY29tbWl0IHlvdXIgY2hhbmdlcwotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNyZWF0ZSB0aGUgcGF0Y2ggZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPlRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudCB0aGUgdmVyc2lvbiBhbmQgcmV2aXNpb24gZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+IHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gdmFyaWFibGUgaW5jbHVkZXMgdGhlIEdpdCBtZXRhIGFuZCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaGVzLCB3aGljaCBtYWtlIHRoZSBkaXJlY3RvcnkgbmFtZSBsb25nZXIgdGhhbiB5b3UgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgc291cmNlIGZpbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlIDxmaWxlbmFtZT5pbml0L2NhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZSB0byBoYXZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNoYW5nZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHZvaWQgY2FsaWJyYXRlX2RlbGF5KHZvaWQpCi0gICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBqOwotICAgICAgICAgc3RhdGljIGJvb2wgcHJpbnRlZDsKLSAgICAgICAgIGludCB0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKLQotICAgICAgICAgcHJpbnRrKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKLSAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7Ci0gICAgICAgICBwcmludGsoIiogICAgICAgIEhFTExPIFlPQ1RPIEtFUk5FTCAgICAgICAgICpcbiIpOwotICAgICAgICAgcHJpbnRrKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4iKTsKLSAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7Ci0KLSAgICAgCWlmIChwZXJfY3B1KGNwdV9sb29wc19wZXJfamlmZnksIHRoaXNfY3B1KSkgewotICAgICAgICAgICAgICAgLgotICAgICAgICAgICAgICAgLgotICAgICAgICAgICAgICAgLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN0YWdlIGFuZCBjb21taXQgeW91ciBjaGFuZ2VzPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBHaXQgY29tbWFuZHMgZGlzcGxheSB0aGUgbW9kaWZpZWQgZmlsZSwgc3RhZ2UgaXQsIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21taXQgdGhlIGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHN0YXR1cwotICAgICAkIGdpdCBhZGQgaW5pdC9jYWxpYnJhdGUuYwotICAgICAkIGdpdCBjb21taXQgLW0gImNhbGlicmF0ZTogQWRkIHByaW50ayBleGFtcGxlIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBwYXRjaCBmaWxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIEdpdCBjb21tYW5kIGNyZWF0ZXMgdGhlIGEgcGF0Y2ggZmlsZSBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjAwMDEtY2FsaWJyYXRlLUFkZC1wcmludGstZXhhbXBsZS5wYXRjaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtMQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZXQtdXAteW91ci1sYXllci1mb3ItdGhlLWJ1aWxkJz4KLSAgICAgICAgICAgIDx0aXRsZT5TZXQgVXAgWW91ciBMYXllciBmb3IgdGhlIEJ1aWxkPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+VGhlc2Ugc3RlcHMgZ2V0IHlvdXIgbGF5ZXIgc2V0IHVwIGZvciB0aGUgYnVpbGQ6Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSBhZGRpdGlvbmFsIHN0cnVjdHVyZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRoZSBhZGRpdGlvbmFsIGxheWVyIHN0cnVjdHVyZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L3Bva3kvbWV0YS1teWxheWVyCi0gICAgICQgbWtkaXIgY29uZgotICAgICAkIG1rZGlyIHJlY2lwZXMta2VybmVsCi0gICAgICQgbWtkaXIgcmVjaXBlcy1rZXJuZWwvbGludXgKLSAgICAgJCBta2RpciByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaG9sZHMgeW91ciBjb25maWd1cmF0aW9uIGZpbGVzLCB3aGlsZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWw8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaG9sZHMgeW91ciBhcHBlbmQgZmlsZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHBhdGNoIGZpbGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q3JlYXRlIHRoZSBsYXllciBjb25maWd1cmF0aW9uIGZpbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gdGhlIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXIvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJQQVRICi0gICAgIEJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0gICAgICMgV2UgaGF2ZSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCi0gICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAotICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi0gICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAibXlsYXllciIKLSAgICAgQkJGSUxFX1BBVFRFUk5fbXlsYXllciA9ICJeJHtMQVlFUkRJUn0vIgotICAgICBCQkZJTEVfUFJJT1JJVFlfbXlsYXllciA9ICI1IgotICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpY2UgPGZpbGVuYW1lPm15bGF5ZXI8L2ZpbGVuYW1lPiBhcyBwYXJ0IG9mIHRoZSBsYXN0IHRocmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgdGhlIGtlcm5lbCByZWNpcGUgYXBwZW5kIGZpbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gdGhlIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYW5kIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0b18zLjQuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotICAgICBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jYWxpYnJhdGUtQWRkLXByaW50ay1leGFtcGxlLnBhdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBlbmFibGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZmluZCB0aGUgcGF0Y2ggZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllcjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHV0IHRoZSBwYXRjaCBmaWxlIGluIHlvdXIgbGF5ZXI8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdGhlIDxmaWxlbmFtZT4wMDAxLWNhbGlicmF0ZS1BZGQtcHJpbnRrLWV4YW1wbGUucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZXQtdXAtZm9yLXRoZS1idWlsZCc+Ci0gICAgICAgICAgICA8dGl0bGU+U2V0IFVwIGZvciB0aGUgQnVpbGQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBEbyB0aGUgZm9sbG93aW5nIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgcGFyYW1ldGVycyBhcmUgc2V0IHVwIGZvciB0aGUgZXhhbXBsZS4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBzZXQgdXAgdGhlc2UgYnVpbGQgcGFyYW1ldGVycywgdGhleSBkbyBub3QgaGF2ZSB0byBjaGFuZ2UgdW5sZXNzIHlvdQotICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvZiB0aGUgbWFjaGluZSB5b3UgYXJlIGJ1aWxkaW5nOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgZm9yIHRoZSBjb3JyZWN0IHRhcmdldCBhcmNoaXRlY3R1cmU6PC9lbXBoYXNpcz4gWW91cgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgTGludXgga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sIHdoaWNoIHNwZWNpZmllcyBhIDMyLWJpdAotICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gQXJjaGl0ZWN0dXJlCi0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgbWFjaGluZSBzdWl0YWJsZSBmb3IgdGhlIFFFTVUgZW11bGF0b3IuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SWRlbnRpZnkgeW91ciA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOjwvZW1waGFzaXM+IFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkL2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgbmVlZHMgdG8gaGF2ZSB0aGUgcGF0aCB0byB5b3VyIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4gbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT4gdmFyaWFibGUgY29udGFpbnMgcGF0aHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBBZGQgdGhlIHBhdGggdG8geW91ciA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4gbG9jYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEJCTEFZRVJTID89ICIgXAotICAgICAgICRIT01FL3Bva3kvbWV0YSBcCi0gICAgICAgJEhPTUUvcG9reS9tZXRhLXBva3kgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS15b2N0by1ic3AgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS1teWxheWVyIFwKLSAgICAgICAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtdGhlLW1vZGlmaWVkLXFlbXUta2VybmVsLWltYWdlJz4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZCB0aGUgTW9kaWZpZWQgUUVNVSBLZXJuZWwgSW1hZ2U8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIGJ1aWxkIHlvdXIgbW9kaWZpZWQga2VybmVsIGltYWdlOgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CZSBzdXJlIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgaW5pdGlhbGl6ZWQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHNldCB1cCBzaW5jZSB5b3UgcHJldmlvdXNseSBzb3VyY2VkCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgaXQgaXMgbm90LCBzb3VyY2UgdGhlIHNjcmlwdCBhZ2FpbiBmcm9tIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9wb2t5Ci0gICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DbGVhbiB1cDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjbGVhbiB0aGUgc2hhcmVkIHN0YXRlIG91dCBieSB1c2luZyBCaXRCYWtlCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBydW4gZnJvbSB3aXRoaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbnNzdGF0ZSc+PGZpbGVuYW1lPmRvX2NsZWFuc3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgY2xlYW5zc3RhdGUgbGludXgteW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyIHJlbW92ZSBhbnkgZmlsZXMgYnkgaGFuZCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW5zaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMgdXNlIHRoZSB2YXJpb3VzIEJpdEJha2UgY2xlYW4gdGFza3MgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhciBvdXQgcHJldmlvdXMgYnVpbGQgYXJ0aWZhY3RzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY2xlYW4gdGFza3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvdWxpbms+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuYWxsJz48ZmlsZW5hbWU+ZG9fY2xlYW5hbGw8L2ZpbGVuYW1lPjwvdWxpbms+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuc3N0YXRlJz48ZmlsZW5hbWU+ZG9fY2xlYW5zc3RhdGU8L2ZpbGVuYW1lPjwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgaW1hZ2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE5leHQsIGJ1aWxkIHRoZSBrZXJuZWwgaW1hZ2UgdXNpbmcgdGhpcyBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWsgbGludXgteW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2Jvb3QtdGhlLWltYWdlLWFuZC12ZXJpZnkteW91ci1jaGFuZ2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Cb290IHRoZSBJbWFnZSBhbmQgVmVyaWZ5IFlvdXIgQ2hhbmdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGJvb3QgdGhlIGltYWdlIGFuZCBhbGxvdyB5b3UgdG8gc2VlIHRoZSBjaGFuZ2VzCi0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJvb3QgdGhlIGltYWdlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBCb290IHRoZSBtb2RpZmllZCBpbWFnZSBpbiB0aGUgUUVNVSBlbXVsYXRvcgotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgcWVtdXg4NgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlZlcmlmeSB0aGUgY2hhbmdlczwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgTG9nIGludG8gdGhlIG1hY2hpbmUgdXNpbmcgPGZpbGVuYW1lPnJvb3Q8L2ZpbGVuYW1lPiB3aXRoIG5vIHBhc3N3b3JkIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBzaGVsbCBjb21tYW5kIHRvIHNjcm9sbCB0aHJvdWdoIHRoZSBjb25zb2xlJ3MgYm9vdCBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgZG1lc2cgfCBsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdtYWtpbmctaW1hZ2VzLW1vcmUtc2VjdXJlJz4KQEAgLTY4MTIsNyArNTk1MSw3IEBACiAgICAgICAgICAgICAgICAgVGhlIHNlY3VyaXR5IGZsYWdzIGFyZSBpbiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSBpbiB5b3VyCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSByZWNpcGUsIGNlcnRhaW4gc2VjdXJpdHkgZmxhZ3MgYXJlIGVuYWJsZWQKQEAgLTY5MzIsOCArNjA3MSw4IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgV2hlbiB5b3UgYnVpbGQgYW4gaW1hZ2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYW5kCiAgICAgICAgICAgICBkbyBub3QgYWx0ZXIgYW55IGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwgeW91IGFyZSBjcmVhdGluZyBhCi0gICAgICAgICAgICBQb2t5IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICAgICAgeW91IGFyZSBjcmVhdGluZyBhIFBva3kgZGlzdHJpYnV0aW9uLgogICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gZ2FpbiBtb3JlIGNvbnRyb2wgb3ZlciBwYWNrYWdlIGFsdGVybmF0aXZlCiAgICAgICAgICAgICBzZWxlY3Rpb25zLCBjb21waWxlLXRpbWUgb3B0aW9ucywgYW5kIG90aGVyIGxvdy1sZXZlbAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4KQEAgLTY5NTYsNyArNjA5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBtYWtlcyBpdCBlYXNpZXIgdG8gcmVwcm9kdWNlIHRoZSBzYW1lCiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGNvbmZpZ3VyYXRpb24gd2hlbiB1c2luZyBtdWx0aXBsZSBidWlsZCBtYWNoaW5lcy4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS15b2N0by1sYXllci1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgeW9jdG8tbGF5ZXIgU2NyaXB0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBxdWlja2x5IHNldCB1cCBhIGxheWVyLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZTo8L2VtcGhhc2lzPgpAQCAtNzAxOSw3ICs2MTU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgYnVsbGV0ZWQgaXRlbS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBvaW50IHRvIFlvdXIgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBJbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICBzZXQgeW91cgogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB5b3VyIGRpc3RyaWJ1dGlvbidzIGNvbmZpZ3VyYXRpb24gZmlsZS4KQEAgLTcwNDQsNyArNjE4Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gaG93IHRvIGFkZCByZWNpcGVzIHRvIHlvdXIgbGF5ZXIsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmcteW91ci1vd24tbGF5ZXInPkNyZWF0aW5nIFlvdXIgT3duIExheWVyPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYmVzdC1wcmFjdGljZXMtdG8tZm9sbG93LXdoZW4tY3JlYXRpbmctbGF5ZXJzJz5CZXN0IFByYWN0aWNlcyB0byBGb2xsb3cgV2hlbiBDcmVhdGluZyBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdiZXN0LXByYWN0aWNlcy10by1mb2xsb3ctd2hlbi1jcmVhdGluZy1sYXllcnMnPkZvbGxvd2luZyBCZXN0IFByYWN0aWNlcyBXaGVuIENyZWF0aW5nIExheWVyczwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkIGFueSBpbWFnZSByZWNpcGVzIHRoYXQgYXJlIHNwZWNpZmljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8geW91ciBkaXN0cmlidXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC03MDc5LDcgKzYyMTgsNyBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHRvIGxvY2F0ZSB0aGUgZGlyZWN0b3J5CiAgICAgICAgICAgICBmcm9tIHdoaWNoIGl0IGdhdGhlcnMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiB0aGF0IHVsdGltYXRlbHkKICAgICAgICAgICAgIGVuZHMgdXAgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC9saW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gaXMgc2V0IGFzCiAgICAgICAgICAgICBmb2xsb3dzIGluIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnk6CkBAIC03MTA2LDcgKzYyNDUsNyBAQAogICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+LnRlbXBsYXRlY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGluIHRoZQogICAgICAgICAgICAgdG9wLWxldmVsCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICBmb2xkZXIgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+LnRlbXBsYXRlY29uZjwvZmlsZW5hbWU+IHNvIHRoYXQgaXQgY2FuIGxvY2F0ZQogICAgICAgICAgICAgeW91ciBkaXJlY3RvcnkuCkBAIC03MTM3LDEyICs2Mjc2LDEwIEBACiAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSA8ZmlsZW5hbWU+Ki5zYW1wbGU8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLAogICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGFsc28gcmVzaWRlcyBpbiB0aGUKICAgICAgICAgICAgIGRlZmF1bHQgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIHNjcmlwdHMgdGhhdCBzZXQgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICBUaGUgc2NyaXB0IHRoYXQgc2V0cyB1cCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pCi0gICAgICAgICAgICB1c2UgdGhpcyBmaWxlIHRvIGRpc3BsYXkgQml0QmFrZSB0YXJnZXRzIGFzIHBhcnQgb2YgdGhlIHNjcmlwdAorICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgdXNlcyB0aGlzIGZpbGUgdG8gZGlzcGxheSBCaXRCYWtlIHRhcmdldHMgYXMgcGFydCBvZiB0aGUgc2NyaXB0CiAgICAgICAgICAgICBvdXRwdXQuCiAgICAgICAgICAgICBDdXN0b21pemluZyB0aGlzIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUgaXMgYQogICAgICAgICAgICAgZ29vZCB3YXkgdG8gbWFrZSBzdXJlIHlvdXIgbGlzdCBvZiBjdXN0b20gdGFyZ2V0cyBhcHBlYXJzCkBAIC03Mjk2LDcgKzY0MzMsNyBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVG8gaGVscCB5b3Ugc2VlIHdoZXJlIHlvdSBjdXJyZW50bHkgYXJlIHdpdGgga2VybmVsIGFuZCByb290CiAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBzaXplcywgeW91IGNhbiB1c2UgdHdvIHRvb2xzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+IGluCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5zY3JpcHRzL3RpbnkvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+a3NpemUucHk8L2ZpbGVuYW1lPjogUmVwb3J0cwpAQCAtNzMyOCwxMCArNjQ2NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMva2NvbmZpZzwvZmlsZW5hbWU+IGRpcmVjdG9yeS48L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYW5kIHRoZSAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhpcyBtYW51YWwuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Yml0YmFrZSAtdSB0YXNrZXhwIC1nIDxyZXBsYWNlYWJsZT5iaXRiYWtlX3RhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKICAgICAgICAgICAgICAgICAgICAgICAgIGEgRGVwZW5kZW5jeSBFeHBsb3JlciBmcm9tIHdoaWNoIHlvdSBjYW4gdmlldyBmaWxlCkBAIC03OTU3LDcgKzcwOTQsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgYXR0ZW1wdGluZyB0byBtYWludGFpbiByZXZpc2lvbiBudW1iZXJzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBpcyBlcnJvciBwcm9uZSwgaW5hY2N1cmF0ZSwgYW5kIGNhdXNlcyBwcm9ibGVtcyBmb3IgcGVvcGxlCiAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRpbmcgcmVjaXBlcy4KICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2VseSwgdGhlIFBSIFNlcnZpY2UgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMKQEAgLTgwMzIsNyArNzE2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSU0VSVl9IT1NUJz48ZmlsZW5hbWU+UFJTRVJWX0hPU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSU0VSVl9IT1NUID0gImxvY2FsaG9zdDowIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC04MzMzLDcgKzc0NzAsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29ubm1hbi5pbmM8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuLzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+c291cmNlIHJlcG9zaXRvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+c291cmNlIHJlcG9zaXRvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgZXhhbXBsZXMgaW4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzczwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC04NTY4LDcgKzc3MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvYnVpbGQvY29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtODczOCw3ICs3ODc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFtvZS1wYWNrYWdlc10KLSAgICAgYmFzZXVybD0iaHR0cDovL215LnNlcnZlci9ycG0vaTU4NiBodHRwOi8vbXkuc2VydmVyL3JwbS9xZW11eDg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL2FsbCIKKyAgICAgYmFzZXVybD1odHRwOi8vbXkuc2VydmVyL3JwbS9pNTg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL3FlbXV4ODYgaHR0cDovL215LnNlcnZlci9ycG0vYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSB0YXJnZXQgbWFjaGluZSwgZmV0Y2ggdGhlIHJlcG9zaXRvcnk6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC04OTIwLDEzICs4MDU3LDEwIEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYmVpbmcgYWJsZSB0byBzaWduIFJQTSBwYWNrYWdlcywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICBhbHNvIGVuYWJsZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBiZSBhYmxlIHRvCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSBwcmV2aW91c2x5IHNpZ25lZCBwYWNrYWdlIGZlZWRzIGZvciBJUEsKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IHNpZ25lZCBEUEtHIG9yIFJQTSBwYWNrYWdlIGZlZWRzLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIGFsc28gZW5hYmxlIHNpZ25lZCBwYWNrYWdlIGZlZWRzIGZvciBJUEsgYW5kIFJQTSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHN0ZXBzIHlvdSBuZWVkIHRvIHRha2UgdG8gZW5hYmxlIHNpZ25lZCBwYWNrYWdlIGZlZWQKICAgICAgICAgICAgICAgICAgICAgdXNlIGFyZSBzaW1pbGFyIHRvIHRoZSBzdGVwcyB1c2VkIHRvIHNpZ24gUlBNIHBhY2thZ2VzLgogICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBkZWZpbmUgdGhlIGZvbGxvd2luZyBpbiB5b3VyCkBAIC05MDI2LDcgKzgxNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBhbmQgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RVhUUkFfSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0byB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwdGVzdCIKICAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCkBAIC05MjYyLDggKzgzOTYsOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiB3aGVuCi0gICAgICAgICAgICBidWlsZGluZyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgc291cmNlIGNvZGUuCiAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKICAgICAgICAgICAgIHRoZW0sIGFuZCB0aGVuIHBhdGNoaW5nIHRoZW0gaWYgbmVjZXNzYXJ5IGJlZm9yZSB0aGUgYnVpbGQgdGFrZXMKICAgICAgICAgICAgIHBsYWNlLgpAQCAtOTYyNyw3ICs4NzYxLDcgQEAKICAgICAgICAgICAgICAgICBVc2luZyBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGluIHlvdXIKICAgICAgICAgICAgICAgICBpbWFnZSByZWNpcGUgb3IgZnJvbSB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICBjYXVzZXMgdGhlIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSByZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU1BR0VfRkVBVFVSRVMgPSAicmVhZC1vbmx5LXJvb3RmcyIKQEAgLTEwMjIxLDcgKzkzNTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRFU1RfSU1BR0UnPjxmaWxlbmFtZT5URVNUX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBURVNUX0lNQUdFID0gIjEiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMDI0OSw3ICs5MzgzLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEFsbCB0ZXN0IGZpbGVzIHJlc2lkZSBpbgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL3J1bnRpbWU8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgQSB0ZXN0IG5hbWUgbWFwcyBkaXJlY3RseSB0byBhIFB5dGhvbiBtb2R1bGUuCiAgICAgICAgICAgICAgICAgRWFjaCB0ZXN0IG1vZHVsZSBtYXkgY29udGFpbiBhIG51bWJlciBvZiBpbmRpdmlkdWFsIHRlc3RzLgogICAgICAgICAgICAgICAgIFRlc3RzIGFyZSB1c3VhbGx5IGdyb3VwZWQgdG9nZXRoZXIgYnkgdGhlIGFyZWEKQEAgLTEwMzUzLDcgKzk0ODcsOCBAQAogICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4gLWMgdGVzdGV4cG9ydAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBFeHBvcnRpbmcgdGhlIHRlc3RzIHBsYWNlcyB0aGVtIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiBpbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvdGVzdGV4cG9ydC88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LAogICAgICAgICAgICAgICAgIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfRVhQT1JUX0RJUjwvZmlsZW5hbWU+IHZhcmlhYmxlLgpAQCAtMTA4OTMsMTgyICsxMDAyOCw2IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLTwhLS0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnLXNldHVwJz4KLSAgICAgICAgICAgIDx0aXRsZT5TZXQgVXAgdGhlIENyb3NzLURldmVsb3BtZW50IERlYnVnZ2luZyBFbnZpcm9ubWVudDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIGluaXRpYXRlIGEgcmVtb3RlIGRlYnVnZ2luZyBzZXNzaW9uLCB5b3UgbmVlZAotICAgICAgICAgICAgICAgIHRvIGJlIHN1cmUgeW91IGhhdmUgc2V0IHVwIHRoZSBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudCwKLSAgICAgICAgICAgICAgICB0b29sY2hhaW4sIGFuZCBzeXNyb290LgotICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstaW50cm8nPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4KLSAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhpcyBwcm9jZXNzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnLWxhdW5jaC1nZGJzZXJ2ZXIiPgotICAgICAgICAgICAgPHRpdGxlPkxhdW5jaCBnZGJzZXJ2ZXIgb24gdGhlIFRhcmdldDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE1ha2Ugc3VyZSBnZGJzZXJ2ZXIgaXMgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAgSWYgaXQgaXMgbm90LCBpbnN0YWxsIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+LCB3aGljaCBuZWVkcyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlidGhyZWFkLWRiMTwvZmlsZW5hbWU+IHBhY2thZ2UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSwgdGhhdCB3aGVuIGVudGVyZWQgZnJvbSB0aGUgaG9zdCwKLSAgICAgICAgICAgICAgICBjb25uZWN0cyB0byB0aGUgdGFyZ2V0IGFuZCBsYXVuY2hlcyBnZGJzZXJ2ZXIgaW4gb3JkZXIgdG8KLSAgICAgICAgICAgICAgICAiZGVidWciIGEgYmluYXJ5IG5hbWVkIDxmaWxlbmFtZT5oZWxsb3dvcmxkPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdkYnNlcnZlciBsb2NhbGhvc3Q6MjM0NSAvdXNyL2Jpbi9oZWxsb3dvcmxkCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIGdkYnNlcnZlciBzaG91bGQgbm93IGJlIGxpc3RlbmluZyBvbiBwb3J0IDIzNDUgZm9yIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIGNvbW1hbmRzIGNvbWluZyBmcm9tIGEgcmVtb3RlIEdEQiBwcm9jZXNzIHRoYXQgaXMgcnVubmluZyBvbgotICAgICAgICAgICAgICAgIHRoZSBob3N0IGNvbXB1dGVyLgotICAgICAgICAgICAgICAgIENvbW11bmljYXRpb24gYmV0d2VlbiBnZGJzZXJ2ZXIgYW5kIHRoZSBob3N0IEdEQiBhcmUgZG9uZQotICAgICAgICAgICAgICAgIHVzaW5nIFRDUC4KLSAgICAgICAgICAgICAgICBUbyB1c2Ugb3RoZXIgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMsIHBsZWFzZSByZWZlciB0byB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiLyc+R2Ric2VydmVyIGRvY3VtZW50YXRpb248L3VsaW5rPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1sYXVuY2gtZ2RiIj4KLSAgICAgICAgICAgIDx0aXRsZT5MYXVuY2ggR0RCIG9uIHRoZSBIb3N0IENvbXB1dGVyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUnVubmluZyBHREIgb24gdGhlIGhvc3QgY29tcHV0ZXIgdGFrZXMgYSBudW1iZXIgb2Ygc3RhZ2VzLCB3aGljaAotICAgICAgICAgICAgICAgIHRoaXMgc2VjdGlvbiBkZXNjcmliZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1sYXVuY2gtZ2RiLWJ1aWxkY3Jvc3MiPgotICAgICAgICAgICAgICAgIDx0aXRsZT5CdWlsZCB0aGUgQ3Jvc3MtR0RCIFBhY2thZ2U8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBIHN1aXRhYmxlIEdEQiBjcm9zcy1iaW5hcnkgaXMgcmVxdWlyZWQgdGhhdCBydW5zIG9uIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgaG9zdCBjb21wdXRlciBidXQgYWxzbyBrbm93cyBhYm91dCB0aGUgdGhlIEFCSSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgcmVtb3RlIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgdGhpcyBiaW5hcnkgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L2xpbms+LgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUgdGhlIHRvb2xjaGFpbiBoYXMgYmVlbiBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGRlZmF1bHQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAvb3B0L3Bva3kvJkRJU1RSTzsvc3lzcm9vdHMvaTY4Ni1wb2t5c2RrLWxpbnV4L3Vzci9iaW4vYXJtdjdhLXZmcC1uZW9uLXBva3ktbGludXgtZ251ZWFiaS9hcm0tcG9reS1saW51eC1nbnVlYWJpLWdkYgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIHdoZXJlIDxmaWxlbmFtZT5hcm08L2ZpbGVuYW1lPiBpcyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxpbnV4LWdudWVhYmk8L2ZpbGVuYW1lPiBpcyB0aGUgdGFyZ2V0IEFCSS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgQml0QmFrZSB0byBidWlsZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdkYi1jcm9zczwvZmlsZW5hbWU+IGJpbmFyeS4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBnZGItY3Jvc3MKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBiaW5hcnkgaXMgYnVpbHQsIHlvdSBjYW4gZmluZCBpdCBoZXJlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHRtcC9zeXNyb290cy88cmVwbGFjZWFibGU+aG9zdC1hcmNoPC9yZXBsYWNlYWJsZT4vdXNyL2Jpbi88cmVwbGFjZWFibGU+dGFyZ2V0LXBsYXRmb3JtPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnRhcmdldC1hYmk8L3JlcGxhY2VhYmxlPi1nZGIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0ZS10aGUtZ2RiLWluaXRpYWxpemF0aW9uLWZpbGUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5DcmVhdGUgdGhlIEdEQiBJbml0aWFsaXphdGlvbiBGaWxlIGFuZCBQb2ludCB0byBZb3VyIFJvb3QgRmlsZXN5c3RlbTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgR0RCIGNyb3NzLWJpbmFyeSwgeW91IGFsc28gbmVlZCBhIEdEQgotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBmaWxlIGluIHRoZSBzYW1lIHRvcCBkaXJlY3RvcnkgaW4gd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgeW91ciBiaW5hcnkgcmVzaWRlcy4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc3RhcnQgR0RCIG9uIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0sIEdEQgotICAgICAgICAgICAgICAgICAgICBmaW5kcyB0aGlzIGluaXRpYWxpemF0aW9uIGZpbGUgYW5kIGV4ZWN1dGVzIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZHMgd2l0aGluLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT4uZ2RiaW5pdDwvZmlsZW5hbWU+LCBzZWUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvb25saW5lZG9jcy9nZGIvJz5EZWJ1Z2dpbmcgd2l0aCBHREI8L3VsaW5rPiIsCi0gICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIG1haW50YWluZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5zb3VyY2V3YXJlLm9yZyc+c291cmNld2FyZS5vcmc8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYWRkIGEgc3RhdGVtZW50IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8uZ2RiaW5pdDwvZmlsZW5hbWU+IGZpbGUgdGhhdCBwb2ludHMgdG8geW91cgotICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHBvaW50cyB0byB0aGUgcm9vdCBmaWxlc3lzdGVtIGZvcgotICAgICAgICAgICAgICAgICAgICBhbiBBUk0tYmFzZWQgdGFyZ2V0IGRldmljZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBzZXQgc3lzcm9vdCB+L3N5c3Jvb3RfYXJtCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1sYXVuY2gtZ2RiLWxhdW5jaGhvc3QiPgotICAgICAgICAgICAgICAgIDx0aXRsZT5MYXVuY2ggdGhlIEhvc3QgR0RCPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBCZWZvcmUgbGF1bmNoaW5nIHRoZSBob3N0IEdEQiwgeW91IG5lZWQgdG8gYmUgc3VyZQotICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBjcm9zcy1kZWJ1Z2dpbmcgZW52aXJvbm1lbnQgc2NyaXB0LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpZiB5b3UgaW5zdGFsbGVkIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gaXMgYXQgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCBiZWdpbnMgd2l0aCB0aGUgc3RyaW5nICJlbnZpcm9ubWVudC1zZXR1cCIuCi0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1tYW51YWwnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzCi0gICAgICAgICAgICAgICAgICAgIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHN3aXRjaCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBiaW5hcnkgcmVzaWRlcwotICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHRoZSA8ZmlsZW5hbWU+Y3Jvc3MtZ2RiPC9maWxlbmFtZT4gYmluYXJ5LgotICAgICAgICAgICAgICAgICAgICBQcm92aWRlIHRoZSBiaW5hcnkgZmlsZSB5b3UgYXJlIGdvaW5nIHRvIGRlYnVnLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNvbnRpbnVlcyB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICBleGFtcGxlIHVzZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gYnkgbG9hZGluZwotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmhlbGxvd29ybGQ8L2ZpbGVuYW1lPiBiaW5hcnkgYXMgd2VsbCBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIGluZm9ybWF0aW9uOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYXJtLXBva3ktbGludXgtZ251YWJpLWdkYiBoZWxsb3dvcmxkCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmRzIGluIHlvdXIgPGZpbGVuYW1lPi5nZGJpbml0PC9maWxlbmFtZT4gZXhlY3V0ZQotICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIEdEQiBwcm9tcHQgYXBwZWFycy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGxhdGRldi1nZGItY29ubmVjdC10by10aGUtcmVtb3RlLWdkYi1zZXJ2ZXInPgotICAgICAgICAgICAgPHRpdGxlPkNvbm5lY3QgdG8gdGhlIFJlbW90ZSBHREIgU2VydmVyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRnJvbSB0aGUgdGFyZ2V0LCB5b3UgbmVlZCB0byBjb25uZWN0IHRvIHRoZSByZW1vdGUgR0RCCi0gICAgICAgICAgICAgICAgc2VydmVyIHRoYXQgaXMgcnVubmluZyBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSByZW1vdGUgaG9zdCBhbmQgcG9ydC4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBjb21tYW5kIGNvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHRhcmdldCByZW1vdGUgMTkyLjE2OC43LjI6MjM0NQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1sYXVuY2gtZ2RiLXVzaW5nIj4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2UgdGhlIERlYnVnZ2VyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBub3cgcHJvY2VlZCB3aXRoIGRlYnVnZ2luZyBhcyBub3JtYWwgLSBhcyBpZiB5b3Ugd2VyZSBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBvbiB0aGUgbG9jYWwgbWFjaGluZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gaW5zdHJ1Y3QgR0RCIHRvIGJyZWFrIGluIHRoZSAibWFpbiIgZnVuY3Rpb24gYW5kIHRoZW4KLSAgICAgICAgICAgICAgICBjb250aW51ZSB3aXRoIGV4ZWN1dGlvbiBvZiB0aGUgaW5mZXJpb3IgYmluYXJ5IHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCi0gICAgICAgICAgICAgICAgZnJvbSB3aXRoaW4gR0RCOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgKGdkYikgYnJlYWsgbWFpbgotICAgICAoZ2RiKSBjb250aW51ZQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgR0RCLCBzZWUgdGhlIHByb2plY3QncyBvbmxpbmUgZG9jdW1lbnRhdGlvbiBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvZG93bmxvYWQvb25saW5lZG9jcy8iLz4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0tLT4KLQogICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctd2l0aC10aGUtZ251LXByb2plY3QtZGVidWdnZXItZ2RiLW9uLXRoZS10YXJnZXQnPgogICAgICAgICA8dGl0bGU+RGVidWdnaW5nIHdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIG9uIHRoZSBUYXJnZXQ8L3RpdGxlPgogCkBAIC0xMTM0Nyw3ICsxMDMwNiw3IEBACiAgICAgICAgICAgICAgICAgT25jZSB0aGUgcGF0Y2ggZmlsZSBleGlzdHMsIHlvdSBuZWVkIHRvIGFkZCBpdCBiYWNrIHRvIHRoZQogICAgICAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJlY2lwZSBmb2xkZXIuCiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGFzc3VtaW5nIGEgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBjcCBwYXRjaGVzL3BhcmFsbGVsbWFrZS5wYXRjaCBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQKQEAgLTExNDA3LDcgKzEwMzY2LDcgQEAKICAgICAgICAgICAgICAgICBuZWVkIHRvIHN1Ym1pdCB0aGUgZml4IGZvciB0aGUgcmVjaXBlIGluIE9FLUNvcmUgYW5kIHVwc3RyZWFtCiAgICAgICAgICAgICAgICAgc28gdGhhdCB0aGUgcHJvYmxlbSBpcyB0YWtlbiBjYXJlIG9mIGF0IGl0cyBzb3VyY2UuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgpAQCAtMTE1MTAsNyArMTA0NjksNyBAQAogICAgICAgICAgICAgICAgIHJlbGVhc2UganVzdCB0aGUgc291cmNlIGFzIGEgdGFyYmFsbC4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU5IRVJJVCArPSAiYXJjaGl2ZXIiCiAgICAgIEFSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCIKQEAgLTExNjc4LDggKzEwNjM3LDggQEAKICAgICAgICAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIENyZWF0aW5nIGFuZCBwcm92aWRpbmcgYW4gYXJjaGl2ZSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IGxheWVycwotICAgICAgICAgICAgICAgIChyZWNpcGVzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgc28gZm9ydGgpCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICBsYXllcnMgKHJlY2lwZXMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBzbyBmb3J0aCkKICAgICAgICAgICAgICAgICBlbmFibGVzIHlvdSB0byBtZWV0IHlvdXIKICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgdG8gaW5jbHVkZSB0aGUgc2NyaXB0cyB0byBjb250cm9sIGNvbXBpbGF0aW9uCiAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgb3JpZ2luYWwgc291cmNlLgpAQCAtMTE2OTcsNyArMTA2NTYsNyBAQAogICAgICAgICAgICAgYnJvd3NlIGVycm9ycywgdmlldyBzdGF0aXN0aWNzLCBhbmQgcXVlcnkgZm9yIGVycm9ycy4KICAgICAgICAgICAgIFRoZSB0b29sIHdvcmtzIHVzaW5nIGEgY2xpZW50LXNlcnZlciBzeXN0ZW0gd2hlcmUgdGhlIGNsaWVudAogICAgICAgICAgICAgcG9ydGlvbiBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIGluc3RhbGxlZCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgIFRoZSBzZXJ2ZXIgcmVjZWl2ZXMgdGhlIGluZm9ybWF0aW9uIGNvbGxlY3RlZCBhbmQgc2F2ZXMgaXQgaW4gYQogICAgICAgICAgICAgZGF0YWJhc2UuCkBAIC0xMTcyNSw3ICsxMDY4NCw3IEBACiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcmVwb3J0LWVycm9yJz48ZmlsZW5hbWU+cmVwb3J0LWVycm9yPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIGNsYXNzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCB0byB0aGUgZW5kIG9mCiAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4geW91cgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU5IRVJJVCArPSAicmVwb3J0LWVycm9yIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTExNzg0LDcgKzEwNzQzLDcgQEAKICAgICAgICAgICAgICAgICBUbyBkaXNhYmxlIHRoZSBlcnJvciByZXBvcnRpbmcgZmVhdHVyZSwgc2ltcGx5IHJlbW92ZSBvciBjb21tZW50CiAgICAgICAgICAgICAgICAgb3V0IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGZyb20gdGhlIGVuZCBvZiB5b3VyCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSEVSSVQgKz0gInJlcG9ydC1lcnJvciIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbAppbmRleCA0OTE0OGFiLi40N2M4MDA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwKQEAgLTQsMTAyICs0LDczIEBACiAKIDxjaGFwdGVyIGlkPSdkZXYtbWFudWFsLWludHJvJz4KIAotPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbDwvdGl0bGU+Ci0gICAgPHNlY3Rpb24gaWQ9J2Rldi1pbnRybyc+Ci0gICAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J2Rldi13ZWxjb21lJz4KKyAgICAgICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwhCi0gICAgICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvCi0gICAgICAgICAgICBkZXZlbG9wIGVtYmVkZGVkIExpbnV4IGltYWdlcyBhbmQgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdGhhdAotICAgICAgICAgICAgcnVuIG9uIHRhcmdldGVkIGRldmljZXMuCi0gICAgICAgICAgICBUaGUgbWFudWFsIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIGltYWdlLCBrZXJuZWwsIGFuZAotICAgICAgICAgICAgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgIEJlY2F1c2UgbXVjaCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhpcyBtYW51YWwgaXMgZ2VuZXJhbCwgaXQKLSAgICAgICAgICAgIGNvbnRhaW5zIG1hbnkgcmVmZXJlbmNlcyB0byBvdGhlciBzb3VyY2VzIHdoZXJlIHlvdSBjYW4gZmluZCBtb3JlCi0gICAgICAgICAgICBkZXRhaWwuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBmaW5kIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIEdpdCwgcmVwb3NpdG9yaWVzLAotICAgICAgICAgICAgYW5kIG9wZW4gc291cmNlIGluIGdlbmVyYWwgaW4gbWFueSBwbGFjZXMgb24gdGhlIEludGVybmV0LgotICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHNwZWNpZmljIHRvIHRoZSBZb2N0byBQcm9qZWN0IGlzIGhvdyB0byBxdWlja2x5Ci0gICAgICAgICAgICBzZXQgdXAgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBhbmQgYnVpbGQgYW4gaW1hZ2UsIHdoaWNoIHlvdQotICAgICAgICAgICAgZmluZCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPi4KKyAgICAgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIQorICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVsZXZhbnQgcHJvY2VkdXJlcyBuZWNlc3NhcnkgZm9yIGRldmVsb3BpbmcKKyAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50IChpLmUuIGRldmVsb3BpbmcgZW1iZWRkZWQgTGludXgKKyAgICAgICAgICAgIGltYWdlcyBhbmQgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gdGFyZ2V0ZWQgZGV2aWNlcykuCisgICAgICAgICAgICBUaGUgbWFudWFsIGdyb3VwcyByZWxhdGVkIHByb2NlZHVyZXMgaW50byBoaWdoZXItbGV2ZWwgc2VjdGlvbnMuCisgICAgICAgICAgICBQcm9jZWR1cmVzIGNhbiBjb25zaXN0IG9mIGhpZ2gtbGV2ZWwgc3RlcHMgb3IgbG93LWxldmVsIHN0ZXBzCisgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRvcGljLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBhIHByb2NlZHVyZSBieQorICAgICAgICAgICAgZm9sbG93aW5nIGFwcHJvcHJpYXRlIGxpbmtzIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZQorICAgICAgICAgICAgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZG9lcywgaG93ZXZlciwgcHJvdmlkZQotICAgICAgICAgICAgZ3VpZGFuY2UgYW5kIGV4YW1wbGVzIG9uIGhvdyB0byBjaGFuZ2UgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSwKLSAgICAgICAgICAgIHJlY29uZmlndXJlIHRoZSBrZXJuZWwsIGFuZCBkZXZlbG9wIGFuIGFwcGxpY2F0aW9uIHVzaW5nCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBCeSBkZWZhdWx0LCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBjcmVhdGVzIGEgUG9reSBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24gYnkgcHJvdmlkaW5nIGtleQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPi4KLSAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIGlzIEFuZ3N0cm9tLCB3aGljaCBoYXMgaGFkIGEgZGlzdHJpYnV0aW9uCi0gICAgICAgICAgICBiYXNlZCBvbiB0aGUgWW9jdG8gUHJvamVjdCBzaW5jZSBpdHMgaW5jZXB0aW9uLgotICAgICAgICAgICAgT3RoZXIgZXhhbXBsZXMgaW5jbHVkZSBjb21tZXJjaWFsIGRpc3RyaWJ1dGlvbnMgbGlrZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9vcmdhbml6YXRpb24vd2luZC1yaXZlci1zeXN0ZW1zJz5XaW5kIFJpdmVyIExpbnV4PC91bGluaz4sCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9tZW50b3ItZ3JhcGhpY3MnPk1lbnRvciBFbWJlZGRlZCBMaW51eDwvdWxpbms+LAotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9vcmdhbml6YXRpb24vZW5lYS1hYic+RU5FQSBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICBhbmQgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9lY29zeXN0ZW0vbWVtYmVyLW9yZ2FuaXphdGlvbnMnPm90aGVyczwvdWxpbms+LgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz5DcmVhdGluZyBZb3VyIE93biBEaXN0cmlidXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd3aGF0LXRoaXMtbWFudWFsLXByb3ZpZGVzJz4KLSAgICAgICAgPHRpdGxlPldoYXQgVGhpcyBNYW51YWwgUHJvdmlkZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB3aGF0IHlvdSBjYW4gZ2V0IGZyb20gdGhpcyBtYW51YWw6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbmZvcm1hdGlvbiB0aGF0IGxldHMgeW91IGdldCBzZXQKLSAgICAgICAgICAgICAgICAgICAgdXAgdG8gZGV2ZWxvcCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gdG8gaGVscCBkZXZlbG9wZXJzIHdobyBhcmUgbmV3IHRvCi0gICAgICAgICAgICAgICAgICAgIHRoZSBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCBhbmQgdG8gdGhlIGRpc3RyaWJ1dGVkIHJldmlzaW9uCi0gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgc3lzdGVtIEdpdCwgd2hpY2ggdGhlIFlvY3RvIFByb2plY3QgdXNlcy4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXR1cCBQcm9jZWR1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIHVwIGEgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgaG93CisgICAgICAgICAgICAgICAgICAgIHRvIGFjY29tcGxpc2ggdGhlIGNoYW5nZSB3b3JrZmxvdyB0aHJvdWdoIGxvZ2dpbmcKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0cyBhbmQgc3VibWl0dGluZyBjaGFuZ2VzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW4gdW5kZXJzdGFuZGluZyBvZiBjb21tb24gZW5kLXRvLWVuZAotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBtb2RlbHMgYW5kIHRhc2tzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbmZvcm1hdGlvbiBhYm91dCBjb21tb24gZGV2ZWxvcG1lbnQgdGFza3MKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGx5IHVzZWQgZHVyaW5nIGltYWdlIGRldmVsb3BtZW50IGZvcgotICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZCBkZXZpY2VzLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVtdWxhdGlvbiBQcm9jZWR1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGludGVncmF0ZWQgUXVpY2tFTVVsYXRvciAoUUVNVSksIHdoaWNoIGxldHMKKyAgICAgICAgICAgICAgICAgICAgeW91IHNpbXVsYXRlIHJ1bm5pbmcgb24gaGFyZHdhcmUgYW4gaW1hZ2UgeW91IGhhdmUgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICBpbnRlZ3JhdGlvbiBvZiB0aGUgUXVpY2tFTVVsYXRvciAoUUVNVSksIHdoaWNoIGxldHMgeW91Ci0gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlIHJ1bm5pbmcgb24gaGFyZHdhcmUgYW4gaW1hZ2UgeW91IGhhdmUgYnVpbHQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbW9uIFByb2NlZHVyZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyByZWxhdGVkIHRvICJldmVyeWRheSIgdGFza3MgeW91IHBlcmZvcm0gd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1hbnkgcmVmZXJlbmNlcyB0byBvdGhlciBzb3VyY2VzIG9mIHJlbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd3aGF0LXRoaXMtbWFudWFsLWRvZXMtbm90LXByb3ZpZGUnPgotICAgICAgICA8dGl0bGU+V2hhdCB0aGlzIE1hbnVhbCBEb2VzIE5vdCBQcm92aWRlPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoaXMgbWFudWFsIHdpbGwgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3RlcC1ieS1zdGVwIGluc3RydWN0aW9ucyB3aGVuIHRob3NlIGluc3RydWN0aW9ucyBleGlzdCBpbiBvdGhlciBZb2N0bwotICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWR1bmRhbnQgU3RlcC1ieS1zdGVwIEluc3RydWN0aW9uczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGNvbnRhaW5zIGRldGFpbGVkIGluc3RydWN0aW9ucyBvbiBob3cgdG8gaW5zdGFsbCBhbgogICAgICAgICAgICAgICAgICAgICBTREssIHdoaWNoIGlzIHVzZWQgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMgZm9yIHRhcmdldAogICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWZlcmVuY2UgbWF0ZXJpYWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2Ugb3IgQ29uY2VwdHVhbCBNYXRlcmlhbDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgbWF0ZXJpYWwgcmVzaWRlcyBpbiBhbiBhcHByb3ByaWF0ZSByZWZlcmVuY2UgbWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3lzdGVtIHZhcmlhYmxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRldGFpbGVkIHB1YmxpYyBpbmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBzcGVjaWZpYyB0byB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZXhoYXVzdGl2ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIEdpdCBpcyBjb3ZlcmVkIGJldHRlciB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldCB0aGFuIGluIHRoaXMgbWFudWFsLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGFpbGVkIFB1YmxpYyBJbmZvcm1hdGlvbiBOb3QgU3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGV4aGF1c3RpdmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgU291cmNlIENvbnRyb2wgTWFuYWdlciBHaXQgaXMgYmV0dGVyIGNvdmVyZWQgd2l0aCBJbnRlcm5ldAorICAgICAgICAgICAgICAgICAgICBzZWFyY2hlcyBhbmQgb2ZmaWNpYWwgR2l0IERvY3VtZW50YXRpb24gdGhhbiB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTEwOSwxNDQgKzgwLDIzIEBACiAgICAgICAgIDx0aXRsZT5PdGhlciBJbmZvcm1hdGlvbjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCZWNhdXNlIHRoaXMgbWFudWFsIHByZXNlbnRzIG92ZXJ2aWV3IGluZm9ybWF0aW9uIGZvciBtYW55IGRpZmZlcmVudAorICAgICAgICAgICAgQmVjYXVzZSB0aGlzIG1hbnVhbCBwcmVzZW50cyBpbmZvcm1hdGlvbiBmb3IgbWFueSBkaWZmZXJlbnQKICAgICAgICAgICAgIHRvcGljcywgc3VwcGxlbWVudGFsIGluZm9ybWF0aW9uIGlzIHJlY29tbWVuZGVkIGZvciBmdWxsCiAgICAgICAgICAgICBjb21wcmVoZW5zaW9uLgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByZXNlbnRzIG90aGVyIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24geW91IG1pZ2h0IGZpbmQgaGVscGZ1bDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4gVGhlIGhvbWUgcGFnZSBmb3IgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgbG90cyBvZiBpbmZvcm1hdGlvbiBvbiB0aGUgcHJvamVjdAotICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGxpbmtzIHRvIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzaG9ydCBkb2N1bWVudCBsZXRzIHlvdSBnZXQgc3RhcnRlZAotICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBxdWlja2x5IGJlZ2luIGJ1aWxkaW5nIGFuIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgZ3VpZGUgdG8gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIGlzIGJhc2VkIG9uIEJpdEJha2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICJQb2t5Ii4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBndWlkZSBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGxldHMgeW91IGdldCBnb2luZwotICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzdGFuZGFyZCBvciBleHRlbnNpYmxlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgQW4gU0RLLCB3aXRoIGl0cyBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBhbGxvd3MgeW91Ci0gICAgICAgICAgICAgICAgICAgIHRvIGRldmVsb3AgcHJvamVjdHMgaW5zaWRlIG9yIG91dHNpZGUgb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgZ3VpZGUgZGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBCU1AgY29tcG9uZW50cy4KLSAgICAgICAgICAgICAgICAgICAgSGF2aW5nIGEgY29tbW9ubHkgdW5kZXJzdG9vZCBzdHJ1Y3R1cmUgZW5jb3VyYWdlcyBzdGFuZGFyZGl6YXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byB3b3JrIHdpdGggTGludXggWW9jdG8ga2VybmVscyBhcyB3ZWxsIGFzIHByb3ZpZGVzIGEgYml0Ci0gICAgICAgICAgICAgICAgICAgIG9mIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gb24gdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGUgWW9jdG8gTGludXgga2VybmVsIHRyZWUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1BST0ZfVVJMOyc+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJlc2VudHMgYSBzZXQgb2YgY29tbW9uIGFuZCBnZW5lcmFsbHkgdXNlZnVsIHRyYWNpbmcgYW5kCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGluZyBzY2hlbWVzIGFsb25nIHdpdGggdGhlaXIgYXBwbGljYXRpb25zIChhcyBhcHByb3ByaWF0ZSkgdG8gZWFjaCB0b29sLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQotICAgICAgICAgICAgICAgICAgICBUb2FzdGVyLCB3aGljaCBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotPCEtLQotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0zWmxPdS1nTHNoMCc+Ci0gICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFIFlvY3RvIFBsdWctaW48L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBIHN0ZXAtYnktc3RlcCBpbnN0cnVjdGlvbmFsIHZpZGVvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGVtb25zdHJhdGVzIGhvdyBhbiBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgdXNlcyBZb2N0byBQbHVnLWluIGZlYXR1cmVzIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFwcGVuZGl4LWxhdGVzdC15cC1lY2xpcHNlLXBsdWctaW4nPkVjbGlwc2UgSURFIFlvY3RvIFBsdWctaW48L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgYW4gYXBwbGljYXRpb24gZGV2ZWxvcGVyCi0gICAgICAgICAgICAgICAgICAgIHVzZXMgdGhlIEVjbGlwc2UgWW9jdG8gUHJvamVjdCBQbHVnLWluIGZlYXR1cmUgd2l0aGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0ZBUSc+RkFRPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfTk9URVM7Jz5SZWxlYXNlIE5vdGVzPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMsIHVwZGF0ZXMgYW5kIGtub3duIGlzc3VlcyBmb3IgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy90b29scy1yZXNvdXJjZXMvcHJvamVjdHMvdG9hc3Rlcic+VG9hc3RlcjwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEFuIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZSAoQVBJKSBhbmQgd2ViLWJhc2VkCi0gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSB0byB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgd2hpY2ggdXNlcwotICAgICAgICAgICAgICAgICAgICBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvdG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL2J1aWxkLWFwcGxpYW5jZSc+QnVpbGQgQXBwbGlhbmNlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQSB2aXJ0dWFsIG1hY2hpbmUgdGhhdAotICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHlvdSB0byBidWlsZCBhbmQgYm9vdCBhIGN1c3RvbSBlbWJlZGRlZCBMaW51eCBpbWFnZQotICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGEgbm9uLUxpbnV4IGRldmVsb3BtZW50IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGJ1ZyB0cmFja2luZyBhcHBsaWNhdGlvbiB0aGUgWW9jdG8gUHJvamVjdCB1c2VzLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZmluZCBwcm9ibGVtcyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCB5b3Ugc2hvdWxkIHJlcG9ydCB0aGVtIHVzaW5nIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBNYWlsaW5nIExpc3RzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRvIHN1YnNjcmliZSB0byB0aGUgWW9jdG8gUHJvamVjdCBtYWlsaW5nCi0gICAgICAgICAgICAgICAgICAgIGxpc3RzLCBjbGljayBvbiB0aGUgZm9sbG93aW5nIFVSTHMgYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3lvY3RvJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIFlvY3RvIFByb2plY3QgRGlzY3Vzc2lvbnMgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3Bva3knPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgWW9jdG8gUHJvamVjdCBEaXNjdXNzaW9ucyBtYWlsaW5nIGxpc3QgYWJvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoUG9reSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0xJU1RTX1VSTDsvbGlzdGluZm8veW9jdG8tYW5ub3VuY2UnPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbWFpbGluZyBsaXN0IHRvIHJlY2VpdmUgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCBhbm5vdW5jZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBZb2N0byBQcm9qZWN0IG1pbGVzdG9uZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0xJU1RTX1VSTDsvbGlzdGluZm8nPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGlzdGluZyBvZiBhbGwgcHVibGljIG1haWxpbmcgbGlzdHMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkludGVybmV0IFJlbGF5IENoYXQgKElSQyk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVHdvIElSQyBjaGFubmVscyBvbiBmcmVlbm9kZSBhcmUgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgIGZvciBZb2N0byBQcm9qZWN0IGFuZCBQb2t5IGRpc2N1c3Npb25zOiA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4jcG9reTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZPRV9IT01FX1VSTDsnPk9wZW5FbWJlZGRlZDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdXNlZCBieSB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBwcm9qZWN0IGlzIHRoZSB1cHN0cmVhbSwgZ2VuZXJpYywgZW1iZWRkZWQgZGlzdHJpYnV0aW9uCi0gICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggdGhlIFlvY3RvIFByb2plY3QgZGVyaXZlcyBpdHMgYnVpbGQgc3lzdGVtIChQb2t5KQotICAgICAgICAgICAgICAgICAgICBhbmQgdG8gd2hpY2ggaXQgY29udHJpYnV0ZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy93aWtpL0JpdEJha2UnPkJpdEJha2U8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIHRvIHByb2Nlc3MgcHJvamVjdCBtZXRhZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDo8L3VsaW5rPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEEgY29tcHJlaGVuc2l2ZSBndWlkZSB0byB0aGUgQml0QmFrZSB0b29sLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhpcyBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL0luZGV4Lmh0bWwnPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEFuIG9wZW4tc291cmNlIG1hY2hpbmUgZW11bGF0b3IgYW5kIHZpcnR1YWxpemVyLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgRm9yIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4uCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYW4gaW50cm9kdWN0b3J5IHRvIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGJ5IHdvcmtpbmcKKyAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiBsaW5rcyBhbmQgb3RoZXIgZG9jdW1lbnRhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1tb2RlbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbW9kZWwueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA4ZTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1tb2RlbC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjU0ICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSdkZXYtbWFudWFsLW1vZGVsJz4KLQotPHRpdGxlPkNvbW1vbiBEZXZlbG9wbWVudCBNb2RlbHM8L3RpdGxlPgotCi08cGFyYT4KLSAgICBNYW55IGRldmVsb3BtZW50IG1vZGVscyBleGlzdCBmb3Igd2hpY2ggeW91IGNhbiB1c2UgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgVGhpcyBjaGFwdGVyIG92ZXJ2aWV3cyBzaW1wbGUgbWV0aG9kcyB0aGF0IHVzZSB0b29scyBwcm92aWRlZCBieSB0aGUKLSAgICBZb2N0byBQcm9qZWN0OgotICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3lzdGVtIERldmVsb3BtZW50OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgU3lzdGVtIERldmVsb3BtZW50IGNvdmVycyBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICBhbmQga2VybmVsIG1vZGlmaWNhdGlvbiBvciBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9uIGhvdyB0byBjcmVhdGUgYSBCU1AsIHNlZSB0aGUKLSAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgotICAgICAgICAgICAgIEZvciBtb3JlIGNvbXBsZXRlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB3b3JrIHdpdGggdGhlIGtlcm5lbCwKLSAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlciBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgIFVzZXIgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgY292ZXJzIGRldmVsb3BtZW50IG9mIGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgIHRoYXQgeW91IGludGVuZCB0byBydW4gb24gdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZm9yCi0gICAgICAgICAgICAgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCwgc2VlIHRoZQotICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgIEZvciBhIHNpbXBsZSBleGFtcGxlIG9mIHVzZXItc3BhY2UgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgdXNpbmcKLSAgICAgICAgICAgICB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFLCBzZWUgdGhlCi0gICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZlbG9waW5nLWFwcGxpY2F0aW9ucy11c2luZy1lY2xpcHNlJz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdWxpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UZW1wb3JhcnkgU291cmNlIENvZGUgTW9kaWZpY2F0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgRGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgaXMgYSBjb252ZW5pZW50Ci0gICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbW9kZWwgdG8gcXVpY2tseSBpdGVyYXRlIGFuZCBkZXZlbG9wIHRvd2FyZHMgYQotICAgICAgICAgICAgIHNvbHV0aW9uLgotICAgICAgICAgICAgIE9uY2UgeW91IGltcGxlbWVudCB0aGUgc29sdXRpb24sIHlvdSBzaG91bGQgb2YgY291cnNlIHRha2UKLSAgICAgICAgICAgICBzdGVwcyB0byBnZXQgdGhlIGNoYW5nZXMgdXBzdHJlYW0gYW5kIGFwcGxpZWQgaW4gdGhlIGFmZmVjdGVkCi0gICAgICAgICAgICAgcmVjaXBlcy4KLSAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2UgRGV2ZWxvcG1lbnQgdXNpbmcgVG9hc3Rlcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvVG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL3RvYXN0ZXInPlRvYXN0ZXI8L3VsaW5rPgotICAgICAgICAgICAgIHRvIGJ1aWxkIGN1c3RvbSBvcGVyYXRpbmcgc3lzdGVtIGltYWdlcyB3aXRoaW4gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgVG9hc3RlciBwcm92aWRlcyBhbiBlZmZpY2llbnQgaW50ZXJmYWNlIHRvIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gc3RhcnQgYnVpbGRzIGFuZCBleGFtaW5lIGJ1aWxkIHN0YXRpc3RpY3MuCi0gICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhCi0gICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPjxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgIHRvIGVmZmljaWVudGx5IGRlYnVnCi0gICAgICAgICAgICAgY29tbWFuZHMgb3Igc2ltcGx5IGVkaXQgcGFja2FnZXMuCi0gICAgICAgICAgICAgV29ya2luZyBpbnNpZGUgYSBkZXZlbG9wbWVudCBzaGVsbCBpcyBhIHF1aWNrIHdheSB0byBzZXQgdXAgdGhlCi0gICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50IHRvIHdvcmsgb24gcGFydHMgb2YgYSBwcm9qZWN0LgotICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICA8L2l0ZW1pemVkbGlzdD4KLTwvcGFyYT4KLQotPHNlY3Rpb24gaWQ9J3N5c3RlbS1kZXZlbG9wbWVudC1tb2RlbCc+Ci0gICAgPHRpdGxlPlN5c3RlbSBEZXZlbG9wbWVudCBXb3JrZmxvdzwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU3lzdGVtIGRldmVsb3BtZW50IGludm9sdmVzIG1vZGlmaWNhdGlvbiBvciBjcmVhdGlvbiBvZiBhbiBpbWFnZSB0aGF0IHlvdSB3YW50IHRvIHJ1biBvbgotICAgICAgICBhIHNwZWNpZmljIGhhcmR3YXJlIHRhcmdldC4KLSAgICAgICAgVXN1YWxseSwgd2hlbiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW1hZ2UgdGhhdCBydW5zIG9uIGVtYmVkZGVkIGhhcmR3YXJlLCB0aGUgaW1hZ2UgZG9lcwotICAgICAgICBub3QgcmVxdWlyZSB0aGUgc2FtZSBudW1iZXIgb2YgZmVhdHVyZXMgdGhhdCBhIGZ1bGwtZmxlZGdlZCBMaW51eCBkaXN0cmlidXRpb24gcHJvdmlkZXMuCi0gICAgICAgIFRodXMsIHlvdSBjYW4gY3JlYXRlIGEgbXVjaCBzbWFsbGVyIGltYWdlIHRoYXQgaXMgZGVzaWduZWQgdG8gdXNlIG9ubHkgdGhlCi0gICAgICAgIGZlYXR1cmVzIGZvciB5b3VyIHBhcnRpY3VsYXIgaGFyZHdhcmUuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHN5c3RlbSBkZXZlbG9wbWVudCB3b3JrcyBpbiB0aGUgWW9jdG8gUHJvamVjdCwgdGhpcyBzZWN0aW9uCi0gICAgICAgIGNvdmVycyB0d28gdHlwZXMgb2YgaW1hZ2UgZGV2ZWxvcG1lbnQ6ICBCU1AgY3JlYXRpb24gYW5kIGtlcm5lbCBtb2RpZmljYXRpb24gb3IKLSAgICAgICAgY29uZmlndXJhdGlvbi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0nZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPgotICAgICAgICA8dGl0bGU+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIEJTUCBpcyBhIGNvbGxlY3Rpb24gb2YgcmVjaXBlcyB0aGF0LCB3aGVuIGFwcGxpZWQgZHVyaW5nIGEgYnVpbGQsIHJlc3VsdHMgaW4KLSAgICAgICAgICAgIGFuIGltYWdlIHRoYXQgeW91IGNhbiBydW4gb24gYSBwYXJ0aWN1bGFyIGJvYXJkLgotICAgICAgICAgICAgVGh1cywgdGhlIHBhY2thZ2Ugd2hlbiBjb21waWxlZCBpbnRvIHRoZSBuZXcgaW1hZ2UsIHN1cHBvcnRzIHRoZSBvcGVyYXRpb24gb2YgdGhlIGJvYXJkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBGb3IgYSBicmllZiBsaXN0IG9mIHRlcm1zIHVzZWQgd2hlbiBkZXNjcmliaW5nIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGluIHRoZSBZb2N0byBQcm9qZWN0LAotICAgICAgICAgICAgc2VlIHRoZSAiPGxpbmsgbGlua2VuZD0neW9jdG8tcHJvamVjdC10ZXJtcyc+WW9jdG8gUHJvamVjdCBUZXJtczwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByZXNlbnRzIHRoZSBiYXNpYwotICAgICAgICAgICAgc3RlcHMgdXNlZCB0byBjcmVhdGUgYSBCU1AgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjdXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC91bGluaz4uCi0gICAgICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoIGNvbnRhaW5zCi0gICAgICAgICAgICBtYW55IEJTUHMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBpcyBwYXJ0IG9mIHRoZSBleGFtcGxlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBjcmVhdGUgYSBuZXcgbGF5ZXIgdXNpbmcgdGhlIHRvb2xzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpbGx1c3RyYXRpb24gYW5kIGxpc3Qgc3VtbWFyaXplIHRoZSBCU1AgY3JlYXRpb24gZ2VuZXJhbCB3b3JrZmxvdy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZXQgdXAgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSB0byBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46ICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3RoZS1saW51eC1kaXN0cm8nPlRoZSBMaW51eCBEaXN0cmlidXRpb248L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNwYWNrYWdlcyc+VGhlIEJ1aWxkIEhvc3QgUGFja2FnZXM8L3VsaW5rPiIgc2VjdGlvbnMgYm90aAotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3IgcmVxdWlyZW1lbnRzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXN0YWJsaXNoIGEgbG9jYWwgY29weSBvZiB0aGUgcHJvamVjdCBmaWxlcyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbTwvZW1waGFzaXM+OiAgWW91IG5lZWQgdGhpcyA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5PC9saW5rPiBhdmFpbGFibGUgb24geW91ciBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgSGF2aW5nIHRoZXNlIGZpbGVzIG9uIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgYW5kIHRvIHRoZSB0b29scyB5b3UgbmVlZC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctc2V0dXAnPkdldHRpbmcgU2V0IFVwPC9saW5rPiIgc2VjdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzdGFibGlzaCB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IG9uIHlvdXIgc3lzdGVtPC9lbXBoYXNpcz46ICBIYXZpbmcgbG9jYWwgY29waWVzCi0gICAgICAgICAgICAgICAgICAgIG9mIHRoZXNlIHN1cHBvcnRlZCBCU1AgbGF5ZXJzIG9uIHlvdXIgc3lzdGVtIGdpdmVzIHlvdQotICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gbGF5ZXJzIHlvdSBtaWdodCBiZSBhYmxlIHRvIGJ1aWxkIG9uIG9yIG1vZGlmeQotICAgICAgICAgICAgICAgICAgICB0byBjcmVhdGUgeW91ciBCU1AuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IHRoZXNlIGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXNldHVwJz5HZXR0aW5nIFNldCBVcDwvbGluaz4iIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgeW91ciBvd24gQlNQIGxheWVyIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPjxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+IHNjcmlwdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGlkZWFsIGZvcgotICAgICAgICAgICAgICAgICAgICBpc29sYXRpbmcgYW5kIHN0b3Jpbmcgd29yayBmb3IgYSBnaXZlbiBwaWVjZSBvZiBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgQSBsYXllciBpcyByZWFsbHkganVzdCBhIGxvY2F0aW9uIG9yIGFyZWEgaW4gd2hpY2ggeW91IHBsYWNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgeW91ciBCU1AuCi0gICAgICAgICAgICAgICAgICAgIEluIGZhY3QsIGEgQlNQIGlzLCBpbiBpdHNlbGYsIGEgc3BlY2lhbCB0eXBlIG9mIGxheWVyLgotICAgICAgICAgICAgICAgICAgICBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhIG5ldyBCU1AgbGF5ZXIgdGhhdCBpcyBjb21wbGlhbnQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBpcyB0byB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNjcmlwdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IChCU1ApIERldmVsb3BlcidzIEd1aWRlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIGFuZCBydW4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXIsIGluIHRoaXMgY2FzZSwgd291bGQgYmUgd2hlcmUgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5IHBvaW50IGZvciBhIGxheWVyIGlzIHRoYXQgaXQgaXMgYW4gaXNvbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgdGhhdCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2plY3QgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBrbm93cwotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQIGxheWVycywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXZlIEJTUHMgZXhpc3QgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhZ2xlYm9uZTwvZmlsZW5hbWU+IChBUk0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXBjODMxNWU8L2ZpbGVuYW1lPiAoUG93ZXJQQyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+ZWRnZXJvdXRlcjwvZmlsZW5hbWU+IChNSVBTKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGVzZSBmaXZlIEJTUHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgYW5kIGRpc3BlcnNlZCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlZSBjb3JlIEludGVsIEJTUHMgZXhpc3QgYXMgcGFydCBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCByZWxlYXNlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnRlbC1jb3JlMi0zMjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIENvcmUyIGZhbWlseSBvZiBDUFVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhbGwgQ1BVcyBwcmlvciB0byB0aGUgU2lsdmVybW9udCBjb3JlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnRlbC1jb3JlaTctNjQ8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIE5laGFsZW0gYW5kIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZSBhbmQgWGVvbiBDUFVzIGFzIHdlbGwgYXMgU2lsdmVybW9udCBhbmQgbGF0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9tIENQVXMsIHN1Y2ggYXMgdGhlIEJheXRyYWlsIFNvQ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmludGVsLXF1YXJrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciB0aGUgSW50ZWwgR2FsaWxlbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbjEgJmFtcDsgZ2VuMiBkZXZlbG9wbWVudCBib2FyZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IHNldCB1cCBhIGxheWVyIGZvciBhIG5ldyBCU1AsIHlvdSBzaG91bGQgZm9sbG93IGEgc3RhbmRhcmQgbGF5b3V0LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGxheW91dCBpcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcG1lbnQgR3VpZGUuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBzdGFuZGFyZCBsYXlvdXQsIHlvdSB3aWxsIG5vdGljZSBhIHN1Z2dlc3RlZCBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBzdGFuZGFyZCBsYXlvdXQgZm9yIGEgQlNQIGJ5IGV4YW1pbmluZwotICAgICAgICAgICAgICAgICAgICBhbnkgc3VwcG9ydGVkIEJTUCBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUKLSAgICAgICAgICAgICAgICAgICAgdGhlIFNvdXJjZSBEaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byB5b3VyIG5ldyBCU1AKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXI8L2VtcGhhc2lzPjogIFRoZSBzdGFuZGFyZCBCU1AgbGF5ZXIgc3RydWN0dXJlIG9yZ2FuaXplcyB0aGUgZmlsZXMgeW91IG5lZWQKLSAgICAgICAgICAgICAgICAgICAgdG8gZWRpdCBpbiA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGFuZCBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoaW4gdGhlIEJTUCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGlkZW50aWZ5IHdoZXJlIHlvdXIgbmV3IGxheWVyIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgYW5kIGlkZW50aWZ5IHdoaWNoIGtlcm5lbCB5b3UgYXJlIGdvaW5nIHRvIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4gc2NyaXB0LCB5b3UgYXJlIGFibGUgdG8gaW50ZXJhY3RpdmVseQotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgbWFueSB0aGluZ3MgZm9yIHRoZSBCU1AgKGUuZy4ga2V5Ym9hcmQsIHRvdWNoc2NyZWVuLCBhbmQgc28gZm9ydGgpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ha2UgcmVjaXBlIGNoYW5nZXMgdG8geW91ciBuZXcgQlNQIGxheWVyPC9lbXBoYXNpcz46ICBSZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcyksIHJlbW92aW5nCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgeW91IGRvIG5vdCB1c2UsIGFuZCBhZGRpbmcgbmV3IHJlY2lwZXMgb3IgYXBwZW5kIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRoYXQgeW91IG5lZWQgdG8gc3VwcG9ydCB5b3VyIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlByZXBhcmUgZm9yIHRoZSBidWlsZDwvZW1waGFzaXM+OiAgT25jZSB5b3UgaGF2ZSBtYWRlIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyB0byB5b3VyIEJTUCBsYXllciwgdGhlcmUgcmVtYWlucyBhIGZldyB0aGluZ3MKLSAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gZG8gZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyIGZvciBpdCB0byBjcmVhdGUgeW91ciBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZ2V0IHRoZSBidWlsZCBlbnZpcm9ubWVudCByZWFkeSBieSBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKLSAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICBhbmQgeW91IG5lZWQgdG8gYmUgc3VyZSB0d28ga2V5IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseToKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBtYWtlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF3YXJlIG9mIHlvdXIgbmV3IGxheWVyLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdlbmFibGluZy15b3VyLWxheWVyJz5FbmFibGluZyBZb3VyIExheWVyPC9saW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGxldCB0aGUgYnVpbGQgc3lzdGVtIGtub3cgYWJvdXQgeW91ciBuZXcgbGF5ZXIuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZW50aXJlIHByb2Nlc3MgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIGlzIG92ZXJ2aWV3ZWQgaW4gdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KLSAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gcmVmZXJlbmNlIHRoaXMgaW5mb3JtYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgaW1hZ2U8L2VtcGhhc2lzPjogIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIHVzZXMgdGhlIEJpdEJha2UgdG9vbCB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8gY3JlYXRlLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBCaXRCYWtlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGJ1aWxkIHByb2Nlc3Mgc3VwcG9ydHMgc2V2ZXJhbCB0eXBlcyBvZiBpbWFnZXMgdG8gc2F0aXNmeSBkaWZmZXJlbnQgbmVlZHMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IiBjaGFwdGVyCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uIG9uCi0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBpbWFnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIHZpZXcgYSB2aWRlbyBwcmVzZW50YXRpb24gb24gIkJ1aWxkaW5nIEN1c3RvbSBFbWJlZGRlZCBJbWFnZXMgd2l0aCBZb2N0byIKLSAgICAgICAgICAgIGF0IDx1bGluayB1cmw9J2h0dHA6Ly9mcmVlLWVsZWN0cm9ucy5jb20vYmxvZy9lbGMtMjAxMS12aWRlb3MnPkZyZWUgRWxlY3Ryb25zPC91bGluaz4uCi0gICAgICAgICAgICBBZnRlciBnb2luZyB0byB0aGUgcGFnZSwganVzdCBzZWFyY2ggZm9yICJFbWJlZGRlZCIuCi0gICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBzdXBwbGVtZW50YWwgaW5mb3JtYXRpb24gaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+Ci0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgRmluYWxseSwgdGhlcmUgaXMgaGVscGZ1bCBtYXRlcmlhbCBhbmQgbGlua3Mgb24gdGhpcwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1RyYW5zY3JpcHQ6X2NyZWF0aW5nX29uZV9nZW5lcmljX0F0b21fQlNQX2Zyb21fYW5vdGhlcic+d2lraSBwYWdlPC91bGluaz4uCi0gICAgICAgICAgICBBbHRob3VnaCBhIGJpdCBkYXRlZCwgeW91IG1pZ2h0IGZpbmQgdGhlIGluZm9ybWF0aW9uIG9uIHRoZSB3aWtpCi0gICAgICAgICAgICBoZWxwZnVsLgotICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nbW9kaWZ5aW5nLXRoZS1rZXJuZWwnPgotICAgICAgICA8dGl0bGU+PGFuY2hvciBpZD0na2VybmVsLXNwb3QnIC8+TW9kaWZ5aW5nIHRoZSBLZXJuZWw8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgS2VybmVsIG1vZGlmaWNhdGlvbiBpbnZvbHZlcyBjaGFuZ2luZyB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwsIHdoaWNoIGNvdWxkIGludm9sdmUgY2hhbmdpbmcKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcyB3ZWxsIGFzIGFkZGluZyBuZXcga2VybmVsIHJlY2lwZXMuCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uIGNoYW5nZXMgY2FuIGJlIGFkZGVkIGluIHRoZSBmb3JtIG9mIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCB3aGlsZSByZWNpcGUKLSAgICAgICAgICAgIG1vZGlmaWNhdGlvbiBjb21lcyB0aHJvdWdoIHRoZSBrZXJuZWwncyA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWw8L2ZpbGVuYW1lPiBhcmVhCi0gICAgICAgICAgICBpbiBhIGtlcm5lbCBsYXllciB5b3UgY3JlYXRlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIGtlcm5lbCBhcmNoaXRlY3R1cmUgYW5kIHRoZSBzdGVwcyB0byBtb2RpZnkgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhdGNoaW5nLXRoZS1rZXJuZWwnPlBhdGNoaW5nIHRoZSBLZXJuZWw8L2xpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICBmb3IgYW4gZXhhbXBsZSB0aGF0IGNoYW5nZXMgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUga2VybmVsLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Q29uZmlndXJpbmcgdGhlIEtlcm5lbDwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUga2VybmVsIGFuZCBvbiBtb2RpZnlpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtb3ZlcnZpZXcnPgotICAgICAgICAgICAgPHRpdGxlPktlcm5lbCBPdmVydmlldzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRyYWRpdGlvbmFsbHksIHdoZW4gb25lIHRoaW5rcyBvZiBhIHBhdGNoZWQga2VybmVsLCB0aGV5IHRoaW5rIG9mIGEgYmFzZSBrZXJuZWwKLSAgICAgICAgICAgICAgICBzb3VyY2UgdHJlZSBhbmQgYSBmaXhlZCBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBrZXJuZWwgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCwgaG93ZXZlciwgZW1wbG95cyBtZWNoYW5pc21zIHRoYXQsIGluIGEgc2Vuc2UsIHJlc3VsdCBpbiBhIGtlcm5lbCBzb3VyY2UKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuCi0gICAgICAgICAgICAgICAgQnkgdGhlIGVuZCBvZiB0aGlzIHNlY3Rpb24sIHRoaXMgYW5hbG9neSB3aWxsIGJlY29tZSBjbGVhcmVyLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGUgaW50ZXJmYWNlLCB5b3Ugd2lsbCBzZWUgdG8gdGhlIGxlZnQgYSBncm91cGluZyBvZgotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdGl0bGVkICJZb2N0byBMaW51eCBLZXJuZWwuIgotICAgICAgICAgICAgICAgIFdpdGhpbiB0aGlzIGdyb3VwLCB5b3Ugd2lsbCBmaW5kIHNldmVyYWwga2VybmVscyBzdXBwb3J0ZWQgYnkKLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdDoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0gVGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2VzIDEuNiBhbmQgMS43LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDMuMTQgcmVsZWFzZWQga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNzwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLSBBbgotICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCwgdW5zdXBwb3J0ZWQgWW9jdG8gUHJvamVjdCBrZXJuZWwgdXNlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBSZWxlYXNlIDEuNy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCAzLjE3IHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTk8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0gVGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UgMS44LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDMuMTkgcmVsZWFzZWQga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjEgcmVsZWFzZWQga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjQgcmVsZWFzZWQga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtIEEKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGtlcm5lbCBiYXNlZCBvbiB0aGUgbGF0ZXN0IHVwc3RyZWFtIHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgTG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZSAoTFRTSSkgZm9yIFlvY3RvIFByb2plY3Qga2VybmVscwotICAgICAgICAgICAgICAgICAgICBpcyBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIDEuNywgMS44LCBhbmQgMi4wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBMVFNJIGtlcm5lbCBpcyA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2UgMi4xLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVFNJIGtlcm5lbCBpcyA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGtlcm5lbHMgYXJlIG1haW50YWluZWQgdXNpbmcgdGhlIEdpdCByZXZpc2lvbiBjb250cm9sIHN5c3RlbQotICAgICAgICAgICAgICAgIHRoYXQgc3RydWN0dXJlcyB0aGVtIHVzaW5nIHRoZSBmYW1pbGlhciAidHJlZSIsICJicmFuY2giLCBhbmQgImxlYWYiIHNjaGVtZS4KLSAgICAgICAgICAgICAgICBCcmFuY2hlcyByZXByZXNlbnQgZGl2ZXJzaW9ucyBmcm9tIGdlbmVyYWwgY29kZSB0byBtb3JlIHNwZWNpZmljIGNvZGUsIHdoaWxlIGxlYXZlcwotICAgICAgICAgICAgICAgIHJlcHJlc2VudCB0aGUgZW5kLXBvaW50cyBmb3IgYSBjb21wbGV0ZSBhbmQgdW5pcXVlIGtlcm5lbCB3aG9zZSBzb3VyY2UgZmlsZXMsCi0gICAgICAgICAgICAgICAgd2hlbiBnYXRoZXJlZCBmcm9tIHRoZSByb290IG9mIHRoZSB0cmVlIHRvIHRoZSBsZWFmLCBhY2N1bXVsYXRlIHRvIGNyZWF0ZSB0aGUgZmlsZXMKLSAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIGEgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUgYW5kIGl0cyBmZWF0dXJlcy4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBkaXNwbGF5cyB0aGlzIGNvbmNlcHQ6Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nIgotICAgICAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGZpZ3VyZSwgdGhlICJLZXJuZWwub3JnIEJyYW5jaCBQb2ludCIgcmVwcmVzZW50cyB0aGUgcG9pbnQgaW4gdGhlIHRyZWUKLSAgICAgICAgICAgICAgICB3aGVyZSBhIHN1cHBvcnRlZCBiYXNlIGtlcm5lbCBpcyBtb2RpZmllZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgY291bGQgYmUgdGhlIGJyYW5jaCBwb2ludCBmb3IgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBrZXJuZWwuCi0gICAgICAgICAgICAgICAgVGh1cywgZXZlcnl0aGluZyBmdXJ0aGVyIHRvIHRoZSByaWdodCBpbiB0aGUgc3RydWN0dXJlIGlzIGJhc2VkIG9uIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4ga2VybmVsLgotICAgICAgICAgICAgICAgIEJyYW5jaCBwb2ludHMgdG8gdGhlIHJpZ2h0IGluIHRoZSBmaWd1cmUgcmVwcmVzZW50IHdoZXJlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4ga2VybmVsIGlzIG1vZGlmaWVkIGZvciBzcGVjaWZpYyBoYXJkd2FyZQotICAgICAgICAgICAgICAgIG9yIHR5cGVzIG9mIGtlcm5lbHMsIHN1Y2ggYXMgcmVhbC10aW1lIGtlcm5lbHMuCi0gICAgICAgICAgICAgICAgRWFjaCBsZWFmIHRodXMgcmVwcmVzZW50cyB0aGUgZW5kLXBvaW50IGZvciBhIGtlcm5lbCBkZXNpZ25lZCB0byBydW4gb24gYSBzcGVjaWZpYwotICAgICAgICAgICAgICAgIHRhcmdldGVkIGRldmljZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIG92ZXJhbGwgcmVzdWx0IGlzIGEgR2l0LW1haW50YWluZWQgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIGFsbCB0aGUgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAga2VybmVsIHR5cGVzIGNhbiBiZSBkZXJpdmVkIGZvciBhbGwgdGhlIHN1cHBvcnRlZCBkZXZpY2VzLgotICAgICAgICAgICAgICAgIEEgYmlnIGFkdmFudGFnZSB0byB0aGlzIHNjaGVtZSBpcyB0aGUgc2hhcmluZyBvZiBjb21tb24gZmVhdHVyZXMgYnkga2VlcGluZyB0aGVtIGluCi0gICAgICAgICAgICAgICAgImxhcmdlciIgYnJhbmNoZXMgd2l0aGluIHRoZSB0cmVlLgotICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2UgZWxpbWluYXRlcyByZWR1bmRhbnQgc3RvcmFnZSBvZiBzaW1pbGFyIGZlYXR1cmVzIHNoYXJlZCBhbW9uZyBrZXJuZWxzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBLZWVwIGluIG1pbmQgdGhlIGZpZ3VyZSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBhbGwgdGhlIHN1cHBvcnRlZCBZb2N0bwotICAgICAgICAgICAgICAgIFByb2plY3Qga2VybmVsIHR5cGVzLCBidXQgcmF0aGVyIHNob3dzIGEgc2luZ2xlIGdlbmVyaWMga2VybmVsIGp1c3QgZm9yIGNvbmNlcHR1YWwgcHVycG9zZXMuCi0gICAgICAgICAgICAgICAgQWxzbyBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICB0aGF0IGFyZSBlaXRoZXIgcHVsbGVkIGZyb20gZHVyaW5nIHRoZSBidWlsZCBvciBlc3RhYmxpc2hlZCBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBwcmlvciB0byB0aGUgYnVpbGQgYnkgZWl0aGVyIGNsb25pbmcgYSBwYXJ0aWN1bGFyIGtlcm5lbCdzIEdpdCByZXBvc2l0b3J5IG9yIGJ5Ci0gICAgICAgICAgICAgICAgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZyBhIHRhcmJhbGwuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVwc3RyZWFtIHN0b3JhZ2Ugb2YgYWxsIHRoZSBhdmFpbGFibGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIG9uZSB0aGluZywgd2hpbGUKLSAgICAgICAgICAgICAgICByZXByZXNlbnRpbmcgYW5kIHVzaW5nIHRoZSBjb2RlIG9uIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYW5vdGhlci4KLSAgICAgICAgICAgICAgICBDb25jZXB0dWFsbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yaWVzIGFzIGFsbCB0aGUKLSAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMgbmVjZXNzYXJ5IGZvciBhbGwgdGhlIHN1cHBvcnRlZCBrZXJuZWxzLgotICAgICAgICAgICAgICAgIEFzIGEgZGV2ZWxvcGVyLCB5b3UgYXJlIGp1c3QgaW50ZXJlc3RlZCBpbiB0aGUgc291cmNlIGZpbGVzIGZvciB0aGUga2VybmVsIG9uCi0gICAgICAgICAgICAgICAgd2hpY2ggeW91IGFyZSB3b3JraW5nLgotICAgICAgICAgICAgICAgIEFuZCwgZnVydGhlcm1vcmUsIHlvdSBuZWVkIHRoZW0gYXZhaWxhYmxlIG9uIHlvdXIgaG9zdCBzeXN0ZW0uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEtlcm5lbCBzb3VyY2UgY29kZSBpcyBhdmFpbGFibGUgb24geW91ciBob3N0IHN5c3RlbSBhIGNvdXBsZSBvZiBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICB3YXlzLgotICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBpbiB0aGUga2VybmVsIGFsbCB0aGUgdGltZSwgeW91IHByb2JhYmx5IHdvdWxkIHdhbnQKLSAgICAgICAgICAgICAgICB0byBzZXQgdXAgeW91ciBvd24gbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlIGtlcm5lbCB0cmVlLgotICAgICAgICAgICAgICAgIElmIHlvdSBqdXN0IG5lZWQgdG8gbWFrZSBzb21lIHBhdGNoZXMgdG8gdGhlIGtlcm5lbCwgeW91IGNhbiBhY2Nlc3MKLSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkga2VybmVsIHNvdXJjZSBmaWxlcyB0aGF0IHdlcmUgZXh0cmFjdGVkIGFuZCB1c2VkCi0gICAgICAgICAgICAgICAgZHVyaW5nIGEgYnVpbGQuCi0gICAgICAgICAgICAgICAgV2Ugd2lsbCBqdXN0IHRhbGsgYWJvdXQgd29ya2luZyB3aXRoIHRoZSB0ZW1wb3Jhcnkgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBrZXJuZWwgc291cmNlIGNvZGUgb250byB5b3VyCi0gICAgICAgICAgICAgICAgaG9zdCBzeXN0ZW0sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbG9jYWwta2VybmVsLWZpbGVzJz5Zb2N0byBQcm9qZWN0IEtlcm5lbDwvbGluaz4iCi0gICAgICAgICAgICAgICAgYnVsbGV0ZWQgaXRlbSBlYXJsaWVyIGluIHRoZSBtYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoYXQgaGFwcGVucyBkdXJpbmcgdGhlIGJ1aWxkPwotICAgICAgICAgICAgICAgIFdoZW4geW91IGJ1aWxkIHRoZSBrZXJuZWwgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0sIGFsbCBmaWxlcyBuZWVkZWQgZm9yIHRoZSBidWlsZAotICAgICAgICAgICAgICAgIGFyZSB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgcmVwb3NpdG9yaWVzIHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZQotICAgICAgICAgICAgICAgIGFuZCBnYXRoZXJlZCBpbiBhIHRlbXBvcmFyeSB3b3JrIGFyZWEKLSAgICAgICAgICAgICAgICB3aGVyZSB0aGV5IGFyZSBzdWJzZXF1ZW50bHkgdXNlZCB0byBjcmVhdGUgdGhlIHVuaXF1ZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgVGh1cywgaW4gYSBzZW5zZSwgdGhlIHByb2Nlc3MgY29uc3RydWN0cyBhIGxvY2FsIHNvdXJjZSB0cmVlIHNwZWNpZmljIHRvIHlvdXIKLSAgICAgICAgICAgICAgICBrZXJuZWwgdG8gZ2VuZXJhdGUgdGhlIG5ldyBrZXJuZWwgaW1hZ2UgLSBhIHNvdXJjZSBnZW5lcmF0b3IgaWYgeW91IHdpbGwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIHRlbXBvcmFyeSBmaWxlIHN0cnVjdHVyZQotICAgICAgICAgICAgICAgIGNyZWF0ZWQgb24geW91ciBob3N0IHN5c3RlbSB3aGVuIHRoZSBidWlsZCBvY2N1cnMuCi0gICAgICAgICAgICAgICAgVGhpcwotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiBjb250YWlucyBhbGwgdGhlCi0gICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nIgotICAgICAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBZ2FpbiwgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsJ3MKLSAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYW5kIGl0cyBicmFuY2hpbmcgc3RyYXRlZ3ksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsnPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhdGNoaW5nLXRoZS1rZXJuZWwnPlBhdGNoaW5nIHRoZSBLZXJuZWw8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGEgZGV0YWlsZWQgZXhhbXBsZSB0aGF0IG1vZGlmaWVzIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+Ci0gICAgICAgICAgICA8dGl0bGU+S2VybmVsIE1vZGlmaWNhdGlvbiBXb3JrZmxvdzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgaWxsdXN0cmF0aW9uIGFuZCB0aGUgZm9sbG93aW5nIGxpc3Qgc3VtbWFyaXplcyB0aGUga2VybmVsIG1vZGlmaWNhdGlvbiBnZW5lcmFsIHdvcmtmbG93LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyIKLSAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZXQgdXAgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSB0byBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OiAgU2VlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyN0aGUtbGludXgtZGlzdHJvJz5UaGUgTGludXggRGlzdHJpYnV0aW9uPC91bGluaz4iIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iIHNlY3Rpb25zIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciByZXF1aXJlbWVudHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXN0YWJsaXNoIGEgbG9jYWwgY29weSBvZiBwcm9qZWN0IGZpbGVzIG9uIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTwvZW1waGFzaXM+OiAgSGF2aW5nIHRoZSA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeTwvbGluaz4gb24geW91ciBzeXN0ZW0gZ2l2ZXMgeW91IGFjY2VzcyB0byB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgdG9vbHMKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgdGhlc2UgZmlsZXMsIHNlZSB0aGUgYnVsbGV0ZWQgaXRlbQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2xvY2FsLXlwLXJlbGVhc2UnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvbGluaz4iIGVhcmxpZXIgaW4gdGhpcyBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlIHRlbXBvcmFyeSBrZXJuZWwgc291cmNlIGZpbGVzPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUZW1wb3Jhcnkga2VybmVsIHNvdXJjZSBmaWxlcyBhcmUga2VwdCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hlbiB5b3UgcnVuIEJpdEJha2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBuZXZlciBidWlsdCB0aGUga2VybmVsIGluIHdoaWNoIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0ZWQsIHlvdSBuZWVkIHRvIHJ1biBhbiBpbml0aWFsIGJ1aWxkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBlc3RhYmxpc2ggbG9jYWwga2VybmVsIHNvdXJjZSBmaWxlcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIGJ1aWxkaW5nIGFuIGltYWdlIGZvciB0aGUgZmlyc3QgdGltZSwgeW91IG5lZWQgdG8gZ2V0IHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgcmVhZHkgYnkgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBhbHNvIG5lZWQgdG8gYmUgc3VyZSB0d28ga2V5IGNvbmZpZ3VyYXRpb24gZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZW50aXJlIHByb2Nlc3MgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIGlzIG92ZXJ2aWV3ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCB3YW50IHRvIHJlZmVyZW5jZSB0aGlzIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gQml0QmFrZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YgaW1hZ2VzIHRvIHNhdGlzZnkgZGlmZmVyZW50IG5lZWRzLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iIGNoYXB0ZXIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZCBpbWFnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZTwvZW1waGFzaXM+OiAgTW9kaWZ5aW5nIHRoZSBrZXJuZWwgZG9lcyBub3QgYWx3YXlzIG1lYW4gZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIHRvIGRvIHRoaXMsIHlvdSBtYWtlIHRoZSBjaGFuZ2VzIHRvIHRoZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIGtlcm5lbCBjb25maWd1cmF0aW9uIGNoYW5nZXMgaWYgYXBwbGljYWJsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBzaXR1YXRpb24gY2FsbHMgZm9yIGNoYW5naW5nIHRoZSBrZXJuZWwncwotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgeW91IGNhbiB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNnZW5lcmF0aW5nLWNvbmZpZ3VyYXRpb24tZmlsZXMnPjxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFsbG93cyB5b3UgdG8gaW50ZXJhY3RpdmVseSBkZXZlbG9wIGFuZCB0ZXN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHlvdSBhcmUgbWFraW5nIHRvIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBTYXZpbmcgY2hhbmdlcyB5b3UgbWFrZSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHVwZGF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwncyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+V2FybmluZzwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiB0byBkaXJlY3RseSBlZGl0IGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3N5c3Jvb3RzLzxyZXBsYWNlYWJsZT5tYWNoaW5lLW5hbWU8L3JlcGxhY2VhYmxlPi9rZXJuZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbywgY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzIHdoZW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZWdlbmVyYXRlcyB0aGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgbWFkZSB1c2luZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IGhhdmUgc2F2ZWQgdGhlbSwgeW91IGNhbiBkaXJlY3RseSBjb21wYXJlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhZ2FpbnN0IGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBvcmlnaW5hbCBhbmQgZ2F0aGVyIHRob3NlIGNoYW5nZXMgaW50byBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5jb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGU8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBiZSByZWZlcmVuY2VkIGZyb20gd2l0aGluIHRoZSBrZXJuZWwncwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZGRpdGlvbmFsbHksIGlmIHlvdSBhcmUgd29ya2luZyBpbiBhIEJTUCBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWQgdG8gbW9kaWZ5IHRoZSBCU1AncyBrZXJuZWwncyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNtYW5hZ2luZy1rZXJuZWwtcGF0Y2hlcy1hbmQtY29uZmlnLWl0ZW1zLXdpdGgteW9jdG8ta2VybmVsJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFzIHdlbGwgYXMgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0IGxldHMKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBpbnRlcmFjdGl2ZWx5IHNldCB1cCBrZXJuZWwgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWJ1aWxkIHRoZSBrZXJuZWwgaW1hZ2Ugd2l0aCB5b3VyIGNoYW5nZXM8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlYnVpbGRpbmcgdGhlIGtlcm5lbCBpbWFnZSBhcHBsaWVzIHlvdXIgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdhcHBsaWNhdGlvbi1kZXZlbG9wbWVudC13b3JrZmxvdy11c2luZy1hbi1zZGsnPgotICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBXb3JrZmxvdyBVc2luZyBhbiBTREs8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFN0YW5kYXJkIGFuZCBleHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdHMgKFNESykgbWFrZSBpdCBlYXN5Ci0gICAgICAgIHRvIGRldmVsb3AgYXBwbGljYXRpb25zIGluc2lkZSBvciBvdXRzaWRlIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICBUb29scyBleGlzdCB0byBoZWxwIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgZHVyaW5nIGFueSBwaGFzZQotICAgICAgICBvZiBkZXZlbG9wbWVudC4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsIGFuZCB1c2UgYW4gU0RLLCBzZWUgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1pbnRybyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSJkZXYtbW9kaWZ5aW5nLXNvdXJjZS1jb2RlIj4KLSAgICA8dGl0bGU+TW9kaWZ5aW5nIFNvdXJjZSBDb2RlPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBBIGNvbW1vbiBkZXZlbG9wbWVudCB3b3JrZmxvdyBjb25zaXN0cyBvZiBtb2RpZnlpbmcgcHJvamVjdCBzb3VyY2UKLSAgICAgICAgZmlsZXMgdGhhdCBhcmUgZXh0ZXJuYWwgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIHRoZW4gaW50ZWdyYXRpbmcKLSAgICAgICAgdGhhdCBwcm9qZWN0J3MgYnVpbGQgb3V0cHV0IGludG8gYW4gaW1hZ2UgYnVpbHQgdXNpbmcgdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgIEdpdmVuIHRoaXMgc2NlbmFyaW8sIGRldmVsb3BtZW50IGVuZ2luZWVycyB0eXBpY2FsbHkgd2FudCB0byBzdGljawotICAgICAgICB0byB0aGVpciBmYW1pbGlhciBwcm9qZWN0IGRldmVsb3BtZW50IHRvb2xzIGFuZCBtZXRob2RzLCB3aGljaCBhbGxvd3MKLSAgICAgICAgdGhlbSB0byBqdXN0IGZvY3VzIG9uIHRoZSBwcm9qZWN0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBTZXZlcmFsIHdvcmtmbG93cyBleGlzdCB0aGF0IGFsbG93IHlvdSB0byBkZXZlbG9wLCBidWlsZCwgYW5kIHRlc3QKLSAgICAgICAgY29kZSB0aGF0IGlzIGdvaW5nIHRvIGJlIGludGVncmF0ZWQgaW50byBhbiBpbWFnZSBidWlsdCB1c2luZyB0aGUKLSAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0d286Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHNldCBvZiB0b29scyB0byBhaWQgaW4gd29ya2luZyBvbiB0aGUgc291cmNlIGNvZGUgYnVpbHQgYnkKLSAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBTZWN0aW9uCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtaW4teW91ci13b3JrZmxvdyc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFdvcmtmbG93PC9saW5rPiIKLSAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhpcyB3b3JrZmxvdy4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBtb3JlIGluZm9ybWF0aW9uIHRoYXQgc2hvd2Nhc2VzIHRoZSB3b3JrZmxvdywgY2xpY2sKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RyaXZlLmdvb2dsZS5jb20vYS9saW5hcm8ub3JnL2ZpbGUvZC8wQjNLR3pZNWZXN2xhVERWeFVYbzNVRFJ2ZDJzL3ZpZXcnPmhlcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgIGZvciBhIHByZXNlbnRhdGlvbiBieSBUcmV2b3IgV29lcm5lciB0aGF0LCB3aGlsZSBzb21ld2hhdCBkYXRlZCwKLSAgICAgICAgICAgICAgICBwcm92aWRlcyBkZXRhaWxlZCBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGFuZCBhIGNvbXBsZXRlCi0gICAgICAgICAgICAgICAgd29ya2luZyB0dXRvcmlhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcXVpbHQnPlF1aWx0PC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHBvd2VyZnVsIHRvb2wgdGhhdCBhbGxvd3MgeW91IHRvIGNhcHR1cmUgc291cmNlCi0gICAgICAgICAgICAgICAgY29kZSBjaGFuZ2VzIHdpdGhvdXQgaGF2aW5nIGEgY2xlYW4gc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgV2hpbGUgUXVpbHQgaXMgbm90IHRoZSBwcmVmZXJyZWQgd29ya2Zsb3cgb2YgdGhlIHR3bywgdGhpcwotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW5jbHVkZXMgaXQgZm9yIHVzZXJzIHRoYXQgYXJlIGNvbW1pdHRlZCB0byB1c2luZwotICAgICAgICAgICAgICAgIHRoZSB0b29sLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYS1xdWlsdC13b3JrZmxvdyc+VXNpbmcgUXVpbHQgaW4gWW91ciBXb3JrZmxvdzwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWRldnRvb2wtaW4teW91ci13b3JrZmxvdyc+Ci0gICAgICAgIDx0aXRsZT5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgV29ya2Zsb3c8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaGVscHMKLSAgICAgICAgICAgIHlvdSBlYXNpbHkgZGV2ZWxvcCBwcm9qZWN0cyB3aG9zZSBidWlsZCBvdXRwdXQgbXVzdCBiZSBwYXJ0IG9mCi0gICAgICAgICAgICBhbiBpbWFnZSBidWlsdCB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhyZWUgZW50cnkgcG9pbnRzIGV4aXN0IHRoYXQgYWxsb3cgeW91IHRvIGRldmVsb3AgdXNpbmcKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT46Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGVzZSB3b3JrZmxvd3MuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldnRvb2wtcmVmZXJlbmNlJz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Jm5ic3A7UXVpY2sgUmVmZXJlbmNlPC91bGluaz4iCi0gICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHF1aWNrIHJlZmVyZW5jZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1c2UtZGV2dG9vbC10by1pbnRlZ3JhdGUtbmV3LWNvZGUnPgotICAgICAgICAgICAgPHRpdGxlPlVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB0byBBZGQgYW4gQXBwbGljYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBnZW5lcmF0ZXMKLSAgICAgICAgICAgICAgICBhIG5ldyByZWNpcGUgYmFzZWQgb24gZXhpc3Rpbmcgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIHRha2VzIGFkdmFudGFnZSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPgotICAgICAgICAgICAgICAgIGxheWVyIHRoYXQgbWFueSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmRzCi0gICAgICAgICAgICAgICAgdXNlLgotICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gZXh0cmFjdCBzb3VyY2UKLSAgICAgICAgICAgICAgICBjb2RlIGludG8gYm90aCB0aGUgd29ya3NwYWNlIG9yIGEgc2VwYXJhdGUgbG9jYWwgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICBhbmQgdG8gdXNlIGV4aXN0aW5nIGNvZGUgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBzY2VuYXJpbywgdGhlIGFyZ3VtZW50cyBhbmQgb3B0aW9ucwotICAgICAgICAgICAgICAgIHlvdSB1c2Ugd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBmb3JtIGRpZmZlcmVudAotICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9ucy4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgY29tbW9uIGRldmVsb3BtZW50IGZsb3dzCi0gICAgICAgICAgICAgICAgeW91IHdvdWxkIHVzZSB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZXZ0b29sLWFkZC1mbG93LnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdlbmVyYXRpbmcgdGhlIE5ldyBSZWNpcGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0b3AgcGFydCBvZiB0aGUgZmxvdyBzaG93cyB0aHJlZSBzY2VuYXJpb3MgYnkgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjb3VsZCB1c2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uIGV4aXN0aW5nIHNvdXJjZSBjb2RlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gYSBzaGFyZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsIHdoZXJlIG90aGVyIGRldmVsb3BlcnMgYXJlIHJlc3BvbnNpYmxlIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaW91cyBhcmVhcyBvZiBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFzIGEgZGV2ZWxvcGVyLCB5b3UgYXJlIHByb2JhYmx5IGludGVyZXN0ZWQgaW4gdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc291cmNlIGNvZGUgYXMgcGFydCBvZiB5b3VyIGRldmVsb3BtZW50IHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCB5b3UgbmVlZCBpcyBhY2Nlc3MgdG8gdGhlIGNvZGUsIGEgcmVjaXBlLCBhbmQgYQotICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZCBhcmVhIGluIHdoaWNoIHRvIGRvIHlvdXIgd29yay48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB0aGUgZGlhZ3JhbSwgdGhyZWUgcG9zc2libGUgc2NlbmFyaW9zCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWVkIGludG8gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHdvcmtmbG93OgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gcmVwcmVzZW50cyBhIGNvbW1vbiBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHlvdSBqdXN0IGxldCBpdCBnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGVkIHRvIHRoZSBkZWZhdWx0IHdvcmtzcGFjZSAtIHlvdSBkbyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudCBpdCBpbiBzb21lIHNwZWNpZmljIGxvY2F0aW9uIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgZXZlcnl0aGluZyB5b3UgbmVlZCB3aWxsIGJlIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYWRkIDxyZXBsYWNlYWJsZT5yZWNpcGUgZmV0Y2h1cmk8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggdGhpcyBjb21tYW5kLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSByZWNpcGUgYW5kIGFuIGFwcGVuZCBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgYXMgd2VsbCBhcyBleHRyYWN0cyB0aGUgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIGludG8gYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBhbHNvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgPGZpbGVuYW1lPnNvdXJjZXM8L2ZpbGVuYW1lPiBmb2xkZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gYWxzbyByZXByZXNlbnRzIGEgc2l0dWF0aW9uIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCBleGlzdCBsb2NhbGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBjb2RlIGlzIGFnYWluIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkcyB0byBiZSBleHRyYWN0ZWQgdG8gc29tZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBhcmVhIC0gdGhpcyB0aW1lIG91dHNpZGUgb2YgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiByZXF1aXJlZCwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHdheXMgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGxvY2FsbHkgZHVyaW5nIHRoZSBleHRyYWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcyB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGxvY2F0ZSB0aGUgZXh0cmFjdGVkIGNvZGUgb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgc291cmNlIGNvZGUgaXMgcHVsbGVkIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZldGNodXJpPC9yZXBsYWNlYWJsZT4gYW5kIGV4dHJhY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gYXMgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGJvdGggdGhlIHJlY2lwZSBhbmQgYW4gYXBwZW5kIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSB0cmVlIChzcmN0cmVlKSBoYXMgYmVlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHByZXBhcmVkIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIG5hbWVzIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlkZW50aWZpZXMgd2hlcmUgdGhlIGV4aXN0aW5nIHNvdXJjZSB0cmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxvY2F0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGFkZCA8cmVwbGFjZWFibGU+cmVjaXBlIHNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGV4YW1pbmVzIHRoZSBzb3VyY2UgY29kZSBhbmQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJlY2lwZSBmb3IgaXQgcGxhY2luZyB0aGUgcmVjaXBlIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVjYXVzZSB0aGUgZXh0cmFjdGVkIHNvdXJjZSBjb2RlIGFscmVhZHkgZXhpc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGRvZXMgbm90IHRyeSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxvY2F0ZSBpdCBpbnRvIHRoZSB3b3Jrc3BhY2UgLSBqdXN0IHRoZSBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBpcyBwbGFjZWQgaW4gdGhlIHdvcmtzcGFjZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXNpZGUgZnJvbSBhIHJlY2lwZSBmb2xkZXIsIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gY3JlYXRlcyBhbiBhcHBlbmQgZm9sZGVyIGFuZCBwbGFjZXMgYW4gaW5pdGlhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+IHdpdGhpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVkaXQgdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGNhbiB1c2UgPGZpbGVuYW1lPmRldnRvb2wgZWRpdC1yZWNpcGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdG8gb3BlbiB1cCB0aGUgZWRpdG9yIGFzIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JEVESVRPUjwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgbW9kaWZ5IHRoZSBmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgZWRpdC1yZWNpcGUgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHdpdGhpbiB0aGUgZWRpdG9yLCB5b3UgY2FuIG1ha2UgbW9kaWZpY2F0aW9ucyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0aGF0IHRha2UgYWZmZWN0IHdoZW4geW91IGJ1aWxkIGl0IGxhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIFJlY2lwZSBvciBSZWJ1aWxkIHRoZSBJbWFnZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCBpbiB0aGUgZmxvdywgdGhlIG5leHQgc3RlcCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcgdG8gZG8gd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBjb2RlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBuZWVkIHRvIHRha2UgdGhlIGJ1aWxkIG91dHB1dCBhbmQgZXZlbnR1YWxseQotICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSBpdCB0byB0aGUgdGFyZ2V0IGhhcmR3YXJlLCB5b3Ugd291bGQgdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYnVpbGQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T24gdGhlIG90aGVyIGhhbmQsIGlmIHlvdSB3YW50IGFuIGltYWdlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSByZWNpcGUncyBwYWNrYWdlcyBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIG9udG8gYSBkZXZpY2UgKGUuZy4gZm9yIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJ1aWxkIG91dCB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZCBvbiB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UgYW5kIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0IHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQgaGFyZHdhcmUgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZSB0YXJnZXQ8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmlzaCBZb3VyIFdvcmsgV2l0aCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbnkgcGF0Y2hlcyBjb3JyZXNwb25kaW5nIHRvIGNvbW1pdHMgaW4gdGhlIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgbW92ZXMgdGhlIG5ldyByZWNpcGUgdG8gYSBtb3JlIHBlcm1hbmVudAotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFuZCB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgZmluaXNoIDxyZXBsYWNlYWJsZT5yZWNpcGUgbGF5ZXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IHdhbnQgdG8gdHVybiBpbnRvIHBhdGNoZXMgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgbWVudGlvbmVkLCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbW92ZXMgdGhlIGZpbmFsIHJlY2lwZSB0byBpdHMgcGVybWFuZW50IGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhIGZpbmFsIHByb2Nlc3Mgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kLCB0aGUgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzdGFuZGFyZCBsYXllcnMgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVkIHNvIHRoYXQgeW91IGNhbiBidWlsZCB0aGUgcmVjaXBlIGZyb20gdGhvc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFzIHJhdGhlciB0aGFuIHRoZSB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgcmVzZXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcHV0IHRoaW5ncyBiYWNrIHNob3VsZCB5b3UgZGVjaWRlIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCB3YW50IHRvIHByb2NlZWQgd2l0aCB5b3VyIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIHVzZSB0aGlzIGNvbW1hbmQsIHJlYWxpemUgdGhhdCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZSBpcyBwcmVzZXJ2ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtdXNlLWRldnRvb2wtbW9kaWZ5LXRvLWVuYWJsZS13b3JrLW9uLWNvZGUtYXNzb2NpYXRlZC13aXRoLWFuLWV4aXN0aW5nLXJlY2lwZSc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IHRvIE1vZGlmeSB0aGUgU291cmNlIG9mIGFuIEV4aXN0aW5nIENvbXBvbmVudDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kIHByZXBhcmVzIHRoZQotICAgICAgICAgICAgICAgIHdheSB0byB3b3JrIG9uIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhcyBhIHJlY2lwZSBpbgotICAgICAgICAgICAgICAgIHBsYWNlLgotICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gZXh0cmFjdCBjb2RlLAotICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIGV4aXN0aW5nIHJlY2lwZSwgYW5kIGtlZXAgdHJhY2sgb2YgYW5kIGdhdGhlciBhbnkKLSAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMgdGhhdCBhcmUKLSAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNvZGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gZm9ybSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93cwotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCB1c2Ugd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kOgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGV2dG9vbC1tb2RpZnktZmxvdy5wbmciIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwYXJpbmcgdG8gTW9kaWZ5IHRoZSBDb2RlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wIHBhcnQgb2YgdGhlIGZsb3cgc2hvd3MgdGhyZWUgc2NlbmFyaW9zIGJ5IHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY291bGQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmVwYXJlIHRvIHdvcmsgb24gc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBzY2VuYXJpbyBhc3N1bWVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVjaXBlIGV4aXN0cyBpbiBzb21lIGxheWVyIGV4dGVybmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZXhpc3QgdXBzdHJlYW0gaW4gYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW4tZXh0cmFjdGVkIHN0YXRlIG9yIGxvY2FsbHkgaW4gYSBwcmV2aW91c2x5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RlZCBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0eXBpY2FsIHNpdHVhdGlvbiBpcyB3aGVyZSBhbm90aGVyIGRldmVsb3BlciBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgc29tZSBsYXllciBmb3IgdXNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGVpciByZWNpcGUgYWxyZWFkeSByZXNpZGVzIGluIHRoYXQgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlaXIgc291cmNlIGNvZGUgaXMgcmVhZGlseSBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVpdGhlciB1cHN0cmVhbSBvciBsb2NhbGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gcmVwcmVzZW50cyBhIGNvbW1vbiBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHRoZSBzb3VyY2UgaXMgZXh0cmFjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGRlZmF1bHQgd29ya3NwYWNlIGxvY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlLCBpbiB0aGlzIHNjZW5hcmlvLCBpcyBpbiBpdHMgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIG91dHNpZGUgdGhlIHdvcmtzcGFjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sYXllcm5hbWU8L3JlcGxhY2VhYmxlPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgaWRlbnRpZmllcyB0aGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBieSBkZWZhdWx0IGV4dHJhY3RzIHRoZSBzb3VyY2UgZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIG1vZGlmeSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT5sb2NhdGVzIHRoZSByZWNpcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHVzZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIHRoZSBzb3VyY2UgY29kZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGxvY2FsIHBhdGNoIGZpbGVzIGZyb20gb3RoZXIgZGV2ZWxvcGVycyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHByb3ZpZGUgYW4gVVJMIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiB3aGVuIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgc2NlbmFyaW8sIGhvd2V2ZXIsIHNpbmNlIG5vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gYXJndW1lbnQgZXhpc3RzLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHRoZSBzb3VyY2UgZmlsZXMgdG8gYSBHaXQgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGxvY2F0aW9uIGZvciB0aGUgZXh0cmFjdGVkIHNvdXJjZSBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBhcmVhIHdpdGhpbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIGNvbW1hbmQgc2V0cyB1cCBib3RoIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSBhbmQgYW4gYXBwZW5kIGZpbGUgd2l0aGluIHRoZSB3b3Jrc3BhY2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHJlbWFpbmluZyBpbiBpdHMgb3JpZ2luYWwgbG9jYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gcmVwcmVzZW50cyBhIHNpdHVhdGlvbiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgYWxzbyBkb2VzIG5vdCBleGlzdCBsb2NhbGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBjb2RlIGlzIGFnYWluIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkcyB0byBiZSBleHRyYWN0ZWQgdG8gc29tZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBhcmVhIGFzIGEgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUsIGluIHRoaXMgc2NlbmFyaW8sIGlzIGFnYWluIGluIGl0cyBvd24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgb3V0c2lkZSB0aGUgd29ya3NwYWNlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGF0IHJlY2lwZSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvIHdvcmsgYW5kLCBpbiB0aGlzIGNhc2UsIGlkZW50aWZpZXMgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhIGZvciB0aGUgZXh0cmFjdGVkIHNvdXJjZSBmaWxlcyB0aGF0IGlzIG91dHNpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRlZmF1bHQgd29ya3NwYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBleHRyYWN0aW9ucywgdGhlIGNvbW1hbmQgdXNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlJ3MgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0byBsb2NhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgZmlsZXMgYXJlIGxvY2F0ZWQsIHRoZSBjb21tYW5kIGJ5IGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkaW5nIHRoZSA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IGluc3RydWN0cyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlIHRoZSBleHRyYWN0ZWQgc291cmNlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gd29ya3NwYWNlLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYW4gYXBwZW5kIGZpbGUgZm9yIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgcmVtYWlucyBpbiBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgYXJlIGV4dHJhY3RlZCB0byB0aGUgbG9jYXRpb24geW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHdpdGggPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SaWdodDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmlnaHQgc2NlbmFyaW8gcmVwcmVzZW50cyBhIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIHRyZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4pIGV4aXN0cyBhcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgZXh0cmFjdGVkIEdpdCBzdHJ1Y3R1cmUgb3V0c2lkZSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIHJlY2lwZSBhbHNvIGV4aXN0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNld2hlcmUgaW4gaXRzIG93biBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY29tbWFuZCB0ZWxscwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGljaCB0byB3b3JrLCB1c2VzIHRoZSAiLW4iIG9wdGlvbiB0byBpbmRpY2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZG9lcyBub3QgbmVlZCB0byBiZSBleHRyYWN0ZWQsIGFuZCB1c2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gdG8gcG9pbnQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgZXh0cmFjdGVkIHNvdXJjZSBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgbW9kaWZ5IC1uIDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgdGhlIGNvbW1hbmQgZmluaXNoZXMsIGl0IGNyZWF0ZXMgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBhcHBlbmQgZmlsZSBmb3IgdGhlIHJlY2lwZSBpbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGFuZCB0aGUgc291cmNlIGNvZGUgcmVtYWluIGluIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIGxvY2F0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FZGl0IHRoZSBTb3VyY2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdXNlZCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHlvdSBhcmUgZnJlZSB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhbnkgZWRpdG9yIHlvdSBsaWtlIHRvIG1ha2UgYW5kIHNhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgc291cmNlIGNvZGUgbW9kaWZpY2F0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdXBkYXRlZCB0aGUgc291cmNlIGZpbGVzLCB5b3UgY2FuIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBidWlsZCBvdXQgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHJlc3VsdGluZyBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RlcCBhc3N1bWVzIHlvdSBoYXZlIGEgcHJldmlvdXNseSBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRoYXQgaXMgYWxyZWFkeSBlaXRoZXIgcnVubmluZyBpbiBRRU1VIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBvbiBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaXQgaXMgYXNzdW1lZCB0aGF0IGZvciBkZXBsb3ltZW50IG9mIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQsIFNTSCBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIGFuZCBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBpcyBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmUgdGhhdCB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgYWNjZXNzIHRvIGFuZCBmcm9tIHlvdXIgZGV2ZWxvcG1lbnQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0IGhhcmR3YXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIGFsc28gZGVwbG95IHRoZSBpbWFnZSB5b3UgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHVwZGF0ZXMgdGhlIHJlY2lwZSB0byBwb2ludCB0byB0aGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAob3IgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIHRvIGRvCi0gICAgICAgICAgICAgICAgICAgICAgICBzbywgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24gbGF5ZXIpLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmVzZXRzIHRoZSByZWNpcGUgc28gdGhhdCB0aGUgcmVjaXBlIGlzIGJ1aWx0IG5vcm1hbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBmcm9tIHRoZSB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBmaW5pc2ggPHJlcGxhY2VhYmxlPnJlY2lwZSBsYXllcjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnkgY2hhbmdlcyB5b3Ugd2FudCB0byB0dXJuIGludG8gcGF0Y2hlcyBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVkIHRvIHRoZSBHaXQgcmVwb3NpdG9yeSBpbiB0aGUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWNhdXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gbW92ZSB0aGUgcmVjaXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gZWl0aGVyIHVwZGF0ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCByZWNpcGUgaW4gdGhlIG9yaWdpbmFsIGxheWVyIG9yIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGluIGEgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXllciBhcyBwcm92aWRlZCBieSA8cmVwbGFjZWFibGU+bGF5ZXI8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlZCBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZSBmcm9tIHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHJlc2V0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHB1dCB0aGluZ3MgYmFjayBzaG91bGQgeW91IGRlY2lkZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3Qgd2FudCB0byBwcm9jZWVkIHdpdGggeW91ciB3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyB1c2UgdGhpcyBjb21tYW5kLCByZWFsaXplIHRoYXQgdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgaXMgcHJlc2VydmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kIHVwZGF0ZXMKLSAgICAgICAgICAgICAgICBhbiBleGlzdGluZyByZWNpcGUgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIGl0IGZvciBhbiB1cGRhdGVkCi0gICAgICAgICAgICAgICAgc2V0IG9mIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBpcyBmbGV4aWJsZSBlbm91Z2ggdG8gYWxsb3cgeW91IHRvIHNwZWNpZnkKLSAgICAgICAgICAgICAgICBzb3VyY2UgY29kZSByZXZpc2lvbiBhbmQgdmVyc2lvbmluZyBzY2hlbWVzLCBleHRyYWN0IGNvZGUgaW50bwotICAgICAgICAgICAgICAgIG9yIG91dCBvZiB0aGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3Jrc3BhY2UsIGFuZAotICAgICAgICAgICAgICAgIHdvcmsgd2l0aCBhbnkgc291cmNlIGZpbGUgZm9ybXMgdGhhdCB0aGUgZmV0Y2hlcnMgc3VwcG9ydC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBzY2VuYXJpbywgdGhlIGFyZ3VtZW50cyBhbmQgb3B0aW9ucwotICAgICAgICAgICAgICAgIHlvdSB1c2Ugd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gZm9ybSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGEgY29tbW9uIGRldmVsb3BtZW50IGZsb3cKLSAgICAgICAgICAgICAgICB5b3Ugd291bGQgdXNlIHdpdGggdGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29tbWFuZDoKLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RldnRvb2wtdXBncmFkZS1mbG93LnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkluaXRpYXRlIHRoZSBVcGdyYWRlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wIHBhcnQgb2YgdGhlIGZsb3cgc2hvd3MgYSB0eXBpY2FsIHNjZW5hcmlvIGJ5IHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY291bGQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBleGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZWNpcGUgZXhpc3RzIGluIHNvbWUgbGF5ZXIgZXh0ZXJuYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHNvdXJjZSBmaWxlcyBmb3IgdGhlIG5ldyByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IGFkamFjZW50IHRvIHRoZSBzYW1lIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlIChlLmcuIGEgdGFyYmFsbCB3aXRoIHRoZSBuZXcgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgaW4gdGhlIG5hbWUsIG9yIGFzIGEgZGlmZmVyZW50IHJldmlzaW9uIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGNvbW1vbiBzaXR1YXRpb24gaXMgd2hlcmUgdGhpcmQtcGFydHkgc29mdHdhcmUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmdvbmUgYSByZXZpc2lvbiBzbyB0aGF0IGl0IGhhcyBiZWVuIHVwZ3JhZGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSB5b3UgaGF2ZSBhY2Nlc3MgdG8gaXMgbGlrZWx5IGluIHlvdXIgb3duIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgeW91IG5lZWQgdG8gdXBncmFkZSB0aGUgcmVjaXBlIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VyIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgdXBncmFkZSAtViA8cmVwbGFjZWFibGU+dmVyc2lvbiByZWNpcGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyBzb3VyY2UgY29kZSBpbnRvIHRoZSA8ZmlsZW5hbWU+c291cmNlczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBjb2RlIGV4dHJhY3RlZCB0byBhbnkgb3RoZXIgbG9jYXRpb24sIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBwcm92aWRlIHRoZSA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50IHdpdGggdGhlIGNvbW1hbmQgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIHVwZ3JhZGUgLVYgPHJlcGxhY2VhYmxlPnZlcnNpb24gcmVjaXBlIHNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaW4gdGhpcyBleGFtcGxlLCB0aGUgIi1WIiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHZlcnNpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgc291cmNlIGZpbGVzIHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBpbiB0aGUgcmVjaXBlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBHaXQgcmVwb3NpdG9yeSwgeW91IG11c3QgcHJvdmlkZSB0aGUgIi1TIiBvcHRpb24gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGEgcmV2aXNpb24gZm9yIHRoZSBzb2Z0d2FyZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBsb2NhdGVzIHRoZSByZWNpcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpdCB1c2VzIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIGxvY2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlIGFuZCBhbnkgbG9jYWwgcGF0Y2ggZmlsZXMgZnJvbSBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBhcmUgbG9jYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB0aGUgY29tbWFuZCBzZXRzIHVwIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLCBhbmQgYW4gYXBwZW5kIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB3aXRoaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJlc29sdmUgYW55IENvbmZsaWN0cyBjcmVhdGVkIGJ5IHRoZSBVcGdyYWRlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB0aGVyZSBjb3VsZCBiZSBzb21lIGNvbmZsaWN0cyBkdWUgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBiZWluZyB1cGdyYWRlZCB0byBhIG5ldyB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB3b3VsZCBvY2N1ciBpZiB5b3VyIHJlY2lwZSBzcGVjaWZpZXMgc29tZSBwYXRjaCBmaWxlcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0aGF0IGNvbmZsaWN0IHdpdGggY2hhbmdlcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFkZSBpbiB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgeW91IG5lZWQgdG8gcmVzb2x2ZSB0aGUgY29uZmxpY3RzCi0gICAgICAgICAgICAgICAgICAgICAgICBieSBlZGl0aW5nIHRoZSBzb3VyY2UgYW5kIGZvbGxvd2luZyB0aGUgbm9ybWFsCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHJlYmFzZTwvZmlsZW5hbWU+IGNvbmZsaWN0IHJlc29sdXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgbW92aW5nIG9udG8gdGhlIG5leHQgc3RlcCwgYmUgc3VyZSB0byByZXNvbHZlIGFueQotICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBjb25mbGljdHMgY3JlYXRlZCB0aHJvdWdoIHVzZSBvZiBhIG5ld2VyIG9yIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHlvdXIgcmVjaXBlIGluIG9yZGVyLCB5b3UgY2FuIGJ1aWxkIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBlaXRoZXIgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBFaXRoZXIgbWV0aG9kIHByb2R1Y2VzIGJ1aWxkIG91dHB1dCB0aGF0IGlzIHN0b3JlZAotICAgICAgICAgICAgICAgICAgICAgICAgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvciA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIGJ1aWxkIG91dCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UgYW5kIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0IHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQgaGFyZHdhcmUgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZSB0YXJnZXQ8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmlzaCBZb3VyIFdvcmsgV2l0aCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbnkgcGF0Y2hlcyBjb3JyZXNwb25kaW5nIHRvIGNvbW1pdHMgaW4gdGhlIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgbW92ZXMgdGhlIG5ldyByZWNpcGUgdG8gYSBtb3JlIHBlcm1hbmVudAotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFuZCB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBsYXllciB0aGF0IGlzIHRoZSBzYW1lIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgc291cmNlLCB0aGVuIHRoZSBvbGQgdmVyc2lvbiBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQgYXNzb2NpYXRlZCBmaWxlcyB3aWxsIGJlIHJlbW92ZWQgcHJpb3IgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZyB0aGUgbmV3IHZlcnNpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBmaW5pc2ggPHJlcGxhY2VhYmxlPnJlY2lwZSBsYXllcjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnkgY2hhbmdlcyB5b3Ugd2FudCB0byB0dXJuIGludG8gcGF0Y2hlcyBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVkIHRvIHRoZSBHaXQgcmVwb3NpdG9yeSBpbiB0aGUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlZCBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZSBmcm9tIHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHJlc2V0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHB1dCB0aGluZ3MgYmFjayBzaG91bGQgeW91IGRlY2lkZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3Qgd2FudCB0byBwcm9jZWVkIHdpdGggeW91ciB3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyB1c2UgdGhpcyBjb21tYW5kLCByZWFsaXplIHRoYXQgdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgaXMgcHJlc2VydmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2luZy1hLXF1aWx0LXdvcmtmbG93Ij4KLSAgICAgICAgPHRpdGxlPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcXVpbHQnPlF1aWx0PC91bGluaz4KLSAgICAgICAgICAgIGlzIGEgcG93ZXJmdWwgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gY2FwdHVyZSBzb3VyY2UgY29kZSBjaGFuZ2VzCi0gICAgICAgICAgICB3aXRob3V0IGhhdmluZyBhIGNsZWFuIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG91dGxpbmVzIHRoZSB0eXBpY2FsIHdvcmtmbG93IHlvdSBjYW4gdXNlIHRvIG1vZGlmeQotICAgICAgICAgICAgc291cmNlIGNvZGUsIHRlc3QgY2hhbmdlcywgYW5kIHRoZW4gcHJlc2VydmUgdGhlIGNoYW5nZXMgaW4gdGhlCi0gICAgICAgICAgICBmb3JtIG9mIGEgcGF0Y2ggYWxsIHVzaW5nIFF1aWx0LgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgV2l0aCByZWdhcmQgdG8gcHJlc2VydmluZyBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyBpZiB5b3UKLSAgICAgICAgICAgICAgICBjbGVhbiBhIHJlY2lwZSBvciBoYXZlIDxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT4gZW5hYmxlZCwKLSAgICAgICAgICAgICAgICB0aGUgd29ya2Zsb3cgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLWluLXlvdXItd29ya2Zsb3cnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4gWW91ciBXb3JrZmxvdzwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpcyBhIHNhZmVyIGRldmVsb3BtZW50IGZsb3cgdGhhbiB0aGFuIHRoZSBmbG93IHRoYXQKLSAgICAgICAgICAgICAgICB1c2VzIFF1aWx0LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwczoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkZpbmQgdGhlIFNvdXJjZSBDb2RlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIGlzIGtlcHQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZmluZGluZy10aGUtdGVtcG9yYXJ5LXNvdXJjZS1jb2RlJz5GaW5kaW5nIFRlbXBvcmFyeSBTb3VyY2UgQ29kZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gdG8gbGVhcm4gaG93IHRvIGxvY2F0ZSB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZQotICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgZm9yIGEgcGFydGljdWxhciBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNoYW5nZSBZb3VyIFdvcmtpbmcgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIHRoZSBkaXJlY3RvcnkgdGhhdCBoYXMgdGhlIHRlbXBvcmFyeSBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgICAgICAgICAgVGhhdCBkaXJlY3RvcnkgaXMgZGVmaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSBhIE5ldyBQYXRjaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBCZWZvcmUgbW9kaWZ5aW5nIHNvdXJjZSBjb2RlLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBuZXcgcGF0Y2guCi0gICAgICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIG5ldyBwYXRjaCBmaWxlLCB1c2UgPGZpbGVuYW1lPnF1aWx0IG5ldzwvZmlsZW5hbWU+IGFzIGJlbG93OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcXVpbHQgbmV3IG15X2NoYW5nZXMucGF0Y2gKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Tm90aWZ5IFF1aWx0IGFuZCBBZGQgRmlsZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgY3JlYXRpbmcgdGhlIHBhdGNoLCB5b3UgbmVlZCB0byBub3RpZnkgUXVpbHQgYWJvdXQgdGhlIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgIHlvdSBwbGFuIHRvIGVkaXQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBub3RpZnkgUXVpbHQgYnkgYWRkaW5nIHRoZSBmaWxlcyB0byB0aGUgcGF0Y2ggeW91IGp1c3QgY3JlYXRlZDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHF1aWx0IGFkZCBmaWxlMS5jIGZpbGUyLmMgZmlsZTMuYwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgRmlsZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4gdGhlIHNvdXJjZSBjb2RlIHRvIHRoZSBmaWxlcyB5b3UgYWRkZWQKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHBhdGNoLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRlc3QgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgbW9kaWZpZWQgdGhlIHNvdXJjZSBjb2RlLCB0aGUgZWFzaWVzdCB3YXkgdG8KLSAgICAgICAgICAgICAgICAgICAgeW91ciBjaGFuZ2VzIGlzIGJ5IGNhbGxpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gdGFzayBhcyBzaG93biBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1jIGNvbXBpbGUgLWYgPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LS1mb3JjZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiBmb3JjZXMgdGhlIHNwZWNpZmllZCB0YXNrIHRvIGV4ZWN1dGUuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBmaW5kIHByb2JsZW1zIHdpdGggeW91ciBjb2RlLCB5b3UgY2FuIGp1c3Qga2VlcCBlZGl0aW5nIGFuZAotICAgICAgICAgICAgICAgICAgICByZS10ZXN0aW5nIGl0ZXJhdGl2ZWx5IHVudGlsIHRoaW5ncyB3b3JrIGFzIGV4cGVjdGVkLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT5BbGwgdGhlIG1vZGlmaWNhdGlvbnMgeW91IG1ha2UgdG8gdGhlIHRlbXBvcmFyeSBzb3VyY2UgY29kZQotICAgICAgICAgICAgICAgICAgICBkaXNhcHBlYXIgb25jZSB5b3UgcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY2xlYW4nPjxmaWxlbmFtZT5kb19jbGVhbjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuYWxsJz48ZmlsZW5hbWU+ZG9fY2xlYW5hbGw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tzIHVzaW5nIEJpdEJha2UgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgY2xlYW4gPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBjbGVhbmFsbCA8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBNb2RpZmljYXRpb25zIHdpbGwgYWxzbyBkaXNhcHBlYXIgaWYgeW91IHVzZSB0aGUgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2VuZXJhdGUgdGhlIFBhdGNoOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIE9uY2UgeW91ciBjaGFuZ2VzIHdvcmsgYXMgZXhwZWN0ZWQsIHlvdSBuZWVkIHRvIHVzZSBRdWlsdCB0byBnZW5lcmF0ZSB0aGUgZmluYWwgcGF0Y2ggdGhhdAotICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbGwgeW91ciBtb2RpZmljYXRpb25zLgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcXVpbHQgcmVmcmVzaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZSA8ZmlsZW5hbWU+bXlfY2hhbmdlcy5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgaGFzIGFsbCB5b3VyIGVkaXRzIG1hZGUKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5maWxlMS5jPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5maWxlMi5jPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZTMuYzwvZmlsZW5hbWU+IGZpbGVzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSByZXN1bHRpbmcgcGF0Y2ggZmlsZSBpbiB0aGUgPGZpbGVuYW1lPnBhdGNoZXMvPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UgKDxmaWxlbmFtZT5TPC9maWxlbmFtZT4pIGRpcmVjdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNvcHkgdGhlIFBhdGNoIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvcHkgdGhlIHBhdGNoIGZpbGUgaW50byBhIGRpcmVjdG9yeSBuYW1lZCA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggeW91IGNhbiBjcmVhdGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlIG9yIHRoZQotICAgICAgICAgICAgICAgICAgICBhcHBlbmQgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgUGxhY2luZyB0aGUgcGF0Y2ggaGVyZSBndWFyYW50ZWVzIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2lsbCBmaW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwYXRjaC4KLSAgICAgICAgICAgICAgICAgICAgTmV4dCwgYWRkIHRoZSBwYXRjaCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPlNSQ19VUkk8L3VsaW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG9mIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXlfY2hhbmdlcy5wYXRjaCIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPgotICAgICAgICA8dGl0bGU+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgaGVscGZ1bCBkdXJpbmcgZGV2ZWxvcG1lbnQgdG8gbW9kaWZ5IHRoZQotICAgICAgICAgICAgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIHVzZWQgYnkgcmVjaXBlcyB0byBidWlsZCBwYWNrYWdlcy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgZGV2ZWxvcGluZyBhIHBhdGNoIGFuZCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgZXhwZXJpbWVudCBhIGJpdCB0byBmaWd1cmUgb3V0IHlvdXIgc29sdXRpb24uCi0gICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBpbml0aWFsbHkgYnVpbHQgdGhlIHBhY2thZ2UsIHlvdSBjYW4gaXRlcmF0aXZlbHkKLSAgICAgICAgICAgIHR3ZWFrIHRoZSBzb3VyY2UgY29kZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwgYW5kIHRoZW4KLSAgICAgICAgICAgIHlvdSBjYW4gZm9yY2UgYSByZS1jb21waWxlIGFuZCBxdWlja2x5IHRlc3QgeW91ciBhbHRlcmVkIGNvZGUuCi0gICAgICAgICAgICBPbmNlIHlvdSBzZXR0bGUgb24gYSBzb2x1dGlvbiwgeW91IGNhbiB0aGVuIHByZXNlcnZlIHlvdXIgY2hhbmdlcwotICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgUXVpbHQgZm9yIGRldmVsb3BtZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYS1xdWlsdC13b3JrZmxvdyc+VXNpbmcgUXVpbHQgaW4gWW91ciBXb3JrZmxvdzwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgdGhlIHVucGFja2VkIHRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHJlY2lwZXMKLSAgICAgICAgICAgIHRvIGJ1aWxkIHBhY2thZ2VzIGlzIGF2YWlsYWJsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGFzCi0gICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz5TPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIEJlbG93IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcyBkZWZpbmVkIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUyA9ICIke1dPUktESVJ9LyR7QlB9IgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgWW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IG1hbnkgcmVjaXBlcyBvdmVycmlkZSB0aGUgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCByZWNpcGVzIHRoYXQgZmV0Y2ggdGhlaXIgc291cmNlIGZyb20gR2l0IHVzdWFsbHkgc2V0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IHRvIDxmaWxlbmFtZT4ke1dPUktESVJ9L2dpdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQJz48ZmlsZW5hbWU+QlA8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgcmVwcmVzZW50cyB0aGUgYmFzZSByZWNpcGUgbmFtZSwgd2hpY2ggY29uc2lzdHMgb2YgdGhlIG5hbWUgYW5kIHZlcnNpb246Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCUCA9ICIke0JQTn0tJHtQVn0iCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgd29yayBkaXJlY3RvcnkgZm9yIHRoZSByZWNpcGUKLSAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+KQotICAgICAgICAgICAgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAke1RNUERJUn0vd29yay8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgYWN0dWFsIGRpcmVjdG9yeSBkZXBlbmRzIG9uIHNldmVyYWwgdGhpbmdzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSB0b3AtbGV2ZWwgYnVpbGQgb3V0cHV0IGRpcmVjdG9yeTwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NVUxUSU1BQ0hfVEFSR0VUX1NZUyc+PGZpbGVuYW1lPk1VTFRJTUFDSF9UQVJHRVRfU1lTPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBzeXN0ZW0gaWRlbnRpZmllcjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBuYW1lPC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVORFBFJz48ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICBUaGUgZXBvY2ggLSAoaWYKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQsIHdoaWNoIGlzIHVzdWFsbHkgdGhlIGNhc2UgZm9yIG1vc3QKLSAgICAgICAgICAgICAgICAgICAgcmVjaXBlcywgdGhlbiA8ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPiBpcyBibGFuayk8L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgdmVyc2lvbjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSByZXZpc2lvbjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIGEgU291cmNlIERpcmVjdG9yeSB0b3AtbGV2ZWwgZm9sZGVyCi0gICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LCBhIGRlZmF1bHQgQnVpbGQgRGlyZWN0b3J5IGF0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZDwvZmlsZW5hbWU+LCBhbmQgYQotICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtcG9reS1saW51eDwvZmlsZW5hbWU+IG1hY2hpbmUgdGFyZ2V0Ci0gICAgICAgICAgICBzeXN0ZW0uCi0gICAgICAgICAgICBGdXJ0aGVybW9yZSwgc3VwcG9zZSB5b3VyIHJlY2lwZSBpcyBuYW1lZAotICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjMuMC5iYjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgd29yayBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvCi0gICAgICAgICAgICBidWlsZCB0aGUgcGFja2FnZSB3b3VsZCBiZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9mb28vMS4zLjAtcjAKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTm93IHRoYXQgeW91IGtub3cgd2hlcmUgdG8gbG9jYXRlIHRoZSBkaXJlY3RvcnkgdGhhdCBoYXMgdGhlCi0gICAgICAgICAgICB0ZW1wb3Jhcnkgc291cmNlIGNvZGUsIHlvdSBjYW4gdXNlIGEgUXVpbHQgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24KLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1hLXF1aWx0LXdvcmtmbG93Jz5Vc2luZyBRdWlsdCBpbiBZb3VyIFdvcmtmbG93PC9saW5rPiIKLSAgICAgICAgICAgIHRvIG1ha2UgeW91ciBlZGl0cywgdGVzdCB0aGUgY2hhbmdlcywgYW5kIHByZXNlcnZlIHRoZSBjaGFuZ2VzIGluCi0gICAgICAgICAgICB0aGUgZm9ybSBvZiBwYXRjaGVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0naW1hZ2UtZGV2ZWxvcG1lbnQtdXNpbmctdG9hc3Rlcic+Ci0gICAgPHRpdGxlPkltYWdlIERldmVsb3BtZW50IFVzaW5nIFRvYXN0ZXI8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgIHN5c3RlbS4KLSAgICAgICAgWW91IGNhbiBpbml0aWF0ZSBidWlsZHMgdXNpbmcgVG9hc3RlciBhcyB3ZWxsIGFzIGV4YW1pbmUgdGhlIHJlc3VsdHMKLSAgICAgICAgYW5kIHN0YXRpc3RpY3Mgb2YgYnVpbGRzLgotICAgICAgICBTZWUgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtaW50cm8nPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPgotICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhbmQgdXNlIFRvYXN0ZXIgdG8gYnVpbGQgaW1hZ2VzLgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9InBsYXRkZXYtYXBwZGV2LWRldnNoZWxsIj4KLSAgICA8dGl0bGU+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiBkZWJ1Z2dpbmcgY2VydGFpbiBjb21tYW5kcyBvciBldmVuIHdoZW4ganVzdCBlZGl0aW5nIHBhY2thZ2VzLAotICAgICAgICA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBjYW4gYmUgYSB1c2VmdWwgdG9vbC4KLSAgICAgICAgV2hlbiB5b3UgaW52b2tlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBhbGwgdGFza3MgdXAgdG8gYW5kCi0gICAgICAgIGluY2x1ZGluZwotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgYXJlIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuCi0gICAgICAgIFRoZW4sIGEgbmV3IHRlcm1pbmFsIGlzIG9wZW5lZCBhbmQgeW91IGFyZSBwbGFjZWQgaW4KLSAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKLSAgICAgICAgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCi0gICAgICAgIEluIHRoZSBuZXcgdGVybWluYWwsIGFsbCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkLXJlbGF0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQotICAgICAgICBzdGlsbCBkZWZpbmVkIHNvIHlvdSBjYW4gdXNlIGNvbW1hbmRzIHN1Y2ggYXMgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LgotICAgICAgICBUaGUgY29tbWFuZHMgZXhlY3V0ZSBqdXN0IGFzIGlmIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdlcmUgZXhlY3V0aW5nIHRoZW0uCi0gICAgICAgIENvbnNlcXVlbnRseSwgd29ya2luZyB0aGlzIHdheSBjYW4gYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIGJ1aWxkIG9yIHByZXBhcmluZwotICAgICAgICBzb2Z0d2FyZSB0byBiZSB1c2VkIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBvbiBhIHRhcmdldCBuYW1lZAotICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+OgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnNoZWxsCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjb21tYW5kIHNwYXducyBhIHRlcm1pbmFsIHdpdGggYSBzaGVsbCBwcm9tcHQgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQuCi0gICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0VfVEVSTUlOQUwnPjxmaWxlbmFtZT5PRV9URVJNSU5BTDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIHNwYXduZWQgdGVybWluYWxzLCB0aGUgZm9sbG93aW5nIG9jY3VyczoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcyB0aGUKLSAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5wa2djb25maWc8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgZmluZCB0aGUgY29ycmVjdAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ucGM8L2ZpbGVuYW1lPiBmaWxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBjb21tYW5kIGZpbmRzIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc2l0ZSBmaWxlcyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuZWNlc3NhcnkgZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaXRoaW4gdGhpcyBlbnZpcm9ubWVudCwgeW91IGNhbiBydW4gY29uZmlndXJlIG9yIGNvbXBpbGUKLSAgICAgICAgY29tbWFuZHMgYXMgaWYgdGhleSB3ZXJlIGJlaW5nIHJ1biBieQotICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCi0gICAgICAgIEFzIG5vdGVkIGVhcmxpZXIsIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBhbHNvIGF1dG9tYXRpY2FsbHkgY2hhbmdlcyB0byB0aGUKLSAgICAgICAgU291cmNlIERpcmVjdG9yeSAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIG1hbnVhbGx5IHJ1biBhIHNwZWNpZmljIHRhc2sgdXNpbmcgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4sCi0gICAgICAgIHJ1biB0aGUgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBzY3JpcHQgaW4KLSAgICAgICAgdGhlCi0gICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3RlbXA8L2ZpbGVuYW1lPgotICAgICAgICBkaXJlY3RvcnkgKGUuZy4sCi0gICAgICAgIDxmaWxlbmFtZT5ydW4uZG9fY29uZmlndXJlLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBpZDwvcmVwbGFjZWFibGU+KS4KLSAgICAgICAgSWYgYSB0YXNrJ3Mgc2NyaXB0IGRvZXMgbm90IGV4aXN0LCB3aGljaCB3b3VsZCBiZSB0aGUgY2FzZSBpZiB0aGUgdGFzayB3YXMKLSAgICAgICAgc2tpcHBlZCBieSB3YXkgb2YgdGhlIHNzdGF0ZSBjYWNoZSwgeW91IGNhbiBjcmVhdGUgdGhlIHRhc2sgYnkgZmlyc3QgcnVubmluZwotICAgICAgICBpdCBvdXRzaWRlIG9mIHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjoKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgPHJlcGxhY2VhYmxlPnRhc2s8L3JlcGxhY2VhYmxlPgotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeGVjdXRpb24gb2YgYSB0YXNrJ3MgPGZpbGVuYW1lPnJ1bi4qPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFuZCBCaXRCYWtlJ3MgZXhlY3V0aW9uIG9mIGEgdGFzayBhcmUgaWRlbnRpY2FsLgotICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgcnVubmluZyB0aGUgc2NyaXB0IHJlLXJ1bnMgdGhlIHRhc2sKLSAgICAgICAgICAgICAgICAgICAganVzdCBhcyBpdCB3b3VsZCBiZSBydW4gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFueSA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgZG9lcyBub3QKLSAgICAgICAgICAgICAgICAgICAgaGF2ZSBhIDxmaWxlbmFtZT4ucGlkPC9maWxlbmFtZT4gZXh0ZW5zaW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgc3ltYm9saWMgbGluayAoc3ltbGluaykgdG8gdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhhdAotICAgICAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFJlbWVtYmVyLCB0aGF0IHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBpcyBhIG1lY2hhbmlzbSB0aGF0IGFsbG93cwotICAgICAgICB5b3UgdG8gZ2V0IGludG8gdGhlIEJpdEJha2UgdGFzayBleGVjdXRpb24gZW52aXJvbm1lbnQuCi0gICAgICAgIEFuZCBhcyBzdWNoLCBhbGwgY29tbWFuZHMgbXVzdCBiZSBjYWxsZWQganVzdCBhcyBCaXRCYWtlIHdvdWxkIGNhbGwgdGhlbS4KLSAgICAgICAgVGhhdCBtZWFucyB5b3UgbmVlZCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIGZvcgotICAgICAgICBjcm9zcy1jb21waWxhdGlvbiBhbmQgc28gZm9ydGggYXMgYXBwbGljYWJsZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBleGl0IHRoZSBzaGVsbAotICAgICAgICBvciBjbG9zZSB0aGUgdGVybWluYWwgd2luZG93LgotICAgIDwvcGFyYT4KLQotICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgSXQgaXMgd29ydGggcmVtZW1iZXJpbmcgdGhhdCB3aGVuIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIHRoZSBmdWxsIGNvbXBpbGVyIG5hbWUgc3VjaCBhcyA8ZmlsZW5hbWU+YXJtLXBva3ktbGludXgtZ251ZWFiaS1nY2M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGluc3RlYWQgb2YganVzdCB1c2luZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhlIHNhbWUgYXBwbGllcyB0byBvdGhlciBhcHBsaWNhdGlvbnMgc3VjaCBhcyA8ZmlsZW5hbWU+YmludXRpbHM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlidG9vbDwvZmlsZW5hbWU+IGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIHNldHMgdXAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1Y2ggYXMgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICB0byBhc3Npc3QgYXBwbGljYXRpb25zLCBzdWNoIGFzIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gdG8gZmluZCB0aGUgY29ycmVjdCB0b29scy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IHN0aWxsIHdvcmtzIG92ZXIKLSAgICAgICAgICAgICAgICBYMTEgZm9yd2FyZGluZyBhbmQgc2ltaWxhciBzaXR1YXRpb25zLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L25vdGU+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSJwbGF0ZGV2LWFwcGRldi1kZXZweXNoZWxsIj4KLSAgICA8dGl0bGU+VXNpbmcgYSBEZXZlbG9wbWVudCBQeXRob24gU2hlbGw8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNpbWlsYXIgdG8gd29ya2luZyB3aXRoaW4gYSBkZXZlbG9wbWVudCBzaGVsbCBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgdGhlIHByZXZpb3VzIHNlY3Rpb24sIHlvdSBjYW4gYWxzbyBzcGF3biBhbmQgd29yayB3aXRoaW4gYW4KLSAgICAgICAgaW50ZXJhY3RpdmUgUHl0aG9uIGRldmVsb3BtZW50IHNoZWxsLgotICAgICAgICBXaGVuIGRlYnVnZ2luZyBjZXJ0YWluIGNvbW1hbmRzIG9yIGV2ZW4gd2hlbiBqdXN0IGVkaXRpbmcgcGFja2FnZXMsCi0gICAgICAgIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4gY2FuIGJlIGEgdXNlZnVsIHRvb2wuCi0gICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+LCBhbGwgdGFza3MgdXAgdG8gYW5kCi0gICAgICAgIGluY2x1ZGluZwotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgYXJlIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuCi0gICAgICAgIFRoZW4gYSBuZXcgdGVybWluYWwgaXMgb3BlbmVkLgotICAgICAgICBBZGRpdGlvbmFsbHksIGtleSBQeXRob24gb2JqZWN0cyBhbmQgY29kZSBhcmUgYXZhaWxhYmxlIGluIHRoZSBzYW1lCi0gICAgICAgIHdheSB0aGV5IGFyZSB0byBCaXRCYWtlIHRhc2tzLCBpbiBwYXJ0aWN1bGFyLCB0aGUgZGF0YSBzdG9yZSAnZCcuCi0gICAgICAgIFNvLCBjb21tYW5kcyBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgYXJlIHVzZWZ1bCB3aGVuIGV4cGxvcmluZyB0aGUgZGF0YQotICAgICAgICBzdG9yZSBhbmQgcnVubmluZyBmdW5jdGlvbnM6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIlNUQUdJTkdfRElSIiwgVHJ1ZSkKLSAgICAgJy9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMnCi0gICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJTVEFHSU5HX0RJUiIsIEZhbHNlKQotICAgICAnJHtUTVBESVJ9L3N5c3Jvb3RzJwotICAgICBweWRldnNoZWxsPiBkLnNldFZhcigiRk9PIiwgImJhciIpCi0gICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJGT08iLCBUcnVlKQotICAgICAnYmFyJwotICAgICBweWRldnNoZWxsPiBkLmRlbFZhcigiRk9PIikKLSAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIkZPTyIsIFRydWUpCi0gICAgIHB5ZGV2c2hlbGw+IGJiLmJ1aWxkLmV4ZWNfZnVuYygiZG9fdW5wYWNrIiwgZCkKLSAgICAgcHlkZXZzaGVsbD4KLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBUaGUgY29tbWFuZHMgZXhlY3V0ZSBqdXN0IGFzIGlmIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdlcmUgZXhlY3V0aW5nIHRoZW0uCi0gICAgICAgIENvbnNlcXVlbnRseSwgd29ya2luZyB0aGlzIHdheSBjYW4gYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIGJ1aWxkIG9yIHByZXBhcmluZwotICAgICAgICBzb2Z0d2FyZSB0byBiZSB1c2VkIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+IG9uIGEgdGFyZ2V0IG5hbWVkCi0gICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT46Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgZGV2cHlzaGVsbAotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCBhbmQgcGxhY2VzIHlvdSBpbiBhbiBpbnRlcmFjdGl2ZQotICAgICAgICBQeXRob24gaW50ZXJwcmV0ZXIgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQuCi0gICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0VfVEVSTUlOQUwnPjxmaWxlbmFtZT5PRV9URVJNSU5BTDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHVzaW5nIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4sIHlvdQotICAgICAgICBjYW4gZXhpdCB0aGUgc2hlbGwgZWl0aGVyIGJ5IHVzaW5nIEN0cmwrZCBvciBjbG9zaW5nIHRoZSB0ZXJtaW5hbAotICAgICAgICB3aW5kb3cuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1uZXdiaWUueG1sCmluZGV4IGFkMzJhYzYuLmEwZmJiNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1uZXdiaWUueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1uZXdiaWUueG1sCkBAIC02LDYzICs2LDEzIEBACiAKIDx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBPcGVuIFNvdXJjZSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CiAKLTxwYXJhPgotICAgIFRoaXMgY2hhcHRlciBoZWxwcyB5b3UgdW5kZXJzdGFuZCB0aGUgWW9jdG8gUHJvamVjdCBhcyBhbiBvcGVuIHNvdXJjZSBkZXZlbG9wbWVudCBwcm9qZWN0LgotICAgIEluIGdlbmVyYWwsIHdvcmtpbmcgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB3b3JraW5nIGluIGEKLSAgICBjbG9zZWQsIHByb3ByaWV0YXJ5IGVudmlyb25tZW50LgotICAgIEFkZGl0aW9uYWxseSwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBzcGVjaWZpYyB0b29scyBhbmQgY29uc3RydWN0cyBhcyBwYXJ0IG9mIGl0cyBkZXZlbG9wbWVudAotICAgIGVudmlyb25tZW50LgotICAgIFRoaXMgY2hhcHRlciBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIG9wZW4gc291cmNlIHBoaWxvc29waHksIHVzaW5nIHRoZQotICAgIFlvY3RvIFByb2plY3QgaW4gYSB0ZWFtIGVudmlyb25tZW50LCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBZb2N0byBQcm9qZWN0Ci0gICAgdGVybXMsIGxpY2Vuc2luZywgdGhlIG9wZW4gc291cmNlIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gR2l0LAotICAgIHdvcmtmbG93cywgYnVnIHRyYWNraW5nLCBhbmQgaG93IHRvIHN1Ym1pdCBjaGFuZ2VzLgotPC9wYXJhPgotCi08c2VjdGlvbiBpZD0nb3Blbi1zb3VyY2UtcGhpbG9zb3BoeSc+Ci0gICAgPHRpdGxlPk9wZW4gU291cmNlIFBoaWxvc29waHk8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE9wZW4gc291cmNlIHBoaWxvc29waHkgaXMgY2hhcmFjdGVyaXplZCBieSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBkaXJlY3RlZCBieSBwZWVyIHByb2R1Y3Rpb24KLSAgICAgICAgYW5kIGNvbGxhYm9yYXRpb24gdGhyb3VnaCBhbiBhY3RpdmUgY29tbXVuaXR5IG9mIGRldmVsb3BlcnMuCi0gICAgICAgIENvbnRyYXN0IHRoaXMgdG8gdGhlIG1vcmUgc3RhbmRhcmQgY2VudHJhbGl6ZWQgZGV2ZWxvcG1lbnQgbW9kZWxzIHVzZWQgYnkgY29tbWVyY2lhbCBzb2Z0d2FyZQotICAgICAgICBjb21wYW5pZXMgd2hlcmUgYSBmaW5pdGUgc2V0IG9mIGRldmVsb3BlcnMgcHJvZHVjZXMgYSBwcm9kdWN0IGZvciBzYWxlIHVzaW5nIGEgZGVmaW5lZCBzZXQKLSAgICAgICAgb2YgcHJvY2VkdXJlcyB0aGF0IHVsdGltYXRlbHkgcmVzdWx0IGluIGFuIGVuZCBwcm9kdWN0IHdob3NlIGFyY2hpdGVjdHVyZSBhbmQgc291cmNlIG1hdGVyaWFsCi0gICAgICAgIGFyZSBjbG9zZWQgdG8gdGhlIHB1YmxpYy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgT3BlbiBzb3VyY2UgcHJvamVjdHMgY29uY2VwdHVhbGx5IGhhdmUgZGlmZmVyaW5nIGNvbmN1cnJlbnQgYWdlbmRhcywgYXBwcm9hY2hlcywgYW5kIHByb2R1Y3Rpb24uCi0gICAgICAgIFRoZXNlIGZhY2V0cyBvZiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjYW4gY29tZSBmcm9tIGFueW9uZSBpbiB0aGUgcHVibGljIChjb21tdW5pdHkpIHRoYXQgaGFzIGEKLSAgICAgICAgc3Rha2UgaW4gdGhlIHNvZnR3YXJlIHByb2plY3QuCi0gICAgICAgIFRoZSBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCBjb250YWlucyBuZXcgY29weXJpZ2h0LCBsaWNlbnNpbmcsIGRvbWFpbiwgYW5kIGNvbnN1bWVyIGlzc3VlcwotICAgICAgICB0aGF0IGRpZmZlciBmcm9tIHRoZSBtb3JlIHRyYWRpdGlvbmFsIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICBJbiBhbiBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCwgdGhlIGVuZCBwcm9kdWN0LCBzb3VyY2UgbWF0ZXJpYWwsIGFuZCBkb2N1bWVudGF0aW9uIGFyZQotICAgICAgICBhbGwgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgYXQgbm8gY29zdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQSBiZW5jaG1hcmsgZXhhbXBsZSBvZiBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZSBMaW51eCBrZXJuZWwsIHdoaWNoIHdhcyBpbml0aWFsbHkgY29uY2VpdmVkCi0gICAgICAgIGFuZCBjcmVhdGVkIGJ5IEZpbm5pc2ggY29tcHV0ZXIgc2NpZW5jZSBzdHVkZW50IExpbnVzIFRvcnZhbGRzIGluIDE5OTEuCi0gICAgICAgIENvbnZlcnNlbHksIGEgZ29vZCBleGFtcGxlIG9mIGEgbm9uLW9wZW4gc291cmNlIHByb2plY3QgaXMgdGhlCi0gICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPldpbmRvd3M8L3RyYWRlbWFyaz4gZmFtaWx5IG9mIG9wZXJhdGluZwotICAgICAgICBzeXN0ZW1zIGRldmVsb3BlZCBieSA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NaWNyb3NvZnQ8L3RyYWRlbWFyaz4gQ29ycG9yYXRpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdpa2lwZWRpYSBoYXMgYSBnb29kIGhpc3RvcmljYWwgZGVzY3JpcHRpb24gb2YgdGhlIE9wZW4gU291cmNlIFBoaWxvc29waHkKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuX3NvdXJjZSc+aGVyZTwvdWxpbms+LgotICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBoZWxwZnVsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTGludXggQ29tbXVuaXR5Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sZG4ubGludXhmb3VuZGF0aW9uLm9yZy9ib29rL2hvdy1wYXJ0aWNpcGF0ZS1saW51eC1jb21tdW5pdHknPmhlcmU8L3VsaW5rPi4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY2hhbmdlcy1jb2xsYWJvcmF0ZSI+Ci0gICAgPHRpdGxlPlVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGluIGEgVGVhbSBFbnZpcm9ubWVudDwvdGl0bGU+CisgICAgPHRpdGxlPlNldHRpbmcgVXAgYSBUZWFtIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgogCiAgICAgPHBhcmE+CiAgICAgICAgIEl0IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBjbGVhciBob3cgeW91IGNhbiB1c2UgdGhlIFlvY3RvCi0gICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGVudmlyb25tZW50LCBvciBzY2FsZSBpdCBmb3IgYSBsYXJnZSB0ZWFtIG9mCi0gICAgICAgIGRldmVsb3BlcnMuCisgICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBzY2FsZSBpdCBmb3IgYSBsYXJnZQorICAgICAgICB0ZWFtIG9mIGRldmVsb3BlcnMuCiAgICAgICAgIE9uZSBvZiB0aGUgc3RyZW5ndGhzIG9mIHRoZSBZb2N0byBQcm9qZWN0IGlzIHRoYXQgaXQgaXMgZXh0cmVtZWx5CiAgICAgICAgIGZsZXhpYmxlLgogICAgICAgICBUaHVzLCB5b3UgY2FuIGFkYXB0IGl0IHRvIG1hbnkgZGlmZmVyZW50IHVzZSBjYXNlcyBhbmQgc2NlbmFyaW9zLgpAQCAtNzEsMTUwNSArMjEsNjE1IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRvIGhlbHAgd2l0aCB0aGVzZSB0eXBlcyBvZiBzaXR1YXRpb25zLCB0aGlzIHNlY3Rpb24gcHJlc2VudHMKLSAgICAgICAgc29tZSBvZiB0aGUgcHJvamVjdCdzIG1vc3Qgc3VjY2Vzc2Z1bCBleHBlcmllbmNlcywKLSAgICAgICAgcHJhY3RpY2VzLCBzb2x1dGlvbnMsIGFuZCBhdmFpbGFibGUgdGVjaG5vbG9naWVzIHRoYXQgd29yayB3ZWxsLgotICAgICAgICBLZWVwIGluIG1pbmQsIHRoZSBpbmZvcm1hdGlvbiBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHNldCB1cCB0aGlzIHR5cGUgb2YgZW52aXJvbm1lbnQsCisgICAgICAgIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHByb2NlZHVyZSB0aGF0IGdpdmVzIHlvdSB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgdG8gbGVhcm4gaG93IHRvIGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KKyAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAorICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQorICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCB3b3JrIHdlbGwuCisgICAgICAgIEtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCiAgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIGl0IGFuZCBjdXN0b21pemUgaXQgdG8gZml0IGFueQogICAgICAgICBwYXJ0aWN1bGFyIHdvcmtpbmcgZW52aXJvbm1lbnQgYW5kIHNldCBvZiBwcmFjdGljZXMuCi0gICAgPC9wYXJhPgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gaXMgR29pbmcgdG8gYmUgRGV2ZWxvcGluZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvIGlzIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nCisgICAgICAgICAgICAgICAgcmVsYXRlZCB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgd2hhdCB0aGVpciByb2xlcyB3b3VsZCBiZS4KKyAgICAgICAgICAgICAgICBNYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGlzIGVzc2VudGlhbCB0byBjb21wbGV0aW5nIHRoZQorICAgICAgICAgICAgICAgIHN0ZXBzIHR3byBhbmQgdGhyZWUsIHdoaWNoIGFyZSB0byBnZXQgeW91ciBlcXVpcG1lbnQgdG9nZXRoZXIKKyAgICAgICAgICAgICAgICBhbmQgc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQncyBoYXJkd2FyZSB0b3BvbG9neS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtc3lzdGVtLWNvbmZpZ3VyYXRpb25zJz4KLSAgICAgICAgPHRpdGxlPlN5c3RlbSBDb25maWd1cmF0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTeXN0ZW1zIGFjcm9zcyBhIGxhcmdlIHRlYW0gc2hvdWxkIG1lZXQgdGhlIG5lZWRzIG9mCi0gICAgICAgICAgICB0d28gdHlwZXMgb2YgZGV2ZWxvcGVyczogdGhvc2Ugd29ya2luZyBvbiB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZiBhbmQgdGhvc2UgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMuCi0gICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGRldmVsb3BlciwgdGhlaXIgd29ya3N0YXRpb25zIG11c3QKLSAgICAgICAgICAgIGJlIGJvdGggcmVhc29uYWJseSBwb3dlcmZ1bCBhbmQgcnVuIExpbnV4LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2Jlc3QtcHJhY3RpY2VzLWFwcGxpY2F0aW9uLWRldmVsb3BtZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBkZXZlbG9wZXJzIHdobyBtYWlubHkgZG8gYXBwbGljYXRpb24gbGV2ZWwgd29yawotICAgICAgICAgICAgICAgIG9uIHRvcCBvZiBhbiBleGlzdGluZyBzb2Z0d2FyZSBzdGFjaywKLSAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgcHJhY3RpY2VzIHRoYXQgd29yayBiZXN0LgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBhIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSwgc2VlCi0gICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWludHJvJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgcm9sZXMgZXhpc3Q6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgZG8gYXBwbGljYXRpb24gbGV2ZWwgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgb24gdG9wIG9mIGFuIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db3JlIFN5c3RlbSBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgZGV2ZWxvcGVycyB3b3JrIG9uIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gaW1hZ2UgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBtYW5hZ2VzIEF1dG9idWlsZGVycyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgTm90IGFsbCBlbnZpcm9ubWVudHMgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IEVuZ2luZWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIGNyZWF0ZXMgYW5kIG1hbmFnZXMgYXV0b21hdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBuZWVkZWQgdG8gZW5zdXJlIGFsbCBhcHBsaWNhdGlvbiBhbmQgY29yZQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGRldmVsb3BtZW50IG1lZXRzIGRlc2lyZWQgcXVhbGl0eSBzdGFuZGFyZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2F0aGVyIHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoZSBzaXplIGFuZCBtYWtlLXVwIG9mIHRoZSB0ZWFtLCBnZXQgdGhlIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgdG9nZXRoZXIuCisgICAgICAgICAgICAgICAgQW55IGRldmVsb3BtZW50LCBidWlsZCwgb3IgdGVzdCBlbmdpbmVlciBzaG91bGQgYmUgdXNpbmcKKyAgICAgICAgICAgICAgICBhIHN5c3RlbSB0aGF0IGlzIHJ1bm5pbmcgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIFN5c3RlbXMsIGluIGdlbmVyYWwsIHNob3VsZCBiZSBoaWdoIHBlcmZvcm1hbmNlIChlLmcuIGR1YWwsCisgICAgICAgICAgICAgICAgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNIGFuZCBwbGVudHkgb2YgZGlzayBzcGFjZSkuCisgICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAorICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCisgICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmQgdGhlIEhhcmR3YXJlIFRvcG9sb2d5IG9mIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IGhvdyBtYW55IGRldmVsb3BlcnMgYW5kIHN1cHBvcnQgZW5naW5lZXJzCisgICAgICAgICAgICAgICAgYXJlIHJlcXVpcmVkLCB5b3UgY2FuIHVuZGVyc3RhbmQgdGhlIHRvcG9sb2d5IG9mIHRoZQorICAgICAgICAgICAgICAgIGhhcmR3YXJlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgbW9kZXJhdGVseSBzaXplZCBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisKKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJ3cml0ZXJub3RlcyI+CisgICAgICAgICAgICAgICAgTmVlZCBmaWd1cmUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBHaXQgYXMgWW91ciBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIChTQ00pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgS2VlcGluZyB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICBjb250cm9sIG9mIGFuIFNDTSBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlCisgICAgICAgICAgICAgICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBhZHZpc2FibGUuCisgICAgICAgICAgICAgICAgT2YgdGhlIFNDTXMgQml0QmFrZSBzdXBwb3J0cywgdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5IHJlY29tbWVuZHMgdXNpbmcKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAorICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKKyAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gc2V0IHVwIEdpdCBzZXJ2aWNlcyBhbmQgY3JlYXRlCisgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gc2VydmVyIHNvZnR3YXJlIGNhbGxlZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycworICAgICAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCisgICAgICAgICAgICAgICAgYWNjZXNzIGNvbnRyb2xzIHRvIHJlcG9zaXRvcmllcyB0aGF0IHlvdSBjYW4gY29udHJvbCBhcyBsaXR0bGUKKyAgICAgICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bworICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6CisgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc2l0YXJhbWMuZ2l0aHViLmNvbS9naXRvbGl0ZS9tYXN0ZXItdG9jLmh0bWwnPlRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBtYXN0ZXIgaW5kZXg8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgdG9waWNzIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdG9wIG9mIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrcy4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKKyAgICAgICAgICAgICAgICB0aGF0IGRvIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIHNvZnR3YXJlIHN0YWNrIGl0c2VsZi4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIGRldmVsb3AgdGhlIGFwcGxpY2F0aW9uIGNvZGUgb24gdG9wIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3JrcyB3ZWxsIGZvciBzbWFsbCBudW1iZXJzIG9mIHJlbGF0aXZlbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZW4gcG9zc2libGUsIHVzZSB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBmb3IgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERQorICAgICAgICAgICAgICAgICAgICAgICAgaXNvbGF0ZWQgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gcG9zc2libGUsIHVzZSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTREsgZGV2ZWxvcG1lbnQgcHJhY3RpY2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPiIuCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+S2VlcCB5b3VyIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEtlZXAgeW91ciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIHVwZGF0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgdGhyb3VnaCBwcm92aXNpb25pbmcgZWl0aGVyIGFzIG5ldwogICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGRvd25sb2FkcyBvciBhcyB1cGRhdGVzIHRocm91Z2ggYSBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgbWVjaGFuaXNtIHVzaW5nIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdXBkYXRlcyB0byBhbiBleGlzdGluZyB0b29sY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgbWVjaGFuaWNzIG9mIGhvdyBhbmQgd2hlbiB0byBkbyB0aGlzIGFyZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbiBmb3IgbG9jYWwgcG9saWN5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNlIG11bHRpcGxlIHRvb2xjaGFpbnMgaW5zdGFsbGVkIGxvY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uIGZvciBsb2NhbCBwb2xpY3kuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIG11bHRpcGxlIHRvb2xjaGFpbnMgaW5zdGFsbGVkIGxvY2FsbHkKICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gZGlmZmVyZW50IGxvY2F0aW9ucyB0byBhbGxvdyBkZXZlbG9wbWVudCBhY3Jvc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy1jb3JlLXN5c3RlbS1kZXZlbG9wbWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q29yZSBTeXN0ZW0gRGV2ZWxvcG1lbnQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgY29yZSBzeXN0ZW0gZGV2ZWxvcG1lbnQsIGl0IGlzIG9mdGVuIGJlc3QgdG8gaGF2ZSB0aGUKLSAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbiB0aGUgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucwotICAgICAgICAgICAgICAgIHNvIGRldmVsb3BlcnMgY2FuIHJ1biB0aGVpciBvd24gYnVpbGRzIGFuZCBkaXJlY3RseQotICAgICAgICAgICAgICAgIHJlYnVpbGQgdGhlIHNvZnR3YXJlIHN0YWNrLgotICAgICAgICAgICAgICAgIFlvdSBzaG91bGQga2VlcCB0aGUgY29yZSBzeXN0ZW0gdW5jaGFuZ2VkIGFzIG11Y2ggYXMKLSAgICAgICAgICAgICAgICBwb3NzaWJsZSBhbmQgZG8geW91ciB3b3JrIGluIGxheWVycyBvbiB0b3Agb2YgdGhlIGNvcmUgc3lzdGVtLgotICAgICAgICAgICAgICAgIERvaW5nIHNvIGdpdmVzIHlvdSBhIGdyZWF0ZXIgbGV2ZWwgb2YgcG9ydGFiaWxpdHkgd2hlbgotICAgICAgICAgICAgICAgIHVwZ3JhZGluZyB0byBuZXcgdmVyc2lvbnMgb2YgdGhlIGNvcmUgc3lzdGVtIG9yIEJvYXJkCi0gICAgICAgICAgICAgICAgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBzaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhIHBhcnRpY3VsYXIKLSAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjb250YWluIHRoZSBwb2xpY3kgY29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMKLSAgICAgICAgICAgICAgICB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgYmVzdCBwcmFjdGljZXMsIHRoZXJlIGV4aXN0cyBhIG51bWJlcgotICAgICAgICAgICAgICAgIG9mIHRpcHMgYW5kIHRyaWNrcyB0aGF0IGNhbiBoZWxwIHNwZWVkIHVwIGNvcmUgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBwcm9qZWN0czoKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKKyAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgZGV2ZWxvcGluZyBpbWFnZXM6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoc3N0YXRlKSBhbW9uZyBncm91cHMgb2YgZGV2ZWxvcGVycyB3aG8gYXJlIG9uIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhc3QgbmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiZXN0IHdheSB0byBzaGFyZSBzc3RhdGUgaXMgdGhyb3VnaCBhCi0gICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrIEZpbGUgU3lzdGVtIChORlMpIHNoYXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHVzZXIgdG8gYnVpbGQgYSBnaXZlbiBjb21wb25lbnQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgdGltZSBjb250cmlidXRlcyB0aGF0IG9iamVjdCB0byB0aGUgc3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgc3Vic2VxdWVudCBidWlsZHMgZnJvbSBvdGhlciBkZXZlbG9wZXJzIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlIHRoZSBvYmplY3QgcmF0aGVyIHRoYW4gcmVidWlsZCBpdCB0aGVtc2VsdmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWx0aG91Z2ggaXQgaXMgcG9zc2libGUgdG8gdXNlIG90aGVyIHByb3RvY29scyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGUgc3VjaCBhcyBIVFRQIGFuZCBGVFAsIHlvdSBzaG91bGQgYXZvaWQgdGhlc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2luZyBIVFRQIGxpbWl0cyB0aGUgc3N0YXRlIHRvIHJlYWQtb25seSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIEZUUCBwcm92aWRlcyBwb29yIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIYXZlIHRoZSBZb2N0byBQcm9qZWN0IGJ1aWxkIHN5c3RlbSBpdHNlbGYgYXZhaWxhYmxlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucyBzbyBkZXZlbG9wZXJzIGNhbiBydW4gdGhlaXIgb3duCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgYW5kIGRpcmVjdGx5IHJlYnVpbGQgdGhlIHNvZnR3YXJlIHN0YWNrLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5IYXZlIGF1dG9idWlsZGVycyBjb250cmlidXRlIHRvIHRoZSBzc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wgc2ltaWxhcmx5IHRvIGhvdyB0aGUgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgY29udHJpYnV0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Jlc3QtcHJhY3RpY2VzLWF1dG9idWlsZGVycyc+QXV0b2J1aWxkZXJzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CdWlsZCBzdGFuZC1hbG9uZSB0YXJiYWxscyB0aGF0IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIiBzeXN0ZW0gcmVxdWlyZW1lbnRzIGlmIGZvciBzb21lIHJlYXNvbgotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucyBkbyBub3QgbWVldCBtaW5pbXVtIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHN1Y2ggYXMgbGF0ZXN0IFB5dGhvbiB2ZXJzaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4sIG9yIG90aGVyIHRvb2xzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbnN0YWxsIGFuZCByZWxvY2F0ZSB0aGUgdGFyYmFsbCBleGFjdGx5IGFzIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgd291bGQgdGhlIHVzdWFsIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGwgZGV2ZWxvcGVycyBjYW4gbWVldCBtaW5pbXVtIHZlcnNpb24gcmVxdWlyZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiBtb3N0IGRpc3RyaWJ1dGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgaGlnaCBwZXJmb3JtYW5jZSBzeXN0ZW1zIGZvciB0ZXN0aW5nIHB1cnBvc2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBkdWFsLCBzaXgtY29yZSBYZW9ucyB3aXRoIDI0IEdieXRlcyBvZiBSQU0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbGVudHkgb2YgZGlzayBzcGFjZSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXJzIGNhbiB1c2UgdGhlc2Ugc3lzdGVtcyBmb3Igd2lkZXIsIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2l2ZSB0ZXN0aW5nIHdoaWxlIHRoZXkgY29udGludWUgdG8gZGV2ZWxvcAotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxseSB1c2luZyB0aGVpciBwcmltYXJ5IGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgS2VlcCB0aGUgY29yZSBzeXN0ZW0gdW5jaGFuZ2VkIGFzIG11Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFuZCBkbyB5b3VyIHdvcmsgaW4gbGF5ZXJzIG9uIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gZ2l2ZXMgeW91IGEgZ3JlYXRlciBsZXZlbCBvZiBwb3J0YWJpbGl0eSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRpbmcgdG8gbmV3IHZlcnNpb25zIG9mIHRoZSBjb3JlIHN5c3RlbSBvciBCb2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVuYWJsZSB0aGUgUFIgU2VydmljZSB3aGVuIHBhY2thZ2UgZmVlZHMKLSAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgaW5jcmVtZW50YWwgd2l0aCBjb250aW51YWxseSBpbmNyZWFzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPlBSPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBzaXR1YXRpb24gb2NjdXJzIHdoZW4geW91IHVzZSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaCBwYWNrYWdlIGZlZWRzIGFuZCB1c2UgYSBzaGFyZWQgc3RhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVuYWJsZSB0aGUgUFIgU2VydmljZSBmb3IgYWxsIHVzZXJzIHdobwotICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBzaGFyZWQgc3RhdGUgcG9vbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBQUiBTZXJ2aWNlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd29ya2luZy13aXRoLWEtcHItc2VydmljZSc+V29ya2luZyBXaXRoIGEgUFIgU2VydmljZTwvbGluaz4iLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHByb2plY3QgYW5kIGNvbnRhaW4gdGhlIHBvbGljeSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZXMgdGhlIHByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy1zb3VyY2UtY29udHJvbC1tYW5hZ2VtZW50Jz4KLSAgICAgICAgPHRpdGxlPlNvdXJjZSBDb250cm9sIE1hbmFnZW1lbnQgKFNDTSk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgS2VlcGluZyB5b3VyCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgotICAgICAgICAgICAgYW5kIGFueSBzb2Z0d2FyZSB5b3UgYXJlIGRldmVsb3BpbmcgdW5kZXIgdGhlCi0gICAgICAgICAgICBjb250cm9sIG9mIGFuIFNDTSBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlCi0gICAgICAgICAgICB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIGFkdmlzYWJsZS4KLSAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZQotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5IHJlY29tbWVuZHMgdXNpbmcKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPi4KLSAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAotICAgICAgICAgICAgYWxsb3dzIHlvdSB0byB3b3JrIHJlbW90ZWx5LCBhbmQgdGhlbiBjb25uZWN0cyBiYWNrIHRvIHRoZQotICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSXQgaXMgcmVsYXRpdmVseSBlYXN5IHRvIHNldCB1cCBHaXQgc2VydmljZXMgYW5kIGNyZWF0ZQotICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmc8L3VsaW5rPiwKLSAgICAgICAgICAgIHdoaWNoIGlzIGJhc2VkIG9uIHNlcnZlciBzb2Z0d2FyZSBjYWxsZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgYmVpbmcgdXNlZCB0byBnZW5lcmF0ZSB0aGUgd2ViIGludGVyZmFjZSB0aGF0IGxldHMgeW91IHZpZXcgdGhlCi0gICAgICAgICAgICByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycwotICAgICAgICAgICAgdXNpbmcgU1NIIGtleXMgYW5kIGFsbG93cyBicmFuY2gtYmFzZWQKLSAgICAgICAgICAgIGFjY2VzcyBjb250cm9scyB0byByZXBvc2l0b3JpZXMgdGhhdCB5b3UgY2FuIGNvbnRyb2wgYXMgbGl0dGxlCi0gICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgVGhlIHNldHVwIG9mIHRoZXNlIHNlcnZpY2VzIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBtYW51YWwuCi0gICAgICAgICAgICBIb3dldmVyLCBzaXRlcyBzdWNoIGFzIHRoZXNlIGV4aXN0IHRoYXQgZGVzY3JpYmUgaG93IHRvIHBlcmZvcm0KLSAgICAgICAgICAgIHNldHVwOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVzIGhvdyB0byBpbnN0YWxsIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG9uIHRoZSBzZXJ2ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9zaXRhcmFtYy5naXRodWIuY29tL2dpdG9saXRlL21hc3Rlci10b2MuaHRtbCc+VGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IG1hc3RlciBpbmRleDwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICBBbGwgdG9waWNzIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHBzOi8vZ2l0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvSW50ZXJmYWNlcyxfZnJvbnRlbmRzLF9hbmRfdG9vbHMnPkludGVyZmFjZXMsIGZyb250ZW5kcywgYW5kIHRvb2xzPC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKLSAgICAgICAgICAgICAgICAgICAgZm9yIEdpdC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2Jlc3QtcHJhY3RpY2VzLWF1dG9idWlsZGVycyc+Ci0gICAgICAgIDx0aXRsZT5BdXRvYnVpbGRlcnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiBhIGRldmVsb3BtZW50IHByb2plY3QuCi0gICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAotICAgICAgICAgICAgdG9nZXRoZXIgYW5kIGNlbnRyYWxseSB0ZXN0ZWQgYW5kIHN1YnNlcXVlbnQgZGVjaXNpb25zIGFib3V0Ci0gICAgICAgICAgICByZWxlYXNlcyBjYW4gYmUgbWFkZS4KLSAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKLSAgICAgICAgICAgIHRlc3Rpbmcgb2Ygc29mdHdhcmUgY29tcG9uZW50cyBhbmQgcmVncmVzc2lvbiBpZGVudGlmaWNhdGlvbgotICAgICAgICAgICAgYW5kIHRyYWNraW5nLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTZWUgIjx1bGluayB1cmw9J2h0dHA6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnJz5Zb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyPC91bGluaz4iCi0gICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgbGlua3MgdG8gYnVpbGRib3QuCi0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICB3b3JrcyB3ZWxsIGluIHRoaXMgcm9sZS4KLSAgICAgICAgICAgIEEgcHVibGljIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCi0gICAgICAgICAgICBwcm9qZWN0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SGlnaGxpZ2h0cyB3aGVuIGNvbW1pdHMgYnJlYWsgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UG9wdWxhdGVzIGFuIHNzdGF0ZSBjYWNoZSBmcm9tIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BlcnMgY2FuIHB1bGwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWxsb3dzIGNvbW1pdCBob29rIHRyaWdnZXJzLAotICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbGxvd3MgdHJpZ2dlcmluZyBvZiBhdXRvbWF0ZWQgaW1hZ2UgYm9vdGluZwotICAgICAgICAgICAgICAgICAgICBhbmQgdGVzdGluZyB1bmRlciB0aGUgUXVpY2tFTVVsYXRvciAoUUVNVSkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAotICAgICAgICAgICAgICAgICAgICBmcm9tLXNjcmF0Y2ggYnVpbGRzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgotICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nIGFuZCBoaXN0b3JpY2FsIHJlZ3Jlc3Npb24gaW52ZXN0aWdhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZXMgb3V0cHV0IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCi0gICAgICAgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIGVmZmljaWVudGx5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtcG9saWNpZXMtYW5kLWNoYW5nZS1mbG93Jz4KLSAgICAgICAgPHRpdGxlPlBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpdHNlbGYgdXNlcyBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUgYW5kIGEKLSAgICAgICAgICAgIHB1bGwgbW9kZWwuCi0gICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCi0gICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKLSAgICAgICAgICAgIG1haW50YWluZXJzIGFyZSByZXNwb25zaWJsZSBmb3Igc3BlY2lmaWMgYXJlYXMgb2YgdGhlIHByb2plY3QKLSAgICAgICAgICAgIGFuZCBhIHNpbmdsZSBtYWludGFpbmVyIGhhbmRsZXMgdGhlIGZpbmFsICJ0b3Atb2YtdHJlZSIgbWVyZ2VzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIGEgbW9yZSBjb2xsZWN0aXZlIHB1c2ggbW9kZWwuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgc3VwcG9ydHMgYm90aCB0aGUKLSAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KLSAgICAgICAgPC9ub3RlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAotICAgICAgICAgICAgdG8gZG9jdW1lbnQgdGhlIHBvbGljeSB1c2VkIGFzIHdlbGwgYXMgYW55IG1haW4gcHJvamVjdAotICAgICAgICAgICAgZ3VpZGVsaW5lcyBzbyB0aGV5IGFyZSB1bmRlcnN0b29kIGJ5IGV2ZXJ5b25lLgotICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAotICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2VzLCB3aGljaCBhcmUgdXN1YWxseSBhIHBhcnQgb2YgYSBwcm9qZWN0J3MKLSAgICAgICAgICAgIGd1aWRlbGluZXMuCi0gICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCi0gICAgICAgICAgICB0cnlpbmcgdG8gdW5kZXJzdGFuZCB3aHkgY2hhbmdlcyB3ZXJlIG1hZGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZSBsYXllciBvZiB0aGUKLSAgICAgICAgICAgIHByb2plY3QsIGl0IGlzIHdvcnRoIHNoYXJpbmcgdGhvc2Ugd2l0aCB0aGUgY29tbXVuaXR5IGFzIHNvb24KLSAgICAgICAgICAgIGFzIHBvc3NpYmxlLgotICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywgc29tZW9uZQotICAgICAgICAgICAgZWxzZSBpbiB0aGUgY29tbXVuaXR5IG5lZWRzIHRoZW0gYWxzby4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy1zdW1tYXJ5Jz4KLSAgICAgICAgPHRpdGxlPlN1bW1hcnk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHN1bW1hcml6ZXMgdGhlIGtleSByZWNvbW1lbmRhdGlvbnMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbnM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSBzb3VyY2UgY29udHJvbCBzeXN0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQotICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciBzaXR1YXRpb24uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZwotICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICBsYXllcnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSB0aGUgcHJvamVjdCdzIE1ldGFkYXRhIGFuZCBjb2RlIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIEdpdCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctc2V0dXAnPkdldHRpbmcgU2V0IFVwPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBsb2NhbCBHaXQKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzIGZvciByZWxhdGVkIHVwc3RyZWFtIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNldCB1cCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlCi0gICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+KQotICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNldCB1cCB0aGUgc3N0YXRlIGNhY2hlIG9uIGEgc3lzdGVtIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgYnkgZGV2ZWxvcGVycyBpbiB0aGUgc2FtZSBvcmdhbml6YXRpb24gYW5kIHNoYXJlIHRoZQotICAgICAgICAgICAgICAgICAgICBzYW1lIHNvdXJjZSBkaXJlY3RvcmllcyBvbiB0aGVpciBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNldCB1cCBhbiBBdXRvYnVpbGRlciBhbmQgaGF2ZSBpdCBwb3B1bGF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgc3N0YXRlIGNhY2hlIGFuZCBzb3VyY2UgZGlyZWN0b3JpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IGNvbW11bml0eSBlbmNvdXJhZ2VzIHlvdQotICAgICAgICAgICAgICAgICAgICB0byBzZW5kIHBhdGNoZXMgdG8gdGhlIHByb2plY3QgdG8gZml4IGJ1Z3Mgb3IgYWRkIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcyBmb3Igd3JpdGluZyBnb29kIGNvbW1pdCBtZXNzYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbmQgY2hhbmdlcyB0byB0aGUgY29yZSBzb29uZXIgdGhhbiBsYXRlcgotICAgICAgICAgICAgICAgICAgICBhcyBvdGhlcnMgYXJlIGxpa2VseSB0byBydW4gaW50byB0aGUgc2FtZSBpc3N1ZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIG1haWxpbmcgbGlzdHMgdG8gdXNlLCBzZWUgdGhlIGxpc3QgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgotICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAotICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgVGhpcyB3ZWItYmFzZWQgc291cmNlIGNvZGUgYnJvd3NlciBpcyBvcmdhbml6ZWQgaW50byBjYXRlZ29yaWVzIGJ5Ci0gICAgICAgIGZ1bmN0aW9uIHN1Y2ggYXMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZAotICAgICAgICBzbyBmb3J0aC4KLSAgICAgICAgRnJvbSB0aGUgaW50ZXJmYWNlLCB5b3UgY2FuIGNsaWNrIG9uIGFueSBwYXJ0aWN1bGFyIGl0ZW0gaW4gdGhlICJOYW1lIgotICAgICAgICBjb2x1bW4gYW5kIHNlZSB0aGUgVVJMIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGhhdCB5b3UgbmVlZCB0byBjbG9uZQotICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGZvciB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KLSAgICAgICAgSGF2aW5nIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCB3aGljaCBpcwotICAgICAgICB1c3VhbGx5IG5hbWVkICJwb2t5IiwgYWxsb3dzCi0gICAgICAgIHlvdSB0byBtYWtlIGNoYW5nZXMsIGNvbnRyaWJ1dGUgdG8gdGhlIGhpc3RvcnksIGFuZCB1bHRpbWF0ZWx5IGVuaGFuY2UKLSAgICAgICAgdGhlIFlvY3RvIFByb2plY3QncyB0b29scywgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcywgYW5kIHNvIGZvcnRoLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgYW55IHN1cHBvcnRlZCByZWxlYXNlIG9mIFlvY3RvIFByb2plY3QsIHlvdSBjYW4gYWxzbyBnbyB0byB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kCi0gICAgICAgIHNlbGVjdCB0aGUgIkRvd25sb2FkcyIgdGFiIGFuZCBnZXQgYSByZWxlYXNlZCB0YXJiYWxsIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb3IgYW55IHN1cHBvcnRlZCBCU1AgdGFyYmFsbHMuCi0gICAgICAgIFVucGFja2luZyB0aGVzZSB0YXJiYWxscyBnaXZlcyB5b3UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsZWFzZWQKLSAgICAgICAgZmlsZXMuCi0gICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIGZvciBzdXBwb3J0ZWQgQlNQcwotICAgICAgICAgICAgICAgICAgICAoZS5nLiwgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikgaXMgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgd29yayBpbiBtYXRjaGluZyBicmFuY2hlcyBmb3IgYm90aAotICAgICAgICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQgQlNQIHJlcG9zaXRvcnkgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgY2hlY2tlZCBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIGNoZWNrb3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggb2YgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJbiBzdW1tYXJ5LCBoZXJlIGlzIHdoZXJlIHlvdSBjYW4gZ2V0IHRoZSBwcm9qZWN0IGZpbGVzIG5lZWRlZCBmb3IgZGV2ZWxvcG1lbnQ6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPjxlbXBoYXNpcz48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczo8L3VsaW5rPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvbnRhaW5zIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgUG9reSBTdXBwb3J0LCBUb29scywgWW9jdG8gTGludXggS2VybmVsLCBhbmQgWW9jdG8KLSAgICAgICAgICAgICAgICBNZXRhZGF0YSBMYXllcnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgbG9jYWwgY29waWVzIG9mIEdpdCByZXBvc2l0b3JpZXMgZm9yIGVhY2ggb2YgdGhlc2UgYXJlYXMuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiAvPgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxhbmNob3IgaWQ9J2luZGV4LWRvd25sb2FkcycgLz48ZW1waGFzaXM+PHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvJz5JbmRleCBvZiAvcmVsZWFzZXM6PC91bGluaz48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgaXMgYW4gaW5kZXggb2YgcmVsZWFzZXMgc3VjaCBhcwotICAgICAgICAgICAgICAgIHRoZSA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPgotICAgICAgICAgICAgICAgIFlvY3RvIFBsdWctaW4sIG1pc2NlbGxhbmVvdXMgc3VwcG9ydCwgUG9reSwgUHNldWRvLCBpbnN0YWxsZXJzIGZvciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLAotICAgICAgICAgICAgICAgIGFuZCBhbGwgcmVsZWFzZWQgdmVyc2lvbnMgb2YgWW9jdG8gUHJvamVjdCBpbiB0aGUgZm9ybSBvZiBpbWFnZXMgb3IgdGFyYmFsbHMuCi0gICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGV4dHJhY3RpbmcgdGhlc2UgZmlsZXMgZG9lcyBub3QgcHJvZHVjZSBhIGxvY2FsIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgYnV0IHJhdGhlciBhIHNuYXBzaG90IG9mIGEgcGFydGljdWxhciByZWxlYXNlIG9yIGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjMuNWluIiAvPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iRG93bmxvYWRzIiBwYWdlIGZvciB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEFjY2VzcyB0aGlzIHBhZ2UgYnkgZ29pbmcgdG8gdGhlIHdlYnNpdGUgYW5kIHRoZW4gc2VsZWN0aW5nCi0gICAgICAgICAgICAgICAgdGhlICJEb3dubG9hZHMiIHRhYi4KLSAgICAgICAgICAgICAgICBUaGlzIHBhZ2UgYWxsb3dzIHlvdSB0byBkb3dubG9hZCBhbnkgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2Ugb3IgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGluIHRhcmJhbGwgZm9ybS4KLSAgICAgICAgICAgICAgICBUaGUgdGFyYmFsbHMgYXJlIHNpbWlsYXIgdG8gdGhvc2UgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvJz5JbmRleCBvZiAvcmVsZWFzZXM6PC91bGluaz4gYXJlYS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBhbiBBdXRvYnVpbGRlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhcmUgb2Z0ZW4gdGhlIGNvcmUgb2YgdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVyZSB0aGF0IGNoYW5nZXMgZnJvbSBpbmRpdmlkdWFsIGRldmVsb3BlcnMgYXJlIGJyb3VnaHQKKyAgICAgICAgICAgICAgICB0b2dldGhlciBhbmQgY2VudHJhbGx5IHRlc3RlZCBhbmQgc3Vic2VxdWVudCBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgICAgICAgICByZWxlYXNlcyBjYW4gYmUgbWFkZS4KKyAgICAgICAgICAgICAgICBBdXRvYnVpbGRlcnMgYWxzbyBhbGxvdyBmb3IgImNvbnRpbnVvdXMgaW50ZWdyYXRpb24iIHN0eWxlCisgICAgICAgICAgICAgICAgdGVzdGluZyBvZiBzb2Z0d2FyZSBjb21wb25lbnRzIGFuZCByZWdyZXNzaW9uIGlkZW50aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgYW5kIHRyYWNraW5nLjwvcGFyYT4KIAotPHNlY3Rpb24gaWQ9J3lvY3RvLXByb2plY3QtdGVybXMnPgotICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFRlcm1zPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8cGFyYT5TZWUgIjx1bGluayB1cmw9J2h0dHA6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnJz5Zb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGxpbmtzIHRvIGJ1aWxkYm90LgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gaGFzIGZvdW5kIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICAgICB3b3JrcyB3ZWxsIGluIHRoaXMgcm9sZS4KKyAgICAgICAgICAgICAgICBBIHB1YmxpYyBleGFtcGxlIG9mIHRoaXMgaXMgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBBdXRvYnVpbGRlcnMsIHdoaWNoIHdlIHVzZSB0byB0ZXN0IHRoZSBvdmVyYWxsIGhlYWx0aCBvZiB0aGUKKyAgICAgICAgICAgICAgICBwcm9qZWN0LjwvcGFyYT4KIAotICAgIDxwYXJhPgotICAgICAgICBGb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHRlcm1zIGFuZCBkZWZpbml0aW9ucyB1c2VycyBuZXcgdG8gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgZW52aXJvbm1lbnQgbWlnaHQgZmluZCBoZWxwZnVsLgotICAgICAgICBXaGlsZSBzb21lIG9mIHRoZXNlIHRlcm1zIGFyZSB1bml2ZXJzYWwsIHRoZSBsaXN0IGluY2x1ZGVzIHRoZW0ganVzdCBpbiBjYXNlOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmQgRmlsZXM6PC9lbXBoYXNpcz4gRmlsZXMgdGhhdCBhcHBlbmQgYnVpbGQgaW5mb3JtYXRpb24gdG8KLSAgICAgICAgICAgICAgICBhIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBhcmUga25vd24gYXMgQml0QmFrZSBhcHBlbmQgZmlsZXMgYW5kIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUgYSBjb3JyZXNwb25kaW5nCi0gICAgICAgICAgICAgICAgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBhcHBlbmQgZmlsZSBhbmQgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZQotICAgICAgICAgICAgICAgIG11c3QgdXNlIHRoZSBzYW1lIHJvb3QgZmlsZW5hbWUuCi0gICAgICAgICAgICAgICAgVGhlIGZpbGVuYW1lcyBjYW4gZGlmZmVyIG9ubHkgaW4gdGhlIGZpbGUgdHlwZSBzdWZmaXggdXNlZCAoZS5nLgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yIG92ZXJyaWRlcyB0aGUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgc2ltaWxhcmx5LW5hbWVkIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGFuIGFwcGVuZCBmaWxlIGluIHVzZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBUZXN0IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICBVc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLCBoaWdoIHBlcmZvcm1hbmNlIHN5c3RlbXMKKyAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCisgICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKKyAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCisgICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KKyAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKKyAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0CisgICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBjYW4gYWxzbyB1c2Ugd2lsZGNhcmQgcGF0dGVybnMgaW4gdGhlaXIgdmVyc2lvbiBudW1iZXJzCi0gICAgICAgICAgICAgICAgICAgIHNvIHRoZXkgY2FuIGJlIGFwcGxpZWQgdG8gbW9yZSB0aGFuIG9uZSB2ZXJzaW9uIG9mIHRoZSB1bmRlcmx5aW5nIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz48ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSB0YXNrIGV4ZWN1dG9yIGFuZCBzY2hlZHVsZXIgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgc3lzdGVtIHRvIGJ1aWxkIGltYWdlcy4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdidWlsZC1kaXJlY3RvcnknPjxlbXBoYXNpcz5CdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBhcmVhIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgICAgIHN5c3RlbSBmb3IgYnVpbGRzLgotICAgICAgICAgICAgICAgIFRoZSBhcmVhIGlzIGNyZWF0ZWQgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZQotICAgICAgICAgICAgICAgIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCB0aGF0IGlzIGZvdW5kIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgKGkuZS4gPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IHdoZW4gY3JlYXRpbmcgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gY3JlYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgeW91cgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiBpcwotICAgICAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGFuZCBsZXQgdGhlIG5hbWUgb2YgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGRlZmF1bHQgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkICRIT01FL3Bva3kKLSAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeSBhbmQgc3BlY2lmaWNhbGx5IG5hbWUgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC1idWlsZHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUKLSAgICAgJCBzb3VyY2UgcG9reS8mT0VfSU5JVF9GSUxFOyB0ZXN0LWJ1aWxkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgZGlyZWN0b3J5IHBhdGggYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IG5hbWUgdGhlIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIHBhdGhuYW1lIG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPllQLSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICRjZCAkSE9NRQotICAgICAkIHNvdXJjZSAkSE9NRS9wb2t5LyZPRV9JTklUX0ZJTEU7ICRIT01FL215YnVpbGRzL1lQLSZQT0tZVkVSU0lPTjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY29udGFpbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGNhbm5vdCBiZSB1bmRlciBORlMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBieSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNhbm5vdCBiZSB1bmRlciBORlMuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgbmVlZCB0aGUgQnVpbGQgRGlyZWN0b3J5IHRvIGJlIHVuZGVyIE5GUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gc2V0IHRoaXMgdXAgYnkgc2V0dGluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UgYSBsb2NhbCBkcml2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGVmZmVjdGl2ZWx5IHNlcGFyYXRlcyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUgQnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPiBGaWxlcyB0aGF0IHByb3ZpZGUgZm9yIGxvZ2ljIGVuY2Fwc3VsYXRpb24KLSAgICAgICAgICAgICAgICBhbmQgaW5oZXJpdGFuY2Ugc28gdGhhdCBjb21tb25seSB1c2VkIHBhdHRlcm5zIGNhbiBiZSBkZWZpbmVkIG9uY2UgYW5kIHRoZW4gZWFzaWx5IHVzZWQKLSAgICAgICAgICAgICAgICBpbiBtdWx0aXBsZSByZWNpcGVzLgotICAgICAgICAgICAgICAgIEZvciByZWZlcmVuY2UgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgY2xhc3Nlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IiBjaGFwdGVyIG9mIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyBlbmQgd2l0aCB0aGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGluIHZhcmlvdXMgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlcyBwcm92aWRlcyBnbG9iYWwgZGVmaW5pdGlvbnMgb2YgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGluCi0gICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICAgICAgY29udGFpbnMgdXNlci1kZWZpbmVkIHZhcmlhYmxlcyB0aGF0IGFmZmVjdCBldmVyeSBidWlsZC4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBkZWZpbmVzIFlvY3RvICJkaXN0cm8iIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdXNlZCBvbmx5IHdoZW4gYnVpbGRpbmcgd2l0aCB0aGlzIHBvbGljeS4KLSAgICAgICAgICAgICAgICBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHdoaWNoCi0gICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiwgZGVmaW5lCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgYXJlIG9ubHkgdXNlZCB3aGVuIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgZm9yIHRoYXQgdGFyZ2V0IChlLmcuIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWNoaW5lL2JlYWdsZWJvbmUuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmaWxlIGRlZmluZXMgdmFyaWFibGVzIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgQVJNIENvcnRleC1BOAotICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkKS4KLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGVzIGVuZCB3aXRoIGEgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpcyBhIGNvbGxlY3Rpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdG9vbHMgYW5kIHV0aWxpdGllcyB0aGF0IHJ1biBvbiBvbmUKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIGFuZCBhbGxvdyB5b3UgdG8gZGV2ZWxvcCBzb2Z0d2FyZSBmb3IgYQotICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQsIG9yIHRhcmdldGVkLCBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xjaGFpbnMgY29udGFpbiBjcm9zcy1jb21waWxlcnMsIGxpbmtlcnMsIGFuZAotICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlcnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCBjcm9zcy1kZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW5zOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgdG9vbGNoYWluIG9ubHkgdXNlZCBieSBhbmQgd2l0aGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlbG9jYXRhYmxlIHRvb2xjaGFpbiB1c2VkIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGJ5IGRldmVsb3BlcnMgd2hlbiBkZXZlbG9waW5nIGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBydW4gb24gYSB0YXJnZXRlZCBkZXZpY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbiBvZiB0aGVzZSB0b29sY2hhaW5zIGlzIHNpbXBsZSBhbmQgYXV0b21hdGVkLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdG9vbGNoYWluIGNvbmNlcHRzIGFzIHRoZXkgYXBwbHkgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIHJlbG9jYXRhYmxlIHRvb2xjaGFpbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkltYWdlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQW4gaW1hZ2UgaXMgYW4gYXJ0aWZhY3Qgb2YgdGhlIEJpdEJha2UgYnVpbGQgcHJvY2VzcyBnaXZlbgotICAgICAgICAgICAgICAgIGEgY29sbGVjdGlvbiBvZiByZWNpcGVzIGFuZCByZWxhdGVkIE1ldGFkYXRhLgotICAgICAgICAgICAgICAgIEltYWdlcyBhcmUgdGhlIGJpbmFyeSBvdXRwdXQgdGhhdCBydW4gb24gc3BlY2lmaWMgaGFyZHdhcmUgb3IKLSAgICAgICAgICAgICAgICBRRU1VIGFuZCBhcmUgdXNlZCBmb3Igc3BlY2lmaWMgdXNlLWNhc2VzLgotICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIHN1cHBvcnRlZCBpbWFnZSB0eXBlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbGF5ZXInPjxlbXBoYXNpcz5MYXllcjo8L2VtcGhhc2lzPiBBIGNvbGxlY3Rpb24gb2YgcmVjaXBlcyByZXByZXNlbnRpbmcgdGhlIGNvcmUsCi0gICAgICAgICAgICAgICAgYSBCU1AsIG9yIGFuIGFwcGxpY2F0aW9uIHN0YWNrLgotICAgICAgICAgICAgICAgIEZvciBhIGRpc2N1c3Npb24gc3BlY2lmaWNhbGx5IG9uIEJTUCBMYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWxheWVycyc+QlNQIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQotICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdtZXRhZGF0YSc+PGVtcGhhc2lzPk1ldGFkYXRhOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIGZpbGVzIHRoYXQgQml0QmFrZSBwYXJzZXMgd2hlbiBidWlsZGluZyBhbiBpbWFnZS4KLSAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBNZXRhZGF0YSBpbmNsdWRlcyByZWNpcGVzLCBjbGFzc2VzLCBhbmQKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLgotICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBrZXJuZWwgKCJrZXJuZWwgTWV0YWRhdGEiKSwKLSAgICAgICAgICAgICAgICBpdCByZWZlcnMgdG8gTWV0YWRhdGEgaW4gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBicmFuY2hlcyBvZiB0aGUga2VybmVsIHNvdXJjZSBHaXQgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdvZS1jb3JlJz48ZW1waGFzaXM+T0UtQ29yZTo8L2VtcGhhc2lzPiBBIGNvcmUgc2V0IG9mIE1ldGFkYXRhIG9yaWdpbmF0aW5nCi0gICAgICAgICAgICAgICAgd2l0aCBPcGVuRW1iZWRkZWQgKE9FKSB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIE9FIGFuZCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBUaGlzIE1ldGFkYXRhIGlzIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYnVpbGQtc3lzdGVtLXRlcm0nPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBzcGVjaWZpYyB0byB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBiYXNlZCBvbiBhbm90aGVyIHByb2plY3Qga25vd24KLSAgICAgICAgICAgICAgICBhcyAiUG9reSIsIHdoaWNoIHVzZXMKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+IGFzIHRoZSB0YXNrCi0gICAgICAgICAgICAgICAgZXhlY3V0b3IuCi0gICAgICAgICAgICAgICAgVGhyb3VnaG91dCB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHNldCwgdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gc2ltcGx5Ci0gICAgICAgICAgICAgICAgYXMgInRoZSBidWlsZCBzeXN0ZW0iLgotICAgICAgICAgICAgICAgIElmIG90aGVyIGJ1aWxkIHN5c3RlbXMsIHN1Y2ggYXMgYSBob3N0IG9yIHRhcmdldCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBhcmUgcmVmZXJlbmNlZCwgdGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhlCi0gICAgICAgICAgICAgICAgZGlmZmVyZW5jZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHNvbWUgaGlzdG9yaWNhbCBpbmZvcm1hdGlvbiBhYm91dCBQb2t5LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Bva3knPlBva3k8L2xpbms+IHRlcm0uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QsIHRoaXMgdGVybSByZWZlcnMgdG8gYQotICAgICAgICAgICAgICAgIHJlY2lwZSdzIHBhY2thZ2VkIG91dHB1dCBwcm9kdWNlZCBieSBCaXRCYWtlIChpLmUuIGEKLSAgICAgICAgICAgICAgICAiYmFrZWQgcmVjaXBlIikuCi0gICAgICAgICAgICAgICAgQSBwYWNrYWdlIGlzIGdlbmVyYWxseSB0aGUgY29tcGlsZWQgYmluYXJpZXMgcHJvZHVjZWQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICByZWNpcGUncyBzb3VyY2VzLgotICAgICAgICAgICAgICAgIFlvdSAiYmFrZSIgc29tZXRoaW5nIGJ5IHJ1bm5pbmcgaXQgdGhyb3VnaCBCaXRCYWtlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLCBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZQotICAgICAgICAgICAgICAgIG1lYW5pbmdzLiAgRm9yIGV4YW1wbGUsIHRoZSBwYWNrYWdlcyByZWZlcnJlZCB0byBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNwYWNrYWdlcyc+VGhlIEJ1aWxkIEhvc3QgUGFja2FnZXM8L3VsaW5rPiIgc2VjdGlvbiBhcmUKLSAgICAgICAgICAgICAgICBjb21waWxlZCBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBMaW51eAotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+QW5vdGhlciBwb2ludCB3b3J0aCBub3RpbmcgaXMgdGhhdCBoaXN0b3JpY2FsbHkgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0LAotICAgICAgICAgICAgICAgIHJlY2lwZXMgd2VyZSByZWZlcnJlZCB0byBhcyBwYWNrYWdlcyAtIHRodXMsIHRoZSBleGlzdGVuY2Ugb2Ygc2V2ZXJhbCBCaXRCYWtlCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseSBtaXMtbmFtZWQsCi0gICAgICAgICAgICAgICAgKGUuZy4gPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPiwgYW5kCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGFja2FnZSBHcm91cHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBcmJpdHJhcnkgZ3JvdXBzIG9mIHNvZnR3YXJlIFJlY2lwZXMuCi0gICAgICAgICAgICAgICAgWW91IHVzZSBwYWNrYWdlIGdyb3VwcyB0byBob2xkIHJlY2lwZXMgdGhhdCwgd2hlbiBidWlsdCwKLSAgICAgICAgICAgICAgICB1c3VhbGx5IGFjY29tcGxpc2ggYSBzaW5nbGUgdGFzay4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYSBwYWNrYWdlIGdyb3VwIGNvdWxkIGNvbnRhaW4gdGhlIHJlY2lwZXMgZm9yIGEKLSAgICAgICAgICAgICAgICBjb21wYW554oCZcyBwcm9wcmlldGFyeSBvciB2YWx1ZS1hZGQgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgT3IsIHRoZSBwYWNrYWdlIGdyb3VwIGNvdWxkIGNvbnRhaW4gdGhlIHJlY2lwZXMgdGhhdCBlbmFibGUKLSAgICAgICAgICAgICAgICBncmFwaGljcy4KLSAgICAgICAgICAgICAgICBBIHBhY2thZ2UgZ3JvdXAgaXMgcmVhbGx5IGp1c3QgYW5vdGhlciByZWNpcGUuCi0gICAgICAgICAgICAgICAgQmVjYXVzZSBwYWNrYWdlIGdyb3VwIGZpbGVzIGFyZSByZWNpcGVzLCB0aGV5IGVuZCB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlbmFtZSBleHRlbnNpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3Bva3knPjxlbXBoYXNpcz5Qb2t5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIHRlcm0gInBva3kiIGNhbiBtZWFuIHNldmVyYWwgdGhpbmdzLgotICAgICAgICAgICAgICAgIEluIGl0cyBtb3N0IGdlbmVyYWwgc2Vuc2UsIGl0IGlzIGFuIG9wZW4tc291cmNlCi0gICAgICAgICAgICAgICAgcHJvamVjdCB0aGF0IHdhcyBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IE9wZW5lZEhhbmQuCi0gICAgICAgICAgICAgICAgV2l0aCBPcGVuZWRIYW5kLCBwb2t5IHdhcyBkZXZlbG9wZWQgb2ZmIG9mIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYmVjb21pbmcgYSBjb21tZXJjaWFsbHkKLSAgICAgICAgICAgICAgICBzdXBwb3J0YWJsZSBidWlsZCBzeXN0ZW0gZm9yIGVtYmVkZGVkIExpbnV4LgotICAgICAgICAgICAgICAgIEFmdGVyIEludGVsIENvcnBvcmF0aW9uIGFjcXVpcmVkIE9wZW5lZEhhbmQsIHRoZQotICAgICAgICAgICAgICAgIHByb2plY3QgcG9reSBiZWNhbWUgdGhlIGJhc2lzIGZvciB0aGUgWW9jdG8gUHJvamVjdCdzCi0gICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcywKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGV4aXN0cyBhcyBhIHNlcGFyYXRlIEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgeW91IGNhbiBjbG9uZSB0byB5aWVsZCBhIGxvY2FsIGNvcHkgb24geW91cgotICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtLgotICAgICAgICAgICAgICAgIFRodXMsICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIGxvY2FsIGNvcHkgb2YgdGhlIFNvdXJjZQotICAgICAgICAgICAgICAgIERpcmVjdG9yeSB1c2VkIGZvciBkZXZlbG9wbWVudCB3aXRoaW4gdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+RmluYWxseSwgInBva3kiIGNhbiByZWZlciB0byB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgKGkuZS4gZGlzdHJpYnV0aW9uKSBjcmVhdGVkIHdoZW4geW91IHVzZSB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IHRvIGJ1aWxkIGFuIGltYWdlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWNpcGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHNldCBvZiBpbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgIEEgcmVjaXBlIGRlc2NyaWJlcyB3aGVyZSB5b3UgZ2V0IHNvdXJjZSBjb2RlLCB3aGljaCBwYXRjaGVzCi0gICAgICAgICAgICAgICAgdG8gYXBwbHksIGhvdyB0byBjb25maWd1cmUgdGhlIHNvdXJjZSwgaG93IHRvIGNvbXBpbGUgaXQgYW5kIHNvIG9uLgotICAgICAgICAgICAgICAgIFJlY2lwZXMgYWxzbyBkZXNjcmliZSBkZXBlbmRlbmNpZXMgZm9yIGxpYnJhcmllcyBvciBmb3Igb3RoZXIKLSAgICAgICAgICAgICAgICByZWNpcGVzLgotICAgICAgICAgICAgICAgIFJlY2lwZXMgcmVwcmVzZW50IHRoZSBsb2dpY2FsIHVuaXQgb2YgZXhlY3V0aW9uLCB0aGUgc29mdHdhcmUKLSAgICAgICAgICAgICAgICB0byBidWlsZCwgdGhlIGltYWdlcyB0byBidWlsZCwgYW5kIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3NvdXJjZS1kaXJlY3RvcnknPjxlbXBoYXNpcz5Tb3VyY2UgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyB0ZXJtIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBjcmVhdGVkIGFzIGEgcmVzdWx0Ci0gICAgICAgICAgICAgICAgb2YgY3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIG9yIGV4cGFuZGluZyBhIHJlbGVhc2VkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gdGFyYmFsbC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGlzIHRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAKLSAgICAgICAgICAgICAgICAgICAgeW91ciBTb3VyY2UgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IG1pZ2h0IGhlYXIgdGhlIHRlcm0gInBva3kgZGlyZWN0b3J5IiB1c2VkIHRvIHJlZmVyCi0gICAgICAgICAgICAgICAgdG8gdGhpcyBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY29udGFpbiBzcGFjZXMuCi0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhhdCB0aGUgU291cmNlIERpcmVjdG9yeSB5b3UgdXNlIGRvZXMgbm90IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlc2UgdHlwZXMgb2YgbmFtZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIFNvdXJjZSBEaXJlY3RvcnkgY29udGFpbnMgQml0QmFrZSwgRG9jdW1lbnRhdGlvbiwKLSAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbmQgb3RoZXIgZmlsZXMgdGhhdCBhbGwgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IGhhdmUgdGhlIFNvdXJjZSBEaXJlY3RvcnkgaW4gcGxhY2Ugb24KLSAgICAgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSBpbiBvcmRlciB0byBkbyBhbnkgZGV2ZWxvcG1lbnQgdXNpbmcKLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAorICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKKyAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCisgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KKyAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCisgICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UKLSAgICAgICAgICAgICAgICBjYW4gbmFtZSB0aGUgcmVwb3NpdG9yeSBhbnl0aGluZyB5b3UgbGlrZS4KLSAgICAgICAgICAgICAgICBUaHJvdWdob3V0IG11Y2ggb2YgdGhlIGRvY3VtZW50YXRpb24sICJwb2t5IgotICAgICAgICAgICAgICAgIGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBmb2xkZXIgb2YgdGhlIGxvY2FsIGNvcHkgb2YKLSAgICAgICAgICAgICAgICB0aGUgcG9reSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSByZXN1bHRzIGluIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hvc2UgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgZm9sZGVyIGlzIGFsc28gbmFtZWQgInBva3kiLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGFyYmFsbCBleHBhbnNpb24KLSAgICAgICAgICAgICAgICB0byBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnksIGlmIHlvdSBkbywgdGhlIHRvcC1sZXZlbAotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGlzIGRlcml2ZWQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWV9UQVJCQUxMOzwvZmlsZW5hbWU+IHJlc3VsdHMgaW4gYQotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3Rvcnkgd2hvc2Ugcm9vdCBmb2xkZXIgaXMgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1k7PC9maWxlbmFtZT4uPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCi0gICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjcmVhdGVkIGJ5IHVucGFja2luZyBhIHJlbGVhc2VkIHRhcmJhbGwgYXMKLSAgICAgICAgICAgICAgICBjb21wYXJlZCB0byBjbG9uaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSB1bnBhY2sgYSB0YXJiYWxsLCB5b3UgaGF2ZSBhbiBleGFjdCBjb3B5IG9mIHRoZSBmaWxlcwotICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSB0aW1lIG9mIHJlbGVhc2UgLSBhIGZpeGVkIHJlbGVhc2UgcG9pbnQuCi0gICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IG1ha2UgdG8geW91ciBsb2NhbCBmaWxlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeQotICAgICAgICAgICAgICAgIGFyZSBvbiB0b3Agb2YgdGhlIHJlbGVhc2UgYW5kIHdpbGwgcmVtYWluIGxvY2FsIG9ubHkuCi0gICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHdoZW4geW91IGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCByZXBvc2l0b3J5IHdpdGgKLSAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkncyBicmFuY2hlcyBhbmQgdGFncy4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGFueSBsb2NhbCBjaGFuZ2VzIHlvdSBtYWtlIHRvIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY2FuIGJlIGxhdGVyIGFwcGxpZWQgdG8gYWN0aXZlIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25jZXB0cyByZWxhdGVkIHRvIEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgYnJhbmNoZXMsIGFuZCB0YWdzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhc2s6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHVuaXQgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlIChlLmcuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGRpc2NvdmVyIHRoYXQgY2hhbmdlcyBhcmUgbmVlZGVkIHRvIHRoZSBjb3JlCisgICAgICAgICAgICAgICAgbGF5ZXIgb2YgdGhlIHByb2plY3QsIGl0IGlzIHdvcnRoIHNoYXJpbmcgdGhvc2Ugd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBjb21tdW5pdHkgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICBDaGFuY2VzIGFyZSBpZiB5b3UgaGF2ZSBkaXNjb3ZlcmVkIHRoZSBuZWVkIGZvciBjaGFuZ2VzLAorICAgICAgICAgICAgICAgIHNvbWVvbmUgZWxzZSBpbiB0aGUgY29tbXVuaXR5IG5lZWRzIHRoZW0gYWxzby4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXBzdHJlYW06PC9lbXBoYXNpcz4gQSByZWZlcmVuY2UgdG8gc291cmNlIGNvZGUgb3IgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICAgICAgdGhhdCBhcmUgbm90IGxvY2FsIHRvIHRoZSBkZXZlbG9wbWVudCBzeXN0ZW0gYnV0IGxvY2F0ZWQgaW4gYSBtYXN0ZXIgYXJlYSB0aGF0IGlzIGNvbnRyb2xsZWQKLSAgICAgICAgICAgICAgICBieSB0aGUgbWFpbnRhaW5lciBvZiB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIGZvciBhIGRldmVsb3BlciB0byB3b3JrIG9uIGEgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlLCB0aGV5IG5lZWQgdG8KLSAgICAgICAgICAgICAgICBmaXJzdCBnZXQgYSBjb3B5IG9mIGl0IGZyb20gYW4gInVwc3RyZWFtIiBzb3VyY2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2xpY2Vuc2luZyc+Ci0gICAgPHRpdGxlPkxpY2Vuc2luZzwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQmVjYXVzZSBvcGVuIHNvdXJjZSBwcm9qZWN0cyBhcmUgb3BlbiB0byB0aGUgcHVibGljLCB0aGV5IGhhdmUgZGlmZmVyZW50IGxpY2Vuc2luZyBzdHJ1Y3R1cmVzIGluIHBsYWNlLgotICAgICAgICBMaWNlbnNlIGV2b2x1dGlvbiBmb3IgYm90aCBPcGVuIFNvdXJjZSBhbmQgRnJlZSBTb2Z0d2FyZSBoYXMgYW4gaW50ZXJlc3RpbmcgaGlzdG9yeS4KLSAgICAgICAgSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRoaXMgaGlzdG9yeSwgeW91IGNhbiBmaW5kIGJhc2ljIGluZm9ybWF0aW9uIGhlcmU6Ci0gICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbi1zb3VyY2VfbGljZW5zZSc+T3BlbiBzb3VyY2UgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlX2xpY2Vuc2UnPkZyZWUgc29mdHdhcmUgbGljZW5zZQotICAgICAgICAgICAgaGlzdG9yeTwvdWxpbms+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEluIGdlbmVyYWwsIHRoZSBZb2N0byBQcm9qZWN0IGlzIGJyb2FkbHkgbGljZW5zZWQgdW5kZXIgdGhlIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLSAgICAgICAgKE1JVCkgTGljZW5zZS4KLSAgICAgICAgTUlUIGxpY2Vuc2luZyBwZXJtaXRzIHRoZSByZXVzZSBvZiBzb2Z0d2FyZSB3aXRoaW4gcHJvcHJpZXRhcnkgc29mdHdhcmUgYXMgbG9uZyBhcyB0aGUKLSAgICAgICAgbGljZW5zZSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoYXQgc29mdHdhcmUuCi0gICAgICAgIE1JVCBpcyBhbHNvIGNvbXBhdGlibGUgd2l0aCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkuCi0gICAgICAgIFBhdGNoZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgZm9sbG93IHRoZSB1cHN0cmVhbSBsaWNlbnNpbmcgc2NoZW1lLgotICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIE1JVCBsaWNlbnNlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwJz5oZXJlPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgR05VIEdQTCA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wJz4KLSAgICAgICAgaGVyZTwvdWxpbms+LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaGVuIHlvdSBidWlsZCBhbiBpbWFnZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCwgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyBhCi0gICAgICAgIGtub3duIGxpc3Qgb2YgbGljZW5zZXMgdG8gZW5zdXJlIGNvbXBsaWFuY2UuCi0gICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGxpc3QgaW4gdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGF0Ci0gICAgICAgIDxmaWxlbmFtZT5tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlczwvZmlsZW5hbWU+LgotICAgICAgICBPbmNlIHRoZSBidWlsZCBjb21wbGV0ZXMsIHRoZSBsaXN0IG9mIGFsbCBsaWNlbnNlcyBmb3VuZCBhbmQgdXNlZCBkdXJpbmcgdGhhdCBidWlsZCBhcmUKLSAgICAgICAga2VwdCBpbiB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+IGF0Ci0gICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2xpY2Vuc2VzPC9maWxlbmFtZT4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIElmIGEgbW9kdWxlIHJlcXVpcmVzIGEgbGljZW5zZSB0aGF0IGlzIG5vdCBpbiB0aGUgYmFzZSBsaXN0LCB0aGUgYnVpbGQgcHJvY2VzcwotICAgICAgICBnZW5lcmF0ZXMgYSB3YXJuaW5nIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgIFRoZXNlIHRvb2xzIG1ha2UgaXQgZWFzaWVyIGZvciBhIGRldmVsb3BlciB0byBiZSBjZXJ0YWluIG9mIHRoZSBsaWNlbnNlcyB3aXRoIHdoaWNoCi0gICAgICAgIHRoZWlyIHNoaXBwZWQgcHJvZHVjdHMgbXVzdCBjb21wbHkuCi0gICAgICAgIEhvd2V2ZXIsIGV2ZW4gd2l0aCB0aGVzZSB0b29scyBpdCBpcyBzdGlsbCB1cCB0byB0aGUgZGV2ZWxvcGVyIHRvIHJlc29sdmUgcG90ZW50aWFsIGxpY2Vuc2luZyBpc3N1ZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBiYXNlIGxpc3Qgb2YgbGljZW5zZXMgdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBTb2Z0d2FyZSBQYWNrYWdlCi0gICAgICAgIERhdGEgRXhjaGFuZ2UgKFNQRFgpIGxpc3QgYW5kIHRoZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlIChPU0kpIHByb2plY3RzLgotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3BkeC5vcmcnPlNQRFggR3JvdXA8L3VsaW5rPiBpcyBhIHdvcmtpbmcgZ3JvdXAgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24KLSAgICAgICAgdGhhdCBtYWludGFpbnMgYSBzcGVjaWZpY2F0aW9uCi0gICAgICAgIGZvciBhIHN0YW5kYXJkIGZvcm1hdCBmb3IgY29tbXVuaWNhdGluZyB0aGUgY29tcG9uZW50cywgbGljZW5zZXMsIGFuZCBjb3B5cmlnaHRzCi0gICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhIHNvZnR3YXJlIHBhY2thZ2UuCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcGVuc291cmNlLm9yZyc+T1NJPC91bGluaz4gaXMgYSBjb3Jwb3JhdGlvbiBkZWRpY2F0ZWQgdG8gdGhlIE9wZW4gU291cmNlCi0gICAgICAgIERlZmluaXRpb24gYW5kIHRoZSBlZmZvcnQgZm9yIHJldmlld2luZyBhbmQgYXBwcm92aW5nIGxpY2Vuc2VzIHRoYXQKLSAgICAgICAgY29uZm9ybSB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbiAoT1NEKS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGUgY29tYmluZWQgU1BEWCBhbmQgT1NJIGxpY2Vuc2VzIHRoYXQgdGhlCi0gICAgICAgIFlvY3RvIFByb2plY3QgdXNlcyBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHlvdXIKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBoZWxwIHlvdSBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cwotICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgYSBwcm9kdWN0IGNyZWF0ZWQgdXNpbmcKLSAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC9saW5rPiIKLSAgICAgICAgc2VjdGlvbi4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdnaXQnPgotICAgIDx0aXRsZT5HaXQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IG1ha2VzIGV4dGVuc2l2ZSB1c2Ugb2YgR2l0LAotICAgICAgICB3aGljaCBpcyBhIGZyZWUsIG9wZW4gc291cmNlIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uCi0gICAgICAgIEdpdCBzdXBwb3J0cyBkaXN0cmlidXRlZCBkZXZlbG9wbWVudCwgbm9uLWxpbmVhciBkZXZlbG9wbWVudCwgYW5kIGNhbiBoYW5kbGUgbGFyZ2UgcHJvamVjdHMuCi0gICAgICAgIEl0IGlzIGJlc3QgdGhhdCB5b3UgaGF2ZSBzb21lIGZ1bmRhbWVudGFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IEdpdCB0cmFja3MgcHJvamVjdHMgYW5kCi0gICAgICAgIGhvdyB0byB3b3JrIHdpdGggR2l0IGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IGZvciBkZXZlbG9wbWVudC4KLSAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgcXVpY2sgb3ZlcnZpZXcgb2YgaG93IEdpdCB3b3JrcyBhbmQgcHJvdmlkZXMgeW91IHdpdGggYSBzdW1tYXJ5Ci0gICAgICAgIG9mIHNvbWUgZXNzZW50aWFsIEdpdCBjb21tYW5kcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gR2l0LCBzZWUKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPjwvdWxpbms+LgotICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGdvIHRvIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb3dubG9hZCc+PC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+Ci0gICAgICAgIDx0aXRsZT5SZXBvc2l0b3JpZXMsIFRhZ3MsIGFuZCBCcmFuY2hlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciBpbiB0aGUgc2VjdGlvbgotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+IiwKLSAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IG1haW50YWlucyBzb3VyY2UgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LgotICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhpcyB3ZWItaW50ZXJmYWNlIG9mIHRoZSByZXBvc2l0b3JpZXMsIGVhY2ggaXRlbSBpcyBhIHNlcGFyYXRlCi0gICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcyB1c2UgYnJhbmNoaW5nIHRlY2huaXF1ZXMgdGhhdCB0cmFjayBjb250ZW50IGNoYW5nZSAobm90IGZpbGVzKQotICAgICAgICAgICAgd2l0aGluIGEgcHJvamVjdCAoZS5nLiBhIG5ldyBmZWF0dXJlIG9yIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbikuCi0gICAgICAgICAgICBDcmVhdGluZyBhIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gcHJvamVjdCBkaXZlcmdlbmNlIGFsbG93cyBmb3IgZXhjZWxsZW50IGhpc3RvcmljYWwKLSAgICAgICAgICAgIGluZm9ybWF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBhbHNvIGFsbG93cyBmb3IgYW4gZW52aXJvbm1lbnQgZnJvbSB3aGljaCB5b3UgY2FuIGRvIGxvdHMgb2YKLSAgICAgICAgICAgIGxvY2FsIGV4cGVyaW1lbnRhdGlvbiBvbiBwcm9qZWN0cyBhcyB5b3UgZGV2ZWxvcCBjaGFuZ2VzIG9yIG5ldyBmZWF0dXJlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQSBHaXQgcmVwb3NpdG9yeSByZXByZXNlbnRzIGFsbCBkZXZlbG9wbWVudCBlZmZvcnRzIGZvciBhIGdpdmVuIHByb2plY3QuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIEdpdCByZXBvc2l0b3J5IDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gY29udGFpbnMgYWxsIGNoYW5nZXMKLSAgICAgICAgICAgIGFuZCBkZXZlbG9wbWVudHMgZm9yIFBva3kgb3ZlciB0aGUgY291cnNlIG9mIGl0cyBlbnRpcmUgbGlmZS4KLSAgICAgICAgICAgIFRoYXQgbWVhbnMgdGhhdCBhbGwgY2hhbmdlcyB0aGF0IG1ha2UgdXAgYWxsIHJlbGVhc2VzIGFyZSBjYXB0dXJlZC4KLSAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG1haW50YWlucyBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGFueSByZXBvc2l0b3J5IGJ5ICJjbG9uaW5nIiBpdCB3aXRoIHRoZSBHaXQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSBhIEdpdCByZXBvc2l0b3J5LCB5b3UgZW5kIHVwIHdpdGggYW4gaWRlbnRpY2FsIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICByZXBvc2l0b3J5IG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBhIGxvY2FsIGNvcHkgb2YgYSByZXBvc2l0b3J5LCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gZGV2ZWxvcCBsb2NhbGx5LgotICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byBjbG9uZSBHaXQgcmVwb3NpdG9yaWVzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1zZXR1cCc+R2V0dGluZyBTZXQgVXA8L2xpbms+IiBzZWN0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEdpdCB0cmFja3MgY29udGVudCBjaGFuZ2UgYW5kCi0gICAgICAgICAgICBub3QgZmlsZXMuCi0gICAgICAgICAgICBHaXQgdXNlcyAiYnJhbmNoZXMiIHRvIG9yZ2FuaXplIGRpZmZlcmVudCBkZXZlbG9wbWVudCBlZmZvcnRzLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgaGFzCi0gICAgICAgICAgICBzZXZlcmFsIGJyYW5jaGVzIHRoYXQgaW5jbHVkZSB0aGUgY3VycmVudAotICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4gYnJhbmNoLCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tYXN0ZXI8L2ZpbGVuYW1lPiBicmFuY2gsIGFuZCBtYW55IGJyYW5jaGVzIGZvciBwYXN0Ci0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBieSBnb2luZyB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKLSAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvaGVhZHMnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiQnJhbmNoIiBoZWFkaW5nLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJyYW5jaGVzIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhcmVhIG9mIGRldmVsb3BtZW50LgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYXN0ZXI8L2ZpbGVuYW1lPiBicmFuY2ggcmVwcmVzZW50cyB0aGUgY3VycmVudCBvciBtb3N0IHJlY2VudAotICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICBBbGwgb3RoZXIgYnJhbmNoZXMgcmVwcmVzZW50IG9mZnNob290cyBvZiB0aGUgPGZpbGVuYW1lPm1hc3RlcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBicmFuY2guCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSwgdGhlIGNvcHkgaGFzIHRoZSBzYW1lIHNldAotICAgICAgICAgICAgb2YgYnJhbmNoZXMgYXMgdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgVGhpcyBtZWFucyB5b3UgY2FuIHVzZSBHaXQgdG8gY3JlYXRlIGEgbG9jYWwgd29ya2luZyBhcmVhIChhbHNvIGNhbGxlZCBhIGJyYW5jaCkKLSAgICAgICAgICAgIHRoYXQgdHJhY2tzIGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoIGZyb20gdGhlIHNvdXJjZSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIGluIG90aGVyIHdvcmRzLCB5b3UgY2FuIGRlZmluZSB5b3VyIGxvY2FsIEdpdCBlbnZpcm9ubWVudCB0byB3b3JrIG9uIGFueSBkZXZlbG9wbWVudAotICAgICAgICAgICAgYnJhbmNoIGluIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgVG8gaGVscCBpbGx1c3RyYXRlLCBoZXJlIGlzIGEgc2V0IG9mIGNvbW1hbmRzIHRoYXQgY3JlYXRlcyBhIGxvY2FsIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IGFuZCB0aGVuIGNyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSBsb2NhbAotICAgICAgICAgICAgR2l0IGJyYW5jaCB0aGF0IHRyYWNrcyB0aGUgWW9jdG8gUHJvamVjdCAmRElTVFJPOyBSZWxlYXNlICgmRElTVFJPX05BTUU7KSBkZXZlbG9wbWVudDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgJCBjZCBwb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB5b3VyIGxvY2FsCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgaXMgInBva3kiIGFuZCB0aGUgbmFtZSBvZiB0aGF0IGxvY2FsIHdvcmtpbmcgYXJlYSAobG9jYWwgYnJhbmNoKQotICAgICAgICAgICAgeW91IGp1c3QgY3JlYXRlZCBhbmQgY2hlY2tlZCBvdXQgaXMgIiZESVNUUk9fTkFNRV9OT19DQVA7Ii4KLSAgICAgICAgICAgIFRoZSBmaWxlcyBpbiB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgbm93IHJlZmxlY3QgdGhlIHNhbWUgZmlsZXMgdGhhdAotICAgICAgICAgICAgYXJlIGluIHRoZSAiJkRJU1RST19OQU1FX05PX0NBUDsiIGRldmVsb3BtZW50IGJyYW5jaCBvZiB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QncyAicG9reSIgdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZCBjaGVja291dCBhCi0gICAgICAgICAgICBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIGJyYW5jaCBuYW1lLAotICAgICAgICAgICAgeW91ciBsb2NhbCBlbnZpcm9ubWVudCBtYXRjaGVzIHRoZSAidGlwIiBvZiB0aGF0IGRldmVsb3BtZW50IGJyYW5jaAotICAgICAgICAgICAgYXQgdGhlIHRpbWUgeW91IGNyZWF0ZWQgeW91ciBsb2NhbCBicmFuY2gsIHdoaWNoIGNvdWxkIGJlCi0gICAgICAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgZmlsZXMgYXQgdGhlIHRpbWUgb2YgYSBzaW1pbGFybHkgbmFtZWQgcmVsZWFzZS4KLSAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBjcmVhdGluZyBhbmQgY2hlY2tpbmcgb3V0IGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uCi0gICAgICAgICAgICB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggbmFtZSBpcyBub3QgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgIGNsb25pbmcgYW5kIGNoZWNraW5nIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoLgotICAgICAgICAgICAgS2VlcCByZWFkaW5nIHRvIHNlZSBob3cgeW91IGNyZWF0ZSBhIGxvY2FsIHNuYXBzaG90IG9mIGEgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgR2l0IHVzZXMgInRhZ3MiIHRvIG1hcmsgc3BlY2lmaWMgY2hhbmdlcyBpbiBhIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBUeXBpY2FsbHksIGEgdGFnIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpYWwgcG9pbnQgc3VjaCBhcyB0aGUgZmluYWwKLSAgICAgICAgICAgIGNoYW5nZSBiZWZvcmUgYSBwcm9qZWN0IGlzIHJlbGVhc2VkLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHRhZ3MgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgcmVwb3NpdG9yeSBieSBnb2luZyB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKLSAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvdGFncyc+Wy4uLl08L3VsaW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBsaW5rIGJlbmVhdGggdGhlICJUYWciIGhlYWRpbmcuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvbWUga2V5IHRhZ3MgYXJlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGl6enktMTIuMC4wPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Zmlkby0xMy4wLjA8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5qZXRocm8tMTQuMC4wPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFRoZXNlIHRhZ3MgcmVwcmVzZW50IFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UgYWxzbyBoYXZlIGFjY2VzcyB0byBhbGwgdGhlCi0gICAgICAgICAgICB0YWdzLgotICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgeW91IGNhbiBjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZyBHaXQgYnJhbmNoIGJhc2VkCi0gICAgICAgICAgICBvbiBhIHRhZyBuYW1lLgotICAgICAgICAgICAgV2hlbiB5b3UgZG8gdGhpcywgeW91IGdldCBhIHNuYXBzaG90IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSB0aGF0IHJlZmxlY3RzCi0gICAgICAgICAgICB0aGUgc3RhdGUgb2YgdGhlIGZpbGVzIHdoZW4gdGhlIGNoYW5nZSB3YXMgbWFkZSBhc3NvY2lhdGVkIHdpdGggdGhhdCB0YWcuCi0gICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNlIGlzIHRvIGNoZWNrb3V0IGEgd29ya2luZyBicmFuY2ggdGhhdCBtYXRjaGVzIGEgc3BlY2lmaWMKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgJCBjZCBwb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IC1iIG15LSZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjsgJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB5b3VyIGxvY2FsIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIEZpbGVzIEdpdCByZXBvc2l0b3J5IGlzIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBBbmQsIHRoZSBuYW1lIG9mIHRoZSBsb2NhbCBicmFuY2ggeW91IGhhdmUgY3JlYXRlZCBhbmQgY2hlY2tlZCBvdXQgaXMKLSAgICAgICAgICAgIDxmaWxlbmFtZT5teS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgZmlsZXMgaW4geW91ciByZXBvc2l0b3J5IG5vdyBleGFjdGx5IG1hdGNoIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87Ci0gICAgICAgICAgICBSZWxlYXNlIHRhZyAoPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBsb2NhbAotICAgICAgICAgICAgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSB0YWcsIHlvdXIgZW52aXJvbm1lbnQgbWF0Y2hlcyBhIHNwZWNpZmljIHBvaW50Ci0gICAgICAgICAgICBpbiB0aW1lIGFuZCBub3QgdGhlIGVudGlyZSBkZXZlbG9wbWVudCBicmFuY2guCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nYmFzaWMtY29tbWFuZHMnPgotICAgICAgICA8dGl0bGU+QmFzaWMgQ29tbWFuZHM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgR2l0IGhhcyBhbiBleHRlbnNpdmUgc2V0IG9mIGNvbW1hbmRzIHRoYXQgbGV0cyB5b3UgbWFuYWdlIGNoYW5nZXMgYW5kIHBlcmZvcm0KLSAgICAgICAgICAgIGNvbGxhYm9yYXRpb24gb3ZlciB0aGUgbGlmZSBvZiBhIHByb2plY3QuCi0gICAgICAgICAgICBDb252ZW5pZW50bHkgdGhvdWdoLCB5b3UgY2FuIG1hbmFnZSB3aXRoIGEgc21hbGwgc2V0IG9mIGJhc2ljIG9wZXJhdGlvbnMgYW5kIHdvcmtmbG93cwotICAgICAgICAgICAgb25jZSB5b3UgdW5kZXJzdGFuZCB0aGUgYmFzaWMgcGhpbG9zb3BoeSBiZWhpbmQgR2l0LgotICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGFuIGV4cGVydCBpbiBHaXQgdG8gYmUgZnVuY3Rpb25hbC4KLSAgICAgICAgICAgIEEgZ29vZCBwbGFjZSB0byBsb29rIGZvciBpbnN0cnVjdGlvbiBvbiBhIG1pbmltYWwgc2V0IG9mIEdpdCBjb21tYW5kcyBpcwotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGRvd25sb2FkIEdpdCwgeW91IGNhbiBkbyBzbwotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Rvd25sb2FkJz5oZXJlPC91bGluaz4sIGFsdGhvdWdoCi0gICAgICAgICAgICBhbnkgcmVhc29uYWJseSBjdXJyZW50IExpbnV4IGRpc3RyaWJ1dGlvbiBzaG91bGQgYWxyZWFkeSBoYXZlIGFuCi0gICAgICAgICAgICBpbnN0YWxsYWJsZSBwYWNrYWdlIGZvciBHaXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyBtdWNoIGFib3V0IEdpdCwgeW91IHNob3VsZCBlZHVjYXRlCi0gICAgICAgICAgICB5b3Vyc2VsZiBieSB2aXNpdGluZyB0aGUgbGlua3MgcHJldmlvdXNseSBtZW50aW9uZWQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBicmllZmx5IGRlc2NyaWJlcyBzb21lIGJhc2ljIEdpdCBvcGVyYXRpb25zIGFzIGEgd2F5IHRvIGdldCBzdGFydGVkLgotICAgICAgICAgICAgQXMgd2l0aCBhbnkgc2V0IG9mIGNvbW1hbmRzLCB0aGlzIGxpc3QgKGluIG1vc3QgY2FzZXMpIHNpbXBseSBzaG93cyB0aGUgYmFzZSBjb21tYW5kIGFuZAotICAgICAgICAgICAgb21pdHMgdGhlIG1hbnkgYXJndW1lbnRzIHRoZXkgc3VwcG9ydC4KLSAgICAgICAgICAgIFNlZSB0aGUgR2l0IGRvY3VtZW50YXRpb24gZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucyBhbmQgc3RyYXRlZ2llcyBvbiBob3cgdG8gdXNlIHRoZXNlIGNvbW1hbmRzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgaW5pdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEluaXRpYWxpemVzIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBHaXQgY29tbWFuZHMgdW5sZXNzIHlvdSBoYXZlIGEgPGZpbGVuYW1lPi5naXQ8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCBjbG9uZSBvZiBhIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBEdXJpbmcgY29sbGFib3JhdGlvbiwgdGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBvbiBlcXVhbCBmb290aW5nIHdpdGggYSBmZWxsb3cKLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVy4oCZcyBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFN0YWdlcyB1cGRhdGVkIGZpbGUgY29udGVudHMKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGluZGV4IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgR2l0IHVzZXMgdG8gdHJhY2sgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3RhZ2UgYWxsIGZpbGVzIHRoYXQgaGF2ZSBjaGFuZ2VkIGJlZm9yZSB5b3UgY2FuIGNvbW1pdCB0aGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjb21taXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBDcmVhdGVzIGEgImNvbW1pdCIgdGhhdCBkb2N1bWVudHMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgeW91IG1hZGUuCi0gICAgICAgICAgICAgICAgICAgIENvbW1pdHMgYXJlIHVzZWQgZm9yIGhpc3RvcmljYWwgcHVycG9zZXMsIGZvciBkZXRlcm1pbmluZyBpZiBhIG1haW50YWluZXIgb2YgYSBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIHdpbGwgYWxsb3cgdGhlIGNoYW5nZSwgYW5kIGZvciB1bHRpbWF0ZWx5IHB1c2hpbmcgdGhlIGNoYW5nZSBmcm9tIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgcHJvamVjdOKAmXMgdXBzdHJlYW0gKG9yIG1hc3RlcikgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwb3J0cyBhbnkgbW9kaWZpZWQgZmlsZXMgdGhhdAotICAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBuZWVkIHRvIGJlIHN0YWdlZCBhbmQgY29tbWl0dGVkLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+IENoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgeW91ciB3b3JraW5nIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGFuYWxvZ291cyB0byAiY2QiLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dCDigJNiPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPndvcmtpbmctYnJhbmNoPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4gQ3JlYXRlcwotICAgICAgICAgICAgICAgICAgICBhIHdvcmtpbmcgYnJhbmNoIG9uIHlvdXIgbG9jYWwgbWFjaGluZSB3aGVyZSB5b3UgY2FuIGlzb2xhdGUgd29yay4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlIGxvY2FsIGJyYW5jaGVzIHdoZW4gYWRkaW5nIHNwZWNpZmljIGZlYXR1cmVzIG9yIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgd2F5IGlmIHlvdSBkbyBub3QgbGlrZSB3aGF0IHlvdSBoYXZlIGRvbmUgeW91IGNhbiBlYXNpbHkgZ2V0IHJpZCBvZiB0aGUgd29yay48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwb3J0cwotICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBsb2NhbCBicmFuY2hlcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgdGVsbHMgeW91IHRoZSBicmFuY2ggaW4gd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgd29ya2luZy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoIC1EPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGVsZXRlcyBhbiBleGlzdGluZyBsb2NhbCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIGEgbG9jYWwgYnJhbmNoIG90aGVyIHRoYW4gdGhlIG9uZSB5b3UgYXJlIGRlbGV0aW5nCi0gICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGRlbGV0ZSA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgcHVsbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJldHJpZXZlcyBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICBmcm9tIGFuIHVwc3RyZWFtIEdpdAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBwbGFjZXMgaXQgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IHVzZSB0aGlzIGNvbW1hbmQgdG8gbWFrZSBzdXJlIHlvdSBhcmUgc3luY2hyb25pemVkIHdpdGggdGhlIHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB5b3UgYXJlIGJhc2luZyBjaGFuZ2VzICguZS5nLiB0aGUgbWFzdGVyIGJyYW5jaCkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byBhbiB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSAoZS5nLiBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5KS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgb2YgdGhlIHByb2plY3QgZHJhd3MgZnJvbSB0aGVzZSByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICAgICAgd2hlbiBhZGRpbmcgY2hhbmdlcyB0byB0aGUgcHJvamVjdOKAmXMgbWFzdGVyIHJlcG9zaXRvcnkgb3IKLSAgICAgICAgICAgICAgICAgICAgb3RoZXIgZGV2ZWxvcG1lbnQgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgbWVyZ2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBDb21iaW5lcyBvciBhZGRzIGNoYW5nZXMgZnJvbSBvbmUKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnJhbmNoIG9mIHlvdXIgcmVwb3NpdG9yeSB3aXRoIGFub3RoZXIgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSwgdGhlIGRlZmF1bHQgYnJhbmNoIGlzIG5hbWVkICJtYXN0ZXIiLgotICAgICAgICAgICAgICAgICAgICBBIHR5cGljYWwgd29ya2Zsb3cgaXMgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGJyYW5jaCBmb3IgaXNvbGF0ZWQgd29yaywgbWFrZSBhbmQgY29tbWl0IHlvdXIKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcywgc3dpdGNoIHRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgbWVyZ2UgdGhlIGNoYW5nZXMgZnJvbSB0aGUgdGVtcG9yYXJ5IGJyYW5jaCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICBsb2NhbCBtYXN0ZXIgYnJhbmNoLCBhbmQgdGhlbiBkZWxldGUgdGhlIHRlbXBvcmFyeSBicmFuY2guPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNoZXJyeS1waWNrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQ2hvb3NlIGFuZCBhcHBseSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBjb21taXRzIGZyb20gb25lIGJyYW5jaCBpbnRvIGFub3RoZXIgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdGltZXMgd2hlbiB5b3UgbWlnaHQgbm90IGJlIGFibGUgdG8gbWVyZ2UgYWxsIHRoZSBjaGFuZ2VzIGluIG9uZSBicmFuY2ggd2l0aAotICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGJ1dCBuZWVkIHRvIHBpY2sgb3V0IGNlcnRhaW4gb25lcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUHJvdmlkZXMgYSBHVUkgdmlldyBvZiB0aGUgYnJhbmNoZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGEgZ29vZCB3YXkgdG8gZ3JhcGhpY2FsbHkgc2VlIHdoZXJlIHRoaW5ncyBoYXZlIGRpdmVyZ2VkIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwb3J0cyBhIGhpc3Rvcnkgb2YgeW91ciBjaGFuZ2VzIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBkaWZmPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gRGlzcGxheXMgbGluZS1ieS1saW5lIGRpZmZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgIGJldHdlZW4geW91ciBsb2NhbCB3b3JraW5nIGZpbGVzIGFuZCB0aGUgc2FtZSBmaWxlcyBpbiB0aGUgdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkgdGhhdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGJyYW5jaCBjdXJyZW50bHkgdHJhY2tzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd3b3JrZmxvd3MnPgotICAgIDx0aXRsZT5Xb3JrZmxvd3M8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIG92ZXJ2aWV3IG9uIHdvcmtmbG93cyB1c2luZyBHaXQuCi0gICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBpbmZvcm1hdGlvbiBjb3ZlcnMgYmFzaWMgcHJhY3RpY2VzIHRoYXQgZGVzY3JpYmUgcm9sZXMgYW5kIGFjdGlvbnMgaW4gYQotICAgICAgICBjb2xsYWJvcmF0aXZlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICBBZ2FpbiwgaWYgeW91IGFyZSBmYW1pbGlhciB3aXRoIHRoaXMgdHlwZSBvZiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgeW91IG1pZ2h0IHdhbnQgdG8ganVzdAotICAgICAgICBza2lwIHRoaXMgc2VjdGlvbi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZmlsZXMgYXJlIG1haW50YWluZWQgdXNpbmcgR2l0IGluIGEgIm1hc3RlciIgYnJhbmNoIHdob3NlIEdpdCBoaXN0b3J5Ci0gICAgICAgIHRyYWNrcyBldmVyeSBjaGFuZ2UgYW5kIHdob3NlIHN0cnVjdHVyZSBwcm92aWRlcyBicmFuY2hlcyBmb3IgYWxsIGRpdmVyZ2luZyBmdW5jdGlvbmFsaXR5LgotICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSBHaXQsIG1hbnkgb3BlbiBzb3VyY2UgcHJvamVjdHMgZG8gc28uCi0gICAgICAgIEZvciB0aGUgWW9jdG8gUHJvamVjdCwgYSBrZXkgaW5kaXZpZHVhbCBjYWxsZWQgdGhlICJtYWludGFpbmVyIiBpcyByZXNwb25zaWJsZSBmb3IgdGhlICJtYXN0ZXIiCi0gICAgICAgIGJyYW5jaCBvZiBhIGdpdmVuIEdpdCByZXBvc2l0b3J5LgotICAgICAgICBUaGUgIm1hc3RlciIgYnJhbmNoIGlzIHRoZSDigJx1cHN0cmVhbeKAnSByZXBvc2l0b3J5IHdoZXJlIHRoZSBmaW5hbCBidWlsZHMgb2YgdGhlIHByb2plY3Qgb2NjdXIuCi0gICAgICAgIFRoZSBtYWludGFpbmVyIGlzIHJlc3BvbnNpYmxlIGZvciBhY2NlcHRpbmcgY2hhbmdlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMgYW5kIGZvcgotICAgICAgICBvcmdhbml6aW5nIHRoZSB1bmRlcmx5aW5nIGJyYW5jaCBzdHJ1Y3R1cmUgdG8gcmVmbGVjdCByZWxlYXNlIHN0cmF0ZWdpZXMgYW5kIHNvIGZvcnRoLgotICAgICAgICA8bm90ZT5Gb3IgaW5mb3JtYXRpb24gb24gZmluZGluZyBvdXQgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciAobWFpbnRhaW5zKQotICAgICAgICAgICAgYSBwYXJ0aWN1bGFyIGFyZWEgb2YgY29kZSwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgcHJvamVjdCBhbHNvIGhhcyBhbiB1cHN0cmVhbSBjb250cmlidXRpb24gR2l0IHJlcG9zaXRvcnkgbmFtZWQKLSAgICAgICAgPGZpbGVuYW1lPnBva3ktY29udHJpYjwvZmlsZW5hbWU+LgotICAgICAgICBZb3UgY2FuIHNlZSBhbGwgdGhlIGJyYW5jaGVzIGluIHRoaXMgcmVwb3NpdG9yeSB1c2luZyB0aGUgd2ViIGludGVyZmFjZQotICAgICAgICBvZiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4gb3JnYW5pemVkCi0gICAgICAgIHdpdGhpbiB0aGUgIlBva3kgU3VwcG9ydCIgYXJlYS4KLSAgICAgICAgVGhlc2UgYnJhbmNoZXMgdGVtcG9yYXJpbHkgaG9sZCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKLSAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCi0gICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAotICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKLSAgICAgICAgcmVwb3NpdG9yeS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZCBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzCi0gICAgICAgIG9mIHRoZSB1cHN0cmVhbSAibWFzdGVyIiBicmFuY2guCi0gICAgICAgIFRoZXNlIHJlcG9zaXRvcmllcyBhcmUgbG9jYWwgdG8gdGhlaXIgZGV2ZWxvcG1lbnQgcGxhdGZvcm1zIGFuZCBhcmUgdXNlZCB0byBkZXZlbG9wIGNoYW5nZXMuCi0gICAgICAgIFdoZW4gYSBkZXZlbG9wZXIgaXMgc2F0aXNmaWVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgb3IgY2hhbmdlLCB0aGV5ICJwdXNoIiB0aGUgY2hhbmdlcwotICAgICAgICB0byB0aGUgYXBwcm9wcmlhdGUgImNvbnRyaWIiIHJlcG9zaXRvcnkuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIERldmVsb3BlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBrZWVwaW5nIHRoZWlyIGxvY2FsIHJlcG9zaXRvcnkgdXAtdG8tZGF0ZSB3aXRoICJtYXN0ZXIiLgotICAgICAgICBUaGV5IGFyZSBhbHNvIHJlc3BvbnNpYmxlIGZvciBzdHJhaWdodGVuaW5nIG91dCBhbnkgY29uZmxpY3RzIHRoYXQgbWlnaHQgYXJpc2Ugd2l0aGluIGZpbGVzCi0gICAgICAgIHRoYXQgYXJlIGJlaW5nIHdvcmtlZCBvbiBzaW11bHRhbmVvdXNseSBieSBtb3JlIHRoYW4gb25lIHBlcnNvbi4KLSAgICAgICAgQWxsIHRoaXMgd29yayBpcyBkb25lIGxvY2FsbHkgb24gdGhlIGRldmVsb3BlcuKAmXMgbWFjaGluZXMgYmVmb3JlIGFueXRoaW5nIGlzIHB1c2hlZCB0byBhCi0gICAgICAgICJjb250cmliIiBhcmVhIGFuZCBleGFtaW5lZCBhdCB0aGUgbWFpbnRhaW5lcuKAmXMgbGV2ZWwuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEEgc29tZXdoYXQgZm9ybWFsIG1ldGhvZCBleGlzdHMgYnkgd2hpY2ggZGV2ZWxvcGVycyBjb21taXQgY2hhbmdlcyBhbmQgcHVzaCB0aGVtIGludG8gdGhlCi0gICAgICAgICJjb250cmliIiBhcmVhIGFuZCBzdWJzZXF1ZW50bHkgcmVxdWVzdCB0aGF0IHRoZSBtYWludGFpbmVyIGluY2x1ZGUgdGhlbSBpbnRvICJtYXN0ZXIiCi0gICAgICAgIFRoaXMgcHJvY2VzcyBpcyBjYWxsZWQg4oCcc3VibWl0dGluZyBhIHBhdGNo4oCdIG9yICJzdWJtaXR0aW5nIGEgY2hhbmdlLiIKLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHN1Ym1pdHRpbmcgcGF0Y2hlcyBhbmQgY2hhbmdlcywgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iIHNlY3Rpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIHN1bW1hcml6ZSB0aGUgZW52aXJvbm1lbnQ6ICBhIHNpbmdsZSBwb2ludCBvZiBlbnRyeSBleGlzdHMgZm9yCi0gICAgICAgIGNoYW5nZXMgaW50byB0aGUgcHJvamVjdOKAmXMgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwKLSAgICAgICAgd2hpY2ggaXMgY29udHJvbGxlZCBieSB0aGUgcHJvamVjdOKAmXMgbWFpbnRhaW5lci4KLSAgICAgICAgQW5kLCBhIHNldCBvZiBkZXZlbG9wZXJzIGV4aXN0IHdobyBpbmRlcGVuZGVudGx5IGRldmVsb3AsIHRlc3QsIGFuZAotICAgICAgICBzdWJtaXQgY2hhbmdlcyB0byAiY29udHJpYiIgYXJlYXMgZm9yIHRoZSBtYWludGFpbmVyIHRvIGV4YW1pbmUuCi0gICAgICAgIFRoZSBtYWludGFpbmVyIHRoZW4gY2hvb3NlcyB3aGljaCBjaGFuZ2VzIGFyZSBnb2luZyB0byBiZWNvbWUgYQotICAgICAgICBwZXJtYW5lbnQgcGFydCBvZiB0aGUgcHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSIzaW4iIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hpbGUgZWFjaCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBpcyB1bmlxdWUsIHRoZXJlIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIG9yIG1ldGhvZHMKLSAgICAgICAgdGhhdCBoZWxwIGRldmVsb3BtZW50IHJ1biBzbW9vdGhseS4KLSAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyBzb21lIG9mIHRoZXNlIHByYWN0aWNlcy4KLSAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgR2l0IHdvcmtmbG93cywgc2VlIHRoZSB3b3JrZmxvdyB0b3BpY3MgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9ib29rLmdpdC1zY20uY29tJz5HaXQgQ29tbXVuaXR5IEJvb2s8L3VsaW5rPi4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBTbWFsbCBDaGFuZ2VzOjwvZW1waGFzaXM+IEl0IGlzIGJlc3QgdG8ga2VlcCB0aGUgY2hhbmdlcyB5b3UgY29tbWl0Ci0gICAgICAgICAgICAgICAgc21hbGwgYXMgY29tcGFyZWQgdG8gYnVuZGxpbmcgbWFueSBkaXNwYXJhdGUgY2hhbmdlcyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIG5vdCBvbmx5IGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGJ1dCBhbHNvIGFsbG93cyB0aGUgbWFpbnRhaW5lcgotICAgICAgICAgICAgICAgIHRvIG1vcmUgZWFzaWx5IGluY2x1ZGUgb3IgcmVmdXNlIGNoYW5nZXMuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIGFsc28gZ29vZCBwcmFjdGljZSB0byBsZWF2ZSB0aGUgcmVwb3NpdG9yeSBpbiBhIHN0YXRlIHRoYXQgYWxsb3dzIHlvdSB0bwotICAgICAgICAgICAgICAgIHN0aWxsIHN1Y2Nlc3NmdWxseSBidWlsZCB5b3VyIHByb2plY3QuICBJbiBvdGhlciB3b3JkcywgZG8gbm90IGNvbW1pdCBoYWxmIG9mIGEgZmVhdHVyZSwKLSAgICAgICAgICAgICAgICB0aGVuIGFkZCB0aGUgb3RoZXIgaGFsZiBhcyBhIHNlcGFyYXRlLCBsYXRlciBjb21taXQuCi0gICAgICAgICAgICAgICAgRWFjaCBjb21taXQgc2hvdWxkIHRha2UgeW91IGZyb20gb25lIGJ1aWxkYWJsZSBwcm9qZWN0IHN0YXRlIHRvIGFub3RoZXIKLSAgICAgICAgICAgICAgICBidWlsZGFibGUgc3RhdGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzZSBCcmFuY2hlcyBMaWJlcmFsbHk6PC9lbXBoYXNpcz4gSXQgaXMgdmVyeSBlYXN5IHRvIGNyZWF0ZSwgdXNlLCBhbmQKLSAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWwgYnJhbmNoZXMgaW4geW91ciB3b3JraW5nIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gbmFtZSB0aGVzZSBicmFuY2hlcyBhbnl0aGluZyB5b3UgbGlrZS4KLSAgICAgICAgICAgICAgICBJdCBpcyBoZWxwZnVsIHRvIGdpdmUgdGhlbSBuYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhcnRpY3VsYXIgZmVhdHVyZSBvciBjaGFuZ2UKLSAgICAgICAgICAgICAgICBvbiB3aGljaCB5b3UgYXJlIHdvcmtpbmcuCi0gICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIGRvbmUgd2l0aCBhIGZlYXR1cmUgb3IgY2hhbmdlIGFuZCBoYXZlIG1lcmdlZCBpdAotICAgICAgICAgICAgICAgIGludG8geW91ciBsb2NhbCBtYXN0ZXIgYnJhbmNoLCBzaW1wbHkgZGlzY2FyZCB0aGUgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgYnJhbmNoLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXJnZSBDaGFuZ2VzOjwvZW1waGFzaXM+IFRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kIGFsbG93cyB5b3UgdG8gdGFrZSB0aGUKLSAgICAgICAgICAgICAgICBjaGFuZ2VzIGZyb20gb25lIGJyYW5jaCBhbmQgZm9sZCB0aGVtIGludG8gYW5vdGhlciBicmFuY2guCi0gICAgICAgICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIG1vcmUgdGhhbiBhIHNpbmdsZSBkZXZlbG9wZXIgbWlnaHQgYmUgd29ya2luZwotICAgICAgICAgICAgICAgIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgc2FtZSBmZWF0dXJlLgotICAgICAgICAgICAgICAgIE1lcmdpbmcgY2hhbmdlcyBhbHNvIGF1dG9tYXRpY2FsbHkgaWRlbnRpZmllcyBhbnkgY29sbGlzaW9ucyBvciAiY29uZmxpY3RzIgotICAgICAgICAgICAgICAgIHRoYXQgbWlnaHQgaGFwcGVuIGFzIGEgcmVzdWx0IG9mIHRoZSBzYW1lIGxpbmVzIG9mIGNvZGUgYmVpbmcgYWx0ZXJlZCBieSB0d28gZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcGVycy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFuYWdlIEJyYW5jaGVzOjwvZW1waGFzaXM+IEJlY2F1c2UgYnJhbmNoZXMgYXJlIGVhc3kgdG8gdXNlLCB5b3Ugc2hvdWxkCi0gICAgICAgICAgICAgICAgdXNlIGEgc3lzdGVtIHdoZXJlIGJyYW5jaGVzIGluZGljYXRlIHZhcnlpbmcgbGV2ZWxzIG9mIGNvZGUgcmVhZGluZXNzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGhhdmUgYSAid29yayIgYnJhbmNoIHRvIGRldmVsb3AgaW4sIGEgInRlc3QiIGJyYW5jaCB3aGVyZSB0aGUgY29kZSBvcgotICAgICAgICAgICAgICAgIGNoYW5nZSBpcyB0ZXN0ZWQsIGEgInN0YWdlIiBicmFuY2ggd2hlcmUgY2hhbmdlcyBhcmUgcmVhZHkgdG8gYmUgY29tbWl0dGVkLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgQXMgeW91ciBwcm9qZWN0IGRldmVsb3BzLCB5b3UgY2FuIG1lcmdlIGNvZGUgYWNyb3NzIHRoZSBicmFuY2hlcyB0byByZWZsZWN0IGV2ZXItaW5jcmVhc2luZwotICAgICAgICAgICAgICAgIHN0YWJsZSBzdGF0ZXMgb2YgdGhlIGRldmVsb3BtZW50LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgUHVzaCBhbmQgUHVsbDo8L2VtcGhhc2lzPiBUaGUgcHVzaC1wdWxsIHdvcmtmbG93IGlzIGJhc2VkIG9uIHRoZQotICAgICAgICAgICAgICAgIGNvbmNlcHQgb2YgZGV2ZWxvcGVycyAicHVzaGluZyIgbG9jYWwgY29tbWl0cyB0byBhIHJlbW90ZSByZXBvc2l0b3J5LCB3aGljaCBpcwotICAgICAgICAgICAgICAgIHVzdWFsbHkgYSBjb250cmlidXRpb24gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGlzIGFsc28gYmFzZWQgb24gZGV2ZWxvcGVycyAicHVsbGluZyIga25vd24gc3RhdGVzIG9mIHRoZSBwcm9qZWN0IGRvd24gaW50byB0aGVpcgotICAgICAgICAgICAgICAgIGxvY2FsIGRldmVsb3BtZW50IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBUaGUgd29ya2Zsb3cgZWFzaWx5IGFsbG93cyB5b3UgdG8gcHVsbCBjaGFuZ2VzIHN1Ym1pdHRlZCBieSBvdGhlciBkZXZlbG9wZXJzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgdXBzdHJlYW0gcmVwb3NpdG9yeSBpbnRvIHlvdXIgd29yayBhcmVhIGVuc3VyaW5nIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHNvZnR3YXJlCi0gICAgICAgICAgICAgICAgb24gd2hpY2ggdG8gZGV2ZWxvcC4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgdHdvIHNjcmlwdHMgbmFtZWQgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiB0aGF0IHNoaXAgd2l0aCB0aGUgcmVsZWFzZSB0byBmYWNpbGl0YXRlIHRoaXMKLSAgICAgICAgICAgICAgICB3b3JrZmxvdy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXZlbG9wbWVudCBFbnZpcm9ubWVudCBTdW1tYXJ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgc3RlcHMsIHNvbWUgYmVzdCBwcmFjdGljZXMgZXhpc3QKKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNYWludGFpbiB5b3VyIE1ldGFkYXRhIGluIGxheWVycyB0aGF0IG1ha2Ugc2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSB0aGUgcHJvamVjdCdzIE1ldGFkYXRhIGFuZCBjb2RlIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSBHaXQgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGxvY2FsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzIGZvciByZWxhdGVkIHVwc3RyZWFtIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgaXQgbWFrZXMgc2Vuc2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2V0IHVwIHRoZSBzc3RhdGUgY2FjaGUgb24gYSBzeXN0ZW0gdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGV2ZWxvcGVycyBpbiB0aGUgc2FtZSBvcmdhbml6YXRpb24gYW5kIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBzb3VyY2UgZGlyZWN0b3JpZXMgb24gdGhlaXIgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIGFuIEF1dG9idWlsZGVyIGFuZCBoYXZlIGl0IHBvcHVsYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3N0YXRlIGNhY2hlIGFuZCBzb3VyY2UgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGVuY291cmFnZXMgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB0byBzZW5kIHBhdGNoZXMgdG8gdGhlIHByb2plY3QgdG8gZml4IGJ1Z3Mgb3IgYWRkIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIHN1Ym1pdCBwYXRjaGVzLCBmb2xsb3cgdGhlIHByb2plY3QgY29tbWl0CisgICAgICAgICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIGZvciB3cml0aW5nIGdvb2QgY29tbWl0IG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgY2hhbmdlcyB0byB0aGUgY29yZSBzb29uZXIgdGhhbiBsYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgb3RoZXJzIGFyZSBsaWtlbHkgdG8gcnVuIGludG8gdGhlIHNhbWUgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNvbWUgZ3VpZGFuY2Ugb24gbWFpbGluZyBsaXN0cyB0byB1c2UsIHNlZSB0aGUgbGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYXRjaCBXb3JrZmxvdzo8L2VtcGhhc2lzPiBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZQotICAgICAgICAgICAgICAgIG1haW50YWluZXIgdGhyb3VnaCBhbiBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UgY29uc2lkZXJlZAotICAgICAgICAgICAgICAgIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuIHNlbmQgdGhlIGVtYWlsIHVzaW5nIHRoZSBHaXQgY29tbWFuZHMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3RyYWNraW5nLWJ1Z3MnPgotICAgIDx0aXRsZT5UcmFja2luZyBCdWdzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGl0cyBvd24gaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5idWd6aWxsYS5vcmcvYWJvdXQvJz5CdWd6aWxsYTwvdWxpbms+IHRvIHRyYWNrIGJ1Z3MuCi0gICAgICAgIEltcGxlbWVudGF0aW9ucyBvZiBCdWd6aWxsYSB3b3JrIHdlbGwgZm9yIGdyb3VwIGRldmVsb3BtZW50IGJlY2F1c2UgdGhleSB0cmFjayBidWdzIGFuZCBjb2RlCi0gICAgICAgIGNoYW5nZXMsIGNhbiBiZSB1c2VkIHRvIGNvbW11bmljYXRlIGNoYW5nZXMgYW5kIHByb2JsZW1zIHdpdGggZGV2ZWxvcGVycywgY2FuIGJlIHVzZWQgdG8KLSAgICAgICAgc3VibWl0IGFuZCByZXZpZXcgcGF0Y2hlcywgYW5kIGNhbiBiZSB1c2VkIHRvIG1hbmFnZSBxdWFsaXR5IGFzc3VyYW5jZS4KLSAgICAgICAgVGhlIGhvbWUgcGFnZSBmb3IgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YgQnVnemlsbGEgaXMKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPiZZT0NUT19CVUdaSUxMQV9VUkw7PC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNvbWV0aW1lcyBpdCBpcyBoZWxwZnVsIHRvIHN1Ym1pdCwgaW52ZXN0aWdhdGUsIG9yIHRyYWNrIGEgYnVnIGFnYWluc3QgdGhlIFlvY3RvIFByb2plY3QgaXRzZWxmCi0gICAgICAgIHN1Y2ggYXMgd2hlbiBkaXNjb3ZlcmluZyBhbiBpc3N1ZSB3aXRoIHNvbWUgY29tcG9uZW50IG9mIHRoZSBidWlsZCBzeXN0ZW0gdGhhdCBhY3RzIGNvbnRyYXJ5Ci0gICAgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9yIHlvdXIgZXhwZWN0YXRpb25zLgotICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGdlbmVyYWwgcHJvY2VkdXJlIGZvciBzdWJtaXR0aW5nIGEgbmV3IGJ1ZyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICBCdWd6aWxsYS4KLSAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gZGVmZWN0IG1hbmFnZW1lbnQsIGJ1ZyB0cmFja2luZywgYW5kIGZlYXR1cmUgcmVxdWVzdAotICAgICAgICBwcm9jZXNzZXMgYWxsIGFjY29tcGxpc2hlZCB0aHJvdWdoIHRoZSBZb2N0byBQcm9qZWN0IEJ1Z3ppbGxhIG9uIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz53aWtpIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFsd2F5cyB1c2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YgQnVnemlsbGEgdG8gc3VibWl0Ci0gICAgICAgICAgICAgICAgYSBidWcuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hlbiBzdWJtaXR0aW5nIGEgbmV3IGJ1ZywgYmUgc3VyZSB0byBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24sIFByb2R1Y3QsIGFuZCBDb21wb25lbnQgZm9yIHdoaWNoIHRoZSBpc3N1ZSB3YXMgZm91bmQuCi0gICAgICAgICAgICAgICAgRGVmZWN0cyBmb3IgdGhlIFlvY3RvIFByb2plY3QgZmFsbCBpbnRvIG9uZSBvZiBzZXZlbiBjbGFzc2lmaWNhdGlvbnM6Ci0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBDb21wb25lbnRzLCBJbmZyYXN0cnVjdHVyZSwgQnVpbGQgU3lzdGVtICZhbXA7IE1ldGFkYXRhLAotICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24sIFFBL1Rlc3RpbmcsIFJ1bnRpbWUgYW5kIEhhcmR3YXJlLgotICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgQ2xhc3NpZmljYXRpb25zIGJyZWFrIGRvd24gaW50byBtdWx0aXBsZSBQcm9kdWN0cyBhbmQsIGluIHNvbWUKLSAgICAgICAgICAgICAgICBjYXNlcywgbXVsdGlwbGUgQ29tcG9uZW50cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgdGhlIGJ1ZyBmb3JtIHRvIGNob29zZSB0aGUgY29ycmVjdCBIYXJkd2FyZSBhbmQgQXJjaGl0ZWN0dXJlCi0gICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBidWcgYXBwbGllcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbmRpY2F0ZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHlvdSB3ZXJlIHVzaW5nIHdoZW4gdGhlIGlzc3VlCi0gICAgICAgICAgICAgICAgb2NjdXJyZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QmUgc3VyZSB0byBpbmRpY2F0ZSB0aGUgU2V2ZXJpdHkgb2YgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBTZXZlcml0eSBjb21tdW5pY2F0ZXMgaG93IHRoZSBidWcgaW1wYWN0ZWQgeW91ciB3b3JrLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgIkRvY3VtZW50YXRpb24gY2hhbmdlIiBpdGVtCi0gICAgICAgICAgICAgICAgZm9yIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgRml4aW5nIGEgYnVnIG1heSBvciBtYXkgbm90IGFmZmVjdCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHJvdmlkZSBhIGJyaWVmIHN1bW1hcnkgb2YgdGhlIGlzc3VlLgotICAgICAgICAgICAgICAgIFRyeSB0byBsaW1pdCB5b3VyIHN1bW1hcnkgdG8ganVzdCBhIGxpbmUgb3IgdHdvIGFuZCBiZSBzdXJlIHRvIGNhcHR1cmUgdGhlCi0gICAgICAgICAgICAgICAgZXNzZW5jZSBvZiB0aGUgaXNzdWUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBpc3N1ZS4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBhYm91dCB0aGUgY29udGV4dCwgYmVoYXZpb3IsIG91dHB1dCwKLSAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGlzc3VlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZXZlbiBhdHRhY2ggc3VwcG9ydGluZyBmaWxlcyBmb3Igb3V0cHV0IGZyb20gbG9ncyBieQotICAgICAgICAgICAgICAgIHVzaW5nIHRoZSAiQWRkIGFuIGF0dGFjaG1lbnQiIGJ1dHRvbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CZSBzdXJlIHRvIGNvcHkgdGhlIGFwcHJvcHJpYXRlIHBlb3BsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAiQ0MgTGlzdCIgZm9yIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgZmluZGluZyBvdXQgd2hvIGlzIHJlc3BvbnNpYmxlCi0gICAgICAgICAgICAgICAgZm9yIGNvZGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3VibWl0IHRoZSBidWcgYnkgY2xpY2tpbmcgdGhlICJTdWJtaXQgQnVnIiBidXR0b24uPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCis8c2VjdGlvbiBpZD0nc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz4KKyAgICA8dGl0bGU+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBVc2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5idWd6aWxsYS5vcmcvYWJvdXQvJz5CdWd6aWxsYTwvdWxpbms+CisgICAgICAgIHRvIHN1Ym1pdCBhIGRlZmVjdCAoYnVnKSBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1idWd0cmFja2VyJz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RlcHMgdG8gc3VibWl0IGEgYnVnIgorCisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBPcGVuIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCisgICAgICAgICAgICAgICAgIkNvbXBvbmVudCIgZm9yIHdoaWNoIHRoZSBidWcgd2FzIGZvdW5kLgorICAgICAgICAgICAgICAgIEJ1Z3MgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZhbGwgaW50byBvbmUgb2Ygc2V2ZXJhbAorICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAorICAgICAgICAgICAgICAgIHByb2R1Y3RzIGFuZCBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgYSBidWcgYWdhaW5zdCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCisgICAgICAgICAgICAgICAgIkJ1aWxkIFN5c3RlbSwgTWV0YWRhdGEgJmFtcDsgUnVudGltZSIsICJCU1BzIiwgYW5kCisgICAgICAgICAgICAgICAgImJzcHMtbWV0YS1pbnRlbCIsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJWZXJzaW9uIiBvZiB0aGUgWW9jdG8gUHJvamVjdCBmb3Igd2hpY2ggeW91IGZvdW5kCisgICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICBUaGUgc2V2ZXJpdHkgaW5kaWNhdGVzIGhvdyB0aGUgYnVnIGltcGFjdGVkIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJIYXJkd2FyZSIgdGhhdCB0aGUgYnVnIGltcGFjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiQXJjaGl0ZWN0dXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDaG9vc2UgYSAiRG9jdW1lbnRhdGlvbiBjaGFuZ2UiIGl0ZW0gZm9yIHRoZSBidWcuCisgICAgICAgICAgICAgICAgRml4aW5nIGEgYnVnIG1pZ2h0IG9yIG1pZ2h0IG5vdCBhZmZlY3QgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5zdXJlIG9mIHRoZSBpbXBhY3QgdG8gdGhlIGRvY3VtZW50YXRpb24sIHNlbGVjdAorICAgICAgICAgICAgICAgICJEb24ndCBLbm93Ii4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQcm92aWRlIGEgYnJpZWYgIlN1bW1hcnkiIG9mIHRoZSBidWcuCisgICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKKyAgICAgICAgICAgICAgICB0byBjYXB0dXJlIHRoZSBlc3NlbmNlIG9mIHRoZSBidWcuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRldGFpbGVkICJEZXNjcmlwdGlvbiIgb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBhYm91dCB0aGUgY29udGV4dCwKKyAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGV2ZW4gYXR0YWNoIHN1cHBvcnRpbmcgZmlsZXMgZm9yIG91dHB1dCBmcm9tIGxvZ3MgYnkKKyAgICAgICAgICAgICAgICB1c2luZyB0aGUgIkFkZCBhbiBhdHRhY2htZW50IiBidXR0b24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJTdWJtaXQgQnVnIiBidXR0b24gc3VibWl0IHRoZSBidWcuCisgICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKKyAgICAgICAgICAgICAgICBpcyBsb2dnZWQgaW4gdGhlIGJ1ZyB0cmFja2luZyBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIE9uY2UgeW91IGZpbGUgYSBidWcsIHRoZSBidWcgaXMgcHJvY2Vzc2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IEJ1ZworICAgICAgICBUcmlhZ2UgVGVhbSBhbmQgZnVydGhlciBkZXRhaWxzIGNvbmNlcm5pbmcgdGhlIGJ1ZyBhcmUgYXNzaWduZWQKKyAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KKyAgICAgICAgWW91IGFyZSB0aGUgIlN1Ym1pdHRlciIgb2YgdGhlIGJ1ZyBhbmQgYW55IGZ1cnRoZXIgY2F0ZWdvcml6YXRpb24sCisgICAgICAgIHByb2dyZXNzLCBvciBjb21tZW50cyBvbiB0aGUgYnVnIHJlc3VsdCBpbiBCdWd6aWxsYSBzZW5kaW5nIHlvdSBhbgorICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCisgICAgICAgIGJ1Zy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKIDxzZWN0aW9uIGlkPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz4KLSAgICA8dGl0bGU+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvdGl0bGU+CisgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgogCiAgICAgPHBhcmE+CiAgICAgICAgIENvbnRyaWJ1dGlvbnMgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIE9wZW5FbWJlZGRlZCBhcmUgdmVyeSB3ZWxjb21lLgotICAgICAgICBCZWNhdXNlIHRoZSBzeXN0ZW0gaXMgZXh0cmVtZWx5IGNvbmZpZ3VyYWJsZSBhbmQgZmxleGlibGUsIHdlIHJlY29nbml6ZSB0aGF0IGRldmVsb3BlcnMKLSAgICAgICAgd2lsbCB3YW50IHRvIGV4dGVuZCwgY29uZmlndXJlIG9yIG9wdGltaXplIGl0IGZvciB0aGVpciBzcGVjaWZpYyB1c2VzLgotICAgICAgICBZb3Ugc2hvdWxkIHNlbmQgcGF0Y2hlcyB0byB0aGUgYXBwcm9wcmlhdGUgbWFpbGluZyBsaXN0IHNvIHRoYXQgdGhleQotICAgICAgICBjYW4gYmUgcmV2aWV3ZWQgYW5kIG1lcmdlZCBieSB0aGUgYXBwcm9wcmlhdGUgbWFpbnRhaW5lci4KKyAgICAgICAgQmVjYXVzZSB0aGUgc3lzdGVtIGlzIGV4dHJlbWVseSBjb25maWd1cmFibGUgYW5kIGZsZXhpYmxlLCB3ZSByZWNvZ25pemUKKyAgICAgICAgdGhhdCBkZXZlbG9wZXJzIHdpbGwgd2FudCB0byBleHRlbmQsIGNvbmZpZ3VyZSBvciBvcHRpbWl6ZSBpdCBmb3IKKyAgICAgICAgdGhlaXIgc3BlY2lmaWMgdXNlcy4KICAgICA8L3BhcmE+CiAKLSAgICA8c2VjdGlvbiBpZD0nc3VibWl0LWNoYW5nZS1vdmVydmlldyc+Ci0gICAgICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBtYWlsaW5nIGxpc3QgYW5kIGEgcGF0Y2gtYmFzZWQgd29ya2Zsb3cKKyAgICAgICAgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBMaW51eCBrZXJuZWwgYnV0IGNvbnRhaW5zIGltcG9ydGFudAorICAgICAgICBkaWZmZXJlbmNlcy4KKyAgICAgICAgSW4gZ2VuZXJhbCwgYSBtYWlsaW5nIGxpc3QgZXhpc3RzIHRocm91Z2ggd2hpY2ggeW91IGNhbiBzdWJtaXQKKyAgICAgICAgcGF0Y2hlcy4KKyAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKKyAgICAgICAgY2FuIGJlIHJldmlld2VkIGFuZCBtZXJnZWQgYnkgdGhlIGFwcHJvcHJpYXRlIG1haW50YWluZXIuCisgICAgICAgIFRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgeW91IG5lZWQgdG8gdXNlIGRlcGVuZHMgb24gdGhlCisgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCisgICAgICAgIEVhY2ggY29tcG9uZW50IChlLmcuIGxheWVyKSBzaG91bGQgaGF2ZSBhCisgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5kaWNhdGVzIHdoZXJlIHRvIHNlbmQKKyAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBtYWlsaW5nIGxpc3QgYW5kIHBhdGNoLWJhc2VkIHdvcmtmbG93Ci0gICAgICAgICAgICB0aGF0IGlzIHNpbWlsYXIgdG8gdGhlIExpbnV4IGtlcm5lbCBidXQgY29udGFpbnMgaW1wb3J0YW50Ci0gICAgICAgICAgICBkaWZmZXJlbmNlcy4KLSAgICAgICAgICAgIEluIGdlbmVyYWwsIGEgbWFpbGluZyBsaXN0IGV4aXN0cyB0aHJvdWdoIHdoaWNoIHlvdSBjYW4gc3VibWl0Ci0gICAgICAgICAgICBwYXRjaGVzLgotICAgICAgICAgICAgVGhlIHNwZWNpZmljIG1haWxpbmcgbGlzdCB5b3UgbmVlZCB0byB1c2UgZGVwZW5kcyBvbiB0aGUKLSAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCi0gICAgICAgICAgICBFYWNoIGNvbXBvbmVudCAoZS5nLiBsYXllcikgc2hvdWxkIGhhdmUgYQotICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgdGhhdCBpbmRpY2F0ZXMgd2hlcmUgdG8gc2VuZAotICAgICAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gc2VuZCB0aGUgcGF0Y2ggdG8gdGhlIG1haWxpbmcgbGlzdCB1c2luZyB3aGljaGV2ZXIgYXBwcm9hY2gKKyAgICAgICAgeW91IGZlZWwgY29tZm9ydGFibGUgd2l0aCB0byBnZW5lcmF0ZSB0aGUgcGF0Y2guCisgICAgICAgIE9uY2Ugc2VudCwgdGhlIHBhdGNoIGlzIHVzdWFsbHkgcmV2aWV3ZWQgYnkgdGhlIGNvbW11bml0eSBhdCBsYXJnZS4KKyAgICAgICAgSWYgc29tZWJvZHkgaGFzIGNvbmNlcm5zIHdpdGggdGhlIHBhdGNoLCB0aGV5IHdpbGwgdXN1YWxseSB2b2ljZQorICAgICAgICB0aGVpciBjb25jZXJuIG92ZXIgdGhlIG1haWxpbmcgbGlzdC4KKyAgICAgICAgSWYgYSBwYXRjaCBkb2VzIG5vdCByZWNlaXZlIGFueSBuZWdhdGl2ZSByZXZpZXdzLCB0aGUgbWFpbnRhaW5lciBvZgorICAgICAgICB0aGUgYWZmZWN0ZWQgbGF5ZXIgdHlwaWNhbGx5IHRha2VzIHRoZSBwYXRjaCwgdGVzdHMgaXQsIGFuZCB0aGVuCisgICAgICAgIGJhc2VkIG9uIHN1Y2Nlc3NmdWwgdGVzdGluZywgbWVyZ2VzIHRoZSBwYXRjaC4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIHNlbmQgdGhlIHBhdGNoIHRvIHRoZSBtYWlsaW5nIGxpc3QgdXNpbmcgd2hpY2hldmVyIGFwcHJvYWNoCi0gICAgICAgICAgICB5b3UgZmVlbCBjb21mb3J0YWJsZSB3aXRoIHRvIGdlbmVyYXRlIHRoZSBwYXRjaC4KLSAgICAgICAgICAgIE9uY2Ugc2VudCwgdGhlIHBhdGNoIGlzIHVzdWFsbHkgcmV2aWV3ZWQgYnkgdGhlIGNvbW11bml0eSBhdCBsYXJnZS4KLSAgICAgICAgICAgIElmIHNvbWVib2R5IGhhcyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhleSB3aWxsIHVzdWFsbHkgdm9pY2UKLSAgICAgICAgICAgIHRoZWlyIGNvbmNlcm4gb3ZlciB0aGUgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgSWYgYSBwYXRjaCBkb2VzIG5vdCByZWNlaXZlIGFueSBuZWdhdGl2ZSByZXZpZXdzLCB0aGUgbWFpbnRhaW5lciBvZgotICAgICAgICAgICAgdGhlIGFmZmVjdGVkIGxheWVyIHR5cGljYWxseSB0YWtlcyB0aGUgcGF0Y2gsIHRlc3RzIGl0LCBhbmQgdGhlbgotICAgICAgICAgICAgYmFzZWQgb24gc3VjY2Vzc2Z1bCB0ZXN0aW5nLCBtZXJnZXMgdGhlIHBhdGNoLgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmEgaWQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+CisgICAgICAgIFRoZSAicG9reSIgcmVwb3NpdG9yeSwgd2hpY2ggaXMgdGhlIFlvY3RvIFByb2plY3QncyByZWZlcmVuY2UgYnVpbGQKKyAgICAgICAgZW52aXJvbm1lbnQsIGlzIGEgaHlicmlkIHJlcG9zaXRvcnkgdGhhdCBjb250YWlucyBzZXZlcmFsCisgICAgICAgIGluZGl2aWR1YWwgcGllY2VzIChlLmcuIEJpdEJha2UsIE1ldGFkYXRhLCBkb2N1bWVudGF0aW9uLAorICAgICAgICBhbmQgc28gZm9ydGgpIGJ1aWx0IHVzaW5nIHRoZSBjb21iby1sYXllciB0b29sLgorICAgICAgICBUaGUgdXBzdHJlYW0gbG9jYXRpb24gdXNlZCBmb3Igc3VibWl0dGluZyBjaGFuZ2VzIHZhcmllcyBieQorICAgICAgICBjb21wb25lbnQ6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgTWV0YWRhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBTZW5kIHlvdXIgcGF0Y2ggdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuZW1iZWRkZWQtY29yZSc+b3BlbmVtYmVkZGVkLWNvcmU8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4gIEZvciBleGFtcGxlLCBhIGNoYW5nZSB0byBhbnl0aGluZyB1bmRlcgorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBzaG91bGQgYmUgc2VudAorICAgICAgICAgICAgICAgIHRvIHRoaXMgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRm9yIGNoYW5nZXMgdG8gQml0QmFrZSAoaS5lLiBhbnl0aGluZyB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSksIHNlbmQgeW91ciBwYXRjaAorICAgICAgICAgICAgICAgIHRvIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+Yml0YmFrZS1kZXZlbDwvdWxpbms+CisgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWV0YS0qIiB0cmVlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZXNlIHRyZWVzIGNvbnRhaW4gTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgVXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KKyAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNwZWNpZmljIHRvIE9wZW5FbWJlZGRlZC1Db3JlLCB0d28gY29tbW9ubHkgdXNlZCB0ZXN0aW5nIHRyZWVzCi0gICAgICAgICAgICBleGlzdDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+InJvc3MvbXV0IiBicmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlICJtdXQiIChtYXN0ZXItdW5kZXItdGVzdCkgdHJlZQotICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPllvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllczwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWFzdGVyLW5leHQiIGJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCi0gICAgICAgICAgICAgICAgICAgICJwb2t5IiByZXBvc2l0b3J5IGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBNYWludGFpbmVycyB1c2UgdGhlc2UgYnJhbmNoZXMgdG8gdGVzdCBzdWJtaXNzaW9ucyBwcmlvciB0byBtZXJnaW5nCi0gICAgICAgICAgICBwYXRjaGVzLgotICAgICAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KLSAgICAgICAgICAgIHdoZXRoZXIgdGhlIHBhdGNoIGhhcyBiZWVuIG1lcmdlZCBpbnRvIG9uZSBvZiB0aGVzZSBicmFuY2hlcy4KLSAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQorICAgICAgICByZXBvc2l0b3JpZXMgKGkuZS4gPGZpbGVuYW1lPnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiksIHRvb2xzLAorICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiwgdXNlIHRoZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgorICAgICAgICBnZW5lcmFsIG1haWxpbmcgbGlzdC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCisgICAgICAgICAgICBwYXJ0aWN1bGFyIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgIElmIHNvLCB1c2UgdGhhdCBsaXN0LgorICAgICAgICA8L25vdGU+CisgICAgICAgIEZvciBhZGRpdGlvbmFsIHJlY2lwZXMgdGhhdCBkbyBub3QgZml0IGludG8gdGhlIGNvcmUgTWV0YWRhdGEsIHlvdQorICAgICAgICBzaG91bGQgZGV0ZXJtaW5lIHdoaWNoIGxheWVyIHRoZSByZWNpcGUgc2hvdWxkIGdvIGludG8gYW5kIHN1Ym1pdAorICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KKyAgICAgICAgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlKSBzdXBwbGllZCB3aXRoIHRoZSBsYXllci4KKyAgICAgICAgSWYgaW4gZG91YnQsIHBsZWFzZSBhc2sgb24gdGhlIFlvY3RvIGdlbmVyYWwgbWFpbGluZyBsaXN0IG9yIG9uCisgICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgcGF0Y2hlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQorICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGFsc28gcHVzaCBhIGNoYW5nZSB1cHN0cmVhbSBhbmQgcmVxdWVzdCBhIG1haW50YWluZXIgdG8KKyAgICAgICAgcHVsbCB0aGUgY2hhbmdlIGludG8gdGhlIGNvbXBvbmVudCdzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgIFlvdSBkbyB0aGlzIGJ5IHB1c2hpbmcgdG8gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSB0aGF0IGlzIHVwc3RyZWFtLgorICAgICAgICBTZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3b3JrZmxvd3MnPldvcmtmbG93czwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgY29uY2VwdHMgb24gd29ya2luZyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyByZXBvc2l0b3JpZXMgZXhpc3QgZm9yCisgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4icm9zcy9tdXQiIGJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSAibXV0IiAobWFzdGVyLXVuZGVyLXRlc3QpIHRyZWUKKyAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1hc3Rlci1uZXh0IiBicmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCisgICAgICAgICAgICAgICAgInBva3kiIHJlcG9zaXRvcnkgaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIE1haW50YWluZXJzIHVzZSB0aGVzZSBicmFuY2hlcyB0byB0ZXN0IHN1Ym1pc3Npb25zIHByaW9yIHRvIG1lcmdpbmcKKyAgICAgICAgcGF0Y2hlcy4KKyAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KKyAgICAgICAgd2hldGhlciB0aGUgcGF0Y2ggaGFzIGJlZW4gbWVyZ2VkIGludG8gb25lIG9mIHRoZXNlIGJyYW5jaGVzLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgY2hhbmdlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQogICAgICAgICAgICAgZmxvdy4KLSAgICAgICAgICAgIEFza2luZyBhYm91dCB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggaXMgcmVhc29uYWJsZSBpZiB0aGUgcGF0Y2gKLSAgICAgICAgICAgIGhhcyBiZWVuIGlkbGUgZm9yIGEgd2hpbGUgd2l0aCBubyBmZWVkYmFjay4KKyAgICAgICAgICAgIEFza2luZyBhYm91dCB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggb3IgY2hhbmdlIGlzIHJlYXNvbmFibGUgaWYgdGhlCisgICAgICAgICAgICBjaGFuZ2UgaGFzIGJlZW4gaWRsZSBmb3IgYSB3aGlsZSB3aXRoIG5vIGZlZWRiYWNrLgogICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZG9lcyBoYXZlIHBsYW5zIHRvIHVzZQogICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF0Y2h3b3JrXyhzb2Z0d2FyZSknPlBhdGNod29yazwvdWxpbms+CiAgICAgICAgICAgICB0byB0cmFjayB0aGUgc3RhdHVzIG9mIHBhdGNoZXMgYW5kIGFsc28gdG8gYXV0b21hdGljYWxseSBwcmV2aWV3CiAgICAgICAgICAgICBwYXRjaGVzLgotICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwcm92aWRlIHByb2NlZHVyZXMgZm9yIHN1Ym1pdHRpbmcgYSBjaGFuZ2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPgorICAgICAgICA8dGl0bGU+VXNpbmcgU2NyaXB0cyB0byBQdXNoIGEgQ2hhbmdlIFVwc3RyZWFtIGFuZCBSZXF1ZXN0IGEgUHVsbDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIHByb3ZpZGUgZ2VuZXJhbCBpbnN0cnVjdGlvbnMgZm9yIGJvdGgKLSAgICAgICAgICAgIHB1c2hpbmcgY2hhbmdlcyB1cHN0cmVhbSBhbmQgZm9yIHN1Ym1pdHRpbmcgY2hhbmdlcyBhcyBwYXRjaGVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdC1jaGFuZ2Utc3VibWlzc2lvbnMtdG8tcG9reSc+Ci0gICAgICAgIDx0aXRsZT5TdWJtaXNzaW9ucyB0byBQb2t5PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSAicG9reSIgcmVwb3NpdG9yeSwgd2hpY2ggaXMgdGhlIFlvY3RvIFByb2plY3QncyByZWZlcmVuY2UgYnVpbGQKLSAgICAgICAgICAgIGVudmlyb25tZW50LCBpcyBhIGh5YnJpZCByZXBvc2l0b3J5IHRoYXQgY29udGFpbnMgc2V2ZXJhbAotICAgICAgICAgICAgaW5kaXZpZHVhbCBwaWVjZXMgKGUuZy4gQml0QmFrZSwgT3BlbkVtYmVkZGVkLUNvcmUsIG1ldGEteW9jdG8sCi0gICAgICAgICAgICBkb2N1bWVudGF0aW9uLCBhbmQgc28gZm9ydGgpIGJ1aWx0IHVzaW5nIHRoZSBjb21iby1sYXllciB0b29sLgotICAgICAgICAgICAgVGhlIHVwc3RyZWFtIGxvY2F0aW9uIHVzZWQgZm9yIHN1Ym1pdHRpbmcgY2hhbmdlcyB2YXJpZXMgYnkKLSAgICAgICAgICAgIGNvbXBvbmVudDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBNZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTZW5kIHlvdXIgcGF0Y2ggdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbmVtYmVkZGVkLWNvcmUnPm9wZW5lbWJlZGRlZC1jb3JlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LiAgRm9yIGV4YW1wbGUsIGEgY2hhbmdlIHRvIGFueXRoaW5nIHVuZGVyCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHNlbnQKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGNoYW5nZXMgdG8gQml0QmFrZSAoaS5lLiBhbnl0aGluZyB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLCBzZW5kIHlvdXIgcGF0Y2gKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+Yml0YmFrZS1kZXZlbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1ldGEteW9jdG8tYnNwIiBhbmQgIm1ldGEtcG9reSIgdHJlZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHJlZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlICJtZXRhLXlvY3RvIiByZXBvc2l0b3J5IGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2xpc3RpbmZvL3Bva3knPnBva3k8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nc3VibWl0LWNoYW5nZS1zdWJtaXNzaW9ucy10by1vdGhlci1sYXllcnMnPgotICAgICAgICA8dGl0bGU+U3VibWlzc2lvbnMgdG8gT3RoZXIgTGF5ZXJzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBjaGFuZ2VzIHRvIG90aGVyIGxheWVycyBob3N0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlCi0gICAgICAgICAgICByZXBvc2l0b3JpZXMgKGkuZS4gPGZpbGVuYW1lPnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiksIHRvb2xzLAotICAgICAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24sIHVzZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby95b2N0byc+WW9jdG8gUHJvamVjdDwvdWxpbms+Ci0gICAgICAgICAgICBnZW5lcmFsIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgIEZvbGxvdyB0aGlzIHByb2NlZHVyZSB0byBwdXNoIGEgY2hhbmdlIHRvIGFuIHVwc3RyZWFtICJjb250cmliIgorICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnk6CiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCi0gICAgICAgICAgICAgICAgcGFydGljdWxhciBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgSWYgc28sIHVzZSB0aGF0IGxpc3QuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgR2l0IGluZm9ybWF0aW9uIG9uIGhvdyB0byBwdXNoIGEgY2hhbmdlCisgICAgICAgICAgICAgICAgdXBzdHJlYW0gaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svZW4vdjIvRGlzdHJpYnV0ZWQtR2l0LURpc3RyaWJ1dGVkLVdvcmtmbG93cyc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCiAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICBGb3IgYWRkaXRpb25hbCByZWNpcGVzIHRoYXQgZG8gbm90IGZpdCBpbnRvIHRoZSBjb3JlIE1ldGFkYXRhLCB5b3UKLSAgICAgICAgICAgIHNob3VsZCBkZXRlcm1pbmUgd2hpY2ggbGF5ZXIgdGhlIHJlY2lwZSBzaG91bGQgZ28gaW50byBhbmQgc3VibWl0Ci0gICAgICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSkgc3VwcGxpZWQgd2l0aCB0aGUgbGF5ZXIuCi0gICAgICAgICAgICBJZiBpbiBkb3VidCwgcGxlYXNlIGFzayBvbiB0aGUgWW9jdG8gZ2VuZXJhbCBtYWlsaW5nIGxpc3Qgb3Igb24KLSAgICAgICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdC1jaGFuZ2UtcGF0Y2gtc3VibWlzc2lvbi1kZXRhaWxzJz4KLSAgICAgICAgPHRpdGxlPlBhdGNoIFN1Ym1pc3Npb24gRGV0YWlsczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHN1Ym1pdHRpbmcgYW55IGNoYW5nZSwgeW91IGNhbiBjaGVjayB3aG8geW91IHNob3VsZCBiZQotICAgICAgICAgICAgbm90aWZ5aW5nLgotICAgICAgICAgICAgVXNlIGVpdGhlciBvZiB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEV4YW1pbmUgdGhlIDxmaWxlbmFtZT5tYWludGFpbmVycy5pbmM8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhdCA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiwgdG8KLSAgICAgICAgICAgICAgICAgICAgc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgWW91ciBDaGFuZ2VzIExvY2FsbHk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICBLZWVwaW5nIGNoYW5nZXMgc21hbGwgYW5kIGlzb2xhdGVkIGFpZHMgcmV2aWV3LAorICAgICAgICAgICAgICAgICAgICBtYWtlcyBtZXJnaW5nL3JlYmFzaW5nIGVhc2llciBhbmQga2VlcHMgdGhlIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgorICAgICAgICAgICAgICAgICAgICBmdXR1cmUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlYXJjaCBieSBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFVzaW5nIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiwgeW91IGNhbiBlbnRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYSBzaG9ydCBsaXN0IG9mIGFsbCBjb21taXRzCi0gICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYSBzcGVjaWZpYyBmaWxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGdpdCBzaG9ydGxvZyAtLSA8cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEp1c3QgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgZmlsZSBmb3Igd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeSBidXQgZG9lcwotICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGEgbGlzdCBvZiBhbGwgY29tbWl0dGVycyBncm91cGVkIGJ5IG5hbWUuCi0gICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGJ1bGsgb2YKLSAgICAgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgYWdhaW5zdCB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIFlvY3RvIFByb2plY3QgYW5kIHJlbGF0ZWQgbWFpbGluZyBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBsaXN0czwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBzZW5kIGEgcGF0Y2gsIGJlIHN1cmUgdG8gaW5jbHVkZSBhICJTaWduZWQtb2ZmLWJ5OiIKLSAgICAgICAgICAgIGxpbmUgaW4gdGhlIHNhbWUgc3R5bGUgYXMgcmVxdWlyZWQgYnkgdGhlIExpbnV4IGtlcm5lbC4KLSAgICAgICAgICAgIEFkZGluZyB0aGlzIGxpbmUgc2lnbmlmaWVzIHRoYXQgeW91LCB0aGUgc3VibWl0dGVyLCBoYXZlIGFncmVlZAotICAgICAgICAgICAgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiAxLjEgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J21ha2luZy1zdXJlLXlvdS1oYXZlLWNvcnJlY3QtY29tbWl0LWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1pdCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29tbWl0IHRoZSBjaGFuZ2UgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgTWFrZSBzdXJlIHlvdXIgY29tbWl0IGluZm9ybWF0aW9uIGZvbGxvd3Mgc3RhbmRhcmRzIGJ5CisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB0aGVzZSBhY2NlcHRlZCBjb252ZW50aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGluY2x1ZGUgYSAiU2lnbmVkLW9mZi1ieToiIGxpbmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBzdHlsZSBhcyByZXF1aXJlZCBieSB0aGUgTGludXgga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGlzIGxpbmUgc2lnbmlmaWVzIHRoYXQgeW91LCB0aGUgc3VibWl0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYWdyZWVkIHRvIHRoZSBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbiAxLjEgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiAxLjEKIAogICAgICBCeSBtYWtpbmcgYSBjb250cmlidXRpb24gdG8gdGhpcyBwcm9qZWN0LCBJIGNlcnRpZnkgdGhhdDoKQEAgLTE1OTUsMTIxICs2NTUsMTgzIEBACiAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiBJIHN1Ym1pdCB3aXRoIGl0LCBpbmNsdWRpbmcgbXkgc2lnbi1vZmYpIGlzCiAgICAgICAgICBtYWludGFpbmVkIGluZGVmaW5pdGVseSBhbmQgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgY29uc2lzdGVudCB3aXRoCiAgICAgICAgICB0aGlzIHByb2plY3Qgb3IgdGhlIG9wZW4gc291cmNlIGxpY2Vuc2UocykgaW52b2x2ZWQuCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIGEgY29sbGFib3JhdGl2ZSBlbnZpcm9ubWVudCwgaXQgaXMgbmVjZXNzYXJ5IHRvIGhhdmUgc29tZSBzb3J0Ci0gICAgICAgICAgICBvZiBzdGFuZGFyZCBvciBtZXRob2QgdGhyb3VnaCB3aGljaCB5b3Ugc3VibWl0IGNoYW5nZXMuCi0gICAgICAgICAgICBPdGhlcndpc2UsIHRoaW5ncyBjb3VsZCBnZXQgcXVpdGUgY2hhb3RpYy4KLSAgICAgICAgICAgIE9uZSBnZW5lcmFsIHByYWN0aWNlIHRvIGZvbGxvdyBpcyB0byBtYWtlIHNtYWxsLCBjb250cm9sbGVkIGNoYW5nZXMuCi0gICAgICAgICAgICBLZWVwaW5nIGNoYW5nZXMgc21hbGwgYW5kIGlzb2xhdGVkIGFpZHMgcmV2aWV3LCBtYWtlcwotICAgICAgICAgICAgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UgaGlzdG9yeSBjbGVhbiBzaG91bGQKLSAgICAgICAgICAgIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluIGZ1dHVyZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3UgbWFrZSBhIGNvbW1pdCwgeW91IG11c3QgZm9sbG93IGNlcnRhaW4gc3RhbmRhcmRzCi0gICAgICAgICAgICBlc3RhYmxpc2hlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGFuZCBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IHRlYW1zLgotICAgICAgICAgICAgRm9yIGVhY2ggY29tbWl0LCB5b3UgbXVzdCBwcm92aWRlIGEgc2luZ2xlLWxpbmUgc3VtbWFyeSBvZiB0aGUKLSAgICAgICAgICAgIGNoYW5nZSBhbmQgeW91IHNob3VsZCBhbG1vc3QgYWx3YXlzIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiBvZiB3aGF0IHlvdSBkaWQgKGkuZS4gdGhlIGJvZHkgb2YgdGhlIGNvbW1pdCBtZXNzYWdlKS4KLSAgICAgICAgICAgIFRoZSBvbmx5IGV4Y2VwdGlvbnMgZm9yIG5vdCBwcm92aWRpbmcgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB3b3VsZAotICAgICAgICAgICAgYmUgaWYgeW91ciBjaGFuZ2UgaXMgYSBzaW1wbGUsIHNlbGYtZXhwbGFuYXRvcnkgY2hhbmdlIHRoYXQgbmVlZHMKLSAgICAgICAgICAgIG5vIGZ1cnRoZXIgZGVzY3JpcHRpb24gYmV5b25kIHRoZSBzdW1tYXJ5LgotICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGd1aWRlbGluZXMgZm9yIGNvbXBvc2luZyBhIGNvbW1pdCBtZXNzYWdlOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBzaW5nbGUtbGluZSwgc2hvcnQgc3VtbWFyeSBvZiB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHN1bW1hcnkgaXMgdHlwaWNhbGx5IHZpZXdhYmxlIGluIHRoZSAic2hvcnRsaXN0IiBvZgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBUaHVzLCBwcm92aWRpbmcgc29tZXRoaW5nIHNob3J0IGFuZCBkZXNjcmlwdGl2ZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGdpdmVzIHRoZSByZWFkZXIgYSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UgaXMgdXNlZnVsIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgdmlld2luZyBhIGxpc3Qgb2YgbWFueSBjb21taXRzLgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByZWZpeCB0aGlzIHNob3J0IGRlc2NyaXB0aW9uIHdpdGggdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICBuYW1lIChpZiBjaGFuZ2luZyBhIHJlY2lwZSksIG9yIGVsc2Ugd2l0aCB0aGUgc2hvcnQgZm9ybQotICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSwgcHJvdmlkZSBkZXRhaWxlZAotICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiB0aGF0IGRlc2NyaWJlcyB3aGF0IHlvdSBjaGFuZ2VkLCB3aHkgeW91IG1hZGUKLSAgICAgICAgICAgICAgICAgICAgdGhlIGNoYW5nZSwgYW5kIHRoZSBhcHByb2FjaCB5b3UgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgSXQgbWlnaHQgYWxzbyBiZSBoZWxwZnVsIGlmIHlvdSBtZW50aW9uIGhvdyB5b3UgdGVzdGVkCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2UuCi0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBpbiB0aGUgYm9keSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGNoYW5nZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgb3IgaXNzdWUgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBidWctdHJhY2tpbmcgSUQsIGluY2x1ZGUgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhhdCBJRCBpbiB5b3VyIGRldGFpbGVkIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIHNwZWNpZmljIGNvbnZlbnRpb24KLSAgICAgICAgICAgICAgICAgICAgZm9yIGJ1ZyByZWZlcmVuY2VzIC0gYW55IGNvbW1pdCB0aGF0IGFkZHJlc3NlcyBhIHNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgIGJ1ZyBzaG91bGQgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybSBmb3IgdGhlIGRldGFpbGVkCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUgYWN0dWFsIGJ1Zy10cmFja2luZyBJRCBmcm9tCi0gICAgICAgICAgICAgICAgICAgIEJ1Z3ppbGxhIGZvcgotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHNpbmdsZS1saW5lIHN1bW1hcnkgb2YgdGhlIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbW9yZSBleHBsYW5hdGlvbiBpcyBuZWVkZWQsIHByb3ZpZGUgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbCBpbiB0aGUgYm9keSBvZiB0aGUgY29tbWl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3VtbWFyeSBpcyB0eXBpY2FsbHkgdmlld2FibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3J0bGlzdCIgb2YgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBwcm92aWRpbmcgc29tZXRoaW5nIHNob3J0IGFuZCBkZXNjcmlwdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZ2l2ZXMgdGhlIHJlYWRlciBhIHN1bW1hcnkgb2YgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWZ1bCB3aGVuIHZpZXdpbmcgYSBsaXN0IG9mIG1hbnkgY29tbWl0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByZWZpeCB0aGlzIHNob3J0IGRlc2NyaXB0aW9uIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWUgKGlmIGNoYW5naW5nIGEgcmVjaXBlKSwgb3IgZWxzZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNob3J0IGZvcm0gcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgYm9keSBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsIHByb3ZpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiB0aGF0IGRlc2NyaWJlcyB3aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQsIHdoeSB5b3UgbWFkZSB0aGUgY2hhbmdlLCBhbmQgdGhlIGFwcHJvYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbWlnaHQgYWxzbyBiZSBoZWxwZnVsIGlmIHlvdSBtZW50aW9uIGhvdyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWQgdGhlIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gaW4gdGhlIGJvZHkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWl0IG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBwcm92aWRlIGEgbW9yZSBkZXRhaWxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiBvZiBhIGNoYW5nZSBpZiB0aGUgY2hhbmdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yIHRvIHRoZSBwb2ludCBvZiB0aGUgc2luZ2xlIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSBwcm92aWRpbmcgYWxsIHRoZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGNoYW5nZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgb3IgaXNzdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIGJ1Zy10cmFja2luZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIHRoYXQgSUQgaW4geW91ciBkZXRhaWxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZW50aW9uIGZvciBidWcgcmVmZXJlbmNlcyAtIGFueSBjb21taXQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBzaG91bGQgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byB1c2UgdGhlIGFjdHVhbCBidWctdHJhY2tpbmcgSUQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1Z3ppbGxhIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5idWctaWQ8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEZpeGVzIFtZT0NUTyAjPHJlcGxhY2VhYmxlPmJ1Zy1pZDwvcmVwbGFjZWFibGU+XQogCiAgICAgIDxyZXBsYWNlYWJsZT5kZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBjaGFuZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlB1c2ggWW91ciBDb21taXRzIHRvIGEgIkNvbnRyaWIiIFVwc3RyZWFtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFycmFuZ2VkIGZvciBwZXJtaXNzaW9ucyB0byBwdXNoIHRvIGFuCisgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIGNvbnRyaWIgcmVwb3NpdG9yeSwgcHVzaCB0aGUgY2hhbmdlIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBwdXNoIDxyZXBsYWNlYWJsZT51cHN0cmVhbV9yZW1vdGVfcmVwbzwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5sb2NhbF9icmFuY2hfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgcGVybWlzc2lvbnMgdG8gcHVzaCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSA8ZmlsZW5hbWU+bWV0YS1pbnRlbC1jb250cmliPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgeW91IGFyZSB3b3JraW5nIGluIGEgbG9jYWwgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT55b3VyX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vUkVBRE1FPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBwdXNoZXMgeW91ciBsb2NhbCBjb21taXRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC1jb250cmliPC9maWxlbmFtZT4gdXBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgcHV0cyB0aGUgY29tbWl0IGluIGEgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT55b3VyX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vUkVBRE1FPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCBtZXRhLWludGVsLWNvbnRyaWIgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3B1c2gtZGV0ZXJtaW5lLXdoby10by1ub3RpZnknPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0ZXJtaW5lIFdobyB0byBOb3RpZnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHRoZSBtYWludGFpbmVyIG9yIHRoZSBtYWlsaW5nIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbmVlZCB0byBub3RpZnkgZm9yIHRoZSBjaGFuZ2UuPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgZ3VpZGFuY2Ugb24gY3JlYXRpbmcgd2VsbC1mb3JtZWQgY29tbWl0IG1lc3NhZ2VzCi0gICAgICAgICAgICBhdCB0aGlzIE9wZW5FbWJlZGRlZCB3aWtpIHBhZ2U6Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmT0VfSE9NRV9VUkw7L3dpa2kvQ29tbWl0X1BhdGNoX01lc3NhZ2VfR3VpZGVsaW5lcyc+PC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncHVzaGluZy1hLWNoYW5nZS11cHN0cmVhbSc+Ci0gICAgICAgIDx0aXRsZT5Vc2luZyBTY3JpcHRzIHRvIFB1c2ggYSBDaGFuZ2UgVXBzdHJlYW0gYW5kIFJlcXVlc3QgYSBQdWxsPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBiYXNpYyBmbG93IGZvciBwdXNoaW5nIGEgY2hhbmdlIHRvIGFuIHVwc3RyZWFtICJjb250cmliIiBHaXQgcmVwb3NpdG9yeSBpcyBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb24gZWFjaCBmaWxlIHlvdSBjaGFuZ2VkLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ29tbWl0IHRoZSBjaGFuZ2UgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIGEgY29tbWl0IG1lc3NhZ2UgdGhhdCBmb2xsb3dzIHRoZQotICAgICAgICAgICAgICAgICAgICBwcm9qZWN04oCZcyBjb21taXQgbWVzc2FnZSBzdGFuZGFyZHMgYXMgZGVzY3JpYmVkIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlZm9yZSBzdWJtaXR0aW5nIGFueSBjaGFuZ2UsIHlvdSBuZWVkIHRvIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgd2hvIHRoZSBtYWludGFpbmVyIGlzIG9yIHdoYXQgbWFpbGluZyBsaXN0IHRoYXQgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gbm90aWZ5LgorICAgICAgICAgICAgICAgICAgICBVc2UgZWl0aGVyIHRoZXNlIG1ldGhvZHMgdG8gZmluZCBvdXQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1haW50ZW5hbmNlIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+bWFpbnRhaW5lcnMuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlZSB3aG8gaXMgcmVzcG9uc2libGUgZm9yIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlYXJjaCBieSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGVudGVyIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBicmluZyB1cCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgbGlzdCBvZiBhbGwgY29tbWl0cyBhZ2FpbnN0IGEgc3BlY2lmaWMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGdpdCBzaG9ydGxvZyAtLSA8cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZm9yIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBpcyBub3Qgb3JkZXJlZCBieSBoaXN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGRvZXMgaW5jbHVkZSBhIGxpc3Qgb2YgZXZlcnlvbmUgd2hvIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCBncm91cGVkIGJ5IG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgbGlzdCwgeW91IGNhbiBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIGFnYWluc3QgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4YW1pbmUgdGhlIExpc3Qgb2YgTWFpbGluZyBMaXN0czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIFlvY3RvIFByb2plY3QgYW5kIHJlbGF0ZWQgbWFpbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBsaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUHVzaCB0aGUgY2hhbmdlIHRvIHRoZSB1cHN0cmVhbSAiY29udHJpYiIgcmVwb3NpdG9yeSBieQotICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBwdXNoPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk5vdGlmeSB0aGUgbWFpbnRhaW5lciB0aGF0IHlvdSBoYXZlIHB1c2hlZCBhIGNoYW5nZSBieSBtYWtpbmcgYSBwdWxsCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHR3byBzY3JpcHRzIHRoYXQgY29udmVuaWVudGx5IGxldCB5b3UgZ2VuZXJhdGUgYW5kIHNlbmQKLSAgICAgICAgICAgICAgICAgICAgcHVsbCByZXF1ZXN0cyB0byB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2Ugc2NyaXB0cyBhcmUgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgdGhlc2Ugc2NyaXB0cyBjb3JyZWN0bHkgZm9ybWF0cyB0aGUgcmVxdWVzdHMgd2l0aG91dCBpbnRyb2R1Y2luZyBhbnkKLSAgICAgICAgICAgICAgICAgICAgd2hpdGVzcGFjZSBvciBIVE1MIGZvcm1hdHRpbmcuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIG5lZWRzIHRvIGJlIGFibGUgdG8gc2F2ZSBhbmQgYXBwbHkgdGhlbQotICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgotICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGVzZSBzY3JpcHRzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nIHBhdGNoZXMuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaGVscCBvbiB1c2luZyB0aGVzZSBzY3JpcHRzLCBzaW1wbHkgcHJvdmlkZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1oPC9maWxlbmFtZT4gYXJndW1lbnQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgYSBQdWxsIFJlcXVlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm90aWZ5IHRoZSBtYWludGFpbmVyIG9yIHRoZSBtYWlsaW5nIGxpc3QgdGhhdCB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICBwdXNoZWQgYSBjaGFuZ2UgYnkgbWFraW5nIGEgcHVsbCByZXF1ZXN0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0d28gc2NyaXB0cyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGNvbnZlbmllbnRseSBsZXQgeW91IGdlbmVyYXRlIGFuZCBzZW5kIHB1bGwgcmVxdWVzdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgYXJlIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPn4vcG9reS9zY3JpcHRzPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgdGhlc2Ugc2NyaXB0cyBjb3JyZWN0bHkgZm9ybWF0cyB0aGUgcmVxdWVzdHMKKyAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBpbnRyb2R1Y2luZyBhbnkgd2hpdGVzcGFjZSBvciBIVE1MIGZvcm1hdHRpbmcuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIGVpdGhlciBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICBvciB0aHJvdWdoIHRoZSBtYWlsaW5nIGxpc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBzYXZlIGFuZAorICAgICAgICAgICAgICAgICAgICBhcHBseSB0aGVtIGRpcmVjdGx5IGZyb20geW91ciBlbWFpbHMuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZXNlIHNjcmlwdHMgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rmlyc3QsIGNyZWF0ZSB0aGUgcHVsbCByZXF1ZXN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGluIHRoZSBjb250cmliIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBpbnRvIHdoaWNoIHlvdSBwdXNoZWQgdGhlIGNoYW5nZSwgYW5kIHByb3ZpZGVzIGEgc3ViamVjdAorICAgICAgICAgICAgICAgICAgICBsaW5lIGluIHRoZSBjcmVhdGVkIHBhdGNoIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9wb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtdSBtZXRhLWludGVsLWNvbnRyaWIgLXMgIlVwZGF0ZWQgTWFudWFsIFNlY3Rpb24gUmVmZXJlbmNlIGluIFJFQURNRSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgc2NyaXB0IGZvcm1zCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gZmlsZXMgaW4gYSBmb2xkZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1bGwtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+UElEPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBPbmUgb2YgdGhlIHBhdGNoIGZpbGVzIGlzIGEgY292ZXIgbGV0dGVyLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gc2NyaXB0LCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgcGF0Y2ggdG8gaW5zZXJ0IGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgICAgICAgICAgIHlvdXIgY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICBBZnRlciBlZGl0aW5nIHRoZSBjb3ZlciBsZXR0ZXIsIHNlbmQgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQgYW5kCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgcGF0Y2ggZGlyZWN0b3J5IGFuZCBlbWFpbCBhZGRyZXNzLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGEgbWFpbGluZyBsaXN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9wb2t5L3NjcmlwdHMvc2VuZC1wdWxsLXJlcXVlc3QgLXAgfi9tZXRhLWludGVsL3B1bGwtMTA1NjUgLXQgbWV0YS1pbnRlbEB5b2N0b3Byb2plY3Qub3JnCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZm9sbG93IHRoZSBwcm9tcHRzIGFzIHRoZSBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGhlbHAgb24gdXNpbmcgdGhlc2Ugc2NyaXB0cywgc2ltcGx5IHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWg8L2ZpbGVuYW1lPiBhcmd1bWVudCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHBva3kvc2NyaXB0cy9jcmVhdGUtcHVsbC1yZXF1ZXN0IC1oCiAgICAgICQgcG9reS9zY3JpcHRzL3NlbmQtcHVsbC1yZXF1ZXN0IC1oCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgZ2VuZXJhbCBHaXQgaW5mb3JtYXRpb24gb24gaG93IHRvIHB1c2ggYSBjaGFuZ2UgdXBzdHJlYW0gaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vYm9vay9lbi92Mi9EaXN0cmlidXRlZC1HaXQtRGlzdHJpYnV0ZWQtV29ya2Zsb3dzJz5HaXQgQ29tbXVuaXR5IEJvb2s8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTE3MTcsNDMgKzgzOSw2NyBAQAogICAgICAgICA8dGl0bGU+VXNpbmcgRW1haWwgdG8gU3VibWl0IGEgUGF0Y2g8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgcGF0Y2hlcyB3aXRob3V0IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gc2NyaXB0cyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCisgICAgICAgICAgICBZb3UgY2FuIHN1Ym1pdCBwYXRjaGVzIHdpdGhvdXQgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gc2NyaXB0cyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICBwcmV2aW91cyBzZWN0aW9uLgogICAgICAgICAgICAgSG93ZXZlciwga2VlcCBpbiBtaW5kLCB0aGUgcHJlZmVycmVkIG1ldGhvZCBpcyB0byB1c2UgdGhlIHNjcmlwdHMuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgY29tcG9uZW50cyBjaGFuZ2VkLCB5b3UgbmVlZCB0byBzdWJtaXQgdGhlIGVtYWlsIHRvIGEgc3BlY2lmaWMKLSAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIHdoaWNoIG1haWxpbmcgbGlzdCB0byB1c2UsIHNlZSB0aGUgbGlzdCBpbiB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgY29tcG9uZW50cyBjaGFuZ2VkLCB5b3UgbmVlZCB0byBzdWJtaXQgdGhlIGVtYWlsCisgICAgICAgICAgICB0byBhIHNwZWNpZmljIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIHdoaWNoIG1haWxpbmcgbGlzdCB0byB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+YmVnaW5uaW5nPC9saW5rPgorICAgICAgICAgICAgb2YgdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHByb2NlZHVyZSBvbiBob3cgdG8gc3VibWl0IGEgcGF0Y2ggdGhyb3VnaCBlbWFpbCB3aXRob3V0IHVzaW5nIHRoZQotICAgICAgICAgICAgc2NyaXB0czoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29tbWl0IHRoZSBjaGFuZ2UgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHByb2NlZHVyZSBvbiBob3cgdG8gc3VibWl0IGEgcGF0Y2ggdGhyb3VnaAorICAgICAgICAgICAgZW1haWwgd2l0aG91dCB1c2luZyB0aGUgc2NyaXB0czoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFlvdXIgQ2hhbmdlcyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbWFrZSBzbWFsbCwgY29udHJvbGxlZCwgaXNvbGF0ZWQgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgS2VlcGluZyBjaGFuZ2VzIHNtYWxsIGFuZCBpc29sYXRlZCBhaWRzIHJldmlldywKKyAgICAgICAgICAgICAgICAgICAgbWFrZXMgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSBjbGVhbiBzaG91bGQgYW55b25lIG5lZWQgdG8gcmVmZXIgdG8gaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgZnV0dXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb24gZWFjaCBmaWxlIHlvdSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21taXQgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNvbW1pdCAtLXNpZ25vZmY8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgPGZpbGVuYW1lPi0tc2lnbm9mZjwvZmlsZW5hbWU+IG9wdGlvbiBpZGVudGlmaWVzIHlvdSBhcyB0aGUgcGVyc29uCi0gICAgICAgICAgICAgICAgICAgIG1ha2luZyB0aGUgY2hhbmdlIGFuZCBhbHNvIHNhdGlzZmllcyB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YKLSAgICAgICAgICAgICAgICAgICAgT3JpZ2luIChEQ08pIHNob3duIGVhcmxpZXIuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBmb3JtIGEgY29tbWl0LCB5b3UgbXVzdCBmb2xsb3cgY2VydGFpbiBzdGFuZGFyZHMgZXN0YWJsaXNoZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbS4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBlYXJsaWVyIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBmb3IgWW9jdG8gUHJvamVjdCBjb21taXQgbWVzc2FnZSBzdGFuZGFyZHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvcm1hdCB0aGUgY29tbWl0IGludG8gYW4gZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgVG8gZm9ybWF0IGNvbW1pdHMsIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIHRoZSBjb21tYW5kLCB5b3UgbXVzdCBpbmNsdWRlIGEgcmV2aXNpb24gbGlzdCBvciBhIG51bWJlciBvZiBwYXRjaGVzCi0gICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+LS1zaWdub2ZmPC9maWxlbmFtZT4gb3B0aW9uIGlkZW50aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgeW91IGFzIHRoZSBwZXJzb24gbWFraW5nIHRoZSBjaGFuZ2UgYW5kIGFsc28gc2F0aXNmaWVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gKERDTykgc2hvd24gZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IGZvcm0gYSBjb21taXQsIHlvdSBtdXN0IGZvbGxvdyBjZXJ0YWluCisgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkcyBlc3RhYmxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0ZWFtLgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWFraW5nLXN1cmUteW91LWhhdmUtY29ycmVjdC1jb21taXQtaW5mb3JtYXRpb24nPlN0ZXAgMzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0bworICAgICAgICAgICAgICAgICAgICBwcm92aWRlIGNvbW1pdCBpbmZvcm1hdGlvbiB0aGF0IG1lZXRzIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Gb3JtYXQgdGhlIENvbW1pdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3JtYXQgdGhlIGNvbW1pdCBpbnRvIGFuIGVtYWlsIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgIFRvIGZvcm1hdCBjb21taXRzLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSB0aGUgY29tbWFuZCwgeW91IG11c3QgaW5jbHVkZSBhIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgIGxpc3Qgb3IgYSBudW1iZXIgb2YgcGF0Y2hlcyBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZWl0aGVyIG9mIHRoZXNlIHR3byBjb21tYW5kcyB0YWtlcyB5b3VyIG1vc3QKICAgICAgICAgICAgICAgICAgICAgcmVjZW50IHNpbmdsZSBjb21taXQgYW5kIGZvcm1hdHMgaXQgYXMgYW4gZW1haWwgbWVzc2FnZSBpbgogICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBkaXJlY3Rvcnk6CkBAIC0xNzY0LDUwICs5MTAsNzYgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggSEVBRH4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWZ0ZXIgdGhlIGNvbW1hbmQgaXMgcnVuLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgY29udGFpbnMgYQotICAgICAgICAgICAgICAgICAgICBudW1iZXJlZCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZSBmb3IgdGhlIGNvbW1pdC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBwcm92aWRlIHNldmVyYWwgY29tbWl0cyBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kIHByb2R1Y2VzIGEKLSAgICAgICAgICAgICAgICAgICAgc2VyaWVzIG9mIG51bWJlcmVkIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSDigJMgb25lIGZvciBlYWNoIGNvbW1pdC4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciB0aGUgY29tbWFuZCBpcyBydW4sIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG51bWJlcmVkIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWl0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgcHJvdmlkZSBzZXZlcmFsIGNvbW1pdHMgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBhIHNlcmllcyBvZiBudW1iZXJlZCBmaWxlcyBpbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkg4oCTIG9uZSBmb3IgZWFjaCBjb21taXQuCiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgcGF0Y2gsIHlvdSBzaG91bGQgYWxzbyB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWNvdmVyPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIGNvbW1hbmQsIHdoaWNoIGdlbmVyYXRlcyBhCi0gICAgICAgICAgICAgICAgICAgIGNvdmVyIGxldHRlciBhcyB0aGUgZmlyc3QgInBhdGNoIiBpbiB0aGUgc2VyaWVzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gZWRpdCB0aGUgY292ZXIgbGV0dGVyIHRvIHByb3ZpZGUgYSBkZXNjcmlwdGlvbiBmb3IKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNlcmllcyBvZiBwYXRjaGVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgc2VlIDxmaWxlbmFtZT5HSVRfRk9STUFUX1BBVENIKDEpPC9maWxlbmFtZT4gZGlzcGxheWVkIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFuIGdpdC1mb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+SWYgeW91IGFyZSBvciB3aWxsIGJlIGEgZnJlcXVlbnQgY29udHJpYnV0b3IgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgb3IgdG8gT3BlbkVtYmVkZGVkLCB5b3UgbWlnaHQgY29uc2lkZXIgcmVxdWVzdGluZyBhIGNvbnRyaWIgYXJlYSBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBhc3NvY2lhdGVkIHJpZ2h0cy48L25vdGU+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW1wb3J0IHRoZSBmaWxlcyBpbnRvIHlvdXIgbWFpbCBjbGllbnQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWNvdmVyPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGdlbmVyYXRlcyBhIGNvdmVyIGxldHRlciBhcyB0aGUgZmlyc3QgInBhdGNoIiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgc2VyaWVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gZWRpdCB0aGUgY292ZXIgbGV0dGVyIHRvIHByb3ZpZGUgYQorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlcmllcyBvZiBwYXRjaGVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgc2VlIDxmaWxlbmFtZT5HSVRfRk9STUFUX1BBVENIKDEpPC9maWxlbmFtZT4gZGlzcGxheWVkCisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+bWFuIGdpdC1mb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgb3Igd2lsbCBiZSBhIGZyZXF1ZW50IGNvbnRyaWJ1dG9yIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBvciB0byBPcGVuRW1iZWRkZWQsIHlvdSBtaWdodCBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZyBhIGNvbnRyaWIgYXJlYSBhbmQgdGhlIG5lY2Vzc2FyeSBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICByaWdodHMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1wb3J0IHRoZSBGaWxlcyBJbnRvIFlvdXIgTWFpbCBDbGllbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW1wb3J0IHRoZSBmaWxlcyBpbnRvIHlvdXIgbWFpbCBjbGllbnQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPkluIG9yZGVyIHRvIHVzZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiwgeW91IG11c3QgaGF2ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgdGhlIHByb3BlciBHaXQgcGFja2FnZXMgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICBGb3IgVWJ1bnR1LCBEZWJpYW4sIGFuZCBGZWRvcmEgdGhlIHBhY2thZ2UgaXMgPGZpbGVuYW1lPmdpdC1lbWFpbDwvZmlsZW5hbWU+Ljwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kIHNlbmRzIGVtYWlsIGJ5IHVzaW5nIGEgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgb3IgcmVtb3RlIE1haWwgVHJhbnNwb3J0IEFnZW50IChNVEEpIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1zbXRwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5zZW5kbWFpbDwvZmlsZW5hbWU+LCBvciB0aHJvdWdoIGEgZGlyZWN0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbXRwPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBpbiB5b3VyIEdpdCA8ZmlsZW5hbWU+Y29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBzdWJtaXR0aW5nIHBhdGNoZXMgdGhyb3VnaCBlbWFpbCBvbmx5LCBpdCBpcyB2ZXJ5IGltcG9ydGFudAotICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBzdWJtaXQgdGhlbSB3aXRob3V0IGFueSB3aGl0ZXNwYWNlIG9yIEhUTUwgZm9ybWF0dGluZyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGVpdGhlciB5b3Ugb3IgeW91ciBtYWlsZXIgaW50cm9kdWNlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgdGhhdCByZWNlaXZlcyB5b3VyIHBhdGNoZXMgbmVlZHMgdG8gYmUgYWJsZSB0byBzYXZlIGFuZAotICAgICAgICAgICAgICAgICAgICBhcHBseSB0aGVtIGRpcmVjdGx5IGZyb20geW91ciBlbWFpbHMuCi0gICAgICAgICAgICAgICAgICAgIEEgZ29vZCB3YXkgdG8gdmVyaWZ5IHRoYXQgd2hhdCB5b3UgYXJlIHNlbmRpbmcgd2lsbCBiZSBhcHBsaWNhYmxlIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVyIGlzIHRvIGRvIGEgZHJ5IHJ1biBhbmQgc2VuZCB0aGVtIHRvIHlvdXJzZWxmIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHNhdmUgYW5kIGFwcGx5IHRoZW0gYXMgdGhlIG1haW50YWluZXIgd291bGQuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZCBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZAotICAgICAgICAgICAgICAgICAgICBmb3Igc2VuZGluZyB5b3VyIHBhdGNoZXMgc2luY2UgdGhlcmUgaXMgbm8gcmlzayBvZiBjb21wcm9taXNpbmcgd2hpdGVzcGFjZQotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSwgd2hpY2ggY2FuIG9jY3VyIHdoZW4geW91IHVzZSB5b3VyIG93biBtYWlsIGNsaWVudC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBoYXZlIHRoZSBwcm9wZXIgR2l0IHBhY2thZ2VzIGluc3RhbGxlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFVidW50dSwgRGViaWFuLCBhbmQgRmVkb3JhIHRoZSBwYWNrYWdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0LWVtYWlsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgc2VuZHMgZW1haWwgYnkgdXNpbmcgYSBsb2NhbCBvciByZW1vdGUgTWFpbCBUcmFuc3BvcnQgQWdlbnQKKyAgICAgICAgICAgICAgICAgICAgKE1UQSkgc3VjaCBhcyA8ZmlsZW5hbWU+bXNtdHA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmRtYWlsPC9maWxlbmFtZT4sIG9yIHRocm91Z2ggYSBkaXJlY3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNtdHA8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGluIHlvdXIgR2l0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5naXRjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHN1Ym1pdHRpbmcgcGF0Y2hlcyB0aHJvdWdoIGVtYWlsIG9ubHksIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIHZlcnkgaW1wb3J0YW50IHRoYXQgeW91IHN1Ym1pdCB0aGVtIHdpdGhvdXQgYW55IHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgb3IgSFRNTCBmb3JtYXR0aW5nIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIG1haWxlcgorICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBuZWVkcyB0byBiZSBhYmxlCisgICAgICAgICAgICAgICAgICAgIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KKyAgICAgICAgICAgICAgICAgICAgQSBnb29kIHdheSB0byB2ZXJpZnkgdGhhdCB3aGF0IHlvdSBhcmUgc2VuZGluZyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgYnkgdGhlIG1haW50YWluZXIgaXMgdG8gZG8gYSBkcnkgcnVuIGFuZCBzZW5kCisgICAgICAgICAgICAgICAgICAgIHRoZW0gdG8geW91cnNlbGYgYW5kIHRoZW4gc2F2ZSBhbmQgYXBwbHkgdGhlbSBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciB3b3VsZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIGVtYWlsIHNpbmNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgY29tcHJvbWlzaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIGNhbiBvY2N1ciB3aGVuIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gbWFpbCBjbGllbnQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGFsc28gaGFzIHNldmVyYWwgb3B0aW9ucyB0aGF0IGxldCB5b3UKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSByZWNpcGllbnRzIGFuZCBwZXJmb3JtIGZ1cnRoZXIgZWRpdGluZyBvZiB0aGUgZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgcmVjaXBpZW50cyBhbmQgcGVyZm9ybSBmdXJ0aGVyIGVkaXRpbmcgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICBzZWUgPGZpbGVuYW1lPkdJVC1TRU5ELUVNQUlMKDEpPC9maWxlbmFtZT4gZGlzcGxheWVkIHVzaW5nCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWFuIGdpdC1zZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKaW5kZXggNDFjMTgyOS4uODVlNzMxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbApAQCAtNiw0MjcgKzYsMzAzIEBACiAKIDx0aXRsZT5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC90aXRsZT4KIAotPHBhcmE+Ci0gICAgUXVpY2sgRU1VbGF0b3IgKFFFTVUpIGlzIGFuIE9wZW4gU291cmNlIHByb2plY3QgdGhlIFlvY3RvIFByb2plY3QgdXNlcwotICAgIGFzIHBhcnQgb2YgaXRzIGRldmVsb3BtZW50ICJ0b29sIHNldCIuCi0gICAgQXMgc3VjaCwgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgY2hhcHRlciBpcyBsaW1pdGVkIHRvIHRoZQotICAgIFlvY3RvIFByb2plY3QgaW50ZWdyYXRpb24gb2YgUUVNVSBhbmQgbm90IFFFTVUgaW4gZ2VuZXJhbC4KLSAgICBGb3Igb2ZmaWNpYWwgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gUUVNVSwgc2VlIHRoZQotICAgIGZvbGxvd2luZyByZWZlcmVuY2VzOgotICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgVGhlIG9mZmljaWFsIHdlYnNpdGUgZm9yIHRoZSBRRU1VIE9wZW4gU291cmNlIHByb2plY3QuCi0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9NYW51YWwnPkRvY3VtZW50YXRpb248L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgVGhlIFFFTVUgdXNlciBtYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICA8L2l0ZW1pemVkbGlzdD4KLTwvcGFyYT4KLQotPHBhcmE+Ci0gICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0J3MgaW50ZWdyYXRpb24gb2YKLSAgICBRRU1VLCBhIGRlc2NyaXB0aW9uIG9mIGhvdyB5b3UgdXNlIFFFTVUgYW5kIGl0cyB2YXJpb3VzIG9wdGlvbnMsIHJ1bm5pbmcKLSAgICB1bmRlciBhIE5ldHdvcmsgRmlsZSBTeXN0ZW0gKE5GUykgc2VydmVyLCBhbmQgYSBmZXcgdGlwcyBhbmQgdHJpY2tzIHlvdQotICAgIG1pZ2h0IGZpbmQgaGVscGZ1bCB3aGVuIHVzaW5nIFFFTVUuCi08L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSdxZW11LW92ZXJ2aWV3Jz4KLSAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgotCiAgICAgPHBhcmE+Ci0gICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgUUVNVSBpcyBhbgotICAgICAgICBlbXVsYXRvciBhbmQgdmlydHVhbGl6YXRpb24gbWFjaGluZSB0aGF0IGFsbG93cyB5b3UgdG8gcnVuIGEgY29tcGxldGUKLSAgICAgICAgaW1hZ2UgeW91IGhhdmUgYnVpbHQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYXMganVzdCBhbm90aGVyIHRhc2sKLSAgICAgICAgb24geW91ciBidWlsZCBzeXN0ZW0uCi0gICAgICAgIFFFTVUgaXMgdXNlZnVsIGZvciBydW5uaW5nIGFuZCB0ZXN0aW5nIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIG9uCi0gICAgICAgIHN1cHBvcnRlZCBZb2N0byBQcm9qZWN0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCBoYXZpbmcgYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgUUVNVSB0byBydW4gYXV0b21hdGVkCi0gICAgICAgIFF1YWxpdHkgQXNzdXJhbmNlIChRQSkgdGVzdHMgb24gZmluYWwgaW1hZ2VzIHNoaXBwZWQgd2l0aCBlYWNoCi0gICAgICAgIHJlbGVhc2UuCisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBwcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHVzZSB0aGUKKyAgICAgICAgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLCB3aGljaCBpcyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IHRoZSBZb2N0bworICAgICAgICBQcm9qZWN0IHVzZXMgYXMgcGFydCBvZiBpdHMgZGV2ZWxvcG1lbnQgInRvb2wgc2V0Ii4KKyAgICAgICAgRm9yIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZiBRRU1VLAorICAgICAgICBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtcXVpY2stZW11bGF0b3ItcWVtdSc+UXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKLSAgICA8cGFyYT4KLSAgICAgICAgUUVNVSBpcyBtYWRlIGF2YWlsYWJsZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGEgbnVtYmVyIG9mIHdheXMuCi0gICAgICAgIE9uZSBtZXRob2QgaXMgdG8gaW5zdGFsbCBhIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKS4KLSAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIG1ha2Ugc3VyZSB5b3UgaGF2ZQotICAgICAgICBRRU1VIGF2YWlsYWJsZSwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstaW50cm8nPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXFlbXUnPgotICAgIDx0aXRsZT5SdW5uaW5nIFFFTVU8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFJ1bm5pbmcgUUVNVSBpbnZvbHZlcyBoYXZpbmcgeW91ciBidWlsZCBlbnZpcm9ubWVudCBzZXQgdXAsIGhhdmluZyB0aGUKLSAgICAgICAgcmlnaHQgYXJ0aWZhY3RzIGF2YWlsYWJsZSwgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRvIHVzZSB0aGUgbWFueQotICAgICAgICBvcHRpb25zIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB5b3Ugd2hlbiB5b3Ugc3RhcnQgUUVNVSB1c2luZyB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdxZW11LXNldHRpbmctdXAtdGhlLWVudmlyb25tZW50Jz4KLSAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIEVudmlyb25tZW50PC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXFlbXUnPgorICAgICAgICA8dGl0bGU+UnVubmluZyBRRU1VPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBydW4gUUVNVSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCBmcm9tIHdoaWNoIHlvdSBydW4gQml0QmFrZS4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgeW91IG5lZWQgdG8gc291cmNlIGEgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICBUbyB1c2UgUUVNVSwgeW91IG5lZWQgdG8gaGF2ZSBRRU1VIGluc3RhbGxlZCBhbmQgaW5pdGlhbGl6ZWQgYXMKKyAgICAgICAgICAgIHdlbGwgYXMgaGF2ZSB0aGUgcHJvcGVyIGFydGlmYWN0cyAoaS5lLiBpbWFnZSBmaWxlcyBhbmQgcm9vdAorICAgICAgICAgICAgZmlsZXN5c3RlbXMpIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzIHRvIHJ1biBRRU1VOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3RoZS1xZW11LWVtdWxhdG9yJz5UaGUgUUVNVSBFbXVsYXRvcjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0dGluZyBVcCB0aGUgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSG93IHlvdSBzZXQgdXAgdGhlIFFFTVUgZW52aXJvbm1lbnQgZGVwZW5kcyBvbiBob3cgeW91CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBRRU1VOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjbG9uZWQgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IG9yIHlvdSBkb3dubG9hZGVkIGFuZCB1bnBhY2tlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlIHRhcmJhbGwsIHlvdSBjYW4gc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaW5zdGFsbGVkIGEgY3Jvc3MtdG9vbGNoYWluLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRoZSBzY3JpcHQgdGhhdCBpbml0aWFsaXplcyB0aGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBzY3JpcHQgZnJvbSB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5X3NkazwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC4gfi9wb2t5X3Nkay9lbnZpcm9ubWVudC1zZXR1cC1jb3JlMi02NC1wb2t5LWxpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW5zdXJlIHRoZSBBcnRpZmFjdHMgYXJlIGluIFBsYWNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgeW91IGhhdmUgYSBwcmUtYnVpbHQga2VybmVsIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBib290IGluIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBhbHNvIG5lZWQgdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0gZm9yIHlvdXIgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmXigJlzIGFyY2hpdGVjdHVyZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBwcmV2aW91c2x5IGJ1aWx0IGFuIGltYWdlIGZvciBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gdGhlIGFydGlmYWN0cyBhcmUgaW4gcGxhY2UgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbm90IGJ1aWx0IGFuIGltYWdlLCB5b3UgY2FuIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19NQUNISU5FU19ETF9VUkw7Jz5tYWNoaW5lcy9xZW11PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhIGFuZCBkb3dubG9hZCBhIHByZS1idWlsdCBpbWFnZSB0aGF0IG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGFyY2hpdGVjdHVyZSBhbmQgY2FuIGJlIHJ1biBvbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CiAKLSAgICA8c2VjdGlvbiBpZD0ncWVtdS11c2luZy10aGUtcnVucWVtdS1jb21tYW5kJz4KLSAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IENvbW1hbmQ8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGJhc2ljIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZCBzeW50YXggaXMgYXMKLSAgICAgICAgICAgIGZvbGxvd3M6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRyYWN0aW5nLXRoZS1yb290LWZpbGVzeXN0ZW0nPkV4dHJhY3RpbmcgdGhlIFJvb3QgRmlsZXN5c3RlbTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGV4dHJhY3QgYSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBydW5xZW11IFs8cmVwbGFjZWFibGU+b3B0aW9uPC9yZXBsYWNlYWJsZT4gXSAgWy4uLl0KLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEJhc2VkIG9uIHdoYXQgeW91IHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZSwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZG9lcyBhIGdvb2Qgam9iIG9mIGZpZ3VyaW5nIG91dCB3aGF0Ci0gICAgICAgICAgICB5b3UgYXJlIHRyeWluZyB0byBkby4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBieSBkZWZhdWx0LCBRRU1VIGxvb2tzIGZvciB0aGUgbW9zdCByZWNlbnRseSBidWlsdAotICAgICAgICAgICAgaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZSB0aW1lc3RhbXAgd2hlbiBpdCBuZWVkcyB0byBsb29rIGZvciBhbgotICAgICAgICAgICAgaW1hZ2UuCi0gICAgICAgICAgICBNaW5pbWFsbHksIHRocm91Z2ggdGhlIHVzZSBvZiBvcHRpb25zLCB5b3UgbXVzdCBwcm92aWRlIGVpdGhlcgotICAgICAgICAgICAgYSBtYWNoaW5lIG5hbWUsIGEgdmlydHVhbCBtYWNoaW5lIGltYWdlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPioudm1kazwvZmlsZW5hbWU+KSwgb3IgYSBrZXJuZWwgaW1hZ2UKLSAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5iaW48L2ZpbGVuYW1lPikuCi0gICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBCYXNlZCBvbiB3aGF0IHlvdSBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZG9lcyBhIGdvb2Qgam9iIG9mIGZpZ3VyaW5nCisgICAgICAgICAgICAgICAgICAgIG91dCB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRvLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCwgUUVNVSBsb29rcyBmb3IgdGhlIG1vc3QgcmVjZW50bHkKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZSB0aW1lc3RhbXAgd2hlbiBpdCBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBsb29rIGZvciBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgTWluaW1hbGx5LCB0aHJvdWdoIHRoZSB1c2Ugb2Ygb3B0aW9ucywgeW91IG11c3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgYSBtYWNoaW5lIG5hbWUsIGEgdmlydHVhbCBtYWNoaW5lIGltYWdlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+KndpYy52bWRrPC9maWxlbmFtZT4pLCBvciBhIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouYmluPC9maWxlbmFtZT4pLjwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhIGRlc2NyaXB0aW9uIG9mIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KLSAgICAgICAgICAgIG9wdGlvbnMgeW91IGNhbiBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmU6Ci0gICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgZG8gcHJvdmlkZSBzb21lICJpbGxlZ2FsIiBvcHRpb24gY29tYmluYXRpb24gb3IgcGVyaGFwcwotICAgICAgICAgICAgICAgIHlvdSBkbyBub3QgcHJvdmlkZSBlbm91Z2ggaW4gdGhlIHdheSBvZiBvcHRpb25zLAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gcHJvdmlkZXMgYXBwcm9wcmlhdGUgZXJyb3IKLSAgICAgICAgICAgICAgICBtZXNzYWdpbmcgdG8gaGVscCB5b3UgY29ycmVjdCB0aGUgcHJvYmxlbS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgUUVNVSBtYWNoaW5lIGFyY2hpdGVjdHVyZSwgd2hpY2ggbXVzdCBiZSAicWVtdXg4NiIsCi0gICAgICAgICAgICAgICAgICAgICJxZW11eDg2XzY0IiwgInFlbXVhcm0iLCAicWVtdW1pcHMiLCAicWVtdW1pcHNlbCIsCi0gICAgICAgICAgICAgICAgICAgIOKAnHFlbXVtaXBzNjQiLCAicWVtdXNoNCIsICJxZW11cHBjIiwgInFlbXVtaWNyb2JsYXplIiwKLSAgICAgICAgICAgICAgICAgICAgb3IgInFlbXV6eW5xIi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+Vk08L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgdmlydHVhbCBtYWNoaW5lIGltYWdlLCB3aGljaCBtdXN0IGJlIGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi52bWRrPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IHdhbnQgdG8gYm9vdCBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4udm1kazwvZmlsZW5hbWU+IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZmlsZW5hbWUgeW91IHByb3ZpZGUgbXVzdCBjb250YWluIG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHN0cmluZ3M6ICJxZW11eDg2LTY0IiwgInFlbXV4ODYiLCAicWVtdWFybSIsCi0gICAgICAgICAgICAgICAgICAgICJxZW11bWlwczY0IiwgInFlbXVtaXBzIiwgInFlbXVwcGMiLCBvciAicWVtdXNoNCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48cmVwbGFjZWFibGU+Uk9PVEZTPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIEEgcm9vdCBmaWxlc3lzdGVtIHRoYXQgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgIGZpbGV0eXBlIGV4dGVuc2lvbnM6ICJleHQyIiwgImV4dDMiLCAiZXh0NCIsICJqZmZzMiIsCi0gICAgICAgICAgICAgICAgICAgICJuZnMiLCBvciAiYnRyZnMiLgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZW5hbWUgeW91IHByb3ZpZGUgZm9yIHRoaXMgb3B0aW9uIHVzZXMg4oCcbmZz4oCdLCBpdAotICAgICAgICAgICAgICAgICAgICBtdXN0IHByb3ZpZGUgYW4gZXhwbGljaXQgcm9vdCBmaWxlc3lzdGVtIHBhdGguCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGltYWdlLCB3aGljaCBpcyBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlY3RzIGl0IGFuZCBhc3N1bWVzIHRoZQotICAgICAgICAgICAgICAgICAgICBmaWxlIGlzIGEga2VybmVsIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUUVNVSBtYWNoaW5lLCB3aGljaCBtdXN0IGJlIG9uZQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nOiAicWVtdXg4NiIsCi0gICAgICAgICAgICAgICAgICAgICJxZW11eDg2LTY0IiwgInFlbXVhcm0iLCAicWVtdW1pcHMiLCAicWVtdW1pcHNlbCIsCi0gICAgICAgICAgICAgICAgICAgIOKAnHFlbXVtaXBzNjQiLCAicWVtdXNoNCIsICJxZW11cHBjIiwgInFlbXVtaWNyb2JsYXplIiwKLSAgICAgICAgICAgICAgICAgICAgb3IgInFlbXV6eW5xIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+IG9wdGlvbnMgYXJlIGJhc2ljYWxseQotICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZSBhIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHRyaWVzIHRvIGRldGVybWluZQotICAgICAgICAgICAgICAgICAgICBpdCBiYXNlZCBvbiBvdGhlciBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnJhbWZzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyB5b3UgYXJlIGJvb3RpbmcgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJhbWZzKQotICAgICAgICAgICAgICAgICAgICBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3Bpby5nejwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmlzbzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIElTTyBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmlzbzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5vZ3JhcGhpYzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBEaXNhYmxlcyB0aGUgdmlkZW8gY29uc29sZSwgd2hpY2ggc2V0cyB0aGUgY29uc29sZSB0bwotICAgICAgICAgICAgICAgICAgICAidHR5czAiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgc2VyaWFsIGNvbnNvbGUgb24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYvdHR5UzA8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaW9zZGlyPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIGRpcmVjdG9yeSBmb3IgQklPUywgVkdBIEJJT1MgYW5kCi0gICAgICAgICAgICAgICAgICAgIGtleW1hcHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ymlvc2ZpbGVuYW1lPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIEJJT1MgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5xZW11cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBRRU1VIHBhcmFtZXRlcnMuCi0gICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIG9wdGlvbiB0byBwYXNzIG9wdGlvbnMgb3RoZXIgdGhhbiB0aGUgc2ltcGxlCi0gICAgICAgICAgICAgICAgICAgICJrdm0iIGFuZCAic2VyaWFsIiBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJvb3RwYXJhbXM9XCI8cmVwbGFjZWFibGU+eHl6PC9yZXBsYWNlYWJsZT5cIjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgY3VzdG9tIGJvb3QgcGFyYW1ldGVycyBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGF1ZGlvIGluIFFFTVUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IG9wdGlvbiBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgIGVpdGhlciAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiIGluIG9yZGVyIGZvciBhdWRpbyB0byBiZQotICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgotICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+c25kX2ludGVsOHgwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnNuZF9lbnMxMzcwPC9maWxlbmFtZT4gZHJpdmVyIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGxpbnV4IGd1ZXN0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNsaXJwPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgInNsaXJwIiBuZXR3b3JraW5nLCB3aGljaCBpcyBhIGRpZmZlcmVudCB3YXkKLSAgICAgICAgICAgICAgICAgICAgb2YgbmV0d29ya2luZyB0aGF0IGRvZXMgbm90IG5lZWQgcm9vdCBhY2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gaXMgbm90IGFzIGVhc3kgdG8gdXNlIG9yIGNvbXByZWhlbnNpdmUKLSAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0na3ZtLWNvbmQnPjxmaWxlbmFtZT5rdm08L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBLVk0gd2hlbiBydW5uaW5nICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIKLSAgICAgICAgICAgICAgICAgICAgUUVNVSBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgS1ZNIHRvIHdvcmssIGFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQ6CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBleGFtcGxlcyB0byBoZWxwIGlsbHVzdHJhdGUKKyAgICAgICAgICAgICAgICAgICAgZnVydGhlciBRRU1VOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBtdXN0IGJlIGVpdGhlcgotcWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzdGFydHMgUUVNVSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBzZXQgdG8gInFlbXV4ODYiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gYXV0b21hdGljYWxseSBmaW5kcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTIwMTQwNzA3MDc0NjExLnJvb3Rmcy5leHQzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYnVpbGQgY3JlYXRlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIG1vcmUgdGhhbiBvbmUgaW1hZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cywgUUVNVSBmaW5kcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VzIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0IGltYWdlIGFjY29yZGluZyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBidWlsZCBob3N0IGhhcyB0byBoYXZlIHRoZSBLVk0gbW9kdWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCwgd2hpY2ggYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYva3ZtPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBib3RoIHdyaXRhYmxlIGFuZCByZWFkYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+a3ZtLXZob3N0PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdpdGggVkhPU1Qgc3VwcG9ydCB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IgotICAgICAgICAgICAgICAgICAgICBRRU1VIGFyY2hpdGVjdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBLVk0gd2l0aCBWSE9TVCB0byB3b3JrLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdAotICAgICAgICAgICAgICAgICAgICBiZSBtZXQ6Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0na3ZtLWNvbmQnPmt2bTwvbGluaz4gb3B0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9ucyBtdXN0IGJlIG1ldC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdmlydGlvIG5ldCBkZXZpY2UsIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQg4oCcc2xpcnAtZW5hYmxlZOKAnS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHVibGljdm5jPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBWTkMgc2VydmVyIG9wZW4gdG8gYWxsIGhvc3RzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgZnVydGhlciB1bmRlcnN0YW5kaW5nIHJlZ2FyZGluZyBvcHRpb24gdXNlIHdpdGgKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4sIGNvbnNpZGVyIHNvbWUgZXhhbXBsZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzdGFydHMgUUVNVSB3aXRoCi0gICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IHNldCB0byAicWVtdXg4NiIuCi0gICAgICAgICAgICBBc3N1bWluZyBhIHN0YW5kYXJkCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGF1dG9tYXRpY2FsbHkgZmluZHMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCi0gICAgICAgICAgICB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni0yMDE0MDcwNzA3NDYxMS5yb290ZnMuZXh0MzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYnVpbGQgY3JlYXRlZCBhCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UpLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgV2hlbiBtb3JlIHRoYW4gb25lIGltYWdlIHdpdGggdGhlIHNhbWUgbmFtZSBleGlzdHMsIFFFTVUgZmluZHMKLSAgICAgICAgICAgICAgICBhbmQgdXNlcyB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlCi0gICAgICAgICAgICAgICAgdGltZXN0YW1wLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICQgcnVucWVtdSBxZW11eDg2Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGV4YW1wbGUgcHJvZHVjZXMgdGhlIGV4YWN0IHNhbWUgcmVzdWx0cyBhcyB0aGUKLSAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUuCi0gICAgICAgICAgICBUaGlzIGNvbW1hbmQsIGhvd2V2ZXIsIHNwZWNpZmljYWxseSBwcm92aWRlcyB0aGUgaW1hZ2UKLSAgICAgICAgICAgIGFuZCByb290IGZpbGVzeXN0ZW0gdHlwZS4KLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgcHJvZHVjZXMgdGhlIGV4YWN0IHNhbWUgcmVzdWx0cyBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCwgaG93ZXZlciwgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByb290IGZpbGVzeXN0ZW0gdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgcnVucWVtdSBxZW11eDg2IGNvcmUtaW1hZ2UtbWluaW1hbCBleHQzCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3BlY2lmaWVzIHRvIGJvb3QgYW4gaW5pdGlhbCBSQU0gZGlzayBpbWFnZQotICAgICAgICAgICAgYW5kIHRvIGVuYWJsZSBhdWRpbyBpbiBRRU1VLgotICAgICAgICAgICAgRm9yIHRoaXMgY2FzZSwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBzZXQgdGhlCi0gICAgICAgICAgICBpbnRlcm5hbCB2YXJpYWJsZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICJjcGlvLmd6Ii4KLSAgICAgICAgICAgIEFsc28sIGZvciBhdWRpbyB0byBiZSBlbmFibGVkLCBhbiBhcHByb3ByaWF0ZSBkcml2ZXIgbXVzdAotICAgICAgICAgICAgYmUgaW5zdGFsbGVkIChzZWUgdGhlIHByZXZpb3VzIGRlc2NyaXB0aW9uIGZvciB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+IG9wdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCi0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzcGVjaWZpZXMgdG8gYm9vdCBhbiBpbml0aWFsIFJBTSBkaXNrIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRvIGVuYWJsZSBhdWRpbyBpbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsIHZhcmlhYmxlIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcGlvLmd6Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgYXVkaW8gdG8gYmUgZW5hYmxlZCwgYW4gYXBwcm9wcmlhdGUgZHJpdmVyIG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbnN0YWxsZWQgKHNlZSB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+IG9wdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHJ1bnFlbXUgcWVtdXg4NiByYW1mcyBhdWRpbwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIGZvcgotICAgICAgICAgICAgUUVNVSB0byBsYXVuY2guCi0gICAgICAgICAgICBXaGlsZSB0aGUgY29tbWFuZCBkb2VzIHByb3ZpZGUgYSByb290IGZpbGVzeXN0ZW0gdHlwZSwgaXQKLSAgICAgICAgICAgIG11c3QgYWxzbyBtaW5pbWFsbHkgcHJvdmlkZSBhCi0gICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+LAotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPktFUk5FTDwvcmVwbGFjZWFibGU+LCBvcgotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT4gb3B0aW9uLgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSB0byBsYXVuY2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGNvbW1hbmQgZG9lcyBwcm92aWRlIGEgcm9vdCBmaWxlc3lzdGVtIHR5cGUsIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBhbHNvIG1pbmltYWxseSBwcm92aWRlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPiwgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Vk08L3JlcGxhY2VhYmxlPiBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHJ1bnFlbXUgZXh0MwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNwZWNpZmllcyB0byBib290IGEgdmlydHVhbCBtYWNoaW5lIGltYWdlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPi52bWRrPC9maWxlbmFtZT4gZmlsZSkuCi0gICAgICAgICAgICBGcm9tIHRoZSA8ZmlsZW5hbWU+LnZtZGs8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZGV0ZXJtaW5lcyB0aGUgUUVNVQotICAgICAgICAgICAgYXJjaGl0ZWN0dXJlICg8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+KSB0byBiZQotICAgICAgICAgICAgInFlbXV4ODYiIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtIHR5cGUgdG8gYmUgInZtZGsiLgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgL2hvbWUvc2NvdHQtbGVub3ZvL3ZtL2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LnZtZGsKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNwZWNpZmllcyB0byBib290IGEgdmlydHVhbCBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgKDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlcm1pbmVzIHRoZSBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlICg8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljLnZtZGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdxZW11LXJ1bm5pbmctdW5kZXItYS1uZXR3b3JrLWZpbGUtc3lzdGVtLW5mcy1zZXJ2ZXInPgotICAgIDx0aXRsZT5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE9uZSBtZXRob2QgZm9yIHJ1bm5pbmcgUUVNVSBpcyB0byBydW4gaXQgb24gYW4gTkZTIHNlcnZlci4KLSAgICAgICAgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgZmlsZSBzeXN0ZW0gZnJvbSBib3RoCi0gICAgICAgIHRoZSBidWlsZCBhbmQgdGhlIGVtdWxhdGVkIHN5c3RlbSBhdCB0aGUgc2FtZSB0aW1lLgotICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBzeXN0ZW0gZG9lcyBub3QgbmVlZCByb290IHByaXZpbGVnZXMKLSAgICAgICAgdG8gcnVuLgotICAgICAgICBJdCB1c2VzIGEgdXNlciBzcGFjZSBORlMgc2VydmVyIHRvIGF2b2lkIHRoYXQuCi0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHNldCB1cCBmb3IgcnVubmluZyBRRU1VIHVzaW5nIGFuIE5GUwotICAgICAgICBzZXJ2ZXIgYW5kIHRoZW4gaG93IHlvdSBjYW4gc3RhcnQgYW5kIHN0b3AgdGhlIHNlcnZlci4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1zZXR0aW5nLXVwLXRvLXVzZS1uZnMnPgotICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgTkZTPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nc3dpdGNoaW5nLWJldHdlZW4tY29uc29sZXMnPgorICAgICAgICA8dGl0bGU+U3dpdGNoaW5nIEJldHdlZW4gQ29uc29sZXM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSB5b3UgYXJlIGFibGUgdG8gcnVuIFFFTVUgaW4geW91ciBlbnZpcm9ubWVudCwgeW91IGNhbiB1c2UgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IHNjcmlwdCwgd2hpY2ggaXMgbG9jYXRlZAotICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFsb25nIHdpdGgKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ydW5xZW11LWV4dHJhY3Qtc2RrPC9maWxlbmFtZT4gdGFrZXMgYSByb290Ci0gICAgICAgICAgICBmaWxlIHN5c3RlbSB0YXJiYWxsIGFuZCBleHRyYWN0cyBpdCBpbnRvIGEgbG9jYXRpb24gdGhhdCB5b3UKLSAgICAgICAgICAgIHNwZWNpZnkuCi0gICAgICAgICAgICBUaGVuLCB3aGVuIHlvdSBydW4gPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiwgeW91IGNhbiBzcGVjaWZ5Ci0gICAgICAgICAgICB0aGUgbG9jYXRpb24gdGhhdCBoYXMgdGhlIGZpbGUgc3lzdGVtIHRvIHBhc3MgaXQgdG8gUUVNVS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHRha2VzIGEgZmlsZSBzeXN0ZW0gYW5kIGV4dHJhY3RzIGl0IHRvCi0gICAgICAgICAgICBhIGRpcmVjdG9yeSBuYW1lZCA8ZmlsZW5hbWU+dGVzdC1uZnM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgIFdoZW4gYm9vdGluZyBvciBydW5uaW5nIFFFTVUsIHlvdSBjYW4gc3dpdGNoIGJldHdlZW4KKyAgICAgICAgICAgIHN1cHBvcnRlZCBjb25zb2xlcyBieSB1c2luZworICAgICAgICAgICAgQ3RybCtBbHQrPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIEN0cmwrQWx0KzMgc3dpdGNoZXMgeW91IHRvIHRoZSBzZXJpYWwgY29uc29sZQorICAgICAgICAgICAgYXMgbG9uZyBhcyB0aGF0IGNvbnNvbGUgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgIEJlaW5nIGFibGUgdG8gc3dpdGNoIGNvbnNvbGVzIGlzIGhlbHBmdWwsIGZvciBleGFtcGxlLCBpZgorICAgICAgICAgICAgdGhlIG1haW4gUUVNVSBjb25zb2xlIGJyZWFrcyBmb3Igc29tZSByZWFzb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBVc3VhbGx5LCAiMiIgZ2V0cyB5b3UgdG8gdGhlIG1haW4gY29uc29sZSBhbmQgIjMiCisgICAgICAgICAgICAgICAgZ2V0cyB5b3UgdG8gdGhlIHNlcmlhbCBjb25zb2xlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlbW92aW5nLXRoZS1zcGxhc2gtc2NyZWVuJz4KKyAgICAgICAgPHRpdGxlPlJlbW92aW5nIHRoZSBTcGxhc2ggU2NyZWVuPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gcmVtb3ZlIHRoZSBzcGxhc2ggc2NyZWVuIHdoZW4gUUVNVSBpcyBib290aW5nIGJ5CisgICAgICAgICAgICB1c2luZyBBbHQrbGVmdC4KKyAgICAgICAgICAgIFJlbW92aW5nIHRoZSBzcGxhc2ggc2NyZWVuIGFsbG93cyB5b3UgdG8gc2VlIHdoYXQgaXMKKyAgICAgICAgICAgIGhhcHBlbmluZyBpbiB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkaXNhYmxpbmctdGhlLWN1cnNvci1ncmFiJz4KKyAgICAgICAgPHRpdGxlPkRpc2FibGluZyB0aGUgQ3Vyc29yIEdyYWI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgUUVNVSBpbnRlZ3JhdGlvbiBjYXB0dXJlcyB0aGUgY3Vyc29yIHdpdGhpbiB0aGUKKyAgICAgICAgICAgIG1haW4gd2luZG93LgorICAgICAgICAgICAgSXQgZG9lcyB0aGlzIHNpbmNlIHN0YW5kYXJkIG1vdXNlIGRldmljZXMgb25seSBwcm92aWRlCisgICAgICAgICAgICByZWxhdGl2ZSBpbnB1dCBhbmQgbm90IGFic29sdXRlIGNvb3JkaW5hdGVzLgorICAgICAgICAgICAgWW91IHRoZW4gaGF2ZSB0byBicmVhayBvdXQgb2YgdGhlIGdyYWIgdXNpbmcgdGhlICJDdHJsK0FsdCIKKyAgICAgICAgICAgIGtleSBjb21iaW5hdGlvbi4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBZb2N0byBQcm9qZWN0J3MgaW50ZWdyYXRpb24gb2YgUUVNVSBlbmFibGVzCisgICAgICAgICAgICB0aGUgd2Fjb20gVVNCIHRvdWNoIHBhZCBkcml2ZXIgYnkgZGVmYXVsdCB0byBhbGxvdyBpbnB1dAorICAgICAgICAgICAgb2YgYWJzb2x1dGUgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICBUaGlzIGRlZmF1bHQgbWVhbnMgdGhhdCB0aGUgbW91c2UgY2FuIGVudGVyIGFuZCBsZWF2ZSB0aGUKKyAgICAgICAgICAgIG1haW4gd2luZG93IHdpdGhvdXQgdGhlIGdyYWIgdGFraW5nIGVmZmVjdCBsZWFkaW5nIHRvIGEKKyAgICAgICAgICAgIGJldHRlciB1c2VyIGV4cGVyaWVuY2UuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz4KKyAgICAgICAgPHRpdGxlPlJ1bm5pbmcgVW5kZXIgYSBOZXR3b3JrIEZpbGUgU3lzdGVtIChORlMpIFNlcnZlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgbWV0aG9kIGZvciBydW5uaW5nIFFFTVUgaXMgdG8gcnVuIGl0IG9uIGFuIE5GUyBzZXJ2ZXIuCisgICAgICAgICAgICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSBmaWxlIHN5c3RlbQorICAgICAgICAgICAgZnJvbSBib3RoIHRoZSBidWlsZCBhbmQgdGhlIGVtdWxhdGVkIHN5c3RlbSBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgc3lzdGVtIGRvZXMgbm90IG5lZWQgcm9vdAorICAgICAgICAgICAgcHJpdmlsZWdlcyB0byBydW4uCisgICAgICAgICAgICBJdCB1c2VzIGEgdXNlciBzcGFjZSBORlMgc2VydmVyIHRvIGF2b2lkIHRoYXQuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gc2V0IHVwIGZvciBydW5uaW5nIFFFTVUgdXNpbmcgYW4gTkZTCisgICAgICAgICAgICBzZXJ2ZXIuCisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0cmFjdCBhIFJvb3QgRmlsZXN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgYWJsZSB0byBydW4gUUVNVSBpbiB5b3VyIGVudmlyb25tZW50LCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFsb25nIHdpdGggdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiB0YWtlcyBhCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0YXJiYWxsIGFuZCBleHRyYWN0cyBpdCBpbnRvIGEgbG9jYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3Ugc3BlY2lmeS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgdGFrZXMgYSBmaWxlIHN5c3RlbSBhbmQKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgaXQgdG8gYSBkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtbmZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcnVucWVtdS1leHRyYWN0LXNkayAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1zYXRvLXFlbXV4ODYudGFyLmJ6MiB0ZXN0LW5mcwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBleHRyYWN0ZWQgdGhlIGZpbGUgc3lzdGVtLCB5b3UgY2FuIHJ1bgotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBub3JtYWxseSB3aXRoIHRoZSBhZGRpdGlvbmFsCi0gICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0uCi0gICAgICAgICAgICBZb3UgY2FuIHRoZW4gYWxzbyBtYWtlIGNoYW5nZXMgdG8gdGhlIGZpbGVzIHdpdGhpbgotICAgICAgICAgICAgPGZpbGVuYW1lPi4vdGVzdC1uZnM8L2ZpbGVuYW1lPiBhbmQgc2VlIHRob3NlIGNoYW5nZXMgYXBwZWFyIGluIHRoZQotICAgICAgICAgICAgaW1hZ2UgaW4gcmVhbCB0aW1lLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGltYWdlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YXJ0IFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBleHRyYWN0ZWQgdGhlIGZpbGUgc3lzdGVtLCB5b3UgY2FuIHJ1bgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IG5vcm1hbGx5IHdpdGggdGhlIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gYWxzbyBtYWtlIGNoYW5nZXMgdG8gdGhlIGZpbGVzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li90ZXN0LW5mczwvZmlsZW5hbWU+IGFuZCBzZWUgdGhvc2UgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICBhcHBlYXIgaW4gdGhlIGltYWdlIGluIHJlYWwgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHJ1bnFlbXUgcWVtdXg4NiAuL3Rlc3QtbmZzCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1zdGFydGluZy1hbmQtc3RvcHBpbmctbmZzJz4KLSAgICAgICAgPHRpdGxlPlN0YXJ0aW5nIGFuZCBTdG9wcGluZyBORlM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBtYW51YWxseSBzdGFydCBhbmQgc3RvcCB0aGUgTkZTIHNoYXJlIHVzaW5nIHRoZXNlCi0gICAgICAgICAgICBjb21tYW5kczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3RhcnQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTdGFydHMgdGhlIE5GUyBzaGFyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTaG91bGQgeW91IG5lZWQgdG8gc3RhcnQsIHN0b3AsIG9yIHJlc3RhcnQgdGhlIE5GUyBzaGFyZSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgc3RhcnRzIHRoZSBORlMgc2hhcmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBydW5xZW11LWV4cG9ydC1yb290ZnMgc3RhcnQgPHJlcGxhY2VhYmxlPmZpbGUtc3lzdGVtLWxvY2F0aW9uPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zdG9wPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgU3RvcHMgdGhlIE5GUyBzaGFyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBydW5xZW11LWV4cG9ydC1yb290ZnMgc3RvcCA8cmVwbGFjZWFibGU+ZmlsZS1zeXN0ZW0tbG9jYXRpb248L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnJlc3RhcnQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBSZXN0YXJ0cyB0aGUgTkZTIHNoYXJlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzdG9wcyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgIHJ1bnFlbXUtZXhwb3J0LXJvb3RmcyBzdG9wIDxyZXBsYWNlYWJsZT5maWxlLXN5c3RlbS1sb2NhdGlvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCByZXN0YXJ0cyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcnVucWVtdS1leHBvcnQtcm9vdGZzIHJlc3RhcnQgPHJlcGxhY2VhYmxlPmZpbGUtc3lzdGVtLWxvY2F0aW9uPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncWVtdS10aXBzLWFuZC10cmlja3MnPgotICAgIDx0aXRsZT5UaXBzIGFuZCBUcmlja3M8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhpbmdzIHlvdSBjYW4gZG8gdG8gbWFrZSBydW5uaW5nIFFFTVUKLSAgICAgICAgaW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QgYSBiZXR0ZXIgZXhwZXJpZW5jZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3dpdGNoaW5nIEJldHdlZW4gQ29uc29sZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBXaGVuIGJvb3Rpbmcgb3IgcnVubmluZyBRRU1VLCB5b3UgY2FuIHN3aXRjaCBiZXR3ZWVuCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkIGNvbnNvbGVzIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgQ3RybCtBbHQrPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBDdHJsK0FsdCszIHN3aXRjaGVzIHlvdSB0byB0aGUgc2VyaWFsIGNvbnNvbGUgYXMKLSAgICAgICAgICAgICAgICBsb25nIGFzIHRoYXQgY29uc29sZSBpcyBlbmFibGVkLgotICAgICAgICAgICAgICAgIEJlaW5nIGFibGUgdG8gc3dpdGNoIGNvbnNvbGVzIGlzIGhlbHBmdWwsIGZvciBleGFtcGxlLCBpZiB0aGUKLSAgICAgICAgICAgICAgICBtYWluIFFFTVUgY29uc29sZSBicmVha3MgZm9yIHNvbWUgcmVhc29uLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBVc3VhbGx5LCAiMiIgZ2V0cyB5b3UgdG8gdGhlIG1haW4gY29uc29sZSBhbmQgIjMiIGdldHMgeW91Ci0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBzZXJpYWwgY29uc29sZS4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJlbW92aW5nIHRoZSBTcGxhc2ggU2NyZWVuOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiByZW1vdmUgdGhlIHNwbGFzaCBzY3JlZW4gd2hlbiBRRU1VIGlzIGJvb3RpbmcgYnkKLSAgICAgICAgICAgICAgICB1c2luZyBBbHQrbGVmdC4KLSAgICAgICAgICAgICAgICBSZW1vdmluZyB0aGUgc3BsYXNoIHNjcmVlbiBhbGxvd3MgeW91IHRvIHNlZSB3aGF0IGlzIGhhcHBlbmluZwotICAgICAgICAgICAgICAgIGluIHRoZSBiYWNrZ3JvdW5kLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EaXNhYmxpbmcgdGhlIEN1cnNvciBHcmFiOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgUUVNVSBpbnRlZ3JhdGlvbiBjYXB0dXJlcyB0aGUgY3Vyc29yIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICBtYWluIHdpbmRvdy4KLSAgICAgICAgICAgICAgICBJdCBkb2VzIHRoaXMgc2luY2Ugc3RhbmRhcmQgbW91c2UgZGV2aWNlcyBvbmx5IHByb3ZpZGUgcmVsYXRpdmUKLSAgICAgICAgICAgICAgICBpbnB1dCBhbmQgbm90IGFic29sdXRlIGNvb3JkaW5hdGVzLgotICAgICAgICAgICAgICAgIFlvdSB0aGVuIGhhdmUgdG8gYnJlYWsgb3V0IG9mIHRoZSBncmFiIHVzaW5nIHRoZSAiQ3RybCtBbHQiIGtleQotICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBZb2N0byBQcm9qZWN0J3MgaW50ZWdyYXRpb24gb2YgUUVNVSBlbmFibGVzIHRoZQotICAgICAgICAgICAgICAgIHdhY29tIFVTQiB0b3VjaCBwYWQgZHJpdmVyIGJ5IGRlZmF1bHQgdG8gYWxsb3cgaW5wdXQgb2YgYWJzb2x1dGUKLSAgICAgICAgICAgICAgICBjb29yZGluYXRlcy4KLSAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgbWVhbnMgdGhhdCB0aGUgbW91c2UgY2FuIGVudGVyIGFuZCBsZWF2ZSB0aGUKLSAgICAgICAgICAgICAgICBtYWluIHdpbmRvdyB3aXRob3V0IHRoZSBncmFiIHRha2luZyBlZmZlY3QgbGVhZGluZyB0byBhIGJldHRlcgotICAgICAgICAgICAgICAgIHVzZXIgZXhwZXJpZW5jZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbAppbmRleCBiODUyN2Y2Li4xOTViMjJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKQEAgLTcsNTIzICs3LDc0NCBAQAogPHRpdGxlPkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogPHBhcmE+Ci0gICAgVGhpcyBjaGFwdGVyIGludHJvZHVjZXMgdGhlIFlvY3RvIFByb2plY3QgYW5kIGdpdmVzIHlvdSBhbiBpZGVhIG9mIHdoYXQgeW91IG5lZWQgdG8gZ2V0IHN0YXJ0ZWQuCi0gICAgWW91IGNhbiBmaW5kIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBob3N0IGFuZCBidWlsZCBvciB1c2UgaW1hZ2VzIGZvcgotICAgIGhhcmR3YXJlIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBieSByZWFkaW5nIHRoZQorICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gZ2V0dGluZyBzZXQgdXAgdG8gdXNlIHRoZQorICAgIFlvY3RvIFByb2plY3QuCisgICAgRm9yIGEgbW9yZSBmcm9udC10by1lbmQgcHJvY2VzcyB0aGF0IHRha2VzIHlvdSBmcm9tIG1pbmltYWxseSBwcmVwYXJpbmcKKyAgICBhIGJ1aWxkIGhvc3QgdGhyb3VnaCBidWlsZGluZyBhbiBpbWFnZSwgc2VlIHRoZQogICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPi4KIDwvcGFyYT4KIAotPHBhcmE+Ci0gICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGNoYXB0ZXIgc3VtbWFyaXplcyB3aGF0IGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGFuZCBwcm92aWRlcwotICAgIHNvbWUgaGlnaGVyLWxldmVsIGNvbmNlcHRzIHlvdSBtaWdodCB3YW50IHRvIGNvbnNpZGVyLgotPC9wYXJhPgotCi08c2VjdGlvbiBpZD0naW50cm9kdWNpbmctdGhlLXlvY3RvLXByb2plY3QnPgotICAgIDx0aXRsZT5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Cis8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPgorICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UgY29sbGFib3JhdGlvbiBwcm9qZWN0IGZvY3VzZWQgb24gZW1iZWRkZWQgTGludXggZGV2ZWxvcG1lbnQuCi0gICAgICAgIFRoZSBwcm9qZWN0IGN1cnJlbnRseSBwcm92aWRlcyBhIGJ1aWxkIHN5c3RlbSB0aGF0IGlzCi0gICAgICAgIHJlZmVycmVkIHRvIGFzIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvbGluaz4KLSAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdmFyaW91cyBhbmNpbGxhcnkgdG9vbHMgZm9yIHRoZSBlbWJlZGRlZCBkZXZlbG9wZXIKLSAgICAgICAgYW5kIGFsc28gZmVhdHVyZXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIgSW50ZXJmYWNlLCB3aGljaCBpcyBvcHRpbWl6ZWQgZm9yCi0gICAgICAgIHN0eWx1cy1kcml2ZW4sIGxvdy1yZXNvbHV0aW9uIHNjcmVlbnMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBwcm9jZWR1cmVzIHRvIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGhvc3QgdG8KKyAgICAgICAgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIG5hdGl2ZSBMaW51eCBkZXZlbG9wbWVudCBob3N0IG9yCisgICAgICAgIHlvdSBjYW4gdXNlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4sCisgICAgICAgIHdoaWNoIGxldmVyYWdlcworICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKKyAgICAgICAgdG8gcHJlcGFyZSBhbnkgTGludXgsIE1hYywgb3IgV2luZG93cyBkZXZlbG9wbWVudCBob3N0LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIHVzZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgd2hpY2ggdXNlcwotICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+LCB0byBkZXZlbG9wIGNvbXBsZXRlIExpbnV4Ci0gICAgICAgIGltYWdlcyBhbmQgYXNzb2NpYXRlZCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBmb3IgYXJjaGl0ZWN0dXJlcyBiYXNlZAotICAgICAgICBvbiBBUk0sIE1JUFMsIFBvd2VyUEMsIHg4NiBhbmQgeDg2LTY0LgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGNyZWF0ZXMgYSBQb2t5IGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGRpc3RyaWJ1dGlvbiBieSBwcm92aWRpbmcga2V5Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz5DcmVhdGluZyBZb3VyIE93biBEaXN0cmlidXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBwcm92aWRlIGEgc3RyaWN0IHRlc3RpbmcgZnJhbWV3b3JrLAotICAgICAgICBpdCBkb2VzIHByb3ZpZGUgb3IgZ2VuZXJhdGUgZm9yIHlvdSBhcnRpZmFjdHMgdGhhdCBsZXQgeW91IHBlcmZvcm0gdGFyZ2V0LWxldmVsIGFuZAotICAgICAgICBlbXVsYXRlZCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCi0gICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSBhbiA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPgotICAgICAgICBJREUgdXNlciwgeW91IGNhbiBpbnN0YWxsIGFuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiB0byBhbGxvdyB5b3UgdG8KLSAgICAgICAgZGV2ZWxvcCB3aXRoaW4gdGhhdCBmYW1pbGlhciBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdnZXR0aW5nLXNldHVwJz4KLSAgICA8dGl0bGU+R2V0dGluZyBTZXQgVXA8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEhlcmUgaXMgd2hhdCB5b3UgbmVlZCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgIE9uY2UgeW91ciBkZXZlbG9wbWVudCBob3N0IGlzIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGZ1cnRoZXIgc3RlcHMgYXJlIG5lY2Vzc2FyeSBkZXBlbmRpbmcgb24gd2hhdCB5b3Ugd2FudCB0bworICAgICAgICBhY2NvbXBsaXNoLgorICAgICAgICBTZWUgdGhlIGZvbGxvd2luZyByZWZlcmVuY2VzIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHJlcGFyZSBmb3IKKyAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGRldmVsb3BtZW50LCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGFuZAorICAgICAgICBkZXZlbG9wbWVudCB1c2luZyB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Ib3N0IFN5c3RlbTo8L2VtcGhhc2lzPiAgWW91IHNob3VsZCBoYXZlIGEgcmVhc29uYWJseSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgTGludXgtYmFzZWQgaG9zdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgWW91IHdpbGwgaGF2ZSB0aGUgYmVzdCByZXN1bHRzIHdpdGggYSByZWNlbnQgcmVsZWFzZSBvZiBGZWRvcmEsCi0gICAgICAgICAgICAgICAgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBvciBDZW50T1MgYXMgdGhlc2UgcmVsZWFzZXMgYXJlIGZyZXF1ZW50bHkgdGVzdGVkIGFnYWluc3QgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBhbmQgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyB1bmRlciB2YWxpZGF0aW9uIGFuZCB0aGVpciBzdGF0dXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFuZCB0aGUgd2lraSBwYWdlIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0Rpc3RyaWJ1dGlvbl9TdXBwb3J0Jz5EaXN0cmlidXRpb24gU3VwcG9ydDwvdWxpbms+LjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsc28gaGF2ZSBhYm91dCA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrIHNwYWNlIGZvciBidWlsZGluZyBpbWFnZXMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhY2thZ2VzOjwvZW1waGFzaXM+ICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIHJlcXVpcmVzIHRoYXQgY2VydGFpbiBwYWNrYWdlcyBleGlzdCBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSAoZS5nLiBQeXRob24gMi43KS4KLSAgICAgICAgICAgICAgICBTZWUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIHRoZSBleGFjdAotICAgICAgICAgICAgICAgIHBhY2thZ2UgcmVxdWlyZW1lbnRzIGFuZCB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmRzIHRvIGluc3RhbGwKLSAgICAgICAgICAgICAgICB0aGVtIGZvciB0aGUgc3VwcG9ydGVkIGRpc3RyaWJ1dGlvbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9J2xvY2FsLXlwLXJlbGVhc2UnPjxwYXJhPjxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCBhIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QgbG9jYWxseSBpbnN0YWxsZWQgb24KLSAgICAgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KLSAgICAgICAgICAgICAgICBUaGUgZG9jdW1lbnRhdGlvbiByZWZlcnMgdG8gdGhpcyBzZXQgb2YgbG9jYWxseSBpbnN0YWxsZWQgZmlsZXMKLSAgICAgICAgICAgICAgICBhcyB0aGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgWW91IGNyZWF0ZSB5b3VyIFNvdXJjZSBEaXJlY3RvcnkgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gdG8gY2xvbmUgYSBsb2NhbCBjb3B5Ci0gICAgICAgICAgICAgICAgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSwKLSAgICAgICAgICAgICAgICBvciBieSBkb3dubG9hZGluZyBhbmQgdW5wYWNraW5nIGEgdGFyYmFsbCBvZiBhbiBvZmZpY2lhbAotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBpcyB0byBjcmVhdGUgYSBjbG9uZSBvZiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+V29ya2luZyBmcm9tIGEgY29weSBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBhbGxvd3MgeW91Ci0gICAgICAgICAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3Igc2ltcGx5IHdvcmsgd2l0aAotICAgICAgICAgICAgICAgIHRoZSBsYXRlc3Qgc29mdHdhcmUgb24gYSBkZXZlbG9wbWVudCBicmFuY2guCi0gICAgICAgICAgICAgICAgQmVjYXVzZSBHaXQgbWFpbnRhaW5zIGFuZCBjcmVhdGVzIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkgd2l0aAotICAgICAgICAgICAgICAgIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzIGFuZCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsCi0gICAgICAgICAgICAgICAgY2xvbmUgb2YgdGhhdCByZXBvc2l0b3J5LCB5b3UgaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgIFByb2plY3QgZGV2ZWxvcG1lbnQgYnJhbmNoZXMgYW5kIHRhZyBuYW1lcyB1c2VkIGluIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxub3RlPllvdSBjYW4gdmlldyB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyB0cmFuc2NyaXB0IHNob3dzIGhvdyB0byBjbG9uZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IGludG8gdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBjcmVhdGVzIHRoZSBsb2NhbCByZXBvc2l0b3J5IGluIGEgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gR2l0IHVzZWQgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUKLSAgICAgICAgICAgICAgICB0aGUgIjxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDIyNjc5MCwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg1NzQ2NS81NzQ2NSksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMjI2NzkwIChkZWx0YSAxNjUyMTIpLCByZXVzZWQgMjI1ODg3IChkZWx0YSAxNjQzMjcpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgyMjY3OTAvMjI2NzkwKSwgMTAwLjk4IE1pQiB8IDI2MyBLaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTY1MjEyLzE2NTIxMiksIGRvbmUuCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYW5vdGhlciBleGFtcGxlIG9mIGhvdyB0byBzZXQgdXAgeW91ciBvd24gbG9jYWwgR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLCBzZWUgdGhpcwotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9UcmFuc2NyaXB0Ol9mcm9tX2dpdF9jaGVja291dF90b19tZXRhLWludGVsX0JTUCc+Ci0gICAgICAgICAgICAgICAgd2lraSBwYWdlPC91bGluaz4sIHdoaWNoIGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlIGxvY2FsCi0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcyBmb3IgYm90aAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBnZXQgdGhlIFlvY3RvIFByb2plY3QgRmlsZXMgYnkgZG93bmxvYWRpbmcKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0hPTUVfVVJMOyI+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgRnJvbSB0aGUgd2Vic2l0ZSwgeW91IGp1c3QgY2xpY2sgIkRvd25sb2FkcyIgaW4gdGhlIG5hdmlnYXRpb24KLSAgICAgICAgICAgICAgICBwYW5lIHRvIHRoZSBsZWZ0IHRvIGRpc3BsYXkgYWxsIFlvY3RvIFByb2plY3QgZG93bmxvYWRzLgotICAgICAgICAgICAgICAgIEN1cnJlbnQgYW5kIGFyY2hpdmVkIHJlbGVhc2VzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkLgotICAgICAgICAgICAgICAgIE5pZ2h0bHkgYW5kIGRldmVsb3BtZW50YWwgYnVpbGRzIGFyZSBhbHNvIG1haW50YWluZWQgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSImWU9DVE9fQUJfTklHSFRMWV9VUkw7Ij48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBPbmUgZmluYWwgc2l0ZSB5b3UgY2FuIHZpc2l0IGZvciBpbmZvcm1hdGlvbiBvbiBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgcmVsZWFzZXMgaXMgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgd2lraS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbSBpZD0nbG9jYWwta2VybmVsLWZpbGVzJz48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBLZXJuZWw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIGJlIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGEgc3VwcG9ydGVkIFlvY3RvIFByb2plY3Qga2VybmVsLCB5b3UKLSAgICAgICAgICAgICAgICBuZWVkIHRvIGVzdGFibGlzaCBsb2NhbCBjb3BpZXMgb2YgdGhlIHNvdXJjZS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgR2l0IHJlcG9zaXRvcmllcyBvZiBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdCBrZXJuZWxzIG9yZ2FuaXplZCB1bmRlcgotICAgICAgICAgICAgICAgICJZb2N0byBMaW51eCBLZXJuZWwiIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIHNldHVwIGNhbiBpbnZvbHZlIGNyZWF0aW5nIGEgYmFyZSBjbG9uZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgYW5kIHRoZW4KLSAgICAgICAgICAgICAgICBjb3B5aW5nIHRoYXQgY2xvbmVkIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdGhlIGJhcmUgY2xvbmUgYW5kIHRoZSBjb3B5IG9mIHRoZSBiYXJlIGNsb25lIGFueXdoZXJlIHlvdSBsaWtlLgotICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjcmVhdGUgdGhlc2Ugc3RydWN0dXJlcyBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnksIHdoaWNoIGlzIHVzdWFsbHkgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+QXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0cmFuc2NyaXB0IHNob3dzIGhvdyB0byBjcmVhdGUgdGhlIGJhcmUgY2xvbmUKLSAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTk8L2ZpbGVuYW1lPiBrZXJuZWwgYW5kIHRoZW4gY3JlYXRlIGEgY29weSBvZgotICAgICAgICAgICAgICAgIHRoYXQgY2xvbmUuCi0gICAgICAgICAgICAgICAgPG5vdGU+V2hlbiB5b3UgaGF2ZSBhIGxvY2FsIFlvY3RvIFByb2plY3Qga2VybmVsIEdpdCByZXBvc2l0b3J5LCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgcmVmZXJlbmNlIHRoYXQgcmVwb3NpdG9yeSByYXRoZXIgdGhhbiB0aGUgdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkgYXMKLSAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSA8ZmlsZW5hbWU+Y2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgIERvaW5nIHNvIGNhbiBzcGVlZCB1cCB0aGUgcHJvY2Vzcy48L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIGJhcmUgY2xvbmUgaXMgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOS5naXQ8L2ZpbGVuYW1lPiwgd2hpbGUgdGhlCi0gICAgICAgICAgICAgICAgY29weSBpcyBuYW1lZCA8ZmlsZW5hbWU+bXktbGludXgteW9jdG8tMy4xOS13b3JrPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSAtLWJhcmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tMy4xOSBsaW51eC15b2N0by0zLjE5LmdpdAotICAgICBDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICdsaW51eC15b2N0by0zLjE5LmdpdCcuLi4KLSAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAzOTgzMjU2LCBkb25lLgotICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDYwNTAwNi82MDUwMDYpLCBkb25lLgotICAgICByZW1vdGU6IFRvdGFsIDM5ODMyNTYgKGRlbHRhIDMzNTI4MzIpLCByZXVzZWQgMzk3NDUwMyAoZGVsdGEgMzM0NDA3OSkKLSAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDM5ODMyNTYvMzk4MzI1NiksIDg0My42NiBNaUIgfCAxLjA3IE1pQi9zLCBkb25lLgotICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgzMzUyODMyLzMzNTI4MzIpLCBkb25lLgotICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPk5vdyBjcmVhdGUgYSBjbG9uZSBvZiB0aGUgYmFyZSBjbG9uZSBqdXN0IGNyZWF0ZWQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBsaW51eC15b2N0by0zLjE5LmdpdCBteS1saW51eC15b2N0by0zLjE5LXdvcmsKLSAgICAgQ2xvbmluZyBpbnRvICdteS1saW51eC15b2N0by0zLjE5LXdvcmsnLi4uCi0gICAgIGRvbmUuCi0gICAgIENoZWNraW5nIG91dCBmaWxlczogMTAwJSAoNDg0NDAvNDg0NDApLCBkb25lLgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbSBpZD0nbWV0YS15b2N0by1rZXJuZWwtZXh0cmFzLXJlcG8nPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEteW9jdG8ta2VybmVsLWV4dHJhczwvZmlsZW5hbWU+IEdpdCBSZXBvc2l0b3J5PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWtlcm5lbC1leHRyYXM8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBjb250YWlucyBNZXRhZGF0YSBuZWVkZWQKLSAgICAgICAgICAgICAgICBvbmx5IGlmIHlvdSBhcmUgbW9kaWZ5aW5nIGFuZCBidWlsZGluZyB0aGUga2VybmVsIGltYWdlLgotICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGNvbnRhaW5zIHRoZSBrZXJuZWwgQml0QmFrZSBhcHBlbmQgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICBmaWxlcyB0aGF0IHlvdQotICAgICAgICAgICAgICAgIGVkaXQgdG8gcG9pbnQgdG8geW91ciBsb2NhbGx5IG1vZGlmaWVkIGtlcm5lbCBzb3VyY2UgZmlsZXMgYW5kIHRvIGJ1aWxkIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICBpbWFnZS4KLSAgICAgICAgICAgICAgICBQb2ludGluZyB0byB0aGVzZSBsb2NhbCBmaWxlcyBpcyBtdWNoIG1vcmUgZWZmaWNpZW50IHRoYW4gcmVxdWlyaW5nIGEgZG93bmxvYWQgb2YgdGhlCi0gICAgICAgICAgICAgICAga2VybmVsJ3Mgc291cmNlIGZpbGVzIGZyb20gdXBzdHJlYW0gZWFjaCB0aW1lIHlvdSBtYWtlIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1rZXJuZWwtZXh0cmFzPC9maWxlbmFtZT4gR2l0IFJlcG9zaXRvcnkgaW4gdGhlCi0gICAgICAgICAgICAgICAgIllvY3RvIE1ldGFkYXRhIExheWVycyIgYXJlYSBvZiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBJdCBpcyBnb29kIHByYWN0aWNlIHRvIGNyZWF0ZSB0aGlzIEdpdCByZXBvc2l0b3J5IGluc2lkZSB0aGUgU291cmNlIERpcmVjdG9yeS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Rm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdGhhdCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1rZXJuZWwtZXh0cmFzPC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBpbnNpZGUgdGhlIFNvdXJjZSBEaXJlY3RvcnksIHdoaWNoIGlzIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbiB0aGlzIGNhc2U6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vcG9reQotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLXlvY3RvLWtlcm5lbC1leHRyYXMgbWV0YS15b2N0by1rZXJuZWwtZXh0cmFzCi0gICAgIENsb25pbmcgaW50byAnbWV0YS15b2N0by1rZXJuZWwtZXh0cmFzJy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDcyNywgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg0NTIvNDUyKSwgZG9uZS4KLSAgICAgcmVtb3RlOiBUb3RhbCA3MjcgKGRlbHRhIDI2MCksIHJldXNlZCA3MTkgKGRlbHRhIDI1MikKLSAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDcyNy83MjcpLCA1MzYuMzYgS2lCIHwgMjQwIEtpQi9zLCBkb25lLgotICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNjAvMjYwKSwgZG9uZS4KLSAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdzdXBwb3J0ZWQtYm9hcmQtc3VwcG9ydC1wYWNrYWdlcy0oYnNwcyknPjxlbXBoYXNpcz5TdXBwb3J0ZWQgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBtYW55IEJTUHMsIHdoaWNoIGFyZSBtYWludGFpbmVkIGluCi0gICAgICAgICAgICAgICAgdGhlaXIgb3duIGxheWVycyBvciBpbiBsYXllcnMgZGVzaWduZWQgdG8gY29udGFpbiBzZXZlcmFsCi0gICAgICAgICAgICAgICAgQlNQcy4KLSAgICAgICAgICAgICAgICBUbyBnZXQgYW4gaWRlYSBvZiBtYWNoaW5lIHN1cHBvcnQgdGhyb3VnaCBCU1AgbGF5ZXJzLCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgbG9vayBhdCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUkVMRUFTRV9ETF9VUkw7L21hY2hpbmVzJz5pbmRleCBvZiBtYWNoaW5lczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgZm9yIHRoZSByZWxlYXNlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHVzZXMgdGhlIGZvbGxvd2luZyBCU1AgbGF5ZXIgbmFtaW5nCi0gICAgICAgICAgICAgICAgc2NoZW1lOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcmVjb2duaXplZAotICAgICAgICAgICAgICAgIEJTUCBuYW1lLgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtcmFzcGJlcnJ5cGkKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJTUCBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWxheWVycyc+QlNQIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgV2l0aCBCU1AgTGF5ZXJzPC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgTGF5ZXJzLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPkEgdXNlZnVsIEdpdCByZXBvc2l0b3J5IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCBpcyA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCB3aGljaCBpcyBhCi0gICAgICAgICAgICAgICAgcGFyZW50IGxheWVyIHRoYXQgY29udGFpbnMgbWFueSBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBsb2NhdGUgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBpbiB0aGUgIllvY3RvIE1ldGFkYXRhIExheWVycyIgYXJlYSBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHRvIGNyZWF0ZSBhIGxvY2FsIGNsb25lIG9mIHRoZQotICAgICAgICAgICAgICAgIHVwc3RyZWFtIHJlcG9zaXRvcnkgY2FuIGJlIGhlbHBmdWwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGgKLSAgICAgICAgICAgICAgICBCU1BzLgotICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHNldCB1cCB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGluc2lkZSB0aGUgU291cmNlIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0cmFuc2NyaXB0IHNob3dzIHRoZSBzdGVwcyB0byBjbG9uZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gd29yayBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBicmFuY2ggdGhhdCBtYXRjaGVzIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgY2hlY2tlZCBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIGNoZWNrb3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggb2YgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vcG9reQotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLWludGVsLmdpdAotICAgICBDbG9uaW5nIGludG8gJ21ldGEtaW50ZWwnLi4uCi0gICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMTE5MTcsIGRvbmUuCi0gICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoMzg0Mi8zODQyKSwgZG9uZS4KLSAgICAgcmVtb3RlOiBUb3RhbCAxMTkxNyAoZGVsdGEgNjg0MCksIHJldXNlZCAxMTY5OSAoZGVsdGEgNjYyMikKLSAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDExOTE3LzExOTE3KSwgMi45MiBNaUIgfCAyLjg4IE1pQi9zLCBkb25lLgotICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg2ODQwLzY4NDApLCBkb25lLgotICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIHNhbWUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvVHJhbnNjcmlwdDpfZnJvbV9naXRfY2hlY2tvdXRfdG9fbWV0YS1pbnRlbF9CU1AnPndpa2kgcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlZCBlYXJsaWVyIGNvdmVycyBob3cgdG8gc2V0IHVwIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVjbGlwc2UgWW9jdG8gUGx1Zy1pbjo8L2VtcGhhc2lzPiAgSWYgeW91IGFyZSBkZXZlbG9waW5nCi0gICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBFY2xpcHNlIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgKElERSksCi0gICAgICAgICAgICAgICAgeW91IHdpbGwgbmVlZCB0aGlzIHBsdWctaW4uCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPktlcm5lbCBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFwcGVuZGl4LWxhdGVzdC15cC1lY2xpcHNlLXBsdWctaW4nPlVzaW5nIEVjbGlwc2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0LXRvLXdvcmstb24tdGhlLWtlcm5lbCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWNsaXBzZSBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC1hLW5hdGl2ZS1saW51eC1ob3N0Jz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgYSBOYXRpdmUgTGludXggSG9zdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gcHJlcGFyZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIGFzIHlvdXIKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgaG9zdDoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgYSBTdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgaGF2ZSBhIHJlYXNvbmFibHkgY3VycmVudCBMaW51eC1iYXNlZCBob3N0CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgaGF2ZSB0aGUgYmVzdCByZXN1bHRzIHdpdGggYSByZWNlbnQgcmVsZWFzZSBvZgorICAgICAgICAgICAgICAgICAgICBGZWRvcmEsIG9wZW5TVVNFLCBEZWJpYW4sIFVidW50dSwgb3IgQ2VudE9TIGFzIHRoZXNlCisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBmcmVxdWVudGx5IHRlc3RlZCBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIGFuZCBvZmZpY2lhbGx5IHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyB1bmRlciB2YWxpZGF0aW9uIGFuZCB0aGVpcgorICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgYW5kIHRoZSB3aWtpIHBhZ2UgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0Rpc3RyaWJ1dGlvbl9TdXBwb3J0Jz5EaXN0cmlidXRpb24gU3VwcG9ydDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5IYXZlIEVub3VnaCBGcmVlIE1lbW9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgNTAgR2J5dGVzIG9mIGZyZWUgZGlzayBzcGFjZQorICAgICAgICAgICAgICAgICAgICBmb3IgYnVpbGRpbmcgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZWV0IE1pbmltYWwgVmVyc2lvbiBSZXF1aXJlbWVudHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2hvdWxkIGJlIGFibGUgdG8gcnVuIG9uIGFueQorICAgICAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCisgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBhbmQgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCAxLjguMy4xIG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yNyBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvIHRoYXQgeW91IGNhbiBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCBEZXZlbG9wbWVudCBIb3N0IFBhY2thZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkIGRldmVsb3BtZW50IGhvc3QgcGFja2FnZXMgdmFyeSBkZXBlbmRpbmcgb24geW91cgorICAgICAgICAgICAgICAgICAgICBidWlsZCBtYWNoaW5lIGFuZCB3aGF0IHlvdSB3YW50IHRvIGRvIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIG51bWJlciBvZiByZXF1aXJlZCBwYWNrYWdlcyBpcyBsYXJnZQorICAgICAgICAgICAgICAgICAgICBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGNvdmVyIGFsbCBjYXNlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGxpc3RzIG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBhbGwgc2NlbmFyaW9zLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjb21wbGV0ZWQgdGhlIHByZXZpb3VzIHN0ZXBzLCB5b3UgYXJlIHJlYWR5IHRvCisgICAgICAgICAgICBjb250aW51ZSB1c2luZyBhIGdpdmVuIGRldmVsb3BtZW50IHBhdGggb24geW91ciBuYXRpdmUgTGludXgKKyAgICAgICAgICAgIG1hY2hpbmUuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHdvcmsgb24gdGhlIGtlcm5lbCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10by11c2UtY3JvcHMnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGxldmVyYWdlcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCisgICAgICAgICAgICB5b3UgY2FuIGNyZWF0ZSBhIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdAorICAgICAgICAgICAgaXMgb3BlcmF0aW5nIHN5c3RlbSBhZ25vc3RpYy4KKyAgICAgICAgICAgIFlvdSBjYW4gc2V0IHVwIGEgY29udGFpbmVyIGluIHdoaWNoIHlvdSBjYW4gZGV2ZWxvcCB1c2luZyB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgb24gYSBXaW5kb3dzLCBNYWMsIG9yIExpbnV4ICBtYWNoaW5lLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBwcmVwYXJlIGEgV2luZG93cywgTWFjLCBvciBMaW51eAorICAgICAgICAgICAgbWFjaGluZSBhcyB5b3VyIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgaG9zdDoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HbyB0byB0aGUgRG9ja2VyIEluc3RhbGxhdGlvbiBTaXRlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vd2hhdC1kb2NrZXInPkRvY2tlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIGEgc29mdHdhcmUgY29udGFpbmVyIHBsYXRmb3JtIHRoYXQgeW91IG5lZWQgdG8gaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICBUbyBzdGFydCB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2luc3RhbGxhdGlvbi8nPkRvY2tlciBJbnN0YWxsYXRpb248L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzaXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaG9vc2UgWW91ciBEb2NrZXIgRWRpdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEb2NrZXIgY29tZXMgaW4gc2V2ZXJhbCBlZGl0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgc3RhYmxlIGNvbW11bml0eSBlZGl0aW9uCisgICAgICAgICAgICAgICAgICAgIChpLmUuICJEb2NrZXIgQ0UgU3RhYmxlIikgaXMgYWRlcXVhdGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGUgRG9ja2VyIGVkaXRpb25zIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlIGxpbmsgZm9yIHRoZSBEb2NrZXIgZWRpdGlvbiBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBob3N0IG1hY2hpbmUncyBuYXRpdmUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIG1hY2hpbmUgaXMgcnVubmluZyBNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgV2luZG93cyBWZXJzaW9uIDEwIGFuZCB5b3Ugd2FudCB0aGUgRG9ja2VyIENFIFN0YWJsZQorICAgICAgICAgICAgICAgICAgICBlZGl0aW9uLCBjbGljayB0aGF0IGxpbmsgdW5kZXIgIlN1cHBvcnRlZCBQbGF0Zm9ybXMiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VbmRlcnN0YW5kIFdoYXQgWW91IE5lZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbGwgcGFnZSBoYXMgcHJlLXJlcXVpc2l0ZXMgeW91ciBtYWNoaW5lIG11c3QKKyAgICAgICAgICAgICAgICAgICAgbWVldC4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgcmVhZCB0aHJvdWdoIHRoaXMgcGFnZSBhbmQgbWFrZSBzdXJlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBtZWV0cyB0aGUgcmVxdWlyZW1lbnRzIHRvIHJ1biBEb2NrZXIuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgbWFjaGluZSBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMsIHRoZSBwYWdlCisgICAgICAgICAgICAgICAgICAgIGhhcyBpbnN0cnVjdGlvbnMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBydW4gRG9ja2VyIG9uIFdpbmRvd3MgMTAsIHlvdSBtdXN0IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIHBybyB2ZXJzaW9uIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSB0aGUgaG9tZSB2ZXJzaW9uLCB5b3UgbmVlZCB0byBpbnN0YWxsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS90b29sYm94L292ZXJ2aWV3LyNyZWFkeS10by1nZXQtc3RhcnRlZCc+RG9ja2VyIFRvb2xib3g8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgZXhhbXBsZSBpcyB0aGF0IGEgV2luZG93cyBtYWNoaW5lIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGhhdmUgTWljcm9zb2Z0IEh5cGVyLVYuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgbGVnYWN5IHZlcnNpb24gb2YgdGhlIHRoZSBNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSBvciBmb3IgYW55IG90aGVyIHJlYXNvbiB5b3UgZG8gbm90IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0IEh5cGVyLVYsIHlvdSB3b3VsZCBoYXZlIHRvIGVudGVyIHRoZSBCSU9TIGFuZAorICAgICAgICAgICAgICAgICAgICBlbmFibGUgdmlydHVhbGl6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgdGhlIFNvZnR3YXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdW5kZXJzdG9vZCBhbGwgdGhlIHByZS1yZXF1aXNpdGVzLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkIGFuZCBpbnN0YWxsIHRoZSBhcHByb3ByaWF0ZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgc3BlY2lmaWMgbWFjaGluZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGUgb2YgdGhlIHNvZnR3YXJlIHlvdSBuZWVkIHRvIGluc3RhbGwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIFdpdGggRG9ja2Vyczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuZmFtaWxpYXIgd2l0aCBEb2NrZXJzIGFuZCB0aGUgY29udGFpbmVyCisgICAgICAgICAgICAgICAgICAgIGNvbmNlcHQsIHlvdSBjYW4gbGVhcm4gbW9yZSBoZXJlIC0KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZ2V0LXN0YXJ0ZWQvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBiZSBhYmxlIHRvIGxhdW5jaCBEb2NrZXIgb3IgdGhlIERvY2tlciBUb29sYm94CisgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZlIGEgdGVybWluYWwgc2hlbGwgb24geW91ciBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgdGhlIENvbnRhaW5lcnMgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2knPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBmb2xsb3cgdGhlIGRpcmVjdGlvbnMgZm9yIHlvdXIgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IChpLmUuIExpbnV4LCBNYWMsIG9yIFdpbmRvd3MpLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBoYXZlIHRoZSBQb2t5LCBFeHRlbnNpYmxlIFNESywgYW5kIFRvYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVycyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgdGhvc2UgbGlua3MgZnJvbSB0aGUgcGFnZSBhbmQgbGVhcm4gbW9yZQorICAgICAgICAgICAgICAgICAgICBhYm91dCB1c2luZyBlYWNoIG9mIHRob3NlIGNvbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBjb250YWluZXIgc2V0IHVwLCBldmVyeXRoaW5nIGlzIGluIHBsYWNlIHRvCisgICAgICAgICAgICBkZXZlbG9wIGp1c3QgYXMgaWYgeW91IHdlcmUgcnVubmluZyBvbiBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFBva3kgY29udGFpbmVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgVG9hc3RlciBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMnPgotICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+CisgICAgPHRpdGxlPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgY3JlYXRlcyBhbiBlbnRpcmUgTGludXggZGlzdHJpYnV0aW9uLCBpbmNsdWRpbmcgdGhlIHRvb2xjaGFpbiwgZnJvbSBzb3VyY2UuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgdG9waWMsIHNlZSB0aGUKKyAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHByb2NlZHVyZXMgcmVsYXRlZCB0byBsb2NhdGluZyBhbmQgc2VjdXJpbmcKKyAgICAgICAgWW9jdG8gUHJvamVjdCBmaWxlcy4KKyAgICAgICAgWW91IGVzdGFibGlzaCBhbmQgdXNlIHRoZXNlIGxvY2FsIGZpbGVzIHRvIHdvcmsgb24gcHJvamVjdHMuCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHRzIGFuZCBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gYWJvdXQgR2l0IGFzIGl0CisgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgY29uY2VwdHMgb24gWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4iCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nYWNjZXNzaW5nLXNvdXJjZS1yZXBvc2l0b3JpZXMnPgorICAgICAgICA8dGl0bGU+QWNjZXNzaW5nIFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgdXBzdHJlYW0gR2l0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgIHRoYXQgeW91IGNhbiBleGFtaW5lIGFuZCBhY2Nlc3MgdXNpbmcgYSBicm93c2VyLWJhc2VkIFVJOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyBSZXBvc2l0b3JpZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4gdG8gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICBHVUktYmFzZWQgaW50ZXJmYWNlIGludG8gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiBhbnkgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIFVSTCBVc2VkIHRvIENsb25lIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UsIG5vdGUgdGhlIFVSTCB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0aGF0IHJlcG9zaXRvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19HSVRfVVJMOy9wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIENoYW5nZSBIaXN0b3J5IG9mIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIGNsaWNrIG9uIGFueSBicmFuY2ggaW4gd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGludGVyZXN0ZWQgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gdmlldyB0aGUgY29tbWl0IGxvZyBvciB0cmVlIHZpZXcgZm9yIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYWNjZXNzaW5nLWluZGV4LW9mLXJlbGVhc2VzJz4KKyAgICAgICAgPHRpdGxlPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG1haW50YWlucyBhbiBJbmRleCBvZiBSZWxlYXNlcyBhcmVhIHRoYXQgY29udGFpbnMKKyAgICAgICAgICAgIHJlbGF0ZWQgZmlsZXMgdGhhdCBjb250cmlidXRlIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgUmF0aGVyIHRoYW4gR2l0IHJlcG9zaXRvcmllcywgdGhlc2UgZmlsZXMgcmVwcmVzZW50IHNuYXBzaG90CisgICAgICAgICAgICB0YXJiYWxscy4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIGFjY2Vzc2luZyBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgY29tcG9uZW50cyBpcyB0byB1c2UgR2l0IHRvIGNsb25lIGEgcmVwb3NpdG9yeSBhbmQgd29yayBmcm9tCisgICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VkdXJlIGluIHRoaXMgc2VjdGlvbiBleGlzdHMgc2hvdWxkIHlvdSBkZXNpcmUgYQorICAgICAgICAgICAgICAgIHRhcmJhbGwgc25hcHNob3Qgb2YgYW55IGdpdmVuIGNvbXBvbmVudC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BY2Nlc3MgdGhlIEluZGV4IG9mIFJlbGVhc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcyc+PC91bGluaz4gdG8gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICBJbmRleCBvZiBSZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3QgcmVwcmVzZW50cyByZWxlYXNlZCBjb21wb25lbnRzIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lY2xpcHNlLXBsdWdpbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2F0bzwvZmlsZW5hbWU+LCBhbmQgc28gb24pLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGFycmF5IG9mIHJlbGVhc2VkIFBva3kgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBvZiBSZWxlYXNlcyB3YXMgaGlzdG9yaWNhbGx5IHVzZWQgZm9yIHZlcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhcmx5IHJlbGVhc2VzIGFuZCBleGlzdHMgZm9yIHJldHJvYWN0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZW5lc3Mgb25seS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgYSBDb21wb25lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gYW55IHJlbGVhc2VkIGNvbXBvbmVudCBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnlvY3RvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERyaWxsIGRvd24gdG8gZmluZCB0aGUgYXNzb2NpYXRlZCB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2xpY2sgb24gPGZpbGVuYW1lPnlvY3RvLSZESVNUUk87PC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgdmlldyBmaWxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsKKyAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSAoZS5nLiA8ZmlsZW5hbWU+cG9reS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047LnRhci5iejI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIHJlbGVhc2VkIFBva3kgdGFyYmFsbCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvd25sb2FkIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENsaWNrIGEgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIGEKKyAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gY29tcG9uZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmctdGhlLWRvd25sb2Fkcy1wYWdlJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+CisgICAgICAgICAgICB1c2VzIGEgIkRvd25sb2FkcyIgYXJlYSBmcm9tIHdoaWNoIHlvdSBjYW4gbG9jYXRlIGFuZCBkb3dubG9hZAorICAgICAgICAgICAgdGFyYmFsbHMgb2YgYW55IFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIHJlcHJlc2VudCBzbmFwc2hvdAorICAgICAgICAgICAgdGFyYmFsbHMuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBhY2Nlc3NpbmcgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgaXMgdG8gdXNlIEdpdCB0byBjbG9uZSBhIHJlcG9zaXRvcnkgYW5kIHdvcmsgZnJvbQorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGF0IGxvY2FsIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgVGhlIHByb2NlZHVyZSBpbiB0aGlzIHNlY3Rpb24gZXhpc3RzIHNob3VsZCB5b3UgZGVzaXJlIGEKKyAgICAgICAgICAgICAgICB0YXJiYWxsIHNuYXBzaG90IG9mIGFueSBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R28gdG8gdGhlIFlvY3RvIFByb2plY3QgV2Vic2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPcGVuIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGJyb3dzZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCB0byB0aGUgRG93bmxvYWRzIEFyZWE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJEb3dubG9hZHMiIHRhYi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IHRoZSBUeXBlIG9mIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSB0eXBlIG9mIGZpbGVzIHlvdSB3YW50IChpLmUgIkJ1aWxkIFN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJUb29scyIsIG9yICJCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKSIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSBhbmQgRG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgbGlzdCBvZiByZWxlYXNlcywgbG9jYXRlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBsaW5rIGFuZCBkb3dubG9hZCB0aGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPgorICAgICAgICA8dGl0bGU+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCwgeW91IG5lZWQgYSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBsb2NhbGx5IGluc3RhbGxlZCBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgIFRoZSBsb2NhbGx5IGluc3RhbGxlZCBzZXQgb2YgZmlsZXMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjcmVhdGUgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGJ5IHVzaW5nCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IHRvIGNsb25lIGEgbG9jYWwKKyAgICAgICAgICAgIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIFRoZSBwcmVmZXJyZWQgbWV0aG9kIG9mIGdldHRpbmcgdGhlIFlvY3RvIFByb2plY3QgU291cmNlCisgICAgICAgICAgICAgICAgRGlyZWN0b3J5IHNldCB1cCBpcyB0byBjbG9uZSB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIFdvcmtpbmcgZnJvbSBhIGNvcHkgb2YgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgYWxsb3dzIHlvdQorICAgICAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3Igc2ltcGx5IHdvcmsgd2l0aAorICAgICAgICAgICAgdGhlIGxhdGVzdCBzb2Z0d2FyZSBvbiBhIGRldmVsb3BtZW50IGJyYW5jaC4KKyAgICAgICAgICAgIEJlY2F1c2UgR2l0IG1haW50YWlucyBhbmQgY3JlYXRlcyBhbiB1cHN0cmVhbSByZXBvc2l0b3J5IHdpdGgKKyAgICAgICAgICAgIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzIGFuZCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsCisgICAgICAgICAgICBjbG9uZSBvZiB0aGF0IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGJyYW5jaGVzIGFuZCB0YWcgbmFtZXMgdXNlZCBpbiB0aGUgdXBzdHJlYW0KKyAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYSBsb2NhbCB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgdXBzdHJlYW0KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Bva3knPjxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFlvdXIgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91IHdhbnQgdG8gY3JlYXRlIHlvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgY29weSBvZiBwb2t5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgY2xvbmVzIHRoZSByZXBvc2l0b3J5IGFuZCB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IG5hbWUgInBva3kiIGZvciB5b3VyIGxvY2FsIHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQorICAgICBDbG9uaW5nIGludG8gJ3Bva3knLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMzY3MTc4LCBkb25lLgorICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDg4MTYxLzg4MTYxKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCAzNjcxNzggKGRlbHRhIDI3Mjc2MSksIHJldXNlZCAzNjY5NDIgKGRlbHRhIDI3MjUyNSkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDM2NzE3OC8zNjcxNzgpLCAxMzMuMjYgTWlCIHwgNi40MCBNaUIvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMjcyNzYxLzI3Mjc2MSksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVubGVzcyB5b3Ugc3BlY2lmeSBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaCBvcgorICAgICAgICAgICAgICAgICAgICB0YWcgbmFtZSwgR2l0IGNsb25lcyB0aGUgIm1hc3RlciIgYnJhbmNoLCB3aGljaCByZXN1bHRzCisgICAgICAgICAgICAgICAgICAgIGluIGEgc25hcHNob3Qgb2YgdGhlIGxhdGVzdCBkZXZlbG9wbWVudCBjaGFuZ2VzIGZvcgorICAgICAgICAgICAgICAgICAgICAibWFzdGVyIi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjaGVjayBvdXQgYSBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggb3Igb24gaG93IHRvIGNoZWNrIG91dCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBCeSBCcmFuY2ggaW4gUG9reTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjaGVja291dC1vdXQtYnktdGFnLWluLXBva3knPkNoZWNraW5nIE91dCBCeSBUYWcgaW4gUG9reTwvbGluaz4iLAorICAgICAgICAgICAgICAgICAgICByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgdGhlIHJlcG9zaXRvcnkgaXMgY3JlYXRlZCwgeW91IGNhbiBjaGFuZ2UgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgYW5kIGNoZWNrIGl0cyBzdGF0dXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBzaW5nbGUgIm1hc3RlciIgYnJhbmNoIGV4aXN0cyBvbiB5b3VyIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgYnkgZGVmYXVsdCwgaXQgaXMgY2hlY2tlZCBvdXQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBnaXQgc3RhdHVzCisgICAgIE9uIGJyYW5jaCBtYXN0ZXIKKyAgICAgWW91ciBicmFuY2ggaXMgdXAtdG8tZGF0ZSB3aXRoICdvcmlnaW4vbWFzdGVyJy4KKyAgICAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuCisgICAgICQgZ2l0IGJyYW5jaAorICAgICAqIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdXIgbG9jYWwgcmVwb3NpdG9yeSBvZiBwb2t5IGlzIGlkZW50aWNhbCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gcG9reSByZXBvc2l0b3J5IGF0IHRoZSB0aW1lIGZyb20gd2hpY2ggaXQgd2FzCisgICAgICAgICAgICAgICAgICAgIGNsb25lZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+CisgICAgICAgIDx0aXRsZT5DaGVja2luZyBPdXQgYnkgQnJhbmNoIGluIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlIHVwc3RyZWFtIHBva3kgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvCisgICAgICAgICAgICBhbGwgaXRzIGRldmVsb3BtZW50IGJyYW5jaGVzLgorICAgICAgICAgICAgRWFjaCBkZXZlbG9wbWVudCBicmFuY2ggaW4gYSByZXBvc2l0b3J5IGlzIHVuaXF1ZSBhcyBpdCBmb3JrcworICAgICAgICAgICAgb2ZmIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgICAgICBUbyBzZWUgYW5kIHVzZSB0aGUgZmlsZXMgb2YgYSBwYXJ0aWN1bGFyIGRldmVsb3BtZW50IGJyYW5jaAorICAgICAgICAgICAgbG9jYWxseSwgeW91IG5lZWQgdG8ga25vdyB0aGUgYnJhbmNoIG5hbWUgYW5kIHRoZW4gc3BlY2lmaWNhbGx5CisgICAgICAgICAgICBjaGVjayBvdXQgdGhhdCBkZXZlbG9wbWVudCBicmFuY2guCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBDaGVja2luZyBvdXQgYW4gYWN0aXZlIGRldmVsb3BtZW50IGJyYW5jaCBieSBicmFuY2ggbmFtZQorICAgICAgICAgICAgICAgIGdpdmVzIHlvdSBhIHNuYXBzaG90IG9mIHRoYXQgcGFydGljdWxhciBicmFuY2ggYXQgdGhlIHRpbWUKKyAgICAgICAgICAgICAgICB5b3UgY2hlY2sgaXQgb3V0LgorICAgICAgICAgICAgICAgIEZ1cnRoZXIgZGV2ZWxvcG1lbnQgb24gdG9wIG9mIHRoZSBicmFuY2ggdGhhdCBvY2N1cnMgYWZ0ZXIKKyAgICAgICAgICAgICAgICBjaGVjayBpdCBvdXQgY2FuIG9jY3VyLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN3aXRjaCB0byB0aGUgUG9reSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBsb2NhbCBwb2t5IEdpdCByZXBvc2l0b3J5LCBzd2l0Y2ggdG8gdGhhdAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgbG9jYWwgY29weSBvZiBwb2t5LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBFeGlzdGluZyBCcmFuY2ggTmFtZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBicmFuY2ggLWEKKyAgICAgKiBtYXN0ZXIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTEKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTMKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTQKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTEKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTMKKyAgICAgICAgICAgLgorICAgICAgICAgICAuCisgICAgICAgICAgIC4KKyAgICAgICByZW1vdGVzL29yaWdpbi9tYXN0ZXItbmV4dAorICAgICAgIHJlbW90ZXMvb3JpZ2luL21hc3Rlci1uZXh0MgorICAgICAgIHJlbW90ZXMvb3JpZ2luL21vcnR5CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vcGlua3kKKyAgICAgICByZW1vdGVzL29yaWdpbi9wdXJwbGUKKyAgICAgICByZW1vdGVzL29yaWdpbi9weXJvCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vcm9ja28KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVja291dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENoZWNrb3V0IHRoZSBkZXZlbG9wbWVudCBicmFuY2ggaW4gd2hpY2ggeW91IHdhbnQgdG8gd29yay4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGFjY2VzcyB0aGUgZmlsZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICZESVNUUk87IFJlbGVhc2UgKCZESVNUUk9fTkFNRTspLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICBCcmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgZnJvbSBvcmlnaW4uCisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJkRJU1RST19OQU1FX05PX0NBUDsnCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmQgY2hlY2tzIG91dCB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggYW5kIHJlcG9ydHMgdGhhdCB0aGUgYnJhbmNoIGlzIHRyYWNraW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSAib3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2guPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY29tbWFuZCBkaXNwbGF5cyB0aGUgYnJhbmNoZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgbm93IHBhcnQgb2YgeW91ciBsb2NhbCBwb2t5IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBhc3RlcmlzayBjaGFyYWN0ZXIgaW5kaWNhdGVzIHRoZSBicmFuY2ggdGhhdCBpcworICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgY2hlY2tlZCBvdXQgZm9yIHdvcms6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgYnJhbmNoCisgICAgICAgbWFzdGVyCisgICAgICogJkRJU1RST19OQU1FX05PX0NBUDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz4KKyAgICAgICAgPHRpdGxlPkNoZWNraW5nIE91dCBieSBUYWcgaW4gUG9reTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTaW1pbGFyIHRvIGJyYW5jaGVzLCB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSB1c2VzIHRhZ3MKKyAgICAgICAgICAgIHRvIG1hcmsgc3BlY2lmaWMgY29tbWl0cyBhc3NvY2lhdGVkIHdpdGggc2lnbmlmaWNhbnQgcG9pbnRzIGluCisgICAgICAgICAgICBhIGRldmVsb3BtZW50IGJyYW5jaCAoaS5lLiBhIHJlbGVhc2UgcG9pbnQgb3Igc3RhZ2Ugb2YgYQorICAgICAgICAgICAgcmVsZWFzZSkuCisgICAgICAgICAgICBZb3UgbWlnaHQgd2FudCB0byBzZXQgdXAgYSBsb2NhbCBicmFuY2ggYmFzZWQgb24gb25lIG9mIHRob3NlCisgICAgICAgICAgICBwb2ludHMgaW4gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyBzaW1pbGFyIHRvIGNoZWNraW5nIG91dCBieSBicmFuY2ggbmFtZSBleGNlcHQgeW91CisgICAgICAgICAgICB1c2UgdGFnIG5hbWVzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQ2hlY2tpbmcgb3V0IGEgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIGdpdmVzIHlvdSBhCisgICAgICAgICAgICAgICAgc3RhYmxlIHNldCBvZiBmaWxlcyBub3QgYWZmZWN0ZWQgYnkgZGV2ZWxvcG1lbnQgb24gdGhlCisgICAgICAgICAgICAgICAgYnJhbmNoIGFib3ZlIHRoZSB0YWcuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3dpdGNoIHRvIHRoZSBQb2t5IERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIGxvY2FsIHBva3kgR2l0IHJlcG9zaXRvcnksIHN3aXRjaCB0byB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIHRoZSBsb2NhbCBjb3B5IG9mIHBva3ksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmV0Y2ggdGhlIFRhZyBOYW1lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUbyBjaGVja291dCB0aGUgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgIGZldGNoIHRoZSB1cHN0cmVhbSB0YWdzIGludG8geW91ciBsb2NhbCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGZldGNoIC0tdGFncworICAgICAkCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGlzdCB0aGUgVGFnIE5hbWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGlzdCB0aGUgdGFnIG5hbWVzIG5vdzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCB0YWcKKyAgICAgMS4xX00xLmZpbmFsCisgICAgIDEuMV9NMS5yYzEKKyAgICAgMS4xX00xLnJjMgorICAgICAxLjFfTTIuZmluYWwKKyAgICAgMS4xX00yLnJjMQorICAgICAgICAuCisgICAgICAgIC4KKyAgICAgICAgLgorICAgICB5b2N0by0yLjIKKyAgICAgeW9jdG8tMi4yLjEKKyAgICAgeW9jdG8tMi4zCisgICAgIHlvY3RvLTIuMy4xCisgICAgIHlvY3RvLTIuNAorICAgICB5b2N0b18xLjVfTTUucmM4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvJkRJU1RSTzsgLWIgbXlfeW9jdG9fJkRJU1RSTzsKKyAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdteV95b2N0b18mRElTVFJPOycKKyAgICAgJCBnaXQgYnJhbmNoCisgICAgICAgbWFzdGVyCisgICAgICogbXlfeW9jdG9fJkRJU1RSTzsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgY29tbWFuZCBjcmVhdGVzIGFuZCBjaGVja3Mgb3V0IGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoIG5hbWVkICJteV95b2N0b18mRElTVFJPOyIsIHdoaWNoIGlzIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQgaW4gdGhlIHVwc3RyZWFtIHBva3kgcmVwb3NpdG9yeSB0aGF0IGhhcworICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSB0YWcuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGZpbGVzIHlvdSBoYXZlIGF2YWlsYWJsZSBsb2NhbGx5CisgICAgICAgICAgICAgICAgICAgIGFzIGEgcmVzdWx0IG9mIHRoZSA8ZmlsZW5hbWU+Y2hlY2tvdXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFyZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAiJkRJU1RST19OQU1FX05PX0NBUDsiIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgWW9jdG8gUHJvamVjdCAmRElTVFJPOyB3YXMgcmVsZWFzZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3BlcmZvcm1pbmctYS1zaW1wbGUtYnVpbGQnPgorICAgIDx0aXRsZT5QZXJmb3JtaW5nIGEgU2ltcGxlIEJ1aWxkPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aGluIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICBUaGlzIHByb2NlZHVyZSBzaG93cyBob3cgdG8gYnVpbGQgYW4gaW1hZ2UgdXNpbmcgQml0QmFrZSBmcm9tIGEKKyAgICAgICAgTGludXggaG9zdC4KKyAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPllvY3RvIFByb2plY3QgVG9hc3RlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGJ1aWxkIGltYWdlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFNESyBXb3JrZmxvdzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24gZnJvbSBzb3VyY2UKKyAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzPC9maWxlbmFtZT4uCisgICAgICAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgcHJvY2VzcyB1c2luZyBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgogICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpcyBhcyBmb2xsb3dzOgorICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBhbmQgbGlzdCBvdmVydmlld3MgdGhlIGJ1aWxkIHByb2Nlc3M6CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2Ugc3VyZSB5b3UgaGF2ZSBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnkgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgIHByZXZpb3VzIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5pdGlhbGl6ZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgYSBidWlsZAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG9wdGlvbnMgb24gaG93CisgICAgICAgICAgICAgICAgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T3B0aW9uYWxseSBlbnN1cmUgdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUsCi0gICAgICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEluaXRpYWxpemUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBGaWxlIGlzIENvcnJlY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBFbnN1cmUgdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKICAgICAgICAgICAgICAgICBpcyBzZXQgdXAgaG93IHlvdSB3YW50IGl0LgotICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIG1hbnkgYXNwZWN0cyBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaW5jbHVkaW5nCi0gICAgICAgICAgICAgICAgdGhlIHRhcmdldCBtYWNoaW5lIGFyY2hpdGVjdHVyZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIG1hbnkgYXNwZWN0cyBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIHRhcmdldCBtYWNoaW5lIGFyY2hpdGVjdHVyZSB0aHJvdWdoIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+TUFDSElORTwvdWxpbms+PC9maWxlbmFtZT4gdmFyaWFibGUsCiAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2luZyBmb3JtYXQgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkCiAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+KSwKICAgICAgICAgICAgICAgICBhbmQgYSBjZW50cmFsaXplZCB0YXJiYWxsIGRvd25sb2FkIGRpcmVjdG9yeSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz5ETF9ESVI8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz5ETF9ESVI8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgaW1hZ2UgdXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQml0QmFrZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIGltYWdlIGVpdGhlciBvbiB0aGUgYWN0dWFsIGhhcmR3YXJlIG9yIHVzaW5nIHRoZSBRRU1VCi0gICAgICAgICAgICAgICAgZW11bGF0b3IuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCi08c2VjdGlvbiBpZD0nZmxhc2hpbmctaW1hZ2VzLXVzaW5nLWJtYXB0b29sJz4KLSAgICA8dGl0bGU+Rmxhc2hpbmcgSW1hZ2VzIFVzaW5nIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBBbiBlYXN5IHdheSB0byBmbGFzaCBhbiBpbWFnZSB0byBhIGJvb3RhYmxlIGRldmljZSBpcyB0byB1c2UKLSAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4sIHdoaWNoIGlzIGludGVncmF0ZWQgaW50byB0aGUKLSAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9sbG93aW5nLCBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGZsYXNoIGEgV2ljIGltYWdlLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IHRvIGZsYXNoIGFueQotICAgICAgICAgICAgdHlwZSBvZiBpbWFnZS4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gZmxhc2ggYW4gaW1hZ2UgdXNpbmcKLSAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT46Ci0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgVW5sZXNzIHlvdSBhcmUgYWJsZSB0byBpbnN0YWxsIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXAtdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlIGFzIG1lbnRpb25lZCBpbiB0aGUgbm90ZQotICAgICAgICAgICAgaW4gdGhlIHNlY29uZCBidWxsZXQgb2Ygc3RlcCAzIGZ1cnRoZXIgZG93biwgeW91IHdpbGwgbmVlZCB0byBidWlsZAotICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gYmVmb3JlIHVzaW5nIGl0LgotICAgICAgICAgICAgQnVpbGQgdGhlIHRvb2wgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgYm1hcC10b29scy1uYXRpdmUKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZmlsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0ZTVFlQRVMgKz0gIndpYyB3aWMuYm1hcCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRWl0aGVyIGhhdmUgeW91ciBpbWFnZSByZWFkeSAocHJlLWJ1aWx0KSBvciB0YWtlIHRoZSBzdGVwCi0gICAgICAgICAgICAgICAgYnVpbGQgdGhlIGltYWdlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIEZsYXNoIHRoZSBpbWFnZSB0byB0aGUgbWVkaWEgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgc2V0dXA6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBtZWRpYSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGlzIGNvbW1hbmQgZm9ybToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXB0b29sIGNvcHkgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC08cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZWRpYSwgdXNlIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYmFzaAotICAgICAkIFBBVEg9dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluLyBibWFwdG9vbCBjb3B5IC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgVWJ1bnR1IG9yIERlYmlhbiBkaXN0cmlidXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gaW5zdGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQgYW5kIHRoZW4gdXNlIHRoZSB0b29sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBhY2NvdW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBibWFwLXRvb2xzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBoZWxwIG9uIHRoZSA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kLCB1c2UgZWl0aGVyIG9mCi0gICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBibWFwdG9vbCAtLWhlbHAKLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXB0b29sIC0taGVscAotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ndXNpbmctcHJlLWJ1aWx0LWJpbmFyaWVzLWFuZC1xZW11Jz4KLSAgICA8dGl0bGU+VXNpbmcgUHJlLUJ1aWx0IEJpbmFyaWVzIGFuZCBRRU1VPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBBbm90aGVyIG9wdGlvbiB5b3UgaGF2ZSB0byBnZXQgc3RhcnRlZCBpcyB0byB1c2UgcHJlLWJ1aWx0IGJpbmFyaWVzLgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBtYW55IHR5cGVzIG9mIGJpbmFyaWVzIHdpdGggZWFjaCByZWxlYXNlLgotICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsCi0gICAgICAgIGZvciBkZXNjcmlwdGlvbnMgb2YgdGhlIHR5cGVzIG9mIGJpbmFyaWVzIHRoYXQgc2hpcCB3aXRoIGEgWW9jdG8gUHJvamVjdAotICAgICAgICByZWxlYXNlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBVc2luZyBhIHByZS1idWlsdCBiaW5hcnkgaXMgaWRlYWwgZm9yIGRldmVsb3Bpbmcgc29mdHdhcmUKLSAgICAgICAgYXBwbGljYXRpb25zIHRvIHJ1biBvbiB5b3VyIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgVG8gZG8gdGhpcywgeW91IG5lZWQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgIGNyb3NzLXRvb2xjaGFpbiB0YXJiYWxsIGZvciB0aGUgYXJjaGl0ZWN0dXJlIG9uIHdoaWNoIHlvdSBhcmUKLSAgICAgICAgZGV2ZWxvcGluZy4KLSAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhbiBTREsgdHlwZSBpbWFnZSwgdGhlIGltYWdlIHNoaXBzIHdpdGggdGhlIGNvbXBsZXRlCi0gICAgICAgIHRvb2xjaGFpbiBuYXRpdmUgdG8gdGhlIGFyY2hpdGVjdHVyZSAoaS5lLiBhIHRvb2xjaGFpbiBkZXNpZ25lZCB0bwotICAgICAgICBydW4gb24gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4pLgotICAgICAgICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhbiBTREsgdHlwZSBpbWFnZSwgeW91IG5lZWQgdG8gc2VwYXJhdGVseSBkb3dubG9hZAotICAgICAgICBhbmQgaW5zdGFsbCB0aGUgc3RhbmQtYWxvbmUgWW9jdG8gUHJvamVjdCBjcm9zcy10b29sY2hhaW4gdGFyYmFsbC4KLSAgICAgICAgU2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFwcGVuZGl4LW9idGFpbic+T2J0YWluaW5nIHRoZSBTREs8L3VsaW5rPiIKLSAgICAgICAgYXBwZW5kaXggaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxvY2F0aW5nIGFuZCBpbnN0YWxsaW5nCi0gICAgICAgIGNyb3NzLXRvb2xjaGFpbnMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2YgaW1hZ2UgeW91IGFyZSB1c2luZywgeW91IG5lZWQgdG8gZG93bmxvYWQgdGhlIHByZS1idWlsdCBrZXJuZWwKLSAgICAgICAgdGhhdCB5b3Ugd2lsbCBib290IGluIHRoZSBRRU1VIGVtdWxhdG9yIGFuZCB0aGVuIGRvd25sb2FkIGFuZCBleHRyYWN0IHRoZSB0YXJnZXQgcm9vdAotICAgICAgICBmaWxlc3lzdGVtIGZvciB5b3VyIHRhcmdldCBtYWNoaW5l4oCZcyBhcmNoaXRlY3R1cmUuCi0gICAgICAgIFlvdSBjYW4gZ2V0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBiaW5hcmllcyBhbmQgZmlsZSBzeXN0ZW1zIGZyb20KLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX01BQ0hJTkVTX0RMX1VSTDsnPm1hY2hpbmVzPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZ2V0IGluc3RhbGxhdGlvbiBzY3JpcHRzIGZvciBzdGFuZC1hbG9uZSB0b29sY2hhaW5zIGZyb20KLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz50b29sY2hhaW5zPC91bGluaz4uCi0gICAgICAgIE9uY2UgeW91IGhhdmUgYWxsIHlvdXIgZmlsZXMsIHlvdSBzZXQgdXAgdGhlIGVudmlyb25tZW50IHRvIGVtdWxhdGUgdGhlIGhhcmR3YXJlCi0gICAgICAgIGJ5IHNvdXJjaW5nIGFuIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KLSAgICAgICAgRmluYWxseSwgeW91IHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yLgotICAgICAgICBZb3UgY2FuIGZpbmQgZGV0YWlscyBvbiBhbGwgdGhlc2Ugc3RlcHMgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1tYW51YWwnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB1c2luZyBRRU1VIHdpdGggdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtbWFudWFsLXFlbXUnPlVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSk8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBVc2luZyBRRU1VIHRvIGVtdWxhdGUgeW91ciBoYXJkd2FyZSBjYW4gcmVzdWx0IGluIHNwZWVkIGlzc3VlcwotICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBhbmQgaG9zdCBhcmNoaXRlY3R1cmUgbWl4LgotICAgICAgICBGb3IgZXhhbXBsZSwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gaW1hZ2UgaW4gdGhlIGVtdWxhdG9yCi0gICAgICAgIG9uIGFuIEludGVsLWJhc2VkIDMyLWJpdCAoeDg2KSBob3N0IG1hY2hpbmUgaXMgZmFzdCBiZWNhdXNlIHRoZSB0YXJnZXQgYW5kCi0gICAgICAgIGhvc3QgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KLSAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+IGltYWdlIG9uIHRoZSBzYW1lIEludGVsLWJhc2VkCi0gICAgICAgIGhvc3QgY2FuIGJlIHNsb3dlci4KLSAgICAgICAgQnV0LCB5b3Ugc3RpbGwgYWNoaWV2ZSBmYWl0aGZ1bCBlbXVsYXRpb24gb2YgQVJNLXNwZWNpZmljIGlzc3Vlcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVG8gc3BlZWQgdGhpbmdzIHVwLCB0aGUgUUVNVSBpbWFnZXMgc3VwcG9ydCB1c2luZyA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT4KLSAgICAgICAgdG8gY2FsbCBhIGNyb3NzLWNvbXBpbGVyIG91dHNpZGUgdGhlIGVtdWxhdGVkIHN5c3RlbS4KLSAgICAgICAgSWYgeW91IHVzZWQgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0byBzdGFydCBRRU1VLCBhbmQgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5kaXN0Y2NkPC9maWxlbmFtZT4gYXBwbGljYXRpb24gaXMgcHJlc2VudCBvbiB0aGUgaG9zdCBzeXN0ZW0sIGFueQotICAgICAgICBCaXRCYWtlIGNyb3NzLWNvbXBpbGluZyB0b29sY2hhaW4gYXZhaWxhYmxlIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSBpcyBhdXRvbWF0aWNhbGx5Ci0gICAgICAgIHVzZWQgZnJvbSB3aXRoaW4gUUVNVSBzaW1wbHkgYnkgY2FsbGluZyA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT4uCi0gICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGRlZmluaW5nIHRoZSBjcm9zcy1jb21waWxlciB2YXJpYWJsZQotICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+ZXhwb3J0IENDPSJkaXN0Y2MiPC9maWxlbmFtZT4pLgotICAgICAgICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHVzaW5nIGEgc3VpdGFibGUgU0RLIGltYWdlIG9yIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICBzdGFuZC1hbG9uZSB0b29sY2hhaW4gaXMgcHJlc2VudCwKLSAgICAgICAgdGhlIHRvb2xjaGFpbiBpcyBhbHNvIGF1dG9tYXRpY2FsbHkgdXNlZC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8bm90ZT4KLSAgICAgICAgU2V2ZXJhbCBtZWNoYW5pc21zIGV4aXN0IHRoYXQgbGV0IHlvdSBjb25uZWN0IHRvIHRoZSBzeXN0ZW0gcnVubmluZyBvbiB0aGUKLSAgICAgICAgUUVNVSBlbXVsYXRvcjoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5RRU1VIHByb3ZpZGVzIGEgZnJhbWVidWZmZXIgaW50ZXJmYWNlIHRoYXQgbWFrZXMgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICBjb25zb2xlcyBhdmFpbGFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+R2VuZXJhbGx5LCBoZWFkbGVzcyBlbWJlZGRlZCBkZXZpY2VzIGhhdmUgYSBzZXJpYWwgcG9ydC4KLSAgICAgICAgICAgICAgICBJZiBzbywgeW91IGNhbiBjb25maWd1cmUgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb2YgdGhlIHJ1bm5pbmcgaW1hZ2UKLSAgICAgICAgICAgICAgICB0byB1c2UgdGhhdCBwb3J0IHRvIHJ1biBhIGNvbnNvbGUuCi0gICAgICAgICAgICAgICAgVGhlIGNvbm5lY3Rpb24gdXNlcyBzdGFuZGFyZCBJUCBuZXR3b3JraW5nLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFNTSCBzZXJ2ZXJzIGV4aXN0IGluIHNvbWUgUUVNVSBpbWFnZXMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBRRU1VIGltYWdlIGhhcyBhCi0gICAgICAgICAgICAgICAgRHJvcGJlYXIgc2VjdXJlIHNoZWxsIChTU0gpIHNlcnZlciB0aGF0IHJ1bnMgd2l0aCB0aGUgcm9vdAotICAgICAgICAgICAgICAgIHBhc3N3b3JkIGRpc2FibGVkLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1sc2I8L2ZpbGVuYW1lPiBRRU1VIGltYWdlcwotICAgICAgICAgICAgICAgIGhhdmUgT3BlblNTSCBpbnN0ZWFkIG9mIERyb3BiZWFyLgotICAgICAgICAgICAgICAgIEluY2x1ZGluZyB0aGVzZSBTU0ggc2VydmVycyBhbGxvdyB5b3UgdG8gdXNlIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+c2NwPC9maWxlbmFtZT4gY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBRRU1VIGltYWdlLAotICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QgdGhlIFFFTVUgc2Vzc2lvbgotICAgICAgICAgICAgICAgIHVzaW5nIGEgbG9jYWwgY29weSBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtIG9uIHRoZSBob3N0LgotICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIG1ha2UgdGhpcyBjb25uZWN0aW9uLCB5b3UgbXVzdCBleHRyYWN0IGEgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIHlvdSBtdXN0IHRoZW4gcG9pbnQgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBzY3JpcHQgdG8gdGhlIGV4dHJhY3RlZCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L25vdGU+Ci08L3NlY3Rpb24+CistLT4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCmluZGV4IDI2ZWU5NzQuLmVkODAxMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMTcsMTQgKzE3LDE0IEBACiAgICAgICAgIDwvbWVkaWFvYmplY3Q+CiAKICAgICAgICAgPHRpdGxlPgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCiAgICAgICAgIDwvdGl0bGU+CiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPkludGVsIENvcnBvcmF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CkBAIC05NywyNCArOTcsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTMwLDMzICsxMjUsMzQgQEAKICAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieQogICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMuCiAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBZb2N0byBQcm9qZWN0IHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgorICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgTWFudWFsLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KQEAgLTE2Nyw4ICsxNjMsNiBAQAogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1uZXdiaWUueG1sIi8+CiAKLSAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLW1vZGVsLnhtbCIvPgotCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLXFlbXUueG1sIi8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwODI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDBiMGFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZwppbmRleCBkM2NhYzRhLi4xNWU2N2QwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NWFjMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDY4NGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTQ3NGRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI1MWQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA5MTA1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTZjMGI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTcwZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVjNWYyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkzYTM5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTJjZGIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sCmluZGV4IGE1Y2NmZGMuLmMzMDEzYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbApAQCAtMyw3ICszLDcgQEAKIFs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KIAogPGNoYXB0ZXIgaWQ9J2tlcm5lbC1kZXYtYWR2YW5jZWQnPgotPHRpdGxlPldvcmtpbmcgd2l0aCBBZHZhbmNlZCBNZXRhZGF0YTwvdGl0bGU+Cis8dGl0bGU+V29ya2luZyB3aXRoIEFkdmFuY2VkIE1ldGFkYXRhICg8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4pPC90aXRsZT4KIAogPHNlY3Rpb24gaWQ9J2tlcm5lbC1kZXYtYWR2YW5jZWQtb3ZlcnZpZXcnPgogICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CkBAIC0xMSwzMyArMTEsNTEgQEAKICAgICA8cGFyYT4KICAgICAgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIGZyYWdtZW50cyBhbmQgcGF0Y2hlcywgdGhlCiAgICAgICAgIFlvY3RvIFByb2plY3Qga2VybmVsIHRvb2xzIGFsc28gc3VwcG9ydCByaWNoCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IHRoYXQgeW91IGNhbgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiB0aGF0IHlvdSBjYW4KICAgICAgICAgdXNlIHRvIGRlZmluZSBjb21wbGV4IHBvbGljaWVzIGFuZCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgc3VwcG9ydC4KLSAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhlIE1ldGFkYXRhIGFuZCB0aGUgdG9vbHMgdGhhdCBtYW5hZ2UgaXQsIGtub3duIGFzCi0gICAgICAgIHRoZSBrZXJuLXRvb2xzICg8ZmlsZW5hbWU+a2Vybi10b29scy1uYXRpdmVfZ2l0LmJiPC9maWxlbmFtZT4pLCBpcworICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgTWV0YWRhdGEgYW5kIHRoZSB0b29scyB0aGF0IG1hbmFnZSBpdCBpcwogICAgICAgICB0byBoZWxwIHlvdSBtYW5hZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHNvdXJjZXMKICAgICAgICAgdXNlZCB0byBzdXBwb3J0IG11bHRpcGxlIEJTUHMgYW5kIExpbnV4IGtlcm5lbCB0eXBlcy4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgS2VybmVsIE1ldGFkYXRhIGV4aXN0cyBpbiBtYW55IHBsYWNlcy4KKyAgICAgICAgT25lIGFyZWEgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgIGlzIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHJlcG9zaXRvcnkgZ3JvdXBlZCB1bmRlciB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIKKyAgICAgICAgaGVhZGluZyBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgS2VybmVsIGRldmVsb3BtZW50IHRvb2xzICgia2Vybi10b29scyIpIGV4aXN0IGFsc28gaW4gdGhlIFlvY3RvCisgICAgICAgIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyB1bmRlciB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIgaGVhZGluZworICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC10b29sczwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICBUaGUgcmVjaXBlIHRoYXQgYnVpbGRzIHRoZXNlIHRvb2xzIGlzCisgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiPC9maWxlbmFtZT4KKyAgICAgICAgaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKIDxzZWN0aW9uIGlkPSd1c2luZy1rZXJuZWwtbWV0YWRhdGEtaW4tYS1yZWNpcGUnPgogICAgIDx0aXRsZT5Vc2luZyBLZXJuZWwgTWV0YWRhdGEgaW4gYSBSZWNpcGU8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBrZXJuZWwgc291cmNlcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBjb250YWluIGtlcm5lbCBNZXRhZGF0YSwgd2hpY2gKLSAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2hlcyBvZiB0aGUga2VybmVsCi0gICAgICAgIHNvdXJjZSBHaXQgcmVwb3NpdG9yaWVzLgorICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlIGludHJvZHVjdGlvbiwgdGhlIFlvY3RvIFByb2plY3QgY29udGFpbnMga2VybmVsCisgICAgICAgIE1ldGFkYXRhLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCiAgICAgICAgIFRoaXMgTWV0YWRhdGEgZGVmaW5lcyBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKSB0aGF0Ci0gICAgICAgIGNvcnJlc3BvbmQgdG8gZGVmaW5pdGlvbnMgaW4gbGludXgteW9jdG8gcmVjaXBlcyBmb3IgdGhlIHNhbWUgQlNQcy4KKyAgICAgICAgY29ycmVzcG9uZCB0byBkZWZpbml0aW9ucyBpbiBsaW51eC15b2N0byByZWNpcGVzIGZvciBjb3JyZXNwb25kaW5nIEJTUHMuCiAgICAgICAgIEEgQlNQIGNvbnNpc3RzIG9mIGFuIGFnZ3JlZ2F0aW9uIG9mIGtlcm5lbCBwb2xpY3kgYW5kIGVuYWJsZWQKICAgICAgICAgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZXMuCiAgICAgICAgIFRoZSBCU1AgY2FuIGJlIGluZmx1ZW5jZWQgZnJvbSB3aXRoaW4gdGhlIGxpbnV4LXlvY3RvIHJlY2lwZS4KICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBMaW51eCBrZXJuZWwgc291cmNlIHRoYXQgY29udGFpbnMga2VybmVsIE1ldGFkYXRhIGlzIHNhaWQgdG8gYmUKLSAgICAgICAgICAgICJsaW51eC15b2N0byBzdHlsZSIga2VybmVsIHNvdXJjZS4KLSAgICAgICAgICAgIEEgTGludXgga2VybmVsIHJlY2lwZSB0aGF0IGluaGVyaXRzIGZyb20gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8uaW5jPC9maWxlbmFtZT4gaW5jbHVkZSBmaWxlIGlzIHNhaWQgdG8gYmUgYQotICAgICAgICAgICAgImxpbnV4LXlvY3RvIHN0eWxlIiByZWNpcGUuCisgICAgICAgICAgICBBIExpbnV4IGtlcm5lbCByZWNpcGUgdGhhdCBjb250YWlucyBrZXJuZWwgTWV0YWRhdGEgKGUuZy4KKyAgICAgICAgICAgIGluaGVyaXRzIGZyb20gdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by5pbmM8L2ZpbGVuYW1lPiBmaWxlKQorICAgICAgICAgICAgaXMgc2FpZCB0byBiZSBhICJsaW51eC15b2N0byBzdHlsZSIgcmVjaXBlLgogICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogCkBAIC00OCw3ICs2Niw3IEBACiAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdHlwaWNhbGx5IHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgdXNlZCBieQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCiAgICAgICAgIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMsIHRoZSB2YXJpYWJsZSBtaWdodCBpbnN0ZWFkIHJlZmVyIHRvIHRoZQogICAgICAgICB1bmRlcmx5aW5nIHBsYXRmb3JtIG9mIHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+LgogICAgIDwvcGFyYT4KQEAgLTU2LDEyICs3NCwxNiBAQAogICAgIDxwYXJhPgogICAgICAgICBNdWx0aXBsZSBCU1BzIGNhbiByZXVzZSB0aGUgc2FtZSA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPgogICAgICAgICBuYW1lIGlmIHRoZXkgYXJlIGJ1aWx0IHVzaW5nIHRoZSBzYW1lIEJTUCBkZXNjcmlwdGlvbi4KLSAgICAgICAgVGhlICJlcDEwOC16eW5xbXAiIGFuZCAicWVtdXp5bnFtcCIgQlNQIGNvbWJpbmF0aW9uCi0gICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS14aWxpbng8L2ZpbGVuYW1lPgotICAgICAgICBsYXllciBpcyBhIGdvb2QgZXhhbXBsZSBvZiB0d28gQlNQcyB1c2luZyB0aGUgc2FtZQotICAgICAgICA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiB2YWx1ZSAoaS5lLiAienlucW1wIikuCi0gICAgICAgIFNlZSB0aGUgPGxpbmsgbGlua2VuZD0nYnNwLWRlc2NyaXB0aW9ucyc+QlNQIERlc2NyaXB0aW9uczwvbGluaz4gc2VjdGlvbgotICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgTXVsdGlwbGUgQ29yZWk3LWJhc2VkIEJTUHMgY291bGQgc2hhcmUgdGhlIHNhbWUgImludGVsLWNvcmVpNy02NCIKKyAgICAgICAgdmFsdWUgZm9yIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+LgorICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB0aGF0IDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+IGlzCisgICAgICAgIGp1c3QgZm9yIGtlcm5lbCBtYXBwaW5nLCB3aGlsZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGlzIHRoZSBtYWNoaW5lIHR5cGUgd2l0aGluIGEgQlNQIExheWVyLgorICAgICAgICBFdmVuIHdpdGggdGhpcyBkaXN0aW5jdGlvbiwgaG93ZXZlciwgdGhlc2UgdHdvIHZhcmlhYmxlcyBjYW4gaG9sZAorICAgICAgICB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSdic3AtZGVzY3JpcHRpb25zJz5CU1AgRGVzY3JpcHRpb25zPC9saW5rPgorICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtNzIsOSArOTQsOSBAQAogICAgICAgICA8bm90ZT4KICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+IHZhbHVlIHRvIGRlZmluZSBhbgogICAgICAgICAgICAgYWx0ZXJuYXRlIGJyYW5jaCB0eXBpY2FsbHkgd2l0aCBhIG1hY2hpbmUgb3ZlcnJpZGUgYXMgc2hvd24gaGVyZQotICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPm1ldGEtZW1lbmxvdzwvZmlsZW5hbWU+IGxheWVyOgorICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXI6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEtCUkFOQ0hfZW1lbmxvdy1ub2VtZ2QgPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvbm90ZT4KICAgICA8L3BhcmE+CkBAIC0xMTMsMTYgKzEzNSw3IEBACiAgICAgICAgIHJlY2lwZS4KICAgICAgICAgVGhlIHRvb2xzIHVzZSB0aGUgZmlyc3QgQlNQIGRlc2NyaXB0aW9uIGl0IGZpbmRzIHRoYXQgbWF0Y2gKICAgICAgICAgYm90aCB2YXJpYWJsZXMuCi0gICAgICAgIElmIHRoZSB0b29scyBjYW5ub3QgZmluZCBhIG1hdGNoLCB0aGV5IGlzc3VlIGEgd2FybmluZyBzdWNoIGFzCi0gICAgICAgIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgV0FSTklORzogQ2FuJ3QgZmluZCBhbnkgQlNQIGhhcmR3YXJlIG9yIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLgotICAgICBXQVJOSU5HOiBMb29rZWQgYXQgbWV0YS9jZmcvYnJva2VuL2VtZW5sb3ctYnJva2VuL2hkd19mcmFncy50eHQgYW5kCi0gICAgICAgICAgICAgIG1ldGEvY2ZnL2Jyb2tlbi9lbWVubG93LWJyb2tlbi9yZXF1aXJlZF9mcmFncy50eHQgaW4gZGlyZWN0b3J5OgotICAgICAgICAgICAgICBtZXRhL2NmZy9icm9rZW4vZW1lbmxvdy1icm9rZW4KLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+IHdhcyBzZXQgdG8gImVtZW5sb3ctYnJva2VuIgotICAgICAgICBhbmQgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gd2FzIHNldCB0byAiYnJva2VuIi4KKyAgICAgICAgSWYgdGhlIHRvb2xzIGNhbm5vdCBmaW5kIGEgbWF0Y2gsIHRoZXkgaXNzdWUgYSB3YXJuaW5nLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMTU0LDE5ICsxNjcsMTMgQEAKICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIGVudHJpZXMgaW4gPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+CiAgICAgICAgIGFyZSBkZXBlbmRlbnQgb24gdGhlaXIgbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgTWV0YWRhdGEgaXRzZWxmLgotICAgICAgICBUaGUgZXhhbXBsZXMgaGVyZSBhcmUgdGFrZW4gZnJvbSB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPgotICAgICAgICBicmFuY2ggb2YgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KLSAgICAgICAgV2l0aGluIHRoYXQgYnJhbmNoLCAiZmVhdHVyZXMiIGFuZCAiY2ZnIiBhcmUgc3ViZGlyZWN0b3JpZXMgb2YgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5tZXRhL2NmZy9rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgIFRoZSBleGFtcGxlcyBoZXJlIGFyZSB0YWtlbiBmcm9tIHRoZQorICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgRWFjaCBicmFuY2ggb2YgdGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zICJmZWF0dXJlcyIgYW5kICJjZmciCisgICAgICAgIHN1YmRpcmVjdG9yaWVzIGF0IHRoZSB0b3AtbGV2ZWwuCiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbWV0YWRhdGEtc3ludGF4Jz5LZXJuZWwgTWV0YWRhdGEgU3ludGF4PC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBUaGUgcHJvY2Vzc2luZyBvZiB0aGUgdGhlc2UgdmFyaWFibGVzIGhhcyBldm9sdmVkIHNvbWUgYmV0d2VlbiB0aGUKLQkgICAgICAgIDAuOSBhbmQgMS4zIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBhc3NvY2lhdGVkCi0JICAgICAgICBrZXJuLXRvb2xzIHNvdXJjZXMuCi0gICAgICAgICAgICBUaGUgZGVzY3JpcHRpb25zIGluIHRoaXMgc2VjdGlvbiBhcmUgYWNjdXJhdGUgZm9yIDEuMyBhbmQgbGF0ZXIKLQkgICAgICAgIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICA8L25vdGU+CisgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbWV0YWRhdGEtc3ludGF4Jz5LZXJuZWwgTWV0YWRhdGEgU3ludGF4PC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTI3OSwxMSArMjg2LDEzIEBACiAKICAgICA8cGFyYT4KICAgICAgICAgUGF0aHMgdXNlZCBpbiBrZXJuZWwgTWV0YWRhdGEgZmlsZXMgYXJlIHJlbGF0aXZlIHRvCi0gICAgICAgIDxmaWxlbmFtZT4mbHQ7YmFzZSZndDs8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgZWl0aGVyCisgICAgICAgIDxyZXBsYWNlYWJsZT5iYXNlPC9yZXBsYWNlYWJsZT4sIHdoaWNoIGlzIGVpdGhlcgogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICBpZiB5b3UgYXJlIGNyZWF0aW5nIE1ldGFkYXRhIGluCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlY2lwZS1zcGFjZS1tZXRhZGF0YSc+cmVjaXBlLXNwYWNlPC9saW5rPiwKLSAgICAgICAgb3IgPGZpbGVuYW1lPm1ldGEvY2ZnL2tlcm5lbC1jYWNoZS88L2ZpbGVuYW1lPiBpZiB5b3UgYXJlIGNyZWF0aW5nCisgICAgICAgIG9yIHRoZSB0b3AgbGV2ZWwgb2YKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlL3RyZWUvJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBpZiB5b3UgYXJlIGNyZWF0aW5nCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhLW91dHNpZGUtdGhlLXJlY2lwZS1zcGFjZSc+TWV0YWRhdGEgb3V0c2lkZSBvZiB0aGUgcmVjaXBlLXNwYWNlPC9saW5rPi4KICAgICA8L3BhcmE+CiAKQEAgLTMwMCwxMiArMzA5LDE4IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBTeW1tZXRyaWMgTXVsdGktUHJvY2Vzc2luZyAoU01QKSBmcmFnbWVudCBpbmNsdWRlZCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgdHdvIGZpbGVzOgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIFN5bW1ldHJpYyBNdWx0aS1Qcm9jZXNzaW5nIChTTVApCisgICAgICAgICAgICBmcmFnbWVudCB1c2VkIHdpdGggdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by00LjEyPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGtlcm5lbCBhcyBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIHJlY2lwZSBzcGFjZSAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgY29uc2lzdHMgb2YgdHdvIGZpbGVzOiA8ZmlsZW5hbWU+c21wLnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnNtcC5jZmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgPGZpbGVuYW1lPmNmZzwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4gYnJhbmNoIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBjZmcvc21wLnNjYzoKLSAgICAgICAgZGVmaW5lIEtGRUFUVVJFX0RFU0NSSVBUSU9OICJFbmFibGUgU01QIgorICAgICAgICBkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gIkVuYWJsZSBTTVAgZm9yIDMyIGJpdCBidWlsZHMiCiAgICAgICAgIGRlZmluZSBLRkVBVFVSRV9DT01QQVRJQklMSVRZIGFsbAogCiAgICAgICAgIGtjb25mIGhhcmR3YXJlIHNtcC5jZmcKQEAgLTMxNiwyMiArMzMxLDI3IEBACiAgICAgICAgICMgSW5jcmVhc2UgZGVmYXVsdCBOUl9DUFVTIGZyb20gOCB0byA2NCBzbyB0aGF0IHBsYXRmb3JtIHdpdGgKICAgICAgICAgIyBtb3JlIHRoYW4gOCBwcm9jZXNzb3JzIGNhbiBiZSBhbGwgYWN0aXZhdGVkIGF0IGJvb3QgdGltZQogICAgICAgICBDT05GSUdfTlJfQ1BVUz02NAorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIHdoZW4gc2V0dGluZyBOUl9DUFVTIHRvIHNvbWV0aGluZworICAgICAgICAjIGdyZWF0ZXIgdGhhbiA4IG9uIHg4NiBhcmNoaXRlY3R1cmVzLCBpdCBzaG91bGQgYmUgYXV0b21hdGljYWxseQorICAgICAgICAjIGRpc3JlZ2FyZGVkIGJ5IEtjb25maWcgd2hlbiB1c2luZyBhIGRpZmZlcmVudCBhcmNoCisgICAgICAgIENPTkZJR19YODZfQklHU01QPXkKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBhbmQgaW4KLSAgICAgICAgICAgIHRoZSAiPGxpbmsgbGlua2VuZD0nZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBlYXJsaWVyIGluIHRoaXMgbWFudWFsLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBpbgorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+c21wLnNjYzwvZmlsZW5hbWU+IGZpbGUsIHRoZQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtGRUFUVVJFX0RFU0NSSVBUSU9OJz48ZmlsZW5hbWU+S0ZFQVRVUkVfREVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICBwcm92aWRlcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBmcmFnbWVudC4KKyAgICAgICAgICAgIHN0YXRlbWVudCBwcm92aWRlcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBmcmFnbWVudC4KICAgICAgICAgICAgIEhpZ2hlciBsZXZlbCBrZXJuZWwgdG9vbHMgdXNlIHRoaXMgZGVzY3JpcHRpb24uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+a2NvbmY8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIHVzZWQgdG8gaW5jbHVkZSB0aGUKKyAgICAgICAgICAgIEFsc28gd2l0aGluIHRoZSA8ZmlsZW5hbWU+c21wLnNjYzwvZmlsZW5hbWU+IGZpbGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmtjb25mPC9maWxlbmFtZT4gY29tbWFuZCBpbmNsdWRlcyB0aGUKICAgICAgICAgICAgIGFjdHVhbCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGluIGFuIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4KICAgICAgICAgICAgIGZpbGUsIGFuZCB0aGUgImhhcmR3YXJlIiBrZXl3b3JkIGlkZW50aWZpZXMgdGhlIGZyYWdtZW50IGFzCiAgICAgICAgICAgICBiZWluZyBoYXJkd2FyZSBlbmFibGluZywgYXMgb3Bwb3NlZCB0byBnZW5lcmFsIHBvbGljeSwKQEAgLTM0Nyw3ICszNjcsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC9saW5rPiIKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd2YWxpZGF0aW5nLWNvbmZpZ3VyYXRpb24nPlZhbGlkYXRpbmcgQ29uZmlndXJhdGlvbjwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCB0byBhdWRpdCB5b3VyCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMzYzLDI2ICszODMsNzEgQEAKICAgICAgICAgICAgIFBhdGNoIGRlc2NyaXB0aW9ucyBhcmUgdmVyeSBzaW1pbGFyIHRvIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQKICAgICAgICAgICAgIGRlc2NyaXB0aW9ucywgd2hpY2ggYXJlIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4KICAgICAgICAgICAgIEhvd2V2ZXIsIGluc3RlYWQgb2YgYSA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGZpbGUsIHRoZXNlCi0gICAgICAgICAgICBkZXNjcmlwdGlvbnMgd29yayB3aXRoIHNvdXJjZSBwYXRjaGVzLgorICAgICAgICAgICAgZGVzY3JpcHRpb25zIHdvcmsgd2l0aCBzb3VyY2UgcGF0Y2hlcyAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzKS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQSB0eXBpY2FsIHBhdGNoIGluY2x1ZGVzIGEgZGVzY3JpcHRpb24gZmlsZSBhbmQgdGhlIHBhdGNoIGl0c2VsZjoKKyAgICAgICAgICAgIEEgdHlwaWNhbCBwYXRjaCBpbmNsdWRlcyBhIGRlc2NyaXB0aW9uIGZpbGUgYW5kIHRoZSBwYXRjaCBpdHNlbGYuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgYnVpbGQgcGF0Y2hlcyB1c2VkIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCBhcyBkZWZpbmVkIG91dHNpZGUgb2YKKyAgICAgICAgICAgIHRoZSByZWNpcGUgc3BhY2UgKGkuZS4gPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmaWxlczoKKyAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZC5zY2M8L2ZpbGVuYW1lPiBhbmQgYSBzZXQgb2YKKyAgICAgICAgICAgIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIDxmaWxlbmFtZT5wYXRjaGVzL2J1aWxkPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBicmFuY2ggaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdGluZ3Mgc2hvdyB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGFuZCBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1vZHBvc3QtbWFzay10cml2aWFsLXdhcm5pbmdzLnBhdGNoPC9maWxlbmFtZT4gZmlsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcGF0Y2hlcy9teXBhdGNoLnNjYzoKLSAgICAgICAgcGF0Y2ggbXlwYXRjaC5wYXRjaAorICAgICBwYXRjaGVzL2J1aWxkL2J1aWxkLnNjYzoKKyAgICAgICAgcGF0Y2ggYXJtLXNlcmlhbGl6ZS1idWlsZC10YXJnZXRzLnBhdGNoCisgICAgICAgIHBhdGNoIHBvd2VycGMtc2VyaWFsaXplLWltYWdlLXRhcmdldHMucGF0Y2gKKyAgICAgICAgcGF0Y2gga2J1aWxkLWV4Y2x1ZGUtbWV0YS1kaXJlY3RvcnktZnJvbS1kaXN0Y2xlYW4tcHJvY2Vzc2kucGF0Y2gKIAotICAgICBwYXRjaGVzL215cGF0Y2gucGF0Y2g6Ci0gICAgICAgIDxyZXBsYWNlYWJsZT50eXBpY2FsLXBhdGNoPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgIyBhcHBsaWVkIGJ5IGtnaXQKKyAgICAgICAgIyBwYXRjaCBrYnVpbGQtYWRkLW1ldGEtZmlsZXMtdG8tdGhlLWlnbm9yZS1saS5wYXRjaAorCisgICAgICAgIHBhdGNoIG1vZHBvc3QtbWFzay10cml2aWFsLXdhcm5pbmdzLnBhdGNoCisgICAgICAgIHBhdGNoIG1lbnVjb25maWctY2hlY2stbHhkaWFnbG9nLnNoLUFsbG93LXNwZWNpZmljYXRpb24tb2YucGF0Y2gKKworICAgICBwYXRjaGVzL2J1aWxkL21vZHBvc3QtbWFzay10cml2aWFsLXdhcm5pbmdzLnBhdGNoOgorICAgICAgICBGcm9tIGJkNDg5MzFiYzE0MmJkZDEwNDY2OGYzYTA2MmExZjIyNjAwYWFlNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisgICAgICAgIEZyb206IFBhdWwgR29ydG1ha2VyICZsdDtwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tJmd0OworICAgICAgICBEYXRlOiBTdW4sIDI1IEphbiAyMDA5IDE3OjU4OjA5IC0wNTAwCisgICAgICAgIFN1YmplY3Q6IFtQQVRDSF0gbW9kcG9zdDogbWFzayB0cml2aWFsIHdhcm5pbmdzCisKKyAgICAgICAgTmV3ZXIgSE9TVENDIHdpbGwgY29tcGxhaW4gYWJvdXQgdmFyaW91cyBzdGRpbyBmY25zIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4KKyAJICAgICAgICBjaGFyICpkdW1wX3dyaXRlID0gTlVMTCwgKmZpbGVzX3NvdXJjZSA9IE5VTEw7CisgCSAgICAgICAgaW50IG9wdDsKKyAgICAgICAgLS0KKyAgICAgICAgMi4xMC4xCisKKyAgICAgICAgZ2VuZXJhdGVkIGJ5IGNnaXQgdjAuMTAuMiBhdCAyMDE3LTA5LTI4IDE1OjIzOjIzIChHTVQpCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSB0aGUgdHlwaWNhbCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGUgdXNpbmcgPGZpbGVuYW1lPmRpZmYgLU51cnA8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSBkZXNjcmlwdGlvbiBmaWxlIGNhbiBpbmNsdWRlIG11bHRpcGxlIHBhdGNoIHN0YXRlbWVudHMgd2hlcmUKKyAgICAgICAgICAgIGVhY2ggc3RhdGVtZW50IGhhbmRsZXMgYSBzaW5nbGUgcGF0Y2guCisgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSA8ZmlsZW5hbWU+YnVpbGQuc2NjPC9maWxlbmFtZT4gZmlsZSwgZml2ZSBwYXRjaAorICAgICAgICAgICAgc3RhdGVtZW50cyBleGlzdCBmb3IgdGhlIGZpdmUgcGF0Y2hlcyBpbiB0aGUgZGlyZWN0b3J5LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gZmlsZSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBwYXRjaCBzdGF0ZW1lbnRzLAotICAgICAgICAgICAgb25lIHBlciBwYXRjaC4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgdHlwaWNhbCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZSB1c2luZworICAgICAgICAgICAgPGZpbGVuYW1lPmRpZmYgLU51cnA8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kcy4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIHBhdGNoZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbnMuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTM5MSwyNiArNDU2LDIzIEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGZWF0dXJlcyBhcmUgY29tcGxleCBrZXJuZWwgTWV0YWRhdGEgdHlwZXMgdGhhdCBjb25zaXN0Ci0gICAgICAgICAgICBvZiBjb25maWd1cmF0aW9uIGZyYWdtZW50cyAoPGZpbGVuYW1lPmtjb25mPC9maWxlbmFtZT4pLCBwYXRjaGVzCi0gICAgICAgICAgICAoPGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT4pLCBhbmQgcG9zc2libHkgb3RoZXIgZmVhdHVyZQotICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMgKDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4pLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBhIGZlYXR1cmUgZGVzY3JpcHRpb24gZmlsZToKKyAgICAgICAgICAgIG9mIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBwYXRjaGVzLCBhbmQgcG9zc2libHkgb3RoZXIgZmVhdHVyZQorICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGdlbmVyaWMgbGlzdGluZzoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZmVhdHVyZXMvbXlmZWF0dXJlLnNjYwotICAgICAgICBkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gIkVuYWJsZSBteWZlYXR1cmUiCisgICAgIGZlYXR1cmVzLzxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPi5zY2MKKyAgICAgICAgZGVmaW5lIEtGRUFUVVJFX0RFU0NSSVBUSU9OICJFbmFibGUgPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+IgogCi0gICAgICAgIHBhdGNoIDAwMDEtbXlmZWF0dXJlLWNvcmUucGF0Y2gKLSAgICAgICAgcGF0Y2ggMDAwMi1teWZlYXR1cmUtaW50ZXJmYWNlLnBhdGNoCisgICAgICAgIHBhdGNoIDAwMDEtPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+LWNvcmUucGF0Y2gKKyAgICAgICAgcGF0Y2ggMDAwMi08cmVwbGFjZWFibGU+bXlmZWF0dXJlPC9yZXBsYWNlYWJsZT4taW50ZXJmYWNlLnBhdGNoCiAKLSAgICAgICAgaW5jbHVkZSBjZmcvbXlmZWF0dXJlX2RlcGVuZGVuY3kuc2NjCi0gICAgICAgIGtjb25mIG5vbi1oYXJkd2FyZSBteWZlYXR1cmUuY2ZnCisgICAgICAgIGluY2x1ZGUgY2ZnLzxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPl9kZXBlbmRlbmN5LnNjYworICAgICAgICBrY29uZiBub24taGFyZHdhcmUgPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+LmNmZwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0aGUgPGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICA8ZmlsZW5hbWU+a2NvbmY8L2ZpbGVuYW1lPiBjb21tYW5kcyBhcmUgdXNlZCBhcyB3ZWxsIGFzCi0gICAgICAgICAgICBob3cgYW4gYWRkaXRpb25hbCBmZWF0dXJlIGRlc2NyaXB0aW9uIGZpbGUgaXMgaW5jbHVkZWQuCisgICAgICAgICAgICBob3cgYW4gYWRkaXRpb25hbCBmZWF0dXJlIGRlc2NyaXB0aW9uIGZpbGUgaXMgaW5jbHVkZWQgd2l0aAorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNDMwLDIxICs0OTIsNDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBBIGtlcm5lbCB0eXBlIGRlZmluZXMgYSBoaWdoLWxldmVsIGtlcm5lbCBwb2xpY3kgYnkKICAgICAgICAgICAgIGFnZ3JlZ2F0aW5nIG5vbi1oYXJkd2FyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cyB3aXRoCi0gICAgICAgICAgICBwYXRjaGVzIHlvdSB3YW50IHRvIHVzZSB3aGVuIGJ1aWxkaW5nIGEgTGludXgga2VybmVscyBvZiBhCi0gICAgICAgICAgICBzcGVjaWZpYyB0eXBlLgorICAgICAgICAgICAgcGF0Y2hlcyB5b3Ugd2FudCB0byB1c2Ugd2hlbiBidWlsZGluZyBhIExpbnV4IGtlcm5lbCBvZiBhCisgICAgICAgICAgICBzcGVjaWZpYyB0eXBlIChlLmcuIGEgcmVhbC10aW1lIGtlcm5lbCkuCiAgICAgICAgICAgICBTeW50YWN0aWNhbGx5LCBrZXJuZWwgdHlwZXMgYXJlIG5vIGRpZmZlcmVudCB0aGFuIGZlYXR1cmVzCiAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlICI8bGluayBsaW5rZW5kPSdmZWF0dXJlcyc+RmVhdHVyZXM8L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUga2VybmVsCi0gICAgICAgICAgICByZWNpcGUgc2VsZWN0cyB0aGUga2VybmVsIHR5cGUuCi0gICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1c2luZy1rZXJuZWwtbWV0YWRhdGEtaW4tYS1yZWNpcGUnPlVzaW5nIEtlcm5lbCBNZXRhZGF0YSBpbiBhIFJlY2lwZTwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfS0VSTkVMX1RZUEUnPjxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBrZXJuZWwgcmVjaXBlIHNlbGVjdHMgdGhlIGtlcm5lbCB0eXBlLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICBrZXJuZWwgcmVjaXBlIGZvdW5kIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4sIGEKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjcmVxdWlyZS1pbmNsdXNpb24nPjxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgZGlyZWN0aXZlIGluY2x1ZGVzIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSwgd2hpY2ggaGFzIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHRoYXQgZGVmaW5lcyB0aGUgZGVmYXVsdAorICAgICAgICAgICAga2VybmVsIHR5cGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJTlVYX0tFUk5FTF9UWVBFID8/PSAic3RhbmRhcmQiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB0cmVlIGRlZmluZXMgdGhyZWUga2VybmVsIHR5cGVzOiAic3RhbmRhcmQiLAotICAgICAgICAgICAgInRpbnkiLCBhbmQgInByZWVtcHQtcnQiOgorICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHdvdWxkIGJlIHRoZSByZWFsLXRpbWUga2VybmVsIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tcnRfNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoaXMga2VybmVsIHJlY2lwZSBkaXJlY3RseSBzZXRzIHRoZSBrZXJuZWwgdHlwZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGtlcm5lbCByZWNpcGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1c2luZy1rZXJuZWwtbWV0YWRhdGEtaW4tYS1yZWNpcGUnPlVzaW5nIEtlcm5lbCBNZXRhZGF0YSBpbiBhIFJlY2lwZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhyZWUga2VybmVsIHR5cGVzICgic3RhbmRhcmQiLCAidGlueSIsIGFuZCAicHJlZW1wdC1ydCIpIGFyZQorICAgICAgICAgICAgc3VwcG9ydGVkIGZvciBMaW51eCBZb2N0byBrZXJuZWxzOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+InN0YW5kYXJkIjoKICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZXMgdGhlIGdlbmVyaWMgTGludXgga2VybmVsIHBvbGljeSBvZiB0aGUgWW9jdG8KQEAgLTQ3MSwyOSArNTU5LDQwIEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSAic3RhbmRhcmQiIGtlcm5lbCB0eXBlIGlzIGRlZmluZWQgYnkKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIEZvciBhbnkgZ2l2ZW4ga2VybmVsIHR5cGUsIHRoZSBNZXRhZGF0YSBpcyBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiAoZS5nLiA8ZmlsZW5hbWU+c3RhbmRhcmQuc2NjPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgSGVyZSBpcyBhIHBhcnRpYWwgbGlzdGluZyBmb3IgdGhlIDxmaWxlbmFtZT5zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5rdHlwZXMvc3RhbmRhcmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0CisgICAgICAgICAgICByZXBvc2l0b3J5OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjIEluY2x1ZGUgdGhpcyBrZXJuZWwgdHlwZSBmcmFnbWVudCB0byBnZXQgdGhlIHN0YW5kYXJkIGZlYXR1cmVzIGFuZAogICAgICAjIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogCi0gICAgICMgSW5jbHVkZSBhbGwgc3RhbmRhcmQgZmVhdHVyZXMKLSAgICAgaW5jbHVkZSBzdGFuZGFyZC1ub2NmZy5zY2MKKyAgICAgIyBOb3RlOiBpZiBvbmx5IHRoZSBmZWF0dXJlcyBhcmUgZGVzaXJlZCwgYnV0IG5vdCB0aGUgY29uZmlndXJhdGlvbgorICAgICAjICAgICAgIHRoZW4gdGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgYXM6CisgICAgICMgICAgICAgICAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjIG5vY2ZnCisgICAgICMgICAgICAgaWYgbm8gY2hhaW5lZCBjb25maWd1cmF0aW9uIGlzIGRlc2lyZWQsIGluY2x1ZGUgaXQgYXM6CisgICAgICMgICAgICAgICAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjIG5vY2ZnIGluaGVyaXQKKworCisKKyAgICAgaW5jbHVkZSBrdHlwZXMvYmFzZS9iYXNlLnNjYworICAgICBicmFuY2ggc3RhbmRhcmQKIAogICAgICBrY29uZiBub24taGFyZHdhcmUgc3RhbmRhcmQuY2ZnCiAKLSAgICAgIyBpbmRpdmlkdWFsIGNmZyBibG9jayBzZWN0aW9uCi0gICAgIGluY2x1ZGUgY2ZnL2ZzL2RldnRtcGZzLnNjYwotICAgICBpbmNsdWRlIGNmZy9mcy9kZWJ1Z2ZzLnNjYwotICAgICBpbmNsdWRlIGNmZy9mcy9idHJmcy5zY2MKLSAgICAgaW5jbHVkZSBjZmcvZnMvZXh0Mi5zY2MKLSAgICAgaW5jbHVkZSBjZmcvZnMvZXh0My5zY2MKLSAgICAgaW5jbHVkZSBjZmcvZnMvZXh0NC5zY2MKKyAgICAgaW5jbHVkZSBmZWF0dXJlcy9rZ2RiL2tnZGIuc2NjCisgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAuCiAKLSAgICAgaW5jbHVkZSBjZmcvbmV0L2lwdjYuc2NjCi0gICAgIGluY2x1ZGUgY2ZnL25ldC9pcF9uZi5zY2MKICAgICAgaW5jbHVkZSBjZmcvbmV0L2lwNl9uZi5zY2MKICAgICAgaW5jbHVkZSBjZmcvbmV0L2JyaWRnZS5zY2MKKworICAgICBpbmNsdWRlIGNmZy9zeXN0ZW1kLnNjYworCisgICAgIGluY2x1ZGUgZmVhdHVyZXMvcmZraWxsL3Jma2lsbC5zY2MKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgPC9wYXJhPgogCkBAIC01MzksOSArNjM4LDkgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgQlNQIGRlc2NyaXB0aW9uIHN0cnVjdHVyYWwgb3ZlcnZpZXcgYWxvbmcKLSAgICAgICAgICAgIHdpdGggYWdncmVnYXRpb24gY29uY2VwdHMgYXMgd2VsbCBhcyBhIGRldGFpbGVkIGV4YW1wbGUgdXNpbmcKLSAgICAgICAgICAgIGEgQlNQIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCAoaS5lLiBNaW5ub3cgQm9hcmQpLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgQlNQIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSwgdGhlCisgICAgICAgICAgICBhZ2dyZWdhdGlvbiBjb25jZXB0cywgYW5kIHByZXNlbnRzIGEgZGV0YWlsZWQgZXhhbXBsZSB1c2luZworICAgICAgICAgICAgYSBCU1Agc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IChpLmUuIEJlYWdsZUJvbmUgQm9hcmQpLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1kZXNjcmlwdGlvbi1maWxlLW92ZXJ2aWV3Jz4KQEAgLTU0OSw3ICs2NDgsNyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB0b3AtbGV2ZWwgQlNQCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmaWxlcyBmb3IgdGhlIEJlYWdsZUJvbmUgYm9hcmQuCiAgICAgICAgICAgICAgICAgVG9wLWxldmVsIEJTUCBkZXNjcmlwdGlvbnMgZmlsZXMgZW1wbG95IGJvdGggYSBzdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICBhbmQgbmFtaW5nIGNvbnZlbnRpb24gZm9yIGNvbnNpc3RlbmN5LgogICAgICAgICAgICAgICAgIFRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGhlIGZpbGUgaXMgYXMgZm9sbG93czoKQEAgLTU1NywzMSArNjU2LDMwIEBACiAgICAgIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5rZXJuZWxfdHlwZTwvcmVwbGFjZWFibGU+LnNjYwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGV4YW1wbGUgdG9wLWxldmVsIEJTUCBmaWxlbmFtZXMgZm9yIHRoZQotICAgICAgICAgICAgICAgIE1pbm5vdyBCb2FyZCBCU1AsIHdoaWNoIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgICAgICBCZWFnbGVCb25lIEJvYXJkIEJTUCwgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWlubm93LXN0YW5kYXJkLnNjYwotICAgICBtaW5ub3ctcHJlZW1wdC1ydC5zY2MKLSAgICAgbWlubm93LXRpbnkuc2NjCisgICAgIGJlYWdsZWJvbmUtc3RhbmRhcmQuc2NjCisgICAgIGJlYWdsZWJvbmUtcHJlZW1wdC1ydC5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgRWFjaCBmaWxlIHVzZXMgdGhlIEJTUCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSBrZXJuZWwgdHlwZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgaXMgc2ltcGxlIEJTUCBkZXNjcmlwdGlvbiBmaWxlIHdob3NlIG5hbWUgaGFzIHRoZQotICAgICAgICAgICAgICAgIGZvcm0KLSAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tc3RhbmRhcmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGFuZCBzdXBwb3J0cyB0aGUgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT4gbWFjaGluZSB1c2luZwotICAgICAgICAgICAgICAgIGEgc3RhbmRhcmQga2VybmVsOgorICAgICAgICAgICAgICAgIEV4YW1pbmUgdGhlIDxmaWxlbmFtZT5iZWFnbGVib25lLXN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRlZmluZSBLTUFDSElORSA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPgorICAgICBkZWZpbmUgS01BQ0hJTkUgYmVhZ2xlYm9uZQogICAgICBkZWZpbmUgS1RZUEUgc3RhbmRhcmQKLSAgICAgZGVmaW5lIEtBUkNIIGkzODYKKyAgICAgZGVmaW5lIEtBUkNIIGFybQogCi0gICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkCisgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYworICAgICBicmFuY2ggYmVhZ2xlYm9uZQogCi0gICAgIGluY2x1ZGUgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgIGluY2x1ZGUgYmVhZ2xlYm9uZS5zY2MKIAotICAgICBrY29uZiBoYXJkd2FyZSA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+ZXh0cmE8L3JlcGxhY2VhYmxlPi5jZmcKKyAgICAgIyBkZWZhdWx0IHBvbGljeSBmb3Igc3RhbmRhcmQga2VybmVscworICAgICBpbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKKyAgICAgaW5jbHVkZSBmZWF0dXJlcy9wcm9maWxpbmcvcHJvZmlsaW5nLnNjYwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBFdmVyeSB0b3AtbGV2ZWwgQlNQIGRlc2NyaXB0aW9uIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCkBAIC01OTEsMjMgKzY4OSwyMCBAQAogICAgICAgICAgICAgICAgIFRoZXNlIHZhcmlhYmxlcyBhbGxvdyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBpZGVudGlmeQogICAgICAgICAgICAgICAgIHRoZSBkZXNjcmlwdGlvbiBhcyBtZWV0aW5nIHRoZSBjcml0ZXJpYSBzZXQgYnkgdGhlIHJlY2lwZSBiZWluZwogICAgICAgICAgICAgICAgIGJ1aWx0LgotICAgICAgICAgICAgICAgIFRoaXMgc2ltcGxlIGV4YW1wbGUgc3VwcG9ydHMgdGhlICJteWJzcCIgbWFjaGluZSBmb3IgdGhlICJzdGFuZGFyZCIKLSAgICAgICAgICAgICAgICBrZXJuZWwgYW5kIHRoZSAiaTM4NiIgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzdXBwb3J0cyB0aGUgImJlYWdsZWJvbmUiIG1hY2hpbmUgZm9yIHRoZQorICAgICAgICAgICAgICAgICJzdGFuZGFyZCIga2VybmVsIGFuZCB0aGUgImFybSIgYXJjaGl0ZWN0dXJlLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IGEgaGFyZCBsaW5rIGJldHdlZW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4gdmFyaWFibGUgYW5kIGEga2VybmVsIHR5cGUgZGVzY3JpcHRpb24KLSAgICAgICAgICAgICAgICBmaWxlIGRvZXMgbm90IGV4aXN0LgotICAgICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBkbyBub3QgaGF2ZSBrZXJuZWwgdHlwZXMgZGVmaW5lZCBpbiB5b3VyIGtlcm5lbAotICAgICAgICAgICAgICAgIE1ldGFkYXRhLCB5b3Ugb25seSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXJuZWwgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhbmQgYSBrZXJuZWwgdHlwZQorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgVGh1cywgaWYgeW91IGRvIG5vdCBoYXZlIHRoZSBrZXJuZWwgdHlwZSBkZWZpbmVkIGluIHlvdXIga2VybmVsCisgICAgICAgICAgICAgICAgTWV0YWRhdGEgYXMgaXQgaXMgaGVyZSwgeW91IG9ubHkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfS0VSTkVMX1RZUEUnPjxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQotICAgICAgICAgICAgICAgIEJTUCBkZXNjcmlwdGlvbiBmaWxlIG1hdGNoLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBGdXR1cmUgdmVyc2lvbnMgb2YgdGhlIHRvb2xpbmcgbWFrZSB0aGUgc3BlY2lmaWNhdGlvbiBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiBpbiB0aGUgQlNQIG9wdGlvbmFsLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUga2VybmVsIHJlY2lwZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlIEJTUCBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgbWF0Y2guCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjE2LDEzICs3MTEsMTIgQEAKICAgICAgICAgICAgICAgICAic3RhbmRhcmQiLgogICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB0aGlzIGlzIGRvbmUgdXNpbmcgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkCisgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgPGZpbGVuYW1lPmt0eXBlcy9zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZXMgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgcGF0Y2hlcywgYW5kCi0gICAgICAgICAgICAgICAgZmVhdHVyZXMgdGhhdCBtYWtlIHVwIHlvdXIgc3RhbmRhcmQga2VybmVsIHBvbGljeS4KLSAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdrZXJuZWwtdHlwZXMnPktlcm5lbCBUeXBlczwvbGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgYWdncmVnYXRlcyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBwYXRjaGVzLAorICAgICAgICAgICAgICAgIGFuZCBmZWF0dXJlcyB0aGF0IG1ha2UgdXAgeW91ciBzdGFuZGFyZCBrZXJuZWwgcG9saWN5LgorICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC10eXBlcyc+S2VybmVsIFR5cGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTYzMSwxMCArNzI1LDE0IEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBpbmNsdWRlIDxyZXBsYWNlYWJsZT5teWJzcDwvcmVwbGFjZWFibGU+LnNjYwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGF0IGluIHRoZSBCZWFnbGVCb25lIGV4YW1wbGUgd2l0aCB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSBiZWFnbGVib25lLnNjYworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJyZWFrIGEgY29tcGxldGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaW50byB0aGUgdmFyaW91cwogICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTY0NSw2ICs3NDMsMjMgQEAKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGtjb25mIGhhcmR3YXJlIDxyZXBsYWNlYWJsZT5teWJzcDwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5leHRyYTwvcmVwbGFjZWFibGU+LmNmZwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgQmVhZ2xlQm9uZSBleGFtcGxlIGRvZXMgbm90IGluY2x1ZGUgdGhlc2UgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgTWFsdGEgMzItYml0IGJvYXJkIGRvZXMgKCJtdGktbWFsdGEzMiIpLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIDxmaWxlbmFtZT5tdGktbWFsdGEzMi1sZS1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkZWZpbmUgS01BQ0hJTkUgbXRpLW1hbHRhMzItbGUKKyAgICAgZGVmaW5lIEtNQUNISU5FIHFlbXVtaXBzZWwKKyAgICAgZGVmaW5lIEtUWVBFIHN0YW5kYXJkCisgICAgIGRlZmluZSBLQVJDSCBtaXBzCisKKyAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjCisgICAgIGJyYW5jaCBtdGktbWFsdGEzMgorCisgICAgIGluY2x1ZGUgbXRpLW1hbHRhMzIuc2NjCisgICAgIGtjb25mIGhhcmR3YXJlIG10aS1tYWx0YTMyLWxlLmNmZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC02NTUsMTQgKzc3MCwxNSBAQAogICAgICAgICAgICAgICAgIE1hbnkgcmVhbC13b3JsZCBleGFtcGxlcyBhcmUgbW9yZSBjb21wbGV4LgogICAgICAgICAgICAgICAgIExpa2UgYW55IG90aGVyIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZSwgQlNQCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zIGNhbiBhZ2dyZWdhdGUgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIE1pbm5vdyBCU1AgZGVmaW5pdGlvbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by00LjQ8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgKGkuZS4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlL2JzcC9taW5ub3c8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIE1pbm5vdyBCU1AgZGVmaW5pdGlvbiBnaXZlbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT4gYnJhbmNoIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGUvYnNwL21pbm5vdy9taW5ub3cuc2NjPC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGUgTWlubm93IEJvYXJkIEJTUCBpcyB1bnVzZWQsIHRoZSBNZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICByZW1haW5zIGFuZCBpcyBiZWluZyB1c2VkIGhlcmUganVzdCBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1pbm5vdy5zY2M6CiAgICAgICAgICBpbmNsdWRlIGNmZy94ODYuc2NjCiAgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL2VnMjB0L2VnMjB0LnNjYwogICAgICAgICAgaW5jbHVkZSBjZmcvZG1hZW5naW5lLnNjYwpAQCAtNjk4LDkgKzgxNCw4IEBACiAgICAgICAgICAgICAgICAgIm1pbm5vdyIgZGVzY3JpcHRpb24gZmlsZXMgZm9yIHRoZSBzdXBwb3J0ZWQga2VybmVsIHR5cGVzCiAgICAgICAgICAgICAgICAgKGkuZS4gInN0YW5kYXJkIiwgInByZWVtcHQtcnQiLCBhbmQgInRpbnkiKS4KICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgIm1pbm5vdyIgZGVzY3JpcHRpb24gZm9yIHRoZSAic3RhbmRhcmQiIGtlcm5lbAotICAgICAgICAgICAgICAgIHR5cGU6CisgICAgICAgICAgICAgICAgdHlwZSAoaS5lLiA8ZmlsZW5hbWU+bWlubm93LXN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWlubm93LXN0YW5kYXJkLnNjYzoKICAgICAgICAgIGRlZmluZSBLTUFDSElORSBtaW5ub3cKICAgICAgICAgIGRlZmluZSBLVFlQRSBzdGFuZGFyZAogICAgICAgICAgZGVmaW5lIEtBUkNIIGkzODYKQEAgLTczNSw5ICs4NTAsOCBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBOb3cgY29uc2lkZXIgdGhlICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZvciB0aGUgInRpbnkiIGtlcm5lbAotICAgICAgICAgICAgICAgIHR5cGU6CisgICAgICAgICAgICAgICAgdHlwZSAoaS5lLiA8ZmlsZW5hbWU+bWlubm93LXRpbnkuc2NjPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtaW5ub3ctdGlueS5zY2M6CiAgICAgICAgIGRlZmluZSBLTUFDSElORSBtaW5ub3cKICAgICAgICAgZGVmaW5lIEtUWVBFIHRpbnkKICAgICAgICAgZGVmaW5lIEtBUkNIIGkzODYKQEAgLTc1NywxMCArODcxLDEyIEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIE5vdGljZSBhZ2FpbiB0aGUgdGhyZWUgY3JpdGljYWwgdmFyaWFibGVzOgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgT2YgdGhlc2UgdmFyaWFibGVzLCBvbmx5IHRoZSA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiBoYXMgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBJdCBpcyBub3cgc2V0IHRvICJ0aW55Ii4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtUWVBFJz48ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQVJDSCc+PGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBPZiB0aGVzZSB2YXJpYWJsZXMsIG9ubHkgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBoYXMgY2hhbmdlZCB0byBzcGVjaWZ5IHRoZSAidGlueSIga2VybmVsIHR5cGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC04NjcsMTUgKzk4MywxNSBAQAogICAgICAgICAgICAgV2hlbiBzdG9yZWQgb3V0c2lkZSBvZiB0aGUgcmVjaXBlLXNwYWNlLCB0aGUga2VybmVsIE1ldGFkYXRhCiAgICAgICAgICAgICBmaWxlcyByZXNpZGUgaW4gYSBzZXBhcmF0ZSByZXBvc2l0b3J5LgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWRkcyB0aGUgTWV0YWRhdGEgdG8gdGhlIGJ1aWxkIGFzCi0gICAgICAgICAgICBhICJrdHlwZT1tZXRhIiByZXBvc2l0b3J5IHRocm91Z2ggdGhlCisgICAgICAgICAgICBhICJ0eXBlPWttZXRhIiByZXBvc2l0b3J5IHRocm91Z2ggdGhlCiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICB2YXJpYWJsZS4KICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgc3RhdGVtZW50IGZyb20gdGhlIDxmaWxlbmFtZT5saW51eC15b2N0b180LjQuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc3RhdGVtZW50IGZyb20gdGhlIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgIGtlcm5lbCByZWNpcGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgorICAgICBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPGZpbGVuYW1lPiR7S01FVEF9PC9maWxlbmFtZT4sIGluIHRoaXMgY29udGV4dCwgaXMgc2ltcGx5IHVzZWQgdG8KICAgICAgICAgICAgIG5hbWUgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSBHaXQgZmV0Y2hlciBwbGFjZXMgdGhlIE1ldGFkYXRhLgpAQCAtODk0LDQ2ICsxMDEwLDYgQEAKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGhhc2UuCiAgICAgICAgIDwvcGFyYT4KIAotPCEtLQotCi0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyBhIHRyaXZpYWwgdHJlZSBvZiBNZXRhZGF0YQotICAgICAgICAgICAgaXMgc3RvcmVkIGluIGEgY3VzdG9tIExpbnV4IGtlcm5lbCBHaXQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS8KLSAgICAgYCZkYXNoOyZkYXNoOyBjZmcKLSAgICAgICAgIGAmZGFzaDsmZGFzaDsga2VybmVsLWNhY2hlCi0gICAgICAgICAgICAgfCZkYXNoOyZkYXNoOyBic3Atc3RhbmRhcmQuc2NjCi0gICAgICAgICAgICAgfCZkYXNoOyZkYXNoOyBic3AuY2ZnCi0gICAgICAgICAgICAgYCZkYXNoOyZkYXNoOyBzdGFuZGFyZC5jZmcKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gdXNlIGEgYnJhbmNoIGRpZmZlcmVudCBmcm9tIHdoZXJlIHRoZSBzb3VyY2VzIHJlc2lkZSwKLSAgICAgICAgICAgIHNwZWNpZnkgdGhlIGJyYW5jaCBpbiB0aGUgPGZpbGVuYW1lPktNRVRBPC9maWxlbmFtZT4gdmFyaWFibGUKLSAgICAgICAgICAgIGluIHlvdXIgTGludXgga2VybmVsIHJlY2lwZS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS01FVEEgPSAibWV0YSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRvIHVzZSB0aGUgc2FtZSBicmFuY2ggYXMgdGhlIHNvdXJjZXMsIHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPktNRVRBPC9maWxlbmFtZT4gdG8gYW4gZW1wdHkgc3RyaW5nOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLTUVUQSA9ICIiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCB5b3VyIG93biBzb3VyY2VzIGFuZCB3YW50IHRvIGNyZWF0ZSBhbgotICAgICAgICAgICAgb3JwaGFuIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoLCB1c2UgdGhlc2UgY29tbWFuZHMKLSAgICAgICAgICAgIGZyb20gd2l0aGluIHlvdXIgTGludXgga2VybmVsIEdpdCByZXBvc2l0b3J5OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjaGVja291dCAmZGFzaDsmZGFzaDtvcnBoYW4gbWV0YQotICAgICAkIGdpdCBybSAtcmYgLgotICAgICAkIGdpdCBjb21taXQgJmRhc2g7JmRhc2g7YWxsb3ctZW1wdHkgLW0gIkNyZWF0ZSBvcnBoYW4gbWV0YSBicmFuY2giCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLS0tPgotCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSWYgeW91IG1vZGlmeSB0aGUgTWV0YWRhdGEsIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gdXBkYXRlIHRoZQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KQEAgLTEwNTcsMTAgKzExMzMsOSBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgZmluZAotICAgICAgICAgICAgeW91cnNlbGYgd2l0aCBudW1lcm91cyBicmFuY2hlcywgeW91IG1pZ2h0IGNvbnNpZGVyIHVzaW5nIGEKLSAgICAgICAgICAgIGhpZXJhcmNoaWNhbCBicmFuY2hpbmcgc3lzdGVtIHNpbWlsYXIgdG8gd2hhdCB0aGUgbGludXgteW9jdG8gTGludXgKLSAgICAgICAgICAgIGtlcm5lbCByZXBvc2l0b3JpZXMgdXNlOgorICAgICAgICAgICAgSWYgeW91IGZpbmQgeW91cnNlbGYgd2l0aCBudW1lcm91cyBicmFuY2hlcywgeW91IG1pZ2h0IGNvbnNpZGVyCisgICAgICAgICAgICB1c2luZyBhIGhpZXJhcmNoaWNhbCBicmFuY2hpbmcgc3lzdGVtIHNpbWlsYXIgdG8gd2hhdCB0aGUKKyAgICAgICAgICAgIFlvY3RvIExpbnV4IEtlcm5lbCBHaXQgcmVwb3NpdG9yaWVzIHVzZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgPHJlcGxhY2VhYmxlPmNvbW1vbjwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5rZXJuZWxfdHlwZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTEwOTAsNyArMTE2NSw4IEBACiAgICAgICAgICAgICBUaGUgInN0YW5kYXJkIiBhbmQgInNtYWxsIiBicmFuY2hlcyBhZGQgc291cmNlcyBzcGVjaWZpYyB0byB0aG9zZQogICAgICAgICAgICAga2VybmVsIHR5cGVzIHRoYXQgZm9yIHdoYXRldmVyIHJlYXNvbiBhcmUgbm90IGFwcHJvcHJpYXRlIGZvciB0aGUKICAgICAgICAgICAgIG90aGVyIGJyYW5jaGVzLgotICAgICAgICAgICAgPG5vdGU+VGhlICJiYXNlIiBicmFuY2hlcyBhcmUgYW4gYXJ0aWZhY3Qgb2YgdGhlIHdheSBHaXQgbWFuYWdlcworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlICJiYXNlIiBicmFuY2hlcyBhcmUgYW4gYXJ0aWZhY3Qgb2YgdGhlIHdheSBHaXQgbWFuYWdlcwogICAgICAgICAgICAgICAgIGl0cyBkYXRhIGludGVybmFsbHkgb24gdGhlIGZpbGVzeXN0ZW06IEdpdCB3aWxsIG5vdCBhbGxvdyB5b3UKICAgICAgICAgICAgICAgICB0byB1c2UgPGZpbGVuYW1lPm15ZGlyL3N0YW5kYXJkPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15ZGlyL3N0YW5kYXJkL21hY2hpbmVfYTwvZmlsZW5hbWU+IGJlY2F1c2UgaXQKQEAgLTExMzcsMjcgKzEyMTMsMzQgQEAKICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgYnJpZWYgcmVmZXJlbmNlIGZvciB0aGUgY29tbWFuZHMgeW91IGNhbiB1c2UKICAgICAgICAgd2l0aGluIGFuIFNDQyBkZXNjcmlwdGlvbiBmaWxlICg8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+KToKICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YnJhbmNoIFtyZWZdPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJyYW5jaCBbcmVmXTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBuZXcgYnJhbmNoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJyYW5jaAogICAgICAgICAgICAgICAgICh0eXBpY2FsbHkgPGZpbGVuYW1lPiR7S1RZUEV9PC9maWxlbmFtZT4pIHVzaW5nCiAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2gsIG9yICJyZWYiIGlmIHNwZWNpZmllZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGVmaW5lPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmluZTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIERlZmluZXMgdmFyaWFibGVzLCBzdWNoIGFzIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+S0FSQ0g8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPktGRUFUVVJFX0RFU0NSSVBUSU9OPC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmluY2x1ZGUgU0NDX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5jbHVkZSBTQ0NfRklMRTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIEluY2x1ZGVzIGFuIFNDQyBmaWxlIGluIHRoZSBjdXJyZW50IGZpbGUuCiAgICAgICAgICAgICAgICAgVGhlIGZpbGUgaXMgcGFyc2VkIGFzIGlmIHlvdSBoYWQgaW5zZXJ0ZWQgaXQgaW5saW5lLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5rY29uZiBbaGFyZHdhcmV8bm9uLWhhcmR3YXJlXSBDRkdfRklMRTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rY29uZiBbaGFyZHdhcmV8bm9uLWhhcmR3YXJlXSBDRkdfRklMRTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIFF1ZXVlcyBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZm9yIG1lcmdpbmcgaW50byB0aGUgZmluYWwKICAgICAgICAgICAgICAgICBMaW51eCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdpdCBtZXJnZSBHSVRfQlJBTkNIPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBtZXJnZSBHSVRfQlJBTkNIPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgTWVyZ2VzIHRoZSBmZWF0dXJlIGJyYW5jaCBpbnRvIHRoZSBjdXJyZW50IGJyYW5jaC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cGF0Y2ggUEFUQ0hfRklMRTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIEFwcGxpZXMgdGhlIHBhdGNoIHRvIHRoZSBjdXJyZW50IEdpdCBicmFuY2guPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhdGNoIFBBVENIX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBcHBsaWVzIHRoZSBwYXRjaCB0byB0aGUgY3VycmVudCBHaXQgYnJhbmNoLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCmluZGV4IGFhNDBmYzguLmI4ZmQ4NzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCkBAIC0zLDIwICszLDQ2NiBAQAogWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgogCiA8Y2hhcHRlciBpZD0na2VybmVsLWRldi1jb21tb24nPgotCiA8dGl0bGU+Q29tbW9uIFRhc2tzPC90aXRsZT4KIAotPHBhcmE+Ci0gICAgVGhpcyBjaGFwdGVyIHByZXNlbnRzIHNldmVyYWwgY29tbW9uIHRhc2tzIHlvdSBwZXJmb3JtIHdoZW4geW91Ci0gICAgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbC4KLSAgICBUaGVzZSB0YXNrcyBpbmNsdWRlIHByZXBhcmluZyBhIGxheWVyLCBtb2RpZnlpbmcgYW4gZXhpc3RpbmcgcmVjaXBlLAotICAgIGl0ZXJhdGl2ZSBkZXZlbG9wbWVudCwgd29ya2luZyB3aXRoIHlvdXIgb3duIHNvdXJjZXMsIGFuZCBpbmNvcnBvcmF0aW5nCi0gICAgb3V0LW9mLXRyZWUgbW9kdWxlcy4KLSAgICA8bm90ZT4KLSAgICAgICAgVGhlIGV4YW1wbGVzIHByZXNlbnRlZCBpbiB0aGlzIGNoYXB0ZXIgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIDEuMi4yIFJlbGVhc2UgYW5kIGZvcndhcmQuCi0gICAgPC9ub3RlPgotPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNoYXB0ZXIgcHJlc2VudHMgc2V2ZXJhbCBjb21tb24gdGFza3MgeW91IHBlcmZvcm0gd2hlbiB5b3UKKyAgICAgICAgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbC4KKyAgICAgICAgVGhlc2UgdGFza3MgaW5jbHVkZSBwcmVwYXJpbmcgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBmb3IKKyAgICAgICAga2VybmVsIGRldmVsb3BtZW50LCBwcmVwYXJpbmcgYSBsYXllciwgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIHJlY2lwZSwKKyAgICAgICAgcGF0Y2hpbmcgdGhlIGtlcm5lbCwgY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgaXRlcmF0aXZlIGRldmVsb3BtZW50LAorICAgICAgICB3b3JraW5nIHdpdGggeW91ciBvd24gc291cmNlcywgYW5kIGluY29ycG9yYXRpbmcgb3V0LW9mLXRyZWUgbW9kdWxlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGUgZXhhbXBsZXMgcHJlc2VudGVkIGluIHRoaXMgY2hhcHRlciB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIDIuNCBSZWxlYXNlIGFuZCBmb3J3YXJkLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPgorICAgICAgICA8dGl0bGU+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiBkbyBhbnkga2VybmVsIGRldmVsb3BtZW50LCB5b3UgbmVlZCB0byBiZQorICAgICAgICAgICAgc3VyZSB5b3VyIGJ1aWxkIGhvc3QgaXMgc2V0IHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IHNldCB1cCwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICBQYXJ0IG9mIHByZXBhcmluZyB0aGUgc3lzdGVtIGlzIGNyZWF0aW5nIGEgbG9jYWwgR2l0CisgICAgICAgICAgICByZXBvc2l0b3J5IG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAoPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgb24geW91ciBzeXN0ZW0uCisgICAgICAgICAgICBGb2xsb3cgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCB0byBzZXQgdXAgeW91cgorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGNoZWNrIG91dCB0aGUgYXBwcm9wcmlhdGUgZGV2ZWxvcG1lbnQgYnJhbmNoIG9yCisgICAgICAgICAgICAgICAgeW91IGNyZWF0ZSB5b3VyIGxvY2FsIGJyYW5jaCBieSBjaGVja2luZyBvdXQgYSBzcGVjaWZpYyB0YWcKKyAgICAgICAgICAgICAgICB0byBnZXQgdGhlIGRlc2lyZWQgdmVyc2lvbiBvZiBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgS2VybmVsIGRldmVsb3BtZW50IGlzIGJlc3QgYWNjb21wbGlzaGVkIHVzaW5nCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFuZCBub3QgdGhyb3VnaCB0cmFkaXRpb25hbCBrZXJuZWwgd29ya2Zsb3cgbWV0aG9kcy4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciBib3RoCisgICAgICAgICAgICBzY2VuYXJpb3MuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPgorICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHByZXBhcmUgdG8gdXBkYXRlIHRoZSBrZXJuZWwgaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIENvbXBsZXRpbmcgdGhpcyBwcm9jZWR1cmUgbGVhdmVzIHlvdSB3aXRoIGEgY2xlYW4ga2VybmVsIGltYWdlCisgICAgICAgICAgICAgICAgYW5kIHJlYWR5IHRvIG1ha2UgbW9kaWZpY2F0aW9ucyBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJpdEJha2UgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBidWlsZGluZyBhbiBleHRlbnNpYmxlIFNESywgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgdGhlIEJpdEJha2UgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT48L3VsaW5rPik6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgY29tbWFuZHMgYXNzdW1lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGhhdmUgYmVlbiBjbG9uZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgYW5kIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4NiIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDMyLWJpdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkPC9maWxlbmFtZT4gaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBzaW5jZSB5b3UgYXJlIHByZXBhcmluZyB0byB3b3JrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBmb3IgUGF0Y2hlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY3JlYXRlIGEgbGF5ZXIgdG8gaG9sZCBwYXRjaGVzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgLi4vLi4vbWV0YS1teWxheWVyCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIEFkZCB5b3VyIG5ldyBsYXllciB3aXRoICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgLi4vLi4vbWV0YS1teWxheWVyJworICAgICAkCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gYW5kIEJTUCBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWxheWVycyc+QlNQIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCAoQlNQKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbmZvcm0gdGhlIEJpdEJha2UgQnVpbGQgRW52aXJvbm1lbnQgQWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFzIGRpcmVjdGVkIHdoZW4geW91IGNyZWF0ZWQgeW91ciBsYXllciwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgbGF5ZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICAkCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBFeHRlbnNpYmxlIFNESzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIGV4dGVuc2libGUgU0RLIHNwZWNpZmljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHVzZSB3aXRoIGltYWdlcyB0byBiZSBydW4gdXNpbmcgUUVNVToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCAtYyBwb3B1bGF0ZV9zZGtfZXh0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBmaW5pc2hlcywgeW91IGNhbiBmaW5kIHRoZSBTREsgaW5zdGFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIChpLmUuIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gZmlsZSkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB+L3Bva3kvYnVpbGQvdG1wL2RlcGxveS9zZGsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHRoZSBpbnN0YWxsZXIgZmlsZSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2UtbWluaW1hbC1pNTg2LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBFeHRlbnNpYmxlIFNESzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBpbnN0YWxsIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBpbnN0YWxsIHRoZSBTREsgaW4gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+L3Bva3lfc2RrPC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC90bXAvZGVwbG95L3NkaworICAgICAkIC4vcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1taW5pbWFsLWk1ODYtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIEV4dGVuc2libGUgU0RLIGluc3RhbGxlciB2ZXJzaW9uICZESVNUUk87CisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgRW50ZXIgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgU0RLIChkZWZhdWx0OiB+L3Bva3lfc2RrKToKKyAgICAgWW91IGFyZSBhYm91dCB0byBpbnN0YWxsIHRoZSBTREsgdG8gIi9ob21lL3Njb3R0cmlmL3Bva3lfc2RrIi4gUHJvY2VlZFtZL25dPyBZCisgICAgIEV4dHJhY3RpbmcgU0RLLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lCisgICAgIFNldHRpbmcgaXQgdXAuLi4KKyAgICAgRXh0cmFjdGluZyBidWlsZHRvb2xzLi4uCisgICAgIFByZXBhcmluZyBidWlsZCBzeXN0ZW0uLi4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDo1MgorICAgICBJbml0aWFsaXppbmcgdGFza3M6IDEwMCUgfCMjIyMjIyMjIyMjIyMjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjA0CisgICAgIENoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDAKKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDozMworICAgICBJbml0aWFsaXppbmcgdGFza3M6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIGRvbmUKKyAgICAgU0RLIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdXAgYW5kIGlzIHJlYWR5IHRvIGJlIHVzZWQuCisgICAgIEVhY2ggdGltZSB5b3Ugd2lzaCB0byB1c2UgdGhlIFNESyBpbiBhIG5ldyBzaGVsbCBzZXNzaW9uLCB5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBlLmcuCisgICAgICAkIC4gL2hvbWUvc2NvdHRyaWYvcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdzZXR0aW5nLXVwLXRoZS1lc2RrLXRlcm1pbmFsJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgYSBOZXcgVGVybWluYWwgdG8gV29yayBXaXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5zaWJsZSBTREs6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB1cCBhIG5ldyB0ZXJtaW5hbCB0byB3b3JrIHdpdGggdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSBzYW1lIEJpdEJha2Ugc2hlbGwgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFmdGVyIG9wZW5pbmcgYSBuZXcgc2hlbGwsIHJ1biB0aGUgU0RLIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHQgYXMgZGlyZWN0ZWQgYnkgdGhlIG91dHB1dCBmcm9tIGluc3RhbGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTREs6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIH4vcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICJTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MuCisgICAgIFJ1biBkZXZ0b29sIC0taGVscCBmb3IgZnVydGhlciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGdldCBhIHdhcm5pbmcgYWJvdXQgYXR0ZW1wdGluZyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsgaW4gYW4gZW52aXJvbm1lbnQgc2V0IHVwIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UsIHlvdSBkaWQgbm90IHVzZSBhIG5ldyBzaGVsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIENsZWFuIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RlcCBpbiBwcmVwYXJpbmcgdG8gd29yayBvbiB0aGUga2VybmVsIGlzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhbiBpbml0aWFsIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIHRoZSBuZXcgdGVybWluYWwgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IHNldCB1cCBhbmQgaW5pdGlhbGl6ZWQgZm9yIFNESyB3b3JrOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQtaW1hZ2UKKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDUKKyAgICAgUGFyc2luZyBvZiA4MzAgLmJiIGZpbGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgODMwIHBhcnNlZCkuIDEyOTkgdGFyZ2V0cywgNDcgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBXQVJOSU5HOiBObyBwYWNrYWdlcyB0byBhZGQsIGJ1aWxkaW5nIGltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbCB1bm1vZGlmaWVkCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRlZCAxMjk5IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKKyAgICAgSW5pdGlhbGl6aW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDcKKyAgICAgQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5OiAxMDAlIHwjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDAKKyAgICAgTk9URTogRXhlY3V0aW5nIFNldFNjZW5lIFRhc2tzCisgICAgIE5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcworICAgICBOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgMjg2NiB0YXNrcyBvZiB3aGljaCAyNjA0IGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICBOT1RFOiBTdWNjZXNzZnVsbHkgYnVpbHQgY29yZS1pbWFnZS1taW5pbWFsLiBZb3UgY2FuIGZpbmQgb3V0cHV0IGZpbGVzIGluIC9ob21lL3Njb3R0cmlmL3Bva3lfc2RrL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3ZXJlIGJ1aWxkaW5nIGZvciBhY3R1YWwgaGFyZHdhcmUgYW5kIG5vdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGlvbiwgeW91IGNvdWxkIGZsYXNoIHRoZSBpbWFnZSB0byBhIFVTQiBzdGljaworICAgICAgICAgICAgICAgICAgICAgICAgb24gPGZpbGVuYW1lPi9kZXYvc2RkPC9maWxlbmFtZT4gYW5kIGJvb3QgeW91ciBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHVzZXMgYSBNaW5ub3dib2FyZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL0tlcm5lbERldmVsb3BtZW50V2l0aEVzZGsnPlRpcHNBbmRUcmlja3MvS2VybmVsRGV2ZWxvcG1lbnRXaXRoRXNkazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBXaWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBoYXZlIHNldCB1cCB0byBzdGFydCBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0bworICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYnkgdXNpbmcgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIEZvciBhIGNvbnRpbnVlZCBleGFtcGxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+CisgICAgICAgICAgICA8dGl0bGU+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgR2V0dGluZyByZWFkeSBmb3IgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgaW52b2x2ZXMgbWFueSBvZiB0aGUgc2FtZSBzdGVwcyBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbmVlZCB0byBlc3RhYmxpc2ggYSBsb2NhbCBjb3B5IG9mIHRoZSBrZXJuZWwgc291cmNlCisgICAgICAgICAgICAgICAgc2luY2UgeW91IHdpbGwgYmUgZWRpdGluZyB0aGVzZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHByZXBhcmUgdG8gdXBkYXRlIHRoZSBrZXJuZWwgaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgZmxvdyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIENvbXBsZXRpbmcgdGhpcyBwcm9jZWR1cmUgbGVhdmVzIHlvdSByZWFkeSB0byBtYWtlIG1vZGlmaWNhdGlvbnMKKyAgICAgICAgICAgICAgICB0byB0aGUga2VybmVsIHNvdXJjZSBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCaXRCYWtlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiBkbyBhbnl0aGluZyB1c2luZyBCaXRCYWtlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSB0aGUgQml0QmFrZSBidWlsZCBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGZvciB0aGlzIGV4YW1wbGUsIGJlIHN1cmUgdGhhdCB0aGUgbG9jYWwgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBjaGVja2VkIG91dCBmb3IgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgJkRJU1RST19OQU1FOyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBjaGVja291dCBvdXQgdGhlICZESVNUUk9fTkFNRTsgYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgb3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBnaXQgYnJhbmNoCisgICAgIG1hc3RlcgorICAgICAqICZESVNUUk9fTkFNRTsKKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kcyBhc3N1bWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgaGF2ZSBiZWVuIGNsb25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEdpdCBhbmQgdGhlIGxvY2FsIHJlcG9zaXRvcnkgaXMgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9reSIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBhcmUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4NiIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDMyLWJpdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkPC9maWxlbmFtZT4gaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBzaW5jZSB5b3UgYXJlIHByZXBhcmluZyB0byB3b3JrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBmb3IgUGF0Y2hlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY3JlYXRlIGEgbGF5ZXIgdG8gaG9sZCBwYXRjaGVzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgLi4vLi4vbWV0YS1teWxheWVyCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIEFkZCB5b3VyIG5ldyBsYXllciB3aXRoICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgLi4vLi4vbWV0YS1teWxheWVyJworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGFuZCBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgKEJTUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5mb3JtIHRoZSBCaXRCYWtlIEJ1aWxkIEVudmlyb25tZW50IEFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBcyBkaXJlY3RlZCB3aGVuIHlvdSBjcmVhdGVkIHlvdXIgbGF5ZXIsIHlvdSBuZWVkIHRvIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAuLi8uLi9tZXRhLW15bGF5ZXIKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIgLi4uCisgICAgICQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTG9jYWwgQ29weSBvZiB0aGUgS2VybmVsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIEdpdCByZXBvc2l0b3JpZXMgb2Ygc3VwcG9ydGVkIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbHMgb3JnYW5pemVkIHVuZGVyICJZb2N0byBMaW51eCBLZXJuZWwiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjcmVhdGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29weSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5IG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3cgaG93IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIGluIHRoZSA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZm9yd2FyZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMgcHJpb3IgdG8gWW9jdG8gUHJvamVjdCAyLjQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyIC0tYnJhbmNoIHN0YW5kYXJkL2Jhc2UKKyAgICAgQ2xvbmluZyBpbnRvICdsaW51eC15b2N0by00LjEyJy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDYwOTcxOTUsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoOTAxMDI2LzkwMTAyNiksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgNjA5NzE5NSAoZGVsdGEgNTE1MjYwNCksIHJldXNlZCA2MDk2ODQ3IChkZWx0YSA1MTUyMjU2KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNjA5NzE5NS82MDk3MTk1KSwgMS4yNCBHaUIgfCA3LjgxIE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg1MTUyNjA0LzUxNTI2MDQpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgQ2hlY2tpbmcgb3V0IGZpbGVzOiAxMDAlICg1OTg0Ni81OTg0NiksIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlIEtlcm5lbCBDYWNoZSBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjcmVhdGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29weSBvZiB0aGUga2VybmVsIGNhY2hlIEdpdCByZXBvc2l0b3J5IG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgdGhpcyBleGFtcGxlLCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tNC4xMjwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3cgaG93IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBicmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGUgLS1icmFuY2ggeW9jdG8tNC4xMgorICAgICBDbG9uaW5nIGludG8gJ3lvY3RvLWtlcm5lbC1jYWNoZScuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAyMjYzOSwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg5NzYxLzk3NjEpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDIyNjM5IChkZWx0YSAxMjQwMCksIHJldXNlZCAyMjU4NiAoZGVsdGEgMTIzNDcpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgyMjYzOS8yMjYzOSksIDIyLjM0IE1pQiB8IDYuMjcgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDEyNDAwLzEyNDAwKSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgYXJlIHJlYWR5IHRvIHN0YXJ0IG1ha2luZyBtb2RpZmljYXRpb25zIHRvCisgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgc3RlcHMuCisgICAgICAgICAgICAgICAgRm9yIGEgY29udGludWVkIGV4YW1wbGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWFuZC1wcmVwYXJpbmctYS1sYXllcic+CiAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhbmQgUHJlcGFyaW5nIGEgTGF5ZXI8L3RpdGxlPgpAQCAtMjYsMjUgKzQ3Miw5OCBAQAogICAgICAgICAgICAgdGhhdCB5b3UgY3JlYXRlIGFuZCBwcmVwYXJlIHlvdXIgb3duIGxheWVyIGluIHdoaWNoIHRvIGRvIHlvdXIKICAgICAgICAgICAgIHdvcmsuCiAgICAgICAgICAgICBZb3VyIGxheWVyIGNvbnRhaW5zIGl0cyBvd24KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+Ci0gICAgICAgICAgICBhcHBlbmQgZmlsZXMKLSAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGFuZCBwcm92aWRlcyBhIGNvbnZlbmllbnQKLSAgICAgICAgICAgIG1lY2hhbmlzbSB0byBjcmVhdGUgeW91ciBvd24gcmVjaXBlIGZpbGVzCi0gICAgICAgICAgICAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIGhvdyB0byBjcmVhdGUgYW5kIHdvcmsgd2l0aCBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICBhcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgYW5kIHByb3ZpZGVzIGEKKyAgICAgICAgICAgIGNvbnZlbmllbnQgbWVjaGFuaXNtIHRvIGNyZWF0ZSB5b3VyIG93biByZWNpcGUgZmlsZXMKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGFzIHdlbGwgYXMgc3RvcmUgYW5kIHVzZSBrZXJuZWwKKyAgICAgICAgICAgIHBhdGNoIGZpbGVzLgorICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoIGxheWVycywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CiAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgY29tZXMgd2l0aCBtYW55IHRvb2xzIHRoYXQgc2ltcGxpZnkKICAgICAgICAgICAgICAgICB0YXNrcyB5b3UgbmVlZCB0byBwZXJmb3JtLgotICAgICAgICAgICAgICAgIE9uZSBzdWNoIHRvb2wgaXMgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllciBjcmVhdGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHNjcmlwdCwgd2hpY2ggc2ltcGxpZmllcyBjcmVhdGluZyBhIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICBPbmUgc3VjaCB0b29sIGlzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQsIHdoaWNoIHNpbXBsaWZpZXMgY3JlYXRpbmcgYSBuZXcgbGF5ZXIuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWxheWVyLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSB5b2N0by1sYXllciBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgc2NyaXB0LgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgbGF5ZXIgeW91IGNyZWF0ZSBmb3Iga2VybmVsIGRldmVsb3BtZW50LAorICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlIGEgbGF5ZXIKKyAgICAgICAgICAgIHdpdGhvdXQgdGhlIGFpZCBvZiB0b29scy4KKyAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGFzc3VtZSBjcmVhdGlvbiBvZiBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bXlsYXllcjwvZmlsZW5hbWU+IGluIHlvdXIgaG9tZSBkaXJlY3Rvcnk6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIFN0cnVjdHVyZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgdGhlIGxheWVyJ3Mgc3RydWN0dXJlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBta2RpciBtZXRhLW15bGF5ZXIKKyAgICAgJCBta2RpciBtZXRhLW15bGF5ZXIvY29uZgorICAgICAkIG1rZGlyIG1ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbAorICAgICAkIG1rZGlyIG1ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eAorICAgICAkIG1rZGlyIG1ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBob2xkcyB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHdoaWxlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWw8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaG9sZHMgeW91cgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZSBhbmQgZXZlbnR1YWwgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgTGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gdGhlIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXIvY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgY3JlYXRlIHRoZSA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAorICAgICBCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworICAgICAjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUworICAgICBCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKKyAgICAgICAgICAgICAgICAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKKworICAgICBCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm15bGF5ZXIiCisgICAgIEJCRklMRV9QQVRURVJOX215bGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyIKKyAgICAgQkJGSUxFX1BSSU9SSVRZX215bGF5ZXIgPSAiNSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBOb3RpY2UgPGZpbGVuYW1lPm15bGF5ZXI8L2ZpbGVuYW1lPiBhcyBwYXJ0IG9mIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgIHRocmVlIHN0YXRlbWVudHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgS2VybmVsIFJlY2lwZSBBcHBlbmQgRmlsZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBjcmVhdGUgdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBuYW1lIG9mIHRoZSBhcHBlbmQgZmlsZSBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKworICAgICBTUkNfVVJJX2FwcGVuZCArPSAiZmlsZTovLzxyZXBsYWNlYWJsZT5wYXRjaC1maWxlLW9uZTwvcmVwbGFjZWFibGU+IgorICAgICBTUkNfVVJJX2FwcGVuZCArPSAiZmlsZTovLzxyZXBsYWNlYWJsZT5wYXRjaC1maWxlLXR3bzwvcmVwbGFjZWFibGU+IgorICAgICBTUkNfVVJJX2FwcGVuZCArPSAiZmlsZTovLzxyZXBsYWNlYWJsZT5wYXRjaC1maWxlLXRocmVlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZW5hYmxlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGZpbmQKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKICAgICA8c2VjdGlvbiBpZD0nbW9kaWZ5aW5nLWFuLWV4aXN0aW5nLXJlY2lwZSc+CkBAIC01Niw3ICs1NzUsNyBAQAogICAgICAgICAgICAgRWFjaCByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEgZmV3IExpbnV4CiAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlcyBmcm9tIHdoaWNoIHlvdSBjYW4gY2hvb3NlLgogICAgICAgICAgICAgVGhlc2UgYXJlIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgogCkBAIC03MiwxMiArNTkxLDkgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBCZWZvcmUgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIHJlY2lwZSwgYmUgc3VyZSB0aGF0IHlvdSBoYXZlIGNyZWF0ZWQKICAgICAgICAgICAgIGEgbWluaW1hbCwgY3VzdG9tIGxheWVyIGZyb20gd2hpY2ggeW91IGNhbiB3b3JrLgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYW5kLXByZXBhcmluZy1hLWxheWVyJz5DcmVhdGluZyBhbmQgUHJlcGFyaW5nIGEgTGF5ZXI8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3Igc29tZSBnZW5lcmFsIHJlc291cmNlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0LXVwLXlvdXItbGF5ZXItZm9yLXRoZS1idWlsZCc+U2V0IFVwIFlvdXIgTGF5ZXIgZm9yIHRoZSBCdWlsZDwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIGEgZGV0YWlsZWQKLSAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYW5kLXByZXBhcmluZy1hLWxheWVyJz5DcmVhdGluZyBhbmQgUHJlcGFyaW5nIGEgTGF5ZXI8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctdGhlLWFwcGVuZC1maWxlJz4KQEAgLTg4LDExICs2MDQsMTEgQEAKICAgICAgICAgICAgICAgICBZb3UgYWxzbyBuYW1lIGl0IGFjY29yZGluZ2x5IGJhc2VkIG9uIHRoZSBsaW51eC15b2N0byByZWNpcGUKICAgICAgICAgICAgICAgICB5b3UgYXJlIHVzaW5nLgogICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG1vZGlmeWluZyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIHJlY2lwZSwgdGhlIGFwcGVuZCBmaWxlIHdpbGwgdHlwaWNhbGx5IGJlIGxvY2F0ZWQgYXMgZm9sbG93cwogICAgICAgICAgICAgICAgIHdpdGhpbiB5b3VyIGN1c3RvbSBsYXllcjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIDxyZXBsYWNlYWJsZT55b3VyLWxheWVyPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisgICAgIDxyZXBsYWNlYWJsZT55b3VyLWxheWVyPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgc2hvdWxkIGluaXRpYWxseSBleHRlbmQgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KQEAgLTEyMyw3ICs2MzksNyBAQAogICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgYXBwZW5kIGZpbGUKICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBCU1BzIGluIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisgICAgIG1ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0aW5nIHNob3dzIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgIEJlIGF3YXJlIHRoYXQgdGhlIGFjdHVhbCBjb21taXQgSUQgc3RyaW5ncyBpbiB0aGlzCkBAIC0xNDAsMTEgKzY1NiwxMiBAQAogICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKICAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAotICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJhZDhiMWQ2NTlkZGQyNjk5ZWJmN2Q1MGVmOWRlODk0MGIxNTdiZmMyIgotICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJhZDhiMWQ2NTlkZGQyNjk5ZWJmN2Q1MGVmOWRlODk0MGIxNTdiZmMyIgotICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJjZWJlMWFkNTZhZWJkODllMGRlMjk0MTJlMTk0MzNmYjQ0MWJmMTNjIgotICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJjZWJlMWFkNTZhZWJkODllMGRlMjk0MTJlMTk0MzNmYjQ0MWJmMTNjIgotICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjA2YzBkYmRjYmEzNzRjYTdmOTJhNTNkNjkyOTJkNmJiN2JjOWIwZjMiCisgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCisgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCisgICAgIFNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCisgICAgIFNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCisgICAgIFNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMmQxZDAxMDI0MDg0NmQ3YmZmMTVkMWZjYzBjYjZlYjhhMjJmYzc4YSIKKwogCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCkBAIC0xNTIsMTEgKzY2OSwxMSBAQAogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC40LjQxIgotICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC40LjQxIgotICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC40LjUzIgotICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC40LjUzIgotICAgICBMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjQuNTMiCisgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjEyLjciCisgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjEyLjciCisgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjEwIgorICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC4xMi4xMCIKKyAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xMCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhpcyBhcHBlbmQgZmlsZSBjb250YWlucyBzdGF0ZW1lbnRzIHVzZWQgdG8gc3VwcG9ydAogICAgICAgICAgICAgICAgIHNldmVyYWwgQlNQcyB0aGF0IHNoaXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KQEAgLTE3OSw3ICs2OTYsNyBAQAogICAgICAgICAgICAgICAgIHZhcmlhYmxlIGNvdWxkIGJlIHVzZWQgdG8gZW5hYmxlIGZlYXR1cmVzIHNwZWNpZmljIHRvCiAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbC4KICAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgcG9pbnRzIHRvIHNwZWNpZmljIGNvbW1pdHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgYW5kIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5CiAgICAgICAgICAgICAgICAgYnJhbmNoZXMgdG8gaWRlbnRpZnkgdGhlIGV4YWN0IGtlcm5lbCBuZWVkZWQgdG8gYnVpbGQgdGhlCiAgICAgICAgICAgICAgICAgQlNQLgpAQCAtMTg3LDggKzcwNCw4IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIE9uZSB0aGluZyBtaXNzaW5nIGluIHRoaXMgcGFydGljdWxhciBCU1AsIHdoaWNoIHlvdSB3aWxsCi0gICAgICAgICAgICAgICAgdHlwaWNhbGx5IG5lZWQgd2hlbiBkZXZlbG9waW5nIGEgQlNQLCBpcyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmaWxlICg8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+KSBmb3IgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgdHlwaWNhbGx5IG5lZWQgd2hlbiBkZXZlbG9waW5nIGEgQlNQLCBpcyB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlICg8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+KSBmb3IgeW91ciBCU1AuCiAgICAgICAgICAgICAgICAgV2hlbiBkZXZlbG9waW5nIGEgQlNQLCB5b3UgcHJvYmFibHkgaGF2ZSBhIGtlcm5lbCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgZmlsZSBvciBhIHNldCBvZiBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0LCB3aGVuIHRha2VuCiAgICAgICAgICAgICAgICAgdG9nZXRoZXIsIGRlZmluZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgQlNQLgpAQCAtMTk2LDcgKzcxMyw4IEBACiAgICAgICAgICAgICAgICAgaW4gYSBmaWxlIG9yIGEgc2V0IG9mIGZpbGVzIGluc2lkZSBhIGRpcmVjdG9yeSBsb2NhdGVkIGF0IHRoZQogICAgICAgICAgICAgICAgIHNhbWUgbGV2ZWwgYXMgeW91ciBrZXJuZWwncyBhcHBlbmQgZmlsZSBhbmQgaGF2aW5nIHRoZSBzYW1lCiAgICAgICAgICAgICAgICAgbmFtZSBhcyB0aGUga2VybmVsJ3MgbWFpbiByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICBXaXRoIGFsbCB0aGVzZSBjb25kaXRpb25zIG1ldCwgc2ltcGx5IHJlZmVyZW5jZSB0aG9zZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICBXaXRoIGFsbCB0aGVzZSBjb25kaXRpb25zIG1ldCwgc2ltcGx5IHJlZmVyZW5jZSB0aG9zZSBmaWxlcyBpbgorICAgICAgICAgICAgICAgIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4gdGhlIGFwcGVuZCBmaWxlLgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjQyLDI1ICs3NjAsMzEgQEAKIAogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIE90aGVyIG1ldGhvZHMgZXhpc3QgdG8gYWNjb21wbGlzaCBncm91cGluZyBhbmQgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggYSBsb2NhbCBjbG9uZSBvZiB0aGUga2VybmVsIHJlcG9zaXRvcnksCi0gICAgICAgICAgICAgICAgICAgIHlvdSBjb3VsZCBjaGVja291dCB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2gsIG1ha2UgeW91ciBjaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBwdXNoIHRoZSBjaGFuZ2VzIHRvIHRoZSBsb2NhbCBiYXJlIGNsb25lIG9mIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB5b3UgZGlyZWN0bHkgYWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2ggZm9yIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgbGlrZWx5IGVuZCB1cCBpbiB0aGF0IGxvY2F0aW9uIGFueXdheSBpZiB0aGUgQlNQIGdldHMKLSAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIE90aGVyIG1ldGhvZHMgZXhpc3QgdG8gYWNjb21wbGlzaCBncm91cGluZyBhbmQgZGVmaW5pbmcKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggYSBsb2NhbCBjbG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlcG9zaXRvcnksIHlvdSBjb3VsZCBjaGVja291dCB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2gsIG1ha2UgeW91ciBjaGFuZ2VzLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlbiBwdXNoIHRoZSBjaGFuZ2VzIHRvIHRoZSBsb2NhbCBiYXJlIGNsb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB5b3UgZGlyZWN0bHkgYWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucworICAgICAgICAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2ggZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgbGlrZWx5IGVuZCB1cCBpbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIGFueXdheSBpZiB0aGUgQlNQIGdldHMgYWRkZWQgdG8gdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGhvd2V2ZXIsIHRoZSBZb2N0byBQcm9qZWN0IG1haW50YWluZXJzIHRha2UgY2FyZSBvZiBtb3ZpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4tc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIE5vdCBvbmx5IGlzIGl0IGVhc2llciBmb3IgQlNQIGRldmVsb3BlcnMgdG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgcHV0dGluZyB0aG9zZQotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbiB0aGUgYnJhbmNoLCBidXQgaGF2aW5nIHRoZSBtYWludGFpbmVycyBkbyBpdCBhbGxvd3MgdGhlbSB0byBhcHBseQotICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsJyBrbm93bGVkZ2UgYWJvdXQgdGhlIGtpbmRzIG9mIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgbXVsdGlwbGUgQlNQcyBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgdHJlZSBhcmUgdHlwaWNhbGx5IHVzaW5nLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGFsbG93cyBmb3IgcHJvbW90aW9uIG9mIGNvbW1vbiBjb25maWd1cmF0aW9ucyBpbnRvIGNvbW1vbiBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgaG93ZXZlciwgdGhlIFlvY3RvIFByb2plY3QgbWFpbnRhaW5lcnMgdGFrZQorICAgICAgICAgICAgICAgICAgICBjYXJlIG9mIG1vdmluZyB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi1zcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgTm90IG9ubHkgaXMgaXQgZWFzaWVyIGZvciBCU1AgZGV2ZWxvcGVycyB0byBub3QgaGF2ZSB0bworICAgICAgICAgICAgICAgICAgICB3b3JyeSBhYm91dCBwdXR0aW5nIHRob3NlIGNvbmZpZ3VyYXRpb25zIGluIHRoZSBicmFuY2gsCisgICAgICAgICAgICAgICAgICAgIGJ1dCBoYXZpbmcgdGhlIG1haW50YWluZXJzIGRvIGl0IGFsbG93cyB0aGVtIHRvIGFwcGx5CisgICAgICAgICAgICAgICAgICAgICdnbG9iYWwnIGtub3dsZWRnZSBhYm91dCB0aGUga2luZHMgb2YgY29tbW9uIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyBtdWx0aXBsZSBCU1BzIGluIHRoZSB0cmVlIGFyZSB0eXBpY2FsbHkgdXNpbmcuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYWxsb3dzIGZvciBwcm9tb3Rpb24gb2YgY29tbW9uIGNvbmZpZ3VyYXRpb25zIGludG8KKyAgICAgICAgICAgICAgICAgICAgY29tbW9uIGZlYXR1cmVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9zZWN0aW9uPgpAQCAtMjk1LDkgKzgxOSwxMiBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgYSBkZXRhaWxlZCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBhdGNoIHRoZSBrZXJuZWwsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGF0Y2hpbmctdGhlLWtlcm5lbCc+UGF0Y2hpbmcgdGhlIEtlcm5lbDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gcGF0Y2ggdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTM4Myw4ICs5MTAsOCBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9yIGEgZGV0YWlsZWQgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBjb25maWd1cmUgdGhlIGtlcm5lbCwKICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NvbmZpZ3VyaW5nLXRoZS1rZXJuZWwnPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Q29uZmlndXJpbmcgdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC00MTYsMTUgKzk0MywxNyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IGFuICJpbi10cmVlIiA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgICAgICBlZGl0IHRoZSByZWNpcGUgdGhhdCBidWlsZHMgeW91ciBrZXJuZWwgc28gdGhhdCBpdCBoYXMgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgZm9ybToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEtCVUlMRF9ERUZDT05GSUdfS01BQ0hJTkUgPz0gPHJlcGxhY2VhYmxlPmRlZmNvbmZpZ19maWxlPC9yZXBsYWNlYWJsZT4KKyAgICAgS0JVSUxEX0RFRkNPTkZJR188cmVwbGFjZWFibGU+S01BQ0hJTkU8L3JlcGxhY2VhYmxlPiA/PSA8cmVwbGFjZWFibGU+ZGVmY29uZmlnX2ZpbGU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBhcHBlbmQgdGhlIHZhcmlhYmxlIHdpdGgKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBhbmQgdGhlbiBzdXBwbHkgdGhlIHBhdGggdG8geW91ciAiaW4tdHJlZSIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhcHBlbmRzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aAorICAgICAgICAgICAgICAgICJjb21tb24tcGMiIGFuZCBwcm92aWRlcyB0aGUgcGF0aCB0byB0aGUgImluLXRyZWUiCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlVJTERfREVGQ09ORklHX2NvbW1vbi1wYyA/PSAiL2hvbWUvc2NvdHRyaWYvY29uZmlnZmlsZXMvbXlfZGVmY29uZmlnX2ZpbGUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTQzMiw3ICs5NjEsOCBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgbmVlZCB0byBiZSBzdXJlIG5vCiAgICAgICAgICAgICAgICAgZmlsZXMgb3Igc3RhdGVtZW50cyBzZXQgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0byB1c2UgYQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBvdGhlciB0aGFuIHlvdXIgImluLXRyZWUiCi0gICAgICAgICAgICAgICAgZmlsZSAoZS5nLiBhIGtlcm5lbCdzIDxmaWxlbmFtZT5saW51eC08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSAoZS5nLiBhIGtlcm5lbCdzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmaWxlKS4KICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgaWYgdGhlIGJ1aWxkIHN5c3RlbSBkZXRlY3RzIGEgc3RhdGVtZW50CiAgICAgICAgICAgICAgICAgdGhhdCBpZGVudGlmaWVzIGFuICJvdXQtb2YtdHJlZSIKQEAgLTQ0OSwxMTUgKzk3OSw3NTAgQEAKICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hbi1pdGVyYXRpdmUtZGV2ZWxvcG1lbnQtcHJvY2Vzcyc+Ci0gICAgICAgIDx0aXRsZT5Vc2luZyBhbiBJdGVyYXRpdmUgRGV2ZWxvcG1lbnQgUHJvY2VzczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9InVzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCI+CisgICAgICAgIDx0aXRsZT5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIGV4aXN0aW5nIHBhdGNoZXMgb3IgY29uZmlndXJhdGlvbiBmaWxlcywKLSAgICAgICAgICAgIHlvdSBjYW4gaXRlcmF0aXZlbHkgZ2VuZXJhdGUgdGhlbSBmcm9tIHdpdGhpbiB0aGUgQml0QmFrZSBidWlsZAotICAgICAgICAgICAgZW52aXJvbm1lbnQgYXMgZGVzY3JpYmVkIHdpdGhpbiB0aGlzIHNlY3Rpb24uCi0gICAgICAgICAgICBEdXJpbmcgYW4gaXRlcmF0aXZlIHdvcmtmbG93LCBydW5uaW5nIGEgcHJldmlvdXNseSBjb21wbGV0ZWQgQml0QmFrZQotICAgICAgICAgICAgdGFzayBjYXVzZXMgQml0QmFrZSB0byBpbnZhbGlkYXRlIHRoZSB0YXNrcyB0aGF0IGZvbGxvdyB0aGUKLSAgICAgICAgICAgIGNvbXBsZXRlZCB0YXNrIGluIHRoZSBidWlsZCBzZXF1ZW5jZS4KLSAgICAgICAgICAgIEludmFsaWRhdGVkIHRhc2tzIHJlYnVpbGQgdGhlIG5leHQgdGltZSB5b3UgcnVuIHRoZSBidWlsZCB1c2luZwotICAgICAgICAgICAgQml0QmFrZS4KKyAgICAgICAgICAgIFRoZSBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IHlvdSBob3cgeW91IGNhbiBwYXRjaCB0aGUKKyAgICAgICAgICAgIGtlcm5lbCB1c2luZyB0aGUgZXh0ZW5zaWJsZSBTREsgYW5kIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgYXR0ZW1wdGluZyB0aGlzIHByb2NlZHVyZSwgYmUgc3VyZSB5b3UgaGF2ZSBwZXJmb3JtZWQKKyAgICAgICAgICAgICAgICB0aGUgc3RlcHMgdG8gZ2V0IHJlYWR5IGZvciB1cGRhdGluZyB0aGUga2VybmVsIGFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIHlvdSByZWFkIHRoaXMgc2VjdGlvbiwgYmUgc3VyZSB0byBzdWJzdGl0dXRlIHRoZSBuYW1lCi0gICAgICAgICAgICBvZiB5b3VyIExpbnV4IGtlcm5lbCByZWNpcGUgZm9yIHRoZSB0ZXJtCi0gICAgICAgICAgICAibGludXgteW9jdG8iLgorICAgICAgICAgICAgUGF0Y2hpbmcgdGhlIGtlcm5lbCBpbnZvbHZlcyBjaGFuZ2luZyBvciBhZGRpbmcgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgIHRvIGFuIGV4aXN0aW5nIGtlcm5lbCwgY2hhbmdpbmcgb3IgYWRkaW5nIHJlY2lwZXMgdG8gdGhlIGtlcm5lbAorICAgICAgICAgICAgdGhhdCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMsIG9yIGV2ZW4KKyAgICAgICAgICAgIGFsdGVyaW5nIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYuCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ndGlwLWRpcnR5LXN0cmluZyc+Ci0gICAgICAgICAgICA8dGl0bGU+Ii1kaXJ0eSIgU3RyaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgY3JlYXRlcyBhIHNpbXBsZSBwYXRjaCBieSBhZGRpbmcgc29tZSBRRU1VIGVtdWxhdG9yCisgICAgICAgICAgICBjb25zb2xlIG91dHB1dCBhdCBib290IHRpbWUgdGhyb3VnaCA8ZmlsZW5hbWU+cHJpbnRrPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHN0YXRlbWVudHMgaW4gdGhlIGtlcm5lbCdzIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IHNvdXJjZQorICAgICAgICAgICAgY29kZSBmaWxlLgorICAgICAgICAgICAgQXBwbHlpbmcgdGhlIHBhdGNoIGFuZCBib290aW5nIHRoZSBtb2RpZmllZCBpbWFnZSBjYXVzZXMgdGhlIGFkZGVkCisgICAgICAgICAgICBtZXNzYWdlcyB0byBhcHBlYXIgb24gdGhlIGVtdWxhdG9yJ3MgY29uc29sZS4KKyAgICAgICAgICAgIFRoZSBleGFtcGxlIGlzIGEgY29udGludWF0aW9uIG9mIHRoZSBzZXR1cCBwcm9jZWR1cmUgZm91bmQgaW4KKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktdG8tZGV2ZWxvcC11c2luZy1kZXZ0b29sJz5HZXR0aW5nIFJlYWR5IHRvIERldmVsb3AgVXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICBTZWN0aW9uLgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIE91dCB0aGUgS2VybmVsIFNvdXJjZSBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGaXJzdCB5b3UgbXVzdCB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBjaGVja291dAorICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGluIGl0cyB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBpbiB0aGUgdGVybWluYWwgc2V0IHVwIHRvIGRvIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NldHRpbmctdXAtdGhlLWVzZGstdGVybWluYWwnPnN0ZXA8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgb3V0IHRoZSBjb2RlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBtb2RpZnkgbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyB0aGUgY2hlY2tvdXQgb3BlcmF0aW9uLCBhIGJ1ZyBleGlzdHMgdGhhdCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UgZXJyb3JzIHN1Y2ggYXMgdGhlIGZvbGxvd2luZyB0byBhcHBlYXI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVSUk9SOiBUYXNraGFzaCBtaXNtYXRjaCAyYzc5MzQzOGMyZDlmOGMzNjgxZmQ1ZjdiYzgxOWVmYSB2ZXJzdXMKKyAgICAgICAgICAgIGJlM2E4OWNlN2M0NzE3ODg4MGJhN2JmNjI5M2Q3NDA0IGZvcgorICAgICAgICAgICAgL3BhdGgvdG8vZXNkay9sYXllcnMvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIuZG9fdW5wYWNrCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlc2UgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc291cmNlIGNvZGUgaXMgY29ycmVjdGx5IGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZSBGaWxlczwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBtYWtlIHNvbWUgc2ltcGxlIGNoYW5nZXMgdG8gdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIHN0ZXAsIHRoZSBvdXRwdXQgbm90ZWQgd2hlcmUgeW91IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcyAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+L3Bva3lfc2RrL3dvcmtzcGFjZS9zb3VyY2VzL2xpbnV4LXlvY3RvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0byB3aGVyZSB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIGJlZm9yZSBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGVkaXRzIHRvIHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3lfc2RrL3dvcmtzcGFjZS9zb3VyY2VzL2xpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBzb3VyY2UgZmlsZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlIDxmaWxlbmFtZT5pbml0L2NhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgdm9pZCBjYWxpYnJhdGVfZGVsYXkodm9pZCkKKyAgICAgeworICAgICAgICAgdW5zaWduZWQgbG9uZyBscGo7CisgICAgICAgICBzdGF0aWMgYm9vbCBwcmludGVkOworICAgICAgICAgaW50IHRoaXNfY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogCi08IS0tCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QVIgLSBEYXJyZW4gSGFydDo8L2VtcGhhc2lzPiAgVGhpcyBzZWN0aW9uCi0gICAgICAgICAgICAgICAgb3JpZ2luYXRlZCBmcm9tIHRoZSBvbGQgWW9jdG8gUHJvamVjdCBLZXJuZWwgQXJjaGl0ZWN0dXJlCi0gICAgICAgICAgICAgICAgYW5kIFVzZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgSXQgd2FzIGRlY2lkZWQgd2UgbmVlZCB0byBwdXQgaXQgaW4gdGhpcyBzZWN0aW9uIGhlcmUuCi0gICAgICAgICAgICAgICAgRGFycmVuIG5lZWRzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgd2Ugd2FudCBpdCBhbmQgd2hhdCBwYXJ0Ci0gICAgICAgICAgICAgICAgb2YgaXQgd2Ugd2FudCAoYWxsLCByZXZpc2lvbj8/PykKLSAgICAgICAgICAgIDwvcGFyYT4KLS0tPgorICAgICAgICAgcHJpbnRrKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgIEhFTExPIFlPQ1RPIEtFUk5FTCAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIGtlcm5lbCBpbWFnZXMgYXJlIGJlaW5nIGJ1aWx0IHdpdGggIi1kaXJ0eSIgb24gdGhlCi0gICAgICAgICAgICAgICAgZW5kIG9mIHRoZSB2ZXJzaW9uIHN0cmluZywgdGhpcyBzaW1wbHkgbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkgaGF2ZSBub3QgYmVlbiBjb21taXR0ZWQuCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAJaWYgKHBlcl9jcHUoY3B1X2xvb3BzX3Blcl9qaWZmeSwgdGhpc19jcHUpKSB7CisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgVXBkYXRlZCBLZXJuZWwgU291cmNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSB1cGRhdGVkIGtlcm5lbCBzb3VyY2UsIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCBsaW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgSW1hZ2UgV2l0aCB0aGUgTmV3IEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICB0byBjcmVhdGUgYSBuZXcgaW1hZ2UgdGhhdCBoYXMgdGhlIG5ldyBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGltYWdlIHlvdSBvcmlnaW5hbGx5IGNyZWF0ZWQgcmVzdWx0ZWQgaW4gYSBXaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHlvdSBjYW4gdXNlIGFuIGFsdGVybmF0ZSBtZXRob2QgdG8gY3JlYXRlIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHdpdGggdGhlIHVwZGF0ZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUsIHNlZSB0aGUgc3RlcHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvS2VybmVsRGV2ZWxvcG1lbnRXaXRoRXNkayc+VGlwc0FuZFRyaWNrcy9LZXJuZWxEZXZlbG9wbWVudFdpdGhFc2RrPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpa2kgUGFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGRldnRvb2wgYnVpbGQtaW1hZ2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCB0aGUgTmV3IEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHlvdSBjYW4gcnVuIHRoZSBuZXcgaW1hZ2UgdXNpbmcgUUVNVQorICAgICAgICAgICAgICAgICAgICB0byB2ZXJpZnkgeW91ciBjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvb3QgdGhlIGltYWdlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vdCB0aGUgbW9kaWZpZWQgaW1hZ2UgaW4gdGhlIFFFTVUgZW11bGF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGlzIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmVyaWZ5IHRoZSBjaGFuZ2VzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nIGludG8gdGhlIG1hY2hpbmUgdXNpbmcgPGZpbGVuYW1lPnJvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggbm8gcGFzc3dvcmQgYW5kIHRoZW4gdXNlIHRoZSBmb2xsb3dpbmcgc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHNjcm9sbCB0aHJvdWdoIHRoZSBjb25zb2xlJ3MgYm9vdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIGRtZXNnIHwgbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+IHN0YXRlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgd2hlbiB5b3Ugc2Nyb2xsIGRvd24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZSB3aW5kb3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIGFuZCBjb21taXQgeW91ciBjaGFuZ2VzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFdpdGhpbiB5b3VyIGVTREsgdGVybWluYWwsIGNoYW5nZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHRvCisgICAgICAgICAgICAgICAgICAgIHdoZXJlIHlvdSBtb2RpZmllZCB0aGUgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgdXNlIHRoZXNlIEdpdCBjb21tYW5kcyB0byBzdGFnZSBhbmQgY29tbWl0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reV9zZGsvd29ya3NwYWNlL3NvdXJjZXMvbGludXgteW9jdG8KICAgICAgJCBnaXQgc3RhdHVzCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAkIGdpdCBhZGQgaW5pdC9jYWxpYnJhdGUuYworICAgICAkIGdpdCBjb21taXQgLW0gImNhbGlicmF0ZTogQWRkIHByaW50ayBleGFtcGxlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4cG9ydCB0aGUgUGF0Y2hlcyBhbmQgQ3JlYXRlIGFuIEFwcGVuZCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRvIGV4cG9ydCB5b3VyIGNvbW1pdHMgYXMgcGF0Y2hlcyBhbmQgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgaW4gdGhlIHRlcm1pbmFsIHVzZWQgdG8gd29yayB3aXRoIHRoZSBleHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlIHByZXZpb3VzbHkgZXN0YWJsaXNoZWQgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBTdGVwIDMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyBkZXZ0b29sPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgdGhpcyBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBmaW5pc2ggbGludXgteW9jdG8gfi9tZXRhLW15bGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBjb21tYW5kIGZpbmlzaGVzLCB0aGUgcGF0Y2hlcyBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGFyZSBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZSBXaXRoIFlvdXIgTW9kaWZpZWQgS2VybmVsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IGJ1aWxkIGFuIGltYWdlIHRoYXQgaW5jbHVkZXMgeW91ciBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHRlcm1pbmFsIHNldCB1cCB0byBydW4gQml0QmFrZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InVzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsIj4KKyAgICAgICAgPHRpdGxlPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IHlvdSBob3cgeW91IGNhbiBwYXRjaCB0aGUKKyAgICAgICAgICAgIGtlcm5lbCB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgKGkuZS4gbm90IHVzaW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgZXh0ZW5zaWJsZSBTREsgYXMKKyAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uKS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgcHJvY2VkdXJlLCBiZSBzdXJlIHlvdSBoYXZlIHBlcmZvcm1lZAorICAgICAgICAgICAgICAgIHRoZSBzdGVwcyB0byBnZXQgcmVhZHkgZm9yIHVwZGF0aW5nIHRoZSBrZXJuZWwgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQYXRjaGluZyB0aGUga2VybmVsIGludm9sdmVzIGNoYW5naW5nIG9yIGFkZGluZyBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgdG8gYW4gZXhpc3Rpbmcga2VybmVsLCBjaGFuZ2luZyBvciBhZGRpbmcgcmVjaXBlcyB0byB0aGUga2VybmVsCisgICAgICAgICAgICB0aGF0IGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywgb3IgZXZlbgorICAgICAgICAgICAgYWx0ZXJpbmcgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGV4YW1wbGUgaW4gdGhpcyBzZWN0aW9uIGNyZWF0ZXMgYSBzaW1wbGUgcGF0Y2ggYnkgYWRkaW5nIHNvbWUKKyAgICAgICAgICAgIFFFTVUgZW11bGF0b3IgY29uc29sZSBvdXRwdXQgYXQgYm9vdCB0aW1lIHRocm91Z2gKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncworICAgICAgICAgICAgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gc291cmNlIGNvZGUgZmlsZS4KKyAgICAgICAgICAgIEFwcGx5aW5nIHRoZSBwYXRjaCBhbmQgYm9vdGluZyB0aGUgbW9kaWZpZWQgaW1hZ2UgY2F1c2VzIHRoZSBhZGRlZAorICAgICAgICAgICAgbWVzc2FnZXMgdG8gYXBwZWFyIG9uIHRoZSBlbXVsYXRvcidzIGNvbnNvbGUuCisgICAgICAgICAgICBUaGUgZXhhbXBsZSBpcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgc2V0dXAgcHJvY2VkdXJlIGZvdW5kIGluCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvbGluaz4iCisgICAgICAgICAgICBTZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbHRob3VnaCB0aGlzIGV4YW1wbGUgdXNlcyBHaXQgYW5kIHNoZWxsIGNvbW1hbmRzIHRvIGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgcGF0Y2gsIHlvdSBjb3VsZCB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgIGZvdW5kIGluIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIHVuZGVyIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gdG8gYWRkIGFuZCBtYW5hZ2Uga2VybmVsCisgICAgICAgICAgICBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjbWFuYWdpbmcta2VybmVsLXBhdGNoZXMtYW5kLWNvbmZpZy1pdGVtcy13aXRoLXlvY3RvLWtlcm5lbCc+TWFuYWdpbmcga2VybmVsIFBhdGNoZXMgYW5kIENvbmZpZyBJdGVtcyB3aXRoIHlvY3RvLWtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApCisgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlIEZpbGVzPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJpb3IgdG8gdGhpcyBzdGVwLCB5b3Ugc2hvdWxkIGhhdmUgdXNlZCBHaXQgdG8gY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29weSBvZiB0aGUgcmVwb3NpdG9yeSBmb3IgeW91ciBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIHlvdSBjcmVhdGVkIHRoZSByZXBvc2l0b3J5IGFzIGRpcmVjdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS1mb3ItdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50Jz5HZXR0aW5nIFJlYWR5IGZvciBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQ8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBlZGl0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoYW5nZSB0aGUgd29ya2luZyBkaXJlY3Rvcnk8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBsb2NhdGUgdGhlIHNvdXJjZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlIHRvIHdoZXJlIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgaXMgYmVmb3JlIG1ha2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgZWRpdHMgdG8gdGhlIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vbGludXgteW9jdG8tNC4xMi9pbml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBzb3VyY2UgZmlsZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGUgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHZvaWQgY2FsaWJyYXRlX2RlbGF5KHZvaWQpCisgICAgIHsKKyAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBqOworICAgICAgICAgc3RhdGljIGJvb2wgcHJpbnRlZDsKKyAgICAgICAgIGludCB0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKworICAgICAgICAgcHJpbnRrKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgIEhFTExPIFlPQ1RPIEtFUk5FTCAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisKKyAgICAgCWlmIChwZXJfY3B1KGNwdV9sb29wc19wZXJfamlmZnksIHRoaXNfY3B1KSkgeworICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgYW5kIENvbW1pdCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHN0YW5kYXJkIEdpdCBjb21tYW5kcyB0byBzdGFnZSBhbmQgY29tbWl0IHRoZSBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAgIHlvdSBqdXN0IG1hZGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgYWRkIGNhbGlicmF0ZS5jCisgICAgICQgZ2l0IGNvbW1pdCAtbSAiY2FsaWJyYXRlLmMgLSBBZGRlZCBzb21lIHByaW50ayBzdGF0ZW1lbnRzIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgc3RhZ2UgYW5kIGNvbW1pdCB5b3VyIGNoYW5nZXMsIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgU3lzdGVtIHdpbGwgbm90IHBpY2sgdXAgdGhlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZGF0ZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gRmlsZQorICAgICAgICAgICAgICAgICAgICB0byBQb2ludCB0byBZb3VyIFNvdXJjZSBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5aW5nIHRvIHVzZSAia2VybmVsLW1vZHVsZXMiIGFuZCB0aGUgInFlbXV4ODYiCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIGl0IG11c3QgYWxzbyBwb2ludCB0byB0aGUgdXBkYXRlZCBrZXJuZWwgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBBZGQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcgdG8geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkL2NvbmYKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZGQgdGhlIGZvbGxvd2luZyB0byB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX3BuLWxpbnV4LXlvY3RvID0gImdpdDovLy88cmVwbGFjZWFibGU+cGF0aC10bzwvcmVwbGFjZWFibGU+L2xpbnV4LXlvY3RvLTQuMTI7cHJvdG9jb2w9ZmlsZTtuYW1lPW1hY2hpbmU7YnJhbmNoPXN0YW5kYXJkL2Jhc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXQ6Ly8vPHJlcGxhY2VhYmxlPnBhdGgtdG88L3JlcGxhY2VhYmxlPi95b2N0by1rZXJuZWwtY2FjaGU7cHJvdG9jb2w9ZmlsZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgorICAgICBTUkNSRVZfbWV0YV9xZW11eDg2ID0gIiR7QVVUT1JFVn0iCisgICAgIFNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPSAiJHtBVVRPUkVWfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcmVwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGgtdG88L3JlcGxhY2VhYmxlPiB3aXRoIHRoZSBwYXRobmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgeW91IG11c3QgYmUgc3VyZSB0byBzcGVjaWZ5IHRoZSBjb3JyZWN0IGJyYW5jaAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1hY2hpbmUgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgYnJhbmNoIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGFuZCB0aGUgbWFjaGluZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaXRoIHRoZSBzb3VyY2UgbW9kaWZpZWQsIHlvdXIgY2hhbmdlcyBzdGFnZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCwgYW5kIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgcG9pbnRpbmcgdG8gdGhlIGtlcm5lbCBmaWxlcywgeW91IGNhbiBub3cgdXNlIEJpdEJha2UgdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb290IHRoZSBpbWFnZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBCb290IHRoZSBtb2RpZmllZCBpbWFnZSBpbiB0aGUgUUVNVSBlbXVsYXRvcgorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGlzIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gcHJvbXB0ZWQgdG8gbG9naW4gdG8gdGhlIFFFTVUgY29uc29sZSwgdXNlICJyb290IgorICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIHBhc3N3b3JkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9vayBmb3IgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFzIFFFTVUgYm9vdGVkLCB5b3UgbWlnaHQgaGF2ZSBzZWVuIHlvdXIgY2hhbmdlcyByYXBpZGx5CisgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBieS4KKyAgICAgICAgICAgICAgICAgICAgSWYgbm90LCB1c2UgdGhlc2UgY29tbWFuZHMgdG8gc2VlIHlvdXIgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIGRtZXNnIHwgbGVzcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgc2VlIHRoZSByZXN1bHRzIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+IHN0YXRlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgb3V0cHV0IHdoZW4geW91IHNjcm9sbCBkb3duIHRoZQorICAgICAgICAgICAgICAgICAgICBjb25zb2xlIHdpbmRvdy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2VuZXJhdGUgdGhlIFBhdGNoIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIHN1cmUgdGhhdCB5b3VyIHBhdGNoIHdvcmtzIGNvcnJlY3RseSwgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiBnZW5lcmF0ZSBhIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9saW51eC15b2N0by00LjEyL2luaXQKKyAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC0xCisgICAgIDAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1vdmUgdGhlIFBhdGNoIEZpbGUgdG8gWW91ciBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3Igc3Vic2VxdWVudCBidWlsZHMgdG8gcGljayB1cCBwYXRjaGVzLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBtb3ZlIHRoZSBwYXRjaCBmaWxlIHlvdSBjcmVhdGVkIGluIHRoZSBwcmV2aW91cworICAgICAgICAgICAgICAgICAgICBzdGVwIHRvIHlvdXIgbGF5ZXIgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgbGF5ZXIgY3JlYXRlZCBlYXJsaWVyIGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBob21lIGRpcmVjdG9yeSBhcyA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIGxheWVyIHdhcyBjcmVhdGVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tY3JlYXRlPC9maWxlbmFtZT4gc2NyaXB0LCBubyBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeSB3YXMgY3JlYXRlZCB0byBzdXBwb3J0IHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBtb3ZpbmcgdGhlIHBhdGNoIGZpbGUsIHlvdSBuZWVkIHRvIGFkZCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSB0byB5b3VyIGxheWVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L21ldGEtbXlsYXllcgorICAgICAkIG1rZGlyIHJlY2lwZXMta2VybmVsCisgICAgICQgbWtkaXIgcmVjaXBlcy1rZXJuZWwvbGludXgKKyAgICAgJCBta2RpciByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY3JlYXRlZCB0aGlzIGhpZXJhcmNoeSBpbiB5b3VyIGxheWVyLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIG1vdmUgdGhlIHBhdGNoIGZpbGUgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbXYgfi9saW51eC15b2N0by00LjEyL2luaXQvMDAwMS1jYWxpYnJhdGUuYy1BZGRlZC1zb21lLXByaW50ay1zdGF0ZW1lbnRzLnBhdGNoIH4vbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBBcHBlbmQgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCB5b3UgbmVlZCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0IHN0YXRlbWVudHMgdGhhdCBhbGxvdyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB0byBmaW5kIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGFwcGVuZCBmaWxlIG5lZWRzIHRvIGJlIGluIHlvdXIgbGF5ZXIncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIGl0IG11c3QgYmUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBhbmQgaGF2ZQorICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKworICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZW5hYmxlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGZpbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhdGNoIGZpbGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGFwcGVuZCBmaWxlcyBhbmQgcGF0Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctdGhlLWFwcGVuZC1maWxlJz5DcmVhdGluZyB0aGUgQXBwZW5kIEZpbGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2FwcGx5aW5nLXBhdGNoZXMnPkFwcGx5aW5nIFBhdGNoZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllciI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gYnVpbGQgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbiBhbmQgc2VlIHRoZSBlZmZlY3RzIG9mIHlvdXIgcGF0Y2gsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVzc2VudGlhbGx5IGVsaW1pbmF0ZSB0aGUgdGVtcG9yYXJ5IHNvdXJjZSBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWQgaW4gPGZpbGVuYW1lPnBva3kvYnVpbGQvdG1wL3dvcmsvLi4uPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXNpZHVhbCBlZmZlY3RzIG9mIHRoZSBidWlsZCBieSBlbnRlcmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlIC1jIGNsZWFuYWxsIHlvY3RvLWxpbnV4CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwgLWMgY2xlYW5hbGwKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmluZy10aGUta2VybmVsJz4KKyAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGNvbnNpc3RzIG9mIG1ha2luZyBzdXJlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGhhcyBhbGwgdGhlIHJpZ2h0IGluZm9ybWF0aW9uCisgICAgICAgICAgICBpbiBpdCBmb3IgdGhlIGltYWdlIHlvdSBhcmUgYnVpbGRpbmcuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGFuZAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgdG8gbWFrZSBzdXJlIHlvdXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBqdXN0IGhvdyB5b3UgbmVlZCBpdC4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzYXZlIGtub3duIGNvbmZpZ3VyYXRpb25zIGluIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gdXNlCisgICAgICAgICAgICBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgY3JlYXRlIGFuZCB1c2UgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIGFuZCBob3cgdG8gaW50ZXJhY3RpdmVseQorICAgICAgICAgICAgbW9kaWZ5IHlvdXIgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgIGxlYW5lc3Qga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBwb3NzaWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1tZW51Y29uZmlnJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyZuYnNwOyZuYnNwOzxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZWFzaWVzdCB3YXkgdG8gZGVmaW5lIGtlcm5lbCBjb25maWd1cmF0aW9ucyBpcyB0byBzZXQKKyAgICAgICAgICAgICAgICB0aGVtIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbC4KKyAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvdmlkZXMgYW4gaW50ZXJhY3RpdmUgbWV0aG9kIHdpdGggd2hpY2gKKyAgICAgICAgICAgICAgICB0byBzZXQga2VybmVsIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4sIHNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudWNvbmZpZyc+PC91bGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBhYm92ZSBHaXQgY29tbWFuZCB0byByZXBvcnQgbW9kaWZpZWQsCi0gICAgICAgICAgICAgICAgcmVtb3ZlZCwgb3IgYWRkZWQgZmlsZXMuCi0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBjb21taXQgdGhvc2UgY2hhbmdlcyB0byB0aGUgdHJlZSByZWdhcmRsZXNzIG9mCi0gICAgICAgICAgICAgICAgd2hldGhlciB0aGV5IHdpbGwgYmUgc2F2ZWQsIGV4cG9ydGVkLCBvciB1c2VkLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGNvbW1pdCB0aGUgY2hhbmdlcywgeW91IG5lZWQgdG8gcmVidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBmb3JjZSBhIHBpY2t1cCBhbmQgY29tbWl0IG9mIGFsbCBzdWNoIHBlbmRpbmcgY2hhbmdlcywKLSAgICAgICAgICAgICAgICBlbnRlciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGluIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHlvdSBtdXN0IGxhdW5jaCBpdCB1c2luZworICAgICAgICAgICAgICAgIEJpdEJha2UuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGVudmlyb25tZW50IG11c3QgYmUgc2V0IHVwIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHNjcmlwdCBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gYmUgc3VyZSBvZiB0aGUgc3RhdGUgb2YgeW91ciBidWlsZCdzCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBpbml0aWFsaXplIHRoZSBCaXRCYWtlIGVudmlyb25tZW50LAorICAgICAgICAgICAgICAgIHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mta2VybmVsX2NvbmZpZ21lJz48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2ssIGFuZCBsYXVuY2ggPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGVzZSBjb21tYW5kcyBhc3N1bWUgdGhlIFNvdXJjZSBEaXJlY3RvcnkncyB0b3AtbGV2ZWwgZm9sZGVyCisgICAgICAgICAgICAgICAgaXMgPGZpbGVuYW1lPn4vcG9reTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgYWRkIC4KLSAgICAgJCBnaXQgY29tbWl0IC1zIC1hIC1tICJnZXR0aW5nIHJpZCBvZiAtZGlydHkiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBOZXh0LCByZWJ1aWxkIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz4KLSAgICAgICAgICAgIDx0aXRsZT5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIG1hbmlwdWxhdGUgdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgIHVzZWQgdG8gYnVpbGQgYSBsaW51eC15b2N0byByZWNpcGUgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCiAgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzdGFydHMgdGhlIExpbnV4IGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2wsCi0gICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHlvdSB0byBwcmVwYXJlIGEgbmV3Ci0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZvciB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgV2hlbiB5b3UgZXhpdCB0aGUgdG9vbCwgYmUgc3VyZSB0byBzYXZlIHlvdXIgY2hhbmdlcwotICAgICAgICAgICAgICAgIGF0IHRoZSBwcm9tcHQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGlzCi0gICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgd2hpY2ggZXhwYW5kcyB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT48ZmlsZW5hbWU+L2xpbnV4LTwvZmlsZW5hbWU+PGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59LSR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfS0VSTkVMX1RZUEUnPjxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS1idWlsZDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBlbnRpcmUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBjb21lcyB1cCwgaXRzIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGFsbG93cyB5b3UgdG8gaW50ZXJhY3RpdmVseSBleGFtaW5lIGFuZCBjb25maWd1cmUKKyAgICAgICAgICAgICAgICBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHlvdXIgY2hhbmdlcywgc2ltcGx5IGV4aXQgdGhlIHRvb2wgYW5kIHNhdmUgeW91cgorICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gY3JlYXRlIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXRlcm1pbmUgd2hhdCBhIHZhcmlhYmxlIGV4cGFuZHMgdG8gYnkgbG9va2luZwotICAgICAgICAgICAgICAgICAgICBhdCB0aGUgb3V0cHV0IG9mIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1lIHZpcnR1YWwva2VybmVsCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgU2VhcmNoIHRoZSBvdXRwdXQgZm9yIHRoZSB2YXJpYWJsZSBpbiB3aGljaCB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgIGludGVyZXN0ZWQgdG8gc2VlIGV4YWN0bHkgaG93IGl0IGlzIGV4cGFuZGVkIGFuZCB1c2VkLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZW50aXJlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBhcyB0aGUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZXMsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvbGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYW4taW4tdHJlZS1kZWZjb25maWctZmlsZSc+VXNpbmcgYW4gSW4tVHJlZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gRmlsZTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1kZWZjb25maWctZmlsZSc+Q3JlYXRpbmcgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gRmlsZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBiZXR0ZXIgbWV0aG9kIGlzIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgQ29uc2lkZXIgYW4gZXhhbXBsZSB0aGF0IGNvbmZpZ3VyZXMgdGhlICJDT05GSUdfU01QIiBzZXR0aW5nCisgICAgICAgICAgICAgICAgZm9yIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcmVjb2duaXplcyB0aGlzIGtlcm5lbCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiB0aHJvdWdoIE1ldGFkYXRhIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfVkVSU0lPTic+PGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT5fbGludXgteW9jdG8gPz0gIjEyLjQlIjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgT25jZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGxhdW5jaGVzLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIHNlbGVjdGlvbnMgdG8gZmluZCB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluIHdoaWNoIHlvdSBhcmUgaW50ZXJlc3RlZC4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB5b3UgZGVzZWxlY3QgIkNPTkZJR19TTVAiIGJ5IGNsZWFyaW5nIHRoZQorICAgICAgICAgICAgICAgICJTeW1tZXRyaWMgTXVsdGktUHJvY2Vzc2luZyBTdXBwb3J0IiBvcHRpb24uCisgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGludGVyZmFjZSwgeW91IGNhbiBmaW5kIHRoZSBvcHRpb24gdW5kZXIKKyAgICAgICAgICAgICAgICAiUHJvY2Vzc29yIFR5cGUgYW5kIEZlYXR1cmVzIi4KKyAgICAgICAgICAgICAgICBUbyBkZXNlbGVjdCAiQ09ORklHX1NNUCIsIHVzZSB0aGUgYXJyb3cga2V5cyB0bworICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAiU3ltbWV0cmljIE11bHRpLVByb2Nlc3NpbmcgU3VwcG9ydCIgYW5kIGVudGVyICJOIgorICAgICAgICAgICAgICAgIHRvIGNsZWFyIHRoZSBhc3Rlcmlzay4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBhcmUgZmluaXNoZWQsIGV4aXQgb3V0IGFuZCBzYXZlIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNhdmluZyB0aGUgc2VsZWN0aW9ucyB1cGRhdGVzIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHRoZSBrZXJuZWwgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYW5kIGV4YW1pbmUgdGhpcyBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3dvcmsvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIGFjdHVhbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgYXJlYSB3aGVyZSB0aGUgc3BlY2lmaWMga2VybmVsIGlzIGJ1aWx0LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2VyZSBidWlsZGluZyBhIExpbnV4IFlvY3RvIGtlcm5lbCBiYXNlZAorICAgICAgICAgICAgICAgIG9uIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCBhbmQgeW91CisgICAgICAgICAgICAgICAgd2VyZSBidWlsZGluZyBhIFFFTVUgaW1hZ2UgdGFyZ2V0ZWQgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4NjwvZmlsZW5hbWU+IGFyY2hpdGVjdHVyZSwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHdvdWxkIGJlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vNC4xMi4xMitnaXRBVVRPSU5DK2VkYTRkMTguLi4KKyAgICAgLi4uOTY3LXIwL2xpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQvLmNvbmZpZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZGlyZWN0b3J5IGlzIGFydGlmaWNpYWxseSBzcGxpdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgbWFueSBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYWN0dWFsIGZpbGVuYW1lIGFyZSBvbWl0dGVkCisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgQWxzbywgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgeW91IGFyZSB1c2luZywgdGhlIGV4YWN0CisgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lIG1pZ2h0IGRpZmZlci4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgY2FuIHNlZSB0aGUKKyAgICAgICAgICAgICAgICBrZXJuZWwgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZW50cnkgc2hvd3MgdGhhdCBzeW1tZXRyaWMKKyAgICAgICAgICAgICAgICBtdWx0aS1wcm9jZXNzb3Igc3VwcG9ydCBpcyBub3Qgc2V0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBDT05GSUdfU01QIGlzIG5vdCBzZXQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgZ29vZCBtZXRob2QgdG8gaXNvbGF0ZSBjaGFuZ2VkIGNvbmZpZ3VyYXRpb25zIGlzIHRvIHVzZSBhCisgICAgICAgICAgICAgICAgY29tYmluYXRpb24gb2YgdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCBhbmQKKyAgICAgICAgICAgICAgICBzaW1wbGUgc2hlbGwgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgQmVmb3JlIGNoYW5naW5nIGNvbmZpZ3VyYXRpb25zIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LCBjb3B5IHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gYW5kIHJlbmFtZSBpdCB0byBzb21ldGhpbmcgZWxzZSwKKyAgICAgICAgICAgICAgICB1c2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0byBtYWtlIGFzIG1hbnkgY2hhbmdlcyBhcworICAgICAgICAgICAgICAgIHlvdSB3YW50IGFuZCBzYXZlIHRoZW0sIHRoZW4gY29tcGFyZSB0aGUgcmVuYW1lZCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBhZ2FpbnN0IHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHJlc3VsdGluZyBkaWZmZXJlbmNlcyBhcyB5b3VyIGJhc2UgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgdG8gcGVybWFuZW50bHkgc2F2ZSBpbiB5b3VyIGtlcm5lbAorICAgICAgICAgICAgICAgIGxheWVyLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIGRvIG5vdCBqdXN0IHJlbmFtZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBuZWVkcyBhbiBleGlzdGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnJvbSB3aGljaCB0byB3b3JrLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1hLWRlZmNvbmZpZy1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhJm5ic3A7Jm5ic3A7PGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGlzIHNpbXBseSBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiByZW5hbWVkIHRvICJkZWZjb25maWciLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byByZXRhaW4gYSBrbm93biBzZXQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb25zIGZyb20gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZHJhdyB0byBjcmVhdGUgdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBPdXQtb2YtdGhlLWJveCwgdGhlIFlvY3RvIFByb2plY3QgbmV2ZXIgc2hpcHMgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdXNlZCB0byBjb25maWd1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiwgc3RhcnQgd2l0aCBhCisgICAgICAgICAgICAgICAgY29tcGxldGUsIHdvcmtpbmcgTGludXgga2VybmVsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIENvcHkgdGhhdCBmaWxlIHRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB5b3VyIGxheWVyJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIGFuZCByZW5hbWUKKyAgICAgICAgICAgICAgICB0aGUgY29waWVkIGZpbGUgdG8gImRlZmNvbmZpZyIgKGUuZy4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZGVmY29uZmlnPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIFRoZW4sIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIHRoZSBsaW51eC15b2N0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIgbGF5ZXI6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9kZWZjb25maWciCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0ZWxscyB0aGUgYnVpbGQgc3lzdGVtIGhvdyB0byBzZWFyY2ggZm9yIHRoZSBmaWxlLCB3aGlsZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGV4dGVuZHMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSAoc2VhcmNoIGRpcmVjdG9yaWVzKSB0byBpbmNsdWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BOfTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB5b3UgY3JlYXRlZCB0byBob2xkIHRoZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBjb25maWd1cmF0aW9ucyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBiZWZvcmUgYXBwbHlpbmcgYW55CisgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgY29uZmlndXJhdGlvbiBmcmFnbWVudHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBrZXJuZWwgY29uZmlndXJhdGlvbiBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbiB0aGUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIGFueSBjb25maWd1cmF0aW9uIGZyYWdtZW50cyB5b3UgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gcmVhbGl6ZSB0aGF0IGlmIHlvdSBoYXZlIGFueSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cywgdGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZXNlIG9uIHRvcCBvZiBhbmQKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYXBwbHlpbmcgdGhlIGV4aXN0aW5nIGRlZmNvbmZpZyBmaWxlIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUga2VybmVsLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbms9J2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGFyZSBzaW1wbHkga2VybmVsIG9wdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgIGFwcGVhciBpbiBhIGZpbGUgcGxhY2VkIHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgY2FuIGZpbmQgYW5kIGFwcGx5IHRoZW0uCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGFmdGVyCisgICAgICAgICAgICAgICAgYXBwbHlpbmcgY29uZmlndXJhdGlvbnMgZnJvbSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGEgY29tYmluYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgYW5kIHRoZW4gYW55IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHlvdSBwcm92aWRlLgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyBmcmFnbWVudHMgb24gdG9wIG9mIGFuZAorICAgICAgICAgICAgICAgIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzdGluZyBkZWZjb25maWcgZmlsZSBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU3ludGFjdGljYWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gc3RhdGVtZW50IGlzIGlkZW50aWNhbCB0bworICAgICAgICAgICAgICAgIHdoYXQgd291bGQgYXBwZWFyIGluIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBsb2NhdGVkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1tZW51Y29uZmlnJz5Vc2luZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEl0IGlzIHNpbXBsZSB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIE9uZSBtZXRob2QgaXMgdG8gdXNlIHNoZWxsIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpc3N1aW5nIHRoZSBmb2xsb3dpbmcgZnJvbSB0aGUgc2hlbGwgY3JlYXRlcyBhCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15X3NtcC5jZmc8L2ZpbGVuYW1lPiB0aGF0IGVuYWJsZXMgbXVsdGktcHJvY2Vzc29yCisgICAgICAgICAgICAgICAgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZWNobyAiQ09ORklHX1NNUD15IiA+PiBteV9zbXAuY2ZnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBbGwgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBtdXN0IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBleHRlbnNpb24gaW4gb3JkZXIgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJlY29nbml6ZSB0aGVtIGFzIGEKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFub3RoZXIgbWV0aG9kIGlzIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gY29uZmlndXJhdGlvbiBmaWxlczogb25lIHByZXZpb3VzbHkKICAgICAgICAgICAgICAgICBjcmVhdGVkIGFuZCBzYXZlZCwgYW5kIG9uZSBmcmVzaGx5IGNyZWF0ZWQgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sLgpAQCAtNTY3LDQwICsxNzMyLDQ3IEBACiAgICAgICAgICAgICAgICAgVG8gY3JlYXRlIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudCB1c2luZyB0aGlzIG1ldGhvZCwgZm9sbG93CiAgICAgICAgICAgICAgICAgdGhlc2Ugc3RlcHM6CiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29tcGxldGUgYSBidWlsZCBhdCBsZWFzdCB0aHJvdWdoIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXBsZXRlIGEgQnVpbGQgVGhyb3VnaCBLZXJuZWwgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgYSBidWlsZCBhdCBsZWFzdCB0aHJvdWdoIHRoZSBrZXJuZWwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gdGFzayBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgZW5zdXJlcyB0aGF0IHlvdSB3aWxsIGJlIGNyZWF0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RlcCBlbnN1cmVzIHRoYXQgeW91IGNyZWF0ZSBhCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnJvbSBhIGtub3duIHN0YXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBzaXR1YXRpb25zIGV4aXN0IHdoZXJlIHlvdXIgYnVpbGQgc3RhdGUgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZSB1bmtub3duLCBpdCBpcyBiZXN0IHRvIHJ1biB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgcHJpb3IgdG8gc3RhcnRpbmcgdXAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWUgdW5rbm93biwgaXQgaXMgYmVzdCB0byBydW4gdGhpcyB0YXNrIHByaW9yCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzdGFydGluZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5kaWZmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBDb25maWd1cmF0aW9uIEZyYWdtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5kaWZmY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcHJlcGFyZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIGZpbGUgPGZpbGVuYW1lPmZyYWdtZW50LmNmZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHBsYWNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHBsYWNlZCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4gZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgZGlmZmNvbmZpZwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kaWZmY29uZmlnPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGEgZmlsZSB0aGF0IGlzIGEKLSAgICAgICAgICAgICAgICBsaXN0IG9mIExpbnV4IGtlcm5lbCA8ZmlsZW5hbWU+Q09ORklHXzwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGlmZmNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhIGZpbGUKKyAgICAgICAgICAgICAgICB0aGF0IGlzIGEgbGlzdCBvZiBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzLgogICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgb3V0cHV0IGFzIGEKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgb3V0cHV0CisgICAgICAgICAgICAgICAgYXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBmb3IgYSBCU1AuCkBAIC02MTAsMzQgKzE3ODIsMTI2IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBrZXJuZWwgdG9vbHMgYWxzbyBwcm92aWRlIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSB0b29scyB0byBwcm9kdWNlIHdhcm5pbmdzIGZvciB3aGVuIGEKKyAgICAgICAgICAgICAgICBXaGVyZSBkbyB5b3UgcHV0IHlvdXIgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcz8KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHBsYWNlIHRoZXNlIGZpbGVzIGluIGFuIGFyZWEgcG9pbnRlZCB0byBieQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcyBkaXJlY3RlZCBieSB5b3VyIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBsb2NhdGVkIGluIHlvdXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcGlja3MgdXAgdGhlIGNvbmZpZ3VyYXRpb24gYW5kCisgICAgICAgICAgICAgICAgYWRkcyBpdCB0byB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGFkIGEgc2V0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucworICAgICAgICAgICAgICAgIGluIGEgZmlsZSBjYWxsZWQgPGZpbGVuYW1lPm15Y29uZmlnLmNmZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIElmIHlvdSBwdXQgdGhhdCBmaWxlIGluc2lkZSBhIGRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+IHRoYXQgcmVzaWRlcyBpbiB0aGUgc2FtZQorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhcyB0aGUga2VybmVsJ3MgYXBwZW5kIGZpbGUgd2l0aGluIHlvdXIgbGF5ZXIKKyAgICAgICAgICAgICAgICBhbmQgdGhlbiBhZGQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIHRvIHRoZSBrZXJuZWwncyBhcHBlbmQKKyAgICAgICAgICAgICAgICBmaWxlLCB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBwaWNrZWQgdXAgYW5kIGFwcGxpZWQKKyAgICAgICAgICAgICAgICB3aGVuIHRoZSBrZXJuZWwgaXMgYnVpbHQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9teWNvbmZpZy5jZmciCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgeW91IGNhbiBncm91cCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgaW50byBtdWx0aXBsZSBmaWxlcyBhbmQgbmFtZSB0aGVtIGFsbCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgZ3JvdXAgc2VwYXJhdGUgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgICAgICBzcGVjaWZpY2FsbHkgZm9yIEV0aGVybmV0IGFuZCBncmFwaGljcyBpbnRvIHRoZWlyIG93biBmaWxlcworICAgICAgICAgICAgICAgIGFuZCBhZGQgdGhvc2UgYnkgdXNpbmcgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIGxpa2UgdGhlIGZvbGxvd2luZyBpbiB5b3VyIGFwcGVuZCBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSArPSAiZmlsZTovL215Y29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8vZXRoLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8vZ2Z4LmNmZyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndmFsaWRhdGluZy1jb25maWd1cmF0aW9uJz4KKyAgICAgICAgICAgIDx0aXRsZT5WYWxpZGF0aW5nIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mta2VybmVsX2NvbmZpZ2NoZWNrJz48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgdG8gcHJvdmlkZSBjb25maWd1cmF0aW9uIHZhbGlkYXRpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyB0YXNrIHByb2R1Y2VzIHdhcm5pbmdzIGZvciB3aGVuIGEKICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGZpbmFsCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIG9yIHdoZW4geW91IG92ZXJyaWRlIGEKICAgICAgICAgICAgICAgICBwb2xpY3kgY29uZmlndXJhdGlvbiBpbiBhIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdpdGggc29tZSBzYW1wbGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgdGhhdCBydW5zIHRoZXNlIHRvb2xzOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBydW4gdGhpcyB0YXNrLCB5b3UgbXVzdCBoYXZlIGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzazoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBrZXJuZWxfY29uZmlnY2hlY2sgLWYKKyAgICAgTG9hZGluZyBjYWNoZTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDAKKyAgICAgTG9hZGVkIDEyNzUgZW50cmllcyBmcm9tIGRlcGVuZGVuY3kgY2FjaGUuCisgICAgIE5PVEU6IFJlc29sdmluZyBhbnkgbWlzc2luZyB0YXNrIHF1ZXVlIGRlcGVuZGVuY2llcwogCi0gICAgIC4uLgorICAgICBCdWlsZCBDb25maWd1cmF0aW9uOgorICAgICAgICAgLgorICAgICAgICAgLgorICAgICAgICAgLgogCi0gICAgIE5PVEU6IHZhbGlkYXRpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24KLSAgICAgVGhpcyBCU1Agc2V0cyAzIGludmFsaWQvb2Jzb2xldGUga2VybmVsIG9wdGlvbnMuCi0gICAgIFRoZXNlIGNvbmZpZyBvcHRpb25zIGFyZSBub3Qgb2ZmZXJlZCBhbnl3aGVyZSB3aXRoaW4gdGhpcyBrZXJuZWwuCi0gICAgIFRoZSBmdWxsIGxpc3QgY2FuIGJlIGZvdW5kIGluIHlvdXIga2VybmVsIHNyYyBkaXIgYXQ6Ci0gICAgIG1ldGEvY2ZnL3N0YW5kYXJkL215YnNwL2ludmFsaWQuY2ZnCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgV0FSTklORzogbGludXgteW9jdG8tNC4xMi4xMitnaXRBVVRPSU5DK2VkYTRkMThjZTRfMTZkZTAxNDk2Ny1yMCBkb19rZXJuZWxfY29uZmlnY2hlY2s6CisgICAgICAgICBba2VybmVsIGNvbmZpZ106IHNwZWNpZmllZCB2YWx1ZXMgZGlkIG5vdCBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCdzIGZpbmFsIGNvbmZpZ3VyYXRpb246CiAKLSAgICAgVGhpcyBCU1Agc2V0cyAyMSBrZXJuZWwgb3B0aW9ucyB0aGF0IGFyZSBwb3NzaWJseSBub24taGFyZHdhcmUgcmVsYXRlZC4KLSAgICAgVGhlIGZ1bGwgbGlzdCBjYW4gYmUgZm91bmQgaW4geW91ciBrZXJuZWwgc3JjIGRpciBhdDoKLSAgICAgbWV0YS9jZmcvc3RhbmRhcmQvbXlic3Avc3BlY2lmaWVkX25vbl9oZHcuY2ZnCisgICAgIC0tLS0tLS0tLS0gQ09ORklHX1g4Nl9UU0MgLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQ29uZmlnOiBDT05GSUdfWDg2X1RTQworICAgICBGcm9tOiAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvYnNwL2NvbW1vbi1wYy9jb21tb24tcGMtY3B1LmNmZworICAgICBSZXF1ZXN0ZWQgdmFsdWU6ICBDT05GSUdfWDg2X1RTQz15CisgICAgIEFjdHVhbCB2YWx1ZToKIAotICAgICBXQVJOSU5HOiBUaGVyZSB3ZXJlIDIgaGFyZHdhcmUgb3B0aW9ucyByZXF1ZXN0ZWQgdGhhdCBkbyBub3QKLSAgICAgICAgICAgICAgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgdmFsdWUgcHJlc2VudCBpbiB0aGUgZmluYWwgIi5jb25maWciIGZpbGUuCi0gICAgICAgICAgICAgIFRoaXMgcHJvYmFibHkgbWVhbnMgeW91IGFyZSBub3QgZ2V0dGluZyB0aGUgY29uZmlnIHlvdSB3YW50ZWQuCi0gICAgICAgICAgICAgIFRoZSBmdWxsIGxpc3QgY2FuIGJlIGZvdW5kIGluIHlvdXIga2VybmVsIHNyYyBkaXIgYXQ6Ci0gICAgICAgICAgICAgIG1ldGEvY2ZnL3N0YW5kYXJkL215YnNwL21pc21hdGNoLmNmZworCisgICAgIC0tLS0tLS0tLS0gQ09ORklHX1g4Nl9CSUdTTVAgLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQ29uZmlnOiBDT05GSUdfWDg2X0JJR1NNUAorICAgICBGcm9tOiAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvY2ZnL3NtcC5jZmcKKyAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2RlZmNvbmZpZworICAgICBSZXF1ZXN0ZWQgdmFsdWU6ICAjIENPTkZJR19YODZfQklHU01QIGlzIG5vdCBzZXQKKyAgICAgQWN0dWFsIHZhbHVlOgorCisKKyAgICAgLS0tLS0tLS0tLSBDT05GSUdfTlJfQ1BVUyAtLS0tLS0tLS0tLS0tLS0tLQorICAgICBDb25maWc6IENPTkZJR19OUl9DUFVTCisgICAgIEZyb206IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9jZmcvc21wLmNmZworICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvYnNwL2NvbW1vbi1wYy9jb21tb24tcGMuY2ZnCisgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9kZWZjb25maWcKKyAgICAgUmVxdWVzdGVkIHZhbHVlOiAgQ09ORklHX05SX0NQVVM9OAorICAgICBBY3R1YWwgdmFsdWU6ICAgICBDT05GSUdfTlJfQ1BVUz0xCisKKworICAgICAtLS0tLS0tLS0tIENPTkZJR19TQ0hFRF9TTVQgLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQ29uZmlnOiBDT05GSUdfU0NIRURfU01UCisgICAgIEZyb206IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9jZmcvc21wLmNmZworICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvZGVmY29uZmlnCisgICAgIFJlcXVlc3RlZCB2YWx1ZTogIENPTkZJR19TQ0hFRF9TTVQ9eQorICAgICBBY3R1YWwgdmFsdWU6CisKKworCisgICAgIE5PVEU6IFRhc2tzIFN1bW1hcnk6IEF0dGVtcHRlZCAyODggdGFza3Mgb2Ygd2hpY2ggMjg1IGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorCisgICAgIFN1bW1hcnk6IFRoZXJlIHdlcmUgMyBXQVJOSU5HIG1lc3NhZ2VzIHNob3duLgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIG91dHB1dCBleGFtcGxlIGhhcyBhcnRpZmljaWFsIGxpbmUgYnJlYWtzCisgICAgICAgICAgICAgICAgICAgIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjQ2LDExMSArMTkxMCwyMDggQEAKICAgICAgICAgICAgICAgICBpdGVtcy4KICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIGxvZ3MgdG8gYWRqdXN0IHlvdXIKICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGVuIHJlcGVhdCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IGNvbW1hbmRzIHVudGlsCi0gICAgICAgICAgICAgICAgdGhleSBwcm9kdWNlIG5vIHdhcm5pbmdzLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1rZXJuZWxfY29uZmlnbWUnPjxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWtlcm5lbF9jb25maWdjaGVjayc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrcyB1bnRpbCB0aGV5IHByb2R1Y2Ugbm8gd2FybmluZ3MuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdtb2RpZnlpbmctc291cmNlLWNvZGUnPgotICAgICAgICAgICAgPHRpdGxlPk1vZGlmeWluZyBTb3VyY2UgQ29kZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZXhwZXJpbWVudCB3aXRoIHNvdXJjZSBjb2RlIGNoYW5nZXMgYW5kIGNyZWF0ZSBhCi0gICAgICAgICAgICAgICAgc2ltcGxlIHBhdGNoIHdpdGhvdXQgbGVhdmluZyB0aGUgQml0QmFrZSBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBUbyBnZXQgc3RhcnRlZCwgYmUgc3VyZSB0byBjb21wbGV0ZSBhIGJ1aWxkIGF0Ci0gICAgICAgICAgICAgICAgbGVhc3QgdGhyb3VnaCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gdGFzazoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBrZXJuZWxfY29uZmlnbWUgLWYKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGFraW5nIHRoaXMgc3RlcCBlbnN1cmVzIHlvdSBoYXZlIHRoZSBzb3VyY2VzIHByZXBhcmVkCi0gICAgICAgICAgICAgICAgYW5kIHRoZSBjb25maWd1cmF0aW9uIGNvbXBsZXRlZC4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZXMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZS88L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHdoaWNoIGlzIGEgc3ltbGluawotICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3NvdXJjZTwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNvdXJjZS88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZXhwYW5kcyB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT48ZmlsZW5hbWU+L2xpbnV4LTwvZmlsZW5hbWU+PGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59LSR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfS0VSTkVMX1RZUEUnPjxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS1idWlsZC9zb3VyY2U8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZS88L2ZpbGVuYW1lPiBzeW1saW5rIGlzIGFsc28ga25vd24gYXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0tFUk5FTF9ESVInPjxmaWxlbmFtZT5TVEFHSU5HX0tFUk5FTF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBlZGl0IHRoZSBzb3VyY2VzIGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIgTGludXggc291cmNlCi0gICAgICAgICAgICAgICAgdHJlZS4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCBrZWVwIGluIG1pbmQgdGhhdCB5b3Ugd2lsbCBsb3NlIGNoYW5nZXMgaWYgeW91Ci0gICAgICAgICAgICAgICAgdHJpZ2dlciB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGZvciB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYXZvaWQgdHJpZ2dlcmluZyB0aGlzIHRhc2sgYnkgbm90IHVzaW5nIEJpdEJha2UgdG8KLSAgICAgICAgICAgICAgICBydW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuYWxsJz48ZmlsZW5hbWU+Y2xlYW5hbGw8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbnNzdGF0ZSc+PGZpbGVuYW1lPmNsZWFuc3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICBvciBmb3JjZWQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICBBbHNvLCBkbyBub3QgbW9kaWZ5IHRoZSByZWNpcGUgaXRzZWxmIHdoaWxlIHdvcmtpbmcKLSAgICAgICAgICAgICAgICB3aXRoIHRlbXBvcmFyeSBjaGFuZ2VzIG9yIEJpdEJha2UgbWlnaHQgcnVuIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mZXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gdGhlIHJlY2lwZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gdGVzdCB5b3VyIHRlbXBvcmFyeSBjaGFuZ2VzLCBpbnN0cnVjdCBCaXRCYWtlIHRvIHJ1biB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29tcGlsZTwvZmlsZW5hbWU+IGFnYWluLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvcHRpb24gZm9yY2VzIHRoZSBjb21tYW5kIHRvIHJ1bgotICAgICAgICAgICAgICAgIGV2ZW4gdGhvdWdoIEJpdEJha2UgbWlnaHQgdGhpbmsgaXQgaGFzIGFscmVhZHkgZG9uZSBzbzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBjb21waWxlIC1mCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIElmIHRoZSBjb21waWxlIGZhaWxzLCB5b3UgY2FuIHVwZGF0ZSB0aGUgc291cmNlcyBhbmQgcmVwZWF0Ci0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb21waWxlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgT25jZSBjb21waWxhdGlvbiBpcyBzdWNjZXNzZnVsLCB5b3UgY2FuIGluc3BlY3QgYW5kIHRlc3QKLSAgICAgICAgICAgICAgICB0aGUgcmVzdWx0aW5nIGJ1aWxkIChpLmUuIGtlcm5lbCwgbW9kdWxlcywgYW5kIHNvIGZvcnRoKSBmcm9tCi0gICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBidWlsZCBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAke1dPUktESVJ9L2xpbnV4LSR7UEFDS0FHRV9BUkNIfS0ke0xJTlVYX0tFUk5FTF9UWVBFfS1idWlsZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29tbWFuZCB0byBwbGFjZSB0aGUga2VybmVsIGltYWdlIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+IGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0JJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGRlcGxveQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBbmQsIG9mIGNvdXJzZSwgeW91IGNhbiBwZXJmb3JtIHRoZSByZW1haW5pbmcgaW5zdGFsbGF0aW9uIGFuZAotICAgICAgICAgICAgICAgIHBhY2thZ2luZyBzdGVwcyBieSBpc3N1aW5nOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLQkkIGJpdGJha2UgbGludXgteW9jdG8KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciByYXBpZCBpdGVyYXRpdmUgZGV2ZWxvcG1lbnQsIHRoZSBlZGl0LWNvbXBpbGUtcmVwZWF0IGxvb3AKLSAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uIGlzIHByZWZlcmFibGUgdG8gcmVidWlsZGluZyB0aGUKLSAgICAgICAgICAgICAgICBlbnRpcmUgcmVjaXBlIGJlY2F1c2UgdGhlIGluc3RhbGxhdGlvbiBhbmQgcGFja2FnaW5nIHRhc2tzCi0gICAgICAgICAgICAgICAgYXJlIHZlcnkgdGltZSBjb25zdW1pbmcuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMsCi0gICAgICAgICAgICAgICAgeW91IGNhbiBtYWtlIHRoZW0gcGVybWFuZW50IGJ5IGdlbmVyYXRpbmcgcGF0Y2hlcyBhbmQKLSAgICAgICAgICAgICAgICBhcHBseWluZyB0aGVtIHRvIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhcHBseWluZy1wYXRjaGVzJz5BcHBseWluZyBQYXRjaGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG5vdCBmYW1pbGlhciB3aXRoIGdlbmVyYXRpbmcgcGF0Y2hlcywgcmVmZXIgdG8gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXRoZS1wYXRjaCc+Q3JlYXRpbmcgdGhlIFBhdGNoPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZmluZS10dW5pbmctdGhlLWtlcm5lbC1jb25maWd1cmF0aW9uLWZpbGUnPgorICAgICAgICAgICAgPHRpdGxlPkZpbmUtVHVuaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBtYWtlIHN1cmUgdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBhcworICAgICAgICAgICAgICAgIGxlYW4gb3IgZWZmaWNpZW50IGFzIHBvc3NpYmxlIGJ5IHJlYWRpbmcgdGhlIG91dHB1dCBvZiB0aGUKKyAgICAgICAgICAgICAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBmcmFnbWVudCBhdWRpdCwgbm90aW5nIGFueSBpc3N1ZXMsIG1ha2luZworICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gY29ycmVjdCB0aGUgaXNzdWVzLCBhbmQgdGhlbiByZXBlYXRpbmcuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzayBydW5zLgorICAgICAgICAgICAgICAgIFRoaXMgdGFzayB2YWxpZGF0ZXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGJ5IGNoZWNraW5nIHRoZQorICAgICAgICAgICAgICAgIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhZ2FpbnN0IHRoZSBpbnB1dAorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIER1cmluZyB0aGUgY2hlY2ssIHRoZSB0YXNrIHByb2R1Y2VzIHdhcm5pbmcgbWVzc2FnZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdGVkIG9wdGlvbnMgdGhhdCBkaWQgbm90IG1ha2UgdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBpdGVtcyB0aGF0IGFwcGVhciB0d2ljZSBpbiB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGl0ZW1zIHRhZ2dlZCBhcyAicmVxdWlyZWQiIHRoYXQgd2VyZQorICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIGJvYXJkIG92ZXJyaWRlcyBhIG5vbi1ib2FyZCBzcGVjaWZpYyBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdGVkIG9wdGlvbnMgbm90IHZhbGlkIGZvciB0aGUga2VybmVsIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG9wdGlvbiBkb2VzIG5vdCBhcHBlYXIgYW55d2hlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrIGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIG9wdGlvbmFsbHkgcmVwb3J0IGlmIGFuIG9wdGlvbiBpcyBvdmVycmlkZGVuIGR1cmluZworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGVhY2ggb3V0cHV0IHdhcm5pbmcsIGEgbWVzc2FnZSBwb2ludHMgdG8gdGhlIGZpbGUKKyAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aGUgb3B0aW9ucyBhbmQgYSBwb2ludGVyIHRvIHRoZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdGhhdCBkZWZpbmVzIHRoZW0uCisgICAgICAgICAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGUgZmlsZXMgYXJlIHRoZSBrZXkgdG8gc3RyZWFtbGluaW5nIHRoZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN0cmVhbWxpbmUgdGhlIGNvbmZpZ3VyYXRpb24sIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIGEgV29ya2luZyBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTdGFydCB3aXRoIGEgZnVsbCBjb25maWd1cmF0aW9uIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBrbm93IHdvcmtzLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0aGUgY29uZmlndXJhdGlvbiBidWlsZHMgYW5kIGJvb3RzCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgYXMgeW91ciBiYXNlbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UnVuIENvbmZpZ3VyZSBhbmQgQ2hlY2sgVGFza3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlbHkgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2tzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCisgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBrZXJuZWxfY29uZmlnY2hlY2sgLWYKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJvY2VzcyB0aGUgUmVzdWx0czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGFrZSB0aGUgcmVzdWx0aW5nIGxpc3Qgb2YgZmlsZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyBhbmQgZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcm9wIHZhbHVlcyB0aGF0IGFyZSByZWRlZmluZWQgaW4gdGhlIGZyYWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkbyBub3QgY2hhbmdlIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZSBhbmQgcG90ZW50aWFsbHkgZHJvcCB2YWx1ZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZSBhbmQgcG90ZW50aWFsbHkgcmVtb3ZlIG5vbi1ib2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSByZXBlYXRlZCBhbmQgaW52YWxpZCBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZS1SdW4gQ29uZmlndXJlIGFuZCBDaGVjayBUYXNrczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgd29ya2VkIHRocm91Z2ggdGhlIG91dHB1dCBvZiB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGF1ZGl0LCB5b3UgY2FuIHJlLXJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSByZXN1bHRzIG9mIHlvdXIgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG1vcmUgaXNzdWVzLCB5b3UgY2FuIGRlYWwgd2l0aCB0aGVtIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVseSB3b3JraW5nIHRocm91Z2ggc3RlcHMgdHdvIHRocm91Z2ggZm91ciBldmVudHVhbGx5CisgICAgICAgICAgICAgICAgeWllbGRzIGEgbWluaW1hbCwgc3RyZWFtbGluZWQgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIGJlc3QgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiwgeW91IGNhbgorICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBMaW51eCBZb2N0byBrZXJuZWwuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZXhwYW5kaW5nLXZhcmlhYmxlcyc+CisgICAgICAgIDx0aXRsZT5FeHBhbmRpbmcgVmFyaWFibGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBpcyBoZWxwZnVsIHRvIGRldGVybWluZSB3aGF0IGEgdmFyaWFibGUgZXhwYW5kcworICAgICAgICAgICAgdG8gZHVyaW5nIGEgYnVpbGQuCisgICAgICAgICAgICBZb3UgY2FuIGRvIGV4YW1pbmUgdGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMgYnkgZXhhbWluaW5nIHRoZQorICAgICAgICAgICAgb3V0cHV0IG9mIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICBUaGUgb3V0cHV0IGlzIGxvbmcgYW5kIGlzIG1vcmUgZWFzaWx5IG1hbmFnZWQgaW4gYSB0ZXh0IGZpbGUsCisgICAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIGVhc3kgc2VhcmNoZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZSB2aXJ0dWFsL2tlcm5lbCA+IDxyZXBsYWNlYWJsZT5zb21lX3RleHRfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBXaXRoaW4gdGhlIHRleHQgZmlsZSwgeW91IGNhbiBzZWUgZXhhY3RseSBob3cgZWFjaCB2YXJpYWJsZSBpcworICAgICAgICAgICAgZXhwYW5kZWQgYW5kIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nd29ya2luZy13aXRoLWEtZGlydHkta2VybmVsLXZlcnNpb24tc3RyaW5nJz4KKyAgICAgICAgPHRpdGxlPldvcmtpbmcgd2l0aCBhICJEaXJ0eSIgS2VybmVsIFZlcnNpb24gU3RyaW5nPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBidWlsZCBhIGtlcm5lbCBpbWFnZSBhbmQgdGhlIHZlcnNpb24gc3RyaW5nIGhhcyBhCisgICAgICAgICAgICAiKyIgb3IgYSAiLWRpcnR5IiBhdCB0aGUgZW5kLCB1bmNvbW1pdHRlZCBtb2RpZmljYXRpb25zIGV4aXN0CisgICAgICAgICAgICBpbiB0aGUga2VybmVsJ3Mgc291cmNlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjbGVhbiB1cCB0aGUgdmVyc2lvbiBzdHJpbmc6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGlzY292ZXIgdGhlIFVuY29tbWl0dGVkIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgR28gdG8gdGhlIGtlcm5lbCdzIGxvY2FsbHkgY2xvbmVkIEdpdCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIChzb3VyY2UgZGlyZWN0b3J5KSBhbmQgdXNlIHRoZSBmb2xsb3dpbmcgR2l0IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgdG8gbGlzdCB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZCwgYWRkZWQsIG9yCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgc3RhdHVzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IHRoZSBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29tbWl0IHRob3NlIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgdHJlZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHlvdSB3aWxsIHNhdmUsCisgICAgICAgICAgICAgICAgICAgIGV4cG9ydCwgb3IgdXNlIHRoZSBjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGFkZAorICAgICAkIGdpdCBjb21taXQgLXMgLWEgLW0gImdldHRpbmcgcmlkIG9mIC1kaXJ0eSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgY29tbWl0IHRoZSBjaGFuZ2VzLCByZWJ1aWxkIHRoZSBrZXJuZWwuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIga2VybmVsIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIHdvcmtmbG93LCB0aGUgY29tbWFuZHMgeW91IHVzZSB0byByZWJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgbWlnaHQgZGlmZmVyLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlIGtlcm5lbCBpbWFnZSB3aGVuCisgICAgICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICB1c2luZyBCaXRiYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKICAgICA8c2VjdGlvbiBpZD0nd29ya2luZy13aXRoLXlvdXItb3duLXNvdXJjZXMnPgpAQCAtNzYzLDcgKzIxMjQsNyBAQAogICAgICAgICAgICAgd29ya2luZyB3aXRoIHlvdXIgb3duIHNvdXJjZXMuCiAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgeW91ciBvd24gc291cmNlcywgeW91IHdpbGwgbm90IGJlIGFibGUgdG8KICAgICAgICAgICAgIGxldmVyYWdlIHRoZSBleGlzdGluZyBrZXJuZWwKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gYW5kCiAgICAgICAgICAgICBzdGFiaWxpemF0aW9uIHdvcmsgb2YgdGhlIGxpbnV4LXlvY3RvIHNvdXJjZXMuCiAgICAgICAgICAgICBIb3dldmVyLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIG1hbmFnZSB5b3VyIG93biBNZXRhZGF0YSBpbiB0aGUgc2FtZQogICAgICAgICAgICAgZm9ybWF0IGFzIHRoZSBsaW51eC15b2N0byBzb3VyY2VzLgpAQCAtNzg4LDIzICsyMTQ5LDI5IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgYmFzaWMgc3RlcHMgeW91IGNhbiB1c2UgdG8gd29yayB3aXRoIHlvdXIgb3duIHNvdXJjZXM6CisgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGJhc2ljIHN0ZXBzIHlvdSBjYW4gdXNlIHRvIHdvcmsgd2l0aCB5b3VyIG93bgorICAgICAgICAgICAgc291cmNlczoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29weSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWN1c3RvbS5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgQ29weSBvZiB0aGUgS2VybmVsIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb3B5IHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tY3VzdG9tLmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHlvdXIgbGF5ZXIgYW5kIGdpdmUgaXQgYSBtZWFuaW5nZnVsIG5hbWUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIHNob3VsZCBpbmNsdWRlIHRoZSB2ZXJzaW9uIG9mIHRoZSBMaW51eCBrZXJuZWwgeW91Ci0gICAgICAgICAgICAgICAgICAgIGFyZSB1c2luZyAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tbXlwcm9qZWN0XzMuMTkuYmI8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgd2hlcmUgIjMuMTkiIGlzIHRoZSBiYXNlIHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbAotICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHlvdSB3b3VsZCBiZSB3b3JraW5nKS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW4gdGhlIHNhbWUgZGlyZWN0b3J5IGluc2lkZSB5b3VyIGxheWVyLAotICAgICAgICAgICAgICAgICAgICBjcmVhdGUgYSBtYXRjaGluZyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgdG8gc3RvcmUgeW91ciBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzIChlLmcuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by1teXByb2plY3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIHNob3VsZCBpbmNsdWRlIHRoZSB2ZXJzaW9uIG9mIHRoZSBZb2N0byBMaW51eAorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgeW91IGFyZSB1c2luZyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tbXlwcm9qZWN0XzQuMTIuYmI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgIjQuMTIiIGlzIHRoZSBiYXNlIHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHlvdSB3b3VsZCBiZSB3b3JraW5nKS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2Ugc3VyZSB5b3UgaGF2ZSBlaXRoZXIgYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBvciBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50IGZpbGVzLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERpcmVjdG9yeSBmb3IgWW91ciBQYXRjaGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBzYW1lIGRpcmVjdG9yeSBpbnNpZGUgeW91ciBsYXllciwgY3JlYXRlIGEgbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHRvIHN0b3JlIHlvdXIgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcworICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bGludXgteW9jdG8tbXlwcm9qZWN0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FbnN1cmUgWW91IEhhdmUgQ29uZmlndXJhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFrZSBzdXJlIHlvdSBoYXZlIGVpdGhlciBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIG9yIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMgaW4geW91ciBsYXllci4KICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tY3VzdG9tLmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3UgbXVzdCBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsCkBAIC04MTMsMjcgKzIxODAsMzIgQEAKICAgICAgJCBtYWtlIGRlZmNvbmZpZwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIGNvcHkgdGhlIHJlc3VsdGluZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYXMgImRlZmNvbmZpZyIgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZW4gYWRkIGl0IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB5b3VyIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGFzICJkZWZjb25maWciIGFuZCB0aGVuIGFkZCBpdCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgcmVjaXBlLjwvcGFyYT4KKwogICAgICAgICAgICAgICAgICAgICA8cGFyYT5SdW5uaW5nIHRoZSA8ZmlsZW5hbWU+bWFrZSBkZWZjb25maWc8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHJlc3VsdHMgaW4gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYXMgZGVmaW5lZCBieSB5b3VyIGtlcm5lbC4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgbm8gZ3VhcmFudGVlIGV4aXN0cyB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiBpcwogICAgICAgICAgICAgICAgICAgICB2YWxpZCBmb3IgeW91ciB1c2UgY2FzZSwgb3IgdGhhdCB5b3VyIGJvYXJkIHdpbGwgZXZlbiBib290LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHBhcnRpY3VsYXJseSB0cnVlIGZvciBub24teDg2IGFyY2hpdGVjdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgIFRvIHVzZSBub24teDg2IDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlcywgeW91Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgbW9yZSBzcGVjaWZpYyBhbmQgZmluZCBvbmUgdGhhdCBtYXRjaGVzIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBmb3Igbm9uLXg4NiBhcmNoaXRlY3R1cmVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyB1c2Ugbm9uLXg4NiA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZXMsCisgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMgYW5kIGZpbmQgb25lIHRoYXQgbWF0Y2hlcyB5b3VyCiAgICAgICAgICAgICAgICAgICAgIGJvYXJkIChpLmUuIGZvciBhcm0sIHlvdSBsb29rIGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmNoL2FybS9jb25maWdzPC9maWxlbmFtZT4gYW5kIHVzZSB0aGUgb25lIHRoYXQKICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgYm9hcmQpLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RWRpdCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3VyIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICBhcyBhcHByb3ByaWF0ZSBmb3IgeW91ciBwcm9qZWN0OgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIHlvdXIgcmVjaXBlIGFzIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHByb2plY3Q6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHNob3VsZCBzcGVjaWZ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSB0aGF0IHVzZXMgb25lIG9mIHRoZSBzdXBwb3J0ZWQgR2l0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlciBwcm90b2NvbHMgKGkuZS4gPGZpbGVuYW1lPmZpbGU8L2ZpbGVuYW1lPiwKQEAgLTg0NSwyNCArMjIxNywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBza2VsZXRvbiByZWNpcGUgcHJvdmlkZXMgYW4gZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gYXMgYSBzeW50YXggcmVmZXJlbmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9WRVJTSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT04nPjxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXgga2VybmVsIHZlcnNpb24geW91IGFyZSB1c2luZyAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzLjE5IikuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT05fRVhURU5TSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTl9FWFRFTlNJT048L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPkNPTkZJR19MT0NBTFZFUlNJT048L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgY29tcGlsZWQgaW50byB0aGUgcmVzdWx0aW5nIGtlcm5lbCBhbmQgdmlzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LjEyIikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT05fRVhURU5TSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTl9FWFRFTlNJT048L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09ORklHX0xPQ0FMVkVSU0lPTjwvZmlsZW5hbWU+IHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlZCBpbnRvIHRoZSByZXN1bHRpbmcga2VybmVsIGFuZCB2aXNpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPnVuYW1lPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWl0IElEIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gYnVpbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWF0IHRoaXMgdmFyaWFibGUgdGhlIHNhbWUgYXMgeW91IHdvdWxkIGluIGFueSBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnQgdGhlIHZhcmlhYmxlIHRvIGluZGljYXRlIHRvIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdGhhdCB0aGUgcmVjaXBlIGhhcyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVhdCB0aGlzIHZhcmlhYmxlIHRoZSBzYW1lIGFzIHlvdSB3b3VsZCBpbiBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50IHRoZSB2YXJpYWJsZSB0byBpbmRpY2F0ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRoYXQgdGhlIHJlY2lwZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gYXNzaWdubWVudCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBhZGVxdWF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBjb21iaW5lcyB0aGUgPGZpbGVuYW1lPkxJTlVYX1ZFUlNJT048L2ZpbGVuYW1lPgpAQCAtODcwLDE2ICsyMjUwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVyaXZlZCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21iaW5lZCByZXN1bHRzIGFyZSBhIHN0cmluZyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21iaW5lZCByZXN1bHRzIGFyZSBhIHN0cmluZyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgMy4xOS4xMStnaXQxKzY4YTYzNWJmOGRmYjY0YjAyMjYzYzFhYzgwYzk0ODY0N2NjNzZkNWZfMSsyMThiZDhkMjAyMmI5ODUyYzYwZDMyZjBkNzcwOTMxZTNjZjM0M2UyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGxlbmd0aHksIHRoZSBleHRyYSB2ZXJib3NpdHkgaW4gPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwcyBlbnN1cmUgeW91IGFyZSB1c2luZyB0aGUgZXhhY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzIGZyb20gd2hpY2ggeW91IGludGVuZCB0byBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBsZW5ndGh5LCB0aGUgZXh0cmEgdmVyYm9zaXR5IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gaGVscHMgZW5zdXJlIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXhhY3Qgc291cmNlcyBmcm9tIHdoaWNoIHlvdSBpbnRlbmQgdG8gYnVpbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTVBBVElCTEVfTUFDSElORSc+PGZpbGVuYW1lPkNPTVBBVElCTEVfTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTVBBVElCTEVfTUFDSElORSc+PGZpbGVuYW1lPkNPTVBBVElCTEVfTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHRoZSBtYWNoaW5lcyBzdXBwb3J0ZWQgYnkgeW91ciBuZXcgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaW4gdGhlIGV4YW1wbGUgcmVjaXBlIGlzIHNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzCkBAIC04ODgsMTggKzIyNjksMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNoYW5nZSBpdCB0byBtYXRjaCBhIGxpc3Qgb2YgdGhlIG1hY2hpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3VyIG5ldyByZWNpcGUgc3VwcG9ydHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHN1cHBvcnQgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXV4ODYtNjQ8L2ZpbGVuYW1lPiBtYWNoaW5lcywgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHN1cHBvcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4Ni02NDwvZmlsZW5hbWU+IG1hY2hpbmVzLCB1c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlByb3ZpZGUgZnVydGhlciBjdXN0b21pemF0aW9ucyB0byB5b3VyIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkN1c3RvbWl6ZSBZb3VyIFJlY2lwZSBhcyBOZWVkZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBmdXJ0aGVyIGN1c3RvbWl6YXRpb25zIHRvIHlvdXIgcmVjaXBlCiAgICAgICAgICAgICAgICAgICAgIGFzIG5lZWRlZCBqdXN0IGFzIHlvdSB3b3VsZCBjdXN0b21pemUgYW4gZXhpc3RpbmcKICAgICAgICAgICAgICAgICAgICAgbGludXgteW9jdG8gcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz5Nb2RpZnlpbmcKLSAgICAgICAgICAgICAgICAgICAgYW4gRXhpc3RpbmcgUmVjaXBlPC9saW5rPiIgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21vZGlmeWluZy1hbi1leGlzdGluZy1yZWNpcGUnPk1vZGlmeWluZyBhbiBFeGlzdGluZyBSZWNpcGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CkBAIC0xMjMwLDcgKzI2MTcsOCBAQAogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2VhcmNoZXMgYWxsIGZvcm1zIG9mIGtlcm5lbAogICAgICAgICAgICAgTWV0YWRhdGEgb24gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IHJlZ2FyZGxlc3MKICAgICAgICAgICAgIG9mIHdoZXRoZXIgdGhlIE1ldGFkYXRhIGlzIGluIHRoZSAia2VybmVsLWNhY2hlIiwgc3lzdGVtIGtlcm5lbAotICAgICAgICAgICAgTWV0YWRhdGEsIG9yIGEgcmVjaXBlLXNwYWNlIE1ldGFkYXRhLgorICAgICAgICAgICAgTWV0YWRhdGEsIG9yIGEgcmVjaXBlLXNwYWNlIE1ldGFkYXRhIChpLmUuIHBhcnQgb2YgdGhlIGtlcm5lbAorICAgICAgICAgICAgcmVjaXBlKS4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbWV0YWRhdGEtbG9jYXRpb24nPktlcm5lbCBNZXRhZGF0YSBMb2NhdGlvbjwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgpAQCAtMTI1Myw2ICsyNjQxLDcgQEAKICAgICAgICAgICAgIHRvIHRoZSBidWlsZC4KICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIEZlYXR1cmUgRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUgYW5kIGxvY2F0ZSBpdAogICAgICAgICAgICAgICAgICAgICBqdXN0IGFzIHlvdSB3b3VsZCBhbnkgb3RoZXIgcGF0Y2ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBmaWxlLCBvciBmZXRjaGVyIGl0ZW0KQEAgLTEyOTUsNiArMjY4NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0LmNmZzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgdGhlIEZlYXR1cmUgRmlsZSB0byA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICByZWNpcGUncyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTMwNCw3ICsyNjk0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcGF0aCBpcyBhcHBlbmRlZCB0byB0aGUgZXhpc3RpbmcgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSBmZWF0dXJlIGFzIGEga2VybmVsIGZlYXR1cmU6CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TcGVjaWZ5IHRoZSBGZWF0dXJlIGFzIGEgS2VybmVsIEZlYXR1cmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgICAgIHRvIHNwZWNpZnkgdGhlIGZlYXR1cmUgYXMgYSBrZXJuZWwgZmVhdHVyZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiB0ZXN0LnNjYyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCmluZGV4IGFjOTE3NDkuLmZiZWNjMTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKQEAgLTcsMjQ1ICs3LDYxMyBAQAogCiAgICAgPHNlY3Rpb24gaWQ9J2tlcm5lbC1iaWctcGljdHVyZSc+CiAgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IEtlcm5lbCBEZXZlbG9wbWVudCBhbmQgTWFpbnRlbmFuY2U8L3RpdGxlPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgS2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCwgbGlrZSBvdGhlciBrZXJuZWxzLCBhcmUgYmFzZWQgb2ZmIHRoZSBMaW51eAotICAgICAgICAgICAga2VybmVsIHJlbGVhc2VzIGZyb20gPHVsaW5rIHVybD0naHR0cDovL3d3dy5rZXJuZWwub3JnJz48L3VsaW5rPi4KLSAgICAgICAgICAgIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSBtYWpvciBkZXZlbG9wbWVudCBjeWNsZSwgdGhlIFlvY3RvIFByb2plY3QgdGVhbQotICAgICAgICAgICAgY2hvb3NlcyBpdHMga2VybmVsIGJhc2VkIG9uIGZhY3RvcnMgc3VjaCBhcyByZWxlYXNlIHRpbWluZywgdGhlIGFudGljaXBhdGVkIHJlbGVhc2UKLSAgICAgICAgICAgIHRpbWluZyBvZiBmaW5hbCB1cHN0cmVhbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IHZlcnNpb25zLCBhbmQgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgS2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCAoWW9jdG8gTGludXgga2VybmVscyksCisgICAgICAgICAgICBsaWtlIG90aGVyIGtlcm5lbHMsIGFyZSBiYXNlZCBvZmYgdGhlIExpbnV4IGtlcm5lbCByZWxlYXNlcyBmcm9tCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lmtlcm5lbC5vcmcnPjwvdWxpbms+LgorICAgICAgICAgICAgQXQgdGhlIGJlZ2lubmluZyBvZiBhIG1ham9yIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBjeWNsZSwgdGhlCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHRlYW0gY2hvb3NlcyBhIExpbnV4IGtlcm5lbCBiYXNlZCBvbiBmYWN0b3JzIHN1Y2ggYXMKKyAgICAgICAgICAgIHJlbGVhc2UgdGltaW5nLCB0aGUgYW50aWNpcGF0ZWQgcmVsZWFzZSB0aW1pbmcgb2YgZmluYWwgdXBzdHJlYW0KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gdmVyc2lvbnMsIGFuZCBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICBmZWF0dXJlIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIFR5cGljYWxseSwgdGhlIGtlcm5lbCBjaG9zZW4gaXMgaW4gdGhlCi0gICAgICAgICAgICBmaW5hbCBzdGFnZXMgb2YgZGV2ZWxvcG1lbnQgYnkgdGhlIGNvbW11bml0eS4KLSAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUga2VybmVsIGlzIGluIHRoZSByZWxlYXNlCi0gICAgICAgICAgICBjYW5kaWRhdGUgb3IgInJjIiBwaGFzZSBhbmQgbm90IHlldCBhIGZpbmFsIHJlbGVhc2UuCi0gICAgICAgICAgICBCdXQsIGJ5IGJlaW5nIGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgZXh0ZXJuYWwgZGV2ZWxvcG1lbnQsIHRoZSB0ZWFtIGtub3dzIHRoYXQgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IGZpbmFsIHJlbGVhc2Ugd2lsbCBjbGVhcmx5IGJlIHdpdGhpbiB0aGUgZWFybHkgc3RhZ2VzIG9mCi0gICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB3aW5kb3cuCisgICAgICAgICAgICBUeXBpY2FsbHksIHRoZSBMaW51eCBrZXJuZWwgY2hvc2VuIGlzIGluIHRoZSBmaW5hbCBzdGFnZXMgb2YKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJ5IHRoZSBMaW51eCBjb21tdW5pdHkuCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIExpbnV4IGtlcm5lbCBpcyBpbiB0aGUgcmVsZWFzZSBjYW5kaWRhdGUKKyAgICAgICAgICAgIG9yICJyYyIgcGhhc2UgYW5kIGhhcyB5ZXQgdG8gcmVhY2ggZmluYWwgcmVsZWFzZS4KKyAgICAgICAgICAgIEJ1dCwgYnkgYmVpbmcgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiBleHRlcm5hbCBkZXZlbG9wbWVudCwgdGhlCisgICAgICAgICAgICB0ZWFtIGtub3dzIHRoYXQgdGhlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gZmluYWwgcmVsZWFzZQorICAgICAgICAgICAgd2lsbCBjbGVhcmx5IGJlIHdpdGhpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBkZXZlbG9wbWVudCB3aW5kb3cuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgYmFsYW5jZSBhbGxvd3MgdGhlIHRlYW0gdG8gZGVsaXZlciB0aGUgbW9zdCB1cC10by1kYXRlIGtlcm5lbAotICAgICAgICAgICAgcG9zc2libGUsIHdoaWxlIHN0aWxsIGVuc3VyaW5nIHRoYXQgdGhlIHRlYW0gaGFzIGEgc3RhYmxlIG9mZmljaWFsIHJlbGVhc2UgZm9yCi0gICAgICAgICAgICB0aGUgYmFzZWxpbmUgTGludXgga2VybmVsIHZlcnNpb24uCisgICAgICAgICAgICBUaGlzIGJhbGFuY2UgYWxsb3dzIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdG8gZGVsaXZlciB0aGUgbW9zdAorICAgICAgICAgICAgdXAtdG8tZGF0ZSBZb2N0byBMaW51eCBrZXJuZWwgcG9zc2libGUsIHdoaWxlIHN0aWxsIGVuc3VyaW5nIHRoYXQKKyAgICAgICAgICAgIHRoZSB0ZWFtIGhhcyBhIHN0YWJsZSBvZmZpY2lhbCByZWxlYXNlIGZvciB0aGUgYmFzZWxpbmUgTGludXgKKyAgICAgICAgICAgIGtlcm5lbCB2ZXJzaW9uLgogICAgICAgICA8L3BhcmE+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgdWx0aW1hdGUgc291cmNlIGZvciBrZXJuZWxzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBZb2N0byBQcm9qZWN0IGFyZSByZWxlYXNlZCBrZXJuZWxzCi0gICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBhIGZvdW5kYXRpb25hbCBrZXJuZWwgZnJvbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LCB0aGUKLSAgICAgICAgICAgIGtlcm5lbHMgYXZhaWxhYmxlIGNvbnRhaW4gYSBtaXggb2YgaW1wb3J0YW50IG5ldyBtYWlubGluZQotICAgICAgICAgICAgZGV2ZWxvcG1lbnRzLCBub24tbWFpbmxpbmUgZGV2ZWxvcG1lbnRzICh3aGVuIHRoZXJlIGlzIG5vIGFsdGVybmF0aXZlKSwKLSAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBkZXZlbG9wbWVudHMsCi0gICAgICAgICAgICBhbmQgY3VzdG9tIGZlYXR1cmVzLgotICAgICAgICAgICAgVGhlc2UgYWRkaXRpb25zIHJlc3VsdCBpbiBhIGNvbW1lcmNpYWxseSByZWxlYXNlZCBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCB0aGF0IGNhdGVycwotICAgICAgICAgICAgdG8gc3BlY2lmaWMgZW1iZWRkZWQgZGVzaWduZXIgbmVlZHMgZm9yIHRhcmdldGVkIGhhcmR3YXJlLgorICAgICAgICAgICAgQXMgaW1wbGllZCBlYXJsaWVyLCB0aGUgdWx0aW1hdGUgc291cmNlIGZvciBZb2N0byBMaW51eCBrZXJuZWxzCisgICAgICAgICAgICBhcmUgcmVsZWFzZWQga2VybmVscyBmcm9tIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4uCisgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBhIGZvdW5kYXRpb25hbCBrZXJuZWwgZnJvbQorICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiwgdGhlIGF2YWlsYWJsZSBZb2N0byBMaW51eCBrZXJuZWxzCisgICAgICAgICAgICBjb250YWluIGEgbWl4IG9mIGltcG9ydGFudCBuZXcgbWFpbmxpbmUgZGV2ZWxvcG1lbnRzLCBub24tbWFpbmxpbmUKKyAgICAgICAgICAgIGRldmVsb3BtZW50cyAod2hlbiBubyBhbHRlcm5hdGl2ZSBleGlzdHMpLCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UKKyAgICAgICAgICAgIChCU1ApIGRldmVsb3BtZW50cywgYW5kIGN1c3RvbSBmZWF0dXJlcy4KKyAgICAgICAgICAgIFRoZXNlIGFkZGl0aW9ucyByZXN1bHQgaW4gYSBjb21tZXJjaWFsbHkgcmVsZWFzZWQgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgTGludXgga2VybmVsIHRoYXQgY2F0ZXJzIHRvIHNwZWNpZmljIGVtYmVkZGVkIGRlc2lnbmVyCisgICAgICAgICAgICBuZWVkcyBmb3IgdGFyZ2V0ZWQgaGFyZHdhcmUuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgYSBrZXJuZWwgaXMgb2ZmaWNpYWxseSByZWxlYXNlZCwgdGhlIFlvY3RvIFByb2plY3QgdGVhbSBnb2VzIGludG8KLSAgICAgICAgICAgIHRoZWlyIG5leHQgZGV2ZWxvcG1lbnQgY3ljbGUsIG9yIHVwd2FyZCByZXZpc2lvbiAodXByZXYpIGN5Y2xlLCB3aGlsZSBzdGlsbAotICAgICAgICAgICAgY29udGludWluZyBtYWludGVuYW5jZSBvbiB0aGUgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgd2ViIGludGVyZmFjZSB0byB0aGUgWW9jdG8gTGludXgga2VybmVscyBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCisgICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGUgaW50ZXJmYWNlLCB5b3Ugd2lsbCBzZWUgdG8gdGhlIGxlZnQgYQorICAgICAgICAgICAgZ3JvdXBpbmcgb2YgR2l0IHJlcG9zaXRvcmllcyB0aXRsZWQgIllvY3RvIExpbnV4IEtlcm5lbCIuCisgICAgICAgICAgICBXaXRoaW4gdGhpcyBncm91cCwgeW91IHdpbGwgZmluZCBzZXZlcmFsIExpbnV4IFlvY3RvIGtlcm5lbHMKKyAgICAgICAgICAgIGRldmVsb3BlZCBhbmQgaW5jbHVkZWQgd2l0aCBZb2N0byBQcm9qZWN0IHJlbGVhc2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuMSByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00LjQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UgMi4xLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggNC40IHJlbGVhc2VkIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuNjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgdGVtcG9yYXJ5IGtlcm5lbCB0aGF0IGlzIG5vdCB0aWVkIHRvIGFueSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00Ljg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgc3RhYmxlIHlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UgMi4yLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC45PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuOSByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00LjEwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFJlbGVhc2UgMi4zLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggNC4xMCByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00LjEyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFJlbGVhc2UgMi40LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggNC4xMiByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWNhY2hlPC9maWxlbmFtZT4gY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBsaW51eC15b2N0byBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZXBvc2l0b3J5IGlzIHVzZWZ1bCB3aGVuIHdvcmtpbmcgb24gdGhlIGxpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyAiQWR2YW5jZWQgS2VybmVsIE1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLWRldi1hZHZhbmNlZCc+V29ya2luZyBXaXRoIEFkdmFuY2VkIE1ldGFkYXRhICg8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4pPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgQ2hhcHRlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLWRldjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgZGV2ZWxvcG1lbnQga2VybmVsIGJhc2VkIG9uIHRoZSBsYXRlc3QgdXBzdHJlYW0gcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICBMb25nIFRlcm0gU3VwcG9ydCBJbml0aWF0aXZlIChMVFNJKSBmb3IgWW9jdG8gTGludXgKKyAgICAgICAgICAgICAgICBrZXJuZWxzIGlzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgMS43LCAxLjgsIGFuZCAyLjAsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTFRTSSBrZXJuZWwgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgMi4xLCAyLjIsIGFuZCAyLjMsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTFRTSSBrZXJuZWwgaXMgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2UgMi40LCB0aGUgTFRTSSBrZXJuZWwgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by00Ljk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by00LjQ8L2ZpbGVuYW1lPiBpcyBhbiBMVFMKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIGEgWW9jdG8gTGludXgga2VybmVsIGlzIG9mZmljaWFsbHkgcmVsZWFzZWQsIHRoZSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCB0ZWFtIGdvZXMgaW50byB0aGVpciBuZXh0IGRldmVsb3BtZW50IGN5Y2xlLCBvciB1cHdhcmQKKyAgICAgICAgICAgIHJldmlzaW9uICh1cHJldikgY3ljbGUsIHdoaWxlIHN0aWxsIGNvbnRpbnVpbmcgbWFpbnRlbmFuY2Ugb24gdGhlCisgICAgICAgICAgICByZWxlYXNlZCBrZXJuZWwuCiAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBtb3N0IHN1c3RhaW5hYmxlIGFuZCBzdGFibGUgd2F5Ci0gICAgICAgICAgICB0byBpbmNsdWRlIGZlYXR1cmUgZGV2ZWxvcG1lbnQgdXBzdHJlYW0gaXMgdGhyb3VnaCBhIGtlcm5lbCB1cHJldiBwcm9jZXNzLgotICAgICAgICAgICAgQmFjay1wb3J0aW5nIGh1bmRyZWRzIG9mIGluZGl2aWR1YWwgZml4ZXMgYW5kIG1pbm9yIGZlYXR1cmVzIGZyb20gdmFyaW91cwotICAgICAgICAgICAga2VybmVsIHZlcnNpb25zIGlzIG5vdCBzdXN0YWluYWJsZSBhbmQgY2FuIGVhc2lseSBjb21wcm9taXNlIHF1YWxpdHkuCisgICAgICAgICAgICB0byBpbmNsdWRlIGZlYXR1cmUgZGV2ZWxvcG1lbnQgdXBzdHJlYW0gaXMgdGhyb3VnaCBhIGtlcm5lbCB1cHJldgorICAgICAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgICAgIEJhY2stcG9ydGluZyBodW5kcmVkcyBvZiBpbmRpdmlkdWFsIGZpeGVzIGFuZCBtaW5vciBmZWF0dXJlcyBmcm9tCisgICAgICAgICAgICB2YXJpb3VzIGtlcm5lbCB2ZXJzaW9ucyBpcyBub3Qgc3VzdGFpbmFibGUgYW5kIGNhbiBlYXNpbHkKKyAgICAgICAgICAgIGNvbXByb21pc2UgcXVhbGl0eS4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRHVyaW5nIHRoZSB1cHJldiBjeWNsZSwgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB1c2VzIGFuIG9uZ29pbmcgYW5hbHlzaXMgb2YKLSAgICAgICAgICAgIGtlcm5lbCBkZXZlbG9wbWVudCwgQlNQIHN1cHBvcnQsIGFuZCByZWxlYXNlIHRpbWluZyB0byBzZWxlY3QgdGhlIGJlc3QKLSAgICAgICAgICAgIHBvc3NpYmxlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gdmVyc2lvbi4KLSAgICAgICAgICAgIFRoZSB0ZWFtIGNvbnRpbnVhbGx5IG1vbml0b3JzIGNvbW11bml0eSBrZXJuZWwKLSAgICAgICAgICAgIGRldmVsb3BtZW50IHRvIGxvb2sgZm9yIHNpZ25pZmljYW50IGZlYXR1cmVzIG9mIGludGVyZXN0LgotICAgICAgICAgICAgVGhlIHRlYW0gZG9lcyBjb25zaWRlciBiYWNrLXBvcnRpbmcgbGFyZ2UgZmVhdHVyZXMgaWYgdGhleSBoYXZlIGEgc2lnbmlmaWNhbnQgYWR2YW50YWdlLgotICAgICAgICAgICAgVXNlciBvciBjb21tdW5pdHkgZGVtYW5kIGNhbiBhbHNvIHRyaWdnZXIgYSBiYWNrLXBvcnQgb3IgY3JlYXRpb24gb2YgbmV3Ci0gICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGluIHRoZSBZb2N0byBQcm9qZWN0IGJhc2VsaW5lIGtlcm5lbCBkdXJpbmcgdGhlIHVwcmV2IGN5Y2xlLgorICAgICAgICAgICAgRHVyaW5nIHRoZSB1cHJldiBjeWNsZSwgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB1c2VzIGFuIG9uZ29pbmcKKyAgICAgICAgICAgIGFuYWx5c2lzIG9mIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCwgQlNQIHN1cHBvcnQsIGFuZCByZWxlYXNlCisgICAgICAgICAgICB0aW1pbmcgdG8gc2VsZWN0IHRoZSBiZXN0IHBvc3NpYmxlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4KKyAgICAgICAgICAgIExpbnV4IGtlcm5lbCB2ZXJzaW9uIG9uIHdoaWNoIHRvIGJhc2Ugc3Vic2VxdWVudCBZb2N0byBMaW51eAorICAgICAgICAgICAga2VybmVsIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlIHRlYW0gY29udGludWFsbHkgbW9uaXRvcnMgTGludXggY29tbXVuaXR5IGtlcm5lbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgdG8gbG9vayBmb3Igc2lnbmlmaWNhbnQgZmVhdHVyZXMgb2YgaW50ZXJlc3QuCisgICAgICAgICAgICBUaGUgdGVhbSBkb2VzIGNvbnNpZGVyIGJhY2stcG9ydGluZyBsYXJnZSBmZWF0dXJlcyBpZiB0aGV5IGhhdmUgYQorICAgICAgICAgICAgc2lnbmlmaWNhbnQgYWR2YW50YWdlLgorICAgICAgICAgICAgVXNlciBvciBjb21tdW5pdHkgZGVtYW5kIGNhbiBhbHNvIHRyaWdnZXIgYSBiYWNrLXBvcnQgb3IgY3JlYXRpb24KKyAgICAgICAgICAgIG9mIG5ldyBmdW5jdGlvbmFsaXR5IGluIHRoZSBZb2N0byBQcm9qZWN0IGJhc2VsaW5lIGtlcm5lbCBkdXJpbmcKKyAgICAgICAgICAgIHRoZSB1cHJldiBjeWNsZS4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgR2VuZXJhbGx5IHNwZWFraW5nLCBldmVyeSBuZXcga2VybmVsIGJvdGggYWRkcyBmZWF0dXJlcyBhbmQgaW50cm9kdWNlcyBuZXcgYnVncy4KLSAgICAgICAgICAgIFRoZXNlIGNvbnNlcXVlbmNlcyBhcmUgdGhlIGJhc2ljIHByb3BlcnRpZXMgb2YgdXBzdHJlYW0ga2VybmVsIGRldmVsb3BtZW50IGFuZCBhcmUKLSAgICAgICAgICAgIG1hbmFnZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgdGVhbSdzIGtlcm5lbCBzdHJhdGVneS4KLSAgICAgICAgICAgIEl0IGlzIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0ncyBwb2xpY3kgdG8gbm90IGJhY2stcG9ydCBtaW5vciBmZWF0dXJlcyB0byB0aGUgcmVsZWFzZWQga2VybmVsLgotICAgICAgICAgICAgVGhleSBvbmx5IGNvbnNpZGVyIGJhY2stcG9ydGluZyBzaWduaWZpY2FudCB0ZWNobm9sb2dpY2FsIGp1bXBzIC0gYW5kLCB0aGF0IGlzIGRvbmUKLSAgICAgICAgICAgIGFmdGVyIGEgY29tcGxldGUgZ2FwIGFuYWx5c2lzLgotICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBwb2xpY3kgaXMgdGhhdCBiYWNrLXBvcnRpbmcgYW55IHNtYWxsIHRvIG1lZGl1bSBzaXplZCBjaGFuZ2UKLSAgICAgICAgICAgIGZyb20gYW4gZXZvbHZpbmcga2VybmVsIGNhbiBlYXNpbHkgY3JlYXRlIG1pc21hdGNoZXMsIGluY29tcGF0aWJpbGl0aWVzIGFuZCB2ZXJ5Ci0gICAgICAgICAgICBzdWJ0bGUgZXJyb3JzLgorICAgICAgICAgICAgR2VuZXJhbGx5IHNwZWFraW5nLCBldmVyeSBuZXcgTGludXgga2VybmVsIGJvdGggYWRkcyBmZWF0dXJlcyBhbmQKKyAgICAgICAgICAgIGludHJvZHVjZXMgbmV3IGJ1Z3MuCisgICAgICAgICAgICBUaGVzZSBjb25zZXF1ZW5jZXMgYXJlIHRoZSBiYXNpYyBwcm9wZXJ0aWVzIG9mIHVwc3RyZWFtCisgICAgICAgICAgICBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kIGFyZSBtYW5hZ2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICB0ZWFtJ3MgWW9jdG8gTGludXgga2VybmVsIGRldmVsb3BtZW50IHN0cmF0ZWd5LgorICAgICAgICAgICAgSXQgaXMgdGhlIFlvY3RvIFByb2plY3QgdGVhbSdzIHBvbGljeSB0byBub3QgYmFjay1wb3J0IG1pbm9yCisgICAgICAgICAgICBmZWF0dXJlcyB0byB0aGUgcmVsZWFzZWQgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICAgICAgVGhleSBvbmx5IGNvbnNpZGVyIGJhY2stcG9ydGluZyBzaWduaWZpY2FudCB0ZWNobm9sb2dpY2FsCisgICAgICAgICAgICBqdW1wcyAmZGFzaDsgYW5kLCB0aGF0IGlzIGRvbmUgYWZ0ZXIgYSBjb21wbGV0ZSBnYXAgYW5hbHlzaXMuCisgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHBvbGljeSBpcyB0aGF0IGJhY2stcG9ydGluZyBhbnkgc21hbGwgdG8KKyAgICAgICAgICAgIG1lZGl1bSBzaXplZCBjaGFuZ2UgZnJvbSBhbiBldm9sdmluZyBMaW51eCBrZXJuZWwgY2FuIGVhc2lseQorICAgICAgICAgICAgY3JlYXRlIG1pc21hdGNoZXMsIGluY29tcGF0aWJpbGl0aWVzIGFuZCB2ZXJ5IHN1YnRsZSBlcnJvcnMuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZXNlIHBvbGljaWVzIHJlc3VsdCBpbiBib3RoIGEgc3RhYmxlIGFuZCBhIGN1dHRpbmcKLSAgICAgICAgICAgIGVkZ2Uga2VybmVsIHRoYXQgbWl4ZXMgZm9yd2FyZCBwb3J0cyBvZiBleGlzdGluZyBmZWF0dXJlcyBhbmQgc2lnbmlmaWNhbnQgYW5kIGNyaXRpY2FsCi0gICAgICAgICAgICBuZXcgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgIEZvcndhcmQgcG9ydGluZyBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWxzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbAotICAgICAgICAgICAgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSAibWljcm8gdXByZXYuIgotICAgICAgICAgICAgVGhlIG1hbnkg4oCcbWljcm8gdXByZXZz4oCdIHByb2R1Y2UgYSBrZXJuZWwgdmVyc2lvbiB3aXRoIGEgbWl4IG9mCi0gICAgICAgICAgICBpbXBvcnRhbnQgbmV3IG1haW5saW5lLCBub24tbWFpbmxpbmUsIEJTUCBkZXZlbG9wbWVudHMgYW5kIGZlYXR1cmUgaW50ZWdyYXRpb25zLgotICAgICAgICAgICAgVGhpcyBrZXJuZWwgZ2l2ZXMgaW5zaWdodCBpbnRvIG5ldyBmZWF0dXJlcyBhbmQgYWxsb3dzIGZvY3VzZWQKLSAgICAgICAgICAgIGFtb3VudHMgb2YgdGVzdGluZyB0byBiZSBkb25lIG9uIHRoZSBrZXJuZWwsIHdoaWNoIHByZXZlbnRzCi0gICAgICAgICAgICBzdXJwcmlzZXMgd2hlbiBzZWxlY3RpbmcgdGhlIG5leHQgbWFqb3IgdXByZXYuCi0gICAgICAgICAgICBUaGUgcXVhbGl0eSBvZiB0aGVzZSBjdXR0aW5nIGVkZ2Uga2VybmVscyBpcyBldm9sdmluZyBhbmQgdGhlIGtlcm5lbHMgYXJlIHVzZWQgaW4gbGVhZGluZyBlZGdlCi0gICAgICAgICAgICBmZWF0dXJlIGFuZCBCU1AgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICBUaGUgcG9saWNpZXMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbiByZXN1bHQgaW4gYm90aCBhIHN0YWJsZQorICAgICAgICAgICAgYW5kIGEgY3V0dGluZyBlZGdlIFlvY3RvIExpbnV4IGtlcm5lbCB0aGF0IG1peGVzIGZvcndhcmQgcG9ydHMgb2YKKyAgICAgICAgICAgIGV4aXN0aW5nIExpbnV4IGtlcm5lbCBmZWF0dXJlcyBhbmQgc2lnbmlmaWNhbnQgYW5kIGNyaXRpY2FsIG5ldworICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIEZvcndhcmQgcG9ydGluZyBMaW51eCBrZXJuZWwgZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBZb2N0byBMaW51eAorICAgICAgICAgICAga2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBjYW4gYmUgdGhvdWdodCBvZiBhcworICAgICAgICAgICAgYSAibWljcm8gdXByZXYuIgorICAgICAgICAgICAgVGhlIG1hbnkg4oCcbWljcm8gdXByZXZz4oCdIHByb2R1Y2UgYSBZb2N0byBMaW51eCBrZXJuZWwgdmVyc2lvbiB3aXRoCisgICAgICAgICAgICBhIG1peCBvZiBpbXBvcnRhbnQgbmV3IG1haW5saW5lLCBub24tbWFpbmxpbmUsIEJTUCBkZXZlbG9wbWVudHMKKyAgICAgICAgICAgIGFuZCBmZWF0dXJlIGludGVncmF0aW9ucy4KKyAgICAgICAgICAgIFRoaXMgWW9jdG8gTGludXgga2VybmVsIGdpdmVzIGluc2lnaHQgaW50byBuZXcgZmVhdHVyZXMgYW5kCisgICAgICAgICAgICBhbGxvd3MgZm9jdXNlZCBhbW91bnRzIG9mIHRlc3RpbmcgdG8gYmUgZG9uZSBvbiB0aGUga2VybmVsLAorICAgICAgICAgICAgd2hpY2ggcHJldmVudHMgc3VycHJpc2VzIHdoZW4gc2VsZWN0aW5nIHRoZSBuZXh0IG1ham9yIHVwcmV2LgorICAgICAgICAgICAgVGhlIHF1YWxpdHkgb2YgdGhlc2UgY3V0dGluZyBlZGdlIFlvY3RvIExpbnV4IGtlcm5lbHMgaXMgZXZvbHZpbmcKKyAgICAgICAgICAgIGFuZCB0aGUga2VybmVscyBhcmUgdXNlZCBpbiBsZWFkaW5nIGVkZ2UgZmVhdHVyZSBhbmQgQlNQCisgICAgICAgICAgICBkZXZlbG9wbWVudC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtYXJjaGl0ZWN0dXJlJz4KLSAgICAgICAgPHRpdGxlPktlcm5lbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSd5b2N0by1saW51eC1rZXJuZWwtYXJjaGl0ZWN0dXJlLWFuZC1icmFuY2hpbmctc3RyYXRlZ2llcyc+CisgICAgICAgIDx0aXRsZT5Zb2N0byBMaW51eCBLZXJuZWwgQXJjaGl0ZWN0dXJlIGFuZCBCcmFuY2hpbmcgU3RyYXRlZ2llczwvdGl0bGU+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGtlcm5lbHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbgotICAgICAgICAgICAgb24gdGhlIG1lY2hhbmlzbXMgdXNlZCB0byBhY2hpZXZlIHRoYXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGEga2V5IGdvYWwgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMKKyAgICAgICAgICAgIHRvIHByZXNlbnQgdGhlIGRldmVsb3BlciB3aXRoIGEga2VybmVsIHRoYXQgaGFzIGEgY2xlYXIgYW5kCisgICAgICAgICAgICBjb250aW51b3VzIGhpc3RvcnkgdGhhdCBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLgorICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBhbmQgbWVjaGFuaXNtcywgaW4gcGFydGljdWxhciB0aGUgYnJhbmNoaW5nCisgICAgICAgICAgICBzdHJhdGVnaWVzLCB1c2VkIGFjaGlldmUgdGhhdCBnb2FsIGluIGEgbWFubmVyIHNpbWlsYXIgdG8KKyAgICAgICAgICAgIHVwc3RyZWFtIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdhcmNoaXRlY3R1cmUtb3ZlcnZpZXcnPgotICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBhIGtleSBnb2FsIG9mIHRoZSBZb2N0byBQcm9qZWN0IGlzIHRvIHByZXNlbnQgdGhlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcGVyIHdpdGgKLSAgICAgICAgICAgICAgICBhIGtlcm5lbCB0aGF0IGhhcyBhIGNsZWFyIGFuZCBjb250aW51b3VzIGhpc3RvcnkgdGhhdCBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLgotICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgYW5kIG1lY2hhbmlzbXMgdXNlZCBhY2hpZXZlIHRoYXQgZ29hbCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvIHRoZQotICAgICAgICAgICAgICAgIHVwc3RyZWFtIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIGEgWW9jdG8gUHJvamVjdCBrZXJuZWwgYXMgY29uc2lzdGluZyBvZiBhIGJhc2VsaW5lIExpbnV4IGtlcm5lbCB3aXRoCi0gICAgICAgICAgICAgICAgYWRkZWQgZmVhdHVyZXMgbG9naWNhbGx5IHN0cnVjdHVyZWQgb24gdG9wIG9mIHRoZSBiYXNlbGluZS4KLSAgICAgICAgICAgICAgICBUaGUgZmVhdHVyZXMgYXJlIHRhZ2dlZCBhbmQgb3JnYW5pemVkIGJ5IHdheSBvZiBhIGJyYW5jaGluZyBzdHJhdGVneSBpbXBsZW1lbnRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICBzb3VyY2UgY29kZSBtYW5hZ2VyIChTQ00pIEdpdC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gR2l0IGFzIGFwcGxpZWQgdG8gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIgc2VjdGlvbiBpbiB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB0aGUgdXNlciBoYXMgdGhlIGFiaWxpdHkgdG8gc2VlIHRoZSBhZGRlZCBmZWF0dXJlcyBhbmQKLSAgICAgICAgICAgICAgICB0aGUgY29tbWl0cyB0aGF0IG1ha2UgdXAgdGhvc2UgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYmVpbmcgYWJsZSB0byBzZWUgYWRkZWQgZmVhdHVyZXMsIHRoZSB1c2VyIGNhbiBhbHNvIHZpZXcgdGhlIGhpc3Rvcnkgb2Ygd2hhdAotICAgICAgICAgICAgICAgIG1hZGUgdXAgdGhlIGJhc2VsaW5lIGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIHNob3dzIHRoZSBjb25jZXB0dWFsIFlvY3RvIFByb2plY3Qga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIGlsbHVzdHJhdGlvbiwgdGhlICJLZXJuZWwub3JnIEJyYW5jaCBQb2ludCIKLSAgICAgICAgICAgICAgICBtYXJrcyB0aGUgc3BlY2lmaWMgc3BvdCAob3IgcmVsZWFzZSkgZnJvbQotICAgICAgICAgICAgICAgIHdoaWNoIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBpcyBjcmVhdGVkLgotICAgICAgICAgICAgICAgIEZyb20gdGhpcyBwb2ludCAidXAiIGluIHRoZSB0cmVlLCBmZWF0dXJlcyBhbmQgZGlmZmVyZW5jZXMgYXJlIG9yZ2FuaXplZCBhbmQgdGFnZ2VkLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlICJZb2N0byBQcm9qZWN0IEJhc2VsaW5lIEtlcm5lbCIgY29udGFpbnMgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGNvbW1vbiB0byBldmVyeSBrZXJuZWwKLSAgICAgICAgICAgICAgICB0eXBlIGFuZCBCU1AgdGhhdCBpcyBvcmdhbml6ZWQgZnVydGhlciB1cCB0aGUgdHJlZS4KLSAgICAgICAgICAgICAgICBQbGFjaW5nIHRoZXNlIGNvbW1vbiBmZWF0dXJlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICB0cmVlIHRoaXMgd2F5IG1lYW5zIGZlYXR1cmVzIGRvIG5vdCBoYXZlIHRvIGJlIGR1cGxpY2F0ZWQgYWxvbmcgaW5kaXZpZHVhbCBicmFuY2hlcyBvZiB0aGUKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGcm9tIHRoZSBZb2N0byBQcm9qZWN0IEJhc2VsaW5lIEtlcm5lbCwgYnJhbmNoIHBvaW50cyByZXByZXNlbnQgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eQotICAgICAgICAgICAgICAgIGZvciBpbmRpdmlkdWFsIEJTUHMgYXMgd2VsbCBhcyByZWFsLXRpbWUga2VybmVscy4KLSAgICAgICAgICAgICAgICBUaGUgaWxsdXN0cmF0aW9uIHJlcHJlc2VudHMgdGhpcyB0aHJvdWdoIHRocmVlIEJTUC1zcGVjaWZpYyBicmFuY2hlcyBhbmQgYSByZWFsLXRpbWUKLSAgICAgICAgICAgICAgICBrZXJuZWwgYnJhbmNoLgotICAgICAgICAgICAgICAgIEVhY2ggYnJhbmNoIHJlcHJlc2VudHMgc29tZSB1bmlxdWUgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIEJTUCBvciBhIHJlYWwtdGltZSBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgc3RydWN0dXJlLCB0aGUgcmVhbC10aW1lIGtlcm5lbCBicmFuY2ggaGFzIGNvbW1vbiBmZWF0dXJlcyBmb3IgYWxsCi0gICAgICAgICAgICAgICAgcmVhbC10aW1lIGtlcm5lbHMgYW5kIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgbW9yZSBicmFuY2hlcyBmb3IgaW5kaXZpZHVhbCBCU1Atc3BlY2lmaWMgcmVhbC10aW1lIGtlcm5lbHMuCi0gICAgICAgICAgICAgICAgVGhlIGlsbHVzdHJhdGlvbiBzaG93cyB0aHJlZSBicmFuY2hlcyBhcyBhbiBleGFtcGxlLgotICAgICAgICAgICAgICAgIEVhY2ggYnJhbmNoIHBvaW50cyB0aGUgd2F5IHRvIHNwZWNpZmljLCB1bmlxdWUgZmVhdHVyZXMgZm9yIGEgcmVzcGVjdGl2ZSByZWFsLXRpbWUKLSAgICAgICAgICAgICAgICBrZXJuZWwgYXMgdGhleSBhcHBseSB0byBhIGdpdmVuIEJTUC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgdHJlZSBzdHJ1Y3R1cmUgcHJlc2VudHMgYSBjbGVhciBwYXRoIG9mIG1hcmtlcnMgKG9yIGJyYW5jaGVzKSB0byB0aGUKLSAgICAgICAgICAgICAgICBkZXZlbG9wZXIgdGhhdCwgZm9yIGFsbCBwcmFjdGljYWwgcHVycG9zZXMsIGlzIHRoZSBrZXJuZWwgbmVlZGVkIGZvciBhbnkgZ2l2ZW4gc2V0Ci0gICAgICAgICAgICAgICAgb2YgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiBhIFlvY3RvIExpbnV4IGtlcm5lbCBhcyBjb25zaXN0aW5nIG9mIGEKKyAgICAgICAgICAgIGJhc2VsaW5lIExpbnV4IGtlcm5lbCB3aXRoIGFkZGVkIGZlYXR1cmVzIGxvZ2ljYWxseSBzdHJ1Y3R1cmVkCisgICAgICAgICAgICBvbiB0b3Agb2YgdGhlIGJhc2VsaW5lLgorICAgICAgICAgICAgVGhlIGZlYXR1cmVzIGFyZSB0YWdnZWQgYW5kIG9yZ2FuaXplZCBieSB3YXkgb2YgYSBicmFuY2hpbmcKKyAgICAgICAgICAgIHN0cmF0ZWd5IGltcGxlbWVudGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNpbmcgdGhlCisgICAgICAgICAgICBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIEdpdC4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IGlzIHRoZSBvYnZpb3VzIFNDTSBmb3IgbWVldGluZyB0aGUgWW9jdG8gTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBvcmdhbml6YXRpb25hbCBhbmQgc3RydWN0dXJhbCBnb2FscyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBvbmx5IGlzIEdpdCB0aGUgU0NNIGZvciBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gYnV0LCBHaXQgY29udGludWVzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdyBpbiBwb3B1bGFyaXR5IGFuZCBzdXBwb3J0cyBtYW55IGRpZmZlcmVudCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd3MsIGZyb250LWVuZHMgYW5kIG1hbmFnZW1lbnQgdGVjaG5pcXVlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgZG9jdW1lbnRhdGlvbiBvbiBHaXQgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBnZXQgYW4gaW50cm9kdWN0aW9uIHRvIEdpdCBhcyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllcyB0byB0aGUgWW9jdG8gUHJvamVjdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxhdHRlciByZWZlcmVuY2UgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCBhbmQgcHJlc2VudHMgYSBtaW5pbWFsIHNldCBvZiBHaXQgY29tbWFuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYWxsb3dzIHlvdSB0byBiZSBmdW5jdGlvbmFsIHVzaW5nIEdpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFzIG11Y2gsIG9yIGFzIGxpdHRsZSwgb2Ygd2hhdCBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcyB0byBvZmZlciB0byBhY2NvbXBsaXNoIHdoYXQgeW91IG5lZWQgZm9yIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYSAiR2l0IEV4cGVydCIgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBpdCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nYnJhbmNoaW5nLWFuZC13b3JrZmxvdyc+Ci0gICAgICAgICAgICA8dGl0bGU+QnJhbmNoaW5nIFN0cmF0ZWd5IGFuZCBXb3JrZmxvdzwvdGl0bGU+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGNyZWF0ZXMga2VybmVsIGJyYW5jaGVzIGF0IHBvaW50cyB3aGVyZSBmdW5jdGlvbmFsaXR5IGlzCi0gICAgICAgICAgICAgICAgbm8gbG9uZ2VyIHNoYXJlZCBhbmQgdGh1cywgbmVlZHMgdG8gYmUgaXNvbGF0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJvYXJkLXNwZWNpZmljIGluY29tcGF0aWJpbGl0aWVzIHdvdWxkIHJlcXVpcmUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkKLSAgICAgICAgICAgICAgICBhbmQgd291bGQgcmVxdWlyZSBhIGJyYW5jaCB0byBzZXBhcmF0ZSB0aGUgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgTGlrZXdpc2UsIGZvciBzcGVjaWZpYyBrZXJuZWwgZmVhdHVyZXMsIHRoZSBzYW1lIGJyYW5jaGluZyBzdHJhdGVneSBpcyB1c2VkLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBicmFuY2hpbmcgc3RyYXRlZ3kgcmVzdWx0cyBpbiBhIHRyZWUgdGhhdCBoYXMgZmVhdHVyZXMgb3JnYW5pemVkIHRvIGJlIHNwZWNpZmljCi0gICAgICAgICAgICAgICAgZm9yIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgc2luZ2xlIGtlcm5lbCB0eXBlcywgb3IgYSBzdWJzZXQgb2Yga2VybmVsIHR5cGVzLgotICAgICAgICAgICAgICAgIFRoaXMgc3RyYXRlZ3kgYWxzbyByZXN1bHRzIGluIG5vdCBoYXZpbmcgdG8gc3RvcmUgdGhlIHNhbWUgZmVhdHVyZSB0d2ljZQotICAgICAgICAgICAgICAgIGludGVybmFsbHkgaW4gdGhlIHRyZWUuCi0gICAgICAgICAgICAgICAgUmF0aGVyLCB0aGUga2VybmVsIHRlYW0gc3RvcmVzIHRoZSB1bmlxdWUgZGlmZmVyZW5jZXMgcmVxdWlyZWQgdG8gYXBwbHkgdGhlCi0gICAgICAgICAgICAgICAgZmVhdHVyZSBvbnRvIHRoZSBrZXJuZWwgdHlwZSBpbiBxdWVzdGlvbi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBzdHJpdmVzIHRvIHBsYWNlIGZlYXR1cmVzIGluIHRoZSB0cmVlIHN1Y2ggdGhhdCB0aGV5IGNhbiBiZQotICAgICAgICAgICAgICAgICAgICBzaGFyZWQgYnkgYWxsIGJvYXJkcyBhbmQga2VybmVsIHR5cGVzIHdoZXJlIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBkdXJpbmcgZGV2ZWxvcG1lbnQgY3ljbGVzIG9yIHdoZW4gbGFyZ2UgZmVhdHVyZXMgYXJlIG1lcmdlZCwKLSAgICAgICAgICAgICAgICAgICAgdGhlIHRlYW0gY2Fubm90IGFsd2F5cyBmb2xsb3cgdGhpcyBwcmFjdGljZS4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhvc2UgY2FzZXMsIHRoZSB0ZWFtIHVzZXMgaXNvbGF0ZWQgYnJhbmNoZXMgdG8gbWVyZ2UgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQlNQLXNwZWNpZmljIGNvZGUgYWRkaXRpb25zIGFyZSBoYW5kbGVkIGluIGEgc2ltaWxhciBtYW5uZXIgdG8ga2VybmVsLXNwZWNpZmljIGFkZGl0aW9ucy4KLSAgICAgICAgICAgICAgICBTb21lIEJTUHMgb25seSBtYWtlIHNlbnNlIGdpdmVuIGNlcnRhaW4ga2VybmVsIHR5cGVzLgotICAgICAgICAgICAgICAgIFNvLCBmb3IgdGhlc2UgdHlwZXMsIHRoZSB0ZWFtIGNyZWF0ZXMgYnJhbmNoZXMgb2ZmIHRoZSBlbmQgb2YgdGhhdCBrZXJuZWwgdHlwZSBmb3IgYWxsCi0gICAgICAgICAgICAgICAgb2YgdGhlIEJTUHMgdGhhdCBhcmUgc3VwcG9ydGVkIG9uIHRoYXQga2VybmVsIHR5cGUuCi0gICAgICAgICAgICAgICAgRnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIHRvb2xzIHRoYXQgY3JlYXRlIHRoZSBCU1AgYnJhbmNoLCB0aGUgQlNQIGlzIHJlYWxseSBubwotICAgICAgICAgICAgICAgIGRpZmZlcmVudCB0aGFuIGEgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBzYW1lIGJyYW5jaGluZyBzdHJhdGVneSBhcHBsaWVzIHRvIEJTUHMgYXMgaXQgZG9lcyB0byBmZWF0dXJlcy4KLSAgICAgICAgICAgICAgICBTbyBhZ2FpbiwgcmF0aGVyIHRoYW4gc3RvcmUgdGhlIEJTUCB0d2ljZSwgdGhlIHRlYW0gb25seSBzdG9yZXMgdGhlIHVuaXF1ZQotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VzIGZvciB0aGUgQlNQIGFjcm9zcyB0aGUgc3VwcG9ydGVkIG11bHRpcGxlIGtlcm5lbHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIHN0cmF0ZWd5IGNhbiByZXN1bHQgaW4gYSB0cmVlIHdpdGggYSBzaWduaWZpY2FudCBudW1iZXIgb2YgYnJhbmNoZXMsIGl0IGlzCi0gICAgICAgICAgICAgICAgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBmcm9tIHRoZSBkZXZlbG9wZXIncyBwb2ludCBvZiB2aWV3LCB0aGVyZSBpcyBhIGxpbmVhcgotICAgICAgICAgICAgICAgIHBhdGggdGhhdCB0cmF2ZWxzIGZyb20gdGhlIGJhc2VsaW5lIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4sIHRocm91Z2ggYSBzZWxlY3QKLSAgICAgICAgICAgICAgICBncm91cCBvZiBmZWF0dXJlcyBhbmQgZW5kcyB3aXRoIHRoZWlyIEJTUC1zcGVjaWZpYyBjb21taXRzLgotICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgZGl2aXNpb25zIG9mIHRoZSBrZXJuZWwgYXJlIHRyYW5zcGFyZW50IGFuZCBhcmUgbm90IHJlbGV2YW50Ci0gICAgICAgICAgICAgICAgdG8gdGhlIGRldmVsb3BlciBvbiBhIGRheS10by1kYXkgYmFzaXMuCi0gICAgICAgICAgICAgICAgRnJvbSB0aGUgZGV2ZWxvcGVyJ3MgcGVyc3BlY3RpdmUsIHRoaXMgcGF0aCBpcyB0aGUgIm1hc3RlciIgYnJhbmNoLgotICAgICAgICAgICAgICAgIFRoZSBkZXZlbG9wZXIgZG9lcyBub3QgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZXhpc3RlbmNlIG9mIGFueSBvdGhlciBicmFuY2hlcyBhdCBhbGwuCi0gICAgICAgICAgICAgICAgT2YgY291cnNlLCB0aGVyZSBpcyB2YWx1ZSBpbiB0aGUgZXhpc3RlbmNlIG9mIHRoZXNlIGJyYW5jaGVzCi0gICAgICAgICAgICAgICAgaW4gdGhlIHRyZWUsIHNob3VsZCBhIHBlcnNvbiBkZWNpZGUgdG8gZXhwbG9yZSB0aGVtLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gQlNQcyBhdCBlaXRoZXIgdGhlIGNvbW1pdCBsZXZlbCBvciBhdCB0aGUgbGluZS1ieS1saW5lCi0gICAgICAgICAgICAgICAgY29kZSA8ZmlsZW5hbWU+ZGlmZjwvZmlsZW5hbWU+IGxldmVsIGlzIG5vdyBhIHRyaXZpYWwgb3BlcmF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV29ya2luZyB3aXRoIHRoZSBrZXJuZWwgYXMgYSBzdHJ1Y3R1cmVkIHRyZWUgZm9sbG93cyByZWNvZ25pemVkIGNvbW11bml0eSBiZXN0IHByYWN0aWNlcy4KLSAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUga2VybmVsIGFzIHNoaXBwZWQgd2l0aCB0aGUgcHJvZHVjdCwgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgY29uc2lkZXJlZCBhbiAidXBzdHJlYW0gc291cmNlIiBhbmQgdmlld2VkIGFzIGEgc2VyaWVzIG9mCi0gICAgICAgICAgICAgICAgaGlzdG9yaWNhbCBhbmQgZG9jdW1lbnRlZCBtb2RpZmljYXRpb25zIChjb21taXRzKS4KLSAgICAgICAgICAgICAgICBUaGVzZSBtb2RpZmljYXRpb25zIHJlcHJlc2VudCB0aGUgZGV2ZWxvcG1lbnQgYW5kIHN0YWJpbGl6YXRpb24gZG9uZQotICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBkZXZlbG9wbWVudCB0ZWFtLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQmVjYXVzZSBjb21taXRzIG9ubHkgY2hhbmdlIGF0IHNpZ25pZmljYW50IHJlbGVhc2UgcG9pbnRzIGluIHRoZSBwcm9kdWN0IGxpZmUgY3ljbGUsCi0gICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gd29yayBvbiBhIGJyYW5jaCBjcmVhdGVkCi0gICAgICAgICAgICAgICAgZnJvbSB0aGUgbGFzdCByZWxldmFudCBjb21taXQgaW4gdGhlIHNoaXBwZWQgWW9jdG8gUHJvamVjdCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIHByZXZpb3VzbHksIHRoZSBzdHJ1Y3R1cmUgaXMgdHJhbnNwYXJlbnQgdG8gdGhlIGRldmVsb3BlcgotICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlIGtlcm5lbCB0cmVlIGlzIGxlZnQgaW4gdGhpcyBzdGF0ZSBhZnRlciBjbG9uaW5nIGFuZCBidWlsZGluZyB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNpbmcgR2l0J3MgdGFnZ2luZyBhbmQgYnJhbmNoaW5nIGZlYXR1cmVzLCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgdGVhbSBjcmVhdGVzIGtlcm5lbCBicmFuY2hlcyBhdCBwb2ludHMgd2hlcmUgZnVuY3Rpb25hbGl0eSBpcworICAgICAgICAgICAgbm8gbG9uZ2VyIHNoYXJlZCBhbmQgdGh1cywgbmVlZHMgdG8gYmUgaXNvbGF0ZWQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYm9hcmQtc3BlY2lmaWMgaW5jb21wYXRpYmlsaXRpZXMgd291bGQgcmVxdWlyZQorICAgICAgICAgICAgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgYW5kIHdvdWxkIHJlcXVpcmUgYSBicmFuY2ggdG8KKyAgICAgICAgICAgIHNlcGFyYXRlIHRoZSBmZWF0dXJlcy4KKyAgICAgICAgICAgIExpa2V3aXNlLCBmb3Igc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzLCB0aGUgc2FtZSBicmFuY2hpbmcKKyAgICAgICAgICAgIHN0cmF0ZWd5IGlzIHVzZWQuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLWNvZGUtbWFuYWdlci1naXQnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBDb2RlIE1hbmFnZXIgLSBHaXQ8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIFNvdXJjZSBDb2RlIE1hbmFnZXIgKFNDTSkgaXMgR2l0LgotICAgICAgICAgICAgICAgIFRoaXMgU0NNIGlzIHRoZSBvYnZpb3VzIG1lY2hhbmlzbSBmb3IgbWVldGluZyB0aGUgcHJldmlvdXNseSBtZW50aW9uZWQgZ29hbHMuCi0gICAgICAgICAgICAgICAgTm90IG9ubHkgaXMgaXQgdGhlIFNDTSBmb3IgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiBidXQsCi0gICAgICAgICAgICAgICAgR2l0IGNvbnRpbnVlcyB0byBncm93IGluIHBvcHVsYXJpdHkgYW5kIHN1cHBvcnRzIG1hbnkgZGlmZmVyZW50IHdvcmsgZmxvd3MsCi0gICAgICAgICAgICAgICAgZnJvbnQtZW5kcyBhbmQgbWFuYWdlbWVudCB0ZWNobmlxdWVzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGRvY3VtZW50YXRpb24gb24gR2l0IGF0IDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZ2V0IGFuIGludHJvZHVjdGlvbiB0byBHaXQgYXMgaXQgYXBwbGllcyB0byB0aGUgWW9jdG8gUHJvamVjdCBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgICAgICAgICBUaGVzZSByZWZlcmVuY2VkIHNlY3Rpb25zIG92ZXJ2aWV3IEdpdCBhbmQgZGVzY3JpYmUgYSBtaW5pbWFsIHNldCBvZgotICAgICAgICAgICAgICAgIGNvbW1hbmRzIHRoYXQgYWxsb3dzIHlvdSB0byBiZSBmdW5jdGlvbmFsIHVzaW5nIEdpdC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYXMgbXVjaCwgb3IgYXMgbGl0dGxlLCBvZiB3aGF0IEdpdCBoYXMgdG8gb2ZmZXIgdG8gYWNjb21wbGlzaCB3aGF0Ci0gICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIGZvciB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgaGF2ZSB0byBiZSBhICJHaXQgTWFzdGVyIiBpbiBvcmRlciB0byB1c2UgaXQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzICJ0cmVlLWxpa2UiIGFyY2hpdGVjdHVyZSByZXN1bHRzIGluIGEgc3RydWN0dXJlIHRoYXQgaGFzCisgICAgICAgICAgICBmZWF0dXJlcyBvcmdhbml6ZWQgdG8gYmUgc3BlY2lmaWMgZm9yIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwKKyAgICAgICAgICAgIHNpbmdsZSBrZXJuZWwgdHlwZXMsIG9yIGEgc3Vic2V0IG9mIGtlcm5lbCB0eXBlcy4KKyAgICAgICAgICAgIFRodXMsIHRoZSB1c2VyIGhhcyB0aGUgYWJpbGl0eSB0byBzZWUgdGhlIGFkZGVkIGZlYXR1cmVzIGFuZCB0aGUKKyAgICAgICAgICAgIGNvbW1pdHMgdGhhdCBtYWtlIHVwIHRob3NlIGZlYXR1cmVzLgorICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYmVpbmcgYWJsZSB0byBzZWUgYWRkZWQgZmVhdHVyZXMsIHRoZSB1c2VyCisgICAgICAgICAgICBjYW4gYWxzbyB2aWV3IHRoZSBoaXN0b3J5IG9mIHdoYXQgbWFkZSB1cCB0aGUgYmFzZWxpbmUKKyAgICAgICAgICAgIExpbnV4IGtlcm5lbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQW5vdGhlciBjb25zZXF1ZW5jZSBvZiB0aGlzIHN0cmF0ZWd5IHJlc3VsdHMgaW4gbm90IGhhdmluZyB0bworICAgICAgICAgICAgc3RvcmUgdGhlIHNhbWUgZmVhdHVyZSB0d2ljZSBpbnRlcm5hbGx5IGluIHRoZSB0cmVlLgorICAgICAgICAgICAgUmF0aGVyLCB0aGUga2VybmVsIHRlYW0gc3RvcmVzIHRoZSB1bmlxdWUgZGlmZmVyZW5jZXMgcmVxdWlyZWQKKyAgICAgICAgICAgIHRvIGFwcGx5IHRoZSBmZWF0dXJlIG9udG8gdGhlIGtlcm5lbCB0eXBlIGluIHF1ZXN0aW9uLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBzdHJpdmVzIHRvIHBsYWNlIGZlYXR1cmVzIGluIHRoZSB0cmVlCisgICAgICAgICAgICAgICAgc3VjaCB0aGF0IGZlYXR1cmVzIGNhbiBiZSBzaGFyZWQgYnkgYWxsIGJvYXJkcyBhbmQga2VybmVsCisgICAgICAgICAgICAgICAgdHlwZXMgd2hlcmUgcG9zc2libGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgZHVyaW5nIGRldmVsb3BtZW50IGN5Y2xlcyBvciB3aGVuIGxhcmdlIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgYXJlIG1lcmdlZCwgdGhlIHRlYW0gY2Fubm90IGFsd2F5cyBmb2xsb3cgdGhpcyBwcmFjdGljZS4KKyAgICAgICAgICAgICAgICBJbiB0aG9zZSBjYXNlcywgdGhlIHRlYW0gdXNlcyBpc29sYXRlZCBicmFuY2hlcyB0byBtZXJnZQorICAgICAgICAgICAgICAgIGZlYXR1cmVzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCU1Atc3BlY2lmaWMgY29kZSBhZGRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gYSBzaW1pbGFyIG1hbm5lciB0bworICAgICAgICAgICAga2VybmVsLXNwZWNpZmljIGFkZGl0aW9ucy4KKyAgICAgICAgICAgIFNvbWUgQlNQcyBvbmx5IG1ha2Ugc2Vuc2UgZ2l2ZW4gY2VydGFpbiBrZXJuZWwgdHlwZXMuCisgICAgICAgICAgICBTbywgZm9yIHRoZXNlIHR5cGVzLCB0aGUgdGVhbSBjcmVhdGVzIGJyYW5jaGVzIG9mZiB0aGUgZW5kCisgICAgICAgICAgICBvZiB0aGF0IGtlcm5lbCB0eXBlIGZvciBhbGwgb2YgdGhlIEJTUHMgdGhhdCBhcmUgc3VwcG9ydGVkIG9uCisgICAgICAgICAgICB0aGF0IGtlcm5lbCB0eXBlLgorICAgICAgICAgICAgRnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIHRvb2xzIHRoYXQgY3JlYXRlIHRoZSBCU1AgYnJhbmNoLAorICAgICAgICAgICAgdGhlIEJTUCBpcyByZWFsbHkgbm8gZGlmZmVyZW50IHRoYW4gYSBmZWF0dXJlLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgc2FtZSBicmFuY2hpbmcgc3RyYXRlZ3kgYXBwbGllcyB0byBCU1BzIGFzCisgICAgICAgICAgICBpdCBkb2VzIHRvIGtlcm5lbCBmZWF0dXJlcy4KKyAgICAgICAgICAgIFNvIGFnYWluLCByYXRoZXIgdGhhbiBzdG9yZSB0aGUgQlNQIHR3aWNlLCB0aGUgdGVhbSBvbmx5CisgICAgICAgICAgICBzdG9yZXMgdGhlIHVuaXF1ZSBkaWZmZXJlbmNlcyBmb3IgdGhlIEJTUCBhY3Jvc3MgdGhlIHN1cHBvcnRlZAorICAgICAgICAgICAgbXVsdGlwbGUga2VybmVscy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hpbGUgdGhpcyBzdHJhdGVneSBjYW4gcmVzdWx0IGluIGEgdHJlZSB3aXRoIGEgc2lnbmlmaWNhbnQgbnVtYmVyCisgICAgICAgICAgICBvZiBicmFuY2hlcywgaXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBmcm9tIHRoZSBkZXZlbG9wZXIncworICAgICAgICAgICAgcG9pbnQgb2YgdmlldywgdGhlcmUgaXMgYSBsaW5lYXIgcGF0aCB0aGF0IHRyYXZlbHMgZnJvbSB0aGUKKyAgICAgICAgICAgIGJhc2VsaW5lIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4sIHRocm91Z2ggYSBzZWxlY3QKKyAgICAgICAgICAgIGdyb3VwIG9mIGZlYXR1cmVzIGFuZCBlbmRzIHdpdGggdGhlaXIgQlNQLXNwZWNpZmljIGNvbW1pdHMuCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIGRpdmlzaW9ucyBvZiB0aGUga2VybmVsIGFyZSB0cmFuc3BhcmVudCBhbmQKKyAgICAgICAgICAgIGFyZSBub3QgcmVsZXZhbnQgdG8gdGhlIGRldmVsb3BlciBvbiBhIGRheS10by1kYXkgYmFzaXMuCisgICAgICAgICAgICBGcm9tIHRoZSBkZXZlbG9wZXIncyBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRoIGlzIHRoZSAibWFzdGVyIiBicmFuY2gKKyAgICAgICAgICAgIGluIEdpdCB0ZXJtcy4KKyAgICAgICAgICAgIFRoZSBkZXZlbG9wZXIgZG9lcyBub3QgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZXhpc3RlbmNlIG9mIGFueQorICAgICAgICAgICAgb3RoZXIgYnJhbmNoZXMgYXQgYWxsLgorICAgICAgICAgICAgT2YgY291cnNlLCB2YWx1ZSBleGlzdHMgaW4gdGhlIGhhdmluZyB0aGVzZSBicmFuY2hlcyBpbiB0aGUgdHJlZSwKKyAgICAgICAgICAgIHNob3VsZCBhIHBlcnNvbiBkZWNpZGUgdG8gZXhwbG9yZSB0aGVtLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byBCU1BzIGF0IGVpdGhlciB0aGUgY29tbWl0CisgICAgICAgICAgICBsZXZlbCBvciBhdCB0aGUgbGluZS1ieS1saW5lIGNvZGUgPGZpbGVuYW1lPmRpZmY8L2ZpbGVuYW1lPiBsZXZlbAorICAgICAgICAgICAgaXMgbm93IGEgdHJpdmlhbCBvcGVyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIHNob3dzIHRoZSBjb25jZXB0dWFsIFlvY3RvCisgICAgICAgICAgICBMaW51eCBrZXJuZWwuCisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsLWFyY2hpdGVjdHVyZS1vdmVydmlldy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlPSIxMDAiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoZSBpbGx1c3RyYXRpb24sIHRoZSAiS2VybmVsLm9yZyBCcmFuY2ggUG9pbnQiIG1hcmtzIHRoZQorICAgICAgICAgICAgc3BlY2lmaWMgc3BvdCAob3IgTGludXgga2VybmVsIHJlbGVhc2UpIGZyb20gd2hpY2ggdGhlCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgaXMgY3JlYXRlZC4KKyAgICAgICAgICAgIEZyb20gdGhpcyBwb2ludCBmb3J3YXJkIGluIHRoZSB0cmVlLCBmZWF0dXJlcyBhbmQgZGlmZmVyZW5jZXMKKyAgICAgICAgICAgIGFyZSBvcmdhbml6ZWQgYW5kIHRhZ2dlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlICJZb2N0byBQcm9qZWN0IEJhc2VsaW5lIEtlcm5lbCIgY29udGFpbnMgZnVuY3Rpb25hbGl0eSB0aGF0CisgICAgICAgICAgICBpcyBjb21tb24gdG8gZXZlcnkga2VybmVsIHR5cGUgYW5kIEJTUCB0aGF0IGlzIG9yZ2FuaXplZAorICAgICAgICAgICAgZnVydGhlciBhbG9uZyBpbiB0aGUgdHJlZS4KKyAgICAgICAgICAgIFBsYWNpbmcgdGhlc2UgY29tbW9uIGZlYXR1cmVzIGluIHRoZSB0cmVlIHRoaXMgd2F5IG1lYW5zCisgICAgICAgICAgICBmZWF0dXJlcyBkbyBub3QgaGF2ZSB0byBiZSBkdXBsaWNhdGVkIGFsb25nIGluZGl2aWR1YWwKKyAgICAgICAgICAgIGJyYW5jaGVzIG9mIHRoZSB0cmVlIHN0cnVjdHVyZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRnJvbSB0aGUgIllvY3RvIFByb2plY3QgQmFzZWxpbmUgS2VybmVsIiwgYnJhbmNoIHBvaW50cyByZXByZXNlbnQKKyAgICAgICAgICAgIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGluZGl2aWR1YWwgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcworICAgICAgICAgICAgKEJTUHMpIGFzIHdlbGwgYXMgcmVhbC10aW1lIGtlcm5lbHMuCisgICAgICAgICAgICBUaGUgaWxsdXN0cmF0aW9uIHJlcHJlc2VudHMgdGhpcyB0aHJvdWdoIHRocmVlIEJTUC1zcGVjaWZpYworICAgICAgICAgICAgYnJhbmNoZXMgYW5kIGEgcmVhbC10aW1lIGtlcm5lbCBicmFuY2guCisgICAgICAgICAgICBFYWNoIGJyYW5jaCByZXByZXNlbnRzIHNvbWUgdW5pcXVlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBCU1AKKyAgICAgICAgICAgIG9yIGZvciBhIHJlYWwtdGltZSBZb2N0byBMaW51eCBrZXJuZWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSBzdHJ1Y3R1cmUsIHRoZSAiUmVhbC10aW1lIChydCkgS2VybmVsIiBicmFuY2ggaGFzCisgICAgICAgICAgICBjb21tb24gZmVhdHVyZXMgZm9yIGFsbCByZWFsLXRpbWUgWW9jdG8gTGludXgga2VybmVscyBhbmQKKyAgICAgICAgICAgIGNvbnRhaW5zIG1vcmUgYnJhbmNoZXMgZm9yIGluZGl2aWR1YWwgQlNQLXNwZWNpZmljIHJlYWwtdGltZQorICAgICAgICAgICAga2VybmVscy4KKyAgICAgICAgICAgIFRoZSBpbGx1c3RyYXRpb24gc2hvd3MgdGhyZWUgYnJhbmNoZXMgYXMgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgIEVhY2ggYnJhbmNoIHBvaW50cyB0aGUgd2F5IHRvIHNwZWNpZmljLCB1bmlxdWUgZmVhdHVyZXMgZm9yIGEKKyAgICAgICAgICAgIHJlc3BlY3RpdmUgcmVhbC10aW1lIGtlcm5lbCBhcyB0aGV5IGFwcGx5IHRvIGEgZ2l2ZW4gQlNQLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIHRyZWUgc3RydWN0dXJlIHByZXNlbnRzIGEgY2xlYXIgcGF0aCBvZiBtYXJrZXJzCisgICAgICAgICAgICAob3IgYnJhbmNoZXMpIHRvIHRoZSBkZXZlbG9wZXIgdGhhdCwgZm9yIGFsbCBwcmFjdGljYWwKKyAgICAgICAgICAgIHB1cnBvc2VzLCBpcyB0aGUgWW9jdG8gTGludXgga2VybmVsIG5lZWRlZCBmb3IgYW55IGdpdmVuIHNldCBvZgorICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgS2VlcCBpbiBtaW5kIHRoZSBmaWd1cmUgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgYWxsIHRoZQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBZb2N0byBMaW51eCBrZXJuZWxzLCBidXQgcmF0aGVyIHNob3dzIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgZ2VuZXJpYyBrZXJuZWwganVzdCBmb3IgY29uY2VwdHVhbCBwdXJwb3Nlcy4KKyAgICAgICAgICAgICAgICBBbHNvIGtlZXAgaW4gbWluZCB0aGF0IHRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgYXJlIGVpdGhlciBwdWxsZWQgZnJvbSBkdXJpbmcgdGhlIGJ1aWxkIG9yIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIHByaW9yIHRvIHRoZSBidWlsZCBieSBlaXRoZXIKKyAgICAgICAgICAgICAgICBjbG9uaW5nIGEgcGFydGljdWxhciBrZXJuZWwncyBHaXQgcmVwb3NpdG9yeSBvciBieQorICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcgYSB0YXJiYWxsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXb3JraW5nIHdpdGggdGhlIGtlcm5lbCBhcyBhIHN0cnVjdHVyZWQgdHJlZSBmb2xsb3dzIHJlY29nbml6ZWQKKyAgICAgICAgICAgIGNvbW11bml0eSBiZXN0IHByYWN0aWNlcy4KKyAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBrZXJuZWwgYXMgc2hpcHBlZCB3aXRoIHRoZSBwcm9kdWN0LCBzaG91bGQgYmUKKyAgICAgICAgICAgIGNvbnNpZGVyZWQgYW4gInVwc3RyZWFtIHNvdXJjZSIgYW5kIHZpZXdlZCBhcyBhIHNlcmllcyBvZgorICAgICAgICAgICAgaGlzdG9yaWNhbCBhbmQgZG9jdW1lbnRlZCBtb2RpZmljYXRpb25zIChjb21taXRzKS4KKyAgICAgICAgICAgIFRoZXNlIG1vZGlmaWNhdGlvbnMgcmVwcmVzZW50IHRoZSBkZXZlbG9wbWVudCBhbmQgc3RhYmlsaXphdGlvbgorICAgICAgICAgICAgZG9uZSBieSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgZGV2ZWxvcG1lbnQgdGVhbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSBjb21taXRzIG9ubHkgY2hhbmdlIGF0IHNpZ25pZmljYW50IHJlbGVhc2UgcG9pbnRzIGluIHRoZQorICAgICAgICAgICAgcHJvZHVjdCBsaWZlIGN5Y2xlLCBkZXZlbG9wZXJzIGNhbiB3b3JrIG9uIGEgYnJhbmNoIGNyZWF0ZWQKKyAgICAgICAgICAgIGZyb20gdGhlIGxhc3QgcmVsZXZhbnQgY29tbWl0IGluIHRoZSBzaGlwcGVkIFlvY3RvIFByb2plY3QgTGludXgKKyAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5LCB0aGUgc3RydWN0dXJlIGlzIHRyYW5zcGFyZW50IHRvIHRoZQorICAgICAgICAgICAgZGV2ZWxvcGVyIGJlY2F1c2UgdGhlIGtlcm5lbCB0cmVlIGlzIGxlZnQgaW4gdGhpcyBzdGF0ZSBhZnRlcgorICAgICAgICAgICAgY2xvbmluZyBhbmQgYnVpbGRpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtYnVpbGQtZmlsZS1oaWVyYXJjaHknPgorICAgICAgICA8dGl0bGU+S2VybmVsIEJ1aWxkIEZpbGUgSGllcmFyY2h5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVwc3RyZWFtIHN0b3JhZ2Ugb2YgYWxsIHRoZSBhdmFpbGFibGUga2VybmVsIHNvdXJjZSBjb2RlIGlzCisgICAgICAgICAgICBvbmUgdGhpbmcsIHdoaWxlIHJlcHJlc2VudGluZyBhbmQgdXNpbmcgdGhlIGNvZGUgb24geW91ciBob3N0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYW5vdGhlci4KKyAgICAgICAgICAgIENvbmNlcHR1YWxseSwgeW91IGNhbiB0aGluayBvZiB0aGUga2VybmVsIHNvdXJjZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgIGFzIGFsbCB0aGUgc291cmNlIGZpbGVzIG5lY2Vzc2FyeSBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQKKyAgICAgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbHMuCisgICAgICAgICAgICBBcyBhIGRldmVsb3BlciwgeW91IGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gdGhlIHNvdXJjZSBmaWxlcworICAgICAgICAgICAgZm9yIHRoZSBrZXJuZWwgb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgQW5kLCBmdXJ0aGVybW9yZSwgeW91IG5lZWQgdGhlbSBhdmFpbGFibGUgb24geW91ciBob3N0IHN5c3RlbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgS2VybmVsIHNvdXJjZSBjb2RlIGlzIGF2YWlsYWJsZSBvbiB5b3VyIGhvc3Qgc3lzdGVtIHNldmVyYWwKKyAgICAgICAgICAgIGRpZmZlcmVudCB3YXlzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaWxlcyBBY2Nlc3NlZCBXaGlsZSB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHdoaWNoIGlzIGF2YWlsYWJsZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBieSB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICBtb2RpZnkgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+S2VybmVsIE1vZGlmaWNhdGlvbiBXb3JrZmxvdzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lZCBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBpbiB0aGUga2VybmVsIGFsbCB0aGUgdGltZSwgeW91IHByb2JhYmx5CisgICAgICAgICAgICAgICAgICAgIHdvdWxkIHdhbnQgdG8gc2V0IHVwIHlvdXIgb3duIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjbG9uZSBhIFlvY3RvIExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0LXRvLXdvcmstb24tdGhlLWtlcm5lbCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlbXBvcmFyeSBTb3VyY2UgRmlsZXMgZnJvbSBhIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBqdXN0IG5lZWQgdG8gbWFrZSBzb21lIHBhdGNoZXMgdG8gdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgICAgICAgICBhIHRyYWRpdGlvbmFsIEJpdEJha2Ugd29ya2Zsb3cgKGkuZS4gbm90IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+KSwgeW91IGNhbiBhY2Nlc3MgdGVtcG9yYXJ5CisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBzb3VyY2UgZmlsZXMgdGhhdCB3ZXJlIGV4dHJhY3RlZCBhbmQgdXNlZCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBrZXJuZWwgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSB0ZW1wb3Jhcnkga2VybmVsIHNvdXJjZSBmaWxlcyByZXN1bHRpbmcgZnJvbSBhIGJ1aWxkIHVzaW5nCisgICAgICAgICAgICBCaXRCYWtlIGhhdmUgYSBwYXJ0aWN1bGFyIGhpZXJhcmNoeS4KKyAgICAgICAgICAgIFdoZW4geW91IGJ1aWxkIHRoZSBrZXJuZWwgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0sIGFsbCBmaWxlcworICAgICAgICAgICAgbmVlZGVkIGZvciB0aGUgYnVpbGQgYXJlIHRha2VuIGZyb20gdGhlIHNvdXJjZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBhbmQgZ2F0aGVyZWQgaW4gYSB0ZW1wb3Jhcnkgd29yayBhcmVhIHdoZXJlIHRoZXkgYXJlCisgICAgICAgICAgICBzdWJzZXF1ZW50bHkgdXNlZCB0byBjcmVhdGUgdGhlIHVuaXF1ZSBrZXJuZWwuCisgICAgICAgICAgICBUaHVzLCBpbiBhIHNlbnNlLCB0aGUgcHJvY2VzcyBjb25zdHJ1Y3RzIGEgbG9jYWwgc291cmNlIHRyZWUKKyAgICAgICAgICAgIHNwZWNpZmljIHRvIHlvdXIga2VybmVsIGZyb20gd2hpY2ggdG8gZ2VuZXJhdGUgdGhlIG5ldyBrZXJuZWwKKyAgICAgICAgICAgIGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyB0aGUgdGVtcG9yYXJ5IGZpbGUgc3RydWN0dXJlCisgICAgICAgICAgICBjcmVhdGVkIG9uIHlvdXIgaG9zdCBzeXN0ZW0gd2hlbiB5b3UgYnVpbGQgdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgQml0YmFrZS4KKyAgICAgICAgICAgIFRoaXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGNvbnRhaW5zIGFsbCB0aGUgc291cmNlIGZpbGVzIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyIKKyAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZ2FpbiwgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsJ3MKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgaXRzIGJyYW5jaGluZyBzdHJhdGVneSwgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lvY3RvLWxpbnV4LWtlcm5lbC1hcmNoaXRlY3R1cmUtYW5kLWJyYW5jaGluZy1zdHJhdGVnaWVzJz5Zb2N0byBMaW51eCBLZXJuZWwgQXJjaGl0ZWN0dXJlIGFuZCBCcmFuY2hpbmcgU3RyYXRlZ2llczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGRldGFpbGVkIGV4YW1wbGUgdGhhdCBtb2RpZmllcyB0aGUga2VybmVsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldGVybWluaW5nLWhhcmR3YXJlLWFuZC1ub24taGFyZHdhcmUtZmVhdHVyZXMtZm9yLXRoZS1rZXJuZWwtY29uZmlndXJhdGlvbi1hdWRpdC1waGFzZSc+CisgICAgICAgIDx0aXRsZT5EZXRlcm1pbmluZyBIYXJkd2FyZSBhbmQgTm9uLUhhcmR3YXJlIEZlYXR1cmVzIGZvciB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gQXVkaXQgUGhhc2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhdWRpdAorICAgICAgICAgICAgcGhhc2UgdGhhdCBtb3N0IGRldmVsb3BlcnMgY2FuIGlnbm9yZS4KKyAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uIGluY2x1ZGluZworICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlcywgYW5kIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Q29uZmlndXJpbmcgdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdXJpbmcgdGhpcyBwYXJ0IG9mIHRoZSBhdWRpdCBwaGFzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaW5hbAorICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgZnJhZ21lbnRzIHNwZWNpZmllZCBieSB0aGUgc3lzdGVtLgorICAgICAgICAgICAgVGhlc2UgZnJhZ21lbnRzIGNhbiBiZSBzeXN0ZW0gZnJhZ21lbnRzLCBkaXN0cm8gZnJhZ21lbnRzLAorICAgICAgICAgICAgb3IgdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbiBlbGVtZW50cy4KKyAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlaXIgb3JpZ2luLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgd2FybnMgdGhlIHVzZXIgaWYgYSBzcGVjaWZpYyBvcHRpb24gaXMgbm90IGluY2x1ZGVkIGluIHRoZQorICAgICAgICAgICAgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGluIG9yZGVyIHRvIG5vdCBvdmVyd2hlbG0gdGhlIHVzZXIgd2l0aAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiB3YXJuaW5ncywgdGhlIHN5c3RlbSBvbmx5IHJlcG9ydHMgbWlzc2luZworICAgICAgICAgICAgImhhcmR3YXJlIiBvcHRpb25zIGFzIHRoZXkgY291bGQgcmVzdWx0IGluIGEgYm9vdAorICAgICAgICAgICAgZmFpbHVyZSBvciBpbmRpY2F0ZSB0aGF0IGltcG9ydGFudCBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiBvcHRpb24gaXMgImhhcmR3YXJlIiBvcgorICAgICAgICAgICAgIm5vbi1oYXJkd2FyZSIsIHRoZSBrZXJuZWwgTWV0YWRhdGEgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBjb250YWlucyBmaWxlcyB0aGF0CisgICAgICAgICAgICBjbGFzc2lmeSBpbmRpdmlkdWFsIG9yIGdyb3VwcyBvZiBvcHRpb25zIGFzIGVpdGhlciBoYXJkd2FyZQorICAgICAgICAgICAgb3Igbm9uLWhhcmR3YXJlLgorICAgICAgICAgICAgVG8gYmV0dGVyIHNob3cgdGhpcywgY29uc2lkZXIgYSBzaXR1YXRpb24gd2hlcmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9kcm0tcHNiL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMva2dkYi9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTMyL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2ZzbC1tcGM4MzE1ZS1yZGIvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11YXJtYTkvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhNjQvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvYXJtLXZlcnNhdGlsZS05MjZlanMvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvY29tbW9uLXBjL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2NvbW1vbi1wYy02NC9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2ZlYXR1cmVzL3Jma2lsbC9ub24taGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9rdHlwZXMvYmFzZS9ub24taGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9hdWZzL25vbi1oYXJkd2FyZS5rY2YKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2ZlYXR1cmVzL29jZi9ub24taGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9rdHlwZXMvYmFzZS9ub24taGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9rdHlwZXMvYmFzZS9oYXJkd2FyZS5rY2YKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11LXBwYzMyL2hhcmR3YXJlLmtjZgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByb3ZpZGVzIGV4cGxhbmF0aW9ucyBmb3IgdGhlIHZhcmlvdXMKKyAgICAgICAgICAgIGZpbGVzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwgS2NvbmZpZyBmaWxlcyB0aGF0IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgb3B0aW9ucyBvbmx5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub24taGFyZHdhcmUua2NmPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIEtjb25maWcgZmlsZXMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIG5vbi1oYXJkd2FyZSBvcHRpb25zIG9ubHkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCA8ZmlsZW5hbWU+Q09ORklHXzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgdGhhdCBhcmUgaGFyZHdhcmUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAgICAgICAgICAgICAgICAgdGhleSBhcmUgd2l0aGluIGEgS2NvbmZpZyBmaWxlIHNwZWNpZmllZCBieSBhIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgIG9yIG5vbi1oYXJkd2FyZSBLY29uZmlnIGZpbGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub24taGFyZHdhcmUua2NmPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub24taGFyZHdhcmUuY2ZnPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIDxmaWxlbmFtZT5DT05GSUdfPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB0aGF0IGFyZSBub3QgaGFyZHdhcmUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgorICAgICAgICAgICAgICAgICAgICBub3QgdGhleSBhcmUgd2l0aGluIGEgS2NvbmZpZyBmaWxlIHNwZWNpZmllZCBieSBhCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9yIG5vbi1oYXJkd2FyZSBLY29uZmlnIGZpbGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub24taGFyZHdhcmUua2NmPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgSGVyZSBpcyBhIHNwZWNpZmljIGV4YW1wbGUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGEzMi9oYXJkd2FyZS5jZmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09ORklHX1NFUklBTF84MjUwCisgICAgIENPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFCisgICAgIENPTkZJR19TRVJJQUxfODI1MF9OUl9VQVJUUworICAgICBDT05GSUdfU0VSSUFMXzgyNTBfUENJCisgICAgIENPTkZJR19TRVJJQUxfQ09SRQorICAgICBDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRQorICAgICBDT05GSUdfVkdBX0FSQgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGF1ZGl0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB0aGVzZQorICAgICAgICAgICAgZmlsZXMgKGhlbmNlIHRoZSBuYW1lcyBtdXN0IGJlIGV4YWN0bHkgdGhlIG9uZXMgZGlzY3Vzc2VkIGhlcmUpLAorICAgICAgICAgICAgYW5kIHVzZXMgdGhlbSBhcyBpbnB1dHMgd2hlbiBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHRoZQorICAgICAgICAgICAgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIHVzZXItc3BlY2lmaWVkIGtlcm5lbCBNZXRhZGF0YSByZXBvc2l0b3J5LCBvciByZWNpcGUgc3BhY2UKKyAgICAgICAgICAgIGZlYXR1cmUsIGNhbiB1c2UgdGhlc2Ugc2FtZSBmaWxlcyB0byBjbGFzc2lmeSBvcHRpb25zIHRoYXQgYXJlCisgICAgICAgICAgICBmb3VuZCB3aXRoaW4gaXRzIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4gZmlsZXMgYXMgaGFyZHdhcmUKKyAgICAgICAgICAgIG9yIG5vbi1oYXJkd2FyZSwgdG8gcHJldmVudCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBmcm9tCisgICAgICAgICAgICBwcm9kdWNpbmcgYW4gZXJyb3Igb3Igd2FybmluZyB3aGVuIGFuIG9wdGlvbiBpcyBub3QgaW4gdGhlCisgICAgICAgICAgICBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L2FwcGVuZGl4PgogPCEtLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWV4YW1wbGVzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1leGFtcGxlcy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOWFlZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWV4YW1wbGVzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkxOCArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0na2VybmVsLWhvdy10byc+Ci0KLTx0aXRsZT5Xb3JraW5nIHdpdGggdGhlIFlvY3RvIFByb2plY3QgS2VybmVsPC90aXRsZT4KLQotCi08c2VjdGlvbiBpZD0nYWN0aW9ucy1vcmcnPgotICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgotICAgIDxwYXJhPgotICAgICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byBhY2NvbXBsaXNoIHRhc2tzIGludm9sdmluZyBhIGtlcm5lbCdzIHRyZWUgc3RydWN0dXJlLgotICAgICAgICBUaGUgaW5mb3JtYXRpb24gaXMgZGVzaWduZWQgdG8gaGVscCB0aGUgZGV2ZWxvcGVyIHRoYXQgd2FudHMgdG8gbW9kaWZ5IHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGtlcm5lbCBhbmQgY29udHJpYnV0ZSBjaGFuZ2VzIHVwc3RyZWFtIHRvIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGUgaW5mb3JtYXRpb24gY292ZXJzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VHJlZSBjb25zdHJ1Y3Rpb248L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CdWlsZCBzdHJhdGVnaWVzPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V29ya2Zsb3cgZXhhbXBsZXM8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3RyZWUtY29uc3RydWN0aW9uJz4KLSAgICAgICAgPHRpdGxlPlRyZWUgQ29uc3RydWN0aW9uPC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNvbnN0cnVjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIHJlcG9zaXRvcmllcwotICAgICAgICAgICAgYXMgYWNjb21wbGlzaGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdG8gY3JlYXRlIGtlcm5lbCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICBUaGVzZSBrZXJuZWwgcmVwb3NpdG9yaWVzIGFyZSBmb3VuZCB1bmRlciB0aGUgaGVhZGluZyAiWW9jdG8gTGludXggS2VybmVsIiBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz4mWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2k8L3VsaW5rPgotICAgICAgICAgICAgYW5kIGNhbiBiZSBzaGlwcGVkIGFzIHBhcnQgb2YgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICBUaGUgdGVhbSBjcmVhdGVzIHRoZXNlIHJlcG9zaXRvcmllcyBieQotICAgICAgICAgICAgY29tcGlsaW5nIGFuZCBleGVjdXRpbmcgdGhlIHNldCBvZiBmZWF0dXJlIGRlc2NyaXB0aW9ucyBmb3IgZXZlcnkgQlNQL2ZlYXR1cmUKLSAgICAgICAgICAgIGluIHRoZSBwcm9kdWN0LgotICAgICAgICAgICAgVGhvc2UgZmVhdHVyZSBkZXNjcmlwdGlvbnMgbGlzdCBhbGwgbmVjZXNzYXJ5IHBhdGNoZXMsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLCBicmFuY2hpbmcsIHRhZ2dpbmcgYW5kIGZlYXR1cmUgZGl2aXNpb25zIGZvdW5kIGluIGEga2VybmVsLgotICAgICAgICAgICAgVGh1cywgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHJlcG9zaXRvcnkgKG9yIHRyZWUpIGlzIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIHRyZWUgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYW5kIGNsb25lIGEgcGFydGljdWxhcgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yeSBhbmQgdXNlIGl0IHRvIGJ1aWxkIGltYWdlcyBiYXNlZCBvbiB0aGVpciBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgYW5kIGZlYXR1cmVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBmaWxlcyB1c2VkIHRvIGRlc2NyaWJlIGFsbCB0aGUgdmFsaWQgZmVhdHVyZXMgYW5kIEJTUHMKLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBpbiBhbnkgY2xvbmUgb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5Ci0gICAgICAgICAgICBHaXQgdHJlZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgY2xvbmVzIHRoZSBZb2N0byBQcm9qZWN0IGJhc2VsaW5lIGtlcm5lbCB0aGF0Ci0gICAgICAgICAgICBicmFuY2hlZCBvZmYgb2YgPGZpbGVuYW1lPmxpbnV4Lm9yZzwvZmlsZW5hbWU+IHZlcnNpb24gMy40OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by0zLjQKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEZvciBhbm90aGVyIGV4YW1wbGUgb2YgaG93IHRvIHNldCB1cCBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICBrZXJuZWwgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhbC1rZXJuZWwtZmlsZXMnPllvY3RvIFByb2plY3QgS2VybmVsPC91bGluaz4iIGJ1bGxldGVkCi0gICAgICAgICAgICBpdGVtIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2xvbmVkIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkgb24geW91ciBsb2NhbCBtYWNoaW5lLCB5b3UgY2FuCi0gICAgICAgICAgICBzd2l0Y2ggdG8gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoIHdpdGhpbiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFzc3VtZXMgdGhlIGxvY2FsIEdpdCByZXBvc2l0b3J5IGZvciB0aGUga2VybmVsIGlzIGluCi0gICAgICAgICAgICBhIHRvcC1sZXZlbCBkaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuNDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vbGludXgteW9jdG8tMy40Ci0gICAgICQgZ2l0IGNoZWNrb3V0IC1iIG1ldGEgb3JpZ2luL21ldGEKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2hlY2tlZCBvdXQgYW5kIHN3aXRjaGVkIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCwKLSAgICAgICAgICAgIHlvdSBjYW4gc2VlIGEgc25hcHNob3Qgb2YgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZmVhdHVyZSBkZXNjcmlwdGlvbnMgdGhhdCBhcmUKLSAgICAgICAgICAgIHVzZWQgdG8gYnVpbGQgdGhhdCBwYXJ0aWN1bGFyIGtlcm5lbCByZXBvc2l0b3J5LgotICAgICAgICAgICAgVGhlc2UgZGVzY3JpcHRpb25zIGFyZSBpbiB0aGUgZm9ybSBvZiA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGJyb3dzaW5nIHlvdXIgbG9jYWwga2VybmVsIHJlcG9zaXRvcnkKLSAgICAgICAgICAgIGZvciBmZWF0dXJlIGRlc2NyaXB0aW9ucyBhbmQgcGF0Y2hlcyBpcyBub3QgYW4gZWZmZWN0aXZlIHdheSB0byBkZXRlcm1pbmUgd2hhdCBpcyBpbiBhCi0gICAgICAgICAgICBwYXJ0aWN1bGFyIGtlcm5lbCBicmFuY2guCi0gICAgICAgICAgICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSBHaXQgZGlyZWN0bHkgdG8gZGlzY292ZXIgdGhlIGNoYW5nZXMgaW4gYSBicmFuY2guCi0gICAgICAgICAgICBVc2luZyBHaXQgaXMgYW4gZWZmaWNpZW50IGFuZCBmbGV4aWJsZSB3YXkgdG8gaW5zcGVjdCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIEdpdCB0byBpbnNwZWN0IGtlcm5lbCBjb21taXRzLCBzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9ucwotICAgICAgICAgICAgaW4gdGhpcyBjaGFwdGVyLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgR3JvdW5kIHVwIHJlY29uc3RydWN0aW9uIG9mIHRoZSBjb21wbGV0ZSBrZXJuZWwgdHJlZSBpcyBhbiBhY3Rpb24gb25seSB0YWtlbiBieSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHRlYW0gZHVyaW5nIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCBjeWNsZS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBjbG9uZSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5LCB5b3UgYXJlIHNpbXBseSBtYWtpbmcgaXQKLSAgICAgICAgICAgICAgICBlZmZpY2llbnRseSBhdmFpbGFibGUgZm9yIGJ1aWxkaW5nIGFuZCBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIFlvY3RvIFByb2plY3QgVGVhbSBjb25zdHJ1Y3RzCi0gICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIEdpdCByZXBvc2l0b3J5IChvciB0cmVlKSBmb3VuZCBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPiBnaXZlbiB0aGUKLSAgICAgICAgICAgIGludHJvZHVjdGlvbiBvZiBhIG5ldyB0b3AtbGV2ZWwga2VybmVsIGZlYXR1cmUgb3IgQlNQLgotICAgICAgICAgICAgVGhlc2UgYXJlIHRoZSBhY3Rpb25zIHRoYXQgZWZmZWN0aXZlbHkgY3JlYXRlIHRoZSB0cmVlCi0gICAgICAgICAgICB0aGF0IGluY2x1ZGVzIHRoZSBuZXcgZmVhdHVyZSwgcGF0Y2ggb3IgQlNQOgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZCBzdWJzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwgdHlwZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGZpbGUgdGhhdCBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGlzIGxvY2F0ZWQgYnkgc2VhcmNoaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHN5c3RlbSBkaXJlY3RvcmllczoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZSBsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvY2ZnL2tlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXJlYXMgcG9pbnRlZCB0byBieSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiByZWNpcGVzPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICBGb3IgYSB0eXBpY2FsIGJ1aWxkLCB0aGUgdGFyZ2V0IG9mIHRoZSBzZWFyY2ggaXMgYQotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGRlc2NyaXB0aW9uIGluIGFuIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICB3aG9zZSBuYW1lIGZvbGxvd3MgdGhpcyBmb3JtYXQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJmx0O2JzcF9uYW1lJmd0Oy0mbHQ7a2VybmVsX3R5cGUmZ3Q7LnNjYwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9uY2UgbG9jYXRlZCwgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGNvbXBpbGVkIGludG8gYSBzaW1wbGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgIG9mIGFjdGlvbnMsIG9yIGludG8gYW4gZXhpc3RpbmcgZXF1aXZhbGVudCBzY3JpcHQgdGhhdCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHNoaXBwZWQga2VybmVsLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHRyYSBmZWF0dXJlcyBhcmUgYXBwZW5kZWQgdG8gdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBmZWF0dXJlcyBjYW4gY29tZSBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0VSTkVMX0ZFQVRVUkVTJz48ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiByZWNpcGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FYWNoIGV4dHJhIGZlYXR1cmUgaXMgbG9jYXRlZCwgY29tcGlsZWQgYW5kIGFwcGVuZGVkIHRvIHRoZSBzY3JpcHQKLSAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHN0ZXAgdGhyZWUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgdG8gcHJvZHVjZSBhIHNlcmllcyBvZiA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSBicmFuY2hlcywgdGFncywgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdAotICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGJhc2UgR2l0IHJlcG9zaXRvcnkgdG8gY29tcGxldGVseSBjcmVhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSAoYnVpbGQpIGJyYW5jaCBmb3IgdGhlIG5ldyBCU1Agb3IgZmVhdHVyZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGJhc2UgcmVwb3NpdG9yeSBpcyBjbG9uZWQsIGFuZCB0aGUgYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICBsaXN0ZWQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLSo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBhcmUgYXBwbGllZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgdHJlZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEdpdCByZXBvc2l0b3J5IGlzIGxlZnQgd2l0aCB0aGUgZGVzaXJlZCBicmFuY2ggY2hlY2tlZCBvdXQgYW5kIGFueQotICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBicmFuY2hpbmcsIHBhdGNoaW5nIGFuZCB0YWdnaW5nIGhhcyBiZWVuIHBlcmZvcm1lZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUga2VybmVsIHRyZWUgaXMgbm93IHJlYWR5IGZvciBkZXZlbG9wZXIgY29uc3VtcHRpb24gdG8gYmUgbG9jYWxseSBjbG9uZWQsCi0gICAgICAgICAgICBjb25maWd1cmVkLCBhbmQgYnVpbHQgaW50byBhIFlvY3RvIFByb2plY3Qga2VybmVsIHNwZWNpZmljIHRvIHNvbWUgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgPG5vdGU+PHBhcmE+VGhlIGdlbmVyYXRlZCA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgYWRkIHRvIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICBhcyBzaGlwcGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBBbnkgYWRkLW9ucyBhbmQgY29uZmlndXJhdGlvbiBkYXRhIGFyZSBhcHBsaWVkIHRvIHRoZSBlbmQgb2YgYW4gZXhpc3RpbmcgYnJhbmNoLgotICAgICAgICAgICAgICAgIFRoZSBmdWxsIHJlcG9zaXRvcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIG9mZmljaWFsIFlvY3RvIFByb2plY3Qga2VybmVsIHJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpPC91bGluaz4KLSAgICAgICAgICAgICAgICBpcyB0aGUgY29tYmluYXRpb24gb2YgYWxsIHN1cHBvcnRlZCBib2FyZHMgYW5kIGNvbmZpZ3VyYXRpb25zLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgdGVjaG5pcXVlIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNlcyBpcyBmbGV4aWJsZSBhbmQgYWxsb3dzIGZvciBzZWFtbGVzcwotICAgICAgICAgICAgICAgIGJsZW5kaW5nIG9mIGFuIGltbXV0YWJsZSBoaXN0b3J5IHdpdGggYWRkaXRpb25hbCBwYXRjaGVzIHNwZWNpZmljIHRvIGEKLSAgICAgICAgICAgICAgICBkZXBsb3ltZW50LgotICAgICAgICAgICAgICAgIEFueSBhZGRpdGlvbnMgdG8gdGhlIGtlcm5lbCBiZWNvbWUgYW4gaW50ZWdyYXRlZCBwYXJ0IG9mIHRoZSBicmFuY2hlcy48L3BhcmE+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nYnVpbGQtc3RyYXRlZ3knPgotICAgICAgICA8dGl0bGU+QnVpbGQgU3RyYXRlZ3k8L3RpdGxlPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgZXhpc3RzIG9uIGEgZGV2ZWxvcG1lbnQgc3lzdGVtLAotICAgICAgICAgICAgeW91IGNhbiBjb25zaWRlciB0aGUgY29tcGlsYXRpb24gcGhhc2Ugb2Yga2VybmVsIGRldmVsb3BtZW50IC0gYnVpbGRpbmcgYSBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICBTb21lIHByZXJlcXVpc2l0ZXMgZXhpc3QgdGhhdCBhcmUgdmFsaWRhdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGJlZm9yZSBjb21waWxhdGlvbgotICAgICAgICAgICAgc3RhcnRzOgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+IHBvaW50cwotICAgICAgICAgICAgICAgIHRvIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBCU1AgYnVpbGQgYnJhbmNoIGV4aXN0cy4KLSAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJmx0O2tlcm5lbF90eXBlJmd0Oy8mbHQ7YnNwX25hbWUmZ3Q7Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG1ha2VzIHN1cmUgdGhlc2UgY29uZGl0aW9ucyBleGlzdCBiZWZvcmUgYXR0ZW1wdGluZyBjb21waWxhdGlvbi4KLSAgICAgICAgICAgIE90aGVyIG1lYW5zLCBob3dldmVyLCBkbyBleGlzdCwgc3VjaCBhcyBhcyBib290c3RyYXBwaW5nIGEgQlNQLCBzZWUKLSAgICAgICAgICAgIHRoZSAiPGxpbmsgbGlua2VuZD0nd29ya2Zsb3ctZXhhbXBsZXMnPldvcmtmbG93IEV4YW1wbGVzPC9saW5rPiIuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlZm9yZSBidWlsZGluZyBhIGtlcm5lbCwgdGhlIGJ1aWxkIHByb2Nlc3MgdmVyaWZpZXMgdGhlIHRyZWUKLSAgICAgICAgICAgIGFuZCBjb25maWd1cmVzIHRoZSBrZXJuZWwgYnkgcHJvY2Vzc2luZyBhbGwgb2YgdGhlCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uICJmcmFnbWVudHMiIHNwZWNpZmllZCBieSBmZWF0dXJlIGRlc2NyaXB0aW9ucyBpbiB0aGUgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICBBcyB0aGUgZmVhdHVyZXMgYXJlIGNvbXBpbGVkLCBhc3NvY2lhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYWdtZW50cyBhcmUgbm90ZWQKLSAgICAgICAgICAgIGFuZCByZWNvcmRlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IHNlcmllcyBvZiBkaXJlY3RvcmllcyBpbiB0aGVpciBjb21waWxhdGlvbiBvcmRlci4KLSAgICAgICAgICAgIFRoZSBmcmFnbWVudHMgYXJlIG1pZ3JhdGVkLCBwcmUtcHJvY2Vzc2VkIGFuZCBwYXNzZWQgdG8gdGhlIExpbnV4IEtlcm5lbAotICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBzdWJzeXN0ZW0gKDxmaWxlbmFtZT5sa2M8L2ZpbGVuYW1lPikgYXMgcmF3IGlucHV0IGluIHRoZSBmb3JtCi0gICAgICAgICAgICBvZiBhIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGtjPC9maWxlbmFtZT4gdXNlcyBpdHMgb3duIGludGVybmFsIGRlcGVuZGVuY3kgY29uc3RyYWludHMgdG8gZG8gdGhlIGZpbmFsCi0gICAgICAgICAgICBwcm9jZXNzaW5nIG9mIHRoYXQgaW5mb3JtYXRpb24gYW5kIGdlbmVyYXRlcyB0aGUgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICB0aGF0IGlzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBVc2luZyB0aGUgYm9hcmQncyBhcmNoaXRlY3R1cmUgYW5kIG90aGVyIHJlbGV2YW50IHZhbHVlcyBmcm9tIHRoZSBib2FyZCdzIHRlbXBsYXRlLAotICAgICAgICAgICAga2VybmVsIGNvbXBpbGF0aW9uIGlzIHN0YXJ0ZWQgYW5kIGEga2VybmVsIGltYWdlIGlzIHByb2R1Y2VkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgb3RoZXIgdGhpbmcgdGhhdCB5b3Ugbm90aWNlIG9uY2UgeW91IGNvbmZpZ3VyZSBhIGtlcm5lbCBpcyB0aGF0Ci0gICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcyBnZW5lcmF0ZXMgYSBidWlsZCB0cmVlIHRoYXQgaXMgc2VwYXJhdGUgZnJvbSB5b3VyIGtlcm5lbCdzIGxvY2FsIEdpdAotICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnkgdHJlZS4KLSAgICAgICAgICAgIFRoaXMgYnVpbGQgdHJlZSBoYXMgYSBuYW1lIHRoYXQgdXNlcyB0aGUgZm9sbG93aW5nIGZvcm0sIHdoZXJlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JHtNQUNISU5FfTwvZmlsZW5hbWU+IGlzIHRoZSBtZXRhZGF0YSBuYW1lIG9mIHRoZSBtYWNoaW5lIChCU1ApIGFuZCAia2VybmVsX3R5cGUiIGlzIG9uZQotICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydGVkIGtlcm5lbCB0eXBlcyAoZS5nLiAic3RhbmRhcmQiKToKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBsaW51eC0ke01BQ0hJTkV9LSZsdDtrZXJuZWxfdHlwZSZndDstYnVpbGQKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXhpc3Rpbmcgc3VwcG9ydCBpbiB0aGUgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB0cmVlIGFjaGlldmVzIHRoaXMKLSAgICAgICAgICAgIGRlZmF1bHQgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtZWFucyB0aGF0IGFsbCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZSBvciBCU1AgYXJlIG5vdyBpbgotICAgICAgICAgICAgdGhlIGJ1aWxkIHRyZWUgZGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIGZpbGVzIGluY2x1ZGUgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgYWxsIHRoZSA8ZmlsZW5hbWU+Lm88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZXMsIHRoZSA8ZmlsZW5hbWU+LmE8L2ZpbGVuYW1lPiBmaWxlcywgYW5kIHNvIGZvcnRoLgotICAgICAgICAgICAgU2luY2UgZWFjaCBtYWNoaW5lIG9yIEJTUCBoYXMgaXRzIG93biBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkgaW4gaXRzIG93biBzZXBhcmF0ZSBicmFuY2gKLSAgICAgICAgICAgIG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBlYXNpbHkgc3dpdGNoIGJldHdlZW4gZGlmZmVyZW50IGJ1aWxkcy4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd3b3JrZmxvdy1leGFtcGxlcyc+Ci0gICAgICAgIDx0aXRsZT5Xb3JrZmxvdyBFeGFtcGxlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBwcmV2aW91c2x5IG5vdGVkLCB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgaGFzIGJ1aWx0LWluIEdpdCBpbnRlZ3JhdGlvbi4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIHV0aWxpdGllcyBhcmUgbm90IHRoZSBvbmx5IHdheSB0byB3b3JrIHdpdGggdGhlIGtlcm5lbCByZXBvc2l0b3J5LgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIG5vdCBtYWRlIGNoYW5nZXMgdG8gR2l0IG9yIHRvIG90aGVyIHRvb2xzIHRoYXQKLSAgICAgICAgICAgIHdvdWxkIGludmFsaWRhdGUgYWx0ZXJuYXRlIHdvcmtmbG93cy4KLSAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIHdheSB0aGUga2VybmVsIHJlcG9zaXRvcnkgaXMgY29uc3RydWN0ZWQgcmVzdWx0cyBpbiB1c2luZwotICAgICAgICAgICAgb25seSBjb3JlIEdpdCBmdW5jdGlvbmFsaXR5LCB0aHVzIGFsbG93aW5nIGFueSBudW1iZXIgb2YgdG9vbHMgb3IgZnJvbnQgZW5kcyB0byB1c2UgdGhlCi0gICAgICAgICAgICByZXN1bHRpbmcgdHJlZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHNldmVyYWwgd29ya2Zsb3cgZXhhbXBsZXMuCi0gICAgICAgICAgICBNYW55IG9mIHRoZSBleGFtcGxlcyB1c2UgR2l0IGNvbW1hbmRzLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIEdpdCBkb2N1bWVudGF0aW9uIGF0Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG9jdW1lbnRhdGlvbic+PC91bGluaz4uCi0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSBzaW1wbGUgb3ZlcnZpZXcgb2YgdXNpbmcgR2l0IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NoYW5nZS1pbnNwZWN0aW9uLWtlcm5lbC1jaGFuZ2VzLWNvbW1pdHMnPgotICAgICAgICAgICAgPHRpdGxlPkNoYW5nZSBJbnNwZWN0aW9uOiBDaGFuZ2VzL0NvbW1pdHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIGNvbW1vbiBxdWVzdGlvbiB3aGVuIHdvcmtpbmcgd2l0aCBhIGtlcm5lbCBpczoKLSAgICAgICAgICAgICAgICAiV2hhdCBjaGFuZ2VzIGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoaXMgdHJlZT8iCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIHByb2plY3RzIHRoYXQgaGF2ZSBhIGNvbGxlY3Rpb24gb2YgZGlyZWN0b3JpZXMgdGhhdAotICAgICAgICAgICAgICAgIGNvbnRhaW4gcGF0Y2hlcyB0byB0aGUga2VybmVsLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNwZWN0IG9yICJncmVwIiB0aGUgY29udGVudHMKLSAgICAgICAgICAgICAgICBvZiB0aGUgZGlyZWN0b3JpZXMgdG8gZ2V0IGEgZ2VuZXJhbCBmZWVsIGZvciB0aGUgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICBUaGlzIHNvcnQgb2YgcGF0Y2ggaW5zcGVjdGlvbiBpcyBub3QgYW4gZWZmaWNpZW50IHdheSB0byBkZXRlcm1pbmUgd2hhdCBoYXMgYmVlbgotICAgICAgICAgICAgICAgIGRvbmUgdG8gdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGl0IGlzIGluZWZmaWNpZW50IGlzIGJlY2F1c2UgdGhlcmUgYXJlIG1hbnkgb3B0aW9uYWwgcGF0Y2hlcyB0aGF0IGFyZQotICAgICAgICAgICAgICAgIHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBrZXJuZWwgdHlwZSBhbmQgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24uCi0gICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBwYXRjaGVzIGNvdWxkIGV4aXN0IGluIGRpcmVjdG9yaWVzIHRoYXQgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIG1vcmUgZWZmaWNpZW50IHdheSB0byBkZXRlcm1pbmUgd2hhdCBoYXMgY2hhbmdlZCBpbiB0aGUgYnJhbmNoIGlzIHRvIHVzZQotICAgICAgICAgICAgICAgIEdpdCBhbmQgaW5zcGVjdCBvciBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGdpdmVzIHlvdSBhIGZ1bGwgdmlldyBvZiBub3Qgb25seSB0aGUgc291cmNlIGNvZGUgbW9kaWZpY2F0aW9ucywKLSAgICAgICAgICAgICAgICBidXQgYWxzbyBwcm92aWRlcyB0aGUgcmVhc29ucyBmb3IgdGhlIGNoYW5nZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd3aGF0LWNoYW5nZWQtaW4tYS1rZXJuZWwnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5XaGF0IENoYW5nZWQgaW4gYSBLZXJuZWw/PC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGEgZmV3IGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gdXNlIEdpdCBjb21tYW5kcyB0byBleGFtaW5lIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgR2l0IHJlcG9zaXRvcmllcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkbyBub3QgYnJlYWsgZXhpc3RpbmcgR2l0Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHksIGFuZCBiZWNhdXNlIHRoZXJlIGV4aXN0cyBtYW55IHBlcm11dGF0aW9ucyBvZiB0aGVzZSB0eXBlcyBvZgotICAgICAgICAgICAgICAgICAgICBHaXQgY29tbWFuZHMsIG1hbnkgbWV0aG9kcyBleGlzdCBieSB3aGljaCB5b3UgY2FuIGRpc2NvdmVyIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlcywgdW5sZXNzIHlvdSBwcm92aWRlIGEgY29tbWl0IHJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiBoaXN0b3J5IGlzIGJsZW5kZWQgd2l0aCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZm9ybSByYW5nZXMgYnkgdXNpbmcgYnJhbmNoIG5hbWVzIGZyb20gdGhlIGtlcm5lbCB0cmVlIGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXIgYW5kIGxvd2VyIGNvbW1pdCBtYXJrZXJzIHdpdGggdGhlIEdpdCBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBicmFuY2ggbmFtZXMgdGhyb3VnaCB0aGUgd2ViIGludGVyZmFjZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgYnJhbmNoIG5hbWVzIGZvciB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuNDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVwb3NpdG9yeSBjYW4gYmUgc2VlbiBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpL2xpbnV4LXlvY3RvLTMuNC9yZWZzL2hlYWRzJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICBUbyBzZWUgYSBmdWxsIHJhbmdlIG9mIHRoZSBjaGFuZ2VzLCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgd2hhdGNoYW5nZWQ8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCBzcGVjaWZ5IGEgY29tbWl0IHJhbmdlCi0gICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnJhbmNoICg8ZmlsZW5hbWU+Jmx0O2NvbW1pdCZndDsuLiZsdDtjb21taXQmZ3Q7PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBsb29rcyBhdCB3aGF0IGhhcyBjaGFuZ2VkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZW1lbmxvdzwvZmlsZW5hbWU+IGJyYW5jaCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuNDwvZmlsZW5hbWU+IGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGxvd2VyIGNvbW1pdCByYW5nZSBpcyB0aGUgY29tbWl0IGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW5kYXJkL2Jhc2U8L2ZpbGVuYW1lPiBicmFuY2gsIHdoaWxlCi0gICAgICAgICAgICAgICAgICAgIHRoZSB1cHBlciBjb21taXQgcmFuZ2UgaXMgdGhlIGNvbW1pdCBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFuZGFyZC9lbWVubG93PC9maWxlbmFtZT4gYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHdoYXRjaGFuZ2VkIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIHNlZSBhIHN1bW1hcnkgb2YgY2hhbmdlcyB1c2UgdGhlIDxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHVzaW5nIHRoZSBzYW1lIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGxvZyAtLW9uZWxpbmUgb3JpZ2luL3N0YW5kYXJkL2Jhc2UuLm9yaWdpbi9zdGFuZGFyZC9lbWVubG93Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT4gb3V0cHV0IG1pZ2h0IGJlIG1vcmUgdXNlZnVsIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5naXQgd2hhdGNoYW5nZWQ8L2ZpbGVuYW1lPiBhcyB5b3UgZ2V0Ci0gICAgICAgICAgICAgICAgICAgIGEgc2hvcnQsIG9uZS1saW5lIHN1bW1hcnkgb2YgZWFjaCBjaGFuZ2UgYW5kIG5vdCB0aGUgZW50aXJlIGNvbW1pdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGNvZGUgZGlmZmVyZW5jZXMgYXNzb2NpYXRlZCB3aXRoIGFsbCB0aGUgY2hhbmdlcywgdXNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2l0IGRpZmY8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgZGlmZiBvcmlnaW4vc3RhbmRhcmQvYmFzZS4ub3JpZ2luL3N0YW5kYXJkL2VtZW5sb3cKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgY29tbWl0IGxvZyBtZXNzYWdlcyBhbmQgdGhlIHRleHQgZGlmZmVyZW5jZXMgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2hvdzwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBzaG93IG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGluZGl2aWR1YWwgcGF0Y2hlcyBmb3IgZWFjaCBjaGFuZ2UgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgdGhhdCBjcmVhdGVzIHBhdGNoIGZpbGVzIGZvciBlYWNoIGNvbW1pdCBhbmQKLSAgICAgICAgICAgICAgICAgICAgcGxhY2VzIHRoZW0gaW4geW91ciA8ZmlsZW5hbWU+RG9jdW1lbnRzPC9maWxlbmFtZT4gZGlyZWN0b3J5OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAkSE9NRS9Eb2N1bWVudHMgb3JpZ2luL3N0YW5kYXJkL2Jhc2UuLm9yaWdpbi9zdGFuZGFyZC9lbWVubG93Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzaG93LWEtcGFydGljdWxhci1mZWF0dXJlLW9yLWJyYW5jaC1jaGFuZ2UnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5TaG93IGEgUGFydGljdWxhciBGZWF0dXJlIG9yIEJyYW5jaCBDaGFuZ2U8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgdXNlIHRhZ3MgaW4gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHRyZWUgdG8gZGl2aWRlIGNoYW5nZXMgZm9yIHNpZ25pZmljYW50Ci0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIG9yIGJyYW5jaGVzLgotICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBrbm93IGEgcGFydGljdWxhciB0YWcsIHlvdSBjYW4gdXNlIEdpdCBjb21tYW5kcwotICAgICAgICAgICAgICAgICAgICB0byBzaG93IGNoYW5nZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWcgYW5kIGZpbmQgdGhlIGJyYW5jaGVzIHRoYXQgY29udGFpbgotICAgICAgICAgICAgICAgICAgICB0aGUgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIEJTUCBicmFuY2gsIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4sIGFuZCBmZWF0dXJlIHRhZ3MgYXJlIGFsbAotICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCwgdGhlcmUgY291bGQgYmUgbWFueSB0YWdzLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IHNob3cgJmx0O3RhZyZndDs8L2ZpbGVuYW1lPiBjb21tYW5kIHNob3dzIGNoYW5nZXMgdGhhdCBhcmUgdGFnZ2VkIGJ5Ci0gICAgICAgICAgICAgICAgICAgIGEgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgY2hhbmdlcyB0YWdnZWQgYnkgdGhlIDxmaWxlbmFtZT5zeXN0ZW10YXA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHNob3cgc3lzdGVtdGFwCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5naXQgYnJhbmNoIC0tY29udGFpbnMgJmx0O3RhZyZndDs8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIHRvIHNob3cgdGhlIGJyYW5jaGVzIHRoYXQgY29udGFpbiBhIHBhcnRpY3VsYXIgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIHNob3dzIHRoZSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIDxmaWxlbmFtZT5zeXN0ZW10YXA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGJyYW5jaCAtLWNvbnRhaW5zIHN5c3RlbXRhcAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIG1hbnkgb3RoZXIgY29tcGFyaXNvbnMgdG8gaXNvbGF0ZSBCU1AgYW5kIGtlcm5lbCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBjb21wYXJlIGFnYWluc3QgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB0YWdzCi0gICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIDxmaWxlbmFtZT52My40PC9maWxlbmFtZT4gdGFnLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdkZXZlbG9wbWVudC1zYXZpbmcta2VybmVsLW1vZGlmaWNhdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPkRldmVsb3BtZW50OiBTYXZpbmcgS2VybmVsIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBbm90aGVyIGNvbW1vbiBvcGVyYXRpb24gaXMgdG8gYnVpbGQgYSBCU1Agc3VwcGxpZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIG1ha2Ugc29tZQotICAgICAgICAgICAgICAgIGNoYW5nZXMsIHJlYnVpbGQsIGFuZCB0aGVuIHRlc3QuCi0gICAgICAgICAgICAgICAgVGhvc2UgbG9jYWwgY2hhbmdlcyBvZnRlbiBuZWVkIHRvIGJlIGV4cG9ydGVkLCBzaGFyZWQgb3Igb3RoZXJ3aXNlIG1haW50YWluZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFNpbmNlIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgdHJlZSBpcyBiYWNrZWQgYnkgR2l0LCB0aGlzIGFjdGl2aXR5IGlzCi0gICAgICAgICAgICAgICAgbXVjaCBlYXNpZXIgYXMgY29tcGFyZWQgdG8gd2l0aCBwcmV2aW91cyByZWxlYXNlcy4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIEdpdCB0cmFja3MgZmlsZSBtb2RpZmljYXRpb25zLCBhZGRpdGlvbnMgYW5kIGRlbGV0aW9ucywgaXQgaXMgZWFzeQotICAgICAgICAgICAgICAgIHRvIG1vZGlmeSB0aGUgY29kZSBhbmQgbGF0ZXIgcmVhbGl6ZSB0aGF0IHlvdSBuZWVkIHRvIHNhdmUgdGhlIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBlYXN5IHRvIGRldGVybWluZSB3aGF0IGhhcyBjaGFuZ2VkLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGFsc28gcHJvdmlkZXMgbWFueSB0b29scyB0byBjb21taXQsIHVuZG8gYW5kIGV4cG9ydCB0aG9zZSBtb2RpZmljYXRpb25zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gYW5kIGl0cyBzdWItc2VjdGlvbnMsIGRlc2NyaWJlIGdlbmVyYWwgYXBwbGljYXRpb24gb2YgR2l0J3MKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHVzaDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cHVsbDwvZmlsZW5hbWU+IGNvbW1hbmRzLCB3aGljaCBhcmUgdXNlZCB0bwotICAgICAgICAgICAgICAgIGdldCB5b3VyIGNoYW5nZXMgdXBzdHJlYW0gb3Igc291cmNlIHlvdXIgY29kZSBmcm9tIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgc2NyaXB0cyB0aGF0IGhlbHAgeW91IHdvcmsgaW4gYSBjb2xsYWJvcmF0aXZlIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNjcmlwdHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcHVzaGluZy1hLWNoYW5nZS11cHN0cmVhbSc+VXNpbmcgU2NyaXB0cyB0byBQdXNoIGEgQ2hhbmdlCi0gICAgICAgICAgICAgICAgVXBzdHJlYW0gYW5kIFJlcXVlc3QgYSBQdWxsPC91bGluaz4iIGFuZAotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzdWJtaXR0aW5nLWEtcGF0Y2gnPlVzaW5nIEVtYWlsIHRvIFN1Ym1pdCBhIFBhdGNoPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVyZSBhcmUgbWFueSB3YXlzIHRvIHNhdmUga2VybmVsIG1vZGlmaWNhdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIHRlY2huaXF1ZSBlbXBsb3llZAotICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgcGF0Y2hlczoKLQotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CdWxrIHN0b3JhZ2U8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkludGVybmFsIHNoYXJpbmcgZWl0aGVyIHRocm91Z2ggcGF0Y2hlcyBvciBieSB1c2luZyBHaXQ8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4dGVybmFsIHN1Ym1pc3Npb25zPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBvcnRpbmcgZm9yIGludGVncmF0aW9uIGludG8gYW5vdGhlciBTb3VyY2UgQ29kZQotICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlciAoU0NNKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgbGlzdCBvZiBpc3N1ZXMsIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgcGF0Y2hlcyBhbHNvIGluZmx1ZW5jZXMKLSAgICAgICAgICAgICAgICB0aGUgbWV0aG9kIGZvciBnYXRoZXJpbmcgdGhlbToKLQotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CaXNlY3RhYmlsaXR5PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db21taXQgaGVhZGVyczwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGl2aXNpb24gb2Ygc3Vic3lzdGVtcyBmb3Igc2VwYXJhdGUgc3VibWlzc2lvbiBvciByZXZpZXc8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2J1bGstZXhwb3J0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+QnVsayBFeHBvcnQ8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHlvdSBjYW4gImJ1bGsiIGV4cG9ydCBjaGFuZ2VzIHRoYXQgaGF2ZSBub3QKLSAgICAgICAgICAgICAgICAgICAgYmVlbiBzZXBhcmF0ZWQgb3IgZGl2aWRlZC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzaXR1YXRpb24gd29ya3Mgd2VsbCB3aGVuIHlvdSBhcmUgc2ltcGx5IHN0b3JpbmcgcGF0Y2hlcyBvdXRzaWRlIG9mIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnksIGVpdGhlciBwZXJtYW5lbnRseSBvciB0ZW1wb3JhcmlseSwgYW5kIHlvdSBhcmUgbm90IGNvbW1pdHRpbmcKLSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWwgY2hhbmdlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZWNobmlxdWUgaXMgbm90IGFwcHJvcHJpYXRlIGZvciBmdWxsIGludGVncmF0aW9uIG9mIHVwc3RyZWFtIHN1Ym1pc3Npb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgY2hhbmdlcyBhcmUgbm90IHByb3Blcmx5IGRpdmlkZWQgYW5kIGRvIG5vdCBwcm92aWRlIGFuIGF2ZW51ZSBmb3IgcGVyLWNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlcmVmb3JlLCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGF0IGNoYW5nZXMgaGF2ZSBub3QgYmVlbiBjb21taXR0ZWQgaW5jcmVtZW50YWxseQotICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGRldmVsb3BtZW50IGFuZCB0aGF0IHlvdSBzaW1wbHkgbXVzdCBnYXRoZXIgYW5kIGV4cG9ydCB0aGVtLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBidWxrIGV4cG9ydCBvZiBBTEwgbW9kaWZpY2F0aW9ucyB3aXRob3V0IHNlcGFyYXRpb24gb3IgZGl2aXNpb24KLSAgICAgIyBvZiB0aGUgY2hhbmdlcwotCi0gICAgICQgZ2l0IGFkZCAuCi0gICAgICQgZ2l0IGNvbW1pdCAtcyAtYSAtbSAmbHQ7bXNnJmd0OwotICAgICAgICBvcgotICAgICAkIGdpdCBjb21taXQgLXMgLWEgIyBhbmQgaW50ZXJhY3Qgd2l0aCAkRURJVE9SCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIG9wZXJhdGlvbnMgY2FwdHVyZSBhbGwgdGhlIGxvY2FsIGNoYW5nZXMgaW4gdGhlIHByb2plY3Qgc291cmNlCi0gICAgICAgICAgICAgICAgICAgIHRyZWUgaW4gYSBzaW5nbGUgR2l0IGNvbW1pdC4KLSAgICAgICAgICAgICAgICAgICAgQW5kLCB0aGF0IGNvbW1pdCBpcyBhbHNvIHN0b3JlZCBpbiB0aGUgcHJvamVjdCdzIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBjaGFuZ2VzIGFyZSBleHBvcnRlZCwgeW91IGNhbiByZXN0b3JlIHRoZW0gbWFudWFsbHkgdXNpbmcgYSB0ZW1wbGF0ZQotICAgICAgICAgICAgICAgICAgICBvciB0aHJvdWdoIGludGVncmF0aW9uIHdpdGggdGhlIDxmaWxlbmFtZT5kZWZhdWx0X2tlcm5lbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0naW5jcmVtZW50YWwtcGxhbm5lZC1zaGFyaW5nJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+SW5jcmVtZW50YWwvUGxhbm5lZCBTaGFyaW5nPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBzYXZlIG1vZGlmaWNhdGlvbnMgd2hlbiB5b3UgYXJlIG1ha2luZyBpbmNyZW1lbnRhbAotICAgICAgICAgICAgICAgICAgICBjb21taXRzIG9yIHByYWN0aWNpbmcgcGxhbm5lZCBzaGFyaW5nLgotICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZXMgaW4gdGhpcyBzZWN0aW9uIGFzc3VtZSB0aGF0IHlvdSBoYXZlIGluY3JlbWVudGFsbHkgY29tbWl0dGVkCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gdGhlIHRyZWUgZHVyaW5nIGRldmVsb3BtZW50IGFuZCBub3cgbmVlZCB0byBleHBvcnQgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNlY3Rpb25zIHRoYXQgZm9sbG93Ci0gICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlIGhvdyB5b3UgY2FuIGV4cG9ydCB5b3VyIGNoYW5nZXMgaW50ZXJuYWxseSB0aHJvdWdoIGVpdGhlciBwYXRjaGVzIG9yIGJ5Ci0gICAgICAgICAgICAgICAgICAgIHVzaW5nIEdpdCBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGRldmVsb3BtZW50LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBvZiBpbnRlcmVzdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGZ1bGwgR2l0IGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIHRoZSBHaXQgZG9jdW1lbnRhdGlvbiBhdAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0aHViLmNvbSc+PC91bGluaz4uCi0KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIGVkaXQgYSBmaWxlCi0gICAgICQgdmkgJmx0O3BhdGgmZ3Q7L2ZpbGUKLSAgICAgIyBzdGFnZSB0aGUgY2hhbmdlCi0gICAgICQgZ2l0IGFkZCAmbHQ7cGF0aCZndDsvZmlsZQotICAgICAjIGNvbW1pdCB0aGUgY2hhbmdlCi0gICAgICQgZ2l0IGNvbW1pdCAtcwotICAgICAjIHJlbW92ZSBhIGZpbGUKLSAgICAgJCBnaXQgcm0gJmx0O3BhdGgmZ3Q7L2ZpbGUKLSAgICAgIyBjb21taXQgdGhlIGNoYW5nZQotICAgICAkIGdpdCBjb21taXQgLXMKLQotICAgICAuLi4gZXRjLgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGVkIGRldmVsb3BtZW50IHdpdGggR2l0IGlzIHBvc3NpYmxlIHdoZW4geW91IHVzZSBhIHVuaXZlcnNhbGx5Ci0gICAgICAgICAgICAgICAgICAgIGFncmVlZC11cG9uIHVuaXF1ZSBjb21taXQgaWRlbnRpZmllciAoc2V0IGJ5IHRoZSBjcmVhdG9yIG9mIHRoZSBjb21taXQpIHRoYXQgbWFwcyB0byBhCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNoYW5nZSBzZXQgd2l0aCBhIHNwZWNpZmljIHBhcmVudC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBpZGVudGlmaWVyIGlzIGNyZWF0ZWQgZm9yIHlvdSB3aGVuCi0gICAgICAgICAgICAgICAgICAgIHlvdSBjcmVhdGUgYSBjb21taXQsIGFuZCBpcyByZS1jcmVhdGVkIHdoZW4geW91IGFtZW5kLCBhbHRlciBvciByZS1hcHBseQotICAgICAgICAgICAgICAgICAgICBhIGNvbW1pdC4KLSAgICAgICAgICAgICAgICAgICAgQXMgYW4gaW5kaXZpZHVhbCBpbiBpc29sYXRpb24sIHRoaXMgaXMgb2Ygbm8gaW50ZXJlc3QuCi0gICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdQotICAgICAgICAgICAgICAgICAgICBpbnRlbmQgdG8gc2hhcmUgeW91ciB0cmVlIHdpdGggbm9ybWFsIEdpdCA8ZmlsZW5hbWU+cHVzaDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHVsbDwvZmlsZW5hbWU+IG9wZXJhdGlvbnMgZm9yCi0gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCB5b3Ugc2hvdWxkIGNvbnNpZGVyIHRoZSByYW1pZmljYXRpb25zIG9mIGNoYW5naW5nIGEKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0IHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzaGFyZWQgd2l0aCBvdGhlcnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIHRoYXQgdGhlIGNoYW5nZXMgaGF2ZSBub3QgYmVlbiBwdXNoZWQgdXBzdHJlYW0sIG9yIHB1bGxlZCBpbnRvCi0gICAgICAgICAgICAgICAgICAgIGFub3RoZXIgcmVwb3NpdG9yeSwgeW91IGNhbiB1cGRhdGUgYm90aCB0aGUgY29tbWl0IGNvbnRlbnQgYW5kIGNvbW1pdCBtZXNzYWdlcwotICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggZGV2ZWxvcG1lbnQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKLQotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgR2l0IGFkZCAmbHQ7cGF0aCZndDsvZmlsZQotICAgICAkIEdpdCBjb21taXQgLS1hbWVuZAotICAgICAkIEdpdCByZWJhc2Ugb3IgR2l0IHJlYmFzZSAtaQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEFnYWluLCBhc3N1bWluZyB0aGF0IHRoZSBjaGFuZ2VzIGhhdmUgbm90IGJlZW4gcHVzaGVkIHVwc3RyZWFtLCBhbmQgdGhhdAotICAgICAgICAgICAgICAgICAgICBubyBwZW5kaW5nIHdvcmtzLWluLXByb2dyZXNzIGV4aXN0ICh1c2UgPGZpbGVuYW1lPmdpdCBzdGF0dXM8L2ZpbGVuYW1lPiB0byBjaGVjayksIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgeW91IGNhbiByZXZlcnQgKHVuZG8pIGNvbW1pdHMgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKLQotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgcmVtb3ZlIHRoZSBjb21taXQsIHVwZGF0ZSB3b3JraW5nIHRyZWUgYW5kIHJlbW92ZSBhbGwKLSAgICAgIyB0cmFjZXMgb2YgdGhlIGNoYW5nZQotICAgICAkIGdpdCByZXNldCAtLWhhcmQgSEVBRF4KLSAgICAgIyByZW1vdmUgdGhlIGNvbW1pdCwgYnV0IGxlYXZlIHRoZSBmaWxlcyBjaGFuZ2VkIGFuZCBzdGFnZWQgZm9yIHJlLWNvbW1pdAotICAgICAkIGdpdCByZXNldCAtLXNvZnQgSEVBRF4KLSAgICAgIyByZW1vdmUgdGhlIGNvbW1pdCwgbGVhdmUgZmlsZSBjaGFuZ2UsIGJ1dCBub3Qgc3RhZ2VkIGZvciBjb21taXQKLSAgICAgJCBnaXQgcmVzZXQgLS1taXhlZCBIRUFEXgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGJyYW5jaGVzLCAiY2hlcnJ5LXBpY2siIGNoYW5nZXMsIG9yIHBlcmZvcm0gYW55IG51bWJlciBvZiBHaXQKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucyB1bnRpbCB0aGUgY29tbWl0cyBhcmUgaW4gZ29vZCBvcmRlciBmb3IgcHVzaGluZyB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICBvciBmb3IgcHVsbCByZXF1ZXN0cy4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgYSA8ZmlsZW5hbWU+cHVzaDwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5wdWxsPC9maWxlbmFtZT4gY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0cyBhcmUgbm9ybWFsbHkgY29uc2lkZXJlZAotICAgICAgICAgICAgICAgICAgICAicGVybWFuZW50IiBhbmQgeW91IHNob3VsZCBub3QgbW9kaWZ5IHRoZW0uCi0gICAgICAgICAgICAgICAgICAgIElmIHRoZSBjb21taXRzIG5lZWQgdG8gYmUgY2hhbmdlZCwgeW91IGNhbiBpbmNyZW1lbnRhbGx5IGRvIHNvIHdpdGggbmV3IGNvbW1pdHMuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIHByYWN0aWNlcyBmb2xsb3cgc3RhbmRhcmQgR2l0IHdvcmtmbG93IGFuZCB0aGUgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiBiZXN0Ci0gICAgICAgICAgICAgICAgICAgIHByYWN0aWNlcywgd2hpY2ggaXMgcmVjb21tZW5kZWQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdGFnIG9yIGJyYW5jaCBiZWZvcmUgYWRkaW5nIGNoYW5nZXMgdG8gYSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBCU1Agb3IgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVjb21tZW5kYXRpb24gaXMgYmVjYXVzZSB0aGUgYnJhbmNoIG9yIHRhZyBwcm92aWRlcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgcG9pbnQgdG8gZmFjaWxpdGF0ZSBsb2NhdGluZyBhbmQgZXhwb3J0aW5nIGxvY2FsIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhwb3J0LWludGVybmFsbHktdmlhLXBhdGNoZXMnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+RXhwb3J0aW5nIENoYW5nZXMgSW50ZXJuYWxseSBieSBVc2luZyBQYXRjaGVzPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHlvdSBjYW4gZXh0cmFjdCBjb21taXR0ZWQgY2hhbmdlcyBmcm9tIGEgd29ya2luZyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGV4cG9ydGluZyB0aGVtIGFzIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBjaGFuZ2VzIGhhdmUgYmVlbiBleHRyYWN0ZWQsIHlvdSBjYW4gdXNlIHRoZSBwYXRjaGVzIGZvciB1cHN0cmVhbSBzdWJtaXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2UgdGhlbSBpbiBhIFlvY3RvIFByb2plY3QgdGVtcGxhdGUgZm9yIGF1dG9tYXRpYyBrZXJuZWwgcGF0Y2hpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBvciBhcHBseSB0aGVtIGluIG1hbnkgb3RoZXIgY29tbW9uIHVzZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gY3JlYXRlIGEgZGlyZWN0b3J5IHdpdGggc2VxdWVudGlhbGx5IG51bWJlcmVkIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBkaXJlY3RvcnkgaXMgY3JlYXRlZCwgeW91IGNhbiBhcHBseSBpdCB0byBhIHJlcG9zaXRvcnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGFtPC9maWxlbmFtZT4gY29tbWFuZCB0byByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvbW1pdCBhbmQgYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBzdWNoIGFzIGF1dGhvciwgZGF0ZSwgY29tbWl0IGxvZywgYW5kIHNvIGZvcnRoLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5ldyBjb21taXQgaWRlbnRpZmllcnMgKElEKSB3aWxsIGJlIGdlbmVyYXRlZCB1cG9uIHJlLWFwcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYWN0aW9uIHJlZmxlY3RzIHRoYXQgdGhlIGNvbW1pdCBpcyBub3cgYXBwbGllZCB0byBhbiB1bmRlcmx5aW5nIGNvbW1pdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBkaWZmZXJlbnQgSUQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgJmx0O2ZpcnN0LWNvbW1pdCZndDsgY2FuIGJlIGEgdGFnIGlmIG9uZSB3YXMgY3JlYXRlZCBiZWZvcmUgZGV2ZWxvcG1lbnQKLSAgICAgIyBiZWdhbi4gSXQgY2FuIGFsc28gYmUgdGhlIHBhcmVudCBicmFuY2ggaWYgYSBicmFuY2ggd2FzIGNyZWF0ZWQKLSAgICAgIyBiZWZvcmUgZGV2ZWxvcG1lbnQgYmVnYW4uCi0KLSAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC1vICZsdDtkaXImZ3Q7ICZsdDtmaXJzdCBjb21taXQmZ3Q7Li4mbHQ7bGFzdCBjb21taXQmZ3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIElkZW50aWZ5IGNvbW1pdHMgb2YgaW50ZXJlc3QuCi0KLSAgICAgIyBJZiB0aGUgdHJlZSB3YXMgdGFnZ2VkIGJlZm9yZSBkZXZlbG9wbWVudAotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLW8gJmx0O3NhdmUgZGlyJmd0OyAmbHQ7dGFnJmd0OwotCi0gICAgICMgSWYgbm8gdGFncyBhcmUgYXZhaWxhYmxlCi0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAmbHQ7c2F2ZSBkaXImZ3Q7IEhFQUReICAjIGxhc3QgY29tbWl0Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAmbHQ7c2F2ZSBkaXImZ3Q7IEhFQUReXiAjIGxhc3QgMiBjb21taXRzCi0gICAgICQgZ2l0IHdoYXRjaGFuZ2VkICMgaWRlbnRpZnkgbGFzdCBjb21taXQKLSAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC1vICZsdDtzYXZlIGRpciZndDsgJmx0O2NvbW1pdCBpZCZndDsKLSAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC1vICZsdDtzYXZlIGRpciZndDsgJmx0O3Jldi1saXN0Jmd0OwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2V4cG9ydC1pbnRlcm5hbGx5LXZpYS1naXQnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+RXhwb3J0aW5nIENoYW5nZXMgSW50ZXJuYWxseSBieSBVc2luZyBHaXQ8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgeW91IGNhbiBleHBvcnQgY2hhbmdlcyBmcm9tIGEgd29ya2luZyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHB1c2hpbmcgdGhlIGNoYW5nZXMgaW50byBhIG1hc3RlciByZXBvc2l0b3J5IG9yIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgcHVzaGVkIHRoZSBjaGFuZ2VzIHRvIHRoZSBtYXN0ZXIgcmVwb3NpdG9yeSwgeW91IGNhbiB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBwdWxsIHRob3NlIHNhbWUgY2hhbmdlcyBpbnRvIGEgbmV3IGtlcm5lbCBidWlsZCBhdCBhIGxhdGVyIHRpbWUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIGNvbW1hbmQgZm9ybSB0byBwdXNoIHRoZSBjaGFuZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBwdXNoIHNzaDovLyZsdDttYXN0ZXJfc2VydmVyJmd0Oy8mbHQ7cGF0aF90b19yZXBvJmd0OwotICAgICAgICAmbHQ7bG9jYWxfYnJhbmNoJmd0OzombHQ7cmVtb3RlX2JyYW5jaCZndDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBwdXNoZXMgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGxvY2FsIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlPC9maWxlbmFtZT4gdG8gdGhlIHJlbW90ZSBicmFuY2ggd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbWFzdGVyIHJlcG9zaXRvcnkgPGZpbGVuYW1lPi8vZ2l0Lm15Y29tcGFueS5jb20vcHViL2dpdC9rZXJuZWwtMy40PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHB1c2ggc3NoOi8vZ2l0Lm15Y29tcGFueS5jb20vcHViL2dpdC9rZXJuZWwtMy40IFwKLSAgICAgICAgeW9jdG8vc3RhbmRhcmQvY29tbW9uLXBjL2Jhc2U6eW9jdG8vc3RhbmRhcmQvY29tbW9uLXBjL2Jhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBwdWxsIHJlcXVlc3QgZW50YWlscyB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCByZXF1ZXN0LXB1bGw8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNvbXBvc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuIGVtYWlsIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciByZXF1ZXN0aW5nIHRoYXQgYSBicmFuY2ggYmUgcHVsbGVkIGludG8gdGhlIG1hc3RlciByZXBvc2l0b3J5LCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXRodWIuY29tL2d1aWRlcy9wdWxsLXJlcXVlc3RzJz48L3VsaW5rPiBmb3IgYW4gZXhhbXBsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyIGNvbW1hbmRzIHN1Y2ggYXMgPGZpbGVuYW1lPmdpdCBzdGFzaDwvZmlsZW5hbWU+IG9yIGJyYW5jaGluZyBjYW4gYWxzbyBiZSB1c2VkIHRvIHNhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLCBidXQgYXJlIG5vdCBjb3ZlcmVkIGluIHRoaXMgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleHBvcnQtZm9yLWV4dGVybmFsLXVwc3RyZWFtLXN1Ym1pc3Npb24nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5FeHBvcnRpbmcgQ2hhbmdlcyBmb3IgRXh0ZXJuYWwgKFVwc3RyZWFtKSBTdWJtaXNzaW9uPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBleHBvcnQgY2hhbmdlcyBmb3IgZXh0ZXJuYWwgdXBzdHJlYW0gc3VibWlzc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHBhdGNoIHNlcmllcyBpcyBsYXJnZSBvciB0aGUgbWFpbnRhaW5lciBwcmVmZXJzIHRvIHB1bGwKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcywgeW91IGNhbiBzdWJtaXQgdGhlc2UgY2hhbmdlcyBieSB1c2luZyBhIHB1bGwgcmVxdWVzdC4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgY29tbW9uIHRvIHNlbmQgcGF0Y2hlcyBhcyBhbiBlbWFpbCBzZXJpZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGFsbG93cyBlYXN5IHJldmlldyBhbmQgaW50ZWdyYXRpb24gb2YgdGhlIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHNlbmRpbmcgcGF0Y2hlcyBmb3IgcmV2aWV3IGJlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkgc3RhbmRhcmRzIGZvciBzdWJtaXR0aW5nIGFuZCBkb2N1bWVudGluZyBjaGFuZ2VzIGFuZCBmb2xsb3cgdGhlaXIgYmVzdCBwcmFjdGljZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwga2VybmVsIHBhdGNoZXMgc2hvdWxkIGZvbGxvdyBzdGFuZGFyZHMgc3VjaCBhczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGludXgueXl6LnVzL3BhdGNoLWZvcm1hdC5odG1sJz48L3VsaW5rPjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIChpbiBhbnkgbGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIHNvdXJjZSB0cmVlKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1lc3NhZ2VzIHVzZWQgdG8gY29tbWl0IGNoYW5nZXMgYXJlIGEgbGFyZ2UgcGFydCBvZiB0aGVzZSBzdGFuZGFyZHMuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgYmUgc3VyZSB0aGF0IHRoZSBoZWFkZXJzIGZvciBlYWNoIGNvbW1pdCBoYXZlIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBmb2xsb3cgdGhlIFlvY3RvIFByb2plY3QgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEKLSAgICAgICAgICAgICAgICAgICAgQ2hhbmdlPC91bGluaz4iIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgaW5pdGlhbCBjb21taXRzIHdlcmUgbm90IHByb3Blcmx5IGRvY3VtZW50ZWQgb3IgZG8gbm90IG1lZXQgdGhvc2Ugc3RhbmRhcmRzLAotICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHJlLWJhc2UgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgcmViYXNlIC1pPC9maWxlbmFtZT4gY29tbWFuZCB0bwotICAgICAgICAgICAgICAgICAgICBtYW5pcHVsYXRlIHRoZSBjb21taXRzIGFuZAotICAgICAgICAgICAgICAgICAgICBnZXQgdGhlbSBpbnRvIHRoZSByZXF1aXJlZCBmb3JtYXQuCi0gICAgICAgICAgICAgICAgICAgIE90aGVyIHRlY2huaXF1ZXMgc3VjaCBhcyBicmFuY2hpbmcgYW5kIGNoZXJyeS1waWNraW5nIGNvbW1pdHMgYXJlIGFsc28gdmlhYmxlIG9wdGlvbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGNvbXBsZXRlIHRoZSBjb21taXRzLCB5b3UgY2FuIGdlbmVyYXRlIHRoZSBlbWFpbCB0aGF0IHNlbmRzIHRoZSBwYXRjaGVzCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBtYWludGFpbmVyKHMpIG9yIGxpc3RzIHRoYXQgcmV2aWV3IGFuZCBpbnRlZ3JhdGUgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gaXMgY29tbW9ubHkgdXNlZCB0byBlbnN1cmUKLSAgICAgICAgICAgICAgICAgICAgdGhhdCBwYXRjaGVzIGFyZSBwcm9wZXJseQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgZm9yIGVhc3kgYXBwbGljYXRpb24gYW5kIGF2b2lkIG1haWxlci1pbmR1Y2VkIHBhdGNoIGRhbWFnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGR1bXBpbmcgcGF0Y2hlcyBmb3IgZXh0ZXJuYWwgc3VibWlzc2lvbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIGR1bXAgdGhlIGxhc3QgNCBjb21taXRzCi0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtLXRocmVhZCAtbiAtbyB+L3JyLyBIRUFEXl5eXgotICAgICAkIGdpdCBzZW5kLWVtYWlsIC0tY29tcG9zZSAtLXN1YmplY3QgJ1tSRkMgMC9OXSAmbHQ7cGF0Y2ggc2VyaWVzIHN1bW1hcnkmZ3Q7JyBcCi0gICAgICAtLXRvIGZvb0B5b2N0b3Byb2plY3Qub3JnIC0tdG8gYmFyQHlvY3RvcHJvamVjdC5vcmcgXAotICAgICAgLS1jYyBsaXN0QHlvY3RvcHJvamVjdC5vcmcgIH4vcnIKLSAgICAgIyB0aGUgZWRpdG9yIGlzIGludm9rZWQgZm9yIHRoZSAwL04gcGF0Y2gsIGFuZCB3aGVuIGNvbXBsZXRlIHRoZSBlbnRpcmUKLSAgICAgIyBzZXJpZXMgaXMgc2VudCB2aWEgZW1haWwgZm9yIHJldmlldwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhwb3J0LWZvci1pbXBvcnQtaW50by1vdGhlci1zY20nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5FeHBvcnRpbmcgQ2hhbmdlcyBmb3IgSW1wb3J0IGludG8gQW5vdGhlciBTQ008L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHdhbnQgdG8gZXhwb3J0IGNoYW5nZXMgZm9yIGltcG9ydCBpbnRvIGFub3RoZXIKLSAgICAgICAgICAgICAgICAgICAgU291cmNlIENvZGUgTWFuYWdlciAoU0NNKSwgeW91IGNhbiB1c2UgYW55IG9mIHRoZSBwcmV2aW91c2x5IGRpc2N1c3NlZAotICAgICAgICAgICAgICAgICAgICB0ZWNobmlxdWVzLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB0aGUgcGF0Y2hlcyBhcmUgbWFudWFsbHkgYXBwbGllZCB0byBhIHNlY29uZGFyeSB0cmVlIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgdHJlZSBpcyBjaGVja2VkIGludG8gdGhlIFNDTSwgeW91IGNhbiBsb3NlIGNoYW5nZSBpbmZvcm1hdGlvbiBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdCBsb2dzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgbm90IHJlY29tbWVuZGVkLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBNYW55IFNDTXMgY2FuIGRpcmVjdGx5IGltcG9ydCBHaXQgY29tbWl0cywgb3IgY2FuIHRyYW5zbGF0ZSBHaXQgcGF0Y2hlcyBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIG5vdCBsb3N0LgotICAgICAgICAgICAgICAgICAgICBUaG9zZSBmYWNpbGl0aWVzIGFyZSBTQ00tZGVwZW5kZW50IGFuZCB5b3Ugc2hvdWxkIHVzZSB0aGVtIHdoZW5ldmVyIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzY20td29ya2luZy13aXRoLXRoZS15b2N0by1wcm9qZWN0LWtlcm5lbC1pbi1hbm90aGVyLXNjbSc+Ci0gICAgICAgICAgICA8dGl0bGU+V29ya2luZyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IEtlcm5lbCBpbiBBbm90aGVyIFNDTTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMga2VybmVsIGRldmVsb3BtZW50IGluIGFuIFNDTSBvdGhlciB0aGFuIEdpdCwKLSAgICAgICAgICAgICAgICB3aGljaCBpcyBub3QgdGhlIHNhbWUgYXMgZXhwb3J0aW5nIGNoYW5nZXMgdG8gYW5vdGhlciBTQ00gZGVzY3JpYmVkIGVhcmxpZXIuCi0gICAgICAgICAgICAgICAgRm9yIHRoaXMgc2NlbmFyaW8sIHlvdSB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8KLSAgICAgICAgICAgICAgICBkZXZlbG9wIHRoZSBrZXJuZWwgaW4gYSBkaWZmZXJlbnQgU0NNLgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbXVzdCBiZSB0cnVlIGZvciB5b3UgdG8gYWNjb21wbGlzaCB0aGlzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgZGVsaXZlcmVkIFlvY3RvIFByb2plY3Qga2VybmVsIG11c3QgYmUgZXhwb3J0ZWQgaW50byB0aGUgc2Vjb25kCi0gICAgICAgICAgICAgICAgICAgICAgICBTQ00uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZXZlbG9wbWVudCBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdGhhdCBzZWNvbmRhcnkgU0NNIGludG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleHBvcnRpbmctZGVsaXZlcmVkLWtlcm5lbC10by1zY20nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5FeHBvcnRpbmcgdGhlIERlbGl2ZXJlZCBLZXJuZWwgdG8gdGhlIFNDTTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBTQ00sIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGV4cG9ydCB0aGUgZW50aXJlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAga2VybmVsIEdpdCByZXBvc2l0b3J5LCBicmFuY2hlcyBhbmQgYWxsLCBpbnRvIGEgbmV3IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBwcmVmZXJyZWQgYmVjYXVzZSBpdCBoYXMgdGhlIG1vc3QgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbCB0byBtYWludGFpbgotICAgICAgICAgICAgICAgICAgICB0aGUgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGNvbW1pdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiBhIGRpcmVjdCBpbXBvcnQgbWVjaGFuaXNtIGlzIG5vdCBhdmFpbGFibGUsIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvCi0gICAgICAgICAgICAgICAgICAgIGV4cG9ydCBhIGJyYW5jaCAob3Igc2VyaWVzIG9mIGJyYW5jaGVzKSBhbmQgY2hlY2sgdGhlbSBpbnRvIGEgbmV3IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgaWxsdXN0cmF0ZSBzb21lIG9mIHRoZSBzdGVwcyB5b3UgY291bGQgdXNlIHRvCi0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0aGUgPGZpbGVuYW1lPnlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAga2VybmVsIGludG8gYSBzZWNvbmRhcnkgU0NNOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGNoZWNrb3V0IHlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlCi0gICAgICQgY2QgLi4gOyBlY2hvIGxpbnV4Ly5naXQgJmd0OyAuY3ZzaWdub3JlCi0gICAgICQgY3ZzIGltcG9ydCAtbSAiaW5pdGlhbCBpbXBvcnQiIGxpbnV4IE1ZX0NPTVBBTlkgc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgbm93IHJlbG9jYXRlIHRoZSBDVlMgcmVwb3NpdG9yeSBhbmQgdXNlIGl0IGluIGEgY2VudHJhbGl6ZWQgbWFubmVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGlsbHVzdHJhdGUgaG93IHlvdSBjYW4gY29uZGVuc2UgYW5kIG1lcmdlIHR3byBCU1BzIGludG8gYQotICAgICAgICAgICAgICAgICAgICBzZWNvbmQgU0NNOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGNoZWNrb3V0IHlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlCi0gICAgICQgZ2l0IG1lcmdlIHlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy02NC9iYXNlCi0gICAgICMgcmVzb2x2ZSBhbnkgY29uZmxpY3RzIGFuZCBjb21taXQgdGhlbQotICAgICAkIGNkIC4uIDsgZWNobyBsaW51eC8uZ2l0ICZndDsgLmN2c2lnbm9yZQotICAgICAkIGN2cyBpbXBvcnQgLW0gImluaXRpYWwgaW1wb3J0IiBsaW51eCBNWV9DT01QQU5ZIHN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdpbXBvcnRpbmctY2hhbmdlcy1mb3ItYnVpbGQnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbXBvcnRpbmcgQ2hhbmdlcyBmb3IgdGhlIEJ1aWxkPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIGRldmVsb3BtZW50IGhhcyByZWFjaGVkIGEgc3VpdGFibGUgcG9pbnQgaW4gdGhlIHNlY29uZCBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8gZXhwb3J0IHRoZSBjaGFuZ2VzIGFzIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAgIFRvIGV4cG9ydCB0aGVtLCBwbGFjZSB0aGUgY2hhbmdlcyBpbiBhIHJlY2lwZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhcHBseSB0aGVtIHRvIHRoZSBrZXJuZWwgZHVyaW5nIHBhdGNoaW5nLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdic3AtY3JlYXRpbmcnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgQlNQIEJhc2VkIG9uIGFuIEV4aXN0aW5nIFNpbWlsYXIgQlNQPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIEJTUCBiYXNlZCBvbiBhbgotICAgICAgICAgICAgICAgIGV4aXN0aW5nIHNpbWlsYXIgQlNQLgotICAgICAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpcyBpbnRyb2R1Y3RvcnkgaW4gbmF0dXJlIGFuZCBkb2VzIG5vdCBwcm92aWRlIHN0ZXAtYnktc3RlcCBleGFtcGxlcy4KLSAgICAgICAgICAgICAgICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIG5ldyBCU1AsIHNlZQotICAgICAgICAgICAgICAgIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIgc2VjdGlvbiBpbiB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZSwgb3Igc2VlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9UcmFuc2NyaXB0Ol9jcmVhdGluZ19vbmVfZ2VuZXJpY19BdG9tX0JTUF9mcm9tX2Fub3RoZXInPlRyYW5zY3JpcHQ6X2NyZWF0aW5nX29uZV9nZW5lcmljX0F0b21fQlNQX2Zyb21fYW5vdGhlcjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgYmFzaWMgc3RlcHMgeW91IG5lZWQgdG8gZm9sbG93IGFyZToKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBzdXJlIHlvdSBoYXZlIHNldCB1cCBhIGxvY2FsIFNvdXJjZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNyZWF0ZSBhIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGVpdGhlciBjcmVhdGluZyBhIEdpdCByZXBvc2l0b3J5IChyZWNvbW1lbmRlZCkgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RpbmcgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DaG9vc2UgYW4gZXhpc3RpbmcgQlNQIGF2YWlsYWJsZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUcnkgdG8gbWFwIHlvdXIgYm9hcmQgZmVhdHVyZXMgYXMgY2xvc2VseSB0byB0aGUgZmVhdHVyZXMgb2YgYSBCU1AgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBzdXBwb3J0ZWQgYW5kIGV4aXN0cyBpbiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nIHdpdGggc29tZXRoaW5nIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHlvdXIgYm9hcmQgbWFrZXMgZGV2ZWxvcGluZwotICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBCU1AgZWFzaWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFsbCB0aGUgQlNQcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYW5kIHNoaXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIFlvY3RvIFByb2plY3QncyBEb3dubG9hZCBwYWdlIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2Rvd25sb2FkJz48L3VsaW5rPi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CZSBzdXJlIHlvdSBoYXZlIHRoZSBCYXNlIEJTUDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZWl0aGVyIGhhdmUgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUgYmFzZSBCU1Agc2V0IHVwIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGRvd25sb2FkZWQgYW5kIGV4dHJhY3RlZCB0aGUgZmlsZXMgZnJvbSBhIHJlbGVhc2UgQlNQIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICBFaXRoZXIgbWV0aG9kIGdpdmVzIHlvdSBhY2Nlc3MgdG8gdGhlIEJTUCBzb3VyY2UgZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBhIGNvcHkgb2YgdGhlIGV4aXN0aW5nIEJTUCwgdGh1cyBpc29sYXRpbmcgeW91ciBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgIEJTUCB3b3JrOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb3B5aW5nIHRoZSBleGlzdGluZyBCU1AgZmlsZSBzdHJ1Y3R1cmUgZ2l2ZXMgeW91IGEgbmV3IGFyZWEgaW4gd2hpY2ggdG8gd29yay48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIGNvbmZpZ3VyYXRpb24gYW5kIHJlY2lwZSBjaGFuZ2VzIHRvIHlvdXIgbmV3IEJTUDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGludm9sdmUgdGhlIGZpbGVzIGluIHRoZSBCU1AncyA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VzIGluY2x1ZGUgY3JlYXRpbmcgYSBtYWNoaW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZWRpdGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgaWRlbnRpZnkgdGhlIGtlcm5lbCB5b3Ugd2lsbCBiZSB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZSBjaGFuZ2VzIGluY2x1ZGUgcmVtb3ZpbmcsIG1vZGlmeWluZywgb3IgYWRkaW5nIG5ldyByZWNpcGUgZmlsZXMgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3QgdGhlIGJ1aWxkIHByb2Nlc3Mgb24gd2hhdCBmZWF0dXJlcyB0byBpbmNsdWRlIGluIHRoZSBpbWFnZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgYnVpbGQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgYWN0dWFsbHkgaW5pdGlhdGUgdGhlIGJ1aWxkLCB5b3UgbmVlZCB0byBzZXQgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBieSBzb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgaW5pdGlhbGl6YXRpb24gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQsIHlvdSBuZWVkIHRvIG1ha2Ugc29tZSBidWlsZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgaW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBjcmVhdGUgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZGVjaWRlIG9uIHRoZSB0eXBlIG9mIGltYWdlIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgKGUuZy4gbWluaW1hbCwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUsIHNhdG8sIGFuZCBzbyBmb3J0aCkgYW5kIHRoZW4gc3RhcnQgdGhlIGJ1aWxkIHVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndGlwLWRpcnR5LXN0cmluZyc+Ci0gICAgICAgICAgICA8dGl0bGU+Ii1kaXJ0eSIgU3RyaW5nPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYga2VybmVsIGltYWdlcyBhcmUgYmVpbmcgYnVpbHQgd2l0aCAiLWRpcnR5IiBvbiB0aGUgZW5kIG9mIHRoZSB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgc3RyaW5nLCB0aGlzIHNpbXBseSBtZWFucyB0aGF0IG1vZGlmaWNhdGlvbnMgaW4gdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXZlIG5vdCBiZWVuIGNvbW1pdHRlZC4KLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHN0YXR1cwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIGFib3ZlIEdpdCBjb21tYW5kIHRvIHJlcG9ydCBtb2RpZmllZCwgcmVtb3ZlZCwgb3IgYWRkZWQgZmlsZXMuCi0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBjb21taXQgdGhvc2UgY2hhbmdlcyB0byB0aGUgdHJlZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSB3aWxsIGJlIHNhdmVkLAotICAgICAgICAgICAgICAgIGV4cG9ydGVkLCBvciB1c2VkLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGNvbW1pdCB0aGUgY2hhbmdlcyB5b3UgbmVlZCB0byByZWJ1aWxkIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGJydXRlIGZvcmNlIHBpY2t1cCBhbmQgY29tbWl0IGFsbCBzdWNoIHBlbmRpbmcgY2hhbmdlcywgZW50ZXIgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGFkZCAuCi0gICAgICQgZ2l0IGNvbW1pdCAtcyAtYSAtbSAiZ2V0dGluZyByaWQgb2YgLWRpcnR5IgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTmV4dCwgcmVidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEueG1sCmluZGV4IDllMDUxN2QuLmMzYTIwNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEueG1sCkBAIC0zNiw3ICszNiw4IEBACiAgICAgICAgICAgICAgICAgPC9xdWVzdGlvbj4KICAgICAgICAgICAgICAgICA8YW5zd2VyPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIHRvIHRoZSAiPGxpbmsgbGlua2VuZD0nZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L2Fuc3dlcj4KQEAgLTczLDggKzc0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgImtlcm5lbC1pbWFnZSIuPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllcjwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIGluZm9ybWF0aW9uIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBob3cgdG8gdXNlIGFuIGFwcGVuZCBmaWxlIHRvIG92ZXJyaWRlIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGFuIGFwcGVuZCBmaWxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBtZXRhZGF0YS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvYW5zd2VyPgogICAgICAgICAgICAgPC9xYW5kYWVudHJ5PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwKaW5kZXggMjYzZTUwMC4uZGJhNDU0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sCkBAIC01LDE0NCArNSwyNjMgQEAKIDxjaGFwdGVyIGlkPSdrZXJuZWwtZGV2LWludHJvJz4KIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgogCi08IS0tCi08cGFyYT4KLSAgICA8ZW1waGFzaXM+QVIgLSBEYXJyZW4gSGFydDo8L2VtcGhhc2lzPiAgU2VlIGlmIHRoZSBjb25jZXB0cyBpbiB0aGVzZQotICAgIHRocmVlIGJ1bGxldHMgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBpbiBzb21ld2hlcmUgaW4gdGhpcyBtYW51YWw6Ci0gICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvIHdlIGNvbnZleSB0aGF0IG91ciBrZXJuZWwgR2l0IHJlcG9zaXRvcmllcwotICAgICAgICAgICAgaGF2ZSBhIGNsZWFyIGFuZCBjb250aW51b3VzIGhpc3RvcnksIHNpbWlsYXIgdG8gdGhlIHdheSB0aGUKLSAgICAgICAgICAgIGtlcm5lbCBHaXQgcmVwb3NpdG9yaWVzIGZvciA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBkby4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG9lcyB0aGUgbWFudWFsIG5vdGUgdGhhdCBZb2N0byBQcm9qZWN0IGRlbGl2ZXJzCi0gICAgICAgICAgICBhIGtleSBzZXQgb2Ygc3VwcG9ydGVkIGtlcm5lbCB0eXBlcywgd2hlcmUKLSAgICAgICAgICAgIGVhY2ggdHlwZSBpcyB0YWlsb3JlZCB0byBtZWV0IGEgc3BlY2lmaWMgdXNlIChlLmcuIG5ldHdvcmtpbmcsCi0gICAgICAgICAgICBjb25zdW1lciwgZGV2aWNlcywgYW5kIHNvIGZvcnRoKS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvIHdlIGNvbnZleSB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYQotICAgICAgICAgICAgR2l0IGJyYW5jaGluZyBzdHJhdGVneSB0aGF0LCBmcm9tIGEKLSAgICAgICAgICAgIGRldmVsb3BlcidzIHBvaW50IG9mIHZpZXcsIHJlc3VsdHMgaW4gYSBsaW5lYXIgcGF0aCBmcm9tIHRoZQotICAgICAgICAgICAgYmFzZWxpbmUga2VybmVsLm9yZywgdGhyb3VnaCBhIHNlbGVjdCBncm91cCBvZiBmZWF0dXJlcyBhbmQKLSAgICAgICAgICAgIGVuZHMgd2l0aCB0aGVpciBCU1Atc3BlY2lmaWMgY29tbWl0cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICA8L2l0ZW1pemVkbGlzdD4KLTwvcGFyYT4KLS0tPgorPHNlY3Rpb24gaWQ9J2tlcm5lbC1kZXYtb3ZlcnZpZXcnPgorICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CiAKLSAgICA8c2VjdGlvbiBpZD0na2VybmVsLWRldi1vdmVydmlldyc+Ci0gICAgICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICAgIFJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBpbnRlbmQgdG8gbWFrZSB1c2Ugb2YgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGNoYW5jZXMgYXJlIHlvdSB3aWxsIHdvcmsgd2l0aCB0aGUgTGludXgga2VybmVsLgorICAgICAgICBUaGlzIG1hbnVhbCBkZXNjcmliZXMgaG93IHRvIHNldCB1cCB5b3VyIGJ1aWxkIGhvc3QgdG8gc3VwcG9ydAorICAgICAgICBrZXJuZWwgZGV2ZWxvcG1lbnQsIGludHJvZHVjZXMgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzLAorICAgICAgICBwcm92aWRlcyBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4sCisgICAgICAgIGRlc2NyaWJlcyBjb21tb24gdGFza3MgeW91IGNhbiBwZXJmb3JtIHVzaW5nIHRoZSBrZXJuZWwgdG9vbHMsCisgICAgICAgIHNob3dzIHlvdSBob3cgdG8gdXNlIHRoZSBrZXJuZWwgTWV0YWRhdGEgbmVlZGVkIHRvIHdvcmsgd2l0aAorICAgICAgICB0aGUga2VybmVsIGluc2lkZSB0aGUgWW9jdG8gUHJvamVjdCwgYW5kIHByb3ZpZGVzIGluc2lnaHQgaW50byBob3cKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgdGVhbSBkZXZlbG9wcyBhbmQgbWFpbnRhaW5zIFlvY3RvIExpbnV4IGtlcm5lbAorICAgICAgICBHaXQgcmVwb3NpdG9yaWVzIGFuZCBNZXRhZGF0YS4KKyAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBpbnRlbmQgdG8gbWFrZSB1c2Ugb2YgdGhlIFlvY3RvIFByb2plY3QsCi0gICAgICAgICAgICBjaGFuY2VzIGFyZSB5b3Ugd2lsbCB3b3JrIHdpdGggdGhlIExpbnV4IGtlcm5lbC4KLSAgICAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIExpbnV4IGtlcm5lbAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4sCi0gICAgICAgICAgICBkZXNjcmliZXMgY29tbW9uIHRhc2tzIHlvdSBjYW4gcGVyZm9ybSB1c2luZyB0aGUga2VybmVsIHRvb2xzLAotICAgICAgICAgICAgYW5kIHNob3dzIHlvdSBob3cgdG8gdXNlIHRoZSBrZXJuZWwgTWV0YWRhdGEgbmVlZGVkIHRvIHdvcmsgd2l0aAotICAgICAgICAgICAgdGhlIGtlcm5lbCBpbnNpZGUgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgICAgIEVhY2ggWW9jdG8gUHJvamVjdCByZWxlYXNlIGhhcyBhIHNldCBvZiBZb2N0byBMaW51eCBrZXJuZWwgcmVjaXBlcywKKyAgICAgICAgd2hvc2UgR2l0IHJlcG9zaXRvcmllcyB5b3UgY2FuIHZpZXcgaW4gdGhlIFlvY3RvCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IHVuZGVyCisgICAgICAgIHRoZSAiWW9jdG8gTGludXggS2VybmVsIiBoZWFkaW5nLgorICAgICAgICBOZXcgcmVjaXBlcyBmb3IgdGhlIHJlbGVhc2UgdHJhY2sgdGhlIGxhdGVzdCBMaW51eCBrZXJuZWwKKyAgICAgICAgdXBzdHJlYW0gZGV2ZWxvcG1lbnRzIGZyb20KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5rZXJuZWwub3JnJz48L3VsaW5rPiBhbmQgaW50cm9kdWNlCisgICAgICAgIG5ld2x5LXN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFByZXZpb3VzIHJlY2lwZXMgaW4gdGhlIHJlbGVhc2UgYXJlIHJlZnJlc2hlZCBhbmQgc3VwcG9ydGVkIGZvciBhdAorICAgICAgICBsZWFzdCBvbmUgYWRkaXRpb25hbCBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgIEFzIHRoZXkgYWxpZ24sIHRoZXNlIHByZXZpb3VzIHJlbGVhc2VzIGFyZSB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlCisgICAgICAgIGxhdGVzdCBmcm9tIHRoZSBMb25nIFRlcm0gU3VwcG9ydCBJbml0aWF0aXZlIChMVFNJKSBwcm9qZWN0LgorICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgWW9jdG8gTGludXgga2VybmVscyBhbmQgTFRTSSBpbiB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1iaWctcGljdHVyZSc+WW9jdG8gUHJvamVjdCBLZXJuZWwgRGV2ZWxvcG1lbnQgYW5kIE1haW50ZW5hbmNlPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+CiAKLSAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVhY2ggWW9jdG8gUHJvamVjdCByZWxlYXNlIGhhcyBhIHNldCBvZiBsaW51eC15b2N0byByZWNpcGVzLCB3aG9zZQotICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcyB5b3UgY2FuIHZpZXcgaW4gdGhlIFlvY3RvCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiB1bmRlcgotICAgICAgICAgICAgdGhlICJZb2N0byBMaW51eCBLZXJuZWwiIGhlYWRpbmcuCi0gICAgICAgICAgICBOZXcgcmVjaXBlcyBmb3IgdGhlIHJlbGVhc2UgdHJhY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBkZXZlbG9wbWVudHMKLSAgICAgICAgICAgIGFuZCBpbnRyb2R1Y2UgbmV3bHktc3VwcG9ydGVkIHBsYXRmb3Jtcy4KLSAgICAgICAgICAgIFByZXZpb3VzIHJlY2lwZXMgaW4gdGhlIHJlbGVhc2UgYXJlIHJlZnJlc2hlZCBhbmQgc3VwcG9ydGVkIGZvciBhdAotICAgICAgICAgICAgbGVhc3Qgb25lIGFkZGl0aW9uYWwgcmVsZWFzZS4KLSAgICAgICAgICAgIEFzIHRoZXkgYWxpZ24sIHRoZXNlIHByZXZpb3VzIHJlbGVhc2VzIGFyZSB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlCi0gICAgICAgICAgICBsYXRlc3QgZnJvbSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvb3JnYW5pemF0aW9uL2xvbmctdGVybS1zdXBwb3J0LWluaXRpYXRpdmUtbHRzaSc+TG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZTwvdWxpbms+Ci0gICAgICAgICAgICAoTFRTSSkgcHJvamVjdC4KLSAgICAgICAgICAgIEFsc28gaW5jbHVkZWQgaXMgYSBsaW51eC15b2N0byBkZXZlbG9wbWVudCByZWNpcGUKLSAgICAgICAgICAgICg8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiPC9maWxlbmFtZT4pIHNob3VsZCB5b3Ugd2FudCB0byB3b3JrCi0gICAgICAgICAgICB3aXRoIHRoZSB2ZXJ5IGxhdGVzdCBpbiB1cHN0cmVhbSBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgYW5kCi0gICAgICAgICAgICBrZXJuZWwgTWV0YWRhdGEgZGV2ZWxvcG1lbnQuCi0gICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgQWxzbyBpbmNsdWRlZCBpcyBhIFlvY3RvIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCByZWNpcGUKKyAgICAgICAgKDxmaWxlbmFtZT5saW51eC15b2N0by1kZXYuYmI8L2ZpbGVuYW1lPikgc2hvdWxkIHlvdSB3YW50IHRvIHdvcmsKKyAgICAgICAgd2l0aCB0aGUgdmVyeSBsYXRlc3QgaW4gdXBzdHJlYW0gWW9jdG8gTGludXgga2VybmVsIGRldmVsb3BtZW50IGFuZAorICAgICAgICBrZXJuZWwgTWV0YWRhdGEgZGV2ZWxvcG1lbnQuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgRm9yIG1vcmUgb24gWW9jdG8gTGludXgga2VybmVscywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1iaWctcGljdHVyZSc+WW9jdG8gUHJvamVjdCBLZXJuZWwgRGV2ZWxvcG1lbnQgYW5kIE1haW50ZW5hbmNlPC9saW5rPgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGFsc28gcHJvdmlkZXMgYSBwb3dlcmZ1bCBzZXQgb2Yga2VybmVsCi0gICAgICAgICAgICB0b29scyBmb3IgbWFuYWdpbmcgTGludXgga2VybmVsIHNvdXJjZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YS4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIHRvb2xzIHRvIG1ha2UgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBjaGFuZ2UsCi0gICAgICAgICAgICBhcHBseSBtdWx0aXBsZSBwYXRjaGVzLCBvciB3b3JrIHdpdGggeW91ciBvd24ga2VybmVsIHNvdXJjZXMuCi0gICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYWxzbyBwcm92aWRlcyBhIHBvd2VyZnVsIHNldCBvZiBrZXJuZWwKKyAgICAgICAgdG9vbHMgZm9yIG1hbmFnaW5nIFlvY3RvIExpbnV4IGtlcm5lbCBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9uIGRhdGEuCisgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIHRvb2xzIHRvIG1ha2UgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBjaGFuZ2UsCisgICAgICAgIGFwcGx5IG11bHRpcGxlIHBhdGNoZXMsIG9yIHdvcmsgd2l0aCB5b3VyIG93biBrZXJuZWwgc291cmNlcy4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUga2VybmVsIHRvb2xzIGFsbG93IHlvdSB0byBnZW5lcmF0ZSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICBmcmFnbWVudHMgdGhhdCBzcGVjaWZ5IG9ubHkgd2hhdCB5b3UgbXVzdCwgYW5kIG5vdGhpbmcgbW9yZS4KLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIG9ubHkgbmVlZCB0byBjb250YWluIHRoZSBoaWdoZXN0IGxldmVsCi0gICAgICAgICAgICB2aXNpYmxlIDxmaWxlbmFtZT5DT05GSUc8L2ZpbGVuYW1lPiBvcHRpb25zIGFzIHByZXNlbnRlZCBieSB0aGUgTGludXgKLSAgICAgICAgICAgIGtlcm5lbCA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHN5c3RlbS4KLSAgICAgICAgICAgIENvbnRyYXN0IHRoaXMgYWdhaW5zdCBhIGNvbXBsZXRlIExpbnV4IGtlcm5lbAotICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiwgd2hpY2ggaW5jbHVkZXMgYWxsIHRoZSBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICBzZWxlY3RlZCA8ZmlsZW5hbWU+Q09ORklHPC9maWxlbmFtZT4gb3B0aW9ucy4KLSAgICAgICAgICAgIFRoaXMgZWZmaWNpZW5jeSByZWR1Y2VzIHlvdXIgbWFpbnRlbmFuY2UgZWZmb3J0IGFuZCBhbGxvd3MgeW91Ci0gICAgICAgICAgICB0byBmdXJ0aGVyIHNlcGFyYXRlIHlvdXIgY29uZmlndXJhdGlvbiBpbiB3YXlzIHRoYXQgbWFrZSBzZW5zZSBmb3IKLSAgICAgICAgICAgIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgIEEgY29tbW9uIHNwbGl0IHNlcGFyYXRlcyBwb2xpY3kgYW5kIGhhcmR3YXJlLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFsbCB5b3VyIGtlcm5lbHMgbWlnaHQgc3VwcG9ydAotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5wcm9jPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5zeXM8L2ZpbGVuYW1lPiBmaWxlc3lzdGVtcywKLSAgICAgICAgICAgIGJ1dCBvbmx5IHNwZWNpZmljIGJvYXJkcyByZXF1aXJlIHNvdW5kLCBVU0IsIG9yIHNwZWNpZmljIGRyaXZlcnMuCi0gICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGluZGl2aWR1YWxseSBhbGxvd3MgeW91IHRvIGFnZ3JlZ2F0ZQotICAgICAgICAgICAgdGhlbSB0b2dldGhlciBhcyBuZWVkZWQsIGJ1dCBtYWludGFpbnMgdGhlbSBpbiBvbmx5IG9uZSBwbGFjZS4KLSAgICAgICAgICAgIFNpbWlsYXIgbG9naWMgYXBwbGllcyB0byBzZXBhcmF0aW5nIHNvdXJjZSBjaGFuZ2VzLgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBrZXJuZWwgdG9vbHMgYWxsb3cgeW91IHRvIGdlbmVyYXRlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgZnJhZ21lbnRzIHRoYXQgc3BlY2lmeSBvbmx5IHdoYXQgeW91IG11c3QsIGFuZCBub3RoaW5nIG1vcmUuCisgICAgICAgIENvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIG9ubHkgbmVlZCB0byBjb250YWluIHRoZSBoaWdoZXN0IGxldmVsCisgICAgICAgIHZpc2libGUgPGZpbGVuYW1lPkNPTkZJRzwvZmlsZW5hbWU+IG9wdGlvbnMgYXMgcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBzeXN0ZW0uCisgICAgICAgIENvbnRyYXN0IHRoaXMgYWdhaW5zdCBhIGNvbXBsZXRlIFlvY3RvIExpbnV4IGtlcm5lbAorICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGluY2x1ZGVzIGFsbCB0aGUgYXV0b21hdGljYWxseQorICAgICAgICBzZWxlY3RlZCA8ZmlsZW5hbWU+Q09ORklHPC9maWxlbmFtZT4gb3B0aW9ucy4KKyAgICAgICAgVGhpcyBlZmZpY2llbmN5IHJlZHVjZXMgeW91ciBtYWludGVuYW5jZSBlZmZvcnQgYW5kIGFsbG93cyB5b3UKKyAgICAgICAgdG8gZnVydGhlciBzZXBhcmF0ZSB5b3VyIGNvbmZpZ3VyYXRpb24gaW4gd2F5cyB0aGF0IG1ha2Ugc2Vuc2UgZm9yCisgICAgICAgIHlvdXIgcHJvamVjdC4KKyAgICAgICAgQSBjb21tb24gc3BsaXQgc2VwYXJhdGVzIHBvbGljeSBhbmQgaGFyZHdhcmUuCisgICAgICAgIEZvciBleGFtcGxlLCBhbGwgeW91ciBrZXJuZWxzIG1pZ2h0IHN1cHBvcnQgdGhlCisgICAgICAgIDxmaWxlbmFtZT5wcm9jPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5zeXM8L2ZpbGVuYW1lPiBmaWxlc3lzdGVtcywKKyAgICAgICAgYnV0IG9ubHkgc3BlY2lmaWMgYm9hcmRzIHJlcXVpcmUgc291bmQsIFVTQiwgb3Igc3BlY2lmaWMgZHJpdmVycy4KKyAgICAgICAgU3BlY2lmeWluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbmRpdmlkdWFsbHkgYWxsb3dzIHlvdSB0byBhZ2dyZWdhdGUKKyAgICAgICAgdGhlbSB0b2dldGhlciBhcyBuZWVkZWQsIGJ1dCBtYWludGFpbnMgdGhlbSBpbiBvbmx5IG9uZSBwbGFjZS4KKyAgICAgICAgU2ltaWxhciBsb2dpYyBhcHBsaWVzIHRvIHNlcGFyYXRpbmcgc291cmNlIGNoYW5nZXMuCisgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBtYWludGFpbiB5b3VyIG93biBrZXJuZWwgc291cmNlcyBhbmQgbmVlZCB0byBtYWtlCi0gICAgICAgICAgICBvbmx5IG1pbmltYWwgY2hhbmdlcyB0byB0aGUgc291cmNlcywgdGhlIHJlbGVhc2VkIHJlY2lwZXMgcHJvdmlkZSBhCi0gICAgICAgICAgICB2ZXR0ZWQgYmFzZSB1cG9uIHdoaWNoIHRvIGxheWVyIHlvdXIgY2hhbmdlcy4KLSAgICAgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gYmVuZWZpdCBmcm9tIHRoZSBjb250aW51YWwga2VybmVsCi0gICAgICAgICAgICBpbnRlZ3JhdGlvbiBhbmQgdGVzdGluZyBwZXJmb3JtZWQgZHVyaW5nIGRldmVsb3BtZW50IG9mIHRoZQotICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBJZiB5b3UgZG8gbm90IG1haW50YWluIHlvdXIgb3duIGtlcm5lbCBzb3VyY2VzIGFuZCBuZWVkIHRvIG1ha2UKKyAgICAgICAgb25seSBtaW5pbWFsIGNoYW5nZXMgdG8gdGhlIHNvdXJjZXMsIHRoZSByZWxlYXNlZCByZWNpcGVzIHByb3ZpZGUgYQorICAgICAgICB2ZXR0ZWQgYmFzZSB1cG9uIHdoaWNoIHRvIGxheWVyIHlvdXIgY2hhbmdlcy4KKyAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byBiZW5lZml0IGZyb20gdGhlIGNvbnRpbnVhbCBrZXJuZWwKKyAgICAgICAgaW50ZWdyYXRpb24gYW5kIHRlc3RpbmcgcGVyZm9ybWVkIGR1cmluZyBkZXZlbG9wbWVudCBvZiB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiwgaW5zdGVhZCwgeW91IGhhdmUgYSB2ZXJ5IHNwZWNpZmljIExpbnV4IGtlcm5lbCBzb3VyY2UgdHJlZQotICAgICAgICAgICAgYW5kIGFyZSB1bmFibGUgdG8gYWxpZ24gd2l0aCBvbmUgb2YgdGhlIG9mZmljaWFsIGxpbnV4LXlvY3RvCi0gICAgICAgICAgICByZWNpcGVzLCBhbiBhbHRlcm5hdGl2ZSBleGlzdHMgYnkgd2hpY2ggeW91IGNhbiB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICBQcm9qZWN0IExpbnV4IGtlcm5lbCB0b29scyB3aXRoIHlvdXIgb3duIGtlcm5lbCBzb3VyY2VzLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgorICAgIDxwYXJhPgorICAgICAgICBJZiwgaW5zdGVhZCwgeW91IGhhdmUgYSB2ZXJ5IHNwZWNpZmljIExpbnV4IGtlcm5lbCBzb3VyY2UgdHJlZQorICAgICAgICBhbmQgYXJlIHVuYWJsZSB0byBhbGlnbiB3aXRoIG9uZSBvZiB0aGUgb2ZmaWNpYWwgWW9jdG8gTGludXgga2VybmVsCisgICAgICAgIHJlY2lwZXMsIGFuIGFsdGVybmF0aXZlIGV4aXN0cyBieSB3aGljaCB5b3UgY2FuIHVzZSB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBMaW51eCBrZXJuZWwgdG9vbHMgd2l0aCB5b3VyIG93biBrZXJuZWwgc291cmNlcy4KKyAgICA8L3BhcmE+CiAKLSAgICA8c2VjdGlvbiBpZD0na2VybmVsLWRldi1vdGhlci1yZXNvdXJjZXMnPgotICAgICAgICA8dGl0bGU+T3RoZXIgUmVzb3VyY2VzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIG1hbnVhbCBwcm92aWRlcyBpbnN0cnVjdGlvbnMgZm9yIGNvbXBsZXRpbmcKKyAgICAgICAgc3BlY2lmaWMgTGludXgga2VybmVsIGRldmVsb3BtZW50IHRhc2tzLgorICAgICAgICBUaGVzZSBpbnN0cnVjdGlvbnMgYXNzdW1lIHlvdSBhcmUgY29tZm9ydGFibGUgd29ya2luZyB3aXRoCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcGVuZW1iZWRkZWQub3JnL3dpa2kvQml0YmFrZSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgIHJlY2lwZXMgYW5kIGJhc2ljIG9wZW4tc291cmNlIGRldmVsb3BtZW50IHRvb2xzLgorICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbmNlcHRzIHdpbGwgZmFjaWxpdGF0ZSB0aGUgcHJvY2VzcyBvZiB3b3JraW5nCisgICAgICAgIHdpdGggdGhlIGtlcm5lbCByZWNpcGVzLgorICAgICAgICBJZiB5b3UgZmluZCB5b3UgbmVlZCBzb21lIGFkZGl0aW9uYWwgYmFja2dyb3VuZCwgcGxlYXNlIGJlIHN1cmUgdG8KKyAgICAgICAgcmV2aWV3IGFuZCB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbjoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtmbG93PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1tb2RpZmljYXRpb24td29ya2Zsb3cnPktlcm5lbCBNb2RpZmljYXRpb24gV29ya2Zsb3c8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBzZWN0aW9ucyB0aGF0IGZvbGxvdyBwcm92aWRlIGluc3RydWN0aW9ucyBmb3IgY29tcGxldGluZwotICAgICAgICAgICAgc3BlY2lmaWMgTGludXgga2VybmVsIGRldmVsb3BtZW50IHRhc2tzLgotICAgICAgICAgICAgVGhlc2UgaW5zdHJ1Y3Rpb25zIGFzc3VtZSB5b3UgYXJlIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5lbWJlZGRlZC5vcmcvd2lraS9CaXRiYWtlJz5CaXRCYWtlPC91bGluaz4KLSAgICAgICAgICAgIHJlY2lwZXMgYW5kIGJhc2ljIG9wZW4tc291cmNlIGRldmVsb3BtZW50IHRvb2xzLgotICAgICAgICAgICAgVW5kZXJzdGFuZGluZyB0aGVzZSBjb25jZXB0cyB3aWxsIGZhY2lsaXRhdGUgdGhlIHByb2Nlc3Mgb2Ygd29ya2luZwotICAgICAgICAgICAgd2l0aCB0aGUga2VybmVsIHJlY2lwZXMuCi0gICAgICAgICAgICBJZiB5b3UgZmluZCB5b3UgbmVlZCBzb21lIGFkZGl0aW9uYWwgYmFja2dyb3VuZCwgcGxlYXNlIGJlIHN1cmUgdG8KLSAgICAgICAgICAgIHJldmlldyBhbmQgdW5kZXJzdGFuZCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb246Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1vZGlmeWluZy1zb3VyY2UtY29kZSc+TW9kaWZ5aW5nIFNvdXJjZSBDb2RlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbW9kaWZ5aW5nLXRoZS1rZXJuZWwnPk1vZGlmeWluZyB0aGUgS2VybmVsPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSwgd2hpbGUgdGhpcyBkb2N1bWVudCBmb2N1c2VzIG9uIHRoZSBtYW51YWwgY3JlYXRpb24gb2YKKyAgICAgICAgcmVjaXBlcywgcGF0Y2hlcywgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGF1dG9tYXRlCisgICAgICAgIHRoaXMgcHJvY2VzcyB3aXRoIGV4aXN0aW5nIGNvbnRlbnQgYW5kIHdvcmsgd2VsbCB0byBjcmVhdGUgdGhlCisgICAgICAgIGluaXRpYWwgZnJhbWV3b3JrIGFuZCBib2lsZXJwbGF0ZSBjb2RlLgorICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGVzZSB0b29scywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjdXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+VXNpbmcgdGhlIFlvY3RvIFByb2plY3QncyBCU1AgVG9vbHM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MKKyAgICAgICAgR3VpZGUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRmluYWxseSwgd2hpbGUgdGhpcyBkb2N1bWVudCBmb2N1c2VzIG9uIHRoZSBtYW51YWwgY3JlYXRpb24gb2YKLSAgICAgICAgICAgIHJlY2lwZXMsIHBhdGNoZXMsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIHRvb2xzIGFyZSBhdmFpbGFibGUgdG8gYXV0b21hdGUKLSAgICAgICAgICAgIHRoaXMgcHJvY2VzcyB3aXRoIGV4aXN0aW5nIGNvbnRlbnQgYW5kIHdvcmsgd2VsbCB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgICBpbml0aWFsIGZyYW1ld29yayBhbmQgYm9pbGVycGxhdGUgY29kZS4KLSAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZXNlIHRvb2xzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjdXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+VXNpbmcgdGhlIFlvY3RvIFByb2plY3QncyBCU1AgVG9vbHM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzCi0gICAgICAgICAgICBHdWlkZS4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSdrZXJuZWwtbW9kaWZpY2F0aW9uLXdvcmtmbG93Jz4KKyAgICA8dGl0bGU+S2VybmVsIE1vZGlmaWNhdGlvbiBXb3JrZmxvdzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgS2VybmVsIG1vZGlmaWNhdGlvbiBpbnZvbHZlcyBjaGFuZ2luZyB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwsCisgICAgICAgIHdoaWNoIGNvdWxkIGludm9sdmUgY2hhbmdpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzIHdlbGwgYXMgYWRkaW5nCisgICAgICAgIG5ldyBrZXJuZWwgcmVjaXBlcy4KKyAgICAgICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGNhbiBiZSBhZGRlZCBpbiB0aGUgZm9ybSBvZiBjb25maWd1cmF0aW9uCisgICAgICAgIGZyYWdtZW50cywgd2hpbGUgcmVjaXBlIG1vZGlmaWNhdGlvbiBjb21lcyB0aHJvdWdoIHRoZSBrZXJuZWwncworICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWw8L2ZpbGVuYW1lPiBhcmVhIGluIGEga2VybmVsIGxheWVyIHlvdSBjcmVhdGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAga2VybmVsIG1vZGlmaWNhdGlvbiB3b3JrZmxvdy4KKyAgICAgICAgVGhlIGlsbHVzdHJhdGlvbiBhbmQgYWNjb21wYW55aW5nIGxpc3QgcHJvdmlkZSBnZW5lcmFsIGluZm9ybWF0aW9uCisgICAgICAgIGFuZCByZWZlcmVuY2VzIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyIKKyAgICAgICAgICAgIHdpZHRoPSI5aW4iIGRlcHRoPSI1aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIHRvIFN1cHBvcnQKKyAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyN5cC1yZXNvdXJjZXMnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3Igb3B0aW9ucyBvbiBob3cKKyAgICAgICAgICAgICAgICB0byBnZXQgYSBidWlsZCBob3N0IHJlYWR5IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gZm9yIEtlcm5lbCBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIGFuIGV4dGVuc2libGUgU0RLIGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgbWV0aG9kcyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIEVpdGhlciB3YXksIHRoZXJlIGFyZSBzdGVwcyB5b3UgbmVlZCB0byB0YWtlIHRvIGdldCB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCByZWFkeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgZVNESyByZXF1aXJlcworICAgICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgYSBjbGVhbiBidWlsZCBvZiB0aGUgaW1hZ2UgYW5kIHRoYXQgeW91IGFyZQorICAgICAgICAgICAgICAgIHNldCB1cCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlU0RLLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktdG8tZGV2ZWxvcC11c2luZy1kZXZ0b29sJz5HZXR0aW5nIFJlYWR5IHRvIERldmVsb3AgVXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Vc2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgcmVxdWlyZXMgdGhhdCB5b3UKKyAgICAgICAgICAgICAgICBoYXZlIHRoZSBrZXJuZWwgc291cmNlIGF2YWlsYWJsZSBpbiBhbiBpc29sYXRlZCBsb2NhbCBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENoYW5nZXMgdG8gdGhlIEtlcm5lbCBTb3VyY2UgQ29kZSBpZgorICAgICAgICAgICAgICAgIGFwcGxpY2FibGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBNb2RpZnlpbmcgdGhlIGtlcm5lbCBkb2VzIG5vdCBhbHdheXMgbWVhbiBkaXJlY3RseQorICAgICAgICAgICAgICAgIGNoYW5naW5nIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgaGF2ZSB0byBkbyB0aGlzLCB5b3UgbWFrZSB0aGUgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUgZVNESydzIEJ1aWxkIERpcmVjdG9yeSBpZiB5b3UgYXJlIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRyYWRpdGlvbmFsIGtlcm5lbCBkZXZlbG9wbWVudCwgeW91CisgICAgICAgICAgICAgICAgZWRpdCB0aGUgc291cmNlIGZpbGVzIGluIHRoZSBrZXJuZWwncyBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgS2VybmVsIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyBpZgorICAgICAgICAgICAgICAgIEFwcGxpY2FibGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIHNpdHVhdGlvbiBjYWxscyBmb3IgY2hhbmdpbmcgdGhlIGtlcm5lbCdzCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd1c2luZy1tZW51Y29uZmlnJz48ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIGludGVyYWN0aXZlbHkgZGV2ZWxvcCBhbmQgdGVzdCB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGNoYW5nZXMgeW91IGFyZSBtYWtpbmcgdG8gdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICBTYXZpbmcgY2hhbmdlcyB5b3UgbWFrZSB3aXRoIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB1cGRhdGVzIHRoZSBrZXJuZWwncyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICBUcnkgdG8gcmVzaXN0IHRoZSB0ZW1wdGF0aW9uIHRvIGRpcmVjdGx5IGVkaXQgYW4KKyAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGFtb25nIHRoZSBzb3VyY2UgY29kZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvLCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZWdlbmVyYXRlcyB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBjaGFuZ2VzIG1hZGUgdXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFuZCB5b3UgaGF2ZSBzYXZlZCB0aGVtLCB5b3UgY2FuIGRpcmVjdGx5IGNvbXBhcmUgdGhlCisgICAgICAgICAgICAgICAgcmVzdWx0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhZ2FpbnN0IGFuCisgICAgICAgICAgICAgICAgZXhpc3Rpbmcgb3JpZ2luYWwgYW5kIGdhdGhlciB0aG9zZSBjaGFuZ2VzIGludG8gYQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPmNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZTwvbGluaz4KKyAgICAgICAgICAgICAgICB0byBiZSByZWZlcmVuY2VkIGZyb20gd2l0aGluIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSB3b3JraW5nIGluIGEgQlNQIGxheWVyCisgICAgICAgICAgICAgICAgYW5kIG5lZWQgdG8gbW9kaWZ5IHRoZSBCU1AncyBrZXJuZWwncyBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPjxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc2NyaXB0IGFzIHdlbGwgYXMgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+IHNjcmlwdCBsZXRzCisgICAgICAgICAgICAgICAgeW91IGludGVyYWN0aXZlbHkgc2V0IHVwIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVidWlsZCB0aGUgS2VybmVsIEltYWdlIFdpdGggWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgUmVidWlsZGluZyB0aGUga2VybmVsIGltYWdlIGFwcGxpZXMgeW91ciBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHRhcmdldCBoYXJkd2FyZSwgeW91IGNhbiB2ZXJpZnkgeW91ciBjaGFuZ2VzCisgICAgICAgICAgICAgICAgb24gYWN0dWFsIGhhcmR3YXJlIG9yIHBlcmhhcHMgUUVNVS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGRldmVsb3BlcidzIGd1aWRlIGNvdmVycyBjb21tb24gdGFza3MgdHlwaWNhbGx5CisgICAgICAgIHVzZWQgZHVyaW5nIGtlcm5lbCBkZXZlbG9wbWVudCwgYWR2YW5jZWQgTWV0YWRhdGEgdXNhZ2UsIGFuZCBZb2N0byBMaW51eAorICAgICAgICBrZXJuZWwgbWFpbnRlbmFuY2UgY29uY2VwdHMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKaW5kZXggNmJiMGNmNi4uZjVmZDE4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbApAQCAtNyw4MiArNywxNDQgQEAKIAogICAgIDxzZWN0aW9uIGlkPSd0cmVlLWNvbnN0cnVjdGlvbic+CiAgICAgICAgIDx0aXRsZT5UcmVlIENvbnN0cnVjdGlvbjwvdGl0bGU+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNvbnN0cnVjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIHJlcG9zaXRvcmllcwotICAgICAgICAgICAgYXMgYWNjb21wbGlzaGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdG8gY3JlYXRlIGtlcm5lbCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICBUaGVzZSBrZXJuZWwgcmVwb3NpdG9yaWVzIGFyZSBmb3VuZCB1bmRlciB0aGUgaGVhZGluZyAiWW9jdG8gTGludXggS2VybmVsIiBhdAorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBjb25zdHJ1Y3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsCisgICAgICAgICAgICBzb3VyY2UgcmVwb3NpdG9yaWVzIGFzIGFjY29tcGxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHRvCisgICAgICAgICAgICBjcmVhdGUgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgIFRoZXNlIGtlcm5lbCByZXBvc2l0b3JpZXMgYXJlIGZvdW5kIHVuZGVyIHRoZSBoZWFkaW5nICJZb2N0byBMaW51eAorICAgICAgICAgICAgS2VybmVsIiBhdAogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz4mWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2k8L3VsaW5rPgotICAgICAgICAgICAgYW5kIGNhbiBiZSBzaGlwcGVkIGFzIHBhcnQgb2YgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICBUaGUgdGVhbSBjcmVhdGVzIHRoZXNlIHJlcG9zaXRvcmllcyBieQotICAgICAgICAgICAgY29tcGlsaW5nIGFuZCBleGVjdXRpbmcgdGhlIHNldCBvZiBmZWF0dXJlIGRlc2NyaXB0aW9ucyBmb3IgZXZlcnkgQlNQCi0gICAgICAgICAgICBhbmQgZmVhdHVyZSBpbiB0aGUgcHJvZHVjdC4KKyAgICAgICAgICAgIGFuZCBhcmUgc2hpcHBlZCBhcyBwYXJ0IG9mIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgVGhlIHRlYW0gY3JlYXRlcyB0aGVzZSByZXBvc2l0b3JpZXMgYnkgY29tcGlsaW5nIGFuZCBleGVjdXRpbmcgdGhlCisgICAgICAgICAgICBzZXQgb2YgZmVhdHVyZSBkZXNjcmlwdGlvbnMgZm9yIGV2ZXJ5IEJTUCBhbmQgZmVhdHVyZSBpbiB0aGUKKyAgICAgICAgICAgIHByb2R1Y3QuCiAgICAgICAgICAgICBUaG9zZSBmZWF0dXJlIGRlc2NyaXB0aW9ucyBsaXN0IGFsbCBuZWNlc3NhcnkgcGF0Y2hlcywKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIGJyYW5jaGluZywgdGFnZ2luZyBhbmQgZmVhdHVyZSBkaXZpc2lvbnMgZm91bmQgaW4gYSBrZXJuZWwuCi0gICAgICAgICAgICBUaHVzLCB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yeSAob3IgdHJlZSkgaXMgYnVpbHQuCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucywgYnJhbmNoZXMsIHRhZ3MsIGFuZCBmZWF0dXJlIGRpdmlzaW9ucyBmb3VuZCBpbiBhCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwuCisgICAgICAgICAgICBUaHVzLCB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgcmVwb3NpdG9yeSAob3IgdHJlZSkgYW5kCisgICAgICAgICAgICBhY2NvbXBhbnlpbmcgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gYXJlIGJ1aWx0LgogICAgICAgICA8L3BhcmE+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXhpc3RlbmNlIG9mIHRoaXMgdHJlZSBhbGxvd3MgeW91IHRvIGFjY2VzcyBhbmQgY2xvbmUgYSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IGtlcm5lbCByZXBvc2l0b3J5IGFuZCB1c2UgaXQgdG8gYnVpbGQgaW1hZ2VzIGJhc2VkIG9uIHRoZWlyIGNvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICBhbmQgZmVhdHVyZXMuCisgICAgICAgICAgICBUaGUgZXhpc3RlbmNlIG9mIHRoZXNlIHJlcG9zaXRvcmllcyBhbGxvdyB5b3UgdG8gYWNjZXNzIGFuZCBjbG9uZSBhCisgICAgICAgICAgICBwYXJ0aWN1bGFyIFlvY3RvIFByb2plY3QgTGludXgga2VybmVsIHJlcG9zaXRvcnkgYW5kIHVzZSBpdCB0bworICAgICAgICAgICAgYnVpbGQgaW1hZ2VzIGJhc2VkIG9uIHRoZWlyIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcy4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBmaWxlcyB1c2VkIHRvIGRlc2NyaWJlIGFsbCB0aGUgdmFsaWQgZmVhdHVyZXMgYW5kIEJTUHMKLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBpbiBhbnkgY2xvbmUgb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5Ci0gICAgICAgICAgICBHaXQgdHJlZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgY2xvbmVzIHRoZSBZb2N0byBQcm9qZWN0IGJhc2VsaW5lIGtlcm5lbCB0aGF0Ci0gICAgICAgICAgICBicmFuY2hlZCBvZmYgb2YgPGZpbGVuYW1lPmxpbnV4Lm9yZzwvZmlsZW5hbWU+IHZlcnNpb24gMy4xOToKKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgZmlsZXMgdXNlZCB0byBkZXNjcmliZSBhbGwgdGhlIHZhbGlkIGZlYXR1cmVzIGFuZAorICAgICAgICAgICAgQlNQcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgaW4gYW55IGNsb25lIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBMaW51eCBrZXJuZWwgc291cmNlIHJlcG9zaXRvcnkgYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0IHRyZWVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgY2xvbmUgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGJhc2VsaW5lIExpbnV4IGtlcm5lbCB0aGF0IGJyYW5jaGVzIG9mZgorICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4Lm9yZzwvZmlsZW5hbWU+IHZlcnNpb24gNC4xMiBhbmQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4sIHdoaWNoIGNvbnRhaW5zIHN0b3JlcyBvZgorICAgICAgICAgICAga2VybmVsIE1ldGFkYXRhOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by0zLjE5CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIKKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgta2VybmVsLWNhY2hlCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBGb3IgYW5vdGhlciBleGFtcGxlIG9mIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAga2VybmVsIGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYWwta2VybmVsLWZpbGVzJz5Zb2N0byBQcm9qZWN0IEtlcm5lbDwvdWxpbms+IiBidWxsZXRlZAotICAgICAgICAgICAgaXRlbSBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YKKyAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjbG9uZWQgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBvbiB5b3VyIGxvY2FsIG1hY2hpbmUsIHlvdSBjYW4KLSAgICAgICAgICAgIHN3aXRjaCB0byB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2ggd2l0aGluIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYXNzdW1lcyB0aGUgbG9jYWwgR2l0IHJlcG9zaXRvcnkgZm9yIHRoZSBrZXJuZWwgaXMgaW4KLSAgICAgICAgICAgIGEgdG9wLWxldmVsIGRpcmVjdG9yeSBuYW1lZCA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjbG9uZWQgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBhbmQgdGhlCisgICAgICAgICAgICBjYWNoZSBvZiBNZXRhZGF0YSBvbiB5b3VyIGxvY2FsIG1hY2hpbmUsIHlvdSBjYW4gZGlzY292ZXIgdGhlCisgICAgICAgICAgICBicmFuY2hlcyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gdGhlIHJlcG9zaXRvcnkgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgR2l0IGNvbW1hbmQ6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgbGludXgteW9jdG8tMy4xOQotICAgICAkIGdpdCBjaGVja291dCAtYiBtZXRhIG9yaWdpbi9tZXRhCisgICAgICQgZ2l0IGJyYW5jaCAtYQogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjaGVja2VkIG91dCBhbmQgc3dpdGNoZWQgdG8gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoLAotICAgICAgICAgICAgeW91IGNhbiBzZWUgYSBzbmFwc2hvdCBvZiBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBmZWF0dXJlIGRlc2NyaXB0aW9ucyB0aGF0IGFyZQotICAgICAgICAgICAgdXNlZCB0byBidWlsZCB0aGF0IHBhcnRpY3VsYXIga2VybmVsIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBUaGVzZSBkZXNjcmlwdGlvbnMgYXJlIGluIHRoZSBmb3JtIG9mIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3Ugc2hvdWxkIHJlYWxpemUsIGhvd2V2ZXIsIHRoYXQgYnJvd3NpbmcgeW91ciBsb2NhbCBrZXJuZWwgcmVwb3NpdG9yeQotICAgICAgICAgICAgZm9yIGZlYXR1cmUgZGVzY3JpcHRpb25zIGFuZCBwYXRjaGVzIGlzIG5vdCBhbiBlZmZlY3RpdmUgd2F5IHRvIGRldGVybWluZSB3aGF0IGlzIGluIGEKLSAgICAgICAgICAgIHBhcnRpY3VsYXIga2VybmVsIGJyYW5jaC4KLSAgICAgICAgICAgIEluc3RlYWQsIHlvdSBzaG91bGQgdXNlIEdpdCBkaXJlY3RseSB0byBkaXNjb3ZlciB0aGUgY2hhbmdlcyBpbiBhIGJyYW5jaC4KLSAgICAgICAgICAgIFVzaW5nIEdpdCBpcyBhbiBlZmZpY2llbnQgYW5kIGZsZXhpYmxlIHdheSB0byBpbnNwZWN0IGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4KKyAgICAgICAgICAgIENoZWNraW5nIG91dCBhIGJyYW5jaCBhbGxvd3MgeW91IHRvIHdvcmsgd2l0aCBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGNoZWNrIG91dCB0aGUKKyAgICAgICAgICAgICJzdGFuZGFyZC9iZWFnbGVib2FyZCIgYnJhbmNoIG9mIHRoZSBZb2N0byBMaW51eCBrZXJuZWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgYW5kIHRoZSAieW9jdG8tNC4xMiIgYnJhbmNoIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnk6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9saW51eC15b2N0by00LjEyCisgICAgICQgZ2l0IGNoZWNrb3V0IC1iIG15LWtlcm5lbC00LjEyIHJlbW90ZXMvb3JpZ2luL3N0YW5kYXJkL2JlYWdsZWJvYXJkCisgICAgICQgY2Qgfi9saW51eC1rZXJuZWwtY2FjaGUKKyAgICAgJCBnaXQgY2hlY2tvdXQgLWIgbXktNC4xMi1tZXRhZGF0YSByZW1vdGVzL29yaWdpbi95b2N0by00LjEyCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBHcm91bmQgdXAgcmVjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbXBsZXRlIGtlcm5lbCB0cmVlIGlzIGFuIGFjdGlvbiBvbmx5IHRha2VuIGJ5IHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBkdXJpbmcgYW4gYWN0aXZlIGRldmVsb3BtZW50IGN5Y2xlLgotICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGNsb25lIG9mIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnksIHlvdSBhcmUgc2ltcGx5IG1ha2luZyBpdAotICAgICAgICAgICAgICAgIGVmZmljaWVudGx5IGF2YWlsYWJsZSBmb3IgYnVpbGRpbmcgYW5kIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIEJyYW5jaGVzIGluIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGNvcnJlc3BvbmQgdG8gWW9jdG8gTGludXgga2VybmVsIHZlcnNpb25zCisgICAgICAgICAgICAgICAgKGUuZy4gInlvY3RvLTQuMTIiLCAieW9jdG8tNC4xMCIsICJ5b2N0by00LjkiLCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjaGVja2VkIG91dCBhbmQgc3dpdGNoZWQgdG8gYXBwcm9wcmlhdGUgYnJhbmNoZXMsCisgICAgICAgICAgICB5b3UgY2FuIHNlZSBhIHNuYXBzaG90IG9mIGFsbCB0aGUga2VybmVsIHNvdXJjZSBmaWxlcyB1c2VkIHRvCisgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoYXQgcGFydGljdWxhciBZb2N0byBMaW51eCBrZXJuZWwgZm9yIGEKKyAgICAgICAgICAgIHBhcnRpY3VsYXIgYm9hcmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNlZSB0aGUgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgWW9jdG8KKyAgICAgICAgICAgIExpbnV4IGtlcm5lbCwgeW91IG5lZWQgdG8gZXhhbWluZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgYnJhbmNoZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeSBjb3JyZXNwb25kIHRvCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgdmVyc2lvbnMgKGUuZy4gPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBCcmFuY2hlcyBjb250YWluIGRlc2NyaXB0aW9ucyBpbiB0aGUgZm9ybSBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGJyb3dzaW5nIHlvdXIgbG9jYWwKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGZvciBmZWF0dXJlCisgICAgICAgICAgICBkZXNjcmlwdGlvbnMgYW5kIHBhdGNoZXMgaXMgbm90IGFuIGVmZmVjdGl2ZSB3YXkgdG8gZGV0ZXJtaW5lIHdoYXQKKyAgICAgICAgICAgIGlzIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnJhbmNoLgorICAgICAgICAgICAgSW5zdGVhZCwgeW91IHNob3VsZCB1c2UgR2l0IGRpcmVjdGx5IHRvIGRpc2NvdmVyIHRoZSBjaGFuZ2VzIGluCisgICAgICAgICAgICBhIGJyYW5jaC4KKyAgICAgICAgICAgIFVzaW5nIEdpdCBpcyBhbiBlZmZpY2llbnQgYW5kIGZsZXhpYmxlIHdheSB0byBpbnNwZWN0IGNoYW5nZXMgdG8KKyAgICAgICAgICAgIHRoZSBrZXJuZWwuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBHcm91bmQgdXAgcmVjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbXBsZXRlIGtlcm5lbCB0cmVlIGlzIGFuCisgICAgICAgICAgICAgICAgYWN0aW9uIG9ubHkgdGFrZW4gYnkgdGhlIFlvY3RvIFByb2plY3QgdGVhbSBkdXJpbmcgYW4gYWN0aXZlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgY3ljbGUuCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSwgeW91IGFyZQorICAgICAgICAgICAgICAgIHNpbXBseSBtYWtpbmcgaXQgZWZmaWNpZW50bHkgYXZhaWxhYmxlIGZvciBidWlsZGluZyBhbmQKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudC4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgWW9jdG8gUHJvamVjdCBUZWFtIGNvbnN0cnVjdHMKLSAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgR2l0IHJlcG9zaXRvcnkgKG9yIHRyZWUpIGZvdW5kIGF0CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIGRlc2NyaWJlIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBUZWFtIGNvbnN0cnVjdHMgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgKG9yIHRyZWUpIGZvdW5kIGF0CiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+IGdpdmVuIHRoZQogICAgICAgICAgICAgaW50cm9kdWN0aW9uIG9mIGEgbmV3IHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBvciBCU1AuCi0gICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGFjdGlvbnMgdGhhdCBlZmZlY3RpdmVseSBjcmVhdGUgdGhlIHRyZWUKLSAgICAgICAgICAgIHRoYXQgaW5jbHVkZXMgdGhlIG5ldyBmZWF0dXJlLCBwYXRjaCBvciBCU1A6CisgICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGFjdGlvbnMgdGhhdCBlZmZlY3RpdmVseSBwcm92aWRlIHRoZSBNZXRhZGF0YQorICAgICAgICAgICAgYW5kIGNyZWF0ZSB0aGUgdHJlZSB0aGF0IGluY2x1ZGVzIHRoZSBuZXcgZmVhdHVyZSwgcGF0Y2ggb3IgQlNQOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZCBzdWJzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwgdHlwZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGZpbGUgdGhhdCBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGlzIGxvY2F0ZWQgYnkgc2VhcmNoaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHN5c3RlbSBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYXNzIEZlYXR1cmUgdG8gQnVpbGQgU3Vic3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgdG9wLWxldmVsIGtlcm5lbCBmZWF0dXJlIGlzIHBhc3NlZCB0byB0aGUga2VybmVsIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN1YnN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgTm9ybWFsbHksIHRoaXMgZmVhdHVyZSBpcyBhIEJTUCBmb3IgYSBwYXJ0aWN1bGFyIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgRmVhdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB0aGF0IGRlc2NyaWJlcyB0aGUgdG9wLWxldmVsIGZlYXR1cmUgaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICBieSBzZWFyY2hpbmcgdGhlc2Ugc3lzdGVtIGRpcmVjdG9yaWVzOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBpbi10cmVlIGtlcm5lbC1jYWNoZSBkaXJlY3Rvcmllcywgd2hpY2ggYXJlIGxvY2F0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+bWV0YS9jZmcva2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BcmVhcyBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHJlY2lwZXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZWFzIHBvaW50ZWQgdG8gYnkgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZm91bmQgaW4ga2VybmVsIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIEZvciBhIHR5cGljYWwgYnVpbGQsIHRoZSB0YXJnZXQgb2YgdGhlIHNlYXJjaCBpcyBhCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgZGVzY3JpcHRpb24gaW4gYW4gPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlCkBAIC05MSw0MSArMTUzLDk2IEBACiAgICAgIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5rZXJuZWxfdHlwZTwvcmVwbGFjZWFibGU+LnNjYwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9uY2UgbG9jYXRlZCwgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGNvbXBpbGVkIGludG8gYSBzaW1wbGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgIG9mIGFjdGlvbnMsIG9yIGludG8gYW4gZXhpc3RpbmcgZXF1aXZhbGVudCBzY3JpcHQgdGhhdCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHNoaXBwZWQga2VybmVsLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHRyYSBmZWF0dXJlcyBhcmUgYXBwZW5kZWQgdG8gdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4cGFuZCBGZWF0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgbG9jYXRlZCwgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgIGludG8gYSBzaW1wbGUgc2NyaXB0IG9mIGFjdGlvbnMsIG9yIGludG8gYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCBzY3JpcHQgdGhhdCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHNoaXBwZWQKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmQgRXh0cmEgRmVhdHVyZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRXh0cmEgZmVhdHVyZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZQorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmVhdHVyZXMgY2FuIGNvbWUgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9GRUFUVVJFUyc+PGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gcmVjaXBlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RWFjaCBleHRyYSBmZWF0dXJlIGlzIGxvY2F0ZWQsIGNvbXBpbGVkIGFuZCBhcHBlbmRlZCB0byB0aGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiBzdGVwIHRocmVlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIHRvIHByb2R1Y2UgYSBzZXJpZXMgb2YgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBkaXJlY3RvcmllcyBhcmUgZGVzY3JpcHRpb25zIG9mIGFsbCB0aGUgYnJhbmNoZXMsIHRhZ3MsIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoZSBiYXNlIEdpdCByZXBvc2l0b3J5IHRvIGNvbXBsZXRlbHkgY3JlYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKGJ1aWxkKSBicmFuY2ggZm9yIHRoZSBuZXcgQlNQIG9yIGZlYXR1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBiYXNlIHJlcG9zaXRvcnkgaXMgY2xvbmVkLCBhbmQgdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgYXJlIGFwcGxpZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHRyZWUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBHaXQgcmVwb3NpdG9yeSBpcyBsZWZ0IHdpdGggdGhlIGRlc2lyZWQgYnJhbmNoIGNoZWNrZWQgb3V0IGFuZCBhbnkKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYnJhbmNoaW5nLCBwYXRjaGluZyBhbmQgdGFnZ2luZyBoYXMgYmVlbiBwZXJmb3JtZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSwgRXhwYW5kLCBhbmQgQXBwZW5kIEVhY2ggRmVhdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBFYWNoIGV4dHJhIGZlYXR1cmUgaXMgbG9jYXRlZCwgZXhwYW5kZWQgYW5kIGFwcGVuZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBzY3JpcHQgYXMgZGVzY3JpYmVkIGluIHN0ZXAgdGhyZWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4ZWN1dGUgdGhlIFNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIHRvIHByb2R1Y2UgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSBicmFuY2hlcywgdGFncywKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFwcGxpZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGJhc2UgR2l0IHJlcG9zaXRvcnkgdG8gY29tcGxldGVseSBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSAoYnVpbGQpIGJyYW5jaCBmb3IgdGhlIG5ldyBCU1Agb3IgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgQmFzZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIHJlcG9zaXRvcnkgaXMgY2xvbmVkLCBhbmQgdGhlIGFjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBlcmZvcm0gQ2xlYW51cDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgR2l0IHJlcG9zaXRvcmllcyBhcmUgbGVmdCB3aXRoIHRoZSBkZXNpcmVkIGJyYW5jaGVzCisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgb3V0IGFuZCBhbnkgcmVxdWlyZWQgYnJhbmNoaW5nLCBwYXRjaGluZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGFnZ2luZyBoYXMgYmVlbiBwZXJmb3JtZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGtlcm5lbCB0cmVlIGlzIG5vdyByZWFkeSBmb3IgZGV2ZWxvcGVyIGNvbnN1bXB0aW9uIHRvIGJlIGxvY2FsbHkgY2xvbmVkLAotICAgICAgICAgICAgY29uZmlndXJlZCwgYW5kIGJ1aWx0IGludG8gYSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzcGVjaWZpYyB0byBzb21lIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgIDxub3RlPjxwYXJhPlRoZSBnZW5lcmF0ZWQgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGFkZCB0byB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgYXMgc2hpcHBlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgQW55IGFkZC1vbnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSBhcmUgYXBwbGllZCB0byB0aGUgZW5kIG9mIGFuIGV4aXN0aW5nIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBUaGUgZnVsbCByZXBvc2l0b3J5IGdlbmVyYXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICBvZmZpY2lhbCBZb2N0byBQcm9qZWN0IGtlcm5lbCByZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIGFsbCBzdXBwb3J0ZWQgYm9hcmRzIGFuZCBjb25maWd1cmF0aW9ucy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIHRlY2huaXF1ZSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzZXMgaXMgZmxleGlibGUgYW5kIGFsbG93cyBmb3Igc2VhbWxlc3MKLSAgICAgICAgICAgICAgICBibGVuZGluZyBvZiBhbiBpbW11dGFibGUgaGlzdG9yeSB3aXRoIGFkZGl0aW9uYWwgcGF0Y2hlcyBzcGVjaWZpYyB0byBhCi0gICAgICAgICAgICAgICAgZGVwbG95bWVudC4KLSAgICAgICAgICAgICAgICBBbnkgYWRkaXRpb25zIHRvIHRoZSBrZXJuZWwgYmVjb21lIGFuIGludGVncmF0ZWQgcGFydCBvZiB0aGUgYnJhbmNoZXMuPC9wYXJhPgorICAgICAgICAgICAgVGhlIGtlcm5lbCB0cmVlIGFuZCBjYWNoZSBhcmUgcmVhZHkgZm9yIGRldmVsb3BlciBjb25zdW1wdGlvbiB0bworICAgICAgICAgICAgYmUgbG9jYWxseSBjbG9uZWQsIGNvbmZpZ3VyZWQsIGFuZCBidWlsdCBpbnRvIGEgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAga2VybmVsIHNwZWNpZmljIHRvIHNvbWUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhZGRzIHRvIHRoZSBrZXJuZWwgYXMgc2hpcHBlZCB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGFkZC1vbnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSBhcmUgYXBwbGllZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBvZiBhbiBleGlzdGluZyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZnVsbCByZXBvc2l0b3J5IGdlbmVyYXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZmljaWFsIFlvY3RvIFByb2plY3Qga2VybmVsIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC5jZ2k8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIGFsbCBzdXBwb3J0ZWQgYm9hcmRzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRlY2huaXF1ZSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzZXMgaXMgZmxleGlibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbGxvd3MgZm9yIHNlYW1sZXNzIGJsZW5kaW5nIG9mIGFuIGltbXV0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSB3aXRoIGFkZGl0aW9uYWwgcGF0Y2hlcyBzcGVjaWZpYyB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3ltZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGFkZGl0aW9ucyB0byB0aGUga2VybmVsIGJlY29tZSBhbiBpbnRlZ3JhdGVkIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZnVsbCBrZXJuZWwgdHJlZSB0aGF0IHlvdSBzZWUgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCB0aHJvdWdoIHJlcGVhdGluZyB0aGUgYWJvdmUgc3RlcHMgZm9yIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgQlNQcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbmQgcmVzdWx0IGlzIGEgYnJhbmNoZWQsIGNsZWFuIGhpc3RvcnkgdHJlZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyB1cCB0aGUga2VybmVsIGZvciBhIGdpdmVuIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc2NyaXB0ICg8ZmlsZW5hbWU+a2dpdC1zY2M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGlzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC10b29scy90cmVlL3Rvb2xzJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLXRvb2xzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RlcHMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGZ1bGwga2VybmVsIHRyZWUgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBzdGVwcyB0aGF0IEJpdEJha2UgdXNlcyB3aGVuIGl0IGJ1aWxkcyBhCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTEzMyw4NSArMjUwLDEwMCBAQAogICAgIDxzZWN0aW9uIGlkPSdidWlsZC1zdHJhdGVneSc+CiAgICAgICAgIDx0aXRsZT5CdWlsZCBTdHJhdGVneTwvdGl0bGU+CiAKLTwhLS0KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8ZW1waGFzaXM+QVIgLSBEYXJyZW4gSGFydDo8L2VtcGhhc2lzPiAgU29tZSBwYXJ0cyBvZiB0aGlzIHNlY3Rpb24KLSAgICAgICAgICAgIG5lZWQgdG8gYmUgaW4gdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYW4taXRlcmF0aXZlLWRldmVsb3BtZW50LXByb2Nlc3MnPlVzaW5nIGFuIEl0ZXJhdGl2ZSBEZXZlbG9wbWVudCBQcm9jZXNzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICBEYXJyZW4gbmVlZHMgdG8gZmlndXJlIG91dCB3aGljaCBwYXJ0cyBhbmQgaWRlbnRpZnkgdGhlbS4KLSAgICAgICAgPC9wYXJhPgotLS0+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGV4aXN0cyBvbiBhIGRldmVsb3BtZW50IHN5c3RlbSwKLSAgICAgICAgICAgIHlvdSBjYW4gY29uc2lkZXIgdGhlIGNvbXBpbGF0aW9uIHBoYXNlIG9mIGtlcm5lbCBkZXZlbG9wbWVudCAtIGJ1aWxkaW5nIGEga2VybmVsIGltYWdlLgotICAgICAgICAgICAgU29tZSBwcmVyZXF1aXNpdGVzIGV4aXN0IHRoYXQgYXJlIHZhbGlkYXRlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyBiZWZvcmUgY29tcGlsYXRpb24KLSAgICAgICAgICAgIHN0YXJ0czoKKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2xvbmVkIGEgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcnkgYW5kIHRoZQorICAgICAgICAgICAgY2FjaGUgcmVwb3NpdG9yeSAoPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KSBvbnRvCisgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSwgeW91IGNhbiBjb25zaWRlciB0aGUgY29tcGlsYXRpb24gcGhhc2UKKyAgICAgICAgICAgIG9mIGtlcm5lbCBkZXZlbG9wbWVudCwgd2hpY2ggaXMgYnVpbGRpbmcgYSBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICBTb21lIHByZXJlcXVpc2l0ZXMgZXhpc3QgdGhhdCBhcmUgdmFsaWRhdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzCisgICAgICAgICAgICBiZWZvcmUgY29tcGlsYXRpb24gc3RhcnRzOgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+IHBvaW50cwotICAgICAgICAgICAgICAgIHRvIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBCU1AgYnVpbGQgYnJhbmNoIGV4aXN0cy4KLSAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBwb2ludHMgdG8gdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBBIEJTUCBidWlsZCBicmFuY2ggd2l0aCBNZXRhZGF0YSBleGlzdHMgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgVGhlIGJyYW5jaCBpcyBiYXNlZCBvbiB0aGUgWW9jdG8gTGludXgga2VybmVsIHZlcnNpb24gYW5kCisgICAgICAgICAgICAgICAgaGFzIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyBncm91cGVkIHVuZGVyIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGUvYnNwPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmZWF0dXJlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHRoZQorICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgQm9hcmQgYXNzdW1pbmcgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyPC9maWxlbmFtZT4ga2VybmVsIHJlc2lkZSBpbiB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgYXJlYSBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIDxyZXBsYWNlYWJsZT5rZXJuZWxfdHlwZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2JlYWdsZWJvbmUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB0aGUgInlvY3RvLTQuMTIiIGJyYW5jaCBpcworICAgICAgICAgICAgICAgICAgICBjaGVja2VkIG91dCBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG1ha2VzIHN1cmUgdGhlc2UgY29uZGl0aW9ucyBleGlzdCBiZWZvcmUgYXR0ZW1wdGluZyBjb21waWxhdGlvbi4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG1ha2VzIHN1cmUgdGhlc2UgY29uZGl0aW9ucyBleGlzdAorICAgICAgICAgICAgYmVmb3JlIGF0dGVtcHRpbmcgY29tcGlsYXRpb24uCiAgICAgICAgICAgICBPdGhlciBtZWFucywgaG93ZXZlciwgZG8gZXhpc3QsIHN1Y2ggYXMgYXMgYm9vdHN0cmFwcGluZyBhIEJTUC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQmVmb3JlIGJ1aWxkaW5nIGEga2VybmVsLCB0aGUgYnVpbGQgcHJvY2VzcyB2ZXJpZmllcyB0aGUgdHJlZQogICAgICAgICAgICAgYW5kIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCBieSBwcm9jZXNzaW5nIGFsbCBvZiB0aGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gImZyYWdtZW50cyIgc3BlY2lmaWVkIGJ5IGZlYXR1cmUgZGVzY3JpcHRpb25zIGluIHRoZSA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlcy4KLSAgICAgICAgICAgIEFzIHRoZSBmZWF0dXJlcyBhcmUgY29tcGlsZWQsIGFzc29jaWF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGFyZSBub3RlZAotICAgICAgICAgICAgYW5kIHJlY29yZGVkIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gc2VyaWVzIG9mIGRpcmVjdG9yaWVzIGluIHRoZWlyIGNvbXBpbGF0aW9uIG9yZGVyLgotICAgICAgICAgICAgVGhlIGZyYWdtZW50cyBhcmUgbWlncmF0ZWQsIHByZS1wcm9jZXNzZWQgYW5kIHBhc3NlZCB0byB0aGUgTGludXggS2VybmVsCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uIHN1YnN5c3RlbSAoPGZpbGVuYW1lPmxrYzwvZmlsZW5hbWU+KSBhcyByYXcgaW5wdXQgaW4gdGhlIGZvcm0KLSAgICAgICAgICAgIG9mIGEgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sa2M8L2ZpbGVuYW1lPiB1c2VzIGl0cyBvd24gaW50ZXJuYWwgZGVwZW5kZW5jeSBjb25zdHJhaW50cyB0byBkbyB0aGUgZmluYWwKLSAgICAgICAgICAgIHByb2Nlc3Npbmcgb2YgdGhhdCBpbmZvcm1hdGlvbiBhbmQgZ2VuZXJhdGVzIHRoZSBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgIHRoYXQgaXMgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24uCisgICAgICAgICAgICBjb25maWd1cmF0aW9uICJmcmFnbWVudHMiIHNwZWNpZmllZCBieSBmZWF0dXJlIGRlc2NyaXB0aW9ucworICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBBcyB0aGUgZmVhdHVyZXMgYXJlIGNvbXBpbGVkLCBhc3NvY2lhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmcmFnbWVudHMgYXJlIG5vdGVkIGFuZCByZWNvcmRlZCBpbiB0aGUgc2VyaWVzIG9mIGRpcmVjdG9yaWVzCisgICAgICAgICAgICBpbiB0aGVpciBjb21waWxhdGlvbiBvcmRlci4KKyAgICAgICAgICAgIFRoZSBmcmFnbWVudHMgYXJlIG1pZ3JhdGVkLCBwcmUtcHJvY2Vzc2VkIGFuZCBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICBMaW51eCBLZXJuZWwgQ29uZmlndXJhdGlvbiBzdWJzeXN0ZW0gKDxmaWxlbmFtZT5sa2M8L2ZpbGVuYW1lPikgYXMKKyAgICAgICAgICAgIHJhdyBpbnB1dCBpbiB0aGUgZm9ybSBvZiBhIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGtjPC9maWxlbmFtZT4gdXNlcyBpdHMgb3duIGludGVybmFsIGRlcGVuZGVuY3kKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzIHRvIGRvIHRoZSBmaW5hbCBwcm9jZXNzaW5nIG9mIHRoYXQgaW5mb3JtYXRpb24gYW5kCisgICAgICAgICAgICBnZW5lcmF0ZXMgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IGlzIHVzZWQKKyAgICAgICAgICAgIGR1cmluZyBjb21waWxhdGlvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVXNpbmcgdGhlIGJvYXJkJ3MgYXJjaGl0ZWN0dXJlIGFuZCBvdGhlciByZWxldmFudCB2YWx1ZXMgZnJvbSB0aGUgYm9hcmQncyB0ZW1wbGF0ZSwKLSAgICAgICAgICAgIGtlcm5lbCBjb21waWxhdGlvbiBpcyBzdGFydGVkIGFuZCBhIGtlcm5lbCBpbWFnZSBpcyBwcm9kdWNlZC4KKyAgICAgICAgICAgIFVzaW5nIHRoZSBib2FyZCdzIGFyY2hpdGVjdHVyZSBhbmQgb3RoZXIgcmVsZXZhbnQgdmFsdWVzIGZyb20KKyAgICAgICAgICAgIHRoZSBib2FyZCdzIHRlbXBsYXRlLCBrZXJuZWwgY29tcGlsYXRpb24gaXMgc3RhcnRlZCBhbmQgYSBrZXJuZWwKKyAgICAgICAgICAgIGltYWdlIGlzIHByb2R1Y2VkLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgb3RoZXIgdGhpbmcgdGhhdCB5b3Ugbm90aWNlIG9uY2UgeW91IGNvbmZpZ3VyZSBhIGtlcm5lbCBpcyB0aGF0Ci0gICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcyBnZW5lcmF0ZXMgYSBidWlsZCB0cmVlIHRoYXQgaXMgc2VwYXJhdGUgZnJvbSB5b3VyIGtlcm5lbCdzIGxvY2FsIEdpdAotICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnkgdHJlZS4KKyAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhIGJ1aWxkIHRyZWUgdGhhdCBpcyBzZXBhcmF0ZSBmcm9tCisgICAgICAgICAgICB5b3VyIGtlcm5lbCdzIGxvY2FsIEdpdCBzb3VyY2UgcmVwb3NpdG9yeSB0cmVlLgogICAgICAgICAgICAgVGhpcyBidWlsZCB0cmVlIGhhcyBhIG5hbWUgdGhhdCB1c2VzIHRoZSBmb2xsb3dpbmcgZm9ybSwgd2hlcmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4ke01BQ0hJTkV9PC9maWxlbmFtZT4gaXMgdGhlIG1ldGFkYXRhIG5hbWUgb2YgdGhlIG1hY2hpbmUgKEJTUCkgYW5kICJrZXJuZWxfdHlwZSIgaXMgb25lCi0gICAgICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0ZWQga2VybmVsIHR5cGVzIChlLmcuICJzdGFuZGFyZCIpOgorICAgICAgICAgICAgPGZpbGVuYW1lPiR7TUFDSElORX08L2ZpbGVuYW1lPiBpcyB0aGUgbWV0YWRhdGEgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgIG1hY2hpbmUgKEJTUCkgYW5kICJrZXJuZWxfdHlwZSIgaXMgb25lIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBzdXBwb3J0ZWQga2VybmVsIHR5cGVzIChlLmcuICJzdGFuZGFyZCIpOgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGxpbnV4LSR7TUFDSElORX0tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4tYnVpbGQKICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXhpc3Rpbmcgc3VwcG9ydCBpbiB0aGUgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB0cmVlIGFjaGlldmVzIHRoaXMKLSAgICAgICAgICAgIGRlZmF1bHQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIFRoZSBleGlzdGluZyBzdXBwb3J0IGluIHRoZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IHRyZWUKKyAgICAgICAgICAgIGFjaGlldmVzIHRoaXMgZGVmYXVsdCBmdW5jdGlvbmFsaXR5LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIG1lYW5zIHRoYXQgYWxsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgZm9yIGEgcGFydGljdWxhciBtYWNoaW5lIG9yIEJTUCBhcmUgbm93IGluCi0gICAgICAgICAgICB0aGUgYnVpbGQgdHJlZSBkaXJlY3RvcnkuCi0gICAgICAgICAgICBUaGUgZmlsZXMgaW5jbHVkZSB0aGUgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCBhbGwgdGhlIDxmaWxlbmFtZT4ubzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlcywgdGhlIDxmaWxlbmFtZT4uYTwvZmlsZW5hbWU+IGZpbGVzLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIG1lYW5zIHRoYXQgYWxsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgZm9yIGEgcGFydGljdWxhcgorICAgICAgICAgICAgbWFjaGluZSBvciBCU1AgYXJlIG5vdyBpbiB0aGUgYnVpbGQgdHJlZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGUgZmlsZXMgaW5jbHVkZSB0aGUgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgYWxsIHRoZSA8ZmlsZW5hbWU+Lm88L2ZpbGVuYW1lPiBmaWxlcywgdGhlIDxmaWxlbmFtZT4uYTwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlcywgYW5kIHNvIGZvcnRoLgogICAgICAgICAgICAgU2luY2UgZWFjaCBtYWNoaW5lIG9yIEJTUCBoYXMgaXRzIG93biBzZXBhcmF0ZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgaW4gaXRzIG93biBzZXBhcmF0ZSBicmFuY2gKLSAgICAgICAgICAgIG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBlYXNpbHkgc3dpdGNoIGJldHdlZW4gZGlmZmVyZW50IGJ1aWxkcy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGluIGl0cyBvd24gc2VwYXJhdGUgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBlYXNpbHkKKyAgICAgICAgICAgIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBidWlsZHMuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L2FwcGVuZGl4PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LXN0eWxlLmNzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1zdHlsZS5jc3MKaW5kZXggNmUwYzFjNy4uOWMwMWFhNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LXN0eWxlLmNzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtc3R5bGUuY3NzCkBAIC03MzAsNiArNzMwLDEwIEBACiAgIGJvcmRlci1jb2xvcjogYmxhY2s7CiB9CiAKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKIAogICAvKioqKioqKioqKiogLwogIC8gIGdyYXBoaWNzICAvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAppbmRleCAyOGEzMzY0Li5lYzM2ZDI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKQEAgLTIyLDExICsyMiwxMSBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5EYXJyZW48L2ZpcnN0bmFtZT4gPHN1cm5hbWU+SGFydDwvc3VybmFtZT4KKyAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPkludGVsIENvcnBvcmF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+ZGFycmVuLmhhcnRAaW50ZWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTgyLDI0ICs4MiwxOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkp1bmUgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC0xMTYsMzAgKzExMSwzMSBAQAogICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCByZWxlYXNlICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KIAogICAgIDwvYm9va2luZm8+CkBAIC0xNTQsMTAgKzE1MCw2IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJrZXJuZWwtZGV2LW1haW50LWFwcHgueG1sIi8+CiAKLTwhLS0KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJrZXJuZWwtZGV2LWV4YW1wbGVzLnhtbCIvPgotLS0+Ci0KICAgICA8eGk6aW5jbHVkZSBocmVmPSJrZXJuZWwtZGV2LWZhcS54bWwiLz4KIAogPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjk1ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwppbmRleCA1NDBiMGFiLi4wZjgyYTFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZwppbmRleCBkM2NhYzRhLi4xNWU2N2QwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXYtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDllNjBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q3ZjRkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtdXBncmFkZS1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1MTY4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtdXBncmFkZS1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwppbmRleCBjOTA3OTk3Li45NjMwM2I4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZwppbmRleCAwMDkxMDVkLi43OTNhMzk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCmluZGV4IGNiOTcwZWEuLmVlMmNkYjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcKaW5kZXggZTlkNWIzNC4uZTY5ZTAzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKaW5kZXggNjVjNWYyOS4uZTljZmYxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKaW5kZXggZDA2Zjg1MS4uYTk0MWQ3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbApAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPkludGVsIENvcnBvcmF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CkBAIC02NiwyNCArNjYsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC0xMDAsMjcgKzk1LDI5IEBACiAgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgogICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgTWVnYS1NYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgTWVnYS1NYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICZZT0NUT19ET0NfVkVSU0lPTjsuCi0gICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gZm9yIHdoaWNoIHlvdSB3YW50Ci0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBNZWdhLU1hbnVhbCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAKQEAgLTE0Niw4ICsxNDMsNiBAQAogICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbCIvPgogICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbW9kZWwueG1sIi8+Ci0gICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbCIvPgpAQCAtMTY3LDYgKzE2Miw4IEBACiAgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCIvPgogICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwiLz4KQEAgLTIyOSw3ICsyMjYsNyBAQAogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC91c2luZ3Bva3kueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZQotICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9jbG9zZXItbG9vay54bWwiLz4KKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvdGVjaG5pY2FsLWRldGFpbHMueG1sIi8+CkBAIC0yNTMsNiArMjUwLDkgQEAKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1xYS1jaGVja3MueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLXN0eWxlLmNzcwppbmRleCBkZjcxYTIwLi5jZDcxZWI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLXN0eWxlLmNzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLXN0eWxlLmNzcwpAQCAtNzMxLDYgKzczMSwxMSBAQAogfQogCiAKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKwogICAvKioqKioqKioqKiogLwogIC8gIGdyYXBoaWNzICAvCiAvICoqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAppbmRleCAxNGQ2N2U1Li5kYjNlZWYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudApAQCAtMSwxMCArMSwxMyBAQAotPCFFTlRJVFkgRElTVFJPICIyLjMuNCI+Ci08IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMjM0Ij4KLTwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUCAicHlybyI+Ci08IUVOVElUWSBESVNUUk9fTkFNRSAiUHlybyI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTiAiMi4zLjQiPgotPCFFTlRJVFkgUE9LWVZFUlNJT04gIjE4LjAuNCI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIxODA0Ij4KKzwhRU5USVRZIERJU1RSTyAiMi40LjIiPgorPCFFTlRJVFkgRElTVFJPX0NPTVBSRVNTRUQgIjI0MiI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInJvY2tvIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJSb2NrbyI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTiAiMi40LjIiPgorPCFFTlRJVFkgRElTVFJPX1JFTF9UQUcgInlvY3RvLTIuNC4yIj4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjguMCI+Cis8IUVOVElUWSBNRVRBX0lOVEVMX1JFTF9UQUcgIiZNRVRBSU5URUxWRVJTSU9OOy0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047Ij4KKzwhRU5USVRZIFBPS1lWRVJTSU9OICIxOS4wLjIiPgorPCFFTlRJVFkgUE9LWVZFUlNJT05fQ09NUFJFU1NFRCAiMTkwMiI+CiA8IUVOVElUWSBZT0NUT19QT0tZICJwb2t5LSZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjsiPgogPCFFTlRJVFkgQ09QWVJJR0hUX1lFQVIgIjIwMTAtMjAxOCI+CiA8IUVOVElUWSBZT0NUT19ETF9VUkwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKaW5kZXggYjY2OGZkNC4uZjc0MmU4OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDExIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlRvbTwvZmlyc3RuYW1lPiA8c3VybmFtZT5aYW51c3NpPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+SW50ZWwgQ29ycG9yYXRpb248L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD50b20uemFudXNzaUBpbnRlbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtODIsMjQgKzgyLDE5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SnVuZSAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuNDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTExNSwzNCArMTEwLDM0IEBACiAgICAgICAgICAgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkKICAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zLgogICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFByb2ZpbGluZwotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFRyYWNpbmcgTWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgKHZlcnNpb24gJllPQ1RPX0RPQ19WRVJTSU9OOyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gZm9yIHdoaWNoIHlvdSB3YW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CiAKICAgICA8L2Jvb2tpbmZvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9jbG9zZXItbG9vay54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2Nsb3Nlci1sb29rLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIzZWQyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2Nsb3Nlci1sb29rLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MzAgKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J2Nsb3Nlci1sb29rJz4KLTx0aXRsZT5BIENsb3NlciBMb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIGNoYXB0ZXIgdGFrZXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSByZXByZXNlbnRzIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhdCBhCi0gICAgICAgIGhpZ2ggbGV2ZWwuCi0gICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBjaGFwdGVyIGV4cGFuZHMgb24gdGhlIGZ1bmRhbWVudGFsIGlucHV0LCBvdXRwdXQsCi0gICAgICAgIHByb2Nlc3MsIGFuZAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPikgYmxvY2tzCi0gICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhIGlkPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC1yZWYucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOGluIiBkZXB0aD0iNC4yNWluIiAvPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZ2VuZXJhbGl6ZWQgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBjb25zaXN0cyBvZgotICAgICAgICBzZXZlcmFsIGZ1bmN0aW9uYWwgYXJlYXM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzZXIgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIE1ldGFkYXRhIHlvdSBjYW4gdXNlIHRvIGNvbnRyb2wgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ldGFkYXRhIExheWVyczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFZhcmlvdXMgbGF5ZXJzIHRoYXQgcHJvdmlkZSBzb2Z0d2FyZSwgbWFjaGluZSwgYW5kCi0gICAgICAgICAgICAgICAgZGlzdHJvIE1ldGFkYXRhLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Tb3VyY2UgRmlsZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBVcHN0cmVhbSByZWxlYXNlcywgbG9jYWwgcHJvamVjdHMsIGFuZCBTQ01zLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBQcm9jZXNzZXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBUaGlzIGJsb2NrIGV4cGFuZHMgb24gaG93IEJpdEJha2UgZmV0Y2hlcyBzb3VyY2UsIGFwcGxpZXMKLSAgICAgICAgICAgICAgICBwYXRjaGVzLCBjb21wbGV0ZXMgY29tcGlsYXRpb24sIGFuYWx5emVzIG91dHB1dCBmb3IgcGFja2FnZQotICAgICAgICAgICAgICAgIGdlbmVyYXRpb24sIGNyZWF0ZXMgYW5kIHRlc3RzIHBhY2thZ2VzLCBnZW5lcmF0ZXMgaW1hZ2VzLCBhbmQKLSAgICAgICAgICAgICAgICBnZW5lcmF0ZXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhY2thZ2UgRmVlZHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBjb250YWluaW5nIG91dHB1dCBwYWNrYWdlcyAoUlBNLCBERUIgb3IgSVBLKSwKLSAgICAgICAgICAgICAgICB3aGljaCBhcmUgc3Vic2VxdWVudGx5IHVzZWQgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZiBhbiBpbWFnZSBvcgotICAgICAgICAgICAgICAgIFNESywgcHJvZHVjZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBUaGVzZSBmZWVkcyBjYW4gYWxzbyBiZSBjb3BpZWQgYW5kIHNoYXJlZCB1c2luZyBhIHdlYiBzZXJ2ZXIgb3IKLSAgICAgICAgICAgICAgICBvdGhlciBtZWFucyB0byBmYWNpbGl0YXRlIGV4dGVuZGluZyBvciB1cGRhdGluZyBleGlzdGluZwotICAgICAgICAgICAgICAgIGltYWdlcyBvbiBkZXZpY2VzIGF0IHJ1bnRpbWUgaWYgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgaXMKLSAgICAgICAgICAgICAgICBlbmFibGVkLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbWFnZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBJbWFnZXMgcHJvZHVjZWQgYnkgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIENyb3NzLWRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHByb2R1Y2VkIGFsb25nIHdpdGggYW4gaW1hZ2UKLSAgICAgICAgICAgICAgICBvciBzZXBhcmF0ZWx5IHdpdGggQml0QmFrZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9InVzZXItY29uZmlndXJhdGlvbiI+Ci0gICAgICAgIDx0aXRsZT5Vc2VyIENvbmZpZ3VyYXRpb248L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVXNlciBjb25maWd1cmF0aW9uIGhlbHBzIGRlZmluZSB0aGUgYnVpbGQuCi0gICAgICAgICAgICBUaHJvdWdoIHVzZXIgY29uZmlndXJhdGlvbiwgeW91IGNhbiB0ZWxsIEJpdEJha2UgdGhlCi0gICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCB5b3UgYXJlIGJ1aWxkaW5nIHRoZSBpbWFnZSwKLSAgICAgICAgICAgIHdoZXJlIHRvIHN0b3JlIGRvd25sb2FkZWQgc291cmNlLCBhbmQgb3RoZXIgYnVpbGQgcHJvcGVydGllcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYW4gZXhwYW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICAgICAgICAgICAiVXNlciBDb25maWd1cmF0aW9uIiBib3ggb2YgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz46Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiAvPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIG5lZWRzIHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBvcmRlciB0byBjb21wbGV0ZQotICAgICAgICAgICAgYSBidWlsZC4KLSAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSA8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICBUaGUgbWluaW1hbGx5IG5lY2Vzc2FyeSBvbmVzIHJlc2lkZSBhcyBleGFtcGxlIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKLSAgICAgICAgICAgIHRoZSAiUG9reSBEaXJlY3RvcnkuIgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBvciB5b3UKLSAgICAgICAgICAgIGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHlvdSBjYW4gc2V0IHVwIHRoZQotICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB0byBiZSBuYW1lZCBhbnl0aGluZyB5b3Ugd2FudC4KLSAgICAgICAgICAgIEZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBjbG9uZWQgcmVwb3NpdG9yeSB1c2VzIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICBuYW1lIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgUG9reSByZXBvc2l0b3J5IGlzIHByaW1hcmlseSBhbiBhZ2dyZWdhdGlvbiBvZiBleGlzdGluZwotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyIGluc2lkZSBQb2t5IGNvbnRhaW5zCi0gICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQgaGFzIGV4YW1wbGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICBUaGVzZSBleGFtcGxlIGZpbGVzIGFyZSB1c2VkIGFzIGEgYmFzaXMgZm9yIGNyZWF0aW5nIGFjdHVhbAotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB3aGVuIHlvdSBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzY3JpcHQKLSAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgb3IKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb3VyY2luZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IGNyZWF0ZXMgYQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCi0gICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSBmb3IgYWxsIGl0cyB3b3JrIGR1cmluZyBidWlsZHMuCi0gICAgICAgICAgICBUaGUgQnVpbGQgRGlyZWN0b3J5IGhhcyBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQKLSAgICAgICAgICAgIGNvbnRhaW5zIGRlZmF1bHQgdmVyc2lvbnMgb2YgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgotICAgICAgICAgICAgVGhlc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBjcmVhdGVkIG9ubHkgaWYgdmVyc2lvbnMKLSAgICAgICAgICAgIGRvIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQgdGhlIHRpbWUgeW91Ci0gICAgICAgICAgICBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQmVjYXVzZSB0aGUgUG9reSByZXBvc2l0b3J5IGlzIGZ1bmRhbWVudGFsbHkgYW4gYWdncmVnYXRpb24gb2YKLSAgICAgICAgICAgIGV4aXN0aW5nIHJlcG9zaXRvcmllcywgc29tZSB1c2VycyBtaWdodCBiZSBmYW1pbGlhciB3aXRoIHJ1bm5pbmcKLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdCBpbiB0aGUgY29udGV4dAotICAgICAgICAgICAgb2Ygc2VwYXJhdGUgT3BlbkVtYmVkZGVkLUNvcmUgYW5kIEJpdEJha2UgcmVwb3NpdG9yaWVzIHJhdGhlciB0aGFuIGEKLSAgICAgICAgICAgIHNpbmdsZSBQb2t5IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBUaGlzIGRpc2N1c3Npb24gYXNzdW1lcyB0aGUgc2NyaXB0IGlzIGV4ZWN1dGVkIGZyb20gd2l0aGluIGEgY2xvbmVkCi0gICAgICAgICAgICBvciB1bnBhY2tlZCB2ZXJzaW9uIG9mIFBva3kuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGVyZSB0aGUgc2NyaXB0IGlzIHNvdXJjZWQsIGRpZmZlcmVudCBzdWItc2NyaXB0cwotICAgICAgICAgICAgYXJlIGNhbGxlZCB0byBzZXQgdXAgdGhlIEJ1aWxkIERpcmVjdG9yeSAoWW9jdG8gb3IgT3BlbkVtYmVkZGVkKS4KLSAgICAgICAgICAgIFNwZWNpZmljYWxseSwgdGhlIHNjcmlwdAotICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXI8L2ZpbGVuYW1lPiBpbnNpZGUgdGhlCi0gICAgICAgICAgICBwb2t5IGRpcmVjdG9yeSBzZXRzIHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgYW5kIHNlZWRzIHRoZSBkaXJlY3RvcnkKLSAgICAgICAgICAgIChpZiBuZWNlc3NhcnkpIHdpdGggY29uZmlndXJhdGlvbiBmaWxlcyBhcHByb3ByaWF0ZSBmb3IgdGhlCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICAgICAgdXNlcyB0aGUgPGZpbGVuYW1lPiRURU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bwotICAgICAgICAgICAgICAgIGRldGVybWluZSB3aGljaCBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBsb2NhdGUuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgcHJvdmlkZXMgbWFueQotICAgICAgICAgICAgYmFzaWMgdmFyaWFibGVzIHRoYXQgZGVmaW5lIGEgYnVpbGQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhIGZldy4KLSAgICAgICAgICAgIFRvIHNlZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBpbiBhIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGUgY3JlYXRlZCBieSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0LCBzZWUgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllcjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYXJhbGxlbGlzbSBPcHRpb25zOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9OVU1CRVJfVEhSRUFEUyc+PGZpbGVuYW1lPkJCX05VTUJFUl9USFJFQURTPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUyc+PGZpbGVuYW1lPkJCX05VTUJFUl9QQVJTRV9USFJFQURTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXJnZXQgTWFjaGluZSBTZWxlY3Rpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG93bmxvYWQgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TaGFyZWQgU3RhdGUgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIE91dHB1dDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBzZXQgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGUgY2FuIGFsc28gYmUgc2V0IGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2F1dG8uY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgdGVsbHMgQml0QmFrZSB3aGF0Ci0gICAgICAgICAgICBsYXllcnMgeW91IHdhbnQgY29uc2lkZXJlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGxheWVycyBsaXN0ZWQgaW4gdGhpcyBmaWxlIGluY2x1ZGUgbGF5ZXJzCi0gICAgICAgICAgICBtaW5pbWFsbHkgbmVlZGVkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICBIb3dldmVyLCB5b3UgbXVzdCBtYW51YWxseSBhZGQgYW55IGN1c3RvbSBsYXllcnMgeW91IGhhdmUgY3JlYXRlZC4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy15b3VyLWxheWVyJz5FbmFibGluZyBZb3VyIExheWVyPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpbGVzIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBhcmUgbm90IGNyZWF0ZWQgYnkgdGhlIGVudmlyb25tZW50Ci0gICAgICAgICAgICBpbml0aWFsaXphdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSBuZWVkIHRvCi0gICAgICAgICAgICBjcmVhdGUgdGhhdCB5b3Vyc2VsZi4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gZmlsZSBpcyB0eXBpY2FsbHkgY3JlYXRlZCBieQotICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXI6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gY29uZmlndXJlIG11bHRpcGxlIGJ1aWxkIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGFkIHNldmVyYWwgYnVpbGQgZW52aXJvbm1lbnRzIGFuZAotICAgICAgICAgICAgICAgICAgICB0aGV5IHNoYXJlZCBzb21lIGNvbW1vbiBmZWF0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhlc2UgZGVmYXVsdCBidWlsZCBwcm9wZXJ0aWVzIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIGlzIHBlcmhhcHMgdGhlIHBhY2thZ2luZyBmb3JtYXQgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgdXNlZnVsIHNjZW5hcmlvIGZvciB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSBpcyB0byBleHRlbmQgeW91cgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIHBhdGggdG8gYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhlbiwgd2hlbiBCaXRCYWtlIGxvb2tzIGZvciBNZXRhZGF0YSB1c2luZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4sIGl0IGZpbmRzIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhcHBsaWVzIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgY29tbW9uIGNvbmZpZ3VyYXRpb25zIGZvdW5kIGluIHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBUbyBvdmVycmlkZSBjb25maWd1cmF0aW9ucyBpbiBhIHBhcnRpY3VsYXIgYnVpbGQgZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICBhbHRlciB0aGUgc2ltaWxhciBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhhdCBidWlsZAotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkncyA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgaXMgdXN1YWxseSBjcmVhdGVkIGFuZCB3cml0dGVuIHRvIGJ5Ci0gICAgICAgICAgICAgICAgICAgIGFuIGF1dG9idWlsZGVyLgotICAgICAgICAgICAgICAgICAgICBUaGUgc2V0dGluZ3MgcHV0IGludG8gdGhlIGZpbGUgYXJlIHR5cGljYWxseSB0aGUgc2FtZSBhcwotICAgICAgICAgICAgICAgICAgICB5b3Ugd291bGQgZmluZCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG9yIHRoZSA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBlZGl0IGFsbCBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGZ1cnRoZXIgZGVmaW5lCi0gICAgICAgICAgICBhbnkgcGFydGljdWxhciBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyByZXByZXNlbnRlZCBieSB0aGUgIlVzZXIgQ29uZmlndXJhdGlvbiBFZGl0cyIKLSAgICAgICAgICAgIGJveCBpbiB0aGUgZmlndXJlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBsYXVuY2ggeW91ciBidWlsZCB3aXRoIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGNvbW1hbmQsIEJpdEJha2Ugc29ydHMgb3V0IHRoZSBjb25maWd1cmF0aW9ucyB0byB1bHRpbWF0ZWx5Ci0gICAgICAgICAgICBkZWZpbmUgeW91ciBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgIHJlYWRzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgc3BlY2lmaWMgb3JkZXI6Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgQW5kLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIG5vcm1hbCBhc3NpZ25tZW50IHN0YXRlbWVudAotICAgICAgICAgICAgcnVsZXMuCi0gICAgICAgICAgICBCZWNhdXNlIHRoZSBmaWxlcyBhcmUgcGFyc2VkIGluIGEgc3BlY2lmaWMgb3JkZXIsIHZhcmlhYmxlCi0gICAgICAgICAgICBhc3NpZ25tZW50cyBmb3IgdGhlIHNhbWUgdmFyaWFibGUgY291bGQgYmUgYWZmZWN0ZWQuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZAotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gc2V0Ci0gICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gdG8gZGlmZmVyZW50IHZhbHVlcywgYmVjYXVzZQotICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSBwYXJzZXMgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhZnRlcgotICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnZhcmlhYmxlMTwvcmVwbGFjZWFibGU+IGlzIGFzc2lnbmVkIHRoZSB2YWx1ZSBmcm9tCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9Im1ldGFkYXRhLW1hY2hpbmUtY29uZmlndXJhdGlvbi1hbmQtcG9saWN5LWNvbmZpZ3VyYXRpb24iPgotICAgICAgICA8dGl0bGU+TWV0YWRhdGEsIE1hY2hpbmUgQ29uZmlndXJhdGlvbiwgYW5kIFBvbGljeSBDb25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJlZCB0aGUgdXNlciBjb25maWd1cmF0aW9ucyB0aGF0Ci0gICAgICAgICAgICBkZWZpbmUgQml0QmFrZSdzIGdsb2JhbCBiZWhhdmlvci4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoZSBsYXllcnMgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgdXNlcyB0byBmdXJ0aGVyIGNvbnRyb2wgdGhlIGJ1aWxkLgotICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIHByb3ZpZGUgTWV0YWRhdGEgZm9yIHRoZSBzb2Z0d2FyZSwgbWFjaGluZSwgYW5kCi0gICAgICAgICAgICBwb2xpY3kuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIGdlbmVyYWwsIHRocmVlIHR5cGVzIG9mIGxheWVyIGlucHV0IGV4aXN0OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBvbGljeSBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMYXllcnMgcHJvdmlkZSB0b3AtbGV2ZWwgb3IgZ2VuZXJhbAotICAgICAgICAgICAgICAgICAgICBwb2xpY2llcyBmb3IgdGhlIGltYWdlIG9yIFNESyBiZWluZyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgbGF5ZXIgd291bGQgZGljdGF0ZSB3aGV0aGVyIEJpdEJha2UKLSAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgUlBNIG9yIElQSyBwYWNrYWdlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1hY2hpbmUgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXJzIHByb3ZpZGUgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGluZm9ybWF0aW9uIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgotICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWV0YWRhdGE6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgbGF5ZXJzIGNvbnRhaW4gdXNlci1zdXBwbGllZCByZWNpcGUgZmlsZXMsCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXMsIGFuZCBhcHBlbmQgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgICAgICAgICAgTWV0YWRhdGEsIE1hY2hpbmUgQ29uZmlndXJhdGlvbiwgYW5kIFBvbGljeSBDb25maWd1cmF0aW9uIGlucHV0Ci0gICAgICAgICAgICAobGF5ZXJzKSBib3hlcyBvZiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPjoKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2xheWVyLWlucHV0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjcuNWluIiAvPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBnZW5lcmFsLCBhbGwgbGF5ZXJzIGhhdmUgYSBzaW1pbGFyIHN0cnVjdHVyZS4KLSAgICAgICAgICAgIFRoZXkgYWxsIGNvbnRhaW4gYSBsaWNlbnNpbmcgZmlsZQotICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPkNPUFlJTkc8L2ZpbGVuYW1lPikgaWYgdGhlIGxheWVyIGlzIHRvIGJlCi0gICAgICAgICAgICBkaXN0cmlidXRlZCwgYSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSBhcyBnb29kIHByYWN0aWNlCi0gICAgICAgICAgICBhbmQgZXNwZWNpYWxseSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUgZGlzdHJpYnV0ZWQsIGEKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5LCBhbmQgcmVjaXBlIGRpcmVjdG9yaWVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgbWFueSBsYXllcnMgdGhhdCBjYW4gYmUgdXNlZC4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGEgd2ViLWludGVyZmFjZSBsaXN0aW5nIG9mIHRoZW0gb24gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvIj5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KLSAgICAgICAgICAgIHBhZ2UuCi0gICAgICAgICAgICBUaGUgbGF5ZXJzIGFyZSBzaG93biBhdCB0aGUgYm90dG9tIGNhdGVnb3JpemVkIHVuZGVyCi0gICAgICAgICAgICAiWW9jdG8gTWV0YWRhdGEgTGF5ZXJzLiIKLSAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZnVuZGFtZW50YWxseSBhIHN1YnNldCBvZiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8iPk9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleDwvdWxpbms+LAotICAgICAgICAgICAgd2hpY2ggbGlzdHMgYWxsIGxheWVycyBwcm92aWRlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIExheWVycyBleGlzdCBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIHRoYXQKLSAgICAgICAgICAgICAgICBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIE9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleC4KLSAgICAgICAgICAgICAgICBUaGVzZSBsYXllcnMgYXJlIGVpdGhlciBkZXByZWNhdGVkIG9yIGV4cGVyaW1lbnRhbCBpbiBuYXR1cmUuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCi0gICAgICAgICAgICB3aGljaCBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb24sIHRvIGZpbmQgd2hhdCBsYXllcnMgaXQKLSAgICAgICAgICAgIHNob3VsZCBiZSB1c2luZyBhcyBwYXJ0IG9mIHRoZSBidWlsZC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9ImRpc3Ryby1sYXllciI+Ci0gICAgICAgICAgICA8dGl0bGU+RGlzdHJvIExheWVyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGRpc3RyaWJ1dGlvbiBsYXllciBwcm92aWRlcyBwb2xpY3kgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICAgICAgQmVzdCBwcmFjdGljZXMgZGljdGF0ZSB0aGF0IHlvdSBpc29sYXRlIHRoZXNlIHR5cGVzIG9mCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW50byB0aGVpciBvd24gbGF5ZXIuCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MgeW91IHByb3ZpZGUgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiBvdmVycmlkZQotICAgICAgICAgICAgICAgIHNpbWlsYXIKLSAgICAgICAgICAgICAgICBzZXR0aW5ncyB0aGF0IEJpdEJha2UgZmluZHMgaW4geW91cgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByb3ZpZGVzIHNvbWUgZXhwbGFuYXRpb24gYW5kIHJlZmVyZW5jZXMKLSAgICAgICAgICAgICAgICBmb3Igd2hhdCB5b3UgdHlwaWNhbGx5IGZpbmQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBsYXllcjoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNsYXNzZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgaG9sZAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgc2hhcmVkIGFtb25nCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGluIHRoZSBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdXIgcmVjaXBlcyBpbmhlcml0IGEgY2xhc3MsIHRoZXkgdGFrZSBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGFuZCBmdW5jdGlvbnMgZm9yIHRoYXQgY2xhc3MuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBjbGFzcyBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5jb25mOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgaG9sZHMgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXllciAoPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkaXN0cmlidXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiksCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IGRpc3RyaWJ1dGlvbi13aWRlIGluY2x1ZGUgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5yZWNpcGVzLSo6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgYW5kIGFwcGVuZCBmaWxlcyB0aGF0IGFmZmVjdCBjb21tb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgYWNyb3NzIHRoZSBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY291bGQgaW5jbHVkZSByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZCBkaXN0cmlidXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdHMsIGN1c3RvbSBpbWFnZSByZWNpcGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1sYXllciI+Ci0gICAgICAgICAgICA8dGl0bGU+QlNQIExheWVyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllciBwcm92aWRlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgIEV2ZXJ5dGhpbmcgaW4gdGhpcyBsYXllciBpcyBzcGVjaWZpYyB0byB0aGUgbWFjaGluZSBmb3Igd2hpY2gKLSAgICAgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIHRoZSBpbWFnZSBvciB0aGUgU0RLLgotICAgICAgICAgICAgICAgIEEgY29tbW9uIHN0cnVjdHVyZSBvciBmb3JtIGlzIGRlZmluZWQgZm9yIEJTUCBsYXllcnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHRoaXMgc3RydWN0dXJlIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgYSBCU1AgbGF5ZXIgdG8gYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgaXQgbXVzdCBtZWV0IHNvbWUgc3RydWN0dXJhbCByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgQlNQIExheWVyJ3MgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgY29udGFpbnMKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUgbWFjaGluZQotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KSBhbmQsCi0gICAgICAgICAgICAgICAgb2YgY291cnNlLCB0aGUgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhlIGxheWVyIGlzIGRlZGljYXRlZCB0byBzcGVjaWZpYyByZWNpcGVzCi0gICAgICAgICAgICAgICAgYnkgZnVuY3Rpb246IDxmaWxlbmFtZT5yZWNpcGVzLWJzcDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ncmFwaGljczwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBNZXRhZGF0YSBjYW4gZXhpc3QgZm9yIG11bHRpcGxlIGZvcm1mYWN0b3JzLCBncmFwaGljcwotICAgICAgICAgICAgICAgIHN1cHBvcnQgc3lzdGVtcywgYW5kIHNvIGZvcnRoLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGUgZmlndXJlIHNob3dzIHNldmVyYWwgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLCBub3QgYWxsIHRoZXNlIGRpcmVjdG9yaWVzIGFwcGVhciBpbiBhbGwKLSAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVycy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ic29mdHdhcmUtbGF5ZXIiPgotICAgICAgICAgICAgPHRpdGxlPlNvZnR3YXJlIExheWVyPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHNvZnR3YXJlIGxheWVyIHByb3ZpZGVzIHRoZSBNZXRhZGF0YSBmb3IgYWRkaXRpb25hbAotICAgICAgICAgICAgICAgIHNvZnR3YXJlIHBhY2thZ2VzIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGRvZXMgbm90IGluY2x1ZGUgTWV0YWRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gb3IgdGhlIG1hY2hpbmUsIHdoaWNoIGFyZSBmb3VuZCBpbiB0aGVpcgotICAgICAgICAgICAgICAgIHJlc3BlY3RpdmUgbGF5ZXJzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGNvbnRhaW5zIGFueSBuZXcgcmVjaXBlcyB0aGF0IHlvdXIgcHJvamVjdCBuZWVkcwotICAgICAgICAgICAgICAgIGluIHRoZSBmb3JtIG9mIHJlY2lwZSBmaWxlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJzb3VyY2VzLWRldi1lbnZpcm9ubWVudCI+Ci0gICAgICAgIDx0aXRsZT5Tb3VyY2VzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYW4gaW1hZ2Ugb3IKLSAgICAgICAgICAgIGFueSB0YXJnZXQsIGl0IG11c3QgYmUgYWJsZSB0byBhY2Nlc3Mgc291cmNlIGZpbGVzLgotICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4KLSAgICAgICAgICAgIHJlcHJlc2VudHMgc291cmNlIGZpbGVzIHVzaW5nIHRoZSAiVXBzdHJlYW0gUHJvamVjdCBSZWxlYXNlcyIsCi0gICAgICAgICAgICAiTG9jYWwgUHJvamVjdHMiLCBhbmQgIlNDTXMgKG9wdGlvbmFsKSIgYm94ZXMuCi0gICAgICAgICAgICBUaGUgZmlndXJlIHJlcHJlc2VudHMgbWlycm9ycywgd2hpY2ggYWxzbyBwbGF5IGEgcm9sZSBpbiBsb2NhdGluZwotICAgICAgICAgICAgc291cmNlIGZpbGVzLCB3aXRoIHRoZSAiU291cmNlIE1pcnJvcihzKSIgYm94LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgbWV0aG9kIGJ5IHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgdWx0aW1hdGVseSBvcmdhbml6ZWQgaXMKLSAgICAgICAgICAgIGEgZnVuY3Rpb24gb2YgdGhlIHByb2plY3QuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIHJlbGVhc2VkIHNvZnR3YXJlLCBwcm9qZWN0cyB0ZW5kIHRvIHVzZSB0YXJiYWxscwotICAgICAgICAgICAgb3Igb3RoZXIgYXJjaGl2ZWQgZmlsZXMgdGhhdCBjYW4gY2FwdHVyZSB0aGUgc3RhdGUgb2YgYSByZWxlYXNlCi0gICAgICAgICAgICBndWFyYW50ZWVpbmcgdGhhdCBpdCBpcyBzdGF0aWNhbGx5IHJlcHJlc2VudGVkLgotICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGZvciBhIHByb2plY3QgdGhhdCBpcyBtb3JlIGR5bmFtaWMgb3IKLSAgICAgICAgICAgIGV4cGVyaW1lbnRhbCBpbiBuYXR1cmUsIGEgcHJvamVjdCBtaWdodCBrZWVwIHNvdXJjZSBmaWxlcyBpbiBhCi0gICAgICAgICAgICByZXBvc2l0b3J5IGNvbnRyb2xsZWQgYnkgYSBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIChTQ00pIHN1Y2ggYXMKLSAgICAgICAgICAgIEdpdC4KLSAgICAgICAgICAgIFB1bGxpbmcgc291cmNlIGZyb20gYSByZXBvc2l0b3J5IGFsbG93cyB5b3UgdG8gY29udHJvbAotICAgICAgICAgICAgdGhlIHBvaW50IGluIHRoZSByZXBvc2l0b3J5ICh0aGUgcmV2aXNpb24pIGZyb20gd2hpY2ggeW91IHdhbnQgdG8KLSAgICAgICAgICAgIGJ1aWxkIHNvZnR3YXJlLgotICAgICAgICAgICAgRmluYWxseSwgYSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvIG1pZ2h0IGV4aXN0LCB3aGljaCB3b3VsZCBnaXZlIHRoZQotICAgICAgICAgICAgY29uc3VtZXIgYSBjaG9pY2Ugd2hlbiBkZWNpZGluZyB3aGVyZSB0byBnZXQgc291cmNlIGZpbGVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIHRvIHBvaW50IHRvIHNvdXJjZSBmaWxlcyByZWdhcmRsZXNzIG9mIHRoZWlyIGxvY2F0aW9uLgotICAgICAgICAgICAgRWFjaCByZWNpcGUgbXVzdCBoYXZlIGEgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZQotICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gdGhlIHNvdXJjZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciBhcmVhIHRoYXQgcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIHdoZXJlIHNvdXJjZSBmaWxlcwotICAgICAgICAgICAgY29tZSBmcm9tIGlzIHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIFRoaXMgYXJlYSBpcyBhIGNhY2hlIHRoYXQgY2FuIGhvbGQgcHJldmlvdXNseSBkb3dubG9hZGVkIHNvdXJjZS4KLSAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBpbnN0cnVjdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUKLSAgICAgICAgICAgIHRhcmJhbGxzIGZyb20gR2l0IHJlcG9zaXRvcmllcywgd2hpY2ggaXMgbm90IHRoZSBkZWZhdWx0IGJlaGF2aW9yLAotICAgICAgICAgICAgYW5kIHN0b3JlIHRoZW0gaW4gdGhlIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBieSB1c2luZyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBKdWRpY2lvdXMgdXNlIG9mIGEgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4KLSAgICAgICAgICAgIHNhdmUgdGhlIGJ1aWxkIHN5c3RlbSBhIHRyaXAgYWNyb3NzIHRoZSBJbnRlcm5ldCB3aGVuIGxvb2tpbmcKLSAgICAgICAgICAgIGZvciBmaWxlcy4KLSAgICAgICAgICAgIEEgZ29vZCBtZXRob2QgZm9yIHVzaW5nIGEgZG93bmxvYWQgZGlyZWN0b3J5IGlzIHRvIGhhdmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBwb2ludCB0byBhbiBhcmVhIG91dHNpZGUgb2YgeW91cgotICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byBzYWZlbHkgZGVsZXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkKLSAgICAgICAgICAgIGlmIG5lZWRlZCB3aXRob3V0IGZlYXIgb2YgcmVtb3ZpbmcgYW55IGRvd25sb2FkZWQgc291cmNlIGZpbGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgZGVlcGVyIGxvb2sgaW50byB0aGUKLSAgICAgICAgICAgIHNvdXJjZSBmaWxlcyBhbmQgdGhlIG1pcnJvcnMuCi0gICAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBzb3VyY2UgZmlsZSBhcmVhIG9mIHRoZQotICAgICAgICAgICAgYmFzZSBmaWd1cmU6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjcuNWluIiAvPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3Vwc3RyZWFtLXByb2plY3QtcmVsZWFzZXMnPgotICAgICAgICAgICAgPHRpdGxlPlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBVcHN0cmVhbSBwcm9qZWN0IHJlbGVhc2VzIGV4aXN0IGFueXdoZXJlIGluIHRoZSBmb3JtIG9mIGFuCi0gICAgICAgICAgICAgICAgYXJjaGl2ZWQgZmlsZSAoZS5nLiB0YXJiYWxsIG9yIHppcCBmaWxlKS4KLSAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBjb3JyZXNwb25kIHRvIGluZGl2aWR1YWwgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZpZ3VyZSB1c2VzIHNwZWNpZmljIHJlbGVhc2VzIGVhY2ggZm9yCi0gICAgICAgICAgICAgICAgQnVzeUJveCwgUXQsIGFuZCBEYnVzLgotICAgICAgICAgICAgICAgIEFuIGFyY2hpdmUgZmlsZSBjYW4gYmUgZm9yIGFueSByZWxlYXNlZCBwcm9kdWN0IHRoYXQgY2FuIGJlCi0gICAgICAgICAgICAgICAgYnVpbHQgdXNpbmcgYSByZWNpcGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbG9jYWwtcHJvamVjdHMnPgotICAgICAgICAgICAgPHRpdGxlPkxvY2FsIFByb2plY3RzPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTG9jYWwgcHJvamVjdHMgYXJlIGN1c3RvbSBiaXRzIG9mIHNvZnR3YXJlIHRoZSB1c2VyIHByb3ZpZGVzLgotICAgICAgICAgICAgICAgIFRoZXNlIGJpdHMgcmVzaWRlIHNvbWV3aGVyZSBsb2NhbCB0byBhIHByb2plY3QgLSBwZXJoYXBzCi0gICAgICAgICAgICAgICAgYSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgdXNlciBjaGVja3MgaW4gaXRlbXMgKGUuZy4KLSAgICAgICAgICAgICAgICBhIGxvY2FsIGRpcmVjdG9yeSBjb250YWluaW5nIGEgZGV2ZWxvcG1lbnQgc291cmNlIHRyZWUKLSAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBncm91cCkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBjYW5vbmljYWwgbWV0aG9kIHRocm91Z2ggd2hpY2ggdG8gaW5jbHVkZSBhIGxvY2FsIHByb2plY3QKLSAgICAgICAgICAgICAgICBpcyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGNsYXNzIHRvIGluY2x1ZGUgdGhhdCBsb2NhbCBwcm9qZWN0LgotICAgICAgICAgICAgICAgIFlvdSB1c2UgZWl0aGVyIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IG9yIGEKLSAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZSB0byBvdmVycmlkZSBvciBzZXQgdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlIHRvIHBvaW50IHRvIHRoZSBsb2NhbCBkaXJlY3Rvcnkgb24geW91ciBkaXNrIHRvIHB1bGwKLSAgICAgICAgICAgICAgICBpbiB0aGUgd2hvbGUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+IGNsYXNzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NjbXMnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBDb250cm9sIE1hbmFnZXJzIChPcHRpb25hbCk8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBbm90aGVyIHBsYWNlIHRoZSBidWlsZCBzeXN0ZW0gY2FuIGdldCBzb3VyY2UgZmlsZXMgZnJvbSBpcwotICAgICAgICAgICAgICAgIHRocm91Z2ggYW4gU0NNIHN1Y2ggYXMgR2l0IG9yIFN1YnZlcnNpb24uCi0gICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhIHJlcG9zaXRvcnkgaXMgY2xvbmVkIG9yIGNoZWNrZWQgb3V0LgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBpbnNpZGUgQml0QmFrZSB1c2VzCi0gICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCB0aGUgYXJndW1lbnQncyBwcmVmaXggdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0Ci0gICAgICAgICAgICAgICAgZmV0Y2hlciBtb2R1bGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaGF2ZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIGdlbmVyYXRlIHRhcmJhbGxzIGZvciBHaXQgcmVwb3NpdG9yaWVzIGFuZCBwbGFjZSB0aGVtIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoZW4gZmV0Y2hpbmcgYSByZXBvc2l0b3J5LCBCaXRCYWtlIHVzZXMgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGRldGVybWluZSB0aGUgc3BlY2lmaWMgcmV2aXNpb24gZnJvbSB3aGljaCB0bwotICAgICAgICAgICAgICAgIGJ1aWxkLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1taXJyb3JzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgTWlycm9yKHMpPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVHdvIGtpbmRzIG9mIG1pcnJvcnMgZXhpc3Q6IHByZS1taXJyb3JzIGFuZCByZWd1bGFyIG1pcnJvcnMuCi0gICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUkVNSVJST1JTJz48ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NSVJST1JTJz48ZmlsZW5hbWU+TUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBwb2ludCB0byB0aGVzZSwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgIEJpdEJha2UgY2hlY2tzIHByZS1taXJyb3JzIGJlZm9yZSBsb29raW5nIHVwc3RyZWFtIGZvciBhbnkKLSAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgUHJlLW1pcnJvcnMgYXJlIGFwcHJvcHJpYXRlIHdoZW4geW91IGhhdmUgYSBzaGFyZWQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgZGVmaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgQSBQcmUtbWlycm9yIHR5cGljYWxseSBwb2ludHMgdG8gYSBzaGFyZWQgZGlyZWN0b3J5IHRoYXQgaXMKLSAgICAgICAgICAgICAgICBsb2NhbCB0byB5b3VyIG9yZ2FuaXphdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUmVndWxhciBtaXJyb3JzIGNhbiBiZSBhbnkgc2l0ZSBhY3Jvc3MgdGhlIEludGVybmV0IHRoYXQgaXMKLSAgICAgICAgICAgICAgICB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGxvY2F0aW9uIGZvciBzb3VyY2UgY29kZSBzaG91bGQgdGhlCi0gICAgICAgICAgICAgICAgcHJpbWFyeSBzaXRlIG5vdCBiZSBmdW5jdGlvbmluZyBmb3Igc29tZSByZWFzb24gb3IgYW5vdGhlci4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCI+Ci0gICAgICAgIDx0aXRsZT5QYWNrYWdlIEZlZWRzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZ2VuZXJhdGVzIGFuIGltYWdlIG9yIGFuIFNESywKLSAgICAgICAgICAgIGl0IGdldHMgdGhlIHBhY2thZ2VzIGZyb20gYSBwYWNrYWdlIGZlZWQgYXJlYSBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+Ci0gICAgICAgICAgICBzaG93cyB0aGlzIHBhY2thZ2UgZmVlZHMgYXJlYSBpbiB0aGUgdXBwZXItcmlnaHQgY29ybmVyLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gbG9va3MgYSBsaXR0bGUgY2xvc2VyIGludG8gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYSB1c2VkCi0gICAgICAgICAgICBieSB0aGUgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgYXJlYToKLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjZpbiIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUGFja2FnZSBmZWVkcyBhcmUgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCi0gICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwcm92aWRlcyBjbGFzc2VzIHRvIGdlbmVyYXRlCi0gICAgICAgICAgICBkaWZmZXJlbnQgcGFja2FnZSB0eXBlcywgYW5kIHlvdSBzcGVjaWZ5IHdoaWNoIGNsYXNzZXMgdG8gZW5hYmxlCi0gICAgICAgICAgICB0aHJvdWdoIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICBCZWZvcmUgcGxhY2luZyB0aGUgcGFja2FnZXMgaW50byBwYWNrYWdlIGZlZWRzLAotICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgdmFsaWRhdGVzIHRoZW0gd2l0aCBnZW5lcmF0ZWQgb3V0cHV0IHF1YWxpdHkKLSAgICAgICAgICAgIGFzc3VyYW5jZSBjaGVja3MgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+PGZpbGVuYW1lPmluc2FuZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBwYWNrYWdlIGZlZWQgYXJlYSByZXNpZGVzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0byB0ZW1wb3JhcmlseSBzdG9yZSBwYWNrYWdlcwotICAgICAgICAgICAgaXMgZGV0ZXJtaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgdGhlIHBhcnRpY3VsYXIKLSAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlciBpbiB1c2UuCi0gICAgICAgICAgICBTZWUgdGhlICJQYWNrYWdlIEZlZWRzIiBib3ggaW4gdGhlIGlsbHVzdHJhdGlvbiBhbmQgbm90ZSB0aGUKLSAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSByaWdodCBvZiB0aGF0IGFyZWEuCi0gICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIGRlZmluZXMgd2hlcmUgcGFja2FnZSBmaWxlcyBhcmUKLSAgICAgICAgICAgIGtlcHQ6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZWQgYXMgPGZpbGVuYW1lPnRtcC9kZXBsb3k8L2ZpbGVuYW1lPiBpbiB0aGUgQnVpbGQKLSAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkRFUExPWV9ESVJfKjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBhY2thZ2UgbWFuYWdlciB1c2VkLCB0aGUgcGFja2FnZSB0eXBlCi0gICAgICAgICAgICAgICAgICAgIHN1Yi1mb2xkZXIuCi0gICAgICAgICAgICAgICAgICAgIEdpdmVuIFJQTSwgSVBLLCBvciBERUIgcGFja2FnaW5nIGFuZCB0YXJiYWxsIGNyZWF0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfUlBNJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9SUE08L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lQSyc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSVBLPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9ERUInPjxmaWxlbmFtZT5ERVBMT1lfRElSX0RFQjwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgdXNlZCwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3ViLWZvbGRlcnMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBwYWNrYWdlcyBjb3VsZCBleGlzdCBmb3IgdGhlIGk1ODYgb3IgcWVtdXg4NgotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiB0YXNrcyB0bwotICAgICAgICAgICAgZ2VuZXJhdGUgcGFja2FnZXMgYW5kIHBsYWNlIHRoZW0gaW50byB0aGUgcGFja2FnZSBob2xkaW5nIGFyZWEgKGUuZy4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+IGZvciBJUEsgcGFja2FnZXMpLgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfZGViPC9maWxlbmFtZT48L2xpbms+IiwKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9pcGsnPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+PC9saW5rPiIsCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfcnBtJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9ycG08L2ZpbGVuYW1lPjwvbGluaz4iLAotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfdGFyJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV90YXI8L2ZpbGVuYW1lPjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9ucyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgYW4gSVBLIHBhY2thZ2luZyBtYW5hZ2VyCi0gICAgICAgICAgICBpcyBiZWluZyB1c2VkIGFuZCBwYWNrYWdlIGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBib3RoIGk1ODYKLSAgICAgICAgICAgIGFuZCBxZW11eDg2IGV4aXN0LgotICAgICAgICAgICAgUGFja2FnZXMgZm9yIHRoZSBpNTg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvaTU4NjwvZmlsZW5hbWU+LCB3aGlsZSBwYWNrYWdlcyBmb3IKLSAgICAgICAgICAgIHRoZSBxZW11eDg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvcWVtdXg4NjwvZmlsZW5hbWU+LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2JpdGJha2UtZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KLSAgICAgICAgICAgIHRvIHByb2R1Y2UgaW1hZ2VzLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPiwKLSAgICAgICAgICAgIHRoZSBCaXRCYWtlIGFyZWEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgZWFjaCBvZiB0aG9zZSBhcmVhcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU2VwYXJhdGUgZG9jdW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoZSBCaXRCYWtlIHRvb2wuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgotICAgICAgICAgICAgZm9yIHJlZmVyZW5jZSBtYXRlcmlhbCBvbiBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBzdGFnZXMgb2YgYnVpbGRpbmcgYSByZWNpcGUgYXJlIHRvIGZldGNoIGFuZCB1bnBhY2sKLSAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGU6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2LjVpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFza3MgZmV0Y2ggdGhlIHNvdXJjZSBmaWxlcyBhbmQgdW5wYWNrIHRoZW0gaW50byB0aGUgd29yawotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBwYXJ0IG9mIGEgcmVjaXBlJ3MKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGFrZXMgYSBjaGVja3N1bQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmlsZSBmb3IgdGhlIHJlY2lwZSBhbmQgaW5zZXJ0cyB0aGUgY2hlY2tzdW0gaW50bwotICAgICAgICAgICAgICAgICAgICB0aGUgc2lnbmF0dXJlIGZvciB0aGUgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIElmIGFueSBsb2NhbCBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4gdGFzayBhbmQgYWxsIHRhc2tzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyBhY2NvbXBsaXNoZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICB3aGljaCBoYXMgYSBkZWZpbmVkIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHRoZSBCdWlsZCBEaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1idWlsZCc+PGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBVbnBhY2tlZCBzb3VyY2UgZmlsZXMgYXJlIHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIEVhY2ggcmVjaXBlIGhhcyBhbiBhcmVhIGluIHRoZSBCdWlsZCBEaXJlY3Rvcnkgd2hlcmUgdGhlCi0gICAgICAgICAgICAgICAgdW5wYWNrZWQgc291cmNlIGNvZGUgcmVzaWRlcy4KLSAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGF0IGRpcmVjdG9yeSBmb3IgYW55IGdpdmVuIHJlY2lwZSBpcyBkZWZpbmVkIGZyb20KLSAgICAgICAgICAgICAgICBzZXZlcmFsIGRpZmZlcmVudCB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHZhcmlhYmxlcyB0aGF0IGRlZmluZSB0aGVzZSBkaXJlY3RvcmllcwotICAgICAgICAgICAgICAgIGJ5IGxvb2tpbmcgYXQgdGhlIGZpZ3VyZToKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1zIGFsbCBpdHMgd29yayBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGJ1aWx0IHBhY2thZ2Ugb3IgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfT1MnPjxmaWxlbmFtZT5UQVJHRVRfT1M8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9wZXJhdGluZyBzeXN0ZW0gb2YgdGhlIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBidWlsdCBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXZpc2lvbiBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gd2l0aGluIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgYSBzcGVjaWZpYyBwYWNrYWdlIGlzIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgdGhlIHVucGFja2VkIHNvdXJjZSBmaWxlcyBmb3IgYSBnaXZlbiByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwYXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlBhdGNoaW5nPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSBzb3VyY2UgY29kZSBpcyBmZXRjaGVkIGFuZCB1bnBhY2tlZCwgQml0QmFrZSBsb2NhdGVzCi0gICAgICAgICAgICAgICAgcGF0Y2ggZmlsZXMgYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgc291cmNlIGZpbGVzOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI1aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBwcm9jZXNzZXMgcmVjaXBlcyBieQotICAgICAgICAgICAgICAgIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSBhcHBsaWNhYmxlIHBhdGNoIGZpbGVzLCB3aGljaCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgYXJlIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZXMsIG9yIGFueSBmaWxlIGlmCi0gICAgICAgICAgICAgICAgImFwcGx5PXllcyIgaXMgc3BlY2lmaWVkIGZvciB0aGUgZmlsZSBpbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJpdEJha2UgZmluZHMgYW5kIGFwcGxpZXMgbXVsdGlwbGUgcGF0Y2hlcyBmb3IgYSBzaW5nbGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgaW4gdGhlIG9yZGVyIGluIHdoaWNoIGl0IGZpbmRzIHRoZSBwYXRjaGVzLgotICAgICAgICAgICAgICAgIFBhdGNoZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHJlY2lwZSdzIHNvdXJjZSBmaWxlcyBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGFyZQotICAgICAgICAgICAgICAgIGNyZWF0ZWQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+U291cmNlIEZldGNoaW5nPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyYXRpb24tYW5kLWNvbXBpbGF0aW9uLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBhbmQgQ29tcGlsYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBZnRlciBzb3VyY2UgY29kZSBpcyBwYXRjaGVkLCBCaXRCYWtlIGV4ZWN1dGVzIHRhc2tzIHRoYXQKLSAgICAgICAgICAgICAgICBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI1aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgc3RlcCBpbiB0aGUgYnVpbGQgcHJvY2VzcyBjb25zaXN0cyBvZiB0aHJlZSB0YXNrczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXByZXBhcmVfcmVjaXBlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wcmVwYXJlX3JlY2lwZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgc2V0cyB1cCB0aGUgdHdvIHN5c3Jvb3RzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290LW5hdGl2ZTwvZmlsZW5hbWU+KSBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3lzcm9vdHMgY29udGFpbiB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tzIG9mIHRoZSByZWNpcGVzIG9uIHdoaWNoIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIHRhc2tzIGRlcGVuZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBBIHN5c3Jvb3QgZXhpc3RzIGZvciBib3RoIHRoZSB0YXJnZXQgYW5kIGZvciB0aGUgbmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICBiaW5hcmllcywgd2hpY2ggcnVuIG9uIHRoZSBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvbmZpZ3VyZXMgdGhlIHNvdXJjZSBieSBlbmFibGluZyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGluZyBhbnkgYnVpbGQtdGltZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgY2FuIGNvbWUgZnJvbSB0aGUgcmVjaXBlIGl0c2VsZiBhcyB3ZWxsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcyBmcm9tIGFuIGluaGVyaXRlZCBjbGFzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIHNvZnR3YXJlIGl0c2VsZiBtaWdodCBjb25maWd1cmUgaXRzZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBmb3Igd2hpY2ggaXQgaXMgYmVpbmcgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb25maWd1cmF0aW9ucyBoYW5kbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhcmUgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNvdXJjZSBjb2RlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzb3VyY2UgY29kZQotICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgYnVpbHQgYnkgdGhlIHJlY2lwZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBhZGQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItRVhUUkFfT0VDT05GJz48ZmlsZW5hbWU+RVhUUkFfT0VDT05GPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgd29ya3Mgd2l0aGluCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNsYXNzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgYSBjb25maWd1cmF0aW9uIHRhc2sgaGFzIGJlZW4gc2F0aXNmaWVkLCBCaXRCYWtlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlcyB0aGUgc291cmNlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLgotICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsYXRpb24gb2NjdXJzIGluIHRoZSBkaXJlY3RvcnkgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgdGhlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzLCBieQotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCwgdGhlIHNhbWUgYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGNvbXBpbGF0aW9uIGlzIGRvbmUsIEJpdEJha2UgZXhlY3V0ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29waWVzIGZpbGVzIGZyb20gdGhlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgcGxhY2VzIHRoZW0gaW4gYSBob2xkaW5nIGFyZWEgcG9pbnRlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3BhY2thZ2Utc3BsaXR0aW5nLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+UGFja2FnZSBTcGxpdHRpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBZnRlciBzb3VyY2UgY29kZSBpcyBjb25maWd1cmVkIGFuZCBjb21waWxlZCwgdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbmFseXplcwotICAgICAgICAgICAgICAgIHRoZSByZXN1bHRzIGFuZCBzcGxpdHMgdGhlIG91dHB1dCBpbnRvIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iN2luIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2tzIGNvbWJpbmUgdG8gYW5hbHl6ZQotICAgICAgICAgICAgICAgIHRoZSBmaWxlcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvbGluaz4gZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgYW5kIHNwbGl0IHRoZW0gaW50byBzdWJzZXRzIGJhc2VkIG9uIGF2YWlsYWJsZSBwYWNrYWdlcyBhbmQKLSAgICAgICAgICAgICAgICBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGUgYW5hbHl6aW5nIHByb2Nlc3MgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBhcyB3ZWxsIGFzIG90aGVyCi0gICAgICAgICAgICAgICAgaXRlbXM6IHNwbGl0dGluZyBvdXQgZGVidWdnaW5nIHN5bWJvbHMsCi0gICAgICAgICAgICAgICAgbG9va2luZyBhdCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywKLSAgICAgICAgICAgICAgICBhbmQgbG9va2luZyBhdCBwYWNrYWdlIHJlbGF0aW9uc2hpcHMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2sgY3JlYXRlcyBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEgYmFzZWQgb24gdGhlIGFuYWx5c2lzIHN1Y2ggdGhhdCB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBnZW5lcmF0ZSB0aGUgZmluYWwgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgV29ya2luZywgc3RhZ2VkLCBhbmQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzCi0gICAgICAgICAgICAgICAgYW5kIHBhY2thZ2Ugc3BsaXR0aW5nIHByb2Nlc3MgdXNlIHRoZXNlIGFyZWFzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHRCc+PGZpbGVuYW1lPlBLR0Q8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBmb3IgcGFja2FnZXMgYmVmb3JlIHRoZXkgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGxpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgQSBzaGFyZWQsIGdsb2JhbC1zdGF0ZSBkaXJlY3RvcnkgdGhhdCBob2xkcyBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwYWNrYWdpbmcgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0RFU1RXT1JLJz48ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZW1wb3Jhcnkgd29yayBhcmVhIHVzZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dERVNUJz48ZmlsZW5hbWU+UEtHREVTVDwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSBmb3IgcGFja2FnZXMgYWZ0ZXIgdGhleSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICBiZWVuIHNwbGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5lcyB0aGUgZmlsZXMgdGhhdCBnbyBpbnRvIGVhY2ggcGFja2FnZSBpbgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGRldGFpbHMgb24gaG93IHRoaXMgaXMgYWNjb21wbGlzaGVkLCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgbG9vayBhdCB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGNsYXNzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgcGFja2FnZXMgYmVpbmcgY3JlYXRlZCAoUlBNLCBERUIsIG9yCi0gICAgICAgICAgICAgICAgSVBLKSwgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiB0YXNrCi0gICAgICAgICAgICAgICAgY3JlYXRlcyB0aGUgYWN0dWFsIHBhY2thZ2VzIGFuZCBwbGFjZXMgdGhlbSBpbiB0aGUKLSAgICAgICAgICAgICAgICBQYWNrYWdlIEZlZWQgYXJlYSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtUTVBESVJ9L2RlcGxveTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWwgb24gdGhhdCBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBjcmVhdGluZyBmZWVkcyBkaXJlY3RseSBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95Lyo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBkb2VzIG5vdCBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgc3VjaCBmZWVkcyB1c3VhbGx5IHJlcXVpcmVzIHNvbWUga2luZCBvZiBmZWVkCi0gICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlIG1lY2hhbmlzbSB0aGF0IHdvdWxkIHVwbG9hZCB0aGUgbmV3IHBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgIGludG8gYW4gb2ZmaWNpYWwgcGFja2FnZSBmZWVkIChlLmcuIHRoZQotICAgICAgICAgICAgICAgICAgICDDhW5nc3Ryw7ZtIGRpc3RyaWJ1dGlvbikuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBoaWdobHkgZGlzdHJpYnV0aW9uLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIGlzIG5vdCBwcm92aWRlZCBvdXQgb2YgdGhlIGJveC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPkltYWdlIEdlbmVyYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmNlIHBhY2thZ2VzIGFyZSBzcGxpdCBhbmQgc3RvcmVkIGluIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEsCi0gICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQotICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBpbWFnZToKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBnZW5lcmF0aW9uIHByb2Nlc3MgY29uc2lzdHMgb2Ygc2V2ZXJhbCBzdGFnZXMgYW5kCi0gICAgICAgICAgICAgICAgZGVwZW5kcyBvbiBzZXZlcmFsIHRhc2tzIGFuZCB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChmaWxlIGFuZCBkaXJlY3Rvcnkgc3RydWN0dXJlKQotICAgICAgICAgICAgICAgIGZvciBhbiBpbWFnZS4KLSAgICAgICAgICAgICAgICBUaGlzIHRhc2sgdXNlcyBzZXZlcmFsIGtleSB2YXJpYWJsZXMgdG8gaGVscCBjcmVhdGUgdGhlIGxpc3QKLSAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyB0byBhY3R1YWxseSBpbnN0YWxsOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBvdXQgdGhlIGJhc2Ugc2V0IG9mIHBhY2thZ2VzIHRvIGluc3RhbGwgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFBhY2thZ2UgRmVlZHMgYXJlYS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0VYQ0xVREUnPjxmaWxlbmFtZT5QQUNLQUdFX0VYQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgcGFja2FnZXMgdGhhdCBzaG91bGQgbm90IGJlIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBNb3N0IG9mIHRoZXNlIGZlYXR1cmVzIG1hcCB0byBhZGRpdGlvbmFsIHBhY2thZ2VzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBiYWNrZW5kIHRvIHVzZSBhbmQgY29uc2VxdWVudGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwcyBkZXRlcm1pbmUgd2hlcmUgdG8gbG9jYXRlIHBhY2thZ2VzIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgRmVlZHMgYXJlYS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9MSU5HVUFTJz48ZmlsZW5hbWU+SU1BR0VfTElOR1VBUzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIERldGVybWluZXMgdGhlIGxhbmd1YWdlKHMpIGZvciB3aGljaCBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBzdXBwb3J0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgbGlzdCBvZiBwYWNrYWdlcyBwYXNzZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlcgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluc3RhbGxhdGlvbiBpbnRvIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaXRoCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGUyc+PGZpbGVuYW1lPklNQUdFX1JPT1RGUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHBvaW50aW5nIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZXN5c3RlbSB1bmRlciBjb25zdHJ1Y3Rpb24gYW5kCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB2YXJpYWJsZSBwcm92aWRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZmluYWwgbGlzdCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsLCB0aGUgcm9vdCBmaWxlIHN5c3RlbSBpcwotICAgICAgICAgICAgICAgIGNyZWF0ZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFBhY2thZ2UgaW5zdGFsbGF0aW9uIGlzIHVuZGVyIGNvbnRyb2wgb2YgdGhlIHBhY2thZ2UgbWFuYWdlcgotICAgICAgICAgICAgICAgIChlLmcuIGRuZi9ycG0sIG9wa2csIG9yIGFwdC9kcGtnKSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKLSAgICAgICAgICAgICAgICBub3QgcGFja2FnZSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgZm9yIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAgQXQgdGhlIGVuZCBvZiB0aGUgcHJvY2VzcywgaWYgcGFja2FnZSBtYW5hZ2VtZW50IGlzIG5vdAotICAgICAgICAgICAgICAgIGVuYWJsZWQgZm9yIHRoZSB0YXJnZXQsIHRoZSBwYWNrYWdlIG1hbmFnZXIncyBkYXRhIGZpbGVzCi0gICAgICAgICAgICAgICAgYXJlIGRlbGV0ZWQgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIGZpbmFsIHN0YWdlIG9mIHBhY2thZ2UgaW5zdGFsbGF0aW9uLCBwb3N0aW5zdGFsbAotICAgICAgICAgICAgICAgIHNjcmlwdHMgdGhhdCBhcmUgcGFydCBvZiB0aGUgcGFja2FnZXMgYXJlIHJ1bi4KLSAgICAgICAgICAgICAgICBBbnkgc2NyaXB0cyB0aGF0IGZhaWwgdG8gcnVuCi0gICAgICAgICAgICAgICAgb24gdGhlIGJ1aWxkIGhvc3QgYXJlIHJ1biBvbiB0aGUgdGFyZ2V0IHdoZW4gdGhlIHRhcmdldCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBpcyBmaXJzdCBib290ZWQuCi0gICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1yZWFkLW9ubHktcm9vdC1maWxlc3lzdGVtJz5yZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtPC91bGluaz4sCi0gICAgICAgICAgICAgICAgYWxsIHRoZSBwb3N0IGluc3RhbGxhdGlvbiBzY3JpcHRzIG11c3Qgc3VjY2VlZCBkdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgcGFja2FnZSBpbnN0YWxsYXRpb24gcGhhc2Ugc2luY2UgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcwotICAgICAgICAgICAgICAgIHJlYWQtb25seS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0YWdlcyBvZiB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2sKLSAgICAgICAgICAgICAgICBoYW5kbGUgcG9zdCBwcm9jZXNzaW5nLgotICAgICAgICAgICAgICAgIFBvc3QgcHJvY2Vzc2luZyBpbmNsdWRlcyBjcmVhdGlvbiBvZiBhIG1hbmlmZXN0IGZpbGUgYW5kCi0gICAgICAgICAgICAgICAgb3B0aW1pemF0aW9ucy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgKDxmaWxlbmFtZT4ubWFuaWZlc3Q8L2ZpbGVuYW1lPikgcmVzaWRlcwotICAgICAgICAgICAgICAgIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBsaXN0cyBvdXQsIGxpbmUtYnktbGluZSwgdGhlIGluc3RhbGxlZCBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBpcyB1c2VmdWwgZm9yIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBjbGFzcywgZm9yIGV4YW1wbGUsIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBydW4KLSAgICAgICAgICAgICAgICBzcGVjaWZpYyB0ZXN0cy4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX01BTklGRVNUJz48ZmlsZW5hbWU+SU1BR0VfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT3B0aW1pemluZyBwcm9jZXNzZXMgcnVuIGFjcm9zcyB0aGUgaW1hZ2UgaW5jbHVkZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2xpYnM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIHBvc3QtcHJvY2Vzc2luZyBjb21tYW5kcyBhcyBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPlJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ta2xpYnM8L2ZpbGVuYW1lPiBwcm9jZXNzIG9wdGltaXplcyB0aGUgc2l6ZQotICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJpZXMsIHdoaWxlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wcmVsaW5rPC9maWxlbmFtZT4gcHJvY2VzcyBvcHRpbWl6ZXMgdGhlIGR5bmFtaWMKLSAgICAgICAgICAgICAgICBsaW5raW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMgdG8gcmVkdWNlIHN0YXJ0IHVwIHRpbWUgb2YKLSAgICAgICAgICAgICAgICBleGVjdXRhYmxlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBidWlsdCwgcHJvY2Vzc2luZyBiZWdpbnMgb24KLSAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT4gdGFzay4KLSAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQKLSAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZQotICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT4gdGFzayBkeW5hbWljYWxseSBjcmVhdGVzCi0gICAgICAgICAgICAgICAgb3RoZXIgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIHdoaWNoCi0gICAgICAgICAgICAgICAgaW5jbHVkZSBjb21wcmVzc2luZyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHRvIHJlZHVjZSB0aGUKLSAgICAgICAgICAgICAgICBvdmVyYWxsIHNpemUgb2YgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIHR1cm5zIGV2ZXJ5dGhpbmcgaW50byBhbiBpbWFnZSBmaWxlIG9yIGEgc2V0IG9mCi0gICAgICAgICAgICAgICAgaW1hZ2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgVGhlIGZvcm1hdHMgdXNlZCBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbSBkZXBlbmQgb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCB0YXNrIGludm9sdmVkIGluIGltYWdlIGNyZWF0aW9uIGlzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbWFnZV9jb21wbGV0ZTwvZmlsZW5hbWU+IHRhc2suCi0gICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvbXBsZXRlcyB0aGUgaW1hZ2UgYnkgYXBwbHlpbmcgYW55IGltYWdlCi0gICAgICAgICAgICAgICAgcG9zdCBwcm9jZXNzaW5nIGFzIGRlZmluZWQgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPklNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlIG91dHB1dAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgZW50aXJlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBpcyBydW4gdW5kZXIgUHNldWRvLgotICAgICAgICAgICAgICAgIFJ1bm5pbmcgdW5kZXIgUHNldWRvIGVuc3VyZXMgdGhhdCB0aGUgZmlsZXMgaW4gdGhlIHJvb3QKLSAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGhhdmUgY29ycmVjdCBvd25lcnNoaXAuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5TREsgR2VuZXJhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUKLSAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgaW5zdGFsbGVyIHNjcmlwdCBmb3IgYm90aCB0aGUKLSAgICAgICAgICAgICAgICBzdGFuZGFyZCBhbmQgZXh0ZW5zaWJsZSBTREtzOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4KLSAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCi0gICAgICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zZGsnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTGlrZSBpbWFnZSBnZW5lcmF0aW9uLCB0aGUgU0RLIHNjcmlwdCBwcm9jZXNzIGNvbnNpc3RzIG9mCi0gICAgICAgICAgICAgICAgc2V2ZXJhbCBzdGFnZXMgYW5kIGRlcGVuZHMgb24gbWFueSB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2tzIHVzZSB0aGVzZQotICAgICAgICAgICAgICAgIGtleSB2YXJpYWJsZXMgdG8gaGVscCBjcmVhdGUgdGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8gYWN0dWFsbHkKLSAgICAgICAgICAgICAgICBpbnN0YWxsLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzIGxpc3RlZCBpbiB0aGUgZmlndXJlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQotICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsgYW5kIGhhbmRsZXMgdHdvIHBhcnRzOiBhIHRhcmdldCBwYXJ0IGFuZCBhCi0gICAgICAgICAgICAgICAgaG9zdCBwYXJ0LgotICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgcGFydCBpcyB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQKLSAgICAgICAgICAgICAgICBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuCi0gICAgICAgICAgICAgICAgVGhlIGhvc3QgcGFydCBpcyB0aGUgcGFydCBvZiB0aGUgU0RLIHRoYXQgcnVucyBvbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2sgaGVscHMgY3JlYXRlCi0gICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLIGFuZCBoYW5kbGVzIGhvc3QgYW5kIHRhcmdldCBwYXJ0cwotICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IHRoYW4gaXRzIGNvdW50ZXIgcGFydCBkb2VzIGZvciB0aGUgc3RhbmRhcmQgU0RLLgotICAgICAgICAgICAgICAgIEZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHRoZSB0YXNrIGVuY2Fwc3VsYXRlcyB0aGUgYnVpbGQgc3lzdGVtLAotICAgICAgICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIChob3N0IGFuZCB0YXJnZXQpIGZvciB0aGUgU0RLLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIFNESyBiZWluZyBjb25zdHJ1Y3RlZCwgdGhlCi0gICAgICAgICAgICAgICAgdGFza3MgcGVyZm9ybSBzb21lIGNsZWFudXAgYWZ0ZXIgd2hpY2ggYSBjcm9zcy1kZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhbmQgYW55IG5lZWRlZCBjb25maWd1cmF0aW9uIGZpbGVzCi0gICAgICAgICAgICAgICAgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgVGhlIGZpbmFsIG91dHB1dCBpcyB0aGUgQ3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGF0aW9uIHNjcmlwdCAoPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUpLAotICAgICAgICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc3RhbXAtZmlsZXMtYW5kLXRoZS1yZXJ1bm5pbmctb2YtdGFza3MnPgotICAgICAgICAgICAgPHRpdGxlPlN0YW1wIEZpbGVzIGFuZCB0aGUgUmVydW5uaW5nIG9mIFRhc2tzPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGVhY2ggdGFzayB0aGF0IGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksIEJpdEJha2Ugd3JpdGVzIGEKLSAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIGludG8gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIFRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YW1wIGZpbGUncyBmaWxlbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUCc+PGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUgZW5kIG9mIHRoZSBuYW1lIGNvbnNpc3RzIG9mIHRoZSB0YXNrJ3MgbmFtZQotICAgICAgICAgICAgICAgIGFuZCBjdXJyZW50Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNjaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbmFtaW5nIHNjaGVtZSBhc3N1bWVzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0lHTkFUVVJFX0hBTkRMRVInPjxmaWxlbmFtZT5CQl9TSUdOQVRVUkVfSEFORExFUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgaXMgIk9FQmFzaWNIYXNoIiwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0aGUgY2FzZSBpbgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50IE9wZW5FbWJlZGRlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0byBiZSByZXJ1biwgQml0QmFrZSBjaGVja3MgaWYgYQotICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUgd2l0aCBhIG1hdGNoaW5nIGlucHV0IGNoZWNrc3VtIGV4aXN0cyBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgSWYgc3VjaCBhIHN0YW1wIGZpbGUgZXhpc3RzLCB0aGUgdGFzaydzIG91dHB1dCBpcyBhc3N1bWVkIHRvCi0gICAgICAgICAgICAgICAgZXhpc3QgYW5kIHN0aWxsIGJlIHZhbGlkLgotICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGUgdGFzayBpcyByZXJ1bi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHN0YW1wIG1lY2hhbmlzbSBpcyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlIChzc3RhdGUpIGNhY2hlIG1lY2hhbmlzbSBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBhdm9pZHMgcmVydW5uaW5nIGFueSB0YXNrIHRoYXQgaGFzIGEgdmFsaWQKLSAgICAgICAgICAgICAgICAgICAgc3RhbXAgZmlsZSwgbm90IGp1c3QgdGFza3MgdGhhdCBjYW4gYmUgYWNjZWxlcmF0ZWQgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICB0aGUgc3N0YXRlIGNhY2hlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+SG93ZXZlciwgeW91IHNob3VsZCByZWFsaXplIHRoYXQgc3RhbXAgZmlsZXMgb25seQotICAgICAgICAgICAgICAgICAgICBzZXJ2ZSBhcyBhIG1hcmtlciB0aGF0IHNvbWUgd29yayBoYXMgYmVlbiBkb25lIGFuZCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIHRoZXNlIGZpbGVzIGRvIG5vdCByZWNvcmQgdGFzayBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgdGFzayBvdXRwdXQgd291bGQgdXN1YWxseSBiZSBzb21ld2hlcmUgaW4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiBzb21lIHJlY2lwZSdzCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPi4pCi0gICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNzdGF0ZSBjYWNoZSBtZWNoYW5pc20gYWRkcyBpcyBhIHdheSB0byBjYWNoZSB0YXNrCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dCB0aGF0IGNhbiB0aGVuIGJlIHNoYXJlZCBiZXR3ZWVuIGJ1aWxkIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFNpbmNlIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhIHN1YmRpcmVjdG9yeQotICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiwgcmVtb3ZpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gd2lsbCBhbHNvIHJlbW92ZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zIHRhc2tzIHdpbGwKLSAgICAgICAgICAgICAgICBwcm9wZXJseSBiZSByZXJ1biB0byByZXBvcHVsYXRlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgc29tZSB0YXNrIHRvIGFsd2F5cyBiZSBjb25zaWRlcmVkICJvdXQgb2YgZGF0ZSIsCi0gICAgICAgICAgICAgICAgeW91IGNhbiBtYXJrIGl0IHdpdGggdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyZmxhZy4KLSAgICAgICAgICAgICAgICBJZiBzb21lIG90aGVyIHRhc2sgZGVwZW5kcyBvbiBzdWNoIGEgdGFzaywgdGhlbiB0aGF0IHRhc2sgd2lsbAotICAgICAgICAgICAgICAgIGFsc28gYWx3YXlzIGJlIGNvbnNpZGVyZWQgb3V0IG9mIGRhdGUsIHdoaWNoIG1pZ2h0IG5vdCBiZSB3aGF0Ci0gICAgICAgICAgICAgICAgeW91IHdhbnQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIGhvdyB0byB2aWV3IGluZm9ybWF0aW9uIGFib3V0IGEgdGFzaydzCi0gICAgICAgICAgICAgICAgc2lnbmF0dXJlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS12aWV3aW5nLXRhc2stdmFyaWFibGUtZGVwZW5kZW5jaWVzJz5WaWV3aW5nIFRhc2sgVmFyaWFibGUgRGVwZW5kZW5jaWVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPgotICAgICAgICAgICAgPHRpdGxlPlNldHNjZW5lIFRhc2tzIGFuZCBTaGFyZWQgU3RhdGU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gb2YgdGFza3Mgc28gZmFyIGFzc3VtZXMgdGhhdCBCaXRCYWtlIG5lZWRzIHRvCi0gICAgICAgICAgICAgICAgYnVpbGQgZXZlcnl0aGluZyBhbmQgdGhlcmUgYXJlIG5vIHByZWJ1aWx0IG9iamVjdHMgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBzdXBwb3J0IHNraXBwaW5nIHRhc2tzIGlmIHByZWJ1aWx0IG9iamVjdHMgYXJlCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIFRoZXNlIG9iamVjdHMgYXJlIHVzdWFsbHkgbWFkZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYQotICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyBhZmZlY3Rpbmcgc3N0YXRlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGlkZWEgb2YgYSBzZXRzY2VuZSB0YXNrIChpLmUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5fc2V0c2NlbmU8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICBpcyBhIHZlcnNpb24gb2YgdGhlIHRhc2sgd2hlcmUKLSAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGJ1aWxkaW5nIHNvbWV0aGluZywgQml0QmFrZSBjYW4gc2tpcCB0byB0aGUgZW5kCi0gICAgICAgICAgICAgICAgcmVzdWx0IGFuZCBzaW1wbHkgcGxhY2UgYSBzZXQgb2YgZmlsZXMgaW50byBzcGVjaWZpYyBsb2NhdGlvbnMKLSAgICAgICAgICAgICAgICBhcyBuZWVkZWQuCi0gICAgICAgICAgICAgICAgSW4gc29tZSBjYXNlcywgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIHNldHNjZW5lIHRhc2sgdmFyaWFudAotICAgICAgICAgICAgICAgIChlLmcuIGdlbmVyYXRpbmcgcGFja2FnZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFzaykuCi0gICAgICAgICAgICAgICAgSW4gb3RoZXIgY2FzZXMsIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UsIChlLmcuIGEKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2sgb3IKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzaykgc2luY2UgdGhlIHdvcmsgaW52b2x2ZWQgd291bGQgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuCi0gICAgICAgICAgICAgICAgdGhlIHVuZGVybHlpbmcgdGFzay4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHRoZSBjb21tb24gdGFza3MgdGhhdCBoYXZlCi0gICAgICAgICAgICAgICAgc2V0c2NlbmUgdmFyaWFudHMgYXJlIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWRlcGxveSc+PGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgTm90aWNlIHRoYXQgdGhlc2UgYXJlIG1vc3Qgb2YgdGhlIHRhc2tzIHdob3NlIG91dHB1dCBpcyBhbgotICAgICAgICAgICAgICAgIGVuZCByZXN1bHQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBrbm93bGVkZ2Ugb2YgdGhlIHJlbGF0aW9uc2hpcAotICAgICAgICAgICAgICAgIGJldHdlZW4gdGhlc2UgdGFza3MgYW5kIG90aGVyIHRhc2tzIHRoYXQgcHJlY2VkZSB0aGVtLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBCaXRCYWtlIHJ1bnMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTwvZmlsZW5hbWU+IGZvcgotICAgICAgICAgICAgICAgIHNvbWV0aGluZywgdGhlcmUgaXMgbGl0dGxlIHBvaW50IGluIHJ1bm5pbmcgYW55IG9mIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiBuZWVkcyB0byBiZSBydW4sCi0gICAgICAgICAgICAgICAgQml0QmFrZSB3b3VsZCBuZWVkIHRvIHJ1biB0aG9zZSBvdGhlciB0YXNrcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSXQgYmVjb21lcyBtb3JlIGNvbXBsaWNhdGVkIGlmIGV2ZXJ5dGhpbmcgY2FuIGNvbWUgZnJvbSBhbgotICAgICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZSBiZWNhdXNlIHNvbWUgb2JqZWN0cyBhcmUgc2ltcGx5IG5vdCByZXF1aXJlZCBhdAotICAgICAgICAgICAgICAgIGFsbC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGRvIG5vdCBuZWVkIGEgY29tcGlsZXIgb3IgbmF0aXZlIHRvb2xzLCBzdWNoCi0gICAgICAgICAgICAgICAgYXMgcXVpbHQsIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gY29tcGlsZSBvciBwYXRjaC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFyZQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBmcm9tIHNzdGF0ZSwgQml0QmFrZSBkb2VzIG5vdCBuZWVkIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzayBkYXRhLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBoYW5kbGUgYWxsIHRoZXNlIGNvbXBsZXhpdGllcywgQml0QmFrZSBydW5zIGluIHR3byBwaGFzZXMuCi0gICAgICAgICAgICAgICAgVGhlIGZpcnN0IGlzIHRoZSAic2V0c2NlbmUiIHN0YWdlLgotICAgICAgICAgICAgICAgIER1cmluZyB0aGlzIHN0YWdlLCBCaXRCYWtlIGZpcnN0IGNoZWNrcyB0aGUgc3N0YXRlIGNhY2hlIGZvcgotICAgICAgICAgICAgICAgIGFueSB0YXJnZXRzIGl0IGlzIHBsYW5uaW5nIHRvIGJ1aWxkLgotICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBhIGZhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgZXhpc3RzIHJhdGhlcgotICAgICAgICAgICAgICAgIHRoYW4gYSBjb21wbGV0ZSBkb3dubG9hZC4KLSAgICAgICAgICAgICAgICBJZiBub3RoaW5nIGV4aXN0cywgdGhlIHNlY29uZCBwaGFzZSwgd2hpY2ggaXMgdGhlIHNldHNjZW5lCi0gICAgICAgICAgICAgICAgc3RhZ2UsIGNvbXBsZXRlcyBhbmQgdGhlIG1haW4gYnVpbGQgcHJvY2VlZHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIG9iamVjdHMgYXJlIGZvdW5kIGluIHRoZSBzc3RhdGUgY2FjaGUsIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gd29ya3MgYmFja3dhcmRzIGZyb20gdGhlIGVuZCB0YXJnZXRzIHNwZWNpZmllZAotICAgICAgICAgICAgICAgIGJ5IHRoZSB1c2VyLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBhbiBpbWFnZSBpcyBiZWluZyBidWlsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgICAgIHN5c3RlbSBmaXJzdCBsb29rcyBmb3IgdGhlIHBhY2thZ2VzIG5lZWRlZCBmb3IgdGhhdCBpbWFnZSBhbmQKLSAgICAgICAgICAgICAgICB0aGUgdG9vbHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpbWFnZS4KLSAgICAgICAgICAgICAgICBJZiB0aG9zZSBhcmUgYXZhaWxhYmxlLCB0aGUgY29tcGlsZXIgaXMgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tcGlsZXIgaXMgbm90IGV2ZW4gZG93bmxvYWRlZC4KLSAgICAgICAgICAgICAgICBJZiBzb21ldGhpbmcgd2FzIGZvdW5kIHRvIGJlIHVuYXZhaWxhYmxlLCBvciB0aGUgZG93bmxvYWQgb3IKLSAgICAgICAgICAgICAgICBzZXRzY2VuZSB0YXNrIGZhaWxzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0aGVuIHRyaWVzCi0gICAgICAgICAgICAgICAgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMsIHN1Y2ggYXMgdGhlIGNvbXBpbGVyLCBmcm9tIHRoZSBjYWNoZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGF2YWlsYWJpbGl0eSBvZiBvYmplY3RzIGluIHRoZSBzc3RhdGUgY2FjaGUgaXMgaGFuZGxlZCBieQotICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSENIRUNLX0ZVTkNUSU9OJz48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0aGUgb2JqZWN0cyB0aGF0IGFyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9TRVRTQ0VORV9ERVBWQUxJRCc+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX0RFUFZBTElEPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuCi0gICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBmb2xsb3dlZCwgYW5kIHdoZXRoZXIgZm9yIGFueSBnaXZlbgotICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCB0aGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcGFzc2VkLgotICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgVHJ1ZSBvciBGYWxzZSB2YWx1ZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgPHRpdGxlPkltYWdlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgaW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICBhcmUgY29tcHJlc3NlZCBmb3JtcyBvZiB0aGUKLSAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGFyZSByZWFkeSB0byBib290IG9uIGEgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGZyb20gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4KLSAgICAgICAgICAgIHRoYXQgQml0QmFrZSBvdXRwdXQsIGluIHBhcnQsIGNvbnNpc3RzIG9mIGltYWdlcy4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBpcyBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGlzIG91dHB1dDoKLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNS41aW4iIGRlcHRoPSI1LjVpbiIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBleGFtcGxlIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLAotICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1pbWFnZXMnPkltYWdlczwvbGluaz4iIGNoYXB0ZXIuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEltYWdlcyBhcmUgd3JpdHRlbiBvdXQgdG8gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICBpbnNpZGUgdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmb2xkZXIgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZS4KLSAgICAgICAgICAgIFRoaXMgZm9sZGVyIGNvbnRhaW5zIGFueSBmaWxlcyBleHBlY3RlZCB0byBiZSBsb2FkZWQgb24gdGhlCi0gICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgotICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKLSAgICAgICAgICAgIHdoaWxlIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBjb250YWluaW5nIGltYWdlcyBmb3IKLSAgICAgICAgICAgIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGJpbmFyeSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhhdCB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAotICAgICAgICAgICAgICAgICAgICBhIHZhcmlldHkgb2YgbmFtaW5nIHN0cmluZ3MuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGltYWdlIGZpbGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBSb290IGZpbGVzeXN0ZW1zIGZvciB0aGUgdGFyZ2V0IGRldmljZSAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPiouYnoyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZXMpLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1tb2R1bGVzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGFyYmFsbHMgdGhhdCBjb250YWluIGFsbCB0aGUgbW9kdWxlcyBidWlsdCBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48ZmlsZW5hbWU+TU9EVUxFX1RBUkJBTExfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIwIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUga2VybmVsIG1vZHVsZSB0YXJiYWxscwotICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVycyBzdXBwb3J0aW5nIHRoZSBpbWFnZSwgaWYgYXBwbGljYWJsZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGJvb3Rsb2FkZXJzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5zeW1saW5rczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgICAgIGEgc3ltYm9saWMgbGluayB0aGF0IHBvaW50cyB0byB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGxpbmtzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgc2NyaXB0cyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gb2J0YWluIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nc2RrLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4sCi0gICAgICAgICAgICB0aGUgb3V0cHV0IGxhYmVsZWQgIkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESyIgcmVwcmVzZW50cyBhbgotICAgICAgICAgICAgU0RLLgotICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYnVpbGQKLSAgICAgICAgICAgIGEgc3RhbmRhcmQgU0RLCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCi0gICAgICAgICAgICBvciBhbiBleHRlbnNpYmxlIFNESwotICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPikuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIGRlcHRoPSI3LjI1aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoaXMgb3V0cHV0IGlzIGEgc2VsZi1leHRyYWN0aW5nCi0gICAgICAgICAgICBTREsgaW5zdGFsbGVyICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSB0aGF0LCB3aGVuIHJ1biwKLSAgICAgICAgICAgIGluc3RhbGxzIHRoZSBTREssIHdoaWNoIGNvbnNpc3RzIG9mIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHRvb2xjaGFpbiwgYSBzZXQgb2YgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgotICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBjcm9zcy10b29sY2hhaW4gYXMgdGhlICJob3N0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgotICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGUgbGlicmFyaWVzIGFuZCBoZWFkZXJzIGFzIHRoZSAidGFyZ2V0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIHRoZXkgYXJlIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4gaW5pdGlhbGl6ZQotICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IGJlZm9yZSB1c2luZyB0aGUgdG9vbHMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGlzIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBtZXRob2RzIGluY2x1ZGUgZG93bmxvYWRpbmcgcHJlLWJ1aWx0IFNESyBpbnN0YWxsZXJzCi0gICAgICAgICAgICAgICAgICAgIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESyBpbnN0YWxsZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucwotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGJ1aWx0LCB0aGUgU0RLIGluc3RhbGxlcnMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS9zZGs8L2ZpbGVuYW1lPiBmb2xkZXIgaW5zaWRlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBTREssIHNldmVyYWwgdmFyaWFibGVzIGV4aXN0IHRoYXQgaGVscAotICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKLSAgICAgICAgICAgIFNESzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBwYWNrYWdlcyBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPlNES0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgInRhcmdldCIgcGFydAotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QKLSAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIHRoZSBTREssIGEgc2V0IG9mIGRlZmF1bHQgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBhZGQgbW9yZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgdGFyZ2V0IHBhcnQKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFNESyAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZSkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLUEFUSCc+PGZpbGVuYW1lPlNES1BBVEg8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBUaGlzIG5leHQgbGlzdCwgc2hvd3MgdGhlIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYW4gZXh0ZW5zaWJsZQotICAgICAgICAgICAgU0RLOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGFsbCByZXF1aXJlZCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkNMVURFX1BLR0RBVEEnPjxmaWxlbmFtZT5TREtfSU5DTFVERV9QS0dEQVRBPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgd2lsbCBiZSBpbmNsdWRlZCBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgZXh0ZW5zaWJsZSBTREsgZm9yIGFsbCByZWNpcGVzIGluIHRoZSAid29ybGQiIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgdG9vbGNoYWluIHdpbGwgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19MT0NBTF9DT05GX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byByZW1vdmUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlIGdsb2JhbGx5IHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKaW5kZXggNWYzZjE3My4uMTFkZmM1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApAQCAtMTMsMTEgKzEzLDExIEBACiAgICAgICAgIDwvcXVlc3Rpb24+CiAgICAgICAgIDxhbnN3ZXI+CiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgdGVybSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcG9reSc+UG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgIFRoZSB0ZXJtICI8bGluayBsaW5rPSdwb2t5Jz5Qb2t5PC9saW5rPiIKICAgICAgICAgICAgICAgICByZWZlcnMgdG8gdGhlIHNwZWNpZmljIHJlZmVyZW5jZSBidWlsZCBzeXN0ZW0gdGhhdAogICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLgotICAgICAgICAgICAgICAgIFBva3kgaXMgYmFzZWQgb24gPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjb2UtY29yZSc+T0UtQ29yZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFBva3kgaXMgYmFzZWQgb24gPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4KKyAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPi4KICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZ2VuZXJpYyB0ZXJtIHVzZWQgaGVyZSBmb3IgdGhlIGJ1aWxkIHN5c3RlbSBpcwogICAgICAgICAgICAgICAgIHRoZSAiT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCiAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgUG9reSBpcyBjbG9zZWx5IHRpZWQgdG8gT3BlbkVtYmVkZGVkLCB3aXRoCkBAIC02MCw3ICs2MCw3IEBACiAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHRocmVlIGFyZWFzIHRoYXQgaGVscCB3aXRoIHN0YWJpbGl0eTsKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIFlvY3RvIFByb2plY3QgdGVhbSBrZWVwcwotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjb2UtY29yZSc+T0UtQ29yZTwvdWxpbms+IHNtYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPiBzbWFsbAogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZvY3VzZWQsIGNvbnRhaW5pbmcgYXJvdW5kIDgzMCByZWNpcGVzIGFzIG9wcG9zZWQgdG8gdGhlIHRob3VzYW5kcwogICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGluIG90aGVyIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkgbGF5ZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgS2VlcGluZyBpdCBzbWFsbCBtYWtlcyBpdCBlYXN5IHRvIHRlc3QgYW5kIG1haW50YWluLjwvcGFyYT48L2xpc3RpdGVtPgpAQCAtODYsNyArODYsNyBAQAogICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllciBmb3IgaXQuCiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIEJTUCBsYXllciwgc2VlIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBhbmQgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8cGFyYT4KQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgIFRvIGFkZCBhIHBhY2thZ2UsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIEJpdEJha2UgcmVjaXBlLgogICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGEgQml0QmFrZSByZWNpcGUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS13cml0aW5nLWEtbmV3LXJlY2lwZSc+V3JpdGluZyBhIE5ldyBSZWNpcGU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2Fuc3dlcj4KICAgICA8L3FhbmRhZW50cnk+CkBAIC0yMzUsOCArMjM1LDkgQEAKICAgICA8cWFuZGFlbnRyeT4KICAgICAgICAgPHF1ZXN0aW9uPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSSBzZWUgbG90cyBvZiA0MDQgcmVzcG9uc2VzIGZvciBmaWxlcyBvbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fSE9NRV9VUkw7L3NvdXJjZXMvKjwvZmlsZW5hbWU+LiBJcyBzb21ldGhpbmcgd3Jvbmc/CisgICAgICAgICAgICAgICAgSSBzZWUgbG90cyBvZiA0MDQgcmVzcG9uc2VzIGZvciBmaWxlcyB3aGVuIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXMgdHJ5aW5nIHRvIGRvd25sb2FkIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgSXMgc29tZXRoaW5nIHdyb25nPwogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3F1ZXN0aW9uPgogICAgICAgICA8YW5zd2VyPgpAQCAtNDE2LDkgKzQxNyw5IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIGxpY2Vuc2luZyBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbGljZW5zaW5nJz5MaWNlbnNpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBhbmQgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbnMsIGJvdGggb2Ygd2hpY2ggYXJlIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2xpY2Vuc2luZyc+TGljZW5zaW5nPC9saW5rPiIgc2VjdGlvbiBhbmQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKICAgICAgICAgICAgICAgICBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvYW5zd2VyPgpAQCAtNTQ3LDcgKzU0OCw3IEBACiAgICAgICAgICAgICAgICAgZmlsZSB0byBpbmNsdWRlIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4KICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjk5LDEwICs3MDAsOSBAQAogICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSBCaXRCYWtlIHRvIGJ1aWxkIGFuIGltYWdlLCBhbGwgdGhlIGJ1aWxkIG91dHB1dAogICAgICAgICAgICAgICAgIGdvZXMgaW50byB0aGUgZGlyZWN0b3J5IGNyZWF0ZWQgd2hlbiB5b3UgcnVuIHRoZQogICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KLSAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgIGlzIG5hbWVkIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGJ1dCBjYW4gYmUgbmFtZWQKICAgICAgICAgICAgICAgICBhbnl0aGluZyB5b3Ugd2FudC4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTc2NSw3ICs3NjUsNyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBNZWFud2hpbGUsIDxmaWxlbmFtZT5ERVNURElSPC9maWxlbmFtZT4gaXMgYSBwYXRoIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICBIb3dldmVyLCB3aGVuIHRoZSByZWNpcGUgYnVpbGRzIGEgbmF0aXZlIHByb2dyYW0gKGkuZS4gb25lCiAgICAgICAgICAgICAgICAgdGhhdCBpcyBpbnRlbmRlZCB0byBydW4gb24gdGhlIGJ1aWxkIG1hY2hpbmUpLCB0aGF0IHByb2dyYW0KICAgICAgICAgICAgICAgICBpcyBuZXZlciBpbnN0YWxsZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWxkIG1hY2hpbmUncyByb290CkBAIC04MTAsNyArODEwLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIHJlc3VsdHMgd2hlbiBhIGJ1aWxkIHN5c3RlbSBkb2VzCiAgICAgICAgICAgICAgICAgbm90IHJlY29nbml6ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1cHBsaWVkIHRvIGl0IGJ5Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPi4KICAgICAgICAgICAgICAgICBUaGUgaW5jaWRlbnQgdGhhdCBwcm9tcHRlZCB0aGlzIEZBUSBlbnRyeSBpbnZvbHZlZCBhIE1ha2VmaWxlCiAgICAgICAgICAgICAgICAgdGhhdCB1c2VkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJJTkRJUjwvZmlsZW5hbWU+IGluc3RlYWQgb2YgdGhlIG1vcmUgc3RhbmRhcmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI2NDQxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2dpdC13b3JrZmxvdy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MzAzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Y2ZmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ludHJvZHVjdGlvbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ludHJvZHVjdGlvbi54bWwKaW5kZXggZWVjNmNiMy4uMjllZjJkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbApAQCAtNSwxMTkgKzUsMTYwIEBACiA8Y2hhcHRlciBpZD0ncmVmLW1hbnVhbC1pbnRybyc+CiA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KIAotPHNlY3Rpb24gaWQ9J2ludHJvLXdlbGNvbWUnPgotICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorPHNlY3Rpb24gaWQ9J3JlZi13ZWxjb21lJz4KKyAgICA8dGl0bGU+V2VsY29tZTwvdGl0bGU+CiAKICAgICA8cGFyYT4KKyAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyByZWZlcmVuY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UKICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCBmb2N1c2VkCi0gICAgICAgIG9uIGVtYmVkZGVkIExpbnV4IGRldmVsb3BlcnMuCi0gICAgICAgIEFtb25nc3Qgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgc3lzdGVtLCB3aGljaCBpcyBiYXNlZCBvbiB0aGUgUG9reSBwcm9qZWN0LCB0byBjb25zdHJ1Y3QgY29tcGxldGUKLSAgICAgICAgTGludXggaW1hZ2VzLgotICAgICAgICBZb3UgY2FuIGZpbmQgY29tcGxldGUgaW50cm9kdWN0b3J5IGFuZCBnZXR0aW5nIHN0YXJ0ZWQgaW5mb3JtYXRpb24KLSAgICAgICAgb24gdGhlIFlvY3RvIFByb2plY3QgYnkgcmVhZGluZyB0aGUKKyAgICAgICAgVGhpcyBtYW51YWwgaXMgYmVzdCB1c2VkIGFmdGVyIHlvdSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcKKyAgICAgICAgb2YgdGhlIGJhc2ljcyBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgVGhlIG1hbnVhbCBpcyBuZWl0aGVyIG1lYW50IHRvIGJlIHJlYWQgYXMgYSBzdGFydGluZyBwb2ludCB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCBub3IgcmVhZCBmcm9tIHN0YXJ0IHRvIGZpbmlzaC4KKyAgICAgICAgVXNlIHRoaXMgbWFudWFsIHRvIGZpbmQgY29uY2VwdHMsIHZhcmlhYmxlIGRlZmluaXRpb25zLCBjbGFzcworICAgICAgICBkZXNjcmlwdGlvbnMsIGFuZCBzbyBmb3J0aCBhcyBuZWVkZWQgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdXNpbmcKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kIHRoZQorICAgICAgICAiPGxpbmsgbGlua2VuZD0neXAtaW50cm8nPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIHRlc3QgcnVuIGJ1aWxkaW5nIGFuIGltYWdlCisgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgY29uY2VwdHMsIHdvcmsgdGhyb3VnaCB0aGUKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgdGFzay1iYXNlZCBpbmZvcm1hdGlvbiB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPgotICAgICAgICBhbmQgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4uCi0gICAgICAgIEZvciBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgc3RydWN0dXJlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBhIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCwgKFNESyksIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0cmFjaW5nIGFuZCBwcm9maWxpbmcgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1BST0ZfVVJMOyc+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC91bGluaz4uCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCB3aGljaCBpcyB0aGUgdGFzayBleGVjdXRpb24gdG9vbCB0aGUKLSAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBiYXNlZCBvbiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgRmluYWxseSwgeW91IGNhbiBhbHNvIGZpbmQgbG90cyBvZiBZb2N0byBQcm9qZWN0IGluZm9ybWF0aW9uIG9uIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSImWU9DVE9fSE9NRV9VUkw7Ij5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kICJob3ctdG8iIGluZm9ybWF0aW9uIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHNldCwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCi08c2VjdGlvbiBpZD0naW50cm8tbWFudWFsb3ZlcnZpZXcnPgotICAgIDx0aXRsZT5Eb2N1bWVudGF0aW9uIE92ZXJ2aWV3PC90aXRsZT4KKzxzZWN0aW9uIGlkPSd5cC1pbnRybyc+CisgICAgPHRpdGxlPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KKwogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHJlZmVyZW5jZSBtYW51YWwgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmdwb2t5Jz5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBQcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSBpbmZvcm1hdGlvbiBhYm91dCBkZWJ1Z2dpbmcgaW1hZ2VzIGNyZWF0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Nsb3Nlci1sb29rJz5BIENsb3NlciBMb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGRldmVsb3BtZW50LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0ZWNobmljYWwtZGV0YWlscyc+VGVjaG5pY2FsIERldGFpbHM8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIGZ1bmRhbWVudGFsIFlvY3RvIFByb2plY3QgY29tcG9uZW50cyBhcyB3ZWxsIGFzIGFuIGV4cGxhbmF0aW9uCi0gICAgICAgICAgICAgICAgYmVoaW5kIGhvdyB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSB0byBzcGVlZCBidWlsZCB0aW1lLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtaWdyYXRpb24nPk1pZ3JhdGluZyB0byBhIE5ld2VyIFlvY3RvIFByb2plY3QgUmVsZWFzZTwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBEZXNjcmliZXMgcmVsZWFzZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiB0aGF0IGhlbHBzIHlvdSBtb3ZlIGZyb20KLSAgICAgICAgICAgICAgICBvbmUgWW9jdG8gUHJvamVjdCBSZWxlYXNlIHRvIGFub3RoZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1zdHJ1Y3R1cmUnPkRpcmVjdG9yeSBTdHJ1Y3R1cmU8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBjcmVhdGVkCi0gICAgICAgICAgICAgICAgZWl0aGVyIGJ5IHVucGFja2luZyBhIHJlbGVhc2VkIFlvY3RvIFByb2plY3QgdGFyYmFsbCBvbiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtLAotICAgICAgICAgICAgICAgIG9yIGJ5IGNsb25pbmcgdGhlIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcG9reSc+UG9reTwvdWxpbms+IEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBEZXNjcmliZXMgdGhlIGNsYXNzZXMgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzJz5UYXNrczwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBEZXNjcmliZXMgdGhlIHRhc2tzIGRlZmluZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1kZXZ0b29sLXJlZmVyZW5jZSc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBRdWljayBSZWZlcmVuY2U8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBxdWljayByZWZlcmVuY2UgZm9yIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29tbWFuZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXFhLWNoZWNrcyc+UUEgRXJyb3IgYW5kIFdhcm5pbmcgTWVzc2FnZXM8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgTGlzdHMgYW5kIGRlc2NyaWJlcyBRQSB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWltYWdlcyc+SW1hZ2VzPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIERlc2NyaWJlcyB0aGUgc3RhbmRhcmQgaW1hZ2VzIHRoYXQgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcyc+RmVhdHVyZXM8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIG1lY2hhbmlzbXMgZm9yIGNyZWF0aW5nIGRpc3RyaWJ1dGlvbiwgbWFjaGluZSwgYW5kIGltYWdlCi0gICAgICAgICAgICAgICAgZmVhdHVyZXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdmFyaWFibGVzLWdsb3MnPlZhcmlhYmxlcyBHbG9zc2FyeTwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBQcmVzZW50cyBtb3N0IHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB3aGljaAotICAgICAgICAgICAgICAgIHVzZXMgQml0QmFrZS4KLSAgICAgICAgICAgICAgICBFbnRyaWVzIGRlc2NyaWJlIHRoZSBmdW5jdGlvbiBvZiB0aGUgdmFyaWFibGUgYW5kIGhvdyB0byBhcHBseSB0aGVtLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdmFybG9jYWxpdHknPlZhcmlhYmxlIENvbnRleHQ8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgdmFyaWFibGUgbG9jYWxpdHkgb3IgY29udGV4dC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmFxJz5GQVE8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgYW5zd2VycyBmb3IgY29tbW9ubHkgYXNrZWQgcXVlc3Rpb25zIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Jlc291cmNlcyc+Q29udHJpYnV0aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIGd1aWRhbmNlIG9uIGhvdyB5b3UgY2FuIGNvbnRyaWJ1dGUgYmFjayB0byB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UgY29sbGFib3JhdGlvbiBwcm9qZWN0IHdob3NlCisgICAgICAgIGZvY3VzIGlzIGZvciBkZXZlbG9wZXJzIG9mIGVtYmVkZGVkIExpbnV4IHN5c3RlbXMuCisgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBhbgorICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvbGluaz4uCisgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0sIHdoaWNoIGlzIGJhc2VkIG9uIHRoZSBPcGVuRW1iZWRkZWQgKE9FKSBwcm9qZWN0IGFuZAorICAgICAgICB1c2VzIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+IHRvb2wsIGNvbnN0cnVjdHMgY29tcGxldGUKKyAgICAgICAgTGludXggaW1hZ2VzIGZvciBhcmNoaXRlY3R1cmVzIGJhc2VkIG9uIEFSTSwgTUlQUywgUG93ZXJQQywgeDg2IGFuZAorICAgICAgICB4ODYtNjQuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgSGlzdG9yaWNhbGx5LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICBjb21iaW5hdGlvbiBvZiBCaXRCYWtlIGFuZCBPRSBjb21wb25lbnRzLCBmb3JtZWQgYSByZWZlcmVuY2UKKyAgICAgICAgICAgIGJ1aWxkIGhvc3QgdGhhdCB3YXMga25vd24gYXMKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPiIgKDxlbXBoYXNpcz5QYWg8L2VtcGhhc2lzPi1rZWUpLgorICAgICAgICAgICAgVGhlIHRlcm0gIlBva3kiLCBhcyB1c2VkIHRocm91Z2hvdXQgdGhlIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgc2V0LCBjYW4gaGF2ZSBkaWZmZXJlbnQgbWVhbmluZ3MuCisgICAgICAgIDwvbm90ZT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdmFyaW91cyBhbmNpbGxhcnkgdG9vbHMgZm9yIHRoZSBlbWJlZGRlZAorICAgICAgICBkZXZlbG9wZXIgYW5kIGFsc28gZmVhdHVyZXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIgSW50ZXJmYWNlLCB3aGljaAorICAgICAgICBpcyBvcHRpbWl6ZWQgZm9yIHN0eWx1cy1kcml2ZW4sIGxvdy1yZXNvbHV0aW9uIHNjcmVlbnMuCisgICAgPC9wYXJhPgorCisgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyIKKyAgICAgICAgICAgICAgICBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICA8L2ltYWdlb2JqZWN0PgorICAgIDwvbWVkaWFvYmplY3Q+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSGVyZSBhcmUgc29tZSBoaWdobGlnaHRzIGZvciB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICA8L3BhcmE+CisKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICBQcm92aWRlcyBhIHJlY2VudCBMaW51eCBrZXJuZWwgYWxvbmcgd2l0aCBhIHNldCBvZiBzeXN0ZW0KKyAgICAgICAgICAgIGNvbW1hbmRzIGFuZCBsaWJyYXJpZXMgc3VpdGFibGUgZm9yIHRoZSBlbWJlZGRlZAorICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgTWFrZXMgYXZhaWxhYmxlIHN5c3RlbSBjb21wb25lbnRzIHN1Y2ggYXMgWDExLCBHVEsrLCBRdCwKKyAgICAgICAgICAgIENsdXR0ZXIsIGFuZCBTREwgKGFtb25nIG90aGVycykgc28geW91IGNhbiBjcmVhdGUgYSByaWNoIHVzZXIKKyAgICAgICAgICAgIGV4cGVyaWVuY2Ugb24gZGV2aWNlcyB0aGF0IGhhdmUgZGlzcGxheSBoYXJkd2FyZS4KKyAgICAgICAgICAgIEZvciBkZXZpY2VzIHRoYXQgZG8gbm90IGhhdmUgYSBkaXNwbGF5IG9yIHdoZXJlIHlvdSB3aXNoIHRvCisgICAgICAgICAgICB1c2UgYWx0ZXJuYXRpdmUgVUkgZnJhbWV3b3JrcywgdGhlc2UgY29tcG9uZW50cyBuZWVkIG5vdCBiZQorICAgICAgICAgICAgaW5zdGFsbGVkLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgIENyZWF0ZXMgYSBmb2N1c2VkIGFuZCBzdGFibGUgY29yZSBjb21wYXRpYmxlIHdpdGggdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgcHJvamVjdCB3aXRoIHdoaWNoIHlvdSBjYW4gZWFzaWx5IGFuZCByZWxpYWJseQorICAgICAgICAgICAgYnVpbGQgYW5kIGRldmVsb3AuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgRnVsbHkgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGhhcmR3YXJlIGFuZCBkZXZpY2UgZW11bGF0aW9uCisgICAgICAgICAgICB0aHJvdWdoIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgUHJvdmlkZXMgYSBsYXllciBtZWNoYW5pc20gdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBleHRlbmQKKyAgICAgICAgICAgIHRoZSBzeXN0ZW0sIG1ha2UgY3VzdG9taXphdGlvbnMsIGFuZCBrZWVwIHRoZW0gb3JnYW5pemVkLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gZ2VuZXJhdGUgaW1hZ2VzIGZvciBtYW55IGtpbmRzCisgICAgICAgIG9mIGRldmljZXMuCisgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBjcmVhdGlvbiBvZgorICAgICAgICByZWZlcmVuY2UgaW1hZ2VzIHRoYXQgeW91IGNhbiBib290IHdpdGhpbiBhbmQgZW11bGF0ZSB1c2luZyBRRU1VLgorICAgICAgICBUaGUgc3RhbmRhcmQgZXhhbXBsZSBtYWNoaW5lcyB0YXJnZXQgUUVNVSBmdWxsLXN5c3RlbQorICAgICAgICBlbXVsYXRpb24gZm9yIDMyLWJpdCBhbmQgNjQtYml0IHZhcmlhbnRzIG9mIHg4NiwgQVJNLCBNSVBTLCBhbmQKKyAgICAgICAgUG93ZXJQQyBhcmNoaXRlY3R1cmVzLgorICAgICAgICBCZXlvbmQgZW11bGF0aW9uLCB5b3UgY2FuIHVzZSB0aGUgbGF5ZXIgbWVjaGFuaXNtIHRvIGV4dGVuZAorICAgICAgICBzdXBwb3J0IHRvIGp1c3QgYWJvdXQgYW55IHBsYXRmb3JtIHRoYXQgTGludXggY2FuIHJ1biBvbiBhbmQgdGhhdAorICAgICAgICBhIHRvb2xjaGFpbiBjYW4gdGFyZ2V0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBbm90aGVyIFlvY3RvIFByb2plY3QgZmVhdHVyZSBpcyB0aGUgU2F0byByZWZlcmVuY2UgVXNlcgorICAgICAgICBJbnRlcmZhY2UuCisgICAgICAgIFRoaXMgb3B0aW9uYWwgVUkgdGhhdCBpcyBiYXNlZCBvbiBHVEsrIGlzIGludGVuZGVkIGZvciBkZXZpY2VzIHdpdGgKKyAgICAgICAgcmVzdHJpY3RlZCBzY3JlZW4gc2l6ZXMgYW5kIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCisgICAgICAgIE9wZW5FbWJlZGRlZCBDb3JlIGxheWVyIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdGVzdCBwYXJ0cyBvZiB0aGUKKyAgICAgICAgc29mdHdhcmUgc3RhY2suCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoaWxlIHRoZSBZb2N0byBQcm9qZWN0IGRvZXMgbm90IHByb3ZpZGUgYSBzdHJpY3QgdGVzdGluZyBmcmFtZXdvcmssCisgICAgICAgIGl0IGRvZXMgcHJvdmlkZSBvciBnZW5lcmF0ZSBmb3IgeW91IGFydGlmYWN0cyB0aGF0IGxldCB5b3UgcGVyZm9ybQorICAgICAgICB0YXJnZXQtbGV2ZWwgYW5kIGVtdWxhdGVkIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiB5b3UgYXJlIGFuCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERSB1c2VyLCB5b3UgY2FuCisgICAgICAgIGluc3RhbGwgYW4gRWNsaXBzZSBZb2N0byBQbHVnLWluIHRvIGFsbG93IHlvdSB0byBkZXZlbG9wIHdpdGhpbiB0aGF0CisgICAgICAgIGZhbWlsaWFyIGVudmlyb25tZW50LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCB0byBidWlsZCBhbiBpbWFnZSBjcmVhdGVzIGEgUG9reQorICAgICAgICBkaXN0cmlidXRpb24uCisgICAgICAgIEhvd2V2ZXIsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGRpc3RyaWJ1dGlvbiBieSBwcm92aWRpbmcga2V5CisgICAgICAgIDxsaW5rIGxpbms9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4uCisgICAgICAgIEEgZ29vZCBleGFtcGxlIGlzIEFuZ3N0cm9tLCB3aGljaCBoYXMgaGFkIGEgZGlzdHJpYnV0aW9uCisgICAgICAgIGJhc2VkIG9uIHRoZSBZb2N0byBQcm9qZWN0IHNpbmNlIGl0cyBpbmNlcHRpb24uCisgICAgICAgIE90aGVyIGV4YW1wbGVzIGluY2x1ZGUgY29tbWVyY2lhbCBkaXN0cmlidXRpb25zIGxpa2UKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9vcmdhbml6YXRpb24vd2luZC1yaXZlci1zeXN0ZW1zJz5XaW5kIFJpdmVyIExpbnV4PC91bGluaz4sCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL21lbnRvci1ncmFwaGljcyc+TWVudG9yIEVtYmVkZGVkIExpbnV4PC91bGluaz4sCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL2VuZWEtYWInPkVORUEgTGludXg8L3VsaW5rPgorICAgICAgICBhbmQgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9lY29zeXN0ZW0vbWVtYmVyLW9yZ2FuaXphdGlvbnMnPm90aGVyczwvdWxpbms+LgorICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy15b3VyLW93bi1kaXN0cmlidXRpb24nPkNyZWF0aW5nIFlvdXIgT3duIERpc3RyaWJ1dGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICBpbmZvcm1hdGlvbi4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLQogPHNlY3Rpb24gaWQ9J2ludHJvLXJlcXVpcmVtZW50cyc+CiA8dGl0bGU+U3lzdGVtIFJlcXVpcmVtZW50czwvdGl0bGU+CiAgICAgPHBhcmE+CkBAIC0xNjMsMTIgKzIwNCwxMiBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTAuMDQ8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDExLjEwPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMi4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTMuMTA8L3BhcmE+PC9saXN0aXRlbT4gLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTMuMTA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTQuMTA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE1LjA0PC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNS4xMDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTYuMDQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE2LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+CiA8IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTYgKFZlcm5lKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTcgKFNwaGVyaWNhbCk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMTkgKFNjaHLDtmRpbmdlcidzIENhdCk8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTE4NSw2ICsyMjYsNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA2LjAgKFNxdWVlemUpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy54IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDgueCAoSmVzc2llKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDkueCAoU3RyZXRjaCk8L3BhcmE+PC9saXN0aXRlbT4KIDwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4xIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4yIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4zIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC00MTMsNyArNDU1LDcgQEAKICAgICAgICAgICAgIFB5dGhvbjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjQgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yNyBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB5dGhvbiAzLjQuMCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgpAQCAtNDkyLDkgKzUzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgbWFjaGluZSB0aGF0IGlzIGFibGUgdG8gcnVuIEJpdEJha2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHlvdSBoYXZlIHNldCB1cCB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQKLSAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIEJpdEJha2UgY29tbWFuZCB0byBidWlsZCB0aGUgdGFyYmFsbDoKQEAgLTUxMiw3ICs1NTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluc3RhbGxzCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBpbiB0aGUgPGZpbGVuYW1lPnRtcC9kZXBsb3kvc2RrPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbnN0YWxsZXIgZmlsZSBoYXMgdGhlIHN0cmluZyAiYnVpbGR0b29scyIKICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNjAwLDEyICs2NDAsNDQxIEBACiAgICAgPHRpdGxlPkRldmVsb3BtZW50IENoZWNrb3V0czwvdGl0bGU+CiAgICAgPHBhcmE+CiAgICAgICAgIERldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IHJlcXVpcmVzIGEgbG9jYWwKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgWW91IGNhbiBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnkgYnkgY2xvbmluZyBhIGNvcHkgb2YgdGhlIHVwc3RyZWFtCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Bva3knPnBva3k8L3VsaW5rPiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncG9reSc+cG9reTwvbGluaz4gR2l0IHJlcG9zaXRvcnkuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZG8gdGhpcywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2V0dGluZy1zZXR1cCc+R2V0dGluZyBTZXQgVXA8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LXRlcm1zJz4KKyAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXJtczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0ZXJtcyBhbmQgZGVmaW5pdGlvbnMgdXNlcnMgbmV3IHRvIHRoZSBZb2N0bworICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IG1pZ2h0IGZpbmQgaGVscGZ1bC4KKyAgICAgICAgV2hpbGUgc29tZSBvZiB0aGVzZSB0ZXJtcyBhcmUgdW5pdmVyc2FsLCB0aGUgbGlzdCBpbmNsdWRlcyB0aGVtCisgICAgICAgIGp1c3QgaW4gY2FzZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwZW5kIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBhcHBlbmQgYnVpbGQgaW5mb3JtYXRpb24gdG8gYSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgYXJlIGtub3duIGFzIEJpdEJha2UgYXBwZW5kIGZpbGVzIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUKKyAgICAgICAgICAgICAgICBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUuCisgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBhcHBlbmQgZmlsZSBhbmQgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZQorICAgICAgICAgICAgICAgIG11c3QgdXNlIHRoZSBzYW1lIHJvb3QgZmlsZW5hbWUuCisgICAgICAgICAgICAgICAgVGhlIGZpbGVuYW1lcyBjYW4gZGlmZmVyIG9ubHkgaW4gdGhlIGZpbGUgdHlwZSBzdWZmaXggdXNlZAorICAgICAgICAgICAgICAgIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4pLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yIG92ZXJyaWRlcyB0aGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgc2ltaWxhcmx5LW5hbWVkIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGFuIGFwcGVuZCBmaWxlIGluIHVzZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGNhbiBhbHNvIHVzZSB3aWxkY2FyZCBwYXR0ZXJucyBpbiB0aGVpcgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG51bWJlcnMgc28gdGhleSBjYW4gYmUgYXBwbGllZCB0byBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHVuZGVybHlpbmcgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdiaXRiYWtlLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgaW1hZ2VzLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2JvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AtdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgZ3JvdXAgb2YgZHJpdmVycywgZGVmaW5pdGlvbnMsIGFuZCBvdGhlciBjb21wb25lbnRzIHRoYXQKKyAgICAgICAgICAgICAgICBwcm92aWRlIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J2J1aWxkLWRpcmVjdG9yeSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGFyZWEgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIGZvciBidWlsZHMuCisgICAgICAgICAgICAgICAgVGhlIGFyZWEgaXMgY3JlYXRlZCB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlCisgICAgICAgICAgICAgICAgc2V0dXAgZW52aXJvbm1lbnQgc2NyaXB0IHRoYXQgaXMgZm91bmQgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAoaS5lLiA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPllvdSBoYXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IHdoZW4gY3JlYXRpbmcgdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGFzc3VtZSB5b3VyCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gaXMKKyAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBhbmQgbGV0IHRoZSBuYW1lIG9mIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGRlZmF1bHQgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUvcG9reQorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgaG9tZSBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBuYW1lIGl0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC1idWlsZHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAkSE9NRQorICAgICAkIHNvdXJjZSBwb2t5LyZPRV9JTklUX0ZJTEU7IHRlc3QtYnVpbGRzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRpcmVjdG9yeSBwYXRoIGFuZCBzcGVjaWZpY2FsbHkgbmFtZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFueSBpbnRlcm1lZGlhdGUgZm9sZGVycyBpbiB0aGUgcGF0aG5hbWUgbXVzdCBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGNyZWF0ZXMgYSBCdWlsZCBEaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZUC0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgJEhPTUUvcG9reS8mT0VfSU5JVF9GSUxFOyAkSE9NRS9teWJ1aWxkcy9ZUC0mUE9LWVZFUlNJT047CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBjb250YWlucworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIGZvcgorICAgICAgICAgICAgICAgICAgICBpdHMgd29yay4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGNhbm5vdCBiZSB1bmRlciBORlMuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY2Fubm90IGJlIHVuZGVyIE5GUy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IG5lZWQgdGhlIEJ1aWxkIERpcmVjdG9yeSB0byBiZSB1bmRlciBORlMsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gc2V0IHRoaXMgdXAgYnkgc2V0dGluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgbG9jYWwgZHJpdmUuCisgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGVmZmVjdGl2ZWx5IHNlcGFyYXRlcyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT4sIHdoaWNoIGlzIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gdXNlZCB0byBidWlsZCBpbWFnZXMgaW4gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgcHJvdmlkZSBmb3IgbG9naWMgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugc28KKyAgICAgICAgICAgICAgICB0aGF0IGNvbW1vbmx5IHVzZWQgcGF0dGVybnMgY2FuIGJlIGRlZmluZWQgb25jZSBhbmQgdGhlbgorICAgICAgICAgICAgICAgIGVhc2lseSB1c2VkIGluIG11bHRpcGxlIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgRm9yIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCBjbGFzc2VzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgY2hhcHRlci4KKyAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyBlbmQgd2l0aCB0aGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaW4gdmFyaW91cyA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIHByb3ZpZGVzIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgorICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKKyAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXMgZW5kIHdpdGggYSA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaXMgYSBjb2xsZWN0aW9uIG9mCisgICAgICAgICAgICAgICAgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdG9vbHMgYW5kIHV0aWxpdGllcyB0aGF0IHJ1biBvbiBvbmUKKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYW5kIGFsbG93IHlvdSB0byBkZXZlbG9wIHNvZnR3YXJlIGZvciBhCisgICAgICAgICAgICAgICAgZGlmZmVyZW50LCBvciB0YXJnZXRlZCwgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xjaGFpbnMgY29udGFpbiBjcm9zcy1jb21waWxlcnMsIGxpbmtlcnMsIGFuZAorICAgICAgICAgICAgICAgIGRlYnVnZ2VycyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0d28gZGlmZmVyZW50IGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgdG9vbGNoYWluczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIHRvb2xjaGFpbiBvbmx5IHVzZWQgYnkgYW5kIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlbG9jYXRhYmxlIHRvb2xjaGFpbiB1c2VkIG91dHNpZGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYnkgZGV2ZWxvcGVycyB3aGVuIGRldmVsb3BpbmcgYXBwbGljYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcnVuIG9uIGEgdGFyZ2V0ZWQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRpb24gb2YgdGhlc2UgdG9vbGNoYWlucyBpcyBzaW1wbGUgYW5kIGF1dG9tYXRlZC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdG9vbGNoYWluIGNvbmNlcHRzIGFzIHRoZXkgYXBwbHkgdG8gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSB0b29sY2hhaW4gaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCisgICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgorICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgcmVwcmVzZW50aW5nIHRoZSBjb3JlLAorICAgICAgICAgICAgICAgIGEgQlNQLCBvciBhbiBhcHBsaWNhdGlvbiBzdGFjay4KKyAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBmaWxlcyB0aGF0IEJpdEJha2UgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY2xhc3NlcywgYW5kCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsICgia2VybmVsIE1ldGFkYXRhIiksIHRoZQorICAgICAgICAgICAgICAgIHRlcm0gcmVmZXJzIHRvIHRoZSBrZXJuZWwgY29uZmlnIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdvZS1jb3JlJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T0UtQ29yZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY29yZSBzZXQgb2YgTWV0YWRhdGEgb3JpZ2luYXRpbmcgd2l0aCBPcGVuRW1iZWRkZWQgKE9FKQorICAgICAgICAgICAgICAgIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gT0UgYW5kIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgaXMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2J1aWxkLXN5c3RlbS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQgb24gYW5vdGhlciBwcm9qZWN0IGtub3duCisgICAgICAgICAgICAgICAgYXMgIlBva3kiLCB3aGljaCB1c2VzCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiBhcyB0aGUgdGFzaworICAgICAgICAgICAgICAgIGV4ZWN1dG9yLgorICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQsIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIHNpbXBseQorICAgICAgICAgICAgICAgIGFzICJ0aGUgYnVpbGQgc3lzdGVtIi4KKyAgICAgICAgICAgICAgICBJZiBvdGhlciBidWlsZCBzeXN0ZW1zLCBzdWNoIGFzIGEgaG9zdCBvciB0YXJnZXQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgYXJlIHJlZmVyZW5jZWQsIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZQorICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGhpc3RvcmljYWwgaW5mb3JtYXRpb24gYWJvdXQgUG9reSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPiB0ZXJtLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKKyAgICAgICAgICAgICAgICByZWNpcGUncyBwYWNrYWdlZCBvdXRwdXQgcHJvZHVjZWQgYnkgQml0QmFrZSAoaS5lLiBhCisgICAgICAgICAgICAgICAgImJha2VkIHJlY2lwZSIpLgorICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlcy4KKyAgICAgICAgICAgICAgICBZb3UgImJha2UiIHNvbWV0aGluZyBieSBydW5uaW5nIGl0IHRocm91Z2ggQml0QmFrZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLAorICAgICAgICAgICAgICAgIGluIGdlbmVyYWwsIGhhdmUgc3VidGxlIG1lYW5pbmdzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgcGFja2FnZXMgcmVmZXJyZWQgdG8gaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhcmUgY29tcGlsZWQgYmluYXJpZXMKKyAgICAgICAgICAgICAgICB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBMaW51eAorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIHBvaW50IHdvcnRoIG5vdGluZyBpcyB0aGF0IGhpc3RvcmljYWxseSB3aXRoaW4KKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZSB2YXJpYWJsZXMgdGhhdCBhcmUgc2VlbWluZ2x5CisgICAgICAgICAgICAgICAgbWlzLW5hbWVkLAorICAgICAgICAgICAgICAgIChlLmcuIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgorICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCisgICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCisgICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCisgICAgICAgICAgICAgICAgZ3JhcGhpY3MuCisgICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSB0ZXJtICJwb2t5Iiwgd2hpY2ggaXMgcHJvbm91bmNlZAorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWg8L2VtcGhhc2lzPi1rZWUsIGNhbiBtZWFuIHNldmVyYWwgdGhpbmdzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGl0cyBtb3N0IGdlbmVyYWwgc2Vuc2UsIHBva3kgaXMgYW4gb3Blbi1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgdGhhdCB3YXMgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmVkSGFuZCBkZXZlbG9wZWQgcG9reSBvZmYgb2YgdGhlIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIGNvbW1lcmNpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIEludGVsIENvcnBvcmF0aW9uIGFjcXVpcmVkIE9wZW5lZEhhbmQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcG9reSBwcm9qZWN0IGJlY2FtZSB0aGUgYmFzaXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiIGV4aXN0cyBhcyBhIHNlcGFyYXRlIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBjYW4gY2xvbmUgdG8geWllbGQgYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBhIGNvcHkgb24geW91ciBob3N0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIHVwc3RyZWFtIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSBmaWxlcyB1c2VkIGZvciBkZXZlbG9wbWVudCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGRpc3RyaWJ1dGlvbikgY3JlYXRlZCB3aGVuIHlvdSB1c2UgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgdG8gYnVpbGQgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVjaXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICBBIHJlY2lwZSBkZXNjcmliZXMgd2hlcmUgeW91IGdldCBzb3VyY2UgY29kZSwgd2hpY2ggcGF0Y2hlcworICAgICAgICAgICAgICAgIHRvIGFwcGx5LCBob3cgdG8gY29uZmlndXJlIHRoZSBzb3VyY2UsIGhvdyB0byBjb21waWxlIGl0IGFuZCBzbyBvbi4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIGFsc28gZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGZvciBsaWJyYXJpZXMgb3IgZm9yIG90aGVyCisgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB1bml0IG9mIGV4ZWN1dGlvbiwgdGhlIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgdG8gYnVpbGQsIHRoZSBpbWFnZXMgdG8gYnVpbGQsIGFuZCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdyZWZlcmVuY2Uta2l0LXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgS2l0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB3b3JraW5nIGV4YW1wbGUgb2YgYSBzeXN0ZW0sIHdoaWNoIGluY2x1ZGVzIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPkJTUDwvbGluaz4KKyAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgc3lzdGVtPC9saW5rPgorICAgICAgICAgICAgICAgIGFuZCBvdGhlciBjb21wb25lbnRzLCB0aGF0IGNhbiB3b3JrIG9uIHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdzb3VyY2UtZGlyZWN0b3J5Jz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY3JlYXRlZCBhcyBhIHJlc3VsdAorICAgICAgICAgICAgICAgIG9mIGNyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvciBleHBhbmRpbmcgYSByZWxlYXNlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHRhcmJhbGwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwCisgICAgICAgICAgICAgICAgICAgIHlvdXIgU291cmNlIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtaWdodCBoZWFyIHRoZSB0ZXJtICJwb2t5IGRpcmVjdG9yeSIgdXNlZCB0byByZWZlcgorICAgICAgICAgICAgICAgIHRvIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lcyB0aGF0IGNvbnRhaW4gc3BhY2VzLgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIG9mIG5hbWVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgU291cmNlIERpcmVjdG9yeSBjb250YWlucyBCaXRCYWtlLCBEb2N1bWVudGF0aW9uLAorICAgICAgICAgICAgICAgIE1ldGFkYXRhIGFuZCBvdGhlciBmaWxlcyB0aGF0IGFsbCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgaGF2ZSB0aGUgU291cmNlIERpcmVjdG9yeSBpbiBwbGFjZSBvbgorICAgICAgICAgICAgICAgIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIGluIG9yZGVyIHRvIGRvIGFueSBkZXZlbG9wbWVudCB1c2luZworICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UKKyAgICAgICAgICAgICAgICBjYW4gbmFtZSB0aGUgcmVwb3NpdG9yeSBhbnl0aGluZyB5b3UgbGlrZS4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IG11Y2ggb2YgdGhlIGRvY3VtZW50YXRpb24sICJwb2t5IgorICAgICAgICAgICAgICAgIGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBmb2xkZXIgb2YgdGhlIGxvY2FsIGNvcHkgb2YKKyAgICAgICAgICAgICAgICB0aGUgcG9reSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSByZXN1bHRzIGluIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hvc2UgdG9wLWxldmVsCisgICAgICAgICAgICAgICAgZm9sZGVyIGlzIGFsc28gbmFtZWQgInBva3kiLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGFyYmFsbCBleHBhbnNpb24KKyAgICAgICAgICAgICAgICB0byBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnksIGlmIHlvdSBkbywgdGhlIHRvcC1sZXZlbAorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGlzIGRlcml2ZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWV9UQVJCQUxMOzwvZmlsZW5hbWU+IHJlc3VsdHMgaW4gYQorICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3Rvcnkgd2hvc2Ugcm9vdCBmb2xkZXIgaXMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1k7PC9maWxlbmFtZT4uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCisgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjcmVhdGVkIGJ5IHVucGFja2luZyBhIHJlbGVhc2VkIHRhcmJhbGwgYXMKKyAgICAgICAgICAgICAgICBjb21wYXJlZCB0byBjbG9uaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSB1bnBhY2sgYSB0YXJiYWxsLCB5b3UgaGF2ZSBhbiBleGFjdCBjb3B5IG9mIHRoZSBmaWxlcworICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSB0aW1lIG9mIHJlbGVhc2UgLSBhIGZpeGVkIHJlbGVhc2UgcG9pbnQuCisgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IG1ha2UgdG8geW91ciBsb2NhbCBmaWxlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeQorICAgICAgICAgICAgICAgIGFyZSBvbiB0b3Agb2YgdGhlIHJlbGVhc2UgYW5kIHdpbGwgcmVtYWluIGxvY2FsIG9ubHkuCisgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHdoZW4geW91IGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCByZXBvc2l0b3J5IHdpdGgKKyAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkncyBicmFuY2hlcyBhbmQgdGFncy4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGFueSBsb2NhbCBjaGFuZ2VzIHlvdSBtYWtlIHRvIHRoZSBsb2NhbAorICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY2FuIGJlIGxhdGVyIGFwcGxpZWQgdG8gYWN0aXZlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgYnJhbmNoZXMgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25jZXB0cyByZWxhdGVkIHRvIEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgYnJhbmNoZXMsIGFuZCB0YWdzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhc2s6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHVuaXQgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlIChlLmcuCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3RvYXN0ZXItdGVybSc+PGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtPC9saW5rPi4KKyAgICAgICAgICAgICAgICBUaGUgaW50ZXJmYWNlIGVuYWJsZXMgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIHlvdXIgYnVpbGRzLgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IGJ1aWxkcyBpcyBjb2xsZWN0ZWQgYW5kIHN0b3JlZCBpbiBhIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBUb2FzdGVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+WW9jdG8gUHJvamVjdCBUb2FzdGVyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcHN0cmVhbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgcmVmZXJlbmNlIHRvIHNvdXJjZSBjb2RlIG9yIHJlcG9zaXRvcmllcworICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBsb2NhbCB0byB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ1dCBsb2NhdGVkIGluIGEKKyAgICAgICAgICAgICAgICBtYXN0ZXIgYXJlYSB0aGF0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIG1haW50YWluZXIgb2YgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgIGNvZGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIGZvciBhIGRldmVsb3BlciB0byB3b3JrIG9uIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgIHBpZWNlIG9mIGNvZGUsIHRoZXkgbmVlZCB0byBmaXJzdCBnZXQgYSBjb3B5IG9mIGl0IGZyb20gYW4KKyAgICAgICAgICAgICAgICAidXBzdHJlYW0iIHNvdXJjZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKaW5kZXggN2NhOTI5Yy4uODExNTc3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkLgogICAgICAgICAgICAgICAgIEZvciBtb3N0IG9mIHRoZW0sIGl0IGlzIHVubGlrZWx5IHRoYXQgeW91IHdvdWxkIGhhdmUgYW55CiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byB0aGVtIGluIHlvdXIgb3duCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPi4KICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgbWV0YWRhdGEgYWdhaW5zdCB0aGlzIGxpc3QgdG8gYmUgc3VyZToKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5saWJ4MTEtdHJpbTwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CkBAIC0yOTMsNyArMjkzLDcgQEAKICAgICAgICAgICAgICAgICBGb3IgdGhlIHJlbWFpbmRlciwgeW91IGNhbiBub3cgZmluZCB0aGVtIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWV4dHJhczwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoIGlzIGluIHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvbGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC00MzgsMTEgKzQzOCwxMSBAQAogICAgICAgICAgICAgeW91IG5vdyBuZWVkIHRvIGNyZWF0ZSBhbiBhcHBlbmQgZmlsZSBmb3IgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5pdC1pZnVwZG93bjwvZmlsZW5hbWU+IHJlY2lwZSBpbnN0ZWFkLCB3aGljaCB5b3UgY2FuCiAgICAgICAgICAgICBmaW5kIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd248L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGFwcGVuZCBmaWxlcywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtODIxLDcgKzgyMSw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaGlzdG9yeSBpcyBlbmFibGVkLCBpdHMgb3V0cHV0IGlzIG5vdyB3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBtYWtlcyBpdCBlYXNpZXIgdG8gZGVsZXRlCkBAIC05OTIsNyArOTkyLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgcGVyZm9ybWluZyBhdXRvbWF0ZWQgaW1hZ2UgdGVzdHMgaW4gdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTE3Myw3ICsxMTczLDcgQEAKICAgICAgICAgICAgIGNsYXNzIGhhcyBiZWVuIHJld3JpdHRlbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gc2ltcGxpZmllZC4KICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgb24gdGhlIHNvdXJjZSBhcmNoaXZlciwgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xMjE4LDcgKzEyMTgsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1tYXRjaGluZy1icmFuY2gtcmVxdWlyZW1lbnQtZm9yLWdpdC1mZXRjaGluZyc+CkBAIC0xMzYyLDcgKzEzNjIsNyBAQAogICAgICAgICAgICAgICAgIGluY3JlbWVudHMgb24gY2hhbmdlcywgdXNlIHRoZSBQUiBzZXJ2aWNlIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoaXMgc2VydmljZSBpbiB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLWEtcHItc2VydmljZSc+V29ya2luZyBXaXRoIGEgUFIgU2VydmljZTwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTE0NTMsNyArMTQ1Myw3IEBACiAgICAgICAgICAgICBQYWNrYWdlIFRlc3RzIChwdGVzdCkgYXJlIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUGFja2FnZSBUZXN0cywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+U2V0dGluZyB1cCBhbmQgcnVubmluZyBwYWNrYWdlIHRlc3QgKHB0ZXN0KTwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnB0ZXN0PC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wdGVzdCc+PGZpbGVuYW1lPnB0ZXN0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uLgpAQCAtMTUyNSw3ICsxNTI1LDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIDxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT4gZmlsZSBoYXMgYmVlbiBjaGFuZ2VkCiAgICAgICAgICAgICB0byBiZXR0ZXIgZGVzY3JpYmUgdGhlIGxpY2Vuc2Ugb2YgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZgotICAgICAgICAgICAgT0UtQ29yZS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LgogICAgICAgICAgICAgSG93ZXZlciwgdGhlIGxpY2Vuc2luZyBpdHNlbGYgcmVtYWlucyB1bmNoYW5nZWQuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMTc0OCw3ICsxNzQ4LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBtaW5pbXVtCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IHZlcnNpb24gcmVxdWlyZWQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB2ZXJzaW9uIHJlcXVpcmVkCiAgICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWxpc3Q8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm93IHJlcXVpcmVkIGJ5CiAgICAgICAgICAgICBCaXRCYWtlJ3MgR2l0IGZldGNoZXIuCkBAIC0yNTcyLDcgKzI1NzIsOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgTWFpbnRlbmFuY2UgdHJhY2tpbmcgZGF0YSBmb3IgcmVjaXBlcyB0aGF0IHdhcyBwcmV2aW91c2x5IHBhcnQKLSAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gaGFzIGJlZW4gbW92ZWQgdG8gT0UtQ29yZS4KKyAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LgogICAgICAgICAgICAgVGhlIGNoYW5nZSBpbmNsdWRlcyA8ZmlsZW5hbWU+cGFja2FnZV9yZWdleC5pbmM8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0cm9fYWxpYXMuaW5jPC9maWxlbmFtZT4sIHdoaWNoIGFyZSB0eXBpY2FsbHkgZW5hYmxlZAogICAgICAgICAgICAgd2hlbiB1c2luZyB0aGUKQEAgLTMwMDAsOCArMzAwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+IGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ym9vdC1kaXJlY3RkaXNrPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIE1lcmdlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZS12bSc+PGZpbGVuYW1lPmltYWdlLXZtPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIE1lcmdlZCBpbnRvIHRoZSA8ZmlsZW5hbWU+aW1hZ2Utdm08L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ib290LWRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBjbGFzcyB3YXMgcmFyZWx5CiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGx5IHVzZWQuCkBAIC0zMjEwLDcgKzMyMTAsOCBAQAogICAgICAgICAgICAgWW91IGNhbiBlbmFibGUsIGRpc2FibGUsIGFuZCB0ZXN0IHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgZGF0YS4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1nb2JqZWN0LWludHJvc3BlY3Rpb24tc3VwcG9ydCc+RW5hYmxpbmcgR09iamVjdCBJbnRyb3NwZWN0aW9uIFN1cHBvcnQ8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTM0MTksNyArMzQyMCw4IEBACiAgICAgICAgICAgICAgICAgRm9yIGhlbHAgcHJlcGFyaW5nIG1ldGFkYXRhLCBzZWUgYW55IG9mIHRoZSBtYW55IFB5dGhvbiAzIHBvcnRpbmcKICAgICAgICAgICAgICAgICBndWlkZXMgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcmVmZXJlbmNlIHRoZSBjb252ZXJzaW9uIGNvbW1pdHMgZm9yIEJpdGJha2UKLSAgICAgICAgICAgICAgICBhbmQgeW91IGNhbiB1c2UgT0UtQ29yZSBhcyBhIGd1aWRlIGZvciBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIGFuZCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+IGFzIGEgZ3VpZGUgZm9yIGNoYW5nZXMuCiAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBwYXJ0aWN1bGFyIGFyZWFzIG9mIGludGVyZXN0OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgKiBzdWJwcm9jZXNzIGNvbW1hbmQtbGluZSBwaXBlcyBuZWVkaW5nIGxvY2FsZSBkZWNvZGluZwpAQCAtMzUwOCw3ICszNTEwLDggQEAKICAgICAgICAgICAgIGhhcmQtY29kaW5nIGFueSBrbm93bGVkZ2UgYWJvdXQgZGlmZmVyZW50IG1hY2hpbmVzLgogICAgICAgICAgICAgVXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgaXMgcGFydGljdWxhcmx5IGNvbnZlbmllbnQgd2hlbiB0cnlpbmcKICAgICAgICAgICAgIHRvIHVzZSBRRU1VIHdpdGggbWFjaGluZXMgb3RoZXIgdGhhbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11KjwvZmlsZW5hbWU+IG1hY2hpbmVzIGluIE9FLUNvcmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdSo8L2ZpbGVuYW1lPiBtYWNoaW5lcyBpbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4uCiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnFlbXVib290LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11Ym9vdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICBjbGFzcyB3aGVuIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgYmVpbmcgYnVpbGQgKGkuZS4KQEAgLTQwMzUsNyArNDAzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBhbiBleGFtcGxlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5waXhidWZjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvPC9maWxlbmFtZT4gaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNTVEFURVBPU1RJTlNURlVOQ1M8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQpAQCAtNDQ3OCw3ICs0NDgxLDggQEAKICAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGJ5IGN1cnJlbnQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIFRodXMsIEdTdHJlYW1lcidzIGl2b3JiaXMgcGx1Z2luIGhhcyBiZWVuIGRpc2FibGVkCiAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dHJlbW9yPC9maWxlbmFtZT4gcmVjaXBlIGluIE9FLUNvcmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50cmVtb3I8L2ZpbGVuYW1lPiByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3VtbWlib290OjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KQEAgLTQ0OTUsOCArNDQ5OSw4IEBACiAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gV2ljOgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV2ljLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcyc+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlcyBVc2luZyBXaWM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtNDcxNyw2ICs0NzIxLDUyMyBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTIuNC1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1tZW1vcnktcmVzaWRlbnQtbW9kZSc+CisgICAgICAgIDx0aXRsZT5NZW1vcnkgUmVzaWRlbnQgTW9kZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIHBlcnNpc3RlbnQgbW9kZSBpcyBub3cgYXZhaWxhYmxlIGluIEJpdEJha2UncyBkZWZhdWx0IG9wZXJhdGlvbiwKKyAgICAgICAgICAgIHJlcGxhY2luZyBpdHMgcHJldmlvdXMgIm1lbW9yeSByZXNpZGVudCBtb2RlIiAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIE5vdyB5b3Ugb25seSBuZWVkIHRvIHNldAorICAgICAgICAgICAgPGZpbGVuYW1lPkJCX1NFUlZFUl9USU1FT1VUPC9maWxlbmFtZT4gdG8gYSB0aW1lb3V0CisgICAgICAgICAgICAoaW4gc2Vjb25kcykgYW5kIEJpdEJha2UncyBzZXJ2ZXIgc3RheXMgcmVzaWRlbnQgZm9yIHRoYXQKKyAgICAgICAgICAgIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdCBoYXMgYmVlbgorICAgICAgICAgICAgcmVtb3ZlZCBzaW5jZSBhIHNlcGFyYXRlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBubyBsb25nZXIKKyAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgY2hhbmdlcyB0aGF0IGhhdmUKKyAgICAgICAgICAgIG9jdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT4gQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluICJweXRob24zIiBwYWNrYWdlIG5vdyBicmluZ3MgaW4gYWxsIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIFB5dGhvbiAzIGRpc3RyaWJ1dGlvbiByYXRoZXIgdGhhbiBhIHN1YnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIG1hdGNoZXMgd2hhdCBpcyBleHBlY3RlZCBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gaW5zdGFsbCBhIHN1YnNldCBvZiBQeXRob24gMywgc3BlY2lmeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24tY29yZTwvZmlsZW5hbWU+IHBsdXMgb25lIG9yIG1vcmUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5kaXZpZHVhbCBwYWNrYWdlcyB0aGF0IGFyZSBzdGlsbCBwcm9kdWNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbjM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YnoyLnB5PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmx6bWEucHk8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9jb21wcmVzc2lvbi5weTwvZmlsZW5hbWU+IHNjcmlwdHMgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uMy1taXNjPC9maWxlbmFtZT4gcGFja2FnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cHl0aG9uMy1jb21wcmVzc2lvbjwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YmludXRpbHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpYmJmZDwvZmlsZW5hbWU+IGxpYnJhcnkgaXMgbm93IHBhY2thZ2VkIGluCisgICAgICAgICAgICAgICAgICAgIGEgc2VwYXJhdGUgImxpYmJmZCIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdpbmcgc2F2ZXMgc3BhY2Ugd2hlbiBjZXJ0YWluIHRvb2xzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wZXJmPC9maWxlbmFtZT4pIGFyZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSB0b29scyBvbmx5IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmJmZDwvZmlsZW5hbWU+IHJhdGhlciB0aGFuIGFsbCB0aGUgcGFja2FnZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3U8L2ZpbGVuYW1lPiBwcm9ncmFtIGlzIG5vdyBwYWNrYWdlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgc2VwYXJhdGUgInV0aWwtbGludXgtc3UiIHBhY2thZ2UsIHdoaWNoIGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCB3aGVuICJwYW0iIGlzIGxpc3RlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnV0aWwtbGludXg8L2ZpbGVuYW1lPiBzaG91bGQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIHVubGVzcyBpdCBpcyBuZWVkZWQgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdTwvZmlsZW5hbWU+IGlzIG5vcm1hbGx5IHByb3ZpZGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hhZG93IGZpbGUgZm9ybWF0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gcGFja2FnZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY2llcyAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSA8ZmlsZW5hbWU+dXRpbC1saW51eC1zdTwvZmlsZW5hbWU+IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuICJwYW0iIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnN3aXRjaF9yb290PC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LXN3aXRjaC1yb290IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZm9yIHNtYWxsIGluaXRyYW1mcyBpbWFnZXMgdGhhdCBkbyBub3QgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3aG9sZSA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVzeWJveCBiaW5hcnksIHdoaWNoIGFyZSBib3RoIG11Y2ggbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dpdGNoX3Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3dpdGNoLXJvb3Q8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW9uaWNlPC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LWlvbmljZSIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtaW9uaWNlPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3VzaGVsbDwvZmlsZW5hbWU+IHByb2dyYW0gaXMgbm93IHBhY2thZ2VkIGluCisgICAgICAgICAgICAgICAgICAgIGEgc2VwYXJhdGUgImluaXRzY3JpcHRzLXN1c2hlbGwiIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFja2FnaW5nIGNoYW5nZSBhbGxvd3Mgc3lzdGVtcyB0byBwdWxsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdXNoZWxsPC9maWxlbmFtZT4gaW4gd2hlbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VsaW51eDwvZmlsZW5hbWU+IGlzIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgYWxzbyBlbGltaW5hdGVzIG5lZWRpbmcgdG8gcHVsbCBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnN1c2hlbGw8L2ZpbGVuYW1lPiBwYWNrYWdlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgInNlbGludXgiIGlzIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nbGliLTIuMDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2xpYi0yLjA8L2ZpbGVuYW1lPiBwYWNrYWdlIG5vdyBoYXMgYQorICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2hhcmVkLW1pbWUtaW5mbzwvZmlsZW5hbWU+IHBhY2thZ2UsIHNpbmNlIGxhcmdlCisgICAgICAgICAgICAgICAgICAgIHBvcnRpb25zIG9mIEdJTyBhcmUgbm90IHVzZWZ1bCB3aXRob3V0IHRoZSBNSU1FIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHJlbW92ZSB0aGUgZGVwZW5kZW5jeSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJBRF9SRUNPTU1FTkRBVElPTlMnPjxmaWxlbmFtZT5CQURfUkVDT01NRU5EQVRJT05TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlmIDxmaWxlbmFtZT5zaGFyZWQtbWltZS1pbmZvPC9maWxlbmFtZT4gaXMgdG9vCisgICAgICAgICAgICAgICAgICAgIGxhcmdlIGFuZCBpcyBub3QgcmVxdWlyZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIFN0YW5kYXJkIFJ1bnRpbWU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEdvIHN0YW5kYXJkIHJ1bnRpbWUgaGFzIGJlZW4gc3BsaXQgb3V0IGZyb20gdGhlIG1haW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdvPC9maWxlbmFtZT4gcmVjaXBlIGludG8gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z28tcnVudGltZTwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YWNwaXRlc3RzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgbm90IG1haW50YWluZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5hdXRvZ2VuLW5hdGl2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciByZXF1aXJlZCBieSBHcnViLCBvZS1jb3JlLCBvciBtZXRhLW9lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YmR3Z2M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3RoaW5nIGluIE9wZW5FbWJlZGRlZC1Db3JlIHJlcXVpcmVzIHRoaXMgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBJdCBoYXMgbW92ZWQgdG8gbWV0YS1vZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmJ5YWNjPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIG9ubHkgbmVlZGVkIGJ5IHJwbSA1LnggYW5kIGhhcyBtb3ZlZCB0bworICAgICAgICAgICAgICAgICAgICBtZXRhLW9lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2NjICg1LjQpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDUuNCBzZXJpZXMgZHJvcHBlZCB0aGUgcmVjaXBlIGluIGZhdm9yIG9mIDYuMyAvIDcuMi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdub21lLWNvbW1vbjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nby1ib290c3RyYXAtbmF0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgR28gMS45IGRvZXMgaXRzIG93biBib290c3RyYXBwaW5nIHNvIHRoaXMgcmVjaXBlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ndWlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBvbmx5IG5lZWRlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2dlbi1uYXRpdmU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlbWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGlzIG5vIGxvbmdlciBuZWVkZWQgYnkgZWl0aGVyIG9mIHRoZXNlIHByb2dyYW1zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliY2xhc3MtaXNhLXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliZHVtcHZhbHVlLXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliZW52LXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliZmlsZS1jaGVja3RyZWUtcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJpMThuLWNvbGxhdGUtcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJpY29udjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBvbmx5IG5lZWRlZCBmb3IgPGZpbGVuYW1lPnVjbGliYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCB3YXMgcmVtb3ZlZCBpbiB0aGUgcHJldmlvdXMgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5tdXNsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1taW5ndzwvZmlsZW5hbWU+IHN0aWxsIG5lZWRzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJpY29udjwvZmlsZW5hbWU+LCBzbyBpdCBoYXMKKyAgICAgICAgICAgICAgICAgICAgYmVlbiBtb3ZlZCB0byA8ZmlsZW5hbWU+bWV0YS1taW5ndzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlicG5nMTI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQi4gVGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnBuZzwvZmlsZW5hbWU+IGlzIDEuNi54LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlicG9kLXBsYWluZXItcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0byAoNC4xKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIDQuNCwgNC45LCA0LjEwIGFuZCA0LjEyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bWFpbHg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBvbmx5IG5lZWRlZCBmb3IgTFNCCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHksIGFuZCB1cHN0cmVhbSBpcyBkZWZ1bmN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bWVzYSAoZ2l0IHZlcnNpb24gb25seSk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZ2l0IHZlcnNpb24gcmVjaXBlIHdhcyBzdGFsZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm9mb25vIChnaXQgdmVyc2lvbiBvbmx5KTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBnaXQgdmVyc2lvbiByZWNpcGUgd2FzIHN0YWxlIHdpdGggcmVzcGVjdCB0byB0aGUgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cG9ydG1hcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG9ic29sZXRlIGFuZCBpcyBzdXBlcnNlZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24zLXB5Z3BnbWU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBvbGQgYW5kIHVubWFpbnRhaW5lZC4gSXQgd2FzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYnkgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+LCB3aGljaCBoYXMgc3dpdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gb2ZmaWNpYWwgPGZpbGVuYW1lPmdwZ21lPC9maWxlbmFtZT4gUHl0aG9uIGJpbmRpbmdzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLWFzeW5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1naXRkYjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tZ2l0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tbWFrbzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXBleHBlY3Q8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1wdHlwcm9jZXNzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgUHl0aG9uIHRoZSAzIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tcHljdXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm90aGluZyBpcyB1c2luZyB0aGlzIHJlY2lwZSBpbiBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1zaXg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1zbW1hcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmVtYWtlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPnJlbWFrZTwvZmlsZW5hbWU+IGFzIHRoZSBwcm92aWRlciBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9tYWtlPC9maWxlbmFtZT4gaXMgYnJva2VuLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoaXMgcmVjaXBlIGlzIG5vdCBuZWVkZWQgaW4gT3BlbkVtYmVkZGVkLUNvcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1rZXJuZWwtZGV2aWNlLXRyZWUtbW92ZSc+CisgICAgICAgIDx0aXRsZT5LZXJuZWwgRGV2aWNlIFRyZWUgTW92ZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBLZXJuZWwgRGV2aWNlIFRyZWUgc3VwcG9ydCBpcyBub3cgZWFzaWVyIHRvIGVuYWJsZSBpbiBhIGtlcm5lbAorICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgVGhlIERldmljZSBUcmVlIGNvZGUgaGFzIG1vdmVkIHRvIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtZGV2aWNldHJlZTwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9yIGFueSByZWNpcGUgdGhhdCBpbmhlcml0cworICAgICAgICAgICAgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPjxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzIGFuZCBzZXRzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9ERVZJQ0VUUkVFJz48ZmlsZW5hbWU+S0VSTkVMX0RFVklDRVRSRUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgVGhlIHByZXZpb3VzIG1lY2hhbmlzbSBmb3IgZG9pbmcgdGhpcywKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGlzIHN0aWxsIGF2YWlsYWJsZSB0byBhdm9pZCBicmVha2FnZSwgYnV0IHRyaWdnZXJzIGEKKyAgICAgICAgICAgIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisgICAgICAgICAgICBGdXR1cmUgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3Qgd2lsbCByZW1vdmUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEl0IGlzIGFkdmlzYWJsZSB0byByZW1vdmUgYW55IDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHN0YXRlbWVudHMgdGhhdCByZXF1ZXN0CisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZyb20gYW55IGN1c3RvbSBrZXJuZWwgcmVjaXBlcyB5b3UgbWlnaHQgaGF2ZS4KKyAgICAgICAgICAgIFRoaXMgd2lsbCBhdm9pZCBicmVha2FnZSBpbiBwb3N0IDIuNCByZWxlYXNlcy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LXBhY2thZ2UtcWEtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdlIFFBIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwYWNrYWdlIFFBIGNoYW5nZXMgdG9vayBwbGFjZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgInVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHMiIFFBIGNoZWNrIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJlZmVyIHRvIDxmaWxlbmFtZT4ke0NPUkVCQVNFfS9MSUNFTlNFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNfRklMRVNfQ0hLU1VNJz48ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB5b3UgcmVjZWl2ZSBhIHdhcm5pbmcgYmVjYXVzZSB0aGlzIGZpbGUgaXMgYSBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgbGljZW5zZSBmb3IgT0UtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIDxmaWxlbmFtZT4ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaWYgeW91ciByZWNpcGUgaXMgTUlULWxpY2Vuc2VkIGFuZCB5b3UgY2Fubm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJlZmVycmVkIG1ldGhvZCBvZiByZWZlcnJpbmcgdG8gYSBmaWxlIHdpdGhpbiB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1yZWFkbWUtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gRmlsZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGNoYW5nZXMgdG8gPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGVzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIFBva3kgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgbW92ZWQgdG8gdGhlIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllciBhbmQKKyAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gcmVuYW1lZCA8ZmlsZW5hbWU+UkVBRE1FLnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQSBzeW1saW5rIGhhcyBiZWVuIGNyZWF0ZWQgc28gdGhhdCByZWZlcmVuY2VzIHRvIHRoZSBvbGQKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gd29yay4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJFQURNRS5oYXJkd2FyZTwvZmlsZW5hbWU+IGZpbGUgaGFzIGJlZW4gbW92ZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEEgc3ltbGluayBoYXMgYmVlbiBjcmVhdGVkIHNvIHRoYXQgcmVmZXJlbmNlcyB0byB0aGUgb2xkCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+UkVBRE1FLnFlbXU8L2ZpbGVuYW1lPiBmaWxlIGhhcyBiZWVuIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBjb3ZlcmFnZSBvZiB0aGUgPGZpbGVuYW1lPnFlbXUqPC9maWxlbmFtZT4gbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGFkZGl0aW9uYWwgY2hhbmdlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJPT1RGU19QS0dNQU5BR0VfQk9PVFNUUkFQPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIGFueSByZWZlcmVuY2VzIHRvIGl0IGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlbW92ZSB0aGlzIHZhcmlhYmxlIGZyb20gYW55IGN1c3RvbSByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBZb2N0byBQcm9qZWN0IDIuMSByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IHdhcyByZW5hbWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG88L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkgcmVtYWluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWludGFpbmVycy5pbmM8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCB0cmFja3MKKyAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lcnMgYnkgbGlzdGluZyBhIHByaW1hcnkgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpbiBPRS1Db3JlLCBoYXMgYmVlbiBtb3ZlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiB0byBPRS1Db3JlIChpLmUuIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIG5vdyBtYWtlcyBhIHNpbmdsZSBjb21taXQgcGVyIGJ1aWxkIHJhdGhlciB0aGFuIG9uZQorICAgICAgICAgICAgICAgICAgICBjb21taXQgcGVyIHN1YmRpcmVjdG9yeSBpbiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBhc3N1bWVzIHRoZSBjb21taXRzIGFyZSBlbmFibGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgID0gIjEiLCB3aGljaCBpcyB0eXBpY2FsLgorICAgICAgICAgICAgICAgICAgICBQcmV2aW91c2x5LCB0aGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzIG1hZGUKKyAgICAgICAgICAgICAgICAgICAgb25lIGNvbW1pdCBwZXIgc3ViZGlyZWN0b3J5IGluIHRoZSByZXBvc2l0b3J5IGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB0aGUgY2hhbmdlcyBmb3IgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVG8gdmlldyBhIHBhcnRpY3VsYXIgY2hhbmdlLCBzcGVjaWZ5IHRoYXQgc3ViZGlyZWN0b3J5IGFzCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IHBhcmFtZXRlciBvbiB0aGUgPGZpbGVuYW1lPmdpdCBzaG93PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPmdpdCBkaWZmPC9maWxlbmFtZT4gY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT54ODYtYmFzZS5pbmM8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCBieSBhbGwgeDg2LWJhc2VkIG1hY2hpbmUgY29uZmlndXJhdGlvbnMsIG5vdyBzZXRzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB1c2luZyA8ZmlsZW5hbWU+Pz08L2ZpbGVuYW1lPiB0byAibGl2ZSIgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kaW5nIHdpdGggPGZpbGVuYW1lPis9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBkZWZhdWx0IGVhc2llciB0byBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGZpcmVzIG11bHRpcGxlICJCdWlsZFN0YXJ0ZWQiIGV2ZW50cyB3aGVuCisgICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnIGlzIGVuYWJsZWQgKG9uZSBwZXIgY29uZmlndXJhdGlvbikuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2V2ZW50cyc+RXZlbnRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+c2VjdXJpdHlfZmxhZ3MuaW5jPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBzZXRzIGEgPGZpbGVuYW1lPkdDQ1BJRTwvZmlsZW5hbWU+IHZhcmlhYmxlIHdpdGggYW4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgIHRvIGVuYWJsZSBQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcyAoUElFKSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBQSUUgaW4gdGhlIEdOVSBDIENvbXBpbGVyIChHQ0MpLCBtYWtlcyBSZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgT3JpZW50ZWQgUHJvZ3JhbW1pbmcgKFJPUCkgYXR0YWNrcyBtdWNoIG1vcmUgZGlmZmljdWx0IHRvCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT0UtQ29yZSBub3cgcHJvdmlkZXMgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBwbHVnaW4gdGhhdCBpbXBsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGEgImNyZWF0ZS1sYXllciIgc3ViY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgc3ViY29tbWFuZCBoYXMgcmVzdWx0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdCBiZWluZyBkZXByZWNhdGVkIGFuZAorICAgICAgICAgICAgICAgICAgICB3aWxsIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBuZXh0IFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+dm1kazwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dmRpPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5xY293MjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgdHlwZXMgYXJlIG5vdworICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgIndpYyIgaW1hZ2UgdHlwZSB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTlZFUlNJT05fQ01EPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgZXF1aXZhbGVudCBpbWFnZSB0eXBlcyBhcmUgbm93CisgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYy52bWRrPC9maWxlbmFtZT4sIDxmaWxlbmFtZT53aWMudmRpPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT53aWMucWNvdzI8L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbWFnZV8mbHQ7dHlwZSZndDtbZGVwZW5kc108L2ZpbGVuYW1lPiBoYXMKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgPGZpbGVuYW1lPklNQUdFX0RFUEVORFNfJmx0O3R5cGUmZ3Q7PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHlvdXIgb3duIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgY3VzdG9tIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHR5cGVzLCB0aGVuIHlvdSBuZWVkIHRvIHVwZGF0ZSB0aGVtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9wZW5TU0wgMS4xIGhhcyBiZWVuIGludHJvZHVjZWQuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBkZWZhdWx0IGlzIHN0aWxsIDEuMC54IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUkVGRVJSRURfVkVSU0lPTic+PGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHByZWZlcmVuY2UgaXMgc2V0IGlzIGR1ZSB0byB0aGUgcmVtYWluaW5nIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICAgICAgaXNzdWVzIHdpdGggb3RoZXIgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJPVklERVMnPjxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSAgaW4gdGhlIG9wZW5zc2wgMS4wIHJlY2lwZSBub3cgaW5jbHVkZXMgIm9wZW5zc2wxMCIKKyAgICAgICAgICAgICAgICAgICAgYXMgYSBtYXJrZXIgdGhhdCBjYW4gYmUgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHJlY2lwZXMgdGhhdCBidWlsZCBzb2Z0d2FyZSB0aGF0IHN0aWxsIGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICAgICBPcGVuU1NMIDEuMC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBlbnN1cmUgY29uc2lzdGVudCBiZWhhdmlvciwgQml0QmFrZSdzICItciIgYW5kICItUiIKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAoaS5lLiBwcmVmaWxlIGFuZCBwb3N0ZmlsZSksIHdoaWNoIGFyZSB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIHJlYWQgb3IgcG9zdC1yZWFkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUsIG5vdyBvbmx5IGFmZmVjdCB0aGUgY3VycmVudCBCaXRCYWtlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB0aGVzZSBCaXRCYWtlIGNoYW5nZXMsIHRoZXNlIG9wdGlvbnMgd291bGQgInN0aWNrIgorICAgICAgICAgICAgICAgICAgICBmb3IgZnV0dXJlIGV4ZWN1dGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCmluZGV4IDJmMzZlMTYuLjE3ZjRjNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEJpdEJha2UgaXMgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gUHl0aG9uIHRoYXQgaW50ZXJwcmV0cyB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gdXNlZCBieQorICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IHVzZWQgYnkKICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCiAgICAgICAgIEF0IHNvbWUgcG9pbnQsIGRldmVsb3BlcnMgd29uZGVyIHdoYXQgYWN0dWFsbHkgaGFwcGVucyB3aGVuIHlvdSBlbnRlcjoKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBCaXRCYWtlIHN0cml2ZXMgdG8gYmUgYSBnZW5lcmljICJ0YXNrIiBleGVjdXRvciB0aGF0IGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgY29tcGxleCBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMuCiAgICAgICAgIEFzIHN1Y2gsIGl0IGhhcyBubyByZWFsIGtub3dsZWRnZSBvZiB3aGF0IHRoZSB0YXNrcyBiZWluZyBleGVjdXRlZCBhY3R1YWxseSBkby4KICAgICAgICAgQml0QmFrZSBqdXN0IGNvbnNpZGVycyBhIGxpc3Qgb2YgdGFza3Mgd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGhhbmRsZXMKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICBjb25zaXN0aW5nIG9mIHZhcmlhYmxlcyBpbiBhIGNlcnRhaW4gZm9ybWF0IHRoYXQgZ2V0IHBhc3NlZCB0byB0aGUgdGFza3MuCiAgICAgPC9ub3RlPgogCkBAIC0zNiw5ICszNiwxMCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZmlyc3QgdGhpbmcgQml0QmFrZSBkb2VzIGlzIGxvb2sgZm9yIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyBCaXRCYWtlIGRvZXMgaXMgbG9vayBmb3IgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgICAgIFRoaXMgZmlsZSByZXNpZGVzIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgICAgIEJpdEJha2UgZmluZHMgaXQgYnkgZXhhbWluaW5nIGl0cwogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPiBlbnZpcm9ubWVudApAQCAtOTIsOCArOTMsOCBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy0qLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gUG9reS4KICAgICAgICAgICAgIEFkZGluZyBleHRyYSBjb250ZW50IHRvIDxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT4gaXMgYmVzdCBhY2hpZXZlZCB0aHJvdWdoIHRoZSB1c2Ugb2YKICAgICAgICAgICAgIEJpdEJha2UgbGF5ZXJzIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kCi0gICAgICAgICAgICBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC0yMjcsMTMgKzIyOCwxNCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHRocm91Z2ggc2V2ZXJhbCB2YXJpYWJsZXMuCi0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdmFyaWFibGVzIEJpdEJha2UgdXNlcyBpbiB0aGUgQml0QmFrZSBkb2N1bWVudGF0aW9uLAotICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlL2RvYy9tYW51YWw8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHZhcmlhYmxlcyBCaXRCYWtlIHVzZXMgaW4gdGhlCisgICAgICAgICAgICBCaXRCYWtlIGRvY3VtZW50YXRpb24sIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvZG9jL21hbnVhbDwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIEF0IGEgYmFzaWMgbGV2ZWwsIGl0IGlzIHN1ZmZpY2llbnQgdG8ga25vdyB0aGF0IEJpdEJha2UgdXNlcyB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+REVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPlJERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlcyB3aGVuCi0gICAgICAgICAgICBjYWxjdWxhdGluZyBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz5SREVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgdmFyaWFibGVzIHdoZW4gY2FsY3VsYXRpbmcgZGVwZW5kZW5jaWVzLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC00NDgsMjAgKzQ1MCwyMyBAQAogICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcHRpb25zIGFuZCBmb3JtYXRzIG9mIGVudHJpZXMgZm9yIHNwZWNpZmljCiAgICAgICAgICAgICBmZXRjaGVycyBpbiB0aGUgQml0QmFrZSBtYW51YWwgbG9jYXRlZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2RvYy9tYW51YWw8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25lIHVzZWZ1bCBmZWF0dXJlIGZvciBjZXJ0YWluIFNvdXJjZSBDb2RlIE1hbmFnZXIgKFNDTSkgZmV0Y2hlcnMgaXMgdGhlIGFiaWxpdHkgdG8KLSAgICAgICAgICAgICJhdXRvLXVwZGF0ZSIgd2hlbiB0aGUgdXBzdHJlYW0gU0NNIGNoYW5nZXMgdmVyc2lvbi4KLSAgICAgICAgICAgIFNpbmNlIHRoaXMgYWJpbGl0eSByZXF1aXJlcyBjZXJ0YWluIGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgU0NNLCBub3QgYWxsCi0gICAgICAgICAgICBzeXN0ZW1zIHN1cHBvcnQgaXQuCi0gICAgICAgICAgICBDdXJyZW50bHkgU3VidmVyc2lvbiwgQmF6YWFyIGFuZCB0byBhIGxpbWl0ZWQgZXh0ZW50LCBHaXQgc3VwcG9ydCB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiLgorICAgICAgICAgICAgT25lIHVzZWZ1bCBmZWF0dXJlIGZvciBjZXJ0YWluIFNvdXJjZSBDb2RlIE1hbmFnZXIgKFNDTSkgZmV0Y2hlcnMKKyAgICAgICAgICAgIGlzIHRoZSBhYmlsaXR5IHRvICJhdXRvLXVwZGF0ZSIgd2hlbiB0aGUgdXBzdHJlYW0gU0NNIGNoYW5nZXMKKyAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICBTaW5jZSB0aGlzIGFiaWxpdHkgcmVxdWlyZXMgY2VydGFpbiBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIFNDTSwKKyAgICAgICAgICAgIG5vdCBhbGwgc3lzdGVtcyBzdXBwb3J0IGl0LgorICAgICAgICAgICAgQ3VycmVudGx5IFN1YnZlcnNpb24sIEJhemFhciBhbmQgdG8gYSBsaW1pdGVkIGV4dGVudCwgR2l0IHN1cHBvcnQKKyAgICAgICAgICAgIHRoZSBhYmlsaXR5IHRvICJhdXRvLXVwZGF0ZSIuCiAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgd29ya3MgdXNpbmcgdGhlIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz5TUkNSRVY8L2xpbms+PC9maWxlbmFtZT4KICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtYXBwZGV2LXNyY3Jldic+VXNpbmcgYW4gRXh0ZXJuYWwgU0NNPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1zcmNyZXYnPlVzaW5nIGFuIEV4dGVybmFsIFNDTTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAKICAgICA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCmluZGV4IGM4ODE2MmIuLjU5NjFkM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCkBAIC0xNiwxMiArMTYsMTIgQEAKIDwvcGFyYT4KIAogPHBhcmE+Ci0gICAgQW55IDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IHVzdWFsbHkKKyAgICBBbnkgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiB1c3VhbGx5CiAgICAgZm91bmQgaW4gYSByZWNpcGUgY2FuIGFsc28gYmUgcGxhY2VkIGluIGEgY2xhc3MgZmlsZS4KICAgICBDbGFzcyBmaWxlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgZXh0ZW5zaW9uIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+CiAgICAgYW5kIGFyZSB1c3VhbGx5IHBsYWNlZCBpbiBhIDxmaWxlbmFtZT5jbGFzc2VzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBiZW5lYXRoCiAgICAgdGhlIDxmaWxlbmFtZT5tZXRhKi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZm91bmQgaW4gdGhlCi0gICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgIENsYXNzIGZpbGVzIGNhbiBhbHNvIGJlIHBvaW50ZWQgdG8gYnkKICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERESVInPjxmaWxlbmFtZT5CVUlMRERJUjwvZmlsZW5hbWU+PC9saW5rPgogICAgIChlLmcuIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPikgaW4gdGhlIHNhbWUgd2F5IGFzCkBAIC0zNiw3ICszNiw3IEBACiAgICAgVGhpcyBjaGFwdGVyIGRpc2N1c3NlcyBvbmx5IHRoZSBtb3N0IHVzZWZ1bCBhbmQgaW1wb3J0YW50IGNsYXNzZXMuCiAgICAgT3RoZXIgY2xhc3NlcyBkbyBleGlzdCB3aXRoaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPgogICAgIGRpcmVjdG9yeSBpbiB0aGUKLSAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGVzIGRpcmVjdGx5CiAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiA8L3BhcmE+CkBAIC05NCw3ICs5NCw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgb24gdGhlIHNvdXJjZSBhcmNoaXZlciwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQogICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQVJDSElWRVJfTU9ERSc+PGZpbGVuYW1lPkFSQ0hJVkVSX01PREU8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgdmFyaWFibGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YXJpYWJsZSBmbGFncyAodmFyZmxhZ3MpCkBAIC0xMjIsNyArMTIyLDcgQEAKICAgICAgICAgVGhlc2UgY2xhc3NlcyBjYW4gYWxzbyB3b3JrIHdpdGggc29mdHdhcmUgdGhhdCBlbXVsYXRlcyBBdXRvdG9vbHMuCiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLWF1dG90b29sZWQtcGFja2FnZSc+QXV0b3Rvb2xlZCBQYWNrYWdlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTMzMyw3ICszMzMsNyBAQAogICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdGhlIGNsYXNzIHdvcmtzLCBzZWUgdGhlCiAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYmx1ZXRvb3RoLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZSBZb2N0bwogICAgICAgICBQcm9qZWN0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC02NDEsNyArNjQxLDcgQEAKICAgICAgICAgRGlzdHJpYnV0aW9uIHBvbGljeSBkaWN0YXRlcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBjbGFzcy4KICAgICAgICAgU2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CiAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KQEAgLTgxNiwxMSArODE2LDExIEBACiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZQogICAgICAgICA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZSBjb21tZW50cyBpbgogICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIDxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+CiAgICAgICAgIGNsYXNzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1zb2Z0d2FyZS1mcm9tLWFuLWV4dGVybmFsLXNvdXJjZSc+QnVpbGRpbmcgU29mdHdhcmUgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2U8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAKICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjdXN0b21pemluZyBpbWFnZXMsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UnPkN1c3RvbWl6aW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgaW1hZ2VzIGFyZSBjcmVhdGVkLCBzZWUgdGhlCiAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBzZWN0aW9uIGVsc2V3aGVyZQogICAgICAgICBpbiB0aGlzIG1hbnVhbC4KQEAgLTEyODYsMTQgKzEyODYsMTUgQEAKICAgICAgICAgPGZpbGVuYW1lPmltYWdlX3R5cGVzPC9maWxlbmFtZT4gbXVzdCBhbHNvIGFwcGVhciBpbgogICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfQ0xBU1NFUzwvZmlsZW5hbWU+LgogICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWltYWdlX3R5cGVzX3Vib290Jz4KLSAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlX3R5cGVzX3Vib290LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlc191Ym9vdDwvZmlsZW5hbWU+IGNsYXNzCi0gICAgICAgIGRlZmluZXMgYWRkaXRpb25hbCBpbWFnZSB0eXBlcyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBVLUJvb3QgYm9vdGxvYWRlci4KKyAgICAgICAgVGhpcyBjbGFzcyBhbHNvIGhhbmRsZXMgY29udmVyc2lvbiBhbmQgY29tcHJlc3Npb24gb2YgaW1hZ2VzLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFRvIGJ1aWxkIGEgVk13YXJlIFZNREsgaW1hZ2UsIHlvdSBuZWVkIHRvIGFkZCAid2ljLnZtZGsiIHRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBUaGlzIHdvdWxkIGFsc28gYmUgc2ltaWxhciBmb3IgVmlydHVhbCBCb3ggVmlydHVhbCBEaXNrIEltYWdlCisgICAgICAgICAgICAoInZkaSIpIGFuZCBRRU1VIENvcHkgT24gV3JpdGUgVmVyc2lvbiAyICgicWNvdzIiKSBpbWFnZXMuCisgICAgICAgIDwvbm90ZT4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEzNzAsMjcgKzEzNzEsNiBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWltYWdlLXZtJz4KLSAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLXZtLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZS12bTwvZmlsZW5hbWU+IGNsYXNzIHN1cHBvcnRzIGJ1aWxkaW5nIFZNCi0gICAgICAgIGltYWdlcy4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1pbWFnZS12bWRrJz4KLSAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLXZtZGsuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgPGZpbGVuYW1lPmltYWdlLXZtZGs8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBidWlsZGluZyBWTXdhcmUKLSAgICAgICAgVk1ESyBpbWFnZXMuCi0gICAgICAgIE5vcm1hbGx5LCB5b3UgZG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LgotICAgICAgICBJbnN0ZWFkLCB5b3UgYWRkICJ2bWRrIiB0bwotICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz4KICAgICA8dGl0bGU+PGZpbGVuYW1lPmluc2FuZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCkBAIC0xNzg4LDI3ICsxNzY4LDYgQEAKICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAtLT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFJlcG9ydHMgd2hlbiBhIHNjcmlwdCBmaWxlIGluc3RhbGxlZCBpbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke2Jhc2VfbGliZGlyfTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke2Jhc2VfYmluZGlyfTwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke2Jhc2Vfc2JpbmRpcn08L2ZpbGVuYW1lPiwgZGVwZW5kcyBvbiBmaWxlcwotICAgICAgICAgICAgICAgIGluc3RhbGxlZCB1bmRlciA8ZmlsZW5hbWU+JHtleGVjX3ByZWZpeH08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGlzIGRlcGVuZGVuY3kgaXMgYSBjb25jZXJuIGlmIHlvdSB3YW50IHRoZSBzeXN0ZW0gdG8gcmVtYWluCi0gICAgICAgICAgICAgICAgYmFzaWNhbGx5IG9wZXJhYmxlIGlmIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4gaXMgbW91bnRlZAotICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkgYW5kIGlzIG5vdCBtb3VudGVkLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyBmb3IgYmluYXJpZXMgaW5zdGFsbGVkIGluCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke2Jhc2VfbGliZGlyfTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2JpbmRpcn08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke2Jhc2Vfc2JpbmRpcn08L2ZpbGVuYW1lPiBhcmUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi9iaW48L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vc2JpbjwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGZvciBhIGJpbmFyeSBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgICAgICAgdW5kZXIgPGZpbGVuYW1lPiR7ZXhlY19wcmVmaXh9PC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3I8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT51c2VsZXNzLXJwYXRoczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgQ2hlY2tzIGZvciBkeW5hbWljIGxpYnJhcnkgbG9hZCBwYXRocyAocnBhdGhzKSBpbiB0aGUgYmluYXJpZXMgdGhhdAogICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgb24gYSBzdGFuZGFyZCBzeXN0ZW0gYXJlIHNlYXJjaGVkIGJ5IHRoZSBsaW5rZXIgKGUuZy4KQEAgLTE5MDAsNyArMTg1OSw3IEBACiAgICAgICAgIHlvdSBidWlsZCB0aGUga2VybmVsIGltYWdlLgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGluaXRyYW1mcywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTIxOTQsNyArMjE1Myw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBNdWx0aWxpYiBmZWF0dXJlLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSc+Q29tYmluaW5nIE11bHRpcGxlIFZlcnNpb25zIG9mIExpYnJhcnkgRmlsZXMgaW50byBPbmUgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMjMyOCw3ICsyMjg3LDcgQEAKICAgICAgICAgVGhlIDxmaWxlbmFtZT5vZWxpbnQ8L2ZpbGVuYW1lPiBjbGFzcyBpcyBhbgogICAgICAgICBvYnNvbGV0ZSBsaW50IGNoZWNraW5nIHRvb2wgdGhhdCBleGlzdHMgaW4KICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMjM5Myw3ICsyMzUyLDcgQEAKICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPlBBQ0tBR0VfQ0xBU1NFUzwvbGluaz48L2ZpbGVuYW1lPgogICAgICAgICB2YXJpYWJsZSBkZWZpbmVkIGluIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICBXaGVuIGRlZmluaW5nIHRoZSB2YXJpYWJsZSwgeW91IGNhbiBzcGVjaWZ5IG9uZSBvciBtb3JlIHBhY2thZ2UgdHlwZXMuCiAgICAgICAgIFNpbmNlIGltYWdlcyBhcmUgZ2VuZXJhdGVkIGZyb20gcGFja2FnZXMsIGEgcGFja2FnaW5nIGNsYXNzIGlzCiAgICAgICAgIG5lZWRlZCB0byBlbmFibGUgaW1hZ2UgZ2VuZXJhdGlvbi4KQEAgLTI0MDcsNyArMjM2Niw3IEBACiAgICAgICAgIG9uIHRoZSB0YXJnZXQgKGkuZS4gcnVudGltZSBpbnN0YWxsYXRpb24gb2YgcGFja2FnZXMpLgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctcnVudGltZS1wYWNrYWdlLW1hbmFnZW1lbnQnPlVzaW5nIFJ1bnRpbWUgUGFja2FnZSBNYW5hZ2VtZW50PC91bGluaz4iCi0gICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMjQxOSw3ICsyMzc4LDcgQEAKICAgICAgICAgYWxsIGRlcGVuZGVuY2llcyBwcmV2aW91c2x5IGJ1aWx0LgogICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIGRpc2NyZXBhbmN5IGlzIGJlY2F1c2UgdGhlIFJQTSBwYWNrYWdlIG1hbmFnZXIKICAgICAgICAgY3JlYXRlcyBhbmQgcHJvY2Vzc2VzIG1vcmUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gdGhhbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiB0aGFuIHRoZQogICAgICAgICBJUEsgcGFja2FnZSBtYW5hZ2VyLgogICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBjb25zaWRlciBzZXR0aW5nCiAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPiB0byAicGFja2FnZV9pcGsiIGlmIHlvdSBhcmUKQEAgLTI1ODcsNyArMjU0Niw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgY2xhc3MsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtY3VzdG9tdGFza3MnPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gUGFja2FnZSBHcm91cHM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMjY3Niw3ICsyNjM1LDggQEAKICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICB0YXNrLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0yNzU2LDggKzI3MTYsOCBAQAogICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgIHRhc2ssIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzCi0gICAgICAgIEd1aWRlLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTI4MzAsOCArMjc5MCw4IEBACiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgIFNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyBXaXRoIHB0ZXN0PC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uCi0gICAgICAgIG9uIHB0ZXN0LgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICBpbmZvcm1hdGlvbiBvbiBwdGVzdC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTI4NDcsNyArMjgwNyw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHB0ZXN0cywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdGVzdGluZy1wYWNrYWdlcy13aXRoLXB0ZXN0Jz5UZXN0aW5nIFBhY2thZ2VzIFdpdGggcHRlc3Q8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMjk4OCw3ICsyOTQ4LDcgQEAKICAgICAgICAgYXMgdGhlIGJ1aWxkIHByb2dyZXNzZXMsIHlvdSBjYW4gZW5hYmxlIDxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT4KICAgICAgICAgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsCiAgICAgICAgIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICBJTkhFUklUICs9ICJybV93b3JrIgogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0zNDU1LDcgKzM0MTUsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+LCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZWxlY3RpbmctYW4taW5pdGlhbGl6YXRpb24tbWFuYWdlcic+U2VsZWN0aW5nIGFuIEluaXRpYWxpemF0aW9uIE1hbmFnZXI8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMzU1NSw3ICszNTE1LDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbmFibGUsIHJ1biwgYW5kIGNyZWF0ZSBuZXcgdGVzdHMsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTM3MzcsNyArMzY5Nyw4IEBACiAgICAgICAgIHByb3ZpZGUgcGF0aG5hbWVzIGZvciBsaW5rcywgZGVmYXVsdCBsaW5rcyBmb3IgdGFyZ2V0cywgYW5kCiAgICAgICAgIHNvIGZvcnRoLgogICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlIHRoaXMgY2xhc3MsIHNlZSB0aGUgY29tbWVudHMgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzJz48ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MnPjxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGZpbGUuCiAgICAgPC9wYXJhPgogCiAgICAgPG5vdGU+CkBAIC0zNzc3LDggKzM3MzgsOSBAQAogICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgcGFja2FnZXMgdGhhdCBjb250YWluIHN5c3RlbSBzZXJ2aWNlcyB0aGF0CiAgICAgICAgIHNob3VsZCBiZSBydW4gdW5kZXIgdGhlaXIgb3duIHVzZXIgb3IgZ3JvdXAsIHlvdSBjYW4gdXNlIHRoZXNlIGNsYXNzZXMKICAgICAgICAgdG8gZW5hYmxlIGNyZWF0aW9uIG9mIHRoZSB1c2VyIG9yIGdyb3VwLgotICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtc2tlbGV0b24vcmVjaXBlcy1za2VsZXRvbi91c2VyYWRkL3VzZXJhZGQtZXhhbXBsZS5iYjwvZmlsZW5hbWU+Ci0gICAgICAgIHJlY2lwZSBpbiB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIFRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1za2VsZXRvbi9yZWNpcGVzLXNrZWxldG9uL3VzZXJhZGQvdXNlcmFkZC1leGFtcGxlLmJiPC9maWxlbmFtZT4KKyAgICAgICAgcmVjaXBlIGluIHRoZSA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICBwcm92aWRlcyBhIHNpbXBsZSBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGFkZCB0aHJlZQogICAgICAgICB1c2VycyBhbmQgZ3JvdXBzIHRvIHR3byBwYWNrYWdlcy4KICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+dXNlcmFkZC1leGFtcGxlLmJiPC9maWxlbmFtZT4gcmVjaXBlIGZvciBtb3JlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxOTdkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbApAQCAtMCwwICsxLDI3NjEgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdyZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPgorPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KKworPHBhcmE+CisgICAgVGhpcyBjaGFwdGVyIHRha2VzIGEgbG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAorICAgIGVudmlyb25tZW50IGFuZCBhbHNvIHByb3ZpZGVzIGEgZGV0YWlsZWQgbG9vayBhdCB3aGF0IGdvZXMgb24gZHVyaW5nCisgICAgZGV2ZWxvcG1lbnQgaW4gdGhhdCBlbnZpcm9ubWVudC4KKyAgICBUaGUgY2hhcHRlciBwcm92aWRlcyBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IGVudmlyb25tZW50IGNvbmNlcHRzIHRoYXQKKyAgICBoZWxwIHlvdSB1bmRlcnN0YW5kIGhvdyB3b3JrIGlzIGFjY29tcGxpc2hlZCBpbiBhbiBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCwKKyAgICB3aGljaCBpcyB2ZXJ5IGRpZmZlcmVudCBhcyBjb21wYXJlZCB0byB3b3JrIGFjY29tcGxpc2hlZCBpbiBhIGNsb3NlZCwKKyAgICBwcm9wcmlldGFyeSBlbnZpcm9ubWVudC4KKzwvcGFyYT4KKworPHBhcmE+CisgICAgU3BlY2lmaWNhbGx5LCB0aGlzIGNoYXB0ZXIgYWRkcmVzc2VzIG9wZW4gc291cmNlIHBoaWxvc29waHksIHdvcmtmbG93cywKKyAgICBHaXQsIHNvdXJjZSByZXBvc2l0b3JpZXMsIGxpY2Vuc2luZywgcmVjaXBlIHN5bnRheCwgYW5kIGRldmVsb3BtZW50CisgICAgc3ludGF4LgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nb3Blbi1zb3VyY2UtcGhpbG9zb3BoeSc+CisgICAgPHRpdGxlPk9wZW4gU291cmNlIFBoaWxvc29waHk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIE9wZW4gc291cmNlIHBoaWxvc29waHkgaXMgY2hhcmFjdGVyaXplZCBieSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorICAgICAgICBkaXJlY3RlZCBieSBwZWVyIHByb2R1Y3Rpb24gYW5kIGNvbGxhYm9yYXRpb24gdGhyb3VnaCBhbiBhY3RpdmUKKyAgICAgICAgY29tbXVuaXR5IG9mIGRldmVsb3BlcnMuCisgICAgICAgIENvbnRyYXN0IHRoaXMgdG8gdGhlIG1vcmUgc3RhbmRhcmQgY2VudHJhbGl6ZWQgZGV2ZWxvcG1lbnQgbW9kZWxzCisgICAgICAgIHVzZWQgYnkgY29tbWVyY2lhbCBzb2Z0d2FyZSBjb21wYW5pZXMgd2hlcmUgYSBmaW5pdGUgc2V0IG9mIGRldmVsb3BlcnMKKyAgICAgICAgcHJvZHVjZXMgYSBwcm9kdWN0IGZvciBzYWxlIHVzaW5nIGEgZGVmaW5lZCBzZXQgb2YgcHJvY2VkdXJlcyB0aGF0CisgICAgICAgIHVsdGltYXRlbHkgcmVzdWx0IGluIGFuIGVuZCBwcm9kdWN0IHdob3NlIGFyY2hpdGVjdHVyZSBhbmQgc291cmNlCisgICAgICAgIG1hdGVyaWFsIGFyZSBjbG9zZWQgdG8gdGhlIHB1YmxpYy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgT3BlbiBzb3VyY2UgcHJvamVjdHMgY29uY2VwdHVhbGx5IGhhdmUgZGlmZmVyaW5nIGNvbmN1cnJlbnQgYWdlbmRhcywKKyAgICAgICAgYXBwcm9hY2hlcywgYW5kIHByb2R1Y3Rpb24uCisgICAgICAgIFRoZXNlIGZhY2V0cyBvZiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjYW4gY29tZSBmcm9tIGFueW9uZSBpbiB0aGUKKyAgICAgICAgcHVibGljIChjb21tdW5pdHkpIHRoYXQgaGFzIGEgc3Rha2UgaW4gdGhlIHNvZnR3YXJlIHByb2plY3QuCisgICAgICAgIFRoZSBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCBjb250YWlucyBuZXcgY29weXJpZ2h0LCBsaWNlbnNpbmcsIGRvbWFpbiwKKyAgICAgICAgYW5kIGNvbnN1bWVyIGlzc3VlcyB0aGF0IGRpZmZlciBmcm9tIHRoZSBtb3JlIHRyYWRpdGlvbmFsIGRldmVsb3BtZW50CisgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICBJbiBhbiBvcGVuIHNvdXJjZSBlbnZpcm9ubWVudCwgdGhlIGVuZCBwcm9kdWN0LCBzb3VyY2UgbWF0ZXJpYWwsCisgICAgICAgIGFuZCBkb2N1bWVudGF0aW9uIGFyZSBhbGwgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgYXQgbm8gY29zdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQSBiZW5jaG1hcmsgZXhhbXBsZSBvZiBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZSBMaW51eCBrZXJuZWwsCisgICAgICAgIHdoaWNoIHdhcyBpbml0aWFsbHkgY29uY2VpdmVkIGFuZCBjcmVhdGVkIGJ5IEZpbm5pc2ggY29tcHV0ZXIgc2NpZW5jZQorICAgICAgICBzdHVkZW50IExpbnVzIFRvcnZhbGRzIGluIDE5OTEuCisgICAgICAgIENvbnZlcnNlbHksIGEgZ29vZCBleGFtcGxlIG9mIGEgbm9uLW9wZW4gc291cmNlIHByb2plY3QgaXMgdGhlCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPldpbmRvd3M8L3RyYWRlbWFyaz4gZmFtaWx5IG9mIG9wZXJhdGluZworICAgICAgICBzeXN0ZW1zIGRldmVsb3BlZCBieQorICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NaWNyb3NvZnQ8L3RyYWRlbWFyaz4gQ29ycG9yYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdpa2lwZWRpYSBoYXMgYSBnb29kIGhpc3RvcmljYWwgZGVzY3JpcHRpb24gb2YgdGhlIE9wZW4gU291cmNlCisgICAgICAgIFBoaWxvc29waHkKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuX3NvdXJjZSc+aGVyZTwvdWxpbms+LgorICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBoZWxwZnVsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUKKyAgICAgICAgTGludXggQ29tbXVuaXR5CisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sZG4ubGludXhmb3VuZGF0aW9uLm9yZy9ib29rL2hvdy1wYXJ0aWNpcGF0ZS1saW51eC1jb21tdW5pdHknPmhlcmU8L3VsaW5rPi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSd3b3JrZmxvd3MnPgorICAgIDx0aXRsZT5Xb3JrZmxvd3M8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyB3b3JrZmxvdyBjb25jZXB0cyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgR2l0LgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgaW5mb3JtYXRpb24gY292ZXJzIGJhc2ljIHByYWN0aWNlcyB0aGF0IGRlc2NyaWJlCisgICAgICAgIHJvbGVzIGFuZCBhY3Rpb25zIGluIGEgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhpcyB0eXBlIG9mIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IG5vdCB3YW50IHRvIHJlYWQgdGhpcyBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGZpbGVzIGFyZSBtYWludGFpbmVkIHVzaW5nIEdpdCBpbiAibWFzdGVyIgorICAgICAgICBicmFuY2hlcyB3aG9zZSBHaXQgaGlzdG9yaWVzIHRyYWNrIGV2ZXJ5IGNoYW5nZSBhbmQgd2hvc2Ugc3RydWN0dXJlcworICAgICAgICBwcm92aWRlcyBicmFuY2hlcyBmb3IgYWxsIGRpdmVyZ2luZyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSBHaXQsIG1hbnkgb3BlbiBzb3VyY2UgcHJvamVjdHMgZG8gc28uCisgICAgPHBhcmE+CisKKyAgICA8L3BhcmE+CisgICAgICAgIEZvciB0aGUgWW9jdG8gUHJvamVjdCwgYSBrZXkgaW5kaXZpZHVhbCBjYWxsZWQgdGhlICJtYWludGFpbmVyIiBpcworICAgICAgICByZXNwb25zaWJsZSBmb3IgdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiBhIGdpdmVuIEdpdCByZXBvc2l0b3J5LgorICAgICAgICBUaGUgIm1hc3RlciIgYnJhbmNoIGlzIHRoZSDigJx1cHN0cmVhbeKAnSByZXBvc2l0b3J5IGZyb20gd2hpY2ggZmluYWwgb3IKKyAgICAgICAgbW9zdCByZWNlbnQgYnVpbGRzIG9mIHRoZSBwcm9qZWN0IG9jY3VyLgorICAgICAgICBUaGUgbWFpbnRhaW5lciBpcyByZXNwb25zaWJsZSBmb3IgYWNjZXB0aW5nIGNoYW5nZXMgZnJvbSBvdGhlcgorICAgICAgICBkZXZlbG9wZXJzIGFuZCBmb3Igb3JnYW5pemluZyB0aGUgdW5kZXJseWluZyBicmFuY2ggc3RydWN0dXJlIHRvCisgICAgICAgIHJlZmxlY3QgcmVsZWFzZSBzdHJhdGVnaWVzIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgPG5vdGU+Rm9yIGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgb3V0IHdobyBpcyByZXNwb25zaWJsZSBmb3IgKG1haW50YWlucykKKyAgICAgICAgICAgIGEgcGFydGljdWxhciBhcmVhIG9mIGNvZGUsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IGFsc28gaGFzIGFuCisgICAgICAgIHVwc3RyZWFtIGNvbnRyaWJ1dGlvbiBHaXQgcmVwb3NpdG9yeSBuYW1lZAorICAgICAgICA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4uCisgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgaW4gdGhpcyByZXBvc2l0b3J5IHVzaW5nIHRoZSB3ZWIgaW50ZXJmYWNlCisgICAgICAgIG9mIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiBvcmdhbml6ZWQKKyAgICAgICAgd2l0aGluIHRoZSAiUG9reSBTdXBwb3J0IiBhcmVhLgorICAgICAgICBUaGVzZSBicmFuY2hlcyB0ZW1wb3JhcmlseSBob2xkIGNoYW5nZXMgdG8gdGhlIHByb2plY3QgdGhhdCBoYXZlIGJlZW4KKyAgICAgICAgc3VibWl0dGVkIG9yIGNvbW1pdHRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB0ZWFtIGFuZCBieQorICAgICAgICBjb21tdW5pdHkgbWVtYmVycyB3aG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdC4KKyAgICAgICAgVGhlIG1haW50YWluZXIgZGV0ZXJtaW5lcyBpZiB0aGUgY2hhbmdlcyBhcmUgcXVhbGlmaWVkIHRvIGJlIG1vdmVkCisgICAgICAgIGZyb20gdGhlICJjb250cmliIiBicmFuY2hlcyBpbnRvIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgdGhlIEdpdAorICAgICAgICByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9wZXJzIChpbmNsdWRpbmcgY29udHJpYnV0aW5nIGNvbW11bml0eSBtZW1iZXJzKSBjcmVhdGUgYW5kCisgICAgICAgIG1haW50YWluIGNsb25lZCByZXBvc2l0b3JpZXMgb2YgdGhlIHVwc3RyZWFtICJtYXN0ZXIiIGJyYW5jaC4KKyAgICAgICAgVGhlIGNsb25lZCByZXBvc2l0b3JpZXMgYXJlIGxvY2FsIHRvIHRoZWlyIGRldmVsb3BtZW50IHBsYXRmb3JtcyBhbmQKKyAgICAgICAgYXJlIHVzZWQgdG8gZGV2ZWxvcCBjaGFuZ2VzLgorICAgICAgICBXaGVuIGEgZGV2ZWxvcGVyIGlzIHNhdGlzZmllZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIG9yIGNoYW5nZSwKKyAgICAgICAgdGhleSAicHVzaCIgdGhlIGNoYW5nZXMgdG8gdGhlIGFwcHJvcHJpYXRlICJjb250cmliIiByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3Iga2VlcGluZyB0aGVpciBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgIHVwLXRvLWRhdGUgd2l0aCAibWFzdGVyIi4KKyAgICAgICAgVGhleSBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3Igc3RyYWlnaHRlbmluZyBvdXQgYW55IGNvbmZsaWN0cyB0aGF0CisgICAgICAgIG1pZ2h0IGFyaXNlIHdpdGhpbiBmaWxlcyB0aGF0IGFyZSBiZWluZyB3b3JrZWQgb24gc2ltdWx0YW5lb3VzbHkgYnkKKyAgICAgICAgbW9yZSB0aGFuIG9uZSBwZXJzb24uCisgICAgICAgIEFsbCB0aGlzIHdvcmsgaXMgZG9uZSBsb2NhbGx5IG9uIHRoZSBkZXZlbG9wZXLigJlzIG1hY2hpbmUgYmVmb3JlCisgICAgICAgIGFueXRoaW5nIGlzIHB1c2hlZCB0byBhICJjb250cmliIiBhcmVhIGFuZCBleGFtaW5lZCBhdCB0aGUgbWFpbnRhaW5lcuKAmXMKKyAgICAgICAgbGV2ZWwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgc29tZXdoYXQgZm9ybWFsIG1ldGhvZCBleGlzdHMgYnkgd2hpY2ggZGV2ZWxvcGVycyBjb21taXQgY2hhbmdlcworICAgICAgICBhbmQgcHVzaCB0aGVtIGludG8gdGhlICJjb250cmliIiBhcmVhIGFuZCBzdWJzZXF1ZW50bHkgcmVxdWVzdCB0aGF0CisgICAgICAgIHRoZSBtYWludGFpbmVyIGluY2x1ZGUgdGhlbSBpbnRvICJtYXN0ZXIiLgorICAgICAgICBUaGlzIHByb2Nlc3MgaXMgY2FsbGVkIOKAnHN1Ym1pdHRpbmcgYSBwYXRjaOKAnSBvciAic3VibWl0dGluZyBhIGNoYW5nZS4iCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzdWJtaXR0aW5nIHBhdGNoZXMgYW5kIGNoYW5nZXMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIHN1bW1hcml6ZSB0aGUgZGV2ZWxvcG1lbnQgd29ya2Zsb3c6ICBhIHNpbmdsZSBwb2ludCBvZiBlbnRyeQorICAgICAgICBleGlzdHMgZm9yIGNoYW5nZXMgaW50byB0aGUgcHJvamVjdOKAmXMgIm1hc3RlciIgYnJhbmNoIG9mIHRoZQorICAgICAgICBHaXQgcmVwb3NpdG9yeSwgd2hpY2ggaXMgY29udHJvbGxlZCBieSB0aGUgcHJvamVjdOKAmXMgbWFpbnRhaW5lci4KKyAgICAgICAgQW5kLCBhIHNldCBvZiBkZXZlbG9wZXJzIGV4aXN0IHdobyBpbmRlcGVuZGVudGx5IGRldmVsb3AsIHRlc3QsIGFuZAorICAgICAgICBzdWJtaXQgY2hhbmdlcyB0byAiY29udHJpYiIgYXJlYXMgZm9yIHRoZSBtYWludGFpbmVyIHRvIGV4YW1pbmUuCisgICAgICAgIFRoZSBtYWludGFpbmVyIHRoZW4gY2hvb3NlcyB3aGljaCBjaGFuZ2VzIGFyZSBnb2luZyB0byBiZWNvbWUgYQorICAgICAgICBwZXJtYW5lbnQgcGFydCBvZiB0aGUgcHJvamVjdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSIzaW4iIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hpbGUgZWFjaCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBpcyB1bmlxdWUsIHRoZXJlIGFyZSBzb21lIGJlc3QKKyAgICAgICAgcHJhY3RpY2VzIG9yIG1ldGhvZHMgdGhhdCBoZWxwIGRldmVsb3BtZW50IHJ1biBzbW9vdGhseS4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyBzb21lIG9mIHRoZXNlIHByYWN0aWNlcy4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgR2l0IHdvcmtmbG93cywgc2VlIHRoZSB3b3JrZmxvdyB0b3BpY3MgaW4KKyAgICAgICAgdGhlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9ib29rLmdpdC1zY20uY29tJz5HaXQgQ29tbXVuaXR5IEJvb2s8L3VsaW5rPi4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTbWFsbCBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSXQgaXMgYmVzdCB0byBrZWVwIHRoZSBjaGFuZ2VzIHlvdSBjb21taXQgc21hbGwgYXMgY29tcGFyZWQgdG8KKyAgICAgICAgICAgICAgICBidW5kbGluZyBtYW55IGRpc3BhcmF0ZSBjaGFuZ2VzIGludG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2Ugbm90IG9ubHkga2VlcHMgdGhpbmdzIG1hbmFnZWFibGUgYnV0IGFsc28gYWxsb3dzCisgICAgICAgICAgICAgICAgdGhlIG1haW50YWluZXIgdG8gbW9yZSBlYXNpbHkgaW5jbHVkZSBvciByZWZ1c2UgY2hhbmdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBhbHNvIGdvb2QgcHJhY3RpY2UgdG8gbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gYQorICAgICAgICAgICAgICAgIHN0YXRlIHRoYXQgYWxsb3dzIHlvdSB0byBzdGlsbCBzdWNjZXNzZnVsbHkgYnVpbGQgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29tbWl0IGhhbGYgb2YgYSBmZWF0dXJlLAorICAgICAgICAgICAgICAgIHRoZW4gYWRkIHRoZSBvdGhlciBoYWxmIGFzIGEgc2VwYXJhdGUsIGxhdGVyIGNvbW1pdC4KKyAgICAgICAgICAgICAgICBFYWNoIGNvbW1pdCBzaG91bGQgdGFrZSB5b3UgZnJvbSBvbmUgYnVpbGRhYmxlIHByb2plY3Qgc3RhdGUKKyAgICAgICAgICAgICAgICB0byBhbm90aGVyIGJ1aWxkYWJsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIEJyYW5jaGVzIExpYmVyYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUsIHVzZSwgYW5kIGRlbGV0ZSBsb2NhbCBicmFuY2hlcyBpbgorICAgICAgICAgICAgICAgIHlvdXIgd29ya2luZyBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5hbWUgdGhlc2UgYnJhbmNoZXMgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVscGZ1bCB0byBnaXZlIHRoZW0gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgZmVhdHVyZSBvciBjaGFuZ2Ugb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBkb25lIHdpdGggYSBmZWF0dXJlIG9yIGNoYW5nZSBhbmQgaGF2ZSBtZXJnZWQgaXQKKyAgICAgICAgICAgICAgICBpbnRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgc2ltcGx5IGRpc2NhcmQgdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIGJyYW5jaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVyZ2UgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4gY29tbWFuZCBhbGxvd3MgeW91IHRvIHRha2UKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmcm9tIG9uZSBicmFuY2ggYW5kIGZvbGQgdGhlbSBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wZXIgbWlnaHQgYmUgd29ya2luZyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgIE1lcmdpbmcgY2hhbmdlcyBhbHNvIGF1dG9tYXRpY2FsbHkgaWRlbnRpZmllcyBhbnkgY29sbGlzaW9ucworICAgICAgICAgICAgICAgIG9yICJjb25mbGljdHMiIHRoYXQgbWlnaHQgaGFwcGVuIGFzIGEgcmVzdWx0IG9mIHRoZSBzYW1lIGxpbmVzCisgICAgICAgICAgICAgICAgb2YgY29kZSBiZWluZyBhbHRlcmVkIGJ5IHR3byBkaWZmZXJlbnQgZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEJyYW5jaGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmVjYXVzZSBicmFuY2hlcyBhcmUgZWFzeSB0byB1c2UsIHlvdSBzaG91bGQgdXNlIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgd2hlcmUgYnJhbmNoZXMgaW5kaWNhdGUgdmFyeWluZyBsZXZlbHMgb2YgY29kZSByZWFkaW5lc3MuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gaGF2ZSBhICJ3b3JrIiBicmFuY2ggdG8gZGV2ZWxvcCBpbiwgYQorICAgICAgICAgICAgICAgICJ0ZXN0IiBicmFuY2ggd2hlcmUgdGhlIGNvZGUgb3IgY2hhbmdlIGlzIHRlc3RlZCwgYSAic3RhZ2UiCisgICAgICAgICAgICAgICAgYnJhbmNoIHdoZXJlIGNoYW5nZXMgYXJlIHJlYWR5IHRvIGJlIGNvbW1pdHRlZCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgIEFzIHlvdXIgcHJvamVjdCBkZXZlbG9wcywgeW91IGNhbiBtZXJnZSBjb2RlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICBicmFuY2hlcyB0byByZWZsZWN0IGV2ZXItaW5jcmVhc2luZyBzdGFibGUgc3RhdGVzIG9mIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgUHVzaCBhbmQgUHVsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBwdXNoLXB1bGwgd29ya2Zsb3cgaXMgYmFzZWQgb24gdGhlIGNvbmNlcHQgb2YgZGV2ZWxvcGVycworICAgICAgICAgICAgICAgICJwdXNoaW5nIiBsb2NhbCBjb21taXRzIHRvIGEgcmVtb3RlIHJlcG9zaXRvcnksIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgdXN1YWxseSBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgd29ya2Zsb3cgaXMgYWxzbyBiYXNlZCBvbiBkZXZlbG9wZXJzICJwdWxsaW5nIiBrbm93bgorICAgICAgICAgICAgICAgIHN0YXRlcyBvZiB0aGUgcHJvamVjdCBkb3duIGludG8gdGhlaXIgbG9jYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIHdvcmtmbG93IGVhc2lseSBhbGxvd3MgeW91IHRvIHB1bGwgY2hhbmdlcyBzdWJtaXR0ZWQgYnkKKyAgICAgICAgICAgICAgICBvdGhlciBkZXZlbG9wZXJzIGZyb20gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW50byB5b3VyCisgICAgICAgICAgICAgICAgd29yayBhcmVhIGVuc3VyaW5nIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgb24gd2hpY2ggdG8gZGV2ZWxvcC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgdHdvIHNjcmlwdHMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHRoYXQgc2hpcCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIHJlbGVhc2UgdG8gZmFjaWxpdGF0ZSB0aGlzIHdvcmtmbG93LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIHNjcmlwdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcHVzaGluZy1hLWNoYW5nZS11cHN0cmVhbSc+VXNpbmcgU2NyaXB0cyB0byBQdXNoIGEgQ2hhbmdlIFVwc3RyZWFtIGFuZCBSZXF1ZXN0IGEgUHVsbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYXRjaCBXb3JrZmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgd29ya2Zsb3cgYWxsb3dzIHlvdSB0byBub3RpZnkgdGhlIG1haW50YWluZXIgdGhyb3VnaCBhbgorICAgICAgICAgICAgICAgIGVtYWlsIHRoYXQgeW91IGhhdmUgYSBjaGFuZ2UgKG9yIHBhdGNoKSB5b3Ugd291bGQgbGlrZQorICAgICAgICAgICAgICAgIGNvbnNpZGVyZWQgZm9yIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgdGhlIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRvIHNlbmQgdGhpcyB0eXBlIG9mIGNoYW5nZSwgeW91IGZvcm1hdCB0aGUgcGF0Y2ggYW5kIHRoZW4KKyAgICAgICAgICAgICAgICBzZW5kIHRoZSBlbWFpbCB1c2luZyB0aGUgR2l0IGNvbW1hbmRzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nZ2l0Jz4KKyAgICA8dGl0bGU+R2l0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBtYWtlcyBleHRlbnNpdmUgdXNlIG9mIEdpdCwgd2hpY2ggaXMgYQorICAgICAgICBmcmVlLCBvcGVuIHNvdXJjZSBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICBHaXQgc3VwcG9ydHMgZGlzdHJpYnV0ZWQgZGV2ZWxvcG1lbnQsIG5vbi1saW5lYXIgZGV2ZWxvcG1lbnQsCisgICAgICAgIGFuZCBjYW4gaGFuZGxlIGxhcmdlIHByb2plY3RzLgorICAgICAgICBJdCBpcyBiZXN0IHRoYXQgeW91IGhhdmUgc29tZSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nCisgICAgICAgIG9mIGhvdyBHaXQgdHJhY2tzIHByb2plY3RzIGFuZCBob3cgdG8gd29yayB3aXRoIEdpdCBpZgorICAgICAgICB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBmb3IgZGV2ZWxvcG1lbnQuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHF1aWNrIG92ZXJ2aWV3IG9mIGhvdyBHaXQgd29ya3MgYW5kCisgICAgICAgIHByb3ZpZGVzIHlvdSB3aXRoIGEgc3VtbWFyeSBvZiBzb21lIGVzc2VudGlhbCBHaXQgY29tbWFuZHMuCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gR2l0LCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGRvd25sb2FkIEdpdCwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWRkCisgICAgICAgICAgICAgICAgICAgIEdpdCB0byB5b3VyIHN5c3RlbSB0aHJvdWdoIHlvdXIgZGlzdHJpYnV0aW9uJ3MgInNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgIHN0b3JlIiAoZS5nLiBmb3IgVWJ1bnR1LCB1c2UgdGhlIFVidW50dSBTb2Z0d2FyZSBmZWF0dXJlKS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBHaXQgZG93bmxvYWQgcGFnZSwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb3dubG9hZCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGVzIGJleW9uZCB0aGUgbGltaXRlZCBmZXcgaW4gdGhpcyBzZWN0aW9uIG9uIGhvdworICAgICAgICAgICAgICAgICAgICB0byB1c2UgR2l0IHdpdGggdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+CisgICAgICAgIDx0aXRsZT5SZXBvc2l0b3JpZXMsIFRhZ3MsIGFuZCBCcmFuY2hlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBtZW50aW9uZWQgYnJpZWZseSBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiBhbmQgYWxzbyBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd3b3JrZmxvd3MnPldvcmtmbG93czwvbGluaz4iIHNlY3Rpb24sCisgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgc291cmNlIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBsb29rIGF0IHRoaXMgd2ViLWludGVyZmFjZSBvZiB0aGUgcmVwb3NpdG9yaWVzLCBlYWNoIGl0ZW0KKyAgICAgICAgICAgIGlzIGEgc2VwYXJhdGUgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdXNlIGJyYW5jaGluZyB0ZWNobmlxdWVzIHRoYXQgdHJhY2sgY29udGVudAorICAgICAgICAgICAgY2hhbmdlIChub3QgZmlsZXMpIHdpdGhpbiBhIHByb2plY3QgKGUuZy4gYSBuZXcgZmVhdHVyZSBvciB1cGRhdGVkCisgICAgICAgICAgICBkb2N1bWVudGF0aW9uKS4KKyAgICAgICAgICAgIENyZWF0aW5nIGEgdHJlZS1saWtlIHN0cnVjdHVyZSBiYXNlZCBvbiBwcm9qZWN0IGRpdmVyZ2VuY2UgYWxsb3dzCisgICAgICAgICAgICBmb3IgZXhjZWxsZW50IGhpc3RvcmljYWwgaW5mb3JtYXRpb24gb3ZlciB0aGUgbGlmZSBvZiBhIHByb2plY3QuCisgICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGFsc28gYWxsb3dzIGZvciBhbiBlbnZpcm9ubWVudCBmcm9tIHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgIGRvIGxvdHMgb2YgbG9jYWwgZXhwZXJpbWVudGF0aW9uIG9uIHByb2plY3RzIGFzIHlvdSBkZXZlbG9wCisgICAgICAgICAgICBjaGFuZ2VzIG9yIG5ldyBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBHaXQgcmVwb3NpdG9yeSByZXByZXNlbnRzIGFsbCBkZXZlbG9wbWVudCBlZmZvcnRzIGZvciBhIGdpdmVuCisgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBHaXQgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICBhbGwgY2hhbmdlcyBhbmQgZGV2ZWxvcG1lbnRzIGZvciBQb2t5IG92ZXIgdGhlIGNvdXJzZSBvZiBpdHMKKyAgICAgICAgICAgIGVudGlyZSBsaWZlLgorICAgICAgICAgICAgVGhhdCBtZWFucyB0aGF0IGFsbCBjaGFuZ2VzIHRoYXQgbWFrZSB1cCBhbGwgcmVsZWFzZXMgYXJlIGNhcHR1cmVkLgorICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgbWFpbnRhaW5zIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYW55IHJlcG9zaXRvcnkgYnkgImNsb25pbmciIGl0CisgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgIFdoZW4geW91IGNsb25lIGEgR2l0IHJlcG9zaXRvcnksIHlvdSBlbmQgdXAgd2l0aCBhbiBpZGVudGljYWwKKyAgICAgICAgICAgIGNvcHkgb2YgdGhlIHJlcG9zaXRvcnkgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgbG9jYWwgY29weSBvZiBhIHJlcG9zaXRvcnksIHlvdSBjYW4gdGFrZSBzdGVwcyB0bworICAgICAgICAgICAgZGV2ZWxvcCBsb2NhbGx5LgorICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byBjbG9uZSBHaXQgcmVwb3NpdG9yaWVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEdpdCB0cmFja3MgY29udGVudCBjaGFuZ2UgYW5kCisgICAgICAgICAgICBub3QgZmlsZXMuCisgICAgICAgICAgICBHaXQgdXNlcyAiYnJhbmNoZXMiIHRvIG9yZ2FuaXplIGRpZmZlcmVudCBkZXZlbG9wbWVudCBlZmZvcnRzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgaGFzCisgICAgICAgICAgICBzZXZlcmFsIGJyYW5jaGVzIHRoYXQgaW5jbHVkZSB0aGUgY3VycmVudCAiJkRJU1RST19OQU1FX05PX0NBUDsiCisgICAgICAgICAgICBicmFuY2gsIHRoZSAibWFzdGVyIiBicmFuY2gsIGFuZCBtYW55IGJyYW5jaGVzIGZvciBwYXN0CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvaGVhZHMnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiQnJhbmNoIiBoZWFkaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJyYW5jaGVzIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhcmVhIG9mIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCByZXByZXNlbnRzIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50CisgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIEFsbCBvdGhlciBicmFuY2hlcyByZXByZXNlbnQgb2Zmc2hvb3RzIG9mIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSwgdGhlIGNvcHkgaGFzCisgICAgICAgICAgICB0aGUgc2FtZSBzZXQgb2YgYnJhbmNoZXMgYXMgdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgVGhpcyBtZWFucyB5b3UgY2FuIHVzZSBHaXQgdG8gY3JlYXRlIGEgbG9jYWwgd29ya2luZyBhcmVhCisgICAgICAgICAgICAoYWxzbyBjYWxsZWQgYSBicmFuY2gpIHRoYXQgdHJhY2tzIGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoCisgICAgICAgICAgICBmcm9tIHRoZSB1cHN0cmVhbSBzb3VyY2UgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBpbiBvdGhlciB3b3JkcywgeW91IGNhbiBkZWZpbmUgeW91ciBsb2NhbCBHaXQgZW52aXJvbm1lbnQgdG8KKyAgICAgICAgICAgIHdvcmsgb24gYW55IGRldmVsb3BtZW50IGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRvIGhlbHAgaWxsdXN0cmF0ZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIEdpdCBjb21tYW5kczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgYWZ0ZXIgbW92aW5nIHRvIHRoZSBob21lIGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGEKKyAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBHaXQgY2hlY2tzIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICBBZnRlciBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIG5ldyBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCisgICAgICAgICAgICBhbmQgY2hlY2tzIG91dCBhIGxvY2FsIGJyYW5jaCBuYW1lZCAiJkRJU1RST19OQU1FX05PX0NBUDsiLCB3aGljaAorICAgICAgICAgICAgdHJhY2tzIHRoZSB1cHN0cmVhbSAib3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2guCisgICAgICAgICAgICBDaGFuZ2VzIHlvdSBtYWtlIHdoaWxlIGluIHRoaXMgYnJhbmNoIHdvdWxkIHVsdGltYXRlbHkgYWZmZWN0CisgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZCBjaGVja291dCBhCisgICAgICAgICAgICBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIGJyYW5jaCBuYW1lLAorICAgICAgICAgICAgeW91ciBsb2NhbCBlbnZpcm9ubWVudCBtYXRjaGVzIHRoZSAidGlwIiBvZiB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSB5b3UgY3JlYXRlZCB5b3VyIGxvY2FsIGJyYW5jaCwKKyAgICAgICAgICAgIHdoaWNoIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBmaWxlcyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBjcmVhdGluZyBhbmQgY2hlY2tpbmcgb3V0IGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uCisgICAgICAgICAgICB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggbmFtZSBpcyBub3QgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgIGNsb25pbmcgYW5kIGNoZWNraW5nIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGlmIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgS2VlcCByZWFkaW5nIHRvIHNlZSBob3cgeW91IGNyZWF0ZSBhIGxvY2FsIHNuYXBzaG90IG9mIGEgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgR2l0IHVzZXMgInRhZ3MiIHRvIG1hcmsgc3BlY2lmaWMgY2hhbmdlcyBpbiBhIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBUeXBpY2FsbHksIGEgdGFnIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpYWwgcG9pbnQgc3VjaCBhcyB0aGUgZmluYWwKKyAgICAgICAgICAgIGNoYW5nZSBiZWZvcmUgYSBwcm9qZWN0IGlzIHJlbGVhc2VkLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHRhZ3MgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvdGFncyc+Wy4uLl08L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICBsaW5rIGJlbmVhdGggdGhlICJUYWciIGhlYWRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUga2V5IHRhZ3MgZm9yIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFyZQorICAgICAgICAgICAgPGZpbGVuYW1lPmpldGhyby0xNC4wLjM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tb3J0eS0xNi4wLjE8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5weXJvLTE3LjAuMDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGVzZSB0YWdzIHJlcHJlc2VudCBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGFsc28KKyAgICAgICAgICAgIGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgdGFncyBpbiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFNpbWlsYXIgdG8gYnJhbmNoZXMsIHlvdSBjYW4gY3JlYXRlIGFuZCBjaGVja291dCBhIGxvY2FsIHdvcmtpbmcKKyAgICAgICAgICAgIEdpdCBicmFuY2ggYmFzZWQgb24gYSB0YWcgbmFtZS4KKyAgICAgICAgICAgIFdoZW4geW91IGRvIHRoaXMsIHlvdSBnZXQgYSBzbmFwc2hvdCBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgdGhhdAorICAgICAgICAgICAgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBmaWxlcyB3aGVuIHRoZSBjaGFuZ2Ugd2FzIG1hZGUgYXNzb2NpYXRlZAorICAgICAgICAgICAgd2l0aCB0aGF0IHRhZy4KKyAgICAgICAgICAgIFRoZSBtb3N0IGNvbW1vbiB1c2UgaXMgdG8gY2hlY2tvdXQgYSB3b3JraW5nIGJyYW5jaCB0aGF0IG1hdGNoZXMKKyAgICAgICAgICAgIGEgc3BlY2lmaWMgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQorICAgICAkIGNkIHBva3kKKyAgICAgJCBnaXQgZmV0Y2ggLS1hbGwgLS10YWdzIC0tcHJ1bmUKKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy9weXJvLTE3LjAuMCAtYiBteS1weXJvLTE3LjAuMAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB5b3VyCisgICAgICAgICAgICBsb2NhbCBZb2N0byBQcm9qZWN0IHJlcG9zaXRvcnkgaXMgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEFmdGVyIG1vdmluZyB0byB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmZXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQgbWFrZXMgYWxsIHRoZSB1cHN0cmVhbQorICAgICAgICAgICAgdGFncyBhdmFpbGFibGUgbG9jYWxseSBpbiB5b3VyIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBGaW5hbGx5LCB0aGUgPGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIGNyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSBicmFuY2ggbmFtZWQgIm15LXB5cm8tMTcuMC4wIiB0aGF0IGlzCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgY2hhbmdlIHVwc3RyZWFtIGluIHRoZSByZXBvc2l0b3J5CisgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlICJweXJvLTE3LjAuMCIgdGFnLgorICAgICAgICAgICAgVGhlIGZpbGVzIGluIHlvdXIgcmVwb3NpdG9yeSBub3cgZXhhY3RseSBtYXRjaCB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhcyBpdCBpcyB0YWdnZWQgaW4gdGhlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZAorICAgICAgICAgICAgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIHRhZywgeW91ciBlbnZpcm9ubWVudAorICAgICAgICAgICAgbWF0Y2hlcyBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUgYW5kIG5vdCB0aGUgZW50aXJlIGRldmVsb3BtZW50CisgICAgICAgICAgICBicmFuY2ggKGkuZS4gdGhlICJ0aXAiIG9mIHRoZSBicmFuY2gpLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Jhc2ljLWNvbW1hbmRzJz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIENvbW1hbmRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCBoYXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBjb21tYW5kcyB0aGF0IGxldHMgeW91IG1hbmFnZSBjaGFuZ2VzCisgICAgICAgICAgICBhbmQgcGVyZm9ybSBjb2xsYWJvcmF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgorICAgICAgICAgICAgQ29udmVuaWVudGx5IHRob3VnaCwgeW91IGNhbiBtYW5hZ2Ugd2l0aCBhIHNtYWxsIHNldCBvZiBiYXNpYworICAgICAgICAgICAgb3BlcmF0aW9ucyBhbmQgd29ya2Zsb3dzIG9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljCisgICAgICAgICAgICBwaGlsb3NvcGh5IGJlaGluZCBHaXQuCisgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYW4gZXhwZXJ0IGluIEdpdCB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICAgICAgQSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIGluc3RydWN0aW9uIG9uIGEgbWluaW1hbCBzZXQgb2YgR2l0CisgICAgICAgICAgICBjb21tYW5kcyBpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBrbm93IG11Y2ggYWJvdXQgR2l0LCB5b3Ugc2hvdWxkIGVkdWNhdGUKKyAgICAgICAgICAgIHlvdXJzZWxmIGJ5IHZpc2l0aW5nIHRoZSBsaW5rcyBwcmV2aW91c2x5IG1lbnRpb25lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG9mIEdpdCBjb21tYW5kcyBicmllZmx5IGRlc2NyaWJlcyBzb21lIGJhc2ljCisgICAgICAgICAgICBHaXQgb3BlcmF0aW9ucyBhcyBhIHdheSB0byBnZXQgc3RhcnRlZC4KKyAgICAgICAgICAgIEFzIHdpdGggYW55IHNldCBvZiBjb21tYW5kcywgdGhpcyBsaXN0IChpbiBtb3N0IGNhc2VzKSBzaW1wbHkgc2hvd3MKKyAgICAgICAgICAgIHRoZSBiYXNlIGNvbW1hbmQgYW5kIG9taXRzIHRoZSBtYW55IGFyZ3VtZW50cyB0aGV5IHN1cHBvcnQuCisgICAgICAgICAgICBTZWUgdGhlIEdpdCBkb2N1bWVudGF0aW9uIGZvciBjb21wbGV0ZSBkZXNjcmlwdGlvbnMgYW5kIHN0cmF0ZWdpZXMKKyAgICAgICAgICAgIG9uIGhvdyB0byB1c2UgdGhlc2UgY29tbWFuZHM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgaW5pdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVzIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBHaXQgY29tbWFuZHMgdW5sZXNzIHlvdSBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5naXQ8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2dpdC1jb21tYW5kcy1jbG9uZSc+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhIGxvY2FsIGNsb25lIG9mIGEgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBvbgorICAgICAgICAgICAgICAgICAgICBlcXVhbCBmb290aW5nIHdpdGggYSBmZWxsb3cgZGV2ZWxvcGVy4oCZcyBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBvciBhbiB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIExvY2FsbHkgc3RhZ2VzIHVwZGF0ZWQgZmlsZSBjb250ZW50cyB0byB0aGUgaW5kZXggdGhhdAorICAgICAgICAgICAgICAgICAgICBHaXQgdXNlcyB0byB0cmFjayBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzdGFnZSBhbGwgZmlsZXMgdGhhdCBoYXZlIGNoYW5nZWQgYmVmb3JlIHlvdQorICAgICAgICAgICAgICAgICAgICBjYW4gY29tbWl0IHRoZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhIGxvY2FsICJjb21taXQiIHRoYXQgZG9jdW1lbnRzIHRoZSBjaGFuZ2VzIHlvdQorICAgICAgICAgICAgICAgICAgICBtYWRlLgorICAgICAgICAgICAgICAgICAgICBPbmx5IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gc3RhZ2VkIGNhbiBiZSBjb21taXR0ZWQuCisgICAgICAgICAgICAgICAgICAgIENvbW1pdHMgYXJlIHVzZWQgZm9yIGhpc3RvcmljYWwgcHVycG9zZXMsIGZvciBkZXRlcm1pbmluZworICAgICAgICAgICAgICAgICAgICBpZiBhIG1haW50YWluZXIgb2YgYSBwcm9qZWN0IHdpbGwgYWxsb3cgdGhlIGNoYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGZvciB1bHRpbWF0ZWx5IHB1c2hpbmcgdGhlIGNoYW5nZSBmcm9tIHlvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgaW50byB0aGUgcHJvamVjdOKAmXMgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBzdGF0dXM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIGFueSBtb2RpZmllZCBmaWxlcyB0aGF0IHBvc3NpYmx5IG5lZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2VkIGFuZCBnaXZlcyB5b3UgYSBzdGF0dXMgb2Ygd2hlcmUgeW91IHN0YW5kIHJlZ2FyZGluZworICAgICAgICAgICAgICAgICAgICBsb2NhbCBjb21taXRzIGFzIGNvbXBhcmVkIHRvIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyB5b3VyIHdvcmtpbmcgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgYW5hbG9nb3VzIHRvICJjZCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dCDigJNiPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPndvcmtpbmctYnJhbmNoPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIHdvcmtpbmcgYnJhbmNoIG9uIHlvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSB0aGF0IHlvdSBjYW4gdXNlIHRvIGlzb2xhdGUgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2UgbG9jYWwgYnJhbmNoZXMgd2hlbiBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmVhdHVyZXMgb3IgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgaXNvbGF0ZWQgYnJhbmNoZXMgZmFjaWxpdGF0ZXMgZWFzeSByZW1vdmFsIG9mCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgaWYgdGhleSBkbyBub3Qgd29yayBvdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyB0aGUgZXhpc3RpbmcgbG9jYWwgYnJhbmNoZXMgYXNzb2NpYXRlZCB3aXRoIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJyYW5jaCB0aGF0IHlvdSBoYXZlIGN1cnJlbnRseSBjaGVja2VkIG91dCBpcyBub3RlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGFzdGVyaXNrIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2ggLUQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZWxldGVzIGFuIGV4aXN0aW5nIGxvY2FsIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgaW4gYSBsb2NhbCBicmFuY2ggb3RoZXIgdGhhbiB0aGUgb25lIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgZGVsZXRpbmcgaW4gb3JkZXIgdG8gZGVsZXRlCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1bGw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gZnJvbSBhbiB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBhbmQgcGxhY2VzIGl0IGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhpcyBjb21tYW5kIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHN5bmNocm9uaXplZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSByZXBvc2l0b3J5IGZyb20gd2hpY2ggeW91IGFyZSBiYXNpbmcgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAoLmUuZy4gdGhlICJtYXN0ZXIiIGJyYW5jaCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgcHVzaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNlbmRzIGFsbCB5b3VyIGNvbW1pdHRlZCBsb2NhbCBjaGFuZ2VzIHRvIHRoZSB1cHN0cmVhbSBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0aGF0IHlvdXIgbG9jYWwgcmVwb3NpdG9yeSBpcyB0cmFja2luZworICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgb2YgdGhlIHByb2plY3QgZHJhd3MgZnJvbSB0aGVzZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gbWVyZ2UgY2hhbmdlcyAoY29tbWl0cykgaW50byB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIG9mIHByb2plY3QncyB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29tYmluZXMgb3IgYWRkcyBjaGFuZ2VzIGZyb20gb25lCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJyYW5jaCBvZiB5b3VyIHJlcG9zaXRvcnkgd2l0aCBhbm90aGVyIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnksIHRoZSBkZWZhdWx0IGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpcyBuYW1lZCAibWFzdGVyIi4KKyAgICAgICAgICAgICAgICAgICAgQSB0eXBpY2FsIHdvcmtmbG93IGlzIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBicmFuY2ggdGhhdCBpcworICAgICAgICAgICAgICAgICAgICBiYXNlZCBvZmYgIm1hc3RlciIgdGhhdCB5b3Ugd291bGQgdXNlIGZvciBpc29sYXRlZCB3b3JrLgorICAgICAgICAgICAgICAgICAgICBZb3Ugd291bGQgbWFrZSB5b3VyIGNoYW5nZXMgaW4gdGhhdCBpc29sYXRlZCBicmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlIGFuZCBjb21taXQgdGhlbSBsb2NhbGx5LCBzd2l0Y2ggdG8gdGhlICJtYXN0ZXIiCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgYW5kIHRoZW4gdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBhcHBseSB0aGUgY2hhbmdlcyBmcm9tIHlvdXIgaXNvbGF0ZWQgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGN1cnJlbnRseSBjaGVja2VkIG91dCBicmFuY2ggKGUuZy4gIm1hc3RlciIpLgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgbWVyZ2UgaXMgY29tcGxldGUgYW5kIGlmIHlvdSBhcmUgZG9uZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgaW4gdGhhdCBpc29sYXRlZCBicmFuY2gsIHlvdSBjYW4gc2FmZWx5IGRlbGV0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgaXNvbGF0ZWQgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNoZXJyeS1waWNrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGFuZCBhcHBseSBzcGVjaWZpYyBjb21taXRzIGZyb20gb25lIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdGltZXMgd2hlbiB5b3UgbWlnaHQgbm90IGJlIGFibGUgdG8gbWVyZ2UKKyAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBjaGFuZ2VzIGluIG9uZSBicmFuY2ggd2l0aAorICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGJ1dCBuZWVkIHRvIHBpY2sgb3V0IGNlcnRhaW4gb25lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdGs8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyBhIEdVSSB2aWV3IG9mIHRoZSBicmFuY2hlcyBhbmQgY2hhbmdlcyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgYSBnb29kIHdheSB0byBncmFwaGljYWxseSBzZWUgd2hlcmUgdGhpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhdmUgZGl2ZXJnZWQgaW4geW91ciBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIDxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gdG8gdXNlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBsb2c8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIGEgaGlzdG9yeSBvZiB5b3VyIGNvbW1pdHMgdG8gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVwb3J0IGxpc3RzIGFsbCBjb21taXRzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBwdXNoZWQgdGhlbSB1cHN0cmVhbSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgZGlmZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIGxpbmUtYnktbGluZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyBmaWxlIGFuZCB0aGUgc2FtZSBmaWxlIGFzIHVuZGVyc3Rvb2QgYnkgR2l0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgdXNlZnVsIHRvIHNlZSB3aGF0IHlvdSBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gYW55IGdpdmVuIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+CisgICAgPHRpdGxlPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBtYWludGFpbnMgY29tcGxldGUgc291cmNlIHJlcG9zaXRvcmllcyBmb3IgYWxsCisgICAgICAgIFlvY3RvIFByb2plY3QgZmlsZXMgYXQKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPjwvdWxpbms+LgorICAgICAgICBUaGlzIHdlYi1iYXNlZCBzb3VyY2UgY29kZSBicm93c2VyIGlzIG9yZ2FuaXplZCBpbnRvIGNhdGVnb3JpZXMgYnkKKyAgICAgICAgZnVuY3Rpb24gc3VjaCBhcyBJREUgUGx1Z2lucywgTWF0Y2hib3gsIFBva3ksIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kCisgICAgICAgIHNvIGZvcnRoLgorICAgICAgICBGcm9tIHRoZSBpbnRlcmZhY2UsIHlvdSBjYW4gY2xpY2sgb24gYW55IHBhcnRpY3VsYXIgaXRlbSBpbiB0aGUgIk5hbWUiCisgICAgICAgIGNvbHVtbiBhbmQgc2VlIHRoZSBVUkwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IHlvdSBuZWVkIHRvIGNsb25lCisgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgZm9yIHRoYXQgcGFydGljdWxhciBpdGVtLgorICAgICAgICBIYXZpbmcgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sIHdoaWNoIGlzCisgICAgICAgIHVzdWFsbHkgbmFtZWQgInBva3kiLCBhbGxvd3MKKyAgICAgICAgeW91IHRvIG1ha2UgY2hhbmdlcywgY29udHJpYnV0ZSB0byB0aGUgaGlzdG9yeSwgYW5kIHVsdGltYXRlbHkgZW5oYW5jZQorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCdzIHRvb2xzLCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzLCBhbmQgc28gZm9ydGguCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbnkgc3VwcG9ydGVkIHJlbGVhc2Ugb2YgWW9jdG8gUHJvamVjdCwgeW91IGNhbiBhbHNvIGdvIHRvIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQKKyAgICAgICAgc2VsZWN0IHRoZSAiRG93bmxvYWRzIiB0YWIgYW5kIGdldCBhIHJlbGVhc2VkIHRhcmJhbGwgb2YgdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBvciBhbnkgc3VwcG9ydGVkIEJTUCB0YXJiYWxscy4KKyAgICAgICAgVW5wYWNraW5nIHRoZXNlIHRhcmJhbGxzIGdpdmVzIHlvdSBhIHNuYXBzaG90IG9mIHRoZSByZWxlYXNlZAorICAgICAgICBmaWxlcy4KKyAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZmlsZXMgZm9yIHN1cHBvcnRlZCBCU1BzCisgICAgICAgICAgICAgICAgICAgIChlLmcuLCA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KSBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGFsd2F5cyB3b3JrIGluIG1hdGNoaW5nIGJyYW5jaGVzIGZvciBib3RoCisgICAgICAgICAgICAgICAgICAgIHRoZSBzZWxlY3RlZCBCU1AgcmVwb3NpdG9yeSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBjaGVja2VkIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gYW5kIHlvdSBhcmUgZ29pbmcgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4sIGJlIHN1cmUgdG8gY2hlY2tvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICJtYXN0ZXIiIGJyYW5jaCBvZiA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIHN1bW1hcnksIGhlcmUgaXMgd2hlcmUgeW91IGNhbiBnZXQgdGhlIHByb2plY3QgZmlsZXMgbmVlZGVkIGZvcgorICAgICAgICBkZXZlbG9wbWVudDoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nc291cmNlLXJlcG9zaXRvcmllcyc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpJz5Tb3VyY2UgUmVwb3NpdG9yaWVzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY29udGFpbnMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBQb2t5IFN1cHBvcnQsCisgICAgICAgICAgICAgICAgVG9vbHMsIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kIFlvY3RvIE1ldGFkYXRhIExheWVycy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBsb2NhbCBjb3BpZXMgb2YgR2l0IHJlcG9zaXRvcmllcyBmb3IgZWFjaCBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGFyZWFzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiAvPgorICAgICAgICAgICAgICAgIEZvciBzdGVwcyBvbiBob3cgdG8gdmlldyBhbmQgYWNjZXNzIHRoZXNlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3Npbmctc291cmNlLXJlcG9zaXRvcmllcyc+QWNjZXNzaW5nIFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBTZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48YW5jaG9yIGlkPSdpbmRleC1kb3dubG9hZHMnIC8+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIGluZGV4IG9mIHJlbGVhc2VzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICBZb2N0byBQbHVnLWluLCBtaXNjZWxsYW5lb3VzIHN1cHBvcnQsIFBva3ksIFBzZXVkbywgaW5zdGFsbGVycworICAgICAgICAgICAgICAgIGZvciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBhbmQgYWxsIHJlbGVhc2VkIHZlcnNpb25zIG9mCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBpbiB0aGUgZm9ybSBvZiBpbWFnZXMgb3IgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGV4dHJhY3RpbmcgdGhlc2UgZmlsZXMgZG9lcyBub3QgcHJvZHVjZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgYnV0IHJhdGhlciBhIHNuYXBzaG90IG9mIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3IgaW1hZ2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIzLjVpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdkb3dubG9hZHMtcGFnZSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJEb3dubG9hZHMiIHBhZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0id3JpdGVybm90ZXMiPlRoaXMgc2VjdGlvbiB3aWxsIGNoYW5nZSBkdWUgdG8KKyAgICAgICAgICAgICAgICByZXdvcmtpbmcgb2YgdGhlIFlQIFdlYnNpdGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZSBpbmNsdWRlcyBhICJEb3dubG9hZHMiIHRhYgorICAgICAgICAgICAgICAgIHRoYXQgYWxsb3dzIHlvdSB0byBkb3dubG9hZCBhbnkgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIHJlbGVhc2UgYW5kIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBpbiB0YXJiYWxsIGZvcm0uCisgICAgICAgICAgICAgICAgVGhlIHRhcmJhbGxzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+IGFyZWEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHVzZSB0aGUgIkRvd25sb2FkcyIgcGFnZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy10aGUtZG93bmxvYWRzLXBhZ2UnPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdsaWNlbnNpbmcnPgorICAgIDx0aXRsZT5MaWNlbnNpbmc8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlY2F1c2Ugb3BlbiBzb3VyY2UgcHJvamVjdHMgYXJlIG9wZW4gdG8gdGhlIHB1YmxpYywgdGhleSBoYXZlCisgICAgICAgIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KKyAgICAgICAgTGljZW5zZSBldm9sdXRpb24gZm9yIGJvdGggT3BlbiBTb3VyY2UgYW5kIEZyZWUgU29mdHdhcmUgaGFzIGFuCisgICAgICAgIGludGVyZXN0aW5nIGhpc3RvcnkuCisgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGlzIGhpc3RvcnksIHlvdSBjYW4gZmluZCBiYXNpYyBpbmZvcm1hdGlvbgorICAgICAgICBoZXJlOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbi1zb3VyY2VfbGljZW5zZSc+T3BlbiBzb3VyY2UgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmVfbGljZW5zZSc+RnJlZSBzb2Z0d2FyZSBsaWNlbnNlIGhpc3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gZ2VuZXJhbCwgdGhlIFlvY3RvIFByb2plY3QgaXMgYnJvYWRseSBsaWNlbnNlZCB1bmRlciB0aGUKKyAgICAgICAgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSAoTUlUKSBMaWNlbnNlLgorICAgICAgICBNSVQgbGljZW5zaW5nIHBlcm1pdHMgdGhlIHJldXNlIG9mIHNvZnR3YXJlIHdpdGhpbiBwcm9wcmlldGFyeQorICAgICAgICBzb2Z0d2FyZSBhcyBsb25nIGFzIHRoZSBsaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIHdpdGggdGhhdCBzb2Z0d2FyZS4KKyAgICAgICAgTUlUIGlzIGFsc28gY29tcGF0aWJsZSB3aXRoIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKS4KKyAgICAgICAgUGF0Y2hlcyB0byB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgdGhlIHVwc3RyZWFtIGxpY2Vuc2luZyBzY2hlbWUuCisgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgTUlUIGxpY2Vuc2UKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBHTlUgR1BMCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjAnPmhlcmU8L3VsaW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB5b3UgYnVpbGQgYW4gaW1hZ2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QsIHRoZSBidWlsZCBwcm9jZXNzCisgICAgICAgIHVzZXMgYSBrbm93biBsaXN0IG9mIGxpY2Vuc2VzIHRvIGVuc3VyZSBjb21wbGlhbmNlLgorICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBsaXN0IGluIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiBhdAorICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgbGlzdCBvZiBhbGwgbGljZW5zZXMgZm91bmQgYW5kIHVzZWQKKyAgICAgICAgZHVyaW5nIHRoYXQgYnVpbGQgYXJlIGtlcHQgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICBhdCA8ZmlsZW5hbWU+dG1wL2RlcGxveS9saWNlbnNlczwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiBhIG1vZHVsZSByZXF1aXJlcyBhIGxpY2Vuc2UgdGhhdCBpcyBub3QgaW4gdGhlIGJhc2UgbGlzdCwgdGhlCisgICAgICAgIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgd2FybmluZyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICBUaGVzZSB0b29scyBtYWtlIGl0IGVhc2llciBmb3IgYSBkZXZlbG9wZXIgdG8gYmUgY2VydGFpbiBvZiB0aGUKKyAgICAgICAgbGljZW5zZXMgd2l0aCB3aGljaCB0aGVpciBzaGlwcGVkIHByb2R1Y3RzIG11c3QgY29tcGx5LgorICAgICAgICBIb3dldmVyLCBldmVuIHdpdGggdGhlc2UgdG9vbHMgaXQgaXMgc3RpbGwgdXAgdG8gdGhlIGRldmVsb3BlciB0bworICAgICAgICByZXNvbHZlIHBvdGVudGlhbCBsaWNlbnNpbmcgaXNzdWVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgYmFzZSBsaXN0IG9mIGxpY2Vuc2VzIHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgYSBjb21iaW5hdGlvbgorICAgICAgICBvZiB0aGUgU29mdHdhcmUgUGFja2FnZSBEYXRhIEV4Y2hhbmdlIChTUERYKSBsaXN0IGFuZCB0aGUgT3BlbgorICAgICAgICBTb3VyY2UgSW5pdGlhdGl2ZSAoT1NJKSBwcm9qZWN0cy4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NwZHgub3JnJz5TUERYIEdyb3VwPC91bGluaz4gaXMgYSB3b3JraW5nIGdyb3VwIG9mCisgICAgICAgIHRoZSBMaW51eCBGb3VuZGF0aW9uIHRoYXQgbWFpbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBmb3IgYSBzdGFuZGFyZAorICAgICAgICBmb3JtYXQgZm9yIGNvbW11bmljYXRpbmcgdGhlIGNvbXBvbmVudHMsIGxpY2Vuc2VzLCBhbmQgY29weXJpZ2h0cworICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBzb2Z0d2FyZSBwYWNrYWdlLgorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vb3BlbnNvdXJjZS5vcmcnPk9TSTwvdWxpbms+IGlzIGEgY29ycG9yYXRpb24KKyAgICAgICAgZGVkaWNhdGVkIHRvIHRoZSBPcGVuIFNvdXJjZSBEZWZpbml0aW9uIGFuZCB0aGUgZWZmb3J0IGZvciByZXZpZXdpbmcKKyAgICAgICAgYW5kIGFwcHJvdmluZyBsaWNlbnNlcyB0aGF0IGNvbmZvcm0gdG8gdGhlIE9wZW4gU291cmNlIERlZmluaXRpb24KKyAgICAgICAgKE9TRCkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlIGNvbWJpbmVkIFNQRFggYW5kIE9TSSBsaWNlbnNlcyB0aGF0IHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IHVzZXMgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB5b3VyCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBjYW4gaGVscCB5b3UgbWFpbnRhaW4gY29tcGxpYW5jZSB3aXRoIHZhcmlvdXMKKyAgICAgICAgb3BlbiBzb3VyY2UgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcHJvZHVjdCBjcmVhdGVkIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWNpcGUtc3ludGF4Jz4KKyAgICA8dGl0bGU+UmVjaXBlIFN5bnRheDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVW5kZXJzdGFuZGluZyByZWNpcGUgZmlsZSBzeW50YXggaXMgaW1wb3J0YW50IGZvcgorICAgICAgICB3cml0aW5nIHJlY2lwZXMuCisgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBvdmVydmlld3MgdGhlIGJhc2ljIGl0ZW1zIHRoYXQgbWFrZSB1cCBhCisgICAgICAgIEJpdEJha2UgcmVjaXBlIGZpbGUuCisgICAgICAgIEZvciBtb3JlIGNvbXBsZXRlIEJpdEJha2Ugc3ludGF4IGRlc2NyaXB0aW9ucywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhJz5TeW50YXggYW5kIE9wZXJhdG9yczwvdWxpbms+IgorICAgICAgICBjaGFwdGVyIG9mIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5WYXJpYWJsZSBBc3NpZ25tZW50cyBhbmQgTWFuaXB1bGF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFZhcmlhYmxlIGFzc2lnbm1lbnRzIGFsbG93IGEgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gYQorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFRoZSBhc3NpZ25tZW50IGNhbiBiZSBzdGF0aWMgdGV4dCBvciBtaWdodCBpbmNsdWRlCisgICAgICAgICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXNzaWdubWVudCwgYXBwZW5kaW5nIGFuZCBwcmVwZW5kaW5nCisgICAgICAgICAgICAgICAgb3BlcmF0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBzb21lIG9mIHRoZSB3YXlzCisgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdmFyaWFibGVzIGluIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTID0gIiR7V09SS0RJUn0vcG9zdGZpeC0ke1BWfSIKKyAgICAgQ0ZMQUdTICs9ICItRE5PX0FTTSIKKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXh1cC5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkZ1bmN0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyBwcm92aWRlIGEgc2VyaWVzIG9mIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkLgorICAgICAgICAgICAgICAgIFlvdSB1c3VhbGx5IHVzZSBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBhIHRhc2sgZnVuY3Rpb24gb3IgdG8gY29tcGxlbWVudAorICAgICAgICAgICAgICAgIGEgZGVmYXVsdCBmdW5jdGlvbiAoaS5lLiBhcHBlbmQgb3IgcHJlcGVuZCB0byBhbgorICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uKS4KKyAgICAgICAgICAgICAgICBTdGFuZGFyZCBmdW5jdGlvbnMgdXNlIDxmaWxlbmFtZT5zaDwvZmlsZW5hbWU+IHNoZWxsCisgICAgICAgICAgICAgICAgc3ludGF4LCBhbHRob3VnaCBhY2Nlc3MgdG8gT3BlbkVtYmVkZGVkIHZhcmlhYmxlcyBhbmQKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCBtZXRob2RzIGFyZSBhbHNvIGF2YWlsYWJsZS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGZ1bmN0aW9uIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2luc3RhbGwgKCkgeworICAgICAgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKyAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisgICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LworICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW1wbGVtZW50IG5ldyBmdW5jdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBjYWxsZWQgYmV0d2VlbiBleGlzdGluZyB0YXNrcyBhcyBsb25nIGFzIHRoZQorICAgICAgICAgICAgICAgIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCByZXBsYWNpbmcgb3IgY29tcGxlbWVudGluZyB0aGUKKyAgICAgICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGltcGxlbWVudCBmdW5jdGlvbnMgaW4gUHl0aG9uCisgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBzaGVsbC4KKyAgICAgICAgICAgICAgICBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzZWVuIGluIHRoZSBtYWpvcml0eSBvZgorICAgICAgICAgICAgICAgIHJlY2lwZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPktleXdvcmRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQml0QmFrZSByZWNpcGVzIHVzZSBvbmx5IGEgZmV3IGtleXdvcmRzLgorICAgICAgICAgICAgICAgIFlvdSB1c2Uga2V5d29yZHMgdG8gaW5jbHVkZSBjb21tb24KKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgKDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4pLCBsb2FkIHBhcnRzCisgICAgICAgICAgICAgICAgb2YgYSByZWNpcGUgZnJvbSBvdGhlciBmaWxlcworICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4pIGFuZCBleHBvcnQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgdG8gdGhlIGVudmlyb25tZW50ICg8ZmlsZW5hbWU+ZXhwb3J0PC9maWxlbmFtZT4pLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHVzZSBvZiBzb21lIG9mCisgICAgICAgICAgICAgICAgdGhlc2Uga2V5d29yZHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgUE9TVENPTkYgPSAiJHtTVEFHSU5HX0JJTkRJUn0vcG9zdGNvbmYiCisgICAgIGluaGVyaXQgYXV0b2NvbmYKKyAgICAgcmVxdWlyZSBvdGhlcmZpbGUuaW5jCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db21tZW50czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEFueSBsaW5lcyB0aGF0IGJlZ2luIHdpdGggdGhlIGhhc2ggY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4jPC9maWxlbmFtZT4pIGFyZSB0cmVhdGVkIGFzIGNvbW1lbnQgbGluZXMKKyAgICAgICAgICAgICAgICBhbmQgYXJlIGlnbm9yZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFRoaXMgaXMgYSBjb21tZW50CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBuZXh0IGxpc3Qgc3VtbWFyaXplcyB0aGUgbW9zdCBpbXBvcnRhbnQgYW5kIG1vc3QgY29tbW9ubHkKKyAgICAgICAgdXNlZCBwYXJ0cyBvZiB0aGUgcmVjaXBlIHN5bnRheC4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgcGFydHMgb2YgdGhlIHN5bnRheCwgeW91IGNhbgorICAgICAgICByZWZlcmVuY2UgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPgorICAgICAgICBjaGFwdGVyIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MaW5lIENvbnRpbnVhdGlvbjogPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGJhY2t3YXJkIHNsYXNoICg8ZmlsZW5hbWU+XDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBzcGxpdCBhIHN0YXRlbWVudCBvdmVyIG11bHRpcGxlIGxpbmVzLgorICAgICAgICAgICAgICAgIFBsYWNlIHRoZSBzbGFzaCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGF0CisgICAgICAgICAgICAgICAgaXMgdG8gYmUgY29udGludWVkIG9uIHRoZSBuZXh0IGxpbmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIgPSAiQSByZWFsbHkgbG9uZyBcCisgICAgICAgICAgICBsaW5lIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBoYXZlIGFueSBjaGFyYWN0ZXJzIGluY2x1ZGluZyBzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgb3IgdGFicyBhZnRlciB0aGUgc2xhc2ggY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNpbmcgVmFyaWFibGVzOiA8ZmlsZW5hbWU+JHsuLi59PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+JHs8cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+IHN5bnRheCB0bworICAgICAgICAgICAgICAgIGFjY2VzcyB0aGUgY29udGVudHMgb2YgYSB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnBuZy96bGliLSR7UFZ9LnRhci5neiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZXhwcmVzc2VkIGluIHRoaXMgZm9ybSBkb2VzIG5vdCBnZXQKKyAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0ZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4cGFuc2lvbiBvZiB0aGVzZSBleHByZXNzaW9ucyBoYXBwZW5zCisgICAgICAgICAgICAgICAgICAgIG9uLWRlbWFuZCBsYXRlciAoZS5nLiB1c3VhbGx5IHdoZW4gYSBmdW5jdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIG1ha2VzIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgZXhlY3V0ZXMpLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBtb3N0CisgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udGV4dCBpbiB3aGljaCB0aGV5IGFyZQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHVzZWQuCisgICAgICAgICAgICAgICAgICAgIE9uIHRoZSByYXJlIG9jY2FzaW9uIHRoYXQgeW91IGRvIG5lZWQgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gdG8gYmUgZXhwYW5kZWQgaW1tZWRpYXRlbHksIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Oj08L2ZpbGVuYW1lPiBvcGVyYXRvciBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gd2hlbiB5b3UgbWFrZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudCwgYnV0IHRoaXMgaXMgbm90IGdlbmVyYWxseSBuZWVkZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RdW90ZSBBbGwgQXNzaWdubWVudHM6IDxmaWxlbmFtZT4iPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4iPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIGRvdWJsZSBxdW90ZXMgYXJvdW5kIHRoZSB2YWx1ZSBpbiBhbGwgdmFyaWFibGUKKyAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUjEgPSAiJHtPVEhFUlZBUn0iCisgICAgIFZBUjIgPSAiVGhlIHZlcnNpb24gaXMgJHtQVn0iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db25kaXRpb25hbCBBc3NpZ25tZW50OiA8ZmlsZW5hbWU+Pz08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICBDb25kaXRpb25hbCBhc3NpZ25tZW50IGlzIHVzZWQgdG8gYXNzaWduIGEgdmFsdWUgdG8KKyAgICAgICAgICAgICAgICBhIHZhcmlhYmxlLCBidXQgb25seSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICB1bnNldC4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQgYnkgdGhlIGVxdWFsIHNpZ24KKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj89PC9maWxlbmFtZT4pIHRvIG1ha2UgYSAic29mdCIgYXNzaWdubWVudAorICAgICAgICAgICAgICAgIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCAic29mdCIgYXNzaWdubWVudHMgYXJlIHVzZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvciB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbWUgdGhyb3VnaCBmcm9tIHRoZSBleHRlcm5hbAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VkFSMTwvZmlsZW5hbWU+IGlzIHNldCB0byAiTmV3IHZhbHVlIiBpZgorICAgICAgICAgICAgICAgIGl0IGlzIGN1cnJlbnRseSBlbXB0eS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiA8ZmlsZW5hbWU+VkFSMTwvZmlsZW5hbWU+IGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAgICAgICAgICBzZXQsIGl0IHJlbWFpbnMgdW5jaGFuZ2VkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIG5leHQgZXhhbXBsZSwgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGlzIGxlZnQgd2l0aCB0aGUgdmFsdWUgIk9yaWdpbmFsIHZhbHVlIjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUjEgPSAiT3JpZ2luYWwgdmFsdWUiCisgICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGVuZGluZzogPGZpbGVuYW1lPis9PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIHRoZSBwbHVzIGNoYXJhY3RlciBmb2xsb3dlZCBieSB0aGUgZXF1YWxzIHNpZ24KKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPis9PC9maWxlbmFtZT4pIHRvIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgYWRkcyBhIHNwYWNlIGJldHdlZW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgb2YgdGhlIHZhcmlhYmxlIGFuZCB0aGUgbmV3IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGVuZGluZzogPGZpbGVuYW1lPj0rPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIHRoZSBlcXVhbHMgc2lnbiBmb2xsb3dlZCBieSB0aGUgcGx1cyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4pIHRvIHByZXBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBuZXcgY29udGVudAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGV4aXN0aW5nIGNvbnRlbnQgb2YgdGhlIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSID0rICJTdGFydHMiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmc6IDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCisgICAgICAgICAgICAgICAgYXBwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIG9wZXJhdG9yIGlzIGFwcGxpZWQgYWZ0ZXIgYWxsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgYWZ0ZXIgYWxsIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gYXNzaWdubWVudHMgaGF2ZQorICAgICAgICAgICAgICAgIG9jY3VycmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHNwYWNlIGJlaW5nCisgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgc3RhcnQgdG8gZW5zdXJlIHRoZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9wZXJhdG9yIHdpdGggb3ZlcnJpZGVzLCB3aGljaCByZXN1bHRzIGluIHRoZSBhY3Rpb25zCisgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCisgICAgICAgICAgICAgICAgbWFjaGluZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUklfYXBwZW5kX3NoNCA9ICIgZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlByZXBlbmRpbmc6IDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3IgdG8KKyAgICAgICAgICAgICAgICBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIG9wZXJhdG9yIGlzIGFwcGxpZWQgYWZ0ZXIgYWxsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgYWZ0ZXIgYWxsIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gYXNzaWdubWVudHMgaGF2ZQorICAgICAgICAgICAgICAgIG9jY3VycmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHNwYWNlIGJlaW5nCisgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgZW5kIHRvIGVuc3VyZSB0aGUgcHJlcGVuZGVkCisgICAgICAgICAgICAgICAgdmFsdWUgaXMgbm90IG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyB2YWx1ZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENGTEFHU19wcmVwZW5kID0gIi1JJHtTfS9teWluY2x1ZGVzICIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgorICAgICAgICAgICAgICAgIG1hY2hpbmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZF9zaDQgPSAiLUkke1N9L215aW5jbHVkZXMgIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3ZlcnJpZGVzOjwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBvdmVycmlkZXMgdG8gc2V0IGEgdmFsdWUgY29uZGl0aW9uYWxseSwKKyAgICAgICAgICAgICAgICB0eXBpY2FsbHkgYmFzZWQgb24gaG93IHRoZSByZWNpcGUgaXMgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSdzIHZhbHVlIHRvICJzdGFuZGFyZC9iYXNlIiBmb3IgYW55IHRhcmdldAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBleGNlcHQgZm9yIHFlbXVhcm0gd2hlcmUgaXQgc2hvdWxkIGJlIHNldCB0bworICAgICAgICAgICAgICAgICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIsIHlvdSB3b3VsZCBkbyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlJBTkNIID0gInN0YW5kYXJkL2Jhc2UiCisgICAgIEtCUkFOQ0hfcWVtdWFybSAgPSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhcmUgYWxzbyB1c2VkIHRvIHNlcGFyYXRlIGFsdGVybmF0ZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICBvZiBhIHZhcmlhYmxlIGluIG90aGVyIHNpdHVhdGlvbnMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdoZW4gc2V0dGluZyB2YXJpYWJsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpbmRpdmlkdWFsIHBhY2thZ2VzIHByb2R1Y2VkIGJ5CisgICAgICAgICAgICAgICAgYSByZWNpcGUsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBhbiBvdmVycmlkZSB0aGF0CisgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbmRlbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFVzZSBzcGFjZXMgZm9yIGluZGVudGF0aW9uIHJhdGhlciB0aGFuIHRoYW4gdGFicy4KKyAgICAgICAgICAgICAgICBGb3Igc2hlbGwgZnVuY3Rpb25zLCBib3RoIGN1cnJlbnRseSB3b3JrLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGEgcG9saWN5IGRlY2lzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgdG8gdXNlIHRhYnMgaW4gc2hlbGwgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBzb21lIGxheWVycyBoYXZlIGEgcG9saWN5IHRvIHVzZSBzcGFjZXMKKyAgICAgICAgICAgICAgICBmb3IgYWxsIGluZGVudGF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2luZyBQeXRob24gZm9yIENvbXBsZXggT3BlcmF0aW9uczogPGZpbGVuYW1lPiR7QDxyZXBsYWNlYWJsZT5weXRob25fY29kZTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIEZvciBtb3JlIGFkdmFuY2VkIHByb2Nlc3NpbmcsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQorICAgICAgICAgICAgICAgIFB5dGhvbiBjb2RlIGR1cmluZyB2YXJpYWJsZSBhc3NpZ25tZW50cyAoZS5nLgorICAgICAgICAgICAgICAgIHNlYXJjaCBhbmQgcmVwbGFjZW1lbnQgb24gYSB2YXJpYWJsZSkuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPllvdSBpbmRpY2F0ZSBQeXRob24gY29kZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtAPHJlcGxhY2VhYmxlPnB5dGhvbl9jb2RlPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzeW50YXggZm9yIHRoZSB2YXJpYWJsZSBhc3NpZ25tZW50OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy96aXAke0BkLmdldFZhcignUFYnLDEpLnJlcGxhY2UoJy4nLCAnJyl9LnRnegorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hlbGwgRnVuY3Rpb24gU3ludGF4OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgV3JpdGUgc2hlbGwgZnVuY3Rpb25zIGFzIGlmIHlvdSB3ZXJlIHdyaXRpbmcgYSBzaGVsbAorICAgICAgICAgICAgICAgIHNjcmlwdCB3aGVuIHlvdSBkZXNjcmliZSBhIGxpc3Qgb2YgYWN0aW9ucyB0byB0YWtlLgorICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZW5zdXJlIHRoYXQgeW91ciBzY3JpcHQgd29ya3Mgd2l0aCBhIGdlbmVyaWMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBhbmQgdGhhdCBpdCBkb2VzIG5vdCByZXF1aXJlCisgICAgICAgICAgICAgICAgYW55IDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gb3Igb3RoZXIgc2hlbGwtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgIFRoZSBzYW1lIGNvbnNpZGVyYXRpb25zIGFwcGx5IHRvIHZhcmlvdXMgc3lzdGVtCisgICAgICAgICAgICAgICAgdXRpbGl0aWVzIChlLmcuIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JlcDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXdrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSB0aGF0IHlvdSBtaWdodCB3aXNoIHRvIHVzZS4KKyAgICAgICAgICAgICAgICBJZiBpbiBkb3VidCwgeW91IHNob3VsZCBjaGVjayB3aXRoIG11bHRpcGxlCisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIC0gaW5jbHVkaW5nIHRob3NlIGZyb20gQnVzeUJveC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZGV2ZWxvcG1lbnQtY29uY2VwdHMiPgorICAgIDx0aXRsZT5EZXZlbG9wbWVudCBDb25jZXB0czwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGluc2lkZSB0aGUgZGV2ZWxvcG1lbnQKKyAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHJlcHJlc2VudHMgZGV2ZWxvcG1lbnQgYXQgYSBoaWdoIGxldmVsLgorICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgY2hhcHRlciBleHBhbmRzIG9uIHRoZSBmdW5kYW1lbnRhbCBpbnB1dCwgb3V0cHV0LAorICAgICAgICBwcm9jZXNzLCBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPikgYmxvY2tzCisgICAgICAgIHRoYXQgbWFrZSB1cCBkZXZlbG9wbWVudCBpbiB0aGUgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYSBpZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjQuMjVpbiIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gZ2VuZXJhbCwgZGV2ZWxvcG1lbnQgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBNZXRhZGF0YSB5b3UgY2FuIHVzZSB0byBjb250cm9sIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXRhZGF0YSBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBWYXJpb3VzIGxheWVycyB0aGF0IHByb3ZpZGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAorICAgICAgICAgICAgICAgIGRpc3RybyBNZXRhZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U291cmNlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVXBzdHJlYW0gcmVsZWFzZXMsIGxvY2FsIHByb2plY3RzLCBhbmQgU0NNcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgUHJvY2Vzc2VzIHVuZGVyIHRoZSBjb250cm9sIG9mCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPi4KKyAgICAgICAgICAgICAgICBUaGlzIGJsb2NrIGV4cGFuZHMgb24gaG93IEJpdEJha2UgZmV0Y2hlcyBzb3VyY2UsIGFwcGxpZXMKKyAgICAgICAgICAgICAgICBwYXRjaGVzLCBjb21wbGV0ZXMgY29tcGlsYXRpb24sIGFuYWx5emVzIG91dHB1dCBmb3IgcGFja2FnZQorICAgICAgICAgICAgICAgIGdlbmVyYXRpb24sIGNyZWF0ZXMgYW5kIHRlc3RzIHBhY2thZ2VzLCBnZW5lcmF0ZXMgaW1hZ2VzLCBhbmQKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhY2thZ2UgRmVlZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBjb250YWluaW5nIG91dHB1dCBwYWNrYWdlcyAoUlBNLCBERUIgb3IgSVBLKSwKKyAgICAgICAgICAgICAgICB3aGljaCBhcmUgc3Vic2VxdWVudGx5IHVzZWQgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZiBhbiBpbWFnZSBvcgorICAgICAgICAgICAgICAgIFNESywgcHJvZHVjZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBUaGVzZSBmZWVkcyBjYW4gYWxzbyBiZSBjb3BpZWQgYW5kIHNoYXJlZCB1c2luZyBhIHdlYiBzZXJ2ZXIgb3IKKyAgICAgICAgICAgICAgICBvdGhlciBtZWFucyB0byBmYWNpbGl0YXRlIGV4dGVuZGluZyBvciB1cGRhdGluZyBleGlzdGluZworICAgICAgICAgICAgICAgIGltYWdlcyBvbiBkZXZpY2VzIGF0IHJ1bnRpbWUgaWYgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgaXMKKyAgICAgICAgICAgICAgICBlbmFibGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbWFnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbWFnZXMgcHJvZHVjZWQgYnkgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENyb3NzLWRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHByb2R1Y2VkIGFsb25nIHdpdGggYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICBvciBzZXBhcmF0ZWx5IHdpdGggQml0QmFrZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9InVzZXItY29uZmlndXJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5Vc2VyIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlciBjb25maWd1cmF0aW9uIGhlbHBzIGRlZmluZSB0aGUgYnVpbGQuCisgICAgICAgICAgICBUaHJvdWdoIHVzZXIgY29uZmlndXJhdGlvbiwgeW91IGNhbiB0ZWxsIEJpdEJha2UgdGhlCisgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCB5b3UgYXJlIGJ1aWxkaW5nIHRoZSBpbWFnZSwKKyAgICAgICAgICAgIHdoZXJlIHRvIHN0b3JlIGRvd25sb2FkZWQgc291cmNlLCBhbmQgb3RoZXIgYnVpbGQgcHJvcGVydGllcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYW4gZXhwYW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICAgICAiVXNlciBDb25maWd1cmF0aW9uIiBib3ggb2YgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz46CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIG5lZWRzIHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBvcmRlciB0byBjb21wbGV0ZQorICAgICAgICAgICAgYSBidWlsZC4KKyAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSA8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBUaGUgbWluaW1hbGx5IG5lY2Vzc2FyeSBvbmVzIHJlc2lkZSBhcyBleGFtcGxlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgdGhpcyBzZWN0aW9uIHJlZmVycyB0byB0aGUgU291cmNlIERpcmVjdG9yeSBhcworICAgICAgICAgICAgdGhlICJQb2t5IERpcmVjdG9yeS4iCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IG9yIHlvdQorICAgICAgICAgICAgZG93bmxvYWQgYW5kIHVucGFjayBhIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgeW91IGNhbiBzZXQgdXAgdGhlCisgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IHRvIGJlIG5hbWVkIGFueXRoaW5nIHlvdSB3YW50LgorICAgICAgICAgICAgRm9yIHRoaXMgZGlzY3Vzc2lvbiwgdGhlIGNsb25lZCByZXBvc2l0b3J5IHVzZXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIG5hbWUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBQb2t5IHJlcG9zaXRvcnkgaXMgcHJpbWFyaWx5IGFuIGFnZ3JlZ2F0aW9uIG9mIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgIEl0IGlzIG5vdCBhIGNhbm9uaWNhbCB1cHN0cmVhbSBzb3VyY2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXIgaW5zaWRlIFBva3kgY29udGFpbnMKKyAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdCBoYXMgZXhhbXBsZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIFRoZXNlIGV4YW1wbGUgZmlsZXMgYXJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgY3JlYXRpbmcgYWN0dWFsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIHdoZW4geW91IHNvdXJjZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHNjcmlwdAorICAgICAgICAgICAgKGkuZS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU291cmNpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCBjcmVhdGVzIGEKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCisgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSBmb3IgYWxsIGl0cyB3b3JrIGR1cmluZyBidWlsZHMuCisgICAgICAgICAgICBUaGUgQnVpbGQgRGlyZWN0b3J5IGhhcyBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQKKyAgICAgICAgICAgIGNvbnRhaW5zIGRlZmF1bHQgdmVyc2lvbnMgb2YgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgVGhlc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBjcmVhdGVkIG9ubHkgaWYgdmVyc2lvbnMKKyAgICAgICAgICAgIGRvIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQgdGhlIHRpbWUgeW91CisgICAgICAgICAgICBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSB0aGUgUG9reSByZXBvc2l0b3J5IGlzIGZ1bmRhbWVudGFsbHkgYW4gYWdncmVnYXRpb24gb2YKKyAgICAgICAgICAgIGV4aXN0aW5nIHJlcG9zaXRvcmllcywgc29tZSB1c2VycyBtaWdodCBiZSBmYW1pbGlhciB3aXRoIHJ1bm5pbmcKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPiBzY3JpcHQgaW4gdGhlIGNvbnRleHQKKyAgICAgICAgICAgIG9mIHNlcGFyYXRlIE9wZW5FbWJlZGRlZC1Db3JlIGFuZCBCaXRCYWtlIHJlcG9zaXRvcmllcyByYXRoZXIgdGhhbiBhCisgICAgICAgICAgICBzaW5nbGUgUG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgVGhpcyBkaXNjdXNzaW9uIGFzc3VtZXMgdGhlIHNjcmlwdCBpcyBleGVjdXRlZCBmcm9tIHdpdGhpbiBhIGNsb25lZAorICAgICAgICAgICAgb3IgdW5wYWNrZWQgdmVyc2lvbiBvZiBQb2t5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEZXBlbmRpbmcgb24gd2hlcmUgdGhlIHNjcmlwdCBpcyBzb3VyY2VkLCBkaWZmZXJlbnQgc3ViLXNjcmlwdHMKKyAgICAgICAgICAgIGFyZSBjYWxsZWQgdG8gc2V0IHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgKFlvY3RvIG9yIE9wZW5FbWJlZGRlZCkuCisgICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gaW5zaWRlIHRoZQorICAgICAgICAgICAgcG9reSBkaXJlY3Rvcnkgc2V0cyB1cCB0aGUgQnVpbGQgRGlyZWN0b3J5IGFuZCBzZWVkcyB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAoaWYgbmVjZXNzYXJ5KSB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXBwcm9wcmlhdGUgZm9yIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgICAgIHVzZXMgdGhlIDxmaWxlbmFtZT4kVEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUgdG8KKyAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggc2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gbG9jYXRlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHByb3ZpZGVzIG1hbnkKKyAgICAgICAgICAgIGJhc2ljIHZhcmlhYmxlcyB0aGF0IGRlZmluZSBhIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3Qgb2YgYSBmZXcuCisgICAgICAgICAgICBUbyBzZWUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgaW4gYSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGNyZWF0ZWQgYnkgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGFyYWxsZWxpc20gT3B0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfTlVNQkVSX1BBUlNFX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VGFyZ2V0IE1hY2hpbmUgU2VsZWN0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvd25sb2FkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hhcmVkIFN0YXRlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBPdXRwdXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgc2V0IGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9hdXRvLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRlbGxzIEJpdEJha2Ugd2hhdAorICAgICAgICAgICAgbGF5ZXJzIHlvdSB3YW50IGNvbnNpZGVyZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoaXMgZmlsZSBpbmNsdWRlIGxheWVycworICAgICAgICAgICAgbWluaW1hbGx5IG5lZWRlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgSG93ZXZlciwgeW91IG11c3QgbWFudWFsbHkgYWRkIGFueSBjdXN0b20gbGF5ZXJzIHlvdSBoYXZlIGNyZWF0ZWQuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmcteW91ci1sYXllcic+RW5hYmxpbmcgWW91ciBMYXllcjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmaWxlcyA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gYXJlIG5vdCBjcmVhdGVkIGJ5IHRoZSBlbnZpcm9ubWVudAorICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0LgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgY3JlYXRlIHRoYXQgeW91cnNlbGYuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdHlwaWNhbGx5IGNyZWF0ZWQgYnkKKyAgICAgICAgICAgIGFuIGF1dG9idWlsZGVyOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIGNvbmZpZ3VyZSBtdWx0aXBsZSBidWlsZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBzZXZlcmFsIGJ1aWxkIGVudmlyb25tZW50cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhleSBzaGFyZWQgc29tZSBjb21tb24gZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHQgYnVpbGQgcHJvcGVydGllcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBwZXJoYXBzIHRoZSBwYWNrYWdpbmcgZm9ybWF0IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25lIHVzZWZ1bCBzY2VuYXJpbyBmb3IgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdG8gZXh0ZW5kIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBwYXRoIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZW4sIHdoZW4gQml0QmFrZSBsb29rcyBmb3IgTWV0YWRhdGEgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+LCBpdCBmaW5kcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSBhbmQgYXBwbGllcyB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBjb25maWd1cmF0aW9ucyBmb3VuZCBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVG8gb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMgaW4gYSBwYXJ0aWN1bGFyIGJ1aWxkIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGhlIHNpbWlsYXIgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoYXQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5J3MgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHVzdWFsbHkgY3JlYXRlZCBhbmQgd3JpdHRlbiB0byBieQorICAgICAgICAgICAgICAgICAgICBhbiBhdXRvYnVpbGRlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNldHRpbmdzIHB1dCBpbnRvIHRoZSBmaWxlIGFyZSB0eXBpY2FsbHkgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIGZpbmQgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvciB0aGUgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZWRpdCBhbGwgY29uZmlndXJhdGlvbiBmaWxlcyB0byBmdXJ0aGVyIGRlZmluZQorICAgICAgICAgICAgYW55IHBhcnRpY3VsYXIgYnVpbGQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICJVc2VyIENvbmZpZ3VyYXRpb24gRWRpdHMiCisgICAgICAgICAgICBib3ggaW4gdGhlIGZpZ3VyZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgbGF1bmNoIHlvdXIgYnVpbGQgd2l0aCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb21tYW5kLCBCaXRCYWtlIHNvcnRzIG91dCB0aGUgY29uZmlndXJhdGlvbnMgdG8gdWx0aW1hdGVseQorICAgICAgICAgICAgZGVmaW5lIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICByZWFkcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBhIHNwZWNpZmljIG9yZGVyOgorICAgICAgICAgICAgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEFuZCwgdGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBub3JtYWwgYXNzaWdubWVudCBzdGF0ZW1lbnQKKyAgICAgICAgICAgIHJ1bGVzLgorICAgICAgICAgICAgQmVjYXVzZSB0aGUgZmlsZXMgYXJlIHBhcnNlZCBpbiBhIHNwZWNpZmljIG9yZGVyLCB2YXJpYWJsZQorICAgICAgICAgICAgYXNzaWdubWVudHMgZm9yIHRoZSBzYW1lIHZhcmlhYmxlIGNvdWxkIGJlIGFmZmVjdGVkLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gZmlsZSBhbmQKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHNldAorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnZhcmlhYmxlMTwvcmVwbGFjZWFibGU+IHRvIGRpZmZlcmVudCB2YWx1ZXMsIGJlY2F1c2UKKyAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gcGFyc2VzIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYWZ0ZXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiBpcyBhc3NpZ25lZCB0aGUgdmFsdWUgZnJvbQorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJtZXRhZGF0YS1tYWNoaW5lLWNvbmZpZ3VyYXRpb24tYW5kLXBvbGljeS1jb25maWd1cmF0aW9uIj4KKyAgICAgICAgPHRpdGxlPk1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcHJldmlvdXMgc2VjdGlvbiBkZXNjcmliZWQgdGhlIHVzZXIgY29uZmlndXJhdGlvbnMgdGhhdAorICAgICAgICAgICAgZGVmaW5lIEJpdEJha2UncyBnbG9iYWwgYmVoYXZpb3IuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBjbG9zZXIgbG9vayBhdCB0aGUgbGF5ZXJzIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgIHVzZXMgdG8gZnVydGhlciBjb250cm9sIHRoZSBidWlsZC4KKyAgICAgICAgICAgIFRoZXNlIGxheWVycyBwcm92aWRlIE1ldGFkYXRhIGZvciB0aGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAorICAgICAgICAgICAgcG9saWN5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aHJlZSB0eXBlcyBvZiBsYXllciBpbnB1dCBleGlzdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Qb2xpY3kgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gTGF5ZXJzIHByb3ZpZGUgdG9wLWxldmVsIG9yIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgcG9saWNpZXMgZm9yIHRoZSBpbWFnZSBvciBTREsgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGxheWVyIHdvdWxkIGRpY3RhdGUgd2hldGhlciBCaXRCYWtlCisgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIFJQTSBvciBJUEsgcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWNoaW5lIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGxheWVycyBwcm92aWRlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBpbmZvcm1hdGlvbiBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ldGFkYXRhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIGxheWVycyBjb250YWluIHVzZXItc3VwcGxpZWQgcmVjaXBlIGZpbGVzLAorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBhbmQgYXBwZW5kIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleHBhbmRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgIE1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbiBpbnB1dAorICAgICAgICAgICAgKGxheWVycykgYm94ZXMgb2YgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz46CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9sYXllci1pbnB1dC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI3LjVpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYWxsIGxheWVycyBoYXZlIGEgc2ltaWxhciBzdHJ1Y3R1cmUuCisgICAgICAgICAgICBUaGV5IGFsbCBjb250YWluIGEgbGljZW5zaW5nIGZpbGUKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5DT1BZSU5HPC9maWxlbmFtZT4pIGlmIHRoZSBsYXllciBpcyB0byBiZQorICAgICAgICAgICAgZGlzdHJpYnV0ZWQsIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgYXMgZ29vZCBwcmFjdGljZQorICAgICAgICAgICAgYW5kIGVzcGVjaWFsbHkgaWYgdGhlIGxheWVyIGlzIHRvIGJlIGRpc3RyaWJ1dGVkLCBhCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSwgYW5kIHJlY2lwZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIG1hbnkgbGF5ZXJzIHRoYXQgY2FuIGJlIHVzZWQuCisgICAgICAgICAgICBZb3UgY2FuIHNlZSBhIHdlYi1pbnRlcmZhY2UgbGlzdGluZyBvZiB0aGVtIG9uIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyI+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgVGhlIGxheWVycyBhcmUgc2hvd24gYXQgdGhlIGJvdHRvbSBjYXRlZ29yaXplZCB1bmRlcgorICAgICAgICAgICAgIllvY3RvIE1ldGFkYXRhIExheWVycy4iCisgICAgICAgICAgICBUaGVzZSBsYXllcnMgYXJlIGZ1bmRhbWVudGFsbHkgYSBzdWJzZXQgb2YgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9sYXllcnMvIj5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGxpc3RzIGFsbCBsYXllcnMgcHJvdmlkZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBMYXllcnMgZXhpc3QgaW4gdGhlIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyB0aGF0CisgICAgICAgICAgICAgICAgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXguCisgICAgICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBlaXRoZXIgZGVwcmVjYXRlZCBvciBleHBlcmltZW50YWwgaW4gbmF0dXJlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgd2hpY2ggaXMgcGFydCBvZiB0aGUgdXNlciBjb25maWd1cmF0aW9uLCB0byBmaW5kIHdoYXQgbGF5ZXJzIGl0CisgICAgICAgICAgICBzaG91bGQgYmUgdXNpbmcgYXMgcGFydCBvZiB0aGUgYnVpbGQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJkaXN0cm8tbGF5ZXIiPgorICAgICAgICAgICAgPHRpdGxlPkRpc3RybyBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBkaXN0cmlidXRpb24gbGF5ZXIgcHJvdmlkZXMgcG9saWN5IGNvbmZpZ3VyYXRpb25zIGZvciB5b3VyCisgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgaXNvbGF0ZSB0aGVzZSB0eXBlcyBvZgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGludG8gdGhlaXIgb3duIGxheWVyLgorICAgICAgICAgICAgICAgIFNldHRpbmdzIHlvdSBwcm92aWRlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBzaW1pbGFyCisgICAgICAgICAgICAgICAgc2V0dGluZ3MgdGhhdCBCaXRCYWtlIGZpbmRzIGluIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBzb21lIGV4cGxhbmF0aW9uIGFuZCByZWZlcmVuY2VzCisgICAgICAgICAgICAgICAgZm9yIHdoYXQgeW91IHR5cGljYWxseSBmaW5kIGluIHRoZSBkaXN0cmlidXRpb24gbGF5ZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5jbGFzc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pIGhvbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIHNoYXJlZCBhbW9uZworICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBpbiB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3VyIHJlY2lwZXMgaW5oZXJpdCBhIGNsYXNzLCB0aGV5IHRha2Ugb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zIGZvciB0aGF0IGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgY2xhc3MgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y29uZjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGhvbGRzIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBkaXN0cmlidXRpb24td2lkZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cmVjaXBlcy0qOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMgdGhhdCBhZmZlY3QgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvdWxkIGluY2x1ZGUgcmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgZGlzdHJpYnV0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBzY3JpcHRzLCBjdXN0b20gaW1hZ2UgcmVjaXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJic3AtbGF5ZXIiPgorICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBCU1AgTGF5ZXIgcHJvdmlkZXMgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIGluIHRoaXMgbGF5ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgZm9yIHdoaWNoCisgICAgICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2Ugb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzdHJ1Y3R1cmUgb3IgZm9ybSBpcyBkZWZpbmVkIGZvciBCU1AgbGF5ZXJzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIGl0IG11c3QgbWVldCBzb21lIHN0cnVjdHVyYWwgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllcidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPikgYW5kLAorICAgICAgICAgICAgICAgIG9mIGNvdXJzZSwgdGhlIGxheWVyICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBsYXllciBpcyBkZWRpY2F0ZWQgdG8gc3BlY2lmaWMgcmVjaXBlcworICAgICAgICAgICAgICAgIGJ5IGZ1bmN0aW9uOiA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1jb3JlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgTWV0YWRhdGEgY2FuIGV4aXN0IGZvciBtdWx0aXBsZSBmb3JtZmFjdG9ycywgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICBzdXBwb3J0IHN5c3RlbXMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGZpZ3VyZSBzaG93cyBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcywgbm90IGFsbCB0aGVzZSBkaXJlY3RvcmllcyBhcHBlYXIgaW4gYWxsCisgICAgICAgICAgICAgICAgICAgIEJTUCBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InNvZnR3YXJlLWxheWVyIj4KKyAgICAgICAgICAgIDx0aXRsZT5Tb2Z0d2FyZSBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSBsYXllciBwcm92aWRlcyB0aGUgTWV0YWRhdGEgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBwYWNrYWdlcyB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgVGhpcyBsYXllciBkb2VzIG5vdCBpbmNsdWRlIE1ldGFkYXRhIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIG9yIHRoZSBtYWNoaW5lLCB3aGljaCBhcmUgZm91bmQgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICByZXNwZWN0aXZlIGxheWVycy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBsYXllciBjb250YWlucyBhbnkgbmV3IHJlY2lwZXMgdGhhdCB5b3VyIHByb2plY3QgbmVlZHMKKyAgICAgICAgICAgICAgICBpbiB0aGUgZm9ybSBvZiByZWNpcGUgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ic291cmNlcy1kZXYtZW52aXJvbm1lbnQiPgorICAgICAgICA8dGl0bGU+U291cmNlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGFuIGltYWdlIG9yCisgICAgICAgICAgICBhbnkgdGFyZ2V0LCBpdCBtdXN0IGJlIGFibGUgdG8gYWNjZXNzIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICByZXByZXNlbnRzIHNvdXJjZSBmaWxlcyB1c2luZyB0aGUgIlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXMiLAorICAgICAgICAgICAgIkxvY2FsIFByb2plY3RzIiwgYW5kICJTQ01zIChvcHRpb25hbCkiIGJveGVzLgorICAgICAgICAgICAgVGhlIGZpZ3VyZSByZXByZXNlbnRzIG1pcnJvcnMsIHdoaWNoIGFsc28gcGxheSBhIHJvbGUgaW4gbG9jYXRpbmcKKyAgICAgICAgICAgIHNvdXJjZSBmaWxlcywgd2l0aCB0aGUgIlNvdXJjZSBNaXJyb3IocykiIGJveC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG1ldGhvZCBieSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIHVsdGltYXRlbHkgb3JnYW5pemVkIGlzCisgICAgICAgICAgICBhIGZ1bmN0aW9uIG9mIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciByZWxlYXNlZCBzb2Z0d2FyZSwgcHJvamVjdHMgdGVuZCB0byB1c2UgdGFyYmFsbHMKKyAgICAgICAgICAgIG9yIG90aGVyIGFyY2hpdmVkIGZpbGVzIHRoYXQgY2FuIGNhcHR1cmUgdGhlIHN0YXRlIG9mIGEgcmVsZWFzZQorICAgICAgICAgICAgZ3VhcmFudGVlaW5nIHRoYXQgaXQgaXMgc3RhdGljYWxseSByZXByZXNlbnRlZC4KKyAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBmb3IgYSBwcm9qZWN0IHRoYXQgaXMgbW9yZSBkeW5hbWljIG9yCisgICAgICAgICAgICBleHBlcmltZW50YWwgaW4gbmF0dXJlLCBhIHByb2plY3QgbWlnaHQga2VlcCBzb3VyY2UgZmlsZXMgaW4gYQorICAgICAgICAgICAgcmVwb3NpdG9yeSBjb250cm9sbGVkIGJ5IGEgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKSBzdWNoIGFzCisgICAgICAgICAgICBHaXQuCisgICAgICAgICAgICBQdWxsaW5nIHNvdXJjZSBmcm9tIGEgcmVwb3NpdG9yeSBhbGxvd3MgeW91IHRvIGNvbnRyb2wKKyAgICAgICAgICAgIHRoZSBwb2ludCBpbiB0aGUgcmVwb3NpdG9yeSAodGhlIHJldmlzaW9uKSBmcm9tIHdoaWNoIHlvdSB3YW50IHRvCisgICAgICAgICAgICBidWlsZCBzb2Z0d2FyZS4KKyAgICAgICAgICAgIEZpbmFsbHksIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBtaWdodCBleGlzdCwgd2hpY2ggd291bGQgZ2l2ZSB0aGUKKyAgICAgICAgICAgIGNvbnN1bWVyIGEgY2hvaWNlIHdoZW4gZGVjaWRpbmcgd2hlcmUgdG8gZ2V0IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byBzb3VyY2UgZmlsZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBsb2NhdGlvbi4KKyAgICAgICAgICAgIEVhY2ggcmVjaXBlIG11c3QgaGF2ZSBhIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgIHRoYXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFub3RoZXIgYXJlYSB0aGF0IHBsYXlzIGEgc2lnbmlmaWNhbnQgcm9sZSBpbiB3aGVyZSBzb3VyY2UgZmlsZXMKKyAgICAgICAgICAgIGNvbWUgZnJvbSBpcyBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBUaGlzIGFyZWEgaXMgYSBjYWNoZSB0aGF0IGNhbiBob2xkIHByZXZpb3VzbHkgZG93bmxvYWRlZCBzb3VyY2UuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gaW5zdHJ1Y3QgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlCisgICAgICAgICAgICB0YXJiYWxscyBmcm9tIEdpdCByZXBvc2l0b3JpZXMsIHdoaWNoIGlzIG5vdCB0aGUgZGVmYXVsdCBiZWhhdmlvciwKKyAgICAgICAgICAgIGFuZCBzdG9yZSB0aGVtIGluIHRoZSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gYnkgdXNpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiBhIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY2FuCisgICAgICAgICAgICBzYXZlIHRoZSBidWlsZCBzeXN0ZW0gYSB0cmlwIGFjcm9zcyB0aGUgSW50ZXJuZXQgd2hlbiBsb29raW5nCisgICAgICAgICAgICBmb3IgZmlsZXMuCisgICAgICAgICAgICBBIGdvb2QgbWV0aG9kIGZvciB1c2luZyBhIGRvd25sb2FkIGRpcmVjdG9yeSBpcyB0byBoYXZlCisgICAgICAgICAgICA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gcG9pbnQgdG8gYW4gYXJlYSBvdXRzaWRlIG9mIHlvdXIKKyAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gc2FmZWx5IGRlbGV0ZSB0aGUgQnVpbGQgRGlyZWN0b3J5CisgICAgICAgICAgICBpZiBuZWVkZWQgd2l0aG91dCBmZWFyIG9mIHJlbW92aW5nIGFueSBkb3dubG9hZGVkIHNvdXJjZSBmaWxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGRlZXBlciBsb29rIGludG8gdGhlCisgICAgICAgICAgICBzb3VyY2UgZmlsZXMgYW5kIHRoZSBtaXJyb3JzLgorICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgc291cmNlIGZpbGUgYXJlYSBvZiB0aGUKKyAgICAgICAgICAgIGJhc2UgZmlndXJlOgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1pbnB1dC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3LjVpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1cHN0cmVhbS1wcm9qZWN0LXJlbGVhc2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5VcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXBzdHJlYW0gcHJvamVjdCByZWxlYXNlcyBleGlzdCBhbnl3aGVyZSBpbiB0aGUgZm9ybSBvZiBhbgorICAgICAgICAgICAgICAgIGFyY2hpdmVkIGZpbGUgKGUuZy4gdGFyYmFsbCBvciB6aXAgZmlsZSkuCisgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgY29ycmVzcG9uZCB0byBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmaWd1cmUgdXNlcyBzcGVjaWZpYyByZWxlYXNlcyBlYWNoIGZvcgorICAgICAgICAgICAgICAgIEJ1c3lCb3gsIFF0LCBhbmQgRGJ1cy4KKyAgICAgICAgICAgICAgICBBbiBhcmNoaXZlIGZpbGUgY2FuIGJlIGZvciBhbnkgcmVsZWFzZWQgcHJvZHVjdCB0aGF0IGNhbiBiZQorICAgICAgICAgICAgICAgIGJ1aWx0IHVzaW5nIGEgcmVjaXBlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xvY2FsLXByb2plY3RzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Mb2NhbCBQcm9qZWN0czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIExvY2FsIHByb2plY3RzIGFyZSBjdXN0b20gYml0cyBvZiBzb2Z0d2FyZSB0aGUgdXNlciBwcm92aWRlcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIHJlc2lkZSBzb21ld2hlcmUgbG9jYWwgdG8gYSBwcm9qZWN0IC0gcGVyaGFwcworICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIHVzZXIgY2hlY2tzIGluIGl0ZW1zIChlLmcuCisgICAgICAgICAgICAgICAgYSBsb2NhbCBkaXJlY3RvcnkgY29udGFpbmluZyBhIGRldmVsb3BtZW50IHNvdXJjZSB0cmVlCisgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgZ3JvdXApLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgY2Fub25pY2FsIG1ldGhvZCB0aHJvdWdoIHdoaWNoIHRvIGluY2x1ZGUgYSBsb2NhbCBwcm9qZWN0CisgICAgICAgICAgICAgICAgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcyB0byBpbmNsdWRlIHRoYXQgbG9jYWwgcHJvamVjdC4KKyAgICAgICAgICAgICAgICBZb3UgdXNlIGVpdGhlciB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBhCisgICAgICAgICAgICAgICAgcmVjaXBlJ3MgYXBwZW5kIGZpbGUgdG8gb3ZlcnJpZGUgb3Igc2V0IHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSB0byBwb2ludCB0byB0aGUgbG9jYWwgZGlyZWN0b3J5IG9uIHlvdXIgZGlzayB0byBwdWxsCisgICAgICAgICAgICAgICAgaW4gdGhlIHdob2xlIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzY21zJz4KKyAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgQ29udHJvbCBNYW5hZ2VycyAoT3B0aW9uYWwpPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBwbGFjZSB0aGUgYnVpbGQgc3lzdGVtIGNhbiBnZXQgc291cmNlIGZpbGVzIGZyb20gaXMKKyAgICAgICAgICAgICAgICB0aHJvdWdoIGFuIFNDTSBzdWNoIGFzIEdpdCBvciBTdWJ2ZXJzaW9uLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSByZXBvc2l0b3J5IGlzIGNsb25lZCBvciBjaGVja2VkIG91dC4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2sgaW5zaWRlIEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIGFyZ3VtZW50J3MgcHJlZml4IHRvIGRldGVybWluZSB0aGUgY29ycmVjdAorICAgICAgICAgICAgICAgIGZldGNoZXIgbW9kdWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBnZW5lcmF0ZSB0YXJiYWxscyBmb3IgR2l0IHJlcG9zaXRvcmllcyBhbmQgcGxhY2UgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgPC9ub3RlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGZldGNoaW5nIGEgcmVwb3NpdG9yeSwgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIHJldmlzaW9uIGZyb20gd2hpY2ggdG8KKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzb3VyY2UtbWlycm9ycyc+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlIE1pcnJvcihzKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFR3byBraW5kcyBvZiBtaXJyb3JzIGV4aXN0OiBwcmUtbWlycm9ycyBhbmQgcmVndWxhciBtaXJyb3JzLgorICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUlSUk9SUyc+PGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlc2UsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGNoZWNrcyBwcmUtbWlycm9ycyBiZWZvcmUgbG9va2luZyB1cHN0cmVhbSBmb3IgYW55CisgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgIFByZS1taXJyb3JzIGFyZSBhcHByb3ByaWF0ZSB3aGVuIHlvdSBoYXZlIGEgc2hhcmVkIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIHRoYXQgaXMgbm90IGEgZGlyZWN0b3J5IGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEEgUHJlLW1pcnJvciB0eXBpY2FsbHkgcG9pbnRzIHRvIGEgc2hhcmVkIGRpcmVjdG9yeSB0aGF0IGlzCisgICAgICAgICAgICAgICAgbG9jYWwgdG8geW91ciBvcmdhbml6YXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFJlZ3VsYXIgbWlycm9ycyBjYW4gYmUgYW55IHNpdGUgYWNyb3NzIHRoZSBJbnRlcm5ldCB0aGF0IGlzCisgICAgICAgICAgICAgICAgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbiBmb3Igc291cmNlIGNvZGUgc2hvdWxkIHRoZQorICAgICAgICAgICAgICAgIHByaW1hcnkgc2l0ZSBub3QgYmUgZnVuY3Rpb25pbmcgZm9yIHNvbWUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQiPgorICAgICAgICA8dGl0bGU+UGFja2FnZSBGZWVkczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBhbiBpbWFnZSBvciBhbiBTREssCisgICAgICAgICAgICBpdCBnZXRzIHRoZSBwYWNrYWdlcyBmcm9tIGEgcGFja2FnZSBmZWVkIGFyZWEgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICBzaG93cyB0aGlzIHBhY2thZ2UgZmVlZHMgYXJlYSBpbiB0aGUgdXBwZXItcmlnaHQgY29ybmVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gbG9va3MgYSBsaXR0bGUgY2xvc2VyIGludG8gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYSB1c2VkCisgICAgICAgICAgICBieSB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgYXJlYToKKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjZpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUGFja2FnZSBmZWVkcyBhcmUgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwcm92aWRlcyBjbGFzc2VzIHRvIGdlbmVyYXRlCisgICAgICAgICAgICBkaWZmZXJlbnQgcGFja2FnZSB0eXBlcywgYW5kIHlvdSBzcGVjaWZ5IHdoaWNoIGNsYXNzZXMgdG8gZW5hYmxlCisgICAgICAgICAgICB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBCZWZvcmUgcGxhY2luZyB0aGUgcGFja2FnZXMgaW50byBwYWNrYWdlIGZlZWRzLAorICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgdmFsaWRhdGVzIHRoZW0gd2l0aCBnZW5lcmF0ZWQgb3V0cHV0IHF1YWxpdHkKKyAgICAgICAgICAgIGFzc3VyYW5jZSBjaGVja3MgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+PGZpbGVuYW1lPmluc2FuZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBwYWNrYWdlIGZlZWQgYXJlYSByZXNpZGVzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0byB0ZW1wb3JhcmlseSBzdG9yZSBwYWNrYWdlcworICAgICAgICAgICAgaXMgZGV0ZXJtaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgdGhlIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlciBpbiB1c2UuCisgICAgICAgICAgICBTZWUgdGhlICJQYWNrYWdlIEZlZWRzIiBib3ggaW4gdGhlIGlsbHVzdHJhdGlvbiBhbmQgbm90ZSB0aGUKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSByaWdodCBvZiB0aGF0IGFyZWEuCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIGRlZmluZXMgd2hlcmUgcGFja2FnZSBmaWxlcyBhcmUKKyAgICAgICAgICAgIGtlcHQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZWQgYXMgPGZpbGVuYW1lPnRtcC9kZXBsb3k8L2ZpbGVuYW1lPiBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkRFUExPWV9ESVJfKjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBhY2thZ2UgbWFuYWdlciB1c2VkLCB0aGUgcGFja2FnZSB0eXBlCisgICAgICAgICAgICAgICAgICAgIHN1Yi1mb2xkZXIuCisgICAgICAgICAgICAgICAgICAgIEdpdmVuIFJQTSwgSVBLLCBvciBERUIgcGFja2FnaW5nIGFuZCB0YXJiYWxsIGNyZWF0aW9uLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfUlBNJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9SUE08L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lQSyc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSVBLPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9ERUInPjxmaWxlbmFtZT5ERVBMT1lfRElSX0RFQjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgdXNlZCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3ViLWZvbGRlcnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBwYWNrYWdlcyBjb3VsZCBleGlzdCBmb3IgdGhlIGk1ODYgb3IgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiB0YXNrcyB0bworICAgICAgICAgICAgZ2VuZXJhdGUgcGFja2FnZXMgYW5kIHBsYWNlIHRoZW0gaW50byB0aGUgcGFja2FnZSBob2xkaW5nIGFyZWEgKGUuZy4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+IGZvciBJUEsgcGFja2FnZXMpLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfZGViPC9maWxlbmFtZT48L2xpbms+IiwKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9pcGsnPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+PC9saW5rPiIsCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfcnBtJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9ycG08L2ZpbGVuYW1lPjwvbGluaz4iLAorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfdGFyJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV90YXI8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9ucyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgYW4gSVBLIHBhY2thZ2luZyBtYW5hZ2VyCisgICAgICAgICAgICBpcyBiZWluZyB1c2VkIGFuZCBwYWNrYWdlIGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBib3RoIGk1ODYKKyAgICAgICAgICAgIGFuZCBxZW11eDg2IGV4aXN0LgorICAgICAgICAgICAgUGFja2FnZXMgZm9yIHRoZSBpNTg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvaTU4NjwvZmlsZW5hbWU+LCB3aGlsZSBwYWNrYWdlcyBmb3IKKyAgICAgICAgICAgIHRoZSBxZW11eDg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvcWVtdXg4NjwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JpdGJha2UtZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPgorICAgICAgICAgICAgdG8gcHJvZHVjZSBpbWFnZXMuCisgICAgICAgICAgICBZb3UgY2FuIHNlZSBmcm9tIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+LAorICAgICAgICAgICAgdGhlIEJpdEJha2UgYXJlYSBjb25zaXN0cyBvZiBzZXZlcmFsIGZ1bmN0aW9uYWwgYXJlYXMuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBjbG9zZXIgbG9vayBhdCBlYWNoIG9mIHRob3NlIGFyZWFzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTZXBhcmF0ZSBkb2N1bWVudGF0aW9uIGV4aXN0cyBmb3IgdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbCc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+CisgICAgICAgICAgICBmb3IgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIEJpdEJha2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlIEZldGNoaW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHN0YWdlcyBvZiBidWlsZGluZyBhIHJlY2lwZSBhcmUgdG8gZmV0Y2ggYW5kIHVucGFjaworICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZToKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjYuNWluIiBkZXB0aD0iNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrcyBmZXRjaCB0aGUgc291cmNlIGZpbGVzIGFuZCB1bnBhY2sgdGhlbSBpbnRvIHRoZSB3b3JrCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3IgZXZlcnkgbG9jYWwgZmlsZSAoZS5nLiA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIHBhcnQgb2YgYSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0YWtlcyBhIGNoZWNrc3VtCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmaWxlIGZvciB0aGUgcmVjaXBlIGFuZCBpbnNlcnRzIHRoZSBjaGVja3N1bSBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBzaWduYXR1cmUgZm9yIHRoZSA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgYW55IGxvY2FsIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIGFuZCBhbGwgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBkZXBlbmQgb24gaXQgYXJlIHJlLWV4ZWN1dGVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBldmVyeXRoaW5nIGlzIGFjY29tcGxpc2hlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaGFzIGEgZGVmaW5lZCBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgQnVpbGQgRGlyZWN0b3J5LAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtYnVpbGQnPjxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVW5wYWNrZWQgc291cmNlIGZpbGVzIGFyZSBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBoYXMgYW4gYXJlYSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IHdoZXJlIHRoZQorICAgICAgICAgICAgICAgIHVucGFja2VkIHNvdXJjZSBjb2RlIHJlc2lkZXMuCisgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhhdCBkaXJlY3RvcnkgZm9yIGFueSBnaXZlbiByZWNpcGUgaXMgZGVmaW5lZCBmcm9tCisgICAgICAgICAgICAgICAgc2V2ZXJhbCBkaWZmZXJlbnQgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgdGhlc2UgZGlyZWN0b3JpZXMKKyAgICAgICAgICAgICAgICBieSBsb29raW5nIGF0IHRoZSBmaWd1cmU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgZGlyZWN0b3J5IHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtcyBhbGwgaXRzIHdvcmsgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBidWlsdCBwYWNrYWdlIG9yIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX09TJz48ZmlsZW5hbWU+VEFSR0VUX09TPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgYnVpbHQgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHJlY2lwZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHdpdGhpbiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgc3BlY2lmaWMgcGFja2FnZSBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSB1bnBhY2tlZCBzb3VyY2UgZmlsZXMgZm9yIGEgZ2l2ZW4gcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5QYXRjaGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2Ugc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQsIEJpdEJha2UgbG9jYXRlcworICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIHNvdXJjZSBmaWxlczoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGF0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2sgcHJvY2Vzc2VzIHJlY2lwZXMgYnkKKyAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBsb2NhdGUgYXBwbGljYWJsZSBwYXRjaCBmaWxlcywgd2hpY2ggYnkgZGVmYXVsdAorICAgICAgICAgICAgICAgIGFyZSA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouZGlmZjwvZmlsZW5hbWU+IGZpbGVzLCBvciBhbnkgZmlsZSBpZgorICAgICAgICAgICAgICAgICJhcHBseT15ZXMiIGlzIHNwZWNpZmllZCBmb3IgdGhlIGZpbGUgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGZpbmRzIGFuZCBhcHBsaWVzIG11bHRpcGxlIHBhdGNoZXMgZm9yIGEgc2luZ2xlIHJlY2lwZQorICAgICAgICAgICAgICAgIGluIHRoZSBvcmRlciBpbiB3aGljaCBpdCBmaW5kcyB0aGUgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICBQYXRjaGVzIGFyZSBhcHBsaWVkIHRvIHRoZSByZWNpcGUncyBzb3VyY2UgZmlsZXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gZGlyZWN0b3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBhcmUKKyAgICAgICAgICAgICAgICBjcmVhdGVkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPlNvdXJjZSBGZXRjaGluZzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmF0aW9uLWFuZC1jb21waWxhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb24gYW5kIENvbXBpbGF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWZ0ZXIgc291cmNlIGNvZGUgaXMgcGF0Y2hlZCwgQml0QmFrZSBleGVjdXRlcyB0YXNrcyB0aGF0CisgICAgICAgICAgICAgICAgY29uZmlndXJlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZToKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgY29uc2lzdHMgb2YgdGhyZWUgdGFza3M6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIHNldHMgdXAgdGhlIHR3byBzeXNyb290cyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3RzIGNvbnRhaW4gdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBvZiB0aGUgcmVjaXBlcyBvbiB3aGljaCB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nIHRoZSB0YXNrcyBkZXBlbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBzeXNyb290IGV4aXN0cyBmb3IgYm90aCB0aGUgdGFyZ2V0IGFuZCBmb3IgdGhlIG5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMsIHdoaWNoIHJ1biBvbiB0aGUgaG9zdCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb25maWd1cmVzIHRoZSBzb3VyY2UgYnkgZW5hYmxpbmcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgYW55IGJ1aWxkLXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIGNhbiBjb21lIGZyb20gdGhlIHJlY2lwZSBpdHNlbGYgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZnJvbSBhbiBpbmhlcml0ZWQgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBzb2Z0d2FyZSBpdHNlbGYgbWlnaHQgY29uZmlndXJlIGl0c2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgZm9yIHdoaWNoIGl0IGlzIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgY29uZmlndXJhdGlvbnMgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYXJlIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzb3VyY2UgY29kZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0IGJ5IHRoZSByZWNpcGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIHdvcmtzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjbGFzcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGEgY29uZmlndXJhdGlvbiB0YXNrIGhhcyBiZWVuIHNhdGlzZmllZCwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXMgdGhlIHNvdXJjZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGF0aW9uIG9jY3VycyBpbiB0aGUgZGlyZWN0b3J5IHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IHRoZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcywgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQsIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBjb21waWxhdGlvbiBpcyBkb25lLCBCaXRCYWtlIGV4ZWN1dGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvcGllcyBmaWxlcyBmcm9tIHRoZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHBsYWNlcyB0aGVtIGluIGEgaG9sZGluZyBhcmVhIHBvaW50ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwYWNrYWdlLXNwbGl0dGluZy1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgU3BsaXR0aW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWZ0ZXIgc291cmNlIGNvZGUgaXMgY29uZmlndXJlZCBhbmQgY29tcGlsZWQsIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYW5hbHl6ZXMKKyAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cyBhbmQgc3BsaXRzIHRoZSBvdXRwdXQgaW50byBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjdpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrcyBjb21iaW5lIHRvIGFuYWx5emUKKyAgICAgICAgICAgICAgICB0aGUgZmlsZXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGFuZCBzcGxpdCB0aGVtIGludG8gc3Vic2V0cyBiYXNlZCBvbiBhdmFpbGFibGUgcGFja2FnZXMgYW5kCisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIGFuYWx5emluZyBwcm9jZXNzIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgYXMgd2VsbCBhcyBvdGhlcgorICAgICAgICAgICAgICAgIGl0ZW1zOiBzcGxpdHRpbmcgb3V0IGRlYnVnZ2luZyBzeW1ib2xzLAorICAgICAgICAgICAgICAgIGxvb2tpbmcgYXQgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMsCisgICAgICAgICAgICAgICAgYW5kIGxvb2tpbmcgYXQgcGFja2FnZSByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPiB0YXNrIGNyZWF0ZXMgcGFja2FnZQorICAgICAgICAgICAgICAgIG1ldGFkYXRhIGJhc2VkIG9uIHRoZSBhbmFseXNpcyBzdWNoIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZ2VuZXJhdGUgdGhlIGZpbmFsIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIFdvcmtpbmcsIHN0YWdlZCwgYW5kIGludGVybWVkaWF0ZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcworICAgICAgICAgICAgICAgIGFuZCBwYWNrYWdlIHNwbGl0dGluZyBwcm9jZXNzIHVzZSB0aGVzZSBhcmVhczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0QnPjxmaWxlbmFtZT5QS0dEPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZm9yIHBhY2thZ2VzIGJlZm9yZSB0aGV5IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dEQVRBX0RJUic+PGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgc2hhcmVkLCBnbG9iYWwtc3RhdGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIGR1cmluZyB0aGUgcGFja2FnaW5nIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dERVNUV09SSyc+PGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgdGVtcG9yYXJ5IHdvcmsgYXJlYSB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREVTVCc+PGZpbGVuYW1lPlBLR0RFU1Q8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBhcmVudCBkaXJlY3RvcnkgZm9yIHBhY2thZ2VzIGFmdGVyIHRoZXkgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBzcGxpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluZXMgdGhlIGZpbGVzIHRoYXQgZ28gaW50byBlYWNoIHBhY2thZ2UgaW4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBkZXRhaWxzIG9uIGhvdyB0aGlzIGlzIGFjY29tcGxpc2hlZCwgeW91IGNhbgorICAgICAgICAgICAgICAgIGxvb2sgYXQgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHBhY2thZ2VzIGJlaW5nIGNyZWF0ZWQgKFJQTSwgREVCLCBvcgorICAgICAgICAgICAgICAgIElQSyksIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgIGNyZWF0ZXMgdGhlIGFjdHVhbCBwYWNrYWdlcyBhbmQgcGxhY2VzIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkIGFyZWEsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7VE1QRElSfS9kZXBsb3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlsIG9uIHRoYXQgcGFydCBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgY3JlYXRpbmcgZmVlZHMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS8qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIHN1Y2ggZmVlZHMgdXN1YWxseSByZXF1aXJlcyBzb21lIGtpbmQgb2YgZmVlZAorICAgICAgICAgICAgICAgICAgICBtYWludGVuYW5jZSBtZWNoYW5pc20gdGhhdCB3b3VsZCB1cGxvYWQgdGhlIG5ldyBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBpbnRvIGFuIG9mZmljaWFsIHBhY2thZ2UgZmVlZCAoZS5nLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgw4VuZ3N0csO2bSBkaXN0cmlidXRpb24pLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaGlnaGx5IGRpc3RyaWJ1dGlvbi1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyBpcyBub3QgcHJvdmlkZWQgb3V0IG9mIHRoZSBib3guCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5JbWFnZSBHZW5lcmF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSBwYWNrYWdlcyBhcmUgc3BsaXQgYW5kIHN0b3JlZCBpbiB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLAorICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUKKyAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gaW1hZ2U6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGNvbnNpc3RzIG9mIHNldmVyYWwgc3RhZ2VzIGFuZAorICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gc2V2ZXJhbCB0YXNrcyBhbmQgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGNyZWF0ZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSAoZmlsZSBhbmQgZGlyZWN0b3J5IHN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBmb3IgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgVGhpcyB0YXNrIHVzZXMgc2V2ZXJhbCBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0CisgICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgdG8gYWN0dWFsbHkgaW5zdGFsbDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3V0IHRoZSBiYXNlIHNldCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9FWENMVURFJz48ZmlsZW5hbWU+UEFDS0FHRV9FWENMVURFPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHBhY2thZ2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgTW9zdCBvZiB0aGVzZSBmZWF0dXJlcyBtYXAgdG8gYWRkaXRpb25hbCBwYWNrYWdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhY2thZ2UgYmFja2VuZCB0byB1c2UgYW5kIGNvbnNlcXVlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgaGVscHMgZGV0ZXJtaW5lIHdoZXJlIHRvIGxvY2F0ZSBwYWNrYWdlcyB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIEZlZWRzIGFyZWEuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTElOR1VBUyc+PGZpbGVuYW1lPklNQUdFX0xJTkdVQVM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIHRoZSBsYW5ndWFnZShzKSBmb3Igd2hpY2ggYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugc3VwcG9ydCBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbnN0YWxsYXRpb24gaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlMnPjxmaWxlbmFtZT5JTUFHRV9ST09URlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0gdW5kZXIgY29uc3RydWN0aW9uIGFuZAorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gdmFyaWFibGUgcHJvdmlkaW5nIHRoZQorICAgICAgICAgICAgICAgIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgdG8gaW5zdGFsbCwgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gaXMKKyAgICAgICAgICAgICAgICBjcmVhdGVkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQYWNrYWdlIGluc3RhbGxhdGlvbiBpcyB1bmRlciBjb250cm9sIG9mIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAoZS5nLiBkbmYvcnBtLCBvcGtnLCBvciBhcHQvZHBrZykgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yCisgICAgICAgICAgICAgICAgbm90IHBhY2thZ2UgbWFuYWdlbWVudCBpcyBlbmFibGVkIGZvciB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3MsIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBub3QKKyAgICAgICAgICAgICAgICBlbmFibGVkIGZvciB0aGUgdGFyZ2V0LCB0aGUgcGFja2FnZSBtYW5hZ2VyJ3MgZGF0YSBmaWxlcworICAgICAgICAgICAgICAgIGFyZSBkZWxldGVkIGZyb20gdGhlIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBmaW5hbCBzdGFnZSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiwgcG9zdGluc3RhbGwKKyAgICAgICAgICAgICAgICBzY3JpcHRzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHBhY2thZ2VzIGFyZSBydW4uCisgICAgICAgICAgICAgICAgQW55IHNjcmlwdHMgdGhhdCBmYWlsIHRvIHJ1bgorICAgICAgICAgICAgICAgIG9uIHRoZSBidWlsZCBob3N0IGFyZSBydW4gb24gdGhlIHRhcmdldCB3aGVuIHRoZSB0YXJnZXQgc3lzdGVtCisgICAgICAgICAgICAgICAgaXMgZmlyc3QgYm9vdGVkLgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+cmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbTwvdWxpbms+LAorICAgICAgICAgICAgICAgIGFsbCB0aGUgcG9zdCBpbnN0YWxsYXRpb24gc2NyaXB0cyBtdXN0IHN1Y2NlZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIHBhY2thZ2UgaW5zdGFsbGF0aW9uIHBoYXNlIHNpbmNlIHRoZSByb290IGZpbGVzeXN0ZW0gaXMKKyAgICAgICAgICAgICAgICByZWFkLW9ubHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZXMgb2YgdGhlIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgaGFuZGxlIHBvc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICBQb3N0IHByb2Nlc3NpbmcgaW5jbHVkZXMgY3JlYXRpb24gb2YgYSBtYW5pZmVzdCBmaWxlIGFuZAorICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbnMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlICg8ZmlsZW5hbWU+Lm1hbmlmZXN0PC9maWxlbmFtZT4pIHJlc2lkZXMKKyAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgbGlzdHMgb3V0LCBsaW5lLWJ5LWxpbmUsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgaXMgdXNlZnVsIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY2xhc3MsIGZvciBleGFtcGxlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcnVuCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9NQU5JRkVTVCc+PGZpbGVuYW1lPklNQUdFX01BTklGRVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9wdGltaXppbmcgcHJvY2Vzc2VzIHJ1biBhY3Jvc3MgdGhlIGltYWdlIGluY2x1ZGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWtsaWJzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5wcmVsaW5rPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBwb3N0LXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWtsaWJzPC9maWxlbmFtZT4gcHJvY2VzcyBvcHRpbWl6ZXMgdGhlIHNpemUKKyAgICAgICAgICAgICAgICBvZiB0aGUgbGlicmFyaWVzLCB3aGlsZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBkeW5hbWljCisgICAgICAgICAgICAgICAgbGlua2luZyBvZiBzaGFyZWQgbGlicmFyaWVzIHRvIHJlZHVjZSBzdGFydCB1cCB0aW1lIG9mCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgYnVpbHQsIHByb2Nlc3NpbmcgYmVnaW5zIG9uCisgICAgICAgICAgICAgICAgdGhlIGltYWdlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWltYWdlJz48ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gcnVucyBhbnkgcHJlLXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZAorICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYmVmb3JlCisgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGR5bmFtaWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW1hZ2VfKjwvZmlsZW5hbWU+IHRhc2tzIGFzIG5lZWRlZCwgYmFzZWQKKyAgICAgICAgICAgICAgICBvbiB0aGUgaW1hZ2UgdHlwZXMgc3BlY2lmaWVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIHR1cm5zIGV2ZXJ5dGhpbmcgaW50byBhbiBpbWFnZSBmaWxlIG9yIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgaW1hZ2UgZmlsZXMgYW5kIGNvbXByZXNzZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0byByZWR1Y2UKKyAgICAgICAgICAgICAgICB0aGUgb3ZlcmFsbCBzaXplIG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICBUaGUgZm9ybWF0cyB1c2VkIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtIGRlcGVuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBhIGR5bmFtaWNhbGx5IGNyZWF0ZWQgdGFzayB3aGVuIGNyZWF0aW5nIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIGltYWdlIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gd291bGQgdGFrZSB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlXzxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT5bZGVwZW5kc10KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgU28sIGlmIHRoZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IGFzIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHdlcmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+LCB0aGUgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIHRhc2sKKyAgICAgICAgICAgICAgICB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9faW1hZ2VfZXh0NFtkZXBlbmRzXQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHRhc2sgaW52b2x2ZWQgaW4gaW1hZ2UgY3JlYXRpb24gaXMgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWltYWdlLWNvbXBsZXRlJz48ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb21wbGV0ZXMgdGhlIGltYWdlIGJ5IGFwcGx5aW5nIGFueSBpbWFnZQorICAgICAgICAgICAgICAgIHBvc3QgcHJvY2Vzc2luZyBhcyBkZWZpbmVkIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQKKyAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIGVudGlyZSBpbWFnZSBnZW5lcmF0aW9uIHByb2Nlc3MgaXMgcnVuIHVuZGVyIFBzZXVkby4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHVuZGVyIFBzZXVkbyBlbnN1cmVzIHRoYXQgdGhlIGZpbGVzIGluIHRoZSByb290CisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBoYXZlIGNvcnJlY3Qgb3duZXJzaGlwLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+U0RLIEdlbmVyYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gZ2VuZXJhdGUgdGhlCisgICAgICAgICAgICAgICAgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIGluc3RhbGxlciBzY3JpcHQgZm9yIGJvdGggdGhlCisgICAgICAgICAgICAgICAgc3RhbmRhcmQgYW5kIGV4dGVuc2libGUgU0RLczoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGFkdmFudGFnZXMgZ2FpbmVkIHdoZW4gYnVpbGRpbmcgYQorICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzaywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIG1hbnVhbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTGlrZSBpbWFnZSBnZW5lcmF0aW9uLCB0aGUgU0RLIHNjcmlwdCBwcm9jZXNzIGNvbnNpc3RzIG9mCisgICAgICAgICAgICAgICAgc2V2ZXJhbCBzdGFnZXMgYW5kIGRlcGVuZHMgb24gbWFueSB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2tzIHVzZSB0aGVzZQorICAgICAgICAgICAgICAgIGtleSB2YXJpYWJsZXMgdG8gaGVscCBjcmVhdGUgdGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8gYWN0dWFsbHkKKyAgICAgICAgICAgICAgICBpbnN0YWxsLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzIGxpc3RlZCBpbiB0aGUgZmlndXJlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQorICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsgYW5kIGhhbmRsZXMgdHdvIHBhcnRzOiBhIHRhcmdldCBwYXJ0IGFuZCBhCisgICAgICAgICAgICAgICAgaG9zdCBwYXJ0LgorICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgcGFydCBpcyB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQKKyAgICAgICAgICAgICAgICBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuCisgICAgICAgICAgICAgICAgVGhlIGhvc3QgcGFydCBpcyB0aGUgcGFydCBvZiB0aGUgU0RLIHRoYXQgcnVucyBvbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2sgaGVscHMgY3JlYXRlCisgICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLIGFuZCBoYW5kbGVzIGhvc3QgYW5kIHRhcmdldCBwYXJ0cworICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IHRoYW4gaXRzIGNvdW50ZXIgcGFydCBkb2VzIGZvciB0aGUgc3RhbmRhcmQgU0RLLgorICAgICAgICAgICAgICAgIEZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHRoZSB0YXNrIGVuY2Fwc3VsYXRlcyB0aGUgYnVpbGQgc3lzdGVtLAorICAgICAgICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIChob3N0IGFuZCB0YXJnZXQpIGZvciB0aGUgU0RLLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIFNESyBiZWluZyBjb25zdHJ1Y3RlZCwgdGhlCisgICAgICAgICAgICAgICAgdGFza3MgcGVyZm9ybSBzb21lIGNsZWFudXAgYWZ0ZXIgd2hpY2ggYSBjcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhbmQgYW55IG5lZWRlZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgVGhlIGZpbmFsIG91dHB1dCBpcyB0aGUgQ3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGF0aW9uIHNjcmlwdCAoPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUpLAorICAgICAgICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc3RhbXAtZmlsZXMtYW5kLXRoZS1yZXJ1bm5pbmctb2YtdGFza3MnPgorICAgICAgICAgICAgPHRpdGxlPlN0YW1wIEZpbGVzIGFuZCB0aGUgUmVydW5uaW5nIG9mIFRhc2tzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGVhY2ggdGFzayB0aGF0IGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksIEJpdEJha2Ugd3JpdGVzIGEKKyAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIGludG8gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YW1wIGZpbGUncyBmaWxlbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUCc+PGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUgZW5kIG9mIHRoZSBuYW1lIGNvbnNpc3RzIG9mIHRoZSB0YXNrJ3MgbmFtZQorICAgICAgICAgICAgICAgIGFuZCBjdXJyZW50CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNjaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtPC91bGluaz4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmFtaW5nIHNjaGVtZSBhc3N1bWVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0lHTkFUVVJFX0hBTkRMRVInPjxmaWxlbmFtZT5CQl9TSUdOQVRVUkVfSEFORExFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgIk9FQmFzaWNIYXNoIiwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0aGUgY2FzZSBpbgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50IE9wZW5FbWJlZGRlZC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0byBiZSByZXJ1biwgQml0QmFrZSBjaGVja3MgaWYgYQorICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUgd2l0aCBhIG1hdGNoaW5nIGlucHV0IGNoZWNrc3VtIGV4aXN0cyBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgSWYgc3VjaCBhIHN0YW1wIGZpbGUgZXhpc3RzLCB0aGUgdGFzaydzIG91dHB1dCBpcyBhc3N1bWVkIHRvCisgICAgICAgICAgICAgICAgZXhpc3QgYW5kIHN0aWxsIGJlIHZhbGlkLgorICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGUgdGFzayBpcyByZXJ1bi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHN0YW1wIG1lY2hhbmlzbSBpcyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIHN0YXRlIChzc3RhdGUpIGNhY2hlIG1lY2hhbmlzbSBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBhdm9pZHMgcmVydW5uaW5nIGFueSB0YXNrIHRoYXQgaGFzIGEgdmFsaWQKKyAgICAgICAgICAgICAgICAgICAgc3RhbXAgZmlsZSwgbm90IGp1c3QgdGFza3MgdGhhdCBjYW4gYmUgYWNjZWxlcmF0ZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICB0aGUgc3N0YXRlIGNhY2hlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SG93ZXZlciwgeW91IHNob3VsZCByZWFsaXplIHRoYXQgc3RhbXAgZmlsZXMgb25seQorICAgICAgICAgICAgICAgICAgICBzZXJ2ZSBhcyBhIG1hcmtlciB0aGF0IHNvbWUgd29yayBoYXMgYmVlbiBkb25lIGFuZCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZXNlIGZpbGVzIGRvIG5vdCByZWNvcmQgdGFzayBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgdGFzayBvdXRwdXQgd291bGQgdXN1YWxseSBiZSBzb21ld2hlcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiBzb21lIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPi4pCisgICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNzdGF0ZSBjYWNoZSBtZWNoYW5pc20gYWRkcyBpcyBhIHdheSB0byBjYWNoZSB0YXNrCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCB0aGF0IGNhbiB0aGVuIGJlIHNoYXJlZCBiZXR3ZWVuIGJ1aWxkIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFNpbmNlIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhIHN1YmRpcmVjdG9yeQorICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiwgcmVtb3ZpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gd2lsbCBhbHNvIHJlbW92ZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zIHRhc2tzIHdpbGwKKyAgICAgICAgICAgICAgICBwcm9wZXJseSBiZSByZXJ1biB0byByZXBvcHVsYXRlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgc29tZSB0YXNrIHRvIGFsd2F5cyBiZSBjb25zaWRlcmVkICJvdXQgb2YgZGF0ZSIsCisgICAgICAgICAgICAgICAgeW91IGNhbiBtYXJrIGl0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyZmxhZy4KKyAgICAgICAgICAgICAgICBJZiBzb21lIG90aGVyIHRhc2sgZGVwZW5kcyBvbiBzdWNoIGEgdGFzaywgdGhlbiB0aGF0IHRhc2sgd2lsbAorICAgICAgICAgICAgICAgIGFsc28gYWx3YXlzIGJlIGNvbnNpZGVyZWQgb3V0IG9mIGRhdGUsIHdoaWNoIG1pZ2h0IG5vdCBiZSB3aGF0CisgICAgICAgICAgICAgICAgeW91IHdhbnQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIGhvdyB0byB2aWV3IGluZm9ybWF0aW9uIGFib3V0IGEgdGFzaydzCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS12aWV3aW5nLXRhc2stdmFyaWFibGUtZGVwZW5kZW5jaWVzJz5WaWV3aW5nIFRhc2sgVmFyaWFibGUgRGVwZW5kZW5jaWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgPHRpdGxlPlNldHNjZW5lIFRhc2tzIGFuZCBTaGFyZWQgU3RhdGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gb2YgdGFza3Mgc28gZmFyIGFzc3VtZXMgdGhhdCBCaXRCYWtlIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgYnVpbGQgZXZlcnl0aGluZyBhbmQgdGhlcmUgYXJlIG5vIHByZWJ1aWx0IG9iamVjdHMgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBzdXBwb3J0IHNraXBwaW5nIHRhc2tzIGlmIHByZWJ1aWx0IG9iamVjdHMgYXJlCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIFRoZXNlIG9iamVjdHMgYXJlIHVzdWFsbHkgbWFkZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYQorICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyBhZmZlY3Rpbmcgc3N0YXRlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGlkZWEgb2YgYSBzZXRzY2VuZSB0YXNrIChpLmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5fc2V0c2NlbmU8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBpcyBhIHZlcnNpb24gb2YgdGhlIHRhc2sgd2hlcmUKKyAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGJ1aWxkaW5nIHNvbWV0aGluZywgQml0QmFrZSBjYW4gc2tpcCB0byB0aGUgZW5kCisgICAgICAgICAgICAgICAgcmVzdWx0IGFuZCBzaW1wbHkgcGxhY2UgYSBzZXQgb2YgZmlsZXMgaW50byBzcGVjaWZpYyBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgSW4gc29tZSBjYXNlcywgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIHNldHNjZW5lIHRhc2sgdmFyaWFudAorICAgICAgICAgICAgICAgIChlLmcuIGdlbmVyYXRpbmcgcGFja2FnZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFzaykuCisgICAgICAgICAgICAgICAgSW4gb3RoZXIgY2FzZXMsIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UsIChlLmcuIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2sgb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzaykgc2luY2UgdGhlIHdvcmsgaW52b2x2ZWQgd291bGQgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuCisgICAgICAgICAgICAgICAgdGhlIHVuZGVybHlpbmcgdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHRoZSBjb21tb24gdGFza3MgdGhhdCBoYXZlCisgICAgICAgICAgICAgICAgc2V0c2NlbmUgdmFyaWFudHMgYXJlIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWRlcGxveSc+PGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgTm90aWNlIHRoYXQgdGhlc2UgYXJlIG1vc3Qgb2YgdGhlIHRhc2tzIHdob3NlIG91dHB1dCBpcyBhbgorICAgICAgICAgICAgICAgIGVuZCByZXN1bHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBrbm93bGVkZ2Ugb2YgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICAgICAgICAgIGJldHdlZW4gdGhlc2UgdGFza3MgYW5kIG90aGVyIHRhc2tzIHRoYXQgcHJlY2VkZSB0aGVtLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBCaXRCYWtlIHJ1bnMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgIHNvbWV0aGluZywgdGhlcmUgaXMgbGl0dGxlIHBvaW50IGluIHJ1bm5pbmcgYW55IG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiBuZWVkcyB0byBiZSBydW4sCisgICAgICAgICAgICAgICAgQml0QmFrZSB3b3VsZCBuZWVkIHRvIHJ1biB0aG9zZSBvdGhlciB0YXNrcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQgYmVjb21lcyBtb3JlIGNvbXBsaWNhdGVkIGlmIGV2ZXJ5dGhpbmcgY2FuIGNvbWUgZnJvbSBhbgorICAgICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZSBiZWNhdXNlIHNvbWUgb2JqZWN0cyBhcmUgc2ltcGx5IG5vdCByZXF1aXJlZCBhdAorICAgICAgICAgICAgICAgIGFsbC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGRvIG5vdCBuZWVkIGEgY29tcGlsZXIgb3IgbmF0aXZlIHRvb2xzLCBzdWNoCisgICAgICAgICAgICAgICAgYXMgcXVpbHQsIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gY29tcGlsZSBvciBwYXRjaC4KKyAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFyZQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBmcm9tIHNzdGF0ZSwgQml0QmFrZSBkb2VzIG5vdCBuZWVkIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzayBkYXRhLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBoYW5kbGUgYWxsIHRoZXNlIGNvbXBsZXhpdGllcywgQml0QmFrZSBydW5zIGluIHR3byBwaGFzZXMuCisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGlzIHRoZSAic2V0c2NlbmUiIHN0YWdlLgorICAgICAgICAgICAgICAgIER1cmluZyB0aGlzIHN0YWdlLCBCaXRCYWtlIGZpcnN0IGNoZWNrcyB0aGUgc3N0YXRlIGNhY2hlIGZvcgorICAgICAgICAgICAgICAgIGFueSB0YXJnZXRzIGl0IGlzIHBsYW5uaW5nIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBhIGZhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgZXhpc3RzIHJhdGhlcgorICAgICAgICAgICAgICAgIHRoYW4gYSBjb21wbGV0ZSBkb3dubG9hZC4KKyAgICAgICAgICAgICAgICBJZiBub3RoaW5nIGV4aXN0cywgdGhlIHNlY29uZCBwaGFzZSwgd2hpY2ggaXMgdGhlIHNldHNjZW5lCisgICAgICAgICAgICAgICAgc3RhZ2UsIGNvbXBsZXRlcyBhbmQgdGhlIG1haW4gYnVpbGQgcHJvY2VlZHMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIG9iamVjdHMgYXJlIGZvdW5kIGluIHRoZSBzc3RhdGUgY2FjaGUsIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gd29ya3MgYmFja3dhcmRzIGZyb20gdGhlIGVuZCB0YXJnZXRzIHNwZWNpZmllZAorICAgICAgICAgICAgICAgIGJ5IHRoZSB1c2VyLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBhbiBpbWFnZSBpcyBiZWluZyBidWlsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBmaXJzdCBsb29rcyBmb3IgdGhlIHBhY2thZ2VzIG5lZWRlZCBmb3IgdGhhdCBpbWFnZSBhbmQKKyAgICAgICAgICAgICAgICB0aGUgdG9vbHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICBJZiB0aG9zZSBhcmUgYXZhaWxhYmxlLCB0aGUgY29tcGlsZXIgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tcGlsZXIgaXMgbm90IGV2ZW4gZG93bmxvYWRlZC4KKyAgICAgICAgICAgICAgICBJZiBzb21ldGhpbmcgd2FzIGZvdW5kIHRvIGJlIHVuYXZhaWxhYmxlLCBvciB0aGUgZG93bmxvYWQgb3IKKyAgICAgICAgICAgICAgICBzZXRzY2VuZSB0YXNrIGZhaWxzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0aGVuIHRyaWVzCisgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMsIHN1Y2ggYXMgdGhlIGNvbXBpbGVyLCBmcm9tIHRoZSBjYWNoZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGF2YWlsYWJpbGl0eSBvZiBvYmplY3RzIGluIHRoZSBzc3RhdGUgY2FjaGUgaXMgaGFuZGxlZCBieQorICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSENIRUNLX0ZVTkNUSU9OJz48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0aGUgb2JqZWN0cyB0aGF0IGFyZSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9TRVRTQ0VORV9ERVBWQUxJRCc+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX0RFUFZBTElEPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBmb2xsb3dlZCwgYW5kIHdoZXRoZXIgZm9yIGFueSBnaXZlbgorICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCB0aGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcGFzc2VkLgorICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgVHJ1ZSBvciBGYWxzZSB2YWx1ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgPHRpdGxlPkltYWdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgaW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICBhcmUgY29tcHJlc3NlZCBmb3JtcyBvZiB0aGUKKyAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGFyZSByZWFkeSB0byBib290IG9uIGEgdGFyZ2V0IGRldmljZS4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VlIGZyb20gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4KKyAgICAgICAgICAgIHRoYXQgQml0QmFrZSBvdXRwdXQsIGluIHBhcnQsIGNvbnNpc3RzIG9mIGltYWdlcy4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBpcyBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGlzIG91dHB1dDoKKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNS41aW4iIGRlcHRoPSI1LjVpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBleGFtcGxlIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1pbWFnZXMnPkltYWdlczwvbGluaz4iIGNoYXB0ZXIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEltYWdlcyBhcmUgd3JpdHRlbiBvdXQgdG8gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgIGluc2lkZSB0aGUgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4vPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZvbGRlciBhcyBzaG93biBpbiB0aGUgZmlndXJlLgorICAgICAgICAgICAgVGhpcyBmb2xkZXIgY29udGFpbnMgYW55IGZpbGVzIGV4cGVjdGVkIHRvIGJlIGxvYWRlZCBvbiB0aGUKKyAgICAgICAgICAgIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LAorICAgICAgICAgICAgd2hpbGUgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JTUFHRSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSU1BR0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaW1hZ2VzIGZvcgorICAgICAgICAgICAgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+a2VybmVsLWltYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgYmluYXJ5IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFVFlQRSc+PGZpbGVuYW1lPktFUk5FTF9JTUFHRVRZUEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0dGluZyBkZXRlcm1pbmVzIHRoZSBuYW1pbmcgc2NoZW1lIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGF0IHZhcmlhYmxlLCB0aGUgZmlsZSBjb3VsZCBiZWdpbiB3aXRoCisgICAgICAgICAgICAgICAgICAgIGEgdmFyaWV0eSBvZiBuYW1pbmcgc3RyaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgaW1hZ2UgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnJvb3QtZmlsZXN5c3RlbS1pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZSB0YXJnZXQgZGV2aWNlIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmV4dDM8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+Ki5iejI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcykuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0dGluZyBkZXRlcm1pbmVzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcm9vdCBmaWxlc3lzdGVtcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+a2VybmVsLW1vZHVsZXM8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUYXJiYWxscyB0aGF0IGNvbnRhaW4gYWxsIHRoZSBtb2R1bGVzIGJ1aWx0IGZvciB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBLZXJuZWwgbW9kdWxlIHRhcmJhbGxzIGV4aXN0IGZvciBsZWdhY3kgcHVycG9zZXMgYW5kCisgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBzdXBwcmVzc2VkIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NT0RVTEVfVEFSQkFMTF9ERVBMT1knPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9ERVBMT1k8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjAiLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBrZXJuZWwgbW9kdWxlIHRhcmJhbGxzCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ib290bG9hZGVyczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEJvb3Rsb2FkZXJzIHN1cHBvcnRpbmcgdGhlIGltYWdlLCBpZiBhcHBsaWNhYmxlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgYm9vdGxvYWRlcnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnN5bWxpbmtzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmb2xkZXIgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgYSBzeW1ib2xpYyBsaW5rIHRoYXQgcG9pbnRzIHRvIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgbGlua3MgbWlnaHQgYmUgdXNlZnVsIGZvciBleHRlcm5hbCBzY3JpcHRzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGVhY2ggZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZGstZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgPHRpdGxlPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPiwKKyAgICAgICAgICAgIHRoZSBvdXRwdXQgbGFiZWxlZCAiQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLIiByZXByZXNlbnRzIGFuCisgICAgICAgICAgICBTREsuCisgICAgICAgICAgICBUaGUgU0RLIGdlbmVyYXRpb24gcHJvY2VzcyBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHlvdSBidWlsZAorICAgICAgICAgICAgYSBzdGFuZGFyZCBTREsKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3NkazwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPikKKyAgICAgICAgICAgIG9yIGFuIGV4dGVuc2libGUgU0RLCisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGtfZXh0PC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBpcyBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBvdXRwdXQ6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjlpbiIgZGVwdGg9IjcuMjVpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHNwZWNpZmljIGZvcm0gb2YgdGhpcyBvdXRwdXQgaXMgYSBzZWxmLWV4dHJhY3RpbmcKKyAgICAgICAgICAgIFNESyBpbnN0YWxsZXIgKDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4pIHRoYXQsIHdoZW4gcnVuLAorICAgICAgICAgICAgaW5zdGFsbHMgdGhlIFNESywgd2hpY2ggY29uc2lzdHMgb2YgYSBjcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgdG9vbGNoYWluLCBhIHNldCBvZiBsaWJyYXJpZXMgYW5kIGhlYWRlcnMsIGFuZCBhbiBTREsKKyAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyBpbnN0YWxsZXIgZXNzZW50aWFsbHkgc2V0cyB1cCB5b3VyCisgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGNyb3NzLXRvb2xjaGFpbiBhcyB0aGUgImhvc3QiCisgICAgICAgICAgICBwYXJ0IGJlY2F1c2UgaXQgcnVucyBvbiB0aGUgU0RLIG1hY2hpbmUuCisgICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBsaWJyYXJpZXMgYW5kIGhlYWRlcnMgYXMgdGhlICJ0YXJnZXQiCisgICAgICAgICAgICBwYXJ0IGJlY2F1c2UgdGhleSBhcmUgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBUaGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGlzIGFkZGVkIHNvIHRoYXQgeW91IGNhbiBpbml0aWFsaXplCisgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIHVzaW5nIHRoZSB0b29scy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgc2V2ZXJhbCBtZXRob2RzIGJ5IHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgc2V0IHVwIHRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIG1ldGhvZHMgaW5jbHVkZSBkb3dubG9hZGluZyBwcmUtYnVpbHQgU0RLIGluc3RhbGxlcnMKKyAgICAgICAgICAgICAgICAgICAgb3IgYnVpbGRpbmcgYW5kIGluc3RhbGxpbmcgeW91ciBvd24gU0RLIGluc3RhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIGJ1aWx0LCB0aGUgU0RLIGluc3RhbGxlcnMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS9zZGs8L2ZpbGVuYW1lPiBmb2xkZXIgaW5zaWRlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICBhcyBzaG93biBpbiB0aGUgZmlndXJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIFNESywgc2V2ZXJhbCB2YXJpYWJsZXMgZXhpc3QgdGhhdCBoZWxwCisgICAgICAgICAgICBjb25maWd1cmUgdGhlc2UgZmlsZXMuCisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYSBzdGFuZGFyZAorICAgICAgICAgICAgU0RLOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgb24gd2hpY2ggdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzIGFyZSBydW4gdG8KKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHBhY2thZ2VzIGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+U0RLSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBmZWF0dXJlcyB0byBpbmNsdWRlIGluIHRoZSAidGFyZ2V0IiBwYXJ0CisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVE9PTENIQUlOX0hPU1RfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9IT1NUX1RBU0s8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBTREsgKGkuZS4gdGhlIHBhcnQgdGhhdCBydW5zIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3NkayA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBjcmVhdGUgdGhlIFNESywgYSBzZXQgb2YgZGVmYXVsdCBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBhcHBseS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbGxvd3MgeW91IHRvIGFkZCBtb3JlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9UQVJHRVRfVEFTSzwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSB0YXJnZXQgcGFydAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLIChpLmUuIHRoZSBwYXJ0IGJ1aWx0IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtQQVRIJz48ZmlsZW5hbWU+U0RLUEFUSDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgZGVmYXVsdCBTREsgaW5zdGFsbGF0aW9uIHBhdGggb2ZmZXJlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFRoaXMgbmV4dCBsaXN0LCBzaG93cyB0aGUgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhbiBleHRlbnNpYmxlCisgICAgICAgICAgICBTREs6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfRVhUX1RZUEUnPjxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYXJlIGNvcGllZAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYWxsIHJlcXVpcmVkIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYXJlIGNvcGllZAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOQ0xVREVfUEtHREFUQSc+PGZpbGVuYW1lPlNES19JTkNMVURFX1BLR0RBVEE8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBwYWNrYWdlZGF0YSB3aWxsIGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESyBmb3IgYWxsIHJlY2lwZXMgaW4gdGhlICJ3b3JsZCIgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkNMVURFX1RPT0xDSEFJTic+PGZpbGVuYW1lPlNES19JTkNMVURFX1RPT0xDSEFJTjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRoZSB0b29sY2hhaW4gd2lsbCBiZSBpbmNsdWRlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB2YXJpYWJsZXMgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIG5vdCBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5IRVJJVF9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfSU5IRVJJVF9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRvIHJlbW92ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5IRVJJVCc+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgZ2xvYmFsbHkgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbAppbmRleCA5OWQ1YTUyLi5lMjliZjg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBhcHBseSB0aGUgY29tbWFuZCB3aGVuIHVzaW5nIHRoZQogICAgICAgICBleHRlbnNpYmxlIFNESywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dGVuc2libGUnPlVzaW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncwotICAgICAgICBHdWlkZS4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtZ2V0dGluZy1oZWxwJz4KQEAgLTM1LDQ1ICszNSw1OSBAQAogICAgICAgICAgICAgdGhlIGNvbW1hbmRzOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgLS1oZWxwCi0gICAgIHVzYWdlOiBkZXZ0b29sIFstLWJhc2VwYXRoIEJBU0VQQVRIXSBbLS1iYnBhdGggQkJQQVRIXSBbLWRdIFstcV0KLSAgICAgICAgICAgICAgICAgICAgWy0tY29sb3IgQ09MT1JdIFstaF0KLSAgICAgICAgICAgICAgICAgICAgJmx0O3N1YmNvbW1hbmQmZ3Q7IC4uLgorICAgICB1c2FnZTogZGV2dG9vbCBhZGQgWy1oXSBbLS1zYW1lLWRpciB8IC0tbm8tc2FtZS1kaXJdIFstLWZldGNoIFVSSV0KKyAgICAgICAgICAgICAgICAgICAgICAgIFstLWZldGNoLWRldl0gWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1zcmNyZXYgU1JDUkVWIHwgLS1hdXRvcmV2XSBbLS1zcmNicmFuY2ggU1JDQlJBTkNIXQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tYmluYXJ5XSBbLS1hbHNvLW5hdGl2ZV0gWy0tc3JjLXN1YmRpciBTVUJESVJdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1taXJyb3JzXSBbLS1wcm92aWRlcyBQUk9WSURFU10KKyAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVuYW1lXSBbc3JjdHJlZV0gW2ZldGNodXJpXQogCi0gICAgIE9wZW5FbWJlZGRlZCBkZXZlbG9wbWVudCB0b29sCisgICAgIEFkZHMgYSBuZXcgcmVjaXBlIHRvIHRoZSB3b3Jrc3BhY2UgdG8gYnVpbGQgYSBzcGVjaWZpZWQgc291cmNlIHRyZWUuIENhbgorICAgICBvcHRpb25hbGx5IGZldGNoIGEgcmVtb3RlIFVSSSBhbmQgdW5wYWNrIGl0IHRvIGNyZWF0ZSB0aGUgc291cmNlIHRyZWUuCisKKyAgICAgYXJndW1lbnRzOgorICAgICAgIHJlY2lwZW5hbWUgICAgICAgICAgICBOYW1lIGZvciBuZXcgcmVjaXBlIHRvIGFkZCAoanVzdCBuYW1lIC0gbm8gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBvciBleHRlbnNpb24pLiBJZiBub3Qgc3BlY2lmaWVkLCB3aWxsIGF0dGVtcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXV0by1kZXRlY3QgaXQuCisgICAgICAgc3JjdHJlZSAgICAgICAgICAgICAgIFBhdGggdG8gZXh0ZXJuYWwgc291cmNlIHRyZWUuIElmIG5vdCBzcGVjaWZpZWQsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vcG9reS9idWlsZC93b3Jrc3BhY2Uvc291cmNlcyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQuCisgICAgICAgZmV0Y2h1cmkgICAgICAgICAgICAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBleHRyYWN0IGl0IHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUKIAogICAgICBvcHRpb25zOgotICAgICAgIC0tYmFzZXBhdGggQkFTRVBBVEggIEJhc2UgZGlyZWN0b3J5IG9mIFNESyAvIGJ1aWxkIGRpcmVjdG9yeQotICAgICAgIC0tYmJwYXRoIEJCUEFUSCAgICAgIEV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgQkJQQVRILCByYXRoZXIgdGhhbiBnZXR0aW5nIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgbWV0YWRhdGEKLSAgICAgICAtZCwgLS1kZWJ1ZyAgICAgICAgICBFbmFibGUgZGVidWcgb3V0cHV0Ci0gICAgICAgLXEsIC0tcXVpZXQgICAgICAgICAgUHJpbnQgb25seSBlcnJvcnMKLSAgICAgICAtLWNvbG9yIENPTE9SICAgICAgICBDb2xvcml6ZSBvdXRwdXQgKHdoZXJlIENPTE9SIGlzIGF1dG8sIGFsd2F5cywgbmV2ZXIpCi0gICAgICAgLWgsIC0taGVscCAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotCi0gICAgIHN1YmNvbW1hbmRzOgotICAgICAgIEJlZ2lubmluZyB3b3JrIG9uIGEgcmVjaXBlOgotICAgICAgICAgYWRkICAgICAgICAgICAgICAgICAgQWRkIGEgbmV3IHJlY2lwZQotICAgICAgICAgbW9kaWZ5ICAgICAgICAgICAgICAgTW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZQotICAgICAgICAgdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSBhbiBleGlzdGluZyByZWNpcGUKLSAgICAgICBHZXR0aW5nIGluZm9ybWF0aW9uOgotICAgICAgICAgc3RhdHVzICAgICAgICAgICAgICAgU2hvdyB3b3Jrc3BhY2Ugc3RhdHVzCi0gICAgICAgICBzZWFyY2ggICAgICAgICAgICAgICBTZWFyY2ggYXZhaWxhYmxlIHJlY2lwZXMKLSAgICAgICBXb3JraW5nIG9uIGEgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2U6Ci0gICAgICAgICBlZGl0LXJlY2lwZSAgICAgICAgICBFZGl0IGEgcmVjaXBlIGZpbGUgaW4geW91ciB3b3Jrc3BhY2UKLSAgICAgICAgIGNvbmZpZ3VyZS1oZWxwICAgICAgIEdldCBoZWxwIG9uIGNvbmZpZ3VyZSBzY3JpcHQgb3B0aW9ucwotICAgICAgICAgYnVpbGQgICAgICAgICAgICAgICAgQnVpbGQgYSByZWNpcGUKLSAgICAgICAgIHVwZGF0ZS1yZWNpcGUgICAgICAgIEFwcGx5IGNoYW5nZXMgZnJvbSBleHRlcm5hbCBzb3VyY2UgdHJlZSB0byByZWNpcGUKLSAgICAgICAgIHJlc2V0ICAgICAgICAgICAgICAgIFJlbW92ZSBhIHJlY2lwZSBmcm9tIHlvdXIgd29ya3NwYWNlCi0gICAgICAgICBmaW5pc2ggICAgICAgICAgICAgICBGaW5pc2ggd29ya2luZyBvbiBhIHJlY2lwZSBpbiB5b3VyIHdvcmtzcGFjZQotICAgICAgIFRlc3RpbmcgY2hhbmdlcyBvbiB0YXJnZXQ6Ci0gICAgICAgICBkZXBsb3ktdGFyZ2V0ICAgICAgICBEZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyB0byBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICB1bmRlcGxveS10YXJnZXQgICAgICBVbmRlcGxveSByZWNpcGUgb3V0cHV0IGZpbGVzIGluIGxpdmUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgIGJ1aWxkLWltYWdlICAgICAgICAgIEJ1aWxkIGltYWdlIGluY2x1ZGluZyB3b3Jrc3BhY2UgcmVjaXBlIHBhY2thZ2VzCi0gICAgICAgQWR2YW5jZWQ6Ci0gICAgICAgICBjcmVhdGUtd29ya3NwYWNlICAgICBTZXQgdXAgd29ya3NwYWNlIGluIGFuIGFsdGVybmF0aXZlIGxvY2F0aW9uCi0gICAgICAgICBleHRyYWN0ICAgICAgICAgICAgICBFeHRyYWN0IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZQotICAgICAgICAgc3luYyAgICAgICAgICAgICAgICAgU3luY2hyb25pemUgdGhlIHNvdXJjZSB0cmVlIGZvciBhbiBleGlzdGluZyByZWNpcGUKLSAgICAgVXNlIGRldnRvb2wgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKKyAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgIC0tc2FtZS1kaXIsIC1zICAgICAgICBCdWlsZCBpbiBzYW1lIGRpcmVjdG9yeSBhcyBzb3VyY2UKKyAgICAgICAtLW5vLXNhbWUtZGlyICAgICAgICAgRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAtLWZldGNoIFVSSSwgLWYgVVJJICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBpbnN0ZWFkKQorICAgICAgIC0tZmV0Y2gtZGV2ICAgICAgICAgICBGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcworICAgICAgIC0tdmVyc2lvbiBWRVJTSU9OLCAtViBWRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKQorICAgICAgIC0tbm8tZ2l0LCAtZyAgICAgICAgICBJZiBmZXRjaGluZyBzb3VyY2UsIGRvIG5vdCBzZXQgdXAgc291cmNlIHRyZWUgYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXQgcmVwb3NpdG9yeQorICAgICAgIC0tc3JjcmV2IFNSQ1JFViwgLVMgU1JDUkVWCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpCisgICAgICAgLS1hdXRvcmV2LCAtYSAgICAgICAgIFdoZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkCisgICAgICAgLS1zcmNicmFuY2ggU1JDQlJBTkNILCAtQiBTUkNCUkFOQ0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmNoIGluIHNvdXJjZSByZXBvc2l0b3J5IGlmIGZldGNoaW5nIGZyb20gYW4gU0NNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IG1hc3RlcikKKyAgICAgICAtLWJpbmFyeSwgLWIgICAgICAgICAgVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUpLiBVc2VmdWwgd2l0aCBiaW5hcnkgcGFja2FnZXMgZS5nLiBSUE1zLgorICAgICAgIC0tYWxzby1uYXRpdmUgICAgICAgICBBbHNvIGFkZCBuYXRpdmUgdmFyaWFudCAoaS5lLiBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBmb3IgdGhlIGJ1aWxkIGhvc3QgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUpCisgICAgICAgLS1zcmMtc3ViZGlyIFNVQkRJUiAgIFNwZWNpZnkgc3ViZGlyZWN0b3J5IHdpdGhpbiBzb3VyY2UgdHJlZSB0byB1c2UKKyAgICAgICAtLW1pcnJvcnMgICAgICAgICAgICAgRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoaW5nIChkaXNhYmxlIGJ5IGRlZmF1bHQpLgorICAgICAgIC0tcHJvdmlkZXMgUFJPVklERVMsIC1wIFBST1ZJREVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gYWxpYXMgZm9yIHRoZSBpdGVtIHByb3ZpZGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuIEUuZy4gdmlydHVhbC9saWJnbAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAKQEAgLTE5NCw5ICsyMDgsOSBAQAogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYW5kIGFkZHMgYSBuZXcgcmVjaXBlIG5hbWVkCiAgICAgICAgICAgICA8ZmlsZW5hbWU+amFja3NvbjwvZmlsZW5hbWU+IHRvIGEgd29ya3NwYWNlIGxheWVyIHRoZSB0b29sIGNyZWF0ZXMuCiAgICAgICAgICAgICBUaGUgc291cmNlIGNvZGUgYnVpbHQgYnkgdGhlIHJlY2lwZXMgcmVzaWRlcyBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3NvdXJjZXMvamFja3NvbjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uPC9maWxlbmFtZT46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBhZGQgamFja3NvbiAvaG9tZS9zY290dHJpZi9zb3VyY2VzL2phY2tzb24KKyAgICAgJCBkZXZ0b29sIGFkZCBqYWNrc29uIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KIApAQCAtMjE0LDE4ICsyMjgsNTIgQEAKICAgICAgICAgICAgIGFwcGVuZCBmaWxlcywgYW5kIHNvdXJjZSBmaWxlcyBpbnRvIHRoZSBleGlzdGluZyB3b3Jrc3BhY2UgbGF5ZXIuCiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaXMgY3JlYXRlZCB0byBwb2ludAogICAgICAgICAgICAgdG8gdGhlIGV4dGVybmFsIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91ciByZWNpcGUgaGFzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGRlZmluZWQsIHlvdSBtdXN0IGJlIHN1cmUKKyAgICAgICAgICAgICAgICB0aGF0IHRoZXNlIHBhY2thZ2VzIGV4aXN0IG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUgYmVmb3JlIGF0dGVtcHRpbmcKKyAgICAgICAgICAgICAgICB0byBydW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBJZiBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gbGlicmFyaWVzKSBkbyBub3QgZXhpc3Qgb24gdGhlIHRhcmdldCwKKyAgICAgICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uLCB3aGVuIHJ1biwgd2lsbCBmYWlsIHRvIGZpbmQgdGhvc2UgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldnRvb2wtZGVwbG95aW5nLXlvdXItc29mdHdhcmUtb24tdGhlLXRhcmdldC1tYWNoaW5lJz5EZXBsb3lpbmcgWW91ciBTb2Z0d2FyZSBvbiB0aGUgVGFyZ2V0IE1hY2hpbmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIElmIHlvdXIgcmVjaXBlIGhhcyBydW50aW1lIGRlcGVuZGVuY2llcyBkZWZpbmVkLCB5b3UgbXVzdCBiZSBzdXJlCi0gICAgICAgICAgICB0aGF0IHRoZXNlIHBhY2thZ2VzIGV4aXN0IG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUgYmVmb3JlIGF0dGVtcHRpbmcKLSAgICAgICAgICAgIHRvIHJ1biB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAgICAgICAgSWYgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIGxpYnJhcmllcykgZG8gbm90IGV4aXN0IG9uIHRoZSB0YXJnZXQsCi0gICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uLCB3aGVuIHJ1biwgd2lsbCBmYWlsIHRvIGZpbmQgdGhvc2UgZnVuY3Rpb25zLgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZ0b29sLWRlcGxveWluZy15b3VyLXNvZnR3YXJlLW9uLXRoZS10YXJnZXQtbWFjaGluZSc+RGVwbG95aW5nIFlvdXIgU29mdHdhcmUgb24gdGhlIFRhcmdldCBNYWNoaW5lPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB1c2VzIHRoZSBsYXRlc3QKKyAgICAgICAgICAgIHJldmlzaW9uIChpLmUuIG1hc3Rlcikgd2hlbiB1bnBhY2tpbmcgZmlsZXMgZnJvbSBhIHJlbW90ZSBVUkkuCisgICAgICAgICAgICBJbiBzb21lIGNhc2VzLCB5b3UgbWlnaHQgd2FudCB0byBzcGVjaWZ5IGEgc291cmNlIHJldmlzaW9uIGJ5CisgICAgICAgICAgICBicmFuY2gsIHRhZywgb3IgY29tbWl0IGhhc2guIFlvdSBjYW4gc3BlY2lmeSB0aGVzZSBvcHRpb25zIHdoZW4KKyAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNwZWNpZnkgYSBzb3VyY2UgYnJhbmNoLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNyY2JyYW5jaDwvZmlsZW5hbWU+IG9wdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIC0tc3JjYnJhbmNoICZESVNUUk9fTkFNRV9OT19DQVA7IGphY2tzb24gL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9zb3VyY2VzL2phY2tzb24KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgeW91IGFyZSBjaGVja2luZyBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICZESVNUUk9fTkFNRV9OT19DQVA7IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IGEgc3BlY2lmaWMgdGFnIG9yIGNvbW1pdCBoYXNoLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNyY3JldjwvZmlsZW5hbWU+IG9wdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIC0tc3JjcmV2ICZESVNUUk9fUkVMX1RBRzsgamFja3NvbiAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3NvdXJjZXMvamFja3NvbgorICAgICAkIGRldnRvb2wgYWRkIC0tc3JjcmV2IDxyZXBsYWNlYWJsZT5zb21lX2NvbW1pdF9oYXNoPC9yZXBsYWNlYWJsZT4gL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9zb3VyY2VzL2phY2tzb24KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZXMgY2hlY2sgb3V0IHRoZSAmRElTVFJPX1JFTF9UQUc7IHRhZworICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGNvbW1pdCBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zb21lX2NvbW1pdF9oYXNoPC9yZXBsYWNlYWJsZT4gaGFzaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBwcmVmZXIgdG8gdXNlIHRoZSBsYXRlc3QgcmV2aXNpb24gZXZlcnkgdGltZSB0aGUgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgYnVpbHQsIHVzZSB0aGUgb3B0aW9ucyA8ZmlsZW5hbWU+LS1hdXRvcmV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+LWE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLWV4dHJhY3RpbmctdGhlLXNvdXJjZS1mb3ItYW4tZXhpc3RpbmctcmVjaXBlJz4KQEAgLTI3Niw3ICszMjQsNyBAQAogICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGJlZ2luCiAgICAgICAgICAgICBtb2RpZnlpbmcgdGhlIHNvdXJjZSBvZiBhbiBleGlzdGluZyByZWNpcGUuCiAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2dG9vbC1hZGRpbmctYS1uZXctcmVjaXBlLXRvLXRoZS13b3Jrc3BhY2UnPjxmaWxlbmFtZT5hZGQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLWFkZGluZy1hLW5ldy1yZWNpcGUtdG8tdGhlLXdvcmtzcGFjZSc+PGZpbGVuYW1lPmFkZDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgY29tbWFuZCBleGNlcHQgdGhhdCBpdCBkb2VzIG5vdCBwaHlzaWNhbGx5IGNyZWF0ZSB0aGUKICAgICAgICAgICAgIHJlY2lwZSBpbiB0aGUgd29ya3NwYWNlIGxheWVyIGJlY2F1c2UgdGhlIHJlY2lwZSBhbHJlYWR5CiAgICAgICAgICAgICBleGlzdHMgaW4gYW4gYW5vdGhlciBsYXllci4KQEAgLTMzNCw3ICszODIsNyBAQAogICAgICAgICAgICAgdG8gdGhlIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Uga25vdyB5b3UgYXJlIGdvaW5nIHRvIHdvcmsgb24gc29tZQogICAgICAgICAgICAgY29kZSwgeW91IGNvdWxkIGZpcnN0IHVzZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldnRvb2wtbW9kaWZ5aW5nLWEtcmVjaXBlJz48ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLW1vZGlmeWluZy1hLXJlY2lwZSc+PGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBjb21tYW5kIHRvIGV4dHJhY3QgdGhlIGNvZGUgYW5kIHNldCB1cCB0aGUgd29ya3NwYWNlLgogICAgICAgICAgICAgQWZ0ZXIgd2hpY2gsIHlvdSBjb3VsZCBtb2RpZnksIGNvbXBpbGUsIGFuZCB0ZXN0IHRoZSBjb2RlLgogICAgICAgICA8L3BhcmE+CkBAIC01NTYsNyArNjA0LDcgQEAKICAgICAgICAgICAgIHJlbW92ZSBkZXBsb3llZCBidWlsZCBvdXRwdXQgZnJvbSB0aGUgdGFyZ2V0IG1hY2hpbmUuCiAgICAgICAgICAgICBGb3IgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KICAgICAgICAgICAgIHdvcmssIHlvdSBtdXN0IGhhdmUgcHJldmlvdXNseSB1c2VkIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2dG9vbC1kZXBsb3lpbmcteW91ci1zb2Z0d2FyZS1vbi10aGUtdGFyZ2V0LW1hY2hpbmUnPjxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLWRlcGxveWluZy15b3VyLXNvZnR3YXJlLW9uLXRoZS10YXJnZXQtbWFjaGluZSc+PGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgY29tbWFuZC4KICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIHVuZGVwbG95LXRhcmdldCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4mbmJzcDs8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KQEAgLTU3Myw3ICs2MjEsNyBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgY3JlYXRlLXdvcmtzcGFjZTwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KICAgICAgICAgICAgIGNyZWF0ZSBhIG5ldyB3b3Jrc3BhY2UgbGF5ZXIgaW4geW91cgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIG5ldyB3b3Jrc3BhY2UgbGF5ZXIsIGl0IGlzIHBvcHVsYXRlZCB3aXRoIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgYW5kIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb25seS4KQEAgLTYxNiw3ICs2NjQsNyBAQAogICAgICAkIGRldnRvb2wgc3RhdHVzCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgc2FtcGxlIG91dHB1dCBhZnRlciB1c2luZwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2dG9vbC1hZGRpbmctYS1uZXctcmVjaXBlLXRvLXRoZS13b3Jrc3BhY2UnPjxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2RldnRvb2wtYWRkaW5nLWEtbmV3LXJlY2lwZS10by10aGUtd29ya3NwYWNlJz48ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHRvIGNyZWF0ZSBhbmQgYWRkIHRoZSA8ZmlsZW5hbWU+bXRyXzAuODYuYmI8L2ZpbGVuYW1lPiByZWNpcGUKICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+d29ya3NwYWNlPC9maWxlbmFtZT4gZGlyZWN0b3J5OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCmluZGV4IDdlMWM1ZWYuLjAyODU3ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKQEAgLTM2LDcgKzM2LDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgT25lIG1ldGhvZCB5b3UgY2FuIHVzZSB0byBkZXRlcm1pbmUgd2hpY2ggcmVjaXBlcyBhcmUgY2hlY2tpbmcgdG8gc2VlIGlmIGEKICAgICAgICAgcGFydGljdWxhciBmZWF0dXJlIGlzIGNvbnRhaW5lZCBvciBub3QgaXMgdG8gPGZpbGVuYW1lPmdyZXA8L2ZpbGVuYW1lPiB0aHJvdWdoCi0gICAgICAgIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICBmb3IgdGhlIGZlYXR1cmUuCiAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGRpc2NvdmVycyB0aGUgcmVjaXBlcyB3aG9zZSBidWlsZCBpcyBwb3RlbnRpYWxseQogICAgICAgICBjaGFuZ2VkIGJhc2VkIG9uIGEgZ2l2ZW4gZmVhdHVyZToKQEAgLTEzMiw3ICsxMzIsNyBAQAogICAgICAgICAgICAgVGhlc2Ugc2VsZWN0IGZlYXR1cmVzIG1ha2Ugc2Vuc2UgdG8gYmUgY29udHJvbGxlZCBib3RoIGF0CiAgICAgICAgICAgICB0aGUgbWFjaGluZSBhbmQgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gbGV2ZWwuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NQklORURfRkVBVFVSRVMnPjxmaWxlbmFtZT5DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT01CSU5FRF9GRUFUVVJFUyc+PGZpbGVuYW1lPkNPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogCkBAIC0xNTEsOCArMTUxLDggQEAKICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjYWRkaW5nLWFwaS1kb2N1bWVudGF0aW9uLXRvLXRoZS1zdGFuZGFyZC1zZGsnPkFkZGluZyBBUEkgRG9jdW1lbnRhdGlvbiB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5ibHVldG9vdGg6PC9lbXBoYXNpcz4gSW5jbHVkZQogICAgICAgICAgICAgICAgICAgICBibHVldG9vdGggc3VwcG9ydCAoaW50ZWdyYXRlZCBCVCBvbmx5KS48L3BhcmE+PC9saXN0aXRlbT4KQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICB0aGUgcGFja2FnZSB0ZXN0cyB3aGVyZSBzdXBwb3J0ZWQgYnkgaW5kaXZpZHVhbCByZWNpcGVzLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwYWNrYWdlIHRlc3RzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN0ZXN0aW5nLXBhY2thZ2VzLXdpdGgtcHRlc3QnPlRlc3RpbmcgUGFja2FnZXMgV2l0aCBwdGVzdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c21iZnM6PC9lbXBoYXNpcz4gSW5jbHVkZSBTTUIgbmV0d29ya3MKICAgICAgICAgICAgICAgICAgICAgY2xpZW50IHN1cHBvcnQgKGZvciBtb3VudGluZyBTYW1iYS9NaWNyb3NvZnQgV2luZG93cyBzaGFyZXMKQEAgLTMwNCw3ICszMDQsNyBAQAogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRvIG1ha2UgdGhlIDxmaWxlbmFtZT4vdmFyL2xvZzwvZmlsZW5hbWU+IGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCBwZXJzaXN0ZW50LCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVk9MQVRJTEVfTE9HX0RJUic+PGZpbGVuYW1lPlZPTEFUSUxFX0xPR19ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVk9MQVRJTEVfTE9HX0RJUic+PGZpbGVuYW1lPlZPTEFUSUxFX0xPR19ESVI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGJ5IHNldHRpbmcgaXQgdG8gIm5vIi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTMxNSw4ICszMTUsOCBAQAogICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGFuIGltYWdlIHdob3NlIHJvb3QgZmlsZXN5c3RlbSBpcyByZWFkLW9ubHkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+Q3JlYXRpbmcgYSBSZWFkLU9ubHkgUm9vdCBGaWxlc3lzdGVtPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCi0gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5zcGxhc2g6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBzaG93aW5nIGEgc3BsYXNoIHNjcmVlbiBkdXJpbmcgYm9vdC4KQEAgLTM1Niw3ICszNTYsOCBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGVyZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+c3lzdGVtdGFwPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+TFRUbmc8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdXNlci1zcGFjZSB0b29scywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5zc2gtc2VydmVyLWRyb3BiZWFyOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxzIHRoZSBEcm9wYmVhciBtaW5pbWFsIFNTSCBzZXJ2ZXIuCkBAIC0zNzQsNyArMzc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0cmFjZTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2RiPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBHREIsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdHJhY2luZyBhbmQgcHJvZmlsaW5nLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1BST0ZfVVJMOyc+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwKaW5kZXggZjIyMDk2OC4uYzc1MmY5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sCkBAIC0zMCw4ICszMCw4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZyb20gd2l0aGluIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LCB5b3UgY2FuIHVzZQogICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZGlzcGxheSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB3aXRoaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICB0aGF0IGNvbnRhaW5lIGltYWdlIHJlY2lwZSBmaWxlczoKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgdGhhdCBjb250YWluIGltYWdlIHJlY2lwZSBmaWxlczoKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGxzIG1ldGEqL3JlY2lwZXMqL2ltYWdlcy8qLmJiCiAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgICAgIHNlY29uZCBpbWFnZSB0byBiZSB0ZXN0ZWQuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcnVudGltZSB0ZXN0aW5nIGluIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgQSBSQU0tYmFzZWQgSW5pdGlhbCBSb290IEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UgdGFpbG9yZWQgZm9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGQzNmIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbApAQCAtMCwwICsxLDI4NCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKworPGNoYXB0ZXIgaWQ9J3JlZi1raWNrc3RhcnQnPgorPHRpdGxlPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0nb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz4KKyAgICAgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgY3VycmVudCBXaWMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSB0aGUgYmFzaWMga2lja3N0YXJ0CisgICAgICAgICAgICBwYXJ0aXRpb25pbmcgY29tbWFuZHM6CisgICAgICAgICAgICA8ZmlsZW5hbWU+cGFydGl0aW9uPC9maWxlbmFtZT4gKG9yIDxmaWxlbmFtZT5wYXJ0PC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZvciBzaG9ydCkgYW5kIDxmaWxlbmFtZT5ib290bG9hZGVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGdXR1cmUgdXBkYXRlcyB3aWxsIGltcGxlbWVudCBtb3JlIGNvbW1hbmRzIGFuZCBvcHRpb25zLgorICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgYW55dGhpbmcgdGhhdCBpcyBub3Qgc3BlY2lmaWNhbGx5IHN1cHBvcnRlZCwgcmVzdWx0cworICAgICAgICAgICAgICAgIGNhbiBiZSB1bnByZWRpY3RhYmxlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgYSByZWZlcmVuY2Ugb24gdGhlIGF2YWlsYWJsZSBraWNrc3RhcnQKKyAgICAgICAgICAgIGNvbW1hbmRzLgorICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIGxpc3RzIHRoZSBjb21tYW5kcywgdGhlaXIgc3ludGF4LCBhbmQgbWVhbmluZ3MuCisgICAgICAgICAgICBLaWNrc3RhcnQgY29tbWFuZHMgYXJlIGJhc2VkIG9uIHRoZSBGZWRvcmEga2lja3N0YXJ0IHZlcnNpb25zIGJ1dAorICAgICAgICAgICAgd2l0aCBtb2RpZmljYXRpb25zIHRvIHJlZmxlY3QgV2ljIGNhcGFiaWxpdGllcy4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSBjb21tYW5kcyBhdCB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyBsaW5rczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjcGFydF9vcl9wYXJ0aXRpb24nPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNwYXJ0X29yX3BhcnRpdGlvbjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I2Jvb3Rsb2FkZXInPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNib290bG9hZGVyPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjb21tYW5kLXBhcnQtb3ItcGFydGl0aW9uJz4KKyAgICAgICAgPHRpdGxlPkNvbW1hbmQ6IHBhcnQgb3IgcGFydGl0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEVpdGhlciBvZiB0aGVzZSBjb21tYW5kcyBjcmVhdGUgYSBwYXJ0aXRpb24gb24gdGhlIHN5c3RlbSBhbmQgdXNlCisgICAgICAgICAgICB0aGUgZm9sbG93aW5nIHN5bnRheDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGFydCBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCisgICAgIHBhcnRpdGlvbiBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT4sIFdpYworICAgICAgICAgICAgY3JlYXRlcyBhIHBhcnRpdGlvbiBidXQgZG9lcyBub3QgbW91bnQgaXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgd2hlcmUgdGhlIHBhcnRpdGlvbiB3aWxsIGJlIG1vdW50ZWQgYW5kIG11c3QgYmUgb2Ygb25lIG9mIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIGZvcm1zOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vPHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgIi8iLCAiL3VzciIsIG9yICIvaG9tZSIKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dhcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBwYXJ0aXRpb24gaXMgdXNlZCBhcyBzd2FwIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTcGVjaWZ5aW5nIGEgPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT4gY2F1c2VzIHRoZQorICAgICAgICAgICAgcGFydGl0aW9uIHRvIGF1dG9tYXRpY2FsbHkgYmUgbW91bnRlZC4KKyAgICAgICAgICAgIFdpYyBhY2hpZXZlcyB0aGlzIGJ5IGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmaWxlc3lzdGVtIHRhYmxlIChmc3RhYikKKyAgICAgICAgICAgIGR1cmluZyBpbWFnZSBnZW5lcmF0aW9uLgorICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHdpYyB0byBnZW5lcmF0ZSBhIHZhbGlkIGZzdGFiLCB5b3UgbXVzdCBhbHNvIHByb3ZpZGUKKyAgICAgICAgICAgIG9uZSBvZiB0aGUgPGZpbGVuYW1lPi0tb25kcml2ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPi0tb25kaXNrPC9maWxlbmFtZT4sIG9yCisgICAgICAgICAgICA8ZmlsZW5hbWU+LS11c2UtdXVpZDwvZmlsZW5hbWU+IHBhcnRpdGlvbiBvcHRpb25zIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHVzaW5nICIvIiBhcyB0aGUgbW91bnRwb2ludC4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIHVzZXMgIi0tb25kaXNrIiB0byBmb3JjZSB0aGUgcGFydGl0aW9uIG9udG8gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+c2RiPC9maWxlbmFtZT4gZGlzazoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvdGhlciBzdXBwb3J0ZWQgb3B0aW9ucyB5b3UgY2FuIHVzZQorICAgICAgICAgICAgd2l0aCB0aGUgPGZpbGVuYW1lPnBhcnQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wYXJ0aXRpb248L2ZpbGVuYW1lPiBjb21tYW5kczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc2l6ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtaW5pbXVtIHBhcnRpdGlvbiBzaXplIGluIE1CeXRlcy4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSBhbiBpbnRlZ2VyIHZhbHVlIHN1Y2ggYXMgNTAwLgorICAgICAgICAgICAgICAgICAgICBEbyBub3QgYXBwZW5kIHRoZSBudW1iZXIgd2l0aCAiTUIiLgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdGhpcyBvcHRpb24gaWYgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbmFtZXMgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZGF0YSB0aGF0IHBvcHVsYXRlcyB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdmFsdWUgZm9yIHRoaXMgb3B0aW9uIGlzICJyb290ZnMiLCBidXQgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UgYW55IHZhbHVlIHRoYXQgbWFwcyB0byBhIHZhbGlkIHNvdXJjZSBwbHVnLWluLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHNvdXJjZSBwbHVnLWlucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd2ljLXBsdWctaW5zLWludGVyZmFjZSc+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UgPGZpbGVuYW1lPi0tc291cmNlIHJvb3RmczwvZmlsZW5hbWU+LCBXaWMKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcyBsYXJnZSBhcyBuZWVkZWQgYW5kIHRvIGZpbGwgaXQgd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZQorICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlc3lzdGVtIHR5cGUgdXNlZCB0byBjcmVhdGUgdGhlIHBhcnRpdGlvbiBpcyBkcml2ZW4KKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHZhbHVlIG9mIHRoZSA8ZmlsZW5hbWU+LS1mc3R5cGU8L2ZpbGVuYW1lPiBvcHRpb24KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGZvciB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGVudHJ5IG9uIDxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+IHRoYXQgZm9sbG93cworICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2UgPHJlcGxhY2VhYmxlPnBsdWdpbi1uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgV2ljIGNyZWF0ZXMgYSBwYXJ0aXRpb24gYXMgbGFyZ2UgYXMgbmVlZGVkIGFuZCBmaWxscyBpdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFydGl0aW9uIHRoYXQgaXMgZ2VuZXJhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgcGx1Zy1pbiBuYW1lIHVzaW5nIHRoZSBkYXRhIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tcjwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBvcHRpb24gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbnQgcm9vdGZzIGRlcml2ZWQgZnJvbSB0aGUgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRXhhY3RseSB3aGF0IHRob3NlIGNvbnRlbnRzIGFuZCBmaWxlc3lzdGVtIHR5cGUgZW5kIHVwCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGFyZSBkZXBlbmRlbnQgb24gdGhlIGdpdmVuIHBsdWctaW4gaW1wbGVtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgZG8gbm90IHVzZSB0aGUgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhbgorICAgICAgICAgICAgICAgICAgICBlbXB0eSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgdXNlIHRoZSA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIGVtcHR5IHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tb25kaXNrPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi0tb25kcml2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZvcmNlcyB0aGUgcGFydGl0aW9uIHRvIGJlIGNyZWF0ZWQgb24gYSBwYXJ0aWN1bGFyIGRpc2suCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNldHMgdGhlIGZpbGUgc3lzdGVtIHR5cGUgZm9yIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmU6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0MjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ0cmZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3F1YXNoZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zd2FwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZzb3B0aW9uczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZyZWUtZm9ybSBzdHJpbmcgb2Ygb3B0aW9ucyB0byBiZSB1c2VkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RyaW5nIHdpbGwgYmUgY29waWVkIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gZmlsZSBvZiB0aGUgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RyaW5nIGlzICJkZWZhdWx0cyIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWxhYmVsIGxhYmVsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsYWJlbCB0byBnaXZlIHRvIHRoZSBmaWxlc3lzdGVtIHRvIGJlIG1hZGUgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGdpdmVuIGxhYmVsIGlzIGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgZmlsZXN5c3RlbSwKKyAgICAgICAgICAgICAgICAgICAgYSBuZXcgbGFiZWwgaXMgY3JlYXRlZCBmb3IgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYWN0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFya3MgdGhlIHBhcnRpdGlvbiBhcyBhY3RpdmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWFsaWduIChpbiBLQnl0ZXMpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc2F5cyB0byBzdGFydCBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBvbiBhbiA8cmVwbGFjZWFibGU+eDwvcmVwbGFjZWFibGU+IEtCeXRlcworICAgICAgICAgICAgICAgICAgICBib3VuZGFyeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tbm8tdGFibGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBvcHRpb24gcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBwYXJ0aXRpb24gYW5kCisgICAgICAgICAgICAgICAgICAgIGNhdXNlcyBpdCB0byBiZWNvbWUgcG9wdWxhdGVkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcGFydGl0aW9uIGlzIG5vdCBhZGRlZCB0byB0aGUgcGFydGl0aW9uIHRhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1leHRyYS1zcGFjZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IGFkZHMgZXh0cmEgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIHNwYWNlIGZpbGxlZCBieSB0aGUgY29udGVudCBvZiB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgc2l6ZSBjYW4gZ28gYmV5b25kIHRoZSBzaXplIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc2l6ZTwvZmlsZW5hbWU+IG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAgTWJ5dGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1vdmVyaGVhZC1mYWN0b3I8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBtdWx0aXBsaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBzaXplIG9mIHRoZSBwYXJ0aXRpb24gYnkgdGhlIG9wdGlvbidzIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzdXBwbHkgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gIjEiLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiMS4zIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tcGFydC10eXBlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gdHlwZSBnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciAoR1VJRCkgZm9yIEdQVAorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGxpc3Qgb2YgcGFydGl0aW9uIHR5cGUgR1VJRHMgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HVUlEX1BhcnRpdGlvbl9UYWJsZSNQYXJ0aXRpb25fdHlwZV9HVUlEcyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXVzZS11dWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgY2F1c2VzIFdpYyB0bworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhIHJhbmRvbSBHVUlEIGZvciB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIGlkZW50aWZpZXIgaXMgdXNlZCBpbiB0aGUgYm9vdGxvYWRlcgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHRvIHNwZWNpZnkgdGhlIHJvb3QgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS11dWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gVVVJRC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjb21tYW5kLWJvb3Rsb2FkZXInPgorICAgIDx0aXRsZT5Db21tYW5kOiBib290bG9hZGVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGVjaWZpZXMgaG93IHRoZSBib290bG9hZGVyIHNob3VsZCBiZSBjb25maWd1cmVkIGFuZAorICAgICAgICAgICAgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQm9vdGxvYWRlciBmdW5jdGlvbmFsaXR5IGFuZCBib290IHBhcnRpdGlvbnMgYXJlIGltcGxlbWVudGVkIGJ5CisgICAgICAgICAgICAgICAgdGhlIHZhcmlvdXMgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gcGx1Zy1pbnMgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudCBib290bG9hZGVyIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICAgICAgVGhlIGJvb3Rsb2FkZXIgY29tbWFuZCBlc3NlbnRpYWxseSBwcm92aWRlcyBhIG1lYW5zIG9mCisgICAgICAgICAgICAgICAgbW9kaWZ5aW5nIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tdGltZW91dDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBib290bG9hZGVyIHRpbWVzCisgICAgICAgICAgICAgICAgICAgIG91dCBhbmQgYm9vdHMgdGhlIGRlZmF1bHQgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1hcHBlbmQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMga2VybmVsIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHBhcmFtZXRlcnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3lzbGludXgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFQUEVORDwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5ncnViPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAga2VybmVsIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tY29uZmlnZmlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBib290bG9hZGVyLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgYSBmdWxsIHBhdGhuYW1lIGZvciB0aGUgZmlsZSBvciBhIGZpbGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5jYW5uZWQtd2tzPC9maWxlbmFtZT4gZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBvdmVycmlkZXMgYWxsIG90aGVyIGJvb3Rsb2FkZXIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKaW5kZXggNzUyYjIxMC4uZDRiN2JlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTEgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+UmljaGFyZDwvZmlyc3RuYW1lPiA8c3VybmFtZT5QdXJkaWU8L3N1cm5hbWU+CisgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5MaW51eCBGb3VuZGF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZzwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogCiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CkBAIC0xMTMsMjQgKzExMywxOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkp1bmUgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC0xNDcsMjkgKzE0MiwzMSBAQAogICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGluLWRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIE1hbnVhbCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CiAKICAgICA8L2Jvb2tpbmZvPgpAQCAtMTc4LDcgKzE3NSw3IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ1c2luZ3Bva3kueG1sIi8+CiAKLSAgICA8eGk6aW5jbHVkZSBocmVmPSJjbG9zZXItbG9vay54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ0ZWNobmljYWwtZGV0YWlscy54bWwiLz4KIApAQCAtMTk0LDYgKzE5MSw4IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sIi8+CiAKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYta2lja3N0YXJ0LnhtbCIvPgorCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLXFhLWNoZWNrcy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1pbWFnZXMueG1sIi8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbAppbmRleCBmZTNiYTA5Li5lMjkwMmViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwKQEAgLTYxLDkgKzYxLDkgQEAKICAgICA8cGFyYT4KICAgICAgICAgRWFjaCBtYWpvciByZWxlYXNlIHJlY2VpdmVzIGEgY29kZW5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSByZWxlYXNlIGluCiAgICAgICAgIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgogICAgICAgICBUaGUgY29uY2VwdCBpcyB0aGF0IGJyYW5jaGVzIG9mCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgd2l0aCB0aGUgc2FtZSBjb2RlbmFtZSBhcmUgbGlrZWx5IHRvIGJlIGNvbXBhdGlibGUgYW5kIHRodXMKICAgICAgICAgd29yayB0b2dldGhlci4KICAgICAgICAgPG5vdGU+CkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBydW4gYXZhaWxhYmxlIHRlc3RzIG9uIHlvdXIgcHJvamVjdHMsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTIwNiw3ICsyMDYsOCBAQAogICAgIDxwYXJhPgogICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCdzIG1haW4gQXV0b2J1aWxkZXIKICAgICAgICAgKDxmaWxlbmFtZT5hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4pIHB1YmxpY2x5IHRlc3RzCi0gICAgICAgIGVhY2ggWW9jdG8gUHJvamVjdCByZWxlYXNlJ3MgY29kZSBpbiB0aGUgT0UtQ29yZSwgUG9reSwgYW5kIEJpdEJha2UKKyAgICAgICAgZWFjaCBZb2N0byBQcm9qZWN0IHJlbGVhc2UncyBjb2RlIGluIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPiwgUG9reSwgYW5kIEJpdEJha2UKICAgICAgICAgcmVwb3NpdG9yaWVzLgogICAgICAgICBUaGUgdGVzdGluZyBvY2N1cnMgZm9yIGJvdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCiAgICAgICAgICJtYXN0ZXIiIGJyYW5jaCBhbmQgYWxzbyBmb3Igc3VibWl0dGVkIHBhdGNoZXMuCkBAIC0yMTYsNyArMjE3LDcgQEAKICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWxsIHRoZXNlIGJyYW5jaGVzIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KICAgICAgICAgPC9ub3RlPgogICAgICAgICBUZXN0aW5nIHdpdGhpbiB0aGVzZSBwdWJsaWMgYnJhbmNoZXMgZW5zdXJlcyBpbiBhIHB1YmxpY2x5IHZpc2libGUgd2F5CiAgICAgICAgIHRoYXQgYWxsIG9mIHRoZSBtYWluIHN1cHBvc2VkIGFyY2hpdGVjdHVyZXMgYW5kIHJlY2lwZXMgaW4gT0UtQ29yZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKaW5kZXggOWIyNzAxYy4uNGJkZGM1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCkBAIC03LDE2ICs3LDE5IEBACiA8dGl0bGU+U291cmNlIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L3RpdGxlPgogCiA8cGFyYT4KLSAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+IGNvbnNpc3RzIG9mIHNldmVyYWwgY29tcG9uZW50cy4KLSAgICBVbmRlcnN0YW5kaW5nIHRoZW0gYW5kIGtub3dpbmcgd2hlcmUgdGhleSBhcmUgbG9jYXRlZCBpcyBrZXkgdG8gdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qgd2VsbC4KLSAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGFuZCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFyaW91cwotICAgIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KKyAgICBUaGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXBvbmVudHMuCisgICAgVW5kZXJzdGFuZGluZyB0aGVtIGFuZCBrbm93aW5nIHdoZXJlIHRoZXkgYXJlIGxvY2F0ZWQgaXMga2V5IHRvIHVzaW5nIHRoZQorICAgIFlvY3RvIFByb2plY3Qgd2VsbC4KKyAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGFuZCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dAorICAgIHRoZSB2YXJpb3VzIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KIDwvcGFyYT4KIAogPHBhcmE+Ci0gICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlc3RhYmxpc2ggYSBsb2NhbCBTb3VyY2UgRGlyZWN0b3J5IG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLCBzZWUgdGhlCi0gICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dldHRpbmctc2V0dXAnPkdldHRpbmcgU2V0IFVwPC91bGluaz4iCi0gICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlc3RhYmxpc2ggYSBsb2NhbCBTb3VyY2UgRGlyZWN0b3J5IG9uIHlvdXIKKyAgICBkZXZlbG9wbWVudCBzeXN0ZW0sIHNlZSB0aGUKKyAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIDwvcGFyYT4KIAogPG5vdGU+CkBAIC0zMSw3ICszNCw3IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgdG9wLWxldmVsIGNvbXBvbmVudHMgb2YgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgPC9wYXJhPgogCiAgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1jb3JlLWJpdGJha2UnPgpAQCAtNDIsNyArNDUsNyBAQAogICAgICAgICAgICAgVGhlIGNvcHkgdXN1YWxseSBtYXRjaGVzIHRoZSBjdXJyZW50IHN0YWJsZSBCaXRCYWtlIHJlbGVhc2UgZnJvbQogICAgICAgICAgICAgdGhlIEJpdEJha2UgcHJvamVjdC4KICAgICAgICAgICAgIEJpdEJha2UsIGEKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICBpbnRlcnByZXRlciwgcmVhZHMgdGhlIFlvY3RvIFByb2plY3QgTWV0YWRhdGEgYW5kIHJ1bnMgdGhlIHRhc2tzCiAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoYXQgZGF0YS4KICAgICAgICAgICAgIEZhaWx1cmVzIGFyZSB1c3VhbGx5IGZyb20gdGhlIE1ldGFkYXRhIGFuZCBub3QgZnJvbSBCaXRCYWtlIGl0c2VsZi4KQEAgLTUzLDEwICs1Niw4IEBACiAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlCiAgICAgICAgICAgICBtYWluIEJpdEJha2UgZXhlY3V0YWJsZSwgd2hpY2ggcmVzaWRlcyBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHN0YXJ0cy4KLSAgICAgICAgICAgIFNvdXJjaW5nIGFuIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoZS5nLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pCiAgICAgICAgICAgICBwbGFjZXMgdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW48L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyAoaW4gdGhhdCBvcmRlcikgaW50bwogICAgICAgICAgICAgdGhlIHNoZWxsJ3MgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KQEAgLTc1LDI3ICs3NiwyNCBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdXNlciBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGUgb3V0cHV0CiAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaW4gaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gd2hlcmUKICAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSBpcyBjb21iaW5lZCB3aXRoIHRoZSBvdXRwdXQuCi0gICAgICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGlzIGNyZWF0ZWQgaW5pdGlhbGx5IHdoZW4geW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgb3IKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHBsYWNlIG91dHB1dCBhbmQgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgZmlsZXMgaW4gYSBkaXJlY3Rvcnkgc2VwYXJhdGUgZnJvbSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGJ5IHByb3ZpZGluZyBhIGRpcmVjdG9yeSBuYW1lIHdoZW4geW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgdGhlIHNldHVwIHNjcmlwdC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXBhcmF0aW5nIG91dHB1dCBmcm9tIHlvdXIgbG9jYWwKICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb25zLgorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTc1LDkgKzE3Myw3IEBACiAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB2YXJpb3VzIGludGVncmF0aW9uIHNjcmlwdHMgdGhhdCBpbXBsZW1lbnQKICAgICAgICAgICAgIGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQgKGUuZy4gUUVNVSBzY3JpcHRzKS4KICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBzY3JpcHRzIGFwcGVuZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUgc2hlbGwncworICAgICAgICAgICAgc2NyaXB0IGFwcGVuZHMgdGhpcyBkaXJlY3RvcnkgdG8gdGhlIHNoZWxsJ3MKICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMTkyLDE0ICsxODgsNyBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzY3JpcHQgaXMgb25lIG9mIHR3byBzY3JpcHRzIHRoYXQgc2V0IHVwIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBvdGhlciBzY3JpcHQsIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzY3JpcHQgc2V0cyB1cCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgogICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCB3aXRoIHRoZSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gY29tbWFuZCBpbgogICAgICAgICAgICAgYSBzaGVsbCBtYWtlcyBjaGFuZ2VzIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gYW5kIHNldHMgb3RoZXIKICAgICAgICAgICAgIGNvcmUgQml0QmFrZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCkBAIC0yMTIsNyArMjAxLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhpcyBzY3JpcHQsIHlvdXIgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudCBpcyBzZXQKICAgICAgICAgICAgIHVwLCBhCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGlzIGNyZWF0ZWQsIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgYmVjb21lcyB0aGUgQnVpbGQgRGlyZWN0b3J5LAogICAgICAgICAgICAgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGNvbW1vbiBCaXRCYWtlIHRhcmdldHMuCiAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CkBAIC0yMzQsMTkgKzIyMywxOSBAQAogICAgICAgICAgICAgVGhlIHNjcmlwdCBnZXRzIGl0cyBkZWZhdWx0IGxpc3Qgb2YgY29tbW9uIHRhcmdldHMgZnJvbSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIFNob3VsZCB5b3UgaGF2ZSBjdXN0b20gZGlzdHJpYnV0aW9ucywgaXQgaXMgdmVyeSBlYXN5IHRvIG1vZGlmeQogICAgICAgICAgICAgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdG8gaW5jbHVkZSB5b3VyIHRhcmdldHMgZm9yIHlvdXIKICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQogICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHJ1bm5pbmcgdGhpcyBzY3JpcHQgd2l0aG91dCBhCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGFyZ3VtZW50IGNyZWF0ZXMgdGhlIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeQogICAgICAgICAgICAgaW4geW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogICAgICAgICAgICAgSWYgeW91IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkgYXJndW1lbnQgd2hlbiB5b3UKQEAgLTI1NCwxNyArMjQzLDE3IEBACiAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgQnVpbGQgRGlyZWN0b3J5IG9mIHlvdXIgY2hvaWNlLgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPiB0aGF0IGlzIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsgfi9teWJ1aWxkcwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgZmlsZXMsIHdoaWNoIGFyZSBmb3VuZCBieSBkZWZhdWx0IGluIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeS4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQogICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIHRoYXQKQEAgLTI3OCwxNTcgKzI2Nyw2IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzY3JpcHQgaXMgb25lIG9mIHR3byBzY3JpcHRzIHRoYXQgc2V0IHVwIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgQXNpZGUgZnJvbSBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCwgdGhpcyBzY3JpcHQgc3RhcnRzIGEKLSAgICAgICAgICAgIG1lbW9yeS1yZXNpZGVudCBCaXRCYWtlIHNlcnZlci4KLSAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgb3RoZXIgc2V0dXAgc2NyaXB0LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBNZW1vcnktcmVzaWRlbnQgQml0QmFrZSByZXNpZGVzIGluIG1lbW9yeSB1bnRpbCB5b3Ugc3BlY2lmaWNhbGx5Ci0gICAgICAgICAgICByZW1vdmUgaXQgdXNpbmcgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtbQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBSdW5uaW5nIHRoaXMgc2NyaXB0IHdpdGggdGhlIDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiBjb21tYW5kIGluCi0gICAgICAgICAgICBhIHNoZWxsIG1ha2VzIGNoYW5nZXMgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBhbmQgc2V0cyBvdGhlcgotICAgICAgICAgICAgY29yZSBCaXRCYWtlIHZhcmlhYmxlcyBiYXNlZCBvbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLSAgICAgICAgICAgIE9uZSBvZiB0aGVzZSB2YXJpYWJsZXMgaXMgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJTRVJWRVInPjxmaWxlbmFtZT5CQlNFUlZFUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGFsbG93cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBsb2NhdGUKLSAgICAgICAgICAgIHRoZSBzZXJ2ZXIgdGhhdCBpcyBydW5uaW5nIEJpdEJha2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBuZWVkIHRvIHJ1biBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYmVmb3JlIHVzaW5nIEJpdEJha2UKLSAgICAgICAgICAgIGNvbW1hbmRzLgotICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBzY3JpcHQgc3ludGF4OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudi1tZW1yZXMgPHJlcGxhY2VhYmxlPnBvcnRfbnVtYmVyPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgY29uc2lkZXJhdGlvbnMgd2hlbiBzb3VyY2luZyB0aGlzIHNjcmlwdDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IHVzZXMgb3RoZXIgc2NyaXB0cyB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRvIGRvIHRoZSBidWxrIG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSB3b3JrLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZSBhIHBvcnQgbnVtYmVyIHdpdGggdGhlIHNjcmlwdCwgdGhlCi0gICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugc2VydmVyIHN0YXJ0cyBhdCBhIHJhbmRvbWx5IHNlbGVjdGVkIHBvcnQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCdzIHBhcmFtZXRlcnMgYXJlIHBvc2l0aW9uYWxseSBkZXBlbmRlbnQuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IGNhbm5vdCBydW4gdGhlIHNjcmlwdCBhbmQgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgbmFtZSB3aXRob3V0IGFsc28gcHJvdmlkaW5nIGEgcG9ydCBudW1iZXIuCi0gICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nIHN5bnRheCBpcyBpbGxlZ2FsOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIG9lLWluaXRidWlsZC1lbnYtbWVtcmVzIDxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHJlc3RyaWN0aW9uIG1pZ2h0IGJlIHJlc29sdmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTUnPkJ1ZyA3NTU1PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGlzIHNjcmlwdCwgeW91ciBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50IGlzIHNldAotICAgICAgICAgICAgdXAsIGEgQnVpbGQgRGlyZWN0b3J5IGlzIGNyZWF0ZWQsIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgYmVjb21lcwotICAgICAgICAgICAgdGhlIEJ1aWxkIERpcmVjdG9yeSwgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGNvbW1vbgotICAgICAgICAgICAgQml0QmFrZSB0YXJnZXRzLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudi1tZW1yZXMKLSAgICAgTm8gcG9ydCBzcGVjaWZpZWQsIHVzaW5nIGR5bmFtaWNhbGx5IHNlbGVjdGVkIHBvcnQKLQotICAgICAjIyMgU2hlbGwgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBidWlsZHMuICMjIwotCi0gICAgIFlvdSBjYW4gbm93IHJ1biAnYml0YmFrZSAmbHQ7dGFyZ2V0Jmd0OycKLQotICAgICBDb21tb24gdGFyZ2V0cyBhcmU6Ci0gICAgICAgICBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgIGNvcmUtaW1hZ2Utc2F0bwotICAgICAgICAgbWV0YS10b29sY2hhaW4KLSAgICAgICAgIG1ldGEtaWRlLXN1cHBvcnQKLQotICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYnCi0gICAgIEJpdGJha2Ugc2VydmVyIGFkZHJlc3M6IDEyNy4wLjAuMSwgc2VydmVyIHBvcnQ6IDUzOTk1Ci0gICAgIEJpdGJha2Ugc2VydmVyIHN0YXJ0ZWQgb24gZGVtYW5kIGFzIG5lZWRlZCwgdXNlIGJpdGJha2UgLW0gdG8gc2h1dCBpdCBkb3duCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgc2NyaXB0IGdldHMgaXRzIGRlZmF1bHQgbGlzdCBvZiBjb21tb24gdGFyZ2V0cyBmcm9tIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgIFNob3VsZCB5b3UgaGF2ZSBjdXN0b20gZGlzdHJpYnV0aW9ucywgaXQgaXMgdmVyeSBlYXN5IHRvIG1vZGlmeQotICAgICAgICAgICAgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdG8gaW5jbHVkZSB5b3VyIHRhcmdldHMgZm9yIHlvdXIKLSAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCi0gICAgICAgICAgICBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIGFyZ3VtZW50IGNyZWF0ZXMgYSBidWlsZCBkaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSWYgeW91IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkgYXJndW1lbnQgYW5kIHBvcnQgbnVtYmVyIHdoZW4geW91Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlIHNjcmlwdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBpcwotICAgICAgICAgICAgY3JlYXRlZCB1c2luZyB0aGF0IG5hbWUuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHN0YXJ0cyB0aGUgQml0QmFrZSBzZXJ2ZXIgdXNpbmcKLSAgICAgICAgICAgIHBvcnQgNTM5OTUgYW5kIGNyZWF0ZXMgYSBCdWlsZCBEaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIDUzOTk1IH4vbXlidWlsZHMKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT4gc2NyaXB0IHN0YXJ0cyBhCi0gICAgICAgICAgICBtZW1vcnkgcmVzaWRlbnQgQml0QmFrZSBzZXJ2ZXIuCi0gICAgICAgICAgICBUaGlzIEJpdEJha2UgaW5zdGFuY2UgdXNlcyB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWNvb2tlcmRhZW1vbi5sb2c8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcwotICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICBmaWxlcywgd2hpY2ggYXJlIGZvdW5kIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb250YWluIHNwYWNlcy4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXR0ZW1wdCB0byBydW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdAotICAgICAgICAgICAgICAgIGZyb20gYSBTb3VyY2UgRGlyZWN0b3J5IHRoYXQgY29udGFpbnMgc3BhY2VzIGluIGVpdGhlciB0aGUKLSAgICAgICAgICAgICAgICBmaWxlbmFtZXMgb3IgZGlyZWN0b3J5IG5hbWVzLCB0aGUgc2NyaXB0IHJldHVybnMgYW4gZXJyb3IKLSAgICAgICAgICAgICAgICBpbmRpY2F0aW5nIG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgQmUgc3VyZSB0byB1c2UgYSBTb3VyY2UgRGlyZWN0b3J5IGZyZWUgb2YgbmFtZXMgY29udGFpbmluZwotICAgICAgICAgICAgICAgIHNwYWNlcy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQogICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYmFzaWMtdG9wLWxldmVsJz4KICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5MSUNFTlNFLCBSRUFETUUsIGFuZCBSRUFETUUuaGFyZHdhcmU8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKQEAgLTQ0MywxMSArMjgxLDkgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgIHdoZW4geW91IHJ1biBvbmUgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdHMgKGkuZS4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgb3IKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICB3aGVuIHlvdSBydW4gdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdHMgKGkuZS4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtNTA1LDkgKzM0MSw3IEBACiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNTMzLDcgKzM2Nyw3IEBACiAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgaG93IHRoZSA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUKICAgICAgICAgICAgICAgICBpcyB1c2VkIGJ5IGxvb2tpbmcgYXQgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXI8L2ZpbGVuYW1lPiBzY3JpcHQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIG9mIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgpAQCAtNTU5LDkgKzM5Myw3IEBACiAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNTg1LDcgKzQxNyw3IEBACiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBob3cgdGhlIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBvZiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KQEAgLTczMyw3ICs1NjUsNyBAQAogICAgICAgICAgICAgY29udGFpbiBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+IGxpY2Vuc2UgZmlsZXMgd2l0aCBvdGhlciBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gbGljZW5zaW5nLCBzZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtNzc3LDcgKzYwOSw4IEBACiAgICAgICAgICAgICBzeXNyb290IHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGVzZSBpbnN0YWxsZXJzIGluIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtODA4LDcgKzY0MSw4IEBACiAgICAgICAgICAgICByZWNpcGUgbGlzdGVkIGluCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgICAgICBQb3B1bGF0aW9uIG9mIHRoaXMgZGlyZWN0b3J5IGlzIGhhbmRsZWQgdGhyb3VnaCBzaGFyZWQgc3RhdGUsIHdoaWxlCi0gICAgICAgICAgICB0aGUgcGF0aCBpcyBzcGVjaWZpZWQgYnkgdGhlIDxmaWxlbmFtZT5DT01QT05FTlRTX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICB0aGUgcGF0aCBpcyBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09NUE9ORU5UU19ESVInPjxmaWxlbmFtZT5DT01QT05FTlRTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgdmFyaWFibGUuIEFwYXJ0IGZyb20gYSBmZXcgdW51c3VhbCBjaXJjdW1zdGFuY2VzLCBoYW5kbGluZyBvZiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXNyb290cy1jb21wb25lbnRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgICAgYXV0b21hdGljLCBhbmQgcmVjaXBlcyBzaG91bGQgbm90IGRpcmVjdGx5IHJlZmVyZW5jZQpAQCAtOTA3LDcgKzc0MSw4IEBACiAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgtcWVtdXg4Ni1zdGFuZGFyZC1idWlsZDwvZmlsZW5hbWU+IGFuZCB0aGVuIHBhdGNoZWQgYnkgUXVpbHQuCiAgICAgICAgICAgICAoU2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLikKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4pCiAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT5saW51eC1xZW11eDg2LXN0YW5kYXJkLWJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5LAogICAgICAgICAgICAgc3RhbmRhcmQgUXVpbHQgZGlyZWN0b3JpZXMgPGZpbGVuYW1lPmxpbnV4LTMuMC9wYXRjaGVzPC9maWxlbmFtZT4KICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+bGludXgtMy4wLy5wYzwvZmlsZW5hbWU+IGFyZSBjcmVhdGVkLApAQCAtMTA0MSw3ICs4NzYsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5LAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiBpcyB0aGUgY29yZQorICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IGlzIHRoZSBjb3JlCiAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBNZXRhZGF0YSBoYXMgc2V2ZXJhbCBpbXBvcnRhbnQgc3ViZGl2aXNpb25zOgogICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0eWxlLmNzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0eWxlLmNzcwppbmRleCA4ZWE4ZGFjLi43MDc3ZTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHlsZS5jc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3R5bGUuY3NzCkBAIC03NzMsNiArNzczLDEwIEBACiAgIGJvcmRlci1jb2xvcjogYmxhY2s7CiB9CiAKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKIAogICAvKioqKioqKioqKiogLwogIC8gIGdyYXBoaWNzICAvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKaW5kZXggODdkZGI5OC4uYzcyNmNiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbApAQCAtMzAyLDcgKzMwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+YmluX3BhY2thZ2UuYmJjbGFzczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIGV4YW1wbGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtNDk1LDEwICs0OTUsMTEgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEluc3RhbGxzIHRoZSBmaWxlcyBpbnRvIHRoZSBpbmRpdmlkdWFsIHJlY2lwZSBzcGVjaWZpYyBzeXNyb290cwotICAgICAgICAgICAgKGkuZS4KKyAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290LW5hdGl2ZTwvZmlsZW5hbWU+IHVuZGVyCiAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KICAgICAgICAgICAgIGJhc2VkIHVwb24gdGhlIGRlcGVuZGVuY2llcyBzcGVjaWZpZWQgYnkKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3RhZ2luZyc+PGZpbGVuYW1lPnN0YWdpbmc8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KQEAgLTcxNyw3ICs3MTgsNyBAQAogICAgICAgICAgICAgdGhlIEJpdEJha2UgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2cHlzaGVsbCc+VXNpbmcgYSBEZXZlbG9wbWVudCBQeXRob24gU2hlbGw8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQogICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTczMCw3ICs3MzEsNyBAQAogICAgICAgICAgICAgZGV2ZWxvcG1lbnQsIGRlYnVnZ2luZywgb3IgYm90aC4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1kZXZzaGVsbCc+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCiAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTgyMCw3ICs4MjEsNyBAQAogICAgICAgICAgICAgQm9vdHMgYW4gaW1hZ2UgYW5kIHBlcmZvcm1zIHJ1bnRpbWUgdGVzdHMgd2l0aGluIHRoZSBpbWFnZS4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhdXRvbWF0aWNhbGx5IHRlc3RpbmcgaW1hZ2VzLCBzZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTgzOCwxNyArODM5LDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYXV0b21hdGljYWxseSB0ZXN0aW5nIGltYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3Mtdm1ka2ltZyc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fdm1ka2ltZzwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIENyZWF0ZXMgYSA8ZmlsZW5hbWU+LnZtZGs8L2ZpbGVuYW1lPiBpbWFnZSBmb3IgdXNlIHdpdGgKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cudm13YXJlLmNvbS8nPlZNd2FyZTwvdWxpbms+Ci0gICAgICAgICAgICBhbmQgY29tcGF0aWJsZSB2aXJ0dWFsIG1hY2hpbmUgaG9zdHMuCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KQEAgLTg5Miw3ICs4ODMsNyBAQAogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgZGlmZmNvbmZpZwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L3VsaW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTkyNyw3ICs5MTgsNyBAQAogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNnZW5lcmF0aW5nLWNvbmZpZ3VyYXRpb24tZmlsZXMnPkdlbmVyYXRpbmcgQ29uZmlndXJhdGlvbiBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN2YWxpZGF0aW5nLWNvbmZpZ3VyYXRpb24nPlZhbGlkYXRpbmcgQ29uZmlndXJhdGlvbjwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtOTY1LDEyICs5NTYsOSBAQAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsCiAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbmZpZ3VyYXRpb24gdG9vbC4KLSAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTk5Nyw4ICs5ODUsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJ1bnMgPGZpbGVuYW1lPm1ha2UgbWVudWNvbmZpZzwvZmlsZW5hbWU+IGZvciB0aGUga2VybmVsLgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4sIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1tZW51Y29uZmlnJz5Vc2luZyZuYnNwOyZuYnNwOzxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN1c2luZy1tZW51Y29uZmlnJz5Vc2luZyZuYnNwOyZuYnNwOzxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggYWQxMDEzOS4uMmIwMTcyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtBUkNIJz5LPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MQUJFTFMnPkw8L2xpbms+CiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPk08L2xpbms+Ci08IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LW4nPk48L2xpbms+IC0tPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OQVRJVkVMU0JTVFJJTkcnPk48L2xpbms+CiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9CSkNPUFknPk88L2xpbms+CiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVAnPlA8L2xpbms+CiA8IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LXEnPlE8L2xpbms+IC0tPgpAQCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHZhcmlhYmxlIHdvcmtzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNDg4LDcgKzQ4OCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2F1dG9tYXRpY2FsbHktaW5jcmVtZW50aW5nLWEtYmluYXJ5LXBhY2thZ2UtcmV2aXNpb24tbnVtYmVyJz5BdXRvbWF0aWNhbGx5IEluY3JlbWVudGluZyBhIEJpbmFyeSBQYWNrYWdlIFJldmlzaW9uIE51bWJlcjwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTUzNiw3ICs1MzYsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBsYWNlcyBnZW5lcmF0ZWQKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyBkdXJpbmcgYSByZWNpcGUncyBidWlsZCBwcm9jZXNzLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcyB0aGUgc2FtZSBhcyB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+CkBAIC02MjYsMTQgKzYyNiwxNCBAQAogICAgICAgICAgICAgICAgICAgICBNdWx0aWxpYiBjb250ZXh0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSc+Q29tYmluaW5nIE11bHRpcGxlIFZlcnNpb25zIG9mIExpYnJhcnkgRmlsZXMgaW50byBPbmUgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBNdWx0aWxpYi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5CQVNFX0xJQjwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGRlZmluZWQgaW4KICAgICAgICAgICAgICAgICAgICAgdGhlIG1hY2hpbmUgaW5jbHVkZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgSWYgTXVsdGlsaWIgaXMgbm90IGJlaW5nIHVzZWQsIHRoZSB2YWx1ZSBkZWZhdWx0cyB0byAibGliIi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtNzM0LDcgKzczNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIiwgInllcyIsIG9yICJ0cnVlIgogICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZID0gIjEiCkBAIC03NTksNyArNzU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRGlzayBzcGFjZSBtb25pdG9yaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBtb25pdG9yaW5nLCBhZGQgdGhlIDxmaWxlbmFtZT5CQl9ESVNLTU9OX0RJUlM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB5b3VyIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgQkJfRElTS01PTl9ESVJTID0gIjxyZXBsYWNlYWJsZT5hY3Rpb248L3JlcGxhY2VhYmxlPiw8cmVwbGFjZWFibGU+ZGlyPC9yZXBsYWNlYWJsZT4sPHJlcGxhY2VhYmxlPnRocmVzaG9sZDwvcmVwbGFjZWFibGU+IFsuLi5dIgpAQCAtODUyLDcgKzg1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRpc2sgc3BhY2UgYW5kIGZyZWUgaW5vZGUgd2FybmluZyBpbnRlcnZhbHMuCiAgICAgICAgICAgICAgICAgICAgIFRvIHNldCB0aGVzZSBpbnRlcnZhbHMsIGRlZmluZSB0aGUgdmFyaWFibGUgaW4geW91cgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtOTM2LDcgKzkzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgU2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMTU0LDcgKzExNTQsOCBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGxheWVycyB0byBlbmFibGUgZHVyaW5nIHRoZSBidWlsZC4KICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgQkJMQVlFUlMgPSAiIFwKQEAgLTEyNTAsNyArMTI1MSw3IEBACiAgICAgIEJCTVVMVElGT05GSUcgPSAiY29uZmlnQSBjb25maWdCIGNvbmZpZ0MiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgRWFjaCBjb25maWd1cmF0aW9uIGZpbGUgeW91IHVzZSBtdXN0IHJlc2lkZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3RvcnknczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tdWx0aWNvbmZpZzwvZmlsZW5hbWU+IGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAoZS5nLgogICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVpbGRfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4pLgpAQCAtMTI2Miw3ICsxMjYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcgdGFyZ2V0cyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLAogICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWJ1aWxkaW5nLXRhcmdldHMtd2l0aC1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMjgwLDcgKzEyODEsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gQml0QmFrZSBmcm9tIGEgZGlyZWN0b3J5IG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMO2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBiZSBzdXJlIHRvIHNldAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHRvIHBvaW50IHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgpAQCAtMTI5OCwyOSArMTI5OSwyOSBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJTRVJWRVInPjxnbG9zc3Rlcm0+QkJTRVJWRVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEJCU0VSVkVSW2RvY10gPSAiUG9pbnRzIHRvIHRoZSBzZXJ2ZXIgdGhhdCBydW5zIG1lbW9yeS1yZXNpZGVudCBCaXRCYWtlLiIKKyAgICAgICAgICAgICAgICBCQlNFUlZFUltkb2NdID0gIlBvaW50cyB0byB0aGUgQml0QmFrZSByZW1vdGUgc2VydmVyLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgc2VydmVyIHRoYXQgcnVucyBtZW1vcnktcmVzaWRlbnQgQml0QmFrZS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGFuZCBzaG91bGQgbm90IGJlIGhhbmQtZWRpdGVkLgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgaXMgb25seSB1c2VkIHdoZW4geW91IGVtcGxveSBtZW1vcnktcmVzaWRlbnQKLSAgICAgICAgICAgICAgICAgICAgQml0QmFrZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNldHVwIHNjcmlwdCBleHBvcnRzIHRoZSB2YWx1ZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICBJZiBkZWZpbmVkIGluIHRoZSBCaXRCYWtlIGVudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPiBwb2ludHMgdG8gdGhlIEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgcmVtb3RlIHNlcnZlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0IHRvIGV4cG9ydCB0aGUgdmFyaWFibGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZW52aXJvbm1lbnQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDokcG9ydAorICAgICBleHBvcnQgQkJTRVJWRVI9bG9jYWxob3N0OiRwb3J0IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCU0VSVkVSPC9maWxlbmFtZT4gaXMgdXNlZCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT4gc2NyaXB0LCB3aGljaAotICAgICAgICAgICAgICAgICAgICBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5CQlNFUlZFUjwvZmlsZW5hbWU+IGFsc28gYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9IQVNIQkFTRV9XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9IQVNIQkFTRV9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIDxmaWxlbmFtZT5CQlNFUlZFUjwvZmlsZW5hbWU+IGlzIGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgICAgIGZyb20gY2hlY2tzdW0gYW5kIGRlcGVuZGVuY3kgZGF0YS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMzczLDcgKzEzNzQsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSB3b3Jrcywgc2VlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgY2xhc3MgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPjxmaWxlbmFtZT5iaW5jb25maWcuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KQEAgLTE0NTYsNiArMTQ1Nyw1MSBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfQVNfQVJDSCc+PGdsb3NzdGVybT5CVUlMRF9BU19BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9BU19BUkNIW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYXNzZW1ibGVyIGZsYWdzIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhc3NlbWJsZXIgZmxhZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0LiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0FTX0FSQ0g8L2ZpbGVuYW1lPiBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9DQ19BUkNIJz48Z2xvc3N0ZXJtPkJVSUxEX0NDX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0NDX0FSQ0hbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBDIGNvbXBpbGVyIGZsYWdzIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBDIGNvbXBpbGVyIGZsYWdzIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaG9zdC4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT4gaXMgZW1wdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfQ0NMRCc+PGdsb3NzdGVybT5CVUlMRF9DQ0xEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9DQ0xEW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCB0byBiZSB1c2VkIGZvciB0aGUgYnVpbGQgaG9zdCB3aGVuIHRoZSBDIGNvbXBpbGVyIGlzIGJlaW5nIHVzZWQgYXMgdGhlIGxpbmtlci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpbmtlciBjb21tYW5kIHRvIGJlIHVzZWQgZm9yIHRoZSBidWlsZCBob3N0CisgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIEMgY29tcGlsZXIgaXMgYmVpbmcgdXNlZCBhcyB0aGUgbGlua2VyLiBCeSBkZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfQ0NMRDwvZmlsZW5hbWU+IHBvaW50cyB0byBHQ0MgYW5kIHBhc3NlcyBhcworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9DQ19BUkNIJz48ZmlsZW5hbWU+QlVJTERfQ0NfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYXNzdW1pbmcgPGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPiBpcyBzZXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfQ0ZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEX0NGTEFHUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgQlVJTERfQ0ZMQUdTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIGNvbXBpbGVyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LiIKQEAgLTE1MDUsNiArMTU1MSw1MiBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfRkMnPjxnbG9zc3Rlcm0+QlVJTERfRkM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0ZDW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBGb3J0cmFuIGNvbXBpbGVyIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgRm9ydHJhbiBjb21waWxlciBjb21tYW5kIGZvciB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPkJVSUxEX0ZDPC9maWxlbmFtZT4gcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIEdmb3J0cmFuIGFuZCBwYXNzZXMgYXMgYXJndW1lbnRzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfQ0NfQVJDSCc+PGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFzc3VtaW5nIDxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT4gaXMgc2V0LgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfTEQnPjxnbG9zc3Rlcm0+QlVJTERfTEQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0xEW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIEJ5IGRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9MRDwvZmlsZW5hbWU+IHBvaW50cyB0byB0aGUgR05VIGxpbmtlciAobGQpCisgICAgICAgICAgICAgICAgICAgIGFuZCBwYXNzZXMgYXMgYXJndW1lbnRzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfTERfQVJDSCc+PGZpbGVuYW1lPkJVSUxEX0xEX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFzc3VtaW5nIDxmaWxlbmFtZT5CVUlMRF9MRF9BUkNIPC9maWxlbmFtZT4gaXMgc2V0LgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfTERfQVJDSCc+PGdsb3NzdGVybT5CVUlMRF9MRF9BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9MRF9BUkNIW2RvY10gPSAiU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGxpbmtlciBmbGFncyBmb3IgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3QuIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfTERfQVJDSDwvZmlsZW5hbWU+IGlzIGVtcHR5LgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfTERGTEFHUyc+PGdsb3NzdGVybT5CVUlMRF9MREZMQUdTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBCVUlMRF9MREZMQUdTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBsaW5rZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QuIgpAQCAtMTU3OCw2ICsxNjcwLDIxIEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9TVFJJUCc+PGdsb3NzdGVybT5CVUlMRF9TVFJJUDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfU1RSSVBbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gYmUgdXNlZCB0byBzdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scyBmcm9tIGJpbmFyaWVzIHByb2R1Y2VkIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gYmUgdXNlZCB0byBzdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scworICAgICAgICAgICAgICAgICAgICBmcm9tIGJpbmFyaWVzIHByb2R1Y2VkIGZvciB0aGUgYnVpbGQgaG9zdC4gQnkgZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX1NUUklQPC9maWxlbmFtZT4gcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX1BSRUZJWCc+PGZpbGVuYW1lPkJVSUxEX1BSRUZJWDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59c3RyaXA8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9TWVMnPjxnbG9zc3Rlcm0+QlVJTERfU1lTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBCVUlMRF9TWVNbZG9jXSA9ICJUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggdXNlZCBmb3IgbmF0aXZlIHJlY2lwZXMuIgpAQCAtMTYyNiwxNCArMTczMywxMiBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlZmluZSB0aGlzIGRpcmVjdG9yeSBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgYnkgcGFzc2luZyBpbiBhIEJ1aWxkIERpcmVjdG9yeSBwYXRoIHdoZW4geW91IHJ1bgotICAgICAgICAgICAgICAgICAgICB0aGUgc2NyaXB0cy4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biB0aGUgc2NyaXB0cyBhbmQgZG8gbm90IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGJ5IHBhc3NpbmcgaW4gYSBCdWlsZCBEaXJlY3RvcnkgcGF0aCB3aGVuIHlvdSBydW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biB0aGUgc2NyaXB0IGFuZCBkbyBub3QgcHJvdmlkZSBhIEJ1aWxkIERpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICBwYXRoLCB0aGUgPGZpbGVuYW1lPkJVSUxERElSPC9maWxlbmFtZT4gZGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTE5NjgsNyArMjA3Myw3IEBACiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgdG8gc3RvcmUgYSBjYWNoZQogICAgICAgICAgICAgICAgICAgICBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICAgICAgICAgICAgICBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHBhcnNlZCBldmVyeSB0aW1lIEJpdEJha2UgaXMKICAgICAgICAgICAgICAgICAgICAgc3RhcnRlZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0yMTI2LDcgKzIyMzEsNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIDxmaWxlbmFtZT5tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB3aGVyZSBnZW5lcmljIGxpY2Vuc2UgZmlsZXMgcmVzaWRlLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0yMjA3LDYgKzIzMTIsMjcgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTVBPTkVOVFNfRElSJz48Z2xvc3N0ZXJtPkNPTVBPTkVOVFNfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT01QT05FTlRTX0RJUltkb2NdID0gIlN0b3JlcyBzeXNyb290IGNvbXBvbmVudHMgZm9yIGVhY2ggcmVjaXBlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFN0b3JlcyBzeXNyb290IGNvbXBvbmVudHMgZm9yIGVhY2ggcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01QT05FTlRTX0RJUjwvZmlsZW5hbWU+IHdoZW4gY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1zcGVjaWZpYyBzeXNyb290cyBmb3Igb3RoZXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMKKyAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfRElSJz48ZmlsZW5hbWU+U1RBR0lOR19ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS1jb21wb25lbnRzPC9maWxlbmFtZT4uIgorICAgICAgICAgICAgICAgICAgICAoaS5lLiAiPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vc3lzcm9vdHMtY29tcG9uZW50czwvZmlsZW5hbWU+IikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09ORl9WRVJTSU9OJz48Z2xvc3N0ZXJtPkNPTkZfVkVSU0lPTjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgQ09ORl9WRVJTSU9OW2RvY10gPSAiVHJhY2tzIHRoZSB2ZXJzaW9uIG9mIGxvY2FsLmNvbmYuICBJbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvIGNoYW5nZXMgaW5jb21wYXRpYmx5LiIKQEAgLTIyNzIsNyArMjM5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRoYW4gPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlc2UgdmFyaWFibGVzIGF0IHRoZSB0b3Agb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0yMzE1LDcgKzI0NDEsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTI1NDksOCArMjY3NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcHJvdmlkaW5nLWxpY2Vuc2UtdGV4dCc+UHJvdmlkaW5nIExpY2Vuc2UgVGV4dDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTI1NzcsOCArMjcwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcHJvdmlkaW5nLWxpY2Vuc2UtdGV4dCc+UHJvdmlkaW5nIExpY2Vuc2UgVGV4dDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTI1OTUsNyArMjcyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgZm91bmQKICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTI4MDUsNyArMjkzMSw4IEBACiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gaW4gdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgd2hlcmUgY29tcG9uZW50cyBhcmUgaW5zdGFsbGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzay4KQEAgLTMxMTYsNyArMzI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dAogICAgICAgICAgICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgcmVzaWRlcyB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGFzIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0zMTg5LDcgKzMzMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGlzIG1hY2hpbmUtc3BlY2lmaWMgYXMgaXQgY29udGFpbnMgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke01BQ0hJTkV9PC9maWxlbmFtZT4gbmFtZS4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgcmVzaWRlcyB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGFzIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJ9L2ltYWdlcy8ke01BQ0hJTkV9LzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMzQzOSw3ICszNTY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYW5kIHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YKICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0zNDUzLDcgKzM1ODAsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgbG9jYXRlZCBpbiBhCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3RybzwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBmb3IgPGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+IG11c3Qgbm90IGNvbnRhaW4KICAgICAgICAgICAgICAgICAgICAgc3BhY2VzLCBhbmQgaXMgdHlwaWNhbGx5IGFsbCBsb3dlci1jYXNlLgpAQCAtMzc5NCw3ICszOTIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdG8gdG91Y2ggaXQuCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBkaXJlY3RvcnkgaXMgPGZpbGVuYW1lPmRvd25sb2FkczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgI0RMX0RJUiA/PSAiJHtUT1BESVJ9L2Rvd25sb2FkcyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMzg2MiwxNCArMzk4OSwxNCBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRUZJX1BST1ZJREVSJz48Z2xvc3N0ZXJtPkVGSV9QUk9WSURFUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgRUZJX1BST1ZJREVSW2RvY10gPSAiV2hlbiBidWlsZGluZyBib290YWJsZSBpbWFnZXMgKGkuZS4gd2hlcmUgaGRkaW1nIG9yIHZtZGsgaXMgaW4gSU1BR0VfRlNUWVBFUyksIHRoZSBFRklfUFJPVklERVIgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBFRkkgYm9vdGxvYWRlciB0byB1c2UuIgorICAgICAgICAgICAgICAgIEVGSV9QUk9WSURFUltkb2NdID0gIldoZW4gYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzIChpLmUuIHdoZXJlIGhkZGltZywgaXNvLCBvciB3aWMudm1kayBpcyBpbiBJTUFHRV9GU1RZUEVTKSwgdGhlIEVGSV9QUk9WSURFUiB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIEVGSSBib290bG9hZGVyIHRvIHVzZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcyAoaS5lLiB3aGVyZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGRkaW1nPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPnZtZGs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBpcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGRkaW1nPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pc288L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPndpYy52bWRrPC9maWxlbmFtZT4gaXMgaW4KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+KSwKICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5FRklfUFJPVklERVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBzcGVjaWZpZXMKICAgICAgICAgICAgICAgICAgICAgdGhlIEVGSSBib290bG9hZGVyIHRvIHVzZS4KQEAgLTQxMTcsNyArNDI0NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhpcyB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLXNvZnR3YXJlLWZyb20tYW4tZXh0ZXJuYWwtc291cmNlJz5CdWlsZGluZyBTb2Z0d2FyZSBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNDE0OCw3ICs0Mjc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UnPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC00MTkxLDcgKzQzMTgsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBjb25maWd1cmUgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggeW91IGNhbiB1c2UgdGhpcyB2YXJpYWJsZSBmcm9tIHdpdGhpbiBhIHJlY2lwZSwKICAgICAgICAgICAgICAgICAgICAgYmVzdCBwcmFjdGljZXMgZGljdGF0ZSB0aGF0IHlvdSBkbyBub3QuCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtNDIyNSw4ICs0MzUyLDggQEAKICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaXMgcmVhZC1vbmx5LiBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1yZWFkLW9ubHktcm9vdC1maWxlc3lzdGVtJz5DcmVhdGluZyBhIFJlYWQtT25seSBSb290IEZpbGVzeXN0ZW08L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24KIAogInRvb2xzLWRlYnVnIiAtIEFkZHMgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgZ2RiIGFuZAogICAgICAgICAgICAgICAgIHN0cmFjZS4KQEAgLTQyNTIsNyArNDM3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGN1c3RvbWl6ZSB5b3VyIGltYWdlIGJ5CiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoaXMgdmFyaWFibGUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtaW1hZ2VmZWF0dXJlcyc+Q3VzdG9taXppbmcgSW1hZ2VzIFVzaW5nIEN1c3RvbSA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTQ1NDEsNyArNDY2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZXNlIHZhcmlhYmxlcyBhdCB0aGUgdG9wIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gZmluZCB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIHZhcmlvdXMKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KQEAgLTQ2MTUsNyArNDc0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGluIGEgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiBleHRlbmRpbmcgPGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiBleHRlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHN1cmUgdG8gdXNlIHRoZSBpbW1lZGlhdGUgZXhwYW5zaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4pIG9wZXJhdG9yLgogICAgICAgICAgICAgICAgICAgICAgICAgSW1tZWRpYXRlIGV4cGFuc2lvbiBtYWtlcyBzdXJlIHRoYXQgQml0QmFrZSBldmFsdWF0ZXMKQEAgLTQ2MjQsNiArNDc1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzb21lIGxhdGVyIHRpbWUgd2hlbiBleHBhbnNpb24gbWlnaHQgcmVzdWx0IGluIGEKICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGZpbGVzIHlvdSBuZWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBpbmNsdWRlIHRoZSB0cmFpbGluZyBzZXBhcmF0aW5nIGNvbG9uCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgaWYgeW91IGFyZSBwcmVwZW5kaW5nLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRyYWlsaW5nIGNvbG9uIGNoYXJhY3RlciBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5b3UKQEAgLTQ2NDEsMTMgKzQ3NzAsMzcgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIGZpbmFsIGV4YW1wbGUgdGhhdCBzcGVjaWZpY2FsbHkgYWRkcyB0aHJlZSBwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgc3BlY2lmaWNhbGx5IGFkZHMgdGhyZWUgcGF0aHM6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gInBhdGhfMTpwYXRoXzI6cGF0aF8zOiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIGZpbmFsIGV4YW1wbGUgc2hvd3MgaG93IHlvdSBjYW4gZXh0ZW5kIHRoZSBzZWFyY2ggcGF0aAorICAgICAgICAgICAgICAgICAgICBhbmQgaW5jbHVkZSBhCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPi1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSwgd2hpY2ggaXMgdXNlZnVsIGluIGEgQlNQIGxheWVyOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kX2ludGVsLXg4Ni1jb21tb24gOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzdGF0ZW1lbnQgYXBwZWFycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWRldi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGZvdW5kIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgbWFjaGluZSBvdmVycmlkZSBpcyBhIHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uIGZvciBtdWx0aXBsZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxheWVyIHRoYXQgc3VwcG9ydHMgYSBzaW5nbGUgQlNQLCB0aGUgb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGp1c3QgYmUgdGhlIHZhbHVlIG9mIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgcHJlcGVuZGluZyBwYXRocyBpbiA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZmlsZXMsIHlvdSBhbGxvdyBtdWx0aXBsZSBhcHBlbmQgZmlsZXMgdGhhdCByZXNpZGUgaW4KICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGxheWVycyBidXQgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIHJlY2lwZSB0bwpAQCAtNDcwNyw3ICs0ODYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZvdW5kIGluIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBGSUxFU1BBVEggPSAiJHtAYmFzZV9zZXRfZmlsZXNwYXRoKFsiJHtGSUxFX0RJUk5BTUV9LyR7QlB9IiwgXAogICAgICAgICAiJHtGSUxFX0RJUk5BTUV9LyR7QlBOfSIsICIke0ZJTEVfRElSTkFNRX0vZmlsZXMiXSwgZCl9IgpAQCAtNDc1Myw3ICs0OTA2LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgPGZpbGVuYW1lPmZzLXBlcm1zLnR4dDwvZmlsZW5hbWU+LCB3aGljaAogICAgICAgICAgICAgICAgICAgICBpcyBsb2NhdGVkIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9maWxlczwvZmlsZW5hbWU+IGZvbGRlciBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNyZWF0ZSB5b3VyIG93biBmaWxlIHBlcm1pc3Npb25zIHNldHRpbmcgdGFibGUsIHlvdSBzaG91bGQgcGxhY2UgaXQgaW4geW91cgogICAgICAgICAgICAgICAgICAgICBsYXllciBvciB0aGUgZGlzdHJvJ3MgbGF5ZXIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtNDc2MSw3ICs0OTE0LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgWW91IGRlZmluZSB0aGUgPGZpbGVuYW1lPkZJTEVTWVNURU1fUEVSTVNfVEFCTEVTPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LCB0bwogICAgICAgICAgICAgICAgICAgICBwb2ludCB0byB5b3VyIGN1c3RvbSA8ZmlsZW5hbWU+ZnMtcGVybXMudHh0PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBtb3JlIHRoYW4gYSBzaW5nbGUgZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5nIHRhYmxlLgogICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aHMgeW91IHNwZWNpZnkgdG8gdGhlc2UgZmlsZXMgbXVzdCBiZSBkZWZpbmVkIHdpdGhpbiB0aGUKQEAgLTU1MzksNyArNTY5Miw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNTYxMyw3ICs1NzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3UgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgaW4gYW4gaW1hZ2UgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCB5b3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIGZyb20geW91cgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgIGJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgZG8gbm90LgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBleHRyYSBmZWF0dXJlcyBmcm9tIG91dHNpZGUgdGhlIGltYWdlIHJlY2lwZSwKQEAgLTU2MzMsNyArNTc4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGN1c3RvbWl6ZSB5b3VyIGltYWdlIGJ5CiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoaXMgdmFyaWFibGUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtaW1hZ2VmZWF0dXJlcyc+Q3VzdG9taXppbmcgSW1hZ2VzIFVzaW5nIEN1c3RvbSA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTU2NjIsMjAgKzU4MTUsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhZGQgImxpdmUiIHRvIDxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgaW5zaWRlIGFuIGltYWdlIHJlY2lwZSwgYmUgc3VyZSB0aGF0IHlvdSBkbyBzbyBwcmlvciB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgImluaGVyaXQgaW1hZ2UiIGxpbmUgb2YgdGhlIHJlY2lwZSBvciB0aGUgbGl2ZSBpbWFnZSB3aWxsCi0gICAgICAgICAgICAgICAgICAgIG5vdCBidWlsZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRHVlIHRvIHRoZSB3YXkgdGhpcyB2YXJpYWJsZSBpcyBwcm9jZXNzZWQsIGl0IGlzIG5vdAotICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byB1cGRhdGUgaXRzIGNvbnRlbnRzIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4uIFRvIGFkZCBvbmUgb3IgbW9yZQotICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gdGhpcyB2YXJpYWJsZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4gb3BlcmF0b3IgbXVzdCBiZSB1c2VkLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCAibGl2ZSIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IGluc2lkZSBhbiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgYmUgc3VyZSB0aGF0IHlvdSBkbyBzbyBwcmlvciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdCBpbWFnZSIgbGluZSBvZiB0aGUgcmVjaXBlIG9yIHRoZSBsaXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Ugd2lsbCBub3QgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVlIHRvIHRoZSB3YXkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZXMgdGhpcyB2YXJpYWJsZSwgeW91IGNhbm5vdCB1cGRhdGUgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYnkgdXNpbmcgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHVzZSB0aGUgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB0byBhZGQgb25lIG9yIG1vcmUgb3B0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01NzAzLDcgKzU4NjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbm90IGJlIGFmZmVjdGVkIGJ5IDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC02MTg4LDcgKzYzNDYsNiBAQAogICAgICBqZmZzMgogICAgICBqZmZzMi5zdW0KICAgICAgbXVsdGl1YmkKLSAgICAgcWNvdzIKICAgICAgc3F1YXNoZnMKICAgICAgc3F1YXNoZnMtbHpvCiAgICAgIHNxdWFzaGZzLXh6CkBAIC02MTk5LDggKzYzNTYsNiBAQAogICAgICB0YXIueHoKICAgICAgdWJpCiAgICAgIHViaWZzCi0gICAgIHZkaQotICAgICB2bWRrCiAgICAgIHdpYwogICAgICB3aWMuYnoyCiAgICAgIHdpYy5negpAQCAtNjIxMiw3ICs2MzY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgdHlwZXMgb2YgaW1hZ2VzLCBzZWUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcyouYmJjbGFzczwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTY0NTUsNyArNjYxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgIGlzICJjcGlvLmd6Ii4KICAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IGtlcm5lbCdzIGluaXRyYW1mcyBtZWNoYW5pc20sIGFzIG9wcG9zZWQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0KQEAgLTY0NzcsMzIgKzY2MzIsMzggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBST1ZJREVTJz48ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiBhbiBpbWFnZSByZWNpcGUgdGhhdCBpcyB1c2VkIHRvIGJ1aWxkIGFuIGluaXRpYWwKICAgICAgICAgICAgICAgICAgICAgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIEFuIGluaXRyYW1mcyBwcm92aWRlcyBhIHRlbXBvcmFyeSByb290IGZpbGVzeXN0ZW0gdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgZWFybHkgc3lzdGVtIGluaXRpYWxpemF0aW9uIChlLmcuIGxvYWRpbmcgb2YgbW9kdWxlcwotICAgICAgICAgICAgICAgICAgICBuZWVkZWQgdG8gbG9jYXRlIGFuZCBtb3VudCB0aGUgInJlYWwiIHJvb3QgZmlsZXN5c3RlbSkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgcmVjaXBlIGlzIGFkZGVkIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgcm9vdAotICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHJlY2lwZSAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGFtcGxlIGluaXRyYW1mcyByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgIFRvIHNlbGVjdCB0aGlzIHJlY2lwZSB0byBwcm92aWRlIHRoZSBpbml0cmFtZnMsCi0gICAgICAgICAgICAgICAgICAgIHNldCA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICAgICAgImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjYXVzZXMgYW4gYWRkaXRpb25hbCByZWNpcGUgdG8gYmUgYnVpbHQgYXMKKyAgICAgICAgICAgICAgICAgICAgYSBkZXBlbmRlbmN5IHRvIHdoYXRldmVyIHJvb3QgZmlsZXN5c3RlbSByZWNpcGUgeW91CisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGJlIHVzaW5nIChlLmcuIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0cmFtZnMgaW1hZ2UgcmVjaXBlIHlvdSBwcm92aWRlIHNob3VsZCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfRlNUWVBFUyc+PGZpbGVuYW1lPklOSVRSQU1GU19GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbiBpbml0cmFtZnMgaW1hZ2UgcHJvdmlkZXMgYSB0ZW1wb3Jhcnkgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGVhcmx5IHN5c3RlbSBpbml0aWFsaXphdGlvbiAoZS5nLiBsb2FkaW5nIG9mCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgbmVlZGVkIHRvIGxvY2F0ZSBhbmQgbW91bnQgdGhlICJyZWFsIiByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0pLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0cmFtZnMgaW1hZ2UgcmVjaXBlIHNob3VsZCBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfRlNUWVBFUyc+PGZpbGVuYW1lPklOSVRSQU1GU19GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGFtcGxlIGluaXRyYW1mcyByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBzZWxlY3QgdGhpcyBzYW1wbGUgcmVjaXBlIGFzIHRoZSBvbmUgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdGhlIGluaXRyYW1mcyBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldCA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBtb3JlIGluZm9ybWF0aW9uIGJ5IHJlZmVyZW5jaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZSc+PGZpbGVuYW1lPmltYWdlPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCBhbmQgdGhlCkBAIC02NTEzLDcgKzY2NzQsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPiBpcyBlbXB0eSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQsIHRoZW4gbm8gaW5pdHJhbWZzIGlzIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCwgdGhlbiBubyBpbml0cmFtZnMgaW1hZ2UgaXMgYnVpbHQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC02NTIxLDEwICs2NjgyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggYWxsb3dzIHRoZSBnZW5lcmF0ZWQgaW1hZ2UgdG8gYmUgYnVuZGxlZAogICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlIGtlcm5lbCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBmb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgZm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcworICAgICAgICAgICAgICAgICAgICBpbWFnZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02NTYyLDcgKzY3MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgY29tYmluZWQgYmluYXJ5IGlzIGRlcG9zaXRlZCBpbnRvIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggaXMgcGFydAogICAgICAgICAgICAgICAgICAgICBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjU5MSw3ICs2NzUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgQWxzbywgZm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02ODYyLDEyICs3MDIzLDEzIEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyBmb3IgdGhpcyB2YXJpYWJsZSBhcmUgc2V0IGluIHRoZSBrZXJuZWwncyByZWNpcGUKICAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdGhhdAotICAgICAgICAgICAgICAgICAgICBpcyBiYXNlZCBvbiB0aGUgTGludXggMy4xNCBrZXJuZWwsIHRoZSBrZXJuZWwgcmVjaXBlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzMuMTQuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwsIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGUgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmb3IgYSBrZXJuZWwgcmVjaXBlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gaXMgc2V0IGFzIGZvbGxvd3MgaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlIGZpbGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtNjg3NywyMSArNzAzOSwyNSBAQAogICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGFsc28gdXNlZCBmcm9tIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZQogICAgICAgICAgICAgICAgICAgICB0byBpZGVudGlmeSB0aGUga2VybmVsIGJyYW5jaCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBvciB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZSBpcyBsb2NhdGVkIGluIHRoZSBCU1AgbGF5ZXIgZm9yCi0gICAgICAgICAgICAgICAgICAgIGEgZ2l2ZW4gbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBrZXJuZWwgYXBwZW5kIGZpbGUgZm9yIHRoZSBFbWVubG93IEJTUCBpcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBhbmQgaXMgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZW1lbmxvdy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b18zLjE0LmJiYXBwZW5kPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSByZWxhdGVkIHN0YXRlbWVudHMgZnJvbSB0aGUgYXBwZW5kIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgcHJldmlvdXMga2VybmVsIGV4YW1wbGUsIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBCU1AgbGF5ZXIgZm9yIGEgZ2l2ZW4gbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBhcHBlbmQgZmlsZSBmb3IgdGhlIEJlYWdsZWJvbmUsCisgICAgICAgICAgICAgICAgICAgIEVkZ2VSb3V0ZXIsIGFuZCBnZW5lcmljIHZlcnNpb25zIG9mIGJvdGggMzIgYW5kIDY0LWJpdCBJQQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcyAoPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4pIGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSByZWxhdGVkIHN0YXRlbWVudHMgZnJvbSB0aGF0IGFwcGVuZCBmaWxlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIENPTVBBVElCTEVfTUFDSElORV9lbWVubG93LW5vZW1nZCA9ICJlbWVubG93LW5vZW1nZCIKLSAgICAgS01BQ0hJTkVfZW1lbmxvdy1ub2VtZ2QgPSAiZW1lbmxvdyIKLSAgICAgS0JSQU5DSF9lbWVubG93LW5vZW1nZCA9ICJzdGFuZGFyZC9iYXNlIgotICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX2VtZW5sb3ctbm9lbWdkID0gIiBmZWF0dXJlcy9kcm0tZ21hNTAwL2RybS1nbWE1MDAuc2NjIgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYgID0gInN0YW5kYXJkL2Jhc2UiCisgICAgIEtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCisgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgorICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgaWRlbnRpZmllcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBicmFuY2ggdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBFbWVubG93Ci0gICAgICAgICAgICAgICAgICAgICAgICBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGlkZW50aWZ5CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIGJyYW5jaCB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIEJTUC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02OTEzLDIwICs3MDc5LDIzIEBACiAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgd2hlbiB1c2luZyBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiB0bwogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgYSBrZXJuZWwgZHVyaW5nIGEgYnVpbGQsIHlvdSBwbGFjZSB0aGUKICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB5b3VyIGxheWVyIGluIHRoZSBzYW1lIG1hbm5lciBhcyB5b3Ugd291bGQKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2ggZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgcGxhY2UgcGF0Y2ggZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMgKGkuZS4KICAgICAgICAgICAgICAgICAgICAgIm91dC1vZi10cmVlIikuCiAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIHVzZSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlIHRoYXQgaXMgcGFydCBvZiB0aGUga2VybmVsIHRyZWUgKGkuZS4gImluLXRyZWUiKSwKICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gcG9pbnQKLSAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JVSUxEX0RFRkNPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGFuZCBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHBvaW50IHRvIHRoZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSB2YXJpYWJsZSwgc2V0IGl0IGluIHRoZSBhcHBlbmQgZmlsZSBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLQlVJTERfREVGQ09ORklHXzxsaW5rIGxpbmtlbmQ9J3Zhci1LTUFDSElORSc+S01BQ0hJTkU8L2xpbms+ID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgIEtCVUlMRF9ERUZDT05GSUdfPHJlcGxhY2VhYmxlPktNQUNISU5FPC9yZXBsYWNlYWJsZT4gPz0gPHJlcGxhY2VhYmxlPmRlZmNvbmZpZ19maWxlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBhICJyYXNwYmVycnlwaTIiCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+IGJ1aWxkIHRoYXQgdXNlcyBhCkBAIC03MDI4LDQxICs3MTk3LDUwIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfRkVBVFVSRVMnPjxnbG9zc3Rlcm0+S0VSTkVMX0ZFQVRVUkVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBLRVJORUxfRkVBVFVSRVNbZG9jXSA9ICJJbmNsdWRlcyBhZGRpdGlvbmFsIG1ldGFkYXRhIGZyb20gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIEdpdCByZXBvc2l0b3J5LiBUaGUgbWV0YWRhdGEgeW91IGFkZCB0aHJvdWdoIHRoaXMgdmFyaWFibGUgaW5jbHVkZXMgY29uZmlnIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMgZGVzY3JpcHRpb25zLiIKKyAgICAgICAgICAgICAgICBLRVJORUxfRkVBVFVSRVNbZG9jXSA9ICJJbmNsdWRlcyBhZGRpdGlvbmFsIGtlcm5lbCBtZXRhZGF0YS4gVGhlIG1ldGFkYXRhIHlvdSBhZGQgdGhyb3VnaCB0aGlzIHZhcmlhYmxlIGluY2x1ZGVzIGNvbmZpZyBmcmFnbWVudHMgYW5kIGZlYXR1cmVzIGRlc2NyaXB0aW9ucy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBJbmNsdWRlcyBhZGRpdGlvbmFsIG1ldGFkYXRhIGZyb20gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBJbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgdGhlIGRlZmF1bHQgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkZXMgYWRkaXRpb25hbCBrZXJuZWwgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgZGVmYXVsdCBCb2FyZCBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIChCU1BzKQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGlzIHByb3ZpZGVkIHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGVzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIGZ1cnRoZXIKLSAgICAgICAgICAgICAgICAgICAgYWRkIG1ldGFkYXRhIGZvciBhbGwgQlNQcy4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LQlJBTkNIJz48ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZnJvbSB3aXRoaW4gdGhlIGtlcm5lbCByZWNpcGUgb3Iga2VybmVsIGFwcGVuZAorICAgICAgICAgICAgICAgICAgICBmaWxlIHRvIGZ1cnRoZXIgYWRkIG1ldGFkYXRhIGZvciBhbGwgQlNQcyBvciBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBCU1BzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgbWV0YWRhdGEgeW91IGFkZCB0aHJvdWdoIHRoaXMgdmFyaWFibGUgaW5jbHVkZXMgY29uZmlnIGZyYWdtZW50cyBhbmQKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgZGVzY3JpcHRpb25zLAorICAgICAgICAgICAgICAgICAgICBUaGUgbWV0YWRhdGEgeW91IGFkZCB0aHJvdWdoIHRoaXMgdmFyaWFibGUgaW5jbHVkZXMgY29uZmlnCisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMgZGVzY3JpcHRpb25zLAogICAgICAgICAgICAgICAgICAgICB3aGljaCB1c3VhbGx5IGluY2x1ZGVzIHBhdGNoZXMgYXMgd2VsbCBhcyBjb25maWcgZnJhZ21lbnRzLgotICAgICAgICAgICAgICAgICAgICBZb3UgdHlwaWNhbGx5IG92ZXJyaWRlIHRoZSA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGEgc3BlY2lmaWMgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyB3YXksIHlvdSBjYW4gcHJvdmlkZSB2YWxpZGF0ZWQsIGJ1dCBvcHRpb25hbCwgc2V0cyBvZiBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgYW5kIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgdHlwaWNhbGx5IG92ZXJyaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyB3YXksIHlvdSBjYW4gcHJvdmlkZSB2YWxpZGF0ZWQsIGJ1dCBvcHRpb25hbCwKKyAgICAgICAgICAgICAgICAgICAgc2V0cyBvZiBrZXJuZWwgY29uZmlndXJhdGlvbnMgYW5kIGZlYXR1cmVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBhZGRzIDxmaWxlbmFtZT5uZXRmaWx0ZXI8L2ZpbGVuYW1lPiB0byBhbGwKLSAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Qga2VybmVscyBhbmQgYWRkcyBzb3VuZCBzdXBwb3J0IHRvIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmU6CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLXJ0XzQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGFkZHMgIm5ldGZpbHRlciIgYW5kICJ0YXNrc3RhdHMiIGZlYXR1cmVzIHRvIGFsbCBCU1BzCisgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgInZpcnRpbyIgY29uZmlndXJhdGlvbnMgdG8gYWxsIFFFTVUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXN0IHR3byBzdGF0ZW1lbnRzIGFkZCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICB0YXJnZXRlZCBtYWNoaW5lIHR5cGVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgQWRkIG5ldGZpbHRlciB0byBhbGwgbGludXgteW9jdG8ga2VybmVscwotICAgICBLRVJORUxfRkVBVFVSRVM9ImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotCi0gICAgICMgQWRkIHNvdW5kIHN1cHBvcnQgdG8gdGhlIHFlbXV4ODYgbWFjaGluZQotICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIgorICAgICBLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNzczOSw3ICs3OTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPUFlfTElDX01BTklGRVNUJz48ZmlsZW5hbWU+Q09QWV9MSUNfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Byb3ZpZGluZy1saWNlbnNlLXRleHQnPlByb3ZpZGluZyBMaWNlbnNlIFRleHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTc4MzgsNyArODAxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgdXNlZCBieSB0aGUga2VybmVsIHRvb2xzIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIHdpdGhpbiB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGljaCB0byBidWlsZCBvdXQgdGhlIHNvdXJjZXMgYW5kIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC03OTQyLDcgKzgxMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRhcmdldCBkZXZpY2UgZm9yIHdoaWNoIHRoZSBpbWFnZSBpcyBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgWW91IGRlZmluZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8KICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLCB3aGljaCBpcyBhbiB4ODYtYmFzZWQgYXJjaGl0ZWN0dXJlIG1hY2hpbmUgdG8KICAgICAgICAgICAgICAgICAgICAgYmUgZW11bGF0ZWQgdXNpbmcgUUVNVToKQEAgLTc5NTcsNyArODEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRodXMsIHdoZW4gPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gInFlbXV4ODYiIHRoZXJlCiAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyB0aGUgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+cWVtdXg4Ni5jb25mPC9maWxlbmFtZT4gbWFjaGluZQogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtODcwOCw2ICs4ODg2LDI5IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1OT0FVVE9QQUNLQUdFREVCVUcnPjxnbG9zc3Rlcm0+Tk9BVVRPUEFDS0FHRURFQlVHPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBOT0FVVE9QQUNLQUdFREVCVUdbZG9jXSA9ICJEaXNhYmxlcyBhdXRvIHBhY2thZ2UgZnJvbSBzcGxpdHRpbmcgLmRlYnVnIGZpbGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIERpc2FibGVzIGF1dG8gcGFja2FnZSBmcm9tIHNwbGl0dGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmRlYnVnPC9maWxlbmFtZT4gZmlsZXMuIElmIGEgcmVjaXBlIHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18ke1BOfS1kYmc8L2ZpbGVuYW1lPiB0byBiZSBzZXQgbWFudWFsbHksCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Tk9BVVRPUEFDS0FHRURFQlVHPC9maWxlbmFtZT4gY2FuIGJlIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgeW91IHRvIGRlZmluZSB0aGUgY29udGVudCBvZiB0aGUgZGVidWcgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisgICAgIEZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9LyR7UVRfRElSX05BTUV9L1F0LyoiCisgICAgIEZJTEVTXyR7UE59LWRiZyA9ICIvdXNyL3NyYy9kZWJ1Zy8iCisgICAgIEZJTEVTXyR7UVRfQkFTRV9OQU1FfS1kZW1vcy1kb2MgPSAiJHtkb2NkaXJ9LyR7UVRfRElSX05BTUV9L3FjaC9xdC5xY2giCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1OT0hERCc+PGdsb3NzdGVybT5OT0hERDwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgTk9IRERbZG9jXSA9ICJDYXVzZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gc2tpcCBidWlsZGluZyB0aGUgLmhkZGltZyBpbWFnZS4iCkBAIC04Nzk4LDcgKzg5OTksNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGZvciBkZXRhaWxzIG9uIGhvdyB0aGlzIGNsYXNzIGFwcGxpZXMgdGhlc2UgYWRkaXRpb25hbAogICAgICAgICAgICAgICAgICAgICBzZWQgY29tbWFuZCBhcmd1bWVudHMuCiAgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHRoZQpAQCAtODg2Myw3ICs5MDY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jIGRldnNoZWxsPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbikuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1kZXZzaGVsbCc+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC04ODkxLDE5ICs5MDkyLDE3IEBACiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggdGhlIHRvcC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHQgaXMgc291cmNlZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgdHdvIHRvcC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHRzIGF2YWlsYWJsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biBvbmUgb2YgdGhlc2Ugc2NyaXB0cywgdGhlCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGlzIHNjcmlwdCwgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRVJPT1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSByZXNvbHZlcyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIHNjcmlwdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwKLSAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIGluaXRpYWxpemF0aW9uIHNjcmlwdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC05MDg2LDcgKzkyODUsNyBAQAogICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGZvdW5kIGluCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhY2thZ2UgbWFuYWdlciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICB1c2VzIHdoZW4gcGFja2FnaW5nIGRhdGEuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtOTE3OSw3ICs5Mzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IGRlYnVnZ2luZyB1c2luZyBHREIgYnkgcmVhZGluZwogICAgICAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTk0NjYsNyArOTY2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTk1MjIsNyArOTcyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdHMsIHNlZQogICAgICAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtcG9zdC1pbnN0YWxsYXRpb24tc2NyaXB0cyc+UG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0czwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtOTY1NCw3ICs5ODUzLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPjxnbG9zc3Rlcm0+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUEFDS0FHRUNPTkZJR19DT05GQVJHU1tkb2NdID0gIkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGdlbmVyYXRlZCBmcm9tIFBBQ0tBR0VDT05GSUcuIgorICAgICAgICAgICAgICAgIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1NbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBnZW5lcmF0ZWQgZnJvbSB0aGUgUEFDS0FHRUNPTkZJRyBzZXR0aW5nLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTk3ODksNyArOTk4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIDxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2hlbiB5b3UgYXJlIHNwbGl0dGluZyBwYWNrYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaGFuZGxpbmctb3B0aW9uYWwtbW9kdWxlLXBhY2thZ2luZyc+SGFuZGxpbmcgT3B0aW9uYWwgTW9kdWxlIFBhY2thZ2luZzwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTk4NTQsNyArMTAwNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBhcyBhIHdvcmthcm91bmQuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZWJ1Z2dpbmctcGFyYWxsZWwtbWFrZS1yYWNlcyc+RGVidWdnaW5nIFBhcmFsbGVsIE1ha2UgUmFjZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgRm9yIHNpbmdsZSBzb2NrZXQgc3lzdGVtcyAoaS5lLiBvbmUgQ1BVKSwgeW91IHNob3VsZCBub3QKICAgICAgICAgICAgICAgICAgICAgaGF2ZSB0byBvdmVycmlkZSB0aGlzIHZhcmlhYmxlIHRvIGdhaW4gb3B0aW1hbCBwYXJhbGxlbGlzbQpAQCAtOTkwMyw3ICsxMDEwMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGFzIGEgd29ya2Fyb3VuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZGRyZXNzaW5nIHJhY2UgY29uZGl0aW9ucywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTAzODUsNyArMTA1ODUsOCBAQAogICAgICAgICAgICAgICAgICAgICBjdW1iZXJzb21lIGFuZCBlcnJvci1wcm9uZSwgYW4gYXV0b21hdGVkIHNvbHV0aW9uIGV4aXN0cy4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLWEtcHItc2VydmljZSc+V29ya2luZyBXaXRoIGEgUFIgU2VydmljZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMDQwOSw2ICsxMDYxMCw4IEBACiAgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPSAieHNlcnZlci14Zjg2IgogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbCA/PSAibWVzYSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz5NZXRhZGF0YSAoVmlydHVhbCBQcm92aWRlcnMpPC9saW5rPgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBzZXQgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYSA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4gaXRlbSwgdGhlbiBhbnkKQEAgLTEwNDQ1LDcgKzEwNjQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdHdvIGV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbiA9ICIzLjQuMCIKLSAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPSAiMy4xOSUiCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID0gIjQuMTIlIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCB2ZXJzaW9uIGlzIG1hdGNoZWQgYWdhaW5zdApAQCAtMTA0ODAsMTQgKzEwNjgzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHRvIHNldCBhIG1hY2hpbmUtc3BlY2lmaWMgb3ZlcnJpZGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11eDg2ID0gIjMuNCUiCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXV4ODYgPSAiNC4xMiUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggbm90IHJlY29tbWVuZGVkLCB3b3JzdCBjYXNlLCB5b3UgY2FuIGFsc28gdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICAiZm9yY2V2YXJpYWJsZSIgb3ZlcnJpZGUsIHdoaWNoIGlzIHRoZSBzdHJvbmdlc3Qgb3ZlcnJpZGUKICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19mb3JjZXZhcmlhYmxlID0gIjMuNCUiCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2ZvcmNldmFyaWFibGUgPSAiNC4xMiUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPl9mb3JjZXZhcmlhYmxlPC9maWxlbmFtZT4gb3ZlcnJpZGUgaXMKQEAgLTEwNTMyLDcgKzEwNzM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIGF0dGVtcHQgYmVmb3JlIGFueSBvdGhlcnMgYnkgYWRkaW5nCiAgICAgICAgICAgICAgICAgICAgIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUFJFTUlSUk9SU19wcmVwZW5kID0gIlwKICAgICAgZ2l0Oi8vLiovLiogaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL3NvdXJjZXMvIFxuIFwKQEAgLTEwNzEwLDcgKzEwOTEzLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgc2hvd3MgaG93IHRoZSA8ZmlsZW5hbWU+UFJTRVJWX0hPU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcwogICAgICAgICAgICAgICAgICAgICBzZXQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTExNDk0LDcgKzExNjk3LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdW5wYWNrZWQgcmVjaXBlIHNvdXJjZSBjb2RlIHJlc2lkZXMuCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IGlzCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vJHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CUE4nPjxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS0kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LApAQCAtMTE1MDIsNyArMTE3MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPiR7UFZ9PC9maWxlbmFtZT4gaXMgdGhlIHJlY2lwZSB2ZXJzaW9uLgogICAgICAgICAgICAgICAgICAgICBJZiB0aGUgc291cmNlIHRhcmJhbGwgZXh0cmFjdHMgdGhlIGNvZGUgdG8gYSBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgbmFtZWQgYW55dGhpbmcgb3RoZXIgdGhhbiA8ZmlsZW5hbWU+JHtCUE59LSR7UFZ9PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgIG9yIGlmIHRoZSBzb3VyY2UgY29kZSBpZiBmZXRjaGVkIGZyb20gYW4gU0NNIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgb3IgaWYgdGhlIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQgZnJvbSBhbiBTQ00gc3VjaCBhcwogICAgICAgICAgICAgICAgICAgICBHaXQgb3IgU3VidmVyc2lvbiwgdGhlbiB5b3UgbXVzdCBzZXQgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAga25vd3Mgd2hlcmUgdG8gZmluZCB0aGUgdW5wYWNrZWQgc291cmNlLgpAQCAtMTE1MTAsNyArMTE3MTMsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGFzc3VtZSBhCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB0b3AtbGV2ZWwgZm9sZGVyIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gYW5kIGEKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBCdWlsZCBEaXJlY3RvcnkgYXQgPGZpbGVuYW1lPnBva3kvYnVpbGQ8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgd29yayBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzCkBAIC0xMjQxMiw3ICsxMjYxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBmaWxlIHJlbW92YWwsIHNldCB0aGUgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZQogICAgICAgICAgICAgICAgICAgICBpbiB5b3VyOgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgU0tJUF9GSUxFREVQUyA9ICIxIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMjYxOSw3ICsxMjgyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5maWxlOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmV0Y2hlcyBmaWxlcywgd2hpY2ggYXJlIHVzdWFsbHkgZmlsZXMgc2hpcHBlZCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBsb2NhbCBtYWNoaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTEyODE5LDcgKzEzMDIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TUkNQVjwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBTUkNQViA9ICIke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0iCkBAIC0xMjg2Myw3ICsxMzA2Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQVVUT1JFVic+PGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlc2NyaXB0aW9uIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhdXRvbWF0aWNhbGx5LWluY3JlbWVudGluZy1hLWJpbmFyeS1wYWNrYWdlLXJldmlzaW9uLW51bWJlcic+QXV0b21hdGljYWxseSBJbmNyZW1lbnRpbmcgYSBCaW5hcnkgUGFja2FnZSBSZXZpc2lvbiBOdW1iZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEzMTE2LDcgKzEzMzIwLDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctc2hhcmluZy1maWxlcy1iZXR3ZWVuLXJlY2lwZXMnPlNoYXJpbmcgRmlsZXMgQmV0d2VlbiBSZWNpcGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5ldmVyIHdyaXRlIGZpbGVzIGRpcmVjdGx5IHVuZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGJlY2F1c2UKQEAgLTEzNTgzLDE1ICsxMzc4OCwxMiBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVuZGVyIHRoZSB3b3JrIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3QtZGVzdGlkaXI8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vc3lzcm9vdC1kZXN0ZGlyPC9maWxlbmFtZT4iKQogICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgZmlsZXMKICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTWVNST09UX0RFU1RESVIgPz0gImNvbnNvbGU9dHR5UzAsMTE1MjAwIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQwMjYsNyArMTQyMjgsNyBAQAogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS10aHVtYi5pbmM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIGV4YW1wbGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTE0MjkyLDcgKzE0NDk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIHN1ZmZpeCBpZGVudGlmaWVzIHRoZSA8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+IHZhcmlhbnQKICAgICAgICAgICAgICAgICAgICAgZm9yIGJ1aWxkaW5nLgogICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBhcmUgYnVpbGRpbmcgZm9yIG11bHRpcGxlIHZhcmlhbnRzIHdpdGggdGhlIHNhbWUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICB0aGlzIG1lY2hhbmlzbSBlbnN1cmVzIHRoYXQgb3V0cHV0IGZvciBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiB2YXJpYW50cyBpcyBrZXB0IHNlcGFyYXRlIHRvCiAgICAgICAgICAgICAgICAgICAgIGF2b2lkIHBvdGVudGlhbCBjb25mbGljdHMuCkBAIC0xNDQ1MCw3ICsxNDY1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSB0byAiMSIgaW4geW91cgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXV0b21hdGljYWxseSBydW4KICAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGVzdHMgYWZ0ZXIgYW4gaW1hZ2Ugc3VjY2Vzc2Z1bGx5IGJ1aWxkczoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTQ0NTksNyArMTQ2NjEsOCBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBlbmFibGluZywgcnVubmluZywgYW5kIHdyaXRpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGVzdHMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQogICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZSouYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xNDU0Myw3ICsxNDc0Niw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRlc3RpbmcgaW1hZ2VzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQ2NTAsOCArMTQ4NTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3RzIGEgUUVNVSBpbWFnZSBhbmQgcnVucyB0aGUgdGVzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNxZW11LWltYWdlLWVuYWJsaW5nLXRlc3RzJz5FbmFibGluZyBSdW50aW1lIFRlc3RzIG9uIFFFTVU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJzaW1wbGVyZW1vdGUiIGFuZCAiU2ltcGxlUmVtb3RlVGFyZ2V0Ijo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnMgdGhlIHRlc3RzIG9uIHRhcmdldCBoYXJkd2FyZSB0aGF0IGlzIGFscmVhZHkKQEAgLTE0NjgzLDcgKzE0ODg2LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHJ1bm5pbmcgdGVzdHMgb24gaGFyZHdhcmUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hhcmR3YXJlLWltYWdlLWVuYWJsaW5nLXRlc3RzJz5FbmFibGluZyBSdW50aW1lIFRlc3RzIG9uIEhhcmR3YXJlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xNDc3Miw3ICsxNDk3NSw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRlc3RpbmcgaW1hZ2VzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQ4MTgsNyArMTUwMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlcyAob3RoZXIgdGhhbiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlKS4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBwb2ludHMKICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPnRtcDwvZmlsZW5hbWU+IHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTQ4MjYsNyArMTUwMjksNyBAQAogICAgICAgICAgICAgICAgICAgICB0aGFuIHRoZSBkZWZhdWx0LCB5b3UgY2FuIHVuY29tbWVudCBhbmQgZWRpdCB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgI1RNUERJUiA9ICIke1RPUERJUn0vdG1wIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xNDg3Miw4ICsxNTA3NSw5IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBidXQgeW91IGNhbiBhZGQgYWRkaXRpb25hbCBwYWNrYWdlcyB0byB0aGUgbGlzdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFkZGluZy1pbmRpdmlkdWFsLXBhY2thZ2VzJz5BZGRpbmcgSW5kaXZpZHVhbCBQYWNrYWdlcyB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE0ODgzLDcgKzE1MDg3LDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudAogICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xNDkyOSw4ICsxNTEzNCw5IEBACiAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFkZGluZy1pbmRpdmlkdWFsLXBhY2thZ2VzJz5BZGRpbmcgSW5kaXZpZHVhbCBQYWNrYWdlcyB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE0OTQwLDcgKzE1MTQ2LDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudAogICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xNDk1MywxMiArMTUxNjAsMTAgQEAKICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFRoZSB0b3AtbGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGlzIHZhcmlhYmxlIHdoZW4geW91Ci0gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgeW91ciBidWlsZCBlbnZpcm9ubWVudCB1c2luZyBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE1MDEwLDcgKzE1MjE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL1JFQURNRTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBpbmZvcm1hdGlvbiBmb3IgPGZpbGVuYW1lPlRVTkVfQVJDSDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSA8ZmlsZW5hbWU+bWlwczwvZmlsZW5hbWU+IGFyY2hpdGVjdHVyZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xNTI5Myw3ICsxNTQ5OCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEtub3duIHR1bmluZyBjb25mbGljdHMgYXJlIHNwZWNpZmllZCBpbiB0aGUgbWFjaGluZSBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9hcmNoLW1pcHMuaW5jPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBmaWxlIHRoYXQgbGlzdHMgdGhlICJvMzIiIGFuZCAibjY0IiBmZWF0dXJlcyBhcwpAQCAtMTUzMjUsNyArMTU1MzAsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgbWFjaGluZSBpbmNsdWRlIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZXNlIGZlYXR1cmVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xNTY2Miw3ICsxNTg2Nyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NlbGVjdGluZy1kZXYtbWFuYWdlcic+U2VsZWN0aW5nIGEgRGV2aWNlIE1hbmFnZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgdmFyaWFibGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTE1NzE3LDcgKzE1OTIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBpbgogICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xNjA1NiwxMiArMTYyNjEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IGZpbGUgdGhhdCBpcyB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGNyZWF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4ud2ljPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhCi0gICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbmVkIGltYWdlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy13aWMtaW1hZ2VzLW9lJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBwYXJ0aXRpb25lZCBpbWFnZSwgc2VlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzLXVzaW5nLXdpYyc+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzIFVzaW5nIFdpYzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIGtpY2tzdGFydCBmaWxlIGZvcm1hdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICBDaGFwdGVyLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbAppbmRleCA4Mjk5ZjlmLi5kNTliZWEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sCkBAIC0zLDI1ICszLDcxIEBACiBbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CiAKIDxjaGFwdGVyIGlkPSdyZXNvdXJjZXMnPgotPHRpdGxlPkNvbnRyaWJ1dGluZyB0byB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Cis8dGl0bGU+Q29udHJpYnV0aW9ucyBhbmQgQWRkaXRpb25hbCBJbmZvcm1hdGlvbjwvdGl0bGU+CiAKIDxzZWN0aW9uIGlkPSdyZXNvdXJjZXMtaW50cm8nPgogICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgogICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGlzIGhhcHB5IGZvciBwZW9wbGUgdG8gZXhwZXJpbWVudCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBBIG51bWJlciBvZiBwbGFjZXMgZXhpc3QgdG8gZmluZCBoZWxwIGlmIHlvdSBydW4gaW50byBkaWZmaWN1bHRpZXMgb3IgZmluZCBidWdzLgotICAgICAgICBUbyBmaW5kIG91dCBob3cgdG8gZG93bmxvYWQgc291cmNlIGNvZGUsCi0gICAgICAgIHNlZSB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2FsLXlwLXJlbGVhc2UnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBpcyBoYXBweSBmb3IgcGVvcGxlIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQSBudW1iZXIgb2YgcGxhY2VzIGV4aXN0IHRvIGZpbmQgaGVscCBpZiB5b3UgcnVuIGludG8gZGlmZmljdWx0aWVzCisgICAgICAgIG9yIGZpbmQgYnVncy4KKyAgICAgICAgVGhpcyBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgYW5kIHBhcnRpY2lwYXRpbmcgaW4KKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWNvbnRyaWJ1dGlvbnMnPgorICAgIDx0aXRsZT5Db250cmlidXRpb25zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBnbGFkbHkgYWNjZXB0cyBjb250cmlidXRpb25zLgorICAgICAgICBZb3UgY2FuIHN1Ym1pdCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGVpdGhlciBieSBjcmVhdGluZyBhbmQgc2VuZGluZworICAgICAgICBwdWxsIHJlcXVlc3RzLAorICAgICAgICBvciBieSBzdWJtaXR0aW5nIHBhdGNoZXMgdGhyb3VnaCBlbWFpbC4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyBib3RoIGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gb24gaG93CisgICAgICAgIHRvIGlkZW50aWZ5IHRoZSBtYWludGFpbmVyIGZvciBlYWNoIGFyZWEgb2YgY29kZSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKIDxzZWN0aW9uIGlkPSdyZXNvdXJjZXMtYnVndHJhY2tlcic+Ci0gICAgPHRpdGxlPlRyYWNraW5nIEJ1Z3M8L3RpdGxlPgorICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBJZiB5b3UgZmluZCBwcm9ibGVtcyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCB5b3Ugc2hvdWxkIHJlcG9ydCB0aGVtIHVzaW5nIHRoZQotICAgICAgICBCdWd6aWxsYSBhcHBsaWNhdGlvbiBhdCA8dWxpbmsgdXJsPScmWU9DVE9fQlVHWklMTEFfVVJMOyc+PC91bGluaz4uCisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPkJ1Z3ppbGxhPC91bGluaz4gdG8gdHJhY2sKKyAgICAgICAgZGVmZWN0cyAoYnVncykuCisgICAgICAgIEltcGxlbWVudGF0aW9ucyBvZiBCdWd6aWxsYSB3b3JrIHdlbGwgZm9yIGdyb3VwIGRldmVsb3BtZW50IGJlY2F1c2UKKyAgICAgICAgdGhleSB0cmFjayBidWdzIGFuZCBjb2RlIGNoYW5nZXMsIGNhbiBiZSB1c2VkIHRvIGNvbW11bmljYXRlIGNoYW5nZXMKKyAgICAgICAgYW5kIHByb2JsZW1zIHdpdGggZGV2ZWxvcGVycywgY2FuIGJlIHVzZWQgdG8gc3VibWl0IGFuZCByZXZpZXcgcGF0Y2hlcywKKyAgICAgICAgYW5kIGNhbiBiZSB1c2VkIHRvIG1hbmFnZSBxdWFsaXR5IGFzc3VyYW5jZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU29tZXRpbWVzIGl0IGlzIGhlbHBmdWwgdG8gc3VibWl0LCBpbnZlc3RpZ2F0ZSwgb3IgdHJhY2sgYSBidWcgYWdhaW5zdAorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBpdHNlbGYgKGUuZy4gd2hlbiBkaXNjb3ZlcmluZyBhbiBpc3N1ZSB3aXRoIHNvbWUKKyAgICAgICAgY29tcG9uZW50IG9mIHRoZSBidWlsZCBzeXN0ZW0gdGhhdCBhY3RzIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICAgIG9yIHlvdXIgZXhwZWN0YXRpb25zKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQSBnZW5lcmFsIHByb2NlZHVyZSBhbmQgZ3VpZGVsaW5lcyBleGlzdCBmb3Igd2hlbiB5b3UgdXNlIEJ1Z3ppbGxhIHRvCisgICAgICAgIHN1Ym1pdCBhIGJ1Zy4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgQnVnemlsbGEgdG8gc3VibWl0IGEgYnVnIGFnYWluc3QgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUgZm9sbG93aW5nOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC00MywxOSArODksMTkgQEAKICAgICAgICAgICAgICAgICBEaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dCBPcGVuRW1iZWRkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJk9FX0xJU1RTX1VSTDsvbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+PC91bGluaz4gLQogICAgICAgICAgICAgICAgIERpc2N1c3Npb24gbWFpbGluZyBsaXN0IGFib3V0IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPgogICAgICAgICAgICAgICAgIGJ1aWxkIHRvb2wuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0xJU1RTX1VSTDsvbGlzdGluZm8vcG9reSc+PC91bGluaz4gLQogICAgICAgICAgICAgICAgIERpc2N1c3Npb24gbWFpbGluZyBsaXN0IGFib3V0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcG9reSc+UG9reTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Bva3knPlBva3k8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3lvY3RvLWFubm91bmNlJz48L3VsaW5rPiAtCiAgICAgICAgICAgICAgICAgTWFpbGluZyBsaXN0IHRvIHJlY2VpdmUgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCByZWxlYXNlIGFuZCBtaWxlc3RvbmUKICAgICAgICAgICAgICAgICBhbm5vdW5jZW1lbnRzLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+Ci0gICAgRm9yIG1vcmUgWW9jdG8gUHJvamVjdC1yZWxhdGVkIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgbWFpbGluZyBsaXN0cyBwYWdlCi0gICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy90b29scy1yZXNvdXJjZXMvY29tbXVuaXR5L21haWxpbmctbGlzdHMnPmhlcmU8L3VsaW5rPi4KKyAgICBGb3IgbW9yZSBZb2N0byBQcm9qZWN0LXJlbGF0ZWQgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWlyYyc+CkBAIC03MCw1MyArMTE2LDE2MCBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1saW5rcyc+Ci0gICAgPHRpdGxlPkxpbmtzPC90aXRsZT4KKzxzZWN0aW9uIGlkPSdyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+CisgICAgPHRpdGxlPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIHJlc291cmNlcyB5b3Ugd2lsbCBmaW5kIGhlbHBmdWw6CisgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIHJlc291cmNlcyB5b3UgbWlnaHQgZmluZCBoZWxwZnVsOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+VGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZTwvdWxpbms+OgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+IFRoZSBob21lIHNpdGUgZm9yIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgIFByb2plY3QuPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tCi0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuaW50ZWwuY29tLyc+SW50ZWwgQ29ycG9yYXRpb248L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBjb21wYW55IHRoYXQgYWNxdWlyZWQgT3BlbmVkSGFuZCBpbiAyMDA4IGFuZCBiZWdhbgotICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IG9uIHRoZSBZb2N0byBQcm9qZWN0LjwvcGFyYT48L2xpc3RpdGVtPgotLS0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZPRV9IT01FX1VSTDsnPk9wZW5FbWJlZGRlZDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIHVwc3RyZWFtLCBnZW5lcmljLCBlbWJlZGRlZCBkaXN0cmlidXRpb24gdXNlZCBhcyB0aGUgYmFzaXMKLSAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkIHN5c3RlbSBpbiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBQb2t5IGRlcml2ZXMgZnJvbSBhbmQgY29udHJpYnV0ZXMgYmFjayB0byB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4gVGhlIGhvbWUgc2l0ZSBmb3IgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9NYWluX1BhZ2UnPlRoZSBZb2N0byBQcm9qZWN0IE1haW4gV2lraSBQYWdlPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgbWFpbiB3aWtpIHBhZ2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoaXMgcGFnZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBwcm9qZWN0IHBsYW5uaW5nLAorICAgICAgICAgICAgICAgIHJlbGVhc2UgZW5naW5lZXJpbmcsIFFBICZhbXA7IGF1dG9tYXRpb24sIGEgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgc2l0ZSBtYXAsIGFuZCBvdGhlciByZXNvdXJjZXMgcmVsYXRlZCB0byB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJk9FX0hPTUVfVVJMOyc+T3BlbkVtYmVkZGVkPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZWQgYnkgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhpcyBwcm9qZWN0IGlzIHRoZSB1cHN0cmVhbSwgZ2VuZXJpYywgZW1iZWRkZWQgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB0aGUgWW9jdG8gUHJvamVjdCBkZXJpdmVzIGl0cyBidWlsZCBzeXN0ZW0gKFBva3kpCisgICAgICAgICAgICAgICAgYW5kIHRvIHdoaWNoIGl0IGNvbnRyaWJ1dGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvd2lraS9CaXRCYWtlJz4KLSAgICAgICAgICAgICAgICBCaXRCYWtlPC91bGluaz46PC9lbXBoYXNpcz4gVGhlIHRvb2wgdXNlZCB0byBwcm9jZXNzIG1ldGFkYXRhLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIEJpdEJha2U8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPiBUaGUgdG9vbCB1c2VkIHRvIHByb2Nlc3MgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw6PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY29tcHJlaGVuc2l2ZSBndWlkZSB0byB0aGUgQml0QmFrZSB0b29sLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBzaG9ydCBkb2N1bWVudCBsZXRzIHlvdSBnZXQgc3RhcnRlZAorICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYW5kIHF1aWNrbHkgYmVnaW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgYSAiaG93LXRvIiBndWlkZSB0aGF0IHByZXNlbnRzIHByb2NlZHVyZXMKKyAgICAgICAgICAgICAgICB1c2VmdWwgdG8gYm90aCBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtIGRldmVsb3BlcnMgd2hvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgbWFudWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBndWlkZSBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGxldHMgeW91IGdldCBnb2luZworICAgICAgICAgICAgICAgIHdpdGggdGhlIHN0YW5kYXJkIG9yIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIEFuIFNESywgd2l0aCBpdHMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYWxsb3dzIHlvdQorICAgICAgICAgICAgICAgIHRvIGRldmVsb3AgcHJvamVjdHMgaW5zaWRlIG9yIG91dHNpZGUgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGd1aWRlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgQlNQIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgSGF2aW5nIGEgY29tbW9ubHkgdW5kZXJzdG9vZCBzdHJ1Y3R1cmUgZW5jb3VyYWdlcworICAgICAgICAgICAgICAgIHN0YW5kYXJkaXphdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gd29yayB3aXRoIExpbnV4IFlvY3RvIGtlcm5lbHMgYXMKKyAgICAgICAgICAgICAgICB3ZWxsIGFzIHByb3ZpZGVzIGEgYml0IG9mIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIG9mIHRoZSBZb2N0byBMaW51eCBrZXJuZWwgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUFJPRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIHByZXNlbnRzIGEgc2V0IG9mIGNvbW1vbiBhbmQgZ2VuZXJhbGx5IHVzZWZ1bAorICAgICAgICAgICAgICAgIHRyYWNpbmcgYW5kIHByb2ZpbGluZyBzY2hlbWVzIGFsb25nIHdpdGggdGhlaXIgYXBwbGljYXRpb25zCisgICAgICAgICAgICAgICAgKGFzIGFwcHJvcHJpYXRlKSB0byBlYWNoIHRvb2wuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgYW4gYXBwbGljYXRpb24gZGV2ZWxvcGVyCisgICAgICAgICAgICAgICAgdXNlcyB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IFBsdWctaW4gZmVhdHVyZSB3aXRoaW4KKyAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9GQVEnPkZBUTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfTk9URVM7Jz5SZWxlYXNlIE5vdGVzPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBGZWF0dXJlcywgdXBkYXRlcyBhbmQga25vd24gaXNzdWVzIGZvciB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGludHJvZHVjZXMgYW5kIGRlc2NyaWJlcyBob3cgdG8gc2V0IHVwIGFuZCB1c2UKKyAgICAgICAgICAgICAgICBUb2FzdGVyLgorICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYW4gQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIChBUEkpIGFuZAorICAgICAgICAgICAgICAgIHdlYi1iYXNlZCBpbnRlcmZhY2UgdG8gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW08L2xpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIHVzZXMgQml0QmFrZSwgdGhhdCByZXBvcnRzIGJ1aWxkIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQlVHWklMTEFfVVJMOyc+QnVnemlsbGE8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBidWcgdHJhY2tpbmcgYXBwbGljYXRpb24gdGhlIFlvY3RvIFByb2plY3QgdXNlcy4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZmluZCBwcm9ibGVtcyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCB5b3Ugc2hvdWxkIHJlcG9ydAorICAgICAgICAgICAgICAgIHRoZW0gdXNpbmcgdGhpcyBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgQ29uZmlndXJhdGlvbiBhbmQgQnVnIFRyYWNraW5nIFdpa2kgUGFnZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBzZXQgdXAgYW5kIHVzZSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIGZvciBsb2dnaW5nIGFuZCB0cmFja2luZyBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgZGVmZWN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW50ZXJuZXQgUmVsYXkgQ2hhdCAoSVJDKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFR3byBJUkMgY2hhbm5lbHMgb24gZnJlZW5vZGUgYXJlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIGZvciBZb2N0byBQcm9qZWN0IGFuZCBQb2t5IGRpc2N1c3Npb25zOiA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiNwb2t5PC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvSW5kZXguaHRtbCc+UXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbiBvcGVuLXNvdXJjZSBtYWNoaW5lIGVtdWxhdG9yIGFuZCB2aXJ0dWFsaXplci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIEZvciBtb3JlIGxpbmtzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNvdGhlci1pbmZvcm1hdGlvbic+T3RoZXIgSW5mb3JtYXRpb248L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWNvbnRyaWJ1dGlvbnMnPgotICAgIDx0aXRsZT5Db250cmlidXRpb25zPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBnbGFkbHkgYWNjZXB0cyBjb250cmlidXRpb25zLgotICAgICAgICBZb3UgY2FuIHN1Ym1pdCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGVpdGhlciBieSBjcmVhdGluZyBhbmQgc2VuZGluZwotICAgICAgICBwdWxsIHJlcXVlc3RzLAotICAgICAgICBvciBieSBzdWJtaXR0aW5nIHBhdGNoZXMgdGhyb3VnaCBlbWFpbC4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyBib3RoIGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gb24gaG93Ci0gICAgICAgIHRvIGlkZW50aWZ5IHRoZSBtYWludGFpbmVyIGZvciBlYWNoIGFyZWEgb2YgY29kZSwgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdGVjaG5pY2FsLWRldGFpbHMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC90ZWNobmljYWwtZGV0YWlscy54bWwKaW5kZXggMTk2NGE5YS4uZTllNzZlNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC90ZWNobmljYWwtZGV0YWlscy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC90ZWNobmljYWwtZGV0YWlscy54bWwKQEAgLTE4LDcgKzE4LDcgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBUaGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPgogICAgICAgICB0YXNrIGV4ZWN1dG9yIHRvZ2V0aGVyIHdpdGggdmFyaW91cyB0eXBlcyBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGZvcm0KICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBDb3JlLgogICAgICAgICBUaGlzIHNlY3Rpb24gb3ZlcnZpZXdzIHRoZXNlIGNvbXBvbmVudHMgYnkgZGVzY3JpYmluZyB0aGVpciB1c2UgYW5kCkBAIC00OCwxNSArNDgsMTYgQEAKICAgICAgICAgdG8gZWFjaCBkYXRhIHNvdXJjZSBhcyBhIGxheWVyLgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kCi0gICAgICAgIENyZWF0aW5nIExheWVyczwvdWxpbms+IiBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQKKyAgICAgICAgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgogICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYnJpZWYgZGV0YWlscyBvbiB0aGVzZSBjb3JlIGNvbXBvbmVudHMuCiAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0IGR1cmluZwogICAgICAgICBhIGJ1aWxkLCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdjbG9zZXItbG9vayc+QSBDbG9zZXIgTG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz4iCi0gICAgICAgIENoYXB0ZXIuCisgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9wbWVudC1jb25jZXB0cyc+RGV2ZWxvcG1lbnQgQ29uY2VwdHM8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktY29tcG9uZW50cy1iaXRiYWtlJz4KQEAgLTY1LDcgKzY2LDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBCaXRCYWtlIGlzIHRoZSB0b29sIGF0IHRoZSBoZWFydCBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4sCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LAogICAgICAgICAgICAgZ2VuZXJhdGluZyBhIGxpc3Qgb2YgdGFza3MgZnJvbSBpdCwgYW5kIHRoZW4gZXhlY3V0aW5nIHRob3NlIHRhc2tzLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTE0NiwxMyArMTQ3LDcwIEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0nbWV0YWRhdGEtdmlydHVhbC1wcm92aWRlcnMnPgorICAgICAgICA8dGl0bGU+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmlvciB0byB0aGUgYnVpbGQsIGlmIHlvdSBrbm93IHRoYXQgc2V2ZXJhbCBkaWZmZXJlbnQgcmVjaXBlcworICAgICAgICAgICAgcHJvdmlkZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIHVzZSBhIHZpcnR1YWwgcHJvdmlkZXIKKyAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPikgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlCisgICAgICAgICAgICBhY3R1YWwgcHJvdmlkZXIuCisgICAgICAgICAgICBUaGUgYWN0dWFsIHByb3ZpZGVyIHdvdWxkIGJlIGRldGVybWluZWQgYXQgYnVpbGQKKyAgICAgICAgICAgIHRpbWUuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzaG91bGQgYWRkIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdG8gPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgcmF0aGVyIHRoYW4gbGlzdGluZyB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLgorICAgICAgICAgICAgWW91IHdvdWxkIHNlbGVjdCB0aGUgYWN0dWFsIHByb3ZpZGVyIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSAoaS5lLiA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvKjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgaW4gdGhlIGJ1aWxkJ3MgY29uZmlndXJhdGlvbiBmaWxlIChlLmcuCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZC9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQgUFJPVklERVMgYSA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4gaXRlbQorICAgICAgICAgICAgICAgIHRoYXQgaXMgdWx0aW1hdGVseSBub3Qgc2VsZWN0ZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiBkb2VzIG5vdCBnZXQgYnVpbHQuCisgICAgICAgICAgICAgICAgUHJldmVudGluZyB0aGVzZSByZWNpcGVzIGZyb20gYnVpbGRpbmcgaXMgdXN1YWxseSB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgIGJlaGF2aW9yIHNpbmNlIHRoaXMgbWVjaGFuaXNtJ3MgcHVycG9zZSBpcyB0byBzZWxlY3QgYmV0d2VlbgorICAgICAgICAgICAgICAgIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbHRlcm5hdGl2ZSBwcm92aWRlcnMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdHMgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdmlydHVhbCBwcm92aWRlcnM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWVzYTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2JtLnBjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvZWdsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5lZ2wucGM8L2ZpbGVuYW1lPiBhbmQgcG9zc2libHkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndheWxhbmQtZWdsLnBjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsLnBjPC9maWxlbmFtZT4gKGkuZS4gbGliR0wpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMxPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjFfY20ucGM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjFfQ00pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjIucGM8L2ZpbGVuYW1lPiAoaS5lLiBsaWJHTEVTdjIpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCiAgICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWNsYXNzZXMnPgogICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDbGFzcyBmaWxlcyAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pIGNvbnRhaW4gaW5mb3JtYXRpb24gdGhhdAogICAgICAgICAgICAgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IGZpbGVzLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiBmaWxlcy4KICAgICAgICAgICAgIEFuIGV4YW1wbGUgaXMgdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIGNsYXNzLCB3aGljaCBjb250YWlucyBjb21tb24gc2V0dGluZ3MgZm9yIGFueSBhcHBsaWNhdGlvbiB0aGF0CkBAIC0xNzIsNyArMjMwLDcgQEAKICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGNvbXBpbGVyIHR1bmluZyBvcHRpb25zLCBnZW5lcmFsIGNvbW1vbiBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICBvcHRpb25zLCBhbmQgdXNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgZm91bmQKICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KQEAgLTE4MywxMSArMjQxLDEyIEBACiAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGRvZXMgbW9zdCBvZiB0aGUgd29yayBmb3IgeW91IHdoZW4gaXQgY29tZXMgdG8KICAgICAgICAgY3JlYXRpbmcKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5jcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zPC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluczwvbGluaz4uCiAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIHRlY2huaWNhbCBiYWNrZ3JvdW5kIG9uIGhvdwogICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIGFyZSBjcmVhdGVkIGFuZCB1c2VkLgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICBtYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0zNzIsOCArNDMxLDggQEAKICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGFkdmFudGFnZXMgZ2FpbmVkIHdoZW4gYnVpbGRpbmcgYQogICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW5zdGFsbGVyLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncwotICAgICAgICBHdWlkZS4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgPC9ub3RlPgogPC9zZWN0aW9uPgogCkBAIC00MzMsNyArNDkyLDcgQEAKICAgICAgICAgd29ya3Mgd2l0aCBwYWNrYWdlcyBhbmQgY2FuCiAgICAgICAgIHRyYWNrIGluY3JlbWVudGluZyA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24uCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvbm90ZT4KIAogICAgIDxwYXJhPgpAQCAtNTYyLDcgKzYyMSw3IEBACiAgICAgICAgICAgICBjb2RlLgogICAgICAgICAgICAgSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgdGhlIHF1ZXN0aW9uIG9mIGEgdGFzaydzIGluZGlyZWN0IGlucHV0cyAtIHRoZQogICAgICAgICAgICAgdGhpbmdzIHRoYXQgd2VyZSBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIFRoZSBjaGVja3N1bSAob3Igc2lnbmF0dXJlKSBmb3IgYSBwYXJ0aWN1bGFyIHRhc2sgbmVlZHMgdG8gYWRkIHRoZSBoYXNoZXMKICAgICAgICAgICAgIG9mIGFsbCB0aGUgdGFza3Mgb24gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdGFzayBkZXBlbmRzLgogICAgICAgICAgICAgQ2hvb3Npbmcgd2hpY2ggZGVwZW5kZW5jaWVzIHRvIGFkZCBpcyBhIHBvbGljeSBkZWNpc2lvbi4KQEAgLTU5OCwxMSArNjU3LDEyIEBACiAgICAgICAgICAgICBUaGUgY29kZSBpbiA8ZmlsZW5hbWU+bWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5PC9maWxlbmFtZT4gc2hvd3MgdHdvIGV4YW1wbGVzCiAgICAgICAgICAgICBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydCB5b3VyIG93biBwb2xpY3kgaW50byB0aGUgc3lzdGVtCiAgICAgICAgICAgICBpZiBzbyBkZXNpcmVkLgotICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycyA8ZmlsZW5hbWU+T0UtQ29yZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB1c2VzOiAgIk9FQmFzaWMiIGFuZCAiT0VCYXNpY0hhc2giLgorICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4gdXNlczogICJPRUJhc2ljIiBhbmQKKyAgICAgICAgICAgICJPRUJhc2ljSGFzaCIuCiAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGVyZSBpcyBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBlbmFibGVkIGluIEJpdEJha2UuCiAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+T0UtQ29yZTwvZmlsZW5hbWU+IHVzZXMgdGhlICJPRUJhc2ljSGFzaCIgc2lnbmF0dXJlIGhhbmRsZXIgYnkgZGVmYXVsdAorICAgICAgICAgICAgT0UtQ29yZSB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKICAgICAgICAgICAgIHRocm91Z2ggdGhpcyBzZXR0aW5nIGluIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgQkJfU0lHTkFUVVJFX0hBTkRMRVIgPz0gIk9FQmFzaWNIYXNoIgpAQCAtNjEwLDcgKzY3MCw3IEBACiAgICAgICAgICAgICBUaGUgIk9FQmFzaWNIYXNoIiA8ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPiBpcyB0aGUgc2FtZSBhcyB0aGUKICAgICAgICAgICAgICJPRUJhc2ljIiB2ZXJzaW9uIGJ1dCBhZGRzIHRoZSB0YXNrIGhhc2ggdG8gdGhlIHN0YW1wIGZpbGVzLgogICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgICAgIGNoYW5nZSB0aGF0IGNoYW5nZXMgdGhlIHRhc2sgaGFzaCwgYXV0b21hdGljYWxseQogICAgICAgICAgICAgY2F1c2luZyB0aGUgdGFzayB0byBiZSBydW4gYWdhaW4uCiAgICAgICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gYnVtcCA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPgpAQCAtMTE5NSw2ICsxMjU1LDIxMyBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAorPHNlY3Rpb24gaWQ9J3dpYy1wbHVnLWlucy1pbnRlcmZhY2UnPgorICAgIDx0aXRsZT5XaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGV4dGVuZCBhbmQgc3BlY2lhbGl6ZSBXaWMgZnVuY3Rpb25hbGl0eSBieSB1c2luZworICAgICAgICBXaWMgcGx1Zy1pbnMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBleHBsYWlucyB0aGUgV2ljIHBsdWctaW4gaW50ZXJmYWNlLgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgV2ljIGluIGdlbmVyYWwsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlcyBVc2luZyBXaWM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgV2ljIHBsdWctaW5zIGNvbnNpc3Qgb2YgInNvdXJjZSIgYW5kICJpbWFnZXIiIHBsdWctaW5zLgorICAgICAgICAgICAgSW1hZ2VyIHBsdWctaW5zIGFyZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTb3VyY2UgcGx1Zy1pbnMgcHJvdmlkZSBhIG1lY2hhbmlzbSB0byBjdXN0b21pemUgcGFydGl0aW9uCisgICAgICAgIGNvbnRlbnQgZHVyaW5nIHRoZSBXaWMgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzLgorICAgICAgICBZb3UgY2FuIHVzZSBzb3VyY2UgcGx1Zy1pbnMgdG8gbWFwIHZhbHVlcyB0aGF0IHlvdSBzcGVjaWZ5CisgICAgICAgIHVzaW5nIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIGtpY2tzdGFydAorICAgICAgICBmaWxlcyAoaS5lLiA8ZmlsZW5hbWU+Ki53a3M8L2ZpbGVuYW1lPikgdG8gYSBwbHVnLWluCisgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcG9wdWxhdGUgYSBnaXZlbiBwYXJ0aXRpb24uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgSWYgeW91IHVzZSBwbHVnLWlucyB0aGF0IGhhdmUgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIChlLmcuIG5hdGl2ZSB0b29scywgYm9vdGxvYWRlcnMsIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgYSBXaWMgaW1hZ2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhvc2UKKyAgICAgICAgICAgIGRlcGVuZGVuY2llcyB1c2luZyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XS1NfRklMRV9ERVBFTkRTJz48ZmlsZW5hbWU+V0tTX0ZJTEVfREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU291cmNlIHBsdWctaW5zIGFyZSBzdWJjbGFzc2VzIGRlZmluZWQgaW4gcGx1Zy1pbiBmaWxlcy4KKyAgICAgICAgQXMgc2hpcHBlZCwgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgc2V2ZXJhbCBwbHVnLWluCisgICAgICAgIGZpbGVzLgorICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc291cmNlIHBsdWctaW4gZmlsZXMgdGhhdCBzaGlwIHdpdGggdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZSc+aGVyZTwvdWxpbms+LgorICAgICAgICBFYWNoIG9mIHRoZXNlIHBsdWctaW4gZmlsZXMgY29udGFpbiBzb3VyY2UgcGx1Zy1pbnMgdGhhdAorICAgICAgICBhcmUgZGVzaWduZWQgdG8gcG9wdWxhdGUgYSBzcGVjaWZpYyBXaWMgaW1hZ2UgcGFydGl0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTb3VyY2UgcGx1Zy1pbnMgYXJlIHN1YmNsYXNzZXMgb2YgdGhlCisgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMKKyAgICAgICAgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPgorICAgICAgICBmaWxlLgorICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5Cb290aW1nRUZJUGx1Z2luPC9maWxlbmFtZT4KKyAgICAgICAgc291cmNlIHBsdWctaW4gZm91bmQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5ib290aW1nLWVmaS5weTwvZmlsZW5hbWU+IGZpbGUgaXMgYSBzdWJjbGFzcyBvZgorICAgICAgICB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBpcyBmb3VuZAorICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGFsc28gaW1wbGVtZW50IHNvdXJjZSBwbHVnLWlucyBpbiBhIGxheWVyIG91dHNpZGUKKyAgICAgICAgb2YgdGhlIFNvdXJjZSBSZXBvc2l0b3JpZXMgKGV4dGVybmFsIGxheWVyKS4KKyAgICAgICAgVG8gZG8gc28sIGJlIHN1cmUgdGhhdCB5b3VyIHBsdWctaW4gZmlsZXMgYXJlIGxvY2F0ZWQgaW4KKyAgICAgICAgYSBkaXJlY3Rvcnkgd2hvc2UgcGF0aCBpcworICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlLzwvZmlsZW5hbWU+CisgICAgICAgIHdpdGhpbiB5b3VyIGV4dGVybmFsIGxheWVyLgorICAgICAgICBXaGVuIHRoZSBwbHVnLWluIGZpbGVzIGFyZSBsb2NhdGVkIHRoZXJlLCB0aGUgc291cmNlCisgICAgICAgIHBsdWctaW5zIHRoZXkgY29udGFpbiBhcmUgbWFkZSBhdmFpbGFibGUgdG8gV2ljLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gaW52b2tlIGEKKyAgICAgICAgcGFydGl0aW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCBsb29rcyBmb3IgdGhlIHBsdWctaW4KKyAgICAgICAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgorICAgICAgICBwYXJhbWV0ZXIgdXNlZCBpbiB0aGUga2lja3N0YXJ0IGZpbGUgZ2l2ZW4gdG8gdGhhdAorICAgICAgICBwYXJ0aXRpb24uCisgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgcGFydGl0aW9uIGlzIHNldCB1cCB1c2luZyB0aGUgZm9sbG93aW5nCisgICAgICAgIGNvbW1hbmQgaW4gYSBraWNrc3RhcnQgZmlsZToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYSAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgVGhlIG1ldGhvZHMgZGVmaW5lZCBhcyBjbGFzcyBtZW1iZXJzIG9mIHRoZSBtYXRjaGluZworICAgICAgICBzb3VyY2UgcGx1Zy1pbiAoaS5lLiA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3M8L2ZpbGVuYW1lPikKKyAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5weTwvZmlsZW5hbWU+IHBsdWctaW4gZmlsZQorICAgICAgICBhcmUgdXNlZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVG8gYmUgbW9yZSBjb25jcmV0ZSwgaGVyZSBpcyB0aGUgY29ycmVzcG9uZGluZyBwbHVnLWluCisgICAgICAgIGRlZmluaXRpb24gZnJvbSB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBmb3IgdGhlIHByZXZpb3VzIGNvbW1hbmQgYWxvbmcgd2l0aCBhbiBleGFtcGxlCisgICAgICAgIG1ldGhvZCBjYWxsZWQgYnkgdGhlIFdpYyBpbXBsZW1lbnRhdGlvbiB3aGVuIGl0IG5lZWRzIHRvCisgICAgICAgIHByZXBhcmUgYSBwYXJ0aXRpb24gdXNpbmcgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMKKyAgICAgICAgZnVuY3Rpb246CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYm9vdGltZy1wY2Jpb3MucHkKKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgY2xhc3MgQm9vdGltZ1BjYmlvc1BsdWdpbihTb3VyY2VQbHVnaW4pOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIE1CUiBib290IHBhcnRpdGlvbiBhbmQgaW5zdGFsbCBzeXNsaW51eCBvbiBpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgbmFtZSA9ICdib290aW1nLXBjYmlvcycKKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyZWF0b3IsIGNyX3dvcmtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIENhbGxlZCB0byBkbyB0aGUgYWN0dWFsIGNvbnRlbnQgcG9wdWxhdGlvbiBmb3IgYSBwYXJ0aXRpb24gaS5lLiBpdAorICAgICAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgcHJlcGFyZSBjb250ZW50IGZvciBsZWdhY3kgYmlvcyBib290IHBhcnRpdGlvbi4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIElmIGEgc3ViY2xhc3MgKHBsdWctaW4pIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgYQorICAgICAgICBwYXJ0aWN1bGFyIGZ1bmN0aW9uLCBXaWMgbG9jYXRlcyBhbmQgdXNlcyB0aGUgZGVmYXVsdAorICAgICAgICB2ZXJzaW9uIGluIHRoZSBzdXBlcmNsYXNzLgorICAgICAgICBJdCBpcyBmb3IgdGhpcyByZWFzb24gdGhhdCBhbGwgc291cmNlIHBsdWctaW5zIGFyZSBkZXJpdmVkCisgICAgICAgIGZyb20gdGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVkIGluCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUgZGVmaW5lcworICAgICAgICBhIHNldCBvZiBtZXRob2RzIHRoYXQgc291cmNlIHBsdWctaW5zIGNhbiBpbXBsZW1lbnQgb3IKKyAgICAgICAgb3ZlcnJpZGUuCisgICAgICAgIEFueSBwbHVnLWlucyAoc3ViY2xhc3Mgb2YKKyAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+KSB0aGF0IGRvIG5vdCBpbXBsZW1lbnQKKyAgICAgICAgYSBwYXJ0aWN1bGFyIG1ldGhvZCBpbmhlcml0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgbWV0aG9kIGZyb20gdGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUgZm9yIGRldGFpbHM6CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIG1ldGhvZHMgaW1wbGVtZW50ZWQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENhbGxlZCB0byBwb3B1bGF0ZSBhIHBhcnRpdGlvbiB3aXRoIGFjdHVhbCBjb250ZW50LgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgbWV0aG9kIHByZXBhcmVzIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpbWFnZSB0aGF0IGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgIGRpc2sgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb25maWd1cmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENhbGxlZCBiZWZvcmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcHJlcGFyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgY3JlYXRlIGN1c3RvbSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBhIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgIChlLmcuIHN5c2xpbnV4IG9yIGdydWIgY29uZmlndXJhdGlvbiBmaWxlcykuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsX2Rpc2soKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2FsbGVkIGFmdGVyIGFsbCBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcmVwYXJlZCBhbmQKKyAgICAgICAgICAgICAgICBhc3NlbWJsZWQgaW50byBhIGRpc2sgaW1hZ2UuCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgcHJvdmlkZXMgYSBob29rIHRvIGFsbG93IGZpbmFsaXphdGlvbgorICAgICAgICAgICAgICAgIG9mIGEgZGlzayBpbWFnZSAoZS5nLiB3cml0aW5nIGFuIE1CUikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19zdGFnZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgU3BlY2lhbCBjb250ZW50LXN0YWdpbmcgaG9vayBjYWxsZWQgYmVmb3JlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3JtYWxseSBlbXB0eS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UeXBpY2FsbHksIGEgcGFydGl0aW9uIGp1c3QgdXNlcyB0aGUgcGFzc2VkLWluCisgICAgICAgICAgICAgICAgcGFyYW1ldGVycyAoZS5nLiB0aGUgdW5tb2RpZmllZCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ib290aW1nX2RpcjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpbiBzb21lIGNhc2VzLCB0aGluZ3MgbWlnaHQgbmVlZCB0byBiZQorICAgICAgICAgICAgICAgIG1vcmUgdGFpbG9yZWQuCisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2VydGFpbiBmaWxlcyBtaWdodCBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIHRha2VuIGZyb20KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXIgKyAvYm9vdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoaXMgaG9vayBhbGxvd3MgdGhvc2UgZmlsZXMgdG8gYmUgc3RhZ2VkIGluIGEKKyAgICAgICAgICAgICAgICBjdXN0b21pemVkIGZhc2hpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRfYml0YmFrZV92YXIoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gYWNjZXNzIG5vbi1zdGFuZGFyZCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWlnaHQgd2FudCB0byB1c2UgZm9yIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBleHRlbmQgdGhlIHNvdXJjZSBwbHVnLWluIG1lY2hhbmlzbS4KKyAgICAgICAgVG8gYWRkIG1vcmUgaG9va3MsIGNyZWF0ZSBtb3JlIHNvdXJjZSBwbHVnLWluIG1ldGhvZHMKKyAgICAgICAgd2l0aGluIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBhbmQgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgZGVyaXZlZCBzdWJjbGFzc2VzLgorICAgICAgICBUaGUgY29kZSB0aGF0IGNhbGxzIHRoZSBwbHVnLWluIG1ldGhvZHMgdXNlcyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBsdWdpbi5nZXRfc291cmNlX3BsdWdpbl9tZXRob2RzKCk8L2ZpbGVuYW1lPgorICAgICAgICBmdW5jdGlvbiB0byBmaW5kIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIGNhbGwuCisgICAgICAgIFJldHJpZXZhbCBvZiB0aG9zZSBtZXRob2RzIGlzIGFjY29tcGxpc2hlZCBieSBmaWxsaW5nIHVwCisgICAgICAgIGEgZGljdCB3aXRoIGtleXMgdGhhdCBjb250YWluIHRoZSBtZXRob2QgbmFtZXMgb2YgaW50ZXJlc3QuCisgICAgICAgIE9uIHN1Y2Nlc3MsIHRoZXNlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbAorICAgICAgICBtZXRob2RzLgorICAgICAgICBTZWUgdGhlIFdpYyBpbXBsZW1lbnRhdGlvbiBmb3IgZXhhbXBsZXMgYW5kIGRldGFpbHMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0neDMyJz4KICAgICA8dGl0bGU+eDMyPC90aXRsZT4KIApAQCAtMTMxMCw3ICsxNTc3LDcgQEAKICAgICAgICAgICAgIFRoZSBXYXlsYW5kIHByb3RvY29sIGxpYnJhcmllcyBhbmQgdGhlIHJlZmVyZW5jZSBXZXN0b24gY29tcG9zaXRvcgogICAgICAgICAgICAgc2hpcCBhcyBpbnRlZ3JhdGVkIHBhY2thZ2VzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGxheWVyCiAgICAgICAgICAgICBvZiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuIGZpbmQgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCBib3RoIFdheWxhbmQKICAgICAgICAgICAgIGFuZCBXZXN0b24gYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kPC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KQEAgLTE0MjUsOCArMTY5Miw4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBoZWxwIHlvdSBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cyBvcGVuCiAgICAgICAgIHNvdXJjZSBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHByb2R1Y3QsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9qZWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2plY3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHNlY3Rpb24gaWQ9InVzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNIj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbAppbmRleCBkMDgwMzE2Li4xM2Q5YWQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC91c2luZ3Bva3kueG1sCkBAIC00MiwxMSArNDIsOSBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIHNldCB1cCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBieSBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgb3IKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgogICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyBbPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+XQpAQCAtNTYsNyArNTQsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+YnVpbGRfZGlyPC9yZXBsYWNlYWJsZT4gYXJndW1lbnQgaXMgb3B0aW9uYWwgYW5kIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHRoZQogICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIGZvciB0aGUgYnVpbGQgLQotICAgICAgICAgICAgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIEJ1aWxkIERpcmVjdG9yeSwgaXQgZGVmYXVsdHMgdG8gYSBkaXJlY3RvcnkKICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIEEgY29tbW9uIHByYWN0aWNlIGlzIHRvIHVzZSBhIGRpZmZlcmVudCBCdWlsZCBEaXJlY3RvcnkgZm9yIGRpZmZlcmVudCB0YXJnZXRzLgpAQCAtMTA4LDcgKzEwNyw3IEBACiAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIHRoZSBuYW1lIG9mIHRoZSByZWNpcGUgeW91IHdhbnQgdG8gYnVpbGQuCiAgICAgICAgICAgICBDb21tb24gdGFyZ2V0cyBhcmUgdGhlIGltYWdlcyBpbiA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzPC9maWxlbmFtZT4sCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzPC9maWxlbmFtZT4sIGV0Yy4gYWxsIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBPciwgdGhlIHRhcmdldCBjYW4gYmUgdGhlIG5hbWUgb2YgYSByZWNpcGUgZm9yIGEgc3BlY2lmaWMgcGllY2Ugb2Ygc29mdHdhcmUgc3VjaCBhcwogICAgICAgICAgICAgQnVzeUJveC4KICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGltYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cywgc2VlIHRoZQpAQCAtMTQyLDExICsxNDEsMTIgQEAKICAgICA8cGFyYT4KICAgICAgICAgT25jZSBhbiBpbWFnZSBoYXMgYmVlbiBidWlsdCwgaXQgb2Z0ZW4gbmVlZHMgdG8gYmUgaW5zdGFsbGVkLgogICAgICAgICBUaGUgaW1hZ2VzIGFuZCBrZXJuZWxzIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFyZSBwbGFjZWQgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4gaW4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+IGluCiAgICAgICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBwcmUtYnVpbHQgaW1hZ2VzIHN1Y2ggYXMgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgogICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgIG1hbnVhbC4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBpbnN0YWxsIHRoZXNlIGltYWdlcywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB5b3VyCiAgICAgICAgIHBhcnRpY3VsYXIgYm9hcmQgb3IgbWFjaGluZS4KICAgICA8L3BhcmE+CkBAIC0xNzcsMTYgKzE3NywxNyBAQAogICAgICAgICBnb2luZyB3cm9uZy4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbmFibGUgYW5kIHVzZSB0aGlzIGZlYXR1cmUsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+VXNpbmcgdGhlIEVycm9yIFJlcG9ydGluZyBUb29sPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KICAgICAgICAgRm9yIGRpc2N1c3Npb25zIG9uIGRlYnVnZ2luZywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1nZGItcmVtb3RlZGVidWcnPkRlYnVnZ2luZyBXaXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBSZW1vdGVseTwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BlcidzIE1hbnVhbAorICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICAgICAgICAgYW5kIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjYWR0LWVjbGlwc2UnPldvcmtpbmcgd2l0aGluIEVjbGlwc2U8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxub3RlPgpAQCAtMjA4LDcgKzIwOSw3IEBACiAgICAgICAgICAgICAoPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPikgbWlnaHQgYmUgaW4KICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL2xvZy5kb19jb21waWxlPC9maWxlbmFtZT4uCiAgICAgICAgICAgICBUbyBzZWUgdGhlIGNvbW1hbmRzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPiByYW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gcmFuCiAgICAgICAgICAgICB0byBnZW5lcmF0ZSBhIGxvZywgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KQEAgLTg3NCw3ICs4NzUsNyBAQAogICAgICAgICAgICAgY2xhc3MgaW1wbGVtZW50cyB0aGVzZSBmdW5jdGlvbnMuCiAgICAgICAgICAgICBTZWUgdGhhdCBjbGFzcyBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPiBmb2xkZXIgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTc4LDcgKzk3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgKHVzdWFsbHkgPGZpbGVuYW1lPnRtcC88L2ZpbGVuYW1lPiwgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4pCiAgICAgICAgICAgICAgICAgICAgIGNhbiBvZnRlbiBmaXggdGVtcG9yYXJ5IGJ1aWxkIGlzc3Vlcy4KICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYQogICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZWx5IGNoZWFwIG9wZXJhdGlvbiwgYmVjYXVzZSB0YXNrIG91dHB1dCB3aWxsIGJlCkBAIC0xMDMxLDkgKzEwMzIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyc+QnVnemlsbGE8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHN1Ym1pdCBhIGJ1ZyBhZ2FpbnN0Ci0gICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN0cmFja2luZy1idWdzJz5UcmFja2luZyBCdWdzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZSBZb2N0byBQcm9qZWN0IEJ1Z3ppbGxhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPndpa2kgcGFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz5TdWJtaXR0aW5nIGEgRGVmZWN0IEFnYWluc3QgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWxzIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQgcGxhY2UgdG8gZG9jdW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYSBsaW1pdGVkCkBAIC0xMDQ2LDYgKzEwNTAsMzc2IEBACiAgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgogCis8c2VjdGlvbiBpZD0ncmVmLXF1aWNrLWVtdWxhdG9yLXFlbXUnPgorICAgIDx0aXRsZT5RdWljayBFTVVsYXRvciAoUUVNVSk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKQorICAgICAgICBPcGVuIFNvdXJjZSBwcm9qZWN0IGFzIHBhcnQgb2YgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgInRvb2wKKyAgICAgICAgc2V0Ii4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCBRRU1VIGlzIGFuCisgICAgICAgIGVtdWxhdG9yIGFuZCB2aXJ0dWFsaXphdGlvbiBtYWNoaW5lIHRoYXQgYWxsb3dzIHlvdSB0byBydW4gYSBjb21wbGV0ZQorICAgICAgICBpbWFnZSB5b3UgaGF2ZSBidWlsdCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhcyBqdXN0IGFub3RoZXIgdGFzaworICAgICAgICBvbiB5b3VyIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgUUVNVSBpcyB1c2VmdWwgZm9yIHJ1bm5pbmcgYW5kIHRlc3RpbmcgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgb24KKyAgICAgICAgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgYXJjaGl0ZWN0dXJlcyB3aXRob3V0IGhhdmluZyBhY3R1YWwgaGFyZHdhcmUuCisgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBRRU1VIHRvIHJ1biBhdXRvbWF0ZWQKKyAgICAgICAgUXVhbGl0eSBBc3N1cmFuY2UgKFFBKSB0ZXN0cyBvbiBmaW5hbCBpbWFnZXMgc2hpcHBlZCB3aXRoIGVhY2gKKyAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCB0aGUgc2FtZSBhcyBRRU1VIGluIGdlbmVyYWwuCisgICAgICAgIDwvbm90ZT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgYnJpZWYgcmVmZXJlbmNlIGZvciB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBRRU1VLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3Igb2ZmaWNpYWwgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gUUVNVSBpbiBnZW5lcmFsLCBzZWUgdGhlCisgICAgICAgIGZvbGxvd2luZyByZWZlcmVuY2VzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9NYWluX1BhZ2UnPlFFTVUgV2Vic2l0ZTwvdWxpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIG9mZmljaWFsIHdlYnNpdGUgZm9yIHRoZSBRRU1VIE9wZW4gU291cmNlIHByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL01hbnVhbCc+RG9jdW1lbnRhdGlvbjwvdWxpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIFFFTVUgdXNlciBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBRRU1VLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKKyAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtYXZhaWxhYmlsaXR5Jz4KKyAgICAgICAgPHRpdGxlPlFFTVUgQXZhaWxhYmlsaXR5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFFFTVUgaXMgbWFkZSBhdmFpbGFibGUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhIG51bWJlciBvZiB3YXlzLgorICAgICAgICAgICAgT25lIG1ldGhvZCBpcyB0byBpbnN0YWxsIGEgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIG1ha2Ugc3VyZSB5b3UgaGF2ZQorICAgICAgICAgICAgUUVNVSBhdmFpbGFibGUsIHNlZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3RoZS1xZW11LWVtdWxhdG9yJz5UaGUgUUVNVSBFbXVsYXRvcjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtcGVyZm9ybWFuY2UnPgorICAgICAgICA8dGl0bGU+UUVNVSBQZXJmb3JtYW5jZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyBRRU1VIHRvIGVtdWxhdGUgeW91ciBoYXJkd2FyZSBjYW4gcmVzdWx0IGluIHNwZWVkIGlzc3VlcworICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlIG1peC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBpbWFnZSBpbiB0aGUKKyAgICAgICAgICAgIGVtdWxhdG9yIG9uIGFuIEludGVsLWJhc2VkIDMyLWJpdCAoeDg2KSBob3N0IG1hY2hpbmUgaXMgZmFzdAorICAgICAgICAgICAgYmVjYXVzZSB0aGUgdGFyZ2V0IGFuZCBob3N0IGFyY2hpdGVjdHVyZXMgbWF0Y2guCisgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgIG9uIHRoZSBzYW1lIEludGVsLWJhc2VkIGhvc3QgY2FuIGJlIHNsb3dlci4KKyAgICAgICAgICAgIEJ1dCwgeW91IHN0aWxsIGFjaGlldmUgZmFpdGhmdWwgZW11bGF0aW9uIG9mIEFSTS1zcGVjaWZpYyBpc3N1ZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNwZWVkIHRoaW5ncyB1cCwgdGhlIFFFTVUgaW1hZ2VzIHN1cHBvcnQgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPiB0byBjYWxsIGEgY3Jvc3MtY29tcGlsZXIgb3V0c2lkZSB0aGUKKyAgICAgICAgICAgIGVtdWxhdGVkIHN5c3RlbS4KKyAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdG8gc3RhcnQgUUVNVSwgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjY2Q8L2ZpbGVuYW1lPiBhcHBsaWNhdGlvbiBpcyBwcmVzZW50IG9uIHRoZSBob3N0CisgICAgICAgICAgICBzeXN0ZW0sIGFueSBCaXRCYWtlIGNyb3NzLWNvbXBpbGluZyB0b29sY2hhaW4gYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXMgYXV0b21hdGljYWxseSB1c2VkIGZyb20gd2l0aGluIFFFTVUgc2ltcGx5IGJ5CisgICAgICAgICAgICBjYWxsaW5nIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGRlZmluaW5nIHRoZSBjcm9zcy1jb21waWxlciB2YXJpYWJsZQorICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmV4cG9ydCBDQz0iZGlzdGNjIjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYSBzdWl0YWJsZSBTREsgaW1hZ2Ugb3IgdGhlCisgICAgICAgICAgICBhcHByb3ByaWF0ZSBzdGFuZC1hbG9uZSB0b29sY2hhaW4gaXMgcHJlc2VudCwgdGhlIHRvb2xjaGFpbiBpcworICAgICAgICAgICAgYWxzbyBhdXRvbWF0aWNhbGx5IHVzZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFNldmVyYWwgbWVjaGFuaXNtcyBleGlzdCB0aGF0IGxldCB5b3UgY29ubmVjdCB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICBydW5uaW5nIG9uIHRoZSBRRU1VIGVtdWxhdG9yOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFFFTVUgcHJvdmlkZXMgYSBmcmFtZWJ1ZmZlciBpbnRlcmZhY2UgdGhhdCBtYWtlcyBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgICBjb25zb2xlcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5LCBoZWFkbGVzcyBlbWJlZGRlZCBkZXZpY2VzIGhhdmUgYSBzZXJpYWwgcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgSWYgc28sIHlvdSBjYW4gY29uZmlndXJlIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGltYWdlIHRvIHVzZSB0aGF0IHBvcnQgdG8gcnVuIGEgY29uc29sZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvbm5lY3Rpb24gdXNlcyBzdGFuZGFyZCBJUCBuZXR3b3JraW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNTSCBzZXJ2ZXJzIGV4aXN0IGluIHNvbWUgUUVNVSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gUUVNVSBpbWFnZSBoYXMgYQorICAgICAgICAgICAgICAgICAgICBEcm9wYmVhciBzZWN1cmUgc2hlbGwgKFNTSCkgc2VydmVyIHRoYXQgcnVucyB3aXRoIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLWxzYjwvZmlsZW5hbWU+IFFFTVUgaW1hZ2VzCisgICAgICAgICAgICAgICAgICAgIGhhdmUgT3BlblNTSCBpbnN0ZWFkIG9mIERyb3BiZWFyLgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRpbmcgdGhlc2UgU1NIIHNlcnZlcnMgYWxsb3cgeW91IHRvIHVzZSBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5zY3A8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBRRU1VIGltYWdlLAorICAgICAgICAgICAgICAgICAgICBob3dldmVyLCBjb250YWlucyBubyBTU0ggc2VydmVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgcHJvdmlkZWQsIHVzZXItc3BhY2UgTkZTIHNlcnZlciB0byBib290CisgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHNlc3Npb24gdXNpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gb24gdGhlIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIG1ha2UgdGhpcyBjb25uZWN0aW9uLCB5b3UgbXVzdCBleHRyYWN0IGEKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11LWV4dHJhY3Qtc2RrPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgY29tbWFuZCwgeW91IG11c3QgdGhlbiBwb2ludCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgdG8gdGhlIGV4dHJhY3RlZCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBpbWFnZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNxZW11LXJ1bm5pbmctdW5kZXItYS1uZXR3b3JrLWZpbGUtc3lzdGVtLW5mcy1zZXJ2ZXInPlJ1bm5pbmcgVW5kZXIgYSBOZXR3b3JrIEZpbGUgU3lzdGVtIChORlMpIFNlcnZlcjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWNvbW1hbmQtbGluZS1zeW50YXgnPgorICAgICAgICA8dGl0bGU+UUVNVSBDb21tYW5kLUxpbmUgU3ludGF4PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgWzxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxhY2VhYmxlPiBdICBbLi4uXQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQmFzZWQgb24gd2hhdCB5b3UgcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkb2VzIGEgZ29vZCBqb2Igb2YgZmlndXJpbmcgb3V0IHdoYXQKKyAgICAgICAgICAgIHlvdSBhcmUgdHJ5aW5nIHRvIGRvLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIFFFTVUgbG9va3MgZm9yIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0CisgICAgICAgICAgICBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIHRpbWVzdGFtcCB3aGVuIGl0IG5lZWRzIHRvIGxvb2sgZm9yIGFuCisgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgIE1pbmltYWxseSwgdGhyb3VnaCB0aGUgdXNlIG9mIG9wdGlvbnMsIHlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyCisgICAgICAgICAgICBhIG1hY2hpbmUgbmFtZSwgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+KndpYy52bWRrPC9maWxlbmFtZT4pLCBvciBhIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJpbjwvZmlsZW5hbWU+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21tYW5kLWxpbmUgaGVscCBvdXRwdXQgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgLS1oZWxwCisKKyAgICAgVXNhZ2U6IHlvdSBjYW4gcnVuIHRoaXMgc2NyaXB0IHdpdGggYW55IHZhbGlkIGNvbWJpbmF0aW9uCisgICAgIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgorICAgICAgIEtFUk5FTCAtIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSB0byB1c2UKKyAgICAgICBST09URlMgLSB0aGUgcm9vdGZzIGltYWdlIGZpbGUgb3IgbmZzcm9vdCBkaXJlY3RvcnkgdG8gdXNlCisgICAgICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCisgICAgICAgU2ltcGxpZmllZCBRRU1VIGNvbW1hbmQtbGluZSBvcHRpb25zIGNhbiBiZSBwYXNzZWQgd2l0aDoKKyAgICAgICAgIG5vZ3JhcGhpYyAtIGRpc2FibGUgdmlkZW8gY29uc29sZQorICAgICAgICAgc2VyaWFsIC0gZW5hYmxlIGEgc2VyaWFsIGNvbnNvbGUgb24gL2Rldi90dHlTMAorICAgICAgICAgc2xpcnAgLSBlbmFibGUgdXNlciBuZXR3b3JraW5nLCBubyByb290IHByaXZpbGVnZXMgaXMgcmVxdWlyZWQKKyAgICAgICAgIGt2bSAtIGVuYWJsZSBLVk0gd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQorICAgICAgICAga3ZtLXZob3N0IC0gZW5hYmxlIEtWTSB3aXRoIHZob3N0IHdoZW4gcnVubmluZyB4ODYveDg2XzY0IChWVC1jYXBhYmxlIENQVSByZXF1aXJlZCkKKyAgICAgICAgIHB1YmxpY3ZuYyAtIGVuYWJsZSBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMKKyAgICAgICAgIGF1ZGlvIC0gZW5hYmxlIGF1ZGlvCisgICAgICAgICBbKi9db3ZtZiogLSBPVk1GIGZpcm13YXJlIGZpbGUgb3IgYmFzZSBuYW1lIGZvciBib290aW5nIHdpdGggVUVGSQorICAgICAgIHRjcHNlcmlhbD0mbHQ7cG9ydCZndDsgLSBzcGVjaWZ5IHRjcCBzZXJpYWwgcG9ydCBudW1iZXIKKyAgICAgICBiaW9zZGlyPSZsdDtkaXImZ3Q7IC0gc3BlY2lmeSBjdXN0b20gYmlvcyBkaXIKKyAgICAgICBiaW9zZmlsZW5hbWU9Jmx0O2ZpbGVuYW1lJmd0OyAtIHNwZWNpZnkgYmlvcyBmaWxlbmFtZQorICAgICAgIHFlbXVwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKKyAgICAgICBib290cGFyYW1zPSZsdDt4eXomZ3Q7IC0gc3BlY2lmeSBjdXN0b20ga2VybmVsIHBhcmFtZXRlcnMgZHVyaW5nIGJvb3QKKyAgICAgICBoZWxwLCAtaCwgLS1oZWxwOiBwcmludCB0aGlzIHRleHQKKworICAgICBFeGFtcGxlczoKKyAgICAgICBydW5xZW11CisgICAgICAgcnVucWVtdSBxZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LyZsdDtxZW11Ym9vdC5jb25mJmd0OworICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCBjb3JlLWltYWdlLXNhdG8gZXh0NAorICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCB3aWMtaW1hZ2UtbWluaW1hbCB3aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KKyAgICAgICBydW5xZW11IHFlbXV4ODYgcWVtdXBhcmFtcz0iLW0gMjU2IgorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBib290cGFyYW1zPSJwc3BsYXNoPWZhbHNlIgorICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vJmx0O2ltYWdlJmd0Oy0mbHQ7bWFjaGluZSZndDsud2ljLnZtZGsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdydW5xZW11LWNvbW1hbmQtbGluZS1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gQ29tbWFuZC1MaW5lIE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3B0aW9ucyB5b3UgY2FuIHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBwcm92aWRlIHNvbWUgImlsbGVnYWwiIG9wdGlvbiBjb21iaW5hdGlvbiBvciBwZXJoYXBzCisgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBwcm92aWRlIGVub3VnaCBpbiB0aGUgd2F5IG9mIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBwcm92aWRlcyBhcHByb3ByaWF0ZSBlcnJvcgorICAgICAgICAgICAgICAgIG1lc3NhZ2luZyB0byBoZWxwIHlvdSBjb3JyZWN0IHRoZSBwcm9ibGVtLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgUUVNVSBtYWNoaW5lIGFyY2hpdGVjdHVyZSwgd2hpY2ggbXVzdCBiZSAicWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJxZW11YXJtNjQiLCAicWVtdW1pcHMiLCAicWVtdW1pcHM2NCIsICJxZW11cHBjIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLCBvciAicWVtdXg4Ni02NCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5WTTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UsIHdoaWNoIG11c3QgYmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IHdhbnQgdG8gYm9vdCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlIGZpbGVuYW1lIHlvdSBwcm92aWRlIG11c3QgY29udGFpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzdHJpbmdzOiAicWVtdXg4Ni02NCIsICJxZW11eDg2IiwgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdW1pcHM2NCIsICJxZW11bWlwcyIsICJxZW11cHBjIiwgb3IgInFlbXVzaDQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ST09URlM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgQSByb290IGZpbGVzeXN0ZW0gdGhhdCBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGUgZXh0ZW5zaW9uczogImV4dDIiLCAiZXh0MyIsICJleHQ0IiwgImpmZnMyIiwKKyAgICAgICAgICAgICAgICAgICAgIm5mcyIsIG9yICJidHJmcyIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlbmFtZSB5b3UgcHJvdmlkZSBmb3IgdGhpcyBvcHRpb24gdXNlcyDigJxuZnPigJ0sIGl0CisgICAgICAgICAgICAgICAgICAgIG11c3QgcHJvdmlkZSBhbiBleHBsaWNpdCByb290IGZpbGVzeXN0ZW0gcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGltYWdlLCB3aGljaCBpcyBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlY3RzIGl0IGFuZCBhc3N1bWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlIGlzIGEga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFFFTVUgbWFjaGluZSwgd2hpY2ggbXVzdCBiZSBvbmUKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzogInFlbXV4ODYiLCAicWVtdXg4Ni02NCIsICJxZW11YXJtIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXVhcm02NCIsICJxZW11bWlwcyIsIOKAnHFlbXVtaXBzNjQiLCBvciAicWVtdXBwYyIuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPiBvcHRpb25zIGFyZSBiYXNpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0cmllcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgaXQgYmFzZWQgb24gb3RoZXIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFtZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBpbml0aWFsIFJBTSBkaXNrIChpbml0cmFtZnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCB3aGljaCBtZWFucyB0aGUgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcGlvLmd6PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlzbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIElTTyBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmlzbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgdGhlIHZpZGVvIGNvbnNvbGUsIHdoaWNoIHNldHMgdGhlIGNvbnNvbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgInR0eXMwIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VyaWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBzZXJpYWwgY29uc29sZSBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi90dHlTMDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW9zZGlyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIGRpcmVjdG9yeSBmb3IgQklPUywgVkdBIEJJT1MgYW5kCisgICAgICAgICAgICAgICAgICAgIGtleW1hcHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NmaWxlbmFtZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBCSU9TIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVwYXJhbXM9XCI8cmVwbGFjZWFibGU+eHl6PC9yZXBsYWNlYWJsZT5cIjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgY3VzdG9tIFFFTVUgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHRvIHBhc3Mgb3B0aW9ucyBvdGhlciB0aGFuIHRoZSBzaW1wbGUKKyAgICAgICAgICAgICAgICAgICAgImt2bSIgYW5kICJzZXJpYWwiIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ym9vdHBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gYm9vdCBwYXJhbWV0ZXJzIGZvciB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGF1ZGlvIGluIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IG9wdGlvbiBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiIGluIG9yZGVyIGZvciBhdWRpbyB0byBiZQorICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+c25kX2ludGVsOHgwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnNuZF9lbnMxMzcwPC9maWxlbmFtZT4gZHJpdmVyIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGxpbnV4IGd1ZXN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbGlycDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzICJzbGlycCIgbmV0d29ya2luZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgd2F5CisgICAgICAgICAgICAgICAgICAgIG9mIG5ldHdvcmtpbmcgdGhhdCBkb2VzIG5vdCBuZWVkIHJvb3QgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGlzIG5vdCBhcyBlYXN5IHRvIHVzZSBvciBjb21wcmVoZW5zaXZlCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2t2bS1jb25kJz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIEtWTSB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IgorICAgICAgICAgICAgICAgICAgICBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gdG8gd29yaywgYWxsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0IGJlIG1ldDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gbXVzdCBiZSBlaXRoZXIKK3FlbXV4ODYiIG9yICJxZW11eDg2LTY0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdGhlIEtWTSBtb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYva3ZtPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGJvdGggd3JpdGFibGUgYW5kIHJlYWRhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtLXZob3N0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdpdGggVkhPU1Qgc3VwcG9ydCB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiCisgICAgICAgICAgICAgICAgICAgIG9yICJxZW11eDg2LTY0IiBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gd2l0aCBWSE9TVCB0byB3b3JrLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdAorICAgICAgICAgICAgICAgICAgICBiZSBtZXQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0na3ZtLWNvbmQnPmt2bTwvbGluaz4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9ucyBtdXN0IGJlIG1ldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdmlydGlvIG5ldCBkZXZpY2UsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQg4oCcc2xpcnAtZW5hYmxlZOKAnS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1YmxpY3ZuYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKwogPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz4KICAgICA8dGl0bGU+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L3RpdGxlPgogCkBAIC0xMDk5LDE1ICsxNDczLDE1IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIiBhdCB0aGUgZW5kIG9mIHlvdXIKICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IgogICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjEiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBFbmFibGluZyBidWlsZCBoaXN0b3J5IGFzIHByZXZpb3VzbHkgZGVzY3JpYmVkCi0gICAgICAgICAgICBjYXVzZXMgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29sbGVjdCBidWlsZAotICAgICAgICAgICAgb3V0cHV0IGluZm9ybWF0aW9uIGFuZCBjb21taXQgaXQgdG8gYSBsb2NhbAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiByZXBvc2l0b3J5LgorICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNvbGxlY3QgYnVpbGQgb3V0cHV0IGluZm9ybWF0aW9uIGFuZAorICAgICAgICAgICAgY29tbWl0IGl0IGFzIGEgc2luZ2xlIGNvbW1pdCB0byBhIGxvY2FsCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gcmVwb3NpdG9yeS4KICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIEVuYWJsaW5nIGJ1aWxkIGhpc3RvcnkgaW5jcmVhc2VzIHlvdXIgYnVpbGQgdGltZXMgc2xpZ2h0bHksCiAgICAgICAgICAgICAgICAgcGFydGljdWxhcmx5IGZvciBpbWFnZXMsIGFuZCBpbmNyZWFzZXMgdGhlIGFtb3VudCBvZiBkaXNrCkBAIC0xMzU3LDcgKzE3MzEsNyBAQAogICAgICAgICAgICAgICAgIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbiB3aXRob3V0CiAgICAgICAgICAgICAgICAgYW55IGhpc3RvcnkgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91cgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IgogICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjAiCkBAIC0xNjQzLDcgKzIwMTcsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeW5jKCk8L2ZpbGVuYW1lPiBjYWxscyBpbnRvIHRoZQogICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtIG9uIHRoZSBwcmluY2lwbGUgdGhhdCBpZiB0aGVyZSB3YXMgYSBzaWduaWZpY2FudAogICAgICAgICAgICAgICAgIGZhaWx1cmUsIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICBjb250ZW50cyBjb3VsZCBlYXNpbHkgYmUgcmVidWlsdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcKaW5kZXggZTlkNWIzNC4uZTY5ZTAzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sCmluZGV4IDk2NWNjY2MuLjU4NzUyNmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwKQEAgLTE0OCw5ICsxNDgsNyBAQAogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIElmIHlvdXIgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzZXR1cCB1c2VzIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IG90aGVyIHRoYW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPiwKICAgICAgICAgICAgICAgICB0aGVuIHlvdSBtdXN0IHNldAogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PRV9JTklUX0VOVl9TQ1JJUFQnPjxmaWxlbmFtZT5PRV9JTklUX0VOVl9TQ1JJUFQ8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB5b3UgdXNlLgpAQCAtMjg5LDcgKzI4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIFNESyBhbG9uZSwgY3JlYXRlIGEKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3Nkay1leHRyYS5jb25mPC9maWxlbmFtZT4gZWl0aGVyIGluCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBvciB3aXRoaW4gYW55IGxheWVyIGFuZCBwdXQgeW91cgogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT4gc2V0dGluZyB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZmlsZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtbWFycy54bWwKaW5kZXggOTk1NzA1Ny4uMmQ4MGY2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtbWFycy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtbWFycy54bWwKQEAgLTE0LDggKzE0LDggQEAKICAgICAgICAgZnJvbSBzdGFydCB0byBmaW5pc2guCiAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBFY2xpcHNlIElERSBhbmQgdGhlIFlvY3RvCiAgICAgICAgIFByb2plY3QgRWNsaXBzZSBQbHVnLUluLCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2ZWxvcGluZy1hcHBsaWNhdGlvbnMtdXNpbmctZWNsaXBzZSc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgorICAgICAgICBDaGFwdGVyLgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSdtYXJzLXNldHRpbmctdXAtdGhlLWVjbGlwc2UtaWRlJz4KQEAgLTM5Miw3ICszOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBTeXN0ZW0gRGVyaXZlZCBUb29sY2hhaW46PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIHR5cGUgaWYgeW91IGJ1aWx0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBhcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZWxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0aGUgdG9vbGNoYWluIGJ1aWx0IGFuZApAQCAtNDE4LDcgKzQxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluLCB0aGUgcGF0aCB5b3UgcHJvdmlkZSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRvb2xjaGFpbiBSb290IExvY2F0aW9uPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggeW91IHJ1biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgKGUuZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkPC9maWxlbmFtZT4pLjwvcGFyYT4KQEAgLTQzMSwxNCArNDMxLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBoYXJkd2FyZSByZXNpZGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGxvY2F0aW9uIGRlcGVuZHMgb24gd2hlcmUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseSBleHRyYWN0ZWQgYW5kIGluc3RhbGxlZCB0aGUgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGV4dHJhY3RlZCBhbmQgaW5zdGFsbGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBmaWxlc3lzdGVtIHdoZW4geW91IGVpdGhlciBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG9yIGRvd25sb2FkZWQgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkb3dubG9hZGVkIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgaXQsIHlvdSBtdXN0IGRvd25sb2FkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2F0by1zZGs8L2ZpbGVuYW1lPiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBidWlsZCBhbnkgYy9jKysgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IHByZXBhcmVkIGFuIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSA8ZmlsZW5hbWU+TVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3Ugd291bGQgYnJvd3NlIHRvIGFuZCBzZWxlY3QgdGhhdCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvYnVpbGQvTVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtNDg3LDcgKzQ5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQga2VybmVsIHlvdSBidWlsdCB3aWxsIGJlIGxvY2F0ZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KQEAgLTY5Miw3ICs3MDAsNyBAQAogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbAorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCiAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KQEAgLTgwNCw3ICs4MTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBieSBjbGlja2luZyBvbiAibmV3Ii48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0IDxmaWxlbmFtZT5TU0g8L2ZpbGVuYW1lPiwgd2hpY2ggbWVhbnMKICAgICAgICAgICAgICAgICAgICAgU2VjdXJlIFNvY2tldCBTaGVsbC4KLSAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzZWxlY3QgYW4gVENGIGNvbm5lY3Rpb24gaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzZWxlY3QgYSBUQ0YgY29ubmVjdGlvbiBpbnN0ZWFkLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIk5leHQiLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTg0OCwxMSArODU2LDMwIEBACiAgICAgICAgICAgICAgICAgICAgIGxhdW5jaC4KICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBoZWxwZnVsIGluIHRoYXQgaXQgYXV0byBmaWxscyB5b3VyIGFwcGxpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgZm9yIHlvdSBhc3N1bWluZyB5b3UgYnJvd3NlZCB0byBhIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHByb21wdGVkIHRvIHByb3ZpZGUgYSB1c2VybmFtZSBhbmQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUgeW91IHByb3ZpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICJyb290IiBhcyB0aGUgdXNlcm5hbWUgYW5kIHlvdSBsZWF2ZSB0aGUgcGFzc3dvcmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIGJsYW5rLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgdXNlcm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRvIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHByb3ZpZGUgInJvb3QiIGFzIHRoZSB1c2VybmFtZSBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBibGFuay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBicm93c2luZyB0byBhIGRpcmVjdG9yeSBmYWlscyBvciB0aW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGJ1dCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBpbnRvIHlvdXIgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YXJnZXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFuZCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBwcm94aWVzIHNldCB1cCwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBzZW5kaW5nIHRoZSBTU0ggdHJhZmZpYyB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVpdGhlciB1c2UgVENGICwgb3IgY2xpY2sgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyZSBwcm94eSBzZXR0aW5ncyIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gZGlhbG9nIGFuZCBhZGQgdGhlIHRhcmdldCBJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHRvIHRoZSAiYnlwYXNzIHByb3h5IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYWxzbyBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZlIFByb3ZpZGVyIiBmcm9tIE5hdGl2ZSB0byBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKaW5kZXggZDBjYmY5Yy4uYWI5MDU1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCkBAIC0xOCwzNyArMTgsNzggQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBmaW5kIFNESyBpbnN0YWxsZXJzIGhlcmU6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN0YW5kYXJkIFNESyBJbnN0YWxsZXJzOjwvZW1waGFzaXM+CisgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBsb2NhdGUgYW5kIGhhbmQtaW5zdGFsbCB0aGUgdG9vbGNoYWluOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBJbnN0YWxsZXJzIERpcmVjdG9yeTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEdvIHRvIDx1bGluayB1cmw9JyZZT0NUT19UT09MQ0hBSU5fRExfVVJMOyc+PC91bGluaz4KLSAgICAgICAgICAgICAgICBhbmQgZmluZCB0aGUgZm9sZGVyIHRoYXQgbWF0Y2hlcyB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCi0gICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPiBmb3IgMzItYml0IG1hY2hpbmVzIG9yCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGZvciA2NC1iaXQgbWFjaGluZXMpLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPkdvIGludG8gdGhhdCBmb2xkZXIgYW5kIGRvd25sb2FkIHRoZSBTREsgaW5zdGFsbGVyCi0gICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBpbmNsdWRlcyB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWlucyBwcm92aWRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhcmUgYmFzZWQgb2ZmIG9mCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSBhbmQgY29udGFpbgotICAgICAgICAgICAgICAgIGxpYnJhcmllcyBhcHByb3ByaWF0ZSBmb3IgZGV2ZWxvcGluZyBhZ2FpbnN0IHRoYXQgaW1hZ2UuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYSA2NC1iaXQgeDg2Ci0gICAgICAgICAgICAgICAgc3lzdGVtIGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZSB5b3VyIGNyb3NzLXRvb2xjaGFpbiBmb3IgYQotICAgICAgICAgICAgICAgIDMyLWJpdCB4ODYgdGFyZ2V0LCBnbyBpbnRvIHRoZSA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmb2xkZXIgYW5kIGRvd25sb2FkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVyOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWk1ODYtdG9vbGNoYWluLSZESVNUUk87LnNoCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FeHRlbnNpYmxlIFNESyBJbnN0YWxsZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW5zdGFsbGVycyBmb3IgdGhlIGV4dGVuc2libGUgU0RLIGFyZSBhbHNvIGxvY2F0ZWQgaW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIFRoZXNlIGluc3RhbGxlcnMgaGF2ZSB0aGUgc3RyaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDwvZmlsZW5hbWU+IGFzIHBhcnQgb2YgdGhlaXIgbmFtZXM6CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW4gdGhlIEZvbGRlciBmb3IgWW91ciBEZXZlbG9wbWVudCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPcGVuIHRoZSBmb2xkZXIgdGhhdCBtYXRjaGVzIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+aTY4NjwvZmlsZW5hbWU+IGZvciAzMi1iaXQgbWFjaGluZXMgb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZm9yIDY0LWJpdCBtYWNoaW5lcykuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSBhbmQgRG93bmxvYWQgdGhlIFNESyBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBmaW5kIGFuZCBkb3dubG9hZCB0aGUgaW5zdGFsbGVyIGFwcHJvcHJpYXRlIGZvcgorICAgICAgICAgICAgICAgIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLCB0YXJnZXQgaGFyZHdhcmUsIGFuZCBpbWFnZSB0eXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBpbnN0YWxsZXIgZmlsZXMgKDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4pIGZvbGxvdworICAgICAgICAgICAgICAgIHRoaXMgbmFtaW5nIGNvbnZlbnRpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5LWVnbGliYy08cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPi1jb3JlLWltYWdlLTxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi10b29sY2hhaW4tZXh0LTxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT4uc2gKKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5ob3N0X3N5c3RlbTwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB5b3VyIGRldmVsb3BtZW50IHN5c3RlbToKKyAgICAgICAgICAgICAgICBpNjg2IG9yIHg4Nl82NC4KKworICAgICAgICAgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgZWl0aGVyIGEgInNhdG8iIG9yICJtaW5pbWFsIgorICAgICAgICAgICAgICAgIGltYWdlLgorCisgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZToKKyAgICAgICAgICAgICAgICBhYXJjaDY0LCBhcm12NWUsIGNvcmUyLTY0LCBjb3JldGV4YThoZi1uZW9uLCBpNTg2LCBtaXBzMzI0MiwKKyAgICAgICAgICAgICAgICBtaXBzNjQsIG9yIHBwYzc0MDAuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIHZlcnNpb24gb2YgWW9jdG8gUHJvamVjdC4KKworICAgICAgICAgTk9URToKKyAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBTREsgaW5zdGFsbGVyIGRvZXMgbm90IGhhdmUgdGhlICItZXh0IiBzdHJpbmcgYXMKKyAgICAgICAgICAgIHBhcnQgb2YgdGhlIGZpbGVuYW1lLgorCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSB0b29sY2hhaW5zIHByb3ZpZGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGFyZSBiYXNlZCBvZmYgb2YKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZXMgYW5kIGNvbnRhaW4KKyAgICAgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aG9zZSBpbWFnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGV4YW1wbGUsIGlmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYQorICAgICAgICAgICAgICAgIDY0LWJpdCB4ODYgc3lzdGVtIGFuZCB5b3UgYXJlIG5lZWQgYW4gZXh0ZW5kZWQgU0RLIGZvciBhCisgICAgICAgICAgICAgICAgNjQtYml0IGNvcmUyIHRhcmdldCwgZ28gaW50byB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIGFuZCBkb3dubG9hZCB0aGUgZm9sbG93aW5nIGluc3RhbGxlcjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1jb3JlMi02NC10b29sY2hhaW4tZXh0LSZESVNUUk87LnNoCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UnVuIHRoZSBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBoYXZlIGV4ZWN1dGlvbiBwcml2aWxlZ2VzIGFuZCBydW4gdGhlIGluc3RhbGxlci4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZSA8ZmlsZW5hbWU+RG93bmxvYWRzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIH4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1jb3JlMi02NC10b29sY2hhaW4tZXh0LSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24gb2YgdGhlIHNjcmlwdCwgeW91IGNob29zZSB0aGUgcm9vdCBsb2NhdGlvbgorICAgICAgICAgICAgICAgIGZvciB0aGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIFN0YW5kYXJkIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1leHRlbnNpYmxlLXNkay1kaXJlY3Rvcnktc3RydWN0dXJlJz5JbnN0YWxsZWQgRXh0ZW5zaWJsZSBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTU3LDY1ICs5OCwxMzUgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBBcyBhbiBhbHRlcm5hdGl2ZSB0byBsb2NhdGluZyBhbmQgZG93bmxvYWRpbmcgYSBTREsgaW5zdGFsbGVyLAotICAgICAgICB5b3UgY2FuIGJ1aWxkIHRoZSBTREsgaW5zdGFsbGVyIGFzc3VtaW5nIHlvdSBoYXZlIGZpcnN0IHNvdXJjZWQKLSAgICAgICAgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KLSAgICAgICAgU2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciBzdGVwcyB0aGF0IHNob3cgeW91Ci0gICAgICAgIGhvdyB0byBzZXQgdXAgdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCi0gICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBuZWVkIHRvIGJlIHN1cmUgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUgbWF0Y2hlcyB0aGUgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCB5b3UgYXJlIGJ1aWxkaW5nIGFuZCB0aGF0Ci0gICAgICAgIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIGlzIGNvcnJlY3RseSBzZXQgaWYgeW91IGFyZSBidWlsZGluZyBhIHRvb2xjaGFpbiBkZXNpZ25lZCB0bwotICAgICAgICBydW4gb24gYW4gYXJjaGl0ZWN0dXJlIHRoYXQgZGlmZmVycyBmcm9tIHlvdXIgY3VycmVudCBkZXZlbG9wbWVudCBob3N0Ci0gICAgICAgIG1hY2hpbmUgKGkuZS4gdGhlIGJ1aWxkIG1hY2hpbmUpLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBidWlsZCB0aGUgU0RLIGluc3RhbGxlciBmb3IgYSBzdGFuZGFyZCBTREsgYW5kIHBvcHVsYXRlCi0gICAgICAgIHRoZSBTREsgaW1hZ2UsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgeW91IGNhbiBidWlsZCB0aGUgU0RLIGluc3RhbGxlci4KKyAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+U2V0dGluZyBVcCB0aGUgRGV2ZWxvcG1lbnQgSG9zdCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhCisgICAgICAgICAgICAgICAgbmF0aXZlIExpbnV4IG1hY2hpbmUgb3IgYSBtYWNoaW5lIHRoYXQgdXNlcyBDUk9QUy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgYSBsb2NhbCBjb3B5IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgKGkuZS4gYSBsb2NhbCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkpLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBhbmQgcG9zc2libHkgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgYWxsIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFdoaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLCBydW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGRlZmluZSB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgb24geW91ciBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKKyAgICAgICAgICAgICAgICBhbmQgaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdSBBcmUgQnVpbGRpbmcgYW4gSW5zdGFsbGVyIGZvciB0aGUgQ29ycmVjdCBNYWNoaW5lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2sgdG8gYmUgc3VyZSB0aGF0IHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hdGNoZXMgdGhlIGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgU0RLIE1hY2hpbmUgaXMgQ29ycmVjdGx5IFNldDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgYnVpbGRpbmcgYSB0b29sY2hhaW4gZGVzaWduZWQgdG8gcnVuIG9uIGFuCisgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRoYXQgZGlmZmVycyBmcm9tIHlvdXIgY3VycmVudCBkZXZlbG9wbWVudCBob3N0CisgICAgICAgICAgICAgICAgbWFjaGluZSAoaS5lLiB0aGUgYnVpbGQgbWFjaGluZSksIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5IGlzIGNvcnJlY3RseSBzZXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBTREsgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVG8gYnVpbGQgdGhlIFNESyBpbnN0YWxsZXIgZm9yIGEgc3RhbmRhcmQgU0RLIGFuZCBwb3B1bGF0ZQorICAgICAgICAgICAgICAgIHRoZSBTREsgaW1hZ2UsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybS4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHJlcGxhY2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4gd2l0aAorICAgICAgICAgICAgICAgIGFuIGltYWdlIChlLmcuICJjb3JlLWltYWdlLXNhdG8iKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyBwb3B1bGF0ZV9zZGsKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBZb3UgY2FuIGRvIHRoZSBzYW1lIGZvciB0aGUgZXh0ZW5zaWJsZSBTREsgdXNpbmcgdGhpcyBjb21tYW5kOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhlIHNhbWUgZm9yIHRoZSBleHRlbnNpYmxlIFNESyB1c2luZyB0aGlzIGNvbW1hbmQKKyAgICAgICAgICAgICAgICBmb3JtOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IC1jIHBvcHVsYXRlX3Nka19leHQKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBUaGVzZSBjb21tYW5kcyByZXN1bHQgaW4gYSBTREsgaW5zdGFsbGVyIHRoYXQgY29udGFpbnMgdGhlIHN5c3Jvb3QKLSAgICAgICAgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbS4KLSAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZXNlIGNvbW1hbmRzIHJlc3VsdCBpbiBhIFNESyBpbnN0YWxsZXIgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICBzeXNyb290IHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCByb290IGZpbGVzeXN0ZW0uPC9wYXJhPgogCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBjb21wbGV0ZXMsIHRoZSBTREsKLSAgICAgICAgaW5zdGFsbGVyIHdpbGwgYmUgaW4KLSAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvc2RrPC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHRvb2xjaGFpbiBkb2VzIG5vdCBidWlsZCBzdGF0aWMgYmluYXJpZXMuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgdG9vbGNoYWluIHRvIGJ1aWxkIHRoZXNlIHR5cGVzIG9mCi0gICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIFNESyBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHN0YXRpYyBkZXZlbG9wbWVudCBsaWJyYXJpZXMuCi0gICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9UQVJHRVRfVEFTSzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW5zaWRlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgdGhlIGFwcHJvcHJpYXRlIGxpYnJhcnkgcGFja2FnZXMgaW4gdGhlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdXNpbmcgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZGV2ZWxvcG1lbnQgbGlicmFyaWVzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGNvbXBsZXRlcywKKyAgICAgICAgICAgICAgICB0aGUgU0RLIGluc3RhbGxlciB3aWxsIGJlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvc2RrPC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgdG9vbGNoYWluIGRvZXMgbm90IGJ1aWxkIHN0YXRpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgdG9vbGNoYWluIHRvIGJ1aWxkIHRoZXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMgb2YgbGlicmFyaWVzLCB5b3UgbmVlZCB0byBiZSBzdXJlIHlvdXIgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIHRoZSBhcHByb3ByaWF0ZSBzdGF0aWMgZGV2ZWxvcG1lbnQgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE9PTENIQUlOX1RBUkdFVF9UQVNLJz48ZmlsZW5hbWU+VE9PTENIQUlOX1RBUkdFVF9UQVNLPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluc2lkZSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHRvIGluc3RhbGwgdGhlIGFwcHJvcHJpYXRlIGxpYnJhcnkgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBzdGF0aWMgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBUT09MQ0hBSU5fVEFSR0VUX1RBU0tfYXBwZW5kID0gIiBsaWJjLXN0YXRpY2RldiIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIsCi0gICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biB0aGUgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IGNhbiBub3cgcnVuIHRoZSBTREsgaW5zdGFsbGVyIGZyb20KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9zZGs8L2ZpbGVuYW1lPiBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQvdG1wL2RlcGxveS9zZGsKKyAgICAgJCAuL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1jb3JlMi02NC10b29sY2hhaW4tZXh0LSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24gb2YgdGhlIHNjcmlwdCwgeW91IGNob29zZSB0aGUgcm9vdCBsb2NhdGlvbgorICAgICAgICAgICAgICAgIGZvciB0aGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIFN0YW5kYXJkIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1leHRlbnNpYmxlLXNkay1kaXJlY3Rvcnktc3RydWN0dXJlJz5JbnN0YWxsZWQgRXh0ZW5zaWJsZSBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyNiw1NSArMjM3LDEwNiBAQAogICAgICAgICBBZnRlciBpbnN0YWxsaW5nIHRoZSB0b29sY2hhaW4sIGZvciBzb21lIHVzZSBjYXNlcyB5b3UKICAgICAgICAgbWlnaHQgbmVlZCB0byBzZXBhcmF0ZWx5IGV4dHJhY3QgYSByb290IGZpbGVzeXN0ZW06CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gYm9vdCB0aGUgaW1hZ2UgdXNpbmcgTkZTLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSB3YW50IHRvIGJvb3QgdGhlIGltYWdlIHVzaW5nIE5GUy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Zb3Ugd2FudCB0byB1c2UgdGhlIHJvb3QgZmlsZXN5c3RlbSBhcyB0aGUKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBZb3Ugd2FudCB0byB1c2UgdGhlIHJvb3QgZmlsZXN5c3RlbSBhcyB0aGUKICAgICAgICAgICAgICAgICB0YXJnZXQgc3lzcm9vdC4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIEVjbGlwc2UgSURFIGVudmlyb25tZW50IHdpdGggdGhlIEVjbGlwc2UKICAgICAgICAgICAgICAgICBZb2N0byBQbHVnLWluIGluc3RhbGxlZCBhbGxvd3MgeW91IHRvIHVzZSBRRU1VIHRvIGJvb3QKLSAgICAgICAgICAgICAgICB1bmRlciBORlMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gZGV2ZWxvcCB5b3VyIHRhcmdldCBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgIHVuZGVyIE5GUy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBZb3Ugd2FudCB0byBkZXZlbG9wIHlvdXIgdGFyZ2V0IGFwcGxpY2F0aW9uCiAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHJvb3QgZmlsZXN5c3RlbSBhcyB0aGUgdGFyZ2V0IHN5c3Jvb3QuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUbyBleHRyYWN0IHRoZSByb290IGZpbGVzeXN0ZW0sIGZpcnN0IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPgotICAgICAgICB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGVzdGFibGlzaAotICAgICAgICBuZWNlc3NhcnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotICAgICAgICBJZiB5b3UgYnVpbHQgdGhlIHRvb2xjaGFpbiBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LCB5b3Ugd2lsbCBmaW5kCi0gICAgICAgIHRoZSB0b29sY2hhaW4gZW52aXJvbm1lbnQgc2NyaXB0IGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+dG1wPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICBJZiB5b3UgaW5zdGFsbGVkIHRoZSB0b29sY2hhaW4gYnkgaGFuZCwgdGhlIGVudmlyb25tZW50IHNldHVwCi0gICAgICAgIHNjcmlwdCBpcyBsb2NhdGVkIGluIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPi4KLSAgICA8L3BhcmE+CisgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBleHRyYWN0IHRoZSByb290IGZpbGVzeXN0ZW06CisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlIGFuZCBEb3dubG9hZCB0aGUgVGFyYmFsbCBmb3IgdGhlIFByZS1CdWlsdAorICAgICAgICAgICAgICAgIFJvb3QgRmlsZXN5c3RlbSBJbWFnZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZmluZCBhbmQgZG93bmxvYWQgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZQorICAgICAgICAgICAgICAgIGZpbGUgdGhhdCBpcyBhcHByb3ByaWF0ZSBmb3IgeW91ciB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSBrZXB0IGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L21hY2hpbmVzLyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSAibWFjaGluZXMiIGRpcmVjdG9yeS48L3BhcmE+CiAKLSAgICA8cGFyYT4KLSAgICAgICAgQWZ0ZXIgc291cmNpbmcgdGhlIGVudmlyb25tZW50IHNjcmlwdCwgdXNlIHRoZQotICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHByb3ZpZGUgdGhlCi0gICAgICAgIGZpbGVzeXN0ZW0gaW1hZ2UuCi0gICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSAibWFjaGluZXMiIGRpcmVjdG9yeSBjb250YWlucyB0YXJiYWxscworICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki50YXIuYnoyPC9maWxlbmFtZT4pIGZvciBzdXBwb3J0ZWQgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBhbHNvIGNvbnRhaW5zIGZsYXR0ZW5lZCByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICBpbWFnZSBmaWxlcyAoPGZpbGVuYW1lPiouZXh0NDwvZmlsZW5hbWU+KSwgd2hpY2ggeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICB3aXRoIFFFTVUgZGlyZWN0bHkuPC9wYXJhPgogCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlLgotICAgICAgICBUaGUgc2Vjb25kIGNvbW1hbmQgc2V0cyB1cCB0aGUgZW52aXJvbm1lbnQuCi0gICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHNldHVwIHNjcmlwdCBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+L29wdC9wb2t5LyZESVNUUk87PC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICBUaGUgdGhpcmQgY29tbWFuZCBleHRyYWN0cyB0aGUgcm9vdCBmaWxlc3lzdGVtIGZyb20gYSBwcmV2aW91c2x5Ci0gICAgICAgIGJ1aWx0IGZpbGVzeXN0ZW0gdGhhdCBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+fi9Eb3dubG9hZHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgIEZ1cnRoZXJtb3JlLCB0aGlzIGNvbW1hbmQgZXh0cmFjdHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbnRvIHRoZQotICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4Ni1zYXRvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4Ci0gICAgICQgcnVucWVtdS1leHRyYWN0LXNkayBcCi0gICAgICAgIH4vRG93bmxvYWRzL2NvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni0yMDExMDkxNDExODMxLnJvb3Rmcy50YXIuYnoyIFwKLSAgICAgICAgJEhPTUUvcWVtdXg4Ni1zYXRvCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgWW91IGNvdWxkIG5vdyBwb2ludCB0byB0aGUgdGFyZ2V0IHN5c3Jvb3QgYXQKLSAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtc2F0bzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBwcmUtYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIGZpbGVzCisgICAgICAgICAgICAgICAgZm9sbG93IHRoZXNlIG5hbWluZyBjb252ZW50aW9uczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGNvcmUtaW1hZ2UtPHJlcGxhY2VhYmxlPnByb2ZpbGU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LnRhci5iejIKKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5wcm9maWxlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGZpbGVzeXN0ZW0gaW1hZ2UncyBwcm9maWxlOgorICAgICAgICAgICAgICAgICAgIGxzYiwgbHNiLWRldiwgbHNiLXNkaywgbHNiLXF0MywgbWluaW1hbCwgbWluaW1hbC1kZXYsIHNhdG8sCisgICAgICAgICAgICAgICAgICAgc2F0by1kZXYsIHNhdG8tc2RrLCBtaW5pbWFsLWluaXRyYW1mcywgb3Igc2RrLXB0ZXN0LiBGb3IKKyAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGVzZSB0eXBlcyBvZiBpbWFnZSBwcm9maWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICJJbWFnZXMiIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKworICAgICAgICAgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgYmVhZ2xlYm9uZSwgZWRnZXJvdXRlciwgZ2VuZXJpY3g4NiwgZ2VuZXJpY3g4Ni02NCwgbXBjODMxNWUtcmRiLAorICAgICAgICAgICAgICAgIHFlbXVhcm0sIHFlbXVhcm02NCwgcWVtdW1pcHMsIHFlbXVtaXBzNjQsIHFlbXVwcGMsIHFlbXV4ODYsIG9yCisgICAgICAgICAgICAgICAgcWVtdXg4Ni02NC4KKworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtcyBwcm92aWRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhcmUgYmFzZWQKKyAgICAgICAgICAgICAgICBvZmYgb2YgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBleGFtcGxlLCBpZiB5b3VyIHRhcmdldCBoYXJkd2FyZSBzeXN0ZW0gaXMgYQorICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgYm9hcmQgYW5kIHlvdXIgaW1hZ2UgaXMgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZSwgeW91IG5lZWQKKyAgICAgICAgICAgICAgICB0byBkb3dubG9hZCB0aGUgZm9sbG93aW5nIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgY29yZS1pbWFnZS1taW5pbWFsLWJlYWdsZWJvbmUudGFyLmJ6MgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQ3Jvc3MtRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbXVzdCA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGVzdGFibGlzaAorICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBzY3JpcHQgaXMgbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBpbgorICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBpbnN0YWxsZWQgdGhlIHRvb2xjaGFpbiAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5X3NkazwvZmlsZW5hbWU+KS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIENvcmUyIDY0LWJpdAorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIH4vcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtY29yZTItNjQtcG9reS1saW51eAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0cmFjdCB0aGUgUm9vdCBGaWxlc3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICBhbmQgcHJvdmlkZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGNvbW1hbmQgdGhhdCBleHRyYWN0cyB0aGUgcm9vdAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gZnJvbSBhIHByZXZpb3VzbHkgYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHRoYXQKKyAgICAgICAgICAgICAgICB3YXMgZG93bmxvYWRlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2luZGV4LWRvd25sb2Fkcyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZXh0cmFjdHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbnRvIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlMi02NC1zYXRvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11LWV4dHJhY3Qtc2RrIH4vRG93bmxvYWRzL2NvcmUtaW1hZ2Utc2F0by1jb3JlMi02NC50YXIuYnoyIH4vY29yZTItNjQtc2F0bworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY291bGQgbm93IHBvaW50IHRvIHRoZSB0YXJnZXQgc3lzcm9vdCBhdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlMi02NC1zYXRvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGI4MzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbApAQCAtMCwwICsxLDEyMTEgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdzZGstZWNsaXBzZS1wcm9qZWN0Jz4KKworICAgIDx0aXRsZT5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IGFyZSBmYW1pbGlhciB3aXRoIHRoZSBwb3B1bGFyIEVjbGlwc2UgSURFLCB5b3UgY2FuIHVzZSBhbgorICAgICAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4gdG8gYWxsb3cgeW91IHRvIGRldmVsb3AsIGRlcGxveSwgYW5kIHRlc3QgeW91cgorICAgICAgICBhcHBsaWNhdGlvbiBhbGwgZnJvbSB3aXRoaW4gRWNsaXBzZS4KKyAgICAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBnZW5lcmFsIHdvcmtmbG93IHVzaW5nIHRoZSBTREsgYW5kIEVjbGlwc2UKKyAgICAgICAgYW5kIGhvdyB0byBjb25maWd1cmUgYW5kIHNldCB1cCBFY2xpcHNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSd3b3JrZmxvdy11c2luZy1lY2xpcHNlJz4KKyAgICAgICAgPHRpdGxlPldvcmtmbG93IFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIGFuZCBzdXBwb3J0aW5nIGxpc3Qgc3VtbWFyaXplIHRoZQorICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgZ2VuZXJhbCB3b3JrZmxvdyB0aGF0IGVtcGxveXMgYm90aCB0aGUKKyAgICAgICAgICAgIFNESyBFY2xpcHNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIgorICAgICAgICAgICAgICAgIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlPSIxMDAiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBob3N0IHN5c3RlbSBmb3IgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3Q8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGJvdGggaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBiZSBzdXJlIHlvdXIgaG9zdCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHRlcm08L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBhIHRhcmdldCBrZXJuZWwgaW1hZ2UgdGhhdCBoYXMgYmVlbiBidWlsdAorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBZb2N0byBQcm9qZWN0IGhhcyBhCisgICAgICAgICAgICAgICAgICAgIHByZS1idWlsdCBpbWFnZSB0aGF0IG1hdGNoZXMgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAgICAgICAgIGFuZCB3aGVyZSB5b3UgYXJlIGdvaW5nIHRvIHJ1biB0aGUgaW1hZ2Ugd2hpbGUgeW91CisgICAgICAgICAgICAgICAgICAgIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbiAoUUVNVSBvciByZWFsIGhhcmR3YXJlKSwgdGhlCisgICAgICAgICAgICAgICAgICAgIGFyZWEgZnJvbSB3aGljaCB5b3UgZ2V0IHRoZSBpbWFnZSBkaWZmZXJzLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBpbWFnZSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX01BQ0hJTkVTX0RMX1VSTDsnPjxmaWxlbmFtZT5tYWNoaW5lczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgc3VwcG9ydGVkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgZ29pbmcgdG8gZGV2ZWxvcCBhbmQgdGVzdCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gb24gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBpbWFnZSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1FFTVVfRExfVVJMOyc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmVzL3FlbXU8L2ZpbGVuYW1lPjwvdWxpbms+IGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGdvaW5nIHRvIGRldmVsb3AgYW5kIHRlc3QgeW91ciBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBRRU1VIGVtdWxhdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHlvdXIgaW1hZ2UgaWYgeW91IGNhbm5vdCBmaW5kIGEgcHJlLWJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgc2ltaWxhciB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSwgeW91IGNhbiBtb2RpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGJlZm9yZSB5b3UgYnVpbGQgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjdXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IE1hbnVhbCBmb3IgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+PGVtcGhhc2lzPkluc3RhbGwgdGhlIFNESzwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBUaGUgU0RLIHByb3ZpZGVzIGEgdGFyZ2V0LXNwZWNpZmljIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgdGhlIHJvb3QgZmlsZXN5c3RlbSwgdGhlIFFFTVUgZW11bGF0b3IsIGFuZAorICAgICAgICAgICAgICAgICAgICBvdGhlciB0b29scyB0aGF0IGNhbiBoZWxwIHlvdSBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0aGUgU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWN1cmUgdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBDcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZmluZCBhbmQgZG93bmxvYWQgdGhlIGFwcHJvcHJpYXRlIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBhbmQgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgdGFyYmFsbHMgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgYXJlYSB1c2VkIGZvciB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IGFyZSBydW5uaW5nLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHlvdSBuZWVkIGRpZmZlcnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIGRldmVsb3BpbmcgYW4gYXBwbGljYXRpb24gdGhhdAorICAgICAgICAgICAgICAgICAgICBydW5zIG9uIGFuIGltYWdlIHRoYXQgc3VwcG9ydHMgU2F0bywgeW91IG5lZWQgdG8gZ2V0IGEKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRoYXQgc3VwcG9ydHMgU2F0by48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjxmaWxlbmFtZT50b29sY2hhaW5zPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBnZXQgdGhlIGNvcnJlY3QgdG9vbGNoYWluIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QgYW5kIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nc2RrLWxvY2F0aW5nLXByZS1idWlsdC1zZGstaW5zdGFsbGVycyc+TG9jYXRpbmcgUHJlLUJ1aWx0IFNESyBJbnN0YWxsZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5zdGFsbGF0aW9uIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlIHRvIGRvd25sb2FkaW5nIGFuIFNESywgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdGhlIFNESyBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlIGluc3RhbGxlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBBbm90aGVyIGhlbHBmdWwgcmVzb3VyY2UgZm9yIGJ1aWxkaW5nIGFuIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+Q29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGFuZCBidWlsZCB5b3VyIGFwcGxpY2F0aW9uPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBuZWVkIHRvIGhhdmUgc291cmNlIGZpbGVzIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBmaWxlcywgeW91IGNhbiB1c2UgdGhlIEVjbGlwc2UgSURFCisgICAgICAgICAgICAgICAgICAgIHRvIGltcG9ydCB0aGVtIGFuZCBidWlsZCB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBub3QgdXNpbmcgRWNsaXBzZSwgeW91IG5lZWQgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29scyB5b3UgaGF2ZSBpbnN0YWxsZWQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3kgdGhlIGltYWdlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBFY2xpcHNlIElERSwgeW91IGNhbiBkZXBsb3kgeW91ciBpbWFnZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgb3IgdG8gUUVNVSB0aHJvdWdoIHRoZSBwcm9qZWN0J3MgcHJlZmVyZW5jZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgRWNsaXBzZSB0byBsb2FkIGFuZCB0ZXN0IHlvdXIgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdW5kZXIgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IGFuZCBkZWJ1ZyB0aGUgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3VyIGFwcGxpY2F0aW9uIGlzIGRlcGxveWVkLCB5b3UgbmVlZCB0byB0ZXN0IGl0LgorICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIEVjbGlwc2UgSURFLCB5b3UgY2FuIHVzZSB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGFsb25nIHdpdGggc3VwcG9ydGVkIHBlcmZvcm1hbmNlIGVuaGFuY2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5MaW51eCBUb29sczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYWR0LWVjbGlwc2UnPgorICAgICAgICA8dGl0bGU+V29ya2luZyBXaXRoaW4gRWNsaXBzZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgRWNsaXBzZSBJREUgaXMgYSBwb3B1bGFyIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCBpdAorICAgICAgICAgICAgZnVsbHkgc3VwcG9ydHMgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBQbHVnLWluIGludG8gdGhlIEVjbGlwc2UgSURFLCB5b3UgbWF4aW1pemUgeW91ciBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBleHBlcmllbmNlLgorICAgICAgICAgICAgSW5zdGFsbGluZyBhbmQgY29uZmlndXJpbmcgdGhlIFBsdWctaW4gcmVzdWx0cyBpbiBhbgorICAgICAgICAgICAgZW52aXJvbm1lbnQgdGhhdCBoYXMgZXh0ZW5zaW9ucyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gbGV0CisgICAgICAgICAgICB5b3UgbW9yZSBlYXNpbHkgZGV2ZWxvcCBzb2Z0d2FyZS4KKyAgICAgICAgICAgIFRoZXNlIGV4dGVuc2lvbnMgYWxsb3cgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCBkZXBsb3ltZW50LCBhbmQKKyAgICAgICAgICAgIGV4ZWN1dGlvbiBvZiB5b3VyIG91dHB1dCBpbnRvIGEgUUVNVSBlbXVsYXRpb24gc2Vzc2lvbiBhcyB3ZWxsCisgICAgICAgICAgICBhcyBhY3R1YWwgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHBlcmZvcm0gY3Jvc3MtZGVidWdnaW5nIGFuZCBwcm9maWxpbmcuCisgICAgICAgICAgICBUaGUgZW52aXJvbm1lbnQgYWxzbyBzdXBwb3J0cyBwZXJmb3JtYW5jZSBlbmhhbmNpbmcKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy8nPnRvb2xzPC91bGluaz4KKyAgICAgICAgICAgIHRoYXQgYWxsb3cgeW91IHRvIHBlcmZvcm0gcmVtb3RlIHByb2ZpbGluZywgdHJhY2luZywKKyAgICAgICAgICAgIGNvbGxlY3Rpb24gb2YgcG93ZXIgZGF0YSwgY29sbGVjdGlvbiBvZiBsYXRlbmN5IGRhdGEsIGFuZAorICAgICAgICAgICAgY29sbGVjdGlvbiBvZiBwZXJmb3JtYW5jZSBkYXRhLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhpcyByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGJvdGggdGhlIE5lb24KKyAgICAgICAgICAgICAgICBhbmQgTWFycyB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE5lb24KKyAgICAgICAgICAgICAgICByZWxlYXNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE1hcnMgdmVyc2lvbiBvZiBFY2xpcHNlCisgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5BcHBlbmRpeCBDPC9saW5rPi4KKyAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zZXR0aW5nLXVwLXRoZS1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgTmVvbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGRldmVsb3Agd2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IG5lZWQgdG8gZG8gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgTmVvbiB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIEVjbGlwc2UgZnJvbSB5b3VyIGRpc3RyaWJ1dGlvbidzIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIEVjbGlwc2UgZnJvbSB0aGUgb2ZmaWNpYWwgRWNsaXBzZQorICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBzaXRlIGFzIGRpcmVjdGVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1pbnN0YWxsaW5nLWVjbGlwc2UtaWRlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgTmVvbiBFY2xpcHNlIElERTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICBOZW9uIEVjbGlwc2U6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlIHRoZSBOZW9uIERvd25sb2FkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLyc+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLzwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRocm91Z2ggdGhlICJEb3dubG9hZCIgYnV0dG9ucyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VbnBhY2sgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIGEgY2xlYW4gZGlyZWN0b3J5IGFuZCB1bnBhY2sgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCB0YXIgLXh6dmYgfi9Eb3dubG9hZHMvZWNsaXBzZS1pbnN0LWxpbnV4NjQudGFyLmd6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZXJ5dGhpbmcgdW5wYWNrcyBpbnRvIGEgZm9sZGVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVjbGlwc2UtaW5zdGFsbGVyIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIHRoZSBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBsYXVuY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L2VjbGlwc2UtaW5zdGFsbGVyCisgICAgICQgLi9lY2xpcHNlLWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBZb3VyIElERTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHNlbGVjdCB0aGUgIkVjbGlwc2UgSURFIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMvQysrIERldmVsb3BlcnMiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTb2Z0d2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCB0aGUgZGVmYXVsdCAiY3BwLW5lb24iIGRpcmVjdG9yeSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljayAiSW5zdGFsbCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IGFueSBsaWNlbnNlIGFncmVlbWVudHMgYW5kIGFwcHJvdmUgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggTmVvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiTGF1bmNoIiBidXR0b24gYW5kIGFjY2VwdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ICJ3b3Jrc3BhY2UiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLW1hcnMtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIElERTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNvbmZpZ3VyZSB0aGUgTmVvbiBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gaG93IHlvdSBpbnN0YWxsZWQgRWNsaXBzZSBhbmQgd2hhdAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgYWxyZWFkeSBkb25lLCBzb21lIG9mIHRoZSBvcHRpb25zIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhcHBlYXIuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYW4gb3B0aW9uIGFzIGRpcmVjdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBpdCBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kIHlvdSBhcmUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtiZW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVvbiAtIGh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9yZWxlYXNlcy9uZW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBwdWxsLWRvd24gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQgdGhlIGJveCBuZXh0IHRvICJMaW51eCBUb29scyIgYW5kIHNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDL0MrKyBSZW1vdGUgKE92ZXIgVENGL1RFKSBSdW4vRGVidWcgTGF1bmNoZXIKKyAgICAgVE0gVGVybWluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kIHRoZSBib3ggbmV4dCB0byAiTW9iaWxlIGFuZCBEZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCIgYW5kIHNlbGVjdCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDL0MrKyBSZW1vdGUgKE92ZXIgVENGL1RFKSBSdW4vRGVidWcgTGF1bmNoZXIKKyAgICAgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBVc2VyIEFjdGlvbnMKKyAgICAgVE0gVGVybWluYWwKKyAgICAgVENGIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgYWRkLWluCisgICAgIFRDRiBUYXJnZXQgRXhwbG9yZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kIHRoZSBib3ggbmV4dCB0byAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZyBib3g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDL0MrKyBEZXZlbG9wbWVudCBUb29scyBTREsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgIk5leHQiIGFuZCAiRmluaXNoIiBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24taW5zdGFsbGluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBvciBBY2Nlc3NpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGluc3RhbGwgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERSBvbmUgb2YgdHdvIHdheXM6ICB1c2UgdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluCisgICAgICAgICAgICAgICAgICAgIG9yIGJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBwbHVnLWluIGZyb20gdGhlIGxhdGVzdAorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1uZXctc29mdHdhcmUnPgorICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUHJlLWJ1aWx0IFBsdWctaW4gZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIFVwZGF0ZSBTaXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgc2l0ZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgdXAgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIEVjbGlwc2UsIHNlbGVjdCAiSW5zdGFsbCBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUiIGZyb20gdGhlICJIZWxwIiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBZGQuLi4iIGluIHRoZSAiV29yayB3aXRoOiIgYXJlYS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkVDTElQU0VfRExfUExVR0lOX1VSTDsvbmVvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBVUkwgZmllbGQgYW5kIHByb3ZpZGUgYSBtZWFuaW5nZnVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgaW4gdGhlICJOYW1lIiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiT0siIHRvIGhhdmUgdGhlIGVudHJ5IGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSAiV29yayB3aXRoOiIgZHJvcC1kb3duIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBlbnRyeSBmb3IgdGhlIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIHRoZSBib3hlcyBuZXh0IHRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgorICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgdGhlIHJlbWFpbmluZyBzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gc3RlcHMgYW5kIHRoZW4gcmVzdGFydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgc29mdHdhcmUgdGhhdCBjb250YWlucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29udGVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi16aXAtZmlsZS1tZXRob2QnPgorICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUGx1Zy1pbiBVc2luZyB0aGUgTGF0ZXN0IFNvdXJjZSBDb2RlPC90aXRsZT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3Qgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIEpESyAxLjgrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCBYMTEtcmVsYXRlZCBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHhhdXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBhIG5ldyB0ZXJtaW5hbCBzaGVsbCwgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZWNsaXBzZS1wb2t5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgR2l0IHRvIGNyZWF0ZSB0aGUgY29ycmVjdCB0YWc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L2VjbGlwc2UtcG9reQorICAgICAkIGdpdCBjaGVja291dCBuZW9uL3lvY3RvLSZESVNUUk87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjcmVhdGVzIGEgbG9jYWwgdGFnIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uZW9uL3lvY3RvLSZESVNUUk87PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JpZ2luL25lb24tbWFzdGVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBhcmUgcHV0IGludG8gYSBkZXRhY2hlZCBIRUFEIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmaW5lIHNpbmNlIHlvdSBhcmUgb25seSBnb2luZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBidWlsZGluZyBhbmQgbm90IGRldmVsb3BpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlIHRvIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgc2NyaXB0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIHRoZSBsb2NhbCBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBydW5uaW5nIHRoZSBzZXR1cCBzY3JpcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCAuL3NldHVwLnNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgc2NyaXB0IGZpbmlzaGVzIGV4ZWN1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgcHJvbXB0cyB5b3Ugd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB3aGljaCBpcyBhbHNvIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgR2l0IHJlcG9zaXRvcnkgY3JlYXRlZCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFzIGRpcmVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdGhlIHRhZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIGJyYW5jaCwgYW5kIGEgcmVsZWFzZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIEVDTElQU0VfSE9NRT0vaG9tZS9zY290dHJpZi9lY2xpcHNlLXBva3kvc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLWwgbmVvbi95b2N0by0mRElTVFJPOyBtYXN0ZXIgeW9jdG8tJkRJU1RSTzsgMj4mYW1wOzEgfCB0ZWUgYnVpbGQubG9nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgY29tbWFuZCBhZGRzIHRoZSB0YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXJzL3lvY3RvLSZESVNUUk87PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc2NyaXB0IHRvIHVzZSB0aGUgbG9jYWwgKC1sKSBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgc2NyaXB0LCB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JnLnlvY3RvLnNkay08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmRhdGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tYXJjaGl2ZS56aXA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbmVjZXNzYXJ5LCBzdGFydCB0aGUgRWNsaXBzZSBJREUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJlIHN1cmUgeW91IGFyZSBpbiB0aGUgV29ya2JlbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJIZWxwIiBwdWxsLWRvd24gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQWRkIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGFueXRoaW5nIHlvdSB3YW50IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZSIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkFyY2hpdmUiIGFuZCBicm93c2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpJUCBmaWxlIHlvdSBidWlsdCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFpJUCBmaWxlIHNob3VsZCBub3QgYmUgInVuemlwcGVkIiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qYXJjaGl2ZS56aXA8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiT0siIGJ1dHRvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVjayB0aGUgYm94ZXMgdGhhdCBhcHBlYXIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RhbGxhdGlvbiB3aW5kb3cgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KKyAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmlzaCB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIGFwcHJvcHJpYXRlIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgc29mdHdhcmUgdGhhdCBjb250YWlucyB1bnNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3RhcnQgdGhlIEVjbGlwc2UgSURFIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBjb25maWd1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4gYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21hcnMtY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcworICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIHRoZSBDcm9zcyBDb21waWxlciBvcHRpb25zIGFuZCB0aGUgVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9ucyB5b3UgY2hvb3NlIGJlY29tZSB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBmb3IgYWxsIHByb2plY3RzLgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gaGF2ZSBvcHBvcnR1bml0aWVzIHRvIGNoYW5nZSB0aGVtIGxhdGVyIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgeW91IGNvbmZpZ3VyZSB0aGUgcHJvamVjdCAoc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHN0YXJ0LCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGZyb20gd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIlByZWZlcmVuY2VzIiBmcm9tIHRoZSAiV2luZG93IiBtZW51IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJZb2N0byBQcm9qZWN0IFNESyIgdG8gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIHNjcmVlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3ViLXNlY3Rpb25zIGRlc2NyaWJlIGhvdyB0byBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIHBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3VnaG91dCB0aGUgZGVzY3JpcHRpb25zLCBhIHN0YXJ0LXRvLWZpbmlzaAorICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBmb3IgcHJlcGFyaW5nIGEgUUVNVSBpbWFnZSBmb3IgdXNlIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgcmVmZXJlbmNlZCBhcyB0aGUgIndpa2kiIGFuZCBpcyBsaW5rZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBleGFtcGxlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPiBDb29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1jcm9zcy1jb21waWxlci1vcHRpb25zJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBDcm9zcy1Db21waWxlciBPcHRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzIENvbXBpbGVyIG9wdGlvbnMgZW5hYmxlIEVjbGlwc2UgdG8gdXNlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGNvbmZpZ3VyZSB0aGVzZSBvcHRpb25zLCB5b3UgbXVzdCBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRvb2xjaGFpbiwgcG9pbnQgdG8gdGhlIHRvb2xjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIHN5c3Jvb3QgbG9jYXRpb24sIGFuZCBzZWxlY3QgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3RpbmcgdGhlIFRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TdGFuZGFsb25lIHByZS1idWlsdCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDcm9zcyBDb21waWxlciBPcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBQcmUtYnVpbHQgVG9vbGNoYWluOjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIHdoZW4geW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhbmQtYWxvbmUgY3Jvc3MtdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIGRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYnVpbGQgYSB0YXJnZXQgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGVhZCwgeW91IGp1c3Qgd2FudCB0byB1c2UgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG9vbGNoYWluIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXhpc3Rpbmcga2VybmVsIGFuZCB0YXJnZXQgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbGVkIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGlzdGluZyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIFN5c3RlbSBEZXJpdmVkIFRvb2xjaGFpbjo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSBpZiB5b3UgYnVpbHQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0aGUgdG9vbGNoYWluIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ1bmRsZWQgaW5zaWRlIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgY3JlYXRlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGFibGUgaW1hZ2UgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHlvdSB3b3VsZCBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TcGVjaWZ5IHRoZSBUb29sY2hhaW4gUm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEgc3RhbmQtYWxvbmUgcHJlLWJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgeW91IHNob3VsZCBiZSBwb2ludGluZyB0byB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyBpbnN0YWxsZWQgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBTREsgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyBhIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VG9vbGNoYWluIFJvb3QgTG9jYXRpb248L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHlvdSBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCAoZS5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgU3lzcm9vdCBMb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlIHJlc2lkZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBsb2NhdGlvbiBkZXBlbmRzIG9uIHdoZXJlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGV4dHJhY3RlZCBhbmQgaW5zdGFsbGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZmlsZXN5c3RlbSB3aGVuIHlvdSBlaXRoZXIgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgb3IgZG93bmxvYWRlZCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG93bmxvYWRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgaXQsIHlvdSBtdXN0IGRvd25sb2FkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNhdG8tc2RrPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGJ1aWxkIGFueSBjL2MrKyBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwcmVwYXJlZCBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB1c2luZyB0aGUgc3RlcHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3Ugd291bGQgYnJvd3NlIHRvIGFuZCBzZWxlY3QgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvTVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgdGhlIHRvb2xjaGFpbiBhbmQgb24gaG93IHRvIGV4dHJhY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGwgdGhlIHN5c3Jvb3QgZmlsZXN5c3RlbSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgdGhlIFRhcmdldCBBcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHRoZSB0eXBlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIHlvdSBhcmUgZ29pbmcgdG8gdXNlIG9yIGVtdWxhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UYXJnZXQgQXJjaGl0ZWN0dXJlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSB0byBtYWtlIHlvdXIgc2VsZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHVsbC1kb3duIG1lbnUgc2hvdWxkIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgYXJjaGl0ZWN0dXJlIHlvdSBuZWVkIGlzIG5vdCBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtdGFyZ2V0LW9wdGlvbnMnPgorICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIFRhcmdldCBPcHRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hvb3NlIHRvIGVtdWxhdGUgaGFyZHdhcmUgdXNpbmcgdGhlIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdG9yLCBvciB5b3UgY2FuIGNob29zZSB0byBydW4geW91ciBpbWFnZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2lsbCBiZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gbG9jYXRlIHRoZSBrZXJuZWwgYW5kIHNwZWNpZnkgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSBvcHRpb25zLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQga2VybmVsIHlvdSBidWlsdCB3aWxsIGJlIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IHBlcmZvcm1lZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHNwZWNpZnkgeW91ciBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkgcGF0aCBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni9iekltYWdlLXFlbXV4ODYuYmluPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmUtYnVpbHQgdG9vbGNoYWluLCB0aGUgcHJlLWJ1aWx0IGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBkb3dubG9hZGVkIGlzIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3Ugc3BlY2lmaWVkIHdoZW4geW91IGRvd25sb2FkZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+TW9zdCBjdXN0b20gb3B0aW9ucyBhcmUgZm9yIGFkdmFuY2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgdXNlcnMgdG8gZnVydGhlciBjdXN0b21pemUgdGhlaXIgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGJldHdlZW4gcGFpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlZCBicmFja2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBvcHRpb25zIG11c3QgYmUgc3BlY2lmaWVkIG91dHNpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNrZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgb3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VyaWFsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm08L2ZpbGVuYW1lPiBtdXN0IGFsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRzaWRlIHRoZSBicmFja2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+bWFuIHFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGdldCBoZWxwIG9uIGFsbCB0aGUgb3B0aW9ucyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIENyb3NzLUNvbXBpbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgY29uZmlndXJhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2lsbCBiZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgaGFyZHdhcmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY3JlYXRpbmctdGhlLXByb2plY3QnPgorICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgorICAgICAgICAgICAgICAgIE1ha2VmaWxlLWJhc2VkLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSBBdXRvdG9vbHMtYmFzZWQKKyAgICAgICAgICAgICAgICBwcm9qZWN0cyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIE1ha2VmaWxlLWJhc2VkIHByb2plY3RzIGluIGEKKyAgICAgICAgICAgICAgICB0ZXJtaW5hbCB3aW5kb3csIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIHNwYWNlcywgdW5kZXJzY29yZXMsIGV0Yy4pLiAgRG9pbmcgc28gY2FuCisgICAgICAgICAgICAgICAgICAgIGNhdXNlIGNvbmZpZ3VyYXRpb24gdG8gZmFpbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIHByb2plY3QgYmFzZWQgb24gYSBZb2N0byB0ZW1wbGF0ZSBhbmQgdGhlbgorICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhlIHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkMgUHJvamVjdCIgZnJvbSB0aGUgIkZpbGUgLT4gTmV3IiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPllvY3RvIFByb2plY3QgU0RLIEF1dG90b29scyBQcm9qZWN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IDxmaWxlbmFtZT5IZWxsbyBXb3JsZCBBTlNJIEMgQXV0b3Rvb2xzIFByb2plY3RzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFB1dCBhIG5hbWUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UHJvamVjdCBuYW1lOjwvZmlsZW5hbWU+IGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBoeXBoZW5zIGFzIHBhcnQgb2YgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5oZWxsbzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiTmV4dCIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uIGluIHRoZSB2YXJpb3VzIGZpZWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgIm9wZW4gcGVyc3BlY3RpdmUiIHByb21wdCBhcHBlYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIlllcyIgc28gdGhhdCB5b3UgaW4gdGhlIEMvQysrIHBlcnNwZWN0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbGVmdC1oYW5kIG5hdmlnYXRpb24gcGFuZSBzaG93cworICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNwbGF5IHlvdXIgc291cmNlIGJ5IGRvdWJsZSBjbGlja2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QncyBzb3VyY2UgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtdG9vbGNoYWlucyc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLVRvb2xjaGFpbnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZWFybGllciBzZWN0aW9uLAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iLAorICAgICAgICAgICAgICAgIHNldHMgdXAgdGhlIGRlZmF1bHQgcHJvamVjdCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIllvY3RvIFByb2plY3QgU2V0dGluZ3MiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiUHJvamVjdCAtPiBQcm9wZXJ0aWVzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gYnJpbmdzIHVwIHRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2cgYW5kIGFsbG93cyB5b3UgdG8gbWFrZSBjaGFuZ2VzIHNwZWNpZmljIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbmRpdmlkdWFsIHByb2plY3QuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QnkgZGVmYXVsdCwgdGhlIENyb3NzIENvbXBpbGVyIE9wdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgT3B0aW9ucyBmb3IgYSBwcm9qZWN0IGFyZSBpbmhlcml0ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgeW91IHByb3ZpZGVkIHVzaW5nIHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncyBEaWFsb2cgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgdGhvc2UgZGVmYXVsdCBzZXR0aW5ncyBmb3IgYSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIG9yIHZlcmlmeSB5b3VyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgYW5kIGNsaWNrICJPSyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCAiUmVjb25maWd1cmUgUHJvamVjdCIgZnJvbSB0aGUgcG9wLXVwIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNlbGVjdGlvbiByZWNvbmZpZ3VyZXMgdGhlIHByb2plY3QgYnkgcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9nZW4uc2g8L2ZpbGVuYW1lPiBpbiB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBhbHNvIHJ1bnMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ0b29saXplPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWNsb2NhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2hlYWRlcjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9tYWtlIC0tYTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uL2NvbmZpZ3VyZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgdGhlIHJlc3VsdHMgb2YgcmVjb25maWd1cmluZyB5b3VyIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1idWlsZGluZy10aGUtcHJvamVjdCc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSBwcm9qZWN0IHNlbGVjdCAiQnVpbGQgQWxsIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICJQcm9qZWN0IiBtZW51LgorICAgICAgICAgICAgICAgIFRoZSBjb25zb2xlIHNob3VsZCB1cGRhdGUgYW5kIHlvdSBjYW4gbm90ZSB0aGUKKyAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlciB5b3UgYXJlIHVzaW5nLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMiIHByb2plY3RzLAorICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zL1N5bWJvbHMvVHlwZXMgdGhhdCBjYW5ub3QgYmUgInJlc29sdmVkIiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbiB3aGVuIHRoZSByZWxhdGVkIGluY2x1ZGUgZmlsZSBpcyBsaXN0ZWQgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHByb2plY3QgbmF2aWdhdG9yIGFuZCB3aGVuIHRoZSBwcm9qZWN0IGlzIGFibGUgdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcyBvbmx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byBhZGQgYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgbGlua2VkIGZvbGRlciB0byB0aGUgYXBwcm9wcmlhdGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGFkZCB0aGUgbGlua2VkIGZvbGRlcjoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmlsZSA+IE5ldzwvZmlsZW5hbWU+IG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlICJOZXcgRm9sZGVyIiBEaWFsb2csIHNlbGVjdCAiTGluayB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZSBsb2NhdGlvbiAobGlua2VkIGZvbGRlcikiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJCcm93c2UiIHRvIG5hdmlnYXRlIHRvIHRoZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGluc2lkZSB0aGUgc2FtZSBzeXNyb290IGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJPSyIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIgdG8gc2F2ZSB0aGUgbGlua2VkIGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgorICAgICAgICAgICAgPHRpdGxlPlN0YXJ0aW5nIFFFTVUgaW4gVXNlci1TcGFjZSBORlMgTW9kZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yIGZyb20gd2l0aGluIEVjbGlwc2UsIGZvbGxvdworICAgICAgICAgICAgICAgIHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwb3NlIGFuZCBzZWxlY3QgIkV4dGVybmFsIFRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyAuLi4iIGZyb20gdGhlICJSdW4gLT4gRXh0ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgc2VsZWN0IHlvdXIgaW1hZ2UgaW4gdGhlIG5hdmlnYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsIHRvIHRoZSBsZWZ0CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cWVtdV9pNTg2LXBva3ktbGludXg8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIlJ1biIgdG8gbGF1bmNoIFFFTVUuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvbiB3aGljaCB5b3UgYXJlIHJ1bm5pbmcgUUVNVSBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSB0aGUgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiB1dGlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyB0byBiZSBhYmxlIHRvIG1ha2UgUlBDIGNhbGxzIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgb24gdGhhdCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIFFFTVUgZG9lcyBub3QgaW52b2tlIGFuZCB5b3UgcmVjZWl2ZSBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGludm9sdmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sIGZvbGxvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyB0byBnZXQgdGhlIHNlcnZpY2UgcnVubmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBvbiBhIG5ldyBVYnVudHUgMTYuMDQgTFRTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uLCB5b3UgbXVzdCBkbyB0aGUgZm9sbG93aW5nIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gZ2V0IFFFTVUgdG8gbGF1bmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBycGNiaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBlZGl0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC9ycGNiaW5kPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgT1BUSU9OUz0iLWkgLXciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIG1vZGlmeWluZyB0aGUgZmlsZSwgeW91IG5lZWQgdG8gc3RhcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBzZXJ2aWNlIHBvcnRtYXAgcmVzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBuZWVkZWQsIGVudGVyIHlvdXIgaG9zdCByb290IHBhc3N3b3JkIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hlbGwgd2luZG93IGF0IHRoZSBwcm9tcHQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHMgdXAgYSA8ZmlsZW5hbWU+VGFwIDA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBuZWVkZWQgZm9yIHJ1bm5pbmcgaW4gdXNlci1zcGFjZSBORlMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2FpdCBmb3IgUUVNVSB0byBsYXVuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBRRU1VIGxhdW5jaGVzLCB5b3UgY2FuIGJlZ2luIG9wZXJhdGluZworICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBPbmUgdXNlZnVsIHRhc2sgYXQgdGhpcyBwb2ludCB3b3VsZCBiZSB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJUCBBZGRyZXNzIGZvciB0aGUgdXNlci1zcGFjZSBORlMgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIElQIGFkZHJlc3Mgb2YgdGhlIFFFTVUgbWFjaGluZSBhcHBlYXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgeHRlcm0gd2luZG93LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyBhZGRyZXNzIHRvIGhlbHAgeW91IHNlZSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgSVAgYWRkcmVzcyB0aGUgaW5zdGFuY2Ugb2YgUUVNVSBpcyB1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1kZXBsb3lpbmctYW5kLWRlYnVnZ2luZy10aGUtYXBwbGljYXRpb24nPgorICAgICAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIFFFTVUgZW11bGF0b3IgaXMgcnVubmluZyB0aGUgaW1hZ2UsIHlvdSBjYW4gZGVwbG95CisgICAgICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZW4gdXNlCisgICAgICAgICAgICAgICAgdGhlIGVtdWxhdG9yIHRvIHBlcmZvcm0gZGVidWdnaW5nLgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBkZXBsb3kgdGhlIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHksIEVjbGlwc2UgZG9lcyBub3Qgc3VwcG9ydCBTU0ggcG9ydAorICAgICAgICAgICAgICAgICAgICBmb3J3YXJkaW5nLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIHlvdSBuZWVkIHRvIHJ1biBvciBkZWJ1ZyBhIHJlbW90ZQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB1c2luZyB0aGUgaG9zdCBkaXNwbGF5LCB5b3UgbXVzdCBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICB0dW5uZWxpbmcgY29ubmVjdGlvbiBmcm9tIG91dHNpZGUgRWNsaXBzZSBhbmQga2VlcAorICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbm5lY3Rpb24gYWxpdmUgZHVyaW5nIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IHRlcm1pbmFsLCBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNzaCAtWFkgPHJlcGxhY2VhYmxlPnVzZXJfbmFtZTwvcmVwbGFjZWFibGU+QDxyZXBsYWNlYWJsZT5yZW1vdGVfaG9zdF9pcDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGFib3ZlIGZvcm0sIGhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNzaCAtWFkgcm9vdEAxOTIuMTY4LjcuMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIGFkZCB0aGUgY29tbWFuZCB0byBiZQorICAgICAgICAgICAgICAgICAgICBleGVjdXRlZCBpbiBFY2xpcHNlJ3MgcnVuIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBESVNQTEFZPToxMC4wCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBub3QgZGVzdHJveSB0aGUgY29ubmVjdGlvbiBkdXJpbmcgeW91ciBRRU1VCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gKGkuZS4gZG8gbm90CisgICAgICAgICAgICAgICAgICAgIGV4aXQgb3V0IG9mIG9yIGNsb3NlIHRoYXQgc2hlbGwpLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiUnVuIiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBsZWZ0IGFyZWEsIGV4cGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkMvQysrUmVtb3RlIEFwcGxpY2F0aW9uPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRlIHlvdXIgcHJvamVjdCBhbmQgc2VsZWN0IGl0IHRvIGJyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB1cCBhIG5ldyB0YWJiZWQgdmlldyBpbiB0aGUgRGVidWcgQ29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIERpYWxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgIkRlYnVnZ2VyIiB0YWIgdG8gc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3MtdG9vbCBkZWJ1Z2dlciB5b3UgYXJlIHVzaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjaGFuZ2UgdG8gdGhlIGRlYnVnZ2VyIHBlcnNwZWN0aXZlIGluCisgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiTWFpbiIgdGFiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBRRU1VIGluc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICBieSBjbGlja2luZyBvbiAibmV3Ii48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+U1NIPC9maWxlbmFtZT4sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBtZWFucyBTZWN1cmUgU29ja2V0IFNoZWxsIGFuZCB0aGVuIGNsaWNrICJPSyIuCisgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIHNlbGVjdCBhIFRDRiBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyIG91dCB0aGUgIkNvbm5lY3Rpb24gbmFtZSIgZmllbGQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBlbnRlciBhbnkgbmFtZSB5b3Ugd2FudCBmb3IgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUHV0IHRoZSBJUCBhZGRyZXNzIGZvciB0aGUgY29ubmVjdGlvbiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJIb3N0IiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB0aGUgZGVmYXVsdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjE5Mi4xNjguNy4yPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiBhIHByZXZpb3VzIFFFTVUgc2Vzc2lvbiBkaWQgbm90IGV4aXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFubHksIHRoZSBJUCBhZGRyZXNzIGluY3JlbWVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4xOTIuMTY4LjcuMzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRU1VIHNlc3Npb24gYnkgbG9va2luZyBpbiB0aGUgeHRlcm0gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zIHdoZW4geW91IGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyIDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSwgZm9yIHRoZSAiVXNlciIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBjbG9zZSB0aGUgTmV3IENvbm5lY3Rpb25zIERpYWxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBuZWNlc3NhcnksIHVzZSB0aGUgZHJvcC1kb3duIG1lbnUgbm93IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24iIGZpZWxkIGFuZCBwaWNrIHRoZSBJUCBBZGRyZXNzIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgYXJlIGNvbm5lY3RpbmcgYXMgdGhlIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBRRU1VIHg4Ni02NCBTREsKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyBwcm92aWRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3RlIEFic29sdXRlIEZpbGUgUGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24iCisgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCwgYnJvd3NlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvcm9vdC88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5Qcm9qZWN0TmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+L2hvbWUvcm9vdC9oZWxsbzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBhbHNvIGJyb3dzZSB0byBhbnkgb3RoZXIgcGF0aCB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgYWNjZXNzIHRvIG9uIHRoZSB0YXJnZXQgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBvbiB0aGUgUUVNVSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZmFpbCB0byBicm93c2UgdG8gYW5kIHNwZWNpZnkgYW4gYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBRRU1VIHdpbGwgbm90IHVuZGVyc3RhbmQgd2hhdCB0byByZW1vdGVseQorICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBoZWxwZnVsIGluIHRoYXQgaXQgYXV0byBmaWxscyB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBuYW1lIGZvciB5b3UgYXNzdW1pbmcgeW91IGJyb3dzZWQgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcHM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIHVzZXJuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdG8gb3B0aW9uYWxseSBzZXQgYSBwYXNzd29yZCwgYmUgc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHByb3ZpZGUgInJvb3QiIGFzIHRoZSB1c2VybmFtZSBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZSB0aGUgcGFzc3dvcmQgZmllbGQgYmxhbmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYnJvd3NpbmcgdG8gYSBkaXJlY3RvcnkgZmFpbHMgb3IgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgYnV0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBpbnRvIHlvdXIgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGFyZ2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHByb3hpZXMgc2V0IHVwLCBpdCBpcyBsaWtlbHkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBzZW5kaW5nIHRoZSBTU0ggdHJhZmZpYyB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZWl0aGVyIHVzZSBUQ0YgLCBvciBjbGljayBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyZSBwcm94eSBzZXR0aW5ncyIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIGRpYWxvZyBhbmQgYWRkIHRoZSB0YXJnZXQgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgdG8gdGhlICJieXBhc3MgcHJveHkiIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYWxzbyBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2ZSBQcm92aWRlciIgZnJvbSBOYXRpdmUgdG8gTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgY2hhbmdlIHRvIHRoZSAiRGVidWciIHBlcnNwZWN0aXZlIGluCisgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJEZWJ1ZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlYnVnIHBlcnNwZWN0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXVzaW5nLUxpbnV4dG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIExpbnV4dG9vbHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBwZXJmb3JtYW5jZSB0b29scyBleGlzdAorICAgICAgICAgICAgICAgIChMaW51eHRvb2xzKSB0aGF0IGVuaGFuY2UgeW91ciBkZXZlbG9wbWVudCBleHBlcmllbmNlLgorICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGFyZSBhaWRzIGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZworICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBhbmQgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gcnVuIHRoZXNlIHRvb2xzIGZyb20gd2l0aGluIHRoZSBFY2xpcHNlIElERSB0aHJvdWdoCisgICAgICAgICAgICAgICAgdGhlICJMaW51eHRvb2xzIiBtZW51LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZSBhbmQgdXNlIHRoZXNlIHRvb2xzLAorICAgICAgICAgICAgICAgIHNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy88L3VsaW5rPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnhtbAppbmRleCAxNDk2NDc2Li40NDRkODE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnhtbApAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICB0byBhbiBpbWFnZSwgbW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIGNvbXBvbmVudCwgdGVzdAogICAgICAgICBjaGFuZ2VzIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUsIGFuZCBlYXNlIGludGVncmF0aW9uIGludG8gdGhlIHJlc3Qgb2YKICAgICAgICAgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCiAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgRm9yIGEgc2lkZS1ieS1zaWRlIGNvbXBhcmlzb24gb2YgbWFpbiBmZWF0dXJlcyBzdXBwb3J0ZWQgZm9yIGFuCiAgICAgICAgICAgICBleHRlbnNpYmxlIFNESyBhcyBjb21wYXJlZCB0byBhIHN0YW5kYXJkIFNESywgc2VlIHRoZQpAQCAtMjM1LDE1ICsyMzUsMjggQEAKICAgICAgICAgICAgIHlvdSBidWlsZCwgdGVzdCBhbmQgcGFja2FnZSBzb2Z0d2FyZSB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLLCBhbmQKICAgICAgICAgICAgIG9wdGlvbmFsbHkgaW50ZWdyYXRlIGl0IGludG8gYW4gaW1hZ2UgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZAogICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGlzIG5vdCBsaW1pdGVkIHRvCisgICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gaGVscCB5b3UgZWFzaWx5CisgICAgICAgICAgICAgICAgZGV2ZWxvcCBhbnkgcHJvamVjdCB3aG9zZSBidWlsZCBvdXRwdXQgbXVzdCBiZSBwYXJ0IG9mIGFuCisgICAgICAgICAgICAgICAgaW1hZ2UgYnVpbHQgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZSBpcyBvcmdhbml6ZWQKICAgICAgICAgICAgIHNpbWlsYXJseSB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiBpbiB0aGF0IGl0IGhhcyBhCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IGluIHRoYXQgaXQgaGFzIGEKICAgICAgICAgICAgIG51bWJlciBvZiBzdWItY29tbWFuZHMgZm9yIGVhY2ggZnVuY3Rpb24uCiAgICAgICAgICAgICBZb3UgY2FuIHJ1biA8ZmlsZW5hbWU+ZGV2dG9vbCAtLWhlbHA8L2ZpbGVuYW1lPiB0byBzZWUgYWxsIHRoZQogICAgICAgICAgICAgY29tbWFuZHMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1kZXZ0b29sLXJlZmVyZW5jZSc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiZuYnNwO1F1aWNrIFJlZmVyZW5jZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHF1aWNrIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMjkzLDcgKzMwNiw3IEBACiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgZ2VuZXJhdGVzCiAgICAgICAgICAgICAgICAgYSBuZXcgcmVjaXBlIGJhc2VkIG9uIGV4aXN0aW5nIHNvdXJjZSBjb2RlLgogICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2dG9vbC10aGUtd29ya3NwYWNlLWxheWVyLXN0cnVjdHVyZSc+d29ya3NwYWNlPC91bGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPgogICAgICAgICAgICAgICAgIGxheWVyIHRoYXQgbWFueSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmRzCiAgICAgICAgICAgICAgICAgdXNlLgogICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gZXh0cmFjdCBzb3VyY2UKQEAgLTYxMiw3ICs2MjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyB0aGVtLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRpbmcgdGhlIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaW5zdHJ1Y3RzIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSB0aGUgZXh0cmFjdGVkIHNvdXJjZS48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlLgpAQCAtMTI2Miw3ICsxMjc1LDcgQEAKICAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aCBSZWNpcGVzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IHRoZQorICAgICAgICAgICAgV2hlbiBidWlsZGluZyBhIHJlY2lwZSB3aXRoIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4sIHRoZQogICAgICAgICAgICAgdHlwaWNhbCBidWlsZCBwcm9ncmVzc2lvbiBpcyBhcyBmb2xsb3dzOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbAppbmRleCA2ODQwMTY5Li5iNjkyNWZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCkBAIC05LDggKzksOCBAQAogICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBleHBsYWlucyBob3cgdG8gdXNlIGJvdGggdGhlCiAgICAgICAgIFlvY3RvIFByb2plY3QgZXh0ZW5zaWJsZSBhbmQgc3RhbmRhcmQgU0RLcyB0byBkZXZlbG9wCiAgICAgICAgIGFwcGxpY2F0aW9ucyBhbmQgaW1hZ2VzLgpAQCAtNTIsNyArNTIsNyBAQAogICAgICAgICBuZXcgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgdG8gYW4gaW1hZ2UsIG1vZGlmeSB0aGUgc291cmNlIG9mIGFuCiAgICAgICAgIGV4aXN0aW5nIGNvbXBvbmVudCwgdGVzdCBjaGFuZ2VzIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUsIGFuZCBlYXNpbHkKICAgICAgICAgaW50ZWdyYXRlIGFuIGFwcGxpY2F0aW9uIGludG8gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgc3lzcm9vdHMgKHRhcmdldCBhbmQgbmF0aXZlKSBhbGwgYnVpbHQgYnkgdGhlCiAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLiB0aGUgU0RLKS4KICAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWluIGFuZCBzeXNyb290cyBhcmUgYmFzZWQgb24gYQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGFuZCBleHRlbnNpb25zLAogICAgICAgICAgICAgICAgIHdoaWNoIGFsbG93cyB5b3UgdG8gY3Jvc3MtZGV2ZWxvcCBvbiB0aGUgaG9zdCBtYWNoaW5lIGZvciB0aGUKICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUuCkBAIC0yMDcsNyArMjA3LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L3VsaW5rPgogICAgICAgICAgICAgY29uc2lzdHMgb2YgYSBjcm9zcy1jb21waWxlciwgY3Jvc3MtbGlua2VyLCBhbmQgY3Jvc3MtZGVidWdnZXIKICAgICAgICAgICAgIHRoYXQgYXJlIHVzZWQgdG8gZGV2ZWxvcCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBmb3IgdGFyZ2V0ZWQKICAgICAgICAgICAgIGhhcmR3YXJlLgpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgICAgICBidWlsdC1pbiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGZ1bmN0aW9uYWxpdHkuCiAgICAgICAgICAgICBUaGlzIHRvb2xjaGFpbiBpcyBjcmVhdGVkIGJ5IHJ1bm5pbmcgYSBTREsgaW5zdGFsbGVyIHNjcmlwdAogICAgICAgICAgICAgb3IgdGhyb3VnaCBhCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICB0aGF0IGlzIGJhc2VkIG9uIHlvdXIgTWV0YWRhdGEgY29uZmlndXJhdGlvbiBvciBleHRlbnNpb24gZm9yCiAgICAgICAgICAgICB5b3VyIHRhcmdldGVkIGRldmljZS4KICAgICAgICAgICAgIFRoZSBjcm9zcy10b29sY2hhaW4gd29ya3Mgd2l0aCBhIG1hdGNoaW5nIHRhcmdldCBzeXNyb290LgpAQCAtMjQ1LDE2ICsyNDUsMTUgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGNsb25lZCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0byBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIFFFTVUgaXMKICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGFuZCBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBkb3dubG9hZGVkIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlIGFuZCB1bnBhY2tlZAotICAgICAgICAgICAgICAgICAgICBpdCB0byBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBoYXZlIHNvdXJjZWQgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCwgUUVNVSBpcwotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgYW5kIGF1dG9tYXRpY2FsbHkgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICBpdCB0byBjcmVhdGUgYSBTb3VyY2UgRGlyZWN0b3J5IGFuZCB5b3UgaGF2ZSBzb3VyY2VkIHRoZQorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIFFFTVUgaXMgaW5zdGFsbGVkIGFuZAorICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIGNyb3NzLXRvb2xjaGFpbiB0YXJiYWxsIGFuZCB5b3UKQEAgLTI5NSw4ICsyOTQsOCBAQAogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB3b3JrZmxvdyB0aGF0CiAgICAgICAgICAgICB1c2VzIHRoZSBFY2xpcHNlIElERSBhbmQgZm9yIGEgZGV0YWlsZWQgZXhhbXBsZSBvZiBob3cgdG8gaW5zdGFsbAogICAgICAgICAgICAgYW5kIGNvbmZpZ3VyZSB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IFBsdWctaW4sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2ZWxvcGluZy1hcHBsaWNhdGlvbnMtdXNpbmctZWNsaXBzZSc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvbGluaz4iCisgICAgICAgICAgICBDaGFwdGVyLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0zODUsNyArMzg0LDcgQEAKICAgICAgICAgICAgICAgICB0byBkb3dubG9hZCBhbmQgbGVhcm4gYWJvdXQgdGhlIGVtdWxhdG9yLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAogICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VIHdpdGhpbiB0aGUgWW9jdG8KICAgICAgICAgICAgICAgICBQcm9qZWN0LjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L29yZGVyZWRsaXN0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKaW5kZXggNWMyOGUzNC4uN2ZjMDQ3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCkBAIC0xNywxNCArMTcsMTQgQEAKICAgICAgICAgPC9tZWRpYW9iamVjdD4KIAogICAgICAgICA8dGl0bGU+Ci0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKQogICAgICAgICA8L3RpdGxlPgogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBMTEM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgogICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KQEAgLTQ3LDI0ICs0NywxOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkp1bmUgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTgxLDI4ICs3NiwyOSBAQAogICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZSBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBZb2N0byBQcm9qZWN0IHJlbGVhc2UgKHZlcnNpb24gJllPQ1RPX0RPQ19WRVJTSU9OOyksCi0gICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykKLSAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGluLWRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy9sYXRlc3Qvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAKQEAgLTExOCw2ICsxMTQsOCBAQAogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ic2RrLXdvcmtpbmctcHJvamVjdHMueG1sIi8+CiAKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstZWNsaXBzZS1wcm9qZWN0LnhtbCIvPgorCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ic2RrLWFwcGVuZGl4LW9idGFpbi54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwiLz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy54bWwKaW5kZXggNTRiYzRkNy4uNjk2NWUzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy54bWwKQEAgLTEwLDggKzEwLDkgQEAKICAgICAgICAgWW91IGNhbiB1c2UgdGhlIFNESyB0b29sY2hhaW4gZGlyZWN0bHkgd2l0aCBNYWtlZmlsZSwKICAgICAgICAgQXV0b3Rvb2xzLCBhbmQgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gYmFzZWQKICAgICAgICAgcHJvamVjdHMuCi0gICAgICAgIFRoaXMgY2hhcHRlciBjb3ZlcnMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gZWFjaCBvZiB0aGVzZSB0eXBlcyBvZgotICAgICAgICBwcm9qZWN0cy4KKyAgICAgICAgVGhpcyBjaGFwdGVyIGNvdmVycyB0aGUgZmlyc3QgdHdvLCB3aGlsZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1lY2xpcHNlLXByb2plY3QnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC9saW5rPiIKKyAgICAgICAgQ2hhcHRlciBjb3ZlcnMgdGhlIGxhdHRlci4KICAgICA8L3BhcmE+CiAKICAgICA8c2VjdGlvbiBpZD0nYXV0b3Rvb2xzLWJhc2VkLXByb2plY3RzJz4KQEAgLTI3NiwxMTg0ICsyNzcsNiBAQAogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXZlbG9waW5nLWFwcGxpY2F0aW9ucy11c2luZy1lY2xpcHNlJz4KLSAgICAgICAgPHRpdGxlPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgcG9wdWxhciBFY2xpcHNlIElERSwgeW91IGNhbiB1c2UgYW4KLSAgICAgICAgICAgIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiB0byBhbGxvdyB5b3UgdG8gZGV2ZWxvcCwgZGVwbG95LCBhbmQgdGVzdCB5b3VyCi0gICAgICAgICAgICBhcHBsaWNhdGlvbiBhbGwgZnJvbSB3aXRoaW4gRWNsaXBzZS4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZ2VuZXJhbCB3b3JrZmxvdyB1c2luZyB0aGUgU0RLIGFuZCBFY2xpcHNlCi0gICAgICAgICAgICBhbmQgaG93IHRvIGNvbmZpZ3VyZSBhbmQgc2V0IHVwIEVjbGlwc2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nd29ya2Zsb3ctdXNpbmctZWNsaXBzZSc+Ci0gICAgICAgICAgICA8dGl0bGU+V29ya2Zsb3cgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBhbmQgc3VwcG9ydGluZyBsaXN0IHN1bW1hcml6ZSB0aGUKLSAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBnZW5lcmFsIHdvcmtmbG93IHRoYXQgZW1wbG95cyBib3RoIHRoZQotICAgICAgICAgICAgICAgIFNESyBFY2xpcHNlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIgotICAgICAgICAgICAgICAgICAgICB3aWR0aD0iN2luIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBob3N0IHN5c3RlbSBmb3IgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGJvdGggaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIGJlIHN1cmUgeW91ciBob3N0IHN5c3RlbSBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHRlcm08L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBoYXZlIGEgdGFyZ2V0IGtlcm5lbCBpbWFnZSB0aGF0IGhhcyBiZWVuIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24gd2hldGhlciB0aGUgWW9jdG8gUHJvamVjdCBoYXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWJ1aWx0IGltYWdlIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aGVyZSB5b3UgYXJlIGdvaW5nIHRvIHJ1biB0aGUgaW1hZ2Ugd2hpbGUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24gKFFFTVUgb3IgcmVhbCBoYXJkd2FyZSksIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSBmcm9tIHdoaWNoIHlvdSBnZXQgdGhlIGltYWdlIGRpZmZlcnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWQgdGhlIGltYWdlIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX01BQ0hJTkVTX0RMX1VSTDsnPjxmaWxlbmFtZT5tYWNoaW5lczwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBnb2luZyB0byBkZXZlbG9wIGFuZCB0ZXN0IHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gb24gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBpbWFnZSBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19RRU1VX0RMX1VSTDsnPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGluZXMvcWVtdTwvZmlsZW5hbWU+PC91bGluaz4gaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBhbmQgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byBkZXZlbG9wIGFuZCB0ZXN0IHlvdXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIFFFTVUgZW11bGF0b3IuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgeW91ciBpbWFnZSBpZiB5b3UgY2Fubm90IGZpbmQgYSBwcmUtYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHNpbWlsYXIgdG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLCB5b3UgY2FuIG1vZGlmeSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGJlZm9yZSB5b3UgYnVpbGQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BhdGNoaW5nLXRoZS1rZXJuZWwnPlBhdGNoaW5nIHRoZSBLZXJuZWw8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwgZm9yIGFuIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+PGVtcGhhc2lzPkluc3RhbGwgdGhlIFNESzwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFNESyBwcm92aWRlcyBhIHRhcmdldC1zcGVjaWZpYyBjcm9zcy1kZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluLCB0aGUgcm9vdCBmaWxlc3lzdGVtLCB0aGUgUUVNVSBlbXVsYXRvciwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0b29scyB0aGF0IGNhbiBoZWxwIHlvdSBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlIFNESywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWN1cmUgdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgQ3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBmaW5kIGFuZCBkb3dubG9hZCB0aGUgYXBwcm9wcmlhdGUgcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBhbmQgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgdGhlIHRhcmJhbGxzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBhcmVhIHVzZWQgZm9yIHRoZSBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IGFyZSBydW5uaW5nLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB5b3UgbmVlZCBkaWZmZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgZGV2ZWxvcGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBydW5zIG9uIGFuIGltYWdlIHRoYXQgc3VwcG9ydHMgU2F0bywgeW91IG5lZWQgdG8gZ2V0IGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IHN1cHBvcnRzIFNhdG8uPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjxmaWxlbmFtZT50b29sY2hhaW5zPC9maWxlbmFtZT48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gZ2V0IHRoZSBjb3JyZWN0IHRvb2xjaGFpbiBmb3IgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBhbmQgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nc2RrLWxvY2F0aW5nLXByZS1idWlsdC1zZGstaW5zdGFsbGVycyc+TG9jYXRpbmcgUHJlLUJ1aWx0IFNESyBJbnN0YWxsZXJzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5zdGFsbGF0aW9uIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gYWx0ZXJuYXRpdmUgdG8gZG93bmxvYWRpbmcgYW4gU0RLLCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdGhlIFNESyBpbnN0YWxsZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBoZWxwZnVsIHJlc291cmNlIGZvciBidWlsZGluZyBhbiBpbnN0YWxsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+Q29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW5kIGJ1aWxkIHlvdXIgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBuZWVkIHRvIGhhdmUgc291cmNlIGZpbGVzIGZvciB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIGZpbGVzLCB5b3UgY2FuIHVzZSB0aGUgRWNsaXBzZSBJREUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGltcG9ydCB0aGVtIGFuZCBidWlsZCB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgbm90IHVzaW5nIEVjbGlwc2UsIHlvdSBuZWVkIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzIHlvdSBoYXZlIGluc3RhbGxlZCB0byBjcmVhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgaW1hZ2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgRWNsaXBzZSBJREUsIHlvdSBjYW4gZGVwbG95IHlvdXIgaW1hZ2UgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvciB0byBRRU1VIHRocm91Z2ggdGhlIHByb2plY3QncyBwcmVmZXJlbmNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgRWNsaXBzZSB0byBsb2FkIGFuZCB0ZXN0IHlvdXIgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIFFFTVUuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFFFTVUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgYW5kIGRlYnVnIHRoZSBhcHBsaWNhdGlvbjwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3VyIGFwcGxpY2F0aW9uIGlzIGRlcGxveWVkLCB5b3UgbmVlZCB0byB0ZXN0IGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IGNhbiB1c2UgdGhlIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgYWxvbmcgd2l0aCBzdXBwb3J0ZWQgcGVyZm9ybWFuY2UgZW5oYW5jaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5MaW51eCBUb29sczwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdhZHQtZWNsaXBzZSc+Ci0gICAgICAgICAgICA8dGl0bGU+V29ya2luZyBXaXRoaW4gRWNsaXBzZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBFY2xpcHNlIElERSBpcyBhIHBvcHVsYXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGl0Ci0gICAgICAgICAgICAgICAgZnVsbHkgc3VwcG9ydHMgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoZW4geW91IGluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgUGx1Zy1pbiBpbnRvIHRoZSBFY2xpcHNlIElERSwgeW91IG1heGltaXplIHlvdXIgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IGV4cGVyaWVuY2UuCi0gICAgICAgICAgICAgICAgSW5zdGFsbGluZyBhbmQgY29uZmlndXJpbmcgdGhlIFBsdWctaW4gcmVzdWx0cyBpbiBhbgotICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHRoYXQgaGFzIGV4dGVuc2lvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGxldAotICAgICAgICAgICAgICAgIHlvdSBtb3JlIGVhc2lseSBkZXZlbG9wIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgIFRoZXNlIGV4dGVuc2lvbnMgYWxsb3cgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCBkZXBsb3ltZW50LCBhbmQKLSAgICAgICAgICAgICAgICBleGVjdXRpb24gb2YgeW91ciBvdXRwdXQgaW50byBhIFFFTVUgZW11bGF0aW9uIHNlc3Npb24gYXMgd2VsbAotICAgICAgICAgICAgICAgIGFzIGFjdHVhbCB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHBlcmZvcm0gY3Jvc3MtZGVidWdnaW5nIGFuZCBwcm9maWxpbmcuCi0gICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IGFsc28gc3VwcG9ydHMgcGVyZm9ybWFuY2UgZW5oYW5jaW5nCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saW51eHRvb2xzLyc+dG9vbHM8L3VsaW5rPgotICAgICAgICAgICAgICAgIHRoYXQgYWxsb3cgeW91IHRvIHBlcmZvcm0gcmVtb3RlIHByb2ZpbGluZywgdHJhY2luZywKLSAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIHBvd2VyIGRhdGEsIGNvbGxlY3Rpb24gb2YgbGF0ZW5jeSBkYXRhLCBhbmQKLSAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIHBlcmZvcm1hbmNlIGRhdGEuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBib3RoIHRoZSBOZW9uCi0gICAgICAgICAgICAgICAgICAgIGFuZCBNYXJzIHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE5lb24KLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTWFycyB2ZXJzaW9uIG9mIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYXBwZW5kaXgtbGF0ZXN0LXlwLWVjbGlwc2UtcGx1Zy1pbic+QXBwZW5kaXggQzwvbGluaz4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zZXR0aW5nLXVwLXRoZS1lY2xpcHNlLWlkZSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE5lb24gVmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGRldmVsb3Agd2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IG5lZWQgdG8gZG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIE5lb24gdmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIHRoZSBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgRWNsaXBzZSBmcm9tIHlvdXIgZGlzdHJpYnV0aW9uJ3MgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBFY2xpcHNlIGZyb20gdGhlIG9mZmljaWFsIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkIHNpdGUgYXMgZGlyZWN0ZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgTmVvbiBFY2xpcHNlIElERTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbG9jYXRlLCBpbnN0YWxsLCBhbmQgY29uZmlndXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBOZW9uIEVjbGlwc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlIHRoZSBOZW9uIERvd25sb2FkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL25lb24vJz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL25lb24vPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvd25sb2FkIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRocm91Z2ggdGhlICJEb3dubG9hZCIgYnV0dG9ucyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCB0aGUgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5wYWNrIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gYSBjbGVhbiBkaXJlY3RvcnkgYW5kIHVucGFjayB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIHRhciAteHp2ZiB+L0Rvd25sb2Fkcy9lY2xpcHNlLWluc3QtbGludXg2NC50YXIuZ3oKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIHVucGFja3MgaW50byBhIGZvbGRlciBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWNsaXBzZS1pbnN0YWxsZXIiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggdGhlIEluc3RhbGxlcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBsYXVuY2ggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vZWNsaXBzZS1pbnN0YWxsZXIKLSAgICAgJCAuL2VjbGlwc2UtaW5zdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBZb3VyIElERTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBsaXN0LCBzZWxlY3QgdGhlICJFY2xpcHNlIElERSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy9DKysgRGV2ZWxvcGVycyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgdGhlIFNvZnR3YXJlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCB0aGUgZGVmYXVsdCAiY3BwLW5lb24iIGRpcmVjdG9yeSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIkluc3RhbGwiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgYW55IGxpY2Vuc2UgYWdyZWVtZW50cyBhbmQgYXBwcm92ZSBhbnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggTmVvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkxhdW5jaCIgYnV0dG9uIGFuZCBhY2NlcHQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgIndvcmtzcGFjZSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1tYXJzLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjb25maWd1cmUgdGhlIE5lb24gRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gaG93IHlvdSBpbnN0YWxsZWQgRWNsaXBzZSBhbmQgd2hhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIGFscmVhZHkgZG9uZSwgc29tZSBvZiB0aGUgb3B0aW9ucyB3aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFwcGVhci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYW4gb3B0aW9uIGFzIGRpcmVjdGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgaXQgaGFzIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIEVjbGlwc2UgaXMgcnVubmluZyBhbmQgeW91IGFyZSBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtiZW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZW9uIC0gaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL25lb24iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBwdWxsLWRvd24gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQgdGhlIGJveCBuZXh0IHRvICJMaW51eCBUb29scyIgYW5kIHNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgotICAgICBUTSBUZXJtaW5hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kIHRoZSBib3ggbmV4dCB0byAiTW9iaWxlIGFuZCBEZXZpY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDL0MrKyBSZW1vdGUgKE92ZXIgVENGL1RFKSBSdW4vRGVidWcgTGF1bmNoZXIKLSAgICAgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBVc2VyIEFjdGlvbnMKLSAgICAgVE0gVGVybWluYWwKLSAgICAgVENGIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgYWRkLWluCi0gICAgIFRDRiBUYXJnZXQgRXhwbG9yZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZCB0aGUgYm94IG5leHQgdG8gIlByb2dyYW1taW5nIExhbmd1YWdlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgZm9sbG93aW5nIGJveDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDL0MrKyBEZXZlbG9wbWVudCBUb29scyBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gYnkgY2xpY2tpbmcgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSAiTmV4dCIgYW5kICJGaW5pc2giIGJ1dHRvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFIG9uZSBvZiB0d28gd2F5czogIHVzZSB0aGUgWW9jdG8gUHJvamVjdCdzCi0gICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICBvciBidWlsZCBhbmQgaW5zdGFsbCB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBQcmUtYnVpbHQgUGx1Zy1pbiBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UgVXBkYXRlIFNpdGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBzaXRlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydCB1cCB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gRWNsaXBzZSwgc2VsZWN0ICJJbnN0YWxsIE5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUiIGZyb20gdGhlICJIZWxwIiBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBZGQuLi4iIGluIHRoZSAiV29yayB3aXRoOiIgYXJlYS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZFQ0xJUFNFX0RMX1BMVUdJTl9VUkw7L25lb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFVSTCBmaWVsZCBhbmQgcHJvdmlkZSBhIG1lYW5pbmdmdWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgaW4gdGhlICJOYW1lIiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiT0siIHRvIGhhdmUgdGhlIGVudHJ5IGFkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAiV29yayB3aXRoOiIgZHJvcC1kb3duIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2sgdGhlIGJveGVzIG5leHQgdG8gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgotICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRlIHRoZSByZW1haW5pbmcgc29mdHdhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBzdGVwcyBhbmQgdGhlbiByZXN0YXJ0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwbHVnLWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb250ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXppcC1maWxlLW1ldGhvZCc+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUGx1Zy1pbiBVc2luZyB0aGUgTGF0ZXN0IFNvdXJjZSBDb2RlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3Qgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBKREsgMS44KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgWDExLXJlbGF0ZWQgcGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgeGF1dGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBhIG5ldyB0ZXJtaW5hbCBzaGVsbCwgY3JlYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IHdpdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9lY2xpcHNlLXBva3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgR2l0IHRvIGNyZWF0ZSB0aGUgY29ycmVjdCB0YWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9lY2xpcHNlLXBva3kKLSAgICAgJCBnaXQgY2hlY2tvdXQgbmVvbi95b2N0by0mRElTVFJPOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjcmVhdGVzIGEgbG9jYWwgdGFnIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JpZ2luL25lb24tbWFzdGVyPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIHB1dCBpbnRvIGEgZGV0YWNoZWQgSEVBRCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZpbmUgc2luY2UgeW91IGFyZSBvbmx5IGdvaW5nIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBidWlsZGluZyBhbmQgbm90IGRldmVsb3BpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlIHRvIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZSBHaXQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCBzY3JpcHRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIHRoZSBsb2NhbCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgc2V0dXAgc2NyaXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIC4vc2V0dXAuc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIHNjcmlwdCBmaW5pc2hlcyBleGVjdXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBwcm9tcHRzIHlvdSB3aXRoIGluc3RydWN0aW9ucyBvbiBob3cgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCwgd2hpY2ggaXMgYWxzbyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgR2l0IHJlcG9zaXRvcnkgY3JlYXRlZCBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhcyBkaXJlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB0aGUgdGFnIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIGJyYW5jaCwgYW5kIGEgcmVsZWFzZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBFQ0xJUFNFX0hPTUU9L2hvbWUvc2NvdHRyaWYvZWNsaXBzZS1wb2t5L3NjcmlwdHMvZWNsaXBzZSAuL2J1aWxkLnNoIC1sIG5lb24veW9jdG8tJkRJU1RSTzsgbWFzdGVyIHlvY3RvLSZESVNUUk87IDI+JmFtcDsxIHwgdGVlIGJ1aWxkLmxvZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgY29tbWFuZCBhZGRzIHRoZSB0YWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hcnMveW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHNjcmlwdCB0byB1c2UgdGhlIGxvY2FsICgtbCkgR2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dCBmb3IgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgc2NyaXB0LCB0aGUgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yZy55b2N0by5zZGstPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cmVsZWFzZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5kYXRlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LWFyY2hpdmUuemlwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBuZWNlc3NhcnksIHN0YXJ0IHRoZSBFY2xpcHNlIElERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJlIHN1cmUgeW91IGFyZSBpbiB0aGUgV29ya2JlbmNoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSGVscCIgcHVsbC1kb3duIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkFkZCIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhbnl0aGluZyB5b3Ugd2FudCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lIiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQXJjaGl2ZSIgYW5kIGJyb3dzZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpJUCBmaWxlIHlvdSBidWlsdCBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBaSVAgZmlsZSBzaG91bGQgbm90IGJlICJ1bnppcHBlZCIsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qYXJjaGl2ZS56aXA8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQuc2g8L2ZpbGVuYW1lPiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJPSyIgYnV0dG9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIHRoZSBib3hlcyB0aGF0IGFwcGVhciBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RhbGxhdGlvbiB3aW5kb3cgdG8gaW5zdGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgotICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmlzaCB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBhcHByb3ByaWF0ZSBidXR0b25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgc29mdHdhcmUgdGhhdCBjb250YWlucyB1bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN0YXJ0IHRoZSBFY2xpcHNlIElERSBpZiBuZWNlc3NhcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBjb25maWd1cmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFycy1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW52b2x2ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgdGhlIENyb3NzIENvbXBpbGVyIG9wdGlvbnMgYW5kIHRoZSBUYXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbnMgeW91IGNob29zZSBiZWNvbWUgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGZvciBhbGwgcHJvamVjdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgZG8gaGF2ZSBvcHBvcnR1bml0aWVzIHRvIGNoYW5nZSB0aGVtIGxhdGVyIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjb25maWd1cmUgdGhlIHByb2plY3QgKHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyBzdGFydCwgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZyBmcm9tIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFOgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAiUHJlZmVyZW5jZXMiIGZyb20gdGhlICJXaW5kb3ciIG1lbnUgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJZb2N0byBQcm9qZWN0IFNESyIgdG8gZGlzcGxheQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBzY3JlZW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1Yi1zZWN0aW9ucyBkZXNjcmliZSBob3cgdG8gY29uZmlndXJlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGx1Zy1pbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIGRlc2NyaXB0aW9ucywgYSBzdGFydC10by1maW5pc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGZvciBwcmVwYXJpbmcgYSBRRU1VIGltYWdlIGZvciB1c2Ugd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgcmVmZXJlbmNlZCBhcyB0aGUgIndpa2kiIGFuZCBpcyBsaW5rZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXhhbXBsZSBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+IENvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1jcm9zcy1jb21waWxlci1vcHRpb25zJz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzIENvbXBpbGVyIG9wdGlvbnMgZW5hYmxlIEVjbGlwc2UgdG8gdXNlIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjcm9zcyBjb21waWxlciB0b29sY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZXNlIG9wdGlvbnMsIHlvdSBtdXN0IHNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRvb2xjaGFpbiwgcG9pbnQgdG8gdGhlIHRvb2xjaGFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoZSBzeXNyb290IGxvY2F0aW9uLCBhbmQgc2VsZWN0IHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdGluZyB0aGUgVG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYmV0d2VlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN0YW5kYWxvbmUgcHJlLWJ1aWx0IHRvb2xjaGFpbjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIENyb3NzIENvbXBpbGVyIE9wdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBQcmUtYnVpbHQgVG9vbGNoYWluOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIHR5cGUgd2hlbiB5b3UgYXJlIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhbmQtYWxvbmUgY3Jvc3MtdG9vbGNoYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlciBhbmQgZG8gbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYnVpbGQgYSB0YXJnZXQgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHlvdSBqdXN0IHdhbnQgdG8gdXNlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0b29sY2hhaW4gb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXhpc3Rpbmcga2VybmVsIGFuZCB0YXJnZXQgcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGhhdmUgZG93bmxvYWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbGVkIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhpc3RpbmcgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgU3lzdGVtIERlcml2ZWQgVG9vbGNoYWluOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIHR5cGUgaWYgeW91IGJ1aWx0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0aGUgdG9vbGNoYWluIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBidW5kbGVkIGluc2lkZSB0aGUgQnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgY3JlYXRlZCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGltYWdlIHVzaW5nIHRoZSBzdGVwcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHlvdSB3b3VsZCBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3BlY2lmeSB0aGUgVG9vbGNoYWluIFJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEgc3RhbmQtYWxvbmUgcHJlLWJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHlvdSBzaG91bGQgYmUgcG9pbnRpbmcgdG8gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluc3RhbGxlZCAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBTREsgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIGEgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Ub29sY2hhaW4gUm9vdCBMb2NhdGlvbjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggeW91IHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCAoZS5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3BlY2lmeSBTeXNyb290IExvY2F0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbG9jYXRpb24gaXMgd2hlcmUgdGhlIHJvb3QgZmlsZXN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmVzaWRlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgbG9jYXRpb24gZGVwZW5kcyBvbiB3aGVyZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkgZXh0cmFjdGVkIGFuZCBpbnN0YWxsZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IHByZXBhcmVkIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB1c2luZyB0aGUgc3RlcHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3Ugd291bGQgYnJvd3NlIHRvIGFuZCBzZWxlY3QgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC9NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCB0aGUgdG9vbGNoYWluIGFuZCBvbiBob3cgdG8gZXh0cmFjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGwgdGhlIHN5c3Jvb3QgZmlsZXN5c3RlbSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgVGFyZ2V0IEFyY2hpdGVjdHVyZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyB0aGUgdHlwZSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgeW91IGFyZSBnb2luZyB0byB1c2Ugb3IgZW11bGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcHVsbC1kb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VGFyZ2V0IEFyY2hpdGVjdHVyZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51IHRvIG1ha2UgeW91ciBzZWxlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHVsbC1kb3duIG1lbnUgc2hvdWxkIGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBhcmNoaXRlY3R1cmUgeW91IG5lZWQgaXMgbm90IGxpc3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtdGFyZ2V0LW9wdGlvbnMnPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hvb3NlIHRvIGVtdWxhdGUgaGFyZHdhcmUgdXNpbmcgdGhlIFFFTVUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlFFTVU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2lsbCBiZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIHRoZSBlbXVsYXRvciwgeW91IGFsc28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gbG9jYXRlIHRoZSBrZXJuZWwgYW5kIHNwZWNpZnkgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gb3B0aW9ucy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3Ugc2VsZWN0ZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBwYXRoIGZvbGxvd2VkIGJ5IHRoZSBpbWFnZSAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni9iekltYWdlLXFlbXV4ODYuYmluPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZSBzdGFuZGFsb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmUtYnVpbHQgdG9vbGNoYWluLCB0aGUgcHJlLWJ1aWx0IGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZG93bmxvYWRlZCBpcyBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBzcGVjaWZpZWQgd2hlbiB5b3UgZG93bmxvYWRlZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk1vc3QgY3VzdG9tIG9wdGlvbnMgYXJlIGZvciBhZHZhbmNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSB1c2VycyB0byBmdXJ0aGVyIGN1c3RvbWl6ZSB0aGVpciBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBiZXR3ZWVuIHBhaXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVkIGJyYWNrZXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBvcHRpb25zIG11c3QgYmUgc3BlY2lmaWVkIG91dHNpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFja2V0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VyaWFsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9ncmFwaGljPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+IG11c3QgYWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRzaWRlIHRoZSBicmFja2V0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPm1hbiBxZW11PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gZ2V0IGhlbHAgb24gYWxsIHRoZSBvcHRpb25zIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgdXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgc2VyaWFsIOKAmCZsdDstbSAyNTYgLWZ1bGwtc2NyZWVuJmd0O+KAmQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgbW9kZSwgU3lzcm9vdCBpcyBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIENyb3NzLUNvbXBpbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIGNvbmZpZ3VyYXRpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3lzcm9vdCBMb2NhdGlvbjo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdpbGwgYmUgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCBoYXJkd2FyZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY3JlYXRpbmctdGhlLXByb2plY3QnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyB0aGUgUHJvamVjdDwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgotICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZS1iYXNlZC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlIEF1dG90b29scy1iYXNlZAotICAgICAgICAgICAgICAgICAgICBwcm9qZWN0cyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cyBpbiBhCi0gICAgICAgICAgICAgICAgICAgIHRlcm1pbmFsIHdpbmRvdywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBzcGFjZXMsIHVuZGVyc2NvcmVzLCBldGMuKS4gIERvaW5nIHNvIGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UgY29uZmlndXJhdGlvbiB0byBmYWlsLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIHByb2plY3QgYmFzZWQgb24gYSBZb2N0byB0ZW1wbGF0ZSBhbmQgdGhlbgotICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoZSBzb3VyY2UgY29kZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgotICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJDIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIFByb2plY3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgPGZpbGVuYW1lPkhlbGxvIFdvcmxkIEFOU0kgQyBBdXRvdG9vbHMgUHJvamVjdHM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXQgYSBuYW1lIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Qcm9qZWN0IG5hbWU6PC9maWxlbmFtZT4gZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBoeXBoZW5zIGFzIHBhcnQgb2YgdGhlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+aGVsbG88L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk5leHQiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBpbiB0aGUgdmFyaW91cyBmaWVsZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlICJvcGVuIHBlcnNwZWN0aXZlIiBwcm9tcHQgYXBwZWFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljayAiWWVzIiBzbyB0aGF0IHlvdSBpbiB0aGUgQy9DKysgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGxlZnQtaGFuZCBuYXZpZ2F0aW9uIHBhbmUgc2hvd3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNwbGF5IHlvdXIgc291cmNlIGJ5IGRvdWJsZSBjbGlja2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0J3Mgc291cmNlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtdG9vbGNoYWlucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBDcm9zcy1Ub29sY2hhaW5zPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgZWFybGllciBzZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IiwKLSAgICAgICAgICAgICAgICAgICAgc2V0cyB1cCB0aGUgZGVmYXVsdCBwcm9qZWN0IGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZXNlIHN0ZXBzOgotICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJZb2N0byBQcm9qZWN0IFNldHRpbmdzIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJQcm9qZWN0IC0+IFByb3BlcnRpZXMiIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gYnJpbmdzIHVwIHRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhbG9nIGFuZCBhbGxvd3MgeW91IHRvIG1ha2UgY2hhbmdlcyBzcGVjaWZpYyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluZGl2aWR1YWwgcHJvamVjdC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QnkgZGVmYXVsdCwgdGhlIENyb3NzIENvbXBpbGVyIE9wdGlvbnMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0IE9wdGlvbnMgZm9yIGEgcHJvamVjdCBhcmUgaW5oZXJpdGVkIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyB5b3UgcHJvdmlkZWQgdXNpbmcgdGhlIFByZWZlcmVuY2VzIERpYWxvZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncyBEaWFsb2cgYWxsb3dzIHlvdSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2Ugb3IgdmVyaWZ5IHlvdXIgY29uZmlndXJhdGlvbnMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgYW5kIGNsaWNrICJPSyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgIlJlY29uZmlndXJlIFByb2plY3QiIGZyb20gdGhlIHBvcC11cCBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIHJlY29uZmlndXJlcyB0aGUgcHJvamVjdCBieSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9nZW4uc2g8L2ZpbGVuYW1lPiBpbiB0aGUgd29ya3NwYWNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFsc28gcnVucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ0b29saXplPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFjbG9jYWw8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2hlYWRlcjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvbWFrZSAtLWE8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vY29uZmlndXJlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VlIHRoZSByZXN1bHRzIG9mIHJlY29uZmlndXJpbmcgeW91ciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tYnVpbGRpbmctdGhlLXByb2plY3QnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyB0aGUgUHJvamVjdDwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVG8gYnVpbGQgdGhlIHByb2plY3Qgc2VsZWN0ICJCdWlsZCBBbGwiIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICJQcm9qZWN0IiBtZW51LgotICAgICAgICAgICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIHlvdSBhcmUgdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyAiWW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIiBwcm9qZWN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBFY2xpcHNlIElERSBtaWdodCBkaXNwbGF5IGVycm9yIG1lc3NhZ2VzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zL1N5bWJvbHMvVHlwZXMgdGhhdCBjYW5ub3QgYmUgInJlc29sdmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW4gd2hlbiB0aGUgcmVsYXRlZCBpbmNsdWRlIGZpbGUgaXMgbGlzdGVkIGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBuYXZpZ2F0b3IgYW5kIHdoZW4gdGhlIHByb2plY3QgaXMgYWJsZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMgb25seSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gYWRkIGEgbmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWQgZm9sZGVyIHRvIHRoZSBhcHByb3ByaWF0ZSBzeXNyb290LgotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGFkZCB0aGUgbGlua2VkIGZvbGRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZpbGUgPiBOZXc8L2ZpbGVuYW1lPiBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlIGxvY2F0aW9uIChsaW5rZWQgZm9sZGVyKSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkJyb3dzZSIgdG8gbmF2aWdhdGUgdG8gdGhlIGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGluc2lkZSB0aGUgc2FtZSBzeXNyb290IGxvY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBzYXZlIHRoZSBsaW5rZWQgZm9sZGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXN0YXJ0aW5nLXFlbXUtaW4tdXNlci1zcGFjZS1uZnMtbW9kZSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlN0YXJ0aW5nIFFFTVUgaW4gVXNlci1TcGFjZSBORlMgTW9kZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVG8gc3RhcnQgdGhlIFFFTVUgZW11bGF0b3IgZnJvbSB3aXRoaW4gRWNsaXBzZSwgZm9sbG93Ci0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHN0ZXBzOgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBvc2UgYW5kIHNlbGVjdCAiRXh0ZXJuYWwgVG9vbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyAuLi4iIGZyb20gdGhlICJSdW4gLT4gRXh0ZXJuYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29scyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIHNlbGVjdCB5b3VyIGltYWdlIGluIHRoZSBuYXZpZ2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwgdG8gdGhlIGxlZnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cWVtdV9pNTg2LXBva3ktbGludXg8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIlJ1biIgdG8gbGF1bmNoIFFFTVUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IG9uIHdoaWNoIHlvdSBhcmUgcnVubmluZyBRRU1VIG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSB0aGUgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiB1dGlsaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgdG8gYmUgYWJsZSB0byBtYWtlIFJQQyBjYWxscyBvbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciBvbiB0aGF0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIFFFTVUgZG9lcyBub3QgaW52b2tlIGFuZCB5b3UgcmVjZWl2ZSBlcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcyBpbnZvbHZpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiwgZm9sbG93IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyB0byBnZXQgdGhlIHNlcnZpY2UgcnVubmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24sIHlvdSBtdXN0IGRvIHRoZSBmb2xsb3dpbmcgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gZ2V0IFFFTVUgdG8gbGF1bmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcnBjYmluZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gZWRpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvaW5pdC5kL3JwY2JpbmQ8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIE9QVElPTlM9Ii1pIC13IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIG1vZGlmeWluZyB0aGUgZmlsZSwgeW91IG5lZWQgdG8gc3RhcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHNlcnZpY2UgcG9ydG1hcCByZXN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbmVlZGVkLCBlbnRlciB5b3VyIGhvc3Qgcm9vdCBwYXNzd29yZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzaGVsbCB3aW5kb3cgYXQgdGhlIHByb21wdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHMgdXAgYSA8ZmlsZW5hbWU+VGFwIDA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gbmVlZGVkIGZvciBydW5uaW5nIGluIHVzZXItc3BhY2UgTkZTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWl0IGZvciBRRU1VIHRvIGxhdW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIFFFTVUgbGF1bmNoZXMsIHlvdSBjYW4gYmVnaW4gb3BlcmF0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lIHVzZWZ1bCB0YXNrIGF0IHRoaXMgcG9pbnQgd291bGQgYmUgdG8gZGV0ZXJtaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIElQIEFkZHJlc3MgZm9yIHRoZSB1c2VyLXNwYWNlIE5GUyBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBRRU1VIG1hY2hpbmUgYXBwZWFycyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4dGVybSB3aW5kb3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyBhZGRyZXNzIHRvIGhlbHAgeW91IHNlZSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUCBhZGRyZXNzIHRoZSBpbnN0YW5jZSBvZiBRRU1VIGlzIHVzaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RGVwbG95aW5nIGFuZCBEZWJ1Z2dpbmcgdGhlIEFwcGxpY2F0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBRRU1VIGVtdWxhdG9yIGlzIHJ1bm5pbmcgdGhlIGltYWdlLCB5b3UgY2FuIGRlcGxveQotICAgICAgICAgICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBFY2xpcHNlIElERSBhbmQgdGhlbiB1c2UKLSAgICAgICAgICAgICAgICAgICAgdGhlIGVtdWxhdG9yIHRvIHBlcmZvcm0gZGVidWdnaW5nLgotICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHksIEVjbGlwc2UgZG9lcyBub3Qgc3VwcG9ydCBTU0ggcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IG5lZWQgdG8gcnVuIG9yIGRlYnVnIGEgcmVtb3RlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB1c2luZyB0aGUgaG9zdCBkaXNwbGF5LCB5b3UgbXVzdCBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICAgICAgdHVubmVsaW5nIGNvbm5lY3Rpb24gZnJvbSBvdXRzaWRlIEVjbGlwc2UgYW5kIGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29ubmVjdGlvbiBhbGl2ZSBkdXJpbmcgeW91ciB3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IHRlcm1pbmFsLCBydW4gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzc2ggLVhZIDxyZXBsYWNlYWJsZT51c2VyX25hbWU8L3JlcGxhY2VhYmxlPkA8cmVwbGFjZWFibGU+cmVtb3RlX2hvc3RfaXA8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGFib3ZlIGZvcm0sIGhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzc2ggLVhZIHJvb3RAMTkyLjE2OC43LjIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIGFkZCB0aGUgY29tbWFuZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZWQgaW4gRWNsaXBzZSdzIHJ1biBjb25maWd1cmF0aW9uIGJlZm9yZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGV4cG9ydCBESVNQTEFZPToxMC4wCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIG5vdCBkZXN0cm95IHRoZSBjb25uZWN0aW9uIGR1cmluZyB5b3VyIFFFTVUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gKGkuZS4gZG8gbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0IG91dCBvZiBvciBjbG9zZSB0aGF0IHNoZWxsKS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJEZWJ1ZyBDb25maWd1cmF0aW9ucy4uLiIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVuIiBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBsZWZ0IGFyZWEsIGV4cGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DL0MrK1JlbW90ZSBBcHBsaWNhdGlvbjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSB5b3VyIHByb2plY3QgYW5kIHNlbGVjdCBpdCB0byBicmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwIGEgbmV3IHRhYmJlZCB2aWV3IGluIHRoZSBEZWJ1ZyBDb25maWd1cmF0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWxvZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgIkRlYnVnZ2VyIiB0YWIgdG8gc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2wgZGVidWdnZXIgeW91IGFyZSB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGNoYW5nZSB0byB0aGUgZGVidWdnZXIgcGVyc3BlY3RpdmUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiTWFpbiIgdGFiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBRRU1VIGluc3RhbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgY2xpY2tpbmcgb24gIm5ldyIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0IDxmaWxlbmFtZT5TU0g8L2ZpbGVuYW1lPiwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFucyBTZWN1cmUgU29ja2V0IFNoZWxsIGFuZCB0aGVuIGNsaWNrICJPSyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzZWxlY3QgYW4gVENGIGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyIG91dCB0aGUgIkNvbm5lY3Rpb24gbmFtZSIgZmllbGQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXIgYW55IG5hbWUgeW91IHdhbnQgZm9yIHRoZSBjb25uZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1dCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGNvbm5lY3Rpb24gaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhvc3QiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB0aGUgZGVmYXVsdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4xOTIuMTY4LjcuMjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIGEgcHJldmlvdXMgUUVNVSBzZXNzaW9uIGRpZCBub3QgZXhpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFubHksIHRoZSBJUCBhZGRyZXNzIGluY3JlbWVudHMgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MTkyLjE2OC43LjM8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBzZXNzaW9uIGJ5IGxvb2tpbmcgaW4gdGhlIHh0ZXJtIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnMgd2hlbiB5b3UgbGF1bmNoIFFFTVUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyIDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4sIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIFFFTVUsIGZvciB0aGUgIlVzZXIiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGVtcHR5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJGaW5pc2giIHRvIGNsb3NlIHRoZSBOZXcgQ29ubmVjdGlvbnMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgdXNlIHRoZSBkcm9wLWRvd24gbWVudSBub3cgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24iIGZpZWxkIGFuZCBwaWNrIHRoZSBJUCBBZGRyZXNzIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGVyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIHlvdSBhcmUgY29ubmVjdGluZyBhcyB0aGUgcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBRRU1VIHg4Ni02NCBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMgcHJvdmlkZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZW1vdGUgQWJzb2x1dGUgRmlsZSBQYXRoIGZvciBDL0MrKyBBcHBsaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCwgYnJvd3NlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Jvb3QvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+UHJvamVjdE5hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT4vaG9tZS9yb290L2hlbGxvPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBhbHNvIGJyb3dzZSB0byBhbnkgb3RoZXIgcGF0aCB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGFjY2VzcyB0byBvbiB0aGUgdGFyZ2V0IHN1Y2ggYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgb24gdGhlIFFFTVUgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBmYWlsIHRvIGJyb3dzZSB0byBhbmQgc3BlY2lmeSBhbiBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBRRU1VIHdpbGwgbm90IHVuZGVyc3RhbmQgd2hhdCB0byByZW1vdGVseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIGhlbHBmdWwgaW4gdGhhdCBpdCBhdXRvIGZpbGxzIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBuYW1lIGZvciB5b3UgYXNzdW1pbmcgeW91IGJyb3dzZWQgdG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgdXNlcm5hbWUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgInJvb3QiIGFzIHRoZSB1c2VybmFtZSBhbmQgeW91IGxlYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYXNzd29yZCBmaWVsZCBibGFuay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgY2hhbmdlIHRvIHRoZSAiRGVidWciIHBlcnNwZWN0aXZlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRGVidWciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IHRoZSBkZWJ1ZyBwZXJzcGVjdGl2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXVzaW5nLUxpbnV4dG9vbHMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBMaW51eHRvb2xzPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBwZXJmb3JtYW5jZSB0b29scyBleGlzdAotICAgICAgICAgICAgICAgICAgICAoTGludXh0b29scykgdGhhdCBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgdG9vbHMgYXJlIGFpZHMgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBhbmQgaW1hZ2VzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGVzZSB0b29scyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICB0aGUgIkxpbnV4dG9vbHMiIG1lbnUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29uZmlndXJlIGFuZCB1c2UgdGhlc2UgdG9vbHMsCi0gICAgICAgICAgICAgICAgICAgIHNlZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IGE0MDgwMjQuLjRlNTllMDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwKQEAgLTcsNyArNyw3IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgogICAgICAgICBUaGUgaW50ZXJmYWNlIGVuYWJsZXMgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIHlvdXIgYnVpbGRzLgogICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KICAgICAgICAgWW91IGNhbiB1c2UgVG9hc3RlciB0byBjb25maWd1cmUgYW5kIHN0YXJ0IGJ1aWxkcyBvbiBtdWx0aXBsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwKaW5kZXggM2E0NmI2MS4uZTk4NDM5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sCkBAIC0xNDgsMTc3ICsxNDgsNDYgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzZWxlY3QtdGhlLXRvYXN0ZXJjb25mLWpzb24tZmlsZSc+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2UgdGhlIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gRmlsZTwvdGl0bGU+CisgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzZS10aGUtZml4dHVyZS1mZWF0dXJlJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPlVzZSB0aGUgRml4dHVyZSBGZWF0dXJlPC90aXRsZT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgdGhlIEFkbWluaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UsIHlvdSBjYW4gZWRpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3RvYXN0ZXItanNvbi1maWxlcyc+PGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIHJlbG9hZCBpdCB0byBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgVG9hc3RlciBzdGFydHVwIHNjcmlwdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9iaXRiYWtlL2Jpbi90b2FzdGVyPC9maWxlbmFtZT4gc3BlY2lmaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gb2YgYSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBhcyB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+VE9BU1RFUl9DT05GPC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB1c2VkIHRvIHNldCB1cCB0aGUgaW5pdGlhbAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiB2YWx1ZXMgd2l0aGluIHRoZSBUb2FzdGVyIGRhdGFiYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIGxheWVyIHNvdXJjZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUd28gdmVyc2lvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBleGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgZmlsZSBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvdG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIGNvbnRhaW5zIHRoZSBkZWZhdWx0IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2Vjb25kIHZlcnNpb24gb2YgdGhlIGZpbGUgaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPiBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+bWV0YS9jb25mL3RvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBjb250YWlucyB0aGUgZGVmYXVsdCBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdlZGl0LXRoZS1jb25maWd1cmF0aW9uLWZpbGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+RWRpdCB0aGUgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlIHZlcnNpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+IGZpbGUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIHNldCB1cCB5b3VyIFRvYXN0ZXIgaW5zdGFuY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZmlsZSwgeW91IHdpbGwgZmluZCBhIHNlY3Rpb24gZm9yIGxheWVyIHNvdXJjZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBEamFuZ28gZml4dHVyZSBmZWF0dXJlIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHdoZW4geW91IHVzZSBpdCB0byBzcGVjaWZ5IGEgY3VzdG9tIFVSTC4gVG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZml4dHVyZSBmZWF0dXJlLCBjcmVhdGUgKG9yIGVkaXQpIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9saWIvdG9hc3Rlci5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gc2V0IHRoZSBmb2xsb3dpbmcgVG9hc3RlciBzZXR0aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSBVUkw6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgImxheWVyc291cmNlcyI6IFsKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiTG9jYWwgWW9jdG8gUHJvamVjdCIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJsb2NhbCIsCi0gICAgICAgICAgICAiYXBpdXJsIjogIi4uLy4uLyIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIkhFQUQiIF0sCi0gICAgICAgICAgICAibGF5ZXJzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAib3BlbmVtYmVkZGVkLWNvcmUiLAotICAgICAgICAgICAgICAgICAgICAibG9jYWxfcGF0aCI6ICJtZXRhIiwKLSAgICAgICAgICAgICAgICAgICAgInZjc191cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIjogIm1ldGEiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm1ldGEtcG9reSIsCi0gICAgICAgICAgICAgICAgICAgICJsb2NhbF9wYXRoIjogIm1ldGEtcG9reSIsCi0gICAgICAgICAgICAgICAgICAgICJ2Y3NfdXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCI6ICJtZXRhLXBva3kiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm1ldGEteW9jdG8tYnNwIiwKLSAgICAgICAgICAgICAgICAgICAgImxvY2FsX3BhdGgiOiAibWV0YS15b2N0by1ic3AiLAotICAgICAgICAgICAgICAgICAgICAidmNzX3VybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAgICAgICAgImRpcnBhdGgiOiAibWV0YS15b2N0by1ic3AiCi0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIk9wZW5FbWJlZGRlZCIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJsYXllcmluZGV4IiwKLSAgICAgICAgICAgICJhcGl1cmwiOiAiaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLyIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iICwiZmlkbyJdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkltcG9ydGVkIGxheWVycyIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJpbXBvcnRlZCIsCi0gICAgICAgICAgICAiYXBpdXJsIjogIiIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iLCJmaWRvIiwgIkhFQUQiXQotCi0gICAgICAgIH0KLSAgICBdLAorICAgICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisgICAgICZsdDtkamFuZ28tb2JqZWN0cyB2ZXJzaW9uPSIxLjAiJmd0OworICAgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS50b2FzdGVyc2V0dGluZyIgcGs9IjEwMCImZ3Q7CisgICAgICAgICAgICAgICAgICAgICAmbHQ7ZmllbGQgbmFtZT0ibmFtZSIgdHlwZT0iQ2hhckZpZWxkIiZndDtDVVNUT01fTEFZRVJJTkRFWF9TRVJWRVImbHQ7L2ZpZWxkJmd0OworICAgICAgICAgICAgICAgICAgICAgJmx0O2ZpZWxkIG5hbWU9InZhbHVlIiB0eXBlPSJDaGFyRmllbGQiJmd0O2h0dHBzOi8vbGF5ZXJzLm15X29yZ2FuaXphdGlvbi5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAmbHQ7ZGphbmdvLW9iamVjdHMmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFkZCB5b3VyIG93biBsYXllciBzb3VyY2UgdG8gdGhpcyBzZWN0aW9uIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlIHNhbWUgZm9ybWF0IHVzZWQgZm9yIHRoZSAiT3BlbkVtYmVkZGVkIgotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgc291cmNlIHNob3duIGFib3ZlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHlvdXIgbGF5ZXIgc291cmNlIGEgbmFtZSwgcHJvdmlkZSB0aGUgVVJMIG9mIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIHNvdXJjZSBBUEksIHVzZSB0aGUgc291cmNlIHR5cGUgImxheWVyaW5kZXgiLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlIHdoaWNoIGJyYW5jaGVzIGZyb20geW91ciBsYXllciBzb3VyY2UgeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1ha2UgYXZhaWxhYmxlIHRocm91Z2ggVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgT3BlbkVtYmVkZGVkIGxheWVyIHNvdXJjZSBtYWtlcwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIG9ubHkgaXRzICJtYXN0ZXIiLCAiZmlkbyIsIGFuZCAiamV0aHJvIgotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2hlcyBtdXN0IG1hdGNoIHRoZSBicmFuY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXQgd2hlbiBjb25maWd1cmluZyB5b3VyIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBjb25maWd1cmUgb25lIHJlbGVhc2UgaW4gVG9hc3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgYnkgc2V0dGluZyBpdHMgYnJhbmNoIHRvICJicmFuY2gtb25lIiBhbmQgeW91IGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciByZWxlYXNlIGluIFRvYXN0ZXIgYnkgc2V0dGluZyBpdHMgYnJhbmNoIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoLXR3byIsIHRoZSBicmFuY2hlcyBpbiB5b3VyIGxheWVyIHNvdXJjZSBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlICJicmFuY2gtb25lIiBhbmQgImJyYW5jaC10d28iIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSByZWxlYXNlcwotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBsYXllciBpbmZvcm1hdGlvbiBmcm9tIHlvdXIgbGF5ZXIgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgd2hlbiB1c2VycyBjcmVhdGUgYSBwcm9qZWN0IHdpdGggYSBnaXZlbgotICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSwgdGhleSB3aWxsIHNlZSB0aGUgYXBwcm9wcmlhdGUgbGF5ZXJzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgbGF5ZXIgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25uZWN0aW9uIGVuc3VyZXMgdGhhdCBvbmx5IGxheWVycyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBzZWxlY3RlZCBwcm9qZWN0IHJlbGVhc2UgY2FuIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCBmb3IgYnVpbGRpbmcuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYWRkZWQgdGhpcyBpbmZvcm1hdGlvbiB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gZmlsZSwgc2F2ZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiBhIHRlcm1pbmFsIHdpbmRvdywgbmF2aWdhdGUgdG8gdGhlIGRpcmVjdG9yeSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgVG9hc3RlciBkYXRhYmFzZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Qgb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBsb2NhdGVkIGluIHRoYXQgZGlyZWN0b3J5LCBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPmxvYWRjb25mPC9maWxlbmFtZT4iIGNvbW1hbmQsIHdoaWNoIHRha2VzIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbiBhcmd1bWVudCB0aGUgZnVsbCBwYXRoIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBmaWxlIHlvdSBqdXN0IGVkaXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgY2xvbmVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGFuZCB5b3UgZWRpdGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIHR5cGUgc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBsb2FkY29uZiAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb24KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGVudGVyaW5nIHRoaXMgY29tbWFuZCwgeW91IG5lZWQgdG8gdXBkYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBkYXRhYmFzZSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBjb21pbmcgZnJvbSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgbGF5ZXIgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gZG8gdGhhdCwgeW91IHNob3VsZCBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPmxzdXBkYXRlczwvZmlsZW5hbWU+IiBjb21tYW5kIGZyb20gdGhlIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgVG9hc3RlciBkYXRhYmFzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBsc3VwZGF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIFRvYXN0ZXIgY2FuIHJlYWNoIHRoZSBBUEkgVVJMLCB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbGxpbmcgeW91IHRoYXQgVG9hc3RlciBpcyB1cGRhdGluZyB0aGUgbGF5ZXIgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHN0YXJ0IFRvYXN0ZXIgZm9yIHRoZSBmaXJzdCB0aW1lLCBvciBpZiB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGUgZmlsZSA8ZmlsZW5hbWU+dG9hc3Rlci5zcWxpdGU8L2ZpbGVuYW1lPiBhbmQgcmVzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhYmFzZSB3aWxsIHBvcHVsYXRlIGNsZWFubHkgZnJvbSB0aGlzIGxheWVyIGluZGV4IHNlcnZlci4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgaW5mb3JtYXRpb24gaGFzIGJlZW4gdXBkYXRlZCwgdmVyaWZ5IHRoZSBuZXcgbGF5ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBieSB1c2luZyB0aGUgVG9hc3RlciB3ZWIgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgICAgICAgICAgVG8gZG8gdGhhdCwgdmlzaXQgdGhlICJBbGwgY29tcGF0aWJsZSBsYXllcnMiIHBhZ2UgaW5zaWRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllcnMgZnJvbSB5b3VyIGxheWVyIHNvdXJjZSBzaG91bGQgYmUgbGlzdGVkIHRoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBwcm9qZWN0LiBUaGUgbGF5ZXJzIGZyb20geW91ciBsYXllciBzb3VyY2Ugc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZWQgdGhlcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjaGFuZ2UgdGhlIGluZm9ybWF0aW9uIGluIHlvdXIgbGF5ZXIgaW5kZXggc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaCB0aGUgVG9hc3RlciBkYXRhYmFzZSBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBsc3VwZGF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIFRvYXN0ZXIgY2FuIHJlYWNoIHRoZSBBUEkgVVJMLCB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbGxpbmcgeW91IHRoYXQgVG9hc3RlciBpcyB1cGRhdGluZyB0aGUgbGF5ZXIgc291cmNlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgPC9zZWN0aW9uPgpAQCAtMzU5LDE5ICsyMjgsMTIgQEAKICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBUb2FzdGVyIGlzIGNvbmZpZ3VyZWQgdG8gd29yayB3aXRoIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICByZWxlYXNlczoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPllvY3RvIFByb2plY3QgMi4wICJKZXRocm8iIG9yIE9wZW5FbWJlZGRlZCAiSmV0aHJvIjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZWxlYXNlIGNhdXNlcyB5b3VyIFRvYXN0ZXIgcHJvamVjdHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFnYWluc3QgdGhlIGhlYWQgb2YgdGhlIGpldGhybyBicmFuY2ggYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPWpldGhybyc+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvY29tbWl0Lz9oPWpldGhybyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IDEuOCAiRmlkbyIgb3IgT3BlbkVtYmVkZGVkICJGaWRvIjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZWxlYXNlIGNhdXNlcyB5b3VyIFRvYXN0ZXIgcHJvamVjdHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFnYWluc3QgdGhlIGhlYWQgb2YgdGhlIGZpZG8gYnJhbmNoIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1maWRvJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9jb21taXQvP2g9Zmlkbyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0ICZESVNUUk87ICImRElTVFJPX05BTUU7IiBvciBPcGVuRW1iZWRkZWQgIiZESVNUUk9fTkFNRTsiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2UgY2F1c2VzIHlvdXIgVG9hc3RlciBwcm9qZWN0cyB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCB0aGUgaGVhZCBvZiB0aGUgJkRJU1RST19OQU1FX05PX0NBUDsgYnJhbmNoIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2Nrbyc+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9jb21taXQvP2g9cm9ja28nPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCAiTWFzdGVyIiBvciBPcGVuRW1iZWRkZWQgIk1hc3RlciI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBjYXVzZXMgeW91ciBUb2FzdGVyIFByb2plY3RzIHRvCkBAIC0zOTAsNDY4ICsyNTIsNDEzIEBACiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItcmVsZWFzZXMtY29tcHJpc2VkLW9mJz4KLSAgICAgICAgICAgIDx0aXRsZT5XaGF0IE1ha2VzIFVwIGEgUmVsZWFzZT88L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmluZy10b2FzdGVyJz4KKyAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFRvYXN0ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIFRvYXN0ZXIsIHlvdSBtdXN0IGNvbmZpZ3VyZSB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUKKyAgICAgICAgICAgIGRlZmF1bHQgY29udGVudC4gVGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucyBkZXNjcmliZSB2YXJpb3VzIGFzcGVjdHMKKyAgICAgICAgICAgIG9mIFRvYXN0ZXIgY29uZmlndXJhdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmluZy10aGUtd29ya2Zsb3cnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBXb3JrZmxvdzwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgcmVsZWFzZSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TmFtZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2UgKDxmaWxlbmFtZT5uYW1lPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZWxlYXNlIG5hbWUgbmV2ZXIgYXBwZWFycyBpbiB0aGUgdGhlIFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYiBpbnRlcmZhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGEgdXNlciBuZXZlciBzZWVzIHRoZSByZWxlYXNlIG5hbWUuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGNvbnRyb2xzIHdvcmtmbG93IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBvdXRsaW5lIHRoZSBwcm9jZXNzIHRvIGluaXRpYWxseSBwb3B1bGF0ZQorICAgICAgICAgICAgICAgIHRoaXMgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcm9qZWN0IHNldHRpbmdzIGFyZSBzZXQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9ybS9maXh0dXJlcy9zZXR0aW5ncy54bWw8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlc2NyaXB0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5kZXNjcmlwdGlvbjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVzY3JpcHRpb24gaXMgd2hhdCB1c2VycyBlbmNvdW50ZXIgd2hlbiBjcmVhdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCB0aGUgVG9hc3RlciB3ZWIgaW50ZXJmYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY29uZmlndXJlIHlvdXIgcmVsZWFzZSwgYmUgc3VyZSB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgZGVzY3JpcHRpb24gdGhhdCBzdWZmaWNpZW50bHkgZGVzY3JpYmVzIGFuZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiBUb2FzdGVyIGhhcyBtb3JlIHRoYW4gb25lIHJlbGVhc2UgY29uZmlndXJlZCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlIGRlc2NyaXB0aW9ucyBhcHBlYXIgbGlzdGVkIGluIGEgZHJvcCBkb3duIG1lbnUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYSB1c2VyIGNyZWF0ZXMgYSBuZXcgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIFRvYXN0ZXIgaGFzIG9ubHkgb25lIHJlbGVhc2UgY29uZmlndXJlZCwgYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0cyBjcmVhdGVkIHVzaW5nIHRoZSB3ZWIgaW50ZXJmYWNlIHRha2UgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBhbmQgdGhlIGRyb3AgZG93biBtZW51IGRvZXMgbm90IGRpc3BsYXkgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIHdlYiBpbnRlcmZhY2UuCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHByb2plY3QgZGlzdHJvIGFuZCBsYXllcnMgYXJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvcG9reS54bWw8L2ZpbGVuYW1lPiBpZiBwb2t5CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBwb2t5IGlzIG5vdCBpbnN0YWxsZWQsIHRoZXkgYXJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvb2UtY29yZS54bWw8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBCaXRiYWtlIHZlcnNpb24gKDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIGxheWVycyBzZXQgaW4gdGhlIGN1cnJlbnQgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBpcyBkZXNjcmliZWQgYnkgYSBuYW1lLCBhIEdpdCBVUkwsIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBpbiB0aGUgR2l0IFVSTCwgYW5kIGEgZGlyZWN0b3J5IHBhdGggaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc25pcHBldCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICBhIFRvYXN0ZXIgSlNPTiBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIEJpdEJha2UgdmVyc2lvbiB1c2VzIHRoZSBtYXN0ZXIgYnJhbmNoIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgImJpdGJha2UiIDogWwotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImdpdHVybCI6ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImRpcnBhdGgiOiAiIgotICAgICAgICAgfQotICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIG1vcmUgZGV0YWlsIG9uIGVhY2ggb2YgdGhlIGl0ZW1zIHRoYXQgY29tcHJpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCaXRCYWtlIHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TmFtZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPikgdXNlZCB0byByZWZlciB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmVyc2lvbiBvZiBCaXRCYWtlIHlvdSBhcmUgdXNpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWUgaXMgbmV2ZXIgZXhwb3NlZCB0aHJvdWdoIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2l0IFVSTDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgVVJMICg8ZmlsZW5hbWU+Z2l0dXJsPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgQml0QmFrZSBHaXQgcmVwb3NpdG9yeSBjbG9uZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIFRvYXN0ZXIgcHJvamVjdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnJhbmNoOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHaXQgYnJhbmNoLCBvciByZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5icmFuY2g8L2ZpbGVuYW1lPikgb2YgdGhlIEJpdEJha2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB1c2VkIHdpdGggVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EaXJlY3RvcnkgUGF0aDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3ViLWRpcmVjdG9yeSBvZiB0aGUgQml0QmFrZSByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+ZGlycGF0aDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIEdpdCBVUkwgaW5jbHVkZXMgbW9yZSB0aGFuIG9uZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LCB5b3UgbmVlZCB0byBzZXQgdGhpcyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBVUkwgZG9lcyBub3QgaW5jbHVkZSBtb3JlIHRoYW4gYSBzaW5nbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSwgeW91IGNhbiBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcnBhdGg8L2ZpbGVuYW1lPiB0byBhIG51bGwgc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuICIiKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cywgdGhlbiBpdHMgdmFsdWVzIGFyZSBhZGRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJyYW5jaCBmb3IgdGhlIGxheWVyIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5icmFuY2g8L2ZpbGVuYW1lPikgdXNlZCB3aXRoIHRoZSByZWxlYXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciB0aGUgT3BlbkVtYmVkZGVkIGxheWVyIHNvdXJjZSwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiwgImZpZG8iLCBhbmQgImpldGhybyIgYnJhbmNoZXMgYXJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxheWVyIGluZGV4IGlzIHRoZW4gc2Nhbm5lZCBhbmQgYWRkZWQgdG8gdGhlIGRhdGFiYXNlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGVmYXVsdCBMYXllcnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZXQgb2YgZGVmYXVsdCBsYXllcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+ZGVmYXVsdGxheWVyczwvZmlsZW5hbWU+KSBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgcHJvamVjdCBjb25maWd1cmF0aW9uIHdoZW4gYSBwcm9qZWN0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGF5ZXIgU291cmNlIFByaW9yaXRpZXM8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBzcGVjaWZpY2F0aW9uIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdsYXllci1zb3VyY2UnPmxheWVyIHNvdXJjZTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXRpZXMgKDxmaWxlbmFtZT5sYXllcnNvdXJjZXByaW9yaXR5PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIFRvYXN0ZXIgdG8gd29yayBhcyBpbnRlbmRlZCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0ZWQgbGF5ZXJzIiBsYXllciBzb3VyY2Ugc2hvdWxkIGhhdmUgdGhlIGhpZ2hlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5LCB3aGljaCBtZWFucyB0aGF0IGxheWVycyBtYW51YWxseSBpbXBvcnRlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnMgd2l0aCB0aGUgIkltcG9ydCBsYXllciIgZnVuY3Rpb25hbGl0eSB3aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbHdheXMgYmUgdmlzaWJsZSBhbmQgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5IZWxwIFRleHQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgdGV4dCAoPGZpbGVuYW1lPmhlbHB0ZXh0PC9maWxlbmFtZT4pIHRoYXQgZXhwbGFpbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHJlbGVhc2UgZG9lcyB3aGVuIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBoZWxwIHRleHQgYXBwZWFycyBiZWxvdyB0aGUgcmVsZWFzZSBkcm9wLWRvd24KLSAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUgd2hlbiB5b3UgY3JlYXRlIGEgVG9hc3RlciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhlbHAgdGV4dCBzaG91bGQgYXNzaXN0IHVzZXJzIGluIG1ha2luZyB0aGUgY29ycmVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb24gcmVnYXJkaW5nIHRoZSByZWxlYXNlIHRvIHVzZSBmb3IgYSBnaXZlbgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgT25jZSB0aGVzZSBzdGVwcyBjb21wbGV0ZSwgVG9hc3RlciBpcyBzZXQgdXAgYW5kIHJlYWR5IHRvIHVzZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjdXN0b21pemluZy1wcmUtc2V0LWRhdGEnPgorICAgICAgICAgICAgPHRpdGxlPkN1c3RvbWl6aW5nIFByZS1TZXQgRGF0YTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwcmUtc2V0IGRhdGEgZm9yIFRvYXN0ZXIgaXMgZWFzaWx5IGN1c3RvbWl6YWJsZS4gWW91IGNhbgorICAgICAgICAgICAgICAgIGNyZWF0ZSB0aGUgPGZpbGVuYW1lPm9ybS9maXh0dXJlcy9jdXN0b20ueG1sPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHRvIGN1c3RvbWl6ZSB0aGUgdmFsdWVzIHRoYXQgZ28gaW50byB0byB0aGUgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgQ3VzdG9taXphdGlvbiBpcyBhZGRpdGl2ZSwKKyAgICAgICAgICAgICAgICBhbmQgY2FuIGVpdGhlciBleHRlbmQgb3IgY29tcGxldGVseSByZXBsYWNlIHRoZSBleGlzdGluZyB2YWx1ZXMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIHN1bW1hcml6ZSB3aGF0IGNvbXByaXNlcyBhIHJlbGVhc2UsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICBleGFtcGxlIGZyb20gYSBUb2FzdGVyIEpTT04gZmlsZS4KLSAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBuYW1lcyB0aGUgcmVsZWFzZSAibWFzdGVyIiBhbmQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggcHJvdmlkZWQgYnkgdGhlIGxheWVyIHNvdXJjZSBvZiB0eXBlCi0gICAgICAgICAgICAgICAgImxheWVyaW5kZXgiLCB3aGljaCBpcyBjYWxsZWQgIk9wZW5FbWJlZGRlZCIsIGFuZCBzZXRzCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+IGxheWVyIGFzIHRoZSBvbmUKLSAgICAgICAgICAgICAgICB0byBiZSBhZGRlZCBieSBkZWZhdWx0IHRvIGFueSBwcm9qZWN0cyBjcmVhdGVkIGluIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgdmVyc2lvbiB1c2VkIHdvdWxkIGJlIGRlZmluZWQgYXMgc2hvd24gZWFybGllcgotICAgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBsaXN0OgorICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhlIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIG1hY2hpbmUsIGRpc3RybywKKyAgICAgICAgICAgICAgICBmaWxlIGltYWdlcywgYW5kIGxheWVycy4KKyAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIGEgbmV3IHByb2plY3QsIHlvdSBjYW4gdXNlIHRoZSBmaWxlIHRvIGRlZmluZQorICAgICAgICAgICAgICAgIHRoZSBvZmZlcmVkIGFsdGVybmF0ZSBwcm9qZWN0IHJlbGVhc2Ugc2VsZWN0aW9ucy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgb25lIG9yIG1vcmUgYWRkaXRpb25hbCBzZWxlY3Rpb25zIHRoYXQKKyAgICAgICAgICAgICAgICBwcmVzZW50IGN1c3RvbSBsYXllciBzZXRzIG9yIGRpc3Ryb3MsIGFuZCBhbnkgb3RoZXIgbG9jYWwgb3IgcHJvcHJpZXRhcnkKKyAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBjYW4gY29tcGxldGVseSBkaXNhYmxlIHRoZSBjb250ZW50IGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWNvcmUueG1sPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5wb2t5LnhtbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZXMgYnkgZGVmaW5pbmcgdGhlIHNlY3Rpb24gc2hvd24gYmVsb3cgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHRpbmdzLnhtbDwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgb3B0aW9uIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaWYgeW91ciBjdXN0b20KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRlZmluZXMgZmV3ZXIgcmVsZWFzZXMgb3IgbGF5ZXJzIHRoYW4gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICBmaXh0dXJlIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2V0cyAibmFtZSIgdG8gIkNVU1RPTV9YTUxfT05MWSIgYW5kIGl0cyB2YWx1ZQorICAgICAgICAgICAgICAgIHRvICJUcnVlIi4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICJyZWxlYXNlcyI6IFsKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAibmFtZSI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJPcGVuRW1iZWRkZWQgbWFzdGVyIiwKLSAgICAgICAgICAgICAiYml0YmFrZSI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJicmFuY2giOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZGVmYXVsdGxheWVycyI6IFsgIm9wZW5lbWJlZGRlZC1jb3JlIiBdLAotICAgICAgICAgICAgICJsYXllcnNvdXJjZXByaW9yaXR5IjogeyAiSW1wb3J0ZWQgbGF5ZXJzIjogOTksICJMb2NhbCBPcGVuRW1iZWRkZWQiIDogMTAsICJPcGVuRW1iZWRkZWQiIDogIDAgfSwKLSAgICAgICAgICAgICAiaGVscHRleHQiOiAiVG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvXCImZ3Q7WW9jdG8gUHJvamVjdCBtYXN0ZXIgYnJhbmNoJmx0Oy9hJmd0Oywgd2hlcmUgYWN0aXZlIGRldmVsb3BtZW50IHRha2VzIHBsYWNlLiBUaGlzIGlzIG5vdCBhIHN0YWJsZSBicmFuY2gsIHNvIHlvdXIgYnVpbGRzIG1pZ2h0IG5vdCB3b3JrIGFzIGV4cGVjdGVkLiIKLSAgICAgICAgIH0KLSAgICAgXQorICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0udG9hc3RlcnNldHRpbmciIHBrPSI5OSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7Q1VTVE9NX1hNTF9PTkxZJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2YWx1ZSImZ3Q7VHJ1ZSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWpzb24tZmlsZXMnPgotICAgICAgICA8dGl0bGU+SlNPTiBGaWxlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgbXVzdCBjb25maWd1cmUgVG9hc3RlciBiZWZvcmUgdXNpbmcgaXQuCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uIGN1c3RvbWl6ZXMgbGF5ZXIgc291cmNlIHNldHRpbmdzIGFuZCBUb2FzdGVyIGRlZmF1bHRzCi0gICAgICAgICAgICBmb3IgYWxsIHVzZXJzIGFuZCBpcyBwZXJmb3JtZWQgYnkgdGhlIHBlcnNvbiByZXNwb25zaWJsZSBmb3IKLSAgICAgICAgICAgIFRvYXN0ZXIgQ29uZmlndXJhdGlvbiAoaS5lICB0aGUgVG9hc3RlciBBZG1pbmlzdHJhdG9yKS4KLSAgICAgICAgICAgIFRoZSBUb2FzdGVyIEFkbWluaXN0cmF0b3IgcGVyZm9ybXMgdGhpcyBjb25maWd1cmF0aW9uIHRocm91Z2ggdGhlCi0gICAgICAgICAgICBEamFuZ28gYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBtYWtlIGl0IGVhc2llciB0byBpbml0aWFsbHkgc3RhcnQgVG9hc3RlciwgeW91IGNhbiBpbXBvcnQgYQotICAgICAgICAgICAgcHJlLWRlZmluZWQgY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1jb21tYW5kLWxvYWRjb25mJz48ZmlsZW5hbWU+bG9hZGNvbmY8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNvbW1hbmQuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgSlNPTi1mb3JtYXR0ZWQgdGV4dCBmaWxlIHdpdGgKLSAgICAgICAgICAgICAgICBzcGVjaWZpYyBmaWVsZHMgdGhhdCBUb2FzdGVyIHJlY29nbml6ZXMuCi0gICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgZGF0YSBkdW1wIGZyb20gdGhlIGRhdGFiYXNlLCBzbyBpdCBjYW5ub3QgYmUKLSAgICAgICAgICAgICAgICBsb2FkZWQgZGlyZWN0bHkgaW4gdGhlIGRhdGFiYXNlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCeSBjb252ZW50aW9uLCB0aGUgc3VwcGxpZWQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgVG9hc3RlciBBZG1pbmlzdHJhdG9yIGNhbiBjdXN0b21pemUgdGhlIGZpbGUgcHJpb3IgdG8gbG9hZGluZwotICAgICAgICAgICAgaXQgaW50byBUb2FzdGVyLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKLSAgICAgICAgICAgIFRvYXN0ZXIgc3RhcnR1cCBzY3JpcHQgYXQgPGZpbGVuYW1lPmJpdGJha2UvYmluL3RvYXN0ZXI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgPGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tZmlsZS1jaG9pY2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uIEZpbGUgQ2hvaWNlczwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLWZpeHR1cmUtZmlsZS1mb3JtYXQnPgorICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgRml4dHVyZSBGaWxlIEZvcm1hdDwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFR3byB2ZXJzaW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGV4aXN0OgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCdzIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBjb250YWlucyB0aGUgZGVmYXVsdCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGFyZSBwcm9tcHRlZCB0byBzZWxlY3QgdGhpcyBmaWxlIGR1cmluZyB0aGUgVG9hc3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHVwIHByb2Nlc3MgaWYgeW91IGNsb25lZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19HSVRfVVJMOy9wb2t5PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL3RvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkJ3MgPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIGNvbnRhaW5zIHRoZSBkZWZhdWx0IE9wZW5FbWJlZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBhcmUgcHJvbXB0ZWQgdG8gc2VsZWN0IHRoaXMgZmlsZSBkdXJpbmcgdGhlIFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCBwcm9jZXNzIGlmIHlvdSBoYWQgY2xvbmVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4gcmVwb3NpdG9yeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBvdmVydmlldyBvZiB0aGUgZmlsZSBmb3JtYXQgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtY29yZS54bWw8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnBva3kueG1sPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5jdXN0b20ueG1sPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgZGVzY3JpYmUgZWFjaCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlCisgICAgICAgICAgICAgICAgZml4dHVyZSBmaWxlcywgYW5kIG91dGxpbmUgYW4gZXhhbXBsZSBzZWN0aW9uIG9mIHRoZSBYTUwgY29kZS4KKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0byBoZWxwIHVuZGVyc3RhbmQgdGhpcyBpbmZvcm1hdGlvbiBhbmQgY3JlYXRlIGEgbG9jYWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdkZWZpbmluZy10aGUtZGVmYXVsdC1kaXN0cm8tYW5kLW90aGVyLXZhbHVlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkRlZmluaW5nIHRoZSBEZWZhdWx0IERpc3RybyBhbmQgT3RoZXIgVmFsdWVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVmaW5lcyB0aGUgZGVmYXVsdCBkaXN0cm8gdmFsdWUgZm9yIG5ldyBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgaXQgcmVzZXJ2ZXMgdGhlIGZpcnN0IFRvYXN0ZXIgU2V0dGluZyByZWNvcmQgIjEiLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRlbW9uc3RyYXRlcyBob3cgdG8gc2V0IHRoZSBwcm9qZWN0IGRlZmF1bHQgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgZm9yCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshLS0gU2V0IHRoZSBwcm9qZWN0IGRlZmF1bHQgdmFsdWUgZm9yIERJU1RSTyAtLSZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLnRvYXN0ZXJzZXR0aW5nIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7REVGQ09ORl9ESVNUUk8mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZhbHVlIiZndDtwb2t5Jmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSBvdGhlciBkZWZhdWx0IHByb2plY3QgdmFsdWVzIGJ5IGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIFRvYXN0ZXIgU2V0dGluZyBzZWN0aW9ucyBzdWNoIGFzIGFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgY29taW5nIGZyb20gdGhlIDxmaWxlbmFtZT5zZXR0aW5ncy54bWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB5b3UgY2FuIGFkZCBjdXN0b20gdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICBUaGUgInBrIiB2YWx1ZXMgbXVzdCBiZSB1bmlxdWUuCisgICAgICAgICAgICAgICAgICAgICAgIEJ5IGNvbnZlbnRpb24sIHZhbHVlcyB0aGF0IHNldCBkZWZhdWx0IHByb2plY3QgdmFsdWVzIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICAgICAiREVGQ09ORiIgcHJlZml4LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2RlZmluaW5nLWJpdGJha2UtdmVyc2lvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkRlZmluaW5nIEJpdEJha2UgVmVyc2lvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoaWNoIHZlcnNpb24gb2YgQml0QmFrZSBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgZm9sbG93aW5nIHJlbGVhc2Ugc2VsZWN0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tJmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIiZndDtnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giJmd0O3JvY2tvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIiZndDtiaXRiYWtlJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdkZWZpbmluZy1yZWxlYXNlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkRlZmluaW5nIFJlbGVhc2U8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB0aGUgcmVsZWFzZXMgd2hlbiB5b3UgY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAgICAgICAgIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmx0OyEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0mZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7cm9ja28mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIiZndDtZb2N0byBQcm9qZWN0IDIuNCAiUm9ja28iJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiJmd0O3JvY2tvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCImZ3Q7VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2NrbyImZ3Q7WW9jdG8gUHJvamVjdCBSb2NrbyBicmFuY2gmbHQ7L2EmZ3Q7LiZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSAicGsiIHZhbHVlIG11c3QgbWF0Y2ggdGhlIGFib3ZlIHJlc3BlY3RpdmUgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlY29yZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdkZWZpbmluZy10aGUtcmVsZWFzZS1kZWZhdWx0LWxheWVyLW5hbWVzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGVmaW5pbmcgdGhlIFJlbGVhc2UgRGVmYXVsdCBMYXllciBOYW1lczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIHRoZSBkZWZhdWx0IGxheWVycyBmb3IgZWFjaCByZWxlYXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshLS0gRGVmYXVsdCBwcm9qZWN0IGxheWVycyBmb3IgZWFjaCByZWxlYXNlIC0tJmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjEiJmd0OworICAgICAgICZsdDtmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIiZndDsxJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIiZndDtvcGVuZW1iZWRkZWQtY29yZSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSAncGsnIHZhbHVlcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSBzaG91bGQgc3RhcnQgYXQgIjEiIGFuZCBpbmNyZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgdW5pcXVlbHkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBzYW1lIGxheWVyIG5hbWUgaW4gbXVsdGlwbGUgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctbGF5ZXItZGVmaW5pdGlvbnMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyBMYXllciBEZWZpbml0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgTGF5ZXIgZGVmaW5pdGlvbnMgYXJlIHRoZSBtb3N0IGNvbXBsZXguCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBlYWNoIG9mIHRoZSBsYXllcnMsIGFuZCB0aGVuIGRlZmluZXMgdGhlIGV4YWN0IGxheWVyCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIGxheWVyIHVzZWQgZm9yIGVhY2ggcmVzcGVjdGl2ZSByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBoYXZlIG9uZSA8ZmlsZW5hbWU+b3JtLmxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZW50cnkgZm9yIGVhY2ggbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZW4sIHdpdGggZWFjaCBlbnRyeSB5b3UgbmVlZCBhIHNldCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JtLmxheWVyX3ZlcnNpb248L2ZpbGVuYW1lPiBlbnRyaWVzIHRoYXQgY29ubmVjdHMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIHdpdGggZWFjaCByZWxlYXNlIHRoYXQgaW5jbHVkZXMgdGhlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsIGFsbCByZWxlYXNlcyBpbmNsdWRlIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXIiIHBrPSIxIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIiZndDtvcGVuZW1iZWRkZWQtY29yZSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfaW5kZXhfdXJsIiZndDsmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc191cmwiJmd0O2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc193ZWJfdXJsIiZndDtodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3Nfd2ViX3RyZWVfYmFzZV91cmwiJmd0O2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8lcGF0aCU/aD0lYnJhbmNoJSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl9maWxlX2Jhc2VfdXJsIiZndDtodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCUmbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSIxIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIiZndDsxJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiJmd0OzAmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIiZndDsxJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giJmd0O3JvY2tvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIiZndDttZXRhJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIiZndDswJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MiZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIiZndDtIRUFEJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJjb21taXQiJmd0O0hFQUQmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiJmd0O21ldGEmbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSIzIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIiZndDsxJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiJmd0OzAmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIiZndDszJmx0Oy9maWVsZCZndDsKKworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCImZ3Q7bWFzdGVyJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIiZndDttZXRhJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxheWVyICJwayIgdmFsdWVzIGFib3ZlIG11c3QgYmUgdW5pcXVlLCBhbmQgdHlwaWNhbGx5IHN0YXJ0IGF0ICIxIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxheWVyIHZlcnNpb24gInBrIiB2YWx1ZXMgbXVzdCBhbHNvIGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIGxheWVycywKKyAgICAgICAgICAgICAgICAgICAgYW5kIHR5cGljYWxseSBzdGFydCBhdCAiMSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlbW90ZS10b2FzdGVyLW1vbml0b3JpbmcnPgorICAgICAgICA8dGl0bGU+UmVtb3RlIFRvYXN0ZXIgTW9uaXRvcmluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUb2FzdGVyIGhhcyBhbiBBUEkgdGhhdCBhbGxvd3MgcmVtb3RlIG1hbmFnZW1lbnQgYXBwbGljYXRpb25zIHRvCisgICAgICAgICAgICBkaXJlY3RseSBxdWVyeSB0aGUgc3RhdGUgb2YgdGhlIFRvYXN0ZXIgc2VydmVyIGFuZCBpdHMgYnVpbGRzCisgICAgICAgICAgICBpbiBhIG1hY2hpbmUtdG8tbWFjaGluZSBtYW5uZXIuCisgICAgICAgICAgICBUaGlzIEFQSSB1c2VzIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXByZXNlbnRhdGlvbmFsX3N0YXRlX3RyYW5zZmVyJz5SRVNUPC91bGluaz4KKyAgICAgICAgICAgIGludGVyZmFjZSBhbmQgdGhlIHRyYW5zZmVyIG9mIEpTT04gZmlsZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0CisgICAgICAgICAgICBtb25pdG9yIGEgYnVpbGQgaW5zaWRlIGEgY29udGFpbmVyIHRocm91Z2ggd2VsbCBzdXBwb3J0ZWQKKyAgICAgICAgICAgIGtub3duIEhUVFAgcG9ydHMgaW4gb3JkZXIgdG8gZWFzaWx5IGFjY2VzcyBhIFRvYXN0ZXIgc2VydmVyCisgICAgICAgICAgICBpbnNpZGUgdGhlIGNvbnRhaW5lci4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgd2hlbiB5b3UgdXNlIHRoaXMgZGlyZWN0IEpTT04gQVBJLCB5b3UgYXZvaWQKKyAgICAgICAgICAgIGhhdmluZyB3ZWIgcGFnZSBwYXJzaW5nIGFnYWluc3QgdGhlIGRpc3BsYXkgdGhlIHVzZXIgc2Vlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjaGVja2luZy1oZWFsdGgnPgorICAgICAgICAgICAgPHRpdGxlPkNoZWNraW5nIEhlYWx0aDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgdXNlIHJlbW90ZSBUb2FzdGVyIG1vbml0b3JpbmcsIHlvdSBzaG91bGQgZG8KKyAgICAgICAgICAgICAgICBhIGhlYWx0aCBjaGVjay4KKyAgICAgICAgICAgICAgICBUbyBkbyB0aGlzLCBwaW5nIHRoZSBUb2FzdGVyIHNlcnZlciB1c2luZyB0aGUgZm9sbG93aW5nIGNhbGwKKyAgICAgICAgICAgICAgICB0byBzZWUgaWYgaXQgaXMgc3RpbGwgYWxpdmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L2hlYWx0aAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdmFsdWVzIGZvciA8cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgSWYgdGhlIHNlcnZlciBpcyBhbGl2ZSwgeW91IHdpbGwgZ2V0IHRoZSByZXNwb25zZSBIVE1MOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmx0OyFET0NUWVBFIGh0bWwmZ3Q7CisgICAgICZsdDtodG1sIGxhbmc9ImVuIiZndDsKKyAgICAgICAmbHQ7aGVhZCZndDsmbHQ7dGl0bGUmZ3Q7VG9hc3RlciBIZWFsdGgmbHQ7L3RpdGxlJmd0OyZsdDsvaGVhZCZndDsKKyAgICAgICAmbHQ7Ym9keSZndDtPayZsdDsvYm9keSZndDsKKyAgICAgJmx0Oy9odG1sJmd0OworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdqc29uLXN0cnVjdHVyZSc+Ci0gICAgICAgICAgICA8dGl0bGU+RmlsZSBTdHJ1Y3R1cmU8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0nZGV0ZXJtaW5pbmctc3RhdHVzLW9mLWJ1aWxkcy1pbi1wcm9ncmVzcyc+CisgICAgICAgICAgICA8dGl0bGU+RGV0ZXJtaW5pbmcgU3RhdHVzIG9mIEJ1aWxkcyBpbiBQcm9ncmVzczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+IGZpbGUgY29uc2lzdHMgb2YKLSAgICAgICAgICAgICAgICBlYXNpbHkgcmVhZGFibGUgYXJlYXM6IGNvbmZpZ3VyYXRpb24sIGxheWVyIHNvdXJjZXMsIEJpdEJha2UsCi0gICAgICAgICAgICAgICAgZGVmYXVsdCByZWxlYXNlLCBhbmQgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgU29tZXRpbWVzIGl0IGlzIHVzZWZ1bCB0byBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBhIGJ1aWxkCisgICAgICAgICAgICAgICAgaW4gcHJvZ3Jlc3MuCisgICAgICAgICAgICAgICAgVG8gZ2V0IHRoZSBzdGF0dXMgb2YgcGVuZGluZyBidWlsZHMsIHVzZSB0aGUgZm9sbG93aW5nIGNhbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L3RvYXN0ZXJndWkvYXBpL2J1aWxkaW5nCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB2YWx1ZXMgZm9yIDxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBhbmQgPHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGlzIGEgSlNPTiBmaWxlIHRoYXQgaXRlbWl6ZXMgYWxsIGJ1aWxkcyBpbgorICAgICAgICAgICAgICAgIHByb2dyZXNzLgorICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBpbmNsdWRlcyB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIGVhY2gKKyAgICAgICAgICAgICAgICByZXNwZWN0aXZlIGJ1aWxkIHN0YXJ0ZWQgYXMgd2VsbCBhcyB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCisgICAgICAgICAgICAgICAgY2xvbmluZywgcGFyc2luZywgYW5kIHRhc2sgZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgc2FtcGxlIG91dHB1dCBmb3IgYSBidWlsZCBpbiBwcm9ncmVzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHsiY291bnQiOiAxLAorICAgICAgImJ1aWxkaW5nIjogWworICAgICAgICB7Im1hY2hpbmUiOiAiYmVhZ2xlYm9uZSIsCisgICAgICAgICAgICJzZWNvbmRzIjogIjQ2My44NjkiLAorICAgICAgICAgICAidGFzayI6ICI5Mjc6MjM4NCIsCisgICAgICAgICAgICJkaXN0cm8iOiAicG9reSIsCisgICAgICAgICAgICJjbG9uZSI6ICIxOjEiLAorICAgICAgICAgICAiaWQiOiAyLAorICAgICAgICAgICAic3RhcnQiOiAiMjAxNy0wOS0yMlQwOTozMTo0NC44ODdaIiwKKyAgICAgICAgICAgIm5hbWUiOiAiMjAxNzA5MjIwOTMyMDAiLAorICAgICAgICAgICAicGFyc2UiOiAiODE4OjgxOCIsCisgICAgICAgICAgICJwcm9qZWN0IjogIm15X3JvY2tvIiwKKyAgICAgICAgICAgInRhcmdldCI6ICJjb3JlLWltYWdlLW1pbmltYWwiCisgICAgICAgICAgIH1dCisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIEpTT04gZGF0YSBmb3IgdGhpcyBxdWVyeSBpcyByZXR1cm5lZCBpbiBhIHNpbmdsZSBsaW5lLgorICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlIHRoZSBsaW5lIGhhcyBiZWVuIGFydGlmaWNpYWxseSBzcGxpdCBmb3IgcmVhZGFiaWxpdHkuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY2hlY2tpbmctc3RhdHVzLW9mLWJ1aWxkcy1jb21wbGV0ZWQnPgorICAgICAgICAgICAgPHRpdGxlPkNoZWNraW5nIFN0YXR1cyBvZiBCdWlsZHMgQ29tcGxldGVkPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSBhIGJ1aWxkIGlzIGNvbXBsZXRlZCwgeW91IGdldCB0aGUgc3RhdHVzIHdoZW4geW91IHVzZQorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY2FsbDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGh0dHA6Ly88cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4vdG9hc3Rlcmd1aS9hcGkvYnVpbGRzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB2YWx1ZXMgZm9yIDxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBhbmQgPHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGlzIGEgSlNPTiBmaWxlIHRoYXQgaXRlbWl6ZXMgYWxsIGNvbXBsZXRlIGJ1aWxkcywKKyAgICAgICAgICAgICAgICBhbmQgaW5jbHVkZXMgYnVpbGQgc3VtbWFyeSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZm9yIGEgY29tcGxldGVkIGJ1aWxkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgeyJjb3VudCI6IDEsCisgICAgICAiYnVpbGRzIjogWworICAgICAgICB7ImRpc3RybyI6ICJwb2t5IiwKKyAgICAgICAgICAgImVycm9ycyI6IDAsCisgICAgICAgICAgICJtYWNoaW5lIjoKKyAgICAgICAgICAgImJlYWdsZWJvbmUiLAorICAgICAgICAgICAicHJvamVjdCI6ICJteV9yb2NrbyIsCisgICAgICAgICAgICJzdG9wIjogIjIwMTctMDktMjJUMDk6MjY6MzYuMDE3WiIsCisgICAgICAgICAgICJ0YXJnZXQiOiAicXVpbHQtbmF0aXZlIiwKKyAgICAgICAgICAgInNlY29uZHMiOiAiNzguMTkzIiwKKyAgICAgICAgICAgIm91dGNvbWUiOiAiU3VjY2VlZGVkIiwKKyAgICAgICAgICAgImlkIjogMSwKKyAgICAgICAgICAgInN0YXJ0IjogIjIwMTctMDktMjJUMDk6MjU6MTcuODI0WiIsCisgICAgICAgICAgICJ3YXJuaW5ncyI6IDEsCisgICAgICAgICAgICJuYW1lIjogIjIwMTcwOTIyMDkyNjE4IgorICAgICAgICAgICB9XQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBKU09OIGRhdGEgZm9yIHRoaXMgcXVlcnkgaXMgcmV0dXJuZWQgaW4gYSBzaW5nbGUgbGluZS4KKyAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSB0aGUgbGluZSBoYXMgYmVlbiBhcnRpZmljaWFsbHkgc3BsaXQgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2RldGVybWluaW5nLXN0YXR1cy1vZi1hLXNwZWNpZmljLWJ1aWxkJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXRlcm1pbmluZyBTdGF0dXMgb2YgYSBTcGVjaWZpYyBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgYSBzcGVjaWZpYworICAgICAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRvIGdldCB0aGUgc3RhdHVzIG9mIGEgc3BlY2lmaWMgYnVpbGQsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgY2FsbDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGh0dHA6Ly88cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4vdG9hc3Rlcmd1aS9hcGkvYnVpbGQvPHJlcGxhY2VhYmxlPklEPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHZhbHVlcyBmb3IgPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+LCBhbmQgPHJlcGxhY2VhYmxlPklEPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSB2YWx1ZSBmb3IgPHJlcGxhY2VhYmxlPklEPC9yZXBsYWNlYWJsZT4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICBCdWlsZHMgQ29tcGxldGVkIHF1ZXJ5LiBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoZWNraW5nLXN0YXR1cy1vZi1idWlsZHMtY29tcGxldGVkJz5DaGVja2luZyBTdGF0dXMgb2YgQnVpbGRzIENvbXBsZXRlZDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tY29uZmlnLWFyZWEnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uIEFyZWE8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgSlNPTiBmaWxlIHNldHMgd2hpY2ggdmFyaWFibGVzIGFyZSBleHBvc2VkCi0gICAgICAgICAgICAgICAgICAgIHRvIHVzZXJzIHRocm91Z2ggdGhlIFRvYXN0ZXIgd2ViIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgICAgICAgVXNlcnMgY2FuIGVhc2lseSBlZGl0IHRoZXNlIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyB5b3Ugc2V0IGhlcmUgYXJlIGRpc3BsYXllZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIiBwYWdlIGluIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIE1pbmltYWxseSwgeW91IHNob3VsZCBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGFwcGVhcnMgdG8gdXNlcnMgYXMgcGFydCBvZiB0aGUgcHJvamVjdAotICAgICAgICAgICAgICAgICAgICBwYWdlIGluIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGRlZmF1bHQgPGZpbGVuYW1lPmNvbmZpZzwvZmlsZW5hbWU+IGFyZWE6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgImNvbmZpZyI6IHsKLSAgICAgICAgICJNQUNISU5FIiAgICAgIDogInFlbXV4ODYiLAotICAgICAgICAgIkRJU1RSTyIgICAgICAgOiAicG9reSIsCi0gICAgICAgICAiSU1BR0VfRlNUWVBFUyI6ICJleHQzIGpmZnMyIHRhci5iejIiLAotICAgICAgICAgIklNQUdFX0lOU1RBTExfYXBwZW5kIjogIiIsCi0gICAgICAgICAiUEFDS0FHRV9DTEFTU0VTIjogInBhY2thZ2VfcnBtIiwKLSAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tbGF5ZXJzb3VyY2VzLWFyZWEnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5MYXllciBTb3VyY2VzIEFyZWE8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgSlNPTiBmaWxlIGRlZmluZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2xheWVyLXNvdXJjZSc+bGF5ZXIgc291cmNlczwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgVG9hc3RlciB1c2VzLgotICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIHJlYWRzIGxheWVyIGluZm9ybWF0aW9uIGZyb20gbGF5ZXIgc291cmNlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhyZWUgdHlwZXMgb2YgbGF5ZXIgc291cmNlcyBleGlzdCB0aGF0IFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplczogTG9jYWwsIExheWVySW5kZXgsIGFuZCBJbXBvcnRlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIExvY2FsIGxheWVyIHNvdXJjZSByZWFkcyBsYXllcnMgZnJvbSBHaXQgY2xvbmVzCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBvbiB5b3VyIGxvY2FsIGRyaXZlLgotICAgICAgICAgICAgICAgICAgICBVc2luZyBhIGxvY2FsIGxheWVyIHNvdXJjZSBlbmFibGVzIHlvdSB0byBlYXNpbHkgdGVzdAotICAgICAgICAgICAgICAgICAgICBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgc2V0dGluZyB1cCBhIGhvc3RlZCB2ZXJzaW9uIG9mIFRvYXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGhhdmUgYSBsb2NhbCBsYXllciBzb3VyY2UuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIExheWVySW5kZXggbGF5ZXIgc291cmNlIHVzZXMgYSBSRVNUIEFQSSBleHBvc2VkIGJ5Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyBvZiB0aGUgTGF5ZXIgSW5kZXggYXBwbGljYXRpb24gKGUuZyB0aGUgcHVibGljCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy8nPjwvdWxpbms+KQotICAgICAgICAgICAgICAgICAgICB0byByZWFkIGxheWVyIGRhdGEuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBJbXBvcnRlZCBsYXllciBzb3VyY2UgaXMgcmVzZXJ2ZWQgZm9yIGxheWVyIGRhdGEKLSAgICAgICAgICAgICAgICAgICAgbWFudWFsbHkgaW50cm9kdWNlZCBieSB0aGUgdXNlciBvciBUb2FzdGVyIEFkbWluaXN0cmF0b3IKLSAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgR1VJLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIHNvdXJjZSBsZXRzIHVzZXJzIGltcG9ydCB0aGVpciBvd24gbGF5ZXJzCi0gICAgICAgICAgICAgICAgICAgIGFuZCBidWlsZCB0aGVtIHdpdGggVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBub3QgcmVtb3ZlIHRoZSBpbXBvcnRlZCBsYXllciBzb3VyY2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGRlZmF1bHQgPGZpbGVuYW1lPmxheWVyc291cmNlczwvZmlsZW5hbWU+IGFyZWE6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAibGF5ZXJzb3VyY2VzIjogWwotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJMb2NhbCBZb2N0byBQcm9qZWN0IiwKLSAgICAgICAgICAgICJzb3VyY2V0eXBlIjogImxvY2FsIiwKLSAgICAgICAgICAgICJhcGl1cmwiOiAiLi4vLi4vIiwKLSAgICAgICAgICAgICJicmFuY2hlcyI6IFsiSEVBRCIgXSwKLSAgICAgICAgICAgICJsYXllcnMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJvcGVuZW1iZWRkZWQtY29yZSIsCi0gICAgICAgICAgICAgICAgICAgICJsb2NhbF9wYXRoIjogIm1ldGEiLAotICAgICAgICAgICAgICAgICAgICAidmNzX3VybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAgICAgICAgImRpcnBhdGgiOiAibWV0YSIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibWV0YS1wb2t5IiwKLSAgICAgICAgICAgICAgICAgICAgImxvY2FsX3BhdGgiOiAibWV0YS1wb2t5IiwKLSAgICAgICAgICAgICAgICAgICAgInZjc191cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIjogIm1ldGEtcG9reSIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibWV0YS15b2N0by1ic3AiLAotICAgICAgICAgICAgICAgICAgICAibG9jYWxfcGF0aCI6ICJtZXRhLXlvY3RvLWJzcCIsCi0gICAgICAgICAgICAgICAgICAgICJ2Y3NfdXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCI6ICJtZXRhLXlvY3RvLWJzcCIKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiT3BlbkVtYmVkZGVkIiwKLSAgICAgICAgICAgICJzb3VyY2V0eXBlIjogImxheWVyaW5kZXgiLAotICAgICAgICAgICAgImFwaXVybCI6ICJodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9hcGkvIiwKLSAgICAgICAgICAgICJicmFuY2hlcyI6IFsibWFzdGVyIiwgImpldGhybyIgLCJmaWRvIl0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiSW1wb3J0ZWQgbGF5ZXJzIiwKLSAgICAgICAgICAgICJzb3VyY2V0eXBlIjogImltcG9ydGVkIiwKLSAgICAgICAgICAgICJhcGl1cmwiOiAiIiwKLSAgICAgICAgICAgICJicmFuY2hlcyI6IFsibWFzdGVyIiwgImpldGhybyIsImZpZG8iLCAiSEVBRCJdCi0KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgaXMgYSBKU09OIGZpbGUgdGhhdCBpdGVtaXplcyB0aGUgc3BlY2lmaWMgYnVpbGQKKyAgICAgICAgICAgICAgICBhbmQgaW5jbHVkZXMgYnVpbGQgc3VtbWFyeSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZm9yIGEgc3BlY2lmaWMgYnVpbGQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB7ImJ1aWxkIjoKKyAgICAgICB7ImRpc3RybyI6ICJwb2t5IiwKKyAgICAgICAgImVycm9ycyI6IDAsCisgICAgICAgICJtYWNoaW5lIjogImJlYWdsZWJvbmUiLAorICAgICAgICAicHJvamVjdCI6ICJteV9yb2NrbyIsCisgICAgICAgICJzdG9wIjogIjIwMTctMDktMjJUMDk6MjY6MzYuMDE3WiIsCisgICAgICAgICJ0YXJnZXQiOiAicXVpbHQtbmF0aXZlIiwKKyAgICAgICAgInNlY29uZHMiOiAiNzguMTkzIiwKKyAgICAgICAgIm91dGNvbWUiOiAiU3VjY2VlZGVkIiwKKyAgICAgICAgImlkIjogMSwKKyAgICAgICAgInN0YXJ0IjogIjIwMTctMDktMjJUMDk6MjU6MTcuODI0WiIsCisgICAgICAgICJ3YXJuaW5ncyI6IDEsCisgICAgICAgICJuYW1lIjogIjIwMTcwOTIyMDkyNjE4IiwKKyAgICAgICAgImNvb2tlcl9sb2ciOiAiL29wdC91c2VyL3Bva3kvYnVpbGQtdG9hc3Rlci0yL3RtcC9sb2cvY29va2VyL2JlYWdsZWJvbmUvYnVpbGRfMjAxNzA5MjJfMDIyNjA3Ljk5MS5sb2ciCiAgICAgICAgIH0KLSAgICBdLAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nanNvbi1iaXRiYWtlLWFyZWEnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5CaXRCYWtlIEFyZWE8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgSlNPTiBmaWxlIGRlZmluZXMgdGhlIHZlcnNpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBUb2FzdGVyIHVzZXMuCi0gICAgICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIFRvYXN0ZXIgaXMgY29uZmlndXJlZCB0byByZWNvZ25pemUgZm91cgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBvZiBCaXRCYWtlOiBtYXN0ZXIsIGZpZG8sIGpldGhybywgYW5kIEhFQUQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSEVBRCBpcyBhIHNwZWNpYWwgb3B0aW9uIHRoYXQgYnVpbGRzIHdoYXRldmVyIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgb24gZGlzaywgd2l0aG91dCBjaGVja2luZyBvdXQgYW55IHJlbW90ZQotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gYXJlYToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAiYml0YmFrZSIgOiBbCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZ2l0dXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICJicmFuY2giOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZGlycGF0aCI6ICJiaXRiYWtlIgotICAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogImpldGhybyIsCi0gICAgICAgICAgICAgImdpdHVybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogImpldGhybyIsCi0gICAgICAgICAgICAgImRpcnBhdGgiOiAiYml0YmFrZSIKLSAgICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAiZmlkbyIsCi0gICAgICAgICAgICAgImdpdHVybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogImZpZG8iLAotICAgICAgICAgICAgImRpcnBhdGgiOiAiYml0YmFrZSIKLSAgICAgICAgfSwKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAibmFtZSI6ICJIRUFEIiwKLSAgICAgICAgICAgICAiZ2l0dXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICJicmFuY2giOiAiSEVBRCIsCi0gICAgICAgICAgICAgImRpcnBhdGgiOiAiYml0YmFrZSIKLSAgICAgICAgIH0KLSAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tZGVmYXVsdC1hcmVhJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RGVmYXVsdCBBcmVhPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgb2YgdGhlIEpTT04gZmlsZSBlc3RhYmxpc2hlcyBhIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSB1c2VkIGJ5IFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIFRvYXN0ZXIgdXNlcyB0aGUgIm1hc3RlciIgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgc3RhdGVtZW50IGluIHRoZSBKU09OIGZpbGUgdGhhdCBlc3RhYmxpc2hlcwotICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCByZWxlYXNlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICJkZWZhdWx0cmVsZWFzZSI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nanNvbi1yZWxlYXNlcy1hcmVhJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+UmVsZWFzZXMgQXJlYTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBKU09OIGZpbGUgZGVmaW5lcyB0aGUgdmVyc2lvbnMgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gVG9hc3RlciByZWNvZ25pemVzLgotICAgICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBUb2FzdGVyIGlzIGNvbmZpZ3VyZWQgdG8gd29yayB3aXRoIHRoZSBmb3VyCi0gICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3RvYXN0ZXItcmVsZWFzZXMtc3VwcG9ydGVkJz5QcmUtQ29uZmlndXJlZCBSZWxlYXNlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGRlZmF1bHQgPGZpbGVuYW1lPnJlbGVhc2VzPC9maWxlbmFtZT4gYXJlYToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAicmVsZWFzZXMiOiBbCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiWW9jdG8gUHJvamVjdCBtYXN0ZXIiLAotICAgICAgICAgICAgICJiaXRiYWtlIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImJyYW5jaCI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJkZWZhdWx0bGF5ZXJzIjogWyAib3BlbmVtYmVkZGVkLWNvcmUiLCAibWV0YS1wb2t5IiwgIm1ldGEteW9jdG8tYnNwIl0sCi0gICAgICAgICAgICAgImxheWVyc291cmNlcHJpb3JpdHkiOiB7ICJJbXBvcnRlZCBsYXllcnMiOiA5OSwgIkxvY2FsIFlvY3RvIFByb2plY3QiIDogMTAsICJPcGVuRW1iZWRkZWQiIDogIDAgfSwKLSAgICAgICAgICAgICAiaGVscHRleHQiOiAiVG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvXCImZ3Q7WW9jdG8gUHJvamVjdCBtYXN0ZXIgYnJhbmNoJmx0Oy9hJmd0Oywgd2hlcmUgYWN0aXZlIGRldmVsb3BtZW50IHRha2VzIHBsYWNlLiBUaGlzIGlzIG5vdCBhIHN0YWJsZSBicmFuY2gsIHNvIHlvdXIgYnVpbGRzIG1pZ2h0IG5vdCB3b3JrIGFzIGV4cGVjdGVkLiIKLSAgICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAiamV0aHJvIiwKLSAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiWW9jdG8gUHJvamVjdCAyLjAgSmV0aHJvIiwKLSAgICAgICAgICAgICAiYml0YmFrZSI6ICJqZXRocm8iLAotICAgICAgICAgICAgICJicmFuY2giOiAiamV0aHJvIiwKLSAgICAgICAgICAgICAiZGVmYXVsdGxheWVycyI6IFsgIm9wZW5lbWJlZGRlZC1jb3JlIiwgIm1ldGEtcG9reSIsICJtZXRhLXlvY3RvLWJzcCJdLAotICAgICAgICAgICAgICJsYXllcnNvdXJjZXByaW9yaXR5IjogeyAiSW1wb3J0ZWQgbGF5ZXJzIjogOTksICJMb2NhbCBZb2N0byBQcm9qZWN0IiA6IDEwLCAiT3BlbkVtYmVkZGVkIiA6ICAwIH0sCi0gICAgICAgICAgICAgImhlbHB0ZXh0IjogIlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgd2l0aCB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9amV0aHJvXCImZ3Q7WW9jdG8gUHJvamVjdCAyLjAgXCJKZXRocm9cIiZsdDsvYSZndDsgYnJhbmNoLiIKLSAgICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAiZmlkbyIsCi0gICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIllvY3RvIFByb2plY3QgMS44IEZpZG8iLAotICAgICAgICAgICAgICJiaXRiYWtlIjogImZpZG8iLAotICAgICAgICAgICAgICJicmFuY2giOiAiZmlkbyIsCi0gICAgICAgICAgICAgImRlZmF1bHRsYXllcnMiOiBbICJvcGVuZW1iZWRkZWQtY29yZSIsICJtZXRhLXBva3kiLCAibWV0YS15b2N0by1ic3AiXSwKLSAgICAgICAgICAgICAibGF5ZXJzb3VyY2Vwcmlvcml0eSI6IHsgIkltcG9ydGVkIGxheWVycyI6IDk5LCAiTG9jYWwgWW9jdG8gUHJvamVjdCIgOiAxMCwgIk9wZW5FbWJlZGRlZCIgOiAgMCB9LAotICAgICAgICAgICAgICJoZWxwdGV4dCI6ICJUb2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHdpdGggdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPWZpZG9cIiZndDtZb2N0byBQcm9qZWN0IDEuOCBcIkZpZG9cIiZsdDsvYSZndDsgYnJhbmNoLiIKLSAgICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAibG9jYWwiLAotICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJMb2NhbCBZb2N0byBQcm9qZWN0IiwKLSAgICAgICAgICAgICAiYml0YmFrZSI6ICJIRUFEIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogIkhFQUQiLAotICAgICAgICAgICAgICJkZWZhdWx0bGF5ZXJzIjogWyAib3BlbmVtYmVkZGVkLWNvcmUiLCAibWV0YS1wb2t5IiwgIm1ldGEteW9jdG8tYnNwIl0sCi0gICAgICAgICAgICAgImxheWVyc291cmNlcHJpb3JpdHkiOiB7ICJJbXBvcnRlZCBsYXllcnMiOiA5OSwgIkxvY2FsIFlvY3RvIFByb2plY3QiIDogMTAsICJPcGVuRW1iZWRkZWQiIDogIDAgfSwKLSAgICAgICAgICAgICAiaGVscHRleHQiOiAiVG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB3aXRoIHRoZSB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IHlvdSBoYXZlIGNsb25lZCBvciBkb3dubG9hZGVkIHRvIHlvdXIgY29tcHV0ZXIuIgotICAgICAgICAgfQotICAgICBdCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIEpTT04gZGF0YSBmb3IgdGhpcyBxdWVyeSBpcyByZXR1cm5lZCBpbiBhIHNpbmdsZSBsaW5lLgorICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlIHRoZSBsaW5lIGhhcyBiZWVuIGFydGlmaWNpYWxseSBzcGxpdCBmb3IgcmVhZGFiaWxpdHkuCisgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTg3MCw3ICs2NzcsNyBAQAogICAgICAgICAgICAgY3JlYXRlZCB0aGF0IGFyZSBzcGVjaWZpYyB0byBUb2FzdGVyIGFuZCBhcmUgdXNlZCB0byBjb250cm9sCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGFuZCBiYWNrLWVuZCB0YXNrcy4KICAgICAgICAgICAgIFlvdSBjYW4gbG9jYXRlIHRoZXNlIGNvbW1hbmRzIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGF0CiAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9saWIvbWFuYWdlLnB5PC9maWxlbmFtZT4uCiAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZG9jdW1lbnRzIHRob3NlIGNvbW1hbmRzLgpAQCAtODc5LDcgKzY4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGdpdmVuCiAgICAgICAgICAgICAgICAgICAgIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCBiZSBzdXJlIHRoYXQgeW91cgogICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeSBpcyBzZXQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPiBjb21tYW5kcyBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgYWxsb3dzIFRvYXN0ZXIgdG8gZmluZCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXIuc3FsaXRlPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgbG9jYXRlZApAQCAtMTAwNSwzMCArODEyLDYgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWNvbW1hbmQtbG9hZGNvbmYnPgotICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5sb2FkY29uZjwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sb2FkY29uZjwvZmlsZW5hbWU+IGNvbW1hbmQgbG9hZHMgYW4KLSAgICAgICAgICAgICAgICBleGlzdGluZyBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZSAoSlNPTiBmaWxlKS4KLSAgICAgICAgICAgICAgICBZb3UgbXVzdCBydW4gdGhpcyBvbiBhIG5ldyBkYXRhYmFzZSB0aGF0IGRvZXMgbm90IGhhdmUgYW55Ci0gICAgICAgICAgICAgICAgZGF0YS4KLSAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgY29tbWFuZCBvbiBhbiBleGlzdGluZyBkYXRhYmFzZSB0aGF0IGhhcyBkYXRhCi0gICAgICAgICAgICAgICAgcmVzdWx0cyBpbiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgQWNjZXNzIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UvbGliL3RvYXN0ZXIvbWFuYWdlLnB5IGxvYWRjb25mIDxyZXBsYWNlYWJsZT5maWxlcGF0aDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bG9hZGNvbmY8L2ZpbGVuYW1lPiBjb21tYW5kIGNvbmZpZ3VyZXMgYSBkYXRhYmFzZQotICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBleGlzdGluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLWpzb24tZmlsZXMnPkpTT04gRmlsZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQogICAgICAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci1jb21tYW5kLXJ1bmJ1aWxkcyc+CiAgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnJ1bmJ1aWxkczwvZmlsZW5hbWU+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnhtbAppbmRleCA5NjZjMzVkLi5jMjZhMzJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnhtbApAQCAtMTgsNyArMTgsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgTmF2aWdhdGUgdG8gdGhlIHJvb3Qgb2YgeW91cgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGNkIHBva3kKQEAgLTYxLDE5ICs2MSwzMiBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J3NldHRpbmctYS1kaWZmZXJlbnQtYWRkcmVzcyc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIGEgRGlmZmVyZW50IEFkZHJlc3M8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLWV4dGVybmFsLWFjY2Vzcyc+CisgICAgICAgIDx0aXRsZT5TZXR0aW5nIHVwIEV4dGVybmFsIEFjY2VzczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBCeSBkZWZhdWx0LCBUb2FzdGVyIGJpbmRzIHRvIHRoZSBsb29wIGJhY2sgYWRkcmVzcwotICAgICAgICAgICAgKGkuZS4gbG9jYWxob3N0KS4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+V0VCUE9SVDwvZmlsZW5hbWU+IHBhcmFtZXRlciB0bwotICAgICAgICAgICAgc2V0IGEgZGlmZmVyZW50IGhvc3QuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHNldHMgdGhlIGhvc3QgYW5kIHBvcnQKLSAgICAgICAgICAgIHRvICIwLjAuMC4wOjg0MDAiOgorICAgICAgICAgICAgKGkuZS4gbG9jYWxob3N0KSwgd2hpY2ggZG9lcyBub3QgYWxsb3cgYWNjZXNzIGZyb20KKyAgICAgICAgICAgIGV4dGVybmFsIGhvc3RzLiBUbyBhbGxvdyBleHRlcm5hbCBhY2Nlc3MsIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5XRUJQT1JUPC9maWxlbmFtZT4gcGFyYW1ldGVyIHRvIG9wZW4gYW4KKyAgICAgICAgICAgIGFkZHJlc3MgdGhhdCBjb25uZWN0cyB0byB0aGUgbmV0d29yaywgc3BlY2lmaWNhbGx5IHRoZQorICAgICAgICAgICAgSVAgYWRkcmVzcyB0aGF0IHlvdXIgTklDIHVzZXMgdG8gY29ubmVjdCB0byB0aGUgbmV0d29yay4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBiaW5kIHRvIGFsbCBJUCBhZGRyZXNzZXMgdGhlIGNvbXB1dGVyCisgICAgICAgICAgICBzdXBwb3J0cyBieSB1c2luZyB0aGUgc2hvcnRjdXQKKyAgICAgICAgICAgICIwLjAuMC4wOjxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4iLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgYmluZHMgdG8gYWxsIElQIGFkZHJlc3NlcyBvbiB0aGUKKyAgICAgICAgICAgIGhvc3Q6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQgd2VicG9ydD0wLjAuMC4wOjg0MDAKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBiaW5kcyB0byBhIHNwZWNpZmljIElQIGFkZHJlc3Mgb24gdGhlIGhvc3QncworICAgICAgICAgICAgTklDOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IHdlYnBvcnQ9MTkyLjE2OC4xLjE6ODQwMAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xNDUsNyArMTU4LDcgQEAKICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFRvYXN0ZXIgZGF0YWJhc2UsCiAgICAgICAgICAgICAgICAgICB3aGljaCBieSBkZWZhdWx0IGlzIHRoZQotICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICBpbnZva2UgdGhlIDxmaWxlbmFtZT5jcmVhdGVzdXBlcnVzZXI8L2ZpbGVuYW1lPiBjb21tYW5kCiAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTM2OSwxNiArMzgyLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9DT05GPC9maWxlbmFtZT4sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1qc29uLWZpbGVzJz5KU09OIEZpbGVzPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoaXMgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVG9hc3RlciBjb25maWd1cmF0aW9uIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdG9hc3Rlcic+Q29uZmlndXJpbmcgVG9hc3RlcjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlci4KICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsaW5lIGFsc28gcnVucyB0aGUgPGZpbGVuYW1lPmNoZWNrc2V0dGluZ3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB3aGljaCBjb25maWd1cmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgVG9hc3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIGRpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIGRpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgVG9hc3RlciByb290IGRpcmVjdG9yeSA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVzIHdoZXJlIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIG9uIHRoZSBmaWxlIHN5c3RlbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbAppbmRleCBjNWM2Nzk1Li42NWUwNTdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sCkBAIC00MSw3ICs0MSw3IEBACiAgICAgICAgICAgICBUaGUgcmVxdWlyZW1lbnRzIGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gZGlyZWN0b3J5LCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQogICAgICAgICAgICAgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQ8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICBUaGUgZGVwZW5kZW5jaWVzIGFwcGVhciBpbiBhIDxmaWxlbmFtZT5waXA8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIGluc3RhbGwtY29tcGF0aWJsZSBmb3JtYXQuCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgcGFja2FnZXMgdGhhdCBUb2FzdGVyIHJlcXVpcmVzLgogICAgICAgICAgICAgICAgIFVzZSB0aGlzIGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkICQgcGlwMyBpbnN0YWxsIC0tdXNlciAtciBiaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dAorICAgICAkIHBpcDMgaW5zdGFsbCAtLXVzZXIgLXIgYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmQgaW5zdGFsbHMgdGhlIG5lY2Vzc2FyeSBUb2FzdGVyIG1vZHVsZXMKICAgICAgICAgICAgICAgICBpbnRvIGEgbG9jYWwgcHl0aG9uIDMgY2FjaGUgaW4geW91cgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCmluZGV4IGM3YTdmY2QuLjVhMWI2MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMSBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CisgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5LcmlzdGk8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+SW50ZWwgQ29ycG9yYXRpb248L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPmtyaXN0aUBidXp6Y29sbGVjdGl2ZW1hcmtldGluZy5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTU3LDI0ICs1NywxOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkp1bmUgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTkxLDI3ICs4NiwyOSBAQAogICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgVXNlciBNYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgVG9hc3RlciBVc2VyIE1hbnVhbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Ub2FzdGVyIFVzZXIgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgVXNlciBNYW51YWwsIHNlZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKaW5kZXggOTM2YjEwOS4uYWUyODAwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZApAQCAtMiwzMiArMiwzMiBAQAogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyBsaWtlICJ5b2N0by1wcm9qZWN0LXFzIiBhbmQgInBva3ktcmVmLW1hbnVhbCIuCiAjIFRoaXMgaXMgdGhlIG9sZCB3YXkgdGhhdCBkaWQgaXQuICBDYW4ndCBkbyB0aGF0IG5vdyB0aGF0IHdlIGhhdmUgImJpdGJha2UtdXNlci1tYW51YWwiIHN0cmluZ3MKICMgaW4gdGhlIG1lZ2EtbWFudWFsLgotIyBzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9bYS16XSotW2Etel0qLVthLXpdKlwvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9wb2t5LXJlZi1tYW51YWxcL3Bva3ktcmVmLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCisjIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSotW2Etel0qXC9bYS16XSotW2Etel0qLVthLXpdKi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Bva3ktcmVmLW1hbnVhbFwvcG9reS1yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpIGV4Y2VwdCBmb3IgdGhlIEJpdEJha2UgVXNlciBNYW51YWwgYmVjYXVzZQogIyBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIG1lZ2EtbWFudWFsLgogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyB0aGF0IHVzZSB0d28gd29yZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIG5vdyAoZS5nLiAicmVmLW1hbnVhbCIpLgogIyBUaGlzIHdhcyB0aGUgb25lLWxpbmVyIHRoYXQgd29ya2VkIGJlZm9yZSB3ZSBpbnRyb2R1Y2VkIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLCB3aGljaCBpcwogIyBub3QgaW4gdGhlIG1lZ2EtbWFudWFsLgotIyBzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9bYS16XSotW2Etel0qXC9bYS16XSotW2Etel0qLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKKyMgcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvW2Etel0qLVthLXpdKlwvW2Etel0qLVthLXpdKi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCiAKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvYnNwLWd1aWRlXC9ic3AtZ3VpZGUuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9rZXJuZWwtZGV2XC9rZXJuZWwtZGV2Lmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3Byb2ZpbGUtbWFudWFsXC9wcm9maWxlLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9yZWYtbWFudWFsXC9yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3RvYXN0ZXItbWFudWFsXC90b2FzdGVyLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvYnNwLWd1aWRlXC9ic3AtZ3VpZGUuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9rZXJuZWwtZGV2XC9rZXJuZWwtZGV2Lmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Byb2ZpbGUtbWFudWFsXC9wcm9maWxlLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9yZWYtbWFudWFsXC9yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3RvYXN0ZXItbWFudWFsXC90b2FzdGVyLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKIAogIyBQcm9jZXNzIGNhc2VzIHdoZXJlIGp1c3QgYW4gZXh0ZXJuYWwgbWFudWFsIGlzIHJlZmVyZW5jZWQgd2l0aG91dCBhbiBpZCBhbmNob3IKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3lvY3RvLXByb2plY3QtcXNcL3lvY3RvLXByb2plY3QtcXMuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PFwvYT4vWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9kZXYtbWFudWFsXC9kZXYtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9zZGstbWFudWFsXC9zZGstbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8XC9hPi9Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZS9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9ic3AtZ3VpZGVcL2JzcC1ndWlkZS5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPFwvYT4vWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvcHJvZmlsZS1tYW51YWxcL3Byb2ZpbGUtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL2tlcm5lbC1kZXZcL2tlcm5lbC1kZXYuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Ub2FzdGVyIFVzZXIgTWFudWFsPFwvYT4vVG9hc3RlciBVc2VyIE1hbnVhbC9nCitzLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDxcL2E+L1lvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvc2RrLW1hbnVhbFwvc2RrLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8XC9hPi9Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspL2cKK3MvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2JzcC1ndWlkZVwvYnNwLWd1aWRlLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8XC9hPi9Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZS9nCitzLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9wcm9maWxlLW1hbnVhbFwvcHJvZmlsZS1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWwvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwva2VybmVsLWRldlwva2VybmVsLWRldi5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC9nCitzLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9yZWYtbWFudWFsXC9yZWYtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsL2cKK3MvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3RvYXN0ZXItbWFudWFsXC90b2FzdGVyLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPlRvYXN0ZXIgVXNlciBNYW51YWw8XC9hPi9Ub2FzdGVyIFVzZXIgTWFudWFsL2cKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL2ZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTk2OTAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3FzLXN0eWxlLmNzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvcXMtc3R5bGUuY3NzCmluZGV4IDIzNWM4NWEuLjk0OGYxYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvcXMtc3R5bGUuY3NzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvcXMtc3R5bGUuY3NzCkBAIC03MzAsNiArNzMwLDExIEBACiB9CiAKIAorLndyaXRlcm5vdGVzIHsKKyAgY29sb3I6IHJlZDsKK30KKworCiAgIC8qKioqKioqKioqKiAvCiAgLyAgZ3JhcGhpY3MgIC8KIC8gKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLnhtbAppbmRleCBiNGIzZjRiLi5lNmRhZTdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy54bWwKQEAgLTE2LDM1ICsxNiwzNiBAQAogICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudCB1bmRlcgogICAgICAgICAgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24gJllPQ1RPX0RPQ19WRVJTSU9OOyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgUXVpY2sgU3RhcnQsIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy9sYXRlc3QveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L2xlZ2Fsbm90aWNlPgogCi0KICAgICAgICAgPGFic3RyYWN0PgogICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZyIKICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI2aW4iIGRlcHRoPSIxaW4iCkBAIC02MCwyNCArNjEsMTIgQEAKICAgICAgICAgICAgIGZvY3VzIGlzIGRldmVsb3BlcnMgb2YgZW1iZWRkZWQgTGludXggc3lzdGVtcy4KICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIGJ1aWxkIGhvc3QgYmFzZWQKICAgICAgICAgICAgIG9uIHRoZSBPcGVuRW1iZWRkZWQgKE9FKSBwcm9qZWN0LCB3aGljaCB1c2VzIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CiAgICAgICAgICAgICB0b29sLCB0byBjb25zdHJ1Y3QgY29tcGxldGUgTGludXggaW1hZ2VzLgotICAgICAgICAgICAgVGhlIEJpdEJha2UgYW5kIE9FIGNvbXBvbmVudHMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHRvIGZvcm0KKyAgICAgICAgICAgIFRoZSBCaXRCYWtlIGFuZCBPRSBjb21wb25lbnRzIGNvbWJpbmUgdG9nZXRoZXIgdG8gZm9ybQogICAgICAgICAgICAgYSByZWZlcmVuY2UgYnVpbGQgaG9zdCwgaGlzdG9yaWNhbGx5IGtub3duIGFzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwb2t5Jz5Qb2t5PC91bGluaz4KLSAgICAgICAgICAgICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2V5KS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIGEgc3lzdGVtIHRoYXQgcnVucyBMaW51eCBhbmQgeW91IHdhbnQgdG8gZ2l2ZQotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgYSB0ZXN0IHJ1biwgeW91IG1pZ2h0IGNvbnNpZGVyIHVzaW5nIHRoZSBZb2N0bwotICAgICAgICAgICAgUHJvamVjdCBCdWlsZCBBcHBsaWFuY2UuCi0gICAgICAgICAgICBUaGUgQnVpbGQgQXBwbGlhbmNlIGFsbG93cyB5b3UgdG8gYnVpbGQgYW5kIGJvb3QgYSBjdXN0b20gZW1iZWRkZWQKLSAgICAgICAgICAgIExpbnV4IGltYWdlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgYSBub24tTGludXggZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHN5c3RlbS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvdG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL2J1aWxkLWFwcGxpYW5jZSc+WW9jdG8gUHJvamVjdCBCdWlsZCBBcHBsaWFuY2U8L3VsaW5rPgotICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNwb2t5Jz5Qb2t5PC91bGluaz4KKyAgICAgICAgICAgICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtODYsMzAgKzc1LDc0IEBACiAgICAgICAgICAgICBMaW51eCBpbWFnZXMuCiAgICAgICAgICAgICBSYXRoZXIgdGhhbiBnbyBpbnRvIGdyZWF0IGRldGFpbCBhYm91dCB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXRzCiAgICAgICAgICAgICBtYW55IGNhcGFiaWxpdGllcywgdGhpcyBxdWljayBzdGFydCBwcm92aWRlcyB0aGUgbWluaW1hbAotICAgICAgICAgICAgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gdHJ5IG91dCB0aGUgWW9jdG8gUHJvamVjdCB1c2luZyBhCi0gICAgICAgICAgICBzdXBwb3J0ZWQgTGludXggYnVpbGQgaG9zdC4KKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIHRyeSBvdXQgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgZWl0aGVyIGEKKyAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBidWlsZCBob3N0IG9yIGEgYnVpbGQgaG9zdCBzZXQgdXAgdG8gdXNlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgUmVhZGluZyBhbmQgdXNpbmcgdGhlIHF1aWNrIHN0YXJ0IHNob3VsZCByZXN1bHQgaW4geW91IGhhdmluZyBhCiAgICAgICAgICAgICBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIFlvY3RvIFByb2plY3QgaXMgYW5kIGhvdyB0byB1c2UKICAgICAgICAgICAgIHNvbWUgb2YgaXRzIGNvcmUgY29tcG9uZW50cy4KICAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gaGF2ZSB3b3JrZWQgdGhyb3VnaCBzdGVwcyB0byBwcm9kdWNlIHR3byBpbWFnZXM6Ci0gICAgICAgICAgICBvbmUgdGhhdCBpcyBzdWl0YWJsZSBmb3IgZW11bGF0aW9uIGFuZCBvbmUgdGhhdCBib290cyBvbiBhY3R1YWwKLSAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgb25lIHRoYXQgcnVucyBvbiB0aGUgZW11bGF0b3IgKFFFTVUpIGFuZCBvbmUgdGhhdCBib290cyBvbiBhY3R1YWwKKyAgICAgICAgICAgIGhhcmR3YXJlIChpLmUuIE1pbm5vd0JvYXJkIFR1cmJvdCkuCiAgICAgICAgICAgICBUaGUgZXhhbXBsZXMgaGlnaGxpZ2h0IHRoZSBlYXNlIHdpdGggd2hpY2ggeW91IGNhbiB1c2UgdGhlCiAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHRvIGNyZWF0ZSBpbWFnZXMgZm9yIG11bHRpcGxlIHR5cGVzIG9mIGhhcmR3YXJlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGlyZWN0cyB5b3UgdG8ga2V5IHNlY3Rpb25zIG9mIHRoaXMKKyAgICAgICAgICAgIHF1aWNrIHN0YXJ0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNC95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbCN5cC1yZXNvdXJjZXMnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjQveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwjYnVpbGRpbmctYW4taW1hZ2UtZm9yLWVtdWxhdGlvbic+QnVpbGRpbmcgYW4gSW1hZ2UgZm9yIEVtdWxhdGlvbjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi40L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI2J1aWxkaW5nLWFuLWltYWdlLWZvci1oYXJkd2FyZSc+QnVpbGRpbmcgYW4gSW1hZ2UgZm9yIEhhcmR3YXJlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKzwhLS0KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSBhIHN5c3RlbSB0aGF0IHJ1bnMgTGludXggYW5kIHlvdSB3YW50IHRvIGdpdmUKKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBhIHRlc3QgcnVuLCB5b3UgbWlnaHQgY29uc2lkZXIgdXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCBCdWlsZCBBcHBsaWFuY2UuCisgICAgICAgICAgICAgICAgVGhlIEJ1aWxkIEFwcGxpYW5jZSBhbGxvd3MgeW91IHRvIGJ1aWxkIGFuZCBib290IGEgY3VzdG9tCisgICAgICAgICAgICAgICAgZW1iZWRkZWQgTGludXggaW1hZ2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdCB1c2luZyBhIG5vbi1MaW51eAorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy90b29scy1yZXNvdXJjZXMvcHJvamVjdHMvYnVpbGQtYXBwbGlhbmNlJz5Zb2N0byBQcm9qZWN0IEJ1aWxkIEFwcGxpYW5jZTwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CistLT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHlvdSBjYW4KICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGVzZSByZXNvdXJjZXM6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+V2Vic2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPldlYnNpdGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIHRoZSBsYXRlc3QgYnVpbGRzLCBicmVha2luZyBuZXdzLCBmdWxsIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24sIGFuZCBhY2Nlc3MgdG8gYSByaWNoIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgQ29tbXVuaXR5IGludG8gd2hpY2ggeW91IGNhbiB0YXAuCisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGJhY2tncm91bmQgaW5mb3JtYXRpb24sIHRoZSBsYXRlc3QgYnVpbGRzLCBicmVha2luZworICAgICAgICAgICAgICAgICAgICBuZXdzLCBmdWxsIGRldmVsb3BtZW50IGRvY3VtZW50YXRpb24sIGFuZCBhY2Nlc3MgdG8gYSByaWNoCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgQ29tbXVuaXR5IGludG8gd2hpY2ggeW91IGNhbiB0YXAuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RkFRczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgT3ZlcnZpZXc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN5cC1pbnRybyc+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBwcmVzZW50cyBhbiBvdmVydmlldyBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RkFRczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBMaXN0cyBjb21tb25seSBhc2tlZCBZb2N0byBQcm9qZWN0IHF1ZXN0aW9ucyBhbmQgYW5zd2Vycy4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHR3byBGQVFzOgogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvRkFRJz5Zb2N0byBQcm9qZWN0IEZBUTwvdWxpbms+CkBAIC0xMTcsNyArMTUwLDggQEAKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2ZhcSc+RkFRPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXZlbG9wZXIgU2NyZWVuY2FzdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BlciBTY3JlZW5jYXN0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdmltZW8uY29tLzM2NDUwMzIxJz5HZXR0aW5nIFN0YXJ0ZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAtIE5ldyBEZXZlbG9wZXIgU2NyZWVuY2FzdCBUdXRvcmlhbDwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGEgMzAtbWludXRlIHZpZGVvIGNyZWF0ZWQgZm9yIHVzZXJzIHVuZmFtaWxpYXIKQEAgLTEyNiwyMzggKzE2MCwyNDAgQEAKICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhpcyBzY3JlZW5jYXN0IGlzIHNvbWV3aGF0IGRhdGVkLCB0aGUgaW50cm9kdWN0b3J5CiAgICAgICAgICAgICAgICAgICAgIGFuZCBmdW5kYW1lbnRhbCBjb25jZXB0cyBhcmUgdXNlZnVsIGZvciB0aGUgYmVnaW5uZXIuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXByZWhlbnNpdmUgTGlzdCBvZiBMaW5rcyBhbmQgT3RoZXIgRG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcyBhCisgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpdmUgbGlzdCBvZiByZWxhdGVkIGxpbmtzIGFuZCBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J3lwLWludHJvJz4KLSAgICAgICAgPHRpdGxlPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRocm91Z2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgYW4KLSAgICAgICAgICAgIG9wZW4gc291cmNlIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRhcmdldGluZyB0aGUgQVJNLCBNSVBTLAotICAgICAgICAgICAgUG93ZXJQQywgYW5kIHg4NiBhcmNoaXRlY3R1cmVzIGZvciBhIHZhcmlldHkgb2YgcGxhdGZvcm1zCi0gICAgICAgICAgICBpbmNsdWRpbmcgeDg2LTY0IGFuZCBlbXVsYXRlZCBvbmVzLgotICAgICAgICAgICAgWW91IGNhbiB1c2UgY29tcG9uZW50cyBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHRvIGRlc2lnbiwgZGV2ZWxvcCwKLSAgICAgICAgICAgIGJ1aWxkLCBkZWJ1Zywgc2ltdWxhdGUsIGFuZCB0ZXN0IHRoZSBjb21wbGV0ZSBzb2Z0d2FyZSBzdGFjayB1c2luZwotICAgICAgICAgICAgTGludXgsIHRoZSBYIFdpbmRvdyBTeXN0ZW0sIEdUSysgZnJhbWV3b3JrcywgYW5kIFF0IGZyYW1ld29ya3MuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bWVkaWFvYmplY3Q+Ci0gICAgICAgICAgICA8aW1hZ2VvYmplY3Q+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZyIKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KLSAgICAgICAgICAgIDwvaW1hZ2VvYmplY3Q+Ci0gICAgICAgICA8L21lZGlhb2JqZWN0PgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBoaWdobGlnaHRzIGZvciB0aGUgWW9jdG8gUHJvamVjdDoKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgYSByZWNlbnQgTGludXgga2VybmVsIGFsb25nIHdpdGggYSBzZXQgb2Ygc3lzdGVtCi0gICAgICAgICAgICAgICAgY29tbWFuZHMgYW5kIGxpYnJhcmllcyBzdWl0YWJsZSBmb3IgdGhlIGVtYmVkZGVkCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgTWFrZXMgYXZhaWxhYmxlIHN5c3RlbSBjb21wb25lbnRzIHN1Y2ggYXMgWDExLCBHVEsrLCBRdCwKLSAgICAgICAgICAgICAgICBDbHV0dGVyLCBhbmQgU0RMIChhbW9uZyBvdGhlcnMpIHNvIHlvdSBjYW4gY3JlYXRlIGEgcmljaCB1c2VyCi0gICAgICAgICAgICAgICAgZXhwZXJpZW5jZSBvbiBkZXZpY2VzIHRoYXQgaGF2ZSBkaXNwbGF5IGhhcmR3YXJlLgotICAgICAgICAgICAgICAgIEZvciBkZXZpY2VzIHRoYXQgZG8gbm90IGhhdmUgYSBkaXNwbGF5IG9yIHdoZXJlIHlvdSB3aXNoIHRvCi0gICAgICAgICAgICAgICAgdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHRoZXNlIGNvbXBvbmVudHMgbmVlZCBub3QgYmUKLSAgICAgICAgICAgICAgICBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ3JlYXRlcyBhIGZvY3VzZWQgYW5kIHN0YWJsZSBjb3JlIGNvbXBhdGlibGUgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgcHJvamVjdCB3aXRoIHdoaWNoIHlvdSBjYW4gZWFzaWx5IGFuZCByZWxpYWJseQotICAgICAgICAgICAgICAgIGJ1aWxkIGFuZCBkZXZlbG9wLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIEZ1bGx5IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBoYXJkd2FyZSBhbmQgZGV2aWNlIGVtdWxhdGlvbgotICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBQcm92aWRlcyBhIGxheWVyIG1lY2hhbmlzbSB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGV4dGVuZAotICAgICAgICAgICAgICAgIHRoZSBzeXN0ZW0sIG1ha2UgY3VzdG9taXphdGlvbnMsIGFuZCBrZWVwIHRoZW0gb3JnYW5pemVkLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGdlbmVyYXRlIGltYWdlcyBmb3IgbWFueSBraW5kcwotICAgICAgICAgICAgb2YgZGV2aWNlcy4KLSAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBjcmVhdGlvbiBvZgotICAgICAgICAgICAgcmVmZXJlbmNlIGltYWdlcyB0aGF0IHlvdSBjYW4gYm9vdCB3aXRoaW4gYW5kIGVtdWxhdGUgdXNpbmcgUUVNVS4KLSAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBleGFtcGxlIG1hY2hpbmVzIHRhcmdldCBRRU1VIGZ1bGwtc3lzdGVtCi0gICAgICAgICAgICBlbXVsYXRpb24gZm9yIDMyLWJpdCBhbmQgNjQtYml0IHZhcmlhbnRzIG9mIHg4NiwgQVJNLCBNSVBTLCBhbmQKLSAgICAgICAgICAgIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgIEJleW9uZCBlbXVsYXRpb24sIHlvdSBjYW4gdXNlIHRoZSBsYXllciBtZWNoYW5pc20gdG8gZXh0ZW5kCi0gICAgICAgICAgICBzdXBwb3J0IHRvIGp1c3QgYWJvdXQgYW55IHBsYXRmb3JtIHRoYXQgTGludXggY2FuIHJ1biBvbiBhbmQgdGhhdAotICAgICAgICAgICAgYSB0b29sY2hhaW4gY2FuIHRhcmdldC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciBZb2N0byBQcm9qZWN0IGZlYXR1cmUgaXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIKLSAgICAgICAgICAgIEludGVyZmFjZS4KLSAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgVUkgdGhhdCBpcyBiYXNlZCBvbiBHVEsrIGlzIGludGVuZGVkIGZvciBkZXZpY2VzIHdpdGgKLSAgICAgICAgICAgIHJlc3RyaWN0ZWQgc2NyZWVuIHNpemVzIGFuZCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIENvcmUgbGF5ZXIgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB0ZXN0IHBhcnRzIG9mIHRoZQotICAgICAgICAgICAgc29mdHdhcmUgc3RhY2suCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0neXAtcmVzb3VyY2VzJz4KICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB3aGF0IHlvdSBuZWVkIGluIG9yZGVyIHRvIHVzZSBhCi0gICAgICAgICAgICBMaW51eC1iYXNlZCBidWlsZCBob3N0IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0byBidWlsZCBpbWFnZXM6CisgICAgICAgICAgICBTZXR0aW5nIHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBpbnZvbHZlcyBnZXR0aW5nIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIGhvc3QgcmVhZHkuCisgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgcnVucyBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHN1cHBvcnRlZCBkaXN0cmlidXRpb24gYXMgZGVzY3JpYmVkIGJ5IHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLCB5b3UgY2FuIHByZXBhcmUKKyAgICAgICAgICAgIHRoYXQgbWFjaGluZSBhcyB5b3VyIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncXMtbmF0aXZlLWxpbnV4LWJ1aWxkLWhvc3QnPlVzaW5nIGEgTmF0aXZlIExpbnV4IE1hY2hpbmU8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEhvc3Q8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgYnVpbGQgaG9zdCB3aXRoIGEgbWluaW11bSBvZiA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrCi0gICAgICAgICAgICAgICAgc3BhY2UgdGhhdCBpcyBydW5uaW5nIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbiAoaS5lLgotICAgICAgICAgICAgICAgIHJlY2VudCByZWxlYXNlcyBvZiBGZWRvcmEsIG9wZW5TVVNFLCBDZW50T1MsIERlYmlhbiwgb3IKLSAgICAgICAgICAgICAgICBVYnVudHUpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBIb3N0IFBhY2thZ2VzPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBcHByb3ByaWF0ZSBwYWNrYWdlcyBpbnN0YWxsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBuYXRpdmUgTGludXgKKyAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBjYW4gcHJlcGFyZSB5b3VyIGJ1aWxkIGhvc3QgdG8gdXNlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KKyAgICAgICAgICAgIFlvdSBjYW4gc2V0IHVwIGEgYnVpbGQgaG9zdCBmb3IgV2luZG93cywgTWFjLCBhbmQgTGludXgKKyAgICAgICAgICAgIG1hY2hpbmVzLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3FzLWNyb3BzLWJ1aWxkLWhvc3QnPlVzaW5nIENST1BTIGFuZCBDb250YWluZXJzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ndGhlLWxpbnV4LWRpc3Rybyc+Ci0gICAgICAgICAgICA8dGl0bGU+VGhlIExpbnV4IERpc3RyaWJ1dGlvbjwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdxcy1jcm9wcy1idWlsZC1ob3N0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBDUk9QUyBhbmQgQ29udGFpbmVyczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdmVyaWZpZXMgZWFjaCByZWxlYXNlIGFnYWluc3QgcmVjZW50Ci0gICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1vc3QgcG9wdWxhciBMaW51eCBkaXN0cmlidXRpb25zIHRoYXQKLSAgICAgICAgICAgICAgICBwcm92aWRlIHN0YWJsZSByZWxlYXNlcy4KLSAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBpZiB5b3UgaGF2ZSB0aGUgY3VycmVudCByZWxlYXNlIG1pbnVzIG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlzdHJpYnV0aW9ucywgeW91IHNob3VsZCBoYXZlIG5vIHByb2JsZW1zLgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGdldCB5b3VyIGJ1aWxkIGhvc3Qgc2V0IHVwIHdpdGggYQorICAgICAgICAgICAgICAgIFBva3kgY29udGFpbmVyIHRoYXQgeW91IGNhbiB1c2UgdG8gY29tcGxldGUgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgZXhhbXBsZXMgZnVydGhlciBkb3duIGluIHRoZSBRdWljayBTdGFydDoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVidW50dQorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0byB1c2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmsgdGhyb3VnaCB0aGUgZmlyc3Qgc2l4IHN0ZXBzIG9mIHRoZSBwcm9jZWR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz5TZXR0aW5nIFVwIHRvIFVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRmVkb3JhCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgb3BlblNVU0UKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDZW50T1MKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBEZWJpYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIEZvciBhIG1vcmUgZGV0YWlsZWQgbGlzdCBvZiBkaXN0cmlidXRpb25zIHRoYXQgc3VwcG9ydCB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgdGhlIFBva3kgQ29udGFpbmVyIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgR28gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9wb2t5LWNvbnRhaW5lci9ibG9iL21hc3Rlci9SRUFETUUubWQnPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZm9sbG93IHRoZSBkaXJlY3Rpb25zIHRvIHNldCB1cCB0aGUgUG9reSBjb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHlvdXIgYnVpbGQgaG9zdC48L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBvbiBhbnkKLSAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCi0gICAgICAgICAgICAgICAgR2l0LCB0YXIsIGFuZCBQeXRob24uCi0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSwgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBvbiB5b3VyIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiB0byBjb250aW51ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yNCBvciBncmVhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCi0gICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQotICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwYWNrYWdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+VGhlIEJ1aWxkIEhvc3QgUGFja2FnZXM8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0ncXMtbmF0aXZlLWxpbnV4LWJ1aWxkLWhvc3QnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGEgTmF0aXZlIExpbnV4IE1hY2hpbmU8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSZXF1aXJlZCBidWlsZCBob3N0IHBhY2thZ2VzIHZhcnkgZGVwZW5kaW5nIG9uIHlvdXIKLSAgICAgICAgICAgICAgICBidWlsZCBtYWNoaW5lIGFuZCB3aGF0IHlvdSB3YW50IHRvIGRvIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIHRoYXQgY2FuIHJ1bgotICAgICAgICAgICAgICAgIG9uIFFFTVUgaW4gZ3JhcGhpY2FsIG1vZGUgKGEgbWluaW1hbCwgYmFzaWMgYnVpbGQKLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudCksIHRoZW4gdGhlIGJ1aWxkIGhvc3QgcGFja2FnZSByZXF1aXJlbWVudHMKLSAgICAgICAgICAgICAgICBhcmUgZGlmZmVyZW50IHRoYW4gaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugb24gYSBoZWFkbGVzcwotICAgICAgICAgICAgICAgIHN5c3RlbSBvciBidWlsZCBvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHdoYXQgeW91IG5lZWQgaW4gb3JkZXIgdG8gdXNlIGEKKyAgICAgICAgICAgICAgICBMaW51eC1iYXNlZCBidWlsZCBob3N0IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0byBidWlsZCBpbWFnZXM6CiAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIG51bWJlciBvZiByZXF1aXJlZCBwYWNrYWdlcyBpcyBsYXJnZQotICAgICAgICAgICAgICAgIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gY292ZXIgYWxsIGNhc2VzLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB5b3UgbmVlZCB0byBoYXZlIHJvb3QgYWNjZXNzIGFuZCB0aGVuIGluc3RhbGwKLSAgICAgICAgICAgICAgICAgICAgdGhlIHJlcXVpcmVkIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tbWFuZHMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIG1heSBvciBtYXkKLSAgICAgICAgICAgICAgICAgICAgbm90IHdvcmsgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHlvdXIgTGludXgKLSAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIGhhcyA8ZmlsZW5hbWU+c3VkbzwvZmlsZW5hbWU+IGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgSG9zdDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgYnVpbGQgaG9zdCB3aXRoIGEgbWluaW11bSBvZiA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrCisgICAgICAgICAgICAgICAgICAgIHNwYWNlIHRoYXQgaXMgcnVubmluZyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgcmVjZW50IHJlbGVhc2VzIG9mIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvcgorICAgICAgICAgICAgICAgICAgICBVYnVudHUpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEhvc3QgUGFja2FnZXM8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcHByb3ByaWF0ZSBwYWNrYWdlcyBpbnN0YWxsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkCi0gICAgICAgICAgICAgICAgYW4gaW1hZ2UgdGhhdCBydW5zIG9uIFFFTVUgaW4gZ3JhcGhpY2FsIG1vZGUgKGUuZy4gZXNzZW50aWFsCi0gICAgICAgICAgICAgICAgcGx1cyBncmFwaGljcyBzdXBwb3J0KS4KLSAgICAgICAgICAgICAgICBGb3IgbGlzdHMgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIG90aGVyIHNjZW5hcmlvcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VWJ1bnR1IGFuZCBEZWJpYW48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3RoZS1saW51eC1kaXN0cm8nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgTGludXggRGlzdHJpYnV0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIHZlcmlmaWVzIGVhY2ggcmVsZWFzZSBhZ2FpbnN0IHJlY2VudAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgbW9zdCBwb3B1bGFyIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICBwcm92aWRlIHN0YWJsZSByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgaWYgeW91IGhhdmUgdGhlIGN1cnJlbnQgcmVsZWFzZSBtaW51cyBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBkaXN0cmlidXRpb25zLCB5b3Ugc2hvdWxkIGhhdmUgbm8gcHJvYmxlbXMuCisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVWJ1bnR1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVkb3JhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblNVU0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZW50T1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWJpYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIEZvciBhIG1vcmUgZGV0YWlsZWQgbGlzdCBvZiBkaXN0cmlidXRpb25zIHRoYXQgc3VwcG9ydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2hvdWxkIGJlIGFibGUgdG8gcnVuIG9uIGFueQorICAgICAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCisgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBhbmQgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCAxLjguMy4xIG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yNyBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvIHRoYXQgeW91IGNhbiBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwYWNrYWdlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCBidWlsZCBob3N0IHBhY2thZ2VzIHZhcnkgZGVwZW5kaW5nIG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgbWFjaGluZSBhbmQgd2hhdCB5b3Ugd2FudCB0byBkbyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2UgdGhhdCBjYW4gcnVuCisgICAgICAgICAgICAgICAgICAgIG9uIFFFTVUgaW4gZ3JhcGhpY2FsIG1vZGUgKGEgbWluaW1hbCwgYmFzaWMgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnQpLCB0aGVuIHRoZSBidWlsZCBob3N0IHBhY2thZ2UgcmVxdWlyZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGFyZSBkaWZmZXJlbnQgdGhhbiBpZiB5b3Ugd2FudCB0byBidWlsZCBhbiBpbWFnZSBvbiBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBvciBidWlsZCBvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIG51bWJlciBvZiByZXF1aXJlZCBwYWNrYWdlcyBpcyBsYXJnZQorICAgICAgICAgICAgICAgICAgICBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGNvdmVyIGFsbCBjYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB5b3UgbmVlZCB0byBoYXZlIHJvb3QgYWNjZXNzIGFuZCB0aGVuIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXF1aXJlZCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBjb21tYW5kcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24gbWF5IG9yIG1heQorICAgICAgICAgICAgICAgICAgICAgICAgbm90IHdvcmsgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHlvdXIgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBoYXMgPGZpbGVuYW1lPnN1ZG88L2ZpbGVuYW1lPiBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgdGhhdCBydW5zIG9uIFFFTVUgaW4gZ3JhcGhpY2FsIG1vZGUgKGUuZy4gZXNzZW50aWFsCisgICAgICAgICAgICAgICAgICAgIHBsdXMgZ3JhcGhpY3Mgc3VwcG9ydCkuCisgICAgICAgICAgICAgICAgICAgIEZvciBsaXN0cyBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3Igb3RoZXIgc2NlbmFyaW9zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VWJ1bnR1IGFuZCBEZWJpYW48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAmVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBsaWJzZGwxLjItZGV2IHh0ZXJtCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GZWRvcmE8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RmVkb3JhPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc3VkbyBkbmYgaW5zdGFsbCAmRkVET1JBX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5TVVNFPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5TVVNFPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCAmT1BFTlNVU0VfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7IGxpYlNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2VudE9TPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNlbnRPUzwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8geXVtIGluc3RhbGwgJkNFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgU0RMLWRldmVsIHh0ZXJtCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhIFBhY2thZ2VzIGZvciBFbnRlcnByaXNlIExpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG9uIFJIRUwvQ2VudE9TIGZvciBlYXN5IGluc3RhbGxhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgbm90IGluY2x1ZGVkIGluIGVudGVycHJpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWFrZWNhY2hlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhIFBhY2thZ2VzIGZvciBFbnRlcnByaXNlIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG9uIFJIRUwvQ2VudE9TIGZvciBlYXN5IGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIG5vdCBpbmNsdWRlZCBpbiBlbnRlcnByaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCisgICAgICAgICAgICAgICAgbWFjaGluZSwgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb24geW91ciBidWlsZAorICAgICAgICAgICAgICAgIGhvc3QuCisgICAgICAgICAgICAgICAgQ29udGludWUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVsZWFzZXMnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0zNjUsMTEgKzQwMSwxMiBAQAogICAgICAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgUmVsZWFzZTwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBsYXN0IHJlcXVpcmVtZW50IHlvdSBuZWVkIHRvIG1lZXQgYmVmb3JlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaXMgZ2V0dGluZyBhIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICBOb3cgdGhhdCB5b3VyIGJ1aWxkIGhvc3QgaGFzIHRoZSByaWdodCBwYWNrYWdlcyAobmF0aXZlCisgICAgICAgICAgICAgICAgTGludXggbWFjaGluZSkgb3IgeW91IGhhdmUgdGhlIFBva3kgY29udGFpbmVyIHNldCB1cAorICAgICAgICAgICAgICAgIChDUk9QUyksIHlvdSBuZWVkIHRvIGdldCBhIGNvcHkgb2YgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZ2V0IHRoZSBsYXRlc3QgWW9jdG8gUHJvamVjdCByZWxlYXNlCiAgICAgICAgICAgICAgICAgYnkgc2V0dGluZyB1cCAoY2xvbmluZyBpbgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4gdGVybXMpIGEKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IHRlcm1zKSBhCiAgICAgICAgICAgICAgICAgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBvbgogICAgICAgICAgICAgICAgIHlvdXIgYnVpbGQgaG9zdCBhbmQgdGhlbiBjaGVja2luZyBvdXQgdGhlIGxhdGVzdCByZWxlYXNlLgogICAgICAgICAgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gZWFzaWx5IHVwZGF0ZSB0byBuZXdlciBZb2N0byBQcm9qZWN0CkBAIC0zNzcsOSArNDE0LDE1IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIGFuIFVidW50dSBidWlsZCBob3N0IHRoYXQgY2xvbmVzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBhbmQgdGhlbiBjaGVja3Mgb3V0IHRoZQotICAgICAgICAgICAgICAgIGxhdGVzdCBZb2N0byBQcm9qZWN0IFJlbGVhc2UgKGkuZS4gJkRJU1RSTzspOgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgdGhhdCBpcworICAgICAgICAgICAgICAgIHJ1bm5pbmcgVWJ1bnR1LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgaXMgdXNpbmcgYSBQb2t5IGNvbnRhaW5lciwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIHNhbWUgR2l0IGNvbW1hbmRzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY2xvbmVzIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgdGhlbiBjaGVja3Mgb3V0IHRoZSBsYXRlc3QgWW9jdG8gUHJvamVjdCBSZWxlYXNlCisgICAgICAgICAgICAgICAgYnkgdGFnIChpLmUuIDxmaWxlbmFtZT4mRElTVFJPX1JFTF9UQUc7PC9maWxlbmFtZT4pOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQogICAgICBDbG9uaW5nIGludG8gJ3Bva3knLi4uCkBAIC0zODksMTggKzQzMiwzNSBAQAogICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMzYxNzgyLzM2MTc4MiksIDEzMS45NCBNaUIgfCA2Ljg4IE1pQi9zLCBkb25lLgogICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNjg2MTkvMjY4NjE5KSwgZG9uZS4KICAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCi0gICAgICQgZ2l0IGNoZWNrb3V0ICZESVNUUk9fTkFNRV9OT19DQVA7CisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvJkRJU1RST19SRUxfVEFHOyAtYiBwb2t5XyZESVNUUk87CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBnZXQgdGhlIFlvY3RvIFByb2plY3QgRmlsZXMgYnkgZG93bmxvYWRpbmcKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0hPTUVfVVJMOyI+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGdldHRpbmcgc2V0IHVwIHdpdGggdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICByZWxlYXNlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2FsLXlwLXJlbGVhc2UnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGl0ZW0gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBHaXQgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2ggbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV8mRElTVFJPOzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBhdmFpbGFibGUgdG8geW91IGluIHRoYXQgYnJhbmNoIGV4YWN0bHkgbWF0Y2ggdGhlCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSdzIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGF0IHRoZSB0aW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87CisgICAgICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gY2hlY2tpbmcgb3V0IHRoZSBlbnRpcmUgZGV2ZWxvcG1lbnQgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIG9mIGEgcmVsZWFzZSAoaS5lLiB0aGUgdGlwKSwgd2hpY2ggY291bGQgYmUgY29udGludW91c2x5CisgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIHdoaWxlIHlvdSBhcmUgZG9pbmcgeW91ciBkZXZlbG9wbWVudCwgeW91IHdvdWxkCisgICAgICAgICAgICAgICAgICAgIGNoZWNrIG91dCBhIGJyYW5jaCBiYXNlZCBvbiBhIHJlbGVhc2UgdGFnIGFzIHNob3duIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcmV2aW91cyBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBwcm92aWRlcyB5b3Ugd2l0aCBhbiB1bmNoYW5naW5nLCBzdGFibGUgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgb3B0aW9ucyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzaW5nIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCByZWxhdGVkIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgpAQCAtNDA5LDIwICs0NjksMjIgQEAKICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIEltYWdlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSB5b3VyIHN5c3RlbSByZXF1aXJlbWVudHMgaW4gb3JkZXIsIHlvdSBjYW4gZ2l2ZQotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhIHRyeS4KLSAgICAgICAgICAgIFlvdSBjYW4gdHJ5IG91dCBZb2N0byBQcm9qZWN0IHVzaW5nIGVpdGhlciB0aGUgY29tbWFuZC1saW5lCi0gICAgICAgICAgICBpbnRlcmZhY2Ugb3IgdXNpbmcgVG9hc3Rlciwgd2hpY2ggdXNlcyBhIGdyYXBoaWNhbCB1c2VyCi0gICAgICAgICAgICBpbnRlcmZhY2UuCi0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB0cnkgb3V0IHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGEgR1VJLCBzZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4KLSAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCBhbmQgc2V0IHVwIFRvYXN0ZXIuCisgICAgICAgICAgICBZb3UgYXJlIG5vdyByZWFkeSB0byBnaXZlIHRoZSBZb2N0byBQcm9qZWN0IGEgdHJ5LgorICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IHdpbGwgYmUgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSB0byBidWlsZAorICAgICAgICAgICAgeW91ciBpbWFnZXMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBBIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSB0byB0aGUgWW9jdG8gUHJvamVjdCBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICB0aHJvdWdoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdG9hc3Rlci10ZXJtJz5Ub2FzdGVyPC91bGluaz4uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyB1c2UgdGhlIFlvY3RvIFByb2plY3QgdGhyb3VnaCB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZSwKLSAgICAgICAgICAgIGZpbmlzaCB0aGlzIHF1aWNrIHN0YXJ0LCB3aGljaCBwcmVzZW50cyBzdGVwcyB0aGF0IGxldCB5b3UKLSAgICAgICAgICAgIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgcXVpY2sgc3RhcnQgc3RlcHMgeW91IHRocm91Z2ggdGhlCisgICAgICAgICAgICBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IHJlZmVyZW5jZSBpbWFnZQpAQCAtNDMzLDcgKzQ5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHNlY29uZCBpbWFnZSB0aGF0IHlvdSBjYW4gbG9hZCBvbnRvIGJvb3RhYmxlCiAgICAgICAgICAgICAgICAgICAgIG1lZGlhIGFuZCBhY3R1YWxseSBib290IHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlIE1pbm5vd0JvYXJkCi0gICAgICAgICAgICAgICAgICAgIE1BWC1jb21wYXRpYmxlIGJvYXJkcy4KKyAgICAgICAgICAgICAgICAgICAgVHVyYm90LWNvbXBhdGlibGUgYm9hcmRzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPG5vdGU+CkBAIC00NTIsMzcgKzUxNCwzOSBAQAogICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGJ1aWxkIHlvdXIgaW1hZ2UuCiAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBhbiBlbnRpcmUgTGludXgKICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24sIGluY2x1ZGluZyB0aGUgdG9vbGNoYWluLCBmcm9tIHNvdXJjZS4KLSAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZSBhYm91dCBOZXR3b3JrIFByb3hpZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBidWlsZCBwcm9jZXNzIHNlYXJjaGVzIGZvciBzb3VyY2UgY29kZQotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBwcmUtZGV0ZXJtaW5lZCBvcmRlciB0aHJvdWdoIGEgc2V0IG9mCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHdvcmtpbmcgYmVoaW5kIGEgZmlyZXdhbGwgYW5kIHlvdXIgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgaXMgbm90IHNldCB1cCBmb3IgcHJveGllcywgeW91IGNvdWxkIGVuY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIGZldGNoaW5nIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAoZS5nLiBmZXRjaGVyIGZhaWx1cmVzIG9yIEdpdCBmYWlsdXJlcykuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyB5b3VyIHByb3h5IHNldHRpbmdzLCBjb25zdWx0IHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgcmVzb3VyY2VzIGFuZCBnZXQgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgY291bGQgYWxzbyBiZSB0byBjaGVjayB5b3VyIHdlYgotICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciBzZXR0aW5ncy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBiZWhpbmQgYSBmaXJld2FsbCBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaG93LWRvZXMtdGhlLXlvY3RvLXByb2plY3Qtb2J0YWluLXNvdXJjZS1jb2RlLWFuZC13aWxsLWl0LXdvcmstYmVoaW5kLW15LWZpcmV3YWxsLW9yLXByb3h5LXNlcnZlcic+RkFRPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1dvcmtpbmdfQmVoaW5kX2FfTmV0d29ya19Qcm94eSc+V29ya2luZyBCZWhpbmQgYSBOZXR3b3JrIFByb3h5PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXMgYWJvdXQgTmV0d29yayBQcm94aWVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgcHJvY2VzcyBzZWFyY2hlcyBmb3Igc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSB1c2luZyBhIHByZS1kZXRlcm1pbmVkIG9yZGVyIHRocm91Z2ggYSBzZXQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB3b3JraW5nIGJlaGluZCBhIGZpcmV3YWxsIGFuZCB5b3VyIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBpcyBub3Qgc2V0IHVwIGZvciBwcm94aWVzLCB5b3UgY291bGQgZW5jb3VudGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIGZldGNoaW5nIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKGUuZy4gZmV0Y2hlciBmYWlsdXJlcyBvciBHaXQgZmFpbHVyZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyB5b3VyIHByb3h5IHNldHRpbmdzLCBjb25zdWx0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgY291bGQgYWxzbyBiZSB0byBjaGVjayB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViIGJyb3dzZXIgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBiZWhpbmQgYSBmaXJld2FsbCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNob3ctZG9lcy10aGUteW9jdG8tcHJvamVjdC1vYnRhaW4tc291cmNlLWNvZGUtYW5kLXdpbGwtaXQtd29yay1iZWhpbmQtbXktZmlyZXdhbGwtb3ItcHJveHktc2VydmVyJz5GQVE8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QmUgU3VyZSBZb3VyIEJ1aWxkIEhvc3QgaXMgU2V0IFVwOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZSBTdXJlIFlvdXIgQnVpbGQgSG9zdCBpcyBTZXQgVXA6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB0byBidWlsZCBhbiBpbWFnZSBpbiB0aGlzIHNlY3Rpb24gZGVwZW5kIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYmVpbmcgcHJvcGVybHkgc2V0IHVwLgogICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgaGF2ZSB3b3JrZWQgdGhyb3VnaCB0aGUgcmVxdWlyZW1lbnRzCkBAIC00OTAsOSArNTU0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0neXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hlY2sgT3V0IFlvdXIgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgWW91ciBCcmFuY2g6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBhbmQgdGhlbiBjaGVjayBvdXQKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBicmFuY2ggYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXRlc3QgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZToKQEAgLTUxMCw3ICs1NzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIGVuc3VyZXMgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGZpbGVzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCByZWxlYXNlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgdGhlIE9wZW5FbWJlZGRlZApAQCAtNTE5LDIzICs1ODUsMTcgQEAKICAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgTGF0ZXIsIHdoZW4gdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIEJ1aWxkIERpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYWxsIHRoZSBmaWxlcyBjcmVhdGVkIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gcnVubmluZyBhIG1lbW9yeS1yZXNpZGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3VzaW5ncG9reS1jb21wb25lbnRzLWJpdGJha2UnPkJpdEJha2U8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FeGFtaW5lIFlvdXIgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIFlvdXIgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZXQgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50LCBhIGxvY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgbmFtZWQKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYmVjb21lcyBhdmFpbGFibGUgaW4KQEAgLTU4OSw3ICs2NDksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3RhcnQgdGhlIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFydCB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGJ1aWxkIGFuIE9TIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCwgd2hpY2ggaXMKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbiB0aGlzIGV4YW1wbGU6CkBAIC02NDcsNyArNzA4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNpbXVsYXRlIFlvdXIgSW1hZ2UgVXNpbmcgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2ltdWxhdGUgWW91ciBJbWFnZSBVc2luZyBRRU1VOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoaXMgcGFydGljdWxhciBpbWFnZSBpcyBidWlsdCwgeW91IGNhbiBzdGFydCBRRU1VCiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHRoZSBpbWFnZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTY1NSw5ICs3MTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgcnVubmluZyBRRU1VLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGl0IFFFTVU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEV4aXQgUUVNVSBieSBlaXRoZXIgY2xpY2tpbmcgb24gdGhlIHNodXRkb3duIGljb24gb3IgYnkKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZyA8ZmlsZW5hbWU+Q3RybC1DPC9maWxlbmFtZT4gaW4gdGhlIFFFTVUKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zY3JpcHQgd2luZG93IGZyb20gd2hpY2ggeW91IGV2b2tlZCBRRU1VLgpAQCAtNjcyLDEzICs3MzUsMTMgQEAKICAgICAgICAgICAgIDxwYXJhIGlkPSdxcy1taW5ub3dib2FyZC1leGFtcGxlJz4KICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIHNob3cgaG93IGVhc3kgaXQgaXMgdG8gc2V0IHVwIHRvIGJ1aWxkIGFuCiAgICAgICAgICAgICAgICAgaW1hZ2UgZm9yIGEgbmV3IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgVGhlc2Ugc3RlcHMgYnVpbGQgYW4gaW1hZ2UgZm9yIHRoZSBNaW5ub3dCb2FyZCBNQVgsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgVGhlc2Ugc3RlcHMgYnVpbGQgYW4gaW1hZ2UgZm9yIHRoZSBNaW5ub3dCb2FyZCBUdXJib3QsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGFuZCB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IDxmaWxlbmFtZT5pbnRlbC1jb3JlaTctNjQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+aW50ZWwtY29yZTItMzI8L2ZpbGVuYW1lPiBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzCiAgICAgICAgICAgICAgICAgKEJTUHMpLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgTWlubm93Qm9hcmQgTUFYIHNoaXBzIHdpdGggNjQtYml0IGZpcm13YXJlLgorICAgICAgICAgICAgICAgICAgICBUaGUgTWlubm93Qm9hcmQgVHVyYm90IHNoaXBzIHdpdGggNjQtYml0IGZpcm13YXJlLgogICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJvYXJkIGluIDMyLWJpdCBtb2RlLCB5b3UgbXVzdAogICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2Zpcm13YXJlLmludGVsLmNvbS9wcm9qZWN0cy9taW5ub3dib2FyZC1tYXgnPjMyLWJpdCBmaXJtd2FyZTwvdWxpbms+LgpAQCAtNjg3LDEzICs3NTAsMTUgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMb2NhbCBDb3B5IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyBhbiBpbWFnZSBmb3IgdGhlIE1pbm5vd0JvYXJkIE1BWCByZXF1aXJlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgYSBsb2NhbCBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGluIHRoaXMgZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBjZCAkSE9NRS9wb2t5CkBAIC03MTMsMTcgKzc3OCwzMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0aGF0IGJvdGggcmVwb3NpdG9yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGFyZSB1c2luZyB0aGUgc2FtZSByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgeW91IHVzZWQgdGhlIDxmaWxlbmFtZT4mRElTVFJPX1JFTF9UQUc7PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZyB3aGVuIHlvdSBjaGVja2VkIG91dCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBieSB0YWcsIHlvdSBzaG91bGQgdXNlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZyB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIHJlbGVhc2UgeW91IHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbmVlZCB0byBjaGVja291dCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4iIHJlbGVhc2UgYWZ0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb25pbmcgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Jk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjs8L2ZpbGVuYW1lPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBhZnRlciBjbG9uaW5nIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgY2QgJEhPTUUvcG9reS9tZXRhLWludGVsCi0gICAgICQgZ2l0IGNoZWNrb3V0ICZESVNUUk9fTkFNRV9OT19DQVA7Ci0gICAgIEJyYW5jaCAmRElTVFJPX05BTUVfTk9fQ0FQOyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAmRElTVFJPX05BTUVfTk9fQ0FQOyBmcm9tIG9yaWdpbi4KLSAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICcmRElTVFJPX05BTUVfTk9fQ0FQOycKKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyAtYiBtZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsKKyAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdtZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsnCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgR2l0IDxmaWxlbmFtZT5jaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2ggbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIHRoZSBvcHRpb24gdG8gbmFtZSB5b3VyIGxvY2FsIGJyYW5jaCB3aGF0ZXZlcgorICAgICAgICAgICAgICAgICAgICAgICAgeW91IHdhbnQgYnkgcHJvdmlkaW5nIGFueSBuYW1lIHlvdSBsaWtlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGEtaW50ZWwtJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyIKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhYm92ZSBleGFtcGxlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJlIHRoZSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHRoZSBCdWlsZDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZSBidWlsZCwgeW91IGVkaXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcywgYm90aCBvZiB3aGljaCBhcmUKQEAgLTc2MCwxMyArODM4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBhbiBJbWFnZSBmb3IgTWlubm93Qm9hcmQgTUFYOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBhbiBJbWFnZSBmb3IgTWlubm93Qm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIFR1cmJvdDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2YgaW1hZ2UgeW91IGJ1aWxkIGRlcGVuZHMgb24geW91ciBnb2Fscy4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgcHJldmlvdXMgYnVpbGQgY3JlYXRlZCBhCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UsIHdoaWNoIGlzIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIFNhdG8gc3VwcG9ydC4KICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkIG1hbnkgaW1hZ2UgdHlwZXMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgTWlubm93Qm9hcmQgTUFYLgorICAgICAgICAgICAgICAgICAgICAgICAgTWlubm93Qm9hcmQgVHVyYm90LgogICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwb3NzaWJpbGl0aWVzIGFyZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1iYXNlPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIGNvbnNvbGUtb25seSBpbWFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEFub3RoZXIgY2hvaWNlIGNvdWxkIGJlIGEKQEAgLTgyNiw3ICs5MDYsOCBAQAogICAgICB0bXAvZGVwbG95L2ltYWdlcy9pbnRlbC1jb3JlaTctNjQvY29yZS1pbWFnZS1iYXNlLWludGVsLWNvcmVpNy02NC53aWMKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPldyaXRlIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V3JpdGUgdGhlIEltYWdlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHdyaXRlIHRoZSBpbWFnZSBqdXN0IGJ1aWx0IHRvIGEgYm9vdGFibGUgbWVkaWEKICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIGEgVVNCIGtleSwgU0FUQSBkcml2ZSwgU0QgY2FyZCwgZXRjLikgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPiB1dGlsaXR5OgpAQCAtODQwLDkgKzkyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYvbW1jYmxrMDwvZmlsZW5hbWU+LCB3aGljaCBpcyBtb3N0IGxpa2VseSBhbgogICAgICAgICAgICAgICAgICAgICAgICAgU0QgY2FyZCkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Cb290IHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgSGFyZHdhcmU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggdGhlIGJvb3QgZGV2aWNlIHByb3Zpc2lvbmVkLCB5b3UgY2FuIGluc2VydCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhIGludG8gdGhlIE1pbm5vd0JvYXJkIE1BWCBhbmQgYm9vdCB0aGUgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYSBpbnRvIHRoZSBNaW5ub3dCb2FyZCBUdXJib3QgYW5kIGJvb3QgdGhlIGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJvYXJkIHNob3VsZCBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgbWVkaWEgYW5kIGJvb3QgdG8KICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBib290bG9hZGVyIGFuZCBzdWJzZXF1ZW50bHkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC04ODAsNjYgKzk2Miw3NiBAQAogICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoYXQgeW91IHByaW1hcnkgaW50ZXJlc3RzIGFyZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LAogICAgICAgICAgICAgeW91IGNvdWxkIGNvbnNpZGVyIGFueSBvZiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlZpc2l0IHRoZSBZb2N0byBQcm9qZWN0IFdlYiBTaXRlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmlzaXQgdGhlIFlvY3RvIFByb2plY3QgV2ViIFNpdGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlIG9mZmljaWFsCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3Q8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB3ZWIgc2l0ZSBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgZW50aXJlIHByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIFZpc2l0aW5nIHRoaXMgc2l0ZSBpcyBhIGdvb2Qgd2F5IHRvIGZhbWlsaWFyaXplIHlvdXJzZWxmCiAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG92ZXJhbGwgcHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Mb29rIFRocm91Z2ggdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGlzIGEgZ3JlYXQgcGxhY2UgdG8gZ2V0IGEgZmVlbCBmb3IgaG93IHRvIHVzZSB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1hbnVhbCBjb250YWlucyBjb25jZXB0dWFsIGFuZCBwcm9jZWR1cmFsIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgY292ZXJzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtbW9kZWwnPmNvbW1vbiBkZXZlbG9wbWVudCBtb2RlbHM8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQgaW50cm9kdWNlcwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLW5ld2JpZSc+dGhlIFlvY3RvIFByb2plY3Qgb3BlbiBzb3VyY2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQ8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1hbnVhbCBhbHNvIGNvbnRhaW5zIHNldmVyYWwgdGFyZ2V0ZWQgc2VjdGlvbnMgdGhhdAotICAgICAgICAgICAgICAgICAgICBjb3ZlciBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNleHRlbmRwb2t5Jz5jb21tb24gdGFza3M8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHVuZGVyc3RhbmRpbmcgYW5kIGNyZWF0aW5nIGxheWVycywgY3VzdG9taXppbmcKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLCB3cml0aW5nIG5ldyByZWNpcGVzLCB3b3JraW5nIHdpdGggbGlicmFyaWVzLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJpbmcgYW5kIHBhdGNoaW5nIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGNvbnRhaW5zIHByb2NlZHVyYWwgaW5mb3JtYXRpb24gZ3JvdXBlZCB0bworICAgICAgICAgICAgICAgICAgICBoZWxwIHlvdSBnZXQgc2V0IHVwLCB3b3JrIHdpdGggbGF5ZXJzLCBjdXN0b21pemUgaW1hZ2VzLAorICAgICAgICAgICAgICAgICAgICB3cml0ZSBuZXcgcmVjaXBlcywgd29yayB3aXRoIGxpYnJhcmllcywgYW5kIHVzZSBRRU1VLgorICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaXMgdGFzay1iYXNlZCBhbmQgc3BhbnMgdGhlIGJyZWFkdGggb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWludHJvJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIGJvdGggdGhlCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBkZXNjcmliZXMgaG93IHRvIHVzZSBib3RoIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstdXNpbmctdGhlLXN0YW5kYXJkLXNkayc+c3RhbmRhcmQgU0RLPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+ZXh0ZW5zaWJsZSBTREs8L3VsaW5rPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHVzZWQgcHJpbWFyaWx5IGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgYWxzbyBwcm92aWRlcyBhbiBleGFtcGxlIHdvcmtmbG93IHRoYXQgdXNlcwotICAgICAgICAgICAgICAgICAgICB0aGUgcG9wdWxhciA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPgotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgYWxzbyBwcm92aWRlcyBleGFtcGxlIHdvcmtmbG93cworICAgICAgICAgICAgICAgICAgICB0aGF0IHVzZSB0aGUgcG9wdWxhciA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPgorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgdGhhdCB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjd29ya2Zsb3ctdXNpbmctZWNsaXBzZSc+V29ya2Zsb3cgdXNpbmcgRWNsaXBzZeKEojwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4geW91ciBTREsgV29ya2Zsb3c8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVhcm4gQWJvdXQgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGhvdyB0byB3b3JrIHdpdGggdGhlIGtlcm5lbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZCBZb2N0byBMaW51eCBrZXJuZWxzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNrZXJuZWwtZGV2LWludHJvJz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhdGNoIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwsIG1vZGlmeSBrZXJuZWwgcmVjaXBlcywgYW5kIGNvbmZpZ3VyZSB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBhYm91dCBCU1BzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcCc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgYW4gZXhhbXBsZSBCU1AgY3JlYXRpb24gd29ya2Zsb3cuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPiJEZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVhcm4gQWJvdXQgVG9hc3Rlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlYXJuIEFib3V0IFRvYXN0ZXI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwogICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdXNpbmcgdGhpcyB0eXBlIG9mIGludGVyZmFjZSB0bwogICAgICAgICAgICAgICAgICAgICBjcmVhdGUgaW1hZ2VzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtaW50cm8nPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5IYXZlIEF2YWlsYWJsZSB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1tYW51YWwtaW50cm8nPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICB1bmxpa2UgdGhlIHJlc3Qgb2YgdGhlIFlvY3RvIFByb2plY3QgbWFudWFsIHNldCwgaXMKLSAgICAgICAgICAgICAgICAgICAgY29tcHJpc2VkIG9mIG1hdGVyaWFsIHN1aXRlZCBmb3IgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SGF2ZSBBdmFpbGFibGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1tYW51YWwtaW50cm8nPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDo8L3VsaW5rPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVubGlrZSB0aGUgcmVzdCBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWwgc2V0LCB0aGlzIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICBpcyBjb21wcmlzZWQgb2YgbWF0ZXJpYWwgc3VpdGVkIGZvciByZWZlcmVuY2UgcmF0aGVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcy4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5Jz5idWlsZCBkZXRhaWxzPC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIGEKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY2xvc2VyLWxvb2snPmNsb3NlciBsb29rPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2ZWxvcG1lbnQtY29uY2VwdHMnPmNsb3NlciBsb29rPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgYXQgaG93IHRoZSBwaWVjZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd29yayB0b2dldGhlciwgaW5mb3JtYXRpb24gb24gdmFyaW91cwogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZWNobmljYWwtZGV0YWlscyc+dGVjaG5pY2FsIGRldGFpbHM8L3VsaW5rPiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNDI4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5CkBAIC0wLDAgKzEsNTggQEAKK1Bva3kKKz09PT0KKworUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiBvZiB2YXJpb3VzIGNvbXBvbmVudHMgdG8gZm9ybSBhIGNvbXBsZXRlIHByZXBhY2thZ2VkCitidWlsZCBzeXN0ZW0gYW5kIGRldmVsb3BtZW50IGVudmlyb25tZW50LiBJdCBmZWF0dXJlcyBzdXBwb3J0IGZvciBidWlsZGluZworY3VzdG9taXNlZCBlbWJlZGRlZCBkZXZpY2Ugc3R5bGUgaW1hZ2VzLiBUaGVyZSBhcmUgcmVmZXJlbmNlIGRlbW8gaW1hZ2VzCitmZWF0dXJpbmcgYSBYMTEvTWF0Y2hib3gvR1RLIHRoZW1lZCBVSSBjYWxsZWQgU2F0by4gVGhlIHN5c3RlbSBzdXBwb3J0cworY3Jvc3MtYXJjaGl0ZWN0dXJlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHVzaW5nIFFFTVUgZW11bGF0aW9uIGFuZCBhCitzdGFuZGFsb25lIHRvb2xjaGFpbiBhbmQgU0RLIHdpdGggSURFIGludGVncmF0aW9uLgorCitBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSBzcGVjaWZpY3Mgb2YgaGFyZHdhcmUgdGhhdCBQb2t5IHN1cHBvcnRzCitpcyBhdmFpbGFibGUgaW4gUkVBRE1FLmhhcmR3YXJlLiBGdXJ0aGVyIGhhcmR3YXJlIHN1cHBvcnQgY2FuIGVhc2lseSBiZSBhZGRlZAoraW4gdGhlIGZvcm0gb2YgbGF5ZXJzIHdoaWNoIGV4dGVuZCB0aGUgc3lzdGVtcyBjYXBhYmlsaXRpZXMgaW4gYSBtb2R1bGFyIHdheS4KKworQXMgYW4gaW50ZWdyYXRpb24gbGF5ZXIgUG9reSBjb25zaXN0cyBvZiBzZXZlcmFsIHVwc3RyZWFtIHByb2plY3RzIHN1Y2ggYXMgCitCaXRCYWtlLCBPcGVuRW1iZWRkZWQtQ29yZSwgWW9jdG8gZG9jdW1lbnRhdGlvbiBhbmQgdmFyaW91cyBzb3VyY2VzIG9mIGluZm9ybWF0aW9uIAorZS5nLiBmb3IgdGhlIGhhcmR3YXJlIHN1cHBvcnQuIFBva3kgaXMgaW4gdHVybiBhIGNvbXBvbmVudCBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKworVGhlIFlvY3RvIFByb2plY3QgaGFzIGV4dGVuc2l2ZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBzeXN0ZW0gaW5jbHVkaW5nIGEgCityZWZlcmVuY2UgbWFudWFsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdDoKKyAgICBodHRwOi8veW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uCisKK09wZW5FbWJlZGRlZC1Db3JlIGlzIGEgbGF5ZXIgY29udGFpbmluZyB0aGUgY29yZSBtZXRhZGF0YSBmb3IgY3VycmVudCB2ZXJzaW9ucworb2YgT3BlbkVtYmVkZGVkLiBJdCBpcyBkaXN0cm8tbGVzcyAoY2FuIGJ1aWxkIGEgZnVuY3Rpb25hbCBpbWFnZSB3aXRoCitESVNUUk8gPSAibm9kaXN0cm8iKSBhbmQgY29udGFpbnMgb25seSBlbXVsYXRlZCBtYWNoaW5lIHN1cHBvcnQuCisKK0ZvciBpbmZvcm1hdGlvbiBhYm91dCBPcGVuRW1iZWRkZWQsIHNlZSB0aGUgT3BlbkVtYmVkZGVkIHdlYnNpdGU6CisgICAgaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnLworCitXaGVyZSB0byBTZW5kIFBhdGNoZXMKKz09PT09PT09PT09PT09PT09PT09PQorCitBcyBQb2t5IGlzIGFuIGludGVncmF0aW9uIHJlcG9zaXRvcnkgKGJ1aWx0IHVzaW5nIGEgdG9vbCBjYWxsZWQgY29tYm8tbGF5ZXIpLAorcGF0Y2hlcyBhZ2FpbnN0IHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgc2hvdWxkIGJlIHNlbnQgdG8gdGhlaXIgcmVzcGVjdGl2ZQordXBzdHJlYW1zOgorCitiaXRiYWtlOgorICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZS8KKyAgICBNYWlsaW5nIGxpc3Q6IGJpdGJha2UtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZworCitkb2N1bWVudGF0aW9uOgorICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS95b2N0by1kb2NzLworICAgIE1haWxpbmcgbGlzdDogeW9jdG9AeW9jdG9wcm9qZWN0Lm9yZworCittZXRhLXBva3ksIG1ldGEteW9jdG8tYnNwOgorICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLXlvY3RvKC1ic3ApCisgICAgTWFpbGluZyBsaXN0OiBwb2t5QHlvY3RvcHJvamVjdC5vcmcKKworRXZlcnl0aGluZyBlbHNlIHNob3VsZCBiZSBzZW50IHRvIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBtYWlsaW5nIGxpc3QuICBJZiBpbgorZG91YnQsIGNoZWNrIHRoZSBvZS1jb3JlIGdpdCByZXBvc2l0b3J5IGZvciB0aGUgY29udGVudCB5b3UgaW50ZW5kIHRvIG1vZGlmeS4KK0JlZm9yZSBzZW5kaW5nLCBiZSBzdXJlIHRoZSBwYXRjaGVzIGFwcGx5IGNsZWFubHkgdG8gdGhlIGN1cnJlbnQgb2UtY29yZSBnaXQKK3JlcG9zaXRvcnkuCisKKyAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlLworICAgIE1haWxpbmcgbGlzdDogb3BlbmVtYmVkZGVkLWNvcmVAbGlzdHMub3BlbmVtYmVkZGVkLm9yZworCitOb3RlOiBUaGUgc2NyaXB0cyBkaXJlY3Rvcnkgc2hvdWxkIGJlIHRyZWF0ZWQgd2l0aCBleHRyYSBjYXJlIGFzIGl0IGlzIGEgbWl4IG9mCitvZS1jb3JlIGFuZCBwb2t5LXNwZWNpZmljIGZpbGVzIGZyb20gbWV0YS1wb2t5LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2NvbmYtbm90ZXMudHh0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2NvbmYtbm90ZXMudHh0CmluZGV4IDJmMjkzMmIuLmYxYTRmNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9jb25mLW5vdGVzLnR4dAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvY29uZi1ub3Rlcy50eHQKQEAgLTEsMyArMSw4IEBACisKKyMjIyBTaGVsbCBlbnZpcm9ubWVudCBzZXQgdXAgZm9yIGJ1aWxkcy4gIyMjCisKK1lvdSBjYW4gbm93IHJ1biAnYml0YmFrZSA8dGFyZ2V0PicKKwogQ29tbW9uIHRhcmdldHMgYXJlOgogICAgIGNvcmUtaW1hZ2UtbWluaW1hbAogICAgIGNvcmUtaW1hZ2Utc2F0bwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MWM4ZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDg0MCArMCwwIEBACi0jIFlvY3RvIFByb2plY3QgLyBPcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSkgTWFpbnRhaW5lcnMgRmlsZQotIwotIyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHJlY2lwZSBtYWludGFpbmVycy4KLSMKLSMgUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHJlY2lwZXMgaW4gbWV0YSB0byB0aGUgCi0jIE9FLUNvcmUgbWFpbCBsaXN0IChvcGVuZW1iZWRkZWQtY29yZUBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKQotIyBGb3IgcmVjaXBlcyBpbiBtZXRhLXlvY3RvIHBsZWFzZSB1c2UgdGhlIFBva3kgbGlzdCAocG9reUB5b2N0b3Byb2plY3Qub3JnKQotIwotIyBJZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIG9yIHF1ZXN0aW9ucyBhYm91dCBhIHBhcnRpY3VsYXIgcmVjaXBlLCBmZWVsCi0jIGZyZWUgdG8gY29udGFjdCB0aGUgbWFpbnRhaW5lciBkaXJlY3RseSAoY2M6aW5nIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3QKLSMgcHV0cyBpdCBpbiB0aGUgYXJjaGl2ZSBhbmQgaGVscHMgb3RoZXIgcGVvcGxlIHdobyBtaWdodCBoYXZlIHRoZSBzYW1lCi0jIHF1ZXN0aW9ucyBpbiB0aGUgZnV0dXJlKSwgYnV0IHBsZWFzZSB0cnkgdG8gZG8gdGhlIGZvbGxvd2luZyBmaXJzdDoKLSMKLSMgIC0gbG9vayBpbiB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQotIyAgICAoaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvKSB0byBzZWUgaWYgYSBwcm9ibGVtIGhhcwotIyAgICBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQKLSMKLSMgLSBsb29rIHRocm91Z2ggcmVjZW50IGVudHJpZXMgb2YgdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBhcmNoaXZlcwotIyAgIChodHRwOi8vbGlzdHMubGludXh0b2dvLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUgb3IKLSMgICAgaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL3BpcGVybWFpbC9wb2t5LykgdG8gc2VlIGlmIG90aGVyCi0jICAgcGVvcGxlIGhhdmUgcnVuIGludG8gc2ltaWxhciBwcm9ibGVtcyBvciBoYWQgc2ltaWxhciBxdWVzdGlvbnMKLSMgICBhbnN3ZXJlZC4KLSMKLSMgVGhlIGZvcm1hdCBpcyBhcyBhIGJpdGJha2UgdmFyaWFibGUgb3ZlcnJpZGUgZm9yIGVhY2ggcmVjaXBlCi0jCi0jCVJFQ0lQRV9NQUlOVEFJTkVSX3BuLTxyZWNpcGUgbmFtZT4gPSAiRnVsbCBOYW1lIDxhZGRyZXNzQGRvbWFpbj4iCi0jCi0jIFBsZWFzZSBrZWVwIHRoaXMgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCi0jCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hY2wgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtbGliID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXBsdWdpbnMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2Etc3RhdGUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdG9vbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMtc2NyaXB0cyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXBtZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwci11dGlsID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHQgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0LW5hdGl2ZSA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hcmdwLXN0YW5kYWxvbmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hc2NpaWRvYyA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1jb3JlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXR0ciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2dlbi1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b21ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaS11aSA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmR3Z2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iZWVjcnlwdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaWdyZXFzcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW5kID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3Nzc2RrID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmlzb24gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJqYW0tbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdG9vbCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3RyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmx1ZXo1ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJtYXAtdG9vbHMgPSAiRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vc3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ib290Y2hhcnQyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnNkLWhlYWRlcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idHJmcy10b29scyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWFwcGxpYW5jZS1pbWFnZSA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWNvbXBhcmUgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZGVyID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ5YWNjID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iemlwMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jYS1jZXJ0aWZpY2F0ZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWlybyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbGlicmF0ZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2NhY2hlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNkcnRvb2xzLW5hdGl2ZSA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2hycGF0aCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1ndGstMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbXBvc2l0ZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xlLXRvb2xzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xla2l0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWJhc2UgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWNsdXR0ZXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Uta2VybmVsLWRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbHNiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1sc2ItZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1sc2Itc2RrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1taW5pbWFsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1taW5pbWFsLWRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXJ0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1ydC1zZGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXNhdG8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXNhdG8tZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXRlc3RtYXN0ZXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS13ZXN0b24gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXgxMSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmV1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3BpbyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyYWNrbGliID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyZWF0ZXJlcG8gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb25pZSA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbGludXggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtY2hlY2stdG9vbCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN3YXV0b21hY3JvcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kYW1hZ2Vwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRiID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLWdsaWIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtdGVzdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy13YWl0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kZWJpYW51dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZ1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGlyZWN0ZmIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiLWV4YW1wbGVzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpc3RjYy1jb25maWcgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kbWlkZWNvZGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kbXhwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvY2Jvb2steG1sLWR0ZDQgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvc2ZzdG9vbHMgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kcGtnID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTJwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTNwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyb3BiZWFyID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHRjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZTJmc3Byb2dzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWVlLWFjcGktc2NyaXB0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby1mYiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8teDExID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWZpbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV0aHRvb2wgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwYXQgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mZm1wZWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1maWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbmR1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZml4ZXNwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsYWMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsZXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LXV0aWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udHNwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvb21hdGljLWZpbHRlcnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mc3Rlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZnRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2F3ayA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGsgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGstaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1ydW50aW1lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RibSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQtbWluaW1hbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2hvc3RzY3JpcHQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdpdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGV3ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLW5ldHdvcmtpbmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1sb2NhbGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1tdHJhY2UgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1zY3JpcHRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWNvbW1vbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZG9jLXV0aWxzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXBnID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnV0bHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ29iamVjdC1pbnRyb3NwZWN0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BlcmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncGdtZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3B0ZmRpc2sgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncmVwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW5pc0BkZW5peC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JvZmYgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViLWVmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtcGxheWVyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1saWJhdiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtb214ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKzMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWVuZ2luZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstc2F0by1lbmdpbmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsdC1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VtbWlib290ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3ppcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oZHBhcm0gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbmlzQGRlbml4Lm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oZWxwMm1hbi1uYXRpdmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhpY29sb3ItaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1od2xhdGRldGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWkyYy10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljb24tbmFtaW5nLXV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdC1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtYm9vdCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1mcmFtZXdvcmsgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlucHV0cHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnRsdG9vbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwcm91dGUyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdGFibGVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taXJkYS11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pdyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqcGVnLXR1cmJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tYyA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tZ2xpYiA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWticHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rY29uZmlnLWZyb250ZW5kcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbHNoYXJrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2VybmVsLWRldnNyYyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXhlYy10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXltYXBzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWwzYWZwYWQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sYW1lID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sYXRlbmN5dG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGRjb25maWctbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhNTIgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFjcGkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWlvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJjaGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXNzdWFuID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF0b21pYy1vcHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJic2QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcC1uZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjZ3JvdXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjbGFzcy1pc2EtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjcm9jbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRhZW1vbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRteCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRybSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmR1bXB2YWx1ZS1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVudi1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXJhdGlvbi1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVycm9yLXBlcmwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmVudCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV4aWYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmYWtla2V5ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmlsZS1jaGVja3RyZWUtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtLWV4dHJhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm9udGVuYyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NyeXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnZm9ydHJhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsYWRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3BnLWVycm9yID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJndWRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmkxOG4tY29sbGF0ZS1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNvbnYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZDN0YWcgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlucHV0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianNvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmtzYmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtYXRjaGJveCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1wYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QtcHl0aG9uID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZnNpZG1hcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJubCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5vdGlmeSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zcy1tZG5zID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib2dnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9teGlsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm93bCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBhbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2FwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjaWFjY2VzcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZTIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGZtNCA9ICJNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcxMiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwb2QtcGxhaW5lci1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnB0aHJlYWQtc3R1YnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyc3ZnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2FtcGxlcmF0ZTAgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNlY3JldCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNtID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic25kZmlsZTEgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvbHYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic291cC0yLjQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aGVvcmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aW1lZGF0ZS1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpcnBjID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1jcm9zcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2ItY29tcGF0ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiMSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzZXIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExLWRpZXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4YXUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2FsaWJyYXRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNiID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNvbXBvc2l0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjdXJzb3IgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZGFtYWdlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRtY3AgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZXh0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZpeGVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZvbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpbmVyYW1hID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiY29tbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiZmlsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBhcnNlci1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtYmFzZS1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sMiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG11ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHBtID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJhbmRyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlbmRlciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2NybnNhdmVyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzaG1mZW5jZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzbHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0c3QgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4diA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh2bWMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NmRnYSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2bWlzYyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2dm0gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ5YW1sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlnaHR0cGQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1kdW1teSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWZpcm13YXJlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtbGliYy1oZWFkZXJzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLWRldiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1ydCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by10aW55ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxvZ3JvdGF0ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYmluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNidGVzdCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzb2YgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHRwID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctbW9kdWxlcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy10b29scyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy11c3QgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHo0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHpvID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHpvcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW00ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW00LW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWlseCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2VkZXBlbmQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZWRldnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLXBhZ2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1jID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1kYWRtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1kZW1vcyA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZ2wgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQtZXh0c2RrID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZXh0c2RrLXRvb2xjaGFpbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWlkZS1zdXBwb3J0ID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS10b29sY2hhaW4gPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLXdvcmxkLXBrZ2RhdGEgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluZ2V0dHkgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaS14LXNlc3Npb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZWxmaW1hZ2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRkaXIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRzY2FsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rbGlicy1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWt0ZW1wID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGVnMmRlYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZnIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGcxMjMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tc210cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZC11dGlscyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW11c2wgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1teC0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXNtID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWxpYnRvb2wgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1xZW11LWhlbHBlciA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0ID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5jdXJzZXMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5lYXJkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5lb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0LXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldGJhc2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0dGxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLWV4cG9ydC1yb290ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy11dGlscyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5wdGggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3ByID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MtbXlob3N0bmFtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vZm9ubyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vaC1wdXp6bGVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzaCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2ctYXJjaC1jb25maWcgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLWtleXJpbmdzID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy11dGlscyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wcm9maWxlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3JjID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9zLXJlbGVhc2UgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vc3NwLXV1aWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wMTEta2l0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZS1pbmRleCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1iYXNlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtYm9vdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtY2x1dHRlciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWRldmljZS1kZXZlbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWRpcmVjdGZiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtZWNsaXBzZS1kZWJ1ZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWxzYiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLW5mcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXNkayA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXNzaC1kcm9wYmVhciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtZGVidWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS14MTEgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS14MTEtYmFzZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUteDExLXhzZXJ2ZXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhcnRlZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoZWxmID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4LXV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYnppcDIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGNpdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWFuZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21jaWF1dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJmID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybC1uYXRpdmUgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXh6ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBtLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3B0ID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9ydG1hcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3dlcnRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHBwLWRpYWxpbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlbGluayA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlc2VudHByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHJvY3BzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHNldWRvID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wc21pc2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wc3BsYXNoID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1hc3luYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWRpc3RyaWJ1dGUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXRkYiA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWltYWdpbmcgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1tYWtvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbnVtcHkgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcGV4cGVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB0eXByb2Nlc3MgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljdXJsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlndGsgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weXJleCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zaXggPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zbWFydHBtID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc21tYXAgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1hc3luYyA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXRkYiA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1udW1weSA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcGlwID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWdvYmplY3QgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNldHVwdG9vbHMgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNpeCA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc21tYXAgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11ID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcXVvdGEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmFuZHJwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlYWRsaW5lID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZWNvcmRwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZW5kZXJwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc29sdmNvbmYgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc291cmNlcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZ2IgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ycGNiaW5kID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ybmctdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG1yZXNvbHZlID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yc3luYyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydC10ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydW4tcG9zdGluc3RzID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnh2dC11bmljb2RlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1pY29uLXRoZW1lID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNhdG8tc2NyZWVuc2hvdCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNiYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2NyZWVuID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcm5zYXZlcnByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2VkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXJmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHNlcmlhbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3cgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zZWN1cmV0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zeXNyb290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFyZWQtbWltZS1pbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNpZ25pbmcta2V5cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zb2NhdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc291cmNlLWhpZ2hsaWdodCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNwZWV4ID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleGRzcCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3FsaXRlMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zcXVhc2hmcy10b29scyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGFydHVwLW5vdGlmaWNhdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmFjZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJlc3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3VidmVyc2lvbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdWRvID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2FiYmVyLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3aWcgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNwcm9mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3RjaGFydCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1jb21wYXQtdW5pdHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc2VyaWFsZ2V0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwLXVwcm9iZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0LWluaXR0YWIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10YWdsaWIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGFyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGNwLXdyYXBwZXJzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRlc3RleHBvcnQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpMmh0bWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbWUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGlueS1pbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHJhY2UtY21kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHJlbW9yID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10c2xpYiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6Y29kZS1uYXRpdmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHpkYXRhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdCA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1mdy11dGlscyA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1ta2ltYWdlID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdWJvb3RjaGFydCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVkZXYtZXh0cmFjb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pZmRlZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaW5hdGl2ZS10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuemlwID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXBkYXRlLXJjLmQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11c2Jpbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXNidXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLWxpbnV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLW1hY3JvcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXY4NmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsZ3JpbmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12aWRlb3Byb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdm9sYXRpbGUtYmluZHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2ctY29uZmlnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2F5bGFuZCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQtcHJvdG9jb2xzID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW5pc0BkZW5peC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW5pc0BkZW5peC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uLWluaXQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbmlzQGRlbml4Lm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13Z2V0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2lyZWxlc3MtdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td3BhLXN1cHBsaWNhbnQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teDExLWNvbW1vbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14MjY0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGF1dGggPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWltYWdlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwta2V5c3ltcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXJlbmRlcnV0aWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjbWlzY3Byb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGN1cnNvci10cmFuc3BhcmVudC10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkcHlpbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGV4dHByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGV5ZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWV2ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1rZXlib2FyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbGliaW5wdXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LW1vdXNlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1zeW5hcHRpY3MgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXZtbW91c2UgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWNpcnJ1cyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWludGVsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1vbWFwID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLXZlc2EgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkZ2Fwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkcmlwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZtaXNjcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2dmlkbW9kZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGhvc3QgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5lcmFtYXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXRkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbml0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0LWNhbGlicmF0b3IgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14a2Jjb21wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGtleWJvYXJkLWNvbmZpZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhtbHRvID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14bW9kbWFwID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teG9yZy1taW5pbWFsLWZvbnRzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3AgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cmFuZHIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cmVzdG9wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci1ub2RtLWluaXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhmODYtY29uZmlnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNldCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0cmFucyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0c2NhbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh1c2VyLWFjY291bnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dmlkZW8tdGVzdHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHZpbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHdpbmluZm8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14eiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXlhc20gPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi16aXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi16aXNvZnMtdG9vbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4temxpYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LXdvcmxkLWV4Y2x1ZGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktd29ybGQtZXhjbHVkZS5pbmMKaW5kZXggYTY2MzViNi4uMWEyZGVhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktd29ybGQtZXhjbHVkZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktd29ybGQtZXhjbHVkZS5pbmMKQEAgLTIsNyArMiwzIEBACiAjIFRoaW5ncyB3ZSBleGx1ZGUgZnJvbXcgd29ybGQgdGVzdGluZyB3aXRoaW4gdGhlIHJlZmVyZW5jZSBkaXN0cm8KICMKIAotIyBxd3QgZnJvbSBtZXRhLXF0NCwgaGFzIHBva3ktbHNiIFFBIHdhcm5pbmdzLCBxdDQgZm9yIGxzYiBvbmx5Ci1FWENMVURFX0ZST01fV09STERfcG4tcXd0ID0gIjEiCi0jIHB5dGhvbi1weXF0IGZyb20gbWV0YS1xdDQgcmVxdWlyZXMgc2lwIGZyb20gbWV0YS1vZQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXB5dGhvbi1weXF0ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKaW5kZXggZTdkNjk5NS4uMjRjZmIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgpAQCAtMTIsNCArMTIsNCBAQAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKICMgVXNlIHRoZSBMVFNJIEtlcm5lbCBmb3IgTFNCIFRlc3RpbmcKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC4xJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC45JSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCmluZGV4IDU2MTU2NmUuLjIwMzJiZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LXRpbnkuY29uZgpAQCAtMzgsNyArMzgsNyBAQAogIyBEaXN0cm8gY29uZmlnIGlzIGV2YWx1YXRlZCBhZnRlciB0aGUgbWFjaGluZSBjb25maWcsIHNvIHdlIGhhdmUgdG8gZXhwbGljaXRseQogIyBzZXQgdGhlIGtlcm5lbCBwcm92aWRlciB0byBvdmVycmlkZSBhIG1hY2hpbmUgY29uZmlnLgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LXlvY3RvLXRpbnkiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0by10aW55ID89ICI0LjklIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC4xMiUiCiAKICMgV2UgY2FuIHVzZSBwYWNrYWdlZ3JvdXAtY29yZS1ib290LCBidXQgaW4gdGhlIGZ1dHVyZSB3ZSBtYXkgbmVlZCBhIG5ldyBwYWNrYWdlZ3JvdXAtY29yZS10aW55CiAjUE9LWV9ERUZBVUxUX0VYVFJBX1JERVBFTkRTICs9ICJwYWNrYWdlZ3JvdXAtY29yZS1ib290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgppbmRleCA2MjFkODQ1Li41N2QwMGJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgpAQCAtMSw3ICsxLDcgQEAKIERJU1RSTyA9ICJwb2t5IgogRElTVFJPX05BTUUgPSAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIKLURJU1RST19WRVJTSU9OID0gIjIuMy4zIgotRElTVFJPX0NPREVOQU1FID0gInB5cm8iCitESVNUUk9fVkVSU0lPTiA9ICIyLjQuMiIKK0RJU1RST19DT0RFTkFNRSA9ICJyb2NrbyIKIFNES19WRU5ET1IgPSAiLXBva3lzZGsiCiBTREtfVkVSU0lPTiA6PSAiJHtAJyR7RElTVFJPX1ZFUlNJT059Jy5yZXBsYWNlKCdzbmFwc2hvdC0ke0RBVEV9Jywnc25hcHNob3QnKX0iCiAKQEAgLTE1LDE5ICsxNSwxMyBAQAogU0RLX1ZFUlNJT05bdmFyZGVwc2V4Y2x1ZGVdID0gIkRBVEUiCiAKICMgT3ZlcnJpZGUgdGhlc2UgaW4gcG9reSBiYXNlZCBkaXN0cm9zCi1QT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTID0gImxhcmdlZmlsZSBvcGVuZ2wgcHRlc3QgbXVsdGlhcmNoIHdheWxhbmQiCitQT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTID0gImxhcmdlZmlsZSBvcGVuZ2wgcHRlc3QgbXVsdGlhcmNoIHdheWxhbmQgdnVsa2FuIgogUE9LWV9ERUZBVUxUX0VYVFJBX1JERVBFTkRTID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QiCiBQT0tZX0RFRkFVTFRfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZS1hZi1wYWNrZXQiCiAKIERJU1RST19GRUFUVVJFUyA/PSAiJHtESVNUUk9fRkVBVFVSRVNfREVGQVVMVH0gJHtESVNUUk9fRkVBVFVSRVNfTElCQ30gJHtQT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTfSIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTAlIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXg4NiA/PSAiNC4xMCUiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11eDg2LTY0ID89ICI0LjEwJSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXVhcm0gPz0gIjQuMTAlIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdW1pcHMgPz0gIjQuMTAlIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdW1pcHM2NCA/PSAiNC4xMCUiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11cHBjID89ICI0LjEwJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEyJSIKIAogU0RLX05BTUUgPSAiJHtESVNUUk99LSR7VENMSUJDfS0ke1NES19BUkNIfS0ke0lNQUdFX0JBU0VOQU1FfS0ke1RVTkVfUEtHQVJDSH0iCiBTREtQQVRIID0gIi9vcHQvJHtESVNUUk99LyR7U0RLX1ZFUlNJT059IgpAQCAtNDUsNyArMzksNyBAQAogCiBUQ0xJQkNBUFBFTkQgPSAiIgogCi1RRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIHBwYyB4ODZfNjQiCitRRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIG5pb3MyIHBwYyB4ODZfNjQiCiAjIE90aGVyIFFFTVVfVEFSR0VUUyAic2g0IgogCiBQUkVNSVJST1JTID8/PSAiXApAQCAtNzIsMjAgKzY2LDI0IEBACiBTQU5JVFlfVEVTVEVEX0RJU1RST1MgPz0gIiBcCiAgICAgICAgICAgICBwb2t5LTIuMiBcbiBcCiAgICAgICAgICAgICBwb2t5LTIuMyBcbiBcCisgICAgICAgICAgICBwb2t5LTIuNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTUuMDQgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE2LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4xMCBcbiBcCisgICAgICAgICAgICB1YnVudHUtMTcuMDQgXG4gXAogICAgICAgICAgICAgZmVkb3JhLTI0IFxuIFwKICAgICAgICAgICAgIGZlZG9yYS0yNSBcbiBcCisgICAgICAgICAgICBmZWRvcmEtMjYgXG4gXAogICAgICAgICAgICAgY2VudG9zLTcgXG4gXAogICAgICAgICAgICAgZGViaWFuLTggXG4gXAorICAgICAgICAgICAgZGViaWFuLTkgXG4gXAogICAgICAgICAgICAgb3BlbnN1c2UtNDIuMSBcbiBcCiAgICAgICAgICAgICBvcGVuc3VzZS00Mi4yIFxuIFwKICAgICAgICAgICAgICIKICMKLSMgT0VMQVlPVVRfQUJJIGFsbG93cyB1cyB0byBub3RpZnkgdXNlcnMgd2hlbiB0aGUgZm9ybWF0IG9mIFRNUERJUiBjaGFuZ2VzIGluIAorIyBPRUxBWU9VVF9BQkkgYWxsb3dzIHVzIHRvIG5vdGlmeSB1c2VycyB3aGVuIHRoZSBmb3JtYXQgb2YgVE1QRElSIGNoYW5nZXMgaW4KICMgYW4gaW5jb21wYXRpYmxlIHdheS4gU3VjaCBjaGFuZ2VzIHNob3VsZCB1c3VhbGx5IGJlIGRldGFpbGVkIGluIHRoZSBjb21taXQKLSMgdGhhdCBicmVha3MgdGhlIGZvcm1hdCBhbmQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZGlzY3Vzc2VkIG9uIHRoZSBtYWlsaW5nIGxpc3QgCisjIHRoYXQgYnJlYWtzIHRoZSBmb3JtYXQgYW5kIGhhdmUgYmVlbiBwcmV2aW91c2x5IGRpc2N1c3NlZCBvbiB0aGUgbWFpbGluZyBsaXN0CiAjIHdpdGggZ2VuZXJhbCBhZ3JlZW1lbnQgZnJvbSB0aGUgY29yZSB0ZWFtLgogIwogT0VMQVlPVVRfQUJJID0gIjEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgppbmRleCA4YjdiMzNkLi4yNmQ3YzNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw2ICs5LDggQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG8gPSAiNSIKIAorTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvID0gInJvY2tvIgorCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl95b2N0byA9ICIzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCmluZGV4IDMwNGVlMDEuLjlhNTYwZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKQEAgLTE0OSw3ICsxNDksNiBAQAogIyAgIC0gJ2J1aWxkc3RhdHMnIGNvbGxlY3QgYnVpbGQgc3RhdGlzdGljcwogIyAgIC0gJ2ltYWdlLW1rbGlicycgdG8gcmVkdWNlIHNoYXJlZCBsaWJyYXJ5IGZpbGVzIHNpemUgZm9yIGFuIGltYWdlCiAjICAgLSAnaW1hZ2UtcHJlbGluaycgaW4gb3JkZXIgdG8gcHJlbGluayB0aGUgZmlsZXN5c3RlbSBpbWFnZQotIyAgIC0gJ2ltYWdlLXN3YWInIHRvIHBlcmZvcm0gaG9zdCBzeXN0ZW0gaW50cnVzaW9uIGRldGVjdGlvbgogIyBOT1RFOiBpZiBsaXN0aW5nIG1rbGlicyAmIHByZWxpbmsgYm90aCwgdGhlbiBtYWtlIHN1cmUgbWtsaWJzIGlzIGJlZm9yZSBwcmVsaW5rCiAjIE5PVEU6IG1rbGlicyBhbHNvIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBmb3IgYSBnaXZlbiBpbWFnZSwgc2VlIGxvY2FsLmNvbmYuZXh0ZW5kZWQKIFVTRVJfQ0xBU1NFUyA/PSAiYnVpbGRzdGF0cyBpbWFnZS1ta2xpYnMgaW1hZ2UtcHJlbGluayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgppbmRleCBhODQ3Yjc4Li4yYTcxODk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC04LDMgKzgsNSBAQAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJzZWxmdGVzdCIKIEJCRklMRV9QQVRURVJOX3NlbGZ0ZXN0ID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfc2VsZnRlc3QgPSAiNSIKKworTEFZRVJTRVJJRVNfQ09NUEFUX3NlbGZ0ZXN0ID0gInJvY2tvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvZmlsZXMvc2lnbmluZy9rZXkucGFzc3BocmFzZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3NpZ25pbmcva2V5LnBhc3NwaHJhc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI3MWE1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3NpZ25pbmcva2V5LnBhc3NwaHJhc2UKQEAgLTAsMCArMSBAQAordGVzdDEyMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvZmlsZXMvc3RhdGljLWdyb3VwIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvZmlsZXMvc3RhdGljLWdyb3VwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMTNiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9maWxlcy9zdGF0aWMtZ3JvdXAKQEAgLTAsMCArMSwxNCBAQAorbWVzc2FnZWJ1czp4OjUwMDoKK3N5c3RlbWQtYnVzLXByb3h5Ong6NTAxOgorc3lzdGVtZC1uZXR3b3JrOng6NTAyOgorc3lzdGVtZC1yZXNvbHZlOng6NTAzOgorc3lzdGVtZC10aW1lc3luYzp4OjUwNDoKK3BvbGtpdGQ6eDo1MDU6Citsb2NrOng6NTA2Ogorc3lzdGVtZC1qb3VybmFsOng6NTA3OgorbmV0ZGV2Ong6NTA4OgorYXZhaGk6eDo1MDk6CithdmFoaS1hdXRvaXBkOng6NTEwOgorcnBjOng6NTExOgorcnBjdXNlcjp4OjUxMzoKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvZmlsZXMvc3RhdGljLXBhc3N3ZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3N0YXRpYy1wYXNzd2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyZjg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3N0YXRpYy1wYXNzd2QKQEAgLTAsMCArMSwxMSBAQAorbWVzc2FnZWJ1czp4OjUwMDo1MDA6Oi92YXIvbGliL2RidXM6L2Jpbi9mYWxzZQorc3lzdGVtZC1idXMtcHJveHk6eDo1MDE6NTAxOjovOi9iaW4vbm9sb2dpbgorc3lzdGVtZC1uZXR3b3JrOng6NTAyOjUwMjo6LzovYmluL25vbG9naW4KK3N5c3RlbWQtcmVzb2x2ZTp4OjUwMzo1MDM6Oi86L2Jpbi9ub2xvZ2luCitzeXN0ZW1kLXRpbWVzeW5jOng6NTA0OjUwNDo6LzovYmluL25vbG9naW4KK3BvbGtpdGQ6eDo1MDU6NTA1OjovOi9iaW4vbm9sb2dpbgorYXZhaGk6eDo1MDk6NTA5OjovOi9iaW4vbm9sb2dpbgorYXZhaGktYXV0b2lwZDp4OjUxMDo1MTA6Oi86L2Jpbi9ub2xvZ2luCitycGM6eDo1MTE6NTExOjovOi9iaW4vbm9sb2dpbgorZGlzdGNjOng6NTEyOm5vZ3JvdXA6Oi86L2Jpbi9ub2xvZ2luCitycGN1c2VyOng6NTEzOjUxMzo6L3Zhci9saWIvbmZzOi9iaW4vbm9sb2dpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmZfcnVudGltZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFjNTBlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkKQEAgLTAsMCArMSw0NyBAQAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2VzLmRuZiBpbXBvcnQgRG5mVGVzdAorZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCisKK2NsYXNzIERuZlNlbGZ0ZXN0KERuZlRlc3QpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgICAgIGNscy50ZW1wX2RpciA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9Im9lcWEtcmVtb3RlZmVlZHMtIikKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uob3MucGF0aC5qb2luKGNscy50Yy50ZFsnV09SS0RJUiddLCAnb2Utcm9vdGZzLXJlcG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXApCisgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RvcCgpCisgICAgICAgIGNscy50ZW1wX2Rpci5jbGVhbnVwKCkKKworICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZkJhc2ljVGVzdC50ZXN0X2RuZl9oZWxwJ10pCisgICAgZGVmIHRlc3RfdmVyaWZ5X3BhY2thZ2VfZmVlZHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBjb3JyZWN0IHNldHRpbmcgb2YgUEFDS0FHRV9GRUVEX1VSSVMgdmFyCisgICAgICAgIEV4cGVjdGVkOiAxLiBGZWVkcyB3ZXJlIGNvcnJlY3RseSBzZXQgZm9yIGRuZgorICAgICAgICAgICAgICAgICAgMi4gVXBkYXRlIHJlY292ZXJzIHBhY2thZ2VzIGZyb20gaG9zdCdzIHJlcG8KKyAgICAgICAgQXV0aG9yOiBIdW1iZXJ0byBJYmFycmEgPGh1bWJlcnRvLmliYXJyYS5sb3BlekBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2hlbiB3ZSBjcmVhdGVkIGFuIGltYWdlLCB3ZSBoYWQgdG8gc3VwcGx5IGZha2UgaXAgYW5kIHBvcnQKKyAgICAgICAgIyBmb3IgdGhlIGZlZWRzLiBOb3cgd2UgY2FuIHBhdGNoIHRoZSByZWFsIG9uZXMgaW50byB0aGUgY29uZmlnIGZpbGUuCisgICAgICAgIHRlbXBfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLm5hbWUsICd0bXAucmVwbycpCisgICAgICAgIHNlbGYudGMudGFyZ2V0LmNvcHlGcm9tKCIvZXRjL3l1bS5yZXBvcy5kL29lLXJlbW90ZS1yZXBvLnJlcG8iLCB0ZW1wX2ZpbGUpCisgICAgICAgIGZpeGVkX2NvbmZpZyA9IG9wZW4odGVtcF9maWxlLCAiciIpLnJlYWQoKS5yZXBsYWNlKCJib2d1c19pcCIsIHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCkucmVwbGFjZSgiYm9ndXNfcG9ydCIsIHN0cihzZWxmLnJlcG9fc2VydmVyLnBvcnQpKQorICAgICAgICB3aXRoIG9wZW4odGVtcF9maWxlLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGZpeGVkX2NvbmZpZykKKyAgICAgICAgc2VsZi50Yy50YXJnZXQuY29weVRvKHRlbXBfZmlsZSwgIi9ldGMveXVtLnJlcG9zLmQvb2UtcmVtb3RlLXJlcG8ucmVwbyIpCisKKyAgICAgICAgaW1wb3J0IHJlCisgICAgICAgICMgVXNlICcteScgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlOiBhdXRvbWF0aWNhbGx5IGltcG9ydCB0aGUgZmVlZCBzaWduaW5nIGtleQorICAgICAgICBvdXRwdXRfbWFrZWNhY2hlID0gc2VsZi5kbmYoJy12eSBtYWtlY2FjaGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociIuKkZhaWxlZCB0byBzeW5jaHJvbml6ZSBjYWNoZSIsIG91dHB1dF9tYWtlY2FjaGUsIHJlLkRPVEFMTCkgaXMgTm9uZSwgbXNnID0gImRuZiBtYWtlY2FjaGUgZmFpbGVkIHRvIHN5bmNocm9uaXplIHJlcG86ICVzIiAlKG91dHB1dF9tYWtlY2FjaGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociIuKk1ldGFkYXRhIGNhY2hlIGNyZWF0ZWQiLCBvdXRwdXRfbWFrZWNhY2hlLCByZS5ET1RBTEwpIGlzIG5vdCBOb25lLCBtc2cgPSAiZG5mIG1ha2VjYWNoZSBmYWlsZWQ6ICVzIiAlKG91dHB1dF9tYWtlY2FjaGUpKQorCisgICAgICAgIG91dHB1dF9yZXBvaW5mbyA9IHNlbGYuZG5mKCctdiByZXBvaW5mbycpCisgICAgICAgIG1hdGNob2JqID0gcmUubWF0Y2gociIuKlJlcG8tcGtnc1xzKjpccyooP1A8bl9wa2dzPlswLTldKykiLCBvdXRwdXRfcmVwb2luZm8sIHJlLkRPVEFMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNob2JqIGlzIG5vdCBOb25lLCBtc2cgPSAiQ291bGQgbm90IGZpbmQgdGhlIGFtb3VudCBvZiBwYWNrYWdlcyBpbiBkbmYgcmVwb2luZm8gb3V0cHV0OiAlcyIgJShvdXRwdXRfcmVwb2luZm8pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW50KG1hdGNob2JqLmdyb3VwKCduX3BrZ3MnKSkgPiAwLCBtc2cgPSAiQW1vdW50IG9mIHJlbW90ZSBwYWNrYWdlcyBpcyBub3QgbW9yZSB0aGFuIHplcm86ICVzXG4iICUob3V0cHV0X3JlcG9pbmZvKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc2VsZnRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NlbGZ0ZXN0LnB5CmluZGV4IGU0OTg1YTYuLjE5ZGU3NDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc2VsZnRlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9zZWxmdGVzdC5weQpAQCAtMSw3ICsxLDUgQEAKIGZyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwotZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZXMuZG5mIGltcG9ydCBEbmZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKIAogY2xhc3MgU2VsZnRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgogCkBAIC0zMSw0MyArMjksMyBAQAogCiAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnRhcmdldC5ydW4oInNvY2F0IC1WIikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsIG1zZz0ic29jYXQgaXMgc3RpbGwgaW5zdGFsbGVkIikKLQotCi1jbGFzcyBEbmZTZWxmdGVzdChEbmZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9zLnBhdGguam9pbihjbHMudGMudGRbJ1dPUktESVInXSwgJ29lLXJvb3Rmcy1yZXBvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQotCi0gICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQotICAgIGRlZiB0ZXN0X3ZlcmlmeV9wYWNrYWdlX2ZlZWRzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgY29ycmVjdCBzZXR0aW5nIG9mIFBBQ0tBR0VfRkVFRF9VUklTIHZhcgotICAgICAgICBFeHBlY3RlZDogMS4gRmVlZHMgd2VyZSBjb3JyZWN0bHkgc2V0IGZvciBkbmYKLSAgICAgICAgICAgICAgICAgIDIuIFVwZGF0ZSByZWNvdmVycyBwYWNrYWdlcyBmcm9tIGhvc3QncyByZXBvCi0gICAgICAgIEF1dGhvcjogSHVtYmVydG8gSWJhcnJhIDxodW1iZXJ0by5pYmFycmEubG9wZXpAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICAjIFdoZW4gd2UgY3JlYXRlZCBhbiBpbWFnZSwgd2UgaGFkIHRvIHN1cHBseSBmYWtlIGlwIGFuZCBwb3J0Ci0gICAgICAgICMgZm9yIHRoZSBmZWVkcy4gTm93IHdlIGNhbiBwYXRjaCB0aGUgcmVhbCBvbmVzIGludG8gdGhlIGNvbmZpZyBmaWxlLgotICAgICAgICBpbXBvcnQgdGVtcGZpbGUKLSAgICAgICAgdGVtcF9maWxlID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0ib2VxYS1yZW1vdGVmZWVkcy0iKS5uYW1lCi0gICAgICAgIHNlbGYudGMudGFyZ2V0LmNvcHlGcm9tKCIvZXRjL3l1bS5yZXBvcy5kL29lLXJlbW90ZS1yZXBvLnJlcG8iLCB0ZW1wX2ZpbGUpCi0gICAgICAgIGZpeGVkX2NvbmZpZyA9IG9wZW4odGVtcF9maWxlLCAiciIpLnJlYWQoKS5yZXBsYWNlKCJib2d1c19pcCIsIHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCkucmVwbGFjZSgiYm9ndXNfcG9ydCIsIHN0cihzZWxmLnJlcG9fc2VydmVyLnBvcnQpKQotICAgICAgICBvcGVuKHRlbXBfZmlsZSwgInciKS53cml0ZShmaXhlZF9jb25maWcpCi0gICAgICAgIHNlbGYudGMudGFyZ2V0LmNvcHlUbyh0ZW1wX2ZpbGUsICIvZXRjL3l1bS5yZXBvcy5kL29lLXJlbW90ZS1yZXBvLnJlcG8iKQotCi0gICAgICAgIGltcG9ydCByZQotICAgICAgICBvdXRwdXRfbWFrZWNhY2hlID0gc2VsZi5kbmYoJ21ha2VjYWNoZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIi4qTWV0YWRhdGEgY2FjaGUgY3JlYXRlZCIsIG91dHB1dF9tYWtlY2FjaGUsIHJlLkRPVEFMTCkgaXMgbm90IE5vbmUsIG1zZyA9ICJkbmYgbWFrZWNhY2hlIGZhaWxlZDogJXMiICUob3V0cHV0X21ha2VjYWNoZSkpCi0KLSAgICAgICAgb3V0cHV0X3JlcG9pbmZvID0gc2VsZi5kbmYoJ3JlcG9pbmZvJykKLSAgICAgICAgbWF0Y2hvYmogPSByZS5tYXRjaChyIi4qUmVwby1wa2dzXHMqOlxzKig/UDxuX3BrZ3M+WzAtOV0rKSIsIG91dHB1dF9yZXBvaW5mbywgcmUuRE9UQUxMKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hvYmogaXMgbm90IE5vbmUsIG1zZyA9ICJDb3VsZCBub3QgZmluZCB0aGUgYW1vdW50IG9mIHBhY2thZ2VzIGluIGRuZiByZXBvaW5mbyBvdXRwdXQ6ICVzIiAlKG91dHB1dF9yZXBvaW5mbykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnQobWF0Y2hvYmouZ3JvdXAoJ25fcGtncycpKSA+IDAsIG1zZyA9ICJBbW91bnQgb2YgcmVtb3RlIHBhY2thZ2VzIGlzIG5vdCBtb3JlIHRoYW4gemVybzogJXNcbiIgJShvdXRwdXRfcmVwb2luZm8pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZXh0ZXJuYWwtbGF5ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9leHRlcm5hbC1sYXllci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWIxYWZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZXh0ZXJuYWwtbGF5ZXIucHkKQEAgLTAsMCArMSwxNiBAQAorI2Zyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Citmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCisjZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCisKKworY2xhc3MgSW1wb3J0ZWRUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdW5jb25kaXRpb25hbF9wYXNzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogRG9lc24ndCBjaGVjayBhbnl0aGluZywgdXNlZCB0byBjaGVjayBpbXBvcnQgdGVzdCBmcm9tIG90aGVyIGxheWVycy4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIFBhc3MgdW5jb25kaXRpb25hbGx5CisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbQorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIFRydWUsIG1zZyA9ICJJbXBvc3NpYmxlIHRvIGZhaWwgdGhpcyB0ZXN0IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1wYXRjaC1nei5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1wYXRjaC1nei5iYgppbmRleCBlNDVlZTlmLi5mYzM3OTk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtcGF0Y2gtZ3ouYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LXBhdGNoLWd6LmJiCkBAIC02LDYgKzYsNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveHJlc3RvcC94cmVzdG9wLTAuNC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcmVhZG1lLnBhdGNoLmd6IFwKICAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS94cmVzdG9wLTAuNCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QxXzEuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QxXzEuNS4zLmJiCmluZGV4IDQwNDliZTIuLjMzM2VjYWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDFfMS41LjMuYmIKQEAgLTQsNiArNCw4IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3NvdXJjZXMvcHYtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtbm90ZS1saW5lLXRvLXRoZS1xdWljay1yZWZlcmVuY2UucGF0Y2giCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3B2LnNodG1sIgorUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVGhpcyByZWNpcGUgaXMgdXNlZCB0byB0ZXN0IGRldnRvb2wgdXBncmFkZSBmZWF0dXJlIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiOTM2NWQ4NmJkODg0MjIyYjRiZjEwMzliNWE5ZWQxYmQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgxYmNjYTk3ODRiZjNjYjIyMDdlNjgyMzZkMWY2OGUyYWE3YjgwZjk5OWI1NzUwZGM3N2RjZDc1NmU4MWZiYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYi51cGdyYWRlZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYi51cGdyYWRlZAppbmRleCA0MmMwNzA1Li45ZDk0ZjY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDFfMS41LjMuYmIudXBncmFkZWQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QxXzEuNS4zLmJiLnVwZ3JhZGVkCkBAIC00LDYgKzQsOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLW5vdGUtbGluZS10by10aGUtcXVpY2stcmVmZXJlbmNlLnBhdGNoIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9wdi5zaHRtbCIKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlRoaXMgcmVjaXBlIGlzIHVzZWQgdG8gdGVzdCBkZXZ0b29sIHVwZ3JhZGUgZmVhdHVyZSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjA2MmJjYTVmZjMzZGYxZGQwOTQ3MmU3ZmMzYmJlMzMyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkZDQ1MzkxODA2YjBlZDIxNWFiZWU0YzVhYzE1OTdkMDE4YzM4NmZlOWMxZjVhZmQyZjZiYzNiMDdmZDgyYzMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYgppbmRleCA0NTA2MzZlLi4wN2I4MzI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0Ml9naXQuYmIKQEAgLTEyLDYgKzEyLDggQEAKIFBSID0gInIyIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2RidXMtd2FpdCIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlRoaXMgcmVjaXBlIGlzIHVzZWQgdG8gdGVzdCBkZXZ0b29sIHVwZ3JhZGUgZmVhdHVyZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYi51cGdyYWRlZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0Ml9naXQuYmIudXBncmFkZWQKaW5kZXggMGQyZTE5ZS4uMzJlYzRiMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYi51cGdyYWRlZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDJfZ2l0LmJiLnVwZ3JhZGVkCkBAIC0xMSw2ICsxMSw4IEBACiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZGJ1cy13YWl0IgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVGhpcyByZWNpcGUgaXMgdXNlZCB0byB0ZXN0IGRldnRvb2wgdXBncmFkZSBmZWF0dXJlIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggYWNhMTYzMy4uYTE1NTE2YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTMsMyArMTMsNSBAQAogTEFZRVJWRVJTSU9OX3NrZWxldG9uID0gIjEiCiAKIExBWUVSREVQRU5EU19za2VsZXRvbiA9ICJjb3JlIgorCitMQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAicm9ja28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGM1YWZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQpAQCAtMCwwICsxLDQwNyBAQAorICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBIYXJkd2FyZSBSZWZlcmVuY2UgQlNQcyBSRUFETUUKKyAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZmlsZSBnaXZlcyBkZXRhaWxzIGFib3V0IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGhhcmR3YXJlIHJlZmVyZW5jZSBCU1BzLgorVGhlIG1hY2hpbmVzIHN1cHBvcnRlZCBjYW4gYmUgc2VlbiBpbiB0aGUgY29uZi9tYWNoaW5lLyBkaXJlY3RvcnkgYW5kIGFyZSBsaXN0ZWQgCitiZWxvdy4gVGhlcmUgaXMgb25lIHBlciBzdXBwb3J0ZWQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGFuZCB0aGVzZSBhcmUgcHJpbWFyaWx5Cit1c2VkIHRvIHZhbGlkYXRlIHRoYXQgdGhlIFlvY3RvIFByb2plY3Qgd29ya3Mgb24gdGhlIGhhcmR3YXJlIGFyY3RlY3R1cmVzIG9mIAordGhvc2UgbWFjaGluZXMuCisKK0lmIHlvdSBhcmUgaW4gZG91YnQgYWJvdXQgdXNpbmcgUG9reS9PcGVuRW1iZWRkZWQvWW9jdG8gUHJvamVjdCB3aXRoIHlvdXIgaGFyZHdhcmUsIAorY29uc3VsdCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBib2FyZC9kZXZpY2UuCisKK1N1cHBvcnQgZm9yIGFkZGl0aW9uYWwgZGV2aWNlcyBpcyBub3JtYWxseSBhZGRlZCBieSBhZGRpbmcgQlNQIGxheWVycyB0byB5b3VyIAorY29uZmlndXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSB0aGUgWW9jdG8gQm9hcmQgU3VwcG9ydCBQYWNrYWdlIAorKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUgLSBkb2N1bWVudGF0aW9uIHNvdXJjZSBpcyBpbiBkb2N1bWVudGF0aW9uL2JzcGd1aWRlIG9yIAorZG93bmxvYWQgdGhlIFBERiBmcm9tOgorCisgICBodHRwOi8veW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uCisKK05vdGUgdGhhdCB0aGVzZSByZWZlcmVuY2UgQlNQcyB1c2UgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbCBhbmQgaW4gZ2VuZXJhbCBkb24ndAorcHVsbCBpbiBiaW5hcnkgbW9kdWxlIHN1cHBvcnQgZm9yIHRoZSBwbGF0Zm9ybXMuIFRoaXMgbWVhbnMgc29tZSBkZXZpY2UgZnVuY3Rpb25hbGl0eQorbWF5IGJlIGxpbWl0ZWQgY29tcGFyZWQgdG8gYSAnZnVsbCcgQlNQIHdoaWNoIG1heSBiZSBhdmFpbGFibGUuCisKKworSGFyZHdhcmUgUmVmZXJlbmNlIEJvYXJkcworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGJvYXJkcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBtZXRhLXlvY3RvLWJzcCBsYXllcjoKKworICAqIFRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUpCisgICogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQorICAqIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKKyAgKiBHZW5lcmFsIElBIHBsYXRmb3JtcyAoZ2VuZXJpY3g4NiBhbmQgZ2VuZXJpY3g4Ni02NCkKKworRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBib2FyZCdzIHNlY3Rpb24gYmVsb3cuIFRoZSBhcHByb3ByaWF0ZSBNQUNISU5FCit2YXJpYWJsZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBib2FyZCBpcyBnaXZlbiBpbiBicmFja2V0cy4KKworUmVmZXJlbmNlIEJvYXJkIE1haW50ZW5hbmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VuZCBwdWxsIHJlcXVlc3RzLCBwYXRjaGVzLCBjb21tZW50cyBvciBxdWVzdGlvbnMgYWJvdXQgbWV0YS15b2N0by1ic3BzIHRvIHBva3lAeW9jdG9wcm9qZWN0Lm9yZworCitNYWludGFpbmVyczogS2V2aW4gSGFvIDxrZXhpbi5oYW9Ad2luZHJpdmVyLmNvbT4KKyAgICAgICAgICAgICBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KKworQ29uc3VtZXIgRGV2aWNlcworPT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGNvbnN1bWVyIGRldmljZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbWV0YS15b2N0by1ic3AgbGF5ZXI6CisKKyAgKiBJbnRlbCB4ODYgYmFzZWQgUENzIGFuZCBkZXZpY2VzIChnZW5lcmljeDg2KQorICAqIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKKworRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBkZXZpY2UncyBzZWN0aW9uIGJlbG93LiBUaGUgYXBwcm9wcmlhdGUgTUFDSElORQordmFyaWFibGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIGlzIGdpdmVuIGluIGJyYWNrZXRzLgorCisKKworICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljIEhhcmR3YXJlIERvY3VtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworSW50ZWwgeDg2IGJhc2VkIFBDcyBhbmQgZGV2aWNlcyAoZ2VuZXJpY3g4NiopCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGdlbmVyaWN4ODYgYW5kIGdlbmVyaWN4ODYtNjQgTUFDSElORSBhcmUgdGVzdGVkIG9uIHRoZSBmb2xsb3dpbmcgcGxhdGZvcm1zOgorCitJbnRlbCBYZW9uL0NvcmUgaS1TZXJpZXM6CisgICsgSW50ZWwgTlVDNSBTZXJpZXMgLSBpeC01Mnh4IFNlcmllcyBTT0MgKEJyb2Fkd2VsbCkKKyAgKyBJbnRlbCBOVUM2IFNlcmllcyAtIGl4LTYyeHggU2VyaWVzIFNPQyAoU2t5bGFrZSkKKyAgKyBJbnRlbCBTaHVtd2F5IFhlb24gU2VydmVyCisKK0ludGVsIEF0b20gcGxhdGZvcm1zOgorICArIE1pbm5vd0JvYXJkIE1BWCAtIEUzODI1IFNPQyAoQmF5IFRyYWlsKQorICArIE1pbm5vd0JvYXJkIE1BWCAtIFR1cmJvdCAoQURJIEVuZ2luZWVyaW5nKSAtIEUzODI2IFNPQyAoQmF5IFRyYWlsKQorICAgIC0gVGhlc2UgYm9hcmRzIGNhbiBiZSBlaXRoZXIgMzJib3Qgb3IgNjRiaXQgbW9kZXMgZGVwZW5kaW5nIG9uIGZpcm13YXJlCisgICAgLSBTZWUgbWlubm93Ym9hcmQub3JnIGZvciBkZXRhaWxzIAorICArIEludGVsIEJyYXN3ZWxsIFNPQworCithbmQgaXMgbGlrZWx5IHRvIHdvcmsgb24gbWFueSB1bmxpc3RlZCBBdG9tL0NvcmUvWGVvbiBiYXNlZCBkZXZpY2VzLiBUaGUgTUFDSElORQordHlwZSBzdXBwb3J0cyBldGhlcm5ldCwgd2lmaSwgc291bmQsIGFuZCBJbnRlbC92ZXNhIGdyYXBoaWNzIGJ5IGRlZmF1bHQgaW4KK2FkZGl0aW9uIHRvIGNvbW1vbiBQQyBpbnB1dCBkZXZpY2VzLCBidXNzZXMsIGFuZCBzbyBvbi4KKworRGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UsIGl0IGNhbiBib290IGZyb20gYSB0cmFkaXRpb25hbCBoYXJkLWRpc2ssIGEgVVNCIGRldmljZSwKK29yIG92ZXIgdGhlIG5ldHdvcmsuIFdyaXRpbmcgZ2VuZXJhdGVkIGltYWdlcyB0byBwaHlzaWNhbCBtZWRpYSBpcworc3RyYWlnaHRmb3J3YXJkIHdpdGggYSBjYXZlYXQgZm9yIFVTQiBkZXZpY2VzLiBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIGFzc3VtZSB0aGUKK3RhcmdldCBib290IGRldmljZSBpcyAvZGV2L3NkYiwgYmUgc3VyZSB0byB2ZXJpZnkgdGhpcyBhbmQgdXNlIHRoZSBjb3JyZWN0CitkZXZpY2UgYXMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgcnVuIGFzIHJvb3QgYW5kIGFyZSBub3QgcmV2ZXJzYWJsZS4KKworVVNCIERldmljZToKKyAgMS4gQnVpbGQgYSBsaXZlIGltYWdlLiBUaGlzIGltYWdlIHR5cGUgY29uc2lzdHMgb2YgYSBzaW1wbGUgZmlsZXN5c3RlbQorICAgICB3aXRob3V0IGEgcGFydGl0aW9uIHRhYmxlLCB3aGljaCBpcyBzdWl0YWJsZSBmb3IgVVNCIGtleXMsIGFuZCB3aXRoIHRoZQorICAgICBkZWZhdWx0IHNldHVwIGZvciB0aGUgZ2VuZXJpY3g4NiBtYWNoaW5lLCB0aGlzIGltYWdlIHR5cGUgaXMgYnVpbHQKKyAgICAgYXV0b21hdGljYWxseSBmb3IgYW55IGltYWdlIHlvdSBidWlsZC4gRm9yIGV4YW1wbGU6CisKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorCisgIDIuIFVzZSB0aGUgImRkIiB1dGlsaXR5IHRvIHdyaXRlIHRoZSBpbWFnZSB0byB0aGUgcmF3IGJsb2NrIGRldmljZS4gRm9yCisgICAgIGV4YW1wbGU6CisKKyAgICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni5oZGRpbWcgb2Y9L2Rldi9zZGIKKworICBJZiB0aGUgZGV2aWNlIGZhaWxzIHRvIGJvb3Qgd2l0aCAiQm9vdCBlcnJvciIgZGlzcGxheWVkLCBvciBhcHBhcmVudGx5CisgIHN0b3BzIGp1c3QgYWZ0ZXIgdGhlIFNZU0xJTlVYIHZlcnNpb24gYmFubmVyLCBpdCBpcyBsaWtlbHkgdGhlIEJJT1MgY2Fubm90CisgIHVuZGVyc3RhbmQgdGhlIHBoeXNpY2FsIGxheW91dCBvZiB0aGUgZGlzayAob3IgcmF0aGVyIGl0IGV4cGVjdHMgYQorICBwYXJ0aWN1bGFyIGxheW91dCBhbmQgY2Fubm90IGhhbmRsZSBhbnl0aGluZyBlbHNlKS4gVGhlcmUgYXJlIHR3byBwb3NzaWJsZQorICBzb2x1dGlvbnMgdG8gdGhpcyBwcm9ibGVtOgorCisgIDEuIENoYW5nZSB0aGUgQklPUyBVU0IgRGV2aWNlIHNldHRpbmcgdG8gSEREIG1vZGUuIFRoZSBsYWJlbCB3aWxsIHZhcnkgYnkKKyAgICAgZGV2aWNlLCBidXQgdGhlIGlkZWEgaXMgdG8gZm9yY2UgQklPUyB0byByZWFkIHRoZSBDeWxpbmRlci9IZWFkL1NlY3RvcgorICAgICBnZW9tZXRyeSBmcm9tIHRoZSBkZXZpY2UuCisKKyAgMi4gVXNlIGEgIi53aWMiIGltYWdlIHdpdGggYW4gRUZJIHBhcnRpdGlvbgorCisgICAgIGEpIFdpdGggYSBkZWZhdWx0IGdydWItZWZpIGJvb3Rsb2FkZXI6CisgICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYtNjQud2ljIG9mPS9kZXYvc2RiCisKKyAgICAgYikgVXNlIHN5c3RlbWQtYm9vdCBpbnN0ZWFkCisgICAgIC0gQnVpbGQgYW4gaW1hZ2Ugd2l0aCBFRklfUFJPVklERVI9InN5c3RlbWQtYm9vdCIgdGhlbiB1c2UgdGhlIGFib3ZlCisgICAgICAgZGQgY29tbWFuZCB0byB3cml0ZSB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2suCisKKworVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBCZWFnbGVib25lIGlzIGFuIEFSTSBDb3J0ZXgtQTggZGV2ZWxvcG1lbnQgYm9hcmQgd2l0aCBVU0IsIEV0aGVybmV0LCAyRC8zRAorYWNjZWxlcmF0ZWQgZ3JhcGhpY3MsIGF1ZGlvLCBzZXJpYWwsIEpUQUcsIGFuZCBTRC9NTUMuIFRoZSBCbGFjayBhZGRzIGEgZmFzdGVyCitDUFUsIG1vcmUgUkFNLCBlTU1DIGZsYXNoIGFuZCBhIG1pY3JvIEhETUkgcG9ydC4gVGhlIGJlYWdsZWJvbmUgTUFDSElORSBpcwordGVzdGVkIG9uIHRoZSBmb2xsb3dpbmcgcGxhdGZvcm1zOgorCisgIG8gQmVhZ2xlYm9uZSBCbGFjayBBNgorICBvIEJlYWdsZWJvbmUgQTYgKHRoZSBvcmlnaW5hbCAiV2hpdGUiIG1vZGVsKQorCitUaGUgQmVhZ2xlYm9uZSBCbGFjayBoYXMgZU1NQywgd2hpbGUgdGhlIFdoaXRlIGRvZXMgbm90LiBQcmVzc2luZyB0aGUgVVNFUi9CT09UCitidXR0b24gd2hlbiBwb3dlcmluZyBvbiB3aWxsIHRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgYm9vdCBvcmRlci4gQnV0IGZvciB0aGUgc2FrZQorb2Ygc2ltcGxpY2l0eSwgdGhlc2UgaW5zdHJ1Y3Rpb25zIGFzc3VtZSB5b3UgaGF2ZSBlcmFzZWQgdGhlIGVNTUMgb24gdGhlIEJsYWNrLAorc28gaXRzIGJvb3QgYmVoYXZpb3IgbWF0Y2hlcyB0aGF0IG9mIHRoZSBXaGl0ZSBhbmQgYm9vdHMgb2ZmIG9mIFNEIGNhcmQuIFRvIGRvCit0aGlzLCBpc3N1ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGZyb20gdGhlIHUtYm9vdCBwcm9tcHQ6CisKKyAgICAjIG1tYyBkZXYgMQorICAgICMgbW1jIGVyYXNlIDAgNTEyCisKK1RvIGZ1cnRoZXIgdGFpbG9yIHRoZXNlIGluc3RydWN0aW9ucyBmb3IgeW91ciBib2FyZCwgcGxlYXNlIHJlZmVyIHRvIHRoZQorZG9jdW1lbnRhdGlvbiBhdCBodHRwOi8vd3d3LmJlYWdsZWJvYXJkLm9yZy9ib25lIGFuZCBodHRwOi8vd3d3LmJlYWdsZWJvYXJkLm9yZy9ibGFjaworCitGcm9tIGEgTGludXggc3lzdGVtIHdpdGggYWNjZXNzIHRvIHRoZSBpbWFnZSBmaWxlcyBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgMS4gQnVpbGQgYW4gaW1hZ2UuIEZvciBleGFtcGxlOgorCisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKworICAyLiBVc2UgdGhlICJkZCIgdXRpbGl0eSB0byB3cml0ZSB0aGUgaW1hZ2UgdG8gdGhlIFNEIGNhcmQuIEZvciBleGFtcGxlOgorCisgICAgICMgZGQgY29yZS1pbWFnZS1taW5pbWFsLWJlYWdsZWJvbmUud2ljIG9mPS9kZXYvc2RiCisKKyAgMy4gSW5zZXJ0IHRoZSBTRCBjYXJkIGludG8gdGhlIEJlYWdsZWJvbmUgYW5kIGJvb3QgdGhlIGJvYXJkLgorCitGcmVlc2NhbGUgTVBDODMxNUUtUkRCIChtcGM4MzE1ZS1yZGIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNUEM4MzE1IFBvd2VyUEMgcmVmZXJlbmNlIHBsYXRmb3JtIChNUEM4MzE1RS1SREIpIGlzIGFpbWVkIGF0IGhhcmR3YXJlIGFuZAorc29mdHdhcmUgZGV2ZWxvcG1lbnQgb2YgbmV0d29yayBhdHRhY2hlZCBzdG9yYWdlIChOQVMpIGFuZCBkaWdpdGFsIG1lZGlhIHNlcnZlcgorYXBwbGljYXRpb25zLiBUaGUgTVBDODMxNUUtUkRCIGZlYXR1cmVzIHRoZSBQb3dlclFVSUNDIElJIFBybyBwcm9jZXNzb3IsIHdoaWNoCitpbmNsdWRlcyBhIGJ1aWx0LWluIHNlY3VyaXR5IGFjY2VsZXJhdG9yLgorCisoTm90ZTogeW91IG1heSBmaW5kIGl0IGVhc2llciB0byBvcmRlciBNUEM4MzE1RS1SREJBOyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlCitzYW1lIGJvYXJkIGluIGFuIGVuY2xvc3VyZSB3aXRoIGFjY2Vzc29yaWVzLiBJbiBhbnkgY2FzZSBpdCBpcyBmdWxseQorY29tcGF0aWJsZSB3aXRoIHRoZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gaGVyZS4pCisKK1NldHVwIGluc3RydWN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSB3aWxsIG5lZWQgdGhlIGZvbGxvd2luZzoKKyogTkZTIHJvb3Qgc2V0dXAgb24geW91ciB3b3Jrc3RhdGlvbgorKiBURlRQIHNlcnZlciBpbnN0YWxsZWQgb24geW91ciB3b3Jrc3RhdGlvbgorKiBTdHJhaWdodC10aHJ1IDktY29uZHVjdG9yIHNlcmlhbCBjYWJsZSAoREI5LCBNL0YpIGNvbm5lY3RlZCBmcm9tIHlvdXIgCisgIFBDIHRvIFVBUlQxCisqIEV0aGVybmV0IGNvbm5lY3RlZCB0byB0aGUgZmlyc3QgZXRoZXJuZXQgcG9ydCBvbiB0aGUgYm9hcmQKKworLS0tIFByZXBhcmF0aW9uIC0tLQorCitOb3RlOiBpZiB5b3UgaGF2ZSBhbHRlcmVkIHlvdXIgYm9hcmQncyBldGhlcm5ldCBNQUMgYWRkcmVzcyhlcykgZnJvbSB0aGUKK2RlZmF1bHRzLCBvciB5b3UgbmVlZCB0byBkbyBzbyBiZWNhdXNlIHlvdSB3YW50IG11bHRpcGxlIGJvYXJkcyBvbiB0aGUgc2FtZQorbmV0d29yaywgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgdmFsdWVzIGluIHRoZSBkdHMgZmlsZSAocGF0Y2gKK2xpbnV4L2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzE1ZXJkYi5kdHMgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlKS4gSWYKK3lvdSBoYXZlIGxlZnQgdGhlbSBhdCB0aGUgZmFjdG9yeSBkZWZhdWx0IHRoZW4geW91IHNob3VsZG4ndCBuZWVkIHRvIGRvCithbnl0aGluZyBoZXJlLgorCitOb3RlOiBUbyBib290IGZyb20gVVNCIGRpc2sgeW91IG5lZWQgdS1ib290IHRoYXQgc3VwcG9ydHMgJ2V4dDJsb2FkIHVzYicKK2NvbW1hbmQuIFlvdSBuZWVkIHRvIHNldHVwIFRGVFAgc2VydmVyLCBsb2FkIHUtYm9vdCBmcm9tIHRoZXJlIGFuZAorZmxhc2ggaXQgdG8gTk9SIGZsYXNoLgorCitCZXdhcmUhIEZsYXNoaW5nIGJvb3Rsb2FkZXIgaXMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIG9wZXJhdGlvbiB0aGF0IGNhbgorYnJpY2sgeW91ciBkZXZpY2UgaWYgZG9uZSBpbmNvcnJlY3RseS4gUGxlYXNlLCBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKK3doYXQgYmVsb3cgY29tbWFuZHMgbWVhbiBiZWZvcmUgZXhlY3V0aW5nIHRoZW0uCisKK0xvYWQgdGhlIG5ldyB1LWJvb3QuYmluIGZyb20gVEZUUCBzZXJ2ZXIgdG8gbWVtb3J5IGFkZHJlc3MgMjAwMDAwCis9PiB0ZnRwIDIwMDAwMCB1LWJvb3QuYmluCisKK0Rpc2FibGUgZmxhc2ggcHJvdGVjdGlvbgorPT4gcHJvdGVjdCBvZmYgYWxsCisKK0VyYXNlIHRoZSBvbGQgdS1ib290IGZyb20gZmUwMDAwMDAgdG8gZmUwNmZmZmYgaW4gTk9SIGZsYXNoLgorVGhlIHNpemUgaXMgMHg3MDAwMCAoNDU4NzUyIGJ5dGVzKQorPT4gZXJhc2UgZmUwMDAwMDAgZmUwNmZmZmYKKworQ29weSB0aGUgbmV3IHUtYm9vdCBmcm9tIGFkZHJlc3MgMjAwMDAwIHRvIGZlMDAwMDAwCit0aGUgc2l6ZSBpcyAweDcwMDAwLiBJdCBoYXMgdG8gYmUgZ3JlYXRlciBvciBlcXVhbCB0byB1LWJvb3QuYmluIHNpemUKKz0+IGNwLmIgMjAwMDAwIGZlMDAwMDAwIDcwMDAwCisKK0VuYWJsZSBmbGFzaCBwcm90ZWN0aW9uIGFnYWluCis9PiBwcm90ZWN0IG9uIGFsbAorCitSZXNldCB0aGUgYm9hcmQKKz0+IHJlc2V0CisKKy0tLSBCb290aW5nIGZyb20gVVNCIGRpc2sgLS0tCisKKyAxLiBGbGFzaCBwYXJ0aXRpb25lZCBpbWFnZSB0byB0aGUgVVNCIGRpc2sKKworICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi53aWMgb2Y9L2Rldi9zZGIKKworIDIuIFBsdWcgVVNCIGRpc2sgaW50byB0aGUgTVBDODMxNSBib2FyZAorCisgMy4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCisgICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCisgICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6CisKKyAgJCBwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAKKworIDQuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKKyAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKKworIDUuIE9wdGlvbmFsLiBMb2FkIHRoZSB1LWJvb3QuYmluIGZyb20gdGhlIFVTQiBkaXNrOgorCisgPT4gdXNiIHN0YXJ0CisgPT4gZXh0MmxvYWQgdXNiIDA6MSAyMDAwMDAgdS1ib290LmJpbgorCisgICAgYW5kIGZsYXNoIGl0IHRvIE5PUiBmbGFzaCBhcyBkZXNjcmliZWQgYWJvdmUuCisKKyA2LiBMb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiBmcm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gb2YgdGhlIFVTQiBkaXNrOgorCisgPT4gdXNiIHN0YXJ0CisgPT4gZXh0MmxvYWQgdXNiIDA6MSAxMDAwMDAwIHVJbWFnZQorID0+IGV4dDJsb2FkIHVzYiAwOjEgMjAwMDAwMCBkdGIKKworIDcuIFNldCBib290YXJncyBhbmQgYm9vdCB1cCB0aGUgZGV2aWNlCisKKyA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3NkYjIgcncgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKKyA9PiBib290bSAxMDAwMDAwIC0gMjAwMDAwMAorCisKKy0tLSBCb290aW5nIGZyb20gTkZTIHJvb3QgLS0tCisKK0xvYWQgdGhlIGtlcm5lbCBhbmQgZHRiIChkZXZpY2UgdHJlZSBibG9iKSwgYW5kIGJvb3QgdGhlIHN5c3RlbSBhcyBmb2xsb3dzOgorCisgMS4gR2V0IHRoZSBrZXJuZWwgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuYmluKSBhbmQgZHRiICh1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YikKKyAgICBmaWxlcyBmcm9tIHRoZSB0bXAvZGVwbG95IGRpcmVjdG9yeSwgYW5kIG1ha2UgdGhlbSBhdmFpbGFibGUgb24geW91ciBURlRQCisgICAgc2VydmVyLgorCisgMi4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCisgICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCisgICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6CisKKyAgJCBwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAKKworIDMuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKKyAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKKworIDQuIFNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgorCisgPT4gc2V0ZW52IGlwYWRkciA8Ym9hcmQgaXA+CisgPT4gc2V0ZW52IHNlcnZlcmlwIDx0ZnRwIHNlcnZlciBpcD4KKyA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PTxuZnNyb290IGlwPjo8cm9vdGZzIHBhdGg+IGlwPTxib2FyZCBpcD46PHNlcnZlciBpcD46PGdhdGV3YXkgaXA+OjI1NS4yNTUuMjU1LjA6bXBjODMxNWU6ZXRoMDpvZmYgY29uc29sZT10dHlTMCwxMTUyMDAKKworIDUuIERvd25sb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiwgYW5kIGJvb3Q6CisKKyA9PiB0ZnRwIDEwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5iaW4KKyA9PiB0ZnRwIDIwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5kdGIKKyA9PiBib290bSAxMDAwMDAwIC0gMjAwMDAwMAorCistLS0gQm9vdGluZyBmcm9tIEpGRlMyIHJvb3QgLS0tCisKKyAxLiBGaXJzdCBib290IHRoZSBib2FyZCB3aXRoIE5GUyByb290LgorCisgMi4gRXJhc2UgdGhlIE1URCBwYXJ0aXRpb24gd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJvb3Q6CisKKyAgICAkIGZsYXNoX2VyYXNlYWxsICAvZGV2L210ZDMKKworIDMuIENvcHkgdGhlIEpGRlMyIGltYWdlIHRvIHRoZSBNVEQgcGFydGl0aW9uOgorCisgICAgJCBmbGFzaGNwIGNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIuamZmczIgL2Rldi9tdGQzCisKKyA0LiBUaGVuIHJlYm9vdCB0aGUgYm9hcmQgYW5kIHNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgorCisgICAgPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1qZmZzMiBjb25zb2xlPXR0eVMwLDExNTIwMAorCisKK1ViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEVkZ2VSb3V0ZXIgTGl0ZSBpcyBwYXJ0IG9mIHRoZSBFZGdlTWF4IHNlcmllcy4gSXQgaXMgYSBNSVBTNjQgcm91dGVyCisoYmFzZWQgb24gdGhlIENhdml1bSBPY3Rlb24gcHJvY2Vzc29yKSB3aXRoIDUxMk1CIG9mIFJBTSwgd2hpY2ggdXNlcyBhbgoraW50ZXJuYWwgVVNCIHBlbmRyaXZlIGZvciBzdG9yYWdlLgorCitTZXR1cCBpbnN0cnVjdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CisqIFJKNDUgLT4gc2VyaWFsICgicm9sbG92ZXIiKSBjYWJsZSBjb25uZWN0ZWQgZnJvbSB5b3VyIFBDIHRvIHRoZSBDT05TT0xFCisgIHBvcnQgb24gdGhlIGRldmljZQorKiBFdGhlcm5ldCBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0IGV0aGVybmV0IHBvcnQgb24gdGhlIGJvYXJkCisKK0lmIHVzaW5nIE5GUyBhcyBwYXJ0IG9mIHRoZSBzZXR1cCBwcm9jZXNzLCB5b3Ugd2lsbCBhbHNvIG5lZWQ6CisqIE5GUyByb290IHNldHVwIG9uIHlvdXIgd29ya3N0YXRpb24KKyogVEZUUCBzZXJ2ZXIgaW5zdGFsbGVkIG9uIHlvdXIgd29ya3N0YXRpb24gKGlmIGZldGNoaW5nIHRoZSBrZXJuZWwgZnJvbQorICBURlRQLCBzZWUgYmVsb3cpLgorCistLS0gUHJlcGFyYXRpb24gLS0tCisKK0J1aWxkIGFuIGltYWdlIChlLmcuIGNvcmUtaW1hZ2UtbWluaW1hbCkgdXNpbmcgImVkZ2Vyb3V0ZXIiIGFzIHRoZSBNQUNISU5FLgorSW4gdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpdCBpcyBiYXNlZCBvbiBjb3JlLWltYWdlLW1pbmltYWwuIEFub3RoZXIgdGFyZ2V0CittYXkgYmUgc2ltaWxpYXIgd2l0aCBpdC4KKworLS0tIEJvb3RpbmcgZnJvbSBORlMgcm9vdCAvIGtlcm5lbCB2aWEgVEZUUCAtLS0KKworTG9hZCB0aGUga2VybmVsLCBhbmQgYm9vdCB0aGUgc3lzdGVtIGFzIGZvbGxvd3M6CisKKyAxLiBHZXQgdGhlIGtlcm5lbCAodm1saW51eCkgZmlsZSBmcm9tIHRoZSB0bXAvZGVwbG95L2ltYWdlcy9lZGdlcm91dGVyCisgICAgZGlyZWN0b3J5LCBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIFRGVFAgc2VydmVyLgorCisgMi4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCisgICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCisgICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6CisKKyAgJCBwaWNvY29tIC9kZXYvdHR5UzAgLWIgMTE1MjAwCisKKyAzLiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCisgICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCisKKyA0LiBTZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKKworID0+IHNldGVudiBpcGFkZHIgPGJvYXJkIGlwPgorID0+IHNldGVudiBzZXJ2ZXJpcCA8dGZ0cCBzZXJ2ZXIgaXA+CisKKyA1LiBEb3dubG9hZCB0aGUga2VybmVsIGFuZCBib290OgorCisgPT4gdGZ0cCB0ZnRwICRsb2FkYWRkciB2bWxpbnV4CisgPT4gYm9vdG9jdGxpbnV4ICRsb2FkYWRkciBjb3JlbWFzaz0weDMgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PTxuZnNyb290IGlwPjo8cm9vdGZzIHBhdGg+IGlwPTxib2FyZCBpcD46PHNlcnZlciBpcD46PGdhdGV3YXkgaXA+OjxuZXRtYXNrPjplZGdlcm91dGVyOmV0aDA6b2ZmIG10ZHBhcnRzPXBoeXNfbWFwcGVkX2ZsYXNoOjUxMmsoYm9vdDApLDUxMmsoYm9vdDEpLDY0a0AzMDcyayhlZXByb20pCisKKy0tLSBCb290aW5nIGZyb20gVVNCIGRpc2sgLS0tCisKK1RvIGJvb3QgZnJvbSB0aGUgVVNCIGRpc2ssIHlvdSBlaXRoZXIgbmVlZCB0byByZW1vdmUgaXQgZnJvbSB0aGUgZWRnZXJvdXRlcgorYm94IGFuZCBwb3B1bGF0ZSBpdCBmcm9tIGFub3RoZXIgY29tcHV0ZXIsIG9yIHVzZSBhIHByZXZpb3VzbHkgYm9vdGVkIE5GUworaW1hZ2UgYW5kIHBvcHVsYXRlIGZyb20gdGhlIGVkZ2Vyb3V0ZXIgaXRzZWxmLgorCitUeXBlIDE6IFVzZSBwYXJ0aXRpb25lZCBpbWFnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3RlcHM6CisKKyAxLiBSZW1vdmUgdGhlIFVTQiBkaXNrIGZyb20gdGhlIGVkZ2Vyb3V0ZXIgYW5kIGluc2VydCBpdCBpbnRvIGEgY29tcHV0ZXIKKyAgICB0aGF0IGhhcyBhY2Nlc3MgdG8geW91ciBidWlsZCBhcnRpZmFjdHMuCisKKyAyLiBGbGFzaCB0aGUgaW1hZ2UuCisKKyAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1lZGdlcm91dGVyLndpYyBvZj0vZGV2L3NkYgorCisgMy4gSW5zZXJ0IFVTQiBkaXNrIGludG8gdGhlIGVkZ2Vyb3V0ZXIgYW5kIGJvb3QgaXQuCisKK1R5cGUgMjogTkZTCistLS0tLS0tLS0tLQorCitOb3RlOiBJZiB5b3UgcGxhY2UgdGhlIGtlcm5lbCBvbiB0aGUgZXh0MyBwYXJ0aXRpb24sIHlvdSBtdXN0IHJlLWNyZWF0ZSB0aGUKKyAgICAgIGV4dDMgZmlsZXN5c3RlbSwgc2luY2UgdGhlIGZhY3RvcnkgdS1ib290IGNhbiBvbmx5IGhhbmRsZSAxMjggYnl0ZSBpbm9kZXMgYW5kCisgICAgICBjYW5ub3QgcmVhZCB0aGUgcGFydGl0aW9uIG90aGVyd2lzZS4KKworICAgICAgVGhlc2UgYm9vdCBpbnN0cnVjdGlvbnMgYXNzdW1lIHRoYXQgeW91IGhhdmUgcmVjcmVhdGVkIHRoZSBleHQzIGZpbGVzeXN0ZW0gd2l0aAorICAgICAgMTI4IGJ5dGUgaW5vZGVzLCB5b3UgaGF2ZSBhbiB1cGRhdGVkIHVib290IG9yIHlvdSBhcmUgcnVubmluZyBhbmQgaW1hZ2UgY2FwYWJsZQorICAgICAgb2YgbWFraW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRoZSBib2FyZCBpdHNlbGYuCisKKworIDEuIEJvb3QgZnJvbSBORlMgcm9vdAorCisgMi4gTW91bnQgdGhlIFVTQiBkaXNrIHBhcnRpdGlvbiAyIGFuZCB0aGVuIGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mCisgICAgdG1wL2RlcGxveS9jb3JlLWltYWdlLVhYWFgudGFyLmJ6MiBpbnRvIGl0LgorCisgICAgQmVmb3JlIHN0YXJ0aW5nLCBjb3B5IGNvcmUtaW1hZ2UtbWluaW1hbC14eHgudGFyLmJ6MiBhbmQgdm1saW51eCBpbnRvCisgICAgcm9vdGZzIHBhdGggb24geW91ciB3b3Jrc3RhdGlvbi4KKworICAgIGFuZCB0aGVuLAorICAKKyAgICAgICMgbW91bnQgL2Rldi9zZGEyIC9tZWRpYS9zZGEyCisgICAgICAjIHRhciAteHZqcGYgY29yZS1pbWFnZS1taW5pbWFsLVhYWC50YXIuYnoyIC1DIC9tZWRpYS9zZGEyCisgICAgICAjIGNwIHZtbGludXggL21lZGlhL3NkYTIvYm9vdC92bWxpbnV4CisgICAgICAjIHVtb3VudCAvbWVkaWEvc2RhMgorICAgICAgIyByZWJvb3QKKworIDMuIFJlYm9vdCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkIHRvIGdldCB0byB0aGUgVS1Cb290CisgICAgY29tbWFuZCBsaW5lOgorCisgICAgIyByZWJvb3QKKworIDQuIExvYWQgdGhlIGtlcm5lbCBhbmQgYm9vdDoKKworICAgICAgPT4gZXh0MmxvYWQgdXNiIDA6MiAkbG9hZGFkZHIgYm9vdC92bWxpbnV4CisgICAgICA9PiBib290b2N0bGludXggJGxvYWRhZGRyIGNvcmVtYXNrPTB4MyByb290PS9kZXYvc2RhMiBydyByb290d2FpdCBtdGRwYXJ0cz1waHlzX21hcHBlZF9mbGFzaDo1MTJrKGJvb3QwKSw1MTJrKGJvb3QxKSw2NGtAMzA3MmsoZWVwcm9tKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKaW5kZXggNDRkYmNhNi4uN2I1NjVmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC05LDMgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG9ic3AgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgogTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjMiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAicm9ja28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS5jb25mCmluZGV4IDRhOTBiYTUuLjFiZGQ0ZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS5jb25mCkBAIC0yNiw3ICsyNiw3IEBACiBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgotS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIgorS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgogS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPSR7VUJPT1RfRU5UUllQT0lOVH0iCiAKIFNQTF9CSU5BUlkgPSAiTUxPIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LTY0LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYtNjQuY29uZgppbmRleCBiZmVkZDg0Li4xMmY3YzBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYtNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYtNjQuY29uZgpAQCAtNyw2ICs3LDQgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jCiAKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEwJSIKLQogU0VSSUFMX0NPTlNPTEVTX0NIRUNLID0gInR0eVMwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYuY29uZgppbmRleCBhZjAzYjg2Li43OThiNjJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2dlbmVyaWN4ODYuY29uZgpAQCAtOCw1ICs4LDMgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jCiAKIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJnbWE1MDAtZ2Z4LWNoZWNrIgotCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMCUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgppbmRleCA2ZTJkMzE2Li4zNzFhM2RiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKQEAgLTMwLDYgKzMwLDYgQEAKIElNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCiBKRkZTMl9FUkFTRUJMT0NLID0gIjB4NDAwMCIKIAotSU1BR0VfRlNUWVBFUyArPSAid2ljIgorSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgogV0tTX0ZJTEUgPz0gJ21wYzgzMTVlLXJkYi53a3MnCiBJTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuYmluIHVJbWFnZSB1SW1hZ2UtbXBjODMxNWVyZGIuZHRiO2R0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1ZWVlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKQEAgLTAsMCArMSw5OCBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBydW5xZW11CisKK2NsYXNzIFN5c3RlbWRib290KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgZGVmIF9jb21tb25fc2V0dXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBDb21tb24gc2V0dXAgZm9yIHRlc3QgY2FzZXM6IDE0NDUsIDE1MjgKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBTZXQgRUZJX1BST1ZJREVSID0gInN5c3RlbWRib290IiBhbmQgTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IiBpbiBjb25mL2xvY2FsLmNvbmYKKyAgICAgICAgZmVhdHVyZXMgPSAnRUZJX1BST1ZJREVSID0gInN5c3RlbWQtYm9vdCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ01BQ0hJTkUgPSAiZ2VuZXJpY3g4Ni02NCInCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhmZWF0dXJlcykKKworICAgIGRlZiBfY29tbW9uX2J1aWxkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29tbW9uIGJ1aWxkIGZvciB0ZXN0IGNhc2VzOiAxNDQ1ICwgMTUyOAorICAgICAgICAiIiIKKworICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgc3lzdGVtZGJvb3QgaW1hZ2UKKyAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQorCisKKyAgICBAT0VUZXN0SUQoMTQ0NSkKKyAgICBkZWYgdGVzdF9lZmlfc3lzdGVtZGJvb3RfaW1hZ2VzX2Nhbl9iZV9idWlsdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBzeXN0ZW1kLWJvb3QgaW1hZ2VzIGNhbiBiZSBidWlsdCBjb3JyZWN0bHkKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIEZpbGUgc3lzdGVtZC1ib290LmVmaSBzaG91bGQgYmUgYXZhaWxhYmxlIGluICRwb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL2dlbmVyaWN4ODYtNjQKKyAgICAgICAgICAgICAgICAgICAgIDIuICdzeXN0ZW1kLWJvb3QiIGNhbiBiZSBidWlsdCBjb3JyZWN0bHkKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgICMgV2UnZCB1c2UgREVQTE9ZX0RJUl9JTUFHRSBoZXJlLCBleGNlcHQgdGhhdCB3ZSBuZWVkIGl0cyB2YWx1ZSBmb3IKKyAgICAgICAgIyBNQUNISU5FPSJnZW5lcmljeDg2LTY0IHdoaWNoIGlzIHByb2JhYmx5IG5vdCB0aGUgb25lIGNvbmZpZ3VyZWQKKyAgICAgICAgc3lzdGVtZGJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQorCisgICAgICAgIHNlbGYuX2NvbW1vbl9zZXR1cCgpCisKKyAgICAgICAgIyBFbnN1cmUgd2UncmUgYWN0dWFsbHkgdGVzdGluZyB0aGF0IHRoaXMgZ2V0cyBidWlsdCBhbmQgbm90IHRoYXQKKyAgICAgICAgIyBpdCB3YXMgYXJvdW5kIGZyb20gYW4gZWFybGllciBidWlsZAorICAgICAgICBiaXRiYWtlKCctYyBjbGVhbnNzdGF0ZSBzeXN0ZW1kLWJvb3QnKQorICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIHN5c3RlbWRib290ZmlsZSkKKworICAgICAgICBzZWxmLl9jb21tb25fYnVpbGQoKQorCisgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoc3lzdGVtZGJvb3RmaWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdTeXN0ZW1kLUJvb3QgZmlsZSAlcyBub3QgZm91bmQnICUgc3lzdGVtZGJvb3RmaWxlKQorCisgICAgQE9FVGVzdElEKDE1MjgpCisgICAgQE9FVGVzdERlcGVuZHMoWydzeXN0ZW1kX2Jvb3QuU3lzdGVtZGJvb3QudGVzdF9lZmlfc3lzdGVtZGJvb3RfaW1hZ2VzX2Nhbl9iZV9idWlsdCddKQorICAgIGRlZiB0ZXN0X2ltYWdlX2VmaV9maWxlKHNlbGYpOgorCisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgIENoZWNrIGlmIEVGSSBib290bG9hZGVyIGZvciBzeXN0ZW1kIGlzIGNvcnJlY3RseSBidWlsZAorICAgICAgICBEZXBlbmRlbmNpZXM6IEltYWdlIHdhcyBidWlsdCBjb3JyZWN0bHkgb24gdGVzdGNhc2UgMTQ0NQorICAgICAgICBTdGVwczogICAgICAgIDEuIENvcHkgYm9vdHg2NC5lZmkgZmlsZSBmb3JtIHRoZSBoZGRpbWcgY3JlYXRlZAorICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIGJ1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL2dlbmVyaWN4ODYtNjQKKyAgICAgICAgICAgICAgICAgICAgICAyLiBDaGVjayBib290eDY0LmVmaSB3YXMgY29waWVkIGZvcm0gaGRkaW1nCisgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoZSBjaGVja3N1bXMgZnJvbSB0aGUgY29waWVkIGFuZCBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBmaWxlIGFyZSBlcXVhbC4KKyAgICAgICAgRXhwZWN0ZWQgOiAgICBTeXN0ZW1kLWJvb3R4NjQuZWZpIGFuZCBib290eDY0LmVmaSBzaG91bGQgYmUgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICBoZW5jZSBjaGVja3N1bXMgc2hvdWxkIGJlIGVxdWFsLgorICAgICAgICBQcm9kdWN0OiAgICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgICBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphIGF0IGxpbnV4LWludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6ICBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphIGF0IGxpbnV4LWludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc3lzdGVtZGJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtZC1ib290eDY0LmVmaScpCisgICAgICAgIHN5c3RlbWRib290aW1hZ2UgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignREVQTE9ZX0RJUicpLCAnaW1hZ2VzJywgJ2dlbmVyaWN4ODYtNjQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LmhkZGltZycpCisgICAgICAgIGltYWdlYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignREVQTE9ZX0RJUicpLCAnaW1hZ2VzJywgJ2dlbmVyaWN4ODYtNjQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jvb3R4NjQuZWZpJykKKyAgICAgICAgbWNvcHluYXRpdmUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJyksICdtY29weScpCisKKyAgICAgICAgI0NsZWFuIGVudmlyb25tZW50IGJlZm9yZSBzdGFydCB0aGUgdGVzdAorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKToKKyAgICAgICAgICAgIHJ1bkNtZCgncm0gLWYgJXMnICUgaW1hZ2Vib290ZmlsZSkKKworICAgICAgICAgICAgI1N0ZXAgMQorICAgICAgICAgICAgcnVuQ21kKCclcyAtaSAlcyA6OkVGSS9CT09UL2Jvb3R4NjQuZWZpICVzJyAlIChtY29weW5hdGl2ZSAsc3lzdGVtZGJvb3RpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vib290ZmlsZSkpCisKKyAgICAgICAgICAgICNTdGVwIDIKKyAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ2Jvb3R4NjQuZWZpIGZpbGUgJXMgd2FzIG5vdCBjb3BpZWQgZnJvbSBpbWFnZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGltYWdlYm9vdGZpbGUpCisKKyAgICAgICAgICAgICNTdGVwIDMKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnbWQ1c3VtICVzICVzJyAlIChzeXN0ZW1kYm9vdGZpbGUsIGltYWdlYm9vdGZpbGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnNwbGl0KClbMF0sIHJlc3VsdC5vdXRwdXQuc3BsaXQoKVsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzIHdhcyBub3QgY29ycmVjbHR5IGdlbmVyYXRlZCcgJSBpbWFnZWJvb3RmaWxlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L3N5c3RlbWRfYm9vdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9zeXN0ZW1kX2Jvb3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Zjc0ZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L3N5c3RlbWRfYm9vdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgcnVucWVtdQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1pbXBvcnQgcmUKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKLQotCi1jbGFzcyBTeXN0ZW1kYm9vdChvZVNlbGZUZXN0KToKLQotICAgIGRlZiBfY29tbW9uX3NldHVwKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgQ29tbW9uIHNldHVwIGZvciB0ZXN0IGNhc2VzOiAxNDQ1LCBYWFhYCi0gICAgICAgICIiIgotCi0gICAgICAgICMgU2V0IEVGSV9QUk9WSURFUiA9ICJndW1taWJvb3QiIGFuZCBNQUNISU5FID0gImdlbmVyaWN4ODYtNjQiIGluIGNvbmYvbG9jYWwuY29uZgotICAgICAgICBmZWF0dXJlcyA9ICdFRklfUFJPVklERVIgPSAic3lzdGVtZC1ib290IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgZGVmIF9jb21tb25fYnVpbGQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBDb21tb24gYnVpbGQgZm9yIHRlc3QgY2FzZXM6IDE0NDUgLCBYWFhYCi0gICAgICAgICIiIgotCi0gICAgICAgICMgQnVpbGQgYSBnZW5lcmljeDg2LTY0L2VmaSBndW1taWJvb3QgaW1hZ2UKLSAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQotCi0KLSAgICBAdGVzdGNhc2UoMTQ0NSkKLSAgICBkZWYgdGVzdF9lZmlfc3lzdGVtZGJvb3RfaW1hZ2VzX2Nhbl9iZV9idWlsdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBzeXN0ZW1kLWJvb3QgaW1hZ2VzIGNhbiBiZSBidWlsdCBjb3JyZWN0bHkKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIEZpbGUgc3lzdGVtZC1ib290LmVmaSBzaG91bGQgYmUgYXZhaWxhYmxlIGluICRwb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL2dlbmVyaWN4ODYtNjQKLSAgICAgICAgICAgICAgICAgICAgIDIuICdzeXN0ZW1kLWJvb3QiIGNhbiBiZSBidWlsdCBjb3JyZWN0bHkKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgV2UnZCB1c2UgREVQTE9ZX0RJUl9JTUFHRSBoZXJlLCBleGNlcHQgdGhhdCB3ZSBuZWVkIGl0cyB2YWx1ZSBmb3IKLSAgICAgICAgIyBNQUNISU5FPSJnZW5lcmljeDg2LTY0IHdoaWNoIGlzIHByb2JhYmx5IG5vdCB0aGUgb25lIGNvbmZpZ3VyZWQKLSAgICAgICAgc3lzdGVtZGJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQotCi0gICAgICAgIHNlbGYuX2NvbW1vbl9zZXR1cCgpCi0KLSAgICAgICAgIyBFbnN1cmUgd2UncmUgYWN0dWFsbHkgdGVzdGluZyB0aGF0IHRoaXMgZ2V0cyBidWlsdCBhbmQgbm90IHRoYXQKLSAgICAgICAgIyBpdCB3YXMgYXJvdW5kIGZyb20gYW4gZWFybGllciBidWlsZAotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbnNzdGF0ZSBzeXN0ZW1kLWJvb3QnKQotICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIHN5c3RlbWRib290ZmlsZSkKLQotICAgICAgICBzZWxmLl9jb21tb25fYnVpbGQoKQotCi0gICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoc3lzdGVtZGJvb3RmaWxlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdTeXN0ZW1kLUJvb3QgZmlsZSAlcyBub3QgZm91bmQnICUgc3lzdGVtZGJvb3RmaWxlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2NTk1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2dlbmVyaWN4ODYgPSAiIGx0dG5nLXVzdCBzeXN0ZW10YXAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTVmOTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgotS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjc4MjEzM2Q4MTY2YWM3MWVmMWZmYWJhNThiN2NmODFlYzllNTMyYTEiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJjZTM4ZmRiODIwNDc2ZTQ5NjU3OWYyNDgxYmU5NzdjMGYzNTUwOWY0IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKLUNPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCi1DT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCi0KLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjEuNDMiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xLjQzIgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuMS40MyIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZSA9ICI0LjEuNDMiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEuNDMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZDhlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDI3IEBACitLQlJBTkNIX2dlbmVyaWN4ODYgID0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCitLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgorCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIxYzRhZDU2OWFmM2UyM2E3Nzk5NDIzNTQzNTA0MGUzMjI5MDg2ODdmIgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiMWM0YWQ1NjlhZjNlMjNhNzc5OTQyMzU0MzUwNDBlMzIyOTA4Njg3ZiIKK1NSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjI1N2Y4NDNlYTM2Nzc0NDYyMGYxZDkyOTEwYWZkMmY0NTRlMzE0ODMiCitTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICIwMTQ1NjA4NzRmOWViMmE4NjEzOGM5Y2MzNTA0NmZmMTcyMDQ4NWUxIgorCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjAiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjE5IgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMTkiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjE5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKaW5kZXggNDI3YWY0Yy4uMzVjY2UxYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC03LDExICs3LDExIEBACiBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKIEtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCiAKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImI0ZGFhNGU5ZDY4ODYyZTU1OWQ3MjZiMGI2NmI3YmU2MDU4ODliOWUiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI3MDEyMGMwYTZiMGY4ODEyMjc5OTcwNTExNGE5OWExNWJmMDExM2NlIgogCiBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKQEAgLTE5LDggKzE5LDggQEAKIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCiBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuNC44NyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjQuODciCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC40Ljg3IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuNC44NyIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjQuMTEzIgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuNC4xMTMiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC40LjExMyIKK0xJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI0LjQuMTEzIgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC40LjExMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kCmluZGV4IGIzYjVjZDUuLmMwYjJlZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZApAQCAtNywxMSArNywxMSBAQAogS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCiBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI4OGE3MDNiMTVhNzU2NDcwNGMzZGM1ZDNjMTIzN2UwODU5ODk3NjU1IgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiZjdhNmQ0NWZmZjg1MzE3M2JmYmY2MTcwNmFlZmZjZDFkMWU5OTQ2NyIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJmN2E2ZDQ1ZmZmODUzMTczYmZiZjYxNzA2YWVmZmNkMWQxZTk5NDY3IgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiZjdhNmQ0NWZmZjg1MzE3M2JmYmY2MTcwNmFlZmZjZDFkMWU5OTQ2NyIKK1NSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMTk1YTg1N2EwZTQyMTUwYjk0MGRmY2JkZjg1N2JlNjZlMDVkZDAwMyIKIAogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCkBAIC0xOSw4ICsxOSw4IEBACiBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgogQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCiAKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjkuNDkiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC45LjQ5IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuOS40OSIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZSA9ICI0LjkuNDkiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC45Ljc4IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuOS43OCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjkuNzgiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC45Ljc4IgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC45Ljc4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8vY29uZi9sYXllci5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWQzMGVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvL2NvbmYvbGF5ZXIuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyBEdW1teSBmaWxlIHRvIGFsbG93IGZvciBtZXRhLXlvY3RvIC0+IG1ldGEtcG9reSB0cmFuc2l0aW9uCi1CQlBBVEggPS4gIiR7TEFZRVJESVJ9Ly4uL21ldGEtcG9reToiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzCmluZGV4IGE3Y2UwMjQuLjUxYmE1MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzCkBAIC00Myw4ICs0Myw4IEBACiAgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1BBQ0tBR0VfU1RSSVAiLCAiMSIpCiAKICAgICAgICAgIyBUaGVzZSBtdWx0aWxpYiB2YWx1ZXMgc2hvdWxkbid0IGNoYW5nZSBhbGxhcmNoIHBhY2thZ2VzIHNvIGV4Y2x1ZGUgdGhlbQotICAgICAgICBkLnNldFZhckZsYWcoImVtaXRfcGtnZGF0YSIsICJ2YXJkZXBzZXhjbHVkZSIsICJNVUxUSUxJQl9WQVJJQU5UUyIpCi0gICAgICAgIGQuc2V0VmFyRmxhZygid3JpdGVfc3BlY2ZpbGUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiTVVMVElMSUJTIikKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJlbWl0X3BrZ2RhdGEiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiIE1VTFRJTElCX1ZBUklBTlRTIikKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJ3cml0ZV9zcGVjZmlsZSIsICJ2YXJkZXBzZXhjbHVkZSIsICIgTVVMVElMSUJTIikKICAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6CiAgICAgICAgIGJiLmVycm9yKCJQbGVhc2UgZW5zdXJlIHJlY2lwZSAlcyBzZXRzIFBBQ0tBR0VfQVJDSCBiZWZvcmUgaW5oZXJpdCBwYWNrYWdlZ3JvdXAiICUgZC5nZXRWYXIoIkZJTEUiKSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCAxOGM1Yjk2Li5lYzgwYWQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC0yMjMsNiArMjIzLDggQEAKICAgICBpbXBvcnQgc2h1dGlsCiAKICAgICAjIEZvcmNpYmx5IGV4cGFuZCB0aGUgc3lzcm9vdCBwYXRocyBhcyB3ZSdyZSBhYm91dCB0byBjaGFuZ2UgV09SS0RJUgorICAgIGQuc2V0VmFyKCdTVEFHSU5HX0RJUl9IT1NUJywgZC5nZXRWYXIoJ1NUQUdJTkdfRElSX0hPU1QnKSkKKyAgICBkLnNldFZhcignU1RBR0lOR19ESVJfVEFSR0VUJywgZC5nZXRWYXIoJ1NUQUdJTkdfRElSX1RBUkdFVCcpKQogICAgIGQuc2V0VmFyKCdSRUNJUEVfU1lTUk9PVCcsIGQuZ2V0VmFyKCdSRUNJUEVfU1lTUk9PVCcpKQogICAgIGQuc2V0VmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCBkLmdldFZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJykpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IGFjMDRhMDcuLmVmYTQwOTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtMTQxLDcgKzE0MSw3IEBACiAKIHB5dGhvbiBhdXRvdG9vbHNfYWNsb2NhbHMgKCkgewogICAgICMgUmVmcmVzaCB2YXJpYWJsZSB3aXRoIGNhY2hlIGZpbGVzCi0gICAgZC5zZXRWYXIoIkNPTkZJR19TSVRFIiwgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIGFjbG9jYWxjYWNoZT1UcnVlKSkKKyAgICBkLnNldFZhcigiQ09ORklHX1NJVEUiLCBzaXRlaW5mb19nZXRfZmlsZXMoZCwgc3lzcm9vdGNhY2hlPVRydWUpKQogfQogCiBDT05GSUdVUkVfRklMRVMgPSAiJHtTfS9jb25maWd1cmUuaW4gJHtTfS9jb25maWd1cmUuYWMgJHtTfS9jb25maWcuaC5pbiAke1N9L2FjaW5jbHVkZS5tNCBNYWtlZmlsZS5hbSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKaW5kZXggZDk1YWZiNy4uYmQwZDZlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKQEAgLTYxLDIyICs2MSwxNSBAQAogCiAKIGRlZiBiYXNlX2RlcF9wcmVwZW5kKGQpOgotICAgICMKLSAgICAjIElkZWFsbHkgdGhpcyB3aWxsIGNoZWNrIGEgZmxhZyBzbyB3ZSB3aWxsIG9wZXJhdGUgcHJvcGVybHkgaW4KLSAgICAjIHRoZSBjYXNlIHdoZXJlIGhvc3QgPT0gYnVpbGQgPT0gdGFyZ2V0LCBmb3Igbm93IHdlIGRvbid0IHdvcmsgaW4KLSAgICAjIHRoYXQgY2FzZSB0aG91Z2guCi0gICAgIworICAgIGlmIGQuZ2V0VmFyKCdJTkhJQklUX0RFRkFVTFRfREVQUycsIEZhbHNlKToKKyAgICAgICAgcmV0dXJuICIiCisgICAgcmV0dXJuICIke0JBU0VfREVGQVVMVF9ERVBTfSIKIAotICAgIGRlcHMgPSAiIgotICAgICMgSU5ISUJJVF9ERUZBVUxUX0RFUFMgZG9lc24ndCBhcHBseSB0byB0aGUgcGF0Y2ggY29tbWFuZC4gIFdoZXRoZXIgb3IgIG5vdAotICAgICMgd2UgbmVlZCB0aGF0IGJ1aWx0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24gLyBjbGFzcywgbm90Ci0gICAgIyB0aGUgYXBwbGljYXRpb24uCi0gICAgaWYgbm90IGQuZ2V0VmFyKCdJTkhJQklUX0RFRkFVTFRfREVQUycsIEZhbHNlKToKLSAgICAgICAgaWYgKGQuZ2V0VmFyKCdIT1NUX1NZUycpICE9IGQuZ2V0VmFyKCdCVUlMRF9TWVMnKSk6Ci0gICAgICAgICAgICBkZXBzICs9ICIgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsL2xpYmMgIgotICAgIHJldHVybiBkZXBzCitCQVNFX0RFRkFVTFRfREVQUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIHZpcnR1YWwvbGliYyIKIAotQkFTRURFUEVORFMgPSAiJHtAYmFzZV9kZXBfcHJlcGVuZChkKX0iCitCQVNFREVQRU5EUyA9ICIiCitCQVNFREVQRU5EU19jbGFzcy10YXJnZXQgPSAiJHtAYmFzZV9kZXBfcHJlcGVuZChkKX0iCitCQVNFREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmFzZV9kZXBfcHJlcGVuZChkKX0iCiAKIERFUEVORFNfcHJlcGVuZD0iJHtCQVNFREVQRU5EU30gIgogCkBAIC0xODUsNyArMTc4LDcgQEAKIAogZGVmIGdldF9sYXllcnNfYnJhbmNoX3JldihkKToKICAgICBsYXllcnMgPSAoZC5nZXRWYXIoIkJCTEFZRVJTIikgb3IgIiIpLnNwbGl0KCkKLSAgICBsYXllcnNfYnJhbmNoX3JldiA9IFsiJS0xN3MgPSBcIiVzOiVzXCIiICUgKG9zLnBhdGguYmFzZW5hbWUoaSksIFwKKyAgICBsYXllcnNfYnJhbmNoX3JldiA9IFsiJS0yMHMgPSBcIiVzOiVzXCIiICUgKG9zLnBhdGguYmFzZW5hbWUoaSksIFwKICAgICAgICAgYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X2JyYW5jaChpLCBOb25lKS5zdHJpcCgpLCBcCiAgICAgICAgIGJhc2VfZ2V0X21ldGFkYXRhX2dpdF9yZXZpc2lvbihpLCBOb25lKSkgXAogICAgICAgICAgICAgZm9yIGkgaW4gbGF5ZXJzXQpAQCAtMjEzLDcgKzIwNiw3IEBACiAgICAgZm9yIHZhciBpbiBzdGF0dXN2YXJzOgogICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyKHZhcikKICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB5aWVsZCAnJS0xN3MgPSAiJXMiJyAlICh2YXIsIHZhbHVlKQorICAgICAgICAgICAgeWllbGQgJyUtMjBzID0gIiVzIicgJSAodmFyLCB2YWx1ZSkKIAogZGVmIGJ1aWxkY2ZnX25lZWRlZHZhcnMoZCk6CiAgICAgbmVlZGVkX3ZhcnMgPSBvZS5kYXRhLnR5cGVkX3ZhbHVlKCJCVUlMRENGR19ORUVERURWQVJTIiwgZCkKQEAgLTIyNyw3ICsyMjAsNyBAQAogICAgICAgICBiYi5mYXRhbCgnVGhlIGZvbGxvd2luZyB2YXJpYWJsZShzKSB3ZXJlIG5vdCBzZXQ6ICVzXG5QbGVhc2Ugc2V0IHRoZW0gZGlyZWN0bHksIG9yIGNob29zZSBhIE1BQ0hJTkUgb3IgRElTVFJPIHRoYXQgc2V0cyB0aGVtLicgJSAnLCAnLmpvaW4ocGVzdGVydXNlcikpCiAKIGFkZGhhbmRsZXIgYmFzZV9ldmVudGhhbmRsZXIKLWJhc2VfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIGJiLmV2ZW50LkJ1aWxkU3RhcnRlZCBiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlQ29tcGxldGUgYmIuZXZlbnQuUmVjaXBlUGFyc2VkIgorYmFzZV9ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5Db25maWdQYXJzZWQgYmIuZXZlbnQuTXVsdGlDb25maWdQYXJzZWQgYmIuZXZlbnQuQnVpbGRTdGFydGVkIGJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVDb21wbGV0ZSBiYi5ldmVudC5SZWNpcGVQYXJzZWQiCiBweXRob24gYmFzZV9ldmVudGhhbmRsZXIoKSB7CiAgICAgaW1wb3J0IGJiLnJ1bnF1ZXVlCiAKQEAgLTI0Miw2ICsyMzUsMTYgQEAKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTJywgZCkKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTX05PTkZBVEFMJywgZCwgZmF0YWw9RmFsc2UpCiAKKyAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50Lk11bHRpQ29uZmlnUGFyc2VkKToKKyAgICAgICAgIyBXZSBuZWVkIHRvIGV4cGFuZCBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTIGluIGVhY2ggb2YgdGhlIG11bHRpY29uZmlnIGRhdGEgc3RvcmVzCisgICAgICAgICMgb3duIGNvbnRleHRzIHNvIHRoZSB2YXJpYWJsZXMgZ2V0IGV4cGFuZGVkIGNvcnJlY3RseSBmb3IgdGhhdCBhcmNoLCB0aGVuIGluamVjdCBiYWNrIGludG8KKyAgICAgICAgIyB0aGUgbWFpbiBkYXRhIHN0b3JlLgorICAgICAgICBkZXBzID0gW10KKyAgICAgICAgZm9yIGNvbmZpZyBpbiBlLm1jZGF0YToKKyAgICAgICAgICAgIGRlcHMuYXBwZW5kKGUubWNkYXRhW2NvbmZpZ10uZ2V0VmFyKCJTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTIikpCisgICAgICAgIGRlcHMgPSAiICIuam9pbihkZXBzKQorICAgICAgICBlLm1jZGF0YVsnJ10uc2V0VmFyKCJTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTIiwgZGVwcykKKwogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIuZXZlbnQuQnVpbGRTdGFydGVkKToKICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGUuZGF0YSkKICAgICAgICAgc3RhdHVzbGluZXMgPSBbXQpAQCAtMzkxLDcgKzM5NCw3IEBACiAgICAgIyBUaGVzZSB0YWtlIHRoZSBmb3JtOgogICAgICMKICAgICAjIFBBQ0tBR0VDT05GSUcgPz89ICI8ZGVmYXVsdCBvcHRpb25zPiIKLSAgICAjIFBBQ0tBR0VDT05GSUdbZm9vXSA9ICItLWVuYWJsZS1mb28sLS1kaXNhYmxlLWZvbyxmb29fZGVwZW5kcyxmb29fcnVudGltZV9kZXBlbmRzIgorICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMsZm9vX3J1bnRpbWVfcmVjb21tZW5kcyIKICAgICBwa2djb25maWdmbGFncyA9IGQuZ2V0VmFyRmxhZ3MoIlBBQ0tBR0VDT05GSUciKSBvciB7fQogICAgIGlmIHBrZ2NvbmZpZ2ZsYWdzOgogICAgICAgICBwa2djb25maWcgPSAoZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKSBvciAiIikuc3BsaXQoKQpAQCAtNDMzLDEyICs0MzYsMTMgQEAKIAogICAgICAgICBleHRyYWRlcHMgPSBbXQogICAgICAgICBleHRyYXJkZXBzID0gW10KKyAgICAgICAgZXh0cmFycmVjcyA9IFtdCiAgICAgICAgIGV4dHJhY29uZiA9IFtdCiAgICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHNvcnRlZChwa2djb25maWdmbGFncy5pdGVtcygpKToKICAgICAgICAgICAgIGl0ZW1zID0gZmxhZ3ZhbC5zcGxpdCgiLCIpCiAgICAgICAgICAgICBudW0gPSBsZW4oaXRlbXMpCi0gICAgICAgICAgICBpZiBudW0gPiA0OgotICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCBjYW4gYmUgc3BlY2lmaWVkISIKKyAgICAgICAgICAgIGlmIG51bSA+IDU6CisgICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBPbmx5IGVuYWJsZSxkaXNhYmxlLGRlcGVuZCxyZGVwZW5kLHJyZWNvbW1lbmQgY2FuIGJlIHNwZWNpZmllZCEiCiAgICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBmbGFnKSkKIAogICAgICAgICAgICAgaWYgZmxhZyBpbiBwa2djb25maWc6CkBAIC00NDYsMTIgKzQ1MCwxNSBAQAogICAgICAgICAgICAgICAgICAgICBleHRyYWRlcHMuYXBwZW5kKGl0ZW1zWzJdKQogICAgICAgICAgICAgICAgIGlmIG51bSA+PSA0IGFuZCBpdGVtc1szXToKICAgICAgICAgICAgICAgICAgICAgZXh0cmFyZGVwcy5hcHBlbmQoaXRlbXNbM10pCisgICAgICAgICAgICAgICAgaWYgbnVtID49IDUgYW5kIGl0ZW1zWzRdOgorICAgICAgICAgICAgICAgICAgICBleHRyYXJyZWNzLmFwcGVuZChpdGVtc1s0XSkKICAgICAgICAgICAgICAgICBpZiBudW0gPj0gMSBhbmQgaXRlbXNbMF06CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY29uZi5hcHBlbmQoaXRlbXNbMF0pCiAgICAgICAgICAgICBlbGlmIG51bSA+PSAyIGFuZCBpdGVtc1sxXToKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjb25mLmFwcGVuZChpdGVtc1sxXSkKICAgICAgICAgYXBwZW5kVmFyKCdERVBFTkRTJywgZXh0cmFkZXBzKQogICAgICAgICBhcHBlbmRWYXIoJ1JERVBFTkRTXyR7UE59JywgZXh0cmFyZGVwcykKKyAgICAgICAgYXBwZW5kVmFyKCdSUkVDT01NRU5EU18ke1BOfScsIGV4dHJhcnJlY3MpCiAgICAgICAgIGFwcGVuZFZhcignUEFDS0FHRUNPTkZJR19DT05GQVJHUycsIGV4dHJhY29uZikKIAogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKQEAgLTYxNywxNiArNjI0LDE2IEBACiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyBsemlwLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgICAgICAjICoueHogc2hvdWxkIERFUEVORCBvbiB4ei1uYXRpdmUgZm9yIHVucGFja2luZwotICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy54eicpOgorICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy54eicpIG9yIHBhdGguZW5kc3dpdGgoJy50eHonKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgICAgICAjIC56aXAgc2hvdWxkIERFUEVORCBvbiB1bnppcC1uYXRpdmUgZm9yIHVucGFja2luZwotICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy56aXAnKToKKyAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcuemlwJykgb3IgcGF0aC5lbmRzd2l0aCgnLmphcicpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgdW56aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgICAgICMgZmlsZSBpcyBuZWVkZWQgYnkgcnBtMmNwaW8uc2gKLSAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcuc3JjLnJwbScpOgotICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgZmlsZS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCisgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnJwbScpOgorICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgaWYgbmVlZHNyY3JldjoKICAgICAgICAgZC5zZXRWYXIoIlNSQ1BWIiwgIiR7QGJiLmZldGNoMi5nZXRfc3JjcmV2KGQpfSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwppbmRleCAzODIzYzY2Li43YTU1MzRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKQEAgLTE5Miw3ICsxOTIsNyBAQAogICAgIHBlID0gZC5nZXRWYXIoJ1BFJykgb3IgIjAiCiAgICAgcHYgPSBkLmdldFZhcignUFYnKQogICAgIHByID0gZC5nZXRWYXIoJ1BSJykKLSAgICBsYXllciA9IGJiLnV0aWxzLmdldF9maWxlX2xheWVyKGQuZ2V0VmFyKCdGSUxFJywgVHJ1ZSksIGQpCisgICAgbGF5ZXIgPSBiYi51dGlscy5nZXRfZmlsZV9sYXllcihkLmdldFZhcignRklMRScpLCBkKQogCiAgICAgcGtnZGF0YV9kaXIgPSBkLmdldFZhcignUEtHREFUQV9ESVInKQogICAgIHBhY2thZ2VzID0gIiIKQEAgLTM0OCw2ICszNDgsNyBAQAogICAgICAgICBmLndyaXRlKHUiUEFDS0FHRVMgPSAlc1xuIiAlICByY3BpbmZvLnBhY2thZ2VzKQogICAgICAgICBmLndyaXRlKHUiTEFZRVIgPSAlc1xuIiAlICByY3BpbmZvLmxheWVyKQogCisgICAgd3JpdGVfbGF0ZXN0X3NyY3JldihkLCBwa2doaXN0ZGlyKQogCiBkZWYgd3JpdGVfcGtnaGlzdG9yeShwa2dpbmZvLCBkKToKICAgICBiYi5kZWJ1ZygyLCAiV3JpdGluZyBwYWNrYWdlIGhpc3RvcnkgZm9yIHBhY2thZ2UgJXMiICUgcGtnaW5mby5uYW1lKQpAQCAtNjAwLDI2ICs2MDEsMTkgQEAKIAogcHl0aG9uIGJ1aWxkaGlzdG9yeV9nZXRfZXh0cmFfc2RraW5mbygpIHsKICAgICBpbXBvcnQgb3BlcmF0b3IKLSAgICBpbXBvcnQgbWF0aAorICAgIGZyb20gb2Uuc2RrIGltcG9ydCBnZXRfZXh0cmFfc2RraW5mbworCisgICAgc3N0YXRlX2RpciA9IGQuZXhwYW5kKCcke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc3N0YXRlLWNhY2hlJykKKyAgICBleHRyYV9pbmZvID0gZ2V0X2V4dHJhX3Nka2luZm8oc3N0YXRlX2RpcikKIAogICAgIGlmIGQuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycpID09ICdwb3B1bGF0ZV9zZGtfZXh0JyBhbmQgXAogICAgICAgICAgICAgInNkayIgaW4gKGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRkVBVFVSRVMnKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgdGFza3NpemVzID0ge30KLSAgICAgICAgZmlsZXNpemVzID0ge30KLSAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoZC5leHBhbmQoJyR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zc3RhdGUtY2FjaGUnKSk6Ci0gICAgICAgICAgICBmb3IgZm4gaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy50Z3onKToKLSAgICAgICAgICAgICAgICAgICAgZnNpemUgPSBpbnQobWF0aC5jZWlsKGZsb2F0KG9zLnBhdGguZ2V0c2l6ZShvcy5wYXRoLmpvaW4ocm9vdCwgZm4pKSkgLyAxMDI0KSkKLSAgICAgICAgICAgICAgICAgICAgdGFzayA9IGZuLnJzcGxpdCgnOicsIDEpWzFdLnNwbGl0KCdfJywgMSlbMV0uc3BsaXQoJy4nKVswXQotICAgICAgICAgICAgICAgICAgICBvcmlndG90YWwgPSB0YXNrc2l6ZXMuZ2V0KHRhc2ssIDApCi0gICAgICAgICAgICAgICAgICAgIHRhc2tzaXplc1t0YXNrXSA9IG9yaWd0b3RhbCArIGZzaXplCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzaXplc1tmbl0gPSBmc2l6ZQogICAgICAgICB3aXRoIG9wZW4oZC5leHBhbmQoJyR7QlVJTERISVNUT1JZX0RJUl9TREt9L3NzdGF0ZS1wYWNrYWdlLXNpemVzLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmaWxlc2l6ZXNfc29ydGVkID0gc29ydGVkKGZpbGVzaXplcy5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxLCAwKSwgcmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgZmlsZXNpemVzX3NvcnRlZCA9IHNvcnRlZChleHRyYV9pbmZvWydmaWxlc2l6ZXMnXS5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxLCAwKSwgcmV2ZXJzZT1UcnVlKQogICAgICAgICAgICAgZm9yIGZuLCBzaXplIGluIGZpbGVzaXplc19zb3J0ZWQ6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJTEwZCBLaUIgJXNcbicgJSAoc2l6ZSwgZm4pKQogICAgICAgICB3aXRoIG9wZW4oZC5leHBhbmQoJyR7QlVJTERISVNUT1JZX0RJUl9TREt9L3NzdGF0ZS10YXNrLXNpemVzLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICB0YXNrc2l6ZXNfc29ydGVkID0gc29ydGVkKHRhc2tzaXplcy5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxLCAwKSwgcmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgdGFza3NpemVzX3NvcnRlZCA9IHNvcnRlZChleHRyYV9pbmZvWyd0YXNrc2l6ZXMnXS5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxLCAwKSwgcmV2ZXJzZT1UcnVlKQogICAgICAgICAgICAgZm9yIHRhc2ssIHNpemUgaW4gdGFza3NpemVzX3NvcnRlZDoKICAgICAgICAgICAgICAgICBmLndyaXRlKCclMTBkIEtpQiAlc1xuJyAlIChzaXplLCB0YXNrKSkKIH0KQEAgLTcxNSwyMCArNzA5LDIzIEBACiAKIAogZGVmIGJ1aWxkaGlzdG9yeV9nZXRfY21kbGluZShkKToKLSAgICBpZiBzeXMuYXJndlswXS5lbmRzd2l0aCgnYmluL2JpdGJha2UnKToKLSAgICAgICAgYmluY21kID0gJ2JpdGJha2UnCi0gICAgZWxzZToKLSAgICAgICAgYmluY21kID0gc3lzLmFyZ3ZbMF0KLSAgICByZXR1cm4gJyVzICVzJyAlIChiaW5jbWQsICcgJy5qb2luKHN5cy5hcmd2WzE6XSkpCisgICAgYXJndiA9IGQuZ2V0VmFyKCdCQl9DTURMSU5FJywgRmFsc2UpCisgICAgaWYgYXJndjoKKyAgICAgICAgaWYgYXJndlswXS5lbmRzd2l0aCgnYmluL2JpdGJha2UnKToKKyAgICAgICAgICAgIGJpbmNtZCA9ICdiaXRiYWtlJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmluY21kID0gYXJndlswXQorICAgICAgICByZXR1cm4gJyVzICVzJyAlIChiaW5jbWQsICcgJy5qb2luKGFyZ3ZbMTpdKSkKKyAgICByZXR1cm4gJycKIAogCiBidWlsZGhpc3Rvcnlfc2luZ2xlX2NvbW1pdCgpIHsKIAlpZiBbICIkMyIgPSAiIiBdIDsgdGhlbgogCQljb21taXRvcHRzPSIke0JVSUxESElTVE9SWV9ESVJ9LyAtLWFsbG93LWVtcHR5IgotCQlpdGVtPSJObyBjaGFuZ2VzIgorCQlzaG9ydGxvZ3ByZWZpeD0iTm8gY2hhbmdlczogIgogCWVsc2UKLQkJY29tbWl0b3B0cz0iJDMgbWV0YWRhdGEtcmV2cyIKLQkJaXRlbT0iJDMiCisJCWNvbW1pdG9wdHM9IiIKKwkJc2hvcnRsb2dwcmVmaXg9IiIKIAlmaQogCWlmIFsgIiR7QlVJTERISVNUT1JZX0JVSUxEX0ZBSUxVUkVTfSIgPSAiMCIgXSA7IHRoZW4KIAkJcmVzdWx0PSJzdWNjZWVkZWQiCkBAIC03NDUsNyArNzQyLDcgQEAKIAllc2FjCiAJY29tbWl0bXNnZmlsZT1gbWt0ZW1wYAogCWNhdCA+ICRjb21taXRtc2dmaWxlIDw8IEVORAotJGl0ZW06IEJ1aWxkICR7QlVJTEROQU1FfSBvZiAke0RJU1RST30gJHtESVNUUk9fVkVSU0lPTn0gZm9yIG1hY2hpbmUgJHtNQUNISU5FfSBvbiAkMgorJHtzaG9ydGxvZ3ByZWZpeH1CdWlsZCAke0JVSUxETkFNRX0gb2YgJHtESVNUUk99ICR7RElTVFJPX1ZFUlNJT059IGZvciBtYWNoaW5lICR7TUFDSElORX0gb24gJDIKIAogY21kOiAkMQogCkBAIC03ODksOSArNzg2LDcgQEAKIAkJCWdpdCBhZGQgLUEgLgogCQkJIyBwb3JjZWxhaW4gb3V0cHV0IGxvb2tzIGxpa2UgIj8/IHBhY2thZ2VzL2Zvby9iYXIiCiAJCQkjIEVuc3VyZSB3ZSBjb21taXQgbWV0YWRhdGEtcmV2cyB3aXRoIHRoZSBmaXJzdCBjb21taXQKLQkJCWZvciBlbnRyeSBpbiBgZWNobyAiJHJlcG9zdGF0dXMiIHwgYXdrICd7cHJpbnQgJDJ9JyB8IGF3ayAtRi8gJ3twcmludCAkMX0nIHwgc29ydCB8IHVuaXFgIDsgZG8KLQkJCQlidWlsZGhpc3Rvcnlfc2luZ2xlX2NvbW1pdCAiJENNRExJTkUiICIkSE9TVE5BTUUiICIkZW50cnkiCi0JCQlkb25lCisJCQlidWlsZGhpc3Rvcnlfc2luZ2xlX2NvbW1pdCAiJENNRExJTkUiICIkSE9TVE5BTUUiIGR1bW15CiAJCQlnaXQgZ2MgLS1hdXRvIC0tcXVpZXQKIAkJZWxzZQogCQkJYnVpbGRoaXN0b3J5X3NpbmdsZV9jb21taXQgIiRDTURMSU5FIiAiJEhPU1ROQU1FIgpAQCAtODI5LDYgKzgyNCw4IEBACiAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBnZXRhdHRyKGUsICdfaW50ZXJydXB0ZWQnLCAwKQogICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0JVSUxESElTVE9SWV9CVUlMRF9JTlRFUlJVUFRFRCcsIHN0cihpbnRlcnJ1cHRlZCkpCiAgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJidWlsZGhpc3RvcnlfY29tbWl0IiwgbG9jYWxkYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJObyBjb21taXQgc2luY2UgQlVJTERISVNUT1JZX0NPTU1JVCAhPSAnMSciKQogfQogCiBhZGRoYW5kbGVyIGJ1aWxkaGlzdG9yeV9ldmVudGhhbmRsZXIKQEAgLTg3NCw3ICs4NzEsMTAgQEAKIGRvX2ZldGNoW3Bvc3RmdW5jc10gKz0gIndyaXRlX3NyY3JldiIKIGRvX2ZldGNoW3ZhcmRlcHNleGNsdWRlXSArPSAid3JpdGVfc3JjcmV2IgogcHl0aG9uIHdyaXRlX3NyY3JldigpIHsKLSAgICBwa2doaXN0ZGlyID0gZC5nZXRWYXIoJ0JVSUxESElTVE9SWV9ESVJfUEFDS0FHRScpCisgICAgd3JpdGVfbGF0ZXN0X3NyY3JldihkLCBkLmdldFZhcignQlVJTERISVNUT1JZX0RJUl9QQUNLQUdFJykpCit9CisKK2RlZiB3cml0ZV9sYXRlc3Rfc3JjcmV2KGQsIHBrZ2hpc3RkaXIpOgogICAgIHNyY3JldmZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnaGlzdGRpciwgJ2xhdGVzdF9zcmNyZXYnKQogCiAgICAgc3JjcmV2cywgdGFnX3NyY3JldnMgPSBfZ2V0X3NyY3Jldl92YWx1ZXMoZCkKQEAgLTkxMiw0ICs5MTIsMzMgQEAKICAgICBlbHNlOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzcmNyZXZmaWxlKToKICAgICAgICAgICAgIG9zLnJlbW92ZShzcmNyZXZmaWxlKQorCitkb190ZXN0aW1hZ2VbcG9zdGZ1bmNzXSArPSAid3JpdGVfcHRlc3RfcmVzdWx0IgorZG9fdGVzdGltYWdlW3ZhcmRlcHNleGNsdWRlXSArPSAid3JpdGVfcHRlc3RfcmVzdWx0IgorCitweXRob24gd3JpdGVfcHRlc3RfcmVzdWx0KCkgeworICAgIHdyaXRlX2xhdGVzdF9wdGVzdF9yZXN1bHQoZCwgZC5nZXRWYXIoJ0JVSUxESElTVE9SWV9ESVInKSkKIH0KKworZGVmIHdyaXRlX2xhdGVzdF9wdGVzdF9yZXN1bHQoZCwgaGlzdGRpcik6CisgICAgaW1wb3J0IGdsb2IKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIHRlc3RfbG9nX2RpciA9IGQuZ2V0VmFyKCdURVNUX0xPR19ESVInKQorICAgIGlucHV0X3B0ZXN0ID0gb3MucGF0aC5qb2luKHRlc3RfbG9nX2RpciwgJ3B0ZXN0X2xvZycpCisgICAgb3V0cHV0X3B0ZXN0ID0gb3MucGF0aC5qb2luKGhpc3RkaXIsICdwdGVzdCcpCisgICAgaWYgb3MucGF0aC5leGlzdHMoaW5wdXRfcHRlc3QpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIExvY2sgaXQgYXZvaWQgcmFjZSBpc3N1ZQorICAgICAgICAgICAgbG9jayA9IGJiLnV0aWxzLmxvY2tmaWxlKG91dHB1dF9wdGVzdCArICIvcHRlc3QubG9jayIpCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3V0cHV0X3B0ZXN0KQorICAgICAgICAgICAgb2UucGF0aC5jb3B5dHJlZShpbnB1dF9wdGVzdCwgb3V0cHV0X3B0ZXN0KQorICAgICAgICAgICAgIyBTb3J0IHRlc3QgcmVzdWx0CisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGdsb2IuZ2xvYignJXMvcGFzcy5mYWlsLionICUgb3V0cHV0X3B0ZXN0KToKKyAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnUHJvY2Vzc2luZyAlcycgJSByZXN1bHQpCisgICAgICAgICAgICAgICAgY21kID0gWydzb3J0JywgcmVzdWx0LCAnLW8nLCByZXN1bHRdCisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1J1bm5pbmcgJXMnICUgY21kKQorICAgICAgICAgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbChjbWQpCisgICAgICAgICAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCdGYWlsZWQgdG8gcnVuICVzIScgJSBjbWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxvY2spCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NjYWNoZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jY2FjaGUuYmJjbGFzcwppbmRleCBkNThjOGY2Li45NjA5MDIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NjYWNoZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MKQEAgLTEsNiArMSw1IEBACiBDQ0FDSEUgPSAiJHtAYmIudXRpbHMud2hpY2goZC5nZXRWYXIoJ1BBVEgnKSwgJ2NjYWNoZScpIGFuZCAnY2NhY2hlICd9IgogZXhwb3J0IENDQUNIRV9ESVIgPz0gIiR7VE1QRElSfS9jY2FjaGUvJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30vJHtQTn0iCi1DQ0FDSEVfRElTQUJMRVt1bmV4cG9ydF0gPSAiMSIKIAogIyBXZSBuZWVkIHRvIHN0b3AgY2NhY2hlIGNvbnNpZGVyaW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvciB0aGUKICMgZGVidWctcHJlZml4LW1hcCB0YXJnZXQgZGlyZWN0b3J5IHRvIGJlIHNpZ25pZmljYW50IHdoZW4gY2FsY3VsYXRpbmcKQEAgLTEwLDYgKzksMyBAQAogCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGNjYWNoZS1uYXRpdmUiCiBERVBFTkRTW3ZhcmRlcHZhbHVlZXhjbHVkZV0gPSAiIGNjYWNoZS1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtDQ0FDSEVfRElSfSIKLWRvX2tlcm5lbF9jb25maWdtZVtkaXJzXSA9KyAiJHtDQ0FDSEVfRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCAxMmRmNjE3Li5hYzJjMTUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC0zMSw2ICszMSw5IEBACiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kID0gIiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgogCitFWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgorRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2staW5zdGFsbCA9ICIke1BBUkFMTEVMX01BS0VJTlNUfSAiCisKICMgQ01ha2UgZXhwZWN0cyB0YXJnZXQgYXJjaGl0ZWN0dXJlcyBpbiB0aGUgZm9ybWF0IG9mIHVuYW1lKDIpLAogIyB3aGljaCBkbyBub3QgYWx3YXlzIG1hdGNoIFRBUkdFVF9BUkNILCBzbyBhbGwgdGhlIG5lY2Vzc2FyeQogIyBjb252ZXJzaW9ucyBzaG91bGQgaGFwcGVuIGhlcmUuCkBAIC0xMzUsMTMgKzEzOCwxMyBAQAogCiBkb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgogY21ha2VfZG9fY29tcGlsZSgpICB7Ci0JY2QgJHtCfQotCWJhc2VfZG9fY29tcGlsZSBWRVJCT1NFPTEKKwliYm5vdGUgVkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwlWRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQogfQogCiBjbWFrZV9kb19pbnN0YWxsKCkgewotCWNkICR7Qn0KLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwliYm5vdGUgREVTVERJUj0nJHtEfScgY21ha2UgLS1idWlsZCAnJHtCfScgLS10YXJnZXQgaW5zdGFsbCAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJREVTVERJUj0nJHtEfScgY21ha2UgLS1idWlsZCAnJHtCfScgLS10YXJnZXQgaW5zdGFsbCAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CiB9CiAKIEVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbCBkb19nZW5lcmF0ZV90b29sY2hhaW5fZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtbDEuYmJjbGFzcwppbmRleCAzOGU2NjEzLi45MjY3NDdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtbDEuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtbDEuYmJjbGFzcwpAQCAtNjQsNyArNjQsOCBAQAogICAgIGlmIGlzZGlmZjoKICAgICAgICAgc3RhdGVtZW50ID0gJ2RpZmYgLS11bmNoYW5nZWQtbGluZS1mb3JtYXQ9IC0tb2xkLWxpbmUtZm9ybWF0PSAtLW5ldy1saW5lLWZvcm1hdD0iJUwiICcgKyBjb25maWdvcmlnICsgJyAnICsgY29uZmlnICsgJz4nICsgZnJhZ21lbnQKICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHN0YXRlbWVudCwgc2hlbGw9VHJ1ZSkKLQorICAgICAgICAjIE5vIG5lZWQgdG8gY2hlY2sgdGhlIGV4aXQgY29kZSBhcyB3ZSBrbm93IGl0J3MgZ29pbmcgdG8gYmUKKyAgICAgICAgIyBub24temVybywgYnV0IHRoYXQncyB3aGF0IHdlIGV4cGVjdC4KICAgICAgICAgc2h1dGlsLmNvcHkoY29uZmlnb3JpZywgY29uZmlnKQogCiAgICAgICAgIGJiLnBsYWluKCJDb25maWcgZnJhZ21lbnQgaGFzIGJlZW4gZHVtcGVkIGludG86XG4gJXMiICUgZnJhZ21lbnQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKaW5kZXggNDkzODhkNC4uMTkyODQ1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwpAQCAtMTUsNyArMTUsNyBAQAogIyBVcGRhdGUgQkFTRV9QQUNLQUdFX0FSQ0ggYW5kIFBBQ0tBR0VfQVJDSFMKICMKIFBBQ0tBR0VfQVJDSCA9ICIke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0iCi1CQVNFQ0FOQURJQU5FWFRSQU9TID89ICJsaW51eC11Y2xpYmMgbGludXgtbXVzbCIKK0JBU0VDQU5BRElBTkVYVFJBT1MgPz0gImxpbnV4LW11c2wiCiBDQU5BRElBTkVYVFJBT1MgPSAiJHtCQVNFQ0FOQURJQU5FWFRSQU9TfSIKIENBTkFESUFORVhUUkFWRU5ET1IgPSAiIgogTU9ESUZZVE9TID8/PSAiMSIKQEAgLTM2LDExICszNiw5IEBACiAgICAgdG9zID0gZC5nZXRWYXIoIlRBUkdFVF9PUyIpCiAgICAgd2hpdGVsaXN0ID0gW10KICAgICBleHRyYWxpYmNzID0gWyIiXQotICAgIGlmICJ1Y2xpYmMiIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIik6Ci0gICAgICAgIGV4dHJhbGliY3MuYXBwZW5kKCJ1Y2xpYmMiKQogICAgIGlmICJtdXNsIiBpbiBkLmdldFZhcigiQkFTRUNBTkFESUFORVhUUkFPUyIpOgogICAgICAgICBleHRyYWxpYmNzLmFwcGVuZCgibXVzbCIpCi0gICAgZm9yIHZhcmlhbnQgaW4gWyIiLCAic3BlIiwgIngzMiIsICJlYWJpIiwgIm4zMiJdOgorICAgIGZvciB2YXJpYW50IGluIFsiIiwgInNwZSIsICJ4MzIiLCAiZWFiaSIsICJuMzIiLCAiaWxwMzIiXToKICAgICAgICAgZm9yIGxpYmMgaW4gZXh0cmFsaWJjczoKICAgICAgICAgICAgIGVudHJ5ID0gImxpbnV4IgogICAgICAgICAgICAgaWYgdmFyaWFudCBhbmQgbGliYzoKQEAgLTgwLDcgKzc4LDcgQEAKICAgICAgICAgZm9yIGV4dHJhb3MgaW4gZC5nZXRWYXIoIkJBU0VDQU5BRElBTkVYVFJBT1MiKS5zcGxpdCgpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXIoIkNBTkFESUFORVhUUkFPUyIsICIgIiArIGV4dHJhb3MgKyAibjMyIikKICAgICBpZiB0YXJjaCA9PSAiYXJtIiBvciB0YXJjaCA9PSAiYXJtZWIiOgotICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiBsaW51eC1nbnVlYWJpIGxpbnV4LW11c2xlYWJpIGxpbnV4LXVjbGliY2VhYmkiKQorICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiBsaW51eC1nbnVlYWJpIGxpbnV4LW11c2xlYWJpIikKICAgICAgICAgZC5zZXRWYXIoIlRBUkdFVF9PUyIsICJsaW51eC1nbnVlYWJpIikKICAgICBlbHNlOgogICAgICAgICBkLnNldFZhcigiVEFSR0VUX09TIiwgImxpbnV4IikKQEAgLTExNSwxMSArMTEzLDYgQEAKIEhPU1RfTERfQVJDSCA9ICIke1NES19MRF9BUkNIfSIKIEhPU1RfQVNfQVJDSCA9ICIke1NES19BU19BUkNIfSIKIAotVEFSR0VUX0NQUEZMQUdTID0gIiR7QlVJTERTREtfQ1BQRkxBR1N9IgotVEFSR0VUX0NGTEFHUyA9ICIke0JVSUxEU0RLX0NGTEFHU30iCi1UQVJHRVRfQ1hYRkxBR1MgPSAiJHtCVUlMRFNES19DWFhGTEFHU30iCi1UQVJHRVRfTERGTEFHUyA9ICIke0JVSUxEU0RLX0xERkxBR1N9IgotCiAjYXNzaWduIERQS0dfQVJDSAogRFBLR19BUkNIID0gIiR7QGRlYmlhbl9hcmNoX21hcChkLmdldFZhcignU0RLX0FSQ0gnKSwgJycpfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCmluZGV4IDRmZWIwMWUuLmQyMTc3MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKQEAgLTUwLDcgKzUwLDcgQEAKICMgUGF0aCBtYW5nbGluZyBuZWVkZWQgYnkgdGhlIGNyb3NzIHBhY2thZ2luZwogIyBOb3RlIHRoYXQgd2UgdXNlIDo9IGhlcmUgdG8gZW5zdXJlIHRoYXQgbGliZGlyIGFuZCBpbmNsdWRlZGlyIGFyZQogIyB0YXJnZXQgcGF0aHMuCi10YXJnZXRfYmFzZV9wcmVmaXggOj0gIiR7YmFzZV9wcmVmaXh9IgordGFyZ2V0X2Jhc2VfcHJlZml4IDo9ICIke3Jvb3RfcHJlZml4fSIKIHRhcmdldF9wcmVmaXggOj0gIiR7cHJlZml4fSIKIHRhcmdldF9leGVjX3ByZWZpeCA6PSAiJHtleGVjX3ByZWZpeH0iCiB0YXJnZXRfYmFzZV9saWJkaXIgPSAiJHt0YXJnZXRfYmFzZV9wcmVmaXh9LyR7YmFzZWxpYn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwppbmRleCAxM2VjNjJlLi5iYzJmMDNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKQEAgLTgzLDYgKzgzLDExIEBACiAKICAgICBpbXBvcnQgc2h1dGlsCiAKKyAgICBpZiBkLmdldFZhcigiQ1ZFX0NIRUNLX0NPUFlfRklMRVMiKSA9PSAiMSI6CisgICAgICAgIGRlcGxveV9maWxlID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfRElSIiksIGQuZ2V0VmFyKCJQTiIpKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXBsb3lfZmlsZSk6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoZGVwbG95X2ZpbGUpCisKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkLmdldFZhcigiQ1ZFX0NIRUNLX1RNUF9GSUxFIikpOgogICAgICAgICBiYi5ub3RlKCJXcml0aW5nIHJvb3RmcyBDVkUgbWFuaWZlc3QiKQogICAgICAgICBkZXBsb3lfZGlyID0gZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiKQpAQCAtMTAyLDYgKzEwNyw3IEBACiB9CiAKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EX3ByZXBlbmQgPSAiJHtAJ2N2ZV9jaGVja193cml0ZV9yb290ZnNfbWFuaWZlc3Q7ICcgaWYgZC5nZXRWYXIoJ0NWRV9DSEVDS19DUkVBVEVfTUFOSUZFU1QnKSA9PSAnMScgZWxzZSAnJ30iCitkb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICIke0AnZG9fY3ZlX2NoZWNrJyBpZiBkLmdldFZhcignQ1ZFX0NIRUNLX0NSRUFURV9NQU5JRkVTVCcpID09ICcxJyBlbHNlICcnfSIKIAogZGVmIGdldF9wYXRjaGVzX2N2ZXMoZCk6CiAgICAgIiIiCkBAIC0xMTIsMTAgKzExOCwyNCBAQAogCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGN2ZV9tYXRjaCA9IHJlLmNvbXBpbGUoIkNWRTooIENWRVwtXGR7NH1cLVxkKykrIikKKworICAgICMgTWF0Y2hlcyBsYXN0IENWRS0xMjM0LTIxMTQzMiBpbiB0aGUgZmlsZSBuYW1lLCBhbHNvIGlmIHdyaXR0ZW4KKyAgICAjIHdpdGggc21hbGwgbGV0dGVycy4gTm90IHN1cHBvcnRpbmcgbXVsdGlwbGUgQ1ZFIGlkJ3MgaW4gYSBzaW5nbGUKKyAgICAjIGZpbGUgbmFtZS4KKyAgICBjdmVfZmlsZV9uYW1lX21hdGNoID0gcmUuY29tcGlsZSgiLiooW0NjXVtWdl1bRWVdXC1cZHs0fVwtXGQrKSIpCisKICAgICBwYXRjaGVkX2N2ZXMgPSBzZXQoKQogICAgIGJiLmRlYnVnKDIsICJMb29raW5nIGZvciBwYXRjaGVzIHRoYXQgc29sdmVzIENWRXMgZm9yICVzIiAlIHBuKQogICAgIGZvciB1cmwgaW4gc3JjX3BhdGNoZXMoZCk6CiAgICAgICAgIHBhdGNoX2ZpbGUgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKVsyXQorCisgICAgICAgICMgQ2hlY2sgcGF0Y2ggZmlsZSBuYW1lIGZvciBDVkUgSUQKKyAgICAgICAgZm5hbWVfbWF0Y2ggPSBjdmVfZmlsZV9uYW1lX21hdGNoLnNlYXJjaChwYXRjaF9maWxlKQorICAgICAgICBpZiBmbmFtZV9tYXRjaDoKKyAgICAgICAgICAgIGN2ZSA9IGZuYW1lX21hdGNoLmdyb3VwKDEpLnVwcGVyKCkKKyAgICAgICAgICAgIHBhdGNoZWRfY3Zlcy5hZGQoY3ZlKQorICAgICAgICAgICAgYmIuZGVidWcoMiwgIkZvdW5kIENWRSAlcyBmcm9tIHBhdGNoIGZpbGUgbmFtZSAlcyIgJSAoY3ZlLCBwYXRjaF9maWxlKSkKKwogICAgICAgICB3aXRoIG9wZW4ocGF0Y2hfZmlsZSwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdGNoX3RleHQgPSBmLnJlYWQoKQpAQCAtMTM0LDcgKzE1NCw3IEBACiAgICAgICAgICAgICBmb3IgY3ZlIGluIGN2ZXMuc3BsaXQoKToKICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiUGF0Y2ggJXMgc29sdmVzICVzIiAlIChwYXRjaF9maWxlLCBjdmUpKQogICAgICAgICAgICAgICAgIHBhdGNoZWRfY3Zlcy5hZGQoY3ZlKQotICAgICAgICBlbHNlOgorICAgICAgICBlbGlmIG5vdCBmbmFtZV9tYXRjaDoKICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJQYXRjaCAlcyBkb2Vzbid0IHNvbHZlIENWRXMiICUgcGF0Y2hfZmlsZSkKIAogICAgIHJldHVybiBwYXRjaGVkX2N2ZXMKQEAgLTE0OSw3ICsxNjksNyBAQAogICAgIGN2ZXNfcGF0Y2hlZCA9IFtdCiAgICAgY3Zlc191bnBhdGNoZWQgPSBbXQogICAgIGJwbiA9IGQuZ2V0VmFyKCJDVkVfUFJPRFVDVCIpCi0gICAgcHYgPSBkLmdldFZhcigiUFYiKS5zcGxpdCgiZ2l0KyIpWzBdCisgICAgcHYgPSBkLmdldFZhcigiUFYiKS5zcGxpdCgiK2dpdCIpWzBdCiAgICAgY3ZlcyA9ICIgIi5qb2luKHBhdGNoZWRfY3ZlcykKICAgICBjdmVfZGJfZGlyID0gZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9ESVIiKQogICAgIGN2ZV93aGl0ZWxpc3QgPSBhc3QubGl0ZXJhbF9ldmFsKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfQ1ZFX1dISVRFTElTVCIpKQpAQCAtMTcxLDcgKzE5MSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCIlcywlcywlcywiICUgKGJwbiwgcHYsIGN2ZXMpKQogICAgICAgICBjbWQuYXBwZW5kKGZhdXgpCiAKLSAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICBiYi5kZWJ1ZygyLCAiT3V0cHV0IG9mIGNvbW1hbmQgJXM6XG4lcyIgJSAoIlxuIi5qb2luKGNtZCksIG91dHB1dCkpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIGJiLndhcm4oIkNvdWxkbid0IGNoZWNrIGZvciBDVkVzOiAlcyAob3V0cHV0ICVzKSIgJSAoZSwgZS5vdXRwdXQpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZzaGVsbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZzaGVsbC5iYmNsYXNzCmluZGV4IDRkZTdlYTYuLmZkZjdkYzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnNoZWxsLmJiY2xhc3MKQEAgLTgsMTQgKzgsMTQgQEAKICAgICAgICBmYWtlZW52ID0gZC5nZXRWYXIoIkZBS0VST09URU5WIikuc3BsaXQoKQogICAgICAgIGZvciBmIGluIGZha2VlbnY6CiAgICAgICAgICAgICBrID0gZi5zcGxpdCgiPSIpCi0gICAgICAgICAgICBkLnNldFZhcihrWzBdLCBrWzFdKSAgICAgICAgICAgCisgICAgICAgICAgICBkLnNldFZhcihrWzBdLCBrWzFdKQogICAgICAgICAgICAgZC5hcHBlbmRWYXIoIk9FX1RFUk1JTkFMX0VYUE9SVFMiLCAiICIgKyBrWzBdKQogICAgICAgIGQuZGVsVmFyRmxhZygiZG9fZGV2c2hlbGwiLCAiZmFrZXJvb3QiKQogCiAgICAgb2VfdGVybWluYWwoZC5nZXRWYXIoJ0RFVlNIRUxMJyksICdPcGVuRW1iZWRkZWQgRGV2ZWxvcGVyIFNoZWxsJywgZCkKIH0KIAotYWRkdGFzayBkZXZzaGVsbCBhZnRlciBkb19wYXRjaAorYWRkdGFzayBkZXZzaGVsbCBhZnRlciBkb19wYXRjaCBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290CiAKICMgVGhlIGRpcmVjdG9yeSB0aGF0IHRoZSB0ZXJtaW5hbCBzdGFydHMgaW4KIERFVlNIRUxMX1NUQVJURElSID89ICIke1N9IgpAQCAtNDksNyArNDksNyBAQAogICAgICAgICBvbGRbM10gPSBvbGRbM10gJn4gdGVybWlvcy5FQ0hPICZ+IHRlcm1pb3MuSUNBTk9OCiAgICAgICAgICMgJn4gdGVybWlvcy5JU0lHCiAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0ZXJtaW9zLlRDU0FEUkFJTiwgb2xkKQotICAgIAorCiAgICAgIyBObyBlY2hvIG9yIGJ1ZmZlcmluZyBvdmVyIHRoZSBwdHkKICAgICBub2VjaG9pY2Fub24ocykKIApAQCAtMTQ1LDcgKzE0NSw3IEBACiAgICAgdHJ5OgogICAgICAgICBkZXZweXNoZWxsKGQpCiAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICMgU3RvcCB0aGUgU0lHVEVSTSBhYm92ZSBjYXVzaW5nIGFuIGVycm9yIGV4aXQgY29kZSAgICAKKyAgICAgICAgIyBTdG9wIHRoZSBTSUdURVJNIGFib3ZlIGNhdXNpbmcgYW4gZXJyb3IgZXhpdCBjb2RlCiAgICAgICAgIHJldHVybgogICAgIGZpbmFsbHk6CiAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNWJjODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKQEAgLTAsMCArMSwxNjUgQEAKKyMgRGV2ZWxvcG1lbnQgdG9vbCAtIHNvdXJjZSBleHRyYWN0aW9uIGhlbHBlciBjbGFzcworIworIyBOT1RFOiB0aGlzIGNsYXNzIGlzIGludGVuZGVkIGZvciB1c2UgYnkgZGV2dG9vbCBhbmQgc2hvdWxkIG5vdCBiZQorIyBpbmhlcml0ZWQgbWFudWFsbHkuCisjCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorCisKK0RFVlRPT0xfVEVNUERJUiA/PSAiIgorREVWVE9PTF9QQVRDSF9TUkNESVIgPSAiJHtERVZUT09MX1RFTVBESVJ9L3BhdGNod29ya2RpciIKKworCitweXRob24oKSB7CisgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1RFTVBESVInKQorCisgICAgaWYgbm90IHRlbXBkaXI6CisgICAgICAgIGJiLmZhdGFsKCdkZXZ0b29sLXNvdXJjZSBjbGFzcyBpcyBmb3IgaW50ZXJuYWwgdXNlIGJ5IGRldnRvb2wgb25seScpCisKKyAgICAjIE1ha2UgYSBzdWJkaXIgc28gd2UgZ3VhcmQgYWdhaW5zdCBXT1JLRElSPT1TCisgICAgd29ya2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnd29ya2RpcicpCisgICAgZC5zZXRWYXIoJ1dPUktESVInLCB3b3JrZGlyKQorICAgIGlmIG5vdCBkLmdldFZhcignUycpLnN0YXJ0c3dpdGgod29ya2Rpcik6CisgICAgICAgICMgVXN1YWxseSBhIHNoYXJlZCB3b3JrZGlyIHJlY2lwZSAoa2VybmVsLCBnY2MpCisgICAgICAgICMgVHJ5IHRvIHNldCBhIHJlYXNvbmFibGUgZGVmYXVsdAorICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vc291cmNlJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vJXMnICUgb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcignUycpKSkKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKKyAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIHNvdXJjZSB0byBTVEFHSU5HX0tFUk5FTF9ESVIgaGVyZQorICAgICAgICBkLnNldFZhcignU1RBR0lOR19LRVJORUxfRElSJywgJyR7U30nKQorCisgICAgZC5zZXRWYXIoJ1NUQU1QU19ESVInLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3N0YW1wcycpKQorICAgIGQuc2V0VmFyKCdUJywgb3MucGF0aC5qb2luKHRlbXBkaXIsICd0ZW1wJykpCisKKyAgICAjIEhvb2sgaW4gcHJlL3Bvc3RmdW5jcworICAgIGlzX2tlcm5lbF95b2N0byA9IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIGQpCisgICAgaWYgaXNfa2VybmVsX3lvY3RvOgorICAgICAgICB1bnBhY2t0YXNrID0gJ2RvX2tlcm5lbF9jaGVja291dCcKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19jb25maWd1cmUnLCAncG9zdGZ1bmNzJywgJyBkZXZ0b29sX3Bvc3RfY29uZmlndXJlJykKKyAgICBlbHNlOgorICAgICAgICB1bnBhY2t0YXNrID0gJ2RvX3VucGFjaycKKyAgICBkLmFwcGVuZFZhckZsYWcodW5wYWNrdGFzaywgJ3Bvc3RmdW5jcycsICcgZGV2dG9vbF9wb3N0X3VucGFjaycpCisgICAgZC5wcmVwZW5kVmFyRmxhZygnZG9fcGF0Y2gnLCAncHJlZnVuY3MnLCAnIGRldnRvb2xfcHJlX3BhdGNoJykKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhdGNoJywgJ3Bvc3RmdW5jcycsICcgZGV2dG9vbF9wb3N0X3BhdGNoJykKKworICAgICMgTk9URTogaW4gb3JkZXIgZm9yIHRoZSBwYXRjaCBzdHVmZiB0byBiZSBmdWxseSBmdW5jdGlvbmFsLAorICAgICMgUEFUQ0hUT09MIGFuZCBQQVRDSF9DT01NSVRfRlVOQ1RJT05TIG5lZWQgdG8gYmUgc2V0OyB3ZSBjYW4ndAorICAgICMgZG8gdGhhdCBoZXJlIGJlY2F1c2Ugd2UgY2FuJ3QgZ3VhcmFudGVlIHRoZSBvcmRlciBvZiB0aGUgYW5vbnltb3VzCisgICAgIyBmdW5jdGlvbnMsIHNvIGl0IGdldHMgZG9uZSBpbiB0aGUgYmJhcHBlbmQgd2UgY3JlYXRlLgorfQorCisKK3B5dGhvbiBkZXZ0b29sX3Bvc3RfdW5wYWNrKCkgeworICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscworICAgIGltcG9ydCBzaHV0aWwKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdDT1JFQkFTRScpLCAnc2NyaXB0cycsICdsaWInKSkKKyAgICBpbXBvcnQgc2NyaXB0dXRpbHMKKyAgICBmcm9tIGRldnRvb2wgaW1wb3J0IHNldHVwX2dpdF9yZXBvCisKKyAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ0RFVlRPT0xfVEVNUERJUicpCisgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKKyAgICBzcmNzdWJkaXIgPSBkLmdldFZhcignUycpCisKKyAgICBkZWYgX21vdmVfZmlsZShzcmMsIGRzdCk6CisgICAgICAgICIiIk1vdmUgYSBmaWxlLiBDcmVhdGVzIGFsbCB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YgZGVzdGluYXRpb24gcGF0aC4iIiIKKyAgICAgICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBkc3RfZDoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfZCkKKyAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBkc3QpCisKKyAgICBkZWYgX2xzX3RyZWUoZGlyZWN0b3J5KToKKyAgICAgICAgIiIiUmVjdXJzaXZlIGxpc3Rpbmcgb2YgZmlsZXMgaW4gYSBkaXJlY3RvcnkiIiIKKyAgICAgICAgcmV0ID0gW10KKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHJldC5leHRlbmQoW29zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZm5hbWUpLCBkaXJlY3RvcnkpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgaW4gZmlsZXNdKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICAjIE1vdmUgbG9jYWwgc291cmNlIGZpbGVzIGludG8gc2VwYXJhdGUgc3ViZGlyCisgICAgcmVjaXBlX3BhdGNoZXMgPSBbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluCisgICAgICAgICAgICAgICAgICAgICAgICBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3BhdGNoZXMoZCldCisgICAgbG9jYWxfZmlsZXMgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX2xvY2FsX2ZpbGVzKGQpCisKKyAgICAjIElnbm9yZSBsb2NhbCBmaWxlcyB3aXRoIHN1YmRpcj17QlB9CisgICAgc3JjYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzcmNzdWJkaXIpCisgICAgbG9jYWxfZmlsZXMgPSBbZm5hbWUgZm9yIGZuYW1lIGluIGxvY2FsX2ZpbGVzIGlmCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSkpIGFuZAorICAgICAgICAgICAgICAgICAgICAoc3JjYWJzcGF0aCA9PSB3b3JrZGlyIG9yIG5vdAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od29ya2RpciwgZm5hbWUpLnN0YXJ0c3dpdGgoc3JjYWJzcGF0aCArCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXApKV0KKyAgICBpZiBsb2NhbF9maWxlczoKKyAgICAgICAgZm9yIGZuYW1lIGluIGxvY2FsX2ZpbGVzOgorICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4od29ya2RpciwgZm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBkaXIsICdvZS1sb2NhbC1maWxlcycsIGZuYW1lKSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnb2UtbG9jYWwtZmlsZXMnLCAnLmdpdGlnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCcjIElnbm9yZSBsb2NhbCBmaWxlcywgYnkgZGVmYXVsdC4gUmVtb3ZlIHRoaXMgZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICdpZiB5b3Ugd2FudCB0byBjb21taXQgdGhlIGRpcmVjdG9yeSB0byBHaXRcbipcbicpCisKKyAgICBpZiBzcmNzdWJkaXIgPT0gd29ya2RpcjoKKyAgICAgICAgIyBGaW5kIG5vbi1wYXRjaCBub24tbG9jYWwgc291cmNlcyB0aGF0IHdlcmUgInVucGFja2VkIiB0byBzcmN0cmVlCisgICAgICAgICMgZGlyZWN0b3J5CisgICAgICAgIHNyY19maWxlcyA9IFtmbmFtZSBmb3IgZm5hbWUgaW4gX2xzX3RyZWUod29ya2RpcikgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpIG5vdCBpbiByZWNpcGVfcGF0Y2hlc10KKyAgICAgICAgc3Jjc3ViZGlyID0gZC5nZXRWYXIoJ0RFVlRPT0xfUEFUQ0hfU1JDRElSJykKKyAgICAgICAgIyBNb3ZlIHNvdXJjZSBmaWxlcyB0byBTCisgICAgICAgIGZvciBwYXRoIGluIHNyY19maWxlczoKKyAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKHdvcmtkaXIsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY3N1YmRpciwgcGF0aCkpCisgICAgZWxpZiBvcy5wYXRoLmRpcm5hbWUoc3Jjc3ViZGlyKSAhPSB3b3JrZGlyOgorICAgICAgICAjIEhhbmRsZSBpZiBTIGlzIHNldCB0byBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlCisgICAgICAgIHNyY3N1YmRpciA9IG9zLnBhdGguam9pbih3b3JrZGlyLCBvcy5wYXRoLnJlbHBhdGgoc3Jjc3ViZGlyLCB3b3JrZGlyKS5zcGxpdChvcy5zZXApWzBdKQorCisgICAgc2NyaXB0dXRpbHMuZ2l0X2NvbnZlcnRfc3RhbmRhbG9uZV9jbG9uZShzcmNzdWJkaXIpCisKKyAgICAjIE1ha2Ugc3VyZSB0aGF0IHNyY3N1YmRpciBleGlzdHMKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoc3Jjc3ViZGlyKQorICAgIGlmIG5vdCBvcy5saXN0ZGlyKHNyY3N1YmRpcik6CisgICAgICAgIGJiLndhcm4oIk5vIHNvdXJjZSB1bnBhY2tlZCB0byBTIC0gZWl0aGVyIHRoZSAlcyByZWNpcGUgIgorICAgICAgICAgICAgICAgICJkb2Vzbid0IHVzZSBhbnkgc291cmNlIG9yIHRoZSBjb3JyZWN0IHNvdXJjZSAiCisgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCIgJSBkLmdldFZhcignUE4nKSkKKworICAgIGRldmJyYW5jaCA9IGQuZ2V0VmFyKCdERVZUT09MX0RFVkJSQU5DSCcpCisgICAgc2V0dXBfZ2l0X3JlcG8oc3Jjc3ViZGlyLCBkLmdldFZhcignUFYnKSwgZGV2YnJhbmNoLCBkPWQpCisKKyAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9c3Jjc3ViZGlyKQorICAgIGluaXRpYWxfcmV2ID0gc3Rkb3V0LnJzdHJpcCgpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnaW5pdGlhbF9yZXYnKSwgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKGluaXRpYWxfcmV2KQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc3Jjc3ViZGlyJyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZShzcmNzdWJkaXIpCit9CisKK3B5dGhvbiBkZXZ0b29sX3ByZV9wYXRjaCgpIHsKKyAgICBpZiBkLmdldFZhcignUycpID09IGQuZ2V0VmFyKCdXT1JLRElSJyk6CisgICAgICAgIGQuc2V0VmFyKCdTJywgJyR7REVWVE9PTF9QQVRDSF9TUkNESVJ9JykKK30KKworcHl0aG9uIGRldnRvb2xfcG9zdF9wYXRjaCgpIHsKKyAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ0RFVlRPT0xfVEVNUERJUicpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc3Jjc3ViZGlyJyksICdyJykgYXMgZjoKKyAgICAgICAgc3Jjc3ViZGlyID0gZi5yZWFkKCkKKyAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHRhZyAtZiBkZXZ0b29sLXBhdGNoZWQnLCBjd2Q9c3Jjc3ViZGlyKQorfQorCitweXRob24gZGV2dG9vbF9wb3N0X2NvbmZpZ3VyZSgpIHsKKyAgICBpbXBvcnQgc2h1dGlsCisgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1RFTVBESVInKQorICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0InKSwgJy5jb25maWcnKSwgdGVtcGRpcikKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MKaW5kZXggNWUzNDQ0MS4uYzg1ZjdiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MKQEAgLTI2MSwxMiArMjYxLDQ0IEBACiAgICAgICAgIGZyb20gYmIudXRpbHMgaW1wb3J0IHZlcmNtcF9zdHJpbmcKICAgICAgICAgZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IsIE5vTWV0aG9kRXJyb3IsIGRlY29kZXVybAogCi0gICAgICAgICIiImZpcnN0IGNoZWNrIHdoZXRoZXIgYSB1cmkgaXMgcHJvdmlkZWQiIiIKLSAgICAgICAgc3JjX3VyaSA9IChkLmdldFZhcignU1JDX1VSSScpIG9yICcnKS5zcGxpdCgpCi0gICAgICAgIGlmIHNyY191cmk6Ci0gICAgICAgICAgICB1cmlfdHlwZSwgXywgXywgXywgXywgXyA9IGRlY29kZXVybChzcmNfdXJpWzBdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJpX3R5cGUgPSAibm9uZSIKKyAgICAgICAgZGVmIGdldF91cHN0cmVhbV92ZXJzaW9uX2FuZF9zdGF0dXMoKToKKworICAgICAgICAgICAgIyBzZXQgaWYgdGhlIHVwc3RyZWFtIGNoZWNrIGZhaWxzIHJlbGlhYmx5LCBlLmcuIGFic2VudCBnaXQgdGFncywgb3Igd2VpcmQgdmVyc2lvbiBmb3JtYXQgdXNlZCBvbiBvdXIgb3Igb24gdXBzdHJlYW0gc2lkZS4KKyAgICAgICAgICAgIHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTicpCisgICAgICAgICAgICAjIHNldCBpZiB0aGUgdXBzdHJlYW0gY2hlY2sgY2Fubm90IGJlIHJlbGlhYmx5IHBlcmZvcm1lZCBkdWUgdG8gdHJhbnNpZW50IG5ldHdvcmsgZmFpbHVyZXMsIG9yIHNlcnZlciBiZWhhdmluZyB3ZWlyZGx5LiAKKyAgICAgICAgICAgICMgVGhpcyBvbmUgc2hvdWxkIGJlIHVzZWQgc3BhcmluZ2x5LCBhcyBpdCBjb21wbGV0ZWx5IGV4Y2x1ZGVzIGEgcmVjaXBlIGZyb20gdXBzdHJlYW0gY2hlY2tpbmcuCisgICAgICAgICAgICB1cHN0cmVhbV9jaGVja191bnJlbGlhYmxlID0gbG9jYWxkYXRhLmdldFZhcignVVBTVFJFQU1fQ0hFQ0tfVU5SRUxJQUJMRScpCisKKyAgICAgICAgICAgIGlmIHVwc3RyZWFtX2NoZWNrX3VucmVsaWFibGUgPT0gIjEiOgorICAgICAgICAgICAgICAgIHJldHVybiAiTi9BIiwgIkNIRUNLX0lTX1VOUkVMSUFCTEUiCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB1diA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihsb2NhbGRhdGEpCisgICAgICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXSBpZiB1dlsndmVyc2lvbiddIGVsc2UgIk4vQSIKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwdXB2ZXIgPSAiTi9BIgorCisgICAgICAgICAgICBpZiBwdXB2ZXIgPT0gIk4vQSI6CisgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVTktOT1dOIiBpZiB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiVU5LTk9XTl9CUk9LRU4iCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNyY191cmkgPSAobG9jYWxkYXRhLmdldFZhcignU1JDX1VSSScpIG9yICcnKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgaWYgc3JjX3VyaToKKyAgICAgICAgICAgICAgICAgICAgdXJpX3R5cGUsIF8sIF8sIF8sIF8sIF8gPSBkZWNvZGV1cmwoc3JjX3VyaVswXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1cmlfdHlwZSA9ICJub25lIgorICAgICAgICAgICAgICAgIHB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB2ZXJzaW9uLCB1cmlfdHlwZSkKKyAgICAgICAgICAgICAgICB1cHYsIF8sIF8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHVwdmVyLCB1cmlfdHlwZSkKKworICAgICAgICAgICAgICAgIGNtcCA9IHZlcmNtcF9zdHJpbmcocHYsIHVwdikKKyAgICAgICAgICAgICAgICBpZiBjbXAgPT0gLTE6CisgICAgICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVVBEQVRFIiBpZiBub3QgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIktOT1dOX0JST0tFTiIKKyAgICAgICAgICAgICAgICBlbGlmIGNtcCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIk1BVENIIiBpZiBub3QgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIktOT1dOX0JST0tFTiIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVOS05PV04iIGlmIHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJVTktOT1dOX0JST0tFTiIKKworICAgICAgICAgICAgcmV0dXJuIHB1cHZlciwgcHN0YXR1cworCiAKICAgICAgICAgIiIiaW5pdGlhbGl6ZSBsb2cgZmlsZXMuIiIiCiAgICAgICAgIGxvZ3BhdGggPSBkLmdldFZhcignTE9HX0RJUicpCkBAIC0zMTMsMzQgKzM0NSw3IEBACiAgICAgICAgIHBzcmN1cmkgPSBsb2NhbGRhdGEuZ2V0VmFyKCdTUkNfVVJJJykKICAgICAgICAgbWFpbnRhaW5lciA9IGxvY2FsZGF0YS5nZXRWYXIoJ1JFQ0lQRV9NQUlOVEFJTkVSJykKIAotICAgICAgICAiIiIgR2V0IHVwc3RyZWFtIHZlcnNpb24gdmVyc2lvbiAiIiIKLSAgICAgICAgcHVwdmVyID0gIiIKLSAgICAgICAgcHN0YXR1cyA9ICIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdXYgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24obG9jYWxkYXRhKQotCi0gICAgICAgICAgICBwdXB2ZXIgPSB1dlsndmVyc2lvbiddCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGlmIGUgaXMgRmV0Y2hFcnJvcjoKLSAgICAgICAgICAgICAgICBwc3RhdHVzID0gIkVyckFjY2VzcyIKLSAgICAgICAgICAgIGVsaWYgZSBpcyBOb01ldGhvZEVycm9yOgotICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiRXJyVW5zdXBwb3J0ZWRQcm90byIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJFcnJVbmtub3duIgotCi0gICAgICAgICIiIlNldCB1cHN0cmVhbSB2ZXJzaW9uIHN0YXR1cyIiIgotICAgICAgICBpZiBub3QgcHVwdmVyOgotICAgICAgICAgICAgcHVwdmVyID0gIk4vQSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB2ZXJzaW9uLCB1cmlfdHlwZSkKLSAgICAgICAgICAgIHVwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdXB2ZXIsIHVyaV90eXBlKQotCi0gICAgICAgICAgICBjbXAgPSB2ZXJjbXBfc3RyaW5nKHB2LCB1cHYpCi0gICAgICAgICAgICBpZiBjbXAgPT0gLTE6Ci0gICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVUERBVEUiCi0gICAgICAgICAgICBlbGlmIGNtcCA9PSAwOgotICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiTUFUQ0giCisgICAgICAgIHB1cHZlciwgcHN0YXR1cyA9IGdldF91cHN0cmVhbV92ZXJzaW9uX2FuZF9zdGF0dXMoKQogCiAgICAgICAgIGlmIHBzcmN1cmk6CiAgICAgICAgICAgICBwc3JjdXJpID0gcHNyY3VyaS5zcGxpdCgpWzBdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb292ZXJyaWRlcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9vdmVycmlkZXMuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjRkYjBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9vdmVycmlkZXMuYmJjbGFzcwpAQCAtMCwwICsxLDMyIEBACisjIFR1cm5zIGNlcnRhaW4gRElTVFJPX0ZFQVRVUkVTIGludG8gb3ZlcnJpZGVzIHdpdGggdGhlIHNhbWUKKyMgbmFtZSBwbHVzIGEgZGYtIHByZWZpeC4gRW5zdXJlcyB0aGF0IHRoZXNlIHNwZWNpYWwKKyMgZGlzdHJvIGZlYXR1cmVzIHJlbWFpbiBzZXQgYWxzbyBmb3IgbmF0aXZlIGFuZCBuYXRpdmVzZGsKKyMgcmVjaXBlcywgc28gdGhhdCB0aGVzZSBvdmVycmlkZXMgY2FuIGFsc28gYmUgdXNlZCB0aGVyZS4KKyMKKyMgVGhpcyBtYWtlcyBpdCBzaW1wbGVyIHRvIHdyaXRlIC5iYmFwcGVuZHMgdGhhdCBvbmx5IGNoYW5nZSB0aGUKKyMgdGFzayBzaWduYXR1cmVzIG9mIHRoZSByZWNpcGUgaWYgdGhlIGNoYW5nZSBpcyByZWFsbHkgZW5hYmxlZCwKKyMgZm9yIGV4YW1wbGUgd2l0aDoKKyMgICBkb19pbnN0YWxsX2FwcGVuZF9kZi1teS1mZWF0dXJlICgpIHsgLi4uIH0KKyMgd2hlcmUgIm15LWZlYXR1cmUiIGlzIGEgRElTVFJPX0ZFQVRVUkUuCisjCisjIFRoZSBjbGFzcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIGEgbGF5ZXIuY29uZiBvciBkaXN0cm8KKyMgLmluYyBmaWxlIHdpdGg6CisjIElOSEVSSVQgKz0gImRpc3Ryb292ZXJyaWRlcyIKKyMgRElTVFJPX0ZFQVRVUkVTX09WRVJSSURFUyArPSAibXktZmVhdHVyZSIKKyMKKyMgQmV3YXJlIHRoYXQgdGhpcyBwYXJ0IG9mIE9WRVJSSURFUyBjaGFuZ2VzIGR1cmluZyBwYXJzaW5nLCBzbyB1c2FnZQorIyBvZiB0aGVzZSBvdmVycmlkZXMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gLmJiIGFuZCAuYmJhcHBlbmQgZmlsZXMsCisjIGJlY2F1c2UgdGhlbiBESVNUUk9fRkVBVFVSRVMgaXMgZmluYWwuCisKK0RJU1RST19GRUFUVVJFU19PVkVSUklERVMgPz0gIiIKK0RJU1RST19GRUFUVVJFU19PVkVSUklERVNbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIDxmZWF0dXJlPiBlbnRyaWVzLiBcCitFYWNoIGVudHJ5IGlzIGFkZGVkIHRvIE9WRVJSSURFUyBhcyBkZi08ZmVhdHVyZT4gaWYgPGZlYXR1cmU+IGlzIGluIERJU1RST19GRUFUVVJFUy4iCisKK0RJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFX2FwcGVuZCA9ICIgJHtESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTfSIKK0RJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFU0RLX2FwcGVuZCA9ICIgJHtESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTfSIKKworIyBJZiBESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTIG9yIERJU1RST19GRUFUVVJFUyBzaG93IHVwIGluIGEgdGFzaworIyBzaWduYXR1cmUgYmVjYXVzZSBvZiB0aGlzIGxpbmUsIHRoZW4gdGhlIHRhc2sgZGVwZW5kZW5jeSBvbgorIyBPVkVSUklERVMgaXRzZWxmIHNob3VsZCBiZSBmaXhlZC4gRXhjbHVkaW5nIHRoZXNlIHR3byB2YXJpYWJsZXMKKyMgd2l0aCBESVNUUk9PVkVSUklERVNbdmFyZGVwc2V4Y2x1ZGVdIHdvdWxkIGp1c3Qgd29yayBhcm91bmQgdGhlIHByb2JsZW0uCitESVNUUk9PVkVSUklERVMgLj0gIiR7QCAnJy5qb2luKFsnOmRmLScgKyB4IGZvciB4IGluIHNvcnRlZChzZXQoZC5nZXRWYXIoJ0RJU1RST19GRUFUVVJFU19PVkVSUklERVMnKS5zcGxpdCgpKSAmIHNldCgoZC5nZXRWYXIoJ0RJU1RST19GRUFUVVJFUycpIG9yICcnKS5zcGxpdCgpKSldKSB9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IGQ2NGFmNmEuLjY1ZGQxM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKQEAgLTI5LDYgKzI5LDEyIEBACiAKIHB5dGhvbiAoKSB7CiAgICAgZXh0ZXJuYWxzcmMgPSBkLmdldFZhcignRVhURVJOQUxTUkMnKQorICAgIGV4dGVybmFsc3JjYnVpbGQgPSBkLmdldFZhcignRVhURVJOQUxTUkNfQlVJTEQnKQorCisgICAgaWYgZXh0ZXJuYWxzcmMgYW5kIG5vdCBleHRlcm5hbHNyYy5zdGFydHN3aXRoKCIvIik6CisgICAgICAgIGJiLmVycm9yKCJFWFRFUk5BTFNSQyBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgiKQorICAgIGlmIGV4dGVybmFsc3JjYnVpbGQgYW5kIG5vdCBleHRlcm5hbHNyY2J1aWxkLnN0YXJ0c3dpdGgoIi8iKToKKyAgICAgICAgYmIuZXJyb3IoIkVYVEVSTkFMU1JDX0JVSUxEIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCIpCiAKICAgICAjIElmIHRoaXMgaXMgdGhlIGJhc2UgcmVjaXBlIGFuZCBFWFRFUk5BTFNSQyBpcyBzZXQgZm9yIGl0IG9yIGFueSBvZiBpdHMKICAgICAjIGRlcml2YXRpdmVzLCB0aGVuIGVuYWJsZSBCQl9ET05UX0NBQ0hFIHRvIGZvcmNlIHRoZSByZWNpcGUgdG8gYWx3YXlzIGJlCkBAIC00OCw3ICs1NCw2IEBACiAKICAgICBpZiBleHRlcm5hbHNyYzoKICAgICAgICAgZC5zZXRWYXIoJ1MnLCBleHRlcm5hbHNyYykKLSAgICAgICAgZXh0ZXJuYWxzcmNidWlsZCA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19CVUlMRCcpCiAgICAgICAgIGlmIGV4dGVybmFsc3JjYnVpbGQ6CiAgICAgICAgICAgICBkLnNldFZhcignQicsIGV4dGVybmFsc3JjYnVpbGQpCiAgICAgICAgIGVsc2U6CkBAIC0xNjcsNiArMTcyLDcgQEAKIGRvX2J1aWxkY2xlYW5bZG9jXSA9ICJDYWxsICdtYWtlIGNsZWFuJyBvciBlcXVpdmFsZW50IGluICR7Qn0iCiBleHRlcm5hbHNyY19kb19idWlsZGNsZWFuKCkgewogCWlmIFsgLWUgTWFrZWZpbGUgLW8gLWUgbWFrZWZpbGUgLW8gLWUgR05VbWFrZWZpbGUgXTsgdGhlbgorCQlybSAtZiAke0AnICcuam9pbihbeC5zcGxpdCgnOicpWzBdIGZvciB4IGluIChkLmdldFZhcignRVhURVJOQUxTUkNfU1lNTElOS1MnKSBvciAnJykuc3BsaXQoKV0pfQogCQlvZV9ydW5tYWtlIGNsZWFuIHx8IGRpZSAibWFrZSBmYWlsZWQiCiAJZWxzZQogCQliYm5vdGUgIm5vdGhpbmcgdG8gZG8gLSBubyBtYWtlZmlsZSBmb3VuZCIKQEAgLTE3OSwxNCArMTg1LDIwIEBACiAgICAgaW1wb3J0IHRlbXBmaWxlCiAKICAgICBzX2RpciA9IHNyY2RpciBvciBkLmdldFZhcignRVhURVJOQUxTUkMnKQotICAgIGdpdF9kaXIgPSBvcy5wYXRoLmpvaW4oc19kaXIsICcuZ2l0JykKLSAgICBvZV9oYXNoX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ2l0X2RpciwgJ29lLWRldnRvb2wtdHJlZS1zaGExJykKKyAgICBnaXRfZGlyID0gTm9uZQorCisgICAgdHJ5OgorICAgICAgICBnaXRfZGlyID0gb3MucGF0aC5qb2luKHNfZGlyLAorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnLUMnLCBzX2RpciwgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSkuZGVjb2RlKCJ1dGYtOCIpLnJzdHJpcCgpKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgcGFzcwogCiAgICAgcmV0ID0gIiAiCi0gICAgaWYgb3MucGF0aC5leGlzdHMoZ2l0X2Rpcik6Ci0gICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj1naXRfZGlyLCBwcmVmaXg9J29lLWRldnRvb2wtaW5kZXgnKSBhcyB0bXBfaW5kZXg6CisgICAgaWYgZ2l0X2RpciBpcyBub3QgTm9uZToKKyAgICAgICAgb2VfaGFzaF9maWxlID0gb3MucGF0aC5qb2luKGdpdF9kaXIsICdvZS1kZXZ0b29sLXRyZWUtc2hhMScpCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHByZWZpeD0nb2UtZGV2dG9vbC1pbmRleCcpIGFzIHRtcF9pbmRleDoKICAgICAgICAgICAgICMgQ2xvbmUgaW5kZXgKLSAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4oZ2l0X2RpciwgJ2luZGV4JyksIHRtcF9pbmRleC5uYW1lKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihnaXRfZGlyLCAnaW5kZXgnKSwgdG1wX2luZGV4Lm5hbWUpCiAgICAgICAgICAgICAjIFVwZGF0ZSBvdXIgY3VzdG9tIGluZGV4CiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydHSVRfSU5ERVhfRklMRSddID0gdG1wX2luZGV4Lm5hbWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKaW5kZXggMGJlMTQyNC4uZGE2OGU2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MKQEAgLTEzLDcgKzEzLDEyIEBACiAgICAgICAgIHJldHVybiAnLS1kaXNhYmxlLW5scycKICAgICByZXR1cm4gIi0tZW5hYmxlLW5scyIKIAotREVQRU5EU19HRVRURVhUID8/PSAidmlydHVhbC9nZXR0ZXh0IGdldHRleHQtbmF0aXZlIgorREVQRU5EU19HRVRURVhUID8/PSAiZ2V0dGV4dC1uYXRpdmUiCiAKLUJBU0VERVBFTkRTID0rICIke0BnZXR0ZXh0X2RlcGVuZGVuY2llcyhkKX0iCitCQVNFREVQRU5EU19hcHBlbmQgPSAiICR7QGdldHRleHRfZGVwZW5kZW5jaWVzKGQpfSIKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiICR7QGdldHRleHRfb2Vjb25mKGQpfSIKKworIyBXaXRob3V0IHRoaXMsIG1zZ2ZtdCBmcm9tIGdldHRleHQtbmF0aXZlIHdpbGwgbm90IGZpbmQgSVRTIGZpbGVzCisjIHByb3ZpZGVkIGJ5IHRhcmdldCByZWNpcGVzIChmb3IgZXhhbXBsZSwgcG9sa2l0Lml0cykuCitHRVRURVhUREFUQURJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICI6JHtTVEFHSU5HX0RBVEFESVJ9L2dldHRleHQiCitleHBvcnQgR0VUVEVYVERBVEFESVJTCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcwppbmRleCA1NGFhNDVmLi40Y2NjOGUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKQEAgLTE0LDYgKzE0LDggQEAKICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdCogXAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vR0NvbmYgXAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zIFwKICIKIAogRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKaW5kZXggODVmNzFhMi4uMDliMDFhOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwpAQCAtMSw3NyArMSwxODIgQEAKLWluaGVyaXQgZ29hcmNoCitpbmhlcml0IGdvYXJjaCBwdGVzdAogCi0jIHgzMiBBQkkgaXMgbm90IHN1cHBvcnRlZCBvbiBnbyBjb21waWxlciBzbyBmYXIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLSMgcHBjMzIgaXMgbm90IHN1cHBvcnRlZCBpbiBnbyBjb21waWxlcnMKLUNPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCitkZWYgZ2V0X2dvX3BhcmFsbGVsX21ha2UoZCk6CisgICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQorICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5CisgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBhIGRpZmZlcmVudCBtZWFuaW5nIGluIGdvbGFuZworICAgIHdoaWxlIHBtOgorICAgICAgICBvcHQgPSBwbS5wb3AoMCkKKyAgICAgICAgaWYgb3B0ID09ICctaic6CisgICAgICAgICAgICB2ID0gcG0ucG9wKDApCisgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6CisgICAgICAgICAgICB2ID0gb3B0WzI6XS5zdHJpcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJldHVybiAnLXAgJWQnICUgaW50KHYpCisKKyAgICByZXR1cm4gIiIKKworR09fUEFSQUxMRUxfQlVJTEQgPz0gIiR7QGdldF9nb19wYXJhbGxlbF9tYWtlKGQpfSIKIAogR09ST09UX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1HT1JPT1QgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCi1HT0JJTl9GSU5BTF9jbGFzcy1uYXRpdmUgPSAiJHtHT1JPT1RfRklOQUx9L2JpbiIKLUdPQklOX0ZJTkFMID0gIiR7R09ST09UX0ZJTkFMfS9iaW4vJHtHT09TfV8ke0dPQVJDSH0iCi0KLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorR09ST09UX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vZ28iCitHT1JPT1QgPSAiJHtTVEFHSU5HX0xJQkRJUn0vZ28iCiBleHBvcnQgR09ST09UCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS8ke1RBUkdFVF9TWVN9L2dvIgotZXhwb3J0IEdPQklOX0ZJTkFMCi1leHBvcnQgR09QS0dfRklOQUwgPSAiJHtHT1JPT1RfRklOQUx9L3BrZy8ke0dPT1N9XyR7R09BUkNIfSIKLWV4cG9ydCBHT1NSQ19GSU5BTCA9ICIke0dPUk9PVF9GSU5BTH0vc3JjIgotZXhwb3J0IEdPX0dDRkxBR1MgPSAiJHtUQVJHRVRfQ0ZMQUdTfSIKLWV4cG9ydCBHT19MREZMQUdTID0gIiR7VEFSR0VUX0xERkxBR1N9IgotZXhwb3J0IENHT19DRkxBR1MgPSAiJHtUQVJHRVRfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSAke1RBUkdFVF9DRkxBR1N9IgotZXhwb3J0IENHT19DUFBGTEFHUyA9ICIke1RBUkdFVF9DUFBGTEFHU30iCi1leHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7VEFSR0VUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30gJHtUQVJHRVRfQ1hYRkxBR1N9IgotZXhwb3J0IENHT19MREZMQUdTID0gIiR7VEFSR0VUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30gJHtUQVJHRVRfTERGTEFHU30iCitleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIAotREVQRU5EUyArPSAiZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0iCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAiZ28tbmF0aXZlIgorREVQRU5EU19HT0xBTkdfY2xhc3MtdGFyZ2V0ID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCitERVBFTkRTX0dPTEFOR19jbGFzcy1uYXRpdmUgPSAiZ28tbmF0aXZlIgorREVQRU5EU19HT0xBTkdfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCiAKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtHT1NSQ19GSU5BTH0vJHtHT19JTVBPUlR9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke0dPUEtHX0ZJTkFMfS8ke0dPX0lNUE9SVH0qIgorREVQRU5EU19hcHBlbmQgPSAiICR7REVQRU5EU19HT0xBTkd9IgorCitHT19MSU5LU0hBUkVEID89ICIke0AnLWxpbmtzaGFyZWQnIGlmIGQuZ2V0VmFyKCdHT19EWU5MSU5LJykgZWxzZSAnJ30iCitHT19SUEFUSF9MSU5LID0gIiR7QCctV2wsLXJwYXRoLWxpbms9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rJyBpZiBkLmdldFZhcignR09fRFlOTElOSycpIGVsc2UgJyd9IgorR09fUlBBVEggPSAiJHtAJy1yICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluaycgaWYgZC5nZXRWYXIoJ0dPX0RZTkxJTksnKSBlbHNlICcnfSIKK0dPX1JQQVRIX2NsYXNzLW5hdGl2ZSA9ICIke0AnLXIgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rJyBpZiBkLmdldFZhcignR09fRFlOTElOSycpIGVsc2UgJyd9IgorR09fUlBBVEhfTElOS19jbGFzcy1uYXRpdmUgPSAiJHtAJy1XbCwtcnBhdGgtbGluaz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsnIGlmIGQuZ2V0VmFyKCdHT19EWU5MSU5LJykgZWxzZSAnJ30iCitHT19FWFRMREZMQUdTID89ICIke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSAke0dPX1JQQVRIX0xJTkt9ICR7TERGTEFHU30iCitHT19MSU5LTU9ERSA/PSAiIgorR09fTElOS01PREVfY2xhc3MtbmF0aXZlc2RrID0gIi0tbGlua21vZGU9ZXh0ZXJuYWwiCitHT19MREZMQUdTID89ICctbGRmbGFncz0iJHtHT19SUEFUSH0gJHtHT19MSU5LTU9ERX0gLWV4dGxkZmxhZ3MgJyR7R09fRVhUTERGTEFHU30nIicKK2V4cG9ydCBHT0JVSUxERkxBR1MgPz0gIi12ICR7R09fTERGTEFHU30iCitleHBvcnQgR09QVEVTVEJVSUxERkxBR1MgPz0gIiR7R09CVUlMREZMQUdTfSAtYyIKK2V4cG9ydCBHT1BURVNURkxBR1MgPz0gIi10ZXN0LnYiCitHT0JVSUxERkxBR1NfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtHT19QQVJBTExFTF9CVUlMRH0gIgorCitleHBvcnQgR08gPSAiJHtIT1NUX1BSRUZJWH1nbyIKK0dPVE9PTERJUiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgorR09UT09MRElSX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfSIKK2V4cG9ydCBHT1RPT0xESVIKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1MgPSAiIgorCitleHBvcnQgQ0dPX0VOQUJMRUQgPz0gIjEiCitleHBvcnQgQ0dPX0NGTEFHUyA/PSAiJHtDRkxBR1N9IgorZXhwb3J0IENHT19DUFBGTEFHUyA/PSAiJHtDUFBGTEFHU30iCitleHBvcnQgQ0dPX0NYWEZMQUdTID89ICIke0NYWEZMQUdTfSIKK2V4cG9ydCBDR09fTERGTEFHUyA/PSAiJHtMREZMQUdTfSIKIAogR09fSU5TVEFMTCA/PSAiJHtHT19JTVBPUlR9Ly4uLiIKK0dPX0lOU1RBTExfRklMVEVST1VUID89ICIke0dPX0lNUE9SVH0vdmVuZG9yLyIKIAotZG9fZ29fY29tcGlsZSgpIHsKLQlHT1BBVEg9JHtTfToke1NUQUdJTkdfTElCRElSfS8ke1RBUkdFVF9TWVN9L2dvIGdvIGVudgorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZXhwb3J0IEdPUEFUSCA9ICIke0J9IgorR09fVE1QRElSID89ICIke1dPUktESVJ9L2dvLXRtcCIKK0dPX1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgorCitweXRob24gZ29fZG9fdW5wYWNrKCkgeworICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQorICAgIGlmIGxlbihzcmNfdXJpKSA9PSAwOgorICAgICAgICByZXR1cm4KKworICAgIHRyeToKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBkKQorICAgICAgICBmb3IgdXJsIGluIGZldGNoZXIudXJsczoKKyAgICAgICAgICAgIGlmIGZldGNoZXIudWRbdXJsXS50eXBlID09ICdnaXQnOgorICAgICAgICAgICAgICAgIGlmIGZldGNoZXIudWRbdXJsXS5wYXJtLmdldCgnZGVzdHN1ZmZpeCcpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNfZGlybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ1MnKSkKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hlci51ZFt1cmxdLnBhcm1bJ2Rlc3RzdWZmaXgnXSA9IG9zLnBhdGguam9pbihzX2Rpcm5hbWUsICdzcmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdHT19JTVBPUlQnKSkgKyAnLycKKyAgICAgICAgZmV0Y2hlci51bnBhY2soZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQorfQorCitnb19saXN0X3BhY2thZ2VzKCkgeworCSR7R099IGxpc3QgLWYgJ3t7LkltcG9ydFBhdGh9fScgJHtHT0JVSUxERkxBR1N9ICR7R09fSU5TVEFMTH0gfCBcCisJCWVncmVwIC12ICcke0dPX0lOU1RBTExfRklMVEVST1VUfScKK30KKworZ29fbGlzdF9wYWNrYWdlX3Rlc3RzKCkgeworICAgICR7R099IGxpc3QgLWYgJ3t7LkltcG9ydFBhdGh9fSB7ey5UZXN0R29GaWxlc319JyAke0dPQlVJTERGTEFHU30gJHtHT19JTlNUQUxMfSB8IFwKKwkJZ3JlcCAtdiAnXFtcXSQnIHwgXAorCQllZ3JlcCAtdiAnJHtHT19JTlNUQUxMX0ZJTFRFUk9VVH0nIHwgXAorCQlhd2sgJ3sgcHJpbnQgJDEgfScKK30KKworZ29fZG9fY29uZmlndXJlKCkgeworCWxuIC1zbmYgJHtTfS9zcmMgJHtCfS8KK30KKworZ29fZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgVE1QRElSPSIke0dPX1RNUERJUn0iCisJJHtHT30gZW52CiAJaWYgWyAtbiAiJHtHT19JTlNUQUxMfSIgXTsgdGhlbgotCQlHT1BBVEg9JHtTfToke1NUQUdJTkdfTElCRElSfS8ke1RBUkdFVF9TWVN9L2dvIGdvIGluc3RhbGwgLXYgJHtHT19JTlNUQUxMfQorCQkke0dPfSBpbnN0YWxsICR7R09fTElOS1NIQVJFRH0gJHtHT0JVSUxERkxBR1N9IGBnb19saXN0X3BhY2thZ2VzYAorCWZpCit9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPX1RNUERJUn0iCitkb19jb21waWxlW2NsZWFuZGlyc10gPSAiJHtCfS9iaW4gJHtCfS9wa2ciCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgZXhwb3J0IFRNUERJUj0iJHtHT19UTVBESVJ9IgorICAgIHJtIC1mICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKKwlnb19saXN0X3BhY2thZ2VfdGVzdHMgfCB3aGlsZSByZWFkIHBrZzsgZG8KKwkJY2QgJHtCfS9zcmMvJHBrZworCQkke0dPfSB0ZXN0ICR7R09QVEVTVEJVSUxERkxBR1N9ICRwa2cKKwkJZmluZCAuIC1taW5kZXB0aCAxIC1tYXhkZXB0aCAxIC10eXBlIGYgLW5hbWUgJyoudGVzdCcgLWV4ZWMgZWNobyAkcGtnL3t9IFw7IHwgXAorCQkJc2VkIC1lJ3MsL1wuLywvLCc+PiAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0CisJZG9uZQorfQorZG9fY29tcGlsZV9wdGVzdF9iYXNlW2RpcnNdID0rICIke0dPX1RNUERJUn0iCisKK2dvX2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy8ke0dPX0lNUE9SVH0KKwl0YXIgLUMgJHtTfS9zcmMvJHtHT19JTVBPUlR9IC1jZiAtIC0tZXhjbHVkZS12Y3MgLS1leGNsdWRlICcqLnRlc3QnIC4gfCBcCisJCXRhciAtQyAke0R9JHtsaWJkaXJ9L2dvL3NyYy8ke0dPX0lNUE9SVH0gLS1uby1zYW1lLW93bmVyIC14ZiAtCisJdGFyIC1DICR7Qn0gLWNmIC0gcGtnIHwgdGFyIC1DICR7RH0ke2xpYmRpcn0vZ28gLS1uby1zYW1lLW93bmVyIC14ZiAtCisKKwlpZiBbIC1uICJgbHMgJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vYCIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vJHtHT19CVUlMRF9CSU5ESVJ9LyogJHtEfSR7YmluZGlyfS8KIAlmaQogfQogCi1kb19nb19pbnN0YWxsKCkgewotCXJtIC1yZiAke1dPUktESVJ9L3N0YWdpbmcKLQlpbnN0YWxsIC1kICR7V09SS0RJUn0vc3RhZ2luZyR7R09ST09UX0ZJTkFMfSAke0R9JHtHT1JPT1RfRklOQUx9Ci0JdGFyIC1DICR7U30gLWNmIC0gLiB8IHRhciAtQyAke1dPUktESVJ9L3N0YWdpbmcke0dPUk9PVF9GSU5BTH0gLXhwdmYgLQotCi0JZmluZCAke1dPUktESVJ9L3N0YWdpbmcke0dPUk9PVF9GSU5BTH0gXCggXAotCQktbmFtZSBcKi5pbmRpcmVjdGlvbnN5bWxpbmsgLW8gXAotCQktbmFtZSAuZ2l0XCogLW8gICAgICAgICAgICAgICAgXAotCQktbmFtZSAuaGcgLW8gICAgICAgICAgICAgICAgICAgXAotCQktbmFtZSAuc3ZuIC1vICAgICAgICAgICAgICAgICAgXAotCQktbmFtZSAucGNcKiAtbyAgICAgICAgICAgICAgICAgXAotCQktbmFtZSBwYXRjaGVzXCogICAgICAgICAgICAgICAgXAotCQlcKSAtcHJpbnQwIHwgXAotCXhhcmdzIC1yMCBybSAtcmYKLQotCXRhciAtQyAke1dPUktESVJ9L3N0YWdpbmcke0dPUk9PVF9GSU5BTH0gLWNmIC0gLiB8IFwKLQl0YXIgLUMgJHtEfSR7R09ST09UX0ZJTkFMfSAteHB2ZiAtCi0KLQljaG93biAtUiByb290OnJvb3QgIiR7RH0ke0dPUk9PVF9GSU5BTH0iCi0KLQlpZiBbIC1lICIke0R9JHtHT0JJTl9GSU5BTH0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAtbSAwNzU1ICIke0R9JHtiaW5kaXJ9IgotCQlmaW5kICIke0R9JHtHT0JJTl9GSU5BTH0iICEgLXR5cGUgZCAtcHJpbnQwIHwgeGFyZ3MgLXIwIG12IC0tdGFyZ2V0LWRpcmVjdG9yeT0iJHtEfSR7YmluZGlyfSIKLQkJcm1kaXIgLXAgIiR7RH0ke0dPQklOX0ZJTkFMfSIgfHwgdHJ1ZQotCWZpCitkb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7CitzZXQgLXgKKyAgICB0ZXN0IC1mICIke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0IiB8fCBleGl0IDAKKyAgICB0ZXN0cz0iIgorICAgIHdoaWxlIHJlYWQgdGVzdDsgZG8KKyAgICAgICAgdGVzdHM9IiR0ZXN0cyR7dGVzdHM6KyB9JHt0ZXN0JS50ZXN0fSIKKyAgICAgICAgdGVzdGRpcj1gZGlybmFtZSAkdGVzdGAKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvJHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3QKKyAgICAgICAgaWYgWyAtZCAiJHtCfS9zcmMvJHRlc3RkaXIvdGVzdGRhdGEiIF07IHRoZW4KKyAgICAgICAgICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICIke0J9L3NyYy8kdGVzdGRpci90ZXN0ZGF0YSIgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKKyAgICAgICAgZmkKKyAgICBkb25lIDwgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAorICAgIGlmIFsgLW4gIiR0ZXN0cyIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIGNhdCA+JHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0IDw8RU9GCisjIS9iaW4vc2gKK0FOWUZBSUxFRD0wCitmb3IgdCBpbiAkdGVzdHM7IGRvCisgICAgdGVzdGRpcj1cYGRpcm5hbWUgXCR0LnRlc3RcYAorICAgIGlmICggY2QgIiR7UFRFU1RfUEFUSH0vXCR0ZXN0ZGlyIjsgIiR7UFRFU1RfUEFUSH0vXCR0LnRlc3QiICR7R09QVEVTVEZMQUdTfSB8IHRlZSAvZGV2L2ZkLzkgfCBncmVwIC1xICJeRkFJTCIgKSA5PiYxOyB0aGVuCisgICAgICAgIEFOWUZBSUxFRD0xCisgICAgZmkKK2RvbmUKK2lmIFsgXCRBTllGQUlMRUQgLW5lIDAgXTsgdGhlbgorICAgIGVjaG8gIkZBSUw6ICR7UE59IgorICAgIGV4aXQgMQorZmkKK2VjaG8gIlBBU1M6ICR7UE59IgorZXhpdCAwCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisgICAgZWxzZQorICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBmaQorc2V0ICt4CiB9CiAKLWRvX2NvbXBpbGUoKSB7Ci0JZG9fZ29fY29tcGlsZQotfQorRVhQT1JUX0ZVTkNUSU9OUyBkb191bnBhY2sgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbAogCi1kb19pbnN0YWxsKCkgewotCWRvX2dvX2luc3RhbGwKLX0KK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vZ28vc3JjIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9nby9wa2ciCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJsZGZsYWdzIgorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxkZmxhZ3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwppbmRleCAxMmRmODhmLi42NjNjOWZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKQEAgLTEsMTUgKzEsMzcgQEAKLUJVSUxEX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdCVUlMRF9PUycsIFRydWUpLCBkKX0iCi1CVUlMRF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ0JVSUxEX0FSQ0gnLCBUcnVlKSwgZCl9IgorQlVJTERfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ0JVSUxEX09TJyksIGQpfSIKK0JVSUxEX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignQlVJTERfQVJDSCcpLCBkKX0iCiBCVUlMRF9HT1RVUExFID0gIiR7QlVJTERfR09PU31fJHtCVUlMRF9HT0FSQ0h9IgotSE9TVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignSE9TVF9PUycsIFRydWUpLCBkKX0iCi1IT1NUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignSE9TVF9BUkNIJywgVHJ1ZSksIGQpfSIKLUhPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJywgVHJ1ZSksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJywgVHJ1ZSksIGQpfSIKK0hPU1RfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ0hPU1RfT1MnKSwgZCl9IgorSE9TVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkKX0iCitIT1NUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCitIT1NUX0dPMzg2ID0gIiR7QGdvX21hcF8zODYoZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBIT1NUX0dPVFVQTEUgPSAiJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9IgotVEFSR0VUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdUQVJHRVRfT1MnLCBUcnVlKSwgZCl9IgotVEFSR0VUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnLCBUcnVlKSwgZCl9IgotVEFSR0VUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJywgVHJ1ZSksIGQpfSIKK1RBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJyksIGQpfSIKK1RBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKK1RBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCitUQVJHRVRfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogVEFSR0VUX0dPVFVQTEUgPSAiJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIKLUdPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScsVHJ1ZSkgPT0gZC5nZXRWYXIoJ0hPU1RfR09UVVBMRScsVHJ1ZSldfSIKK0dPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnKV19IgorCisjIEdvIHN1cHBvcnRzIGR5bmFtaWMgbGlua2luZyBvbiBhIGxpbWl0ZWQgc2V0IG9mIGFyY2hpdGVjdHVyZXMuCisjIFNlZSB0aGUgc3VwcG9ydHNEeW5saW5rIGZ1bmN0aW9uIGluIGdvL3NyYy9jbWQvY29tcGlsZS9pbnRlcm5hbC9nYy9tYWluLmdvCitHT19EWU5MSU5LID0gIiIKK0dPX0RZTkxJTktfYXJtID0gIjEiCitHT19EWU5MSU5LX2FhcmNoNjQgPSAiMSIKK0dPX0RZTkxJTktfeDg2ID0gIjEiCitHT19EWU5MSU5LX3g4Ni02NCA9ICIxIgorR09fRFlOTElOS19wb3dlcnBjNjQgPSAiMSIKK0dPX0RZTkxJTktfY2xhc3MtbmF0aXZlID0gIiIKKworIyBkZWZpbmUgaGVyZSBiZWNhdXNlIGV2ZXJ5Ym9keSBpbmhlcml0cyB0aGlzIGNsYXNzCisjCitDT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbGludXgtbXVzbHgzMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9wb3dlcnBjNjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1hcmNoPW1pcHMzMnIyIgogCiBkZWYgZ29fbWFwX2FyY2goYSwgZCk6CiAgICAgaW1wb3J0IHJlCkBAIC0yMSwxNCArNDMsMTQgQEAKICAgICAgICAgcmV0dXJuICdhcm0nCiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NC4qJywgYSk6CiAgICAgICAgIHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnbWlwczY0ZWwqJywgYSk6CisgICAgZWxpZiByZS5tYXRjaCgnbWlwczY0ZWwuKicsIGEpOgogICAgICAgICByZXR1cm4gJ21pcHM2NGxlJwotICAgIGVsaWYgcmUubWF0Y2goJ21pcHM2NConLCBhKToKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzNjQuKicsIGEpOgogICAgICAgICByZXR1cm4gJ21pcHM2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdtaXBzZWwqJywgYSk6Ci0gICAgICAgIHJldHVybiAnbWlwc2xlJwotICAgIGVsaWYgcmUubWF0Y2goJ21pcHMqJywgYSk6CisgICAgZWxpZiBhID09ICdtaXBzJzoKICAgICAgICAgcmV0dXJuICdtaXBzJworICAgIGVsaWYgYSA9PSAnbWlwc2VsJzoKKyAgICAgICAgcmV0dXJuICdtaXBzbGUnCiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKDY0KScsIGEpOgogICAgICAgICByZXR1cm4gJ3BwYzY0JwogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSg2NGVsKScsIGEpOgpAQCAtNDMsNiArNjUsMTcgQEAKICAgICAgICAgICAgIHJldHVybiAnNycKICAgICAgICAgZWxpZiAnYXJtdjYnIGluIGY6CiAgICAgICAgICAgICByZXR1cm4gJzYnCisgICAgICAgIGVsaWYgJ2FybXY1JyBpbiBmOgorICAgICAgICAgICAgcmV0dXJuICc1JworICAgIHJldHVybiAnJworCitkZWYgZ29fbWFwXzM4NihhLCBmLCBkKToKKyAgICBpbXBvcnQgcmUKKyAgICBpZiByZS5tYXRjaCgnaS44NicsIGEpOgorICAgICAgICBpZiAoJ2NvcmUyJyBpbiBmKSBvciAoJ2NvcmVpNycgaW4gZik6CisgICAgICAgICAgICByZXR1cm4gJ3NzZTInCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJzM4NycKICAgICByZXR1cm4gJycKIAogZGVmIGdvX21hcF9vcyhvLCBkKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcwppbmRleCBkZjdmZTE4Li42MTA0NzliIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCkBAIC0xNyw3ICsxNyw2IEBACiAjICR7R1JVQl9ST09UfSAtIGdydWIncyByb290IGRldmljZS4KIAogZG9fYm9vdGltZ1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1ncnViLWVmaTpkb19kZXBsb3kiCi1kb19ib290ZGlyZWN0ZGlza1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1ncnViLWVmaTpkb19kZXBsb3kiCiAKIEdSVUJfU0VSSUFMID89ICJjb25zb2xlPXR0eVMwLDExNTIwMCIKIEdSVUJfQ0ZHX1ZNID0gIiR7U30vZ3J1Yl92bS5jZmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCmluZGV4IDBhZTI3MjkuLjUyMDFjNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzCkBAIC00OCw2ICs0OCw3IEBACiAjIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAogZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15CiAKK0dJUl9FWFRSQV9MSUJTX1BBVEg9XGBmaW5kICR7Qn0gLW5hbWUgKi5zbyAtcHJpbnRmICIlaFxuInxzb3J0fHVuaXF8IHRyICdcbicgJzonXGBcJEdJUl9FWFRSQV9MSUJTX1BBVEgKIEdJUl9FWFRSQV9MSUJTX1BBVEg9XGBmaW5kICR7Qn0gLW5hbWUgLmxpYnN8IHRyICdcbicgJzonXGBcJEdJUl9FWFRSQV9MSUJTX1BBVEgKIAogaWYgWyAtZCAiLmxpYnMiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwppbmRleCA3N2JmNjExLi4xY2MxYzRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAjIGZvciBvbmUgcmVhc29uIG9yIHRoZSBvdGhlcgogICAgICMgdGhpcyBpcyB0aGUgb2xkIGxpc3QgKHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBiZSB2YWxpZCBhbnltb3JlLCBiZWNhdXNlIEkgd2FzIGFibGUgdG8gYnVpbGQKICAgICAjIGFsbCB0aGVzZSB3aXRoIGljZWNjIGVuYWJsZWQpCi0gICAgIyBzeXN0ZW1fcGFja2FnZV9ibGFja2xpc3QgPSBbICJ1Y2xpYmMiLCAiZ2xpYmMiLCAiZ2NjIiwgImJpbmQiLCAidS1ib290IiwgImRoY3AtZm9yd2FyZGVyIiwgImVuY2hhbnQiLCAiY29ubm1hbiIsICJvcmJpdDIiIF0KKyAgICAjIHN5c3RlbV9wYWNrYWdlX2JsYWNrbGlzdCA9IFsgImdsaWJjIiwgImdjYyIsICJiaW5kIiwgInUtYm9vdCIsICJkaGNwLWZvcndhcmRlciIsICJlbmNoYW50IiwgImNvbm5tYW4iLCAib3JiaXQyIiBdCiAgICAgIyB3aGVuIGFkZGluZyBuZXcgZW50cnksIHBsZWFzZSBkb2N1bWVudCB3aHkgKGhvdyBpdCBmYWlsZWQpIHNvIHRoYXQgd2UgY2FuIHJlLWV2YWx1YXRlIGl0IGxhdGVyCiAgICAgIyBlLmcuIHdoZW4gdGhlcmUgaXMgbmV3IHZlcnNpb24KICAgICAjIGJ1aWxkaW5nIGxpYmdjYy1pbml0aWFsIHdpdGggaWNlY2MgZmFpbHMgd2l0aCBDUFAgc2FuaXR5IGNoZWNrIGVycm9yIGlmIGhvc3Qgc3lzcm9vdCBjb250YWlucyBjcm9zcyBnY2MgYnVpbHQgZm9yIGFub3RoZXIgdGFyZ2V0IHR1bmUvdmFyaWFudApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcwppbmRleCBhM2QxYjRlLi4xNjIzYzE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcwpAQCAtMzQsMjAgKzM0LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAke01MUFJFRklYfXN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogICAgICAgICAgICAgICAgICAgICAgICAgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogICAgICAgICAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuaWZlbHNlKGQuZ2V0VmFyKCdDT01QUkVTU0lTTycsIEZhbHNlKSwnemlzb2ZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywnJyl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7UE59OmRvX2ltYWdlX2V4dDQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn06ZG9faW1hZ2VfJHtAZC5nZXRWYXIoJ0xJVkVfUk9PVEZTX1RZUEUnKS5yZXBsYWNlKCctJywgJ18nKX0gXAogICAgICAgICAgICAgICAgICAgICAgICAgIgogCiAKIExBQkVMU19MSVZFID89ICJib290IGluc3RhbGwiCiBST09UX0xJVkUgPz0gInJvb3Q9L2Rldi9yYW0wIgotSU5JVFJEX0lNQUdFX0xJVkUgPz0gImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiCitJTklUUkRfSU1BR0VfTElWRSA/PSAiJHtNTFBSRUZJWH1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIgogSU5JVFJEX0xJVkUgPz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTklUUkRfSU1BR0VfTElWRX0tJHtNQUNISU5FfS5jcGlvLmd6IgogCi1ST09URlMgPz0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uZXh0NCIKK0xJVkVfUk9PVEZTX1RZUEUgPz0gImV4dDQiCitST09URlMgPz0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHtMSVZFX1JPT1RGU19UWVBFfSIKIAotSU1BR0VfVFlQRURFUF9saXZlID0gImV4dDQiCi1JTUFHRV9UWVBFREVQX2lzbyA9ICJleHQ0IgotSU1BR0VfVFlQRURFUF9oZGRpbWcgPSAiZXh0NCIKK0lNQUdFX1RZUEVERVBfbGl2ZSA9ICIke0xJVkVfUk9PVEZTX1RZUEV9IgorSU1BR0VfVFlQRURFUF9pc28gPSAiJHtMSVZFX1JPT1RGU19UWVBFfSIKK0lNQUdFX1RZUEVERVBfaGRkaW1nID0gIiR7TElWRV9ST09URlNfVFlQRX0iCiBJTUFHRV9UWVBFU19NQVNLRUQgKz0gImxpdmUgaGRkaW1nIGlzbyIKIAogcHl0aG9uKCkgewpAQCAtOTEsNyArOTIsNyBAQAogCWZvciBmcyBpbiAke0lOSVRSRH0KIAlkbwogCQlpZiBbICEgLXMgIiRmcyIgXTsgdGhlbgotCQkJYmJub3RlICJJU08gaW1hZ2Ugd2lsbCBub3QgYmUgY3JlYXRlZC4gJGZzIGlzIGludmFsaWQuIgorCQkJYmJ3YXJuICJJU08gaW1hZ2Ugd2lsbCBub3QgYmUgY3JlYXRlZC4gJGZzIGlzIGludmFsaWQuIgogCQkJcmV0dXJuCiAJCWZpCiAJZG9uZQpAQCAtMjE2LDEwICsyMTcsMTAgQEAKIAlmaQogCiAJaWYgWyAteiAiJHtIRERJTUdfSUR9IiBdOyB0aGVuCi0JCW1rZG9zZnMgJHtGQVRTSVpFfSAtbiAke0JPT1RJTUdfVk9MVU1FX0lEfSAtUyA1MTIgLUMgJHtGQVRJTUd9IFwKKwkJbWtkb3NmcyAke0ZBVFNJWkV9IC1uICR7Qk9PVElNR19WT0xVTUVfSUR9ICR7TUtET1NGU19FWFRSQU9QVFN9IC1DICR7RkFUSU1HfSBcCiAJCQkke0JMT0NLU30KIAllbHNlCi0JCW1rZG9zZnMgJHtGQVRTSVpFfSAtbiAke0JPT1RJTUdfVk9MVU1FX0lEfSAtUyA1MTIgLUMgJHtGQVRJTUd9IFwKKwkJbWtkb3NmcyAke0ZBVFNJWkV9IC1uICR7Qk9PVElNR19WT0xVTUVfSUR9ICR7TUtET1NGU19FWFRSQU9QVFN9IC1DICR7RkFUSU1HfSBcCiAJCSR7QkxPQ0tTfSAtaSAke0hERElNR19JRH0KIAlmaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCmluZGV4IDQxNTdkZjAuLmYzYmI2OGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCkBAIC0xLDYgKzEsNiBAQAogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJwcmVsaW5rLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCi1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQgKz0gInByZWxpbmtfc2V0dXA7IHByZWxpbmtfaW1hZ2U7ICIKK0lNQUdFX1BSRVBST0NFU1NfQ09NTUFORF9hcHBlbmRfbGliYy1nbGliYyA9ICIgcHJlbGlua19zZXR1cDsgcHJlbGlua19pbWFnZTsgIgogCiBweXRob24gcHJlbGlua19zZXR1cCAoKSB7CiAgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQpAQCAtMzYsNyArMzYsMTcgQEAKIAlkeW5hbWljX2xvYWRlcj0kKGxpbnV4bG9hZGVyKQogCiAJIyBwcmVsaW5rIQotCSR7U1RBR0lOR19TQklORElSX05BVElWRX0vcHJlbGluayAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC1hbVIgLU4gLWMgJHtzeXNjb25mZGlyfS9wcmVsaW5rLmNvbmYgLS1keW5hbWljLWxpbmtlciAkZHluYW1pY19sb2FkZXIKKwlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJCWJibm90ZSAiIHByZWxpbms6IEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUy4uLiIKKwkJaWYgWyAiJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIiA9ICIiIF07IHRoZW4KKwkJCWV4cG9ydCBQUkVMSU5LX1RJTUVTVEFNUD1gZ2l0IGxvZyAtMSAtLXByZXR0eT0lY3QgYAorCQllbHNlCisJCQlleHBvcnQgUFJFTElOS19USU1FU1RBTVA9JFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTCisJCWZpCisJCSR7U1RBR0lOR19TQklORElSX05BVElWRX0vcHJlbGluayAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC1hbSAtTiAtYyAke3N5c2NvbmZkaXJ9L3ByZWxpbmsuY29uZiAtLWR5bmFtaWMtbGlua2VyICRkeW5hbWljX2xvYWRlcgorCWVsc2UKKwkJJHtTVEFHSU5HX1NCSU5ESVJfTkFUSVZFfS9wcmVsaW5rIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gLWFtUiAtTiAtYyAke3N5c2NvbmZkaXJ9L3ByZWxpbmsuY29uZiAtLWR5bmFtaWMtbGlua2VyICRkeW5hbWljX2xvYWRlcgorCWZpCiAKIAkjIFJlbW92ZSB0aGUgcHJlbGluay5jb25mIGlmIHdlIGhhZCB0byBhZGQgaXQuCiAJaWYgWyAiJGR1bW15X3ByZWxpbmtfY29uZiIgPSAidHJ1ZSIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS12bS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS12bS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGJkOTIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2Utdm0uYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jIGltYWdlLXZtLmJiY2xhc3MKLSMgKGxvb3NseSBiYXNlZCBvZmYgaW1hZ2UtbGl2ZS5iYmNsYXNzIENvcHlyaWdodCAoQykgMjAwNCwgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLikKLSMKLSMgQ3JlYXRlIGFuIGltYWdlIHdoaWNoIGNhbiBiZSBwbGFjZWQgZGlyZWN0bHkgb250byBhIGhhcmRkaXNrIHVzaW5nIGRkIGFuZCB0aGVuCi0jIGJvb3RlZC4KLSMKLSMgVGhpcyB1c2VzIHN5c2xpbnV4LiBleHRsaW51eCB3b3VsZCBoYXZlIGJlZW4gbmljZSBidXQgcmVxdWlyZWQgdGhlIGV4dDIvMwotIyBwYXJ0aXRpb24gdG8gYmUgbW91bnRlZC4gZ3J1YiByZXF1aXJlcyB0byBydW4gaXRzZWxmIGFzIHBhcnQgb2YgdGhlIGluc3RhbGwKLSMgcHJvY2Vzcy4KLSMKLSMgVGhlIGVuZCByZXN1bHQgaXMgYSA1MTIgYm9vdCBzZWN0b3IgcG9wdWxhdGVkIHdpdGggYW4gTUJSIGFuZCBwYXJ0aXRpb24gdGFibGUKLSMgZm9sbG93ZWQgYnkgYW4gbXNkb3MgZmF0MTYgcGFydGl0aW9uIGNvbnRhaW5pbmcgc3lzbGludXggYW5kIGEgbGludXgga2VybmVsCi0jIGNvbXBsZXRlZCBieSB0aGUgZXh0Mi8zIHJvb3Rmcy4KLSMKLSMgV2UgaGF2ZSB0byBwdXNoIHRoZSBtc2RvcyBwYXJpdGlvbiB0YWJsZSBzaXplID4gMTZNQiBzbyBmYXQgMTYgaXMgdXNlZCBhcyBwYXJ0ZWQKLSMgd29uJ3QgdG91Y2ggZmF0MTIgcGFydGl0aW9ucy4KLQotaW5oZXJpdCBsaXZlLXZtLWNvbW1vbgotCi1kb19ib290ZGlyZWN0ZGlza1tkZXBlbmRzXSArPSAiZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGVkLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59OmRvX2ltYWdlXyR7Vk1fUk9PVEZTX1RZUEV9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUlNQUdFX1RZUEVERVBfdm1kayA9ICIke1ZNX1JPT1RGU19UWVBFfSIKLUlNQUdFX1RZUEVERVBfdmRpID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgotSU1BR0VfVFlQRURFUF9xY293MiA9ICIke1ZNX1JPT1RGU19UWVBFfSIKLUlNQUdFX1RZUEVERVBfaGRkZGlyZWN0ID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgotSU1BR0VfVFlQRVNfTUFTS0VEICs9ICJ2bWRrIHZkaSBxY293MiBoZGRkaXJlY3QiCi0KLVZNX1JPT1RGU19UWVBFID89ICJleHQ0IgotUk9PVEZTID89ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LiR7Vk1fUk9PVEZTX1RZUEV9IgotCi0jIFVzZWQgYnkgYm9vdGxvYWRlcgotTEFCRUxTX1ZNID89ICJib290IgotUk9PVF9WTSA/PSAicm9vdD0vZGV2L3NkYTIiCi0jIFVzaW5nIGFuIGluaXRyYW1mcyBpcyBvcHRpb25hbC4gRW5hYmxlIGl0IGJ5IHNldHRpbmcgSU5JVFJEX0lNQUdFX1ZNLgotSU5JVFJEX0lNQUdFX1ZNID89ICIiCi1JTklUUkRfVk0gPz0gIiR7QCcke0lNR0RFUExPWURJUn0vJHtJTklUUkRfSU1BR0VfVk19LSR7TUFDSElORX0uY3Bpby5neicgaWYgJyR7SU5JVFJEX0lNQUdFX1ZNfScgZWxzZSAnJ30iCi1kb19ib290ZGlyZWN0ZGlza1tkZXBlbmRzXSArPSAiJHtAJyR7SU5JVFJEX0lNQUdFX1ZNfTpkb19pbWFnZV9jb21wbGV0ZScgaWYgJyR7SU5JVFJEX0lNQUdFX1ZNfScgZWxzZSAnJ30iCi0KLUJPT1RERF9WT0xVTUVfSUQgICA/PSAiYm9vdCIKLUJPT1RERF9FWFRSQV9TUEFDRSA/PSAiMTYzODQiCi0KLURJU0tfU0lHTkFUVVJFID89ICIke0RJU0tfU0lHTkFUVVJFX0dFTkVSQVRFRH0iCi1ESVNLX1NJR05BVFVSRVt2YXJkZXBzZXhjbHVkZV0gPSAiRElTS19TSUdOQVRVUkVfR0VORVJBVEVEIgotCi1idWlsZF9ib290X2RkKCkgewotCUhERERJUj0iJHtTfS9oZGQvYm9vdCIKLQlIRERJTUc9IiR7U30vaGRkLmltYWdlIgotCUlNQUdFPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LmhkZGRpcmVjdAotCi0JcG9wdWxhdGVfa2VybmVsICRIRERESVIKLQotCWlmIFsgIiR7UENCSU9TfSIgPSAiMSIgXTsgdGhlbgotCQlzeXNsaW51eF9oZGRpbWdfcG9wdWxhdGUgJEhERERJUgotCWZpCi0JaWYgWyAiJHtFRkl9IiA9ICIxIiBdOyB0aGVuCi0JCWVmaV9oZGRpbWdfcG9wdWxhdGUgJEhERERJUgotCWZpCi0KLQlCTE9DS1M9YGR1IC1ia3MgJEhERERJUiB8IGN1dCAtZiAxYAotCUJMT0NLUz1gZXhwciAkQkxPQ0tTICsgJHtCT09URERfRVhUUkFfU1BBQ0V9YAotCi0JIyBSZW1vdmUgaXQgc2luY2UgbWtkb3NmcyB3b3VsZCBmYWlsIHdoZW4gaXQgZXhpc3RzCi0Jcm0gLWYgJEhERElNRwotCW1rZG9zZnMgLW4gJHtCT09URERfVk9MVU1FX0lEfSAtUyA1MTIgLUMgJEhERElNRyAkQkxPQ0tTIAotCW1jb3B5IC1pICRIRERJTUcgLXMgJEhERERJUi8qIDo6LwotCi0JaWYgWyAiJHtQQ0JJT1N9IiA9ICIxIiBdOyB0aGVuCi0JCXN5c2xpbnV4X2hkZGRpcmVjdF9pbnN0YWxsICRIRERJTUcKLQlmaQkKLQljaG1vZCA2NDQgJEhERElNRwotCi0JUk9PVEZTQkxPQ0tTPWBkdSAtTGJrcyAke1JPT1RGU30gfCBjdXQgLWYgMWAKLQlUT1RBTFNJWkU9YGV4cHIgJEJMT0NLUyArICRST09URlNCTE9DS1NgCi0JRU5EMT1gZXhwciAkQkxPQ0tTIFwqIDEwMjRgCi0JRU5EMj1gZXhwciAkRU5EMSArIDUxMmAKLQlFTkQzPWBleHByIFwoICRST09URlNCTE9DS1MgXCogMTAyNCBcKSArICRFTkQxYAotCi0JZWNobyAkUk9PVEZTQkxPQ0tTICRUT1RBTFNJWkUgJEVORDEgJEVORDIgJEVORDMKLQlybSAtcmYgJElNQUdFCi0JZGQgaWY9L2Rldi96ZXJvIG9mPSRJTUFHRSBicz0xMDI0IHNlZWs9JFRPVEFMU0laRSBjb3VudD0xCi0KLQlwYXJ0ZWQgJElNQUdFIG1rbGFiZWwgbXNkb3MKLQlwYXJ0ZWQgJElNQUdFIG1rcGFydCBwcmltYXJ5IGZhdDE2IDAgJHtFTkQxfUIKLQlwYXJ0ZWQgJElNQUdFIHVuaXQgQiBta3BhcnQgcHJpbWFyeSBleHQyICR7RU5EMn1CICR7RU5EM31CCi0JcGFydGVkICRJTUFHRSBzZXQgMSBib290IG9uIAotCi0JcGFydGVkICRJTUFHRSBwcmludAotCi0JYXdrICJCRUdJTiB7IHByaW50ZiBcIiQoZWNobyAke0RJU0tfU0lHTkFUVVJFfSB8IHNlZCAncy9cKC4uXClcKC4uXClcKC4uXClcKC4uXCkvXFx4XDRcXHhcM1xceFwyXFx4XDEvJylcIiB9IiB8IFwKLQkJZGQgb2Y9JElNQUdFIGJzPTEgc2Vlaz00NDAgY29udj1ub3RydW5jCi0KLQlPRkZTRVQ9YGV4cHIgJEVORDIgLyA1MTJgCi0JaWYgWyAiJHtQQ0JJT1N9IiA9ICIxIiBdOyB0aGVuCi0JCWRkIGlmPSR7U1RBR0lOR19EQVRBRElSfS9zeXNsaW51eC9tYnIuYmluIG9mPSRJTUFHRSBjb252PW5vdHJ1bmMKLQlmaQotCi0JZGQgaWY9JEhERElNRyBvZj0kSU1BR0UgY29udj1ub3RydW5jIHNlZWs9MSBicz01MTIKLQlkZCBpZj0ke1JPT1RGU30gb2Y9JElNQUdFIGNvbnY9bm90cnVuYyBzZWVrPSRPRkZTRVQgYnM9NTEyCi0KLQljZCAke0lNR0RFUExPWURJUn0KLQotCWxuIC1zZiAke0lNQUdFX05BTUV9LmhkZGRpcmVjdCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmhkZGRpcmVjdAotfSAKLQotcHl0aG9uIGRvX2Jvb3RkaXJlY3RkaXNrKCkgewotICAgIHZhbGlkYXRlX2Rpc2tfc2lnbmF0dXJlKGQpCi0gICAgc2V0X2xpdmVfdm1fdmFycyhkLCAnVk0nKQotICAgIGlmIGQuZ2V0VmFyKCJQQ0JJT1MiKSA9PSAiMSI6Ci0gICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfc3lzbGludXhfY2ZnJywgZCkKLSAgICBpZiBkLmdldFZhcigiRUZJIikgPT0gIjEiOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2J1aWxkX2VmaV9jZmcnLCBkKQotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfYm9vdF9kZCcsIGQpCi19Ci0KLWRlZiBnZW5lcmF0ZV9kaXNrX3NpZ25hdHVyZSgpOgotICAgIGltcG9ydCB1dWlkCi0KLSAgICBzaWduYXR1cmUgPSBzdHIodXVpZC51dWlkNCgpKVs6OF0KLQotICAgIGlmIHNpZ25hdHVyZSAhPSAnMDAwMDAwMDAnOgotICAgICAgICByZXR1cm4gc2lnbmF0dXJlCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICdmZmZmZmZmZicKLQotZGVmIHZhbGlkYXRlX2Rpc2tfc2lnbmF0dXJlKGQpOgotICAgIGltcG9ydCByZQotCi0gICAgZGlza19zaWduYXR1cmUgPSBkLmdldFZhcigiRElTS19TSUdOQVRVUkUiKQotCi0gICAgaWYgbm90IHJlLm1hdGNoKHInXlswLTlhLWZBLUZdezh9JCcsIGRpc2tfc2lnbmF0dXJlKToKLSAgICAgICAgYmIuZmF0YWwoIkRJU0tfU0lHTkFUVVJFICclcycgbXVzdCBiZSBhbiA4IGRpZ2l0IGhleCBzdHJpbmciICUgZGlza19zaWduYXR1cmUpCi0KLURJU0tfU0lHTkFUVVJFX0dFTkVSQVRFRCA6PSAiJHtAZ2VuZXJhdGVfZGlza19zaWduYXR1cmUoKX0iCi0KLXJ1bl9xZW11X2ltZyAoKXsKLSAgICB0eXBlPSIkMSIKLSAgICBxZW11LWltZyBjb252ZXJ0IC1PICR0eXBlICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uaGRkZGlyZWN0ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LiR0eXBlCi0KLSAgICBsbiAtc2YgJHtJTUFHRV9OQU1FfS4kdHlwZSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LiR0eXBlCi19Ci1jcmVhdGVfdm1ka19pbWFnZSAoKSB7Ci0gICAgcnVuX3FlbXVfaW1nIHZtZGsKLX0KLQotY3JlYXRlX3ZkaV9pbWFnZSAoKSB7Ci0gICAgcnVuX3FlbXVfaW1nIHZkaQotfQotCi1jcmVhdGVfcWNvdzJfaW1hZ2UgKCkgewotICAgIHJ1bl9xZW11X2ltZyBxY293MgotfQotCi1weXRob24gZG9fdm1pbWcoKSB7Ci0gICAgaWYgJ3ZtZGsnIGluIGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTJyk6Ci0gICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnY3JlYXRlX3ZtZGtfaW1hZ2UnLCBkKQotICAgIGlmICd2ZGknIGluIGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTJyk6Ci0gICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnY3JlYXRlX3ZkaV9pbWFnZScsIGQpCi0gICAgaWYgJ3Fjb3cyJyBpbiBkLmdldFZhcignSU1BR0VfRlNUWVBFUycpOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2NyZWF0ZV9xY293Ml9pbWFnZScsIGQpCi19Ci0KLWFkZHRhc2sgYm9vdGRpcmVjdGRpc2sgYmVmb3JlIGRvX3ZtaW1nCi1hZGR0YXNrIHZtaW1nIGFmdGVyIGRvX2Jvb3RkaXJlY3RkaXNrIGJlZm9yZSBkb19pbWFnZV9jb21wbGV0ZQotZG9fdm1pbWdbZGVwZW5kc10gKz0gInFlbXUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggNGJjZmI4Ny4uZDg4Y2U1YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtOSw3ICs5LDcgQEAKIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19BVFRFTVBUT05MWSArPSAiJHtQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFl9IgogUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQgKz0gInJvb3Rmc19zeXNyb290X3JlbGF0aXZlbGlua3M7ICIKIAotTElDRU5TRSA9ICJNSVQiCitMSUNFTlNFID89ICJNSVQiCiBQQUNLQUdFUyA9ICIiCiBERVBFTkRTICs9ICIke01MUFJFRklYfXFlbXV3cmFwcGVyLWNyb3NzIGRlcG1vZHdyYXBwZXItY3Jvc3MiCiBSREVQRU5EUyArPSAiJHtQQUNLQUdFX0lOU1RBTEx9ICR7TElOR1VBU19JTlNUQUxMfSIKQEAgLTMzLDcgKzMzLDcgQEAKIAogIyBUaGVzZSBwYWNrYWdlcyB3aWxsIGJlIHJlbW92ZWQgZnJvbSBhIHJlYWQtb25seSByb290ZnMgYWZ0ZXIgYWxsIG90aGVyCiAjIHBhY2thZ2VzIGhhdmUgYmVlbiBpbnN0YWxsZWQKLVJPT1RGU19ST19VTk5FRURFRCA9ICJ1cGRhdGUtcmMuZCBiYXNlLXBhc3N3ZCBzaGFkb3cgJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgorUk9PVEZTX1JPX1VOTkVFREVEID8/PSAidXBkYXRlLXJjLmQgYmFzZS1wYXNzd2Qgc2hhZG93ICR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9ICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKIAogIyBwYWNrYWdlcyB0byBpbnN0YWxsIGZyb20gZmVhdHVyZXMKIEZFQVRVUkVfSU5TVEFMTCA9ICIke0AnICcuam9pbihvZS5wYWNrYWdlZ3JvdXAucmVxdWlyZWRfcGFja2FnZXMob2UuZGF0YS50eXBlZF92YWx1ZSgnSU1BR0VfRkVBVFVSRVMnLCBkKSwgZCkpfSIKQEAgLTg1LDcgKzg1LDYgQEAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIExEQ09ORklHREVQRU5EID89ICJsZGNvbmZpZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLUxEQ09ORklHREVQRU5EX2xpYmMtdWNsaWJjID0gIiIKIExEQ09ORklHREVQRU5EX2xpYmMtbXVzbCA9ICIiCiAKICMgVGhpcyBpcyBuZWVkZWQgdG8gaGF2ZSBkZXBtb2QgZGF0YSBpbiBQS0dEQVRBX0RJUiwKQEAgLTExOCw3ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAnSU1BR0VfUk9PVEZTX01BWFNJWkUnLCdJTUFHRV9OQU1FJywnSU1BR0VfTElOS19OQU1FJywnSU1BR0VfTUFOSUZFU1QnLCdERVBMT1lfRElSX0lNQUdFJywnSU1BR0VfRlNUWVBFUycsJ0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScsJ0lNQUdFX0xJTkdVQVMnLAogICAgICAgICAgICAgICAgICAnTVVMVElMSUJSRV9BTExPV19SRVAnLCdNVUxUSUxJQl9URU1QX1JPT1RGUycsJ01VTFRJTElCX1ZBUklBTlRTJywnTVVMVElMSUJTJywnQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMnLCdNVUxUSUxJQl9HTE9CQUxfVkFSSUFOVFMnLCdCQURfUkVDT01NRU5EQVRJT05TJywnTk9fUkVDT01NRU5EQVRJT05TJywKICAgICAgICAgICAgICAgICAgJ1BBQ0tBR0VfQVJDSFMnLCdQQUNLQUdFX0NMQVNTRVMnLCdUQVJHRVRfVkVORE9SJywnVEFSR0VUX0FSQ0gnLCdUQVJHRVRfT1MnLCdPVkVSUklERVMnLCdCQkVYVEVORFZBUklBTlQnLCdGRUVEX0RFUExPWURJUl9CQVNFX1VSSScsJ0lOVEVSQ0VQVF9ESVInLCdVU0VfREVWRlMnLAotICAgICAgICAgICAgICAgICAnQ09OVkVSU0lPTlRZUEVTJywgJ0lNQUdFX0dFTl9ERUJVR0ZTJywgJ1JPT1RGU19ST19VTk5FRURFRCcsICdJTUdERVBMT1lESVInLCAnUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUlknXQorICAgICAgICAgICAgICAgICAnQ09OVkVSU0lPTlRZUEVTJywgJ0lNQUdFX0dFTl9ERUJVR0ZTJywgJ1JPT1RGU19ST19VTk5FRURFRCcsICdJTUdERVBMT1lESVInLCAnUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUlknLCAnUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMnXQogICAgIHZhcmlhYmxlcy5leHRlbmQocm9vdGZzX2NvbW1hbmRfdmFyaWFibGVzKGQpKQogICAgIHZhcmlhYmxlcy5leHRlbmQodmFyaWFibGVfZGVwZW5kcyhkKSkKICAgICByZXR1cm4gIiAiLmpvaW4odmFyaWFibGVzKQpAQCAtMTM5LDkgKzEzOCw2IEBACiBJTUFHRV9UWVBFX2xpdmUgPSAiJHtAYnVpbGRfbGl2ZShkKX0iCiBpbmhlcml0ICR7SU1BR0VfVFlQRV9saXZlfQogCi1JTUFHRV9UWVBFX3ZtID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiSU1BR0VfRlNUWVBFUyIsIFsidm1kayIsICJ2ZGkiLCAicWNvdzIiLCAiaGRkZGlyZWN0Il0sICJpbWFnZS12bSIsICIiLCBkKX0nCi1pbmhlcml0ICR7SU1BR0VfVFlQRV92bX0KLQogSU1BR0VfVFlQRV9jb250YWluZXIgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZTVFlQRVMiLCAiY29udGFpbmVyIiwgImltYWdlLWNvbnRhaW5lciIsICIiLCBkKX0nCiBpbmhlcml0ICR7SU1BR0VfVFlQRV9jb250YWluZXJ9CiAKQEAgLTE0OSwxNCArMTQ1LDE4IEBACiBpbmhlcml0ICR7SU1BR0VfVFlQRV93aWN9CiAKIHB5dGhvbiAoKSB7CisgICAgZGVmIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcyh0YXNrKToKKyAgICAgICAgZGVwcyA9ICIiCisgICAgICAgIGZvciBkZXAgaW4gKGQuZ2V0VmFyKCdFWFRSQV9JTUFHRURFUEVORFMnKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgIGRlcHMgKz0gIiAlczolcyIgJSAoZGVwLCB0YXNrKQorICAgICAgICByZXR1cm4gZGVwcworCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19wb3B1bGF0ZV9saWMnKSkKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlX2NvbXBsZXRlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnKSkKKwogICAgIGRlcHMgPSAiICIgKyBpbWFnZXR5cGVzX2dldGRlcGVuZHMoZCkKICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3Jvb3RmcycsICdkZXBlbmRzJywgZGVwcykKIAotICAgIGRlcHMgPSAiIgotICAgIGZvciBkZXAgaW4gKGQuZ2V0VmFyKCdFWFRSQV9JTUFHRURFUEVORFMnKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgZGVwcyArPSAiICVzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiICUgZGVwCi0gICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZV9jb21wbGV0ZScsICdkZXBlbmRzJywgZGVwcykKLQogICAgICNwcm9jZXNzIElNQUdFX0ZFQVRVUkVTLCB3ZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHJ1bnRpbWVfbWFwcGluZ19yZW5hbWUKICAgICAjQ2hlY2sgZm9yIHJlcGxhY2VzIGltYWdlIGZlYXR1cmVzCiAgICAgZmVhdHVyZXMgPSBzZXQob2UuZGF0YS50eXBlZF92YWx1ZSgnSU1BR0VfRkVBVFVSRVMnLCBkKSkKQEAgLTI1NCw2ICsyNTQsNyBAQAogICAgIHByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQogCiAgICAgIyBnZW5lcmF0ZSByb290ZnMKKyAgICBkLnNldFZhckZsYWcoJ1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTJywgJ2V4cG9ydCcsICcxJykKICAgICBjcmVhdGVfcm9vdGZzKGQsIHByb2dyZXNzX3JlcG9ydGVyPXByb2dyZXNzX3JlcG9ydGVyLCBsb2djYXRjaGVyPWxvZ2NhdGNoZXIpCiAKICAgICBwcm9ncmVzc19yZXBvcnRlci5maW5pc2goKQpAQCAtMjYxLDE4ICsyNjIsMTkgQEAKIGRvX3Jvb3Rmc1tkaXJzXSA9ICIke1RPUERJUn0iCiBkb19yb290ZnNbY2xlYW5kaXJzXSArPSAiJHtTfSAke0lNR0RFUExPWURJUn0iCiBkb19yb290ZnNbdW1hc2tdID0gIjAyMiIKLWFkZHRhc2sgcm9vdGZzIGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290CithZGR0YXNrIHJvb3RmcyBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290CiAKIGZha2Vyb290IHB5dGhvbiBkb19pbWFnZSAoKSB7CiAgICAgZnJvbSBvZS51dGlscyBpbXBvcnQgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzCiAKKyAgICBkLnNldFZhckZsYWcoJ1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTJywgJ2V4cG9ydCcsICcxJykKICAgICBwcmVfcHJvY2Vzc19jbWRzID0gZC5nZXRWYXIoIklNQUdFX1BSRVBST0NFU1NfQ09NTUFORCIpCiAKICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MoZCwgcHJlX3Byb2Nlc3NfY21kcykKIH0KIGRvX2ltYWdlW2RpcnNdID0gIiR7VE9QRElSfSIKIGRvX2ltYWdlW3VtYXNrXSA9ICIwMjIiCi1hZGR0YXNrIGRvX2ltYWdlIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9fYnVpbGQKK2FkZHRhc2sgZG9faW1hZ2UgYWZ0ZXIgZG9fcm9vdGZzCiAKIGZha2Vyb290IHB5dGhvbiBkb19pbWFnZV9jb21wbGV0ZSAoKSB7CiAgICAgZnJvbSBvZS51dGlscyBpbXBvcnQgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzCkBAIC0yODksMTQgKzI5MSwyMSBAQAogZG9faW1hZ2VfY29tcGxldGVbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0iCiBkb19pbWFnZV9jb21wbGV0ZVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9IgogYWRkdGFzayBkb19pbWFnZV9jb21wbGV0ZSBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9fYnVpbGQKK3B5dGhvbiBkb19pbWFnZV9jb21wbGV0ZV9zZXRzY2VuZSAoKSB7CisgICAgc3N0YXRlX3NldHNjZW5lKGQpCit9CithZGR0YXNrIGRvX2ltYWdlX2NvbXBsZXRlX3NldHNjZW5lCiAKICMgQWRkIGltYWdlLWxldmVsIFFBL3Nhbml0eSBjaGVja3MgdG8gSU1BR0VfUUFfQ09NTUFORFMKICMKICMgSU1BR0VfUUFfQ09NTUFORFMgKz0gIiBcCiAjICAgICBpbWFnZV9jaGVja19ldmVyeXRoaW5nX29rIFwKICMgIgotIyBUaGlzIHRhc2sgcnVucyBhbGwgZnVuY3Rpb25zIGluIElNQUdFX1FBX0NPTU1BTkRTIGFmdGVyIHRoZSBpbWFnZQorIyBUaGlzIHRhc2sgcnVucyBhbGwgZnVuY3Rpb25zIGluIElNQUdFX1FBX0NPTU1BTkRTIGFmdGVyIHRoZSByb290ZnMKICMgY29uc3RydWN0aW9uIGhhcyBjb21wbGV0ZWQgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIHJlc3VsdGluZyBpbWFnZS4KKyMKKyMgVGhlIGZ1bmN0aW9ucyBzaG91bGQgdXNlICR7SU1BR0VfUk9PVEZTfSB0byBmaW5kIHRoZSB1bnBhY2tlZCByb290ZnMKKyMgZGlyZWN0b3J5LCB3aGljaCBpZiBRQSBwYXNzZXMgd2lsbCBiZSB0aGUgYmFzaXMgZm9yIHRoZSBpbWFnZXMuCiBmYWtlcm9vdCBweXRob24gZG9faW1hZ2VfcWEgKCkgewogICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IEltYWdlUUFGYWlsZWQKIApAQCAtMzE4LDcgKzMyNywxNiBAQAogICAgICAgICBpbWduYW1lID0gZC5nZXRWYXIoJ0lNQUdFX05BTUUnKQogICAgICAgICBiYi5mYXRhbCgiUUEgZXJyb3JzIGZvdW5kIHdoaWxzdCB2YWxpZGF0aW5nIGltYWdlOiAlc1xuJXMiICUgKGltZ25hbWUsIHFhbXNnKSkKIH0KLWFkZHRhc2sgZG9faW1hZ2VfcWEgYWZ0ZXIgZG9faW1hZ2VfY29tcGxldGUgYmVmb3JlIGRvX2J1aWxkCithZGR0YXNrIGRvX2ltYWdlX3FhIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9faW1hZ2UKKworU1NUQVRFVEFTS1MgKz0gImRvX2ltYWdlX3FhIgorU1NUQVRFX1NLSVBfQ1JFQVRJT05fdGFzay1pbWFnZS1xYSA9ICcxJworZG9faW1hZ2VfcWFbc3N0YXRlLWlucHV0ZGlyc10gPSAiIgorZG9faW1hZ2VfcWFbc3N0YXRlLW91dHB1dGRpcnNdID0gIiIKK3B5dGhvbiBkb19pbWFnZV9xYV9zZXRzY2VuZSAoKSB7CisgICAgc3N0YXRlX3NldHNjZW5lKGQpCit9CithZGR0YXNrIGRvX2ltYWdlX3FhX3NldHNjZW5lCiAKIGRlZiBzZXR1cF9kZWJ1Z2ZzX3ZhcmlhYmxlcyhkKToKICAgICBkLmFwcGVuZFZhcignSU1BR0VfUk9PVEZTJywgJy1kYmcnKQpAQCAtNDI2LDcgKzQ0NCwxMSBAQAogICAgICAgICAjIEV4cGFuZCBQViBlbHNlIGl0IGNhbiB0cmlnZ2VyIGdldF9zcmNyZXYgd2hpY2ggY2FuIGZhaWwgZHVlIHRvIHRoZXNlIHZhcmlhYmxlcyBiZWluZyB1bnNldAogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQVicsIGQuZ2V0VmFyKCdQVicpKQogICAgICAgICBsb2NhbGRhdGEuZGVsVmFyKCdEQVRFVElNRScpCisgICAgICAgIGxvY2FsZGF0YS5kZWxWYXIoJ0RBVEUnKQogICAgICAgICBsb2NhbGRhdGEuZGVsVmFyKCdUTVBESVInKQorICAgICAgICB2YXJkZXBzZXhjbHVkZSA9IChkLmdldFZhckZsYWcoJ0lNQUdFX0NNRF8nICsgcmVhbHQsICd2YXJkZXBzZXhjbHVkZScsIFRydWUpIG9yICcnKS5zcGxpdCgpCisgICAgICAgIGZvciBkZXAgaW4gdmFyZGVwc2V4Y2x1ZGU6CisgICAgICAgICAgICBsb2NhbGRhdGEuZGVsVmFyKGRlcCkKIAogICAgICAgICBpbWFnZV9jbWQgPSBsb2NhbGRhdGEuZ2V0VmFyKCJJTUFHRV9DTUQiKQogICAgICAgICB2YXJkZXBzLmFkZCgnSU1BR0VfQ01EXycgKyByZWFsdCkKQEAgLTQ4MCwxOSArNTAyLDIwIEBACiAgICAgICAgIGZvciBkZXAgaW4gdHlwZWRlcHNbdF06CiAgICAgICAgICAgICBhZnRlciArPSAnIGRvX2ltYWdlXyVzJyAlIGRlcC5yZXBsYWNlKCItIiwgIl8iKS5yZXBsYWNlKCIuIiwgIl8iKQogCi0gICAgICAgIHQgPSB0LnJlcGxhY2UoIi0iLCAiXyIpLnJlcGxhY2UoIi4iLCAiXyIpCisgICAgICAgIHRhc2sgPSAiZG9faW1hZ2VfJXMiICUgdC5yZXBsYWNlKCItIiwgIl8iKS5yZXBsYWNlKCIuIiwgIl8iKQogCi0gICAgICAgIGQuc2V0VmFyKCdkb19pbWFnZV8lcycgJSB0LCAnXG4nLmpvaW4oY21kcykpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ2Z1bmMnLCAnMScpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ2Zha2Vyb290JywgJzEnKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICdwcmVmdW5jcycsIGRlYnVnICsgJ3NldF9pbWFnZV9zaXplJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAncG9zdGZ1bmNzJywgJ2NyZWF0ZV9zeW1saW5rcycpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ3N1YmltYWdlcycsICcgJy5qb2luKHN1YmltYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ3ZhcmRlcHMnLCAnICcuam9pbih2YXJkZXBzKSkKLSAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAndmFyZGVwc2V4Y2x1ZGUnLCAnREFURVRJTUUnKQorICAgICAgICBkLnNldFZhcih0YXNrLCAnXG4nLmpvaW4oY21kcykpCisgICAgICAgIGQuc2V0VmFyRmxhZyh0YXNrLCAnZnVuYycsICcxJykKKyAgICAgICAgZC5zZXRWYXJGbGFnKHRhc2ssICdmYWtlcm9vdCcsICcxJykKIAotICAgICAgICBiYi5kZWJ1ZygyLCAiQWRkaW5nIHR5cGUgJXMgYmVmb3JlICVzLCBhZnRlciAlcyIgJSAodCwgJ2RvX2ltYWdlX2NvbXBsZXRlJywgYWZ0ZXIpKQotICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb19pbWFnZV8lcycgJSB0LCAnZG9faW1hZ2VfY29tcGxldGUnLCBhZnRlciwgZCkKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKHRhc2ssICdwcmVmdW5jcycsICcgJyArIGRlYnVnICsgJyBzZXRfaW1hZ2Vfc2l6ZScpCisgICAgICAgIGQucHJlcGVuZFZhckZsYWcodGFzaywgJ3Bvc3RmdW5jcycsICcgY3JlYXRlX3N5bWxpbmtzJykKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKHRhc2ssICdzdWJpbWFnZXMnLCAnICcgKyAnICcuam9pbihzdWJpbWFnZXMpKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgJ3ZhcmRlcHMnLCAnICcgKyAnICcuam9pbih2YXJkZXBzKSkKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKHRhc2ssICd2YXJkZXBzZXhjbHVkZScsICdEQVRFVElNRSBEQVRFICcgKyAnICcuam9pbih2YXJkZXBzZXhjbHVkZSkpCisKKyAgICAgICAgYmIuZGVidWcoMiwgIkFkZGluZyB0YXNrICVzIGJlZm9yZSAlcywgYWZ0ZXIgJXMiICUgKHRhc2ssICdkb19pbWFnZV9jb21wbGV0ZScsIGFmdGVyKSkKKyAgICAgICAgYmIuYnVpbGQuYWRkdGFzayh0YXNrLCAnZG9faW1hZ2VfY29tcGxldGUnLCBhZnRlciwgZCkKIH0KIAogIwpAQCAtNTk4LDMgKzYyMSw0NiBAQAogZG9fcGFja2FnZV93cml0ZV9kZWJbbm9leGVjXSA9ICIxIgogZG9fcGFja2FnZV93cml0ZV9ycG1bbm9leGVjXSA9ICIxIgogCisjIFByZXBhcmUgdGhlIHJvb3QgbGlua3MgdG8gcG9pbnQgdG8gdGhlIC91c3IgY291bnRlcnBhcnRzLgorY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3MoKSB7CisgICAgcm9vdD0iJDEiCisgICAgaW5zdGFsbCAtZCAkcm9vdCR7YmFzZV9iaW5kaXJ9ICRyb290JHtiYXNlX3NiaW5kaXJ9ICRyb290JHtiYXNlX2xpYmRpcn0KKyAgICBsbnIgJHJvb3Qke2Jhc2VfYmluZGlyfSAkcm9vdC9iaW4KKyAgICBsbnIgJHJvb3Qke2Jhc2Vfc2JpbmRpcn0gJHJvb3Qvc2JpbgorICAgIGxuciAkcm9vdCR7YmFzZV9saWJkaXJ9ICRyb290LyR7YmFzZWxpYn0KKworICAgIGlmIFsgIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfbGliZGlyfSIgXTsgdGhlbgorICAgICAgIGluc3RhbGwgLWQgJHJvb3Qke25vbmFyY2hfYmFzZV9saWJkaXJ9CisgICAgICAgbG5yICRyb290JHtub25hcmNoX2Jhc2VfbGliZGlyfSAkcm9vdC9saWIKKyAgICBmaQorCisgICAgIyBjcmVhdGUgYmFzZSBsaW5rcyBmb3IgbXVsdGlsaWJzCisgICAgbXVsdGlfbGliZGlycz0iJHtAZC5nZXRWYXIoJ01VTFRJTElCX1ZBUklBTlRTJyl9IgorICAgIGZvciBkIGluICRtdWx0aV9saWJkaXJzOyBkbworICAgICAgICBpbnN0YWxsIC1kICRyb290JHtleGVjX3ByZWZpeH0vJGQKKyAgICAgICAgbG5yICRyb290JHtleGVjX3ByZWZpeH0vJGQgJHJvb3QvJGQKKyAgICBkb25lCit9CisKK2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3Jvb3RmcygpIHsKKyAgICBjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rcyAke0lNQUdFX1JPT1RGU30KK30KKworY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3Nfc2RrKCkgeworICAgIGNyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzICR7U0RLX09VVFBVVH0ke1NES1RBUkdFVFNZU1JPT1R9Cit9CisKK1JPT1RGU19QUkVQUk9DRVNTX0NPTU1BTkQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3Nfcm9vdGZzOyAnLCAnJyxkKX0iCitQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3NkazsgJywgJycsZCl9IgorCityZXByb2R1Y2libGVfZmluYWxfaW1hZ2VfdGFzayAoKSB7CisgICAgaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorICAgICAgICBpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgorICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0YAorICAgICAgICBmaQorICAgICAgICAjIFNldCBtdGltZSBvZiBhbGwgZmlsZXMgdG8gYSByZXByb2R1Y2libGUgdmFsdWUKKyAgICAgICAgYmJub3RlICJyZXByb2R1Y2libGVfZmluYWxfaW1hZ2VfdGFzazogbXRpbWUgc2V0IHRvICRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyIKKyAgICAgICAgZmluZCAgJHtJTUFHRV9ST09URlN9IC1leGVjIHRvdWNoIC1oICAtLWRhdGU9QCRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyB7fSBcOworICAgIGZpCit9CitJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRfYXBwZW5kID0gIiByZXByb2R1Y2libGVfZmluYWxfaW1hZ2VfdGFzazsgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCmluZGV4IDhkYjE4YWMuLmU4ODFkMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKQEAgLTI2LDIwICsyNiwzMSBAQAogICAgIGZzdHlwZXMgPSBzZXQoKGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTJykgb3IgIiIpLnNwbGl0KCkpCiAgICAgZnN0eXBlcyB8PSBzZXQoKGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTX0RFQlVHRlMnKSBvciAiIikuc3BsaXQoKSkKIAorICAgIGRlcHJlY2F0ZWQgPSBzZXQoKQogICAgIGRlcHMgPSBzZXQoKQogICAgIGZvciB0eXBlc3RyaW5nIGluIGZzdHlwZXM6CiAgICAgICAgIGJhc2V0eXBlLCByZXN0dHlwZXMgPSBzcGxpdF90eXBlcyh0eXBlc3RyaW5nKQotICAgICAgICBhZGRkZXAoZC5nZXRWYXIoJ0lNQUdFX0RFUEVORFNfJXMnICUgYmFzZXR5cGUpICwgZGVwcykKKworICAgICAgICB2YXIgPSAiSU1BR0VfREVQRU5EU18lcyIgJSBiYXNldHlwZQorICAgICAgICBpZiBkLmdldFZhcih2YXIpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGVwcmVjYXRlZC5hZGQodmFyKQogCiAgICAgICAgIGZvciB0eXBlZGVwZW5kcyBpbiAoZC5nZXRWYXIoIklNQUdFX1RZUEVERVBfJXMiICUgYmFzZXR5cGUpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgYmFzZSwgcmVzdCA9IHNwbGl0X3R5cGVzKHR5cGVkZXBlbmRzKQotICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCdJTUFHRV9ERVBFTkRTXyVzJyAlIGJhc2UpICwgZGVwcykKICAgICAgICAgICAgIHJlc3R0eXBlcyArPSByZXN0CiAKKyAgICAgICAgICAgIHZhciA9ICJJTUFHRV9ERVBFTkRTXyVzIiAlIGJhc2UKKyAgICAgICAgICAgIGlmIGQuZ2V0VmFyKHZhcikgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGVwcmVjYXRlZC5hZGQodmFyKQorCiAgICAgICAgIGZvciBjdHlwZSBpbiByZXN0dHlwZXM6CiAgICAgICAgICAgICBhZGRkZXAoZC5nZXRWYXIoIkNPTlZFUlNJT05fREVQRU5EU18lcyIgJSBjdHlwZSksIGRlcHMpCiAgICAgICAgICAgICBhZGRkZXAoZC5nZXRWYXIoIkNPTVBSRVNTX0RFUEVORFNfJXMiICUgY3R5cGUpLCBkZXBzKQogCisgICAgaWYgZGVwcmVjYXRlZDoKKyAgICAgICAgYmIuZmF0YWwoJ0RlcHJlY2F0ZWQgdmFyaWFibGUocykgZm91bmQ6ICIlcyIuICcKKyAgICAgICAgICAgICAgICAgJ1VzZSBkb19pbWFnZV88dHlwZT5bZGVwZW5kc10gKz0gIjxyZWNpcGU+Ojx0YXNrPiIgaW5zdGVhZCcgJSAnLCAnLmpvaW4oZGVwcmVjYXRlZCkpCisKICAgICAjIFNvcnQgdGhlIHNldCBzbyB0aGF0IG9yZGVyaW5nIGlzIGNvbnNpc3RhbnQKICAgICByZXR1cm4gIiAiLmpvaW4oc29ydGVkKGRlcHMpKQogCkBAIC03Miw3ICs4MywxMSBAQAogCQlldmFsIENPVU5UPVwiJE1JTl9DT1VOVFwiCiAJZmkKIAkjIENyZWF0ZSBhIHNwYXJzZSBpbWFnZSBibG9jaworCWJiZGVidWcgMSBFeGVjdXRpbmcgImRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgc2Vlaz0kUk9PVEZTX1NJWkUgY291bnQ9JENPVU5UIGJzPTEwMjQiCiAJZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSBzZWVrPSRST09URlNfU0laRSBjb3VudD0kQ09VTlQgYnM9MTAyNAorCWJiZGVidWcgMSAiQWN0dWFsIFJvb3RmcyBzaXplOiAgYGR1IC1zICR7SU1BR0VfUk9PVEZTfWAiCisJYmJkZWJ1ZyAxICJBY3R1YWwgUGFydGlvbiBzaXplOiBgbHMgLXMgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlYCIKKwliYmRlYnVnIDEgRXhlY3V0aW5nICJta2ZzLiRmc3R5cGUgLUYgJGV4dHJhX2ltYWdlY21kICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSAtZCAke0lNQUdFX1JPT1RGU30iCiAJbWtmcy4kZnN0eXBlIC1GICRleHRyYV9pbWFnZWNtZCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgLWQgJHtJTUFHRV9ST09URlN9CiAJIyBFcnJvciBjb2RlcyAwLTMgaW5kaWNhdGUgc3VjY2Vzc2Z1bGwgb3BlcmF0aW9uIG9mIGZzY2sgKG5vIGVycm9ycyBvciBlcnJvcnMgY29ycmVjdGVkKQogCWZzY2suJGZzdHlwZSAtcHZmRCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgfHwgWyAkPyAtbGUgMyBdCkBAIC04OSwyNiArMTA0LDI4IEBACiAJCXNpemU9JHtNSU5fQlRSRlNfU0laRX0KIAkJYmJ3YXJuICJSb290ZnMgc2l6ZSBpcyB0b28gc21hbGwgZm9yIEJUUkZTLiBGaWxlc3lzdGVtIHdpbGwgYmUgZXh0ZW5kZWQgdG8gJHtzaXplfUsiCiAJZmkKLQlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5idHJmcyBjb3VudD0ke3NpemV9IGJzPTEwMjQKKwlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5idHJmcyBzZWVrPSR7c2l6ZX0gY291bnQ9MCBicz0xMDI0CiAJbWtmcy5idHJmcyAke0VYVFJBX0lNQUdFQ01EfSAtciAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5idHJmcwogfQogCiBJTUFHRV9DTURfc3F1YXNoZnMgPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcyAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQiCiBJTUFHRV9DTURfc3F1YXNoZnMteHogPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcy14eiAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQgLWNvbXAgeHoiCiBJTUFHRV9DTURfc3F1YXNoZnMtbHpvID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMtbHpvICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCBsem8iCitJTUFHRV9DTURfc3F1YXNoZnMtbHo0ID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMtbHo0ICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCBsejQiCiAKICMgQnkgZGVmYXVsdCwgdGFyIGZyb20gdGhlIGhvc3QgaXMgdXNlZCwgd2hpY2ggY2FuIGJlIHF1aXRlIG9sZC4gSWYKICMgeW91IG5lZWQgc3BlY2lhbCBwYXJhbWV0ZXJzIChsaWtlIC0teGF0dHJzKSB3aGljaCBhcmUgb25seSBzdXBwb3J0ZWQKICMgYnkgR05VIHRhciB1cHN0cmVhbSA+PSAxLjI3LCB0aGVuIG92ZXJyaWRlIHRoYXQgZGVmYXVsdDoKICMgSU1BR0VfQ01EX1RBUiA9ICJ0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0qIgotIyBJTUFHRV9ERVBFTkRTX3Rhcl9hcHBlbmQgPSAiIHRhci1yZXBsYWNlbWVudC1uYXRpdmUiCisjIGRvX2ltYWdlX3RhcltkZXBlbmRzXSArPSAidGFyLXJlcGxhY2VtZW50LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogIyBFWFRSQU5BVElWRVBBVEggKz0gInRhci1uYXRpdmUiCiAjCiAjIFRoZSBHTlUgZG9jdW1lbnRhdGlvbiBkb2VzIG5vdCBzcGVjaWZ5IHdoZXRoZXIgLS14YXR0cnMtaW5jbHVkZSBpcyBuZWNlc3NhcnkuCiAjIEluIHByYWN0aWNlLCBpdCB0dXJuZWQgb3V0IHRvIGJlIG5vdCBuZWVkZWQgd2hlbiBjcmVhdGluZyBhcmNoaXZlcyBhbmQKICMgcmVxdWlyZWQgd2hlbiBleHRyYWN0aW5nLCBidXQgaXQgc2VlbXMgcHJ1ZGVudCB0byB1c2UgaXQgaW4gYm90aCBjYXNlcy4KIElNQUdFX0NNRF9UQVIgPz0gInRhciIKLUlNQUdFX0NNRF90YXIgPSAiJHtJTUFHRV9DTURfVEFSfSAtY3ZmICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udGFyIC1DICR7SU1BR0VfUk9PVEZTfSAuIgorIyBpZ25vcmUgcmV0dXJuIGNvZGUgMSAiZmlsZSBjaGFuZ2VkIGFzIHdlIHJlYWQgaXQiIGFzIG90aGVyIHRhc2tzKGUuZy4gZG9faW1hZ2Vfd2ljKSBtYXkgYmUgaGFyZGxpbmtpbmcgcm9vdGZzCitJTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLWNmICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udGFyIC1DICR7SU1BR0VfUk9PVEZTfSAuIHx8IFsgJD8gLWVxIDEgXSIKIAogZG9faW1hZ2VfY3Bpb1tjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2NwaW9fYXBwZW5kIgogSU1BR0VfQ01EX2NwaW8gKCkgewpAQCAtMTM1LDcgKzE1Miw3IEBACiAKIElNQUdFX0NNRF9lbGYgKCkgewogCXRlc3QgLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgJiYgcm0gLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYKLQlta2VsZkltYWdlIC0ta2VybmVsPSR7RUxGX0tFUk5FTH0gLS1pbml0cmQ9JHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX0xJTktfTkFNRX0uY3Bpby5neiAtLW91dHB1dD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAtLWFwcGVuZD0nJHtFTEZfQVBQRU5EfScgJHtFWFRSQV9JTUFHRUNNRH0KKwlta2VsZkltYWdlIC0ta2VybmVsPSR7RUxGX0tFUk5FTH0gLS1pbml0cmQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5jcGlvLmd6IC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmIC0tYXBwZW5kPScke0VMRl9BUFBFTkR9JyAke0VYVFJBX0lNQUdFQ01EfQogfQogCiBJTUFHRV9UWVBFREVQX2VsZiA9ICJjcGlvLmd6IgpAQCAtMTQ1LDYgKzE2MiwxMiBAQAogbXVsdGl1YmlfbWtmcygpIHsKIAlsb2NhbCBta3ViaWZzX2FyZ3M9IiQxIgogCWxvY2FsIHViaW5pemVfYXJncz0iJDIiCisgICAgCisgICAgICAgICMgQWRkZWQgcHJvbXB0IGVycm9yIG1lc3NhZ2UgZm9yIHViaSBhbmQgdWJpZnMgaW1hZ2UgY3JlYXRpb24uCisgICAgICAgIGlmIFsgLXogIiRta3ViaWZzX2FyZ3MiXSB8fCBbIC16ICIkdWJpbml6ZV9hcmdzIiBdOyB0aGVuCisgICAgICAgICAgICBiYmZhdGFsICJNS1VCSUZTX0FSR1MgYW5kIFVCSU5JWkVfQVJHUyBoYXZlIHRvIGJlIHNldCwgc2VlIGh0dHA6Ly93d3cubGludXgtbXRkLmluZnJhZGVhZC5vcmcvZmFxL3ViaWZzLmh0bWwgZm9yIGRldGFpbHMiCisgICAgICAgIGZpCisgICAgCiAJaWYgWyAteiAiJDMiIF07IHRoZW4KIAkJbG9jYWwgdm5hbWU9IiIKIAllbHNlCkBAIC0yMDksMjEgKzIzMiwyMCBAQAogRVhUUkFfSU1BR0VDTURfYnRyZnMgPz0gIi1uIDQwOTYiCiBFWFRSQV9JTUFHRUNNRF9lbGYgPz0gIiIKIAotSU1BR0VfREVQRU5EUyA9ICIiCi1JTUFHRV9ERVBFTkRTX2pmZnMyID0gIm10ZC11dGlscy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2NyYW1mcyA9ICJ1dGlsLWxpbnV4LW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfZXh0MiA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotSU1BR0VfREVQRU5EU19leHQzID0gImUyZnNwcm9ncy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2V4dDQgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfYnRyZnMgPSAiYnRyZnMtdG9vbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19zcXVhc2hmcyA9ICJzcXVhc2hmcy10b29scy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3NxdWFzaGZzLXh6ID0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfc3F1YXNoZnMtbHpvID0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfZWxmID0gInZpcnR1YWwva2VybmVsIG1rZWxmaW1hZ2UtbmF0aXZlIgotSU1BR0VfREVQRU5EU191YmkgPSAibXRkLXV0aWxzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfdWJpZnMgPSAibXRkLXV0aWxzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfbXVsdGl1YmkgPSAibXRkLXV0aWxzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfd2ljID0gInBhcnRlZC1uYXRpdmUiCitkb19pbWFnZV9qZmZzMltkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfY3JhbWZzW2RlcGVuZHNdICs9ICJ1dGlsLWxpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZXh0MltkZXBlbmRzXSArPSAiZTJmc3Byb2dzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZXh0M1tkZXBlbmRzXSArPSAiZTJmc3Byb2dzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZXh0NFtkZXBlbmRzXSArPSAiZTJmc3Byb2dzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfYnRyZnNbZGVwZW5kc10gKz0gImJ0cmZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2Vfc3F1YXNoZnNbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2Vfc3F1YXNoZnNfeHpbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2Vfc3F1YXNoZnNfbHpvW2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3NxdWFzaGZzX2x6NFtkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9lbGZbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbWtlbGZpbWFnZS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3ViaVtkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfdWJpZnNbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX211bHRpdWJpW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKICMgVGhpcyB2YXJpYWJsZSBpcyBhdmFpbGFibGUgdG8gcmVxdWVzdCB3aGljaCB2YWx1ZXMgYXJlIHN1aXRhYmxlIGZvciBJTUFHRV9GU1RZUEVTCiBJTUFHRV9UWVBFUyA9ICIgXApAQCAtMjM1LDE0ICsyNTcsMTAgQEAKICAgICBidHJmcyBcCiAgICAgaXNvIFwKICAgICBoZGRpbWcgXAotICAgIHNxdWFzaGZzIHNxdWFzaGZzLXh6IHNxdWFzaGZzLWx6byBcCisgICAgc3F1YXNoZnMgc3F1YXNoZnMteHogc3F1YXNoZnMtbHpvIHNxdWFzaGZzLWx6NCBcCiAgICAgdWJpIHViaWZzIG11bHRpdWJpIFwKICAgICB0YXIgdGFyLmd6IHRhci5iejIgdGFyLnh6IHRhci5sejQgXAogICAgIGNwaW8gY3Bpby5neiBjcGlvLnh6IGNwaW8ubHptYSBjcGlvLmx6NCBcCi0gICAgdm1kayBcCi0gICAgdmRpIFwKLSAgICBxY293MiBcCi0gICAgaGRkZGlyZWN0IFwKICAgICBlbGYgXAogICAgIHdpYyB3aWMuZ3ogd2ljLmJ6MiB3aWMubHptYSBcCiAgICAgY29udGFpbmVyIFwKQEAgLTI1NCw5ICsyNzIsOSBAQAogIyBDT05WRVJTSU9OX0NNRC9ERVBFTkRTLgogQ09NUFJFU1NJT05UWVBFUyA/PSAiIgogCi1DT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCAke0NPTVBSRVNTSU9OVFlQRVN9IgorQ09OVkVSU0lPTlRZUEVTID0gImd6IGJ6MiBsem1hIHh6IGx6NCBsem8gemlwIHN1bSBtZDVzdW0gc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gYm1hcCB1LWJvb3Qgdm1kayB2ZGkgcWNvdzIgJHtDT01QUkVTU0lPTlRZUEVTfSIKIENPTlZFUlNJT05fQ01EX2x6bWEgPSAibHptYSAtayAtZiAtNyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKLUNPTlZFUlNJT05fQ01EX2d6ID0gImd6aXAgLWYgLTkgLWMgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5neiIKK0NPTlZFUlNJT05fQ01EX2d6ID0gImd6aXAgLWYgLTkgLW4gLWMgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5neiIKIENPTlZFUlNJT05fQ01EX2J6MiA9ICJwYnppcDIgLWYgLWsgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCiBDT05WRVJTSU9OX0NNRF94eiA9ICJ4eiAtZiAtayAtYyAke1haX0NPTVBSRVNTSU9OX0xFVkVMfSAke1haX1RIUkVBRFN9IC0tY2hlY2s9JHtYWl9JTlRFR1JJVFlfQ0hFQ0t9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ueHoiCiBDT05WRVJTSU9OX0NNRF9sejQgPSAibHo0IC05IC16ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmx6NCIKQEAgLTI3Miw2ICsyOTAsOSBAQAogQ09OVkVSU0lPTl9DTURfc2hhNTEyc3VtID0gInNoYTUxMnN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTUxMnN1bSIKIENPTlZFUlNJT05fQ01EX2JtYXAgPSAiYm1hcHRvb2wgY3JlYXRlICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IC1vICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LmJtYXAiCiBDT05WRVJTSU9OX0NNRF91LWJvb3QgPSAibWtpbWFnZSAtQSAke1VCT09UX0FSQ0h9IC1PIGxpbnV4IC1UIHJhbWRpc2sgLUMgbm9uZSAtbiAke0lNQUdFX05BTUV9IC1kICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnUtYm9vdCIKK0NPTlZFUlNJT05fQ01EX3ZtZGsgPSAicWVtdS1pbWcgY29udmVydCAtTyB2bWRrICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnZtZGsiCitDT05WRVJTSU9OX0NNRF92ZGkgPSAicWVtdS1pbWcgY29udmVydCAtTyB2ZGkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0udmRpIgorQ09OVkVSU0lPTl9DTURfcWNvdzIgPSAicWVtdS1pbWcgY29udmVydCAtTyBxY293MiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5xY293MiIKIENPTlZFUlNJT05fREVQRU5EU19sem1hID0gInh6LW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19neiA9ICJwaWd6LW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19iejIgPSAicGJ6aXAyLW5hdGl2ZSIKQEAgLTI4MiwxNSArMzAzLDE4IEBACiBDT05WRVJTSU9OX0RFUEVORFNfc3VtID0gIm10ZC11dGlscy1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfYm1hcCA9ICJibWFwLXRvb2xzLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU191LWJvb3QgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3ZtZGsgPSAicWVtdS1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfdmRpID0gInFlbXUtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3Fjb3cyID0gInFlbXUtbmF0aXZlIgogCiBSVU5OQUJMRV9JTUFHRV9UWVBFUyA/PSAiZXh0MiBleHQzIGV4dDQiCiBSVU5OQUJMRV9NQUNISU5FX1BBVFRFUk5TID89ICJxZW11IgogCiBERVBMT1lBQkxFX0lNQUdFX1RZUEVTID89ICJoZGRpbWcgaXNvIiAKIAotIyBVc2UgSU1BR0VfRVhURU5TSU9OX3h4eCB0byBtYXAgaW1hZ2UgdHlwZSAneHh4JyB3aXRoIHJlYWwgaW1hZ2UgZmlsZSBleHRlbnNpb24gbmFtZShzKSBmb3IgSG9iCi1JTUFHRV9FWFRFTlNJT05fbGl2ZSA9ICJoZGRpbWcgaXNvIgotCiAjIFRoZSBJTUFHRV9UWVBFU19NQVNLRUQgdmFyaWFibGUgd2lsbCBiZSB1c2VkIHRvIG1hc2sgb3V0IGZyb20gdGhlIElNQUdFX0ZTVFlQRVMsCiAjIGltYWdlcyB0aGF0IHdpbGwgbm90IGJlIGJ1aWx0IGF0IGRvX3Jvb3RmcyB0aW1lOiB2bWRrLCB2ZGksIHFjb3cyLCBoZGRkaXJlY3QsIGhkZGltZywgaXNvLCBldGMuCiBJTUFHRV9UWVBFU19NQVNLRUQgPz0gIiIKKworIyBibWFwIHJlcXVpcmVzIHB5dGhvbjMgdG8gYmUgaW4gdGhlIFBBVEgKK0VYVFJBTkFUSVZFUEFUSCArPSAiJHtAJ3B5dGhvbjMtbmF0aXZlJyBpZiBkLmdldFZhcignSU1BR0VfRlNUWVBFUycpLmZpbmQoJy5ibWFwJykgZWxzZSAnJ30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwppbmRleCA2OGYyNTFjLi5kY2Y2MjBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKQEAgLTMsNyArMyw3IEBACiBXSUNWQVJTID89ICJcCiAgICAgICAgICAgIEJCTEFZRVJTIElNR0RFUExPWURJUiBERVBMT1lfRElSX0lNQUdFIEZBS0VST09UQ01EIElNQUdFX0JBU0VOQU1FIElNQUdFX0JPT1RfRklMRVMgXAogICAgICAgICAgICBJTUFHRV9MSU5LX05BTUUgSU1BR0VfUk9PVEZTIElOSVRSQU1GU19GU1RZUEVTIElOSVRSRCBJTklUUkRfTElWRSBJU09ESVIgUkVDSVBFX1NZU1JPT1RfTkFUSVZFIFwKLSAgICAgICAgICAgUk9PVEZTX1NJWkUgU1RBR0lOR19EQVRBRElSIFNUQUdJTkdfRElSIFNUQUdJTkdfTElCRElSIFRBUkdFVF9TWVMgVFJBTlNMQVRFRF9UQVJHRVRfQVJDSCIKKyAgICAgICAgICAgUk9PVEZTX1NJWkUgU1RBR0lOR19EQVRBRElSIFNUQUdJTkdfRElSIFNUQUdJTkdfTElCRElSIFRBUkdFVF9TWVMiCiAKIFdLU19GSUxFID8/PSAiJHtJTUFHRV9CQVNFTkFNRX0uJHtNQUNISU5FfS53a3MiCiBXS1NfRklMRVMgPz0gIiR7V0tTX0ZJTEV9ICR7SU1BR0VfQkFTRU5BTUV9LndrcyIKQEAgLTM5LDggKzM5LDE5IEBACiBVU0lOR19XSUMgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ3dpYyAnICsgJyAnLmpvaW4oJ3dpYy4lcycgJSBjIGZvciBjIGluICcke0NPTlZFUlNJT05UWVBFU30nLnNwbGl0KCkpLCAnMScsICcnLCBkKX0iCiBXS1NfRklMRV9DSEVDS1NVTSA9ICIke0AnJHtXS1NfRlVMTF9QQVRIfTolcycgJSBvcy5wYXRoLmV4aXN0cygnJHtXS1NfRlVMTF9QQVRIfScpIGlmICcke1VTSU5HX1dJQ30nIGVsc2UgJyd9IgogZG9faW1hZ2Vfd2ljW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtXS1NfRklMRV9DSEVDS1NVTX0iCi1kb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIndpYy10b29sczpkb19wb3B1bGF0ZV9zeXNyb290IgotV0tTX0ZJTEVfREVQRU5EUyA/Pz0gJycKK2RvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAiJHtAJyAnLmpvaW4oJyVzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JyAlIHIgZm9yIHIgaW4gKCdwYXJ0ZWQnLCAnZ3B0ZmRpc2snLCAnZG9zZnN0b29scycsICdtdG9vbHMnKSl9IgorCisjIFdlIGVuc3VyZSBhbGwgYXJ0ZmFjdHMgYXJlIGRlcGxveWVkIChlLmcgdmlydHVhbC9ib290bG9hZGVyKQorZG9faW1hZ2Vfd2ljW3JlY3JkZXB0YXNrXSArPSAiZG9fZGVwbG95IgorCitXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFQgPSAic3lzbGludXgtbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUiCitXS1NfRklMRV9ERVBFTkRTX0JPT1RMT0FERVJTID0gIiIKK1dLU19GSUxFX0RFUEVORFNfQk9PVExPQURFUlNfeDg2ID0gInN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKK1dLU19GSUxFX0RFUEVORFNfQk9PVExPQURFUlNfeDg2LTY0ID0gInN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKK1dLU19GSUxFX0RFUEVORFNfQk9PVExPQURFUlNfeDg2LXgzMiA9ICJzeXNsaW51eCBncnViLWVmaSIKKworV0tTX0ZJTEVfREVQRU5EUyA/Pz0gIiR7V0tTX0ZJTEVfREVQRU5EU19ERUZBVUxUfSAke1dLU19GSUxFX0RFUEVORFNfQk9PVExPQURFUlN9IgorCiBERVBFTkRTICs9ICIke0AgJyR7V0tTX0ZJTEVfREVQRU5EU30nIGlmIGQuZ2V0VmFyKCdVU0lOR19XSUMnKSBlbHNlICcnIH0iCiAKIHB5dGhvbiBkb193cml0ZV93a3NfdGVtcGxhdGUgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKaW5kZXggMGMxMWMzNi4uMGEzYjUyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCkBAIC0xNiwxMyArMTYsOCBAQAogIyAgIGludG8gZXhlY19wcmVmaXgKICMgIC1DaGVjayB0aGF0IHNjcmlwdHMgaW4gYmFzZV9bYmluZGlyfHNiaW5kaXJ8bGliZGlyXSBkbyBub3QgcmVmZXJlbmNlCiAjICAgZmlsZXMgdW5kZXIgZXhlY19wcmVmaXgKKyMgIC1DaGVjayBpZiB0aGUgcGFja2FnZSBuYW1lIGlzIHVwcGVyIGNhc2UKIAotCi0jIHVuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzIHJlcXVpcmVzIHByZWxpbmstcnRsZCBmcm9tCi0jIHByZWxpbmstbmF0aXZlLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGlzIERFUEVORFMgZm9yIC1uYXRpdmUgYnVpbGRzCi1RQURFUEVORFMgPSAicHJlbGluay1uYXRpdmUiCi1RQURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLVFBREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiIgogUUFfU0FORSA9ICJUcnVlIgogCiAjIEVsZWN0IHdoZXRoZXIgYSBnaXZlbiB0eXBlIG9mIGVycm9yIGlzIGEgd2FybmluZyBvciBlcnJvciwgdGhleSBtYXkKQEAgLTMyLDcgKzI3LDcgQEAKICAgICAgICAgICAgIGluc3RhbGxlZC12cy1zaGlwcGVkIGNvbXBpbGUtaG9zdC1wYXRoIGluc3RhbGwtaG9zdC1wYXRoIFwKICAgICAgICAgICAgIHBuLW92ZXJyaWRlcyBpbmZvZGlyIGJ1aWxkLWRlcHMgXAogICAgICAgICAgICAgdW5rbm93bi1jb25maWd1cmUtb3B0aW9uIHN5bWxpbmstdG8tc3lzcm9vdCBtdWx0aWxpYiBcCi0gICAgICAgICAgICBpbnZhbGlkLXBhY2thZ2Vjb25maWcgaG9zdC11c2VyLWNvbnRhbWluYXRlZCBcCisgICAgICAgICAgICBpbnZhbGlkLXBhY2thZ2Vjb25maWcgaG9zdC11c2VyLWNvbnRhbWluYXRlZCB1cHBlcmNhc2UtcG4gXAogICAgICAgICAgICAgIgogRVJST1JfUUEgPz0gImRldi1zbyBkZWJ1Zy1kZXBzIGRldi1kZXBzIGRlYnVnLWZpbGVzIGFyY2ggcGtnY29uZmlnIGxhIFwKICAgICAgICAgICAgIHBlcm1zIGRlcC1jbXAgcGtndmFyY2hlY2sgcGVybS1jb25maWcgcGVybS1saW5lIHBlcm0tbGluayBcCkBAIC00MCw2ICszNSw5IEBACiAgICAgICAgICAgICB2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcyBleHBhbmRlZC1kIGludmFsaWQtY2hhcnMgXAogICAgICAgICAgICAgbGljZW5zZS1jaGVja3N1bSBkZXYtZWxmIGZpbGUtcmRlcHMgXAogICAgICAgICAgICAgIgorIyBBZGQgdXNybWVyZ2UgUUEgY2hlY2sgYmFzZWQgb24gZGlzdHJvIGZlYXR1cmUKK0VSUk9SX1FBX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJyB1c3JtZXJnZScsICcnLCBkKX0iCisKIEZBS0VST09UX1FBID0gImhvc3QtdXNlci1jb250YW1pbmF0ZWQiCiBGQUtFUk9PVF9RQVtkb2NdID0gIlFBIHRlc3RzIHdoaWNoIG5lZWQgdG8gcnVuIHVuZGVyIGZha2Vyb290LiBJZiBhbnkgXAogZW5hYmxlZCB0ZXN0cyBhcmUgbGlzdGVkIGhlcmUsIHRoZSBkb19wYWNrYWdlX3FhIHRhc2sgd2lsbCBydW4gdW5kZXIgZmFrZXJvb3QuIgpAQCAtMTAzLDIzICsxMDEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LXVjbGliYyIgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKCAgNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImF2cjMyIjogICAgICAoNjMxNywgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0KLSAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LW11c2wiIDogeyAKICAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLApAQCAtMTUxLDE5ICsxMzIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIiA6ICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC11Y2xpYmNlYWJpIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIiA6ICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1nbnVzcGUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1tdXNsc3BlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtdWNsaWJjc3BlIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtZ251IiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC0xNzEsNiArMTQ1LDkgQEAKICAgICAgICAgICAgICJsaW51eC1nbnV4MzIiIDogICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1tdXNseDMyIiA6ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtZ251bjMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLApAQCAtMjA3LDEyICsxODQsMTMgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVzOiAlcyBbJXNdXG4iICUgKHAsIGVycm9yLCB0eXBlKSkKIAogZGVmIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKGVycm9yX2NsYXNzLCBlcnJvcl9tc2csIGQpOgotICAgIHBhY2thZ2VfcWFfd3JpdGVfZXJyb3IoZXJyb3JfY2xhc3MsIGVycm9yX21zZywgZCkKICAgICBpZiBlcnJvcl9jbGFzcyBpbiAoZC5nZXRWYXIoIkVSUk9SX1FBIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgIHBhY2thZ2VfcWFfd3JpdGVfZXJyb3IoZXJyb3JfY2xhc3MsIGVycm9yX21zZywgZCkKICAgICAgICAgYmIuZXJyb3IoIlFBIElzc3VlOiAlcyBbJXNdIiAlIChlcnJvcl9tc2csIGVycm9yX2NsYXNzKSkKICAgICAgICAgZC5zZXRWYXIoIlFBX1NBTkUiLCBGYWxzZSkKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZWxpZiBlcnJvcl9jbGFzcyBpbiAoZC5nZXRWYXIoIldBUk5fUUEiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgcGFja2FnZV9xYV93cml0ZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKQogICAgICAgICBiYi53YXJuKCJRQSBJc3N1ZTogJXMgWyVzXSIgJSAoZXJyb3JfbXNnLCBlcnJvcl9jbGFzcykpCiAgICAgZWxzZToKICAgICAgICAgYmIubm90ZSgiUUEgSXNzdWU6ICVzIFslc10iICUgKGVycm9yX21zZywgZXJyb3JfY2xhc3MpKQpAQCAtNDA4LDcxICszODYsNiBAQAogICAgICIiIgogICAgIHJldHVybgogCi1RQVBBVEhURVNUW3Vuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHNdID0gInBhY2thZ2VfcWFfY2hlY2tfdW5zYWZlX3JlZmVyZW5jZXNfaW5fc2NyaXB0cyIKLWRlZiBwYWNrYWdlX3FhX2NoZWNrX3Vuc2FmZV9yZWZlcmVuY2VzX2luX3NjcmlwdHMocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6Ci0gICAgIiIiCi0gICAgV2FybiBpZiBzY3JpcHRzIGluIGJhc2VfW2JpbmRpcnxzYmluZGlyfGxpYmRpcl0gcmVmZXJlbmNlIGZpbGVzIHVuZGVyIGV4ZWNfcHJlZml4Ci0gICAgIiIiCi0gICAgaWYgdW5zYWZlX3JlZmVyZW5jZXNfc2tpcHBhYmxlKHBhdGgsIG5hbWUsIGQpOgotICAgICAgICByZXR1cm4KLQotICAgIGlmIG5vdCBlbGY6Ci0gICAgICAgIGltcG9ydCBzdGF0Ci0gICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLQotICAgICAgICAjIEVuc3VyZSB3ZSdyZSBjaGVja2luZyBhbiBleGVjdXRhYmxlIHNjcmlwdAotICAgICAgICBzdGF0aW5mbyA9IG9zLnN0YXQocGF0aCkKLSAgICAgICAgaWYgYm9vbChzdGF0aW5mby5zdF9tb2RlICYgc3RhdC5TX0lYVVNSKToKLSAgICAgICAgICAgICMgZ3JlcCBzaGVsbCBzY3JpcHRzIGZvciBwb3NzaWJsZSByZWZlcmVuY2VzIHRvIC9leGVjX3ByZWZpeC8KLSAgICAgICAgICAgIGV4ZWNfcHJlZml4ID0gZC5nZXRWYXIoJ2V4ZWNfcHJlZml4JykKLSAgICAgICAgICAgIHN0YXRlbWVudCA9ICJncmVwIC1lICclcy9bXiA6XVx7MSxcfS9bXiA6XVx7MSxcfScgJXMgPiAvZGV2L251bGwiICUgKGV4ZWNfcHJlZml4LCBwYXRoKQotICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0YXRlbWVudCwgc2hlbGw9VHJ1ZSkgPT0gMDoKLSAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSBwbiArICI6IEZvdW5kIGEgcmVmZXJlbmNlIHRvICVzLyBpbiAlcyIgJSAoZXhlY19wcmVmaXgsIHBhdGgpCi0gICAgICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHMiLCBlcnJvcl9tc2csIGQpCi0gICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gIlNoZWxsIHNjcmlwdHMgaW4gYmFzZV9iaW5kaXIgYW5kIGJhc2Vfc2JpbmRpciBzaG91bGQgbm90IHJlZmVyZW5jZSBhbnl0aGluZyBpbiBleGVjX3ByZWZpeCIKLSAgICAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigidW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0cyIsIGVycm9yX21zZywgZCkKLQotZGVmIHVuc2FmZV9yZWZlcmVuY2VzX3NraXBwYWJsZShwYXRoLCBuYW1lLCBkKToKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGlmICItZGJnIiBpbiBuYW1lIG9yICItZGV2IiBpbiBuYW1lOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBPdGhlciBwYWNrYWdlIG5hbWVzIHRvIHNraXA6Ci0gICAgaWYgbmFtZS5zdGFydHN3aXRoKCJrZXJuZWwtbW9kdWxlLSIpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBTa2lwIHN5bWxpbmtzCi0gICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFNraXAgdW51c3VhbCByb290ZnMgbGF5b3V0cyB3aGljaCBtYWtlIHRoZXNlIHRlc3RzIGlycmVsZXZhbnQKLSAgICBleGVjX3ByZWZpeCA9IGQuZ2V0VmFyKCdleGVjX3ByZWZpeCcpCi0gICAgaWYgZXhlY19wcmVmaXggPT0gIiI6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQotICAgIHBrZ2Rlc3QgPSBwa2dkZXN0ICsgIi8iICsgbmFtZQotICAgIHBrZ2Rlc3QgPSBvcy5wYXRoLmFic3BhdGgocGtnZGVzdCkKLSAgICBiYXNlX2JpbmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignYmFzZV9iaW5kaXInKQotICAgIGJhc2Vfc2JpbmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignYmFzZV9zYmluZGlyJykKLSAgICBiYXNlX2xpYmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignYmFzZV9saWJkaXInKQotICAgIGJpbmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignYmluZGlyJykKLSAgICBzYmluZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdzYmluZGlyJykKLSAgICBsaWJkaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2xpYmRpcicpCi0KLSAgICBpZiBiYXNlX2JpbmRpciA9PSBiaW5kaXIgYW5kIGJhc2Vfc2JpbmRpciA9PSBzYmluZGlyIGFuZCBiYXNlX2xpYmRpciA9PSBsaWJkaXI6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFNraXAgZmlsZXMgbm90IGluIGJhc2VfW2JpbmRpcnxzYmluZGlyfGxpYmRpcl0KLSAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHBhdGgpCi0gICAgaWYgbm90IChiYXNlX2JpbmRpciBpbiBwYXRoIG9yIGJhc2Vfc2JpbmRpciBpbiBwYXRoIG9yIGJhc2VfbGliZGlyIGluIHBhdGgpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgcmV0dXJuIEZhbHNlCi0KIFFBUEFUSFRFU1RbYXJjaF0gPSAicGFja2FnZV9xYV9jaGVja19hcmNoIgogZGVmIHBhY2thZ2VfcWFfY2hlY2tfYXJjaChwYXRoLG5hbWUsZCwgZWxmLCBtZXNzYWdlcyk6CiAgICAgIiIiCkBAIC01MDksNyArNDIyLDcgQEAKIAogICAgICMgQ2hlY2sgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZW5kaWFubmVzIG9mIHRoZSBiaW5hcnkKICAgICBpc18zMiA9ICgoInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcykgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibW9kdWxlIiwgZCkpIGFuZCBcCi0gICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQorICAgICAgICAgICAgKHRhcmdldF9vcyA9PSAibGludXgtZ251eDMyIiBvciB0YXJnZXRfb3MgPT0gImxpbnV4LW11c2x4MzIiICBvciByZS5tYXRjaCgnbWlwczY0LiozMicsIGQuZ2V0VmFyKCdERUZBVUxUVFVORScpKSkKICAgICBpZiBub3QgKChtYWNoaW5lID09IGVsZi5tYWNoaW5lKCkpIG9yIGlzXzMyKToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQXJjaGl0ZWN0dXJlIGRpZCBub3QgbWF0Y2ggKCVzLCBleHBlY3RlZCAlcykgb24gJXMiICUgXAogICAgICAgICAgICAgICAgICAob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKGVsZi5tYWNoaW5lKCkpLCBvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcobWFjaGluZSksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKQEAgLTY3Nyw3ICs1OTAsNyBAQAogICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IFJlY2lwZSBmaWxlIGZldGNoZXMgZmlsZXMgYW5kIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChMSUNfRklMRVNfQ0hLU1VNKSIsIGQpCiAKICAgICBzcmNkaXIgPSBkLmdldFZhcignUycpCi0KKyAgICBjb3JlYmFzZV9saWNlbnNlZmlsZSA9IGQuZ2V0VmFyKCdDT1JFQkFTRScpICsgIi9MSUNFTlNFIgogICAgIGZvciB1cmwgaW4gbGljX2ZpbGVzLnNwbGl0KCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgICh0eXBlLCBob3N0LCBwYXRoLCB1c2VyLCBwc3dkLCBwYXJtKSA9IGJiLmZldGNoLmRlY29kZXVybCh1cmwpCkBAIC02ODksNiArNjAyLDkgQEAKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBMSUNfRklMRVNfQ0hLU1VNIHBvaW50cyB0byBhbiBpbnZhbGlkIGZpbGU6ICIgKyBzcmNsaWNmaWxlLCBkKQogICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICBpZiAoc3JjbGljZmlsZSA9PSBjb3JlYmFzZV9saWNlbnNlZmlsZSk6CisgICAgICAgICAgICBiYi53YXJuKCIke0NPUkVCQVNFfS9MSUNFTlNFIGlzIG5vdCBhIHZhbGlkIGxpY2Vuc2UgZmlsZSwgcGxlYXNlIHVzZSAnJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVCcgZm9yIGEgTUlUIExpY2Vuc2UgZmlsZSBpbiBMSUNfRklMRVNfQ0hLU1VNLiBUaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIHRoZSBmdXR1cmUiKQorCiAgICAgICAgIHJlY2lwZW1kNSA9IHBhcm0uZ2V0KCdtZDUnLCAnJykKICAgICAgICAgYmVnaW5saW5lLCBlbmRsaW5lID0gMCwgMAogICAgICAgICBpZiAnYmVnaW5saW5lJyBpbiBwYXJtOgpAQCAtODE2LDcgKzczMiw3IEBACiAgICAgcmV0dXJuIHNhbmUKIAogIyBSdW4gYWxsIHBhY2thZ2Utd2lkZSB3YXJuZnVuY3MgYW5kIGVycm9yZnVuY3MKLWRlZiBwYWNrYWdlX3FhX3BhY2thZ2Uod2FybmZ1bmNzLCBlcnJvcmZ1bmNzLCBza2lwLCBwYWNrYWdlLCBkKToKK2RlZiBwYWNrYWdlX3FhX3BhY2thZ2Uod2FybmZ1bmNzLCBlcnJvcmZ1bmNzLCBwYWNrYWdlLCBkKToKICAgICB3YXJuaW5ncyA9IHt9CiAgICAgZXJyb3JzID0ge30KIApAQCAtODMyLDggKzc0OCwyNSBAQAogCiAgICAgcmV0dXJuIGxlbihlcnJvcnMpID09IDAKIAorIyBSdW4gYWxsIHJlY2lwZS13aWRlIHdhcm5mdW5jcyBhbmQgZXJyb3JmdW5jcworZGVmIHBhY2thZ2VfcWFfcmVjaXBlKHdhcm5mdW5jcywgZXJyb3JmdW5jcywgcG4sIGQpOgorICAgIHdhcm5pbmdzID0ge30KKyAgICBlcnJvcnMgPSB7fQorCisgICAgZm9yIGZ1bmMgaW4gd2FybmZ1bmNzOgorICAgICAgICBmdW5jKHBuLCBkLCB3YXJuaW5ncykKKyAgICBmb3IgZnVuYyBpbiBlcnJvcmZ1bmNzOgorICAgICAgICBmdW5jKHBuLCBkLCBlcnJvcnMpCisKKyAgICBmb3IgdyBpbiB3YXJuaW5nczoKKyAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3Iodywgd2FybmluZ3Nbd10sIGQpCisgICAgZm9yIGUgaW4gZXJyb3JzOgorICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcihlLCBlcnJvcnNbZV0sIGQpCisKKyAgICByZXR1cm4gbGVuKGVycm9ycykgPT0gMAorCiAjIFdhbGsgb3ZlciBhbGwgZmlsZXMgaW4gYSBkaXJlY3RvcnkgYW5kIGNhbGwgZnVuYwotZGVmIHBhY2thZ2VfcWFfd2Fsayh3YXJuZnVuY3MsIGVycm9yZnVuY3MsIHNraXAsIHBhY2thZ2UsIGQpOgorZGVmIHBhY2thZ2VfcWFfd2Fsayh3YXJuZnVuY3MsIGVycm9yZnVuY3MsIHBhY2thZ2UsIGQpOgogICAgIGltcG9ydCBvZS5xYQogCiAgICAgI2lmIHRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24sIHRoZW4gZml4IHRoZSBkaWN0IGFib3ZlCkBAIC05NzMsOCArOTA2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gIiVzIGNvbnRhaW5lZCBpbiBwYWNrYWdlICVzIHJlcXVpcmVzICVzLCBidXQgbm8gcHJvdmlkZXJzIGZvdW5kIGluIFJERVBFTkRTXyVzPyIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVyZGVwZW5kc1trZXldLnJlcGxhY2UoIl8lcyIgJSBwa2csICIiKS5yZXBsYWNlKCJAdW5kZXJzY29yZUAiLCAiXyIpLCBwa2csIGtleSwgcGtnKQogICAgICAgICAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigiZmlsZS1yZGVwcyIsIGVycm9yX21zZywgZCkKK3BhY2thZ2VfcWFfY2hlY2tfcmRlcGVuZHNbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKIAotZGVmIHBhY2thZ2VfcWFfY2hlY2tfZGVwcyhwa2csIHBrZ2Rlc3QsIHNraXAsIGQpOgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfZGVwcyhwa2csIHBrZ2Rlc3QsIGQpOgogCiAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgcGtnKQpAQCAtOTk3LDYgKzkzMSwxOCBAQAogICAgIGNoZWNrX3ZhbGlkX2RlcHMoJ1JSRVBMQUNFUycpCiAgICAgY2hlY2tfdmFsaWRfZGVwcygnUkNPTkZMSUNUUycpCiAKK1FBUEtHVEVTVFt1c3JtZXJnZV0gPSAicGFja2FnZV9xYV9jaGVja191c3JtZXJnZSIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX3Vzcm1lcmdlKHBrZywgZCwgbWVzc2FnZXMpOgorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCisgICAgcGtnX2RpciA9IHBrZ2Rlc3QgKyBvcy5zZXAgKyBwa2cgKyBvcy5zZXAKKyAgICBtZXJnZWRfZGlycyA9IFsnYmluJywgJ3NiaW4nLCAnbGliJ10gKyBkLmdldFZhcignTVVMVElMSUJfVkFSSUFOVFMnKS5zcGxpdCgpCisgICAgZm9yIGYgaW4gbWVyZ2VkX2RpcnM6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ19kaXIgKyBmKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKHBrZ19kaXIgKyBmKToKKyAgICAgICAgICAgIG1zZyA9ICIlcyBwYWNrYWdlIGlzIG5vdCBvYmV5aW5nIHVzcm1lcmdlIGRpc3RybyBmZWF0dXJlLiAvJXMgc2hvdWxkIGJlIHJlbG9jYXRlZCB0byAvdXNyLiIgJSAocGtnLCBmKQorICAgICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgInVzcm1lcmdlIiwgbXNnKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKwogUUFQS0dURVNUW2V4cGFuZGVkLWRdID0gInBhY2thZ2VfcWFfY2hlY2tfZXhwYW5kZWRfZCIKIGRlZiBwYWNrYWdlX3FhX2NoZWNrX2V4cGFuZGVkX2QocGFja2FnZSwgZCwgbWVzc2FnZXMpOgogICAgICIiIgpAQCAtMTA3MCw2ICsxMDE2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBUcnVlCiAKKwogIyBUaGUgUEFDS0FHRSBGVU5DIHRvIHNjYW4gZWFjaCBwYWNrYWdlCiBweXRob24gZG9fcGFja2FnZV9xYSAoKSB7CiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTEwODMsNyArMTAzMCw3IEBACiAgICAgcGFja2FnZV9xYV9jaGVja19lbmNvZGluZyhbJ0RFU0NSSVBUSU9OJywgJ1NVTU1BUlknLCAnTElDRU5TRScsICdTRUNUSU9OJ10sICd1dGYtOCcsIGQpCiAKICAgICBsb2dkaXIgPSBkLmdldFZhcignVCcpCi0gICAgcGtnID0gZC5nZXRWYXIoJ1BOJykKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKICAgICAjIENoZWNrIHRoZSBjb21waWxlIGxvZyBmb3IgaG9zdCBjb250YW1pbmF0aW9uCiAgICAgY29tcGlsZWxvZyA9IG9zLnBhdGguam9pbihsb2dkaXIsImxvZy5kb19jb21waWxlIikKQEAgLTEwOTIsNyArMTAzOSw3IEBACiAgICAgICAgIHN0YXRlbWVudCA9ICJncmVwIC1lICdDUk9TUyBDT01QSUxFIEJhZG5lc3M6JyAtZSAnaXMgdW5zYWZlIGZvciBjcm9zcy1jb21waWxhdGlvbicgJXMgPiAvZGV2L251bGwiICUgY29tcGlsZWxvZwogICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgogICAgICAgICAgICAgbXNnID0gIiVzOiBUaGUgY29tcGlsZSBsb2cgaW5kaWNhdGVzIHRoYXQgaG9zdCBpbmNsdWRlIGFuZC9vciBsaWJyYXJ5IHBhdGhzIHdlcmUgdXNlZC5cbiBcCi0gICAgICAgIFBsZWFzZSBjaGVjayB0aGUgbG9nICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIChwa2csIGNvbXBpbGVsb2cpCisgICAgICAgIFBsZWFzZSBjaGVjayB0aGUgbG9nICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIChwbiwgY29tcGlsZWxvZykKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJjb21waWxlLWhvc3QtcGF0aCIsIG1zZywgZCkKIAogICAgICMgQ2hlY2sgdGhlIGluc3RhbGwgbG9nIGZvciBob3N0IGNvbnRhbWluYXRpb24KQEAgLTExMDIsNyArMTA0OSw3IEBACiAgICAgICAgIHN0YXRlbWVudCA9ICJncmVwIC1lICdDUk9TUyBDT01QSUxFIEJhZG5lc3M6JyAtZSAnaXMgdW5zYWZlIGZvciBjcm9zcy1jb21waWxhdGlvbicgJXMgPiAvZGV2L251bGwiICUgaW5zdGFsbGxvZwogICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgogICAgICAgICAgICAgbXNnID0gIiVzOiBUaGUgaW5zdGFsbCBsb2cgaW5kaWNhdGVzIHRoYXQgaG9zdCBpbmNsdWRlIGFuZC9vciBsaWJyYXJ5IHBhdGhzIHdlcmUgdXNlZC5cbiBcCi0gICAgICAgIFBsZWFzZSBjaGVjayB0aGUgbG9nICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIChwa2csIGluc3RhbGxsb2cpCisgICAgICAgIFBsZWFzZSBjaGVjayB0aGUgbG9nICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIChwbiwgaW5zdGFsbGxvZykKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJpbnN0YWxsLWhvc3QtcGF0aCIsIG1zZywgZCkKIAogICAgICMgU2NhbiB0aGUgcGFja2FnZXMuLi4KQEAgLTExMzEsMzUgKzEwNzgsMzAgQEAKICAgICBmb3IgZGVwIGluIHRhc2tkZXBkYXRhOgogICAgICAgICB0YXNrZGVwcy5hZGQodGFza2RlcGRhdGFbZGVwXVswXSkKIAorICAgIGRlZiBwYXJzZV90ZXN0X21hdHJpeChtYXRyaXhfbmFtZSk6CisgICAgICAgIHRlc3RtYXRyaXggPSBkLmdldFZhckZsYWdzKG1hdHJpeF9uYW1lKSBvciB7fQorICAgICAgICBnID0gZ2xvYmFscygpCisgICAgICAgIHdhcm5jaGVja3MgPSBbXQorICAgICAgICBmb3IgdyBpbiAoZC5nZXRWYXIoIldBUk5fUUEiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgIGlmIHcgaW4gc2tpcDoKKyAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB3IGluIHRlc3RtYXRyaXggYW5kIHRlc3RtYXRyaXhbd10gaW4gZzoKKyAgICAgICAgICAgICAgICB3YXJuY2hlY2tzLmFwcGVuZChnW3Rlc3RtYXRyaXhbd11dKQorCisgICAgICAgIGVycm9yY2hlY2tzID0gW10KKyAgICAgICAgZm9yIGUgaW4gKGQuZ2V0VmFyKCJFUlJPUl9RQSIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgaWYgZSBpbiBza2lwOgorICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGUgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFtlXSBpbiBnOgorICAgICAgICAgICAgICAgIGVycm9yY2hlY2tzLmFwcGVuZChnW3Rlc3RtYXRyaXhbZV1dKQorICAgICAgICByZXR1cm4gd2FybmNoZWNrcywgZXJyb3JjaGVja3MKKwogICAgIGZvciBwYWNrYWdlIGluIHBhY2thZ2VzOgotICAgICAgICBkZWYgcGFyc2VfdGVzdF9tYXRyaXgobWF0cml4X25hbWUpOgotICAgICAgICAgICAgdGVzdG1hdHJpeCA9IGQuZ2V0VmFyRmxhZ3MobWF0cml4X25hbWUpIG9yIHt9Ci0gICAgICAgICAgICBnID0gZ2xvYmFscygpCi0gICAgICAgICAgICB3YXJuY2hlY2tzID0gW10KLSAgICAgICAgICAgIGZvciB3IGluIChkLmdldFZhcigiV0FSTl9RQSIpIG9yICIiKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGlmIHcgaW4gc2tpcDoKLSAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHcgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFt3XSBpbiBnOgotICAgICAgICAgICAgICAgICAgICB3YXJuY2hlY2tzLmFwcGVuZChnW3Rlc3RtYXRyaXhbd11dKQotICAgICAgICAgICAgICAgIGlmIHcgPT0gJ3Vuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQotCi0gICAgICAgICAgICBlcnJvcmNoZWNrcyA9IFtdCi0gICAgICAgICAgICBmb3IgZSBpbiAoZC5nZXRWYXIoIkVSUk9SX1FBIikgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgaWYgZSBpbiBza2lwOgotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgZSBpbiB0ZXN0bWF0cml4IGFuZCB0ZXN0bWF0cml4W2VdIGluIGc6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yY2hlY2tzLmFwcGVuZChnW3Rlc3RtYXRyaXhbZV1dKQotICAgICAgICAgICAgICAgIGlmIGUgPT0gJ3Vuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQotICAgICAgICAgICAgcmV0dXJuIHdhcm5jaGVja3MsIGVycm9yY2hlY2tzCi0KICAgICAgICAgc2tpcCA9IHNldCgoZC5nZXRWYXIoJ0lOU0FORV9TS0lQJykgb3IgIiIpLnNwbGl0KCkgKwogICAgICAgICAgICAgICAgICAgIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBhY2thZ2UpIG9yICIiKS5zcGxpdCgpKQogICAgICAgICBpZiBza2lwOgogICAgICAgICAgICAgYmIubm90ZSgiUGFja2FnZSAlcyBza2lwcGluZyBRQSB0ZXN0czogJXMiICUgKHBhY2thZ2UsIHN0cihza2lwKSkpCiAKLQogICAgICAgICBiYi5ub3RlKCJDaGVja2luZyBQYWNrYWdlOiAlcyIgJSBwYWNrYWdlKQogICAgICAgICAjIENoZWNrIHBhY2thZ2UgbmFtZQogICAgICAgICBpZiBub3QgcGtnbmFtZV9wYXR0ZXJuLm1hdGNoKHBhY2thZ2UpOgpAQCAtMTE2NywxMyArMTEwOSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAiJXMgZG9lc24ndCBtYXRjaCB0aGUgW2EtejAtOS4rLV0rIHJlZ2V4IiAlIHBhY2thZ2UsIGQpCiAKICAgICAgICAgd2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcyA9IHBhcnNlX3Rlc3RfbWF0cml4KCJRQVBBVEhURVNUIikKLSAgICAgICAgcGFja2FnZV9xYV93YWxrKHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MsIHNraXAsIHBhY2thZ2UsIGQpCisgICAgICAgIHBhY2thZ2VfcWFfd2Fsayh3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzLCBwYWNrYWdlLCBkKQogCiAgICAgICAgIHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MgPSBwYXJzZV90ZXN0X21hdHJpeCgiUUFQS0dURVNUIikKLSAgICAgICAgcGFja2FnZV9xYV9wYWNrYWdlKHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MsIHNraXAsIHBhY2thZ2UsIGQpCisgICAgICAgIHBhY2thZ2VfcWFfcGFja2FnZSh3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzLCBwYWNrYWdlLCBkKQogCiAgICAgICAgIHBhY2thZ2VfcWFfY2hlY2tfcmRlcGVuZHMocGFja2FnZSwgcGtnZGVzdCwgc2tpcCwgdGFza2RlcHMsIHBhY2thZ2VzLCBkKQotICAgICAgICBwYWNrYWdlX3FhX2NoZWNrX2RlcHMocGFja2FnZSwgcGtnZGVzdCwgc2tpcCwgZCkKKyAgICAgICAgcGFja2FnZV9xYV9jaGVja19kZXBzKHBhY2thZ2UsIHBrZ2Rlc3QsIGQpCisKKyAgICB3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzID0gcGFyc2VfdGVzdF9tYXRyaXgoIlFBUkVDSVBFVEVTVCIpCisgICAgcGFja2FnZV9xYV9yZWNpcGUod2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcywgcG4sIGQpCiAKICAgICBpZiAnbGliZGlyJyBpbiBkLmdldFZhcigiQUxMX1FBIikuc3BsaXQoKToKICAgICAgICAgcGFja2FnZV9xYV9jaGVja19saWJkaXIoZCkKQEAgLTEyMzgsMTIgKzExODMsMTAgQEAKICAgICBjbmYgPSBkLmdldFZhcignRVhUUkFfT0VDT05GJykgb3IgIiIKICAgICBpZiAiZ2V0dGV4dCIgbm90IGluIGQuZ2V0VmFyKCdQJykgYW5kICJnY2MtcnVudGltZSIgbm90IGluIGQuZ2V0VmFyKCdQJykgYW5kICItLWRpc2FibGUtbmxzIiBub3QgaW4gY25mOgogICAgICAgICBtbCA9IGQuZ2V0VmFyKCJNTFBSRUZJWCIpIG9yICIiCi0gICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3NzZGsnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKToKLSAgICAgICAgICAgIGd0ID0gImdldHRleHQtbmF0aXZlIgotICAgICAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzLWNhbmFkaWFuJywgZCk6CisgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzLWNhbmFkaWFuJywgZCk6CiAgICAgICAgICAgICBndCA9ICJuYXRpdmVzZGstZ2V0dGV4dCIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGd0ID0gInZpcnR1YWwvIiArIG1sICsgImdldHRleHQiCisgICAgICAgICAgICBndCA9ICJnZXR0ZXh0LW5hdGl2ZSIKICAgICAgICAgZGVwcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhkLmdldFZhcignREVQRU5EUycpIG9yICIiKQogICAgICAgICBpZiBndCBub3QgaW4gZGVwczoKICAgICAgICAgICAgIGZvciBjb25maWcgaW4gY29uZmlnczoKQEAgLTEzMDgsNiArMTI1MSw4IEBACiBkb191bnBhY2tbcG9zdGZ1bmNzXSArPSAiZG9fcWFfdW5wYWNrIgogCiBweXRob24gKCkgeworICAgIGltcG9ydCByZQorICAgIAogICAgIHRlc3RzID0gZC5nZXRWYXIoJ0FMTF9RQScpLnNwbGl0KCkKICAgICBpZiAiZGVza3RvcCIgaW4gdGVzdHM6CiAgICAgICAgIGQuYXBwZW5kVmFyKCJQQUNLQUdFX0RFUEVORFMiLCAiIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUiKQpAQCAtMTMzNCw2ICsxMjc5LDkgQEAKICAgICBpZiBwbiBpbiBvdmVycmlkZXM6CiAgICAgICAgIG1zZyA9ICdSZWNpcGUgJXMgaGFzIFBOIG9mICIlcyIgd2hpY2ggaXMgaW4gT1ZFUlJJREVTLCB0aGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIuJyAlIChkLmdldFZhcigiRklMRSIpLCBwbikKICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBuLW92ZXJyaWRlcyIsIG1zZywgZCkKKyAgICBwcm9nID0gcmUuY29tcGlsZSgnW0EtWl0nKQorICAgIGlmIHByb2cuc2VhcmNoKHBuKToKKyAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVwcGVyY2FzZS1wbiIsICdQTjogJXMgaXMgdXBwZXIgY2FzZSwgdGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3IuJyAlIHBuLCBkKQogCiAgICAgaXNzdWVzID0gW10KICAgICBpZiAoZC5nZXRWYXIoJ1BBQ0tBR0VTJykgb3IgIiIpLnNwbGl0KCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUwOGJlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcwpAQCAtMCwwICsxLDExMiBAQAorIyBTdXBwb3J0IGZvciBkZXZpY2UgdHJlZSBnZW5lcmF0aW9uCitQQUNLQUdFU19hcHBlbmQgPSAiIFwKKyAgICBrZXJuZWwtZGV2aWNldHJlZSBcCisgICAgJHtAWydrZXJuZWwtaW1hZ2UtemltYWdlLWJ1bmRsZScsICcnXVtkLmdldFZhcignS0VSTkVMX0RFVklDRVRSRUVfQlVORExFJykgIT0gJzEnXX0gXAorIgorRklMRVNfa2VybmVsLWRldmljZXRyZWUgPSAiLyR7S0VSTkVMX0lNQUdFREVTVH0vKi5kdGIgLyR7S0VSTkVMX0lNQUdFREVTVH0vKi5kdGJvIgorRklMRVNfa2VybmVsLWltYWdlLXppbWFnZS1idW5kbGUgPSAiLyR7S0VSTkVMX0lNQUdFREVTVH0vekltYWdlLSouZHRiLmJpbiIKKworIyBHZW5lcmF0ZSBrZXJuZWwrZGV2aWNldHJlZSBidW5kbGUKK0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRSA/PSAiMCIKKworbm9ybWFsaXplX2R0YiAoKSB7CisJRFRCPSIkMSIKKwlpZiBlY2hvICR7RFRCfSB8IGdyZXAgLXEgJy9kdHMvJzsgdGhlbgorCQliYndhcm4gIiR7RFRCfSBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0aGUgZHRzIGZpbGUsIGJ1dCBvbmx5IHRoZSBkdGIgbmFtZSBzaG91bGQgYmUgdXNlZC4iCisJCURUQj1gYmFzZW5hbWUgJHtEVEJ9IHwgc2VkICdzLFwuZHRzJCwuZHRiLGcnYAorCWZpCisJZWNobyAiJHtEVEJ9IgorfQorCitnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgKCkgeworCURUQj0iJDEiCisJRFRCX1BBVEg9IiR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZHRzLyR7RFRCfSIKKwlpZiBbICEgLWUgIiR7RFRCX1BBVEh9IiBdOyB0aGVuCisJCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290LyR7RFRCfSIKKwlmaQorCWVjaG8gIiR7RFRCX1BBVEh9IgorfQorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWlmIFsgIiR7S0VSTkVMX0RFVklDRVRSRUVfQlVORExFfSIgPSAiMSIgXTsgdGhlbgorCQlpZiBlY2hvICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX0gfCBncmVwIC1xICd6SW1hZ2UnOyB0aGVuCisJCQljYXNlICIke0FSQ0h9IiBpbgorCQkJCSJhcm0iKQorCQkJCWNvbmZpZz0iJHtCfS8uY29uZmlnIgorCQkJCWlmICEgZ3JlcCAtcSAnQ09ORklHX0FSTV9BUFBFTkRFRF9EVEI9eScgJGNvbmZpZzsgdGhlbgorCQkJCQliYndhcm4gJ0NPTkZJR19BUk1fQVBQRU5ERURfRFRCIGlzIE5PVCBlbmFibGVkIGluIHRoZSBrZXJuZWwuIEVuYWJsaW5nIGl0IHRvIGFsbG93IHRoZSBrZXJuZWwgdG8gYm9vdCB3aXRoIHRoZSBEZXZpY2UgVHJlZSBhcHBlbmRlZCEnCisJCQkJCXNlZCAtaSAiL0NPTkZJR19BUk1fQVBQRU5ERURfRFRCWyA9XS9kIiAkY29uZmlnCisJCQkJCWVjaG8gIkNPTkZJR19BUk1fQVBQRU5ERURfRFRCPXkiID4+ICRjb25maWcKKwkJCQkJZWNobyAiIyBDT05GSUdfQVJNX0FUQUdfRFRCX0NPTVBBVCBpcyBub3Qgc2V0IiA+PiAkY29uZmlnCisJCQkJZmkKKwkJCQk7OworCQkJCSopCisJCQkJYmJlcnJvciAiS0VSTkVMX0RFVklDRVRSRUVfQlVORExFIGlzIG5vdCBzdXBwb3J0ZWQgZm9yICR7QVJDSH0uIEN1cnJlbnRseSBpdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgJ0FSTScuIgorCQkJZXNhYworCQllbHNlCisJCQliYmVycm9yICdUaGUgS0VSTkVMX0RFVklDRVRSRUVfQlVORExFIHJlcXVpcmVzIHRoZSBLRVJORUxfSU1BR0VUWVBFIHRvIGNvbnRhaW4gekltYWdlLicKKwkJZmkKKwlmaQorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbworCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCisJCW9lX3J1bm1ha2UgJHtEVEJ9CisJZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbworCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCisJCURUQl9FWFQ9JHtEVEIjIyoufQorCQlEVEJfUEFUSD1gZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICIke0RUQn0iYAorCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0KKwkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KKwkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQorCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAorCQkJbG4gLXNmICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vZGV2aWNldHJlZS0ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KKworCQkJaWYgWyAiJHR5cGUiID0gInpJbWFnZSIgXSAmJiBbICIke0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KKwkJCQljYXQgJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR0eXBlIFwKKwkJCQkJJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBcCisJCQkJCT4gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR0eXBlLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4KKwkJCWZpCisJCWRvbmUKKwlkb25lCit9CisKK2RvX2RlcGxveV9hcHBlbmQoKSB7CisJZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAorCQlEVEJfRVhUPSR7RFRCIyMqLn0KKwkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCisJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCisJCQliYXNlX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KKwkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQorCQkJRFRCX05BTUU9YGVjaG8gJHtiYXNlX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKKwkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKKwkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCisJCQlpbnN0YWxsIC1kICR7REVQTE9ZRElSfQorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9CisJCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9CisJCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9CisKKwkJCWlmIFsgIiR0eXBlIiA9ICJ6SW1hZ2UiIF0gJiYgWyAiJHtLRVJORUxfREVWSUNFVFJFRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCisJCQkJY2F0ICR7REVQTE9ZRElSfS8kdHlwZSBcCisJCQkJCSR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9IFwKKwkJCQkJPiAke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfS5iaW4KKwkJCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfS5iaW4gJHtERVBMT1lESVJ9LyR0eXBlLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4KKworCQkJCWlmIFsgLWUgIiR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzIiBdOyB0aGVuCisJCQkJCWNhdCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9LmluaXRyYW1mcyBcCisJCQkJCQkke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSBcCisJCQkJCQk+ICR7REVQTE9ZRElSfS8ke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0tJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbgorCQkJCQlsbiAtc2YgJHt0eXBlfS0ke0lOSVRSQU1GU19CQVNFX05BTUV9LSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4gXAorCQkJCQkgICAgICAgJHtERVBMT1lESVJ9LyR7dHlwZX0taW5pdHJhbWZzLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS0ke01BQ0hJTkV9LmJpbgorCQkJCWZpCisJCQlmaQorCQlkb25lCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggMTc5MTg1Yi4uOWJhZjM5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCkBAIC03LDkgKzcsMTIgQEAKICAgICAgICAgZGVwZW5kcyA9ICIlcyB1LWJvb3QtbWtpbWFnZS1uYXRpdmUgZHRjLW5hdGl2ZSIgJSBkZXBlbmRzCiAgICAgICAgIGQuc2V0VmFyKCJERVBFTkRTIiwgZGVwZW5kcykKIAotICAgICAgICBpZiBkLmdldFZhcigiVUJPT1RfQVJDSCIpID09ICJtaXBzIjoKKyAgICAgICAgdWFyY2ggPSBkLmdldFZhcigiVUJPT1RfQVJDSCIpCisgICAgICAgIGlmIHVhcmNoID09ICJhcm02NCI6CisgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiSW1hZ2UiCisgICAgICAgIGVsaWYgdWFyY2ggPT0gIm1pcHMiOgogICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gInZtbGludXouYmluIgotICAgICAgICBlbGlmIGQuZ2V0VmFyKCJVQk9PVF9BUkNIIikgPT0gIng4NiI6CisgICAgICAgIGVsaWYgdWFyY2ggPT0gIng4NiI6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiYnpJbWFnZSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJ6SW1hZ2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCmluZGV4IDVlMTBkY2YuLjEwMzU1MjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgICAgIHRmID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIHRtcGZpbGUgPSB0ZlsxXQogICAgICAgICBjbWQgPSAiJXNvYmpjb3B5IC1qIC5tb2RpbmZvIC1PIGJpbmFyeSAlcyAlcyIgJSAoZC5nZXRWYXIoIkhPU1RfUFJFRklYIikgb3IgIiIsIGZpbGUsIHRtcGZpbGUpCi0gICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIHNoZWxsPVRydWUpCiAgICAgICAgIGYgPSBvcGVuKHRtcGZpbGUpCiAgICAgICAgIGwgPSBmLnJlYWQoKS5zcGxpdCgiXDAwMCIpCiAgICAgICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWJvb3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVib290LmJiY2xhc3MKaW5kZXggODdmMDI2NS4uMjM2NDA1MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11Ym9vdC5iYmNsYXNzCkBAIC0zLDYgKzMsMTAgQEAKIAkJdm1saW51eF9wYXRoPSJhcmNoLyR7QVJDSH0vYm9vdC9jb21wcmVzc2VkL3ZtbGludXgiCiAJCWxpbnV4X3N1ZmZpeD0iIgogCQlsaW51eF9jb21wPSJub25lIgorCWVsaWYgWyAtZSBhcmNoLyR7QVJDSH0vYm9vdC9JbWFnZSBdIDsgdGhlbgorCQl2bWxpbnV4X3BhdGg9InZtbGludXgiCisJCWxpbnV4X3N1ZmZpeD0iIgorCQlsaW51eF9jb21wPSJub25lIgogCWVsaWYgWyAtZSBhcmNoLyR7QVJDSH0vYm9vdC92bWxpbnV6LmJpbiBdOyB0aGVuCiAJCXJtIC1mIGxpbnV4LmJpbgogCQljcCAtbCBhcmNoLyR7QVJDSH0vYm9vdC92bWxpbnV6LmJpbiBsaW51eC5iaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCmluZGV4IDFjYTA3NTYuLjY2M2M2NTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwpAQCAtMTA3LDIwICsxMDcsMzEgQEAKIAkJCQljbXAgIiR7V09SS0RJUn0vZGVmY29uZmlnIiAiJHtTfS9hcmNoLyR7QVJDSH0vY29uZmlncy8ke0tCVUlMRF9ERUZDT05GSUd9IgogCQkJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgogCQkJCQliYndhcm4gImRlZmNvbmZpZyBkZXRlY3RlZCBpbiBXT1JLRElSLiAke0tCVUlMRF9ERUZDT05GSUd9IHNraXBwZWQiCisJCQkJZWxzZQorCQkJCQljcCAtZiAke1N9L2FyY2gvJHtBUkNIfS9jb25maWdzLyR7S0JVSUxEX0RFRkNPTkZJR30gJHtXT1JLRElSfS9kZWZjb25maWcKIAkJCQlmaQogCQkJZWxzZQogCQkJCWNwIC1mICR7U30vYXJjaC8ke0FSQ0h9L2NvbmZpZ3MvJHtLQlVJTERfREVGQ09ORklHfSAke1dPUktESVJ9L2RlZmNvbmZpZwotCQkJCXNjY3M9IiR7V09SS0RJUn0vZGVmY29uZmlnIgogCQkJZmkKKwkJCXNjY3M9IiR7V09SS0RJUn0vZGVmY29uZmlnIgogCQllbHNlCi0JCQliYmZhdGFsICJBIEtCVUlMRF9ERUNPTkZJRyAnJHtLQlVJTERfREVGQ09ORklHfScgd2FzIHNwZWNpZmllZCwgYnV0IG5vdCBwcmVzZW50IGluIHRoZSBzb3VyY2UgdHJlZSIKKwkJCWJiZmF0YWwgIkEgS0JVSUxEX0RFRkNPTkZJRyAnJHtLQlVJTERfREVGQ09ORklHfScgd2FzIHNwZWNpZmllZCwgYnV0IG5vdCBwcmVzZW50IGluIHRoZSBzb3VyY2UgdHJlZSIKIAkJZmkKIAlmaQogCi0Jc2Njcz0iJHNjY3MgJHtAIiAiLmpvaW4oZmluZF9zY2NzKGQpKX0iCisJc2Njc19mcm9tX3NyY191cmk9IiR7QCIgIi5qb2luKGZpbmRfc2NjcyhkKSl9IgogCXBhdGNoZXM9IiR7QCIgIi5qb2luKGZpbmRfcGF0Y2hlcyhkKSl9IgogCWZlYXRfZGlycz0iJHtAIiAiLmpvaW4oZmluZF9rZXJuZWxfZmVhdHVyZV9kaXJzKGQpKX0iCiAKKwkjIGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgZHVwbGljYXRlIGRlZmNvbmZpZ3MKKwkjIElmIHRoZXJlJ3MgYSBkZWZjb25maWcgaW4gdGhlIFNSQ19VUkksIGRpZCB3ZSBhbHNvIGhhdmUgb25lIGZyb20KKwkjIHRoZSBLQlVJTERfREVGQ09ORklHIHByb2Nlc3NpbmcgYWJvdmUgPworCWlmIFsgLW4gIiRzY2NzIiBdOyB0aGVuCisJICAgICMgd2UgZGlkIGhhdmUgYSBkZWZjb25maWcgZnJvbSBhYm92ZS4gcmVtb3ZlIGFueSB0aGF0IG1pZ2h0IGJlIGluIHRoZSBzcmNfdXJpCisJICAgIHNjY3NfZnJvbV9zcmNfdXJpPSQoZWNobyAkc2Njc19mcm9tX3NyY191cmkgfCBhd2sgJ3sgaWYgKCQwIT0iZGVmY29uZmlnIikgeyBwcmludCAkMCB9IH0nIFJTPScgJykKKwlmaQorCXNjY3M9IiRzY2NzICRzY2NzX2Zyb21fc3JjX3VyaSIKKwogCSMgY2hlY2sgZm9yIGZlYXR1cmUgZGlyZWN0b3JpZXMvcmVwb3MvYnJhbmNoZXMgdGhhdCB3ZXJlIHBhcnQgb2YgdGhlCiAJIyBTUkNfVVJJLiBJZiB0aGV5IHdlcmUgc3VwcGxpZWQsIHdlIGNvbnZlcnQgdGhlbSBpbnRvIGluY2x1ZGUgZGlyZWN0aXZlcwogCSMgZm9yIHRoZSB1cGRhdGUgcGFydCBvZiB0aGUgcHJvY2VzcwpAQCAtMTQzLDYgKzE1NCwxMiBAQAogCiAJIyBleHBhbmQga2VybmVsIGZlYXR1cmVzIGludG8gdGhlaXIgZnVsbCBwYXRoIGVxdWl2YWxlbnRzCiAJYnNwX2RlZmluaXRpb249JChzcHAgJHtpbmNsdWRlc30gLS1maW5kIC1ES01BQ0hJTkU9JHtLTUFDSElORX0gLURLVFlQRT0ke0xJTlVYX0tFUk5FTF9UWVBFfSkKKwlpZiBbIC16ICIkYnNwX2RlZmluaXRpb24iIF07IHRoZW4KKwkJZWNobyAiJHNjY3MiIHwgZ3JlcCAtcSBkZWZjb25maWcKKwkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJCQliYmZhdGFsX2xvZyAiQ291bGQgbm90IGxvY2F0ZSBCU1AgZGVmaW5pdGlvbiBmb3IgJHtLTUFDSElORX0vJHtMSU5VWF9LRVJORUxfVFlQRX0gYW5kIG5vIGRlZmNvbmZpZyB3YXMgcHJvdmlkZWQiCisJCWZpCisJZmkKIAltZXRhX2Rpcj0kKGtnaXQgLS1tZXRhKQogCiAJIyBydW4xOiBwdWxsIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIG5vIG1hdHRlciB3aGVyZSB0aGV5IGNvbWUgZnJvbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggY2UyY2FiNi4uMTRmNDFlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCkBAIC0yLDcgKzIsNyBAQAogCiBQUk9WSURFUyArPSAidmlydHVhbC9rZXJuZWwiCiBERVBFTkRTICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mga21vZC1uYXRpdmUgYmMtbmF0aXZlIGx6b3AtbmF0aXZlIgotUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXBtb2R3cmFwcGVyLWNyb3NzIHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gImRlcG1vZHdyYXBwZXItY3Jvc3MiCiAKIGRvX2RlcGxveVtkZXBlbmRzXSArPSAiZGVwbW9kd3JhcHBlci1jcm9zczpkb19wb3B1bGF0ZV9zeXNyb290IgogCkBAIC01Nyw3ICs1Nyw3IEBACiAKICAgICAgICAgZC5hcHBlbmRWYXIoJ1BBQ0tBR0VTJywgJyAnICsgJ2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyKQogCi0gICAgICAgIGQuc2V0VmFyKCdGSUxFU19rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgJy8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSArICctJHtLRVJORUxfVkVSU0lPTl9OQU1FfScpCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU19rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgJy8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSArICctJHtLRVJORUxfVkVSU0lPTl9OQU1FfScgKyAnIC8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSkKIAogICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfa2VybmVsLWltYWdlJywgJyAnICsgJ2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyKQogCkBAIC02NSwxMyArNjUsNiBAQAogCiAgICAgICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV9rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgJzEnKQogCi0gICAgICAgIHByaW9yaXR5ID0gZC5nZXRWYXIoJ0tFUk5FTF9QUklPUklUWScpCi0gICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJyArICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUgKyAnICcgKyB0eXBlICsgJyAnICsgdHlwZSArICctJHtLRVJORUxfVkVSU0lPTl9OQU1FfSAnICsgcHJpb3JpdHkgKyAnIHx8IHRydWUnICsgJ1xuJwotICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0X2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCBwb3N0aW5zdCkKLQotICAgICAgICBwb3N0cm0gPSAnIyEvYmluL3NoXG4nICsgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUnICsgJyAnICsgdHlwZSArICcgJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0gfHwgdHJ1ZScgKyAnXG4nCi0gICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdHJtX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCBwb3N0cm0pCi0KICAgICBpbWFnZSA9IGQuZ2V0VmFyKCdJTklUUkFNRlNfSU1BR0UnKQogICAgIGlmIGltYWdlOgogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2J1bmRsZV9pbml0cmFtZnMnLCAnZGVwZW5kcycsICcgJHtJTklUUkFNRlNfSU1BR0V9OmRvX2ltYWdlX2NvbXBsZXRlJykKQEAgLTEzNywxMCArMTMwLDYgQEAKIGV4cG9ydCBLQlVJTERfQlVJTERfVVNFUiA9ICJvZS11c2VyIgogZXhwb3J0IEtCVUlMRF9CVUlMRF9IT1NUID0gIm9lLWhvc3QiCiAKLUtFUk5FTF9QUklPUklUWSA/PSAiJHtAaW50KGQuZ2V0VmFyKCdQVicpLnNwbGl0KCctJylbMF0uc3BsaXQoJysnKVswXS5zcGxpdCgnLicpWzBdKSAqIDEwMDAwICsgXAotICAgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbMV0pICogMTAwICsgXAotICAgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbLTFdKX0iCi0KIEtFUk5FTF9SRUxFQVNFID89ICIke0tFUk5FTF9WRVJTSU9OfSIKIAogIyBUaGUgZGlyZWN0b3J5IHdoZXJlIGJ1aWx0IGtlcm5lbCBsaWVzIGluIHRoZSBrZXJuZWwgdHJlZQpAQCAtMTY2LDcgKzE1NSw3IEBACiAjIFNvbWUgTGludXgga2VybmVsIGNvbmZpZ3VyYXRpb25zIG5lZWQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIG9uIHRoZSBjb21tYW5kIGxpbmUKIEtFUk5FTF9FWFRSQV9BUkdTID89ICIiCiAKLUVYVFJBX09FTUFLRSA9ICIgSE9TVENDPSIke0JVSUxEX0NDfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiIKK0VYVFJBX09FTUFLRSA9ICIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiIKIEtFUk5FTF9BTFRfSU1BR0VUWVBFID8/PSAiIgogCiBjb3B5X2luaXRyYW1mcygpIHsKQEAgLTI1NSw4ICsyNDQsMzYgQEAKIAogYWRkdGFzayBidW5kbGVfaW5pdHJhbWZzIGFmdGVyIGRvX2luc3RhbGwgYmVmb3JlIGRvX2RlcGxveQogCitnZXRfY2Nfb3B0aW9uICgpIHsKKwkJIyBDaGVjayBpZiBLRVJORUxfQ0Mgc3VwcG9ydHMgdGhlIG9wdGlvbiAiZmlsZS1wcmVmaXgtbWFwIi4KKwkJIyBUaGlzIG9wdGlvbiBhbGxvd3MgdXMgdG8gYnVpbGQgaW1hZ2VzIHdpdGggX19GSUxFX18gdmFsdWVzIHRoYXQgZG8gbm90CisJCSMgY29udGFpbiB0aGUgaG9zdCBidWlsZCBwYXRoLgorCQlpZiAke0tFUk5FTF9DQ30gLVEgLS1oZWxwPWpvaW5lZCB8IGdyZXAgLXEgIlwtZmZpbGUtcHJlZml4LW1hcD08b2xkPW5ldz4iOyB0aGVuCisJCQllY2hvICItZmZpbGUtcHJlZml4LW1hcD0ke1N9PS9rZXJuZWwtc291cmNlLyIKKwkJZmkKK30KKwoga2VybmVsX2RvX2NvbXBpbGUoKSB7CiAJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MgTUFDSElORQorCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwkJIyBrZXJuZWwgc291cmNlcyBkbyBub3QgdXNlIGRvX3VucGFjaywgc28gU09VUkNFX0RBVEVfRVBPQ0ggbWF5IG5vdAorCQkjIGJlIHNldC4uLi4KKwkJaWYgWyAiJFNPVVJDRV9EQVRFX0VQT0NIIiA9ICIwIiBdOyB0aGVuCisJCQlvbGRkaXI9YHB3ZGAKKwkJCWNkICR7U30KKwkJCVNPVVJDRV9EQVRFX0VQT0NIPWBnaXQgbG9nICAtMSAtLXByZXR0eT0lY3RgCisJCQkjIGdpdCByZXBvIG5vdCBndWFyYW50ZWVkLCBzbyBmYWxsIGJhY2sgdG8gUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMKKwkJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQkJCVNPVVJDRV9EQVRFX0VQT0NIPSR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9CisJCQlmaQorCQkJY2QgJG9sZGRpcgorCQlmaQorCisJCXRzPWBMQ19BTEw9QyBkYXRlIC1kIEAkU09VUkNFX0RBVEVfRVBPQ0hgCisJCWV4cG9ydCBLQlVJTERfQlVJTERfVElNRVNUQU1QPSIkdHMiCisJCWV4cG9ydCBLQ09ORklHX05PVElNRVNUQU1QPTEKKwkJYmJub3RlICJLQlVJTERfQlVJTERfVElNRVNUQU1QOiAkdHMiCisJZmkKIAkjIFRoZSAkdXNlX2FsdGVybmF0ZV9pbml0cmQgaXMgb25seSBzZXQgZnJvbQogCSMgZG9fYnVuZGxlX2luaXRyYW1mcygpIFRoaXMgdmFyaWFibGUgaXMgc3BlY2lmaWNhbGx5IGZvciB0aGUKIAkjIGNhc2Ugd2hlcmUgd2UgYXJlIG1ha2luZyBhIHNlY29uZCBwYXNzIGF0IHRoZSBrZXJuZWwKQEAgLTI3MCwyMCArMjg3LDIyIEBACiAJCWNvcHlfaW5pdHJhbWZzCiAJCXVzZV9hbHRlcm5hdGVfaW5pdHJkPUNPTkZJR19JTklUUkFNRlNfU09VUkNFPSR7Qn0vdXNyLyR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LmNwaW8KIAlmaQorCWNjX2V4dHJhPSQoZ2V0X2NjX29wdGlvbikKIAlmb3IgdHlwZWZvcm1ha2UgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfSA7IGRvCi0JCW9lX3J1bm1ha2UgJHt0eXBlZm9ybWFrZX0gQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30gJHVzZV9hbHRlcm5hdGVfaW5pdHJkCisJCW9lX3J1bm1ha2UgJHt0eXBlZm9ybWFrZX0gQ0M9IiR7S0VSTkVMX0NDfSAkY2NfZXh0cmEgIiBMRD0iJHtLRVJORUxfTER9IiAke0tFUk5FTF9FWFRSQV9BUkdTfSAkdXNlX2FsdGVybmF0ZV9pbml0cmQKIAlkb25lCiAJIyB2bWxpbnV4Lmd6IGlzIG5vdCBidWlsdCBieSBrZXJuZWwKIAlpZiAoZWNobyAiJHtLRVJORUxfSU1BR0VUWVBFU30iIHwgZ3JlcCAtd3EgInZtbGludXhcLmd6Iik7IHRoZW4KIAkJbWtkaXIgLXAgIiR7S0VSTkVMX09VVFBVVF9ESVJ9IgotCQlnemlwIC05YyA8ICR7Qn0vdm1saW51eCA+ICIke0tFUk5FTF9PVVRQVVRfRElSfS92bWxpbnV4Lmd6IgorCQlnemlwIC05Y24gPCAke0J9L3ZtbGludXggPiAiJHtLRVJORUxfT1VUUFVUX0RJUn0vdm1saW51eC5neiIKIAlmaQogfQogCiBkb19jb21waWxlX2tlcm5lbG1vZHVsZXMoKSB7CiAJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MgTUFDSElORQogCWlmIChncmVwIC1xIC1pIC1lICdeQ09ORklHX01PRFVMRVM9eSQnICR7Qn0vLmNvbmZpZyk7IHRoZW4KLQkJb2VfcnVubWFrZSAtQyAke0J9ICR7UEFSQUxMRUxfTUFLRX0gbW9kdWxlcyBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiAke0tFUk5FTF9FWFRSQV9BUkdTfQorCQljY19leHRyYT0kKGdldF9jY19vcHRpb24pCisJCW9lX3J1bm1ha2UgLUMgJHtCfSAke1BBUkFMTEVMX01BS0V9IG1vZHVsZXMgQ0M9IiR7S0VSTkVMX0NDfSAkY2NfZXh0cmEgIiBMRD0iJHtLRVJORUxfTER9IiAke0tFUk5FTF9FWFRSQV9BUkdTfQogCiAJCSMgTW9kdWxlLnN5bXZlcnMgZ2V0cyB1cGRhdGVkIGR1cmluZyB0aGUgCiAJCSMgYnVpbGRpbmcgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBXZSBuZWVkIHRvCkBAIC0zMjAsNiArMzM5LDcgQEAKIAlpbnN0YWxsIC1kICR7RH0vYm9vdAogCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KIAkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7dHlwZX0tJHtLRVJORUxfVkVSU0lPTn0KKwkJbG4gLXNmICR7dHlwZX0tJHtLRVJORUxfVkVSU0lPTn0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7dHlwZX0KIAlkb25lCiAJaW5zdGFsbCAtbSAwNjQ0IFN5c3RlbS5tYXAgJHtEfS9ib290L1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KIAlpbnN0YWxsIC1tIDA2NDQgLmNvbmZpZyAke0R9L2Jvb3QvY29uZmlnLSR7S0VSTkVMX1ZFUlNJT059CkBAIC01NzUsMTkgKzU5NSwyNyBAQAogYWRkdGFzayBzdHJpcCBiZWZvcmUgZG9fc2l6ZWNoZWNrIGFmdGVyIGRvX2tlcm5lbF9saW5rX2ltYWdlcwogCiAjIFN1cHBvcnQgY2hlY2tpbmcgdGhlIGtlcm5lbCBzaXplIHNpbmNlIHNvbWUga2VybmVscyBuZWVkIHRvIHJlc2lkZSBpbiBwYXJ0aXRpb25zCi0jIHdpdGggYSBmaXhlZCBsZW5ndGggb3IgdGhlcmUgaXMgYSBsaW1pdCBpbiB0cmFuc2ZlcnJpbmcgdGhlIGtlcm5lbCB0byBtZW1vcnkKKyMgd2l0aCBhIGZpeGVkIGxlbmd0aCBvciB0aGVyZSBpcyBhIGxpbWl0IGluIHRyYW5zZmVycmluZyB0aGUga2VybmVsIHRvIG1lbW9yeS4KKyMgSWYgbW9yZSB0aGFuIG9uZSBpbWFnZSB0eXBlIGlzIGVuYWJsZWQsIHdhcm4gb24gYW55IHRoYXQgZG9uJ3QgZml0IGJ1dCBvbmx5IGZhaWwKKyMgaWYgbm9uZSBmaXQuCiBkb19zaXplY2hlY2soKSB7CiAJaWYgWyAhIC16ICIke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSIgXTsgdGhlbgogCQlpbnZhbGlkPWBlY2hvICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9IHwgc2VkICdzL1swLTldLy9nJ2AKIAkJaWYgWyAtbiAiJGludmFsaWQiIF07IHRoZW4KLQkJCWRpZSAiSW52YWxpZCBLRVJORUxfSU1BR0VfTUFYU0laRTogJHtLRVJORUxfSU1BR0VfTUFYU0laRX0sIHNob3VsZCBiZSBhbiBpbnRlZ2VyeCAoVGhlIHVuaXQgaXMgS2J5dGVzKSIKKwkJCWRpZSAiSW52YWxpZCBLRVJORUxfSU1BR0VfTUFYU0laRTogJHtLRVJORUxfSU1BR0VfTUFYU0laRX0sIHNob3VsZCBiZSBhbiBpbnRlZ2VyIChUaGUgdW5pdCBpcyBLYnl0ZXMpIgogCQlmaQorCQlhdF9sZWFzdF9vbmVfZml0cz0KIAkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQkJc2l6ZT1gZHUgLWtzICR7Qn0vJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgfCBhd2sgJ3twcmludCAkMX0nYAogCQkJaWYgWyAkc2l6ZSAtZ2UgJHtLRVJORUxfSU1BR0VfTUFYU0laRX0gXTsgdGhlbgotCQkJCXdhcm4gIlRoaXMga2VybmVsICR0eXBlIChzaXplPSRzaXplKEspID4gJHtLRVJORUxfSU1BR0VfTUFYU0laRX0oSykpIGlzIHRvbyBiaWcgZm9yIHlvdXIgZGV2aWNlLiBQbGVhc2UgcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgYnkgbWFraW5nIG1vcmUgb2YgaXQgbW9kdWxhci4iCisJCQkJYmJ3YXJuICJUaGlzIGtlcm5lbCAkdHlwZSAoc2l6ZT0kc2l6ZShLKSA+ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9KEspKSBpcyB0b28gYmlnIGZvciB5b3VyIGRldmljZS4iCisJCQllbHNlCisJCQkJYXRfbGVhc3Rfb25lX2ZpdHM9eQogCQkJZmkKIAkJZG9uZQorCQlpZiBbIC16ICIkYXRfbGVhc3Rfb25lX2ZpdHMiIF07IHRoZW4KKwkJCWRpZSAiQWxsIGtlcm5lbCBpbWFnZXMgYXJlIHRvbyBiaWcgZm9yIHlvdXIgZGV2aWNlLiBQbGVhc2UgcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgYnkgbWFraW5nIG1vcmUgb2YgaXQgbW9kdWxhci4iCisJCWZpCiAJZmkKIH0KIGRvX3NpemVjaGVja1tkaXJzXSA9ICIke0J9IgpAQCAtNjQyLDMgKzY3MCw2IEBACiBhZGR0YXNrIGRlcGxveSBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290IGRvX3BhY2thZ2VkYXRhCiAKIEVYUE9SVF9GVU5DVElPTlMgZG9fZGVwbG95CisKKyMgQWRkIHVzaW5nIERldmljZSBUcmVlIHN1cHBvcnQKK2luaGVyaXQga2VybmVsLWRldmljZXRyZWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKaW5kZXggYjFmZmZlNy4uZDM1MzExMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKQEAgLTI1NSwxNCArMjU1LDkgQEAKICAgICAiIiIKIAogICAgIGRlcGVuZHMgPSBbXQotICAgIGJvb3RfZGVwZW5kc19zdHJpbmcgPSAiIgogICAgIHRhc2tkZXBkYXRhID0gZC5nZXRWYXIoIkJCX1RBU0tERVBEQVRBIiwgRmFsc2UpCi0gICAgIyBPbmx5IGJvb3RpbWcgYW5kIGJvb3RkaXJlY3RkaXNrIGluY2x1ZGUgdGhlIGRlcGVuZHMgZmxhZwotICAgIGJvb3RfdGFza3MgPSBbImRvX2Jvb3RpbWciLCAiZG9fYm9vdGRpcmVjdGRpc2siLF0KLQotICAgIGZvciB0YXNrIGluIGJvb3RfdGFza3M6Ci0gICAgICAgIGJvb3RfZGVwZW5kc19zdHJpbmcgPSAiJXMgJXMiICUgKGJvb3RfZGVwZW5kc19zdHJpbmcsCi0gICAgICAgICAgICAgICAgZC5nZXRWYXJGbGFnKHRhc2ssICJkZXBlbmRzIikgb3IgIiIpCisgICAgIyBPbmx5IGJvb3RpbWcgaW5jbHVkZXMgdGhlIGRlcGVuZHMgZmxhZworICAgIGJvb3RfZGVwZW5kc19zdHJpbmcgPSBkLmdldFZhckZsYWcoImRvX2Jvb3RpbWciLCAiZGVwZW5kcyIpIG9yICIiCiAgICAgYm9vdF9kZXBlbmRzID0gW2RlcC5zcGxpdCgiOiIpWzBdIGZvciBkZXAKICAgICAgICAgICAgICAgICBpbiBib290X2RlcGVuZHNfc3RyaW5nLnNwbGl0KCkKICAgICAgICAgICAgICAgICBpZiBub3QgZGVwLnNwbGl0KCI6IilbMF0uZW5kc3dpdGgoIi1uYXRpdmUiKV0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcwppbmRleCAxMTdiMDMwLi44ZjMwZWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCkBAIC0xLDUgKzEsOCBAQAorTERTT19UQ0xJQkMgPSAiZ2xpYmMiCitMRFNPX1RDTElCQ19saWJjLW11c2wgPSAibXVzbCIKK0xEU09fVENMSUJDX2xpYmMtYmFyZW1ldGFsID0gIm11c2wiCiAKLWxpbnV4bG9hZGVyICgpIHsKK2xpbnV4bG9hZGVyX2dsaWJjICgpIHsKIAljYXNlICR7VEFSR0VUX0FSQ0h9IGluCiAJCXBvd2VycGMgfCBtaWNyb2JsYXplICkKIAkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgpAQCAtMjgsMyArMzEsNDAgQEAKIAllc2FjCiAJZWNobyAkZHluYW1pY19sb2FkZXIKIH0KKworbGludXhsb2FkZXJfbXVzbCAoKSB7CisJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorCQltaWNyb2JsYXplKiApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfS5zby4xIgorCQkJOzsKKwkJbWlwcyogKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWlwcyR7QUJJRVhURU5TSU9OfSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKKwkJCTs7CisJCXBvd2VycGMgKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYyR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKKwkJCTs7CisJCXBvd2VycGM2NCApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjNjQuc28uMSIKKwkJCTs7CisJCXg4Nl82NCApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC14ODZfNjQuc28uMSIKKwkJCTs7CisJCWkqODYgKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtaTM4Ni5zby4xIgorCQkJOzsKKwkJYXJtKiApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hcm0ke0FSTVBLR1NGWF9FTkRJQU59JHtBUk1QS0dTRlhfRUFCSX0uc28uMSIKKwkJCTs7CisJCWFhcmNoNjQqICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9LnNvLjEiCisJCQk7OworCQkqICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIvdW5rbm93bl9keW5hbWljX2xpbmtlciIKKwkJCTs7CisJZXNhYworCWVjaG8gJGR5bmFtaWNfbG9hZGVyCit9CisKK2xpbnV4bG9hZGVyICgpIHsKKwlsaW51eGxvYWRlcl8ke0xEU09fVENMSUJDfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCmluZGV4IDI3YjEzN2QuLmUxZDhiMTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKQEAgLTE1LDYgKzE1LDggQEAKIEVGSV9QUk9WSURFUiA/PSAiZ3J1Yi1lZmkiCiBFRklfQ0xBU1MgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAiZWZpIiwgIiR7RUZJX1BST1ZJREVSfSIsICIiLCBkKX0iCiAKK01LRE9TRlNfRVhUUkFPUFRTID8/PSAiLVMgNTEyIgorCiAjIEluY2x1ZGUgbGVnYWN5IGJvb3QgaWYgTUFDSElORV9GRUFUVVJFUyBpbmNsdWRlcyAicGNiaW9zIiBvciBpZiBpdCBkb2VzIG5vdAogIyBjb250YWluICJlZmkiLiBUaGlzIHdheSBsZWdhY3kgaXMgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgaWYgbmVpdGhlciBpcwogIyBzcGVjaWZpZWQsIG1haW50YWluaW5nIHRoZSBvcmlnaW5hbCBiZWhhdmlvci4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKaW5kZXggNGFkODE0Zi4uNzY2ZjFjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MKQEAgLTMwLDIxICszMCwxNSBAQAogZnRwOi8vZnRwLmdudXRscy5vcmcvZ2NyeXB0L2dudXRscyAke0dOVVBHX01JUlJPUn0vZ251dGxzIFxuIFwKIGh0dHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy8gaHR0cDovL21pcnJvci5zd2l0Y2guY2gvZnRwL21pcnJvci9pbmZvemlwL3NyYy8gXG4gXAogaHR0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvc3JjLyBmdHA6Ly9zdW5zaXRlLmljbS5lZHUucGwvcHViL3VuaXgvYXJjaGl2aW5nL2luZm8temlwL3NyYy8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC5jZXJpYXMucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9zeXN1dGlscy9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnRhdS5hYy5pbC9wdWIvdW5peC9hZG1pbi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC5jZXJ0LmRmbi5kZS9wdWIvdG9vbHMvYWRtaW4vbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvcHViL3VuaXgvdG9vbHMvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC5rYWl6by5vcmcvcHViL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAudHUtZGFybXN0YWR0LmRlL3B1Yi9zeXNhZG1pbi9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnR1eC5vcmcvcHViL3NpdGVzL3ZpYy5jYy5wdXJkdWUuZWR1L3Rvb2xzL3VuaXgvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2dkLnR1d2llbi5hYy5hdC91dGlscy9hZG1pbi10b29scy9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vc3Vuc2l0ZS51YWxiZXJ0YS5jYS9wdWIvTWlycm9yL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly90aGUud2lyZXRhcHBlZC5uZXQvcHViL3NlY3VyaXR5L2hvc3Qtc2VjdXJpdHkvbHNvZi8gXG4gXAoraHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvT0xELyBcbiBcCiAke0FQQUNIRV9NSVJST1J9ICBodHRwOi8vd3d3LnVzLmFwYWNoZS5vcmcvZGlzdCBcbiBcCiAke0FQQUNIRV9NSVJST1J9ICBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QgXG4gXAogaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvd2F0Y2hkb2cvIGh0dHA6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjLyBcbiBcCiAke1NBVkFOTkFIX0dOVV9NSVJST1J9IGh0dHA6Ly9kb3dubG9hZC1taXJyb3Iuc2F2YW5uYWguZ251Lm9yZy9yZWxlYXNlcyBcbiBcCiAke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9IGh0dHA6Ly9kb3dubG9hZC1taXJyb3Iuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcyBcbiBcCitmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIgaHR0cDovL21pcnJvcnMua2VybmVsLm9yZy9zb3VyY2V3YXJlIFxuIFwKK2Z0cDovL3NvdXJjZXdhcmUub3JnL3B1YiBodHRwOi8vZ2QudHV3aWVuLmFjLmF0L2dudS9zb3VyY2V3YXJlIFxuIFwKK2Z0cDovL3NvdXJjZXdhcmUub3JnL3B1YiBodHRwOi8vZnRwLmd3ZGcuZGUvcHViL2xpbnV4L3NvdXJjZXMucmVkaGF0LmNvbS9zb3VyY2V3YXJlIFxuIFwKIGN2czovLy4qLy4qICAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIFwKIHN2bjovLy4qLy4qICAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIFwKIGdpdDovLy4qLy4qICAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCmluZGV4IDgwMjQ3NmIuLjc4ZDFiMjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcwpAQCAtMSw2ICsxLDYgQEAKIGluaGVyaXQgbW9kdWxlLWJhc2Uga2VybmVsLW1vZHVsZS1zcGxpdCBwa2djb25maWcKIAotYWRkdGFzayBtYWtlX3NjcmlwdHMgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCBiZWZvcmUgZG9fY29tcGlsZQorYWRkdGFzayBtYWtlX3NjcmlwdHMgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCBiZWZvcmUgZG9fY29uZmlndXJlCiBkb19tYWtlX3NjcmlwdHNbbG9ja2ZpbGVzXSA9ICIke1RNUERJUn0va2VybmVsLXNjcmlwdHMubG9jayIKIGRvX21ha2Vfc2NyaXB0c1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiAKQEAgLTE4LDYgKzE4LDI2IEBACiAgICAgZC5zZXRWYXIoJ0tCVUlMRF9FWFRSQV9TWU1CT0xTJywgIiAiLmpvaW4oZXh0cmFfc3ltYm9scykpCiB9CiAKK3B5dGhvbiBkb19kZXZzaGVsbF9wcmVwZW5kICgpIHsKKyAgICBvcy5lbnZpcm9uWydDRkxBR1MnXSA9ICcnCisgICAgb3MuZW52aXJvblsnQ1BQRkxBR1MnXSA9ICcnCisgICAgb3MuZW52aXJvblsnQ1hYRkxBR1MnXSA9ICcnCisgICAgb3MuZW52aXJvblsnTERGTEFHUyddID0gJycKKworICAgIG9zLmVudmlyb25bJ0tFUk5FTF9QQVRIJ10gPSBkLmdldFZhcignU1RBR0lOR19LRVJORUxfRElSJykKKyAgICBvcy5lbnZpcm9uWydLRVJORUxfU1JDJ10gPSBkLmdldFZhcignU1RBR0lOR19LRVJORUxfRElSJykKKyAgICBvcy5lbnZpcm9uWydLRVJORUxfVkVSU0lPTiddID0gZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykKKyAgICBvcy5lbnZpcm9uWydDQyddID0gZC5nZXRWYXIoJ0tFUk5FTF9DQycpCisgICAgb3MuZW52aXJvblsnTEQnXSA9IGQuZ2V0VmFyKCdLRVJORUxfTEQnKQorICAgIG9zLmVudmlyb25bJ0FSJ10gPSBkLmdldFZhcignS0VSTkVMX0FSJykKKyAgICBvcy5lbnZpcm9uWydPJ10gPSBkLmdldFZhcignU1RBR0lOR19LRVJORUxfQlVJTERESVInKQorICAgIGtidWlsZF9leHRyYV9zeW1ib2xzID0gZC5nZXRWYXIoJ0tCVUlMRF9FWFRSQV9TWU1CT0xTJykKKyAgICBpZiBrYnVpbGRfZXh0cmFfc3ltYm9sczoKKyAgICAgICAgb3MuZW52aXJvblsnS0JVSUxEX0VYVFJBX1NZTUJPTFMnXSA9IGtidWlsZF9leHRyYV9zeW1ib2xzCisgICAgZWxzZToKKyAgICAgICAgb3MuZW52aXJvblsnS0JVSUxEX0VYVFJBX1NZTUJPTFMnXSA9ICcnCit9CisKIG1vZHVsZV9kb19jb21waWxlKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTCiAJb2VfcnVubWFrZSBLRVJORUxfUEFUSD0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gICBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKaW5kZXggYWIwNDU5Ny4uODE2ZjU0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwpAQCAtNCw3ICs0LDkgQEAKICAgICBpZiBjbHMgIT0gIm11bHRpbGliIiBvciBub3QgdmFyaWFudDoKICAgICAgICAgcmV0dXJuCiAKLSAgICBlLmRhdGEuc2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInLCBlLmRhdGEuZ2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInKSkKKyAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZS5kYXRhKQorICAgIGxvY2FsZGF0YS5kZWxWYXIoJ1RNUERJUicpCisgICAgZS5kYXRhLnNldFZhcignU1RBR0lOR19LRVJORUxfRElSJywgbG9jYWxkYXRhLmdldFZhcignU1RBR0lOR19LRVJORUxfRElSJykpCiAKICAgICAjIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBrZXJuZWwgaW4gbXVsdGlsaWIgY29uZmlncwogICAgICMgV2UgYWxzbyBza2lwIG11bHRpbGliIHNldHVwIGZvciBtb2R1bGUgcGFja2FnZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwppbmRleCA2YjdmM2RkLi45YzQzNGRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKQEAgLTEwOCw3ICsxMDgsNyBAQAogUEtHX0NPTkZJR19TWVNURU1fTElCUkFSWV9QQVRIW3VuZXhwb3J0XSA9ICIxIgogUEtHX0NPTkZJR19TWVNURU1fSU5DTFVERV9QQVRIW3VuZXhwb3J0XSA9ICIxIgogCi0jIHdlIGRvbnQgd2FudCBsaWJjLXVjbGliYyBvciBsaWJjLWdsaWJjIHRvIGtpY2sgaW4gZm9yIG5hdGl2ZSByZWNpcGVzCisjIHdlIGRvbnQgd2FudCBsaWJjLSpsaWJjIHRvIGtpY2sgaW4gZm9yIG5hdGl2ZSByZWNpcGVzCiBMSUJDT1ZFUlJJREUgPSAiIgogQ0xBU1NPVkVSUklERSA9ICJjbGFzcy1uYXRpdmUiCiBNQUNISU5FT1ZFUlJJREVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvb3duLW1pcnJvcnMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvb3duLW1pcnJvcnMuYmJjbGFzcwppbmRleCAwMjk2ZDU0Li5hNzc3ODM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL293bi1taXJyb3JzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9vd24tbWlycm9ycy5iYmNsYXNzCkBAIC0xLDEzICsxLDEzIEBACi1QUkVNSVJST1JTKCkgewotY3ZzOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1zdm46Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWdpdDovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotZ2l0c206Ly8uKi8uKiAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1oZzovLy4qLy4qICAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWJ6cjovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotcDQ6Ly8uKi8uKiAgICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1vc2M6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWh0dHBzPyQ6Ly8uKi8uKiAke1NPVVJDRV9NSVJST1JfVVJMfQotZnRwOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1ucG06Ly8uKi8/LiogICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLX0KK1BSRU1JUlJPUlNfcHJlcGVuZCA9ICIgXAorY3ZzOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK3N2bjovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitnaXQ6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorZ2l0c206Ly8uKi8uKiAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2hnOi8vLiovLiogICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitienI6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorcDQ6Ly8uKi8uKiAgICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK29zYzovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitodHRwcz8kOi8vLiovLiogJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorZnRwOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK25wbTovLy4qLz8uKiAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCmluZGV4IGEwM2MwNWIuLjIwNTNkNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCkBAIC03MzcsOSArNzM3LDcgQEAKICAgICBkZWYgZ2V0X2ZzX3Blcm1zX2xpc3QoZCk6CiAgICAgICAgIHN0ciA9ICIiCiAgICAgICAgIGJicGF0aCA9IGQuZ2V0VmFyKCdCQlBBVEgnKQotICAgICAgICBmc19wZXJtc190YWJsZXMgPSBkLmdldFZhcignRklMRVNZU1RFTV9QRVJNU19UQUJMRVMnKQotICAgICAgICBpZiBub3QgZnNfcGVybXNfdGFibGVzOgotICAgICAgICAgICAgZnNfcGVybXNfdGFibGVzID0gJ2ZpbGVzL2ZzLXBlcm1zLnR4dCcKKyAgICAgICAgZnNfcGVybXNfdGFibGVzID0gZC5nZXRWYXIoJ0ZJTEVTWVNURU1fUEVSTVNfVEFCTEVTJykgb3IgIiIKICAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiBmc19wZXJtc190YWJsZXMuc3BsaXQoKToKICAgICAgICAgICAgIHN0ciArPSAiICVzIiAlIGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKQogICAgICAgICByZXR1cm4gc3RyCkBAIC04NzksNiArODc3LDExIEBACiAgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiIgorICAgIGVsaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctd2l0aC1zcmNwa2cnOgorICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCisgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzcmNkaXIgPSAiL3Vzci9zcmMvZGVidWciCiAgICAgZWxzZToKICAgICAgICAgIyBPcmlnaW5hbCBPRS1jb3JlLCBhLmsuYS4gIi5kZWJ1ZyIsIHN0eWxlIGRlYnVnIGluZm8KICAgICAgICAgZGVidWdhcHBlbmQgPSAiIgpAQCAtMTA5Miw2ICsxMDk1LDE1IEBACiAgICAgCiAgICAgYXV0b2RlYnVnID0gbm90IChkLmdldFZhcigiTk9BVVRPUEFDS0FHRURFQlVHIikgb3IgRmFsc2UpCiAKKyAgICBzcGxpdF9zb3VyY2VfcGFja2FnZSA9IChkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy13aXRoLXNyY3BrZycpCisKKyAgICAjIElmIGRlYnVnLXdpdGgtc3JjcGtnIG1vZGUgaXMgZW5hYmxlZCB0aGVuIHRoZSBzcmMgcGFja2FnZSBpcyBhZGRlZAorICAgICMgaW50byB0aGUgcGFja2FnZSBsaXN0IGFuZCB0aGUgc291cmNlIGRpcmVjdG9yeSBhcyBpdHMgbWFpbiBjb250ZW50CisgICAgaWYgc3BsaXRfc291cmNlX3BhY2thZ2U6CisgICAgICAgIHNyY19wYWNrYWdlX25hbWUgPSAoJyVzLXNyYycgJSBkLmdldFZhcignUE4nKSkKKyAgICAgICAgcGFja2FnZXMgKz0gKCcgJyArIHNyY19wYWNrYWdlX25hbWUpCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18lcycgJSBzcmNfcGFja2FnZV9uYW1lLCAnL3Vzci9zcmMvZGVidWcnKQorCiAgICAgIyBTYW5pdHkgY2hlY2sgUEFDS0FHRVMgZm9yIGR1cGxpY2F0ZXMKICAgICAjIFNhbml0eSBzaG91bGQgYmUgbW92ZWQgdG8gc2FuaXR5LmJiY2xhc3Mgb25jZSB3ZSBoYXZlIHRoZSBpbmZyYXN0dWN0dXJlCiAgICAgcGFja2FnZV9saXN0ID0gW10KQEAgLTExMDAsNyArMTExMiwxMiBAQAogICAgICAgICBpZiBwa2cgaW4gcGFja2FnZV9saXN0OgogICAgICAgICAgICAgbXNnID0gIiVzIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIgJSBwa2cKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJwYWNrYWdlcy1saXN0IiwgbXNnLCBkKQotICAgICAgICBlbGlmIGF1dG9kZWJ1ZyBhbmQgcGtnLmVuZHN3aXRoKCItZGJnIik6CisgICAgICAgICMgSWYgZGVidWctd2l0aC1zcmNwa2cgbW9kZSBpcyBlbmFibGVkIHRoZW4gdGhlIHNyYyBwYWNrYWdlIHdpbGwgaGF2ZQorICAgICAgICAjIHByaW9yaXR5IG92ZXIgZGJnIHBhY2thZ2Ugd2hlbiBhc3NpZ25pbmcgdGhlIGZpbGVzLgorICAgICAgICAjIFRoaXMgYWxsb3dzIHNyYyBwYWNrYWdlIHRvIGluY2x1ZGUgc291cmNlIGZpbGVzIGFuZCByZW1vdmUgdGhlbSBmcm9tIGRiZy4KKyAgICAgICAgZWxpZiBzcGxpdF9zb3VyY2VfcGFja2FnZSBhbmQgcGtnLmVuZHN3aXRoKCItc3JjIik6CisgICAgICAgICAgICBwYWNrYWdlX2xpc3QuaW5zZXJ0KDAsIHBrZykKKyAgICAgICAgZWxpZiBhdXRvZGVidWcgYW5kIHBrZy5lbmRzd2l0aCgiLWRiZyIpIGFuZCBub3Qgc3BsaXRfc291cmNlX3BhY2thZ2U6CiAgICAgICAgICAgICBwYWNrYWdlX2xpc3QuaW5zZXJ0KDAsIHBrZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhY2thZ2VfbGlzdC5hcHBlbmQocGtnKQpAQCAtMTQzNCwxMyArMTQ1MSw3IEBACiBmaQogfQogCi0jIEluIE1vcnR5IGFuZCBlYXJsaWVyIHJlbGVhc2VzLCBhbmQgb24gbWFzdGVyIChSb2NrbyksIHRoZSBSUE0gZmlsZQotIyBkZXBlbmRlbmNpZXMgYXJlIGFsd2F5cyBlbmFibGVkLiBIb3dldmVyLCBzaW5jZSB0aGV5IHdlcmUgYnJva2VuIHdpdGggdGhlCi0jIHJlbGVhc2Ugb2YgUHlybyBhbmQgZW5hYmxpbmcgdGhlbSBtYXkgY2F1c2UgYnVpbGQgcHJvYmxlbXMgZm9yIHNvbWUgcGFja2FnZXMsCi0jIHRoZXkgYXJlIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gUHlyby4gU2V0dGluZyBFTkFCTEVfUlBNX0ZJTEVERVBTX0ZPUl9QWVJPCi0jIHRvICIxIiB3aWxsIGVuYWJsZSB0aGVtIGFnYWluLgotRU5BQkxFX1JQTV9GSUxFREVQU19GT1JfUFlSTyA/Pz0gIjAiCi1SUE1ERVBTID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vcnBtZGVwcyR7QCcgLS1hbGxkZXBzJyBpZiBkLmdldFZhcignRU5BQkxFX1JQTV9GSUxFREVQU19GT1JfUFlSTycpID09ICcxJyBlbHNlICcnfSIKK1JQTURFUFMgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbS9ycG1kZXBzIC0tYWxsZGVwcyIKIAogIyBDb2xsZWN0IHBlcmZpbGUgcnVuLXRpbWUgZGVwZW5kZW5jeSBtZXRhZGF0YQogIyBPdXRwdXQ6CkBAIC0xNDY1LDcgKzE0NzYsNyBAQAogICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgaWYgZC5nZXRWYXIoJ1NLSVBfRklMRURFUFNfJyArIHBrZykgPT0gJzEnOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgcGtnLmVuZHN3aXRoKCctZGJnJykgb3IgcGtnLmVuZHN3aXRoKCctZG9jJykgb3IgcGtnLmZpbmQoJy1sb2NhbGUtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1sb2NhbGVkYXRhLScpICE9IC0xIG9yIHBrZy5maW5kKCctZ2NvbnYtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1jaGFybWFwLScpICE9IC0xIG9yIHBrZy5zdGFydHN3aXRoKCdrZXJuZWwtbW9kdWxlLScpOgorICAgICAgICBpZiBwa2cuZW5kc3dpdGgoJy1kYmcnKSBvciBwa2cuZW5kc3dpdGgoJy1kb2MnKSBvciBwa2cuZmluZCgnLWxvY2FsZS0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWxvY2FsZWRhdGEtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1nY29udi0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWNoYXJtYXAtJykgIT0gLTEgb3IgcGtnLnN0YXJ0c3dpdGgoJ2tlcm5lbC1tb2R1bGUtJykgb3IgcGtnLmVuZHN3aXRoKCctc3JjJyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3IgZmlsZXMgaW4gY2h1bmtzKHBrZ2ZpbGVzW3BrZ10sIDEwMCk6CiAgICAgICAgICAgICBwa2dsaXN0LmFwcGVuZCgocGtnLCBmaWxlcywgcnBtZGVwcywgcGtnZGVzdCkpCkBAIC0xNTgzLDcgKzE1OTQsNyBAQAogICAgICAgICAgICAgICAgIGNvbWJvcy5hcHBlbmQoIi0iLmpvaW4ob3B0aW9uc1swOmldKSkKICAgICAgICAgICAgIHJldHVybiBjb21ib3MKIAotICAgICAgICBpZiAoZmlsZS5lbmRzd2l0aCgnLmR5bGliJykgb3IgZmlsZS5lbmRzd2l0aCgnLnNvJykpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGV2JykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kYmcnKToKKyAgICAgICAgaWYgKGZpbGUuZW5kc3dpdGgoJy5keWxpYicpIG9yIGZpbGUuZW5kc3dpdGgoJy5zbycpKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1zcmMnKToKICAgICAgICAgICAgICMgRHJvcCBzdWZmaXgKICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpLnJzcGxpdCgiLiIsMSlbMF0KICAgICAgICAgICAgICMgRmluZCBhbGwgY29tYmluYXRpb25zCkBAIC0yMDYwLDcgKzIwNzEsNyBAQAogICAgICMgY2FjaGUuICBUaGlzIGlzIHVzZWZ1bCBpZiBhbiBpdGVtIHRoaXMgY2xhc3MgZGVwZW5kcyBvbiBjaGFuZ2VzIGluIGEKICAgICAjIHdheSB0aGF0IHRoZSBvdXRwdXQgb2YgdGhpcyBjbGFzcyBjaGFuZ2VzLiAgcnBtZGVwcyBpcyBhIGdvb2QgZXhhbXBsZQogICAgICMgYXMgYW55IGNoYW5nZSB0byBycG1kZXBzIHJlcXVpcmVzIHRoaXMgdG8gYmUgcmVydW4uCi0gICAgIyBQQUNLQUdFX0JCQ0xBU1NfVkVSU0lPTiA9ICIxIgorICAgICMgUEFDS0FHRV9CQkNMQVNTX1ZFUlNJT04gPSAiMiIKIAogICAgICMgSW5pdCBjYWNoZWRwYXRoCiAgICAgZ2xvYmFsIGNwYXRoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKaW5kZXggZWFjYWJjZC4uNWQyOTc5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcwpAQCAtMzksNTAgKzM5LDc5IEBACiAgICAgaWYgYXJjaCA9PSAiYXJtIjoKICAgICAgICAgcmV0dXJuIGFyY2ggKyBbImVsIiwgImhmIl1bImNhbGxjb252ZW50aW9uLWhhcmQiIGluIHR1bmVfZmVhdHVyZXNdCiAgICAgcmV0dXJuIGFyY2gKLSMKLSMgaW5zdGFsbCBhIGJ1bmNoIG9mIHBhY2thZ2VzIHVzaW5nIGFwdAotIyB0aGUgZm9sbG93aW5nIHNoZWxsIHZhcmlhYmxlcyBuZWVkcyB0byBiZSBzZXQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jOgotIyBJTlNUQUxMX1JPT1RGU19ERUIgLSBpbnN0YWxsIHJvb3QgZGlyCi0jIElOU1RBTExfQkFTRUFSQ0hfREVCIC0gaW5zdGFsbCBiYXNlIGFyY2hpdGVjdXRyZQotIyBJTlNUQUxMX0FSQ0hTX0RFQiAtIGxpc3Qgb2YgYXZhaWxhYmxlIGFyY2hzCi0jIElOU1RBTExfUEFDS0FHRVNfTk9STUFMX0RFQiAtIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZAotIyBJTlNUQUxMX1BBQ0tBR0VTX0FUVEVNUFRPTkxZX0RFQiAtIHBhY2thZ2VzIGF0dGVtcHRlZCB0byBiZSBpbnN0YWxsZWQgb25seQotIyBJTlNUQUxMX1BBQ0tBR0VTX0xJTkdVQVNfREVCIC0gYWRkaXRpb25hbCBwYWNrYWdlcyBmb3IgdWNsaWJjCi0jIElOU1RBTExfVEFTS19ERUIgLSB0YXNrIG5hbWUKIAogcHl0aG9uIGRvX3BhY2thZ2VfZGViICgpIHsKLSAgICBpbXBvcnQgcmUsIGNvcHkKLSAgICBpbXBvcnQgdGV4dHdyYXAKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgIGltcG9ydCBjb2xsZWN0aW9ucwotICAgIGltcG9ydCBjb2RlY3MKKworICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICBjbGFzcyBEZWJpYW5Xcml0ZVBrZ1Byb2Nlc3MobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuX3Bjb25uLCBzZWxmLl9jY29ubiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKKworICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLnJ1bihzZWxmKQorICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0YiA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKChlLCB0YikpCisKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiBleGNlcHRpb24oc2VsZik6CisgICAgICAgICAgICBpZiBzZWxmLl9wY29ubi5wb2xsKCk6CisgICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gc2VsZi5fcGNvbm4ucmVjdigpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhjZXB0aW9uCiAKICAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQogCi0gICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKLSAgICBpZiBub3Qgd29ya2RpcjoKLSAgICAgICAgYmIuZXJyb3IoIldPUktESVIgbm90IGRlZmluZWQsIHVuYWJsZSB0byBwYWNrYWdlIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBvdXRkaXIgPSBkLmdldFZhcignUEtHV1JJVEVESVJERUInKQotICAgIGlmIG5vdCBvdXRkaXI6Ci0gICAgICAgIGJiLmVycm9yKCJQS0dXUklURURJUkRFQiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQotICAgICAgICByZXR1cm4KLQogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykKICAgICBpZiBub3QgcGFja2FnZXM6CiAgICAgICAgIGJiLmRlYnVnKDEsICJQQUNLQUdFUyBub3QgZGVmaW5lZCwgbm90aGluZyB0byBwYWNrYWdlIikKICAgICAgICAgcmV0dXJuCiAKICAgICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJykKLQogICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIkRFQl9QQUNLQUdFX0lOREVYX0NMRUFOIiksb3MuUl9PSyk6CiAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIkRFQl9QQUNLQUdFX0lOREVYX0NMRUFOIikpCiAKLSAgICBpZiBwYWNrYWdlcyA9PSBbXToKLSAgICAgICAgYmIuZGVidWcoMSwgIk5vIHBhY2thZ2VzOyBub3RoaW5nIHRvIGRvIikKLSAgICAgICAgcmV0dXJuCisgICAgbWF4X3Byb2Nlc3MgPSBpbnQoZC5nZXRWYXIoIkJCX05VTUJFUl9USFJFQURTIikgb3Igb3MuY3B1X2NvdW50KCkgb3IgMSkKKyAgICBsYXVuY2hlZCA9IFtdCisgICAgZXJyb3IgPSBOb25lCisgICAgcGtncyA9IHBhY2thZ2VzLnNwbGl0KCkKKyAgICB3aGlsZSBub3QgZXJyb3IgYW5kIHBrZ3M6CisgICAgICAgIGlmIGxlbihsYXVuY2hlZCkgPCBtYXhfcHJvY2VzczoKKyAgICAgICAgICAgIHAgPSBEZWJpYW5Xcml0ZVBrZ1Byb2Nlc3ModGFyZ2V0PWRlYl93cml0ZV9wa2csIGFyZ3M9KHBrZ3MucG9wKCksIGQpKQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBsYXVuY2hlZC5hcHBlbmQocCkKKyAgICAgICAgZm9yIHEgaW4gbGF1bmNoZWQ6CisgICAgICAgICAgICAjIFRoZSBmaW5pc2hlZCBwcm9jZXNzZXMgYXJlIGpvaW5lZCB3aGVuIGNhbGxpbmcgaXNfYWxpdmUoKQorICAgICAgICAgICAgaWYgbm90IHEuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICBsYXVuY2hlZC5yZW1vdmUocSkKKyAgICAgICAgICAgIGlmIHEuZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGVycm9yLCB0cmFjZWJhY2sgPSBxLmV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICBmb3IgcCBpbiBsYXVuY2hlZDoKKyAgICAgICAgcC5qb2luKCkKKworICAgIG9zLmNoZGlyKG9sZGN3ZCkKKworICAgIGlmIGVycm9yOgorICAgICAgICByYWlzZSBlcnJvcgorfQorZG9fcGFja2FnZV9kZWJbdmFyZGVwc10gKz0gImRlYl93cml0ZV9wa2ciCitkb19wYWNrYWdlX2RlYlt2YXJkZXBzZXhjbHVkZV0gPSAiQkJfTlVNQkVSX1RIUkVBRFMiCisKK2RlZiBkZWJfd3JpdGVfcGtnKHBrZywgZCk6CisgICAgaW1wb3J0IHJlLCBjb3B5CisgICAgaW1wb3J0IHRleHR3cmFwCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMKKyAgICBpbXBvcnQgY29kZWNzCisKKyAgICBvdXRkaXIgPSBkLmdldFZhcignUEtHV1JJVEVESVJERUInKQogICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCiAKICAgICBkZWYgY2xlYW51cGNvbnRyb2wocm9vdCk6CkBAIC05MSwxMSArMTIwLDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKICAgICAgICAgICAgICAgICBiYi51dGlscy5wcnVuZWRpcihwKQogCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgotICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICAgICAgcm9vdCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQorICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgIHJvb3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykKIAotICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKHJvb3QgKyAiLmxvY2siKQorICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUocm9vdCArICIubG9jayIpCisgICAgdHJ5OgogCiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1JPT1QnLCAnJykKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUk9PVF8lcycgJSBwa2csIHJvb3QpCkBAIC0xMTcsOCArMTQ2LDcgQEAKICAgICAgICAgZyA9IGdsb2IoJyonKQogICAgICAgICBpZiBub3QgZyBhbmQgbG9jYWxkYXRhLmdldFZhcignQUxMT1dfRU1QVFknLCBGYWxzZSkgIT0gIjEiOgogICAgICAgICAgICAgYmIubm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IGFyY2hpdmUgZm9yICVzLSVzLSVzIiAlIChwa2csIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1YnKSwgbG9jYWxkYXRhLmdldFZhcignUEtHUicpKSkKLSAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCi0gICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgY29udHJvbGRpciA9IG9zLnBhdGguam9pbihyb290LCAnREVCSUFOJykKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbnRyb2xkaXIpCkBAIC0xOTQsOCArMjIyLDggQEAKICAgICAgICAgbWFwcGluZ19yZW5hbWVfaG9vayhsb2NhbGRhdGEpCiAKICAgICAgICAgZGVmIGRlYmlhbl9jbXBfcmVtYXAodmFyKToKLSAgICAgICAgICAgICMgZHBrZyBkb2VzIG5vdCBhbGxvdyBmb3IgJygnIG9yICcpJyBpbiBhIGRlcGVuZGVuY3kgbmFtZQotICAgICAgICAgICAgIyByZXBsYWNlIHRoZXNlIGluc3RhbmNlcyB3aXRoICdfXycgYW5kICdfXycKKyAgICAgICAgICAgICMgZHBrZyBkb2VzIG5vdCBhbGxvdyBmb3IgJygnLCAnKScgb3IgJzonIGluIGEgZGVwZW5kZW5jeSBuYW1lCisgICAgICAgICAgICAjIFJlcGxhY2UgYW55IGluc3RhbmNlcyBvZiB0aGVtIHdpdGggJ19fJwogICAgICAgICAgICAgIwogICAgICAgICAgICAgIyBJbiBkZWJpYW4gJz4nIGFuZCAnPCcgZG8gbm90IG1lYW4gd2hhdCBpdCBhcHBlYXJzIHRoZXkgbWVhbgogICAgICAgICAgICAgIyAgICc8JyA9IGxlc3Mgb3IgZXF1YWwKQEAgLTIwNCw4ICsyMzIsNyBAQAogICAgICAgICAgICAgIwogICAgICAgICAgICAgZm9yIGRlcCBpbiB2YXI6CiAgICAgICAgICAgICAgICAgaWYgJygnIGluIGRlcDoKLSAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gZGVwLnJlcGxhY2UoJygnLCAnX18nKQotICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSBuZXdkZXAucmVwbGFjZSgnKScsICdfXycpCisgICAgICAgICAgICAgICAgICAgIG5ld2RlcCA9IHJlLnN1YihyJ1soOildJywgJ19fJywgZGVwKQogICAgICAgICAgICAgICAgICAgICBpZiBuZXdkZXAgIT0gZGVwOgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyW25ld2RlcF0gPSB2YXJbZGVwXQogICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHZhcltkZXBdCkBAIC0yODksMTcgKzMxNiwxOSBAQAogICAgICAgICAgICAgY29uZmZpbGVzLmNsb3NlKCkKIAogICAgICAgICBvcy5jaGRpcihiYXNlZGlyKQotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiUEFUSD1cIiVzXCIgZHBrZy1kZWIgLWIgJXMgJXMiICUgKGxvY2FsZGF0YS5nZXRWYXIoIlBBVEgiKSwgcm9vdCwgcGtnb3V0ZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIlBBVEg9XCIlc1wiIGRwa2ctZGViIC1iICVzICVzIiAlIChsb2NhbGRhdGEuZ2V0VmFyKCJQQVRIIiksIHJvb3QsIHBrZ291dGRpciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKIAorICAgIGZpbmFsbHk6CiAgICAgICAgIGNsZWFudXBjb250cm9sKHJvb3QpCiAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCi0gICAgb3MuY2hkaXIob2xkY3dkKQotfQorCisjIE90aGVyd2lzZSBhbGxhcmNoIHBhY2thZ2VzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24KK2RlYl93cml0ZV9wa2dbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKKwogIyBJbmRpcmVjdCByZWZlcmVuY2VzIHRvIHRoZXNlIHZhcnMKIGRvX3BhY2thZ2Vfd3JpdGVfZGViW3ZhcmRlcHNdICs9ICJQS0dWIFBLR1IgUEtHViBERVNDUklQVElPTiBTRUNUSU9OIFBSSU9SSVRZIE1BSU5UQUlORVIgRFBLR19BUkNIIFBOIEhPTUVQQUdFIgotIyBPdGhlcndpc2UgYWxsYXJjaCBwYWNrYWdlcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbiBvdmVycmlkZSBjb25maWd1cmF0aW9uCi1kb19wYWNrYWdlX2RlYlt2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgotCiAKIFNTVEFURVRBU0tTICs9ICJkb19wYWNrYWdlX3dyaXRlX2RlYiIKIGRvX3BhY2thZ2Vfd3JpdGVfZGViW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7UEtHV1JJVEVESVJERUJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCmluZGV4IGExZTUxZWUuLjZjMWZkYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKQEAgLTEyLDE1ICsxMiwzNCBAQAogCiBPUEtHX0FSR1MgKz0gIi0tZm9yY2VfcG9zdGluc3RhbGwgLS1wcmVmZXItYXJjaC10by12ZXJzaW9uIgogT1BLR19BUkdTICs9ICIke0BbJycsICctLW5vLWluc3RhbGwtcmVjb21tZW5kcyddW2QuZ2V0VmFyKCJOT19SRUNPTU1FTkRBVElPTlMiKSA9PSAiMSJdfSIKLU9QS0dfQVJHUyArPSAiJHtAWycnLCAnLS1hZGQtZXhjbHVkZSAnICsgJyAtLWFkZC1leGNsdWRlICcuam9pbigoZC5nZXRWYXIoJ1BBQ0tBR0VfRVhDTFVERScpIG9yICIiKS5zcGxpdCgpKV1bKGQuZ2V0VmFyKCJQQUNLQUdFX0VYQ0xVREUiKSBvciAiIikgIT0gIiJdfSIKK09QS0dfQVJHUyArPSAiJHtAWycnLCAnLS1hZGQtZXhjbHVkZSAnICsgJyAtLWFkZC1leGNsdWRlICcuam9pbigoZC5nZXRWYXIoJ1BBQ0tBR0VfRVhDTFVERScpIG9yICIiKS5zcGxpdCgpKV1bKGQuZ2V0VmFyKCJQQUNLQUdFX0VYQ0xVREUiKSBvciAiIikuc3RyaXAoKSAhPSAiIl19IgogCiBPUEtHTElCRElSID0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliIgogCiBweXRob24gZG9fcGFja2FnZV9pcGsgKCkgewotICAgIGltcG9ydCByZSwgY29weQotICAgIGltcG9ydCB0ZXh0d3JhcAotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgaW1wb3J0IGNvbGxlY3Rpb25zCisgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworICAgIGltcG9ydCB0cmFjZWJhY2sKKworICAgIGNsYXNzIElQS1dyaXRlUGtnUHJvY2VzcyhtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fcGNvbm4sIHNlbGYuX2Njb25uID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gTm9uZQorCisgICAgICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MucnVuKHNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZChOb25lKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoKGUsIHRiKSkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGV4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Bjb25uLnBvbGwoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBzZWxmLl9wY29ubi5yZWN2KCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KKwogCiAgICAgb2xkY3dkID0gb3MuZ2V0Y3dkKCkKIApAQCAtNDIsMjAgKzYxLDU1IEBACiAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiSVBLX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSwgb3MuUl9PSyk6CiAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIklQS19QQUNLQUdFX0lOREVYX0NMRUFOIikpCiAKKyAgICBtYXhfcHJvY2VzcyA9IGludChkLmdldFZhcigiQkJfTlVNQkVSX1RIUkVBRFMiKSBvciBvcy5jcHVfY291bnQoKSBvciAxKQorICAgIGxhdW5jaGVkID0gW10KKyAgICBlcnJvciA9IE5vbmUKKyAgICBwa2dzID0gcGFja2FnZXMuc3BsaXQoKQorICAgIHdoaWxlIG5vdCBlcnJvciBhbmQgcGtnczoKKyAgICAgICAgaWYgbGVuKGxhdW5jaGVkKSA8IG1heF9wcm9jZXNzOgorICAgICAgICAgICAgcCA9IElQS1dyaXRlUGtnUHJvY2Vzcyh0YXJnZXQ9aXBrX3dyaXRlX3BrZywgYXJncz0ocGtncy5wb3AoKSwgZCkpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIGxhdW5jaGVkLmFwcGVuZChwKQorICAgICAgICBmb3IgcSBpbiBsYXVuY2hlZDoKKyAgICAgICAgICAgICMgVGhlIGZpbmlzaGVkIHByb2Nlc3NlcyBhcmUgam9pbmVkIHdoZW4gY2FsbGluZyBpc19hbGl2ZSgpCisgICAgICAgICAgICBpZiBub3QgcS5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIGxhdW5jaGVkLnJlbW92ZShxKQorICAgICAgICAgICAgaWYgcS5leGNlcHRpb246CisgICAgICAgICAgICAgICAgZXJyb3IsIHRyYWNlYmFjayA9IHEuZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGZvciBwIGluIGxhdW5jaGVkOgorICAgICAgICBwLmpvaW4oKQorCisgICAgb3MuY2hkaXIob2xkY3dkKQorCisgICAgaWYgZXJyb3I6CisgICAgICAgIHJhaXNlIGVycm9yCit9Citkb19wYWNrYWdlX2lwa1t2YXJkZXBzXSArPSAiaXBrX3dyaXRlX3BrZyIKK2RvX3BhY2thZ2VfaXBrW3ZhcmRlcHNleGNsdWRlXSA9ICJCQl9OVU1CRVJfVEhSRUFEUyIKKworZGVmIGlwa193cml0ZV9wa2cocGtnLCBkKToKKyAgICBpbXBvcnQgcmUsIGNvcHkKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIGltcG9ydCB0ZXh0d3JhcAorICAgIGltcG9ydCBjb2xsZWN0aW9ucworCiAgICAgZGVmIGNsZWFudXBjb250cm9sKHJvb3QpOgogICAgICAgICBmb3IgcCBpbiBbJ0NPTlRST0wnLCAnREVCSUFOJ106CiAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKHJvb3QsIHApCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKICAgICAgICAgICAgICAgICBiYi51dGlscy5wcnVuZWRpcihwKQogCisgICAgb3V0ZGlyID0gZC5nZXRWYXIoJ1BLR1dSSVRFRElSSVBLJykKKyAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQogICAgIHJlY2lwZXNvdXJjZSA9IG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ0ZJTEUnKSkKIAotICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKLSAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCi0gICAgICAgIHJvb3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykKKyAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICByb290ID0gIiVzLyVzIiAlIChwa2dkZXN0LCBwa2cpCiAKLSAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShyb290ICsgIi5sb2NrIikKLQorICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUocm9vdCArICIubG9jayIpCisgICAgdHJ5OgogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdST09UJywgJycpCiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1JPT1RfJXMnICUgcGtnLCByb290KQogICAgICAgICBwa2duYW1lID0gbG9jYWxkYXRhLmdldFZhcignUEtHXyVzJyAlIHBrZykKQEAgLTEwMCw4ICsxNTQsNyBAQAogICAgICAgICBnID0gZ2xvYignKicpCiAgICAgICAgIGlmIG5vdCBnIGFuZCBsb2NhbGRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScsIEZhbHNlKSAhPSAiMSI6CiAgICAgICAgICAgICBiYi5ub3RlKCJOb3QgY3JlYXRpbmcgZW1wdHkgYXJjaGl2ZSBmb3IgJXMtJXMtJXMiICUgKHBrZywgbG9jYWxkYXRhLmdldFZhcignUEtHVicpLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dSJykpKQotICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBjb250cm9sZGlyID0gb3MucGF0aC5qb2luKHJvb3QsICdDT05UUk9MJykKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbnRyb2xkaXIpCkBAIC0xNDIsMTYgKzE5NSw5IEBACiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicpIG9yICIuIgogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGV4dHdyYXAuZGVkZW50KGRlc2NyaXB0aW9uKS5zdHJpcCgpCiAgICAgICAgICAgICAgICAgaWYgJ1xcbicgaW4gZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICMgTWFudWFsbHkgaW5kZW50CisgICAgICAgICAgICAgICAgICAgICMgTWFudWFsbHkgaW5kZW50OiBtdWx0aWxpbmUgZGVzY3JpcHRpb24gaW5jbHVkZXMgYSBsZWFkaW5nIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIGRlc2NyaXB0aW9uLnNwbGl0KCdcXG4nKToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgbGltaXQgdGhlIHdpZHRoIHdoZW4gbWFudWFsbHkgaW5kZW50LCBidXQgd2UgZG8KLSAgICAgICAgICAgICAgICAgICAgICAgICMgbmVlZCB0aGUgdGV4dHdyYXAuZmlsbCgpIHRvIHNldCB0aGUgaW5pdGlhbF9pbmRlbnQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHN1YnNlcXVlbnRfaW5kZW50LCBzbyBzZXQgYSBsYXJnZSB3aWR0aAotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IHRleHR3cmFwLmZpbGwodC5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MTAwMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9JyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudF9pbmRlbnQ9JyAnKSBvciAnLicKLSAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCclc1xuJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnICVzXG4nICUgKHQuc3RyaXAoKSBvciAnIC4nKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIEF1dG8gaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCclc1xuJyAlIHRleHR3cmFwLmZpbGwoZGVzY3JpcHRpb24sIHdpZHRoPTc0LCBpbml0aWFsX2luZGVudD0nICcsIHN1YnNlcXVlbnRfaW5kZW50PScgJykpCkBAIC0yMjgsMjAgKzI3NCwyMiBAQAogCiAgICAgICAgIG9zLmNoZGlyKGJhc2VkaXIpCiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJQQVRIPVwiJXNcIiAlcyAlcyAlcyIgJSAobG9jYWxkYXRhLmdldFZhcigiUEFUSCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJPUEtHQlVJTERDTUQiKSwgcGtnLCBwa2dvdXRkaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJPUEtHQlVJTERDTUQiKSwgcGtnLCBwa2dvdXRkaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUpCiAKICAgICAgICAgaWYgZC5nZXRWYXIoJ0lQS19TSUdOX1BBQ0tBR0VTJykgPT0gJzEnOgogICAgICAgICAgICAgaXBrdmVyID0gIiVzLSVzIiAlIChkLmdldFZhcignUEtHVicpLCBkLmdldFZhcignUEtHUicpKQogICAgICAgICAgICAgaXBrX3RvX3NpZ24gPSAiJXMvJXNfJXNfJXMuaXBrIiAlIChwa2dvdXRkaXIsIHBrZ25hbWUsIGlwa3ZlciwgZC5nZXRWYXIoJ1BBQ0tBR0VfQVJDSCcpKQogICAgICAgICAgICAgc2lnbl9pcGsoZCwgaXBrX3RvX3NpZ24pCiAKKyAgICBmaW5hbGx5OgogICAgICAgICBjbGVhbnVwY29udHJvbChyb290KQogICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQogCi0gICAgb3MuY2hkaXIob2xkY3dkKQotfQogIyBPdGhlcndpc2UgYWxsYXJjaCBwYWNrYWdlcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbiBvdmVycmlkZSBjb25maWd1cmF0aW9uCi1kb19wYWNrYWdlX2lwa1t2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgoraXBrX3dyaXRlX3BrZ1t2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgorCiAKIFNTVEFURVRBU0tTICs9ICJkb19wYWNrYWdlX3dyaXRlX2lwayIKIGRvX3BhY2thZ2Vfd3JpdGVfaXBrW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7UEtHV1JJVEVESVJJUEt9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCmluZGV4IDFkZWFmODMuLmE0MjhkMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKQEAgLTY0Niw5ICs2NDYsMTMgQEAKICAgICBycG1idWlsZCA9IGQuZ2V0VmFyKCdSUE1CVUlMRCcpCiAgICAgdGFyZ2V0c3lzID0gZC5nZXRWYXIoJ1RBUkdFVF9TWVMnKQogICAgIHRhcmdldHZlbmRvciA9IGQuZ2V0VmFyKCdIT1NUX1ZFTkRPUicpCisKICAgICAjIFRvbyBtYW55IHBsYWNlcyBpbiBkbmYgc3RhY2sgYXNzdW1lIHRoYXQgYXJjaC1pbmRlcGVuZGVudCBwYWNrYWdlcyBhcmUgIm5vYXJjaCIuCiAgICAgIyBMZXQncyBub3QgZmlnaHQgYWdhaW5zdCB0aGlzLgotICAgIHBhY2thZ2VfYXJjaCA9IChkLmdldFZhcignUEFDS0FHRV9BUkNIJykgb3IgIiIpLnJlcGxhY2UoIi0iLCAiXyIpLnJlcGxhY2UoImFsbCIsICJub2FyY2giKQorICAgIHBhY2thZ2VfYXJjaCA9IChkLmdldFZhcignUEFDS0FHRV9BUkNIJykgb3IgIiIpLnJlcGxhY2UoIi0iLCAiXyIpCisgICAgaWYgcGFja2FnZV9hcmNoID09ICJhbGwiOgorICAgICAgICBwYWNrYWdlX2FyY2ggPSAibm9hcmNoIgorCiAgICAgc2RrcGtnc3VmZml4ID0gKGQuZ2V0VmFyKCdTREtQS0dTVUZGSVgnKSBvciAibmF0aXZlc2RrIikucmVwbGFjZSgiLSIsICJfIikKICAgICBkLnNldFZhcignUEFDS0FHRV9BUkNIX0VYVEVORCcsIHBhY2thZ2VfYXJjaCkKICAgICBwa2d3cml0ZWRpciA9IGQuZXhwYW5kKCcke1BLR1dSSVRFRElSUlBNfS8ke1BBQ0tBR0VfQVJDSF9FWFRFTkR9JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWZlZWQtc3RhYmlsaXR5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VmZWVkLXN0YWJpbGl0eS5iYmNsYXNzCmluZGV4IGMwZTliZTUuLjU2NDg2MDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWZlZWQtc3RhYmlsaXR5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcwpAQCAtMTg5LDcgKzE4OSw3IEBACiAKICAgICAjIFJlbW92ZSBhbGwgdGhlIG9sZCBmaWxlcyBhbmQgY29weSBhZ2FpbiBpZiBkb2NvcHkKICAgICBpZiBkb2NvcHk6Ci0gICAgICAgIGJiLnBsYWluKCdDb3B5aW5nIHBhY2thZ2VzIGZvciByZWNpcGUgJXMnICUgcG4pCisgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgcGFja2FnZXMgZm9yIHJlY2lwZSAlcycgJSBwbikKICAgICAgICAgcGNtYW5pZmVzdCA9IG9zLnBhdGguam9pbihwcmVwYXRoLCBkLmV4cGFuZCgncGtnLWNvbXBhcmUtbWFuaWZlc3QtJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30tJHtQTn0nKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBvcGVuKHBjbWFuaWZlc3QsICdyJykgYXMgZjoKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjcGF0aCwgZGVzdHBhdGgpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXNcbicgJSBkZXN0cGF0aCkKICAgICBlbHNlOgotICAgICAgICBiYi5wbGFpbignTm90IGNvcHlpbmcgcGFja2FnZXMgZm9yIHJlY2lwZSAlcycgJSBwbikKKyAgICAgICAgYmIubm90ZSgnTm90IGNvcHlpbmcgcGFja2FnZXMgZm9yIHJlY2lwZSAlcycgJSBwbikKIAogZG9fY2xlYW5zc3RhdGVbcG9zdGZ1bmNzXSArPSAicGZzX2NsZWFucGtncyIKIHB5dGhvbiBwZnNfY2xlYW5wa2dzICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCA1NjM1ODJlLi40MjRjNjNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCkBAIC01OSw2ICs1OSw5IEBACiAKIFNES19UQVJHRVRfTUFOSUZFU1QgPSAiJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhcmdldC5tYW5pZmVzdCIKIFNES19IT1NUX01BTklGRVNUID0gIiR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5ob3N0Lm1hbmlmZXN0IgorU0RLX0VYVF9UQVJHRVRfTUFOSUZFU1QgPSAiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FfS50YXJnZXQubWFuaWZlc3QiCitTREtfRVhUX0hPU1RfTUFOSUZFU1QgPSAiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FfS5ob3N0Lm1hbmlmZXN0IgorCiBweXRob24gd3JpdGVfdGFyZ2V0X3Nka19tYW5pZmVzdCAoKSB7CiAgICAgZnJvbSBvZS5zZGsgaW1wb3J0IHNka19saXN0X2luc3RhbGxlZF9wYWNrYWdlcwogICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGZvcm1hdF9wa2dfbGlzdApAQCAtODgsOCArOTEsOSBAQAogICAgICAgICBvdXRwdXQud3JpdGUoZm9ybWF0X3BrZ19saXN0KHBrZ3MsICd2ZXInKSkKIH0KIAotUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkRfYXBwZW5kID0gIiB3cml0ZV90YXJnZXRfc2RrX21hbmlmZXN0IDsgd3JpdGVfc2RrX3Rlc3RfZGF0YSA7ICIKLVBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORF9hcHBlbmQgPSAiIHdyaXRlX2hvc3Rfc2RrX21hbmlmZXN0OyAiCitQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORF9hcHBlbmQgPSAiIHdyaXRlX3Nka190ZXN0X2RhdGEgOyAiCitQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORF9hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGsgID0gIiB3cml0ZV90YXJnZXRfc2RrX21hbmlmZXN0IDsgIgorUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EX2FwcGVuZF90YXNrLXBvcHVsYXRlLXNkayA9ICIgd3JpdGVfaG9zdF9zZGtfbWFuaWZlc3Q7ICIKIFNES19QQUNLQUdJTkdfQ09NTUFORCA9ICIke0AnJHtTREtfUEFDS0FHSU5HX0ZVTkN9OycgaWYgJyR7U0RLX1BBQ0tBR0lOR19GVU5DfScgZWxzZSAnJ30iCiBTREtfUE9TVFBST0NFU1NfQ09NTUFORCA9ICIgY3JlYXRlX3Nka19maWxlczsgY2hlY2tfc2RrX3N5c3Jvb3RzOyB0YXJfc2RrOyAke1NES19QQUNLQUdJTkdfQ09NTUFORH0gIgogCkBAIC05Nyw2ICsxMDEsMjYgQEAKICAgICBmcm9tIG9lLnNkayBpbXBvcnQgcG9wdWxhdGVfc2RrCiAgICAgZnJvbSBvZS5tYW5pZmVzdCBpbXBvcnQgY3JlYXRlX21hbmlmZXN0LCBNYW5pZmVzdAogCisgICAgIyBIYW5kbGUgcGFja2FnZSBleGNsdXNpb25zCisgICAgZXhjbF9wa2dzID0gKGQuZ2V0VmFyKCJQQUNLQUdFX0VYQ0xVREUiKSBvciAiIikuc3BsaXQoKQorICAgIGluc3RfcGtncyA9IChkLmdldFZhcigiUEFDS0FHRV9JTlNUQUxMIikgb3IgIiIpLnNwbGl0KCkKKyAgICBpbnN0X2F0dGVtcHRfcGtncyA9IChkLmdldFZhcigiUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZIikgb3IgIiIpLnNwbGl0KCkKKworICAgIGQuc2V0VmFyKCdQQUNLQUdFX0lOU1RBTExfT1JJRycsICcgJy5qb2luKGluc3RfcGtncykpCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWScsICcgJy5qb2luKGluc3RfYXR0ZW1wdF9wa2dzKSkKKworICAgIGZvciBwa2cgaW4gZXhjbF9wa2dzOgorICAgICAgICBpZiBwa2cgaW4gaW5zdF9wa2dzOgorICAgICAgICAgICAgYmIud2FybigiUGFja2FnZSAlcywgc2V0IHRvIGJlIGV4Y2x1ZGVkLCBpcyBpbiAlcyBQQUNLQUdFX0lOU1RBTEwgKCVzKS4gIEl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiIgJSAocGtnLCBkLmdldFZhcignUE4nKSwgaW5zdF9wa2dzKSkKKyAgICAgICAgICAgIGluc3RfcGtncy5yZW1vdmUocGtnKQorCisgICAgICAgIGlmIHBrZyBpbiBpbnN0X2F0dGVtcHRfcGtnczoKKyAgICAgICAgICAgIGJiLndhcm4oIlBhY2thZ2UgJXMsIHNldCB0byBiZSBleGNsdWRlZCwgaXMgaW4gJXMgUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZICglcykuICBJdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4iICUgKHBrZywgZC5nZXRWYXIoJ1BOJyksIGluc3RfcGtncykpCisgICAgICAgICAgICBpbnN0X2F0dGVtcHRfcGtncy5yZW1vdmUocGtnKQorCisgICAgZC5zZXRWYXIoIlBBQ0tBR0VfSU5TVEFMTCIsICcgJy5qb2luKGluc3RfcGtncykpCisgICAgZC5zZXRWYXIoIlBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWSIsICcgJy5qb2luKGluc3RfYXR0ZW1wdF9wa2dzKSkKKwogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKICAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJUT09MQ0hBSU5fVEFSR0VUX1RBU0siLCBwbiwgZCkKICAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJUT09MQ0hBSU5fVEFSR0VUX1RBU0tfQVRURU1QVE9OTFkiLCBwbiwgZCkKQEAgLTI1Niw4ICsyODAsNyBAQAogfQogCiBkZWYgc2RrX2NvbW1hbmRfdmFyaWFibGVzKGQpOgotICAgIHJldHVybiBbJ09QS0dfUFJFUFJPQ0VTU19DT01NQU5EUycsJ09QS0dfUE9TVFBST0NFU1NfQ09NTUFORFMnLCdQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQnLCdQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCcsJ1NES19QT1NUUFJPQ0VTU19DT01NQU5EJywnUlBNX1BSRVBST0NFU1NfQ09NTUFORFMnLAotICAgICAgICAgICAgJ1JQTV9QT1NUUFJPQ0VTU19DT01NQU5EUyddCisgICAgcmV0dXJuIFsnT1BLR19QUkVQUk9DRVNTX0NPTU1BTkRTJywnT1BLR19QT1NUUFJPQ0VTU19DT01NQU5EUycsJ1BPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCcsJ1BPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQnLCdQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCcsJ1NES19QT1NUUFJPQ0VTU19DT01NQU5EJywnUlBNX1BSRVBST0NFU1NfQ09NTUFORFMnLCdSUE1fUE9TVFBST0NFU1NfQ09NTUFORFMnXQogCiBkZWYgc2RrX3ZhcmlhYmxlcyhkKToKICAgICB2YXJpYWJsZXMgPSBbJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJywnU0RLX09TJywnU0RLX09VVFBVVCcsJ1NES1BBVEhOQVRJVkUnLCdTREtUQVJHRVRTWVNST09UJywnU0RLX0RJUicsJ1NES19WRU5ET1InLCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdTREtfUEFDS0FHRV9BUkNIUycsJ1NES19PVVRQVVQnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwppbmRleCA4YjhhMzQxLi5jNzlkZGJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwpAQCAtMzMsNiArMzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETF9ESVIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU1RBVEVfRElSIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE1QRElSIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkJfU0VSVkVSX1RJTUVPVVQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKIFNES19JTkhFUklUX0JMQUNLTElTVCA/PSAiYnVpbGRoaXN0b3J5IGljZWNjIgogU0RLX1VQREFURV9VUkwgPz0gIiIKQEAgLTY5LDcgKzcwLDYgQEAKICMgQ09SRUJBU0UgYmUgcHJlc2VydmVkIGFzIHdlbGwgYXMgdW50cmFja2VkIGZpbGVzLgogQ09SRUJBU0VfRklMRVMgPz0gIiBcCiAgICAgb2UtaW5pdC1idWlsZC1lbnYgXAotICAgIG9lLWluaXQtYnVpbGQtZW52LW1lbXJlcyBcCiAgICAgc2NyaXB0cyBcCiAgICAgTElDRU5TRSBcCiAgICAgLnRlbXBsYXRlY29uZiBcCkBAIC04Myw2ICs4MywzOSBAQAogU0RLX0VYVF9UQVJHRVRfTUFOSUZFU1QgPSAiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FfS50YXJnZXQubWFuaWZlc3QiCiBTREtfRVhUX0hPU1RfTUFOSUZFU1QgPSAiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FfS5ob3N0Lm1hbmlmZXN0IgogCitweXRob24gd3JpdGVfdGFyZ2V0X3Nka19leHRfbWFuaWZlc3QgKCkgeworICAgIGZyb20gb2Uuc2RrIGltcG9ydCBnZXRfZXh0cmFfc2RraW5mbworICAgIHNzdGF0ZV9kaXIgPSBkLmV4cGFuZCgnJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3NzdGF0ZS1jYWNoZScpCisgICAgZXh0cmFfaW5mbyA9IGdldF9leHRyYV9zZGtpbmZvKHNzdGF0ZV9kaXIpCisKKyAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX1NZUycpCisgICAgdGFyZ2V0X211bHRpbWFjaCA9IGQuZ2V0VmFyKCdNVUxUSU1BQ0hfVEFSR0VUX1NZUycpCisgICAgcmVhbF90YXJnZXRfbXVsdGltYWNoID0gZC5nZXRWYXIoJ1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVMnKQorCisgICAgcGtncyA9IHt9CisgICAgd2l0aCBvcGVuKGQuZ2V0VmFyKCdTREtfRVhUX1RBUkdFVF9NQU5JRkVTVCcpLCAndycpIGFzIGY6CisgICAgICAgIGZvciBmbiBpbiBleHRyYV9pbmZvWydmaWxlc2l6ZXMnXToKKyAgICAgICAgICAgIGluZm8gPSBmbi5zcGxpdCgnOicpCisgICAgICAgICAgICBpZiBpbmZvWzJdIGluICh0YXJnZXQsIHRhcmdldF9tdWx0aW1hY2gsIHJlYWxfdGFyZ2V0X211bHRpbWFjaCkgXAorICAgICAgICAgICAgICAgICAgICBvciBpbmZvWzVdID09ICdhbGxhcmNoJzoKKyAgICAgICAgICAgICAgICBpZiBub3QgaW5mb1sxXSBpbiBwa2dzOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCIlcyAlcyAlc1xuIiAlIChpbmZvWzFdLCBpbmZvWzJdLCBpbmZvWzNdKSkKKyAgICAgICAgICAgICAgICAgICAgcGtnc1tpbmZvWzFdXSA9IHt9Cit9CitweXRob24gd3JpdGVfaG9zdF9zZGtfZXh0X21hbmlmZXN0ICgpIHsKKyAgICBmcm9tIG9lLnNkayBpbXBvcnQgZ2V0X2V4dHJhX3Nka2luZm8KKyAgICBzc3RhdGVfZGlyID0gZC5leHBhbmQoJyR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zc3RhdGUtY2FjaGUnKQorICAgIGV4dHJhX2luZm8gPSBnZXRfZXh0cmFfc2RraW5mbyhzc3RhdGVfZGlyKQorICAgIGhvc3QgPSBkLmdldFZhcignQlVJTERfU1lTJykKKyAgICB3aXRoIG9wZW4oZC5nZXRWYXIoJ1NES19FWFRfSE9TVF9NQU5JRkVTVCcpLCAndycpIGFzIGY6CisgICAgICAgIGZvciBmbiBpbiBleHRyYV9pbmZvWydmaWxlc2l6ZXMnXToKKyAgICAgICAgICAgIGluZm8gPSBmbi5zcGxpdCgnOicpCisgICAgICAgICAgICBpZiBpbmZvWzJdID09IGhvc3Q6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJXMgJXNcbiIgJSAoaW5mb1sxXSwgaW5mb1syXSwgaW5mb1szXSkpCit9CisKK1NES19QT1NUUFJPQ0VTU19DT01NQU5EX2FwcGVuZF90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAid3JpdGVfdGFyZ2V0X3Nka19leHRfbWFuaWZlc3Q7IHdyaXRlX2hvc3Rfc2RrX2V4dF9tYW5pZmVzdDsgIiAgICAKKwogU0RLX1RJVExFX3Rhc2stcG9wdWxhdGUtc2RrLWV4dCA9ICIke0BkLmdldFZhcignRElTVFJPX05BTUUnKSBvciBkLmdldFZhcignRElTVFJPJyl9IEV4dGVuc2libGUgU0RLIgogCiBkZWYgY2xlYW5fZXNka19idWlsZGRpcihkLCBzZGtiYXNlcGF0aCk6CkBAIC0xMTEsNyArMTQ0LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNka2Jhc2VwYXRoICsgJy9jb25mL2xvY2FsLmNvbmYnLCAnYScpIGFzIGY6CiAgICAgICAgICAgICAjIEZvcmNlIHRoZSB1c2Ugb2Ygc3N0YXRlIGZyb20gdGhlIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgZi53cml0ZSgnXG5TU1RBVEVfRElSX2ZvcmNldmFyaWFibGUgPSAiJXMiXG4nICUgZC5nZXRWYXIoJ1NTVEFURV9ESVInKSkKLSAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiZmlsZTovL3VuaXZlcnNhbC8oLiopIGZpbGU6Ly91bml2ZXJzYWwtNC45L1xcMSBmaWxlOi8vdW5pdmVyc2FsLTQuOS8oLiopIGZpbGU6Ly91bml2ZXJzYWwtNC44L1xcMSJcbicpCiAgICAgICAgICAgICAjIEVuc3VyZSBUTVBESVIgaXMgdGhlIGRlZmF1bHQgc28gdGhhdCBjbGVhbl9lc2RrX2J1aWxkZGlyKCkgY2FuIGRlbGV0ZSBpdAogICAgICAgICAgICAgZi53cml0ZSgnVE1QRElSX2ZvcmNldmFyaWFibGUgPSAiJHtUT1BESVJ9L3RtcCJcbicpCiAgICAgICAgICAgICBmLndyaXRlKCdUQ0xJQkNBUFBFTkRfZm9yY2V2YXJpYWJsZSA9ICIiXG4nKQpAQCAtMzE0LDEyICszNDcsMTggQEAKICAgICAgICAgICAgICMgdGhlIHNpZyBjb21wdXRlZCBmcm9tIHRoZSBtZXRhZGF0YS4KICAgICAgICAgICAgIGYud3JpdGUoJ1NJR0dFTl9MT0NLRURTSUdTX1RBU0tTSUdfQ0hFQ0sgPSAid2FybiJcblxuJykKIAorICAgICAgICAgICAgIyBXZSB3YW50IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgd2l0aG91dCBhIGZ1bGwgcmVwYXJzZQorICAgICAgICAgICAgZi53cml0ZSgnQkJfSEFTSENPTkZJR19XSElURUxJU1RfYXBwZW5kID0gIiBTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyJcblxuJykKKwogICAgICAgICAgICAgIyBTZXQgdXAgd2hpdGVsaXN0IGZvciBydW4gb24gaW5zdGFsbAogICAgICAgICAgICAgZi53cml0ZSgnQkJfU0VUU0NFTkVfRU5GT1JDRV9XSElURUxJU1QgPSAiJToqICo6ZG9fc2hhcmVkX3dvcmtkaXIgKjpkb19ybV93b3JrIHdpYy10b29sczoqICo6ZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QiXG5cbicpCiAKICAgICAgICAgICAgICMgSGlkZSB0aGUgY29uZmlnIGluZm9ybWF0aW9uIGZyb20gYml0YmFrZSBvdXRwdXQgKHNpbmNlIGl0J3MgZml4ZWQgd2l0aGluIHRoZSBTREspCiAgICAgICAgICAgICBmLndyaXRlKCdCVUlMRENGR19IRUFERVIgPSAiIlxuXG4nKQogCisgICAgICAgICAgICBmLndyaXRlKCcjIFByb3ZpZGUgYSBmbGFnIHRvIGluZGljYXRlIHdlIGFyZSBpbiB0aGUgRVhUX1NESyBDb250ZXh0XG4nKQorICAgICAgICAgICAgZi53cml0ZSgnV0lUSElOX0VYVF9TREsgPSAiMSJcblxuJykKKwogICAgICAgICAgICAgIyBNYXAgZ2NjLWRlcGVuZGVudCB1bmluYXRpdmUgc3N0YXRlIGNhY2hlIGZvciBpbnN0YWxsZXIgdXNhZ2UKICAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTICs9ICIgZmlsZTovL3VuaXZlcnNhbC8oLiopIGZpbGU6Ly91bml2ZXJzYWwtNC45L1xcMSBmaWxlOi8vdW5pdmVyc2FsLTQuOS8oLiopIGZpbGU6Ly91bml2ZXJzYWwtNC44L1xcMSJcblxuJykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwppbmRleCBlZjQ2OGIzLi44OTY2NWVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwpAQCAtOSw1ICs5LDggQEAKIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKKyMgc3VwcHJlc3MgaG9zdCB1c2VyJ3Mgc2l0ZS1wYWNrYWdlcyBkaXJzLgorZXhwb3J0IFBZVEhPTk5PVVNFUlNJVEUgPSAiMSIKKwogIyBhdXRvY29uZiBtYWNyb3Mgd2lsbCB1c2UgdGhlaXIgaW50ZXJuYWwgZGVmYXVsdCBwcmVmZXJlbmNlIG90aGVyd2lzZQogZXhwb3J0IFBZVEhPTgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKaW5kZXggNGUwMzgxYi4uNGNjOGIyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCkBAIC0xMiw1ICsxMiw4IEBACiBleHBvcnQgU1RBR0lOR19JTkNESVIKIGV4cG9ydCBTVEFHSU5HX0xJQkRJUgogCisjIHN1cHByZXNzIGhvc3QgdXNlcidzIHNpdGUtcGFja2FnZXMgZGlycy4KK2V4cG9ydCBQWVRIT05OT1VTRVJTSVRFID0gIjEiCisKICMgYXV0b2NvbmYgbWFjcm9zIHdpbGwgdXNlIHRoZWlyIGludGVybmFsIGRlZmF1bHQgcHJlZmVyZW5jZSBvdGhlcndpc2UKIGV4cG9ydCBQWVRIT04KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcwppbmRleCAzNDY4ZDFjLi4xNWE5ZTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCkBAIC04NSwxMCArODUsMTEgQEAKIAogICAgIHFlbXVib290ID0gIiVzLyVzLnFlbXVib290LmNvbmYiICUgKGQuZ2V0VmFyKCdJTUdERVBMT1lESVInKSwgZC5nZXRWYXIoJ0lNQUdFX05BTUUnKSkKICAgICBxZW11Ym9vdF9saW5rID0gIiVzLyVzLnFlbXVib290LmNvbmYiICUgKGQuZ2V0VmFyKCdJTUdERVBMT1lESVInKSwgZC5nZXRWYXIoJ0lNQUdFX0xJTktfTkFNRScpKQotICAgIHRvcGRpcj0iJXMvIiUoZC5nZXRWYXIoJ1RPUERJUicpKS5yZXBsYWNlKCIvLyIsIi8iKQorICAgIGZpbmFscGF0aCA9IGQuZ2V0VmFyKCJERVBMT1lfRElSX0lNQUdFIikKKyAgICB0b3BkaXIgPSBkLmdldFZhcignVE9QRElSJykKICAgICBjZiA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQogICAgIGNmLmFkZF9zZWN0aW9uKCdjb25maWdfYnNwJykKLSAgICBmb3IgayBpbiBxZW11Ym9vdF92YXJzKGQpOgorICAgIGZvciBrIGluIHNvcnRlZChxZW11Ym9vdF92YXJzKGQpKToKICAgICAgICAgIyBxZW11LWhlbHBlci1uYXRpdmUgc3lzcm9vdCBpcyBub3QgcmVtb3ZlZCBieSBybV93b3JrIGFuZAogICAgICAgICAjIGNvbnRhaW5zIGFsbCB0b29scyByZXF1aXJlZCBieSBydW5xZW11CiAgICAgICAgIGlmIGsgPT0gJ1NUQUdJTkdfQklORElSX05BVElWRSc6CkBAIC05OCw3ICs5OSw4IEBACiAgICAgICAgICAgICB2YWwgPSBkLmdldFZhcihrKQogICAgICAgICAjIHdlIG9ubHkgd2FudCB0byB3cml0ZSBvdXQgcmVsYXRpdmUgcGF0aHMgc28gdGhhdCB3ZSBjYW4gcmVsb2NhdGUgaW1hZ2VzCiAgICAgICAgICMgYW5kIHN0aWxsIHJ1biB0aGVtCi0gICAgICAgIHZhbD12YWwucmVwbGFjZSh0b3BkaXIsIiIpCisgICAgICAgIGlmIHZhbC5zdGFydHN3aXRoKHRvcGRpcik6CisgICAgICAgICAgICB2YWwgPSBvcy5wYXRoLnJlbHBhdGgodmFsLCBmaW5hbHBhdGgpCiAgICAgICAgIGNmLnNldCgnY29uZmlnX2JzcCcsIGssICclcycgJSB2YWwpCiAKICAgICAjIFFCX0RFRkFVTFRfS0VSTkVMJ3MgdmFsdWUgb2YgS0VSTkVMX0lNQUdFVFlQRSBpcyB0aGUgbmFtZSBvZiBhIHN5bWxpbmsKQEAgLTEwOCwxNCArMTEwLDE1IEBACiAgICAga2VybmVsID0gb3MucGF0aC5yZWFscGF0aChrZXJuZWxfbGluaykKICAgICAjIHdlIG9ubHkgd2FudCB0byB3cml0ZSBvdXQgcmVsYXRpdmUgcGF0aHMgc28gdGhhdCB3ZSBjYW4gcmVsb2NhdGUgaW1hZ2VzCiAgICAgIyBhbmQgc3RpbGwgcnVuIHRoZW0KLSAgICBrZXJuZWw9a2VybmVsLnJlcGxhY2UodG9wZGlyLCIiKQorICAgIGtlcm5lbCA9IG9zLnBhdGgucmVscGF0aChrZXJuZWwsIGZpbmFscGF0aCkKICAgICBjZi5zZXQoJ2NvbmZpZ19ic3AnLCAnUUJfREVGQVVMVF9LRVJORUwnLCBrZXJuZWwpCiAKICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHFlbXVib290KSkKICAgICB3aXRoIG9wZW4ocWVtdWJvb3QsICd3JykgYXMgZjoKICAgICAgICAgY2Yud3JpdGUoZikKIAotICAgIGlmIG9zLnBhdGgubGV4aXN0cyhxZW11Ym9vdF9saW5rKToKLSAgICAgICBvcy5yZW1vdmUocWVtdWJvb3RfbGluaykKLSAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUocWVtdWJvb3QpLCBxZW11Ym9vdF9saW5rKQorICAgIGlmIHFlbXVib290X2xpbmsgIT0gcWVtdWJvb3Q6CisgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhxZW11Ym9vdF9saW5rKToKKyAgICAgICAgICAgb3MucmVtb3ZlKHFlbXVib290X2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShxZW11Ym9vdCksIHFlbXVib290X2xpbmspCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcG9ydC1lcnJvci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcwppbmRleCBkNmZkZDM2Li4xYzU1YWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcG9ydC1lcnJvci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwb3J0LWVycm9yLmJiY2xhc3MKQEAgLTI5LDYgKzI5LDEzIEBACiAgICAgICAgIGltcG9ydCBqc29uCiAgICAgICAgIGltcG9ydCBjb2RlY3MKIAorICAgICAgICBkZWYgbmF0aXZlbHNiKCk6CisgICAgICAgICAgICBuYXRpdmVsc2JzdHIgPSBlLmRhdGEuZ2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciKQorICAgICAgICAgICAgIyBwcm92aWRlIGEgYml0IG1vcmUgaG9zdCBpbmZvIGluIGNhc2Ugb2YgdW5pbmF0aXZlIGJ1aWxkCisgICAgICAgICAgICBpZiBlLmRhdGEuZ2V0VmFyKCdVTklOQVRJVkVfVVJMJykgIT0gJ3Vuc2V0JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gJy8nLmpvaW4oW25hdGl2ZWxzYnN0ciwgbHNiX2Rpc3Ryb19pZGVudGlmaWVyKGUuZGF0YSldKQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZWxzYnN0cgorCiAgICAgICAgIGxvZ3BhdGggPSBlLmRhdGEuZ2V0VmFyKCdFUlJfUkVQT1JUX0RJUicpCiAgICAgICAgIGRhdGFmaWxlID0gb3MucGF0aC5qb2luKGxvZ3BhdGgsICJlcnJvci1yZXBvcnQudHh0IikKIApAQCAtMzgsNyArNDUsNyBAQAogICAgICAgICAgICAgbWFjaGluZSA9IGUuZGF0YS5nZXRWYXIoIk1BQ0hJTkUiKQogICAgICAgICAgICAgZGF0YVsnbWFjaGluZSddID0gbWFjaGluZQogICAgICAgICAgICAgZGF0YVsnYnVpbGRfc3lzJ10gPSBlLmRhdGEuZ2V0VmFyKCJCVUlMRF9TWVMiKQotICAgICAgICAgICAgZGF0YVsnbmF0aXZlbHNiJ10gPSBlLmRhdGEuZ2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciKQorICAgICAgICAgICAgZGF0YVsnbmF0aXZlbHNiJ10gPSBuYXRpdmVsc2IoKQogICAgICAgICAgICAgZGF0YVsnZGlzdHJvJ10gPSBlLmRhdGEuZ2V0VmFyKCJESVNUUk8iKQogICAgICAgICAgICAgZGF0YVsndGFyZ2V0X3N5cyddID0gZS5kYXRhLmdldFZhcigiVEFSR0VUX1NZUyIpCiAgICAgICAgICAgICBkYXRhWydmYWlsdXJlcyddID0gW10KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKaW5kZXggYmFkZWFlYi4uMzFkOTllNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKQEAgLTM1LDIyICszNSwxMiBAQAogICAgICAgICBmaQogICAgIGRvbmUKIAotICAgIGNkICR7V09SS0RJUn0KLSAgICBmb3IgZGlyIGluICoKLSAgICBkbwotICAgICAgICAjIFJldGFpbiBvbmx5IGxvZ3MgYW5kIG90aGVyIGZpbGVzIGluIHRlbXAsIHNhZmVseSBpZ25vcmUKLSAgICAgICAgIyBmYWlsdXJlcyBvZiByZW1vdmluZyBwc2V1ZG8gZm9sZXJzIG9uIE5GUzIvMyBzZXJ2ZXIuCi0gICAgICAgIGlmIFsgJGRpciA9ICdwc2V1ZG8nIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1yZiAkZGlyIDI+IC9kZXYvbnVsbCB8fCB0cnVlCi0gICAgICAgIGVsaWYgISBlY2hvICcke1JNX1dPUktfRVhDTFVERV9JVEVNU30nIHwgZ3JlcCAtcSAtdyAiJGRpciI7IHRoZW4KLSAgICAgICAgICAgIHJtIC1yZiAkZGlyCi0gICAgICAgIGZpCi0gICAgZG9uZQotCiAgICAgIyBOZWVkIHRvIGFkZCBwc2V1ZG8gYmFjayBvciBzdWJzcWV1ZW50IHdvcmsgaW4gdGhpcyB3b3JrZGlyCiAgICAgIyBtaWdodCBmYWlsIHNpbmNlIHNldHNjZW5lIG1heSBub3QgcmVydW4gdG8gcmVjcmVhdGUgaXQKICAgICBta2RpciAtcCAke1dPUktESVJ9L3BzZXVkby8KIAorICAgIGV4Y2x1ZGVzPScke1JNX1dPUktfRVhDTFVERV9JVEVNU30nCisKICAgICAjIENoYW5nZSBub3JtYWwgc3RhbXBzIGludG8gc2V0c2NlbmUgc3RhbXBzIGFzIHRoZXkgYmV0dGVyIHJlZmxlY3QgdGhlCiAgICAgIyBmYWN0IFdPUktESVIgaXMgbm93IGVtcHR5CiAgICAgIyBBbHNvIGxlYXZlIG5vZXhlYyBzdGFtcHMgc2luY2Ugc2V0c2NlbmUgc3RhbXBzIGRvbid0IGNvdmVyIHRoZW0KQEAgLTcxLDcgKzYxLDEyIEBACiAgICAgICAgICAgICAgICAgaT1kdW1teQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpkb19yb290ZnMqfCpkb19pbWFnZSp8KmRvX2Jvb3RpbWcqfCpkb19ib290ZGlyZWN0ZGlzayp8KmRvX3ZtaW1nKnwqZG9fd3JpdGVfcWVtdWJvb3RfY29uZiopCisgICAgICAgICAgICAqZG9faW1hZ2VfY29tcGxldGUqKQorICAgICAgICAgICAgICAgIG12ICRpIGBlY2hvICRpIHwgc2VkIC1lICJzI2RvX2ltYWdlX2NvbXBsZXRlI2RvX2ltYWdlX2NvbXBsZXRlX3NldHNjZW5lIyJgCisgICAgICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICpkb19yb290ZnMqfCpkb19pbWFnZSp8KmRvX2Jvb3RpbWcqfCpkb193cml0ZV9xZW11Ym9vdF9jb25mKikKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICA7OwpAQCAtNzksNiArNzQsMTIgQEAKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKmRvX2FkZHRvX3JlY2lwZV9zeXNyb290KikKKyAgICAgICAgICAgICAgICAjIFByZXNlcnZlIHJlY2lwZS1zeXNyb290LW5hdGl2ZSBpZiBkb19hZGR0b19yZWNpcGVfc3lzcm9vdCBoYXMgYmVlbiB1c2VkCisgICAgICAgICAgICAgICAgZXhjbHVkZXM9IiRleGNsdWRlcyByZWNpcGUtc3lzcm9vdC1uYXRpdmUiCisgICAgICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICMgV2UgcmVtb3ZlIGRvX3BhY2thZ2UgZW50aXJlbHksIGluY2x1ZGluZyBhbnkKICAgICAgICAgICAgICMgc3N0YXRlIHZlcnNpb24gc2luY2Ugb3RoZXJ3aXNlIHdlJ2QgbmVlZCB0byBsZWF2ZSAncGxhaW5kaXJzJyBhcm91bmQKICAgICAgICAgICAgICMgc3VjaCBhcyAncGFja2FnZXMnIGFuZCAncGFja2FnZXMtc3BsaXQnIGFuZCB0aGVzZSBjYW4gYmUgbGFyZ2UuIE5vIGVuZApAQCAtMTAxLDYgKzEwMiwxOCBAQAogICAgICAgICBkb25lCiAgICAgICAgIHJtIC1mICRpCiAgICAgZG9uZQorCisgICAgY2QgJHtXT1JLRElSfQorICAgIGZvciBkaXIgaW4gKgorICAgIGRvCisgICAgICAgICMgUmV0YWluIG9ubHkgbG9ncyBhbmQgb3RoZXIgZmlsZXMgaW4gdGVtcCwgc2FmZWx5IGlnbm9yZQorICAgICAgICAjIGZhaWx1cmVzIG9mIHJlbW92aW5nIHBzZXVkbyBmb2xlcnMgb24gTkZTMi8zIHNlcnZlci4KKyAgICAgICAgaWYgWyAkZGlyID0gJ3BzZXVkbycgXTsgdGhlbgorICAgICAgICAgICAgcm0gLXJmICRkaXIgMj4gL2Rldi9udWxsIHx8IHRydWUKKyAgICAgICAgZWxpZiAhIGVjaG8gIiRleGNsdWRlcyIgfCBncmVwIC1xIC13ICIkZGlyIjsgdGhlbgorICAgICAgICAgICAgcm0gLXJmICRkaXIKKyAgICAgICAgZmkKKyAgICBkb25lCiB9CiBkb19ybV93b3JrX2FsbCAoKSB7CiAgICAgOgpAQCAtMTUzLDYgKzE2NiwxMCBAQAogICAgIGRlcHMgPSBzZXQoYmIuYnVpbGQucHJlY2VlZHRhc2soJ2RvX2J1aWxkJywgVHJ1ZSwgZCkpCiAgICAgZGVwcy5kaWZmZXJlbmNlX3VwZGF0ZSgoJ2RvX2J1aWxkJywgJ2RvX3JtX3dvcmtfYWxsJykpCiAKKyAgICAjIGRlcHMgY2FuIGJlIGVtcHR5IGlmIGRvX2J1aWxkIGRvZXNuJ3QgZXhpc3QsIGUuZy4gKi1pbml0YWwgcmVjaXBlcworICAgIGlmIG5vdCBkZXBzOgorICAgICAgICBkZXBzID0gWyJkb19wb3B1bGF0ZV9zeXNyb290IiwgImRvX3BvcHVsYXRlX2xpYyJdCisKICAgICBpZiBwbiBpbiBleGNsdWRlczoKICAgICAgICAgZC5kZWxWYXJGbGFnKCdybV93b3JrX3Jvb3RmcycsICdjbGVhbmRpcnMnKQogICAgICAgICBkLmRlbFZhckZsYWcoJ3JtX3dvcmtfcG9wdWxhdGVzZGsnLCAnY2xlYW5kaXJzJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKaW5kZXggYzE5ZmY4Ny4uYTRlNjI3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKQEAgLTE0LDYgKzE0LDE0IEBACiAjIFR3ZWFrIHRoZSBtb3VudCBvcHRpb25zIGZvciByb290ZnMgaW4gL2V0Yy9mc3RhYiBpZiByZWFkLW9ubHktcm9vdGZzIGlzIGVuYWJsZWQKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicmVhZC1vbmx5LXJvb3RmcyIsICJyZWFkX29ubHlfcm9vdGZzX2hvb2s7ICIsICIiLGQpfScKIAorIyBXZSBhbHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIHRoZSBrZXJuZWwgYm9vdCBwYXJhbWV0ZXJzLAorIyBvdGhlcndpc2Uga2VybmVsIG9yIGluaXRyYW1mcyBlbmQgdXAgbW91bnRpbmcgdGhlIHJvb3RmcyByZWFkL3dyaXRlCisjICh0aGUgZGVmYXVsdCkgaWYgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHN0b3JhZ2UuCisjCisjIFdlIGRvIHRoaXMgd2l0aCBfYXBwZW5kIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWUgbWlnaHQgZ2V0IHNldCBsYXRlciB3aXRoID89CisjIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRpc2FibGUgc3VjaCBhIGRlZmF1bHQgdGhhdCBieSBzZXR0aW5nIGEgdmFsdWUgaGVyZS4KK0FQUEVORF9hcHBlbmQgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZFQVRVUkVTIiwgInJlYWQtb25seS1yb290ZnMiLCAiIHJvIiwgIiIsIGQpfScKKwogIyBHZW5lcmF0ZXMgdGVzdCBkYXRhIGZpbGUgd2l0aCBkYXRhIHN0b3JlIHZhcmlhYmxlcyBleHBhbmRlZCBpbiBqc29uIGZvcm1hdAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gIndyaXRlX2ltYWdlX3Rlc3RfZGF0YSA7ICIKIApAQCAtODQsNyArOTIsOSBAQAogIwogcmVhZF9vbmx5X3Jvb3Rmc19ob29rICgpIHsKIAkjIFR3ZWFrIHRoZSBtb3VudCBvcHRpb24gYW5kIGZzX3Bhc3NubyBmb3Igcm9vdGZzIGluIGZzdGFiCi0Jc2VkIC1pIC1lICcvXlsjWzpzcGFjZTpdXSpcL2Rldlwvcm9vdC97cy9kZWZhdWx0cy9yby87cy9cKFtbOnNwYWNlOl1dKltbOmRpZ2l0Ol1dXClcKFtbOnNwYWNlOl1dKlwpW1s6ZGlnaXQ6XV0kL1wxXDIwL30nICR7SU1BR0VfUk9PVEZTfS9ldGMvZnN0YWIKKwlpZiBbIC1mICR7SU1BR0VfUk9PVEZTfS9ldGMvZnN0YWIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJy9eWyNbOnNwYWNlOl1dKlwvZGV2XC9yb290L3tzL2RlZmF1bHRzL3JvLztzL1woW1s6c3BhY2U6XV0qW1s6ZGlnaXQ6XV1cKVwoW1s6c3BhY2U6XV0qXClbWzpkaWdpdDpdXSQvXDFcMjAvfScgJHtJTUFHRV9ST09URlN9L2V0Yy9mc3RhYgorCWZpCiAKIAkjIElmIHdlJ3JlIHVzaW5nIG9wZW5zc2ggYW5kIHRoZSAvZXRjL3NzaCBkaXJlY3RvcnkgaGFzIG5vIHByZS1nZW5lcmF0ZWQga2V5cywKIAkjIHdlIHNob3VsZCBjb25maWd1cmUgb3BlbnNzaCB0byB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAvZXRjL3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQpAQCAtMzE2LDUgKzMyNiw1IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgJ3Vuc2F0aXNmaWVkIHJlY29tbWVuZGF0aW9uIGZvcicgaW4gbGluZToKLSAgICAgICAgICAgICAgICBiYi53YXJuKCdbbG9nX2NoZWNrXSAlczogJXMnICUgKGQuZ2V0VmFyKCdQTicsIFRydWUpLCBsaW5lKSkKKyAgICAgICAgICAgICAgICBiYi53YXJuKCdbbG9nX2NoZWNrXSAlczogJXMnICUgKGQuZ2V0VmFyKCdQTicpLCBsaW5lKSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MKaW5kZXggMjYyZTNkNS4uOWVlMWRmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MKQEAgLTMzLDYgKzMzLDMgQEAKICAgICBlbGlmIGRhcmNoID09ICJhcm0iOgogICAgICAgICAgZC5zZXRWYXIoJ0RFQl9TREtfQVJDSCcsICdhcm1lbCcpCiB9Ci0KLSMgVGhpcyB3aWxsIG9mIGNvdXJzZSBvbmx5IHdvcmsgYWZ0ZXIgcm9vdGZzX2RlYl9kb19yb290ZnMgb3IgcG9wdWxhdGVfc2RrX2RlYiBoYXMgYmVlbiBjYWxsZWQKLURQS0dfUVVFUllfQ09NTUFORCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vZHBrZy1xdWVyeSAtLWFkbWluZGlyPSRJTlNUQUxMX1JPT1RGU19ERUIvdmFyL2xpYi9kcGtnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNkZWJ1Z2ZpbGVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc2RlYnVnZmlsZXMuYmJjbGFzcwppbmRleCBhNTU4ODcxLi5lMmJhNGUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc2RlYnVnZmlsZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc2RlYnVnZmlsZXMuYmJjbGFzcwpAQCAtMTUsNiArMTUsMTAgQEAKICMgICAgUk9PVEZTX0RFQlVHX0ZJTEVTICs9ICIke1RPUERJUn0vY29uZi9kcm9wYmVhcl9yc2FfaG9zdF9rZXkgJHtJTUFHRV9ST09URlN9L2V0Yy9kcm9wYmVhci9kcm9wYmVhcl9yc2FfaG9zdF9rZXkgOyIKICMgMi4gQm9vdCB0aGUgaW1hZ2Ugb25jZSwgY29weSB0aGUgZHJvcGJlYXJfcnNhX2hvc3Rfa2V5IGZyb20KICMgICAgdGhlIGRldmljZSBpbnRvIHlvdXIgYnVpbGQgY29uZiBkaXJlY3RvcnkuCisjIDMuIEEgb3B0aW9uYWwgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHNldCBmaWxlIG1vZGUKKyMgICAgb2YgdGhlIGNvcGllZCB0YXJnZXQsIGZvciBpbnN0YW5jZToKKyMgICAgUk9PVEZTX0RFQlVHX0ZJTEVTICs9ICIke1RPUERJUn0vY29uZi9kcm9wYmVhcl9yc2FfaG9zdF9rZXkgJHtJTUFHRV9ST09URlN9L2V0Yy9kcm9wYmVhci9kcm9wYmVhcl9yc2FfaG9zdF9rZXkgMDYwMDsiCisjICAgIGluIGNhc2UgdGhleSBtaWdodCBiZSByZXF1aXJlZCB0byBoYXZlIGEgc3BlY2lmaWMgbW9kZS4gKFNob3VuZG4ndCBiZSB0b28gb3BlbiwgZm9yIGV4YW1wbGUpCiAjCiAjIERvIG5vdCB1c2UgZm9yIHByb2R1Y3Rpb24gaW1hZ2VzISBJdCBieXBhc3NlcyBzZXZlcmFsCiAjIGNvcmUgYnVpbGQgbWVjaGFuaXNtcyAodXBkYXRpbmcgdGhlIGltYWdlIHdoZW4gb25lCkBAIC0yNywxMCArMzEsMTEgQEAKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICJyb290ZnNfZGVidWdfZmlsZXMgOyIKIHJvb3Rmc19kZWJ1Z19maWxlcyAoKSB7CiAgICAjIS9iaW4vc2ggLWUKLSAgIGVjaG8gIiR7Uk9PVEZTX0RFQlVHX0ZJTEVTfSIgfCBzZWQgLWUgJ3MvOy9cbi9nJyB8IHdoaWxlIHJlYWQgc291cmNlIHRhcmdldDsgZG8KKyAgIGVjaG8gIiR7Uk9PVEZTX0RFQlVHX0ZJTEVTfSIgfCBzZWQgLWUgJ3MvOy9cbi9nJyB8IHdoaWxlIHJlYWQgc291cmNlIHRhcmdldCBtb2RlOyBkbwogICAgICAgaWYgWyAtZSAiJHNvdXJjZSIgXTsgdGhlbgogICAgICAgICAgbWtkaXIgLXAgJChkaXJuYW1lICR0YXJnZXQpCiAgICAgICAgICBjcCAtYSAkc291cmNlICR0YXJnZXQKKyAgICAgICAgIFsgLW4gIiRtb2RlIiBdICYmIGNobW9kICRtb2RlICR0YXJnZXQKICAgICAgIGZpCiAgICBkb25lCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcwppbmRleCBlODA2NGFjLi4xZmViNzk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKQEAgLTM1MCw2ICszNTAsMTQgQEAKICAgICAgICAgcmV0dXJuICJUaGUgJXM6ICVzIGNhbid0IGJlIGxvY2F0ZWQgb24gbmZzLlxuIiAlIChuYW1lLCBwYXRoKQogICAgIHJldHVybiAiIgogCisjIENoZWNrIHRoYXQgdGhlIHBhdGggaXMgb24gYSBjYXNlLXNlbnNpdGl2ZSBmaWxlIHN5c3RlbQorZGVmIGNoZWNrX2Nhc2Vfc2Vuc2l0aXZlKHBhdGgsIG5hbWUpOgorICAgIGltcG9ydCB0ZW1wZmlsZQorICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHByZWZpeD0nVG1QJywgZGlyPXBhdGgpIGFzIHRtcF9maWxlOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0bXBfZmlsZS5uYW1lLmxvd2VyKCkpOgorICAgICAgICAgICAgcmV0dXJuICJUaGUgJXMgKCVzKSBjYW4ndCBiZSBvbiBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uXG4iICUgKG5hbWUsIHBhdGgpCisgICAgICAgIHJldHVybiAiIgorCiAjIENoZWNrIHRoYXQgcGF0aCBpc24ndCBhIGJyb2tlbiBzeW1saW5rCiBkZWYgY2hlY2tfc3ltbGluayhsbmssIGRhdGEpOgogICAgIGlmIG9zLnBhdGguaXNsaW5rKGxuaykgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhsbmspOgpAQCAtNDQ4LDQ1ICs0NTYsNiBAQAogCiAgICAgcmV0dXJuIG1lc3NhZ2VzCiAKLSMgQ2hlY2tzIGlmIG5lY2Vzc2FyeSB0byBhZGQgb3B0aW9uIG1hcmNoIHRvIGhvc3QgZ2NjCi1kZWYgY2hlY2tfZ2NjX21hcmNoKHNhbml0eV9kYXRhKToKLSAgICByZXN1bHQgPSBUcnVlCi0gICAgbWVzc2FnZSA9ICIiCi0KLSAgICAjIENoZWNrIGlmIC1tYXJjaCBub3QgaW4gQlVJTERfQ0ZMQUdTCi0gICAgaWYgc2FuaXR5X2RhdGEuZ2V0VmFyKCJCVUlMRF9DRkxBR1MiKS5maW5kKCItbWFyY2giKSA8IDA6Ci0gICAgICAgIHJlc3VsdCA9IEZhbHNlCi0KLSAgICAgICAgIyBDb25zdHJ1Y3QgYSB0ZXN0IGZpbGUKLSAgICAgICAgZiA9IG9wZW4oImdjY190ZXN0LmMiLCAidyIpCi0gICAgICAgIGYud3JpdGUoImludCBtYWluICgpeyB2b2xhdGlsZSBpbnQgYXRvbWljID0gMjsgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAoJmF0b21pYywgMiwgMyk7IHJldHVybiAwOyB9XG4iKQotICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICAjIENoZWNrIGlmIEdDQyBjb3VsZCB3b3JrIHdpdGhvdXQgbWFyY2gKLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIHN0YXR1cyxyZXMgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoc2FuaXR5X2RhdGEuZXhwYW5kKCIke0JVSUxEX0NDfSBnY2NfdGVzdC5jIC1vIGdjY190ZXN0IikpCi0gICAgICAgICAgICBpZiBzdGF0dXMgPT0gMDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlOwotCi0gICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICBzdGF0dXMscmVzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KHNhbml0eV9kYXRhLmV4cGFuZCgiJHtCVUlMRF9DQ30gLW1hcmNoPW5hdGl2ZSBnY2NfdGVzdC5jIC1vIGdjY190ZXN0IikpCi0gICAgICAgICAgICBpZiBzdGF0dXMgPT0gMDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkJVSUxEX0NGTEFHU19hcHBlbmQgPSBcIiAtbWFyY2g9bmF0aXZlXCIiCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZTsKLQotICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgYnVpbGRfYXJjaCA9IHNhbml0eV9kYXRhLmdldFZhcignQlVJTERfQVJDSCcpCi0gICAgICAgICAgICBzdGF0dXMscmVzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KHNhbml0eV9kYXRhLmV4cGFuZCgiJHtCVUlMRF9DQ30gLW1hcmNoPSVzIGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiICUgYnVpbGRfYXJjaCkpCi0gICAgICAgICAgICBpZiBzdGF0dXMgPT0gMDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkJVSUxEX0NGTEFHU19hcHBlbmQgPSBcIiAtbWFyY2g9JXNcIiIgJSBidWlsZF9hcmNoCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZTsKLQotICAgICAgICBvcy5yZW1vdmUoImdjY190ZXN0LmMiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiZ2NjX3Rlc3QiKToKLSAgICAgICAgICAgIG9zLnJlbW92ZSgiZ2NjX3Rlc3QiKQotCi0gICAgcmV0dXJuIChyZXN1bHQsIG1lc3NhZ2UpCi0KICMgVW5wYXRjaGVkIHZlcnNpb25zIG9mIG1ha2UgMy44MiBhcmUga25vd24gdG8gYmUgYnJva2VuLiAgU2VlIEdOVSBTYXZhbm5haCBCdWcgMzA2MTIuCiAjIFVzZSBhIG1vZGlmaWVkIHJlcHJvZHVjZXIgZnJvbSBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8zMDYxMiB0byB2YWxpZGF0ZS4KIGRlZiBjaGVja19tYWtlX3ZlcnNpb24oc2FuaXR5X2RhdGEpOgpAQCAtNjEyLDcgKzU4MSw3IEBACiAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgIHJldHVybiB0ZXN0bXNnCi0gICAgICAgCisKIGRlZiBjaGVja19zYW5pdHlfdmVyc2lvbl9jaGFuZ2Uoc3RhdHVzLCBkKToKICAgICAjIFNhbml0eSBjaGVja3MgdG8gYmUgZG9uZSB3aGVuIFNBTklUWV9WRVJTSU9OIG9yIE5BVElWRUxTQlNUUklORyBjaGFuZ2VzCiAgICAgIyBJbiBvdGhlciB3b3JkcywgdGhlc2UgdGVzdHMgcnVuIG9uY2UgaW4gYSBnaXZlbiBidWlsZCBkaXJlY3RvcnkgYW5kIHRoZW4gCkBAIC02NTcsMjMgKzYyNiw2IEBACiAgICAgaWYgImRpZmZzdGF0LW5hdGl2ZSIgbm90IGluIGFzc3VtZV9wcm92aWRlZDoKICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgnUGxlYXNlIHVzZSBBU1NVTUVfUFJPVklERUQgKz0sIG5vdCBBU1NVTUVfUFJPVklERUQgPSBpbiB5b3VyIGxvY2FsLmNvbmZcbicpCiAKLSAgICBpZiAicWVtdS1uYXRpdmUiIGluIGFzc3VtZV9wcm92aWRlZDoKLSAgICAgICAgaWYgbm90IGNoZWNrX2FwcF9leGlzdHMoInFlbXUtYXJtIiwgZCk6Ci0gICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJxZW11LW5hdGl2ZSB3YXMgaW4gQVNTVU1FX1BST1ZJREVEIGJ1dCB0aGUgUUVNVSBiaW5hcmllcyAocWVtdS1hcm0pIGNhbid0IGJlIGZvdW5kIGluIFBBVEgiKQotCi0gICAgaWYgImxpYnNkbC1uYXRpdmUiIGluIGFzc3VtZV9wcm92aWRlZDoKLSAgICAgICAgaWYgbm90IGNoZWNrX2FwcF9leGlzdHMoInNkbC1jb25maWciLCBkKToKLSAgICAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoImxpYnNkbC1uYXRpdmUgaXMgc2V0IHRvIGJlIEFTU1VNRV9QUk9WSURFRCBidXQgc2RsLWNvbmZpZyBjYW4ndCBiZSBmb3VuZCBpbiBQQVRILiBQbGVhc2UgZWl0aGVyIGluc3RhbGwgaXQsIG9yIGNvbmZpZ3VyZSBxZW11IG5vdCB0byByZXF1aXJlIHNkbC4iKQotCi0gICAgKHJlc3VsdCwgbWVzc2FnZSkgPSBjaGVja19nY2NfbWFyY2goZCkKLSAgICBpZiByZXN1bHQgYW5kIG1lc3NhZ2U6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIllvdXIgZ2NjIHZlcnNpb24gaXMgb2xkZXIgdGhhbiA0LjUsIHBsZWFzZSBhZGQgdGhlIGZvbGxvd2luZyBwYXJhbSB0byBsb2NhbC5jb25mXG4gXAotICAgICAgICAlc1xuIiAlIG1lc3NhZ2UpCi0gICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiWW91ciBnY2MgdmVyc2lvbiBpcyBvbGRlciB0aGFuIDQuNSBvciBpcyBub3Qgd29ya2luZyBwcm9wZXJseS4gIFBsZWFzZSB2ZXJpZnkgeW91IGNhbiBidWlsZCIpCi0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIiBhbmQgbGluayBzb21ldGhpbmcgdGhhdCB1c2VzIGF0b21pYyBvcGVyYXRpb25zLCBzdWNoIGFzOiBcbiIpCi0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIiAgICAgICAgX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcCAoJmF0b21pYywgMiwgMyk7XG4iKQotCiAgICAgIyBDaGVjayB0aGF0IFRNUERJUiBpc24ndCBvbiBhIGZpbGVzeXN0ZW0gd2l0aCBsaW1pdGVkIGZpbGVuYW1lIGxlbmd0aCAoZWcuIGVDcnlwdEZTKQogICAgIHRtcGRpciA9IGQuZ2V0VmFyKCdUTVBESVInKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfY3JlYXRlX2xvbmdfZmlsZW5hbWUodG1wZGlyLCAiVE1QRElSIikpCkBAIC03MjgsNiArNjgwLDEwIEBACiAgICAgIyBDaGVjayB0aGF0IFRNUERJUiBpc24ndCBsb2NhdGVkIG9uIG5mcwogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfbm90X25mcyh0bXBkaXIsICJUTVBESVIiKSkKIAorICAgICMgQ2hlY2sgZm9yIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zIChzdWNoIGFzIExpbnV4IGluIERvY2tlciBvbgorICAgICMgbWFjT1Mgd2l0aCBkZWZhdWx0IEhGUysgZmlsZSBzeXN0ZW0pCisgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19jYXNlX3NlbnNpdGl2ZSh0bXBkaXIsICJUTVBESVIiKSkKKwogZGVmIHNhbml0eV9jaGVja19sb2NhbGUoZCk6CiAgICAgIiIiCiAgICAgQ3VycmVudGx5IGJpdGJha2Ugc3dpdGNoZXMgbG9jYWxlIHRvIGVuX1VTLlVURi04IHNvIGNoZWNrIHRoYXQgdGhpcyBsb2NhbGUgYWN0dWFsbHkgZXhpc3RzLgpAQCAtNzQ2LDEwICs3MDIsMTAgQEAKICAgICBpZiAwID09IG9zLmdldHVpZCgpOgogICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIkRvIG5vdCB1c2UgQml0YmFrZSBhcyByb290LiIsIGQpCiAKLSAgICAjIENoZWNrIHRoZSBQeXRob24gdmVyc2lvbiwgd2Ugbm93IGhhdmUgYSBtaW5pbXVtIG9mIFB5dGhvbiAyLjcuMworICAgICMgQ2hlY2sgdGhlIFB5dGhvbiB2ZXJzaW9uLCB3ZSBub3cgaGF2ZSBhIG1pbmltdW0gb2YgUHl0aG9uIDMuNAogICAgIGltcG9ydCBzeXMKLSAgICBpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDIwNzAzRjA6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1RoZSBzeXN0ZW0gcmVxdWlyZXMgYXQgbGVhc3QgUHl0aG9uIDIuNy4zIHRvIHJ1bi4gUGxlYXNlIHVwZGF0ZSB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci5cbicpCisgICAgaWYgc3lzLmhleHZlcnNpb24gPCAweDAzMDQwMDAwOgorICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCdUaGUgc3lzdGVtIHJlcXVpcmVzIGF0IGxlYXN0IFB5dGhvbiAzLjQgdG8gcnVuLiBQbGVhc2UgdXBkYXRlIHlvdXIgUHl0aG9uIGludGVycHJldGVyLlxuJykKIAogICAgICMgQ2hlY2sgdGhlIGJpdGJha2UgdmVyc2lvbiBtZWV0cyBtaW5pbXVtIHJlcXVpcmVtZW50cwogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgpAQCAtNzcwLDYgKzcyNiwxMSBAQAogICAgICAgICBpZiBub3QgKCBjaGVja19jb25mX2V4aXN0cygiY29uZi9kaXN0cm8vJHtESVNUUk99LmNvbmYiLCBkKSBvciBjaGVja19jb25mX2V4aXN0cygiY29uZi9kaXN0cm8vaW5jbHVkZS8ke0RJU1RST30uaW5jIiwgZCkgKToKICAgICAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIkRJU1RSTyAnJXMnIG5vdCBmb3VuZC4gUGxlYXNlIHNldCBhIHZhbGlkIERJU1RSTyBpbiB5b3VyIGxvY2FsLmNvbmZcbiIgJSBkLmdldFZhcigiRElTVFJPIikpCiAKKyAgICAjIENoZWNrIHRoYXQgdGhlc2UgdmFyaWFibGVzIGRvbid0IHVzZSB0aWxkZS1leHBhbnNpb24gYXMgd2UgZG9uJ3QgZG8gdGhhdAorICAgIGZvciB2IGluICgiVE1QRElSIiwgIkRMX0RJUiIsICJTU1RBVEVfRElSIik6CisgICAgICAgIGlmIGQuZ2V0VmFyKHYpLnN0YXJ0c3dpdGgoIn4iKToKKyAgICAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIiVzIHVzZXMgfiBidXQgQml0YmFrZSB3aWxsIG5vdCBleHBhbmQgdGhpcywgdXNlIGFuIGFic29sdXRlIHBhdGggb3IgdmFyaWFibGVzLiIgJSB2KQorCiAgICAgIyBDaGVjayB0aGF0IERMX0RJUiBpcyBzZXQsIGV4aXN0cyBhbmQgaXMgd3JpdGFibGUuIEluIHRoZW9yeSwgd2Ugc2hvdWxkIG5ldmVyIGV2ZW4gaGl0IHRoZSBjaGVjayBpZiBETF9ESVIgaXNuJ3QgCiAgICAgIyBzZXQsIHNpbmNlIHNvIG11Y2ggcmVsaWVzIG9uIGl0IGJlaW5nIHNldC4KICAgICBkbGRpciA9IGQuZ2V0VmFyKCdETF9ESVInKQpAQCAtODM5LDcgKzgwMCw3IEBACiAKICAgICAgICAgIyBTcGxpdCBpbnRvIHBhaXJzCiAgICAgICAgIGlmIGxlbihtaXJyb3JzKSAlIDIgIT0gMDoKLSAgICAgICAgICAgIGJiLndhcm4oJ0ludmFsaWQgbWlycm9yIHZhcmlhYmxlIHZhbHVlIGZvciAlczogJXMsIHNob3VsZCBjb250YWluIHBhaXJlZCBtZW1iZXJzLicgJSAobWlycm9yX3ZhciwgbWlycm9ycy5zdHJpcCgpKSkKKyAgICAgICAgICAgIGJiLndhcm4oJ0ludmFsaWQgbWlycm9yIHZhcmlhYmxlIHZhbHVlIGZvciAlczogJXMsIHNob3VsZCBjb250YWluIHBhaXJlZCBtZW1iZXJzLicgJSAobWlycm9yX3Zhciwgc3RyKG1pcnJvcnMpKSkKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIG1pcnJvcnMgPSBsaXN0KHppcCgqW2l0ZXIobWlycm9ycyldKjIpKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKaW5kZXggNzFkZjAzYi4uZjAzYzQ4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcwpAQCAtMjgsNiArMjgsOSBAQAogUEFDS0FHRV9GRUVEX0dQR19CQUNLRU5EID89ICdsb2NhbCcKIFBBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEUgPz0gJ0FTQycKIAorIyBNYWtlIGZlZWQgc2lnbmluZyBrZXkgdG8gYmUgcHJlc2VudCBpbiByb290ZnMKK0ZFQVRVUkVfUEFDS0FHRVNfcGFja2FnZS1tYW5hZ2VtZW50X2FwcGVuZCA9ICIgc2lnbmluZy1rZXlzLXBhY2thZ2VmZWVkIgorCiBweXRob24gKCkgewogICAgICMgQ2hlY2sgc2FuaXR5IG9mIGNvbmZpZ3VyYXRpb24KICAgICBmb3IgdmFyIGluICgnUEFDS0FHRV9GRUVEX0dQR19OQU1FJywgJ1BBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFJyk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKaW5kZXggYmMyZTk0Ny4uNDk2MWIwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcwpAQCAtOSwxNiArOSwzMCBAQAogIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIGJhY2tlbmQgdG8gdXNlIGZvciBzaWduaW5nLgogIyAgICAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IGF2YWlsYWJsZSBvcHRpb24gaXMgJ2xvY2FsJywgaS5lLiBsb2NhbCBzaWduaW5nCiAjICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdC4KKyMgUlBNX0ZJTEVfQ0hFQ0tTVU1fRElHRVNUCisjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgYWxnb3JpdGhtIGZvciBnZW5lcmF0aW5nIGZpbGUKKyMgICAgICAgICAgIGNoZWNrc3VtIGRpZ2VzdC4KKyMgUlBNX0ZTS19QQVRICisjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3IgdGhlIGZpbGUgc2lnbmluZyBrZXkuCisjIFJQTV9GU0tfUEFTU1dPUkQKKyMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciB0aGUgZmlsZSBzaWduaW5nIGtleSBwYXNzd29yZC4KICMgR1BHX0JJTgogIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIGdwZyBiaW5hcnkvd3JhcHBlciB0byB1c2UgZm9yCiAjICAgICAgICAgICBzaWduaW5nLgorIyBSUE1fR1BHX1NJR05fQ0hVTksKKyMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBwYWNrYWdlcyB1c2VkIHBlciBncGcKKyMgICAgICAgICAgIGludm9jYXRpb24KICMgR1BHX1BBVEgKICMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBnbnVwZyAiaG9tZSIgZGlyZWN0b3J5OgotIworCiBpbmhlcml0IHNhbml0eQogCiBSUE1fU0lHTl9QQUNLQUdFUz0nMScKK1JQTV9TSUdOX0ZJTEVTID89ICcwJwogUlBNX0dQR19CQUNLRU5EID89ICdsb2NhbCcKKyMgU0hBLTI1NiBpcyB1c2VkIGJ5IGRlZmF1bHQKK1JQTV9GSUxFX0NIRUNLU1VNX0RJR0VTVCA/PSAnOCcKK1JQTV9HUEdfU0lHTl9DSFVOSyA/PSAiJHtCQl9OVU1CRVJfVEhSRUFEU30iCiAKIAogcHl0aG9uICgpIHsKQEAgLTI4LDYgKzQyLDExIEBACiAgICAgZm9yIHZhciBpbiAoJ1JQTV9HUEdfTkFNRScsICdSUE1fR1BHX1BBU1NQSFJBU0UnKToKICAgICAgICAgaWYgbm90IGQuZ2V0VmFyKHZhcik6CiAgICAgICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdSBuZWVkIHRvIGRlZmluZSAlcyBpbiB0aGUgY29uZmlnIiAlIHZhciwgZCkKKworICAgIGlmIGQuZ2V0VmFyKCdSUE1fU0lHTl9GSUxFUycpID09ICcxJzoKKyAgICAgICAgZm9yIHZhciBpbiAoJ1JQTV9GU0tfUEFUSCcsICdSUE1fRlNLX1BBU1NXT1JEJyk6CisgICAgICAgICAgICBpZiBub3QgZC5nZXRWYXIodmFyKToKKyAgICAgICAgICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdSBuZWVkIHRvIGRlZmluZSAlcyBpbiB0aGUgY29uZmlnIiAlIHZhciwgZCkKIH0KIAogcHl0aG9uIHNpZ25fcnBtICgpIHsKQEAgLTM5LDggKzU4LDE4IEBACiAKICAgICBzaWduZXIuc2lnbl9ycG1zKHJwbXMsCiAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0dQR19OQU1FJyksCi0gICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0dQR19QQVNTUEhSQVNFJykpCisgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0dQR19QQVNTUEhSQVNFJyksCisgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0ZJTEVfQ0hFQ0tTVU1fRElHRVNUJyksCisgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1JQTV9HUEdfU0lHTl9DSFVOSycpKSwKKyAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fRlNLX1BBVEgnKSwKKyAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fRlNLX1BBU1NXT1JEJykpCiB9CiAKIGRvX3BhY2thZ2VfaW5kZXhbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19kZXBsb3kiCiBkb19yb290ZnNbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19wb3B1bGF0ZV9zeXNyb290IgorCisjIE5ld2VyIHZlcnNpb25zIG9mIGdwZyAoYXQgbGVhc3QgMi4xLjUgYW5kIDIuMi4xKSBoYXZlIGlzc3VlcyB3aGVuIHNpZ25pbmcgb2NjdXJzIGluIHBhcmFsbGVsCisjIHNvIHVuZm9ydHVuYXRlbHkgdGhlIHNpZ25pbmcgbXVzdCBiZSBkb25lIHNlcmlhbGx5LiBPbmNlIHRoZSB1cHN0cmVhbSBwcm9ibGVtIGlzIGZpeGVkLAorIyB0aGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSByZW1vdmVkIG90aGVyd2lzZSB3ZSBsb29zZSBhbGwgdGhlIGludHJpbnNpYyBwYXJhbGxlbGlzbSBmcm9tCisjIGJpdGJha2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgY2hlY2sgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMi4KK2RvX3BhY2thZ2Vfd3JpdGVfcnBtW2xvY2tmaWxlc10gKz0gIiR7VE1QRElSfS9ncGcubG9jayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCAyYzMzNzMyLi4xYWFkYTQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC02MiwxMCArNjIsOCBAQAogICAgICAgICAibGludXgtZ251bjMyIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251ZWFiaSI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudXNwZSI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKLSAgICAgICAgImxpbnV4LXVjbGliYyI6ICJjb21tb24tbGludXggY29tbW9uLXVjbGliYyIsCi0gICAgICAgICJsaW51eC11Y2xpYmNlYWJpIjogImNvbW1vbi1saW51eCBjb21tb24tdWNsaWJjIiwKLSAgICAgICAgImxpbnV4LXVjbGliY3NwZSI6ICJjb21tb24tbGludXggY29tbW9uLXVjbGliYyIsCiAgICAgICAgICJsaW51eC1tdXNsIjogImNvbW1vbi1saW51eCBjb21tb24tbXVzbCIsCisgICAgICAgICJsaW51eC1tdXNseDMyIjogImNvbW1vbi1saW51eCBjb21tb24tbXVzbCIsCiAgICAgICAgICJsaW51eC1tdXNsZWFiaSI6ICJjb21tb24tbGludXggY29tbW9uLW11c2wiLAogICAgICAgICAibGludXgtbXVzbHNwZSI6ICJjb21tb24tbGludXggY29tbW9uLW11c2wiLAogICAgICAgICAidWNsaW51eC11Y2xpYmMiOiAiY29tbW9uLXVjbGliYyIsCkBAIC03OSw5ICs3Nyw3IEBACiAgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LW11c2wiOiAiYWFyY2g2NF9iZS1saW51eCIsCiAgICAgICAgICJhcm0tbGludXgtZ251ZWFiaSI6ICJhcm0tbGludXgiLAogICAgICAgICAiYXJtLWxpbnV4LW11c2xlYWJpIjogImFybS1saW51eCIsCi0gICAgICAgICJhcm0tbGludXgtdWNsaWJjZWFiaSI6ICJhcm0tbGludXgtdWNsaWJjIiwKICAgICAgICAgImFybWViLWxpbnV4LWdudWVhYmkiOiAiYXJtZWItbGludXgiLAotICAgICAgICAiYXJtZWItbGludXgtdWNsaWJjZWFiaSI6ICJhcm1lYi1saW51eC11Y2xpYmMiLAogICAgICAgICAiYXJtZWItbGludXgtbXVzbGVhYmkiOiAiYXJtZWItbGludXgiLAogICAgICAgICAibWlwcy1saW51eC1tdXNsIjogIm1pcHMtbGludXgiLAogICAgICAgICAibWlwc2VsLWxpbnV4LW11c2wiOiAibWlwc2VsLWxpbnV4IiwKQEAgLTkzLDEwICs4OSw4IEBACiAgICAgICAgICJtaXBzaXNhNjRyNmVsLWxpbnV4LWdudW4zMiI6ICJtaXBzaXNhMzJyNmVsLWxpbnV4IGJpdC0zMiIsCiAgICAgICAgICJwb3dlcnBjLWxpbnV4IjogInBvd2VycGMzMi1saW51eCIsCiAgICAgICAgICJwb3dlcnBjLWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXgiLAotICAgICAgICAicG93ZXJwYy1saW51eC11Y2xpYmMiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXgiLAogICAgICAgICAicG93ZXJwYy1saW51eC1nbnVzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXgiLAogICAgICAgICAicG93ZXJwYy1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKLSAgICAgICAgInBvd2VycGMtbGludXgtdWNsaWJjc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IHBvd2VycGMtbGludXgtdWNsaWJjIiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1nbnVzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2xzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4IjogInBvd2VycGMtbGludXgiLApAQCAtMTA2LDcgKzEwMCw3IEBACiAgICAgICAgICJ4ODZfNjQtZGFyd2luOSI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWxpbnV4IjogImJpdC02NCIsCiAgICAgICAgICJ4ODZfNjQtbGludXgtbXVzbCI6ICJ4ODZfNjQtbGludXggYml0LTY0IiwKLSAgICAgICAgIng4Nl82NC1saW51eC11Y2xpYmMiOiAiYml0LTY0IiwKKyAgICAgICAgIng4Nl82NC1saW51eC1tdXNseDMyIjogImJpdC0zMiBpeDg2LWNvbW1vbiB4MzItbGludXgiLAogICAgICAgICAieDg2XzY0LWVsZiI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWxpbnV4LWdudSI6ICJiaXQtNjQgeDg2XzY0LWxpbnV4IiwKICAgICAgICAgIng4Nl82NC1saW51eC1nbnV4MzIiOiAiYml0LTMyIGl4ODYtY29tbW9uIHgzMi1saW51eCIsCkBAIC0xNTksNyArMTUzLDcgQEAKICAgICAgICAgYmIuZmF0YWwoIlBsZWFzZSBhZGQgeW91ciBhcmNoaXRlY3R1cmUgdG8gc2l0ZWluZm8uYmJjbGFzcyIpCiB9CiAKLWRlZiBzaXRlaW5mb19nZXRfZmlsZXMoZCwgYWNsb2NhbGNhY2hlID0gRmFsc2UpOgorZGVmIHNpdGVpbmZvX2dldF9maWxlcyhkLCBzeXNyb290Y2FjaGUgPSBGYWxzZSk6CiAgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhKGQpCiAgICAgc2l0ZWZpbGVzID0gIiIKICAgICBmb3IgcGF0aCBpbiBkLmdldFZhcigiQkJQQVRIIikuc3BsaXQoIjoiKToKQEAgLTE2OCwxOCArMTYyLDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgc2l0ZWZpbGVzICs9IGZpbGVuYW1lICsgIiAiCiAKLSAgICBpZiBub3QgYWNsb2NhbGNhY2hlOgorICAgIGlmIG5vdCBzeXNyb290Y2FjaGU6CiAgICAgICAgIHJldHVybiBzaXRlZmlsZXMKIAotICAgICMgTm93IGNoZWNrIGZvciBzaXRlY29uZmlnIGNhY2hlIGZpbGVzIGluIHRoZSBkaXJlY3Rvcnkgc2V0dXAgYnkgYXV0b3Rvb2xzLmJiY2xhc3MgdG8KLSAgICAjIGF2b2lkIHJhY2VzLgotICAgICMKLSAgICAjIEFDTE9DQUxESVIgbWF5IG9yIG1heSBub3QgZXhpc3Qgc28gY2FjaGUgc2hvdWxkIG9ubHkgYmUgc2V0IHRvIFRydWUgZnJvbSBhdXRvdG9vbHMuYmJjbGFzcwotICAgICMgYWZ0ZXIgZmlsZXMgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIHRoaXMgbG9jYXRpb24uIFRvIGRvIG90aGVyd2lzZSByaXNrcyBwYXJzaW5nL3NpZ25hdHVyZQotICAgICMgaXNzdWVzIGFuZCB0aGUgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQvcmVtb3ZlZCB3aGlsc3QgdGhpcyBjb2RlIGV4ZWN1dGVzLiBUaGlzIGNhbiBoYXBwZW4KLSAgICAjIHdoZW4gYSBtdWx0aWxpYiByZWNpcGUgaXMgcGFyc2VkIGFsb25nIHdpdGggaXRzIGJhc2UgdmFyaWFudCB3aGljaCBtYXkgYmUgcnVubmluZyBhdCB0aGUgdGltZQotICAgICMgY2F1c2luZyByYXJlIGJ1dCBuYXN0eSBmYWlsdXJlcwotICAgIHBhdGhfc2l0ZWNvbmZpZyA9IGQuZ2V0VmFyKCdBQ0xPQ0FMRElSJykKKyAgICAjIE5vdyBjaGVjayBmb3Igc2l0ZWNvbmZpZyBjYWNoZSBmaWxlcyBpbiBzeXNyb290cworICAgIHBhdGhfc2l0ZWNvbmZpZyA9IGQuZ2V0VmFyKCdTSVRFQ09ORklHX1NZU1JPT1RDQUNIRScpCiAgICAgaWYgcGF0aF9zaXRlY29uZmlnIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGhfc2l0ZWNvbmZpZyk6CiAgICAgICAgIGZvciBpIGluIG9zLmxpc3RkaXIocGF0aF9zaXRlY29uZmlnKToKICAgICAgICAgICAgIGlmIG5vdCBpLmVuZHN3aXRoKCJfY29uZmlnIik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwppbmRleCAwYTEyOTM1Li5lMzBmYmUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKQEAgLTM0Niw4ICszNDYsNiBAQAogICAgICAgICBvZS5wYXRoLnJlbW92ZShkaXIpCiAKICAgICBmb3Igc3RhdGUgaW4gc3NbJ2RpcnMnXToKLSAgICAgICAgaWYgZC5nZXRWYXIoJ1NTVEFURV9TS0lQX0NSRUFUSU9OJykgPT0gJzEnOgotICAgICAgICAgICAgY29udGludWUKICAgICAgICAgcHJlcGRpcihzdGF0ZVsxXSkKICAgICAgICAgb3MucmVuYW1lKHNzdGF0ZWluc3QgKyBzdGF0ZVswXSwgc3RhdGVbMV0pCiAgICAgc3N0YXRlX2luc3RhbGwoc3MsIGQpCkBAIC00MDQsNyArNDAyLDcgQEAKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGJiLm5vdGUoIlJlcGxhY2luZyBmaXhtZSBwYXRocyBpbiBzc3RhdGUgcGFja2FnZTogJXMiICUgKHNzdGF0ZV9oYXJkY29kZV9jbWQpKQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoc3N0YXRlX2hhcmRjb2RlX2NtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKHNzdGF0ZV9oYXJkY29kZV9jbWQsIHNoZWxsPVRydWUpCiAKICAgICAgICAgIyBOZWVkIHRvIHJlbW92ZSB0aGlzIG9yIHdlJ2QgY29weSBpdCBpbnRvIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFuZCBtYXkgCiAgICAgICAgICMgY29uZmxpY3Qgd2l0aCBhbm90aGVyIHdyaXRlcgpAQCAtNDUzLDcgKzQ1MSw3IEBACiAgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3QgKyAiLnBvc3RybSIpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICBvcy5jaG1vZChwb3N0cm0sIDBvNzU1KQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwocG9zdHJtLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwocG9zdHJtLCBzaGVsbD1UcnVlKQogICAgICAgICBvZS5wYXRoLnJlbW92ZShwb3N0cm0pCiAKICAgICBvZS5wYXRoLnJlbW92ZShtYW5pZmVzdCkKQEAgLTU5Niw4ICs1OTQsNiBAQAogICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3RhdGVbMV0pOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgZC5nZXRWYXIoJ1NTVEFURV9TS0lQX0NSRUFUSU9OJykgPT0gJzEnOgotICAgICAgICAgICAgY29udGludWUKICAgICAgICAgc3JjYmFzZSA9IHN0YXRlWzBdLnJzdHJpcCgiLyIpLnJzcGxpdCgnLycsIDEpWzBdCiAgICAgICAgICMgRmluZCBhbmQgZXJyb3IgZm9yIGFic29sdXRlIHN5bWxpbmtzLiBXZSBjb3VsZCBhdHRlbXB0IHRvIHJlbG9jYXRlIGJ1dCBpdHMgbm90CiAgICAgICAgICMgY2xlYXIgd2hlcmUgdGhlIHN5bWxpbmsgaXMgcmVsYXRpdmUgdG8gaW4gdGhpcyBjb250ZXh0LiBXZSBjb3VsZCBhZGQgdGhhdCBtYXJrdXAKQEAgLTYyNSw2ICs2MjEsMTAgQEAKIAogICAgIGQuc2V0VmFyKCdTU1RBVEVfQlVJTERESVInLCBzc3RhdGVidWlsZCkKICAgICBkLnNldFZhcignU1NUQVRFX1BLRycsIHNzdGF0ZXBrZykKKyAgICBkLnNldFZhcignU1NUQVRFX0lOU1RESVInLCBzc3RhdGVidWlsZCkKKworICAgIGlmIGQuZ2V0VmFyKCdTU1RBVEVfU0tJUF9DUkVBVElPTicpID09ICcxJzoKKyAgICAgICAgcmV0dXJuCiAKICAgICBmb3IgZiBpbiAoZC5nZXRWYXIoJ1NTVEFURUNSRUFURUZVTkNTJykgb3IgJycpLnNwbGl0KCkgKyBcCiAgICAgICAgICAgICAgWydzc3RhdGVfY3JlYXRlX3BhY2thZ2UnLCAnc3N0YXRlX3NpZ25fcGFja2FnZSddICsgXApAQCAtNjM0LDggKzYzNCw2IEBACiAKICAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc3N0YXRlcGtnICsgIi5zaWdpbmZvIiwgZCkKIAotICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWJ1aWxkKQotCiAgICAgcmV0dXJuCiAKIGRlZiBwc3RhZ2luZ19mZXRjaChzc3RhdGVmZXRjaCwgc3N0YXRlcGtnLCBkKToKQEAgLTk2OSw3ICs5NjcsOCBAQAogICAgICAgICAgICAgaWYgaXNOYXRpdmVDcm9zcyh0YXNrZGVwZW5kZWVzW2RlcF1bMF0pOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgIyBOYXRpdmUvY3Jvc3MgdG9vbHMgZGVwZW5kZWQgdXBvbiBieSB0YXJnZXQgc3lzcm9vdCBhcmUgbm90IG5lZWRlZAotICAgICAgICAgICAgaWYgaXNOYXRpdmVDcm9zcyh0YXNrZGVwZW5kZWVzW3Rhc2tdWzBdKToKKyAgICAgICAgICAgICMgQWRkIGFuIGV4Y2VwdGlvbiBmb3Igc2hhZG93LW5hdGl2ZSBhcyByZXF1aXJlZCBieSB1c2VyYWRkLmJiY2xhc3MKKyAgICAgICAgICAgIGlmIGlzTmF0aXZlQ3Jvc3ModGFza2RlcGVuZGVlc1t0YXNrXVswXSkgYW5kIHRhc2tkZXBlbmRlZXNbdGFza11bMF0gIT0gJ3NoYWRvdy1uYXRpdmUnOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAjIFRhcmdldCBwb3B1bGF0ZV9zeXNyb290IG5lZWQgdGhlaXIgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEwMTcsNiArMTAxNiwxMSBAQAogICAgIGQgPSBlLmRhdGEKICAgICBzdGFtcHMgPSBlLnN0YW1wcy52YWx1ZXMoKQogICAgIHJlbW92ZXdvcmtkaXIgPSAoZC5nZXRWYXIoIlNTVEFURV9QUlVORV9PQlNPTEVURVdPUktESVIiLCBGYWxzZSkgPT0gIjEiKQorICAgIHByZXNlcnZlc3RhbXBmaWxlID0gZC5leHBhbmQoJyR7U1NUQVRFX01BTklGRVNUU30vcHJlc2VydmUtc3RhbXBzJykKKyAgICBwcmVzZXJ2ZXN0YW1wcyA9IFtdCisgICAgaWYgb3MucGF0aC5leGlzdHMocHJlc2VydmVzdGFtcGZpbGUpOgorICAgICAgICB3aXRoIG9wZW4ocHJlc2VydmVzdGFtcGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHByZXNlcnZlc3RhbXBzID0gZi5yZWFkbGluZXMoKQogICAgIHNlZW4gPSBbXQogICAgIGZvciBhIGluIGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpOgogICAgICAgICB0b3JlbW92ZSA9IFtdCkBAIC0xMDI3LDcgKzEwMzEsNyBAQAogICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCiAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IGwuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzdGFtcHM6CisgICAgICAgICAgICAgICAgaWYgc3RhbXAgbm90IGluIHN0YW1wcyBhbmQgc3RhbXAgbm90IGluIHByZXNlcnZlc3RhbXBzOgogICAgICAgICAgICAgICAgICAgICB0b3JlbW92ZS5hcHBlbmQobCkKICAgICAgICAgICAgICAgICAgICAgaWYgc3RhbXAgbm90IGluIHNlZW46CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU3RhbXAgJXMgaXMgbm90IHJlYWNoYWJsZSwgcmVtb3ZpbmcgcmVsYXRlZCBtYW5pZmVzdHMiICUgc3RhbXApCkBAIC0xMDQ5LDQgKzEwNTMsNiBAQAogICAgICAgICB3aXRoIG9wZW4oaSwgInciKSBhcyBmOgogICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgZi53cml0ZShsKQorICAgIGlmIHByZXNlcnZlc3RhbXBzOgorICAgICAgICBvcy5yZW1vdmUocHJlc2VydmVzdGFtcGZpbGUpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCmluZGV4IDk4NDA1MWQuLmM0NzliZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCkBAIC02OCwxMDEgKzY4LDE5IEBACiB9CiAKIHB5dGhvbiBzeXNyb290X3N0cmlwICgpIHsKLSAgICBpbXBvcnQgc3RhdCwgZXJybm8KKyAgICBpbmhpYml0X3N5c3Jvb3QgPSBkLmdldFZhcignSU5ISUJJVF9TWVNST09UX1NUUklQJykKKyAgICBpZiBpbmhpYml0X3N5c3Jvb3QgYW5kIG9lLnR5cGVzLmJvb2xlYW4oaW5oaWJpdF9zeXNyb290KToKKyAgICAgICAgcmV0dXJuIDAKIAotICAgIGR2YXIgPSBkLmdldFZhcignU1lTUk9PVF9ERVNURElSJykKKyAgICBkc3RkaXIgPSBkLmdldFZhcignU1lTUk9PVF9ERVNURElSJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGQuZ2V0VmFyKCJsaWJkaXIiKSkKKyAgICBiYXNlX2xpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBkLmdldFZhcigiYmFzZV9saWJkaXIiKSkKKyAgICBxYV9hbHJlYWR5X3N0cmlwcGVkID0gJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKQorICAgIHN0cmlwX2NtZCA9IGQuZ2V0VmFyKCJTVFJJUCIpCiAKLSAgICBvcy5jaGRpcihkdmFyKQotCi0gICAgIyBSZXR1cm4gdHlwZSAoYml0cyk6Ci0gICAgIyAwIC0gbm90IGVsZgotICAgICMgMSAtIEVMRgotICAgICMgMiAtIHN0cmlwcGVkCi0gICAgIyA0IC0gZXhlY3V0YWJsZQotICAgICMgOCAtIHNoYXJlZCBsaWJyYXJ5Ci0gICAgIyAxNiAtIGtlcm5lbCBtb2R1bGUKLSAgICBkZWYgaXNFTEYocGF0aCk6Ci0gICAgICAgIHR5cGUgPSAwCi0gICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIFwiJXNcIiIgJSBwYXRoLnJlcGxhY2UoIlwiIiwgIlxcXCIiKSkKLQotICAgICAgICBpZiByZXQ6Ci0gICAgICAgICAgICBiYi5lcnJvcigic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgpCi0gICAgICAgICAgICByZXR1cm4gdHlwZQotCi0gICAgICAgICMgTm90IHN0cmlwcGVkCi0gICAgICAgIGlmICJFTEYiIGluIHJlc3VsdDoKLSAgICAgICAgICAgIHR5cGUgfD0gMQotICAgICAgICAgICAgaWYgIm5vdCBzdHJpcHBlZCIgbm90IGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDIKLSAgICAgICAgICAgIGlmICJleGVjdXRhYmxlIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZSB8PSA0Ci0gICAgICAgICAgICBpZiAic2hhcmVkIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZSB8PSA4Ci0gICAgICAgIHJldHVybiB0eXBlCi0KLQotICAgIGVsZmZpbGVzID0ge30KLSAgICBpbm9kZXMgPSB7fQotICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkdmFyICsgb3Muc2VwICsgZC5nZXRWYXIoImxpYmRpciIpKQotICAgIGJhc2VsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHZhciArIG9zLnNlcCArIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQotICAgIGlmIChkLmdldFZhcignSU5ISUJJVF9TWVNST09UX1NUUklQJykgIT0gJzEnKToKLSAgICAgICAgIwotICAgICAgICAjIEZpcnN0IGxldHMgZmlndXJlIG91dCBhbGwgb2YgdGhlIGZpbGVzIHdlIG1heSBoYXZlIHRvIHByb2Nlc3MKLSAgICAgICAgIwotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkdmFyKToKLSAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKLQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbHRhcmdldCA9IG9lLnBhdGgucmVhbHBhdGgoZmlsZSwgZHZhciwgRmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIHMgPSBvcy5sc3RhdChsdGFyZ2V0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIChlcnIsIHN0cmVycm9yKSA9IGUuYXJncwotICAgICAgICAgICAgICAgICAgICBpZiBlcnIgIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGJyb2tlbiBzeW1saW5rcwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMgQ2hlY2sgaXRzIGFuIGV4Y3V0YWJsZQotICAgICAgICAgICAgICAgIGlmIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhVU1IpIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhHUlApIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhPVEgpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yICgoZmlsZS5zdGFydHN3aXRoKGxpYmRpcikgb3IgZmlsZS5zdGFydHN3aXRoKGJhc2VsaWJkaXIpKSBhbmQgIi5zbyIgaW4gZik6Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgaXQncyBhIHN5bWxpbmssIGFuZCBwb2ludHMgdG8gYW4gRUxGIGZpbGUsIHdlIGNhcHR1cmUgdGhlIHJlYWRsaW5rIHRhcmdldAotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgIyBJdCdzIGEgZmlsZSAob3IgaGFyZGxpbmspLCBub3QgYSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICMgLi4uYnV0IGlzIGl0IEVMRiwgYW5kIGlzIGl0IGFscmVhZHkgc3RyaXBwZWQ/Ci0gICAgICAgICAgICAgICAgICAgIGVsZl9maWxlID0gaXNFTEYoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdhbHJlYWR5LXN0cmlwcGVkJyBpbiAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwbikgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGZpbGUgJXMgZnJvbSAlcyBmb3IgYWxyZWFkeS1zdHJpcHBlZCBRQSB0ZXN0IiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiRmlsZSAnJXMnIGZyb20gJXMgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchIiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcy5zdF9pbm8gaW4gaW5vZGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW3Muc3RfaW5vXSwgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW3Muc3RfaW5vXSA9IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGhhcmRsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUoZmlsZSwgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZmaWxlc1tmaWxlXSA9IGVsZl9maWxlCi0KLSAgICAgICAgIwotICAgICAgICAjIE5vdyBzdHJpcCB0aGVtIChpbiBwYXJhbGxlbCkKLSAgICAgICAgIwotICAgICAgICBzdHJpcCA9IGQuZ2V0VmFyKCJTVFJJUCIpCi0gICAgICAgIHNmaWxlcyA9IFtdCi0gICAgICAgIGZvciBmaWxlIGluIGVsZmZpbGVzOgotICAgICAgICAgICAgZWxmX2ZpbGUgPSBpbnQoZWxmZmlsZXNbZmlsZV0pCi0gICAgICAgICAgICAjYmIubm90ZSgiU3RyaXAgJXMiICUgZmlsZSkKLSAgICAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGZpbGUsIGVsZl9maWxlLCBzdHJpcCkpCi0KLSAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoc2ZpbGVzLCBvZS5wYWNrYWdlLnJ1bnN0cmlwKQorICAgIG9lLnBhY2thZ2Uuc3RyaXBfZXhlY3MocG4sIGRzdGRpciwgc3RyaXBfY21kLCBsaWJkaXIsIGJhc2VfbGliZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcWFfYWxyZWFkeV9zdHJpcHBlZD1xYV9hbHJlYWR5X3N0cmlwcGVkKQogfQogCiBkb19wb3B1bGF0ZV9zeXNyb290W2RpcnNdID0gIiR7U1lTUk9PVF9ERVNURElSfSIKQEAgLTI1OSw2ICsxNzcsNyBAQAogZGVmIHN0YWdpbmdfcG9wdWxhdGVfc3lzcm9vdF9kaXIodGFyZ2V0c3lzcm9vdCwgbmF0aXZlc3lzcm9vdCwgbmF0aXZlLCBkKToKICAgICBpbXBvcnQgZ2xvYgogICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IGVycm5vCiAKICAgICBmaXhtZSA9IFtdCiAgICAgcG9zdGluc3RzID0gW10KQEAgLTQ1NCw3ICszNzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBtc2didWYuYXBwZW5kKCJGb2xsb3dpbmcgZGVwZW5kZW5jeSBvbiAlcyIgJSBzZXRzY2VuZWRlcHNbZGF0YWRlcF1bMF0pCiAgICAgICAgIG5leHQgPSBuZXcKIAotICAgIGJiLm5vdGUoIlxuIi5qb2luKG1zZ2J1ZikpCisgICAgIyBUaGlzIGxvZ2dpbmcgaXMgdG9vIHZlcmJvc2UgZm9yIGRheSB0byBkYXkgdXNlIHNhZGx5CisgICAgI2JiLmRlYnVnKDIsICJcbiIuam9pbihtc2didWYpKQogCiAgICAgZGVwZGlyID0gcmVjaXBlc3lzcm9vdG5hdGl2ZSArICIvaW5zdGFsbGVkZGVwcyIKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVwZGlyKQpAQCAtNDY5LDYgKzM4OSw4IEBACiAgICAgcG9zdGluc3RzID0gW10KICAgICBtdWx0aWxpYnMgPSB7fQogICAgIG1hbmlmZXN0cyA9IHt9CisgICAgIyBBbGwgZmlsZXMgdGhhdCB3ZSdyZSBnb2luZyB0byBiZSBpbnN0YWxsaW5nLCB0byBmaW5kIGNvbmZsaWN0cy4KKyAgICBmaWxlc2V0ID0ge30KIAogICAgIGZvciBmIGluIG9zLmxpc3RkaXIoZGVwZGlyKToKICAgICAgICAgaWYgbm90IGYuZW5kc3dpdGgoIi5jb21wbGV0ZSIpOgpAQCAtNTIxLDYgKzQ0Myw4IEBACiAgICAgICAgICAgICBvcy51bmxpbmsoZmwpCiAgICAgICAgICAgICBvcy51bmxpbmsoZmwgKyAiLmNvbXBsZXRlIikKIAorICAgIG1zZ19leGlzdHMgPSBbXQorICAgIG1zZ19hZGRpbmcgPSBbXQogICAgIGZvciBkZXAgaW4gY29uZmlndXJlZGVwczoKICAgICAgICAgYyA9IHNldHNjZW5lZGVwc1tkZXBdWzBdCiAgICAgICAgIGlmIGMgbm90IGluIGluc3RhbGxlZDoKQEAgLTUzMSw3ICs0NTUsNyBAQAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXBkaXIgKyAiLyIgKyBjKToKICAgICAgICAgICAgIGxuayA9IG9zLnJlYWRsaW5rKGRlcGRpciArICIvIiArIGMpCiAgICAgICAgICAgICBpZiBsbmsgPT0gYyArICIuIiArIHRhc2toYXNoIGFuZCBvcy5wYXRoLmV4aXN0cyhkZXBkaXIgKyAiLyIgKyBjICsgIi5jb21wbGV0ZSIpOgotICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIGV4aXN0cyBpbiBzeXNyb290LCBza2lwcGluZyIgJSBjKQorICAgICAgICAgICAgICAgIG1zZ19leGlzdHMuYXBwZW5kKGMpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYmIubm90ZSgiJXMgZXhpc3RzIGluIHN5c3Jvb3QsIGJ1dCBpcyBzdGFsZSAoJXMgdnMuICVzKSwgcmVtb3ZpbmcuIiAlIChjLCBsbmssIGMgKyAiLiIgKyB0YXNraGFzaCkpCkBAIC01NDIsNiArNDY2LDggQEAKICAgICAgICAgZWxpZiBvcy5wYXRoLmxleGlzdHMoZGVwZGlyICsgIi8iICsgYyk6CiAgICAgICAgICAgICBvcy51bmxpbmsoZGVwZGlyICsgIi8iICsgYykKIAorICAgICAgICBtc2dfYWRkaW5nLmFwcGVuZChjKQorCiAgICAgICAgIG9zLnN5bWxpbmsoYyArICIuIiArIHRhc2toYXNoLCBkZXBkaXIgKyAiLyIgKyBjKQogCiAgICAgICAgIGQyID0gZApAQCAtNTk1LDggKzUyMSwxOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBsLmVuZHN3aXRoKCIvZml4bWVwYXRoLmNtZCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IGwucmVwbGFjZShzdGFnaW5nZGlyLCAiIikKLSAgICAgICAgICAgICAgICAgICAgZGVzdCA9IHRhcmdldGRpciArICIvIiArICIvIi5qb2luKGRlc3Quc3BsaXQoIi8iKVszOl0pCi0gICAgICAgICAgICAgICAgICAgIG5ld21hbmlmZXN0W2xdID0gZGVzdAorICAgICAgICAgICAgICAgICAgICBkZXN0ID0gIi8iICsgIi8iLmpvaW4oZGVzdC5zcGxpdCgiLyIpWzM6XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3bWFuaWZlc3RbbF0gPSB0YXJnZXRkaXIgKyBkZXN0CisKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiBmaWxlcyBoYXZlIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQgYnkgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgICAjIHJlY2lwZSBhbmQgYWJvcnQgaWYgdGhleSBoYXZlLCBleHBsYWluaW5nIHdoYXQgcmVjaXBlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgIyBjb25mbGljdGluZy4KKyAgICAgICAgICAgICAgICAgICAgaGFzaG5hbWUgPSB0YXJnZXRkaXIgKyBkZXN0CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNobmFtZS5lbmRzd2l0aCgiLyIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzaG5hbWUgaW4gZmlsZXNldDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiVGhlIGZpbGUgJXMgaXMgaW5zdGFsbGVkIGJ5IGJvdGggJXMgYW5kICVzLCBhYm9ydGluZyIgJSAoZGVzdCwgYywgZmlsZXNldFtoYXNobmFtZV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc2V0W2hhc2huYW1lXSA9IGMKKwogICAgICAgICAgICAgIyBIYXZpbmcgbXVsdGlwbGUgaWRlbnRpY2FsIG1hbmlmZXN0cyBpbiBlYWNoIHN5c3Jvb3QgZWF0cyBkaXNrc3BhY2Ugc28KICAgICAgICAgICAgICMgY3JlYXRlIGEgc2hhcmVkIHBvb2wgb2YgdGhlbSBhbmQgaGFyZGxpbmsgaWYgd2UgY2FuLgogICAgICAgICAgICAgIyBXZSBjcmVhdGUgdGhlIG1hbmlmZXN0IGluIGFkdmFuY2Ugc28gdGhhdCBpZiBzb21ldGhpbmcgZmFpbHMgZHVyaW5nIGluc3RhbGxhdGlvbiwKQEAgLTYyNyw2ICs1NjQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgc3RhZ2luZ19jb3B5ZmlsZShsLCB0YXJnZXRkaXIsIGRlc3QsIHBvc3RpbnN0cywgc2VlbmRpcnMpCiAKKyAgICBiYi5ub3RlKCJJbnN0YWxsZWQgaW50byBzeXNyb290OiAlcyIgJSBzdHIobXNnX2FkZGluZykpCisgICAgYmIubm90ZSgiU2tpcHBpbmcgYXMgYWxyZWFkeSBleGlzdHMgaW4gc3lzcm9vdDogJXMiICUgc3RyKG1zZ19leGlzdHMpKQorCiAgICAgZm9yIGYgaW4gZml4bWU6CiAgICAgICAgIGlmIGYgPT0gJyc6CiAgICAgICAgICAgICBzdGFnaW5nX3Byb2Nlc3NmaXhtZShmaXhtZVtmXSwgcmVjaXBlc3lzcm9vdCwgcmVjaXBlc3lzcm9vdCwgcmVjaXBlc3lzcm9vdG5hdGl2ZSwgZCkKQEAgLTY1OCw2ICs1OTgsOSBAQAogIyBDbGVhbiBvdXQgdGhlIHJlY2lwZSBzcGVjaWZpYyBzeXNyb290cyBiZWZvcmUgZG9fZmV0Y2gKICMgKHVzZSBhIHByZWZ1bmMgc28gd2UgY2FuIG9yZGVyIGJlZm9yZSBleHRlbmRfcmVjaXBlX3N5c3Jvb3QgaWYgaXQgZ2V0cyBhZGRlZCkKIHB5dGhvbiBjbGVhbl9yZWNpcGVfc3lzcm9vdCgpIHsKKyAgICAjIFdlIHJlbW92ZSB0aGVzZSBzdGFtcHMgc2luY2Ugd2UncmUgcmVtb3ZpbmcgYW55IGNvbnRlbnQgdGhleSdkIGhhdmUgYWRkZWQgd2l0aAorICAgICMgY2xlYW5kaXJzLiBUaGlzIHJlbW92ZXMgdGhlIHNpZ2RhdGEgdG9vLCBsaWtlbHkgbm90IGEgYmlnIGRlYWwsCisgICAgb2UucGF0aC5yZW1vdmUoZC5nZXRWYXIoIlNUQU1QIikgKyAiKmFkZHRvX3JlY2lwZV9zeXNyb290KiIpCiAgICAgcmV0dXJuCiB9CiBjbGVhbl9yZWNpcGVfc3lzcm9vdFtjbGVhbmRpcnNdICs9ICIke1JFQ0lQRV9TWVNST09UfSAke1JFQ0lQRV9TWVNST09UX05BVElWRX0iCkBAIC02NzIsNCArNjE1LDMgQEAKIH0KIHN0YWdpbmdfdGFza2hhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5SZWNpcGVUYXNrUHJlUHJvY2VzcyIKIGFkZGhhbmRsZXIgc3RhZ2luZ190YXNraGFuZGxlcgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcwppbmRleCA5NTk3NzU5Li45MzczMDcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKQEAgLTcsMTAgKzcsOSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlLgogIwogIyBTZXQgRUZJX1BST1ZJREVSID0gInN5c3RlbWQtYm9vdCIgdG8gdXNlIHN5c3RlbWQtYm9vdCBvbiB5b3VyIGxpdmUgaW1hZ2VzIGluc3RlYWQgb2YgZ3J1Yi1lZmkKLSMgKGltYWdlcyBidWlsdCBieSBpbWFnZS1saXZlLmJiY2xhc3Mgb3IgaW1hZ2Utdm0uYmJjbGFzcykKKyMgKGltYWdlcyBidWlsdCBieSBpbWFnZS1saXZlLmJiY2xhc3MpCiAKIGRvX2Jvb3RpbWdbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9c3lzdGVtZC1ib290OmRvX2RlcGxveSIKLWRvX2Jvb3RkaXJlY3RkaXNrW2RlcGVuZHNdICs9ICIke01MUFJFRklYfXN5c3RlbWQtYm9vdDpkb19kZXBsb3kiCiAKIEVGSURJUiA9ICIvRUZJL0JPT1QiCiAKQEAgLTEwMCw2ICs5OSw4IEBACiAgICAgICAgICAgICBiYi5mYXRhbCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKIAogICAgICAgICBlbnRyeWZpbGUgPSAiJXMvJXMuY29uZiIgJSAocywgbGFiZWwpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHMpCiAgICAgICAgIGQuYXBwZW5kVmFyKCJTWVNURU1EX0JPT1RfRU5UUklFUyIsICIgIiArIGVudHJ5ZmlsZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZW50cnljZmcgPSBvcGVuKGVudHJ5ZmlsZSwgInciKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcwppbmRleCBjNGI0YmI5Li4xYjEzNDMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcwpAQCAtMTU0LDggKzE1NCwxMCBAQAogICAgICAgICAgICAgICAgICMgRGVhbCB3aXRoIGFkZGluZywgZm9yIGV4YW1wbGUsICdpZnBsdWdkQGV0aDAuc2VydmljZScgZnJvbQogICAgICAgICAgICAgICAgICMgJ2lmcGx1Z2RALnNlcnZpY2UnCiAgICAgICAgICAgICAgICAgYmFzZSA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBzZXJ2aWNlLmZpbmQoJ0AnKSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgYmFzZSA9IHJlLnN1YignQFteLl0rLicsICdALicsIHNlcnZpY2UpCisgICAgICAgICAgICAgICAgYXQgPSBzZXJ2aWNlLmZpbmQoJ0AnKQorICAgICAgICAgICAgICAgIGlmIGF0ICE9IC0xOgorICAgICAgICAgICAgICAgICAgICBleHQgPSBzZXJ2aWNlLnJmaW5kKCcuJykKKyAgICAgICAgICAgICAgICAgICAgYmFzZSA9IHNlcnZpY2VbOmF0XSArICdAJyArIHNlcnZpY2VbZXh0Ol0KIAogICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGhzOgogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvZS5wYXRoLmpvaW4oZC5nZXRWYXIoIkQiKSwgcGF0aCwgc2VydmljZSkpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcwppbmRleCA1NmVkZGE5Li5kMDcwZjA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcwpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgb2UucGF0aC5yZW1vdmUoY2FzZXNfcGF0aCkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoY2FzZXNfcGF0aCkKICAgICB0ZXN0X3BhdGhzID0gZ2V0X3J1bnRpbWVfcGF0aHMoZCkKLSAgICB0ZXN0X21vZHVsZXMgPSBkLmdldFZhcignVEVTVF9TVUlURVMnKQorICAgIHRlc3RfbW9kdWxlcyA9IGQuZ2V0VmFyKCdURVNUX1NVSVRFUycpLnNwbGl0KCkKICAgICB0Yy5sb2FkVGVzdHModGVzdF9wYXRocywgbW9kdWxlcz10ZXN0X21vZHVsZXMpCiAgICAgZm9yIGYgaW4gZ2V0U3VpdGVDYXNlc0ZpbGVzKHRjLnN1aXRlcyk6CiAgICAgICAgIHNodXRpbC5jb3B5MihmLCBjYXNlc19wYXRoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggZmIyMTQ2MC4uNDViYjJiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCkBAIC03LDEzICs3LDEzIEBACiAjIE1vc3Qgb2YgdGhlIHRlc3RzIGFyZSBjb21tYW5kcyBydW4gb24gdGFyZ2V0IGltYWdlIG92ZXIgc3NoLgogIyBUbyB1c2UgaXQgYWRkIHRlc3RpbWFnZSB0byBnbG9iYWwgaW5oZXJpdCBhbmQgY2FsbCB5b3VyIHRhcmdldCBpbWFnZSB3aXRoIC1jIHRlc3RpbWFnZQogIyBZb3UgY2FuIHRyeSBpdCBvdXQgbGlrZSB0aGlzOgotIyAtIGZpcnN0IGJ1aWxkIGEgcWVtdSBjb3JlLWltYWdlLXNhdG8KLSMgLSBhZGQgSU1BR0VfQ0xBU1NFUyArPSAidGVzdGltYWdlIiBpbiBsb2NhbC5jb25mCisjIC0gZmlyc3QgYWRkIElNQUdFX0NMQVNTRVMgKz0gInRlc3RpbWFnZSIgaW4gbG9jYWwuY29uZgorIyAtIGJ1aWxkIGEgcWVtdSBjb3JlLWltYWdlLXNhdG8KICMgLSB0aGVuIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIC1jIHRlc3RpbWFnZS4gVGhhdCB3aWxsIHJ1biBhIHN0YW5kYXJkIHN1aXRlIG9mIHRlc3RzLgogCiAjIFlvdSBjYW4gc2V0IChvciBhcHBlbmQgdG8pIFRFU1RfU1VJVEVTIGluIGxvY2FsLmNvbmYgdG8gc2VsZWN0IHRoZSB0ZXN0cwogIyB3aGljaCB5b3Ugd2FudCB0byBydW4gZm9yIHlvdXIgdGFyZ2V0LgotIyBUaGUgdGVzdCBuYW1lcyBhcmUgdGhlIG1vZHVsZSBuYW1lcyBpbiBtZXRhL2xpYi9vZXFhL3J1bnRpbWUuCisjIFRoZSB0ZXN0IG5hbWVzIGFyZSB0aGUgbW9kdWxlIG5hbWVzIGluIG1ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy4KICMgRWFjaCBuYW1lIGluIFRFU1RfU1VJVEVTIHJlcHJlc2VudHMgYSByZXF1aXJlZCB0ZXN0IGZvciB0aGUgaW1hZ2UuIChubyBza2lwcGluZyBhbGxvd2VkKQogIyBBcHBlbmRpbmcgImF1dG8iIG1lYW5zIHRoYXQgaXQgd2lsbCB0cnkgdG8gcnVuIGFsbCB0ZXN0cyB0aGF0IGFyZSBzdWl0YWJsZSBmb3IgdGhlIGltYWdlIChlYWNoIHRlc3QgZGVjaWRlcyB0aGF0IG9uIGl0J3Mgb3duKS4KICMgTm90ZSB0aGF0IG9yZGVyIGluIFRFU1RfU1VJVEVTIGlzIHJlbGV2YW50OiB0ZXN0cyBhcmUgcnVuIGluIGFuIG9yZGVyIHN1Y2ggdGhhdApAQCAtNDksMTAgKzQ5LDEwIEBACiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvID0gIiR7TkVUVEVTVFNVSVRFfSBjb25ubWFuIHhvcmcgcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ3B5dGhvbicsICcnLCBkKX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGlwdGFibGVzIGJ1aWxkZ2FsY3VsYXRvciBcCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKICAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGVybCBwYXJzZWxvZ3MgcHl0aG9uICR7UlBNVEVTVFNVSVRFfSB4b3JnIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1kZXYgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGlwdGFibGVzIGJ1aWxkZ2FsY3VsYXRvciBcCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAogICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwYW0gcGFyc2Vsb2dzIHBlcmwgcHl0aG9uICR7UlBNVEVTVFNVSVRFfSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tbWV0YS10b29sY2hhaW4gPSAiYXV0byIKIApAQCAtNjEsNyArNjEsNyBAQAogCiAjIHFlbXVtaXBzIGlzIHF1aXRlIHNsb3cgYW5kIGhhcyByZWFjaGVkIHRoZSB0aW1lb3V0IGxpbWl0IHNldmVyYWwgdGltZXMgb24gdGhlIFlQIGJ1aWxkIGNsdXN0ZXIsCiAjIG1pdGlnYXRlIHRoaXMgYnkgcmVtb3ZpbmcgYnVpbGQgdGVzdHMgZm9yIHFlbXVtaXBzIG1hY2hpbmVzLgotTUlQU1JFTU9WRSA/Pz0gImJ1aWxkY3BpbyBidWlsZGlwdGFibGVzIGJ1aWxkZ2FsY3VsYXRvciIKK01JUFNSRU1PVkUgPz89ICJidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciIKIERFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX3FlbXVtaXBzID0gIiR7TUlQU1JFTU9WRX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9xZW11bWlwczY0ID0gIiR7TUlQU1JFTU9WRX0iCiAKQEAgLTI0OCw3ICsyNDgsNyBAQAogCiAgICAgIyB0aGUgcm9ib3QgZGFuY2UKICAgICB0YXJnZXQgPSBPRVJ1bnRpbWVUZXN0Q29udGV4dEV4ZWN1dG9yLmdldFRhcmdldCgKLSAgICAgICAgZC5nZXRWYXIoIlRFU1RfVEFSR0VUIiksIE5vbmUsIGQuZ2V0VmFyKCJURVNUX1RBUkdFVF9JUCIpLAorICAgICAgICBkLmdldFZhcigiVEVTVF9UQVJHRVQiKSwgbG9nZ2VyLCBkLmdldFZhcigiVEVTVF9UQVJHRVRfSVAiKSwKICAgICAgICAgZC5nZXRWYXIoIlRFU1RfU0VSVkVSX0lQIiksICoqdGFyZ2V0X2t3YXJncykKIAogICAgICMgdGVzdCBjb250ZXh0CkBAIC0yNTcsNyArMjU3LDcgQEAKIAogICAgICMgTG9hZCB0ZXN0cyBiZWZvcmUgc3RhcnRpbmcgdGhlIHRhcmdldAogICAgIHRlc3RfcGF0aHMgPSBnZXRfcnVudGltZV9wYXRocyhkKQotICAgIHRlc3RfbW9kdWxlcyA9IGQuZ2V0VmFyKCdURVNUX1NVSVRFUycpCisgICAgdGVzdF9tb2R1bGVzID0gZC5nZXRWYXIoJ1RFU1RfU1VJVEVTJykuc3BsaXQoKQogICAgIHRjLmxvYWRUZXN0cyh0ZXN0X3BhdGhzLCBtb2R1bGVzPXRlc3RfbW9kdWxlcykKIAogICAgIGlmIG5vdCBnZXRTdWl0ZUNhc2VzKHRjLnN1aXRlcyk6CkBAIC0yOTEsMTEgKzI5MSwxMSBAQAogCiAgICAgIyBTaG93IHJlc3VsdHMgKGlmIHdlIGhhdmUgdGhlbSkKICAgICBpZiBub3QgcmVzdWx0czoKLSAgICAgICAgYmIuZmF0YWwoJyVzIC0gRkFJTEVEIC0gdGVzdHMgd2VyZSBpbnRlcnJ1cHRlZCBkdXJpbmcgZXhlY3V0aW9uJyAlIHBuKQotICAgIHRjLmxvZ1N1bW1hcnkocmVzdWx0cywgcG4pCi0gICAgdGMubG9nRGV0YWlscygpCisgICAgICAgIGJiLmZhdGFsKCclcyAtIEZBSUxFRCAtIHRlc3RzIHdlcmUgaW50ZXJydXB0ZWQgZHVyaW5nIGV4ZWN1dGlvbicgJSBwbiwgZm9yY2Vsb2c9VHJ1ZSkKKyAgICByZXN1bHRzLmxvZ0RldGFpbHMoKQorICAgIHJlc3VsdHMubG9nU3VtbWFyeShwbikKICAgICBpZiBub3QgcmVzdWx0cy53YXNTdWNjZXNzZnVsKCk6Ci0gICAgICAgIGJiLmZhdGFsKCclcyAtIEZBSUxFRCAtIGNoZWNrIHRoZSB0YXNrIGxvZyBhbmQgdGhlIHNzaCBsb2cnICUgcG4pCisgICAgICAgIGJiLmZhdGFsKCclcyAtIEZBSUxFRCAtIGNoZWNrIHRoZSB0YXNrIGxvZyBhbmQgdGhlIHNzaCBsb2cnICUgcG4sIGZvcmNlbG9nPVRydWUpCiAKIGRlZiBnZXRfcnVudGltZV9wYXRocyhkKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKaW5kZXggNmEyMDFhYS4uNmI1MWEzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKQEAgLTIxLDEwICsyMSwxMSBAQAogICAgIGltcG9ydCBsb2dnaW5nCiAKICAgICBmcm9tIGJiLnV0aWxzIGltcG9ydCBleHBvcnRfcHJveGllcwotICAgIGZyb20gb2VxYS5jb3JlLnJ1bm5lciBpbXBvcnQgT0VTdHJlYW1Mb2dnZXIKICAgICBmcm9tIG9lcWEuc2RrLmNvbnRleHQgaW1wb3J0IE9FU0RLVGVzdENvbnRleHQsIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvcgogICAgIGZyb20gb2VxYS51dGlscyBpbXBvcnQgbWFrZV9sb2dnZXJfYml0YmFrZV9jb21wYXRpYmxlCiAKKyAgICBiYi5ldmVudC5lbmFibGVfdGhyZWFkbG9jaygpCisKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgbG9nZ2VyID0gbWFrZV9sb2dnZXJfYml0YmFrZV9jb21wYXRpYmxlKGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikpCiAKQEAgLTcxLDggKzcyLDggQEAKICAgICAgICAgY29tcG9uZW50ID0gIiVzICVzIiAlIChwbiwgT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLm5hbWUpCiAgICAgICAgIGNvbnRleHRfbXNnID0gIiVzOiVzIiAlIChvcy5wYXRoLmJhc2VuYW1lKHRjbmFtZSksIG9zLnBhdGguYmFzZW5hbWUoc2RrX2VudikpCiAKLSAgICAgICAgdGMubG9nU3VtbWFyeShyZXN1bHQsIGNvbXBvbmVudCwgY29udGV4dF9tc2cpCi0gICAgICAgIHRjLmxvZ0RldGFpbHMoKQorICAgICAgICByZXN1bHQubG9nRGV0YWlscygpCisgICAgICAgIHJlc3VsdC5sb2dTdW1tYXJ5KGNvbXBvbmVudCwgY29udGV4dF9tc2cpCiAKICAgICAgICAgaWYgbm90IHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6CiAgICAgICAgICAgICBmYWlsID0gVHJ1ZQpAQCAtOTgsNiArOTksOCBAQAogICAgIGZyb20gb2VxYS51dGlscyBpbXBvcnQgYXZvaWRfcGF0aHNfaW5fZW52aXJvbiwgbWFrZV9sb2dnZXJfYml0YmFrZV9jb21wYXRpYmxlLCBzdWJwcm9jZXNzdHdlYWsKICAgICBmcm9tIG9lcWEuc2RrZXh0LmNvbnRleHQgaW1wb3J0IE9FU0RLRXh0VGVzdENvbnRleHQsIE9FU0RLRXh0VGVzdENvbnRleHRFeGVjdXRvcgogCisgICAgYmIuZXZlbnQuZW5hYmxlX3RocmVhZGxvY2soKQorCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGxvZ2dlciA9IG1ha2VfbG9nZ2VyX2JpdGJha2VfY29tcGF0aWJsZShsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpKQogCkBAIC0xNzMsOCArMTc2LDggQEAKICAgICAgICAgY29tcG9uZW50ID0gIiVzICVzIiAlIChwbiwgT0VTREtFeHRUZXN0Q29udGV4dEV4ZWN1dG9yLm5hbWUpCiAgICAgICAgIGNvbnRleHRfbXNnID0gIiVzOiVzIiAlIChvcy5wYXRoLmJhc2VuYW1lKHRjbmFtZSksIG9zLnBhdGguYmFzZW5hbWUoc2RrX2VudikpCiAKLSAgICAgICAgdGMubG9nU3VtbWFyeShyZXN1bHQsIGNvbXBvbmVudCwgY29udGV4dF9tc2cpCi0gICAgICAgIHRjLmxvZ0RldGFpbHMoKQorICAgICAgICByZXN1bHQubG9nRGV0YWlscygpCisgICAgICAgIHJlc3VsdC5sb2dTdW1tYXJ5KGNvbXBvbmVudCwgY29udGV4dF9tc2cpCiAKICAgICAgICAgaWYgbm90IHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6CiAgICAgICAgICAgICBmYWlsID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCmluZGV4IDI2MGVjZTkuLjliY2ZlNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKQEAgLTMsNyArMyw2IEBACiAjIFdlIHdhbnQgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIE1VTFRJTUFDSF9UQVJHRVRfU1lTLCBiZWNhdXNlIGl0CiAjIGRvZXNuJ3QgYWx3YXlzIG1hdGNoIG91ciBleHBlY3RhdGlvbnMuLi4gYnV0IHdlIGRlZmF1bHQgdG8gdGhlIHN0b2NrIHZhbHVlCiBSRUFMX01VTFRJTUFDSF9UQVJHRVRfU1lTID89ICIke01VTFRJTUFDSF9UQVJHRVRfU1lTfSIKLVRBUkdFVF9DQ19BUkNIX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLW11Y2xpYmMiCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfbGliYy1tdXNsID0gIiAtbW11c2wiCiAKICMgZGVmYXVsdCBkZWJ1ZyBwcmVmaXggbWFwIGlzbid0IHZhbGlkIGluIHRoZSBTREsKQEAgLTI1LDYgKzI0LDIxIEBACiAJc2NyaXB0PSR7MTotJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L2Vudmlyb25tZW50LXNldHVwLSRtdWx0aW1hY2hfdGFyZ2V0X3N5c30KIAlybSAtZiAkc2NyaXB0CiAJdG91Y2ggJHNjcmlwdAorCisJZWNobyAnIyBDaGVjayBmb3IgTERfTElCUkFSWV9QQVRIIGJlaW5nIHNldCwgd2hpY2ggY2FuIGJyZWFrIFNESyBhbmQgZ2VuZXJhbGx5IGlzIGEgYmFkIHByYWN0aWNlJyA+PiAkc2NyaXB0CisJZWNobyAnIyBodHRwOi8vdGxkcC5vcmcvSE9XVE8vUHJvZ3JhbS1MaWJyYXJ5LUhPV1RPL3NoYXJlZC1saWJyYXJpZXMuaHRtbCNBRU44MCcgPj4gJHNjcmlwdAorCWVjaG8gJyMgaHR0cDovL3hhaGxlZS5pbmZvL1VuaXhSZXNvdXJjZV9kaXIvXy9sZHBhdGguaHRtbCcgPj4gJHNjcmlwdAorCWVjaG8gJyMgT25seSBkaXNhYmxlIHRoaXMgY2hlY2sgaWYgeW91IGFyZSBhYnNvbHV0ZWx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIScgPj4gJHNjcmlwdAorCWVjaG8gJ2lmIFsgISAteiAiJExEX0xJQlJBUllfUEFUSCIgXTsgdGhlbicgPj4gJHNjcmlwdAorCWVjaG8gIiAgICBlY2hvIFwiWW91ciBlbnZpcm9ubWVudCBpcyBtaXNjb25maWd1cmVkLCB5b3UgcHJvYmFibHkgbmVlZCB0byAndW5zZXQgTERfTElCUkFSWV9QQVRIJ1wiIiA+PiAkc2NyaXB0CisJZWNobyAiICAgIGVjaG8gXCJidXQgcGxlYXNlIGNoZWNrIHdoeSB0aGlzIHdhcyBzZXQgaW4gdGhlIGZpcnN0IHBsYWNlIGFuZCB0aGF0IGl0J3Mgc2FmZSB0byB1bnNldC5cIiIgPj4gJHNjcmlwdAorCWVjaG8gJyAgICBlY2hvICJUaGUgU0RLIHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5IGluIG1vc3QgY2FzZXMgd2hlbiBMRF9MSUJSQVJZX1BBVEggaXMgc2V0LiInID4+ICRzY3JpcHQKKwllY2hvICcgICAgZWNobyAiRm9yIG1vcmUgcmVmZXJlbmNlcyBzZWU6IicgPj4gJHNjcmlwdAorCWVjaG8gJyAgICBlY2hvICIgIGh0dHA6Ly90bGRwLm9yZy9IT1dUTy9Qcm9ncmFtLUxpYnJhcnktSE9XVE8vc2hhcmVkLWxpYnJhcmllcy5odG1sI0FFTjgwIicgPj4gJHNjcmlwdAorCWVjaG8gJyAgICBlY2hvICIgIGh0dHA6Ly94YWhsZWUuaW5mby9Vbml4UmVzb3VyY2VfZGlyL18vbGRwYXRoLmh0bWwiJyA+PiAkc2NyaXB0CisJZWNobyAnICAgIHJldHVybiAxJyA+PiAkc2NyaXB0CisJZWNobyAnZmknID4+ICRzY3JpcHQKKwogCWVjaG8gJ2V4cG9ydCBTREtUQVJHRVRTWVNST09UPSciJHN5c3Jvb3QiID4+ICRzY3JpcHQKIAlFWFRSQVBBVEg9IiIKIAlmb3IgaSBpbiAke0NBTkFESUFORVhUUkFPU307IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcwppbmRleCAxMDAxM2I3Li41MzNlMTc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKQEAgLTIwLDI0ICsyMCwyMSBAQAogICAgIHVib290YmluYXJpZXMgPSBkLmdldFZhcignVUJPT1RfQklOQVJJRVMnKQogICAgICMgVGhlICJkb2MiIHZhcmZsYWcgaXMgc3BlY2lhbCwgd2UgZG9uJ3Qgd2FudCB0byBzZWUgaXQgaGVyZQogICAgIHVib290Y29uZmlnZmxhZ3MucG9wKCdkb2MnLCBOb25lKQorICAgIHVib290Y29uZmlnID0gKGQuZ2V0VmFyKCdVQk9PVF9DT05GSUcnKSBvciAiIikuc3BsaXQoKQogCi0gICAgaWYgbm90IHVib290bWFjaGluZSBhbmQgbm90IHVib290Y29uZmlnZmxhZ3M6CisgICAgaWYgbm90IHVib290bWFjaGluZSBhbmQgbm90IHVib290Y29uZmlnOgogICAgICAgICBQTiA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgICAgIEZJTEUgPSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJGSUxFIikpCiAgICAgICAgIGJiLmRlYnVnKDEsICJUbyBidWlsZCAlcywgc2VlICVzIGZvciBpbnN0cnVjdGlvbnMgb24gXAogICAgICAgICAgICAgICAgICBzZXR0aW5nIHVwIHlvdXIgbWFjaGluZSBjb25maWciICUgKFBOLCBGSUxFKSkKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIkVpdGhlciBVQk9PVF9NQUNISU5FIG9yIFVCT09UX0NPTkZJRyBtdXN0IGJlIHNldCBpbiB0aGUgJXMgbWFjaGluZSBjb25maWd1cmF0aW9uLiIgJSBkLmdldFZhcigiTUFDSElORSIpKQogCi0gICAgaWYgdWJvb3RtYWNoaW5lIGFuZCB1Ym9vdGNvbmZpZ2ZsYWdzOgorICAgIGlmIHVib290bWFjaGluZSBhbmQgdWJvb3Rjb25maWc6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9NQUNISU5FIGFuZCBVQk9PVF9DT05GSUcgYXQgdGhlIHNhbWUgdGltZS4iKQogCiAgICAgaWYgdWJvb3Rjb25maWdmbGFncyBhbmQgdWJvb3RiaW5hcmllczoKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIllvdSBjYW5ub3QgdXNlIFVCT09UX0JJTkFSSUVTIGFzIGl0IGlzIGludGVybmFsIHRvIHVib290X2NvbmZpZy5iYmNsYXNzLiIpCiAKLSAgICBpZiBub3QgdWJvb3Rjb25maWdmbGFnczoKLSAgICAgICAgcmV0dXJuCi0KLSAgICB1Ym9vdGNvbmZpZyA9IChkLmdldFZhcignVUJPT1RfQ09ORklHJykgb3IgIiIpLnNwbGl0KCkKICAgICBpZiBsZW4odWJvb3Rjb25maWcpID4gMDoKICAgICAgICAgZm9yIGNvbmZpZyBpbiB1Ym9vdGNvbmZpZzoKICAgICAgICAgICAgIGZvciBmLCB2IGluIHVib290Y29uZmlnZmxhZ3MuaXRlbXMoKToKQEAgLTU3LDYgKzU0LDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJBcHBlbmRpbmcgJyVzJyB0byBVQk9PVF9CSU5BUklFUy4iICUgdWJvb3RiaW5hcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignVUJPT1RfQklOQVJJRVMnLCAnICcgKyB1Ym9vdGJpbmFyeSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICBlbGlmIGxlbih1Ym9vdGNvbmZpZykgPT0gMDoKLSAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgnWW91IG11c3Qgc2V0IGEgZGVmYXVsdCBpbiBVQk9PVF9DT05GSUcuJykKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWV4dGxpbnV4LWNvbmZpZy5iYmNsYXNzCmluZGV4IDg0NDdhMDQuLjYxZGZmMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcwpAQCAtNjgsNyArNjgsNyBAQAogCiBVQk9PVF9FWFRMSU5VWF9DT05GSUcgPSAiJHtCfS9leHRsaW51eC5jb25mIgogCi1weXRob24gY3JlYXRlX2V4dGxpbnV4X2NvbmZpZygpIHsKK3B5dGhvbiBkb19jcmVhdGVfZXh0bGludXhfY29uZmlnKCkgewogICAgIGlmIGQuZ2V0VmFyKCJVQk9PVF9FWFRMSU5VWCIpICE9ICIxIjoKICAgICAgIHJldHVybgogCkBAIC0xNDksNCArMTQ5LDQgQEAKICAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIChjZmlsZSkpCiB9CiAKLWRvX2luc3RhbGxbcHJlZnVuY3NdICs9ICJjcmVhdGVfZXh0bGludXhfY29uZmlnIgorYWRkdGFzayBjcmVhdGVfZXh0bGludXhfY29uZmlnIGJlZm9yZSBkb19pbnN0YWxsIGRvX2RlcGxveSBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwppbmRleCA4ZjM0NDgzLi42NzBlZmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKQEAgLTQ5LDYgKzQ5LDEyIEBACiAgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0ZJTEVTUEFUSCcsICIiKQogICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignRExfRElSJywgdGFyYmFsbGRpcikKKyAgICAgICAgICAgICMgT3VyIGdhbWVzIHdpdGggcGF0aCBtYW5pcHVsYXRpb24gb2YgRExfRElSIG1lYW4gc3RhbmRhcmQgUFJFTUlSUk9SUyBkb24ndCB3b3JrCisgICAgICAgICAgICAjIGFuZCB3ZSBjYW4ndCBlYXNpbHkgcHV0ICdjaGtzdW0nIGludG8gdGhlIHVybCBwYXRoIGZyb20gYSB1cmwgcGFyYW1ldGVyIHdpdGgKKyAgICAgICAgICAgICMgdGhlIGN1cnJlbnQgZmV0Y2hlciB1cmwgaGFuZGxpbmcKKyAgICAgICAgICAgIG93bm1pcnJvciA9IGQuZ2V0VmFyKCdTT1VSQ0VfTUlSUk9SX1VSTCcpCisgICAgICAgICAgICBpZiBvd25taXJyb3I6CisgICAgICAgICAgICAgICAgbG9jYWxkYXRhLmFwcGVuZFZhcigiUFJFTUlSUk9SUyIsICIgJHtVTklOQVRJVkVfVVJMfSR7VU5JTkFUSVZFX1RBUkJBTEx9ICR7U09VUkNFX01JUlJPUl9VUkx9L3VuaW5hdGl2ZS8lcy8ke1VOSU5BVElWRV9UQVJCQUxMfSIgJSBjaGtzdW0pCiAKICAgICAgICAgICAgIHNyY3VyaSA9IGQuZXhwYW5kKCIke1VOSU5BVElWRV9VUkx9JHtVTklOQVRJVkVfVEFSQkFMTH07c2hhMjU2c3VtPSVzIiAlIGNoa3N1bSkKICAgICAgICAgICAgIGJiLm5vdGUoIkZldGNoaW5nIHVuaW5hdGl2ZSBiaW5hcnkgc2hpbSBmcm9tICVzIiAlIHNyY3VyaSkKQEAgLTU3LDcgKzYzLDE5IEBACiAgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKICAgICAgICAgICAgIGxvY2FscGF0aCA9IGZldGNoZXIubG9jYWxwYXRoKHNyY3VyaSkKICAgICAgICAgICAgIGlmIGxvY2FscGF0aCAhPSB0YXJiYWxscGF0aCBhbmQgb3MucGF0aC5leGlzdHMobG9jYWxwYXRoKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHRhcmJhbGxwYXRoKToKKyAgICAgICAgICAgICAgICAjIEZvbGxvdyB0aGUgc3ltbGluayBiZWhhdmlvciBmcm9tIHRoZSBiaXRiYWtlIGZldGNoMi4KKyAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBjb3ZlciB0aGUgY2FzZSB3aGVyZSBhbiBleGlzdGluZyBzeW1saW5rIGlzIGJyb2tlbgorICAgICAgICAgICAgICAgICMgYXMgd2VsbCBhcyBpZiB0aGVyZSBhcmUgdHdvIHByb2Nlc3NlcyB0cnlpbmcgdG8gY3JlYXRlIGl0CisgICAgICAgICAgICAgICAgIyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHRhcmJhbGxwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgIyBCcm9rZW4gc3ltYm9saWMgbGluaworICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsodGFyYmFsbHBhdGgpCisKKyAgICAgICAgICAgICAgICAjIERlYWwgd2l0aCB0d28gcHJvY2Vzc2VzIHRyeWluZyB0byBtYWtlIHN5bWxpbmsgYXQgb25jZQorICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhsb2NhbHBhdGgsIHRhcmJhbGxwYXRoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBjbWQgPSBkLmV4cGFuZCgiXAogbWtkaXIgLXAgJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZTsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcwppbmRleCA0YmJhNzZjLi5hYTAxMDU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcwpAQCAtMTQzLDYgKzE0MywxMCBAQAogICAgICAgICAgICAgaWYgbm90IGFsdF9saW5rOgogICAgICAgICAgICAgICAgIGFsdF9saW5rID0gIiVzLyVzIiAlIChkLmdldFZhcignYmluZGlyJyksIGFsdF9uYW1lKQogICAgICAgICAgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgYWx0X25hbWUsIGFsdF9saW5rKQorICAgICAgICAgICAgaWYgYWx0X2xpbmsuc3RhcnRzd2l0aChvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ3N5c2NvbmZkaXInLCBUcnVlKSwgJ2luaXQuZCcpKToKKyAgICAgICAgICAgICAgICAjIE1hbmFnaW5nIGluaXQgc2NyaXB0cyBkb2VzIG5vdCB3b3JrIChidWcgIzEwNDMzKSwgZm9yZW1vc3QKKyAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSByYWNlIHdpdGggdXBkYXRlLXJjLmQKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgiVXNpbmcgdXBkYXRlLWFsdGVybmF0aXZlcyBmb3IgbWFuYWdpbmcgU3lzViBpbml0IHNjcmlwdHMgaXMgbm90IHN1cHBvcnRlZCIpCiAKICAgICAgICAgICAgIGFsdF90YXJnZXQgICA9IGQuZ2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUXyVzJyAlIHBrZywgYWx0X25hbWUpIG9yIGQuZ2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgYWx0X25hbWUpCiAgICAgICAgICAgICBhbHRfdGFyZ2V0ICAgPSBhbHRfdGFyZ2V0IG9yIGQuZ2V0VmFyKCdBTFRFUk5BVElWRV9UQVJHRVRfJXMnICUgcGtnKSBvciBkLmdldFZhcignQUxURVJOQVRJVkVfVEFSR0VUJykgb3IgYWx0X2xpbmsKQEAgLTIwMSw4ICsyMDUsOCBAQAogICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHRCcpCiAgICAgZm9yIHBrZyBpbiAoZC5nZXRWYXIoJ1BBQ0tBR0VTJykgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICMgQ3JlYXRlIHBvc3QgaW5zdGFsbC9yZW1vdmFsIHNjcmlwdHMKLSAgICAgICAgYWx0X3NldHVwX2xpbmtzID0gIiMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4iCi0gICAgICAgIGFsdF9yZW1vdmVfbGlua3MgPSAiIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbiIKKyAgICAgICAgYWx0X3NldHVwX2xpbmtzID0gIiIKKyAgICAgICAgYWx0X3JlbW92ZV9saW5rcyA9ICIiCiAgICAgICAgIGZvciBhbHRfbmFtZSBpbiAoZC5nZXRWYXIoJ0FMVEVSTkFUSVZFXyVzJyAlIHBrZykgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICBhbHRfbGluayAgICAgPSBkLmdldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lKQogICAgICAgICAgICAgYWx0X3RhcmdldCAgID0gZC5nZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVRfJXMnICUgcGtnLCBhbHRfbmFtZSkgb3IgZC5nZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCBhbHRfbmFtZSkKQEAgLTIyNSwxMyArMjI5LDEwIEBACiAgICAgICAgICAgICAjIERlZmF1bHQgdG8gZ2VuZXJhdGUgc2hlbGwgc2NyaXB0Li4gZXZlbnR1YWxseSB3ZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcy4uLgogICAgICAgICAgICAgYWx0X3RhcmdldCA9IG9zLnBhdGgubm9ybXBhdGgoYWx0X3RhcmdldCkKIAotICAgICAgICAgICAgYWx0X3NldHVwX2xpbmtzICArPSAndXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgJXMgJXMgJXMgJXNcbicgJSAoYWx0X2xpbmssIGFsdF9uYW1lLCBhbHRfdGFyZ2V0LCBhbHRfcHJpb3JpdHkpCi0gICAgICAgICAgICBhbHRfcmVtb3ZlX2xpbmtzICs9ICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlICAlcyAlc1xuJyAlIChhbHRfbmFtZSwgYWx0X3RhcmdldCkKKyAgICAgICAgICAgIGFsdF9zZXR1cF9saW5rcyAgKz0gJ1x0dXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgJXMgJXMgJXMgJXNcbicgJSAoYWx0X2xpbmssIGFsdF9uYW1lLCBhbHRfdGFyZ2V0LCBhbHRfcHJpb3JpdHkpCisgICAgICAgICAgICBhbHRfcmVtb3ZlX2xpbmtzICs9ICdcdHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgICVzICVzXG4nICUgKGFsdF9uYW1lLCBhbHRfdGFyZ2V0KQogCi0gICAgICAgIGFsdF9zZXR1cF9saW5rcyArPSAiIyBFbmQgc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4iCi0gICAgICAgIGFsdF9yZW1vdmVfbGlua3MgKz0gIiMgRW5kIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuIgotCi0gICAgICAgIGlmIGxlbihhbHRfc2V0dXBfbGlua3Muc3BsaXRsaW5lcygpKSA+IDI6CisgICAgICAgIGlmIGFsdF9zZXR1cF9saW5rczoKICAgICAgICAgICAgICMgUkRFUEVORFMgc2V0dXAKICAgICAgICAgICAgIHByb3ZpZGVyID0gZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzJykKICAgICAgICAgICAgIGlmIHByb3ZpZGVyOgpAQCAtMjQxLDI0ICsyNDIsMTIgQEAKICAgICAgICAgICAgIGJiLm5vdGUoJ2FkZGluZyB1cGRhdGUtYWx0ZXJuYXRpdmVzIGNhbGxzIHRvIHBvc3RpbnN0L3ByZXJtIGZvciAlcycgJSBwa2cpCiAgICAgICAgICAgICBiYi5ub3RlKCclcycgJSBhbHRfc2V0dXBfbGlua3MpCiAgICAgICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKSBvciAnIyEvYmluL3NoXG4nCi0gICAgICAgICAgICBwb3N0aW5zdCA9IHBvc3RpbnN0LnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9IHBvc3RpbnN0LmluZGV4KCcjIEJlZ2luIHNlY3Rpb24gdXBkYXRlLXJjLmRcbicpCi0gICAgICAgICAgICAgICAgcG9zdGluc3QuaW5zZXJ0KGluZGV4LCBhbHRfc2V0dXBfbGlua3MpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBwb3N0aW5zdC5hcHBlbmQoYWx0X3NldHVwX2xpbmtzKQotICAgICAgICAgICAgcG9zdGluc3QgPSAnJy5qb2luKHBvc3RpbnN0KQorICAgICAgICAgICAgcG9zdGluc3QgKz0gYWx0X3NldHVwX2xpbmtzCiAgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCiAKICAgICAgICAgICAgIGJiLm5vdGUoJyVzJyAlIGFsdF9yZW1vdmVfbGlua3MpCiAgICAgICAgICAgICBwcmVybSA9IGQuZ2V0VmFyKCdwa2dfcHJlcm1fJXMnICUgcGtnKSBvciAnIyEvYmluL3NoXG4nCi0gICAgICAgICAgICBwcmVybSA9IHByZXJtLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9IHByZXJtLmluZGV4KCcjIEVuZCBzZWN0aW9uIHVwZGF0ZS1yYy5kXG4nKQotICAgICAgICAgICAgICAgIHByZXJtLmluc2VydChpbmRleCArIDEsIGFsdF9yZW1vdmVfbGlua3MpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBwcmVybS5hcHBlbmQoYWx0X3JlbW92ZV9saW5rcykKLSAgICAgICAgICAgIHByZXJtID0gJycuam9pbihwcmVybSkKKyAgICAgICAgICAgIHByZXJtICs9IGFsdF9yZW1vdmVfbGlua3MKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcHJlcm1fJXMnICUgcGtnLCBwcmVybSkKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCmluZGV4IDliYTNkYWMuLmUxZTBlMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKQEAgLTM3LDcgKzM3LDYgQEAKIFBBQ0tBR0VfV1JJVEVfREVQUyArPSAidXBkYXRlLXJjLmQtbmF0aXZlIgogCiB1cGRhdGVyY2RfcG9zdGluc3QoKSB7Ci0jIEJlZ2luIHNlY3Rpb24gdXBkYXRlLXJjLmQKIGlmICR7QHVzZV91cGRhdGVyY2QoZCl9ICYmIHR5cGUgdXBkYXRlLXJjLmQgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgogCWlmIFsgLW4gIiREIiBdOyB0aGVuCiAJCU9QVD0iLXIgJEQiCkBAIC00NiwxNSArNDUsMTIgQEAKIAlmaQogCXVwZGF0ZS1yYy5kICRPUFQgJHtJTklUU0NSSVBUX05BTUV9ICR7SU5JVFNDUklQVF9QQVJBTVN9CiBmaQotIyBFbmQgc2VjdGlvbiB1cGRhdGUtcmMuZAogfQogCiB1cGRhdGVyY2RfcHJlcm0oKSB7Ci0jIEJlZ2luIHNlY3Rpb24gdXBkYXRlLXJjLmQKIGlmICR7QHVzZV91cGRhdGVyY2QoZCl9ICYmIFsgLXogIiREIiAtYSAteCAiJHtJTklUX0RfRElSfS8ke0lOSVRTQ1JJUFRfTkFNRX0iIF07IHRoZW4KIAkke0lOSVRfRF9ESVJ9LyR7SU5JVFNDUklQVF9OQU1FfSBzdG9wIHx8IDoKIGZpCi0jIEVuZCBzZWN0aW9uIHVwZGF0ZS1yYy5kCiB9CiAKIHVwZGF0ZXJjZF9wb3N0cm0oKSB7CkBAIC05NSw4ICs5MSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc3RhdGVtZW50ID0gImdyZXAgLXEgLXcgJy9ldGMvaW5pdC5kL2Z1bmN0aW9ucycgJXMiICUgcGF0aAogICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgotICAgICAgICAgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAiIgotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICcgJXNpbml0c2NyaXB0cy1mdW5jdGlvbnMnICUgKG1scHJlZml4KSkKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAnIGluaXRkLWZ1bmN0aW9ucycpCiAKICAgICBkZWYgdXBkYXRlX3JjZF9wYWNrYWdlKHBrZyk6CiAgICAgICAgIGJiLmRlYnVnKDEsICdhZGRpbmcgdXBkYXRlLXJjLmQgY2FsbHMgdG8gcHJlaW5zdC9wb3N0aW5zdC9wcmVybS9wb3N0cm0gZm9yICVzJyAlIHBrZykKQEAgLTExNiwyNSArMTExLDEzIEBACiAgICAgICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2cpCiAgICAgICAgIGlmIG5vdCBwb3N0aW5zdDoKICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJwotICAgICAgICBwb3N0aW5zdCA9IHBvc3RpbnN0LnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5kZXggPSBwb3N0aW5zdC5pbmRleCgnIyBFbmQgc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4nKQotICAgICAgICAgICAgcG9zdGluc3QuaW5zZXJ0KGluZGV4ICsgMSwgbG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3Bvc3RpbnN0JykpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcG9zdGluc3QuYXBwZW5kKGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wb3N0aW5zdCcpKQotICAgICAgICBwb3N0aW5zdCA9ICcnLmpvaW4ocG9zdGluc3QpCisgICAgICAgIHBvc3RpbnN0ICs9IGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wb3N0aW5zdCcpCiAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKIAogICAgICAgICBwcmVybSA9IGQuZ2V0VmFyKCdwa2dfcHJlcm1fJXMnICUgcGtnKQogICAgICAgICBpZiBub3QgcHJlcm06CiAgICAgICAgICAgICBwcmVybSA9ICcjIS9iaW4vc2hcbicKLSAgICAgICAgcHJlcm0gPSBwcmVybS5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGluZGV4ID0gcHJlcm0uaW5kZXgoJyMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4nKQotICAgICAgICAgICAgcHJlcm0uaW5zZXJ0KGluZGV4LCBsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcHJlcm0nKSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmVybS5hcHBlbmQobG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3ByZXJtJykpCi0gICAgICAgIHByZXJtID0gJycuam9pbihwcmVybSkKKyAgICAgICAgcHJlcm0gKz0gbG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3ByZXJtJykKICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wcmVybV8lcycgJSBwa2csIHByZXJtKQogCiAgICAgICAgIHBvc3RybSA9IGQuZ2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcwppbmRleCA2ZWJmNzYwLi41ODlhOTlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCkBAIC0xLDIyICsxLDEwIEBACiAjIEluIG9yZGVyIHRvIHN1cHBvcnQgYSBkZXRlcm1pbmlzdGljIHNldCBvZiAnZHluYW1pYycgdXNlcnMvZ3JvdXBzLAogIyB3ZSBuZWVkIGEgZnVuY3Rpb24gdG8gcmVmb3JtYXQgdGhlIHBhcmFtcyBiYXNlZCBvbiBhIHN0YXRpYyBmaWxlCiBkZWYgdXBkYXRlX3VzZXJhZGRfc3RhdGljX2NvbmZpZyhkKToKLSAgICBpbXBvcnQgYXJncGFyc2UKICAgICBpbXBvcnQgaXRlcnRvb2xzCiAgICAgaW1wb3J0IHJlCiAgICAgaW1wb3J0IGVycm5vCi0KLSAgICBjbGFzcyBteUFyZ3VtZW50UGFyc2VyKCBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlciApOgotICAgICAgICBkZWYgX3ByaW50X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZmlsZT1Ob25lKToKLSAgICAgICAgICAgIGJiLndhcm4oIiVzIC0gJXM6ICVzIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCBtZXNzYWdlKSkKLQotICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZC4uLgotICAgICAgICBkZWYgZXhpdChzZWxmLCBzdGF0dXM9MCwgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlIG9yICgiJXMgLSAlczogdXNlcmFkZC5iYmNsYXNzOiBBcmd1bWVudCBwYXJzaW5nIGV4aXRlZCIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZykpCi0gICAgICAgICAgICBlcnJvcihtZXNzYWdlKQotCi0gICAgICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgICAgIGJiLmZhdGFsKG1lc3NhZ2UpCisgICAgaW1wb3J0IG9lLnVzZXJhZGQKIAogICAgIGRlZiBsaXN0X2V4dGVuZChpdGVyYWJsZSwgbGVuZ3RoLCBvYmogPSBOb25lKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgaXRlcmFibGUgaXMgdGhlIHNwZWNpZmllZCBsZW5ndGggYnkgZXh0ZW5kaW5nIHdpdGggb2JqCkBAIC01MCw2MiArMzgsNDQgQEAKIAogICAgICAgICByZXR1cm4gaWRfdGFibGUKIAotICAgIGRlZiBoYW5kbGVfbWlzc2luZ19pZChpZCwgdHlwZSwgcGtnKToKKyAgICBkZWYgaGFuZGxlX21pc3NpbmdfaWQoaWQsIHR5cGUsIHBrZywgZmlsZXMsIHZhciwgdmFsdWUpOgogICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3ZSBhY2NlcHQgIjEiIGluIGFkZGl0aW9uIHRvICJlcnJvciIKLSAgICAgICAgaWYgZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycpID09ICdlcnJvcicgb3IgZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycpID09ICcxJzoKLSAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIiVzIC0gJXM6ICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIFNraXBwaW5nIGl0LiIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgdHlwZSwgaWQpKQotICAgICAgICBlbGlmIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnKSA9PSAnd2Fybic6Ci0gICAgICAgICAgICBiYi53YXJuKCIlcyAtICVzOiAlc25hbWUgJXMgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyBJRCBkZWZpbmVkLiIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgdHlwZSwgaWQpKQorICAgICAgICBlcnJvcl9keW5hbWljID0gZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycpCisgICAgICAgIG1zZyA9ICIlcyAtICVzOiAlc25hbWUgJXMgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyBJRCBkZWZpbmVkLiIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgdHlwZSwgaWQpCisgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgbXNnICs9ICIgQWRkICVzIHRvIG9uZSBvZiB0aGVzZSBmaWxlczogJXMiICUgKGlkLCBmaWxlcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyArPSAiICVzIGZpbGUocykgbm90IGZvdW5kIGluIEJCUEFUSDogJXMiICUgKHZhciwgdmFsdWUpCisgICAgICAgIGlmIGVycm9yX2R5bmFtaWMgPT0gJ2Vycm9yJyBvciBlcnJvcl9keW5hbWljID09ICcxJzoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IobXNnKQorICAgICAgICBlbGlmIGVycm9yX2R5bmFtaWMgPT0gJ3dhcm4nOgorICAgICAgICAgICAgYmIud2Fybihtc2cpCisgICAgICAgIGVsaWYgZXJyb3JfZHluYW1pYyA9PSAnc2tpcCc6CisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKG1zZykKKworICAgICMgUmV0dXJuIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGJhc2VkIG9uIGVpdGhlciB0aGUgZGVmYXVsdAorICAgICMgZmlsZXMvZ3JvdXAgb3IgdGhlIGNvbnRlbnRzIG9mIFVTRVJBRERfR0lEX1RBQkxFUywgcmVzcC4KKyAgICAjIGZpbGVzL3Bhc3N3ZCBmb3IgVVNFUkFERF9VSURfVEFCTEVTLgorICAgICMgUGF0aHMgYXJlIHJlc29sdmVkIHZpYSBCQlBBVEguCisgICAgZGVmIGdldF90YWJsZV9saXN0KGQsIHZhciwgZGVmYXVsdCk6CisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcsIFRydWUpCisgICAgICAgIHRhYmxlcyA9IGQuZ2V0VmFyKHZhciwgVHJ1ZSkKKyAgICAgICAgaWYgbm90IHRhYmxlczoKKyAgICAgICAgICAgIHRhYmxlcyA9IGRlZmF1bHQKKyAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiB0YWJsZXMuc3BsaXQoKToKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkpCisgICAgICAgIHJldHVybiAoJyAnLmpvaW4oZmlsZXMpLCB2YXIsIGRlZmF1bHQpCiAKICAgICAjIFdlIHBhcnNlIGFuZCByZXdyaXRlIHRoZSB1c2VyYWRkIGNvbXBvbmVudHMKICAgICBkZWYgcmV3cml0ZV91c2VyYWRkKHBhcmFtcywgaXNfcGtnKToKLSAgICAgICAgIyBUaGUgZm9sbG93aW5nIGNvbWVzIGZyb20gLS1oZWxwIG9uIHVzZXJhZGQgZnJvbSBzaGFkb3cKLSAgICAgICAgcGFyc2VyID0gbXlBcmd1bWVudFBhcnNlcihwcm9nPSd1c2VyYWRkJykKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWIiLCAiLS1iYXNlLWRpciIsIG1ldGF2YXI9IkJBU0VfRElSIiwgaGVscD0iYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBob21lIGRpcmVjdG9yeSBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvbW1lbnQiLCBtZXRhdmFyPSJDT01NRU5UIiwgaGVscD0iR0VDT1MgZmllbGQgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWQiLCAiLS1ob21lLWRpciIsIG1ldGF2YXI9IkhPTUVfRElSIiwgaGVscD0iaG9tZSBkaXJlY3Rvcnkgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUQiLCAiLS1kZWZhdWx0cyIsIGhlbHA9InByaW50IG9yIGNoYW5nZSBkZWZhdWx0IHVzZXJhZGQgY29uZmlndXJhdGlvbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0tZXhwaXJlZGF0ZSIsIG1ldGF2YXI9IkVYUElSRV9EQVRFIiwgaGVscD0iZXhwaXJhdGlvbiBkYXRlIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0taW5hY3RpdmUiLCBtZXRhdmFyPSJJTkFDVElWRSIsIGhlbHA9InBhc3N3b3JkIGluYWN0aXZpdHkgcGVyaW9kIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1nIiwgIi0tZ2lkIiwgbWV0YXZhcj0iR1JPVVAiLCBoZWxwPSJuYW1lIG9yIElEIG9mIHRoZSBwcmltYXJ5IGdyb3VwIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1HIiwgIi0tZ3JvdXBzIiwgbWV0YXZhcj0iR1JPVVBTIiwgaGVscD0ibGlzdCBvZiBzdXBwbGVtZW50YXJ5IGdyb3VwcyBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItayIsICItLXNrZWwiLCBtZXRhdmFyPSJTS0VMX0RJUiIsIGhlbHA9InVzZSB0aGlzIGFsdGVybmF0aXZlIHNrZWxldG9uIGRpcmVjdG9yeSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1LIiwgIi0ta2V5IiwgbWV0YXZhcj0iS0VZPVZBTFVFIiwgaGVscD0ib3ZlcnJpZGUgL2V0Yy9sb2dpbi5kZWZzIGRlZmF1bHRzIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWwiLCAiLS1uby1sb2ctaW5pdCIsIGhlbHA9ImRvIG5vdCBhZGQgdGhlIHVzZXIgdG8gdGhlIGxhc3Rsb2cgYW5kIGZhaWxsb2cgZGF0YWJhc2VzIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW0iLCAiLS1jcmVhdGUtaG9tZSIsIGhlbHA9ImNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PVRydWUpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1NIiwgIi0tbm8tY3JlYXRlLWhvbWUiLCBkZXN0PSJjcmVhdGVfaG9tZSIsIGhlbHA9ImRvIG5vdCBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1GYWxzZSkKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLU4iLCAiLS1uby11c2VyLWdyb3VwIiwgZGVzdD0idXNlcl9ncm91cCIsIGhlbHA9ImRvIG5vdCBjcmVhdGUgYSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXIiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9RmFsc2UpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tbm9uLXVuaXF1ZSIsIGhlbHA9ImFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSBVSUQpIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wYXNzd29yZCIsIG1ldGF2YXI9IlBBU1NXT1JEIiwgaGVscD0iZW5jcnlwdGVkIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1QIiwgIi0tY2xlYXItcGFzc3dvcmQiLCBtZXRhdmFyPSJDTEVBUl9QQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUiIsICItLXJvb3QiLCBtZXRhdmFyPSJDSFJPT1RfRElSIiwgaGVscD0iZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1zeXN0ZW0iLCBoZWxwPSJjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1zIiwgIi0tc2hlbGwiLCBtZXRhdmFyPSJTSEVMTCIsIGhlbHA9ImxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi11IiwgIi0tdWlkIiwgbWV0YXZhcj0iVUlEIiwgaGVscD0idXNlciBJRCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItVSIsICItLXVzZXItZ3JvdXAiLCBoZWxwPSJjcmVhdGUgYSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXIiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9VHJ1ZSkKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiTE9HSU4iLCBoZWxwPSJMb2dpbiBuYW1lIG9mIHRoZSBuZXcgdXNlciIpCi0KLSAgICAgICAgIyBSZXR1cm4gYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb24gZWl0aGVyIHRoZSBkZWZhdWx0Ci0gICAgICAgICMgZmlsZXMvcGFzc3dkIG9yIHRoZSBjb250ZW50cyBvZiBVU0VSQUREX1VJRF9UQUJMRVMKLSAgICAgICAgIyBwYXRocyBhcmUgcmVzb2x2ZWQgdmlhIEJCUEFUSAotICAgICAgICBkZWYgZ2V0X3Bhc3N3ZF9saXN0KGQpOgotICAgICAgICAgICAgc3RyID0gIiIKLSAgICAgICAgICAgIGJicGF0aCA9IGQuZ2V0VmFyKCdCQlBBVEgnKQotICAgICAgICAgICAgcGFzc3dkX3RhYmxlcyA9IGQuZ2V0VmFyKCdVU0VSQUREX1VJRF9UQUJMRVMnKQotICAgICAgICAgICAgaWYgbm90IHBhc3N3ZF90YWJsZXM6Ci0gICAgICAgICAgICAgICAgcGFzc3dkX3RhYmxlcyA9ICdmaWxlcy9wYXNzd2QnCi0gICAgICAgICAgICBmb3IgY29uZl9maWxlIGluIHBhc3N3ZF90YWJsZXMuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBzdHIgKz0gIiAlcyIgJSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKLSAgICAgICAgICAgIHJldHVybiBzdHIKKyAgICAgICAgcGFyc2VyID0gb2UudXNlcmFkZC5idWlsZF91c2VyYWRkX3BhcnNlcigpCiAKICAgICAgICAgbmV3cGFyYW1zID0gW10KICAgICAgICAgdXNlcnMgPSBOb25lCi0gICAgICAgIGZvciBwYXJhbSBpbiByZS5zcGxpdCgnJydbIFx0XSo7WyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW1zKToKLSAgICAgICAgICAgIHBhcmFtID0gcGFyYW0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHBhcmFtOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBwYXJhbSBpbiBvZS51c2VyYWRkLnNwbGl0X2NvbW1hbmRzKHBhcmFtcyk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdWFhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MocmUuc3BsaXQoJycnWyBcdF0rKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW0pKQorICAgICAgICAgICAgICAgIHVhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKG9lLnVzZXJhZGQuc3BsaXRfYXJncyhwYXJhbSkpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBVbmFibGUgdG8gcGFyc2UgYXJndW1lbnRzIGZvciBVU0VSQUREX1BBUkFNXyVzOiAnJXMnIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCBwYXJhbSkpCiAKQEAgLTEyMSwxMCArOTEsMTIgQEAKICAgICAgICAgICAgICMgYWxsIG5ldyB1c2VycyBnZXQgdGhlIGRlZmF1bHQgKCcqJyB3aGljaCBwcmV2ZW50cyBsb2dpbikgdW50aWwgdGhlIHVzZXIgaXMKICAgICAgICAgICAgICMgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQgYnkgdGhlIHN5c3RlbSBhZG1pbi4KICAgICAgICAgICAgIGlmIG5vdCB1c2VyczoKLSAgICAgICAgICAgICAgICB1c2VycyA9IG1lcmdlX2ZpbGVzKGdldF9wYXNzd2RfbGlzdChkKSwgNykKKyAgICAgICAgICAgICAgICBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSA9IGdldF90YWJsZV9saXN0KGQsICdVU0VSQUREX1VJRF9UQUJMRVMnLCAnZmlsZXMvcGFzc3dkJykKKyAgICAgICAgICAgICAgICB1c2VycyA9IG1lcmdlX2ZpbGVzKGZpbGVzLCA3KQogCisgICAgICAgICAgICB0eXBlID0gJ3N5c3RlbSB1c2VyJyBpZiB1YWFyZ3Muc3lzdGVtIGVsc2UgJ25vcm1hbCB1c2VyJwogICAgICAgICAgICAgaWYgdWFhcmdzLkxPR0lOIG5vdCBpbiB1c2VyczoKLSAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZCh1YWFyZ3MuTE9HSU4sICd1c2VyJywgcGtnKQorICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgdHlwZSwgcGtnLCBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSkKICAgICAgICAgICAgICAgICBuZXdwYXJhbXMuYXBwZW5kKHBhcmFtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTE4Miw3ICsxNTQsNyBAQAogCiAgICAgICAgICAgICAjIFNob3VsZCBiZSBhbiBlcnJvciBpZiBhIHNwZWNpZmljIG9wdGlvbiBpcyBzZXQuLi4KICAgICAgICAgICAgIGlmIG5vdCB1YWFyZ3MudWlkIG9yIG5vdCB1YWFyZ3MudWlkLmlzZGlnaXQoKSBvciBub3QgdWFhcmdzLmdpZDoKLSAgICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQodWFhcmdzLkxPR0lOLCAndXNlcicsIHBrZykKKyAgICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQodWFhcmdzLkxPR0lOLCB0eXBlLCBwa2csIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlKQogCiAgICAgICAgICAgICAjIFJlY29uc3RydWN0IHRoZSBhcmdzLi4uCiAgICAgICAgICAgICBuZXdwYXJhbSAgPSBbJycsICcgLS1kZWZhdWx0cyddW3VhYXJncy5kZWZhdWx0c10KQEAgLTIxNyw0MCArMTg5LDE0IEBACiAKICAgICAjIFdlIHBhcnNlIGFuZCByZXdyaXRlIHRoZSBncm91cGFkZCBjb21wb25lbnRzCiAgICAgZGVmIHJld3JpdGVfZ3JvdXBhZGQocGFyYW1zLCBpc19wa2cpOgotICAgICAgICAjIFRoZSBmb2xsb3dpbmcgY29tZXMgZnJvbSAtLWhlbHAgb24gZ3JvdXBhZGQgZnJvbSBzaGFkb3cKLSAgICAgICAgcGFyc2VyID0gbXlBcmd1bWVudFBhcnNlcihwcm9nPSdncm91cGFkZCcpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0tZm9yY2UiLCBoZWxwPSJleGl0IHN1Y2Nlc3NmdWxseSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBleGlzdHMsIGFuZCBjYW5jZWwgLWcgaWYgdGhlIEdJRCBpcyBhbHJlYWR5IHVzZWQiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZyIsICItLWdpZCIsIG1ldGF2YXI9IkdJRCIsIGhlbHA9InVzZSBHSUQgZm9yIHRoZSBuZXcgZ3JvdXAiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItSyIsICItLWtleSIsIG1ldGF2YXI9IktFWT1WQUxVRSIsIGhlbHA9Im92ZXJyaWRlIC9ldGMvbG9naW4uZGVmcyBkZWZhdWx0cyIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tbm9uLXVuaXF1ZSIsIGhlbHA9ImFsbG93IHRvIGNyZWF0ZSBncm91cHMgd2l0aCBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1wIiwgIi0tcGFzc3dvcmQiLCBtZXRhdmFyPSJQQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1QIiwgIi0tY2xlYXItcGFzc3dvcmQiLCBtZXRhdmFyPSJDTEVBUl9QQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVIiLCAiLS1yb290IiwgbWV0YXZhcj0iQ0hST09UX0RJUiIsIGhlbHA9ImRpcmVjdG9yeSB0byBjaHJvb3QgaW50byIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tc3lzdGVtIiwgaGVscD0iY3JlYXRlIGEgc3lzdGVtIGFjY291bnQiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJHUk9VUCIsIGhlbHA9Ikdyb3VwIG5hbWUgb2YgdGhlIG5ldyBncm91cCIpCi0KLSAgICAgICAgIyBSZXR1cm4gYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb24gZWl0aGVyIHRoZSBkZWZhdWx0Ci0gICAgICAgICMgZmlsZXMvZ3JvdXAgb3IgdGhlIGNvbnRlbnRzIG9mIFVTRVJBRERfR0lEX1RBQkxFUwotICAgICAgICAjIHBhdGhzIGFyZSByZXNvbHZlZCB2aWEgQkJQQVRICi0gICAgICAgIGRlZiBnZXRfZ3JvdXBfbGlzdChkKToKLSAgICAgICAgICAgIHN0ciA9ICIiCi0gICAgICAgICAgICBiYnBhdGggPSBkLmdldFZhcignQkJQQVRIJykKLSAgICAgICAgICAgIGdyb3VwX3RhYmxlcyA9IGQuZ2V0VmFyKCdVU0VSQUREX0dJRF9UQUJMRVMnKQotICAgICAgICAgICAgaWYgbm90IGdyb3VwX3RhYmxlczoKLSAgICAgICAgICAgICAgICBncm91cF90YWJsZXMgPSAnZmlsZXMvZ3JvdXAnCi0gICAgICAgICAgICBmb3IgY29uZl9maWxlIGluIGdyb3VwX3RhYmxlcy5zcGxpdCgpOgotICAgICAgICAgICAgICAgIHN0ciArPSAiICVzIiAlIGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKQotICAgICAgICAgICAgcmV0dXJuIHN0cgorICAgICAgICBwYXJzZXIgPSBvZS51c2VyYWRkLmJ1aWxkX2dyb3VwYWRkX3BhcnNlcigpCiAKICAgICAgICAgbmV3cGFyYW1zID0gW10KICAgICAgICAgZ3JvdXBzID0gTm9uZQotICAgICAgICBmb3IgcGFyYW0gaW4gcmUuc3BsaXQoJycnWyBcdF0qO1sgXHRdKig/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtcyk6Ci0gICAgICAgICAgICBwYXJhbSA9IHBhcmFtLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBwYXJhbToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3IgcGFyYW0gaW4gb2UudXNlcmFkZC5zcGxpdF9jb21tYW5kcyhwYXJhbXMpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgSWYgd2UncmUgcHJvY2Vzc2luZyBtdWx0aXBsZSBsaW5lcywgd2UgY291bGQgaGF2ZSBsZWZ0IG92ZXIgdmFsdWVzIGhlcmUuLi4KLSAgICAgICAgICAgICAgICBnYWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhyZS5zcGxpdCgnJydbIFx0XSsoPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbSkpCisgICAgICAgICAgICAgICAgZ2FhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mob2UudXNlcmFkZC5zcGxpdF9hcmdzKHBhcmFtKSkKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXM6IFVuYWJsZSB0byBwYXJzZSBhcmd1bWVudHMgZm9yIEdST1VQQUREX1BBUkFNXyVzOiAnJXMnIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCBwYXJhbSkpCiAKQEAgLTI2NCwxMCArMjEwLDEyIEBACiAgICAgICAgICAgICAjIE5vdGU6IHNpbWlsYXIgdG8gdGhlIHBhc3N3ZCBmaWxlLCB0aGUgJ3Bhc3N3b3JkJyBmaWxlZCBpcyBpZ25vcmVkCiAgICAgICAgICAgICAjIE5vdGU6IGdyb3VwX21lbWJlcnMgaXMgaWdub3JlZCwgZ3JvdXAgbWVtYmVycyBtdXN0IGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgR1JPVVBNRU1TX1BBUkFNCiAgICAgICAgICAgICBpZiBub3QgZ3JvdXBzOgotICAgICAgICAgICAgICAgIGdyb3VwcyA9IG1lcmdlX2ZpbGVzKGdldF9ncm91cF9saXN0KGQpLCA0KQorICAgICAgICAgICAgICAgIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlID0gZ2V0X3RhYmxlX2xpc3QoZCwgJ1VTRVJBRERfR0lEX1RBQkxFUycsICdmaWxlcy9ncm91cCcpCisgICAgICAgICAgICAgICAgZ3JvdXBzID0gbWVyZ2VfZmlsZXMoZmlsZXMsIDQpCiAKKyAgICAgICAgICAgIHR5cGUgPSAnc3lzdGVtIGdyb3VwJyBpZiBnYWFyZ3Muc3lzdGVtIGVsc2UgJ25vcm1hbCBncm91cCcKICAgICAgICAgICAgIGlmIGdhYXJncy5HUk9VUCBub3QgaW4gZ3JvdXBzOgotICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKGdhYXJncy5HUk9VUCwgJ2dyb3VwJywgcGtnKQorICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKGdhYXJncy5HUk9VUCwgdHlwZSwgcGtnLCBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSkKICAgICAgICAgICAgICAgICBuZXdwYXJhbXMuYXBwZW5kKHBhcmFtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTI3OSw3ICsyMjcsNyBAQAogICAgICAgICAgICAgICAgIGdhYXJncy5naWQgPSBmaWVsZFsyXQogCiAgICAgICAgICAgICBpZiBub3QgZ2FhcmdzLmdpZCBvciBub3QgZ2FhcmdzLmdpZC5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQoZ2FhcmdzLkdST1VQLCAnZ3JvdXAnLCBwa2cpCisgICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQoZ2FhcmdzLkdST1VQLCB0eXBlLCBwa2csIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlKQogCiAgICAgICAgICAgICAjIFJlY29uc3RydWN0IHRoZSBhcmdzLi4uCiAgICAgICAgICAgICBuZXdwYXJhbSAgPSBbJycsICcgLS1mb3JjZSddW2dhYXJncy5mb3JjZV0KQEAgLTMzNSwxMSArMjgzLDcgQEAKIAogICAgICNiYi53YXJuKCJCZWZvcmU6ICAnRVhUUkFfVVNFUlNfUEFSQU1TJyAtICclcyciICUgKGQuZ2V0VmFyKCdFWFRSQV9VU0VSU19QQVJBTVMnKSkpCiAgICAgbmV3X2V4dHJhdXNlcnMgPSBbXQotICAgIGZvciBjbWQgaW4gcmUuc3BsaXQoJycnWyBcdF0qO1sgXHRdKig/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIGV4dHJhdXNlcnMpOgotICAgICAgICBjbWQgPSBjbWQuc3RyaXAoKQotICAgICAgICBpZiBub3QgY21kOgotICAgICAgICAgICAgY29udGludWUKLQorICAgIGZvciBjbWQgaW4gb2UudXNlcmFkZC5zcGxpdF9jb21tYW5kcyhleHRyYXVzZXJzKToKICAgICAgICAgaWYgcmUubWF0Y2goJycndXNlcmFkZCAoLiopJycnLCBjbWQpOgogICAgICAgICAgICAgdXNlcmFkZF9wYXJhbSA9IHJlLm1hdGNoKCcnJ3VzZXJhZGQgKC4qKScnJywgY21kKS5ncm91cCgxKQogICAgICAgICAgICAgdXNlcmFkZF9wYXJhbSA9IHJld3JpdGVfdXNlcmFkZCh1c2VyYWRkX3BhcmFtLCBGYWxzZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLmJiY2xhc3MKaW5kZXggMGY1NTFiNS4uMTI0YmVjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLmJiY2xhc3MKQEAgLTExOCw2ICsxMTgsNyBAQAogCSMgdXNlcmFkZC9ncm91cGFkZCB0b29scyBhcmUgdW5hdmFpbGFibGUuIElmIHRoZXJlIGlzIG5vIGRlcGVuZGVuY3ksIHdlIGFzc3VtZSB3ZSBkb24ndCB3YW50IHRvCiAJIyBjcmVhdGUgdXNlcnMgaW4gdGhlIHN5c3Jvb3QKIAlpZiAhIGNvbW1hbmQgLXYgdXNlcmFkZDsgdGhlbgorCQliYndhcm4gImNvbW1hbmQgdXNlcmFkZCBub3QgZm91bmQhIgogCQlleGl0IDAKIAlmaQogCkBAIC0xMzksMjIgKzE0MCwxOSBAQAogRVhUUkFfU1RBR0lOR19GSVhNRVMgKz0gIkNPTVBPTkVOVFNfRElSIFBTRVVET19MT0NBTFNUQVRFRElSIExPR0ZJRk8iCiAKIHB5dGhvbiB1c2VyYWRkX3N5c3Jvb3Rfc3N0YXRlICgpIHsKKyAgICBzY3JpcHRmaWxlID0gTm9uZQogICAgIHRhc2sgPSBkLmdldFZhcigiQkJfQ1VSUkVOVFRBU0siKQogICAgIGlmIHRhc2sgPT0gInBhY2thZ2Vfc2V0c2NlbmUiOgogICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoInVzZXJhZGRfc3lzcm9vdCIsIGQpCiAgICAgZWxpZiB0YXNrID09ICJwcmVwYXJlX3JlY2lwZV9zeXNyb290IjoKICAgICAgICAgIyBVc2VkIHRvIHVwZGF0ZSB0aGlzIHJlY2lwZSdzIG93biBzeXNyb290IHNvIHRoZSB1c2VyL2dyb3VwcyBhcmUgYXZhaWxhYmxlIHRvIGRvX2luc3RhbGwKICAgICAgICAgc2NyaXB0ZmlsZSA9IGQuZXhwYW5kKCIke1JFQ0lQRV9TWVNST09UfSR7YmluZGlyfS9wb3N0aW5zdC11c2VyYWRkLSR7UE59IikKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShzY3JpcHRmaWxlKSkKLSAgICAgICAgd2l0aCBvcGVuKHNjcmlwdGZpbGUsICd3JykgYXMgc2NyaXB0OgotICAgICAgICAgICAgc2NyaXB0LndyaXRlKCIjIS9iaW4vc2hcbiIpCi0gICAgICAgICAgICBiYi5kYXRhLmVtaXRfZnVuYygidXNlcmFkZF9zeXNyb290Iiwgc2NyaXB0LCBkKQotICAgICAgICAgICAgc2NyaXB0LndyaXRlKCJ1c2VyYWRkX3N5c3Jvb3RcbiIpCi0gICAgICAgIG9zLmNobW9kKHNjcmlwdGZpbGUsIDBvNzU1KQogICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoInVzZXJhZGRfc3lzcm9vdCIsIGQpCiAgICAgZWxpZiB0YXNrID09ICJwb3B1bGF0ZV9zeXNyb290IjoKICAgICAgICAgIyBVc2VkIHdoZW4gaW5zdGFsbGVkIGluIGRlcGVuZGVudCB0YXNrIHN5c3Jvb3RzCiAgICAgICAgIHNjcmlwdGZpbGUgPSBkLmV4cGFuZCgiJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LXVzZXJhZGQtJHtQTn0iKQorCisgICAgaWYgc2NyaXB0ZmlsZToKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShzY3JpcHRmaWxlKSkKICAgICAgICAgd2l0aCBvcGVuKHNjcmlwdGZpbGUsICd3JykgYXMgc2NyaXB0OgogICAgICAgICAgICAgc2NyaXB0LndyaXRlKCIjIS9iaW4vc2hcbiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKaW5kZXggOTY0NjNhYi4uOGUwN2VhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcwpAQCAtMzIwLDcgKzMyMCw3IEBACiAKIAogZGVmIGNoZWNrX2FwcF9leGlzdHMoYXBwLCBkKToKLSAgICBhcHAgPSBkLmV4cGFuZChhcHApLnN0cmlwKCkKKyAgICBhcHAgPSBkLmV4cGFuZChhcHApLnNwbGl0KClbMF0uc3RyaXAoKQogICAgIHBhdGggPSBkLmdldFZhcignUEFUSCcpCiAgICAgcmV0dXJuIGJvb2woYmIudXRpbHMud2hpY2gocGF0aCwgYXBwKSkKIApAQCAtMzY5LDYgKzM2OSw3IEBACiAgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQogICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKICAgICByZXR1cm4gbG9jYWxkYXRhCitnZXRfbXVsdGlsaWJfZGF0YXN0b3JlW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCiAKIGRlZiBhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgdmFyLCB1bmlxdWUgPSBUcnVlLCBuZWVkX3NwbGl0ID0gVHJ1ZSwgZGVsaW0gPSAnICcpOgogICAgICIiIlJldHVybiBhIHN0cmluZyBvZiBhbGwgJHt2YXJ9IGluIGFsbCBtdWx0aWxpYiB0dW5lIGNvbmZpZ3VyYXRpb24iIiIKQEAgLTQzMSw2ICs0MzIsNyBAQAogICAgICAgICB2YWx1ZXNbdl0uYXBwZW5kKGxvY2FsZGF0YS5nZXRWYXIodikpCiAgICAgICAgIHZhbHVlc1snbWwnXS5hcHBlbmQoaXRlbSkKICAgICByZXR1cm4gdmFsdWVzCithbGxfbXVsdGlsaWJfdHVuZV9saXN0W3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCiAKICMgSWYgdGhlIHVzZXIgaGFzbid0IHNldCB1cCB0aGVpciBuYW1lL2VtYWlsLCBzZXQgc29tZSBkZWZhdWx0cwogY2hlY2tfZ2l0X2NvbmZpZygpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCmluZGV4IGM0Njk4ZTkuLmFjYmRhMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcwpAQCAtMjUsOCArMjUsMjMgQEAKIAogICAgIHJldHVybiAiIgogCitweXRob24gd2FmX3ByZWNvbmZpZ3VyZSgpIHsKKyAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBTdHJpY3RWZXJzaW9uCisgICAgc3Jjc3ViZGlyID0gZC5nZXRWYXIoJ1MnKQorICAgIHdhZmJpbiA9IG9zLnBhdGguam9pbihzcmNzdWJkaXIsICd3YWYnKQorICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KHdhZmJpbiArICIgLS12ZXJzaW9uIikKKyAgICBpZiBzdGF0dXMgIT0gMDoKKyAgICAgICAgYmIud2FybigiVW5hYmxlIHRvIGV4ZWN1dGUgd2FmIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkLiBBc3N1bWluZyB3YWYgdmVyc2lvbiB3aXRob3V0IGJpbmRpci9saWJkaXIgc3VwcG9ydC4iICUgc3RhdHVzKQorICAgICAgICByZXR1cm4KKyAgICB2ZXJzaW9uID0gcmVzdWx0LnNwbGl0KClbMV0KKyAgICBpZiBTdHJpY3RWZXJzaW9uKHZlcnNpb24pID49IFN0cmljdFZlcnNpb24oIjEuOC43Iik6CisgICAgICAgIGQuc2V0VmFyKCJXQUZfRVhUUkFfQ09ORiIsICItLWJpbmRpcj0ke2JpbmRpcn0gLS1saWJkaXI9JHtsaWJkaXJ9IikKK30KKworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAid2FmX3ByZWNvbmZpZ3VyZSIKKwogd2FmX2RvX2NvbmZpZ3VyZSgpIHsKLQkke1N9L3dhZiBjb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9ICR7RVhUUkFfT0VDT05GfQorCSR7U30vd2FmIGNvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gJHtXQUZfRVhUUkFfQ09ORn0gJHtFWFRSQV9PRUNPTkZ9CiB9CiAKIHdhZl9kb19jb21waWxlKCkgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKaW5kZXggMmRhYzNhMS4uOTY5NjI3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTE3LDExICsxNywxMyBAQAogZXhwb3J0IHByZWZpeCA9ICIvdXNyIgogZXhwb3J0IGV4ZWNfcHJlZml4ID0gIiR7cHJlZml4fSIKIAorcm9vdF9wcmVmaXggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcke2V4ZWNfcHJlZml4fScsICcke2Jhc2VfcHJlZml4fScsIGQpfSIKKwogIyBCYXNlIHBhdGhzCi1leHBvcnQgYmFzZV9iaW5kaXIgPSAiJHtiYXNlX3ByZWZpeH0vYmluIgotZXhwb3J0IGJhc2Vfc2JpbmRpciA9ICIke2Jhc2VfcHJlZml4fS9zYmluIgotZXhwb3J0IGJhc2VfbGliZGlyID0gIiR7YmFzZV9wcmVmaXh9LyR7YmFzZWxpYn0iCi1leHBvcnQgbm9uYXJjaF9iYXNlX2xpYmRpciA9ICIke2Jhc2VfcHJlZml4fS9saWIiCitleHBvcnQgYmFzZV9iaW5kaXIgPSAiJHtyb290X3ByZWZpeH0vYmluIgorZXhwb3J0IGJhc2Vfc2JpbmRpciA9ICIke3Jvb3RfcHJlZml4fS9zYmluIgorZXhwb3J0IGJhc2VfbGliZGlyID0gIiR7cm9vdF9wcmVmaXh9LyR7YmFzZWxpYn0iCitleHBvcnQgbm9uYXJjaF9iYXNlX2xpYmRpciA9ICIke3Jvb3RfcHJlZml4fS9saWIiCiAKICMgQXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50IHBhdGhzCiBleHBvcnQgc3lzY29uZmRpciA9ICIke2Jhc2VfcHJlZml4fS9ldGMiCkBAIC04Myw2ICs4NSwxMCBAQAogIyBSb290IGhvbWUgZGlyZWN0b3J5CiBST09UX0hPTUUgPz89ICIvaG9tZS9yb290IgogCisjIElmIHNldCB0byBib29sZWFuIHRydWUgKCd5ZXMnLCAneScsICd0cnVlJywgJ3QnLCAnMScpLCAvdmFyL2xvZyBsaW5rcyB0byAvdmFyL3ZvbGF0aWxlL2xvZy4KKyMgSWYgc2V0IHRvIGJvb2xlYW4gZmFsc2UgKCdubycsICduJywgJ2ZhbHNlJywgJ2YnLCAnMCcpLCAvdmFyL2xvZyBpcyBvbiBwZXJzaXN0ZW50IHN0b3JhZ2UuCitWT0xBVElMRV9MT0dfRElSID89ICJ5ZXMiCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBcmNoaXRlY3R1cmUtZGVwZW5kZW50IGJ1aWxkIHZhcmlhYmxlcy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTcwLDYgKzE3Niw3IEBACiAgICAgY2hycGF0aC1uYXRpdmUgXAogICAgIGZpbGUtbmF0aXZlIFwKICAgICBmaW5kdXRpbHMtbmF0aXZlIFwKKyAgICBnYXdrLW5hdGl2ZSBcCiAgICAgZ2l0LW5hdGl2ZSBcCiAgICAgZ3JlcC1uYXRpdmUgXAogICAgIGRpZmZzdGF0LW5hdGl2ZSBcCkBAIC0zMjQsNiArMzMxLDE0IEBACiAjIFRoaXMgZGVmYXVsdCB3YXMgb25seSB1c2VkIGZvciBjaGVja2luZwogRklMRVNFWFRSQVBBVEhTID89ICJfX2RlZmF1bHQ6IgogCisjIFRoZSBkZWZhdWx0IGxpc3Qgb2YgZnMtcGVybXMgZmlsZXMgdG8gcHJvY2Vzcy4gIElmIHRoZSBsaXN0IGlzIGVtcHR5IG9ubHkKKyMgdGhlIGJ1aWx0aW4gZGVmaW5pdGlvbnMgd2lsbCBiZSB1c2VkLiAgQnVpbHRpbiBkZWZpbml0aW9ucyBpbmNsdWRlZDoKKyMgIGJhc2VfcHJlZml4LCBwcmVmaXgsIGV4ZWNfcHJlZml4LCBiYXNlX2JpbmRpciwgYmFzZV9zYmluZGlyLCBiYXNlX2xpYmRpciwKKyMgIGRhdGFkaXIsIHN5c2NvbmZkaXIsIHNlcnZpY2VkaXIsIHNoYXJlZHN0YXRlZGlyLCBsb2NhbHN0YXRlZGlyLCBpbmZvZGlyLAorIyAgbWFuZGlyLCBkb2NkaXIsIGJpbmRpciwgc2JpbmRpciwgbGliZXhlY2RpciwgbGliZGlyLCBpbmNsdWRlZGlyIGFuZAorIyAgb2xkaW5jbHVkZWRpcgorRklMRVNZU1RFTV9QRVJNU19UQUJMRVMgPz0gIiR7QCdmaWxlcy9mcy1wZXJtcy50eHQnIGlmIG9lLnR5cGVzLmJvb2xlYW4oZC5nZXRWYXIoJ1ZPTEFUSUxFX0xPR19ESVInKSkgZWxzZSAnZmlsZXMvZnMtcGVybXMtcGVyc2lzdGVudC1sb2cudHh0J30iCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBHZW5lcmFsIHdvcmsgYW5kIG91dHB1dCBkaXJlY3RvcmllcyBmb3IgdGhlIGJ1aWxkIHN5c3RlbS4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDYxLDcgKzQ3Niw3IEBACiAgICAgWyBhciBhcyBhd2sgYmFzZW5hbWUgYmFzaCBiemlwMiBjYXQgY2hncnAgY2htb2QgY2hvd24gY2hycGF0aCBjbXAgY3AgY3BpbyBcCiAgICAgY3BwIGN1dCBkYXRlIGRkIGRpZmYgZGlmZnN0YXQgZGlybmFtZSBkdSBlY2hvIGVncmVwIGVudiBleHBhbmQgZXhwciBmYWxzZSBcCiAgICAgZmdyZXAgZmlsZSBmaW5kIGZsb2NrIGcrKyBnYXdrIGdjYyBnZXRjb25mIGdldG9wdCBnaXQgZ3JlcCBndW56aXAgZ3ppcCBcCi0gICAgaGVhZCBob3N0bmFtZSBpbnN0YWxsIGxkIGxkZCBsbiBscyBtYWtlIG1ha2VpbmZvIG1kNXN1bSBta2RpciBta25vZCBcCisgICAgaGVhZCBob3N0bmFtZSBpZCBpbnN0YWxsIGxkIGxkZCBsbiBscyBtYWtlIG1ha2VpbmZvIG1kNXN1bSBta2RpciBta25vZCBcCiAgICAgbWt0ZW1wIG12IG5tIG9iamNvcHkgb2JqZHVtcCBvZCBwYXRjaCBwZXJsIHBvZDJtYW4gcHIgcHJpbnRmIHB3ZCBweXRob24gcHl0aG9uMiBcCiAgICAgcHl0aG9uMi43IHB5dGhvbjMgcmFubGliIHJlYWRlbGYgcmVhZGxpbmsgcm0gcm1kaXIgcnBjZ2VuIHNlZCBzaCBzaGEyNTZzdW0gXAogICAgIHNsZWVwIHNvcnQgc3BsaXQgc3RhdCBzdHJpbmdzIHN0cmlwIHRhaWwgdGFyIHRlZSB0ZXN0IHRvdWNoIHRyIHRydWUgdW5hbWUgXApAQCAtNDY5LDEwICs0ODQsMTAgQEAKICIKIAogIyBUb29scyBuZWVkZWQgdG8gcnVuIHRlc3RpbWFnZSBydW50aW1lIGltYWdlIHRlc3RpbmcKLUhPU1RUT09MUyArPSAiaXAgcGluZyBwcyBzY3Agc3NoIHN0dHkiCitIT1NUVE9PTFMgKz0gIiR7QFsnJywgJ2lwIHBpbmcgcHMgc2NwIHNzaCBzdHR5J11bYmIuZGF0YS5pbmhlcml0c19jbGFzcygndGVzdGltYWdlJywgZCldfSIKIAogIyBMaW5rIHRvIHRoZXNlIGlmIHByZXNlbnQKLUhPU1RUT09MU19OT05GQVRBTCArPSAiYXdzIGNjYWNoZSBnY2MtYXIgZ3BnIGxkLmJmZCBsZC5nb2xkIG5jIHNmdHAgc29jYXQgc3VkbyIKK0hPU1RUT09MU19OT05GQVRBTCArPSAiYXdzIGNjYWNoZSBnY2MtYXIgZ3BnIGxkLmJmZCBsZC5nb2xkIG5jIHNmdHAgc29jYXQgc3NoIHN1ZG8iCiAKICMgVGVtcG9yYXJ5IGFkZCBmZXcgbW9yZSBkZXRlY3RlZCBpbiBiaXRiYWtlIHdvcmxkCiBIT1NUVE9PTFNfTk9ORkFUQUwgKz0gImpvaW4gbmwgc2l6ZSB5ZXMgemNhdCIKQEAgLTQ4MSw5ICs0OTYsNiBAQAogSE9TVFRPT0xTX05PTkZBVEFMICs9ICJienIiCiAKIENDQUNIRSA/Pz0gIiIKLSMgRGlzYWJsZSBjY2FjaGUgZXhwbGljaXRseSBpZiBDQ0FDSEUgaXMgbnVsbCBzaW5jZSBnY2MgbWF5IGJlIGEgc3ltbGluawotIyBvZiBjY2FjaGUgc29tZSBkaXN0cmlidXRpb25zIChlLmcuLCBGZWRvcmEgMTcpLgotZXhwb3J0IENDQUNIRV9ESVNBQkxFID8/PSAiJHtAWzAsMV1bZC5nZXRWYXIoJ0NDQUNIRScpID09ICcnXX0iCiAjIGNjYWNoZSA8IDMuMS4xMCB3aWxsIGNyZWF0ZSBDQ0FDSEVfRElSIG9uIHN0YXJ0dXAgZXZlbiBpZiBkaXNhYmxlZCwgYW5kCiAjIGF1dG9nZW4gc2V0cyBIT01FPS9kZXYvbnVsbCBzbyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgYnVpbGRzIGNhbiBmYWlsLgogIyBFeHBsaWNpdGx5IGV4cG9ydCBDQ0FDSEVfRElSIHVudGlsIHdlIGNhbiBhc3N1bWUgY2NhY2hlID4zLjEuMTAgb24gdGhlIGhvc3QuCkBAIC01NDYsNiArNTU4LDcgQEAKIGV4cG9ydCBUQVJHRVRfQ0ZMQUdTID0gIiR7VEFSR0VUX0NQUEZMQUdTfSAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCiAKIGV4cG9ydCBCVUlMRF9DWFhGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCitCVUlMRFNES19DWFhGTEFHUyA9ICIke0JVSUxEU0RLX0NGTEFHU30iCiBleHBvcnQgQ1hYRkxBR1MgPSAiJHtUQVJHRVRfQ1hYRkxBR1N9IgogZXhwb3J0IFRBUkdFVF9DWFhGTEFHUyA9ICIke1RBUkdFVF9DRkxBR1N9IgogCkBAIC03MTQsMTEgKzcyNyw5IEBACiAjIFRoaXMgd29ya3MgZm9yICBmdW5jdGlvbnMgYXMgd2VsbCwgdGhleSBhcmUgcmVhbGx5IGp1c3QgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogIyBEZWZhdWx0IE9WRVJSSURFUyB0byBtYWtlIGNvbXBpbGF0aW9uIGZhaWwgZmFzdCBpbiBjYXNlIG9mIGJ1aWxkIHN5c3RlbSBtaXNjb25maWd1cmF0aW9uLgogT1ZFUlJJREVTID0gIiR7VEFSR0VUX09TfToke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9OmJ1aWxkLSR7QlVJTERfT1N9OnBuLSR7UE59OiR7TUFDSElORU9WRVJSSURFU306JHtESVNUUk9PVkVSUklERVN9OiR7Q0xBU1NPVkVSUklERX06Zm9yY2V2YXJpYWJsZSIKLU9WRVJSSURFU1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORU9WRVJSSURFUyIKIENMQVNTT1ZFUlJJREUgPz0gImNsYXNzLXRhcmdldCIKIERJU1RST09WRVJSSURFUyA/PSAiJHtAZC5nZXRWYXIoJ0RJU1RSTycpIG9yICcnfSIKIE1BQ0hJTkVPVkVSUklERVMgPz0gIiR7TUFDSElORX0iCi1NQUNISU5FT1ZFUlJJREVTW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCiBGSUxFU09WRVJSSURFUyA9ICIke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9OiR7TUFDSElORU9WRVJSSURFU306JHtESVNUUk9PVkVSUklERVN9IgogCkBAIC03MzEsMTAgKzc0Miw4IEBACiBpbmNsdWRlIGNvbmYvYXV0by5jb25mCiBpbmNsdWRlIGNvbmYvbG9jYWwuY29uZgogcmVxdWlyZSBjb25mL211bHRpY29uZmlnLyR7QkJfQ1VSUkVOVF9NQ30uY29uZgotaW5jbHVkZSBjb25mL2J1aWxkLyR7QlVJTERfU1lTfS5jb25mCiBpbmNsdWRlIGNvbmYvbWFjaGluZS8ke01BQ0hJTkV9LmNvbmYKIGluY2x1ZGUgY29uZi9tYWNoaW5lLXNkay8ke1NES01BQ0hJTkV9LmNvbmYKLWluY2x1ZGUgY29uZi90YXJnZXQvJHtUQVJHRVRfU1lTfS5jb25mCiBpbmNsdWRlIGNvbmYvZGlzdHJvLyR7RElTVFJPfS5jb25mCiBpbmNsdWRlIGNvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mCiBpbmNsdWRlIGNvbmYvZG9jdW1lbnRhdGlvbi5jb25mCkBAIC03OTgsNyArODA3LDcgQEAKIAogIyBOYXRpdmUgZGlzdHJvIGZlYXR1cmVzICh3aWxsIGFsd2F5cyBiZSB1c2VkIGZvciAtbmF0aXZlLCBldmVuIGlmIHRoZXkKICMgYXJlIG5vdCBlbmFibGVkIGZvciB0YXJnZXQpCi1ESVNUUk9fRkVBVFVSRVNfTkFUSVZFID89ICJ4MTEiCitESVNUUk9fRkVBVFVSRVNfTkFUSVZFID89ICJ4MTEgaXB2NiIKIERJU1RST19GRUFUVVJFU19OQVRJVkVTREsgPz0gIngxMSBsaWJjLWNoYXJzZXRzIGxpYmMtbG9jYWxlcyBsaWJjLWxvY2FsZS1jb2RlIgogCiAjIE5vcm1hbGx5IHRhcmdldCBkaXN0cm8gZmVhdHVyZXMgd2lsbCBub3QgYmUgYXBwbGllZCB0byBuYXRpdmUgYnVpbGRzOgpAQCAtODQ4LDcgKzg1Nyw3IEBACiAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAogICAgIFVTRVIgRklMRVNQQVRIIFNUQUdJTkdfRElSX0hPU1QgU1RBR0lOR19ESVJfVEFSR0VUIENPUkVCQVNFIFBSU0VSVl9IT1NUIFwKICAgICBQUlNFUlZfRFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dOIFBBUkFMTEVMX01BS0UgXAotICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIFwKKyAgICBDQ0FDSEVfRElSIEVYVEVSTkFMX1RPT0xDSEFJTiBDQ0FDSEUgQ0NBQ0hFX05PSEFTSERJUiBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIFwKICAgICBXQVJOX1FBIEVSUk9SX1FBIFdPUktESVIgU1RBTVBDTEVBTiBQS0dEQVRBX0RJUiBCVUlMRF9BUkNIIFNTVEFURV9QS0dBUkNIIFwKICAgICBCQl9XT1JLRVJDT05URVhUIEJCX0xJTUlURURERVBTIGV4dGVuZF9yZWNpcGVfc3lzcm9vdCBERVBMT1lfRElSIgogQkJfSEFTSENPTkZJR19XSElURUxJU1QgPz0gIiR7QkJfSEFTSEJBU0VfV0hJVEVMSVNUfSBEQVRFIFRJTUUgU1NIX0FHRU5UX1BJRCBcCkBAIC04NTYsNyArODY1LDcgQEAKICAgICBQQVJBTExFTF9NQUtFIEJCX05VTUJFUl9USFJFQURTIEJCX09SSUdFTlYgQkJfSU5WQUxJRENPTkYgQkJJTkNMVURFRCBcCiAgICAgR0lUX1BST1hZX0NPTU1BTkQgQUxMX1BST1hZIGFsbF9wcm94eSBOT19QUk9YWSBub19wcm94eSBGVFBfUFJPWFkgZnRwX3Byb3h5IFwKICAgICBIVFRQX1BST1hZIGh0dHBfcHJveHkgSFRUUFNfUFJPWFkgaHR0cHNfcHJveHkgU09DS1M1X1VTRVIgU09DS1M1X1BBU1NXRCBcCi0gICAgQkJfU0VUU0NFTkVfRU5GT1JDRSIKKyAgICBCQl9TRVRTQ0VORV9FTkZPUkNFIEJCX0NNRExJTkUgQkJfU0VSVkVSX1RJTUVPVVQiCiBCQl9TSUdOQVRVUkVfRVhDTFVERV9GTEFHUyA/PSAiZG9jIGRlcHMgZGVwZW5kcyBcCiAgICAgbG9ja2ZpbGVzIHR5cGUgdmFyZGVwc2V4Y2x1ZGUgdmFyZGVwcyB2YXJkZXB2YWx1ZSB2YXJkZXB2YWx1ZWV4Y2x1ZGUgXAogICAgIGZpbGUtY2hlY2tzdW1zIHB5dGhvbiBmdW5jIHRhc2sgZXhwb3J0IHVuZXhwb3J0IG5vZXhlYyBub3N0YW1wIGRpcnMgY2xlYW5kaXJzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvY29uZi1ub3Rlcy50eHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0CmluZGV4IDJmMjkzMmIuLmYxYTRmNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvY29uZi1ub3Rlcy50eHQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9jb25mLW5vdGVzLnR4dApAQCAtMSwzICsxLDggQEAKKworIyMjIFNoZWxsIGVudmlyb25tZW50IHNldCB1cCBmb3IgYnVpbGRzLiAjIyMKKworWW91IGNhbiBub3cgcnVuICdiaXRiYWtlIDx0YXJnZXQ+JworCiBDb21tb24gdGFyZ2V0cyBhcmU6CiAgICAgY29yZS1pbWFnZS1taW5pbWFsCiAgICAgY29yZS1pbWFnZS1zYXRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMKaW5kZXggMTE0ZDM3Ny4uNmE4YWQ5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYwpAQCAtOCw3ICs4LDYgQEAKIEFTTkVFREVEX3BuLWljdSA9ICIiCiBBU05FRURFRF9wbi1wY2l1dGlscyA9ICIiCiBBU05FRURFRF9wbi1wdXp6bGVzID0gIiIKLUFTTkVFREVEX3BuLXB1bHNlYXVkaW8gPSAiIgogQVNORUVERURfcG4tcnBtID0gIiIKIAogVEFSR0VUX0xERkxBR1MgKz0gIiR7QVNORUVERUR9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwppbmRleCBlY2U0ZDhiLi4yYjc2YzNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwpAQCAtNDYsNyArNDYsNiBAQAogUFJFRkVSUkVEX1BST1ZJREVSX2NvbnNvbGUtdG9vbHMgPz0gImtiZCIKIFBSRUZFUlJFRF9QUk9WSURFUl9nemlwLW5hdGl2ZSA/PSAicGlnei1uYXRpdmUiCiBQUkVGRVJSRURfUFJPVklERVJfdWRldiA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kJywnZXVkZXYnLGQpfSIKLVBSRUZFUlJFRF9SUFJPVklERVJfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV0b290aCBibHVlejUnLCdibHVlejUnLCdibHVlejQnLGQpfSIKIFBSRUZFUlJFRF9SUFJPVklERVJfYmx1ZXotaGNpZHVtcCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV0b290aCBibHVlejUnLCdibHVlejUnLCdibHVlei1oY2lkdW1wJyxkKX0iCiAjIEFsdGVybmF0aXZlIGlzIGx0cC1kZHQgaW4gbWV0YS1vZTogbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cC1kZHQvbHRwLWRkdF8wLjAuNC5iYgogUFJFRkVSUkVEX1BST1ZJREVSX2x0cCA/PSAibHRwIgpAQCAtNTQsMyArNTMsNyBAQAogUFJFRkVSUkVEX1BST1ZJREVSX29wZW5zc2wgPz0gIm9wZW5zc2wiCiBQUkVGRVJSRURfUFJPVklERVJfb3BlbnNzbC1uYXRpdmUgPz0gIm9wZW5zc2wtbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX25hdGl2ZXNkay1vcGVuc3NsID89ICJuYXRpdmVzZGstb3BlbnNzbCIKK1BSRUZFUlJFRF9QUk9WSURFUl9wa2djb25maWcgPz0gInBrZ2NvbmZpZyIKK1BSRUZFUlJFRF9QUk9WSURFUl9uYXRpdmVzZGstcGtnY29uZmlnID89ICJuYXRpdmVzZGstcGtnY29uZmlnIgorUFJFRkVSUkVEX1BST1ZJREVSX3BrZ2NvbmZpZy1uYXRpdmUgPz0gInBrZ2NvbmZpZy1uYXRpdmUiCitQUkVGRVJSRURfUlBST1ZJREVSX2luaXRkLWZ1bmN0aW9ucyA/PSAiaW5pdHNjcmlwdHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwppbmRleCBkOTc2NTA4Li44NjgwNzM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMKQEAgLTIsNiArMiw2IEBACiAjIERlZmF1bHQgcHJlZmVycmVkIHZlcnNpb25zCiAjCiAKLSMgRm9yY2UgdGhlIG9sZGVyIHZlcnNpb24gb2YgbGliZXJhdGlvbi1mb250cyB1bnRpbCB3ZSBmaXggdGhlIGZvbnRmb3JnZSBpc3N1ZQotUFJFRkVSUkVEX1ZFUlNJT05fbGliZXJhdGlvbi1mb250cyA/PSAiMS4wNCIKLQorUFJFRkVSUkVEX1ZFUlNJT05fb3BlbnNzbCA9ICIxLjAuJSIKK1BSRUZFUlJFRF9WRVJTSU9OX29wZW5zc2wtbmF0aXZlID0gIjEuMC4lIgorUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLW9wZW5zc2wgPSAiMS4wLiUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKaW5kZXggNDg5ZjVlYS4uZjdjOGI0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwpAQCAtMTUsNyArMTUsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWF0ayA9ICJGZWRvcmE9YXRrIE9wZW5TdVNFPWF0ayIKIERJU1RST19QTl9BTElBU19wbi1hdmFoaS11aSA9ICJVYnVudHU9YXZhaGktZGlzY292ZXIgRGViaWFuPWF2YWhpLWRpc2NvdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tYmR3Z2MgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmlncmVxc3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWJpZ3JlcXNwcm90byIKIERJU1RST19QTl9BTElBU19wbi1iamFtID0gIk9wZW5TdVNFPWJvb3N0LWphbSBEZWJpbmE9YmphbSIKIERJU1RST19QTl9BTElBU19wbi1ibGt0b29sID0gIkRlYmlhbj1ibGt0b29sIE1hbmRyaXZhPWJsa3Rvb2wiCkBAIC02Myw2ICs2Miw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS10ZXN0bWFzdGVyLWluaXRyYW1mcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2Utd2VzdG9uID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS14MTEgPSAiT0UtQ29yZSIKK0RJU1RST19QTl9BTElBU19wbi1jcmVhdGVyZXBvLWMgPSAiRmVkb3JhPWNyZWF0ZXJlcG9fYyBDbGVhcj1jcmVhdGVyZXBvX2MiCiBESVNUUk9fUE5fQUxJQVNfcG4tY3Jvc3MtbG9jYWxlZGVmID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWNyeXB0b2Rldi1saW51eCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNyeXB0b2Rldi1tb2R1bGUgPSAiT0UtQ29yZSIKQEAgLTEyOSw2ICsxMjksNyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgPSAiRGViaWFuPWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgVWJ1bnR1PWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICJEZWJpYW49Z3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBVYnVudHU9Z3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgogRElTVFJPX1BOX0FMSUFTX3BuLWdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlciA9ICJVYnVudHU9Z3N0cmVhbWVyMC4xMC1ydHNwIEZlZG9yYT1nc3RyZWFtZXItcnRzcCIKK0RJU1RST19QTl9BTElBU19wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiRmVkb3JhPWdzdHJlYW1lcjEtdmFhcGkgRGViaWFuPWdzdHJlYW1lci12YWFwaSBDbGVhcj1nc3RyZWFtZXItdmFhcGkiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3RrKyA9ICJNZWVnbz1ndGsyIEZlZG9yYT1ndGsyIE9wZW5TdVNFPWd0azIgVWJ1bnR1PWd0aysyLjAgTWFuZHJpdmE9Z3RrKzIuMCBEZWJpYW49Z3RrKzIuMCIKIERJU1RST19QTl9BTElBU19wbi1ndGsrMyA9ICJVYnVudHU9Z3RrKzMuMCBEZWJpYW49Z3RrKzMuMCBGZWRvcmE9Z3RrMyIKIERJU1RST19QTl9BTElBU19wbi1ndGstZG9jID0gIkZlZG9yYT1ndGstZG9jIFVidW50dT1ndGstZG9jIgpAQCAtMTUzLDcgKzE1NCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4taXByb3V0ZTIgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tanBlZyA9ICJPcGVuU3VTRT1saWJqcGVnIFVidW50dT1saWJqcGVnNjIiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2Jwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1rYnByb3RvIFVidW50dT14MTFwcm90by1rYi1kZXYgRGViaWFuPXgxMXByb3RvLWtiLWRldiIKLURJU1RST19QTl9BTElBU19wbi1rY29uZmlnLWZyb250ZW5kcyA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1rZXJuZWwtZGV2c3JjID0gIkRlYmlhbj1saW51eC1iYXNlIFVidW50dT1saW51eCIKIERJU1RST19QTl9BTElBU19wbi1rZXJuZWxzaGFyayA9ICJNYW5kcml2YT1rZXJuZWxzaGFyayBVYnVudHU9a2VybmVsc2hhcmsiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2Vybi10b29scy1uYXRpdmUgPSAiV2luZHJpdmVyIgpAQCAtMTk1LDYgKzE5NSw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tbGlib3dsID0gIkRlYmlhbj1vd2wgT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1saWJwYW0gPSAiTWVlZ289cGFtIEZlZG9yYT1wYW0gT3BlblN1U0U9cGFtIFVidW50dT1wYW0gTWFuZHJpdmE9cGFtIERlYmlhbj1wYW0iCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlicGNyZSA9ICJNYW5kcml2YT1saWJwY3JlMCBGZWRvcmE9cGNyZSIKK0RJU1RST19QTl9BTElBU19wbi1saWJwY3JlMiA9ICJGZWRvcmE9cGNyZTIgRGViaWFuPXBjcmUyIENsZWFyPXBjcmUyIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnBuZzEyID0gIkRlYmlhbj1saWJwbmcxMi0wIEZlZG9yYT1saWJwbmciCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlicG9kLXBsYWluZXItcGVybCA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1saWJzYW1wbGVyYXRlMCA9ICJNZWVnbz1saWJzYW1wbGVyYXRlIEZlZG9yYT1saWJzYW1wbGVyYXRlIE9wZW5TdVNFPWxpYnNhbXBsZXJhdGUgVWJ1bnR1PWxpYnNhbXBsZXJhdGUgTWFuZHJpdmE9bGlic2FtcGxlcmF0ZSBEZWJpYW49bGlic2FtcGxlcmF0ZSIKQEAgLTIwOSw2ICsyMTAsNyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnVzYi1jb21wYXQgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieDExID0gIkRlYmlhbj1saWJ4MTEtNiBGZWRvcmE9bGliWDExIFVidW50dT1saWJ4MTEtNiBPcGVuU3VTRT14b3JnLXgxMS1saWJYMTEiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieGNhbGlicmF0ZSA9ICJPU1BEVCB1cHN0cmVhbT1odHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9saWIvbGliWENhbGlicmF0ZS8iCitESVNUUk9fUE5fQUxJQVNfcG4tbGlieGZvbnQyID0gIkZlZG9yYT1saWJYZm9udDIgQ2xlYXI9bGliWGZvbnQyIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhmdCA9ICJNYW5kcml2YT1saWJ4ZnQgRGViaWFuPWxpYnhmdDIgVWJ1bnR1PWxpYnhmdDIiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieGkgPSAiVWJ1bnR1PWxpYnhpIEZlZG9yYT1saWJYaSIKIERJU1RST19QTl9BTElBU19wbi1saWJ4a2Jjb21tb24gPSAiRmVkb3JhPWxpYnhrYmNvbW1vbiBEZWJpYW49bGlieGtiY29tbW9uIgpAQCAtMzI1LDE0ICszMjcsMTYgQEAKIERJU1RST19QTl9BTElBU19wbi1wdXp6bGVzID0gIkRlYmlhbj1zZ3QtcHV6emxlcyBGZWRvcmE9cHV6emxlcyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zID0gIkZlZG9yYT1weXRob24zIERlYmlhbj1weXRob24zLjIiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1kaXN0cmlidXRlID0gIkRlYmlhbj1weXRob24zLXNldHVwdG9vbHMgRmVkb3JhPXB5dGhvbjMtc2V0dXB0b29scyIKK0RJU1RST19QTl9BTElBU19wbi1weXRob24zLWluaXBhcnNlID0gIkZlZG9yYT1weXRob24taW5pcGFyc2UgRGViaWFuPXB5dGhvbi1pbmlwYXJzZSIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLXBpcCA9ICJPcGVuU3VTRT1weXRob24zLXBpcCBEZWJpYW49cHl0aG9uMy1waXAiCitESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1weWN1cmwgPSAiRmVkb3JhPXB5dGhvbi1weWN1cmwgRGViaWFuPXB5Y3VybCIKK0RJU1RST19QTl9BTElBU19wbi1weXRob24zLXB5Z3BnbWUgPSAiRmVkb3JhPXB5dGhvbi1weWdwZ21lIERlYmlhbj1weWdwZ21lIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJPcGVuU3VTRT1weXRob24zLXNldHVwdG9vbHMgRGViaWFuPXB5dGhvbjMtc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZGJ1cyA9ICJVYnVudHU9cHl0aG9uLWRidXMgRGViaWFuPXB5dGhvbi1kYnVzIE1hbmRyaXZhPXB5dGhvbi1kYnVzIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIk9wZW5zdXNlPXB5dGhvbi1zZXR1cHRvb2xzIEZlZG9yYT1weXRob24tc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZ2l0ID0gIkRlYmlhbj1weXRob24tZ2l0IEZlZG9yYT1HaXRQeXRob24iCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLW1ha28gPSAiRmVkb3JhPXB5dGhvbi1tYWtvIE9wZW5zdXNlPXB5dGhvbi1NYWtvIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1weWNhaXJvID0gIk1lZWdvPXB5Y2Fpcm8gRmVkb3JhPXB5Y2Fpcm8gVWJ1bnR1PXB5Y2Fpcm8gRGViaWFuPXB5Y2Fpcm8iCi1ESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXB5Y3VybCA9ICJEZWJpYW49cHl0aG9uLXB5Y3VybCBVYnVudHU9cHl0aG9uLXB5Y3VybCIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tcHlnb2JqZWN0ID0gIk1lZWdvPXB5Z29iamVjdDIgRmVkb3JhPXB5Z29iamVjdDIgVWJ1bnR1PXB5Z29iamVjdCBEZWJpYW49cHlnb2JqZWN0IgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1zY29ucyA9ICJGZWRvcmE9c2NvbnMgT3BlblN1U0U9c2NvbnMgVWJ1bnR1PXNjb25zIE1hbmRyaXZhPXNjb25zIERlYmlhbj1zY29ucyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tc2V0dXB0b29scyA9ICJNYW5kcml2YT1weXRob24tc2V0dXAgT3BlblN1U0U9cHl0aG9uLXNldHVwLWdpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg3ODliMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCkBAIC0wLDAgKzEsODI3IEBACisjIFlvY3RvIFByb2plY3QgLyBPcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSkgTWFpbnRhaW5lcnMgRmlsZQorIworIyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHJlY2lwZSBtYWludGFpbmVycy4KKyMKKyMgUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHJlY2lwZXMgaW4gbWV0YSB0byB0aGUgCisjIE9FLUNvcmUgbWFpbCBsaXN0IChvcGVuZW1iZWRkZWQtY29yZUBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKQorIyBGb3IgcmVjaXBlcyBpbiBtZXRhLXlvY3RvIHBsZWFzZSB1c2UgdGhlIFBva3kgbGlzdCAocG9reUB5b2N0b3Byb2plY3Qub3JnKQorIworIyBJZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIG9yIHF1ZXN0aW9ucyBhYm91dCBhIHBhcnRpY3VsYXIgcmVjaXBlLCBmZWVsCisjIGZyZWUgdG8gY29udGFjdCB0aGUgbWFpbnRhaW5lciBkaXJlY3RseSAoY2M6aW5nIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3QKKyMgcHV0cyBpdCBpbiB0aGUgYXJjaGl2ZSBhbmQgaGVscHMgb3RoZXIgcGVvcGxlIHdobyBtaWdodCBoYXZlIHRoZSBzYW1lCisjIHF1ZXN0aW9ucyBpbiB0aGUgZnV0dXJlKSwgYnV0IHBsZWFzZSB0cnkgdG8gZG8gdGhlIGZvbGxvd2luZyBmaXJzdDoKKyMKKyMgIC0gbG9vayBpbiB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQorIyAgICAoaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvKSB0byBzZWUgaWYgYSBwcm9ibGVtIGhhcworIyAgICBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQKKyMKKyMgLSBsb29rIHRocm91Z2ggcmVjZW50IGVudHJpZXMgb2YgdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBhcmNoaXZlcworIyAgIChodHRwOi8vbGlzdHMubGludXh0b2dvLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUgb3IKKyMgICAgaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL3BpcGVybWFpbC9wb2t5LykgdG8gc2VlIGlmIG90aGVyCisjICAgcGVvcGxlIGhhdmUgcnVuIGludG8gc2ltaWxhciBwcm9ibGVtcyBvciBoYWQgc2ltaWxhciBxdWVzdGlvbnMKKyMgICBhbnN3ZXJlZC4KKyMKKyMgVGhlIGZvcm1hdCBpcyBhcyBhIGJpdGJha2UgdmFyaWFibGUgb3ZlcnJpZGUgZm9yIGVhY2ggcmVjaXBlCisjCisjCVJFQ0lQRV9NQUlOVEFJTkVSX3BuLTxyZWNpcGUgbmFtZT4gPSAiRnVsbCBOYW1lIDxhZGRyZXNzQGRvbWFpbj4iCisjCisjIFBsZWFzZSBrZWVwIHRoaXMgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCisjCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY2wgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGljYSA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGl0ZXN0cyA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtbGliID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXBsdWdpbnMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2Etc3RhdGUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdG9vbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMtc2NyaXB0cyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXBtZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwci11dGlsID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHQgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0LW5hdGl2ZSA9ICJBbsOtYmFsIExpbcOzbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcmdwLXN0YW5kYWxvbmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc2NpaWRvYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNwZWxsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3NpbXAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdHRyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZiA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZi1hcmNoaXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9nZW4tbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9tYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaS11aSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFiZWx0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtZmlsZXMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLXBhc3N3ZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2gtY29tcGxldGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJjID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iZHdnYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJlZWNyeXB0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpZ3JlcXNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW5kID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3Nzc2RrID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmlzb24gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJqYW0tbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdG9vbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibHVlejUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYm1hcC10b29scyA9ICJFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib29zdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3RjaGFydDIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ic2QtaGVhZGVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ0cmZzLXRvb2xzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtYXBwbGlhbmNlLWltYWdlID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtY29tcGFyZSA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLXN5c3Jvb3RzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkZXIgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLXRhcmJhbGwgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnlhY2MgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ6aXAyID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2EtY2VydGlmaWNhdGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2Fpcm8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWxpYnJhdGVwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYW50YXJlbGwtZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jY2FjaGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2RydG9vbHMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaHJwYXRoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UtbmF0aXZlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29nbC0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb21wb3NpdGVwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWdub21lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGUtdG9vbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGVraXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmV1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3BpbyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyYWNrbGliID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyZWF0ZXJlcG8tYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb25pZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbGludXggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtY2hlY2stdG9vbCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN3YXV0b21hY3JvcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYW1hZ2Vwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRiID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLWdsaWIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtdGVzdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy13YWl0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZWJpYW51dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZ1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlyZWN0ZmIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiLWV4YW1wbGVzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpc3RjYy1jb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRtaWRlY29kZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRteHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvY2Jvb2steG1sLWR0ZDQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvY2Jvb2steHNsLXN0eWxlc2hlZXRzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kb3Nmc3Rvb2xzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcGtnID0gIkFuw61iYWwgTGltw7NuIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHJvcGJlYXIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWR0YyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWUyZnNwcm9ncyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVlZS1hY3BpLXNjcmlwdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8tZmIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXgxMSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWxmdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY2hhbnQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jb2RpbmdzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVwaXBoYW55ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXRodG9vbCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldWRldiA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBhdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmZtcGVnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1maW5kdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpeGVzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmxhYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmxleCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC1hbGlhcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9vbWF0aWMtZmlsdGVycyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9ybWZhY3RvciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZzdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nYXdrID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zc3NkayA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zc3Nkay1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXJ1bnRpbWUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc2FuaXRpemVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zb3VyY2UgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2NtYWtlZGVwID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY3IgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGJtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RrLXBpeGJ1ZiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1naG9zdHNjcmlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2l0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWxvY2FsZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLW10cmFjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXNjcmlwdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWNvbW1vbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZG9jLXV0aWxzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXBnID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnV0bHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ28gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLWRlcCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLWhlbGxvd29ybGQgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nb2JqZWN0LWludHJvc3BlY3Rpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncGVyZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZ21lID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncHRmZGlzayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyZXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncm9mZiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1YiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItZWZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdC1wbGF5ZXIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLWxpYmF2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1vbXggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXB5dGhvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIldlaSBUZWUgTmcgPHdlaS50ZWUubmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0aysgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1kb2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZW5naW5lcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1zYXRvLWVuZ2luZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWx0LW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndW1taWJvb3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGRwYXJtID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGVscDJtYW4tbmF0aXZlID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taHdsYXRkZXRlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pMmMtdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWNlY2MtY3JlYXRlLWVudi1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY29uLW5hbWluZy11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWljdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXQtaWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWJvb3QgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtZnJhbWV3b3JrID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnB1dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWludGx0b29sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXByb3V0ZTIgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXB0YWJsZXMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXB1dGlscyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcmRhLXV0aWxzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlzby1jb2RlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWl3ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpwZWctdHVyYm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWdsaWIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWticHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2NvbmZpZy1mcm9udGVuZHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWxzaGFyayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbC1kZXZzcmMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2V4ZWMtdG9vbHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2V5bWFwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QtbmF0aXZlID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbXNjdWJlID0gIkNhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sM2FmcGFkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGFtZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGF0ZW5jeXRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxlc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYTUyID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFpbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFyY2hpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdG9taWMtb3BzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAtbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2dyb3VwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2hlY2sgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2xhc3MtaXNhLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb21wcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbnZlcnQtYXNuMS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkYWVtb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkbXggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZHJtID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZHVtcHZhbHVlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlbnYtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXJhdGlvbi1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVycm9yLXBlcmwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmVudCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV4aWYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmYWtla2V5ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmlsZS1jaGVja3RyZWUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0tZXh0cmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmb250ZW5jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NyeXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnZm9ydHJhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsYWRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3BnLWVycm9yID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJndWRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmkxOG4tY29sbGF0ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNhbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNvbnYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZDN0YWcgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlucHV0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianNvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmtzYmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtYXRjaGJveCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1ubCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1wYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QtcHl0aG9uID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZnNpZG1hcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJubCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5vdGlmeSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zbDIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc3MtbWRucyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwYW0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNhcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2lhY2Nlc3MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBmbTQgPSAiTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nMTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG9kLXBsYWluZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnB0aHJlYWQtc3R1YnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyZXBvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNhbXBsZXJhdGUwID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsMiA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZWNyZXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbmRmaWxlMSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic29sdiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRhc24xID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRoZW9yYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpbWVkYXRlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aXJwYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtY3Jvc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW5pc3RyaW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVud2luZCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2ItY29tcGF0ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiMSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzZXIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEtdXRpbHMgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMS1kaWV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhhdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2FsaWJyYXRlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y29tcG9zaXRlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjdXJzb3IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRhbWFnZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZG1jcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZXh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmaXhlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zm9udCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zm9udDIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZ0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpbmVyYW1hID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmNvbW1vbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2JmaWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGFyc2VyLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtYmFzZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNheC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNpbXBsZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sMiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG11ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhwbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmFuZHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlbmRlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzY3Juc2F2ZXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzaG1mZW5jZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2x0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHRzdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4diA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dm1jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2ZGdhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2bWlzYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NnZtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnlhbWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWdodHRwZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWR1bW15ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtZmlybXdhcmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1saWJjLWhlYWRlcnMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8gPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tZGV2ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLXJ0ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLXRpbnkgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGx2bSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxvZ3JvdGF0ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYmluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNidGVzdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNvZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLW1vZHVsZXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctdG9vbHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctdXN0ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6NCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6byA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sem9wID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbTQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbTQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1haWx4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZWRlcGVuZCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGV2cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4tcGFnZXMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcC1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1wYW5lbC0yID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24tc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRlcm1pbmFsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGhlbWUtc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXdtID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWRhZG0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWVudS1jYWNoZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWRlbW9zID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1nbCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudC1leHRzZGsgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1leHRzZGstdG9vbGNoYWluID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtaWRlLXN1cHBvcnQgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLXRvb2xjaGFpbiA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtd29ybGQtcGtnZGF0YSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5nZXR0eSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZWxmaW1hZ2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRkaXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250c2NhbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtsaWJzLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta3RlbXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vZHV0aWxzLWluaXRzY3JpcHRzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZWcyZGVjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXBmciA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZzEyMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1zbXRwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkLXV0aWxzID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXVzbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW14LTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hc20gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1saWJ0b29sID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmN1cnNlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmVhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmVvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXQtdG9vbHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0YmFzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXR0bGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtZXhwb3J0LXJvb3QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmluamEgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnNwciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb2Zvbm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb2gtcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLWFyY2gtY29uZmlnID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy1rZXlyaW5ncyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2ctdXRpbHMgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcHJvZmlsZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9yYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcy1yZWxlYXNlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3NzcC11dWlkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZiA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZi1zaGVsbC1pbWFnZSA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcDExLWtpdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2UtaW5kZXggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhcnRlZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoZWxmID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4LXV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY2l1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtYW5mbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWNpYXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBtLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3B0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3J0bWFwID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvd2VydG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHBwID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAtZGlhbGluID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcmVsaW5rID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcmVzZW50cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHJvY3BzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHNldWRvID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc21pc2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc3BsYXNoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdGVzdC1ydW5uZXIgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1pbWFnaW5nID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbm9zZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcGV4cGVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB0eXByb2Nlc3MgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljdXJsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlndGsgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weXJleCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtYXJ0cG0gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMyA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXV3cmFwcGVyLWNyb3NzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1b3RhID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJhbmRycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmUyYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlYWRsaW5lID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZWNvcmRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZW1ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVuZGVycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVzb2x2Y29uZiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVzb3VyY2Vwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZ2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnBjYmluZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcm5nLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtcmVzb2x2ZSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnQtdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ydWJ5ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnVuLXBvc3RpbnN0cyA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ4dnQtdW5pY29kZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLWljb24tdGhlbWUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2JjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3JlZW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2NybnNhdmVycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2VkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXJmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHNlcmlhbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3cgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zZWN1cmV0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zeXNyb290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFyZWQtbWltZS1pbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNpZ25pbmcta2V5cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zb2NhdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc291cmNlLWhpZ2hsaWdodCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNwZWV4ID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleGRzcCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3FsaXRlMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcXVhc2hmcy10b29scyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGFydHVwLW5vdGlmaWNhdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmFjZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJlc3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3VidmVyc2lvbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdWRvID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2FiYmVyLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3aWcgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNwcm9mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3RjaGFydCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1jb21wYXQtdW5pdHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc2VyaWFsZ2V0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwLXVwcm9iZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0LWluaXR0YWIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10YWdsaWIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGFyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGNwLXdyYXBwZXJzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRlc3RleHBvcnQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpMmh0bWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbWUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGlueS1pbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHJhY2UtY21kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHJlbW9yID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10c2xpYiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6Y29kZS1uYXRpdmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHpkYXRhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdCA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1mdy11dGlscyA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1ta2ltYWdlID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdWJvb3RjaGFydCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVkZXYtZXh0cmFjb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pZmRlZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaW5hdGl2ZS10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXBkYXRlLXJjLmQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2Jpbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXNidXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLWxpbnV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLW1hY3JvcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12ODZkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGdyaW5kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdmlkZW9wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12b2xhdGlsZS1iaW5kcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnRlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuLWRlbW9zID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2FmZmxlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2cgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZy1jb25maWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXlsYW5kID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F5bGFuZC1wcm90b2NvbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZWJraXRndGsgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24taW5pdCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdnZXQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2hpY2ggPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2lyZWxlc3MtdG9vbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td3BhLXN1cHBsaWNhbnQgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teDExLWNvbW1vbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14MTFwZXJmID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtaW1hZ2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwta2V5c3ltcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1yZW5kZXJ1dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXdtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjbWlzY3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGRnLXV0aWxzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGRweWluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleHRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXllcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWV2ZGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQta2V5Ym9hcmQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1saWJpbnB1dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LW1vdXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtc3luYXB0aWNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtdm1tb3VzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWNpcnJ1cyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWZiZGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8taW50ZWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1vbWFwID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tb21hcGZiID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tdmVzYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2ZGdhcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4NmRyaXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZtaXNjcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4NnZpZG1vZGVwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aG9zdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5lcmFtYXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbmV0ZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5pdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5wdXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0LWNhbGlicmF0b3IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGtiY29tcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14a2V5Ym9hcmQtY29uZmlnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhtbHRvID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14bW9kbWFwID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhvcmctbWluaW1hbC1mb250cyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHJhbmRyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyZXN0b3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci1ub2RtLWluaXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14Zjg2LWNvbmZpZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhvcmcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dHJhbnMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHRzY2FsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh1c2VyLWFjY291bnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHZpZGVvLXRlc3RzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14d2luaW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXlhc20gPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXppc29mcy10b29scy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi16bGliID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYwppbmRleCBmOGQ4YzA5Li43YzE2NWM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYwpAQCAtMjUsNiArMjUsOSBAQAogRElTQUJMRV9TVEFUSUNfcG4tb3BlbnNzbCA9ICIiCiBESVNBQkxFX1NUQVRJQ19wbi1vcGVuc3NsLW5hdGl2ZSA9ICIiCiBESVNBQkxFX1NUQVRJQ19wbi1uYXRpdmVzZGstb3BlbnNzbCA9ICIiCitESVNBQkxFX1NUQVRJQ19wbi1vcGVuc3NsMTAgPSAiIgorRElTQUJMRV9TVEFUSUNfcG4tb3BlbnNzbDEwLW5hdGl2ZSA9ICIiCitESVNBQkxFX1NUQVRJQ19wbi1uYXRpdmVzZGstb3BlbnNzbDEwID0gIiIKICMgbGlic3NwLXN0YXRpYy1kZXYgaW5jbHVkZWQgaW4gYnVpbGQtYXBwbGlhbmNlCiBESVNBQkxFX1NUQVRJQ19wbi1nY2MtcnVudGltZSA9ICIiCiAjIGxpYnVzYjEtbmF0aXZlIGlzIHVzZWQgdG8gYnVpbGQgc3RhdGljIGRmdS11dGlsLW5hdGl2ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBlMTYyYWJlLi5hYjIwNjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwpAQCAtMSwxMCArMSwxMiBAQAotIyBTZXR1cCBleHRyYSBDRkxBR1MgYW5kIExERkxBR1Mgd2hpY2ggaGF2ZSAnc2VjdXJpdHknIGJlbmVmaXRzLiBUaGVzZSAKKyMgU2V0dXAgZXh0cmEgQ0ZMQUdTIGFuZCBMREZMQUdTIHdoaWNoIGhhdmUgJ3NlY3VyaXR5JyBiZW5lZml0cy4gVGhlc2UKICMgZG9uJ3Qgd29yayB1bml2ZXJzYWxseSwgdGhlcmUgYXJlIHJlY2lwZXMgd2hpY2ggY2FuJ3QgdXNlIG9uZSwgdGhlIG90aGVyCiAjIG9yIGJvdGggc28gYSBibGFja2xpc3QgaXMgbWFpbnRhaW5lZCBoZXJlLiBUaGUgaWRlYSB3b3VsZCBiZSBvdmVyCiAjIHRpbWUgdG8gcmVkdWNlIHRoaXMgbGlzdCB0byBub3RoaW5nLgogIyBGcm9tIGEgWW9jdG8gUHJvamVjdCBwZXJzcGVjdGl2ZSwgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFuZCB0ZXN0ZWQKICMgaW4gdGhlIERJU1RSTz0icG9reS1sc2IiIGNvbmZpZ3VyYXRpb24uCiAKK0dDQ1BJRSA/PSAiLS1lbmFibGUtZGVmYXVsdC1waWUiCisKICMgX0ZPUlRJRllfU09VUkNFIHJlcXVpcmVzIC1PMSBvciBoaWdoZXIsIHNvIGRpc2FibGUgaW4gZGVidWcgYnVpbGRzIGFzIHRoZXkgdXNlCiAjIC1PMCB3aGljaCB0aGVuIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5nLgogbGNsX21heWJlX2ZvcnRpZnkgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnREVCVUdfQlVJTEQnLCcxJywnJywnLURfRk9SVElGWV9TT1VSQ0U9MicsZCl9IgpAQCAtMTIsOTYgKzE0LDUxIEBACiAjIEVycm9yIG9uIHVzZSBvZiBmb3JtYXQgc3RyaW5ncyB0aGF0IHJlcHJlc2VudCBwb3NzaWJsZSBzZWN1cml0eSBwcm9ibGVtcwogU0VDVVJJVFlfU1RSSU5HRk9STUFUID89ICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSIKIAotU0VDVVJJVFlfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLXBpZSAtZnBpZSAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCisjIEluamVjdCBwaWUgZmxhZ3MgaW50byBjb21waWxlciBmbGFncyBpZiBub3QgY29uZmlndXJlZCB3aXRoIGdjYyBpdHNlbGYKKyMgZXNwZWNpYWxseSB1c2VmdWwgd2l0aCBleHRlcm5hbCB0b29sY2hhaW5zCitTRUNVUklUWV9QSUVfQ0ZMQUdTID89ICIke0AnJyBpZiAnJHtHQ0NQSUV9JyBlbHNlICctcGllIC1mUElFJ30iCisKK1NFQ1VSSVRZX05PUElFX0NGTEFHUyA/PSAiLW5vLXBpZSAtZm5vLVBJRSIKKworU0VDVVJJVFlfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtTRUNVUklUWV9QSUVfQ0ZMQUdTfSAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCiBTRUNVUklUWV9OT19QSUVfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgogCiBTRUNVUklUWV9MREZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLVdsLC16LHJlbHJvLC16LG5vdyIKIFNFQ1VSSVRZX1hfTERGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1XbCwteixyZWxybyIKIAogIyBwb3dlcnBjIGRvZXMgbm90IGdldCBvbiB3aXRoIHBpZSBmb3IgcmVhc29ucyBub3QgbG9va2VkIGludG8gYXMgeWV0Ci1TRUNVUklUWV9DRkxBR1NfcG93ZXJwYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0iCi0jIERlYWwgd2l0aCBwcGMgc3BlY2lmaWMgbGlua2VyIGZhaWx1cmVzIHdoZW4gdXNpbmcgdGhlIGNmbGFncwotU0VDVVJJVFlfQ0ZMQUdTX3BuLWRidXNfcG93ZXJwYyA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZGJ1cy1wdGVzdF9wb3dlcnBjID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJtYXRjaGJveF9wb3dlcnBjID0gIiIKK1NFQ1VSSVRZX0NGTEFHU19wb3dlcnBjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9DRkxBR1NfcG4tbGliZ2NjX3Bvd2VycGMgPSAiIgorR0NDUElFX3Bvd2VycGMgPSAiIgogCiAjIGFybSBzcGVjaWZpYyBzZWN1cml0eSBmbGFnIGlzc3VlcwotU0VDVVJJVFlfQ0ZMQUdTX3BuLWx0dG5nLXRvb2xzX2FybSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWFzcGVsbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWJlZWNyeXB0ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tY29yZXV0aWxzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tY3VwcyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWRiID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZGlyZWN0ZmIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYyA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMtaW5pdGlhbCA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZWxmdXRpbHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1lbmNoYW50ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZXhwZWN0ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZmxhYyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYy1ydW50aW1lID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nY2Mtc2FuaXRpemVycyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdkYiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdtcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdudXRscyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdwZ21lID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1YiA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLW5hdGl2ZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkteDg2LW5hdGl2ZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmktaTU4Ni1uYXRpdmUgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLXg4Ni02NC1uYXRpdmUgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1oYXJmYnV6eiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWtleGVjLXRvb2xzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4taXB0YWJsZXMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJhaW8gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJjYXAgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJpZDN0YWcgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJuZXd0LXB5dGhvbiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdsdSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYnBjYXAgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJwY3JlID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlicHJveHkgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1tZXNhID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbWVzYS1nbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLW9wZW5zc2wgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1vcGVuc3AgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1wcHAgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24tcHljdXJsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uLW51bXB5ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMy1udW1weSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbjMtcHljYWlybyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbjMtcHljdXJsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMy1weWdwZ21lID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXN5c2xpbnV4ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tc2xhbmcgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1zb3VyY2UtaGlnaGxpZ2h0ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tdGNsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tdGlmZiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXVjbGliYyA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tdWNsaWJjLWluaXRpYWwgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXZhbGdyaW5kID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi16bGliID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCisKK1NFQ1VSSVRZX0NGTEFHU19wbi1ta2VsZmltYWdlX3g4NiA9ICIiCisKK1NFQ1VSSVRZX0NGTEFHU19wbi12YWxncmluZCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9MREZMQUdTX3BuLXZhbGdyaW5kID0gIiIKK1NFQ1VSSVRZX0NGTEFHU19wbi1zeXNrbG9nZCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9MREZMQUdTX3BuLXN5c2tsb2dkID0gIiIKIAogIyBSZWNpcGVzIHdoaWNoIGZhaWwgdG8gY29tcGlsZSB3aGVuIGVsZXZhdGluZyAtV2Zvcm1hdC1zZWN1cml0eSB0byBhbiBlcnJvcgogU0VDVVJJVFlfU1RSSU5HRk9STUFUX3BuLWJ1c3lib3ggPSAiIgogU0VDVVJJVFlfU1RSSU5HRk9STUFUX3BuLWdjYyA9ICIiCi1TRUNVUklUWV9TVFJJTkdGT1JNQVRfcG4tb2gtcHV6emxlcyA9ICIiCiAKLVRBUkdFVF9DRkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtTRUNVUklUWV9DRkxBR1N9IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtTRUNVUklUWV9DRkxBR1N9IgogVEFSR0VUX0xERkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtTRUNVUklUWV9MREZMQUdTfSIKIAogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2NjLXJ1bnRpbWUgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMtaW5pdGlhbCA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi11Y2xpYmMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgotU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tdWNsaWJjLWluaXRpYWwgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLWZiZGV2ID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKIFNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1pbnRlbCA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCiBTRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tb21hcGZiID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKQEAgLTExMCw0ICs2Nyw3IEBACiBTRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tdm13YXJlID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKIFNFQ1VSSVRZX0xERkxBR1NfcG4teHNlcnZlci14b3JnID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKIAotVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX3BuLWJpbnV0aWxzID0gIiAke1NFQ1VSSVRZX0NGTEFHU30gJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX3BuLWJpbnV0aWxzID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tZ2NjID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tZ2RiID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tcGVyZiA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYwppbmRleCAzZDNmNmFjLi45YWUyYTkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYwpAQCAtMTQsNiArMTQsOCBAQAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmludGwgPz0gIm5hdGl2ZXNkay1nbGliYyIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpY29udiA/PSAibmF0aXZlc2RrLWdsaWJjIgogCitESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCArPSAibGRjb25maWciCisKICNVU0VfTkxTID89ICJubyIKIAogQ1hYRkxBR1MgKz0gIi1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKaW5kZXggM2RiMTZlOC4uMTc4N2E4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKQEAgLTIyLDEzICsyMiwxMiBAQAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLSR7U0RLX1BSRUZJWH1saWJjLWluaXRpYWwgPz0gIm5hdGl2ZXNkay1nbGliYy1pbml0aWFsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZ2V0dGV4dCA/Pz0gImdldHRleHQiCiAKLUdDQ1ZFUlNJT04gPz0gIjYuMyUiCitHQ0NWRVJTSU9OID89ICI3LiUiCiBTREtHQ0NWRVJTSU9OID89ICIke0dDQ1ZFUlNJT059IgotQklOVVZFUlNJT04gPz0gIjIuMjglIgotR0RCVkVSU0lPTiA/PSAiNy4xMiUiCi1HTElCQ1ZFUlNJT04gPz0gIjIuMjUiCi1VQ0xJQkNWRVJTSU9OID89ICIxLjAlIgotTElOVVhMSUJDVkVSU0lPTiA/PSAiNC4xMCUiCitCSU5VVkVSU0lPTiA/PSAiMi4yOSUiCitHREJWRVJTSU9OID89ICI4LjAlIgorR0xJQkNWRVJTSU9OID89ICIyLjI2JSIKK0xJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTIlIgogCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MgPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCkBAIC00OCw3ICs0Nyw3IEBACiBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscyA/PSAiJHtCSU5VVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1uYXRpdmUgPz0gIiR7QklOVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7QklOVVZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtY3Jvc3NzZGstJHtTREtfQVJDSH0gPz0gIiR7QklOVVZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtY3Jvc3NzZGstJHtTREtfU1lTfSA/PSAiJHtCSU5VVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9ID89ICIke0JJTlVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2dkYiA/PSAiJHtHREJWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2dkYi1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHREJWRVJTSU9OfSIKQEAgLTY0LDggKzYzLDYgQEAKIFBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLWluaXRpYWwgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjLWluaXRpYWwgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX3VjbGliYyAgICAgICAgICAgICAgICAgICA/PSAiJHtVQ0xJQkNWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX3VjbGliYy1pbml0aWFsICAgICAgICAgICA/PSAiJHtVQ0xJQkNWRVJTSU9OfSIKICMgZG9uJ3QgdXNlIHZlcnNpb24gZWFybGllciB0aGFuIDEuNCBmb3IgZ3ppcC1uYXRpdmUsIGFzIGl0J3MgbmVjZXNzYXJ5IGZvcgogIyBzb21lIHBhY2thZ2VzIHVzaW5nIGFuIGFyY2hpdmUgZm9ybWF0IGluY29tcGF0aWJsZSB3aXRoIGVhcmxpZXIgZ3ppcAogUFJFRkVSUkVEX1ZFUlNJT05fZ3ppcC1uYXRpdmUgPz0gIjEuOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdW5pbmF0aXZlLWZsYWdzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdW5pbmF0aXZlLWZsYWdzLmluYwppbmRleCBiNmE5NDRlLi5mZWJmMmE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3VuaW5hdGl2ZS1mbGFncy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS91bmluYXRpdmUtZmxhZ3MuaW5jCkBAIC0xLDEzICsxLDMgQEAKLSMgaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvR0NDNQotIyBXZSBtYXkgc2VlIGJpbmFyaWVzIGJ1aWx0IHdpdGggZ2NjNSBydW4gb3IgbGlua2VkIGludG8gZ2NjNCBlbnZpcm9ubWVudAotIyBzbyB1c2UgdGhlIG9sZGVyIGxpYnN0ZGMrKyBzdGFuZGFyZCBmb3Igbm93IHVudGlsIHdlIGRvbid0IHN1cHBvcnQgZ2NjNAotIyBvbiB0aGUgaG9zdCBzeXN0ZW0uCi1CVUlMRF9DWFhGTEFHU19hcHBlbmQgPSAiIC1EX0dMSUJDWFhfVVNFX0NYWDExX0FCST0wIgotCi0jIGljdSBjb25maWd1cmUgZGVmYXVsdHMgdG8gQ1hYMTEgaWYgbm8gLXN0ZD0gb3B0aW9uIGlzIHBhc3NlZCBpbiBDWFhGTEFHUwotIyB0aGVyZWZvcmUgcGFzcyBvbmUKLUJVSUxEX0NYWEZMQUdTX2FwcGVuZF9wbi1pY3UtbmF0aXZlID0gIiAtc3RkPWMrKzk4IgotCiAjIFNvbWUgZGlzdHJvcyAodWJ1bnR1IDE2LjEwLCBkZWJpYW4tdGVzdGluZykgZGVmYXVsdCB0byBnY2MgY29uZmlndXJlZCB3aXRoCiAjIC0tZW5hYmxlLWRlZmF1bHQtcGllIChzZWUgZ2NjIC12KS4gVGhpcyBicmVha3MgZS5nLiBwcmVsaW5rLW5hdGl2ZSBvbiBhIHBpZQogIyBkZWZhdWx0IHN5c3RlbSBpZiBiaW51dGlscy1uYXRpdmUgd2FzIGJ1aWx0IG9uIGEgc3lzdGVtIHdoaWNoIGlzIG5vdCBwaWUgZGVmYXVsdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCmluZGV4IGQ0YmRkZGYuLjQ5ZTk1MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMKQEAgLTcsMjggKzcsMTQgQEAKIAogIyBlcnJvcjogbm8gbWVtYmVyIG5hbWVkICdzaW5fcG9ydCcgaW4gJ3N0cnVjdCBzb2NrYWRkcl9pbjYnCiAjIHRoaXMgaXMgZHVlIHRvIGxpYnRpcnBjIHVzaW5nIGlwdjYgYnV0IHBvcnRtYXAgcnBjIGV4cGVjdGluZyBpcHY0Ci1FWENMVURFX0ZST01fV09STERfcG4tcG9ydG1hcF9saWJjLW11c2wgPSAiMSIKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi11bmZzM19saWJjLW11c2wgPSAiMSIKIAogIyBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnX1NUQVRfVkVSJwogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXBzZXVkb19saWJjLW11c2wgPSAiMSIKIAotIyBlcnJvcjogTmVlZCB0byBpbXBsZW1lbnQgY3VzdG9tIEkvTwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWxpYnNvbHZfbGliYy1tdXNsID0gIjEiCi0KLSMgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcHRocmVhZF90cnlqb2luX25wJwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWJ0cmZzLXRvb2xzX2xpYmMtbXVzbCA9ICIxIgotCiAjIGVycm9yOiBlcnJvci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiBFWENMVURFX0ZST01fV09STERfcG4tcHJlbGlua19saWJjLW11c2wgPSAiMSIKIAotIyBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnT19DUkVBVCcKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1saWJic2RfbGliYy1tdXNsID0gIjEiCi0KLSMgZXJyb3I6IGV4cGVjdGVkIGRlY2xhcmF0aW9uIHNwZWNpZmllcnMgYmVmb3JlICdfX25vbm51bGwnCi1FWENMVURFX0ZST01fV09STERfcG4tbHR0bmctdXN0X2xpYmMtbXVzbCA9ICIxIgotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWx0dG5nLXRvb2xzX2xpYmMtbXVzbCA9ICIxIgotCiAjIGVycm9yOiBvYnN0YWNrLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1zeXN0ZW10YXBfbGliYy1tdXNsID0gIjEiCiBFWENMVURFX0ZST01fV09STERfcG4tc3lzdGVtdGFwLXVwcm9iZXNfbGliYy1tdXNsID0gIjEiCkBAIC0zNywyMCArMjMsOSBAQAogIyAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1xZW11X2xpYmMtbXVzbCA9ICIxIgogCi0jIGdsaWJjIHNwZWNpZmljIGZ1bmNyaW9ucwotIyBlcnJvcjogc3RvcmFnZSBzaXplIG9mICdtaScgaXNuJ3Qga25vd24gc3RydWN0IG1hbGxpbmZvIG1pCi1FWENMVURFX0ZST01fV09STERfcG4tdmFsZ3JpbmRfbGliYy1tdXNsID0gIjEiCi0KICMgZXJyb3I6IGZvcm1hdCAnJXMnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnY2hhciAqJywgYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgJ2ludCcgWy1XZXJyb3I9Zm9ybWF0PV0KICMgICBzbnByaW50ZihidWYsIHNpemUsICIlcyIsIHN0cmVycm9yX3IoZXJyLCBzYnVmLCBzaXplb2Yoc2J1ZikpKTsKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1wZXJmX2xpYmMtbXVzbCA9ICIxIgogCiAjIGVycm9yOiAnUlRMRF9ORVhUJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1nY2Mtc2FuaXRpemVyc19saWJjLW11c2wgPSAiMSIKLQotIyBnY2MgZmFpbHMgdG8gYnVpbGQgd2hlbiBsaWJ1d2luZCBpcyBzdGFnZWQgYmVmb3JlIGJ1aWxkaW5nIGdjYyBzaW5jZQotIyBpdCB0aGVuIGZpbmRzIHRoZSB1bndpbmQuaCBoZWFkZXIgZnJvbSBsaWJ1bndpbmQgYW5kIG5vdCBmcm9tIGxpYmdjYwotIyBhbmQgb24gYXJtIHNwZWNpYWxseSB0aGV5IGFyZSBkaWZmZXJlbnQgc2luY2UgbGliZ2NjIGRlZmluZXMgc29tZSBmdW5jdGlvbnMKLSMgYXMgbWFjcm9zIHdoaWNoIGFyZSBmdW5jdGlvbnMgaW4gbGlidW53aW5kIGFuZCBpdCBmYWlscyBkdXJpbmcgbGlua2luZwotIyBsaWJiYWNrdHJhY2UvYmFja3RyYWNlLmM6NzY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9VbndpbmRfR2V0SVAnCi1FWENMVURFX0ZST01fV09STERfcG4tbGlidW53aW5kX2xpYmMtbXVzbF9hcm0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKaW5kZXggMzViOTEwMy4uYTU1ZTI4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKQEAgLTU2LDcgKzU2LDYgQEAKIGRvX3Vib290X21raW1hZ2VbZG9jXSA9ICJDcmVhdGVzIGEgdUltYWdlIGZpbGUgZnJvbSB0aGUga2VybmVsIGZvciB0aGUgVS1Cb290IGJvb3Rsb2FkZXIiCiBkb191bnBhY2tbZG9jXSA9ICJVbnBhY2tzIHRoZSBzb3VyY2UgY29kZSBpbnRvIGEgd29ya2luZyBkaXJlY3RvcnkiCiBkb192YWxpZGF0ZV9icmFuY2hlc1tkb2NdID0gIkVuc3VyZXMgdGhhdCB0aGUgc291cmNlL21ldGEgYnJhbmNoZXMgYXJlIG9uIHRoZSBsb2NhdGlvbnMgc3BlY2lmaWVkIGJ5IHRoZWlyIFNSQ1JFViB2YWx1ZXMgZm9yIGEgbGludXgteW9jdG8gc3R5bGUga2VybmVsIgotZG9fdm1pbWdbZG9jXSA9ICJDcmVhdGVzIGFuIGltYWdlIGZvciB1c2Ugd2l0aCBWTXdhcmUgb3IgVmlydHVhbEJveCBjb21wYXRpYmxlIHZpcnR1YWwgbWFjaGluZSBob3N0cyAoYmFzZWQgb24gSU1BR0VfRlNUWVBFUyBlaXRoZXIgLnZtZGsgb3IgLnZkaSkiCiAKICMgREVTQ1JJUFRJT05TIEZPUiBWQVJJQUJMRVMgIwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKaW5kZXggZmMxNjUwMi4uNGJhMGI5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw3ICs5LDkgQEAKIAogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCi1MQVlFUlZFUlNJT05fY29yZSA9ICIxMCIKK0xBWUVSVkVSU0lPTl9jb3JlID0gIjExIgorCitMQVlFUlNFUklFU19DT1JFTkFNRVMgPSAicm9ja28iCiAKIEJCTEFZRVJTX0xBWUVSSU5ERVhfTkFNRV9jb3JlID0gIm9wZW5lbWJlZGRlZC1jb3JlIgogCkBAIC0zOCw2ICs0MCw3IEBACiAgIGJhc2UtcGFzc3dkIFwKICAgb3BrZy11dGlscyBcCiAgIGdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgXAorICBjYS1jZXJ0aWZpY2F0ZXMgXAogIgogCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXApAQCAtNDgsOCArNTEsMTYgQEAKICAgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtPnBlcmwgXAogICBjYS1jZXJ0aWZpY2F0ZXMtPm9wZW5zc2wgXAogICBpbml0cmFtZnMtZnJhbWV3b3JrLT4ke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSBcCi0gIGluaXRyYW1mcy1mcmFtZXdvcmstPnN5c3RlbWQgXAogICBpbml0cmFtZnMtZnJhbWV3b3JrLT5ldWRldiBcCisgIGluaXRyYW1mcy1mcmFtZXdvcmstPnN5c3RlbWQgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpLT5kb3Nmc3Rvb2xzIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaS0+ZTJmc3Byb2dzIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaS0+cGFydGVkIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaS0+dXRpbC1saW51eCBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+ZTJmc3Byb2dzIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT5ncnViIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT5wYXJ0ZWQgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtPnV0aWwtbGludXggXAogICBsaWJlcmF0aW9uLWZvbnRzLT5mb250Y29uZmlnIFwKICAgY2FudGFyZWxsLWZvbnRzLT5mb250Y29uZmlnIFwKICAgZ25vbWUtaWNvbi10aGVtZS0+bGlicnN2ZyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKaW5kZXggZDIxMGEwZS4uM2UyZDI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgpAQCAtMTA1LDYgKzEwNSwxMCBAQAogU1BEWExJQ0VOU0VNQVBbQUZMdjJdID0gIkFGTC0yLjAiCiBTUERYTElDRU5TRU1BUFtBRkx2MV0gPSAiQUZMLTEuMiIKIAorI0NEREwgdmFyaWF0aW9ucworU1BEWExJQ0VOU0VNQVBbQ0RETHYxXSA9ICJDRERMLTEuMCIKK1NQRFhMSUNFTlNFTUFQW0NEREwtMV0gPSAiQ0RETC0xLjAiCisKICNPdGhlciB2YXJpYXRpb25zCiBTUERYTElDRU5TRU1BUFtFUEx2MS4wXSA9ICJFUEwtMS4wIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k1ODYuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCmluZGV4IDk5MDgzZmIuLjQxZTVlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCkBAIC0xLDUgKzEsNCBAQAogU0RLX0FSQ0ggPSAiaTU4NiIKIFNES19DQ19BUkNIID0gIi1tYXJjaD1pNTg2IgogQUJJRVhURU5TSU9OX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1TREtfT0xERVNUX0tFUk5FTCA9ICIyLjYuMzIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTY4Ni5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKaW5kZXggY2YyMjc4NC4uZmU0MDY5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKQEAgLTEsNCArMSwzIEBACiBTREtfQVJDSCA9ICJpNjg2IgogU0RLX0NDX0FSQ0ggPSAiLW1hcmNoPWk2ODYiCiBBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVNES19PTERFU1RfS0VSTkVMID0gIjIuNi4zMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL3g4Nl82NC5jb25mCmluZGV4IDdkMmU3MTcuLjYxNDM5YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay94ODZfNjQuY29uZgpAQCAtMSwzICsxLDIgQEAKIFNES19BUkNIID0gIng4Nl82NCIKIEFCSUVYVEVOU0lPTl9jbGFzcy1uYXRpdmVzZGsgPSAiIgotU0RLX09MREVTVF9LRVJORUwgPSAiMi42LjMyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXZmcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdmZwLmluYwppbmRleCA2NjdiNjA5Li43YWU3NDU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdmZwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdmZwLmluYwpAQCAtNSw4ICs1LDggQEAKIFRVTkVWQUxJRFt2ZnBdID0gIkVuYWJsZSBWZWN0b3IgRmxvYXRpbmcgUG9pbnQgKHZmcCkgdW5pdC4iCiBUVU5FX0NDQVJHU19NRlBVIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnAnLCAnIHZmcCcsICcnLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICAuPSAiJHtAICgnIC1tZnB1PSVzICcgJSBkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpLnNwbGl0KClbLTFdKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKSAhPSAnJykgZWxzZSAnJ30iCi1BUk1QS0dTRlhfRlBVID0gIiR7QCAoJy0lcycgICAgICAgICUgZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKS5zcGxpdCgpWy0xXS5yZXBsYWNlKCd2ZnB2My1kMTYnLCAndmZwdjNkMTYnKSkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykgIT0gJycpIGVsc2UgJyd9IgorVFVORV9DQ0FSR1MgIC49ICIke0AgKCcgLW1mcHU9JXMnICUgZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKS5zcGxpdCgpWy0xXSkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykgIT0gJycpIGVsc2UgJyd9IgorQVJNUEtHU0ZYX0ZQVSA9ICIke0AgKCctJXMnICAgICAgICUgZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKS5zcGxpdCgpWy0xXS5yZXBsYWNlKCd2ZnB2My1kMTYnLCAndmZwdjNkMTYnKSkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykgIT0gJycpIGVsc2UgJyd9IgogCiBUVU5FVkFMSURbY2FsbGNvbnZlbnRpb24taGFyZF0gPSAiRW5hYmxlIEVBQkkgaGFyZCBmbG9hdCBjYWxsIGNvbnZlbnRpb24sIHJlcXVpcmVzIFZGUC4iCiBUVU5FX0NDQVJHU19NRkxPQVQgPSAiJHtAIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnaGFyZCcsICdzb2Z0ZnAnLCBkKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKSAhPSAnJykgZWxzZSAnJyB9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwppbmRleCAwZTQxMDNiLi5lNjRiMGM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjIFByb3ZpZGUgdGhlIG5mcyBzZXJ2ZXIga2VybmVsIG1vZHVsZSBmb3IgYWxsIHFlbXUgaW1hZ2VzCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8tcnQgPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJybmctdG9vbHMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKaW5kZXggMGM2MGNmMi4uN2Q5ZmE1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKQEAgLTQsNSArNCw1IEBACiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIG1hbHRhIgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5UzAgY29uc29sZT10dHkiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5Ci1RQl9PUFRfQVBQRU5EID0gIi12Z2EgY2lycnVzIC1zaG93LWN1cnNvciAtdXNiIC11c2JkZXZpY2UgdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCitRQl9PUFRfQVBQRU5EID0gIi12Z2EgY2lycnVzIC1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tJHtUVU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKaW5kZXggYWNmOWQ1NS4uMTQ1NmJmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCkBAIC0xMiw5ICsxMiw2IEBACiBRQl9BVURJT19PUFQgPSAiLXNvdW5kaHcgYWM5NyxlczEzNzAiCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAidmdhPTAgdXZlc2FmYi5tb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IG9wcm9maWxlLnRpbWVyPTEgdXZlc2FmYi50YXNrX3RpbWVvdXQ9LTEiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5Ci1RQl9PUFRfQVBQRU5EID0gIi12Z2Egdm13YXJlIC1zaG93LWN1cnNvciAtdXNiIC11c2JkZXZpY2UgdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCitRQl9PUFRfQVBQRU5EID0gIi12Z2Egdm13YXJlIC1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgogCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgotS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCiBVVkVTQV9NT0RFID89ICI2NDB4NDgwLTMyIgotbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMyLmluYwppbmRleCBjZTA0NDVmLi5hOTBjMGYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCkBAIC02LDcgKzYsOCBAQAogVFVORUNPTkZMSUNUU1ttaXBzMzJdID0gIm42NCBuMzIiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbWlwczMyJywgJyAtbWFyY2g9bWlwczMyJywgJycsIGQpfSIKIAotQVZBSUxUVU5FUyArPSAibWlwczMyIG1pcHMzMmVsIG1pcHMzMi1uZiBtaXBzMzJlbC1uZiIKKyMgQmFzZSBUdW5lcyAoSGFyZCBGbG9hdCkKK0FWQUlMVFVORVMgKz0gIm1pcHMzMiBtaXBzMzJlbCIKIAogVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzfSBtaXBzMzIiCiBNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzIgPSAibWlwczMyIgpAQCAtMTYsNiArMTcsOSBAQAogTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMyZWwgPSAibWlwczMyZWwiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMyZWwgPSAibWlwc2VsIG1pcHMzMmVsIgogCisjIFNvZnQgRmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHMzMi1uZiBtaXBzMzJlbC1uZiIKKwogVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMi1uZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzLW5mfSBtaXBzMzIiCiBNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzItbmYgPSAibWlwczMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMi1uZiA9ICJtaXBzLW5mIG1pcHMzMi1uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyMi5pbmMKaW5kZXggNWUzOThjYi4uMTQ0NzNjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyMi5pbmMKQEAgLTYsNyArNiw3IEBACiBUVU5FQ09ORkxJQ1RTW21pcHMzMnIyXSA9ICJuNjQgbjMyIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHMzMnIyJywgJyAtbWFyY2g9bWlwczMycjInLCAnJywgZCl9IgogCi0jIGhhcmQgZmxvYXQKKyMgQmFzZSBUdW5lcyAoSGFyZCBGbG9hdCkKIEFWQUlMVFVORVMgKz0gIm1pcHMzMnIyIG1pcHMzMnIyZWwiCiAKIFRVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzfSBtaXBzMzJyMiIKQEAgLTE3LDcgKzE3LDcgQEAKIE1JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyZWwgPSAibWlwczMycjJlbCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsID0gIm1pcHNlbCBtaXBzMzJlbCBtaXBzMzJyMmVsIgogCi0jIHNvZnQgZmxvYXQKKyMgU29mdCBGbG9hdAogQVZBSUxUVU5FUyArPSAibWlwczMycjItbmYgbWlwczMycjJlbC1uZiIKIAogVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLW5mID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMtbmZ9IG1pcHMzMnIyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyNi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYwppbmRleCBkZWEzM2VhLi40NDM2OWNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVDT05GTElDVFNbbWlwc2lzYTMycjZdID0gIm42NCBuMzIiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbWlwc2lzYTMycjYnLCAnIC1tYXJjaD1taXBzMzJyNicsICcnLCBkKX0iCiAKLSMgQmFzZSBUdW5lcworIyBCYXNlIFR1bmVzIChIYXJkIEZsb2F0KQogQVZBSUxUVU5FUyArPSAibWlwc2lzYTMycjYgbWlwc2lzYTMycjZlbCIKIAogVFVORV9GRUFUVVJFU190dW5lLW1pcHNpc2EzMnI2ID0gIm8zMiBiaWdlbmRpYW4gbWlwc2lzYTMycjYgZnB1LWhhcmQgcjYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggNzM2NTk1My4uMDIzZWI1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwpAQCAtMTAsNyArMTAsOCBAQAogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKIAotSU1BR0VfRlNUWVBFUyArPSAibGl2ZSIKK0lNQUdFX0ZTVFlQRVMgPz0gImxpdmUiCitOT0lTTyA/PSAiMSIKIAogS0VSTkVMX0lNQUdFVFlQRSA/PSAiYnpJbWFnZSIKIApAQCAtMjAsNyArMjEsNyBAQAogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEwJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMiUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYvYXJjaC14ODYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYwppbmRleCBlNTFkNTk1Li43MDgxNGI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYvYXJjaC14ODYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni9hcmNoLXg4Ni5pbmMKQEAgLTI2LDYgKzI2LDcgQEAKIFRVTkVfQVNBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdteDMyJywgJy14MzInLCAnJywgZCl9IgogIyB1c2VyIG1vZGUgcWVtdSBkb2Vzbid0IHN1cHBvcnQgeDMyCiBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdteDMyJywgJ3FlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgorTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXgzMicsICd4ODYteDMyOicsICcnICxkKX0iCiAKICMgRUxGNjQgQUJJCiBUVU5FVkFMSURbbTY0XSA9ICJJQTMyZSAoeDg2XzY0KSBFTEY2NCBzdGFuZGFyZCBBQkkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCA2Yjg3NWU0Li5jODkzMmRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTE1LDYgKzE1LDYgQEAKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmVyc2F0aWxlcGIiCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlBTUEwLDExNTIwMCBjb25zb2xlPXR0eSIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKLVFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLXVzYmRldmljZSB0YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMCUiCitRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEyJSIKIFFCX0RUQiA9ICIke0BiYXNlX3ZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXBwYy5jb25mCmluZGV4IGE5ZWY2NGIuLjUzN2IyZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVwcGMuY29uZgpAQCAtMTcsNSArMTcsNSBAQAogUUJfQ1BVID0gIi1jcHUgRzQiCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHkgY29uc29sZT10dHlTMCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKLVFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLXVzYmRldmljZSB0YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKK1FCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCiBRQl9UQVBfT1BUID0gIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKaW5kZXggMTAxODljYi4uZmNjNDQ1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCkBAIC0yNSw5ICsyNSwxMyBAQAogICAgICAgICAgICB4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIFwKICAgICAgICAgICAgIgogCi1NQUNISU5FX0ZFQVRVUkVTICs9ICJ4ODYiCitNQUNISU5FX0ZFQVRVUkVTICs9ICJ4ODYgcGNpIgogCiBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyArPSAidjg2ZCIKIAorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKK0tFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgorbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKKwogV0tTX0ZJTEUgPz0gImRpcmVjdGRpc2sud2tzIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKaW5kZXggYzI2ZGRhMi4uYzUzZjdhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCkBAIC0yNCw5ICsyNCwxMyBAQAogICAgICAgICAgICB4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIFwKICAgICAgICAgICAgIgogCi1NQUNISU5FX0ZFQVRVUkVTICs9ICJ4ODYiCitNQUNISU5FX0ZFQVRVUkVTICs9ICJ4ODYgcGNpIgogCiBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyArPSAidjg2ZCIKIAorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKK0tFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgorbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKKwogV0tTX0ZJTEUgPz0gImRpcmVjdGRpc2sud2tzIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYKaW5kZXggNDZiZGJlYi4uMzkwZDM0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCkBAIC0zLDcgKzMsNyBAQAogIyBTZWUgc2FuaXR5LmJiY2xhc3MKICMKICMgRXhwZXJ0IHVzZXJzIGNhbiBjb25maXJtIHRoZWlyIHNhbml0eSB3aXRoICJ0b3VjaCBjb25mL3Nhbml0eS5jb25mIgotQkJfTUlOX1ZFUlNJT04gPSAiMS4zMy40IgorQkJfTUlOX1ZFUlNJT04gPSAiMS4zNS4wIgogCiBTQU5JVFlfQUJJRklMRSA9ICIke1RNUERJUn0vYWJpX3ZlcnNpb24iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9wa2djb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL3BrZ2NvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNTIyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9wa2djb25mCkBAIC0wLDAgKzEsMTAgQEAKK0NvcHlyaWdodCAoYykgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiwgMjAxNworICAgIHBrZ2NvbmYgYXV0aG9ycyAoc2VlIEFVVEhPUlMgZmlsZSBpbiBzb3VyY2UgZGlyZWN0b3J5KS4KKworUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgorCitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcyBpcycgYW5kIHdpdGhvdXQgYW55IHdhcnJhbnR5LCBleHByZXNzIG9yCitpbXBsaWVkLiAgSW4gbm8gZXZlbnQgc2hhbGwgdGhlIGF1dGhvcnMgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBhcmlzaW5nCitmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2ZzLXBlcm1zLXBlcnNpc3RlbnQtbG9nLnR4dCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2ZzLXBlcm1zLXBlcnNpc3RlbnQtbG9nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTdjZjNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvZnMtcGVybXMtcGVyc2lzdGVudC1sb2cudHh0CkBAIC0wLDAgKzEsNjYgQEAKKyMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2l0aCBrbm93biBwZXJtaXNzaW9ucy4KKyMgSXQgaXMgdXNlZCBieSB0aGUgcGFja2FnaW5nIGNsYXNzIHRvIGVuc3VyZSB0aGF0IHRoZSBwZXJtaXNzaW9ucywgb3duZXJzIGFuZAorIyBncm91cCBvZiBsaXN0ZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZSBpbiBzeW5jIGFjcm9zcyB0aGUgc3lzdGVtLgorIworIyBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSAKKyMKKyM8cGF0aD4JPG1vZGU+CTx1aWQ+CTxnaWQ+CTx3YWxrPgk8Zm1vZGU+CTxmdWlkPgk8ZmdpZD4KKyMKKyMgb3IKKyMKKyM8cGF0aD4gbGluayA8dGFyZ2V0PgorIworIyA8cGF0aD46IGRpcmVjdG9yeSBwYXRoCisjIDxtb2RlPjogbW9kZSBmb3IgZGlyZWN0b3J5CisjIDx1aWQ+OiAgdWlkIGZvciBkaXJlY3RvcnkKKyMgPGdpZD46ICBnaWQgZm9yIGRpcmVjdG9yeQorIyA8d2Fsaz46IHJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGRpcmVjdG9yeT8gIHRydWUgb3IgZmFsc2UKKyMgPGZtb2RlPjogaWYgd2Fsa2luZywgbmV3IG1vZGUgZm9yIGZpbGVzCisjIDxmdWlkPjogIGlmIHdhbGtpbmcsIG5ldyB1aWQgZm9yIGZpbGVzCisjIDxmZ2lkPjogIGlmIHdhbGtpbmcsIG5ldyBnaWQgZm9yIGZpbGVzCisjIDx0YXJnZXQ+OiB0dXJuIHRoZSBkaXJlY3RvcnkgaW50byBhIHN5bWxpbmsgcG9pbnQgdG8gdGFyZ2V0CisjCisjIGluIG1vZGUsIHVpZCBvciBnaWQsIGEgIi0iIG1lYW5zIGRvbid0IGNoYW5nZSBhbnkgZXhpc3RpbmcgdmFsdWVzCisjCisjIC91c3Ivc3JjCQkwNzU1CXJvb3QJcm9vdAlmYWxzZQktCS0JLQorIyAvdXNyL3NoYXJlL21hbgkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290CisKKyMgTm90ZTogYWxsIHN0YW5kYXJkIGNvbmZpZyBkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCAiMDc1NSByb290IHJvb3QgZmFsc2UgLSAtIC0iCisKKyMgRG9jdW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGJlIGNvcnJlY3RlZAorJHttYW5kaXJ9CQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290Ciske2luZm9kaXJ9CQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290Ciske2RvY2Rpcn0JCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKyR7ZGF0YWRpcn0vZ3RrLWRvYwkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290CisKKyMgRml4dXAgbG9jYWxlcworJHtkYXRhZGlyfS9sb2NhbGUJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorCisjIENsZWFudXAgaGVhZGVycworJHtpbmNsdWRlZGlyfQkJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorJHtvbGRpbmNsdWRlZGlyfQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290CisKKyMgQ2xlYW51cCBkZWJ1ZyBzcmMKKy91c3Ivc3JjL2RlYnVnCQkwNzU1CXJvb3QJcm9vdAl0cnVlCS0Jcm9vdAlyb290CisKKyMgSXRlbXMgZnJvbSBiYXNlLWZpbGVzCisjIExpbmtzCiske2xvY2Fsc3RhdGVkaXJ9L3J1bglsaW5rCS9ydW4KKyR7bG9jYWxzdGF0ZWRpcn0vbG9jawlsaW5rCS9ydW4vbG9jaworJHtsb2NhbHN0YXRlZGlyfS90bXAJbGluawl2b2xhdGlsZS90bXAKKworL2hvbWUJCQkJMDc1NQlyb290CXJvb3QJZmFsc2UgLSAtIC0KKy9zcnYJCQkJMDc1NQlyb290CXJvb3QJZmFsc2UgLSAtIC0KKyR7cHJlZml4fS9zcmMJCQkwNzU1CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorJHtsb2NhbHN0YXRlZGlyfS9sb2NhbAkJMDc1NQlyb290CXJvb3QJZmFsc2UgLSAtIC0KKworIyBTcGVjaWFsIHBlcm1pc3Npb25zIGZyb20gYmFzZS1maWxlcworIyBTZXQgMTc3NworL3RtcAkJCQkwMTc3Nwlyb290CXJvb3QJZmFsc2UgLSAtIC0KKyR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvdG1wCTAxNzc3CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorCisjIFNldCAwNzAwCiske1JPT1RfSE9NRX0JCQkwNzAwCXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorCisjIFNldCAyNzc1LWxzYgorJHtsb2NhbHN0YXRlZGlyfS9tYWlsCQkwMjc3NQlyb290CW1haWwJZmFsc2UgLSAtIC0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNDFmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5CkBAIC0wLDAgKzEsNjYgQEAKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaHV0aWwKKworaW1wb3J0IGJiLnV0aWxzCisKK2Zyb20gYmJsYXllcnMuY29tbW9uIGltcG9ydCBMYXllclBsdWdpbgorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignYml0YmFrZS1sYXllcnMnKQorCitkZWYgcGx1Z2luX2luaXQocGx1Z2lucyk6CisgICAgcmV0dXJuIENyZWF0ZVBsdWdpbigpCisKK2RlZiByZWFkX3RlbXBsYXRlKHRlbXBsYXRlLCB0ZW1wbGF0ZV9kaXI9J3RlbXBsYXRlcycpOgorICAgIGxpbmVzID0gc3RyKCkKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIHRlbXBsYXRlX2RpciwgdGVtcGxhdGUpKSBhcyBmZDoKKyAgICAgICAgbGluZXMgPSAnJy5qb2luKGZkLnJlYWRsaW5lcygpKQorICAgIHJldHVybiBsaW5lcworCitjbGFzcyBDcmVhdGVQbHVnaW4oTGF5ZXJQbHVnaW4pOgorICAgIGRlZiBkb19jcmVhdGVfbGF5ZXIoc2VsZiwgYXJncyk6CisgICAgICAgICIiIkNyZWF0ZSBhIGJhc2ljIGxheWVyIiIiCisgICAgICAgIGxheWVyZGlyID0gb3MucGF0aC5hYnNwYXRoKGFyZ3MubGF5ZXJkaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxheWVyZGlyKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNwZWNpZmllZCBsYXllciBkaXJlY3RvcnkgZXhpc3RzXG4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICAjIGNyZWF0ZSBkaXJzCisgICAgICAgIGNvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsICdjb25mJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmYpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIFJFQURNRSBmcm9tIHRlbXBsYXRlcy9SRUFETUUKKyAgICAgICAgcmVhZG1lX3RlbXBsYXRlID0gIHJlYWRfdGVtcGxhdGUoJ1JFQURNRScpICUgKGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIpCisgICAgICAgIHJlYWRtZSA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ1JFQURNRScpCisgICAgICAgIHdpdGggb3BlbihyZWFkbWUsICd3JykgYXMgZmQ6CisgICAgICAgICAgICBmZC53cml0ZShyZWFkbWVfdGVtcGxhdGUpCisKKyAgICAgICAgIyBDb3B5IHRoZSBNSVQgbGljZW5zZSBmcm9tIG1ldGEKKyAgICAgICAgY29weWluZyA9ICdDT1BZSU5HLk1JVCcKKyAgICAgICAgZG4gPSBvcy5wYXRoLmRpcm5hbWUKKyAgICAgICAgbGljZW5zZV9zcmMgPSBvcy5wYXRoLmpvaW4oZG4oZG4oZG4oX19maWxlX18pKSksIGNvcHlpbmcpCisgICAgICAgIGxpY2Vuc2VfZHN0ID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCBjb3B5aW5nKQorICAgICAgICBzaHV0aWwuY29weShsaWNlbnNlX3NyYywgbGljZW5zZV9kc3QpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGxheWVyLmNvbmYgZnJvbSB0ZW1wbGF0ZXMvbGF5ZXIuY29uZgorICAgICAgICBsYXllcmNvbmZfdGVtcGxhdGUgPSByZWFkX3RlbXBsYXRlKCdsYXllci5jb25mJykgJSAoYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5wcmlvcml0eSkKKyAgICAgICAgbGF5ZXJjb25mID0gb3MucGF0aC5qb2luKGNvbmYsICdsYXllci5jb25mJykKKyAgICAgICAgd2l0aCBvcGVuKGxheWVyY29uZiwgJ3cnKSBhcyBmZDoKKyAgICAgICAgICAgIGZkLndyaXRlKGxheWVyY29uZl90ZW1wbGF0ZSkKKworICAgICAgICAjIENyZWF0ZSB0aGUgZXhhbXBsZSBmcm9tIHRlbXBsYXRlcy9leGFtcGxlLmJiCisgICAgICAgIGV4YW1wbGVfdGVtcGxhdGUgPSByZWFkX3RlbXBsYXRlKCdleGFtcGxlLmJiJykKKyAgICAgICAgZXhhbXBsZSA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ3JlY2lwZXMtJyArIGFyZ3MuZXhhbXBsZXJlY2lwZSwgYXJncy5leGFtcGxlcmVjaXBlKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZXhhbXBsZSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihleGFtcGxlLCBhcmdzLmV4YW1wbGVyZWNpcGUgKyAnLmJiJyksICd3JykgYXMgZmQ6CisgICAgICAgICAgICBmZC53cml0ZShleGFtcGxlX3RlbXBsYXRlKQorCisgICAgICAgIGxvZ2dlci5wbGFpbignQWRkIHlvdXIgbmV3IGxheWVyIHdpdGggXCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXNcJycgJSBhcmdzLmxheWVyZGlyKQorCisgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIHNwKToKKyAgICAgICAgcGFyc2VyX2NyZWF0ZV9sYXllciA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdjcmVhdGUtbGF5ZXInLCBzZWxmLmRvX2NyZWF0ZV9sYXllciwgcGFyc2VyZWNpcGVzPUZhbHNlKQorICAgICAgICBwYXJzZXJfY3JlYXRlX2xheWVyLmFkZF9hcmd1bWVudCgnbGF5ZXJkaXInLCBoZWxwPSdMYXllciBkaXJlY3RvcnkgdG8gY3JlYXRlJykKKyAgICAgICAgcGFyc2VyX2NyZWF0ZV9sYXllci5hZGRfYXJndW1lbnQoJy0tcHJpb3JpdHknLCAnLXAnLCBkZWZhdWx0PTYsIGhlbHA9J0xheWVyIGRpcmVjdG9yeSB0byBjcmVhdGUnKQorICAgICAgICBwYXJzZXJfY3JlYXRlX2xheWVyLmFkZF9hcmd1bWVudCgnLS1leGFtcGxlLXJlY2lwZS1uYW1lJywgJy1lJywgZGVzdD0nZXhhbXBsZXJlY2lwZScsIGRlZmF1bHQ9J2V4YW1wbGUnLCBoZWxwPSdGaWxlbmFtZSBvZiB0aGUgZXhhbXBsZSByZWNpcGUnKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL1JFQURNRSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNzdmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL1JFQURNRQpAQCAtMCwwICsxLDQxIEBACitUaGlzIFJFQURNRSBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgJXMgbGF5ZXIuCisKK1BsZWFzZSBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbnMgYmVsb3cgZm9yIGRldGFpbHMuCisKK0RlcGVuZGVuY2llcworPT09PT09PT09PT09CisKKyAgVVJJOiA8Zmlyc3QgZGVwZW5kZW5jeT4KKyAgYnJhbmNoOiA8YnJhbmNoIG5hbWU+CisKKyAgVVJJOiA8c2Vjb25kIGRlcGVuZGVuY3k+CisgIGJyYW5jaDogPGJyYW5jaCBuYW1lPgorCisgIC4KKyAgLgorICAuCisKK1BhdGNoZXMKKz09PT09PT0KKworUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoZSAlcyBsYXllciB0byB0aGUgeHh4eCBtYWlsaW5nIGxpc3QgKHh4eHhAenp6ei5vcmcpCithbmQgY2M6IHRoZSBtYWludGFpbmVyOgorCitNYWludGFpbmVyOiBYWFggWVlZWVlZIDx4eHgueXl5eXl5QHp6enp6LmNvbT4KKworVGFibGUgb2YgQ29udGVudHMKKz09PT09PT09PT09PT09PT09CisKKyAgSS4gQWRkaW5nIHRoZSAlcyBsYXllciB0byB5b3VyIGJ1aWxkCisgSUkuIE1pc2MKKworCitJLiBBZGRpbmcgdGhlICVzIGxheWVyIHRvIHlvdXIgYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUnVuICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnCisKK0lJLiBNaXNjCis9PT09PT09PQorCistLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSAlcyBsYXllciAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvZXhhbXBsZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvZXhhbXBsZS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGI4NzNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9leGFtcGxlLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiYml0YmFrZS1sYXllcnMgcmVjaXBlIgorREVTQ1JJUFRJT04gPSAiUmVjaXBlIGNyZWF0ZWQgYnkgYml0YmFrZS1sYXllcnMiCitMSUNFTlNFID0gIk1JVCIKKworcHl0aG9uIGRvX2J1aWxkKCkgeworICAgIGJiLnBsYWluKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgIGJiLnBsYWluKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIpOworICAgIGJiLnBsYWluKCIqICBFeGFtcGxlIHJlY2lwZSBjcmVhdGVkIGJ5IGJpdGJha2UtbGF5ZXJzICAgKiIpOworICAgIGJiLnBsYWluKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIpOworICAgIGJiLnBsYWluKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9sYXllci5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMDMwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYKQEAgLTAsMCArMSwxMCBAQAorIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKK0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgorCisjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUworQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCisgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorCitCQkZJTEVfQ09MTEVDVElPTlMgKz0gIiVzIgorQkJGSUxFX1BBVFRFUk5fJXMgPSAiXiR7TEFZRVJESVJ9LyIKK0JCRklMRV9QUklPUklUWV8lcyA9ICIlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CmluZGV4IDNhNWI3YjYuLjNlODZhNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQpAQCAtMTQzLDIyICsxNDMsMjUgQEAKICAgICAgICAgICAgIG91dCArPSAnXG4gICcuam9pbihsaXN0KGRpZmYpWzI6XSkKICAgICAgICAgICAgIG91dCArPSAnXG4gIC0tJwogICAgICAgICBlbGlmIHNlbGYuZmllbGRuYW1lIGluIGltZ19tb25pdG9yX2ZpbGVzIG9yICcvaW1hZ2UtZmlsZXMvJyBpbiBzZWxmLnBhdGg6Ci0gICAgICAgICAgICBmaWVsZG5hbWUgPSBzZWxmLmZpZWxkbmFtZQotICAgICAgICAgICAgaWYgJy9pbWFnZS1maWxlcy8nIGluIHNlbGYucGF0aDoKLSAgICAgICAgICAgICAgICBmaWVsZG5hbWUgPSBvcy5wYXRoLmpvaW4oJy8nICsgc2VsZi5wYXRoLnNwbGl0KCcvaW1hZ2UtZmlsZXMvJylbMV0sIHNlbGYuZmllbGRuYW1lKQotICAgICAgICAgICAgICAgIG91dCA9ICdDaGFuZ2VzIHRvICVzOlxuICAnICUgZmllbGRuYW1lCisgICAgICAgICAgICBpZiBzZWxmLmZpbGVjaGFuZ2VzIG9yIChzZWxmLm9sZHZhbHVlIGFuZCBzZWxmLm5ld3ZhbHVlKToKKyAgICAgICAgICAgICAgICBmaWVsZG5hbWUgPSBzZWxmLmZpZWxkbmFtZQorICAgICAgICAgICAgICAgIGlmICcvaW1hZ2UtZmlsZXMvJyBpbiBzZWxmLnBhdGg6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkbmFtZSA9IG9zLnBhdGguam9pbignLycgKyBzZWxmLnBhdGguc3BsaXQoJy9pbWFnZS1maWxlcy8nKVsxXSwgc2VsZi5maWVsZG5hbWUpCisgICAgICAgICAgICAgICAgICAgIG91dCA9ICdDaGFuZ2VzIHRvICVzOlxuICAnICUgZmllbGRuYW1lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgb3V0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSAnQ2hhbmdlcyB0byAlcyAnICUgc2VsZi5wYXRoCisgICAgICAgICAgICAgICAgICAgIG91dCA9ICcoJXMpOlxuICAnICUgc2VsZi5maWVsZG5hbWUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbGVjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAnLmpvaW4oWyclcycgJSBpIGZvciBpIGluIHNlbGYuZmlsZWNoYW5nZXNdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFsaW5lcyA9IHNlbGYub2xkdmFsdWUuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgIGJsaW5lcyA9IHNlbGYubmV3dmFsdWUuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihhbGluZXMsIGJsaW5lcywgZmllbGRuYW1lLCBmaWVsZG5hbWUsIGxpbmV0ZXJtPScnKQorICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAnLmpvaW4obGlzdChkaWZmKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgLS0nCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG91dGVyOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSAnQ2hhbmdlcyB0byAlcyAnICUgc2VsZi5wYXRoCi0gICAgICAgICAgICAgICAgb3V0ID0gJyglcyk6XG4gICcgJSBzZWxmLmZpZWxkbmFtZQotICAgICAgICAgICAgaWYgc2VsZi5maWxlY2hhbmdlczoKLSAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAnLmpvaW4oWyclcycgJSBpIGZvciBpIGluIHNlbGYuZmlsZWNoYW5nZXNdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhbGluZXMgPSBzZWxmLm9sZHZhbHVlLnNwbGl0bGluZXMoKQotICAgICAgICAgICAgICAgIGJsaW5lcyA9IHNlbGYubmV3dmFsdWUuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGFsaW5lcywgYmxpbmVzLCBmaWVsZG5hbWUsIGZpZWxkbmFtZSwgbGluZXRlcm09JycpCi0gICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgJy5qb2luKGxpc3QoZGlmZikpCi0gICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgLS0nCisgICAgICAgICAgICAgICAgb3V0ID0gJycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG91dCA9ICclcyBjaGFuZ2VkIGZyb20gIiVzIiB0byAiJXMiJyAlIChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKIApAQCAtMTY5LDcgKzE3Miw3IEBACiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gY2hnLl9zdHJfaW50ZXJuYWwoRmFsc2UpLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgKiAlcycgJSBsaW5lCiAKLSAgICAgICAgcmV0dXJuICclcyVzJyAlIChwcmVmaXgsIG91dCkKKyAgICAgICAgcmV0dXJuICclcyVzJyAlIChwcmVmaXgsIG91dCkgaWYgb3V0IGVsc2UgJycKIAogY2xhc3MgRmlsZUNoYW5nZToKICAgICBjaGFuZ2V0eXBlX2FkZCA9ICdBJwpAQCAtNTA4LDcgKzUxMSw4IEBACiAgICAgcmV0dXJuICdcbicuam9pbihvdXQpCiAKIAotZGVmIHByb2Nlc3NfY2hhbmdlcyhyZXBvcGF0aCwgcmV2aXNpb24xLCByZXZpc2lvbjI9J0hFQUQnLCByZXBvcnRfYWxsPUZhbHNlLCByZXBvcnRfdmVyPUZhbHNlLCBzaWdzPUZhbHNlLCBzaWdzZGlmZj1GYWxzZSk6CitkZWYgcHJvY2Vzc19jaGFuZ2VzKHJlcG9wYXRoLCByZXZpc2lvbjEsIHJldmlzaW9uMj0nSEVBRCcsIHJlcG9ydF9hbGw9RmFsc2UsIHJlcG9ydF92ZXI9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHNpZ3M9RmFsc2UsIHNpZ3NkaWZmPUZhbHNlLCBleGNsdWRlX3BhdGg9Tm9uZSk6CiAgICAgcmVwbyA9IGdpdC5SZXBvKHJlcG9wYXRoKQogICAgIGFzc2VydCByZXBvLmJhcmUgPT0gRmFsc2UKICAgICBjb21taXQgPSByZXBvLmNvbW1pdChyZXZpc2lvbjEpCkBAIC02MDEsNiArNjA1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgY2hnLnBhdGggPT0gY2hnMi5wYXRoIGFuZCBjaGcucGF0aC5zdGFydHN3aXRoKCdwYWNrYWdlcy8nKSBhbmQgY2hnMi5maWVsZG5hbWUgaW4gWydQRScsICdQVicsICdQUiddOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hnLnJlbGF0ZWQuYXBwZW5kKGNoZzIpCiAKKyAgICAjIGZpbHRlciBvdXQgdW53YW50ZWQgcGF0aHMKKyAgICBpZiBleGNsdWRlX3BhdGg6CisgICAgICAgIGZvciBjaGcgaW4gY2hhbmdlczoKKyAgICAgICAgICAgIGlmIGNoZy5maWxlY2hhbmdlczoKKyAgICAgICAgICAgICAgICBmY2hncyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGZjaGcgaW4gY2hnLmZpbGVjaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICBmb3IgZXBhdGggaW4gZXhjbHVkZV9wYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmNoZy5wYXRoLnN0YXJ0c3dpdGgoZXBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZjaGdzLmFwcGVuZChmY2hnKQorICAgICAgICAgICAgICAgIGNoZy5maWxlY2hhbmdlcyA9IGZjaGdzCisKICAgICBpZiByZXBvcnRfYWxsOgogICAgICAgICByZXR1cm4gY2hhbmdlcwogICAgIGVsc2U6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5CmluZGV4IGEzNzI5MDQuLmFjMmZhZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5CkBAIC0zMiw2ICszMiwxMCBAQAogCiAgICAgICAgIGNvcmViYXNlID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuZC5nZXRWYXIoJ0NPUkVCQVNFJykpCiAgICAgICAgIGxheWVycy5hcHBlbmQoY29yZWJhc2UpCisgICAgICAgICMgVGhlIGJpdGJha2UgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIG1ldGEtc2tlbGV0b24gbGF5ZXIgYXMgYSBsYXlvdXQKKyAgICAgICAgIyBmb3IgY29tbW9uIHJlY2lwaWVzLCBlLmc6IHRoZSByZWNpcGV0b29sIHNjcmlwdCB0byBjcmVhdGUga2VybmVsIHJlY2lwaWVzCisgICAgICAgICMgQWRkIHRoZSBtZXRhLXNrZWxldG9uIGxheWVyIHRvIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIGVTREsgaW5zdGFsbGF0aW9uCisgICAgICAgIGxheWVycy5hcHBlbmQob3MucGF0aC5qb2luKGNvcmViYXNlLCAnbWV0YS1za2VsZXRvbicpKQogCiAgICAgICAgICMgRXhjbHVkZSBsYXllcnMKICAgICAgICAgZm9yIGxheWVyX2V4Y2x1ZGUgaW4gc2VsZi5sYXllcnNfZXhjbHVkZToKQEAgLTcxLDYgKzc1LDExIEBACiAgICAgICAgICAgICBsYXllcmRlc3RwYXRoID0gZGVzdGRpcgogICAgICAgICAgICAgaWYgY29yZWJhc2UgPT0gb3MucGF0aC5kaXJuYW1lKGxheWVyKToKICAgICAgICAgICAgICAgICBsYXllcmRlc3RwYXRoICs9ICcvJyArIG9zLnBhdGguYmFzZW5hbWUoY29yZWJhc2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxheWVyX3JlbGF0aXZlID0gb3MucGF0aC5iYXNlbmFtZShjb3JlYmFzZSkgKyAnLycgKyBvcy5wYXRoLnJlbHBhdGgobGF5ZXIsIGNvcmViYXNlKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZGlybmFtZShsYXllcl9yZWxhdGl2ZSkgIT0gbGF5ZXJuZXduYW1lOgorICAgICAgICAgICAgICAgICAgICBsYXllcmRlc3RwYXRoICs9ICcvJyArIG9zLnBhdGguZGlybmFtZShsYXllcl9yZWxhdGl2ZSkKKwogICAgICAgICAgICAgbGF5ZXJkZXN0cGF0aCArPSAnLycgKyBsYXllcm5ld25hbWUKIAogICAgICAgICAgICAgbGF5ZXJfcmVsYXRpdmUgPSBvcy5wYXRoLnJlbHBhdGgobGF5ZXJkZXN0cGF0aCwKQEAgLTEyMyw2ICsxMzIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ3dvcmtzcGFjZWxheWVyJywgd29ya3NwYWNlX25ld25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKKyAgICAgICAgIyBtZXRhLXNrZWxldG9uIGxheWVyIGlzIGFkZGVkIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAjIGJ1dCBub3QgYXMgYSBsYXllciBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIHRoZXJlZm9yZSBpdCBpcworICAgICAgICAjIG5vdCByZXBvcnRlZCB0byB0aGUgZnVuY3Rpb24gY2FsbGVyLgorICAgICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzX2NvcGllZDoKKyAgICAgICAgICAgIGlmIGxheWVyLmVuZHN3aXRoKCcvbWV0YS1za2VsZXRvbicpOgorICAgICAgICAgICAgICAgIGxheWVyc19jb3BpZWQucmVtb3ZlKGxheWVyKQorICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgcmV0dXJuIGxheWVyc19jb3BpZWQKIAogZGVmIGdlbmVyYXRlX2xvY2tlZF9zaWdzKHNpZ2ZpbGUsIGQpOgpAQCAtMjM5LDYgKzI1Niw3IEBACiAgICAgY21kID0gIiVzQkJfU0VUU0NFTkVfRU5GT1JDRT0xIFBTRVVET19ESVNBQkxFRD0xIG9lLWNoZWNrLXNzdGF0ZSAlcyAtcyAtbyAlcyAlcyIgJSAoY21kcHJlZml4LCB0YXJnZXRzLCBmaWx0ZXJvdXRmaWxlLCBsb2dwYXJhbSkKICAgICBlbnYgPSBkaWN0KGQuZ2V0VmFyKCdCQl9PUklHRU5WJywgRmFsc2UpKQogICAgIGVudi5wb3AoJ0JVSUxERElSJywgJycpCisgICAgZW52LnBvcCgnQkJQQVRIJywgJycpCiAgICAgcGF0aGl0ZW1zID0gZW52WydQQVRIJ10uc3BsaXQoJzonKQogICAgIGVudlsnUEFUSCddID0gJzonLmpvaW4oW2l0ZW0gZm9yIGl0ZW0gaW4gcGF0aGl0ZW1zIGlmIG5vdCBpdGVtLmVuZHN3aXRoKCcvYml0YmFrZS9iaW4nKV0pCiAgICAgYmIucHJvY2Vzcy5ydW4oY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1lbnYsIGN3ZD1jd2QsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZGlzdHJvX2NoZWNrLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2Rpc3Ryb19jaGVjay5weQppbmRleCAzN2YwNGVkLi5lNzc1YzNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZGlzdHJvX2NoZWNrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkKQEAgLTc3LDE3ICs3NywxMCBAQAogCiBkZWYgZ2V0X2xhdGVzdF9yZWxlYXNlZF9vcGVuc3VzZV9zb3VyY2VfcGFja2FnZV9saXN0KGQpOgogICAgICJSZXR1cm5zIGxpc3Qgb2YgYWxsIHRoZSBuYW1lIG9zIHBhY2thZ2VzIGluIHRoZSBsYXRlc3Qgb3BlbnN1c2UgZGlzdHJvIgotICAgIGxhdGVzdCA9IGZpbmRfbGF0ZXN0X251bWVyaWNfcmVsZWFzZSgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy9zb3VyY2UvZGlzdHJpYnV0aW9uLyIsZCkKKyAgICBsYXRlc3QgPSBmaW5kX2xhdGVzdF9udW1lcmljX3JlbGVhc2UoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvc291cmNlL2Rpc3RyaWJ1dGlvbi9sZWFwIiwgZCkKIAotICAgIHBhY2thZ2VfbmFtZXMgPSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy9zb3VyY2UvZGlzdHJpYnV0aW9uLyVzL3JlcG8vb3NzL3N1c2Uvc3JjLyIgJSBsYXRlc3QsICJtYWluIiwgZCkKLSAgICBwYWNrYWdlX25hbWVzIHw9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3VwZGF0ZS8lcy9zcmMvIiAlIGxhdGVzdCwgInVwZGF0ZXMiLCBkKQotICAgIHJldHVybiBsYXRlc3QsIHBhY2thZ2VfbmFtZXMKLQotZGVmIGdldF9sYXRlc3RfcmVsZWFzZWRfbWFuZHJpdmFfc291cmNlX3BhY2thZ2VfbGlzdChkKToKLSAgICAiUmV0dXJucyBsaXN0IG9mIGFsbCB0aGUgbmFtZSBvcyBwYWNrYWdlcyBpbiB0aGUgbGF0ZXN0IG1hbmRyaXZhIGRpc3RybyIKLSAgICBsYXRlc3QgPSBmaW5kX2xhdGVzdF9udW1lcmljX3JlbGVhc2UoImh0dHA6Ly9kaXN0cmliLWNvZmZlZS5pcHNsLmp1c3NpZXUuZnIvcHViL2xpbnV4L01hbmRyaXZhTGludXgvb2ZmaWNpYWwvIiwgZCkKLSAgICBwYWNrYWdlX25hbWVzID0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kaXN0cmliLWNvZmZlZS5pcHNsLmp1c3NpZXUuZnIvcHViL2xpbnV4L01hbmRyaXZhTGludXgvb2ZmaWNpYWwvJXMvU1JQTVMvbWFpbi9yZWxlYXNlLyIgJSBsYXRlc3QsICJtYWluIiwgZCkKLSAgICBwYWNrYWdlX25hbWVzIHw9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZGlzdHJpYi1jb2ZmZWUuaXBzbC5qdXNzaWV1LmZyL3B1Yi9saW51eC9NYW5kcml2YUxpbnV4L29mZmljaWFsLyVzL1NSUE1TL21haW4vdXBkYXRlcy8iICUgbGF0ZXN0LCAidXBkYXRlcyIsIGQpCisgICAgcGFja2FnZV9uYW1lcyA9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3NvdXJjZS9kaXN0cmlidXRpb24vbGVhcC8lcy9yZXBvL29zcy9zdXNlL3NyYy8iICUgbGF0ZXN0LCAibWFpbiIsIGQpCisgICAgcGFja2FnZV9uYW1lcyB8PSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy91cGRhdGUvbGVhcC8lcy9vc3Mvc3JjLyIgJSBsYXRlc3QsICJ1cGRhdGVzIiwgZCkKICAgICByZXR1cm4gbGF0ZXN0LCBwYWNrYWdlX25hbWVzCiAKIGRlZiBnZXRfbGF0ZXN0X3JlbGVhc2VkX2NsZWFyX3NvdXJjZV9wYWNrYWdlX2xpc3QoZCk6CkBAIC0xNjEsOCArMTU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkRlYmlhbiIsIGdldF9sYXRlc3RfcmVsZWFzZWRfZGViaWFuX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiVWJ1bnR1IiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF91YnVudHVfc291cmNlX3BhY2thZ2VfbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJGZWRvcmEiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX2ZlZG9yYV9zb3VyY2VfcGFja2FnZV9saXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIk9wZW5TdVNFIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9vcGVuc3VzZV9zb3VyY2VfcGFja2FnZV9saXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIk1hbmRyaXZhIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9tYW5kcml2YV9zb3VyY2VfcGFja2FnZV9saXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIm9wZW5TVVNFIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9vcGVuc3VzZV9zb3VyY2VfcGFja2FnZV9saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkNsZWFyIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9jbGVhcl9zb3VyY2VfcGFja2FnZV9saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CmluZGV4IDdjZTc2N2UuLjljYzg4ZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgIGRlZiBleHBvcnRfcHVia2V5KHNlbGYsIG91dHB1dF9maWxlLCBrZXlpZCwgYXJtb3I9VHJ1ZSk6CiAgICAgICAgICIiIkV4cG9ydCBHUEcgcHVibGljIGtleSB0byBhIGZpbGUiIiIKLSAgICAgICAgY21kID0gJyVzIC0tYmF0Y2ggLS15ZXMgLS1leHBvcnQgLW8gJXMgJyAlIFwKKyAgICAgICAgY21kID0gJyVzIC0tbm8tcGVybWlzc2lvbi13YXJuaW5nIC0tYmF0Y2ggLS15ZXMgLS1leHBvcnQgLW8gJXMgJyAlIFwKICAgICAgICAgICAgICAgICAoc2VsZi5ncGdfYmluLCBvdXRwdXRfZmlsZSkKICAgICAgICAgaWYgc2VsZi5ncGdfcGF0aDoKICAgICAgICAgICAgIGNtZCArPSAiLS1ob21lZGlyICVzICIgJSBzZWxmLmdwZ19wYXRoCkBAIC0yNywyMiArMjcsMjcgQEAKICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoJ0ZhaWxlZCB0byBleHBvcnQgZ3BnIHB1YmxpYyBrZXkgKCVzKTogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWlkLCBvdXRwdXQpKQogCi0gICAgZGVmIHNpZ25fcnBtcyhzZWxmLCBmaWxlcywga2V5aWQsIHBhc3NwaHJhc2UpOgorICAgIGRlZiBzaWduX3JwbXMoc2VsZiwgZmlsZXMsIGtleWlkLCBwYXNzcGhyYXNlLCBkaWdlc3QsIHNpZ25fY2h1bmssIGZzaz1Ob25lLCBmc2tfcGFzc3dvcmQ9Tm9uZSk6CiAgICAgICAgICIiIlNpZ24gUlBNIGZpbGVzIiIiCiAKICAgICAgICAgY21kID0gc2VsZi5ycG1fYmluICsgIiAtLWFkZHNpZ24gLS1kZWZpbmUgJ19ncGdfbmFtZSAlcycgICIgJSBrZXlpZAotICAgICAgICBncGdfYXJncyA9ICctLWJhdGNoIC0tcGFzc3BocmFzZT0lcycgJSBwYXNzcGhyYXNlCisgICAgICAgIGdwZ19hcmdzID0gJy0tbm8tcGVybWlzc2lvbi13YXJuaW5nIC0tYmF0Y2ggLS1wYXNzcGhyYXNlPSVzJyAlIHBhc3NwaHJhc2UKICAgICAgICAgaWYgc2VsZi5ncGdfdmVyc2lvbiA+ICgyLDEsKToKICAgICAgICAgICAgIGdwZ19hcmdzICs9ICcgLS1waW5lbnRyeS1tb2RlPWxvb3BiYWNrJwogICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfZ3BnX3NpZ25fY21kX2V4dHJhX2FyZ3MgJXMnICIgJSBncGdfYXJncworICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfYmluYXJ5X2ZpbGVkaWdlc3RfYWxnb3JpdGhtICVzJyAiICUgZGlnZXN0CiAgICAgICAgIGlmIHNlbGYuZ3BnX2JpbjoKLSAgICAgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJyUlX19ncGcgJXMnICIgJSBzZWxmLmdwZ19iaW4KKyAgICAgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJ19fZ3BnICVzJyAiICUgc2VsZi5ncGdfYmluCiAgICAgICAgIGlmIHNlbGYuZ3BnX3BhdGg6CiAgICAgICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfZ3BnX3BhdGggJXMnICIgJSBzZWxmLmdwZ19wYXRoCisgICAgICAgIGlmIGZzazoKKyAgICAgICAgICAgIGNtZCArPSAiLS1zaWduZmlsZXMgLS1mc2twYXRoICVzICIgJSBmc2sKKyAgICAgICAgICAgIGlmIGZza19wYXNzd29yZDoKKyAgICAgICAgICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfZmlsZV9zaWduaW5nX2tleV9wYXNzd29yZCAlcycgIiAlIGZza19wYXNzd29yZAogCi0gICAgICAgICMgU2lnbiBpbiBjaHVua3Mgb2YgMTAwIHBhY2thZ2VzCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihmaWxlcyksIDEwMCk6Ci0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQgKyAnICcuam9pbihmaWxlc1tpOmkrMTAwXSkpCisgICAgICAgICMgU2lnbiBpbiBjaHVua3MKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGZpbGVzKSwgc2lnbl9jaHVuayk6CisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQgKyAnICcuam9pbihmaWxlc1tpOmkrc2lnbl9jaHVua10pKQogICAgICAgICAgICAgaWYgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkZhaWxlZCB0byBzaWduIFJQTSBwYWNrYWdlczogJXMiICUgb3V0cHV0KQogCkBAIC01Myw4ICs1OCw4IEBACiAgICAgICAgIGlmIHBhc3NwaHJhc2VfZmlsZSBhbmQgcGFzc3BocmFzZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWW91IHNob3VsZCB1c2UgZWl0aGVyIHBhc3NwaHJhc2VfZmlsZSBvZiBwYXNzcGhyYXNlLCBub3QgYm90aCIpCiAKLSAgICAgICAgY21kID0gW3NlbGYuZ3BnX2JpbiwgJy0tZGV0YWNoLXNpZ24nLCAnLS1iYXRjaCcsICctLW5vLXR0eScsICctLXllcycsCi0gICAgICAgICAgICAgICAnLS1wYXNzcGhyYXNlLWZkJywgJzAnLCAnLXUnLCBrZXlpZF0KKyAgICAgICAgY21kID0gW3NlbGYuZ3BnX2JpbiwgJy0tZGV0YWNoLXNpZ24nLCAnLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcnLCAnLS1iYXRjaCcsCisgICAgICAgICAgICAgICAnLS1uby10dHknLCAnLS15ZXMnLCAnLS1wYXNzcGhyYXNlLWZkJywgJzAnLCAnLXUnLCBrZXlpZF0KIAogICAgICAgICBpZiBzZWxmLmdwZ19wYXRoOgogICAgICAgICAgICAgY21kICs9IFsnLS1ob21lZGlyJywgc2VsZi5ncGdfcGF0aF0KQEAgLTkzLDcgKzk4LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBncGcgdmVyc2lvbiBhcyBhIHR1cGxlIG9mIGludHMiIiIKICAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdmVyX3N0ciA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KChzZWxmLmdwZ19iaW4sICItLXZlcnNpb24iKSkuc3BsaXQoKVsyXS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgIHZlcl9zdHIgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoc2VsZi5ncGdfYmluLCAiLS12ZXJzaW9uIiwgIi0tbm8tcGVybWlzc2lvbi13YXJuaW5nIikpLnNwbGl0KClbMl0uZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICByZXR1cm4gdHVwbGUoW2ludChpKSBmb3IgaSBpbiB2ZXJfc3RyLnNwbGl0KCcuJyldKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkNvdWxkIG5vdCBnZXQgZ3BnIHZlcnNpb246ICVzIiAlIGUpCkBAIC0xMDEsNyArMTA2LDcgQEAKIAogICAgIGRlZiB2ZXJpZnkoc2VsZiwgc2lnX2ZpbGUpOgogICAgICAgICAiIiJWZXJpZnkgc2lnbmF0dXJlIiIiCi0gICAgICAgIGNtZCA9IHNlbGYuZ3BnX2JpbiArICIgLS12ZXJpZnkgIgorICAgICAgICBjbWQgPSBzZWxmLmdwZ19iaW4gKyAiIC0tdmVyaWZ5IC0tbm8tcGVybWlzc2lvbi13YXJuaW5nICIKICAgICAgICAgaWYgc2VsZi5ncGdfcGF0aDoKICAgICAgICAgICAgIGNtZCArPSAiLS1ob21lZGlyICVzICIgJSBzZWxmLmdwZ19wYXRoCiAgICAgICAgIGNtZCArPSBzaWdfZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xpY2Vuc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQppbmRleCA4ZDJmZDE3Li5jYTM4NWQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQpAQCAtMTA2LDcgKzEwNiw4IEBACiAgICAgbGljZW5zZSBzdHJpbmcgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgYmxhY2tsaXN0LgogCiAgICAgUmV0dXJucyBhIHR1cGxlIGhvbGRpbmcgdGhlIGJvb2xlYW4gc3RhdGUgYW5kIGEgbGlzdCBvZiB0aGUgYXBwbGljYWJsZQotICAgIGxpY2Vuc2VzIHdoaWNoIHdlcmUgZXhjbHVkZWQgKG9yIE5vbmUsIGlmIHRoZSBzdGF0ZSBpcyBUcnVlKQorICAgIGxpY2Vuc2VzIHRoYXQgd2VyZSBleGNsdWRlZCBpZiBzdGF0ZSBpcyBGYWxzZSwgb3IgdGhlIGxpY2Vuc2VzIHRoYXQgd2VyZQorICAgIGluY2x1ZGVkIGlmIHRoZSBzdGF0ZSBpcyBUcnVlLgogICAgICIiIgogCiAgICAgZGVmIGluY2x1ZGVfbGljZW5zZShsaWNlbnNlKToKQEAgLTExNywxMCArMTE4LDE3IEBACiAKICAgICBkZWYgY2hvb3NlX2xpY2Vuc2VzKGFscGhhLCBiZXRhKToKICAgICAgICAgIiIiU2VsZWN0IHRoZSBvcHRpb24gaW4gYW4gT1Igd2hpY2ggaXMgdGhlICdiZXN0JyAoaGFzIHRoZSBtb3N0Ci0gICAgICAgIGluY2x1ZGVkIGxpY2Vuc2VzKS4iIiIKLSAgICAgICAgYWxwaGFfd2VpZ2h0ID0gbGVuKGxpc3QoZmlsdGVyKGluY2x1ZGVfbGljZW5zZSwgYWxwaGEpKSkKLSAgICAgICAgYmV0YV93ZWlnaHQgPSBsZW4obGlzdChmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBiZXRhKSkpCi0gICAgICAgIGlmIGFscGhhX3dlaWdodCA+IGJldGFfd2VpZ2h0OgorICAgICAgICBpbmNsdWRlZCBsaWNlbnNlcyBhbmQgbm8gZXhjbHVkZWQgbGljZW5zZXMpLiIiIgorICAgICAgICAjIFRoZSBmYWN0b3IgMTAwMCBiZWxvdyBpcyBhcmJpdHJhcnksIGp1c3QgZXhwZWN0ZWQgdG8gYmUgbXVjaCBsYXJnZXIKKyAgICAgICAgIyB0aGF0IHRoZSBudW1iZXIgb2YgbGljZW5zZXMgYWN0dWFsbHkgc3BlY2lmaWVkLiBUaGF0IHdheSB0aGUgd2VpZ2h0CisgICAgICAgICMgd2lsbCBiZSBuZWdhdGl2ZSBpZiB0aGUgbGlzdCBvZiBsaWNlbnNlcyBjb250YWlucyBhbiBleGNsdWRlZCBsaWNlbnNlLAorICAgICAgICAjIGJ1dCBzdGlsbCBnaXZlcyBhIGhpZ2hlciB3ZWlnaHQgdG8gdGhlIGxpc3Qgd2l0aCB0aGUgbW9zdCBpbmNsdWRlZAorICAgICAgICAjIGxpY2Vuc2VzLgorICAgICAgICBhbHBoYV93ZWlnaHQgPSAobGVuKGxpc3QoZmlsdGVyKGluY2x1ZGVfbGljZW5zZSwgYWxwaGEpKSkgLQorICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCAqIChsZW4obGlzdChmaWx0ZXIoZXhjbHVkZV9saWNlbnNlLCBhbHBoYSkpKSA+IDApKQorICAgICAgICBiZXRhX3dlaWdodCA9IChsZW4obGlzdChmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBiZXRhKSkpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgMTAwMCAqIChsZW4obGlzdChmaWx0ZXIoZXhjbHVkZV9saWNlbnNlLCBiZXRhKSkpID4gMCkpCisgICAgICAgIGlmIGFscGhhX3dlaWdodCA+PSBiZXRhX3dlaWdodDoKICAgICAgICAgICAgIHJldHVybiBhbHBoYQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGJldGEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9sc2IucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbHNiLnB5CmluZGV4IDNhOTQ1ZTAuLjcxYzA5OTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9sc2IucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xzYi5weQpAQCAtMSwxOSArMSwyNiBAQAorZGVmIGdldF9vc19yZWxlYXNlKCk6CisgICAgIiIiR2V0IGFsbCBrZXktdmFsdWUgcGFpcnMgZnJvbSAvZXRjL29zLXJlbGVhc2UgYXMgYSBkaWN0IiIiCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKworICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCisgICAgaWYgb3MucGF0aC5leGlzdHMoJy9ldGMvb3MtcmVsZWFzZScpOgorICAgICAgICB3aXRoIG9wZW4oJy9ldGMvb3MtcmVsZWFzZScpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnJzdHJpcCgpLnNwbGl0KCc9JywgMSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkYXRhW2tleS5zdHJpcCgpXSA9IHZhbC5zdHJpcCgnIicpCisgICAgcmV0dXJuIGRhdGEKKwogZGVmIHJlbGVhc2VfZGljdF9vc3IoKToKICAgICAiIiIgUG9wdWxhdGUgYSBkaWN0IHdpdGggcGVydGluZW50IHZhbHVlcyBmcm9tIC9ldGMvb3MtcmVsZWFzZSAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9ldGMvb3MtcmVsZWFzZScpOgotICAgICAgICByZXR1cm4gTm9uZQotCiAgICAgZGF0YSA9IHt9Ci0gICAgd2l0aCBvcGVuKCcvZXRjL29zLXJlbGVhc2UnKSBhcyBmOgotICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGtleSwgdmFsID0gbGluZS5yc3RyaXAoKS5zcGxpdCgnPScsIDEpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYga2V5ID09ICdJRCc6Ci0gICAgICAgICAgICAgICAgZGF0YVsnRElTVFJJQl9JRCddID0gdmFsLnN0cmlwKCciJykKLSAgICAgICAgICAgIGlmIGtleSA9PSAnVkVSU0lPTl9JRCc6Ci0gICAgICAgICAgICAgICAgZGF0YVsnRElTVFJJQl9SRUxFQVNFJ10gPSB2YWwuc3RyaXAoJyInKQorICAgIG9zX3JlbGVhc2UgPSBnZXRfb3NfcmVsZWFzZSgpCisgICAgaWYgJ0lEJyBpbiBvc19yZWxlYXNlOgorICAgICAgICBkYXRhWydESVNUUklCX0lEJ10gPSBvc19yZWxlYXNlWydJRCddCisgICAgaWYgJ1ZFUlNJT05fSUQnIGluIG9zX3JlbGVhc2U6CisgICAgICAgIGRhdGFbJ0RJU1RSSUJfUkVMRUFTRSddID0gb3NfcmVsZWFzZVsnVkVSU0lPTl9JRCddCiAKICAgICByZXR1cm4gZGF0YQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CmluZGV4IDQ3OTdlN2QuLjFlNWMzYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CkBAIC00NSw2ICs0NSwxMTUgQEAKICAgICByZXR1cm4KIAogCitkZWYgc3RyaXBfZXhlY3MocG4sIGRzdGRpciwgc3RyaXBfY21kLCBsaWJkaXIsIGJhc2VfbGliZGlyLCBxYV9hbHJlYWR5X3N0cmlwcGVkPUZhbHNlKToKKyAgICAiIiIKKyAgICBTdHJpcCBleGVjdXRhYmxlIGNvZGUgKGxpa2UgZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMpIF9pbl9wbGFjZV8KKyAgICAtIEJhc2VkIG9uIHN5c3Jvb3Rfc3RyaXAgaW4gc3RhZ2luZy5iYmNsYXNzCisgICAgOnBhcmFtIGRzdGRpcjogZGlyZWN0b3J5IGluIHdoaWNoIHRvIHN0cmlwIGZpbGVzCisgICAgOnBhcmFtIHN0cmlwX2NtZDogU3RyaXAgY29tbWFuZCAodXN1YWxseSAke1NUUklQfSkKKyAgICA6cGFyYW0gbGliZGlyOiAke2xpYmRpcn0gLSBzdHJpcCAuc28gZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICA6cGFyYW0gYmFzZV9saWJkaXI6ICR7YmFzZV9saWJkaXJ9IC0gc3RyaXAgLnNvIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5CisgICAgOnBhcmFtIHFhX2FscmVhZHlfc3RyaXBwZWQ6IFNldCB0byBUcnVlIGlmIGFscmVhZHktc3RyaXBwZWQnIGluICR7SU5TQU5FX1NLSVB9CisgICAgVGhpcyBpcyBmb3IgcHJvcGVyIGxvZ2dpbmcgYW5kIG1lc3NhZ2VzIG9ubHkuCisgICAgIiIiCisgICAgaW1wb3J0IHN0YXQsIGVycm5vLCBvZS5wYXRoLCBvZS51dGlscywgbW1hcAorCisgICAgIyBEZXRlY3QgLmtvIG1vZHVsZSBieSBzZWFyY2hpbmcgZm9yICJ2ZXJtYWdpYz0iIHN0cmluZworICAgIGRlZiBpc19rZXJuZWxfbW9kdWxlKHBhdGgpOgorICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBtbWFwLm1tYXAoZi5maWxlbm8oKSwgMCwgcHJvdD1tbWFwLlBST1RfUkVBRCkuZmluZChiInZlcm1hZ2ljPSIpID49IDAKKworICAgICMgUmV0dXJuIHR5cGUgKGJpdHMpOgorICAgICMgMCAtIG5vdCBlbGYKKyAgICAjIDEgLSBFTEYKKyAgICAjIDIgLSBzdHJpcHBlZAorICAgICMgNCAtIGV4ZWN1dGFibGUKKyAgICAjIDggLSBzaGFyZWQgbGlicmFyeQorICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCisgICAgZGVmIGlzX2VsZihwYXRoKToKKyAgICAgICAgZXhlY190eXBlID0gMAorICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgKKyAgICAgICAgICAgICJmaWxlIFwiJXNcIiIgJSBwYXRoLnJlcGxhY2UoIlwiIiwgIlxcXCIiKSkKKworICAgICAgICBpZiByZXQ6CisgICAgICAgICAgICBiYi5lcnJvcigic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgpCisgICAgICAgICAgICByZXR1cm4gZXhlY190eXBlCisKKyAgICAgICAgaWYgIkVMRiIgaW4gcmVzdWx0OgorICAgICAgICAgICAgZXhlY190eXBlIHw9IDEKKyAgICAgICAgICAgIGlmICJub3Qgc3RyaXBwZWQiIG5vdCBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDIKKyAgICAgICAgICAgIGlmICJleGVjdXRhYmxlIiBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDQKKyAgICAgICAgICAgIGlmICJzaGFyZWQiIGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gOAorICAgICAgICAgICAgaWYgInJlbG9jYXRhYmxlIiBpbiByZXN1bHQgYW5kIGlzX2tlcm5lbF9tb2R1bGUocGF0aCk6CisgICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDE2CisgICAgICAgIHJldHVybiBleGVjX3R5cGUKKworICAgIGVsZmZpbGVzID0ge30KKyAgICBpbm9kZXMgPSB7fQorICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBsaWJkaXIpCisgICAgYmFzZV9saWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgYmFzZV9saWJkaXIpCisgICAgZXhlY19tYXNrID0gc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lYT1RICisgICAgIworICAgICMgRmlyc3QgbGV0cyBmaWd1cmUgb3V0IGFsbCBvZiB0aGUgZmlsZXMgd2UgbWF5IGhhdmUgdG8gcHJvY2VzcworICAgICMKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhkc3RkaXIpOgorICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgIGZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGx0YXJnZXQgPSBvZS5wYXRoLnJlYWxwYXRoKGZpbGUsIGRzdGRpciwgRmFsc2UpCisgICAgICAgICAgICAgICAgcyA9IG9zLmxzdGF0KGx0YXJnZXQpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIChlcnIsIHN0cmVycm9yKSA9IGUuYXJncworICAgICAgICAgICAgICAgIGlmIGVyciAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgIyBTa2lwIGJyb2tlbiBzeW1saW5rcworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhjdXRhYmxlCisgICAgICAgICAgICBpZiBzW3N0YXQuU1RfTU9ERV0gJiBleGVjX21hc2sgXAorICAgICAgICAgICAgICAgICAgICBvciAoKGZpbGUuc3RhcnRzd2l0aChsaWJkaXIpIG9yIGZpbGUuc3RhcnRzd2l0aChiYXNlX2xpYmRpcikpIGFuZCAiLnNvIiBpbiBmKSBcCisgICAgICAgICAgICAgICAgICAgIG9yIGZpbGUuZW5kc3dpdGgoJy5rbycpOgorICAgICAgICAgICAgICAgICMgSWYgaXQncyBhIHN5bWxpbmssIGFuZCBwb2ludHMgdG8gYW4gRUxGIGZpbGUsIHdlIGNhcHR1cmUgdGhlIHJlYWRsaW5rIHRhcmdldAorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGZpbGUpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgZmlsZSAob3IgaGFyZGxpbmspLCBub3QgYSBsaW5rCisgICAgICAgICAgICAgICAgIyAuLi5idXQgaXMgaXQgRUxGLCBhbmQgaXMgaXQgYWxyZWFkeSBzdHJpcHBlZD8KKyAgICAgICAgICAgICAgICBlbGZfZmlsZSA9IGlzX2VsZihmaWxlKQorICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMToKKyAgICAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAyOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcWFfYWxyZWFkeV9zdHJpcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJTa2lwcGluZyBmaWxlICVzIGZyb20gJXMgZm9yIGFscmVhZHktc3RyaXBwZWQgUUEgdGVzdCIgJSAoZmlsZVtsZW4oZHN0ZGlyKTpdLCBwbikpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIkZpbGUgJyVzJyBmcm9tICVzIHdhcyBhbHJlYWR5IHN0cmlwcGVkLCB0aGlzIHdpbGwgcHJldmVudCBmdXR1cmUgZGVidWdnaW5nISIgJSAoZmlsZVtsZW4oZHN0ZGlyKTpdLCBwbikpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHMuc3RfaW5vIGluIGlub2RlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3MubGluayhpbm9kZXNbcy5zdF9pbm9dLCBmaWxlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBoYXJkbGlua3Mgc28gdGhhdCB3ZSBkbyBub3Qgc3RyaXAgdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW3Muc3RfaW5vXSA9IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGZpbGUsIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGZmaWxlc1tmaWxlXSA9IGVsZl9maWxlCisKKyAgICAjCisgICAgIyBOb3cgc3RyaXAgdGhlbSAoaW4gcGFyYWxsZWwpCisgICAgIworICAgIHNmaWxlcyA9IFtdCisgICAgZm9yIGZpbGUgaW4gZWxmZmlsZXM6CisgICAgICAgIGVsZl9maWxlID0gaW50KGVsZmZpbGVzW2ZpbGVdKQorICAgICAgICBzZmlsZXMuYXBwZW5kKChmaWxlLCBlbGZfZmlsZSwgc3RyaXBfY21kKSkKKworICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKHNmaWxlcywgcnVuc3RyaXApCisKKworCiBkZWYgZmlsZV90cmFuc2xhdGUoZmlsZSk6CiAgICAgZnQgPSBmaWxlLnJlcGxhY2UoIkAiLCAiQGF0QCIpCiAgICAgZnQgPSBmdC5yZXBsYWNlKCIgIiwgIkBzcGFjZUAiKQpAQCAtNjcsOCArMTc2LDcgQEAKIAogICAgIGRlZiBwcm9jZXNzX2RlcHMocGlwZSwgcGtnLCBwa2dkZXN0LCBwcm92aWRlcywgcmVxdWlyZXMpOgogICAgICAgICBmaWxlID0gTm9uZQotICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgotICAgICAgICAgICAgbGluZSA9IGxpbmUuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGZvciBsaW5lIGluIHBpcGUuc3BsaXQoIlxuIik6CiAKICAgICAgICAgICAgIG0gPSBmaWxlX3JlLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBpZiBtOgpAQCAtMTE3LDEyICsyMjUsOCBAQAogCiAgICAgICAgIHJldHVybiBwcm92aWRlcywgcmVxdWlyZXMKIAotICAgIHRyeToKLSAgICAgICAgZGVwX3BvcGVuID0gc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdChycG1kZXBzKSArIHBrZ2ZpbGVzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBwcm92aWRlcywgcmVxdWlyZXMgPSBwcm9jZXNzX2RlcHMoZGVwX3BvcGVuLnN0ZG91dCwgcGtnLCBwa2dkZXN0LCBwcm92aWRlcywgcmVxdWlyZXMpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgYmIuZXJyb3IoInJwbWRlcHM6ICclcycgY29tbWFuZCBmYWlsZWQsICclcyciICUgKHNobGV4LnNwbGl0KHJwbWRlcHMpICsgcGtnZmlsZXMsIGUpKQotICAgICAgICByYWlzZSBlCisgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2hsZXguc3BsaXQocnBtZGVwcykgKyBwa2dmaWxlcywgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKyAgICBwcm92aWRlcywgcmVxdWlyZXMgPSBwcm9jZXNzX2RlcHMob3V0cHV0LCBwa2csIHBrZ2Rlc3QsIHByb3ZpZGVzLCByZXF1aXJlcykKIAogICAgIHJldHVybiAocGtnLCBwcm92aWRlcywgcmVxdWlyZXMpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IDNhMmRhYWQuLjBjNWQ5MDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtMTcsMTggKzE3LDExIEBACiBkZWYgY3JlYXRlX2luZGV4KGFyZyk6CiAgICAgaW5kZXhfY21kID0gYXJnCiAKLSAgICB0cnk6Ci0gICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZyAnJXMnIC4uLiIgJSBpbmRleF9jbWQpCi0gICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGluZGV4X2NtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKLSAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgcmV0dXJuKCJJbmRleCBjcmVhdGlvbiBjb21tYW5kICclcycgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGUgJWQ6XG4lcyIgJQotICAgICAgICAgICAgICAgKGUuY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCi0KKyAgICBiYi5ub3RlKCJFeGVjdXRpbmcgJyVzJyAuLi4iICUgaW5kZXhfY21kKQorICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGluZGV4X2NtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKICAgICBpZiByZXN1bHQ6CiAgICAgICAgIGJiLm5vdGUocmVzdWx0KQogCi0gICAgcmV0dXJuIE5vbmUKLQogIiIiCiBUaGlzIG1ldGhvZCBwYXJzZSB0aGUgb3V0cHV0IGZyb20gdGhlIHBhY2thZ2UgbWFuYWdlcmFuZCByZXR1cm4KIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgcGFja2FnZXMuIFRoaXMgaXMgdXNlZApAQCAtMTA0LDEzICs5NywyNSBAQAogY2xhc3MgUnBtSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUGFja2FnZSBmZWVkIHNpZ25pbmcgbm90IHlldCBpbXBsZW1lbnRkIGZvciBycG0nKQorICAgICAgICAgICAgc2lnbmVyID0gZ2V0X3NpZ25lcihzZWxmLmQsIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfQkFDS0VORCcpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2lnbmVyID0gTm9uZQogCiAgICAgICAgIGNyZWF0ZXJlcG9fYyA9IGJiLnV0aWxzLndoaWNoKG9zLmVudmlyb25bJ1BBVEgnXSwgImNyZWF0ZXJlcG9fYyIpCiAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZV9pbmRleCgiJXMgLS11cGRhdGUgLXEgJXMiICUgKGNyZWF0ZXJlcG9fYywgc2VsZi5kZXBsb3lfZGlyKSkKICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgYmIuZmF0YWwocmVzdWx0KQogCisgICAgICAgICMgU2lnbiByZXBvbWQKKyAgICAgICAgaWYgc2lnbmVyOgorICAgICAgICAgICAgc2lnX3R5cGUgPSBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFJykKKyAgICAgICAgICAgIGlzX2FzY2lpX3NpZyA9IChzaWdfdHlwZS51cHBlcigpICE9ICJCSU4iKQorICAgICAgICAgICAgc2lnbmVyLmRldGFjaF9zaWduKG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXIsICdyZXBvZGF0YScsICdyZXBvbWQueG1sJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19OQU1FJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19QQVNTUEhSQVNFX0ZJTEUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1vcj1pc19hc2NpaV9zaWcpCisKKwogY2xhc3MgT3BrZ0luZGV4ZXIoSW5kZXhlcik6CiAgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgogICAgICAgICBhcmNoX3ZhcnMgPSBbIkFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTIiwKQEAgLTE1Miw5ICsxNTcsNyBAQAogICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIG5vIHBhY2thZ2VzIGluICVzISIgJSBzZWxmLmRlcGxveV9kaXIpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICByZXN1bHQgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhpbmRleF9jbWRzLCBjcmVhdGVfaW5kZXgpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCclcycgJSAoJ1xuJy5qb2luKHJlc3VsdCkpKQorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhpbmRleF9jbWRzLCBjcmVhdGVfaW5kZXgpCiAKICAgICAgICAgaWYgc2lnbmVyOgogICAgICAgICAgICAgZmVlZF9zaWdfdHlwZSA9IHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEUnKQpAQCAtMjIwLDcgKzIyMyw3IEBACiAKICAgICAgICAgICAgIGNtZCA9ICJjZCAlczsgUFNFVURPX1VOTE9BRD0xICVzIHBhY2thZ2VzIC4gPiBQYWNrYWdlczsiICUgKGFyY2hfZGlyLCBhcHRfZnRwYXJjaGl2ZSkKIAotICAgICAgICAgICAgY21kICs9ICIlcyAtZmMgUGFja2FnZXMgPiBQYWNrYWdlcy5nejsiICUgZ3ppcAorICAgICAgICAgICAgY21kICs9ICIlcyAtZmNuIFBhY2thZ2VzID4gUGFja2FnZXMuZ3o7IiAlIGd6aXAKIAogICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihhcmNoX2RpciwgIlJlbGVhc2UiKSwgIncrIikgYXMgcmVsZWFzZToKICAgICAgICAgICAgICAgICByZWxlYXNlLndyaXRlKCJMYWJlbDogJXNcbiIgJSBhcmNoKQpAQCAtMjM1LDkgKzIzOCw3IEBACiAgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgbm8gcGFja2FnZXMgaW4gJXMiICUgc2VsZi5kZXBsb3lfZGlyKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgcmVzdWx0ID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICBiYi5mYXRhbCgnJXMnICUgKCdcbicuam9pbihyZXN1bHQpKSkKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BhY2thZ2UgZmVlZCBzaWduaW5nIG5vdCBpbXBsZW1lbnRkIGZvciBkcGtnJykKIApAQCAtNTQ4LDYgKzU0OSwxNCBAQAogICAgICAgICBpZiBmZWVkX3VyaXMgPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBncGdfb3B0cyA9ICcnCisgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgorICAgICAgICAgICAgZ3BnX29wdHMgKz0gJ3JlcG9fZ3BnY2hlY2s9MVxuJworICAgICAgICAgICAgZ3BnX29wdHMgKz0gJ2dwZ2tleT1maWxlOi8vJXMvcGtpL3BhY2thZ2VmZWVkLWdwZy9QQUNLQUdFRkVFRC1HUEctS0VZLSVzLSVzXG4nICUgKHNlbGYuZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSwgc2VsZi5kLmdldFZhcignRElTVFJPJyksIHNlbGYuZC5nZXRWYXIoJ0RJU1RST19DT0RFTkFNRScpKQorCisgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1JQTV9TSUdOX1BBQ0tBR0VTJykgPT0gJzAnOgorICAgICAgICAgICAgZ3BnX29wdHMgKz0gJ2dwZ2NoZWNrPTBcbicKKwogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0YyIsICJ5dW0ucmVwb3MuZCIpKQogICAgICAgICByZW1vdGVfdXJpcyA9IHNlbGYuY29uc3RydWN0X3VyaXMoZmVlZF91cmlzLnNwbGl0KCksIGZlZWRfYmFzZV9wYXRocy5zcGxpdCgpKQogICAgICAgICBmb3IgdXJpIGluIHJlbW90ZV91cmlzOgpAQCAtNTU4LDEyICs1NjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcmVwb19pZCAgID0gIm9lLXJlbW90ZS1yZXBvIiAgKyAiLSIuam9pbih1cmxwYXJzZShyZXBvX3VyaSkucGF0aC5zcGxpdCgiLyIpKQogICAgICAgICAgICAgICAgICAgICByZXBvX25hbWUgPSAiT0UgUmVtb3RlIFJlcG86IiArICIgIi5qb2luKHVybHBhcnNlKHJlcG9fdXJpKS5wYXRoLnNwbGl0KCIvIikpCiAgICAgICAgICAgICAgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0YyIsICJ5dW0ucmVwb3MuZCIsIHJlcG9fYmFzZSArICIucmVwbyIpLCAnYScpLndyaXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyVzXVxubmFtZT0lc1xuYmFzZXVybD0lc1xuXG4iICUgKHJlcG9faWQsIHJlcG9fbmFtZSwgcmVwb191cmkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyVzXVxubmFtZT0lc1xuYmFzZXVybD0lc1xuJXNcbiIgJSAocmVwb19pZCwgcmVwb19uYW1lLCByZXBvX3VyaSwgZ3BnX29wdHMpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXBvX25hbWUgPSAiT0UgUmVtb3RlIFJlcG86IiArICIgIi5qb2luKHVybHBhcnNlKHVyaSkucGF0aC5zcGxpdCgiLyIpKQogICAgICAgICAgICAgICAgIHJlcG9fdXJpID0gdXJpCiAgICAgICAgICAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjIiwgInl1bS5yZXBvcy5kIiwgcmVwb19iYXNlICsgIi5yZXBvIiksICd3Jykud3JpdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbJXNdXG5uYW1lPSVzXG5iYXNldXJsPSVzXG4iICUgKHJlcG9fYmFzZSwgcmVwb19uYW1lLCByZXBvX3VyaSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbJXNdXG5uYW1lPSVzXG5iYXNldXJsPSVzXG4lcyIgJSAocmVwb19iYXNlLCByZXBvX25hbWUsIHJlcG9fdXJpLCBncGdfb3B0cykpCiAKICAgICBkZWYgX3ByZXBhcmVfcGtnX3RyYW5zYWN0aW9uKHNlbGYpOgogICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKQEAgLTYwOCwxMCArNjE3LDEyIEBACiAgICAgICAgICAgICBzZWxmLl9pbnZva2VfZG5mKFsicmVtb3ZlIl0gKyBwa2dzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJycG0iKQotICAgICAgICAgICAgYXJncyA9IFsiLWUiLCAiLS1ub2RlcHMiLCAiLS1yb290PSVzIiAlc2VsZi50YXJnZXRfcm9vdGZzXQorICAgICAgICAgICAgYXJncyA9IFsiLWUiLCAiLXYiLCAiLS1ub2RlcHMiLCAiLS1yb290PSVzIiAlc2VsZi50YXJnZXRfcm9vdGZzXQogCiAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYmIubm90ZSgiUnVubmluZyAlcyIgJSAnICcuam9pbihbY21kXSArIGFyZ3MgKyBwa2dzKSkKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbY21kXSArIGFyZ3MgKyBwa2dzLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgICAgIGJiLm5vdGUob3V0cHV0KQogICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkNvdWxkIG5vdCBpbnZva2UgcnBtLiBDb21tYW5kICIKICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUgKCcgJy5qb2luKFtjbWRdICsgYXJncyArIHBrZ3MpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCkBAIC02ODIsNyArNjkzLDcgQEAKICAgICAgICAgcmV0dXJuIHBhY2thZ2VzCiAKICAgICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9pbnZva2VfZG5mKFsibWFrZWNhY2hlIl0pCisgICAgICAgIHNlbGYuX2ludm9rZV9kbmYoWyJtYWtlY2FjaGUiLCAiLS1yZWZyZXNoIl0pCiAKICAgICBkZWYgX2ludm9rZV9kbmYoc2VsZiwgZG5mX2FyZ3MsIGZhdGFsID0gVHJ1ZSwgcHJpbnRfb3V0cHV0ID0gVHJ1ZSApOgogICAgICAgICBvcy5lbnZpcm9uWydSUE1fRVRDQ09ORklHRElSJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKQEAgLTExNDUsNyArMTE1Niw3IEBACiAKICAgICAgICAgIyBDcmVhdGUgYW4gdGVtcCBkaXIgYXMgb3BrZyByb290IGZvciBkdW1teSBpbnN0YWxsYXRpb24KICAgICAgICAgdGVtcF9yb290ZnMgPSBzZWxmLmQuZXhwYW5kKCcke1R9L29wa2cnKQotICAgICAgICBvcGtnX2xpYl9kaXIgPSBzZWxmLmQuZ2V0VmFyKCdPUEtHTElCRElSJywgVHJ1ZSkKKyAgICAgICAgb3BrZ19saWJfZGlyID0gc2VsZi5kLmdldFZhcignT1BLR0xJQkRJUicpCiAgICAgICAgIGlmIG9wa2dfbGliX2RpclswXSA9PSAiLyI6CiAgICAgICAgICAgICBvcGtnX2xpYl9kaXIgPSBvcGtnX2xpYl9kaXJbMTpdCiAgICAgICAgIHRlbXBfb3BrZ19kaXIgPSBvcy5wYXRoLmpvaW4odGVtcF9yb290ZnMsIG9wa2dfbGliX2RpciwgJ29wa2cnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CmluZGV4IGYxYWIzZGQuLjU4NGJmNmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb2UucGF0aAoraW1wb3J0IG9lLnR5cGVzCiAKIGNsYXNzIE5vdEZvdW5kRXJyb3IoYmIuQkJIYW5kbGVkRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CmluZGV4IDQ0OGEyYjkuLjFlYTAzZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CkBAIC05OCw3ICs5OCw3IEBACiAgICAgaWYgKG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gIG9zLnN0YXQoZHN0KS5zdF9kZXYpOgogICAgICAgICAjIE5lZWQgdG8gY29weSBkaXJlY3RvcmllcyBvbmx5IHdpdGggdGFyIGZpcnN0IHNpbmNlIGNwIHdpbGwgZXJyb3IgaWYgdHdvIAogICAgICAgICAjIHdyaXRlcnMgdHJ5IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNhbWUgdGltZQotICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKKyAgICAgICAgY21kID0gImNkICVzOyBmaW5kIC4gLXR5cGUgZCAtcHJpbnQgfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLWNmIC0gLUMgJXMgLXAgLS1uby1yZWN1cnNpb24gLS1maWxlcy1mcm9tIC0gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhoZiAtIC1DICVzIiAlIChzcmMsIHNyYywgZHN0KQogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKICAgICAgICAgc291cmNlID0gJycKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CmluZGV4IGE3ZmRkMzYuLmNhYjhlNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKQEAgLTIsNyArMiw3IEBACiAjCiAjIFNvbWUgY29kZSBib3Jyb3dlZCBmcm9tIHRoZSBPRSBsYXllciBpbmRleAogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCiBpbXBvcnQgc3lzCkBAIC0xODgsNiArMTg4LDExIEBACiAgICAgICAgICAgICBmb3Igd3JhcGxpbmUgaW4gd3JhcHBlZFs6LTFdOgogICAgICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZCgnJXMgXFwlcycgJSAod3JhcGxpbmUsIG5ld2xpbmUpKQogICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKCclcyVzJyAlICh3cmFwcGVkWy0xXSwgbmV3bGluZSkpCisKKyAgICAgICAgIyBTcGxpdCBvbiBuZXdsaW5lcyAtIHRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGlmIHlvdSBhcmUgb25seQorICAgICAgICAjIGdvaW5nIHRvIHdyaXRlIHRoZSBvdXRwdXQgdG8gZGlzaywgYnV0IGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgaXQKKyAgICAgICAgIyAoYXMgcGF0Y2hfcmVjaXBlX2ZpbGUoKSB3aWxsIGRvIGlmIHBhdGNoPVRydWUpIHRoZW4gaXQncyBpbXBvcnRhbnQuCisgICAgICAgIGFkZGxpbmVzID0gW2xpbmUgZm9yIGwgaW4gYWRkbGluZXMgZm9yIGxpbmUgaW4gbC5zcGxpdGxpbmVzKFRydWUpXQogICAgICAgICBpZiByZXdpbmRjb21tZW50czoKICAgICAgICAgICAgICMgRW5zdXJlIHdlIGluc2VydCB0aGUgbGluZXMgYmVmb3JlIGFueSBsZWFkaW5nIGNvbW1lbnRzCiAgICAgICAgICAgICAjICh0aGF0IHdlJ2Qgd2FudCB0byBlbnN1cmUgcmVtYWluIGxlYWRpbmcgdGhlIG5leHQgdmFsdWUpCkBAIC0zMjAsNyArMzI1LDcgQEAKIAogCiAKLWRlZiBjb3B5X3JlY2lwZV9maWxlcyhkLCB0Z3RfZGlyLCB3aG9sZV9kaXI9RmFsc2UsIGRvd25sb2FkPVRydWUpOgorZGVmIGNvcHlfcmVjaXBlX2ZpbGVzKGQsIHRndF9kaXIsIHdob2xlX2Rpcj1GYWxzZSwgZG93bmxvYWQ9VHJ1ZSwgYWxsX3ZhcmlhbnRzPUZhbHNlKToKICAgICAiIiJDb3B5IChsb2NhbCkgcmVjaXBlIGZpbGVzLCBpbmNsdWRpbmcgYm90aCBmaWxlcyBpbmNsdWRlZCB2aWEgaW5jbHVkZS9yZXF1aXJlLAogICAgIGFuZCBmaWxlcyByZWZlcnJlZCB0byBpbiB0aGUgU1JDX1VSSSB2YXJpYWJsZS4iIiIKICAgICBpbXBvcnQgYmIuZmV0Y2gyCkBAIC0zMjgsMTggKzMzMyw0MSBAQAogCiAgICAgIyBGSVhNRSBuZWVkIGEgd2FybmluZyBpZiB0aGUgdW5leHBhbmRlZCBTUkNfVVJJIHZhbHVlIGNvbnRhaW5zIHZhcmlhYmxlIHJlZmVyZW5jZXMKIAotICAgIHVyaXMgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQotICAgIGZldGNoID0gYmIuZmV0Y2gyLkZldGNoKHVyaXMsIGQpCi0gICAgaWYgZG93bmxvYWQ6Ci0gICAgICAgIGZldGNoLmRvd25sb2FkKCkKKyAgICB1cmlfdmFsdWVzID0gW10KKyAgICBsb2NhbHBhdGhzID0gW10KKyAgICBkZWYgZmV0Y2hfdXJscyhyZGF0YSk6CisgICAgICAgICMgQ29sbGVjdCB0aGUgbG9jYWwgcGF0aHMgZnJvbSBTUkNfVVJJCisgICAgICAgIHNyY3VyaSA9IHJkYXRhLmdldFZhcignU1JDX1VSSScpIG9yICIiCisgICAgICAgIGlmIHNyY3VyaSBub3QgaW4gdXJpX3ZhbHVlczoKKyAgICAgICAgICAgIGZldGNoID0gYmIuZmV0Y2gyLkZldGNoKHNyY3VyaS5zcGxpdCgpLCByZGF0YSkKKyAgICAgICAgICAgIGlmIGRvd25sb2FkOgorICAgICAgICAgICAgICAgIGZldGNoLmRvd25sb2FkKCkKKyAgICAgICAgICAgIGZvciBwdGggaW4gZmV0Y2gubG9jYWxwYXRocygpOgorICAgICAgICAgICAgICAgIGlmIHB0aCBub3QgaW4gbG9jYWxwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRocy5hcHBlbmQocHRoKQorICAgICAgICAgICAgdXJpX3ZhbHVlcy5hcHBlbmQoc3JjdXJpKQorCisgICAgZmV0Y2hfdXJscyhkKQorICAgIGlmIGFsbF92YXJpYW50czoKKyAgICAgICAgIyBHZXQgZmlsZXMgZm9yIG90aGVyIHZhcmlhbnRzIGUuZy4gaW4gdGhlIGNhc2Ugb2YgYSBTUkNfVVJJX2FwcGVuZAorICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgdmFyaWFudHMgPSAobG9jYWxkYXRhLmdldFZhcignQkJDTEFTU0VYVEVORCcpIG9yICcnKS5zcGxpdCgpCisgICAgICAgIGlmIHZhcmlhbnRzOgorICAgICAgICAgICAgIyBFbnN1cmUgd2UgaGFuZGxlIGNsYXNzLXRhcmdldCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggb25lIG9mIHRoZSB2YXJpYW50cworICAgICAgICAgICAgdmFyaWFudHMuYXBwZW5kKCd0YXJnZXQnKQorICAgICAgICAgICAgZm9yIHZhcmlhbnQgaW4gdmFyaWFudHM6CisgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignQ0xBU1NPVkVSUklERScsICdjbGFzcy0lcycgJSB2YXJpYW50KQorICAgICAgICAgICAgICAgIGZldGNoX3VybHMobG9jYWxkYXRhKQogCiAgICAgIyBDb3B5IGxvY2FsIGZpbGVzIHRvIHRhcmdldCBkaXJlY3RvcnkgYW5kIGdhdGhlciBhbnkgcmVtb3RlIGZpbGVzCi0gICAgYmJfZGlyID0gb3MucGF0aC5kaXJuYW1lKGQuZ2V0VmFyKCdGSUxFJykpICsgb3Muc2VwCisgICAgYmJfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShkLmdldFZhcignRklMRScpKSkgKyBvcy5zZXAKICAgICByZW1vdGVzID0gW10KICAgICBjb3BpZWQgPSBbXQotICAgIGluY2x1ZGVzID0gW3BhdGggZm9yIHBhdGggaW4gZC5nZXRWYXIoJ0JCSU5DTFVERUQnKS5zcGxpdCgpIGlmCi0gICAgICAgICAgICAgICAgcGF0aC5zdGFydHN3aXRoKGJiX2RpcikgYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXQotICAgIGZvciBwYXRoIGluIGZldGNoLmxvY2FscGF0aHMoKSArIGluY2x1ZGVzOgorICAgICMgTmVlZCB0byBkbyB0aGlzIGluIHR3byBzdGVwcyBzaW5jZSB3ZSB3YW50IHRvIGNoZWNrIGFnYWluc3QgdGhlIGFic29sdXRlIHBhdGgKKyAgICBpbmNsdWRlcyA9IFtvcy5wYXRoLmFic3BhdGgocGF0aCkgZm9yIHBhdGggaW4gZC5nZXRWYXIoJ0JCSU5DTFVERUQnKS5zcGxpdCgpIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpXQorICAgICMgV2UgYWxzbyBjaGVjayB0aGlzIGJlbG93LCBidXQgd2UgZG9uJ3Qgd2FudCBhbnkgaXRlbXMgaW4gdGhpcyBsaXN0IGJlaW5nIGNvbnNpZGVyZWQgcmVtb3RlcworICAgIGluY2x1ZGVzID0gW3BhdGggZm9yIHBhdGggaW4gaW5jbHVkZXMgaWYgcGF0aC5zdGFydHN3aXRoKGJiX2RpcildCisgICAgZm9yIHBhdGggaW4gbG9jYWxwYXRocyArIGluY2x1ZGVzOgogICAgICAgICAjIE9ubHkgaW1wb3J0IGZpbGVzIHRoYXQgYXJlIHVuZGVyIHRoZSBtZXRhIGRpcmVjdG9yeQogICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoYmJfZGlyKToKICAgICAgICAgICAgIGlmIG5vdCB3aG9sZV9kaXI6CkBAIC03NzgsNyArODA2LDcgQEAKIAogZGVmIGZpbmRfbGF5ZXJkaXIoZm4pOgogICAgICIiIiBGaWd1cmUgb3V0IHRoZSBwYXRoIHRvIHRoZSBiYXNlIG9mIHRoZSBsYXllciBjb250YWluaW5nIGEgZmlsZSAoZS5nLiBhIHJlY2lwZSkiIiIKLSAgICBwdGggPSBmbgorICAgIHB0aCA9IG9zLnBhdGguYWJzcGF0aChmbikKICAgICBsYXllcmRpciA9ICcnCiAgICAgd2hpbGUgcHRoOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocHRoLCAnY29uZicsICdsYXllci5jb25mJykpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKaW5kZXggOTY1OTFmMy4uNzU0ZWY1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CkBAIC0yNjEsMTUgKzI2MSwyMiBAQAogICAgICAgICAgICAgIyBSZW1vdmUgY29tcG9uZW50cyB0aGF0IHdlIGRvbid0IG5lZWQgaWYgaXQncyBhIHJlYWQtb25seSByb290ZnMKICAgICAgICAgICAgIHVubmVlZGVkX3BrZ3MgPSBzZWxmLmQuZ2V0VmFyKCJST09URlNfUk9fVU5ORUVERUQiKS5zcGxpdCgpCiAgICAgICAgICAgICBwa2dzX2luc3RhbGxlZCA9IGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzKHNlbGYuZCkKLSAgICAgICAgICAgICMgTWFrZSBzdXJlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgaXMgbGFzdCBvbiB0aGUgY29tbWFuZCBsaW5lLCBzbwotICAgICAgICAgICAgIyB0aGF0IGl0IGlzIHJlbW92ZWQgbGFzdC4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgaXRzIGRhdGFiYXNlIGlzCi0gICAgICAgICAgICAjIGF2YWlsYWJsZSB3aGlsZSB1bmluc3RhbGxpbmcgcGFja2FnZXMsIGFsbG93aW5nIGFsdGVybmF0aXZlCi0gICAgICAgICAgICAjIHN5bWxpbmtzIG9mIHBhY2thZ2VzIHRvIGJlIHVuaW5zdGFsbGVkIHRvIGJlIG1hbmFnZWQgY29ycmVjdGx5LgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgdXBkYXRlLWFsdGVybmF0aXZlcyBpcyByZW1vdmVkIGxhc3QuIFRoaXMgaXMKKyAgICAgICAgICAgICMgYmVjYXVzZSBpdHMgZGF0YWJhc2UgaGFzIHRvIGF2YWlsYWJsZSB3aGlsZSB1bmluc3RhbGxpbmcKKyAgICAgICAgICAgICMgb3RoZXIgcGFja2FnZXMsIGFsbG93aW5nIGFsdGVybmF0aXZlIHN5bWxpbmtzIG9mIHBhY2thZ2VzCisgICAgICAgICAgICAjIHRvIGJlIHVuaW5zdGFsbGVkIG9yIHRvIGJlIG1hbmFnZWQgY29ycmVjdGx5IG90aGVyd2lzZS4KICAgICAgICAgICAgIHByb3ZpZGVyID0gc2VsZi5kLmdldFZhcigiVklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXMiKQogICAgICAgICAgICAgcGtnc190b19yZW1vdmUgPSBzb3J0ZWQoW3BrZyBmb3IgcGtnIGluIHBrZ3NfaW5zdGFsbGVkIGlmIHBrZyBpbiB1bm5lZWRlZF9wa2dzXSwga2V5PWxhbWJkYSB4OiB4ID09IHByb3ZpZGVyKQogCisgICAgICAgICAgICAjIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHJvdmlkZXIgaXMgcmVtb3ZlZCBpbiBpdHMgb3duIHJlbW92ZSgpCisgICAgICAgICAgICAjIGNhbGwgYmVjYXVzZSBhbGwgcGFja2FnZSBtYW5hZ2VycyBkbyBub3QgZ3VhcmFudGVlIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgIyBhcmUgcmVtb3ZlZCBpbiB0aGUgb3JkZXIgdGhleSBnaXZlbiBpbiB0aGUgbGlzdCAod2hpY2ggaXMKKyAgICAgICAgICAgICMgcGFzc2VkIHRvIHRoZSBjb21tYW5kIGxpbmUpLiBUaGUgc29ydGluZyBkb25lIGVhcmxpZXIgaXMKKyAgICAgICAgICAgICMgdXRpbGl6ZWQgdG8gaW1wbGVtZW50IHRoZSAyLXN0YWdlIHJlbW92YWwuCisgICAgICAgICAgICBpZiBsZW4ocGtnc190b19yZW1vdmUpID4gMToKKyAgICAgICAgICAgICAgICBzZWxmLnBtLnJlbW92ZShwa2dzX3RvX3JlbW92ZVs6LTFdLCBGYWxzZSkKICAgICAgICAgICAgIGlmIGxlbihwa2dzX3RvX3JlbW92ZSkgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYucG0ucmVtb3ZlKHBrZ3NfdG9fcmVtb3ZlLCBGYWxzZSkKKyAgICAgICAgICAgICAgICBzZWxmLnBtLnJlbW92ZShbcGtnc190b19yZW1vdmVbLTFdXSwgRmFsc2UpCiAKICAgICAgICAgaWYgZGVsYXllZF9wb3N0aW5zdHM6CiAgICAgICAgICAgICBzZWxmLl9zYXZlX3Bvc3RpbnN0cygpCkBAIC0zMDIsMTAgKzMwOSwxMSBAQAogICAgICAgICAgICAgYmIubm90ZSgiPiBFeGVjdXRpbmcgJXMgaW50ZXJjZXB0IC4uLiIgJSBzY3JpcHQpCiAKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzY3JpcHRfZnVsbCkKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzY3JpcHRfZnVsbCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgICAgIGlmIG91dHB1dDogYmIubm90ZShvdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkIChleGl0IGNvZGU6ICVkKSEgU2VlIGxvZyBmb3IgZGV0YWlscyEgKE91dHB1dDogJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoc2NyaXB0LCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gbG9nLmRvX3Jvb3RmcyIgJSBzY3JpcHQpCisgICAgICAgICAgICAgICAgYmIubm90ZSgiRXhpdCBjb2RlICVkLiBPdXRwdXQ6XG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9mdWxsKSBhcyBpbnRlcmNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IE5vbmUKQEAgLTUyNCw3ICs1MzIsOCBAQAogICAgICAgICAgICAgc2VsZi5wbS5zYXZlX3JwbXBvc3RpbnN0KHBrZykKIAogICAgIGRlZiBfY2xlYW51cChzZWxmKToKLSAgICAgICAgcGFzcworICAgICAgICBzZWxmLnBtLl9pbnZva2VfZG5mKFsiY2xlYW4iLCAiYWxsIl0pCisKIAogY2xhc3MgRHBrZ09wa2dSb290ZnMoUm9vdGZzKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgcHJvZ3Jlc3NfcmVwb3J0ZXI9Tm9uZSwgbG9nY2F0Y2hlcj1Ob25lKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CmluZGV4IDlmZTE2ODcuLmEzYTZjMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQpAQCAtMTUyLDYgKzE1Miw4IEBACiAgICAgICAgIHBtLmluc3RhbGwocGtnc19hdHRlbXB0LCBUcnVlKQogCiAgICAgZGVmIF9wb3B1bGF0ZShzZWxmKToKKyAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BSRV9UQVJHRVRfQ09NTUFORCIpKQorCiAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgVEFSR0VUIHBhY2thZ2VzIikKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLnRhcmdldF9wbSwgc2VsZi50YXJnZXRfbWFuaWZlc3QpCiAKQEAgLTIzMyw2ICsyMzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ZhbHNlLCBUcnVlXVtwa2dfdHlwZSA9PSBNYW5pZmVzdC5QS0dfVFlQRV9BVFRFTVBUX09OTFldKQogCiAgICAgZGVmIF9wb3B1bGF0ZShzZWxmKToKKyAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BSRV9UQVJHRVRfQ09NTUFORCIpKQorCiAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgVEFSR0VUIHBhY2thZ2VzIikKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLnRhcmdldF9wbSwgc2VsZi50YXJnZXRfbWFuaWZlc3QpCiAKQEAgLTMxNSw2ICszMTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ZhbHNlLCBUcnVlXVtwa2dfdHlwZSA9PSBNYW5pZmVzdC5QS0dfVFlQRV9BVFRFTVBUX09OTFldKQogCiAgICAgZGVmIF9wb3B1bGF0ZShzZWxmKToKKyAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BSRV9UQVJHRVRfQ09NTUFORCIpKQorCiAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgVEFSR0VUIHBhY2thZ2VzIikKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLnRhcmdldF9wbSwgc2VsZi50YXJnZXRfbWFuaWZlc3QpCiAKQEAgLTM3OSw1ICszODUsMjQgQEAKICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKICAgICBvcy5lbnZpcm9uLnVwZGF0ZShlbnZfYmtwKQogCitkZWYgZ2V0X2V4dHJhX3Nka2luZm8oc3N0YXRlX2Rpcik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSB0YXJnZXQgYW5kIGhvc3QgbWFuaWZlc3QgZmlsZXMgcGFja2FnZXMgb2YgZVNESy4KKyAgICAiIiIKKyAgICBpbXBvcnQgbWF0aAorICAgIAorICAgIGV4dHJhX2luZm8gPSB7fQorICAgIGV4dHJhX2luZm9bJ3Rhc2tzaXplcyddID0ge30KKyAgICBleHRyYV9pbmZvWydmaWxlc2l6ZXMnXSA9IHt9CisgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc3N0YXRlX2Rpcik6CisgICAgICAgIGZvciBmbiBpbiBmaWxlczoKKyAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcudGd6Jyk6CisgICAgICAgICAgICAgICAgZnNpemUgPSBpbnQobWF0aC5jZWlsKGZsb2F0KG9zLnBhdGguZ2V0c2l6ZShvcy5wYXRoLmpvaW4ocm9vdCwgZm4pKSkgLyAxMDI0KSkKKyAgICAgICAgICAgICAgICB0YXNrID0gZm4ucnNwbGl0KCc6JywxKVsxXS5zcGxpdCgnXycsMSlbMV0uc3BsaXQoJywnKVswXQorICAgICAgICAgICAgICAgIG9yaWd0b3RhbCA9IGV4dHJhX2luZm9bJ3Rhc2tzaXplcyddLmdldCh0YXNrLCAwKQorICAgICAgICAgICAgICAgIGV4dHJhX2luZm9bJ3Rhc2tzaXplcyddW3Rhc2tdID0gb3JpZ3RvdGFsICsgZnNpemUKKyAgICAgICAgICAgICAgICBleHRyYV9pbmZvWydmaWxlc2l6ZXMnXVtmbl0gPSBmc2l6ZQorICAgIHJldHVybiBleHRyYV9pbmZvCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKaW5kZXggYjhkZDRjOC4uM2E4Nzc4ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAjIFF1aWx0IChwYXRjaCBhcHBsaWNhdGlvbikgY2hhbmdpbmcgaXNuJ3QgbGlrZWx5IHRvIGFmZmVjdCBhbnl0aGluZwotICAgIGV4Y2x1ZGVsaXN0ID0gWydxdWlsdC1uYXRpdmUnLCAnc3VidmVyc2lvbi1uYXRpdmUnLCAnZ2l0LW5hdGl2ZSddCisgICAgZXhjbHVkZWxpc3QgPSBbJ3F1aWx0LW5hdGl2ZScsICdzdWJ2ZXJzaW9uLW5hdGl2ZScsICdnaXQtbmF0aXZlJywgJ2NjYWNoZS1uYXRpdmUnXQogICAgIGlmIGRlcG5hbWUgaW4gZXhjbHVkZWxpc3QgYW5kIHJlY2lwZW5hbWUgIT0gZGVwbmFtZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTMyMCw3ICszMjAsNyBAQAogCiAgICAgaWYgbm90IHRhc2toYXNobGlzdCBvciAobGVuKGZpbGVkYXRlcykgPCAyIGFuZCBub3QgZm91bmRhbGwpOgogICAgICAgICAjIFRoYXQgZGlkbid0IHdvcmssIGxvb2sgaW4gc3N0YXRlLWNhY2hlCi0gICAgICAgIGhhc2hlcyA9IHRhc2toYXNobGlzdCBvciBbJyonXQorICAgICAgICBoYXNoZXMgPSB0YXNraGFzaGxpc3Qgb3IgWyc/JyAqIDMyXQogICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICAgICAgZm9yIGhhc2h2YWwgaW4gaGFzaGVzOgogICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUEFDS0FHRV9BUkNIJywgJyonKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CmluZGV4IDJmMThlYzAuLjk0YWZlMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKQEAgLTI5Miw2ICsyOTIsOCBAQAogICAgICAgICAgICAgdmVybnVtID0gdmVyLnNwbGl0KCcgJylbLTFdCiAgICAgICAgIGlmIHZlci5zdGFydHN3aXRoKCdHTk9NRSBUZXJtaW5hbCcpOgogICAgICAgICAgICAgdmVybnVtID0gdmVyLnNwbGl0KCcgJylbLTFdCisgICAgICAgIGlmIHZlci5zdGFydHN3aXRoKCdNQVRFIFRlcm1pbmFsJyk6CisgICAgICAgICAgICB2ZXJudW0gPSB2ZXIuc3BsaXQoJyAnKVstMV0KICAgICAgICAgaWYgdmVyLnN0YXJ0c3dpdGgoJ3RtdXgnKToKICAgICAgICAgICAgIHZlcm51bSA9IHZlci5zcGxpdCgpWy0xXQogICAgIHJldHVybiB2ZXJudW0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91c2VyYWRkLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3VzZXJhZGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5YWM3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91c2VyYWRkLnB5CkBAIC0wLDAgKzEsNjggQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHJlCisKK2NsYXNzIG15QXJndW1lbnRQYXJzZXIoYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgorICAgIGRlZiBfcHJpbnRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBmaWxlPU5vbmUpOgorICAgICAgICBiYi53YXJuKCIlcyAtICVzOiAlcyIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgbWVzc2FnZSkpCisKKyAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZC4uLgorICAgIGRlZiBleGl0KHNlbGYsIHN0YXR1cz0wLCBtZXNzYWdlPU5vbmUpOgorICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSBvciAoIiVzIC0gJXM6IHVzZXJhZGQuYmJjbGFzczogQXJndW1lbnQgcGFyc2luZyBleGl0ZWQiICUgKGQuZ2V0VmFyKCdQTicpLCBwa2cpKQorICAgICAgICBlcnJvcihtZXNzYWdlKQorCisgICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKG1lc3NhZ2UpCisKK2RlZiBzcGxpdF9jb21tYW5kcyhwYXJhbXMpOgorICAgIHBhcmFtcyA9IHJlLnNwbGl0KCcnJ1sgXHRdKjtbIFx0XSooPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbXMuc3RyaXAoKSkKKyAgICAjIFJlbW92ZSBhbnkgZW1wdHkgaXRlbXMKKyAgICByZXR1cm4gW3ggZm9yIHggaW4gcGFyYW1zIGlmIHhdCisKK2RlZiBzcGxpdF9hcmdzKHBhcmFtcyk6CisgICAgcGFyYW1zID0gcmUuc3BsaXQoJycnWyBcdF0rKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW1zLnN0cmlwKCkpCisgICAgIyBSZW1vdmUgYW55IGVtcHR5IGl0ZW1zCisgICAgcmV0dXJuIFt4IGZvciB4IGluIHBhcmFtcyBpZiB4XQorCitkZWYgYnVpbGRfdXNlcmFkZF9wYXJzZXIoKToKKyAgICAjIFRoZSBmb2xsb3dpbmcgY29tZXMgZnJvbSAtLWhlbHAgb24gdXNlcmFkZCBmcm9tIHNoYWRvdworICAgIHBhcnNlciA9IG15QXJndW1lbnRQYXJzZXIocHJvZz0ndXNlcmFkZCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWIiLCAiLS1iYXNlLWRpciIsIG1ldGF2YXI9IkJBU0VfRElSIiwgaGVscD0iYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBob21lIGRpcmVjdG9yeSBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1jIiwgIi0tY29tbWVudCIsIG1ldGF2YXI9IkNPTU1FTlQiLCBoZWxwPSJHRUNPUyBmaWVsZCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1kIiwgIi0taG9tZS1kaXIiLCBtZXRhdmFyPSJIT01FX0RJUiIsIGhlbHA9ImhvbWUgZGlyZWN0b3J5IG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUQiLCAiLS1kZWZhdWx0cyIsIGhlbHA9InByaW50IG9yIGNoYW5nZSBkZWZhdWx0IHVzZXJhZGQgY29uZmlndXJhdGlvbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWUiLCAiLS1leHBpcmVkYXRlIiwgbWV0YXZhcj0iRVhQSVJFX0RBVEUiLCBoZWxwPSJleHBpcmF0aW9uIGRhdGUgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZiIsICItLWluYWN0aXZlIiwgbWV0YXZhcj0iSU5BQ1RJVkUiLCBoZWxwPSJwYXNzd29yZCBpbmFjdGl2aXR5IHBlcmlvZCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1nIiwgIi0tZ2lkIiwgbWV0YXZhcj0iR1JPVVAiLCBoZWxwPSJuYW1lIG9yIElEIG9mIHRoZSBwcmltYXJ5IGdyb3VwIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUciLCAiLS1ncm91cHMiLCBtZXRhdmFyPSJHUk9VUFMiLCBoZWxwPSJsaXN0IG9mIHN1cHBsZW1lbnRhcnkgZ3JvdXBzIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWsiLCAiLS1za2VsIiwgbWV0YXZhcj0iU0tFTF9ESVIiLCBoZWxwPSJ1c2UgdGhpcyBhbHRlcm5hdGl2ZSBza2VsZXRvbiBkaXJlY3RvcnkiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1LIiwgIi0ta2V5IiwgbWV0YXZhcj0iS0VZPVZBTFVFIiwgaGVscD0ib3ZlcnJpZGUgL2V0Yy9sb2dpbi5kZWZzIGRlZmF1bHRzIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbCIsICItLW5vLWxvZy1pbml0IiwgaGVscD0iZG8gbm90IGFkZCB0aGUgdXNlciB0byB0aGUgbGFzdGxvZyBhbmQgZmFpbGxvZyBkYXRhYmFzZXMiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1tIiwgIi0tY3JlYXRlLWhvbWUiLCBoZWxwPSJjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1UcnVlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1NIiwgIi0tbm8tY3JlYXRlLWhvbWUiLCBkZXN0PSJjcmVhdGVfaG9tZSIsIGhlbHA9ImRvIG5vdCBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1GYWxzZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItTiIsICItLW5vLXVzZXItZ3JvdXAiLCBkZXN0PSJ1c2VyX2dyb3VwIiwgaGVscD0iZG8gbm90IGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1GYWxzZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW5vbi11bmlxdWUiLCBoZWxwPSJhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGUgKG5vbi11bmlxdWUgVUlEKSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wYXNzd29yZCIsIG1ldGF2YXI9IlBBU1NXT1JEIiwgaGVscD0iZW5jcnlwdGVkIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVAiLCAiLS1jbGVhci1wYXNzd29yZCIsIG1ldGF2YXI9IkNMRUFSX1BBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVIiLCAiLS1yb290IiwgbWV0YXZhcj0iQ0hST09UX0RJUiIsIGhlbHA9ImRpcmVjdG9yeSB0byBjaHJvb3QgaW50byIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1zeXN0ZW0iLCBoZWxwPSJjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCAiLS1zaGVsbCIsIG1ldGF2YXI9IlNIRUxMIiwgaGVscD0ibG9naW4gc2hlbGwgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItdSIsICItLXVpZCIsIG1ldGF2YXI9IlVJRCIsIGhlbHA9InVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItVSIsICItLXVzZXItZ3JvdXAiLCBoZWxwPSJjcmVhdGUgYSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXIiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJMT0dJTiIsIGhlbHA9IkxvZ2luIG5hbWUgb2YgdGhlIG5ldyB1c2VyIikKKworICAgIHJldHVybiBwYXJzZXIKKworZGVmIGJ1aWxkX2dyb3VwYWRkX3BhcnNlcigpOgorICAgICMgVGhlIGZvbGxvd2luZyBjb21lcyBmcm9tIC0taGVscCBvbiBncm91cGFkZCBmcm9tIHNoYWRvdworICAgIHBhcnNlciA9IG15QXJndW1lbnRQYXJzZXIocHJvZz0nZ3JvdXBhZGQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0tZm9yY2UiLCBoZWxwPSJleGl0IHN1Y2Nlc3NmdWxseSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBleGlzdHMsIGFuZCBjYW5jZWwgLWcgaWYgdGhlIEdJRCBpcyBhbHJlYWR5IHVzZWQiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1nIiwgIi0tZ2lkIiwgbWV0YXZhcj0iR0lEIiwgaGVscD0idXNlIEdJRCBmb3IgdGhlIG5ldyBncm91cCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUsiLCAiLS1rZXkiLCBtZXRhdmFyPSJLRVk9VkFMVUUiLCBoZWxwPSJvdmVycmlkZSAvZXRjL2xvZ2luLmRlZnMgZGVmYXVsdHMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tbm9uLXVuaXF1ZSIsIGhlbHA9ImFsbG93IHRvIGNyZWF0ZSBncm91cHMgd2l0aCBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wYXNzd29yZCIsIG1ldGF2YXI9IlBBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUCIsICItLWNsZWFyLXBhc3N3b3JkIiwgbWV0YXZhcj0iQ0xFQVJfUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVIiLCAiLS1yb290IiwgbWV0YXZhcj0iQ0hST09UX0RJUiIsIGhlbHA9ImRpcmVjdG9yeSB0byBjaHJvb3QgaW50byIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1zeXN0ZW0iLCBoZWxwPSJjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiR1JPVVAiLCBoZWxwPSJHcm91cCBuYW1lIG9mIHRoZSBuZXcgZ3JvdXAiKQorCisgICAgcmV0dXJuIHBhcnNlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CmluZGV4IDMzMGE1ZmYuLjY0M2FiNzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKQEAgLTEyNiw2ICsxMjYsNDYgQEAKICAgICBpZiBhZGRmZWF0dXJlczoKICAgICAgICAgZC5hcHBlbmRWYXIodmFyLCAiICIgKyAiICIuam9pbihhZGRmZWF0dXJlcykpCiAKK2RlZiBhbGxfZGlzdHJvX2ZlYXR1cmVzKGQsIGZlYXR1cmVzLCB0cnVldmFsdWU9IjEiLCBmYWxzZXZhbHVlPSIiKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRydWV2YWx1ZSBpZiAqYWxsKiBnaXZlbiBmZWF0dXJlcyBhcmUgc2V0IGluIERJU1RST19GRUFUVVJFUywKKyAgICBlbHNlIGZhbHNldmFsdWUuIFRoZSBmZWF0dXJlcyBjYW4gYmUgZ2l2ZW4gYXMgc2luZ2xlIHN0cmluZyBvciBhbnl0aGluZworICAgIHRoYXQgY2FuIGJlIHR1cm5lZCBpbnRvIGEgc2V0LgorCisgICAgVGhpcyBpcyBhIHNob3J0ZXIsIG1vcmUgZmxleGlibGUgdmVyc2lvbiBvZgorICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKS4KKworICAgIFdpdGhvdXQgZXhwbGljaXQgdHJ1ZS9mYWxzZSB2YWx1ZXMgaXQgY2FuIGJlIHVzZWQgZGlyZWN0bHkgd2hlcmUKKyAgICBQeXRob24gZXhwZWN0cyBhIGJvb2xlYW46CisgICAgICAgaWYgb2UudXRpbHMuYWxsX2Rpc3Ryb19mZWF0dXJlcyhkLCAiZm9vIGJhciIpOgorICAgICAgICAgICBiYi5mYXRhbCgiZm9vIGFuZCBiYXIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBESVNUUk9fRkVBVFVSRVMiKQorCisgICAgV2l0aCBqdXN0IGEgdHJ1ZXZhbHVlLCBpdCBjYW4gYmUgdXNlZCB0byBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIG1lYW50IHRvIGJlCisgICAgdXNlZCBvbmx5IHdoZW4gcmVxdWVzdGVkIHZpYSBESVNUUk9fRkVBVFVSRVM6CisgICAgICAgcmVxdWlyZSAke0Agb2UudXRpbHMuYWxsX2Rpc3Ryb19mZWF0dXJlcyhkLCAiZm9vIGJhciIsICJmb28tYW5kLWJhci5pbmMiKQorICAgICIiIgorICAgIHJldHVybiBiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKKworZGVmIGFueV9kaXN0cm9fZmVhdHVyZXMoZCwgZmVhdHVyZXMsIHRydWV2YWx1ZT0iMSIsIGZhbHNldmFsdWU9IiIpOgorICAgICIiIgorICAgIFJldHVybnMgdHJ1ZXZhbHVlIGlmIGF0IGxlYXN0ICpvbmUqIG9mIHRoZSBnaXZlbiBmZWF0dXJlcyBpcyBzZXQgaW4gRElTVFJPX0ZFQVRVUkVTLAorICAgIGVsc2UgZmFsc2V2YWx1ZS4gVGhlIGZlYXR1cmVzIGNhbiBiZSBnaXZlbiBhcyBzaW5nbGUgc3RyaW5nIG9yIGFueXRoaW5nCisgICAgdGhhdCBjYW4gYmUgdHVybmVkIGludG8gYSBzZXQuCisKKyAgICBUaGlzIGlzIGEgc2hvcnRlciwgbW9yZSBmbGV4aWJsZSB2ZXJzaW9uIG9mCisgICAgYmIudXRpbHMuY29udGFpbnNfYW55KCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKS4KKworICAgIFdpdGhvdXQgZXhwbGljaXQgdHJ1ZS9mYWxzZSB2YWx1ZXMgaXQgY2FuIGJlIHVzZWQgZGlyZWN0bHkgd2hlcmUKKyAgICBQeXRob24gZXhwZWN0cyBhIGJvb2xlYW46CisgICAgICAgaWYgbm90IG9lLnV0aWxzLmFueV9kaXN0cm9fZmVhdHVyZXMoZCwgImZvbyBiYXIiKToKKyAgICAgICAgICAgYmIuZmF0YWwoImZvbywgYmFyIG9yIGJvdGggbXVzdCBiZSBzZXQgaW4gRElTVFJPX0ZFQVRVUkVTIikKKworICAgIFdpdGgganVzdCBhIHRydWV2YWx1ZSwgaXQgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgIHVzZWQgb25seSB3aGVuIHJlcXVlc3RlZCB2aWEgRElTVFJPX0ZFQVRVUkVTOgorICAgICAgIHJlcXVpcmUgJHtAIG9lLnV0aWxzLmFueV9kaXN0cm9fZmVhdHVyZXMoZCwgImZvbyBiYXIiLCAiZm9vLW9yLWJhci5pbmMiKQorCisgICAgIiIiCisgICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKIAogZGVmIHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgogICAgICIiIgpAQCAtMTg0LDI1ICsyMjQsMzAgQEAKICAgICBkZWYgaW5pdF93b3JrZXIoKToKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBzaWduYWwuU0lHX0lHTikKIAorICAgIGZhaWxzID0gW10KKworICAgIGRlZiBmYWlsdXJlcyhyZXMpOgorICAgICAgICBmYWlscy5hcHBlbmQocmVzKQorCiAgICAgbnByb2MgPSBtaW4obXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpLCBsZW4oY29tbWFuZHMpKQogICAgIHBvb2wgPSBiYi51dGlscy5tdWx0aXByb2Nlc3Npbmdwb29sKG5wcm9jLCBpbml0X3dvcmtlcikKLSAgICBpbWFwID0gcG9vbC5pbWFwKGZ1bmN0aW9uLCBjb21tYW5kcykKIAogICAgIHRyeToKLSAgICAgICAgcmVzID0gbGlzdChpbWFwKQorICAgICAgICBtYXByZXN1bHQgPSBwb29sLm1hcF9hc3luYyhmdW5jdGlvbiwgY29tbWFuZHMsIGVycm9yX2NhbGxiYWNrPWZhaWx1cmVzKQorCiAgICAgICAgIHBvb2wuY2xvc2UoKQogICAgICAgICBwb29sLmpvaW4oKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHJlc3VsdCBpbiByZXM6Ci0gICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0cwotCisgICAgICAgIHJlc3VsdHMgPSBtYXByZXN1bHQuZ2V0KCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgIHBvb2wudGVybWluYXRlKCkKICAgICAgICAgcG9vbC5qb2luKCkKICAgICAgICAgcmFpc2UKIAorICAgIGlmIGZhaWxzOgorICAgICAgICByYWlzZSBmYWlsc1swXQorCisgICAgcmV0dXJuIHJlc3VsdHMKKwogZGVmIHNxdWFzaHNwYWNlcyhzdHJpbmcpOgogICAgIGltcG9ydCByZQogICAgIHJldHVybiByZS5zdWIoIlxzKyIsICIgIiwgc3RyaW5nKS5zdHJpcCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CmluZGV4IDZlNjJiMjcuLjdiMmI0YWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CkBAIC00ODUsNiArNDg1LDcgQEAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN5bmMoKToKICAgICAgICAgIiIiU3luYyBhbmQgZHJvcCBrZXJuZWwgY2FjaGVzIiIiCisgICAgICAgIHJ1bkNtZDIoJ2JpdGJha2UgLW0nLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGxvZy5kZWJ1ZygiU3luY2luZyBhbmQgZHJvcHBpbmcga2VybmVsIGNhY2hlcyIiIikKICAgICAgICAgS2VybmVsRHJvcENhY2hlcy5kcm9wKCkKICAgICAgICAgb3Muc3luYygpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CmluZGV4IGE5ZTRhNWIuLmExOTA4OWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CkBAIC0xMjEsNSArMTIxLDcgQEAKICAgICAgICAgc2VsZi5zeW5jKCkKICAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoW2luc3RhbGxlciwgJy15JywgJy1kJywgZGVwbG95X2Rpcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBsb3knLCAnZVNESyBkZXBsb3knKQorICAgICAgICAjbWFrZSBzdXJlIGJpdGJha2UgaXMgdW5sb2FkZWQKKyAgICAgICAgc2VsZi5zeW5jKCkKICAgICAgICAgc2VsZi5tZWFzdXJlX2Rpc2tfdXNhZ2UoZGVwbG95X2RpciwgJ2RlcGxveV9kaXInLCAnZGVwbG95IGRpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGFyZW50X3NpemU9VHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKaW5kZXggMDc0MThmYy4uYTI5MTJmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCgxMCkKICAgICAgICAgICAgIHNlbGYucG93ZXJfY3RsKCJjeWNsZSIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IGNvbm4ucnVuKCJyZWJvb3QiKQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBjb25uLnJ1bigic3luYzsgeyBzbGVlcCAxOyByZWJvb3Q7IH0gPiAvZGV2L251bGwgJiIpCiAgICAgICAgICAgICBpZiBzdGF0dXMgIT0gMDoKICAgICAgICAgICAgICAgICBiYi5lcnJvcigiRmFpbGVkIHJlYm9vdGluZyB0YXJnZXQgYW5kIG5vIHBvd2VyIGNvbnRyb2wgY29tbWFuZCBkZWZpbmVkLiBZb3UgbmVlZCB0byBtYW51YWxseSByZXNldCB0aGUgZGV2aWNlLlxuJXMiICUgb3V0cHV0KQogCkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICBkZWYgX2RlcGxveShzZWxmKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lKToKKyAgICBkZWYgc3RhcnQoc2VsZiwgZXh0cmFfYm9vdHBhcmFtcz1Ob25lKToKICAgICAgICAgYmIucGxhaW4oIiVzIC0gYm9vdCB0ZXN0IGltYWdlIG9uIHRhcmdldCIgJSBzZWxmLnBuKQogICAgICAgICBzZWxmLl9zdGFydCgpCiAgICAgICAgICMgc2V0IHRoZSBzc2ggb2JqZWN0IGZvciB0aGUgdGFyZ2V0L3Rlc3QgaW1hZ2UKQEAgLTE1Niw3ICsxNTYsNyBAQAogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGJiLnBsYWluKCIlcyAtIHJlYm9vdC9wb3dlcmN5Y2xlIHRhcmdldCIgJSBzZWxmLnBuKQotICAgICAgICBzZWxmLnBvd2VyX2N5Y2xlKHNlbGYuY29ubmVjdGlvbikKKyAgICAgICAgc2VsZi5wb3dlcl9jeWNsZShzZWxmLm1hc3RlcikKIAogCiBjbGFzcyBTeXN0ZW1kYm9vdFRhcmdldChNYXN0ZXJJbWFnZUhhcmR3YXJlVGFyZ2V0KToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9SRUFETUUKaW5kZXggMGM4NTlmZC4uZDRmY2RhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9SRUFETUUKQEAgLTEsMzggKzEsNzYgQEAKLT0gT0VRQSBGcmFtZXdvcmsgPQorPSBPRVFBICh2MikgRnJhbWV3b3JrID0KIAogPT0gSW50cm9kdWN0aW9uID09CiAKLVRoaXMgaXMgdGhlIG5ldyBPRVFBIGZyYW1ld29yayB0aGUgYmFzZSBjbGFzZXMgb2YgdGhlIGZyYW1ld29yawotYXJlIGluIHRoaXMgbW9kdWxlIG9lcWEvY29yZSB0aGUgc3Vic2VxdWVudCBjb21wb25lbnRzIG5lZWRzIHRvCi1leHRlbmQgdGhpcyBjbGFzc2VzLgorVGhpcyBpcyB2ZXJzaW9uIDIgb2YgdGhlIE9FUUEgZnJhbWV3b3JrLiBCYXNlIGNsYXNlcyBhcmUgbG9jYXRlZCBpbiB0aGUKKydvZXFhL2NvcmUnIGRpcmVjdG9yeSBhbmQgc3Vic2VxdWVudCBjb21wb25lbnRzIG11c3QgZXh0ZW5kIGZyb20gdGhlc2UuCiAKLUEgbmV3L3VuaXF1ZSBydW5uZXIgd2FzIGNyZWF0ZWQgY2FsbGVkIG9lLXRlc3QgYW5kIGlzIHVuZGVyIHNjcmlwdHMvCi1vZS10ZXN0LCB0aGlzIG5ldyBydW5uZXIgc2NhbnMgb3ZlciBvZXFhIG1vZHVsZSBzZWFyY2hpbmcgZm9yIHRlc3QKLWNvbXBvbmVudHMgdGhhdCBzdXBwb3J0cyBPRVRlc3RDb250ZXh0RXhlY3V0b3IgaW1wbGVtZW50ZWQgaW4gY29udGV4dAotbW9kdWxlIChpLmUuIG9lcWEvY29yZS9jb250ZXh0LnB5KS4KK1RoZSBtYWluIGRlc2lnbiBjb25zaWRlcmF0aW9uIHdhcyB0byBpbXBsZW1lbnQgdGhlIG5lZWRlZCBmdW5jdGlvbmFsaXR5IG9uCit0b3Agb2YgdGhlIFB5dGhvbiB1bml0dGVzdCBmcmFtZXdvcmsuIFRvIGFjaGlldmUgdGhpcyBnb2FsLCB0aGUgZm9sbG93aW5nCittb2R1bGVzIGFyZSB1c2VkOgogCi1Gb3IgZXhlY3V0ZSBhbiBleGFtcGxlOgorICAgICogb2VxYS9jb3JlL3J1bm5lci5weTogUHJvdmlkZXMgT0VUZXN0UmVzdWx0IGFuZCBPRVRlc3RSdW5uZXIgYmFzZQorICAgICAgY2xhc3NlcyBleHRlbmRpbmcgdGhlIHVuaXR0ZXN0IGNsYXNzLiBUaGVzZSBjbGFzc2VzIHN1cHBvcnQgZXhwb3J0aW5nCisgICAgICByZXN1bHRzIHRvIGRpZmZlcmVudCBmb3JtYXRzOyBjdXJyZW50bHkgUkFXIGFuZCBYTUwgc3VwcG9ydCBleGlzdC4KIAotJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKLSQgb2UtdGVzdCBjb3JlCisgICAgKiBvZXFhL2NvcmUvbG9hZGVyLnB5OiBQcm92aWRlcyBPRVRlc3RMb2FkZXIgZXh0ZW5kaW5nIHRoZSB1bml0dGVzdCBjbGFzcy4KKyAgICAgIEl0IGFsc28gZmVhdHVyZXMgYSB1bmlmaWVkIGltcGxlbWVudGF0aW9uIG9mIGRlY29yYXRvciBzdXBwb3J0IGFuZAorICAgICAgZmlsdGVyaW5nIHRlc3QgY2FzZXMuCiAKLUZvciBsaXN0IHN1cHBvcnRlZCBjb21wb25lbnRzOgorICAgICogb2VxYS9jb3JlL2Nhc2UucHk6IFByb3ZpZGVzIE9FVGVzdENhc2UgYmFzZSBjbGFzcyBleHRlbmRpbmcKKyAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFRlc3QgZGF0YSAodGQpLCBUZXN0IGNvbnRleHQKKyAgICAgIGFuZCBMb2dnZXIgZnVuY3Rpb25hbGl0eS4KIAotJCBvZS10ZXN0IC1oCisgICAgKiBvZXFhL2NvcmUvZGVjb3JhdG9yOiBQcm92aWRlcyBPRVRlc3REZWNvcmF0b3IsIGEgbmV3IGNsYXNzIHRvIGltcGxlbWVudAorICAgICAgZGVjb3JhdG9ycyBmb3IgVGVzdCBjYXNlcy4KIAotPT0gQ3JlYXRlIG5ldyBUZXN0IGNvbXBvbmVudCA9PQorICAgICogb2VxYS9jb3JlL2NvbnRleHQ6IFByb3ZpZGVzIE9FVGVzdENvbnRleHQsIGEgaGlnaC1sZXZlbCBBUEkgZm9yCisgICAgICBsb2FkVGVzdHMgYW5kIHJ1blRlc3RzIG9mIGNlcnRhaW4gVGVzdCBjb21wb25lbnQgYW5kCisgICAgICBPRVRlc3RDb250ZXh0RXhlY3V0b3IgYSBiYXNlIGNsYXNzIHRvIGVuYWJsZSBvZS10ZXN0IHRvIGRpc2NvdmVyL3VzZQorICAgICAgdGhlIFRlc3QgY29tcG9uZW50LgogCi1Vc2FsbHkgZm9yIGFkZCBhIG5ldyBUZXN0IGNvbXBvbmVudCB0aGUgZGV2ZWxvcGVyIG5lZWRzIHRvIGV4dGVuZAotT0VUZXN0Q29udGV4dC9PRVRlc3RDb250ZXh0RXhlY3V0b3IgaW4gY29udGV4dC5weSBhbmQgT0VUZXN0Q2FzZSBpbgotY2FzZS5weS4KK0Fsc28sIGEgbmV3ICdvZS10ZXN0JyBydW5uZXIgaXMgbG9jYXRlZCB1bmRlciAnc2NyaXB0cycsIGFsbG93aW5nIHNjYW5zIGZvciBjb21wb25lbnRzCit0aGF0IHN1cHBvcnRzIE9FVGVzdENvbnRleHRFeGVjdXRvciAoc2VlIGJlbG93KS4KIAotPT0gSG93IHRvIHJ1biB0aGUgdGVzdGluZyBvZiB0aGUgT0VRQSBmcmFtZXdvcmsgPT0KKz09IFRlcm1pbm9sb2d5ID09CisKKyAgICAqIFRlc3QgY29tcG9uZW50OiBUaGUgYXJlYSBvZiB0ZXN0aW5nIGluIHRoZSBQcm9qZWN0LCBmb3IgZXhhbXBsZTogcnVudGltZSwgU0RLLCBlU0RLLCBzZWxmdGVzdC4KKworICAgICogVGVzdCBkYXRhOiBEYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgVGVzdCBjb21wb25lbnQuIEN1cnJlbnRseSB3ZSB1c2UgYml0YmFrZSBkYXRhc3RvcmUgYXMKKyAgICAgIGEgVGVzdCBkYXRhIGlucHV0LgorCisgICAgKiBUZXN0IGNvbnRleHQ6IEEgY29udGV4dCBvZiB3aGF0IHRlc3RzIG5lZWRzIHRvIGJlIHJ1biBhbmQgaG93IHRvIGRvIGl0OyB0aGlzIGFkZGl0aW9uYWxseQorICAgICAgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBUZXN0IGRhdGEgYW5kIGNvdWxkIGhhdmUgY3VzdG9tIG1ldGhvZHMgYW5kL29yIGF0dHJzLgorCis9PSBvZS10ZXN0ID09CisKK1RoZSBuZXcgdG9vbCwgb2UtdGVzdCwgaGFzIHRoZSBhYmlsaXR5IHRvIHNjYW4gdGhlIGNvZGUgYmFzZSBmb3IgdGVzdCBjb21wb25lbnRzIGFuZCBwcm92aWRlCithIHVuaWZpZWQgd2F5IHRvIHJ1biB0ZXN0IGNhc2VzLiBJbnRlcm5hbGx5IGl0IHNjYW5zIGZvbGRlcnMgaW5zaWRlIG9lcWEgbW9kdWxlIGluIG9yZGVyIHRvIGZpbmQKK3NwZWNpZmljIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgYSB0ZXN0IGNvbXBvbmVudC4KKworPT0gVXNhZ2UgPT0KKworRXhlY3V0aW5nIHRoZSBleGFtcGxlIHRlc3QgY29tcG9uZW50CisKKyAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICQgb2UtdGVzdCBjb3JlCisKK0dldHRpbmcgaGVscAorCisgICAgJCBvZS10ZXN0IC1oCisKKz09IENyZWF0aW5nIG5ldyBUZXN0IENvbXBvbmVudCA9PQorCitBZGRpbmcgYSBuZXcgdGVzdCBjb21wb25lbnQgdGhlIGRldmVsb3BlciBuZWVkcyB0byBleHRlbmQgT0VUZXN0Q29udGV4dC9PRVRlc3RDb250ZXh0RXhlY3V0b3IKKyhmcm9tIGNvbnRleHQucHkpIGFuZCBPRVRlc3RDYXNlIChmcm9tIGNhc2UucHkpCisKKz09IFNlbGZ0ZXN0aW5nIHRoZSBmcmFtZXdvcmsgPT0KIAogUnVuIGFsbCB0ZXN0czoKIAotJCBQQVRIPSRQQVRIOi4uLy4uLyBweXRob24zIC1tIHVuaXR0ZXN0IGRpc2NvdmVyIC1zIHRlc3RzCisgICAgJCBQQVRIPSRQQVRIOi4uLy4uLyBweXRob24zIC1tIHVuaXR0ZXN0IGRpc2NvdmVyIC1zIHRlc3RzCiAKIFJ1biBzb21lIHRlc3Q6CiAKLSQgY2QgdGVzdHMvCi0kIC4vdGVzdF9kYXRhLnB5CisgICAgJCBjZCB0ZXN0cy8KKyAgICAkIC4vdGVzdF9kYXRhLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2Nhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2Nhc2UucHkKaW5kZXggZDJkYmYyMC4uOTE3YTJhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY2FzZS5weQpAQCAtMjMsNyArMjMsNyBAQAogCiAgICAgIyB0ZF92YXJzIGhhcyB0aGUgdmFyaWFibGVzIG5lZWRlZCBieSBhIHRlc3QgY2xhc3MKICAgICAjIG9yIHRlc3QgY2FzZSBpbnN0YW5jZSwgaWYgc29tZSB2YXIgaXNuJ3QgaW50byB0ZCBhCi0gICAgIyBPRU1pc3NpbmdWYXJpYWJsZSBleGNlcHRpb24gaXMgcmFpc2VkCisgICAgIyBPRVFBTWlzc2luZ1ZhcmlhYmxlIGV4Y2VwdGlvbiBpcyByYWlzZWQKICAgICB0ZF92YXJzID0gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKaW5kZXggNDQ3Njc1MC4uYWNkNTQ3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQpAQCAtNywxNSArNywxNCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCByZQogCiBmcm9tIG9lcWEuY29yZS5sb2FkZXIgaW1wb3J0IE9FVGVzdExvYWRlcgotZnJvbSBvZXFhLmNvcmUucnVubmVyIGltcG9ydCBPRVRlc3RSdW5uZXIsIE9FU3RyZWFtTG9nZ2VyLCB4bWxFbmFibGVkCitmcm9tIG9lcWEuY29yZS5ydW5uZXIgaW1wb3J0IE9FVGVzdFJ1bm5lcgorZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBTWlzc2luZ01hbmlmZXN0LCBPRVFBVGVzdE5vdEZvdW5kCiAKIGNsYXNzIE9FVGVzdENvbnRleHQob2JqZWN0KToKICAgICBsb2FkZXJDbGFzcyA9IE9FVGVzdExvYWRlcgogICAgIHJ1bm5lckNsYXNzID0gT0VUZXN0UnVubmVyCi0gICAgc3RyZWFtTG9nZ2VyQ2xhc3MgPSBPRVN0cmVhbUxvZ2dlcgogCiAgICAgZmlsZXNfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoCiAgICAgICAgIG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAiLi4vZmlsZXMiKSkKQEAgLTMyLDcgKzMxLDcgQEAKIAogICAgIGRlZiBfcmVhZF9tb2R1bGVzX2Zyb21fbWFuaWZlc3Qoc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHJhaXNlIE9FUUFNaXNzaW5nTWFuaWZlc3QoIk1hbmlmZXN0IGRvZXMgbm90IGV4aXN0IG9uICVzIiAlIG1hbmlmZXN0KQogCiAgICAgICAgIG1vZHVsZXMgPSBbXQogICAgICAgICBmb3IgbGluZSBpbiBvcGVuKG1hbmlmZXN0KS5yZWFkbGluZXMoKToKQEAgLTQyLDYgKzQxLDE0IEBACiAKICAgICAgICAgcmV0dXJuIG1vZHVsZXMKIAorICAgIGRlZiBza2lwVGVzdHMoc2VsZiwgc2tpcHMpOgorICAgICAgICBpZiBub3Qgc2tpcHM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5zdWl0ZXM6CisgICAgICAgICAgICBmb3Igc2tpcCBpbiBza2lwczoKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LmlkKCkuc3RhcnRzd2l0aChza2lwKToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih0ZXN0LCAnc2V0VXAnLCBsYW1iZGE6IHRlc3Quc2tpcFRlc3QoJ1NraXAgYnkgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAiJXMiJyAlIHNraXApKQorCiAgICAgZGVmIGxvYWRUZXN0cyhzZWxmLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXM9W10sIHRlc3RzPVtdLAogICAgICAgICAgICAgbW9kdWxlc19tYW5pZmVzdD0iIiwgbW9kdWxlc19yZXF1aXJlZD1bXSwgZmlsdGVycz17fSk6CiAgICAgICAgIGlmIG1vZHVsZXNfbWFuaWZlc3Q6CkBAIC01MSw5ICs1OCwxMSBAQAogICAgICAgICAgICAgICAgIG1vZHVsZXNfcmVxdWlyZWQsIGZpbHRlcnMpCiAgICAgICAgIHNlbGYuc3VpdGVzID0gc2VsZi5sb2FkZXIuZGlzY292ZXIoKQogCi0gICAgZGVmIHJ1blRlc3RzKHNlbGYpOgotICAgICAgICBzdHJlYW1Mb2dnZXIgPSBzZWxmLnN0cmVhbUxvZ2dlckNsYXNzKHNlbGYubG9nZ2VyKQotICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgc3RyZWFtPXN0cmVhbUxvZ2dlciwgdmVyYm9zaXR5PTIpCisgICAgZGVmIHJ1blRlc3RzKHNlbGYsIHNraXBzPVtdKToKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBzZWxmLnJ1bm5lckNsYXNzKHNlbGYsIGRlc2NyaXB0aW9ucz1GYWxzZSwgdmVyYm9zaXR5PTIpCisKKyAgICAgICAgIyBEaW5hbWljYWxseSBza2lwIHRob3NlIHRlc3RzIHNwZWNpZmllZCB0aG91Z2ggYXJndW1lbnRzCisgICAgICAgIHNlbGYuc2tpcFRlc3RzKHNraXBzKQogCiAgICAgICAgIHNlbGYuX3J1bl9zdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKHNlbGYuc3VpdGVzKQpAQCAtNjEsOTQgKzcwLDEzIEBACiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgZGVmIGxvZ1N1bW1hcnkoc2VsZiwgcmVzdWx0LCBjb21wb25lbnQsIGNvbnRleHRfbXNnPScnKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU1VNTUFSWToiKQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCIlcyAoJXMpIC0gUmFuICVkIHRlc3QlcyBpbiAlLjNmcyIgJSAoY29tcG9uZW50LAotICAgICAgICAgICAgY29udGV4dF9tc2csIHJlc3VsdC50ZXN0c1J1biwgcmVzdWx0LnRlc3RzUnVuICE9IDEgYW5kICJzIiBvciAiIiwKLSAgICAgICAgICAgIChzZWxmLl9ydW5fZW5kX3RpbWUgLSBzZWxmLl9ydW5fc3RhcnRfdGltZSkpKQotCi0gICAgICAgIGlmIHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6Ci0gICAgICAgICAgICBtc2cgPSAiJXMgLSBPSyAtIEFsbCByZXF1aXJlZCB0ZXN0cyBwYXNzZWQiICUgY29tcG9uZW50Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2cgPSAiJXMgLSBGQUlMIC0gUmVxdWlyZWQgdGVzdHMgZmFpbGVkIiAlIGNvbXBvbmVudAotICAgICAgICBza2lwcGVkID0gbGVuKHNlbGYuX3Jlc3VsdHNbJ3NraXBwZWQnXSkKLSAgICAgICAgaWYgc2tpcHBlZDogCi0gICAgICAgICAgICBtc2cgKz0gIiAoc2tpcHBlZD0lZCkiICUgc2tpcHBlZAotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKG1zZykKLQotICAgIGRlZiBfZ2V0RGV0YWlsc05vdFBhc3NlZChzZWxmLCBjYXNlLCB0eXBlLCBkZXNjKToKLSAgICAgICAgZm91bmQgPSBGYWxzZQotCi0gICAgICAgIGZvciAoc2Nhc2UsIG1zZykgaW4gc2VsZi5fcmVzdWx0c1t0eXBlXToKLSAgICAgICAgICAgICMgWFhYOiBXaGVuIFhNTCByZXBvcnRpbmcgaXMgZW5hYmxlZCBzY2FzZSBpcwotICAgICAgICAgICAgIyB4bWxydW5uZXIucmVzdWx0Ll9UZXN0SW5mbyBpbnN0YW5jZSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAjIHN0cmluZy4KLSAgICAgICAgICAgIGlmIHhtbEVuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgaWYgY2FzZS5pZCgpID09IHNjYXNlLnRlc3RfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNjYXNlX3N0ciA9IHNjYXNlLnRlc3RfaWQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgY2FzZSA9PSBzY2FzZToKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2Nhc2Vfc3RyID0gc3RyKHNjYXNlKQotCi0gICAgICAgICAgICAjIFdoZW4gZmFpbHMgYXQgbW9kdWxlIG9yIGNsYXNzIGxldmVsIHRoZSBjbGFzcyBuYW1lIGlzIHBhc3NlZCBhcyBzdHJpbmcKLSAgICAgICAgICAgICMgc28gZmlndXJlIG91dCB0byBzZWUgaWYgbWF0Y2gKLSAgICAgICAgICAgIG0gPSByZS5zZWFyY2goIl5zZXRVcE1vZHVsZSBcKCg/UDxtb2R1bGVfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIGlmIGNhc2UuX19jbGFzc19fLl9fbW9kdWxlX18gPT0gbS5ncm91cCgnbW9kdWxlX25hbWUnKToKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIG0gPSByZS5zZWFyY2goIl5zZXRVcENsYXNzIFwoKD9QPGNsYXNzX25hbWU+LiopXCkkIiwgc2Nhc2Vfc3RyKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBjbGFzc19uYW1lID0gIiVzLiVzIiAlIChjYXNlLl9fY2xhc3NfXy5fX21vZHVsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZS5fX2NsYXNzX18uX19uYW1lX18pCi0KLSAgICAgICAgICAgICAgICBpZiBjbGFzc19uYW1lID09IG0uZ3JvdXAoJ2NsYXNzX25hbWUnKToKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgZm91bmQ6Ci0gICAgICAgICAgICByZXR1cm4gKGZvdW5kLCBtc2cpCi0KLSAgICAgICAgcmV0dXJuIChmb3VuZCwgTm9uZSkKLQotICAgIGRlZiBsb2dEZXRhaWxzKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSRVNVTFRTOiIpCi0gICAgICAgIGZvciBjYXNlX25hbWUgaW4gc2VsZi5fcmVnaXN0cnlbJ2Nhc2VzJ106Ci0gICAgICAgICAgICBjYXNlID0gc2VsZi5fcmVnaXN0cnlbJ2Nhc2VzJ11bY2FzZV9uYW1lXQotCi0gICAgICAgICAgICByZXN1bHRfdHlwZXMgPSBbJ2ZhaWx1cmVzJywgJ2Vycm9ycycsICdza2lwcGVkJywgJ2V4cGVjdGVkRmFpbHVyZXMnXQotICAgICAgICAgICAgcmVzdWx0X2Rlc2MgPSBbJ0ZBSUxFRCcsICdFUlJPUicsICdTS0lQUEVEJywgJ0VYUEVDVEVERkFJTCddCi0KLSAgICAgICAgICAgIGZhaWwgPSBGYWxzZQotICAgICAgICAgICAgZGVzYyA9IE5vbmUKLSAgICAgICAgICAgIGZvciBpZHgsIG5hbWUgaW4gZW51bWVyYXRlKHJlc3VsdF90eXBlcyk6Ci0gICAgICAgICAgICAgICAgKGZhaWwsIG1zZykgPSBzZWxmLl9nZXREZXRhaWxzTm90UGFzc2VkKGNhc2UsIHJlc3VsdF90eXBlc1tpZHhdLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2Rlc2NbaWR4XSkKLSAgICAgICAgICAgICAgICBpZiBmYWlsOgotICAgICAgICAgICAgICAgICAgICBkZXNjID0gcmVzdWx0X2Rlc2NbaWR4XQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICBvZWlkID0gLTEKLSAgICAgICAgICAgIGZvciBkIGluIGNhc2UuZGVjb3JhdG9yczoKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGQsICdvZWlkJyk6Ci0gICAgICAgICAgICAgICAgICAgIG9laWQgPSBkLm9laWQKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgZmFpbDoKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSRVNVTFRTIC0gJXMgLSBUZXN0Y2FzZSAlczogJXMiICUgKGNhc2UuaWQoKSwKLSAgICAgICAgICAgICAgICAgICAgb2VpZCwgZGVzYykpCi0gICAgICAgICAgICAgICAgaWYgbXNnOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKG1zZykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzIiAlIChjYXNlLmlkKCksCi0gICAgICAgICAgICAgICAgICAgIG9laWQsICdQQVNTRUQnKSkKKyAgICBkZWYgbGlzdFRlc3RzKHNlbGYsIGRpc3BsYXlfdHlwZSk6CisgICAgICAgIHNlbGYucnVubmVyID0gc2VsZi5ydW5uZXJDbGFzcyhzZWxmLCB2ZXJib3NpdHk9MikKKyAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmxpc3RfdGVzdHMoc2VsZi5zdWl0ZXMsIGRpc3BsYXlfdHlwZSkKIAogY2xhc3MgT0VUZXN0Q29udGV4dEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgX2NvbnRleHRfY2xhc3MgPSBPRVRlc3RDb250ZXh0CisgICAgX3NjcmlwdF9leGVjdXRvciA9ICdvZS10ZXN0JwogCiAgICAgbmFtZSA9ICdjb3JlJwogICAgIGhlbHAgPSAnY29yZSB0ZXN0IGNvbXBvbmVudCBleGFtcGxlJwpAQCAtMTY4LDkgKzk2LDE0IEBACiAgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQtbG9nJywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfb3V0cHV0X2xvZywKICAgICAgICAgICAgICAgICBoZWxwPSJyZXN1bHRzIG91dHB1dCBsb2csIGRlZmF1bHQ6ICVzIiAlIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nKQotICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy0tcnVuLXRlc3RzJywgYWN0aW9uPSdzdG9yZScsCisKKyAgICAgICAgZ3JvdXAgPSBzZWxmLnBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJ1bi10ZXN0cycsIGFjdGlvbj0nc3RvcmUnLCBuYXJncz0nKycsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfdGVzdHMsCi0gICAgICAgICAgICAgICAgaGVscD0idGVzdHMgdG8gcnVuIGluIDxtb2R1bGU+Wy48Y2xhc3M+Wy48bmFtZT5dXSBmb3JtYXQuIEp1c3Qgd29ya3MgZm9yIG1vZHVsZXMgbm93IikKKyAgICAgICAgICAgICAgICBoZWxwPSJ0ZXN0cyB0byBydW4gaW4gPG1vZHVsZT5bLjxjbGFzcz5bLjxuYW1lPl1dIikKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtdGVzdHMnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICBjaG9pY2VzPSgnbW9kdWxlJywgJ2NsYXNzJywgJ25hbWUnKSwKKyAgICAgICAgICAgICAgICBoZWxwPSJsaXN0cyBhdmFpbGFibGUgdGVzdHMiKQogCiAgICAgICAgIGlmIHNlbGYuZGVmYXVsdF90ZXN0X2RhdGE6CiAgICAgICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1kYXRhLWZpbGUnLCBhY3Rpb249J3N0b3JlJywKQEAgLTIwNiw3ICsxMzksOCBAQAogICAgICAgICBzZWxmLnRjX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J10gPSB7fQogICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddID0ge30KLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddID0ge30KKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xpc3QnXSA9IHt9CisgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXSAgPSB7fQogCiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2xvZ2dlciddID0gc2VsZi5fc2V0dXBfbG9nZ2VyKGxvZ2dlciwgYXJncykKICAgICAgICAgaWYgYXJncy50ZXN0X2RhdGFfZmlsZToKQEAgLTIxNSwyMiArMTQ5LDM2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWyd0ZCddID0ge30KIAotCiAgICAgICAgIGlmIGFyZ3MucnVuX3Rlc3RzOgotICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXVsnbW9kdWxlcyddID0gYXJncy5ydW5fdGVzdHMuc3BsaXQoKQorICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXVsnbW9kdWxlcyddID0gYXJncy5ydW5fdGVzdHMKKyAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ21vZHVsZXNfcmVxdWlyZWQnXSA9IGFyZ3MucnVuX3Rlc3RzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWydtb2R1bGVzJ10gPSBOb25lCisgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWydtb2R1bGVzJ10gPSBbXQorCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnc2tpcHMnXSA9IFtdCiAKICAgICAgICAgc2VsZi5tb2R1bGVfcGF0aHMgPSBhcmdzLkNBU0VTX1BBVEhTCiAKKyAgICBkZWYgX3ByZV9ydW4oc2VsZik6CisgICAgICAgIHBhc3MKKwogICAgIGRlZiBydW4oc2VsZiwgbG9nZ2VyLCBhcmdzKToKICAgICAgICAgc2VsZi5fcHJvY2Vzc19hcmdzKGxvZ2dlciwgYXJncykKIAogICAgICAgICBzZWxmLnRjID0gc2VsZi5fY29udGV4dF9jbGFzcygqKnNlbGYudGNfa3dhcmdzWydpbml0J10pCi0gICAgICAgIHNlbGYudGMubG9hZFRlc3RzKHNlbGYubW9kdWxlX3BhdGhzLCAqKnNlbGYudGNfa3dhcmdzWydsb2FkJ10pCi0gICAgICAgIHJjID0gc2VsZi50Yy5ydW5UZXN0cygqKnNlbGYudGNfa3dhcmdzWydydW4nXSkKLSAgICAgICAgc2VsZi50Yy5sb2dTdW1tYXJ5KHJjLCBzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYudGMubG9nRGV0YWlscygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGMubG9hZFRlc3RzKHNlbGYubW9kdWxlX3BhdGhzLCAqKnNlbGYudGNfa3dhcmdzWydsb2FkJ10pCisgICAgICAgIGV4Y2VwdCBPRVFBVGVzdE5vdEZvdW5kIGFzIGV4OgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGV4KQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBhcmdzLmxpc3RfdGVzdHM6CisgICAgICAgICAgICByYyA9IHNlbGYudGMubGlzdFRlc3RzKGFyZ3MubGlzdF90ZXN0cywgKipzZWxmLnRjX2t3YXJnc1snbGlzdCddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlX3J1bigpCisgICAgICAgICAgICByYyA9IHNlbGYudGMucnVuVGVzdHMoKipzZWxmLnRjX2t3YXJnc1sncnVuJ10pCisgICAgICAgICAgICByYy5sb2dEZXRhaWxzKCkKKyAgICAgICAgICAgIHJjLmxvZ1N1bW1hcnkoc2VsZi5uYW1lKQogCiAgICAgICAgIG91dHB1dF9saW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShhcmdzLm91dHB1dF9sb2cpLAogICAgICAgICAgICAgICAgICIlcy1yZXN1bHRzLmxvZyIgJSBzZWxmLm5hbWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGVwZW5kcy5weQppbmRleCAxOTU3MTFjLi5iYWEwNDM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKQEAgLTMsNiArMyw3IEBACiAKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFNraXBUZXN0CiAKK2Zyb20gb2VxYS5jb3JlLnRocmVhZGVkIGltcG9ydCBPRVRlc3RSdW5uZXJUaHJlYWRlZAogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBRGVwZW5kZW5jeQogCiBmcm9tIC4gaW1wb3J0IE9FVGVzdERpc2NvdmVyLCByZWdpc3RlckRlY29yYXRvcgpAQCAtNjMsNyArNjQsMTIgQEAKICAgICByZXR1cm4gW2Nhc2VzW2Nhc2VfaWRdIGZvciBjYXNlX2lkIGluIGNhc2VzX29yZGVyZWRdCiAKIGRlZiBfc2tpcFRlc3REZXBlbmRlbmN5KGNhc2UsIGRlcGVuZHMpOgotICAgIHJlc3VsdHMgPSBjYXNlLnRjLl9yZXN1bHRzCisgICAgaWYgaXNpbnN0YW5jZShjYXNlLnRjLnJ1bm5lciwgT0VUZXN0UnVubmVyVGhyZWFkZWQpOgorICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgIHJlc3VsdHMgPSBjYXNlLnRjLl9yZXN1bHRzW3RocmVhZGluZy5nZXRfaWRlbnQoKV0KKyAgICBlbHNlOgorICAgICAgICByZXN1bHRzID0gY2FzZS50Yy5fcmVzdWx0cworCiAgICAgc2tpcFJlYXNvbnMgPSBbJ2Vycm9ycycsICdmYWlsdXJlcycsICdza2lwcGVkJ10KIAogICAgIGZvciByZWFzb24gaW4gc2tpcFJlYXNvbnM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRpbWVvdXQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRpbWVvdXQucHkKaW5kZXggYTI0NzU4My4uZjg1ZTdkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3Ivb2V0aW1lb3V0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGltZW91dC5weQpAQCAtMSw4ICsxLDEyIEBACiAjIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKIAotaW1wb3J0IHNpZ25hbAogZnJvbSAuIGltcG9ydCBPRVRlc3REZWNvcmF0b3IsIHJlZ2lzdGVyRGVjb3JhdG9yCisKK2ltcG9ydCBzaWduYWwKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaW1lcgorCitmcm9tIG9lcWEuY29yZS50aHJlYWRlZCBpbXBvcnQgT0VUZXN0UnVubmVyVGhyZWFkZWQKIGZyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVRpbWVvdXRFcnJvcgogCiBAcmVnaXN0ZXJEZWNvcmF0b3IKQEAgLTEwLDE2ICsxNCwzMiBAQAogICAgIGF0dHJzID0gKCdvZXRpbWVvdXQnLCkKIAogICAgIGRlZiBzZXRVcERlY29yYXRvcihzZWxmKToKLSAgICAgICAgdGltZW91dCA9IHNlbGYub2V0aW1lb3V0Ci0gICAgICAgIGRlZiBfdGltZW91dEhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBPRVFBVGltZW91dEVycm9yKCJUaW1lZCBvdXQgYWZ0ZXIgJXMgIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyB1cCBhICVkIHNlY29uZChzKSB0aW1lb3V0IiAlIHNlbGYub2V0aW1lb3V0KQorCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jYXNlLnRjLnJ1bm5lciwgT0VUZXN0UnVubmVyVGhyZWFkZWQpOgorICAgICAgICAgICAgc2VsZi50aW1lb3V0ZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF90aW1lb3V0SGFuZGxlcigpOgorICAgICAgICAgICAgICAgIHNlbGYudGltZW91dGVkID0gVHJ1ZQorCisgICAgICAgICAgICBzZWxmLnRpbWVyID0gVGltZXIoc2VsZi5vZXRpbWVvdXQsIF90aW1lb3V0SGFuZGxlcikKKyAgICAgICAgICAgIHNlbGYudGltZXIuc3RhcnQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGltZW91dCA9IHNlbGYub2V0aW1lb3V0CisgICAgICAgICAgICBkZWYgX3RpbWVvdXRIYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIE9FUUFUaW1lb3V0RXJyb3IoIlRpbWVkIG91dCBhZnRlciAlcyAiCiAgICAgICAgICAgICAgICAgICAgICJzZWNvbmRzIG9mIGV4ZWN1dGlvbiIgJSB0aW1lb3V0KQogCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHVwIGEgJWQgc2Vjb25kKHMpIHRpbWVvdXQiICUgc2VsZi5vZXRpbWVvdXQpCi0gICAgICAgIHNlbGYuYWxhcm1TaWduYWwgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBfdGltZW91dEhhbmRsZXIpCi0gICAgICAgIHNpZ25hbC5hbGFybShzZWxmLm9ldGltZW91dCkKKyAgICAgICAgICAgIHNlbGYuYWxhcm1TaWduYWwgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBfdGltZW91dEhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwuYWxhcm0oc2VsZi5vZXRpbWVvdXQpCiAKICAgICBkZWYgdGVhckRvd25EZWNvcmF0b3Ioc2VsZik6Ci0gICAgICAgIHNpZ25hbC5hbGFybSgwKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzZWxmLmFsYXJtU2lnbmFsKQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZlZCBTSUdBTFJNIGhhbmRsZXIiKQorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2FzZS50Yy5ydW5uZXIsIE9FVGVzdFJ1bm5lclRocmVhZGVkKToKKyAgICAgICAgICAgIHNlbGYudGltZXIuY2FuY2VsKCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmVkIFRpbWVyIGhhbmRsZXIiKQorICAgICAgICAgICAgaWYgc2VsZi50aW1lb3V0ZWQ6CisgICAgICAgICAgICAgICAgcmFpc2UgT0VRQVRpbWVvdXRFcnJvcigiVGltZWQgb3V0IGFmdGVyICVzICIKKyAgICAgICAgICAgICAgICAgICAgInNlY29uZHMgb2YgZXhlY3V0aW9uIiAlIHNlbGYub2V0aW1lb3V0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzZWxmLmFsYXJtU2lnbmFsKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92ZWQgU0lHQUxSTSBoYW5kbGVyIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZXhjZXB0aW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9leGNlcHRpb24ucHkKaW5kZXggMmRmZDg0MC4uNzMyZjJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9leGNlcHRpb24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9leGNlcHRpb24ucHkKQEAgLTEyLDMgKzEyLDEyIEBACiAKIGNsYXNzIE9FUUFEZXBlbmRlbmN5KE9FUUFFeGNlcHRpb24pOgogICAgIHBhc3MKKworY2xhc3MgT0VRQU1pc3NpbmdNYW5pZmVzdChPRVFBRXhjZXB0aW9uKToKKyAgICBwYXNzCisKK2NsYXNzIE9FUUFQcmVSdW4oT0VRQUV4Y2VwdGlvbik6CisgICAgcGFzcworCitjbGFzcyBPRVFBVGVzdE5vdEZvdW5kKE9FUUFFeGNlcHRpb24pOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKaW5kZXggNjNhMTcwMy4uOTc1YTA4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKQEAgLTIsMjUgKzIsMzAgQEAKICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCiAKIGltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbnNwZWN0CiAKIGZyb20gb2VxYS5jb3JlLnV0aWxzLnBhdGggaW1wb3J0IGZpbmRGaWxlCiBmcm9tIG9lcWEuY29yZS51dGlscy50ZXN0IGltcG9ydCBnZXRTdWl0ZU1vZHVsZXMsIGdldENhc2VJRAogCitmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFUZXN0Tm90Rm91bmQKIGZyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgZGVjb3JhdG9yQ2xhc3NlcywgT0VUZXN0RGVjb3JhdG9yLCBcCiAgICAgICAgIE9FVGVzdEZpbHRlciwgT0VUZXN0RGlzY292ZXIKIAotZGVmIF9tYWtlX2ZhaWxlZF90ZXN0KGNsYXNzbmFtZSwgbWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKLSAgICAiIiIKLSAgICAgICAgV2hlbiBsb2FkaW5nIHRlc3RzIHVuaXR0ZXN0IGZyYW1ld29yayBzdG9yZXMgdGhlIGV4Y2VwdGlvbiBpbiBhIG5ldwotICAgICAgICBjbGFzcyBjcmVhdGVkIGZvciBiZSBkaXNwbGF5ZWQgaW50byBydW4oKS4KLQotICAgICAgICBGb3Igb3VyIHB1cnBvc2VzIHdpbGwgYmUgYmV0dGVyIHRvIHJhaXNlIHRoZSBleGNlcHRpb24gaW4gbG9hZGluZyAKLSAgICAgICAgc3RlcCBpbnN0ZWFkIG9mIHdhaXQgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlLgotICAgICIiIgotICAgIHJhaXNlIGV4Y2VwdGlvbgorIyBXaGVuIGxvYWRpbmcgdGVzdHMsIHRoZSB1bml0dGVzdCBmcmFtZXdvcmsgc3RvcmVzIGFueSBleGNlcHRpb25zIGFuZAorIyBkaXNwbGF5cyB0aGVtIG9ubHkgd2hlbiB0aGUgcnVuIG1ldGhvZCBpcyBjYWxsZWQuCisjCisjIEZvciBvdXIgcHVycG9zZXMsIGl0IGlzIGJldHRlciB0byByYWlzZSB0aGUgZXhjZXB0aW9ucyBpbiB0aGUgbG9hZGluZworIyBzdGVwIHJhdGhlciB0aGFuIHdhaXRpbmcgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlLgorIworIyBHZW5lcmF0ZSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBiZWNhdXNlIHRoaXMgZGlmZmVyIGFjcm9zcyBweXRob24gdmVyc2lvbnMKKyMgUHl0aG9uID49IDMuNC40IHVzZXMgdHJlZSBwYXJhbWV0ZXJzIGluc3RlYWQgZm91ciBidXQgZm9yIGV4YW1wbGUgUHl0aG9uIDMuNS4zCisjIHVlc2VzIGZvdXIgcGFyYW1ldGVycyBzbyBpc24ndCBpbmNyZW1lbnRhbC4KK19mYWlsZWRfdGVzdF9hcmdzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHVuaXR0ZXN0LmxvYWRlci5fbWFrZV9mYWlsZWRfdGVzdCkuYXJncworZXhlYygiIiJkZWYgX21ha2VfZmFpbGVkX3Rlc3QoJXMpOiByYWlzZSBleGNlcHRpb24iIiIgJSAnLCAnLmpvaW4oX2ZhaWxlZF90ZXN0X2FyZ3MpKQogdW5pdHRlc3QubG9hZGVyLl9tYWtlX2ZhaWxlZF90ZXN0ID0gX21ha2VfZmFpbGVkX3Rlc3QKIAogZGVmIF9maW5kX2R1cGxpY2F0ZWRfbW9kdWxlcyhzdWl0ZSwgZGlyZWN0b3J5KToKQEAgLTI5LDYgKzM0LDI4IEBACiAgICAgICAgIGlmIHBhdGg6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRHVwbGljYXRlZCAlcyBtb2R1bGUgZm91bmQgaW4gJXMiICUgKG1vZHVsZSwgcGF0aCkpCiAKK2RlZiBfYnVpbHRfbW9kdWxlc19kaWN0KG1vZHVsZXMpOgorICAgIG1vZHVsZXNfZGljdCA9IHt9CisKKyAgICBpZiBtb2R1bGVzID09IE5vbmU6CisgICAgICAgIHJldHVybiBtb2R1bGVzX2RpY3QKKworICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKKyAgICAgICAgIyBBc3N1bXB0aW9uOiBwYWNrYWdlIGFuZCBtb2R1bGUgbmFtZXMgZG8gbm90IGNvbnRhaW4gdXBwZXIgY2FzZQorICAgICAgICAjIGNoYXJhY3RlcnMsIHdoZXJlYXMgY2xhc3MgbmFtZXMgZG8KKyAgICAgICAgbSA9IHJlLm1hdGNoKHInXihbXkEtWl0rKSg/OlwuKFtBLVpdW14uXSopKD86XC4oW14uXSspKT8pPyQnLCBtb2R1bGUpCisKKyAgICAgICAgbW9kdWxlX25hbWUsIGNsYXNzX25hbWUsIHRlc3RfbmFtZSA9IG0uZ3JvdXBzKCkKKworICAgICAgICBpZiBtb2R1bGVfbmFtZSBhbmQgbW9kdWxlX25hbWUgbm90IGluIG1vZHVsZXNfZGljdDoKKyAgICAgICAgICAgIG1vZHVsZXNfZGljdFttb2R1bGVfbmFtZV0gPSB7fQorICAgICAgICBpZiBjbGFzc19uYW1lIGFuZCBjbGFzc19uYW1lIG5vdCBpbiBtb2R1bGVzX2RpY3RbbW9kdWxlX25hbWVdOgorICAgICAgICAgICAgbW9kdWxlc19kaWN0W21vZHVsZV9uYW1lXVtjbGFzc19uYW1lXSA9IFtdCisgICAgICAgIGlmIHRlc3RfbmFtZSBhbmQgdGVzdF9uYW1lIG5vdCBpbiBtb2R1bGVzX2RpY3RbbW9kdWxlX25hbWVdW2NsYXNzX25hbWVdOgorICAgICAgICAgICAgbW9kdWxlc19kaWN0W21vZHVsZV9uYW1lXVtjbGFzc19uYW1lXS5hcHBlbmQodGVzdF9uYW1lKQorCisgICAgcmV0dXJuIG1vZHVsZXNfZGljdAorCiBjbGFzcyBPRVRlc3RMb2FkZXIodW5pdHRlc3QuVGVzdExvYWRlcik6CiAgICAgY2FzZUNsYXNzID0gT0VUZXN0Q2FzZQogCkBAIC0zOSw3ICs2Niw4IEBACiAgICAgICAgICAgICBmaWx0ZXJzLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnRjID0gdGMKIAotICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCisgICAgICAgIHNlbGYubW9kdWxlcyA9IF9idWlsdF9tb2R1bGVzX2RpY3QobW9kdWxlcykKKwogICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKICAgICAgICAgc2VsZi5tb2R1bGVzX3JlcXVpcmVkID0gbW9kdWxlc19yZXF1aXJlZAogCkBAIC02Myw2ICs5MSw4IEBACiAKICAgICAgICAgc2VsZi5fcGF0Y2hDYXNlQ2xhc3Moc2VsZi5jYXNlQ2xhc3MpCiAKKyAgICAgICAgc3VwZXIoT0VUZXN0TG9hZGVyLCBzZWxmKS5fX2luaXRfXygpCisKICAgICBkZWYgX3BhdGNoQ2FzZUNsYXNzKHNlbGYsIHRlc3RDYXNlQ2xhc3MpOgogICAgICAgICAjIEFkZHMgY3VzdG9tIGF0dHJpYnV0ZXMgdG8gdGhlIE9FVGVzdENhc2UgY2xhc3MKICAgICAgICAgc2V0YXR0cih0ZXN0Q2FzZUNsYXNzLCAndGMnLCBzZWxmLnRjKQpAQCAtMTE2LDcgKzE0NiwzNSBAQAogICAgICAgICAiIiIKICAgICAgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0ZXN0IGNhc2UgbXVzdCBiZSBmaWx0ZXJlZCwgRmFsc2Ugb3RoZXJ3aXNlLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5maWx0ZXJzOgorICAgICAgICAjIFhYWDsgSWYgdGhlIG1vZHVsZSBoYXMgbW9yZSB0aGFuIG9uZSBuYW1lc3BhY2Ugb25seSB1c2UKKyAgICAgICAgIyB0aGUgZmlyc3QgdG8gc3VwcG9ydCBydW4gdGhlIHdob2xlIG1vZHVsZSBzcGVjaWZ5aW5nIHRoZQorICAgICAgICAjIDxtb2R1bGVfbmFtZT4uW3Rlc3RfY2xhc3NdLlt0ZXN0X25hbWVdCisgICAgICAgIG1vZHVsZV9uYW1lX3NtYWxsID0gY2FzZS5fX21vZHVsZV9fLnNwbGl0KCcuJylbMF0KKyAgICAgICAgbW9kdWxlX25hbWUgPSBjYXNlLl9fbW9kdWxlX18KKworICAgICAgICBjbGFzc19uYW1lID0gY2FzZS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgdGVzdF9uYW1lID0gY2FzZS5fdGVzdE1ldGhvZE5hbWUKKworICAgICAgICBpZiBzZWxmLm1vZHVsZXM6CisgICAgICAgICAgICBtb2R1bGUgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5tb2R1bGVzW21vZHVsZV9uYW1lX3NtYWxsXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5tb2R1bGVzW21vZHVsZV9uYW1lXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAgICAgaWYgbW9kdWxlOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjbGFzc19uYW1lIGluIG1vZHVsZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAgICAgICAgIGlmIG1vZHVsZVtjbGFzc19uYW1lXToKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9uYW1lIG5vdCBpbiBtb2R1bGVbY2xhc3NfbmFtZV06CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgRGVjb3JhdG9yIGZpbHRlcnMKKyAgICAgICAgaWYgc2VsZi5maWx0ZXJzIGFuZCBpc2luc3RhbmNlKGNhc2UsIE9FVGVzdENhc2UpOgogICAgICAgICAgICAgZmlsdGVycyA9IHNlbGYuZmlsdGVycy5jb3B5KCkKICAgICAgICAgICAgIGNhc2VfZGVjb3JhdG9ycyA9IFtjZCBmb3IgY2QgaW4gY2FzZS5kZWNvcmF0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2QuX19jbGFzc19fIGluIHNlbGYudXNlZF9maWx0ZXJzXQpAQCAtMTM0LDcgKzE5Miw4IEBACiAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIF9nZXRUZXN0Q2FzZShzZWxmLCB0ZXN0Q2FzZUNsYXNzLCB0Y05hbWUpOgotICAgICAgICBpZiBub3QgaGFzYXR0cih0ZXN0Q2FzZUNsYXNzLCAnX19vZXFhX2xvYWRlcicpOgorICAgICAgICBpZiBub3QgaGFzYXR0cih0ZXN0Q2FzZUNsYXNzLCAnX19vZXFhX2xvYWRlcicpIGFuZCBcCisgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyh0ZXN0Q2FzZUNsYXNzLCBPRVRlc3RDYXNlKToKICAgICAgICAgICAgICMgSW4gb3JkZXIgdG8gc3VwcG9ydCBkYXRhX3ZhcnMgdmFsaWRhdGlvbgogICAgICAgICAgICAgIyBtb25rZXkgcGF0Y2ggdGhlIGRlZmF1bHQgc2V0VXAvdGVhckRvd257Q2xhc3N9IHRvIHVzZQogICAgICAgICAgICAgIyB0aGUgb25lcyBwcm92aWRlZCBieSBPRVRlc3RDYXNlCkBAIC0xNjEsNyArMjIwLDggQEAKICAgICAgICAgICAgIHNldGF0dHIodGVzdENhc2VDbGFzcywgJ19fb2VxYV9sb2FkZXInLCBUcnVlKQogCiAgICAgICAgIGNhc2UgPSB0ZXN0Q2FzZUNsYXNzKHRjTmFtZSkKLSAgICAgICAgc2V0YXR0cihjYXNlLCAnZGVjb3JhdG9ycycsIFtdKQorICAgICAgICBpZiBpc2luc3RhbmNlKGNhc2UsIE9FVGVzdENhc2UpOgorICAgICAgICAgICAgc2V0YXR0cihjYXNlLCAnZGVjb3JhdG9ycycsIFtdKQogCiAgICAgICAgIHJldHVybiBjYXNlCiAKQEAgLTE3Myw5ICsyMzMsOSBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUZXN0IGNhc2VzIHNob3VsZCBub3QgYmUgZGVyaXZlZCBmcm9tIFRlc3RTdWl0ZS4iIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBNYXliZSB5b3UgbWVhbnQgdG8gZGVyaXZlICVzIGZyb20gVGVzdENhc2U/IiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdGVzdENhc2VDbGFzcy5fX25hbWVfXykKLSAgICAgICAgaWYgbm90IGlzc3ViY2xhc3ModGVzdENhc2VDbGFzcywgc2VsZi5jYXNlQ2xhc3MpOgorICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyh0ZXN0Q2FzZUNsYXNzLCB1bml0dGVzdC5jYXNlLlRlc3RDYXNlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGVzdCAlcyBpcyBub3QgZGVyaXZlZCBmcm9tICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgKHRlc3RDYXNlQ2xhc3MuX19uYW1lX18sIHNlbGYuY2FzZUNsYXNzLl9fbmFtZV9fKSkKKyAgICAgICAgICAgICAgICAgICAgKHRlc3RDYXNlQ2xhc3MuX19uYW1lX18sIHVuaXR0ZXN0LmNhc2UuVGVzdENhc2UuX19uYW1lX18pKQogCiAgICAgICAgIHRlc3RDYXNlTmFtZXMgPSBzZWxmLmdldFRlc3RDYXNlTmFtZXModGVzdENhc2VDbGFzcykKICAgICAgICAgaWYgbm90IHRlc3RDYXNlTmFtZXMgYW5kIGhhc2F0dHIodGVzdENhc2VDbGFzcywgJ3J1blRlc3QnKToKQEAgLTE5Niw2ICsyNTYsMjggQEAKIAogICAgICAgICByZXR1cm4gc2VsZi5zdWl0ZUNsYXNzKHN1aXRlKQogCisgICAgZGVmIF9yZXF1aXJlZF9tb2R1bGVzX3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICAgICAgU2VhcmNoIGluIFRlc3QgY29udGV4dCByZWdpc3RyeSBpZiBhIHJlcXVpcmVkCisgICAgICAgICAgICB0ZXN0IGlzIGZvdW5kLCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBub3QgZm91bmQuCisgICAgICAgICIiIgorCisgICAgICAgIGZvciBtb2R1bGUgaW4gc2VsZi5tb2R1bGVzX3JlcXVpcmVkOgorICAgICAgICAgICAgZm91bmQgPSBGYWxzZQorCisgICAgICAgICAgICAjIFRoZSBtb2R1bGUgbmFtZSBpcyBzcGxpdHRlZCB0byBvbmx5IGNvbXBhcmUgdGhlCisgICAgICAgICAgICAjIGZpcnN0IHBhcnQgb2YgYSB0ZXN0IGNhc2UgaWQuCisgICAgICAgICAgICBjb21wX2xlbiA9IGxlbihtb2R1bGUuc3BsaXQoJy4nKSkKKyAgICAgICAgICAgIGZvciBjYXNlIGluIHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddOgorICAgICAgICAgICAgICAgIGNhc2VfY29tcCA9ICcuJy5qb2luKGNhc2Uuc3BsaXQoJy4nKVswOmNvbXBfbGVuXSkKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgPT0gY2FzZV9jb21wOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgIHJhaXNlIE9FUUFUZXN0Tm90Rm91bmQoIk5vdCBmb3VuZCAlcyBpbiBsb2FkZWQgdGVzdCBjYXNlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUpCisKICAgICBkZWYgZGlzY292ZXIoc2VsZik6CiAgICAgICAgIGJpZ19zdWl0ZSA9IHNlbGYuc3VpdGVDbGFzcygpCiAgICAgICAgIGZvciBwYXRoIGluIHNlbGYubW9kdWxlX3BhdGhzOgpAQCAtMjEwLDggKzI5Miw0MSBAQAogICAgICAgICBmb3IgY2xzcyBpbiBkaXNjb3Zlcl9jbGFzc2VzOgogICAgICAgICAgICAgY2FzZXMgPSBjbHNzLmRpc2NvdmVyKHNlbGYudGMuX3JlZ2lzdHJ5KQogCisgICAgICAgIGlmIHNlbGYubW9kdWxlc19yZXF1aXJlZDoKKyAgICAgICAgICAgIHNlbGYuX3JlcXVpcmVkX21vZHVsZXNfdmFsaWRhdGlvbigpCisKICAgICAgICAgcmV0dXJuIHNlbGYuc3VpdGVDbGFzcyhjYXNlcykgaWYgY2FzZXMgZWxzZSBiaWdfc3VpdGUKIAorICAgIGRlZiBfZmlsdGVyTW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CisgICAgICAgICAgICBtc2cgPSAnVHJpZWQgdG8gaW1wb3J0ICVzIHRlc3QgbW9kdWxlIGJ1dCBpcyBhIGJ1aWx0LWluJworICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnICUgbW9kdWxlLl9fbmFtZV9fKQorCisgICAgICAgICMgWFhYOyBJZiB0aGUgbW9kdWxlIGhhcyBtb3JlIHRoYW4gb25lIG5hbWVzcGFjZSBvbmx5IHVzZQorICAgICAgICAjIHRoZSBmaXJzdCB0byBzdXBwb3J0IHJ1biB0aGUgd2hvbGUgbW9kdWxlIHNwZWNpZnlpbmcgdGhlCisgICAgICAgICMgPG1vZHVsZV9uYW1lPi5bdGVzdF9jbGFzc10uW3Rlc3RfbmFtZV0KKyAgICAgICAgbW9kdWxlX25hbWVfc21hbGwgPSBtb2R1bGUuX19uYW1lX18uc3BsaXQoJy4nKVswXQorICAgICAgICBtb2R1bGVfbmFtZSA9IG1vZHVsZS5fX25hbWVfXworCisgICAgICAgICMgTm9ybWFsIHRlc3QgbW9kdWxlcyBhcmUgbG9hZGVkIGlmIG5vIG1vZHVsZXMgd2VyZSBzcGVjaWZpZWQsCisgICAgICAgICMgaWYgbW9kdWxlIGlzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGxpc3Qgb3IgaWYgJ2FsbCcgaXMgaW4KKyAgICAgICAgIyBtb2R1bGUgbGlzdC4KKyAgICAgICAgIyBVbmRlcnNjb3JlIG1vZHVsZXMgYXJlIGxvYWRlZCBvbmx5IGlmIHNwZWNpZmllZCBpbiBtb2R1bGUgbGlzdC4KKyAgICAgICAgbG9hZF9tb2R1bGUgPSBUcnVlIGlmIG5vdCBtb2R1bGVfbmFtZS5zdGFydHN3aXRoKCdfJykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIChub3Qgc2VsZi5tb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbW9kdWxlX25hbWUgaW4gc2VsZi5tb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbW9kdWxlX25hbWVfc21hbGwgaW4gc2VsZi5tb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgJ2FsbCcgaW4gc2VsZi5tb2R1bGVzKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCisKKyAgICAgICAgbG9hZF91bmRlcnNjb3JlID0gVHJ1ZSBpZiBtb2R1bGVfbmFtZS5zdGFydHN3aXRoKCdfJykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAobW9kdWxlX25hbWUgaW4gc2VsZi5tb2R1bGVzIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZV9zbWFsbCBpbiBzZWxmLm1vZHVsZXMpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCisKKyAgICAgICAgcmV0dXJuIChsb2FkX21vZHVsZSwgbG9hZF91bmRlcnNjb3JlKQorCisKICAgICAjIFhYWCBBZnRlciBQeXRob24gMy41LCByZW1vdmUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrcyBmb3IKICAgICAjIHVzZV9sb2FkX3Rlc3RzIGRlcHJlY2F0aW9uIHZpYSAqYXJncyBhbmQgKiprd3MuICBTZWUgaXNzdWUgMTY2NjIuCiAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMyw1KToKQEAgLTIxOSwyMyArMzM0LDcgQEAKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgICAgIFJldHVybnMgYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIG1vZHVsZS4KICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaWYgbW9kdWxlLl9fbmFtZV9fIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICAgICAgICAgICAgICBtc2cgPSAnVHJpZWQgdG8gaW1wb3J0ICVzIHRlc3QgbW9kdWxlIGJ1dCBpcyBhIGJ1aWx0LWluJwotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZyAlIG1vZHVsZS5fX25hbWVfXykKLQotICAgICAgICAgICAgIyBOb3JtYWwgdGVzdCBtb2R1bGVzIGFyZSBsb2FkZWQgaWYgbm8gbW9kdWxlcyB3ZXJlIHNwZWNpZmllZCwKLSAgICAgICAgICAgICMgaWYgbW9kdWxlIGlzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGxpc3Qgb3IgaWYgJ2FsbCcgaXMgaW4KLSAgICAgICAgICAgICMgbW9kdWxlIGxpc3QuCi0gICAgICAgICAgICAjIFVuZGVyc2NvcmUgbW9kdWxlcyBhcmUgbG9hZGVkIG9ubHkgaWYgc3BlY2lmaWVkIGluIG1vZHVsZSBsaXN0LgotICAgICAgICAgICAgbG9hZF9tb2R1bGUgPSBUcnVlIGlmIG5vdCBtb2R1bGUuX19uYW1lX18uc3RhcnRzd2l0aCgnXycpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgKG5vdCBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbW9kdWxlLl9fbmFtZV9fIGluIHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciAnYWxsJyBpbiBzZWxmLm1vZHVsZXMpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCi0KLSAgICAgICAgICAgIGxvYWRfdW5kZXJzY29yZSA9IFRydWUgaWYgbW9kdWxlLl9fbmFtZV9fLnN0YXJ0c3dpdGgoJ18nKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtb2R1bGUuX19uYW1lX18gaW4gc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQorICAgICAgICAgICAgbG9hZF9tb2R1bGUsIGxvYWRfdW5kZXJzY29yZSA9IHNlbGYuX2ZpbHRlck1vZHVsZShtb2R1bGUpCiAKICAgICAgICAgICAgIGlmIGxvYWRfbW9kdWxlIG9yIGxvYWRfdW5kZXJzY29yZToKICAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoT0VUZXN0TG9hZGVyLCBzZWxmKS5sb2FkVGVzdHNGcm9tTW9kdWxlKApAQCAtMjQ3LDIzICszNDYsNyBAQAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICAgUmV0dXJucyBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gbW9kdWxlLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpZiBtb2R1bGUuX19uYW1lX18gaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBpbXBvcnQgJXMgdGVzdCBtb2R1bGUgYnV0IGlzIGEgYnVpbHQtaW4nCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnICUgbW9kdWxlLl9fbmFtZV9fKQotCi0gICAgICAgICAgICAjIE5vcm1hbCB0ZXN0IG1vZHVsZXMgYXJlIGxvYWRlZCBpZiBubyBtb2R1bGVzIHdlcmUgc3BlY2lmaWVkLAotICAgICAgICAgICAgIyBpZiBtb2R1bGUgaXMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgbGlzdCBvciBpZiAnYWxsJyBpcyBpbgotICAgICAgICAgICAgIyBtb2R1bGUgbGlzdC4KLSAgICAgICAgICAgICMgVW5kZXJzY29yZSBtb2R1bGVzIGFyZSBsb2FkZWQgb25seSBpZiBzcGVjaWZpZWQgaW4gbW9kdWxlIGxpc3QuCi0gICAgICAgICAgICBsb2FkX21vZHVsZSA9IFRydWUgaWYgbm90IG1vZHVsZS5fX25hbWVfXy5zdGFydHN3aXRoKCdfJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAobm90IHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtb2R1bGUuX19uYW1lX18gaW4gc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yICdhbGwnIGluIHNlbGYubW9kdWxlcykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKLQotICAgICAgICAgICAgbG9hZF91bmRlcnNjb3JlID0gVHJ1ZSBpZiBtb2R1bGUuX19uYW1lX18uc3RhcnRzd2l0aCgnXycpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZHVsZS5fX25hbWVfXyBpbiBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCisgICAgICAgICAgICBsb2FkX21vZHVsZSwgbG9hZF91bmRlcnNjb3JlID0gc2VsZi5fZmlsdGVyTW9kdWxlKG1vZHVsZSkKIAogICAgICAgICAgICAgaWYgbG9hZF9tb2R1bGUgb3IgbG9hZF91bmRlcnNjb3JlOgogICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RMb2FkZXIsIHNlbGYpLmxvYWRUZXN0c0Zyb21Nb2R1bGUoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CmluZGV4IDQ0ZmZlY2IuLjEzY2RmNWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQogCiB4bWxFbmFibGVkID0gRmFsc2UKIHRyeToKQEAgLTI0LDEwICsyNSwxNCBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIG1zZyk6CiAgICAgICAgIGlmIGxlbihtc2cpID4gMSBhbmQgbXNnWzBdICE9ICdcbic6Ci0gICAgICAgICAgICBzZWxmLmJ1ZmZlciArPSBtc2cKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmxvZyhsb2dnaW5nLklORk8sIHNlbGYuYnVmZmVyLnJzdHJpcCgiXG4iKSkKLSAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gIiIKKyAgICAgICAgICAgIGlmICcuLi4nIGluIG1zZzoKKyAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciArPSBtc2cKKyAgICAgICAgICAgIGVsaWYgc2VsZi5idWZmZXI6CisgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gbXNnCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKGxvZ2dpbmcuSU5GTywgc2VsZi5idWZmZXIpCisgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgPSAiIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5sb2cobG9nZ2luZy5JTkZPLCBtc2cpCiAKICAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgpAQCAtMzgsMjIgKzQzLDEyMiBAQAogICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIAogICAgICAgICBzZWxmLnRjID0gdGMKKyAgICAgICAgc2VsZi5fdGNfbWFwX3Jlc3VsdHMoKQogCisgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgIyBBbGxvdyB1cyB0byB0cmlnZ2VyIHRoZSB0ZXN0Y2FzZSBidWZmZXIgbW9kZSBvbiBhIHBlciB0ZXN0IGJhc2lzCisgICAgICAgICMgc28gc3Rkb3V0L3N0ZGVyciBhcmUgb25seSBwcmludGVkIHVwb24gZmFpbHVyZS4gRW5hYmxlcyBkZWJ1Z2dpbmcKKyAgICAgICAgIyBidXQgY2xlYW4gb3V0cHV0CisgICAgICAgIGlmIGhhc2F0dHIodGVzdCwgImJ1ZmZlciIpOgorICAgICAgICAgICAgc2VsZi5idWZmZXIgPSB0ZXN0LmJ1ZmZlcgorICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLnN0YXJ0VGVzdCh0ZXN0KQorCisgICAgZGVmIF90Y19tYXBfcmVzdWx0cyhzZWxmKToKICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1snZmFpbHVyZXMnXSA9IHNlbGYuZmFpbHVyZXMKICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1snZXJyb3JzJ10gPSBzZWxmLmVycm9ycwogICAgICAgICBzZWxmLnRjLl9yZXN1bHRzWydza2lwcGVkJ10gPSBzZWxmLnNraXBwZWQKICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1snZXhwZWN0ZWRGYWlsdXJlcyddID0gc2VsZi5leHBlY3RlZEZhaWx1cmVzCiAKLSAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3QpOgotICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLnN0YXJ0VGVzdCh0ZXN0KQorICAgIGRlZiBsb2dTdW1tYXJ5KHNlbGYsIGNvbXBvbmVudCwgY29udGV4dF9tc2c9JycpOgorICAgICAgICBlbGFwc2VkX3RpbWUgPSBzZWxmLnRjLl9ydW5fZW5kX3RpbWUgLSBzZWxmLnRjLl9ydW5fc3RhcnRfdGltZQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJTVU1NQVJZOiIpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIiVzICglcykgLSBSYW4gJWQgdGVzdCVzIGluICUuM2ZzIiAlIChjb21wb25lbnQsCisgICAgICAgICAgICBjb250ZXh0X21zZywgc2VsZi50ZXN0c1J1biwgc2VsZi50ZXN0c1J1biAhPSAxIGFuZCAicyIgb3IgIiIsCisgICAgICAgICAgICBlbGFwc2VkX3RpbWUpKQorCisgICAgICAgIGlmIHNlbGYud2FzU3VjY2Vzc2Z1bCgpOgorICAgICAgICAgICAgbXNnID0gIiVzIC0gT0sgLSBBbGwgcmVxdWlyZWQgdGVzdHMgcGFzc2VkIiAlIGNvbXBvbmVudAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gIiVzIC0gRkFJTCAtIFJlcXVpcmVkIHRlc3RzIGZhaWxlZCIgJSBjb21wb25lbnQKKyAgICAgICAgc2tpcHBlZCA9IGxlbihzZWxmLnRjLl9yZXN1bHRzWydza2lwcGVkJ10pCisgICAgICAgIGlmIHNraXBwZWQ6IAorICAgICAgICAgICAgbXNnICs9ICIgKHNraXBwZWQ9JWQpIiAlIHNraXBwZWQKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbyhtc2cpCisKKyAgICBkZWYgX2dldERldGFpbHNOb3RQYXNzZWQoc2VsZiwgY2FzZSwgdHlwZSwgZGVzYyk6CisgICAgICAgIGZvdW5kID0gRmFsc2UKKworICAgICAgICBmb3IgKHNjYXNlLCBtc2cpIGluIHNlbGYudGMuX3Jlc3VsdHNbdHlwZV06CisgICAgICAgICAgICAjIFhYWDogV2hlbiBYTUwgcmVwb3J0aW5nIGlzIGVuYWJsZWQgc2Nhc2UgaXMKKyAgICAgICAgICAgICMgeG1scnVubmVyLnJlc3VsdC5fVGVzdEluZm8gaW5zdGFuY2UgaW5zdGVhZCBvZgorICAgICAgICAgICAgIyBzdHJpbmcuCisgICAgICAgICAgICBpZiB4bWxFbmFibGVkOgorICAgICAgICAgICAgICAgIGlmIGNhc2UuaWQoKSA9PSBzY2FzZS50ZXN0X2lkOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzY2FzZV9zdHIgPSBzY2FzZS50ZXN0X2lkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGNhc2UgPT0gc2Nhc2U6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNjYXNlX3N0ciA9IHN0cihzY2FzZSkKKworICAgICAgICAgICAgIyBXaGVuIGZhaWxzIGF0IG1vZHVsZSBvciBjbGFzcyBsZXZlbCB0aGUgY2xhc3MgbmFtZSBpcyBwYXNzZWQgYXMgc3RyaW5nCisgICAgICAgICAgICAjIHNvIGZpZ3VyZSBvdXQgdG8gc2VlIGlmIG1hdGNoCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJec2V0VXBNb2R1bGUgXCgoP1A8bW9kdWxlX25hbWU+LiopXCkkIiwgc2Nhc2Vfc3RyKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBpZiBjYXNlLl9fY2xhc3NfXy5fX21vZHVsZV9fID09IG0uZ3JvdXAoJ21vZHVsZV9uYW1lJyk6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJec2V0VXBDbGFzcyBcKCg/UDxjbGFzc19uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgY2xhc3NfbmFtZSA9ICIlcy4lcyIgJSAoY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgICAgICAgICAgICAgaWYgY2xhc3NfbmFtZSA9PSBtLmdyb3VwKCdjbGFzc19uYW1lJyk6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGZvdW5kOgorICAgICAgICAgICAgcmV0dXJuIChmb3VuZCwgbXNnKQorCisgICAgICAgIHJldHVybiAoZm91bmQsIE5vbmUpCisKKyAgICBkZWYgbG9nRGV0YWlscyhzZWxmKToKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUkVTVUxUUzoiKQorICAgICAgICBmb3IgY2FzZV9uYW1lIGluIHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddOgorICAgICAgICAgICAgY2FzZSA9IHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddW2Nhc2VfbmFtZV0KKworICAgICAgICAgICAgcmVzdWx0X3R5cGVzID0gWydmYWlsdXJlcycsICdlcnJvcnMnLCAnc2tpcHBlZCcsICdleHBlY3RlZEZhaWx1cmVzJ10KKyAgICAgICAgICAgIHJlc3VsdF9kZXNjID0gWydGQUlMRUQnLCAnRVJST1InLCAnU0tJUFBFRCcsICdFWFBFQ1RFREZBSUwnXQorCisgICAgICAgICAgICBmYWlsID0gRmFsc2UKKyAgICAgICAgICAgIGRlc2MgPSBOb25lCisgICAgICAgICAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShyZXN1bHRfdHlwZXMpOgorICAgICAgICAgICAgICAgIChmYWlsLCBtc2cpID0gc2VsZi5fZ2V0RGV0YWlsc05vdFBhc3NlZChjYXNlLCByZXN1bHRfdHlwZXNbaWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9kZXNjW2lkeF0pCisgICAgICAgICAgICAgICAgaWYgZmFpbDoKKyAgICAgICAgICAgICAgICAgICAgZGVzYyA9IHJlc3VsdF9kZXNjW2lkeF0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgb2VpZCA9IC0xCisgICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsICdkZWNvcmF0b3JzJyk6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gY2FzZS5kZWNvcmF0b3JzOgorICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGQsICdvZWlkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBvZWlkID0gZC5vZWlkCisKKyAgICAgICAgICAgIGlmIGZhaWw6CisgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzIiAlIChjYXNlLmlkKCksCisgICAgICAgICAgICAgICAgICAgIG9laWQsIGRlc2MpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSRVNVTFRTIC0gJXMgLSBUZXN0Y2FzZSAlczogJXMiICUgKGNhc2UuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgb2VpZCwgJ1BBU1NFRCcpKQorCitjbGFzcyBPRUxpc3RUZXN0c1Jlc3VsdChvYmplY3QpOgorICAgIGRlZiB3YXNTdWNjZXNzZnVsKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQogCiBjbGFzcyBPRVRlc3RSdW5uZXIoX1Rlc3RSdW5uZXIpOgorICAgIHN0cmVhbUxvZ2dlckNsYXNzID0gT0VTdHJlYW1Mb2dnZXIKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgaWYgeG1sRW5hYmxlZDoKICAgICAgICAgICAgIGlmIG5vdCBrd2FyZ3MuZ2V0KCdvdXRwdXQnKToKICAgICAgICAgICAgICAgICBrd2FyZ3NbJ291dHB1dCddID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3RSZXN1bHRzXyVzXyVzJyAlICh0aW1lLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKSwgb3MuZ2V0cGlkKCkpKQogCisgICAgICAgIGt3YXJnc1snc3RyZWFtJ10gPSBzZWxmLnN0cmVhbUxvZ2dlckNsYXNzKHRjLmxvZ2dlcikKICAgICAgICAgc3VwZXIoT0VUZXN0UnVubmVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYudGMgPSB0YwogICAgICAgICBzZWxmLnJlc3VsdGNsYXNzID0gT0VUZXN0UmVzdWx0CkBAIC03NCwzICsxNzksOTkgQEAKICAgICAgICAgZGVmIF9tYWtlUmVzdWx0KHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0Y2xhc3Moc2VsZi50Yywgc2VsZi5zdHJlYW0sIHNlbGYuZGVzY3JpcHRpb25zLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSkKKworCisgICAgZGVmIF93YWxrX3N1aXRlKHNlbGYsIHN1aXRlLCBmdW5jKToKKyAgICAgICAgZm9yIG9iaiBpbiBzdWl0ZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB1bml0dGVzdC5zdWl0ZS5UZXN0U3VpdGUpOgorICAgICAgICAgICAgICAgIGlmIGxlbihvYmouX3Rlc3RzKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShvYmosIGZ1bmMpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCB1bml0dGVzdC5jYXNlLlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBmdW5jKHNlbGYudGMubG9nZ2VyLCBvYmopCisgICAgICAgICAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gc2VsZi5fd2Fsa2VkX2Nhc2VzICsgMQorCisgICAgZGVmIF9saXN0X3Rlc3RzX25hbWUoc2VsZiwgc3VpdGUpOgorICAgICAgICBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKyAgICAgICAgZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9ldGFnIGltcG9ydCBPRVRlc3RUYWcKKworICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCisKKyAgICAgICAgZGVmIF9saXN0X2Nhc2VzX3dpdGhvdXRfaWQobG9nZ2VyLCBjYXNlKToKKworICAgICAgICAgICAgZm91bmRfaWQgPSBGYWxzZQorICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAnZGVjb3JhdG9ycycpOgorICAgICAgICAgICAgICAgIGZvciBkIGluIGNhc2UuZGVjb3JhdG9yczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkLCBPRVRlc3RJRCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9pZCA9IFRydWUKKworICAgICAgICAgICAgaWYgbm90IGZvdW5kX2lkOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdvZWlkIG1pc3NpbmcgZm9yICVzJyAlIGNhc2UuaWQoKSkKKworICAgICAgICBkZWYgX2xpc3RfY2FzZXMobG9nZ2VyLCBjYXNlKToKKyAgICAgICAgICAgIG9laWQgPSBOb25lCisgICAgICAgICAgICBvZXRhZyA9IE5vbmUKKworICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAnZGVjb3JhdG9ycycpOgorICAgICAgICAgICAgICAgIGZvciBkIGluIGNhc2UuZGVjb3JhdG9yczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkLCBPRVRlc3RJRCk6CisgICAgICAgICAgICAgICAgICAgICAgICBvZWlkID0gZC5vZWlkCisgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkLCBPRVRlc3RUYWcpOgorICAgICAgICAgICAgICAgICAgICAgICAgb2V0YWcgPSBkLm9ldGFnCisKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlc1x0JXNcdFx0JXMiICUgKG9laWQsIG9ldGFnLCBjYXNlLmlkKCkpKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkxpc3RpbmcgdGVzdCBjYXNlcyB0aGF0IGRvbid0IGhhdmUgb2VpZCAuLi4iKQorICAgICAgICBzZWxmLl93YWxrX3N1aXRlKHN1aXRlLCBfbGlzdF9jYXNlc193aXRob3V0X2lkKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCItIiAqIDgwKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkxpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0czoiKQorICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oImlkXHR0YWdcdFx0dGVzdCIpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIi0iICogODApCisgICAgICAgIHNlbGYuX3dhbGtfc3VpdGUoc3VpdGUsIF9saXN0X2Nhc2VzKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCItIiAqIDgwKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJUb3RhbCBmb3VuZDpcdCVzIiAlIHNlbGYuX3dhbGtlZF9jYXNlcykKKworICAgIGRlZiBfbGlzdF90ZXN0c19jbGFzcyhzZWxmLCBzdWl0ZSk6CisgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKKworICAgICAgICBjdXJyID0ge30KKyAgICAgICAgZGVmIF9saXN0X2NsYXNzZXMobG9nZ2VyLCBjYXNlKToKKyAgICAgICAgICAgIGlmIG5vdCAnbW9kdWxlJyBpbiBjdXJyIG9yIGN1cnJbJ21vZHVsZSddICE9IGNhc2UuX19tb2R1bGVfXzoKKyAgICAgICAgICAgICAgICBjdXJyWydtb2R1bGUnXSA9IGNhc2UuX19tb2R1bGVfXworICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGN1cnJbJ21vZHVsZSddKQorCisgICAgICAgICAgICBpZiBub3QgJ2NsYXNzJyBpbiBjdXJyICBvciBjdXJyWydjbGFzcyddICE9IFwKKyAgICAgICAgICAgICAgICAgICAgY2FzZS5fX2NsYXNzX18uX19uYW1lX186CisgICAgICAgICAgICAgICAgY3VyclsnY2xhc3MnXSA9IGNhc2UuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiAtLSAlcyIgJSBjdXJyWydjbGFzcyddKQorCisgICAgICAgICAgICBsb2dnZXIuaW5mbygiIC0tIC0tICVzIiAlIGNhc2UuX3Rlc3RNZXRob2ROYW1lKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkxpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0IGNsYXNzZXM6IikKKyAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShzdWl0ZSwgX2xpc3RfY2xhc3NlcykKKworICAgIGRlZiBfbGlzdF90ZXN0c19tb2R1bGUoc2VsZiwgc3VpdGUpOgorICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCisKKyAgICAgICAgbGlzdGVkID0gW10KKyAgICAgICAgZGVmIF9saXN0X21vZHVsZXMobG9nZ2VyLCBjYXNlKToKKyAgICAgICAgICAgIGlmIG5vdCBjYXNlLl9fbW9kdWxlX18gaW4gbGlzdGVkOgorICAgICAgICAgICAgICAgIGlmIGNhc2UuX19tb2R1bGVfXy5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAoaGlkZGVuKSIgJSBjYXNlLl9fbW9kdWxlX18pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oY2FzZS5fX21vZHVsZV9fKQorICAgICAgICAgICAgICAgIGxpc3RlZC5hcHBlbmQoY2FzZS5fX21vZHVsZV9fKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkxpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXM6IikKKyAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShzdWl0ZSwgX2xpc3RfbW9kdWxlcykKKworICAgIGRlZiBsaXN0X3Rlc3RzKHNlbGYsIHN1aXRlLCBkaXNwbGF5X3R5cGUpOgorICAgICAgICBpZiBkaXNwbGF5X3R5cGUgPT0gJ25hbWUnOgorICAgICAgICAgICAgc2VsZi5fbGlzdF90ZXN0c19uYW1lKHN1aXRlKQorICAgICAgICBlbGlmIGRpc3BsYXlfdHlwZSA9PSAnY2xhc3MnOgorICAgICAgICAgICAgc2VsZi5fbGlzdF90ZXN0c19jbGFzcyhzdWl0ZSkKKyAgICAgICAgZWxpZiBkaXNwbGF5X3R5cGUgPT0gJ21vZHVsZSc6CisgICAgICAgICAgICBzZWxmLl9saXN0X3Rlc3RzX21vZHVsZShzdWl0ZSkKKworICAgICAgICByZXR1cm4gT0VMaXN0VGVzdHNSZXN1bHQoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKaW5kZXggMmRjNTIxYy4uZDM1OWJmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlPWRpcl9pbWFnZSwgZGlzcGxheT1kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZT1ib290bG9nLCBib290dGltZT1ib290dGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm09a3ZtLCBkdW1wX2Rpcj1kdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzPWR1bXBfaG9zdF9jbWRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHM9ZHVtcF9ob3N0X2NtZHMsIGxvZ2dlcj1sb2dnZXIpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnN0YXJ0KHBhcmFtcywgZXh0cmFfYm9vdHBhcmFtcz1leHRyYV9ib290cGFyYW1zKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQppbmRleCBiODA5MzljLi4xNTFiOTlhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IHNlbGVjdAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgY29kZWNzCiAKIGZyb20gLiBpbXBvcnQgT0VUYXJnZXQKIApAQCAtODIsNyArODMsNyBAQAogICAgICAgICAgICAgcHJvY2Vzc1RpbWVvdXQgPSBzZWxmLnRpbWVvdXQKIAogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYuX3J1bihzc2hDbWQsIHByb2Nlc3NUaW1lb3V0LCBUcnVlKQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdcbkNvbW1hbmQ6ICVzXG5PdXRwdXQ6ICAlc1xuJyAlIChjb21tYW5kLCBvdXRwdXQpKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnQ29tbWFuZDogJXNcbk91dHB1dDogICVzXG4nICUgKGNvbW1hbmQsIG91dHB1dCkpCiAgICAgICAgIHJldHVybiAoc3RhdHVzLCBvdXRwdXQpCiAKICAgICBkZWYgY29weVRvKHNlbGYsIGxvY2FsU3JjLCByZW1vdGVEc3QpOgpAQCAtMjA2LDEyICsyMDcsMTIgQEAKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ3RpbWU6ICVzLCBlbmR0aW1lOiAlcycgJSAodGltZS50aW1lKCksIGVuZHRpbWUpKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZWN0LnNlbGVjdChbcHJvY2Vzcy5zdGRvdXRdLCBbXSwgW10sIDUpWzBdICE9IFtdOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQocHJvY2Vzcy5zdGRvdXQuZmlsZW5vKCksIDEwMjQpCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSBjb2RlY3MuZ2V0cmVhZGVyKCd1dGYtOCcpKHByb2Nlc3Muc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlYWRlci5yZWFkKDEwMjQsIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9mID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUGFydGlhbCBkYXRhIGZyb20gU1NIIGNhbGw6ICVzJyAlIGRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgdGltZW91dApAQCAtMjMzLDcgKzIzNCw3IEBACiAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxhc3RsaW5lCiAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdyZXBsYWNlJykKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnRGF0YSBmcm9tIFNTSCBjYWxsOiAlcycgJSBvdXRwdXQucnN0cmlwKCkpCiAKICAgICBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmU0Y2IzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWQucHkKQEAgLTAsMCArMSwxMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2Zyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKKworY2xhc3MgVGhyZWFkZWRUZXN0KE9FVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RocmVhZGVkX25vX2RlcGVuZHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCisKK2NsYXNzIFRocmVhZGVkVGVzdDIoT0VUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGhyZWFkZWRfc2FtZV9tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9hbG9uZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2Fsb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNWYzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9hbG9uZS5weQpAQCAtMCwwICsxLDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIFRocmVhZGVkVGVzdEFsb25lKE9FVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RocmVhZGVkX2Fsb25lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfZGVwZW5kcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2RlcGVuZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxNThkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2RlcGVuZHMucHkKQEAgLTAsMCArMSwxMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2Zyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCisKK2NsYXNzIFRocmVhZGVkVGVzdDMoT0VUZXN0Q2FzZSk6CisgICAgQE9FVGVzdERlcGVuZHMoWyd0aHJlYWRlZC5UaHJlYWRlZFRlc3QudGVzdF90aHJlYWRlZF9ub19kZXBlbmRzJ10pCisgICAgZGVmIHRlc3RfdGhyZWFkZWRfZGVwZW5kcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX21vZHVsZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX21vZHVsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2QxN2UwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfbW9kdWxlLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIFRocmVhZGVkVGVzdE1vZHVsZShPRVRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCisKK2NsYXNzIFRocmVhZGVkVGVzdE1vZHVsZTIoT0VUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGhyZWFkZWRfbW9kdWxlMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkKaW5kZXggNTJiMThhMS4uMTkzMjMyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkKQEAgLTMzLDMgKzMzLDEzIEBACiAgICAgICAgIHRjLmxvYWRUZXN0cyhzZWxmLmNhc2VzX3BhdGgsIG1vZHVsZXM9bW9kdWxlcywgdGVzdHM9dGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPWZpbHRlcnMpCiAgICAgICAgIHJldHVybiB0YworCisgICAgZGVmIF90ZXN0TG9hZGVyVGhyZWFkZWQoc2VsZiwgZD17fSwgbW9kdWxlcz1bXSwKKyAgICAgICAgICAgIHRlc3RzPVtdLCBmaWx0ZXJzPXt9KToKKyAgICAgICAgZnJvbSBvZXFhLmNvcmUudGhyZWFkZWQgaW1wb3J0IE9FVGVzdENvbnRleHRUaHJlYWRlZAorCisgICAgICAgIHRjID0gT0VUZXN0Q29udGV4dFRocmVhZGVkKGQsIHNlbGYubG9nZ2VyKQorICAgICAgICB0Yy5sb2FkVGVzdHMoc2VsZi5jYXNlc19wYXRoLCBtb2R1bGVzPW1vZHVsZXMsIHRlc3RzPXRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1maWx0ZXJzKQorCisgICAgICAgIHJldHVybiB0YwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weQppbmRleCBmN2QxMWU4Li5jZjk5ZTBkIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weQpAQCAtMTMxLDUgKzEzMSwxNyBAQAogICAgICAgICBtc2cgPSAiT0VUZXN0VGltZW91dCBkaWRuJ3QgcmVzdG9yZSBTSUdBTFJNIgogICAgICAgICBzZWxmLmFzc2VydElzKGFsYXJtX3NpZ25hbCwgc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHQUxSTSksIG1zZz1tc2cpCiAKKyAgICBkZWYgdGVzdF90aW1lb3V0X3RocmVhZChzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbJ3RpbWVvdXQuVGltZW91dFRlc3QudGVzdFRpbWVvdXRQYXNzJ10KKyAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBydW4gdGVzdCB1c2luZyBPRVRlc3RUaW1lb3V0JworICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXJUaHJlYWRlZChtb2R1bGVzPXNlbGYubW9kdWxlcywgdGVzdHM9dGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0Yy5ydW5UZXN0cygpLndhc1N1Y2Nlc3NmdWwoKSwgbXNnPW1zZykKKworICAgIGRlZiB0ZXN0X3RpbWVvdXRfdGhyZWFkZWRfZmFpbChzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbJ3RpbWVvdXQuVGltZW91dFRlc3QudGVzdFRpbWVvdXRGYWlsJ10KKyAgICAgICAgbXNnID0gIk9FVGVzdFRpbWVvdXQgdGVzdCBkaWRuJ3QgdGltZW91dCBhcyBleHBlY3RlZCIKKyAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyVGhyZWFkZWQobW9kdWxlcz1zZWxmLm1vZHVsZXMsIHRlc3RzPXRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRjLnJ1blRlc3RzKCkud2FzU3VjY2Vzc2Z1bCgpLCBtc2c9bXNnKQorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2xvYWRlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKaW5kZXggYjc5YjhiYS4uZTBkOTE3ZCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2xvYWRlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi0jIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKIAogaW1wb3J0IG9zCkBAIC04Miw1ICs4MiwzMyBAQAogICAgICAgICBtc2cgPSAnRXhwZWN0ZWQgbW9kdWxlcyBmcm9tIHR3byBkaWZmZXJlbnQgcGF0aHMnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlcywgZXhwZWN0ZWRfbW9kdWxlcywgbXNnPW1zZykKIAorICAgIGRlZiB0ZXN0X2xvYWRlcl90aHJlYWRlZChzZWxmKToKKyAgICAgICAgY2FzZXNfcGF0aCA9IHNlbGYuY2FzZXNfcGF0aAorCisgICAgICAgIHNlbGYuY2FzZXNfcGF0aCA9IFtvcy5wYXRoLmpvaW4oc2VsZi5jYXNlc19wYXRoLCAnbG9hZGVyJywgJ3RocmVhZGVkJyldCisKKyAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyVGhyZWFkZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0Yy5zdWl0ZXMpLCAzLCAiRXhwZWN0ZWQgdG8gYmUgMyBzdWl0ZXMiKQorCisgICAgICAgIGNhc2VfaWRzID0gWyd0aHJlYWRlZC5UaHJlYWRlZFRlc3QudGVzdF90aHJlYWRlZF9ub19kZXBlbmRzJywKKyAgICAgICAgICAgICAgICAndGhyZWFkZWQuVGhyZWFkZWRUZXN0Mi50ZXN0X3RocmVhZGVkX3NhbWVfbW9kdWxlJywKKyAgICAgICAgICAgICAgICAndGhyZWFkZWRfZGVwZW5kcy5UaHJlYWRlZFRlc3QzLnRlc3RfdGhyZWFkZWRfZGVwZW5kcyddCisgICAgICAgIGZvciBjYXNlIGluIHRjLnN1aXRlc1swXS5fdGVzdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc2UuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgY2FzZV9pZHNbdGMuc3VpdGVzWzBdLl90ZXN0cy5pbmRleChjYXNlKV0pCisKKyAgICAgICAgY2FzZV9pZHMgPSBbJ3RocmVhZGVkX2Fsb25lLlRocmVhZGVkVGVzdEFsb25lLnRlc3RfdGhyZWFkZWRfYWxvbmUnXQorICAgICAgICBmb3IgY2FzZSBpbiB0Yy5zdWl0ZXNbMV0uX3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXNlLmlkKCksCisgICAgICAgICAgICAgICAgICAgIGNhc2VfaWRzW3RjLnN1aXRlc1sxXS5fdGVzdHMuaW5kZXgoY2FzZSldKQorCisgICAgICAgIGNhc2VfaWRzID0gWyd0aHJlYWRlZF9tb2R1bGUuVGhyZWFkZWRUZXN0TW9kdWxlLnRlc3RfdGhyZWFkZWRfbW9kdWxlJywKKyAgICAgICAgICAgICAgICAndGhyZWFkZWRfbW9kdWxlLlRocmVhZGVkVGVzdE1vZHVsZTIudGVzdF90aHJlYWRlZF9tb2R1bGUyJ10KKyAgICAgICAgZm9yIGNhc2UgaW4gdGMuc3VpdGVzWzJdLl90ZXN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FzZS5pZCgpLAorICAgICAgICAgICAgICAgICAgICBjYXNlX2lkc1t0Yy5zdWl0ZXNbMl0uX3Rlc3RzLmluZGV4KGNhc2UpXSkKKworICAgICAgICBzZWxmLmNhc2VzX3BhdGggPSBjYXNlc19wYXRoCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RocmVhZGVkLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90aHJlYWRlZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2FmZTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90aHJlYWRlZC5weQpAQCAtMCwwICsxLDI3NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBxdWV1ZQoraW1wb3J0IHRpbWUKKworZnJvbSB1bml0dGVzdC5zdWl0ZSBpbXBvcnQgVGVzdFN1aXRlCisKK2Zyb20gb2VxYS5jb3JlLmxvYWRlciBpbXBvcnQgT0VUZXN0TG9hZGVyCitmcm9tIG9lcWEuY29yZS5ydW5uZXIgaW1wb3J0IE9FU3RyZWFtTG9nZ2VyLCBPRVRlc3RSZXN1bHQsIE9FVGVzdFJ1bm5lcgorZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dAorCitjbGFzcyBPRVRlc3RMb2FkZXJUaHJlYWRlZChPRVRlc3RMb2FkZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YywgbW9kdWxlX3BhdGhzLCBtb2R1bGVzLCB0ZXN0cywgbW9kdWxlc19yZXF1aXJlZCwKKyAgICAgICAgICAgIGZpbHRlcnMsIHByb2Nlc3NfbnVtPTAsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE9FVGVzdExvYWRlclRocmVhZGVkLCBzZWxmKS5fX2luaXRfXyh0YywgbW9kdWxlX3BhdGhzLCBtb2R1bGVzLAorICAgICAgICAgICAgICAgIHRlc3RzLCBtb2R1bGVzX3JlcXVpcmVkLCBmaWx0ZXJzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5wcm9jZXNzX251bSA9IHByb2Nlc3NfbnVtCisKKyAgICBkZWYgZGlzY292ZXIoc2VsZik6CisgICAgICAgIHN1aXRlID0gc3VwZXIoT0VUZXN0TG9hZGVyVGhyZWFkZWQsIHNlbGYpLmRpc2NvdmVyKCkKKworICAgICAgICBpZiBzZWxmLnByb2Nlc3NfbnVtIDw9IDA6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3NfbnVtID0gbWluKG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgbGVuKHN1aXRlLl90ZXN0cykpCisKKyAgICAgICAgc3VpdGVzID0gW10KKyAgICAgICAgZm9yIF8gaW4gcmFuZ2Uoc2VsZi5wcm9jZXNzX251bSk6CisgICAgICAgICAgICBzdWl0ZXMuYXBwZW5kKHNlbGYuc3VpdGVDbGFzcygpKQorCisgICAgICAgIGRlZiBfc2VhcmNoX2Zvcl9tb2R1bGVfaWR4KHN1aXRlcywgY2FzZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBDYXNlcyBpbiB0aGUgc2FtZSBtb2R1bGUgbmVlZHMgdG8gYmUgcnVuCisgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgdGhyZWFkIGJlY2F1c2UgUHlVbml0IGtlZXBzIHRyYWNrCisgICAgICAgICAgICAgICAgb2Ygc2V0VXB7TW9kdWxlLCBDbGFzcyx9IGFuZCB0ZWFyRG93bntNb2R1bGUsIENsYXNzLH0uCisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZm9yIGlkeCBpbiByYW5nZShzZWxmLnByb2Nlc3NfbnVtKToKKyAgICAgICAgICAgICAgICBzdWl0ZSA9IHN1aXRlc1tpZHhdCisgICAgICAgICAgICAgICAgZm9yIGMgaW4gc3VpdGUuX3Rlc3RzOgorICAgICAgICAgICAgICAgICAgICBpZiBjYXNlLl9fbW9kdWxlX18gPT0gYy5fX21vZHVsZV9fOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkeAorCisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgICAgICBkZWYgX3NlYXJjaF9mb3JfZGVwZW5kX2lkeChzdWl0ZXMsIGRlcGVuZHMpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBjYXNlcyBuZWVkcyB0byBiZSBydW4gaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICB0aHJlYWQsIGJlY2F1c2UgT0VRQSBmcmFtZXdvcmsgbG9vayBhdCB0aGUgc3RhdGUKKyAgICAgICAgICAgICAgICBvZiBkZXBlbmRhbnQgdGVzdCB0byBmaWd1cmUgb3V0IGlmIHNraXAgb3Igbm90LgorICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGZvciBpZHggaW4gcmFuZ2Uoc2VsZi5wcm9jZXNzX251bSk6CisgICAgICAgICAgICAgICAgc3VpdGUgPSBzdWl0ZXNbaWR4XQorCisgICAgICAgICAgICAgICAgZm9yIGNhc2UgaW4gc3VpdGUuX3Rlc3RzOgorICAgICAgICAgICAgICAgICAgICBpZiBjYXNlLmlkKCkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZHgKKyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIGRlZiBfZ2V0X2Jlc3RfaWR4KHN1aXRlcyk6CisgICAgICAgICAgICBzaXplcyA9IFtsZW4oc3VpdGUuX3Rlc3RzKSBmb3Igc3VpdGUgaW4gc3VpdGVzXQorICAgICAgICAgICAgcmV0dXJuIHNpemVzLmluZGV4KG1pbihzaXplcykpCisKKyAgICAgICAgZGVmIF9maWxsX3N1aXRlcyhzdWl0ZSk6CisgICAgICAgICAgICBpZHggPSAtMQorICAgICAgICAgICAgZm9yIGNhc2UgaW4gc3VpdGU6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjYXNlLCBUZXN0U3VpdGUpOgorICAgICAgICAgICAgICAgICAgICBfZmlsbF9zdWl0ZXMoY2FzZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZHggPSBfc2VhcmNoX2Zvcl9tb2R1bGVfaWR4KHN1aXRlcywgY2FzZSkKKworICAgICAgICAgICAgICAgICAgICBkZXBlbmRzID0ge30KKyAgICAgICAgICAgICAgICAgICAgaWYgJ2RlcGVuZHMnIGluIHNlbGYudGMuX3JlZ2lzdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyA9IHNlbGYudGMuX3JlZ2lzdHJ5WydkZXBlbmRzJ10KKworICAgICAgICAgICAgICAgICAgICBpZiBpZHggPT0gLTEgYW5kIGNhc2UuaWQoKSBpbiBkZXBlbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV9kZXBlbmRzID0gZGVwZW5kc1tjYXNlLmlkKCldIAorICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gX3NlYXJjaF9mb3JfZGVwZW5kX2lkeChzdWl0ZXMsIGNhc2VfZGVwZW5kcykKKworICAgICAgICAgICAgICAgICAgICBpZiBpZHggPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBfZ2V0X2Jlc3RfaWR4KHN1aXRlcykKKworICAgICAgICAgICAgICAgICAgICBzdWl0ZXNbaWR4XS5hZGRUZXN0KGNhc2UpCisgICAgICAgIF9maWxsX3N1aXRlcyhzdWl0ZSkKKworICAgICAgICBzdWl0ZXNfdG1wID0gc3VpdGVzCisgICAgICAgIHN1aXRlcyA9IFtdCisgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXNfdG1wOgorICAgICAgICAgICAgaWYgbGVuKHN1aXRlLl90ZXN0cykgPiAwOgorICAgICAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoc3VpdGUpCisKKyAgICAgICAgcmV0dXJuIHN1aXRlcworCitjbGFzcyBPRVN0cmVhbUxvZ2dlclRocmVhZGVkKE9FU3RyZWFtTG9nZ2VyKToKKyAgICBfbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICBidWZmZXJzID0ge30KKworICAgIGRlZiB3cml0ZShzZWxmLCBtc2cpOgorICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBpZiBub3QgdGlkIGluIHNlbGYuYnVmZmVyczoKKyAgICAgICAgICAgIHNlbGYuYnVmZmVyc1t0aWRdID0gIiIKKworICAgICAgICBpZiBtc2c6CisgICAgICAgICAgICBzZWxmLmJ1ZmZlcnNbdGlkXSArPSBtc2cKKworICAgIGRlZiBmaW5pc2goc2VsZik6CisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorICAgICAgICAKKyAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnVEhSRUFEOiAlZCcgJSB0aWQpCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJy0nICogNzApCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuYnVmZmVyc1t0aWRdLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhsaW5lKQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQorCitjbGFzcyBPRVRlc3RSZXN1bHRUaHJlYWRlZEludGVybmFsKE9FVGVzdFJlc3VsdCk6CisgICAgZGVmIF90Y19tYXBfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisgICAgICAgIAorICAgICAgICAjIFB5VW5pdCBnZW5lcmF0ZXMgYSByZXN1bHQgZm9yIGV2ZXJ5IHRlc3QgbW9kdWxlIHJ1biwgdGVzdAorICAgICAgICAjIGlmIHRoZSB0aHJlYWQgYWxyZWFkeSBoYXMgYW4gZW50cnkgdG8gYXZvaWQgbG9zZSB0aGUgcHJldmlvdXMKKyAgICAgICAgIyB0ZXN0IG1vZHVsZSByZXN1bHRzLgorICAgICAgICBpZiBub3QgdGlkIGluIHNlbGYudGMuX3Jlc3VsdHM6CisgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW3RpZF0gPSB7fQorICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1t0aWRdWydmYWlsdXJlcyddID0gc2VsZi5mYWlsdXJlcworICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1t0aWRdWydlcnJvcnMnXSA9IHNlbGYuZXJyb3JzCisgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW3RpZF1bJ3NraXBwZWQnXSA9IHNlbGYuc2tpcHBlZAorICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1t0aWRdWydleHBlY3RlZEZhaWx1cmVzJ10gPSBzZWxmLmV4cGVjdGVkRmFpbHVyZXMKKworY2xhc3MgT0VUZXN0UmVzdWx0VGhyZWFkZWQob2JqZWN0KToKKyAgICBfcmVzdWx0cyA9IHt9CisgICAgX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGMpOgorICAgICAgICBzZWxmLnRjID0gdGMKKworICAgIGRlZiBfZmlsbF90Y19yZXN1bHRzKHNlbGYpOgorICAgICAgICB0aWRzID0gbGlzdChzZWxmLnRjLl9yZXN1bHRzLmtleXMoKSkKKyAgICAgICAgZmllbGRzID0gWydmYWlsdXJlcycsICdlcnJvcnMnLCAnc2tpcHBlZCcsICdleHBlY3RlZEZhaWx1cmVzJ10KKworICAgICAgICBmb3IgdGlkIGluIHRpZHM6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnRjLl9yZXN1bHRzW3RpZF0KKyAgICAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICAgICAgaWYgbm90IGZpZWxkIGluIHNlbGYudGMuX3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbZmllbGRdID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW2ZpZWxkXS5leHRlbmQocmVzdWx0W2ZpZWxkXSkKKworICAgIGRlZiBhZGRSZXN1bHQoc2VsZiwgcmVzdWx0LCBydW5fc3RhcnRfdGltZSwgcnVuX2VuZF90aW1lKToKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisKKyAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdID0ge30KKyAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydyZXN1bHQnXSA9IHJlc3VsdAorICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3J1bl9zdGFydF90aW1lJ10gPSBydW5fc3RhcnRfdGltZSAKKyAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydydW5fZW5kX3RpbWUnXSA9IHJ1bl9lbmRfdGltZSAKKyAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydyZXN1bHQnXSA9IHJlc3VsdAorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQorCisgICAgZGVmIHdhc1N1Y2Nlc3NmdWwoc2VsZik6CisgICAgICAgIHdhc1N1Y2Nlc3NmdWwgPSBUcnVlCisgICAgICAgIGZvciB0aWQgaW4gc2VsZi5fcmVzdWx0cy5rZXlzKCk6CisgICAgICAgICAgICB3YXNTdWNjZXNzZnVsID0gd2FzU3VjY2Vzc2Z1bCBhbmQgXAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3Jlc3VsdCddLndhc1N1Y2Nlc3NmdWwoKQorICAgICAgICByZXR1cm4gd2FzU3VjY2Vzc2Z1bAorCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIGZvciB0aWQgaW4gc2VsZi5fcmVzdWx0cy5rZXlzKCk6CisgICAgICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3Jlc3VsdCddLnN0b3AoKQorCisgICAgZGVmIGxvZ1N1bW1hcnkoc2VsZiwgY29tcG9uZW50LCBjb250ZXh0X21zZz0nJyk6CisgICAgICAgIGVsYXBzZWRfdGltZSA9IChzZWxmLnRjLl9ydW5fZW5kX3RpbWUgLSBzZWxmLnRjLl9ydW5fc3RhcnRfdGltZSkKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJTVU1NQVJZOiIpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIiVzICglcykgLSBSYW4gJWQgdGVzdHMgaW4gJS4zZnMiICUgKGNvbXBvbmVudCwKKyAgICAgICAgICAgIGNvbnRleHRfbXNnLCBsZW4oc2VsZi50Yy5fcmVnaXN0cnlbJ2Nhc2VzJ10pLCBlbGFwc2VkX3RpbWUpKQorICAgICAgICBpZiBzZWxmLndhc1N1Y2Nlc3NmdWwoKToKKyAgICAgICAgICAgIG1zZyA9ICIlcyAtIE9LIC0gQWxsIHJlcXVpcmVkIHRlc3RzIHBhc3NlZCIgJSBjb21wb25lbnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICIlcyAtIEZBSUwgLSBSZXF1aXJlZCB0ZXN0cyBmYWlsZWQiICUgY29tcG9uZW50CisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8obXNnKQorCisgICAgZGVmIGxvZ0RldGFpbHMoc2VsZik6CisgICAgICAgIGlmIGxpc3Qoc2VsZi5fcmVzdWx0cyk6CisgICAgICAgICAgICB0aWQgPSBsaXN0KHNlbGYuX3Jlc3VsdHMpWzBdCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9yZXN1bHRzW3RpZF1bJ3Jlc3VsdCddCisgICAgICAgICAgICByZXN1bHQubG9nRGV0YWlscygpCisKK2NsYXNzIF9Xb3JrZXIodGhyZWFkaW5nLlRocmVhZCk6CisgICAgIiIiVGhyZWFkIGV4ZWN1dGluZyB0YXNrcyBmcm9tIGEgZ2l2ZW4gdGFza3MgcXVldWUiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFza3MsIHJlc3VsdCwgc3RyZWFtKToKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLnRhc2tzID0gdGFza3MKKworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdAorICAgICAgICBzZWxmLnN0cmVhbSA9IHN0cmVhbQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmdW5jLCBhcmdzLCBrYXJncyA9IHNlbGYudGFza3MuZ2V0KGJsb2NrPUZhbHNlKQorICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBydW5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAgICAgcmMgPSBmdW5jKCphcmdzLCAqKmthcmdzKQorICAgICAgICAgICAgICAgIHJ1bl9lbmRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQuYWRkUmVzdWx0KHJjLCBydW5fc3RhcnRfdGltZSwgcnVuX2VuZF90aW1lKQorICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLmZpbmlzaCgpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcHJpbnQoZSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi50YXNrcy50YXNrX2RvbmUoKQorCitjbGFzcyBfVGhyZWFkZWRQb29sOgorICAgICIiIlBvb2wgb2YgdGhyZWFkcyBjb25zdW1pbmcgdGFza3MgZnJvbSBhIHF1ZXVlIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bV93b3JrZXJzLCBudW1fdGFza3MsIHN0cmVhbT1Ob25lLCByZXN1bHQ9Tm9uZSk6CisgICAgICAgIHNlbGYudGFza3MgPSBxdWV1ZS5RdWV1ZShudW1fdGFza3MpCisgICAgICAgIHNlbGYud29ya2VycyA9IFtdCisKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtX3dvcmtlcnMpOgorICAgICAgICAgICAgd29ya2VyID0gX1dvcmtlcihzZWxmLnRhc2tzLCByZXN1bHQsIHN0cmVhbSkKKyAgICAgICAgICAgIHNlbGYud29ya2Vycy5hcHBlbmQod29ya2VyKQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICBmb3Igd29ya2VyIGluIHNlbGYud29ya2VyczoKKyAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCisKKyAgICBkZWYgYWRkX3Rhc2soc2VsZiwgZnVuYywgKmFyZ3MsICoqa2FyZ3MpOgorICAgICAgICAiIiJBZGQgYSB0YXNrIHRvIHRoZSBxdWV1ZSIiIgorICAgICAgICBzZWxmLnRhc2tzLnB1dCgoZnVuYywgYXJncywga2FyZ3MpKQorCisgICAgZGVmIHdhaXRfY29tcGxldGlvbihzZWxmKToKKyAgICAgICAgIiIiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhbGwgdGhlIHRhc2tzIGluIHRoZSBxdWV1ZSIiIgorICAgICAgICBzZWxmLnRhc2tzLmpvaW4oKQorICAgICAgICBmb3Igd29ya2VyIGluIHNlbGYud29ya2VyczoKKyAgICAgICAgICAgIHdvcmtlci5qb2luKCkKKworY2xhc3MgT0VUZXN0UnVubmVyVGhyZWFkZWQoT0VUZXN0UnVubmVyKToKKyAgICBzdHJlYW1Mb2dnZXJDbGFzcyA9IE9FU3RyZWFtTG9nZ2VyVGhyZWFkZWQKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoT0VUZXN0UnVubmVyVGhyZWFkZWQsIHNlbGYpLl9faW5pdF9fKHRjLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYucmVzdWx0Y2xhc3MgPSBPRVRlc3RSZXN1bHRUaHJlYWRlZEludGVybmFsICMgWFhYOiBYTUwgcmVwb3J0aW5nIG92ZXJyaWRlcyBhdCBfX2luaXRfXworCisgICAgZGVmIHJ1bihzZWxmLCBzdWl0ZXMpOgorICAgICAgICByZXN1bHQgPSBPRVRlc3RSZXN1bHRUaHJlYWRlZChzZWxmLnRjKQorCisgICAgICAgIHBvb2wgPSBfVGhyZWFkZWRQb29sKGxlbihzdWl0ZXMpLCBsZW4oc3VpdGVzKSwgc3RyZWFtPXNlbGYuc3RyZWFtLAorICAgICAgICAgICAgICAgIHJlc3VsdD1yZXN1bHQpCisgICAgICAgIGZvciBzIGluIHN1aXRlczoKKyAgICAgICAgICAgIHBvb2wuYWRkX3Rhc2soc3VwZXIoT0VUZXN0UnVubmVyVGhyZWFkZWQsIHNlbGYpLnJ1biwgcykKKyAgICAgICAgcG9vbC5zdGFydCgpCisgICAgICAgIHBvb2wud2FpdF9jb21wbGV0aW9uKCkKKyAgICAgICAgcmVzdWx0Ll9maWxsX3RjX3Jlc3VsdHMoKQorCisgICAgICAgIHJldHVybiByZXN1bHQKKworY2xhc3MgT0VUZXN0Q29udGV4dFRocmVhZGVkKE9FVGVzdENvbnRleHQpOgorICAgIGxvYWRlckNsYXNzID0gT0VUZXN0TG9hZGVyVGhyZWFkZWQKKyAgICBydW5uZXJDbGFzcyA9IE9FVGVzdFJ1bm5lclRocmVhZGVkCisKKyAgICBkZWYgbG9hZFRlc3RzKHNlbGYsIG1vZHVsZV9wYXRocywgbW9kdWxlcz1bXSwgdGVzdHM9W10sCisgICAgICAgICAgICBtb2R1bGVzX21hbmlmZXN0PSIiLCBtb2R1bGVzX3JlcXVpcmVkPVtdLCBmaWx0ZXJzPXt9LCBwcm9jZXNzX251bT0wKToKKyAgICAgICAgaWYgbW9kdWxlc19tYW5pZmVzdDoKKyAgICAgICAgICAgIG1vZHVsZXMgPSBzZWxmLl9yZWFkX21vZHVsZXNfZnJvbV9tYW5pZmVzdChtb2R1bGVzX21hbmlmZXN0KQorCisgICAgICAgIHNlbGYubG9hZGVyID0gc2VsZi5sb2FkZXJDbGFzcyhzZWxmLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXMsIHRlc3RzLAorICAgICAgICAgICAgICAgIG1vZHVsZXNfcmVxdWlyZWQsIGZpbHRlcnMsIHByb2Nlc3NfbnVtKQorICAgICAgICBzZWxmLnN1aXRlcyA9IHNlbGYubG9hZGVyLmRpc2NvdmVyKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZS5weQppbmRleCBjMTQ4NWM5Li4yZjE5MGFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlLnB5CkBAIC04LDEwICs4LDEwIEBACiAgICAgIyB0YXJnZXQgaW5zdGFuY2Ugc2V0IGJ5IE9FUnVudGltZVRlc3RMb2FkZXIuCiAgICAgdGFyZ2V0ID0gTm9uZQogCi0gICAgZGVmIF9vZVNldFVwKHNlbGYpOgotICAgICAgICBzdXBlcihPRVJ1bnRpbWVUZXN0Q2FzZSwgc2VsZikuX29lU2V0VXAoKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoT0VSdW50aW1lVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKICAgICAgICAgaW5zdGFsbF9wYWNrYWdlKHNlbGYpCiAKLSAgICBkZWYgX29lVGVhckRvd24oc2VsZik6Ci0gICAgICAgIHN1cGVyKE9FUnVudGltZVRlc3RDYXNlLCBzZWxmKS5fb2VUZWFyRG93bigpCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzdXBlcihPRVJ1bnRpbWVUZXN0Q2FzZSwgc2VsZikudGVhckRvd24oKQogICAgICAgICB1bmluc3RhbGxfcGFja2FnZShzZWxmKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9fcHRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL19wdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlZDlhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL19wdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCi1mcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECi1mcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RGF0YVZhciwgc2tpcElmTm90RmVhdHVyZQotZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQotCi1mcm9tIG9lcWEucnVudGltZS5jYXNlcy5kbmYgaW1wb3J0IERuZlRlc3QKLWZyb20gb2VxYS51dGlscy5sb2dwYXJzZXIgaW1wb3J0ICoKLWZyb20gb2VxYS51dGlscy5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQotCi1jbGFzcyBQdGVzdFJ1bm5lclRlc3QoRG5mVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBycG1fZGVwbG95ID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUiddLCAncnBtJykKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2UocnBtX2RlcGxveSwgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXApCi0gICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RvcCgpCi0KLSAgICAjIGEgcHRlc3QgbG9nIHBhcnNlcgotICAgIGRlZiBwYXJzZV9wdGVzdChzZWxmLCBsb2dmaWxlKToKLSAgICAgICAgcGFyc2VyID0gTHBhcnNlcih0ZXN0XzBfcGFzc19yZWdleD0iXlBBU1M6KC4rKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF8wX2ZhaWxfcmVnZXg9Il5GQUlMOiguKykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25fMF9iZWdpbl9yZWdleD0iXkJFR0lOOiAuKi8oLispL3B0ZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uXzBfZW5kX3JlZ2V4PSJeRU5EOiAuKi8oLispL3B0ZXN0IikKLSAgICAgICAgcGFyc2VyLmluaXQoKQotICAgICAgICByZXN1bHQgPSBSZXN1bHQoKQotCi0gICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCBlcnJvcnM9J3JlcGxhY2UnKSBhcyBmOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICByZXN1bHRfdHVwbGUgPSBwYXJzZXIucGFyc2VfbGluZShsaW5lKQotICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfdHVwbGU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmVzdWx0X3R1cGxlID0gbGluZV90eXBlLCBjYXRlZ29yeSwgc3RhdHVzLCBuYW1lID0gcGFyc2VyLnBhcnNlX2xpbmUobGluZSkKLQotICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAnc2VjdGlvbicgYW5kIHN0YXR1cyA9PSAnYmVnaW4nOgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3NlY3Rpb24nIGFuZCBzdGF0dXMgPT0gJ2VuZCc6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvbiA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAndGVzdCcgYW5kIHN0YXR1cyA9PSAncGFzcyc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yZShjdXJyZW50X3NlY3Rpb24sIG5hbWUsIHN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAndGVzdCcgYW5kIHN0YXR1cyA9PSAnZmFpbCc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yZShjdXJyZW50X3NlY3Rpb24sIG5hbWUsIHN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICByZXN1bHQuc29ydF90ZXN0cygpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBfaW5zdGFsbF9wdGVzdF9wYWNrYWdlcyhzZWxmKToKLSAgICAgICAgIyBHZXQgcHRlc3QgcGFja2FnZXMgdGhhdCBjYW4gYmUgaW5zdGFsbGVkIGluIHRoZSBpbWFnZS4KLSAgICAgICAgcGFja2FnZXNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGMudGRbJ0RFUExPWV9ESVInXSwgJ3JwbScpCi0gICAgICAgIHB0ZXN0X3BrZ3MgPSBbcGtnWzpwa2cuZmluZCgnLXB0ZXN0JykrNl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8sIF8sIGZpbGVuYW1lcyBpbiBvcy53YWxrKHBhY2thZ2VzX2RpcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBmaWxlbmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3B0ZXN0JyBpbiBwa2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHBrZ1s6cGtnLmZpbmQoJy1wdGVzdCcpXSBpbiBzZWxmLnRjLmltYWdlX3BhY2thZ2VzXQotCi0gICAgICAgIHJlcG9fdXJsID0gJ2h0dHA6Ly8lczolcycgJSAoc2VsZi50YXJnZXQuc2VydmVyX2lwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVwb19zZXJ2ZXIucG9ydCkKLSAgICAgICAgZG5mX29wdGlvbnMgPSAoJy0tcmVwb2Zyb21wYXRoPW9lLXB0ZXN0LXJlcG8sJXMgJwotICAgICAgICAgICAgICAgICAgICAgICAnLS1ub2dwZ2NoZWNrICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGwgLXknICUgcmVwb191cmwpCi0gICAgICAgIHNlbGYuZG5mKCclcyAlcyBwdGVzdC1ydW5uZXInICUgKGRuZl9vcHRpb25zLCAnICcuam9pbihwdGVzdF9wa2dzKSkpCi0KLSAgICBAc2tpcElmTm90RmVhdHVyZSgncGFja2FnZS1tYW5hZ2VtZW50JywKLSAgICAgICAgICAgICAgICAgICAgICAnVGVzdCByZXF1aXJlcyBwYWNrYWdlLW1hbmFnZW1lbnQgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKLSAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHBhY2thZ2UtbWFuYWdlbWVudCB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMnKQotICAgIEBza2lwSWZOb3REYXRhVmFyKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsCi0gICAgICAgICAgICAgICAgICAgICAgJ1JQTSBpcyBub3QgdGhlIHByaW1hcnkgcGFja2FnZSBtYW5hZ2VyJykKLSAgICBAT0VIYXNQYWNrYWdlKFsnZG5mJ10pCi0gICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQotICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyKHNlbGYpOgotICAgICAgICBzZWxmLnB0ZXN0X2xvZyA9IG9zLnBhdGguam9pbihzZWxmLnRjLnRkWydURVNUX0xPR19ESVInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B0ZXN0LSVzLmxvZycgJSBzZWxmLnRjLnRkWydEQVRFVElNRSddKQotICAgICAgICBzZWxmLl9pbnN0YWxsX3B0ZXN0X3BhY2thZ2VzKCkKLQotICAgICAgICAocnVubmVyc3RhdHVzLCByZXN1bHQpID0gc2VsZi50YXJnZXQucnVuKCcvdXNyL2Jpbi9wdGVzdC1ydW5uZXIgPiAvdG1wL3B0ZXN0LmxvZyAyPiYxJywgMCkKLSAgICAgICAgI2V4aXQgY29kZSBpcyAhPTAgZXZlbiBpZiBwdGVzdC1ydW5uZXIgZXhlY3V0ZXMgYmVjYXVzZSBzb21lIHB0ZXN0IHRlc3RzIGZhaWwuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5uZXJzdGF0dXMgIT0gMTI3LCBtc2c9IkNhbm5vdCBleGVjdXRlIHB0ZXN0LXJ1bm5lciEiKQotICAgICAgICBzZWxmLnRhcmdldC5jb3B5RnJvbSgnL3RtcC9wdGVzdC5sb2cnLCBzZWxmLnB0ZXN0X2xvZykKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYucHRlc3RfbG9nLCAicHRlc3QubG9nIikKLQotICAgICAgICByZXN1bHQgPSBzZWxmLnBhcnNlX3B0ZXN0KCJwdGVzdC5sb2ciKQotICAgICAgICBsb2dfcmVzdWx0c190b19sb2NhdGlvbiA9ICIuL3Jlc3VsdHMiCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvZ19yZXN1bHRzX3RvX2xvY2F0aW9uKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobG9nX3Jlc3VsdHNfdG9fbG9jYXRpb24pCi0gICAgICAgIG9zLm1ha2VkaXJzKGxvZ19yZXN1bHRzX3RvX2xvY2F0aW9uKQotCi0gICAgICAgIHJlc3VsdC5sb2dfYXNfZmlsZXMobG9nX3Jlc3VsdHNfdG9fbG9jYXRpb24sIHRlc3Rfc3RhdHVzID0gWydwYXNzJywnZmFpbCddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQppbmRleCA1OWVkYzljLi43OWIyMmQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQpAQCAtOSw4ICs5LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIHVyaSA9ICdodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvJwotICAgICAgICB1cmkgPSAnJXMvY3Bpby0yLjEyLnRhci5iejInICUgdXJpCisgICAgICAgIHVyaSA9ICdodHRwczovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2NwaW8tMi4xMi50YXIuZ3onCiAgICAgICAgIGNscy5wcm9qZWN0ID0gVGFyZ2V0QnVpbGRQcm9qZWN0KGNscy50Yy50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGxfZGlyID0gY2xzLnRjLnRkWydETF9ESVInXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKaW5kZXggNmU5Mjk0Ni4uMWYzNmM2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKQEAgLTg2LDkgKzg2LDExIEBACiAgICAgJ3FlbXVtaXBzJyA6IFsKICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIG1vZHVsZSAiZ2x4IicsCiAgICAgICAgICdwY2kgMDAwMDowMDowMC4wOiBbRmlybXdhcmUgQnVnXTogcmVnIDB4Li46IGludmFsaWQgQkFSIChjYW5cJ3Qgc2l6ZSknLAorICAgICAgICAnY2FjaGVpbmZvOiBGYWlsZWQgdG8gZmluZCBjcHUwIGRldmljZSBub2RlJywKICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiAgICAgJ3FlbXVtaXBzNjQnIDogWwogICAgICAgICAncGNpIDAwMDA6MDA6MDAuMDogW0Zpcm13YXJlIEJ1Z106IHJlZyAweC4uOiBpbnZhbGlkIEJBUiAoY2FuXCd0IHNpemUpJywKKyAgICAgICAgJ2NhY2hlaW5mbzogRmFpbGVkIHRvIGZpbmQgY3B1MCBkZXZpY2Ugbm9kZScsCiAgICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKICAgICAncWVtdXBwYycgOiBbCiAgICAgICAgICdQQ0kgMDAwMDowMCBDYW5ub3QgcmVzZXJ2ZSBMZWdhY3kgSU8gW2lvICAweDAwMDAtMHgwZmZmXScsCkBAIC0xNTEsNiArMTUzLDggQEAKICAgICAgICAgJ2ZhaWxlZCB0byByZWFkIG91dCB0aGVybWFsIHpvbmUnLAogICAgICAgICAnQmx1ZXRvb3RoOiBoY2kwOiBTZXR0aW5nIEludGVsIGV2ZW50IG1hc2sgZmFpbGVkJywKICAgICAgICAgJ3R0eVMyIC0gZmFpbGVkIHRvIHJlcXVlc3QgRE1BJywKKyAgICAgICAgJ0JsdWV0b290aDogaGNpMDogRmFpbGVkIHRvIHNlbmQgZmlybXdhcmUgZGF0YSAoLTM4KScsCisgICAgICAgICdhdGtiZCBzZXJpbzA6IEZhaWxlZCB0byBlbmFibGUga2V5Ym9hcmQgb24gaXNhMDA2MC9zZXJpbzAnLAogICAgICAgICBdICsgeDg2X2NvbW1vbiwKICAgICAnY3Jvd25iYXknIDogeDg2X2NvbW1vbiwKICAgICAnZ2VuZXJpY3g4NicgOiB4ODZfY29tbW9uLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM4YzAzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKQEAgLTAsMCArMSw4MiBAQAorZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3RGZWF0dXJlCitmcm9tIG9lcWEudXRpbHMubG9ncGFyc2VyIGltcG9ydCBMcGFyc2VyLCBSZXN1bHQKKworY2xhc3MgUHRlc3RSdW5uZXJUZXN0KE9FUnVudGltZVRlc3RDYXNlKToKKworICAgICMgYSBwdGVzdCBsb2cgcGFyc2VyCisgICAgZGVmIHBhcnNlX3B0ZXN0KHNlbGYsIGxvZ2ZpbGUpOgorICAgICAgICBwYXJzZXIgPSBMcGFyc2VyKHRlc3RfMF9wYXNzX3JlZ2V4PSJeUEFTUzooLispIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XzBfZmFpbF9yZWdleD0iXkZBSUw6KC4rKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF8wX3NraXBfcmVnZXg9Il5TS0lQOiguKykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25fMF9iZWdpbl9yZWdleD0iXkJFR0lOOiAuKi8oLispL3B0ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uXzBfZW5kX3JlZ2V4PSJeRU5EOiAuKi8oLispL3B0ZXN0IikKKyAgICAgICAgcGFyc2VyLmluaXQoKQorICAgICAgICByZXN1bHQgPSBSZXN1bHQoKQorCisgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCBlcnJvcnM9J3JlcGxhY2UnKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICByZXN1bHRfdHVwbGUgPSBwYXJzZXIucGFyc2VfbGluZShsaW5lKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfdHVwbGU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcmVzdWx0X3R1cGxlID0gbGluZV90eXBlLCBjYXRlZ29yeSwgc3RhdHVzLCBuYW1lID0gcGFyc2VyLnBhcnNlX2xpbmUobGluZSkKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAnc2VjdGlvbicgYW5kIHN0YXR1cyA9PSAnYmVnaW4nOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSBuYW1lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3NlY3Rpb24nIGFuZCBzdGF0dXMgPT0gJ2VuZCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvbiA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAndGVzdCcgYW5kIHN0YXR1cyA9PSAncGFzcyc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yZShjdXJyZW50X3NlY3Rpb24sIG5hbWUsIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAndGVzdCcgYW5kIHN0YXR1cyA9PSAnZmFpbCc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yZShjdXJyZW50X3NlY3Rpb24sIG5hbWUsIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAndGVzdCcgYW5kIHN0YXR1cyA9PSAnc2tpcCc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdG9yZShjdXJyZW50X3NlY3Rpb24sIG5hbWUsIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZXN1bHQuc29ydF90ZXN0cygpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIEBPRVRlc3RJRCgxNjAwKQorICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwdGVzdCcsICdUZXN0IHJlcXVpcmVzIHB0ZXN0IHRvIGJlIGluIERJU1RST19GRUFUVVJFUycpCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0LXBrZ3MnLCAnVGVzdCByZXF1aXJlcyBwdGVzdC1wa2dzIHRvIGJlIGluIElNQUdFX0ZFQVRVUkVTJykKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgZGVmIHRlc3RfcHRlc3RydW5uZXIoc2VsZik6CisgICAgICAgIGltcG9ydCBkYXRldGltZQorCisgICAgICAgIHRlc3RfbG9nX2RpciA9IHNlbGYudGQuZ2V0KCdURVNUX0xPR19ESVInLCAnJykKKyAgICAgICAgIyBUaGUgVEVTVF9MT0dfRElSIG1heWJlIE5VTEwgd2hlbiB0ZXN0aW1hZ2UgaXMgYWRkZWQgYWZ0ZXIKKyAgICAgICAgIyB0ZXN0ZGF0YS5qc29uIGlzIGdlbmVyYXRlZC4KKyAgICAgICAgaWYgbm90IHRlc3RfbG9nX2RpcjoKKyAgICAgICAgICAgIHRlc3RfbG9nX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRkLmdldCgnV09SS0RJUicsICcnKSwgJ3Rlc3RpbWFnZScpCisgICAgICAgICMgRG9uJ3QgdXNlIHNlbGYudGQuZ2V0KCdEQVRFVElNRScpLCBpdCdzIGZyb20gdGVzdGRhdGEuanNvbiwgbm90CisgICAgICAgICMgdXAtdG8tZGF0ZSwgYW5kIG1heSBjYXVzZSAiRmlsZSBleGlzdHMiIHdoZW4gcmUtcmV1bi4KKyAgICAgICAgZGF0ZXRpbWUgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykKKyAgICAgICAgcHRlc3RfbG9nX2Rpcl9saW5rID0gb3MucGF0aC5qb2luKHRlc3RfbG9nX2RpciwgJ3B0ZXN0X2xvZycpCisgICAgICAgIHB0ZXN0X2xvZ19kaXIgPSAnJXMuJXMnICUgKHB0ZXN0X2xvZ19kaXJfbGluaywgZGF0ZXRpbWUpCisgICAgICAgIHB0ZXN0X3J1bm5lcl9sb2cgPSBvcy5wYXRoLmpvaW4ocHRlc3RfbG9nX2RpciwgJ3B0ZXN0LXJ1bm5lci5sb2cnKQorCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdwdGVzdC1ydW5uZXInLCAwKQorICAgICAgICBvcy5tYWtlZGlycyhwdGVzdF9sb2dfZGlyKQorICAgICAgICB3aXRoIG9wZW4ocHRlc3RfcnVubmVyX2xvZywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShvdXRwdXQpCisKKyAgICAgICAgIyBzdGF0dXMgIT0gMCBpcyBPSyBzaW5jZSBzb21lIHB0ZXN0IHRlc3RzIG1heSBmYWlsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0dXMgIT0gMTI3LCBtc2c9IkNhbm5vdCBleGVjdXRlIHB0ZXN0LXJ1bm5lciEiKQorCisgICAgICAgICMgUGFyc2UgYW5kIHNhdmUgcmVzdWx0cworICAgICAgICBwYXJzZV9yZXN1bHQgPSBzZWxmLnBhcnNlX3B0ZXN0KHB0ZXN0X3J1bm5lcl9sb2cpCisgICAgICAgIHBhcnNlX3Jlc3VsdC5sb2dfYXNfZmlsZXMocHRlc3RfbG9nX2RpciwgdGVzdF9zdGF0dXMgPSBbJ3Bhc3MnLCdmYWlsJywgJ3NraXAnXSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocHRlc3RfbG9nX2Rpcl9saW5rKToKKyAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBvbGQgbGluayB0byBjcmVhdGUgYSBuZXcgb25lCisgICAgICAgICAgICBvcy5yZW1vdmUocHRlc3RfbG9nX2Rpcl9saW5rKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUocHRlc3RfbG9nX2RpciksIHB0ZXN0X2xvZ19kaXJfbGluaykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQppbmRleCBjNGNkNzZjLi4wMjk0MDAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CkBAIC05Miw2ICs5MiwxMiBAQAogICAgIGRlZiBnZXRUYXJnZXQodGFyZ2V0X3R5cGUsIGxvZ2dlciwgdGFyZ2V0X2lwLCBzZXJ2ZXJfaXAsICoqa3dhcmdzKToKICAgICAgICAgdGFyZ2V0ID0gTm9uZQogCisgICAgICAgIGlmIHRhcmdldF9pcDoKKyAgICAgICAgICAgIHRhcmdldF9pcF9wb3J0ID0gdGFyZ2V0X2lwLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGlmIGxlbih0YXJnZXRfaXBfcG9ydCkgPT0gMjoKKyAgICAgICAgICAgICAgICB0YXJnZXRfaXAgPSB0YXJnZXRfaXBfcG9ydFswXQorICAgICAgICAgICAgICAgIGt3YXJnc1sncG9ydCddID0gdGFyZ2V0X2lwX3BvcnRbMV0KKwogICAgICAgICBpZiB0YXJnZXRfdHlwZSA9PSAnc2ltcGxlcmVtb3RlJzoKICAgICAgICAgICAgIHRhcmdldCA9IE9FU1NIVGFyZ2V0KGxvZ2dlciwgdGFyZ2V0X2lwLCBzZXJ2ZXJfaXAsICoqa3dhcmdzKQogICAgICAgICBlbGlmIHRhcmdldF90eXBlID09ICdxZW11JzoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGdhbGN1bGF0b3IucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CmluZGV4IDQyZThkZGIuLjc4MGFmY2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGdhbGN1bGF0b3IucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQpAQCAtOCw3ICs4LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ3RrKzMiKSBvclwKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImd0a1wrMyIpIG9yXAogICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgibGliZ3RrLTMuMCIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJHYWxjdWxhdG9yVGVzdCBjbGFzczogU0RLIGRvbid0IHN1cHBvcnQgZ3RrKzMiKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQppbmRleCAyYTUzYjc4Li4zYTg5Y2U4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGx6aXAucHkKQEAgLTE3LDcgKzE3LDggQEAKIAogICAgICAgICBtYWNoaW5lID0gc2VsZi50ZC5nZXQoIk1BQ0hJTkUiKQogCi0gICAgICAgIGlmIG5vdCBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJXMiICUgbWFjaGluZSk6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJXMiICUgbWFjaGluZSkgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImdjYyIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJTREsgZG9lc24ndCBjb250YWluIGEgY3Jvc3MtY2FuYWRpYW4gdG9vbGNoYWluIikKIAogICAgIGRlZiB0ZXN0X2x6aXAoc2VsZik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZ2NjLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQppbmRleCA3NGFkMmEyLi5kMTFmNGI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZ2NjLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKQEAgLTE4LDcgKzE4LDggQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgbWFjaGluZSA9IHNlbGYudGQuZ2V0KCJNQUNISU5FIikKLSAgICAgICAgaWYgbm90IHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ2NjIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkdjY0NvbXBpbGVUZXN0IGNsYXNzOiBTREsgZG9lc24ndCBjb250YWluIGEgY3Jvc3MtY2FuYWRpYW4gdG9vbGNoYWluIikKIAogICAgIGRlZiB0ZXN0X2djY19jb21waWxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weQppbmRleCBlMWJkZWQyLi44MDg1Njc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weQpAQCAtOCw3ICs4LDggQEAKIGNsYXNzIFBlcmxUZXN0KE9FU0RLVGVzdENhc2UpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLXBlcmwiKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcGVybCIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicGVybC1uYXRpdmUiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm8gcGVybCBwYWNrYWdlIGluIHRoZSBTREsiKQogCiAgICAgICAgIGZvciBmIGluIFsndGVzdC5wbCddOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9weXRob24ucHkKaW5kZXggOTRhMjk2Zi4uNzJkZmNjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CkBAIC04LDcgKzgsOCBAQAogY2xhc3MgUHl0aG9uVGVzdChPRVNES1Rlc3RDYXNlKToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1weXRob24iKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcHl0aG9uIikgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJweXRob24tbmF0aXZlIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vIHB5dGhvbiBwYWNrYWdlIGluIHRoZSBTREsiKQogCiAgICAgICAgIGZvciBmIGluIFsndGVzdC5weSddOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQppbmRleCAwMTg5ZWQ4Li5iM2Q3Yzc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQpAQCAtNiw5ICs2LDEwIEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IHJlCiAKLWZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQsIE9FVGVzdENvbnRleHRFeGVjdXRvcgorZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCitmcm9tIG9lcWEuY29yZS50aHJlYWRlZCBpbXBvcnQgT0VUZXN0Q29udGV4dFRocmVhZGVkCiAKLWNsYXNzIE9FU0RLVGVzdENvbnRleHQoT0VUZXN0Q29udGV4dCk6CitjbGFzcyBPRVNES1Rlc3RDb250ZXh0KE9FVGVzdENvbnRleHRUaHJlYWRlZCk6CiAgICAgc2RrX2ZpbGVzX2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSksICJmaWxlcyIpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGQ9Tm9uZSwgbG9nZ2VyPU5vbmUsIHNka19kaXI9Tm9uZSwgc2RrX2Vudj1Ob25lLApAQCAtNDQsOCArNDUsNiBAQAogICAgIGRlZmF1bHRfdGVzdF9kYXRhID0gTm9uZQogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIGxvZ2dlciwgc3VicGFyc2Vycyk6Ci0gICAgICAgIGltcG9ydCBhcmdwYXJzZV9vZQotCiAgICAgICAgIHN1cGVyKE9FU0RLVGVzdENvbnRleHRFeGVjdXRvciwgc2VsZikucmVnaXN0ZXJfY29tbWFuZHMobG9nZ2VyLCBzdWJwYXJzZXJzKQogCiAgICAgICAgIHNka19ncm91cCA9IHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnc2RrIG9wdGlvbnMnKQpAQCAtMTA5LDYgKzEwOCw4IEBACiAgICAgICAgICAgICBsb2coZW52KQogCiAgICAgZGVmIHJ1bihzZWxmLCBsb2dnZXIsIGFyZ3MpOgorICAgICAgICBpbXBvcnQgYXJncGFyc2Vfb2UKKwogICAgICAgICBpZiBub3QgYXJncy5zZGtfZGlyOgogICAgICAgICAgICAgcmFpc2UgYXJncGFyc2Vfb2UuQXJndW1lbnRVc2FnZUVycm9yKCJObyBTREsgZGlyZWN0b3J5ICJcCiAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCBwbGVhc2UgZG8sIC0tc2RrLWRpciBTREtfRElSIiwgc2VsZi5uYW1lKQpAQCAtMTI4LDYgKzEyOSw2IEBACiAgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50ICglcykgc3BlY2lmaWVkIiAlIGFyZ3Muc2RrX2Vudiwgc2VsZi5uYW1lKQogCiAgICAgICAgIHNlbGYuc2RrX2VudiA9IHNka19lbnZzW2FyZ3Muc2RrX2Vudl0KLSAgICAgICAgc3VwZXIoT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLCBzZWxmKS5ydW4obG9nZ2VyLCBhcmdzKQorICAgICAgICByZXR1cm4gc3VwZXIoT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLCBzZWxmKS5ydW4obG9nZ2VyLCBhcmdzKQogCiBfZXhlY3V0b3JfY2xhc3MgPSBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggYTAxYmMwYi4uZWE5MDUxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTEsMTIgKzEsMTQgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQogCitpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gb2VxYS5zZGtleHQuY2FzZSBpbXBvcnQgT0VTREtFeHRUZXN0Q2FzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCiAKIGNsYXNzIERldnRvb2xUZXN0KE9FU0RLRXh0VGVzdENhc2UpOgogICAgIEBjbGFzc21ldGhvZApAQCAtOTUsMyArOTcsMzMgQEAKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBidWlsZCAlcyAnICUgcGFja2FnZV9ub2RlanMpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgcmVzZXQgJXMgJyUgcGFja2FnZV9ub2RlanMpCisKK2NsYXNzIFNka1VwZGF0ZVRlc3QoT0VTREtFeHRUZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYucHVibGlzaF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtfZGlyLCAnZXNka19wdWJsaXNoJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5wdWJsaXNoX2Rpcik6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucHVibGlzaF9kaXIpCisgICAgICAgIG9zLm1rZGlyKHNlbGYucHVibGlzaF9kaXIpCisKKyAgICAgICAgYmFzZV90Y25hbWUgPSAiJXMvJXMiICUgKHNlbGYudGQuZ2V0KCJTREtfREVQTE9ZIiwgJycpLAorICAgICAgICAgICAgc2VsZi50ZC5nZXQoIlRPT0xDSEFJTkVYVF9PVVRQVVROQU1FIiwgJycpKQorICAgICAgICB0Y25hbWVfbmV3ID0gIiVzLW5ldy5zaCIgJSBiYXNlX3RjbmFtZQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGNuYW1lX25ldyk6CisgICAgICAgICAgICB0Y25hbWVfbmV3ID0gIiVzLnNoIiAlIGJhc2VfdGNuYW1lCisKKyAgICAgICAgY21kID0gJ29lLXB1Ymxpc2gtc2RrICVzICVzJyAlICh0Y25hbWVfbmV3LCBzZWxmLnB1Ymxpc2hfZGlyKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpCisKKyAgICAgICAgc2VsZi5odHRwX3NlcnZpY2UgPSBIVFRQU2VydmljZShzZWxmLnB1Ymxpc2hfZGlyKQorICAgICAgICBzZWxmLmh0dHBfc2VydmljZS5zdGFydCgpCisKKyAgICAgICAgc2VsZi5odHRwX3VybCA9ICJodHRwOi8vMTI3LjAuMC4xOiVkIiAlIHNlbGYuaHR0cF9zZXJ2aWNlLnBvcnQKKworICAgIGRlZiB0ZXN0X3Nka191cGRhdGVfaHR0cChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCJkZXZ0b29sIHNkay11cGRhdGUgXCIlc1wiIiAlIHNlbGYuaHR0cF91cmwpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5odHRwX3NlcnZpY2Uuc3RvcCgpCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wdWJsaXNoX2RpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9zZGtfdXBkYXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL3Nka191cGRhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmODU5OGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL3Nka191cGRhdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIG9lcWEuc2RrZXh0LmNhc2UgaW1wb3J0IE9FU0RLRXh0VGVzdENhc2UKLWZyb20gb2VxYS51dGlscy5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQotCi1jbGFzcyBTZGtVcGRhdGVUZXN0KE9FU0RLRXh0VGVzdENhc2UpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBzZWxmLnB1Ymxpc2hfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGMuc2RrX2RpciwgJ2VzZGtfcHVibGlzaCcpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucHVibGlzaF9kaXIpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnB1Ymxpc2hfZGlyKQotICAgICAgICBvcy5ta2RpcihzZWxmLnB1Ymxpc2hfZGlyKQotCi0gICAgICAgIGJhc2VfdGNuYW1lID0gIiVzLyVzIiAlIChzZWxmLnRkLmdldCgiU0RLX0RFUExPWSIsICcnKSwKLSAgICAgICAgICAgIHNlbGYudGQuZ2V0KCJUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSIsICcnKSkKLSAgICAgICAgdGNuYW1lX25ldyA9ICIlcy1uZXcuc2giICUgYmFzZV90Y25hbWUKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRjbmFtZV9uZXcpOgotICAgICAgICAgICAgdGNuYW1lX25ldyA9ICIlcy5zaCIgJSBiYXNlX3RjbmFtZQotCi0gICAgICAgIGNtZCA9ICdvZS1wdWJsaXNoLXNkayAlcyAlcycgJSAodGNuYW1lX25ldywgc2VsZi5wdWJsaXNoX2RpcikKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKQotCi0gICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlID0gSFRUUFNlcnZpY2Uoc2VsZi5wdWJsaXNoX2RpcikKLSAgICAgICAgc2VsZi5odHRwX3NlcnZpY2Uuc3RhcnQoKQotCi0gICAgICAgIHNlbGYuaHR0cF91cmwgPSAiaHR0cDovLzEyNy4wLjAuMTolZCIgJSBzZWxmLmh0dHBfc2VydmljZS5wb3J0Ci0KLSAgICBkZWYgdGVzdF9zZGtfdXBkYXRlX2h0dHAoc2VsZik6Ci0gICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bigiZGV2dG9vbCBzZGstdXBkYXRlIFwiJXNcIiIgJSBzZWxmLmh0dHBfdXJsKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlLnN0b3AoKQotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucHVibGlzaF9kaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWQ5NTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1mcm9tIHBrZ3V0aWwgaW1wb3J0IGV4dGVuZF9wYXRoCi1fX3BhdGhfXyA9IGV4dGVuZF9wYXRoKF9fcGF0aF9fLCBfX25hbWVfXykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19zc3RhdGV0ZXN0c19ub2F1dG8ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fc3N0YXRldGVzdHNfbm9hdXRvLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzlhZTdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19zc3RhdGV0ZXN0c19ub2F1dG8ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgotZnJvbSBvZXFhLnNlbGZ0ZXN0LnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQotCi0KLWNsYXNzIFJlYnVpbGRGcm9tU1N0YXRlKFNTdGF0ZUJhc2UpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYnVpbGRkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJykpCi0KLSAgICBkZWYgZ2V0X2RlcF90YXJnZXRzKHNlbGYsIHByaW1hcnlfdGFyZ2V0cyk6Ci0gICAgICAgIGZvdW5kX3RhcmdldHMgPSBbXQotICAgICAgICBiaXRiYWtlKCItZyAiICsgJyAnLmpvaW4obWFwKHN0ciwgcHJpbWFyeV90YXJnZXRzKSkpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3BuLWJ1aWxkbGlzdCcpLCAncicpIGFzIHBuZmlsZToKLSAgICAgICAgICAgIGZvdW5kX3RhcmdldHMgPSBwbmZpbGUucmVhZCgpLnNwbGl0bGluZXMoKQotICAgICAgICByZXR1cm4gZm91bmRfdGFyZ2V0cwotCi0gICAgZGVmIGNvbmZpZ3VyZV9idWlsZGRpcihzZWxmLCBidWlsZGRpcik6Ci0gICAgICAgIG9zLm1rZGlyKGJ1aWxkZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGJ1aWxkZGlyKQotICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mJykpCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2xvY2FsLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9sb2NhbC5jb25mJykpCi0gICAgICAgIGNvbmZpZyA9IHt9Ci0gICAgICAgIGNvbmZpZ1snZGVmYXVsdF9zc3RhdGVfZGlyJ10gPSAiU1NUQVRFX0RJUiA/PSBcIiR7VE9QRElSfS9zc3RhdGUtY2FjaGVcIiIKLSAgICAgICAgY29uZmlnWydudWxsX3NzdGF0ZV9taXJyb3JzJ10gPSAiU1NUQVRFX01JUlJPUlMgPSBcIlwiIgotICAgICAgICBjb25maWdbJ2RlZmF1bHRfdG1wX2RpciddID0gIlRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcFwiIgotICAgICAgICBmb3Iga2V5IGluIGNvbmZpZzoKLSAgICAgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL3NlbGZ0ZXN0LmluYycpLCBjb25maWdba2V5XSkKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvYmJsYXllcnMuY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2JibGF5ZXJzLmNvbmYnKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvYXV0by5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvYXV0by5jb25mJykpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBoYXJkbGlua190cmVlKHNlbGYsIHNyYywgZHN0KToKLSAgICAgICAgb3MubWtkaXIoZHN0KQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdCkKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjKToKLSAgICAgICAgICAgIGlmIHJvb3QgPT0gc3JjOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZHN0LCByb290LnNwbGl0KHNyYylbMV1bMTpdKSkKLSAgICAgICAgICAgIGZvciBzc3RhdGVfZmlsZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy5saW5rKG9zLnBhdGguam9pbihyb290LCBzc3RhdGVfZmlsZSksIG9zLnBhdGguam9pbihkc3QsIHJvb3Quc3BsaXQoc3JjKVsxXVsxOl0sIHNzdGF0ZV9maWxlKSkKLQotICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfcmVidWlsZChzZWxmLCBwcmltYXJ5X3RhcmdldHMsIHJlbG9jYXRlPUZhbHNlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1GYWxzZSk6Ci0gICAgICAgIGJ1aWxkQSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnYnVpbGRBJykKLSAgICAgICAgaWYgcmVsb2NhdGU6Ci0gICAgICAgICAgICBidWlsZEIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2J1aWxkQicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBidWlsZEIgPSBidWlsZEEKLQotICAgICAgICBpZiByZWJ1aWxkX2RlcGVuZGVuY2llczoKLSAgICAgICAgICAgIHJlYnVpbGRfdGFyZ2V0cyA9IHNlbGYuZ2V0X2RlcF90YXJnZXRzKHByaW1hcnlfdGFyZ2V0cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlYnVpbGRfdGFyZ2V0cyA9IHByaW1hcnlfdGFyZ2V0cwotCi0gICAgICAgIHNlbGYuY29uZmlndXJlX2J1aWxkZGlyKGJ1aWxkQSkKLSAgICAgICAgcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQSkpICsgJ2JpdGJha2UgICcgKyAnICcuam9pbihtYXAoc3RyLCBwcmltYXJ5X3RhcmdldHMpKSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKLSAgICAgICAgc2VsZi5oYXJkbGlua190cmVlKG9zLnBhdGguam9pbihidWlsZEEsICdzc3RhdGUtY2FjaGUnKSwgb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdzc3RhdGUtY2FjaGUtYnVpbGRBJykpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRBKQotCi0gICAgICAgIGZhaWxlZF9yZWJ1aWxkID0gW10KLSAgICAgICAgZmFpbGVkX2NsZWFuc3N0YXRlID0gW10KLSAgICAgICAgZm9yIHRhcmdldCBpbiByZWJ1aWxkX3RhcmdldHM6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9idWlsZGRpcihidWlsZEIpCi0gICAgICAgICAgICBzZWxmLmhhcmRsaW5rX3RyZWUob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdzc3RhdGUtY2FjaGUtYnVpbGRBJyksIG9zLnBhdGguam9pbihidWlsZEIsICdzc3RhdGUtY2FjaGUnKSkKLQotICAgICAgICAgICAgcmVzdWx0X2NsZWFuc3N0YXRlID0gcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQikpICsgJ2JpdGJha2UgLWNjbGVhbnNzdGF0ZSAnICsgdGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUsIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCi0gICAgICAgICAgICBpZiBub3QgcmVzdWx0X2NsZWFuc3N0YXRlLnN0YXR1cyA9PSAwOgotICAgICAgICAgICAgICAgIGZhaWxlZF9jbGVhbnNzdGF0ZS5hcHBlbmQodGFyZ2V0KQotICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRCKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHJlc3VsdF9idWlsZCA9IHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEIpKSArICdiaXRiYWtlICcgKyB0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfYnVpbGQuc3RhdHVzID09IDA6Ci0gICAgICAgICAgICAgICAgZmFpbGVkX3JlYnVpbGQuYXBwZW5kKHRhcmdldCkKLQotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmYWlsZWRfcmVidWlsZCwgbXNnPSJUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBmYWlsZWQgdG8gcmVidWlsZDogJXMiICUgJyAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX3JlYnVpbGQpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmYWlsZWRfY2xlYW5zc3RhdGUsIG1zZz0iVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgZmFpbGVkIGNsZWFuc3N0YXRlKGFsbCBvdGhlcnMgaGF2ZSBwYXNzZWQgYm90aCBjbGVhbnNzdGF0ZSBhbmQgcmVidWlsZCBmcm9tIHNzdGF0ZSB0ZXN0cyk6ICVzIiAlICcgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9jbGVhbnNzdGF0ZSkpKQotCi0gICAgZGVmIHRlc3Rfc3N0YXRlX3JlbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoWydjb3JlLWltYWdlLXNhdG8tc2RrJ10sIHJlbG9jYXRlPVRydWUsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPVRydWUpCi0KLSAgICBkZWYgdGVzdF9zc3RhdGVfcmVidWlsZChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfcmVidWlsZChbJ2NvcmUtaW1hZ2Utc2F0by1zZGsnXSwgcmVsb2NhdGU9RmFsc2UsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9hcmNoaXZlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2FyY2hpdmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAxYzM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2FyY2hpdmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLQotCi1jbGFzcyBBcmNoaXZlcihvZVNlbGZUZXN0KToKLQotICAgIEB0ZXN0Y2FzZSgxMzQ1KQotICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2FsbG93c190b19maWx0ZXJfb25fcmVjaXBlX25hbWUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGhlIGFyY2hpdmVyIHNob3VsZCBvZmZlciB0aGUgcG9zc2liaWxpdHkgdG8gZmlsdGVyIG9uIHRoZSByZWNpcGUuICgjNjkyOSkKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIEluY2x1ZGVkIHJlY2lwZSAoYnVzeWJveCkgc2hvdWxkIGJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAyLiBFeGNsdWRlZCByZWNpcGUgKHpsaWIpIHNob3VsZCBiZSBleGNsdWRlZAotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBpbmNsdWRlX3JlY2lwZSA9ICdidXN5Ym94JwotICAgICAgICBleGNsdWRlX3JlY2lwZSA9ICd6bGliJwotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fSU5DTFVERSA9ICIlcyJcbicgJSBpbmNsdWRlX3JlY2lwZQotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fRVhDTFVERSA9ICIlcyJcbicgJSBleGNsdWRlX3JlY2lwZQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAoaW5jbHVkZV9yZWNpcGUsIGV4Y2x1ZGVfcmVjaXBlKSkKLSAgICAgICAgYml0YmFrZSgiLWMgZGVwbG95X2FyY2hpdmVzICVzICVzIiAlIChpbmNsdWRlX3JlY2lwZSwgZXhjbHVkZV9yZWNpcGUpKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnXSkKLSAgICAgICAgc3JjX3BhdGggPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCBpbmNsdWRlX3JlY2lwZSB3YXMgaW5jbHVkZWQKLSAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGggKyAnLyVzLSonICUgaW5jbHVkZV9yZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSBpbmNsdWRlX3JlY2lwZSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgZXhjbHVkZV9yZWNpcGUgd2FzIGV4Y2x1ZGVkCi0gICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoICsgJy8lcy0qJyAlIGV4Y2x1ZGVfcmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIGV4Y2x1ZGVfcmVjaXBlKQotCi0KLSAgICBkZWYgdGVzdF9hcmNoaXZlcl9maWx0ZXJzX2J5X3R5cGUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGhlIGFyY2hpdmVyIGlzIGRvY3VtZW50ZWQgdG8gZmlsdGVyIG9uIHRoZSByZWNpcGUgdHlwZS4KLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGluY2x1ZGVkIHJlY2lwZSB0eXBlICh0YXJnZXQpIHNob3VsZCBiZSBpbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgMi4gb3RoZXIgdHlwZXMgc2hvdWxkIGJlIGV4Y2x1ZGVkCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIHRhcmdldF9yZWNpcGUgPSAnaW5pdHNjcmlwdHMnCi0gICAgICAgIG5hdGl2ZV9yZWNpcGUgPSAnemxpYi1uYXRpdmUnCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAidGFyZ2V0IlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAodGFyZ2V0X3JlY2lwZSwgbmF0aXZlX3JlY2lwZSkpCi0gICAgICAgIGJpdGJha2UoIiVzIC1jIGRlcGxveV9hcmNoaXZlcyAlcyIgJSAodGFyZ2V0X3JlY2lwZSwgbmF0aXZlX3JlY2lwZSkpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUycsICdCVUlMRF9TWVMnXSkKLSAgICAgICAgc3JjX3BhdGhfdGFyZ2V0ID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKLSAgICAgICAgc3JjX3BhdGhfbmF0aXZlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ0JVSUxEX1NZUyddKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCB0YXJnZXRfcmVjaXBlIHdhcyBpbmNsdWRlZAotICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIHRhcmdldF9yZWNpcGUpCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IG5hdGl2ZV9yZWNpcGUgd2FzIGV4Y2x1ZGVkCi0gICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGUpCi0KLSAgICBkZWYgdGVzdF9hcmNoaXZlcl9maWx0ZXJzX2J5X3R5cGVfYW5kX25hbWUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciBhcmNoaXZlcyBieSByZWNpcGUgdHlwZSwgdGFraW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWUgaW50byBhY2NvdW50LgotICAgICAgICBFeHBlY3RlZDogICAgMS4gaW5jbHVkZWQgcmVjaXBlIHR5cGUgKHRhcmdldCkgc2hvdWxkIGJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAyLiBvdGhlciB0eXBlcyBzaG91bGQgYmUgZXhjbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgIDMuIHJlY2lwZSBieSBuYW1lIHNob3VsZCBiZSBpbmNsdWRlZCAvIGV4Y2x1ZGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGluZyBwcmV2aW91cyBkZWNpc2lvbiBieSB0eXBlCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIHRhcmdldF9yZWNpcGVzID0gWyAnaW5pdHNjcmlwdHMnLCAnemxpYicgXQotICAgICAgICBuYXRpdmVfcmVjaXBlcyA9IFsgJ3VwZGF0ZS1yYy5kLW5hdGl2ZScsICd6bGliLW5hdGl2ZScgXQotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gInRhcmdldCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0lOQ0xVREUgPSAiJXMiXG4nICUgbmF0aXZlX3JlY2lwZXNbMV0KLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0VYQ0xVREUgPSAiJXMiXG4nICUgdGFyZ2V0X3JlY2lwZXNbMV0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKCcgJy5qb2luKHRhcmdldF9yZWNpcGVzKSwgJyAnLmpvaW4obmF0aXZlX3JlY2lwZXMpKSkKLSAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzICVzJyAlICgnICcuam9pbih0YXJnZXRfcmVjaXBlcyksICcgJy5qb2luKG5hdGl2ZV9yZWNpcGVzKSkpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUycsICdCVUlMRF9TWVMnXSkKLSAgICAgICAgc3JjX3BhdGhfdGFyZ2V0ID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKLSAgICAgICAgc3JjX3BhdGhfbmF0aXZlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ0JVSUxEX1NZUyddKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCB0YXJnZXRfcmVjaXBlWzBdIGFuZCBuYXRpdmVfcmVjaXBlc1sxXSB3ZXJlIGluY2x1ZGVkCi0gICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1swXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIHRhcmdldF9yZWNpcGVzWzBdKQotCi0gICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlc1sxXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGVzWzFdKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCBuYXRpdmVfcmVjaXBlc1swXSBhbmQgdGFyZ2V0X3JlY2lwZXNbMV0gd2VyZSBleGNsdWRlZAotICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZXNbMF0pKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZXNbMF0pCi0KLSAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGVzWzFdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIHRhcmdldF9yZWNpcGVzWzFdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YThlYTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmFzZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbgotIwotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotCi0jIERFU0NSSVBUSU9OCi0jIEJhc2UgY2xhc3MgaW5oZXJpdGVkIGJ5IHRlc3QgY2xhc3NlcyBpbiBtZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0Ci0KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGVycm5vCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IExvZ1Jlc3VsdHMKLWZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2UKLWltcG9ydCBnbG9iCi0KLUBMb2dSZXN1bHRzCi1jbGFzcyBvZVNlbGZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzZWxmdGVzdC5iYXNlIikKLSAgICBsb25nTWVzc2FnZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSJydW5UZXN0Iik6Ci0gICAgICAgIHNlbGYuYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKQotICAgICAgICBzZWxmLmxvY2FsY29uZl9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQotICAgICAgICBzZWxmLmxvY2FsY29uZl9iYWNrdXAgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvbG9jYWwuYmsiKQotICAgICAgICBzZWxmLnRlc3RpbmNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9zZWxmdGVzdC5pbmMiKQotICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCi0gICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25mL2JibGF5ZXJzLmJrIikKLSAgICAgICAgc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuaW5jIikKLSAgICAgICAgc2VsZi5tYWNoaW5laW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvbWFjaGluZS5pbmMiKQotICAgICAgICBzZWxmLnRlc3RsYXllcl9wYXRoID0gb2VTZWxmVGVzdC50ZXN0bGF5ZXJfcGF0aAotICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMgPSBbXQotICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cCA9IFsKLSAgICAgICAgICAgIHNlbGYudGVzdGluY19wYXRoLCBzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwKLSAgICAgICAgICAgIHNlbGYubWFjaGluZWluY19wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXAsCi0gICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cF0KLSAgICAgICAgc3VwZXIob2VTZWxmVGVzdCwgc2VsZikuX19pbml0X18obWV0aG9kTmFtZSkKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgb3MuY2hkaXIoc2VsZi5idWlsZGRpcikKLSAgICAgICAgIyBDaGVjayBpZiBsb2NhbC5jb25mIG9yIGJibGF5ZXJzLmNvbmYgZmlsZXMgYmFja3VwIGV4aXN0cwotICAgICAgICAjIGZyb20gYSBwcmV2aW91cyBmYWlsZWQgdGVzdCBhbmQgcmVzdG9yZSB0aGVtCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCkgb3Igb3MucGF0aC5pc2ZpbGUoCi0gICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoIkZvdW5kIGEgbG9jYWwuY29uZiBhbmQvb3IgYmJsYXllcnMuY29uZiBiYWNrdXAgXAotZnJvbSBhIHByZXZpb3VzbHkgYWJvcnRlZCB0ZXN0LiBSZXN0b3JpbmcgdGhlc2UgZmlsZXMgbm93LCBidXQgdGVzdHMgc2hvdWxkIFwKLWJlIHJlLWV4ZWN1dGVkIGZyb20gYSBjbGVhbiBlbnZpcm9ubWVudCB0byBlbnN1cmUgYWNjdXJhdGUgcmVzdWx0cy4iKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXAsIHNlbGYubG9jYWxjb25mX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgYmFja3VwIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXApCi0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKQotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoIkNyZWF0aW5nIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYgYmFja3Vwcy4iKQotICAgICAgICAjIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcHJldmlvdXMgdGVzdCBsZWZ0IGFyb3VuZCBpbiBjb25maWcgb3IgaW5jIGZpbGVzCi0gICAgICAgICMgaWYgaXQgZmFpbGVkIHNvIHdlIG5lZWQgYSBmcmVzaCBzdGFydAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi50ZXN0aW5jX3BhdGgpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnRlc3RsYXllcl9wYXRoKToKLSAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGlmIGYgPT0gJ3Rlc3RfcmVjaXBlLmluYyc6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgZikpCi0KLSAgICAgICAgZm9yIGluY2xfZmlsZSBpbiBbc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIHNlbGYubWFjaGluZWluY19wYXRoXToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoaW5jbF9maWxlKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICAjIEdldCBDVVNUT01NQUNISU5FIGZyb20gZW52IChzZXQgYnkgLS1tYWNoaW5lIGFyZ3VtZW50IHRvIG9lLXNlbGZ0ZXN0KQotICAgICAgICBjdXN0b21tYWNoaW5lID0gb3MuZ2V0ZW52KCdDVVNUT01NQUNISU5FJykKLSAgICAgICAgaWYgY3VzdG9tbWFjaGluZToKLSAgICAgICAgICAgIGlmIGN1c3RvbW1hY2hpbmUgPT0gJ3JhbmRvbSc6Ci0gICAgICAgICAgICAgICAgbWFjaGluZSA9IGdldF9yYW5kb21fbWFjaGluZSgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBjdXN0b21tYWNoaW5lCi0gICAgICAgICAgICBtYWNoaW5lX2NvbmYgPSAnTUFDSElORSA/Pz0gIiVzIlxuJyAlIG1hY2hpbmUKLSAgICAgICAgICAgIHNlbGYuc2V0X21hY2hpbmVfY29uZmlnKG1hY2hpbmVfY29uZikKLSAgICAgICAgICAgIHByaW50KCdNQUNISU5FOiAlcycgJSBtYWNoaW5lKQotCi0gICAgICAgICMgdGVzdHMgbWlnaHQgbmVlZCB0aGVpciBvd24gc2V0dXAKLSAgICAgICAgIyBidXQgaWYgdGhleSBvdmVyd3JpdGUgdGhpcyBvbmUgdGhleSBoYXZlIHRvIGNhbGwKLSAgICAgICAgIyBzdXBlciBlYWNoIHRpbWUsIHNvIGxldCdzIGdpdmUgdGhlbSBhbiBhbHRlcm5hdGl2ZQotICAgICAgICBzZWxmLnNldFVwTG9jYWwoKQotCi0gICAgZGVmIHNldFVwTG9jYWwoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzOgotICAgICAgICAgICAgZmFpbGVkX2V4dHJhX2NvbW1hbmRzID0gW10KLSAgICAgICAgICAgIGZvciBjb21tYW5kIGluIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kczoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY29tbWFuZCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQuc3RhdHVzID09ICAwOgotICAgICAgICAgICAgICAgICAgICBmYWlsZWRfZXh0cmFfY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0gICAgICAgICAgICBpZiBmYWlsZWRfZXh0cmFfY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2cud2FybmluZygidGVhckRvd24gY29tbWFuZHMgaGF2ZSBmYWlsZWQ6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBmYWlsZWRfZXh0cmFfY29tbWFuZHMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiVHJ5aW5nIHRvIG1vdmUgb24uIikKLSAgICAgICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcyA9IFtdCi0KLSAgICAgICAgaWYgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXA6Ci0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl90cmFja19mb3JfY2xlYW51cDoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotICAgICAgICAgICAgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXAgPSBbXQotCi0gICAgICAgIHNlbGYudGVhckRvd25Mb2NhbCgpCi0KLSAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgIyBhZGQgdGVzdCBzcGVjaWZpYyBjb21tYW5kcyB0byB0aGUgdGVhckRvd24gbWV0aG9kLgotICAgIGRlZiBhZGRfY29tbWFuZF90b190ZWFyRG93bihzZWxmLCBjb21tYW5kKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkFkZGluZyBjb21tYW5kICclcycgdG8gdGVhckRvd24gZm9yIHRoaXMgdGVzdC4iICUgY29tbWFuZCkKLSAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKQotICAgICMgYWRkIHRlc3Qgc3BlY2lmaWMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gYmUgcmVtb3ZlZCBpbiB0aGUgdGVhckRvd24gbWV0aG9kCi0gICAgZGVmIHRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYsIHBhdGgpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQWRkaW5nIHBhdGggJyVzJyB0byBiZSBjbGVhbmVkIHVwIHdoZW4gdGVzdCBpcyBvdmVyIiAlIHBhdGgpCi0gICAgICAgIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwLmFwcGVuZChwYXRoKQotCi0gICAgIyB3cml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jCi0gICAgZGVmIHdyaXRlX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQotCi0gICAgICAgIGN1c3RvbW1hY2hpbmUgPSBvcy5nZXRlbnYoJ0NVU1RPTU1BQ0hJTkUnKQotICAgICAgICBpZiBjdXN0b21tYWNoaW5lIGFuZCAnTUFDSElORScgaW4gZGF0YToKLSAgICAgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKLSAgICAgICAgICAgIHNlbGYubG9nLndhcm5pbmcoJ01BQ0hJTkUgb3ZlcnJpZGRlbjogJXMnICUgbWFjaGluZSkKLQotICAgICMgYXBwZW5kIHRvIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMKLSAgICBkZWYgYXBwZW5kX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQotCi0gICAgICAgIGN1c3RvbW1hY2hpbmUgPSBvcy5nZXRlbnYoJ0NVU1RPTU1BQ0hJTkUnKQotICAgICAgICBpZiBjdXN0b21tYWNoaW5lIGFuZCAnTUFDSElORScgaW4gZGF0YToKLSAgICAgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKLSAgICAgICAgICAgIHNlbGYubG9nLndhcm5pbmcoJ01BQ0hJTkUgb3ZlcnJpZGRlbjogJXMnICUgbWFjaGluZSkKLQotICAgICMgcmVtb3ZlIGRhdGEgZnJvbSA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jCi0gICAgZGVmIHJlbW92ZV9jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKLQotICAgICMgd3JpdGUgdG8gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jCi0gICAgZGVmIHdyaXRlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgotICAgICAgICBpbmNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKGluY19maWxlLCBkYXRhKQotCi0gICAgIyBhcHBlbmQgZGF0YSB0byBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMKLSAgICBkZWYgYXBwZW5kX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgotICAgICAgICBpbmNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKGluY19maWxlLCBkYXRhKQotCi0gICAgIyByZW1vdmUgZGF0YSBmcm9tIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYwotICAgIGRlZiByZW1vdmVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6Ci0gICAgICAgIGluY19maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGUsICd0ZXN0X3JlY2lwZS5pbmMnKQotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCi0KLSAgICAjIGRlbGV0ZSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMgZmlsZQotICAgIGRlZiBkZWxldGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSk6Ci0gICAgICAgIGluY19maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGUsICd0ZXN0X3JlY2lwZS5pbmMnKQotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiRGVsZXRpbmcgZmlsZTogJXMiICUgaW5jX2ZpbGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJlbW92ZShpbmNfZmlsZSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAjIHdyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMKLSAgICBkZWYgd3JpdGVfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCi0KLSAgICAjIGFwcGVuZCB0byA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jCi0gICAgZGVmIGFwcGVuZF9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKLQotICAgICMgcmVtb3ZlIGRhdGEgZnJvbSA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jCi0gICAgZGVmIHJlbW92ZV9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKLQotICAgICMgd3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL21hY2hpbmUuaW5jCi0gICAgZGVmIHNldF9tYWNoaW5lX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLm1hY2hpbmVpbmNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYubWFjaGluZWluY19wYXRoLCBkYXRhKQotCi0KLWRlZiBnZXRfYXZhaWxhYmxlX21hY2hpbmVzKCk6Ci0gICAgIyBHZXQgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgbWFjaGluZXMKLSAgICBiYnBhdGggPSBnZXRfYmJfdmFyKCdCQlBBVEgnKS5zcGxpdCgnOicpCi0gICAgbWFjaGluZXMgPSBbXQotCi0gICAgZm9yIHBhdGggaW4gYmJwYXRoOgotICAgICAgICBmb3VuZF9tYWNoaW5lcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4ocGF0aCwgJ2NvbmYnLCAnbWFjaGluZScsICcqLmNvbmYnKSkKLSAgICAgICAgaWYgZm91bmRfbWFjaGluZXM6Ci0gICAgICAgICAgICBmb3IgaSBpbiBmb3VuZF9tYWNoaW5lczoKLSAgICAgICAgICAgICAgICAjIGVnOiAnL2hvbWUvPHVzZXI+L3Bva3kvbWV0YS1pbnRlbC9jb25mL21hY2hpbmUvaW50ZWwtY29yZTItMzIuY29uZicKLSAgICAgICAgICAgICAgICBtYWNoaW5lcy5hcHBlbmQob3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGkpKVswXSkKLQotICAgIHJldHVybiBtYWNoaW5lcwotCi0KLWRlZiBnZXRfcmFuZG9tX21hY2hpbmUoKToKLSAgICAjIEdldCBhIHJhbmRvbSBtYWNoaW5lCi0gICAgcmV0dXJuIGNob2ljZShnZXRfYXZhaWxhYmxlX21hY2hpbmVzKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYmxheWVycy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JibGF5ZXJzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDY1OGM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JibGF5ZXJzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBnZXRfYmJfdmFyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgQml0YmFrZUxheWVycyhvZVNlbGZUZXN0KToKLQotICAgIEB0ZXN0Y2FzZSg3NTYpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93Y3Jvc3NkZXBlbmRzKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctY3Jvc3MtZGVwZW5kcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYXNwZWxsJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gZGVwZW5kZW5jaWVzIHdlcmUgc2hvd24uIGJpdGJha2UtbGF5ZXJzIHNob3ctY3Jvc3MtZGVwZW5kcyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoODMpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93bGF5ZXJzKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdtZXRhLXNlbGZ0ZXN0JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gbGF5ZXJzIHdlcmUgc2hvd24uIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSg5MykKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dhcHBlbmRzKHNlbGYpOgotICAgICAgICByZWNpcGUgPSAieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKLSAgICAgICAgYmJfZmlsZSA9IHNlbGYuZ2V0X3JlY2lwZV9iYXNlbmFtZShyZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJiX2ZpbGUgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSIlcyBmaWxlIHdhcyBub3QgcmVjb2duaXNlZC4gYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzIG91dHB1dDogJXMiICUgKGJiX2ZpbGUsIHJlc3VsdC5vdXRwdXQpKQotCi0gICAgQHRlc3RjYXNlKDkwKQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd292ZXJsYXllZChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LW92ZXJsYXllZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYXNwZWxsJyBpbiByZXN1bHQub3V0cHV0LCBtc2c9ImFzcGVsbCBvdmVybGF5ZWQgcmVjaXBlIHdhcyBub3QgcmVjb2duaXNlZCBiaXRiYWtlLWxheWVycyBzaG93LW92ZXJsYXllZCAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDk1KQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbihzZWxmKToKLSAgICAgICAgcmVjaXBlID0gInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCi0gICAgICAgIHJlY2lwZV9wYXRoID0gInJlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKLSAgICAgICAgcmVjaXBlX2ZpbGUgPSBzZWxmLmdldF9yZWNpcGVfYmFzZW5hbWUocmVjaXBlKQotICAgICAgICB0ZXN0b3V0ZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2Rpcih0ZXN0b3V0ZGlyKSwgbXNnID0gInRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuIHNob3VsZCBub3QgZXhpc3QgYXQgdGhpcyBwb2ludCBpbiB0aW1lIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZXN0b3V0ZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGZsYXR0ZW4gJXMnICUgdGVzdG91dGRpcikKLSAgICAgICAgYmJfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0b3V0ZGlyLCByZWNpcGVfcGF0aCwgcmVjaXBlX2ZpbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShiYl9maWxlKSwgbXNnID0gIkNhbm5vdCBmaW5kIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfMC4xLjEuYmIgaW4gdGhlIHRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuIGxvY2FsIGRpci4iKQotICAgICAgICBjb250ZW50cyA9IGZ0b29scy5yZWFkX2ZpbGUoYmJfZmlsZSkKLSAgICAgICAgZmluZF9pbl9jb250ZW50cyA9IHJlLnNlYXJjaCgiIyMjIyMgYmJhcHBlbmRlZCBmcm9tIG1ldGEtc2VsZnRlc3QgIyMjIyNcbiguKlxuKSppbmNsdWRlIHRlc3RfcmVjaXBlLmluYyIsIGNvbnRlbnRzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9pbl9jb250ZW50cywgbXNnID0gIkZsYXR0ZW5pbmcgbGF5ZXJzIGRpZCBub3Qgd29yay4gYml0YmFrZS1sYXllcnMgZmxhdHRlbiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE5NSkKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX2FkZF9yZW1vdmUoc2VsZik6Ci0gICAgICAgIHRlc3RfbGF5ZXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEtc2tlbGV0b24nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsICJUaGlzIHRlc3QgY2Fubm90IHJ1biB3aXRoIG1ldGEtc2tlbGV0b24gaW4gYmJsYXllcnMuY29uZi4gYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZXN0X2xheWVyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJTb21ldGhpbmcgd3JvbmcgaGFwcGVuZWQuIG1ldGEtc2tlbGV0b24gbGF5ZXIgd2FzIG5vdCBhZGRlZCB0byBjb25mL2JibGF5ZXJzLmNvbmYuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIm1ldGEtc2tlbGV0b24gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGF0IHRoaXMgc3RlcC4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAiU29tZXRoaW5nIHdyb25nIGhhcHBlbmVkLiBtZXRhLXNrZWxldG9uIGxheWVyIHdhcyBub3QgYWRkZWQgdG8gY29uZi9iYmxheWVycy5jb25mLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL21ldGEtc2tlbGV0b24nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJtZXRhLXNrZWxldG9uIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGlzIHN0ZXAuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTM4NCkKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dyZWNpcGVzKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FzcGVsbDonLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignY29yZS1pbWFnZS1taW5pbWFsOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIG10ZC11dGlscycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdhc3BlbGw6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgaW1hZ2UnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjb3JlLWltYWdlLW1pbmltYWwnLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgY21ha2UscGtnY29uZmlnJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGlicHJveHk6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IGVpdGhlcgotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd3Z2V0OicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IGNtYWtlCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dhZmZsZTonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBwa2djb25maWcKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgbm9uZXhpc3RlbnRjbGFzcycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIG5vbmV4aXN0ZW50Y2xhc3Mgc2hvdWxkIGhhdmUgZmFpbGVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6JywgcmVzdWx0Lm91dHB1dCkKLQotICAgIGRlZiBnZXRfcmVjaXBlX2Jhc2VuYW1lKHNlbGYsIHJlY2lwZSk6Ci0gICAgICAgIHJlY2lwZV9maWxlID0gIiIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWYgJXMiICUgcmVjaXBlKQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmIHJlY2lwZSBpbiBsaW5lOgotICAgICAgICAgICAgICAgIHJlY2lwZV9maWxlID0gbGluZQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZV9maWxlKSwgbXNnID0gIkNhbid0IGZpbmQgcmVjaXBlIGZpbGUgZm9yICVzIiAlIHJlY2lwZSkKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlX2ZpbGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYnRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJ0ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZlMDlmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYnRlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjc4ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBCaXRiYWtlVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgZ2V0bGluZShzZWxmLCByZXMsIGxpbmUpOgotICAgICAgICBmb3IgbCBpbiByZXMub3V0cHV0LnNwbGl0KCdcbicpOgotICAgICAgICAgICAgaWYgbGluZSBpbiBsOgotICAgICAgICAgICAgICAgIHJldHVybiBsCi0KLSAgICBAdGVzdGNhc2UoNzg5KQotICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzEoc2VsZik6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJykuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBcImNvbmZcIiBkaXIiKQotCi0gICAgQHRlc3RjYXNlKDc5MCkKLSAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8yKHNlbGYpOgotICAgICAgICBteV9lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQotICAgICAgICBteV9lbnZbJ0JCUEFUSCddID0gbXlfZW52WydCVUlMRERJUiddCi0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShvcy5lbnZpcm9uWydCVUlMRERJUiddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScsIGVudj1teV9lbnYpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gYnVpbGRkaXIiKQotCi0gICAgQHRlc3RjYXNlKDgwNikKLSAgICBkZWYgdGVzdF9ldmVudF9oYW5kbGVyKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVCArPSBcInRlc3RfZXZlbnRzXCIiKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNC1uYXRpdmUnKQotICAgICAgICBmaW5kX2J1aWxkX3N0YXJ0ZWQgPSByZS5zZWFyY2goIk5PVEU6IFRlc3QgZm9yIGJiXC5ldmVudFwuQnVpbGRTdGFydGVkKFxuLiopKk5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcyIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGZpbmRfYnVpbGRfY29tcGxldGVkID0gcmUuc2VhcmNoKCJUYXNrcyBTdW1tYXJ5Oi4qKFxuLiopKk5PVEU6IFRlc3QgZm9yIGJiXC5ldmVudFwuQnVpbGRDb21wbGV0ZWQiLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9idWlsZF9zdGFydGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2J1aWxkX2NvbXBsZXRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1Rlc3QgZm9yIGJiLmV2ZW50LkludmFsaWRFdmVudCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlwiVGVzdCBmb3IgYmIuZXZlbnQuSW52YWxpZEV2ZW50XCIgbWVzc2FnZSBmb3VuZCBkdXJpbmcgYml0YmFrZSBwcm9jZXNzLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDMpCi0gICAgZGVmIHRlc3RfbG9jYWxfc3N0YXRlKHNlbGYpOgotICAgICAgICBiaXRiYWtlKCdtNC1uYXRpdmUnKQotICAgICAgICBiaXRiYWtlKCdtNC1uYXRpdmUgLWNjbGVhbicpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200LW5hdGl2ZScpCi0gICAgICAgIGZpbmRfc2V0c2NlbmUgPSByZS5zZWFyY2goIm00LW5hdGl2ZS4qZG9fLipfc2V0c2NlbmUiLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9zZXRzY2VuZSwgbXNnID0gIk5vIFwibTQtbmF0aXZlLipkb18uKl9zZXRzY2VuZVwiIG1lc3NhZ2UgZm91bmQgZHVyaW5nIGJpdGJha2UgbTQtbmF0aXZlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCApCi0KLSAgICBAdGVzdGNhc2UoMTA1KQotICAgIGRlZiB0ZXN0X2JpdGJha2VfaW52YWxpZF9yZWNpcGUoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1iIGFzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiRVJST1I6IFVuYWJsZSB0byBmaW5kIGFueSByZWNpcGUgZmlsZSBtYXRjaGluZyAnYXNkZiciIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJUaG91Z2ggYXNkZiByZWNpcGUgZG9lc24ndCBleGlzdCwgYml0YmFrZSBkaWRuJ3Qgb3V0cHV0IGFueSBlcnIuIG1lc3NhZ2UuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwNykKLSAgICBkZWYgdGVzdF9iaXRiYWtlX2ludmFsaWRfdGFyZ2V0KHNlbGYpOgotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoIkVSUk9SOiBOb3RoaW5nIFBST1ZJREVTICdhc2RmJyIgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlRob3VnaCBubyAnYXNkZicgdGFyZ2V0IGV4aXN0cywgYml0YmFrZSBkaWRuJ3Qgb3V0cHV0IGFueSBlcnIuIG1lc3NhZ2UuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwNikKLSAgICBkZWYgdGVzdF93YXJuaW5nc19lcnJvcnMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1iIGFzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGZpbmRfd2FybmluZ3MgPSByZS5zZWFyY2goIlN1bW1hcnk6IFRoZXJlIHcuezIsM30/IFsxLTldWzAtOV0qIFdBUk5JTkcgbWVzc2FnZXMqIHNob3duIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZmluZF9lcnJvcnMgPSByZS5zZWFyY2goIlN1bW1hcnk6IFRoZXJlIHcuezIsM30/IFsxLTldWzAtOV0qIEVSUk9SIG1lc3NhZ2VzKiBzaG93biIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3dhcm5pbmdzLCBtc2c9IkRpZCBub3QgZmluZCB0aGUgbXVtYmVyIG9mIHdhcm5pbmdzIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkOlxuIiArIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2Vycm9ycywgbXNnPSJEaWQgbm90IGZpbmQgdGhlIG11bWJlciBvZiBlcnJvcnMgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQ6XG4iICsgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDgpCi0gICAgZGVmIHRlc3RfaW52YWxpZF9wYXRjaChzZWxmKToKLSAgICAgICAgIyBUaGlzIHBhdGNoIGFscmVhZHkgZXhpc3RzIGluIFNSQ19VUkkgc28gYWRkaW5nIGl0IGFnYWluIHdpbGwgY2F1c2UgdGhlCi0gICAgICAgICMgcGF0Y2ggdG8gZmFpbC4KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsICdTUkNfVVJJICs9ICJmaWxlOi8vbWFuLTEuNWgxLW1ha2UucGF0Y2giJykKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ21hbiAtYyBwYXRjaCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQotICAgICAgICBiaXRiYWtlKCctY2NsZWFuIG1hbicpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzdWx0LCAiRnVuY3Rpb24gZmFpbGVkOiBwYXRjaF9kb19wYXRjaCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiUmVwZWF0ZWQgcGF0Y2ggYXBwbGljYXRpb24gZGlkbid0IGZhaWwuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEzNTQpCi0gICAgZGVmIHRlc3RfZm9yY2VfdGFza18xKHNlbGYpOgotICAgICAgICAjIHRlc3QgMSBmcm9tIGJ1ZyA1ODc1Ci0gICAgICAgIHRlc3RfcmVjaXBlID0gJ3psaWInCi0gICAgICAgIHRlc3RfZGF0YSA9ICJNaWNyb3NvZnQgTWFkZSBObyBQcm9maXQgRnJvbSBBbnlvbmUncyBadW5lcyBZbyIKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdQS0dERVNUJywgJ21hbmRpciddLCB0ZXN0X3JlY2lwZSkKLSAgICAgICAgaW1hZ2VfZGlyID0gYmJfdmFyc1snRCddCi0gICAgICAgIHBrZ3NwbGl0X2RpciA9IGJiX3ZhcnNbJ1BLR0RFU1QnXQotICAgICAgICBtYW5fZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZSAtZiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBtYW5fZmlsZSA9IG9zLnBhdGguam9pbihpbWFnZV9kaXIgKyBtYW5fZGlyLCAnbWFuMy96bGliLjMnKQotICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUobWFuX2ZpbGUsIHRlc3RfZGF0YSkKLSAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZSAtZiAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBtYW5fc3BsaXRfZmlsZSA9IG9zLnBhdGguam9pbihwa2dzcGxpdF9kaXIsICd6bGliLWRvYycgKyBtYW5fZGlyLCAnbWFuMy96bGliLjMnKQotICAgICAgICBtYW5fc3BsaXRfY29udGVudCA9IGZ0b29scy5yZWFkX2ZpbGUobWFuX3NwbGl0X2ZpbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdF9kYXRhLCBtYW5fc3BsaXRfY29udGVudCwgJ1RoZSBtYW4gZmlsZSBoYXMgbm90IGNoYW5nZWQgaW4gcGFja2FnZXMtc3BsaXQuJykKLQotICAgICAgICByZXQgPSBiaXRiYWtlKHRlc3RfcmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCd0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtOicsIHJldC5vdXRwdXQsICdUYXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtIGRpZCBub3QgcmUtZXhlY3V0ZWQuJykKLQotICAgIEB0ZXN0Y2FzZSgxNjMpCi0gICAgZGVmIHRlc3RfZm9yY2VfdGFza18yKHNlbGYpOgotICAgICAgICAjIHRlc3QgMiBmcm9tIGJ1ZyA1ODc1Ci0gICAgICAgIHRlc3RfcmVjaXBlID0gJ3psaWInCi0KLSAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctQyBjb21waWxlICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBsb29rX2Zvcl90YXNrcyA9IFsnZG9fY29tcGlsZTonLCAnZG9faW5zdGFsbDonLCAnZG9fcG9wdWxhdGVfc3lzcm9vdDonLCAnZG9fcGFja2FnZTonXQotICAgICAgICBmb3IgdGFzayBpbiBsb29rX2Zvcl90YXNrczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGFzaywgcmVzdWx0Lm91dHB1dCwgbXNnPSJDb3VsZG4ndCBmaW5kICVzIHRhc2suIikKLQotICAgIEB0ZXN0Y2FzZSgxNjcpCi0gICAgZGVmIHRlc3RfYml0YmFrZV9nKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZyBjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBmb3IgZiBpbiBbJ3BuLWJ1aWxkbGlzdCcsICdyZWNpcGUtZGVwZW5kcy5kb3QnLCAndGFzay1kZXBlbmRzLmRvdCddOgotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJlbW92ZSwgZikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdUYXNrIGRlcGVuZGVuY2llcyBzYXZlZCB0byBcJ3Rhc2stZGVwZW5kcy5kb3RcJycgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIHRhc2sgZGVwZW5kZW5jeSBcInRhc2stZGVwZW5kcy5kb3RcIiBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIHRoZSBnaXZlbiB0YXNrIHRhcmdldC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnVzeWJveCcgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rhc2stZGVwZW5kcy5kb3QnKSksIG1zZyA9ICJObyBcImJ1c3lib3hcIiBkZXBlbmRlbmN5IGZvdW5kIGluIHRhc2stZGVwZW5kcy5kb3QgZmlsZS4iKQotCi0gICAgQHRlc3RjYXNlKDg5OSkKLSAgICBkZWYgdGVzdF9pbWFnZV9tYW5pZmVzdChzZWxmKToKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsiREVQTE9ZX0RJUl9JTUFHRSIsICJJTUFHRV9MSU5LX05BTUUiXSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIGRlcGxveWRpciA9IGJiX3ZhcnNbIkRFUExPWV9ESVJfSU1BR0UiXQotICAgICAgICBpbWFnZW5hbWUgPSBiYl92YXJzWyJJTUFHRV9MSU5LX05BTUUiXQotICAgICAgICBtYW5pZmVzdCA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsIGltYWdlbmFtZSArICIubWFuaWZlc3QiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsobWFuaWZlc3QpLCBtc2c9Ik5vIG1hbmlmZXN0IGZpbGUgY3JlYXRlZCBmb3IgaW1hZ2UuIEl0IHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBpbiAlcyIgJSBtYW5pZmVzdCkKLQotICAgIEB0ZXN0Y2FzZSgxNjgpCi0gICAgZGVmIHRlc3RfaW52YWxpZF9yZWNpcGVfc3JjX3VyaShzZWxmKToKLSAgICAgICAgZGF0YSA9ICdTUkNfVVJJID0gImZpbGU6Ly9pbnZhbGlkIicKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsIGRhdGEpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLVNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi1JTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCi0KLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYyBmZXRjaCBtYW4nLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsIG1zZz0iQ29tbWFuZCBzdWNjZWRlZCB3aGVuIGl0IHNob3VsZCBoYXZlIGZhaWxlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRmV0Y2hlciBmYWlsdXJlOiBVbmFibGUgdG8gZmluZCBmaWxlIGZpbGU6Ly9pbnZhbGlkIGFueXdoZXJlLiBUaGUgcGF0aHMgdGhhdCB3ZXJlIHNlYXJjaGVkIHdlcmU6JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiXCJpbnZhbGlkXCIgZmlsZSBcCi1kb2Vzbid0IGV4aXN0LCB5ZXQgbm8gZXJyb3IgbWVzc2FnZSBlbmNvdW50ZXJlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzdWx0LCAnRmV0Y2hlciBmYWlsdXJlIGZvciBVUkw6IFwnZmlsZTovL2ludmFsaWRcJy4gVW5hYmxlIHRvIGZldGNoIFVSTCBmcm9tIGFueSBzb3VyY2UuJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKLWRvZXNuJ3QgZXhpc3QsIHlldCBmZXRjaGVyIGRpZG4ndCByZXBvcnQgYW55IGVycm9yLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxNzEpCi0gICAgZGVmIHRlc3RfcmVuYW1lX2Rvd25sb2FkZWRfZmlsZShzZWxmKToKLSAgICAgICAgIyBUT0RPIHVuaXF1ZSBkbGRpciBpbnN0ZWFkIG9mIHVzaW5nIGNsZWFuYWxsCi0gICAgICAgICMgVE9ETzogbmVlZCB0byBzZXQgc3N0YXRlZGlyPwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi1TU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKLQotICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hc3BlbGwvYXNwZWxsLSR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPXRlc3QtYXNwZWxsLnRhci5neiInCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdhc3BlbGwnLCBkYXRhKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZiAtYyBmZXRjaCBhc3BlbGwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnYXNwZWxsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2cgPSAiQ291bGRuJ3QgZmV0Y2ggYXNwZWxsLiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBkbF9kaXIgPSBnZXRfYmJfdmFyKCJETF9ESVIiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRsX2RpciwgJ3Rlc3QtYXNwZWxsLnRhci5neicpKSwgbXNnID0gIkZpbGUgcmVuYW1lIGZhaWxlZC4gTm8gY29ycmVzcG9uZGluZyB0ZXN0LWFzcGVsbC50YXIuZ3ogZmlsZSBmb3VuZCB1bmRlciAlcyIgJSBkbF9kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGxfZGlyLCAndGVzdC1hc3BlbGwudGFyLmd6LmRvbmUnKSksICJGaWxlIHJlbmFtZSBmYWlsZWQuIE5vIGNvcnJlc3BvbmRpbmcgdGVzdC1hc3BlbGwudGFyLmd6LmRvbmUgZmlsZSBmb3VuZCB1bmRlciAlcyIgJSBkbF9kaXIpCi0KLSAgICBAdGVzdGNhc2UoMTAyOCkKLSAgICBkZWYgdGVzdF9lbnZpcm9ubWVudChzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfRU5WPVwibG9jYWxjb25mXCIiKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWUgfCBncmVwIFRFU1RfRU5WPScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbG9jYWxjb25mJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiYml0YmFrZSBkaWRuJ3QgcmVwb3J0IGFueSB2YWx1ZSBmb3IgVEVTVF9FTlYgdmFyaWFibGUuIFRvIHRlc3QsIHJ1biAnYml0YmFrZSAtZSB8IGdyZXAgVEVTVF9FTlY9JyIpCi0KLSAgICBAdGVzdGNhc2UoMTAyOSkKLSAgICBkZWYgdGVzdF9kcnlfcnVuKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLW4gbTQtbmF0aXZlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiYml0YmFrZSBkcnkgcnVuIGRpZG4ndCBydW4gYXMgZXhwZWN0ZWQuICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTAzMCkKLSAgICBkZWYgdGVzdF9qdXN0X3BhcnNlKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJlcnJvcnMgZW5jb3VudGVyZWQgd2hlbiBwYXJzaW5nIHJlY2lwZXMuICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTAzMSkKLSAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXMgfCBncmVwIHdnZXQnKQotICAgICAgICBmaW5kID0gcmUuc2VhcmNoKCJ3Z2V0ICo6KFswLTlhLXpBLVpcLlwtXSspIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmQsICJObyB2ZXJzaW9uIHJldHVybmVkIGZvciBzZWFyY2hlZCByZWNpcGUuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwMzIpCi0gICAgZGVmIHRlc3RfcHJlZmlsZShzZWxmKToKLSAgICAgICAgcHJlY29uZiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZi9wcmVmaWxlLmNvbmYnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHByZWNvbmYpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKHByZWNvbmYgLCJURVNUX1BSRUZJTEU9XCJwcmVmaWxlXCIiKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXIgY29uZi9wcmVmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUFJFRklMRT0nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3ByZWZpbGUnIGluIHJlc3VsdC5vdXRwdXQsICJQcmVjb25maWd1cmUgZmlsZSBcInByZWZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uICIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX1BSRUZJTEU9XCJsb2NhbGNvbmZcIiIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtciBjb25mL3ByZWZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QUkVGSUxFPScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbG9jYWxjb25mJyBpbiByZXN1bHQub3V0cHV0LCAiUHJlY29uZmlndXJlIGZpbGUgXCJwcmVmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiIpCi0KLSAgICBAdGVzdGNhc2UoMTAzMykKLSAgICBkZWYgdGVzdF9wb3N0ZmlsZShzZWxmKToKLSAgICAgICAgcG9zdGNvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYvcG9zdGZpbGUuY29uZicpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAocG9zdGNvbmYpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKHBvc3Rjb25mICwgIlRFU1RfUE9TVEZJTEU9XCJwb3N0ZmlsZVwiIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfUE9TVEZJTEU9XCJsb2NhbGNvbmZcIiIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtUiBjb25mL3Bvc3RmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUE9TVEZJTEU9JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdwb3N0ZmlsZScgaW4gcmVzdWx0Lm91dHB1dCwgIlBvc3Rjb25maWd1cmUgZmlsZSBcInBvc3RmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiIpCi0KLSAgICBAdGVzdGNhc2UoMTAzNCkKLSAgICBkZWYgdGVzdF9jaGVja3VyaShzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1jIGNoZWNrdXJpIG00JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCBtc2cgPSAiXCJjaGVja3VyaVwiIHRhc2sgd2FzIG5vdCBleGVjdXRlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTAzNSkKLSAgICBkZWYgdGVzdF9jb250aW51ZShzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLUlOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsIlxuZG9fZmFpbF90YXNrICgpIHtcbmV4aXQgMSBcbn1cblxuYWRkdGFzayBkb19mYWlsX3Rhc2sgYmVmb3JlIGRvX2ZldGNoXG4iICkKLSAgICAgICAgcnVuQ21kKCdiaXRiYWtlIC1jIGNsZWFuYWxsIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1jIHVucGFjayAtayBtYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgZXJyb3Jwb3MgPSByZXN1bHQub3V0cHV0LmZpbmQoJ0VSUk9SOiBGdW5jdGlvbiBmYWlsZWQ6IGRvX2ZhaWxfdGFzaycpCi0gICAgICAgIG1hbnZlciA9IHJlLnNlYXJjaCgiTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtKC4qPyk6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgY29udGludWVwb3MgPSByZXN1bHQub3V0cHV0LmZpbmQoJ05PVEU6IHJlY2lwZSB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLSVzOiB0YXNrIGRvX3VucGFjazogU3RhcnRlZCcgJSBtYW52ZXIuZ3JvdXAoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhlcnJvcnBvcyxjb250aW51ZXBvcywgbXNnID0gImJpdGJha2UgZGlkbid0IHBhc3MgZG9fZmFpbF90YXNrLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTE5KQotICAgIGRlZiB0ZXN0X25vbl9ncGx2MyhzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOQ09NUEFUSUJMRV9MSUNFTlNFID0gIkdQTHYzIicpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ3NlbGZ0ZXN0LWVkJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICJCaXRiYWtlIGZhaWxlZCwgZXhpdCBjb2RlICVzLCBvdXRwdXQgJXMiICUgKHJlc3VsdC5zdGF0dXMsIHJlc3VsdC5vdXRwdXQpKQotICAgICAgICBsaWNfZGlyID0gZ2V0X2JiX3ZhcignTElDRU5TRV9ESVJFQ1RPUlknKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWNfZGlyLCAnc2VsZnRlc3QtZWQvZ2VuZXJpY19HUEx2MycpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWNfZGlyLCAnc2VsZnRlc3QtZWQvZ2VuZXJpY19HUEx2MicpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNDIyKQotICAgIGRlZiB0ZXN0X3NldHNjZW5lX29ubHkoc2VsZik6Ci0gICAgICAgICIiIiBCaXRiYWtlIG9wdGlvbiB0byByZXN0b3JlIGZyb20gc3N0YXRlIG9ubHkgd2l0aGluIGEgYnVpbGQgKGkuZS4gZXhlY3V0ZSBubyByZWFsIHRhc2tzLCBvbmx5IHNldHNjZW5lKSIiIgotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLQotICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgcmV0ID0gYml0YmFrZSgnLS1zZXRzY2VuZS1vbmx5ICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIHRhc2tzID0gcmUuZmluZGFsbChyJ3Rhc2tccysoZG9fXFMrKTonLCByZXQub3V0cHV0KQotCi0gICAgICAgIGZvciB0YXNrIGluIHRhc2tzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3NldHNjZW5lJywgdGFzaywgJ0EgdGFzayBkaWZmZXJlbnQgZnJvbSBfc2V0c2NlbmUgcmFuOiAlcy5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeGVjdXRlZCB0YXNrcyB3ZXJlOiAlcycgJSAodGFzaywgc3RyKHRhc2tzKSkpCi0KLSAgICBAdGVzdGNhc2UoMTQyNSkKLSAgICBkZWYgdGVzdF9iYmFwcGVuZF9vcmRlcihzZWxmKToKLSAgICAgICAgIiIiIEJpdGJha2Ugc2hvdWxkIGJiYXBwZW5kIHRvIHJlY2lwZSBpbiBhIHByZWRpY3RhYmxlIG9yZGVyICIiIgotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1VNTUFSWScsICdQViddLCB0ZXN0X3JlY2lwZSkKLSAgICAgICAgdGVzdF9yZWNpcGVfc3VtbWFyeV9iZWZvcmUgPSBiYl92YXJzWydTVU1NQVJZJ10KLSAgICAgICAgdGVzdF9yZWNpcGVfcHYgPSBiYl92YXJzWydQViddCi0gICAgICAgIHJlY2lwZV9hcHBlbmRfZmlsZSA9IHRlc3RfcmVjaXBlICsgJ18nICsgdGVzdF9yZWNpcGVfcHYgKyAnLmJiYXBwZW5kJwotICAgICAgICBleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSA9IHRlc3RfcmVjaXBlX3N1bW1hcnlfYmVmb3JlCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Ci0gICAgICAgICAgICByZWNpcGVfYXBwZW5kX2RpciA9IHRlc3RfcmVjaXBlICsgJ190ZXN0XycgKyBzdHIoaSkKLSAgICAgICAgICAgIHJlY2lwZV9hcHBlbmRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlX2FwcGVuZF9kaXIsIHJlY2lwZV9hcHBlbmRfZmlsZSkKLSAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlX2FwcGVuZF9kaXIpKQotICAgICAgICAgICAgZmVhdHVyZSA9ICdTVU1NQVJZICs9ICIlcyJcbicgJSBpCi0gICAgICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShyZWNpcGVfYXBwZW5kX3BhdGgsIGZlYXR1cmUpCi0gICAgICAgICAgICBleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSArPSAnICVzJyAlIGkKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZWNpcGUgKyAnX3Rlc3RfKicpKQotCi0gICAgICAgIHRlc3RfcmVjaXBlX3N1bW1hcnlfYWZ0ZXIgPSBnZXRfYmJfdmFyKCdTVU1NQVJZJywgdGVzdF9yZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnksIHRlc3RfcmVjaXBlX3N1bW1hcnlfYWZ0ZXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZGhpc3RvcnkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZGhpc3RvcnkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOGMzOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRoaXN0b3J5LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBkYXRldGltZQotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLQotY2xhc3MgQnVpbGRoaXN0b3J5QmFzZShvZVNlbGZUZXN0KToKLQotICAgIGRlZiBjb25maWdfYnVpbGRoaXN0b3J5KHNlbGYsIHRtcF9iaF9sb2NhdGlvbj1GYWxzZSk6Ci0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1VTRVJfQ0xBU1NFUycsICdJTkhFUklUJ10pCi0gICAgICAgIGlmIChub3QgJ2J1aWxkaGlzdG9yeScgaW4gYmJfdmFyc1snVVNFUl9DTEFTU0VTJ10pIGFuZCAobm90ICdidWlsZGhpc3RvcnknIGluIGJiX3ZhcnNbJ0lOSEVSSVQnXSk6Ci0gICAgICAgICAgICBhZGRfYnVpbGRoaXN0b3J5X2NvbmZpZyA9ICdJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiXG5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiJwotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGFkZF9idWlsZGhpc3RvcnlfY29uZmlnKQotCi0gICAgICAgIGlmIHRtcF9iaF9sb2NhdGlvbjoKLSAgICAgICAgICAgICMgVXNpbmcgYSB0ZW1wb3JhcnkgYnVpbGRoaXN0b3J5IGxvY2F0aW9uIGZvciB0ZXN0aW5nCi0gICAgICAgICAgICB0bXBfYmhfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJ0bXBfYnVpbGRoaXN0b3J5XyVzIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQlSCVNJVMnKSkKLSAgICAgICAgICAgIGJ1aWxkaGlzdG9yeV9kaXJfY29uZmlnID0gIkJVSUxESElTVE9SWV9ESVIgPSBcIiVzXCIiICUgdG1wX2JoX2RpcgotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGJ1aWxkaGlzdG9yeV9kaXJfY29uZmlnKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0bXBfYmhfZGlyKQotCi0gICAgZGVmIHJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHNlbGYsIHRhcmdldCwgZ2xvYmFsX2NvbmZpZz0nJywgdGFyZ2V0X2NvbmZpZz0nJywgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9RmFsc2UsIGVycm9yX3JlZ2V4PScnKToKLSAgICAgICAgaWYgY2hhbmdlX2JoX2xvY2F0aW9uOgotICAgICAgICAgICAgdG1wX2JoX2xvY2F0aW9uID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdG1wX2JoX2xvY2F0aW9uID0gRmFsc2UKLSAgICAgICAgc2VsZi5jb25maWdfYnVpbGRoaXN0b3J5KHRtcF9iaF9sb2NhdGlvbikKLQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZ2xvYmFsX2NvbmZpZykKLSAgICAgICAgc2VsZi5hcHBlbmRfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZykKLSAgICAgICAgYml0YmFrZSgiLWNjbGVhbiAlcyIgJSB0YXJnZXQpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UodGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhnbG9iYWxfY29uZmlnKQotICAgICAgICBzZWxmLnJlbW92ZV9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnKQotCi0gICAgICAgIGlmIGV4cGVjdF9lcnJvcjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJFcnJvciBleHBlY3RlZCBmb3IgZ2xvYmFsIGNvbmZpZyAnJXMnIGFuZCB0YXJnZXQgY29uZmlnICclcyciICUgKGdsb2JhbF9jb25maWcsIHRhcmdldF9jb25maWcpKQotICAgICAgICAgICAgc2VhcmNoX2Zvcl9lcnJvciA9IHJlLnNlYXJjaChlcnJvcl9yZWdleCwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWFyY2hfZm9yX2Vycm9yLCBtc2c9IkNvdWxkIG5vdCBmaW5kIGRlc2lyZWQgZXJyb3IgaW4gb3V0cHV0OiAlcyAoJXMpIiAlIChlcnJvcl9yZWdleCwgcmVzdWx0Lm91dHB1dCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZz0iQ29tbWFuZCAnYml0YmFrZSAlcycgaGFzIGZhaWxlZCB1bmV4cGVjdGVkbHk6ICVzIiAlICh0YXJnZXQsIHJlc3VsdC5vdXRwdXQpKQotCi0gICAgIyBObyB0ZXN0cyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGJhc2UgY2xhc3MuCi0gICAgIyBQbGVhc2UgY3JlYXRlIGEgbmV3IGNsYXNzIHRoYXQgaW5oZXJpdCB0aGlzIG9uZSwgb3IgdXNlIG9uZSBvZiB0aG9zZSBhbHJlYWR5IGF2YWlsYWJsZSBmb3IgYWRkaW5nIHRlc3RzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRvcHRpb25zLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRvcHRpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmUwMjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkb3B0aW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGdsb2IgYXMgZwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgSW1hZ2VPcHRpb25zVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICBAdGVzdGNhc2UoNzYxKQotICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsX2ltYWdlX2dlbmVyYXRpb24oc2VsZik6Ci0gICAgICAgIGltYWdlX3BrZ3R5cGUgPSBnZXRfYmJfdmFyKCJJTUFHRV9QS0dUWVBFIikKLSAgICAgICAgaWYgaW1hZ2VfcGtndHlwZSAhPSAncnBtJzoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ05vdCB1c2luZyBSUE0gYXMgbWFpbiBwYWNrYWdlIGZvcm1hdCcpCi0gICAgICAgIGJpdGJha2UoIi1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkNfUlBNX0lNQUdFX0dFTiA9ICIxIicpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCInKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBsb2dfZGF0YV9maWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoIldPUktESVIiLCAiY29yZS1pbWFnZS1taW5pbWFsIiksICJ0ZW1wL2xvZy5kb19yb290ZnMiKQotICAgICAgICBsb2dfZGF0YV9jcmVhdGVkID0gZnRvb2xzLnJlYWRfZmlsZShsb2dfZGF0YV9maWxlKQotICAgICAgICBpbmNyZW1lbnRhbF9jcmVhdGVkID0gcmUuc2VhcmNoKCJJbnN0YWxsaW5nICA6IHBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIiwgbG9nX2RhdGFfY3JlYXRlZCkKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNyZW1lbnRhbF9jcmVhdGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgbG9nX2RhdGFfY3JlYXRlZCkKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgbG9nX2RhdGFfcmVtb3ZlZCA9IGZ0b29scy5yZWFkX2ZpbGUobG9nX2RhdGFfZmlsZSkKLSAgICAgICAgaW5jcmVtZW50YWxfcmVtb3ZlZCA9IHJlLnNlYXJjaCgiRXJhc2luZyAgICAgOiBwYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCIsIGxvZ19kYXRhX3JlbW92ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNyZW1lbnRhbF9yZW1vdmVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgbG9nX2RhdGFfcmVtb3ZlZCkKLQotICAgIEB0ZXN0Y2FzZSgyODYpCi0gICAgZGVmIHRlc3RfY2NhY2hlX3Rvb2woc2VsZik6Ci0gICAgICAgIGJpdGJha2UoImNjYWNoZS1uYXRpdmUiKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTWVNST09UX0RFU1RESVInLCAnYmluZGlyJ10sICdjY2FjaGUtbmF0aXZlJykKLSAgICAgICAgcCA9IGJiX3ZhcnNbJ1NZU1JPT1RfREVTVERJUiddICsgYmJfdmFyc1snYmluZGlyJ10gKyAiLyIgKyAiY2NhY2hlIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocCksIG1zZyA9ICJObyBjY2FjaGUgZm91bmQgKCVzKSIgJSBwKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5IRVJJVCArPSAiY2NhY2hlIicpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbTQnKQotICAgICAgICBiaXRiYWtlKCJtNCAtZiAtYyBjb21waWxlIikKLSAgICAgICAgbG9nX2NvbXBpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiV09SS0RJUiIsIm00IiksICJ0ZW1wL2xvZy5kb19jb21waWxlIikKLSAgICAgICAgcmVzID0gcnVuQ21kKCJncmVwIGNjYWNoZSAlcyIgJSBsb2dfY29tcGlsZSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMsIG1zZz0iTm8gbWF0Y2ggZm9yIGNjYWNoZSBpbiBtNCBsb2cuZG9fY29tcGlsZS4gRm9yIGZ1cnRoZXIgZGV0YWlsczogJXMiICUgbG9nX2NvbXBpbGUpCi0KLSAgICBAdGVzdGNhc2UoMTQzNSkKLSAgICBkZWYgdGVzdF9yZWFkX29ubHlfaW1hZ2Uoc2VsZik6Ci0gICAgICAgIGRpc3Ryb19mZWF0dXJlcyA9IGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpCi0gICAgICAgIGlmIG5vdCAoJ3gxMScgaW4gZGlzdHJvX2ZlYXR1cmVzIGFuZCAnb3BlbmdsJyBpbiBkaXN0cm9fZmVhdHVyZXMpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1zYXRvIHJlcXVpcmVzIHgxMSBhbmQgb3BlbmdsIGluIGRpc3RybyBmZWF0dXJlcycpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAicmVhZC1vbmx5LXJvb3RmcyInKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8iKQotICAgICAgICAjIGRvX2ltYWdlIHdpbGwgZmFpbCBpZiB0aGVyZSBhcmUgYW55IHBlbmRpbmcgcG9zdGluc3RzCi0KLWNsYXNzIERpc2tNb25UZXN0KG9lU2VsZlRlc3QpOgotCi0gICAgQHRlc3RjYXNlKDI3NykKLSAgICBkZWYgdGVzdF9zdG9wdGFza19iZWhhdmlvcihzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJTVE9QVEFTS1MsJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIsIGlnbm9yZV9zdGF0dXMgPSBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0VSUk9SOiBObyBuZXcgdGFza3MgY2FuIGJlIGV4ZWN1dGVkIHNpbmNlIHRoZSBkaXNrIHNwYWNlIG1vbml0b3IgYWN0aW9uIGlzICJTVE9QVEFTS1MiIScgaW4gcmVzLm91dHB1dCwgbXNnID0gIlRhc2tzIHNob3VsZCBoYXZlIHN0b3BwZWQuIERpc2sgbW9uaXRvciBpcyBzZXQgdG8gU1RPUFRBU0s6ICVzIiAlIHJlcy5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJBQk9SVCwke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoIm00IiwgaWdub3JlX3N0YXR1cyA9IFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRVJST1I6IEltbWVkaWF0ZWx5IGFib3J0IHNpbmNlIHRoZSBkaXNrIHNwYWNlIG1vbml0b3IgYWN0aW9uIGlzICJBQk9SVCIhJyBpbiByZXMub3V0cHV0LCAiVGFza3Mgc2hvdWxkIGhhdmUgYmVlbiBhYm9ydGVkIGltbWVkaWF0ZWxseS4gRGlzayBtb25pdG9yIGlzIHNldCB0byBBQk9SVDogJXMiICUgcmVzLm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIldBUk4sJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV0FSTklORzogVGhlIGZyZWUgc3BhY2UnIGluIHJlcy5vdXRwdXQsIG1zZyA9ICJBIHdhcm5pbmcgc2hvdWxkIGhhdmUgYmVlbiBkaXNwbGF5ZWQgZm9yIGRpc2sgbW9uaXRvciBpcyBzZXQgdG8gV0FSTjogJXMiICVyZXMub3V0cHV0KQotCi1jbGFzcyBTYW5pdHlPcHRpb25zVGVzdChvZVNlbGZUZXN0KToKLSAgICBkZWYgZ2V0bGluZShzZWxmLCByZXMsIGxpbmUpOgotICAgICAgICBmb3IgbCBpbiByZXMub3V0cHV0LnNwbGl0KCdcbicpOgotICAgICAgICAgICAgaWYgbGluZSBpbiBsOgotICAgICAgICAgICAgICAgIHJldHVybiBsCi0KLSAgICBAdGVzdGNhc2UoOTI3KQotICAgIGRlZiB0ZXN0X29wdGlvbnNfd2FybnFhX2Vycm9ycWFfc3dpdGNoKHNlbGYpOgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQotICAgICAgICBpZiAicGFja2FnZXMtbGlzdCIgbm90IGluIGdldF9iYl92YXIoIkVSUk9SX1FBIik6Ci0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoIkVSUk9SX1FBX2FwcGVuZCA9IFwiIHBhY2thZ2VzLWxpc3RcIiIpCi0KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnUEFDS0FHRVMgKz0gXCIke1BOfS1kYmdcIicpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgLWYgLWMgcGFja2FnZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kYmcgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZz1yZXMub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ1BBQ0tBR0VTICs9IFwiJHtQTn0tZGJnXCInKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0VSUk9SX1FBX3JlbW92ZSA9ICJwYWNrYWdlcy1saXN0IicpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnV0FSTl9RQV9hcHBlbmQgPSAiIHBhY2thZ2VzLWxpc3QiJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSAtZiAtYyBwYWNrYWdlIikKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kYmcgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiV0FSTklORzoiKSwgbXNnPXJlcy5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMjc4KQotICAgIGRlZiB0ZXN0X3Nhbml0eV91bnNhZmVfc2NyaXB0X3JlZmVyZW5jZXMoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdXQVJOX1FBX2FwcGVuZCA9ICIgdW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0cyInKQotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gZ3ppcCcpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoImd6aXAgLWYgLWMgcGFja2FnZV9xYSIpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IGd6aXAiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxpbmUsICJXQVJOSU5HOiBRQSBJc3N1ZTogZ3ppcCBtZXNzYWdlIGlzIHByZXNlbnQgaW4gYml0YmFrZSdzIG91dHB1dCBhbmQgc2hvdWxkbid0IGJlOiAlcyIgJSByZXMub3V0cHV0KQotCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygiIiIKLWRvX2luc3RhbGxfYXBwZW5kX3BuLWd6aXAgKCkgewotCWVjaG8gIlxuJHtiaW5kaXJ9L3Rlc3QiID4+ICR7RH0ke2JpbmRpcn0vemNhdAotfQotIiIiKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJnemlwIC1mIC1jIHBhY2thZ2VfcWEiKQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiBnemlwIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiV0FSTklORzoiKSwgIldBUk5JTkc6IFFBIElzc3VlOiBnemlwIG1lc3NhZ2UgaXMgbm90IHByZXNlbnQgaW4gYml0YmFrZSdzIG91dHB1dDogJXMiICUgcmVzLm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxNDIxKQotICAgIGRlZiB0ZXN0X2xheWVyX3dpdGhvdXRfZ2l0X2RpcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgbGF5ZXIgZ2l0IHJldmlzaW9ucyBhcmUgZGlzcGxheWVkIGFuZCBkbyBub3QgZmFpbCB3aXRob3V0IGdpdCByZXBvc2l0b3J5Ci0gICAgICAgIEV4cGVjdGVkOiAgICBUaGUgYnVpbGQgdG8gYmUgc3VjY2Vzc2Z1bCBhbmQgd2l0aG91dCAiZmF0YWwiIGVycm9ycwotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBkaXJwYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCi0KLSAgICAgICAgZHVtbXlfbGF5ZXJfbmFtZSA9ICdtZXRhLWR1bW15JwotICAgICAgICBkdW1teV9sYXllcl9wYXRoID0gb3MucGF0aC5qb2luKGRpcnBhdGgsIGR1bW15X2xheWVyX25hbWUpCi0gICAgICAgIGR1bW15X2xheWVyX2NvbmZfZGlyID0gb3MucGF0aC5qb2luKGR1bW15X2xheWVyX3BhdGgsICdjb25mJykKLSAgICAgICAgb3MubWFrZWRpcnMoZHVtbXlfbGF5ZXJfY29uZl9kaXIpCi0gICAgICAgIGR1bW15X2xheWVyX2NvbmZfcGF0aCA9IG9zLnBhdGguam9pbihkdW1teV9sYXllcl9jb25mX2RpciwgJ2xheWVyLmNvbmYnKQotCi0gICAgICAgIGR1bW15X2xheWVyX2NvbnRlbnQgPSAnQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iXG4nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiXG4nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfQ09MTEVDVElPTlMgKz0gIiVzIlxuJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX1BBVFRFUk5fJXMgPSAiXiR7TEFZRVJESVJ9LyJcbicgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9QUklPUklUWV8lcyA9ICI2IlxuJyAlIChkdW1teV9sYXllcl9uYW1lLCBkdW1teV9sYXllcl9uYW1lLCBkdW1teV9sYXllcl9uYW1lKQotCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKGR1bW15X2xheWVyX2NvbmZfcGF0aCwgZHVtbXlfbGF5ZXJfY29udGVudCkKLQotICAgICAgICBiYmxheWVyc19jb25mID0gJ0JCTEFZRVJTICs9ICIlcyJcbicgJSBkdW1teV9sYXllcl9wYXRoCi0gICAgICAgIHNlbGYud3JpdGVfYmJsYXllcnNfY29uZmlnKGJibGF5ZXJzX2NvbmYpCi0KLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0KLSAgICAgICAgcmV0ID0gYml0YmFrZSgnLW4gJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgZXJyID0gJ2ZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeScKLQotICAgICAgICBzaHV0aWwucm10cmVlKGRpcnBhdGgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihlcnIsIHJldC5vdXRwdXQpCi0KLQotY2xhc3MgQnVpbGRoaXN0b3J5VGVzdHMoQnVpbGRoaXN0b3J5QmFzZSk6Ci0KLSAgICBAdGVzdGNhc2UoMjkzKQotICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9iYXNpYyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbigneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGdldF9iYl92YXIoJ0JVSUxESElTVE9SWV9ESVInKSksICJidWlsZGhpc3RvcnkgZGlyIHdhcyBub3QgY3JlYXRlZC4iKQotCi0gICAgQHRlc3RjYXNlKDI5NCkKLSAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfYnVpbGR0aW1lX3ByX2JhY2t3YXJkcyhzZWxmKToKLSAgICAgICAgdGFyZ2V0ID0gJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnCi0gICAgICAgIGVycm9yID0gIkVSUk9SOi4qUUEgSXNzdWU6IFBhY2thZ2UgdmVyc2lvbiBmb3IgcGFja2FnZSAlcyB3ZW50IGJhY2t3YXJkcyB3aGljaCB3b3VsZCBicmVhayBwYWNrYWdlIGZlZWRzIGZyb20gKC4qLXIxLiogdG8gLiotcjAuKikiICUgdGFyZ2V0Ci0gICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjFcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1UcnVlKQotICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIwXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1UcnVlLCBlcnJvcl9yZWdleD1lcnJvcikKLQotY2xhc3MgQXJjaGl2ZXJUZXN0KG9lU2VsZlRlc3QpOgotICAgIEB0ZXN0Y2FzZSg5MjYpCi0gICAgZGVmIHRlc3RfYXJjaF93b3JrX2Rpcl9hbmRfZXhwb3J0X3NvdXJjZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgZm9yIGFyY2hpdmluZyB0aGUgd29yayBkaXJlY3RvcnkgYW5kIGV4cG9ydGluZyB0aGUgc291cmNlIGZpbGVzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVQgKz0gXCJhcmNoaXZlclwiXG5BUkNISVZFUl9NT0RFW3NyY10gPSBcIm9yaWdpbmFsXCJcbkFSQ0hJVkVSX01PREVbc3JwbV0gPSBcIjFcIiIpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMCwgIlxuQ291bGRuJ3QgYnVpbGQgeGN1cnNvcnRyYW5zcGFyZW50dGhlbWUuXG5iaXRiYWtlIG91dHB1dCAlcyIgJSByZXMub3V0cHV0KQotICAgICAgICBkZXBsb3lfZGlyX3NyYyA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfU1JDJykKLSAgICAgICAgcGtnc19wYXRoID0gZy5nbG9iKHN0cihkZXBsb3lfZGlyX3NyYykgKyAiL2FsbGFyY2gqL3hjdXJzKiIpCi0gICAgICAgIHNyY19maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvciouc3JjLnJwbSIKLSAgICAgICAgdGFyX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi50YXIuZ3oiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoZy5nbG9iKHNyY19maWxlX2dsb2IpIGFuZCBnLmdsb2IodGFyX2ZpbGVfZ2xvYikpLCAiQ291bGRuJ3QgZmluZCAuc3JjLnJwbSBhbmQgLnRhci5neiBmaWxlcyB1bmRlciAlcy9hbGxhcmNoKi94Y3Vyc29yKiIgJSBkZXBsb3lfZGlyX3NyYykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOTkxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CkBAIC0wLDAgKzEsMjc4IEBACisjIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBnbG9iCitpbXBvcnQgZXJybm8KK2Zyb20gdW5pdHRlc3QudXRpbCBpbXBvcnQgc2FmZV9yZXByCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIE9FU2VsZnRlc3RUZXN0Q2FzZShPRVRlc3RDYXNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0icnVuVGVzdCIpOgorICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMgPSBbXQorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKG1ldGhvZE5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIGNscykuc2V0VXBDbGFzcygpCisKKyAgICAgICAgY2xzLnRlc3RsYXllcl9wYXRoID0gY2xzLnRjLmNvbmZpZ19wYXRoc1sndGVzdGxheWVyX3BhdGgnXQorICAgICAgICBjbHMuYnVpbGRkaXIgPSBjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddCisKKyAgICAgICAgY2xzLmxvY2FsY29uZl9wYXRoID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snbG9jYWxjb25mJ10KKyAgICAgICAgY2xzLmxvY2FsY29uZl9iYWNrdXAgPSBjbHMudGMuY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10KKyAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWydiYmxheWVycyddCisgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19iYWNrdXAgPSBjbHMudGMuY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXQorCisgICAgICAgIGNscy50ZXN0aW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXSwKKyAgICAgICAgICAgICAgICAiY29uZi9zZWxmdGVzdC5pbmMiKQorICAgICAgICBjbHMudGVzdGluY19iYmxheWVyc19wYXRoID0gb3MucGF0aC5qb2luKGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10sCisgICAgICAgICAgICAgICAgImNvbmYvYmJsYXllcnMuaW5jIikKKyAgICAgICAgY2xzLm1hY2hpbmVpbmNfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddLAorICAgICAgICAgICAgICAgICJjb25mL21hY2hpbmUuaW5jIikKKworICAgICAgICBjbHMuX3RyYWNrX2Zvcl9jbGVhbnVwID0gWworICAgICAgICAgICAgY2xzLnRlc3RpbmNfcGF0aCwgY2xzLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwKKyAgICAgICAgICAgIGNscy5tYWNoaW5laW5jX3BhdGgsIGNscy5sb2NhbGNvbmZfYmFja3VwLAorICAgICAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX2JhY2t1cF0KKworICAgICAgICBjbHMuYWRkX2luY2x1ZGUoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlbW92ZV9pbmNsdWRlKCkKKyAgICAgICAgY2xzLnJlbW92ZV9pbmNfZmlsZXMoKQorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYWRkX2luY2x1ZGUoY2xzKToKKyAgICAgICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0IiBcCisgICAgICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikpOgorICAgICAgICAgICAgICAgIGNscy5sb2dnZXIuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgc2VsZnRlc3QuaW5jXCIgaW4gJXMiICUgb3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpKQorICAgICAgICAgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0XG5pbmNsdWRlIG1hY2hpbmUuaW5jXG5pbmNsdWRlIHNlbGZ0ZXN0LmluYyIpCisKKyAgICAgICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0IiBcCisgICAgICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikpOgorICAgICAgICAgICAgICAgIGNscy5sb2dnZXIuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgYmJsYXllcnMuaW5jXCIgaW4gYmJsYXllcnMuY29uZiIpCisgICAgICAgICAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3RcbmluY2x1ZGUgYmJsYXllcnMuaW5jIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiByZW1vdmVfaW5jbHVkZShjbHMpOgorICAgICAgICBpZiAiI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHkiIFwKKyAgICAgICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpKToKKyAgICAgICAgICAgICAgICBjbHMubG9nZ2VyLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gbG9jYWwuY29uZiIpCisgICAgICAgICAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBtYWNoaW5lLmluY1xuaW5jbHVkZSBzZWxmdGVzdC5pbmMiKQorCisgICAgICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAorICAgICAgICAgICAgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikpOgorICAgICAgICAgICAgICAgIGNscy5sb2dnZXIuaW5mbygiUmVtb3ZpbmcgdGhlIGluY2x1ZGUgZnJvbSBiYmxheWVycy5jb25mIikKKyAgICAgICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5XG5pbmNsdWRlIGJibGF5ZXJzLmluYyIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVtb3ZlX2luY19maWxlcyhjbHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvc2VsZnRlc3QuaW5jIikpCisgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhjbHMudGVzdGxheWVyX3BhdGgpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBmID09ICd0ZXN0X3JlY2lwZS5pbmMnOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBmKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3IgaW5jbF9maWxlIGluIFsnY29uZi9iYmxheWVycy5pbmMnLCAnY29uZi9tYWNoaW5lLmluYyddOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCBpbmNsX2ZpbGUpKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLmNoZGlyKHNlbGYuYnVpbGRkaXIpCisgICAgICAgICMgQ2hlY2sgaWYgbG9jYWwuY29uZiBvciBiYmxheWVycy5jb25mIGZpbGVzIGJhY2t1cCBleGlzdHMKKyAgICAgICAgIyBmcm9tIGEgcHJldmlvdXMgZmFpbGVkIHRlc3QgYW5kIHJlc3RvcmUgdGhlbQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXApIG9yIG9zLnBhdGguaXNmaWxlKAorICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJcCitGb3VuZCBhIGxvY2FsLmNvbmYgYW5kL29yIGJibGF5ZXJzLmNvbmYgYmFja3VwIGZyb20gYSBwcmV2aW91c2x5IGFib3J0ZWQgdGVzdC5cCitSZXN0b3JpbmcgdGhlc2UgZmlsZXMgbm93LCBidXQgdGVzdHMgc2hvdWxkIGJlIHJlLWV4ZWN1dGVkIGZyb20gYSBjbGVhbiBlbnZpcm9ubWVudFwKK3RvIGVuc3VyZSBhY2N1cmF0ZSByZXN1bHRzLiIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCwgc2VsZi5sb2NhbGNvbmZfcGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBiYWNrdXAgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZgorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX3BhdGgsIHNlbGYubG9jYWxjb25mX2JhY2t1cCkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgsIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNyZWF0aW5nIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYgYmFja3Vwcy4iKQorICAgICAgICAjIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcHJldmlvdXMgdGVzdCBsZWZ0IGFyb3VuZCBpbiBjb25maWcgb3IgaW5jIGZpbGVzCisgICAgICAgICMgaWYgaXQgZmFpbGVkIHNvIHdlIG5lZWQgYSBmcmVzaCBzdGFydAorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi50ZXN0aW5jX3BhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnRlc3RsYXllcl9wYXRoKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGlmIGYgPT0gJ3Rlc3RfcmVjaXBlLmluYyc6CisgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgZikpCisKKyAgICAgICAgZm9yIGluY2xfZmlsZSBpbiBbc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIHNlbGYubWFjaGluZWluY19wYXRoXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoaW5jbF9maWxlKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBpZiBzZWxmLnRjLmN1c3RvbW1hY2hpbmU6CisgICAgICAgICAgICBtYWNoaW5lX2NvbmYgPSAnTUFDSElORSA/Pz0gIiVzIlxuJyAlIHNlbGYudGMuY3VzdG9tbWFjaGluZQorICAgICAgICAgICAgc2VsZi5zZXRfbWFjaGluZV9jb25maWcobWFjaGluZV9jb25mKQorCisgICAgICAgICMgdGVzdHMgbWlnaHQgbmVlZCB0aGVpciBvd24gc2V0dXAKKyAgICAgICAgIyBidXQgaWYgdGhleSBvdmVyd3JpdGUgdGhpcyBvbmUgdGhleSBoYXZlIHRvIGNhbGwKKyAgICAgICAgIyBzdXBlciBlYWNoIHRpbWUsIHNvIGxldCdzIGdpdmUgdGhlbSBhbiBhbHRlcm5hdGl2ZQorICAgICAgICBzZWxmLnNldFVwTG9jYWwoKQorCisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzOgorICAgICAgICAgICAgZmFpbGVkX2V4dHJhX2NvbW1hbmRzID0gW10KKyAgICAgICAgICAgIGZvciBjb21tYW5kIGluIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kczoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY29tbWFuZCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQuc3RhdHVzID09ICAwOgorICAgICAgICAgICAgICAgICAgICBmYWlsZWRfZXh0cmFfY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCisgICAgICAgICAgICBpZiBmYWlsZWRfZXh0cmFfY29tbWFuZHM6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygidGVhckRvd24gY29tbWFuZHMgaGF2ZSBmYWlsZWQ6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBmYWlsZWRfZXh0cmFfY29tbWFuZHMpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVHJ5aW5nIHRvIG1vdmUgb24uIikKKyAgICAgICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcyA9IFtdCisKKyAgICAgICAgaWYgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXA6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl90cmFja19mb3JfY2xlYW51cDoKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXAgPSBbXQorCisgICAgICAgIHNlbGYudGVhckRvd25Mb2NhbCgpCisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgc2VsZikudGVhckRvd24oKQorCisgICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBhZGRfY29tbWFuZF90b190ZWFyRG93bihzZWxmLCBjb21tYW5kKToKKyAgICAgICAgIiIiQWRkIHRlc3Qgc3BlY2lmaWMgY29tbWFuZHMgdG8gdGhlIHRlYXJEb3duIG1ldGhvZCIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5nIGNvbW1hbmQgJyVzJyB0byB0ZWFyRG93biBmb3IgdGhpcyB0ZXN0LiIgJSBjb21tYW5kKQorICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCisKKyAgICBkZWYgdHJhY2tfZm9yX2NsZWFudXAoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIkFkZCB0ZXN0IHNwZWNpZmljIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIGJlIHJlbW92ZWQgaW4gdGhlIHRlYXJEb3duIG1ldGhvZCIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5nIHBhdGggJyVzJyB0byBiZSBjbGVhbmVkIHVwIHdoZW4gdGVzdCBpcyBvdmVyIiAlIHBhdGgpCisgICAgICAgIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwLmFwcGVuZChwYXRoKQorCisgICAgZGVmIHdyaXRlX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYyIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKKworICAgICAgICBpZiBzZWxmLnRjLmN1c3RvbW1hY2hpbmUgYW5kICdNQUNISU5FJyBpbiBkYXRhOgorICAgICAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygnTUFDSElORSBvdmVycmlkZGVuOiAlcycgJSBtYWNoaW5lKQorCisgICAgZGVmIGFwcGVuZF9jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIkFwcGVuZCB0byA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKKworICAgICAgICBpZiBzZWxmLnRjLmN1c3RvbW1hY2hpbmUgYW5kICdNQUNISU5FJyBpbiBkYXRhOgorICAgICAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygnTUFDSElORSBvdmVycmlkZGVuOiAlcycgJSBtYWNoaW5lKQorCisgICAgZGVmIHJlbW92ZV9jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIlJlbW92ZSBkYXRhIGZyb20gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCisKKyAgICBkZWYgcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSk6CisgICAgICAgICIiIlJldHVybiBhYnNvbHV0ZSBwYXRoIG9mIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGUsICd0ZXN0X3JlY2lwZS5pbmMnKQorCisgICAgZGVmIHdyaXRlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSB0byBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShpbmNfZmlsZSwgZGF0YSkKKyAgICAgICAgcmV0dXJuIGluY19maWxlCisKKyAgICBkZWYgYXBwZW5kX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgorICAgICAgICAiIiJBcHBlbmQgZGF0YSB0byBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCisgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShpbmNfZmlsZSwgZGF0YSkKKyAgICAgICAgcmV0dXJuIGluY19maWxlCisKKyAgICBkZWYgcmVtb3ZlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgorICAgICAgICAiIiJSZW1vdmUgZGF0YSBmcm9tIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCisgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKGluY19maWxlLCBkYXRhKQorCisgICAgZGVmIGRlbGV0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlKToKKyAgICAgICAgIiIiRGVsZXRlIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyBmaWxlIiIiCisgICAgICAgIGluY19maWxlID0gc2VsZi5yZWNpcGVpbmMocmVjaXBlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRGVsZXRpbmcgZmlsZTogJXMiICUgaW5jX2ZpbGUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnJlbW92ZShpbmNfZmlsZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgZGVmIHdyaXRlX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCisKKyAgICBkZWYgYXBwZW5kX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiQXBwZW5kIHRvIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQorCisgICAgZGVmIHJlbW92ZV9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIlJlbW92ZSBkYXRhIGZyb20gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCisKKyAgICBkZWYgc2V0X21hY2hpbmVfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvbWFjaGluZS5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLm1hY2hpbmVpbmNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYubWFjaGluZWluY19wYXRoLCBkYXRhKQorCisgICAgIyBjaGVjayBkb2VzIHBhdGggZXhpc3QKKyAgICBkZWYgYXNzZXJ0RXhpc3RzKHNlbGYsIGV4cHIsIG1zZz1Ob25lKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGV4cHIpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csICIlcyBkb2VzIG5vdCBleGlzdCIgJSBzYWZlX3JlcHIoZXhwcikpCisgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQorCisgICAgIyBjaGVjayBkb2VzIHBhdGggbm90IGV4aXN0CisgICAgZGVmIGFzc2VydE5vdEV4aXN0cyhzZWxmLCBleHByLCBtc2c9Tm9uZSk6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGV4cHIpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csICIlcyBleGlzdHMgd2hlbiBpdCBzaG91bGQgbm90IiAlIHNhZmVfcmVwcihleHByKSkKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9fc3N0YXRldGVzdHNfbm9hdXRvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvX3NzdGF0ZXRlc3RzX25vYXV0by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTU4OTYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvX3NzdGF0ZXRlc3RzX25vYXV0by5weQpAQCAtMCwwICsxLDkyIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuc3N0YXRlIGltcG9ydCBTU3RhdGVCYXNlCisKKworY2xhc3MgUmVidWlsZEZyb21TU3RhdGUoU1N0YXRlQmFzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgc3VwZXIoUmVidWlsZEZyb21TU3RhdGUsIHNlbGYpLnNldFVwQ2xhc3MoKQorICAgICAgICBzZWxmLmJ1aWxkZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpKQorCisgICAgZGVmIGdldF9kZXBfdGFyZ2V0cyhzZWxmLCBwcmltYXJ5X3RhcmdldHMpOgorICAgICAgICBmb3VuZF90YXJnZXRzID0gW10KKyAgICAgICAgYml0YmFrZSgiLWcgIiArICcgJy5qb2luKG1hcChzdHIsIHByaW1hcnlfdGFyZ2V0cykpKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdwbi1idWlsZGxpc3QnKSwgJ3InKSBhcyBwbmZpbGU6CisgICAgICAgICAgICBmb3VuZF90YXJnZXRzID0gcG5maWxlLnJlYWQoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgcmV0dXJuIGZvdW5kX3RhcmdldHMKKworICAgIGRlZiBjb25maWd1cmVfYnVpbGRkaXIoc2VsZiwgYnVpbGRkaXIpOgorICAgICAgICBvcy5ta2RpcihidWlsZGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChidWlsZGRpcikKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicpKQorICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9sb2NhbC5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvbG9jYWwuY29uZicpKQorICAgICAgICBjb25maWcgPSB7fQorICAgICAgICBjb25maWdbJ2RlZmF1bHRfc3N0YXRlX2RpciddID0gIlNTVEFURV9ESVIgPz0gXCIke1RPUERJUn0vc3N0YXRlLWNhY2hlXCIiCisgICAgICAgIGNvbmZpZ1snbnVsbF9zc3RhdGVfbWlycm9ycyddID0gIlNTVEFURV9NSVJST1JTID0gXCJcIiIKKyAgICAgICAgY29uZmlnWydkZWZhdWx0X3RtcF9kaXInXSA9ICJUTVBESVIgPSBcIiR7VE9QRElSfS90bXBcIiIKKyAgICAgICAgZm9yIGtleSBpbiBjb25maWc6CisgICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9zZWxmdGVzdC5pbmMnKSwgY29uZmlnW2tleV0pCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2JibGF5ZXJzLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9iYmxheWVycy5jb25mJykpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2F1dG8uY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2F1dG8uY29uZicpKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFyZGxpbmtfdHJlZShzZWxmLCBzcmMsIGRzdCk6CisgICAgICAgIG9zLm1rZGlyKGRzdCkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3QpCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6CisgICAgICAgICAgICBpZiByb290ID09IHNyYzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRzdCwgcm9vdC5zcGxpdChzcmMpWzFdWzE6XSkpCisgICAgICAgICAgICBmb3Igc3N0YXRlX2ZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgb3MubGluayhvcy5wYXRoLmpvaW4ocm9vdCwgc3N0YXRlX2ZpbGUpLCBvcy5wYXRoLmpvaW4oZHN0LCByb290LnNwbGl0KHNyYylbMV1bMTpdLCBzc3RhdGVfZmlsZSkpCisKKyAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoc2VsZiwgcHJpbWFyeV90YXJnZXRzLCByZWxvY2F0ZT1GYWxzZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9RmFsc2UpOgorICAgICAgICBidWlsZEEgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2J1aWxkQScpCisgICAgICAgIGlmIHJlbG9jYXRlOgorICAgICAgICAgICAgYnVpbGRCID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdidWlsZEInKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVpbGRCID0gYnVpbGRBCisKKyAgICAgICAgaWYgcmVidWlsZF9kZXBlbmRlbmNpZXM6CisgICAgICAgICAgICByZWJ1aWxkX3RhcmdldHMgPSBzZWxmLmdldF9kZXBfdGFyZ2V0cyhwcmltYXJ5X3RhcmdldHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWJ1aWxkX3RhcmdldHMgPSBwcmltYXJ5X3RhcmdldHMKKworICAgICAgICBzZWxmLmNvbmZpZ3VyZV9idWlsZGRpcihidWlsZEEpCisgICAgICAgIHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEEpKSArICdiaXRiYWtlICAnICsgJyAnLmpvaW4obWFwKHN0ciwgcHJpbWFyeV90YXJnZXRzKSksIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCisgICAgICAgIHNlbGYuaGFyZGxpbmtfdHJlZShvcy5wYXRoLmpvaW4oYnVpbGRBLCAnc3N0YXRlLWNhY2hlJyksIG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnc3N0YXRlLWNhY2hlLWJ1aWxkQScpKQorICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQSkKKworICAgICAgICBmYWlsZWRfcmVidWlsZCA9IFtdCisgICAgICAgIGZhaWxlZF9jbGVhbnNzdGF0ZSA9IFtdCisgICAgICAgIGZvciB0YXJnZXQgaW4gcmVidWlsZF90YXJnZXRzOgorICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfYnVpbGRkaXIoYnVpbGRCKQorICAgICAgICAgICAgc2VsZi5oYXJkbGlua190cmVlKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnc3N0YXRlLWNhY2hlLWJ1aWxkQScpLCBvcy5wYXRoLmpvaW4oYnVpbGRCLCAnc3N0YXRlLWNhY2hlJykpCisKKyAgICAgICAgICAgIHJlc3VsdF9jbGVhbnNzdGF0ZSA9IHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEIpKSArICdiaXRiYWtlIC1jY2xlYW5zc3RhdGUgJyArIHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQorICAgICAgICAgICAgaWYgbm90IHJlc3VsdF9jbGVhbnNzdGF0ZS5zdGF0dXMgPT0gMDoKKyAgICAgICAgICAgICAgICBmYWlsZWRfY2xlYW5zc3RhdGUuYXBwZW5kKHRhcmdldCkKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByZXN1bHRfYnVpbGQgPSBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRCKSkgKyAnYml0YmFrZSAnICsgdGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUsIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCisgICAgICAgICAgICBpZiBub3QgcmVzdWx0X2J1aWxkLnN0YXR1cyA9PSAwOgorICAgICAgICAgICAgICAgIGZhaWxlZF9yZWJ1aWxkLmFwcGVuZCh0YXJnZXQpCisKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRCKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbGVkX3JlYnVpbGQsIG1zZz0iVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgZmFpbGVkIHRvIHJlYnVpbGQ6ICVzIiAlICcgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9yZWJ1aWxkKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbGVkX2NsZWFuc3N0YXRlLCBtc2c9IlRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGZhaWxlZCBjbGVhbnNzdGF0ZShhbGwgb3RoZXJzIGhhdmUgcGFzc2VkIGJvdGggY2xlYW5zc3RhdGUgYW5kIHJlYnVpbGQgZnJvbSBzc3RhdGUgdGVzdHMpOiAlcyIgJSAnICcuam9pbihtYXAoc3RyLCBmYWlsZWRfY2xlYW5zc3RhdGUpKSkKKworICAgIGRlZiB0ZXN0X3NzdGF0ZV9yZWxvY2F0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKFsnY29yZS1pbWFnZS1zYXRvLXNkayddLCByZWxvY2F0ZT1UcnVlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1UcnVlKQorCisgICAgZGVmIHRlc3Rfc3N0YXRlX3JlYnVpbGQoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoWydjb3JlLWltYWdlLXNhdG8tc2RrJ10sIHJlbG9jYXRlPUZhbHNlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1UcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjFhNTIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKQEAgLTAsMCArMSwxMTggQEAKK2ltcG9ydCBvcworaW1wb3J0IGdsb2IKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBBcmNoaXZlcihPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDEzNDUpCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfYWxsb3dzX3RvX2ZpbHRlcl9vbl9yZWNpcGVfbmFtZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUaGUgYXJjaGl2ZXIgc2hvdWxkIG9mZmVyIHRoZSBwb3NzaWJpbGl0eSB0byBmaWx0ZXIgb24gdGhlIHJlY2lwZS4gKCM2OTI5KQorICAgICAgICBFeHBlY3RlZDogICAgMS4gSW5jbHVkZWQgcmVjaXBlIChidXN5Ym94KSBzaG91bGQgYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgIDIuIEV4Y2x1ZGVkIHJlY2lwZSAoemxpYikgc2hvdWxkIGJlIGV4Y2x1ZGVkCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGluY2x1ZGVfcmVjaXBlID0gJ2J1c3lib3gnCisgICAgICAgIGV4Y2x1ZGVfcmVjaXBlID0gJ3psaWInCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9JTkNMVURFID0gIiVzIlxuJyAlIGluY2x1ZGVfcmVjaXBlCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9FWENMVURFID0gIiVzIlxuJyAlIGV4Y2x1ZGVfcmVjaXBlCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlIChpbmNsdWRlX3JlY2lwZSwgZXhjbHVkZV9yZWNpcGUpKQorICAgICAgICBiaXRiYWtlKCItYyBkZXBsb3lfYXJjaGl2ZXMgJXMgJXMiICUgKGluY2x1ZGVfcmVjaXBlLCBleGNsdWRlX3JlY2lwZSkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUyddKQorICAgICAgICBzcmNfcGF0aCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGF0IGluY2x1ZGVfcmVjaXBlIHdhcyBpbmNsdWRlZAorICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aCArICcvJXMtKicgJSBpbmNsdWRlX3JlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIGluY2x1ZGVfcmVjaXBlKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBleGNsdWRlX3JlY2lwZSB3YXMgZXhjbHVkZWQKKyAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGggKyAnLyVzLSonICUgZXhjbHVkZV9yZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgZXhjbHVkZV9yZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTkwMCkKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9maWx0ZXJzX2J5X3R5cGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGhlIGFyY2hpdmVyIGlzIGRvY3VtZW50ZWQgdG8gZmlsdGVyIG9uIHRoZSByZWNpcGUgdHlwZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGluY2x1ZGVkIHJlY2lwZSB0eXBlICh0YXJnZXQpIHNob3VsZCBiZSBpbmNsdWRlZAorICAgICAgICAgICAgICAgICAgICAgMi4gb3RoZXIgdHlwZXMgc2hvdWxkIGJlIGV4Y2x1ZGVkCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHRhcmdldF9yZWNpcGUgPSAnaW5pdHNjcmlwdHMnCisgICAgICAgIG5hdGl2ZV9yZWNpcGUgPSAnemxpYi1uYXRpdmUnCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAidGFyZ2V0IlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAodGFyZ2V0X3JlY2lwZSwgbmF0aXZlX3JlY2lwZSkpCisgICAgICAgIGJpdGJha2UoIiVzIC1jIGRlcGxveV9hcmNoaXZlcyAlcyIgJSAodGFyZ2V0X3JlY2lwZSwgbmF0aXZlX3JlY2lwZSkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUycsICdCVUlMRF9TWVMnXSkKKyAgICAgICAgc3JjX3BhdGhfdGFyZ2V0ID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKKyAgICAgICAgc3JjX3BhdGhfbmF0aXZlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ0JVSUxEX1NZUyddKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0YXJnZXRfcmVjaXBlIHdhcyBpbmNsdWRlZAorICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIHRhcmdldF9yZWNpcGUpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG5hdGl2ZV9yZWNpcGUgd2FzIGV4Y2x1ZGVkCisgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTkwMSkKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9maWx0ZXJzX2J5X3R5cGVfYW5kX25hbWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciBhcmNoaXZlcyBieSByZWNpcGUgdHlwZSwgdGFraW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWUgaW50byBhY2NvdW50LgorICAgICAgICBFeHBlY3RlZDogICAgMS4gaW5jbHVkZWQgcmVjaXBlIHR5cGUgKHRhcmdldCkgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAyLiBvdGhlciB0eXBlcyBzaG91bGQgYmUgZXhjbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgIDMuIHJlY2lwZSBieSBuYW1lIHNob3VsZCBiZSBpbmNsdWRlZCAvIGV4Y2x1ZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGluZyBwcmV2aW91cyBkZWNpc2lvbiBieSB0eXBlCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHRhcmdldF9yZWNpcGVzID0gWyAnaW5pdHNjcmlwdHMnLCAnemxpYicgXQorICAgICAgICBuYXRpdmVfcmVjaXBlcyA9IFsgJ3VwZGF0ZS1yYy5kLW5hdGl2ZScsICd6bGliLW5hdGl2ZScgXQorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gInRhcmdldCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0lOQ0xVREUgPSAiJXMiXG4nICUgbmF0aXZlX3JlY2lwZXNbMV0KKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0VYQ0xVREUgPSAiJXMiXG4nICUgdGFyZ2V0X3JlY2lwZXNbMV0KKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKCcgJy5qb2luKHRhcmdldF9yZWNpcGVzKSwgJyAnLmpvaW4obmF0aXZlX3JlY2lwZXMpKSkKKyAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzICVzJyAlICgnICcuam9pbih0YXJnZXRfcmVjaXBlcyksICcgJy5qb2luKG5hdGl2ZV9yZWNpcGVzKSkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUycsICdCVUlMRF9TWVMnXSkKKyAgICAgICAgc3JjX3BhdGhfdGFyZ2V0ID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKKyAgICAgICAgc3JjX3BhdGhfbmF0aXZlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ0JVSUxEX1NZUyddKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0YXJnZXRfcmVjaXBlWzBdIGFuZCBuYXRpdmVfcmVjaXBlc1sxXSB3ZXJlIGluY2x1ZGVkCisgICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1swXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIHRhcmdldF9yZWNpcGVzWzBdKQorCisgICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlc1sxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGVzWzFdKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBuYXRpdmVfcmVjaXBlc1swXSBhbmQgdGFyZ2V0X3JlY2lwZXNbMV0gd2VyZSBleGNsdWRlZAorICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZXNbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZXNbMF0pCisKKyAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGVzWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIHRhcmdldF9yZWNpcGVzWzFdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYmxheWVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGEyMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkKQEAgLTAsMCArMSw5NyBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXIKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEJpdGJha2VMYXllcnMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCg3NTYpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93Y3Jvc3NkZXBlbmRzKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctY3Jvc3MtZGVwZW5kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYXNwZWxsJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gZGVwZW5kZW5jaWVzIHdlcmUgc2hvd24uIGJpdGJha2UtbGF5ZXJzIHNob3ctY3Jvc3MtZGVwZW5kcyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoODMpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93bGF5ZXJzKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdtZXRhLXNlbGZ0ZXN0JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gbGF5ZXJzIHdlcmUgc2hvd24uIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCg5MykKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dhcHBlbmRzKHNlbGYpOgorICAgICAgICByZWNpcGUgPSAieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKKyAgICAgICAgYmJfZmlsZSA9IHNlbGYuZ2V0X3JlY2lwZV9iYXNlbmFtZShyZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJiX2ZpbGUgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSIlcyBmaWxlIHdhcyBub3QgcmVjb2duaXNlZC4gYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzIG91dHB1dDogJXMiICUgKGJiX2ZpbGUsIHJlc3VsdC5vdXRwdXQpKQorCisgICAgQE9FVGVzdElEKDkwKQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd292ZXJsYXllZChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LW92ZXJsYXllZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYXNwZWxsJyBpbiByZXN1bHQub3V0cHV0LCBtc2c9ImFzcGVsbCBvdmVybGF5ZWQgcmVjaXBlIHdhcyBub3QgcmVjb2duaXNlZCBiaXRiYWtlLWxheWVycyBzaG93LW92ZXJsYXllZCAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDk1KQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbihzZWxmKToKKyAgICAgICAgcmVjaXBlID0gInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCisgICAgICAgIHJlY2lwZV9wYXRoID0gInJlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKKyAgICAgICAgcmVjaXBlX2ZpbGUgPSBzZWxmLmdldF9yZWNpcGVfYmFzZW5hbWUocmVjaXBlKQorICAgICAgICB0ZXN0b3V0ZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2Rpcih0ZXN0b3V0ZGlyKSwgbXNnID0gInRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuIHNob3VsZCBub3QgZXhpc3QgYXQgdGhpcyBwb2ludCBpbiB0aW1lIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZXN0b3V0ZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGZsYXR0ZW4gJXMnICUgdGVzdG91dGRpcikKKyAgICAgICAgYmJfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0b3V0ZGlyLCByZWNpcGVfcGF0aCwgcmVjaXBlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShiYl9maWxlKSwgbXNnID0gIkNhbm5vdCBmaW5kIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfMC4xLjEuYmIgaW4gdGhlIHRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuIGxvY2FsIGRpci4iKQorICAgICAgICBjb250ZW50cyA9IGZ0b29scy5yZWFkX2ZpbGUoYmJfZmlsZSkKKyAgICAgICAgZmluZF9pbl9jb250ZW50cyA9IHJlLnNlYXJjaCgiIyMjIyMgYmJhcHBlbmRlZCBmcm9tIG1ldGEtc2VsZnRlc3QgIyMjIyNcbiguKlxuKSppbmNsdWRlIHRlc3RfcmVjaXBlLmluYyIsIGNvbnRlbnRzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9pbl9jb250ZW50cywgbXNnID0gIkZsYXR0ZW5pbmcgbGF5ZXJzIGRpZCBub3Qgd29yay4gYml0YmFrZS1sYXllcnMgZmxhdHRlbiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE5NSkKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX2FkZF9yZW1vdmUoc2VsZik6CisgICAgICAgIHRlc3RfbGF5ZXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEtc2tlbGV0b24nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsICJUaGlzIHRlc3QgY2Fubm90IHJ1biB3aXRoIG1ldGEtc2tlbGV0b24gaW4gYmJsYXllcnMuY29uZi4gYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZXN0X2xheWVyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJTb21ldGhpbmcgd3JvbmcgaGFwcGVuZWQuIG1ldGEtc2tlbGV0b24gbGF5ZXIgd2FzIG5vdCBhZGRlZCB0byBjb25mL2JibGF5ZXJzLmNvbmYuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIm1ldGEtc2tlbGV0b24gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGF0IHRoaXMgc3RlcC4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAiU29tZXRoaW5nIHdyb25nIGhhcHBlbmVkLiBtZXRhLXNrZWxldG9uIGxheWVyIHdhcyBub3QgYWRkZWQgdG8gY29uZi9iYmxheWVycy5jb25mLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL21ldGEtc2tlbGV0b24nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJtZXRhLXNrZWxldG9uIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGlzIHN0ZXAuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTM4NCkKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dyZWNpcGVzKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FzcGVsbDonLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29yZS1pbWFnZS1taW5pbWFsOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIG10ZC11dGlscycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdhc3BlbGw6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgaW1hZ2UnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb3JlLWltYWdlLW1pbmltYWwnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgY21ha2UscGtnY29uZmlnJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGlicHJveHk6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IGVpdGhlcgorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd3Z2V0OicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IGNtYWtlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dhZmZsZTonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBwa2djb25maWcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgbm9uZXhpc3RlbnRjbGFzcycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIG5vbmV4aXN0ZW50Y2xhc3Mgc2hvdWxkIGhhdmUgZmFpbGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6JywgcmVzdWx0Lm91dHB1dCkKKworICAgIGRlZiBnZXRfcmVjaXBlX2Jhc2VuYW1lKHNlbGYsIHJlY2lwZSk6CisgICAgICAgIHJlY2lwZV9maWxlID0gIiIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWYgJXMiICUgcmVjaXBlKQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmIHJlY2lwZSBpbiBsaW5lOgorICAgICAgICAgICAgICAgIHJlY2lwZV9maWxlID0gbGluZQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZV9maWxlKSwgbXNnID0gIkNhbid0IGZpbmQgcmVjaXBlIGZpbGUgZm9yICVzIiAlIHJlY2lwZSkKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlX2ZpbGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzgyMDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQpAQCAtMCwwICsxLDI3OSBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBCaXRiYWtlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGRlZiBnZXRsaW5lKHNlbGYsIHJlcywgbGluZSk6CisgICAgICAgIGZvciBsIGluIHJlcy5vdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBpZiBsaW5lIGluIGw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGwKKworICAgIEBPRVRlc3RJRCg3ODkpCisgICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMShzZWxmKToKKyAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnKS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIFwiY29uZlwiIGRpciIpCisKKyAgICBAT0VUZXN0SUQoNzkwKQorICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzIoc2VsZik6CisgICAgICAgIG15X2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG15X2VudlsnQkJQQVRIJ10gPSBteV9lbnZbJ0JVSUxERElSJ10KKyAgICAgICAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKG9zLmVudmlyb25bJ0JVSUxERElSJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJywgZW52PW15X2Vudikuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBidWlsZGRpciIpCisKKyAgICBAT0VUZXN0SUQoODA2KQorICAgIGRlZiB0ZXN0X2V2ZW50X2hhbmRsZXIoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUICs9IFwidGVzdF9ldmVudHNcIiIpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200LW5hdGl2ZScpCisgICAgICAgIGZpbmRfYnVpbGRfc3RhcnRlZCA9IHJlLnNlYXJjaCgiTk9URTogVGVzdCBmb3IgYmJcLmV2ZW50XC5CdWlsZFN0YXJ0ZWQoXG4uKikqTk9URTogRXhlY3V0aW5nIFJ1blF1ZXVlIFRhc2tzIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZmluZF9idWlsZF9jb21wbGV0ZWQgPSByZS5zZWFyY2goIlRhc2tzIFN1bW1hcnk6LiooXG4uKikqTk9URTogVGVzdCBmb3IgYmJcLmV2ZW50XC5CdWlsZENvbXBsZXRlZCIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2J1aWxkX3N0YXJ0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfYnVpbGRfY29tcGxldGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnVGVzdCBmb3IgYmIuZXZlbnQuSW52YWxpZEV2ZW50JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiXCJUZXN0IGZvciBiYi5ldmVudC5JbnZhbGlkRXZlbnRcIiBtZXNzYWdlIGZvdW5kIGR1cmluZyBiaXRiYWtlIHByb2Nlc3MuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwMykKKyAgICBkZWYgdGVzdF9sb2NhbF9zc3RhdGUoc2VsZik6CisgICAgICAgIGJpdGJha2UoJ200LW5hdGl2ZScpCisgICAgICAgIGJpdGJha2UoJ200LW5hdGl2ZSAtY2NsZWFuJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQtbmF0aXZlJykKKyAgICAgICAgZmluZF9zZXRzY2VuZSA9IHJlLnNlYXJjaCgibTQtbmF0aXZlLipkb18uKl9zZXRzY2VuZSIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3NldHNjZW5lLCBtc2cgPSAiTm8gXCJtNC1uYXRpdmUuKmRvXy4qX3NldHNjZW5lXCIgbWVzc2FnZSBmb3VuZCBkdXJpbmcgYml0YmFrZSBtNC1uYXRpdmUuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0ICkKKworICAgIEBPRVRlc3RJRCgxMDUpCisgICAgZGVmIHRlc3RfYml0YmFrZV9pbnZhbGlkX3JlY2lwZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWIgYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJFUlJPUjogVW5hYmxlIHRvIGZpbmQgYW55IHJlY2lwZSBmaWxlIG1hdGNoaW5nICdhc2RmJyIgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlRob3VnaCBhc2RmIHJlY2lwZSBkb2Vzbid0IGV4aXN0LCBiaXRiYWtlIGRpZG4ndCBvdXRwdXQgYW55IGVyci4gbWVzc2FnZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTA3KQorICAgIGRlZiB0ZXN0X2JpdGJha2VfaW52YWxpZF90YXJnZXQoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ2FzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiRVJST1I6IE5vdGhpbmcgUFJPVklERVMgJ2FzZGYnIiBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiVGhvdWdoIG5vICdhc2RmJyB0YXJnZXQgZXhpc3RzLCBiaXRiYWtlIGRpZG4ndCBvdXRwdXQgYW55IGVyci4gbWVzc2FnZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTA2KQorICAgIGRlZiB0ZXN0X3dhcm5pbmdzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWIgYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgZmluZF93YXJuaW5ncyA9IHJlLnNlYXJjaCgiU3VtbWFyeTogVGhlcmUgdy57MiwzfT8gWzEtOV1bMC05XSogV0FSTklORyBtZXNzYWdlcyogc2hvd24iLCByZXN1bHQub3V0cHV0KQorICAgICAgICBmaW5kX2Vycm9ycyA9IHJlLnNlYXJjaCgiU3VtbWFyeTogVGhlcmUgdy57MiwzfT8gWzEtOV1bMC05XSogRVJST1IgbWVzc2FnZXMqIHNob3duIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfd2FybmluZ3MsIG1zZz0iRGlkIG5vdCBmaW5kIHRoZSBtdW1iZXIgb2Ygd2FybmluZ3MgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQ6XG4iICsgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfZXJyb3JzLCBtc2c9IkRpZCBub3QgZmluZCB0aGUgbXVtYmVyIG9mIGVycm9ycyBhdCB0aGUgZW5kIG9mIHRoZSBidWlsZDpcbiIgKyByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwOCkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3BhdGNoKHNlbGYpOgorICAgICAgICAjIFRoaXMgcGF0Y2ggYWxyZWFkeSBleGlzdHMgaW4gU1JDX1VSSSBzbyBhZGRpbmcgaXQgYWdhaW4gd2lsbCBjYXVzZSB0aGUKKyAgICAgICAgIyBwYXRjaCB0byBmYWlsLgorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgJ1NSQ19VUkkgKz0gImZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCInKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuJykKKyAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICJGdW5jdGlvbiBmYWlsZWQ6IHBhdGNoX2RvX3BhdGNoIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJSZXBlYXRlZCBwYXRjaCBhcHBsaWNhdGlvbiBkaWRuJ3QgZmFpbC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTM1NCkKKyAgICBkZWYgdGVzdF9mb3JjZV90YXNrXzEoc2VsZik6CisgICAgICAgICMgdGVzdCAxIGZyb20gYnVnIDU4NzUKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnemxpYicKKyAgICAgICAgdGVzdF9kYXRhID0gIk1pY3Jvc29mdCBNYWRlIE5vIFByb2ZpdCBGcm9tIEFueW9uZSdzIFp1bmVzIFlvIgorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ1BLR0RFU1QnLCAnbWFuZGlyJ10sIHRlc3RfcmVjaXBlKQorICAgICAgICBpbWFnZV9kaXIgPSBiYl92YXJzWydEJ10KKyAgICAgICAgcGtnc3BsaXRfZGlyID0gYmJfdmFyc1snUEtHREVTVCddCisgICAgICAgIG1hbl9kaXIgPSBiYl92YXJzWydtYW5kaXInXQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlIC1mICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIG1hbl9maWxlID0gb3MucGF0aC5qb2luKGltYWdlX2RpciArIG1hbl9kaXIsICdtYW4zL3psaWIuMycpCisgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShtYW5fZmlsZSwgdGVzdF9kYXRhKQorICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlIC1mICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIG1hbl9zcGxpdF9maWxlID0gb3MucGF0aC5qb2luKHBrZ3NwbGl0X2RpciwgJ3psaWItZG9jJyArIG1hbl9kaXIsICdtYW4zL3psaWIuMycpCisgICAgICAgIG1hbl9zcGxpdF9jb250ZW50ID0gZnRvb2xzLnJlYWRfZmlsZShtYW5fc3BsaXRfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0X2RhdGEsIG1hbl9zcGxpdF9jb250ZW50LCAnVGhlIG1hbiBmaWxlIGhhcyBub3QgY2hhbmdlZCBpbiBwYWNrYWdlcy1zcGxpdC4nKQorCisgICAgICAgIHJldCA9IGJpdGJha2UodGVzdF9yZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rhc2sgZG9fcGFja2FnZV93cml0ZV9ycG06JywgcmV0Lm91dHB1dCwgJ1Rhc2sgZG9fcGFja2FnZV93cml0ZV9ycG0gZGlkIG5vdCByZS1leGVjdXRlZC4nKQorCisgICAgQE9FVGVzdElEKDE2MykKKyAgICBkZWYgdGVzdF9mb3JjZV90YXNrXzIoc2VsZik6CisgICAgICAgICMgdGVzdCAyIGZyb20gYnVnIDU4NzUKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnemxpYicKKworICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1DIGNvbXBpbGUgJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIGxvb2tfZm9yX3Rhc2tzID0gWydkb19jb21waWxlOicsICdkb19pbnN0YWxsOicsICdkb19wb3B1bGF0ZV9zeXNyb290OicsICdkb19wYWNrYWdlOiddCisgICAgICAgIGZvciB0YXNrIGluIGxvb2tfZm9yX3Rhc2tzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih0YXNrLCByZXN1bHQub3V0cHV0LCBtc2c9IkNvdWxkbid0IGZpbmQgJXMgdGFzay4iKQorCisgICAgQE9FVGVzdElEKDE2NykKKyAgICBkZWYgdGVzdF9iaXRiYWtlX2coc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1nIGNvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGZvciBmIGluIFsncG4tYnVpbGRsaXN0JywgJ3JlY2lwZS1kZXBlbmRzLmRvdCcsICd0YXNrLWRlcGVuZHMuZG90J106CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1Rhc2sgZGVwZW5kZW5jaWVzIHNhdmVkIHRvIFwndGFzay1kZXBlbmRzLmRvdFwnJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gdGFzayBkZXBlbmRlbmN5IFwidGFzay1kZXBlbmRzLmRvdFwiIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgdGhlIGdpdmVuIHRhc2sgdGFyZ2V0LiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdidXN5Ym94JyBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGFzay1kZXBlbmRzLmRvdCcpKSwgbXNnID0gIk5vIFwiYnVzeWJveFwiIGRlcGVuZGVuY3kgZm91bmQgaW4gdGFzay1kZXBlbmRzLmRvdCBmaWxlLiIpCisKKyAgICBAT0VUZXN0SUQoODk5KQorICAgIGRlZiB0ZXN0X2ltYWdlX21hbmlmZXN0KHNlbGYpOgorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWyJERVBMT1lfRElSX0lNQUdFIiwgIklNQUdFX0xJTktfTkFNRSJdLCAiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgZGVwbG95ZGlyID0gYmJfdmFyc1siREVQTE9ZX0RJUl9JTUFHRSJdCisgICAgICAgIGltYWdlbmFtZSA9IGJiX3ZhcnNbIklNQUdFX0xJTktfTkFNRSJdCisgICAgICAgIG1hbmlmZXN0ID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgaW1hZ2VuYW1lICsgIi5tYW5pZmVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhtYW5pZmVzdCksIG1zZz0iTm8gbWFuaWZlc3QgZmlsZSBjcmVhdGVkIGZvciBpbWFnZS4gSXQgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGluICVzIiAlIG1hbmlmZXN0KQorCisgICAgQE9FVGVzdElEKDE2OCkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3JlY2lwZV9zcmNfdXJpKHNlbGYpOgorICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiZmlsZTovL2ludmFsaWQiJworICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgZGF0YSkKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK0lOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKKworICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbicpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1jIGZldGNoIG1hbicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJDb21tYW5kIHN1Y2NlZGVkIHdoZW4gaXQgc2hvdWxkIGhhdmUgZmFpbGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdGZXRjaGVyIGZhaWx1cmU6IFVuYWJsZSB0byBmaW5kIGZpbGUgZmlsZTovL2ludmFsaWQgYW55d2hlcmUuIFRoZSBwYXRocyB0aGF0IHdlcmUgc2VhcmNoZWQgd2VyZTonIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKK2RvZXNuJ3QgZXhpc3QsIHlldCBubyBlcnJvciBtZXNzYWdlIGVuY291bnRlcmVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICdGZXRjaGVyIGZhaWx1cmUgZm9yIFVSTDogXCdmaWxlOi8vaW52YWxpZFwnLiBVbmFibGUgdG8gZmV0Y2ggVVJMIGZyb20gYW55IHNvdXJjZS4nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlwiaW52YWxpZFwiIGZpbGUgXAorZG9lc24ndCBleGlzdCwgeWV0IGZldGNoZXIgZGlkbid0IHJlcG9ydCBhbnkgZXJyb3IuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE3MSkKKyAgICBkZWYgdGVzdF9yZW5hbWVfZG93bmxvYWRlZF9maWxlKHNlbGYpOgorICAgICAgICAjIFRPRE8gdW5pcXVlIGRsZGlyIGluc3RlYWQgb2YgdXNpbmcgY2xlYW5hbGwKKyAgICAgICAgIyBUT0RPOiBuZWVkIHRvIHNldCBzc3RhdGVkaXI/CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK1NTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQorCisgICAgICAgIGRhdGEgPSAnU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2FzcGVsbC9hc3BlbGwtJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9dGVzdC1hc3BlbGwudGFyLmd6IicKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2FzcGVsbCcsIGRhdGEpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1mIC1jIGZldGNoIGFzcGVsbCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdhc3BlbGwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZyA9ICJDb3VsZG4ndCBmZXRjaCBhc3BlbGwuICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGRsX2RpciA9IGdldF9iYl92YXIoIkRMX0RJUiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGxfZGlyLCAndGVzdC1hc3BlbGwudGFyLmd6JykpLCBtc2cgPSAiRmlsZSByZW5hbWUgZmFpbGVkLiBObyBjb3JyZXNwb25kaW5nIHRlc3QtYXNwZWxsLnRhci5neiBmaWxlIGZvdW5kIHVuZGVyICVzIiAlIGRsX2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkbF9kaXIsICd0ZXN0LWFzcGVsbC50YXIuZ3ouZG9uZScpKSwgIkZpbGUgcmVuYW1lIGZhaWxlZC4gTm8gY29ycmVzcG9uZGluZyB0ZXN0LWFzcGVsbC50YXIuZ3ouZG9uZSBmaWxlIGZvdW5kIHVuZGVyICVzIiAlIGRsX2RpcikKKworICAgIEBPRVRlc3RJRCgxMDI4KQorICAgIGRlZiB0ZXN0X2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9FTlY9XCJsb2NhbGNvbmZcIiIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtZSB8IGdyZXAgVEVTVF9FTlY9JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsb2NhbGNvbmYnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJiaXRiYWtlIGRpZG4ndCByZXBvcnQgYW55IHZhbHVlIGZvciBURVNUX0VOViB2YXJpYWJsZS4gVG8gdGVzdCwgcnVuICdiaXRiYWtlIC1lIHwgZ3JlcCBURVNUX0VOVj0nIikKKworICAgIEBPRVRlc3RJRCgxMDI5KQorICAgIGRlZiB0ZXN0X2RyeV9ydW4oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtbiBtNC1uYXRpdmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJiaXRiYWtlIGRyeSBydW4gZGlkbid0IHJ1biBhcyBleHBlY3RlZC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDMwKQorICAgIGRlZiB0ZXN0X2p1c3RfcGFyc2Uoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgImVycm9ycyBlbmNvdW50ZXJlZCB3aGVuIHBhcnNpbmcgcmVjaXBlcy4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDMxKQorICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtcyB8IGdyZXAgd2dldCcpCisgICAgICAgIGZpbmQgPSByZS5zZWFyY2goIndnZXQgKjooWzAtOWEtekEtWlwuXC1dKykiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZCwgIk5vIHZlcnNpb24gcmV0dXJuZWQgZm9yIHNlYXJjaGVkIHJlY2lwZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTAzMikKKyAgICBkZWYgdGVzdF9wcmVmaWxlKHNlbGYpOgorICAgICAgICBwcmVjb25mID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mL3ByZWZpbGUuY29uZicpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAocHJlY29uZikKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocHJlY29uZiAsIlRFU1RfUFJFRklMRT1cInByZWZpbGVcIiIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtciBjb25mL3ByZWZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QUkVGSUxFPScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncHJlZmlsZScgaW4gcmVzdWx0Lm91dHB1dCwgIlByZWNvbmZpZ3VyZSBmaWxlIFwicHJlZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfUFJFRklMRT1cImxvY2FsY29uZlwiIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1yIGNvbmYvcHJlZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BSRUZJTEU9JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsb2NhbGNvbmYnIGluIHJlc3VsdC5vdXRwdXQsICJQcmVjb25maWd1cmUgZmlsZSBcInByZWZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIikKKworICAgIEBPRVRlc3RJRCgxMDMzKQorICAgIGRlZiB0ZXN0X3Bvc3RmaWxlKHNlbGYpOgorICAgICAgICBwb3N0Y29uZiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZi9wb3N0ZmlsZS5jb25mJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChwb3N0Y29uZikKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocG9zdGNvbmYgLCAiVEVTVF9QT1NURklMRT1cInBvc3RmaWxlXCIiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9QT1NURklMRT1cImxvY2FsY29uZlwiIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1SIGNvbmYvcG9zdGZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QT1NURklMRT0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Bvc3RmaWxlJyBpbiByZXN1bHQub3V0cHV0LCAiUG9zdGNvbmZpZ3VyZSBmaWxlIFwicG9zdGZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIikKKworICAgIEBPRVRlc3RJRCgxMDM0KQorICAgIGRlZiB0ZXN0X2NoZWNrdXJpKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgY2hlY2t1cmkgbTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsIG1zZyA9ICJcImNoZWNrdXJpXCIgdGFzayB3YXMgbm90IGV4ZWN1dGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDM1KQorICAgIGRlZiB0ZXN0X2NvbnRpbnVlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitTU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQorICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBlcnJvcnBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnRVJST1I6IEZ1bmN0aW9uIGZhaWxlZDogZG9fZmFpbF90YXNrJykKKyAgICAgICAgbWFudmVyID0gcmUuc2VhcmNoKCJOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0oLio/KTogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBjb250aW51ZXBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtJXM6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkJyAlIG1hbnZlci5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGVycm9ycG9zLGNvbnRpbnVlcG9zLCBtc2cgPSAiYml0YmFrZSBkaWRuJ3QgcGFzcyBkb19mYWlsX3Rhc2suIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExMTkpCisgICAgZGVmIHRlc3Rfbm9uX2dwbHYzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5DT01QQVRJQkxFX0xJQ0VOU0UgPSAiR1BMdjMiJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnc2VsZnRlc3QtZWQnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgIkJpdGJha2UgZmFpbGVkLCBleGl0IGNvZGUgJXMsIG91dHB1dCAlcyIgJSAocmVzdWx0LnN0YXR1cywgcmVzdWx0Lm91dHB1dCkpCisgICAgICAgIGxpY19kaXIgPSBnZXRfYmJfdmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpY19kaXIsICdzZWxmdGVzdC1lZC9nZW5lcmljX0dQTHYzJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpY19kaXIsICdzZWxmdGVzdC1lZC9nZW5lcmljX0dQTHYyJykpKQorCisgICAgQE9FVGVzdElEKDE0MjIpCisgICAgZGVmIHRlc3Rfc2V0c2NlbmVfb25seShzZWxmKToKKyAgICAgICAgIiIiIEJpdGJha2Ugb3B0aW9uIHRvIHJlc3RvcmUgZnJvbSBzc3RhdGUgb25seSB3aXRoaW4gYSBidWlsZCAoaS5lLiBleGVjdXRlIG5vIHJlYWwgdGFza3MsIG9ubHkgc2V0c2NlbmUpIiIiCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworCisgICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICByZXQgPSBiaXRiYWtlKCctLXNldHNjZW5lLW9ubHkgJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgdGFza3MgPSByZS5maW5kYWxsKHIndGFza1xzKyhkb19cUyspOicsIHJldC5vdXRwdXQpCisKKyAgICAgICAgZm9yIHRhc2sgaW4gdGFza3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdfc2V0c2NlbmUnLCB0YXNrLCAnQSB0YXNrIGRpZmZlcmVudCBmcm9tIF9zZXRzY2VuZSByYW46ICVzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4ZWN1dGVkIHRhc2tzIHdlcmU6ICVzJyAlICh0YXNrLCBzdHIodGFza3MpKSkKKworICAgIEBPRVRlc3RJRCgxNDI1KQorICAgIGRlZiB0ZXN0X2JiYXBwZW5kX29yZGVyKHNlbGYpOgorICAgICAgICAiIiIgQml0YmFrZSBzaG91bGQgYmJhcHBlbmQgdG8gcmVjaXBlIGluIGEgcHJlZGljdGFibGUgb3JkZXIgIiIiCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVU1NQVJZJywgJ1BWJ10sIHRlc3RfcmVjaXBlKQorICAgICAgICB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2JlZm9yZSA9IGJiX3ZhcnNbJ1NVTU1BUlknXQorICAgICAgICB0ZXN0X3JlY2lwZV9wdiA9IGJiX3ZhcnNbJ1BWJ10KKyAgICAgICAgcmVjaXBlX2FwcGVuZF9maWxlID0gdGVzdF9yZWNpcGUgKyAnXycgKyB0ZXN0X3JlY2lwZV9wdiArICcuYmJhcHBlbmQnCisgICAgICAgIGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5ID0gdGVzdF9yZWNpcGVfc3VtbWFyeV9iZWZvcmUKKworICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIHJlY2lwZV9hcHBlbmRfZGlyID0gdGVzdF9yZWNpcGUgKyAnX3Rlc3RfJyArIHN0cihpKQorICAgICAgICAgICAgcmVjaXBlX2FwcGVuZF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGVfYXBwZW5kX2RpciwgcmVjaXBlX2FwcGVuZF9maWxlKQorICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGVfYXBwZW5kX2RpcikpCisgICAgICAgICAgICBmZWF0dXJlID0gJ1NVTU1BUlkgKz0gIiVzIlxuJyAlIGkKKyAgICAgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHJlY2lwZV9hcHBlbmRfcGF0aCwgZmVhdHVyZSkKKyAgICAgICAgICAgIGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5ICs9ICcgJXMnICUgaQorCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3JlY2lwZSArICdfdGVzdF8qJykpCisKKyAgICAgICAgdGVzdF9yZWNpcGVfc3VtbWFyeV9hZnRlciA9IGdldF9iYl92YXIoJ1NVTU1BUlknLCB0ZXN0X3JlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSwgdGVzdF9yZWNpcGVfc3VtbWFyeV9hZnRlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkaGlzdG9yeS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkaGlzdG9yeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjc5MmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRoaXN0b3J5LnB5CkBAIC0wLDAgKzEsNDYgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgZGF0ZXRpbWUKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycworCisKK2NsYXNzIEJ1aWxkaGlzdG9yeUJhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGRlZiBjb25maWdfYnVpbGRoaXN0b3J5KHNlbGYsIHRtcF9iaF9sb2NhdGlvbj1GYWxzZSk6CisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1VTRVJfQ0xBU1NFUycsICdJTkhFUklUJ10pCisgICAgICAgIGlmIChub3QgJ2J1aWxkaGlzdG9yeScgaW4gYmJfdmFyc1snVVNFUl9DTEFTU0VTJ10pIGFuZCAobm90ICdidWlsZGhpc3RvcnknIGluIGJiX3ZhcnNbJ0lOSEVSSVQnXSk6CisgICAgICAgICAgICBhZGRfYnVpbGRoaXN0b3J5X2NvbmZpZyA9ICdJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiXG5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiJworICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGFkZF9idWlsZGhpc3RvcnlfY29uZmlnKQorCisgICAgICAgIGlmIHRtcF9iaF9sb2NhdGlvbjoKKyAgICAgICAgICAgICMgVXNpbmcgYSB0ZW1wb3JhcnkgYnVpbGRoaXN0b3J5IGxvY2F0aW9uIGZvciB0ZXN0aW5nCisgICAgICAgICAgICB0bXBfYmhfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJ0bXBfYnVpbGRoaXN0b3J5XyVzIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQlSCVNJVMnKSkKKyAgICAgICAgICAgIGJ1aWxkaGlzdG9yeV9kaXJfY29uZmlnID0gIkJVSUxESElTVE9SWV9ESVIgPSBcIiVzXCIiICUgdG1wX2JoX2RpcgorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGJ1aWxkaGlzdG9yeV9kaXJfY29uZmlnKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0bXBfYmhfZGlyKQorCisgICAgZGVmIHJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHNlbGYsIHRhcmdldCwgZ2xvYmFsX2NvbmZpZz0nJywgdGFyZ2V0X2NvbmZpZz0nJywgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9RmFsc2UsIGVycm9yX3JlZ2V4PScnKToKKyAgICAgICAgaWYgY2hhbmdlX2JoX2xvY2F0aW9uOgorICAgICAgICAgICAgdG1wX2JoX2xvY2F0aW9uID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG1wX2JoX2xvY2F0aW9uID0gRmFsc2UKKyAgICAgICAgc2VsZi5jb25maWdfYnVpbGRoaXN0b3J5KHRtcF9iaF9sb2NhdGlvbikKKworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZ2xvYmFsX2NvbmZpZykKKyAgICAgICAgc2VsZi5hcHBlbmRfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZykKKyAgICAgICAgYml0YmFrZSgiLWNjbGVhbiAlcyIgJSB0YXJnZXQpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UodGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhnbG9iYWxfY29uZmlnKQorICAgICAgICBzZWxmLnJlbW92ZV9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnKQorCisgICAgICAgIGlmIGV4cGVjdF9lcnJvcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJFcnJvciBleHBlY3RlZCBmb3IgZ2xvYmFsIGNvbmZpZyAnJXMnIGFuZCB0YXJnZXQgY29uZmlnICclcyciICUgKGdsb2JhbF9jb25maWcsIHRhcmdldF9jb25maWcpKQorICAgICAgICAgICAgc2VhcmNoX2Zvcl9lcnJvciA9IHJlLnNlYXJjaChlcnJvcl9yZWdleCwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWFyY2hfZm9yX2Vycm9yLCBtc2c9IkNvdWxkIG5vdCBmaW5kIGRlc2lyZWQgZXJyb3IgaW4gb3V0cHV0OiAlcyAoJXMpIiAlIChlcnJvcl9yZWdleCwgcmVzdWx0Lm91dHB1dCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZz0iQ29tbWFuZCAnYml0YmFrZSAlcycgaGFzIGZhaWxlZCB1bmV4cGVjdGVkbHk6ICVzIiAlICh0YXJnZXQsIHJlc3VsdC5vdXRwdXQpKQorCisgICAgIyBObyB0ZXN0cyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgIyBQbGVhc2UgY3JlYXRlIGEgbmV3IGNsYXNzIHRoYXQgaW5oZXJpdCB0aGlzIG9uZSwgb3IgdXNlIG9uZSBvZiB0aG9zZSBhbHJlYWR5IGF2YWlsYWJsZSBmb3IgYWRkaW5nIHRlc3RzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMjIxYzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKQEAgLTAsMCArMSwxNjYgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgZ2xvYiBhcyBnCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEltYWdlT3B0aW9uc1Rlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoNzYxKQorICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsX2ltYWdlX2dlbmVyYXRpb24oc2VsZik6CisgICAgICAgIGltYWdlX3BrZ3R5cGUgPSBnZXRfYmJfdmFyKCJJTUFHRV9QS0dUWVBFIikKKyAgICAgICAgaWYgaW1hZ2VfcGtndHlwZSAhPSAncnBtJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ05vdCB1c2luZyBSUE0gYXMgbWFpbiBwYWNrYWdlIGZvcm1hdCcpCisgICAgICAgIGJpdGJha2UoIi1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkNfUlBNX0lNQUdFX0dFTiA9ICIxIicpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCInKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICBsb2dfZGF0YV9maWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoIldPUktESVIiLCAiY29yZS1pbWFnZS1taW5pbWFsIiksICJ0ZW1wL2xvZy5kb19yb290ZnMiKQorICAgICAgICBsb2dfZGF0YV9jcmVhdGVkID0gZnRvb2xzLnJlYWRfZmlsZShsb2dfZGF0YV9maWxlKQorICAgICAgICBpbmNyZW1lbnRhbF9jcmVhdGVkID0gcmUuc2VhcmNoKHIiSW5zdGFsbGluZ1xzKjpccypwYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCIsIGxvZ19kYXRhX2NyZWF0ZWQpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jcmVtZW50YWxfY3JlYXRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIGxvZ19kYXRhX2NyZWF0ZWQpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIGxvZ19kYXRhX3JlbW92ZWQgPSBmdG9vbHMucmVhZF9maWxlKGxvZ19kYXRhX2ZpbGUpCisgICAgICAgIGluY3JlbWVudGFsX3JlbW92ZWQgPSByZS5zZWFyY2gociJFcmFzaW5nXHMqOlxzKnBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIiwgbG9nX2RhdGFfcmVtb3ZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY3JlbWVudGFsX3JlbW92ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSBsb2dfZGF0YV9yZW1vdmVkKQorCisgICAgQE9FVGVzdElEKDI4NikKKyAgICBkZWYgdGVzdF9jY2FjaGVfdG9vbChzZWxmKToKKyAgICAgICAgYml0YmFrZSgiY2NhY2hlLW5hdGl2ZSIpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NZU1JPT1RfREVTVERJUicsICdiaW5kaXInXSwgJ2NjYWNoZS1uYXRpdmUnKQorICAgICAgICBwID0gYmJfdmFyc1snU1lTUk9PVF9ERVNURElSJ10gKyBiYl92YXJzWydiaW5kaXInXSArICIvIiArICJjY2FjaGUiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwKSwgbXNnID0gIk5vIGNjYWNoZSBmb3VuZCAoJXMpIiAlIHApCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkhFUklUICs9ICJjY2FjaGUiJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtNCcpCisgICAgICAgIGJpdGJha2UoIm00IC1mIC1jIGNvbXBpbGUiKQorICAgICAgICBsb2dfY29tcGlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJXT1JLRElSIiwibTQiKSwgInRlbXAvbG9nLmRvX2NvbXBpbGUiKQorICAgICAgICByZXMgPSBydW5DbWQoImdyZXAgY2NhY2hlICVzIiAlIGxvZ19jb21waWxlLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cywgbXNnPSJObyBtYXRjaCBmb3IgY2NhY2hlIGluIG00IGxvZy5kb19jb21waWxlLiBGb3IgZnVydGhlciBkZXRhaWxzOiAlcyIgJSBsb2dfY29tcGlsZSkKKworICAgIEBPRVRlc3RJRCgxNDM1KQorICAgIGRlZiB0ZXN0X3JlYWRfb25seV9pbWFnZShzZWxmKToKKyAgICAgICAgZGlzdHJvX2ZlYXR1cmVzID0gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJykKKyAgICAgICAgaWYgbm90ICgneDExJyBpbiBkaXN0cm9fZmVhdHVyZXMgYW5kICdvcGVuZ2wnIGluIGRpc3Ryb19mZWF0dXJlcyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLXNhdG8gcmVxdWlyZXMgeDExIGFuZCBvcGVuZ2wgaW4gZGlzdHJvIGZlYXR1cmVzJykKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIicpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byIpCisgICAgICAgICMgZG9faW1hZ2Ugd2lsbCBmYWlsIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyBwb3N0aW5zdHMKKworY2xhc3MgRGlza01vblRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCgyNzcpCisgICAgZGVmIHRlc3Rfc3RvcHRhc2tfYmVoYXZpb3Ioc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiU1RPUFRBU0tTLCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKKyAgICAgICAgcmVzID0gYml0YmFrZSgibTQiLCBpZ25vcmVfc3RhdHVzID0gVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdFUlJPUjogTm8gbmV3IHRhc2tzIGNhbiBiZSBleGVjdXRlZCBzaW5jZSB0aGUgZGlzayBzcGFjZSBtb25pdG9yIGFjdGlvbiBpcyAiU1RPUFRBU0tTIiEnIGluIHJlcy5vdXRwdXQsIG1zZyA9ICJUYXNrcyBzaG91bGQgaGF2ZSBzdG9wcGVkLiBEaXNrIG1vbml0b3IgaXMgc2V0IHRvIFNUT1BUQVNLOiAlcyIgJSByZXMub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiQUJPUlQsJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIsIGlnbm9yZV9zdGF0dXMgPSBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0VSUk9SOiBJbW1lZGlhdGVseSBhYm9ydCBzaW5jZSB0aGUgZGlzayBzcGFjZSBtb25pdG9yIGFjdGlvbiBpcyAiQUJPUlQiIScgaW4gcmVzLm91dHB1dCwgIlRhc2tzIHNob3VsZCBoYXZlIGJlZW4gYWJvcnRlZCBpbW1lZGlhdGVsbHkuIERpc2sgbW9uaXRvciBpcyBzZXQgdG8gQUJPUlQ6ICVzIiAlIHJlcy5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJXQVJOLCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKKyAgICAgICAgcmVzID0gYml0YmFrZSgibTQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dBUk5JTkc6IFRoZSBmcmVlIHNwYWNlJyBpbiByZXMub3V0cHV0LCBtc2cgPSAiQSB3YXJuaW5nIHNob3VsZCBoYXZlIGJlZW4gZGlzcGxheWVkIGZvciBkaXNrIG1vbml0b3IgaXMgc2V0IHRvIFdBUk46ICVzIiAlcmVzLm91dHB1dCkKKworY2xhc3MgU2FuaXR5T3B0aW9uc1Rlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBkZWYgZ2V0bGluZShzZWxmLCByZXMsIGxpbmUpOgorICAgICAgICBmb3IgbCBpbiByZXMub3V0cHV0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbGluZSBpbiBsOgorICAgICAgICAgICAgICAgIHJldHVybiBsCisKKyAgICBAT0VUZXN0SUQoOTI3KQorICAgIGRlZiB0ZXN0X29wdGlvbnNfd2FybnFhX2Vycm9ycWFfc3dpdGNoKHNlbGYpOgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQorICAgICAgICBpZiAicGFja2FnZXMtbGlzdCIgbm90IGluIGdldF9iYl92YXIoIkVSUk9SX1FBIik6CisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoIkVSUk9SX1FBX2FwcGVuZCA9IFwiIHBhY2thZ2VzLWxpc3RcIiIpCisKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnUEFDS0FHRVMgKz0gXCIke1BOfS1kYmdcIicpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgLWYgLWMgcGFja2FnZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKKyAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kYmcgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZz1yZXMub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ1BBQ0tBR0VTICs9IFwiJHtQTn0tZGJnXCInKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0VSUk9SX1FBX3JlbW92ZSA9ICJwYWNrYWdlcy1saXN0IicpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnV0FSTl9RQV9hcHBlbmQgPSAiIHBhY2thZ2VzLWxpc3QiJykKKyAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSAtZiAtYyBwYWNrYWdlIikKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKKyAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kYmcgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiV0FSTklORzoiKSwgbXNnPXJlcy5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTQyMSkKKyAgICBkZWYgdGVzdF9sYXllcl93aXRob3V0X2dpdF9kaXIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IGxheWVyIGdpdCByZXZpc2lvbnMgYXJlIGRpc3BsYXllZCBhbmQgZG8gbm90IGZhaWwgd2l0aG91dCBnaXQgcmVwb3NpdG9yeQorICAgICAgICBFeHBlY3RlZDogICAgVGhlIGJ1aWxkIHRvIGJlIHN1Y2Nlc3NmdWwgYW5kIHdpdGhvdXQgImZhdGFsIiBlcnJvcnMKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGlycGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgICAgIGR1bW15X2xheWVyX25hbWUgPSAnbWV0YS1kdW1teScKKyAgICAgICAgZHVtbXlfbGF5ZXJfcGF0aCA9IG9zLnBhdGguam9pbihkaXJwYXRoLCBkdW1teV9sYXllcl9uYW1lKQorICAgICAgICBkdW1teV9sYXllcl9jb25mX2RpciA9IG9zLnBhdGguam9pbihkdW1teV9sYXllcl9wYXRoLCAnY29uZicpCisgICAgICAgIG9zLm1ha2VkaXJzKGR1bW15X2xheWVyX2NvbmZfZGlyKQorICAgICAgICBkdW1teV9sYXllcl9jb25mX3BhdGggPSBvcy5wYXRoLmpvaW4oZHVtbXlfbGF5ZXJfY29uZl9kaXIsICdsYXllci5jb25mJykKKworICAgICAgICBkdW1teV9sYXllcl9jb250ZW50ID0gJ0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX0NPTExFQ1RJT05TICs9ICIlcyJcbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9QQVRURVJOXyVzID0gIl4ke0xBWUVSRElSfS8iXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfUFJJT1JJVFlfJXMgPSAiNiJcbicgJSAoZHVtbXlfbGF5ZXJfbmFtZSwgZHVtbXlfbGF5ZXJfbmFtZSwgZHVtbXlfbGF5ZXJfbmFtZSkKKworICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShkdW1teV9sYXllcl9jb25mX3BhdGgsIGR1bW15X2xheWVyX2NvbnRlbnQpCisKKyAgICAgICAgYmJsYXllcnNfY29uZiA9ICdCQkxBWUVSUyArPSAiJXMiXG4nICUgZHVtbXlfbGF5ZXJfcGF0aAorICAgICAgICBzZWxmLndyaXRlX2JibGF5ZXJzX2NvbmZpZyhiYmxheWVyc19jb25mKQorCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworCisgICAgICAgIHJldCA9IGJpdGJha2UoJy1uICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIGVyciA9ICdmYXRhbDogTm90IGEgZ2l0IHJlcG9zaXRvcnknCisKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJwYXRoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZXJyLCByZXQub3V0cHV0KQorCisKK2NsYXNzIEJ1aWxkaGlzdG9yeVRlc3RzKEJ1aWxkaGlzdG9yeUJhc2UpOgorCisgICAgQE9FVGVzdElEKDI5MykKKyAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24oJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihnZXRfYmJfdmFyKCdCVUlMREhJU1RPUllfRElSJykpLCAiYnVpbGRoaXN0b3J5IGRpciB3YXMgbm90IGNyZWF0ZWQuIikKKworICAgIEBPRVRlc3RJRCgyOTQpCisgICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2J1aWxkdGltZV9wcl9iYWNrd2FyZHMoc2VsZik6CisgICAgICAgIHRhcmdldCA9ICd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJworICAgICAgICBlcnJvciA9ICJFUlJPUjouKlFBIElzc3VlOiBQYWNrYWdlIHZlcnNpb24gZm9yIHBhY2thZ2UgJXMgd2VudCBiYWNrd2FyZHMgd2hpY2ggd291bGQgYnJlYWsgcGFja2FnZSBmZWVkcyBmcm9tICguKi1yMS4qIHRvIC4qLXIwLiopIiAlIHRhcmdldAorICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIxXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249VHJ1ZSkKKyAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMFwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9VHJ1ZSwgZXJyb3JfcmVnZXg9ZXJyb3IpCisKK2NsYXNzIEFyY2hpdmVyVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIEBPRVRlc3RJRCg5MjYpCisgICAgZGVmIHRlc3RfYXJjaF93b3JrX2Rpcl9hbmRfZXhwb3J0X3NvdXJjZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZm9yIGFyY2hpdmluZyB0aGUgd29yayBkaXJlY3RvcnkgYW5kIGV4cG9ydGluZyB0aGUgc291cmNlIGZpbGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVQgKz0gXCJhcmNoaXZlclwiXG5BUkNISVZFUl9NT0RFW3NyY10gPSBcIm9yaWdpbmFsXCJcbkFSQ0hJVkVSX01PREVbc3JwbV0gPSBcIjFcIiIpCisgICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMCwgIlxuQ291bGRuJ3QgYnVpbGQgeGN1cnNvcnRyYW5zcGFyZW50dGhlbWUuXG5iaXRiYWtlIG91dHB1dCAlcyIgJSByZXMub3V0cHV0KQorICAgICAgICBkZXBsb3lfZGlyX3NyYyA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfU1JDJykKKyAgICAgICAgcGtnc19wYXRoID0gZy5nbG9iKHN0cihkZXBsb3lfZGlyX3NyYykgKyAiL2FsbGFyY2gqL3hjdXJzKiIpCisgICAgICAgIHNyY19maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvciouc3JjLnJwbSIKKyAgICAgICAgdGFyX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi50YXIuZ3oiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoZy5nbG9iKHNyY19maWxlX2dsb2IpIGFuZCBnLmdsb2IodGFyX2ZpbGVfZ2xvYikpLCAiQ291bGRuJ3QgZmluZCAuc3JjLnJwbSBhbmQgLnRhci5neiBmaWxlcyB1bmRlciAlcy9hbGxhcmNoKi94Y3Vyc29yKiIgJSBkZXBsb3lfZGlyX3NyYykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2NvbnRhaW5lcmltYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvY29udGFpbmVyaW1hZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhNWNjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2NvbnRhaW5lcmltYWdlLnB5CkBAIC0wLDAgKzEsODUgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzLCBydW5DbWQKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCisjIFRoaXMgdGVzdCBidWlsZHMgYW4gaW1hZ2Ugd2l0aCB1c2luZyB0aGUgImNvbnRhaW5lciIgSU1BR0VfRlNUWVBFLCBhbmQKKyMgZW5zdXJlcyB0aGF0IHRoZW4gZmlsZXMgaW4gdGhlIGltYWdlIGFyZSBvbmx5IHRoZSBvbmVzIGV4cGVjdGVkLgorIworIyBUaGUgb25seSBwYWNrYWdlIGFkZGVkIHRvIHRoZSBpbWFnZSBpcyBjb250YWluZXJfaW1hZ2VfdGVzdHBrZywgd2hpY2gKKyMgY29udGFpbnMgb25lIGZpbGUuIEhvd2V2ZXIsIGR1ZSB0byBzb21lIG90aGVyIHRoaW5ncyBub3QgY2xlYW5pbmcgdXAgZHVyaW5nCisjIHJvb3RmcyBjcmVhdGlvbiwgdGhlcmUgaXMgc29tZSBjcnVmdC4gSWRlYWxseSBidWdzIHdpbGwgYmUgZmlsZWQgYW5kIHRoZQorIyBjcnVmdCByZW1vdmVkLCBidXQgZm9yIG5vdyB3ZSB3aGl0ZWxpc3Qgc29tZSBrbm93biBzZXQuCisjCisjIEFsc28gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2UncmUgb25seSBjaGVja2luZyB0aGUgY3J1ZnQgd2hlbiB1c2luZyBpcGsuCisjIFdoZW4gdXNpbmcgZGViLCBhbmQgcnBtIGl0IGlzIGEgYml0IGRpZmZlcmVudCBhbmQgd2UgY291bGQgdGVzdCBhbGwKKyMgb2YgdGhlbSwgYnV0IHRoaXMgdGVzdCBpcyBtb3JlIHRvIGNhdGNoIGlmIG90aGVyIHBhY2thZ2VzIGdldCBhZGRlZCBieQorIyBkZWZhdWx0IG90aGVyIHRoYW4gd2hhdCBpcyBpbiBST09URlNfQk9PVFNUUkFQX0lOU1RBTEwuCisjCitjbGFzcyBDb250YWluZXJJbWFnZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICAjIFZlcmlmeSB0aGF0IHdoZW4gc3BlY2lmeWluZyBhIElNQUdFX1RZUEVERVBfIG9mIHRoZSBmb3JtICJmb28uYmFyIiB0aGF0CisgICAgIyB0aGUgY29udmVyc2lvbiB0eXBlIGJhciBnZXRzIGFkZGVkIGFzIGEgZGVwIGFzIHdlbGwKKyAgICBAT0VUZXN0SUQoMTYxOSkKKyAgICBkZWYgdGVzdF9leHBlY3RlZF9maWxlcyhzZWxmKToKKworICAgICAgICBkZWYgZ2V0X2VhY2hfcGF0aF9wYXJ0KHBhdGgpOgorICAgICAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgICAgICBwYXJ0ID0gWyAnLicgKyBwYXRoICsgJy8nIF0KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfZWFjaF9wYXRoX3BhcnQocGF0aC5yc3BsaXQoJy8nLCAxKVswXSkKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0ICsgcmVzdWx0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgtZHVtbXkiCitJTUFHRV9GU1RZUEVTID0gImNvbnRhaW5lciIKK1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX2lwayIKK0lNQUdFX0ZFQVRVUkVTID0gIiIKKyIiIikKKworICAgICAgICBiYnZhcnMgPSBnZXRfYmJfdmFycyhbJ2JpbmRpcicsICdzeXNjb25mZGlyJywgJ2xvY2Fsc3RhdGVkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfTElOS19OQU1FJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9J2NvbnRhaW5lci10ZXN0LWltYWdlJykKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBbCisgICAgICAgICAgICAgICAgICAgICcuLycsCisgICAgICAgICAgICAgICAgICAgICcue2JpbmRpcn0vdGhlYXBwJywKKyAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vZGVmYXVsdC8nLAorICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9kZWZhdWx0L3Bvc3RpbnN0JywKKyAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vbGQuc28uY2FjaGUnLAorICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS90aW1lc3RhbXAnLAorICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS92ZXJzaW9uJywKKyAgICAgICAgICAgICAgICAgICAgJy4vcnVuLycsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlLycsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2xkY29uZmlnLycsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2xkY29uZmlnL2F1eC1jYWNoZScsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL29wa2cvJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vbGliLycsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2xpYi9vcGtnLycKKyAgICAgICAgICAgICAgICBdCisKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBbIHguZm9ybWF0KGJpbmRpcj1iYnZhcnNbJ2JpbmRpciddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpcj1iYnZhcnNbJ3N5c2NvbmZkaXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsc3RhdGVkaXI9YmJ2YXJzWydsb2NhbHN0YXRlZGlyJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBleHBlY3RlZF9maWxlcyBdCisKKyAgICAgICAgIyBTaW5jZSB0YXIgbGlzdHMgYWxsIGRpcmVjdG9yaWVzIGluZGl2aWR1YWxseSwgbWFrZSBzdXJlIGVhY2ggZWxlbWVudAorICAgICAgICAjIGZyb20gYmluZGlyLCBzeXNjb25mZGlyLCBldGMgaXMgYWRkZWQKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snYmluZGlyJ10pCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ3N5c2NvbmZkaXInXSkKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snbG9jYWxzdGF0ZWRpciddKQorCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gc29ydGVkKGV4cGVjdGVkX2ZpbGVzKQorCisgICAgICAgICMgQnVpbGQgdGhlIGltYWdlIG9mIGNvdXJzZQorICAgICAgICBiaXRiYWtlKCdjb250YWluZXItdGVzdC1pbWFnZScpCisKKyAgICAgICAgaW1hZ2UgPSBvcy5wYXRoLmpvaW4oYmJ2YXJzWydERVBMT1lfRElSX0lNQUdFJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJidmFyc1snSU1BR0VfTElOS19OQU1FJ10gKyAnLnRhci5iejInKQorCisgICAgICAgICMgRW5zdXJlIHRoZSBmaWxlcyBpbiB0aGUgaW1hZ2UgYXJlIHdoYXQgd2UgZXhwZWN0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgidGFyIHRmIHt9IHwgc29ydCIuZm9ybWF0KGltYWdlKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpLCBleHBlY3RlZF9maWxlcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjgwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CkBAIC0wLDAgKzEsMTcxMSBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGdsb2IKK2ltcG9ydCBmbm1hdGNoCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBjcmVhdGVfdGVtcF9sYXllcgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycywgcnVucWVtdSwgZ2V0X3Rlc3RfbGF5ZXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBEZXZ0b29sQmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgYnVmZmVyID0gVHJ1ZQorCisgICAgZGVmIF90ZXN0X3JlY2lwZV9jb250ZW50cyhzZWxmLCByZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGNoZWNraW5oZXJpdHMpOgorICAgICAgICB3aXRoIG9wZW4ocmVjaXBlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgaW52YXIgPSBOb25lCisgICAgICAgICAgICBpbnZhbHVlID0gTm9uZQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICB2YXIgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgaW52YXI6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbGluZS5zdHJpcCgpLnN0cmlwKCciJykKKyAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJ1xcJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlICs9ICcgJyArIHZhbHVlWzotMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgKz0gJyAnICsgdmFsdWUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0gaW52YXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW52YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgaW52YXIgPSBOb25lCisgICAgICAgICAgICAgICAgZWxpZiAnPScgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgnPScsIDEpCisgICAgICAgICAgICAgICAgICAgIHZhciA9IHNwbGl0bGluZVswXS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNwbGl0bGluZVsxXS5zdHJpcCgpLnN0cmlwKCciJykKKyAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJ1xcJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlID0gdmFsdWVbOi0xXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhciA9IHZhcgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnaW5oZXJpdCAnKToKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSBsaW5lLnNwbGl0KClbMTpdCisKKyAgICAgICAgICAgICAgICBpZiB2YXIgYW5kIHZhciBpbiBjaGVja3ZhcnM6CisgICAgICAgICAgICAgICAgICAgIG5lZWR2YWx1ZSA9IGNoZWNrdmFycy5wb3AodmFyKQorICAgICAgICAgICAgICAgICAgICBpZiBuZWVkdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVmFyaWFibGUgJXMgc2hvdWxkIG5vdCBhcHBlYXIgaW4gcmVjaXBlLCBidXQgdmFsdWUgaXMgYmVpbmcgc2V0IHRvICIlcyInICUgKHZhciwgdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5lZWR2YWx1ZSwgc2V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZhciA9PSAnTElDRU5TRSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZXQodmFsdWUuc3BsaXQoJyAmICcpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNldCh2YWx1ZS5zcGxpdCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBuZWVkdmFsdWUsICd2YWx1ZXMgZm9yICVzIGRvIG5vdCBtYXRjaCcgJSB2YXIpCisKKworICAgICAgICBtaXNzaW5ndmFycyA9IHt9CisgICAgICAgIGZvciB2YXIsIHZhbHVlIGluIGNoZWNrdmFycy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbWlzc2luZ3ZhcnNbdmFyXSA9IHZhbHVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzc2luZ3ZhcnMsIHt9LCAnU29tZSBleHBlY3RlZCB2YXJpYWJsZXMgbm90IGZvdW5kIGluIHJlY2lwZTogJXMnICUgY2hlY2t2YXJzKQorCisgICAgICAgIGZvciBpbmhlcml0IGluIGNoZWNraW5oZXJpdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGluaGVyaXQsIGluaGVyaXRzLCAnTWlzc2luZyBpbmhlcml0IG9mICVzJyAlIGluaGVyaXQpCisKKyAgICBkZWYgX2NoZWNrX2JiYXBwZW5kKHNlbGYsIHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzJywgY3dkPXNlbGYuYnVpbGRkaXIpCisgICAgICAgIHJlc3VsdGxpbmVzID0gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgaW5yZWNpcGUgPSBGYWxzZQorICAgICAgICBiYmFwcGVuZHMgPSBbXQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdGxpbmVzOgorICAgICAgICAgICAgaWYgaW5yZWNpcGU6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcgJyk6CisgICAgICAgICAgICAgICAgICAgIGJiYXBwZW5kcy5hcHBlbmQobGluZS5zdHJpcCgpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIGxpbmUgPT0gJyVzOicgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpOgorICAgICAgICAgICAgICAgIGlucmVjaXBlID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYmJhcHBlbmRzKSwgMiwgJyVzIHJlY2lwZSBpcyBiZWluZyBiYmFwcGVuZGVkIGJ5IGFub3RoZXIgbGF5ZXIgLSBiYmFwcGVuZHMgZm91bmQ6XG4gICVzJyAlICh0ZXN0cmVjaXBlLCAnXG4gICcuam9pbihiYmFwcGVuZHMpKSkKKyAgICAgICAgZm9yIGJiYXBwZW5kIGluIGJiYXBwZW5kczoKKyAgICAgICAgICAgIGlmIGJiYXBwZW5kLnN0YXJ0c3dpdGgoYXBwZW5kZGlyKToKKyAgICAgICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBiYmFwcGVuZAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2JiYXBwZW5kIGZvciByZWNpcGUgJXMgZG9lcyBub3Qgc2VlbSB0byBiZSBjcmVhdGVkIGluIHRlc3QgbGF5ZXInICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZQorCisgICAgZGVmIF9jcmVhdGVfdGVtcF9sYXllcihzZWxmLCB0ZW1wbGF5ZXJkaXIsIGFkZGxheWVyLCB0ZW1wbGF5ZXJuYW1lLCBwcmlvcml0eT05OTksIHJlY2lwZXBhdGhzcGVjPSdyZWNpcGVzLSovKicpOgorICAgICAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsIHRlbXBsYXllcm5hbWUsIHByaW9yaXR5LCByZWNpcGVwYXRoc3BlYykKKyAgICAgICAgaWYgYWRkbGF5ZXI6CisgICAgICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMgfHwgdHJ1ZScgJSB0ZW1wbGF5ZXJkaXIpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQorCisgICAgZGVmIF9wcm9jZXNzX2xzX291dHB1dChzZWxmLCBvdXRwdXQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29udmVydCBscyAtbCBvdXRwdXQgdG8gYSBmb3JtYXQgd2UgY2FuIHJlYXNvbmFibHkgY29tcGFyZSBmcm9tIG9uZSBjb250ZXh0CisgICAgICAgIHRvIGFub3RoZXIgKGUuZy4gZnJvbSBob3N0IHRvIHRhcmdldCkKKyAgICAgICAgIiIiCisgICAgICAgIGZpbGVsaXN0ID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgaWYgbGVuKHNwbGl0bGluZSkgPCA4OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnX3Byb2Nlc3NfbHNfb3V0cHV0OiBpbnZhbGlkIG91dHB1dCBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgLiBvbiBwZXJtcworICAgICAgICAgICAgc3BsaXRsaW5lWzBdID0gc3BsaXRsaW5lWzBdLnJzdHJpcCgnLicpCisgICAgICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIC4gb24gcGF0aHMKKyAgICAgICAgICAgIHNwbGl0bGluZVstMV0gPSBzcGxpdGxpbmVbLTFdLmxzdHJpcCgnLicpCisgICAgICAgICAgICAjIERyb3AgZmllbGRzIHdlIGRvbid0IHdhbnQgdG8gY29tcGFyZQorICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs3XQorICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs2XQorICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs1XQorICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs0XQorICAgICAgICAgICAgZGVsIHNwbGl0bGluZVsxXQorICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKCcgJy5qb2luKHNwbGl0bGluZSkpCisgICAgICAgIHJldHVybiBmaWxlbGlzdAorCisKK2NsYXNzIERldnRvb2xUZXN0cyhEZXZ0b29sQmFzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RPUERJUicsICdTU1RBVEVfRElSJ10pCisgICAgICAgIGNscy5vcmlnaW5hbF9zc3RhdGUgPSBiYl92YXJzWydTU1RBVEVfRElSJ10KKyAgICAgICAgY2xzLmRldnRvb2xfc3N0YXRlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ1RPUERJUiddLCAnc3N0YXRlX2RldnRvb2wnKQorICAgICAgICBjbHMuc3N0YXRlX2NvbmYgID0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgY2xzLmRldnRvb2xfc3N0YXRlCisgICAgICAgIGNscy5zc3RhdGVfY29uZiArPSAoJ1NTVEFURV9NSVJST1JTICs9ICJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgY2xzLm9yaWdpbmFsX3NzdGF0ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5sb2dnZXIuZGVidWcoJ0RlbGV0aW5nIGRldnRvb2wgc3N0YXRlIGNhY2hlIG9uICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKKyAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQorICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlRlc3QgY2FzZSBzZXR1cCBmdW5jdGlvbiIiIgorICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi53b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKHNlbGYuc3N0YXRlX2NvbmYpCisKKyAgICBkZWYgX2NoZWNrX3NyY19yZXBvKHNlbGYsIHJlcG9fZGlyKToKKyAgICAgICAgIiIiQ2hlY2sgc3JjdHJlZSBnaXQgcmVwb3NpdG9yeSIiIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocmVwb19kaXIsICcuZ2l0JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSBub3QgZm91bmQnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9cmVwb19kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlYXRlZCBnaXQgcmVwbyBpcyBub3QgY2xlYW4nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzeW1ib2xpYy1yZWYgSEVBRCcsIGN3ZD1yZXBvX2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICJyZWZzL2hlYWRzL2RldnRvb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICdXcm9uZyBicmFuY2ggaW4gZ2l0IHJlcG8nKQorCisgICAgZGVmIF9jaGVja19yZXBvX3N0YXR1cyhzZWxmLCByZXBvX2RpciwgZXhwZWN0ZWRfc3RhdHVzKToKKyAgICAgICAgIiIiQ2hlY2sgdGhlIHdvcmt0cmVlIHN0YXR1cyBvZiBhIHJlcG9zaXRvcnkiIiIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC4gLS1wb3JjZWxhaW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXJlcG9fZGlyKQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGZvciBpbmQsIChmX3N0YXR1cywgZm5fcmUpIGluIGVudW1lcmF0ZShleHBlY3RlZF9zdGF0dXMpOgorICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGZuX3JlLCBsaW5lWzM6XSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGZfc3RhdHVzICE9IGxpbmVbOjJdOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIHN0YXR1cyBpbiBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMucG9wKGluZCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIG1vZGlmaWVkIGZpbGUgaW4gbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgaWYgZXhwZWN0ZWRfc3RhdHVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdNaXNzaW5nIGZpbGUgY2hhbmdlczogJXMnICUgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDExNTgpCisgICAgZGVmIHRlc3RfY3JlYXRlX3dvcmtzcGFjZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy93b3Jrc3BhY2UnIG5vdCBpbiByZXN1bHQub3V0cHV0LCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBsYXllciBpbiBiYmxheWVycy5jb25mJykKKyAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIHBhdGgKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBjcmVhdGUtd29ya3NwYWNlICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgbXNnID0gIk5vIHdvcmtzcGFjZSBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMgIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgd29ya3NwYWNlIGxheWVyIHdpdGggdGhlIGRlZmF1bHQgcGF0aAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgY3JlYXRlLXdvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksIG1zZyA9ICJObyB3b3Jrc3BhY2UgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzICIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYud29ya3NwYWNlZGlyLCByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExNTkpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGQoc2VsZik6CisgICAgICAgICMgRmV0Y2ggc291cmNlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBwbiA9ICdwdicKKyAgICAgICAgcHYgPSAnMS41LjMnCisgICAgICAgIHVybCA9ICdodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvc291cmNlcy9wdi0xLjUuMy50YXIuYnoyJworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3dnZXQgJXMnICUgdXJsLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd0YXIgeGZ2ICVzJyAlIG9zLnBhdGguYmFzZW5hbWUodXJsKSwgY3dkPXRlbXBkaXIpCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnJXMtJXMnICUgKHBuLCBwdikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgcG4pCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMnICUgKHBuLCBzcmNkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHJlY2lwZXBhdGggPSAnJXMvcmVjaXBlcy8lcy8lc18lcy5iYicgJSAoc2VsZi53b3Jrc3BhY2VkaXIsIHBuLCBwbiwgcHYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlcGF0aCwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGZpbmQtcmVjaXBlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCAtcSBmaW5kLXJlY2lwZSAlcycgJSBwbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGVwYXRoLCByZXN1bHQub3V0cHV0LnN0cmlwKCkpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGVkaXQtcmVjaXBlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnVklTVUFMPSJlY2hvIDEyMyIgZGV2dG9vbCAtcSBlZGl0LXJlY2lwZSAlcycgJSBwbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTIzICVzJyAlIHJlY2lwZXBhdGgsIHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZSAoaGF2ZSB0byBkbyB0aGlzICphZnRlciogZGV2dG9vbCBhZGQgc2luY2UgdGhlIHJlY2lwZSBvbmx5IGV4aXN0cyB0aGVuKQorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSBwbikKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYnVpbGQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHBuKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ2JpbmRpciddLCBwbikKKyAgICAgICAgaW5zdGFsbGRpciA9IGJiX3ZhcnNbJ0QnXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zdGFsbGRpciwgJ0NvdWxkIG5vdCBxdWVyeSBpbnN0YWxsZGlyIHZhcmlhYmxlJykKKyAgICAgICAgYmluZGlyID0gYmJfdmFyc1snYmluZGlyJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJpbmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBiaW5kaXIgdmFyaWFibGUnKQorICAgICAgICBpZiBiaW5kaXJbMF0gPT0gJy8nOgorICAgICAgICAgICAgYmluZGlyID0gYmluZGlyWzE6XQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGluc3RhbGxkaXIsIGJpbmRpciwgJ3B2JykpLCAncHYgYmluYXJ5IG5vdCBmb3VuZCBpbiBEJykKKworICAgIEBPRVRlc3RJRCgxNDIzKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2dpdF9sb2NhbChzZWxmKToKKyAgICAgICAgIyBGZXRjaCBzb3VyY2UgZnJvbSBhIHJlbW90ZSBVUkwsIGJ1dCBkbyBpdCBvdXRzaWRlIG9mIGRldnRvb2wKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHBuID0gJ2RidXMtd2FpdCcKKyAgICAgICAgc3JjcmV2ID0gJzZjYzYwNzdhMzZmZTI2NDhhNWY5OTNmZTdjMTZjOTYzMmY5NDY1MTcnCisgICAgICAgICMgV2UgY2hvb3NlIGFuIGh0dHBzOi8vIGdpdCBVUkwgaGVyZSB0byBjaGVjayByZXdyaXRpbmcgdGhlIFVSTCB3b3JrcworICAgICAgICB1cmwgPSAnaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvZGJ1cy13YWl0JworICAgICAgICAjIEZvcmNlIGZldGNoaW5nIHRvICJub25hbWUiIHN1YmRpciBzbyB3ZSB2ZXJpZnkgd2UncmUgcGlja2luZyB1cCB0aGUgbmFtZSBmcm9tIGF1dG9jb25mCisgICAgICAgICMgaW5zdGVhZCBvZiB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2xvbmUgJXMgbm9uYW1lJyAlIHVybCwgY3dkPXRlbXBkaXIpCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbm9uYW1lJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgLS1oYXJkICVzJyAlIHNyY3JldiwgY3dkPXNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUuYWMnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyBEb24ndCBzcGVjaWZ5IGEgbmFtZSBzaW5jZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBhdXRvLWRldGVjdCBpdAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBDaGVjayB0aGUgcmVjaXBlIG5hbWUgaXMgY29ycmVjdAorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHBuKQorICAgICAgICBzZWxmLmFzc2VydEluKCclc19naXQuYmInICUgcG4sIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlZmlsZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHBuLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGVmaWxlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdHUEx2MicKKyAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJworICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKKyAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzAuMStnaXQke1NSQ1BWfScKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L2RidXMtd2FpdDtwcm90b2NvbD1odHRwcycKKyAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9IHNyY3JldgorICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2RidXMnXSkKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxMTYyKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2xpYnJhcnkoc2VsZik6CisgICAgICAgICMgRmV0Y2ggc291cmNlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICB2ZXJzaW9uID0gJzEuMScKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vd3d3LmludHJhMm5ldC5jb20vZW4vZGV2ZWxvcGVyL2xpYmZ0ZGkvZG93bmxvYWQvbGliZnRkaTEtJXMudGFyLmJ6MicgJSB2ZXJzaW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnd2dldCAlcycgJSB1cmwsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3RhciB4ZnYgbGliZnRkaTEtJXMudGFyLmJ6MicgJSB2ZXJzaW9uLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsaWJmdGRpMS0lcycgJSB2ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ0NNYWtlTGlzdHMudHh0JykpLCAnVW5hYmxlIHRvIGZpbmQgQ01ha2VMaXN0cy50eHQgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZCAoYW5kIHVzZSAtViBzbyB3ZSB0ZXN0IHRoYXQgdG9vKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkIGxpYmZ0ZGkgJXMgLVYgJXMnICUgKHNyY2RpciwgdmVyc2lvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliZnRkaScsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCisgICAgICAgIGJpdGJha2UoJ2xpYmZ0ZGkgLWMgY2xlYW5zc3RhdGUnKQorICAgICAgICAjIGxpYmZ0ZGkncyBweXRob24vQ01ha2VMaXN0cy50eHQgaXMgYSBiaXQgYnJva2VuLCBzbyBsZXQncyBqdXN0IGRpc2FibGUgaXQKKyAgICAgICAgIyBUaGVyZSdzIGFsc28gdGhlIG1hdHRlciBvZiBpdCBpbnN0YWxsaW5nIGNtYWtlIGZpbGVzIHRvIGEgcGF0aCB3ZSBkb24ndAorICAgICAgICAjIG5vcm1hbGx5IGNvdmVyLCB3aGljaCB0cmlnZ2VycyB0aGUgaW5zdGFsbGVkLXZzLXNoaXBwZWQgUUEgdGVzdCB3ZSBoYXZlCisgICAgICAgICMgd2l0aGluIGRvX3BhY2thZ2UKKyAgICAgICAgcmVjaXBlZmlsZSA9ICclcy9yZWNpcGVzL2xpYmZ0ZGkvbGliZnRkaV8lcy5iYicgJSAoc2VsZi53b3Jrc3BhY2VkaXIsIHZlcnNpb24pCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBzZXR2YXIgJXMgRVhUUkFfT0VDTUFLRSAtLSBcJy1EUFlUSE9OX0JJTkRJTkdTPU9GRiAtRExJQkZURElfQ01BS0VfQ09ORklHX0RJUj0ke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXNcJycgJSByZWNpcGVmaWxlKQorICAgICAgICB3aXRoIG9wZW4ocmVjaXBlZmlsZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnXG5GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcyJcbicpCisgICAgICAgICAgICAjIFdlIGRvbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gcGljayB1cCB0aGlzIGRlcGVuZGVuY3kgYXV0b21hdGljYWxseSB5ZXQuLi4KKyAgICAgICAgICAgIGYud3JpdGUoJ1xuREVQRU5EUyArPSAibGlidXNiMSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdcblRFU1RMSUJPVVRQVVQgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtUVU5FX1BLR0FSQ0h9LyR7UE59LyR7bGliZGlyfSJcbicpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGJ1aWxkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCBsaWJmdGRpJykKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVEVTVExJQk9VVFBVVCcsICdTVEFNUCddLCAnbGliZnRkaScpCisgICAgICAgIHN0YWdpbmdfbGliZGlyID0gYmJfdmFyc1snVEVTVExJQk9VVFBVVCddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFnaW5nX2xpYmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBURVNUTElCT1VUUFVUIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzdGFnaW5nX2xpYmRpciwgJ2xpYmZ0ZGkxLnNvLjIuMS4wJykpLCAibGliZnRkaSBiaW5hcnkgbm90IGZvdW5kIGluIFNUQUdJTkdfTElCRElSLiBPdXRwdXQgb2YgZGV2dG9vbCBidWlsZCBsaWJmdGRpICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHJlc2V0CisgICAgICAgIHN0YW1wcHJlZml4ID0gYmJfdmFyc1snU1RBTVAnXQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgbGliZnRkaScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJmdGRpJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4LCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlIGxpYmZ0ZGknKQorICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4ICsgJyonKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlIGxpYmZ0ZGkgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzdGFnaW5nX2xpYmRpciwgJ2xpYmZ0ZGkxLnNvLjIuMS4wJykpLCAnbGliZnRkaSBiaW5hcnkgc3RpbGwgZm91bmQgaW4gU1RBR0lOR19MSUJESVIgYWZ0ZXIgY2xlYW5pbmcnKQorCisgICAgQE9FVGVzdElEKDExNjApCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2goc2VsZik6CisgICAgICAgICMgRmV0Y2ggc291cmNlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICB0ZXN0dmVyID0gJzAuMjMnCisgICAgICAgIHVybCA9ICdodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYXJrdXBTYWZlL01hcmt1cFNhZmUtJXMudGFyLmd6JyAlIHRlc3R2ZXIKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdweXRob24tbWFya3Vwc2FmZScKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ3NldHVwLnB5JykpLCAnVW5hYmxlIHRvIGZpbmQgc2V0dXAucHkgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzcmNkaXIsICcuZ2l0JykpLCAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgdGVzdHZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vTWFya3VwU2FmZS0ke1BWfScKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZSh0ZXN0dmVyLCAnJHtQVn0nKQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorICAgICAgICAjIFRyeSB3aXRoIHZlcnNpb24gc3BlY2lmaWVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzaHV0aWwucm10cmVlKHNyY2RpcikKKyAgICAgICAgZmFrZXZlciA9ICcxLjknCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgJXMgLVYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsLCBmYWtldmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdzZXR1cC5weScpKSwgJ1VuYWJsZSB0byBmaW5kIHNldHVwLnB5IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIGZha2V2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L01hcmt1cFNhZmUtJXMnICUgdGVzdHZlcgorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDExNjEpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2hfZ2l0KHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgdXJsID0gJ2dpdHNtOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbXJhYScKKyAgICAgICAgY2hlY2tyZXYgPSAnYWUxMjdiMTlhNTBhYTU0MjU1ZTQzMzBjY2ZkZDlhNWQwNThlNTgxZCcKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtcmFhJworICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtYSAtZiAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnaW1yYWEnLCAnaW1yYWEuYycpKSwgJ1VuYWJsZSB0byBmaW5kIGltcmFhL2ltcmFhLmMgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdfZ2l0LmJiJywgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCisgICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjArZ2l0JHtTUkNQVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCisgICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSAnJHtBVVRPUkVWfScKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKyAgICAgICAgIyBUcnkgd2l0aCByZXZpc2lvbiBhbmQgdmVyc2lvbiBzcGVjaWZpZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNodXRpbC5ybXRyZWUoc3JjZGlyKQorICAgICAgICB1cmxfcmV2ID0gJyVzO3Jldj0lcycgJSAodXJsLCBjaGVja3JldikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAiJXMiIC1WIDEuNScgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmxfcmV2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdpbXJhYScsICdpbXJhYS5jJykpLCAnVW5hYmxlIHRvIGZpbmQgaW1yYWEvaW1yYWEuYyBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19naXQuYmInLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKKyAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuNStnaXQke1NSQ1BWfScKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKKyAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9IGNoZWNrcmV2CisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTM5MSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaF9zaW1wbGUoc2VsZik6CisgICAgICAgICMgRmV0Y2ggc291cmNlIGZyb20gYSByZW1vdGUgVVJMLCBhdXRvLWRldGVjdGluZyBuYW1lCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICB0ZXN0dmVyID0gJzEuNi4wJworICAgICAgICB1cmwgPSAnaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3NvdXJjZXMvcHYtJXMudGFyLmJ6MicgJSB0ZXN0dmVyCisgICAgICAgIHRlc3RyZWNpcGUgPSAncHYnCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSB1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc3JjZGlyLCAnLmdpdCcpKSwgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSB3YXMgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIHRlc3R2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZSh0ZXN0dmVyLCAnJHtQVn0nKQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDExNjQpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnkoc2VsZik6CisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbWRhZG0nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG1kYWRtIC14ICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJ21kYWRtXyouYmJhcHBlbmQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCAlcycgJSByZXN1bHQub3V0cHV0KQorCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbWRhZG0nLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisKKyAgICAgICAgYml0YmFrZSgnbWRhZG0gLUMgdW5wYWNrJykKKworICAgICAgICBkZWYgY2hlY2tfbGluZShjaGVja2ZpbGUsIGV4cGVjdGVkLCBtZXNzYWdlLCBwcmVzZW50PVRydWUpOgorICAgICAgICAgICAgIyBDaGVjayBmb3IgJGV4cGVjdGVkLCBvbiBhIGxpbmUgb24gaXRzIG93biwgaW4gY2hlY2tmaWxlLgorICAgICAgICAgICAgd2l0aCBvcGVuKGNoZWNrZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIGlmIHByZXNlbnQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQgKyAnXG4nLCBmLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZXhwZWN0ZWQgKyAnXG4nLCBmLCBtZXNzYWdlKQorCisgICAgICAgIG1vZGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ21kYWRtLjguaW4nKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydQS0dEJywgJ21hbmRpciddLCAnbWRhZG0nKQorICAgICAgICBwa2dkID0gYmJfdmFyc1snUEtHRCddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwa2dkLCAnQ291bGQgbm90IHF1ZXJ5IFBLR0QgdmFyaWFibGUnKQorICAgICAgICBtYW5kaXIgPSBiYl92YXJzWydtYW5kaXInXQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuZGlyLCAnQ291bGQgbm90IHF1ZXJ5IG1hbmRpciB2YXJpYWJsZScpCisgICAgICAgIG1hbmZpbGUgPSBvZS5wYXRoLmpvaW4ocGtnZCwgbWFuZGlyLCAnbWFuOCcsICdtZGFkbS44JykKKworICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ0NvdWxkIG5vdCBmaW5kIGluaXRpYWwgc3RyaW5nJykKKyAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdVbmV4cGVjdGVkbHkgZm91bmQgcmVwbGFjZW1lbnQgc3RyaW5nJywgcHJlc2VudD1GYWxzZSkKKworICAgICAgICByZXN1bHQgPSBydW5DbWQoInNlZCAtaSAncyFeTGludXggU29mdHdhcmUgUkFJRCQhYW50aXF1ZSBwaW4gc2FyZGluZSEnICVzIiAlIG1vZGZpbGUpCisgICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnbWRhZG0uOC5pbiBmaWxlIG5vdCBtb2RpZmllZCAoc2VkIGZhaWxlZCknKQorCisgICAgICAgIGJpdGJha2UoJ21kYWRtIC1jIHBhY2thZ2UnKQorICAgICAgICBjaGVja19saW5lKG1hbmZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ21hbiBmaWxlIG5vdCBtb2RpZmllZC4gbWFuIHNlYXJjaGVkIGZpbGUgcGF0aDogJXMnICUgbWFuZmlsZSkKKworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjaGVja291dCAtLSAlcycgJSBtb2RmaWxlLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdtYW4gLmluIGZpbGUgbm90IHJlc3RvcmVkIChnaXQgZmFpbGVkKScpCisKKyAgICAgICAgYml0YmFrZSgnbWRhZG0gLWMgcGFja2FnZScpCisgICAgICAgIGNoZWNrX2xpbmUobWFuZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnbWFuIGZpbGUgbm90IHVwZGF0ZWQuIG1hbiBzZWFyY2hlZCBmaWxlIHBhdGg6ICVzJyAlIG1hbmZpbGUpCisKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IG1kYWRtJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21kYWRtJywgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxNjIwKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRjbGVhbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEZpbGUocGF0aCwgKnBhdGhzKToKKyAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocGF0aCwgKnBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoZikKKyAgICAgICAgZGVmIGFzc2VydE5vRmlsZShwYXRoLCAqcGF0aHMpOgorICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwYXRoLCAqcGF0aHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhmKQorCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKKyAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY2xlYW5zc3RhdGUnKQorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpcl9tZGFkbSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICB0ZW1wZGlyX200ID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIGJ1aWxkZGlyX200ID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcl9tZGFkbSkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyX200KQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGJ1aWxkZGlyX200KQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG1kYWRtIG00JykKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ200JywgJ0VYVEVSTkFMU1JDX0JVSUxEID0gIiVzIlxuZG9fY2xlYW4oKSB7XG5cdDpcbn1cbicgJSBidWlsZGRpcl9tNCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtZGFkbSAteCAlcycgJSB0ZW1wZGlyX21kYWRtKQorICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtNCAteCAlcycgJSB0ZW1wZGlyX200KQorICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCisgICAgICAgICAgICBhc3NlcnROb0ZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQorICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQgLWUnKQorICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWRhZG0gbTQgLWMgY29tcGlsZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDApCisgICAgICAgICAgICBhc3NlcnRGaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCisgICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgZXhpc3RzIGFuZCBkb2VzIGNhbGwgbWFrZSBjbGVhbgorICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgYnVpbGRjbGVhbicpCisgICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKKyAgICAgICAgICAgIGFzc2VydE5vRmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCisgICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjb21waWxlJykKKyAgICAgICAgICAgIGFzc2VydEZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKKyAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQorICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY2xlYW4nKQorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBpcyBydW4gYmVmb3JlIGNsZWFuIGZvciBCID09IFMKKyAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBpcyBub3QgcnVuIGJlZm9yZSBjbGVhbiBmb3IgQiAhPSBTCisgICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbTQnKQorCisgICAgQE9FVGVzdElEKDExNjYpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIHNvbWUgcmVjaXBlcworICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKworICAgICAgICB0ZXN0cmVjaXBlcyA9ICdwZXJmIGtlcm5lbC1kZXZzcmMgcGFja2FnZS1pbmRleCBjb3JlLWltYWdlLW1pbmltYWwgbWV0YS10b29sY2hhaW4gcGFja2FnZWdyb3VwLWNvcmUtc2RrIG1ldGEtaWRlLXN1cHBvcnQnLnNwbGl0KCkKKyAgICAgICAgIyBGaW5kIGFjdHVhbCBuYW1lIG9mIGdjYy1zb3VyY2Ugc2luY2UgaXQgbm93IGluY2x1ZGVzIHRoZSB2ZXJzaW9uIC0gY3J1ZGUsIGJ1dCBnb29kIGVub3VnaCBmb3IgdGhpcyBwdXJwb3NlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIGdjYy1zb3VyY2UqJykKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAjIGp1c3QgbWF0Y2ggdGhvc2UgbGluZXMgdGhhdCBjb250YWluIGEgcmVhbCB0YXJnZXQKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnKD9QPHJlY2lwZT5eW2EtekEtWjAtOS4tXSspKD9QPGNvbG9uPjokKScsIGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHRlc3RyZWNpcGVzLmFwcGVuZChtLmdyb3VwKCdyZWNpcGUnKSkKKyAgICAgICAgZm9yIHRlc3RyZWNpcGUgaW4gdGVzdHJlY2lwZXM6CisgICAgICAgICAgICAjIENoZWNrIGl0J3MgYSB2YWxpZCByZWNpcGUKKyAgICAgICAgICAgIGJpdGJha2UoJyVzIC1lJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICAjIGRldnRvb2wgZXh0cmFjdCBzaG91bGQgZmFpbAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgJXMgJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBmYWlsZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSAodGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGZXRjaGluZyAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGVycm9yZWQgb3V0IGJlZm9yZSB0cnlpbmcgdG8gZmV0Y2gnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGdpdmVuIGFuIEVSUk9SJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICAjIGRldnRvb2wgbW9kaWZ5IHNob3VsZCBmYWlsCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdkZXZ0b29sIG1vZGlmeSBvbiAlcyBzaG91bGQgaGF2ZSBmYWlsZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSAgKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIG1vZGlmeSBvbiAlcyBzaG91bGQgaGF2ZSBnaXZlbiBhbiBFUlJPUicgJSB0ZXN0cmVjaXBlKQorCisgICAgQE9FVGVzdElEKDEzNjUpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfbmF0aXZlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIHNvbWUgcmVjaXBlcworICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKworICAgICAgICBiYmNsYXNzZXh0ZW5kZWQgPSBGYWxzZQorICAgICAgICBpbmhlcml0bmF0aXZlID0gRmFsc2UKKyAgICAgICAgdGVzdHJlY2lwZXMgPSAnbXRvb2xzLW5hdGl2ZSBhcHQtbmF0aXZlIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUnLnNwbGl0KCkKKyAgICAgICAgZm9yIHRlc3RyZWNpcGUgaW4gdGVzdHJlY2lwZXM6CisgICAgICAgICAgICBjaGVja2V4dGVuZCA9ICduYXRpdmUnIGluIChnZXRfYmJfdmFyKCdCQkNMQVNTRVhURU5EJywgdGVzdHJlY2lwZSkgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIG5vdCBiYmNsYXNzZXh0ZW5kZWQ6CisgICAgICAgICAgICAgICAgYmJjbGFzc2V4dGVuZGVkID0gY2hlY2tleHRlbmQKKyAgICAgICAgICAgIGlmIG5vdCBpbmhlcml0bmF0aXZlOgorICAgICAgICAgICAgICAgIGluaGVyaXRuYXRpdmUgPSBub3QgY2hlY2tleHRlbmQKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgbW9kaWZ5IG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIGJ1aWxkIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIHJlc2V0IG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYmJjbGFzc2V4dGVuZGVkLCAnTm9uZSBvZiB0aGVzZSByZWNpcGVzIGFyZSBCQkNMQVNTRVhURU5EZWQgdG8gbmF0aXZlIC0gbmVlZCB0byBhZGp1c3QgdGVzdHJlY2lwZXMgbGlzdDogJXMnICUgJywgJy5qb2luKHRlc3RyZWNpcGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaGVyaXRuYXRpdmUsICdOb25lIG9mIHRoZXNlIHJlY2lwZXMgZG8gImluaGVyaXQgbmF0aXZlIiAtIG5lZWQgdG8gYWRqdXN0IHRlc3RyZWNpcGVzIGxpc3Q6ICVzJyAlICcsICcuam9pbih0ZXN0cmVjaXBlcykpCisKKworICAgIEBPRVRlc3RJRCgxMTY1KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2dpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbWtlbGZpbWFnZScKKyAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJ21rZWxmaW1hZ2VfKi5iYmFwcGVuZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIFRyeSBidWlsZGluZworICAgICAgICBiaXRiYWtlKHRlc3RyZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTE2NykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9sb2NhbGZpbGVzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdsaWdodHRwZCcKKyAgICAgICAgc3JjX3VyaSA9IChnZXRfYmJfdmFyKCdTUkNfVVJJJywgdGVzdHJlY2lwZSkgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgZm91bmRsb2NhbCA9IEZhbHNlCisgICAgICAgIGZvciBpdGVtIGluIHNyY191cmk6CisgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJ2ZpbGU6Ly8nKSBhbmQgJy5wYXRjaCcgbm90IGluIGl0ZW06CisgICAgICAgICAgICAgICAgZm91bmRsb2NhbCA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmRsb2NhbCwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gZmV0Y2ggbG9jYWwgZmlsZXMgYW5kIGl0IHNlZW1zIHRoYXQgaXQgbm8gbG9uZ2VyIGRvZXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnY29uZmlndXJlLmFjJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICclc18qLmJiYXBwZW5kJyAlIHRlc3RyZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUcnkgYnVpbGRpbmcKKyAgICAgICAgYml0YmFrZSh0ZXN0cmVjaXBlKQorCisgICAgQE9FVGVzdElEKDEzNzgpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfdmlydHVhbChzZWxmKToKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgdmlydHVhbCByZWNpcGUKKyAgICAgICAgdmlydHJlY2lwZSA9ICd2aXJ0dWFsL21ha2UnCisgICAgICAgIHJlYWxyZWNpcGUgPSAnbWFrZScKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHZpcnRyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICclc18qLmJiYXBwZW5kJyAlIHJlYWxyZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbih2aXJ0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHJlYWxyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBUaGlzIGlzIHByb2JhYmx5IHN1ZmZpY2llbnQKKworCisgICAgQE9FVGVzdElEKDExNjkpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtaW5pY29tJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIE5PVCBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgIyBXZSBkb24ndCB1c2UgLXggaGVyZSBzbyB0aGF0IHdlIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBkZXZ0b29sIG1vZGlmeSB3aXRob3V0IGl0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgQWRkIGEgY291cGxlIG9mIGNvbW1pdHMKKyAgICAgICAgIyBGSVhNRTogdGhpcyBvbmx5IHRlc3RzIGFkZGluZywgbmVlZCB0byBhbHNvIHRlc3QgdXBkYXRlIGFuZCByZW1vdmUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBZGRpdGlvbmFsIGxpbmUiID4+IFJFQURNRScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgUkVBRE1FIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkEgbmV3IGZpbGUiID4gZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBhZGQgZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBhIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQ2hhbmdlLXRoZS1SRUFETUUucGF0Y2gkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDItQWRkLWEtbmV3LWZpbGUucGF0Y2gkJyldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDExNzIpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2dpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbXRkLXV0aWxzJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICBwYXRjaGVzID0gW10KKyAgICAgICAgZm9yIGVudHJ5IGluIHNyY191cmkuc3BsaXQoKToKKyAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoJ2ZpbGU6Ly8nKSBhbmQgZW50cnkuZW5kc3dpdGgoJy5wYXRjaCcpOgorICAgICAgICAgICAgICAgIHBhdGNoZXMuYXBwZW5kKGVudHJ5Wzc6XS5zcGxpdCgnOycpWzBdKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHBhdGNoZXMpLCAwLCAnVGhlICVzIHJlY2lwZSBkb2VzIG5vdCBhcHBlYXIgdG8gY29udGFpbiBhbnkgcGF0Y2hlcywgc28gdGhpcyB0ZXN0IHdpbGwgbm90IGJlIGVmZmVjdGl2ZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIEFkZCBhIGNvdXBsZSBvZiBjb21taXRzCisgICAgICAgICMgRklYTUU6IHRoaXMgb25seSB0ZXN0cyBhZGRpbmcsIG5lZWQgdG8gYWxzbyB0ZXN0IHVwZGF0ZSBhbmQgcmVtb3ZlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiIyBBZGRpdGlvbmFsIGxpbmUiID4+IE1ha2VmaWxlLmFtJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBIG5ldyBmaWxlIiA+IGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgYSBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1yZiAlczsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpXSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWygnIEQnLCAnLiovJXMkJyAlIHBhdGNoKSBmb3IgcGF0Y2ggaW4gcGF0Y2hlc10KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgZGlmZiAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpLCBjd2Q9b3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQorICAgICAgICBhZGRsaW5lcyA9IFsnU1JDUkVWID0gIi4qIicsICdTUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL210ZC11dGlscy5naXQiJ10KKyAgICAgICAgc3JjdXJpbGluZXMgPSBzcmNfdXJpLnNwbGl0KCkKKyAgICAgICAgc3JjdXJpbGluZXNbMF0gPSAnU1JDX1VSSSA9ICInICsgc3JjdXJpbGluZXNbMF0KKyAgICAgICAgc3JjdXJpbGluZXMuYXBwZW5kKCciJykKKyAgICAgICAgcmVtb3ZlbGluZXMgPSBbJ1NSQ1JFViA9ICIuKiInXSArIHNyY3VyaWxpbmVzCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcrKysnKSBvciBsaW5lLnN0YXJ0c3dpdGgoJy0tLScpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnKycpOgorICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGFkZGxpbmVzOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChpdGVtLCBsaW5lWzE6XS5zdHJpcCgpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVkLCAnVW5leHBlY3RlZCBkaWZmIGFkZCBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiByZW1vdmVsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goaXRlbSwgbGluZVsxOl0uc3RyaXAoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlZCwgJ1VuZXhwZWN0ZWQgZGlmZiByZW1vdmUgbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgIyBOb3cgdHJ5IHdpdGggYXV0byBtb2RlCisgICAgICAgIHJ1bkNtZCgnY2QgJXM7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIC0tc2hvdy10b3BsZXZlbCcsIGN3ZD1vcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgIHRvcGxldmVsZGlyID0gcmVzdWx0Lm91dHB1dC5zdHJpcCgpCisgICAgICAgIHJlbHBhdGNocGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0b3BsZXZlbGRpciksIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgb3MucGF0aC5yZWxwYXRoKHJlY2lwZWZpbGUsIHRvcGxldmVsZGlyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJyVzLzAwMDEtQ2hhbmdlLXRoZS1NYWtlZmlsZS5wYXRjaCcgJSByZWxwYXRjaHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICclcy8wMDAyLUFkZC1hLW5ldy1maWxlLnBhdGNoJyAlIHJlbHBhdGNocGF0aCldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDExNzApCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2FwcGVuZChzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gTk9UIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICB0ZW1wc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdzb3VyY2UnKQorICAgICAgICB0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xheWVyJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcHNyY2RpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcHNyY2RpcikKKyAgICAgICAgIyBBZGQgYSBjb21taXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJzZWQgJ3MhXFwoI2RlZmluZSBWRVJTSU9OXFxXKlwiW15cIl0qXFwpXCIhXFwxLWN1c3RvbVwiIScgLWkgUmVhZE1lLmMiLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJBZGQgb3VyIGN1c3RvbSB2ZXJzaW9uIicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLWYgJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0IC4nICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSkpCisgICAgICAgICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGxheWVyIGFuZCBhZGQgaXQgdG8gYmJsYXllcnMuY29uZgorICAgICAgICBzZWxmLl9jcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsIFRydWUsICdzZWxmdGVzdHVwZGF0ZXJlY2lwZScpCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYmFwcGVuZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzonLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZSBpcyBzdGlsbCBjbGVhbgorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIENoZWNrIGJiYXBwZW5kIHdhcyBjcmVhdGVkCisgICAgICAgIHNwbGl0cGF0aCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKS5zcGxpdChvcy5zZXApCisgICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsIHNwbGl0cGF0aFstMl0sIHNwbGl0cGF0aFstMV0pCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcikKKyAgICAgICAgcGF0Y2hmaWxlID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSwgJzAwMDEtQWRkLW91ci1jdXN0b20tdmVyc2lvbi5wYXRjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHBhdGNoZmlsZSwgJ1BhdGNoIGZpbGUgbm90IGNyZWF0ZWQnKQorCisgICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgY29udGVudHMKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BZGQtb3VyLWN1c3RvbS12ZXJzaW9uLnBhdGNoIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCisKKyAgICAgICAgIyBDaGVjayB3ZSBjYW4gcnVuIGl0IGFnYWluIGFuZCBiYmFwcGVuZCBpc24ndCBtb2RpZmllZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQorICAgICAgICAjIERyb3AgbmV3IGNvbW1pdCBhbmQgY2hlY2sgcGF0Y2ggZ2V0cyBkZWxldGVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IEhFQUReJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhwYXRjaGZpbGUsICdQYXRjaCBmaWxlIG5vdCBkZWxldGVkJykKKyAgICAgICAgZXhwZWN0ZWRsaW5lczIgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzMiwgZi5yZWFkbGluZXMoKSkKKyAgICAgICAgIyBQdXQgY29tbWl0IGJhY2sgYW5kIGNoZWNrIHdlIGNhbiBydW4gaXQgaWYgbGF5ZXIgaXNuJ3QgaW4gYmJsYXllcnMuY29uZgorICAgICAgICBvcy5yZW1vdmUoYmJhcHBlbmRmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkFkZCBvdXIgY3VzdG9tIHZlcnNpb24iJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiBTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhwYXRjaGZpbGUsICdQYXRjaCBmaWxlIG5vdCBjcmVhdGVkICh3aXRoIGRpc2FibGVkIGxheWVyKScpCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKKyAgICAgICAgIyBEZWxldGluZyBpc24ndCBleHBlY3RlZCB0byB3b3JrIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMKKworICAgIEBPRVRlc3RJRCgxMTcxKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9hcHBlbmRfZ2l0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtdGQtdXRpbHMnCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGZvciBlbnRyeSBpbiBzcmNfdXJpLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBlbnRyeS5zdGFydHN3aXRoKCdnaXQ6Ly8nKToKKyAgICAgICAgICAgICAgICBnaXRfdXJpID0gZW50cnkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICB0ZW1wc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdzb3VyY2UnKQorICAgICAgICB0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xheWVyJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcHNyY2RpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcHNyY2RpcikKKyAgICAgICAgIyBBZGQgYSBjb21taXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICIjIEFkZGl0aW9uYWwgbGluZSIgPj4gTWFrZWZpbGUuYW0nLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLWYgJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0IC4nICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSkpCisgICAgICAgICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGxheWVyCisgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsICdjb25mJykpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX0NPTExFQ1RJT05TICs9ICJvZXNlbGZ0ZXN0dGVtcGxheWVyIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUFJJT1JJVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICI5OTkiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fSUdOT1JFX0VNUFRZX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiMSJcbicpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcyB8fCB0cnVlJyAlIHRlbXBsYXllcmRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJiYXBwZW5kCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzonLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZSBpcyBzdGlsbCBjbGVhbgorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIENoZWNrIGJiYXBwZW5kIHdhcyBjcmVhdGVkCisgICAgICAgIHNwbGl0cGF0aCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKS5zcGxpdChvcy5zZXApCisgICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsIHNwbGl0cGF0aFstMl0sIHNwbGl0cGF0aFstMV0pCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKKworICAgICAgICAjIENoZWNrIGJiYXBwZW5kIGNvbnRlbnRzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQorCisgICAgICAgICMgQ2hlY2sgd2UgY2FuIHJ1biBpdCBhZ2FpbiBhbmQgYmJhcHBlbmQgaXNuJ3QgbW9kaWZpZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKKyAgICAgICAgIyBEcm9wIG5ldyBjb21taXQgYW5kIGNoZWNrIFNSQ1JFViBjaGFuZ2VzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IEhFQUReJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCisgICAgICAgICMgUHV0IGNvbW1pdCBiYWNrIGFuZCBjaGVjayB3ZSBjYW4gcnVuIGl0IGlmIGxheWVyIGlzbid0IGluIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgb3MucmVtb3ZlKGJiYXBwZW5kZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6IFNwZWNpZmllZCBsYXllciBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQgaW4gYmJsYXllcnMuY29uZicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQorICAgICAgICAjIERlbGV0aW5nIGlzbid0IGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcworCisgICAgQE9FVGVzdElEKDEzNzApCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGF0IGxvY2FsIHNvdXJjZSBmaWxlcyBhcmUgY29waWVkIG92ZXIgaW5zdGVhZCBvZiBwYXRjaGVkIiIiCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbWFrZWRldnMnCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBTZXR1cCBzcmN0cmVlIGZvciBtb2RpZnlpbmcgdGhlIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUKKyAgICAgICAgIyBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBUcnkgYnVpbGRpbmcganVzdCB0byBlbnN1cmUgd2UgaGF2ZW4ndCBicm9rZW4gdGhhdAorICAgICAgICBiaXRiYWtlKCIlcyIgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIEVkaXQgLyBjb21taXQgbG9jYWwgc291cmNlCisgICAgICAgIHJ1bkNtZCgnZWNobyAiLyogRm9vYmFyICovIiA+PiBvZS1sb2NhbC1maWxlcy9tYWtlZGV2cy5jJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIkJhciIgPiBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBhZGQgbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBnaXQgY2xlYW4gLWZkIC47IGdpdCBjaGVja291dCAuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQorICAgICAgICBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBNJywgJy4qL21ha2VkZXZzL21ha2VkZXZzLmMkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL21ha2VkZXZzL25ldy1sb2NhbCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbWFrZWRldnMvMDAwMS1BZGQtbmV3LWZpbGUucGF0Y2gkJyldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEzNzEpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzXzIoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGxvY2FsIHNvdXJjZSBmaWxlcyBzdXBwb3J0IHdoZW4gb2UtbG9jYWwtZmlsZXMgaXMgaW4gR2l0IiIiCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbHpvJworICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgICMgU2V0dXAgc3JjdHJlZSBmb3IgbW9kaWZ5aW5nIHRoZSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgQWRkIG9lLWxvY2FsLWZpbGVzIHRvIEdpdAorICAgICAgICBydW5DbWQoJ3JtIG9lLWxvY2FsLWZpbGVzLy5naXRpZ25vcmUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGxvY2FsIHNvdXJjZXMiJywgY3dkPXRlbXBkaXIpCisgICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2VzCisgICAgICAgIHJ1bkNtZCgnZWNobyAiIyBGb29iYXIiID4+IG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWFtICJFZGl0IGV4aXN0aW5nIGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IHJtIG9lLWxvY2FsLWZpbGVzL3J1bi1wdGVzdCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0iUmVtb3ZlIGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBsb2NhbCBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIkdhciIgPiBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBhZGQgbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBnaXQgY2xlYW4gLWZkIC47IGdpdCBjaGVja291dCAuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQorICAgICAgICAjIENoZWNrb3V0IHVubW9kaWZpZWQgZmlsZSB0byB3b3JraW5nIGNvcHkgLT4gZGV2dG9vbCBzaG91bGQgc3RpbGwgcGljaworICAgICAgICAjIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGZyb20gSEVBRAorICAgICAgICBydW5DbWQoJ2dpdCBjaGVja291dCBIRUFEXiAtLSBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9hY2luY2x1ZGUubTQkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL3J1bi1wdGVzdCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbmV3LWxvY2FsJCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAxLUFkZC1uZXctZmlsZS5wYXRjaCQnKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTYyNykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMyhzZWxmKToKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3QtbG9jYWxvbmx5JworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIE1vZGlmeSBvbmUgZmlsZQorICAgICAgICBydW5DbWQoJ2VjaG8gIkFub3RoZXIgbGluZSIgPj4gZmlsZTInLCBjd2Q9b3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUsICdvZS1sb2NhbC1maWxlcycpKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcy9maWxlMiQnICUgdGVzdHJlY2lwZSldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE2MjkpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX3BhdGNoX2d6KHNlbGYpOgorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQorICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1wYXRjaC1neicKKyAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUaGUgRElTVFJPICdwb2t5LXRpbnknIGRvZXMgbm90IHByb3ZpZGUgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgJXMiICUgdGVzdHJlY2lwZSkKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBNb2RpZnkgb25lIGZpbGUKKyAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlKQorICAgICAgICBydW5DbWQoJ2VjaG8gIkFub3RoZXIgbGluZSIgPj4gUkVBRE1FJywgY3dkPXNyY3RyZWUpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtLWFtZW5kIC0tbm8tZWRpdCcsIGN3ZD1zcmN0cmVlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcy9yZWFkbWUucGF0Y2guZ3okJyAlIHRlc3RyZWNpcGUpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKyAgICAgICAgcGF0Y2hfZ3ogPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCAncmVhZG1lLnBhdGNoLmd6JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdmaWxlICVzJyAlIHBhdGNoX2d6KQorICAgICAgICBpZiAnZ3ppcCBjb21wcmVzc2VkIGRhdGEnIG5vdCBpbiByZXN1bHQub3V0cHV0OgorICAgICAgICAgICAgc2VsZi5mYWlsKCdOZXcgcGF0Y2ggZmlsZSBpcyBub3QgZ3ppcHBlZCAtIGZpbGUgcmVwb3J0czpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTYyOCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfc3ViZGlyKHNlbGYpOgorICAgICAgICAjIFRyeSBkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgb24gYSByZWNpcGUgdGhhdCBoYXMgYSBmaWxlIHdpdGggc3ViZGlyPSBzZXQgaW4KKyAgICAgICAgIyBTUkNfVVJJIHN1Y2ggdGhhdCBpdCBvdmVyd3JpdGVzIGEgZmlsZSB0aGF0IHdhcyBpbiBhbiBhcmNoaXZlIHRoYXQKKyAgICAgICAgIyB3YXMgYWxzbyBpbiBTUkNfVVJJCisgICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCisgICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LXN1YmRpcicKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSwgJ3Rlc3RmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHModGVzdGZpbGUsICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHdpdGggb3Blbih0ZXN0ZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKS5yc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRzLCAnTW9kaWZpZWQgdmVyc2lvbicsICdGaWxlIGhhcyBhcHBhcmVudGx5IG5vdCBiZWVuIG92ZXJ3cml0dGVuIGFzIGl0IHNob3VsZCBoYXZlIGJlZW4nKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCB1cGRhdGUtcmVjaXBlIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMTYzKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZXh0cmFjdChzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICAjIFRyeSBkZXZ0b29sIGV4dHJhY3QKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCBtYXRjaGJveC10ZXJtaW5hbCAlcycgJSB0ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisKKyAgICBAT0VUZXN0SUQoMTM3OSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2V4dHJhY3RfdmlydHVhbChzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICAjIFRyeSBkZXZ0b29sIGV4dHJhY3QKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCB2aXJ0dWFsL21ha2UgJXMnICUgdGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorCisgICAgQE9FVGVzdElEKDExNjgpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9yZXNldF9hbGwoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICB0ZXN0cmVjaXBlMSA9ICdtZGFkbScKKyAgICAgICAgdGVzdHJlY2lwZTIgPSAnY3JvbmllJworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IC14ICVzICVzJyAlICh0ZXN0cmVjaXBlMSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUxKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgLXggJXMgJXMnICUgKHRlc3RyZWNpcGUyLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZTIpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUxKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZTIpCisgICAgICAgIHN0YW1wcHJlZml4MSA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGVzdHJlY2lwZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeDEsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgJXMnICUgdGVzdHJlY2lwZTEpCisgICAgICAgIHN0YW1wcHJlZml4MiA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGVzdHJlY2lwZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeDIsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgJXMnICUgdGVzdHJlY2lwZTIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtYScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZTEsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZTIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlc3RyZWNpcGUxLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlc3RyZWNpcGUyLCByZXN1bHQub3V0cHV0KQorICAgICAgICBtYXRjaGVzMSA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeDEgKyAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlczEsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlICVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJyAlIHRlc3RyZWNpcGUxKQorICAgICAgICBtYXRjaGVzMiA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeDIgKyAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlczIsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlICVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJyAlIHRlc3RyZWNpcGUyKQorCisgICAgQE9FVGVzdElEKDEyNzIpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9kZXBsb3lfdGFyZ2V0KHNlbGYpOgorICAgICAgICAjIE5PVEU6IFdoaWxzdCB0aGlzIHRlc3Qgd291bGQgc2VlbWluZ2x5IGJlIGJldHRlciBwbGFjZWQgYXMgYSBydW50aW1lIHRlc3QsCisgICAgICAgICMgdW5mb3J0dW5hdGVseSB0aGUgcnVudGltZSB0ZXN0cyBydW4gdW5kZXIgYml0YmFrZSBhbmQgeW91IGNhbid0IHJ1bgorICAgICAgICAjIGRldnRvb2wgd2l0aGluIGJpdGJha2UgKHNpbmNlIGRldnRvb2wgbmVlZHMgdG8gcnVuIGJpdGJha2UgaXRzZWxmKS4KKyAgICAgICAgIyBBZGRpdGlvbmFsbHkgd2UgYXJlIHRlc3RpbmcgYnVpbGQtdGltZSBmdW5jdGlvbmFsaXR5IGFzIHdlbGwsIHNvCisgICAgICAgICMgcmVhbGx5IHRoaXMgaGFzIHRvIGJlIGRvbmUgYXMgYW4gb2Utc2VsZnRlc3QgdGVzdC4KKyAgICAgICAgIworICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQorICAgICAgICBpZiBub3QgbWFjaGluZS5zdGFydHN3aXRoKCdxZW11Jyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGlzIHRlc3Qgb25seSB3b3JrcyB3aXRoIHFlbXUgbWFjaGluZXMnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9ldGMvcnVucWVtdS1ub3N1ZG8nKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1lvdSBtdXN0IHNldCB1cCB0YXAgZGV2aWNlcyB3aXRoIHNjcmlwdHMvcnVucWVtdS1nZW4tdGFwZGV2cyBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ1BBVEg9IiRQQVRIOi9zYmluOi91c3Ivc2JpbiIgaXAgdHVudGFwIHNob3cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIGlmIHJlc3VsdC5zdGF0dXMgIT0gMDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnUEFUSD0iJFBBVEg6L3NiaW46L3Vzci9zYmluIiBpZmNvbmZpZyAtYScsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXMgIT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdGYWlsZWQgdG8gZGV0ZXJtaW5lIGlmIHRhcCBkZXZpY2VzIGV4aXN0IHdpdGggaWZjb25maWcgb3IgaXA6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd0YXAnKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gdGFwIGRldmljZXMgZm91bmQgLSB5b3UgbXVzdCBzZXQgdXAgdGFwIGRldmljZXMgd2l0aCBzY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnMgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgIyBEZWZpbml0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJworICAgICAgICB0ZXN0ZmlsZSA9ICcvc2Jpbi9tZGFkbScKKyAgICAgICAgdGVzdGltYWdlID0gJ29lLXNlbGZ0ZXN0LWltYWdlJworICAgICAgICB0ZXN0Y29tbWFuZCA9ICcvc2Jpbi9tZGFkbSAtLWhlbHAnCisgICAgICAgICMgQnVpbGQgYW4gaW1hZ2UgdG8gcnVuCisgICAgICAgIGJpdGJha2UoIiVzIHFlbXUtbmF0aXZlIHFlbXUtaGVscGVyLW5hdGl2ZSIgJSB0ZXN0aW1hZ2UpCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0aW1hZ2UpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1mICVzLyVzKicgJSAoZGVwbG95X2Rpcl9pbWFnZSwgdGVzdGltYWdlKSkKKyAgICAgICAgIyBDbGVhbiByZWNpcGUgc28gdGhlIGZpcnN0IGRlcGxveSB3aWxsIGZhaWwKKyAgICAgICAgYml0YmFrZSgiJXMgLWMgY2xlYW4iICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUcnkgZGV2dG9vbCBtb2RpZnkKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgVGVzdCB0aGF0IGRlcGxveS10YXJnZXQgYXQgdGhpcyBwb2ludCBmYWlscyAocHJvcGVybHkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1uICVzIHJvb3RAbG9jYWxob3N0JyAlIHRlc3RyZWNpcGUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQub3V0cHV0LCAwLCAnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IHNob3VsZCBoYXZlIGZhaWxlZCwgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlc3VsdC5vdXRwdXQsICdUcmFjZWJhY2snLCAnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIGEgcHJvcGVyIGVycm9yIG5vdCBhIHRyYWNlYmFjaywgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBGaXJzdCB0cnkgYSBkcnktcnVuIG9mIGRlcGxveS10YXJnZXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLW4gJXMgcm9vdEBsb2NhbGhvc3QnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignICAlcycgJSB0ZXN0ZmlsZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBCb290IHRoZSBpbWFnZQorICAgICAgICB3aXRoIHJ1bnFlbXUodGVzdGltYWdlKSBhcyBxZW11OgorICAgICAgICAgICAgIyBOb3cgcmVhbGx5IHRlc3QgZGVwbG95LXRhcmdldAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLWMgJXMgcm9vdEAlcycgJSAodGVzdHJlY2lwZSwgcWVtdS5pcCkpCisgICAgICAgICAgICAjIFJ1biBhIHRlc3QgY29tbWFuZCB0byBzZWUgaWYgaXQgd2FzIGluc3RhbGxlZCBwcm9wZXJseQorICAgICAgICAgICAgc3NoYXJncyA9ICctbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubycKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc3NoICVzIHJvb3RAJXMgJXMnICUgKHNzaGFyZ3MsIHFlbXUuaXAsIHRlc3Rjb21tYW5kKSkKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgaXQgZGVwbG95ZWQgYWxsIG9mIHRoZSBmaWxlcyB3aXRoIHRoZSByaWdodCBvd25lcnNoaXAvcGVybXMKKyAgICAgICAgICAgICMgRmlyc3QgbG9vayBvbiB0aGUgaG9zdCAtIG5lZWQgdG8gZG8gdGhpcyB1bmRlciBwc2V1ZG8gdG8gZ2V0IHRoZSBjb3JyZWN0IG93bmVyc2hpcC9wZXJtcworICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdGQUtFUk9PVEVOVicsICdGQUtFUk9PVENNRCddLCB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgaW5zdGFsbGRpciA9IGJiX3ZhcnNbJ0QnXQorICAgICAgICAgICAgZmFrZXJvb3RlbnYgPSBiYl92YXJzWydGQUtFUk9PVEVOViddCisgICAgICAgICAgICBmYWtlcm9vdGNtZCA9IGJiX3ZhcnNbJ0ZBS0VST09UQ01EJ10KKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnJXMgJXMgZmluZCAuIC10eXBlIGYgLWV4ZWMgbHMgLWwge30gXDsnICUgKGZha2Vyb290ZW52LCBmYWtlcm9vdGNtZCksIGN3ZD1pbnN0YWxsZGlyKQorICAgICAgICAgICAgZmlsZWxpc3QxID0gc2VsZi5fcHJvY2Vzc19sc19vdXRwdXQocmVzdWx0Lm91dHB1dCkKKworICAgICAgICAgICAgIyBOb3cgbG9vayBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICB0ZW1wZGlyMiA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyMikKKyAgICAgICAgICAgIHRtcGZpbGVsaXN0ID0gb3MucGF0aC5qb2luKHRlbXBkaXIyLCAnZmlsZXMudHh0JykKKyAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlbGlzdCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVsaXN0MToKKyAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3BsaXRsaW5lWy0xXSArICdcbicpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2NhdCAlcyB8IHNzaCAtcSAlcyByb290QCVzIFwneGFyZ3MgbHMgLWxcJycgJSAodG1wZmlsZWxpc3QsIHNzaGFyZ3MsIHFlbXUuaXApKQorICAgICAgICAgICAgZmlsZWxpc3QyID0gc2VsZi5fcHJvY2Vzc19sc19vdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgIGZpbGVsaXN0MS5zb3J0KGtleT1sYW1iZGEgaXRlbTogaXRlbS5zcGxpdCgpWy0xXSkKKyAgICAgICAgICAgIGZpbGVsaXN0Mi5zb3J0KGtleT1sYW1iZGEgaXRlbTogaXRlbS5zcGxpdCgpWy0xXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZWxpc3QxLCBmaWxlbGlzdDIpCisgICAgICAgICAgICAjIFRlc3QgdW5kZXBsb3ktdGFyZ2V0CisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdW5kZXBsb3ktdGFyZ2V0IC1jICVzIHJvb3RAJXMnICUgKHRlc3RyZWNpcGUsIHFlbXUuaXApKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzc2ggJXMgcm9vdEAlcyAlcycgJSAoc3NoYXJncywgcWVtdS5pcCwgdGVzdGNvbW1hbmQpLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgMCwgJ3VuZGVwbG95LXRhcmdldCBkaWQgbm90IHJlbW92ZSBjb21tYW5kIGFzIGl0IHNob3VsZCBoYXZlJykKKworICAgIEBPRVRlc3RJRCgxMzY2KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRfaW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3QgZGV2dG9vbCBidWlsZC1pbWFnZSBwbHVnaW4iIiIKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSBpbWFnZSkKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUgaW1hZ2UpCisgICAgICAgICMgQWRkIHRhcmdldCBhbmQgbmF0aXZlIHJlY2lwZXMgdG8gd29ya3NwYWNlCisgICAgICAgIHJlY2lwZXMgPSBbJ21kYWRtJywgJ3BhcnRlZC1uYXRpdmUnXQorICAgICAgICBmb3IgcmVjaXBlIGluIHJlY2lwZXM6CisgICAgICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHJlY2lwZSkKKyAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgVHJ5IHRvIGJ1aWxkIGltYWdlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZC1pbWFnZSAlcycgJSBpbWFnZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQsIDAsICdkZXZ0b29sIGJ1aWxkLWltYWdlIGZhaWxlZCcpCisgICAgICAgICMgQ2hlY2sgaWYgaW1hZ2UgY29udGFpbnMgZXhwZWN0ZWQgcGFja2FnZXMKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBpbWFnZV9saW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZSkKKyAgICAgICAgcmVxcGtncyA9IFtpdGVtIGZvciBpdGVtIGluIHJlY2lwZXMgaWYgbm90IGl0ZW0uZW5kc3dpdGgoJy1uYXRpdmUnKV0KKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCBpbWFnZV9saW5rX25hbWUgKyAnLm1hbmlmZXN0JyksICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgc3BsaXR2YWwgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiBzcGxpdHZhbDoKKyAgICAgICAgICAgICAgICAgICAgcGtnID0gc3BsaXR2YWxbMF0KKyAgICAgICAgICAgICAgICAgICAgaWYgcGtnIGluIHJlcXBrZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXFwa2dzLnJlbW92ZShwa2cpCisgICAgICAgIGlmIHJlcXBrZ3M6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1RoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2VyZSBub3QgcHJlc2VudCBpbiB0aGUgaW1hZ2UgYXMgZXhwZWN0ZWQ6ICVzJyAlICcsICcuam9pbihyZXFwa2dzKSkKKworICAgIEBPRVRlc3RJRCgxMzY3KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBncmFkZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgQ2hlY2sgcGFyYW1ldGVycworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAtaCcpCisgICAgICAgIGZvciBwYXJhbSBpbiAncmVjaXBlbmFtZSBzcmN0cmVlIC0tdmVyc2lvbiAtViAtLWJyYW5jaCAtYiAtLWtlZXAtdGVtcCAtLW5vLXBhdGNoJy5zcGxpdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXJhbSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBGb3IgdGhlIG1vbWVudCwgd2UgYXJlIHVzaW5nIGEgcmVhbCByZWNpcGUuCisgICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDEnCisgICAgICAgIHZlcnNpb24gPSAnMS42LjAnCisgICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHVwZ3JhZGUuIENvZGUgZG9lcyBub3QgY2hlY2sgaWYgbmV3IFBWIGlzIG9sZGVyIG9yIG5ld2VyIHRoYXQgY3VycmVudCBQViwgc28sIGl0IG1heSBiZSB0aGF0CisgICAgICAgICMgd2UgYXJlIGRvd25ncmFkaW5nIGluc3RlYWQgb2YgdXBncmFkaW5nLgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtViAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCB2ZXJzaW9uKSkKKyAgICAgICAgIyBDaGVjayBpZiBzcmN0cmVlIGF0IGxlYXN0IGlzIHBvcHVsYXRlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG9zLmxpc3RkaXIodGVtcGRpcikpID4gMCwgJ3NyY3RyZWUgKCVzKSBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggbmV3ICglcykgc291cmNlIGNvZGUnICUgKHRlbXBkaXIsIHZlcnNpb24pKQorICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgc3ViZGlyZWN0b3J5IGlzIHByZXNlbnQKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgJyVzLSVzJyAlIChyZWNpcGUsIHZlcnNpb24pKSwgJ1JlY2lwZSBmb2xkZXIgc2hvdWxkIGV4aXN0JykKKyAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIGZpbGUgaXMgcHJlc2VudAorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIHZlcnNpb24pKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgc2hvdWxkIGV4aXN0IGFmdGVyIHVwZ3JhZGUnKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlIGdvdCBjaGFuZ2VkIGFzIGV4cGVjdGVkCisgICAgICAgIHdpdGggb3BlbihvbGRyZWNpcGVmaWxlICsgJy51cGdyYWRlZCcsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGRlc2lyZWRsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKG5ld3JlY2lwZWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIG5ld2xpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc2lyZWRsaW5lcywgbmV3bGluZXMpCisgICAgICAgICMgQ2hlY2sgZGV2dG9vbCByZXNldCByZWNpcGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzIC1uJyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciByZXNldHRpbmcnKQorCisgICAgQE9FVGVzdElEKDE0MzMpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGdyYWRlX2dpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDInCisgICAgICAgIGNvbW1pdCA9ICc2Y2M2MDc3YTM2ZmUyNjQ4YTVmOTkzZmU3YzE2Yzk2MzJmOTQ2NTE3JworICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayB1cGdyYWRlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1TICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIGNvbW1pdCkpCisgICAgICAgICMgQ2hlY2sgaWYgc3JjdHJlZSBhdCBsZWFzdCBpcyBwb3B1bGF0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihvcy5saXN0ZGlyKHRlbXBkaXIpKSA+IDAsICdzcmN0cmVlICglcykgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIG5ldyAoJXMpIHNvdXJjZSBjb2RlJyAlICh0ZW1wZGlyLCBjb21taXQpKQorICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgZmlsZSBpcyBwcmVzZW50CisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgc2hvdWxkIGV4aXN0IGFmdGVyIHVwZ3JhZGUnKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlIGdvdCBjaGFuZ2VkIGFzIGV4cGVjdGVkCisgICAgICAgIHdpdGggb3BlbihvbGRyZWNpcGVmaWxlICsgJy51cGdyYWRlZCcsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGRlc2lyZWRsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKG5ld3JlY2lwZWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIG5ld2xpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc2lyZWRsaW5lcywgbmV3bGluZXMpCisgICAgICAgICMgQ2hlY2sgZGV2dG9vbCByZXNldCByZWNpcGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzIC1uJyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciByZXNldHRpbmcnKQorCisgICAgQE9FVGVzdElEKDEzNTIpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9sYXllcl9wbHVnaW5zKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgZGV2dG9vbCBjYW4gdXNlIHBsdWdpbnMgZnJvbSBvdGhlciBsYXllcnMuCisKKyAgICAgICAgVGhpcyB0ZXN0IGV4ZWN1dGVzIHRoZSBzZWxmdGVzdC1yZXZlcnNlIGNvbW1hbmQgZnJvbSBtZXRhLXNlbGZ0ZXN0LiIiIgorCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisKKyAgICAgICAgcyA9ICJNaWNyb3NvZnQgTWFkZSBObyBQcm9maXQgRnJvbSBBbnlvbmUncyBadW5lcyBZbyIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgc2VsZnRlc3QtcmV2ZXJzZSBcIiVzXCIiICUgcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBzWzo6LTFdKQorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNlbGYsIHNyY2ZpbGUsIGJhc2Vkc3RkaXIsICpwYXRocyk6CisgICAgICAgIGRzdGRpciA9IGJhc2Vkc3RkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoZHN0ZGlyKQorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihkc3RkaXIsIHApCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCisgICAgICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RkaXIpCisgICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQorICAgICAgICBpZiBzcmNmaWxlICE9IGRzdGZpbGU6CisgICAgICAgICAgICBzaHV0aWwuY29weShzcmNmaWxlLCBkc3RmaWxlKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RmaWxlKQorCisgICAgQE9FVGVzdElEKDE2MjUpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9sb2FkX3BsdWdpbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGRldnRvb2wgbG9hZHMgb25seSB0aGUgZmlyc3QgZm91bmQgcGx1Z2luIGluIEJCUEFUSC4iIiIKKworICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorCisgICAgICAgIGRldnRvb2wgPSBydW5DbWQoIndoaWNoIGRldnRvb2wiKQorICAgICAgICBmcm9tbmFtZSA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IHBsdWdpbmZpbGUiKQorICAgICAgICBzcmNmaWxlID0gZnJvbW5hbWUub3V0cHV0CisgICAgICAgIGJicGF0aCA9IGdldF9iYl92YXIoJ0JCUEFUSCcpCisgICAgICAgIHNlYXJjaHBhdGggPSBiYnBhdGguc3BsaXQoJzonKSArIFtvcy5wYXRoLmRpcm5hbWUoZGV2dG9vbC5vdXRwdXQpXQorICAgICAgICBwbHVnaW5jb250ZW50ID0gW10KKyAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUpIGFzIGZoOgorICAgICAgICAgICAgcGx1Z2luY29udGVudCA9IGZoLnJlYWRsaW5lcygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2VsZnRlc3QnLCBzcmNmaWxlLCAnd3JvbmcgYmJwYXRoIHBsdWdpbiBmb3VuZCcpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc3JjZmlsZSwgcGF0aCwgJ2xpYicsICdkZXZ0b29sJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IGNvdW50IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJzEnKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgbXVsdGlsb2FkZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAibm8iKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBiYmRpciIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBwYXRoKQorICAgICAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4ocmVzdWx0Lm91dHB1dCwgJ2xpYicsICdkZXZ0b29sJywgJ2JicGF0aC5weScpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICd3JykgYXMgZmg6CisgICAgICAgICAgICAgICAgZmgud3JpdGVsaW5lcyhwbHVnaW5jb250ZW50KQorCisgICAgZGVmIF9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIFVzZSBhICJyZWFsIiByZWNpcGUgZnJvbSBtZXRhLXNlbGZ0ZXN0CisgICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDEnCisgICAgICAgIG9sZHZlcnNpb24gPSAnMS41LjMnCisgICAgICAgIG5ld3ZlcnNpb24gPSAnMS42LjAnCisgICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQorICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQorICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHVuY29tbWl0dGVkIGNoYW5nZXMnICUgcmVjaXBlKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIERvIHRoZSB1cGdyYWRlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1WICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIG5ld3ZlcnNpb24pKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgTWFrZSBhIGNoYW5nZSB0byB0aGUgc291cmNlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc2VkIC1pIFwnL14jaW5jbHVkZSAicHYuaCIvYSBcXC8qIEhlcmUgaXMgYSBuZXcgY29tbWVudCAqXFwvXCcgc3JjL3B2L251bWJlci5jJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdNIHNyYy9wdi9udW1iZXIuYycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCBzcmMvcHYvbnVtYmVyLmMgLW0gIkFkZCBhIGNvbW1lbnQgdG8gdGhlIGNvZGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgICMgQ2hlY2sgaWYgcGF0Y2ggaXMgdGhlcmUKKyAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCisgICAgICAgIG9sZGRpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG9sZHZlcnNpb24pCisgICAgICAgIHBhdGNoZm4gPSAnMDAwMS1BZGQtYS1ub3RlLWxpbmUtdG8tdGhlLXF1aWNrLXJlZmVyZW5jZS5wYXRjaCcKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbiksICdPcmlnaW5hbCBwYXRjaCBmaWxlIGRvZXMgbm90IGV4aXN0JykKKyAgICAgICAgcmV0dXJuIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4KKworICAgIEBPRVRlc3RJRCgxNjIzKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGVfb3JpZ2xheWVyKHNlbGYpOgorICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKCkKKyAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEtc2VsZnRlc3QvJywgcmVjaXBlZGlyKQorICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEtc2VsZnRlc3QnICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvbGRyZWNpcGVmaWxlLCAnT2xkIHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pLCAnT2xkIHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsICclc18lcy5iYicgJSAocmVjaXBlLCBuZXd2ZXJzaW9uKSkKKyAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgbmV3dmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ05ldyByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGV4aXN0aW5nIGxheWVyIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgcGF0Y2hmbiksICdQYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gbmV3IGRpcmVjdG9yeSBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsICcwMDAyLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKSwgJ05ldyBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcpCisKKyAgICBAT0VUZXN0SUQoMTYyNCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlX290aGVybGF5ZXIoc2VsZik6CisgICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4gPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS1zZWxmdGVzdC8nLCByZWNpcGVkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byBhIGRpZmZlcmVudCBsYXllciAtIHNob3VsZCBjcmVhdGUgYSBiYmFwcGVuZAorICAgICAgICAjIFRoaXMgY2xlYW51cCBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGRvIGl0IGFueXdheSBqdXN0IGluIGNhc2UgaXQgZ29lcyB3cm9uZyBhbmQgd3JpdGVzIHRvIGhlcmUKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIG9lX2NvcmVfZGlyID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhJykKKyAgICAgICAgbmV3cmVjaXBlZGlyID0gb3MucGF0aC5qb2luKG9lX2NvcmVfZGlyLCAncmVjaXBlcy10ZXN0JywgJ2RldnRvb2wnKQorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKG5ld3JlY2lwZWRpciwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIG5ld3ZlcnNpb24pKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG5ld3JlY2lwZWRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBvZS1jb3JlJyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob2xkcmVjaXBlZmlsZSwgJ09sZCByZWNpcGUgZmlsZSBzaG91bGQgbm90IGhhdmUgYmVlbiBkZWxldGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbiksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgbm90IGhhdmUgYmVlbiBkZWxldGVkJykKKyAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKG5ld3JlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgbmV3dmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ05ldyByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGV4aXN0aW5nIGxheWVyIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgcGF0Y2hmbiksICdQYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gbmV3IGRpcmVjdG9yeSBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsICcwMDAyLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKSwgJ05ldyBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcpCisKKyAgICBkZWYgX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSByZWNpcGUpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzICVzJyAlIChyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRvIHRoZSBzb3VyY2UKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzZWQgLWkgXCcvXiNpbmNsdWRlICJtZGFkbS5oIi9hIFxcLyogSGVyZSBpcyBhIG5ldyBjb21tZW50ICpcXC9cJyBtYXBzLmMnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ00gbWFwcy5jJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IG1hcHMuYyAtbSAiQWRkIGEgY29tbWVudCB0byB0aGUgY29kZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIocmVjaXBlZGlyKToKKyAgICAgICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgZW50cnkpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZpbGVzZGlyKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgZmlsZXMgZGlyZWN0b3J5IGZvciAlcycgJSByZWNpcGUpCisgICAgICAgIHJldHVybiByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIKKworICAgIEBPRVRlc3RJRCgxNjIxKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeV9vcmlnbGF5ZXIoc2VsZik6CisgICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpciA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KCkKKyAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEvJywgcmVjaXBlZGlyKQorICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEnICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLy4qLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gkJyldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKHJlY2lwZWRpciwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE2MjIpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5X290aGVybGF5ZXIoc2VsZik6CisgICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpciA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KCkKKyAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEvJywgcmVjaXBlZGlyKQorICAgICAgICByZWxwdGggPSBvcy5wYXRoLnJlbHBhdGgocmVjaXBlZGlyLCBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEnKSkKKyAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKGdldF90ZXN0X2xheWVyKCksIHJlbHB0aCkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChhcHBlbmRkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YS1zZWxmdGVzdCcgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKKyAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB0aGUgZm9sbG93aW5nIHVuZXhwZWN0ZWQgY2hhbmdlcyBhZnRlciBmaW5pc2g6XG4lcycgJSAocmVjaXBlLCByZXN1bHQub3V0cHV0LnN0cmlwKCkpKQorICAgICAgICByZWNpcGVmbiA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSlbMF0KKyAgICAgICAgcmVjaXBlZm4gPSByZWNpcGVmbi5zcGxpdCgnXycpWzBdICsgJ18lJworICAgICAgICBhcHBlbmRmaWxlID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgcmVjaXBlZm4gKyAnLmJiYXBwZW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoYXBwZW5kZmlsZSwgJ2JiYXBwZW5kICVzIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcgJSBhcHBlbmRmaWxlKQorICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCByZWNpcGUpCisgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihuZXdkaXIpCisgICAgICAgIGZvdW5kcGF0Y2ggPSBOb25lCisgICAgICAgIGZvciBmbiBpbiBmaWxlczoKKyAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChmbiwgJyotQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpOgorICAgICAgICAgICAgICAgIGZvdW5kcGF0Y2ggPSBmbgorICAgICAgICBpZiBub3QgZm91bmRwYXRjaDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gcGF0Y2ggZmlsZSBjcmVhdGVkIG5leHQgdG8gYmJhcHBlbmQnKQorICAgICAgICBmaWxlcy5yZW1vdmUoZm91bmRwYXRjaCkKKyAgICAgICAgaWYgZmlsZXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZmlsZShzKSBjb3BpZWQgbmV4dCB0byBiYmFwcGVuZDogJXMnICUgJywgJy5qb2luKGZpbGVzKSkKKworICAgIEBPRVRlc3RJRCgxNjI2KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfcmVuYW1lKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKworICAgICAgICAjIEZpcnN0IHJ1biBkZXZ0b29sIGFkZAorICAgICAgICAjIFdlIGFscmVhZHkgaGF2ZSB0aGlzIHJlY2lwZSBpbiBPRS1Db3JlLCBidXQgdGhhdCBkb2Vzbid0IG1hdHRlcgorICAgICAgICByZWNpcGVuYW1lID0gJ2kyYy10b29scycKKyAgICAgICAgcmVjaXBldmVyID0gJzMuMS4yJworICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUsICclc18lcy5iYicgJSAocmVjaXBlbmFtZSwgcmVjaXBldmVyKSkKKyAgICAgICAgdXJsID0gJ2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9pMmMtdG9vbHMtJXMudGFyLmJ6MicgJSByZWNpcGV2ZXIKKyAgICAgICAgZGVmIGFkZF9yZWNpcGUoKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgdXJsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMocmVjaXBlZmlsZSwgJ0V4cGVjdGVkIHJlY2lwZSBmaWxlIG5vdCBjcmVhdGVkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCByZWNpcGVuYW1lKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQorICAgICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZShyZWNpcGV2ZXIsICcke1BWfScpCisgICAgICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorICAgICAgICBhZGRfcmVjaXBlKCkKKyAgICAgICAgIyBOb3cgcmVuYW1lIGl0IC0gY2hhbmdlIGJvdGggbmFtZSBhbmQgdmVyc2lvbgorICAgICAgICBuZXdyZWNpcGVuYW1lID0gJ215bmV3cmVjaXBlJworICAgICAgICBuZXdyZWNpcGV2ZXIgPSAnNDU2JworICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIG5ld3JlY2lwZW5hbWUsICclc18lcy5iYicgJSAobmV3cmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAlcyAtViAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUpLCAnT2xkIHJlY2lwZSBkaXJlY3Rvcnkgc3RpbGwgZXhpc3RzJykKKyAgICAgICAgbmV3c3JjdHJlZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCBuZXdyZWNpcGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdzcmN0cmVlLCAnU291cmNlIGRpcmVjdG9yeSBub3QgcmVuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJXMtJXMnICUgKHJlY2lwZW5hbWUsIHJlY2lwZXZlcikKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKyAgICAgICAgIyBUcnkgYWdhaW4gLSBjaGFuZ2UganVzdCBuYW1lIHRoaXMgdGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgbmV3cmVjaXBlbmFtZSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShuZXdzcmN0cmVlKQorICAgICAgICBhZGRfcmVjaXBlKCkKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBuZXdyZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKG5ld3JlY2lwZW5hbWUsIHJlY2lwZXZlcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZW5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSksICdPbGQgcmVjaXBlIGRpcmVjdG9yeSBzdGlsbCBleGlzdHMnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgbmV3cmVjaXBlbmFtZSksICdTb3VyY2UgZGlyZWN0b3J5IG5vdCByZW5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8lcy0ke1BWfScgJSByZWNpcGVuYW1lCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UocmVjaXBldmVyLCAnJHtQVn0nKQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorICAgICAgICAjIFRyeSBhZ2FpbiAtIGNoYW5nZSBqdXN0IHZlcnNpb24gdGhpcyB0aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSBuZXdyZWNpcGVuYW1lKQorICAgICAgICBzaHV0aWwucm10cmVlKG5ld3NyY3RyZWUpCisgICAgICAgIGFkZF9yZWNpcGUoKQorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUsICclc18lcy5iYicgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAtViAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHJlY2lwZW5hbWUpLCAnU291cmNlIGRpcmVjdG9yeSBubyBsb25nZXIgZXhpc3RzJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8ke0JQTn0tJXMnICUgcmVjaXBldmVyCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTU3NykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3ZpcnR1YWxfa2VybmVsX21vZGlmeShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbCBtb2RpZnkgd29ya3MgY29ycmVjdGx5IHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwuCisgICAgICAgIERlcGVuZGVuY2llczogICBOQQorICAgICAgICBTdGVwczogICAgICAgICAgMS4gQnVpbGQga2VybmVsIHdpdGggYml0YmFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDIuIFNhdmUgdGhlIGNvbmZpZyBmaWxlIGdlbmVyYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDMuIENsZWFuIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDQuIFVzZSBgZGV2dG9vbCBtb2RpZnkgdmlydHVhbC9rZXJuZWxgIHRvIHZhbGlkYXRlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMSBUaGUgc291cmNlIGlzIGNoZWNrZWQgb3V0IGNvcnJlY3RseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMiBUaGUgcmVzdWx0aW5nIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHdhcyBnZXQgb24gc3RlcCAyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zIFRoZSBLZXJuZWwgY2FuIGJlIGJ1aWxkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNCBDaGFuZ2VzIG1hZGUgb24gdGhlIHNvdXJjZSBhcmUgcmVmbGVjdGVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41IENoYW5nZXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHJlZmxlY3RlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGJ1aWxkcworICAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIGRldnRvb2wgbW9kaWZ5IGlzIGFibGUgdG8gY2hlY2tvdXQgdGhlIHNvdXJjZSBvZiB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmaWNhdGlvbiB0byB0aGUgc291cmNlIGFuZCBjb25maWd1cmF0aW9ucyBhcmUgcmVmbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUga2VybmVsLgorICAgICAgICAgIiIiCisgICAgICAgIGtlcm5lbF9wcm92aWRlciA9IGdldF9iYl92YXIoJ1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCcpCisgICAgICAgICMgQ2xlYW4gdXAgdGhlIGVudmlyb21lbnQKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHRlbXBkaXJfY2ZnID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2NvbmZpZ19xYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyX2NmZykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgICNTdGVwIDEKKyAgICAgICAgI0hlcmUgaXMganVzdCBnZW5lcmF0ZWQgdGhlIGNvbmZpZyBmaWxlIGluc3RlYWQgb2YgYWxsIHRoZSBrZXJuZWwgdG8gb3B0aW1pemUgdGhlCisgICAgICAgICN0aW1lIG9mIGV4ZWN1dGluZyB0aGlzIHRlc3QgY2FzZS4KKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY29uZmlndXJlJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgYmJjb25maWcgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQicsIGtlcm5lbF9wcm92aWRlciksJy5jb25maWcnKQorICAgICAgICAjU3RlcCAyCisgICAgICAgIHJ1bkNtZCgnY3AgJXMgJXMnICUgKGJiY29uZmlnLCB0ZW1wZGlyX2NmZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyX2NmZywgJy5jb25maWcnKSwgJ0NvdWxkIG5vdCBjb3B5IC5jb25maWcgZmlsZSBmcm9tIGtlcm5lbCcpCisKKyAgICAgICAgdG1wY29uZmlnID0gb3MucGF0aC5qb2luKHRlbXBkaXJfY2ZnLCAnLmNvbmZpZycpCisgICAgICAgICNTdGVwIDMKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICAjU3RlcCA0LjEKKyAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSB2aXJ0dWFsL2tlcm5lbCAteCAlcycgJSB0ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgICNTdGVwIDQuMgorICAgICAgICBjb25maWdmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJy5jb25maWcnKQorICAgICAgICBkaWZmID0gcnVuQ21kKCdkaWZmICVzICVzJyAlICh0bXBjb25maWcsIGNvbmZpZ2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsZGlmZi5zdGF0dXMsJ0tlcm5lbCAuY29uZmlnIGZpbGUgaXMgbm90IHRoZSBzYW1lIHVzaW5nIGJpdGJha2UgYW5kIGRldnRvb2wnKQorICAgICAgICAjU3RlcCA0LjMKKyAgICAgICAgI05PVEU6IHZpcnR1YWwva2VybmVsIGlzIG1hcHBlZCB0byBrZXJuZWxfcHJvdmlkZXIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLHJlc3VsdC5zdGF0dXMsJ0Nhbm5vdCBidWlsZCBrZXJuZWwgdXNpbmcgYGRldnRvb2wgYnVpbGRgJykKKyAgICAgICAga2VybmVsZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdLQlVJTERfT1VUUFVUJywga2VybmVsX3Byb3ZpZGVyKSwgJ3ZtbGludXgnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhrZXJuZWxmaWxlLCAnS2VybmVsIHdhcyBub3QgYnVpbGQgY29ycmVjdGx5JykKKworICAgICAgICAjTW9kaWZ5IHRoZSBrZXJuZWwgc291cmNlCisgICAgICAgIG1vZGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnYXJjaC94ODYvYm9vdC9oZWFkZXIuUycpCisgICAgICAgIG1vZHN0cmluZyA9ICJVc2UgYSBib290IGxvYWRlci4gRGV2dG9vbCB0ZXN0aW5nLiIKKyAgICAgICAgbW9kYXBwbGllZCA9IHJ1bkNtZCgic2VkIC1pICdzL1VzZSBhIGJvb3QgbG9hZGVyLi8lcy8nICVzIiAlIChtb2RzdHJpbmcsIG1vZGZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsbW9kYXBwbGllZC5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byAlcyBvbiBrZXJuZWwgc291cmNlIGZhaWxlZCcgJSBtb2RmaWxlKQorICAgICAgICAjTW9kaWZ5IHRoZSBjb25maWd1cmF0aW9uCisgICAgICAgIGNvZGVjb25maWdmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJy5jb25maWcubmV3JykKKyAgICAgICAgbW9kY29uZm9wdCA9ICJDT05GSUdfU0dfUE9PTD1uIgorICAgICAgICBtb2Rjb25mID0gcnVuQ21kKCJzZWQgLWkgJ3MvQ09ORklHX1NHX1BPT0w9eS8lcy8nICVzIiAlIChtb2Rjb25mb3B0LCBjb2RlY29uZmlnZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxtb2Rjb25mLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvICVzIGZhaWxlZCcgJSBjb2RlY29uZmlnZmlsZSkKKyAgICAgICAgI0J1aWxkIGFnYWluIGtlcm5lbCB3aXRoIGRldnRvb2wKKyAgICAgICAgcmVidWlsZCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxyZWJ1aWxkLnN0YXR1cywnRmFpbCB0byBidWlsZCBrZXJuZWwgYWZ0ZXIgbW9kaWZpY2F0aW9uIG9mIHNvdXJjZSBhbmQgY29uZmlnJykKKyAgICAgICAgI1N0ZXAgNC40CisgICAgICAgIGJ6aW1hZ2VuYW1lID0gJ2J6SW1hZ2UtJyArIGdldF9iYl92YXIoJ0tFUk5FTF9WRVJTSU9OX05BTUUnLCBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgIGJ6aW1hZ2VmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0QnLCBrZXJuZWxfcHJvdmlkZXIpLCdib290JywgYnppbWFnZW5hbWUpCisgICAgICAgIGNoZWNrbW9kY29kZSA9IHJ1bkNtZCgiZ3JlcCAnJXMnICVzIiAlIChtb2RzdHJpbmcsIGJ6aW1hZ2VmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGNoZWNrbW9kY29kZS5zdGF0dXMsJ01vZGlmaWNhdGlvbiBvbiBrZXJuZWwgc291cmNlIGZhaWxlZCcpCisgICAgICAgICNTdGVwIDQuNQorICAgICAgICBjaGVja21vZGNvbmZnID0gcnVuQ21kKCJncmVwICVzICVzIiAlIChtb2Rjb25mb3B0LCBjb2RlY29uZmlnZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxjaGVja21vZGNvbmZnLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvIGNvbmZpZ3VyYXRpb24gZmlsZSBmYWlsZWQnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1NDBhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKQEAgLTAsMCArMSw0MiBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCitmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKK2Zyb20gb2VxYS51dGlscy5mdG9vbHMgaW1wb3J0IHdyaXRlX2ZpbGUKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBEaXN0cm9kYXRhKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihEaXN0cm9kYXRhLCBjbHMpLnNldFVwQ2xhc3MoKQorCisgICAgQE9FVGVzdElEKDE5MDIpCisgICAgZGVmIHRlc3RfY2hlY2twa2coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2tzIGRvIG5vdCByZWdyZXNzCisgICAgICAgIEV4cGVjdGVkOiAgICBVcHN0cmVhbSB2ZXJzaW9uIGNoZWNrcyBzaG91bGQgc3VjY2VlZCBleGNlcHQgZm9yIHRoZSByZWNpcGVzIGxpc3RlZCBpbiB0aGUgZXhjZXB0aW9uIGxpc3QuCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgZmVhdHVyZSA9ICdJTkhFUklUICs9ICJkaXN0cm9kYXRhIlxuJworICAgICAgICBmZWF0dXJlICs9ICdMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCArPSAiIGNvbW1lcmNpYWwiXG4nCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKKyAgICAgICAgYml0YmFrZSgnLWMgY2hlY2twa2cgd29ybGQnKQorICAgICAgICBjaGVja3BrZ19yZXN1bHQgPSBvcGVuKG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJMT0dfRElSIiksICJjaGVja3BrZy5jc3YiKSkucmVhZGxpbmVzKClbMTpdCisgICAgICAgIHJlZ3Jlc3NlZF9mYWlsdXJlcyA9IFtwa2dfZGF0YVswXSBmb3IgcGtnX2RhdGEgaW4gW3BrZ19saW5lLnNwbGl0KCdcdCcpIGZvciBwa2dfbGluZSBpbiBjaGVja3BrZ19yZXN1bHRdIGlmIHBrZ19kYXRhWzExXSA9PSAnVU5LTk9XTl9CUk9LRU4nXQorICAgICAgICByZWdyZXNzZWRfc3VjY2Vzc2VzID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gaWYgcGtnX2RhdGFbMTFdID09ICdLTk9XTl9CUk9LRU4nXQorICAgICAgICBtc2cgPSAiIgorICAgICAgICBpZiBsZW4ocmVncmVzc2VkX2ZhaWx1cmVzKSA+IDA6CisgICAgICAgICAgICBtc2cgPSBtc2cgKyAiIiIKK1RoZSBmb2xsb3dpbmcgcGFja2FnZXMgZmFpbGVkIHVwc3RyZWFtIHZlcnNpb24gY2hlY2tzLiBQbGVhc2UgZml4IHRoZW0gdXNpbmcgVVBTVFJFQU1fQ0hFQ0tfVVJJL1VQU1RSRUFNX0NIRUNLX1JFR0VYCisod2hlbiB1c2luZyB0YXJiYWxscykgb3IgVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggKHdoZW4gdXNpbmcgZ2l0KS4gSWYgYW4gdXBzdHJlYW0gdmVyc2lvbiBjaGVjayBjYW5ub3QgYmUgcGVyZm9ybWVkCisoZm9yIGV4YW1wbGUsIGlmIHVwc3RyZWFtIGRvZXMgbm90IHVzZSBnaXQgdGFncyksIHlvdSBjYW4gc2V0IFVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiB0byAnMScgaW4gdGhlIHJlY2lwZSB0byBhY2tub3dsZWRnZQordGhhdCB0aGUgY2hlY2sgY2Fubm90IGJlIHBlcmZvcm1lZC4KKyIiIiArICJcbiIuam9pbihyZWdyZXNzZWRfZmFpbHVyZXMpCisgICAgICAgIGlmIGxlbihyZWdyZXNzZWRfc3VjY2Vzc2VzKSA+IDA6CisgICAgICAgICAgICBtc2cgPSBtc2cgKyAiIiIKK1RoZSBmb2xsb3dpbmcgcGFja2FnZXMgaGF2ZSBiZWVuIGNoZWNrZWQgc3VjY2Vzc2Z1bGx5IGZvciB1cHN0cmVhbSB2ZXJzaW9ucywKK2J1dCB0aGVpciByZWNpcGVzIGNsYWltIG90aGVyd2lzZSBieSBzZXR0aW5nIFVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTi4gUGxlYXNlIHJlbW92ZSB0aGF0IGxpbmUgZnJvbSB0aGUgcmVjaXBlcy4KKyIiIiArICJcbiIuam9pbihyZWdyZXNzZWRfc3VjY2Vzc2VzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHJlZ3Jlc3NlZF9mYWlsdXJlcykgPT0gMCBhbmQgbGVuKHJlZ3Jlc3NlZF9zdWNjZXNzZXMpID09IDAsIG1zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2VTREsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lU0RLLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzE4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lU0RLLnB5CkBAIC0wLDAgKzEsMTExIEBACitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBvcworaW1wb3J0IGdsb2IKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCisKK2NsYXNzIG9lU0RLRXh0U2VsZlRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICAjIEJ1Z3ppbGxhIFRlc3QgUGxhbjogNjAzMworICAgICMgVGhpcyBjb2RlIGlzIHBsYW5uZWQgdG8gYmUgcGFydCBvZiB0aGUgYXV0b21hdGlvbiBmb3IgZVNESyBjb250YWluaWcKKyAgICAjIEluc3RhbGwgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBpbWFnZSBnZW5lcmF0aW9uIGJpbmFyeSBmZWVkcywgc2RrLXVwZGF0ZS4KKyAgICAiIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2VzZGtfZW52aXJvbm1lbnQoZW52X2VTREssIHRtcGRpcl9lU0RLUUEpOgorICAgICAgICAjIFhYWDogYXQgdGhpcyB0aW1lIHVzZSB0aGUgZmlyc3QgZW52IG5lZWQgdG8gaW52ZXN0aWdhdGUKKyAgICAgICAgIyB3aGF0IGVudmlyb25tZW50IGxvYWQgb2Utc2VsZnRlc3QsIGk1ODYsIHg4Nl82NAorICAgICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdlbnZpcm9ubWVudC1zZXR1cC0qJykKKyAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXR0ZXJuKVswXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBydW5fZXNka19jbWQoZW52X2VTREssIHRtcGRpcl9lU0RLUUEsIGNtZCwgcG9zdGNvbmZpZz1Ob25lLCAqKm9wdGlvbnMpOgorICAgICAgICBpZiBwb3N0Y29uZmlnOgorICAgICAgICAgICAgZXNka19jb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpCisgICAgICAgICAgICB3aXRoIG9wZW4oZXNka19jb25mX2ZpbGUsICdhKycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwb3N0Y29uZmlnKQorICAgICAgICBpZiBub3Qgb3B0aW9uczoKKyAgICAgICAgICAgIG9wdGlvbnMgPSB7fQorICAgICAgICBpZiBub3QgJ3NoZWxsJyBpbiBvcHRpb25zOgorICAgICAgICAgICAgb3B0aW9uc1snc2hlbGwnXSA9IFRydWUKKworICAgICAgICBydW5DbWQoImNkICVzOyAuICVzOyAlcyIgJSAodG1wZGlyX2VTREtRQSwgZW52X2VTREssIGNtZCksICoqb3B0aW9ucykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2VuZXJhdGVfZVNESyhpbWFnZSk6CisgICAgICAgIHBuX3Rhc2sgPSAnJXMgLWMgcG9wdWxhdGVfc2RrX2V4dCcgJSBpbWFnZQorICAgICAgICBiaXRiYWtlKHBuX3Rhc2spCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9lU0RLX3Rvb2xjaGFpbihpbWFnZSk6CisgICAgICAgIHBuX3Rhc2sgPSAnJXMgLWMgcG9wdWxhdGVfc2RrX2V4dCcgJSBpbWFnZQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NES19ERVBMT1knLCAnVE9PTENIQUlORVhUX09VVFBVVE5BTUUnXSwgcG5fdGFzaykKKyAgICAgICAgc2RrX2RlcGxveSA9IGJiX3ZhcnNbJ1NES19ERVBMT1knXQorICAgICAgICB0b29sY2hhaW5fbmFtZSA9IGJiX3ZhcnNbJ1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FJ10KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZGtfZGVwbG95LCB0b29sY2hhaW5fbmFtZSArICcuc2gnKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB1cGRhdGVfY29uZmlndXJhdGlvbihjbHMsIGltYWdlLCB0bXBkaXJfZVNES1FBLCBlbnZfZVNESywgZXh0X3Nka19wYXRoKToKKyAgICAgICAgc3N0YXRlX2RpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydCVUlMRERJUiddLCAnc3N0YXRlLWNhY2hlJykKKworICAgICAgICBvZVNES0V4dFNlbGZUZXN0LmdlbmVyYXRlX2VTREsoY2xzLmltYWdlKQorCisgICAgICAgIGNscy5leHRfc2RrX3BhdGggPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lU0RLX3Rvb2xjaGFpbihjbHMuaW1hZ2UpCisgICAgICAgIHJ1bkNtZCgiJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuZXh0X3Nka19wYXRoLCBjbHMudG1wZGlyX2VTREtRQSkpCisKKyAgICAgICAgY2xzLmVudl9lU0RLID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZXNka19lbnZpcm9ubWVudCgnJywgY2xzLnRtcGRpcl9lU0RLUUEpCisKKyAgICAgICAgc3N0YXRlX2NvbmZpZz0iIiIKK1NES19MT0NBTF9DT05GX1dISVRFTElTVCA9ICJTU1RBVEVfTUlSUk9SUyIKK1NTVEFURV9NSVJST1JTID0gICJmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiCitDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicGVybCIKKyAgICAgICAgIiIiICUgc3N0YXRlX2RpcgorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKSwgJ2ErJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc3N0YXRlX2NvbmZpZykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKG9lU0RLRXh0U2VsZlRlc3QsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGNscy50bXBkaXJfZVNES1FBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2VTREtRQScpCisKKyAgICAgICAgc3N0YXRlX2RpciA9IGdldF9iYl92YXIoJ1NTVEFURV9ESVInKQorCisgICAgICAgIGNscy5pbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIG9lU0RLRXh0U2VsZlRlc3QuZ2VuZXJhdGVfZVNESyhjbHMuaW1hZ2UpCisKKyAgICAgICAgIyBJbnN0YWxsIGVTREsKKyAgICAgICAgY2xzLmV4dF9zZGtfcGF0aCA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VTREtfdG9vbGNoYWluKGNscy5pbWFnZSkKKyAgICAgICAgcnVuQ21kKCIlcyAteSAtZCBcIiVzXCIiICUgKGNscy5leHRfc2RrX3BhdGgsIGNscy50bXBkaXJfZVNES1FBKSkKKworICAgICAgICBjbHMuZW52X2VTREsgPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lc2RrX2Vudmlyb25tZW50KCcnLCBjbHMudG1wZGlyX2VTREtRQSkKKworICAgICAgICAjIENvbmZpZ3VyZSBlU0RLIHRvIHVzZSBzc3RhdGUgbWlycm9yIGZyb20gcG9reQorICAgICAgICBzc3RhdGVfY29uZmlnPSIiIgorU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUID0gIlNTVEFURV9NSVJST1JTIgorU1NUQVRFX01JUlJPUlMgPSAgImZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCIKKyAgICAgICAgICAgICIiIiAlIHNzdGF0ZV9kaXIKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjbHMudG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzc3RhdGVfY29uZmlnKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShjbHMudG1wZGlyX2VTREtRQSwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICBzdXBlcihvZVNES0V4dFNlbGZUZXN0LCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgQE9FVGVzdElEKDE2MDIpCisgICAgZGVmIHRlc3RfaW5zdGFsbF9saWJyYXJpZXNfaGVhZGVycyhzZWxmKToKKyAgICAgICAgcG5fc3N0YXRlID0gJ2JjJworICAgICAgICBiaXRiYWtlKHBuX3NzdGF0ZSkKKyAgICAgICAgY21kID0gImRldnRvb2wgc2RrLWluc3RhbGwgJXMgIiAlIHBuX3NzdGF0ZQorICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKKworICAgIEBPRVRlc3RJRCgxNjAzKQorICAgIGRlZiB0ZXN0X2ltYWdlX2dlbmVyYXRpb25fYmluYXJ5X2ZlZWRzKHNlbGYpOgorICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGNtZCA9ICJkZXZ0b29sIGJ1aWxkLWltYWdlICVzIiAlIGltYWdlCisgICAgICAgIG9lU0RLRXh0U2VsZlRlc3QucnVuX2VzZGtfY21kKHNlbGYuZW52X2VTREssIHNlbGYudG1wZGlyX2VTREtRQSwgY21kKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZV90eXBlZGVwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjc4ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weQpAQCAtMCwwICsxLDUzIEBACitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgSW1hZ2VUeXBlRGVwVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgICMgVmVyaWZ5IHRoYXQgd2hlbiBzcGVjaWZ5aW5nIGEgSU1BR0VfVFlQRURFUF8gb2YgdGhlIGZvcm0gImZvby5iYXIiIHRoYXQKKyAgICAjIHRoZSBjb252ZXJzaW9uIHR5cGUgYmFyIGdldHMgYWRkZWQgYXMgYSBkZXAgYXMgd2VsbAorICAgIEBPRVRlc3RJRCgxNjMzKQorICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fdHlwZWRlcF9hZGRlZChzZWxmKToKKworICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgIiIiCisjIFRyeSB0byBlbXB0eSBvdXQgdGhlIGRlZmF1bHQgZGVwZW5kZW5jeSBsaXN0CitQQUNLQUdFX0lOU1RBTEwgPSAiIgorRElTVFJPX0VYVFJBX1JERVBFTkRTPSIiCisKK0xJQ0VOU0UgPSAiTUlUIgorSU1BR0VfRlNUWVBFUyA9ICJ0ZXN0ZnN0eXBlIgorCitJTUFHRV9UWVBFU19NQVNLRUQgKz0gInRlc3Rmc3R5cGUiCitJTUFHRV9UWVBFREVQX3Rlc3Rmc3R5cGUgPSAidGFyLmJ6MiIKKworaW5oZXJpdCBpbWFnZQorCisiIiIpCisgICAgICAgICMgRmlyc3QgZ2V0IHRoZSBkZXBlbmRlbmN5IHRoYXQgc2hvdWxkIGV4aXN0IGZvciBiejIsIGl0IHdpbGwgbG9vaworICAgICAgICAjIGxpa2UgQ09OVkVSU0lPTl9ERVBFTkRTX2J6Mj0ic29tZWRlcCIKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWUgZW1wdHl0ZXN0JykKKworICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdDT05WRVJTSU9OX0RFUEVORFNfYnoyJyk6CisgICAgICAgICAgICAgICAgZGVwID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCciJykKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICMgTm93IGdldCB0aGUgZGVwZW5kZW5jeSB0YXNrIGxpc3QgYW5kIGNoZWNrIGZvciB0aGUgZXhwZWN0ZWQgdGFzaworICAgICAgICAjIGRlcGVuZGVuY3kKKyAgICAgICAgYml0YmFrZSgnLWcgZW1wdHl0ZXN0JykKKworICAgICAgICB0YXNrZGVwZW5kc2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rhc2stZGVwZW5kcy5kb3QnKQorICAgICAgICBkZXAgPSAgZGVwICsgIi5kb19wb3B1bGF0ZV9zeXNyb290IgorICAgICAgICBkZXBmb3VuZCA9IEZhbHNlCisgICAgICAgIGV4cGVjdGVkbGluZSA9ICciZW1wdHl0ZXN0LmRvX3Jvb3RmcyIgLT4gInt9IicuZm9ybWF0KGRlcCkKKworICAgICAgICB3aXRoIG9wZW4odGFza2RlcGVuZHNmaWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RyaXAoKSA9PSBleHBlY3RlZGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGRlcGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIG5vdCBkZXBmb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJcInt9XCIgbm90IGZvdW5kIi5mb3JtYXQoZXhwZWN0ZWRsaW5lKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZmI2ODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0wLDAgKzEsMjQwIEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgcnVucWVtdQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMuc3NoY29udHJvbCBpbXBvcnQgU1NIQ29udHJvbAoraW1wb3J0IG9zCitpbXBvcnQganNvbgorCitjbGFzcyBJbWFnZUZlYXR1cmVzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICB0ZXN0X3VzZXIgPSAndGVzdGVyJworICAgIHJvb3RfdXNlciA9ICdyb290JworCisgICAgYnVmZmVyID0gVHJ1ZQorCisgICAgQE9FVGVzdElEKDExMDcpCisgICAgZGVmIHRlc3Rfbm9uX3Jvb3RfdXNlcl9jYW5fY29ubmVjdF92aWFfc3NoX3dpdGhvdXRfcGFzc3dvcmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBpZiBub24gcm9vdCB1c2VyIGNhbiBjb25uZWN0IHZpYSBzc2ggd2l0aG91dCBwYXNzd29yZAorICAgICAgICBFeHBlY3RlZDogMS4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyByb290IHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KKyAgICAgICAgICAgICAgICAgIDIuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgdGVzdGVyIHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggZW1wdHktcm9vdC1wYXNzd29yZCBhbGxvdy1lbXB0eS1wYXNzd29yZCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9VU0VSU19QQVJBTVMgPSAidXNlcmFkZCAtcCBcJ1wnIHt9OyB1c2VybW9kIC1zIC9iaW4vc2gge307IicuZm9ybWF0KHNlbGYudGVzdF91c2VyLCBzZWxmLnRlc3RfdXNlcikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgIHdpdGggcnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIikgYXMgcWVtdToKKyAgICAgICAgICAgICMgQXR0ZW1wdCB0byBzc2ggd2l0aCBlYWNoIHVzZXIgaW50byBxZW11IHdpdGggZW1wdHkgcGFzc3dvcmQKKyAgICAgICAgICAgIGZvciB1c2VyIGluIFtzZWxmLnJvb3RfdXNlciwgc2VsZi50ZXN0X3VzZXJdOgorICAgICAgICAgICAgICAgIHNzaCA9IFNTSENvbnRyb2woaXA9cWVtdS5pcCwgbG9nZmlsZT1xZW11LnNzaGxvZywgdXNlcj11c2VyKQorICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc3NoLnJ1bigidHJ1ZSIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciAlcyBmYWlsZWQgd2l0aCAlcycgJSAodXNlciwgb3V0cHV0KSkKKworICAgIEBPRVRlc3RJRCgxMTE1KQorICAgIGRlZiB0ZXN0X2FsbF91c2Vyc19jYW5fY29ubmVjdF92aWFfc3NoX3dpdGhvdXRfcGFzc3dvcmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgYWxsIHVzZXJzIGNhbiBjb25uZWN0IHZpYSBzc2ggd2l0aG91dCBwYXNzd29yZAorICAgICAgICBFeHBlY3RlZDogMS4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyByb290IHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgTk9UIGJlIGFsbG93ZWQuCisgICAgICAgICAgICAgICAgICAyLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHRlc3RlciB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCJjb3JlLWltYWdlLW1pbmltYWwiKSBhcyBxZW11OgorICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHNzaCB3aXRoIGVhY2ggdXNlciBpbnRvIHFlbXUgd2l0aCBlbXB0eSBwYXNzd29yZAorICAgICAgICAgICAgZm9yIHVzZXIgaW4gW3NlbGYucm9vdF91c2VyLCBzZWxmLnRlc3RfdXNlcl06CisgICAgICAgICAgICAgICAgc3NoID0gU1NIQ29udHJvbChpcD1xZW11LmlwLCBsb2dmaWxlPXFlbXUuc3NobG9nLCB1c2VyPXVzZXIpCisgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzc2gucnVuKCJ0cnVlIikKKyAgICAgICAgICAgICAgICBpZiB1c2VyID09ICdyb290JzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciByb290IHdhcyBhbGxvd2VkIHdoZW4gaXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4nKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgdGVzdGVyIGZhaWxlZCB3aXRoICVzJyAlIG91dHB1dCkKKworCisgICAgQE9FVGVzdElEKDExMTYpCisgICAgZGVmIHRlc3RfY2x1dHRlcl9pbWFnZV9jYW5fYmVfYnVpbHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgY2x1dHRlciBpbWFnZSBjYW4gYmUgYnVpbHQKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtY2x1dHRlciBjYW4gYmUgYnVpbHQKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1jbHV0dGVyCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtY2x1dHRlcicpCisKKyAgICBAT0VUZXN0SUQoMTExNykKKyAgICBkZWYgdGVzdF93YXlsYW5kX3N1cHBvcnRfaW5faW1hZ2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgV2F5bGFuZCBzdXBwb3J0IGluIGltYWdlCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBXYXlsYW5kIGltYWdlIGNhbiBiZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgMi4gV2F5bGFuZCBmZWF0dXJlIGNhbiBiZSBpbnN0YWxsZWQKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBkaXN0cm9fZmVhdHVyZXMgPSBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKQorICAgICAgICBpZiBub3QgKCdvcGVuZ2wnIGluIGRpc3Ryb19mZWF0dXJlcyBhbmQgJ3dheWxhbmQnIGluIGRpc3Ryb19mZWF0dXJlcyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCduZWl0aGVyIG9wZW5nbCBub3Igd2F5bGFuZCBwcmVzZW50IG9uIERJU1RST19GRUFUVVJFUyBzbyBjb3JlLWltYWdlLXdlc3RvbiBjYW5ub3QgYmUgYnVpbHQnKQorCisgICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLXdlc3RvbgorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLXdlc3RvbicpCisKKyAgICBAT0VUZXN0SUQoMTQ5NykKKyAgICBkZWYgdGVzdF9ibWFwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGJtYXAgc3VwcG9ydAorICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsZCB3aXRoIGJtYXAgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgMi4gY29yZS1pbWFnZS1taW5pbWFsIGlzIHNwYXJzZQorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiBleHQ0IGV4dDQuYm1hcCBleHQ0LmJtYXAuZ3oiJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQorCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2VfbmFtZSkKKyAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCAiJXMuZXh0NCIgJSBsaW5rX25hbWUpCisgICAgICAgIGJtYXBfcGF0aCA9ICIlcy5ibWFwIiAlIGltYWdlX3BhdGgKKyAgICAgICAgZ3ppcF9wYXRoID0gIiVzLmd6IiAlIGJtYXBfcGF0aAorCisgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlLCBibWFwIGFuZCBibWFwLmd6IGZpbGVzIGFyZSBpbiBkZXBsb3kgZGlyZWN0b3J5CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGJtYXBfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhnemlwX3BhdGgpKQorCisgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGlzIHNwYXJzZQorICAgICAgICBpbWFnZV9zdGF0ID0gb3Muc3RhdChpbWFnZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW1hZ2Vfc3RhdC5zdF9zaXplID4gaW1hZ2Vfc3RhdC5zdF9ibG9ja3MgKiA1MTIpCisKKyAgICAgICAgIyBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIGd6aXAgaXMgdmFsaWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1bkNtZCgnZ3ppcCAtdCAlcycgJSBnemlwX3BhdGgpKQorCisgICAgQE9FVGVzdElEKDE5MDMpCisgICAgZGVmIHRlc3RfaHlwZXJ2aXNvcl9mbXRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIHZhcmlvdXMgaHlwZXJ2aXNvciBmb3JtYXRzCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLW1pbmltYWwgY2FuIGJlIGJ1aWx0IHdpdGggdm1kaywgdmRpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcWNvdzIgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgIDIuIHFlbXUtaW1nIHNheXMgZWFjaCBpbWFnZSBoYXMgdGhlIGV4cGVjdGVkIGZvcm1hdAorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgVG9tIFJpbmkgPHRyaW5pQGtvbnN1bGtvLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaW1nX3R5cGVzID0gWyAndm1kaycsICd2ZGknLCAncWNvdzInIF0KKyAgICAgICAgZmVhdHVyZXMgPSAiIgorICAgICAgICBmb3IgaXR5cGUgaW4gaW1nX3R5cGVzOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZTVFlQRVMgKz0gIndpYy4lcyJcbicgJSBpdHlwZQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQorCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2VfbmFtZSkKKyAgICAgICAgZm9yIGl0eXBlIGluIGltZ190eXBlczoKKyAgICAgICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgIiVzLndpYy4lcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19uYW1lLCBpdHlwZSkpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGZpbGUgaXMgaW4gZGVwbG95IGRpcmVjdG9yeQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBpcyB2bWRrCisgICAgICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignU1RBR0lOR19ESVJfTkFUSVZFJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3FlbXUtaW1nIGluZm8gLS1vdXRwdXQganNvbiAlcycgJSBpbWFnZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290PXN5c3Jvb3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbi5sb2FkcyhyZXN1bHQub3V0cHV0KS5nZXQoJ2Zvcm1hdCcpID09IGl0eXBlKQorCisgICAgQE9FVGVzdElEKDE5MDUpCisgICAgZGVmIHRlc3RfbG9uZ19jaGFpbl9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGZvciBjaGFpbmluZyBtYW55IENPTlZFUlNJT05fQ01EcyB0b2dldGhlcgorICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICBleHQ0LmJtYXAuZ3ouYnoyLmx6by54ei51LWJvb3QgYW5kIGFsc28gY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYTI1NnN1bQorICAgICAgICAgICAgICAgICAgICAgMi4gVGhlIGFib3ZlIGltYWdlIGhhcyBhIHZhbGlkIHNoYTI1NnN1bQorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgVG9tIFJpbmkgPHRyaW5pQGtvbnN1bGtvLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgY29udiA9ICJleHQ0LmJtYXAuZ3ouYnoyLmx6by54ei51LWJvb3QiCisgICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiVzICVzLnNoYTI1NnN1bSInICUgKGNvbnYsIGNvbnYpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCisKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQorICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy4lcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX25hbWUsIGNvbnYpKQorCisgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0aW5nIGltYWdlIGlzIGluIHRoZSBkZXBsb3kgZGlyZWN0b3J5CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGggKyAiLnNoYTI1NnN1bSIpKQorCisgICAgICAgICMgY2hlY2sgaWYgdGhlIHJlc3VsdGluZyBzaGEyNTZzdW0gYWdyZWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5DbWQoJ2NkICVzO3NoYTI1NnN1bSAtYyAlcy4lcy5zaGEyNTZzdW0nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVwbG95X2Rpcl9pbWFnZSwgbGlua19uYW1lLCBjb252KSkpCisKKyAgICBAT0VUZXN0SUQoMTkwNCkKKyAgICBkZWYgdGVzdF9pbWFnZV9mc3R5cGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIGltYWdlIG9mIHN1cHBvcnRlZCBpbWFnZSBmc3R5cGVzIGNhbiBiZSBidWlsdAorICAgICAgICBFeHBlY3RlZDogICAgY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsdCBmb3IgdmFyaW91cyBpbWFnZSB0eXBlcworICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKworICAgICAgICBpbWdfdHlwZXMgPSBbaXR5cGUgZm9yIGl0eXBlIGluIGdldF9iYl92YXIoIklNQUdFX1RZUEVTIiwgaW1hZ2VfbmFtZSkuc3BsaXQoKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXR5cGUgbm90IGluICgnY29udGFpbmVyJywgJ2VsZicsICdtdWx0aXViaScpXQorCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICIlcyJcbidcCisgICAgICAgICAgICAgICAgICdNS1VCSUZTX0FSR1MgPz0gIi1tIDIwNDggLWUgMTI5MDI0IC1jIDIwNDciXG4nXAorICAgICAgICAgICAgICAgICAnVUJJTklaRV9BUkdTID89ICItbSAyMDQ4IC1wIDEyOEtpQiAtcyA1MTIiJyAlICcgJy5qb2luKGltZ190eXBlcykKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQorCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2VfbmFtZSkKKyAgICAgICAgZm9yIGl0eXBlIGluIGltZ190eXBlczoKKyAgICAgICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgIiVzLiVzIiAlIChsaW5rX25hbWUsIGl0eXBlKSkKKyAgICAgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGlzIGluIGRlcGxveSBkaXJlY3RvcnkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaW1hZ2UgJXMgZG9lc24ndCBleGlzdCIgJSAoaXR5cGUsIGltYWdlX3BhdGgpKQorCisgICAgZGVmIHRlc3RfdXNlcmFkZF9zdGF0aWMoc2VsZik6CisgICAgICAgIGNvbmZpZyA9ICIiIgorVVNFUkFEREVYVEVOU0lPTiA9ICJ1c2VyYWRkLXN0YXRpY2lkcyIKK1VTRVJBRERfRVJST1JfRFlOQU1JQyA9ICJza2lwIgorVVNFUkFERF9VSURfVEFCTEVTICs9ICJmaWxlcy9zdGF0aWMtcGFzc3dkIgorVVNFUkFERF9HSURfVEFCTEVTICs9ICJmaWxlcy9zdGF0aWMtZ3JvdXAiCisiIiIKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLWJhc2UiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGF5ZXJhcHBlbmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9sYXllcmFwcGVuZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQ1Y2RiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGF5ZXJhcHBlbmQucHkKQEAgLTAsMCArMSw5NSBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgTGF5ZXJBcHBlbmRUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGxheWVyY29uZiA9ICIiIgorIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKK0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgorCisjIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKK0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMqLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcyovKi5iYmFwcGVuZCIKKworQkJGSUxFX0NPTExFQ1RJT05TICs9ICJtZXRhLWxheWVySU5UIgorQkJGSUxFX1BBVFRFUk5fbWV0YS1sYXllcklOVCA6PSAiXiR7TEFZRVJESVJ9LyIKK0JCRklMRV9QUklPUklUWV9tZXRhLWxheWVySU5UID0gIjYiCisiIiIKKyAgICByZWNpcGUgPSAiIiIKK0xJQ0VOU0U9IkNMT1NFRCIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK3B5dGhvbiBkb19idWlsZCgpIHsKKyAgICBiYi5wbGFpbignQnVpbGRpbmcgLi4uJykKK30KK2FkZHRhc2sgYnVpbGQKKyIiIgorICAgIGFwcGVuZCA9ICIiIgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorCitTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2FwcGVuZHRlc3QudHh0IgorCitzeXNyb290X3N0YWdlX2FsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9hcHBlbmR0ZXN0LnR4dCAke1NZU1JPT1RfREVTVERJUn0vCit9CisKKyIiIgorCisgICAgYXBwZW5kMiA9ICIiIgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorCitTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2FwcGVuZHRlc3QudHh0IgorIiIiCisgICAgbGF5ZXJhcHBlbmQgPSAnJworCisgICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYubGF5ZXJhcHBlbmQ6CisgICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLmJ1aWxkZGlyICsgIi9jb25mL2JibGF5ZXJzLmNvbmYiLCBzZWxmLmxheWVyYXBwZW5kKQorICAgICAgICBzdXBlcihMYXllckFwcGVuZFRlc3RzLCBzZWxmKS50ZWFyRG93bkxvY2FsKCkKKworICAgIEBPRVRlc3RJRCgxMTk2KQorICAgIGRlZiB0ZXN0X2xheWVyX2FwcGVuZHMoc2VsZik6CisgICAgICAgIGNvcmViYXNlID0gZ2V0X2JiX3ZhcigiQ09SRUJBU0UiKQorCisgICAgICAgIGZvciBsIGluIFsiMCIsICIxIiwgIjIiXToKKyAgICAgICAgICAgIGxheWVyID0gb3MucGF0aC5qb2luKGNvcmViYXNlLCAibWV0YS1sYXllcnRlc3QiICsgbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobGF5ZXIpKQorICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIpCisgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvY29uZiIpCisgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL2NvbmYvbGF5ZXIuY29uZiIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYubGF5ZXJjb25mLnJlcGxhY2UoIklOVCIsIGwpKQorICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdCIpCisgICAgICAgICAgICBpZiBsID09ICIwIjoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmIiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5yZWNpcGUpCisgICAgICAgICAgICBlbGlmIGwgPT0gIjEiOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYmFwcGVuZCIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFwcGVuZCkKKyAgICAgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdCIpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJMYXllciAxIHRlc3QiKQorICAgICAgICAgICAgZWxpZiBsID09ICIyIjoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmJhcHBlbmQiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5hcHBlbmQyKQorICAgICAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDIgdGVzdCIpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGxheWVyKQorCisgICAgICAgIHNlbGYubGF5ZXJhcHBlbmQgPSAiQkJMQVlFUlMgKz0gXCJ7MH0vbWV0YS1sYXllcnRlc3QwIHswfS9tZXRhLWxheWVydGVzdDEgezB9L21ldGEtbGF5ZXJ0ZXN0MlwiIi5mb3JtYXQoY29yZWJhc2UpCisgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLmJ1aWxkZGlyICsgIi9jb25mL2JibGF5ZXJzLmNvbmYiLCBzZWxmLmxheWVyYXBwZW5kKQorICAgICAgICBzdGFnaW5nZGlyID0gZ2V0X2JiX3ZhcigiU1lTUk9PVF9ERVNURElSIiwgImxheWVyYXBwZW5kdGVzdCIpCisgICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCisgICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMiB0ZXN0IikKKyAgICAgICAgb3MucmVtb3ZlKGNvcmViYXNlICsgIi9tZXRhLWxheWVydGVzdDIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIpCisgICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCisgICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMSB0ZXN0IikKKyAgICAgICAgd2l0aCBvcGVuKGNvcmViYXNlICsgIi9tZXRhLWxheWVydGVzdDIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDIgdGVzdCIpCisgICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCisgICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMiB0ZXN0IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpYm9lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGlib2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0NjA5MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpYm9lLnB5CkBAIC0wLDAgKzEsMTAyIEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIGJpdGJha2UsIHJ1bkNtZAoraW1wb3J0IG9lLnBhdGgKK2ltcG9ydCBvcworCitjbGFzcyBMaWJPRShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoTGliT0UsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGNscy50bXBfZGlyID0gZ2V0X2JiX3ZhcignVE1QRElSJykKKworICAgIEBPRVRlc3RJRCgxNjM1KQorICAgIGRlZiB0ZXN0X2NvcHlfdHJlZV9zcGVjaWFsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5dHJlZSgpIHNob3VsZCBjb3B5IGZpbGVzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXIKKyAgICAgICAgRXhwZWN0ZWQ6ICAgJ3Rlc3QgZmlsZSB3aXRoIHNwwqNjIWFsIEBuZCBzcGFjZXMnIHNob3VsZCBleGlzdCBpbgorICAgICAgICAgICAgICAgICAgICBjb3B5IGRlc3RpbmF0aW9uCisgICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKKyAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQorICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQorICAgICAgICB0ZXN0ZmlsZW5hbWUgPSAndGVzdCBmaWxlIHdpdGggc3DCo2MhYWwgQG5kIHNwYWNlcycKKworICAgICAgICAjIGNyZWF0ZSB0aGUgdGVzdCBmaWxlIGFuZCBjb3B5IGl0CisgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSwgJ3crYicpLmNsb3NlKCkKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzcmMsIGRzdCkKKworICAgICAgICAjIGVuc3VyZSBwYXRoIGV4aXN0cyBpbiBkZXN0CisgICAgICAgIGZpbGVpbmRzdCA9IG9zLnBhdGguaXNmaWxlKG9lLnBhdGguam9pbihkc3QsIHRlc3RmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlaW5kc3QsICJGaWxlIHdpdGggc3BhY2VzIGRvZXNuJ3QgZXhpc3QgaW4gZHN0IikKKworICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQorCisgICAgQE9FVGVzdElEKDE2MzYpCisgICAgZGVmIHRlc3RfY29weV90cmVlX3hhdHRyKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5dHJlZSgpIHNob3VsZCBwcmVzZXJ2ZSB4YXR0ciBvbiBjb3BpZWQgZmlsZXMKKyAgICAgICAgRXhwZWN0ZWQ6ICAgdGVzdHhhdHRyIGZpbGUgaW4gZGVzdGluYXRpb24gc2hvdWxkIGhhdmUgdXNlci5vZXRlc3QKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKKyAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQorICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQorICAgICAgICB0ZXN0ZmlsZW5hbWUgPSAndGVzdHhhdHRyJworCisgICAgICAgICMgZW5zdXJlIHdlIGhhdmUgc2V0ZmF0dHIgYXZhaWxhYmxlCisgICAgICAgIGJpdGJha2UoImF0dHItbmF0aXZlIikKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTWVNST09UX0RFU1RESVInLCAnYmluZGlyJ10sICdhdHRyLW5hdGl2ZScpCisgICAgICAgIGRlc3RkaXIgPSBiYl92YXJzWydTWVNST09UX0RFU1RESVInXQorICAgICAgICBiaW5kaXIgPSBiYl92YXJzWydiaW5kaXInXQorICAgICAgICBiaW5kaXIgPSBkZXN0ZGlyICsgYmluZGlyCisKKyAgICAgICAgIyBjcmVhdGUgYSBmaWxlIHdpdGggeGF0dHIgYW5kIGNvcHkgaXQKKyAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpLCAndytiJykuY2xvc2UoKQorICAgICAgICBydW5DbWQoJyVzL3NldGZhdHRyIC1uIHVzZXIub2V0ZXN0IC12ICJ0ZXN0aW5nIGxpYm9lIiAlcycgJSAoYmluZGlyLCBvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpKSkKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzcmMsIGRzdCkKKworICAgICAgICAjIGVuc3VyZSBmaWxlIGluIGRlc3QgaGFzIHVzZXIub2V0ZXN0IHhhdHRyCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnJXMvZ2V0ZmF0dHIgLW4gdXNlci5vZXRlc3QgJXMnICUgKGJpbmRpciwgb2UucGF0aC5qb2luKGRzdCwgdGVzdGZpbGVuYW1lKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VzZXIub2V0ZXN0PSJ0ZXN0aW5nIGxpYm9lIicsIHJlc3VsdC5vdXRwdXQsICdFeHRlbmRlZCBhdHRyaWJ1dGUgbm90IHNlcnQgaW4gZHN0JykKKworICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQorCisgICAgQE9FVGVzdElEKDE2MzQpCisgICAgZGVmIHRlc3RfY29weV9oYXJkbGlua190cmVlX2NvdW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKCkgc2hvdWxkbid0IG1pc3Mgb3V0IGZpbGVzCisgICAgICAgIEV4cGVjdGVkOiAgIHNyYyBhbmQgZHN0IHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBmaWxlcworICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCisgICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCisgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKKyAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKKyAgICAgICAgdGVzdGZpbGVzID0gWydmb28nLCAnYmFyJywgJy5iYXonLCAncXV1eCddCisKKyAgICAgICAgZGVmIHRvdWNoZmlsZSh0Zik6CisgICAgICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRmKSwgJ3crYicpLmNsb3NlKCkKKworICAgICAgICBmb3IgZiBpbiB0ZXN0ZmlsZXM6CisgICAgICAgICAgICB0b3VjaGZpbGUoZikKKworICAgICAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoc3JjLCBkc3QpCisKKyAgICAgICAgZHN0Y250ID0gbGVuKG9zLmxpc3RkaXIoZHN0KSkKKyAgICAgICAgc3JjY250ID0gbGVuKG9zLmxpc3RkaXIoc3JjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZHN0Y250LCBsZW4odGVzdGZpbGVzKSwgIk51bWJlciBvZiBmaWxlcyBpbiBkc3QgKCVzKSBkaWZmZXJzIGZyb20gbnVtYmVyIG9mIGZpbGVzIGluIHNyYyglcykuIiAlIChkc3RjbnQsIHNyY2NudCkpCisKKyAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpY19jaGVja3N1bS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpY19jaGVja3N1bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQwNzE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5CkBAIC0wLDAgKzEsMzUgQEAKK2ltcG9ydCBvcworaW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZQorZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBDb21tYW5kRXJyb3IKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBMaWNlbnNlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgICMgVmVyaWZ5IHRoYXQgY2hhbmdpbmcgYSBsaWNlbnNlIGZpbGUgdGhhdCBoYXMgYW4gYWJzb2x1dGUgcGF0aCBjYXVzZXMKKyAgICAjIHRoZSBsaWNlbnNlIHFhIHRvIGZhaWwgZHVlIHRvIGEgbWlzbWF0Y2hlZCBtZDVzdW0uCisgICAgQE9FVGVzdElEKDExOTcpCisgICAgZGVmIHRlc3Rfbm9ubWF0Y2hpbmdfY2hlY2tzdW0oc2VsZik6CisgICAgICAgIGJpdGJha2VfY21kID0gJy1jIHBvcHVsYXRlX2xpYyBlbXB0eXRlc3QnCisgICAgICAgIGVycm9yX21zZyA9ICdlbXB0eXRlc3Q6IFRoZSBuZXcgbWQ1IGNoZWNrc3VtIGlzIDhkNzc3ZjM4NWQzZGZlYzg4MTVkMjBmNzQ5NjAyNmRjJworCisgICAgICAgIGxpY19maWxlLCBsaWNfcGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBvcy5jbG9zZShsaWNfZmlsZSkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsaWNfcGF0aCkKKworICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgIiIiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJXM7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgorU1JDX1VSSSA9ICJmaWxlOi8vJXM7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgorIiIiICUgKGxpY19wYXRoLCBsaWNfcGF0aCkpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoYml0YmFrZV9jbWQpCisKKyAgICAgICAgd2l0aCBvcGVuKGxpY19wYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJkYXRhIikKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihyZXN1bHQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWFuaWZlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tYW5pZmVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDYwNzE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWFuaWZlc3QucHkKQEAgLTAsMCArMSwxNjYgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBiaXRiYWtlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgTWFuaWZlc3RFbnRyeToKKyAgICAnJydBIG1hbmlmZXN0IGl0ZW0gb2YgYSBjb2xsZWN0aW9uIGFibGUgdG8gbGlzdCBtaXNzaW5nIHBhY2thZ2VzJycnCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudHJ5KToKKyAgICAgICAgc2VsZi5maWxlID0gZW50cnkKKyAgICAgICAgc2VsZi5taXNzaW5nID0gW10KKworY2xhc3MgVmVyaWZ5TWFuaWZlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAnJydUZXN0cyBmb3IgdGhlIG1hbmlmZXN0IGZpbGVzIGFuZCBjb250ZW50cyBvZiBhbiBpbWFnZScnJworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNoZWNrX21hbmlmZXN0X2VudHJpZXMoc2VsZiwgbWFuaWZlc3QsIHBhdGgpOgorICAgICAgICBtYW5pZmVzdF9lcnJvcnMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyIikgYXMgbWZpbGU6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbWZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2VudHJ5ID0gb3MucGF0aC5qb2luKHBhdGgsIGxpbmUuc3BsaXQoKVswXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiBsb29raW5nIGZvciB7fSJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdF9lbnRyeSkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYW5pZmVzdF9lbnRyeSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9lcnJvcnMuYXBwZW5kKG1hbmlmZXN0X2VudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiB7fSBub3QgZm91bmQiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3RfZW50cnkpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiBjaGVja2luZyBvZiB7fSBmYWlsZWQiXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdCkpCisgICAgICAgICAgICByYWlzZSBlCisKKyAgICAgICAgcmV0dXJuIG1hbmlmZXN0X2Vycm9ycworCisgICAgI3RoaXMgd2lsbCBwb3NzaWJseSBtb3ZlIGZyb20gaGVyZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfZGlyX2Zyb21fYmJfdmFyKHNlbGYsIGJiX3ZhciwgdGFyZ2V0ID0gTm9uZSk6CisgICAgICAgIHRhcmdldCA9PSBzZWxmLmJ1aWxkdGFyZ2V0IGlmIHRhcmdldCA9PSBOb25lIGVsc2UgdGFyZ2V0CisgICAgICAgIGRpcmVjdG9yeSA9IGdldF9iYl92YXIoYmJfdmFyLCB0YXJnZXQpOworICAgICAgICBpZiBub3QgZGlyZWN0b3J5IG9yIG5vdCBvcy5wYXRoLmlzZGlyKGRpcmVjdG9yeSk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IHt9IHBvaW50cyB0byB7fSB3aGVuIHRhcmdldCA9IHt9IlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJfdmFyLCBkaXJlY3RvcnksIHRhcmdldCkpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yCisgICAgICAgIHJldHVybiBkaXJlY3RvcnkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorCisgICAgICAgIHN1cGVyKFZlcmlmeU1hbmlmZXN0LCBzZWxmKS5zZXRVcENsYXNzKCkKKyAgICAgICAgc2VsZi5idWlsZHRhcmdldCA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIHNlbGYuY2xhc3NuYW1lID0gJ1ZlcmlmeU1hbmlmZXN0JworCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oInt9OiBkb2luZyBiaXRiYWtlIHt9IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB0ZXN0IlwKKyAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBzZWxmLmJ1aWxkdGFyZ2V0KSkKKyAgICAgICAgaWYgYml0YmFrZShzZWxmLmJ1aWxkdGFyZ2V0KS5zdGF0dXM6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie30gRmFpbGVkIHRvIHNldHVwIHt9IlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgc2VsZi5idWlsZHRhcmdldCkpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ7fTogQ2Fubm90IHNldHVwIHRlc3Rpbmcgc2NlbmFyaW8iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKKworICAgIEBPRVRlc3RJRCgxMzgwKQorICAgIGRlZiB0ZXN0X1NES19tYW5pZmVzdF9lbnRyaWVzKHNlbGYpOgorICAgICAgICAnJydWZXJpZnlpbmcgdGhlIFNESyBtYW5pZmVzdCBlbnRyaWVzIGV4aXN0LCB0aGlzIG1heSB0YWtlIGEgYnVpbGQnJycKKworICAgICAgICAjIHRoZSBzZXR1cCBzaG91bGQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwgYW5kIGhlcmUgaXQgaXMgcmVxdWlyZWQKKyAgICAgICAgIyB0byBkbyBhbiBhZGRpdGlvbmFsIHNldHVwIGZvciB0aGUgc2RrCisgICAgICAgIHNka3Rhc2sgPSAnLWMgcG9wdWxhdGVfc2RrJworICAgICAgICBiYmFyZ3MgPSBzZGt0YXNrICsgJyAnICsgc2VsZi5idWlsZHRhcmdldAorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IGRvaW5nIGJpdGJha2Uge30gYXMgYSBwcmVyZXF1aXNpdGUgb2YgdGhlIHRlc3QiXAorICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiYXJncykpCisgICAgICAgIGlmIGJpdGJha2UoYmJhcmdzKS5zdGF0dXM6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie30gRmFpbGVkIHRvIGJpdGJha2Uge30iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgie306IENhbm5vdCBzZXR1cCB0ZXN0aW5nIHNjZW5hcmlvIlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCisKKworICAgICAgICBwa2dkYXRhX2RpciA9IHJldmVyc2VfZGlyID0ge30KKyAgICAgICAgbWZpbGVuYW1lID0gbXBhdGggPSBtX2VudHJ5ID0ge30KKyAgICAgICAgIyBnZXQgbWFuaWZlc3QgbG9jYXRpb24gYmFzZWQgb24gdGFyZ2V0IHRvIHF1ZXJ5IGFib3V0CisgICAgICAgIGRfdGFyZ2V0PSBkaWN0KHRhcmdldCA9IHNlbGYuYnVpbGR0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA9ICduYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0JykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWRpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignU0RLX0RFUExPWScsIHNlbGYuYnVpbGR0YXJnZXQpCisgICAgICAgICAgICBmb3IgayBpbiBkX3RhcmdldC5rZXlzKCk6CisgICAgICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX05BTUUnLCAnU0RLX1ZFUlNJT04nXSwgc2VsZi5idWlsZHRhcmdldCkKKyAgICAgICAgICAgICAgICBtZmlsZW5hbWVba10gPSAie30tdG9vbGNoYWluLXt9Lnt9Lm1hbmlmZXN0Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBiYl92YXJzWydTREtfTkFNRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgYmJfdmFyc1snU0RLX1ZFUlNJT04nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGspCisgICAgICAgICAgICAgICAgbXBhdGhba10gPSBvcy5wYXRoLmpvaW4obWRpciwgbWZpbGVuYW1lW2tdKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtcGF0aFtrXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fToge30gZG9lcyBub3QgZXhpc3QiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCBtcGF0aFtrXSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKKyAgICAgICAgICAgICAgICBtX2VudHJ5W2tdID0gTWFuaWZlc3RFbnRyeShtcGF0aFtrXSkKKworICAgICAgICAgICAgICAgIHBrZ2RhdGFfZGlyW2tdID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdQS0dEQVRBX0RJUicsCisgICAgICAgICAgICAgICAgICAgICAgICBkX3RhcmdldFtrXSkKKyAgICAgICAgICAgICAgICByZXZlcnNlX2RpcltrXSA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpcltrXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdydW50aW1lLXJldmVyc2UnKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXZlcnNlX2RpcltrXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fToge30gZG9lcyBub3QgZXhpc3QiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCByZXZlcnNlX2RpcltrXSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSBzZWxmLnNraXBUZXN0KCJ7fTogRXJyb3IgaW4gb2J0YWluaW5nIG1hbmlmZXN0IGRpcnMiXAorICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIG1zZyA9ICJ7fTogRXJyb3IgY2Fubm90IGZpbmQgbWFuaWZlc3RzIGluIHRoZSBzcGVjaWZpZWQgZGlyOlxue30iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtZGlyKQorICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKKworICAgICAgICBmb3IgayBpbiBkX3RhcmdldC5rZXlzKCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IENoZWNrIG1hbmlmZXN0IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIG1fZW50cnlba10uZmlsZSkpCisKKyAgICAgICAgICAgIG1fZW50cnlba10ubWlzc2luZyA9IHNlbGYuY2hlY2tfbWFuaWZlc3RfZW50cmllcyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW50cnlba10uZmlsZSxyZXZlcnNlX2RpcltrXSkKKyAgICAgICAgICAgIGlmIG1fZW50cnlba10ubWlzc2luZzoKKyAgICAgICAgICAgICAgICBtc2cgPSAne306IHt9IEVycm9yIGhhcyB0aGUgZm9sbG93aW5nIG1pc3NpbmcgZW50cmllcydcCisgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5W2tdLmZpbGUpCisgICAgICAgICAgICAgICAgbG9nbXNnID0gbXNnKyc6XG4nKydcbicuam9pbihtX2VudHJ5W2tdLm1pc3NpbmcpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcobG9nbXNnKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8obXNnKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbChsb2dtc2cpCisKKyAgICBAT0VUZXN0SUQoMTM4MSkKKyAgICBkZWYgdGVzdF9pbWFnZV9tYW5pZmVzdF9lbnRyaWVzKHNlbGYpOgorICAgICAgICAnJydWZXJpZnlpbmcgdGhlIGltYWdlIG1hbmlmZXN0IGVudHJpZXMgZXhpc3QnJycKKworICAgICAgICAjIGdldCBtYW5pZmVzdCBsb2NhdGlvbiBiYXNlZCBvbiB0YXJnZXQgdG8gcXVlcnkgYWJvdXQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWRpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0KQorICAgICAgICAgICAgbWZpbGVuYW1lID0gZ2V0X2JiX3ZhcigiSU1BR0VfTElOS19OQU1FIiwgc2VsZi5idWlsZHRhcmdldClcCisgICAgICAgICAgICAgICAgICAgICsgIi5tYW5pZmVzdCIKKyAgICAgICAgICAgIG1wYXRoID0gb3MucGF0aC5qb2luKG1kaXIsIG1maWxlbmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtcGF0aCk6IHJhaXNlIElPRXJyb3IKKyAgICAgICAgICAgIG1fZW50cnkgPSBNYW5pZmVzdEVudHJ5KG1wYXRoKQorCisgICAgICAgICAgICBwa2dkYXRhX2RpciA9IHt9CisgICAgICAgICAgICBwa2dkYXRhX2RpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignUEtHREFUQV9ESVInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWlsZHRhcmdldCkKKyAgICAgICAgICAgIHJldmRpciA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgJ3J1bnRpbWUtcmV2ZXJzZScpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmV2ZGlyKTogcmFpc2UgSU9FcnJvcgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuc2tpcFRlc3QoInt9OiBFcnJvciBpbiBvYnRhaW5pbmcgbWFuaWZlc3QgZGlycyJcCisgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgbXNnID0gInt9OiBFcnJvciBjYW5ub3QgZmluZCBtYW5pZmVzdHMgaW4gZGlyOlxue30iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtZGlyKQorICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKKworICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IENoZWNrIG1hbmlmZXN0IHt9IlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5LmZpbGUpKQorICAgICAgICBtX2VudHJ5Lm1pc3NpbmcgPSBzZWxmLmNoZWNrX21hbmlmZXN0X2VudHJpZXMoXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW50cnkuZmlsZSwgcmV2ZGlyKQorICAgICAgICBpZiBtX2VudHJ5Lm1pc3Npbmc6CisgICAgICAgICAgICBtc2cgPSAne306IHt9IEVycm9yIGhhcyB0aGUgZm9sbG93aW5nIG1pc3NpbmcgZW50cmllcydcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnkuZmlsZSkKKyAgICAgICAgICAgIGxvZ21zZyA9IG1zZysnOlxuJysnXG4nLmpvaW4obV9lbnRyeS5taXNzaW5nKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcobG9nbXNnKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhtc2cpCisgICAgICAgICAgICBzZWxmLmZhaWwobG9nbXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvX19pbml0X18ucHkKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2NzVmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQpAQCAtMCwwICsxLDk5IEBACitpbXBvcnQgb3MKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgVGVzdEJsb2JQYXJzaW5nKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGltcG9ydCB0aW1lCisgICAgICAgIHNlbGYucmVwb19wYXRoID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3NlbGZ0ZXN0LWJ1aWxkaGlzdG9yeScsCisgICAgICAgICAgICBkaXI9Z2V0X2JiX3ZhcignVE9QRElSJykpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBnaXQgaW1wb3J0IFJlcG8KKyAgICAgICAgICAgIHNlbGYucmVwbyA9IFJlcG8uaW5pdChzZWxmLnJlcG9fcGF0aCkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnUHl0aG9uIG1vZHVsZSBHaXRQeXRob24gaXMgbm90IHByZXNlbnQnKQorCisgICAgICAgIHNlbGYudGVzdF9maWxlID0gInRlc3QiCisgICAgICAgIHNlbGYudmFyX21hcCA9IHt9CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGltcG9ydCBzaHV0aWwKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnJlcG9fcGF0aCkKKworICAgIGRlZiBjb21taXRfdmFycyhzZWxmLCB0b19hZGQ9e30sIHRvX3JlbW92ZSA9IFtdLCBtc2c9IkEgY29tbWl0IG1lc3NhZ2UiKToKKyAgICAgICAgaWYgbGVuKHRvX2FkZCkgPT0gMCBhbmQgbGVuKHRvX3JlbW92ZSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZvciBrIGluIHRvX3JlbW92ZToKKyAgICAgICAgICAgIHNlbGYudmFyX21hcC5wb3AoeCxOb25lKQorICAgICAgICBmb3IgayBpbiB0b19hZGQ6CisgICAgICAgICAgICBzZWxmLnZhcl9tYXBba10gPSB0b19hZGRba10KKworICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksICd3JykgYXMgcmVwb19maWxlOgorICAgICAgICAgICAgZm9yIGsgaW4gc2VsZi52YXJfbWFwOgorICAgICAgICAgICAgICAgIHJlcG9fZmlsZS53cml0ZSgiJXMgPSAlc1xuIiAlIChrLCBzZWxmLnZhcl9tYXBba10pKQorCisgICAgICAgIHNlbGYucmVwby5naXQuYWRkKCItLWFsbCIpCisgICAgICAgIHNlbGYucmVwby5naXQuY29tbWl0KG1lc3NhZ2U9bXNnKQorCisgICAgQE9FVGVzdElEKDE4NTkpCisgICAgZGVmIHRlc3RfYmxvYl90b19kaWN0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb252ZXJ0aW9uIG9mIGdpdCBibG9icyB0byBkaWN0aW9uYXJ5CisgICAgICAgICIiIgorICAgICAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgYmxvYl90b19kaWN0CisgICAgICAgIHZhbHVlc21hcCA9IHsgImZvbyIgOiAiMSIsICJiYXIiIDogIjIiIH0KKyAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB2YWx1ZXNtYXApCisKKyAgICAgICAgYmxvYiA9IHNlbGYucmVwby5oZWFkLmNvbW1pdC50cmVlLmJsb2JzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzbWFwLCBibG9iX3RvX2RpY3QoYmxvYiksCisgICAgICAgICAgICAiY29tbWl0IHdhcyBub3QgdHJhbnNsYXRlZCBjb3JyZWN0bHkgdG8gZGljdGlvbmFyeSIpCisKKyAgICBAT0VUZXN0SUQoMTg2MCkKKyAgICBkZWYgdGVzdF9jb21wYXJlX2RpY3RfYmxvYnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbXBhcmlzc29uIG9mIGRpY3Rpb25hcmllcyBleHRyYWN0ZWQgZnJvbSBnaXQgYmxvYnMKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gb2UuYnVpbGRoaXN0b3J5X2FuYWx5c2lzIGltcG9ydCBjb21wYXJlX2RpY3RfYmxvYnMKKworICAgICAgICBjaGFuZ2VzbWFwID0geyAiZm9vLTIiIDogKCIyIiwgIjgiKSwgImJhciIgOiAoIiIsIjQiKSwgImJhci0yIiA6ICgiIiwiNSIpfQorCisgICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vIiA6ICIxIiwgImZvby0yIiA6ICIyIiwgImZvby0zIiA6ICIzIiB9KQorICAgICAgICBibG9iMSA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KKworICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvby0yIiA6ICI4IiwgImJhciIgOiAiNCIsICJiYXItMiIgOiAiNSIgfSkKKyAgICAgICAgYmxvYjIgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCisKKyAgICAgICAgY2hhbmdlX3JlY29yZHMgPSBjb21wYXJlX2RpY3RfYmxvYnMob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksCisgICAgICAgICAgICBibG9iMSwgYmxvYjIsIEZhbHNlLCBGYWxzZSkKKworICAgICAgICB2YXJfY2hhbmdlcyA9IHsgeC5maWVsZG5hbWUgOiAoeC5vbGR2YWx1ZSwgeC5uZXd2YWx1ZSkgZm9yIHggaW4gY2hhbmdlX3JlY29yZHN9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlc21hcCwgdmFyX2NoYW5nZXMsICJDaGFuZ2VzIG5vdCByZXBvcnRlZCBjb3JyZWN0bHkiKQorCisgICAgQE9FVGVzdElEKDE4NjEpCisgICAgZGVmIHRlc3RfY29tcGFyZV9kaWN0X2Jsb2JzX2RlZmF1bHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlZmF1bHQgdmFsdWVzIGZvciBjb21wYXJpc3NvbiBvZiBnaXQgYmxvYiBkaWN0aW9uYXJpZXMKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gb2UuYnVpbGRoaXN0b3J5X2FuYWx5c2lzIGltcG9ydCBjb21wYXJlX2RpY3RfYmxvYnMKKyAgICAgICAgZGVmYXVsdG1hcCA9IHsgeCA6ICgiZGVmYXVsdCIsICIxIikgIGZvciB4IGluIFsiUEtHIiwgIlBLR0UiLCAiUEtHViIsICJQS0dSIl19CisKKyAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28iIDogIjEiIH0pCisgICAgICAgIGJsb2IxID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQorCisgICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiUEtHIiA6ICIxIiwgIlBLR0UiIDogIjEiLCAiUEtHViIgOiAiMSIsICJQS0dSIiA6ICIxIiB9KQorICAgICAgICBibG9iMiA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KKworICAgICAgICBjaGFuZ2VfcmVjb3JkcyA9IGNvbXBhcmVfZGljdF9ibG9icyhvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwKKyAgICAgICAgICAgIGJsb2IxLCBibG9iMiwgRmFsc2UsIEZhbHNlKQorCisgICAgICAgIHZhcl9jaGFuZ2VzID0ge30KKyAgICAgICAgZm9yIHggaW4gY2hhbmdlX3JlY29yZHM6CisgICAgICAgICAgICBvbGR2YWx1ZSA9ICJkZWZhdWx0IiBpZiAoImRlZmF1bHQiIGluIHgub2xkdmFsdWUpIGVsc2UgeC5vbGR2YWx1ZQorICAgICAgICAgICAgdmFyX2NoYW5nZXNbeC5maWVsZG5hbWVdID0gKG9sZHZhbHVlLCB4Lm5ld3ZhbHVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdG1hcCwgdmFyX2NoYW5nZXMsICJEZWZhdWx0cyBub3Qgc2V0IHByb3Blcmx5IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGVlNmExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5CkBAIC0wLDAgKzEsMjEgQEAKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCBvZS5xYQorCitjbGFzcyBUZXN0RWxmKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9tYWNoaW5lX25hbWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGVsZl9tYWNoaW5lX3RvX3N0cmluZygpCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAyKSwgIlNQQVJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMyksICJ4ODYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDA4KSwgIk1JUFMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDE0KSwgIlBvd2VyUEMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDI4KSwgIkFSTSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MkEpLCAiU3VwZXJIIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzMiksICJJQS02NCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4M0UpLCAieDg2LTY0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhCNyksICJBQXJjaDY0IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAwKSwgIlVua25vd24gKDApIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhERUFEQkVFRiksICJVbmtub3duICgzNzM1OTI4NTU5KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKCJmb29iYXIiKSwgIlVua25vd24gKCdmb29iYXInKSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9saWNlbnNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvbGljZW5zZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2Y5MWZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvbGljZW5zZS5weQpAQCAtMCwwICsxLDk5IEBACitmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IFRlc3RDYXNlCitpbXBvcnQgb2UubGljZW5zZQorCitjbGFzcyBTZWVuVmlzaXRvcihvZS5saWNlbnNlLkxpY2Vuc2VWaXNpdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuc2VlbiA9IFtdCisgICAgICAgIG9lLmxpY2Vuc2UuTGljZW5zZVZpc2l0b3IuX19pbml0X18oc2VsZikKKworICAgIGRlZiB2aXNpdF9TdHIoc2VsZiwgbm9kZSk6CisgICAgICAgIHNlbGYuc2Vlbi5hcHBlbmQobm9kZS5zKQorCitjbGFzcyBUZXN0U2luZ2xlTGljZW5zZShUZXN0Q2FzZSk6CisgICAgbGljZW5zZXMgPSBbCisgICAgICAgICJHUEx2MiIsCisgICAgICAgICJMR1BMLTIuMCIsCisgICAgICAgICJBcnRpc3RpYyIsCisgICAgICAgICJNSVQiLAorICAgICAgICAiR1BMdjMrIiwKKyAgICAgICAgIkZPT19CQVIiLAorICAgIF0KKyAgICBpbnZhbGlkX2xpY2Vuc2VzID0gWyJHUEwvQlNEIl0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcGFyc2UobGljZW5zZXN0cik6CisgICAgICAgIHZpc2l0b3IgPSBTZWVuVmlzaXRvcigpCisgICAgICAgIHZpc2l0b3IudmlzaXRfc3RyaW5nKGxpY2Vuc2VzdHIpCisgICAgICAgIHJldHVybiB2aXNpdG9yLnNlZW4KKworICAgIGRlZiB0ZXN0X3NpbmdsZV9saWNlbnNlcyhzZWxmKToKKyAgICAgICAgZm9yIGxpY2Vuc2UgaW4gc2VsZi5saWNlbnNlczoKKyAgICAgICAgICAgIGxpY2Vuc2VzID0gc2VsZi5wYXJzZShsaWNlbnNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGljZW5zZXMsIFtsaWNlbnNlXSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfbGljZW5zZXMoc2VsZik6CisgICAgICAgIGZvciBsaWNlbnNlIGluIHNlbGYuaW52YWxpZF9saWNlbnNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob2UubGljZW5zZS5JbnZhbGlkTGljZW5zZSkgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5wYXJzZShsaWNlbnNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubGljZW5zZSwgbGljZW5zZSkKKworY2xhc3MgVGVzdFNpbXBsZUNvbWJpbmF0aW9ucyhUZXN0Q2FzZSk6CisgICAgdGVzdHMgPSB7CisgICAgICAgICJGT08mQkFSIjogWyJGT08iLCAiQkFSIl0sCisgICAgICAgICJCQVogJiBNT08iOiBbIkJBWiIsICJNT08iXSwKKyAgICAgICAgIkFMUEhBfEJFVEEiOiBbIkFMUEhBIl0sCisgICAgICAgICJCQVomTU9PfEZPTyI6IFsiRk9PIl0sCisgICAgICAgICJGT08mQkFSfEJBWiI6IFsiRk9PIiwgIkJBUiJdLAorICAgIH0KKyAgICBwcmVmZXJyZWQgPSBbIkFMUEhBIiwgIkZPTyIsICJCQVIiXQorCisgICAgZGVmIHRlc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGRlZiBjaG9vc2UoYSwgYik6CisgICAgICAgICAgICBpZiBhbGwobGljIGluIHNlbGYucHJlZmVycmVkIGZvciBsaWMgaW4gYik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGEKKworICAgICAgICBmb3IgbGljZW5zZSwgZXhwZWN0ZWQgaW4gc2VsZi50ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgbGljZW5zZXMgPSBvZS5saWNlbnNlLmZsYXR0ZW5lZF9saWNlbnNlcyhsaWNlbnNlLCBjaG9vc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaWNlbnNlcywgZXhwZWN0ZWQpCisKK2NsYXNzIFRlc3RDb21wbGV4Q29tYmluYXRpb25zKFRlc3RTaW1wbGVDb21iaW5hdGlvbnMpOgorICAgIHRlc3RzID0geworICAgICAgICAiRk9PICYgKEJBUiB8IEJBWikmTU9PIjogWyJGT08iLCAiQkFSIiwgIk1PTyJdLAorICAgICAgICAiKEFMUEhBfChCRVRBJlRIRVRBKXxPTUVHQSkmREVMVEEiOiBbIk9NRUdBIiwgIkRFTFRBIl0sCisgICAgICAgICIoKEFMUEhBfEJFVEEpJkZPTyl8QkFaIjogWyJCRVRBIiwgIkZPTyJdLAorICAgICAgICAiKEdQTC0yLjB8UHJvcHJpZXRhcnkpJkJTRC00LWNsYXVzZSZNSVQiOiBbIkdQTC0yLjAiLCAiQlNELTQtY2xhdXNlIiwgIk1JVCJdLAorICAgIH0KKyAgICBwcmVmZXJyZWQgPSBbIkJBUiIsICJPTUVHQSIsICJCRVRBIiwgIkdQTC0yLjAiXQorCitjbGFzcyBUZXN0SXNJbmNsdWRlZChUZXN0Q2FzZSk6CisgICAgdGVzdHMgPSB7CisgICAgICAgICgiRk9PIHwgQkFSIiwgTm9uZSwgTm9uZSk6CisgICAgICAgICAgICBbVHJ1ZSwgWyJGT08iXV0sCisgICAgICAgICgiRk9PIHwgQkFSIiwgTm9uZSwgIkZPTyIpOgorICAgICAgICAgICAgW1RydWUsIFsiQkFSIl1dLAorICAgICAgICAoIkZPTyB8IEJBUiIsICJCQVIiLCBOb25lKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkJBUiJdXSwKKyAgICAgICAgKCJGT08gfCBCQVIgJiBGT09CQVIiLCAiKkJBUiIsIE5vbmUpOgorICAgICAgICAgICAgW1RydWUsIFsiQkFSIiwgIkZPT0JBUiJdXSwKKyAgICAgICAgKCJGT08gfCBCQVIgJiBGT09CQVIiLCBOb25lLCAiRk9PKiIpOgorICAgICAgICAgICAgW0ZhbHNlLCBbIkZPT0JBUiJdXSwKKyAgICAgICAgKCIoRk9PIHwgQkFSKSAmIEZPT0JBUiB8IEJBUkZPTyIsIE5vbmUsICJGT08iKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkJBUiIsICJGT09CQVIiXV0sCisgICAgICAgICgiKEZPTyB8IEJBUikgJiBGT09CQVIgfCBCQVogJiBNT08gJiBCQVJGT08iLCBOb25lLCAiRk9PIik6CisgICAgICAgICAgICBbVHJ1ZSwgWyJCQVoiLCAiTU9PIiwgIkJBUkZPTyJdXSwKKyAgICAgICAgKCJHUEwtMy4wICYgR1BMLTIuMCAmIExHUEwtMi4xIHwgUHJvcHJpZXRhcnkiLCBOb25lLCBOb25lKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkdQTC0zLjAiLCAiR1BMLTIuMCIsICJMR1BMLTIuMSJdXSwKKyAgICAgICAgKCJHUEwtMy4wICYgR1BMLTIuMCAmIExHUEwtMi4xIHwgUHJvcHJpZXRhcnkiLCBOb25lLCAiR1BMLTMuMCIpOgorICAgICAgICAgICAgW1RydWUsIFsiUHJvcHJpZXRhcnkiXV0sCisgICAgICAgICgiR1BMLTMuMCAmIEdQTC0yLjAgJiBMR1BMLTIuMSB8IFByb3ByaWV0YXJ5IiwgTm9uZSwgIkdQTC0zLjAgUHJvcHJpZXRhcnkiKToKKyAgICAgICAgICAgIFtGYWxzZSwgWyJHUEwtMy4wIl1dCisgICAgfQorCisgICAgZGVmIHRlc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGZvciBhcmdzLCBleHBlY3RlZCBpbiBzZWxmLnRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpc19pbmNsdWRlZCwgbGljZW5zZXMgPSBvZS5saWNlbnNlLmlzX2luY2x1ZGVkKAorICAgICAgICAgICAgICAgIGFyZ3NbMF0sIChhcmdzWzFdIG9yICcnKS5zcGxpdCgpLCAoYXJnc1syXSBvciAnJykuc3BsaXQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXNfaW5jbHVkZWQsIGV4cGVjdGVkWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGljZW5zZXMsIGV4cGVjdGVkWzFdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvcGF0aC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3BhdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhMjdjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3BhdGgucHkKQEAgLTAsMCArMSw4OSBAQAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQoraW1wb3J0IG9lLCBvZS5wYXRoCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgc2h1dGlsCisKK2NsYXNzIFRlc3RSZWFsUGF0aChUZXN0Q2FzZSk6CisgICAgRElSUyA9IFsgImEiLCAiYiIsICJldGMiLCAic2JpbiIsICJ1c3IiLCAidXNyL2JpbiIsICJ1c3IvYmluWCIsICJ1c3Ivc2JpbiIsICJ1c3IvaW5jbHVkZSIsICJ1c3IvaW5jbHVkZS9nZGJtIiBdCisgICAgRklMRVMgPSBbICJldGMvcGFzc3dkIiwgImIvZmlsZSIgXQorICAgIExJTktTID0gWworICAgICAgICAoICJiaW4iLCAgICAgICAgICAgICAiL3Vzci9iaW4iLCAgICAgICAgICAgICAiL3Vzci9iaW4iICksCisgICAgICAgICggImJpblgiLCAgICAgICAgICAgICJ1c3IvYmluWCIsICAgICAgICAgICAgICIvdXNyL2JpblgiICksCisgICAgICAgICggImMiLCAgICAgICAgICAgICAgICJicm9rZW4iLCAgICAgICAgICAgICAgICIvYnJva2VuIiApLAorICAgICAgICAoICJldGMvcGFzc3dkLTEiLCAgICAicGFzc3dkIiwgICAgICAgICAgICAgICAiL2V0Yy9wYXNzd2QiICksCisgICAgICAgICggImV0Yy9wYXNzd2QtMiIsICAgICJwYXNzd2QtMSIsICAgICAgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKKyAgICAgICAgKCAiZXRjL3Bhc3N3ZC0zIiwgICAgIi9ldGMvcGFzc3dkLTEiLCAgICAgICAgIi9ldGMvcGFzc3dkIiApLAorICAgICAgICAoICJldGMvc2hhZG93LTEiLCAgICAiL2V0Yy9zaGFkb3ciLCAgICAgICAgICAiL2V0Yy9zaGFkb3ciICksCisgICAgICAgICggImV0Yy9zaGFkb3ctMiIsICAgICIvZXRjL3NoYWRvdy0xIiwgICAgICAgICIvZXRjL3NoYWRvdyIgKSwKKyAgICAgICAgKCAicHJvZy1BIiwgICAgICAgICAgImJpbi9wcm9nLUEiLCAgICAgICAgICAgIi91c3IvYmluL3Byb2ctQSIgKSwKKyAgICAgICAgKCAicHJvZy1CIiwgICAgICAgICAgIi9iaW4vcHJvZy1CIiwgICAgICAgICAgIi91c3IvYmluL3Byb2ctQiIgKSwKKyAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUMiLCAgIi4uLy4uL3NiaW4vcHJvZy1DIiwgICAgIi9zYmluL3Byb2ctQyIgKSwKKyAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUQiLCAgIi9zYmluL3Byb2ctRCIsICAgICAgICAgIi9zYmluL3Byb2ctRCIgKSwKKyAgICAgICAgKCAidXNyL2JpblgvcHJvZy1FIiwgIi4uL3NiaW4vcHJvZy1FIiwgICAgICAgTm9uZSApLAorICAgICAgICAoICJ1c3IvYmluL3Byb2ctRiIsICAiLi4vLi4vLi4vc2Jpbi9wcm9nLUYiLCAiL3NiaW4vcHJvZy1GIiApLAorICAgICAgICAoICJsb29wIiwgICAgICAgICAgICAiYS9sb29wIiwgICAgICAgICAgICAgICBOb25lICksCisgICAgICAgICggImEvbG9vcCIsICAgICAgICAgICIuLi9sb29wIiwgICAgICAgICAgICAgIE5vbmUgKSwKKyAgICAgICAgKCAiYi90ZXN0IiwgICAgICAgICAgImZpbGUvZm9vIiwgICAgICAgICAgICAgIi9iL2ZpbGUvZm9vIiApLAorICAgIF0KKworICAgIExJTktTX1BIWVMgPSBbCisgICAgICAgICggIi4vIiwgICAgICAgICAgIi8iLCAgICAgICAgICAgICAgICAiIiApLAorICAgICAgICAoICJiaW5YL3Byb2ctRSIsICIvdXNyL3NiaW4vcHJvZy1FIiwgIi9zYmluL3Byb2ctRSIgKSwKKyAgICBdCisKKyAgICBFWENFUFRJT05TID0gWworICAgICAgICAoICJsb29wIiwgICBlcnJuby5FTE9PUCApLAorICAgICAgICAoICJiL3Rlc3QiLCBlcnJuby5FTk9FTlQgKSwKKyAgICBdCisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgI29zLnN5c3RlbSgidHJlZSAtRiAlcyIgJSBzZWxmLnRtcGRpcikKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeCA9ICJvZS10ZXN0X3BhdGgiKQorICAgICAgICBzZWxmLnJvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50bXBkaXIsICJSIikKKworICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50bXBkaXIsICJfcmVhbCIpKQorICAgICAgICBvcy5zeW1saW5rKCJfcmVhbCIsIHNlbGYucm9vdCkKKworICAgICAgICBmb3IgZCBpbiBzZWxmLkRJUlM6CisgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBkKSkKKyAgICAgICAgZm9yIGYgaW4gc2VsZi5GSUxFUzoKKyAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZiksICJ3IikKKyAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LUzoKKyAgICAgICAgICAgIG9zLnN5bWxpbmsobFsxXSwgb3MucGF0aC5qb2luKHNlbGYucm9vdCwgbFswXSkpCisKKyAgICBkZWYgX19yZWFscGF0aChzZWxmLCBmaWxlLCB1c2VfcGh5c2RpciwgYXNzdW1lX2RpciA9IFRydWUpOgorICAgICAgICByZXR1cm4gb2UucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBmaWxlKSwgc2VsZi5yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfcGh5c2RpciwgYXNzdW1lX2RpciA9IGFzc3VtZV9kaXIpCisKKyAgICBkZWYgdGVzdF9ub3JtKHNlbGYpOgorICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTOgorICAgICAgICAgICAgaWYgbFsyXSA9PSBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRhcmdldF9wID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIFRydWUpCisgICAgICAgICAgICB0YXJnZXRfbCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBGYWxzZSkKKworICAgICAgICAgICAgaWYgbFsyXSAhPSBGYWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhcmdldF9wLCB0YXJnZXRfbCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMl0sIHRhcmdldF9wW2xlbihzZWxmLnJvb3QpOl0pCisKKyAgICBkZWYgdGVzdF9waHlzKHNlbGYpOgorICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTX1BIWVM6CisgICAgICAgICAgICB0YXJnZXRfcCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBUcnVlKQorICAgICAgICAgICAgdGFyZ2V0X2wgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsxXSwgdGFyZ2V0X3BbbGVuKHNlbGYucm9vdCk6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsyXSwgdGFyZ2V0X2xbbGVuKHNlbGYucm9vdCk6XSkKKworICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6CisgICAgICAgIGZvciBlIGluIHNlbGYuRVhDRVBUSU9OUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoT1NFcnJvciwgcidcW0Vycm5vICV1XF0nICUgZVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19yZWFscGF0aCwgZVswXSwgRmFsc2UsIEZhbHNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdHlwZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi90eXBlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjUzYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdHlwZXMucHkKQEAgLTAsMCArMSw1MCBAQAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQorZnJvbSBvZS5tYWtldHlwZSBpbXBvcnQgY3JlYXRlCisKK2NsYXNzIFRlc3RCb29sZWFuVHlwZShUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3JlYXRlLCAnJywgJ2Jvb2xlYW4nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjcmVhdGUsICdmb28nLCAnYm9vbGVhbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3JlYXRlLCBvYmplY3QoKSwgJ2Jvb2xlYW4nKQorCisgICAgZGVmIHRlc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgneScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3llcycsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJzEnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0JywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndHJ1ZScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ1RSVUUnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0cnVFJywgJ2Jvb2xlYW4nKSkKKworICAgIGRlZiB0ZXN0X2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnbicsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdubycsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCcwJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2YnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZmFsc2UnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnRkFMU0UnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZmFMc2UnLCAnYm9vbGVhbicpKQorCisgICAgZGVmIHRlc3RfYm9vbF9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGUoJ24nLCAnYm9vbGVhbicpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjcmVhdGUoJ24nLCAnYm9vbGVhbicpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZSgneScsICdib29sZWFuJyksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSwgRmFsc2UpCisKK2NsYXNzIFRlc3RMaXN0KFRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0TGlzdEVxdWFsKHNlbGYsIHZhbHVlLCB2YWxpZCwgc2VwPU5vbmUpOgorICAgICAgICBvYmogPSBjcmVhdGUodmFsdWUsICdsaXN0Jywgc2VwYXJhdG9yPXNlcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmosIHZhbGlkKQorICAgICAgICBpZiBzZXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5zZXBhcmF0b3IsIHNlcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIob2JqKSwgb2JqLnNlcGFyYXRvci5qb2luKG9iaikpCisKKyAgICBkZWYgdGVzdF9saXN0X25vc2VwKHNlbGYpOgorICAgICAgICB0ZXN0bGlzdCA9IFsnYWxwaGEnLCAnYmV0YScsICd0aGV0YSddCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYSBiZXRhIHRoZXRhJywgdGVzdGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYSAgYmV0YVx0dGhldGEnLCB0ZXN0bGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhJywgWydhbHBoYSddKQorCisgICAgZGVmIHRlc3RfbGlzdF91c2Vyc2VwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnZm9vOmJhcicsIFsnZm9vJywgJ2JhciddLCAnOicpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdmb286YmFyOmJheicsIFsnZm9vJywgJ2JhcicsICdiYXonXSwgJzonKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmI2YzE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkKQEAgLTAsMCArMSw1MSBAQAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQorZnJvbSBvZS51dGlscyBpbXBvcnQgcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0sIHRyaW1fdmVyc2lvbgorCitjbGFzcyBUZXN0UGFja2FnZXNGaWx0ZXJPdXRTeXN0ZW0oVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbHRlcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbSB3b3Jrcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBiYgorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDYW5ub3QgaW1wb3J0IGJiIikKKworICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQorICAgICAgICBkLnNldFZhcigiUE4iLCAiZm9vIikKKworICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kb2MgZm9vLWRldiIpCisgICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFtdKQorCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRvYyBmb28tZGF0YSBmb28tZGV2IikKKyAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgWyJmb28tZGF0YSJdKQorCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWxvY2FsZS1lbi1nYiIpCisgICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFtdKQorCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRhdGEgZm9vLWxvY2FsZS1lbi1nYiIpCisgICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFsiZm9vLWRhdGEiXSkKKworCitjbGFzcyBUZXN0VHJpbVZlcnNpb24oVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZlcnNpb25fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0cmltX3ZlcnNpb24oTm9uZSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCgxLCAyLCAzKSwgMikKKworICAgIGRlZiB0ZXN0X251bV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB0cmltX3ZlcnNpb24oIjEuMi4zIiwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHRyaW1fdmVyc2lvbigiMS4yLjMiLCAtMSkKKworICAgIGRlZiB0ZXN0X3ZhbGlkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAxKSwgIjEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAyKSwgIjEuMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDMpLCAiMS4yLjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCA0KSwgIjEuMi4zIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWU3NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CkBAIC0wLDAgKzEsMTUgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgQ29tbWFuZCwgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEJ1aWxkaGlzdG9yeURpZmZUZXN0cyhCdWlsZGhpc3RvcnlCYXNlKToKKworICAgIEBPRVRlc3RJRCgyOTUpCisgICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2RpZmYoc2VsZik6CisgICAgICAgIHRhcmdldCA9ICd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJworICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIxXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249VHJ1ZSkKKyAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMFwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9VHJ1ZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJidWlsZGhpc3RvcnktZGlmZiAtcCAlcyIgJSBnZXRfYmJfdmFyKCdCVUlMREhJU1RPUllfRElSJykpCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICdQUiBjaGFuZ2VkIGZyb20gInIxIiB0byAicjAiJworICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0ZWRfb3V0cHV0IGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iRGlkIG5vdCBmaW5kIGV4cGVjdGVkIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2OTY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CkBAIC0wLDAgKzEsODYgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycworaW1wb3J0IHN1YnByb2Nlc3MsIG9zCitpbXBvcnQgb2UucGF0aAorCitjbGFzcyBWZXJzaW9uT3JkZXJpbmcoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAjIHZlcnNpb24xLCB2ZXJzaW9uMiwgc29ydCBvcmRlcgorICAgIHRlc3RzID0gKAorICAgICAgICAoIjEuMCIsICIxLjAiLCAwKSwKKyAgICAgICAgKCIxLjAiLCAiMi4wIiwgLTEpLAorICAgICAgICAoIjIuMCIsICIxLjAiLCAxKSwKKyAgICAgICAgKCIyLjAtcmMiLCAiMi4wIiwgMSksCisgICAgICAgICgiMi4wfnJjIiwgIjIuMCIsIC0xKSwKKyAgICAgICAgKCIxLjJyYzIiLCAiMS4yLjAiLCAtMSkKKyAgICAgICAgKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcENsYXNzKCkKKworICAgICAgICAjIEJ1aWxkIHRoZSB0b29scyB3ZSBuZWVkIGFuZCBwb3B1bGF0ZSBhIHN5c3Jvb3QKKyAgICAgICAgYml0YmFrZSgiZHBrZy1uYXRpdmUgb3BrZy1uYXRpdmUgcnBtLW5hdGl2ZSBweXRob24zLW5hdGl2ZSIpCisgICAgICAgIGJpdGJha2UoImJ1aWxkLXN5c3Jvb3RzIC1jIGJ1aWxkX25hdGl2ZV9zeXNyb290IikKKworICAgICAgICAjIEdldCB0aGUgcGF0aHMgc28gd2UgY2FuIHBvaW50IGludG8gdGhlIHN5c3Jvb3QgY29ycmVjdGx5CisgICAgICAgIHZhcnMgPSBnZXRfYmJfdmFycyhbIlNUQUdJTkdfRElSIiwgIkJVSUxEX0FSQ0giLCAiYmluZGlyX25hdGl2ZSIsICJsaWJkaXJfbmF0aXZlIl0pCisgICAgICAgIGNscy5zdGFnaW5nID0gb2UucGF0aC5qb2luKHZhcnNbIlNUQUdJTkdfRElSIl0sIHZhcnNbIkJVSUxEX0FSQ0giXSkKKyAgICAgICAgY2xzLmJpbmRpciA9IG9lLnBhdGguam9pbihjbHMuc3RhZ2luZywgdmFyc1siYmluZGlyX25hdGl2ZSJdKQorICAgICAgICBjbHMubGliZGlyID0gb2UucGF0aC5qb2luKGNscy5zdGFnaW5nLCB2YXJzWyJsaWJkaXJfbmF0aXZlIl0pCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgSnVzdCBmb3IgY29udmVuaWVuY2UKKyAgICAgICAgc2VsZi5zdGFnaW5nID0gdHlwZShzZWxmKS5zdGFnaW5nCisgICAgICAgIHNlbGYuYmluZGlyID0gdHlwZShzZWxmKS5iaW5kaXIKKyAgICAgICAgc2VsZi5saWJkaXIgPSB0eXBlKHNlbGYpLmxpYmRpcgorCisgICAgQE9FVGVzdElEKDE4ODApCisgICAgZGVmIHRlc3RfZHBrZyhzZWxmKToKKyAgICAgICAgZm9yIHZlcjEsIHZlcjIsIHNvcnQgaW4gc2VsZi50ZXN0czoKKyAgICAgICAgICAgIG9wID0geyAtMTogIjw8IiwgMDogIj0iLCAxOiAiPj4iIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAiZHBrZyIpLCAiLS1jb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgICAgICAgICAgIyBOb3cgZG8gaXQgYWdhaW4gYnV0IHdpdGggaW5jb3JyZWN0IG9wZXJhdGlvbnMKKyAgICAgICAgICAgIG9wID0geyAtMTogIj4+IiwgMDogIj4+IiwgMTogIjw8IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgImRwa2ciKSwgIi0tY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICAgICAgICAgICMgTm93IGRvIGl0IGFnYWluIGJ1dCB3aXRoIGluY29ycmVjdCBvcGVyYXRpb25zCisgICAgICAgICAgICBvcCA9IHsgLTE6ICI9IiwgMDogIjw8IiwgMTogIj0iIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAiZHBrZyIpLCAiLS1jb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgIEBPRVRlc3RJRCgxODgxKQorICAgIGRlZiB0ZXN0X29wa2coc2VsZik6CisgICAgICAgIGZvciB2ZXIxLCB2ZXIyLCBzb3J0IGluIHNlbGYudGVzdHM6CisgICAgICAgICAgICBvcCA9IHsgLTE6ICI8PCIsIDA6ICI9IiwgMTogIj4+IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgIm9wa2ciKSwgImNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgICAgICAgICAjIE5vdyBkbyBpdCBhZ2FpbiBidXQgd2l0aCBpbmNvcnJlY3Qgb3BlcmF0aW9ucworICAgICAgICAgICAgb3AgPSB7IC0xOiAiPj4iLCAwOiAiPj4iLCAxOiAiPDwiIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAib3BrZyIpLCAiY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICAgICAgICAgICMgTm93IGRvIGl0IGFnYWluIGJ1dCB3aXRoIGluY29ycmVjdCBvcGVyYXRpb25zCisgICAgICAgICAgICBvcCA9IHsgLTE6ICI9IiwgMDogIjw8IiwgMTogIj0iIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAib3BrZyIpLCAiY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICBAT0VUZXN0SUQoMTg4MikKKyAgICBkZWYgdGVzdF9ycG0oc2VsZik6CisgICAgICAgICMgTmVlZCB0byB0ZWxsIHRoZSBQeXRob24gYmluZGluZ3Mgd2hlcmUgdG8gZmluZCBpdHMgY29uZmlndXJhdGlvbgorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBlbnZbIlJQTV9DT05GSUdESVIiXSA9IG9lLnBhdGguam9pbihzZWxmLmxpYmRpciwgInJwbSIpCisKKyAgICAgICAgZm9yIHZlcjEsIHZlcjIsIHNvcnQgaW4gc2VsZi50ZXN0czoKKyAgICAgICAgICAgICMgVGhlIG9ubHkgd2F5IHRvIHRlc3QgcnBtIGlzIHZpYSB0aGUgUHl0aG9uIG1vZHVsZSwgc28gd2UgbmVlZCB0bworICAgICAgICAgICAgIyBleGVjdXRlIHB5dGhvbjMtbmF0aXZlLiAgbGFiZWxDb21wYXJlIHJldHVybnMgLTEvMC8xIChsaWtlIHN0cmNtcCkKKyAgICAgICAgICAgICMgc28gYWRkIDEwMCBhbmQgdXNlIHRoYXQgYXMgdGhlIGV4aXQgY29kZS4KKyAgICAgICAgICAgIGNvbW1hbmQgPSAob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAicHl0aG9uMy1uYXRpdmUiLCAicHl0aG9uMyIpLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IHN5cywgcnBtOyB2MT0oTm9uZSwgXCIlc1wiLCBOb25lKTsgdjI9KE5vbmUsIFwiJXNcIiwgTm9uZSk7IHN5cy5leGl0KHJwbS5sYWJlbENvbXBhcmUodjEsIHYyKSArIDEwMCkiICUgKHZlcjEsIHZlcjIpKQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHN0YXR1cywgKDk5LCAxMDAsIDEwMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cyAtIDEwMCwgc29ydCwgIiVzICVzICglZCkgZmFpbGVkIiAlICh2ZXIxLCB2ZXIyLCBzb3J0KSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BrZ2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wa2dkYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNGNhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wa2dkYXRhLnB5CkBAIC0wLDAgKzEsMjI0IEBACitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGZubWF0Y2gKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgT2VQa2dkYXRhVXRpbFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihPZVBrZ2RhdGFVdGlsVGVzdHMsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gcGtnZGF0YQorICAgICAgICBjbHMubG9nZ2VyLmluZm8oJ1J1bm5pbmcgYml0YmFrZSB0byBnZW5lcmF0ZSBwa2dkYXRhJykKKyAgICAgICAgYml0YmFrZSgnYnVzeWJveCB6bGliIG00JykKKworICAgIEBPRVRlc3RJRCgxMjAzKQorICAgIGRlZiB0ZXN0X2xvb2t1cF9wa2coc2VsZik6CisgICAgICAgICMgRm9yd2FyZCB0ZXN0cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnICJ6bGliIGJ1c3lib3giJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejFcbmJ1c3lib3gnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIHpsaWItZGV2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliei1kZXYnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKKyAgICAgICAgIyBSZXZlcnNlIHRlc3RzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgImxpYnoxIGJ1c3lib3giJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYlxuYnVzeWJveCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgbGliei1kZXYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliLWRldicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQorCisgICAgQE9FVGVzdElEKDEyMDUpCisgICAgZGVmIHRlc3RfcmVhZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQTiBsaWJ6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWInKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBLRyBsaWJ6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQS0dTSVpFIG00JykKKyAgICAgICAgcGtnc2l6ZSA9IGludChyZXN1bHQub3V0cHV0LnN0cmlwKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihwa2dzaXplLCAxLCAiU2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE5OCkKKyAgICBkZWYgdGVzdF9maW5kX3BhdGgoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvbGliL2xpYnouc28uMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWI6IC9saWIvbGliei5zby4xJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3IvYmluL200JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbTQ6IC91c3IvYmluL200JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC9ub3QvZXhpc3QnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBVbmFibGUgdG8gZmluZCBhbnkgcGFja2FnZSBwcm9kdWNpbmcgcGF0aCAvbm90L2V4aXN0JykKKworICAgIEBPRVRlc3RJRCgxMjA0KQorICAgIGRlZiB0ZXN0X2xvb2t1cF9yZWNpcGUoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgImxpYnotc3RhdGljZGV2IGJ1c3lib3giJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYlxuYnVzeWJveCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgbGliei1kYmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCisKKyAgICBAT0VUZXN0SUQoMTIwMikKKyAgICBkZWYgdGVzdF9saXN0X3BrZ3Moc2VsZik6CisgICAgICAgICMgTm8gYXJndW1lbnRzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncycpCisgICAgICAgIHBrZ2xpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBObyBwa2dzcGVjLCBydW50aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcicpCisgICAgICAgIHBrZ2xpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYicpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwa2dsaXN0LnJlbW92ZSgnemxpYi1wdGVzdCcpICMgaW4gY2FzZSBwdGVzdCBpcyBkaXNhYmxlZAorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ3psaWInLCAnemxpYi1kYmcnLCAnemxpYi1kZXYnLCAnemxpYi1kb2MnLCAnemxpYi1zdGF0aWNkZXYnXSwgIlBhY2thZ2VzIGxpc3RlZCBhZnRlciByZW1vdmU6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkLCBydW50aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC1yJykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBrZ2xpc3QucmVtb3ZlKCdsaWJ6LXB0ZXN0JykgIyBpbiBjYXNlIHB0ZXN0IGlzIGRpc2FibGVkCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnbGliei1kYmcnLCAnbGliei1kZXYnLCAnbGliei1kb2MnLCAnbGliei1zdGF0aWNkZXYnLCAnbGliejEnXSwgIlBhY2thZ2VzIGxpc3RlZCBhZnRlciByZW1vdmU6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCB1bnBhY2thZ2VkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC11JykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItbG9jYWxlJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHVucGFja2FnZWQsIHJ1bnRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXUgLXInKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1sb2NhbGUnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgcGtnc3BlYworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAiKi1kKiInKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ3psaWItZGJnJywgJ3psaWItZGV2JywgJ3psaWItZG9jJ10sICJQYWNrYWdlcyBsaXN0ZWQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCBwa2dzcGVjLCBydW50aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC1yICIqLWQqIicpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnbGliei1kYmcnLCAnbGliei1kZXYnLCAnbGliei1kb2MnXSwgIlBhY2thZ2VzIGxpc3RlZDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMjAxKQorICAgIGRlZiB0ZXN0X2xpc3RfcGtnX2ZpbGVzKHNlbGYpOgorICAgICAgICBkZWYgc3BsaXRvdXRwdXQob3V0cHV0KToKKyAgICAgICAgICAgIGZpbGVzID0ge30KKyAgICAgICAgICAgIGN1cnBrZyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdcdCcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY3VycGtnLCAnVW5leHBlY3RlZCBub24tcGFja2FnZSBsaW5lOlxuJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZXNbY3VycGtnXS5hcHBlbmQobGluZS5zdHJpcCgpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lLnJzdHJpcCgpLmVuZHN3aXRoKCc6JyksICdJbnZhbGlkIHBhY2thZ2UgbGluZSBpbiBvdXRwdXQ6XG4lcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICBjdXJwa2cgPSBsaW5lLnNwbGl0KCc6JylbMF0KKyAgICAgICAgICAgICAgICAgICAgZmlsZXNbY3VycGtnXSA9IFtdCisgICAgICAgICAgICByZXR1cm4gZmlsZXMKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnYmFzZV9saWJkaXInLCAnbGliZGlyJywgJ2luY2x1ZGVkaXInLCAnbWFuZGlyJ10pCisgICAgICAgIGJhc2VfbGliZGlyID0gYmJfdmFyc1snYmFzZV9saWJkaXInXQorICAgICAgICBsaWJkaXIgPSBiYl92YXJzWydsaWJkaXInXQorICAgICAgICBpbmNsdWRlZGlyID0gYmJfdmFyc1snaW5jbHVkZWRpciddCisgICAgICAgIG1hbmRpciA9IGJiX3ZhcnNbJ21hbmRpciddCisgICAgICAgICMgVGVzdCByZWNpcGUtc3BhY2UgcGFja2FnZSBuYW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIHpsaWItZGV2IHpsaWItZG9jJykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKKyAgICAgICAgIyBUZXN0IHJ1bnRpbWUgcGFja2FnZSBuYW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1yIGxpYnoxIGxpYnotZGV2JykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGVzWydsaWJ6MSddKSwgMSkKKyAgICAgICAgbGlic3BlYyA9IG9zLnBhdGguam9pbihiYXNlX2xpYmRpciwgJ2xpYnouc28uMS4qJykKKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBmb3IgZmlsZWl0ZW0gaW4gZmlsZXNbJ2xpYnoxJ106CisgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hjYXNlKGZpbGVpdGVtLCBsaWJzcGVjKToKKyAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdDb3VsZCBub3QgZmluZCB6bGliIGxpYnJhcnkgZmlsZSAlcyBpbiBsaWJ6MSBwYWNrYWdlIGZpbGUgbGlzdDogJXMnICUgKGxpYnNwZWMsIGZpbGVzWydsaWJ6MSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKKyAgICAgICAgIyBUZXN0IHJlY2lwZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliJykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3psaWItbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgKGlnbm9yZSBwdGVzdCwgbWlnaHQgbm90IGJlIHRoZXJlIGRlcGVuZGluZyBvbiBjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ3psaWItc3RhdGljZGV2J10pCisgICAgICAgICMgVGVzdCByZWNpcGUsIHJ1bnRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtcicpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ2xpYnotZG9jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snbGliei1zdGF0aWNkZXYnXSkKKyAgICAgICAgIyBUZXN0IHJlY2lwZSwgdW5wYWNrYWdlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC11JykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpICMgdGhpcyBpcyB0aGUga2V5IG9uZQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWyd6bGliLXN0YXRpY2RldiddKQorICAgICAgICAjIFRlc3QgcmVjaXBlLCBydW50aW1lLCB1bnBhY2thZ2VkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXIgLXUnKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpICMgdGhpcyBpcyB0aGUga2V5IG9uZQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snbGliei1kb2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWydsaWJ6LXN0YXRpY2RldiddKQorCisgICAgQE9FVGVzdElEKDEyMDApCisgICAgZGVmIHRlc3RfZ2xvYihzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdwa2dkYXRhcWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHBrZ2xpc3RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdwa2dsaXN0JykKKyAgICAgICAgd2l0aCBvcGVuKHBrZ2xpc3RmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdsaWJ6MVxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ2J1c3lib3hcbicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotZGV2IicgJSBwa2dsaXN0ZmlsZSkKKyAgICAgICAgZGVzaXJlZHJlc3VsdCA9IFsnbGliei1kZXYnLCAnYnVzeWJveC1kZXYnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpLCBzb3J0ZWQoZGVzaXJlZHJlc3VsdCkpCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBzaG91bGQgbm90IGVycm9yIChiZWNhdXNlIHdoZW4gd2UgdXNlIHRoaXMgZHVyaW5nIHJvb3RmcyBjb25zdHJ1Y3Rpb24sIHNvbWV0aW1lcyB0aGUgY29tcGxlbWVudGFyeSBwYWNrYWdlIHdvbid0IGV4aXN0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLW5vbmV4aXN0ZW50IicgJSBwa2dsaXN0ZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnJykKKyAgICAgICAgIyBUZXN0IGV4Y2x1ZGUgb3B0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotZGV2ICotZGJnIiAteCAiXmxpYnoiJyAlIHBrZ2xpc3RmaWxlKQorICAgICAgICByZXN1bHRsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotZGV2JywgcmVzdWx0bGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1kYmcnLCByZXN1bHRsaXN0KQorCisgICAgQE9FVGVzdElEKDEyMDYpCisgICAgZGVmIHRlc3Rfc3BlY2lmeV9wa2dkYXRhZGlyKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCAtcCAlcyBsb29rdXAtcGtnIHpsaWInICUgZ2V0X2JiX3ZhcignUEtHREFUQV9ESVInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejEnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcHJzZXJ2aWNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcHJzZXJ2aWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OWU1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wcnNlcnZpY2UucHkKQEAgLTAsMCArMSwxMzEgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgZGF0ZXRpbWUKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLm5ldHdvcmsgaW1wb3J0IGdldF9mcmVlX3BvcnQKKworY2xhc3MgQml0YmFrZVByVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKEJpdGJha2VQclRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMucGtnZGF0YV9kaXIgPSBnZXRfYmJfdmFyKCdQS0dEQVRBX0RJUicpCisKKyAgICBkZWYgZ2V0X3ByX3ZlcnNpb24oc2VsZiwgcGFja2FnZV9uYW1lKToKKyAgICAgICAgcGFja2FnZV9kYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wa2dkYXRhX2RpciwgJ3J1bnRpbWUnLCBwYWNrYWdlX25hbWUpCisgICAgICAgIHBhY2thZ2VfZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUocGFja2FnZV9kYXRhX2ZpbGUpCisgICAgICAgIGZpbmRfcHIgPSByZS5zZWFyY2goIlBLR1I6IHJbMC05XStcLihbMC05XSspIiwgcGFja2FnZV9kYXRhKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9wciwgIk5vIFBLRyByZXZpc2lvbiBmb3VuZCBpbiAlcyIgJSBwYWNrYWdlX2RhdGFfZmlsZSkKKyAgICAgICAgcmV0dXJuIGludChmaW5kX3ByLmdyb3VwKDEpKQorCisgICAgZGVmIGdldF90YXNrX3N0YW1wKHNlbGYsIHBhY2thZ2VfbmFtZSwgcmVjaXBlX3Rhc2spOgorICAgICAgICBzdGFtcGRhdGEgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRhcmdldD1wYWNrYWdlX25hbWUpLnNwbGl0KCcvJykKKyAgICAgICAgcHJlZml4ID0gc3RhbXBkYXRhWy0xXQorICAgICAgICBwYWNrYWdlX3N0YW1wc19wYXRoID0gIi8iLmpvaW4oc3RhbXBkYXRhWzotMV0pCisgICAgICAgIHN0YW1wcyA9IFtdCisgICAgICAgIGZvciBzdGFtcCBpbiBvcy5saXN0ZGlyKHBhY2thZ2Vfc3RhbXBzX3BhdGgpOgorICAgICAgICAgICAgZmluZF9zdGFtcCA9IHJlLm1hdGNoKCIlc1wuJXNcLihbYS16MC05XXszMn0pIiAlIChyZS5lc2NhcGUocHJlZml4KSwgcmVjaXBlX3Rhc2spLCBzdGFtcCkKKyAgICAgICAgICAgIGlmIGZpbmRfc3RhbXA6CisgICAgICAgICAgICAgICAgc3RhbXBzLmFwcGVuZChmaW5kX3N0YW1wLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihzdGFtcHMpID09IDAsIG1zZz0iQ291bmQgbm90IGZpbmQgc3RhbXAgZm9yIHRhc2sgJXMgZm9yIHJlY2lwZSAlcyIgJSAocmVjaXBlX3Rhc2ssIHBhY2thZ2VfbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKHN0YW1wcykgPiAxLCBtc2c9IkZvdW5kIG11bHRpcGxlICVzIHN0YW1wcyBmb3IgdGhlICVzIHJlY2lwZSBpbiB0aGUgJXMgZGlyZWN0b3J5LiIgJSAocmVjaXBlX3Rhc2ssIHBhY2thZ2VfbmFtZSwgcGFja2FnZV9zdGFtcHNfcGF0aCkpCisgICAgICAgIHJldHVybiBzdHIoc3RhbXBzWzBdKQorCisgICAgZGVmIGluY3JlbWVudF9wYWNrYWdlX3ByKHNlbGYsIHBhY2thZ2VfbmFtZSk6CisgICAgICAgIGluY19kYXRhID0gImRvX3BhY2thZ2VfYXBwZW5kKCkge1xuICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fdGVzdF9wcnNlcnYnLCBkKVxufVxuZG9fdGVzdF9wcnNlcnYoKSB7XG5lY2hvIFwiVGhlIGN1cnJlbnQgZGF0ZSBpczogJXNcIlxufSIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYyhwYWNrYWdlX25hbWUsIGluY19kYXRhKQorICAgICAgICByZXMgPSBiaXRiYWtlKHBhY2thZ2VfbmFtZSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMocGFja2FnZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDAsIG1zZz1yZXMub3V0cHV0KQorCisgICAgZGVmIGNvbmZpZ19wcl90ZXN0cyhzZWxmLCBwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZT0ncnBtJywgcHJfc29ja2V0PSdsb2NhbGhvc3Q6MCcpOgorICAgICAgICBjb25maWdfcGFja2FnZV9kYXRhID0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlXyVzIicgJSBwYWNrYWdlX3R5cGUKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnX3BhY2thZ2VfZGF0YSkKKyAgICAgICAgY29uZmlnX3NlcnZlcl9kYXRhID0gJ1BSU0VSVl9IT1NUID0gIiVzIicgJSBwcl9zb2NrZXQKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zZXJ2ZXJfZGF0YSkKKworICAgIGRlZiBydW5fdGVzdF9wcl9zZXJ2aWNlKHNlbGYsIHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlPSdycG0nLCB0cmFja190YXNrPSdkb19wYWNrYWdlJywgcHJfc29ja2V0PSdsb2NhbGhvc3Q6MCcpOgorICAgICAgICBzZWxmLmNvbmZpZ19wcl90ZXN0cyhwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZSwgcHJfc29ja2V0KQorCisgICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQorICAgICAgICBwcl8xID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCisgICAgICAgIHN0YW1wXzEgPSBzZWxmLmdldF90YXNrX3N0YW1wKHBhY2thZ2VfbmFtZSwgdHJhY2tfdGFzaykKKworICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgcHJfMiA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQorICAgICAgICBzdGFtcF8yID0gc2VsZi5nZXRfdGFza19zdGFtcChwYWNrYWdlX25hbWUsIHRyYWNrX3Rhc2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByXzIgLSBwcl8xID09IDEsICJTdGVwIGJldHdlZW4gc2FtZSBwa2cuIHJldmlzaW9uIGlzIGdyZWF0ZXIgdGhhbiAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wXzEgIT0gc3RhbXBfMiwgIkRpZmZlcmVudCBwa2cgcmV2LiBidXQgc2FtZSBzdGFtcDogJXMiICUgc3RhbXBfMSkKKworICAgIGRlZiBydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KHNlbGYsIHBhY2thZ2VfbmFtZSwgcmVwbGFjZV9jdXJyZW50X2RiPVRydWUpOgorICAgICAgICBzZWxmLmNvbmZpZ19wcl90ZXN0cyhwYWNrYWdlX25hbWUpCisKKyAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCisgICAgICAgIHByXzEgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKKworICAgICAgICBleHBvcnRlZF9kYl9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdleHBvcnQuaW5jJykKKyAgICAgICAgZXhwb3J0X3Jlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1wcnNlcnYtdG9vbCBleHBvcnQgJXMiICUgZXhwb3J0ZWRfZGJfcGF0aCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cG9ydF9yZXN1bHQuc3RhdHVzLCAwLCBtc2c9IlBSIFNlcnZpY2UgZGF0YWJhc2UgZXhwb3J0IGZhaWxlZDogJXMiICUgZXhwb3J0X3Jlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhleHBvcnRlZF9kYl9wYXRoKSkKKworICAgICAgICBpZiByZXBsYWNlX2N1cnJlbnRfZGI6CisgICAgICAgICAgICBjdXJyZW50X2RiX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignUEVSU0lTVEVOVF9ESVInKSwgJ3Byc2Vydi5zcWxpdGUzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhjdXJyZW50X2RiX3BhdGgpLCBtc2c9IlBhdGggdG8gY3VycmVudCBQUiBTZXJ2aWNlIGRhdGFiYXNlIGlzIGludmFsaWQ6ICVzIiAlIGN1cnJlbnRfZGJfcGF0aCkKKyAgICAgICAgICAgIG9zLnJlbW92ZShjdXJyZW50X2RiX3BhdGgpCisKKyAgICAgICAgaW1wb3J0X3Jlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1wcnNlcnYtdG9vbCBpbXBvcnQgJXMiICUgZXhwb3J0ZWRfZGJfcGF0aCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBvcy5yZW1vdmUoZXhwb3J0ZWRfZGJfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfcmVzdWx0LnN0YXR1cywgMCwgbXNnPSJQUiBTZXJ2aWNlIGRhdGFiYXNlIGltcG9ydCBmYWlsZWQ6ICVzIiAlIGltcG9ydF9yZXN1bHQub3V0cHV0KQorCisgICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQorICAgICAgICBwcl8yID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByXzIgLSBwcl8xID09IDEsICJTdGVwIGJldHdlZW4gc2FtZSBwa2cuIHJldmlzaW9uIGlzIGdyZWF0ZXIgdGhhbiAxIikKKworICAgIEBPRVRlc3RJRCg5MzApCisgICAgZGVmIHRlc3RfaW1wb3J0X2V4cG9ydF9yZXBsYWNlX2RiKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoJ200JykKKworICAgIEBPRVRlc3RJRCg5MzEpCisgICAgZGVmIHRlc3RfaW1wb3J0X2V4cG9ydF9vdmVycmlkZV9kYihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KCdtNCcsIHJlcGxhY2VfY3VycmVudF9kYj1GYWxzZSkKKworICAgIEBPRVRlc3RJRCg5MzIpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9ycG1fYXJjaF9kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAncnBtJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDkzNCkKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2RlYl9hcmNoX2RlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdkZWInLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoOTMzKQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfaXBrX2FyY2hfZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ2lwaycsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCg5MzUpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9ycG1fYXJjaF9pbmRlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ3JwbScsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCg5MzcpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9kZWJfYXJjaF9pbmRlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ2RlYicsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCg5MzYpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9pcGtfYXJjaF9pbmRlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ2lwaycsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCgxNDE5KQorICAgIGRlZiB0ZXN0X3N0b3BwaW5nX3Byc2VydmljZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlLXByc2VydiAtLWhvc3QgbG9jYWxob3N0IC0tcG9ydCAlcyAtLWxvZ2xldmVsPURFQlVHIC0tc3RhcnQnICUgcG9ydCkKKyAgICAgICAgcmV0ID0gcnVuQ21kKCdiaXRiYWtlLXByc2VydiAtLWhvc3QgbG9jYWxob3N0IC0tcG9ydCAlcyAtLWxvZ2xldmVsPURFQlVHIC0tc3RvcCcgJSBwb3J0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LnN0YXR1cywgMCkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU0ZWE5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKQEAgLTAsMCArMSw2OTggQEAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdXJsbGliLnBhcnNlCisKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzLCBjcmVhdGVfdGVtcF9sYXllcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMgaW1wb3J0IGRldnRvb2wKKwordGVtcGxheWVyZGlyID0gTm9uZQorCitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBnbG9iYWwgdGVtcGxheWVyZGlyCisgICAgdGVtcGxheWVyZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2xxYScpCisgICAgY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCAnc2VsZnRlc3RyZWNpcGV0b29sJykKKyAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIpCisKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgdGVtcGxheWVyZGlyKQorCisKK2NsYXNzIFJlY2lwZXRvb2xCYXNlKGRldnRvb2wuRGV2dG9vbEJhc2UpOgorCisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CisgICAgICAgIHN1cGVyKFJlY2lwZXRvb2xCYXNlLCBzZWxmKS5zZXRVcExvY2FsKCkKKyAgICAgICAgc2VsZi50ZW1wbGF5ZXJkaXIgPSB0ZW1wbGF5ZXJkaXIKKyAgICAgICAgc2VsZi50ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50ZW1wZGlyKQorICAgICAgICBzZWxmLnRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3Rlc3RmaWxlJykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudGVzdGZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ1Rlc3QgZmlsZVxuJykKKworICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgorICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcy9yZWNpcGVzLSonICUgc2VsZi50ZW1wbGF5ZXJkaXIpCisgICAgICAgIHN1cGVyKFJlY2lwZXRvb2xCYXNlLCBzZWxmKS50ZWFyRG93bkxvY2FsKCkKKworICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKHNlbGYsIGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcz1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKKworICAgICAgICAjIENoZWNrIHRoZSBiYmFwcGVuZCB3YXMgY3JlYXRlZCBhbmQgYXBwbGllcyBwcm9wZXJseQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGJiYXBwZW5kIGNvbnRlbnRzCisgICAgICAgIGlmIGV4cGVjdGVkbGluZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpLCAiRXhwZWN0ZWQgbGluZXMgYXJlIG5vdCBwcmVzZW50IGluICVzIiAlIGJiYXBwZW5kZmlsZSkKKworICAgICAgICAjIENoZWNrIGZpbGUgd2FzIGNvcGllZAorICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgdGVzdHJlY2lwZSkKKyAgICAgICAgZm9yIGV4cGVjdGVkZmlsZSBpbiBleHBlY3RlZGZpbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihmaWxlc2RpciwgZXhwZWN0ZWRmaWxlKSksICdFeHBlY3RlZCBmaWxlICVzIHRvIGJlIGNvcGllZCBuZXh0IHRvIGJiYXBwZW5kLCBidXQgaXQgd2FzblwndCcgJSBleHBlY3RlZGZpbGUpCisKKyAgICAgICAgIyBDaGVjayBubyBvdGhlciBmaWxlcyBjcmVhdGVkCisgICAgICAgIGNyZWF0ZWRmaWxlcyA9IFtdCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGZpbGVzZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGNyZWF0ZWRmaWxlcy5hcHBlbmQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBmKSwgZmlsZXNkaXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc29ydGVkKGNyZWF0ZWRmaWxlcyksIHNvcnRlZChleHBlY3RlZGZpbGVzKSkKKworICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlLCByZXN1bHQub3V0cHV0CisKKworY2xhc3MgUmVjaXBldG9vbFRlc3RzKFJlY2lwZXRvb2xCYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKFJlY2lwZXRvb2xUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBzaGxpYnMvcGtnZGF0YQorICAgICAgICBjbHMubG9nZ2VyLmluZm8oJ1J1bm5pbmcgYml0YmFrZSB0byBnZW5lcmF0ZSBwa2dkYXRhJykKKyAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZWRhdGEgYmFzZS1maWxlcyBjb3JldXRpbHMgYnVzeWJveCBzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydDT1JFQkFTRScsICdCQlBBVEgnXSkKKyAgICAgICAgY2xzLmNvcmViYXNlID0gYmJfdmFyc1snQ09SRUJBU0UnXQorICAgICAgICBjbHMuYmJwYXRoID0gYmJfdmFyc1snQkJQQVRIJ10KKworICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgZXhwZWN0ZWRmaWxlcyk6CisgICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCisKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbChzZWxmLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgY2hlY2tlcnJvcik6CisgICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBkZXN0ZmlsZSwgbmV3ZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdDb21tYW5kICIlcyIgc2hvdWxkIGhhdmUgZmFpbGVkIGJ1dCBkaWRuXCd0JyAlIGNtZCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZm9yIGVycm9yc3RyIGluIGNoZWNrZXJyb3I6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc3RyLCByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExNzcpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2Jhc2ljKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2Jhc2UtZmlsZXMnLCAnL2V0Yy9tb3RkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnbW90ZCddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4MykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNvbWUgY29tbWFuZHMgdGhhdCBzaG91bGQgZXJyb3IKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZXRjL3Bhc3N3ZCcsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9ldGMvcGFzc3dkIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCcsICd1c2VyYWRkJywgJ2V4dHJhdXNlcnMnXSkKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZXRjL3RpbWVzdGFtcCcsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9ldGMvdGltZXN0YW1wIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCddKQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9kZXYvY29uc29sZScsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9kZXYvY29uc29sZSBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnXSkKKworICAgIEBPRVRlc3RJRCgxMTc2KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hbHRlcm5hdGl2ZXMoc2VsZik6CisgICAgICAgICMgTm93IHRyeSB3aXRoIGEgZmlsZSB3ZSBrbm93IHNob3VsZCBiZSBhbiBhbHRlcm5hdGl2ZQorICAgICAgICAjICh0aGlzIGlzIHZlcnkgbXVjaCBhIGZha2UgZXhhbXBsZSwgYnV0IG9uZSB3ZSBrbm93IGlzIHJlbGlhYmx5IGFuIGFsdGVybmF0aXZlKQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9iaW4vbHMnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiBGaWxlIC9iaW4vbHMgaXMgYW4gYWx0ZXJuYXRpdmUgcG9zc2libHkgcHJvdmlkZWQgYnkgdGhlIGZvbGxvd2luZyByZWNpcGVzOicsICdjb3JldXRpbHMnLCAnYnVzeWJveCddKQorICAgICAgICAjIE5lZWQgYSB0ZXN0IGZpbGUgLSBzaG91bGQgYmUgZXhlY3V0YWJsZQorICAgICAgICB0ZXN0ZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5jb3JlYmFzZSwgJ29lLWluaXQtYnVpbGQtZW52JykKKyAgICAgICAgdGVzdGZpbGUybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUyKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly8lcyJcbicgJSB0ZXN0ZmlsZTJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJXMgJHtEfSR7YmFzZV9iaW5kaXJ9L2xzXG4nICUgdGVzdGZpbGUybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnY29yZXV0aWxzJywgJy9iaW4vbHMnLCB0ZXN0ZmlsZTIsICctciBjb3JldXRpbHMnLCBleHBlY3RlZGxpbmVzLCBbdGVzdGZpbGUybmFtZV0pCisgICAgICAgICMgTm93IHRyeSBiYmFwcGVuZGluZyB0aGUgc2FtZSBmaWxlIGFnYWluLCBjb250ZW50cyBzaG91bGQgbm90IGNoYW5nZQorICAgICAgICBiYmFwcGVuZGZpbGUsIF8gPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdjb3JldXRpbHMnLCAnL2Jpbi9scycsIHNlbGYudGVzdGZpbGUsICctciBjb3JldXRpbHMnLCBleHBlY3RlZGxpbmVzLCBbdGVzdGZpbGUybmFtZV0pCisgICAgICAgICMgQnV0IGZpbGUgc2hvdWxkIGhhdmUKKyAgICAgICAgY29waWVkZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgJ2NvcmV1dGlscycsIHRlc3RmaWxlMm5hbWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGlmZiAtcSAlcyAlcycgJSAodGVzdGZpbGUyLCBjb3BpZWRmaWxlKSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdOZXcgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBidXQgd2FzIG5vdCAlcycgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExNzgpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2JpbmFyeShzZWxmKToKKyAgICAgICAgIyBUcnkgYXBwZW5kaW5nIGEgYmluYXJ5IGZpbGUKKyAgICAgICAgIyAvYmluL2xzIGNhbiBiZSBhIHN5bWxpbmsgdG8gL3Vzci9iaW4vbHMKKyAgICAgICAgbHMgPSBvcy5wYXRoLnJlYWxwYXRoKCIvYmluL2xzIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL2Jpbi9scyAlcyAtciBjb3JldXRpbHMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBscykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6ICcsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lzIGEgYmluYXJ5JywgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTczKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGQoc2VsZik6CisgICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NvbWV0aGluZycsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICAjIFRyeSBhZGRpbmcgYW5vdGhlciBmaWxlLCB0aGlzIHRpbWUgd2hlcmUgdGhlIHNvdXJjZSBmaWxlIGlzIGV4ZWN1dGFibGUKKyAgICAgICAgIyAoc28gd2UncmUgdGVzdGluZyB0aGF0LCBwbHVzIG1vZGlmeWluZyBhbiBleGlzdGluZyBiYmFwcGVuZCkKKyAgICAgICAgdGVzdGZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYuY29yZWJhc2UsICdvZS1pbml0LWJ1aWxkLWVudicpCisgICAgICAgIHRlc3RmaWxlMm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlMikKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUgXFxcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGZpbGU6Ly8lcyBcXFxuJyAlIHRlc3RmaWxlMm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyVzICR7RH0ke2RhdGFkaXJ9L3NjcmlwdG5hbWVcbicgJSB0ZXN0ZmlsZTJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc2NyaXB0bmFtZScsIHRlc3RmaWxlMiwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJywgdGVzdGZpbGUybmFtZV0pCisKKyAgICBAT0VUZXN0SUQoMTE3NCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkX2JpbmRpcihzZWxmKToKKyAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlLCB0aGlzIHRpbWUgdG8gYSBsb2NhdGlvbiBzdWNoIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBleGVjdXRhYmxlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtiaW5kaXJ9L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtdGVzdGJpblxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL2Jpbi9zZWxmdGVzdC1yZWNpcGV0b29sLXRlc3RiaW4nLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExNzUpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZF9tYWNoaW5lKHNlbGYpOgorICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUsIHRoaXMgdGltZSB0byBhIGxvY2F0aW9uIHN1Y2ggdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGV4ZWN1dGFibGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJX2FwcGVuZF9teW1hY2hpbmUgPSAiIGZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmRfbXltYWNoaW5lKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zb21ldGhpbmcnLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZSAtbSBteW1hY2hpbmUnLCBleHBlY3RlZGxpbmVzLCBbJ215bWFjaGluZS90ZXN0ZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4NCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfb3JpZyhzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYW5kIGluIGRvX2luc3RhbGwgd2l0aCB0aGUgc2FtZSBuYW1lCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE5MSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfdG9kaXIoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFuZCBpbiBkb19pbnN0YWxsIHdpdGggZGVzdGluYXRpb24gZGlyZWN0b3J5IHJhdGhlciB0aGFuIGZpbGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtdG9kaXInLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtdG9kaXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODcpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3JlbmFtZWQoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIHdpdGggYSBkaWZmZXJlbnQgbmFtZSB0byB0aGUgZGVzdGluYXRpb24gZmlsZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1yZW5hbWVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnZmlsZTEnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExOTApCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3N1YmRpcihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgaW4gYSBzdWJkaXIKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc3ViZGlyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc3ViZGlyJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODkpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3NyY19nbG9iKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhcyBhIGdsb2IKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc3JjLWdsb2JmaWxlXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc3JjLWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODEpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfZ2xvYihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIGRvX2luc3RhbGwgYXMgYSBnbG9iCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1nbG9iZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4MikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF90b2Rpcl9nbG9iKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gZG9faW5zdGFsbCBhcyBhIGdsb2Igd2l0aCBkZXN0aW5hdGlvbiBhcyBhIGRpcmVjdG9yeQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LXRvZGlyLWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtdG9kaXItZ2xvYmZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODUpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3BhdGNoKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgYWRkZWQgYnkgYSBwYXRjaCBpbiBTUkNfVVJJCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7c3lzY29uZmRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXBhdGNoZWRcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvZXRjL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wYXRjaGVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmICdXQVJOSU5HOiAnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYWRkLWZpbGUucGF0Y2gnLCBsaW5lLCAnVW5leHBlY3RlZCB3YXJuaW5nIGZvdW5kIGluIG91dHB1dDpcbiVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2ggd2FybmluZyBub3QgZm91bmQgaW4gb3V0cHV0OlxuJXMnICUgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODgpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3NjcmlwdChzZWxmKToKKyAgICAgICAgIyBOb3csIGEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBidXQgaW5zdGFsbGVkIGJ5IGEgc2NyaXB0IChzbyBubyBtZW50aW9uIGluIGRvX2luc3RhbGwpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXNjcmlwdGVkXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc2NyaXB0ZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4MCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF9mdW5jKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW5zdGFsbGVkIGZyb20gYSBmdW5jdGlvbiBjYWxsZWQgYnkgZG9faW5zdGFsbAorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWZ1bmMnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1mdW5jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg2KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9wb3N0aW5zdGFsbChzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGNyZWF0ZWQgYnkgYSBwb3N0aW5zdGFsbCBzY3JpcHQgKGFuZCBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiBpdCkKKyAgICAgICAgIyBGaXJzdCB0cnkgd2l0aG91dCBzcGVjaWZ5aW5nIHJlY2lwZQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0Jywgc2VsZi50ZXN0ZmlsZSwgWydGaWxlIC91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0IG1heSBiZSB3cml0dGVuIG91dCBpbiBhIHByZS9wb3N0aW5zdGFsbCBzY3JpcHQgb2YgdGhlIGZvbGxvd2luZyByZWNpcGVzOicsICdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnXSkKKyAgICAgICAgIyBOb3cgc3BlY2lmeSByZWNpcGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3RcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCcsIHNlbGYudGVzdGZpbGUsICctciBzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisKKyAgICBAT0VUZXN0SUQoMTE3OSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZXh0bGF5ZXIoc2VsZik6CisgICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgYmJhcHBlbmQgaW4gYSBsYXllciB0aGF0J3Mgbm90IGluIGJibGF5ZXJzLmNvbmYgYW5kIGhhcyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUKKyAgICAgICAgZXh0dGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2V4dGxheWVyJykKKyAgICAgICAgc2VsZi5fY3JlYXRlX3RlbXBfbGF5ZXIoZXh0dGVtcGxheWVyZGlyLCBGYWxzZSwgJ29lc2VsZnRlc3RleHRsYXllcicsIHJlY2lwZXBhdGhzcGVjPSdtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtKi8qJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyAlcycgJSAoZXh0dGVtcGxheWVyZGlyLCBzZWxmLnRlc3RmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY3JlYXRlZGZpbGVzID0gW10KKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoZXh0dGVtcGxheWVyZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGNyZWF0ZWRmaWxlcy5hcHBlbmQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBmKSwgZXh0dGVtcGxheWVyZGlyKSkKKyAgICAgICAgY3JlYXRlZGZpbGVzLnJlbW92ZSgnY29uZi9sYXllci5jb25mJykKKyAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFsnbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS5iYmFwcGVuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjcmVhdGVkZmlsZXMpLCBzb3J0ZWQoZXhwZWN0ZWRmaWxlcykpCisKKyAgICBAT0VUZXN0SUQoMTE5MikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfd2lsZGNhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIHRyeV9hcHBlbmRmaWxlX3djKG9wdGlvbnMpOgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL2V0Yy9wcm9maWxlICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgc2VsZi50ZXN0ZmlsZSwgb3B0aW9ucykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQorICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gTm9uZQorICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc2VsZi50ZW1wbGF5ZXJkaXIpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCcuYmJhcHBlbmQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3QgYmJhcHBlbmRmaWxlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gYmJhcHBlbmQgZmlsZSBjcmVhdGVkJykKKyAgICAgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzL3JlY2lwZXMtKicgJSBzZWxmLnRlbXBsYXllcmRpcikKKyAgICAgICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUKKworICAgICAgICAjIENoZWNrIHdpdGhvdXQgd2lsZGNhcmQgb3B0aW9uCisgICAgICAgIHJlY2lwZWZuID0gb3MucGF0aC5iYXNlbmFtZShnZXRfYmJfdmFyKCdGSUxFJywgJ2Jhc2UtZmlsZXMnKSkKKyAgICAgICAgZmlsZW5hbWUgPSB0cnlfYXBwZW5kZmlsZV93YygnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbmFtZSwgcmVjaXBlZm4ucmVwbGFjZSgnLmJiJywgJy5iYmFwcGVuZCcpKQorICAgICAgICAjIE5vdyBjaGVjayB3aXRoIHdpbGRjYXJkIG9wdGlvbgorICAgICAgICBmaWxlbmFtZSA9IHRyeV9hcHBlbmRmaWxlX3djKCctdycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW5hbWUsIHJlY2lwZWZuLnNwbGl0KCdfJylbMF0gKyAnXyUuYmJhcHBlbmQnKQorCisgICAgQE9FVGVzdElEKDExOTMpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGUoc2VsZik6CisgICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wc3JjID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3NyY3RyZWUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wc3JjKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2xvZ3JvdGF0ZV8zLjEyLjMuYmInKQorICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMvZG93bmxvYWQvMy4xMi4zL2xvZ3JvdGF0ZS0zLjEyLjMudGFyLnh6JworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzIC14ICVzJyAlIChyZWNpcGVmaWxlLCBzcmN1cmksIHRlbXBzcmMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0dQTHYyJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2xvZ3JvdGF0ZS0ke1BWfS50YXIueHonCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVttZDVzdW1dJ10gPSAnYTU2MGM1N2ZhYzg3YzQ1YjJmYzE3NDA2Y2RmNzkyODgnCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVtzaGEyNTZzdW1dJ10gPSAnMmU2YTQwMWNhYzkwMjRkYjIyODgyOTdlM2JlMWE4YWI2MGU3NDAxYmE4ZTkxMjI1MjE4YWFmNGEyN2U4MmEwNycKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxMTk0KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdChzZWxmKToKKyAgICAgICAgaWYgJ3gxMScgbm90IGluIGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGVzdCByZXF1aXJlcyB4MTEgYXMgZGlzdHJvIGZlYXR1cmUnKQorICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHNobGlicy9wa2dkYXRhCisgICAgICAgIGJpdGJha2UoJ2xpYnBuZyBwYW5nbyBsaWJ4MTEgbGlieGV4dCBqcGVnIGxpYmNoZWNrJykKKyAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnc3JjdHJlZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXBzcmMpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbGlibWF0Y2hib3guYmInKQorICAgICAgICBzcmN1cmkgPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGlibWF0Y2hib3gnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3JlY2lwZXRvb2wnLCAnY3JlYXRlJywgJy1vJywgcmVjaXBlZmlsZSwgc3JjdXJpICsgIjtyZXY9OWY3Y2Y4ODk1YWUyZDM5YzQ2NWMwNGNjNzhlOTE4YzE1NzQyMDI2OSIsICcteCcsIHRlbXBzcmNdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSksICdyZWNpcGV0b29sIGRpZCBub3QgY3JlYXRlIHJlY2lwZSBmaWxlOyBvdXRwdXQ6XG4lcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdMR1BMdjIuMScKKyAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0JworICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKKyAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuMTErZ2l0JHtTUkNQVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gc3JjdXJpCisgICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnbGliY2hlY2snLCAnbGlianBlZy10dXJibycsICdsaWJwbmcnLCAnbGlieDExJywgJ2xpYnhleHQnLCAncGFuZ28nXSkKKyAgICAgICAgaW5oZXJpdHMgPSBbJ2F1dG90b29scycsICdwa2djb25maWcnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgQE9FVGVzdElEKDEzOTIpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfc2ltcGxlKHNlbGYpOgorICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICBwdiA9ICcxLjcuMy4wJworICAgICAgICBzcmN1cmkgPSAnaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSVzLnRhci5iejInICUgcHYKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAlcyAtbyAlcycgJSAoc3JjdXJpLCB0ZW1wcmVjaXBlKSkKKyAgICAgICAgZGlybGlzdCA9IG9zLmxpc3RkaXIodGVtcHJlY2lwZSkKKyAgICAgICAgaWYgbGVuKGRpcmxpc3QpID4gMToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgncmVjaXBldG9vbCBjcmVhdGVkIG1vcmUgdGhhbiBqdXN0IG9uZSBmaWxlOyBvdXRwdXQ6XG4lc1xuZGlybGlzdDpcbiVzJyAlIChyZXN1bHQub3V0cHV0LCBzdHIoZGlybGlzdCkpKQorICAgICAgICBpZiBsZW4oZGlybGlzdCkgPCAxIG9yIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgZGlybGlzdFswXSkpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWNpcGV0b29sIGRpZCBub3QgY3JlYXRlIHJlY2lwZSBmaWxlOyBvdXRwdXQ6XG4lc1xuZGlybGlzdDpcbiVzJyAlIChyZXN1bHQub3V0cHV0LCBzdHIoZGlybGlzdCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcmxpc3RbMF0sICdzb2NhdF8lcy5iYicgJSBwdiwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydVbmtub3duJywgJ0dQTHYyJ10pCisgICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gc2V0KFsnZmlsZTovL0NPUFlJTkcuT3BlblNTTDttZDU9NWM5YmNjYzc3ZjY3YTgzMjhlZjRlYmFmNDY4MTE2ZjQnLCAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJ10pCisgICAgICAgICMgV2UgZG9uJ3QgY2hlY2sgREVQRU5EUyBzaW5jZSB0aGV5IGFyZSB2YXJpYWJsZSBmb3IgdGhpcyByZWNpcGUgZGVwZW5kaW5nIG9uIHdoYXQncyBpbiB0aGUgc3lzcm9vdAorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzcmN1cmkucmVwbGFjZShwdiwgJyR7UFZ9JykKKyAgICAgICAgaW5oZXJpdHMgPSBbJ2F1dG90b29scyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCBkaXJsaXN0WzBdKSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIEBPRVRlc3RJRCgxNDE4KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2NtYWtlKHNlbGYpOgorICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICduYXZpdF8wLjUuMC5iYicpCisgICAgICAgIHNyY3VyaSA9ICdodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L25hdml0L3YwLjUuMC9uYXZpdC0wLjUuMC50YXIuZ3onCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydVbmtub3duJywgJ0dQTHYyJywgJ0xHUEx2MiddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L25hdml0L3Yke1BWfS9uYXZpdC0ke1BWfS50YXIuZ3onCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVttZDVzdW1dJ10gPSAnMjQyZjM5OGU5NzlhNmI4YzBmM2M4MDJiNjM0MzViNjgnCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVtzaGEyNTZzdW1dJ10gPSAnMTMzNTM0ODFkN2ZjMDFhNGY2NGUzODVkZGE0NjBiNTE0OTYzNjZiYmEwZmQyY2M4NWE4OWEwNzQ3OTEwZTk0ZCcKKyAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydmcmVldHlwZScsICd6bGliJywgJ29wZW5zc2wnLCAnZ2xpYi0yLjAnLCAndmlydHVhbC9saWJnbCcsICd2aXJ0dWFsL2VnbCcsICdndGsrJywgJ2xpYnBuZycsICdsaWJzZGwnLCAnZnJlZWdsdXQnLCAnZGJ1cy1nbGliJ10pCisgICAgICAgIGluaGVyaXRzID0gWydjbWFrZScsICdweXRob24tZGlyJywgJ2dldHRleHQnLCAncGtnY29uZmlnJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIEBPRVRlc3RJRCgxNjM4KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1YihzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIHNlZSBpZiBnaXRodWIgVVJMIG1hbmdsaW5nIHdvcmtzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWVzb25fZ2l0LmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uO3Jldj0wLjMyLjAnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3JlY2lwZXRvb2wnLCAnY3JlYXRlJywgJy1vJywgdGVtcHJlY2lwZSwgc3JjdXJpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0FwYWNoZS0yLjAnXSkKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uO3Byb3RvY29sPWh0dHBzJworICAgICAgICBpbmhlcml0cyA9IFsnc2V0dXB0b29scyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBAT0VUZXN0SUQoMTYzOSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWJfdGFyYmFsbChzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIGVuc3VyZSBnaXRodWIgVVJMIG1hbmdsaW5nIGRvZXNuJ3QgYXBwbHkgdG8gcmVsZWFzZSB0YXJiYWxscworICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHB2ID0gJzAuMzIuMCcKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWVzb25fJXMuYmInICUgcHYpCisgICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8lcy9tZXNvbi0lcy50YXIuZ3onICUgKHB2LCBwdikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0FwYWNoZS0yLjAnXSkKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vbWVzb24tJHtQVn0udGFyLmd6JworICAgICAgICBpbmhlcml0cyA9IFsnc2V0dXB0b29scyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBAT0VUZXN0SUQoMTYzNykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRfaHR0cChzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIGNoZWNrIGh0dHAgZ2l0IFVSTCBtYW5nbGluZyB3b3JrcworICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21hdGNoYm94LXRlcm1pbmFsX2dpdC5iYicpCisgICAgICAgIHNyY3VyaSA9ICdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L21hdGNoYm94LXRlcm1pbmFsJworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnR1BMdjInXSkKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L21hdGNoYm94LXRlcm1pbmFsO3Byb3RvY29sPWh0dHAnCisgICAgICAgIGluaGVyaXRzID0gWydwa2djb25maWcnLCAnYXV0b3Rvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIGRlZiBfY29weV9maWxlX3dpdGhfY2xlYW51cChzZWxmLCBzcmNmaWxlLCBiYXNlZHN0ZGlyLCAqcGF0aHMpOgorICAgICAgICBkc3RkaXIgPSBiYXNlZHN0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkc3RkaXIpKQorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihkc3RkaXIsIHApCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCisgICAgICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RkaXIpCisgICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQorICAgICAgICBpZiBzcmNmaWxlICE9IGRzdGZpbGU6CisgICAgICAgICAgICBzaHV0aWwuY29weShzcmNmaWxlLCBkc3RmaWxlKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RmaWxlKQorCisgICAgQE9FVGVzdElEKDE2NDApCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9sb2FkX3BsdWdpbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHJlY2lwZXRvb2wgbG9hZHMgb25seSB0aGUgZmlyc3QgZm91bmQgcGx1Z2luIGluIEJCUEFUSC4iIiIKKworICAgICAgICByZWNpcGV0b29sID0gcnVuQ21kKCJ3aGljaCByZWNpcGV0b29sIikKKyAgICAgICAgZnJvbW5hbWUgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBwbHVnaW5maWxlIikKKyAgICAgICAgc3JjZmlsZSA9IGZyb21uYW1lLm91dHB1dAorICAgICAgICBzZWFyY2hwYXRoID0gc2VsZi5iYnBhdGguc3BsaXQoJzonKSArIFtvcy5wYXRoLmRpcm5hbWUocmVjaXBldG9vbC5vdXRwdXQpXQorICAgICAgICBwbHVnaW5jb250ZW50ID0gW10KKyAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUpIGFzIGZoOgorICAgICAgICAgICAgcGx1Z2luY29udGVudCA9IGZoLnJlYWRsaW5lcygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2VsZnRlc3QnLCBzcmNmaWxlLCAnd3JvbmcgYmJwYXRoIHBsdWdpbiBmb3VuZCcpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc3JjZmlsZSwgcGF0aCwgJ2xpYicsICdyZWNpcGV0b29sJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IGNvdW50IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJzEnKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgbXVsdGlsb2FkZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAibm8iKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBiYmRpciIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBwYXRoKQorICAgICAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4ocmVzdWx0Lm91dHB1dCwgJ2xpYicsICdyZWNpcGV0b29sJywgJ2JicGF0aC5weScpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICd3JykgYXMgZmg6CisgICAgICAgICAgICAgICAgZmgud3JpdGVsaW5lcyhwbHVnaW5jb250ZW50KQorCisKK2NsYXNzIFJlY2lwZXRvb2xBcHBlbmRzcmNCYXNlKFJlY2lwZXRvb2xCYXNlKToKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIGV4cGVjdGVkZmlsZXMpOgorICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlICVzICVzICVzICVzICVzJyAlIChvcHRpb25zLCBzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUpCisgICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQorCisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlcyhzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRsaW5lcz1Ob25lLCBleHBlY3RlZGZpbGVzPU5vbmUsIGRlc3RkaXI9Tm9uZSwgb3B0aW9ucz0nJyk6CisKKyAgICAgICAgaWYgZGVzdGRpcjoKKyAgICAgICAgICAgIG9wdGlvbnMgKz0gJyAtRCAlcycgJSBkZXN0ZGlyCisKKyAgICAgICAgaWYgZXhwZWN0ZWRmaWxlcyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFtvcy5wYXRoLmJhc2VuYW1lKGYpIGZvciBmIGluIG5ld2ZpbGVzXQorCisgICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGVzICVzICVzICVzICVzJyAlIChvcHRpb25zLCBzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgJyAnLmpvaW4obmV3ZmlsZXMpKQorICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKKworICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9mYWlsKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlLCBjaGVja2Vycm9yKToKKyAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZSAlcyAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlIG9yICcnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ0NvbW1hbmQgIiVzIiBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0IGRpZG5cJ3QnICUgY21kKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQorICAgICAgICBmb3IgZXJyb3JzdHIgaW4gY2hlY2tlcnJvcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzdHIsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9nZXRfZmlyc3RfZmlsZV91cmkocmVjaXBlKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSBmaXJzdCBmaWxlOi8vIGluIFNSQ19VUkkgZm9yIHRoZSBzcGVjaWZpZWQgcmVjaXBlLicnJworICAgICAgICBzcmNfdXJpID0gZ2V0X2JiX3ZhcignU1JDX1VSSScsIHJlY2lwZSkuc3BsaXQoKQorICAgICAgICBmb3IgdXJpIGluIHNyY191cmk6CisgICAgICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHVyaSkKKyAgICAgICAgICAgIGlmIHAuc2NoZW1lID09ICdmaWxlJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gcC5uZXRsb2MgKyBwLnBhdGgKKworICAgIGRlZiBfdGVzdF9hcHBlbmRzcmNmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIGZpbGVuYW1lPU5vbmUsIGRlc3RkaXI9Tm9uZSwgaGFzX3NyY191cmk9VHJ1ZSwgc3JjZGlyPU5vbmUsIG5ld2ZpbGU9Tm9uZSwgb3B0aW9ucz0nJyk6CisgICAgICAgIGlmIG5ld2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgIG5ld2ZpbGUgPSBzZWxmLnRlc3RmaWxlCisKKyAgICAgICAgaWYgc3JjZGlyOgorICAgICAgICAgICAgaWYgZGVzdGRpcjoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBkZXN0ZGlyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBzcmNkaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMgKz0gIiAtVyIKKyAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IGRlc3RkaXIKKworICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGlmIGRlc3RkaXI6CisgICAgICAgICAgICAgICAgZGVzdHBhdGggPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgZmlsZW5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gZmlsZW5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShuZXdmaWxlKQorICAgICAgICAgICAgaWYgZGVzdGRpcjoKKyAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IGRlc3RkaXIgKyBvcy5zZXAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVzdHBhdGggPSAnLicgKyBvcy5zZXAKKworICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIGlmIGhhc19zcmNfdXJpOgorICAgICAgICAgICAgdXJpID0gJ2ZpbGU6Ly8lcycgJSBmaWxlbmFtZQorICAgICAgICAgICAgaWYgZXhwZWN0ZWRfc3ViZGlyOgorICAgICAgICAgICAgICAgIHVyaSArPSAnO3N1YmRpcj0lcycgJSBleHBlY3RlZF9zdWJkaXIKKyAgICAgICAgICAgIGV4cGVjdGVkbGluZXNbMDowXSA9IFsnU1JDX1VSSSArPSAiJXMiXG4nICUgdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdHBhdGgsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIFtmaWxlbmFtZV0pCisKKyAgICBkZWYgX3Rlc3RfYXBwZW5kc3JjZmlsZXMoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkZmlsZXM9Tm9uZSwgZGVzdGRpcj1Ob25lLCBvcHRpb25zPScnKToKKyAgICAgICAgaWYgZXhwZWN0ZWRmaWxlcyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFtvcy5wYXRoLmJhc2VuYW1lKG4pIGZvciBuIGluIG5ld2ZpbGVzXQorCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzKHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGZpbGVzPWV4cGVjdGVkZmlsZXMsIGRlc3RkaXI9ZGVzdGRpciwgb3B0aW9ucz1vcHRpb25zKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NSQ19VUkknLCAnRklMRScsICdGSUxFU0VYVFJBUEFUSFMnXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXS5zcGxpdCgpCisgICAgICAgIGZvciBmIGluIGV4cGVjdGVkZmlsZXM6CisgICAgICAgICAgICBpZiBkZXN0ZGlyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGU6Ly8lcztzdWJkaXI9JXMnICUgKGYsIGRlc3RkaXIpLCBzcmNfdXJpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlOi8vJXMnICUgZiwgc3JjX3VyaSkKKworICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQorICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgdGVzdHJlY2lwZSkKKyAgICAgICAgZmlsZXNleHRyYXBhdGhzID0gYmJfdmFyc1snRklMRVNFWFRSQVBBVEhTJ10uc3BsaXQoJzonKQorICAgICAgICBzZWxmLmFzc2VydEluKGZpbGVzZGlyLCBmaWxlc2V4dHJhcGF0aHMpCisKKworCisKK2NsYXNzIFJlY2lwZXRvb2xBcHBlbmRzcmNUZXN0cyhSZWNpcGV0b29sQXBwZW5kc3JjQmFzZSk6CisKKyAgICBAT0VUZXN0SUQoMTI3MykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsICdhLWZpbGUnKQorCisgICAgQE9FVGVzdElEKDEyNzQpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2Jhc2ljX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCAnYS1maWxlJywgb3B0aW9ucz0nLXcnKQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUoYmJhcHBlbmRmaWxlKSwgJyVzXyUlLmJiYXBwZW5kJyAlIHRlc3RyZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTI4MSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3ViZGlyX2Jhc2ljKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCAnYS1maWxlJywgJ3RtcCcpCisKKyAgICBAT0VUZXN0SUQoMTI4MikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3ViZGlyX2Jhc2ljX2RpcmRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsIGRlc3RkaXI9J3RtcCcpCisKKyAgICBAT0VUZXN0SUQoMTI4MCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3JjZGlyX2Jhc2ljKHNlbGYpOgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2gnCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1MnLCAnV09SS0RJUiddLCB0ZXN0cmVjaXBlKQorICAgICAgICBzcmNkaXIgPSBiYl92YXJzWydTJ10KKyAgICAgICAgd29ya2RpciA9IGJiX3ZhcnNbJ1dPUktESVInXQorICAgICAgICBzdWJkaXIgPSBvcy5wYXRoLnJlbHBhdGgoc3JjZGlyLCB3b3JrZGlyKQorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgJ2EtZmlsZScsIHNyY2Rpcj1zdWJkaXIpCisKKyAgICBAT0VUZXN0SUQoMTI3NSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZXhpc3RpbmdfaW5fc3JjX3VyaShzZWxmKToKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJworICAgICAgICBmaWxlcGF0aCA9IHNlbGYuX2dldF9maXJzdF9maWxlX3VyaSh0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXBhdGgsICdVbmFibGUgdG8gdGVzdCwgbm8gZmlsZTovLyB1cmkgZm91bmQgaW4gU1JDX1VSSSBmb3IgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBoYXNfc3JjX3VyaT1GYWxzZSkKKworICAgIEBPRVRlc3RJRCgxMjc2KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9leGlzdGluZ19pbl9zcmNfdXJpX2RpZmZfcGFyYW1zKHNlbGYpOgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCisgICAgICAgIHN1YmRpciA9ICd0bXAnCisgICAgICAgIGZpbGVwYXRoID0gc2VsZi5fZ2V0X2ZpcnN0X2ZpbGVfdXJpKHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlcGF0aCwgJ1VuYWJsZSB0byB0ZXN0LCBubyBmaWxlOi8vIHVyaSBmb3VuZCBpbiBTUkNfVVJJIGZvciAlcycgJSB0ZXN0cmVjaXBlKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgc3ViZGlyLCBoYXNfc3JjX3VyaT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSgnd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycycgaW4gbCBmb3IgbCBpbiBvdXRwdXQpKQorCisgICAgQE9FVGVzdElEKDEyNzcpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3JlcGxhY2VfZmlsZV9zcmNkaXIoc2VsZik6CisgICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzaCcKKyAgICAgICAgZmlsZXBhdGggPSAnTWFrZWZpbGUuaW4nCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1MnLCAnV09SS0RJUiddLCB0ZXN0cmVjaXBlKQorICAgICAgICBzcmNkaXIgPSBiYl92YXJzWydTJ10KKyAgICAgICAgd29ya2RpciA9IGJiX3ZhcnNbJ1dPUktESVInXQorICAgICAgICBzdWJkaXIgPSBvcy5wYXRoLnJlbHBhdGgoc3JjZGlyLCB3b3JrZGlyKQorCisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgc3JjZGlyPXN1YmRpcikKKyAgICAgICAgYml0YmFrZSgnJXM6ZG9fdW5wYWNrJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbihzZWxmLnRlc3RmaWxlLCAncicpLnJlYWQoKSwgb3Blbihvcy5wYXRoLmpvaW4oc3JjZGlyLCBmaWxlcGF0aCksICdyJykucmVhZCgpKQorCisgICAgQE9FVGVzdElEKDEyNzgpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpYyhzZWxmLCBkZXN0ZGlyPU5vbmUpOgorICAgICAgICBuZXdmaWxlcyA9IFtzZWxmLnRlc3RmaWxlXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA1KToKKyAgICAgICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3Rlc3RmaWxlJWQnICUgaSkKKyAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoJ1Rlc3QgZmlsZSAlZFxuJyAlIGkpCisgICAgICAgICAgICBuZXdmaWxlcy5hcHBlbmQodGVzdGZpbGUpCisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZXMoJ2djYycsIG5ld2ZpbGVzLCBkZXN0ZGlyPWRlc3RkaXIsIG9wdGlvbnM9Jy1XJykKKworICAgIEBPRVRlc3RJRCgxMjc5KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWNfc3ViZGlyKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpYyhkZXN0ZGlyPSd0ZXN0ZGlyJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bmNtZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bmNtZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzZkNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVuY21kLnB5CkBAIC0wLDAgKzEsMTM0IEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAorZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBDb21tYW5kRXJyb3IKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKK2ltcG9ydCBzaWduYWwKKworY2xhc3MgTWVtTG9nZ2VyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmluZm9fbXNncyA9IFtdCisgICAgICAgIHNlbGYuZXJyb3JfbXNncyA9IFtdCisKKyAgICBkZWYgaW5mbyhzZWxmLCBtc2cpOgorICAgICAgICBzZWxmLmluZm9fbXNncy5hcHBlbmQobXNnKQorCisgICAgZGVmIGVycm9yKHNlbGYsIG1zZyk6CisgICAgICAgIHNlbGYuZXJyb3JfbXNncy5hcHBlbmQobXNnKQorCitjbGFzcyBSdW5DbWRUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIiBCYXNpYyB0ZXN0cyBmb3IgcnVuQ21kKCkgdXRpbGl0eSBmdW5jdGlvbiAiIiIKKworICAgICMgVGhlIGRlbHRhIGlzIGludGVudGlvbmFsbHkgc21hbGxlciB0aGFuIHRoZSB0aW1lb3V0LCB0byBkZXRlY3QgY2FzZXMgd2hlcmUKKyAgICAjIHdlIGluY29ycmVjdGx5IGFwcGx5IHRoZSB0aW1lb3V0IG1vcmUgdGhhbiBvbmNlLgorICAgIFRJTUVPVVQgPSAyCisgICAgREVMVEEgPSAxCisKKyAgICBAT0VUZXN0SUQoMTkxNikKKyAgICBkZWYgdGVzdF9yZXN1bHRfb2theShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ0cnVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwKQorCisgICAgQE9FVGVzdElEKDE5MTUpCisgICAgZGVmIHRlc3RfcmVzdWx0X2ZhbHNlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImZhbHNlIiwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEpCisKKyAgICBAT0VUZXN0SUQoMTkxNykKKyAgICBkZWYgdGVzdF9zaGVsbChzZWxmKToKKyAgICAgICAgIyBBIHNoZWxsIGlzIHVzZWQgZm9yIGFsbCBzdHJpbmcgY29tbWFuZHMuCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZmFsc2U7IHRydWUiLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCkKKworICAgIEBPRVRlc3RJRCgxOTEwKQorICAgIGRlZiB0ZXN0X25vX3NoZWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQ21kLCAiZmFsc2U7IHRydWUiLCBzaGVsbD1GYWxzZSkKKworICAgIEBPRVRlc3RJRCgxOTA2KQorICAgIGRlZiB0ZXN0X2xpc3Rfbm90X2ZvdW5kKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQ21kLCBbImZhbHNlOyB0cnVlIl0pCisKKyAgICBAT0VUZXN0SUQoMTkwNykKKyAgICBkZWYgdGVzdF9saXN0X29rYXkoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbInRydWUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwKQorCisgICAgQE9FVGVzdElEKDE5MTMpCisgICAgZGVmIHRlc3RfcmVzdWx0X2Fzc2VydGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoQXNzZXJ0aW9uRXJyb3IsICJDb21tYW5kICdlY2hvIC4qIGZhbHNlJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxOlxuZm9vYmFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQ21kLCAiZWNobyBmb29iYXIgPiYyOyBmYWxzZSIsIHNoZWxsPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTkxNCkKKyAgICBkZWYgdGVzdF9yZXN1bHRfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChDb21tYW5kRXJyb3IsICJDb21tYW5kICdlY2hvIC4qIGZhbHNlJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxIHdpdGggb3V0cHV0OiBmb29iYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5DbWQsICJlY2hvIGZvb2JhciA+JjI7IGZhbHNlIiwgc2hlbGw9VHJ1ZSwgYXNzZXJ0X2Vycm9yPUZhbHNlKQorCisgICAgQE9FVGVzdElEKDE5MTEpCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzdGRvdXRcbnN0ZGVyciIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHJlc3VsdC5lcnJvcikKKworICAgIEBPRVRlc3RJRCgxOTEyKQorICAgIGRlZiB0ZXN0X291dHB1dF9zcGxpdChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic3Rkb3V0IiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic3RkZXJyIiwgcmVzdWx0LmVycm9yKQorCisgICAgQE9FVGVzdElEKDE5MjApCisgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKKyAgICAgICAgbnVtdGhyZWFkcyA9IHRocmVhZGluZy5hY3RpdmVfY291bnQoKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgICMgS2lsbGluZyBhIGhhbmdpbmcgcHJvY2VzcyBvbmx5IHdvcmtzIHdoZW4gbm90IHVzaW5nIGEgc2hlbGw/IQorICAgICAgICByZXN1bHQgPSBydW5DbWQoWydzbGVlcCcsICc2MCddLCB0aW1lb3V0PXNlbGYuVElNRU9VVCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIC1zaWduYWwuU0lHVEVSTSkKKyAgICAgICAgZW5kID0gdGltZS50aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGVuZCAtIHN0YXJ0LCBzZWxmLlRJTUVPVVQgKyBzZWxmLkRFTFRBKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXRocmVhZHMsIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSkKKworICAgIEBPRVRlc3RJRCgxOTIxKQorICAgIGRlZiB0ZXN0X3RpbWVvdXRfc3BsaXQoc2VsZik6CisgICAgICAgIG51bXRocmVhZHMgPSB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICAjIEtpbGxpbmcgYSBoYW5naW5nIHByb2Nlc3Mgb25seSB3b3JrcyB3aGVuIG5vdCB1c2luZyBhIHNoZWxsPyEKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsnc2xlZXAnLCAnNjAnXSwgdGltZW91dD1zZWxmLlRJTUVPVVQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAtc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhlbmQgLSBzdGFydCwgc2VsZi5USU1FT1VUICsgc2VsZi5ERUxUQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW10aHJlYWRzLCB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkpCisKKyAgICBAT0VUZXN0SUQoMTkxOCkKKyAgICBkZWYgdGVzdF9zdGRpbihzZWxmKToKKyAgICAgICAgbnVtdGhyZWFkcyA9IHRocmVhZGluZy5hY3RpdmVfY291bnQoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoImNhdCIsIGRhdGE9YiJoZWxsbyB3b3JsZCIsIHRpbWVvdXQ9c2VsZi5USU1FT1VUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJoZWxsbyB3b3JsZCIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtdGhyZWFkcywgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpKQorCisgICAgQE9FVGVzdElEKDE5MTkpCisgICAgZGVmIHRlc3Rfc3RkaW5fdGltZW91dChzZWxmKToKKyAgICAgICAgbnVtdGhyZWFkcyA9IHRocmVhZGluZy5hY3RpdmVfY291bnQoKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3NsZWVwJywgJzYwJ10sIGRhdGE9YiJoZWxsbyB3b3JsZCIsIHRpbWVvdXQ9c2VsZi5USU1FT1VULCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgLXNpZ25hbC5TSUdURVJNKQorICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZW5kIC0gc3RhcnQsIHNlbGYuVElNRU9VVCArIHNlbGYuREVMVEEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtdGhyZWFkcywgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpKQorCisgICAgQE9FVGVzdElEKDE5MDgpCisgICAgZGVmIHRlc3RfbG9nKHNlbGYpOgorICAgICAgICBsb2cgPSBNZW1Mb2dnZXIoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoImVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCBzaGVsbD1UcnVlLCBvdXRwdXRfbG9nPWxvZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbIlJ1bm5pbmc6IGVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCAic3Rkb3V0IiwgInN0ZGVyciJdLCBsb2cuaW5mb19tc2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsb2cuZXJyb3JfbXNncykKKworICAgIEBPRVRlc3RJRCgxOTA5KQorICAgIGRlZiB0ZXN0X2xvZ19zcGxpdChzZWxmKToKKyAgICAgICAgbG9nID0gTWVtTG9nZ2VyKCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgc2hlbGw9VHJ1ZSwgb3V0cHV0X2xvZz1sb2csIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJSdW5uaW5nOiBlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgInN0ZG91dCJdLCBsb2cuaW5mb19tc2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsic3RkZXJyIl0sIGxvZy5lcnJvcl9tc2dzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkNDFmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKQEAgLTAsMCArMSwxMzggQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworCitpbXBvcnQgcmUKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgUnVucWVtdVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiUnVucWVtdSB0ZXN0IGNsYXNzIiIiCisKKyAgICBpbWFnZV9pc19yZWFkeSA9IEZhbHNlCisgICAgZGVwbG95X2Rpcl9pbWFnZSA9ICcnCisgICAgIyBXZSBvbmx5IHdhbnQgdG8gcHJpbnQgcnVucWVtdSBzdGRvdXQvc3RkZXJyIGlmIHRoZXJlIGlzIGEgdGVzdCBjYXNlIGZhaWx1cmUKKyAgICBidWZmZXIgPSBUcnVlCisKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgc3VwZXIoUnVucWVtdVRlc3RzLCBzZWxmKS5zZXRVcExvY2FsKCkKKyAgICAgICAgc2VsZi5yZWNpcGUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBzZWxmLm1hY2hpbmUgPSAgJ3FlbXV4ODYtNjQnCisgICAgICAgIHNlbGYuZnN0eXBlcyA9ICJleHQ0IGlzbyBoZGRpbWcgd2ljLnZtZGsgd2ljLnFjb3cyIHdpYy52ZGkiCisgICAgICAgIHNlbGYuY21kX2NvbW1vbiA9ICJydW5xZW11IG5vZ3JhcGhpYyIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygKKyIiIgorTUFDSElORSA9ICIlcyIKK0lNQUdFX0ZTVFlQRVMgPSAiJXMiCisjIDEwIG1lYW5zIDEgc2Vjb25kCitTWVNMSU5VWF9USU1FT1VUID0gIjEwIgorIiIiCislIChzZWxmLm1hY2hpbmUsIHNlbGYuZnN0eXBlcykKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBSdW5xZW11VGVzdHMuaW1hZ2VfaXNfcmVhZHk6CisgICAgICAgICAgICBSdW5xZW11VGVzdHMuZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICAgICAgYml0YmFrZShzZWxmLnJlY2lwZSkKKyAgICAgICAgICAgIFJ1bnFlbXVUZXN0cy5pbWFnZV9pc19yZWFkeSA9IFRydWUKKworICAgIEBPRVRlc3RJRCgyMDAxKQorICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUiIiIKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDIpCisgICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX2V4dDQoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIGV4dDQiIiIKKyAgICAgICAgY21kID0gIiVzICVzIGV4dDQiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncm9vdGZzLmV4dDQnIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwMykKKyAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfaXNvKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBpc28iIiIKKyAgICAgICAgY21kID0gIiVzICVzIGlzbyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdtZWRpYT1jZHJvbScgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA0KQorICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDUpCisgICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2Vfdm1kayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSB2bWRrIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyB3aWMudm1kayIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD12bWRrJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDYpCisgICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2VfdmRpKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIHZkaSIiIgorICAgICAgICBjbWQgPSAiJXMgJXMgd2ljLnZkaSIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD12ZGknIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwNykKKyAgICBkZWYgdGVzdF9ib290X2RlcGxveShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IGRlcGxveV9kaXJfaW1hZ2UiIiIKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDgpCisgICAgZGVmIHRlc3RfYm9vdF9kZXBsb3lfaGRkaW1nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgZGVwbG95X2Rpcl9pbWFnZSBoZGRpbWciIiIKKyAgICAgICAgY21kID0gIiVzICVzIGhkZGltZyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnZmlsZT0uKi5oZGRpbWcnLCBmLnJlYWQoKSksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA5KQorICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9zbGlycChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgc2xpcnAiIiIKKyAgICAgICAgY21kID0gIiVzIHNsaXJwICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJyAtbmV0ZGV2IHVzZXInIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwOSkKKyAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfc2xpcnBfcWNvdzIoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIHNsaXJwIHFjb3cyIiIiCisgICAgICAgIGNtZCA9ICIlcyBzbGlycCB3aWMucWNvdzIgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXFjb3cyJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMTApCisgICAgZGVmIHRlc3RfYm9vdF9xZW11X2Jvb3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSAvcGF0aC90by9pbWFnZS5xZW11Ym9vdC5jb25mIiIiCisgICAgICAgIHFlbXVib290X2NvbmYgPSAiJXMtJXMucWVtdWJvb3QuY29uZiIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKKyAgICAgICAgcWVtdWJvb3RfY29uZiA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHFlbXVib290X2NvbmYpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhxZW11Ym9vdF9jb25mKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVzIG5vdCBmb3VuZCIgJSBxZW11Ym9vdF9jb25mKQorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcWVtdWJvb3RfY29uZikKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMTEpCisgICAgZGVmIHRlc3RfYm9vdF9yb290ZnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSAvcGF0aC90by9yb290ZnMuZXh0NCIiIgorICAgICAgICByb290ZnMgPSAiJXMtJXMuZXh0NCIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKKyAgICAgICAgcm9vdGZzID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSwgcm9vdGZzKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVzIG5vdCBmb3VuZCIgJSByb290ZnMpCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCByb290ZnMpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI3MGI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CkBAIC0wLDAgKzEsMjY3IEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUKK2Zyb20gb2VxYS51dGlscy5zc2hjb250cm9sIGltcG9ydCBTU0hDb250cm9sCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKKworY2xhc3MgVGVzdEV4cG9ydChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgcnVuQ21kKCJybSAtcmYgL3RtcC9zZGsiKQorICAgICAgICBzdXBlcihUZXN0RXhwb3J0LCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgQE9FVGVzdElEKDE0OTkpCisgICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9iYXNpYyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIGJhc2ljIHRlc3RleHBvcnQgZnVuY3Rpb25hbGl0eSB3aXRoIG9ubHkgcGluZyB0ZXN0IGVuYWJsZWQuCisgICAgICAgIEV4cGVjdGVkOiAxLiB0ZXN0ZXhwb3J0IGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgICAyLiBydW5leHBvcnRlZC5weSBtdXN0IHJ1biB3aXRob3V0IGFueSBlcnJvci9leGNlcHRpb24uCisgICAgICAgICAgICAgICAgICAzLiBwaW5nIHRlc3QgbXVzdCBzdWNjZWVkLgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RleHBvcnQiXG4nCisgICAgICAgICMgVGhlc2UgYXJlbid0IHRoZSBhY3R1YWwgSVAgYWRkcmVzc2VzIGJ1dCB0ZXN0ZXhwb3J0IGNsYXNzIG5lZWRzIHNvbWV0aGluZyBkZWZpbmVkCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCB0ZXNleHBvcnQgZm9yIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0ZXhwb3J0IGNvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgdGVzdGV4cG9ydF9kaXIgPSBnZXRfYmJfdmFyKCdURVNUX0VYUE9SVF9ESVInLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICAjIFZlcmlmeSBpZiBURVNUX0VYUE9SVF9ESVIgd2FzIGNyZWF0ZWQKKyAgICAgICAgaXNkaXIgPSBvcy5wYXRoLmlzZGlyKHRlc3RleHBvcnRfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlzZGlyLCAnRmFpbGVkIHRvIGNyZWF0ZSB0ZXN0ZXhwb3J0IGRpcjogJXMnICUgdGVzdGV4cG9ydF9kaXIpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHJ1biBydW5leHBvcnRlZC5weSB0byBwZXJmb3JtIHBpbmcgdGVzdAorICAgICAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAib2UtdGVzdCIpCisgICAgICAgICAgICBkYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICdkYXRhJywgJ3Rlc3RkYXRhLmpzb24nKQorICAgICAgICAgICAgbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICdkYXRhJywgJ21hbmlmZXN0JykKKyAgICAgICAgICAgIGNtZCA9ICgiJXMgcnVudGltZSAtLXRlc3QtZGF0YS1maWxlICVzIC0tcGFja2FnZXMtbWFuaWZlc3QgJXMgIgorICAgICAgICAgICAgICAgICAgICItLXRhcmdldC1pcCAlcyAtLXNlcnZlci1pcCAlcyAtLXF1aWV0IgorICAgICAgICAgICAgICAgICAgJSAodGVzdF9wYXRoLCBkYXRhX2ZpbGUsIG1hbmlmZXN0LCBxZW11LmlwLCBxZW11LnNlcnZlcl9pcCkpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kKQorICAgICAgICAgICAgIyBWZXJpZnkgcGluZyB0ZXN0IHdhcyBzdWNjZXNmdWwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgJ29lLXRlc3QgcnVudGltZSByZXR1cm5lZCBhIG5vbiAwIHN0YXR1cycpCisKKyAgICBAT0VUZXN0SUQoMTY0MSkKKyAgICBkZWYgdGVzdF90ZXN0ZXhwb3J0X3NkayhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIHNkayBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0ZXhwb3J0LgorICAgICAgICBFeHBlY3RlZDogMS4gdGVzdGV4cG9ydCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgMi4gU0RLIHRhcmJhbGwgbXVzdCBleGlzdHMuCisgICAgICAgICAgICAgICAgICAzLiBVbmNvbXByZXNzaW5nIG9mIHRhcmJhbGwgbXVzdCBzdWNjZWVkLgorICAgICAgICAgICAgICAgICAgNC4gQ2hlY2sgaWYgdGhlIFNESyBkaXJlY3RvcnkgaXMgYWRkZWQgdG8gUEFUSC4KKyAgICAgICAgICAgICAgICAgIDUuIFJ1biB0YXIgZnJvbSB0aGUgU0RLIGRpcmVjdG9yeS4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0ZXhwb3J0IlxuJworICAgICAgICAjIFRoZXNlIGFyZW4ndCB0aGUgYWN0dWFsIElQIGFkZHJlc3NlcyBidXQgdGVzdGV4cG9ydCBjbGFzcyBuZWVkcyBzb21ldGhpbmcgZGVmaW5lZAorICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TRVJWRVJfSVAgPSAiMTkyLjE2OC43LjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjcuMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmciXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX0VYUE9SVF9TREtfRU5BQkxFRCA9ICIxIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9FWFBPUlRfU0RLX1BBQ0tBR0VTID0gIm5hdGl2ZXNkay10YXIiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgdGVzZXhwb3J0IGZvciBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGV4cG9ydCBjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgIG5lZWRlZF92YXJzID0gWydURVNUX0VYUE9SVF9ESVInLCAnVEVTVF9FWFBPUlRfU0RLX0RJUicsICdURVNUX0VYUE9SVF9TREtfTkFNRSddCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHRlc3RleHBvcnRfZGlyID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfRElSJ10KKyAgICAgICAgc2RrX2RpciA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX1NES19ESVInXQorICAgICAgICBzZGtfbmFtZSA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX1NES19OQU1FJ10KKworICAgICAgICAjIENoZWNrIGZvciBTREsKKyAgICAgICAgdGFyYmFsbF9uYW1lID0gIiVzLnNoIiAlIHNka19uYW1lCisgICAgICAgIHRhcmJhbGxfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2Rpciwgc2RrX2RpciwgdGFyYmFsbF9uYW1lKQorICAgICAgICBtc2cgPSAiQ291bGRuJ3QgZmluZCBTREsgdGFyYmFsbDogJXMiICUgdGFyYmFsbF9wYXRoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2ZpbGUodGFyYmFsbF9wYXRoKSwgVHJ1ZSwgbXNnKQorCisgICAgICAgICMgRXh0cmFjdCBTREsgYW5kIHJ1biB0YXIgZnJvbSBTREsKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIlcyAteSAtZCAvdG1wL3NkayIgJSB0YXJiYWxsX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IGV4dHJhY3QgU0RLIikKKworICAgICAgICBlbnZfc2NyaXB0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpWy0xXQorICAgICAgICByZXN1bHQgPSBydW5DbWQoIi4gJXM7IHdoaWNoIHRhciIgJSBlbnZfc2NyaXB0LCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBzZXR1cCBTREsgZW52aXJvbm1lbnQiKQorICAgICAgICBpc19zZGtfdGFyID0gVHJ1ZSBpZiAiL3RtcC9zZGsiIGluIHJlc3VsdC5vdXRwdXQgZWxzZSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfc2RrX3RhciwgIkNvdWxkbid0IHNldHVwIFNESyBlbnZpcm9ubWVudCIpCisKKyAgICAgICAgdGFyX3NkayA9IHJlc3VsdC5vdXRwdXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIlcyAtLXZlcnNpb24iICUgdGFyX3NkaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3QgcnVuIHRhciBmcm9tIFNESyIpCisKKworY2xhc3MgVGVzdEltYWdlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoMTY0NCkKKyAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIGluc3RhbGwgcGFja2FnZXMgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGltYWdlL3Rlc3RleHBvcnQuCisgICAgICAgIEV4cGVjdGVkOiAxLiBJbXBvcnQgdGVzdHMgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIG1ldGEuCisgICAgICAgICAgICAgICAgICAyLiBDaGVjayBpbnN0YWxsL3VuaW5zdGFsbCBvZiBzb2NhdC4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBub3QgYnVpbGRhYmxlIGZvciBwb2t5LXRpbnknKQorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmcgc3NoIHNlbGZ0ZXN0IlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIGNvcmUtaW1hZ2Utc2F0byBhbmQgdGVzdGltYWdlCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIHNvY2F0JykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJykKKworICAgIEBPRVRlc3RJRCgxODgzKQorICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV9kbmYoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBwYWNrYWdlIGZlZWRzIGZ1bmN0aW9uYWxpdHkgZm9yIGRuZgorICAgICAgICBFeHBlY3RlZDogMS4gQ2hlY2sgdGhhdCByZW1vdGUgcGFja2FnZSBmZWVkcyBjYW4gYmUgYWNjZXNzZWQKKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIG5vdCBidWlsZGFibGUgZm9yIHBva3ktdGlueScpCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggZG5mX3J1bnRpbWUgZG5mLkRuZkJhc2ljVGVzdC50ZXN0X2RuZl9oZWxwIlxuJworICAgICAgICAjIFdlIGRvbid0IHlldCBrbm93IHdoYXQgdGhlIHNlcnZlciBpcCBhbmQgcG9ydCB3aWxsIGJlIC0gdGhleSB3aWxsIGJlIHBhdGNoZWQKKyAgICAgICAgIyBpbiBhdCB0aGUgc3RhcnQgb2YgdGhlIG9uLWltYWdlIHRlc3QKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9VUklTID0gImh0dHA6Ly9ib2d1c19pcDpib2d1c19wb3J0IlxuJworICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSJcbicKKworICAgICAgICAjIEVuYWJsZSBwYWNrYWdlIGZlZWQgc2lnbmluZworICAgICAgICBzZWxmLmdwZ19ob21lID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9Im9lcWEtZmVlZC1zaWduLSIpCisgICAgICAgIHNpZ25pbmdfa2V5X2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAnZmlsZXMnLCAnc2lnbmluZycpCisgICAgICAgIHJ1bkNtZCgnZ3BnIC0tYmF0Y2ggLS1ob21lZGlyICVzIC0taW1wb3J0ICVzJyAlIChzZWxmLmdwZ19ob21lLCBvcy5wYXRoLmpvaW4oc2lnbmluZ19rZXlfZGlyLCAna2V5LnNlY3JldCcpKSkKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gInNpZ25fcGFja2FnZV9mZWVkIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9GRUVEX0dQR19OQU1FID0gInRlc3R1c2VyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9GRUVEX0dQR19QQVNTUEhSQVNFX0ZJTEUgPSAiJXMiXG4nICUgb3MucGF0aC5qb2luKHNpZ25pbmdfa2V5X2RpciwgJ2tleS5wYXNzcGhyYXNlJykKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0dQR19QQVRIID0gIiVzIlxuJyAlIHNlbGYuZ3BnX2hvbWUKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCBjb3JlLWltYWdlLXNhdG8gYW5kIHRlc3RpbWFnZQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCisKKyAgICAgICAgIyByZW1vdmUgdGhlIG9lcWEtZmVlZC1zaWduIHRlbXBvcmFsIGRpcmVjdG9yeQorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZ3BnX2hvbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworY2xhc3MgUG9zdGluc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBAT0VUZXN0SUQoMTU0MCkKKyAgICBkZWYgdGVzdF92ZXJpZnlfcG9zdGluc3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMgdG8gdmVyaWZ5IHRoZSBleGVjdXRpb24gb3JkZXIgb2YgcG9zdGluc3QgQnVnemlsbGEgSUQ6IFs1MzE5XQorICAgICAgICBFeHBlY3RlZCA6CisgICAgICAgIDEuIENvbXBpbGUgYSBtaW5pbWFsIGltYWdlLgorICAgICAgICAyLiBUaGUgY29tcGlsZWQgaW1hZ2Ugd2lsbCBhZGQgdGhlIGNyZWF0ZWQgbGF5ZXIgd2l0aCB0aGUgcmVjaXBlcyBwb3N0aW5zdFsgYWJkcHRdCisgICAgICAgIDMuIFJ1biBxZW11eDg2CisgICAgICAgIDQuIFZhbGlkYXRlIHRoZSB0YXNrIGV4ZWN1dGlvbiBvcmRlcgorICAgICAgICBBdXRob3I6IEZyYW5jaXNjbyBQZWRyYXphIDxmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAicG9zdGluc3QtYXQtcm9vdGZzIFwKK3Bvc3RpbnN0LWRlbGF5ZWQtYSBcCitwb3N0aW5zdC1kZWxheWVkLWIgXAorcG9zdGluc3QtZGVsYXllZC1kIFwKK3Bvc3RpbnN0LWRlbGF5ZWQtcCBcCitwb3N0aW5zdC1kZWxheWVkLXQgXAorIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgLWYgJykKKworICAgICAgICBwb3N0aW5zdF9saXN0ID0gWycxMDAtcG9zdGluc3QtYXQtcm9vdGZzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAxLXBvc3RpbnN0LWRlbGF5ZWQtYScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMi1wb3N0aW5zdC1kZWxheWVkLWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMDMtcG9zdGluc3QtZGVsYXllZC1kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTA0LXBvc3RpbnN0LWRlbGF5ZWQtcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwNS1wb3N0aW5zdC1kZWxheWVkLXQnXQorICAgICAgICBwYXRoX3dvcmtkaXIgPSBnZXRfYmJfdmFyKCdXT1JLRElSJywnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgd29ya3NwYWNlZGlyID0gJ3Rlc3RpbWFnZS9xZW11X2Jvb3RfbG9nJworICAgICAgICB3b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4ocGF0aF93b3JrZGlyLCB3b3Jrc3BhY2VkaXIpCisgICAgICAgIHJleHAgPSByZS5jb21waWxlKCJeUnVubmluZyBwb3N0aW5zdCAuKi8oP1A8cG9zdGluc3Q+LiopXC5cLlwuJCIpCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3Blbih3b3Jrc3BhY2VkaXIpIGFzIGY6CisgICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpLnJlcGxhY2UoIl5NIiwiIikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6ICMgVG8gYXZvaWQgZW1wdHkgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG0gPSByZXhwLnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3N0aW5zdF9saXN0W2lkeF0sIG0uZ3JvdXAoJ3Bvc3RpbnN0JyksICJGYWlsIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IGlkeCsxCisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBmb3VuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWR4LCBsZW4ocG9zdGluc3RfbGlzdCksICJOb3QgZm91bmQgYWxsIHBvc3RpbnN0cyIpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgQE9FVGVzdElEKDE1NDUpCisgICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSBQb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyBhcmUgY2FsbGVkIHdoZW4gcm9vdGZzIGlzIGNyZWF0ZWQgYW5kIGFsc28gdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzY3JpcHQgY2FuIGJlIGRlbGF5ZWQgdG8gcnVuIGF0IGZpcnN0IGJvb3QuCisgICAgICAgIERlcGVuZGVuY2llczogICBOQQorICAgICAgICBTdGVwczogICAgICAgICAgMS4gQWRkIHByb3BlciBjb25maWd1cmF0aW9uIHRvIGxvY2FsLmNvbmYgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgMi4gQnVpbGQgYSAiY29yZS1pbWFnZS1taW5pbWFsIiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoYXQgZmlsZSBjcmVhdGVkIGJ5IHBvc3RpbnN0X3Jvb3RmcyByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgb24gcm9vdGZzIGRpci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDQuIEJvb3QgdGhlIGltYWdlIGNyZWF0ZWQgb24gcWVtdSBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcG9zdGluc3RfYm9vdCByZWNpcGUgaXMgcHJlc2VudCBvbiBpbWFnZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBmaWxlcyBhcmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZHVyaW5nIHJvb3RmcyBhbmQgYm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgMyBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyczogcnBtLGlwayxkZWIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0IGFuZCBzeXN0ZW1kLgorCisgICAgICAgICIiIgorICAgICAgICBmaWxlX3Jvb3Rmc19uYW1lID0gInRoaXMtd2FzLWNyZWF0ZWQtYXQtcm9vdGZzdGltZSIKKyAgICAgICAgZmlsZWJvb3RfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LWZpcnN0LWJvb3QiCisgICAgICAgIHJvb3Rmc19wa2cgPSAncG9zdGluc3QtYXQtcm9vdGZzJworICAgICAgICBib290X3BrZyA9ICdwb3N0aW5zdC1kZWxheWVkLWEnCisKKyAgICAgICAgZm9yIGluaXRfbWFuYWdlciBpbiAoInN5c3Zpbml0IiwgInN5c3RlbWQiKToKKyAgICAgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0iLCAicGFja2FnZV9kZWIiLCAicGFja2FnZV9pcGsiKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgorICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdNQUNISU5FID0gInFlbXV4ODYiXG4nCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gIiVzICVzICJcbiclIChyb290ZnNfcGtnLCBib290X3BrZykKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQgZW1wdHktcm9vdC1wYXNzd29yZCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCisgICAgICAgICAgICAgICAgICAgIGlmIGluaXRfbWFuYWdlciA9PSAic3lzdGVtZCI6CisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gInN5c3RlbWQiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAic3lzdmluaXQiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID0gIiJcbicKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICAgICAgICAgICAgICBmaWxlX3Jvb3Rmc19jcmVhdGVkID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsICJjb3JlLWltYWdlLW1pbmltYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3Jvb3Rmc19uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKGZpbGVfcm9vdGZzX2NyZWF0ZWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIkZpbGUgJXMgd2FzIG5vdCBjcmVhdGVkIGF0IHJvb3RmcyB0aW1lIGJ5ICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlX3Jvb3Rmc19uYW1lLCByb290ZnNfcGtnKSkKKworICAgICAgICAgICAgICAgICAgICB0ZXN0Y29tbWFuZCA9ICdscyAvZXRjLycgKyBmaWxlYm9vdF9uYW1lCisgICAgICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKCItZiAvZXRjLyIgKyBmaWxlYm9vdF9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCBmaXJzdCBib290ICglcyknICUgKGZpbGVib290X25hbWUsIG91dHB1dCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zZWxmdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NlbGZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiM2NiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zZWxmdGVzdC5weQpAQCAtMCwwICsxLDUxIEBACitpbXBvcnQgaW1wb3J0bGliCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAoraW1wb3J0IG9lcWEuc2VsZnRlc3QKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBFeHRlcm5hbExheWVyKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoMTg4NSkKKyAgICBkZWYgdGVzdF9saXN0X2ltcG9ydGVkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2tzIGZ1bmN0aW9uYWxpdHkgdG8gaW1wb3J0IHRlc3RzIGZyb20gb3RoZXIgbGF5ZXJzLgorICAgICAgICBFeHBlY3RlZDogMS4gRmlsZSAiZXh0ZXJuYWwtbGF5ZXIucHkiIG11c3QgYmUgaW4KKyAgICAgICAgb2VxYS5zZWxmdGVzdC5fX3BhdGhfXworICAgICAgICAgICAgICAgICAgMi4gdGVzdF91bmNvbmRpdGlvbmFsX3BhcyBtZXRob2QgbXVzdCBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgIGluIEltcG9ydGVkVGVzdHMgY2xhc3MKKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2ZpbGUgPSAiZXh0ZXJuYWwtbGF5ZXIucHkiCisgICAgICAgIHRlc3RfbW9kdWxlID0gIm9lcWEuc2VsZnRlc3QuY2FzZXMuZXh0ZXJuYWwtbGF5ZXIiCisgICAgICAgIG1ldGhvZF9uYW1lID0gInRlc3RfdW5jb25kaXRpb25hbF9wYXNzIgorCisgICAgICAgICMgQ2hlY2sgaWYgImV4dGVybmFsLWxheWVyLnB5IiBpcyBpbiBvZXFhIHBhdGgKKyAgICAgICAgZm91bmRfZmlsZSA9IHNlYXJjaF90ZXN0X2ZpbGUodGVzdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmRfZmlsZSwgbXNnPSJDYW4ndCBmaW5kICVzIGluIHRoZSBvZXFhIHBhdGgiICUgdGVzdF9maWxlKQorCisgICAgICAgICMgSW1wb3J0IG9lcWEuc2VsZnRlc3QuZXh0ZXJuYWwtbGF5ZXIgbW9kdWxlIGFuZCBzZWFyY2ggZm9yCisgICAgICAgICMgdGVzdF91bmNvbmRpdGlvbmFsX3Bhc3MgbWV0aG9kIG9mIEltcG9ydGVkVGVzdHMgY2xhc3MKKyAgICAgICAgZm91bmRfbWV0aG9kID0gc2VhcmNoX21ldGhvZCh0ZXN0X21vZHVsZSwgbWV0aG9kX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXRob2RfbmFtZSwgbXNnPSJDYW4ndCBmaW5kICVzIG1ldGhvZCIgJSBtZXRob2RfbmFtZSkKKworZGVmIHNlYXJjaF90ZXN0X2ZpbGUoZmlsZV9uYW1lKToKKyAgICBmb3IgbGF5ZXJfcGF0aCBpbiBvZXFhLnNlbGZ0ZXN0Ll9fcGF0aF9fOgorICAgICAgICBmb3IgXywgXywgZmlsZXMgaW4gb3Mud2FsayhsYXllcl9wYXRoKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGlmIGYgPT0gZmlsZV9uYW1lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCitkZWYgc2VhcmNoX21ldGhvZChtb2R1bGUsIG1ldGhvZCk6CisgICAgbW9kbGliID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kdWxlKQorICAgIGZvciB2YXIgaW4gdmFycyhtb2RsaWIpOgorICAgICAgICBrbGFzcyA9IHZhcnMobW9kbGliKVt2YXJdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2xhc3MsIHR5cGUoT0VTZWxmdGVzdFRlc3RDYXNlKSkgYW5kIGlzc3ViY2xhc3Moa2xhc3MsIE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgICAgICAgICBmb3IgbSBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgICAgIGlmIG0gPT0gbWV0aG9kOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2QxYTgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQpAQCAtMCwwICsxLDE4NyBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCitpbXBvcnQgb3MKK2ltcG9ydCBnbG9iCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMuZnRvb2xzIGltcG9ydCB3cml0ZV9maWxlCisKKworY2xhc3MgU2lnbmluZyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZ3BnX2RpciA9ICIiCisgICAgcHViX2tleV9wYXRoID0gIiIKKyAgICBzZWNyZXRfa2V5X3BhdGggPSAiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoU2lnbmluZywgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGNhbiBmaW5kIHRoZSBncGcgYmluYXJ5IGFuZCBmYWlsIGVhcmx5IGlmIHdlIGNhbid0CisgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goImdwZyIpOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlRoaXMgdGVzdCBuZWVkcyBHbnVQRyIpCisKKyAgICAgICAgY2xzLmdwZ19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ib2VxYS1zaWduaW5nLSIpCisKKyAgICAgICAgY2xzLnB1Yl9rZXlfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJywgImtleS5wdWIiKQorICAgICAgICBjbHMuc2VjcmV0X2tleV9wYXRoID0gb3MucGF0aC5qb2luKGNscy50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnLCAia2V5LnNlY3JldCIpCisKKyAgICAgICAgcnVuQ21kKCdncGcgLS1iYXRjaCAtLWhvbWVkaXIgJXMgLS1pbXBvcnQgJXMgJXMnICUgKGNscy5ncGdfZGlyLCBjbHMucHViX2tleV9wYXRoLCBjbHMuc2VjcmV0X2tleV9wYXRoKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoY2xzLmdwZ19kaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzYyKQorICAgIGRlZiB0ZXN0X3NpZ25pbmdfcGFja2FnZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHBhY2thZ2VzIGNhbiBiZSBzaWduZWQgaW4gdGhlIHBhY2thZ2UgZmVlZAorICAgICAgICBFeHBlY3RlZDogICAgUGFja2FnZSBzaG91bGQgYmUgc2lnbmVkIHdpdGggdGhlIGNvcnJlY3Qga2V5CisgICAgICAgIEV4cGVjdGVkOiAgICBJbWFnZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBzaWduZWQgcGFja2FnZXMKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKKworICAgICAgICBwYWNrYWdlX2NsYXNzZXMgPSBnZXRfYmJfdmFyKCdQQUNLQUdFX0NMQVNTRVMnKQorICAgICAgICBpZiAncGFja2FnZV9ycG0nIG5vdCBpbiBwYWNrYWdlX2NsYXNzZXM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGlzIHRlc3QgcmVxdWlyZXMgUlBNIFBhY2thZ2luZy4nKQorCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworCisgICAgICAgIGZlYXR1cmUgPSAnSU5IRVJJVCArPSAic2lnbl9ycG0iXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ1JQTV9HUEdfUEFTU1BIUkFTRSA9ICJ0ZXN0MTIzIlxuJworICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX05BTUUgPSAidGVzdHVzZXIiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ0dQR19QQVRIID0gIiVzIlxuJyAlIHNlbGYuZ3BnX2RpcgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIGJpdGJha2UoJy1mIC1jIHBhY2thZ2Vfd3JpdGVfcnBtICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1BLR0RBVEFfRElSJywgJ0RFUExPWV9ESVJfUlBNJywgJ1BBQ0tBR0VfQVJDSCcsICdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnXQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMsIHRlc3RfcmVjaXBlKQorICAgICAgICBwa2dkYXRhZGlyID0gYmJfdmFyc1snUEtHREFUQV9ESVInXQorICAgICAgICBwa2dkYXRhID0gb2UucGFja2FnZWRhdGEucmVhZF9wa2dkYXRhZmlsZShwa2dkYXRhZGlyICsgIi9ydW50aW1lL2VkIikKKyAgICAgICAgaWYgJ1BLR0UnIGluIHBrZ2RhdGE6CisgICAgICAgICAgICBwZiA9IHBrZ2RhdGFbJ1BOJ10gKyAiLSIgKyBwa2dkYXRhWydQS0dFJ10gKyBwa2dkYXRhWydQS0dWJ10gKyAnLScgKyBwa2dkYXRhWydQS0dSJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBmID0gcGtnZGF0YVsnUE4nXSArICItIiArIHBrZ2RhdGFbJ1BLR1YnXSArICctJyArIHBrZ2RhdGFbJ1BLR1InXQorICAgICAgICBkZXBsb3lfZGlyX3JwbSA9IGJiX3ZhcnNbJ0RFUExPWV9ESVJfUlBNJ10KKyAgICAgICAgcGFja2FnZV9hcmNoID0gYmJfdmFyc1snUEFDS0FHRV9BUkNIJ10ucmVwbGFjZSgnLScsICdfJykKKyAgICAgICAgc3RhZ2luZ19iaW5kaXJfbmF0aXZlID0gYmJfdmFyc1snU1RBR0lOR19CSU5ESVJfTkFUSVZFJ10KKworICAgICAgICBwa2dfZGVwbG95ID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfcnBtLCBwYWNrYWdlX2FyY2gsICcuJy5qb2luKChwZiwgcGFja2FnZV9hcmNoLCAncnBtJykpKQorCisgICAgICAgICMgVXNlIGEgdGVtcG9yYXJ5IHJwbWRiCisgICAgICAgIHJwbWRiID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lcWEtcnBtZGInKQorCisgICAgICAgIHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1pbXBvcnQgJXMnICUKKyAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBzZWxmLnB1Yl9rZXlfcGF0aCkpCisKKyAgICAgICAgcmV0ID0gcnVuQ21kKCclcy9ycG1rZXlzIC0tZGVmaW5lICJfZGJwYXRoICVzIiAtLWNoZWNrc2lnICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAoc3RhZ2luZ19iaW5kaXJfbmF0aXZlLCBycG1kYiwgcGtnX2RlcGxveSkpCisgICAgICAgICMgdG1wL2RlcGxveS9ycG0vaTU4Ni9lZC0xLjktcjAuaTU4Ni5ycG06IHJzYSBzaGExIG1kNSBPSworICAgICAgICBzZWxmLmFzc2VydEluKCdyc2Egc2hhMSAobWQ1KSBwZ3AgbWQ1IE9LJywgcmV0Lm91dHB1dCwgJ1BhY2thZ2Ugc2lnbmVkIGluY29ycmVjdGx5LicpCisgICAgICAgIHNodXRpbC5ybXRyZWUocnBtZGIpCisKKyAgICAgICAgI0NoZWNrIHRoYXQgYW4gaW1hZ2UgY2FuIGJlIGJ1aWx0IGZyb20gc2lnbmVkIHBhY2thZ2VzCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKworCisgICAgQE9FVGVzdElEKDEzODIpCisgICAgZGVmIHRlc3Rfc2lnbmluZ19zc3RhdGVfYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgc3N0YXRlIGFyY2hpdmVzIGNhbiBiZSBzaWduZWQKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIFBhY2thZ2Ugc2hvdWxkIGJlIHNpZ25lZCB3aXRoIHRoZSBjb3JyZWN0IGtleQorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKworICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpCisgICAgICAgIHNzdGF0ZWRpciA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ3Rlc3Qtc3N0YXRlJykKKworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgc3N0YXRlZGlyKQorCisgICAgICAgIGZlYXR1cmUgPSAnU1NUQVRFX1NJR19LRVkgPz0gInRlc3R1c2VyIlxuJworICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfU0lHX1BBU1NQSFJBU0UgPz0gInRlc3QxMjMiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9WRVJJRllfU0lHID89ICIxIlxuJworICAgICAgICBmZWF0dXJlICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19kaXIKKyAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX0RJUiA9ICIlcyJcbicgJSBzc3RhdGVkaXIKKyAgICAgICAgIyBBbnkgbWlycm9yIG1pZ2h0IGhhdmUgcGFydGlhbCBzc3RhdGUgd2l0aG91dCAuc2lnIGZpbGVzLCB0cmlnZ2VyaW5nIGZhaWx1cmVzCisgICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9NSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIlxuJworCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCisKKyAgICAgICAgcmVjaXBlX3NpZyA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BhY2thZ2UudGd6LnNpZycpCisgICAgICAgIHJlY2lwZV90Z3ogPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wYWNrYWdlLnRneicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3NpZyksIDEsICdGYWlsZWQgdG8gZmluZCAuc2lnIGZpbGUuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3RneiksIDEsICdGYWlsZWQgdG8gZmluZCAudGd6IGZpbGUuJykKKworICAgICAgICByZXQgPSBydW5DbWQoJ2dwZyAtLWhvbWVkaXIgJXMgLS12ZXJpZnkgJXMgJXMnICUgKHNlbGYuZ3BnX2RpciwgcmVjaXBlX3NpZ1swXSwgcmVjaXBlX3RnelswXSkpCisgICAgICAgICMgZ3BnOiBTaWduYXR1cmUgbWFkZSBUaHUgMjIgT2N0IDIwMTUgMDE6NDU6MDkgUE0gRUVTVCB1c2luZyBSU0Ega2V5IElEIDYxRUVGQjMwCisgICAgICAgICMgZ3BnOiBHb29kIHNpZ25hdHVyZSBmcm9tICJ0ZXN0dXNlciAobm9jb21tZW50KSA8dGVzdHVzZXJAZW1haWwuY29tPiIKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZ3BnOiBHb29kIHNpZ25hdHVyZSBmcm9tJywgcmV0Lm91dHB1dCwgJ1BhY2thZ2Ugc2lnbmVkIGluY29ycmVjdGx5LicpCisKKworY2xhc3MgTG9ja2VkU2lnbmF0dXJlcyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDE0MjApCisgICAgZGVmIHRlc3RfbG9ja2VkX3NpZ25hdHVyZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCBsb2NrZWQgc2lnbmF0dXJlIG1lY2hhbmlzbQorICAgICAgICBFeHBlY3RlZDogICAgTG9ja2VkIHNpZ25hdHVyZXMgd2lsbCBwcmV2ZW50IHRhc2sgdG8gcnVuCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworICAgICAgICBsb2NrZWRfc2lnc19maWxlID0gJ2xvY2tlZC1zaWdzLmluYycKKworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgbG9ja2VkX3NpZ3NfZmlsZSkpCisKKyAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKKyAgICAgICAgIyBHZW5lcmF0ZSBsb2NrZWQgc2lncyBpbmNsdWRlIGZpbGUKKyAgICAgICAgYml0YmFrZSgnLVMgbm9uZSAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgJXNcbicgJSBsb2NrZWRfc2lnc19maWxlCisgICAgICAgIGZlYXR1cmUgKz0gJ1NJR0dFTl9MT0NLRURTSUdTX1RBU0tTSUdfQ0hFQ0sgPSAid2FybiJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKKworICAgICAgICAjIEJ1aWxkIGEgbG9ja2VkIHJlY2lwZQorICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQorCisgICAgICAgICMgTWFrZSBhIGNoYW5nZSB0aGF0IHNob3VsZCBjYXVzZSB0aGUgbG9ja2VkIHRhc2sgc2lnbmF0dXJlIHRvIGNoYW5nZQorICAgICAgICByZWNpcGVfYXBwZW5kX2ZpbGUgPSB0ZXN0X3JlY2lwZSArICdfJyArIGdldF9iYl92YXIoJ1BWJywgdGVzdF9yZWNpcGUpICsgJy5iYmFwcGVuZCcKKyAgICAgICAgcmVjaXBlX2FwcGVuZF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSwgcmVjaXBlX2FwcGVuZF9maWxlKQorICAgICAgICBmZWF0dXJlID0gJ1NVTU1BUlkgKz0gInRlc3QgbG9ja2VkIHNpZ25hdHVyZSJcbicKKworICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlKSkKKyAgICAgICAgd3JpdGVfZmlsZShyZWNpcGVfYXBwZW5kX3BhdGgsIGZlYXR1cmUpCisKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUpKQorCisgICAgICAgICMgQnVpbGQgdGhlIHJlY2lwZSBhZ2FpbgorICAgICAgICByZXQgPSBiaXRiYWtlKHRlc3RfcmVjaXBlKQorCisgICAgICAgICMgVmVyaWZ5IHlvdSBnZXQgdGhlIHdhcm5pbmcgYW5kIHRoYXQgdGhlIHJlYWwgdGFzayAqaXNuJ3QqIHJ1biAoaS5lLiB0aGUgbG9ja2VkIHNpZ25hdHVyZSBoYXMgd29ya2VkKQorICAgICAgICBwYXR0ID0gcidXQVJOSU5HOiBUaGUgJXM6ZG9fcGFja2FnZSBzaWcgaXMgY29tcHV0ZWQgdG8gYmUgXFMrLCBidXQgdGhlIHNpZyBpcyBsb2NrZWQgdG8gXFMrIGluIFNJR0dFTl9MT0NLRURTSUdTXFMrJyAlIHRlc3RfcmVjaXBlCisgICAgICAgIGZvdW5kX3dhcm4gPSByZS5zZWFyY2gocGF0dCwgcmV0Lm91dHB1dCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmb3VuZF93YXJuLCAiRGlkbid0IGZpbmQgdGhlIGV4cGVjdGVkIHdhcm5pbmcgbWVzc2FnZS4gT3V0cHV0OiAlcyIgJSByZXQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMmZkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKQEAgLTAsMCArMSw2MyBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFycywgZ2V0X3Rlc3RfbGF5ZXIKKworCitjbGFzcyBTU3RhdGVCYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgc3VwZXIoU1N0YXRlQmFzZSwgc2VsZikuc2V0VXBMb2NhbCgpCisgICAgICAgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb24gPSBOb25lCisgICAgICAgIG5lZWRlZF92YXJzID0gWydTU1RBVEVfRElSJywgJ05BVElWRUxTQlNUUklORycsICdUQ0xJQkMnLCAnVFVORV9BUkNIJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ1RPUERJUicsICdUQVJHRVRfVkVORE9SJywgJ1RBUkdFVF9PUyddCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycykKKyAgICAgICAgc2VsZi5zc3RhdGVfcGF0aCA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQorICAgICAgICBzZWxmLmhvc3RkaXN0cm8gPSBiYl92YXJzWydOQVRJVkVMU0JTVFJJTkcnXQorICAgICAgICBzZWxmLnRjbGliYyA9IGJiX3ZhcnNbJ1RDTElCQyddCisgICAgICAgIHNlbGYudHVuZV9hcmNoID0gYmJfdmFyc1snVFVORV9BUkNIJ10KKyAgICAgICAgc2VsZi50b3BkaXIgPSBiYl92YXJzWydUT1BESVInXQorICAgICAgICBzZWxmLnRhcmdldF92ZW5kb3IgPSBiYl92YXJzWydUQVJHRVRfVkVORE9SJ10KKyAgICAgICAgc2VsZi50YXJnZXRfb3MgPSBiYl92YXJzWydUQVJHRVRfT1MnXQorICAgICAgICBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCwgc2VsZi5ob3N0ZGlzdHJvKQorCisgICAgIyBDcmVhdGVzIGEgc3BlY2lhbCBzc3RhdGUgY29uZmlndXJhdGlvbiB3aXRoIHRoZSBvcHRpb24gdG8gYWRkIHNzdGF0ZSBtaXJyb3JzCisgICAgZGVmIGNvbmZpZ19zc3RhdGUoc2VsZiwgdGVtcF9zc3RhdGVfbG9jYXRpb249RmFsc2UsIGFkZF9sb2NhbF9taXJyb3JzPVtdKToKKyAgICAgICAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbiA9IHRlbXBfc3N0YXRlX2xvY2F0aW9uCisKKyAgICAgICAgaWYgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbjoKKyAgICAgICAgICAgIHRlbXBfc3N0YXRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgInRlbXBfc3N0YXRlXyVzIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQlSCVNJVMnKSkKKyAgICAgICAgICAgIGNvbmZpZ190ZW1wX3NzdGF0ZSA9ICJTU1RBVEVfRElSID0gXCIlc1wiIiAlIHRlbXBfc3N0YXRlX3BhdGgKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfdGVtcF9zc3RhdGUpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBfc3N0YXRlX3BhdGgpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NTVEFURV9ESVInLCAnTkFUSVZFTFNCU1RSSU5HJ10pCisgICAgICAgIHNlbGYuc3N0YXRlX3BhdGggPSBiYl92YXJzWydTU1RBVEVfRElSJ10KKyAgICAgICAgc2VsZi5ob3N0ZGlzdHJvID0gYmJfdmFyc1snTkFUSVZFTFNCU1RSSU5HJ10KKyAgICAgICAgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlID0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgsIHNlbGYuaG9zdGRpc3RybykKKworICAgICAgICBpZiBhZGRfbG9jYWxfbWlycm9yczoKKyAgICAgICAgICAgIGNvbmZpZ19zZXRfc3N0YXRlX2lmX25vdF9zZXQgPSAnU1NUQVRFX01JUlJPUlMgPz0gIiInCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NldF9zc3RhdGVfaWZfbm90X3NldCkKKyAgICAgICAgICAgIGZvciBsb2NhbF9taXJyb3IgaW4gYWRkX2xvY2FsX21pcnJvcnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmpvaW4obG9jYWxfbWlycm9yKSA9PSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCksIG1zZz0nQ2Fubm90IGFkZCB0aGUgY3VycmVudCBzc3RhdGUgcGF0aCBhcyBhIHNzdGF0ZSBtaXJyb3InKQorICAgICAgICAgICAgICAgIGNvbmZpZ19zc3RhdGVfbWlycm9yID0gIlNTVEFURV9NSVJST1JTICs9IFwiZmlsZTovLy4qIGZpbGU6Ly8vJXMvUEFUSFwiIiAlIGxvY2FsX21pcnJvcgorICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc3N0YXRlX21pcnJvcikKKworICAgICMgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBzc3RhdGUgZmlsZXMKKyAgICBkZWYgc2VhcmNoX3NzdGF0ZShzZWxmLCBmaWxlbmFtZV9yZWdleCwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi5zc3RhdGVfcGF0aCk6CisgICAgICAgICAgICBpZiBkaXN0cm9fc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuaG9zdGRpc3Rybywgcm9vdCk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCisgICAgICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuc3N0YXRlX3BhdGgsIHJvb3QpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQorICAgICAgICByZXR1cm4gcmVzdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OTAwODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQpAQCAtMCwwICsxLDQ5NiBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgZ2xvYgoraW1wb3J0IHN1YnByb2Nlc3MKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuc3N0YXRlIGltcG9ydCBTU3RhdGVCYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworaW1wb3J0IGJiLnNpZ2dlbgorCitjbGFzcyBTU3RhdGVUZXN0cyhTU3RhdGVCYXNlKToKKworICAgICMgVGVzdCBzc3RhdGUgZmlsZXMgY3JlYXRpb24gYW5kIHRoZWlyIGxvY2F0aW9uCisgICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihzZWxmLCB0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPVRydWUpOgorICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKKworICAgICAgICBpZiAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbjoKKyAgICAgICAgICAgIGJpdGJha2UoWyctY2NsZWFuJ10gKyB0YXJnZXRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCisKKyAgICAgICAgYml0YmFrZSh0YXJnZXRzKQorICAgICAgICBmaWxlX3RyYWNrZXIgPSBbXQorICAgICAgICByZXN1bHRzID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCisgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYzoKKyAgICAgICAgICAgIGZvciByIGluIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgaWYgci5lbmRzd2l0aCgoIl9wb3B1bGF0ZV9saWMudGd6IiwgIl9wb3B1bGF0ZV9saWMudGd6LnNpZ2luZm8iLCAiX2ZldGNoLnRnei5zaWdpbmZvIiwgIl91bnBhY2sudGd6LnNpZ2luZm8iLCAiX3BhdGNoLnRnei5zaWdpbmZvIikpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGZpbGVfdHJhY2tlci5hcHBlbmQocikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVfdHJhY2tlciA9IHJlc3VsdHMKKworICAgICAgICBpZiBzaG91bGRfcGFzczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlX3RyYWNrZXIgLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSBmaWxlcyBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZpbGVfdHJhY2tlciAsIG1zZz0iRm91bmQgc3N0YXRlIGZpbGVzIGluIHRoZSB3cm9uZyBwbGFjZSBmb3I6ICVzIChmb3VuZCAlcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihmaWxlX3RyYWNrZXIpKSkKKworICAgIEBPRVRlc3RJRCg5NzUpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19zcGVjaWZpY19wYXNzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3NCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX3NwZWNpZmljX2ZhaWwoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9RmFsc2UpCisKKyAgICBAT0VUZXN0SUQoOTc2KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fbm9uc3BlY2lmaWNfcGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzc1KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fbm9uc3BlY2lmaWNfZmFpbChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9RmFsc2UpCisKKyAgICAjIFRlc3QgdGhlIHNzdGF0ZSBmaWxlcyBkZWxldGlvbiBwYXJ0IG9mIHRoZSBkb19jbGVhbnNzdGF0ZSB0YXNrCisgICAgZGVmIHJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2soc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKToKKyAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCisKKyAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCisKKyAgICAgICAgYml0YmFrZSh0YXJnZXRzKQorICAgICAgICB0Z3pfY3JlYXRlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGd6X2NyZWF0ZWQsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIC50Z3ogZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIodGd6X2NyZWF0ZWQpKSkKKworICAgICAgICBzaWdpbmZvX2NyZWF0ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC5zaWdpbmZvJCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaWdpbmZvX2NyZWF0ZWQsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIC5zaWdpbmZvIGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHNpZ2luZm9fY3JlYXRlZCkpKQorCisgICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQorICAgICAgICB0Z3pfcmVtb3ZlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHRnel9yZW1vdmVkLCBtc2c9ImRvX2NsZWFuc3N0YXRlIGRpZG4ndCByZW1vdmUgLnRneiBzc3RhdGUgZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIodGd6X3JlbW92ZWQpKSkKKworICAgIEBPRVRlc3RJRCg5NzcpCisgICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fc3BlY2lmaWNfbm9uc3BlY2lmaWMoc2VsZik6CisgICAgICAgIHRhcmdldHMgPSBbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10KKyAgICAgICAgdGFyZ2V0cy5hcHBlbmQoJ2xpbnV4LWxpYmMtaGVhZGVycycpCisgICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayh0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3NikKKyAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19ub25zcGVjaWZpYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3NykKKyAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19zcGVjaWZpYyhzZWxmKToKKyAgICAgICAgdGFyZ2V0cyA9IFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXQorICAgICAgICB0YXJnZXRzLmFwcGVuZCgnbGludXgtbGliYy1oZWFkZXJzJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKworICAgICMgVGVzdCByZWJ1aWxkaW5nIG9mIGRpc3Ryby1zcGVjaWZpYyBzc3RhdGUgZmlsZXMKKyAgICBkZWYgcnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKHNlbGYsIHRhcmdldHMsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpOgorICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKKworICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKKworICAgICAgICBiaXRiYWtlKHRhcmdldHMpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlKQorICAgICAgICBmaWx0ZXJlZF9yZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKKyAgICAgICAgICAgIGlmIHIuZW5kc3dpdGgoKCJfcG9wdWxhdGVfbGljLnRneiIsICJfcG9wdWxhdGVfbGljLnRnei5zaWdpbmZvIikpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaWx0ZXJlZF9yZXN1bHRzLmFwcGVuZChyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsdGVyZWRfcmVzdWx0cyA9PSBbXSwgbXNnPSJGb3VuZCBkaXN0cm8gbm9uLXNwZWNpZmljIHNzdGF0ZSBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihmaWx0ZXJlZF9yZXN1bHRzKSkpCisgICAgICAgIGZpbGVfdHJhY2tlcl8xID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlX3RyYWNrZXJfMSkgPj0gbGVuKHRhcmdldHMpLCBtc2cgPSAiTm90IGFsbCBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKKworICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSArICJfb2xkIikKKyAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSwgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlICsgIl9vbGQiKQorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSkKKworICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbiddICsgdGFyZ2V0cykKKyAgICAgICAgYml0YmFrZSh0YXJnZXRzKQorICAgICAgICBmaWxlX3RyYWNrZXJfMiA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZV90cmFja2VyXzIpID49IGxlbih0YXJnZXRzKSwgbXNnID0gIk5vdCBhbGwgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCisKKyAgICAgICAgbm90X3JlY3JlYXRlZCA9IFt4IGZvciB4IGluIGZpbGVfdHJhY2tlcl8xIGlmIHggbm90IGluIGZpbGVfdHJhY2tlcl8yXQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90X3JlY3JlYXRlZCA9PSBbXSwgbXNnPSJUaGUgZm9sbG93aW5nIHNzdGF0ZSBmaWxlcyB3YXJlIG5vdCByZWNyZWF0ZWQ6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBub3RfcmVjcmVhdGVkKSkpCisKKyAgICAgICAgY3JlYXRlZF9vbmNlID0gW3ggZm9yIHggaW4gZmlsZV90cmFja2VyXzIgaWYgeCBub3QgaW4gZmlsZV90cmFja2VyXzFdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGVkX29uY2UgPT0gW10sIG1zZz0iVGhlIGZvbGxvd2luZyBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIG9ubHkgaW4gdGhlIHNlY29uZCBydW46ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBjcmVhdGVkX29uY2UpKSkKKworICAgIEBPRVRlc3RJRCgxNzUpCisgICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX2Nyb3NzX25hdGl2ZV90YXJnZXRzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLWNyb3NzLScgKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzIpCisgICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX2Nyb3NzX3RhcmdldChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1jcm9zcy0nICsgc2VsZi50dW5lX2FyY2hdLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzMpCisgICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX25hdGl2ZV90YXJnZXQoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtbmF0aXZlJ10sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKworICAgICMgVGVzdCB0aGUgc3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQgc2NyaXB0LiBFYWNoIGVsZW1lbnQgaW4gdGhlIGdsb2JhbF9jb25maWcgbGlzdCBpcyB1c2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgdGFyZ2V0X2NvbmZpZyBsaXN0CisgICAgIyBnbG9iYWxfY29uZmlnIGVsZW1lbnRzIGFyZSBleHBlY3RlZCB0byBub3QgZ2VuZXJhdGUgYW55IHNzdGF0ZSBmaWxlcyB0aGF0IHdvdWxkIGJlIHJlbW92ZWQgYnkgc3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQuc2ggKHN1Y2ggYXMgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIE1BQ0hJTkUpCisgICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdChzZWxmLCB0YXJnZXQsIGdsb2JhbF9jb25maWc9WycnXSwgdGFyZ2V0X2NvbmZpZz1bJyddLCBpZ25vcmVfcGF0dGVybnM9W10pOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYmFsX2NvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldF9jb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZ2xvYmFsX2NvbmZpZykgPT0gbGVuKHRhcmdldF9jb25maWcpLCBtc2c9J0xpc3RzIGdsb2JhbF9jb25maWcgYW5kIHRhcmdldF9jb25maWcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzJykKKyAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIGFkZF9sb2NhbF9taXJyb3JzPVtzZWxmLnNzdGF0ZV9wYXRoXSkKKworICAgICAgICAjIElmIGJ1aWxkaGlzdG9yeSBpcyBlbmFibGVkLCB3ZSBuZWVkIHRvIGRpc2FibGUgdmVyc2lvbi1nb2luZy1iYWNrd2FyZHMKKyAgICAgICAgIyBRQSBjaGVja3MgZm9yIHRoaXMgdGVzdC4gSXQgbWF5IHJlcG9ydCBlcnJvcnMgb3RoZXJ3aXNlLgorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0VSUk9SX1FBX3JlbW92ZSA9ICJ2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcyInKQorCisgICAgICAgICMgRm9yIG5vdCB0aGlzIG9ubHkgY2hlY2tzIGlmIHJhbmRvbSBzc3RhdGUgdGFza3MgYXJlIGhhbmRsZWQgY29ycmVjdGx5IGFzIGEgZ3JvdXAuCisgICAgICAgICMgSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgYWRkIGNvbnRyb2wgb3ZlciB3aGF0IHRhc2tzIHdlIGNoZWNrIGZvci4KKworICAgICAgICBzc3RhdGVfYXJjaHNfbGlzdCA9IFtdCisgICAgICAgIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgPSBbXQorICAgICAgICBmb3IgaWR4IGluIHJhbmdlKGxlbih0YXJnZXRfY29uZmlnKSk6CisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZ2xvYmFsX2NvbmZpZ1tpZHhdKQorICAgICAgICAgICAgc2VsZi5hcHBlbmRfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZ1tpZHhdKQorICAgICAgICAgICAgc3N0YXRlX2FyY2ggPSBnZXRfYmJfdmFyKCdTU1RBVEVfUEtHQVJDSCcsIHRhcmdldCkKKyAgICAgICAgICAgIGlmIG5vdCBzc3RhdGVfYXJjaCBpbiBzc3RhdGVfYXJjaHNfbGlzdDoKKyAgICAgICAgICAgICAgICBzc3RhdGVfYXJjaHNfbGlzdC5hcHBlbmQoc3N0YXRlX2FyY2gpCisgICAgICAgICAgICBpZiB0YXJnZXRfY29uZmlnW2lkeF0gPT0gdGFyZ2V0X2NvbmZpZ1stMV06CisgICAgICAgICAgICAgICAgdGFyZ2V0X3NzdGF0ZV9iZWZvcmVfYnVpbGQgPSBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpCisgICAgICAgICAgICBiaXRiYWtlKCItY2NsZWFuICVzIiAlIHRhcmdldCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UodGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICBpZiB0YXJnZXRfY29uZmlnW2lkeF0gPT0gdGFyZ2V0X2NvbmZpZ1stMV06CisgICAgICAgICAgICAgICAgdGFyZ2V0X3NzdGF0ZV9hZnRlcl9idWlsZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlICs9IFt4IGZvciB4IGluIHRhcmdldF9zc3RhdGVfYWZ0ZXJfYnVpbGQgaWYgeCBub3QgaW4gdGFyZ2V0X3NzdGF0ZV9iZWZvcmVfYnVpbGQgaWYgbm90IGFueShwYXR0ZXJuIGluIHggZm9yIHBhdHRlcm4gaW4gaWdub3JlX3BhdHRlcm5zKV0KKyAgICAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhnbG9iYWxfY29uZmlnW2lkeF0pCisgICAgICAgICAgICBzZWxmLnJlbW92ZV9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnW2lkeF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZyA9ICJidWlsZCBvZiAlcyBmYWlsZWQgd2l0aCAlcyIgJSAodGFyZ2V0LCByZXN1bHQub3V0cHV0KSkKKworICAgICAgICBydW5DbWQoInNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50LnNoIC15IC0tY2FjaGUtZGlyPSVzIC0tcmVtb3ZlLWR1cGxpY2F0ZWQgLS1leHRyYS1hcmNocz0lcyIgJSAoc2VsZi5zc3RhdGVfcGF0aCwgJywnLmpvaW4obWFwKHN0ciwgc3N0YXRlX2FyY2hzX2xpc3QpKSkpCisgICAgICAgIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlID0gW3ggZm9yIHggaW4gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKSBpZiBub3QgYW55KHBhdHRlcm4gaW4geCBmb3IgcGF0dGVybiBpbiBpZ25vcmVfcGF0dGVybnMpXQorCisgICAgICAgIGFjdHVhbF9ub3RfZXhwZWN0ZWQgPSBbeCBmb3IgeCBpbiBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZSBpZiB4IG5vdCBpbiBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlXQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFjdHVhbF9ub3RfZXhwZWN0ZWQsIG1zZz0iRmlsZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGJ1dCB3YXJlIG5vdDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGFjdHVhbF9ub3RfZXhwZWN0ZWQpKSkKKyAgICAgICAgZXhwZWN0ZWRfbm90X2FjdHVhbCA9IFt4IGZvciB4IGluIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgaWYgeCBub3QgaW4gYWN0dWFsX3JlbWFpbmluZ19zc3RhdGVdCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhwZWN0ZWRfbm90X2FjdHVhbCwgbXNnPSJFeHRyYSBmaWxlcyB3YXJlIHJlbW92ZWQ6ICVzIiAnLCAnLmpvaW4obWFwKHN0ciwgZXhwZWN0ZWRfbm90X2FjdHVhbCkpKQorCisgICAgQE9FVGVzdElEKDk3MykKKyAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMShzZWxmKToKKyAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCisgICAgICAgIHRhcmdldF9jb25maWcgPSBbXQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQorCisgICAgQE9FVGVzdElEKDk3OCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMihzZWxmKToKKyAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCisgICAgICAgIHRhcmdldF9jb25maWcgPSBbXQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKKworICAgIEBPRVRlc3RJRCg5NzkpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzMoc2VsZik6CisgICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQorICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4Ni02NCInKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZChnbG9iYWxfY29uZmlnWzBdKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2IicpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKKworICAgIEBPRVRlc3RJRCg5NzQpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX21hY2hpbmUoc2VsZik6CisgICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQorICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4Ni02NCInKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnJykKKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4NiInKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQorCisgICAgQE9FVGVzdElEKDEyNzApCisgICAgZGVmIHRlc3Rfc3N0YXRlXzMyXzY0X3NhbWVfaGFzaChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIGZvciBib3RoIG5hdGl2ZSBhbmQgdGFyZ2V0IHNob3VsZCBub3QgdmFyeSB3aGV0aGVyCisgICAgICAgIHRoZXkncmUgYnVpbHQgb24gYSAzMiBvciA2NCBiaXQgc3lzdGVtLiBSYXRoZXIgdGhhbiByZXF1aXJpbmcgdHdvIGRpZmZlcmVudAorICAgICAgICBidWlsZCBtYWNoaW5lcyBhbmQgcnVubmluZyBhIGJ1aWxkcywgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlcyBjYWxsaW5nIHVuYW1lKCkKKyAgICAgICAgbWFudWFsbHkgYW5kIGNoZWNrIHVzaW5nIGJpdGJha2UgLVMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorTUFDSElORSA9ICJxZW11eDg2IgorVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCitCVUlMRF9BUkNIID0gIng4Nl82NCIKK0JVSUxEX09TID0gImxpbnV4IgorU0RLTUFDSElORSA9ICJ4ODZfNjQiCitQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0gcGFja2FnZV9pcGsgcGFja2FnZV9kZWIiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitNQUNISU5FID0gInFlbXV4ODYiCitUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCitCVUlMRF9BUkNIID0gImk2ODYiCitCVUlMRF9PUyA9ICJsaW51eCIKK1NES01BQ0hJTkUgPSAiaTY4NiIKK1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBpZiAiY29yZS1pbWFnZS1zYXRvIiBpbiByb290OgorICAgICAgICAgICAgICAgICAgICAjIFNES01BQ0hJTkUgY2hhbmdpbmcgd2lsbCBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgIyBkb19yb290ZnMvZG9fdGVzdGltYWdlL2RvX2J1aWxkIHN0YW1wcyBvZiBpbWFnZXMgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgIyBpcyBzYWZlIHRvIGlnbm9yZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBmLmV4dGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkgZm9yIG5hbWUgaW4gZmlsZXMpCisgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQorICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpLnJlcGxhY2UoImk2ODYtbGludXgiLCAieDg2XzY0LWxpbnV4IikucmVwbGFjZSgiaTY4NiIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLWxpbnV4IiwgIng4Nl82NCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLWxpbnV4IiwgKSBmb3IgeCBpbiBmaWxlczJdCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisKKyAgICBAT0VUZXN0SUQoMTI3MSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfbmF0aXZlbHNic3RyaW5nX3NhbWVfaGFzaChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIgTkFUSVZFTFNCU1RSSU5HIGlzCisgICAgICAgIGRldGVjdGVkLiBSYXRoZXIgdGhhbiByZXF1aXJpbmcgdHdvIGRpZmZlcmVudCBidWlsZCBtYWNoaW5lcyBhbmQgcnVubmluZworICAgICAgICBidWlsZHMsIG92ZXJyaWRlIHRoZSB2YXJpYWJsZXMgbWFudWFsbHkgYW5kIGNoZWNrIHVzaW5nIGJpdGJha2UgLVMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK05BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQVwiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK05BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQlwiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSBbXQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgZi5leHRlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpIGZvciBuYW1lIGluIGZpbGVzKQorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKKyAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKSBmb3IgeCBpbiBmaWxlczJdCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisgICAgQE9FVGVzdElEKDEzNjgpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3Moc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiBhbGxhcmNoIHBhY2thZ2VzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIKKyAgICAgICAgTUFDSElORSBpcyBzZXQuIENoZWNrIHRoaXMgdXNpbmcgYml0YmFrZSAtUy4KKyAgICAgICAgQWxzbywgcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSB0ZXN0LCBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCisgICAgICAgICIiIgorCisgICAgICAgIGNvbmZpZ0EgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitNQUNISU5FID0gXCJxZW11eDg2LTY0XCIKKyIiIgorICAgICAgICBjb25maWdCID0gIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK01BQ0hJTkUgPSBcInFlbXVhcm1cIgorIiIiCisgICAgICAgIHNlbGYuc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3MoY29uZmlnQSwgY29uZmlnQikKKworICAgIEBPRVRlc3RJRCgxNjQ1KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzX211bHRpbGliKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgYWxsYXJjaCBtdWx0aWxpYiBwYWNrYWdlcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyCisgICAgICAgIE1BQ0hJTkUgaXMgc2V0LiBDaGVjayB0aGlzIHVzaW5nIGJpdGJha2UgLVMuCisgICAgICAgIEFsc28sIHJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgdGVzdCwgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbgorICAgICAgICB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgorICAgICAgICAiIiIKKworICAgICAgICBjb25maWdBID0gIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCityZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgorTVVMVElMSUJTID0gXCJtdWx0aWxpYjpsaWIzMlwiCitERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSBcIng4NlwiCisiIiIKKyAgICAgICAgY29uZmlnQiA9ICIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitNQUNISU5FID0gXCJxZW11YXJtXCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSBcIlwiCisiIiIKKyAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQorCisgICAgZGVmIHNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKHNlbGYsIGNvbmZpZ0EsIGNvbmZpZ0IpOgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ0EpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdCKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSB7fQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmICJtZXRhLWVudmlyb25tZW50IiBpbiByb290IG9yICJjcm9zcy1jYW5hZGlhbiIgaW4gcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmICJkb19idWlsZCIgbm90IGluIG5hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIDEuNC4xK2dpdEFVVE9JTkMrMzAyZmNhOWY0Yy1yMC5kb19wYWNrYWdlX3dyaXRlX2lway5zaWdkYXRhLmYzYTJhMzg2OTdkYTc0M2YwZGJlZDhiNTZhYWZjZjc5CisgICAgICAgICAgICAgICAgICAgICAgICAoXywgdGFzaywgXywgc2hhc2gpID0gbmFtZS5yc3BsaXQoIi4iLCAzKQorICAgICAgICAgICAgICAgICAgICAgICAgZltvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShyb290KSwgdGFzayldID0gc2hhc2gKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy9hbGwiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi0iICsgc2VsZi50YXJnZXRfb3MpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvYWxsIiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItIiArIHNlbGYudGFyZ2V0X29zKQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKyAgICAgICAgbmF0aXZlc2RrZGlyID0gb3MucGF0aC5iYXNlbmFtZShnbG9iLmdsb2Ioc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvKi1uYXRpdmVzZGsqLWxpbnV4IilbMF0pCisKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIgKyBuYXRpdmVzZGtkaXIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIiArIG5hdGl2ZXNka2RpcikKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisgICAgQE9FVGVzdElEKDEzNjkpCisgICAgZGVmIHRlc3Rfc3N0YXRlX3NhbWV0dW5lX3NhbWVzaWdzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIGlkZW50aWNhbCBtYWNoaW5lcyAodXNpbmcgdGhlIHNhbWUgdHVuZSkgc2hvdWxkIGJlIHRoZQorICAgICAgICBzYW1lLCBhcGFydCBmcm9tIGNoYW5nZXMgd2l0aGluIHRoZSBtYWNoaW5lIHNwZWNpZmljIHN0YW1wcyBkaXJlY3RvcnkuIFdlIHVzZSB0aGUKKyAgICAgICAgcWVtdXg4NmNvcHkgbWFjaGluZSB0byB0ZXN0IHRoaXMuIEFsc28gaW5jbHVkZSBtdWx0aWxpYnMgaW4gdGhlIHRlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK01BQ0hJTkUgPSBcInFlbXV4ODZcIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKK0RFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9ICJ4ODYiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorTUFDSElORSA9IFwicWVtdXg4NmNvcHlcIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKK0RFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9ICJ4ODYiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgIm1ldGEtZW52aXJvbm1lbnQiIGluIHJvb3Qgb3IgImNyb3NzLWNhbmFkaWFuIiBpbiByb290OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgInFlbXV4ODZjb3B5LSIgaW4gcm9vdCBvciAicWVtdXg4Ni0iIGluIHJvb3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiAiZG9fYnVpbGQiIG5vdCBpbiBuYW1lIGFuZCAiZG9fcG9wdWxhdGVfc2RrIiBub3QgaW4gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGYuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcyIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMiKQorICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKworICAgIEBPRVRlc3RJRCgxNDk4KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9ub29wX3NhbWVzaWdzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIGJ1aWxkcyB3aXRoIHRoZXNlIHZhcmlhYmxlcyBjaGFuZ2VkIG9yCisgICAgICAgIGNsYXNzZXMgaW5oZXJpdHMgc2hvdWxkIGJlIHRoZSBzYW1lLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoIgorQkJfTlVNQkVSX1RIUkVBRFMgPSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KCl9IgorUEFSQUxMRUxfTUFLRSA9ICItaiAxIgorRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDEiCitUSU1FID0gIjExMTExMSIKK0RBVEUgPSAiMjAxNjExMTEiCitJTkhFUklUX3JlbW92ZSA9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IHVuaW5hdGl2ZSIKK2h0dHBfcHJveHkgPSAiIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi9kb3dubG9hZDEiKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCitCQl9OVU1CRVJfVEhSRUFEUyA9ICIke0BvZS51dGlscy5jcHVfY291bnQoKSsxfSIKK1BBUkFMTEVMX01BS0UgPSAiLWogMiIKK0RMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWQyIgorVElNRSA9ICIyMjIyMjIiCitEQVRFID0gIjIwMTYxMjEyIgorIyBBbHdheXMgcmVtb3ZlIHVuaW5hdGl2ZSBhcyB3ZSdyZSBjaGFuZ2luZyBwcm94aWVzCitJTkhFUklUX3JlbW92ZSA9ICJ1bmluYXRpdmUiCitJTkhFUklUICs9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IgoraHR0cF9wcm94eSA9ICJodHRwOi8vZXhhbXBsZS5jb20vIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvZG93bmxvYWQyIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSB7fQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNoYXNoID0gbmFtZS5yc3BsaXQoJy4nLCAxKQorICAgICAgICAgICAgICAgICAgICAjIEV4dHJhY3QganVzdCB0aGUgbWFjaGluZSBhbmQgcmVjaXBlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnNlcC5qb2luKHJvb3QucnNwbGl0KG9zLnNlcCwgMilbLTI6XSArIFtuYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgZltiYXNlXSA9IHNoYXNoCisgICAgICAgICAgICByZXR1cm4gZgorCisgICAgICAgIGRlZiBjb21wYXJlX3NpZ2ZpbGVzKGZpbGVzLCBmaWxlczEsIGZpbGVzMiwgY29tcGFyZT1GYWxzZSk6CisgICAgICAgICAgICBmb3IgayBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBpZiBrIGluIGZpbGVzMSBhbmQgayBpbiBmaWxlczI6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyBkaWZmZXJzOiIgJSBrKQorICAgICAgICAgICAgICAgICAgICBpZiBjb21wYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2lnZGF0YWZpbGUxID0gc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczFba10KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2RhdGFmaWxlMiA9IHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iICsgayArICIuIiArIGZpbGVzMltrXQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gYmIuc2lnZ2VuLmNvbXBhcmVfc2lnZmlsZXMoc2lnZGF0YWZpbGUxLCBzaWdkYXRhZmlsZTIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBvdXRwdXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1xuJy5qb2luKG91dHB1dCkpCisgICAgICAgICAgICAgICAgZWxpZiBrIGluIGZpbGVzMSBhbmQgayBub3QgaW4gZmlsZXMyOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaW4gZmlsZXMxIiAlIGspCisgICAgICAgICAgICAgICAgZWxpZiBrIG5vdCBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaW4gZmlsZXMyIiAlIGspCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0ICJzaG91bGRuJ3QgcmVhY2ggaGVyZSIKKworICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQorICAgICAgICAjIFJlbW92ZSBpdGVtcyB0aGF0IGFyZSBpZGVudGljYWwgaW4gYm90aCBzZXRzCisgICAgICAgIGZvciBrLHYgaW4gZmlsZXMxLml0ZW1zKCkgJiBmaWxlczIuaXRlbXMoKToKKyAgICAgICAgICAgIGRlbCBmaWxlczFba10KKyAgICAgICAgICAgIGRlbCBmaWxlczJba10KKyAgICAgICAgaWYgbm90IGZpbGVzMSBhbmQgbm90IGZpbGVzMjoKKyAgICAgICAgICAgICMgTm8gY2hhbmdlcywgc28gd2UncmUgZG9uZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZmlsZXMgPSBsaXN0KGZpbGVzMS5rZXlzKCkgfCBmaWxlczIua2V5cygpKQorICAgICAgICAjIHRoaXMgaXMgYW4gZXhwZW5zaXZlIGNvbXB1dGF0aW9uLCB0aHVzIGp1c3QgY29tcGFyZSB0aGUgZmlyc3QgJ21heF9zaWdmaWxlc190b19jb21wYXJlJyBrIGZpbGVzCisgICAgICAgIG1heF9zaWdmaWxlc190b19jb21wYXJlID0gMjAKKyAgICAgICAgZmlyc3QsIHJlc3QgPSBmaWxlc1s6bWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmVdLCBmaWxlc1ttYXhfc2lnZmlsZXNfdG9fY29tcGFyZTpdCisgICAgICAgIGNvbXBhcmVfc2lnZmlsZXMoZmlyc3QsIGZpbGVzMS5rZXlzKCksIGZpbGVzMi5rZXlzKCksIGNvbXBhcmU9VHJ1ZSkKKyAgICAgICAgY29tcGFyZV9zaWdmaWxlcyhyZXN0LCBmaWxlczEua2V5cygpLCBmaWxlczIua2V5cygpLCBjb21wYXJlPUZhbHNlKQorCisgICAgICAgIHNlbGYuZmFpbCgic3N0YXRlIGhhc2hlcyBub3QgaWRlbnRpY2FsLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODg5YTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weQpAQCAtMCwwICsxLDIzMSBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGJiLnRpbmZvaWwKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBUaW5mb2lsVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiIgQmFzaWMgdGVzdHMgZm9yIHRoZSB0aW5mb2lsIEFQSSAiIiIKKworICAgIEBPRVRlc3RJRCgxNTY4KQorICAgIGRlZiB0ZXN0X2dldHZhcihzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCisgICAgICAgICAgICBtYWNoaW5lID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ01BQ0hJTkUnKQorICAgICAgICAgICAgaWYgbm90IG1hY2hpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZ2V0IE1BQ0hJTkUgdmFsdWUgLSByZXR1cm5lZCAlcycgJSBtYWNoaW5lKQorCisgICAgQE9FVGVzdElEKDE1NjkpCisgICAgZGVmIHRlc3RfZXhwYW5kKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKKyAgICAgICAgICAgIGV4cHIgPSAnJHtAb3MuZ2V0cGlkKCl9JworICAgICAgICAgICAgcGlkID0gdGluZm9pbC5jb25maWdfZGF0YS5leHBhbmQoZXhwcikKKyAgICAgICAgICAgIGlmIG5vdCBwaWQ6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZXhwYW5kICIlcyIgLSByZXR1cm5lZCAlcycgJSAoZXhwciwgcGlkKSkKKworICAgIEBPRVRlc3RJRCgxNTcwKQorICAgIGRlZiB0ZXN0X2dldHZhcl9iYl9vcmlnZW52KHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKKyAgICAgICAgICAgIG9yaWdlbnYgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJfT1JJR0VOVicsIEZhbHNlKQorICAgICAgICAgICAgaWYgbm90IG9yaWdlbnY6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZ2V0IEJCX09SSUdFTlYgdmFsdWUgLSByZXR1cm5lZCAlcycgJSBvcmlnZW52KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnZW52LmdldFZhcignSE9NRScsIEZhbHNlKSwgb3MuZW52aXJvblsnSE9NRSddKQorCisgICAgQE9FVGVzdElEKDE1NzEpCisgICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCisgICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJworICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCisgICAgICAgICAgICBpZiBub3QgYmVzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ1BOJykpCisKKyAgICBAT0VUZXN0SUQoMTU3MikKKyAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGVfY29weV9leHBhbmQoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKKyAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCisgICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGlmIG5vdCBiZXN0OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10pCisgICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgdmFyaWFibGUgdmFsdWVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignUE4nKSkKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBleHBhbmRpbmcgYSB2YWx1ZSB0aGF0IGluY2x1ZGVzIGEgdmFyaWFibGUgcmVmZXJlbmNlIHdvcmtzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignQlBOJykpCisgICAgICAgICAgICAjIE5vdyBjaGVjayB0aGF0IGNoYW5naW5nIHRoZSByZWZlcmVuY2VkIHZhcmlhYmxlJ3MgdmFsdWUgaW4gYSBjb3B5IGdpdmVzIHRoYXQKKyAgICAgICAgICAgICMgdmFsdWUgd2hlbiBleHBhbmRpbmcKKyAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShyZCkKKyAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BOJywgJ2hlbGxvJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJywgbG9jYWxkYXRhLmdldFZhcignQlBOJykpCisKKyAgICBAT0VUZXN0SUQoMTU3MykKKyAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGVfaW5pdGlhbF9kYXRhc3RvcmUoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKKyAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCisgICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGlmIG5vdCBiZXN0OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgZGNvcHkgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKKyAgICAgICAgICAgIGRjb3B5LnNldFZhcignTVlWQVJJQUJMRScsICdzb21ldmFsdWUnKQorICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10sIGNvbmZpZ19kYXRhPWRjb3B5KQorICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IHZhcmlhYmxlIHZhbHVlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc29tZXZhbHVlJywgcmQuZ2V0VmFyKCdNWVZBUklBQkxFJykpCisKKyAgICBAT0VUZXN0SUQoMTU3NCkKKyAgICBkZWYgdGVzdF9saXN0X3JlY2lwZXMoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKKyAgICAgICAgICAgICMgQ2hlY2sgcGtnX3BuCisgICAgICAgICAgICBjaGVja3BucyA9IFsndGFyJywgJ2F1dG9tYWtlJywgJ2NvcmV1dGlscycsICdtNC1uYXRpdmUnLCAnbmF0aXZlc2RrLWdjYyddCisgICAgICAgICAgICBwa2dfcG4gPSB0aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddLnBrZ19wbgorICAgICAgICAgICAgZm9yIHBuIGluIGNoZWNrcG5zOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocG4sIHBrZ19wbikKKyAgICAgICAgICAgICMgQ2hlY2sgcGtnX2ZuCisgICAgICAgICAgICBjaGVja2ZucyA9IHsnbmF0aXZlc2RrLWdjYyc6ICdedmlydHVhbDpuYXRpdmVzZGs6LionLCAnY29yZXV0aWxzJzogJy4qL2NvcmV1dGlsc18uKi5iYid9CisgICAgICAgICAgICBmb3IgZm4sIHBuIGluIHRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX2ZuLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgcG4gaW4gY2hlY2twbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHBuIGluIGNoZWNrZm5zOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGNoZWNrZm5zW3BuXSwgZm4pLCAnRW50cnkgZm9yICVzOiAlcyBkaWQgbm90IG1hdGNoICVzJyAlIChwbiwgZm4sIGNoZWNrZm5zW3BuXSkpCisgICAgICAgICAgICAgICAgICAgIGNoZWNrcG5zLnJlbW92ZShwbikKKyAgICAgICAgICAgIGlmIGNoZWNrcG5zOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcGtnX2ZuIGVudHJpZXMgZm9yOiAlcycgJSAnLCAnLmpvaW4oY2hlY2twbnMpKQorCisgICAgQE9FVGVzdElEKDE1NzUpCisgICAgZGVmIHRlc3Rfd2FpdF9ldmVudChzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCisKKyAgICAgICAgICAgIHRpbmZvaWwuc2V0X2V2ZW50X21hc2soWydiYi5ldmVudC5GaWxlc01hdGNoaW5nRm91bmQnLCAnYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkJ10pCisKKyAgICAgICAgICAgICMgTmVlZCB0byBkcmFpbiBldmVudHMgb3RoZXJ3aXNlIGV2ZW50cyB0aGF0IHdlcmUgbWFza2VkIG1heSBzdGlsbCBiZSBpbiB0aGUgcXVldWUKKyAgICAgICAgICAgIHdoaWxlIHRpbmZvaWwud2FpdF9ldmVudCgpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgcGF0dGVybiA9ICdjb25mJworICAgICAgICAgICAgcmVzID0gdGluZm9pbC5ydW5fY29tbWFuZCgnZmluZEZpbGVzTWF0Y2hpbmdJbkRpcicsIHBhdHRlcm4sICdjb25mL21hY2hpbmUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcykKKworICAgICAgICAgICAgZXZlbnRyZWNlaXZlZCA9IEZhbHNlCisgICAgICAgICAgICBjb21tYW5kY29tcGxldGUgPSBGYWxzZQorICAgICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgIyBXYWl0IGZvciA1cyBpbiB0b3RhbCBzbyB3ZSdkIGRldGVjdCBzcHVyaW91cyBoZWFydGJlYXQgZXZlbnRzIGZvciBleGFtcGxlCisgICAgICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSAtIHN0YXJ0IDwgNToKKyAgICAgICAgICAgICAgICBldmVudCA9IHRpbmZvaWwud2FpdF9ldmVudCgxKQorICAgICAgICAgICAgICAgIGlmIGV2ZW50OgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZGNvbXBsZXRlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdHRlcm4sIGV2ZW50Ll9wYXR0ZXJuKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncWVtdWFybS5jb25mJywgZXZlbnQuX21hdGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudHJlY2VpdmVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXZlbnQ6ICVzJyAlIGV2ZW50KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWFuZGNvbXBsZXRlLCAnVGltZWQgb3V0IHdhaXRpbmcgZm9yIENvbW1hbmRDb21wbGV0ZWQgZXZlbnQgZnJvbSBiaXRiYWtlIHNlcnZlcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXZlbnRyZWNlaXZlZCwgJ0RpZCBub3QgcmVjZWl2ZSBGaWxlc01hdGNoaW5nRm91bmQgZXZlbnQgZnJvbSBiaXRiYWtlIHNlcnZlcicpCisKKyAgICBAT0VUZXN0SUQoMTU3NikKKyAgICBkZWYgdGVzdF9zZXR2YXJpYWJsZV9jbGVhbihzZWxmKToKKyAgICAgICAgIyBGaXJzdCBjaGVjayB0aGF0IHNldFZhcmlhYmxlIGFmZmVjdHMgdGhlIGRhdGFzdG9yZQorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKKyAgICAgICAgICAgIHRpbmZvaWwucnVuX2NvbW1hbmQoJ3NldFZhcmlhYmxlJywgJ1RFU1RWQVInLCAnc3BlY2lhbHZhbHVlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgc2V0VmFyaWFibGUgaXMgbm90IHJlZmxlY3RlZCBpbiBjbGllbnQtc2lkZSBnZXRWYXIoKScpCisKKyAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCB0aGUgc2V0VmFyaWFibGUncyBlZmZlY3RzIGFyZSBubyBsb25nZXIgcHJlc2VudAorICAgICAgICAjICh0aGlzIG1heSBsZWdpdGltYXRlbHkgYnJlYWsgaW4gZnV0dXJlIGlmIHdlIHN0b3AgcmVpbml0aWFsaXNpbmcKKyAgICAgICAgIyB0aGUgZGF0YXN0b3JlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGhhdmUgdG8gcmVjb25zaWRlciB1c2Ugb2YKKyAgICAgICAgIyBzZXRWYXJpYWJsZSBlbnRpcmVseSkKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJyksICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIHNldFZhcmlhYmxlIGlzIHN0aWxsIHByZXNlbnQhJykKKworICAgICAgICAjIE5vdyBjaGVjayB0aGF0IHNldFZhciBvbiB0aGUgbWFpbiBkYXRhc3RvcmUgd29ya3MgKHVzZXMgc2V0VmFyaWFibGUgaW50ZXJuYWxseSkKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICdzcGVjaWFsdmFsdWUnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRWYXJpYWJsZScsICdURVNUVkFSJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhcigpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyKCknKQorCisgICAgQE9FVGVzdElEKDE4ODQpCisgICAgZGVmIHRlc3RfZGF0YXN0b3JlX29wZXJhdGlvbnMoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQorICAgICAgICAgICAgIyBUZXN0IHNldFZhckZsYWcoKSAvIGdldFZhckZsYWcoKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJywgJ2ZsYWd2YWwnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ2ZsYWd2YWwnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhckZsYWcoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhckZsYWcoKScpCisgICAgICAgICAgICAjIFRlc3QgZGVsVmFyRmxhZygpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhckZsYWcoJ1RFU1RWQVInLCAnb3RoZXJmbGFnJywgJ290aGVydmFsdWUnKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5kZWxWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJmbGFnIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyRmxhZygpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygpJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ290aGVyZmxhZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb3RoZXJ2YWx1ZScsICdWYXJmbGFnIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyRmxhZygpIGNhdXNlZCB1bnJlbGF0ZWQgZmxhZyB0byBiZSByZW1vdmVkJykKKyAgICAgICAgICAgICMgVGVzdCBkZWxWYXIoKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAndmFydmFsdWUnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAndmFydmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhcigpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyKCknKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5kZWxWYXIoJ1RFU1RWQVInKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyaWFibGUgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXIoKSBhcHBlYXJzIHRvIHN0aWxsIGhhdmUgYSB2YWx1ZScpCisgICAgICAgICAgICAjIFRlc3QgcmVuYW1lVmFyKCkKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFST0xEJywgJ29yaWd2YWx1ZScpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnJlbmFtZVZhcignVEVTVFZBUk9MRCcsICdURVNUVkFSTkVXJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVJPTEQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmlhYmxlIHJlbmFtZWQgdXNpbmcgY29uZmlnX2RhdGEucmVuYW1lVmFyKCkgc3RpbGwgc2VlbXMgdG8gZXhpc3QnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUk5FVycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb3JpZ3ZhbHVlJywgJ1ZhcmlhYmxlIHJlbmFtZWQgdXNpbmcgY29uZmlnX2RhdGEucmVuYW1lVmFyKCkgZG9lcyBub3QgYXBwZWFyIHdpdGggbmV3IG5hbWUnKQorICAgICAgICAgICAgIyBUZXN0IG92ZXJyaWRlcworICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAnb3JpZ2luYWwnKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJfb3ZlcnJpZGVvbmUnLCAnb25lJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSX292ZXJyaWRldHdvJywgJ3R3bycpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmFwcGVuZFZhcignT1ZFUlJJREVTJywgJzpvdmVycmlkZW9uZScpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvbmUnLCAnVmFyaWFibGUgb3ZlcnJpZGVzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHknKQorCisgICAgZGVmIHRlc3RfdmFyaWFibGVfaGlzdG9yeShzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHZhcmlhYmxlIGhpc3Rvcnkgd29ya3Mgd2hlbiB0cmFja2luZz1UcnVlCisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKHRyYWNraW5nPVRydWUpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCisgICAgICAgICAgICAjIE5vdGUgdGhhdCBfdHJhY2tpbmcgZm9yIGFueSBkYXRhc3RvcmUgd2UgZ2V0IHdpbGwgYmUKKyAgICAgICAgICAgICMgZmFsc2UgaGVyZSwgdGhhdCdzIGN1cnJlbnRseSBleHBlY3RlZCAtIHNvIHdlIGNhbid0IGNoZWNrCisgICAgICAgICAgICAjIGZvciB0aGF0CisgICAgICAgICAgICBoaXN0b3J5ID0gdGluZm9pbC5jb25maWdfZGF0YS52YXJoaXN0b3J5LnZhcmlhYmxlKCdETF9ESVInKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGhpc3Rvcnk6CisgICAgICAgICAgICAgICAgaWYgZW50cnlbJ2ZpbGUnXS5lbmRzd2l0aCgnL2JpdGJha2UuY29uZicpOgorICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeVsnb3AnXSBpbiBbJ3NldCcsICdzZXQ/J106CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RpZCBub3QgZmluZCBoaXN0b3J5IGVudHJ5IHNldHRpbmcgRExfRElSIGluIGJpdGJha2UuY29uZi4gSGlzdG9yeTogJXMnICUgaGlzdG9yeSkKKyAgICAgICAgICAgICMgQ2hlY2sgaXQgd29ya3MgZm9yIHJlY2lwZXMgYXMgd2VsbAorICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICd6bGliJworICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZSh0ZXN0cmVjaXBlKQorICAgICAgICAgICAgaGlzdG9yeSA9IHJkLnZhcmhpc3RvcnkudmFyaWFibGUoJ0xJQ0VOU0UnKQorICAgICAgICAgICAgYmJmb3VuZCA9IC0xCisgICAgICAgICAgICByZWNpcGVmb3VuZCA9IC0xCisgICAgICAgICAgICBmb3IgaSwgZW50cnkgaW4gZW51bWVyYXRlKGhpc3RvcnkpOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5WydmaWxlJ10uZW5kc3dpdGgoJy9iaXRiYWtlLmNvbmYnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZW50cnlbJ2RldGFpbCddID09ICdJTlZBTElEJyBhbmQgZW50cnlbJ29wJ10gaW4gWydzZXQnLCAnc2V0PyddOgorICAgICAgICAgICAgICAgICAgICAgICAgYmJmb3VuZCA9IGkKKyAgICAgICAgICAgICAgICBlbGlmIGVudHJ5WydmaWxlJ10uZW5kc3dpdGgoJy5iYicpOgorICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeVsnb3AnXSA9PSAnc2V0JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWZvdW5kID0gaQorICAgICAgICAgICAgaWYgYmJmb3VuZCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RpZCBub3QgZmluZCBoaXN0b3J5IGVudHJ5IHNldHRpbmcgTElDRU5TRSBpbiBiaXRiYWtlLmNvbmYgcGFyc2luZyAlcyByZWNpcGUuIEhpc3Rvcnk6ICVzJyAlICh0ZXN0cmVjaXBlLCBoaXN0b3J5KSkKKyAgICAgICAgICAgIGlmIHJlY2lwZWZvdW5kID09IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGlkIG5vdCBmaW5kIGhpc3RvcnkgZW50cnkgc2V0dGluZyBMSUNFTlNFIGluICVzIHJlY2lwZS4gSGlzdG9yeTogJXMnICUgKHRlc3RyZWNpcGUsIGhpc3RvcnkpKQorICAgICAgICAgICAgaWYgYmJmb3VuZCA+IHJlY2lwZWZvdW5kOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnSGlzdG9yeSBlbnRyeSBzZXR0aW5nIExJQ0VOU0UgaW4gJXMgcmVjaXBlIGFuZCBpbiBiaXRiYWtlLmNvbmYgaW4gd3Jvbmcgb3JkZXIuIEhpc3Rvcnk6ICVzJyAlICh0ZXN0cmVjaXBlLCBoaXN0b3J5KSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTFkNTc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CkBAIC0wLDAgKzEsMTA2MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAorIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyMKKyMgQVVUSE9SUworIyBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KKworIiIiVGVzdCBjYXNlcyBmb3Igd2ljLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIGdsb2IgaW1wb3J0IGdsb2IKK2Zyb20gc2h1dGlsIGltcG9ydCBybXRyZWUsIGNvcHkKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcywgbHJ1X2NhY2hlCitmcm9tIHRlbXBmaWxlIGltcG9ydCBOYW1lZFRlbXBvcmFyeUZpbGUKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11Citmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworCitAbHJ1X2NhY2hlKG1heHNpemU9MzIpCitkZWYgZ2V0X2hvc3RfYXJjaChyZWNpcGUpOgorICAgICIiIkEgY2FjaGVkIGNhbGwgdG8gZ2V0X2JiX3ZhcignSE9TVF9BUkNIJywgPHJlY2lwZT4pIiIiCisgICAgcmV0dXJuIGdldF9iYl92YXIoJ0hPU1RfQVJDSCcsIHJlY2lwZSkKKworCitkZWYgb25seV9mb3JfYXJjaChhcmNocywgaW1hZ2U9J2NvcmUtaW1hZ2UtbWluaW1hbCcpOgorICAgICIiIkRlY29yYXRvciBmb3Igd3JhcHBpbmcgdGVzdCBjYXNlcyB0aGF0IGNhbiBiZSBydW4gb25seSBmb3Igc3BlY2lmaWMgdGFyZ2V0CisgICAgYXJjaGl0ZWN0dXJlcy4gQSBsaXN0IG9mIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlcyBpcyBwYXNzZWQgaW4gYGFyY2hzYC4KKyAgICBDdXJyZW50IGFyY2hpdGVjdHVyZSB3aWxsIGJlIGRldGVybWluZWQgYnkgcGFyc2luZyBiaXRiYWtlIG91dHB1dCBmb3IKKyAgICBgaW1hZ2VgIHJlY2lwZS4KKyAgICAiIiIKKyAgICBkZWYgd3JhcHBlcihmdW5jKToKKyAgICAgICAgQHdyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVkX2YoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGFyY2ggPSBnZXRfaG9zdF9hcmNoKGltYWdlKQorICAgICAgICAgICAgaWYgYXJjaHMgYW5kIGFyY2ggbm90IGluIGFyY2hzOgorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJUZXN0Y2FzZSBhcmNoIGRlcGVuZGVuY3kgbm90IG1ldDogJXMiICUgYXJjaCkKKyAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgd3JhcHBlZF9mLl9fbmFtZV9fID0gZnVuYy5fX25hbWVfXworICAgICAgICByZXR1cm4gd3JhcHBlZF9mCisgICAgcmV0dXJuIHdyYXBwZXIKKworCitjbGFzcyBXaWMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiJXaWMgdGVzdCBjbGFzcy4iIiIKKworICAgIHJlc3VsdGRpciA9ICIvdmFyL3RtcC93aWMub2Utc2VsZnRlc3QvIgorICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKKyAgICBuYXRpdmVfc3lzcm9vdCA9IE5vbmUKKyAgICB3aWNlbnZfY2FjaGUgPSB7fQorCisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CisgICAgICAgICIiIlRoaXMgY29kZSBpcyBleGVjdXRlZCBiZWZvcmUgZWFjaCB0ZXN0IG1ldGhvZC4iIiIKKyAgICAgICAgc3VwZXIoV2ljLCBzZWxmKS5zZXRVcExvY2FsKCkKKyAgICAgICAgaWYgbm90IHNlbGYubmF0aXZlX3N5c3Jvb3Q6CisgICAgICAgICAgICBXaWMubmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIERvIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIGluIHNldFVwQ2xhc3MgYXMgdGhlIGJhc2Ugc2V0VXAgZG9lcyBzb21lCisgICAgICAgICMgY2xlYW4gdXAgd2hpY2ggY2FuIHJlc3VsdCBpbiB0aGUgbmF0aXZlIHRvb2xzIGJ1aWx0IGVhcmxpZXIgaW4KKyAgICAgICAgIyBzZXRVcENsYXNzIGJlaW5nIHVuYXZhaWxhYmxlLgorICAgICAgICBpZiBub3QgV2ljLmltYWdlX2lzX3JlYWR5OgorICAgICAgICAgICAgaWYgZ2V0X2JiX3ZhcignVVNFX05MUycpID09ICd5ZXMnOgorICAgICAgICAgICAgICAgIGJpdGJha2UoJ3dpYy10b29scycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3dpYy10b29scyBjYW5ub3QgYmUgYnVpbHQgZHVlIGl0cyAoaW50bHRvb2x8Z2V0dGV4dCktbmF0aXZlIGRlcGVuZGVuY3kgYW5kIE5MUyBkaXNhYmxlJykKKworICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgIFdpYy5pbWFnZV9pc19yZWFkeSA9IFRydWUKKworICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgorICAgICAgICAiIiJSZW1vdmUgcmVzdWx0ZGlyIGFzIGl0IG1heSBjb250YWluIGltYWdlcy4iIiIKKyAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgICAgIHN1cGVyKFdpYywgc2VsZikudGVhckRvd25Mb2NhbCgpCisKKyAgICBAT0VUZXN0SUQoMTU1MikKKyAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyAtLXZlcnNpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtLXZlcnNpb24nKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIwOCkKKyAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyAtLWhlbHAgYW5kIHdpYyAtaCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0taGVscCcpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtaCcpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjA5KQorICAgIGRlZiB0ZXN0X2NyZWF0ZWhlbHAoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSAtLWhlbHAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBjcmVhdGUgLS1oZWxwJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTApCisgICAgZGVmIHRlc3RfbGlzdGhlbHAoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgLS1oZWxwIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCAtLWhlbHAnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1MykKKyAgICBkZWYgdGVzdF9oZWxwX2NyZWF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBjcmVhdGUiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGNyZWF0ZScpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTU0KQorICAgIGRlZiB0ZXN0X2hlbHBfbGlzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBsaXN0IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBsaXN0Jykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTUpCisgICAgZGVmIHRlc3RfaGVscF9vdmVydmlldyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBvdmVydmlldyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgb3ZlcnZpZXcnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxNikKKyAgICBkZWYgdGVzdF9oZWxwX3BsdWdpbnMoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgcGx1Z2lucyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgcGx1Z2lucycpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjE3KQorICAgIGRlZiB0ZXN0X2hlbHBfa2lja3N0YXJ0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGtpY2tzdGFydCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAga2lja3N0YXJ0Jykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTUpCisgICAgZGVmIHRlc3RfbGlzdF9pbWFnZXMoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgaW1hZ2VzIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1NikKKyAgICBkZWYgdGVzdF9saXN0X3NvdXJjZV9wbHVnaW5zKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IHNvdXJjZS1wbHVnaW5zIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucycpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTU3KQorICAgIGRlZiB0ZXN0X2xpc3RlZF9pbWFnZXNfaGVscChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgbGlzdGVkIGltYWdlcyBoZWxwIiIiCisgICAgICAgIG91dHB1dCA9IHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykub3V0cHV0CisgICAgICAgIGltYWdlbGlzdCA9IFtsaW5lLnNwbGl0KClbMF0gZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKV0KKyAgICAgICAgZm9yIGltYWdlIGluIGltYWdlbGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCAlcyBoZWxwJyAlIGltYWdlKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxMykKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9zdWJjb21tYW5kKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHVuc3VwcG9ydGVkIHN1YmNvbW1hbmQiIiIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoJ3dpYyB1bnN1cHBvcnRlZCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTQpCisgICAgZGVmIHRlc3Rfbm9fY29tbWFuZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgd2l0aG91dCBjb21tYW5kIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCd3aWMnLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjExKQorICAgIGRlZiB0ZXN0X2J1aWxkX2ltYWdlX25hbWUoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTE1NykKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9ncHRfaW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgY29yZS1pbWFnZS1taW5pbWFsIHdpdGggZ3B0IHRhYmxlIGFuZCBVVUlEIGJvb3QiIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1ncHQgLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEzNDYpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfaXNvX2ltYWdlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGh5YnJpZCBpc28gaW1hZ2Ugd2l0aCBsZWdhY3kgYW5kIEVGSSBib290IiIiCisgICAgICAgIGNvbmZpZyA9ICdJTklUUkFNRlNfSU1BR0UgPSAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyJcbidcCisgICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJ1wKKyAgICAgICAgICAgICAgICAgJ0RFUEVORFNfcG4tY29yZS1pbWFnZS1taW5pbWFsICs9ICJzeXNsaW51eCJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgbWtoeWJyaWRpc28gLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJIWUJSSURfSVNPX0lNRy0qLmRpcmVjdCIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJIWUJSSURfSVNPX0lNRy0qLmlzbyIpKSkKKworICAgIEBPRVRlc3RJRCgxMzQ4KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3FlbXV4ODZfZGlyZWN0ZGlzayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBxZW11eC04Ni1kaXJlY3RkaXNrIGltYWdlIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHFlbXV4ODYtZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAicWVtdXg4Ni1kaXJlY3RkaXNrLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTM1MCkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9ta2VmaWRpc2soc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgbWtlZmlkaXNrIGltYWdlIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1rZWZpZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTM4NSkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9ib290bG9hZGVyX2NvbmZpZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnIGltYWdlIiIiCisgICAgICAgIGNvbmZpZyA9ICdERVBFTkRTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCArPSAic3lzbGludXgiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWctKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNTYwKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3N5c3RlbWRfYm9vdGRpc2soc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc3lzdGVtZC1ib290ZGlzayBpbWFnZSIiIgorICAgICAgICBjb25maWcgPSAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc3lzdGVtZC1ib290ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic3lzdGVtZC1ib290ZGlzay0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE1NjEpCisgICAgZGVmIHRlc3Rfc2RpbWFnZV9ib290cGFydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBzZGltYWdlLWJvb3RwYXJ0IGltYWdlIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIGtpbWd0eXBlID0gZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyJcbicgJSBraW1ndHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE1NjIpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfZGVmYXVsdF9vdXRwdXRfZGlyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGRlZmF1bHQgb3V0cHV0IGxvY2F0aW9uIiIiCisgICAgICAgIGZvciBmbmFtZSBpbiBnbG9iKCJkaXJlY3RkaXNrLSouZGlyZWN0Iik6CisgICAgICAgICAgICBvcy5yZW1vdmUoZm5hbWUpCisgICAgICAgIGNvbmZpZyA9ICdERVBFTkRTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCArPSAic3lzbGludXgiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYigiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMjEyKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X2J1aWxkX2FydGlmYWN0cyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIGRpcmVjdGRpc2sgcHJvdmlkaW5nIGFsbCBhcnRpZmFjdHMuIiIiCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfREFUQURJUicsICdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWMtdG9vbHMnKQorICAgICAgICBiYl92YXJzLnVwZGF0ZShnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfUk9PVEZTJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwnKSkKKyAgICAgICAgYmJ2YXJzID0ge2tleS5sb3dlcigpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBiYl92YXJzLml0ZW1zKCl9CisgICAgICAgIGJidmFyc1sncmVzdWx0ZGlyJ10gPSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLWIgJShzdGFnaW5nX2RhdGFkaXIpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLWsgJShkZXBsb3lfZGlyX2ltYWdlKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi1uICUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi1yICUoaW1hZ2Vfcm9vdGZzKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi1vICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY0KQorICAgIGRlZiB0ZXN0X2NvbXByZXNzX2d6aXAoc2VsZik6CisgICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCBnemlwIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgZ3ppcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0Lmd6IikpKQorCisgICAgQE9FVGVzdElEKDEyNjUpCisgICAgZGVmIHRlc3RfY29tcHJlc3NfYnppcDIoc2VsZik6CisgICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCBiemlwMiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGJ6aXAyIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuYnoyIikpKQorCisgICAgQE9FVGVzdElEKDEyNjYpCisgICAgZGVmIHRlc3RfY29tcHJlc3NfeHooc2VsZik6CisgICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCB4eiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY29tcHJlc3Mtd2l0aD14eiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0Lnh6IikpKQorCisgICAgQE9FVGVzdElEKDEyNjcpCisgICAgZGVmIHRlc3Rfd3JvbmdfY29tcHJlc3NvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBob3cgd2ljIGJyZWFrcyBpZiB3cm9uZyBjb21wcmVzc29yIGlzIHByb3ZpZGVkIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgd3JvbmcgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTgpCisgICAgZGVmIHRlc3RfZGVidWdfc2hvcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgLUQgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNjU4KQorICAgIGRlZiB0ZXN0X2RlYnVnX2xvbmcoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1kZWJ1ZyBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWRlYnVnIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTU2MykKKyAgICBkZWYgdGVzdF9za2lwX2J1aWxkX2NoZWNrX3Nob3J0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IC1zIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTY3MSkKKyAgICBkZWYgdGVzdF9za2lwX2J1aWxkX2NoZWNrX2xvbmcoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1za2lwLWJ1aWxkLWNoZWNrIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2tpcC1idWlsZC1jaGVjayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE1NjQpCisgICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX3Nob3J0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IC1mIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTY1NikKKyAgICBkZWYgdGVzdF9idWlsZF9yb290ZnNfbG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWJ1aWxkLXJvb3RmcyBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWJ1aWxkLXJvb3RmcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEyNjgpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3Rfcm9vdGZzX2luZGlyZWN0X3JlY2lwZXMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdXNhZ2Ugb2Ygcm9vdGZzIHBsdWdpbiB3aXRoIHJvb3RmcyByZWNpcGVzIiIiCisgICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMgcm9vdGZzMT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczI9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stbXVsdGktcm9vdGZzKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2OSkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9yb290ZnNfYXJ0aWZhY3RzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHVzYWdlIG9mIHJvb3RmcyBwbHVnaW4gd2l0aCByb290ZnMgcGF0aHMiIiIKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19EQVRBRElSJywgJ1JFQ0lQRV9TWVNST09UX05BVElWRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy10b29scycpCisgICAgICAgIGJiX3ZhcnMudXBkYXRlKGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9ST09URlMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpKQorICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KKyAgICAgICAgYmJ2YXJzWyd3a3MnXSA9ICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyIKKyAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSAlKHdrcylzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLWJvb3RpbWctZGlyPSUoc3RhZ2luZ19kYXRhZGlyKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0ta2VybmVsLWRpcj0lKGRlcGxveV9kaXJfaW1hZ2UpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1uYXRpdmUtc3lzcm9vdD0lKHJlY2lwZV9zeXNyb290X25hdGl2ZSlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3Rmcy1kaXIgcm9vdGZzMT0lKGltYWdlX3Jvb3RmcylzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3Rmcy1kaXIgcm9vdGZzMj0lKGltYWdlX3Jvb3RmcylzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlKHJlc3VsdGRpcilzIiAlIGJidmFycykuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiUod2tzKXMtKi5kaXJlY3QiICUgYmJ2YXJzKSkpCisKKyAgICBAT0VUZXN0SUQoMTY2MSkKKyAgICBkZWYgdGVzdF9leGNsdWRlX3BhdGgoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbi4iIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKKyAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgcm9vdGZzX2RpciA9IGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgICAgIHdrcy53cml0ZSgiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIHVzcgorcGFydCAvdXNyIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1yb290ZnMtZGlyICVzL3VzcgorcGFydCAvZXRjIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggYmluLyAtLXJvb3Rmcy1kaXIgJXMvdXNyIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHJvb3Rmc19kaXIsIHJvb3Rmc19kaXIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisKKyAgICAgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKyAgICAgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSAndGVtcCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3aWNvdXQpKQorCisgICAgICAgICAgICB3aWNpbWcgPSB3aWNvdXRbMF0KKworICAgICAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgYiBwIDI+L2Rldi9udWxsIiAlIHdpY2ltZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKworICAgICAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKKyAgICAgICAgICAgICMgQllUO1xuCisgICAgICAgICAgICAjIC92YXIvdG1wL3dpYy9idWlsZC90bXBmd3ZqamtmXy0yMDE2MTExMDEyMjItaGRhLmRpcmVjdDoyMDBNaUI6ZmlsZTo1MTI6NTEyOm1zZG9zOjo7XG4KKyAgICAgICAgICAgICMgMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6O1xuCisgICAgICAgICAgICBwYXJ0bG5zID0gcmVzLm91dHB1dC5zcGxpdGxpbmVzKClbMjpdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKHBhcnRsbnMpKQorCisgICAgICAgICAgICBmb3IgcGFydCBpbiBbMSwgMiwgM106CisgICAgICAgICAgICAgICAgcGFydF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQlZCIgJSBwYXJ0KQorICAgICAgICAgICAgICAgIHBhcnRsbiA9IHBhcnRsbnNbcGFydC0xXS5zcGxpdCgiOiIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsZW4ocGFydGxuKSkKKyAgICAgICAgICAgICAgICBzdGFydCA9IGludChwYXJ0bG5bMV0ucnN0cmlwKCJCIikpIC8gNTEyCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gaW50KHBhcnRsblszXS5yc3RyaXAoIkIiKSkgLyA1MTIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgiZGQgaWY9JXMgb2Y9JXMgc2tpcD0lZCBjb3VudD0lZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWNpbWcsIHBhcnRfZmlsZSwgc3RhcnQsIGxlbmd0aCkpLnN0YXR1cykKKworICAgICAgICAgICAgZGVmIGV4dHJhY3RfZmlsZXMoZGVidWdmc19vdXRwdXQpOgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIGV4dHJhY3QgZmlsZSBuYW1lcyBmcm9tIHRoZSBvdXRwdXQgb2YgZGVidWdmcyAtUiAnbHMgLXAnLAorICAgICAgICAgICAgICAgIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4vL1xuCisgICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi4vL1xuCisgICAgICAgICAgICAgICAgIC8xMS8wNDA3MDAvMC8wL2xvc3QrZm91bmReTS8vXG4KKyAgICAgICAgICAgICAgICAgLzEyLzA0MDc1NS8xMDAyLzEwMDIvcnVuLy9cbgorICAgICAgICAgICAgICAgICAvMTMvMDQwNzU1LzEwMDIvMTAwMi9zeXMvL1xuCisgICAgICAgICAgICAgICAgIC8xNC8wNDA3NTUvMTAwMi8xMDAyL2Jpbi8vXG4KKyAgICAgICAgICAgICAgICAgLzgwLzA0MDc1NS8xMDAyLzEwMDIvdmFyLy9cbgorICAgICAgICAgICAgICAgICAvOTIvMDQwNzU1LzEwMDIvMTAwMi90bXAvL1xuCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgIyBOT1RFIHRoZSBvY2Nhc2lvbmFsIF5NIGluIGZpbGUgbmFtZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gW2xpbmUuc3BsaXQoJy8nKVs1XS5zdHJpcCgpIGZvciBsaW5lIGluIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZnNfb3V0cHV0LnN0cmlwKCkuc3BsaXQoJy9cbicpXQorCisgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDEsIHNob3VsZCBjb250YWluIHRoZSBub3JtYWwgcm9vdCBkaXJlY3RvcmllcywgZXhjZXB0CisgICAgICAgICAgICAjIC91c3IuCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MSIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJldGMiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQorCisgICAgICAgICAgICAjIFBhcnRpdGlvbiAyLCBzaG91bGQgY29udGFpbiBjb21tb24gZGlyZWN0b3JpZXMgZm9yIC91c3IsIG5vdCByb290CisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDIiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZXRjIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNoYXJlIiwgZmlsZXMpCisKKyAgICAgICAgICAgICMgUGFydGl0aW9uIDMsIHNob3VsZCBjb250YWluIHRoZSBzYW1lIGFzIHBhcnRpdGlvbiAyLCBpbmNsdWRpbmcgdGhlIGJpbgorICAgICAgICAgICAgIyBkaXJlY3RvcnksIGJ1dCBub3QgdGhlIGZpbGVzIGluc2lkZSBpdC4KKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzaGFyZSIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmluIiwgZmlsZXMpCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wIGJpbicgJXMgMj4vZGV2L251bGwiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDMiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiLiIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiLi4iLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGZpbGVzKSkKKworICAgICAgICAgICAgZm9yIHBhcnQgaW4gWzEsIDIsIDNdOgorICAgICAgICAgICAgICAgIHBhcnRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0JWQiICUgcGFydCkKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGFydF9maWxlKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBAT0VUZXN0SUQoMTY2MikKKyAgICBkZWYgdGVzdF9leGNsdWRlX3BhdGhfZXJyb3JzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tZXhjbHVkZS1wYXRoIHdrcyBvcHRpb24gZXJyb3IgaGFuZGxpbmcuIiIiCisgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJworCisgICAgICAgICMgQWJzb2x1dGUgYXJndW1lbnQuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIC91c3IiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKworICAgICAgICAjIEFyZ3VtZW50IHBvaW50aW5nIHRvIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIC4vLi8uLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgQE9FVGVzdElEKDE0OTYpCisgICAgZGVmIHRlc3RfYm1hcF9zaG9ydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIC5ibWFwIGZpbGUgLW0gb3B0aW9uIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbSAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoY21kKS5zdGF0dXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0LmJtYXAiKSkpCisKKyAgICBAT0VUZXN0SUQoMTY1NSkKKyAgICBkZWYgdGVzdF9ibWFwX2xvbmcoc2VsZik6CisgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC0tYm1hcCBvcHRpb24iIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC0tYm1hcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoY21kKS5zdGF0dXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0LmJtYXAiKSkpCisKKyAgICBkZWYgX2dldF9pbWFnZV9lbnZfcGF0aChzZWxmLCBpbWFnZSk6CisgICAgICAgICIiIkdlbmVyYXRlIGFuZCBvYnRhaW4gdGhlIHBhdGggdG8gPGltYWdlPi5lbnYiIiIKKyAgICAgICAgaWYgaW1hZ2Ugbm90IGluIHNlbGYud2ljZW52X2NhY2hlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCclcyAtYyBkb19yb290ZnNfd2ljZW52JyAlIGltYWdlKS5zdGF0dXMpCisgICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RJUicsICdNQUNISU5FJ10sIGltYWdlKQorICAgICAgICAgICAgc3RkaXIgPSBiYl92YXJzWydTVEFHSU5HX0RJUiddCisgICAgICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCisgICAgICAgICAgICBzZWxmLndpY2Vudl9jYWNoZVtpbWFnZV0gPSBvcy5wYXRoLmpvaW4oc3RkaXIsIG1hY2hpbmUsICdpbWdkYXRhJykKKyAgICAgICAgcmV0dXJuIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXQorCisgICAgQE9FVGVzdElEKDEzNDcpCisgICAgZGVmIHRlc3RfaW1hZ2VfZW52KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgPGltYWdlPi5lbnYgZmlsZXMuIiIiCisgICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgaW1nZGF0YWRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydJTUFHRV9CQVNFTkFNRScsICdXSUNWQVJTJ10sIGltYWdlKQorICAgICAgICBiYXNlbmFtZSA9IGJiX3ZhcnNbJ0lNQUdFX0JBU0VOQU1FJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlbmFtZSwgaW1hZ2UpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oaW1nZGF0YWRpciwgYmFzZW5hbWUpICsgJy5lbnYnCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwYXRoKSkKKworICAgICAgICB3aWN2YXJzID0gc2V0KGJiX3ZhcnNbJ1dJQ1ZBUlMnXS5zcGxpdCgpKQorICAgICAgICAjIGZpbHRlciBvdXQgb3B0aW9uYWwgdmFyaWFibGVzCisgICAgICAgIHdpY3ZhcnMgPSB3aWN2YXJzLmRpZmZlcmVuY2UoKCdERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX0JPT1RfRklMRVMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJEJywgJ0lOSVRSRF9MSVZFJywgJ0lTT0RJUicpKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZW52ZmlsZToKKyAgICAgICAgICAgIGNvbnRlbnQgPSBkaWN0KGxpbmUuc3BsaXQoIj0iLCAxKSBmb3IgbGluZSBpbiBlbnZmaWxlKQorICAgICAgICAgICAgIyB0ZXN0IGlmIHZhcmlhYmxlcyB1c2VkIGJ5IHdpYyBwcmVzZW50IGluIHRoZSAuZW52IGZpbGUKKyAgICAgICAgICAgIGZvciB2YXIgaW4gd2ljdmFyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFyIGluIGNvbnRlbnQsICIlcyBpcyBub3QgaW4gLmVudiBmaWxlIiAlIHZhcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGVudFt2YXJdKQorCisgICAgQE9FVGVzdElEKDE1NTkpCisgICAgZGVmIHRlc3RfaW1hZ2VfdmFyc19kaXJfc2hvcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaW1hZ2UgdmFycyBkaXJlY3Rvcnkgc2VsZWN0aW9uIC12IG9wdGlvbiIiIgorICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKKyAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAid2ljLXRvb2xzIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgLXYgJXMgLW4gJXMgLW8gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIG5hdGl2ZV9zeXNyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE2NjUpCisgICAgZGVmIHRlc3RfaW1hZ2VfdmFyc19kaXJfbG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpbWFnZSB2YXJzIGRpcmVjdG9yeSBzZWxlY3Rpb24gLS12YXJzIG9wdGlvbiIiIgorICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKKyAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAid2ljLXRvb2xzIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS12YXJzICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbmF0aXZlLXN5c3Jvb3QgJXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIG5hdGl2ZV9zeXNyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEzNTEpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3Rfd2ljX2ltYWdlX3R5cGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgYnVpbGRpbmcgd2ljIGltYWdlcyBieSBiaXRiYWtlIiIiCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICJ3aWMiXG5XS1NfRklMRSA9ICJ3aWMtaW1hZ2UtbWluaW1hbCJcbidcCisgICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ3dpYy1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnTUFDSElORSddKQorICAgICAgICBkZXBsb3lfZGlyID0gYmJfdmFyc1snREVQTE9ZX0RJUl9JTUFHRSddCisgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KKyAgICAgICAgcHJlZml4ID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsICd3aWMtaW1hZ2UtbWluaW1hbC0lcy4nICUgbWFjaGluZSkKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIHJlc3VsdCBpbWFnZSBhbmQgbWFuaWZlc3RzIHN5bWxpbmtzCisgICAgICAgICMgcG9pbnRpbmcgdG8gZXhpc3RpbmcgZmlsZXMKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ3dpYycsICdtYW5pZmVzdCcpOgorICAgICAgICAgICAgcGF0aCA9IHByZWZpeCArIHN1ZmZpeAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKHBhdGgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGgucmVhbHBhdGgocGF0aCkpKQorCisgICAgQE9FVGVzdElEKDE0MjIpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfcWVtdShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMtaW1hZ2UtbWluaW1hbCB1bmRlciBxZW11IiIiCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICJ3aWMiXG5XS1NfRklMRSA9ICJ3aWMtaW1hZ2UtbWluaW1hbCJcbidcCisgICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ3dpYy1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIHdpdGggcnVucWVtdSgnd2ljLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UpIGFzIHFlbXU6CisgICAgICAgICAgICBjbWQgPSAibW91bnQgfGdyZXAgJ14vZGV2LycgfCBjdXQgLWYxLDMgLWQgJyAnIgorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnL2Rldi9yb290IC9cclxuL2Rldi9zZGExIC9ib290XHJcbi9kZXYvc2RhMyAvbW50JykKKworICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIEBPRVRlc3RJRCgxODUyKQorICAgIGRlZiB0ZXN0X3FlbXVfZWZpKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvcmUtaW1hZ2UtbWluaW1hbCBlZmkgaW1hZ2UgdW5kZXIgcWVtdSIiIgorICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyA9ICJ3aWMiXG5XS1NfRklMRSA9ICJta2VmaWRpc2sud2tzIlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCBvdm1mJykuc3RhdHVzKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcnVucWVtdXBhcmFtcz0nb3ZtZicsIGltYWdlX2ZzdHlwZT0nd2ljJykgYXMgcWVtdToKKyAgICAgICAgICAgIGNtZCA9ICJncmVwIHNkYS4gL3Byb2MvcGFydGl0aW9ucyAgfHdjIC1sIgorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnMycpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9tYWtlX2ZpeGVkX3NpemVfd2tzKHNpemUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgd2tzIG9mIGFuIGltYWdlIHdpdGggYSBzaW5nbGUgcGFydGl0aW9uLiBTaXplIG9mIHRoZSBwYXJ0aXRpb24gaXMgc2V0CisgICAgICAgIHVzaW5nIC0tZml4ZWQtc2l6ZSBmbGFnLiBSZXR1cm5zIGEgdHVwbGU6IChwYXRoIHRvIHdrcyBmaWxlLCB3a3MgaW1hZ2UgbmFtZSkKKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIiwgZGVsZXRlPUZhbHNlKSBhcyB0ZW1wZjoKKyAgICAgICAgICAgIHdrc3BhdGggPSB0ZW1wZi5uYW1lCisgICAgICAgICAgICB0ZW1wZi53cml0ZSgicGFydCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICItLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgaGRhIC0tYWxpZ24gNCAtLWZpeGVkLXNpemUgJWQgIgorICAgICAgICAgICAgICAgICAgICAgIi0tZnN0eXBlPWV4dDRcbiIgJSBzaXplKQorICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrc3BhdGgpKVswXQorCisgICAgICAgIHJldHVybiB3a3NwYXRoLCB3a3NuYW1lCisKKyAgICBAT0VUZXN0SUQoMTg0NykKKyAgICBkZWYgdGVzdF9maXhlZF9zaXplKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjcmVhdGlvbiBvZiBhIHNpbXBsZSBpbWFnZSB3aXRoIHBhcnRpdGlvbiBzaXplIGNvbnRyb2xsZWQgdGhyb3VnaAorICAgICAgICAtLWZpeGVkLXNpemUgZmxhZworICAgICAgICAiIiIKKyAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYy5fbWFrZV9maXhlZF9zaXplX3drcygyMDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzcGF0aCkKKyAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHdpY291dCkpCisKKyAgICAgICAgd2ljaW1nID0gd2ljb3V0WzBdCisKKyAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKKyAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBtaWIgcCAyPi9kZXYvbnVsbCIgJSB3aWNpbWcsCisgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1zZWxmLm5hdGl2ZV9zeXNyb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisKKyAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKKyAgICAgICAgIyBCWVQ7XG4KKyAgICAgICAgIyAvdmFyL3RtcC93aWMvYnVpbGQvdG1wZnd2amprZl8tMjAxNjExMTAxMjIyLWhkYS5kaXJlY3Q6MjAwTWlCOmZpbGU6NTEyOjUxMjptc2Rvczo6O1xuCisgICAgICAgICMgMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6O1xuCisgICAgICAgIHBhcnRsbnMgPSByZXMub3V0cHV0LnNwbGl0bGluZXMoKVsyOl0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihwYXJ0bG5zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6OyIsIHBhcnRsbnNbMF0pCisKKyAgICBAT0VUZXN0SUQoMTg0OCkKKyAgICBkZWYgdGVzdF9maXhlZF9zaXplX2Vycm9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjcmVhdGlvbiBvZiBhIHNpbXBsZSBpbWFnZSB3aXRoIHBhcnRpdGlvbiBzaXplIGNvbnRyb2xsZWQgdGhyb3VnaAorICAgICAgICAtLWZpeGVkLXNpemUgZmxhZy4gVGhlIHNpemUgb2YgcGFydGl0aW9uIGlzIGludGVudGlvbmFsbHkgc2V0IHRvIDFNaUIKKyAgICAgICAgaW4gb3JkZXIgdG8gdHJpZ2dlciBhbiBlcnJvciBpbiB3aWMuCisgICAgICAgICIiIgorICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NwYXRoKQorICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4od2ljb3V0KSkKKworICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIEBPRVRlc3RJRCgxODU0KQorICAgIGRlZiB0ZXN0X3Jhd2NvcHlfcGx1Z2luX3FlbXUoc2VsZik6CisgICAgICAgICIiIlRlc3QgcmF3Y29weSBwbHVnaW4gaW4gcWVtdSIiIgorICAgICAgICAjIGJ1aWxkIGV4dDQgYW5kIHdpYyBpbWFnZXMKKyAgICAgICAgZm9yIGZzdHlwZSBpbiAoImV4dDQiLCAid2ljIik6CisgICAgICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyA9ICIlcyJcbldLU19GSUxFID0gInRlc3RfcmF3Y29weV9wbHVnaW4ud2tzLmluIlxuJyAlIGZzdHlwZQorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQorICAgICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSwgaW1hZ2VfZnN0eXBlPSd3aWMnKSBhcyBxZW11OgorICAgICAgICAgICAgY21kID0gImdyZXAgc2RhLiAvcHJvYy9wYXJ0aXRpb25zICB8d2MgLWwiCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcyJykKKworICAgIEBPRVRlc3RJRCgxODUzKQorICAgIGRlZiB0ZXN0X3Jhd2NvcHlfcGx1Z2luKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJhd2NvcHkgcGx1Z2luIiIiCisgICAgICAgIGltZyA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJywgaW1nKQorICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCAvYm9vdCAtLWFjdGl2ZSAtLXNvdXJjZSBib290aW1nLXBjYmlvc1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCAvIC0tc291cmNlIHJhd2NvcHkgLS1zb3VyY2VwYXJhbXM9ImZpbGU9JXMtJXMuZXh0NCIgLS11c2UtdXVpZFxuJ1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1nLCBtYWNoaW5lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9vdGxvYWRlciAtLXRpbWVvdXQ9MCAtLWFwcGVuZD0iY29uc29sZT10dHlTMCwxMTUyMDBuOCJcbiddKQorICAgICAgICAgICAgd2tzLmZsdXNoKCkKKyAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCisgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCisKKyAgICBAT0VUZXN0SUQoMTg0OSkKKyAgICBkZWYgdGVzdF9mc190eXBlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBmaWxlc3lzdGVtIHR5cGVzIGZvciBlbXB0eSBhbmQgbm90IGVtcHR5IHBhcnRpdGlvbnMiIiIKKyAgICAgICAgaW1nID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAgIC0tc291cmNlIHJvb3Rmc1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBidHJmcyAgLS1mc3R5cGUgYnRyZnMgICAgLS1zb3VyY2Ugcm9vdGZzIC0tc2l6ZSA0ME1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgc3F1YXNoIC0tZnN0eXBlIHNxdWFzaGZzIC0tc291cmNlIHJvb3Rmc1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBzd2FwICAgLS1mc3R5cGUgc3dhcCAtLXNpemUgMU1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHl2ZmF0ICAgLS1mc3R5cGUgdmZhdCAgIC0tc2l6ZSAxTVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eW1zZG9zICAtLWZzdHlwZSBtc2RvcyAgLS1zaXplIDFNXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5ZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAtLXNpemUgMU1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlidHJmcyAgLS1mc3R5cGUgYnRyZnMgIC0tc2l6ZSAxMDBNXG4nXSkKKyAgICAgICAgICAgIHdrcy5mbHVzaCgpCisgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQorICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQorCisgICAgQE9FVGVzdElEKDE4NTEpCisgICAgZGVmIHRlc3Rfa2lja3N0YXJ0X3BhcnNlcihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3a3MgcGFyc2VyIG9wdGlvbnMiIiIKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgLyAtLWZzdHlwZSBleHQzIC0tc291cmNlIHJvb3RmcyAtLXN5c3RlbS1pZCAweEZGICdcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3ZlcmhlYWQtZmFjdG9yIDEuMiAtLXNpemUgMTAwa1xuJ10pCisgICAgICAgICAgICB3a3MuZmx1c2goKQorICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlICh3a3MubmFtZSwgc2VsZi5yZXN1bHRkaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQorICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQorCisgICAgQE9FVGVzdElEKDE4NTApCisgICAgZGVmIHRlc3RfaW1hZ2VfYm9vdHBhcnRfZ2xvYmJlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBnbG9iYmVkIHNvdXJjZXMgd2l0aCBpbWFnZS1ib290cGFydCBwbHVnaW4iIiIKKyAgICAgICAgaW1nID0gImNvcmUtaW1hZ2UtbWluaW1hbCIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc2RpbWFnZS1ib290cGFydCAtZSAlcyAtbyAlcyIgJSAoaW1nLCBzZWxmLnJlc3VsdGRpcikKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0JPT1RfRklMRVMgPSAiJXMqIicgJSBnZXRfYmJfdmFyKCdLRVJORUxfSU1BR0VUWVBFJywgaW1nKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzZGltYWdlLWJvb3RwYXJ0LSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTg1NSkKKyAgICBkZWYgdGVzdF9zcGFyc2VfY29weShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzcGFyc2VfY29weSB3aXRoIEZJRU1BUCBhbmQgU0VFS19IT0xFIGZpbGVtYXAgQVBJcyIiIgorICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdzY3JpcHRzJywgJ2xpYicsICd3aWMnKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgbGlicGF0aCkKKyAgICAgICAgZnJvbSAgZmlsZW1hcCBpbXBvcnQgRmlsZW1hcEZpZW1hcCwgRmlsZW1hcFNlZWssIHNwYXJzZV9jb3B5LCBFcnJvck5vdFN1cHAKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53aWMtc3BhcnNlIikgYXMgc3BhcnNlOgorICAgICAgICAgICAgc3JjX25hbWUgPSBzcGFyc2UubmFtZQorICAgICAgICAgICAgc3JjX3NpemUgPSAxMDI0ICogMTAKKyAgICAgICAgICAgIHNwYXJzZS50cnVuY2F0ZShzcmNfc2l6ZSkKKyAgICAgICAgICAgICMgd3JpdGUgb25lIGJ5dGUgdG8gdGhlIGZpbGUKKyAgICAgICAgICAgIHdpdGggb3BlbihzcmNfbmFtZSwgJ3IrYicpIGFzIHNmaWxlOgorICAgICAgICAgICAgICAgIHNmaWxlLnNlZWsoMTAyNCAqIDQpCisgICAgICAgICAgICAgICAgc2ZpbGUud3JpdGUoYidceDAwJykKKyAgICAgICAgICAgIGRlc3QgPSBzcGFyc2UubmFtZSArICcub3V0JworICAgICAgICAgICAgIyBjb3B5IHNyYyBmaWxlIHRvIGRlc3QgdXNpbmcgZGlmZmVyZW50IGZpbGVtYXAgQVBJcworICAgICAgICAgICAgZm9yIGFwaSBpbiAoRmlsZW1hcEZpZW1hcCwgRmlsZW1hcFNlZWssIE5vbmUpOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3QpOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNwYXJzZV9jb3B5KHNwYXJzZS5uYW1lLCBkZXN0LCBhcGk9YXBpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFcnJvck5vdFN1cHA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgc2tpcCB1bnN1cHBvcnRlZCBBUEkKKyAgICAgICAgICAgICAgICBkZXN0X3N0YXQgPSBvcy5zdGF0KGRlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXN0X3N0YXQuc3Rfc2l6ZSwgc3JjX3NpemUpCisgICAgICAgICAgICAgICAgIyA4IGJsb2NrcyBpcyA0SyAocGh5c2ljYWwgc2VjdG9yIHNpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXN0X3N0YXQuc3RfYmxvY2tzLCA4KQorICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCisKKyAgICBAT0VUZXN0SUQoMTg1NykKKyAgICBkZWYgdGVzdF93aWNfbHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgbGlzdGluZyBpbWFnZSBjb250ZW50IHVzaW5nICd3aWMgbHMnIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBwYXJ0aXRpb25zCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQorCisgICAgQE9FVGVzdElEKDE4NTYpCisgICAgZGVmIHRlc3Rfd2ljX2NwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB0aGUgd2ljIGltYWdlLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKKworICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndpYy1jcCIpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgdGVzdGZpbGUud3JpdGUoInRlc3QiKQorCisgICAgICAgICAgICAjIGNvcHkgZmlsZSB0byB0aGUgcGFydGl0aW9uCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBjcCAlcyAlczoxLyAtbiAlcyIgJSAodGVzdGZpbGUubmFtZSwgaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAgICAgIyBjaGVjayBpZiBmaWxlIGlzIHRoZXJlCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSkgaW4gcmVzdWx0Lm91dHB1dCkKKworICAgICAgICAgICAgIyBwcmVwYXJlIGRpcmVjdG9yeQorICAgICAgICAgICAgdGVzdGRpciA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3dpYy10ZXN0LWNwLWRpcicpCisgICAgICAgICAgICB0ZXN0c3ViZGlyID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICdzdWJkaXInKQorICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHRlc3RzdWJkaXIpKQorICAgICAgICAgICAgY29weSh0ZXN0ZmlsZS5uYW1lLCB0ZXN0ZGlyKQorCisgICAgICAgICAgICAjIGNvcHkgZGlyZWN0b3J5IHRvIHRoZSBwYXJ0aXRpb24KKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGNwICVzICVzOjEvIC1uICVzIiAlICh0ZXN0ZGlyLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGRpcmVjdG9yeSBpcyB0aGVyZQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKHRlc3RkaXIpIGluIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTg1OCkKKyAgICBkZWYgdGVzdF93aWNfcm0oc2VsZik6CisgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZyb20gdGhlIHRoZSB3aWMgaW1hZ2UuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdcbkJaSU1BR0UgICAgICAgICcsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuRUZJICAgICAgICAgIDxESVI+ICAgICAnLCByZXN1bHQub3V0cHV0KQorCisgICAgICAgICMgcmVtb3ZlIGZpbGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgcm0gJXM6MS9iemltYWdlIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgIyByZW1vdmUgZGlyZWN0b3J5CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjEvZWZpIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgIyBjaGVjayBpZiB0aGV5J3JlIHJlbW92ZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdcbkJaSU1BR0UgICAgICAgICcsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1xuRUZJICAgICAgICAgIDxESVI+ICAgICAnLCByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE5MjIpCisgICAgZGVmIHRlc3RfbWtmc19leHRyYW9wdHMoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2tzIG9wdGlvbiAtLW1rZnMtZXh0cmFvcHRzIGZvciBlbXB0eSBhbmQgbm90IGVtcHR5IHBhcnRpdGlvbnMiIiIKKyAgICAgICAgaW1nID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGVsaW5lcygKKyAgICAgICAgICAgICAgICBbJ3BhcnQgZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAgIC0tc291cmNlIHJvb3RmcyAtLW1rZnMtZXh0cmFvcHRzICItRCAtRiAtaSA4MTkyIlxuJywKKyAgICAgICAgICAgICAgICAgInBhcnQgYnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAgIC0tc291cmNlIHJvb3RmcyAtLXNpemUgNDBNIC0tbWtmcy1leHRyYW9wdHM9Jy0tcXVpZXQnXG4iLAorICAgICAgICAgICAgICAgICAncGFydCBzcXVhc2ggLS1mc3R5cGUgc3F1YXNoZnMgLS1zb3VyY2Ugcm9vdGZzIC0tbWtmcy1leHRyYW9wdHMgIi1uby1zcGFyc2UgLWIgNDA5NiJcbicsCisgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5dmZhdCAgIC0tZnN0eXBlIHZmYXQgICAtLXNpemUgMU0gLS1ta2ZzLWV4dHJhb3B0cyAiLVMgMTAyNCAtcyA2NCJcbicsCisgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5bXNkb3MgIC0tZnN0eXBlIG1zZG9zICAtLXNpemUgMU0gLS1ta2ZzLWV4dHJhb3B0cyAiLVMgMTAyNCAtcyA2NCJcbicsCisgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5ZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAtLXNpemUgMU0gLS1ta2ZzLWV4dHJhb3B0cyAiLUQgLUYgLWkgODE5MiJcbicsCisgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5YnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAtLXNpemUgMTAwTSAtLW1rZnMtZXh0cmFvcHRzICItLW1peGVkIC1LIlxuJ10pCisgICAgICAgICAgICB3a3MuZmx1c2goKQorICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KKyAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKKworICAgIGRlZiB0ZXN0X2V4cGFuZF9tYnJfaW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIHdyaXRlIC0tZXhwYW5kIGNvbW1hbmQgZm9yIG1iciBpbWFnZSIiIgorICAgICAgICAjIGJ1aWxkIGFuIGltYWdlCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTID0gIndpYyJcbldLU19GSUxFID0gImRpcmVjdGRpc2sud2tzIlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKKworICAgICAgICAjIGdldCBwYXRoIHRvIHRoZSBpbWFnZQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ01BQ0hJTkUnXSkKKyAgICAgICAgZGVwbG95X2RpciA9IGJiX3ZhcnNbJ0RFUExPWV9ESVJfSU1BR0UnXQorICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCisgICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgJ2NvcmUtaW1hZ2UtbWluaW1hbC0lcy53aWMnICUgbWFjaGluZSkKKworICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgZXhwYW5kIGltYWdlIHRvIDFHCisgICAgICAgICAgICBuZXdfaW1hZ2VfcGF0aCA9IE5vbmUKKyAgICAgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3diJywgc3VmZml4PScud2ljLmV4cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI9ZGVwbG95X2RpciwgZGVsZXRlPUZhbHNlKSBhcyBzcGFyc2U6CisgICAgICAgICAgICAgICAgc3BhcnNlLnRydW5jYXRlKDEwMjQgKiogMykKKyAgICAgICAgICAgICAgICBuZXdfaW1hZ2VfcGF0aCA9IHNwYXJzZS5uYW1lCisKKyAgICAgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKyAgICAgICAgICAgIGNtZCA9ICJ3aWMgd3JpdGUgLW4gJXMgLS1leHBhbmQgMTowICVzICVzIiAlIChzeXNyb290LCBpbWFnZV9wYXRoLCBuZXdfaW1hZ2VfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIHBhcnRpdGlvbnMgYXJlIGV4cGFuZGVkCisgICAgICAgICAgICBvcmlnID0gcnVuQ21kKCJ3aWMgbHMgJXMgLW4gJXMiICUgKGltYWdlX3BhdGgsIHN5c3Jvb3QpKQorICAgICAgICAgICAgZXhwID0gcnVuQ21kKCJ3aWMgbHMgJXMgLW4gJXMiICUgKG5ld19pbWFnZV9wYXRoLCBzeXNyb290KSkKKyAgICAgICAgICAgIG9yaWdfc2l6ZXMgPSBbaW50KGxpbmUuc3BsaXQoKVszXSkgZm9yIGxpbmUgaW4gb3JpZy5vdXRwdXQuc3BsaXQoJ1xuJylbMTpdXQorICAgICAgICAgICAgZXhwX3NpemVzID0gW2ludChsaW5lLnNwbGl0KClbM10pIGZvciBsaW5lIGluIGV4cC5vdXRwdXQuc3BsaXQoJ1xuJylbMTpdXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnX3NpemVzWzBdLCBleHBfc2l6ZXNbMF0pICMgZmlyc3QgcGFydGl0aW9uIGlzIG5vdCByZXNpemVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3JpZ19zaXplc1sxXSA8IGV4cF9zaXplc1sxXSkKKworICAgICAgICAgICAgIyBDaGVjayBpZiBhbGwgZnJlZSBzcGFjZSBpcyBwYXJ0aXRpb25lZAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIlcy91c3Ivc2Jpbi9zZmRpc2sgLUYgJXMiICUgKHN5c3Jvb3QsIG5ld19pbWFnZV9wYXRoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiMCBCLCAwIGJ5dGVzLCAwIHNlY3RvcnMiIGluIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgICAgIG9zLnJlbmFtZShpbWFnZV9wYXRoLCBpbWFnZV9wYXRoICsgJy5iYWsnKQorICAgICAgICAgICAgb3MucmVuYW1lKG5ld19pbWFnZV9wYXRoLCBpbWFnZV9wYXRoKQorCisgICAgICAgICAgICAjIENoZWNrIGlmIGl0IGJvb3RzIGluIHFlbXUKKyAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlKSBhcyBxZW11OgorICAgICAgICAgICAgICAgIGNtZCA9ICJscyAvZXRjLyIKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgndHJ1ZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG5ld19pbWFnZV9wYXRoKToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmV3X2ltYWdlX3BhdGgpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoICsgJy5iYWsnKToKKyAgICAgICAgICAgICAgICBvcy5yZW5hbWUoaW1hZ2VfcGF0aCArICcuYmFrJywgaW1hZ2VfcGF0aCkKKworICAgIGRlZiB0ZXN0X3dpY19sc19leHQoc2VsZik6CisgICAgICAgICIiIlRlc3QgbGlzdGluZyBjb250ZW50IG9mIHRoZSBleHQgcGFydGl0aW9uIHVzaW5nICd3aWMgbHMnIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgc2Vjb25kIGV4dDQgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoWydiaW4nLCAnaG9tZScsICdwcm9jJywgJ3VzcicsICd2YXInLCAnZGV2JywgJ2xpYicsICdzYmluJ10pLmlzc3Vic2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkpKQorCisgICAgZGVmIHRlc3Rfd2ljX2NwX2V4dChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgZXh0IHBhcnRpdGlvbi4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBleHQ0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBkaXJzID0gc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KFsnYmluJywgJ2hvbWUnLCAncHJvYycsICd1c3InLCAndmFyJywgJ2RldicsICdsaWInLCAnc2JpbiddKS5pc3N1YnNldChkaXJzKSkKKworICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndpYy1jcCIpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgdGVzdGZpbGUud3JpdGUoInRlc3QiKQorCisgICAgICAgICAgICAjIGNvcHkgZmlsZSB0byB0aGUgcGFydGl0aW9uCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBjcCAlcyAlczoyLyAtbiAlcyIgJSAodGVzdGZpbGUubmFtZSwgaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAgICAgIyBjaGVjayBpZiBmaWxlIGlzIHRoZXJlCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgICAgIG5ld2RpcnMgPSBzZXQobGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2RpcnMuZGlmZmVyZW5jZShkaXJzKSwgc2V0KFtvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpXSkpCisKKyAgICBkZWYgdGVzdF93aWNfcm1fZXh0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGZyb20gdGhlIGV4dCBwYXJ0aXRpb24uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSAvZXRjIGRpcmVjdG9yeSBvbiBleHQ0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyL2V0Yy8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKKworICAgICAgICAjIHJlbW92ZSBmaWxlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjIvZXRjL2ZzdGFiIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgIyBjaGVjayBpZiBpdCdzIHJlbW92ZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi9ldGMvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZnN0YWInIG5vdCBpbiBbbGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmVdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGFpbmVyaW1hZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250YWluZXJpbWFnZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmNDgxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250YWluZXJpbWFnZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLWltcG9ydCBvcwotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycywgcnVuQ21kCi0KLSMgVGhpcyB0ZXN0IGJ1aWxkcyBhbiBpbWFnZSB3aXRoIHVzaW5nIHRoZSAiY29udGFpbmVyIiBJTUFHRV9GU1RZUEUsIGFuZAotIyBlbnN1cmVzIHRoYXQgdGhlbiBmaWxlcyBpbiB0aGUgaW1hZ2UgYXJlIG9ubHkgdGhlIG9uZXMgZXhwZWN0ZWQuCi0jCi0jIFRoZSBvbmx5IHBhY2thZ2UgYWRkZWQgdG8gdGhlIGltYWdlIGlzIGNvbnRhaW5lcl9pbWFnZV90ZXN0cGtnLCB3aGljaAotIyBjb250YWlucyBvbmUgZmlsZS4gSG93ZXZlciwgZHVlIHRvIHNvbWUgb3RoZXIgdGhpbmdzIG5vdCBjbGVhbmluZyB1cCBkdXJpbmcKLSMgcm9vdGZzIGNyZWF0aW9uLCB0aGVyZSBpcyBzb21lIGNydWZ0LiBJZGVhbGx5IGJ1Z3Mgd2lsbCBiZSBmaWxlZCBhbmQgdGhlCi0jIGNydWZ0IHJlbW92ZWQsIGJ1dCBmb3Igbm93IHdlIHdoaXRlbGlzdCBzb21lIGtub3duIHNldC4KLSMKLSMgQWxzbyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB3ZSdyZSBvbmx5IGNoZWNraW5nIHRoZSBjcnVmdCB3aGVuIHVzaW5nIGlway4KLSMgV2hlbiB1c2luZyBkZWIsIGFuZCBycG0gaXQgaXMgYSBiaXQgZGlmZmVyZW50IGFuZCB3ZSBjb3VsZCB0ZXN0IGFsbAotIyBvZiB0aGVtLCBidXQgdGhpcyB0ZXN0IGlzIG1vcmUgdG8gY2F0Y2ggaWYgb3RoZXIgcGFja2FnZXMgZ2V0IGFkZGVkIGJ5Ci0jIGRlZmF1bHQgb3RoZXIgdGhhbiB3aGF0IGlzIGluIFJPT1RGU19CT09UU1RSQVBfSU5TVEFMTC4KLSMKLWNsYXNzIENvbnRhaW5lckltYWdlVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICAjIFZlcmlmeSB0aGF0IHdoZW4gc3BlY2lmeWluZyBhIElNQUdFX1RZUEVERVBfIG9mIHRoZSBmb3JtICJmb28uYmFyIiB0aGF0Ci0gICAgIyB0aGUgY29udmVyc2lvbiB0eXBlIGJhciBnZXRzIGFkZGVkIGFzIGEgZGVwIGFzIHdlbGwKLSAgICBkZWYgdGVzdF9leHBlY3RlZF9maWxlcyhzZWxmKToKLQotICAgICAgICBkZWYgZ2V0X2VhY2hfcGF0aF9wYXJ0KHBhdGgpOgotICAgICAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgICAgICBwYXJ0ID0gWyAnLicgKyBwYXRoICsgJy8nIF0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfZWFjaF9wYXRoX3BhcnQocGF0aC5yc3BsaXQoJy8nLCAxKVswXSkKLSAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0ICsgcmVzdWx0Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgtZHVtbXkiCi1JTUFHRV9GU1RZUEVTID0gImNvbnRhaW5lciIKLVBBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX2lwayIKLUlNQUdFX0ZFQVRVUkVTID0gIiIKLSIiIikKLQotICAgICAgICBiYnZhcnMgPSBnZXRfYmJfdmFycyhbJ2JpbmRpcicsICdzeXNjb25mZGlyJywgJ2xvY2Fsc3RhdGVkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfTElOS19OQU1FJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9J2NvbnRhaW5lci10ZXN0LWltYWdlJykKLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBbCi0gICAgICAgICAgICAgICAgICAgICcuLycsCi0gICAgICAgICAgICAgICAgICAgICcue2JpbmRpcn0vdGhlYXBwJywKLSAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vZGVmYXVsdC8nLAotICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9kZWZhdWx0L3Bvc3RpbnN0JywKLSAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vbGQuc28uY2FjaGUnLAotICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS90aW1lc3RhbXAnLAotICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS92ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgJy4vcnVuLycsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlLycsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2xkY29uZmlnLycsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2xkY29uZmlnL2F1eC1jYWNoZScsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL29wa2cvJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vbGliLycsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2xpYi9vcGtnLycKLSAgICAgICAgICAgICAgICBdCi0KLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBbIHguZm9ybWF0KGJpbmRpcj1iYnZhcnNbJ2JpbmRpciddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpcj1iYnZhcnNbJ3N5c2NvbmZkaXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsc3RhdGVkaXI9YmJ2YXJzWydsb2NhbHN0YXRlZGlyJ10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBleHBlY3RlZF9maWxlcyBdCi0KLSAgICAgICAgIyBTaW5jZSB0YXIgbGlzdHMgYWxsIGRpcmVjdG9yaWVzIGluZGl2aWR1YWxseSwgbWFrZSBzdXJlIGVhY2ggZWxlbWVudAotICAgICAgICAjIGZyb20gYmluZGlyLCBzeXNjb25mZGlyLCBldGMgaXMgYWRkZWQKLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snYmluZGlyJ10pCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ3N5c2NvbmZkaXInXSkKLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snbG9jYWxzdGF0ZWRpciddKQotCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gc29ydGVkKGV4cGVjdGVkX2ZpbGVzKQotCi0gICAgICAgICMgQnVpbGQgdGhlIGltYWdlIG9mIGNvdXJzZQotICAgICAgICBiaXRiYWtlKCdjb250YWluZXItdGVzdC1pbWFnZScpCi0KLSAgICAgICAgaW1hZ2UgPSBvcy5wYXRoLmpvaW4oYmJ2YXJzWydERVBMT1lfRElSX0lNQUdFJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJidmFyc1snSU1BR0VfTElOS19OQU1FJ10gKyAnLnRhci5iejInKQotCi0gICAgICAgICMgRW5zdXJlIHRoZSBmaWxlcyBpbiB0aGUgaW1hZ2UgYXJlIHdoYXQgd2UgZXhwZWN0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgidGFyIHRmIHt9IHwgc29ydCIuZm9ybWF0KGltYWdlKSwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpLCBleHBlY3RlZF9maWxlcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllOTBkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CkBAIC0wLDAgKzEsMjc5IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IG9zCitpbXBvcnQgdGltZQoraW1wb3J0IGdsb2IKK2ltcG9ydCBzeXMKK2ltcG9ydCBpbXAKK2ltcG9ydCBzaWduYWwKK2Zyb20gc2h1dGlsIGltcG9ydCBjb3B5ZmlsZQorZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZQorCitpbXBvcnQgb2VxYQorCitmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0LCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKK2Zyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVByZVJ1biwgT0VRQVRlc3ROb3RGb3VuZAorCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcnMsIGdldF90ZXN0X2xheWVyCisKK2NsYXNzIE9FU2VsZnRlc3RUZXN0Q29udGV4dChPRVRlc3RDb250ZXh0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGQ9Tm9uZSwgbG9nZ2VyPU5vbmUsIG1hY2hpbmVzPU5vbmUsIGNvbmZpZ19wYXRocz1Ob25lKToKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyh0ZCwgbG9nZ2VyKQorCisgICAgICAgIHNlbGYubWFjaGluZXMgPSBtYWNoaW5lcworICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBOb25lCisgICAgICAgIHNlbGYuY29uZmlnX3BhdGhzID0gY29uZmlnX3BhdGhzCisKKyAgICBkZWYgcnVuVGVzdHMoc2VsZiwgbWFjaGluZT1Ob25lLCBza2lwcz1bXSk6CisgICAgICAgIGlmIG1hY2hpbmU6CisgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBtYWNoaW5lCisgICAgICAgICAgICBpZiBtYWNoaW5lID09ICdyYW5kb20nOgorICAgICAgICAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IGNob2ljZShzZWxmLm1hY2hpbmVzKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUnVuIHRlc3RzIHdpdGggY3VzdG9tIE1BQ0hJTkUgc2V0IHRvOiAlcycgJSBcCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSkKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q29udGV4dCwgc2VsZikucnVuVGVzdHMoc2tpcHMpCisKKyAgICBkZWYgbGlzdFRlc3RzKHNlbGYsIGRpc3BsYXlfdHlwZSwgbWFjaGluZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q29udGV4dCwgc2VsZikubGlzdFRlc3RzKGRpc3BsYXlfdHlwZSkKKworY2xhc3MgT0VTZWxmdGVzdFRlc3RDb250ZXh0RXhlY3V0b3IoT0VUZXN0Q29udGV4dEV4ZWN1dG9yKToKKyAgICBfY29udGV4dF9jbGFzcyA9IE9FU2VsZnRlc3RUZXN0Q29udGV4dAorICAgIF9zY3JpcHRfZXhlY3V0b3IgPSAnb2Utc2VsZnRlc3QnCisKKyAgICBuYW1lID0gJ29lLXNlbGZ0ZXN0JworICAgIGhlbHAgPSAnb2Utc2VsZnRlc3QgdGVzdCBjb21wb25lbnQnCisgICAgZGVzY3JpcHRpb24gPSAnRXhlY3V0ZXMgc2VsZnRlc3QgdGVzdHMnCisKKyAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgbG9nZ2VyLCBwYXJzZXIpOgorICAgICAgICBncm91cCA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKHJlcXVpcmVkPVRydWUpCisKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctYScsICctLXJ1bi1hbGwtdGVzdHMnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJ1bl9hbGxfdGVzdHMiLAorICAgICAgICAgICAgICAgIGhlbHA9J1J1biBhbGwgKHVuaGlkZGVuKSB0ZXN0cycpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1za2lwLXRlc3RzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgIG5hcmdzPScrJywgZGVzdD0ic2tpcHMiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgaGVscD0nUnVuIGFsbCAodW5oaWRkZW4pIHRlc3RzIGV4Y2VwdCB0aGUgb25lcyBzcGVjaWZpZWQuIEZvcm1hdCBzaG91bGQgYmUgPG1vZHVsZT5bLjxjbGFzcz5bLjx0ZXN0X21ldGhvZD5dXScpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1ydW4tdGVzdHMnLCByZXF1aXJlZD1GYWxzZSwgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgbmFyZ3M9JysnLCBkZXN0PSJydW5fdGVzdHMiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgaGVscD0nU2VsZWN0IHdoYXQgdGVzdHMgdG8gcnVuIChtb2R1bGVzLCBjbGFzc2VzIG9yIHRlc3QgbWV0aG9kcykuIEZvcm1hdCBzaG91bGQgYmU6IDxtb2R1bGU+LjxjbGFzcz4uPHRlc3RfbWV0aG9kPicpCisKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLWxpc3QtbW9kdWxlcycsIHJlcXVpcmVkPUZhbHNlLAorICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3QgbW9kdWxlcy4nKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC1jbGFzc2VzJywgcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCBhdmFpbGFibGUgdGVzdCBjbGFzc2VzLicpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0LXRlc3RzJywgcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCBhdmFpbGFibGUgdGVzdHMuJykKKworICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmUnLCByZXF1aXJlZD1GYWxzZSwgY2hvaWNlcz1bJ3JhbmRvbScsICdhbGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSdW4gdGVzdHMgb24gZGlmZmVyZW50IG1hY2hpbmVzIChyYW5kb20vYWxsKS4nKQorICAgICAgICAKKyAgICAgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jPXNlbGYucnVuKQorCisgICAgZGVmIF9nZXRfYXZhaWxhYmxlX21hY2hpbmVzKHNlbGYpOgorICAgICAgICBtYWNoaW5lcyA9IFtdCisKKyAgICAgICAgYmJwYXRoID0gc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsndGQnXVsnQkJQQVRIJ10uc3BsaXQoJzonKQorICAgIAorICAgICAgICBmb3IgcGF0aCBpbiBiYnBhdGg6CisgICAgICAgICAgICBmb3VuZF9tYWNoaW5lcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4ocGF0aCwgJ2NvbmYnLCAnbWFjaGluZScsICcqLmNvbmYnKSkKKyAgICAgICAgICAgIGlmIGZvdW5kX21hY2hpbmVzOgorICAgICAgICAgICAgICAgIGZvciBpIGluIGZvdW5kX21hY2hpbmVzOgorICAgICAgICAgICAgICAgICAgICAjIGVnOiAnL2hvbWUvPHVzZXI+L3Bva3kvbWV0YS1pbnRlbC9jb25mL21hY2hpbmUvaW50ZWwtY29yZTItMzIuY29uZicKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMuYXBwZW5kKG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShpKSlbMF0pCisgICAgCisgICAgICAgIHJldHVybiBtYWNoaW5lcworCisgICAgZGVmIF9nZXRfY2FzZXNfcGF0aHMoc2VsZiwgYmJwYXRoKToKKyAgICAgICAgY2FzZXNfcGF0aHMgPSBbXQorICAgICAgICBmb3IgbGF5ZXIgaW4gYmJwYXRoOgorICAgICAgICAgICAgY2FzZXNfZGlyID0gb3MucGF0aC5qb2luKGxheWVyLCAnbGliJywgJ29lcWEnLCAnc2VsZnRlc3QnLCAnY2FzZXMnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihjYXNlc19kaXIpOgorICAgICAgICAgICAgICAgIGNhc2VzX3BhdGhzLmFwcGVuZChjYXNlc19kaXIpCisgICAgICAgIHJldHVybiBjYXNlc19wYXRocworCisgICAgZGVmIF9wcm9jZXNzX2FyZ3Moc2VsZiwgbG9nZ2VyLCBhcmdzKToKKyAgICAgICAgYXJncy5vdXRwdXRfbG9nID0gJyVzLXJlc3VsdHMtJXMubG9nJyAlIChzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikpCisgICAgICAgIGFyZ3MudGVzdF9kYXRhX2ZpbGUgPSBOb25lCisgICAgICAgIGFyZ3MuQ0FTRVNfUEFUSFMgPSBOb25lCisKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0RXhlY3V0b3IsIHNlbGYpLl9wcm9jZXNzX2FyZ3MobG9nZ2VyLCBhcmdzKQorCisgICAgICAgIGlmIGFyZ3MubGlzdF9tb2R1bGVzOgorICAgICAgICAgICAgYXJncy5saXN0X3Rlc3RzID0gJ21vZHVsZScKKyAgICAgICAgZWxpZiBhcmdzLmxpc3RfY2xhc3NlczoKKyAgICAgICAgICAgIGFyZ3MubGlzdF90ZXN0cyA9ICdjbGFzcycKKyAgICAgICAgZWxpZiBhcmdzLmxpc3RfdGVzdHM6CisgICAgICAgICAgICBhcmdzLmxpc3RfdGVzdHMgPSAnbmFtZScKKworICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWyd0ZCddID0gZ2V0X2JiX3ZhcnMoKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydtYWNoaW5lcyddID0gc2VsZi5fZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcygpCisKKyAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXSA9IHt9CisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWyd0ZXN0bGF5ZXJfcGF0aCddID0gXAorICAgICAgICAgICAgICAgIGdldF90ZXN0X2xheWVyKCkKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2J1aWxkZGlyJ10gPSBidWlsZGRpcgorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9iYWNrdXAnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYub3JpZyIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLmJrIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2JhY2t1cCddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5vcmlnIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5iayIpCisKKyAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddLAorICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfYmFja3VwJ10pCisgICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddLCAKKyAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10pCisKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydza2lwcyddID0gYXJncy5za2lwcworCisgICAgZGVmIF9wcmVfcnVuKHNlbGYpOgorICAgICAgICBkZWYgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJpYWJsZXModmFycyk6CisgICAgICAgICAgICBmb3IgdmFyIGluIHZhcnM6CisgICAgICAgICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KHZhcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCIlcyBpcyBub3Qgc2V0LiBEaWQgeW91IGZvcmdldCB0byBzb3VyY2UgeW91ciBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQ/IiAlIHZhcikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCisgICAgICAgIGRlZiBfY2hlY2tfcHJlc2VuY2VfbWV0YV9zZWxmdGVzdCgpOgorICAgICAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKQorICAgICAgICAgICAgaWYgb3MuZ2V0Y3dkKCkgIT0gYnVpbGRkaXI6CisgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiQ2hhbmdpbmcgY3dkIHRvICVzIiAlIGJ1aWxkZGlyKQorICAgICAgICAgICAgICAgIG9zLmNoZGlyKGJ1aWxkZGlyKQorCisgICAgICAgICAgICBpZiBub3QgIm1ldGEtc2VsZnRlc3QiIGluIHNlbGYudGMudGRbIkJCTEFZRVJTIl06CisgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIud2FybigibWV0YS1zZWxmdGVzdCBsYXllciBub3QgZm91bmQgaW4gQkJMQVlFUlMsIGFkZGluZyBpdCIpCisgICAgICAgICAgICAgICAgbWV0YV9zZWxmdGVzdGRpciA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy50ZFsiQkJMQVlFUlNfRkVUQ0hfRElSIl0sICdtZXRhLXNlbGZ0ZXN0JykKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG1ldGFfc2VsZnRlc3RkaXIpOgorICAgICAgICAgICAgICAgICAgICBydW5DbWQoImJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcyIgJW1ldGFfc2VsZnRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgICMgcmVsb2FkIGRhdGEgaXMgbmVlZGVkIGJlY2F1c2UgYSBtZXRhLXNlbGZ0ZXN0IGxheWVyIHdhcyBhZGQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy50ZCA9IGdldF9iYl92YXJzKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5jb25maWdfcGF0aHNbJ3Rlc3RsYXllcl9wYXRoJ10gPSBnZXRfdGVzdF9sYXllcigpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgbWV0YS1zZWxmdGVzdCBpbjpcbiVzIiAlIG1ldGFfc2VsZnRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KKworICAgICAgICBkZWYgX2FkZF9sYXllcl9saWJzKCk6CisgICAgICAgICAgICBiYnBhdGggPSBzZWxmLnRjLnRkWydCQlBBVEgnXS5zcGxpdCgnOicpCisgICAgICAgICAgICBsYXllcl9saWJkaXJzID0gW3AgZm9yIHAgaW4gKG9zLnBhdGguam9pbihsLCAnbGliJykgXAorICAgICAgICAgICAgICAgICAgICBmb3IgbCBpbiBiYnBhdGgpIGlmIG9zLnBhdGguZXhpc3RzKHApXQorICAgICAgICAgICAgaWYgbGF5ZXJfbGliZGlyczoKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJBZGRpbmcgbGF5ZXIgbGlicmFyaWVzOiIpCisgICAgICAgICAgICAgICAgZm9yIGwgaW4gbGF5ZXJfbGliZGlyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiXHQlcyIgJSBsKQorCisgICAgICAgICAgICAgICAgc3lzLnBhdGguZXh0ZW5kKGxheWVyX2xpYmRpcnMpCisgICAgICAgICAgICAgICAgaW1wLnJlbG9hZChvZXFhLnNlbGZ0ZXN0KQorCisgICAgICAgIF9jaGVja19yZXF1aXJlZF9lbnZfdmFyaWFibGVzKFsiQlVJTERESVIiXSkKKyAgICAgICAgX2NoZWNrX3ByZXNlbmNlX21ldGFfc2VsZnRlc3QoKQorCisgICAgICAgIGlmICJidWlsZGhpc3RvcnkuYmJjbGFzcyIgaW4gc2VsZi50Yy50ZFsiQkJJTkNMVURFRCJdOgorICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIllvdSBoYXZlIGJ1aWxkaGlzdG9yeSBlbmFibGVkIGFscmVhZHkgYW5kIHRoaXMgaXNuJ3QgcmVjb21tZW5kZWQgZm9yIHNlbGZ0ZXN0LCBwbGVhc2UgZGlzYWJsZSBpdCBmaXJzdC4iKQorICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCisgICAgICAgIGlmICJQUlNFUlZfSE9TVCIgaW4gc2VsZi50Yy50ZDoKKyAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJQbGVhc2UgdW5zZXQgUFJTRVJWX0hPU1QgaW4gb3JkZXIgdG8gcnVuIG9lLXNlbGZ0ZXN0IikKKyAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KKworICAgICAgICBpZiAiU0FOSVRZX1RFU1RFRF9ESVNUUk9TIiBpbiBzZWxmLnRjLnRkOgorICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIlBsZWFzZSB1bnNldCBTQU5JVFlfVEVTVEVEX0RJU1RST1MgaW4gb3JkZXIgdG8gcnVuIG9lLXNlbGZ0ZXN0IikKKyAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KKworICAgICAgICBfYWRkX2xheWVyX2xpYnMoKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlJ1bm5pbmcgYml0YmFrZSAtcCIpCisgICAgICAgIHJ1bkNtZCgiYml0YmFrZSAtcCIpCisKKyAgICBkZWYgX2ludGVybmFsX3J1bihzZWxmLCBsb2dnZXIsIGFyZ3MpOgorICAgICAgICBzZWxmLm1vZHVsZV9wYXRocyA9IHNlbGYuX2dldF9jYXNlc19wYXRocygKKyAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWyd0ZCddWydCQlBBVEgnXS5zcGxpdCgnOicpKQorCisgICAgICAgIHNlbGYudGMgPSBzZWxmLl9jb250ZXh0X2NsYXNzKCoqc2VsZi50Y19rd2FyZ3NbJ2luaXQnXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50Yy5sb2FkVGVzdHMoc2VsZi5tb2R1bGVfcGF0aHMsICoqc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXSkKKyAgICAgICAgZXhjZXB0IE9FUUFUZXN0Tm90Rm91bmQgYXMgZXg6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXgpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIGFyZ3MubGlzdF90ZXN0czoKKyAgICAgICAgICAgIHJjID0gc2VsZi50Yy5saXN0VGVzdHMoYXJncy5saXN0X3Rlc3RzLCAqKnNlbGYudGNfa3dhcmdzWydsaXN0J10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVfcnVuKCkKKyAgICAgICAgICAgIHJjID0gc2VsZi50Yy5ydW5UZXN0cygqKnNlbGYudGNfa3dhcmdzWydydW4nXSkKKyAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoKQorICAgICAgICAgICAgcmMubG9nU3VtbWFyeShzZWxmLm5hbWUpCisKKyAgICAgICAgcmV0dXJuIHJjCisKKyAgICBkZWYgX3NpZ25hbF9jbGVhbl9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzeXMuZXhpdCgxKQorICAgIAorICAgIGRlZiBydW4oc2VsZiwgbG9nZ2VyLCBhcmdzKToKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19hcmdzKGxvZ2dlciwgYXJncykKKworICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBzZWxmLl9zaWduYWxfY2xlYW5faGFuZGxlcikKKworICAgICAgICByYyA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgYXJncy5tYWNoaW5lOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDdXN0b20gbWFjaGluZSBtb2RlIGVuYWJsZWQuIE1BQ0hJTkUgc2V0IHRvICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLm1hY2hpbmUpCisKKyAgICAgICAgICAgICAgICBpZiBhcmdzLm1hY2hpbmUgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBmb3IgbSBpbiBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydtYWNoaW5lcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydtYWNoaW5lJ10gPSBtCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzZWxmLl9pbnRlcm5hbF9ydW4obG9nZ2VyLCBhcmdzKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoZSBvZS1zZWxmdGVzdCBzY3JpcHQgb25seSBuZWVkcyB0byBrbm93IGlmIG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWNoaW5lIHJ1biBmYWlscworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IHIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgci53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ21hY2hpbmUnXSA9IGFyZ3MubWFjaGluZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcnVuKGxvZ2dlciwgYXJncykKKworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ21hY2hpbmUnXSA9IGFyZ3MubWFjaGluZQorICAgICAgICAgICAgICAgIHJjID0gc2VsZi5faW50ZXJuYWxfcnVuKGxvZ2dlciwgYXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGNvbmZpZ19wYXRocyA9IHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSk6CisgICAgICAgICAgICAgICAgY29weWZpbGUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aHNbJ2xvY2FsY29uZiddKQorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSkKKworICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSk6CisgICAgICAgICAgICAgICAgY29weWZpbGUoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSwgCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aHNbJ2JibGF5ZXJzJ10pCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10pCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10pCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSkKKworICAgICAgICAgICAgb3V0cHV0X2xpbmsgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGFyZ3Mub3V0cHV0X2xvZyksCisgICAgICAgICAgICAgICAgICAgICIlcy1yZXN1bHRzLmxvZyIgJSBzZWxmLm5hbWUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfbGluayk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG91dHB1dF9saW5rKQorICAgICAgICAgICAgb3Muc3ltbGluayhhcmdzLm91dHB1dF9sb2csIG91dHB1dF9saW5rKQorCisgICAgICAgIHJldHVybiByYworCitfZXhlY3V0b3JfY2xhc3MgPSBPRVNlbGZ0ZXN0VGVzdENvbnRleHRFeGVjdXRvcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZGV2dG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2RldnRvb2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDQ4NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZGV2dG9vbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2OTYgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IGdsb2IKLWltcG9ydCBmbm1hdGNoCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgY3JlYXRlX3RlbXBfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUsIGdldF90ZXN0X2xheWVyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgRGV2dG9vbEJhc2Uob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHNlbGYsIHJlY2lwZWZpbGUsIGNoZWNrdmFycywgY2hlY2tpbmhlcml0cyk6Ci0gICAgICAgIHdpdGggb3BlbihyZWNpcGVmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBpbnZhciA9IE5vbmUKLSAgICAgICAgICAgIGludmFsdWUgPSBOb25lCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIHZhciA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBpbnZhcjoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnN0cmlwKCkuc3RyaXAoJyInKQotICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgnXFwnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgKz0gJyAnICsgdmFsdWVbOi0xXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSArPSAnICcgKyB2YWx1ZS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgPSBpbnZhcgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnZhciA9IE5vbmUKLSAgICAgICAgICAgICAgICBlbGlmICc9JyBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCc9JywgMSkKLSAgICAgICAgICAgICAgICAgICAgdmFyID0gc3BsaXRsaW5lWzBdLnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3BsaXRsaW5lWzFdLnN0cmlwKCkuc3RyaXAoJyInKQotICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgnXFwnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgPSB2YWx1ZVs6LTFdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGludmFyID0gdmFyCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdpbmhlcml0ICcpOgotICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9IGxpbmUuc3BsaXQoKVsxOl0KLQotICAgICAgICAgICAgICAgIGlmIHZhciBhbmQgdmFyIGluIGNoZWNrdmFyczoKLSAgICAgICAgICAgICAgICAgICAgbmVlZHZhbHVlID0gY2hlY2t2YXJzLnBvcCh2YXIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5lZWR2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdWYXJpYWJsZSAlcyBzaG91bGQgbm90IGFwcGVhciBpbiByZWNpcGUsIGJ1dCB2YWx1ZSBpcyBiZWluZyBzZXQgdG8gIiVzIicgJSAodmFyLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmVlZHZhbHVlLCBzZXQpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFyID09ICdMSUNFTlNFJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNldCh2YWx1ZS5zcGxpdCgnICYgJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0KHZhbHVlLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIG5lZWR2YWx1ZSwgJ3ZhbHVlcyBmb3IgJXMgZG8gbm90IG1hdGNoJyAlIHZhcikKLQotCi0gICAgICAgIG1pc3Npbmd2YXJzID0ge30KLSAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gY2hlY2t2YXJzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBtaXNzaW5ndmFyc1t2YXJdID0gdmFsdWUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNzaW5ndmFycywge30sICdTb21lIGV4cGVjdGVkIHZhcmlhYmxlcyBub3QgZm91bmQgaW4gcmVjaXBlOiAlcycgJSBjaGVja3ZhcnMpCi0KLSAgICAgICAgZm9yIGluaGVyaXQgaW4gY2hlY2tpbmhlcml0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5oZXJpdCwgaW5oZXJpdHMsICdNaXNzaW5nIGluaGVyaXQgb2YgJXMnICUgaW5oZXJpdCkKLQotICAgIGRlZiBfY2hlY2tfYmJhcHBlbmQoc2VsZiwgdGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMnLCBjd2Q9c2VsZi5idWlsZGRpcikKLSAgICAgICAgcmVzdWx0bGluZXMgPSByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKQotICAgICAgICBpbnJlY2lwZSA9IEZhbHNlCi0gICAgICAgIGJiYXBwZW5kcyA9IFtdCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IE5vbmUKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0bGluZXM6Ci0gICAgICAgICAgICBpZiBpbnJlY2lwZToKLSAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAnKToKLSAgICAgICAgICAgICAgICAgICAgYmJhcHBlbmRzLmFwcGVuZChsaW5lLnN0cmlwKCkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsaWYgbGluZSA9PSAnJXM6JyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSk6Ci0gICAgICAgICAgICAgICAgaW5yZWNpcGUgPSBUcnVlCi0gICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihiYmFwcGVuZHMpLCAyLCAnJXMgcmVjaXBlIGlzIGJlaW5nIGJiYXBwZW5kZWQgYnkgYW5vdGhlciBsYXllciAtIGJiYXBwZW5kcyBmb3VuZDpcbiAgJXMnICUgKHRlc3RyZWNpcGUsICdcbiAgJy5qb2luKGJiYXBwZW5kcykpKQotICAgICAgICBmb3IgYmJhcHBlbmQgaW4gYmJhcHBlbmRzOgotICAgICAgICAgICAgaWYgYmJhcHBlbmQuc3RhcnRzd2l0aChhcHBlbmRkaXIpOgotICAgICAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IGJiYXBwZW5kCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnYmJhcHBlbmQgZm9yIHJlY2lwZSAlcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGNyZWF0ZWQgaW4gdGVzdCBsYXllcicgJSB0ZXN0cmVjaXBlKQotICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlCi0KLSAgICBkZWYgX2NyZWF0ZV90ZW1wX2xheWVyKHNlbGYsIHRlbXBsYXllcmRpciwgYWRkbGF5ZXIsIHRlbXBsYXllcm5hbWUsIHByaW9yaXR5PTk5OSwgcmVjaXBlcGF0aHNwZWM9J3JlY2lwZXMtKi8qJyk6Ci0gICAgICAgIGNyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgdGVtcGxheWVybmFtZSwgcHJpb3JpdHksIHJlY2lwZXBhdGhzcGVjKQotICAgICAgICBpZiBhZGRsYXllcjoKLSAgICAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcyB8fCB0cnVlJyAlIHRlbXBsYXllcmRpcikKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbHNfb3V0cHV0KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgICIiIgotICAgICAgICBDb252ZXJ0IGxzIC1sIG91dHB1dCB0byBhIGZvcm1hdCB3ZSBjYW4gcmVhc29uYWJseSBjb21wYXJlIGZyb20gb25lIGNvbnRleHQKLSAgICAgICAgdG8gYW5vdGhlciAoZS5nLiBmcm9tIGhvc3QgdG8gdGFyZ2V0KQotICAgICAgICAiIiIKLSAgICAgICAgZmlsZWxpc3QgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICBpZiBsZW4oc3BsaXRsaW5lKSA8IDg6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdfcHJvY2Vzc19sc19vdXRwdXQ6IGludmFsaWQgb3V0cHV0IGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAuIG9uIHBlcm1zCi0gICAgICAgICAgICBzcGxpdGxpbmVbMF0gPSBzcGxpdGxpbmVbMF0ucnN0cmlwKCcuJykKLSAgICAgICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgLiBvbiBwYXRocwotICAgICAgICAgICAgc3BsaXRsaW5lWy0xXSA9IHNwbGl0bGluZVstMV0ubHN0cmlwKCcuJykKLSAgICAgICAgICAgICMgRHJvcCBmaWVsZHMgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlCi0gICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzddCi0gICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzZdCi0gICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzVdCi0gICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzRdCi0gICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzFdCi0gICAgICAgICAgICBmaWxlbGlzdC5hcHBlbmQoJyAnLmpvaW4oc3BsaXRsaW5lKSkKLSAgICAgICAgcmV0dXJuIGZpbGVsaXN0Ci0KLQotY2xhc3MgRGV2dG9vbFRlc3RzKERldnRvb2xCYXNlKToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RPUERJUicsICdTU1RBVEVfRElSJ10pCi0gICAgICAgIGNscy5vcmlnaW5hbF9zc3RhdGUgPSBiYl92YXJzWydTU1RBVEVfRElSJ10KLSAgICAgICAgY2xzLmRldnRvb2xfc3N0YXRlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ1RPUERJUiddLCAnc3N0YXRlX2RldnRvb2wnKQotICAgICAgICBjbHMuc3N0YXRlX2NvbmYgID0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgY2xzLmRldnRvb2xfc3N0YXRlCi0gICAgICAgIGNscy5zc3RhdGVfY29uZiArPSAoJ1NTVEFURV9NSVJST1JTICs9ICJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgY2xzLm9yaWdpbmFsX3NzdGF0ZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5sb2cuZGVidWcoJ0RlbGV0aW5nIGRldnRvb2wgc3N0YXRlIGNhY2hlIG9uICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKLSAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNhc2Ugc2V0dXAgZnVuY3Rpb24iIiIKLSAgICAgICAgc3VwZXIoRGV2dG9vbFRlc3RzLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgIHNlbGYud29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd3b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAndW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhzZWxmLnNzdGF0ZV9jb25mKQotCi0gICAgZGVmIF9jaGVja19zcmNfcmVwbyhzZWxmLCByZXBvX2Rpcik6Ci0gICAgICAgICIiIkNoZWNrIHNyY3RyZWUgZ2l0IHJlcG9zaXRvcnkiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHJlcG9fZGlyLCAnLmdpdCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgbm90IGZvdW5kJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXJlcG9fZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWF0ZWQgZ2l0IHJlcG8gaXMgbm90IGNsZWFuJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3ltYm9saWMtcmVmIEhFQUQnLCBjd2Q9cmVwb19kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAicmVmcy9oZWFkcy9kZXZ0b29sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnV3JvbmcgYnJhbmNoIGluIGdpdCByZXBvJykKLQotICAgIGRlZiBfY2hlY2tfcmVwb19zdGF0dXMoc2VsZiwgcmVwb19kaXIsIGV4cGVjdGVkX3N0YXR1cyk6Ci0gICAgICAgICIiIkNoZWNrIHRoZSB3b3JrdHJlZSBzdGF0dXMgb2YgYSByZXBvc2l0b3J5IiIiCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAuIC0tcG9yY2VsYWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1yZXBvX2RpcikKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBmb3IgaW5kLCAoZl9zdGF0dXMsIGZuX3JlKSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfc3RhdHVzKToKLSAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChmbl9yZSwgbGluZVszOl0pOgotICAgICAgICAgICAgICAgICAgICBpZiBmX3N0YXR1cyAhPSBsaW5lWzoyXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBzdGF0dXMgaW4gbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzLnBvcChpbmQpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBtb2RpZmllZCBmaWxlIGluIGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgIGlmIGV4cGVjdGVkX3N0YXR1czoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBmaWxlIGNoYW5nZXM6ICVzJyAlIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMTU4KQotICAgIGRlZiB0ZXN0X2NyZWF0ZV93b3Jrc3BhY2Uoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvd29ya3NwYWNlJyBub3QgaW4gcmVzdWx0Lm91dHB1dCwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgbGF5ZXIgaW4gYmJsYXllcnMuY29uZicpCi0gICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgd29ya3NwYWNlIGxheWVyIHdpdGggYSBzcGVjaWZpYyBwYXRoCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgY3JlYXRlLXdvcmtzcGFjZSAlcycgJSB0ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHRlbXBkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksIG1zZyA9ICJObyB3b3Jrc3BhY2UgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzICIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFRyeSBjcmVhdGluZyBhIHdvcmtzcGFjZSBsYXllciB3aXRoIHRoZSBkZWZhdWx0IHBhdGgKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCBtc2cgPSAiTm8gd29ya3NwYWNlIGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcyAiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLndvcmtzcGFjZWRpciwgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTU5KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkKHNlbGYpOgotICAgICAgICAjIEZldGNoIHNvdXJjZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LTEuNS4zLnRhci5iejInCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnd2dldCAlcycgJSB1cmwsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3RhciB4ZnYgcHYtMS41LjMudGFyLmJ6MicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3B2LTEuNS4zJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSBwdicpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgcHYgJXMnICUgc3JjZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigncHYnLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZSAoaGF2ZSB0byBkbyB0aGlzICphZnRlciogZGV2dG9vbCBhZGQgc2luY2UgdGhlIHJlY2lwZSBvbmx5IGV4aXN0cyB0aGVuKQotICAgICAgICBiaXRiYWtlKCdwdiAtYyBjbGVhbnNzdGF0ZScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGJ1aWxkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCBwdicpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnYmluZGlyJ10sICdwdicpCi0gICAgICAgIGluc3RhbGxkaXIgPSBiYl92YXJzWydEJ10KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3RhbGxkaXIsICdDb3VsZCBub3QgcXVlcnkgaW5zdGFsbGRpciB2YXJpYWJsZScpCi0gICAgICAgIGJpbmRpciA9IGJiX3ZhcnNbJ2JpbmRpciddCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiaW5kaXIsICdDb3VsZCBub3QgcXVlcnkgYmluZGlyIHZhcmlhYmxlJykKLSAgICAgICAgaWYgYmluZGlyWzBdID09ICcvJzoKLSAgICAgICAgICAgIGJpbmRpciA9IGJpbmRpclsxOl0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihpbnN0YWxsZGlyLCBiaW5kaXIsICdwdicpKSwgJ3B2IGJpbmFyeSBub3QgZm91bmQgaW4gRCcpCi0KLSAgICBAdGVzdGNhc2UoMTQyMykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9naXRfbG9jYWwoc2VsZik6Ci0gICAgICAgICMgRmV0Y2ggc291cmNlIGZyb20gYSByZW1vdGUgVVJMLCBidXQgZG8gaXQgb3V0c2lkZSBvZiBkZXZ0b29sCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBwbiA9ICdkYnVzLXdhaXQnCi0gICAgICAgIHNyY3JldiA9ICc2Y2M2MDc3YTM2ZmUyNjQ4YTVmOTkzZmU3YzE2Yzk2MzJmOTQ2NTE3JwotICAgICAgICAjIFdlIGNob29zZSBhbiBodHRwczovLyBnaXQgVVJMIGhlcmUgdG8gY2hlY2sgcmV3cml0aW5nIHRoZSBVUkwgd29ya3MKLSAgICAgICAgdXJsID0gJ2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L2RidXMtd2FpdCcKLSAgICAgICAgIyBGb3JjZSBmZXRjaGluZyB0byAibm9uYW1lIiBzdWJkaXIgc28gd2UgdmVyaWZ5IHdlJ3JlIHBpY2tpbmcgdXAgdGhlIG5hbWUgZnJvbSBhdXRvY29uZgotICAgICAgICAjIGluc3RlYWQgb2YgdGhlIGRpcmVjdG9yeSBuYW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNsb25lICVzIG5vbmFtZScgJSB1cmwsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ25vbmFtZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IC0taGFyZCAlcycgJSBzcmNyZXYsIGN3ZD1zcmNkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlLmFjJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgRG9uJ3Qgc3BlY2lmeSBhIG5hbWUgc2luY2Ugd2Ugc2hvdWxkIGJlIGFibGUgdG8gYXV0by1kZXRlY3QgaXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSBzcmNkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBDaGVjayB0aGUgcmVjaXBlIG5hbWUgaXMgY29ycmVjdAotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHBuKQotICAgICAgICBzZWxmLmFzc2VydEluKCclc19naXQuYmInICUgcG4sIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlZmlsZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHBuLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGVmaWxlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdHUEx2MicKLSAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJwotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKLSAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzAuMStnaXQke1NSQ1BWfScKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L2RidXMtd2FpdDtwcm90b2NvbD1odHRwcycKLSAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9IHNyY3JldgotICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2RidXMnXSkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTYyKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2xpYnJhcnkoc2VsZik6Ci0gICAgICAgICMgRmV0Y2ggc291cmNlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICB2ZXJzaW9uID0gJzEuMScKLSAgICAgICAgdXJsID0gJ2h0dHBzOi8vd3d3LmludHJhMm5ldC5jb20vZW4vZGV2ZWxvcGVyL2xpYmZ0ZGkvZG93bmxvYWQvbGliZnRkaTEtJXMudGFyLmJ6MicgJSB2ZXJzaW9uCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnd2dldCAlcycgJSB1cmwsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3RhciB4ZnYgbGliZnRkaTEtJXMudGFyLmJ6MicgJSB2ZXJzaW9uLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsaWJmdGRpMS0lcycgJSB2ZXJzaW9uKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ0NNYWtlTGlzdHMudHh0JykpLCAnVW5hYmxlIHRvIGZpbmQgQ01ha2VMaXN0cy50eHQgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZCAoYW5kIHVzZSAtViBzbyB3ZSB0ZXN0IHRoYXQgdG9vKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkIGxpYmZ0ZGkgJXMgLVYgJXMnICUgKHNyY2RpciwgdmVyc2lvbikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJmdGRpJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUgKGhhdmUgdG8gZG8gdGhpcyAqYWZ0ZXIqIGRldnRvb2wgYWRkIHNpbmNlIHRoZSByZWNpcGUgb25seSBleGlzdHMgdGhlbikKLSAgICAgICAgYml0YmFrZSgnbGliZnRkaSAtYyBjbGVhbnNzdGF0ZScpCi0gICAgICAgICMgbGliZnRkaSdzIHB5dGhvbi9DTWFrZUxpc3RzLnR4dCBpcyBhIGJpdCBicm9rZW4sIHNvIGxldCdzIGp1c3QgZGlzYWJsZSBpdAotICAgICAgICAjIFRoZXJlJ3MgYWxzbyB0aGUgbWF0dGVyIG9mIGl0IGluc3RhbGxpbmcgY21ha2UgZmlsZXMgdG8gYSBwYXRoIHdlIGRvbid0Ci0gICAgICAgICMgbm9ybWFsbHkgY292ZXIsIHdoaWNoIHRyaWdnZXJzIHRoZSBpbnN0YWxsZWQtdnMtc2hpcHBlZCBRQSB0ZXN0IHdlIGhhdmUKLSAgICAgICAgIyB3aXRoaW4gZG9fcGFja2FnZQotICAgICAgICByZWNpcGVmaWxlID0gJyVzL3JlY2lwZXMvbGliZnRkaS9saWJmdGRpXyVzLmJiJyAlIChzZWxmLndvcmtzcGFjZWRpciwgdmVyc2lvbikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIHNldHZhciAlcyBFWFRSQV9PRUNNQUtFIC0tIFwnLURQWVRIT05fQklORElOR1M9T0ZGIC1ETElCRlRESV9DTUFLRV9DT05GSUdfRElSPSR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlc1wnJyAlIHJlY2lwZWZpbGUpCi0gICAgICAgIHdpdGggb3BlbihyZWNpcGVmaWxlLCAnYScpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCdcbkZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzIlxuJykKLSAgICAgICAgICAgICMgV2UgZG9uJ3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBwaWNrIHVwIHRoaXMgZGVwZW5kZW5jeSBhdXRvbWF0aWNhbGx5IHlldC4uLgotICAgICAgICAgICAgZi53cml0ZSgnXG5ERVBFTkRTICs9ICJsaWJ1c2IxIlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ1xuVEVTVExJQk9VVFBVVCA9ICIke0NPTVBPTkVOVFNfRElSfS8ke1RVTkVfUEtHQVJDSH0vJHtQTn0vJHtsaWJkaXJ9IlxuJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYnVpbGQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkIGxpYmZ0ZGknKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydURVNUTElCT1VUUFVUJywgJ1NUQU1QJ10sICdsaWJmdGRpJykKLSAgICAgICAgc3RhZ2luZ19saWJkaXIgPSBiYl92YXJzWydURVNUTElCT1VUUFVUJ10KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YWdpbmdfbGliZGlyLCAnQ291bGQgbm90IHF1ZXJ5IFRFU1RMSUJPVVRQVVQgdmFyaWFibGUnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHN0YWdpbmdfbGliZGlyLCAnbGliZnRkaTEuc28uMi4xLjAnKSksICJsaWJmdGRpIGJpbmFyeSBub3QgZm91bmQgaW4gU1RBR0lOR19MSUJESVIuIE91dHB1dCBvZiBkZXZ0b29sIGJ1aWxkIGxpYmZ0ZGkgJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgcmVzZXQKLSAgICAgICAgc3RhbXBwcmVmaXggPSBiYl92YXJzWydTVEFNUCddCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCBsaWJmdGRpJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYmZ0ZGknLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgbGliZnRkaScpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXggKyAnKicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlcywgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgbGliZnRkaSB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHN0YWdpbmdfbGliZGlyLCAnbGliZnRkaTEuc28uMi4xLjAnKSksICdsaWJmdGRpIGJpbmFyeSBzdGlsbCBmb3VuZCBpbiBTVEFHSU5HX0xJQkRJUiBhZnRlciBjbGVhbmluZycpCi0KLSAgICBAdGVzdGNhc2UoMTE2MCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaChzZWxmKToKLSAgICAgICAgIyBGZXRjaCBzb3VyY2UKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHRlc3R2ZXIgPSAnMC4yMycKLSAgICAgICAgdXJsID0gJ2h0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9NL01hcmt1cFNhZmUvTWFya3VwU2FmZS0lcy50YXIuZ3onICUgdGVzdHZlcgotICAgICAgICB0ZXN0cmVjaXBlID0gJ3B5dGhvbi1tYXJrdXBzYWZlJwotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdzZXR1cC5weScpKSwgJ1VuYWJsZSB0byBmaW5kIHNldHVwLnB5IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc3JjZGlyLCAnLmdpdCcpKSwgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSB3YXMgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIHRlc3R2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L01hcmt1cFNhZmUtJHtQVn0nCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLSAgICAgICAgIyBUcnkgd2l0aCB2ZXJzaW9uIHNwZWNpZmllZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNkaXIpCi0gICAgICAgIGZha2V2ZXIgPSAnMS45JwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICVzIC1WICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCwgZmFrZXZlcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnc2V0dXAucHknKSksICdVbmFibGUgdG8gZmluZCBzZXR1cC5weSBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCBmYWtldmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9NYXJrdXBTYWZlLSVzJyAlIHRlc3R2ZXIKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTYxKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoX2dpdChzZWxmKToKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHVybCA9ICdnaXRzbTovL2dpdC55b2N0b3Byb2plY3Qub3JnL21yYWEnCi0gICAgICAgIGNoZWNrcmV2ID0gJ2FlMTI3YjE5YTUwYWE1NDI1NWU0MzMwY2NmZGQ5YTVkMDU4ZTU4MWQnCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbXJhYScKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWEgLWYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnaW1yYWEnLCAnaW1yYWEuYycpKSwgJ1VuYWJsZSB0byBmaW5kIGltcmFhL2ltcmFhLmMgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCdfZ2l0LmJiJywgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCi0gICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjArZ2l0JHtTUkNQVn0nCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCi0gICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSAnJHtBVVRPUkVWfScKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLSAgICAgICAgIyBUcnkgd2l0aCByZXZpc2lvbiBhbmQgdmVyc2lvbiBzcGVjaWZpZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc3JjZGlyKQotICAgICAgICB1cmxfcmV2ID0gJyVzO3Jldj0lcycgJSAodXJsLCBjaGVja3JldikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAiJXMiIC1WIDEuNScgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmxfcmV2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdpbXJhYScsICdpbXJhYS5jJykpLCAnVW5hYmxlIHRvIGZpbmQgaW1yYWEvaW1yYWEuYyBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19naXQuYmInLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKLSAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuNStnaXQke1NSQ1BWfScKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKLSAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9IGNoZWNrcmV2Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTM5MSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaF9zaW1wbGUoc2VsZik6Ci0gICAgICAgICMgRmV0Y2ggc291cmNlIGZyb20gYSByZW1vdGUgVVJMLCBhdXRvLWRldGVjdGluZyBuYW1lCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICB0ZXN0dmVyID0gJzEuNi4wJwotICAgICAgICB1cmwgPSAnaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3NvdXJjZXMvcHYtJXMudGFyLmJ6MicgJSB0ZXN0dmVyCi0gICAgICAgIHRlc3RyZWNpcGUgPSAncHYnCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSB1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZScpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzcmNkaXIsICcuZ2l0JykpLCAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgdGVzdHZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTE2NCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeShzZWxmKToKLSAgICAgICAgaW1wb3J0IG9lLnBhdGgKLQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtZGFkbScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbWRhZG0gLXggJXMnICUgdGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJ21kYWRtXyouYmJhcHBlbmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCAlcycgJSByZXN1bHQub3V0cHV0KQotCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbWRhZG0nLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0KLSAgICAgICAgYml0YmFrZSgnbWRhZG0gLUMgdW5wYWNrJykKLQotICAgICAgICBkZWYgY2hlY2tfbGluZShjaGVja2ZpbGUsIGV4cGVjdGVkLCBtZXNzYWdlLCBwcmVzZW50PVRydWUpOgotICAgICAgICAgICAgIyBDaGVjayBmb3IgJGV4cGVjdGVkLCBvbiBhIGxpbmUgb24gaXRzIG93biwgaW4gY2hlY2tmaWxlLgotICAgICAgICAgICAgd2l0aCBvcGVuKGNoZWNrZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIGlmIHByZXNlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQgKyAnXG4nLCBmLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZXhwZWN0ZWQgKyAnXG4nLCBmLCBtZXNzYWdlKQotCi0gICAgICAgIG1vZGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ21kYWRtLjguaW4nKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydQS0dEJywgJ21hbmRpciddLCAnbWRhZG0nKQotICAgICAgICBwa2dkID0gYmJfdmFyc1snUEtHRCddCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwa2dkLCAnQ291bGQgbm90IHF1ZXJ5IFBLR0QgdmFyaWFibGUnKQotICAgICAgICBtYW5kaXIgPSBiYl92YXJzWydtYW5kaXInXQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuZGlyLCAnQ291bGQgbm90IHF1ZXJ5IG1hbmRpciB2YXJpYWJsZScpCi0gICAgICAgIG1hbmZpbGUgPSBvZS5wYXRoLmpvaW4ocGtnZCwgbWFuZGlyLCAnbWFuOCcsICdtZGFkbS44JykKLQotICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ0NvdWxkIG5vdCBmaW5kIGluaXRpYWwgc3RyaW5nJykKLSAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdVbmV4cGVjdGVkbHkgZm91bmQgcmVwbGFjZW1lbnQgc3RyaW5nJywgcHJlc2VudD1GYWxzZSkKLQotICAgICAgICByZXN1bHQgPSBydW5DbWQoInNlZCAtaSAncyFeTGludXggU29mdHdhcmUgUkFJRCQhYW50aXF1ZSBwaW4gc2FyZGluZSEnICVzIiAlIG1vZGZpbGUpCi0gICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnbWRhZG0uOC5pbiBmaWxlIG5vdCBtb2RpZmllZCAoc2VkIGZhaWxlZCknKQotCi0gICAgICAgIGJpdGJha2UoJ21kYWRtIC1jIHBhY2thZ2UnKQotICAgICAgICBjaGVja19saW5lKG1hbmZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ21hbiBmaWxlIG5vdCBtb2RpZmllZC4gbWFuIHNlYXJjaGVkIGZpbGUgcGF0aDogJXMnICUgbWFuZmlsZSkKLQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjaGVja291dCAtLSAlcycgJSBtb2RmaWxlLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdtYW4gLmluIGZpbGUgbm90IHJlc3RvcmVkIChnaXQgZmFpbGVkKScpCi0KLSAgICAgICAgYml0YmFrZSgnbWRhZG0gLWMgcGFja2FnZScpCi0gICAgICAgIGNoZWNrX2xpbmUobWFuZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnbWFuIGZpbGUgbm90IHVwZGF0ZWQuIG1hbiBzZWFyY2hlZCBmaWxlIHBhdGg6ICVzJyAlIG1hbmZpbGUpCi0KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IG1kYWRtJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21kYWRtJywgcmVzdWx0Lm91dHB1dCkKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRjbGVhbihzZWxmKToKLSAgICAgICAgZGVmIGFzc2VydEZpbGUocGF0aCwgKnBhdGhzKToKLSAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocGF0aCwgKnBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGYpLCAiJXIgZG9lcyBub3QgZXhpc3QiICUgZikKLSAgICAgICAgZGVmIGFzc2VydE5vRmlsZShwYXRoLCAqcGF0aHMpOgotICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwYXRoLCAqcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihmKSksICIlciBleGlzdHMiICUgZikKLQotICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCi0gICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNsZWFuc3N0YXRlJykKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXJfbWRhZG0gPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgdGVtcGRpcl9tNCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBidWlsZGRpcl9tNCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXJfbWRhZG0pCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcl9tNCkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChidWlsZGRpcl9tNCkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtZGFkbSBtNCcpCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtNCcsICdFWFRFUk5BTFNSQ19CVUlMRCA9ICIlcyJcbmRvX2NsZWFuKCkge1xuXHQ6XG59XG4nICUgYnVpbGRkaXJfbTQpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbWRhZG0gLXggJXMnICUgdGVtcGRpcl9tZGFkbSkKLSAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbTQgLXggJXMnICUgdGVtcGRpcl9tNCkKLSAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQotICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKLSAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200IC1lJykKLSAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ21kYWRtIG00IC1jIGNvbXBpbGUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwKQotICAgICAgICAgICAgYXNzZXJ0RmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQotICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCi0gICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGV4aXN0cyBhbmQgZG9lcyBjYWxsIG1ha2UgY2xlYW4KLSAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGJ1aWxkY2xlYW4nKQotICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCi0gICAgICAgICAgICBhc3NlcnROb0ZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQotICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY29tcGlsZScpCi0gICAgICAgICAgICBhc3NlcnRGaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCi0gICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKLSAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNsZWFuJykKLSAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgaXMgcnVuIGJlZm9yZSBjbGVhbiBmb3IgQiA9PSBTCi0gICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKLSAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgaXMgbm90IHJ1biBiZWZvcmUgY2xlYW4gZm9yIEIgIT0gUwotICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ200JykKLQotICAgIEB0ZXN0Y2FzZSgxMTY2KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2ludmFsaWQoc2VsZik6Ci0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBzb21lIHJlY2lwZXMKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0KLSAgICAgICAgdGVzdHJlY2lwZXMgPSAncGVyZiBrZXJuZWwtZGV2c3JjIHBhY2thZ2UtaW5kZXggY29yZS1pbWFnZS1taW5pbWFsIG1ldGEtdG9vbGNoYWluIHBhY2thZ2Vncm91cC1jb3JlLXNkayBtZXRhLWlkZS1zdXBwb3J0Jy5zcGxpdCgpCi0gICAgICAgICMgRmluZCBhY3R1YWwgbmFtZSBvZiBnY2Mtc291cmNlIHNpbmNlIGl0IG5vdyBpbmNsdWRlcyB0aGUgdmVyc2lvbiAtIGNydWRlLCBidXQgZ29vZCBlbm91Z2ggZm9yIHRoaXMgcHVycG9zZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyBnY2Mtc291cmNlKicpCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgIyBqdXN0IG1hdGNoIHRob3NlIGxpbmVzIHRoYXQgY29udGFpbiBhIHJlYWwgdGFyZ2V0Ci0gICAgICAgICAgICBtID0gcmUubWF0Y2goJyg/UDxyZWNpcGU+XlthLXpBLVowLTkuLV0rKSg/UDxjb2xvbj46JCknLCBsaW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICB0ZXN0cmVjaXBlcy5hcHBlbmQobS5ncm91cCgncmVjaXBlJykpCi0gICAgICAgIGZvciB0ZXN0cmVjaXBlIGluIHRlc3RyZWNpcGVzOgotICAgICAgICAgICAgIyBDaGVjayBpdCdzIGEgdmFsaWQgcmVjaXBlCi0gICAgICAgICAgICBiaXRiYWtlKCclcyAtZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgIyBkZXZ0b29sIGV4dHJhY3Qgc2hvdWxkIGZhaWwKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0ICVzICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZmFpbGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRmV0Y2hpbmcgJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBlcnJvcmVkIG91dCBiZWZvcmUgdHJ5aW5nIHRvIGZldGNoJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBnaXZlbiBhbiBFUlJPUicgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgIyBkZXZ0b29sIG1vZGlmeSBzaG91bGQgZmFpbAotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnZGV2dG9vbCBtb2RpZnkgb24gJXMgc2hvdWxkIGhhdmUgZmFpbGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgICh0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBtb2RpZnkgb24gJXMgc2hvdWxkIGhhdmUgZ2l2ZW4gYW4gRVJST1InICUgdGVzdHJlY2lwZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzY1KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X25hdGl2ZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBzb21lIHJlY2lwZXMKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0KLSAgICAgICAgYmJjbGFzc2V4dGVuZGVkID0gRmFsc2UKLSAgICAgICAgaW5oZXJpdG5hdGl2ZSA9IEZhbHNlCi0gICAgICAgIHRlc3RyZWNpcGVzID0gJ210b29scy1uYXRpdmUgYXB0LW5hdGl2ZSBkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlJy5zcGxpdCgpCi0gICAgICAgIGZvciB0ZXN0cmVjaXBlIGluIHRlc3RyZWNpcGVzOgotICAgICAgICAgICAgY2hlY2tleHRlbmQgPSAnbmF0aXZlJyBpbiAoZ2V0X2JiX3ZhcignQkJDTEFTU0VYVEVORCcsIHRlc3RyZWNpcGUpIG9yICcnKS5zcGxpdCgpCi0gICAgICAgICAgICBpZiBub3QgYmJjbGFzc2V4dGVuZGVkOgotICAgICAgICAgICAgICAgIGJiY2xhc3NleHRlbmRlZCA9IGNoZWNrZXh0ZW5kCi0gICAgICAgICAgICBpZiBub3QgaW5oZXJpdG5hdGl2ZToKLSAgICAgICAgICAgICAgICBpbmhlcml0bmF0aXZlID0gbm90IGNoZWNrZXh0ZW5kCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIG1vZGlmeSBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCBidWlsZCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCByZXNldCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJiY2xhc3NleHRlbmRlZCwgJ05vbmUgb2YgdGhlc2UgcmVjaXBlcyBhcmUgQkJDTEFTU0VYVEVORGVkIHRvIG5hdGl2ZSAtIG5lZWQgdG8gYWRqdXN0IHRlc3RyZWNpcGVzIGxpc3Q6ICVzJyAlICcsICcuam9pbih0ZXN0cmVjaXBlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmhlcml0bmF0aXZlLCAnTm9uZSBvZiB0aGVzZSByZWNpcGVzIGRvICJpbmhlcml0IG5hdGl2ZSIgLSBuZWVkIHRvIGFkanVzdCB0ZXN0cmVjaXBlcyBsaXN0OiAlcycgJSAnLCAnLmpvaW4odGVzdHJlY2lwZXMpKQotCi0KLSAgICBAdGVzdGNhc2UoMTE2NSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9naXQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21rZWxmaW1hZ2UnCi0gICAgICAgIHNyY191cmkgPSBnZXRfYmJfdmFyKCdTUkNfVVJJJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWtlbGZpbWFnZV8qLmJiYXBwZW5kJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgVHJ5IGJ1aWxkaW5nCi0gICAgICAgIGJpdGJha2UodGVzdHJlY2lwZSkKLQotICAgIEB0ZXN0Y2FzZSgxMTY3KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2xvY2FsZmlsZXMoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ2xpZ2h0dHBkJwotICAgICAgICBzcmNfdXJpID0gKGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKSBvciAnJykuc3BsaXQoKQotICAgICAgICBmb3VuZGxvY2FsID0gRmFsc2UKLSAgICAgICAgZm9yIGl0ZW0gaW4gc3JjX3VyaToKLSAgICAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCgnZmlsZTovLycpIGFuZCAnLnBhdGNoJyBub3QgaW4gaXRlbToKLSAgICAgICAgICAgICAgICBmb3VuZGxvY2FsID0gVHJ1ZQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZGxvY2FsLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBmZXRjaCBsb2NhbCBmaWxlcyBhbmQgaXQgc2VlbXMgdGhhdCBpdCBubyBsb25nZXIgZG9lcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCi0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnY29uZmlndXJlLmFjJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICclc18qLmJiYXBwZW5kJyAlIHRlc3RyZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBUcnkgYnVpbGRpbmcKLSAgICAgICAgYml0YmFrZSh0ZXN0cmVjaXBlKQotCi0gICAgQHRlc3RjYXNlKDEzNzgpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfdmlydHVhbChzZWxmKToKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgdmlydHVhbCByZWNpcGUKLSAgICAgICAgdmlydHJlY2lwZSA9ICd2aXJ0dWFsL21ha2UnCi0gICAgICAgIHJlYWxyZWNpcGUgPSAnbWFrZScKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHZpcnRyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnJXNfKi5iYmFwcGVuZCcgJSByZWFscmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmlydHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWFscmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgVGhpcyBpcyBwcm9iYWJseSBzdWZmaWNpZW50Ci0KLQotICAgIEB0ZXN0Y2FzZSgxMTY5KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWluaWNvbScKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBOT1QgYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgICMgV2UgZG9uJ3QgdXNlIC14IGhlcmUgc28gdGhhdCB3ZSB0ZXN0IHRoZSBiZWhhdmlvdXIgb2YgZGV2dG9vbCBtb2RpZnkgd2l0aG91dCBpdAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIEFkZCBhIGNvdXBsZSBvZiBjb21taXRzCi0gICAgICAgICMgRklYTUU6IHRoaXMgb25seSB0ZXN0cyBhZGRpbmcsIG5lZWQgdG8gYWxzbyB0ZXN0IHVwZGF0ZSBhbmQgcmVtb3ZlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQWRkaXRpb25hbCBsaW5lIiA+PiBSRUFETUUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIFJFQURNRSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBIG5ldyBmaWxlIiA+IGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgYSBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAxLUNoYW5nZS10aGUtUkVBRE1FLnBhdGNoJCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAyLUFkZC1hLW5ldy1maWxlLnBhdGNoJCcpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMTcyKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9naXQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ210ZC11dGlscycKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcGF0Y2hlcyA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBzcmNfdXJpLnNwbGl0KCk6Ci0gICAgICAgICAgICBpZiBlbnRyeS5zdGFydHN3aXRoKCdmaWxlOi8vJykgYW5kIGVudHJ5LmVuZHN3aXRoKCcucGF0Y2gnKToKLSAgICAgICAgICAgICAgICBwYXRjaGVzLmFwcGVuZChlbnRyeVs3Ol0uc3BsaXQoJzsnKVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwYXRjaGVzKSwgMCwgJ1RoZSAlcyByZWNpcGUgZG9lcyBub3QgYXBwZWFyIHRvIGNvbnRhaW4gYW55IHBhdGNoZXMsIHNvIHRoaXMgdGVzdCB3aWxsIG5vdCBiZSBlZmZlY3RpdmUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBBZGQgYSBjb3VwbGUgb2YgY29tbWl0cwotICAgICAgICAjIEZJWE1FOiB0aGlzIG9ubHkgdGVzdHMgYWRkaW5nLCBuZWVkIHRvIGFsc28gdGVzdCB1cGRhdGUgYW5kIHJlbW92ZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIiMgQWRkaXRpb25hbCBsaW5lIiA+PiBNYWtlZmlsZS5hbScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQSBuZXcgZmlsZSIgPiBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGFkZCBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGEgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtcmYgJXM7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKV0gKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsoJyBEJywgJy4qLyVzJCcgJSBwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGRpZmYgJXMnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSwgY3dkPW9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKLSAgICAgICAgYWRkbGluZXMgPSBbJ1NSQ1JFViA9ICIuKiInLCAnU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IiddCi0gICAgICAgIHNyY3VyaWxpbmVzID0gc3JjX3VyaS5zcGxpdCgpCi0gICAgICAgIHNyY3VyaWxpbmVzWzBdID0gJ1NSQ19VUkkgPSAiJyArIHNyY3VyaWxpbmVzWzBdCi0gICAgICAgIHNyY3VyaWxpbmVzLmFwcGVuZCgnIicpCi0gICAgICAgIHJlbW92ZWxpbmVzID0gWydTUkNSRVYgPSAiLioiJ10gKyBzcmN1cmlsaW5lcwotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKysrJykgb3IgbGluZS5zdGFydHN3aXRoKCctLS0nKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJysnKToKLSAgICAgICAgICAgICAgICBtYXRjaGVkID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBhZGRsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goaXRlbSwgbGluZVsxOl0uc3RyaXAoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlZCwgJ1VuZXhwZWN0ZWQgZGlmZiBhZGQgbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCctJyk6Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcmVtb3ZlbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGl0ZW0sIGxpbmVbMTpdLnN0cmlwKCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZWQsICdVbmV4cGVjdGVkIGRpZmYgcmVtb3ZlIGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgICMgTm93IHRyeSB3aXRoIGF1dG8gbW9kZQotICAgICAgICBydW5DbWQoJ2NkICVzOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSAtLXNob3ctdG9wbGV2ZWwnLCBjd2Q9b3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICB0b3BsZXZlbGRpciA9IHJlc3VsdC5vdXRwdXQuc3RyaXAoKQotICAgICAgICByZWxwYXRjaHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdG9wbGV2ZWxkaXIpLCB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsIG9zLnBhdGgucmVscGF0aChyZWNpcGVmaWxlLCB0b3BsZXZlbGRpcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICclcy8wMDAxLUNoYW5nZS10aGUtTWFrZWZpbGUucGF0Y2gnICUgcmVscGF0Y2hwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnJXMvMDAwMi1BZGQtYS1uZXctZmlsZS5wYXRjaCcgJSByZWxwYXRjaHBhdGgpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMTcwKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9hcHBlbmQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIE5PVCBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgdGVtcHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc291cmNlJykKLSAgICAgICAgdGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsYXllcicpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBzcmNkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBzcmNkaXIpCi0gICAgICAgICMgQWRkIGEgY29tbWl0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgic2VkICdzIVxcKCNkZWZpbmUgVkVSU0lPTlxcVypcIlteXCJdKlxcKVwiIVxcMS1jdXN0b21cIiEnIC1pIFJlYWRNZS5jIiwgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQWRkIG91ciBjdXN0b20gdmVyc2lvbiInLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1mICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAuJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUpKQotICAgICAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBsYXllciBhbmQgYWRkIGl0IHRvIGJibGF5ZXJzLmNvbmYKLSAgICAgICAgc2VsZi5fY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCBUcnVlLCAnc2VsZnRlc3R1cGRhdGVyZWNpcGUnKQotICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUgaXMgc3RpbGwgY2xlYW4KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBDaGVjayBiYmFwcGVuZCB3YXMgY3JlYXRlZAotICAgICAgICBzcGxpdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkuc3BsaXQob3Muc2VwKQotICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCBzcGxpdHBhdGhbLTJdLCBzcGxpdHBhdGhbLTFdKQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpCi0gICAgICAgIHBhdGNoZmlsZSA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUsICcwMDAxLUFkZC1vdXItY3VzdG9tLXZlcnNpb24ucGF0Y2gnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocGF0Y2hmaWxlKSwgJ1BhdGNoIGZpbGUgbm90IGNyZWF0ZWQnKQotCi0gICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgY29udGVudHMKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BZGQtb3VyLWN1c3RvbS12ZXJzaW9uLnBhdGNoIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCi0KLSAgICAgICAgIyBDaGVjayB3ZSBjYW4gcnVuIGl0IGFnYWluIGFuZCBiYmFwcGVuZCBpc24ndCBtb2RpZmllZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQotICAgICAgICAjIERyb3AgbmV3IGNvbW1pdCBhbmQgY2hlY2sgcGF0Y2ggZ2V0cyBkZWxldGVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IEhFQUReJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHBhdGNoZmlsZSksICdQYXRjaCBmaWxlIG5vdCBkZWxldGVkJykKLSAgICAgICAgZXhwZWN0ZWRsaW5lczIgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzMiwgZi5yZWFkbGluZXMoKSkKLSAgICAgICAgIyBQdXQgY29tbWl0IGJhY2sgYW5kIGNoZWNrIHdlIGNhbiBydW4gaXQgaWYgbGF5ZXIgaXNuJ3QgaW4gYmJsYXllcnMuY29uZgotICAgICAgICBvcy5yZW1vdmUoYmJhcHBlbmRmaWxlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkFkZCBvdXIgY3VzdG9tIHZlcnNpb24iJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiBTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYnLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocGF0Y2hmaWxlKSwgJ1BhdGNoIGZpbGUgbm90IGNyZWF0ZWQgKHdpdGggZGlzYWJsZWQgbGF5ZXIpJykKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQotICAgICAgICAjIERlbGV0aW5nIGlzbid0IGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcwotCi0gICAgQHRlc3RjYXNlKDExNzEpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2FwcGVuZF9naXQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ210ZC11dGlscycKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZm9yIGVudHJ5IGluIHNyY191cmkuc3BsaXQoKToKLSAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoJ2dpdDovLycpOgotICAgICAgICAgICAgICAgIGdpdF91cmkgPSBlbnRyeQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHRlbXBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NvdXJjZScpCi0gICAgICAgIHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGF5ZXInKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wc3JjZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wc3JjZGlyKQotICAgICAgICAjIEFkZCBhIGNvbW1pdAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIiMgQWRkaXRpb25hbCBsaW5lIiA+PiBNYWtlZmlsZS5hbScsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtZiAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgLicgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlKSkKLSAgICAgICAgIyBDcmVhdGUgYSB0ZW1wb3JhcnkgbGF5ZXIKLSAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgJ2NvbmYnKSkKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm9lc2VsZnRlc3R0ZW1wbGF5ZXIiXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fb2VzZWxmdGVzdHRlbXBsYXllciA9ICJeJHtMQVlFUkRJUn0vIlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjk5OSJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICIxIlxuJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQotICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlIGlzIHN0aWxsIGNsZWFuCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgd2FzIGNyZWF0ZWQKLSAgICAgICAgc3BsaXRwYXRoID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLnNwbGl0KG9zLnNlcCkKLSAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgc3BsaXRwYXRoWy0yXSwgc3BsaXRwYXRoWy0xXSkKLSAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQotCi0gICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgY29udGVudHMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCi0KLSAgICAgICAgIyBDaGVjayB3ZSBjYW4gcnVuIGl0IGFnYWluIGFuZCBiYmFwcGVuZCBpc24ndCBtb2RpZmllZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQotICAgICAgICAjIERyb3AgbmV3IGNvbW1pdCBhbmQgY2hlY2sgU1JDUkVWIGNoYW5nZXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgSEVBRF4nLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKLSAgICAgICAgIyBQdXQgY29tbWl0IGJhY2sgYW5kIGNoZWNrIHdlIGNhbiBydW4gaXQgaWYgbGF5ZXIgaXNuJ3QgaW4gYmJsYXllcnMuY29uZgotICAgICAgICBvcy5yZW1vdmUoYmJhcHBlbmRmaWxlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCi0gICAgICAgICMgRGVsZXRpbmcgaXNuJ3QgZXhwZWN0ZWQgdG8gd29yayB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzCi0KLSAgICBAdGVzdGNhc2UoMTM3MCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXMoc2VsZik6Ci0gICAgICAgICIiIkNoZWNrIHRoYXQgbG9jYWwgc291cmNlIGZpbGVzIGFyZSBjb3BpZWQgb3ZlciBpbnN0ZWFkIG9mIHBhdGNoZWQiIiIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtYWtlZGV2cycKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZQotICAgICAgICAjIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIFRyeSBidWlsZGluZyBqdXN0IHRvIGVuc3VyZSB3ZSBoYXZlbid0IGJyb2tlbiB0aGF0Ci0gICAgICAgIGJpdGJha2UoIiVzIiAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2UKLSAgICAgICAgcnVuQ21kKCdlY2hvICIvKiBGb29iYXIgKi8iID4+IG9lLWxvY2FsLWZpbGVzL21ha2VkZXZzLmMnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdlY2hvICJGb28iID4gb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiQmFyIiA+IG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IGdpdCBjbGVhbiAtZmQgLjsgZ2l0IGNoZWNrb3V0IC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCi0gICAgICAgIHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovbWFrZWRldnMvbWFrZWRldnMuYyQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbWFrZWRldnMvbmV3LWxvY2FsJCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9tYWtlZGV2cy8wMDAxLUFkZC1uZXctZmlsZS5wYXRjaCQnKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTM3MSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMihzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgbG9jYWwgc291cmNlIGZpbGVzIHN1cHBvcnQgd2hlbiBvZS1sb2NhbC1maWxlcyBpcyBpbiBHaXQiIiIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdsem8nCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBTZXR1cCBzcmN0cmVlIGZvciBtb2RpZnlpbmcgdGhlIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBBZGQgb2UtbG9jYWwtZmlsZXMgdG8gR2l0Ci0gICAgICAgIHJ1bkNtZCgncm0gb2UtbG9jYWwtZmlsZXMvLmdpdGlnbm9yZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbG9jYWwgc291cmNlcyInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgIyBFZGl0IC8gY29tbWl0IGxvY2FsIHNvdXJjZXMKLSAgICAgICAgcnVuQ21kKCdlY2hvICIjIEZvb2JhciIgPj4gb2UtbG9jYWwtZmlsZXMvYWNpbmNsdWRlLm00JywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYW0gIkVkaXQgZXhpc3RpbmcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgcm0gb2UtbG9jYWwtZmlsZXMvcnVuLXB0ZXN0JywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSJSZW1vdmUgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdlY2hvICJGb28iID4gb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGxvY2FsIGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiR2FyIiA+IG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IGdpdCBjbGVhbiAtZmQgLjsgZ2l0IGNoZWNrb3V0IC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCi0gICAgICAgICMgQ2hlY2tvdXQgdW5tb2RpZmllZCBmaWxlIHRvIHdvcmtpbmcgY29weSAtPiBkZXZ0b29sIHNob3VsZCBzdGlsbCBwaWNrCi0gICAgICAgICMgdGhlIG1vZGlmaWVkIHZlcnNpb24gZnJvbSBIRUFECi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNoZWNrb3V0IEhFQUReIC0tIG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBNJywgJy4qL2FjaW5jbHVkZS5tNCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIEQnLCAnLiovcnVuLXB0ZXN0JCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9uZXctbG9jYWwkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc18zKHNlbGYpOgotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQotICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1sb2NhbG9ubHknCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgTW9kaWZ5IG9uZSBmaWxlCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiQW5vdGhlciBsaW5lIiA+PiBmaWxlMicsIGN3ZD1vcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSwgJ29lLWxvY2FsLWZpbGVzJykpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzL2ZpbGUyJCcgJSB0ZXN0cmVjaXBlKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfcGF0Y2hfZ3ooc2VsZik6Ci0gICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LXBhdGNoLWd6JwotICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRoZSBESVNUUk8gJ3Bva3ktdGlueScgZG9lcyBub3QgcHJvdmlkZSB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCBieSAlcyIgJSB0ZXN0cmVjaXBlKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIE1vZGlmeSBvbmUgZmlsZQotICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUpCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiQW5vdGhlciBsaW5lIiA+PiBSRUFETUUnLCBjd2Q9c3JjdHJlZSkKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1hIC0tYW1lbmQgLS1uby1lZGl0JywgY3dkPXNyY3RyZWUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzL3JlYWRtZS5wYXRjaC5neiQnICUgdGVzdHJlY2lwZSldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotICAgICAgICBwYXRjaF9neiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsICdyZWFkbWUucGF0Y2guZ3onKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2ZpbGUgJXMnICUgcGF0Y2hfZ3opCi0gICAgICAgIGlmICdnemlwIGNvbXByZXNzZWQgZGF0YScgbm90IGluIHJlc3VsdC5vdXRwdXQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ05ldyBwYXRjaCBmaWxlIGlzIG5vdCBnemlwcGVkIC0gZmlsZSByZXBvcnRzOlxuJXMnICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc19zdWJkaXIoc2VsZik6Ci0gICAgICAgICMgVHJ5IGRldnRvb2wgZXh0cmFjdCBvbiBhIHJlY2lwZSB0aGF0IGhhcyBhIGZpbGUgd2l0aCBzdWJkaXI9IHNldCBpbgotICAgICAgICAjIFNSQ19VUkkgc3VjaCB0aGF0IGl0IG92ZXJ3cml0ZXMgYSBmaWxlIHRoYXQgd2FzIGluIGFuIGFyY2hpdmUgdGhhdAotICAgICAgICAjIHdhcyBhbHNvIGluIFNSQ19VUkkKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3Qtc3ViZGlyJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlLCAndGVzdGZpbGUnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGVzdGZpbGUpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICB3aXRoIG9wZW4odGVzdGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIGNvbnRlbnRzID0gZi5yZWFkKCkucnN0cmlwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50cywgJ01vZGlmaWVkIHZlcnNpb24nLCAnRmlsZSBoYXMgYXBwYXJlbnRseSBub3QgYmVlbiBvdmVyd3JpdHRlbiBhcyBpdCBzaG91bGQgaGF2ZSBiZWVuJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgdXBkYXRlLXJlY2lwZSB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gW10KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTE2MykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2V4dHJhY3Qoc2VsZik6Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgIyBUcnkgZGV2dG9vbCBleHRyYWN0Ci0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9tYWtlID0gInJlbWFrZSInKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCByZW1ha2UgJXMnICUgdGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgICMgZGV2dG9vbCBleHRyYWN0IHNob3VsZG4ndCBjcmVhdGUgdGhlIHdvcmtzcGFjZQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSkKLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLQotICAgIEB0ZXN0Y2FzZSgxMzc5KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZXh0cmFjdF92aXJ0dWFsKHNlbGYpOgotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgICMgVHJ5IGRldnRvb2wgZXh0cmFjdAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0IHZpcnR1YWwvbWFrZSAlcycgJSB0ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgIyBkZXZ0b29sIGV4dHJhY3Qgc2hvdWxkbid0IGNyZWF0ZSB0aGUgd29ya3NwYWNlCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpKQotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotCi0gICAgQHRlc3RjYXNlKDExNjgpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9yZXNldF9hbGwoc2VsZik6Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICB0ZXN0cmVjaXBlMSA9ICdtZGFkbScKLSAgICAgICAgdGVzdHJlY2lwZTIgPSAnY3JvbmllJwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IC14ICVzICVzJyAlICh0ZXN0cmVjaXBlMSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUxKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgLXggJXMgJXMnICUgKHRlc3RyZWNpcGUyLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZTIpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUxKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZTIpCi0gICAgICAgIHN0YW1wcHJlZml4MSA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGVzdHJlY2lwZTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeDEsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgJXMnICUgdGVzdHJlY2lwZTEpCi0gICAgICAgIHN0YW1wcHJlZml4MiA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGVzdHJlY2lwZTIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeDIsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgJXMnICUgdGVzdHJlY2lwZTIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZTEsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZTIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlc3RyZWNpcGUxLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlc3RyZWNpcGUyLCByZXN1bHQub3V0cHV0KQotICAgICAgICBtYXRjaGVzMSA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeDEgKyAnKicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlczEsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlICVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJyAlIHRlc3RyZWNpcGUxKQotICAgICAgICBtYXRjaGVzMiA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeDIgKyAnKicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlczIsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlICVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJyAlIHRlc3RyZWNpcGUyKQotCi0gICAgQHRlc3RjYXNlKDEyNzIpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9kZXBsb3lfdGFyZ2V0KHNlbGYpOgotICAgICAgICAjIE5PVEU6IFdoaWxzdCB0aGlzIHRlc3Qgd291bGQgc2VlbWluZ2x5IGJlIGJldHRlciBwbGFjZWQgYXMgYSBydW50aW1lIHRlc3QsCi0gICAgICAgICMgdW5mb3J0dW5hdGVseSB0aGUgcnVudGltZSB0ZXN0cyBydW4gdW5kZXIgYml0YmFrZSBhbmQgeW91IGNhbid0IHJ1bgotICAgICAgICAjIGRldnRvb2wgd2l0aGluIGJpdGJha2UgKHNpbmNlIGRldnRvb2wgbmVlZHMgdG8gcnVuIGJpdGJha2UgaXRzZWxmKS4KLSAgICAgICAgIyBBZGRpdGlvbmFsbHkgd2UgYXJlIHRlc3RpbmcgYnVpbGQtdGltZSBmdW5jdGlvbmFsaXR5IGFzIHdlbGwsIHNvCi0gICAgICAgICMgcmVhbGx5IHRoaXMgaGFzIHRvIGJlIGRvbmUgYXMgYW4gb2Utc2VsZnRlc3QgdGVzdC4KLSAgICAgICAgIwotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQotICAgICAgICBpZiBub3QgbWFjaGluZS5zdGFydHN3aXRoKCdxZW11Jyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGlzIHRlc3Qgb25seSB3b3JrcyB3aXRoIHFlbXUgbWFjaGluZXMnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9ldGMvcnVucWVtdS1ub3N1ZG8nKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1lvdSBtdXN0IHNldCB1cCB0YXAgZGV2aWNlcyB3aXRoIHNjcmlwdHMvcnVucWVtdS1nZW4tdGFwZGV2cyBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ1BBVEg9IiRQQVRIOi9zYmluOi91c3Ivc2JpbiIgaXAgdHVudGFwIHNob3cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGlmIHJlc3VsdC5zdGF0dXMgIT0gMDoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnUEFUSD0iJFBBVEg6L3NiaW46L3Vzci9zYmluIiBpZmNvbmZpZyAtYScsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXMgIT0gMDoKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdGYWlsZWQgdG8gZGV0ZXJtaW5lIGlmIHRhcCBkZXZpY2VzIGV4aXN0IHdpdGggaWZjb25maWcgb3IgaXA6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd0YXAnKToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gdGFwIGRldmljZXMgZm91bmQgLSB5b3UgbXVzdCBzZXQgdXAgdGFwIGRldmljZXMgd2l0aCBzY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnMgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgIyBEZWZpbml0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICB0ZXN0ZmlsZSA9ICcvc2Jpbi9tZGFkbScKLSAgICAgICAgdGVzdGltYWdlID0gJ29lLXNlbGZ0ZXN0LWltYWdlJwotICAgICAgICB0ZXN0Y29tbWFuZCA9ICcvc2Jpbi9tZGFkbSAtLWhlbHAnCi0gICAgICAgICMgQnVpbGQgYW4gaW1hZ2UgdG8gcnVuCi0gICAgICAgIGJpdGJha2UoIiVzIHFlbXUtbmF0aXZlIHFlbXUtaGVscGVyLW5hdGl2ZSIgJSB0ZXN0aW1hZ2UpCi0gICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0aW1hZ2UpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1mICVzLyVzKicgJSAoZGVwbG95X2Rpcl9pbWFnZSwgdGVzdGltYWdlKSkKLSAgICAgICAgIyBDbGVhbiByZWNpcGUgc28gdGhlIGZpcnN0IGRlcGxveSB3aWxsIGZhaWwKLSAgICAgICAgYml0YmFrZSgiJXMgLWMgY2xlYW4iICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUcnkgZGV2dG9vbCBtb2RpZnkKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgVGVzdCB0aGF0IGRlcGxveS10YXJnZXQgYXQgdGhpcyBwb2ludCBmYWlscyAocHJvcGVybHkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1uICVzIHJvb3RAbG9jYWxob3N0JyAlIHRlc3RyZWNpcGUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQub3V0cHV0LCAwLCAnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IHNob3VsZCBoYXZlIGZhaWxlZCwgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlc3VsdC5vdXRwdXQsICdUcmFjZWJhY2snLCAnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIGEgcHJvcGVyIGVycm9yIG5vdCBhIHRyYWNlYmFjaywgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBGaXJzdCB0cnkgYSBkcnktcnVuIG9mIGRlcGxveS10YXJnZXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLW4gJXMgcm9vdEBsb2NhbGhvc3QnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignICAlcycgJSB0ZXN0ZmlsZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBCb290IHRoZSBpbWFnZQotICAgICAgICB3aXRoIHJ1bnFlbXUodGVzdGltYWdlKSBhcyBxZW11OgotICAgICAgICAgICAgIyBOb3cgcmVhbGx5IHRlc3QgZGVwbG95LXRhcmdldAotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLWMgJXMgcm9vdEAlcycgJSAodGVzdHJlY2lwZSwgcWVtdS5pcCkpCi0gICAgICAgICAgICAjIFJ1biBhIHRlc3QgY29tbWFuZCB0byBzZWUgaWYgaXQgd2FzIGluc3RhbGxlZCBwcm9wZXJseQotICAgICAgICAgICAgc3NoYXJncyA9ICctbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubycKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc3NoICVzIHJvb3RAJXMgJXMnICUgKHNzaGFyZ3MsIHFlbXUuaXAsIHRlc3Rjb21tYW5kKSkKLSAgICAgICAgICAgICMgQ2hlY2sgaWYgaXQgZGVwbG95ZWQgYWxsIG9mIHRoZSBmaWxlcyB3aXRoIHRoZSByaWdodCBvd25lcnNoaXAvcGVybXMKLSAgICAgICAgICAgICMgRmlyc3QgbG9vayBvbiB0aGUgaG9zdCAtIG5lZWQgdG8gZG8gdGhpcyB1bmRlciBwc2V1ZG8gdG8gZ2V0IHRoZSBjb3JyZWN0IG93bmVyc2hpcC9wZXJtcwotICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdGQUtFUk9PVEVOVicsICdGQUtFUk9PVENNRCddLCB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgaW5zdGFsbGRpciA9IGJiX3ZhcnNbJ0QnXQotICAgICAgICAgICAgZmFrZXJvb3RlbnYgPSBiYl92YXJzWydGQUtFUk9PVEVOViddCi0gICAgICAgICAgICBmYWtlcm9vdGNtZCA9IGJiX3ZhcnNbJ0ZBS0VST09UQ01EJ10KLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnJXMgJXMgZmluZCAuIC10eXBlIGYgLWV4ZWMgbHMgLWwge30gXDsnICUgKGZha2Vyb290ZW52LCBmYWtlcm9vdGNtZCksIGN3ZD1pbnN0YWxsZGlyKQotICAgICAgICAgICAgZmlsZWxpc3QxID0gc2VsZi5fcHJvY2Vzc19sc19vdXRwdXQocmVzdWx0Lm91dHB1dCkKLQotICAgICAgICAgICAgIyBOb3cgbG9vayBvbiB0aGUgdGFyZ2V0Ci0gICAgICAgICAgICB0ZW1wZGlyMiA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyMikKLSAgICAgICAgICAgIHRtcGZpbGVsaXN0ID0gb3MucGF0aC5qb2luKHRlbXBkaXIyLCAnZmlsZXMudHh0JykKLSAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlbGlzdCwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVsaXN0MToKLSAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3BsaXRsaW5lWy0xXSArICdcbicpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2NhdCAlcyB8IHNzaCAtcSAlcyByb290QCVzIFwneGFyZ3MgbHMgLWxcJycgJSAodG1wZmlsZWxpc3QsIHNzaGFyZ3MsIHFlbXUuaXApKQotICAgICAgICAgICAgZmlsZWxpc3QyID0gc2VsZi5fcHJvY2Vzc19sc19vdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgICAgIGZpbGVsaXN0MS5zb3J0KGtleT1sYW1iZGEgaXRlbTogaXRlbS5zcGxpdCgpWy0xXSkKLSAgICAgICAgICAgIGZpbGVsaXN0Mi5zb3J0KGtleT1sYW1iZGEgaXRlbTogaXRlbS5zcGxpdCgpWy0xXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZWxpc3QxLCBmaWxlbGlzdDIpCi0gICAgICAgICAgICAjIFRlc3QgdW5kZXBsb3ktdGFyZ2V0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdW5kZXBsb3ktdGFyZ2V0IC1jICVzIHJvb3RAJXMnICUgKHRlc3RyZWNpcGUsIHFlbXUuaXApKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzc2ggJXMgcm9vdEAlcyAlcycgJSAoc3NoYXJncywgcWVtdS5pcCwgdGVzdGNvbW1hbmQpLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgMCwgJ3VuZGVwbG95LXRhcmdldCBkaWQgbm90IHJlbW92ZSBjb21tYW5kIGFzIGl0IHNob3VsZCBoYXZlJykKLQotICAgIEB0ZXN0Y2FzZSgxMzY2KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRfaW1hZ2Uoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZGV2dG9vbCBidWlsZC1pbWFnZSBwbHVnaW4iIiIKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSBpbWFnZSkKLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUgaW1hZ2UpCi0gICAgICAgICMgQWRkIHRhcmdldCBhbmQgbmF0aXZlIHJlY2lwZXMgdG8gd29ya3NwYWNlCi0gICAgICAgIHJlY2lwZXMgPSBbJ21kYWRtJywgJ3BhcnRlZC1uYXRpdmUnXQotICAgICAgICBmb3IgcmVjaXBlIGluIHJlY2lwZXM6Ci0gICAgICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHJlY2lwZSkKLSAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgVHJ5IHRvIGJ1aWxkIGltYWdlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZC1pbWFnZSAlcycgJSBpbWFnZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQsIDAsICdkZXZ0b29sIGJ1aWxkLWltYWdlIGZhaWxlZCcpCi0gICAgICAgICMgQ2hlY2sgaWYgaW1hZ2UgY29udGFpbnMgZXhwZWN0ZWQgcGFja2FnZXMKLSAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQotICAgICAgICBpbWFnZV9saW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZSkKLSAgICAgICAgcmVxcGtncyA9IFtpdGVtIGZvciBpdGVtIGluIHJlY2lwZXMgaWYgbm90IGl0ZW0uZW5kc3dpdGgoJy1uYXRpdmUnKV0KLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCBpbWFnZV9saW5rX25hbWUgKyAnLm1hbmlmZXN0JyksICdyJykgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgc3BsaXR2YWwgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgICAgICBpZiBzcGxpdHZhbDoKLSAgICAgICAgICAgICAgICAgICAgcGtnID0gc3BsaXR2YWxbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgcGtnIGluIHJlcXBrZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXFwa2dzLnJlbW92ZShwa2cpCi0gICAgICAgIGlmIHJlcXBrZ3M6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1RoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2VyZSBub3QgcHJlc2VudCBpbiB0aGUgaW1hZ2UgYXMgZXhwZWN0ZWQ6ICVzJyAlICcsICcuam9pbihyZXFwa2dzKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzY3KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBncmFkZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgQ2hlY2sgcGFyYW1ldGVycwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAtaCcpCi0gICAgICAgIGZvciBwYXJhbSBpbiAncmVjaXBlbmFtZSBzcmN0cmVlIC0tdmVyc2lvbiAtViAtLWJyYW5jaCAtYiAtLWtlZXAtdGVtcCAtLW5vLXBhdGNoJy5zcGxpdCgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXJhbSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBGb3IgdGhlIG1vbWVudCwgd2UgYXJlIHVzaW5nIGEgcmVhbCByZWNpcGUuCi0gICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDEnCi0gICAgICAgIHZlcnNpb24gPSAnMS42LjAnCi0gICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHVwZ3JhZGUuIENvZGUgZG9lcyBub3QgY2hlY2sgaWYgbmV3IFBWIGlzIG9sZGVyIG9yIG5ld2VyIHRoYXQgY3VycmVudCBQViwgc28sIGl0IG1heSBiZSB0aGF0Ci0gICAgICAgICMgd2UgYXJlIGRvd25ncmFkaW5nIGluc3RlYWQgb2YgdXBncmFkaW5nLgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtViAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCB2ZXJzaW9uKSkKLSAgICAgICAgIyBDaGVjayBpZiBzcmN0cmVlIGF0IGxlYXN0IGlzIHBvcHVsYXRlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG9zLmxpc3RkaXIodGVtcGRpcikpID4gMCwgJ3NyY3RyZWUgKCVzKSBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggbmV3ICglcykgc291cmNlIGNvZGUnICUgKHRlbXBkaXIsIHZlcnNpb24pKQotICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgc3ViZGlyZWN0b3J5IGlzIHByZXNlbnQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsICclcy0lcycgJSAocmVjaXBlLCB2ZXJzaW9uKSkpLCAnUmVjaXBlIGZvbGRlciBzaG91bGQgZXhpc3QnKQotICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgZmlsZSBpcyBwcmVzZW50Ci0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgdmVyc2lvbikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ1JlY2lwZSBmaWxlIHNob3VsZCBleGlzdCBhZnRlciB1cGdyYWRlJykKLSAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZSBnb3QgY2hhbmdlZCBhcyBleHBlY3RlZAotICAgICAgICB3aXRoIG9wZW4ob2xkcmVjaXBlZmlsZSArICcudXBncmFkZWQnLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBkZXNpcmVkbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgICAgIHdpdGggb3BlbihuZXdyZWNpcGVmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXNpcmVkbGluZXMsIG5ld2xpbmVzKQotICAgICAgICAjIENoZWNrIGRldnRvb2wgcmVzZXQgcmVjaXBlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcyAtbicgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgcmVzZXR0aW5nJykKLQotICAgIEB0ZXN0Y2FzZSgxNDMzKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBncmFkZV9naXQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QyJwotICAgICAgICBjb21taXQgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKLSAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgdXBncmFkZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtUyAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCBjb21taXQpKQotICAgICAgICAjIENoZWNrIGlmIHNyY3RyZWUgYXQgbGVhc3QgaXMgcG9wdWxhdGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ob3MubGlzdGRpcih0ZW1wZGlyKSkgPiAwLCAnc3JjdHJlZSAoJXMpIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBuZXcgKCVzKSBzb3VyY2UgY29kZScgJSAodGVtcGRpciwgY29tbWl0KSkKLSAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIGZpbGUgaXMgcHJlc2VudAotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnUmVjaXBlIGZpbGUgc2hvdWxkIGV4aXN0IGFmdGVyIHVwZ3JhZGUnKQotICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlIGdvdCBjaGFuZ2VkIGFzIGV4cGVjdGVkCi0gICAgICAgIHdpdGggb3BlbihvbGRyZWNpcGVmaWxlICsgJy51cGdyYWRlZCcsICdyJykgYXMgZjoKLSAgICAgICAgICAgIGRlc2lyZWRsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICAgICAgd2l0aCBvcGVuKG5ld3JlY2lwZWZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIG5ld2xpbmVzID0gZi5yZWFkbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc2lyZWRsaW5lcywgbmV3bGluZXMpCi0gICAgICAgICMgQ2hlY2sgZGV2dG9vbCByZXNldCByZWNpcGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzIC1uJyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciByZXNldHRpbmcnKQotCi0gICAgQHRlc3RjYXNlKDEzNTIpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9sYXllcl9wbHVnaW5zKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgZGV2dG9vbCBjYW4gdXNlIHBsdWdpbnMgZnJvbSBvdGhlciBsYXllcnMuCi0KLSAgICAgICAgVGhpcyB0ZXN0IGV4ZWN1dGVzIHRoZSBzZWxmdGVzdC1yZXZlcnNlIGNvbW1hbmQgZnJvbSBtZXRhLXNlbGZ0ZXN0LiIiIgotCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0KLSAgICAgICAgcyA9ICJNaWNyb3NvZnQgTWFkZSBObyBQcm9maXQgRnJvbSBBbnlvbmUncyBadW5lcyBZbyIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgc2VsZnRlc3QtcmV2ZXJzZSBcIiVzXCIiICUgcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBzWzo6LTFdKQotCi0gICAgZGVmIF9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNlbGYsIHNyY2ZpbGUsIGJhc2Vkc3RkaXIsICpwYXRocyk6Ci0gICAgICAgIGRzdGRpciA9IGJhc2Vkc3RkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRzdGRpcikpCi0gICAgICAgIGZvciBwIGluIHBhdGhzOgotICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGRzdGRpciwgcCkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKLSAgICAgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGRpcikKLSAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCi0gICAgICAgIGlmIHNyY2ZpbGUgIT0gZHN0ZmlsZToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KHNyY2ZpbGUsIGRzdGZpbGUpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGZpbGUpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2xvYWRfcGx1Z2luKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgZGV2dG9vbCBsb2FkcyBvbmx5IHRoZSBmaXJzdCBmb3VuZCBwbHVnaW4gaW4gQkJQQVRILiIiIgotCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0KLSAgICAgICAgZGV2dG9vbCA9IHJ1bkNtZCgid2hpY2ggZGV2dG9vbCIpCi0gICAgICAgIGZyb21uYW1lID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgcGx1Z2luZmlsZSIpCi0gICAgICAgIHNyY2ZpbGUgPSBmcm9tbmFtZS5vdXRwdXQKLSAgICAgICAgYmJwYXRoID0gZ2V0X2JiX3ZhcignQkJQQVRIJykKLSAgICAgICAgc2VhcmNocGF0aCA9IGJicGF0aC5zcGxpdCgnOicpICsgW29zLnBhdGguZGlybmFtZShkZXZ0b29sLm91dHB1dCldCi0gICAgICAgIHBsdWdpbmNvbnRlbnQgPSBbXQotICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSkgYXMgZmg6Ci0gICAgICAgICAgICBwbHVnaW5jb250ZW50ID0gZmgucmVhZGxpbmVzKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1zZWxmdGVzdCcsIHNyY2ZpbGUsICd3cm9uZyBiYnBhdGggcGx1Z2luIGZvdW5kJykKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhfY2xlYW51cChzcmNmaWxlLCBwYXRoLCAnbGliJywgJ2RldnRvb2wnKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgY291bnQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnMScpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBtdWx0aWxvYWRlZCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICJubyIpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IGJiZGlyIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHBhdGgpCi0gICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihyZXN1bHQub3V0cHV0LCAnbGliJywgJ2RldnRvb2wnLCAnYmJwYXRoLnB5JykpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3cnKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmaC53cml0ZWxpbmVzKHBsdWdpbmNvbnRlbnQpCi0KLSAgICBkZWYgX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgVXNlIGEgInJlYWwiIHJlY2lwZSBmcm9tIG1ldGEtc2VsZnRlc3QKLSAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MScKLSAgICAgICAgb2xkdmVyc2lvbiA9ICcxLjUuMycKLSAgICAgICAgbmV3dmVyc2lvbiA9ICcxLjYuMCcKLSAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCi0gICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCi0gICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSByZWNpcGUpCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgRG8gdGhlIHVwZ3JhZGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgbmV3dmVyc2lvbikpCi0gICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRvIHRoZSBzb3VyY2UKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzZWQgLWkgXCcvXiNpbmNsdWRlICJwdi5oIi9hIFxcLyogSGVyZSBpcyBhIG5ldyBjb21tZW50ICpcXC9cJyBzcmMvcHYvbnVtYmVyLmMnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ00gc3JjL3B2L251bWJlci5jJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IHNyYy9wdi9udW1iZXIuYyAtbSAiQWRkIGEgY29tbWVudCB0byB0aGUgY29kZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgIyBDaGVjayBpZiBwYXRjaCBpcyB0aGVyZQotICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKLSAgICAgICAgb2xkZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgb2xkdmVyc2lvbikKLSAgICAgICAgcGF0Y2hmbiA9ICcwMDAxLUFkZC1hLW5vdGUtbGluZS10by10aGUtcXVpY2stcmVmZXJlbmNlLnBhdGNoJwotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbikpLCAnT3JpZ2luYWwgcGF0Y2ggZmlsZSBkb2VzIG5vdCBleGlzdCcpCi0gICAgICAgIHJldHVybiByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlX29yaWdsYXllcihzZWxmKToKLSAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbiA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZSgpCi0gICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLXNlbGZ0ZXN0LycsIHJlY2lwZWRpcikKLSAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhLXNlbGZ0ZXN0JyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvbGRyZWNpcGVmaWxlKSwgJ09sZCByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pKSwgJ09sZCBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBidXQgd2FzblwndCcpCi0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgbmV3dmVyc2lvbikpCi0gICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG5ld3ZlcnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ05ldyByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGV4aXN0aW5nIGxheWVyIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsIHBhdGNoZm4pKSwgJ1BhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBuZXcgZGlyZWN0b3J5IGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsICcwMDAyLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKSksICdOZXcgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZV9vdGhlcmxheWVyKHNlbGYpOgotICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKCkKLSAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEtc2VsZnRlc3QvJywgcmVjaXBlZGlyKQotICAgICAgICAjIFRyeSBmaW5pc2ggdG8gYSBkaWZmZXJlbnQgbGF5ZXIgLSBzaG91bGQgY3JlYXRlIGEgYmJhcHBlbmQKLSAgICAgICAgIyBUaGlzIGNsZWFudXAgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBkbyBpdCBhbnl3YXkganVzdCBpbiBjYXNlIGl0IGdvZXMgd3JvbmcgYW5kIHdyaXRlcyB0byBoZXJlCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQotICAgICAgICBvZV9jb3JlX2RpciA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YScpCi0gICAgICAgIG5ld3JlY2lwZWRpciA9IG9zLnBhdGguam9pbihvZV9jb3JlX2RpciwgJ3JlY2lwZXMtdGVzdCcsICdkZXZ0b29sJykKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihuZXdyZWNpcGVkaXIsICclc18lcy5iYicgJSAocmVjaXBlLCBuZXd2ZXJzaW9uKSkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChuZXdyZWNpcGVkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgb2UtY29yZScgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvbGRyZWNpcGVmaWxlKSwgJ09sZCByZWNpcGUgZmlsZSBzaG91bGQgbm90IGhhdmUgYmVlbiBkZWxldGVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pKSwgJ09sZCBwYXRjaCBmaWxlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGRlbGV0ZWQnKQotICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4obmV3cmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBuZXd2ZXJzaW9uKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdOZXcgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBleGlzdGluZyBsYXllciBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCBwYXRjaGZuKSksICdQYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gbmV3IGRpcmVjdG9yeSBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCAnMDAwMi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJykpLCAnTmV3IHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JykKLQotICAgIGRlZiBfc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgcmVjaXBlID0gJ21kYWRtJwotICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKLSAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB1bmNvbW1pdHRlZCBjaGFuZ2VzJyAlIHJlY2lwZSkKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgJXMnICUgKHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgTWFrZSBhIGNoYW5nZSB0byB0aGUgc291cmNlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc2VkIC1pIFwnL14jaW5jbHVkZSAibWRhZG0uaCIvYSBcXC8qIEhlcmUgaXMgYSBuZXcgY29tbWVudCAqXFwvXCcgbWFwcy5jJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydEluKCdNIG1hcHMuYycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCBtYXBzLmMgLW0gIkFkZCBhIGNvbW1lbnQgdG8gdGhlIGNvZGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKHJlY2lwZWRpcik6Ci0gICAgICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIGVudHJ5KQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlc2Rpcik6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIGZpbGVzIGRpcmVjdG9yeSBmb3IgJXMnICUgcmVjaXBlKQotICAgICAgICByZXR1cm4gcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnlfb3JpZ2xheWVyKHNlbGYpOgotICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIgPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeSgpCi0gICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLycsIHJlY2lwZWRpcikKLSAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhJyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8uKi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJCcpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhyZWNpcGVkaXIsIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeV9vdGhlcmxheWVyKHNlbGYpOgotICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIgPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeSgpCi0gICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLycsIHJlY2lwZWRpcikKLSAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKHJlY2lwZWRpciwgb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhJykpCi0gICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbihnZXRfdGVzdF9sYXllcigpLCByZWxwdGgpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYXBwZW5kZGlyKQotICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEtc2VsZnRlc3QnICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCi0gICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1bmV4cGVjdGVkIGNoYW5nZXMgYWZ0ZXIgZmluaXNoOlxuJXMnICUgKHJlY2lwZSwgcmVzdWx0Lm91dHB1dC5zdHJpcCgpKSkKLSAgICAgICAgcmVjaXBlZm4gPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpWzBdCi0gICAgICAgIHJlY2lwZWZuID0gcmVjaXBlZm4uc3BsaXQoJ18nKVswXSArICdfJScKLSAgICAgICAgYXBwZW5kZmlsZSA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHJlY2lwZWZuICsgJy5iYmFwcGVuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhhcHBlbmRmaWxlKSwgJ2JiYXBwZW5kICVzIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcgJSBhcHBlbmRmaWxlKQotICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCByZWNpcGUpCi0gICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihuZXdkaXIpCi0gICAgICAgIGZvdW5kcGF0Y2ggPSBOb25lCi0gICAgICAgIGZvciBmbiBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChmbiwgJyotQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpOgotICAgICAgICAgICAgICAgIGZvdW5kcGF0Y2ggPSBmbgotICAgICAgICBpZiBub3QgZm91bmRwYXRjaDoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gcGF0Y2ggZmlsZSBjcmVhdGVkIG5leHQgdG8gYmJhcHBlbmQnKQotICAgICAgICBmaWxlcy5yZW1vdmUoZm91bmRwYXRjaCkKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZmlsZShzKSBjb3BpZWQgbmV4dCB0byBiYmFwcGVuZDogJXMnICUgJywgJy5qb2luKGZpbGVzKSkKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfcmVuYW1lKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLQotICAgICAgICAjIEZpcnN0IHJ1biBkZXZ0b29sIGFkZAotICAgICAgICAjIFdlIGFscmVhZHkgaGF2ZSB0aGlzIHJlY2lwZSBpbiBPRS1Db3JlLCBidXQgdGhhdCBkb2Vzbid0IG1hdHRlcgotICAgICAgICByZWNpcGVuYW1lID0gJ2kyYy10b29scycKLSAgICAgICAgcmVjaXBldmVyID0gJzMuMS4yJwotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUsICclc18lcy5iYicgJSAocmVjaXBlbmFtZSwgcmVjaXBldmVyKSkKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9pMmMtdG9vbHMtJXMudGFyLmJ6MicgJSByZWNpcGV2ZXIKLSAgICAgICAgZGVmIGFkZF9yZWNpcGUoKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgdXJsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlY2lwZWZpbGUpLCAnRXhwZWN0ZWQgcmVjaXBlIGZpbGUgbm90IGNyZWF0ZWQnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCByZWNpcGVuYW1lKSksICdTb3VyY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKLSAgICAgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UocmVjaXBldmVyLCAnJHtQVn0nKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLSAgICAgICAgYWRkX3JlY2lwZSgpCi0gICAgICAgICMgTm93IHJlbmFtZSBpdCAtIGNoYW5nZSBib3RoIG5hbWUgYW5kIHZlcnNpb24KLSAgICAgICAgbmV3cmVjaXBlbmFtZSA9ICdteW5ld3JlY2lwZScKLSAgICAgICAgbmV3cmVjaXBldmVyID0gJzQ1NicKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBuZXdyZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKG5ld3JlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSkpLCAnT2xkIHJlY2lwZSBkaXJlY3Rvcnkgc3RpbGwgZXhpc3RzJykKLSAgICAgICAgbmV3c3JjdHJlZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCBuZXdyZWNpcGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3c3JjdHJlZSksICdTb3VyY2UgZGlyZWN0b3J5IG5vdCByZW5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8lcy0lcycgJSAocmVjaXBlbmFtZSwgcmVjaXBldmVyKQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotICAgICAgICAjIFRyeSBhZ2FpbiAtIGNoYW5nZSBqdXN0IG5hbWUgdGhpcyB0aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSBuZXdyZWNpcGVuYW1lKQotICAgICAgICBzaHV0aWwucm10cmVlKG5ld3NyY3RyZWUpCi0gICAgICAgIGFkZF9yZWNpcGUoKQotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIG5ld3JlY2lwZW5hbWUsICclc18lcy5iYicgJSAobmV3cmVjaXBlbmFtZSwgcmVjaXBldmVyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBlbmFtZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSkpLCAnT2xkIHJlY2lwZSBkaXJlY3Rvcnkgc3RpbGwgZXhpc3RzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCBuZXdyZWNpcGVuYW1lKSksICdTb3VyY2UgZGlyZWN0b3J5IG5vdCByZW5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8lcy0ke1BWfScgJSByZWNpcGVuYW1lCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UocmVjaXBldmVyLCAnJHtQVn0nKQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotICAgICAgICAjIFRyeSBhZ2FpbiAtIGNoYW5nZSBqdXN0IHZlcnNpb24gdGhpcyB0aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSBuZXdyZWNpcGVuYW1lKQotICAgICAgICBzaHV0aWwucm10cmVlKG5ld3NyY3RyZWUpCi0gICAgICAgIGFkZF9yZWNpcGUoKQotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUsICclc18lcy5iYicgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAtViAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHJlY2lwZW5hbWUpKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm8gbG9uZ2VyIGV4aXN0cycpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJHtCUE59LSVzJyAlIHJlY2lwZXZlcgotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDE1NzcpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF92aXJ0dWFsX2tlcm5lbF9tb2RpZnkoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2wgbW9kaWZ5IHdvcmtzIGNvcnJlY3RseSB3aGVuIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsLgotICAgICAgICBEZXBlbmRlbmNpZXM6ICAgTkEKLSAgICAgICAgU3RlcHM6ICAgICAgICAgIDEuIEJ1aWxkIGtlcm5lbCB3aXRoIGJpdGJha2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAyLiBTYXZlIHRoZSBjb25maWcgZmlsZSBnZW5lcmF0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAzLiBDbGVhbiB0aGUgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICA0LiBVc2UgYGRldnRvb2wgbW9kaWZ5IHZpcnR1YWwva2VybmVsYCB0byB2YWxpZGF0ZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEgVGhlIHNvdXJjZSBpcyBjaGVja2VkIG91dCBjb3JyZWN0bHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIgVGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uIGlzIHRoZSBzYW1lIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hhdCB3YXMgZ2V0IG9uIHN0ZXAgMi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMyBUaGUgS2VybmVsIGNhbiBiZSBidWlsZCBjb3JyZWN0bHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQgQ2hhbmdlcyBtYWRlIG9uIHRoZSBzb3VyY2UgYXJlIHJlZmxlY3RlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGJ1aWxkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNSBDaGFuZ2VzIG9uIHRoZSBjb25maWd1cmF0aW9uIGFyZSByZWZsZWN0ZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBidWlsZHMKLSAgICAgICAgIEV4cGVjdGVkOiAgICAgICBkZXZ0b29sIG1vZGlmeSBpcyBhYmxlIHRvIGNoZWNrb3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtb2RpZmljYXRpb24gdG8gdGhlIHNvdXJjZSBhbmQgY29uZmlndXJhdGlvbnMgYXJlIHJlZmxlY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbC4KLSAgICAgICAgICIiIgotICAgICAgICAjU2V0IG1hY2hpbmUgdG8gcWVteHU4NiB0byBiZSBhYmxlIHRvIG1vZGlmeSB0aGUga2VybmVsIGFuZAotICAgICAgICAjdmVyaWZ5IHRoZSBtb2RpZmljYXRpb24uCi0gICAgICAgIGZlYXR1cmVzID0gJ01BQ0hJTkUgPSAicWVtdXg4NiJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0gICAgICAgIGtlcm5lbF9wcm92aWRlciA9IGdldF9iYl92YXIoJ1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCcpCi0gICAgICAgICMgQ2xlYW4gdXAgdGhlIGVudmlyb21lbnQKLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgICNTdGVwIDEKLSAgICAgICAgI0hlcmUgaXMganVzdCBnZW5lcmF0ZWQgdGhlIGNvbmZpZyBmaWxlIGluc3RlYWQgb2YgYWxsIHRoZSBrZXJuZWwgdG8gb3B0aW1pemUgdGhlCi0gICAgICAgICN0aW1lIG9mIGV4ZWN1dGluZyB0aGlzIHRlc3QgY2FzZS4KLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY29uZmlndXJlJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgYmJjb25maWcgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQicsIGtlcm5lbF9wcm92aWRlciksJy5jb25maWcnKQotICAgICAgICBidWlsZGlyPSBnZXRfYmJfdmFyKCdUT1BESVInKQotICAgICAgICAjU3RlcCAyCi0gICAgICAgIHJ1bkNtZCgnY3AgJXMgJXMnICUgKGJiY29uZmlnLCBidWlsZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWlsZGlyLCAnLmNvbmZpZycpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgY29weSAuY29uZmlnIGZpbGUgZnJvbSBrZXJuZWwnKQotCi0gICAgICAgIHRtcGNvbmZpZyA9IG9zLnBhdGguam9pbihidWlsZGlyLCAnLmNvbmZpZycpCi0gICAgICAgICNTdGVwIDMKLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICAjU3RlcCA0LjEKLSAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSB2aXJ0dWFsL2tlcm5lbCAteCAlcycgJSB0ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgICNTdGVwIDQuMgotICAgICAgICBjb25maWdmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJy5jb25maWcnKQotICAgICAgICBkaWZmID0gcnVuQ21kKCdkaWZmICVzICVzJyAlICh0bXBjb25maWcsIGNvbmZpZ2ZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsZGlmZi5zdGF0dXMsJ0tlcm5lbCAuY29uZmlnIGZpbGUgaXMgbm90IHRoZSBzYW1lIHVzaW5nIGJpdGJha2UgYW5kIGRldnRvb2wnKQotICAgICAgICAjU3RlcCA0LjMKLSAgICAgICAgI05PVEU6IHZpcnR1YWwva2VybmVsIGlzIG1hcHBlZCB0byBrZXJuZWxfcHJvdmlkZXIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLHJlc3VsdC5zdGF0dXMsJ0Nhbm5vdCBidWlsZCBrZXJuZWwgdXNpbmcgYGRldnRvb2wgYnVpbGRgJykKLSAgICAgICAga2VybmVsZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdLQlVJTERfT1VUUFVUJywga2VybmVsX3Byb3ZpZGVyKSwgJ3ZtbGludXgnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoa2VybmVsZmlsZSksJ0tlcm5lbCB3YXMgbm90IGJ1aWxkIGNvcnJlY3RseScpCi0KLSAgICAgICAgI01vZGlmeSB0aGUga2VybmVsIHNvdXJjZSwgdGhpcyBpcyBzcGVjaWZpYyBmb3IgcWVtdXg4NgotICAgICAgICBtb2RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJ2FyY2gveDg2L2Jvb3QvaGVhZGVyLlMnKQotICAgICAgICBtb2RzdHJpbmcgPSAidXNlIGEgYm9vdCBsb2FkZXIgLSBEZXZ0b29sIGtlcm5lbCB0ZXN0aW5nIgotICAgICAgICBtb2RhcHBsaWVkID0gcnVuQ21kKCJzZWQgLWkgJ3MvYm9vdCBsb2FkZXIvJXMvJyAlcyIgJSAobW9kc3RyaW5nLCBtb2RmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLG1vZGFwcGxpZWQuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gJXMgb24ga2VybmVsIHNvdXJjZSBmYWlsZWQnICUgbW9kZmlsZSkKLSAgICAgICAgI01vZGlmeSB0aGUgY29uZmlndXJhdGlvbgotICAgICAgICBjb2RlY29uZmlnZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCcuY29uZmlnLm5ldycpCi0gICAgICAgIG1vZGNvbmZvcHQgPSAiQ09ORklHX1NHX1BPT0w9biIKLSAgICAgICAgbW9kY29uZiA9IHJ1bkNtZCgic2VkIC1pICdzL0NPTkZJR19TR19QT09MPXkvJXMvJyAlcyIgJSAobW9kY29uZm9wdCwgY29kZWNvbmZpZ2ZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsbW9kY29uZi5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byAlcyBmYWlsZWQnICUgY29kZWNvbmZpZ2ZpbGUpCi0gICAgICAgICNCdWlsZCBhZ2FpbiBrZXJuZWwgd2l0aCBkZXZ0b29sCi0gICAgICAgIHJlYnVpbGQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAscmVidWlsZC5zdGF0dXMsJ0ZhaWwgdG8gYnVpbGQga2VybmVsIGFmdGVyIG1vZGlmaWNhdGlvbiBvZiBzb3VyY2UgYW5kIGNvbmZpZycpCi0gICAgICAgICNTdGVwIDQuNAotICAgICAgICBiemltYWdlbmFtZSA9ICdiekltYWdlLScgKyBnZXRfYmJfdmFyKCdLRVJORUxfVkVSU0lPTl9OQU1FJywga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICBiemltYWdlZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdEJywga2VybmVsX3Byb3ZpZGVyKSwnYm9vdCcsIGJ6aW1hZ2VuYW1lKQotICAgICAgICBjaGVja21vZGNvZGUgPSBydW5DbWQoImdyZXAgJyVzJyAlcyIgJSAobW9kc3RyaW5nLCBiemltYWdlZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxjaGVja21vZGNvZGUuc3RhdHVzLCdNb2RpZmljYXRpb24gb24ga2VybmVsIHNvdXJjZSBmYWlsZWQnKQotICAgICAgICAjU3RlcCA0LjUKLSAgICAgICAgY2hlY2ttb2Rjb25mZyA9IHJ1bkNtZCgiZ3JlcCAlcyAlcyIgJSAobW9kY29uZm9wdCwgY29kZWNvbmZpZ2ZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsY2hlY2ttb2Rjb25mZy5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byBjb25maWd1cmF0aW9uIGZpbGUgZmFpbGVkJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2VTREsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9lU0RLLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTk2YzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2VTREsucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBvcwotaW1wb3J0IGdsb2IKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCi0KLWNsYXNzIG9lU0RLRXh0U2VsZlRlc3Qob2VTZWxmVGVzdCk6Ci0gICAgIiIiCi0gICAgIyBCdWd6aWxsYSBUZXN0IFBsYW46IDYwMzMKLSAgICAjIFRoaXMgY29kZSBpcyBwbGFubmVkIHRvIGJlIHBhcnQgb2YgdGhlIGF1dG9tYXRpb24gZm9yIGVTREsgY29udGFpbmlnCi0gICAgIyBJbnN0YWxsIGxpYnJhcmllcyBhbmQgaGVhZGVycywgaW1hZ2UgZ2VuZXJhdGlvbiBiaW5hcnkgZmVlZHMsIHNkay11cGRhdGUuCi0gICAgIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdldF9lc2RrX2Vudmlyb25tZW50KGVudl9lU0RLLCB0bXBkaXJfZVNES1FBKToKLSAgICAgICAgIyBYWFg6IGF0IHRoaXMgdGltZSB1c2UgdGhlIGZpcnN0IGVudiBuZWVkIHRvIGludmVzdGlnYXRlCi0gICAgICAgICMgd2hhdCBlbnZpcm9ubWVudCBsb2FkIG9lLXNlbGZ0ZXN0LCBpNTg2LCB4ODZfNjQKLSAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbih0bXBkaXJfZVNES1FBLCAnZW52aXJvbm1lbnQtc2V0dXAtKicpCi0gICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0dGVybilbMF0KLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcnVuX2VzZGtfY21kKGVudl9lU0RLLCB0bXBkaXJfZVNES1FBLCBjbWQsIHBvc3Rjb25maWc9Tm9uZSwgKipvcHRpb25zKToKLSAgICAgICAgaWYgcG9zdGNvbmZpZzoKLSAgICAgICAgICAgIGVzZGtfY29uZl9maWxlID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKQotICAgICAgICAgICAgd2l0aCBvcGVuKGVzZGtfY29uZl9maWxlLCAnYSsnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUocG9zdGNvbmZpZykKLSAgICAgICAgaWYgbm90IG9wdGlvbnM6Ci0gICAgICAgICAgICBvcHRpb25zID0ge30KLSAgICAgICAgaWYgbm90ICdzaGVsbCcgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIG9wdGlvbnNbJ3NoZWxsJ10gPSBUcnVlCi0KLSAgICAgICAgcnVuQ21kKCJjZCAlczsgLiAlczsgJXMiICUgKHRtcGRpcl9lU0RLUUEsIGVudl9lU0RLLCBjbWQpLCAqKm9wdGlvbnMpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdlbmVyYXRlX2VTREsoaW1hZ2UpOgotICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKLSAgICAgICAgYml0YmFrZShwbl90YXNrKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZXRfZVNES190b29sY2hhaW4oaW1hZ2UpOgotICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTREtfREVQTE9ZJywgJ1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FJ10sIHBuX3Rhc2spCi0gICAgICAgIHNka19kZXBsb3kgPSBiYl92YXJzWydTREtfREVQTE9ZJ10KLSAgICAgICAgdG9vbGNoYWluX25hbWUgPSBiYl92YXJzWydUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSddCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2RrX2RlcGxveSwgdG9vbGNoYWluX25hbWUgKyAnLnNoJykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdXBkYXRlX2NvbmZpZ3VyYXRpb24oY2xzLCBpbWFnZSwgdG1wZGlyX2VTREtRQSwgZW52X2VTREssIGV4dF9zZGtfcGF0aCk6Ci0gICAgICAgIHNzdGF0ZV9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQlVJTERESVInXSwgJ3NzdGF0ZS1jYWNoZScpCi0KLSAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5nZW5lcmF0ZV9lU0RLKGNscy5pbWFnZSkKLQotICAgICAgICBjbHMuZXh0X3Nka19wYXRoID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZVNES190b29sY2hhaW4oY2xzLmltYWdlKQotICAgICAgICBydW5DbWQoIiVzIC15IC1kIFwiJXNcIiIgJSAoY2xzLmV4dF9zZGtfcGF0aCwgY2xzLnRtcGRpcl9lU0RLUUEpKQotCi0gICAgICAgIGNscy5lbnZfZVNESyA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VzZGtfZW52aXJvbm1lbnQoJycsIGNscy50bXBkaXJfZVNES1FBKQotCi0gICAgICAgIHNzdGF0ZV9jb25maWc9IiIiCi1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QgPSAiU1NUQVRFX01JUlJPUlMiCi1TU1RBVEVfTUlSUk9SUyA9ICAiZmlsZTovLy4qIGZpbGU6Ly8lcy9QQVRIIgotQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBlcmwiCi0gICAgICAgICIiIiAlIHNzdGF0ZV9kaXIKLQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNscy50bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJyksICdhKycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHNzdGF0ZV9jb25maWcpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMudG1wZGlyX2VTREtRQSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdlU0RLUUEnKQotCi0gICAgICAgIHNzdGF0ZV9kaXIgPSBnZXRfYmJfdmFyKCdTU1RBVEVfRElSJykKLQotICAgICAgICBjbHMuaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBvZVNES0V4dFNlbGZUZXN0LmdlbmVyYXRlX2VTREsoY2xzLmltYWdlKQotCi0gICAgICAgICMgSW5zdGFsbCBlU0RLCi0gICAgICAgIGNscy5leHRfc2RrX3BhdGggPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lU0RLX3Rvb2xjaGFpbihjbHMuaW1hZ2UpCi0gICAgICAgIHJ1bkNtZCgiJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuZXh0X3Nka19wYXRoLCBjbHMudG1wZGlyX2VTREtRQSkpCi0KLSAgICAgICAgY2xzLmVudl9lU0RLID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZXNka19lbnZpcm9ubWVudCgnJywgY2xzLnRtcGRpcl9lU0RLUUEpCi0KLSAgICAgICAgIyBDb25maWd1cmUgZVNESyB0byB1c2Ugc3N0YXRlIG1pcnJvciBmcm9tIHBva3kKLSAgICAgICAgc3N0YXRlX2NvbmZpZz0iIiIKLVNES19MT0NBTF9DT05GX1dISVRFTElTVCA9ICJTU1RBVEVfTUlSUk9SUyIKLVNTVEFURV9NSVJST1JTID0gICJmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiCi0gICAgICAgICAgICAiIiIgJSBzc3RhdGVfZGlyCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKSwgJ2ErJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoc3N0YXRlX2NvbmZpZykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoY2xzLnRtcGRpcl9lU0RLUUEpCi0KLSAgICBAdGVzdGNhc2UgKDE2MDIpCi0gICAgZGVmIHRlc3RfaW5zdGFsbF9saWJyYXJpZXNfaGVhZGVycyhzZWxmKToKLSAgICAgICAgcG5fc3N0YXRlID0gJ2JjJwotICAgICAgICBiaXRiYWtlKHBuX3NzdGF0ZSkKLSAgICAgICAgY21kID0gImRldnRvb2wgc2RrLWluc3RhbGwgJXMgIiAlIHBuX3NzdGF0ZQotICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgxNjAzKQotICAgIGRlZiB0ZXN0X2ltYWdlX2dlbmVyYXRpb25fYmluYXJ5X2ZlZWRzKHNlbGYpOgotICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIGNtZCA9ICJkZXZ0b29sIGJ1aWxkLWltYWdlICVzIiAlIGltYWdlCi0gICAgICAgIG9lU0RLRXh0U2VsZlRlc3QucnVuX2VzZGtfY21kKHNlbGYuZW52X2VTREssIHNlbGYudG1wZGlyX2VTREtRQSwgY21kKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VfdHlwZWRlcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlX3R5cGVkZXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NjE0MmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VfdHlwZWRlcC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWltcG9ydCBvcwotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlCi0KLWNsYXNzIEltYWdlVHlwZURlcFRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgIyBWZXJpZnkgdGhhdCB3aGVuIHNwZWNpZnlpbmcgYSBJTUFHRV9UWVBFREVQXyBvZiB0aGUgZm9ybSAiZm9vLmJhciIgdGhhdAotICAgICMgdGhlIGNvbnZlcnNpb24gdHlwZSBiYXIgZ2V0cyBhZGRlZCBhcyBhIGRlcCBhcyB3ZWxsCi0gICAgZGVmIHRlc3RfY29udmVyc2lvbl90eXBlZGVwX2FkZGVkKHNlbGYpOgotCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdlbXB0eXRlc3QnLCAiIiIKLSMgVHJ5IHRvIGVtcHR5IG91dCB0aGUgZGVmYXVsdCBkZXBlbmRlbmN5IGxpc3QKLVBBQ0tBR0VfSU5TVEFMTCA9ICIiCi1ESVNUUk9fRVhUUkFfUkRFUEVORFM9IiIKLQotTElDRU5TRSA9ICJNSVQiCi1JTUFHRV9GU1RZUEVTID0gInRlc3Rmc3R5cGUiCi0KLUlNQUdFX1RZUEVTX01BU0tFRCArPSAidGVzdGZzdHlwZSIKLUlNQUdFX1RZUEVERVBfdGVzdGZzdHlwZSA9ICJ0YXIuYnoyIgotCi1pbmhlcml0IGltYWdlCi0KLSIiIikKLSAgICAgICAgIyBGaXJzdCBnZXQgdGhlIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgZXhpc3QgZm9yIGJ6MiwgaXQgd2lsbCBsb29rCi0gICAgICAgICMgbGlrZSBDT05WRVJTSU9OX0RFUEVORFNfYnoyPSJzb21lZGVwIgotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZSBlbXB0eXRlc3QnKQotCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NPTlZFUlNJT05fREVQRU5EU19iejInKToKLSAgICAgICAgICAgICAgICBkZXAgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoJyInKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBOb3cgZ2V0IHRoZSBkZXBlbmRlbmN5IHRhc2sgbGlzdCBhbmQgY2hlY2sgZm9yIHRoZSBleHBlY3RlZCB0YXNrCi0gICAgICAgICMgZGVwZW5kZW5jeQotICAgICAgICBiaXRiYWtlKCctZyBlbXB0eXRlc3QnKQotCi0gICAgICAgIHRhc2tkZXBlbmRzZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGFzay1kZXBlbmRzLmRvdCcpCi0gICAgICAgIGRlcCA9ICBkZXAgKyAiLmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0gICAgICAgIGRlcGZvdW5kID0gRmFsc2UKLSAgICAgICAgZXhwZWN0ZWRsaW5lID0gJyJlbXB0eXRlc3QuZG9fcm9vdGZzIiAtPiAie30iJy5mb3JtYXQoZGVwKQotCi0gICAgICAgIHdpdGggb3Blbih0YXNrZGVwZW5kc2ZpbGUsICJyIikgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpID09IGV4cGVjdGVkbGluZToKLSAgICAgICAgICAgICAgICAgICAgZGVwZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgbm90IGRlcGZvdW5kOgotICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlwie31cIiBub3QgZm91bmQiLmZvcm1hdChleHBlY3RlZGxpbmUpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VmZWF0dXJlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlZmVhdHVyZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ODk2YzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VmZWF0dXJlcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIHJ1bnFlbXUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotZnJvbSBvZXFhLnV0aWxzLnNzaGNvbnRyb2wgaW1wb3J0IFNTSENvbnRyb2wKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKLQotY2xhc3MgSW1hZ2VGZWF0dXJlcyhvZVNlbGZUZXN0KToKLQotICAgIHRlc3RfdXNlciA9ICd0ZXN0ZXInCi0gICAgcm9vdF91c2VyID0gJ3Jvb3QnCi0KLSAgICBAdGVzdGNhc2UoMTEwNykKLSAgICBkZWYgdGVzdF9ub25fcm9vdF91c2VyX2Nhbl9jb25uZWN0X3ZpYV9zc2hfd2l0aG91dF9wYXNzd29yZChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIGlmIG5vbiByb290IHVzZXIgY2FuIGNvbm5lY3QgdmlhIHNzaCB3aXRob3V0IHBhc3N3b3JkCi0gICAgICAgIEV4cGVjdGVkOiAxLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHJvb3QgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgotICAgICAgICAgICAgICAgICAgMi4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyB0ZXN0ZXIgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgotICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCJjb3JlLWltYWdlLW1pbmltYWwiKSBhcyBxZW11OgotICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHNzaCB3aXRoIGVhY2ggdXNlciBpbnRvIHFlbXUgd2l0aCBlbXB0eSBwYXNzd29yZAotICAgICAgICAgICAgZm9yIHVzZXIgaW4gW3NlbGYucm9vdF91c2VyLCBzZWxmLnRlc3RfdXNlcl06Ci0gICAgICAgICAgICAgICAgc3NoID0gU1NIQ29udHJvbChpcD1xZW11LmlwLCBsb2dmaWxlPXFlbXUuc3NobG9nLCB1c2VyPXVzZXIpCi0gICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzc2gucnVuKCJ0cnVlIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyICVzIGZhaWxlZCB3aXRoICVzJyAlICh1c2VyLCBvdXRwdXQpKQotCi0gICAgQHRlc3RjYXNlKDExMTUpCi0gICAgZGVmIHRlc3RfYWxsX3VzZXJzX2Nhbl9jb25uZWN0X3ZpYV9zc2hfd2l0aG91dF9wYXNzd29yZChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBhbGwgdXNlcnMgY2FuIGNvbm5lY3QgdmlhIHNzaCB3aXRob3V0IHBhc3N3b3JkCi0gICAgICAgIEV4cGVjdGVkOiAxLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHJvb3QgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBOT1QgYmUgYWxsb3dlZC4KLSAgICAgICAgICAgICAgICAgIDIuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgdGVzdGVyIHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJleHRyYXVzZXJzIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfVVNFUlNfUEFSQU1TID0gInVzZXJhZGQgLXAgXCdcJyB7fTsgdXNlcm1vZCAtcyAvYmluL3NoIHt9OyInLmZvcm1hdChzZWxmLnRlc3RfdXNlciwgc2VsZi50ZXN0X3VzZXIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIpIGFzIHFlbXU6Ci0gICAgICAgICAgICAjIEF0dGVtcHQgdG8gc3NoIHdpdGggZWFjaCB1c2VyIGludG8gcWVtdSB3aXRoIGVtcHR5IHBhc3N3b3JkCi0gICAgICAgICAgICBmb3IgdXNlciBpbiBbc2VsZi5yb290X3VzZXIsIHNlbGYudGVzdF91c2VyXToKLSAgICAgICAgICAgICAgICBzc2ggPSBTU0hDb250cm9sKGlwPXFlbXUuaXAsIGxvZ2ZpbGU9cWVtdS5zc2hsb2csIHVzZXI9dXNlcikKLSAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNzaC5ydW4oInRydWUiKQotICAgICAgICAgICAgICAgIGlmIHVzZXIgPT0gJ3Jvb3QnOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyIHJvb3Qgd2FzIGFsbG93ZWQgd2hlbiBpdCBzaG91bGQgbm90IGhhdmUgYmVlbicpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciB0ZXN0ZXIgZmFpbGVkIHdpdGggJXMnICUgb3V0cHV0KQotCi0KLSAgICBAdGVzdGNhc2UoMTExNikKLSAgICBkZWYgdGVzdF9jbHV0dGVyX2ltYWdlX2Nhbl9iZV9idWlsdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBjbHV0dGVyIGltYWdlIGNhbiBiZSBidWlsdAotICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1jbHV0dGVyIGNhbiBiZSBidWlsdAotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLWNsdXR0ZXIKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1jbHV0dGVyJykKLQotICAgIEB0ZXN0Y2FzZSgxMTE3KQotICAgIGRlZiB0ZXN0X3dheWxhbmRfc3VwcG9ydF9pbl9pbWFnZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBXYXlsYW5kIHN1cHBvcnQgaW4gaW1hZ2UKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIFdheWxhbmQgaW1hZ2UgY2FuIGJlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAyLiBXYXlsYW5kIGZlYXR1cmUgY2FuIGJlIGluc3RhbGxlZAotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGRpc3Ryb19mZWF0dXJlcyA9IGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpCi0gICAgICAgIGlmIG5vdCAoJ29wZW5nbCcgaW4gZGlzdHJvX2ZlYXR1cmVzIGFuZCAnd2F5bGFuZCcgaW4gZGlzdHJvX2ZlYXR1cmVzKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25laXRoZXIgb3BlbmdsIG5vciB3YXlsYW5kIHByZXNlbnQgb24gRElTVFJPX0ZFQVRVUkVTIHNvIGNvcmUtaW1hZ2Utd2VzdG9uIGNhbm5vdCBiZSBidWlsdCcpCi0KLSAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2Utd2VzdG9uCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2Utd2VzdG9uJykKLQotICAgIGRlZiB0ZXN0X2JtYXAoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgYm1hcCBzdXBwb3J0Ci0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLW1pbmltYWwgY2FuIGJlIGJ1aWxkIHdpdGggYm1hcCBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAyLiBjb3JlLWltYWdlLW1pbmltYWwgaXMgc3BhcnNlCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfRlNUWVBFUyArPSAiIGV4dDQgZXh0NC5ibWFwIicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKLQotICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0gICAgICAgIGxpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlX25hbWUpCi0gICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgIiVzLmV4dDQiICUgbGlua19uYW1lKQotICAgICAgICBibWFwX3BhdGggPSAiJXMuYm1hcCIgJSBpbWFnZV9wYXRoCi0KLSAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgYW5kIGJtYXAgZmlsZSBhcmUgaW4gZGVwbG95IGRpcmVjdG9yeQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhibWFwX3BhdGgpKQotCi0gICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGlzIHNwYXJzZQotICAgICAgICBpbWFnZV9zdGF0ID0gb3Muc3RhdChpbWFnZV9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW1hZ2Vfc3RhdC5zdF9zaXplID4gaW1hZ2Vfc3RhdC5zdF9ibG9ja3MgKiA1MTIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9sYXllcmFwcGVuZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xheWVyYXBwZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2JiMzJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xheWVyYXBwZW5kLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEuc2VsZnRlc3QuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIExheWVyQXBwZW5kVGVzdHMob2VTZWxmVGVzdCk6Ci0gICAgbGF5ZXJjb25mID0gIiIiCi0jIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYXBwZW5kIHRvIEJCUEFUSAotQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCi0KLSMgV2UgaGF2ZSBhIHJlY2lwZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gIm1ldGEtbGF5ZXJJTlQiCi1CQkZJTEVfUEFUVEVSTl9tZXRhLWxheWVySU5UIDo9ICJeJHtMQVlFUkRJUn0vIgotQkJGSUxFX1BSSU9SSVRZX21ldGEtbGF5ZXJJTlQgPSAiNiIKLSIiIgotICAgIHJlY2lwZSA9ICIiIgotTElDRU5TRT0iQ0xPU0VEIgotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLQotcHl0aG9uIGRvX2J1aWxkKCkgewotICAgIGJiLnBsYWluKCdCdWlsZGluZyAuLi4nKQotfQotYWRkdGFzayBidWlsZAotIiIiCi0gICAgYXBwZW5kID0gIiIiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vYXBwZW5kdGVzdC50eHQiCi0KLXN5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2FwcGVuZHRlc3QudHh0ICR7U1lTUk9PVF9ERVNURElSfS8KLX0KLQotIiIiCi0KLSAgICBhcHBlbmQyID0gIiIiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNSQ19VUklfYXBwZW5kICs9ICJmaWxlOi8vYXBwZW5kdGVzdC50eHQiCi0iIiIKLSAgICBsYXllcmFwcGVuZCA9ICcnCi0KLSAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5sYXllcmFwcGVuZDoKLSAgICAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYuYnVpbGRkaXIgKyAiL2NvbmYvYmJsYXllcnMuY29uZiIsIHNlbGYubGF5ZXJhcHBlbmQpCi0KLSAgICBAdGVzdGNhc2UoMTE5NikKLSAgICBkZWYgdGVzdF9sYXllcl9hcHBlbmRzKHNlbGYpOgotICAgICAgICBjb3JlYmFzZSA9IGdldF9iYl92YXIoIkNPUkVCQVNFIikKLQotICAgICAgICBmb3IgbCBpbiBbIjAiLCAiMSIsICIyIl06Ci0gICAgICAgICAgICBsYXllciA9IG9zLnBhdGguam9pbihjb3JlYmFzZSwgIm1ldGEtbGF5ZXJ0ZXN0IiArIGwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGxheWVyKSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyKQotICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL2NvbmYiKQotICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9jb25mL2xheWVyLmNvbmYiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmxheWVyY29uZi5yZXBsYWNlKCJJTlQiLCBsKSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QiKQotICAgICAgICAgICAgaWYgbCA9PSAiMCI6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiIiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYucmVjaXBlKQotICAgICAgICAgICAgZWxpZiBsID09ICIxIjoKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmJhcHBlbmQiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5hcHBlbmQpCi0gICAgICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QiKQotICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMSB0ZXN0IikKLSAgICAgICAgICAgIGVsaWYgbCA9PSAiMiI6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiYXBwZW5kIiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXBwZW5kMikKLSAgICAgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJMYXllciAyIHRlc3QiKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsYXllcikKLQotICAgICAgICBzZWxmLmxheWVyYXBwZW5kID0gIkJCTEFZRVJTICs9IFwiezB9L21ldGEtbGF5ZXJ0ZXN0MCB7MH0vbWV0YS1sYXllcnRlc3QxIHswfS9tZXRhLWxheWVydGVzdDJcIiIuZm9ybWF0KGNvcmViYXNlKQotICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi5idWlsZGRpciArICIvY29uZi9iYmxheWVycy5jb25mIiwgc2VsZi5sYXllcmFwcGVuZCkKLSAgICAgICAgc3RhZ2luZ2RpciA9IGdldF9iYl92YXIoIlNZU1JPT1RfREVTVERJUiIsICJsYXllcmFwcGVuZHRlc3QiKQotICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQotICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDIgdGVzdCIpCi0gICAgICAgIG9zLnJlbW92ZShjb3JlYmFzZSArICIvbWV0YS1sYXllcnRlc3QyL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiKQotICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQotICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDEgdGVzdCIpCi0gICAgICAgIHdpdGggb3Blbihjb3JlYmFzZSArICIvbWV0YS1sYXllcnRlc3QyL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJMYXllciAyIHRlc3QiKQotICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQotICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDIgdGVzdCIpCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGlib2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWJvZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIwMzAxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWJvZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBiaXRiYWtlLCBydW5DbWQKLWltcG9ydCBvZS5wYXRoCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotCi1jbGFzcyBMaWJPRShvZVNlbGZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy50bXBfZGlyID0gZ2V0X2JiX3ZhcignVE1QRElSJykKLQotICAgIGRlZiB0ZXN0X2NvcHlfdHJlZV9zcGVjaWFsKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5dHJlZSgpIHNob3VsZCBjb3B5IGZpbGVzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXIKLSAgICAgICAgRXhwZWN0ZWQ6ICAgJ3Rlc3QgZmlsZSB3aXRoIHNwwqNjIWFsIEBuZCBzcGFjZXMnIHNob3VsZCBleGlzdCBpbgotICAgICAgICAgICAgICAgICAgICBjb3B5IGRlc3RpbmF0aW9uCi0gICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKLSAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQotICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQotICAgICAgICB0ZXN0ZmlsZW5hbWUgPSAndGVzdCBmaWxlIHdpdGggc3DCo2MhYWwgQG5kIHNwYWNlcycKLQotICAgICAgICAjIGNyZWF0ZSB0aGUgdGVzdCBmaWxlIGFuZCBjb3B5IGl0Ci0gICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSwgJ3crYicpLmNsb3NlKCkKLSAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzcmMsIGRzdCkKLQotICAgICAgICAjIGVuc3VyZSBwYXRoIGV4aXN0cyBpbiBkZXN0Ci0gICAgICAgIGZpbGVpbmRzdCA9IG9zLnBhdGguaXNmaWxlKG9lLnBhdGguam9pbihkc3QsIHRlc3RmaWxlbmFtZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlaW5kc3QsICJGaWxlIHdpdGggc3BhY2VzIGRvZXNuJ3QgZXhpc3QgaW4gZHN0IikKLQotICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQotCi0gICAgZGVmIHRlc3RfY29weV90cmVlX3hhdHRyKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5dHJlZSgpIHNob3VsZCBwcmVzZXJ2ZSB4YXR0ciBvbiBjb3BpZWQgZmlsZXMKLSAgICAgICAgRXhwZWN0ZWQ6ICAgdGVzdHhhdHRyIGZpbGUgaW4gZGVzdGluYXRpb24gc2hvdWxkIGhhdmUgdXNlci5vZXRlc3QKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWQgYXR0cmlidXRlCi0gICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKLSAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQotICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQotICAgICAgICB0ZXN0ZmlsZW5hbWUgPSAndGVzdHhhdHRyJwotCi0gICAgICAgICMgZW5zdXJlIHdlIGhhdmUgc2V0ZmF0dHIgYXZhaWxhYmxlCi0gICAgICAgIGJpdGJha2UoImF0dHItbmF0aXZlIikKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTWVNST09UX0RFU1RESVInLCAnYmluZGlyJ10sICdhdHRyLW5hdGl2ZScpCi0gICAgICAgIGRlc3RkaXIgPSBiYl92YXJzWydTWVNST09UX0RFU1RESVInXQotICAgICAgICBiaW5kaXIgPSBiYl92YXJzWydiaW5kaXInXQotICAgICAgICBiaW5kaXIgPSBkZXN0ZGlyICsgYmluZGlyCi0KLSAgICAgICAgIyBjcmVhdGUgYSBmaWxlIHdpdGggeGF0dHIgYW5kIGNvcHkgaXQKLSAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpLCAndytiJykuY2xvc2UoKQotICAgICAgICBydW5DbWQoJyVzL3NldGZhdHRyIC1uIHVzZXIub2V0ZXN0IC12ICJ0ZXN0aW5nIGxpYm9lIiAlcycgJSAoYmluZGlyLCBvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpKSkKLSAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzcmMsIGRzdCkKLQotICAgICAgICAjIGVuc3VyZSBmaWxlIGluIGRlc3QgaGFzIHVzZXIub2V0ZXN0IHhhdHRyCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnJXMvZ2V0ZmF0dHIgLW4gdXNlci5vZXRlc3QgJXMnICUgKGJpbmRpciwgb2UucGF0aC5qb2luKGRzdCwgdGVzdGZpbGVuYW1lKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VzZXIub2V0ZXN0PSJ0ZXN0aW5nIGxpYm9lIicsIHJlc3VsdC5vdXRwdXQsICdFeHRlbmRlZCBhdHRyaWJ1dGUgbm90IHNlcnQgaW4gZHN0JykKLQotICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQotCi0gICAgZGVmIHRlc3RfY29weV9oYXJkbGlua190cmVlX2NvdW50KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKCkgc2hvdWxkbid0IG1pc3Mgb3V0IGZpbGVzCi0gICAgICAgIEV4cGVjdGVkOiAgIHNyYyBhbmQgZHN0IHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBmaWxlcwotICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCi0gICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCi0gICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKLSAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKLSAgICAgICAgdGVzdGZpbGVzID0gWydmb28nLCAnYmFyJywgJy5iYXonLCAncXV1eCddCi0KLSAgICAgICAgZGVmIHRvdWNoZmlsZSh0Zik6Ci0gICAgICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRmKSwgJ3crYicpLmNsb3NlKCkKLQotICAgICAgICBmb3IgZiBpbiB0ZXN0ZmlsZXM6Ci0gICAgICAgICAgICB0b3VjaGZpbGUoZikKLQotICAgICAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoc3JjLCBkc3QpCi0KLSAgICAgICAgZHN0Y250ID0gbGVuKG9zLmxpc3RkaXIoZHN0KSkKLSAgICAgICAgc3JjY250ID0gbGVuKG9zLmxpc3RkaXIoc3JjKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZHN0Y250LCBsZW4odGVzdGZpbGVzKSwgIk51bWJlciBvZiBmaWxlcyBpbiBkc3QgKCVzKSBkaWZmZXJzIGZyb20gbnVtYmVyIG9mIGZpbGVzIGluIHNyYyglcykuIiAlIChkc3RjbnQsIHNyY2NudCkpCi0KLSAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYy1jaGVja3N1bS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYy1jaGVja3N1bS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4MTM3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWMtY2hlY2tzdW0ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCB0ZW1wZmlsZQotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlCi1mcm9tIG9lcWEudXRpbHMgaW1wb3J0IENvbW1hbmRFcnJvcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIExpY2Vuc2VUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgICMgVmVyaWZ5IHRoYXQgY2hhbmdpbmcgYSBsaWNlbnNlIGZpbGUgdGhhdCBoYXMgYW4gYWJzb2x1dGUgcGF0aCBjYXVzZXMKLSAgICAjIHRoZSBsaWNlbnNlIHFhIHRvIGZhaWwgZHVlIHRvIGEgbWlzbWF0Y2hlZCBtZDVzdW0uCi0gICAgQHRlc3RjYXNlKDExOTcpCi0gICAgZGVmIHRlc3Rfbm9ubWF0Y2hpbmdfY2hlY2tzdW0oc2VsZik6Ci0gICAgICAgIGJpdGJha2VfY21kID0gJy1jIHBvcHVsYXRlX2xpYyBlbXB0eXRlc3QnCi0gICAgICAgIGVycm9yX21zZyA9ICdlbXB0eXRlc3Q6IFRoZSBuZXcgbWQ1IGNoZWNrc3VtIGlzIDhkNzc3ZjM4NWQzZGZlYzg4MTVkMjBmNzQ5NjAyNmRjJwotCi0gICAgICAgIGxpY19maWxlLCBsaWNfcGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQotICAgICAgICBvcy5jbG9zZShsaWNfZmlsZSkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsaWNfcGF0aCkKLQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgIiIiCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJXM7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgotU1JDX1VSSSA9ICJmaWxlOi8vJXM7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgotIiIiICUgKGxpY19wYXRoLCBsaWNfcGF0aCkpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoYml0YmFrZV9jbWQpCi0KLSAgICAgICAgd2l0aCBvcGVuKGxpY19wYXRoLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJkYXRhIikKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6Ci0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihyZXN1bHQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbWFuaWZlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9tYW5pZmVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2Zjk0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9tYW5pZmVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgYml0YmFrZQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIE1hbmlmZXN0RW50cnk6Ci0gICAgJycnQSBtYW5pZmVzdCBpdGVtIG9mIGEgY29sbGVjdGlvbiBhYmxlIHRvIGxpc3QgbWlzc2luZyBwYWNrYWdlcycnJwotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnRyeSk6Ci0gICAgICAgIHNlbGYuZmlsZSA9IGVudHJ5Ci0gICAgICAgIHNlbGYubWlzc2luZyA9IFtdCi0KLWNsYXNzIFZlcmlmeU1hbmlmZXN0KG9lU2VsZlRlc3QpOgotICAgICcnJ1Rlc3RzIGZvciB0aGUgbWFuaWZlc3QgZmlsZXMgYW5kIGNvbnRlbnRzIG9mIGFuIGltYWdlJycnCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY2hlY2tfbWFuaWZlc3RfZW50cmllcyhzZWxmLCBtYW5pZmVzdCwgcGF0aCk6Ci0gICAgICAgIG1hbmlmZXN0X2Vycm9ycyA9IFtdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInIiKSBhcyBtZmlsZToKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBtZmlsZToKLSAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnkgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbGluZS5zcGxpdCgpWzBdKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IGxvb2tpbmcgZm9yIHt9IlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0X2VudHJ5KSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1hbmlmZXN0X2VudHJ5KToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Vycm9ycy5hcHBlbmQobWFuaWZlc3RfZW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IHt9IG5vdCBmb3VuZCJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdF9lbnRyeSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IGNoZWNraW5nIG9mIHt9IGZhaWxlZCJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0KSkKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICByZXR1cm4gbWFuaWZlc3RfZXJyb3JzCi0KLSAgICAjdGhpcyB3aWxsIHBvc3NpYmx5IG1vdmUgZnJvbSBoZXJlCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9kaXJfZnJvbV9iYl92YXIoc2VsZiwgYmJfdmFyLCB0YXJnZXQgPSBOb25lKToKLSAgICAgICAgdGFyZ2V0ID09IHNlbGYuYnVpbGR0YXJnZXQgaWYgdGFyZ2V0ID09IE5vbmUgZWxzZSB0YXJnZXQKLSAgICAgICAgZGlyZWN0b3J5ID0gZ2V0X2JiX3ZhcihiYl92YXIsIHRhcmdldCk7Ci0gICAgICAgIGlmIG5vdCBkaXJlY3Rvcnkgb3Igbm90IG9zLnBhdGguaXNkaXIoZGlyZWN0b3J5KToKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fToge30gcG9pbnRzIHRvIHt9IHdoZW4gdGFyZ2V0ID0ge30iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYl92YXIsIGRpcmVjdG9yeSwgdGFyZ2V0KSkKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKLSAgICAgICAgcmV0dXJuIGRpcmVjdG9yeQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0KLSAgICAgICAgc2VsZi5idWlsZHRhcmdldCA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIHNlbGYuY2xhc3NuYW1lID0gJ1ZlcmlmeU1hbmlmZXN0JwotCi0gICAgICAgIHNlbGYubG9nLmluZm8oInt9OiBkb2luZyBiaXRiYWtlIHt9IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB0ZXN0IlwKLSAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBzZWxmLmJ1aWxkdGFyZ2V0KSkKLSAgICAgICAgaWYgYml0YmFrZShzZWxmLmJ1aWxkdGFyZ2V0KS5zdGF0dXM6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie30gRmFpbGVkIHRvIHNldHVwIHt9IlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgc2VsZi5idWlsZHRhcmdldCkpCi0gICAgICAgICAgICB1bml0dGVzdC5Ta2lwVGVzdCgie306IENhbm5vdCBzZXR1cCB0ZXN0aW5nIHNjZW5hcmlvIlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCi0KLSAgICBAdGVzdGNhc2UoMTM4MCkKLSAgICBkZWYgdGVzdF9TREtfbWFuaWZlc3RfZW50cmllcyhzZWxmKToKLSAgICAgICAgJycnVmVyaWZ5aW5nIHRoZSBTREsgbWFuaWZlc3QgZW50cmllcyBleGlzdCwgdGhpcyBtYXkgdGFrZSBhIGJ1aWxkJycnCi0KLSAgICAgICAgIyB0aGUgc2V0dXAgc2hvdWxkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsIGFuZCBoZXJlIGl0IGlzIHJlcXVpcmVkCi0gICAgICAgICMgdG8gZG8gYW4gYWRkaXRpb25hbCBzZXR1cCBmb3IgdGhlIHNkawotICAgICAgICBzZGt0YXNrID0gJy1jIHBvcHVsYXRlX3NkaycKLSAgICAgICAgYmJhcmdzID0gc2RrdGFzayArICcgJyArIHNlbGYuYnVpbGR0YXJnZXQKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiBkb2luZyBiaXRiYWtlIHt9IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB0ZXN0IlwKLSAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYmFyZ3MpKQotICAgICAgICBpZiBiaXRiYWtlKGJiYXJncykuc3RhdHVzOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9IEZhaWxlZCB0byBiaXRiYWtlIHt9IlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJhcmdzKSkKLSAgICAgICAgICAgIHVuaXR0ZXN0LlNraXBUZXN0KCJ7fTogQ2Fubm90IHNldHVwIHRlc3Rpbmcgc2NlbmFyaW8iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKLQotCi0gICAgICAgIHBrZ2RhdGFfZGlyID0gcmV2ZXJzZV9kaXIgPSB7fQotICAgICAgICBtZmlsZW5hbWUgPSBtcGF0aCA9IG1fZW50cnkgPSB7fQotICAgICAgICAjIGdldCBtYW5pZmVzdCBsb2NhdGlvbiBiYXNlZCBvbiB0YXJnZXQgdG8gcXVlcnkgYWJvdXQKLSAgICAgICAgZF90YXJnZXQ9IGRpY3QodGFyZ2V0ID0gc2VsZi5idWlsZHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0gJ25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdTREtfREVQTE9ZJywgc2VsZi5idWlsZHRhcmdldCkKLSAgICAgICAgICAgIGZvciBrIGluIGRfdGFyZ2V0LmtleXMoKToKLSAgICAgICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTREtfTkFNRScsICdTREtfVkVSU0lPTiddLCBzZWxmLmJ1aWxkdGFyZ2V0KQotICAgICAgICAgICAgICAgIG1maWxlbmFtZVtrXSA9ICJ7fS10b29sY2hhaW4te30ue30ubWFuaWZlc3QiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiX3ZhcnNbJ1NES19OQU1FJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBiYl92YXJzWydTREtfVkVSU0lPTiddLAotICAgICAgICAgICAgICAgICAgICAgICAgaykKLSAgICAgICAgICAgICAgICBtcGF0aFtrXSA9IG9zLnBhdGguam9pbihtZGlyLCBtZmlsZW5hbWVba10pCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1wYXRoW2tdKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiB7fSBkb2VzIG5vdCBleGlzdCIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIG1wYXRoW2tdKSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgotICAgICAgICAgICAgICAgIG1fZW50cnlba10gPSBNYW5pZmVzdEVudHJ5KG1wYXRoW2tdKQotCi0gICAgICAgICAgICAgICAgcGtnZGF0YV9kaXJba10gPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1BLR0RBVEFfRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGRfdGFyZ2V0W2tdKQotICAgICAgICAgICAgICAgIHJldmVyc2VfZGlyW2tdID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyW2tdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUtcmV2ZXJzZScpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJldmVyc2VfZGlyW2tdKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiB7fSBkb2VzIG5vdCBleGlzdCIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIHJldmVyc2VfZGlyW2tdKSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ7fTogRXJyb3IgaW4gb2J0YWluaW5nIG1hbmlmZXN0IGRpcnMiXAotICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIG1zZyA9ICJ7fTogRXJyb3IgY2Fubm90IGZpbmQgbWFuaWZlc3RzIGluIHRoZSBzcGVjaWZpZWQgZGlyOlxue30iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtZGlyKQotICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKLQotICAgICAgICBmb3IgayBpbiBkX3RhcmdldC5rZXlzKCk6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IENoZWNrIG1hbmlmZXN0IHt9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIG1fZW50cnlba10uZmlsZSkpCi0KLSAgICAgICAgICAgIG1fZW50cnlba10ubWlzc2luZyA9IHNlbGYuY2hlY2tfbWFuaWZlc3RfZW50cmllcyhcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW50cnlba10uZmlsZSxyZXZlcnNlX2RpcltrXSkKLSAgICAgICAgICAgIGlmIG1fZW50cnlba10ubWlzc2luZzoKLSAgICAgICAgICAgICAgICBtc2cgPSAne306IHt9IEVycm9yIGhhcyB0aGUgZm9sbG93aW5nIG1pc3NpbmcgZW50cmllcydcCi0gICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5W2tdLmZpbGUpCi0gICAgICAgICAgICAgICAgbG9nbXNnID0gbXNnKyc6XG4nKydcbicuam9pbihtX2VudHJ5W2tdLm1pc3NpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcobG9nbXNnKQotICAgICAgICAgICAgICAgIHNlbGYubG9nLmluZm8obXNnKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChsb2dtc2cpCi0KLSAgICBAdGVzdGNhc2UoMTM4MSkKLSAgICBkZWYgdGVzdF9pbWFnZV9tYW5pZmVzdF9lbnRyaWVzKHNlbGYpOgotICAgICAgICAnJydWZXJpZnlpbmcgdGhlIGltYWdlIG1hbmlmZXN0IGVudHJpZXMgZXhpc3QnJycKLQotICAgICAgICAjIGdldCBtYW5pZmVzdCBsb2NhdGlvbiBiYXNlZCBvbiB0YXJnZXQgdG8gcXVlcnkgYWJvdXQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWRpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0KQotICAgICAgICAgICAgbWZpbGVuYW1lID0gZ2V0X2JiX3ZhcigiSU1BR0VfTElOS19OQU1FIiwgc2VsZi5idWlsZHRhcmdldClcCi0gICAgICAgICAgICAgICAgICAgICsgIi5tYW5pZmVzdCIKLSAgICAgICAgICAgIG1wYXRoID0gb3MucGF0aC5qb2luKG1kaXIsIG1maWxlbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtcGF0aCk6IHJhaXNlIElPRXJyb3IKLSAgICAgICAgICAgIG1fZW50cnkgPSBNYW5pZmVzdEVudHJ5KG1wYXRoKQotCi0gICAgICAgICAgICBwa2dkYXRhX2RpciA9IHt9Ci0gICAgICAgICAgICBwa2dkYXRhX2RpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignUEtHREFUQV9ESVInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWlsZHRhcmdldCkKLSAgICAgICAgICAgIHJldmRpciA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgJ3J1bnRpbWUtcmV2ZXJzZScpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmV2ZGlyKTogcmFpc2UgSU9FcnJvcgotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ7fTogRXJyb3IgaW4gb2J0YWluaW5nIG1hbmlmZXN0IGRpcnMiXAotICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIG1zZyA9ICJ7fTogRXJyb3IgY2Fubm90IGZpbmQgbWFuaWZlc3RzIGluIGRpcjpcbnt9IlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCi0KLSAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiBDaGVjayBtYW5pZmVzdCB7fSJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeS5maWxlKSkKLSAgICAgICAgbV9lbnRyeS5taXNzaW5nID0gc2VsZi5jaGVja19tYW5pZmVzdF9lbnRyaWVzKFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VudHJ5LmZpbGUsIHJldmRpcikKLSAgICAgICAgaWYgbV9lbnRyeS5taXNzaW5nOgotICAgICAgICAgICAgbXNnID0gJ3t9OiB7fSBFcnJvciBoYXMgdGhlIGZvbGxvd2luZyBtaXNzaW5nIGVudHJpZXMnXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5LmZpbGUpCi0gICAgICAgICAgICBsb2dtc2cgPSBtc2crJzpcbicrJ1xuJy5qb2luKG1fZW50cnkubWlzc2luZykKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKGxvZ21zZykKLSAgICAgICAgICAgIHNlbGYubG9nLmluZm8obXNnKQotICAgICAgICAgICAgc2VsZi5mYWlsKGxvZ21zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2J1aWxkaGlzdG9yeS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2J1aWxkaGlzdG9yeS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVkNGIwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9idWlsZGhpc3RvcnkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIGdpdCBpbXBvcnQgUmVwbwotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyCi1mcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgYmxvYl90b19kaWN0LCBjb21wYXJlX2RpY3RfYmxvYnMKLQotY2xhc3MgVGVzdEJsb2JQYXJzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgaW1wb3J0IHRpbWUKLSAgICAgICAgc2VsZi5yZXBvX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nc2VsZnRlc3QtYnVpbGRoaXN0b3J5JywKLSAgICAgICAgICAgIGRpcj1nZXRfYmJfdmFyKCdUT1BESVInKSkKLQotICAgICAgICBzZWxmLnJlcG8gPSBSZXBvLmluaXQoc2VsZi5yZXBvX3BhdGgpCi0gICAgICAgIHNlbGYudGVzdF9maWxlID0gInRlc3QiCi0gICAgICAgIHNlbGYudmFyX21hcCA9IHt9Ci0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGltcG9ydCBzaHV0aWwKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnJlcG9fcGF0aCkKLQotICAgIGRlZiBjb21taXRfdmFycyhzZWxmLCB0b19hZGQ9e30sIHRvX3JlbW92ZSA9IFtdLCBtc2c9IkEgY29tbWl0IG1lc3NhZ2UiKToKLSAgICAgICAgaWYgbGVuKHRvX2FkZCkgPT0gMCBhbmQgbGVuKHRvX3JlbW92ZSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBrIGluIHRvX3JlbW92ZToKLSAgICAgICAgICAgIHNlbGYudmFyX21hcC5wb3AoeCxOb25lKQotICAgICAgICBmb3IgayBpbiB0b19hZGQ6Ci0gICAgICAgICAgICBzZWxmLnZhcl9tYXBba10gPSB0b19hZGRba10KLQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksICd3JykgYXMgcmVwb19maWxlOgotICAgICAgICAgICAgZm9yIGsgaW4gc2VsZi52YXJfbWFwOgotICAgICAgICAgICAgICAgIHJlcG9fZmlsZS53cml0ZSgiJXMgPSAlc1xuIiAlIChrLCBzZWxmLnZhcl9tYXBba10pKQotCi0gICAgICAgIHNlbGYucmVwby5naXQuYWRkKCItLWFsbCIpCi0gICAgICAgIHNlbGYucmVwby5naXQuY29tbWl0KG1lc3NhZ2U9bXNnKQotCi0gICAgZGVmIHRlc3RfYmxvYl90b19kaWN0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjb252ZXJ0aW9uIG9mIGdpdCBibG9icyB0byBkaWN0aW9uYXJ5Ci0gICAgICAgICIiIgotICAgICAgICB2YWx1ZXNtYXAgPSB7ICJmb28iIDogIjEiLCAiYmFyIiA6ICIyIiB9Ci0gICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0gdmFsdWVzbWFwKQotCi0gICAgICAgIGJsb2IgPSBzZWxmLnJlcG8uaGVhZC5jb21taXQudHJlZS5ibG9ic1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlc21hcCwgYmxvYl90b19kaWN0KGJsb2IpLAotICAgICAgICAgICAgImNvbW1pdCB3YXMgbm90IHRyYW5zbGF0ZWQgY29ycmVjdGx5IHRvIGRpY3Rpb25hcnkiKQotCi0gICAgZGVmIHRlc3RfY29tcGFyZV9kaWN0X2Jsb2JzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjb21wYXJpc3NvbiBvZiBkaWN0aW9uYXJpZXMgZXh0cmFjdGVkIGZyb20gZ2l0IGJsb2JzCi0gICAgICAgICIiIgotICAgICAgICBjaGFuZ2VzbWFwID0geyAiZm9vLTIiIDogKCIyIiwgIjgiKSwgImJhciIgOiAoIiIsIjQiKSwgImJhci0yIiA6ICgiIiwiNSIpfQotCi0gICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vIiA6ICIxIiwgImZvby0yIiA6ICIyIiwgImZvby0zIiA6ICIzIiB9KQotICAgICAgICBibG9iMSA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KLQotICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvby0yIiA6ICI4IiwgImJhciIgOiAiNCIsICJiYXItMiIgOiAiNSIgfSkKLSAgICAgICAgYmxvYjIgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCi0KLSAgICAgICAgY2hhbmdlX3JlY29yZHMgPSBjb21wYXJlX2RpY3RfYmxvYnMob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksCi0gICAgICAgICAgICBibG9iMSwgYmxvYjIsIEZhbHNlLCBGYWxzZSkKLQotICAgICAgICB2YXJfY2hhbmdlcyA9IHsgeC5maWVsZG5hbWUgOiAoeC5vbGR2YWx1ZSwgeC5uZXd2YWx1ZSkgZm9yIHggaW4gY2hhbmdlX3JlY29yZHN9Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlc21hcCwgdmFyX2NoYW5nZXMsICJDaGFuZ2VzIG5vdCByZXBvcnRlZCBjb3JyZWN0bHkiKQotCi0gICAgZGVmIHRlc3RfY29tcGFyZV9kaWN0X2Jsb2JzX2RlZmF1bHQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGRlZmF1bHQgdmFsdWVzIGZvciBjb21wYXJpc3NvbiBvZiBnaXQgYmxvYiBkaWN0aW9uYXJpZXMKLSAgICAgICAgIiIiCi0gICAgICAgIGRlZmF1bHRtYXAgPSB7IHggOiAoImRlZmF1bHQiLCAiMSIpICBmb3IgeCBpbiBbIlBLRyIsICJQS0dFIiwgIlBLR1YiLCAiUEtHUiJdfQotCi0gICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vIiA6ICIxIiB9KQotICAgICAgICBibG9iMSA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KLQotICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgIlBLRyIgOiAiMSIsICJQS0dFIiA6ICIxIiwgIlBLR1YiIDogIjEiLCAiUEtHUiIgOiAiMSIgfSkKLSAgICAgICAgYmxvYjIgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCi0KLSAgICAgICAgY2hhbmdlX3JlY29yZHMgPSBjb21wYXJlX2RpY3RfYmxvYnMob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksCi0gICAgICAgICAgICBibG9iMSwgYmxvYjIsIEZhbHNlLCBGYWxzZSkKLQotICAgICAgICB2YXJfY2hhbmdlcyA9IHt9Ci0gICAgICAgIGZvciB4IGluIGNoYW5nZV9yZWNvcmRzOgotICAgICAgICAgICAgb2xkdmFsdWUgPSAiZGVmYXVsdCIgaWYgKCJkZWZhdWx0IiBpbiB4Lm9sZHZhbHVlKSBlbHNlIHgub2xkdmFsdWUKLSAgICAgICAgICAgIHZhcl9jaGFuZ2VzW3guZmllbGRuYW1lXSA9IChvbGR2YWx1ZSwgeC5uZXd2YWx1ZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRtYXAsIHZhcl9jaGFuZ2VzLCAiRGVmYXVsdHMgbm90IHNldCBwcm9wZXJseSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9lbGYucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9lbGYucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNTkwMzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvZWxmLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb2UucWEKLQotY2xhc3MgVGVzdEVsZih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfbWFjaGluZV9uYW1lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBlbGZfbWFjaGluZV90b19zdHJpbmcoKQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMiksICJTUEFSQyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDMpLCAieDg2IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwOCksICJNSVBTIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgxNCksICJQb3dlclBDIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgyOCksICJBUk0iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDJBKSwgIlN1cGVySCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MzIpLCAiSUEtNjQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDNFKSwgIng4Ni02NCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4QjcpLCAiQUFyY2g2NCIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMCksICJVbmtub3duICgwKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4REVBREJFRUYpLCAiVW5rbm93biAoMzczNTkyODU1OSkiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygiZm9vYmFyIiksICJVbmtub3duICgnZm9vYmFyJykiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvbGljZW5zZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2xpY2Vuc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODg4ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvbGljZW5zZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9lLmxpY2Vuc2UKLQotY2xhc3MgU2VlblZpc2l0b3Iob2UubGljZW5zZS5MaWNlbnNlVmlzaXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnNlZW4gPSBbXQotICAgICAgICBvZS5saWNlbnNlLkxpY2Vuc2VWaXNpdG9yLl9faW5pdF9fKHNlbGYpCi0KLSAgICBkZWYgdmlzaXRfU3RyKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxmLnNlZW4uYXBwZW5kKG5vZGUucykKLQotY2xhc3MgVGVzdFNpbmdsZUxpY2Vuc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGxpY2Vuc2VzID0gWwotICAgICAgICAiR1BMdjIiLAotICAgICAgICAiTEdQTC0yLjAiLAotICAgICAgICAiQXJ0aXN0aWMiLAotICAgICAgICAiTUlUIiwKLSAgICAgICAgIkdQTHYzKyIsCi0gICAgICAgICJGT09fQkFSIiwKLSAgICBdCi0gICAgaW52YWxpZF9saWNlbnNlcyA9IFsiR1BML0JTRCJdCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHBhcnNlKGxpY2Vuc2VzdHIpOgotICAgICAgICB2aXNpdG9yID0gU2VlblZpc2l0b3IoKQotICAgICAgICB2aXNpdG9yLnZpc2l0X3N0cmluZyhsaWNlbnNlc3RyKQotICAgICAgICByZXR1cm4gdmlzaXRvci5zZWVuCi0KLSAgICBkZWYgdGVzdF9zaW5nbGVfbGljZW5zZXMoc2VsZik6Ci0gICAgICAgIGZvciBsaWNlbnNlIGluIHNlbGYubGljZW5zZXM6Ci0gICAgICAgICAgICBsaWNlbnNlcyA9IHNlbGYucGFyc2UobGljZW5zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpY2Vuc2VzLCBbbGljZW5zZV0pCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2xpY2Vuc2VzKHNlbGYpOgotICAgICAgICBmb3IgbGljZW5zZSBpbiBzZWxmLmludmFsaWRfbGljZW5zZXM6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9lLmxpY2Vuc2UuSW52YWxpZExpY2Vuc2UpIGFzIGNtOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2UobGljZW5zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmxpY2Vuc2UsIGxpY2Vuc2UpCi0KLWNsYXNzIFRlc3RTaW1wbGVDb21iaW5hdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHRlc3RzID0gewotICAgICAgICAiRk9PJkJBUiI6IFsiRk9PIiwgIkJBUiJdLAotICAgICAgICAiQkFaICYgTU9PIjogWyJCQVoiLCAiTU9PIl0sCi0gICAgICAgICJBTFBIQXxCRVRBIjogWyJBTFBIQSJdLAotICAgICAgICAiQkFaJk1PT3xGT08iOiBbIkZPTyJdLAotICAgICAgICAiRk9PJkJBUnxCQVoiOiBbIkZPTyIsICJCQVIiXSwKLSAgICB9Ci0gICAgcHJlZmVycmVkID0gWyJBTFBIQSIsICJGT08iLCAiQkFSIl0KLQotICAgIGRlZiB0ZXN0X3Rlc3RzKHNlbGYpOgotICAgICAgICBkZWYgY2hvb3NlKGEsIGIpOgotICAgICAgICAgICAgaWYgYWxsKGxpYyBpbiBzZWxmLnByZWZlcnJlZCBmb3IgbGljIGluIGIpOgotICAgICAgICAgICAgICAgIHJldHVybiBiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBhCi0KLSAgICAgICAgZm9yIGxpY2Vuc2UsIGV4cGVjdGVkIGluIHNlbGYudGVzdHMuaXRlbXMoKToKLSAgICAgICAgICAgIGxpY2Vuc2VzID0gb2UubGljZW5zZS5mbGF0dGVuZWRfbGljZW5zZXMobGljZW5zZSwgY2hvb3NlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGljZW5zZXMsIGV4cGVjdGVkKQotCi1jbGFzcyBUZXN0Q29tcGxleENvbWJpbmF0aW9ucyhUZXN0U2ltcGxlQ29tYmluYXRpb25zKToKLSAgICB0ZXN0cyA9IHsKLSAgICAgICAgIkZPTyAmIChCQVIgfCBCQVopJk1PTyI6IFsiRk9PIiwgIkJBUiIsICJNT08iXSwKLSAgICAgICAgIihBTFBIQXwoQkVUQSZUSEVUQSl8T01FR0EpJkRFTFRBIjogWyJPTUVHQSIsICJERUxUQSJdLAotICAgICAgICAiKChBTFBIQXxCRVRBKSZGT08pfEJBWiI6IFsiQkVUQSIsICJGT08iXSwKLSAgICAgICAgIihHUEwtMi4wfFByb3ByaWV0YXJ5KSZCU0QtNC1jbGF1c2UmTUlUIjogWyJHUEwtMi4wIiwgIkJTRC00LWNsYXVzZSIsICJNSVQiXSwKLSAgICB9Ci0gICAgcHJlZmVycmVkID0gWyJCQVIiLCAiT01FR0EiLCAiQkVUQSIsICJHUEwtMi4wIl0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3BhdGgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9wYXRoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGQwNjgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3BhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvZSwgb2UucGF0aAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgb3MKLWltcG9ydCBlcnJubwotaW1wb3J0IHNodXRpbAotCi1jbGFzcyBUZXN0UmVhbFBhdGgodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIERJUlMgPSBbICJhIiwgImIiLCAiZXRjIiwgInNiaW4iLCAidXNyIiwgInVzci9iaW4iLCAidXNyL2JpblgiLCAidXNyL3NiaW4iLCAidXNyL2luY2x1ZGUiLCAidXNyL2luY2x1ZGUvZ2RibSIgXQotICAgIEZJTEVTID0gWyAiZXRjL3Bhc3N3ZCIsICJiL2ZpbGUiIF0KLSAgICBMSU5LUyA9IFsKLSAgICAgICAgKCAiYmluIiwgICAgICAgICAgICAgIi91c3IvYmluIiwgICAgICAgICAgICAgIi91c3IvYmluIiApLAotICAgICAgICAoICJiaW5YIiwgICAgICAgICAgICAidXNyL2JpblgiLCAgICAgICAgICAgICAiL3Vzci9iaW5YIiApLAotICAgICAgICAoICJjIiwgICAgICAgICAgICAgICAiYnJva2VuIiwgICAgICAgICAgICAgICAiL2Jyb2tlbiIgKSwKLSAgICAgICAgKCAiZXRjL3Bhc3N3ZC0xIiwgICAgInBhc3N3ZCIsICAgICAgICAgICAgICAgIi9ldGMvcGFzc3dkIiApLAotICAgICAgICAoICJldGMvcGFzc3dkLTIiLCAgICAicGFzc3dkLTEiLCAgICAgICAgICAgICAiL2V0Yy9wYXNzd2QiICksCi0gICAgICAgICggImV0Yy9wYXNzd2QtMyIsICAgICIvZXRjL3Bhc3N3ZC0xIiwgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKLSAgICAgICAgKCAiZXRjL3NoYWRvdy0xIiwgICAgIi9ldGMvc2hhZG93IiwgICAgICAgICAgIi9ldGMvc2hhZG93IiApLAotICAgICAgICAoICJldGMvc2hhZG93LTIiLCAgICAiL2V0Yy9zaGFkb3ctMSIsICAgICAgICAiL2V0Yy9zaGFkb3ciICksCi0gICAgICAgICggInByb2ctQSIsICAgICAgICAgICJiaW4vcHJvZy1BIiwgICAgICAgICAgICIvdXNyL2Jpbi9wcm9nLUEiICksCi0gICAgICAgICggInByb2ctQiIsICAgICAgICAgICIvYmluL3Byb2ctQiIsICAgICAgICAgICIvdXNyL2Jpbi9wcm9nLUIiICksCi0gICAgICAgICggInVzci9iaW4vcHJvZy1DIiwgICIuLi8uLi9zYmluL3Byb2ctQyIsICAgICIvc2Jpbi9wcm9nLUMiICksCi0gICAgICAgICggInVzci9iaW4vcHJvZy1EIiwgICIvc2Jpbi9wcm9nLUQiLCAgICAgICAgICIvc2Jpbi9wcm9nLUQiICksCi0gICAgICAgICggInVzci9iaW5YL3Byb2ctRSIsICIuLi9zYmluL3Byb2ctRSIsICAgICAgIE5vbmUgKSwKLSAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUYiLCAgIi4uLy4uLy4uL3NiaW4vcHJvZy1GIiwgIi9zYmluL3Byb2ctRiIgKSwKLSAgICAgICAgKCAibG9vcCIsICAgICAgICAgICAgImEvbG9vcCIsICAgICAgICAgICAgICAgTm9uZSApLAotICAgICAgICAoICJhL2xvb3AiLCAgICAgICAgICAiLi4vbG9vcCIsICAgICAgICAgICAgICBOb25lICksCi0gICAgICAgICggImIvdGVzdCIsICAgICAgICAgICJmaWxlL2ZvbyIsICAgICAgICAgICAgICIvYi9maWxlL2ZvbyIgKSwKLSAgICBdCi0KLSAgICBMSU5LU19QSFlTID0gWwotICAgICAgICAoICIuLyIsICAgICAgICAgICIvIiwgICAgICAgICAgICAgICAgIiIgKSwKLSAgICAgICAgKCAiYmluWC9wcm9nLUUiLCAiL3Vzci9zYmluL3Byb2ctRSIsICIvc2Jpbi9wcm9nLUUiICksCi0gICAgXQotCi0gICAgRVhDRVBUSU9OUyA9IFsKLSAgICAgICAgKCAibG9vcCIsICAgZXJybm8uRUxPT1AgKSwKLSAgICAgICAgKCAiYi90ZXN0IiwgZXJybm8uRU5PRU5UICksCi0gICAgXQotCi0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgICNvcy5zeXN0ZW0oInRyZWUgLUYgJXMiICUgc2VsZi50bXBkaXIpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudG1wZGlyKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXggPSAib2UtdGVzdF9wYXRoIikKLSAgICAgICAgc2VsZi5yb290ID0gb3MucGF0aC5qb2luKHNlbGYudG1wZGlyLCAiUiIpCi0KLSAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudG1wZGlyLCAiX3JlYWwiKSkKLSAgICAgICAgb3Muc3ltbGluaygiX3JlYWwiLCBzZWxmLnJvb3QpCi0KLSAgICAgICAgZm9yIGQgaW4gc2VsZi5ESVJTOgotICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZCkpCi0gICAgICAgIGZvciBmIGluIHNlbGYuRklMRVM6Ci0gICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGYpLCAidyIpCi0gICAgICAgIGZvciBsIGluIHNlbGYuTElOS1M6Ci0gICAgICAgICAgICBvcy5zeW1saW5rKGxbMV0sIG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGxbMF0pKQotCi0gICAgZGVmIF9fcmVhbHBhdGgoc2VsZiwgZmlsZSwgdXNlX3BoeXNkaXIsIGFzc3VtZV9kaXIgPSBUcnVlKToKLSAgICAgICAgcmV0dXJuIG9lLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZmlsZSksIHNlbGYucm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3BoeXNkaXIsIGFzc3VtZV9kaXIgPSBhc3N1bWVfZGlyKQotCi0gICAgZGVmIHRlc3Rfbm9ybShzZWxmKToKLSAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LUzoKLSAgICAgICAgICAgIGlmIGxbMl0gPT0gTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICB0YXJnZXRfcCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBUcnVlKQotICAgICAgICAgICAgdGFyZ2V0X2wgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgRmFsc2UpCi0KLSAgICAgICAgICAgIGlmIGxbMl0gIT0gRmFsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXJnZXRfcCwgdGFyZ2V0X2wpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzJdLCB0YXJnZXRfcFtsZW4oc2VsZi5yb290KTpdKQotCi0gICAgZGVmIHRlc3RfcGh5cyhzZWxmKToKLSAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LU19QSFlTOgotICAgICAgICAgICAgdGFyZ2V0X3AgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgVHJ1ZSkKLSAgICAgICAgICAgIHRhcmdldF9sID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIEZhbHNlKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMV0sIHRhcmdldF9wW2xlbihzZWxmLnJvb3QpOl0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMl0sIHRhcmdldF9sW2xlbihzZWxmLnJvb3QpOl0pCi0KLSAgICBkZWYgdGVzdF9sb29wKHNlbGYpOgotICAgICAgICBmb3IgZSBpbiBzZWxmLkVYQ0VQVElPTlM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE9TRXJyb3IsIHInXFtFcnJubyAldVxdJyAlIGVbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmVhbHBhdGgsIGVbMF0sIEZhbHNlLCBGYWxzZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3R5cGVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdHlwZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZTI3NDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdHlwZXMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gb2UubWFrZXR5cGUgaW1wb3J0IGNyZWF0ZQotCi1jbGFzcyBUZXN0Qm9vbGVhblR5cGUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNyZWF0ZSwgJycsICdib29sZWFuJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3JlYXRlLCAnZm9vJywgJ2Jvb2xlYW4nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNyZWF0ZSwgb2JqZWN0KCksICdib29sZWFuJykKLQotICAgIGRlZiB0ZXN0X3RydWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3knLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd5ZXMnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCcxJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndCcsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3RydWUnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCdUUlVFJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndHJ1RScsICdib29sZWFuJykpCi0KLSAgICBkZWYgdGVzdF9mYWxzZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ24nLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnbm8nLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnMCcsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2ZhbHNlJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ0ZBTFNFJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2ZhTHNlJywgJ2Jvb2xlYW4nKSkKLQotICAgIGRlZiB0ZXN0X2Jvb2xfZXF1YWxpdHkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGUoJ3knLCAnYm9vbGVhbicpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNyZWF0ZSgneScsICdib29sZWFuJyksIEZhbHNlKQotCi1jbGFzcyBUZXN0TGlzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydExpc3RFcXVhbChzZWxmLCB2YWx1ZSwgdmFsaWQsIHNlcD1Ob25lKToKLSAgICAgICAgb2JqID0gY3JlYXRlKHZhbHVlLCAnbGlzdCcsIHNlcGFyYXRvcj1zZXApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLCB2YWxpZCkKLSAgICAgICAgaWYgc2VwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouc2VwYXJhdG9yLCBzZXApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG9iaiksIG9iai5zZXBhcmF0b3Iuam9pbihvYmopKQotCi0gICAgZGVmIHRlc3RfbGlzdF9ub3NlcChzZWxmKToKLSAgICAgICAgdGVzdGxpc3QgPSBbJ2FscGhhJywgJ2JldGEnLCAndGhldGEnXQotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEgYmV0YSB0aGV0YScsIHRlc3RsaXN0KQotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEgIGJldGFcdHRoZXRhJywgdGVzdGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYScsIFsnYWxwaGEnXSkKLQotICAgIGRlZiB0ZXN0X2xpc3RfdXNlcnNlcChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2ZvbzpiYXInLCBbJ2ZvbycsICdiYXInXSwgJzonKQotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnZm9vOmJhcjpiYXonLCBbJ2ZvbycsICdiYXInLCAnYmF6J10sICc6JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3V0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZWIxMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdXRpbHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gb2UudXRpbHMgaW1wb3J0IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtLCB0cmltX3ZlcnNpb24KLQotY2xhc3MgVGVzdFBhY2thZ2VzRmlsdGVyT3V0U3lzdGVtKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9maWx0ZXIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IHRoYXQgb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0gd29ya3MuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgYmIKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IGltcG9ydCBiYiIpCi0KLSAgICAgICAgZCA9IGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KCkKLSAgICAgICAgZC5zZXRWYXIoIlBOIiwgImZvbyIpCi0KLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZG9jIGZvby1kZXYiKQotICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbXSkKLQotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kb2MgZm9vLWRhdGEgZm9vLWRldiIpCi0gICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFsiZm9vLWRhdGEiXSkKLQotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1sb2NhbGUtZW4tZ2IiKQotICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbXSkKLQotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kYXRhIGZvby1sb2NhbGUtZW4tZ2IiKQotICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbImZvby1kYXRhIl0pCi0KLQotY2xhc3MgVGVzdFRyaW1WZXJzaW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF92ZXJzaW9uX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgdHJpbV92ZXJzaW9uKE5vbmUsIDIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIHRyaW1fdmVyc2lvbigoMSwgMiwgMyksIDIpCi0KLSAgICBkZWYgdGVzdF9udW1fZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCIxLjIuMyIsIDApCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICB0cmltX3ZlcnNpb24oIjEuMi4zIiwgLTEpCi0KLSAgICBkZWYgdGVzdF92YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMSksICIxIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMiksICIxLjIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAzKSwgIjEuMi4zIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgNCksICIxLjIuMyIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZXNjcmlwdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZXNjcmlwdHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NTQ3ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VzY3JpcHRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEuc2VsZnRlc3QuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IENvbW1hbmQsIHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBCdWlsZGhpc3RvcnlEaWZmVGVzdHMoQnVpbGRoaXN0b3J5QmFzZSk6Ci0KLSAgICBAdGVzdGNhc2UoMjk1KQotICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9kaWZmKHNlbGYpOgotICAgICAgICB0YXJnZXQgPSAneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScKLSAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMVwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPVRydWUpCi0gICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjBcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPVRydWUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYnVpbGRoaXN0b3J5LWRpZmYgLXAgJXMiICUgZ2V0X2JiX3ZhcignQlVJTERISVNUT1JZX0RJUicpKQotICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnUFIgY2hhbmdlZCBmcm9tICJyMSIgdG8gInIwIicKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkX291dHB1dCBpbiByZXN1bHQub3V0cHV0LCBtc2c9IkRpZCBub3QgZmluZCBleHBlY3RlZCBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wa2dkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcGtnZGF0YS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY5YzNjOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wa2dkYXRhLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgZm5tYXRjaAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgT2VQa2dkYXRhVXRpbFRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBwa2dkYXRhCi0gICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzZWxmdGVzdCIpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nIGJpdGJha2UgdG8gZ2VuZXJhdGUgcGtnZGF0YScpCi0gICAgICAgIGJpdGJha2UoJ2J1c3lib3ggemxpYiBtNCcpCi0KLSAgICBAdGVzdGNhc2UoMTIwMykKLSAgICBkZWYgdGVzdF9sb29rdXBfcGtnKHNlbGYpOgotICAgICAgICAjIEZvcndhcmQgdGVzdHMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAiemxpYiBidXN5Ym94IicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxXG5idXN5Ym94JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyB6bGliLWRldicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnotZGV2JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCi0gICAgICAgICMgUmV2ZXJzZSB0ZXN0cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yICJsaWJ6MSBidXN5Ym94IicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWJcbmJ1c3lib3gnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yIGxpYnotZGV2JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYi1kZXYnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKLQotICAgIEB0ZXN0Y2FzZSgxMjA1KQotICAgIGRlZiB0ZXN0X3JlYWRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUE4gbGliejEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQS0cgbGliejEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUEtHU0laRSBtNCcpCi0gICAgICAgIHBrZ3NpemUgPSBpbnQocmVzdWx0Lm91dHB1dC5zdHJpcCgpKQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocGtnc2l6ZSwgMSwgIlNpemUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExOTgpCi0gICAgZGVmIHRlc3RfZmluZF9wYXRoKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL2xpYi9saWJ6LnNvLjEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliOiAvbGliL2xpYnouc28uMScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvdXNyL2Jpbi9tNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ200OiAvdXNyL2Jpbi9tNCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvbm90L2V4aXN0JywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVW5hYmxlIHRvIGZpbmQgYW55IHBhY2thZ2UgcHJvZHVjaW5nIHBhdGggL25vdC9leGlzdCcpCi0KLSAgICBAdGVzdGNhc2UoMTIwNCkKLSAgICBkZWYgdGVzdF9sb29rdXBfcmVjaXBlKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlICJsaWJ6LXN0YXRpY2RldiBidXN5Ym94IicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWJcbmJ1c3lib3gnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlIGxpYnotZGJnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQotCi0gICAgQHRlc3RjYXNlKDEyMDIpCi0gICAgZGVmIHRlc3RfbGlzdF9wa2dzKHNlbGYpOgotICAgICAgICAjIE5vIGFyZ3VtZW50cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MnKQotICAgICAgICBwa2dsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgTm8gcGtnc3BlYywgcnVudGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXInKQotICAgICAgICBwa2dsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWInKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGtnbGlzdC5yZW1vdmUoJ3psaWItcHRlc3QnKSAjIGluIGNhc2UgcHRlc3QgaXMgZGlzYWJsZWQKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWyd6bGliJywgJ3psaWItZGJnJywgJ3psaWItZGV2JywgJ3psaWItZG9jJywgJ3psaWItc3RhdGljZGV2J10sICJQYWNrYWdlcyBsaXN0ZWQgYWZ0ZXIgcmVtb3ZlOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCwgcnVudGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtcicpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwa2dsaXN0LnJlbW92ZSgnbGliei1wdGVzdCcpICMgaW4gY2FzZSBwdGVzdCBpcyBkaXNhYmxlZAotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ2xpYnotZGJnJywgJ2xpYnotZGV2JywgJ2xpYnotZG9jJywgJ2xpYnotc3RhdGljZGV2JywgJ2xpYnoxJ10sICJQYWNrYWdlcyBsaXN0ZWQgYWZ0ZXIgcmVtb3ZlOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgdW5wYWNrYWdlZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtdScpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCB1bnBhY2thZ2VkLCBydW50aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC11IC1yJykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotbG9jYWxlJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHBrZ3NwZWMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgIiotZCoiJykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWyd6bGliLWRiZycsICd6bGliLWRldicsICd6bGliLWRvYyddLCAiUGFja2FnZXMgbGlzdGVkOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgcGtnc3BlYywgcnVudGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtciAiKi1kKiInKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ2xpYnotZGJnJywgJ2xpYnotZGV2JywgJ2xpYnotZG9jJ10sICJQYWNrYWdlcyBsaXN0ZWQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTIwMSkKLSAgICBkZWYgdGVzdF9saXN0X3BrZ19maWxlcyhzZWxmKToKLSAgICAgICAgZGVmIHNwbGl0b3V0cHV0KG91dHB1dCk6Ci0gICAgICAgICAgICBmaWxlcyA9IHt9Ci0gICAgICAgICAgICBjdXJwa2cgPSBOb25lCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnXHQnKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN1cnBrZywgJ1VuZXhwZWN0ZWQgbm9uLXBhY2thZ2UgbGluZTpcbiVzJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzW2N1cnBrZ10uYXBwZW5kKGxpbmUuc3RyaXAoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZS5yc3RyaXAoKS5lbmRzd2l0aCgnOicpLCAnSW52YWxpZCBwYWNrYWdlIGxpbmUgaW4gb3V0cHV0OlxuJXMnICUgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgY3VycGtnID0gbGluZS5zcGxpdCgnOicpWzBdCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzW2N1cnBrZ10gPSBbXQotICAgICAgICAgICAgcmV0dXJuIGZpbGVzCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ2Jhc2VfbGliZGlyJywgJ2xpYmRpcicsICdpbmNsdWRlZGlyJywgJ21hbmRpciddKQotICAgICAgICBiYXNlX2xpYmRpciA9IGJiX3ZhcnNbJ2Jhc2VfbGliZGlyJ10KLSAgICAgICAgbGliZGlyID0gYmJfdmFyc1snbGliZGlyJ10KLSAgICAgICAgaW5jbHVkZWRpciA9IGJiX3ZhcnNbJ2luY2x1ZGVkaXInXQotICAgICAgICBtYW5kaXIgPSBiYl92YXJzWydtYW5kaXInXQotICAgICAgICAjIFRlc3QgcmVjaXBlLXNwYWNlIHBhY2thZ2UgbmFtZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyB6bGliLWRldiB6bGliLWRvYycpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCi0gICAgICAgICMgVGVzdCBydW50aW1lIHBhY2thZ2UgbmFtZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtciBsaWJ6MSBsaWJ6LWRldicpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlc1snbGliejEnXSksIDEpCi0gICAgICAgIGxpYnNwZWMgPSBvcy5wYXRoLmpvaW4oYmFzZV9saWJkaXIsICdsaWJ6LnNvLjEuKicpCi0gICAgICAgIGZvdW5kID0gRmFsc2UKLSAgICAgICAgZm9yIGZpbGVpdGVtIGluIGZpbGVzWydsaWJ6MSddOgotICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoY2FzZShmaWxlaXRlbSwgbGlic3BlYyk6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnQ291bGQgbm90IGZpbmQgemxpYiBsaWJyYXJ5IGZpbGUgJXMgaW4gbGliejEgcGFja2FnZSBmaWxlIGxpc3Q6ICVzJyAlIChsaWJzcGVjLCBmaWxlc1snbGliejEnXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCi0gICAgICAgICMgVGVzdCByZWNpcGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYicpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd6bGliLWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICAjIChpZ25vcmUgcHRlc3QsIG1pZ2h0IG5vdCBiZSB0aGVyZSBkZXBlbmRpbmcgb24gY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWyd6bGliLXN0YXRpY2RldiddKQotICAgICAgICAjIFRlc3QgcmVjaXBlLCBydW50aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXInKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCi0gICAgICAgICMgVGVzdCByZWNpcGUsIHVucGFja2FnZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtdScpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snemxpYi1zdGF0aWNkZXYnXSkKLSAgICAgICAgIyBUZXN0IHJlY2lwZSwgcnVudGltZSwgdW5wYWNrYWdlZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC1yIC11JykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ2xpYnotZG9jJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snbGliei1zdGF0aWNkZXYnXSkKLQotICAgIEB0ZXN0Y2FzZSgxMjAwKQotICAgIGRlZiB0ZXN0X2dsb2Ioc2VsZik6Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncGtnZGF0YXFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBwa2dsaXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAncGtnbGlzdCcpCi0gICAgICAgIHdpdGggb3Blbihwa2dsaXN0ZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnbGliejFcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdidXN5Ym94XG4nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLWRldiInICUgcGtnbGlzdGZpbGUpCi0gICAgICAgIGRlc2lyZWRyZXN1bHQgPSBbJ2xpYnotZGV2JywgJ2J1c3lib3gtZGV2J10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKSwgc29ydGVkKGRlc2lyZWRyZXN1bHQpKQotICAgICAgICAjIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBlcnJvciAoYmVjYXVzZSB3aGVuIHdlIHVzZSB0aGlzIGR1cmluZyByb290ZnMgY29uc3RydWN0aW9uLCBzb21ldGltZXMgdGhlIGNvbXBsZW1lbnRhcnkgcGFja2FnZSB3b24ndCBleGlzdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1ub25leGlzdGVudCInICUgcGtnbGlzdGZpbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJycpCi0gICAgICAgICMgVGVzdCBleGNsdWRlIG9wdGlvbgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLWRldiAqLWRiZyIgLXggIl5saWJ6IicgJSBwa2dsaXN0ZmlsZSkKLSAgICAgICAgcmVzdWx0bGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWRldicsIHJlc3VsdGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotZGJnJywgcmVzdWx0bGlzdCkKLQotICAgIEB0ZXN0Y2FzZSgxMjA2KQotICAgIGRlZiB0ZXN0X3NwZWNpZnlfcGtnZGF0YWRpcihzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgLXAgJXMgbG9va3VwLXBrZyB6bGliJyAlIGdldF9iYl92YXIoJ1BLR0RBVEFfRElSJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3Byc2VydmljZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3Byc2VydmljZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRkNDE5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wcnNlcnZpY2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBkYXRldGltZQotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotZnJvbSBvZXFhLnV0aWxzLm5ldHdvcmsgaW1wb3J0IGdldF9mcmVlX3BvcnQKLQotY2xhc3MgQml0YmFrZVByVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMucGtnZGF0YV9kaXIgPSBnZXRfYmJfdmFyKCdQS0dEQVRBX0RJUicpCi0KLSAgICBkZWYgZ2V0X3ByX3ZlcnNpb24oc2VsZiwgcGFja2FnZV9uYW1lKToKLSAgICAgICAgcGFja2FnZV9kYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wa2dkYXRhX2RpciwgJ3J1bnRpbWUnLCBwYWNrYWdlX25hbWUpCi0gICAgICAgIHBhY2thZ2VfZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUocGFja2FnZV9kYXRhX2ZpbGUpCi0gICAgICAgIGZpbmRfcHIgPSByZS5zZWFyY2goIlBLR1I6IHJbMC05XStcLihbMC05XSspIiwgcGFja2FnZV9kYXRhKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9wciwgIk5vIFBLRyByZXZpc2lvbiBmb3VuZCBpbiAlcyIgJSBwYWNrYWdlX2RhdGFfZmlsZSkKLSAgICAgICAgcmV0dXJuIGludChmaW5kX3ByLmdyb3VwKDEpKQotCi0gICAgZGVmIGdldF90YXNrX3N0YW1wKHNlbGYsIHBhY2thZ2VfbmFtZSwgcmVjaXBlX3Rhc2spOgotICAgICAgICBzdGFtcGRhdGEgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRhcmdldD1wYWNrYWdlX25hbWUpLnNwbGl0KCcvJykKLSAgICAgICAgcHJlZml4ID0gc3RhbXBkYXRhWy0xXQotICAgICAgICBwYWNrYWdlX3N0YW1wc19wYXRoID0gIi8iLmpvaW4oc3RhbXBkYXRhWzotMV0pCi0gICAgICAgIHN0YW1wcyA9IFtdCi0gICAgICAgIGZvciBzdGFtcCBpbiBvcy5saXN0ZGlyKHBhY2thZ2Vfc3RhbXBzX3BhdGgpOgotICAgICAgICAgICAgZmluZF9zdGFtcCA9IHJlLm1hdGNoKCIlc1wuJXNcLihbYS16MC05XXszMn0pIiAlIChyZS5lc2NhcGUocHJlZml4KSwgcmVjaXBlX3Rhc2spLCBzdGFtcCkKLSAgICAgICAgICAgIGlmIGZpbmRfc3RhbXA6Ci0gICAgICAgICAgICAgICAgc3RhbXBzLmFwcGVuZChmaW5kX3N0YW1wLmdyb3VwKDEpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihzdGFtcHMpID09IDAsIG1zZz0iQ291bmQgbm90IGZpbmQgc3RhbXAgZm9yIHRhc2sgJXMgZm9yIHJlY2lwZSAlcyIgJSAocmVjaXBlX3Rhc2ssIHBhY2thZ2VfbmFtZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKHN0YW1wcykgPiAxLCBtc2c9IkZvdW5kIG11bHRpcGxlICVzIHN0YW1wcyBmb3IgdGhlICVzIHJlY2lwZSBpbiB0aGUgJXMgZGlyZWN0b3J5LiIgJSAocmVjaXBlX3Rhc2ssIHBhY2thZ2VfbmFtZSwgcGFja2FnZV9zdGFtcHNfcGF0aCkpCi0gICAgICAgIHJldHVybiBzdHIoc3RhbXBzWzBdKQotCi0gICAgZGVmIGluY3JlbWVudF9wYWNrYWdlX3ByKHNlbGYsIHBhY2thZ2VfbmFtZSk6Ci0gICAgICAgIGluY19kYXRhID0gImRvX3BhY2thZ2VfYXBwZW5kKCkge1xuICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fdGVzdF9wcnNlcnYnLCBkKVxufVxuZG9fdGVzdF9wcnNlcnYoKSB7XG5lY2hvIFwiVGhlIGN1cnJlbnQgZGF0ZSBpczogJXNcIlxufSIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYyhwYWNrYWdlX25hbWUsIGluY19kYXRhKQotICAgICAgICByZXMgPSBiaXRiYWtlKHBhY2thZ2VfbmFtZSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMocGFja2FnZV9uYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDAsIG1zZz1yZXMub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoIk5PVEU6IFN0YXJ0ZWQgUFJTZXJ2ZXIgd2l0aCBEQmZpbGUiIGluIHJlcy5vdXRwdXQsIG1zZz1yZXMub3V0cHV0KQotCi0gICAgZGVmIGNvbmZpZ19wcl90ZXN0cyhzZWxmLCBwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZT0ncnBtJywgcHJfc29ja2V0PSdsb2NhbGhvc3Q6MCcpOgotICAgICAgICBjb25maWdfcGFja2FnZV9kYXRhID0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlXyVzIicgJSBwYWNrYWdlX3R5cGUKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnX3BhY2thZ2VfZGF0YSkKLSAgICAgICAgY29uZmlnX3NlcnZlcl9kYXRhID0gJ1BSU0VSVl9IT1NUID0gIiVzIicgJSBwcl9zb2NrZXQKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zZXJ2ZXJfZGF0YSkKLQotICAgIGRlZiBydW5fdGVzdF9wcl9zZXJ2aWNlKHNlbGYsIHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlPSdycG0nLCB0cmFja190YXNrPSdkb19wYWNrYWdlJywgcHJfc29ja2V0PSdsb2NhbGhvc3Q6MCcpOgotICAgICAgICBzZWxmLmNvbmZpZ19wcl90ZXN0cyhwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZSwgcHJfc29ja2V0KQotCi0gICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQotICAgICAgICBwcl8xID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCi0gICAgICAgIHN0YW1wXzEgPSBzZWxmLmdldF90YXNrX3N0YW1wKHBhY2thZ2VfbmFtZSwgdHJhY2tfdGFzaykKLQotICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgcHJfMiA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQotICAgICAgICBzdGFtcF8yID0gc2VsZi5nZXRfdGFza19zdGFtcChwYWNrYWdlX25hbWUsIHRyYWNrX3Rhc2spCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByXzIgLSBwcl8xID09IDEsICJTdGVwIGJldHdlZW4gc2FtZSBwa2cuIHJldmlzaW9uIGlzIGdyZWF0ZXIgdGhhbiAxIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wXzEgIT0gc3RhbXBfMiwgIkRpZmZlcmVudCBwa2cgcmV2LiBidXQgc2FtZSBzdGFtcDogJXMiICUgc3RhbXBfMSkKLQotICAgIGRlZiBydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KHNlbGYsIHBhY2thZ2VfbmFtZSwgcmVwbGFjZV9jdXJyZW50X2RiPVRydWUpOgotICAgICAgICBzZWxmLmNvbmZpZ19wcl90ZXN0cyhwYWNrYWdlX25hbWUpCi0KLSAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCi0gICAgICAgIHByXzEgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKLQotICAgICAgICBleHBvcnRlZF9kYl9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdleHBvcnQuaW5jJykKLSAgICAgICAgZXhwb3J0X3Jlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1wcnNlcnYtdG9vbCBleHBvcnQgJXMiICUgZXhwb3J0ZWRfZGJfcGF0aCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cG9ydF9yZXN1bHQuc3RhdHVzLCAwLCBtc2c9IlBSIFNlcnZpY2UgZGF0YWJhc2UgZXhwb3J0IGZhaWxlZDogJXMiICUgZXhwb3J0X3Jlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgaWYgcmVwbGFjZV9jdXJyZW50X2RiOgotICAgICAgICAgICAgY3VycmVudF9kYl9wYXRoID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ1BFUlNJU1RFTlRfRElSJyksICdwcnNlcnYuc3FsaXRlMycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoY3VycmVudF9kYl9wYXRoKSwgbXNnPSJQYXRoIHRvIGN1cnJlbnQgUFIgU2VydmljZSBkYXRhYmFzZSBpcyBpbnZhbGlkOiAlcyIgJSBjdXJyZW50X2RiX3BhdGgpCi0gICAgICAgICAgICBvcy5yZW1vdmUoY3VycmVudF9kYl9wYXRoKQotCi0gICAgICAgIGltcG9ydF9yZXN1bHQgPSBydW5DbWQoImJpdGJha2UtcHJzZXJ2LXRvb2wgaW1wb3J0ICVzIiAlIGV4cG9ydGVkX2RiX3BhdGgsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgb3MucmVtb3ZlKGV4cG9ydGVkX2RiX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X3Jlc3VsdC5zdGF0dXMsIDAsIG1zZz0iUFIgU2VydmljZSBkYXRhYmFzZSBpbXBvcnQgZmFpbGVkOiAlcyIgJSBpbXBvcnRfcmVzdWx0Lm91dHB1dCkKLQotICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgcHJfMiA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcl8yIC0gcHJfMSA9PSAxLCAiU3RlcCBiZXR3ZWVuIHNhbWUgcGtnLiByZXZpc2lvbiBpcyBncmVhdGVyIHRoYW4gMSIpCi0KLSAgICBAdGVzdGNhc2UoOTMwKQotICAgIGRlZiB0ZXN0X2ltcG9ydF9leHBvcnRfcmVwbGFjZV9kYihzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KCdtNCcpCi0KLSAgICBAdGVzdGNhc2UoOTMxKQotICAgIGRlZiB0ZXN0X2ltcG9ydF9leHBvcnRfb3ZlcnJpZGVfZGIoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydCgnbTQnLCByZXBsYWNlX2N1cnJlbnRfZGI9RmFsc2UpCi0KLSAgICBAdGVzdGNhc2UoOTMyKQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfcnBtX2FyY2hfZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ3JwbScsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSg5MzQpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9kZWJfYXJjaF9kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAnZGViJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDkzMykKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2lwa19hcmNoX2RlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdpcGsnLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoOTM1KQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfcnBtX2FyY2hfaW5kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdycG0nLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoOTM3KQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfZGViX2FyY2hfaW5kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdkZWInLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoOTM2KQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfaXBrX2FyY2hfaW5kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdpcGsnLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoMTQxOSkKLSAgICBkZWYgdGVzdF9zdG9wcGluZ19wcnNlcnZpY2VfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcG9ydCA9IGdldF9mcmVlX3BvcnQoKQotCi0gICAgICAgIHJ1bkNtZCgnYml0YmFrZS1wcnNlcnYgLS1ob3N0IGxvY2FsaG9zdCAtLXBvcnQgJXMgLS1sb2dsZXZlbD1ERUJVRyAtLXN0YXJ0JyAlIHBvcnQpCi0gICAgICAgIHJldCA9IHJ1bkNtZCgnYml0YmFrZS1wcnNlcnYgLS1ob3N0IGxvY2FsaG9zdCAtLXBvcnQgJXMgLS1sb2dsZXZlbD1ERUJVRyAtLXN0b3AnICUgcG9ydCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldC5zdGF0dXMsIDApCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3JlY2lwZXRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9yZWNpcGV0b29sLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzU1YTVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3JlY2lwZXRvb2wucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OTUgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdXJsbGliLnBhcnNlCi0KLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzLCBjcmVhdGVfdGVtcF9sYXllcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1mcm9tIG9lcWEuc2VsZnRlc3QgaW1wb3J0IGRldnRvb2wKLQotCi10ZW1wbGF5ZXJkaXIgPSBOb25lCi0KLQotZGVmIHNldFVwTW9kdWxlKCk6Ci0gICAgZ2xvYmFsIHRlbXBsYXllcmRpcgotICAgIHRlbXBsYXllcmRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29scWEnKQotICAgIGNyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgJ3NlbGZ0ZXN0cmVjaXBldG9vbCcpCi0gICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyKQotCi0KLWRlZiB0ZWFyRG93bk1vZHVsZSgpOgotICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIHRlbXBsYXllcmRpcikKLQotCi1jbGFzcyBSZWNpcGV0b29sQmFzZShkZXZ0b29sLkRldnRvb2xCYXNlKToKLQotICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgotICAgICAgICBzZWxmLnRlbXBsYXllcmRpciA9IHRlbXBsYXllcmRpcgotICAgICAgICBzZWxmLnRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRlbXBkaXIpCi0gICAgICAgIHNlbGYudGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAndGVzdGZpbGUnKQotICAgICAgICB3aXRoIG9wZW4oc2VsZi50ZXN0ZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnVGVzdCBmaWxlXG4nKQotCi0gICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6Ci0gICAgICAgIHJ1bkNtZCgncm0gLXJmICVzL3JlY2lwZXMtKicgJSBzZWxmLnRlbXBsYXllcmRpcikKLQotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKHNlbGYsIGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKLQotICAgICAgICAjIENoZWNrIHRoZSBiYmFwcGVuZCB3YXMgY3JlYXRlZCBhbmQgYXBwbGllcyBwcm9wZXJseQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQotCi0gICAgICAgICMgQ2hlY2sgdGhlIGJiYXBwZW5kIGNvbnRlbnRzCi0gICAgICAgIGlmIGV4cGVjdGVkbGluZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpLCAiRXhwZWN0ZWQgbGluZXMgYXJlIG5vdCBwcmVzZW50IGluICVzIiAlIGJiYXBwZW5kZmlsZSkKLQotICAgICAgICAjIENoZWNrIGZpbGUgd2FzIGNvcGllZAotICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgdGVzdHJlY2lwZSkKLSAgICAgICAgZm9yIGV4cGVjdGVkZmlsZSBpbiBleHBlY3RlZGZpbGVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihmaWxlc2RpciwgZXhwZWN0ZWRmaWxlKSksICdFeHBlY3RlZCBmaWxlICVzIHRvIGJlIGNvcGllZCBuZXh0IHRvIGJiYXBwZW5kLCBidXQgaXQgd2FzblwndCcgJSBleHBlY3RlZGZpbGUpCi0KLSAgICAgICAgIyBDaGVjayBubyBvdGhlciBmaWxlcyBjcmVhdGVkCi0gICAgICAgIGNyZWF0ZWRmaWxlcyA9IFtdCi0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGZpbGVzZGlyKToKLSAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGNyZWF0ZWRmaWxlcy5hcHBlbmQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBmKSwgZmlsZXNkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc29ydGVkKGNyZWF0ZWRmaWxlcyksIHNvcnRlZChleHBlY3RlZGZpbGVzKSkKLQotICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlLCByZXN1bHQub3V0cHV0Ci0KLQotY2xhc3MgUmVjaXBldG9vbFRlc3RzKFJlY2lwZXRvb2xCYXNlKToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gc2hsaWJzL3BrZ2RhdGEKLSAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInNlbGZ0ZXN0IikKLSAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgYml0YmFrZSB0byBnZW5lcmF0ZSBwa2dkYXRhJykKLSAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZWRhdGEgYmFzZS1maWxlcyBjb3JldXRpbHMgYnVzeWJveCBzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydDT1JFQkFTRScsICdCQlBBVEgnXSkKLSAgICAgICAgY2xzLmNvcmViYXNlID0gYmJfdmFyc1snQ09SRUJBU0UnXQotICAgICAgICBjbHMuYmJwYXRoID0gYmJfdmFyc1snQkJQQVRIJ10KLQotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgZXhwZWN0ZWRmaWxlcyk6Ci0gICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCi0KLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbChzZWxmLCBkZXN0ZmlsZSwgbmV3ZmlsZSwgY2hlY2tlcnJvcik6Ci0gICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBkZXN0ZmlsZSwgbmV3ZmlsZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdDb21tYW5kICIlcyIgc2hvdWxkIGhhdmUgZmFpbGVkIGJ1dCBkaWRuXCd0JyAlIGNtZCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZm9yIGVycm9yc3RyIGluIGNoZWNrZXJyb3I6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc3RyLCByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExNzcpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2Jhc2ljKHNlbGYpOgotICAgICAgICAjIEJhc2ljIHRlc3QKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2Jhc2UtZmlsZXMnLCAnL2V0Yy9tb3RkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnbW90ZCddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4MykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW52YWxpZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHNvbWUgY29tbWFuZHMgdGhhdCBzaG91bGQgZXJyb3IKLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZXRjL3Bhc3N3ZCcsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9ldGMvcGFzc3dkIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCcsICd1c2VyYWRkJywgJ2V4dHJhdXNlcnMnXSkKLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZXRjL3RpbWVzdGFtcCcsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9ldGMvdGltZXN0YW1wIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCddKQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9kZXYvY29uc29sZScsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IC9kZXYvY29uc29sZSBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTc2KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hbHRlcm5hdGl2ZXMoc2VsZik6Ci0gICAgICAgICMgTm93IHRyeSB3aXRoIGEgZmlsZSB3ZSBrbm93IHNob3VsZCBiZSBhbiBhbHRlcm5hdGl2ZQotICAgICAgICAjICh0aGlzIGlzIHZlcnkgbXVjaCBhIGZha2UgZXhhbXBsZSwgYnV0IG9uZSB3ZSBrbm93IGlzIHJlbGlhYmx5IGFuIGFsdGVybmF0aXZlKQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9iaW4vbHMnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiBGaWxlIC9iaW4vbHMgaXMgYW4gYWx0ZXJuYXRpdmUgcG9zc2libHkgcHJvdmlkZWQgYnkgdGhlIGZvbGxvd2luZyByZWNpcGVzOicsICdjb3JldXRpbHMnLCAnYnVzeWJveCddKQotICAgICAgICAjIE5lZWQgYSB0ZXN0IGZpbGUgLSBzaG91bGQgYmUgZXhlY3V0YWJsZQotICAgICAgICB0ZXN0ZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5jb3JlYmFzZSwgJ29lLWluaXQtYnVpbGQtZW52JykKLSAgICAgICAgdGVzdGZpbGUybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly8lcyJcbicgJSB0ZXN0ZmlsZTJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJXMgJHtEfSR7YmFzZV9iaW5kaXJ9L2xzXG4nICUgdGVzdGZpbGUybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnY29yZXV0aWxzJywgJy9iaW4vbHMnLCB0ZXN0ZmlsZTIsICctciBjb3JldXRpbHMnLCBleHBlY3RlZGxpbmVzLCBbdGVzdGZpbGUybmFtZV0pCi0gICAgICAgICMgTm93IHRyeSBiYmFwcGVuZGluZyB0aGUgc2FtZSBmaWxlIGFnYWluLCBjb250ZW50cyBzaG91bGQgbm90IGNoYW5nZQotICAgICAgICBiYmFwcGVuZGZpbGUsIF8gPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdjb3JldXRpbHMnLCAnL2Jpbi9scycsIHNlbGYudGVzdGZpbGUsICctciBjb3JldXRpbHMnLCBleHBlY3RlZGxpbmVzLCBbdGVzdGZpbGUybmFtZV0pCi0gICAgICAgICMgQnV0IGZpbGUgc2hvdWxkIGhhdmUKLSAgICAgICAgY29waWVkZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgJ2NvcmV1dGlscycsIHRlc3RmaWxlMm5hbWUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGlmZiAtcSAlcyAlcycgJSAodGVzdGZpbGUyLCBjb3BpZWRmaWxlKSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdOZXcgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBidXQgd2FzIG5vdCAlcycgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExNzgpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2JpbmFyeShzZWxmKToKLSAgICAgICAgIyBUcnkgYXBwZW5kaW5nIGEgYmluYXJ5IGZpbGUKLSAgICAgICAgIyAvYmluL2xzIGNhbiBiZSBhIHN5bWxpbmsgdG8gL3Vzci9iaW4vbHMKLSAgICAgICAgbHMgPSBvcy5wYXRoLnJlYWxwYXRoKCIvYmluL2xzIikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL2Jpbi9scyAlcyAtciBjb3JldXRpbHMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBscykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6ICcsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lzIGEgYmluYXJ5JywgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTczKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGQoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NvbWV0aGluZycsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICAjIFRyeSBhZGRpbmcgYW5vdGhlciBmaWxlLCB0aGlzIHRpbWUgd2hlcmUgdGhlIHNvdXJjZSBmaWxlIGlzIGV4ZWN1dGFibGUKLSAgICAgICAgIyAoc28gd2UncmUgdGVzdGluZyB0aGF0LCBwbHVzIG1vZGlmeWluZyBhbiBleGlzdGluZyBiYmFwcGVuZCkKLSAgICAgICAgdGVzdGZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYuY29yZWJhc2UsICdvZS1pbml0LWJ1aWxkLWVudicpCi0gICAgICAgIHRlc3RmaWxlMm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlMikKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUgXFxcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIGZpbGU6Ly8lcyBcXFxuJyAlIHRlc3RmaWxlMm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyVzICR7RH0ke2RhdGFkaXJ9L3NjcmlwdG5hbWVcbicgJSB0ZXN0ZmlsZTJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc2NyaXB0bmFtZScsIHRlc3RmaWxlMiwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJywgdGVzdGZpbGUybmFtZV0pCi0KLSAgICBAdGVzdGNhc2UoMTE3NCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkX2JpbmRpcihzZWxmKToKLSAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlLCB0aGlzIHRpbWUgdG8gYSBsb2NhdGlvbiBzdWNoIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBleGVjdXRhYmxlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtiaW5kaXJ9L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtdGVzdGJpblxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL2Jpbi9zZWxmdGVzdC1yZWNpcGV0b29sLXRlc3RiaW4nLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExNzUpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZF9tYWNoaW5lKHNlbGYpOgotICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUsIHRoaXMgdGltZSB0byBhIGxvY2F0aW9uIHN1Y2ggdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGV4ZWN1dGFibGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJX2FwcGVuZF9teW1hY2hpbmUgPSAiIGZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmRfbXltYWNoaW5lKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zb21ldGhpbmcnLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZSAtbSBteW1hY2hpbmUnLCBleHBlY3RlZGxpbmVzLCBbJ215bWFjaGluZS90ZXN0ZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4NCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfb3JpZyhzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYW5kIGluIGRvX2luc3RhbGwgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE5MSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfdG9kaXIoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFuZCBpbiBkb19pbnN0YWxsIHdpdGggZGVzdGluYXRpb24gZGlyZWN0b3J5IHJhdGhlciB0aGFuIGZpbGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtdG9kaXInLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtdG9kaXInXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODcpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3JlbmFtZWQoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIHdpdGggYSBkaWZmZXJlbnQgbmFtZSB0byB0aGUgZGVzdGluYXRpb24gZmlsZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1yZW5hbWVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnZmlsZTEnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExOTApCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3N1YmRpcihzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgaW4gYSBzdWJkaXIKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc3ViZGlyXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc3ViZGlyJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODkpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3NyY19nbG9iKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhcyBhIGdsb2IKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc3JjLWdsb2JmaWxlXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc3JjLWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODEpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfZ2xvYihzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIGRvX2luc3RhbGwgYXMgYSBnbG9iCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1nbG9iZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4MikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF90b2Rpcl9nbG9iKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gZG9faW5zdGFsbCBhcyBhIGdsb2Igd2l0aCBkZXN0aW5hdGlvbiBhcyBhIGRpcmVjdG9yeQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LXRvZGlyLWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtdG9kaXItZ2xvYmZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODUpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3BhdGNoKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgYWRkZWQgYnkgYSBwYXRjaCBpbiBTUkNfVVJJCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7c3lzY29uZmRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXBhdGNoZWRcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvZXRjL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wYXRjaGVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmICdXQVJOSU5HOiAnIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYWRkLWZpbGUucGF0Y2gnLCBsaW5lLCAnVW5leHBlY3RlZCB3YXJuaW5nIGZvdW5kIGluIG91dHB1dDpcbiVzJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2ggd2FybmluZyBub3QgZm91bmQgaW4gb3V0cHV0OlxuJXMnICUgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODgpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3NjcmlwdChzZWxmKToKLSAgICAgICAgIyBOb3csIGEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBidXQgaW5zdGFsbGVkIGJ5IGEgc2NyaXB0IChzbyBubyBtZW50aW9uIGluIGRvX2luc3RhbGwpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXNjcmlwdGVkXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtc2NyaXB0ZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4MCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF9mdW5jKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW5zdGFsbGVkIGZyb20gYSBmdW5jdGlvbiBjYWxsZWQgYnkgZG9faW5zdGFsbAotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWZ1bmMnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1mdW5jJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg2KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9wb3N0aW5zdGFsbChzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGNyZWF0ZWQgYnkgYSBwb3N0aW5zdGFsbCBzY3JpcHQgKGFuZCBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiBpdCkKLSAgICAgICAgIyBGaXJzdCB0cnkgd2l0aG91dCBzcGVjaWZ5aW5nIHJlY2lwZQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0Jywgc2VsZi50ZXN0ZmlsZSwgWydGaWxlIC91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0IG1heSBiZSB3cml0dGVuIG91dCBpbiBhIHByZS9wb3N0aW5zdGFsbCBzY3JpcHQgb2YgdGhlIGZvbGxvd2luZyByZWNpcGVzOicsICdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnXSkKLSAgICAgICAgIyBOb3cgc3BlY2lmeSByZWNpcGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3RcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCcsIHNlbGYudGVzdGZpbGUsICctciBzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0KLSAgICBAdGVzdGNhc2UoMTE3OSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZXh0bGF5ZXIoc2VsZik6Ci0gICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgYmJhcHBlbmQgaW4gYSBsYXllciB0aGF0J3Mgbm90IGluIGJibGF5ZXJzLmNvbmYgYW5kIGhhcyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUKLSAgICAgICAgZXh0dGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2V4dGxheWVyJykKLSAgICAgICAgc2VsZi5fY3JlYXRlX3RlbXBfbGF5ZXIoZXh0dGVtcGxheWVyZGlyLCBGYWxzZSwgJ29lc2VsZnRlc3RleHRsYXllcicsIHJlY2lwZXBhdGhzcGVjPSdtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtKi8qJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyAlcycgJSAoZXh0dGVtcGxheWVyZGlyLCBzZWxmLnRlc3RmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgY3JlYXRlZGZpbGVzID0gW10KLSAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoZXh0dGVtcGxheWVyZGlyKToKLSAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGNyZWF0ZWRmaWxlcy5hcHBlbmQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBmKSwgZXh0dGVtcGxheWVyZGlyKSkKLSAgICAgICAgY3JlYXRlZGZpbGVzLnJlbW92ZSgnY29uZi9sYXllci5jb25mJykKLSAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFsnbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS5iYmFwcGVuZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjcmVhdGVkZmlsZXMpLCBzb3J0ZWQoZXhwZWN0ZWRmaWxlcykpCi0KLSAgICBAdGVzdGNhc2UoMTE5MikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfd2lsZGNhcmQoc2VsZik6Ci0KLSAgICAgICAgZGVmIHRyeV9hcHBlbmRmaWxlX3djKG9wdGlvbnMpOgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGFwcGVuZGZpbGUgJXMgL2V0Yy9wcm9maWxlICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgc2VsZi50ZXN0ZmlsZSwgb3B0aW9ucykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQotICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gTm9uZQotICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc2VsZi50ZW1wbGF5ZXJkaXIpOgotICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCcuYmJhcHBlbmQnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IGYKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBub3QgYmJhcHBlbmRmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gYmJhcHBlbmQgZmlsZSBjcmVhdGVkJykKLSAgICAgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzL3JlY2lwZXMtKicgJSBzZWxmLnRlbXBsYXllcmRpcikKLSAgICAgICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUKLQotICAgICAgICAjIENoZWNrIHdpdGhvdXQgd2lsZGNhcmQgb3B0aW9uCi0gICAgICAgIHJlY2lwZWZuID0gb3MucGF0aC5iYXNlbmFtZShnZXRfYmJfdmFyKCdGSUxFJywgJ2Jhc2UtZmlsZXMnKSkKLSAgICAgICAgZmlsZW5hbWUgPSB0cnlfYXBwZW5kZmlsZV93YygnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbmFtZSwgcmVjaXBlZm4ucmVwbGFjZSgnLmJiJywgJy5iYmFwcGVuZCcpKQotICAgICAgICAjIE5vdyBjaGVjayB3aXRoIHdpbGRjYXJkIG9wdGlvbgotICAgICAgICBmaWxlbmFtZSA9IHRyeV9hcHBlbmRmaWxlX3djKCctdycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW5hbWUsIHJlY2lwZWZuLnNwbGl0KCdfJylbMF0gKyAnXyUuYmJhcHBlbmQnKQotCi0gICAgQHRlc3RjYXNlKDExOTMpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGUoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wc3JjID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3NyY3RyZWUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wc3JjKQotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2xvZ3JvdGF0ZV8zLjEyLjMuYmInKQotICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMvZG93bmxvYWQvMy4xMi4zL2xvZ3JvdGF0ZS0zLjEyLjMudGFyLnh6JwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzIC14ICVzJyAlIChyZWNpcGVmaWxlLCBzcmN1cmksIHRlbXBzcmMpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0dQTHYyJwotICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2xvZ3JvdGF0ZS0ke1BWfS50YXIueHonCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVttZDVzdW1dJ10gPSAnYTU2MGM1N2ZhYzg3YzQ1YjJmYzE3NDA2Y2RmNzkyODgnCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVtzaGEyNTZzdW1dJ10gPSAnMmU2YTQwMWNhYzkwMjRkYjIyODgyOTdlM2JlMWE4YWI2MGU3NDAxYmE4ZTkxMjI1MjE4YWFmNGEyN2U4MmEwNycKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTk0KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdChzZWxmKToKLSAgICAgICAgaWYgJ3gxMScgbm90IGluIGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGVzdCByZXF1aXJlcyB4MTEgYXMgZGlzdHJvIGZlYXR1cmUnKQotICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHNobGlicy9wa2dkYXRhCi0gICAgICAgIGJpdGJha2UoJ2xpYnBuZyBwYW5nbyBsaWJ4MTEgbGlieGV4dCBqcGVnIGxpYmNoZWNrJykKLSAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnc3JjdHJlZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXBzcmMpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbGlibWF0Y2hib3guYmInKQotICAgICAgICBzcmN1cmkgPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGlibWF0Y2hib3gnCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3JlY2lwZXRvb2wnLCAnY3JlYXRlJywgJy1vJywgcmVjaXBlZmlsZSwgc3JjdXJpICsgIjtyZXY9OWY3Y2Y4ODk1YWUyZDM5YzQ2NWMwNGNjNzhlOTE4YzE1NzQyMDI2OSIsICcteCcsIHRlbXBzcmNdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSksICdyZWNpcGV0b29sIGRpZCBub3QgY3JlYXRlIHJlY2lwZSBmaWxlOyBvdXRwdXQ6XG4lcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdMR1BMdjIuMScKLSAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0JwotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKLSAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuMTErZ2l0JHtTUkNQVn0nCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gc3JjdXJpCi0gICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnbGliY2hlY2snLCAnbGlianBlZy10dXJibycsICdsaWJwbmcnLCAnbGlieDExJywgJ2xpYnhleHQnLCAncGFuZ28nXSkKLSAgICAgICAgaW5oZXJpdHMgPSBbJ2F1dG90b29scycsICdwa2djb25maWcnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgQHRlc3RjYXNlKDEzOTIpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfc2ltcGxlKHNlbGYpOgotICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQotICAgICAgICBwdiA9ICcxLjcuMy4wJwotICAgICAgICBzcmN1cmkgPSAnaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSVzLnRhci5iejInICUgcHYKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAlcyAtbyAlcycgJSAoc3JjdXJpLCB0ZW1wcmVjaXBlKSkKLSAgICAgICAgZGlybGlzdCA9IG9zLmxpc3RkaXIodGVtcHJlY2lwZSkKLSAgICAgICAgaWYgbGVuKGRpcmxpc3QpID4gMToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgncmVjaXBldG9vbCBjcmVhdGVkIG1vcmUgdGhhbiBqdXN0IG9uZSBmaWxlOyBvdXRwdXQ6XG4lc1xuZGlybGlzdDpcbiVzJyAlIChyZXN1bHQub3V0cHV0LCBzdHIoZGlybGlzdCkpKQotICAgICAgICBpZiBsZW4oZGlybGlzdCkgPCAxIG9yIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgZGlybGlzdFswXSkpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWNpcGV0b29sIGRpZCBub3QgY3JlYXRlIHJlY2lwZSBmaWxlOyBvdXRwdXQ6XG4lc1xuZGlybGlzdDpcbiVzJyAlIChyZXN1bHQub3V0cHV0LCBzdHIoZGlybGlzdCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcmxpc3RbMF0sICdzb2NhdF8lcy5iYicgJSBwdiwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydVbmtub3duJywgJ0dQTHYyJ10pCi0gICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gc2V0KFsnZmlsZTovL0NPUFlJTkcuT3BlblNTTDttZDU9NWM5YmNjYzc3ZjY3YTgzMjhlZjRlYmFmNDY4MTE2ZjQnLCAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJ10pCi0gICAgICAgICMgV2UgZG9uJ3QgY2hlY2sgREVQRU5EUyBzaW5jZSB0aGV5IGFyZSB2YXJpYWJsZSBmb3IgdGhpcyByZWNpcGUgZGVwZW5kaW5nIG9uIHdoYXQncyBpbiB0aGUgc3lzcm9vdAotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzcmN1cmkucmVwbGFjZShwdiwgJyR7UFZ9JykKLSAgICAgICAgaW5oZXJpdHMgPSBbJ2F1dG90b29scyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCBkaXJsaXN0WzBdKSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIEB0ZXN0Y2FzZSgxNDE4KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2NtYWtlKHNlbGYpOgotICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICduYXZpdF8wLjUuMC5iYicpCi0gICAgICAgIHNyY3VyaSA9ICdodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L25hdml0L3YwLjUuMC9uYXZpdC0wLjUuMC50YXIuZ3onCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydVbmtub3duJywgJ0dQTHYyJywgJ0xHUEx2MiddKQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L25hdml0L3Yke1BWfS9uYXZpdC0ke1BWfS50YXIuZ3onCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVttZDVzdW1dJ10gPSAnMjQyZjM5OGU5NzlhNmI4YzBmM2M4MDJiNjM0MzViNjgnCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSVtzaGEyNTZzdW1dJ10gPSAnMTMzNTM0ODFkN2ZjMDFhNGY2NGUzODVkZGE0NjBiNTE0OTYzNjZiYmEwZmQyY2M4NWE4OWEwNzQ3OTEwZTk0ZCcKLSAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydmcmVldHlwZScsICd6bGliJywgJ29wZW5zc2wnLCAnZ2xpYi0yLjAnLCAndmlydHVhbC9saWJnbCcsICd2aXJ0dWFsL2VnbCcsICdndGsrJywgJ2xpYnBuZycsICdsaWJzZGwnLCAnZnJlZWdsdXQnLCAnZGJ1cy1nbGliJ10pCi0gICAgICAgIGluaGVyaXRzID0gWydjbWFrZScsICdweXRob24tZGlyJywgJ2dldHRleHQnLCAncGtnY29uZmlnJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1YihzZWxmKToKLSAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIHNlZSBpZiBnaXRodWIgVVJMIG1hbmdsaW5nIHdvcmtzCi0gICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWVzb25fZ2l0LmJiJykKLSAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uO3Jldj0wLjMyLjAnCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3JlY2lwZXRvb2wnLCAnY3JlYXRlJywgJy1vJywgdGVtcHJlY2lwZSwgc3JjdXJpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0FwYWNoZS0yLjAnXSkKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uO3Byb3RvY29sPWh0dHBzJwotICAgICAgICBpbmhlcml0cyA9IFsnc2V0dXB0b29scyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWJfdGFyYmFsbChzZWxmKToKLSAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIGVuc3VyZSBnaXRodWIgVVJMIG1hbmdsaW5nIGRvZXNuJ3QgYXBwbHkgdG8gcmVsZWFzZSB0YXJiYWxscwotICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCi0gICAgICAgIHB2ID0gJzAuMzIuMCcKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWVzb25fJXMuYmInICUgcHYpCi0gICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8lcy9tZXNvbi0lcy50YXIuZ3onICUgKHB2LCBwdikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0FwYWNoZS0yLjAnXSkKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vbWVzb24tJHtQVn0udGFyLmd6JwotICAgICAgICBpbmhlcml0cyA9IFsnc2V0dXB0b29scyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRfaHR0cChzZWxmKToKLSAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIGNoZWNrIGh0dHAgZ2l0IFVSTCBtYW5nbGluZyB3b3JrcwotICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21hdGNoYm94LXRlcm1pbmFsX2dpdC5iYicpCi0gICAgICAgIHNyY3VyaSA9ICdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L21hdGNoYm94LXRlcm1pbmFsJwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnR1BMdjInXSkKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L21hdGNoYm94LXRlcm1pbmFsO3Byb3RvY29sPWh0dHAnCi0gICAgICAgIGluaGVyaXRzID0gWydwa2djb25maWcnLCAnYXV0b3Rvb2xzJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIGRlZiBfY29weV9maWxlX3dpdGhfY2xlYW51cChzZWxmLCBzcmNmaWxlLCBiYXNlZHN0ZGlyLCAqcGF0aHMpOgotICAgICAgICBkc3RkaXIgPSBiYXNlZHN0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkc3RkaXIpKQotICAgICAgICBmb3IgcCBpbiBwYXRoczoKLSAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihkc3RkaXIsIHApCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKLSAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCi0gICAgICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RkaXIpCi0gICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQotICAgICAgICBpZiBzcmNmaWxlICE9IGRzdGZpbGU6Ci0gICAgICAgICAgICBzaHV0aWwuY29weShzcmNmaWxlLCBkc3RmaWxlKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RmaWxlKQotCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9sb2FkX3BsdWdpbihzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IHJlY2lwZXRvb2wgbG9hZHMgb25seSB0aGUgZmlyc3QgZm91bmQgcGx1Z2luIGluIEJCUEFUSC4iIiIKLQotICAgICAgICByZWNpcGV0b29sID0gcnVuQ21kKCJ3aGljaCByZWNpcGV0b29sIikKLSAgICAgICAgZnJvbW5hbWUgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBwbHVnaW5maWxlIikKLSAgICAgICAgc3JjZmlsZSA9IGZyb21uYW1lLm91dHB1dAotICAgICAgICBzZWFyY2hwYXRoID0gc2VsZi5iYnBhdGguc3BsaXQoJzonKSArIFtvcy5wYXRoLmRpcm5hbWUocmVjaXBldG9vbC5vdXRwdXQpXQotICAgICAgICBwbHVnaW5jb250ZW50ID0gW10KLSAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUpIGFzIGZoOgotICAgICAgICAgICAgcGx1Z2luY29udGVudCA9IGZoLnJlYWRsaW5lcygpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2VsZnRlc3QnLCBzcmNmaWxlLCAnd3JvbmcgYmJwYXRoIHBsdWdpbiBmb3VuZCcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgotICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc3JjZmlsZSwgcGF0aCwgJ2xpYicsICdyZWNpcGV0b29sJykKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IGNvdW50IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJzEnKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgbXVsdGlsb2FkZWQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAibm8iKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBiYmRpciIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBwYXRoKQotICAgICAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4ocmVzdWx0Lm91dHB1dCwgJ2xpYicsICdyZWNpcGV0b29sJywgJ2JicGF0aC5weScpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICd3JykgYXMgZmg6Ci0gICAgICAgICAgICAgICAgZmgud3JpdGVsaW5lcyhwbHVnaW5jb250ZW50KQotCi0KLWNsYXNzIFJlY2lwZXRvb2xBcHBlbmRzcmNCYXNlKFJlY2lwZXRvb2xCYXNlKToKLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIGV4cGVjdGVkZmlsZXMpOgotICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlICVzICVzICVzICVzICVzJyAlIChvcHRpb25zLCBzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUpCi0gICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQotCi0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlcyhzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRsaW5lcz1Ob25lLCBleHBlY3RlZGZpbGVzPU5vbmUsIGRlc3RkaXI9Tm9uZSwgb3B0aW9ucz0nJyk6Ci0KLSAgICAgICAgaWYgZGVzdGRpcjoKLSAgICAgICAgICAgIG9wdGlvbnMgKz0gJyAtRCAlcycgJSBkZXN0ZGlyCi0KLSAgICAgICAgaWYgZXhwZWN0ZWRmaWxlcyBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFtvcy5wYXRoLmJhc2VuYW1lKGYpIGZvciBmIGluIG5ld2ZpbGVzXQotCi0gICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGVzICVzICVzICVzICVzJyAlIChvcHRpb25zLCBzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgJyAnLmpvaW4obmV3ZmlsZXMpKQotICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKLQotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9mYWlsKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlLCBjaGVja2Vycm9yKToKLSAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZSAlcyAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlIG9yICcnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ0NvbW1hbmQgIiVzIiBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0IGRpZG5cJ3QnICUgY21kKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQotICAgICAgICBmb3IgZXJyb3JzdHIgaW4gY2hlY2tlcnJvcjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzdHIsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9nZXRfZmlyc3RfZmlsZV91cmkocmVjaXBlKToKLSAgICAgICAgJycnUmV0dXJuIHRoZSBmaXJzdCBmaWxlOi8vIGluIFNSQ19VUkkgZm9yIHRoZSBzcGVjaWZpZWQgcmVjaXBlLicnJwotICAgICAgICBzcmNfdXJpID0gZ2V0X2JiX3ZhcignU1JDX1VSSScsIHJlY2lwZSkuc3BsaXQoKQotICAgICAgICBmb3IgdXJpIGluIHNyY191cmk6Ci0gICAgICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHVyaSkKLSAgICAgICAgICAgIGlmIHAuc2NoZW1lID09ICdmaWxlJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcC5uZXRsb2MgKyBwLnBhdGgKLQotICAgIGRlZiBfdGVzdF9hcHBlbmRzcmNmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIGZpbGVuYW1lPU5vbmUsIGRlc3RkaXI9Tm9uZSwgaGFzX3NyY191cmk9VHJ1ZSwgc3JjZGlyPU5vbmUsIG5ld2ZpbGU9Tm9uZSwgb3B0aW9ucz0nJyk6Ci0gICAgICAgIGlmIG5ld2ZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgIG5ld2ZpbGUgPSBzZWxmLnRlc3RmaWxlCi0KLSAgICAgICAgaWYgc3JjZGlyOgotICAgICAgICAgICAgaWYgZGVzdGRpcjoKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBkZXN0ZGlyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBzcmNkaXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wdGlvbnMgKz0gIiAtVyIKLSAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IGRlc3RkaXIKLQotICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgIGlmIGRlc3RkaXI6Ci0gICAgICAgICAgICAgICAgZGVzdHBhdGggPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgZmlsZW5hbWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gZmlsZW5hbWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShuZXdmaWxlKQotICAgICAgICAgICAgaWYgZGVzdGRpcjoKLSAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IGRlc3RkaXIgKyBvcy5zZXAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVzdHBhdGggPSAnLicgKyBvcy5zZXAKLQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIGlmIGhhc19zcmNfdXJpOgotICAgICAgICAgICAgdXJpID0gJ2ZpbGU6Ly8lcycgJSBmaWxlbmFtZQotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfc3ViZGlyOgotICAgICAgICAgICAgICAgIHVyaSArPSAnO3N1YmRpcj0lcycgJSBleHBlY3RlZF9zdWJkaXIKLSAgICAgICAgICAgIGV4cGVjdGVkbGluZXNbMDowXSA9IFsnU1JDX1VSSSArPSAiJXMiXG4nICUgdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdHBhdGgsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIFtmaWxlbmFtZV0pCi0KLSAgICBkZWYgX3Rlc3RfYXBwZW5kc3JjZmlsZXMoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkZmlsZXM9Tm9uZSwgZGVzdGRpcj1Ob25lLCBvcHRpb25zPScnKToKLSAgICAgICAgaWYgZXhwZWN0ZWRmaWxlcyBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWRmaWxlcyA9IFtvcy5wYXRoLmJhc2VuYW1lKG4pIGZvciBuIGluIG5ld2ZpbGVzXQotCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzKHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGZpbGVzPWV4cGVjdGVkZmlsZXMsIGRlc3RkaXI9ZGVzdGRpciwgb3B0aW9ucz1vcHRpb25zKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NSQ19VUkknLCAnRklMRScsICdGSUxFU0VYVFJBUEFUSFMnXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXS5zcGxpdCgpCi0gICAgICAgIGZvciBmIGluIGV4cGVjdGVkZmlsZXM6Ci0gICAgICAgICAgICBpZiBkZXN0ZGlyOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGU6Ly8lcztzdWJkaXI9JXMnICUgKGYsIGRlc3RkaXIpLCBzcmNfdXJpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlOi8vJXMnICUgZiwgc3JjX3VyaSkKLQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQotICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYmJhcHBlbmRmaWxlKSwgdGVzdHJlY2lwZSkKLSAgICAgICAgZmlsZXNleHRyYXBhdGhzID0gYmJfdmFyc1snRklMRVNFWFRSQVBBVEhTJ10uc3BsaXQoJzonKQotICAgICAgICBzZWxmLmFzc2VydEluKGZpbGVzZGlyLCBmaWxlc2V4dHJhcGF0aHMpCi0KLQotCi0KLWNsYXNzIFJlY2lwZXRvb2xBcHBlbmRzcmNUZXN0cyhSZWNpcGV0b29sQXBwZW5kc3JjQmFzZSk6Ci0KLSAgICBAdGVzdGNhc2UoMTI3MykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfYmFzaWMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsICdhLWZpbGUnKQotCi0gICAgQHRlc3RjYXNlKDEyNzQpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2Jhc2ljX3dpbGRjYXJkKHNlbGYpOgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCi0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCAnYS1maWxlJywgb3B0aW9ucz0nLXcnKQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIHNlbGYudGVtcGxheWVyZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUoYmJhcHBlbmRmaWxlKSwgJyVzXyUlLmJiYXBwZW5kJyAlIHRlc3RyZWNpcGUpCi0KLSAgICBAdGVzdGNhc2UoMTI4MSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3ViZGlyX2Jhc2ljKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCAnYS1maWxlJywgJ3RtcCcpCi0KLSAgICBAdGVzdGNhc2UoMTI4MikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3ViZGlyX2Jhc2ljX2RpcmRlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsIGRlc3RkaXI9J3RtcCcpCi0KLSAgICBAdGVzdGNhc2UoMTI4MCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfc3JjZGlyX2Jhc2ljKHNlbGYpOgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2gnCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1MnLCAnV09SS0RJUiddLCB0ZXN0cmVjaXBlKQotICAgICAgICBzcmNkaXIgPSBiYl92YXJzWydTJ10KLSAgICAgICAgd29ya2RpciA9IGJiX3ZhcnNbJ1dPUktESVInXQotICAgICAgICBzdWJkaXIgPSBvcy5wYXRoLnJlbHBhdGgoc3JjZGlyLCB3b3JrZGlyKQotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgJ2EtZmlsZScsIHNyY2Rpcj1zdWJkaXIpCi0KLSAgICBAdGVzdGNhc2UoMTI3NSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZXhpc3RpbmdfaW5fc3JjX3VyaShzZWxmKToKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJwotICAgICAgICBmaWxlcGF0aCA9IHNlbGYuX2dldF9maXJzdF9maWxlX3VyaSh0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXBhdGgsICdVbmFibGUgdG8gdGVzdCwgbm8gZmlsZTovLyB1cmkgZm91bmQgaW4gU1JDX1VSSSBmb3IgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBoYXNfc3JjX3VyaT1GYWxzZSkKLQotICAgIEB0ZXN0Y2FzZSgxMjc2KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9leGlzdGluZ19pbl9zcmNfdXJpX2RpZmZfcGFyYW1zKHNlbGYpOgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCi0gICAgICAgIHN1YmRpciA9ICd0bXAnCi0gICAgICAgIGZpbGVwYXRoID0gc2VsZi5fZ2V0X2ZpcnN0X2ZpbGVfdXJpKHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlcGF0aCwgJ1VuYWJsZSB0byB0ZXN0LCBubyBmaWxlOi8vIHVyaSBmb3VuZCBpbiBTUkNfVVJJIGZvciAlcycgJSB0ZXN0cmVjaXBlKQotCi0gICAgICAgIG91dHB1dCA9IHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgc3ViZGlyLCBoYXNfc3JjX3VyaT1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSgnd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycycgaW4gbCBmb3IgbCBpbiBvdXRwdXQpKQotCi0gICAgQHRlc3RjYXNlKDEyNzcpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3JlcGxhY2VfZmlsZV9zcmNkaXIoc2VsZik6Ci0gICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzaCcKLSAgICAgICAgZmlsZXBhdGggPSAnTWFrZWZpbGUuaW4nCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1MnLCAnV09SS0RJUiddLCB0ZXN0cmVjaXBlKQotICAgICAgICBzcmNkaXIgPSBiYl92YXJzWydTJ10KLSAgICAgICAgd29ya2RpciA9IGJiX3ZhcnNbJ1dPUktESVInXQotICAgICAgICBzdWJkaXIgPSBvcy5wYXRoLnJlbHBhdGgoc3JjZGlyLCB3b3JrZGlyKQotCi0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgc3JjZGlyPXN1YmRpcikKLSAgICAgICAgYml0YmFrZSgnJXM6ZG9fdW5wYWNrJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbihzZWxmLnRlc3RmaWxlLCAncicpLnJlYWQoKSwgb3Blbihvcy5wYXRoLmpvaW4oc3JjZGlyLCBmaWxlcGF0aCksICdyJykucmVhZCgpKQotCi0gICAgQHRlc3RjYXNlKDEyNzgpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpYyhzZWxmLCBkZXN0ZGlyPU5vbmUpOgotICAgICAgICBuZXdmaWxlcyA9IFtzZWxmLnRlc3RmaWxlXQotICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA1KToKLSAgICAgICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3Rlc3RmaWxlJWQnICUgaSkKLSAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0ZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoJ1Rlc3QgZmlsZSAlZFxuJyAlIGkpCi0gICAgICAgICAgICBuZXdmaWxlcy5hcHBlbmQodGVzdGZpbGUpCi0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZXMoJ2djYycsIG5ld2ZpbGVzLCBkZXN0ZGlyPWRlc3RkaXIsIG9wdGlvbnM9Jy1XJykKLQotICAgIEB0ZXN0Y2FzZSgxMjc5KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWNfc3ViZGlyKHNlbGYpOgotICAgICAgICBzZWxmLnRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpYyhkZXN0ZGlyPSd0ZXN0ZGlyJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnFlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW5xZW11LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGM2Zjk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnFlbXUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi0KLWltcG9ydCByZQotaW1wb3J0IGxvZ2dpbmcKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgcnVucWVtdSwgZ2V0X2JiX3ZhcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIFJ1bnFlbXVUZXN0cyhvZVNlbGZUZXN0KToKLSAgICAiIiJSdW5xZW11IHRlc3QgY2xhc3MiIiIKLQotICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKLSAgICBkZXBsb3lfZGlyX2ltYWdlID0gJycKLQotICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgotICAgICAgICBzZWxmLnJlY2lwZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIHNlbGYubWFjaGluZSA9ICAncWVtdXg4Ni02NCcKLSAgICAgICAgc2VsZi5mc3R5cGVzID0gImV4dDQgaXNvIGhkZGltZyB2bWRrIHFjb3cyIHZkaSIKLSAgICAgICAgc2VsZi5jbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIgotCi0gICAgICAgICMgQXZvaWQgZW1pdCB0aGUgc2FtZSByZWNvcmQgbXVsdGlwbGUgdGltZXMuCi0gICAgICAgIG1haW5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5NYWluIikKLSAgICAgICAgbWFpbmxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKAotIiIiCi1NQUNISU5FID0gIiVzIgotSU1BR0VfRlNUWVBFUyA9ICIlcyIKLSMgMTAgbWVhbnMgMSBzZWNvbmQKLVNZU0xJTlVYX1RJTUVPVVQgPSAiMTAiCi0iIiIKLSUgKHNlbGYubWFjaGluZSwgc2VsZi5mc3R5cGVzKQotICAgICAgICApCi0KLSAgICAgICAgaWYgbm90IFJ1bnFlbXVUZXN0cy5pbWFnZV9pc19yZWFkeToKLSAgICAgICAgICAgIFJ1bnFlbXVUZXN0cy5kZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0gICAgICAgICAgICBiaXRiYWtlKHNlbGYucmVjaXBlKQotICAgICAgICAgICAgUnVucWVtdVRlc3RzLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQotCi0gICAgQHRlc3RjYXNlKDIwMDEpCi0gICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSIiIgotICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwMikKLSAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfZXh0NChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgZXh0NCIiIgotICAgICAgICBjbWQgPSAiJXMgJXMgZXh0NCIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyb290ZnMuZXh0NCcgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDAzKQotICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9pc28oc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIGlzbyIiIgotICAgICAgICBjbWQgPSAiJXMgJXMgaXNvIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJyAtY2Ryb20gJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDQpCi0gICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2Uoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwNSkKLSAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZV92bWRrKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIHZtZGsiIiIKLSAgICAgICAgY21kID0gIiVzICVzIHZtZGsiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9dm1kaycgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA2KQotICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlX3ZkaShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSB2ZGkiIiIKLSAgICAgICAgY21kID0gIiVzICVzIHZkaSIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD12ZGknIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwNykKLSAgICBkZWYgdGVzdF9ib290X2RlcGxveShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IGRlcGxveV9kaXJfaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDgpCi0gICAgZGVmIHRlc3RfYm9vdF9kZXBsb3lfaGRkaW1nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgZGVwbG95X2Rpcl9pbWFnZSBoZGRpbWciIiIKLSAgICAgICAgY21kID0gIiVzICVzIGhkZGltZyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnZmlsZT0uKi5oZGRpbWcnLCBmLnJlYWQoKSksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA5KQotICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9zbGlycChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgc2xpcnAiIiIKLSAgICAgICAgY21kID0gIiVzIHNsaXJwICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJyAtbmV0ZGV2IHVzZXInIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwOSkKLSAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfc2xpcnBfcWNvdzIoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIHNsaXJwIHFjb3cyIiIiCi0gICAgICAgIGNtZCA9ICIlcyBzbGlycCBxY293MiAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9cWNvdzInIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAxMCkKLSAgICBkZWYgdGVzdF9ib290X3FlbXVfYm9vdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IC9wYXRoL3RvL2ltYWdlLnFlbXVib290LmNvbmYiIiIKLSAgICAgICAgcWVtdWJvb3RfY29uZiA9ICIlcy0lcy5xZW11Ym9vdC5jb25mIiAlIChzZWxmLnJlY2lwZSwgc2VsZi5tYWNoaW5lKQotICAgICAgICBxZW11Ym9vdF9jb25mID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSwgcWVtdWJvb3RfY29uZikKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHFlbXVib290X2NvbmYpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiJXMgbm90IGZvdW5kIiAlIHFlbXVib290X2NvbmYpCi0gICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBxZW11Ym9vdF9jb25mKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAxMSkKLSAgICBkZWYgdGVzdF9ib290X3Jvb3RmcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IC9wYXRoL3RvL3Jvb3Rmcy5leHQ0IiIiCi0gICAgICAgIHJvb3RmcyA9ICIlcy0lcy5leHQ0IiAlIChzZWxmLnJlY2lwZSwgc2VsZi5tYWNoaW5lKQotICAgICAgICByb290ZnMgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyX2ltYWdlLCByb290ZnMpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyb290ZnMpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiJXMgbm90IGZvdW5kIiAlIHJvb3RmcykKLSAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHJvb3RmcykKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVudGltZS10ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVudGltZS10ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDk4ZDA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnRpbWUtdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11Ci1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWNsYXNzIFRlc3RFeHBvcnQob2VTZWxmVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBydW5DbWQoInJtIC1yZiAvdG1wL3NkayIpCi0KLSAgICBkZWYgdGVzdF90ZXN0ZXhwb3J0X2Jhc2ljKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgYmFzaWMgdGVzdGV4cG9ydCBmdW5jdGlvbmFsaXR5IHdpdGggb25seSBwaW5nIHRlc3QgZW5hYmxlZC4KLSAgICAgICAgRXhwZWN0ZWQ6IDEuIHRlc3RleHBvcnQgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICAgIDIuIHJ1bmV4cG9ydGVkLnB5IG11c3QgcnVuIHdpdGhvdXQgYW55IGVycm9yL2V4Y2VwdGlvbi4KLSAgICAgICAgICAgICAgICAgIDMuIHBpbmcgdGVzdCBtdXN0IHN1Y2NlZWQuCi0gICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGV4cG9ydCJcbicKLSAgICAgICAgIyBUaGVzZSBhcmVuJ3QgdGhlIGFjdHVhbCBJUCBhZGRyZXNzZXMgYnV0IHRlc3RleHBvcnQgY2xhc3MgbmVlZHMgc29tZXRoaW5nIGRlZmluZWQKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU0VSVkVSX0lQID0gIjE5Mi4xNjguNy4xIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9UQVJHRVRfSVAgPSAiMTkyLjE2OC43LjEiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAjIEJ1aWxkIHRlc2V4cG9ydCBmb3IgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGJpdGJha2UoJy1jIHRlc3RleHBvcnQgY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICB0ZXN0ZXhwb3J0X2RpciA9IGdldF9iYl92YXIoJ1RFU1RfRVhQT1JUX0RJUicsICdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgICMgVmVyaWZ5IGlmIFRFU1RfRVhQT1JUX0RJUiB3YXMgY3JlYXRlZAotICAgICAgICBpc2RpciA9IG9zLnBhdGguaXNkaXIodGVzdGV4cG9ydF9kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXNkaXIsICdGYWlsZWQgdG8gY3JlYXRlIHRlc3RleHBvcnQgZGlyOiAlcycgJSB0ZXN0ZXhwb3J0X2RpcikKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAjIEF0dGVtcHQgdG8gcnVuIHJ1bmV4cG9ydGVkLnB5IHRvIHBlcmZvcm0gcGluZyB0ZXN0Ci0gICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICJvZS10ZXN0IikKLSAgICAgICAgICAgIGRhdGFfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgJ2RhdGEnLCAndGVzdGRhdGEuanNvbicpCi0gICAgICAgICAgICBtYW5pZmVzdCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgJ2RhdGEnLCAnbWFuaWZlc3QnKQotICAgICAgICAgICAgY21kID0gKCIlcyBydW50aW1lIC0tdGVzdC1kYXRhLWZpbGUgJXMgLS1wYWNrYWdlcy1tYW5pZmVzdCAlcyAiCi0gICAgICAgICAgICAgICAgICAgIi0tdGFyZ2V0LWlwICVzIC0tc2VydmVyLWlwICVzIC0tcXVpZXQiCi0gICAgICAgICAgICAgICAgICAlICh0ZXN0X3BhdGgsIGRhdGFfZmlsZSwgbWFuaWZlc3QsIHFlbXUuaXAsIHFlbXUuc2VydmVyX2lwKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQpCi0gICAgICAgICAgICAjIFZlcmlmeSBwaW5nIHRlc3Qgd2FzIHN1Y2Nlc2Z1bAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAnb2UtdGVzdCBydW50aW1lIHJldHVybmVkIGEgbm9uIDAgc3RhdHVzJykKLQotICAgIGRlZiB0ZXN0X3Rlc3RleHBvcnRfc2RrKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgc2RrIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3RleHBvcnQuCi0gICAgICAgIEV4cGVjdGVkOiAxLiB0ZXN0ZXhwb3J0IGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgICAyLiBTREsgdGFyYmFsbCBtdXN0IGV4aXN0cy4KLSAgICAgICAgICAgICAgICAgIDMuIFVuY29tcHJlc3Npbmcgb2YgdGFyYmFsbCBtdXN0IHN1Y2NlZWQuCi0gICAgICAgICAgICAgICAgICA0LiBDaGVjayBpZiB0aGUgU0RLIGRpcmVjdG9yeSBpcyBhZGRlZCB0byBQQVRILgotICAgICAgICAgICAgICAgICAgNS4gUnVuIHRhciBmcm9tIHRoZSBTREsgZGlyZWN0b3J5LgotICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RleHBvcnQiXG4nCi0gICAgICAgICMgVGhlc2UgYXJlbid0IHRoZSBhY3R1YWwgSVAgYWRkcmVzc2VzIGJ1dCB0ZXN0ZXhwb3J0IGNsYXNzIG5lZWRzIHNvbWV0aGluZyBkZWZpbmVkCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4xIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfRVhQT1JUX1NES19FTkFCTEVEID0gIjEiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX0VYUE9SVF9TREtfUEFDS0FHRVMgPSAibmF0aXZlc2RrLXRhciJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgIyBCdWlsZCB0ZXNleHBvcnQgZm9yIGNvcmUtaW1hZ2UtbWluaW1hbAotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBiaXRiYWtlKCctYyB0ZXN0ZXhwb3J0IGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1RFU1RfRVhQT1JUX0RJUicsICdURVNUX0VYUE9SVF9TREtfRElSJywgJ1RFU1RfRVhQT1JUX1NES19OQU1FJ10KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzLCAnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgdGVzdGV4cG9ydF9kaXIgPSBiYl92YXJzWydURVNUX0VYUE9SVF9ESVInXQotICAgICAgICBzZGtfZGlyID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfU0RLX0RJUiddCi0gICAgICAgIHNka19uYW1lID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfU0RLX05BTUUnXQotCi0gICAgICAgICMgQ2hlY2sgZm9yIFNESwotICAgICAgICB0YXJiYWxsX25hbWUgPSAiJXMuc2giICUgc2RrX25hbWUKLSAgICAgICAgdGFyYmFsbF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCBzZGtfZGlyLCB0YXJiYWxsX25hbWUpCi0gICAgICAgIG1zZyA9ICJDb3VsZG4ndCBmaW5kIFNESyB0YXJiYWxsOiAlcyIgJSB0YXJiYWxsX3BhdGgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmlzZmlsZSh0YXJiYWxsX3BhdGgpLCBUcnVlLCBtc2cpCi0KLSAgICAgICAgIyBFeHRyYWN0IFNESyBhbmQgcnVuIHRhciBmcm9tIFNESwotICAgICAgICByZXN1bHQgPSBydW5DbWQoIiVzIC15IC1kIC90bXAvc2RrIiAlIHRhcmJhbGxfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3QgZXh0cmFjdCBTREsiKQotCi0gICAgICAgIGVudl9zY3JpcHQgPSByZXN1bHQub3V0cHV0LnNwbGl0KClbLTFdCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiLiAlczsgd2hpY2ggdGFyIiAlIGVudl9zY3JpcHQsIHNoZWxsPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IHNldHVwIFNESyBlbnZpcm9ubWVudCIpCi0gICAgICAgIGlzX3Nka190YXIgPSBUcnVlIGlmICIvdG1wL3NkayIgaW4gcmVzdWx0Lm91dHB1dCBlbHNlIEZhbHNlCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19zZGtfdGFyLCAiQ291bGRuJ3Qgc2V0dXAgU0RLIGVudmlyb25tZW50IikKLQotICAgICAgICB0YXJfc2RrID0gcmVzdWx0Lm91dHB1dAotICAgICAgICByZXN1bHQgPSBydW5DbWQoIiVzIC0tdmVyc2lvbiIgJSB0YXJfc2RrKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBydW4gdGFyIGZyb20gU0RLIikKLQotCi1jbGFzcyBUZXN0SW1hZ2Uob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfaW5zdGFsbChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIGluc3RhbGwgcGFja2FnZXMgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGltYWdlL3Rlc3RleHBvcnQuCi0gICAgICAgIEV4cGVjdGVkOiAxLiBJbXBvcnQgdGVzdHMgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIG1ldGEuCi0gICAgICAgICAgICAgICAgICAyLiBDaGVjayBpbnN0YWxsL3VuaW5zdGFsbCBvZiBzb2NhdC4KLSAgICAgICAgICAgICAgICAgIDMuIENoZWNrIHRoYXQgcmVtb3RlIHBhY2thZ2UgZmVlZHMgY2FuIGJlIGFjY2Vzc2VkCi0gICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KLSAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBub3QgYnVpbGRhYmxlIGZvciBwb2t5LXRpbnknKQotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmcgc3NoIHNlbGZ0ZXN0IlxuJwotICAgICAgICAjIFdlIGRvbid0IHlldCBrbm93IHdoYXQgdGhlIHNlcnZlciBpcCBhbmQgcG9ydCB3aWxsIGJlIC0gdGhleSB3aWxsIGJlIHBhdGNoZWQKLSAgICAgICAgIyBpbiBhdCB0aGUgc3RhcnQgb2YgdGhlIG9uLWltYWdlIHRlc3QKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9VUklTID0gImh0dHA6Ly9ib2d1c19pcDpib2d1c19wb3J0IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSInCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICMgQnVpbGQgY29yZS1pbWFnZS1zYXRvIGFuZCB0ZXN0aW1hZ2UKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgc29jYXQnKQotICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUnKQotCi1jbGFzcyBQb3N0aW5zdChvZVNlbGZUZXN0KToKLSAgICBAdGVzdGNhc2UoMTU0MCkKLSAgICBkZWYgdGVzdF92ZXJpZnlfcG9zdGluc3Qoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMgdG8gdmVyaWZ5IHRoZSBleGVjdXRpb24gb3JkZXIgb2YgcG9zdGluc3QgQnVnemlsbGEgSUQ6IFs1MzE5XQotICAgICAgICBFeHBlY3RlZCA6Ci0gICAgICAgIDEuIENvbXBpbGUgYSBtaW5pbWFsIGltYWdlLgotICAgICAgICAyLiBUaGUgY29tcGlsZWQgaW1hZ2Ugd2lsbCBhZGQgdGhlIGNyZWF0ZWQgbGF5ZXIgd2l0aCB0aGUgcmVjaXBlcyBwb3N0aW5zdFsgYWJkcHRdCi0gICAgICAgIDMuIFJ1biBxZW11eDg2Ci0gICAgICAgIDQuIFZhbGlkYXRlIHRoZSB0YXNrIGV4ZWN1dGlvbiBvcmRlcgotICAgICAgICBBdXRob3I6IEZyYW5jaXNjbyBQZWRyYXphIDxmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAicG9zdGluc3QtYXQtcm9vdGZzIFwKLXBvc3RpbnN0LWRlbGF5ZWQtYSBcCi1wb3N0aW5zdC1kZWxheWVkLWIgXAotcG9zdGluc3QtZGVsYXllZC1kIFwKLXBvc3RpbnN0LWRlbGF5ZWQtcCBcCi1wb3N0aW5zdC1kZWxheWVkLXQgXAotIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgLWYgJykKLQotICAgICAgICBwb3N0aW5zdF9saXN0ID0gWycxMDAtcG9zdGluc3QtYXQtcm9vdGZzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAxLXBvc3RpbnN0LWRlbGF5ZWQtYScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMi1wb3N0aW5zdC1kZWxheWVkLWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDMtcG9zdGluc3QtZGVsYXllZC1kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTA0LXBvc3RpbnN0LWRlbGF5ZWQtcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwNS1wb3N0aW5zdC1kZWxheWVkLXQnXQotICAgICAgICBwYXRoX3dvcmtkaXIgPSBnZXRfYmJfdmFyKCdXT1JLRElSJywnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgd29ya3NwYWNlZGlyID0gJ3Rlc3RpbWFnZS9xZW11X2Jvb3RfbG9nJwotICAgICAgICB3b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4ocGF0aF93b3JrZGlyLCB3b3Jrc3BhY2VkaXIpCi0gICAgICAgIHJleHAgPSByZS5jb21waWxlKCJeUnVubmluZyBwb3N0aW5zdCAuKi8oP1A8cG9zdGluc3Q+LiopXC5cLlwuJCIpCi0gICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3Blbih3b3Jrc3BhY2VkaXIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQotICAgICAgICAgICAgICAgIGlkeCA9IDAKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpLnJlcGxhY2UoIl5NIiwiIikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6ICMgVG8gYXZvaWQgZW1wdHkgbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIG0gPSByZXhwLnNlYXJjaChsaW5lKQotICAgICAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3N0aW5zdF9saXN0W2lkeF0sIG0uZ3JvdXAoJ3Bvc3RpbnN0JyksICJGYWlsIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IGlkeCsxCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWR4LCBsZW4ocG9zdGluc3RfbGlzdCksICJOb3QgZm91bmQgYWxsIHBvc3RpbnN0cyIpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgQHRlc3RjYXNlKDE1NDUpCi0gICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSBQb3N0LWluc3RhbGxhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyBhcmUgY2FsbGVkIHdoZW4gcm9vdGZzIGlzIGNyZWF0ZWQgYW5kIGFsc28gdGVzdAotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzY3JpcHQgY2FuIGJlIGRlbGF5ZWQgdG8gcnVuIGF0IGZpcnN0IGJvb3QuCi0gICAgICAgIERlcGVuZGVuY2llczogICBOQQotICAgICAgICBTdGVwczogICAgICAgICAgMS4gQWRkIHByb3BlciBjb25maWd1cmF0aW9uIHRvIGxvY2FsLmNvbmYgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgMi4gQnVpbGQgYSAiY29yZS1pbWFnZS1taW5pbWFsIiBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoYXQgZmlsZSBjcmVhdGVkIGJ5IHBvc3RpbnN0X3Jvb3RmcyByZWNpcGUgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgb24gcm9vdGZzIGRpci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDQuIEJvb3QgdGhlIGltYWdlIGNyZWF0ZWQgb24gcWVtdSBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcG9zdGluc3RfYm9vdCByZWNpcGUgaXMgcHJlc2VudCBvbiBpbWFnZS4KLSAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBmaWxlcyBhcmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZHVyaW5nIHJvb3RmcyBhbmQgYm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgMyBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyczogcnBtLGlwayxkZWIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0IGFuZCBzeXN0ZW1kLgotCi0gICAgICAgICIiIgotICAgICAgICBmaWxlX3Jvb3Rmc19uYW1lID0gInRoaXMtd2FzLWNyZWF0ZWQtYXQtcm9vdGZzdGltZSIKLSAgICAgICAgZmlsZWJvb3RfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LWZpcnN0LWJvb3QiCi0gICAgICAgIHJvb3Rmc19wa2cgPSAncG9zdGluc3QtYXQtcm9vdGZzJwotICAgICAgICBib290X3BrZyA9ICdwb3N0aW5zdC1kZWxheWVkLWEnCi0gICAgICAgICNTdGVwIDEKLSAgICAgICAgZmVhdHVyZXMgPSAnTUFDSElORSA9ICJxZW11eDg2IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICIlcyAlcyAiXG4nJSAocm9vdGZzX3BrZywgYm9vdF9wa2cpCi0gICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIlxuJwotICAgICAgICBmb3IgaW5pdF9tYW5hZ2VyIGluICgic3lzdmluaXQiLCAic3lzdGVtZCIpOgotICAgICAgICAgICAgI2ZvciBzeXN2aW5pdCBubyBleHRyYSBjb25maWd1cmF0aW9uIGlzIG5lZWRlZCwKLSAgICAgICAgICAgIGlmIChpbml0X21hbmFnZXIgaXMgInN5c3RlbWQiKToKLSAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCJcbicKLSAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciA9ICJzeXN0ZW1kIlxuJwotICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJzeXN2aW5pdCJcbicKLSAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID0gIiJcbicKLSAgICAgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0gcGFja2FnZV9kZWIgcGFja2FnZV9pcGsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlX2RlYiBwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIHBhY2thZ2VfcnBtIik6Ci0gICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgICAgICAgICAjU3RlcCAyCi0gICAgICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICAgICAgICAgICNTdGVwIDMKLSAgICAgICAgICAgICAgICBmaWxlX3Jvb3Rmc19jcmVhdGVkID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsImNvcmUtaW1hZ2UtbWluaW1hbCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfbmFtZSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKGZpbGVfcm9vdGZzX2NyZWF0ZWQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgcm9vdGZzIHRpbWUgYnkgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9yb290ZnNfbmFtZSwgcm9vdGZzX3BrZykpCi0KLSAgICAgICAgICAgICAgICAjU3RlcCA0Ci0gICAgICAgICAgICAgICAgdGVzdGNvbW1hbmQgPSAnbHMgL2V0Yy8nK2ZpbGVib290X25hbWUKLSAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAgICAgICAgIHNzaGFyZ3MgPSAnLW8gVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCAtbyBTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8nCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc3NoICVzIHJvb3RAJXMgJXMnICUgKHNzaGFyZ3MsIHFlbXUuaXAsIHRlc3Rjb21tYW5kKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgZmlydHMgYm9vdCclIGZpbGVib290X25hbWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zaWduaW5nLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc2lnbmluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFjM2QxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zaWduaW5nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKLWltcG9ydCBvcwotaW1wb3J0IGdsb2IKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWZyb20gb2VxYS51dGlscy5mdG9vbHMgaW1wb3J0IHdyaXRlX2ZpbGUKLQotCi1jbGFzcyBTaWduaW5nKG9lU2VsZlRlc3QpOgotCi0gICAgZ3BnX2RpciA9ICIiCi0gICAgcHViX2tleV9wYXRoID0gIiIKLSAgICBzZWNyZXRfa2V5X3BhdGggPSAiIgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIyBDaGVjayB0aGF0IHdlIGNhbiBmaW5kIHRoZSBncGcgYmluYXJ5IGFuZCBmYWlsIGVhcmx5IGlmIHdlIGNhbid0Ci0gICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goImdwZyIpOgotICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlRoaXMgdGVzdCBuZWVkcyBHbnVQRyIpCi0KLSAgICAgICAgY2xzLmdwZ19ob21lX2RpciA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9Im9lcWEtc2lnbmluZy0iKQotICAgICAgICBjbHMuZ3BnX2RpciA9IGNscy5ncGdfaG9tZV9kaXIubmFtZQotCi0gICAgICAgIGNscy5wdWJfa2V5X3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRlc3RsYXllcl9wYXRoLCAnZmlsZXMnLCAnc2lnbmluZycsICJrZXkucHViIikKLSAgICAgICAgY2xzLnNlY3JldF9rZXlfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJywgImtleS5zZWNyZXQiKQotCi0gICAgICAgIHJ1bkNtZCgnZ3BnIC0tYmF0Y2ggLS1ob21lZGlyICVzIC0taW1wb3J0ICVzICVzJyAlIChjbHMuZ3BnX2RpciwgY2xzLnB1Yl9rZXlfcGF0aCwgY2xzLnNlY3JldF9rZXlfcGF0aCkpCi0KLSAgICBAdGVzdGNhc2UoMTM2MikKLSAgICBkZWYgdGVzdF9zaWduaW5nX3BhY2thZ2VzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBwYWNrYWdlcyBjYW4gYmUgc2lnbmVkIGluIHRoZSBwYWNrYWdlIGZlZWQKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIFBhY2thZ2Ugc2hvdWxkIGJlIHNpZ25lZCB3aXRoIHRoZSBjb3JyZWN0IGtleQotICAgICAgICBFeHBlY3RlZDogICAgSW1hZ2VzIGNhbiBiZSBjcmVhdGVkIGZyb20gc2lnbmVkIHBhY2thZ2VzCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCi0KLSAgICAgICAgcGFja2FnZV9jbGFzc2VzID0gZ2V0X2JiX3ZhcignUEFDS0FHRV9DTEFTU0VTJykKLSAgICAgICAgaWYgJ3BhY2thZ2VfcnBtJyBub3QgaW4gcGFja2FnZV9jbGFzc2VzOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhpcyB0ZXN0IHJlcXVpcmVzIFJQTSBQYWNrYWdpbmcuJykKLQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLQotICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gInNpZ25fcnBtIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX1BBU1NQSFJBU0UgPSAidGVzdDEyMyJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnUlBNX0dQR19OQU1FID0gInRlc3R1c2VyIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19kaXIKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBiaXRiYWtlKCctZiAtYyBwYWNrYWdlX3dyaXRlX3JwbSAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIG5lZWRlZF92YXJzID0gWydQS0dEQVRBX0RJUicsICdERVBMT1lfRElSX1JQTScsICdQQUNLQUdFX0FSQ0gnLCAnU1RBR0lOR19CSU5ESVJfTkFUSVZFJ10KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzLCB0ZXN0X3JlY2lwZSkKLSAgICAgICAgcGtnZGF0YWRpciA9IGJiX3ZhcnNbJ1BLR0RBVEFfRElSJ10KLSAgICAgICAgcGtnZGF0YSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfcGtnZGF0YWZpbGUocGtnZGF0YWRpciArICIvcnVudGltZS9lZCIpCi0gICAgICAgIGlmICdQS0dFJyBpbiBwa2dkYXRhOgotICAgICAgICAgICAgcGYgPSBwa2dkYXRhWydQTiddICsgIi0iICsgcGtnZGF0YVsnUEtHRSddICsgcGtnZGF0YVsnUEtHViddICsgJy0nICsgcGtnZGF0YVsnUEtHUiddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwZiA9IHBrZ2RhdGFbJ1BOJ10gKyAiLSIgKyBwa2dkYXRhWydQS0dWJ10gKyAnLScgKyBwa2dkYXRhWydQS0dSJ10KLSAgICAgICAgZGVwbG95X2Rpcl9ycG0gPSBiYl92YXJzWydERVBMT1lfRElSX1JQTSddCi0gICAgICAgIHBhY2thZ2VfYXJjaCA9IGJiX3ZhcnNbJ1BBQ0tBR0VfQVJDSCddLnJlcGxhY2UoJy0nLCAnXycpCi0gICAgICAgIHN0YWdpbmdfYmluZGlyX25hdGl2ZSA9IGJiX3ZhcnNbJ1NUQUdJTkdfQklORElSX05BVElWRSddCi0KLSAgICAgICAgcGtnX2RlcGxveSA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX3JwbSwgcGFja2FnZV9hcmNoLCAnLicuam9pbigocGYsIHBhY2thZ2VfYXJjaCwgJ3JwbScpKSkKLQotICAgICAgICAjIFVzZSBhIHRlbXBvcmFyeSBycG1kYgotICAgICAgICBycG1kYiA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXFhLXJwbWRiJykKLQotICAgICAgICBydW5DbWQoJyVzL3JwbWtleXMgLS1kZWZpbmUgIl9kYnBhdGggJXMiIC0taW1wb3J0ICVzJyAlCi0gICAgICAgICAgICAgICAoc3RhZ2luZ19iaW5kaXJfbmF0aXZlLCBycG1kYiwgc2VsZi5wdWJfa2V5X3BhdGgpKQotCi0gICAgICAgIHJldCA9IHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1jaGVja3NpZyAlcycgJQotICAgICAgICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHBrZ19kZXBsb3kpKQotICAgICAgICAjIHRtcC9kZXBsb3kvcnBtL2k1ODYvZWQtMS45LXIwLmk1ODYucnBtOiByc2Egc2hhMSBtZDUgT0sKLSAgICAgICAgc2VsZi5hc3NlcnRJbigncnNhIHNoYTEgKG1kNSkgcGdwIG1kNSBPSycsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQotICAgICAgICBzaHV0aWwucm10cmVlKHJwbWRiKQotCi0gICAgICAgICNDaGVjayB0aGF0IGFuIGltYWdlIGNhbiBiZSBidWlsdCBmcm9tIHNpZ25lZCBwYWNrYWdlcwotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLQotICAgIEB0ZXN0Y2FzZSgxMzgyKQotICAgIGRlZiB0ZXN0X3NpZ25pbmdfc3N0YXRlX2FyY2hpdmUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHNzdGF0ZSBhcmNoaXZlcyBjYW4gYmUgc2lnbmVkCi0gICAgICAgIEV4cGVjdGVkOiAgICBQYWNrYWdlIHNob3VsZCBiZSBzaWduZWQgd2l0aCB0aGUgY29ycmVjdCBrZXkKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0KLSAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKQotICAgICAgICBzc3RhdGVkaXIgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICd0ZXN0LXNzdGF0ZScpCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIHNzdGF0ZWRpcikKLQotICAgICAgICBmZWF0dXJlID0gJ1NTVEFURV9TSUdfS0VZID89ICJ0ZXN0dXNlciJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX1NJR19QQVNTUEhSQVNFID89ICJ0ZXN0MTIzIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfVkVSSUZZX1NJRyA/PSAiMSJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnR1BHX1BBVEggPSAiJXMiXG4nICUgc2VsZi5ncGdfZGlyCi0gICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgc3N0YXRlZGlyCi0gICAgICAgICMgQW55IG1pcnJvciBtaWdodCBoYXZlIHBhcnRpYWwgc3N0YXRlIHdpdGhvdXQgLnNpZyBmaWxlcywgdHJpZ2dlcmluZyBmYWlsdXJlcwotICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiJcbicKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQotCi0gICAgICAgIHJlY2lwZV9zaWcgPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wYWNrYWdlLnRnei5zaWcnKQotICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcGFja2FnZS50Z3onKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV9zaWcpLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnNpZyBmaWxlLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV90Z3opLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnRneiBmaWxlLicpCi0KLSAgICAgICAgcmV0ID0gcnVuQ21kKCdncGcgLS1ob21lZGlyICVzIC0tdmVyaWZ5ICVzICVzJyAlIChzZWxmLmdwZ19kaXIsIHJlY2lwZV9zaWdbMF0sIHJlY2lwZV90Z3pbMF0pKQotICAgICAgICAjIGdwZzogU2lnbmF0dXJlIG1hZGUgVGh1IDIyIE9jdCAyMDE1IDAxOjQ1OjA5IFBNIEVFU1QgdXNpbmcgUlNBIGtleSBJRCA2MUVFRkIzMAotICAgICAgICAjIGdwZzogR29vZCBzaWduYXR1cmUgZnJvbSAidGVzdHVzZXIgKG5vY29tbWVudCkgPHRlc3R1c2VyQGVtYWlsLmNvbT4iCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dwZzogR29vZCBzaWduYXR1cmUgZnJvbScsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQotCi0KLWNsYXNzIExvY2tlZFNpZ25hdHVyZXMob2VTZWxmVGVzdCk6Ci0KLSAgICBAdGVzdGNhc2UoMTQyMCkKLSAgICBkZWYgdGVzdF9sb2NrZWRfc2lnbmF0dXJlcyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IGxvY2tlZCBzaWduYXR1cmUgbWVjaGFuaXNtCi0gICAgICAgIEV4cGVjdGVkOiAgICBMb2NrZWQgc2lnbmF0dXJlcyB3aWxsIHByZXZlbnQgdGFzayB0byBydW4KLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0gICAgICAgIGxvY2tlZF9zaWdzX2ZpbGUgPSAnbG9ja2VkLXNpZ3MuaW5jJwotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1mICVzJyAlIG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCBsb2NrZWRfc2lnc19maWxlKSkKLQotICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQotICAgICAgICAjIEdlbmVyYXRlIGxvY2tlZCBzaWdzIGluY2x1ZGUgZmlsZQotICAgICAgICBiaXRiYWtlKCctUyBub25lICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIGZlYXR1cmUgPSAncmVxdWlyZSAlc1xuJyAlIGxvY2tlZF9zaWdzX2ZpbGUKLSAgICAgICAgZmVhdHVyZSArPSAnU0lHR0VOX0xPQ0tFRFNJR1NfVEFTS1NJR19DSEVDSyA9ICJ3YXJuIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQotCi0gICAgICAgICMgQnVpbGQgYSBsb2NrZWQgcmVjaXBlCi0gICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCi0KLSAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRoYXQgc2hvdWxkIGNhdXNlIHRoZSBsb2NrZWQgdGFzayBzaWduYXR1cmUgdG8gY2hhbmdlCi0gICAgICAgIHJlY2lwZV9hcHBlbmRfZmlsZSA9IHRlc3RfcmVjaXBlICsgJ18nICsgZ2V0X2JiX3ZhcignUFYnLCB0ZXN0X3JlY2lwZSkgKyAnLmJiYXBwZW5kJwotICAgICAgICByZWNpcGVfYXBwZW5kX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlLCByZWNpcGVfYXBwZW5kX2ZpbGUpCi0gICAgICAgIGZlYXR1cmUgPSAnU1VNTUFSWSArPSAidGVzdCBsb2NrZWQgc2lnbmF0dXJlIlxuJwotCi0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUpKQotICAgICAgICB3cml0ZV9maWxlKHJlY2lwZV9hcHBlbmRfcGF0aCwgZmVhdHVyZSkKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSkpCi0KLSAgICAgICAgIyBCdWlsZCB0aGUgcmVjaXBlIGFnYWluCi0gICAgICAgIHJldCA9IGJpdGJha2UodGVzdF9yZWNpcGUpCi0KLSAgICAgICAgIyBWZXJpZnkgeW91IGdldCB0aGUgd2FybmluZyBhbmQgdGhhdCB0aGUgcmVhbCB0YXNrICppc24ndCogcnVuIChpLmUuIHRoZSBsb2NrZWQgc2lnbmF0dXJlIGhhcyB3b3JrZWQpCi0gICAgICAgIHBhdHQgPSByJ1dBUk5JTkc6IFRoZSAlczpkb19wYWNrYWdlIHNpZyBpcyBjb21wdXRlZCB0byBiZSBcUyssIGJ1dCB0aGUgc2lnIGlzIGxvY2tlZCB0byBcUysgaW4gU0lHR0VOX0xPQ0tFRFNJR1NcUysnICUgdGVzdF9yZWNpcGUKLSAgICAgICAgZm91bmRfd2FybiA9IHJlLnNlYXJjaChwYXR0LCByZXQub3V0cHV0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZvdW5kX3dhcm4sICJEaWRuJ3QgZmluZCB0aGUgZXhwZWN0ZWQgd2FybmluZyBtZXNzYWdlLiBPdXRwdXQ6ICVzIiAlIHJldC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NGJjNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIGdldF90ZXN0X2xheWVyCi0KLQotY2xhc3MgU1N0YXRlQmFzZShvZVNlbGZUZXN0KToKLQotICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgotICAgICAgICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uID0gTm9uZQotICAgICAgICBuZWVkZWRfdmFycyA9IFsnU1NUQVRFX0RJUicsICdOQVRJVkVMU0JTVFJJTkcnLCAnVENMSUJDJywgJ1RVTkVfQVJDSCcsCi0gICAgICAgICAgICAgICAgICAgICAgICdUT1BESVInLCAnVEFSR0VUX1ZFTkRPUicsICdUQVJHRVRfT1MnXQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMpCi0gICAgICAgIHNlbGYuc3N0YXRlX3BhdGggPSBiYl92YXJzWydTU1RBVEVfRElSJ10KLSAgICAgICAgc2VsZi5ob3N0ZGlzdHJvID0gYmJfdmFyc1snTkFUSVZFTFNCU1RSSU5HJ10KLSAgICAgICAgc2VsZi50Y2xpYmMgPSBiYl92YXJzWydUQ0xJQkMnXQotICAgICAgICBzZWxmLnR1bmVfYXJjaCA9IGJiX3ZhcnNbJ1RVTkVfQVJDSCddCi0gICAgICAgIHNlbGYudG9wZGlyID0gYmJfdmFyc1snVE9QRElSJ10KLSAgICAgICAgc2VsZi50YXJnZXRfdmVuZG9yID0gYmJfdmFyc1snVEFSR0VUX1ZFTkRPUiddCi0gICAgICAgIHNlbGYudGFyZ2V0X29zID0gYmJfdmFyc1snVEFSR0VUX09TJ10KLSAgICAgICAgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlID0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgsIHNlbGYuaG9zdGRpc3RybykKLQotICAgICMgQ3JlYXRlcyBhIHNwZWNpYWwgc3N0YXRlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgb3B0aW9uIHRvIGFkZCBzc3RhdGUgbWlycm9ycwotICAgIGRlZiBjb25maWdfc3N0YXRlKHNlbGYsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPUZhbHNlLCBhZGRfbG9jYWxfbWlycm9ycz1bXSk6Ci0gICAgICAgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb24gPSB0ZW1wX3NzdGF0ZV9sb2NhdGlvbgotCi0gICAgICAgIGlmIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb246Ci0gICAgICAgICAgICB0ZW1wX3NzdGF0ZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJ0ZW1wX3NzdGF0ZV8lcyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCi0gICAgICAgICAgICBjb25maWdfdGVtcF9zc3RhdGUgPSAiU1NUQVRFX0RJUiA9IFwiJXNcIiIgJSB0ZW1wX3NzdGF0ZV9wYXRoCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3RlbXBfc3N0YXRlKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wX3NzdGF0ZV9wYXRoKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTU1RBVEVfRElSJywgJ05BVElWRUxTQlNUUklORyddKQotICAgICAgICBzZWxmLnNzdGF0ZV9wYXRoID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCi0gICAgICAgIHNlbGYuaG9zdGRpc3RybyA9IGJiX3ZhcnNbJ05BVElWRUxTQlNUUklORyddCi0gICAgICAgIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSA9IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pCi0KLSAgICAgICAgaWYgYWRkX2xvY2FsX21pcnJvcnM6Ci0gICAgICAgICAgICBjb25maWdfc2V0X3NzdGF0ZV9pZl9ub3Rfc2V0ID0gJ1NTVEFURV9NSVJST1JTID89ICIiJwotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zZXRfc3N0YXRlX2lmX25vdF9zZXQpCi0gICAgICAgICAgICBmb3IgbG9jYWxfbWlycm9yIGluIGFkZF9sb2NhbF9taXJyb3JzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5qb2luKGxvY2FsX21pcnJvcikgPT0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgpLCBtc2c9J0Nhbm5vdCBhZGQgdGhlIGN1cnJlbnQgc3N0YXRlIHBhdGggYXMgYSBzc3RhdGUgbWlycm9yJykKLSAgICAgICAgICAgICAgICBjb25maWdfc3N0YXRlX21pcnJvciA9ICJTU1RBVEVfTUlSUk9SUyArPSBcImZpbGU6Ly8uKiBmaWxlOi8vLyVzL1BBVEhcIiIgJSBsb2NhbF9taXJyb3IKLSAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NzdGF0ZV9taXJyb3IpCi0KLSAgICAjIFJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgc3N0YXRlIGZpbGVzCi0gICAgZGVmIHNlYXJjaF9zc3RhdGUoc2VsZiwgZmlsZW5hbWVfcmVnZXgsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSk6Ci0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYuc3N0YXRlX3BhdGgpOgotICAgICAgICAgICAgaWYgZGlzdHJvX3NwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLmhvc3RkaXN0cm8sIHJvb3QpOgotICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQotICAgICAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLnNzdGF0ZV9wYXRoLCByb290KToKLSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKLSAgICAgICAgcmV0dXJuIHJlc3VsdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGV0ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM1ZGRmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGV0ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ4MyArMCwwIEBACi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBnbG9iCi1pbXBvcnQgc3VicHJvY2VzcwotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCi1mcm9tIG9lcWEuc2VsZnRlc3Quc3N0YXRlIGltcG9ydCBTU3RhdGVCYXNlCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgU1N0YXRlVGVzdHMoU1N0YXRlQmFzZSk6Ci0KLSAgICAjIFRlc3Qgc3N0YXRlIGZpbGVzIGNyZWF0aW9uIGFuZCB0aGVpciBsb2NhdGlvbgotICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1UcnVlKToKLSAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCi0KLSAgICAgICAgaWYgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb246Ci0gICAgICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbiddICsgdGFyZ2V0cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQotCi0gICAgICAgIGJpdGJha2UodGFyZ2V0cykKLSAgICAgICAgZmlsZV90cmFja2VyID0gW10KLSAgICAgICAgcmVzdWx0cyA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQotICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWM6Ci0gICAgICAgICAgICBmb3IgciBpbiByZXN1bHRzOgotICAgICAgICAgICAgICAgIGlmIHIuZW5kc3dpdGgoKCJfcG9wdWxhdGVfbGljLnRneiIsICJfcG9wdWxhdGVfbGljLnRnei5zaWdpbmZvIiwgIl9mZXRjaC50Z3ouc2lnaW5mbyIsICJfdW5wYWNrLnRnei5zaWdpbmZvIiwgIl9wYXRjaC50Z3ouc2lnaW5mbyIpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmaWxlX3RyYWNrZXIuYXBwZW5kKHIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxlX3RyYWNrZXIgPSByZXN1bHRzCi0KLSAgICAgICAgaWYgc2hvdWxkX3Bhc3M6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZV90cmFja2VyICwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgZmlsZXMgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmaWxlX3RyYWNrZXIgLCBtc2c9IkZvdW5kIHNzdGF0ZSBmaWxlcyBpbiB0aGUgd3JvbmcgcGxhY2UgZm9yOiAlcyAoZm91bmQgJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoZmlsZV90cmFja2VyKSkpCi0KLSAgICBAdGVzdGNhc2UoOTc1KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fc3BlY2lmaWNfcGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzQpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19zcGVjaWZpY19mYWlsKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPUZhbHNlKQotCi0gICAgQHRlc3RjYXNlKDk3NikKLSAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX25vbnNwZWNpZmljX3Bhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3NSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX25vbnNwZWNpZmljX2ZhaWwoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPUZhbHNlKQotCi0gICAgIyBUZXN0IHRoZSBzc3RhdGUgZmlsZXMgZGVsZXRpb24gcGFydCBvZiB0aGUgZG9fY2xlYW5zc3RhdGUgdGFzawotICAgIGRlZiBydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHNlbGYsIHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQotCi0gICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQotCi0gICAgICAgIGJpdGJha2UodGFyZ2V0cykKLSAgICAgICAgdGd6X2NyZWF0ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRnel9jcmVhdGVkLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSAudGd6IGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHRnel9jcmVhdGVkKSkpCi0KLSAgICAgICAgc2lnaW5mb19jcmVhdGVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wuc2lnaW5mbyQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2lnaW5mb19jcmVhdGVkLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSAuc2lnaW5mbyBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihzaWdpbmZvX2NyZWF0ZWQpKSkKLQotICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKLSAgICAgICAgdGd6X3JlbW92ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCB0Z3pfcmVtb3ZlZCwgbXNnPSJkb19jbGVhbnNzdGF0ZSBkaWRuJ3QgcmVtb3ZlIC50Z3ogc3N0YXRlIGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHRnel9yZW1vdmVkKSkpCi0KLSAgICBAdGVzdGNhc2UoOTc3KQotICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX3NwZWNpZmljX25vbnNwZWNpZmljKHNlbGYpOgotICAgICAgICB0YXJnZXRzID0gWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddCi0gICAgICAgIHRhcmdldHMuYXBwZW5kKCdsaW51eC1saWJjLWhlYWRlcnMnKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2sodGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzYpCi0gICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fbm9uc3BlY2lmaWMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayhbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzcpCi0gICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fc3BlY2lmaWMoc2VsZik6Ci0gICAgICAgIHRhcmdldHMgPSBbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10KLSAgICAgICAgdGFyZ2V0cy5hcHBlbmQoJ2xpbnV4LWxpYmMtaGVhZGVycycpCi0gICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayh0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0KLSAgICAjIFRlc3QgcmVidWlsZGluZyBvZiBkaXN0cm8tc3BlY2lmaWMgc3N0YXRlIGZpbGVzCi0gICAgZGVmIHJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShzZWxmLCB0YXJnZXRzLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKToKLSAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCi0KLSAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCi0KLSAgICAgICAgYml0YmFrZSh0YXJnZXRzKQotICAgICAgICByZXN1bHRzID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSkKLSAgICAgICAgZmlsdGVyZWRfcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciByIGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBpZiByLmVuZHN3aXRoKCgiX3BvcHVsYXRlX2xpYy50Z3oiLCAiX3BvcHVsYXRlX2xpYy50Z3ouc2lnaW5mbyIpKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmlsdGVyZWRfcmVzdWx0cy5hcHBlbmQocikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbHRlcmVkX3Jlc3VsdHMgPT0gW10sIG1zZz0iRm91bmQgZGlzdHJvIG5vbi1zcGVjaWZpYyBzc3RhdGUgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoZmlsdGVyZWRfcmVzdWx0cykpKQotICAgICAgICBmaWxlX3RyYWNrZXJfMSA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZV90cmFja2VyXzEpID49IGxlbih0YXJnZXRzKSwgbXNnID0gIk5vdCBhbGwgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCi0KLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgKyAiX29sZCIpCi0gICAgICAgIHNodXRpbC5jb3B5dHJlZShzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUsIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSArICJfb2xkIikKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUpCi0KLSAgICAgICAgYml0YmFrZShbJy1jY2xlYW4nXSArIHRhcmdldHMpCi0gICAgICAgIGJpdGJha2UodGFyZ2V0cykKLSAgICAgICAgZmlsZV90cmFja2VyXzIgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVfdHJhY2tlcl8yKSA+PSBsZW4odGFyZ2V0cyksIG1zZyA9ICJOb3QgYWxsIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQotCi0gICAgICAgIG5vdF9yZWNyZWF0ZWQgPSBbeCBmb3IgeCBpbiBmaWxlX3RyYWNrZXJfMSBpZiB4IG5vdCBpbiBmaWxlX3RyYWNrZXJfMl0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdF9yZWNyZWF0ZWQgPT0gW10sIG1zZz0iVGhlIGZvbGxvd2luZyBzc3RhdGUgZmlsZXMgd2FyZSBub3QgcmVjcmVhdGVkOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgbm90X3JlY3JlYXRlZCkpKQotCi0gICAgICAgIGNyZWF0ZWRfb25jZSA9IFt4IGZvciB4IGluIGZpbGVfdHJhY2tlcl8yIGlmIHggbm90IGluIGZpbGVfdHJhY2tlcl8xXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlZF9vbmNlID09IFtdLCBtc2c9IlRoZSBmb2xsb3dpbmcgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBvbmx5IGluIHRoZSBzZWNvbmQgcnVuOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgY3JlYXRlZF9vbmNlKSkpCi0KLSAgICBAdGVzdGNhc2UoMTc1KQotICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9jcm9zc19uYXRpdmVfdGFyZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1jcm9zcy0nICsgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzcyKQotICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9jcm9zc190YXJnZXQoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtY3Jvc3MtJyArIHNlbGYudHVuZV9hcmNoXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzczKQotICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9uYXRpdmVfdGFyZ2V0KHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLW5hdGl2ZSddLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0KLSAgICAjIFRlc3QgdGhlIHNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50IHNjcmlwdC4gRWFjaCBlbGVtZW50IGluIHRoZSBnbG9iYWxfY29uZmlnIGxpc3QgaXMgdXNlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHRhcmdldF9jb25maWcgbGlzdAotICAgICMgZ2xvYmFsX2NvbmZpZyBlbGVtZW50cyBhcmUgZXhwZWN0ZWQgdG8gbm90IGdlbmVyYXRlIGFueSBzc3RhdGUgZmlsZXMgdGhhdCB3b3VsZCBiZSByZW1vdmVkIGJ5IHNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50LnNoIChzdWNoIGFzIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBNQUNISU5FKQotICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoc2VsZiwgdGFyZ2V0LCBnbG9iYWxfY29uZmlnPVsnJ10sIHRhcmdldF9jb25maWc9WycnXSwgaWdub3JlX3BhdHRlcm5zPVtdKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JhbF9jb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXRfY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGdsb2JhbF9jb25maWcpID09IGxlbih0YXJnZXRfY29uZmlnKSwgbXNnPSdMaXN0cyBnbG9iYWxfY29uZmlnIGFuZCB0YXJnZXRfY29uZmlnIHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cycpCi0gICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBhZGRfbG9jYWxfbWlycm9ycz1bc2VsZi5zc3RhdGVfcGF0aF0pCi0KLSAgICAgICAgIyBJZiBidWlsZGhpc3RvcnkgaXMgZW5hYmxlZCwgd2UgbmVlZCB0byBkaXNhYmxlIHZlcnNpb24tZ29pbmctYmFja3dhcmRzCi0gICAgICAgICMgUUEgY2hlY2tzIGZvciB0aGlzIHRlc3QuIEl0IG1heSByZXBvcnQgZXJyb3JzIG90aGVyd2lzZS4KLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdFUlJPUl9RQV9yZW1vdmUgPSAidmVyc2lvbi1nb2luZy1iYWNrd2FyZHMiJykKLQotICAgICAgICAjIEZvciBub3QgdGhpcyBvbmx5IGNoZWNrcyBpZiByYW5kb20gc3N0YXRlIHRhc2tzIGFyZSBoYW5kbGVkIGNvcnJlY3RseSBhcyBhIGdyb3VwLgotICAgICAgICAjIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGFkZCBjb250cm9sIG92ZXIgd2hhdCB0YXNrcyB3ZSBjaGVjayBmb3IuCi0KLSAgICAgICAgc3N0YXRlX2FyY2hzX2xpc3QgPSBbXQotICAgICAgICBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlID0gW10KLSAgICAgICAgZm9yIGlkeCBpbiByYW5nZShsZW4odGFyZ2V0X2NvbmZpZykpOgotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGdsb2JhbF9jb25maWdbaWR4XSkKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWdbaWR4XSkKLSAgICAgICAgICAgIHNzdGF0ZV9hcmNoID0gZ2V0X2JiX3ZhcignU1NUQVRFX1BLR0FSQ0gnLCB0YXJnZXQpCi0gICAgICAgICAgICBpZiBub3Qgc3N0YXRlX2FyY2ggaW4gc3N0YXRlX2FyY2hzX2xpc3Q6Ci0gICAgICAgICAgICAgICAgc3N0YXRlX2FyY2hzX2xpc3QuYXBwZW5kKHNzdGF0ZV9hcmNoKQotICAgICAgICAgICAgaWYgdGFyZ2V0X2NvbmZpZ1tpZHhdID09IHRhcmdldF9jb25maWdbLTFdOgotICAgICAgICAgICAgICAgIHRhcmdldF9zc3RhdGVfYmVmb3JlX2J1aWxkID0gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKQotICAgICAgICAgICAgYml0YmFrZSgiLWNjbGVhbiAlcyIgJSB0YXJnZXQpCi0gICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgaWYgdGFyZ2V0X2NvbmZpZ1tpZHhdID09IHRhcmdldF9jb25maWdbLTFdOgotICAgICAgICAgICAgICAgIHRhcmdldF9zc3RhdGVfYWZ0ZXJfYnVpbGQgPSBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSArPSBbeCBmb3IgeCBpbiB0YXJnZXRfc3N0YXRlX2FmdGVyX2J1aWxkIGlmIHggbm90IGluIHRhcmdldF9zc3RhdGVfYmVmb3JlX2J1aWxkIGlmIG5vdCBhbnkocGF0dGVybiBpbiB4IGZvciBwYXR0ZXJuIGluIGlnbm9yZV9wYXR0ZXJucyldCi0gICAgICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoZ2xvYmFsX2NvbmZpZ1tpZHhdKQotICAgICAgICAgICAgc2VsZi5yZW1vdmVfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZ1tpZHhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2cgPSAiYnVpbGQgb2YgJXMgZmFpbGVkIHdpdGggJXMiICUgKHRhcmdldCwgcmVzdWx0Lm91dHB1dCkpCi0KLSAgICAgICAgcnVuQ21kKCJzc3RhdGUtY2FjaGUtbWFuYWdlbWVudC5zaCAteSAtLWNhY2hlLWRpcj0lcyAtLXJlbW92ZS1kdXBsaWNhdGVkIC0tZXh0cmEtYXJjaHM9JXMiICUgKHNlbGYuc3N0YXRlX3BhdGgsICcsJy5qb2luKG1hcChzdHIsIHNzdGF0ZV9hcmNoc19saXN0KSkpKQotICAgICAgICBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZSA9IFt4IGZvciB4IGluIHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykgaWYgbm90IGFueShwYXR0ZXJuIGluIHggZm9yIHBhdHRlcm4gaW4gaWdub3JlX3BhdHRlcm5zKV0KLQotICAgICAgICBhY3R1YWxfbm90X2V4cGVjdGVkID0gW3ggZm9yIHggaW4gYWN0dWFsX3JlbWFpbmluZ19zc3RhdGUgaWYgeCBub3QgaW4gZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZV0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhY3R1YWxfbm90X2V4cGVjdGVkLCBtc2c9IkZpbGVzIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBidXQgd2FyZSBub3Q6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBhY3R1YWxfbm90X2V4cGVjdGVkKSkpCi0gICAgICAgIGV4cGVjdGVkX25vdF9hY3R1YWwgPSBbeCBmb3IgeCBpbiBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlIGlmIHggbm90IGluIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlXQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4cGVjdGVkX25vdF9hY3R1YWwsIG1zZz0iRXh0cmEgZmlsZXMgd2FyZSByZW1vdmVkOiAlcyIgJywgJy5qb2luKG1hcChzdHIsIGV4cGVjdGVkX25vdF9hY3R1YWwpKSkKLQotICAgIEB0ZXN0Y2FzZSg5NzMpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzEoc2VsZik6Ci0gICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQotICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCi0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKLQotICAgIEB0ZXN0Y2FzZSg5NzgpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzIoc2VsZik6Ci0gICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQotICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCi0KLSAgICBAdGVzdGNhc2UoOTc5KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8zKHNlbGYpOgotICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KLSAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYtNjQiJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoZ2xvYmFsX2NvbmZpZ1swXSkKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4NiInKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCi0KLSAgICBAdGVzdGNhc2UoOTc0KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19tYWNoaW5lKHNlbGYpOgotICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KLSAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYtNjQiJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJycpCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYiJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJycpCi0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKLQotICAgIEB0ZXN0Y2FzZSgxMjcwKQotICAgIGRlZiB0ZXN0X3NzdGF0ZV8zMl82NF9zYW1lX2hhc2goc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBmb3IgYm90aCBuYXRpdmUgYW5kIHRhcmdldCBzaG91bGQgbm90IHZhcnkgd2hldGhlcgotICAgICAgICB0aGV5J3JlIGJ1aWx0IG9uIGEgMzIgb3IgNjQgYml0IHN5c3RlbS4gUmF0aGVyIHRoYW4gcmVxdWlyaW5nIHR3byBkaWZmZXJlbnQKLSAgICAgICAgYnVpbGQgbWFjaGluZXMgYW5kIHJ1bm5pbmcgYSBidWlsZHMsIG92ZXJyaWRlIHRoZSB2YXJpYWJsZXMgY2FsbGluZyB1bmFtZSgpCi0gICAgICAgIG1hbnVhbGx5IGFuZCBjaGVjayB1c2luZyBiaXRiYWtlIC1TLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLU1BQ0hJTkUgPSAicWVtdXg4NiIKLVRNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoIgotQlVJTERfQVJDSCA9ICJ4ODZfNjQiCi1CVUlMRF9PUyA9ICJsaW51eCIKLVNES01BQ0hJTkUgPSAieDg2XzY0IgotUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotTUFDSElORSA9ICJxZW11eDg2IgotVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgotQlVJTERfQVJDSCA9ICJpNjg2IgotQlVJTERfT1MgPSAibGludXgiCi1TREtNQUNISU5FID0gImk2ODYiCi1QQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0gcGFja2FnZV9pcGsgcGFja2FnZV9kZWIiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCi0KLSAgICAgICAgZGVmIGdldF9maWxlcyhkKToKLSAgICAgICAgICAgIGYgPSBbXQotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6Ci0gICAgICAgICAgICAgICAgaWYgImNvcmUtaW1hZ2Utc2F0byIgaW4gcm9vdDoKLSAgICAgICAgICAgICAgICAgICAgIyBTREtNQUNISU5FIGNoYW5naW5nIHdpbGwgY2hhbmdlCi0gICAgICAgICAgICAgICAgICAgICMgZG9fcm9vdGZzL2RvX3Rlc3RpbWFnZS9kb19idWlsZCBzdGFtcHMgb2YgaW1hZ2VzIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICMgaXMgc2FmZSB0byBpZ25vcmUuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZi5leHRlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpIGZvciBuYW1lIGluIGZpbGVzKQotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKLSAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKS5yZXBsYWNlKCJpNjg2LWxpbnV4IiwgIng4Nl82NC1saW51eCIpLnJlcGxhY2UoImk2ODYiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi1saW51eCIsICJ4ODZfNjQiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi1saW51eCIsICkgZm9yIHggaW4gZmlsZXMyXQotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKLQotCi0gICAgQHRlc3RjYXNlKDEyNzEpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX25hdGl2ZWxzYnN0cmluZ19zYW1lX2hhc2goc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyIE5BVElWRUxTQlNUUklORyBpcwotICAgICAgICBkZXRlY3RlZC4gUmF0aGVyIHRoYW4gcmVxdWlyaW5nIHR3byBkaWZmZXJlbnQgYnVpbGQgbWFjaGluZXMgYW5kIHJ1bm5pbmcKLSAgICAgICAgYnVpbGRzLCBvdmVycmlkZSB0aGUgdmFyaWFibGVzIG1hbnVhbGx5IGFuZCBjaGVjayB1c2luZyBiaXRiYWtlIC1TLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCi1OQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0FcIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCi1OQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0JcIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQotCi0gICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6Ci0gICAgICAgICAgICBmID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgotICAgICAgICAgICAgICAgIGYuZXh0ZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSBmb3IgbmFtZSBpbiBmaWxlcykKLSAgICAgICAgICAgIHJldHVybiBmCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCi0gICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKLQotICAgIEB0ZXN0Y2FzZSgxMzY4KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgYWxsYXJjaCBwYWNrYWdlcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyCi0gICAgICAgIE1BQ0hJTkUgaXMgc2V0LiBDaGVjayB0aGlzIHVzaW5nIGJpdGJha2UgLVMuCi0gICAgICAgIEFsc28sIHJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgdGVzdCwgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbgotICAgICAgICB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgotICAgICAgICAiIiIKLQotICAgICAgICBjb25maWdBID0gIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgotTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCi0iIiIKLSAgICAgICAgY29uZmlnQiA9ICIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCi1NQUNISU5FID0gXCJxZW11YXJtXCIKLSIiIgotICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCi0KLSAgICBkZWYgdGVzdF9zc3RhdGVfYWxsYXJjaF9zYW1lc2lnc19tdWx0aWxpYihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIGFsbGFyY2ggbXVsdGlsaWIgcGFja2FnZXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlcgotICAgICAgICBNQUNISU5FIGlzIHNldC4gQ2hlY2sgdGhpcyB1c2luZyBiaXRiYWtlIC1TLgotICAgICAgICBBbHNvLCByYXRoZXIgdGhhbiBkdXBsaWNhdGUgdGhlIHRlc3QsIGNoZWNrIG5hdGl2ZXNkayBzdGFtcHMgYXJlIHRoZSBzYW1lIGJldHdlZW4KLSAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgY29uZmlnQSA9ICIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKLU1BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgotcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKLU1VTFRJTElCUyA9IFwibXVsdGlsaWI6bGliMzJcIgotREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gXCJ4ODZcIgotIiIiCi0gICAgICAgIGNvbmZpZ0IgPSAiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgotTUFDSElORSA9IFwicWVtdWFybVwiCi1yZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgotTVVMVElMSUJTID0gXCJcIgotIiIiCi0gICAgICAgIHNlbGYuc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3MoY29uZmlnQSwgY29uZmlnQikKLQotICAgIGRlZiBzc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhzZWxmLCBjb25maWdBLCBjb25maWdCKToKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdBKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnQikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotCi0gICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6Ci0gICAgICAgICAgICBmID0ge30KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiAibWV0YS1lbnZpcm9ubWVudCIgaW4gcm9vdCBvciAiY3Jvc3MtY2FuYWRpYW4iIGluIHJvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiAiZG9fYnVpbGQiIG5vdCBpbiBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyAxLjQuMStnaXRBVVRPSU5DKzMwMmZjYTlmNGMtcjAuZG9fcGFja2FnZV93cml0ZV9pcGsuc2lnZGF0YS5mM2EyYTM4Njk3ZGE3NDNmMGRiZWQ4YjU2YWFmY2Y3OQotICAgICAgICAgICAgICAgICAgICAgICAgKF8sIHRhc2ssIF8sIHNoYXNoKSA9IG5hbWUucnNwbGl0KCIuIiwgMykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZbb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUocm9vdCksIHRhc2spXSA9IHNoYXNoCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvYWxsIiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItIiArIHNlbGYudGFyZ2V0X29zKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzMSwgZmlsZXMyKQotCi0gICAgICAgIG5hdGl2ZXNka2RpciA9IG9zLnBhdGguYmFzZW5hbWUoZ2xvYi5nbG9iKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyotbmF0aXZlc2RrKi1saW51eCIpWzBdKQotCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iICsgbmF0aXZlc2RrZGlyKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIgKyBuYXRpdmVzZGtkaXIpCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlczEsIGZpbGVzMikKLQotICAgIEB0ZXN0Y2FzZSgxMzY5KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9zYW1ldHVuZV9zYW1lc2lncyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBpZGVudGljYWwgbWFjaGluZXMgKHVzaW5nIHRoZSBzYW1lIHR1bmUpIHNob3VsZCBiZSB0aGUKLSAgICAgICAgc2FtZSwgYXBhcnQgZnJvbSBjaGFuZ2VzIHdpdGhpbiB0aGUgbWFjaGluZSBzcGVjaWZpYyBzdGFtcHMgZGlyZWN0b3J5LiBXZSB1c2UgdGhlCi0gICAgICAgIHFlbXV4ODZjb3B5IG1hY2hpbmUgdG8gdGVzdCB0aGlzLiBBbHNvIGluY2x1ZGUgbXVsdGlsaWJzIGluIHRoZSB0ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCi1NQUNISU5FID0gXCJxZW11eDg2XCIKLXJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCi1NVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCi1ERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKLU1BQ0hJTkUgPSBcInFlbXV4ODZjb3B5XCIKLXJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCi1NVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCi1ERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0KLSAgICAgICAgZGVmIGdldF9maWxlcyhkKToKLSAgICAgICAgICAgIGYgPSBbXQotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmICJtZXRhLWVudmlyb25tZW50IiBpbiByb290IG9yICJjcm9zcy1jYW5hZGlhbiIgaW4gcm9vdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmICJxZW11eDg2Y29weS0iIGluIHJvb3Qgb3IgInFlbXV4ODYtIiBpbiByb290OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgImRvX2J1aWxkIiBub3QgaW4gbmFtZSBhbmQgImRvX3BvcHVsYXRlX3NkayIgbm90IGluIG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmLmFwcGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMiKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzIikKLSAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKSBmb3IgeCBpbiBmaWxlczJdCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQotCi0KLSAgICBkZWYgdGVzdF9zc3RhdGVfbm9vcF9zYW1lc2lncyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBidWlsZHMgd2l0aCB0aGVzZSB2YXJpYWJsZXMgY2hhbmdlZCBvcgotICAgICAgICBjbGFzc2VzIGluaGVyaXRzIHNob3VsZCBiZSB0aGUgc2FtZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKLUJCX05VTUJFUl9USFJFQURTID0gIjEiCi1QQVJBTExFTF9NQUtFID0gIi1qIDEiCi1ETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMSIKLVRJTUUgPSAiMTExMTExIgotREFURSA9ICIyMDE2MTExMSIKLUlOSEVSSVRfcmVtb3ZlID0gImJ1aWxkc3RhdHMtc3VtbWFyeSBidWlsZGhpc3RvcnkgdW5pbmF0aXZlIgotaHR0cF9wcm94eSA9ICIiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL2Rvd25sb2FkMSIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMiIKLUJCX05VTUJFUl9USFJFQURTID0gIjIiCi1QQVJBTExFTF9NQUtFID0gIi1qIDIiCi1ETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMiIKLVRJTUUgPSAiMjIyMjIyIgotREFURSA9ICIyMDE2MTIxMiIKLSMgQWx3YXlzIHJlbW92ZSB1bmluYXRpdmUgYXMgd2UncmUgY2hhbmdpbmcgcHJveGllcwotSU5IRVJJVF9yZW1vdmUgPSAidW5pbmF0aXZlIgotSU5IRVJJVCArPSAiYnVpbGRzdGF0cy1zdW1tYXJ5IGJ1aWxkaGlzdG9yeSIKLWh0dHBfcHJveHkgPSAiaHR0cDovL2V4YW1wbGUuY29tLyIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL2Rvd25sb2FkMiIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotCi0gICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6Ci0gICAgICAgICAgICBmID0ge30KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBuYW1lLCBzaGFzaCA9IG5hbWUucnNwbGl0KCcuJywgMSkKLSAgICAgICAgICAgICAgICAgICAgIyBFeHRyYWN0IGp1c3QgdGhlIG1hY2hpbmUgYW5kIHJlY2lwZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5zZXAuam9pbihyb290LnJzcGxpdChvcy5zZXAsIDIpWy0yOl0gKyBbbmFtZV0pCi0gICAgICAgICAgICAgICAgICAgIGZbYmFzZV0gPSBzaGFzaAotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKLSAgICAgICAgIyBSZW1vdmUgaXRlbXMgdGhhdCBhcmUgaWRlbnRpY2FsIGluIGJvdGggc2V0cwotICAgICAgICBmb3Igayx2IGluIGZpbGVzMS5pdGVtcygpICYgZmlsZXMyLml0ZW1zKCk6Ci0gICAgICAgICAgICBkZWwgZmlsZXMxW2tdCi0gICAgICAgICAgICBkZWwgZmlsZXMyW2tdCi0gICAgICAgIGlmIG5vdCBmaWxlczEgYW5kIG5vdCBmaWxlczI6Ci0gICAgICAgICAgICAjIE5vIGNoYW5nZXMsIHNvIHdlJ3JlIGRvbmUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBrIGluIGZpbGVzMS5rZXlzKCkgfCBmaWxlczIua2V5cygpOgotICAgICAgICAgICAgaWYgayBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgotICAgICAgICAgICAgICAgIHByaW50KCIlcyBkaWZmZXJzOiIgJSBrKQotICAgICAgICAgICAgICAgIHByaW50KHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiYml0YmFrZS1kaWZmc2lncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIgKyBrICsgIi4iICsgZmlsZXMxW2tdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczJba10pKSkKLSAgICAgICAgICAgIGVsaWYgayBpbiBmaWxlczEgYW5kIGsgbm90IGluIGZpbGVzMjoKLSAgICAgICAgICAgICAgICBwcmludCgiJXMgaW4gZmlsZXMxIiAlIGspCi0gICAgICAgICAgICBlbGlmIGsgbm90IGluIGZpbGVzMSBhbmQgayBpbiBmaWxlczI6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVzIGluIGZpbGVzMiIgJSBrKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgInNob3VsZG4ndCByZWFjaCBoZXJlIgotICAgICAgICBzZWxmLmZhaWwoInNzdGF0ZSBoYXNoZXMgbm90IGlkZW50aWNhbC4iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvdGluZm9pbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3RpbmZvaWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYTBjM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvdGluZm9pbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgYmIudGluZm9pbAotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBUaW5mb2lsVGVzdHMob2VTZWxmVGVzdCk6Ci0gICAgIiIiIEJhc2ljIHRlc3RzIGZvciB0aGUgdGluZm9pbCBBUEkgIiIiCi0KLSAgICBAdGVzdGNhc2UoMTU2OCkKLSAgICBkZWYgdGVzdF9nZXR2YXIoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQotICAgICAgICAgICAgbWFjaGluZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdNQUNISU5FJykKLSAgICAgICAgICAgIGlmIG5vdCBtYWNoaW5lOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGdldCBNQUNISU5FIHZhbHVlIC0gcmV0dXJuZWQgJXMnICUgbWFjaGluZSkKLQotICAgIEB0ZXN0Y2FzZSgxNTY5KQotICAgIGRlZiB0ZXN0X2V4cGFuZChzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCi0gICAgICAgICAgICBleHByID0gJyR7QG9zLmdldHBpZCgpfScKLSAgICAgICAgICAgIHBpZCA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZXhwYW5kKGV4cHIpCi0gICAgICAgICAgICBpZiBub3QgcGlkOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGV4cGFuZCAiJXMiIC0gcmV0dXJuZWQgJXMnICUgKGV4cHIsIHBpZCkpCi0KLSAgICBAdGVzdGNhc2UoMTU3MCkKLSAgICBkZWYgdGVzdF9nZXR2YXJfYmJfb3JpZ2VudihzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCi0gICAgICAgICAgICBvcmlnZW52ID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JCX09SSUdFTlYnLCBGYWxzZSkKLSAgICAgICAgICAgIGlmIG5vdCBvcmlnZW52OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGdldCBCQl9PUklHRU5WIHZhbHVlIC0gcmV0dXJuZWQgJXMnICUgb3JpZ2VudikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ2Vudi5nZXRWYXIoJ0hPTUUnLCBGYWxzZSksIG9zLmVudmlyb25bJ0hPTUUnXSkKLQotICAgIEB0ZXN0Y2FzZSgxNTcxKQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZShzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQotICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQotICAgICAgICAgICAgaWYgbm90IGJlc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdQTicpKQotCi0gICAgQHRlc3RjYXNlKDE1NzIpCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2NvcHlfZXhwYW5kKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpZiBub3QgYmVzdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdKQotICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IHZhcmlhYmxlIHZhbHVlcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ1BOJykpCi0gICAgICAgICAgICAjIENoZWNrIHRoYXQgZXhwYW5kaW5nIGEgdmFsdWUgdGhhdCBpbmNsdWRlcyBhIHZhcmlhYmxlIHJlZmVyZW5jZSB3b3JrcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ0JQTicpKQotICAgICAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCBjaGFuZ2luZyB0aGUgcmVmZXJlbmNlZCB2YXJpYWJsZSdzIHZhbHVlIGluIGEgY29weSBnaXZlcyB0aGF0Ci0gICAgICAgICAgICAjIHZhbHVlIHdoZW4gZXhwYW5kaW5nCi0gICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkocmQpCi0gICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdoZWxsbycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycsIGxvY2FsZGF0YS5nZXRWYXIoJ0JQTicpKQotCi0gICAgQHRlc3RjYXNlKDE1NzMpCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2luaXRpYWxfZGF0YXN0b3JlKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpZiBub3QgYmVzdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGRjb3B5ID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBkY29weS5zZXRWYXIoJ01ZVkFSSUFCTEUnLCAnc29tZXZhbHVlJykKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdLCBjb25maWdfZGF0YT1kY29weSkKLSAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NvbWV2YWx1ZScsIHJkLmdldFZhcignTVlWQVJJQUJMRScpKQotCi0gICAgQHRlc3RjYXNlKDE1NzQpCi0gICAgZGVmIHRlc3RfbGlzdF9yZWNpcGVzKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICAjIENoZWNrIHBrZ19wbgotICAgICAgICAgICAgY2hlY2twbnMgPSBbJ3RhcicsICdhdXRvbWFrZScsICdjb3JldXRpbHMnLCAnbTQtbmF0aXZlJywgJ25hdGl2ZXNkay1nY2MnXQotICAgICAgICAgICAgcGtnX3BuID0gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfcG4KLSAgICAgICAgICAgIGZvciBwbiBpbiBjaGVja3BuczoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBuLCBwa2dfcG4pCi0gICAgICAgICAgICAjIENoZWNrIHBrZ19mbgotICAgICAgICAgICAgY2hlY2tmbnMgPSB7J25hdGl2ZXNkay1nY2MnOiAnXnZpcnR1YWw6bmF0aXZlc2RrOi4qJywgJ2NvcmV1dGlscyc6ICcuKi9jb3JldXRpbHNfLiouYmInfQotICAgICAgICAgICAgZm9yIGZuLCBwbiBpbiB0aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddLnBrZ19mbi5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIHBuIGluIGNoZWNrcG5zOgotICAgICAgICAgICAgICAgICAgICBpZiBwbiBpbiBjaGVja2ZuczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChjaGVja2Zuc1twbl0sIGZuKSwgJ0VudHJ5IGZvciAlczogJXMgZGlkIG5vdCBtYXRjaCAlcycgJSAocG4sIGZuLCBjaGVja2Zuc1twbl0pKQotICAgICAgICAgICAgICAgICAgICBjaGVja3Bucy5yZW1vdmUocG4pCi0gICAgICAgICAgICBpZiBjaGVja3BuczoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHBrZ19mbiBlbnRyaWVzIGZvcjogJXMnICUgJywgJy5qb2luKGNoZWNrcG5zKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTc1KQotICAgIGRlZiB0ZXN0X3dhaXRfZXZlbnQoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQotICAgICAgICAgICAgIyBOZWVkIHRvIGRyYWluIGV2ZW50cyBvdGhlcndpc2UgZXZlbnRzIHRoYXQgd2lsbCBiZSBtYXNrZWQgd2lsbCBzdGlsbCBiZSBpbiB0aGUgcXVldWUKLSAgICAgICAgICAgIHdoaWxlIHRpbmZvaWwud2FpdF9ldmVudCgwLjI1KToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kJywgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCddKQotICAgICAgICAgICAgcGF0dGVybiA9ICdjb25mJwotICAgICAgICAgICAgcmVzID0gdGluZm9pbC5ydW5fY29tbWFuZCgnZmluZEZpbGVzTWF0Y2hpbmdJbkRpcicsIHBhdHRlcm4sICdjb25mL21hY2hpbmUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcykKLQotICAgICAgICAgICAgZXZlbnRyZWNlaXZlZCA9IEZhbHNlCi0gICAgICAgICAgICB3YWl0Y291bnQgPSA1Ci0gICAgICAgICAgICB3aGlsZSB3YWl0Y291bnQgPiAwOgotICAgICAgICAgICAgICAgIGV2ZW50ID0gdGluZm9pbC53YWl0X2V2ZW50KDEpCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdHRlcm4sIGV2ZW50Ll9wYXR0ZXJuKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncWVtdWFybS5jb25mJywgZXZlbnQuX21hdGNoZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudHJlY2VpdmVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGV2ZW50OiAlcycgJSBldmVudCkKLQotICAgICAgICAgICAgICAgIHdhaXRjb3VudCA9IHdhaXRjb3VudCAtIDEKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3YWl0Y291bnQsIDAsICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgQ29tbWFuZENvbXBsZXRlZCBldmVudCBmcm9tIGJpdGJha2Ugc2VydmVyJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShldmVudHJlY2VpdmVkLCAnRGlkIG5vdCByZWNlaXZlIEZpbGVzTWF0Y2hpbmdGb3VuZCBldmVudCBmcm9tIGJpdGJha2Ugc2VydmVyJykKLQotICAgIEB0ZXN0Y2FzZSgxNTc2KQotICAgIGRlZiB0ZXN0X3NldHZhcmlhYmxlX2NsZWFuKHNlbGYpOgotICAgICAgICAjIEZpcnN0IGNoZWNrIHRoYXQgc2V0VmFyaWFibGUgYWZmZWN0cyB0aGUgZGF0YXN0b3JlCi0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQotICAgICAgICAgICAgdGluZm9pbC5ydW5fY29tbWFuZCgnc2V0VmFyaWFibGUnLCAnVEVTVFZBUicsICdzcGVjaWFsdmFsdWUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBzZXRWYXJpYWJsZSBpcyBub3QgcmVmbGVjdGVkIGluIGNsaWVudC1zaWRlIGdldFZhcigpJykKLQotICAgICAgICAjIE5vdyBjaGVjayB0aGF0IHRoZSBzZXRWYXJpYWJsZSdzIGVmZmVjdHMgYXJlIG5vIGxvbmdlciBwcmVzZW50Ci0gICAgICAgICMgKHRoaXMgbWF5IGxlZ2l0aW1hdGVseSBicmVhayBpbiBmdXR1cmUgaWYgd2Ugc3RvcCByZWluaXRpYWxpc2luZwotICAgICAgICAjIHRoZSBkYXRhc3RvcmUsIGluIHdoaWNoIGNhc2Ugd2UnbGwgaGF2ZSB0byByZWNvbnNpZGVyIHVzZSBvZgotICAgICAgICAjIHNldFZhcmlhYmxlIGVudGlyZWx5KQotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgc2V0VmFyaWFibGUgaXMgc3RpbGwgcHJlc2VudCEnKQotCi0gICAgICAgICMgTm93IGNoZWNrIHRoYXQgc2V0VmFyIG9uIHRoZSBtYWluIGRhdGFzdG9yZSB3b3JrcyAodXNlcyBzZXRWYXJpYWJsZSBpbnRlcm5hbGx5KQotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ3NwZWNpYWx2YWx1ZScpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFZhcmlhYmxlJywgJ1RFU1RWQVInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXIoKScpCi0KLSAgICBkZWYgdGVzdF9kYXRhc3RvcmVfb3BlcmF0aW9ucyhzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCi0gICAgICAgICAgICAjIFRlc3Qgc2V0VmFyRmxhZygpIC8gZ2V0VmFyRmxhZygpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbCcpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnZmxhZ3ZhbCcsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyRmxhZygpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygpJykKLSAgICAgICAgICAgICMgVGVzdCBkZWxWYXJGbGFnKCkKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyRmxhZygnVEVTVFZBUicsICdvdGhlcmZsYWcnLCAnb3RoZXJ2YWx1ZScpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmRlbFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmZsYWcgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXJGbGFnKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXJGbGFnKCknKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnb3RoZXJmbGFnJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvdGhlcnZhbHVlJywgJ1ZhcmZsYWcgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXJGbGFnKCkgY2F1c2VkIHVucmVsYXRlZCBmbGFnIHRvIGJlIHJlbW92ZWQnKQotICAgICAgICAgICAgIyBUZXN0IGRlbFZhcigpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICd2YXJ2YWx1ZScpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICd2YXJ2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXIoKScpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmRlbFZhcignVEVTVFZBUicpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJpYWJsZSBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhcigpIGFwcGVhcnMgdG8gc3RpbGwgaGF2ZSBhIHZhbHVlJykKLSAgICAgICAgICAgICMgVGVzdCByZW5hbWVWYXIoKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJPTEQnLCAnb3JpZ3ZhbHVlJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEucmVuYW1lVmFyKCdURVNUVkFST0xEJywgJ1RFU1RWQVJORVcnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUk9MRCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyaWFibGUgcmVuYW1lZCB1c2luZyBjb25maWdfZGF0YS5yZW5hbWVWYXIoKSBzdGlsbCBzZWVtcyB0byBleGlzdCcpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSTkVXJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvcmlndmFsdWUnLCAnVmFyaWFibGUgcmVuYW1lZCB1c2luZyBjb25maWdfZGF0YS5yZW5hbWVWYXIoKSBkb2VzIG5vdCBhcHBlYXIgd2l0aCBuZXcgbmFtZScpCi0gICAgICAgICAgICAjIFRlc3Qgb3ZlcnJpZGVzCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICdvcmlnaW5hbCcpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUl9vdmVycmlkZW9uZScsICdvbmUnKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJfb3ZlcnJpZGV0d28nLCAndHdvJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOm92ZXJyaWRlb25lJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ29uZScsICdWYXJpYWJsZSBvdmVycmlkZXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC93aWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC93aWMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNmFmMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvd2ljLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzkyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKLSMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0jCi0jIEFVVEhPUlMKLSMgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+Ci0KLSIiIlRlc3QgY2FzZXMgZm9yIHdpYy4iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBnbG9iIGltcG9ydCBnbG9iCi1mcm9tIHNodXRpbCBpbXBvcnQgcm10cmVlCi1mcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMsIGxydV9jYWNoZQotZnJvbSB0ZW1wZmlsZSBpbXBvcnQgTmFtZWRUZW1wb3JhcnlGaWxlCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi0KLUBscnVfY2FjaGUobWF4c2l6ZT0zMikKLWRlZiBnZXRfaG9zdF9hcmNoKHJlY2lwZSk6Ci0gICAgIiIiQSBjYWNoZWQgY2FsbCB0byBnZXRfYmJfdmFyKCdIT1NUX0FSQ0gnLCA8cmVjaXBlPikiIiIKLSAgICByZXR1cm4gZ2V0X2JiX3ZhcignSE9TVF9BUkNIJywgcmVjaXBlKQotCi0KLWRlZiBvbmx5X2Zvcl9hcmNoKGFyY2hzLCBpbWFnZT0nY29yZS1pbWFnZS1taW5pbWFsJyk6Ci0gICAgIiIiRGVjb3JhdG9yIGZvciB3cmFwcGluZyB0ZXN0IGNhc2VzIHRoYXQgY2FuIGJlIHJ1biBvbmx5IGZvciBzcGVjaWZpYyB0YXJnZXQKLSAgICBhcmNoaXRlY3R1cmVzLiBBIGxpc3Qgb2YgY29tcGF0aWJsZSBhcmNoaXRlY3R1cmVzIGlzIHBhc3NlZCBpbiBgYXJjaHNgLgotICAgIEN1cnJlbnQgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBwYXJzaW5nIGJpdGJha2Ugb3V0cHV0IGZvcgotICAgIGBpbWFnZWAgcmVjaXBlLgotICAgICIiIgotICAgIGRlZiB3cmFwcGVyKGZ1bmMpOgotICAgICAgICBAd3JhcHMoZnVuYykKLSAgICAgICAgZGVmIHdyYXBwZWRfZigqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgYXJjaCA9IGdldF9ob3N0X2FyY2goaW1hZ2UpCi0gICAgICAgICAgICBpZiBhcmNocyBhbmQgYXJjaCBub3QgaW4gYXJjaHM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlRlc3RjYXNlIGFyY2ggZGVwZW5kZW5jeSBub3QgbWV0OiAlcyIgJSBhcmNoKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICB3cmFwcGVkX2YuX19uYW1lX18gPSBmdW5jLl9fbmFtZV9fCi0gICAgICAgIHJldHVybiB3cmFwcGVkX2YKLSAgICByZXR1cm4gd3JhcHBlcgotCi0KLWNsYXNzIFdpYyhvZVNlbGZUZXN0KToKLSAgICAiIiJXaWMgdGVzdCBjbGFzcy4iIiIKLQotICAgIHJlc3VsdGRpciA9ICIvdmFyL3RtcC93aWMub2Utc2VsZnRlc3QvIgotICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKLSAgICBuYXRpdmVfc3lzcm9vdCA9IE5vbmUKLSAgICB3aWNlbnZfY2FjaGUgPSB7fQotCi0gICAgZGVmIHNldFVwTG9jYWwoc2VsZik6Ci0gICAgICAgICIiIlRoaXMgY29kZSBpcyBleGVjdXRlZCBiZWZvcmUgZWFjaCB0ZXN0IG1ldGhvZC4iIiIKLSAgICAgICAgaWYgbm90IHNlbGYubmF0aXZlX3N5c3Jvb3Q6Ci0gICAgICAgICAgICBXaWMubmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnLCAnd2ljLXRvb2xzJykKLQotICAgICAgICAjIERvIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIGluIHNldFVwQ2xhc3MgYXMgdGhlIGJhc2Ugc2V0VXAgZG9lcyBzb21lCi0gICAgICAgICMgY2xlYW4gdXAgd2hpY2ggY2FuIHJlc3VsdCBpbiB0aGUgbmF0aXZlIHRvb2xzIGJ1aWx0IGVhcmxpZXIgaW4KLSAgICAgICAgIyBzZXRVcENsYXNzIGJlaW5nIHVuYXZhaWxhYmxlLgotICAgICAgICBpZiBub3QgV2ljLmltYWdlX2lzX3JlYWR5OgotICAgICAgICAgICAgaWYgZ2V0X2JiX3ZhcignVVNFX05MUycpID09ICd5ZXMnOgotICAgICAgICAgICAgICAgIGJpdGJha2UoJ3dpYy10b29scycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3dpYy10b29scyBjYW5ub3QgYmUgYnVpbHQgZHVlIGl0cyAoaW50bHRvb2x8Z2V0dGV4dCktbmF0aXZlIGRlcGVuZGVuY3kgYW5kIE5MUyBkaXNhYmxlJykKLQotICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgICAgIFdpYy5pbWFnZV9pc19yZWFkeSA9IFRydWUKLQotICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLQotICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgotICAgICAgICAiIiJSZW1vdmUgcmVzdWx0ZGlyIGFzIGl0IG1heSBjb250YWluIGltYWdlcy4iIiIKLSAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTU1MikKLSAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyAtLXZlcnNpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtLXZlcnNpb24nKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIwOCkKLSAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyAtLWhlbHAgYW5kIHdpYyAtaCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0taGVscCcpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtaCcpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjA5KQotICAgIGRlZiB0ZXN0X2NyZWF0ZWhlbHAoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSAtLWhlbHAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBjcmVhdGUgLS1oZWxwJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTApCi0gICAgZGVmIHRlc3RfbGlzdGhlbHAoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgLS1oZWxwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCAtLWhlbHAnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1MykKLSAgICBkZWYgdGVzdF9oZWxwX2NyZWF0ZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBjcmVhdGUiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGNyZWF0ZScpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTU0KQotICAgIGRlZiB0ZXN0X2hlbHBfbGlzdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBsaXN0IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBsaXN0Jykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTUpCi0gICAgZGVmIHRlc3RfaGVscF9vdmVydmlldyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBvdmVydmlldyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgb3ZlcnZpZXcnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxNikKLSAgICBkZWYgdGVzdF9oZWxwX3BsdWdpbnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgcGx1Z2lucyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgcGx1Z2lucycpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjE3KQotICAgIGRlZiB0ZXN0X2hlbHBfa2lja3N0YXJ0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGtpY2tzdGFydCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAga2lja3N0YXJ0Jykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTUpCi0gICAgZGVmIHRlc3RfbGlzdF9pbWFnZXMoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgaW1hZ2VzIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1NikKLSAgICBkZWYgdGVzdF9saXN0X3NvdXJjZV9wbHVnaW5zKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IHNvdXJjZS1wbHVnaW5zIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucycpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTU3KQotICAgIGRlZiB0ZXN0X2xpc3RlZF9pbWFnZXNfaGVscChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgbGlzdGVkIGltYWdlcyBoZWxwIiIiCi0gICAgICAgIG91dHB1dCA9IHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykub3V0cHV0Ci0gICAgICAgIGltYWdlbGlzdCA9IFtsaW5lLnNwbGl0KClbMF0gZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgZm9yIGltYWdlIGluIGltYWdlbGlzdDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCAlcyBoZWxwJyAlIGltYWdlKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxMykKLSAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9zdWJjb21tYW5kKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHVuc3VwcG9ydGVkIHN1YmNvbW1hbmQiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoJ3dpYyB1bnN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTQpCi0gICAgZGVmIHRlc3Rfbm9fY29tbWFuZChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgd2l0aG91dCBjb21tYW5kIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCd3aWMnLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjExKQotICAgIGRlZiB0ZXN0X2J1aWxkX2ltYWdlX25hbWUoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTE1NykKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9ncHRfaW1hZ2Uoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgY29yZS1pbWFnZS1taW5pbWFsIHdpdGggZ3B0IHRhYmxlIGFuZCBVVUlEIGJvb3QiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1ncHQgLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEzNDYpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfaXNvX2ltYWdlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGh5YnJpZCBpc28gaW1hZ2Ugd2l0aCBsZWdhY3kgYW5kIEVGSSBib290IiIiCi0gICAgICAgIGNvbmZpZyA9ICdJTklUUkFNRlNfSU1BR0UgPSAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyJcbidcCi0gICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJwotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBta2h5YnJpZGlzbyAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouZGlyZWN0IikpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouaXNvIikpKQotCi0gICAgQHRlc3RjYXNlKDEzNDgpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfcWVtdXg4Nl9kaXJlY3RkaXNrKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHFlbXV4LTg2LWRpcmVjdGRpc2sgaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgcWVtdXg4Ni1kaXJlY3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJxZW11eDg2LWRpcmVjdGRpc2stKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzUwKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X21rZWZpZGlzayhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBta2VmaWRpc2sgaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgbWtlZmlkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzg1KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X2Jvb3Rsb2FkZXJfY29uZmlnKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZy0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDE1NjApCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3Rfc3lzdGVtZF9ib290ZGlzayhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBzeXN0ZW1kLWJvb3RkaXNrIGltYWdlIiIiCi0gICAgICAgIGNvbmZpZyA9ICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJwotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzeXN0ZW1kLWJvb3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzeXN0ZW1kLWJvb3RkaXNrLSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTU2MSkKLSAgICBkZWYgdGVzdF9zZGltYWdlX2Jvb3RwYXJ0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHNkaW1hZ2UtYm9vdHBhcnQgaW1hZ2UiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc2RpbWFnZS1ib290cGFydCAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAga2ltZ3R5cGUgPSBnZXRfYmJfdmFyKCdLRVJORUxfSU1BR0VUWVBFJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTUFHRV9CT09UX0ZJTEVTID0gIiVzIlxuJyAlIGtpbWd0eXBlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzZGltYWdlLWJvb3RwYXJ0LSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTU2MikKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9kZWZhdWx0X291dHB1dF9kaXIoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZGVmYXVsdCBvdXRwdXQgbG9jYXRpb24iIiIKLSAgICAgICAgZm9yIGZuYW1lIGluIGdsb2IoImRpcmVjdGRpc2stKi5kaXJlY3QiKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmbmFtZSkKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKCJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEyMTIpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfYnVpbGRfYXJ0aWZhY3RzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgZGlyZWN0ZGlzayBwcm92aWRpbmcgYWxsIGFydGlmYWN0cy4iIiIKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19EQVRBRElSJywgJ1JFQ0lQRV9TWVNST09UX05BVElWRSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy10b29scycpCi0gICAgICAgIGJiX3ZhcnMudXBkYXRlKGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9ST09URlMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpKQotICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KLSAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItYiAlKHN0YWdpbmdfZGF0YWRpcilzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItayAlKGRlcGxveV9kaXJfaW1hZ2UpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLW4gJShyZWNpcGVfc3lzcm9vdF9uYXRpdmUpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLXIgJShpbWFnZV9yb290ZnMpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLW8gJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjQpCi0gICAgZGVmIHRlc3RfY29tcHJlc3NfZ3ppcChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIGd6aXAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyBnemlwIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuZ3oiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2NSkKLSAgICBkZWYgdGVzdF9jb21wcmVzc19iemlwMihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIGJ6aXAyIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgYnppcDIgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC5iejIiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2NikKLSAgICBkZWYgdGVzdF9jb21wcmVzc194eihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIHh6IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jb21wcmVzcy13aXRoPXh6IC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QueHoiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2NykKLSAgICBkZWYgdGVzdF93cm9uZ19jb21wcmVzc29yKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGhvdyB3aWMgYnJlYWtzIGlmIHdyb25nIGNvbXByZXNzb3IgaXMgcHJvdmlkZWQiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyB3cm9uZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1OCkKLSAgICBkZWYgdGVzdF9kZWJ1Z19zaG9ydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtRCBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgZGVmIHRlc3RfZGVidWdfbG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtLWRlYnVnIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZGVidWcgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTYzKQotICAgIGRlZiB0ZXN0X3NraXBfYnVpbGRfY2hlY2tfc2hvcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLXMgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIGRlZiB0ZXN0X3NraXBfYnVpbGRfY2hlY2tfbG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtLXNraXAtYnVpbGQtY2hlY2sgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1za2lwLWJ1aWxkLWNoZWNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTU2NCkKLSAgICBkZWYgdGVzdF9idWlsZF9yb290ZnNfc2hvcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLWYgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIGRlZiB0ZXN0X2J1aWxkX3Jvb3Rmc19sb25nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IC0tYnVpbGQtcm9vdGZzIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tYnVpbGQtcm9vdGZzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2OCkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9yb290ZnNfaW5kaXJlY3RfcmVjaXBlcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB1c2FnZSBvZiByb290ZnMgcGx1Z2luIHdpdGggcm9vdGZzIHJlY2lwZXMiIiIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stbXVsdGktcm9vdGZzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3RmcyByb290ZnMxPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMgcm9vdGZzMj1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMqLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY5KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3Jvb3Rmc19hcnRpZmFjdHMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdXNhZ2Ugb2Ygcm9vdGZzIHBsdWdpbiB3aXRoIHJvb3RmcyBwYXRocyIiIgotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RBVEFESVInLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ljLXRvb2xzJykKLSAgICAgICAgYmJfdmFycy51cGRhdGUoZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX1JPT1RGUyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsJykpCi0gICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQotICAgICAgICBiYnZhcnNbJ3drcyddID0gImRpcmVjdGRpc2stbXVsdGktcm9vdGZzIgotICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlICUod2tzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tYm9vdGltZy1kaXI9JShzdGFnaW5nX2RhdGFkaXIpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1rZXJuZWwtZGlyPSUoZGVwbG95X2Rpcl9pbWFnZSlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW5hdGl2ZS1zeXNyb290PSUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMxPSUoaW1hZ2Vfcm9vdGZzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMyPSUoaW1hZ2Vfcm9vdGZzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJSh3a3Mpcy0qLmRpcmVjdCIgJSBiYnZhcnMpKSkKLQotICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aChzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtLWV4Y2x1ZGUtcGF0aCB3a3Mgb3B0aW9uLiIiIgotCi0gICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KLSAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJwotICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKLSAgICAgICAgICAgICAgICByb290ZnNfZGlyID0gZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgICAgICAgICAgd2tzLndyaXRlKCIiIgotcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggdXNyCi1wYXJ0IC91c3IgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLXJvb3Rmcy1kaXIgJXMvdXNyCi1wYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCBiaW4vIC0tcm9vdGZzLWRpciAlcy91c3IiIiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocm9vdGZzX2Rpciwgcm9vdGZzX2RpcikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKLQotICAgICAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQotICAgICAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlICd0ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHdpY291dCkpCi0KLSAgICAgICAgICAgIHdpY2ltZyA9IHdpY291dFswXQotCi0gICAgICAgICAgICAjIHZlcmlmeSBwYXJ0aXRpb24gc2l6ZSB3aXRoIHdpYwotICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBiIHAgMj4vZGV2L251bGwiICUgd2ljaW1nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotCi0gICAgICAgICAgICAjIHBhcnNlIHBhcnRlZCBvdXRwdXQgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgotICAgICAgICAgICAgIyBCWVQ7XG4KLSAgICAgICAgICAgICMgL3Zhci90bXAvd2ljL2J1aWxkL3RtcGZ3dmpqa2ZfLTIwMTYxMTEwMTIyMi1oZGEuZGlyZWN0OjIwME1pQjpmaWxlOjUxMjo1MTI6bXNkb3M6OjtcbgotICAgICAgICAgICAgIyAxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7XG4KLSAgICAgICAgICAgIHBhcnRsbnMgPSByZXMub3V0cHV0LnNwbGl0bGluZXMoKVsyOl0KLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4ocGFydGxucykpCi0KLSAgICAgICAgICAgIGZvciBwYXJ0IGluIFsxLCAyLCAzXToKLSAgICAgICAgICAgICAgICBwYXJ0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydCVkIiAlIHBhcnQpCi0gICAgICAgICAgICAgICAgcGFydGxuID0gcGFydGxuc1twYXJ0LTFdLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihwYXJ0bG4pKQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gaW50KHBhcnRsblsxXS5yc3RyaXAoIkIiKSkgLyA1MTIKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBpbnQocGFydGxuWzNdLnJzdHJpcCgiQiIpKSAvIDUxMgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJkZCBpZj0lcyBvZj0lcyBza2lwPSVkIGNvdW50PSVkIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpY2ltZywgcGFydF9maWxlLCBzdGFydCwgbGVuZ3RoKSkuc3RhdHVzKQotCi0gICAgICAgICAgICBkZWYgZXh0cmFjdF9maWxlcyhkZWJ1Z2ZzX291dHB1dCk6Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgZXh0cmFjdCBmaWxlIG5hbWVzIGZyb20gdGhlIG91dHB1dCBvZiBkZWJ1Z2ZzIC1SICdscyAtcCcsCi0gICAgICAgICAgICAgICAgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgotCi0gICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi8vXG4KLSAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLi8vXG4KLSAgICAgICAgICAgICAgICAgLzExLzA0MDcwMC8wLzAvbG9zdCtmb3VuZF5NLy9cbgotICAgICAgICAgICAgICAgICAvMTIvMDQwNzU1LzEwMDIvMTAwMi9ydW4vL1xuCi0gICAgICAgICAgICAgICAgIC8xMy8wNDA3NTUvMTAwMi8xMDAyL3N5cy8vXG4KLSAgICAgICAgICAgICAgICAgLzE0LzA0MDc1NS8xMDAyLzEwMDIvYmluLy9cbgotICAgICAgICAgICAgICAgICAvODAvMDQwNzU1LzEwMDIvMTAwMi92YXIvL1xuCi0gICAgICAgICAgICAgICAgIC85Mi8wNDA3NTUvMTAwMi8xMDAyL3RtcC8vXG4KLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAjIE5PVEUgdGhlIG9jY2FzaW9uYWwgXk0gaW4gZmlsZSBuYW1lcwotICAgICAgICAgICAgICAgIHJldHVybiBbbGluZS5zcGxpdCgnLycpWzVdLnN0cmlwKCkgZm9yIGxpbmUgaW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyldCi0KLSAgICAgICAgICAgICMgVGVzdCBwYXJ0aXRpb24gMSwgc2hvdWxkIGNvbnRhaW4gdGhlIG5vcm1hbCByb290IGRpcmVjdG9yaWVzLCBleGNlcHQKLSAgICAgICAgICAgICMgL3Vzci4KLSAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQxIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0gICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImV0YyIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCi0KLSAgICAgICAgICAgICMgUGFydGl0aW9uIDIsIHNob3VsZCBjb250YWluIGNvbW1vbiBkaXJlY3RvcmllcyBmb3IgL3Vzciwgbm90IHJvb3QKLSAgICAgICAgICAgICMgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MiIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJldGMiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2hhcmUiLCBmaWxlcykKLQotICAgICAgICAgICAgIyBQYXJ0aXRpb24gMywgc2hvdWxkIGNvbnRhaW4gdGhlIHNhbWUgYXMgcGFydGl0aW9uIDIsIGluY2x1ZGluZyB0aGUgYmluCi0gICAgICAgICAgICAjIGRpcmVjdG9yeSwgYnV0IG5vdCB0aGUgZmlsZXMgaW5zaWRlIGl0LgotICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDMiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLSAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZXRjIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNoYXJlIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiaW4iLCBmaWxlcykKLSAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAgYmluJyAlcyAyPi9kZXYvbnVsbCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuLiIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZmlsZXMpKQotCi0gICAgICAgICAgICBmb3IgcGFydCBpbiBbMSwgMiwgM106Ci0gICAgICAgICAgICAgICAgcGFydF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQlZCIgJSBwYXJ0KQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXJ0X2ZpbGUpCi0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKLQotICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKLSAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCi0KLSAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KLSAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKLSAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggL3VzciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLSAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQotCi0gICAgICAgICMgQXJndW1lbnQgcG9pbnRpbmcgdG8gcGFyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKLSAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggLi8uLy4uIikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCi0KLSAgICBAdGVzdGNhc2UoMTQ5NikKLSAgICBkZWYgdGVzdF9ibWFwX3Nob3J0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSAtbSBvcHRpb24iIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1tIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKLQotICAgIGRlZiB0ZXN0X2JtYXBfbG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIC5ibWFwIGZpbGUgLS1ibWFwIG9wdGlvbiIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLS1ibWFwIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKLQotICAgIGRlZiBfZ2V0X2ltYWdlX2Vudl9wYXRoKHNlbGYsIGltYWdlKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIG9idGFpbiB0aGUgcGF0aCB0byA8aW1hZ2U+LmVudiIiIgotICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZi53aWNlbnZfY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJyVzIC1jIGRvX3Jvb3Rmc193aWNlbnYnICUgaW1hZ2UpLnN0YXR1cykKLSAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfRElSJywgJ01BQ0hJTkUnXSwgaW1hZ2UpCi0gICAgICAgICAgICBzdGRpciA9IGJiX3ZhcnNbJ1NUQUdJTkdfRElSJ10KLSAgICAgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KLSAgICAgICAgICAgIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXSA9IG9zLnBhdGguam9pbihzdGRpciwgbWFjaGluZSwgJ2ltZ2RhdGEnKQotICAgICAgICByZXR1cm4gc2VsZi53aWNlbnZfY2FjaGVbaW1hZ2VdCi0KLSAgICBAdGVzdGNhc2UoMTM0NykKLSAgICBkZWYgdGVzdF9pbWFnZV9lbnYoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiA8aW1hZ2U+LmVudiBmaWxlcy4iIiIKLSAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBpbWdkYXRhZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0lNQUdFX0JBU0VOQU1FJywgJ1dJQ1ZBUlMnXSwgaW1hZ2UpCi0gICAgICAgIGJhc2VuYW1lID0gYmJfdmFyc1snSU1BR0VfQkFTRU5BTUUnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2VuYW1lLCBpbWFnZSkKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihpbWdkYXRhZGlyLCBiYXNlbmFtZSkgKyAnLmVudicKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHBhdGgpKQotCi0gICAgICAgIHdpY3ZhcnMgPSBzZXQoYmJfdmFyc1snV0lDVkFSUyddLnNwbGl0KCkpCi0gICAgICAgICMgZmlsdGVyIG91dCBvcHRpb25hbCB2YXJpYWJsZXMKLSAgICAgICAgd2ljdmFycyA9IHdpY3ZhcnMuZGlmZmVyZW5jZSgoJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfQk9PVF9GSUxFUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkQnLCAnSU5JVFJEX0xJVkUnLCAnSVNPRElSJykpCi0gICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBlbnZmaWxlOgotICAgICAgICAgICAgY29udGVudCA9IGRpY3QobGluZS5zcGxpdCgiPSIsIDEpIGZvciBsaW5lIGluIGVudmZpbGUpCi0gICAgICAgICAgICAjIHRlc3QgaWYgdmFyaWFibGVzIHVzZWQgYnkgd2ljIHByZXNlbnQgaW4gdGhlIC5lbnYgZmlsZQotICAgICAgICAgICAgZm9yIHZhciBpbiB3aWN2YXJzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2YXIgaW4gY29udGVudCwgIiVzIGlzIG5vdCBpbiAuZW52IGZpbGUiICUgdmFyKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZW50W3Zhcl0pCi0KLSAgICBAdGVzdGNhc2UoMTU1OSkKLSAgICBkZWYgdGVzdF9pbWFnZV92YXJzX2Rpcl9zaG9ydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBpbWFnZSB2YXJzIGRpcmVjdG9yeSBzZWxlY3Rpb24gLXYgb3B0aW9uIiIiCi0gICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgaW1nZW52ZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT0lcyAtdiAlcyAtbyAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1hZ2UsIGltZ2VudmRpciwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKLQotICAgIGRlZiB0ZXN0X2ltYWdlX3ZhcnNfZGlyX2xvbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgaW1hZ2UgdmFycyBkaXJlY3Rvcnkgc2VsZWN0aW9uIC0tdmFycyBvcHRpb24iIiIKLSAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT0lcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXZhcnMgJXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTM1MSkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF93aWNfaW1hZ2VfdHlwZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBidWlsZGluZyB3aWMgaW1hZ2VzIGJ5IGJpdGJha2UiIiIKLSAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIndpYyJcbldLU19GSUxFID0gIndpYy1pbWFnZS1taW5pbWFsIlxuJ1wKLSAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnd2ljLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdNQUNISU5FJ10pCi0gICAgICAgIGRlcGxveV9kaXIgPSBiYl92YXJzWydERVBMT1lfRElSX0lNQUdFJ10KLSAgICAgICAgbWFjaGluZSA9IGJiX3ZhcnNbJ01BQ0hJTkUnXQotICAgICAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgJ3dpYy1pbWFnZS1taW5pbWFsLSVzLicgJSBtYWNoaW5lKQotICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgcmVzdWx0IGltYWdlIGFuZCBtYW5pZmVzdHMgc3ltbGlua3MKLSAgICAgICAgIyBwb2ludGluZyB0byBleGlzdGluZyBmaWxlcwotICAgICAgICBmb3Igc3VmZml4IGluICgnd2ljJywgJ21hbmlmZXN0Jyk6Ci0gICAgICAgICAgICBwYXRoID0gcHJlZml4ICsgc3VmZml4Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsocGF0aCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5yZWFscGF0aChwYXRoKSkpCi0KLSAgICBAdGVzdGNhc2UoMTQyMikKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9xZW11KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYy1pbWFnZS1taW5pbWFsIHVuZGVyIHFlbXUiIiIKLSAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIndpYyJcbldLU19GSUxFID0gIndpYy1pbWFnZS1taW5pbWFsIlxuJ1wKLSAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnd2ljLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCd3aWMtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSkgYXMgcWVtdToKLSAgICAgICAgICAgIGNtZCA9ICJtb3VudCB8Z3JlcCAnXi9kZXYvJyB8IGN1dCAtZjEsMyAtZCAnICciCi0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcvZGV2L3Jvb3QgL1xyXG4vZGV2L3NkYTMgL21udCcpCi0KLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9xZW11X2VmaShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjb3JlLWltYWdlLW1pbmltYWwgZWZpIGltYWdlIHVuZGVyIHFlbXUiIiIKLSAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgPSAid2ljIlxuV0tTX0ZJTEUgPSAibWtlZmlkaXNrLndrcyJcbicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgb3ZtZicpLnN0YXR1cykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIHJ1bnFlbXVwYXJhbXM9J292bWYnLCBpbWFnZV9mc3R5cGU9J3dpYycpIGFzIHFlbXU6Ci0gICAgICAgICAgICBjbWQgPSAiZ3JlcCBzZGEuIC9wcm9jL3BhcnRpdGlvbnMgIHx3YyAtbCIKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJzMnKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfbWFrZV9maXhlZF9zaXplX3drcyhzaXplKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZSBhIHdrcyBvZiBhbiBpbWFnZSB3aXRoIGEgc2luZ2xlIHBhcnRpdGlvbi4gU2l6ZSBvZiB0aGUgcGFydGl0aW9uIGlzIHNldAotICAgICAgICB1c2luZyAtLWZpeGVkLXNpemUgZmxhZy4gUmV0dXJucyBhIHR1cGxlOiAocGF0aCB0byB3a3MgZmlsZSwgd2tzIGltYWdlIG5hbWUpCi0gICAgICAgICIiIgotICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIsIGRlbGV0ZT1GYWxzZSkgYXMgdGVtcGY6Ci0gICAgICAgICAgICB3a3NwYXRoID0gdGVtcGYubmFtZQotICAgICAgICAgICAgdGVtcGYud3JpdGUoInBhcnQgIiBcCi0gICAgICAgICAgICAgICAgICAgICAiLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIGhkYSAtLWFsaWduIDQgLS1maXhlZC1zaXplICVkICIKLSAgICAgICAgICAgICAgICAgICAgICItLWZzdHlwZT1leHQ0XG4iICUgc2l6ZSkKLSAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3NwYXRoKSlbMF0KLQotICAgICAgICByZXR1cm4gd2tzcGF0aCwgd2tzbmFtZQotCi0gICAgZGVmIHRlc3RfZml4ZWRfc2l6ZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY3JlYXRpb24gb2YgYSBzaW1wbGUgaW1hZ2Ugd2l0aCBwYXJ0aXRpb24gc2l6ZSBjb250cm9sbGVkIHRocm91Z2gKLSAgICAgICAgLS1maXhlZC1zaXplIGZsYWcKLSAgICAgICAgIiIiCi0gICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMuX21ha2VfZml4ZWRfc2l6ZV93a3MoMjAwKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKLSAgICAgICAgb3MucmVtb3ZlKHdrc3BhdGgpCi0gICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3aWNvdXQpKQotCi0gICAgICAgIHdpY2ltZyA9IHdpY291dFswXQotCi0gICAgICAgICMgdmVyaWZ5IHBhcnRpdGlvbiBzaXplIHdpdGggd2ljCi0gICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgbWliIHAgMj4vZGV2L251bGwiICUgd2ljaW1nLAotICAgICAgICAgICAgICAgICAgICAgaWdub3JlX3N0YXR1cz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9c2VsZi5uYXRpdmVfc3lzcm9vdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotCi0gICAgICAgICMgcGFyc2UgcGFydGVkIG91dHB1dCB3aGljaCBsb29rcyBsaWtlIHRoaXM6Ci0gICAgICAgICMgQllUO1xuCi0gICAgICAgICMgL3Zhci90bXAvd2ljL2J1aWxkL3RtcGZ3dmpqa2ZfLTIwMTYxMTEwMTIyMi1oZGEuZGlyZWN0OjIwME1pQjpmaWxlOjUxMjo1MTI6bXNkb3M6OjtcbgotICAgICAgICAjIDE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjtcbgotICAgICAgICBwYXJ0bG5zID0gcmVzLm91dHB1dC5zcGxpdGxpbmVzKClbMjpdCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocGFydGxucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjsiLCBwYXJ0bG5zWzBdKQotCi0gICAgZGVmIHRlc3RfZml4ZWRfc2l6ZV9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY3JlYXRpb24gb2YgYSBzaW1wbGUgaW1hZ2Ugd2l0aCBwYXJ0aXRpb24gc2l6ZSBjb250cm9sbGVkIHRocm91Z2gKLSAgICAgICAgLS1maXhlZC1zaXplIGZsYWcuIFRoZSBzaXplIG9mIHBhcnRpdGlvbiBpcyBpbnRlbnRpb25hbGx5IHNldCB0byAxTWlCCi0gICAgICAgIGluIG9yZGVyIHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gd2ljLgotICAgICAgICAiIiIKLSAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYy5fbWFrZV9maXhlZF9zaXplX3drcygxKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotICAgICAgICBvcy5yZW1vdmUod2tzcGF0aCkKLSAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHdpY291dCkpCi0KLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9yYXdjb3B5X3BsdWdpbl9xZW11KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJhd2NvcHkgcGx1Z2luIGluIHFlbXUiIiIKLSAgICAgICAgIyBidWlsZCBleHQ0IGFuZCB3aWMgaW1hZ2VzCi0gICAgICAgIGZvciBmc3R5cGUgaW4gKCJleHQ0IiwgIndpYyIpOgotICAgICAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgPSAiJXMiXG5XS1NfRklMRSA9ICJ0ZXN0X3Jhd2NvcHlfcGx1Z2luLndrcy5pbiJcbicgJSBmc3R5cGUKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKLSAgICAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UsIGltYWdlX2ZzdHlwZT0nd2ljJykgYXMgcWVtdToKLSAgICAgICAgICAgIGNtZCA9ICJncmVwIHNkYS4gL3Byb2MvcGFydGl0aW9ucyAgfHdjIC1sIgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnMicpCi0KLSAgICBkZWYgdGVzdF9yYXdjb3B5X3BsdWdpbihzZWxmKToKLSAgICAgICAgIiIiVGVzdCByYXdjb3B5IHBsdWdpbiIiIgotICAgICAgICBpbWcgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScsIGltZykKLSAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6Ci0gICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgL2Jvb3QgLS1hY3RpdmUgLS1zb3VyY2UgYm9vdGltZy1wY2Jpb3NcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgLyAtLXNvdXJjZSByYXdjb3B5IC0tc291cmNlcGFyYW1zPSJmaWxlPSVzLSVzLmV4dDQiIC0tdXNlLXV1aWRcbidcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltZywgbWFjaGluZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jvb3Rsb2FkZXIgLS10aW1lb3V0PTAgLS1hcHBlbmQ9ImNvbnNvbGU9dHR5UzAsMTE1MjAwbjgiXG4nXSkKLSAgICAgICAgICAgIHdrcy5mbHVzaCgpCi0gICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQotICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQotCi0gICAgZGVmIHRlc3RfZnNfdHlwZXMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZmlsZXN5c3RlbSB0eXBlcyBmb3IgZW1wdHkgYW5kIG5vdCBlbXB0eSBwYXJ0aXRpb25zIiIiCi0gICAgICAgIGltZyA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgotICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IGV4dDIgICAtLWZzdHlwZSBleHQyICAgICAtLXNvdXJjZSByb290ZnNcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgYnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAgIC0tc291cmNlIHJvb3RmcyAtLXNpemUgNDBNXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHNxdWFzaCAtLWZzdHlwZSBzcXVhc2hmcyAtLXNvdXJjZSByb290ZnNcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgc3dhcCAgIC0tZnN0eXBlIHN3YXAgLS1zaXplIDFNXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5dmZhdCAgIC0tZnN0eXBlIHZmYXQgICAtLXNpemUgMU1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHltc2RvcyAgLS1mc3R5cGUgbXNkb3MgIC0tc2l6ZSAxTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWV4dDIgICAtLWZzdHlwZSBleHQyICAgLS1zaXplIDFNXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5YnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAtLXNpemUgMTAwTVxuJ10pCi0gICAgICAgICAgICB3a3MuZmx1c2goKQotICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KLSAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKLQotICAgIGRlZiB0ZXN0X2tpY2tzdGFydF9wYXJzZXIoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2tzIHBhcnNlciBvcHRpb25zIiIiCi0gICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgotICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IC8gLS1mc3R5cGUgZXh0MyAtLXNvdXJjZSByb290ZnMgLS1zeXN0ZW0taWQgMHhGRiAnXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW92ZXJoZWFkLWZhY3RvciAxLjIgLS1zaXplIDEwMGtcbiddKQotICAgICAgICAgICAgd2tzLmZsdXNoKCkKLSAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSAod2tzLm5hbWUsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KLSAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKLQotICAgIGRlZiB0ZXN0X2ltYWdlX2Jvb3RwYXJ0X2dsb2JiZWQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZ2xvYmJlZCBzb3VyY2VzIHdpdGggaW1hZ2UtYm9vdHBhcnQgcGx1Z2luIiIiCi0gICAgICAgIGltZyA9ICJjb3JlLWltYWdlLW1pbmltYWwiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgJXMgLW8gJXMiICUgKGltZywgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgIGNvbmZpZyA9ICdJTUFHRV9CT09UX0ZJTEVTID0gIiVzKiInICUgZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsIGltZykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQotCi0gICAgZGVmIHRlc3Rfc3BhcnNlX2NvcHkoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgc3BhcnNlX2NvcHkgd2l0aCBGSUVNQVAgYW5kIFNFRUtfSE9MRSBmaWxlbWFwIEFQSXMiIiIKLSAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnc2NyaXB0cycsICdsaWInLCAnd2ljJykKLSAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGxpYnBhdGgpCi0gICAgICAgIGZyb20gIGZpbGVtYXAgaW1wb3J0IEZpbGVtYXBGaWVtYXAsIEZpbGVtYXBTZWVrLCBzcGFyc2VfY29weSwgRXJyb3JOb3RTdXBwCi0gICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2ljLXNwYXJzZSIpIGFzIHNwYXJzZToKLSAgICAgICAgICAgIHNyY19uYW1lID0gc3BhcnNlLm5hbWUKLSAgICAgICAgICAgIHNyY19zaXplID0gMTAyNCAqIDEwCi0gICAgICAgICAgICBzcGFyc2UudHJ1bmNhdGUoc3JjX3NpemUpCi0gICAgICAgICAgICAjIHdyaXRlIG9uZSBieXRlIHRvIHRoZSBmaWxlCi0gICAgICAgICAgICB3aXRoIG9wZW4oc3JjX25hbWUsICdyK2InKSBhcyBzZmlsZToKLSAgICAgICAgICAgICAgICBzZmlsZS5zZWVrKDEwMjQgKiA0KQotICAgICAgICAgICAgICAgIHNmaWxlLndyaXRlKGInXHgwMCcpCi0gICAgICAgICAgICBkZXN0ID0gc3BhcnNlLm5hbWUgKyAnLm91dCcKLSAgICAgICAgICAgICMgY29weSBzcmMgZmlsZSB0byBkZXN0IHVzaW5nIGRpZmZlcmVudCBmaWxlbWFwIEFQSXMKLSAgICAgICAgICAgIGZvciBhcGkgaW4gKEZpbGVtYXBGaWVtYXAsIEZpbGVtYXBTZWVrLCBOb25lKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0KToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzcGFyc2UubmFtZSwgZGVzdCwgYXBpPWFwaSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JOb3RTdXBwOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIHNraXAgdW5zdXBwb3J0ZWQgQVBJCi0gICAgICAgICAgICAgICAgZGVzdF9zdGF0ID0gb3Muc3RhdChkZXN0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdF9zdGF0LnN0X3NpemUsIHNyY19zaXplKQotICAgICAgICAgICAgICAgICMgOCBibG9ja3MgaXMgNEsgKHBoeXNpY2FsIHNlY3RvciBzaXplKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdF9zdGF0LnN0X2Jsb2NrcywgOCkKLSAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKaW5kZXggMzI1NWUzYS4uZjYzOTM2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CkBAIC0xOCw0NCArMTgsMTggQEAKIGZyb20gb2VxYS5jb250cm9sbGVycy50ZXN0dGFyZ2V0bG9hZGVyIGltcG9ydCBUZXN0VGFyZ2V0TG9hZGVyCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIAotbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuUWVtdVJ1bm5lcicpCi0KLWRlZiBnZXRfdGFyZ2V0X2NvbnRyb2xsZXIoZCk6Ci0gICAgdGVzdHRhcmdldCA9IGQuZ2V0VmFyKCJURVNUX1RBUkdFVCIpCi0gICAgIyBvbGQsIHNpbXBsZSBuYW1lcwotICAgIGlmIHRlc3R0YXJnZXQgPT0gInFlbXUiOgotICAgICAgICByZXR1cm4gUWVtdVRhcmdldChkKQotICAgIGVsaWYgdGVzdHRhcmdldCA9PSAic2ltcGxlcmVtb3RlIjoKLSAgICAgICAgcmV0dXJuIFNpbXBsZVJlbW90ZVRhcmdldChkKQotICAgIGVsc2U6Ci0gICAgICAgICMgdXNlIHRoZSBjbGFzcyBuYW1lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgaXMgaXQgYSBjb3JlIGNsYXNzIGRlZmluZWQgaGVyZT8KLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdGVzdHRhcmdldCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgIyBub3BlLCBwZXJoYXBzIGEgbGF5ZXIgZGVmaW5lZCBvbmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBiYnBhdGggPSBkLmdldFZhcigiQkJQQVRIIikuc3BsaXQoJzonKQotICAgICAgICAgICAgICAgIHRlc3R0YXJnZXRsb2FkZXIgPSBUZXN0VGFyZ2V0TG9hZGVyKCkKLSAgICAgICAgICAgICAgICBjb250cm9sbGVyID0gdGVzdHRhcmdldGxvYWRlci5nZXRfY29udHJvbGxlcl9tb2R1bGUodGVzdHRhcmdldCwgYmJwYXRoKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIkZhaWxlZCB0byBpbXBvcnQgezB9IGZyb20gYXZhaWxhYmxlIGNvbnRyb2xsZXIgbW9kdWxlczpcbnsxfSIuZm9ybWF0KHRlc3R0YXJnZXQsdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi5mYXRhbCgiSW52YWxpZCBURVNUX1RBUkdFVCAtICIgKyBzdHIoZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sbGVyKGQpCi0KLQogY2xhc3MgQmFzZVRhcmdldChvYmplY3QsIG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIHN1cHBvcnRlZF9pbWFnZV9mc3R5cGVzID0gW10KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbG9nZ2VyKToKICAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gTm9uZQogICAgICAgICBzZWxmLmlwID0gTm9uZQogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IE5vbmUKICAgICAgICAgc2VsZi5kYXRldGltZSA9IGQuZ2V0VmFyKCdEQVRFVElNRScpCiAgICAgICAgIHNlbGYudGVzdGRpciA9IGQuZ2V0VmFyKCJURVNUX0xPR19ESVIiKQogICAgICAgICBzZWxmLnBuID0gZC5nZXRWYXIoIlBOIikKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBkZXBsb3koc2VsZik6CkBAIC02NSw3ICszOSw3IEBACiAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHNzaGxvZ2xpbmspOgogICAgICAgICAgICAgb3MudW5saW5rKHNzaGxvZ2xpbmspCiAgICAgICAgIG9zLnN5bWxpbmsoc2VsZi5zc2hsb2csIHNzaGxvZ2xpbmspCi0gICAgICAgIGxvZ2dlci5pbmZvKCJTU0ggbG9nIGZpbGU6ICVzIiAlICBzZWxmLnNzaGxvZykKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU1NIIGxvZyBmaWxlOiAlcyIgJSAgc2VsZi5zc2hsb2cpCiAKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUsIHNzaD1UcnVlLCBleHRyYV9ib290cGFyYW1zPU5vbmUpOgpAQCAtMTE1LDkgKzg5LDkgQEAKIAogICAgIHN1cHBvcnRlZF9pbWFnZV9mc3R5cGVzID0gWydleHQzJywgJ2V4dDQnLCAnY3Bpby5neicsICd3aWMnXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGltYWdlX2ZzdHlwZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbG9nZ2VyLCBpbWFnZV9mc3R5cGU9Tm9uZSk6CiAKLSAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuX19pbml0X18oZCkKKyAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuX19pbml0X18oZCwgbG9nZ2VyKQogCiAgICAgICAgIHNlbGYucm9vdGZzID0gJycKICAgICAgICAgc2VsZi5rZXJuZWwgPSAnJwpAQCAtMTQ1LDcgKzExOSw3IEBACiAgICAgICAgIHNlbGYucWVtdXJ1bm5lcmxvZyA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdxZW11cnVubmVyX2xvZy4lcycgJSBzZWxmLmRhdGV0aW1lKQogICAgICAgICBsb2dnZXJoYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLnFlbXVydW5uZXJsb2cpCiAgICAgICAgIGxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihsb2dnZXJoYW5kbGVyKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dlcmhhbmRsZXIpCiAgICAgICAgIG9lLnBhdGguc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHNlbGYucWVtdXJ1bm5lcmxvZyksIG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdxZW11cnVubmVyX2xvZycpLCBmb3JjZT1UcnVlKQogCiAgICAgICAgIGlmIGQuZ2V0VmFyKCJESVNUUk8iKSA9PSAicG9reS10aW55IjoKQEAgLTE1Niw3ICsxMzAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBkLmdldFZhcigiQkJfT1JJR0VOViIsIEZhbHNlKS5nZXRWYXIoIkRJU1BMQVkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlID0gc2VsZi5xZW11bG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCA9IHNlbGYua2VybmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3R0aW1lID0gaW50KGQuZ2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHRpbWUgPSBpbnQoZC5nZXRWYXIoIlRFU1RfUUVNVUJPT1RfVElNRU9VVCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnZXIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnJ1bm5lciA9IFFlbXVSdW5uZXIobWFjaGluZT1kLmdldFZhcigiTUFDSElORSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rmcz1zZWxmLnJvb3RmcywKQEAgLTE2Nyw3ICsxNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3R0aW1lID0gaW50KGQuZ2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2t2bSA9IHVzZV9rdm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9kaXIgPSBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcyA9IGQuZ2V0VmFyKCJ0ZXN0aW1hZ2VfZHVtcF9ob3N0IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHMgPSBkLmdldFZhcigidGVzdGltYWdlX2R1bXBfaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dlcikKIAogICAgICAgICBzZWxmLnRhcmdldF9kdW1wZXIgPSBUYXJnZXREdW1wZXIoZHVtcF90YXJnZXRfY21kcywgZHVtcF9kaXIsIHNlbGYucnVubmVyKQogCkBAIC0xNzksOCArMTU1LDggQEAKICAgICAgICAgICAgIG9zLnVubGluayhxZW11bG9nbGluaykKICAgICAgICAgb3Muc3ltbGluayhzZWxmLnFlbXVsb2csIHFlbXVsb2dsaW5rKQogCi0gICAgICAgIGxvZ2dlci5pbmZvKCJyb290ZnMgZmlsZTogJXMiICUgIHNlbGYucm9vdGZzKQotICAgICAgICBsb2dnZXIuaW5mbygiUWVtdSBsb2cgZmlsZTogJXMiICUgc2VsZi5xZW11bG9nKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJyb290ZnMgZmlsZTogJXMiICUgIHNlbGYucm9vdGZzKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJRZW11IGxvZyBmaWxlOiAlcyIgJSBzZWxmLnFlbXVsb2cpCiAgICAgICAgIHN1cGVyKFFlbXVUYXJnZXQsIHNlbGYpLmRlcGxveSgpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUsIHNzaD1UcnVlLCBleHRyYV9ib290cGFyYW1zPScnLCBydW5xZW11cGFyYW1zPScnLCBsYXVuY2hfY21kPScnLCBkaXNjYXJkX3dyaXRlcz1UcnVlKToKQEAgLTIzMiwxNCArMjA4LDE0IEBACiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBhZGRyLnNwbGl0KCI6IilbMV0KICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBOb25lCi0gICAgICAgIGxvZ2dlci5pbmZvKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlRhcmdldCBJUDogJXMiICUgc2VsZi5pcCkKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBkLmdldFZhcigiVEVTVF9TRVJWRVJfSVAiKQogICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfaXA6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2lwJywgJ3JvdXRlJywgJ2dldCcsIHNlbGYuaXAgXSkuc3BsaXQoIlxuIilbMF0uc3BsaXQoKVstMV0KICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiRmFpbGVkIHRvIGRldGVybWluZSB0aGUgaG9zdCBJUCBhZGRyZXNzIChhbHRlcm5hdGl2ZWx5IHlvdSBjYW4gc2V0IFRFU1RfU0VSVkVSX0lQIHdpdGggdGhlIElQIGFkZHJlc3Mgb2YgdGhpcyBtYWNoaW5lKTogJXMiICUgZSkKLSAgICAgICAgbG9nZ2VyLmluZm8oIlNlcnZlciBJUDogJXMiICUgc2VsZi5zZXJ2ZXJfaXApCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlNlcnZlciBJUDogJXMiICUgc2VsZi5zZXJ2ZXJfaXApCiAKICAgICBkZWYgZGVwbG95KHNlbGYpOgogICAgICAgICBzdXBlcihTaW1wbGVSZW1vdGVUYXJnZXQsIHNlbGYpLmRlcGxveSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL19faW5pdF9fLnB5CmluZGV4IDQ4NWRlMDMuLmQzOGEzMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL19faW5pdF9fLnB5CkBAIC0yLDcgKzIsNiBAQAogZnJvbSBwa2d1dGlsIGltcG9ydCBleHRlbmRfcGF0aAogX19wYXRoX18gPSBleHRlbmRfcGF0aChfX3BhdGhfXywgX19uYW1lX18pCiAKLQogIyBCb3Jyb3dlZCBmcm9tIENhbGxlZFByb2Nlc3NFcnJvcgogCiBjbGFzcyBDb21tYW5kRXJyb3IoRXhjZXB0aW9uKToKQEAgLTY2LDMgKzY1LDM5IEBACiAgICAgbG9nZ2VyLmluZm8gPSBfYml0YmFrZV9sb2dfaW5mbwogCiAgICAgcmV0dXJuIGxvZ2dlcgorCitkZWYgbG9hZF90ZXN0X2NvbXBvbmVudHMobG9nZ2VyLCBleGVjdXRvcik6CisgICAgaW1wb3J0IHN5cworICAgIGltcG9ydCBvcworICAgIGltcG9ydCBpbXBvcnRsaWIKKworICAgIGZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHRFeGVjdXRvcgorCisgICAgY29tcG9uZW50cyA9IHt9CisKKyAgICBmb3IgcGF0aCBpbiBzeXMucGF0aDoKKyAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ29lcWEnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhiYXNlX2RpcikgYW5kIG9zLnBhdGguaXNkaXIoYmFzZV9kaXIpOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihiYXNlX2Rpcik6CisgICAgICAgICAgICAgICAgY29tcF9uYW1lID0gZmlsZQorICAgICAgICAgICAgICAgIGNvbXBfY29udGV4dCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSwgJ2NvbnRleHQucHknKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbXBfY29udGV4dCk6CisgICAgICAgICAgICAgICAgICAgIGNvbXBfcGx1Z2luID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ29lcWEuJXMuJXMnICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wX25hbWUsICdjb250ZXh0JykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNvbXBfcGx1Z2luLl9leGVjdXRvcl9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0VUZXN0Q29udGV4dEV4ZWN1dG9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcywgX2V4ZWN1dG9yX2NsYXNzICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc24ndCBkZXJpdmVkIGZyb20gT0VUZXN0Q29udGV4dEV4ZWN1dG9yLiJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tcF9wbHVnaW4uX2V4ZWN1dG9yX2NsYXNzLl9zY3JpcHRfZXhlY3V0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBleGVjdXRvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzW2NvbXBfbmFtZV0gPSBjb21wX3BsdWdpbi5fZXhlY3V0b3JfY2xhc3MoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ29tcG9uZW50ICVzIGluICVzIGRvbid0IGhhdmUgIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9leGVjdXRvcl9jbGFzcyBkZWZpbmVkLiIgJSAoY29tcF9uYW1lLCBjb21wX2NvbnRleHQpKQorCisgICAgcmV0dXJuIGNvbXBvbmVudHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2J1aWxkcHJvamVjdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2J1aWxkcHJvamVjdC5weQppbmRleCA0ODdmMDhiLi43MjFmMzVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9idWlsZHByb2plY3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvYnVpbGRwcm9qZWN0LnB5CkBAIC01Miw0ICs1Miw0IEBACiAKICAgICBkZWYgY2xlYW4oc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bigncm0gLXJmICVzJyAlIHNlbGYudGFyZ2V0ZGlyKQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoJ3JtIC1mICVzJyAlIHNlbGYubG9jYWxhcmNoaXZlLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoJ3JtIC1mICVzJyAlIHNlbGYubG9jYWxhcmNoaXZlLCBzaGVsbD1UcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQppbmRleCA1NzI4NmZjLi4wYmI5MDAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBDb21tYW5kRXJyb3IKIGZyb20gb2VxYS51dGlscyBpbXBvcnQgZnRvb2xzCkBAIC0yNSw3ICsyNiw3IEBACiAgICAgcGFzcwogCiBjbGFzcyBDb21tYW5kKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1hbmQsIGJnPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGRhdGE9Tm9uZSwgKipvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwgYmc9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgZGF0YT1Ob25lLCBvdXRwdXRfbG9nPU5vbmUsICoqb3B0aW9ucyk6CiAKICAgICAgICAgc2VsZi5kZWZhdWx0b3B0cyA9IHsKICAgICAgICAgICAgICJzdGRvdXQiOiBzdWJwcm9jZXNzLlBJUEUsCkBAIC00OCw0MSArNDksMTAzIEBACiAgICAgICAgIHNlbGYub3B0aW9ucy51cGRhdGUob3B0aW9ucykKIAogICAgICAgICBzZWxmLnN0YXR1cyA9IE5vbmUKKyAgICAgICAgIyBXZSBjb2xsZWN0IGNodW5rcyBvZiBvdXRwdXQgYmVmb3JlIGpvaW5pbmcgdGhlbSBhdCB0aGUgZW5kLgorICAgICAgICBzZWxmLl9vdXRwdXRfY2h1bmtzID0gW10KKyAgICAgICAgc2VsZi5fZXJyb3JfY2h1bmtzID0gW10KICAgICAgICAgc2VsZi5vdXRwdXQgPSBOb25lCiAgICAgICAgIHNlbGYuZXJyb3IgPSBOb25lCi0gICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQorICAgICAgICBzZWxmLnRocmVhZHMgPSBbXQogCisgICAgICAgIHNlbGYub3V0cHV0X2xvZyA9IG91dHB1dF9sb2cKICAgICAgICAgc2VsZi5sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigidXRpbHMuY29tbWFuZHMiKQogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2VsZi5wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNtZCwgKipzZWxmLm9wdGlvbnMpCiAKLSAgICAgICAgZGVmIGNvbW1UaHJlYWQoKToKLSAgICAgICAgICAgIHNlbGYub3V0cHV0LCBzZWxmLmVycm9yID0gc2VsZi5wcm9jZXNzLmNvbW11bmljYXRlKHNlbGYuZGF0YSkKKyAgICAgICAgZGVmIHJlYWRUaHJlYWQob3V0cHV0LCBzdHJlYW0sIGxvZ2Z1bmMpOgorICAgICAgICAgICAgaWYgbG9nZnVuYzoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzdHJlYW06CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICAgICAgbG9nZnVuYyhsaW5lLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J3JlcGxhY2UnKS5yc3RyaXAoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHJlYW0ucmVhZCgpKQogCi0gICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9Y29tbVRocmVhZCkKLSAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorICAgICAgICBkZWYgcmVhZFN0ZGVyclRocmVhZCgpOgorICAgICAgICAgICAgcmVhZFRocmVhZChzZWxmLl9lcnJvcl9jaHVua3MsIHNlbGYucHJvY2Vzcy5zdGRlcnIsIHNlbGYub3V0cHV0X2xvZy5lcnJvciBpZiBzZWxmLm91dHB1dF9sb2cgZWxzZSBOb25lKQorCisgICAgICAgIGRlZiByZWFkU3Rkb3V0VGhyZWFkKCk6CisgICAgICAgICAgICByZWFkVGhyZWFkKHNlbGYuX291dHB1dF9jaHVua3MsIHNlbGYucHJvY2Vzcy5zdGRvdXQsIHNlbGYub3V0cHV0X2xvZy5pbmZvIGlmIHNlbGYub3V0cHV0X2xvZyBlbHNlIE5vbmUpCisKKyAgICAgICAgZGVmIHdyaXRlVGhyZWFkKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnN0ZGluLndyaXRlKHNlbGYuZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Muc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXg6CisgICAgICAgICAgICAgICAgIyBJdCdzIG5vdCBhbiBlcnJvciB3aGVuIHRoZSBjb21tYW5kIGRvZXMgbm90IGNvbnN1bWUgYWxsCisgICAgICAgICAgICAgICAgIyBvZiBvdXIgZGF0YS4gc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIGFsc28gaWdub3JlcyB0aGF0LgorICAgICAgICAgICAgICAgIGlmIGV4LmVycm5vICE9IEVQSVBFOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICMgV2Ugd3JpdGUgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgYmVjYXVzZSB0aGVuIHdlIGNhbiByZWFkCisgICAgICAgICMgd2l0aG91dCB3b3JyeWluZyBhYm91dCBkZWFkbG9ja3MuIFRoZSBhZGRpdGlvbmFsIHRocmVhZCBpcworICAgICAgICAjIGV4cGVjdGVkIHRvIHRlcm1pbmF0ZSBieSBpdHNlbGYgYW5kIHdlIG1hcmsgaXQgYXMgYSBkYWVtb24sCisgICAgICAgICMgc28gZXZlbiBpdCBzaG91bGQgaGFwcGVuIHRvIG5vdCB0ZXJtaW5hdGUgZm9yIHdoYXRldmVyCisgICAgICAgICMgcmVhc29uLCB0aGUgbWFpbiBwcm9jZXNzIHdpbGwgc3RpbGwgZXhpdCwgd2hpY2ggd2lsbCB0aGVuCisgICAgICAgICMga2lsbCB0aGUgd3JpdGUgdGhyZWFkLgorICAgICAgICBpZiBzZWxmLmRhdGE6CisgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD13cml0ZVRocmVhZCwgZGFlbW9uPVRydWUpLnN0YXJ0KCkKKyAgICAgICAgaWYgc2VsZi5wcm9jZXNzLnN0ZGVycjoKKyAgICAgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJlYWRTdGRlcnJUaHJlYWQpCisgICAgICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgc2VsZi50aHJlYWRzLmFwcGVuZCh0aHJlYWQpCisgICAgICAgIGlmIHNlbGYub3V0cHV0X2xvZzoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0X2xvZy5pbmZvKCdSdW5uaW5nOiAlcycgJSBzZWxmLmNtZCkKKyAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVhZFN0ZG91dFRocmVhZCkKKyAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi50aHJlYWRzLmFwcGVuZCh0aHJlYWQpCiAKICAgICAgICAgc2VsZi5sb2cuZGVidWcoIlJ1bm5pbmcgY29tbWFuZCAnJXMnIiAlIHNlbGYuY21kKQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmJnOgotICAgICAgICAgICAgc2VsZi50aHJlYWQuam9pbihzZWxmLnRpbWVvdXQpCisgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgc2VsZi50aW1lb3V0CisgICAgICAgICAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLnRocmVhZHM6CisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpIAorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisgICAgICAgICAgICAgICAgICAgIHRocmVhZC5qb2luKHRpbWVvdXQpCiAgICAgICAgICAgICBzZWxmLnN0b3AoKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudGhyZWFkLmlzQWxpdmUoKToKLSAgICAgICAgICAgIHNlbGYucHJvY2Vzcy50ZXJtaW5hdGUoKQorICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKKyAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6CisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0ZSgpCiAgICAgICAgICAgICAjIGxldCdzIGdpdmUgaXQgbW9yZSB0aW1lIHRvIHRlcm1pbmF0ZSBncmFjZWZ1bGx5IGJlZm9yZSBraWxsaW5nIGl0Ci0gICAgICAgICAgICBzZWxmLnRocmVhZC5qb2luKDUpCi0gICAgICAgICAgICBpZiBzZWxmLnRocmVhZC5pc0FsaXZlKCk6CisgICAgICAgICAgICB0aHJlYWQuam9pbig1KQorICAgICAgICAgICAgaWYgdGhyZWFkLmlzQWxpdmUoKToKICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Mua2lsbCgpCi0gICAgICAgICAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQogCi0gICAgICAgIGlmIG5vdCBzZWxmLm91dHB1dDoKLSAgICAgICAgICAgIHNlbGYub3V0cHV0ID0gIiIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYub3V0cHV0ID0gc2VsZi5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ncmVwbGFjZScpLnJzdHJpcCgpCi0gICAgICAgIHNlbGYuc3RhdHVzID0gc2VsZi5wcm9jZXNzLnBvbGwoKQorICAgICAgICBkZWYgZmluYWxpemVfb3V0cHV0KGRhdGEpOgorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgZGF0YSA9ICIiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiIiIuam9pbihkYXRhKQorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J3JlcGxhY2UnKS5yc3RyaXAoKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICBzZWxmLm91dHB1dCA9IGZpbmFsaXplX291dHB1dChzZWxmLl9vdXRwdXRfY2h1bmtzKQorICAgICAgICBzZWxmLl9vdXRwdXRfY2h1bmtzID0gTm9uZQorICAgICAgICAjIHNlbGYuZXJyb3IgdXNlZCB0byBiZSBhIGJ5dGUgc3RyaW5nIGVhcmxpZXIsIHByb2JhYmx5IHVuaW50ZW50aW9uYWxseS4KKyAgICAgICAgIyBOb3cgaXQgaXMgYSBub3JtYWwgc3RyaW5nLCBqdXN0IGxpa2Ugc2VsZi5vdXRwdXQuCisgICAgICAgIHNlbGYuZXJyb3IgPSBmaW5hbGl6ZV9vdXRwdXQoc2VsZi5fZXJyb3JfY2h1bmtzKQorICAgICAgICBzZWxmLl9lcnJvcl9jaHVua3MgPSBOb25lCisgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNsb3NlZCBzdGRvdXQvc3RkZXJyLCBzbworICAgICAgICAjIGl0IGlzIHNhZmUgYW5kIG5lY2Vzc2FyeSB0byB3YWl0IGZvciB0aGUgYWN0dWFsIHByb2Nlc3MgY29tcGxldGlvbi4KKyAgICAgICAgc2VsZi5zdGF0dXMgPSBzZWxmLnByb2Nlc3Mud2FpdCgpCiAKICAgICAgICAgc2VsZi5sb2cuZGVidWcoIkNvbW1hbmQgJyVzJyByZXR1cm5lZCAlZCBhcyBleGl0IGNvZGUuIiAlIChzZWxmLmNtZCwgc2VsZi5zdGF0dXMpKQogICAgICAgICAjIGxvZ2dpbmcgdGhlIGNvbXBsZXRlIG91dHB1dCBpcyBpbnNhbmUKQEAgLTk4LDcgKzE2MSw3IEBACiAKIAogZGVmIHJ1bkNtZChjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGFzc2VydF9lcnJvcj1UcnVlLAotICAgICAgICAgIG5hdGl2ZV9zeXNyb290PU5vbmUsIGxpbWl0X2V4Y19vdXRwdXQ9MCwgKipvcHRpb25zKToKKyAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1Ob25lLCBsaW1pdF9leGNfb3V0cHV0PTAsIG91dHB1dF9sb2c9Tm9uZSwgKipvcHRpb25zKToKICAgICByZXN1bHQgPSBSZXN1bHQoKQogCiAgICAgaWYgbmF0aXZlX3N5c3Jvb3Q6CkBAIC0xMDgsNyArMTcxLDcgQEAKICAgICAgICAgbmVudlsnUEFUSCddID0gZXh0cmFfcGF0aHMgKyAnOicgKyBuZW52LmdldCgnUEFUSCcsICcnKQogICAgICAgICBvcHRpb25zWydlbnYnXSA9IG5lbnYKIAotICAgIGNtZCA9IENvbW1hbmQoY29tbWFuZCwgdGltZW91dD10aW1lb3V0LCAqKm9wdGlvbnMpCisgICAgY21kID0gQ29tbWFuZChjb21tYW5kLCB0aW1lb3V0PXRpbWVvdXQsIG91dHB1dF9sb2c9b3V0cHV0X2xvZywgKipvcHRpb25zKQogICAgIGNtZC5ydW4oKQogCiAgICAgcmVzdWx0LmNvbW1hbmQgPSBjb21tYW5kCkBAIC0xMzIsNyArMTk1LDcgQEAKICAgICByZXR1cm4gcmVzdWx0CiAKIAotZGVmIGJpdGJha2UoY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSwgdGltZW91dD1Ob25lLCBwb3N0Y29uZmlnPU5vbmUsICoqb3B0aW9ucyk6CitkZWYgYml0YmFrZShjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlLCB0aW1lb3V0PU5vbmUsIHBvc3Rjb25maWc9Tm9uZSwgb3V0cHV0X2xvZz1Ob25lLCAqKm9wdGlvbnMpOgogCiAgICAgaWYgcG9zdGNvbmZpZzoKICAgICAgICAgcG9zdGNvbmZpZ19maWxlID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnb2VxYS1wb3N0LmNvbmYnKQpAQCAtMTQ3LDcgKzIxMCw3IEBACiAgICAgICAgIGNtZCA9IFsgImJpdGJha2UiIF0gKyBbYSBmb3IgYSBpbiAoY29tbWFuZCArIGV4dHJhX2FyZ3Muc3BsaXQoIiAiKSkgaWYgYSBub3QgaW4gWyIiXV0KIAogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXMsIHRpbWVvdXQsICoqb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXMsIHRpbWVvdXQsIG91dHB1dF9sb2c9b3V0cHV0X2xvZywgKipvcHRpb25zKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGlmIHBvc3Rjb25maWc6CiAgICAgICAgICAgICBvcy5yZW1vdmUocG9zdGNvbmZpZ19maWxlKQpAQCAtMjMzLDYgKzI5NiwxMiBAQAogICAgIGltcG9ydCBiYi50aW5mb2lsCiAgICAgaW1wb3J0IGJiLmJ1aWxkCiAKKyAgICAjIE5lZWQgYSBub24tJ0JpdEJha2UnIGxvZ2dlciB0byBjYXB0dXJlIHRoZSBydW5uZXIgb3V0cHV0CisgICAgdGFyZ2V0bG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ1RhcmdldFJ1bm5lcicpCisgICAgdGFyZ2V0bG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQorICAgIHRhcmdldGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKICAgICB0aW5mb2lsID0gYmIudGluZm9pbC5UaW5mb2lsKCkKICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PVRydWUpCiAgICAgdHJ5OgpAQCAtMjUwLDMxICszMTksMTUgQEAKICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb3ZlcnJpZGVzLml0ZW1zKCk6CiAgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcihrZXksIHZhbHVlKQogCi0gICAgICAgICMgVGhlIFFlbXVSdW5uZXIgbG9nIGlzIHNhdmVkIG91dCwgYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzIGF0IHRoZSByaWdodAotICAgICAgICAjIGxvZyBsZXZlbCAoYW5kIHRoZW4gZW5zdXJlIHRoYXQgc2luY2UgaXQncyBhIGNoaWxkIG9mIHRoZSBCaXRCYWtlIGxvZ2dlciwKLSAgICAgICAgIyB3ZSBkaXNhYmxlIHByb3BhZ2F0aW9uIHNvIHdlIGRvbid0IHRoZW4gc2VlIHRoZSBsb2cgZXZlbnRzIG9uIHRoZSBjb25zb2xlKQotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZS5RZW11UnVubmVyJykKLSAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCi0gICAgICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQogICAgICAgICBsb2dkaXIgPSByZWNpcGVkYXRhLmdldFZhcigiVEVTVF9MT0dfRElSIikKIAotICAgICAgICBxZW11ID0gb2VxYS50YXJnZXRjb250cm9sLlFlbXVUYXJnZXQocmVjaXBlZGF0YSwgaW1hZ2VfZnN0eXBlKQorICAgICAgICBxZW11ID0gb2VxYS50YXJnZXRjb250cm9sLlFlbXVUYXJnZXQocmVjaXBlZGF0YSwgdGFyZ2V0bG9nZ2VyLCBpbWFnZV9mc3R5cGUpCiAgICAgZmluYWxseToKICAgICAgICAgIyBXZSBuZWVkIHRvIHNodXQgZG93biB0aW5mb2lsIGVhcmx5IGhlcmUgaW4gY2FzZSB3ZSBhY3R1YWxseSB3YW50CiAgICAgICAgICMgdG8gcnVuIHRpbmZvaWwtdXNpbmcgdXRpbGl0aWVzIHdpdGggdGhlIHJ1bm5pbmcgUUVNVSBpbnN0YW5jZS4KICAgICAgICAgIyBMdWNraWx5IFFlbXVUYXJnZXQgZG9lc24ndCBuZWVkIGl0IGFmdGVyIHRoZSBjb25zdHJ1Y3Rvci4KICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAKLSAgICAjIFNldHVwIGJpdGJha2UgbG9nZ2VyIGFzIGNvbnNvbGUgaGFuZGxlciBpcyByZW1vdmVkIGJ5IHRpbmZvaWwuc2h1dGRvd24KLSAgICBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlJykKLSAgICBiYmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCi0gICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGJiZm9ybWF0ID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCi0gICAgaWYgc3lzLnN0ZG91dC5pc2F0dHkoKToKLSAgICAgICAgYmJmb3JtYXQuZW5hYmxlX2NvbG9yKCkKLSAgICBjb25zb2xlLnNldEZvcm1hdHRlcihiYmZvcm1hdCkKLSAgICBiYmxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCi0KICAgICB0cnk6CiAgICAgICAgIHFlbXUuZGVwbG95KCkKICAgICAgICAgdHJ5OgpAQCAtMjg5LDYgKzM0Miw3IEBACiAgICAgICAgICAgICBxZW11LnN0b3AoKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwYXNzCisgICAgdGFyZ2V0bG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKIAogZGVmIHVwZGF0ZUVudihlbnZfZmlsZSk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9naXQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9naXQucHkKaW5kZXggZTBjYjNmMC4uNzU3ZTNmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZ2l0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgIGRlZiByZXZfcGFyc2Uoc2VsZiwgcmV2aXNpb24pOgogICAgICAgICAiIiJEbyBnaXQgcmV2LXBhcnNlIiIiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jbWQoWydyZXYtcGFyc2UnLCByZXZpc2lvbl0pCisgICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5fY21kKFsncmV2LXBhcnNlJywgJy0tdmVyaWZ5JywgcmV2aXNpb25dKQogICAgICAgICBleGNlcHQgR2l0RXJyb3I6CiAgICAgICAgICAgICAjIFJldmlzaW9uIGRvZXMgbm90IGV4aXN0CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CmluZGV4IGIzNzdkY2QuLjA2NzA2MjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKQEAgLTksNyArOSw3IEBACiAjIEEgcGFyc2VyIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgd2VhdGhlciBhIGxpbmUgaXMgYSB0ZXN0IHJlc3VsdCBvciBhIHNlY3Rpb24gc3RhdGVtZW50LgogY2xhc3MgTHBhcnNlcihvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfMF9wYXNzX3JlZ2V4LCB0ZXN0XzBfZmFpbF9yZWdleCwgc2VjdGlvbl8wX2JlZ2luX3JlZ2V4PU5vbmUsIHNlY3Rpb25fMF9lbmRfcmVnZXg9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0XzBfcGFzc19yZWdleCwgdGVzdF8wX2ZhaWxfcmVnZXgsIHRlc3RfMF9za2lwX3JlZ2V4LCBzZWN0aW9uXzBfYmVnaW5fcmVnZXg9Tm9uZSwgc2VjdGlvbl8wX2VuZF9yZWdleD1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgYXJndW1lbnRzIGRpY3Rpb25hcnkKICAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICAgc2VsZi5hcmdzID0ga3dhcmdzCkBAIC0xOSwxMiArMTksMTMgQEAKICAgICAgICAgIyBBZGQgdGhlIGRlZmF1bHQgYXJncyB0byB0aGUgZGljdGlvbmFyeQogICAgICAgICBzZWxmLmFyZ3NbJ3Rlc3RfMF9wYXNzX3JlZ2V4J10gPSB0ZXN0XzBfcGFzc19yZWdleAogICAgICAgICBzZWxmLmFyZ3NbJ3Rlc3RfMF9mYWlsX3JlZ2V4J10gPSB0ZXN0XzBfZmFpbF9yZWdleAorICAgICAgICBzZWxmLmFyZ3NbJ3Rlc3RfMF9za2lwX3JlZ2V4J10gPSB0ZXN0XzBfc2tpcF9yZWdleAogICAgICAgICBpZiBzZWN0aW9uXzBfYmVnaW5fcmVnZXg6CiAgICAgICAgICAgICBzZWxmLmFyZ3NbJ3NlY3Rpb25fMF9iZWdpbl9yZWdleCddID0gc2VjdGlvbl8wX2JlZ2luX3JlZ2V4CiAgICAgICAgIGlmIHNlY3Rpb25fMF9lbmRfcmVnZXg6CiAgICAgICAgICAgICBzZWxmLmFyZ3NbJ3NlY3Rpb25fMF9lbmRfcmVnZXgnXSA9IHNlY3Rpb25fMF9lbmRfcmVnZXgKIAotICAgICAgICBzZWxmLnRlc3RfcG9zc2libGVfc3RhdHVzID0gWydwYXNzJywgJ2ZhaWwnLCAnZXJyb3InXQorICAgICAgICBzZWxmLnRlc3RfcG9zc2libGVfc3RhdHVzID0gWydwYXNzJywgJ2ZhaWwnLCAnZXJyb3InLCAnc2tpcCddCiAgICAgICAgIHNlbGYuc2VjdGlvbl9wb3NzaWJsZV9zdGF0dXMgPSBbJ2JlZ2luJywgJ2VuZCddCiAKICAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IEZhbHNlCkBAIC0xMDgsNyArMTA5LDcgQEAKICAgICAgICAgICAgIHByZWZpeCA9ICcnCiAgICAgICAgICAgICBmb3IgeCBpbiB0ZXN0X3N0YXR1czoKICAgICAgICAgICAgICAgICBwcmVmaXggKz14KycuJwotICAgICAgICAgICAgaWYgKHNlY3Rpb24gIT0gJycpOgorICAgICAgICAgICAgaWYgc2VjdGlvbjoKICAgICAgICAgICAgICAgICBwcmVmaXggKz0gc2VjdGlvbgogICAgICAgICAgICAgc2VjdGlvbl9maWxlID0gb3MucGF0aC5qb2luKHRhcmdldF9kaXIsIHByZWZpeCkKICAgICAgICAgICAgICMgcHVyZ2UgdGhlIGZpbGUgY29udGVudHMgaWYgaXQgZXhpc3RzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9tZXRhZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL21ldGFkYXRhLnB5CmluZGV4IGNiODExNTUuLjY1YmJkYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL21ldGFkYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL21ldGFkYXRhLnB5CkBAIC0xMCwxOSArMTAsOSBAQAogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IHBhcnNlU3RyaW5nCiBmcm9tIHhtbC5ldHJlZS5FbGVtZW50VHJlZSBpbXBvcnQgRWxlbWVudCwgdG9zdHJpbmcKIAorZnJvbSBvZS5sc2IgaW1wb3J0IGdldF9vc19yZWxlYXNlCiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcnMKIAotZGVmIGdldF9vc19yZWxlYXNlKCk6Ci0gICAgIiIiR2V0IGluZm8gZnJvbSAvZXRjL29zLXJlbGVhc2UgYXMgYSBkaWN0IiIiCi0gICAgZGF0YSA9IE9yZGVyZWREaWN0KCkKLSAgICBvc19yZWxlYXNlX2ZpbGUgPSAnL2V0Yy9vcy1yZWxlYXNlJwotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvc19yZWxlYXNlX2ZpbGUpOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHdpdGggb3Blbihvc19yZWxlYXNlX2ZpbGUpIGFzIGZvYmo6Ci0gICAgICAgIGZvciBsaW5lIGluIGZvYmo6Ci0gICAgICAgICAgICBrZXksIHZhbHVlID0gbGluZS5zcGxpdCgnPScsIDEpCi0gICAgICAgICAgICBkYXRhW2tleS5zdHJpcCgpLmxvd2VyKCldID0gdmFsdWUuc3RyaXAoKS5zdHJpcCgnIicpCi0gICAgcmV0dXJuIGRhdGEKIAogZGVmIG1ldGFkYXRhX2Zyb21fYmIoKToKICAgICAiIiIgUmV0dXJucyB0ZXN0J3MgbWV0YWRhdGEgYXMgT3JkZXJlZERpY3QuCkBAIC00NSw5ICszNSw5IEBACiAgICAgb3NfcmVsZWFzZSA9IGdldF9vc19yZWxlYXNlKCkKICAgICBpZiBvc19yZWxlYXNlOgogICAgICAgICBpbmZvX2RpY3RbJ2hvc3RfZGlzdHJvJ10gPSBPcmRlcmVkRGljdCgpCi0gICAgICAgIGZvciBrZXkgaW4gKCdpZCcsICd2ZXJzaW9uX2lkJywgJ3ByZXR0eV9uYW1lJyk6CisgICAgICAgIGZvciBrZXkgaW4gKCdJRCcsICdWRVJTSU9OX0lEJywgJ1BSRVRUWV9OQU1FJyk6CiAgICAgICAgICAgICBpZiBrZXkgaW4gb3NfcmVsZWFzZToKLSAgICAgICAgICAgICAgICBpbmZvX2RpY3RbJ2hvc3RfZGlzdHJvJ11ba2V5XSA9IG9zX3JlbGVhc2Vba2V5XQorICAgICAgICAgICAgICAgIGluZm9fZGljdFsnaG9zdF9kaXN0cm8nXVtrZXkubG93ZXIoKV0gPSBvc19yZWxlYXNlW2tleV0KIAogICAgIGluZm9fZGljdFsnbGF5ZXJzJ10gPSBnZXRfbGF5ZXJzKGRhdGFfZGljdFsnQkJMQVlFUlMnXSkKICAgICBpbmZvX2RpY3RbJ2JpdGJha2UnXSA9IGdpdF9yZXZfaW5mbyhvcy5wYXRoLmRpcm5hbWUoYmIuX19maWxlX18pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggYmE0NGI5Ni4uMDYzMWQ0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0xNywxMSArMTcsOCBAQAogaW1wb3J0IHN0cmluZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGNvZGVjcwotZnJvbSBvZXFhLnV0aWxzLmR1bXAgaW1wb3J0IEhvc3REdW1wZXIKLQogaW1wb3J0IGxvZ2dpbmcKLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlFlbXVSdW5uZXIiKQotbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkpCitmcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgSG9zdER1bXBlcgogCiAjIEdldCBVbmljb2RlIG5vbiBwcmludGFibGUgY29udHJvbCBjaGFycwogY29udHJvbF9yYW5nZSA9IGxpc3QocmFuZ2UoMCwzMikpK2xpc3QocmFuZ2UoMTI3LDE2MCkpCkBAIC0zMSw3ICsyOCw3IEBACiAKIGNsYXNzIFFlbXVSdW5uZXI6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFjaGluZSwgcm9vdGZzLCBkaXNwbGF5LCB0bXBkaXIsIGRlcGxveV9kaXJfaW1hZ2UsIGxvZ2ZpbGUsIGJvb3R0aW1lLCBkdW1wX2RpciwgZHVtcF9ob3N0X2NtZHMsIHVzZV9rdm0pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwgYm9vdHRpbWUsIGR1bXBfZGlyLCBkdW1wX2hvc3RfY21kcywgdXNlX2t2bSwgbG9nZ2VyKToKIAogICAgICAgICAjIFBvcGVuIG9iamVjdCBmb3IgcnVucWVtdQogICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCkBAIC01NCwxMCArNTEsMTQgQEAKICAgICAgICAgc2VsZi5sb2dnZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi51c2Vfa3ZtID0gdXNlX2t2bQorICAgICAgICBzZWxmLm1zZyA9ICcnCiAKLSAgICAgICAgc2VsZi5ydW5xZW11dGltZSA9IDYwCisgICAgICAgIHNlbGYucnVucWVtdXRpbWUgPSAxMjAKKyAgICAgICAgc2VsZi5xZW11X3BpZGZpbGUgPSAncGlkZmlsZV8nK3N0cihvcy5nZXRwaWQoKSkKICAgICAgICAgc2VsZi5ob3N0X2R1bXBlciA9IEhvc3REdW1wZXIoZHVtcF9ob3N0X2NtZHMsIGR1bXBfZGlyKQogCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisKICAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKQEAgLTY1LDcgKzY2LDcgQEAKICAgICAgICAgICAgIHNvY2suYmluZCgoIjEyNy4wLjAuMSIsMCkpCiAgICAgICAgICAgICBzb2NrLmxpc3RlbigyKQogICAgICAgICAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNyZWF0ZWQgbGlzdGVuaW5nIHNvY2tldCBmb3IgcWVtdSBzZXJpYWwgY29uc29sZSBvbjogMTI3LjAuMC4xOiVzIiAlIHBvcnQpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ3JlYXRlZCBsaXN0ZW5pbmcgc29ja2V0IGZvciBxZW11IHNlcmlhbCBjb25zb2xlIG9uOiAxMjcuMC4wLjE6JXMiICUgcG9ydCkKICAgICAgICAgICAgIHJldHVybiAoc29jaywgcG9ydCkKIAogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgpAQCAtNzgsNiArNzksNyBAQAogICAgICAgICAgICAgIyBiZWNhdXNlIGlzIHBvc3NpYmxlIHRvIGhhdmUgY29udHJvbCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBtc2cgPSBtc2cuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0naWdub3JlJykKICAgICAgICAgICAgIG1zZyA9IHJlX2NvbnRyb2xfY2hhci5zdWIoJycsIG1zZykKKyAgICAgICAgICAgIHNlbGYubXNnICs9IG1zZwogICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLmxvZ2ZpbGUsICJhIiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBmLndyaXRlKCIlcyIgJSBtc2cpCiAKQEAgLTkxLDU4ICs5Myw2MyBAQAogICAgIGRlZiBoYW5kbGVTSUdDSExEKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBpZiBzZWxmLnJ1bnFlbXUgYW5kIHNlbGYucnVucWVtdS5wb2xsKCk6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQoc2VsZi5ydW5xZW11LnN0ZG91dCkpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KHNlbGYucnVucWVtdS5zdGRvdXQpKQogICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKICAgICAgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcWVtdXBhcmFtcyA9IE5vbmUsIGdldF9pcCA9IFRydWUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lLCBydW5xZW11cGFyYW1zPScnLCBsYXVuY2hfY21kPU5vbmUsIGRpc2NhcmRfd3JpdGVzPVRydWUpOgorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBpZiBzZWxmLmRpc3BsYXk6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJESVNQTEFZIl0gPSBzZWxmLmRpc3BsYXkKKyAgICAgICAgICAgIGVudlsiRElTUExBWSJdID0gc2VsZi5kaXNwbGF5CiAgICAgICAgICAgICAjIFNldCB0aGlzIGZsYWcgc28gdGhhdCBRZW11IGRvZXNuJ3QgZG8gYW55IGdyYWJzIGFzIFNETCBncmFicwogICAgICAgICAgICAgIyBpbnRlcmFjdCBiYWRseSB3aXRoIHNjcmVlbnNhdmVycy4KLSAgICAgICAgICAgIG9zLmVudmlyb25bIlFFTVVfRE9OVF9HUkFCIl0gPSAiMSIKKyAgICAgICAgICAgIGVudlsiUUVNVV9ET05UX0dSQUIiXSA9ICIxIgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5yb290ZnMpOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJJbnZhbGlkIHJvb3RmcyAlcyIgJSBzZWxmLnJvb3RmcykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJJbnZhbGlkIHJvb3RmcyAlcyIgJSBzZWxmLnJvb3RmcykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi50bXBkaXIpOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJJbnZhbGlkIFRNUERJUiBwYXRoICVzIiAlIHNlbGYudG1wZGlyKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkludmFsaWQgVE1QRElSIHBhdGggJXMiICUgc2VsZi50bXBkaXIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmVudmlyb25bIk9FX1RNUERJUiJdID0gc2VsZi50bXBkaXIKKyAgICAgICAgICAgIGVudlsiT0VfVE1QRElSIl0gPSBzZWxmLnRtcGRpcgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5kZXBsb3lfZGlyX2ltYWdlKToKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiSW52YWxpZCBERVBMT1lfRElSX0lNQUdFIHBhdGggJXMiICUgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkludmFsaWQgREVQTE9ZX0RJUl9JTUFHRSBwYXRoICVzIiAlIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3MuZW52aXJvblsiREVQTE9ZX0RJUl9JTUFHRSJdID0gc2VsZi5kZXBsb3lfZGlyX2ltYWdlCisgICAgICAgICAgICBlbnZbIkRFUExPWV9ESVJfSU1BR0UiXSA9IHNlbGYuZGVwbG95X2Rpcl9pbWFnZQogCiAgICAgICAgIGlmIG5vdCBsYXVuY2hfY21kOgogICAgICAgICAgICAgbGF1bmNoX2NtZCA9ICdydW5xZW11ICVzICVzICcgJSAoJ3NuYXBzaG90JyBpZiBkaXNjYXJkX3dyaXRlcyBlbHNlICcnLCBydW5xZW11cGFyYW1zKQogICAgICAgICAgICAgaWYgc2VsZi51c2Vfa3ZtOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBrdm0gZm9yIHJ1bnFlbXUnKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdVc2luZyBrdm0gZm9yIHJ1bnFlbXUnKQogICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBrdm0nCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdOb3QgdXNpbmcga3ZtIGZvciBydW5xZW11JykKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnTm90IHVzaW5nIGt2bSBmb3IgcnVucWVtdScpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5kaXNwbGF5OgogICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBub2dyYXBoaWMnCiAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgJXMgJXMnICUgKHNlbGYubWFjaGluZSwgc2VsZi5yb290ZnMpCiAKLSAgICAgICAgcmV0dXJuIHNlbGYubGF1bmNoKGxhdW5jaF9jbWQsIHFlbXVwYXJhbXM9cWVtdXBhcmFtcywgZ2V0X2lwPWdldF9pcCwgZXh0cmFfYm9vdHBhcmFtcz1leHRyYV9ib290cGFyYW1zKQorICAgICAgICByZXR1cm4gc2VsZi5sYXVuY2gobGF1bmNoX2NtZCwgcWVtdXBhcmFtcz1xZW11cGFyYW1zLCBnZXRfaXA9Z2V0X2lwLCBleHRyYV9ib290cGFyYW1zPWV4dHJhX2Jvb3RwYXJhbXMsIGVudj1lbnYpCiAKLSAgICBkZWYgbGF1bmNoKHNlbGYsIGxhdW5jaF9jbWQsIGdldF9pcCA9IFRydWUsIHFlbXVwYXJhbXMgPSBOb25lLCBleHRyYV9ib290cGFyYW1zID0gTm9uZSk6CisgICAgZGVmIGxhdW5jaChzZWxmLCBsYXVuY2hfY21kLCBnZXRfaXAgPSBUcnVlLCBxZW11cGFyYW1zID0gTm9uZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUsIGVudiA9IE5vbmUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0aHJlYWRzb2NrLCB0aHJlYWRwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCwgc2VsZi5zZXJ2ZXJwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgbGlzdGVuaW5nIHNvY2tldDogJXMiICUgbXNnWzFdKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgbGlzdGVuaW5nIHNvY2tldDogJXMiICUgbXNnWzFdKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgYm9vdHBhcmFtcyA9ICdjb25zb2xlPXR0eTEgY29uc29sZT10dHlTMCwxMTUyMDBuOCBwcmludGsudGltZT0xJwogICAgICAgICBpZiBleHRyYV9ib290cGFyYW1zOgogICAgICAgICAgICAgYm9vdHBhcmFtcyA9IGJvb3RwYXJhbXMgKyAnICcgKyBleHRyYV9ib290cGFyYW1zCiAKLSAgICAgICAgc2VsZi5xZW11cGFyYW1zID0gJ2Jvb3RwYXJhbXM9InswfSIgcWVtdXBhcmFtcz0iLXNlcmlhbCB0Y3A6MTI3LjAuMC4xOnsxfSInLmZvcm1hdChib290cGFyYW1zLCB0aHJlYWRwb3J0KQorICAgICAgICAjIEFzayBRRU1VIHRvIHN0b3JlIHRoZSBRRU1VIHByb2Nlc3MgUElEIGluIGZpbGUsIHRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8gcGFyc2UgcnVubmluZyBwcm9jZXNzZXMKKyAgICAgICAgIyBhbmQgYW5hbHl6ZSBkZXNjZW5kZW50cyBpbiBvcmRlciB0byBkZXRlcm1pbmUgaXQuCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucWVtdV9waWRmaWxlKToKKyAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnFlbXVfcGlkZmlsZSkKKyAgICAgICAgc2VsZi5xZW11cGFyYW1zID0gJ2Jvb3RwYXJhbXM9InswfSIgcWVtdXBhcmFtcz0iLXNlcmlhbCB0Y3A6MTI3LjAuMC4xOnsxfSAtcGlkZmlsZSB7Mn0iJy5mb3JtYXQoYm9vdHBhcmFtcywgdGhyZWFkcG9ydCwgc2VsZi5xZW11X3BpZGZpbGUpCiAgICAgICAgIGlmIHFlbXVwYXJhbXM6CiAgICAgICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSBzZWxmLnFlbXVwYXJhbXNbOi0xXSArICIgIiArIHFlbXVwYXJhbXMgKyAiICIgKyAnXCInCiAKQEAgLTE1MSwxMyArMTU4LDEzIEBACiAgICAgICAgIHNlbGYub3JpZ2NobGRoYW5kbGVyID0gc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHQ0hMRCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQ0hMRCwgc2VsZi5oYW5kbGVTSUdDSExEKQogCi0gICAgICAgIGxvZ2dlci5pbmZvKCdsYXVuY2hjbWQ9JXMnJShsYXVuY2hfY21kKSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ2xhdW5jaGNtZD0lcyclKGxhdW5jaF9jbWQpKQogCiAgICAgICAgICMgRklYTUU6IFdlIHBhc3MgaW4gc3RkaW49c3VicHJvY2Vzcy5QSVBFIGhlcmUgdG8gd29yayBhcm91bmQgc3R0eQogICAgICAgICAjIGJsb2NraW5nIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bnFlbXUgc2NyaXB0IHdoZW4gdXNpbmcgdGhpcyB3aXRoaW4KICAgICAgICAgIyBvZS1zZWxmdGVzdCAodGhpcyBtYWtlcyBzdHR5IGVycm9yIG91dCBpbW1lZGlhdGVseSkuIFRoZXJlIG91Z2h0CiAgICAgICAgICMgdG8gYmUgYSBwcm9wZXIgZml4IGJ1dCB0aGlzIHdpbGwgc3VmZmljZSBmb3Igbm93LgotICAgICAgICBzZWxmLnJ1bnFlbXUgPSBzdWJwcm9jZXNzLlBvcGVuKGxhdW5jaF9jbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBwcmVleGVjX2ZuPW9zLnNldHBncnApCisgICAgICAgIHNlbGYucnVucWVtdSA9IHN1YnByb2Nlc3MuUG9wZW4obGF1bmNoX2NtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHByZWV4ZWNfZm49b3Muc2V0cGdycCwgZW52PWVudikKICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5xZW11LnN0ZG91dAogCiAgICAgICAgICMKQEAgLTE4NiwxNDMgKzE5MywxNDkgQEAKICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHVEVSTSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKLSAgICAgICAgbG9nZ2VyLmluZm8oInJ1bnFlbXUgc3RhcnRlZCwgcGlkIGlzICVzIiAlIHNlbGYucnVucWVtdS5waWQpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJ3YWl0aW5nIGF0IG1vc3QgJXMgc2Vjb25kcyBmb3IgcWVtdSBwaWQiICUgc2VsZi5ydW5xZW11dGltZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInJ1bnFlbXUgc3RhcnRlZCwgcGlkIGlzICVzIiAlIHNlbGYucnVucWVtdS5waWQpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ3YWl0aW5nIGF0IG1vc3QgJXMgc2Vjb25kcyBmb3IgcWVtdSBwaWQiICUgc2VsZi5ydW5xZW11dGltZSkKICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ydW5xZW11dGltZQogICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19hbGl2ZSgpIGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpOgogICAgICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlOgogICAgICAgICAgICAgICAgICAgICAjIE5vIHBvaW50IHdhaXRpbmcgYW55IGxvbmdlcgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQob3V0cHV0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKIAotICAgICAgICBvdXQgPSBzZWxmLmdldE91dHB1dChvdXRwdXQpCi0gICAgICAgIG5ldGNvbmYgPSBGYWxzZSAjIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyBub3QgcmVxdWlyZWQgYnkgZGVmYXVsdAotICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygicWVtdSBzdGFydGVkIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyIgJSBzZWxmLnFlbXVwaWQpCi0gICAgICAgICAgICBpZiBnZXRfaXA6Ci0gICAgICAgICAgICAgICAgY21kbGluZSA9ICcnCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKCcvcHJvYy8lcy9jbWRsaW5lJyAlIHNlbGYucWVtdXBpZCkgYXMgcDoKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHAucmVhZCgpCi0gICAgICAgICAgICAgICAgICAgICMgSXQgaXMgbmVlZGVkIHRvIHNhbml0aXplIHRoZSBkYXRhIHJlY2VpdmVkCi0gICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpcyBwb3NzaWJsZSB0byBoYXZlIGNvbnRyb2wgY2hhcmFjdGVycwotICAgICAgICAgICAgICAgICAgICBjbWRsaW5lID0gcmVfY29udHJvbF9jaGFyLnN1YignJywgY21kbGluZSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlwcyA9IHJlLmZpbmRhbGwoIigoPzpbMC05XXsxLDN9XC4pezN9WzAtOV17MSwzfSkiLCBjbWRsaW5lLnNwbGl0KCJpcD0iKVsxXSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCA9IGlwc1swXQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IGlwc1sxXQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygicWVtdSBjbWRsaW5lIHVzZWQ6XG57fSIuZm9ybWF0KGNtZGxpbmUpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICMgVHJ5IHRvIGdldCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZnJvbSBydW5xZW11IG91dHB1dAotICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCcuKk5ldHdvcmsgY29uZmlndXJhdGlvbjogKFswLTkuXSspOjooWzAtOS5dKyk6KFswLTkuXSspJC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIHJlLk1VTFRJTElORXxyZS5ET1RBTEwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCwgc2VsZi5zZXJ2ZXJfaXAsIHNlbGYubmV0bWFzayA9IG1hdGNoLmdyb3VwcygpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhcyB3ZSBjb3VsZG4ndCBnZXQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgcnVucWVtdSBjb21tYW5kIGxpbmUsIHNvIHFlbXUgZG9lc24ndCBydW4ga2VybmVsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBndWVzdCBuZXR3b3JraW5nIGlzIG5vdCBjb25maWd1cmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXRjb25mID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgaXAgZnJvbSBxZW11IGNvbW1hbmQgbGluZSBhbmQgcnVucWVtdSBvdXRwdXQhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlRhcmdldCBJUDogJXMiICUgc2VsZi5pcCkKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2VydmVyIElQOiAlcyIgJSBzZWxmLnNlcnZlcl9pcCkKLQotICAgICAgICAgICAgc2VsZi50aHJlYWQgPSBMb2dnaW5nVGhyZWFkKHNlbGYubG9nLCB0aHJlYWRzb2NrLCBsb2dnZXIpCi0gICAgICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRGlkbid0IHJlY2VpdmUgYSBjb25zb2xlIGNvbm5lY3Rpb24gZnJvbSBxZW11LiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiLCBvdXQpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiV2FpdGluZyBhdCBtb3N0ICVkIHNlY29uZHMgZm9yIGxvZ2luIGJhbm5lciIgJSBzZWxmLmJvb3R0aW1lKQotICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ib290dGltZQotICAgICAgICAgICAgc29ja2xpc3QgPSBbc2VsZi5zZXJ2ZXJfc29ja2V0XQotICAgICAgICAgICAgcmVhY2hlZGxvZ2luID0gRmFsc2UKLSAgICAgICAgICAgIHN0b3ByZWFkID0gRmFsc2UKLSAgICAgICAgICAgIHFlbXVzb2NrID0gTm9uZQotICAgICAgICAgICAgYm9vdGxvZyA9ICcnCi0gICAgICAgICAgICBkYXRhID0gYicnCi0gICAgICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSA8IGVuZHRpbWUgYW5kIG5vdCBzdG9wcmVhZDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNyZWFkLCBzd3JpdGUsIHNlcnJvciA9IHNlbGVjdC5zZWxlY3Qoc29ja2xpc3QsIFtdLCBbXSwgNSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3Igc29jayBpbiBzcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgc29jayBpcyBzZWxmLnNlcnZlcl9zb2NrZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBxZW11c29jaywgYWRkciA9IHNlbGYuc2VydmVyX3NvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgICAgICAgICAgICAgcWVtdXNvY2suc2V0YmxvY2tpbmcoMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LmFwcGVuZChxZW11c29jaykKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LnJlbW92ZShzZWxmLnNlcnZlcl9zb2NrZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ29ubmVjdGlvbiBmcm9tICVzOiVzIiAlIGFkZHIpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNvY2sucmVjdigxMDI0KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2cgKz0gZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYicnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgiLiogbG9naW46IiwgYm9vdGxvZyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkbG9naW4gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiUmVhY2hlZCBsb2dpbiBiYW5uZXIiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LnJlbW92ZShzb2NrKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQotCi0gICAgICAgICAgICBpZiBub3QgcmVhY2hlZGxvZ2luOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJUYXJnZXQgZGlkbid0IHJlYWNoZWQgbG9naW4gYm9vdCBpbiAlZCBzZWNvbmRzIiAlIHNlbGYuYm9vdHRpbWUpCi0gICAgICAgICAgICAgICAgbGluZXMgPSAiXG4iLmpvaW4oYm9vdGxvZy5zcGxpdGxpbmVzKClbLTI1Ol0pCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkxhc3QgMjUgbGluZXMgb2YgdGV4dDpcbiVzIiAlIGxpbmVzKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDaGVjayBmdWxsIGJvb3QgbG9nOiAlcyIgJSBzZWxmLmxvZ2ZpbGUpCi0gICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKLSAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICAjIElmIHdlIGFyZSBub3QgYWJsZSB0byBsb2dpbiB0aGUgdGVzdHMgY2FuIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYucnVuX3NlcmlhbCgicm9vdFxuIiwgcmF3PVRydWUpCi0gICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJMb2dnZWQgYXMgcm9vdCBpbiBzZXJpYWwgY29uc29sZSIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5ldGNvbmY6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGNvbmZpZ3VyZSBndWVzdCBuZXR3b3JraW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSAiaWZjb25maWcgZXRoMCAlcyBuZXRtYXNrICVzIHVwXG4iICUgKHNlbGYuaXAsIHNlbGYubmV0bWFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NlcmlhbChjbWQsIHJhdz1UcnVlKVsxXQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiY29uZmlndXJlZCBpcCBhZGRyZXNzICVzIiwgc2VsZi5pcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNvdWxkbid0IGNvbmZpZ3VyZSBndWVzdCBuZXR3b3JraW5nIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ291bGRuJ3QgbG9naW4gaW50byBzZXJpYWwgY29uc29sZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGFzIHJvb3QgdXNpbmcgYmxhbmsgcGFzc3dvcmQiKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXJpYWwgY29uc29sZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvZ2luIikKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXJlZCBpbiAlcyBzZWNvbmRzIiAlIHNlbGYucnVucWVtdXRpbWUpCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FsaXZlKCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiUWVtdSBwaWQgZGlkbid0IGFwcGVhciBpbiAlcyBzZWNvbmRzIiAlIHNlbGYucnVucWVtdXRpbWUpCisgICAgICAgICAgICAjIER1bXAgYWxsIHByb2Nlc3NlcyB0byBoZWxwIHVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbi4uLgorICAgICAgICAgICAgcHMgPSBzdWJwcm9jZXNzLlBvcGVuKFsncHMnLCAnYXh3dycsICctbycsICdwaWQscHBpZCxjb21tYW5kICddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCisgICAgICAgICAgICBwcm9jZXNzZXMgPSBwcy5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSdW5uaW5nIHByb2Nlc3NlczpcbiVzIiAlIHByb2Nlc3NlcykKICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCiAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChvdXRwdXQpKQorICAgICAgICAgICAgb3AgPSBzZWxmLmdldE91dHB1dChvdXRwdXQpCisgICAgICAgICAgICBpZiBvcDoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIG9wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiTm8gb3V0cHV0IGZyb20gcnVucWVtdS5cbiIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5pc19hbGl2ZSgpCisgICAgICAgICMgV2UgYXJlIGFsaXZlOiBxZW11IGlzIHJ1bm5pbmcKKyAgICAgICAgb3V0ID0gc2VsZi5nZXRPdXRwdXQob3V0cHV0KQorICAgICAgICBuZXRjb25mID0gRmFsc2UgIyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgbm90IHJlcXVpcmVkIGJ5IGRlZmF1bHQKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgc3RhcnRlZCBpbiAlcyBzZWNvbmRzIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyIgJSAodGltZS50aW1lKCkgLSAoZW5kdGltZSAtIHNlbGYucnVucWVtdXRpbWUpLCBzZWxmLnFlbXVwaWQpKQorICAgICAgICBpZiBnZXRfaXA6CisgICAgICAgICAgICBjbWRsaW5lID0gJycKKyAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6CisgICAgICAgICAgICAgICAgY21kbGluZSA9IHAucmVhZCgpCisgICAgICAgICAgICAgICAgIyBJdCBpcyBuZWVkZWQgdG8gc2FuaXRpemUgdGhlIGRhdGEgcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXMgcG9zc2libGUgdG8gaGF2ZSBjb250cm9sIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICBjbWRsaW5lID0gcmVfY29udHJvbF9jaGFyLnN1YignICcsIGNtZGxpbmUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXBzID0gcmUuZmluZGFsbCgiKCg/OlswLTldezEsM31cLil7M31bMC05XXsxLDN9KSIsIGNtZGxpbmUuc3BsaXQoImlwPSIpWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuaXAgPSBpcHNbMF0KKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IGlwc1sxXQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJxZW11IGNtZGxpbmUgdXNlZDpcbnt9Ii5mb3JtYXQoY21kbGluZSkpCisgICAgICAgICAgICBleGNlcHQgKEluZGV4RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICMgVHJ5IHRvIGdldCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZnJvbSBydW5xZW11IG91dHB1dAorICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJy4qTmV0d29yayBjb25maWd1cmF0aW9uOiAoWzAtOS5dKyk6OihbMC05Ll0rKTooWzAtOS5dKykkLionLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCByZS5NVUxUSUxJTkV8cmUuRE9UQUxMKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmlwLCBzZWxmLnNlcnZlcl9pcCwgc2VsZi5uZXRtYXNrID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgICAgICAgICAgICAgIyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgYXMgd2UgY291bGRuJ3QgZ2V0IGl0CisgICAgICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgcnVucWVtdSBjb21tYW5kIGxpbmUsIHNvIHFlbXUgZG9lc24ndCBydW4ga2VybmVsCisgICAgICAgICAgICAgICAgICAgICMgYW5kIGd1ZXN0IG5ldHdvcmtpbmcgaXMgbm90IGNvbmZpZ3VyZWQKKyAgICAgICAgICAgICAgICAgICAgbmV0Y29uZiA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiQ291bGRuJ3QgZ2V0IGlwIGZyb20gcWVtdSBjb21tYW5kIGxpbmUgYW5kIHJ1bnFlbXUgb3V0cHV0ISAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIG91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRhcmdldCBJUDogJXMiICUgc2VsZi5pcCkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZlciBJUDogJXMiICUgc2VsZi5zZXJ2ZXJfaXApCisKKyAgICAgICAgc2VsZi50aHJlYWQgPSBMb2dnaW5nVGhyZWFkKHNlbGYubG9nLCB0aHJlYWRzb2NrLCBzZWxmLmxvZ2dlcikKKyAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkRpZG4ndCByZWNlaXZlIGEgY29uc29sZSBjb25uZWN0aW9uIGZyb20gcWVtdS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKKyAgICAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIsIG91dCkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldhaXRpbmcgYXQgbW9zdCAlZCBzZWNvbmRzIGZvciBsb2dpbiBiYW5uZXIiICUgc2VsZi5ib290dGltZSkKKyAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ib290dGltZQorICAgICAgICBzb2NrbGlzdCA9IFtzZWxmLnNlcnZlcl9zb2NrZXRdCisgICAgICAgIHJlYWNoZWRsb2dpbiA9IEZhbHNlCisgICAgICAgIHN0b3ByZWFkID0gRmFsc2UKKyAgICAgICAgcWVtdXNvY2sgPSBOb25lCisgICAgICAgIGJvb3Rsb2cgPSBiJycKKyAgICAgICAgZGF0YSA9IGInJworICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSA8IGVuZHRpbWUgYW5kIG5vdCBzdG9wcmVhZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzcmVhZCwgc3dyaXRlLCBzZXJyb3IgPSBzZWxlY3Quc2VsZWN0KHNvY2tsaXN0LCBbXSwgW10sIDUpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIHNvY2sgaW4gc3JlYWQ6CisgICAgICAgICAgICAgICAgaWYgc29jayBpcyBzZWxmLnNlcnZlcl9zb2NrZXQ6CisgICAgICAgICAgICAgICAgICAgIHFlbXVzb2NrLCBhZGRyID0gc2VsZi5zZXJ2ZXJfc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgICAgIHFlbXVzb2NrLnNldGJsb2NraW5nKDApCisgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LmFwcGVuZChxZW11c29jaykKKyAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNlbGYuc2VydmVyX3NvY2tldCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNvbm5lY3Rpb24gZnJvbSAlczolcyIgJSBhZGRyKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc29jay5yZWN2KDEwMjQpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBib290bG9nICs9IGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGInIGxvZ2luOicgaW4gYm9vdGxvZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVhY2hlZCBsb2dpbiBiYW5uZXIiKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNvY2spCisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQorCisKKyAgICAgICAgaWYgbm90IHJlYWNoZWRsb2dpbjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgZGlkbid0IHJlYWNoZWQgbG9naW4gYm9vdCBpbiAlZCBzZWNvbmRzIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgICAgICB0YWlsID0gbGFtYmRhIGw6ICJcbiIuam9pbihsLnNwbGl0bGluZXMoKVstMjU6XSkKKyAgICAgICAgICAgICMgaW4gY2FzZSBib290bG9nIGlzIGVtcHR5LCB1c2UgdGFpbCBxZW11IGxvZyBzdG9yZSBhdCBzZWxmLm1zZworICAgICAgICAgICAgbGluZXMgPSB0YWlsKGJvb3Rsb2cgaWYgYm9vdGxvZyBlbHNlIHNlbGYubXNnKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxhc3QgMjUgbGluZXMgb2YgdGV4dDpcbiVzIiAlIGxpbmVzKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNoZWNrIGZ1bGwgYm9vdCBsb2c6ICVzIiAlIHNlbGYubG9nZmlsZSkKKyAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCisgICAgICAgICAgICBzZWxmLnN0b3AoKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiB3ZSBhcmUgbm90IGFibGUgdG8gbG9naW4gdGhlIHRlc3RzIGNhbiBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi5ydW5fc2VyaWFsKCJyb290XG4iLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgicm9vdEBbYS16QS1aMC05XC1dKzp+IyIsIG91dHB1dCk6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxvZ2dlZCBhcyByb290IGluIHNlcmlhbCBjb25zb2xlIikKKyAgICAgICAgICAgICAgICBpZiBuZXRjb25mOgorICAgICAgICAgICAgICAgICAgICAjIGNvbmZpZ3VyZSBndWVzdCBuZXR3b3JraW5nCisgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJpZmNvbmZpZyBldGgwICVzIG5ldG1hc2sgJXMgdXBcbiIgJSAoc2VsZi5pcCwgc2VsZi5uZXRtYXNrKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9zZXJpYWwoY21kLCByYXc9VHJ1ZSlbMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJjb25maWd1cmVkIGlwIGFkZHJlc3MgJXMiLCBzZWxmLmlwKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNvdWxkbid0IGNvbmZpZ3VyZSBndWVzdCBuZXR3b3JraW5nIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNvdWxkbid0IGxvZ2luIGludG8gc2VyaWFsIGNvbnNvbGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhcyByb290IHVzaW5nIGJsYW5rIHBhc3N3b3JkIikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcmlhbCBjb25zb2xlIGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gbG9naW4iKQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQpAQCAtMzMyLDcgKzM0NSw3IEBACiAgICAgICAgIGlmIHNlbGYucnVucWVtdToKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIm1vbml0b3JwaWQiKToKICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYubW9uaXRvcnBpZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNlbmRpbmcgU0lHVEVSTSB0byBydW5xZW11IikKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VuZGluZyBTSUdURVJNIHRvIHJ1bnFlbXUiKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5ydW5xZW11LnBpZCksIHNpZ25hbC5TSUdURVJNKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CkBAIC0zNDIsNyArMzU1LDcgQEAKICAgICAgICAgICAgIHdoaWxlIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgTm9uZSBhbmQgdGltZS50aW1lKCkgPCBlbmR0aW1lOgogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2VuZGluZyBTSUdLSUxMIHRvIHJ1bnFlbXUiKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZW5kaW5nIFNJR0tJTEwgdG8gcnVucWVtdSIpCiAgICAgICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5ydW5xZW11LnBpZCksIHNpZ25hbC5TSUdLSUxMKQogICAgICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdzZXJ2ZXJfc29ja2V0JykgYW5kIHNlbGYuc2VydmVyX3NvY2tldDoKQEAgLTM1MCw2ICszNjMsOCBAQAogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gTm9uZQogICAgICAgICBzZWxmLnFlbXVwaWQgPSBOb25lCiAgICAgICAgIHNlbGYuaXAgPSBOb25lCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucWVtdV9waWRmaWxlKToKKyAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnFlbXVfcGlkZmlsZSkKIAogICAgIGRlZiBzdG9wX3FlbXVfc3lzdGVtKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnFlbXVwaWQ6CkBAIC0zNTcsNyArMzcyLDcgQEAKICAgICAgICAgICAgICAgICAjIHFlbXUtc3lzdGVtIGJlaGF2ZXMgd2VsbCBhbmQgYSBTSUdURVJNIGlzIGVub3VnaAogICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5xZW11cGlkLCBzaWduYWwuU0lHVEVSTSkKICAgICAgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybigncWVtdS1zeXN0ZW0gZW5kZWQgdW5leHBlY3RlZGx5JykKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuKCdxZW11LXN5c3RlbSBlbmRlZCB1bmV4cGVjdGVkbHknKQogCiAgICAgZGVmIHN0b3BfdGhyZWFkKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnRocmVhZCBhbmQgc2VsZi50aHJlYWQuaXNfYWxpdmUoKToKQEAgLTM2NSw3ICszODAsNyBAQAogICAgICAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCiAKICAgICBkZWYgcmVzdGFydChzZWxmLCBxZW11cGFyYW1zID0gTm9uZSk6Ci0gICAgICAgIGxvZ2dlci5pbmZvKCJSZXN0YXJ0aW5nIHFlbXUgcHJvY2VzcyIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZXN0YXJ0aW5nIHFlbXUgcHJvY2VzcyIpCiAgICAgICAgIGlmIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgIGlmIHNlbGYuc3RhcnQocWVtdXBhcmFtcyk6CkBAIC0zNzUsNTYgKzM5MCwxNiBAQAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYucnVucWVtdToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBxZW11X2NoaWxkID0gc2VsZi5maW5kX2NoaWxkKHN0cihzZWxmLnJ1bnFlbXUucGlkKSkKLSAgICAgICAgaWYgcWVtdV9jaGlsZDoKLSAgICAgICAgICAgIHNlbGYucWVtdXBpZCA9IHFlbXVfY2hpbGRbMF0KLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIvcHJvYy8iICsgc3RyKHNlbGYucWVtdXBpZCkpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnFlbXVfcGlkZmlsZSk6CisgICAgICAgICAgICBmID0gb3BlbihzZWxmLnFlbXVfcGlkZmlsZSwgJ3InKQorICAgICAgICAgICAgcWVtdV9waWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBxZW11cGlkID0gaW50KHFlbXVfcGlkKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIi9wcm9jLyIgKyBzdHIocWVtdXBpZCkpOgorICAgICAgICAgICAgICAgIHNlbGYucWVtdXBpZCA9IHFlbXVwaWQKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBmaW5kX2NoaWxkKHNlbGYscGFyZW50X3BpZCk6Ci0gICAgICAgICMKLSAgICAgICAgIyBXYWxrIHRoZSBwcm9jZXNzIHRyZWUgZnJvbSB0aGUgcHJvY2VzcyBzcGVjaWZpZWQgbG9va2luZyBmb3IgYSBxZW11LXN5c3RlbS4gUmV0dXJuIGl0cyBbcGlkJ2NtZF0KLSAgICAgICAgIwotICAgICAgICBwcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydwcycsICdheHd3JywgJy1vJywgJ3BpZCxwcGlkLGNvbW1hbmQnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQotICAgICAgICBwcm9jZXNzZXMgPSBwcy5kZWNvZGUoInV0Zi04Iikuc3BsaXQoJ1xuJykKLSAgICAgICAgbmZpZWxkcyA9IGxlbihwcm9jZXNzZXNbMF0uc3BsaXQoKSkgLSAxCi0gICAgICAgIHBpZHMgPSB7fQotICAgICAgICBjb21tYW5kcyA9IHt9Ci0gICAgICAgIGZvciByb3cgaW4gcHJvY2Vzc2VzWzE6XToKLSAgICAgICAgICAgIGRhdGEgPSByb3cuc3BsaXQoTm9uZSwgbmZpZWxkcykKLSAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSAzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBkYXRhWzFdIG5vdCBpbiBwaWRzOgotICAgICAgICAgICAgICAgIHBpZHNbZGF0YVsxXV0gPSBbXQotCi0gICAgICAgICAgICBwaWRzW2RhdGFbMV1dLmFwcGVuZChkYXRhWzBdKQotICAgICAgICAgICAgY29tbWFuZHNbZGF0YVswXV0gPSBkYXRhWzJdCi0KLSAgICAgICAgaWYgcGFyZW50X3BpZCBub3QgaW4gcGlkczoKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIHBhcmVudHMgPSBbXQotICAgICAgICBuZXdwYXJlbnRzID0gcGlkc1twYXJlbnRfcGlkXQotICAgICAgICB3aGlsZSBuZXdwYXJlbnRzOgotICAgICAgICAgICAgbmV4dCA9IFtdCi0gICAgICAgICAgICBmb3IgcCBpbiBuZXdwYXJlbnRzOgotICAgICAgICAgICAgICAgIGlmIHAgaW4gcGlkczoKLSAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcGlkc1twXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG4gbm90IGluIHBhcmVudHMgYW5kIG4gbm90IGluIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQobikKLSAgICAgICAgICAgICAgICBpZiBwIG5vdCBpbiBwYXJlbnRzOgotICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLmFwcGVuZChwKQotICAgICAgICAgICAgICAgICAgICBuZXdwYXJlbnRzID0gbmV4dAotICAgICAgICAjcHJpbnQoIkNoaWxkcmVuIG1hdGNoaW5nICVzOiIgJSBzdHIocGFyZW50cykpCi0gICAgICAgIGZvciBwIGluIHBhcmVudHM6Ci0gICAgICAgICAgICAjIE5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHJ1bnFlbXUgcnVucyAibGRkIHFlbXUtc3lzdGVtLXh4eHgiCi0gICAgICAgICAgICAjIEFsc28sIG9sZCB2ZXJzaW9ucyBvZiBsZGQgKDIuMTEpIHJ1biAiTERfWFhYWCBxZW11LXN5c3RlbS14eHh4IgotICAgICAgICAgICAgYmFzZWNtZCA9IGNvbW1hbmRzW3BdLnNwbGl0KClbMF0KLSAgICAgICAgICAgIGJhc2VjbWQgPSBvcy5wYXRoLmJhc2VuYW1lKGJhc2VjbWQpCi0gICAgICAgICAgICBpZiAicWVtdS1zeXN0ZW0iIGluIGJhc2VjbWQgYW5kICItc2VyaWFsIHRjcCIgaW4gY29tbWFuZHNbcF06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtpbnQocCksY29tbWFuZHNbcF1dCi0KICAgICBkZWYgcnVuX3NlcmlhbChzZWxmLCBjb21tYW5kLCByYXc9RmFsc2UsIHRpbWVvdXQ9NSk6CiAgICAgICAgICMgV2UgYXNzdW1lIHRhcmdldCBzeXN0ZW0gaGF2ZSBlY2hvIHRvIGdldCBjb21tYW5kIHN0YXR1cwogICAgICAgICBpZiBub3QgcmF3OgpAQCAtNDc0LDcgKzQ0OSw3IEBACiAKICAgICBkZWYgX2R1bXBfaG9zdChzZWxmKToKICAgICAgICAgc2VsZi5ob3N0X2R1bXBlci5jcmVhdGVfZGlyKCJxZW11IikKLSAgICAgICAgbG9nZ2VyLndhcm4oIlFlbXUgZW5kZWQgdW5leHBlY3RlZGx5LCBkdW1wIGRhdGEgZnJvbSBob3N0IgorICAgICAgICBzZWxmLmxvZ2dlci53YXJuKCJRZW11IGVuZGVkIHVuZXhwZWN0ZWRseSwgZHVtcCBkYXRhIGZyb20gaG9zdCIKICAgICAgICAgICAgICAgICAiIGlzIGluICVzIiAlIHNlbGYuaG9zdF9kdW1wZXIuZHVtcF9kaXIpCiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIuZHVtcF9ob3N0KCkKIApAQCAtNTAzLDE3ICs0NzgsMTcgQEAKICAgICAgICAgICAgIHNlbGYudGVhcmRvd24oKQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRpbmcgbG9nZ2luZyB0aHJlYWQiKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RhcnRpbmcgbG9nZ2luZyB0aHJlYWQiKQogICAgICAgICBzZWxmLnJlYWRwaXBlLCBzZWxmLndyaXRlcGlwZSA9IG9zLnBpcGUoKQogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLnJ1bihzZWxmKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0b3BwaW5nIGxvZ2dpbmcgdGhyZWFkIikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0b3BwaW5nIGxvZ2dpbmcgdGhyZWFkIikKICAgICAgICAgaWYgc2VsZi5ydW5uaW5nOgogICAgICAgICAgICAgb3Mud3JpdGUoc2VsZi53cml0ZXBpcGUsIGJ5dGVzKCJzdG9wIiwgInV0Zi04IikpCiAKICAgICBkZWYgdGVhcmRvd24oc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlRlYXJpbmcgZG93biBsb2dnaW5nIHRocmVhZCIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUZWFyaW5nIGRvd24gbG9nZ2luZyB0aHJlYWQiKQogICAgICAgICBzZWxmLmNsb3NlX3NvY2tldChzZWxmLnNlcnZlcnNvY2spCiAKICAgICAgICAgaWYgc2VsZi5yZWFkc29jayBpcyBub3QgTm9uZToKQEAgLTUzMSw3ICs1MDYsNyBAQAogCiAgICAgICAgIGJyZWFrb3V0ID0gRmFsc2UKICAgICAgICAgc2VsZi5ydW5uaW5nID0gVHJ1ZQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdGFydGluZyB0aHJlYWQgZXZlbnQgbG9vcCIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyB0aHJlYWQgZXZlbnQgbG9vcCIpCiAgICAgICAgIHdoaWxlIG5vdCBicmVha291dDoKICAgICAgICAgICAgIGV2ZW50cyA9IHBvbGwucG9sbCgpCiAgICAgICAgICAgICBmb3IgZXZlbnQgaW4gZXZlbnRzOgpAQCAtNTQxLDE5ICs1MTYsMTkgQEAKIAogICAgICAgICAgICAgICAgICMgRXZlbnQgdG8gc3RvcCB0aGUgdGhyZWFkCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5yZWFkcGlwZSA9PSBldmVudFswXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RvcCBldmVudCByZWNlaXZlZCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wIGV2ZW50IHJlY2VpdmVkIikKICAgICAgICAgICAgICAgICAgICAgYnJlYWtvdXQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgICAgICAjIEEgY29ubmVjdGlvbiByZXF1ZXN0IHdhcyByZWNlaXZlZAogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5zZXJ2ZXJzb2NrLmZpbGVubygpID09IGV2ZW50WzBdOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJDb25uZWN0aW9uIHJlcXVlc3QgcmVjZWl2ZWQiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ29ubmVjdGlvbiByZXF1ZXN0IHJlY2VpdmVkIikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFkc29jaywgXyA9IHNlbGYuc2VydmVyc29jay5hY2NlcHQoKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYWRzb2NrLnNldGJsb2NraW5nKDApCiAgICAgICAgICAgICAgICAgICAgIHBvbGwudW5yZWdpc3RlcihzZWxmLnNlcnZlcnNvY2suZmlsZW5vKCkpCiAgICAgICAgICAgICAgICAgICAgIHBvbGwucmVnaXN0ZXIoc2VsZi5yZWFkc29jay5maWxlbm8oKSwgZXZlbnRfcmVhZF9tYXNrKQogCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlNldHRpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCBldmVudCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQgZXZlbnQiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25fZXN0YWJsaXNoZWQuc2V0KCkKIAogICAgICAgICAgICAgICAgICMgQWN0dWFsIGRhdGEgdG8gYmUgbG9nZ2VkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11dGlueXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CmluZGV4IDFiZjU5MDAuLjYzYjVkMTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAKIGNsYXNzIFFlbXVUaW55UnVubmVyKFFlbXVSdW5uZXIpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBrZXJuZWwsIGJvb3R0aW1lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFjaGluZSwgcm9vdGZzLCBkaXNwbGF5LCB0bXBkaXIsIGRlcGxveV9kaXJfaW1hZ2UsIGxvZ2ZpbGUsIGtlcm5lbCwgYm9vdHRpbWUsIGxvZ2dlcik6CiAKICAgICAgICAgIyBQb3BlbiBvYmplY3QgZm9yIHJ1bnFlbXUKICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQpAQCAtNDAsNiArNDAsNyBAQAogICAgICAgICBzZWxmLnNvY2tldGZpbGUgPSAiY29uc29sZS5zb2NrIgogICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBOb25lCiAgICAgICAgIHNlbGYua2VybmVsID0ga2VybmVsCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKIAogICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKaW5kZXggMDVkNjUwMi4uZDI5Mjg5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CkBAIC0xNTAsMTIgKzE1MCw5IEBACiAKICAgICBkZWYgY29weV90byhzZWxmLCBsb2NhbHBhdGgsIHJlbW90ZXBhdGgpOgogICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhsb2NhbHBhdGgpOgotICAgICAgICAgICAgbGluayA9IG9zLnJlYWRsaW5rKGxvY2FscGF0aCkKLSAgICAgICAgICAgIGRzdF9kaXIsIGRzdF9iYXNlID0gb3MucGF0aC5zcGxpdChyZW1vdGVwYXRoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuKCJjZCAlczsgbG4gLXMgJXMgJXMiICUgKGRzdF9kaXIsIGxpbmssIGRzdF9iYXNlKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcCArIFtsb2NhbHBhdGgsICclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKV0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbnRlcm5hbF9ydW4oY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSkKKyAgICAgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguZGlybmFtZShsb2NhbHBhdGgpICsgIi8iICsgb3MucmVhZGxpbmsobG9jYWxwYXRoKQorICAgICAgICBjb21tYW5kID0gc2VsZi5zY3AgKyBbbG9jYWxwYXRoLCAnJXNAJXM6JXMnICUgKHNlbGYudXNlciwgc2VsZi5pcCwgcmVtb3RlcGF0aCldCisgICAgICAgIHJldHVybiBzZWxmLl9pbnRlcm5hbF9ydW4oY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSkKIAogICAgIGRlZiBjb3B5X2Zyb20oc2VsZiwgcmVtb3RlcGF0aCwgbG9jYWxwYXRoKToKICAgICAgICAgY29tbWFuZCA9IHNlbGYuc2NwICsgWyclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKSwgbG9jYWxwYXRoXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGFyZ2V0YnVpbGQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQppbmRleCA5MjQ5ZmEyLi4xMjAyZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQpAQCAtNjksNyArNjksNyBAQAogCiAgICAgZGVmIGNsZWFuKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW4oJ3JtIC1yZiAlcycgJSBzZWxmLnRhcmdldGRpcikKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKCdybSAtZiAlcycgJSBzZWxmLmxvY2FsYXJjaGl2ZSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKCdybSAtZiAlcycgJSBzZWxmLmxvY2FsYXJjaGl2ZSwgc2hlbGw9VHJ1ZSkKICAgICAgICAgcGFzcwogCiBjbGFzcyBUYXJnZXRCdWlsZFByb2plY3QoQnVpbGRQcm9qZWN0KToKQEAgLTEzNiw0ICsxMzYsNCBAQAogCiAgICAgZGVmIF9ydW4oc2VsZiwgY21kKToKICAgICAgICAgc2VsZi5sb2coIlJ1bm5pbmcgLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kKQotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKCIuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoIi4gJXM7ICIgJSBzZWxmLnNka2VudiArIGNtZCwgc2hlbGw9VHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgppbmRleCBkMGY3YmIzLi4wNjcwNTU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCkBAIC01LDYgKzUsNyBAQAogIyBGaWxlbmFtZTogYWxzYS1zdGF0ZS5iYgogCiBTVU1NQVJZID0gIkFsc2Egc2NlbmFyaW8gZmlsZXMgdG8gZW5hYmxlIGFsc2Egc3RhdGUgcmVzdG9yYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvIgogREVTQ1JJUFRJT04gPSAiQWxzYSBTY2VuYXJpbyBGaWxlcyAtIGFuIGluaXQgc2NyaXB0IGFuZCBzdGF0ZSBmaWxlcyB0byByZXN0b3JlIFwKIHNvdW5kIHN0YXRlIGF0IHN5c3RlbSBib290IGFuZCBzYXZlIGl0IGF0IHN5c3RlbSBzaHV0IGRvd24uIgogTElDRU5TRSA9ICJNSVQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvMDAwMS1NYXJrLW91ci1leHBsaWNpdC1mYWxsLXRocm91Z2gtc28tV2V4dHJhLXdpbGwtd29yay1pLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpLzAwMDEtTWFyay1vdXItZXhwbGljaXQtZmFsbC10aHJvdWdoLXNvLVdleHRyYS13aWxsLXdvcmstaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhZWIyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvMDAwMS1NYXJrLW91ci1leHBsaWNpdC1mYWxsLXRocm91Z2gtc28tV2V4dHJhLXdpbGwtd29yay1pLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA2NzZhOGE5MDAxZjA2ODA4YjRkYmUwYTU0NWQ3NmI1ZDlhOGViZjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAyIEZlYiAyMDE3IDEzOjUxOjI3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1hcmsgb3VyIGV4cGxpY2l0IGZhbGwgdGhyb3VnaCBzbyAtV2V4dHJhIHdpbGwgd29yayBpbiBnY2MgNwotCi1nY2MgNyBpbnRyb2R1Y2VzIGRldGVjdGlvbiBvZiBmYWxsLXRocm91Z2ggYmVoYXZpb3IgaW4gc3dpdGNoL2Nhc2UKLXN0YXRlbWVudHMsIGFuZCB3aWxsIHdhcm4gaWYgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCBpcyBwcmVzZW50IGFuZCB0aGVyZQotaXMgbm8gY29tbWVudCBzdGF0aW5nIHRoYXQgdGhlIGZhbGwtdGhyb3VnaCBpcyBpbnRlbnRpb25hbC4gIFRoaXMgaXMKLWFsc28gdHJpZ2dlcmVkIGJ5IC1XZXh0cmEsIGFzIGl0IGVuYWJsZXMgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD0xLgotCi1UaGlzIHBhdGNoIGFkZHMgdGhlIGNvbW1lbnQgaW4gdGhlIG9uZSBwbGFjZSB3ZSB1c2UgZmFsbC10aHJvdWdoLgotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGliL3ByaW50LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYi9wcmludC5jIGIvbGliL3ByaW50LmMKLWluZGV4IGI4YTlkMzguLmNiNzMyZjAgMTAwNjQ0Ci0tLS0gYS9saWIvcHJpbnQuYwotKysrIGIvbGliL3ByaW50LmMKLUBAIC0xMTMxLDYgKzExMzEsNyBAQCBSZXR1cm5zOgotICAgICAgICAgICAgIGNhc2UgJ1gnOgotICAgICAgICAgICAgICAgICBJdGVtLldpZHRoID0gSXRlbS5Mb25nID8gMTYgOiA4OwotICAgICAgICAgICAgICAgICBJdGVtLlBhZCA9ICcwJzsKLSsJCS8qIGZhbGxzIHRocm91Z2ggKi8KLSAgICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAgVmFsdWVUb0hleCAoCi0gICAgICAgICAgICAgICAgICAgICBJdGVtLlNjcmF0Y2gsCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoCmluZGV4IDBjZTZkN2IuLjY5ZWZkMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA4ZDE2YWUzNzRjNWQ0ZDlmYWM0NWMwMDI2MDVhNjZjZmI4YzA4YmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RldmUgTGFuZ2FzZWsgPHN0ZXZlLmxhbmdhc2VrQHVidW50dS5jb20+CitEYXRlOiBXZWQsIDkgU2VwIDIwMTUgMDg6MjY6MDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIGdudS1lZmksIHN5c2xpbnV4OiBTdXBwb3J0IGdjYyA8IDQuNworCiBkb24ndCBicmVhayB3aXRoIG9sZCBjb21waWxlcnMgYW5kIC1ER05VX0VGSV9VU0VfTVNfQUJJCiBJdCdzIGVudGlyZWx5IGxlZ2l0aW1hdGUgdG8gcmVxdWVzdCBHTlVfRUZJX1VTRV9NU19BQkkgZXZlbiBpZiB0aGUgY3VycmVudAogY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IGl0LCBhbmQgZ251LWVmaSBzaG91bGQgdHJhbnNwYXJlbnRseSBmYWxsIGJhY2sgdG8KQEAgLTYsMTYgKzExLDI1IEBACiAKIEF1dGhvcjogU3RldmUgTGFuZ2FzZWsgPHN0ZXZlLmxhbmdhc2VrQHVidW50dS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnbnUtZWZpLTMuMC4zL2luYy94ODZfNjQvZWZpYmluZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251LWVmaS0zLjAuMy5vcmlnL2luYy94ODZfNjQvZWZpYmluZC5oCi0rKysgZ251LWVmaS0zLjAuMy9pbmMveDg2XzY0L2VmaWJpbmQuaAorW1JlYmFzZWQgZm9yIDMuMC42XQorU2lnbmVkLW9mZi1ieTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KKy0tLQorIGluYy94ODZfNjQvZWZpYmluZC5oIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jL3g4Nl82NC9lZmliaW5kLmggYi9pbmMveDg2XzY0L2VmaWJpbmQuaAoraW5kZXggNDMwOWY5Zi4uMDJjMGFmMSAxMDA2NDQKKy0tLSBhL2luYy94ODZfNjQvZWZpYmluZC5oCisrKysgYi9pbmMveDg2XzY0L2VmaWJpbmQuaAogQEAgLTI1LDggKzI1LDYgQEAgUmV2aXNpb24gSGlzdG9yeQogICNpZiBkZWZpbmVkKEdOVV9FRklfVVNFX01TX0FCSSkKLSAgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykpCisgICAgICNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3KSkpfHwoZGVmaW5lZChfX2NsYW5nX18pICYmIChfX2NsYW5nX21ham9yX18gPiAzIHx8IChfX2NsYW5nX21ham9yX18gPT0gMyAmJiBfX2NsYW5nX21pbm9yX18gPj0gMikpKQogICAgICAgICAgI2RlZmluZSBIQVZFX1VTRV9NU19BQkkgMQogLSAgICAjZWxzZQogLSAgICAgICAgI2Vycm9yIENvbXBpbGVyIGlzIHRvbyBvbGQgZm9yIEdOVV9FRklfVVNFX01TX0FCSQogICAgICAjZW5kaWYKICAjZW5kaWYKICAKKy0tIAorMi45LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaAppbmRleCBlNWI0N2MxLi4wMTEwMjYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUZpeCBwYXJhbGxlbCBtYWtlIGZhaWx1cmUgZm9yIGFyY2hpdmVzCitGcm9tIDE2ODY1ZGU2NmRiMzNjYTcwODcyMTk5ZTcwZDkzZWZjY2VjYzg1NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBTdW4sIDkgTWFyIDIwMTQgMTU6MjI6MTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIEZpeCBwYXJhbGxlbCBtYWtlIGZhaWx1cmUgZm9yIGFyY2hpdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMiwzMSArMTUsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGFycmVuIEhhcnQgPGR2aGFydEBsaW51eC5pbnRlbC5jb20+CitbUmViYXNlZCBmb3IgMy4wLjZdCitTaWduZWQtb2ZmLWJ5OiBDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPgogLS0tCi0tLS0KLSBnbnVlZmkvTWFrZWZpbGUgfCAgICAzICsrLQotIGxpYi9NYWtlZmlsZSAgICB8ICAgIDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ251ZWZpL01ha2VmaWxlIHwgMyArKy0KKyBsaWIvTWFrZWZpbGUgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBnbnUtZWZpLTMuMC9saWIvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnUtZWZpLTMuMC5vcmlnL2xpYi9NYWtlZmlsZQotKysrIGdudS1lZmktMy4wL2xpYi9NYWtlZmlsZQotQEAgLTY2LDcgKzY2LDggQEAgYWxsOiBsaWJzdWJkaXJzIGxpYmVmaS5hCi0gbGlic3ViZGlyczoKLSAJZm9yIHNkaXIgaW4gJChTVUJESVJTKTsgZG8gbWtkaXIgLXAgJCRzZGlyOyBkb25lCi0gCi0tbGliZWZpLmE6ICQocGF0c3Vic3QgJSxsaWJlZmkuYSglKSwkKE9CSlMpKQotK2xpYmVmaS5hOiAkKE9CSlMpCi0rCSQoQVIpIHJ2ICRAICQoT0JKUykKLSAKLSBjbGVhbjoKLSAJcm0gLWYgbGliZWZpLmEgKn4gJChPQkpTKSAqLyoubwotSW5kZXg6IGdudS1lZmktMy4wL2dudWVmaS9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudS1lZmktMy4wLm9yaWcvZ251ZWZpL01ha2VmaWxlCi0rKysgZ251LWVmaS0zLjAvZ251ZWZpL01ha2VmaWxlCi1AQCAtNTEsNyArNTEsOCBAQCBUQVJHRVRTCT0gY3J0MC1lZmktJChBUkNIKS5vIGxpYmdudWVmaS5hCitkaWZmIC0tZ2l0IGEvZ251ZWZpL01ha2VmaWxlIGIvZ251ZWZpL01ha2VmaWxlCitpbmRleCAyYTYxNjk5Li4xNDgxMDZlIDEwMDY0NAorLS0tIGEvZ251ZWZpL01ha2VmaWxlCisrKysgYi9nbnVlZmkvTWFrZWZpbGUKK0BAIC01NCw3ICs1NCw4IEBAIFRBUkdFVFMJPSBjcnQwLWVmaS0kKEFSQ0gpLm8gbGliZ251ZWZpLmEKICAKICBhbGw6CSQoVEFSR0VUUykKICAKQEAgLTQ2LDMgKzM2LDE5IEBACiAgCiAgY2xlYW46CiAgCXJtIC1mICQoVEFSR0VUUykgKn4gKi5vICQoT0JKUykKK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKK2luZGV4IGI4ZDFjZTcuLjZlZjgxMDcgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUKKysrKyBiL2xpYi9NYWtlZmlsZQorQEAgLTc1LDcgKzc1LDcgQEAgbGlic3ViZGlyczoKKyAJZm9yIHNkaXIgaW4gJChTVUJESVJTKTsgZG8gbWtkaXIgLXAgJCRzZGlyOyBkb25lCisgCisgbGliZWZpLmE6ICQoT0JKUykKKy0JJChBUikgcnYgLVUgJEAgJF4KKysJJChBUikgcnYgJEAgJChPQkpTKQorIAorIGNsZWFuOgorIAlybSAtZiBsaWJlZmkuYSAqfiAkKE9CSlMpICovKi5vCistLSAKKzIuOS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZmOWY1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ251LWVmaS8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MisgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYXJtLlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFhcmNoNjQuUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxpbnRmLmg7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjA7bWQ1PTIwMjc2NmI3OWQ3MDhlZmYzY2M3MGZjZTE1ZmI4MGM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbHBhcm0uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTExO21kNT00NjhiMTIzMWIwNWJiYzg0YmFlM2EwZDU3NzRlM2JiNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYXJrLW91ci1leHBsaWNpdC1mYWxsLXRocm91Z2gtc28tV2V4dHJhLXdpbGwtd29yay1pLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWY3MTljOWMxMzU3NzhhYTZiMDg3Yjg5YTFjYzI0MjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ4ZmNkNTkxNGYxOGZjMGU0YmE5NDhhYjAzYjAwMDEzZTUyODUwNGY1MjljNjA3MzliNzQ4ZjZlZjEzMGIyMiIKLQotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2Lip8YWFyY2g2NC4qfGFybS4qKS1saW51eCIKLUNPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJwotCi1kb19jb25maWd1cmVfbGludXgtZ251eDMyX3ByZXBlbmQoKSB7Ci0JY3AgJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLXgzMi5oICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy02NC5oCi0JY3AgJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS0zMi5oICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtNjQuaAotfQotCi1kZWYgZ251X2VmaV9hcmNoKGQpOgotICAgIGltcG9ydCByZQotICAgIHRhcmNoID0gZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikKLSAgICBpZiByZS5tYXRjaCgiaVszNDU2Nzg5XTg2IiwgdGFyY2gpOgotICAgICAgICByZXR1cm4gImlhMzIiCi0gICAgcmV0dXJuIHRhcmNoCi0KLUVYVFJBX09FTUFLRSA9ICInQVJDSD0ke0BnbnVfZWZpX2FyY2goZCl9JyAnQ0M9JHtDQ30nICdBUz0ke0FTfScgJ0xEPSR7TER9JyAnQVI9JHtBUn0nIFwKLSAgICAgICAgICAgICAgICAnUkFOTElCPSR7UkFOTElCfScgJ09CSkNPUFk9JHtPQkpDT1BZfScgJ1BSRUZJWD0ke3ByZWZpeH0nICdMSUJESVI9JHtsaWJkaXJ9JyBcCi0gICAgICAgICAgICAgICAgIgotCi0jIGdudS1lZmkncyBNYWtlZmlsZSB0cmVhdHMgcHJlZml4IGFzIHRvb2xjaGFpbiBwcmVmaXgsIHNvIGRvbid0Ci0jIGV4cG9ydCBpdC4KLXByZWZpeFt1bmV4cG9ydF0gPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExST09UPSIke0R9IgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoubGRzIgotCi0jIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIEVGSSB3aGVuIHRhcmdldGluZyBYMzIKLUlOU0FORV9TS0lQXyR7UE59LWRldl9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBJdCBkb2Vzbid0IHN1cHBvcnQgc3NlLCBpdHMgbWFrZS5kZWZhdWx0cyBzZXRzOgotIyBDRkxBR1MgKz0gLW1uby1tbXggLW1uby1zc2UKLSMgU28gYWxzbyByZW1vdmUgLW1mcG1hdGg9c3NlIGZyb20gVFVORV9DQ0FSR1MKLVRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCi0KLXB5dGhvbiAoKSB7Ci0gICAgY2NhcmdzID0gZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykuc3BsaXQoKQotICAgIGlmICctbXgzMicgaW4gY2NhcmdzOgotICAgICAgICAjIHVzZSB4ODZfNjQgRUZJIEFCSQotICAgICAgICBjY2FyZ3MucmVtb3ZlKCctbXgzMicpCi0gICAgICAgIGNjYXJncy5hcHBlbmQoJy1tNjQnKQotICAgICAgICBkLnNldFZhcignVFVORV9DQ0FSR1MnLCAnICcuam9pbihjY2FyZ3MpKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNjA3MTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIKQEAgLTAsMCArMSw3MSBAQAorU1VNTUFSWSA9ICJMaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBFRkkgYmluYXJpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dudS1lZmkvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjIrIHwgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFybS5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hYXJjaDY0LlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxsaW50Zi5oO2JlZ2lubGluZT0xMztlbmRsaW5lPTIwO21kNT0yMDI3NjZiNzlkNzA4ZWZmM2NjNzBmY2UxNWZiODBjNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxwYXJtLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMTttZDU9NDY4YjEyMzFiMDViYmM4NGJhZTNhMGQ1Nzc0ZTNiYjUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FybS9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FybS9pbml0cGxhdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9pbml0cGxhdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDZmNjMzNzU4YThhMzdkYjlmZDY5MDlmZTI3MGMyNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE1MTU5MDJkODBmYmVhMjMzMjhhNjFkNzBkM2Q1MWE0NzIwNGFiZDE1MDdlYmZhMjc1NTBhN2I5YmYyMmM5MSIKKworQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2Lip8YWFyY2g2NC4qfGFybS4qKS1saW51eCIKK0NPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJworCitkb19jb25maWd1cmVfbGludXgtZ251eDMyX3ByZXBlbmQoKSB7CisJY3AgJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLXgzMi5oICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy02NC5oCisJY3AgJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS0zMi5oICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtNjQuaAorfQorCitkZWYgZ251X2VmaV9hcmNoKGQpOgorICAgIGltcG9ydCByZQorICAgIHRhcmNoID0gZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikKKyAgICBpZiByZS5tYXRjaCgiaVszNDU2Nzg5XTg2IiwgdGFyY2gpOgorICAgICAgICByZXR1cm4gImlhMzIiCisgICAgcmV0dXJuIHRhcmNoCisKK0VYVFJBX09FTUFLRSA9ICInQVJDSD0ke0BnbnVfZWZpX2FyY2goZCl9JyAnQ0M9JHtDQ30nICdBUz0ke0FTfScgJ0xEPSR7TER9JyAnQVI9JHtBUn0nIFwKKyAgICAgICAgICAgICAgICAnUkFOTElCPSR7UkFOTElCfScgJ09CSkNPUFk9JHtPQkpDT1BZfScgJ1BSRUZJWD0ke3ByZWZpeH0nICdMSUJESVI9JHtsaWJkaXJ9JyBcCisgICAgICAgICAgICAgICAgIgorCisjIGdudS1lZmkncyBNYWtlZmlsZSB0cmVhdHMgcHJlZml4IGFzIHRvb2xjaGFpbiBwcmVmaXgsIHNvIGRvbid0CisjIGV4cG9ydCBpdC4KK3ByZWZpeFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExST09UPSIke0R9IgorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoubGRzIgorCisjIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIEVGSSB3aGVuIHRhcmdldGluZyBYMzIKK0lOU0FORV9TS0lQXyR7UE59LWRldl9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2X2FwcGVuZF9saW51eC1tdXNseDMyID0gIiBhcmNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBJdCBkb2Vzbid0IHN1cHBvcnQgc3NlLCBpdHMgbWFrZS5kZWZhdWx0cyBzZXRzOgorIyBDRkxBR1MgKz0gLW1uby1tbXggLW1uby1zc2UKKyMgU28gYWxzbyByZW1vdmUgLW1mcG1hdGg9c3NlIGZyb20gVFVORV9DQ0FSR1MKK1RVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCisKK3B5dGhvbiAoKSB7CisgICAgY2NhcmdzID0gZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykuc3BsaXQoKQorICAgIGlmICctbXgzMicgaW4gY2NhcmdzOgorICAgICAgICAjIHVzZSB4ODZfNjQgRUZJIEFCSQorICAgICAgICBjY2FyZ3MucmVtb3ZlKCctbXgzMicpCisgICAgICAgIGNjYXJncy5hcHBlbmQoJy1tNjQnKQorICAgICAgICBkLnNldFZhcignVFVORV9DQ0FSR1MnLCAnICcuam9pbihjY2FyZ3MpKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWdpdC8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1FbmZvcmNlLW5vLXBpZS1pZi10aGUtY29tcGlsZXItc3VwcG9ydHMtaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRW5mb3JjZS1uby1waWUtaWYtdGhlLWNvbXBpbGVyLXN1cHBvcnRzLWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2RiZWUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1FbmZvcmNlLW5vLXBpZS1pZi10aGUtY29tcGlsZXItc3VwcG9ydHMtaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDYxODZiY2YxYmNhYWEwZjE2ZTc5MzM5ZTA3YzY0Yzg0MWQ0ZDk1N2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMDo1Mjo0MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBFbmZvcmNlIC1uby1waWUsIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4KLQotQWRkIGEgLW5vLXBpZSBhcyByZWNlbnQgKDIgRGVjIDIwMTYpIERlYmlhbiB0ZXN0aW5nIGNvbXBpbGVyCi1zZWVtcyB0byBkZWZhdWx0IHRvIGVuYWJsaW5nIFBJRSB3aGVuIGxpbmtpbmcuIFNlZQotaHR0cHM6Ly93aWtpLnVidW50dS5jb20vU2VjdXJpdHlUZWFtL1BJRQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gYWNpbmNsdWRlLm00IHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggMTkyMDBiMC4uYTcxMzkyMyAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtNDE2LDcgKzQxNiw3IEBAIGludCBtYWluKCkgewotIAotIFsjIGAkQ0MgLWMgLW8gLi4uJyBtaWdodCBub3QgYmUgcG9ydGFibGUuICBCdXQsIG9oLCB3ZWxsLi4uICBJcyBjYWxsaW5nCi0gIyBgYWNfY29tcGlsZScgbGlrZSB0aGlzIGNvcnJlY3QsIGFmdGVyIGFsbD8KLS1pZiBldmFsICIkYWNfY29tcGlsZSAtUyAtbyBjb25mdGVzdC5zIiAyPiAvZGV2L251bGw7IHRoZW5dCi0raWYgZXZhbCAiJGFjX2NvbXBpbGUgLVMgLW8gY29uZnRlc3QucyIgMj4gL2Rldi9udWxsICYmIGV2YWwgIiRDQyAtZHVtcHNwZWNzIDI+L2Rldi9udWxsIHwgZ3JlcCAtZSBuby1waWUiIDsgdGhlbl0KLSAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICBbIyBTaG91bGQgd2UgY2xlYXIgdXAgb3RoZXIgZmlsZXMgYXMgd2VsbCwgaGF2aW5nIGNhbGxlZCBgQUNfTEFOR19DT05GVEVTVCc/Ci0gICBybSAtZiBjb25mdGVzdC5zCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkZjIwOTkxLi41MDZjNmI0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDMsNyArNjAzLDcgQEAgZ3J1Yl9DSEVDS19QSUUKLSBbIyBOZWVkIHRoYXQsIGJlY2F1c2Ugc29tZSBkaXN0cmlidXRpb25zIHNoaXAgY29tcGlsZXJzIHRoYXQgaW5jbHVkZQotICMgYC1mUElFJyBpbiB0aGUgZGVmYXVsdCBzcGVjcy4KLSBpZiBbIHgiJHBpZV9wb3NzaWJsZSIgPSB4eWVzIF07IHRoZW4KLS0gIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1mbm8tUElFIgotKyAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLWZuby1QSUUgLW5vLXBpZSIKLSBmaV0KLSAKLSAjIFBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUuCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRml4LUNWRS0yMDE1LTgzNzAtR3J1YjItdXNlci1wYXNzLXZ1bG5lcmFiaWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRml4LUNWRS0yMDE1LTgzNzAtR3J1YjItdXNlci1wYXNzLXZ1bG5lcmFiaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZGRjYWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUZpeC1DVkUtMjAxNS04MzcwLUdydWIyLXVzZXItcGFzcy12dWxuZXJhYmlsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotQ1ZFOiBDVkUtMjAxNS04MzcwCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLQotRnJvbSA0NTFkODBlNTJkODUxNDMyZTEwOTc3MWJiOGZlYmFmY2E3YTVmMWYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGVjdG9yIE1hcmNvLUdpc2JlcnQgPGhlY21hcmdpQHVwdi5lcz4KLURhdGU6IFdlZCwgMTYgRGVjIDIwMTUgMDQ6NTc6MTggKzAwMDAKLVN1YmplY3Q6IEZpeCBzZWN1cml0eSBpc3N1ZSB3aGVuIHJlYWRpbmcgdXNlcm5hbWUgYW5kIHBhc3N3b3JkCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdHdvIGludGVnZXIgdW5kZXJmbG93cyBhdDoKLSAgKiBncnViLWNvcmUvbGliL2NyeXB0by5jCi0gICogZ3J1Yi1jb3JlL25vcm1hbC9hdXRoLmMKLQotQ1ZFLTIwMTUtODM3MAotCi1TaWduZWQtb2ZmLWJ5OiBIZWN0b3IgTWFyY28tR2lzYmVydCA8aGVjbWFyZ2lAdXB2LmVzPgotU2lnbmVkLW9mZi1ieTogSXNtYWVsIFJpcG9sbC1SaXBvbGwgPGlyaXBvbGxAZGlzY2EudXB2LmVzPgotQWxzby1CeTogQW5kcmV5IEJvcnplbmtvdiA8YXJ2aWRqYWFyQGdtYWlsLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9saWIvY3J5cHRvLmMgYi9ncnViLWNvcmUvbGliL2NyeXB0by5jCi1pbmRleCAwMTBlNTUwLi42ODNhOGFhIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYwotKysrIGIvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYwotQEAgLTQ3MCw3ICs0NzAsOCBAQCBncnViX3Bhc3N3b3JkX2dldCAoY2hhciBidWZbXSwgdW5zaWduZWQgYnVmX3NpemUpCi0gCi0gICAgICAgaWYgKGtleSA9PSAnXGInKQotIAl7Ci0tCSAgY3VyX2xlbi0tOwotKwkgIGlmIChjdXJfbGVuKQotKwkgICAgY3VyX2xlbi0tOwotIAkgIGNvbnRpbnVlOwotIAl9Ci0gCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25vcm1hbC9hdXRoLmMgYi9ncnViLWNvcmUvbm9ybWFsL2F1dGguYwotaW5kZXggYzZiZDk2ZS4uODYxNWM0OCAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9ub3JtYWwvYXV0aC5jCi0rKysgYi9ncnViLWNvcmUvbm9ybWFsL2F1dGguYwotQEAgLTE3NCw4ICsxNzQsMTEgQEAgZ3J1Yl91c2VybmFtZV9nZXQgKGNoYXIgYnVmW10sIHVuc2lnbmVkIGJ1Zl9zaXplKQotIAotICAgICAgIGlmIChrZXkgPT0gJ1xiJykKLSAJewotLQkgIGN1cl9sZW4tLTsKLS0JICBncnViX3ByaW50ZiAoIlxiIik7Ci0rCSAgaWYgKGN1cl9sZW4pCi0rCSAgICB7Ci0rCSAgICAgIGN1cl9sZW4tLTsKLSsJICAgICAgZ3J1Yl9wcmludGYgKCJcYiIpOwotKwkgICAgfQotIAkgIGNvbnRpbnVlOwotIAl9Ci0gCi0tLQotY2dpdCB2MC45LjAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLVJlbW92ZS1kaXJlY3QtX2xsc2Vlay1jb2RlLWFuZC1yZXF1aXJlLWxvbmctZmlsZXN5c3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtUmVtb3ZlLWRpcmVjdC1fbGxzZWVrLWNvZGUtYW5kLXJlcXVpcmUtbG9uZy1maWxlc3lzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVhYmNlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtUmVtb3ZlLWRpcmVjdC1fbGxzZWVrLWNvZGUtYW5kLXJlcXVpcmUtbG9uZy1maWxlc3lzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLUZyb20gM2JhYzRjYWEyYmM2NGRiMzEzYWFlZTU0ZmZmYjkwMzgzZTExODUxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBUaHUsIDIyIEphbiAyMDE1IDE5OjU0OjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBkaXJlY3QgX2xsc2VlayBjb2RlIGFuZCByZXF1aXJlIGxvbmcgZmlsZXN5c3RlbSBsaWJjLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCi0gZ3J1Yi1jb3JlL29zZGVwL3VuaXgvaG9zdGRpc2suYyB8IDI0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBncnViLTIuMDAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwotQEAgLTMwNiw2ICszMDYsMTQgQEAgaWYgdGVzdCB4JGdydWJfY3ZfYXBwbGVfY2MgPSB4eWVzIDsgdGhlbgotICAgSE9TVF9MREZMQUdTPSIkSE9TVF9MREZMQUdTIC1XbCwtYWxsb3dfc3RhY2tfZXhlY3V0ZSIKLSBmaQotIAotK2Nhc2UgIiRob3N0X29zIiBpbgotKyAgY3lnd2luIHwgd2luZG93cyogfCBtaW5ndzMyKiB8IGFyb3MqKQotKyAgICAgOzsKLSsgICopCi0rICAgICBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0rICAgICB0ZXN0IHgiJGFjX2N2X3NpemVvZl9vZmZfdCIgPSB4OCB8fCBBQ19NU0dfRVJST1IoW0xhcmdlIGZpbGUgc3VwcG9ydCBpcyByZXF1aXJlZF0pOzsKLStlc2FjCi0rCi0gaWYgdGVzdCB4JFVTRV9OTFMgPSB4bm87IHRoZW4KLSAgIEhPU1RfQ0ZMQUdTPSIkSE9TVF9DRkxBR1MgLWZuby1idWlsdGluLWdldHRleHQiCi0gZmkKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotQEAgLTQ0LDExICs0NCw2IEBACi0gI2lmZGVmIF9fbGludXhfXwotICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+ICAgICAgICAgLyogaW9jdGwgKi8KLSAjIGluY2x1ZGUgPHN5cy9tb3VudC5oPgotLSMgaWYgIWRlZmluZWQoX19HTElCQ19fKSB8fCBcCi0tICAgICAgICAoKF9fR0xJQkNfXyA8IDIpIHx8ICgoX19HTElCQ19fID09IDIpICYmIChfX0dMSUJDX01JTk9SX18gPCAxKSkpCi0tLyogTWF5YmUgbGliYyBkb2Vzbid0IGhhdmUgbGFyZ2UgZmlsZSBzdXBwb3J0LiAgKi8KLS0jICBpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4gICAgIC8qIF9sbHNlZWsgKi8KLS0jIGVuZGlmIC8qIChHTElCQyA8IDIpIHx8ICgoX19HTElCQ19fID09IDIpICYmIChfX0dMSUJDX01JTk9SIDwgMSkpICovCi0gIyBpZm5kZWYgQkxLRkxTQlVGCi0gIyAgZGVmaW5lIEJMS0ZMU0JVRiAgICAgX0lPICgweDEyLDk3KSAgIC8qIGZsdXNoIGJ1ZmZlciBjYWNoZSAqLwotICMgZW5kaWYgLyogISBCTEtGTFNCVUYgKi8KLUBAIC03NjEsMjUgKzc1Niw2IEBAIGxpbnV4X2ZpbmRfcGFydGl0aW9uIChjaGFyICpkZXYsIGdydWJfZGkKLSB9Ci0gI2VuZGlmIC8qIF9fbGludXhfXyAqLwotIAotLSNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgKCFkZWZpbmVkKF9fR0xJQkNfXykgfHwgXAotLSAgICAgICAgKChfX0dMSUJDX18gPCAyKSB8fCAoKF9fR0xJQkNfXyA9PSAyKSAmJiAoX19HTElCQ19NSU5PUl9fIDwgMSkpKSkKLS0gIC8qIE1heWJlIGxpYmMgZG9lc24ndCBoYXZlIGxhcmdlIGZpbGUgc3VwcG9ydC4gICovCi0tZ3J1Yl9lcnJfdAotLWdydWJfdXRpbF9mZF9zZWVrIChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGdydWJfdWludDY0X3Qgb2ZmKQotLXsKLS0gIGxvZmZfdCBvZmZzZXQsIHJlc3VsdDsKLS0gIHN0YXRpYyBpbnQgX2xsc2VlayAodWludCBmaWxlZGVzLCB1bG9uZyBoaSwgdWxvbmcgbG8sCi0tCQkgICAgICBsb2ZmX3QgKnJlcywgdWludCB3aCk7Ci0tICBfc3lzY2FsbDUgKGludCwgX2xsc2VlaywgdWludCwgZmlsZWRlcywgdWxvbmcsIGhpLCB1bG9uZywgbG8sCi0tCSAgICAgbG9mZl90ICosIHJlcywgdWludCwgd2gpOwotLQotLSAgb2Zmc2V0ID0gKGxvZmZfdCkgb2ZmOwotLSAgaWYgKF9sbHNlZWsgKGZkLCBvZmZzZXQgPj4gMzIsIG9mZnNldCAmIDB4ZmZmZmZmZmYsICZyZXN1bHQsIFNFRUtfU0VUKSkKLS0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9ERVZJQ0UsIE5fKCJjYW5ub3Qgc2VlayBgJXMnOiAlcyIpLAotLQkJICAgICAgIG5hbWUsIHN0cmVycm9yIChlcnJubykpOwotLSAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Ci0tfQotLSNlbHNlCi0gZ3J1Yl9lcnJfdAotIGdydWJfdXRpbF9mZF9zZWVrIChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGdydWJfdWludDY0X3Qgb2ZmKQotIHsKLUBAIC03OTAsNyArNzY2LDYgQEAgZ3J1Yl91dGlsX2ZkX3NlZWsgKGludCBmZCwgY29uc3QgY2hhciAqbgotIAkJICAgICAgIG5hbWUsIHN0cmVycm9yIChlcnJubykpOwotICAgcmV0dXJuIDA7Ci0gfQotLSNlbmRpZgotIAotIHN0YXRpYyB2b2lkCi0gZmx1c2hfaW5pdGlhbF9idWZmZXIgKGNvbnN0IGNoYXIgKm9zX2RldiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnRyZnMtYXZvaWQtdXNlZC11bmluaXRpYWxpemVkLWVycm9yLXdpdGgtR0NDNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idHJmcy1hdm9pZC11c2VkLXVuaW5pdGlhbGl6ZWQtZXJyb3Itd2l0aC1HQ0M3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTdhNzc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idHJmcy1hdm9pZC11c2VkLXVuaW5pdGlhbGl6ZWQtZXJyb3Itd2l0aC1HQ0M3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA2Y2VmN2Y2MDc5NTUwYWYzYmY5MWRiZmY4MjQzOThlYWVmMDhjM2M1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVpIEJvcnplbmtvdiA8YXJ2aWRqYWFyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxOToyMjozMiArMDMwMAotU3ViamVjdDogW1BBVENIIDEvNF0gYnRyZnM6IGF2b2lkICJ1c2VkIHVuaW5pdGlhbGl6ZWQiIGVycm9yIHdpdGggR0NDNwotCi1zYmxvY2sgd2FzIGxvY2FsIGFuZCBzbyBjb25zaWRlcmVkIG5ldyB2YXJpYWJsZSBvbiBldmVyeSBsb29wCi1pdGVyYXRpb24uCi0KLUNsb3NlczogNTA1OTcKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdydWItY29yZS9mcy9idHJmcy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgYi9ncnViLWNvcmUvZnMvYnRyZnMuYwotaW5kZXggOWNmZmE5MS4uNDg0OWMxYyAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9mcy9idHJmcy5jCi0rKysgYi9ncnViLWNvcmUvZnMvYnRyZnMuYwotQEAgLTIyNywxMSArMjI3LDExIEBAIGdydWJfYnRyZnNfcmVhZF9sb2dpY2FsIChzdHJ1Y3QgZ3J1Yl9idHJmc19kYXRhICpkYXRhLAotIHN0YXRpYyBncnViX2Vycl90Ci0gcmVhZF9zYmxvY2sgKGdydWJfZGlza190IGRpc2ssIHN0cnVjdCBncnViX2J0cmZzX3N1cGVyYmxvY2sgKnNiKQotIHsKLSsgIHN0cnVjdCBncnViX2J0cmZzX3N1cGVyYmxvY2sgc2Jsb2NrOwotICAgdW5zaWduZWQgaTsKLSAgIGdydWJfZXJyX3QgZXJyID0gR1JVQl9FUlJfTk9ORTsKLSAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChzdXBlcmJsb2NrX3NlY3RvcnMpOyBpKyspCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgZ3J1Yl9idHJmc19zdXBlcmJsb2NrIHNibG9jazsKLSAgICAgICAvKiBEb24ndCB0cnkgYWRkaXRpb25hbCBzdXBlcmJsb2NrcyBiZXlvbmQgZGV2aWNlIHNpemUuICAqLwotICAgICAgIGlmIChpICYmIChncnViX2xlX3RvX2NwdTY0IChzYmxvY2sudGhpc19kZXZpY2Uuc2l6ZSkKLSAJCT4+IEdSVUJfRElTS19TRUNUT1JfQklUUykgPD0gc3VwZXJibG9ja19zZWN0b3JzW2ldKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnVpbGQtVXNlLUFDX0hFQURFUl9NQUpPUi10by1maW5kLWRldmljZS1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnVpbGQtVXNlLUFDX0hFQURFUl9NQUpPUi10by1maW5kLWRldmljZS1tYWNyb3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NWI5ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ1aWxkLVVzZS1BQ19IRUFERVJfTUFKT1ItdG8tZmluZC1kZXZpY2UtbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotRnJvbSA3YTViMzAxZTNhZGI4ZTA1NDI4ODUxOGEzMjUxMzVhMTg4M2MxYzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBHaWxiZXJ0IDxmbG9wcHltQGdlbnRvby5vcmc+Ci1EYXRlOiBUdWUsIDE5IEFwciAyMDE2IDE0OjI3OjIyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBVc2UgQUNfSEVBREVSX01BSk9SIHRvIGZpbmQgZGV2aWNlIG1hY3JvcwotCi1EZXBlbmRpbmcgb24gdGhlIE9TL2xpYmMsIGRldmljZSBtYWNyb3MgYXJlIGRlZmluZWQgaW4gZGlmZmVyZW50Ci1oZWFkZXJzLiBUaGlzIGNoYW5nZSBlbnN1cmVzIHdlIGluY2x1ZGUgdGhlIHJpZ2h0IG9uZS4KLQotc3lzL3R5cGVzLmggLSBCU0QKLXN5cy9ta2Rldi5oIC0gU3VuCi1zeXMvc3lzbWFjcm9zLmggLSBnbGliYyAoTGludXgpCi0KLWdsaWJjIGN1cnJlbnRseSBwdWxscyBzeXMvc3lzbWFjcm9zLmggaW50byBzeXMvdHlwZXMuaCwgYnV0IHRoaXMgbWF5Ci1jaGFuZ2UgaW4gYSBmdXR1cmUgcmVsZWFzZS4KLQotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTUtMTEvbXNnMDAyNTMuaHRtbAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAzICsrLQotIGdydWItY29yZS9vc2RlcC9kZXZtYXBwZXIvZ2V0cm9vdC5jICB8IDYgKysrKysrCi0gZ3J1Yi1jb3JlL29zZGVwL2Rldm1hcHBlci9ob3N0ZGlzay5jIHwgNSArKysrKwotIGdydWItY29yZS9vc2RlcC9saW51eC9nZXRyb290LmMgICAgICB8IDYgKysrKysrCi0gZ3J1Yi1jb3JlL29zZGVwL3VuaXgvZ2V0cm9vdC5jICAgICAgIHwgNCArKystCi0gNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdydWItMi4wMC9jb25maWd1cmUuYWMKLUBAIC0zMjYsNyArMzI2LDggQEAgZmkKLSAKLSAjIENoZWNrIGZvciBmdW5jdGlvbnMgYW5kIGhlYWRlcnMuCi0gQUNfQ0hFQ0tfRlVOQ1MocG9zaXhfbWVtYWxpZ24gbWVtYWxpZ24gYXNwcmludGYgdmFzcHJpbnRmIGdldGV4dG1udGVudCkKLS1BQ19DSEVDS19IRUFERVJTKHN5cy9wYXJhbS5oIHN5cy9tb3VudC5oIHN5cy9tbnR0YWIuaCBzeXMvbWtkZXYuaCBsaW1pdHMuaCkKLStBQ19DSEVDS19IRUFERVJTKHN5cy9wYXJhbS5oIHN5cy9tb3VudC5oIHN5cy9tbnR0YWIuaCBsaW1pdHMuaCkKLStBQ19IRUFERVJfTUFKT1IKLSAKLSBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdGZzLmZfZnN0eXBlbmFtZV0sLCxbJGFjX2luY2x1ZGVzX2RlZmF1bHQKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLUBAIC00MSw2ICs0MSwxMiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSsjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKLSsjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgZGVmaW5lZChNQUpPUl9JTl9TWVNNQUNST1MpCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19saW51eF9fCi0gIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4gICAgICAgICAvKiBpb2N0bCAqLwotICMgaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci1JbmRleDogZ3J1Yi0yLjAwL3V0aWwvZ2V0cm9vdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvdXRpbC9nZXRyb290LmMKLSsrKyBncnViLTIuMDAvdXRpbC9nZXRyb290LmMKLUBAIC0zNSw2ICszNSwxMyBAQAotICNpZmRlZiBIQVZFX0xJTUlUU19ICi0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNlbmRpZgotKwotKyNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQotKyNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSsjZWxpZiBkZWZpbmVkKE1BSk9SX0lOX1NZU01BQ1JPUykKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotKwotICNpbmNsdWRlIDxncnViL3V0aWwvbWlzYy5oPgotICNpbmNsdWRlIDxncnViL3V0aWwvbHZtLmg+Ci0gI2luY2x1ZGUgPGdydWIvY3J5cHRvZGlzay5oPgotSW5kZXg6IGdydWItMi4wMC91dGlsL3JhaWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL3V0aWwvcmFpZC5jCi0rKysgZ3J1Yi0yLjAwL3V0aWwvcmFpZC5jCi1AQCAtMjksNiArMjksMTIgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0rI2lmIGRlZmluZWQoTUFKT1JfSU5fTUtERVYpCi0rI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbGlmIGRlZmluZWQoTUFKT1JfSU5fU1lTTUFDUk9TKQotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3JhaWQvbWRfcC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjMjM2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gZjMwYzY5MmMxZjllZjBlOTNiZWUyYjQwOGEyNGJhYTAxN2YxY2E5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZsYWRpbWlyIFNlcmJpbmVua28gPHBoY29kZXJAZ21haWwuY29tPgotRGF0ZTogVGh1LCA3IE5vdiAyMDEzIDAxOjAxOjQ3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIAkqIGdydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYyAobWFpbl9jb250ZXh0KSwKLSAoc2Vjb25kYXJ5X2NvbnRleHQpOiAJRGVmaW5lIGFmdGVyIGRlZmluaW5nIHR5cGUgYW5kIG5vdCBiZWZvcmUuCi0KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKLSBncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYyBiL2dydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYwotaW5kZXggZGY3MzU3MC4uNDg4MGNlZiAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYwotKysrIGIvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jCi1AQCAtMzQsOCArMzQsNiBAQCBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7Ci0gICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mL21hbnVhbC9nZXR0ZXh0L01PLUZpbGVzLmh0bWwgLgotICovCi0gCi0tc3RhdGljIHN0cnVjdCBncnViX2dldHRleHRfY29udGV4dCBtYWluX2NvbnRleHQsIHNlY29uZGFyeV9jb250ZXh0OwotLQotIHN0YXRpYyBjb25zdCBjaGFyICooKmdydWJfZ2V0dGV4dF9vcmlnaW5hbCkgKGNvbnN0IGNoYXIgKnMpOwotIAotIHN0cnVjdCBncnViX2dldHRleHRfbXNnCi1AQCAtNjksNiArNjcsOCBAQCBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X2NvbnRleHQKLSAgIHN0cnVjdCBncnViX2dldHRleHRfbXNnICpncnViX2dldHRleHRfbXNnX2xpc3Q7Ci0gfTsKLSAKLStzdGF0aWMgc3RydWN0IGdydWJfZ2V0dGV4dF9jb250ZXh0IG1haW5fY29udGV4dCwgc2Vjb25kYXJ5X2NvbnRleHQ7Ci0rCi0gI2RlZmluZSBNT19NQUdJQ19OVU1CRVIgCQkweDk1MDQxMmRlCi0gCi0gc3RhdGljIGdydWJfZXJyX3QKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmMDhlMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gYjI1ODc2MWQxMTk0NmIyOGE4NDdkZmYwNzY4YzNmMjcxZTEzZDYwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotRGF0ZTogVGh1LCA4IERlYyAyMDE2IDE4OjIxOjEyICswNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSAqIGdydWItY29yZS9rZXJuL2VmaS9tbS5jCi0gKGdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2VzKTogIFRyeSB0ZXJtaW5hdGluZyBFRkkgc2VydmljZXMgc2V2ZXJhbCB0aW1lcwotIGR1ZSB0byBxdWlya3MgaW4gc29tZSAgaW1wbGVtZW50YXRpb25zLgotCi1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0IFsgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5naXQvcGF0Y2gvP2lkPWU3NWZkZWU0MjBhN2FkOTVlOWE0NjVjOTY5OWFkYzJlMmU5NzA0NDAgXQotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLS0tLQotIGdydWItY29yZS9rZXJuL2VmaS9tbS5jIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLWluZGV4IDQ2MWRlYjAuLmIwMGUwYmMgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLUBAIC0xNjcsMjcgKzE2Nyw0MSBAQCBncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlcyAoZ3J1Yl9lZmlfdWludG5fdCAqb3V0YnVmX3NpemUsIHZvaWQgKm91dGJ1ZiwKLSAJCQkgICBhcHBsZSwgc2l6ZW9mIChhcHBsZSkpID09IDApOwotICNlbmRpZgotIAotLSAgaWYgKGdydWJfZWZpX2dldF9tZW1vcnlfbWFwICgmZmluaXNoX21tYXBfc2l6ZSwgZmluaXNoX21tYXBfYnVmLCAmZmluaXNoX2tleSwKLS0JCQkgICAgICAgJmZpbmlzaF9kZXNjX3NpemUsICZmaW5pc2hfZGVzY192ZXJzaW9uKSA8IDApCi0tICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHJldHJpZXZlIG1lbW9yeSBtYXAiKTsKLSsgIHdoaWxlICgxKQotKyAgICB7Ci0rICAgICAgaWYgKGdydWJfZWZpX2dldF9tZW1vcnlfbWFwICgmZmluaXNoX21tYXBfc2l6ZSwgZmluaXNoX21tYXBfYnVmLCAmZmluaXNoX2tleSwKLSsJCQkJICAgJmZpbmlzaF9kZXNjX3NpemUsICZmaW5pc2hfZGVzY192ZXJzaW9uKSA8IDApCi0rCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHJldHJpZXZlIG1lbW9yeSBtYXAiKTsKLSAKLS0gIGlmIChvdXRidWYgJiYgKm91dGJ1Zl9zaXplIDwgZmluaXNoX21tYXBfc2l6ZSkKLS0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAibWVtb3J5IG1hcCBidWZmZXIgaXMgdG9vIHNtYWxsIik7Ci0rICAgICAgaWYgKG91dGJ1ZiAmJiAqb3V0YnVmX3NpemUgPCBmaW5pc2hfbW1hcF9zaXplKQotKwlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJtZW1vcnkgbWFwIGJ1ZmZlciBpcyB0b28gc21hbGwiKTsKLSAKLS0gIGZpbmlzaF9tbWFwX2J1ZiA9IGdydWJfbWFsbG9jIChmaW5pc2hfbW1hcF9zaXplKTsKLS0gIGlmICghZmluaXNoX21tYXBfYnVmKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJubzsKLSsgICAgICBmaW5pc2hfbW1hcF9idWYgPSBncnViX21hbGxvYyAoZmluaXNoX21tYXBfc2l6ZSk7Ci0rICAgICAgaWYgKCFmaW5pc2hfbW1hcF9idWYpCi0rCXJldHVybiBncnViX2Vycm5vOwotIAotLSAgaWYgKGdydWJfZWZpX2dldF9tZW1vcnlfbWFwICgmZmluaXNoX21tYXBfc2l6ZSwgZmluaXNoX21tYXBfYnVmLCAmZmluaXNoX2tleSwKLS0JCQkgICAgICAgJmZpbmlzaF9kZXNjX3NpemUsICZmaW5pc2hfZGVzY192ZXJzaW9uKSA8PSAwKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCByZXRyaWV2ZSBtZW1vcnkgbWFwIik7Ci0rICAgICAgaWYgKGdydWJfZWZpX2dldF9tZW1vcnlfbWFwICgmZmluaXNoX21tYXBfc2l6ZSwgZmluaXNoX21tYXBfYnVmLCAmZmluaXNoX2tleSwKLSsJCQkJICAgJmZpbmlzaF9kZXNjX3NpemUsICZmaW5pc2hfZGVzY192ZXJzaW9uKSA8PSAwKQotKwl7Ci0rCSAgZ3J1Yl9mcmVlIChmaW5pc2hfbW1hcF9idWYpOwotKwkgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHJldHJpZXZlIG1lbW9yeSBtYXAiKTsKLSsJfQotIAotLSAgYiA9IGdydWJfZWZpX3N5c3RlbV90YWJsZS0+Ym9vdF9zZXJ2aWNlczsKLS0gIHN0YXR1cyA9IGVmaV9jYWxsXzIgKGItPmV4aXRfYm9vdF9zZXJ2aWNlcywgZ3J1Yl9lZmlfaW1hZ2VfaGFuZGxlLAotLQkJICAgICAgIGZpbmlzaF9rZXkpOwotLSAgaWYgKHN0YXR1cyAhPSBHUlVCX0VGSV9TVUNDRVNTKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCB0ZXJtaW5hdGUgRUZJIHNlcnZpY2VzIik7Ci0rICAgICAgYiA9IGdydWJfZWZpX3N5c3RlbV90YWJsZS0+Ym9vdF9zZXJ2aWNlczsKLSsgICAgICBzdGF0dXMgPSBlZmlfY2FsbF8yIChiLT5leGl0X2Jvb3Rfc2VydmljZXMsIGdydWJfZWZpX2ltYWdlX2hhbmRsZSwKLSsJCQkgICBmaW5pc2hfa2V5KTsKLSsgICAgICBpZiAoc3RhdHVzID09IEdSVUJfRUZJX1NVQ0NFU1MpCi0rCWJyZWFrOwotIAotKyAgICAgIGlmIChzdGF0dXMgIT0gR1JVQl9FRklfSU5WQUxJRF9QQVJBTUVURVIpCi0rCXsKLSsJICBncnViX2ZyZWUgKGZpbmlzaF9tbWFwX2J1Zik7Ci0rCSAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgdGVybWluYXRlIEVGSSBzZXJ2aWNlcyIpOwotKwl9Ci0rCi0rICAgICAgZ3J1Yl9mcmVlIChmaW5pc2hfbW1hcF9idWYpOwotKyAgICAgIGdydWJfcHJpbnRmICgiVHJ5aW5nIHRvIHRlcm1pbmF0ZSBFRkkgc2VydmljZXMgYWdhaW5cbiIpOwotKyAgICB9Ci0gICBncnViX2VmaV9pc19maW5pc2hlZCA9IDE7Ci0gICBpZiAob3V0YnVmX3NpemUpCi0gICAgICpvdXRidWZfc2l6ZSA9IGZpbmlzaF9tbWFwX3NpemU7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZ2l0LzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtcGFyc2VfZGhjcF92ZW5kb3ItQWRkLW1pc3NpbmctY29uc3QtcXVhbGlmaWVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1wYXJzZV9kaGNwX3ZlbmRvci1BZGQtbWlzc2luZy1jb25zdC1xdWFsaWZpZXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTVlM2ViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1wYXJzZV9kaGNwX3ZlbmRvci1BZGQtbWlzc2luZy1jb25zdC1xdWFsaWZpZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1PcmlnaW5hbCBjb21taXQ6IGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2dydWIuZ2l0L2NvbW1pdC9ncnViLWNvcmUvbmV0L2Jvb3RwLmM/aWQ9ZjA2YzIxNzJjMGIzMjA1MmYyMmUzNzUyMzQ0NWNmOGU3YWZmYWVhMwotCi1Gcm9tIDE0OWQyYTE0ZjQ3MjM3NzhjZWQyM2Y0Mzk0ODcyMDFjY2JmMWEyYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyMyBBcHIgMjAxNSAwNzowMzozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBwYXJzZV9kaGNwX3ZlbmRvcjogQWRkIG1pc3NpbmcgY29uc3QgcXVhbGlmaWVycy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdydWItY29yZS9uZXQvYm9vdHAuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbmV0L2Jvb3RwLmMgYi9ncnViLWNvcmUvbmV0L2Jvb3RwLmMKLWluZGV4IGJjMDdkNTMuLjQ0MTMxZWQgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvbmV0L2Jvb3RwLmMKLSsrKyBiL2dydWItY29yZS9uZXQvYm9vdHAuYwotQEAgLTUyLDkgKzUyLDkgQEAgc2V0X2Vudl9saW1uX3JvIChjb25zdCBjaGFyICppbnRlcm5hbWUsIGNvbnN0IGNoYXIgKnN1ZmZpeCwKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1wYXJzZV9kaGNwX3ZlbmRvciAoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqdmVuZCwgaW50IGxpbWl0LCBpbnQgKm1hc2spCi0rcGFyc2VfZGhjcF92ZW5kb3IgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKnZlbmQsIGludCBsaW1pdCwgaW50ICptYXNrKQotIHsKLS0gIGdydWJfdWludDhfdCAqcHRyLCAqcHRyMDsKLSsgIGNvbnN0IGdydWJfdWludDhfdCAqcHRyLCAqcHRyMDsKLSAKLSAgIHB0ciA9IHB0cjAgPSB2ZW5kOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAtTmV2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9nZXRfbWVtb3J5X21hcC1OZXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTczNWZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9nZXRfbWVtb3J5X21hcC1OZXZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA2MzBkZTQ1ZjNkNWY5YTJkZGE3ZmFkOTlhY2QyMTQ0OWI4YzQxMTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci1EYXRlOiBUaHUsIDggRGVjIDIwMTYgMTg6Mjc6MDEgKzA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdICogZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgKGdydWJfZWZpX2dldF9tZW1vcnlfbWFwKToKLSBOZXZlciAgcmV0dXJuIGEgZGVzY3JpcHRvcl9zaXplPT0wIHRvIGF2b2lkIHBvdGVudGlhbCBkaXZpc2lvbnMgYnkgemVyby4KLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2dydWIuZ2l0L2NvbW1pdC8/aWQ9NjlhZWU0M2ZhNjQ2MDFjYWJmNmVmYTkyNzljMTBkNjliNDY2NjYyZSBdCi0KLVNpZ25lZC1vZmYtYnk6IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotLS0tCi0gZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotaW5kZXggYjAwZTBiYy4uOWYxZDE5NCAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi0rKysgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotQEAgLTIzNSw2ICsyMzUsNyBAQCBncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoZ3J1Yl9lZmlfdWludG5fdCAqbWVtb3J5X21hcF9zaXplLAotICAgZ3J1Yl9lZmlfYm9vdF9zZXJ2aWNlc190ICpiOwotICAgZ3J1Yl9lZmlfdWludG5fdCBrZXk7Ci0gICBncnViX2VmaV91aW50MzJfdCB2ZXJzaW9uOwotKyAgZ3J1Yl9lZmlfdWludG5fdCBzaXplOwotIAotICAgaWYgKGdydWJfZWZpX2lzX2ZpbmlzaGVkKQotICAgICB7Ci1AQCAtMjY0LDEwICsyNjUsMTQgQEAgZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKGdydWJfZWZpX3VpbnRuX3QgKm1lbW9yeV9tYXBfc2l6ZSwKLSAgICAgbWFwX2tleSA9ICZrZXk7Ci0gICBpZiAoISBkZXNjcmlwdG9yX3ZlcnNpb24pCi0gICAgIGRlc2NyaXB0b3JfdmVyc2lvbiA9ICZ2ZXJzaW9uOwotKyAgaWYgKCEgZGVzY3JpcHRvcl9zaXplKQotKyAgICBkZXNjcmlwdG9yX3NpemUgPSAmc2l6ZTsKLSAKLSAgIGIgPSBncnViX2VmaV9zeXN0ZW1fdGFibGUtPmJvb3Rfc2VydmljZXM7Ci0gICBzdGF0dXMgPSBlZmlfY2FsbF81IChiLT5nZXRfbWVtb3J5X21hcCwgbWVtb3J5X21hcF9zaXplLCBtZW1vcnlfbWFwLCBtYXBfa2V5LAotIAkJCSAgICAgIGRlc2NyaXB0b3Jfc2l6ZSwgZGVzY3JpcHRvcl92ZXJzaW9uKTsKLSsgIGlmICgqZGVzY3JpcHRvcl9zaXplID09IDApCi0rICAgICpkZXNjcmlwdG9yX3NpemUgPSBzaXplb2YgKGdydWJfZWZpX21lbW9yeV9kZXNjcmlwdG9yX3QpOwotICAgaWYgKHN0YXR1cyA9PSBHUlVCX0VGSV9TVUNDRVNTKQotICAgICByZXR1cm4gMTsKLSAgIGVsc2UgaWYgKHN0YXR1cyA9PSBHUlVCX0VGSV9CVUZGRVJfVE9PX1NNQUxMKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItaTM4Ni14ODZfNjQtcHBjLWZpeC1zd2l0Y2gtZmFsbHRocm91Z2gtY2FzZXMtd2l0aC1HQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1pMzg2LXg4Nl82NC1wcGMtZml4LXN3aXRjaC1mYWxsdGhyb3VnaC1jYXNlcy13aXRoLUdDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGYwNDhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1pMzg2LXg4Nl82NC1wcGMtZml4LXN3aXRjaC1mYWxsdGhyb3VnaC1jYXNlcy13aXRoLUdDLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4ICswLDAgQEAKLUZyb20gNGJkNGE4ODcyNTYwNDQ3MWZkYmQ4NjMxNmM5MTk2N2E3ZjRkYmE1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlaSBCb3J6ZW5rb3YgPGFydmlkamFhckBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTk6MjM6NTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIGkzODYsIHg4Nl82NCwgcHBjOiBmaXggc3dpdGNoIGZhbGx0aHJvdWdoIGNhc2VzIHdpdGggR0NDNwotCi1JbiB1dGlsL2dldHJvb3QgYW5kIGVmaWRpc2sgc2xpZ2h0bHkgbW9kaWZ5IGV4aXRzaW5nIGNvbW1lbnQgdG8gbW9zdGx5Ci1yZXRhaW4gaXQgYnV0IHN0aWxsIG1ha2UgR0NDNyBjb21wbGlhbnQgd2l0aCByZXNwZWN0IHRvIGZhbGwgdGhyb3VnaAotYW5ub3RhdGlvbi4KLQotSW4gZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19sem1hMi5jIGl0IGFkZHMgc2FtZSBjb21tZW50cyBhcwotdXBzdHJlYW0uCi0KLUluIGdydWItY29yZS90ZXN0cy9zZXRqbXBfdGV0cy5jIGRlY2xhcmUgZnVuY3Rpb25zIGFzICJub3JldHVybiIgdG8KLXN1cHByZXNzIEdDQzcgd2FybmluZy4KLQotSW4gZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMgdXNlIG5ldyBfX2F0dHJpYnV0ZV9fLCBiZWNhdXNlIGV4aXN0aW5nCi1hbm5vdGF0aW9uIGlzIG5vdCByZWNvZ25pemVkIGJ5IEdDQzcgcGFyc2VyICh3aGljaCByZXF1aXJlcyB0aGF0IGNvbW1lbnQKLWltbWVkaWF0ZWx5IHByZWNlZGVzIGNhc2Ugc3RhdGVtZW50KS4KLQotT3RoZXJ3aXNlIGFkZCBGQUxMVEhST1VHSCBjb21tZW50LgotCi1DbG9zZXM6IDUwNTk4Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBncnViLWNvcmUvY29tbWFuZHMvaGRwYXJtLmMgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2NvbW1hbmRzL25hdGl2ZWRpc2suYyAgICAgICB8IDEgKwotIGdydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYyAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvZGlzay9lZmkvZWZpZGlzay5jICAgICAgICAgIHwgMiArLQotIGdydWItY29yZS9lZmllbXUvbW0uYyAgICAgICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvZ2RiL2NzdHViLmMgICAgICAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMgICAgICAgICAgICB8IDMgKysrCi0gZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19sem1hMi5jICB8IDQgKysrKwotIGdydWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMgfCA2ICsrKysrKwotIGdydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jICAgICAgICAgfCAzICsrKwotIGdydWItY29yZS90ZXN0cy9zZXRqbXBfdGVzdC5jICAgICAgICAgfCA1ICsrKystCi0gZ3J1Yi1jb3JlL3ZpZGVvL2llZWUxMjc1LmMgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS92aWRlby9yZWFkZXJzL2pwZWcuYyAgICAgICAgfCAxICsKLSB1dGlsL2dldHJvb3QuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHV0aWwvZ3J1Yi1pbnN0YWxsLmMgICAgICAgICAgICAgICAgICAgfCAxICsKLSB1dGlsL2dydWItbWtpbWFnZXh4LmMgICAgICAgICAgICAgICAgIHwgMSArCi0gdXRpbC9ncnViLW1vdW50LmMgICAgICAgICAgICAgICAgICAgICB8IDEgKwotIDE3IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2NvbW1hbmRzL2hkcGFybS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2NvbW1hbmRzL2hkcGFybS5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9jb21tYW5kcy9oZHBhcm0uYwotQEAgLTMyOCw2ICszMjgsNyBAQCBncnViX2NtZF9oZHBhcm0gKGdydWJfZXh0Y21kX2NvbnRleHRfdCBjCi0gCSAgYXRhID0gKChzdHJ1Y3QgZ3J1Yl9zY3NpICopIGRpc2stPmRhdGEpLT5kYXRhOwotIAkgIGJyZWFrOwotIAl9Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJub3QgYW4gQVRBIGRldmljZSIpOwotICAgICB9Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9jcnlwdG9kaXNrLmMKLUBAIC0yNjgsNiArMjY4LDcgQEAgZ3J1Yl9jcnlwdG9kaXNrX2VuZGVjcnlwdCAoc3RydWN0IGdydWJfYwotIAkgIGJyZWFrOwotIAljYXNlIEdSVUJfQ1JZUFRPRElTS19NT0RFX0lWX1BMQUlONjQ6Ci0gCSAgaXZbMV0gPSBncnViX2NwdV90b19sZTMyIChzZWN0b3IgPj4gMzIpOwotKwkgIC8qIEZBTExUSFJPVUdIICovCi0gCWNhc2UgR1JVQl9DUllQVE9ESVNLX01PREVfSVZfUExBSU46Ci0gCSAgaXZbMF0gPSBncnViX2NwdV90b19sZTMyIChzZWN0b3IgJiAweEZGRkZGRkZGKTsKLSAJICBicmVhazsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svZWZpL2VmaWRpc2suYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9kaXNrL2VmaS9lZmlkaXNrLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svZWZpL2VmaWRpc2suYwotQEAgLTI2Miw3ICsyNjIsNyBAQCBuYW1lX2RldmljZXMgKHN0cnVjdCBncnViX2VmaWRpc2tfZGF0YSAqCi0gCSAgICB7Ci0gCSAgICBjYXNlIEdSVUJfRUZJX0hBUkRfRFJJVkVfREVWSUNFX1BBVEhfU1VCVFlQRToKLSAJICAgICAgaXNfaGFyZF9kcml2ZSA9IDE7Ci0tCSAgICAgIC8qIEZhbGwgdGhyb3VnaCBieSBpbnRlbnRpb24uICAqLwotKwkgICAgICAvKiBJbnRlbnRpb25hbGx5IGZhbGwgdGhyb3VnaC4gICovCi0gCSAgICBjYXNlIEdSVUJfRUZJX0NEUk9NX0RFVklDRV9QQVRIX1NVQlRZUEU6Ci0gCSAgICAgIHsKLSAJCXN0cnVjdCBncnViX2VmaWRpc2tfZGF0YSAqcGFyZW50LCAqcGFyZW50MjsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2VmaWVtdS9tbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2VmaWVtdS9tbS5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9lZmllbXUvbW0uYwotQEAgLTQxMCw2ICs0MTAsNyBAQCBncnViX2VmaWVtdV9tbWFwX2ZpbGwgKHZvaWQpCi0gCWRlZmF1bHQ6Ci0gCSAgZ3J1Yl9kcHJpbnRmICgiZWZpZW11IiwKLSAJCQkiVW5rbm93biBtZW1vcnkgdHlwZSAlZC4gQXNzdW1pbmcgdW51c2FibGVcbiIsIHR5cGUpOwotKwkvKiBGQUxMVEhST1VHSCAqLwotIAljYXNlIEdSVUJfTUVNT1JZX1JFU0VSVkVEOgotIAkgIHJldHVybiBncnViX2VmaWVtdV9hZGRfdG9fbW1hcCAoYWRkciwgc2l6ZSwKLSAJCQkJCSAgR1JVQl9FRklfVU5VU0FCTEVfTUVNT1JZKTsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2dkYi9jc3R1Yi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2dkYi9jc3R1Yi5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9nZGIvY3N0dWIuYwotQEAgLTMzNiw2ICszMzYsNyBAQCBncnViX2dkYl90cmFwIChpbnQgdHJhcF9ubykKLSAJLyogc0FBLi5BQTogU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZnJvbSBBQS4uQUEob3B0aW9uYWwpLiAgKi8KLSAJY2FzZSAncyc6Ci0gCSAgc3RlcHBpbmcgPSAxOwotKwkgIC8qIEZBTExUSFJPVUdIICovCi0gCi0gCS8qIGNBQS4uQUE6IENvbnRpbnVlIGF0IGFkZHJlc3MgQUEuLkFBKG9wdGlvbmFsKS4gICovCi0gCWNhc2UgJ2MnOgotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi1AQCAtNDEwNCw2ICs0MTA0LDkgQEAgY2hlY2tfbm9kZV9hY2NlcHQgKGNvbnN0IHJlX21hdGNoX2NvbnRleAotICAgICBjYXNlIE9QX1VURjhfUEVSSU9EOgotICAgICAgIGlmIChjaCA+PSBBU0NJSV9DSEFSUykKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSsjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dOVUNfXyA+PSA3Ci0rICAgICAgX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSk7Ci0rI2VuZGlmCi0gICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAjZW5kaWYKLSAgICAgY2FzZSBPUF9QRVJJT0Q6Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfbHptYTIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfbHptYTIuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX2x6bWEyLmMKLUBAIC0xMDQyLDYgKzEwNDIsOCBAQCBlbnVtIHh6X3JldCB4el9kZWNfbHptYTJfcnVuKAotIAotIAkJCXMtPmx6bWEyLnNlcXVlbmNlID0gU0VRX0xaTUFfUFJFUEFSRTsKLSAKLSsJCS8qIEZhbGwgdGhyb3VnaCAqLwotKwotIAkJY2FzZSBTRVFfTFpNQV9QUkVQQVJFOgotIAkJCWlmIChzLT5sem1hMi5jb21wcmVzc2VkIDwgUkNfSU5JVF9CWVRFUykKLSAJCQkJcmV0dXJuIFhaX0RBVEFfRVJST1I7Ci1AQCAtMTA1Miw2ICsxMDU0LDggQEAgZW51bSB4el9yZXQgeHpfZGVjX2x6bWEyX3J1bigKLSAJCQlzLT5sem1hMi5jb21wcmVzc2VkIC09IFJDX0lOSVRfQllURVM7Ci0gCQkJcy0+bHptYTIuc2VxdWVuY2UgPSBTRVFfTFpNQV9SVU47Ci0gCi0rCQkvKiBGYWxsIHRocm91Z2ggKi8KLSsKLSAJCWNhc2UgU0VRX0xaTUFfUlVOOgotIAkJCS8qCi0gCQkJICogU2V0IGRpY3Rpb25hcnkgbGltaXQgdG8gaW5kaWNhdGUgaG93IG11Y2ggd2Ugd2FudAotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX3N0cmVhbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX3N0cmVhbS5jCi1AQCAtNzQ5LDYgKzc0OSw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9CTE9DS19TVEFSVDsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfQkxPQ0tfU1RBUlQ6Ci0gCQkJLyogV2UgbmVlZCBvbmUgYnl0ZSBvZiBpbnB1dCB0byBjb250aW51ZS4gKi8KLSAJCQlpZiAoYi0+aW5fcG9zID09IGItPmluX3NpemUpCi1AQCAtNzcyLDYgKzc3Myw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAJCQlzLT50ZW1wLnBvcyA9IDA7Ci0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfQkxPQ0tfSEVBREVSOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9CTE9DS19IRUFERVI6Ci0gCQkJaWYgKCFmaWxsX3RlbXAocywgYikpCi0gCQkJCXJldHVybiBYWl9PSzsKLUBAIC03ODIsNiArNzg0LDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAotIAkJCXMtPnNlcXVlbmNlID0gU0VRX0JMT0NLX1VOQ09NUFJFU1M7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX0JMT0NLX1VOQ09NUFJFU1M6Ci0gCQkJcmV0ID0gZGVjX2Jsb2NrKHMsIGIpOwotIAkJCWlmIChyZXQgIT0gWFpfU1RSRUFNX0VORCkKLUBAIC04MDksNiArODEyLDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAotIAkJCXMtPnNlcXVlbmNlID0gU0VRX0JMT0NLX0NIRUNLOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9CTE9DS19DSEVDSzoKLSAJCQlyZXQgPSBoYXNoX3ZhbGlkYXRlKHMsIGIsIDApOwotIAkJCWlmIChyZXQgIT0gWFpfU1RSRUFNX0VORCkKLUBAIC04NjMsNiArODY3LDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAotIAkJCXMtPnNlcXVlbmNlID0gU0VRX0lOREVYX0NSQzMyOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9JTkRFWF9DUkMzMjoKLSAJCQlyZXQgPSBoYXNoX3ZhbGlkYXRlKHMsIGIsIDEpOwotIAkJCWlmIChyZXQgIT0gWFpfU1RSRUFNX0VORCkKLUBAIC04NzEsNiArODc2LDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAkJCXMtPnRlbXAuc2l6ZSA9IFNUUkVBTV9IRUFERVJfU0laRTsKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9TVFJFQU1fRk9PVEVSOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9TVFJFQU1fRk9PVEVSOgotIAkJCWlmICghZmlsbF90ZW1wKHMsIGIpKQotIAkJCQlyZXR1cm4gWFpfT0s7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLUBAIC05NzcsMTAgKzk3NywxMyBAQCBncnViX2NtZF9saW51eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0Ci0gCSAgICAgIHsKLSAJICAgICAgY2FzZSAnZyc6Ci0gCQlzaGlmdCArPSAxMDsKLSsJCS8qIEZBTExUSFJPVUdIICovCi0gCSAgICAgIGNhc2UgJ20nOgotIAkJc2hpZnQgKz0gMTA7Ci0rCQkvKiBGQUxMVEhST1VHSCAqLwotIAkgICAgICBjYXNlICdrJzoKLSAJCXNoaWZ0ICs9IDEwOwotKwkJLyogRkFMTFRIUk9VR0ggKi8KLSAJICAgICAgZGVmYXVsdDoKLSAJCWJyZWFrOwotIAkgICAgICB9Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9yZWFkZXJzL2pwZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS92aWRlby9yZWFkZXJzL2pwZWcuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vcmVhZGVycy9qcGVnLmMKLUBAIC03MDEsNiArNzAxLDcgQEAgZ3J1Yl9qcGVnX2RlY29kZV9qcGVnIChzdHJ1Y3QgZ3J1Yl9qcGVnXwotIAljYXNlIEpQRUdfTUFSS0VSX1NPUzoJLyogU3RhcnQgT2YgU2Nhbi4gICovCi0gCSAgaWYgKGdydWJfanBlZ19kZWNvZGVfc29zIChkYXRhKSkKLSAJICAgIGJyZWFrOwotKwkgIC8qIEZBTExUSFJPVUdIICovCi0gCWNhc2UgSlBFR19NQVJLRVJfUlNUMDoJLyogUmVzdGFydC4gICovCi0gCWNhc2UgSlBFR19NQVJLRVJfUlNUMToKLSAJY2FzZSBKUEVHX01BUktFUl9SU1QyOgotSW5kZXg6IGdydWItMi4wMC91dGlsL2dydWItbWtpbWFnZXh4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy91dGlsL2dydWItbWtpbWFnZXh4LmMKLSsrKyBncnViLTIuMDAvdXRpbC9ncnViLW1raW1hZ2V4eC5jCi1AQCAtNDg1LDYgKzQ4NSw3IEBAIFNVRkZJWCAocmVsb2NhdGVfYWRkcmVzc2VzKSAoRWxmX0VoZHIgKmUKLSAJCQkJCQkJCQkgICAgKyBzeW0tPnN0X3ZhbHVlCi0gCQkJCQkJCQkJICAgIC0gaW1hZ2VfdGFyZ2V0LT52YWRkcl9vZmZzZXQpKTsKLSAJCSAgfQotKwkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgUl9JQTY0X0xUT0ZGX0ZQVFIyMjoKLSAJCSAgKmdwcHRyID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDY0IChhZGRlbmQgKyBzeW1fYWRkcik7Ci0gCQkgIGFkZF92YWx1ZV90b19zbG90XzIxICgoZ3J1Yl9hZGRyX3QpIHRhcmdldCwKLUluZGV4OiBncnViLTIuMDAvdXRpbC9ncnViLW1vdW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy91dGlsL2dydWItbW91bnQuYwotKysrIGdydWItMi4wMC91dGlsL2dydWItbW91bnQuYwotQEAgLTQ4Nyw2ICs0ODcsNyBAQCBhcmdwX3BhcnNlciAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QKLSAgICAgICBpZiAoYXJnWzBdICE9ICctJykKLSAJYnJlYWs7Ci0gCi0rICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgaWYgKCFhcmcpCi0gCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAzLUFkZC1nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMy1BZGQtZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZmJmNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAzLUFkZC1nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMDA3ZjBiNDA3ZjcyMzE0ZWM4MzJkNzdlMTViODNlYTQwYjE2MDAzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlaSBCb3J6ZW5rb3YgPGFydmlkamFhckBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTk6Mzc6NDcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIEFkZCBnbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZgotCi1BcyBsb25nIGFzIHRoZSBjb2RlIGlzIG5vdCB1cHN0cmVhbSwgYWRkIGl0IGFzIGV4cGxpY2l0IHBhdGNoIGZvciB0aGUKLWNhc2Ugb2YgZ251bGliIHJlZnJlc2guCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBncnViLWNvcmUvZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYgfCAxNCArKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdydWItY29yZS9nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZgotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2dudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmIGIvZ3J1Yi1jb3JlL2dudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTgwMmUyZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ3J1Yi1jb3JlL2dudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmCi1AQCAtMCwwICsxLDE0IEBACi0rZGlmZiAtLWdpdCBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYyBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotK2luZGV4IGY2MzJjZDQuLmE3Nzc2ZjAgMTAwNjQ0Ci0rLS0tIGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi0rKysrIGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi0rQEAgLTQwOTksNiArNDA5OSw5IEBAIGNoZWNrX25vZGVfYWNjZXB0IChjb25zdCByZV9tYXRjaF9jb250ZXh0X3QgKm1jdHgsIGNvbnN0IHJlX3Rva2VuX3QgKm5vZGUsCi0rICAgICBjYXNlIE9QX1VURjhfUEVSSU9EOgotKyAgICAgICBpZiAoY2ggPj0gQVNDSUlfQ0hBUlMpCi0rICAgICAgICAgcmV0dXJuIGZhbHNlOwotKysjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dOVUNfXyA+PSA3Ci0rKyAgICAgIF9fYXR0cmlidXRlX18gKChmYWxsdGhyb3VnaCkpOwotKysjZW5kaWYKLSsgICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgI2VuZGlmCi0rICAgICBjYXNlIE9QX1BFUklPRDoKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDA0LUZpeC1yZW1haW5pbmctY2FzZXMtb2YtZ2NjLTctZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwNC1GaXgtcmVtYWluaW5nLWNhc2VzLW9mLWdjYy03LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YTcwYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDA0LUZpeC1yZW1haW5pbmctY2FzZXMtb2YtZ2NjLTctZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi1Gcm9tIGQ0NTQ1MDliYjg2NmQ0ZWFlZmJiNTU4ZDk0ZGQwZWYwMjI4ODMwZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWbGFkaW1pciBTZXJiaW5lbmtvIDxwaGNvZGVyQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTIgQXByIDIwMTcgMDE6NDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEZpeCByZW1haW5pbmcgY2FzZXMgb2YgZ2NjIDcgZmFsbHRocm91Z2ggd2FybmluZy4KLQotVGhleSBhcmUgYWxsIGludGVuZGVkLCBzbyBqdXN0IGFkZCB0aGUgcmVsZXZhbnQgY29tbWVudC4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdydWItY29yZS9rZXJuL2lhNjQvZGwuYyAgICAgICAgICAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2tlcm4vbWlwcy9kbC5jICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUva2Vybi9zcGFyYzY0L2RsLmMgICAgICAgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9sb2FkZXIvaTM4Ni9jb3JlYm9vdC9jaGFpbmxvYWRlci5jIHwgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vaWE2NC9kbC5jCi1AQCAtMjU3LDYgKzI1Nyw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QKLSAJCSAgY2FzZSBSX0lBNjRfTFRPRkYyMjoKLSAJCSAgICBpZiAoRUxGX1NUX1RZUEUgKHN5bS0+c3RfaW5mbykgPT0gU1RUX0ZVTkMpCi0gCQkgICAgICB2YWx1ZSA9ICooZ3J1Yl91aW50NjRfdCAqKSBzeW0tPnN0X3ZhbHVlICsgcmVsLT5yX2FkZGVuZDsKLSsJCSAgLyogRmFsbHRocm91Z2guICAqLwotIAkJICBjYXNlIFJfSUE2NF9MVE9GRl9GUFRSMjI6Ci0gCQkgICAgKmdwcHRyID0gdmFsdWU7Ci0gCQkgICAgYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKGFkZHIsIChncnViX2FkZHJfdCkgZ3BwdHIgLSAoZ3J1Yl9hZGRyX3QpIGdwKTsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svZGlza2ZpbHRlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2Rpc2svZGlza2ZpbHRlci5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2Rpc2tmaWx0ZXIuYwotQEAgLTcxLDEwICs3MSwxMiBAQCBpc19sdl9yZWFkYWJsZSAoc3RydWN0IGdydWJfZGlza2ZpbHRlcl9sCi0gCWNhc2UgR1JVQl9ESVNLRklMVEVSX1JBSUQ2OgotIAkgIGlmICghZWFzaWx5KQotIAkgICAgbmVlZC0tOwotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJY2FzZSBHUlVCX0RJU0tGSUxURVJfUkFJRDQ6Ci0gCWNhc2UgR1JVQl9ESVNLRklMVEVSX1JBSUQ1OgotIAkgIGlmICghZWFzaWx5KQotIAkgICAgbmVlZC0tOwotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJY2FzZSBHUlVCX0RJU0tGSUxURVJfU1RSSVBFRDoKLSAJICBicmVhazsKLSAKLUBAIC01MDcsNiArNTA5LDcgQEAgcmVhZF9zZWdtZW50IChzdHJ1Y3QgZ3J1Yl9kaXNrZmlsdGVyX3NlZwotICAgICAgIGlmIChzZWctPm5vZGVfY291bnQgPT0gMSkKLSAJcmV0dXJuIGdydWJfZGlza2ZpbHRlcl9yZWFkX25vZGUgKCZzZWctPm5vZGVzWzBdLAotIAkJCQkJICBzZWN0b3IsIHNpemUsIGJ1Zik7Ci0rICAgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAgICAgY2FzZSBHUlVCX0RJU0tGSUxURVJfTUlSUk9SOgotICAgICBjYXNlIEdSVUJfRElTS0ZJTFRFUl9SQUlEMTA6Ci0gICAgICAgewotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZm9udC9mb250LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZm9udC9mb250LmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2ZvbnQvZm9udC5jCi1AQCAtMTI5Nyw2ICsxMjk3LDcgQEAgYmxpdF9jb21iIChjb25zdCBzdHJ1Y3QgZ3J1Yl91bmljb2RlX2dseQotIAkgICAgLSBncnViX2ZvbnRfZ2V0X3hoZWlnaHQgKGNvbWJpbmluZ19nbHlwaHNbaV0tPmZvbnQpIC0gMTsKLSAJICBpZiAoc3BhY2UgPD0gMCkKLSAJICAgIHNwYWNlID0gMSArIChncnViX2ZvbnRfZ2V0X3hoZWlnaHQgKG1haW5fZ2x5cGgtPmZvbnQpKSAvIDg7Ci0rICAgICAgICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCi0gCWNhc2UgR1JVQl9VTklDT0RFX1NUQUNLX0FUVEFDSEVEX0FCT1ZFOgotIAkgIGRvX2JsaXQgKGNvbWJpbmluZ19nbHlwaHNbaV0sIHRhcmdldHgsCi1AQCAtMTMzOCw2ICsxMzM5LDcgQEAgYmxpdF9jb21iIChjb25zdCBzdHJ1Y3QgZ3J1Yl91bmljb2RlX2dseQotIAkJICAgICsgY29tYmluaW5nX2dseXBoc1tpXS0+aGVpZ2h0KTsKLSAJICBpZiAoc3BhY2UgPD0gMCkKLSAJICAgIHNwYWNlID0gMSArIChncnViX2ZvbnRfZ2V0X3hoZWlnaHQgKG1haW5fZ2x5cGgtPmZvbnQpKSAvIDg7Ci0rICAgICAgICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCi0gCWNhc2UgR1JVQl9VTklDT0RFX1NUQUNLX0FUVEFDSEVEX0JFTE9XOgotIAkgIGRvX2JsaXQgKGNvbWJpbmluZ19nbHlwaHNbaV0sIHRhcmdldHgsIC0oYm91bmRzLnkgLSBzcGFjZSkpOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZnMvdWRmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZnMvdWRmLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2ZzL3VkZi5jCi1AQCAtOTcwLDYgKzk3MCw3IEBAIGdydWJfdWRmX3JlYWRfc3ltbGluayAoZ3J1Yl9mc2hlbHBfbm9kZV8KLSAJY2FzZSAxOgotIAkgIGlmIChwdHJbMV0pCi0gCSAgICBnb3RvIGZhaWw7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgMjoKLSAJICAvKiBpbiA0IGJ5dGVzLiBvdXQ6IDEgYnl0ZS4gICovCi0gCSAgb3B0ciA9IG91dDsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi9sZWdhY3lfcGFyc2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9saWIvbGVnYWN5X3BhcnNlLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi9sZWdhY3lfcGFyc2UuYwotQEAgLTYyNiw2ICs2MjYsNyBAQCBncnViX2xlZ2FjeV9wYXJzZSAoY29uc3QgY2hhciAqYnVmLCBjaGFyCi0gCSAgewotIAkgIGNhc2UgVFlQRV9GSUxFX05PX0NPTlNVTUU6Ci0gCSAgICBob2xkX2FyZyA9IDE7Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAkgIGNhc2UgVFlQRV9QQVJUSVRJT046Ci0gCSAgY2FzZSBUWVBFX0ZJTEU6Ci0gCSAgICBhcmdzW2ldID0gYWRqdXN0X2ZpbGUgKGN1cmFyZywgY3VyYXJnbGVuKTsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi9jaXBoZXIvcmlqbmRhZWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9saWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyL3Jpam5kYWVsLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi9jaXBoZXIvcmlqbmRhZWwuYwotQEAgLTk2LDcgKzk2LDggQEAgZG9fc2V0a2V5IChSSUpOREFFTF9jb250ZXh0ICpjdHgsIGNvbnN0Ci0gICBzdGF0aWMgaW50IGluaXRpYWxpemVkID0gMDsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpzZWxmdGVzdF9mYWlsZWQ9MDsKLSAgIGludCBST1VORFM7Ci0tICBpbnQgaSxqLCByLCB0LCByY29ucG9pbnRlciA9IDA7Ci0rICB1bnNpZ25lZCBpbnQgaSwgdCwgcmNvbnBvaW50ZXIgPSAwOwotKyAgaW50IGosIHI7Ci0gICBpbnQgS0M7Ci0gICB1bmlvbgotICAgewotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbW1hcC9lZmkvbW1hcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL21tYXAvZWZpL21tYXAuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbW1hcC9lZmkvbW1hcC5jCi1AQCAtNzIsNiArNzIsNyBAQCBncnViX2VmaV9tbWFwX2l0ZXJhdGUgKGdydWJfbWVtb3J5X2hvb2tfCi0gCQkgICAgR1JVQl9NRU1PUllfQVZBSUxBQkxFKTsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICB9Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAljYXNlIEdSVUJfRUZJX1JVTlRJTUVfU0VSVklDRVNfQ09ERToKLSAJICBob29rIChkZXNjLT5waHlzaWNhbF9zdGFydCwgZGVzYy0+bnVtX3BhZ2VzICogNDA5NiwKLSAJCUdSVUJfTUVNT1JZX0NPREUpOwotQEAgLTg2LDYgKzg3LDcgQEAgZ3J1Yl9lZmlfbW1hcF9pdGVyYXRlIChncnViX21lbW9yeV9ob29rXwotIAkgIGdydWJfcHJpbnRmICgiVW5rbm93biBtZW1vcnkgdHlwZSAlZCwgY29uc2lkZXJpbmcgcmVzZXJ2ZWRcbiIsCi0gCQkgICAgICAgZGVzYy0+dHlwZSk7Ci0gCi0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAljYXNlIEdSVUJfRUZJX0JPT1RfU0VSVklDRVNfREFUQToKLSAJICBpZiAoIWF2b2lkX2VmaV9ib290X3NlcnZpY2VzKQotIAkgICAgewotQEAgLTkzLDYgKzk1LDcgQEAgZ3J1Yl9lZmlfbW1hcF9pdGVyYXRlIChncnViX21lbW9yeV9ob29rXwotIAkJICAgIEdSVUJfTUVNT1JZX0FWQUlMQUJMRSk7Ci0gCSAgICAgIGJyZWFrOwotIAkgICAgfQotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJY2FzZSBHUlVCX0VGSV9SRVNFUlZFRF9NRU1PUllfVFlQRToKLSAJY2FzZSBHUlVCX0VGSV9SVU5USU1FX1NFUlZJQ0VTX0RBVEE6Ci0gCWNhc2UgR1JVQl9FRklfTUVNT1JZX01BUFBFRF9JTzoKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYwotQEAgLTg1OCw2ICs4NTgsNyBAQCBncnViX2JpZGlfbGluZV9sb2dpY2FsX3RvX3Zpc3VhbCAoY29uc3QKLSAJICBjYXNlIEdSVUJfQklESV9UWVBFX1I6Ci0gCSAgY2FzZSBHUlVCX0JJRElfVFlQRV9BTDoKLSAJICAgIGJpZGlfbmVlZGVkID0gMTsKLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCSAgZGVmYXVsdDoKLSAJICAgIHsKLSAJICAgICAgaWYgKGpvaW5fc3RhdGUgPT0gSk9JTl9GT1JDRSkKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL2JvY2hzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvdmlkZW8vYm9jaHMuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vYm9jaHMuYwotQEAgLTM1MSw2ICszNTEsNyBAQCBncnViX3ZpZGVvX2JvY2hzX3NldHVwICh1bnNpZ25lZCBpbnQgd2lkCi0gICAgIGNhc2UgMzI6Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlc2VydmVkX21hc2tfc2l6ZSA9IDg7Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlc2VydmVkX2ZpZWxkX3BvcyA9IDI0OwotKyAgICAgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAKLSAgICAgY2FzZSAyNDoKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVkX21hc2tfc2l6ZSA9IDg7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9jaXJydXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS92aWRlby9jaXJydXMuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vY2lycnVzLmMKLUBAIC00MzEsNiArNDMxLDcgQEAgZ3J1Yl92aWRlb19jaXJydXNfc2V0dXAgKHVuc2lnbmVkIGludCB3aQotICAgICBjYXNlIDMyOgotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZXNlcnZlZF9tYXNrX3NpemUgPSA4OwotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZXNlcnZlZF9maWVsZF9wb3MgPSAyNDsKLSsgICAgICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCi0gICAgIGNhc2UgMjQ6Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlZF9tYXNrX3NpemUgPSA4OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIvYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9jaGVjay1pZi1saWJsem1hLWlzLWRpc2FibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9jaGVjay1pZi1saWJsem1hLWlzLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWVjZTA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvY2hlY2staWYtbGlibHptYS1pcy1kaXNhYmxlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLURpc2FibGUgbGlibHptYSBpZiAtLWVuYWJsZS1saWJsem1hPW5vCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwMjksMTAgKzEwMjksMjAgQEAgZmkKLSAKLSBBQ19TVUJTVChbTElCR0VPTV0pCi0gCi0tQUNfQ0hFQ0tfTElCKFtsem1hXSwgW2x6bWFfY29kZV0sCi0tICAgICAgICAgICAgIFtMSUJMWk1BPSItbGx6bWEiCi0tICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfTElCTFpNQV0sIFsxXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIExaTUEgbGlicmFyeS5dKV0sKQotK0FDX0FSR19FTkFCTEUoW2xpYmx6bWFdLAotKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1saWJsem1hXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmx6bWEgaW50ZWdyYXRpb24gKGRlZmF1bHQ9Z3Vlc3NlZCldKV0pCi0raWYgdGVzdCB4IiRlbmFibGVfbGlibHptYSIgPSB4bm8gOyB0aGVuCi0rICBsaWJsem1hX2V4Y3VzZT0iZXhwbGljaXRseSBkaXNhYmxlZCIKLStmaQotKwotK2lmIHRlc3QgeCIkbGlibHptYV9leGN1c2UiID0geCA7IHRoZW4KLSsgIEFDX0NIRUNLX0xJQihbbHptYV0sIFtsem1hX2NvZGVdLAotKyAgICAgICAgICAgICAgIFtMSUJMWk1BPSItbGx6bWEiCi0rICAgICAgICAgICAgICAgIEFDX0RFRklORShbSEFWRV9MSUJMWk1BXSwgWzFdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBMWk1BIGxpYnJhcnkuXSldLCkKLStmaQotKwotIEFDX1NVQlNUKFtMSUJMWk1BXSkKLSAKLSBBQ19BUkdfRU5BQkxFKFtsaWJ6ZnNdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtZW5kaWFubmVzcy1wcm9ibGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtZW5kaWFubmVzcy1wcm9ibGVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzk5OTJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWVuZGlhbm5lc3MtcHJvYmxlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLWdydWItY29yZS9uZXQvdGZ0cC5jOiBmaXggZW5kaWFubmVzcyBwcm9ibGVtLgotCi0JKiBncnViLWNvcmUvbmV0L3RmdHAuYyAoYWNrKTogRml4IGVuZGlhbm5lc3MgcHJvYmxlbS4KLQkodGZ0cF9yZWNlaXZlKTogTGlrZXdpc2UuCi0JUmVwb3J0ZWQgYnk6IE1pY2hhZWwgRGF2aWRzYXZlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA4MWJkYWU5Li5jMmY0MmQ1IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTItMDctMDIgIFZsYWRpbWlyIFNlcmJpbmVua28gIDxwaGNvZGVyQGdtYWlsLmNvbT4KLSsKLSsJKiBncnViLWNvcmUvbmV0L3RmdHAuYyAoYWNrKTogRml4IGVuZGlhbm5lc3MgcHJvYmxlbS4KLSsJKHRmdHBfcmVjZWl2ZSk6IExpa2V3aXNlLgotKwlSZXBvcnRlZCBieTogTWljaGFlbCBEYXZpZHNhdmVyLgotKwotIDIwMTItMDYtMjcgIFZsYWRpbWlyIFNlcmJpbmVua28gIDxwaGNvZGVyQGdtYWlsLmNvbT4KLSAKLSAJKiBjb25maWd1cmUuYWM6IEJ1bXAgdmVyc2lvbiB0byAyLjAwLgotZGlmZiAtLWdpdCBhL2dydWItY29yZS9uZXQvdGZ0cC5jIGIvZ3J1Yi1jb3JlL25ldC90ZnRwLmMKLWluZGV4IDljNzBlZmIuLmQwZjM5ZWEgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvbmV0L3RmdHAuYwotKysrIGIvZ3J1Yi1jb3JlL25ldC90ZnRwLmMKLUBAIC0xNDMsNyArMTQzLDcgQEAgYWNrICh0ZnRwX2RhdGFfdCBkYXRhLCBncnViX3VpbnQxNl90IGJsb2NrKQotIAotICAgdGZ0cGhfYWNrID0gKHN0cnVjdCB0ZnRwaGRyICopIG5iX2Fjay5kYXRhOwotICAgdGZ0cGhfYWNrLT5vcGNvZGUgPSBncnViX2NwdV90b19iZTE2IChURlRQX0FDSyk7Ci0tICB0ZnRwaF9hY2stPnUuYWNrLmJsb2NrID0gYmxvY2s7Ci0rICB0ZnRwaF9hY2stPnUuYWNrLmJsb2NrID0gZ3J1Yl9jcHVfdG9fYmUxNiAoYmxvY2spOwotIAotICAgZXJyID0gZ3J1Yl9uZXRfc2VuZF91ZHBfcGFja2V0IChkYXRhLT5zb2NrLCAmbmJfYWNrKTsKLSAgIGlmIChlcnIpCi1AQCAtMjI1LDcgKzIyNSw3IEBAIHRmdHBfcmVjZWl2ZSAoZ3J1Yl9uZXRfdWRwX3NvY2tldF90IHNvY2sgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotIAkgICAgZ3J1Yl9wcmlvcml0eV9xdWV1ZV9wb3AgKGRhdGEtPnBxKTsKLSAKLSAJICAgIGlmIChmaWxlLT5kZXZpY2UtPm5ldC0+cGFja3MuY291bnQgPCA1MCkKLS0JICAgICAgZXJyID0gYWNrIChkYXRhLCB0ZnRwaC0+dS5kYXRhLmJsb2NrKTsKLSsJICAgICAgZXJyID0gYWNrIChkYXRhLCBkYXRhLT5ibG9jayArIDEpOwotIAkgICAgZWxzZQotIAkgICAgICB7Ci0gCQlmaWxlLT5kZXZpY2UtPm5ldC0+c3RhbGwgPSAxOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtaXNzdWUtd2l0aC1mbGV4LTIuNS4zNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWlzc3VlLXdpdGgtZmxleC0yLjUuMzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYWUyZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtaXNzdWUtd2l0aC1mbGV4LTIuNS4zNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotVGhpcyBmaXhlcyBjb21waWxhdGlvbiBpc3N1ZXMgd2hlbiB1c2luZyBmbGV4LTIuNS4zNy4gSXQgd2FzIHRha2VuIGZyb20gdXBzdHJlYW0uCi0KLU9yaWdpbmFsIGF1dGhvciBpczogVmxhZGltaXIgU2VyYmluZW5rbyAgPHBoY29kZXJAZ21haWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci0KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL3NjcmlwdC95eWxleC5sCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL3NjcmlwdC95eWxleC5sCTIwMTItMDYtMDggMjM6MjQ6MTUuMDAwMDAwMDAwICswMzAwCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9zY3JpcHQveXlsZXgubAkyMDEzLTA3LTMxIDE0OjM0OjQwLjcwODEwMDk4MiArMDMwMAotQEAgLTI5LDYgKzI5LDggQEAKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1wcm90b3R5cGVzIgotICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5zYWZlLWxvb3Atb3B0aW1pemF0aW9ucyIKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaWduLWNvbXBhcmUiCi0gCi0gI2RlZmluZSB5eWZyZWUgICAgZ3J1Yl9sZXhlcl95eWZyZWUKLSAjZGVmaW5lIHl5YWxsb2MgICBncnViX2xleGVyX3l5YWxsb2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LXRleGluZm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC10ZXhpbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTExZDczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LXRleGluZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1UaGUgdGFyYmFsbCBoYXMgYSB0ZXhpIGZpbGUgdGhhdCBkb2Vzbid0IHBhcnNlIHdpdGggY3VycmVudCB0ZXhpbmZvLCBzbyBpZiBpdCdzCi1iZWluZyByZS1nZW5lcmF0ZWQgdGhlIGJ1aWxkIHdpbGwgZmFpbC4gIFRha2UgYSBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCB0aGUKLXRleGkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gZDRjNGI4ZTFhMDg1ZjkyYWZjZWMzNmY2ZTU5MGM2ZGZjNTFkMGExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJyeWFuIEh1bmR2ZW4gPGJyeWFuaHVuZHZlbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDA4IEFwciAyMDEzIDEzOjIzOjA3ICswMDAwCi1TdWJqZWN0OiAJKiBkb2NzL2dydWItZGV2LnRleGk6IE1vdmUgQGl0ZW1pemUgYWZ0ZXIgQHN1YnNlY3Rpb24gdG8gc2F0aXNmeQotCi0JdGV4aW5mby01LjEuCi0tLS0KLShsaW1pdGVkIHRvICdkb2NzL2dydWItZGV2LnRleGknKQotCi1kaWZmIC0tZ2l0IGEvZG9jcy9ncnViLWRldi50ZXhpIGIvZG9jcy9ncnViLWRldi50ZXhpCi1pbmRleCBhNGEzODIwLi5mNzRjOTY2IDEwMDY0NAotLS0tIGEvZG9jcy9ncnViLWRldi50ZXhpCi0rKysgYi9kb2NzL2dydWItZGV2LnRleGkKLUBAIC0xMzk0LDggKzEzOTQsOCBAQCBncnViX3ZpZGVvX2JsaXRfZ2x5cGggKCZnbHlwaCwgY29sb3IsIDAsIDApOwotIAotIEBub2RlIEJpdG1hcCBBUEkKLSBAc2VjdGlvbiBCaXRtYXAgQVBJCi0tQGl0ZW1pemUKLSBAc3Vic2VjdGlvbiBncnViX3ZpZGVvX2JpdG1hcF9jcmVhdGUKLStAaXRlbWl6ZQotIEBpdGVtIFByb3RvdHlwZToKLSBAZXhhbXBsZQotIGdydWJfZXJyX3QgZ3J1Yl92aWRlb19iaXRtYXBfY3JlYXRlIChzdHJ1Y3QgZ3J1Yl92aWRlb19iaXRtYXAgKipiaXRtYXAsIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwgZW51bSBncnViX3ZpZGVvX2JsaXRfZm9ybWF0IGJsaXRfZm9ybWF0KQotLS0KLWNnaXQgdjAuOS4wLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LmJ1aWxkLndpdGguZ2NjLTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWRmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKKyogZS5nLiB3aXRoIGdlbnRvbyBnY2MtNy4xIHRoZXkgZGVmaW5lIF9GT1JUSUZZX1NPVVJDRSBieSBkZWZhdWx0IHdpdGg6CisgIGh0dHBzOi8vc291cmNlcy5nZW50b28ub3JnL2NnaS1iaW4vdmlld3ZjLmNnaS9nZW50b28vc3JjL3BhdGNoc2V0cy9nY2MvNy4xLjAvZ2VudG9vLzEwX2FsbF9kZWZhdWx0LWZvcnRpZnktc291cmNlLnBhdGNoP3ZpZXc9bWFya3VwCisgIHdoaWNoIHJlc3VsdHMgaW4gZm9sbG93aW5nIGVycm9yIHdoaWxlIGJ1aWxkaW5nIGdydWItZWZpLW5hdGl2ZToKKyAgLi9jb25maWctdXRpbC5oOjE1MDQ6NDg6IGVycm9yOiB0aGlzIHVzZSBvZiAiZGVmaW5lZCIgbWF5IG5vdCBiZSBwb3J0YWJsZSBbLVdlcnJvcj1leHBhbnNpb24tdG8tZGVmaW5lZF0KKyAgICAgICAgICAgICAgIHx8IChkZWZpbmVkIF9GT1JUSUZZX1NPVVJDRSAmJiAwIDwgX0ZPUlRJRllfU09VUkNFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+CisgIHRoaXMgcGFydCBjb21lcyBmcm9tIGdudWxpYiBhbmQgaXQncyB1c2VkIG9ubHkgZm9yIEFwcGxlIGFuZCBCU0QsCisgIHNvIHdlIGNhbiBpZ25vcmUgaXQsIGJ1dCB3ZSBjYW5ub3QgYWRkIC1Xbm8tZXJyb3I9ZXhwYW5zaW9uLXRvLWRlZmluZWQKKyAgYmVjYXVzZSB0aGlzIHdhcm5pbmcgd2FzIGludHJvZHVjZWQgb25seSBpbiBnY2MtNyBhbmQgb2xkZXIgZ2NjCisgIHdpbGwgZmFpbCB3aXRoOgorICBjYzE6IGVycm9yOiAtV2Vycm9yPWV4cGFuc2lvbi10by1kZWZpbmVkOiBubyBvcHRpb24gLVdleHBhbnNpb24tdG8tZGVmaW5lZAorICB1c2UgI3ByYWdtYSB0byB3b3JrIGFyb3VuZCB0aGlzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoc2hvdWxkIGJlIGZpeGVkIGluIGdudWxpYiB3aGljaCBpcyB0aGVuIHJhcmVseSB1cGRhdGVkIGluIGdydWIpCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKworZGlmZiAtdU5yIGdydWItMi4wMi5vbGQvbTQvZXh0ZXJuLWlubGluZS5tNCBncnViLTIuMDIvbTQvZXh0ZXJuLWlubGluZS5tNAorLS0tIGdydWItMi4wMi5vbGQvbTQvZXh0ZXJuLWlubGluZS5tNAkyMDE2LTAyLTI4IDE1OjIyOjIxLjAwMDAwMDAwMCArMDEwMAorKysrIGdydWItMi4wMi9tNC9leHRlcm4taW5saW5lLm00CTIwMTctMDgtMjIgMTk6MjY6NDUuMjEzNjM3Mjc2ICswMjAwCitAQCAtMzksNiArMzksMTAgQEAKKyAgICBPUyBYIDEwLjkgaGFzIGEgbWFjcm8gX19oZWFkZXJfaW5saW5lIGluZGljYXRpbmcgdGhlIGJ1ZyBpcyBmaXhlZCBmb3IgQyBhbmQKKyAgICBmb3IgY2xhbmcgYnV0IHJlbWFpbnMgZm9yIGcrKzsgc2VlIDxodHRwOi8vdHJhYy5tYWNwb3J0cy5vcmcvdGlja2V0LzQxMDMzPi4KKyAgICBBc3N1bWUgRHJhZ29uRmx5IGFuZCBGcmVlQlNEIHdpbGwgYmUgc2ltaWxhci4gICovCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI2lmIF9fR05VQ19fID49IDcKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhwYW5zaW9uLXRvLWRlZmluZWQiCisrI2VuZGlmCisgI2lmICgoKGRlZmluZWQgX19BUFBMRV9fICYmIGRlZmluZWQgX19NQUNIX18pIFwKKyAgICAgICB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXykgXAorICAgICAgJiYgKGRlZmluZWQgX19oZWFkZXJfaW5saW5lIFwKK0BAIC01MCw2ICs1Miw3IEBACisgICAgICAgICAgICAgICAgICYmIGRlZmluZWQgX19HTlVDX18gJiYgISBkZWZpbmVkIF9fY3BsdXNwbHVzKSkpKQorICMgZGVmaW5lIF9HTF9FWFRFUk5fSU5MSU5FX1NUREhFQURFUl9CVUcKKyAjZW5kaWYKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICNpZiAoKF9fR05VQ19fIFwKKyAgICAgICA/IGRlZmluZWQgX19HTlVDX1NURENfSU5MSU5FX18gJiYgX19HTlVDX1NURENfSU5MSU5FX18gXAorICAgICAgIDogKDE5OTkwMUwgPD0gX19TVERDX1ZFUlNJT05fXyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1hZGQtb2Uta2VybmVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtYWRkLW9lLWtlcm5lbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI4OTE2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1hZGQtb2Uta2VybmVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA3YWI1NzZhN2M2MTQwNmI3ZTYzNzM5ZDFiMTEwMTdhZTMzNmI5MDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDMgTWFyIDIwMTQgMDM6MzQ6NDggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3J1Yi5kLzEwX2xpbnV4LmluOiBhZGQgb2UncyBrZXJuZWwgbmFtZQotCi1PdXIga2VybmVsJ3MgbmFtZSBpcyBiekltYWdlLCB3ZSBuZWVkIGFkZCBpdCB0byBncnViLmQvMTBfbGludXguaW4gc28KLXRoYXQgdGhlIGdydWItbWtjb25maWcgYW5kIGdydWItaW5zdGFsbCBjYW4gd29yayBjb3JyZWN0bHkuCi0KLVdlIG9ubHkgbmVlZCBhZGQgdGhlIGJ6SW1hZ2UgdG8gdXRpbC9ncnViLmQvMTBfbGludXguaW4sIGJ1dCBhbHNvIGFkZCBpdAotdG8gdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluIHRvIGtlZXAgY29tcGF0aWJpbGl0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB1dGlsL2dydWIuZC8xMF9saW51eC5pbiAgICAgfCAgICA0ICsrLS0KLSB1dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4gfCAgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91dGlsL2dydWIuZC8xMF9saW51eC5pbiBiL3V0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluCi1pbmRleCAxNDQwMmU4Li5jNThmNDE3IDEwMDY0NAotLS0tIGEvdXRpbC9ncnViLmQvMTBfbGludXguaW4KLSsrKyBiL3V0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluCi1AQCAtMTUzLDExICsxNTMsMTEgQEAgRU9GCi0gbWFjaGluZT1gdW5hbWUgLW1gCi0gY2FzZSAieCRtYWNoaW5lIiBpbgotICAgICB4aT84NiB8IHh4ODZfNjQpCi0tCWxpc3Q9YGZvciBpIGluIC9ib290L3ZtbGludXotKiAvdm1saW51ei0qIC9ib290L2tlcm5lbC0qIDsgZG8KLSsJbGlzdD1gZm9yIGkgaW4gL2Jvb3QvYnpJbWFnZS0qIC9iekltYWdlLSogL2Jvb3Qvdm1saW51ei0qIC92bWxpbnV6LSogL2Jvb3Qva2VybmVsLSogOyBkbwotICAgICAgICAgICAgICAgICAgIGlmIGdydWJfZmlsZV9pc19ub3RfZ2FyYmFnZSAiJGkiIDsgdGhlbiBlY2hvIC1uICIkaSAiIDsgZmkKLSAgICAgICAgICAgICAgIGRvbmVgIDs7Ci0gICAgICopIAotLQlsaXN0PWBmb3IgaSBpbiAvYm9vdC92bWxpbnV6LSogL2Jvb3Qvdm1saW51eC0qIC92bWxpbnV6LSogL3ZtbGludXgtKiAvYm9vdC9rZXJuZWwtKiA7IGRvCi0rCWxpc3Q9YGZvciBpIGluIC9ib290L2J6SW1hZ2UtKiAvYm9vdC92bWxpbnV6LSogL2Jvb3Qvdm1saW51eC0qIC9iekltYWdlLSogL3ZtbGludXotKiAvdm1saW51eC0qIC9ib290L2tlcm5lbC0qIDsgZG8KLSAgICAgICAgICAgICAgICAgICBpZiBncnViX2ZpbGVfaXNfbm90X2dhcmJhZ2UgIiRpIiA7IHRoZW4gZWNobyAtbiAiJGkgIiA7IGZpCi0gCSAgICAgZG9uZWAgOzsKLSBlc2FjCi1kaWZmIC0tZ2l0IGEvdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluIGIvdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluCi1pbmRleCAxZDk0NTAyLi5iMmRlY2YzIDEwMDY0NAotLS0tIGEvdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluCi0rKysgYi91dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4KLUBAIC0xMzgsNyArMTM4LDcgQEAgRU9GCi0gRU9GCi0gfQotIAotLWxpbnV4X2xpc3Q9YGZvciBpIGluIC9ib290L3ZtbGludVt4el0tKiAvdm1saW51W3h6XS0qIC9ib290L2tlcm5lbC0qOyBkbwotK2xpbnV4X2xpc3Q9YGZvciBpIGluIC9ib290L2J6SW1hZ2VbeHpdLSogL2J6SW1hZ2VbeHpdLSogL2Jvb3Qvdm1saW51W3h6XS0qIC92bWxpbnVbeHpdLSogL2Jvb3Qva2VybmVsLSo7IGRvCi0gICAgIGlmIGdydWJfZmlsZV9pc19ub3RfZ2FyYmFnZSAiJGkiOyB0aGVuCi0gICAgIAliYXNlbmFtZT0kKGJhc2VuYW1lICRpKQotIAl2ZXJzaW9uPSQoZWNobyAkYmFzZW5hbWUgfCBzZWQgLWUgInMsXlteMC05XSotLCxnIikKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZml4LWVuYWJsZV9leGVjdXRlX3N0YWNrLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZml4LWVuYWJsZV9leGVjdXRlX3N0YWNrLWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmYzYzFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZpeC1lbmFibGVfZXhlY3V0ZV9zdGFjay1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0KLVRoaXMgcGF0Y2ggYXZvaWRzIHRoaXMgY29uZmlndXJlIGZhaWx1cmUKLQotY29uZmlndXJlOjIwMzA2OiBjaGVja2luZyB3aGV0aGVyIGBjY2FjaGUgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAgICAtbWFyY2g9Y29yZTIgLW1zc2UzIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPXNzZSAtLXN5c3Jvb3Q9L2J1aWxkZGlzay9idWlsZC9idWlsZDAvdG1wL3N5c3Jvb3RzL2VtZW5sb3cnIGdlbmVyYXRlcyBjYWxscyB0byBgX19lbmFibGVfZXhlY3V0ZV9zdGFjaygpJwotY29uZmlndXJlOjIwMzIwOiBjY2FjaGUgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAgICAtbWFyY2g9Y29yZTIgLW1zc2UzIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPXNzZSAtLXN5c3Jvb3Q9L2J1aWxkZGlzay9idWlsZC9idWlsZDAvdG1wL3N5c3Jvb3RzL2VtZW5sb3cgLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtV2FsbCAtVyAtV3NoYWRvdyAtV3BvaW50ZXItYXJpdGggLVdtaXNzaW5nLXByb3RvdHlwZXMgLVd1bmRlZiAtV3N0cmljdC1wcm90b3R5cGVzIC1nIC1mYWxpZ24tanVtcHM9MSAtZmFsaWduLWxvb3BzPTEgLWZhbGlnbi1mdW5jdGlvbnM9MSAtbW5vLW1teCAtbW5vLXNzZSAtbW5vLXNzZTIgLW1uby0zZG5vdyAtbWZwbWF0aD0zODcgLWZuby1kd2FyZjItY2ZpLWFzbSAtbTMyIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1tbm8tc3RhY2stYXJnLXByb2JlIC1XZXJyb3IgLVduby10cmFtcG9saW5lcyAtZmFsaWduLWxvb3BzPTEgLVMgY29uZnRlc3QuYwotY29uZnRlc3QuYzozMDg6NjogZXJyb3I6IG5vIHByZXZpb3VzIHByb3RvdHlwZSBmb3IgJ2cnIFstV2Vycm9yPW1pc3NpbmctcHJvdG90eXBlc10KLWNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi1jb25maWd1cmU6MjAzMjM6ICQ/ID0gMQotY29uZmlndXJlOjIwMzI3OiBlcnJvcjogY2NhY2hlIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgICAgLW1hcmNoPWNvcmUyIC1tc3NlMyAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD1zc2UgLS1zeXNyb290PS9idWlsZGRpc2svYnVpbGQvYnVpbGQwL3RtcC9zeXNyb290cy9lbWVubG93IGZhaWxlZCB0byBwcm9kdWNlIGFzc2VtYmx5IGNvZGUKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDQvMTMKLQotSW5kZXg6IGdydWItMi4wMC9hY2luY2x1ZGUubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9hY2luY2x1ZGUubTQKLSsrKyBncnViLTIuMDAvYWNpbmNsdWRlLm00Ci1AQCAtMzE3LDYgKzMxNyw3IEBAIGRubCBDaGVjayBpZiB0aGUgQyBjb21waWxlciBnZW5lcmF0ZXMgY2EKLSBBQ19ERUZVTihbZ3J1Yl9DSEVDS19FTkFCTEVfRVhFQ1VURV9TVEFDS10sWwotIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBgJENDJyBnZW5lcmF0ZXMgY2FsbHMgdG8gYF9fZW5hYmxlX2V4ZWN1dGVfc3RhY2soKSddKQotIEFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfU09VUkNFKFtbCi0rdm9pZCBnIChpbnQpOwotIHZvaWQgZiAoaW50ICgqcCkgKHZvaWQpKTsKLSB2b2lkIGcgKGludCBpKQotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZwbWF0aC1zc2UtMzg3LWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZwbWF0aC1zc2UtMzg3LWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQzMGQ5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1mcG1hdGgtc3NlLTM4Ny1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGNvbmZpZ3VyZSBpc3N1ZSBmb3IgZ3J1YiB3aGVuIC1tZnBtYXRoPXNzZSBpcyBpbiB0aGUgZ2NjIHBhcmFtZXRlcnMuCi0KLWNvbmZpZ3VyZToyMDU3NDogaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAgICAtbWFyY2g9Y29yZTIgLW1zc2UzIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPXNzZSAtLXN5c3Jvb3Q9L3Vzci9sb2NhbC9kZXYveW9jdG8vZ3J1YnRlc3QyL2J1aWxkL3RtcC9zeXNyb290cy9lbWVubG93IC1vIGNvbmZ0ZXN0IC1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLVdhbGwgLVcgLVdzaGFkb3cgLVdwb2ludGVyLWFyaXRoIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XdW5kZWYgLVdzdHJpY3QtcHJvdG90eXBlcyAtZyAtZmFsaWduLWp1bXBzPTEgLWZhbGlnbi1sb29wcz0xIC1mYWxpZ24tZnVuY3Rpb25zPTEgLW1uby1tbXggLW1uby1zc2UgLW1uby1zc2UyIC1tbm8tM2Rub3cgLWZuby1kd2FyZjItY2ZpLWFzbSAtbTMyIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1tbm8tc3RhY2stYXJnLXByb2JlIC1XZXJyb3IgLW5vc3RkbGliIC1XbCwtLWRlZnN5bSxfX19tYWluPTB4ODEwMCAgLVdhbGwgLVcgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9idWlsZGRpcikvaW5jbHVkZSAgLURHUlVCX01BQ0hJTkVfUENCSU9TPTEgLURHUlVCX01BQ0hJTkU9STM4Nl9QQyAtV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFzLW5lZWRlZCBjb25mdGVzdC5jICA+JjUKLWNvbmZ0ZXN0LmM6MTowOiBlcnJvcjogU1NFIGluc3RydWN0aW9uIHNldCBkaXNhYmxlZCwgdXNpbmcgMzg3IGFyaXRobWV0aWNzIFstV2Vycm9yXQotY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDQvMTMKLQotSW5kZXg6IGdydWItMS45OS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTEuOTkub3JpZy9jb25maWd1cmUuYWMKLSsrKyBncnViLTEuOTkvY29uZmlndXJlLmFjCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGlmIHRlc3QgIngkdGFyZ2V0X2NwdSIgPSB4aTM4NjsgdGhlbgotIAotICAgIyBTb21lIHRvb2xjaGFpbnMgZW5hYmxlIHRoZXNlIGZlYXR1cmVzIGJ5IGRlZmF1bHQsIGJ1dCB0aGV5IG5lZWQKLSAgICMgcmVnaXN0ZXJzIHRoYXQgYXJlbid0IHNldCB1cCBwcm9wZXJseSBpbiBHUlVCLgotLSAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLW1uby1tbXggLW1uby1zc2UgLW1uby1zc2UyIC1tbm8tM2Rub3ciCi0rICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtbW5vLW1teCAtbW5vLXNzZSAtbW5vLXNzZTIgLW1uby0zZG5vdyAtbWZwbWF0aD0zODciCi0gZmkKLSAKLSAjIEJ5IGRlZmF1bHQsIEdDQyA0LjQgZ2VuZXJhdGVzIC5laF9mcmFtZSBzZWN0aW9ucyBjb250YWluaW5nIHVud2luZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1hbGxvdy1hLWNvbXBpbGF0aW9uLXdpdGhvdXQtbWNtb2RlbC1sYXJnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktYWxsb3ctYS1jb21waWxhdGlvbi13aXRob3V0LW1jbW9kZWwtbGFyZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ODhmY2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1hbGxvdy1hLWNvbXBpbGF0aW9uLXdpdGhvdXQtbWNtb2RlbC1sYXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi1BbGxvdyBhIGNvbXBpbGF0aW9uIHdpdGhvdXQgLW1jbW9kZWw9bGFyZ2UKLQotSXQncyBwcm92aWRlZCBieSBWbGFkaW1pciBTZXJiaW5lbmtvLCBhbmQgaGUgd2lsbCBjb21taXQKLWl0IHVwc3RyZWFtIHNvIGl0IHNob3VsZCBiZSBiYWNrcG9ydCBwYXRjaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWY4ZmI4YS4uMmM1ZTZlZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzIzLDkgKzcyMyw3IEBAIGlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9IHg4Nl82NDsgdGhlbgotIAkJICAgICAgW2dydWJfY3ZfY2NfbWNtb2RlbD15ZXNdLAotIAkJICAgICAgW2dydWJfY3ZfY2NfbWNtb2RlbD1ub10pCi0gICBdKQotLSAgaWYgdGVzdCAieCRncnViX2N2X2NjX21jbW9kZWwiID0geG5vOyB0aGVuCi0tICAgIEFDX01TR19FUlJPUihbLW1jbW9kZWw9bGFyZ2Ugbm90IHN1cHBvcnRlZC4gVXBncmFkZSB5b3VyIGdjYy5dKQotLSAgZWxzZQotKyAgaWYgdGVzdCAieCRncnViX2N2X2NjX21jbW9kZWwiID0geHllczsgdGhlbgotICAgICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtbWNtb2RlbD1sYXJnZSIKLSAgIGZpCi0gZmkKLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1pbmRleCAxNDA5YjVkLi42ZTlkYWNlIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLSsrKyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1AQCAtMzIsNiArMzIsMTIgQEAKLSAjZGVmaW5lIEJZVEVTX1RPX1BBR0VTKGJ5dGVzKQkoKChieXRlcykgKyAweGZmZikgPj4gMTIpCi0gI2RlZmluZSBQQUdFU19UT19CWVRFUyhwYWdlcykJKChwYWdlcykgPDwgMTIpCi0KLSsjaWYgZGVmaW5lZCAoX19jb2RlX21vZGVsX2xhcmdlX18pIHx8ICFkZWZpbmVkIChfX3g4Nl82NF9fKQotKyNkZWZpbmUgTUFYX1VTQUJMRV9BRERSRVNTIDB4ZmZmZmZmZmYKLSsjZWxzZQotKyNkZWZpbmUgTUFYX1VTQUJMRV9BRERSRVNTIDB4N2ZmZmZmZmYKLSsjZW5kaWYKLSsKLSAvKiBUaGUgc2l6ZSBvZiBhIG1lbW9yeSBtYXAgb2J0YWluZWQgZnJvbSB0aGUgZmlybXdhcmUuIFRoaXMgbXVzdCBiZQotICAgIGEgbXVsdGlwbGllciBvZiA0S0IuICAqLwotICNkZWZpbmUgTUVNT1JZX01BUF9TSVpFCTB4MzAwMAotQEAgLTU4LDcgKzY0LDcgQEAgZ3J1Yl9lZmlfYWxsb2NhdGVfcGFnZXMgKGdydWJfZWZpX3BoeXNpY2FsX2FkZHJlc3NfdCBhZGRyZXNzLAotCi0gI2lmIDEKLSAgIC8qIExpbWl0IHRoZSBtZW1vcnkgYWNjZXNzIHRvIGxlc3MgdGhhbiA0R0IgZm9yIDMyLWJpdCBwbGF0Zm9ybXMuICAqLwotLSAgaWYgKGFkZHJlc3MgPiAweGZmZmZmZmZmKQotKyAgaWYgKGFkZHJlc3MgPiBNQVhfVVNBQkxFX0FERFJFU1MpCi0gICAgIHJldHVybiAwOwotICNlbmRpZgotCi1AQCAtNjYsNyArNzIsNyBAQCBncnViX2VmaV9hbGxvY2F0ZV9wYWdlcyAoZ3J1Yl9lZmlfcGh5c2ljYWxfYWRkcmVzc190IGFkZHJlc3MsCi0gICBpZiAoYWRkcmVzcyA9PSAwKQotICAgICB7Ci0gICAgICAgdHlwZSA9IEdSVUJfRUZJX0FMTE9DQVRFX01BWF9BRERSRVNTOwotLSAgICAgIGFkZHJlc3MgPSAweGZmZmZmZmZmOwotKyAgICAgIGFkZHJlc3MgPSBNQVhfVVNBQkxFX0FERFJFU1M7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgdHlwZSA9IEdSVUJfRUZJX0FMTE9DQVRFX0FERFJFU1M7Ci1AQCAtODYsNyArOTIsNyBAQCBncnViX2VmaV9hbGxvY2F0ZV9wYWdlcyAoZ3J1Yl9lZmlfcGh5c2ljYWxfYWRkcmVzc190IGFkZHJlc3MsCi0gICAgIHsKLSAgICAgICAvKiBVZ2doLCB0aGUgYWRkcmVzcyAwIHdhcyBhbGxvY2F0ZWQuLi4gVGhpcyBpcyB0b28gYW5ub3lpbmcsCi0gCSBzbyByZWFsbG9jYXRlIGFub3RoZXIgb25lLiAgKi8KLS0gICAgICBhZGRyZXNzID0gMHhmZmZmZmZmZjsKLSsgICAgICBhZGRyZXNzID0gTUFYX1VTQUJMRV9BRERSRVNTOwotICAgICAgIHN0YXR1cyA9IGVmaV9jYWxsXzQgKGItPmFsbG9jYXRlX3BhZ2VzLCB0eXBlLCBHUlVCX0VGSV9MT0FERVJfREFUQSwgcGFnZXMsICZhZGRyZXNzKTsKLSAgICAgICBncnViX2VmaV9mcmVlX3BhZ2VzICgwLCBwYWdlcyk7Ci0gICAgICAgaWYgKHN0YXR1cyAhPSBHUlVCX0VGSV9TVUNDRVNTKQotQEAgLTMxOSw3ICszMjUsNyBAQCBmaWx0ZXJfbWVtb3J5X21hcCAoZ3J1Yl9lZmlfbWVtb3J5X2Rlc2NyaXB0b3JfdCAqbWVtb3J5X21hcCwKLSAgICAgewotICAgICAgIGlmIChkZXNjLT50eXBlID09IEdSVUJfRUZJX0NPTlZFTlRJT05BTF9NRU1PUlkKLSAjaWYgMQotLQkgICYmIGRlc2MtPnBoeXNpY2FsX3N0YXJ0IDw9IDB4ZmZmZmZmZmYKLSsJICAmJiBkZXNjLT5waHlzaWNhbF9zdGFydCA8PSBNQVhfVVNBQkxFX0FERFJFU1MKLSAjZW5kaWYKLSAJICAmJiBkZXNjLT5waHlzaWNhbF9zdGFydCArIFBBR0VTX1RPX0JZVEVTIChkZXNjLT5udW1fcGFnZXMpID4gMHgxMDAwMDAKLSAJICAmJiBkZXNjLT5udW1fcGFnZXMgIT0gMCkKLUBAIC0zMzcsOSArMzQzLDkgQEAgZmlsdGVyX21lbW9yeV9tYXAgKGdydWJfZWZpX21lbW9yeV9kZXNjcmlwdG9yX3QgKm1lbW9yeV9tYXAsCi0gI2lmIDEKLSAJICBpZiAoQllURVNfVE9fUEFHRVMgKGZpbHRlcmVkX2Rlc2MtPnBoeXNpY2FsX3N0YXJ0KQotIAkgICAgICArIGZpbHRlcmVkX2Rlc2MtPm51bV9wYWdlcwotLQkgICAgICA+IEJZVEVTX1RPX1BBR0VTICgweDEwMDAwMDAwMExMKSkKLSsJICAgICAgPiBCWVRFU19UT19QQUdFUyAoTUFYX1VTQUJMRV9BRERSRVNTKzFMTCkpCi0gCSAgICBmaWx0ZXJlZF9kZXNjLT5udW1fcGFnZXMKLS0JICAgICAgPSAoQllURVNfVE9fUEFHRVMgKDB4MTAwMDAwMDAwTEwpCi0rCSAgICAgID0gKEJZVEVTX1RPX1BBR0VTIChNQVhfVVNBQkxFX0FERFJFU1MrMUxMKQotIAkJIC0gQllURVNfVE9fUEFHRVMgKGZpbHRlcmVkX2Rlc2MtPnBoeXNpY2FsX3N0YXJ0KSk7Ci0gI2VuZGlmCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYyBiL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jCi1pbmRleCA2NWYwOWVmLi4xN2MxMjE1IDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKLSsrKyBiL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jCi1AQCAtMTAwLDE0ICsxMDAsMzIgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIpCi0gCQkgICAgYnJlYWs7Ci0KLSAJCSAgY2FzZSBSX1g4Nl82NF9QQzMyOgotLQkJICAgICphZGRyMzIgKz0gcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWUgLQotLQkJICAgICAgICAgICAgICAoRWxmNjRfWHdvcmQpIHNlZy0+YWRkciAtIHJlbC0+cl9vZmZzZXQ7Ci0rCQkgICAgewotKwkJICAgICAgZ3J1Yl9pbnQ2NF90IHZhbHVlOwotKwkJICAgICAgdmFsdWUgPSAoKGdydWJfaW50MzJfdCkgKmFkZHIzMikgKyByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZSAtCi0rCQkJKEVsZjY0X1h3b3JkKSBzZWctPmFkZHIgLSByZWwtPnJfb2Zmc2V0OwotKwkJICAgICAgaWYgKHZhbHVlICE9IChncnViX2ludDMyX3QpIHZhbHVlKQotKwkJCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiKTsKLSsJCSAgICAgICphZGRyMzIgPSB2YWx1ZTsKLSsJCSAgICB9Ci0gCQkgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICBjYXNlIFJfWDg2XzY0XzMyOgotKwkJICAgIHsKLSsJCSAgICAgIGdydWJfdWludDY0X3QgdmFsdWUgPSAqYWRkcjMyICsgcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWU7Ci0rCQkgICAgICBpZiAodmFsdWUgIT0gKGdydWJfdWludDMyX3QpIHZhbHVlKQotKwkJCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiKTsKLSsJCSAgICAgICphZGRyMzIgPSB2YWx1ZTsKLSsJCSAgICB9Ci0rCQkgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF8zMlM6Ci0tICAgICAgICAgICAgICAgICAgICAqYWRkcjMyICs9IHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlOwotLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCQkgICAgewotKwkJICAgICAgZ3J1Yl9pbnQ2NF90IHZhbHVlID0gKChncnViX2ludDMyX3QpICphZGRyMzIpICsgcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWU7Ci0rCQkgICAgICBpZiAodmFsdWUgIT0gKGdydWJfaW50MzJfdCkgdmFsdWUpCi0rCQkJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsICJyZWxvY2F0aW9uIG91dCBvZiByYW5nZSIpOwotKwkJICAgICAgKmFkZHIzMiA9IHZhbHVlOwotKwkJICAgIH0KLSsJCSAgICBicmVhazsKLQotIAkJICBkZWZhdWx0OgotIAkJICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5URURfWUVULApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1maXgtd2l0aC1nbGliYy0yLjIwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1maXgtd2l0aC1nbGliYy0yLjIwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjEyNjI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktZml4LXdpdGgtZ2xpYmMtMi4yMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZWI2MzY4ZTY1ZjY5ODhlZWJhZDI2Y2ViZGVjMDU3Zjc5N2JjZWI0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCA5IFNlcCAyMDE0IDAwOjAyOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIGdsaWJjIDIuMjAKLQotKiBncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmM6IHNxdWFoZXMgYmVsb3cgd2FybmluZwotICB3YXJuaW5nOiAjd2FybmluZyAiX0JTRF9TT1VSQ0UgYW5kIF9TVklEX1NPVVJDRSBhcmUgZGVwcmVjYXRlZCwgdXNlIF9ERUZBVUxUX1NPVVJDRSIKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jIGIvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jCi1pbmRleCAzY2IwODljLi5hNTFlZTMyIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jCi0rKysgYi9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmMKLUBAIC0xNiw3ICsxNiw3IEBACi0gICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAgKi8KLS0jZGVmaW5lIF9CU0RfU09VUkNFCi0rI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UKLSAjaW5jbHVkZSA8Z3J1Yi9mcy5oPgotICNpbmNsdWRlIDxncnViL2ZpbGUuaD4KLSAjaW5jbHVkZSA8Z3J1Yi9kaXNrLmg+Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWluc3RhbGwuaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItaW5zdGFsbC5pbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2OTUxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItaW5zdGFsbC5pbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLU91ciB1c2Ugb2YgZ3J1Yi1pbnN0YWxsIGRvZXNuJ3QgcmVxdWlyZSB0aGUgLXggb3B0aW9uLCBzbyB3ZSBzaG91bGQgYmUKLWJlIGFibGUgbWFrZSB1c2Ugb2YgZ3JlcCB2ZXJzaW9ucyB0aGF0IGRvbid0IHN1cHBvcnQgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBncnViLTEuOTkvdXRpbC9ncnViLWluc3RhbGwuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTEuOTkub3JpZy91dGlsL2dydWItaW5zdGFsbC5pbgkyMDExLTA5LTA5IDIyOjM3OjIwLjA5MzkwNjY3OSAtMDUwMAotKysrIGdydWItMS45OS91dGlsL2dydWItaW5zdGFsbC5pbgkyMDExLTA5LTA5IDIyOjM3OjMwLjg1NDczNzg4MiAtMDUwMAotQEAgLTUxMCw3ICs1MTAsNyBAQAotIAotIGlmIFsgIngke2RldmFic3RyYWN0aW9uX21vZHVsZX0iID0gIngiIF0gOyB0aGVuCi0gICAgIGlmIFsgeCIke2luc3RhbGxfZGV2aWNlfSIgIT0geCBdOyB0aGVuCi0tICAgICAgaWYgZWNobyAiJHtpbnN0YWxsX2RldmljZX0iIHwgZ3JlcCAtcXggIiguKikiIDsgdGhlbgotKyAgICAgIGlmIGVjaG8gIiR7aW5zdGFsbF9kZXZpY2V9IiB8IGdyZXAgLXEgIiguKikiIDsgdGhlbgotICAgICAgICAgaW5zdGFsbF9kcml2ZT0iJHtpbnN0YWxsX2RldmljZX0iCi0gICAgICAgZWxzZQotICAgICAgICAgaW5zdGFsbF9kcml2ZT0iYCIkZ3J1Yl9wcm9iZSIgLS1kZXZpY2UtbWFwPSIke2RldmljZV9tYXB9IiAtLXRhcmdldD1kcml2ZSAtLWRldmljZSAiJHtpbnN0YWxsX2RldmljZX0iYCIgfHwgZXhpdCAxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbm8tdW51c2VkLXJlc3VsdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1uby11bnVzZWQtcmVzdWx0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2JkMDgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1uby11bnVzZWQtcmVzdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU2lnbmVkLW9mZi1ieTogUmFkdSBNb2lzYW4gPHJhZHUubW9pc2FuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JIGhhZCBhbiBlcnJvciBiZWNhdXNlIG9mIGFuIHVudXNlZCByZXR1cm4gdmFsdWUgZm9yIHJlYWQoKS4KLUkgYWRkZWQgLVduby11bnVzZWQtcmVzdWx0LgotCi1JbmRleDogZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEyLTA4LTEzIDE2OjMyOjMzLjAwMDAwMDAwMCArMDMwMAotKysrIGdydWItMi4wMC9jb25maWd1cmUuYWMJMjAxMi0wOC0xMyAxNjozODoyMi4wMDAwMDAwMDAgKzAzMDAKLUBAIC0zOTQsNyArMzk0LDcgQEAKLSBMSUJTPSIiCi0gCi0gIyBkZWJ1ZyBmbGFncy4KLS1XQVJOX0ZMQUdTPSItV2FsbCAtVyAtV3NoYWRvdyAtV29sZC1zdHlsZS1kZWZpbml0aW9uIC1XcG9pbnRlci1hcml0aCAtV3VuZGVmIC1XZXh0cmEgLVdhZGRyZXNzIC1XYXR0cmlidXRlcyAtV2Nhc3QtYWxpZ24gLVdjaGFyLXN1YnNjcmlwdHMgLVdjb21tZW50IC1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVdkaXNhYmxlZC1vcHRpbWl6YXRpb24gLVdkaXYtYnktemVybyAtV2VtcHR5LWJvZHkgLVdlbmRpZi1sYWJlbHMgLVdmbG9hdC1lcXVhbCAtV2Zvcm1hdC1leHRyYS1hcmdzIC1XZm9ybWF0LXNlY3VyaXR5IC1XZm9ybWF0LXkyayAtV2ltcGxpY2l0IC1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVdpbXBsaWNpdC1pbnQgLVdpbml0LXNlbGYgLVdpbnQtdG8tcG9pbnRlci1jYXN0IC1XaW52YWxpZC1wY2ggLVdtYWluIC1XbWlzc2luZy1icmFjZXMgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21pc3Npbmctbm9yZXR1cm4gLVdtdWx0aWNoYXIgLVdub25udWxsIC1Xb3ZlcmZsb3cgLVdwYXJlbnRoZXNlcyAtV3BvaW50ZXItYXJpdGggLVdwb2ludGVyLXRvLWludC1jYXN0IC1XcmV0dXJuLXR5cGUgLVdzZXF1ZW5jZS1wb2ludCAtV3NoYWRvdyAtV3NpZ24tY29tcGFyZSAtV3N0cmljdC1hbGlhc2luZyAtV3N3aXRjaCAtV3RyaWdyYXBocyAtV3VuZGVmIC1XdW5rbm93bi1wcmFnbWFzIC1XdW51c2VkIC1XdW51c2VkLWZ1bmN0aW9uIC1XdW51c2VkLWxhYmVsIC1XdW51c2VkLXBhcmFtZXRlciAtV3VudXNlZC12YWx1ZSAgLVd1bnVzZWQtdmFyaWFibGUgLVd2YXJpYWRpYy1tYWNyb3MgLVd2b2xhdGlsZS1yZWdpc3Rlci12YXIgLVd3cml0ZS1zdHJpbmdzIC1XbmVzdGVkLWV4dGVybnMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV3BvaW50ZXItc2lnbiIKLStXQVJOX0ZMQUdTPSItV2FsbCAtVyAtV3NoYWRvdyAtV29sZC1zdHlsZS1kZWZpbml0aW9uIC1XcG9pbnRlci1hcml0aCAtV3VuZGVmIC1XZXh0cmEgLVdhZGRyZXNzIC1XYXR0cmlidXRlcyAtV2Nhc3QtYWxpZ24gLVdjaGFyLXN1YnNjcmlwdHMgLVdjb21tZW50IC1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVdkaXNhYmxlZC1vcHRpbWl6YXRpb24gLVdkaXYtYnktemVybyAtV2VtcHR5LWJvZHkgLVdlbmRpZi1sYWJlbHMgLVdmbG9hdC1lcXVhbCAtV2Zvcm1hdC1leHRyYS1hcmdzIC1XZm9ybWF0LXNlY3VyaXR5IC1XZm9ybWF0LXkyayAtV2ltcGxpY2l0IC1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVdpbXBsaWNpdC1pbnQgLVdpbml0LXNlbGYgLVdpbnQtdG8tcG9pbnRlci1jYXN0IC1XaW52YWxpZC1wY2ggLVdtYWluIC1XbWlzc2luZy1icmFjZXMgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21pc3Npbmctbm9yZXR1cm4gLVdtdWx0aWNoYXIgLVdub25udWxsIC1Xb3ZlcmZsb3cgLVdwYXJlbnRoZXNlcyAtV3BvaW50ZXItYXJpdGggLVdwb2ludGVyLXRvLWludC1jYXN0IC1XcmV0dXJuLXR5cGUgLVdzZXF1ZW5jZS1wb2ludCAtV3NoYWRvdyAtV3NpZ24tY29tcGFyZSAtV3N0cmljdC1hbGlhc2luZyAtV3N3aXRjaCAtV3RyaWdyYXBocyAtV3VuZGVmIC1XdW5rbm93bi1wcmFnbWFzIC1XdW51c2VkIC1XdW51c2VkLWZ1bmN0aW9uIC1XdW51c2VkLWxhYmVsIC1XdW51c2VkLXBhcmFtZXRlciAtV3VudXNlZC12YWx1ZSAgLVd1bnVzZWQtdmFyaWFibGUgLVduby11bnVzZWQtcmVzdWx0IC1XdmFyaWFkaWMtbWFjcm9zIC1Xdm9sYXRpbGUtcmVnaXN0ZXItdmFyIC1Xd3JpdGUtc3RyaW5ncyAtV25lc3RlZC1leHRlcm5zIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdwb2ludGVyLXNpZ24iCi0gSE9TVF9DRkxBR1M9IiRIT1NUX0NGTEFHUyAkV0FSTl9GTEFHUyIKLSBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAkV0FSTl9GTEFHUyAtZyAtV3JlZHVuZGFudC1kZWNscyAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIgotIFRBUkdFVF9DQ0FTRkxBR1M9IiRUQVJHRVRfQ0NBU0ZMQUdTIC1nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1maXgtaW5pdHJkLXNpemUtYnVnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1maXgtaW5pdHJkLXNpemUtYnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTE0ZjQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItZml4LWluaXRyZC1zaXplLWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gOGZiYjE1MGE1Njk2NmVkZGU0ZGMwN2I4ZDAxYmU1ZWIxNDliNjVhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENvbGluIFdhdHNvbiA8Y2p3YXRzb25AdWJ1bnR1LmNvbT4KLURhdGU6IFN1biwgMjAgSmFuIDIwMTMgMjM6MDM6MzUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdICogZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgKGdydWJfY21kX2luaXRyZCk6IERvbid0Ci0gYWRkIHRoZSBpbml0cmQgc2l6ZSB0byBhZGRyX21pbiwgc2luY2UgdGhlIGluaXRyZCB3aWxsIGJlIGFsbG9jYXRlZCBhZnRlcgotIHRoaXMgYWRkcmVzcy4KLQotY29tbWl0IDZhMGRlYmJkOTE2N2U4Zjc5Y2RlZjU0OTdhNzNkMjNlNTgwYzBjZDQgdXBzdHJlYW0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBTaGFuIEhhaSA8c2hhbi5oYWlAd2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKysKLSBncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYyB8IDMgKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IGMyZjQyZDUuLjQwY2I1MDggMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxMy0wMS0yMCAgQ29saW4gV2F0c29uICA8Y2p3YXRzb25AdWJ1bnR1LmNvbT4KLSsKLSsJKiBncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYyAoZ3J1Yl9jbWRfaW5pdHJkKTogRG9uJ3QgYWRkIHRoZQotKwlpbml0cmQgc2l6ZSB0byBhZGRyX21pbiwgc2luY2UgdGhlIGluaXRyZCB3aWxsIGJlIGFsbG9jYXRlZCBhZnRlcgotKwl0aGlzIGFkZHJlc3MuCi0rCi0gMjAxMi0wNy0wMiAgVmxhZGltaXIgU2VyYmluZW5rbyAgPHBoY29kZXJAZ21haWwuY29tPgotIAotIAkqIGdydWItY29yZS9uZXQvdGZ0cC5jIChhY2spOiBGaXggZW5kaWFubmVzcyBwcm9ibGVtLgotZGlmZiAtLWdpdCBhL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jIGIvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLWluZGV4IDYyMDg3Y2YuLmUyNDI1YzggMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotKysrIGIvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLUBAIC0xMDk4LDggKzEwOTgsNyBAQCBncnViX2NtZF9pbml0cmQgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gICAgICB3b3JzZSB0aGFuIHRoYXQgb2YgTGludXggMi4zLnh4LCBzbyBhdm9pZCB0aGUgbGFzdCA2NGtiLiAgKi8KLSAgIGFkZHJfbWF4IC09IDB4MTAwMDA7Ci0gCi0tICBhZGRyX21pbiA9IChncnViX2FkZHJfdCkgcHJvdF9tb2RlX3RhcmdldCArIHByb3RfaW5pdF9zcGFjZQotLSAgICAgICAgICAgICArIHBhZ2VfYWxpZ24gKHNpemUpOwotKyAgYWRkcl9taW4gPSAoZ3J1Yl9hZGRyX3QpIHByb3RfbW9kZV90YXJnZXQgKyBwcm90X2luaXRfc3BhY2U7Ci0gCi0gICAvKiBQdXQgdGhlIGluaXRyZCBhcyBoaWdoIGFzIHBvc3NpYmxlLCA0S2lCIGFsaWduZWQuICAqLwotICAgYWRkciA9IChhZGRyX21heCAtIHNpemUpICYgfjB4RkZGOwotLS0gCi0xLjguNS4yLjIzMy5nOTMyZjdlNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLXJlbW92ZS1zcGFyYzY0LXNldHVwLWZyb20teDg2LWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTY4ZDNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBncnViMjogcmVtb3ZlIGdydWItc3BhcmM2NC1zZXR1cCBmcm9tIHg4NiBidWlsZHMKLQotKiByZW1vdmUgdGhlIGdydWItc3BhcmM2NC1zZXR1cCBmaWxlcyBmcm9tIHRoZSB4ODYgYnVpbGRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLnV0aWwuZGVmIHwgMTggLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudXRpbC5kZWYgYi9NYWtlZmlsZS51dGlsLmRlZgotaW5kZXggYjgwMTg3Yy4uYTY3MGNmMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnV0aWwuZGVmCi0rKysgYi9NYWtlZmlsZS51dGlsLmRlZgotQEAgLTMyMSwyNCArMzIxLDYgQEAgcHJvZ3JhbSA9IHsKLSB9OwotIAotIHByb2dyYW0gPSB7Ci0tICBuYW1lID0gZ3J1Yi1zcGFyYzY0LXNldHVwOwotLSAgaW5zdGFsbGRpciA9IHNiaW47Ci0tICBtYW5zZWN0aW9uID0gODsKLS0gIGNvbW1vbiA9IHV0aWwvZ3J1Yi1zZXR1cC5jOwotLSAgY29tbW9uID0gdXRpbC9sdm0uYzsKLS0gIGNvbW1vbiA9IGdydWItY29yZS9rZXJuL2VtdS9hcmdwX2NvbW1vbi5jOwotLSAgY29tbW9uID0gZ3J1Yi1jb3JlL2xpYi9yZWVkX3NvbG9tb24uYzsKLS0gIGNvbW1vbiA9IHV0aWwvaWVlZTEyNzUvb2ZwYXRoLmM7Ci0tCi0tICBsZGFkZCA9IGxpYmdydWJtb2RzLmE7Ci0tICBsZGFkZCA9IGxpYmdydWJrZXJuLmE7Ci0tICBsZGFkZCA9IGxpYmdydWJnY3J5LmE7Ci0tICBsZGFkZCA9IGdydWItY29yZS9nbnVsaWIvbGliZ251LmE7Ci0tICBsZGFkZCA9ICckKExJQklOVEwpICQoTElCREVWTUFQUEVSKSAkKExJQlVUSUwpICQoTElCWkZTKSAkKExJQk5WUEFJUikgJChMSUJHRU9NKSc7Ci0tICBjcHBmbGFncyA9ICctREdSVUJfU0VUVVBfU1BBUkM2ND0xJzsKLS19OwotLQotLXByb2dyYW0gPSB7Ci0gICBuYW1lID0gZ3J1Yi1vZnBhdGhuYW1lOwotICAgaW5zdGFsbGRpciA9IHNiaW47Ci0gICBtYW5zZWN0aW9uID0gODsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9yZW1vdmUtZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvcmVtb3ZlLWdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2M2Y3ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9yZW1vdmUtZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLUlTTyBDMTEgcmVtb3ZlcyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBnZXRzKCkgZnJvbSB0aGUgQyBsYW5ndWFnZSwgZWdsaWJjIDIuMTYrIHJlbW92ZWQgaXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ3J1Yi0xLjk5L2dydWItY29yZS9nbnVsaWIvc3RkaW8uaW4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMS45OS5vcmlnL2dydWItY29yZS9nbnVsaWIvc3RkaW8uaW4uaAkyMDEwLTEyLTAxIDA2OjQ1OjQzLjAwMDAwMDAwMCAtMDgwMAotKysrIGdydWItMS45OS9ncnViLWNvcmUvZ251bGliL3N0ZGlvLmluLmgJMjAxMi0wNy0wNCAxMjoyNTowMi4wNTcwOTkxMDcgLTA3MDAKLUBAIC0xNDAsOCArMTQwLDEwIEBACi0gLyogSXQgaXMgdmVyeSByYXJlIHRoYXQgdGhlIGRldmVsb3BlciBldmVyIGhhcyBmdWxsIGNvbnRyb2wgb2Ygc3RkaW4sCi0gICAgc28gYW55IHVzZSBvZiBnZXRzIHdhcnJhbnRzIGFuIHVuY29uZGl0aW9uYWwgd2FybmluZy4gIEFzc3VtZSBpdCBpcwotICAgIGFsd2F5cyBkZWNsYXJlZCwgc2luY2UgaXQgaXMgcmVxdWlyZWQgYnkgQzg5LiAgKi8KLSsjaWYgZGVmaW5lZCBnZXRzCi0gI3VuZGVmIGdldHMKLSBfR0xfV0FSTl9PTl9VU0UgKGdldHMsICJnZXRzIGlzIGEgc2VjdXJpdHkgaG9sZSAtIHVzZSBmZ2V0cyBpbnN0ZWFkIik7Ci0rI2VuZGlmCi0gCi0gI2lmIEBHTlVMSUJfRk9QRU5ACi0gIyBpZiBAUkVQTEFDRV9GT1BFTkAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyZjFkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1yZXF1aXJlIGdydWIyLmluYwotCi1ERVBFTkRTX2NsYXNzLXRhcmdldCA9ICJncnViLWVmaS1uYXRpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgotUFIgPSAicjMiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9jZmcgXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dydWItJHtQVn0iCi0KLSMgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgYXJjaCBmb3IgdGhlIGdydWIgbW9kdWxlcwotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpbXBvcnQgcmUKLSAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQotICAgIGlmIHRhcmdldCA9PSAieDg2XzY0IjoKLSAgICAgICAgZ3J1YnRhcmdldCA9ICd4ODZfNjQnCi0gICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290eDY0LmVmaSIKLSAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JywgdGFyZ2V0KToKLSAgICAgICAgZ3J1YnRhcmdldCA9ICdpMzg2JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdGlhMzIuZWZpIgotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQotICAgIGQuc2V0VmFyKCJHUlVCX1RBUkdFVCIsIGdydWJ0YXJnZXQpCi0gICAgZC5zZXRWYXIoIkdSVUJfSU1BR0UiLCBncnViaW1hZ2UpCi19Ci0KLWluaGVyaXQgZGVwbG95Ci0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0hFTFAyTUFOPSIKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGxhdGZvcm09ZWZpIC0tZGlzYWJsZS1ncnViLW1rZm9udCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtZWZpZW11PW5vIC0tcHJvZ3JhbS1wcmVmaXg9JycgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYmx6bWE9bm8gLS1lbmFibGUtZGV2aWNlLW1hcHBlcj1ubyAtLWVuYWJsZS1saWJ6ZnM9bm8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCi0iCi0KLSMgbGRtLmM6MTE0Ojc6IGVycm9yOiB0cmFtcG9saW5lIGdlbmVyYXRlZCBmb3IgbmVzdGVkIGZ1bmN0aW9uICdob29rJyBbLVdlcnJvcj10cmFtcG9saW5lc10KLSMgYW5kIG1hbnkgb3RoZXIgcGxhY2VzIGluIHRoZSBncnViIGNvZGUgd2hlbiBjb21waWxlZCB3aXRoIHNvbWUgbmF0aXZlIGdjYyBjb21waWxlcnMgKHNwZWNpZmljYWxseSwgZ2VudG9vKQotQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1Xbm8tZXJyb3I9dHJhbXBvbGluZXMiCi0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gNzU1IGdydWItbWtpbWFnZSAke0R9JHtiaW5kaXJ9Ci19Ci0KLUdSVUJfQlVJTERJTiA/PSAiYm9vdCBsaW51eCBleHQyIGZhdCBzZXJpYWwgcGFydF9tc2RvcyBwYXJ0X2dwdCBub3JtYWwgZWZpX2dvcCBpc285NjYwIHNlYXJjaCIKLQotZG9fZGVwbG95KCkgewotCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCi0JIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKLQlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAotCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRX0gXAotCSAgICAgICAgICAgICAgICR7R1JVQl9CVUlMRElOfQotCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KLX0KLQotZG9fZGVwbG95X2NsYXNzLW5hdGl2ZSgpIHsKLQk6Ci19Ci0KLWFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2luc3RhbGwgYmVmb3JlIGRvX2J1aWxkCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3J1Yi8ke0dSVUJfVEFSR0VUfS1lZmkgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCi0gICAgICAgICAgICAgICAgIgotCi0jIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIHRoZSBib290bG9hZGVyIHdpdGggYW4geDMyIHVzZXJsYW5kCi1JTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOGRhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKQEAgLTAsMCArMSw4MiBAQAorcmVxdWlyZSBncnViMi5pbmMKKworR1JVQlBMQVRGT1JNID0gImVmaSIKKworREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBncnViLWVmaS1uYXRpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vY2ZnIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9ncnViLSR7UFZ9IgorCisjIERldGVybWluZSB0aGUgdGFyZ2V0IGFyY2ggZm9yIHRoZSBncnViIG1vZHVsZXMKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKKyAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6CisgICAgICAgIGdydWJ0YXJnZXQgPSAneDg2XzY0JworICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCisgICAgZWxpZiByZS5tYXRjaCgnaS44NicsIHRhcmdldCk6CisgICAgICAgIGdydWJ0YXJnZXQgPSAnaTM4NicKKyAgICAgICAgZ3J1YmltYWdlID0gImdydWItZWZpLWJvb3RpYTMyLmVmaSIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiZ3J1Yi1lZmkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGFyZ2V0ICVzIiAlIHRhcmdldCkKKyAgICBkLnNldFZhcigiR1JVQl9UQVJHRVQiLCBncnVidGFyZ2V0KQorICAgIGQuc2V0VmFyKCJHUlVCX0lNQUdFIiwgZ3J1YmltYWdlKQorfQorCitpbmhlcml0IGRlcGxveQorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9IRUxQMk1BTj0iCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWVmaWVtdT1ubyIKKworIyBsZG0uYzoxMTQ6NzogZXJyb3I6IHRyYW1wb2xpbmUgZ2VuZXJhdGVkIGZvciBuZXN0ZWQgZnVuY3Rpb24gJ2hvb2snIFstV2Vycm9yPXRyYW1wb2xpbmVzXQorIyBhbmQgbWFueSBvdGhlciBwbGFjZXMgaW4gdGhlIGdydWIgY29kZSB3aGVuIGNvbXBpbGVkIHdpdGggc29tZSBuYXRpdmUgZ2NjIGNvbXBpbGVycyAoc3BlY2lmaWNhbGx5LCBnZW50b28pCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVduby1lcnJvcj10cmFtcG9saW5lcyIKKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgZ3J1Yi1ta2ltYWdlICR7RH0ke2JpbmRpcn0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorICAgIGZpbmQgIiR7RH0iIC1uYW1lIG1vZGluZm8uc2ggLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAge30gKworfQorCitHUlVCX0JVSUxESU4gPz0gImJvb3QgbGludXggZXh0MiBmYXQgc2VyaWFsIHBhcnRfbXNkb3MgcGFydF9ncHQgbm9ybWFsIFwKKyAgICAgICAgICAgICAgICAgZWZpX2dvcCBpc285NjYwIHNlYXJjaCBsb2FkZW52IHRlc3QiCisKK2RvX2RlcGxveSgpIHsKKwkjIFNlYXJjaCBmb3IgdGhlIGdydWIuY2ZnIG9uIHRoZSBsb2NhbCBib290IG1lZGlhIGJ5IHVzaW5nIHRoZQorCSMgYnVpbHQgaW4gY2ZnIGZpbGUgcHJvdmlkZWQgdmlhIHRoaXMgcmVjaXBlCisJZ3J1Yi1ta2ltYWdlIC1jIC4uL2NmZyAtcCAvRUZJL0JPT1QgLWQgLi9ncnViLWNvcmUvIFwKKwkgICAgICAgICAgICAgICAtTyAke0dSVUJfVEFSR0VUfS1lZmkgLW8gLi8ke0dSVUJfSU1BR0V9IFwKKwkgICAgICAgICAgICAgICAke0dSVUJfQlVJTERJTn0KKwlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRX0gJHtERVBMT1lESVJ9Cit9CisKK2RvX2RlcGxveV9jbGFzcy1uYXRpdmUoKSB7CisJOgorfQorCithZGR0YXNrIGRlcGxveSBhZnRlciBkb19pbnN0YWxsIGJlZm9yZSBkb19idWlsZAorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dydWIvJHtHUlVCX1RBUkdFVH0tZWZpIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dydWIgXAorICAgICAgICAgICAgICAgICIKKworIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciB0aGUgYm9vdGxvYWRlciB3aXRoIGFuIHgzMiB1c2VybGFuZAorSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59LWRiZ19hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgorSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX2xpbnV4LW11c2x4MzIgPSAiIGFyY2giCitJTlNBTkVfU0tJUF8ke1BOfS1kYmdfYXBwZW5kX2xpbnV4LW11c2x4MzIgPSAiIGFyY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCBhOTNjOTllLi4yOGY5NmJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMTEsNDYgKzExLDQwIEBACiBMSUNFTlNFID0gIkdQTHYzIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmdudS5vcmcvZ251L2dydWIvZ3J1Yi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLWxpYmx6bWEtaXMtZGlzYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWlzc3VlLXdpdGgtZmxleC0yLjUuMzcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi0yLjAwLWFkZC1vZS1rZXJuZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi1pbnN0YWxsLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1lbmRpYW5uZXNzLXByb2JsZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi1uby11bnVzZWQtcmVzdWx0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItZWZpLWFsbG93LWEtY29tcGlsYXRpb24td2l0aG91dC1tY21vZGVsLWxhcmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItZWZpLWZpeC13aXRoLWdsaWJjLTIuMjAucGF0Y2ggXAorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9ncnViL2dydWItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXJzZV9kaGNwX3ZlbmRvci1BZGQtbWlzc2luZy1jb25zdC1xdWFsaWZpZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWIyLWZpeC1pbml0cmQtc2l6ZS1idWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtQ1ZFLTIwMTUtODM3MC1HcnViMi11c2VyLXBhc3MtdnVsbmVyYWJpbGl0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1kaXJlY3QtX2xsc2Vlay1jb2RlLWFuZC1yZXF1aXJlLWxvbmctZmlsZXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXRleGluZm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ncnViLWNvcmUtZ2V0dGV4dC1nZXR0ZXh0LmMtbWFpbl9jb250ZXh0LXNlY29uZGFyeV9jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRW5mb3JjZS1uby1waWUtaWYtdGhlLWNvbXBpbGVyLXN1cHBvcnRzLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2dldF9tZW1vcnlfbWFwLU5ldmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWZpbmQtZGV2aWNlLW1hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ0cmZzLWF2b2lkLXVzZWQtdW5pbml0aWFsaXplZC1lcnJvci13aXRoLUdDQzcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1pMzg2LXg4Nl82NC1wcGMtZml4LXN3aXRjaC1mYWxsdGhyb3VnaC1jYXNlcy13aXRoLUdDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWdudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LXJlbWFpbmluZy1jYXNlcy1vZi1nY2MtNy1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoIFwKKwkgICBmaWxlOi8vZml4LmJ1aWxkLndpdGguZ2NjLTcucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjExMTZkMWY2MGM4NDBlNmRiZDY3YWJiYzk5YWNiNDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MGVlMTM2ZmJjZWUwODg1ODUxNmVkNGRlMmFkODcwNjhiZmUxYjZiOGIzNzg5NmNlMzUyOWZmMDU0YTcyNmQiCiAKLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGF1dG9nZW4tbmF0aXZlIgorREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlOTI3NTQwYjZlZGE4YjAyNGZiMDM5MWVlYWE0MDkxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NWIzOWEwNTU4ZjhjODAyMjA5YzU3NGY0ZDAyY2EyNjNhODA0ZThhNTY0YmM2Y2FmMWNkMGZkM2IzY2MxMWUzIgorQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qKS0obGludXguKnxmcmVlYnNkLiopJworQ09NUEFUSUJMRV9IT1NUX2FybXY3YSA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY3dmUgPSAnbnVsbCcKIAotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLShsaW51eHxmcmVlYnNkLiopJworIyBjb25maWd1cmUuYWMgaGFzIGNvZGUgdG8gc2V0IHRoaXMgYXV0b21hZ2ljYWxseSBmcm9tIHRoZSB0YXJnZXQgdHVwbGUKKyMgYnV0IHRoZSBPRSBmcmVlZm9ybSBvbmUgKGNvcmUyLWZvby1iYXItbGludXgpIGRvbid0IHdvcmsgd2l0aCB0aGF0LgorCitHUlVCUExBVEZPUk1fYXJtID0gInVib290IgorR1JVQlBMQVRGT1JNX2FhcmNoNjQgPSAiZWZpIgorR1JVQlBMQVRGT1JNID8/PSAicGMiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwogCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPSR7R1JVQlBMQVRGT1JNfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdydWItbWtmb250IFwKKyAgICAgICAgICAgICAgICAtLXByb2dyYW0tcHJlZml4PSIiIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJsem1hPW5vIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ6ZnM9bm8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCisiCisKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW2dydWItbW91bnRdID0gIi0tZW5hYmxlLWdydWItbW91bnQsLS1kaXNhYmxlLWdydWItbW91bnQsZnVzZSIKIFBBQ0tBR0VDT05GSUdbZGV2aWNlLW1hcHBlcl0gPSAiLS1lbmFibGUtZGV2aWNlLW1hcHBlciwtLWRpc2FibGUtZGV2aWNlLW1hcHBlcixsdm0yIgpAQCAtNzYsMyArNzAsOSBAQAogIyBncnViIGFuZCBncnViLWVmaSdzIHN5c3Jvb3QvJHtkYXRhZGlyfS9ncnViL2dydWItbWtjb25maWdfbGliIGFyZQogIyBjb25mbGljdGVkLCByZW1vdmUgaXQgc2luY2Ugbm8gb25lIHVzZXMgaXQuCiBTWVNST09UX0RJUlNfQkxBQ0tMSVNUICs9ICIke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIiCisKK1BBQ0tBR0VTID0rICIke1BOfS1lZGl0ZW52IgorCitGSUxFU18ke1BOfS1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tZWRpdGVudiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgyOTM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBncnViMi5pbmMKLQotUkRFUEVORFNfJHtQTn0gPSAiZGlmZnV0aWxzIGZyZWV0eXBlIGdydWItZWRpdGVudiIKLVBSID0gInIxIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPXBjIC0tZGlzYWJsZS1ncnViLW1rZm9udCAtLXByb2dyYW0tcHJlZml4PSIiIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJsem1hPW5vIC0tZW5hYmxlLWRldmljZS1tYXBwZXI9bm8gLS1lbmFibGUtbGliemZzPW5vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotIgotCi1QQUNLQUdFUyA9KyAiZ3J1Yi1lZGl0ZW52IgotCi1GSUxFU19ncnViLWVkaXRlbnYgPSAiJHtiaW5kaXJ9L2dydWItZWRpdGVudiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZ3J1Yi5kCi19Ci0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2MWY2YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCkBAIC0wLDAgKzEsMTcgQEAKK3JlcXVpcmUgZ3J1YjIuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorICAgIGZpbmQgIiR7RH0iIC1uYW1lIG1vZGluZm8uc2ggLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAge30gKworfQorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImFyY2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE4MWU1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotcmVxdWlyZSBncnViMi5pbmMKLQotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotREVGQVVMVF9QUkVGRVJFTkNFX2FybSA9ICIxIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9ncnViLWdpdDoiCi0KLVBWID0gIjIuMDArJHtTUkNQVn0iCi1TUkNSRVYgPSAiY2U5NTU0OWNjNTRiNWQ2ZjQ5NDYwOGE3YzM5MGRiYTNhYWI0ZmJhNyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ3J1Yi5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKLUNPTVBBVElCTEVfSE9TVF9hcm12N2EgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12N3ZlID0gJ251bGwnCi0KLSMgY29uZmlndXJlLmFjIGhhcyBjb2RlIHRvIHNldCB0aGlzIGF1dG9tYWdpY2FsbHkgZnJvbSB0aGUgdGFyZ2V0IHR1cGxlCi0jIGJ1dCB0aGUgT0UgZnJlZWZvcm0gb25lIChjb3JlMi1mb28tYmFyLWxpbnV4KSBkb24ndCB3b3JrIHdpdGggdGhhdC4KLQotR1JVQlBMQVRGT1JNX2FybSA9ICJ1Ym9vdCIKLUdSVUJQTEFURk9STV9hYXJjaDY0ID0gImVmaSIKLUdSVUJQTEFURk9STSA/Pz0gInBjIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPSR7R1JVQlBMQVRGT1JNfSAtLWRpc2FibGUtZ3J1Yi1ta2ZvbnQgLS1wcm9ncmFtLXByZWZpeD0iIiBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibHptYT1ubyAtLWVuYWJsZS1kZXZpY2UtbWFwcGVyPW5vIC0tZW5hYmxlLWxpYnpmcz1ubyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZ3J1Yi5kCi0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi0jIGRlYnVnZWRpdCBjaG9rZXMgb24gYmFyZSBtZXRhbCBiaW5hcmllcwotSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ID0gImRpZmZ1dGlscyBmcmVldHlwZSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYwppbmRleCAxNDAzMjFkLi42ZDk4ZTNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYwpAQCAtMSwxNSArMSwxNCBAQAogU1VNTUFSWSA9ICJVc2VyIG1vZGUgaGVscGVycyBmb3IgdGhlIGhvc3RhcCBkcml2ZXIiCiBERVNDUklQVElPTiA9ICJUaGUgaG9zdGFwIGRyaXZlciBzdXBwb3J0cyBIb3N0IEFQIG1vZGUsIGl0IGFsbG93cyBmb3IgSUVFRSA4MDIuMTEgXAogbWFuYWdlbWVudCBmdW5jdGlvbnMgb24gdGhlIGhvc3QgY29tcHV0ZXIgYW5kIGFsbG93cyB0aGUgc3lzdGVtIHRvIGFjdCBhcyBhbiBhY2Nlc3MgcG9pbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2hvc3RhcC5lcGl0ZXN0LmZpIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vaG9zdGFwLmVwaXRlc3QuZmkvYnVnei8iCitIT01FUEFHRSA9ICJodHRwczovL3cxLmZpIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKIAkJCWZpbGU6Ly91dGlsLmM7YmVnaW5saW5lPTE7ZW5kbGluZT05O21kNT1kM2I5MjgwODUxMzAyZTViYTM0ZTVmYjcxNzQ4OWI2ZCIKIFNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgogUFIgPSAicjQiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2hvc3RhcC5lcGl0ZXN0LmZpL3JlbGVhc2VzL2hvc3RhcC11dGlscy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL3cxLmZpL3JlbGVhc2VzL2hvc3RhcC11dGlscy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vaG9zdGFwLWZ3LWxvYWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX3UzMi1fX3MzMi1fX3UxNi1fX3MxNi1fX3U4LWluLXRlcm1zLW9mLWM5OS10LnBhdGNoIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAppbmRleCA2NmM5ZjkxLi41NWVkZmVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCkBAIC0xLDQ2ICsxLDM2IEBACitUaGlzIHBhdGNoOgorKiBlbnN1cmVzIHdlIGxpbmsgY29ycmVjdGx5CisqIGFsbG93cyB1cyB0byBvcHRpb25hbGx5IHBhc3MgdGFyZ2V0IGluZm9ybWF0aW9uIHRvIGNvbmZpZ3VyZSByYXRoZXIgdGhhbiB1c2luZyB1bmFtZQorKiBzZWxlY3QgbGludXggYXMgdGhlIHBsYXRmb3JtIGluIG1vc3QgY2FzZXMgd2UgY2FyZSBhYm91dAorCitUaGlzIGlzIGEgbWVyZ2Ugb2YgdmFyaW91cyB0d2Vha3MgdG8gYWxsb3cgdXMgdG8gYnVpbGQgcGNpdXRpbHMgaW5jbHVkaW5nIAord29yayBmcm9tOgorCis3LzMwLzIwMTAgLSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KKzEvMjIvMjAxMiAtIFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgorSW9udXQgUmFkdSA8aW9udXR4LnJhZHVAaW50ZWwuY29tPgorMjAxNy82LzE1IC0gUlAgLSBDbGVhbnVwcyBhbmQgbWVyZ2luZyBwYXRjaGVzCisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3Lm1uLWxvZ2lzdGlrLmRlL3Vuc3VwcG9ydGVkL3B4YTI1MC9wYXRjaGVyCi0jCi0tLS0KLQotNy8zMC8yMDEwIC0gcmViYXNlZCB0byAzLjEuNSBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KLTEvMjIvMjAxMiAtIHJlYmFzZWQgdG8gMy4xLjkgYnkgU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+Ci0KLWRpZmYgLXIgYWYyYjEwY2MzYzE0IE1ha2VmaWxlCi0tLS0gYS9NYWtlZmlsZQlTdW4gSmFuIDIyIDE4OjM2OjM0IDIwMTIgKzA4MDAKLSsrKyBiL01ha2VmaWxlCVN1biBKYW4gMjIgMTg6Mzg6NTQgMjAxMiArMDgwMAotQEAgLTM3LDcgKzM3LDYgQEAKLSAjIENvbW1hbmRzCi0gSU5TVEFMTD1pbnN0YWxsCi0gRElSSU5TVEFMTD1pbnN0YWxsIC1kCi0tU1RSSVA9LXMKLSBDQz0kKENST1NTX0NPTVBJTEUpZ2NjCi0gQVI9JChDUk9TU19DT01QSUxFKWFyCi0gUkFOTElCPSQoQ1JPU1NfQ09NUElMRSlyYW5saWIKLUBAIC04Niw3ICs4NSw3IEBACitJbmRleDogcGNpdXRpbHMtMy41LjQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwY2l1dGlscy0zLjUuNC5vcmlnL01ha2VmaWxlCisrKysgcGNpdXRpbHMtMy41LjQvTWFrZWZpbGUKK0BAIC05Niw3ICs5NSw3IEBAIGV4YW1wbGU6IGV4YW1wbGUubyBsaWIvJChQQ0lMSUIpCiAgZXhhbXBsZS5vOiBleGFtcGxlLmMgJChQQ0lJTkMpCiAgCiAgJTogJS5vCiAtCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMRExJQlMpIC1vICRACi0rCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMSUJfTERMSUJTKSAtbyAkQAorKwkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgJChMRExJQlMpIC1vICRACiAgCiAgJS44ICUuNzogJS5tYW4KICAJTT1gZWNobyAkKERBVEUpIHwgc2VkICdzLy0wMS0vLUphbnVhcnktLztzLy0wMi0vLUZlYnJ1YXJ5LS87cy8tMDMtLy1NYXJjaC0vO3MvLTA0LS8tQXByaWwtLztzLy0wNS0vLU1heS0vO3MvLTA2LS8tSnVuZS0vO3MvLTA3LS8tSnVseS0vO3MvLTA4LS8tQXVndXN0LS87cy8tMDktLy1TZXB0ZW1iZXItLztzLy0xMC0vLU9jdG9iZXItLztzLy0xMS0vLU5vdmVtYmVyLS87cy8tMTItLy1EZWNlbWJlci0vO3MvXCguKlwpLVwoLipcKS1cKC4qXCkvXDMgXDIgXDEvJ2AgOyBzZWQgPCQ8ID4kQCAicy9AVE9EQVlALyQkTS87cy9AVkVSU0lPTkAvcGNpdXRpbHMtJChWRVJTSU9OKS87cyNASURTRElSQCMkKElEU0RJUikjIgotQEAgLTEwMSw3ICsxMDAsNyBAQAotIGluc3RhbGw6IGFsbAotICMgLWMgaXMgaWdub3JlZCBvbiBMaW51eCwgYnV0IHJlcXVpcmVkIG9uIEZyZWVCU0QKLSAJJChESVJJTlNUQUxMKSAtbSA3NTUgJChERVNURElSKSQoU0JJTkRJUikgJChERVNURElSKSQoSURTRElSKSAkKERFU1RESVIpJChNQU5ESVIpL21hbjggJChERVNURElSKSQoTUFORElSKS9tYW43Ci0tCSQoSU5TVEFMTCkgLWMgLW0gNzU1ICQoU1RSSVApIGxzcGNpIHNldHBjaSAkKERFU1RESVIpJChTQklORElSKQotKwkkKElOU1RBTEwpIC1jIC1tIDc1NSBsc3BjaSBzZXRwY2kgJChERVNURElSKSQoU0JJTkRJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA3NTUgdXBkYXRlLXBjaWlkcyAkKERFU1RESVIpJChTQklORElSKQotIAkkKElOU1RBTEwpIC1jIC1tIDY0NCAkKFBDSV9JRFMpICQoREVTVERJUikkKElEU0RJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA2NDQgbHNwY2kuOCBzZXRwY2kuOCB1cGRhdGUtcGNpaWRzLjggJChERVNURElSKSQoTUFORElSKS9tYW44Ci1kaWZmIC1yIGFmMmIxMGNjM2MxNCBsaWIvY29uZmlndXJlCi0tLS0gYS9saWIvY29uZmlndXJlCVN1biBKYW4gMjIgMTg6MzY6MzQgMjAxMiArMDgwMAotKysrIGIvbGliL2NvbmZpZ3VyZQlTdW4gSmFuIDIyIDE4OjM4OjU0IDIwMTIgKzA4MDAKLUBAIC0xNCw2ICsxNCwxMCBAQAorSW5kZXg6IHBjaXV0aWxzLTMuNS40L2xpYi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwY2l1dGlscy0zLjUuNC5vcmlnL2xpYi9jb25maWd1cmUKKysrKyBwY2l1dGlscy0zLjUuNC9saWIvY29uZmlndXJlCitAQCAtMTQsNiArMTQsMTAgQEAgZWNob19uKCkgewogIAlmaQogIH0KICAKQEAgLTUxLDcgKzQxLDcgQEAKICBpZiBbIC16ICIkVkVSU0lPTiIgLW8gLXogIiRJRFNESVIiIF0gOyB0aGVuCiAgCWVjaG8gPiYyICJQbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgc2NyaXB0IGZyb20gdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSIKICAJZXhpdCAxCi1AQCAtMjEsOCArMjUsOCBAQAorQEAgLTIxLDggKzI1LDggQEAgZmkKICAKICBlY2hvX24gIkNvbmZpZ3VyaW5nIGxpYnBjaSBmb3IgeW91ciBzeXN0ZW0uLi4iCiAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCkBAIC02Miw3ICs1Miw3IEBACiAgCXJlYWxzeXM9IiRzeXMiCiAgCWlmIFsgIiRzeXMiID0gIkFJWCIgLWEgLXggL3Vzci9iaW4vb3NsZXZlbCAtYSAteCAvdXNyL3NiaW4vbHNhdHRyIF0KICAJdGhlbgotQEAgLTMwLDcgKzM0LDcgQEAKK0BAIC0zMCw3ICszNCw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgogIAkJcHJvYz1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFpbGFibGUgLUYgbmFtZSB8IGhlYWQgLTFgCiAgCQljcHU9YC91c3Ivc2Jpbi9sc2F0dHIgLUYgdmFsdWUgLWwgJHByb2MgLWEgdHlwZSB8IHNlZCAncy9fLiovLydgCiAgCWVsc2UKQEAgLTcxLDcgKzYxLDcgQEAKICAJZmkKICAJaWYgWyAiJHN5cyIgPSAiR05VL2tGcmVlQlNEIiAtbyAiJHN5cyIgPSAiRHJhZ29uRmx5IiBdCiAgCXRoZW4KLUBAIC00MCw3ICs0NCw3IEBACitAQCAtNDAsNyArNDQsNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KICAJdGhlbgogIAkJc3lzPWN5Z3dpbgogIAlmaQpAQCAtODAsMjQgKzcwLDExIEBACiAgZmkKICBbIC1uICIkUkVMRUFTRSIgXSAmJiByZWw9IiR7UkVMRUFTRX0iCiAgIyBDQVZFQVQ6IHRyIG9uIFNvbGFyaXMgaXMgYSBiaXQgd2VpcmQgYW5kIHRoZSBleHRyYSBbXSBpcyBvdGhlcndpc2UgaGFybWxlc3MuCi1AQCAtNDksNiArNTMsMjEgQEAKK0BAIC00OSw2ICs1Myw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14KICBzeXM9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAogIGVjaG8gIiAkaG9zdCAkcmVsICRjcHUgJHN5cyIKICAKLStpZiBbICIkaG9zdCIgPSAibGludXgtLWdudWVhYmkiIF0KLSt0aGVuCi0rCXN5cz1saW51eAotK2ZpCi0rCi0raWYgWyAiJGhvc3QiID0gImxpbnV4LS11Y2xpYmMiIF0KLSt0aGVuCi0rCXN5cz1saW51eAotK2ZpCi0rCi0raWYgWyAiJGhvc3QiID0gImxpbnV4LS11Y2xpYmNlYWJpIiBdCi0rdGhlbgotKwlzeXM9bGludXgKLStmaQorK3sgZWNobyAiJGhvc3QiIHwgZ3JlcCBsaW51eDsgfSAmJiBzeXM9bGludXgKICsKICBjPWNvbmZpZy5oCiAgbT1jb25maWcubWsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2d1ZXNzLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2d1ZXNzLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwYjRhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9ndWVzcy1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi10aGUgb3JpZ2luYWwgZ3Vlc3MgYWxnb3JpdGhtIGlzIGJyb2tlbiBmb3IgbWFueSBhcmNocwotZm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIHdvdWxkIGJyZWFrOgotCWFybS1saW51eC1nbnVlYWJpICAtLT4gc3lzPWdudWVhYmkKLQl4ODZfNjQtdW5rbm93bi1wYy1saW51eC1nbnUgIC0tPiBzeXMgPSBwYy1saW51eC1nbnUKLQotdXNlIGEgc2ltcGxlciBzY2hlbWUgaGVyZSBhbmQgaG9wZSBpdCB3b3JrcyBmb3IgYWxsIHRoZSBjYXNlcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotNy8zMC8yMDEwIC0gY3JlYXRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xpYi9jb25maWd1cmUgYi9saWIvY29uZmlndXJlCi1pbmRleCA0MzE4YjA1Li44NGY2YWNiIDEwMDc1NQotLS0tIGEvbGliL2NvbmZpZ3VyZQotKysrIGIvbGliL2NvbmZpZ3VyZQotQEAgLTUzLDIwICs1Myw3IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCi0gc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCi0gCi0taWYgWyAiJGhvc3QiID0gImxpbnV4LS1nbnVlYWJpIiBdCi0tdGhlbgotLQlzeXM9bGludXgKLS1maQotLQotLWlmIFsgIiRob3N0IiA9ICJsaW51eC0tdWNsaWJjIiBdCi0tdGhlbgotLQlzeXM9bGludXgKLS1maQotLQotLWlmIFsgIiRob3N0IiA9ICJsaW51eC0tdWNsaWJjZWFiaSIgXQotLXRoZW4KLS0Jc3lzPWxpbnV4Ci0tZmkKLSt7IGVjaG8gIiRob3N0IiB8IGdyZXAgbGludXg7IH0gJiYgc3lzPWxpbnV4Ci0gCi0gYz1jb25maWcuaAotIG09Y29uZmlnLm1rCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL21ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2ZiYzZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL21ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBJb251dCBSYWR1IDxpb251dHgucmFkdUBpbnRlbC5jb20+Ci0KLUluZGV4OiBwY2l1dGlscy0zLjIuMC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBjaXV0aWxzLTMuMi4wLm9yaWcvTWFrZWZpbGUKLSsrKyBwY2l1dGlscy0zLjIuMC9NYWtlZmlsZQotQEAgLTM1LDcgKzM1LDcgQEAgU0hBUkVESVI9JChQUkVGSVgpL3NoYXJlCi0gSURTRElSPSQoU0hBUkVESVIpCi0gTUFORElSOj0kKHNoZWxsIGlmIFsgLWQgJChQUkVGSVgpL3NoYXJlL21hbiBdIDsgdGhlbiBlY2hvICQoUFJFRklYKS9zaGFyZS9tYW4gOyBlbHNlIGVjaG8gJChQUkVGSVgpL21hbiA7IGZpKQotIElOQ0RJUj0kKFBSRUZJWCkvaW5jbHVkZQotLUxJQkRJUj0kKFBSRUZJWCkvbGliCi0rTElCRElSPSQobGliZGlyKQotIFBLR0NGRElSPSQoTElCRElSKS9wa2djb25maWcKLSAKLSAjIENvbW1hbmRzCi1AQCAtOTQsNyArOTQsNyBAQCBleGFtcGxlOiBleGFtcGxlLm8gbGliLyQoUENJTElCX0RFVikKLSBleGFtcGxlLm86IGV4YW1wbGUuYyAkKFBDSUlOQykKLSAKLSAlOiAlLm8KLS0JJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExJQl9MRExJQlMpIC1vICRACi0rCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMSUJfTERMSUJTKSAkKExETElCUykgLW8gJEAKLSAKLSAlLjggJS43OiAlLm1hbgotIAlNPWBlY2hvICQoREFURSkgfCBzZWQgJ3MvLTAxLS8tSmFudWFyeS0vO3MvLTAyLS8tRmVicnVhcnktLztzLy0wMy0vLU1hcmNoLS87cy8tMDQtLy1BcHJpbC0vO3MvLTA1LS8tTWF5LS87cy8tMDYtLy1KdW5lLS87cy8tMDctLy1KdWx5LS87cy8tMDgtLy1BdWd1c3QtLztzLy0wOS0vLVNlcHRlbWJlci0vO3MvLTEwLS8tT2N0b2Jlci0vO3MvLTExLS8tTm92ZW1iZXItLztzLy0xMi0vLURlY2VtYmVyLS87cy9cKC4qXCktXCguKlwpLVwoLipcKS9cMyBcMiBcMS8nYCA7IHNlZCA8JDwgPiRAICJzL0BUT0RBWUAvJCRNLztzL0BWRVJTSU9OQC9wY2l1dGlscy0kKFZFUlNJT04pLztzI0BJRFNESVJAIyQoSURTRElSKSMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTcyOTdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ndWVzcy1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmY1YjA2OGJkOWY3NTEyZThjNjhiMDYwYjI1YTFiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTk5MTQxYTlmNDA1MjhkMGEwMDM1NjY1YTA2ZGMzN2RkYjFhZTM0MTY1OGU1MWI1MGE3NmVjZjg2MjM1ZWZjIgotCi1pbmhlcml0IG11bHRpbGliX2hlYWRlcgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0Ci1IT1NUW3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKLQotCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCi1GSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKLUZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCi1TVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgotREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDUxZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjUuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCit0byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCitIT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAiemxpYiBrbW9kIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjIzOGQ5OTY5Y2MwZGU4YjkxMDVkOTcyMDA3ZDlkNTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkNjJmOGZhMTkyZjkwZTYxYzM1YTZmYzE1ZmYzY2I5YTdhNzkyZjc4MjQwN2FjYzQyZWY2NzgxN2M1OTM5ZjUiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCisKK1BDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgorCisjIHNlZSBjb25maWd1cmUucGF0Y2gKK2RvX2NvbmZpZ3VyZSAoKSB7CisJKAorCSAgY2QgbGliICYmIFwKKwkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCisJICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKKwkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQorCSkKK30KKworZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCitleHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgorZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCitleHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKKworIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0CitIT1NUW3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCisKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKKworCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCitGSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKK0ZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCitTVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgorREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L2ZpbGVzLzAwMDEtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9maWxlcy8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjOTJkYjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L2ZpbGVzLzAwMDEtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYTM0ODJjOTE2NDJjZjU2OGIzYWMyN2ZhNmMwY2IzYzZiMzA2NjliNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6MzI6MTQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xOV0gdXNlIGxuciB3cmFwcGVyIGluc3RlYWQgb2YgbG9va2luZyBmb3IgLS1yZWxhdGl2ZQotIG9wdGlvbiBmb3IgbG4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCAyIC0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL01ha2VmaWxlLmFtCi0rKysgZ2l0L01ha2VmaWxlLmFtCi1AQCAtMzIwLDcgKzMyMCw3IEBAIGRlZmluZSBpbnN0YWxsLXJlbGF0aXZlLWFsaWFzZXMKLSAJd2hpbGUgWyAtbiAiJCQxIiBdOyBkbyBcCi0gCQkkKE1LRElSX1ApIGBkaXJuYW1lICQoREVTVERJUikkJGRpci8kJDJgICYmIFwKLSAJCXJtIC1mICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotLQkJJChMTl9TKSAtLXJlbGF0aXZlICQoREVTVERJUikkJDEgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0rCQlsbnIgJChERVNURElSKSQkMSAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLSAJCXNoaWZ0IDIgfHwgZXhpdCAkJD87IFwKLSAJZG9uZQotIGVuZGVmCi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdpdC9jb25maWd1cmUuYWMKLUBAIC0xMTAsOCArMTEwLDYgQEAgQUNfUEFUSF9QUk9HKFtTVUxPR0lOXSwgW3N1bG9naW5dLCBbL3VzcgotIEFDX1BBVEhfUFJPRyhbTU9VTlRfUEFUSF0sIFttb3VudF0sIFsvdXNyL2Jpbi9tb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQotIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQotIAotLUFTX0lGKFshIGxuIC0tcmVsYXRpdmUgLS1oZWxwID4gL2Rldi9udWxsIDI+JjFdLCBbQUNfTVNHX0VSUk9SKFsqKiogbG4gZG9lc24ndCBzdXBwb3J0IC0tcmVsYXRpdmUgKioqXSldKQotLQotIE00X0RFRklORVM9Ci0gCi0gQUNfQ0hFQ0tfVE9PTChPQkpDT1BZLCBvYmpjb3B5KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L3N5c3RlbWQtYm9vdF8yMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3Qvc3lzdGVtZC1ib290XzIzMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ3MWNlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3Qvc3lzdGVtZC1ib290XzIzMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci1pbmhlcml0IGRlcGxveQotCi0jIE1hbiBwYWdlcyBhcmUgcGFja2FnZWQgdGhyb3VnaCB0aGUgbWFpbiBzeXN0ZW1kIHJlY2lwZQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1nbnVlZmkgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKLSAgICAgICAgICAgICAgICIKLQotIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKLQotZG9fY29tcGlsZSgpIHsKLQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKLQlmaQotCi0Jb2VfcnVubWFrZSBzeXN0ZW1kLWJvb3Qke1NZU1RFTURfQk9PVF9FRklfQVJDSH0uZWZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBCeXBhc3Mgc3lzdGVtZCBpbnN0YWxsYXRpb24gd2l0aCBhIE5PUAotCToKLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Ci19Ci1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxOTUzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorTmlvcyBJSSBmb3IgTUFYMTAgMTBtNTAgYm9hcmQgcmVxdWlyZXMgdXBkYXRlIHRvIAoraXRzIGRldmljZSB0cmVlIHRvIGVuYWJsZSBDUFUgZHJpdmVyIGR1cmluZwordS1ib290IHByZS1yZWxvY2F0aW9uLiBUaGlzIHBhdGNoIHRhZyB0aGUgQ1BVIAord2l0aCBkbS1wcmUtcmVsb2MgZmxhZy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogR2FuLCBZYXUgV2FpIDx5YXUud2FpLmdhbkBpbnRlbC5jb20+CisKKy0tLQorIGFyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzIGIvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCitpbmRleCAwNWVhYzMwLi40NjFhZTY4IDEwMDY0NAorLS0tIGEvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCisrKysgYi9hcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMKK0BAIC0xOSw2ICsxOSw3IEBACisgCQkjc2l6ZS1jZWxscyA9IDwwPjsKKyAKKyAJCWNwdTogY3B1QDAgeworKwkJCXUtYm9vdCxkbS1wcmUtcmVsb2M7CisgCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKyAJCQljb21wYXRpYmxlID0gImFsdHIsbmlvczItMS4xIjsKKyAJCQlyZWcgPSA8MHgwMDAwMDAwMD47CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWE1MmI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK0VuYWJsZWQgZGhjcCBjbGllbnQgZnVuY3Rpb25hbGl0eSBmb3IgWW9jdG8gcmVmZXJlbmNlCitoYXJkd2FyZSBNUEM4MzE1RS1SREIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKK2luZGV4IDRlMmI3MDUuLmIwMmFiMWYgMTAwNjQ0CistLS0gYS9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworKysrIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKK0BAIC05LDYgKzksNyBAQCBDT05GSUdfSFVTSF9QQVJTRVI9eQorIENPTkZJR19DTURfSTJDPXkKKyBDT05GSUdfQ01EX1VTQj15CisgIyBDT05GSUdfQ01EX1NFVEVYUFIgaXMgbm90IHNldAorK0NPTkZJR19DTURfREhDUD15CisgQ09ORklHX0NNRF9NSUk9eQorIENPTkZJR19DTURfUElORz15CisgQ09ORklHX0NNRF9FWFQyPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9kZWZhdWx0LWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9kZWZhdWx0LWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQxODRkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvZGVmYXVsdC1nY2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1PRSBuZWVkcyB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBjb21waWxlci4gSWYgd2UgcGFzcyBpbiBIT1NUQ0MKLXRocm91Z2ggdGhlIG1ha2UgY29tbWFuZCwgaXQgb3ZlcndyaXRlcyBub3Qgb25seSB0aGlzIHNldHRpbmcgYnV0IGFsc28gdGhlIAotc2V0dGluZyBpbiB0b29scy9NYWtlZmlsZSB3cmFwcGVkIGluIGlmbmVxICgkKENST1NTX0JVSUxEX1RPT0xTKSwpIHdoaWNoIAotYnJlYWtzIHRoZSBidWlsZC4KLQotV2UgdGhlcmVmb3JlIHVzZSBvdmVycmlkZSB0byBlbnN1cmUgdGhlIHZhbHVlIG9mIEhPU1RDQyBpcyBvdmVyd3JpdHRlbiB3aGVuCi1uZWVkZWQuCi0KLVJQOiBVcGRhdGVkIHRoZSBwYXRjaCB0byB0aGUgdmVyc2lvbiBiZWluZyBzdWJtaXR0ZWQgdG8gdXBzdHJlYW0gdS1ib290Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtlbWFpbGVkIHRvIE1hc2FoaXJvIFlhbWFkYSBmb3IgZGlzY3Vzc2lvbl0KLVJQIDIwMTcvMy8xMQotCi1JbmRleDogZ2l0L3Rvb2xzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdG9vbHMvTWFrZWZpbGUKLSsrKyBnaXQvdG9vbHMvTWFrZWZpbGUKLUBAIC0yNjIsNyArMjYyLDcgQEAgJChMSUNFTlNFX0gpOiAkKG9iaikvYmluMmhlYWRlciAkKHNyY3RyZQotIHN1YmRpci0gKz0gZW52Ci0gCi0gaWZuZXEgKCQoQ1JPU1NfQlVJTERfVE9PTFMpLCkKLS1IT1NUQ0MgPSAkKENDKQotK292ZXJyaWRlIEhPU1RDQyA9ICQoQ0MpCi0gCi0gcXVpZXRfY21kX2Nyb3NzdG9vbHNfc3RyaXAgPSBTVFJJUCAgICReCi0gICAgICAgY21kX2Nyb3NzdG9vbHNfc3RyaXAgPSAkKFNUUklQKSAkXjsgdG91Y2ggJEAKLUluZGV4OiBnaXQvdG9vbHMvZW52L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdG9vbHMvZW52L01ha2VmaWxlCi0rKysgZ2l0L3Rvb2xzL2Vudi9NYWtlZmlsZQotQEAgLTgsNyArOCw3IEBACi0gIyBmd19wcmludGVudiBpcyBzdXBwb3NlZCB0byBydW4gb24gdGhlIHRhcmdldCBzeXN0ZW0sIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZQotICMgYnVpbHQgd2l0aCBjcm9zcyB0b29scy4gQWx0aG91Z2ggaXQgbWF5IGxvb2sgd2VpcmQsIHdlIG9ubHkgcmVwbGFjZSAiSE9TVENDIgotICMgd2l0aCAiQ0MiIGhlcmUgZm9yIHRoZSBtYXhpbXVtIGNvZGUgcmV1c2Ugb2Ygc2NyaXB0cy9NYWtlZmlsZS5ob3N0LgotLUhPU1RDQyA9ICQoQ0MpCi0rb3ZlcnJpZGUgSE9TVENDID0gJChDQykKLSAKLSAjIENvbXBpbGUgZm9yIGEgaG9zdGVkIGVudmlyb25tZW50IG9uIHRoZSB0YXJnZXQKLSBIT1NUX0VYVFJBQ0ZMQUdTICA9ICQocGF0c3Vic3QgLUklLC1pZGlyYWZ0ZXIlLCAkKGZpbHRlciAtSSUsICQoVUJPT1RJTkNMVURFKSkpIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMjRjODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKLVNFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKLVBFID0gIjEiCi0KLSMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKLSMgcmVwbyBkdXJpbmcgcGFyc2UKLVNSQ1JFViA9ICJhNzA1ZWJjODFiN2Y5MWJiZDBlZjdjNjM0Mjg0MjA4MzQyOTAxMTQ5IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjA5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZTUxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjA5LmluYwpAQCAtMCwwICsxLDE3IEBACitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKK1NFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKK1BFID0gIjEiCisKKyMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKKyMgcmVwbyBkdXJpbmcgcGFyc2UKK1NSQ1JFViA9ICJjOThhYzM0ODdlNDEzYzcxZTVkMzYzMjJlZjMzMjRiMjFjNmY2MGY5IgorCitTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAorICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCisgICAgZmlsZTovLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MzE0OTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGVmYXVsdC1nY2MucGF0Y2giCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyIKLURFUEVORFMgPSAibXRkLXV0aWxzIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhbHJlYWR5LXN0cmlwcGVkIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnQVJDSD0ke1RBUkdFVF9BUkNIfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIFY9MScKLQotaW5oZXJpdCB1Ym9vdC1jb25maWcKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSAke1VCT09UX01BQ0hJTkV9Ci0Jb2VfcnVubWFrZSBlbnYKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgotCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Ci19Ci0KLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI4ODdhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyIKK0RFUEVORFMgPSAibXRkLXV0aWxzIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhbHJlYWR5LXN0cmlwcGVkIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnSE9TVENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgVj0xJworCitpbmhlcml0IHVib290LWNvbmZpZworCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlICR7VUJPT1RfTUFDSElORX0KKwlvZV9ydW5tYWtlIGVudnRvb2xzCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3ByaW50ZW52CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19zZXRlbnYKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9lbnYvZndfZW52LmNvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnCit9CisKK2RvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3NzfQorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfcHJpbnRlbnYKKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3NldGVudgorfQorCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiAke2JpbmRpcl9jcm9zc30iCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCitCQkNMQVNTRVhURU5EID0gImNyb3NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5OTllNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXJlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2RlZmF1bHQtZ2NjLnBhdGNoIgotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGltYWdlIGNyZWF0aW9uIHRvb2wiCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKLQotCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKLQkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCi0JIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KLQlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCi0KLQlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZmM1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wOS5iYgpAQCAtMCwwICsxLDI3IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKK0RFUEVORFMgPSAib3BlbnNzbCIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZworCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKKworCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCisJbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKaW5kZXggYWEyMWMwZS4uYzJiY2Y5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKQEAgLTMwNCw0ICszMDQsNCBAQAogICAgIGZpCiB9CiAKLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjA5LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTcuMDEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wOS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCmluZGV4IGZhYTg3NDEuLjc4MTQ0NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKQEAgLTYzLDEwICs2Myw2IEBACiBFWFRSQV9PRUNPTkZfU1lTVklOSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywnLS13aXRoLWRpc3Rybz1kZWJpYW4nLCctLXdpdGgtZGlzdHJvPW5vbmUnLGQpfSIKIEVYVFJBX09FQ09ORl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJyxkKX0iCiAKLQotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saW50bCIKLUxERkxBR1NfYXBwZW5kX3VjbGludXgtdWNsaWJjID0gIiAtbGludGwiCi0KIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgIHNlZCAnczpBTV9DSEVDS19QWU1PRDplY2hvICJubyBweW1vZCIgI0FNX0NIRUNLX1BZTU9EOmcnIC1pICR7U30vY29uZmlndXJlLmFjCiAKQEAgLTExMSw3ICsxMDcsNiBAQAogCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiYXZhaGktZGFlbW9uICg9ICR7RVhURU5EUEtHVn0pIGxpYmF2YWhpLWNvcmUgKD0gJHtFWFRFTkRQS0dWfSkgbGliYXZhaGktY2xpZW50ICg9ICR7RVhURU5EUEtHVn0pIgogCi0jIHVjbGliYyBoYXMgbm8gbnNzCiBSUkVDT01NRU5EU19hdmFoaS1kYWVtb25fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYm5zcy1tZG5zIgogUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYm5zcy1tZG5zIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKaW5kZXggOGNjZWYwOC4uOTQyNjA3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaApAQCAtMSwxNyArMSwxOCBAQAotRnJvbSBhNTlmMTNmYWIzMWE2ZTI1YmIwM2IyYzJiYzNhZWE1NzZmODU3YjZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ZmYyNTVlZmY0ZmVhNjM1MGI1ZTA0NjJmZWUxNzZmYWRjMjZmYzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MzI6NDkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBpbnN0YWxsIEd0a0J1aWxkZXIgaW50ZXJmYWNlIGZpbGVzIGZvciBHVEsrMwogIHRvbwogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9wdWxsLzEzMF0KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhZWJiNzE2Li40OGJkZjYzIDEwMDY0NAoraW5kZXggODdhOWExNy4uOTg2MGRjYyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtOTY1LDcgKzk2NSw3IEBAIEFDX1NVQlNUKGF2YWhpX3NvY2tldCkKQEAgLTI0LDUgKzI1LDUgQEAKICAJQUNfU1VCU1QoaW50ZXJmYWNlc2RpcikKICBmaQogLS0gCi0yLjEuNAorMi44LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoCmluZGV4IDgwNWNiYjMuLjFlMjNjMGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2gKQEAgLTcsMTUgKzcsMTkgQEAKIFVwZGF0ZSBjb250ZXh0IGZvciB2ZXJzaW9uIDkuMTAuMy1QMi4KIAogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZSBjb250ZXh0IGZvciB2ZXJzaW9uIDkuMTAuNS1QMy4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiAtLS0KICBjb25maWd1cmUuaW4gfCAyMyArKystLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAwZGI4MjZkLi43NTgxOWViIDEwMDY0NAoraW5kZXggNGRhNzNhNC4uNmYyYTc1NCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5pbgogKysrIGIvY29uZmlndXJlLmluCi1AQCAtMjEwNywyNiArMjEwNyw5IEBAIGNhc2UgIiR1c2VfbGlieG1sMiIgaW4KK0BAIC0yMjgyLDI2ICsyMjgyLDkgQEAgY2FzZSAiJHVzZV9saWJ4bWwyIiBpbgogIAkJRFNUX0xJQlhNTDJfSU5DPSIiCiAgCQk7OwogIAlhdXRvfHllcykKQEAgLTI1LDcgKzI5LDcgQEAKIC0JCQlsaWJ4bWwyX2NmbGFncz1geG1sMi1jb25maWcgLS1jZmxhZ3NgCiAtCQkJOzsKIC0JCSopCi0tCQkJaWYgdGVzdCAiJHVzZV9saWJ4bWwyIiA9ICJ5ZXMiIDsgdGhlbgorLQkJCWlmIHRlc3QgInllcyIgPSAiJHVzZV9saWJ4bWwyIiA7IHRoZW4KIC0JCQkJQUNfTVNHX1JFU1VMVChubykKIC0JCQkJQUNfTVNHX0VSUk9SKHJlcXVpcmVkIGxpYnhtbDIgdmVyc2lvbiBub3QgYXZhaWxhYmxlKQogLQkJCWVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNDliZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotRnJvbSA3MDAzN2UwNDBlNTg3MzI5Y2VjODIxMjNlMTJiOWY0ZjdjOTQ1ZjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogVGh1LCAxOCBGZWIgMjAxNiAxMjoxMToyNyArMTEwMAotU3ViamVjdDogW1BBVENIXSA0MzE4LiAgIFtzZWN1cml0eV0gICAgICBNYWxmb3JtZWQgY29udHJvbCBtZXNzYWdlcyBjYW4KLSB0cmlnZ2VyIGFzc2VydGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbmFtZWQgYW5kIHJuZGMuIChDVkUtMjAxNi0xMjg1KQotIFtSVCAjNDE2NjZdCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGEyYjE1YjMzMDVhY2Q1MjE3OWU2ZjNkYzdkMDczYjA3ZmJjNDBiOGUpCi0KLUNWRTogQ1ZFLTIwMTYtMTI4NQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW1JlbW92ZWQgZG9jL2FybS9ub3Rlcy54bWwgY2hhbmdlcyBmcm9tIHVwc3RyZWFtIHBhdGNoXQotCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIENIQU5HRVMgICAgICAgICAgICAgICAgIHwgIDMgKysrCi0gYmluL25hbWVkL2NvbnRyb2wuYyAgICAgfCAgMiArLQotIGJpbi9uYW1lZC9jb250cm9sY29uZi5jIHwgIDIgKy0KLSBiaW4vcm5kYy9ybmRjLmMgICAgICAgICB8ICA4ICsrKystLS0tCi0gZG9jL2FybS9ub3Rlcy54bWwgICAgICAgfCAxMSArKysrKysrKysrKwotIGxpYi9pc2NjYy9jYy5jICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IGI5YmQ5ZWYuLjJjNzI3ZDUgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDYgQEAKLSs0MzE4Lglbc2VjdXJpdHldCU1hbGZvcm1lZCBjb250cm9sIG1lc3NhZ2VzIGNhbiB0cmlnZ2VyIGFzc2VydGlvbnMKLSsJCQlpbiBuYW1lZCBhbmQgcm5kYy4gKENWRS0yMDE2LTEyODUpIFtSVCAjNDE2NjZdCi0rCi0gCS0tLSA5LjEwLjMtUDMgcmVsZWFzZWQgLS0tCi0gCi0gNDI4OC4JW2J1Z10JCUZpeGVkIGEgcmVncmVzc2lvbiBpbiByZXNvbHZlci5jOnBvc3NpYmx5X21hcmsoKQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jb250cm9sLmMgYi9iaW4vbmFtZWQvY29udHJvbC5jCi1pbmRleCA4NTU0MzM1Li44MTM0MGNhIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NvbnRyb2wuYwotKysrIGIvYmluL25hbWVkL2NvbnRyb2wuYwotQEAgLTY5LDcgKzY5LDcgQEAgbnNfY29udHJvbF9kb2NvbW1hbmQoaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSwgaXNjX2J1ZmZlcl90ICp0ZXh0KSB7Ci0gI2VuZGlmCi0gCi0gCWRhdGEgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9kYXRhIik7Ci0tCWlmIChkYXRhID09IE5VTEwpIHsKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoZGF0YSkpIHsKLSAJCS8qCi0gCQkgKiBObyBkYXRhIHNlY3Rpb24uCi0gCQkgKi8KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY29udHJvbGNvbmYuYyBiL2Jpbi9uYW1lZC9jb250cm9sY29uZi5jCi1pbmRleCA3NjVhZmRkLi5hMzlhYjhiIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NvbnRyb2xjb25mLmMKLSsrKyBiL2Jpbi9uYW1lZC9jb250cm9sY29uZi5jCi1AQCAtNDAyLDcgKzQwMiw3IEBAIGNvbnRyb2xfcmVjdm1lc3NhZ2UoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCSAqIExpbWl0IGV4cG9zdXJlIHRvIHJlcGxheSBhdHRhY2tzLgotIAkgKi8KLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAocmVxdWVzdCwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMKSB7Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSkgewotIAkJbG9nX2ludmFsaWQoJmNvbm4tPmNjbXNnLCBJU0NfUl9GQUlMVVJFKTsKLSAJCWdvdG8gY2xlYW51cF9yZXF1ZXN0OwotIAl9Ci1kaWZmIC0tZ2l0IGEvYmluL3JuZGMvcm5kYy5jIGIvYmluL3JuZGMvcm5kYy5jCi1pbmRleCBjYjE3MDUwLi5iNmUwNWM4IDEwMDY0NAotLS0tIGEvYmluL3JuZGMvcm5kYy5jCi0rKysgYi9iaW4vcm5kYy9ybmRjLmMKLUBAIC0yNTUsOCArMjU1LDggQEAgcm5kY19yZWN2ZG9uZShpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJICAgaXNjY2NfY2NfZnJvbXdpcmUoJnNvdXJjZSwgJnJlc3BvbnNlLCBhbGdvcml0aG0sICZzZWNyZXQpKTsKLSAKLSAJZGF0YSA9IGlzY2NjX2FsaXN0X2xvb2t1cChyZXNwb25zZSwgIl9kYXRhIik7Ci0tCWlmIChkYXRhID09IE5VTEwpCi0tCQlmYXRhbCgibm8gZGF0YSBzZWN0aW9uIGluIHJlc3BvbnNlIik7Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKGRhdGEpKQotKwkJZmF0YWwoImJhZCBvciBtaXNzaW5nIGRhdGEgc2VjdGlvbiBpbiByZXNwb25zZSIpOwotIAlyZXN1bHQgPSBpc2NjY19jY19sb29rdXBzdHJpbmcoZGF0YSwgImVyciIsICZlcnJvcm1zZyk7Ci0gCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykgewotIAkJZmFpbGVkID0gSVNDX1RSVUU7Ci1AQCAtMzIxLDggKzMyMSw4IEBAIHJuZGNfcmVjdm5vbmNlKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkgICBpc2NjY19jY19mcm9td2lyZSgmc291cmNlLCAmcmVzcG9uc2UsIGFsZ29yaXRobSwgJnNlY3JldCkpOwotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChyZXNwb25zZSwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMKQotLQkJZmF0YWwoIl9jdHJsIHNlY3Rpb24gbWlzc2luZyIpOwotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkpCi0rCQlmYXRhbCgiYmFkIG9yIG1pc3NpbmcgY3RybCBzZWN0aW9uIGluIHJlc3BvbnNlIik7Ci0gCW5vbmNlID0gMDsKLSAJaWYgKGlzY2NjX2NjX2xvb2t1cHVpbnQzMihfY3RybCwgIl9ub25jZSIsICZub25jZSkgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCW5vbmNlID0gMDsKLWRpZmYgLS1naXQgYS9saWIvaXNjY2MvY2MuYyBiL2xpYi9pc2NjYy9jYy5jCi1pbmRleCA0N2EzYjc0Li4yYmI5NjFlIDEwMDY0NAotLS0tIGEvbGliL2lzY2NjL2NjLmMKLSsrKyBiL2xpYi9pc2NjYy9jYy5jCi1AQCAtNDAzLDEzICs0MDMsMTMgQEAgdmVyaWZ5KGlzY2NjX3NleHByX3QgKmFsaXN0LCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLAotIAkgKiBFeHRyYWN0IGRpZ2VzdC4KLSAJICovCi0gCV9hdXRoID0gaXNjY2NfYWxpc3RfbG9va3VwKGFsaXN0LCAiX2F1dGgiKTsKLS0JaWYgKF9hdXRoID09IE5VTEwpCi0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9hdXRoKSkKLSAJCXJldHVybiAoSVNDX1JfRkFJTFVSRSk7Ci0gCWlmIChhbGdvcml0aG0gPT0gSVNDQ0NfQUxHX0hNQUNNRDUpCi0gCQlobWFjID0gaXNjY2NfYWxpc3RfbG9va3VwKF9hdXRoLCAiaG1kNSIpOwotIAllbHNlCi0gCQlobWFjID0gaXNjY2NfYWxpc3RfbG9va3VwKF9hdXRoLCAiaHNoYSIpOwotLQlpZiAoaG1hYyA9PSBOVUxMKQotKwlpZiAoIWlzY2NjX3NleHByX2JpbmFyeXAoaG1hYykpCi0gCQlyZXR1cm4gKElTQ19SX0ZBSUxVUkUpOwotIAkvKgotIAkgKiBDb21wdXRlIGRpZ2VzdC4KLUBAIC03MjgsNyArNzI4LDcgQEAgaXNjY2NfY2NfY3JlYXRlYWNrKGlzY2NjX3NleHByX3QgKm1lc3NhZ2UsIGlzY19ib29sZWFuX3Qgb2ssCi0gCVJFUVVJUkUoYWNrcCAhPSBOVUxMICYmICphY2twID09IE5VTEwpOwotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwgfHwKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXB1aW50MzIoX2N0cmwsICJfc2VyIiwgJnNlcmlhbCkgIT0gSVNDX1JfU1VDQ0VTUyB8fAotIAkgICAgaXNjY2NfY2NfbG9va3VwdWludDMyKF9jdHJsLCAiX3RpbSIsICZ0KSAhPSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChJU0NfUl9GQUlMVVJFKTsKLUBAIC03NzMsNyArNzczLDcgQEAgaXNjY2NfY2NfaXNhY2soaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSkKLSAJaXNjY2Nfc2V4cHJfdCAqX2N0cmw7Ci0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCkKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpKQotIAkJcmV0dXJuIChJU0NfRkFMU0UpOwotIAlpZiAoaXNjY2NfY2NfbG9va3Vwc3RyaW5nKF9jdHJsLCAiX2FjayIsIE5VTEwpID09IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKElTQ19UUlVFKTsKLUBAIC03ODYsNyArNzg2LDcgQEAgaXNjY2NfY2NfaXNyZXBseShpc2NjY19zZXhwcl90ICptZXNzYWdlKQotIAlpc2NjY19zZXhwcl90ICpfY3RybDsKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMKQotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkpCi0gCQlyZXR1cm4gKElTQ19GQUxTRSk7Ci0gCWlmIChpc2NjY19jY19sb29rdXBzdHJpbmcoX2N0cmwsICJfcnBsIiwgTlVMTCkgPT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAoSVNDX1RSVUUpOwotQEAgLTgwNiw3ICs4MDYsNyBAQCBpc2NjY19jY19jcmVhdGVyZXNwb25zZShpc2NjY19zZXhwcl90ICptZXNzYWdlLCBpc2NjY190aW1lX3Qgbm93LAotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2N0cmwiKTsKLSAJX2RhdGEgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9kYXRhIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMIHx8IF9kYXRhID09IE5VTEwgfHwKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpIHx8ICFpc2NjY19hbGlzdF9hbGlzdHAoX2RhdGEpIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXB1aW50MzIoX2N0cmwsICJfc2VyIiwgJnNlcmlhbCkgIT0gSVNDX1JfU1VDQ0VTUyB8fAotIAkgICAgaXNjY2NfY2NfbG9va3Vwc3RyaW5nKF9kYXRhLCAidHlwZSIsICZ0eXBlKSAhPSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChJU0NfUl9GQUlMVVJFKTsKLUBAIC05OTUsNyArOTk1LDcgQEAgaXNjY2NfY2NfY2hlY2tkdXAoaXNjY2Nfc3ltdGFiX3QgKnN5bXRhYiwgaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSwKLSAJaXNjY2Nfc2V4cHJfdCAqX2N0cmw7Ci0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCB8fAotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHN0cmluZyhfY3RybCwgIl9zZXIiLCAmX3NlcikgIT0gSVNDX1JfU1VDQ0VTUyB8fAotIAkgICAgaXNjY2NfY2NfbG9va3Vwc3RyaW5nKF9jdHJsLCAiX3RpbSIsICZfdGltKSAhPSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChJU0NfUl9GQUlMVVJFKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNWNjNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gYTNkMzI3YmYxY2VhYWVhYmIyMDIyM2Q4ZGU4NTE2NmU5NDBiOWYxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE11a3VuZCBTaXZhcmFtYW4gPG11a3NAaXNjLm9yZz4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMTI6MjI6NDMgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHJlc29sdmVyIGFzc2VydGlvbiBmYWlsdXJlIGR1ZSB0byBpbXByb3BlciBETkFNRSBoYW5kbGluZwotIChDVkUtMjAxNi0xMjg2KSAoIzQxNzUzKQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1OTk1ZmVjNTFjYzhiYjdlNTM4MDRlNDkzNmU2MGFhMTUzN2YzNjczKQotCi1DVkU6IENWRS0yMDE2LTEyODYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotW1JlbW92ZWQgZG9jL2FybS9ub3Rlcy54bWwgY2hhbmdlcyBmcm9tIHVwc3RyZWFtIHBhdGNoLl0KLQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLWRpZmYgLXJ1TiBhL0NIQU5HRVMgYi9DSEFOR0VTCi0tLS0gYS9DSEFOR0VTCTIwMTYtMDQtMTMgMDc6Mjg6NDQuOTQwODczNjI5ICswMjAwCi0rKysgYi9DSEFOR0VTCTIwMTYtMDQtMTMgMDc6Mzg6MzguOTIzMTY3ODUxICswMjAwCi1AQCAtMSwzICsxLDcgQEAKLSs0MzE5LiAgW3NlY3VyaXR5XSAgICAgIEZpeCByZXNvbHZlciBhc3NlcnRpb24gZmFpbHVyZSBkdWUgdG8gaW1wcm9wZXIKLSsgICAgICAgICAgICAgICAgICAgICAgIEROQU1FIGhhbmRsaW5nIHdoZW4gcGFyc2luZyBmZXRjaCByZXBseSBtZXNzYWdlcy4KLSsgICAgICAgICAgICAgICAgICAgICAgIChDVkUtMjAxNi0xMjg2KSBbUlQgIzQxNzUzXQotKwotIDQzMTguCVtzZWN1cml0eV0JTWFsZm9ybWVkIGNvbnRyb2wgbWVzc2FnZXMgY2FuIHRyaWdnZXIgYXNzZXJ0aW9ucwotIAkJCWluIG5hbWVkIGFuZCBybmRjLiAoQ1ZFLTIwMTYtMTI4NSkgW1JUICM0MTY2Nl0KLSAKLWRpZmYgLXJ1TiBhL2xpYi9kbnMvcmVzb2x2ZXIuYyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotLS0tIGEvbGliL2Rucy9yZXNvbHZlci5jCTIwMTYtMDQtMTMgMDc6Mjg6NDMuMDg4OTUzNzkwICswMjAwCi0rKysgYi9saWIvZG5zL3Jlc29sdmVyLmMJMjAxNi0wNC0xMyAwNzozODoyMC40MTE5Njg5MjUgKzAyMDAKLUBAIC02OTY3LDIxICs2OTY3LDI2IEBACi0gCQkJCWlzY19ib29sZWFuX3QgZm91bmRfZG5hbWUgPSBJU0NfRkFMU0U7Ci0gCQkJCWRuc19uYW1lX3QgKmRuYW1lX25hbWU7Ci0gCi0rCQkJCS8qCi0rCQkJCSAqIE9ubHkgcGFzcyBETkFNRSBvciBSUlNJRyhETkFNRSkuCi0rCQkJCSAqLwotKwkJCQlpZiAocmRhdGFzZXQtPnR5cGUgIT0gZG5zX3JkYXRhdHlwZV9kbmFtZSAmJgotKwkJCQkgICAgKHJkYXRhc2V0LT50eXBlICE9IGRuc19yZGF0YXR5cGVfcnJzaWcgfHwKLSsJCQkJICAgICByZGF0YXNldC0+Y292ZXJzICE9IGRuc19yZGF0YXR5cGVfZG5hbWUpKQotKwkJCQkJY29udGludWU7Ci0rCi0rCQkJCS8qCi0rCQkJCSAqIElmIHdlJ3JlIG5vdCBjaGFpbmluZywgdGhlbiB0aGUgRE5BTUUgYW5kCi0rCQkJCSAqIGl0cyBzaWduYXR1cmUgc2hvdWxkIG5vdCBiZSBleHRlcm5hbC4KLSsJCQkJICovCi0rCQkJCWlmICghY2hhaW5pbmcgJiYgZXh0ZXJuYWwpIHsKLSsJCQkJCWxvZ19mb3JtZXJyKGZjdHgsICJleHRlcm5hbCBETkFNRSIpOwotKwkJCQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLSsJCQkJfQotKwotIAkJCQlmb3VuZCA9IElTQ19GQUxTRTsKLSAJCQkJYWZsYWcgPSAwOwotIAkJCQlpZiAocmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9kbmFtZSkgewotLQkJCQkJLyoKLS0JCQkJCSAqIFdlJ3JlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBlbHNlLAotLQkJCQkJICogYnV0IHdlIGZvdW5kIGEgRE5BTUUuCi0tCQkJCQkgKgotLQkJCQkJICogSWYgd2UncmUgbm90IGNoYWluaW5nLCB0aGVuIHRoZQotLQkJCQkJICogRE5BTUUgc2hvdWxkIG5vdCBiZSBleHRlcm5hbC4KLS0JCQkJCSAqLwotLQkJCQkJaWYgKCFjaGFpbmluZyAmJiBleHRlcm5hbCkgewotLQkJCQkJCWxvZ19mb3JtZXJyKGZjdHgsCi0tCQkJCQkJCSAgICAiZXh0ZXJuYWwgRE5BTUUiKTsKLS0JCQkJCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotLQkJCQkJfQotIAkJCQkJZm91bmQgPSBJU0NfVFJVRTsKLSAJCQkJCXdhbnRfY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSAJCQkJCVBPU1Qod2FudF9jaGFpbmluZyk7Ci1AQCAtNzAxMCw5ICs3MDE1LDcgQEAKLSAJCQkJCQkJJmZjdHgtPmRvbWFpbikpIHsKLSAJCQkJCQlyZXR1cm4gKEROU19SX1NFUlZGQUlMKTsKLSAJCQkJCX0KLS0JCQkJfSBlbHNlIGlmIChyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX3Jyc2lnCi0tCQkJCQkgICAmJiByZGF0YXNldC0+Y292ZXJzID09Ci0tCQkJCQkgICBkbnNfcmRhdGF0eXBlX2RuYW1lKSB7Ci0rCQkJCX0gZWxzZSB7Ci0gCQkJCQkvKgotIAkJCQkJICogV2UndmUgZm91bmQgYSBzaWduYXR1cmUgdGhhdAotIAkJCQkJICogY292ZXJzIHRoZSBETkFNRS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjVjYjBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMTcgKzAsMCBAQAotRnJvbSA3NjAyYmUyNzZhNzNhNmViNTQzMWM1YWNkOTcxOGU2OGE1NWU4YjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogTW9uLCAyOSBGZWIgMjAxNiAwNzoxNjo0OCArMTEwMAotU3ViamVjdDogW1BBVENIXSBQYXJ0IDIgb2Y6IDQzMTkuICAgW3NlY3VyaXR5XSAgICAgIEZpeCByZXNvbHZlciBhc3NlcnRpb24KLSBmYWlsdXJlIGR1ZSB0byBpbXByb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBETkFNRSBoYW5kbGluZyB3aGVuIHBhcnNpbmcKLSBmZXRjaCByZXBseSBtZXNzYWdlcy4gICAgICAgICAgICAgICAgICAgICAgICAgKENWRS0yMDE2LTEyODYpIFtSVCAjNDE3NTNdCi0KLUNWRTogQ1ZFLTIwMTYtMTI4NgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyZGU4OWVlOWRlOGM4ZGE5ZGMxNTNhNzU0YjAyZGNkYmI3ZmUyMzc0KQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBsaWIvZG5zL3Jlc29sdmVyLmMgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZG5zL3Jlc29sdmVyLmMgYi9saWIvZG5zL3Jlc29sdmVyLmMKLWluZGV4IDcwYWJhODcuLjQxZTlkZjQgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3Jlc29sdmVyLmMKLSsrKyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotQEAgLTYwNzQsMTQgKzYwNzQsMTEgQEAgY25hbWVfdGFyZ2V0KGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqdG5hbWUpIHsKLSB9Ci0gCi0gc3RhdGljIGlubGluZSBpc2NfcmVzdWx0X3QKLS1kbmFtZV90YXJnZXQoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBkbnNfbmFtZV90ICpxbmFtZSwKLS0JICAgICBkbnNfbmFtZV90ICpvbmFtZSwgZG5zX2ZpeGVkbmFtZV90ICpmaXhlZGRuYW1lKQotK2RuYW1lX3RhcmdldChkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGRuc19uYW1lX3QgKnFuYW1lLAotKwkgICAgIHVuc2lnbmVkIGludCBubGFiZWxzLCBkbnNfZml4ZWRuYW1lX3QgKmZpeGVkZG5hbWUpCi0gewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlkbnNfcmRhdGFfdCByZGF0YSA9IEROU19SREFUQV9JTklUOwotLQl1bnNpZ25lZCBpbnQgbmxhYmVsczsKLS0JaW50IG9yZGVyOwotLQlkbnNfbmFtZXJlbG5fdCBuYW1lcmVsbjsKLSAJZG5zX3JkYXRhX2RuYW1lX3QgZG5hbWU7Ci0gCWRuc19maXhlZG5hbWVfdCBwcmVmaXg7Ci0gCi1AQCAtNjA5NiwyMSArNjA5Myw2IEBAIGRuYW1lX3RhcmdldChmZXRjaGN0eF90ICpmY3R4LCBkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGRuc19uYW1lX3QgKnFuYW1lLAotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCi0tCS8qCi0tCSAqIEdldCB0aGUgcHJlZml4IG9mIHFuYW1lLgotLQkgKi8KLS0JbmFtZXJlbG4gPSBkbnNfbmFtZV9mdWxsY29tcGFyZShxbmFtZSwgb25hbWUsICZvcmRlciwgJm5sYWJlbHMpOwotLQlpZiAobmFtZXJlbG4gIT0gZG5zX25hbWVyZWxuX3N1YmRvbWFpbikgewotLQkJY2hhciBxYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotLQkJY2hhciBvYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotLQotLQkJZG5zX3JkYXRhX2ZyZWVzdHJ1Y3QoJmRuYW1lKTsKLS0JCWRuc19uYW1lX2Zvcm1hdChxbmFtZSwgcWJ1Ziwgc2l6ZW9mKHFidWYpKTsKLS0JCWRuc19uYW1lX2Zvcm1hdChvbmFtZSwgb2J1Ziwgc2l6ZW9mKG9idWYpKTsKLS0JCWxvZ19mb3JtZXJyKGZjdHgsICJ1bnJlbGF0ZWQgRE5BTUUgaW4gYW5zd2VyOiAiCi0tCQkJCSAgICIlcyBpcyBub3QgaW4gJXMiLCBxYnVmLCBvYnVmKTsKLS0JCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0tCX0KLSAJZG5zX2ZpeGVkbmFtZV9pbml0KCZwcmVmaXgpOwotIAlkbnNfbmFtZV9zcGxpdChxbmFtZSwgbmxhYmVscywgZG5zX2ZpeGVkbmFtZV9uYW1lKCZwcmVmaXgpLCBOVUxMKTsKLSAJZG5zX2ZpeGVkbmFtZV9pbml0KGZpeGVkZG5hbWUpOwotQEAgLTY3MzYsMTMgKzY3MTgsMTMgQEAgc3RhdGljIGlzY19yZXN1bHRfdAotIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWRuc19tZXNzYWdlX3QgKm1lc3NhZ2U7Ci0tCWRuc19uYW1lX3QgKm5hbWUsICpxbmFtZSwgdG5hbWUsICpuc19uYW1lOwotKwlkbnNfbmFtZV90ICpuYW1lLCAqZG5hbWUsICpxbmFtZSwgdG5hbWUsICpuc19uYW1lOwotIAlkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsICpuc19yZGF0YXNldDsKLSAJaXNjX2Jvb2xlYW5fdCBkb25lLCBleHRlcm5hbCwgY2hhaW5pbmcsIGFhLCBmb3VuZCwgd2FudF9jaGFpbmluZzsKLSAJaXNjX2Jvb2xlYW5fdCBoYXZlX2Fuc3dlciwgZm91bmRfY25hbWUsIGZvdW5kX3R5cGUsIHdhbnRlZF9jaGFpbmluZzsKLSAJdW5zaWduZWQgaW50IGFmbGFnOwotIAlkbnNfcmRhdGF0eXBlX3QgdHlwZTsKLS0JZG5zX2ZpeGVkbmFtZV90IGRuYW1lLCBmcW5hbWU7Ci0rCWRuc19maXhlZG5hbWVfdCBmZG5hbWUsIGZxbmFtZTsKLSAJZG5zX3ZpZXdfdCAqdmlldzsKLSAKLSAJRkNUWFRSQUNFKCJhbnN3ZXJfcmVzcG9uc2UiKTsKLUBAIC02NzcwLDEwICs2NzUyLDE1IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCXZpZXcgPSBmY3R4LT5yZXMtPnZpZXc7Ci0gCXJlc3VsdCA9IGRuc19tZXNzYWdlX2ZpcnN0bmFtZShtZXNzYWdlLCBETlNfU0VDVElPTl9BTlNXRVIpOwotIAl3aGlsZSAoIWRvbmUgJiYgcmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpIHsKLSsJCWRuc19uYW1lcmVsbl90IG5hbWVyZWxuOwotKwkJaW50IG9yZGVyOwotKwkJdW5zaWduZWQgaW50IG5sYWJlbHM7Ci0rCi0gCQluYW1lID0gTlVMTDsKLSAJCWRuc19tZXNzYWdlX2N1cnJlbnRuYW1lKG1lc3NhZ2UsIEROU19TRUNUSU9OX0FOU1dFUiwgJm5hbWUpOwotIAkJZXh0ZXJuYWwgPSBJU0NfVEYoIWRuc19uYW1lX2lzc3ViZG9tYWluKG5hbWUsICZmY3R4LT5kb21haW4pKTsKLS0JCWlmIChkbnNfbmFtZV9lcXVhbChuYW1lLCBxbmFtZSkpIHsKLSsJCW5hbWVyZWxuID0gZG5zX25hbWVfZnVsbGNvbXBhcmUocW5hbWUsIG5hbWUsICZvcmRlciwgJm5sYWJlbHMpOwotKwkJaWYgKG5hbWVyZWxuID09IGRuc19uYW1lcmVsbl9lcXVhbCkgewotIAkJCXdhbnRlZF9jaGFpbmluZyA9IElTQ19GQUxTRTsKLSAJCQlmb3IgKHJkYXRhc2V0ID0gSVNDX0xJU1RfSEVBRChuYW1lLT5saXN0KTsKLSAJCQkgICAgIHJkYXRhc2V0ICE9IE5VTEw7Ci1AQCAtNjg5OCwxMCArNjg4NSwxMSBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJCSAqLwotIAkJCQkJCUlOU0lTVCghZXh0ZXJuYWwpOwotIAkJCQkJCWlmIChhZmxhZyA9PQotLQkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikKLSsJCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpIHsKLSAJCQkJCQkJaGF2ZV9hbnN3ZXIgPSBJU0NfVFJVRTsKLS0JCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJCUROU19OQU1FQVRUUl9BTlNXRVI7Ci0rCQkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLSsJCQkJCQkJCUROU19OQU1FQVRUUl9BTlNXRVI7Ci0rCQkJCQkJfQotIAkJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9IGFmbGFnOwotIAkJCQkJCWlmIChhYSkKLSAJCQkJCQkJcmRhdGFzZXQtPnRydXN0ID0KLUBAIC02OTU2LDYgKzY5NDQsOCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCWlmICh3YW50ZWRfY2hhaW5pbmcpCi0gCQkJCWNoYWluaW5nID0gSVNDX1RSVUU7Ci0gCQl9IGVsc2UgewotKwkJCWRuc19yZGF0YXNldF90ICpkbmFtZXNldCA9IE5VTEw7Ci0rCi0gCQkJLyoKLSAJCQkgKiBMb29rIGZvciBhIEROQU1FIChvciBpdHMgU0lHKS4gIEFueXRoaW5nIGVsc2UgaXMKLSAJCQkgKiBpZ25vcmVkLgotQEAgLTY5NjMsMTAgKzY5NTMsOCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCXdhbnRlZF9jaGFpbmluZyA9IElTQ19GQUxTRTsKLSAJCQlmb3IgKHJkYXRhc2V0ID0gSVNDX0xJU1RfSEVBRChuYW1lLT5saXN0KTsKLSAJCQkgICAgIHJkYXRhc2V0ICE9IE5VTEw7Ci0tCQkJICAgICByZGF0YXNldCA9IElTQ19MSVNUX05FWFQocmRhdGFzZXQsIGxpbmspKSB7Ci0tCQkJCWlzY19ib29sZWFuX3QgZm91bmRfZG5hbWUgPSBJU0NfRkFMU0U7Ci0tCQkJCWRuc19uYW1lX3QgKmRuYW1lX25hbWU7Ci0tCi0rCQkJICAgICByZGF0YXNldCA9IElTQ19MSVNUX05FWFQocmRhdGFzZXQsIGxpbmspKQotKwkJCXsKLSAJCQkJLyoKLSAJCQkJICogT25seSBwYXNzIEROQU1FIG9yIFJSU0lHKEROQU1FKS4KLSAJCQkJICovCi1AQCAtNjk4MCwyMCArNjk2OCw0MSBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkgKiBpdHMgc2lnbmF0dXJlIHNob3VsZCBub3QgYmUgZXh0ZXJuYWwuCi0gCQkJCSAqLwotIAkJCQlpZiAoIWNoYWluaW5nICYmIGV4dGVybmFsKSB7Ci0tCQkJCQlsb2dfZm9ybWVycihmY3R4LCAiZXh0ZXJuYWwgRE5BTUUiKTsKLSsJCQkJCWNoYXIgcWJ1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSsJCQkJCWNoYXIgb2J1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSsKLSsJCQkJCWRuc19uYW1lX2Zvcm1hdChuYW1lLCBxYnVmLAotKwkJCQkJCQlzaXplb2YocWJ1ZikpOwotKwkJCQkJZG5zX25hbWVfZm9ybWF0KCZmY3R4LT5kb21haW4sIG9idWYsCi0rCQkJCQkJCXNpemVvZihvYnVmKSk7Ci0rCQkJCQlsb2dfZm9ybWVycihmY3R4LCAiZXh0ZXJuYWwgRE5BTUUgb3IgIgotKwkJCQkJCSAgICAiUlJTSUcgY292ZXJpbmcgRE5BTUUgIgotKwkJCQkJCSAgICAiaW4gYW5zd2VyOiAlcyBpcyAiCi0rCQkJCQkJICAgICJub3QgaW4gJXMiLCBxYnVmLCBvYnVmKTsKLSsJCQkJCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0rCQkJCX0KLSsKLSsJCQkJaWYgKG5hbWVyZWxuICE9IGRuc19uYW1lcmVsbl9zdWJkb21haW4pIHsKLSsJCQkJCWNoYXIgcWJ1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSsJCQkJCWNoYXIgb2J1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSsKLSsJCQkJCWRuc19uYW1lX2Zvcm1hdChxbmFtZSwgcWJ1ZiwKLSsJCQkJCQkJc2l6ZW9mKHFidWYpKTsKLSsJCQkJCWRuc19uYW1lX2Zvcm1hdChuYW1lLCBvYnVmLAotKwkJCQkJCQlzaXplb2Yob2J1ZikpOwotKwkJCQkJbG9nX2Zvcm1lcnIoZmN0eCwgInVucmVsYXRlZCBETkFNRSAiCi0rCQkJCQkJICAgICJpbiBhbnN3ZXI6ICVzIGlzICIKLSsJCQkJCQkgICAgIm5vdCBpbiAlcyIsIHFidWYsIG9idWYpOwotIAkJCQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLSAJCQkJfQotIAotLQkJCQlmb3VuZCA9IElTQ19GQUxTRTsKLSAJCQkJYWZsYWcgPSAwOwotIAkJCQlpZiAocmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9kbmFtZSkgewotLQkJCQkJZm91bmQgPSBJU0NfVFJVRTsKLSAJCQkJCXdhbnRfY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSAJCQkJCVBPU1Qod2FudF9jaGFpbmluZyk7Ci0gCQkJCQlhZmxhZyA9IEROU19SREFUQVNFVEFUVFJfQU5TV0VSOwotLQkJCQkJcmVzdWx0ID0gZG5hbWVfdGFyZ2V0KGZjdHgsIHJkYXRhc2V0LAotLQkJCQkJCQkgICAgICBxbmFtZSwgbmFtZSwKLS0JCQkJCQkJICAgICAgJmRuYW1lKTsKLSsJCQkJCXJlc3VsdCA9IGRuYW1lX3RhcmdldChyZGF0YXNldCwgcW5hbWUsCi0rCQkJCQkJCSAgICAgIG5sYWJlbHMsICZmZG5hbWUpOwotIAkJCQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9OT1NQQUNFKSB7Ci0gCQkJCQkJLyoKLSAJCQkJCQkgKiBXZSBjYW4ndCBjb25zdHJ1Y3QgdGhlCi1AQCAtNzAwNSwxNCArNzAxNCwxMiBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJfSBlbHNlIGlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQkJCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCQkJCQllbHNlCi0tCQkJCQkJZm91bmRfZG5hbWUgPSBJU0NfVFJVRTsKLSsJCQkJCQlkbmFtZXNldCA9IHJkYXRhc2V0OwotIAotLQkJCQkJZG5hbWVfbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgmZG5hbWUpOwotKwkJCQkJZG5hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoJmZkbmFtZSk7Ci0gCQkJCQlpZiAoIWlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKHZpZXcsCi0tCQkJCQkJCXFuYW1lLAotLQkJCQkJCQlyZGF0YXNldC0+dHlwZSwKLS0JCQkJCQkJZG5hbWVfbmFtZSwKLS0JCQkJCQkJJmZjdHgtPmRvbWFpbikpIHsKLSsJCQkJCQkJcW5hbWUsIHJkYXRhc2V0LT50eXBlLAotKwkJCQkJCQlkbmFtZSwgJmZjdHgtPmRvbWFpbikpIHsKLSAJCQkJCQlyZXR1cm4gKEROU19SX1NFUlZGQUlMKTsKLSAJCQkJCX0KLSAJCQkJfSBlbHNlIHsKLUBAIC03MDIwLDczICs3MDI3LDYwIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQkgKiBXZSd2ZSBmb3VuZCBhIHNpZ25hdHVyZSB0aGF0Ci0gCQkJCQkgKiBjb3ZlcnMgdGhlIEROQU1FLgotIAkJCQkJICovCi0tCQkJCQlmb3VuZCA9IElTQ19UUlVFOwotIAkJCQkJYWZsYWcgPSBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUlNJRzsKLSAJCQkJfQotIAotLQkJCQlpZiAoZm91bmQpIHsKLSsJCQkJLyoKLSsJCQkJICogV2UndmUgZm91bmQgYW4gYW5zd2VyIHRvIG91cgotKwkJCQkgKiBxdWVzdGlvbi4KLSsJCQkJICovCi0rCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0gRE5TX05BTUVBVFRSX0NBQ0hFOwotKwkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PSBETlNfUkRBVEFTRVRBVFRSX0NBQ0hFOwotKwkJCQlyZGF0YXNldC0+dHJ1c3QgPSBkbnNfdHJ1c3RfYW5zd2VyOwotKwkJCQlpZiAoIWNoYWluaW5nKSB7Ci0gCQkJCQkvKgotLQkJCQkJICogV2UndmUgZm91bmQgYW4gYW5zd2VyIHRvIG91cgotLQkJCQkJICogcXVlc3Rpb24uCi0rCQkJCQkgKiBUaGlzIGRhdGEgaXMgInRoZSIgYW5zd2VyIHRvCi0rCQkJCQkgKiBvdXIgcXVlc3Rpb24gb25seSBpZiB3ZSdyZQotKwkJCQkJICogbm90IGNoYWluaW5nLgotIAkJCQkJICovCi0tCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJRE5TX05BTUVBVFRSX0NBQ0hFOwotLQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQlETlNfUkRBVEFTRVRBVFRSX0NBQ0hFOwotLQkJCQkJcmRhdGFzZXQtPnRydXN0ID0gZG5zX3RydXN0X2Fuc3dlcjsKLS0JCQkJCWlmICghY2hhaW5pbmcpIHsKLS0JCQkJCQkvKgotLQkJCQkJCSAqIFRoaXMgZGF0YSBpcyAidGhlIiBhbnN3ZXIKLS0JCQkJCQkgKiB0byBvdXIgcXVlc3Rpb24gb25seSBpZgotLQkJCQkJCSAqIHdlJ3JlIG5vdCBjaGFpbmluZy4KLS0JCQkJCQkgKi8KLS0JCQkJCQlJTlNJU1QoIWV4dGVybmFsKTsKLS0JCQkJCQlpZiAoYWZsYWcgPT0KLS0JCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpCi0tCQkJCQkJCWhhdmVfYW5zd2VyID0gSVNDX1RSVUU7Ci0rCQkJCQlJTlNJU1QoIWV4dGVybmFsKTsKLSsJCQkJCWlmIChhZmxhZyA9PSBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikgewotKwkJCQkJCWhhdmVfYW5zd2VyID0gSVNDX1RSVUU7Ci0gCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotIAkJCQkJCQlETlNfTkFNRUFUVFJfQU5TV0VSOwotLQkJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9IGFmbGFnOwotLQkJCQkJCWlmIChhYSkKLS0JCQkJCQkJcmRhdGFzZXQtPnRydXN0ID0KLS0JCQkJCQkJICBkbnNfdHJ1c3RfYXV0aGFuc3dlcjsKLS0JCQkJCX0gZWxzZSBpZiAoZXh0ZXJuYWwpIHsKLS0JCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PQotLQkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0VYVEVSTkFMOwotLQkJCQkJfQotLQotLQkJCQkJLyoKLS0JCQkJCSAqIEROQU1FIGNoYWluaW5nLgotLQkJCQkJICovCi0tCQkJCQlpZiAoZm91bmRfZG5hbWUpIHsKLS0JCQkJCQkvKgotLQkJCQkJCSAqIENvcHkgdGhlIGRuYW1lIGludG8gdGhlCi0tCQkJCQkJICogcW5hbWUgZml4ZWQgbmFtZS4KLS0JCQkJCQkgKgotLQkJCQkJCSAqIEFsdGhvdWdoIHdlIGNoZWNrIGZvcgotLQkJCQkJCSAqIGZhaWx1cmUgb2YgdGhlIGNvcHkKLS0JCQkJCQkgKiBvcGVyYXRpb24sIGluIHByYWN0aWNlIGl0Ci0tCQkJCQkJICogc2hvdWxkIG5ldmVyIGZhaWwgc2luY2UKLS0JCQkJCQkgKiB3ZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUKLS0JCQkJCQkgKiByZXN1bHQgZml0cyBpbiBhIGZpeGVkbmFtZS4KLS0JCQkJCQkgKi8KLS0JCQkJCQlkbnNfZml4ZWRuYW1lX2luaXQoJmZxbmFtZSk7Ci0tCQkJCQkJcmVzdWx0ID0gZG5zX25hbWVfY29weSgKLS0JCQkJCQkgIGRuc19maXhlZG5hbWVfbmFtZSgmZG5hbWUpLAotLQkJCQkJCSAgZG5zX2ZpeGVkbmFtZV9uYW1lKCZmcW5hbWUpLAotLQkJCQkJCSAgTlVMTCk7Ci0tCQkJCQkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotLQkJCQkJCQlyZXR1cm4gKHJlc3VsdCk7Ci0tCQkJCQkJd2FudGVkX2NoYWluaW5nID0gSVNDX1RSVUU7Ci0tCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotLQkJCQkJCQlETlNfTkFNRUFUVFJfQ0hBSU5JTkc7Ci0tCQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9DSEFJTklORzsKLS0JCQkJCQlxbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgKLS0JCQkJCQkJCSAgICZmcW5hbWUpOwotIAkJCQkJfQotKwkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0gYWZsYWc7Ci0rCQkJCQlpZiAoYWEpCi0rCQkJCQkJcmRhdGFzZXQtPnRydXN0ID0KLSsJCQkJCQkgIGRuc190cnVzdF9hdXRoYW5zd2VyOwotKwkJCQl9IGVsc2UgaWYgKGV4dGVybmFsKSB7Ci0rCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PQotKwkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfRVhURVJOQUw7Ci0gCQkJCX0KLSAJCQl9Ci0rCi0rCQkJLyoKLSsJCQkgKiBETkFNRSBjaGFpbmluZy4KLSsJCQkgKi8KLSsJCQlpZiAoZG5hbWVzZXQgIT0gTlVMTCkgewotKwkJCQkvKgotKwkJCQkgKiBDb3B5IHRoZSBkbmFtZSBpbnRvIHRoZSBxbmFtZSBmaXhlZCBuYW1lLgotKwkJCQkgKgotKwkJCQkgKiBBbHRob3VnaCB3ZSBjaGVjayBmb3IgZmFpbHVyZSBvZiB0aGUgY29weQotKwkJCQkgKiBvcGVyYXRpb24sIGluIHByYWN0aWNlIGl0IHNob3VsZCBuZXZlciBmYWlsCi0rCQkJCSAqIHNpbmNlIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSAgcmVzdWx0IGZpdHMKLSsJCQkJICogaW4gYSBmaXhlZG5hbWUuCi0rCQkJCSAqLwotKwkJCQlkbnNfZml4ZWRuYW1lX2luaXQoJmZxbmFtZSk7Ci0rCQkJCXFuYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKCZmcW5hbWUpOwotKwkJCQlyZXN1bHQgPSBkbnNfbmFtZV9jb3B5KGRuYW1lLCBxbmFtZSwgTlVMTCk7Ci0rCQkJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSsJCQkJCXJldHVybiAocmVzdWx0KTsKLSsJCQkJd2FudGVkX2NoYWluaW5nID0gSVNDX1RSVUU7Ci0rCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0gRE5TX05BTUVBVFRSX0NIQUlOSU5HOwotKwkJCQlkbmFtZXNldC0+YXR0cmlidXRlcyB8PQotKwkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQ0hBSU5JTkc7Ci0rCQkJfQotIAkJCWlmICh3YW50ZWRfY2hhaW5pbmcpCi0gCQkJCWNoYWluaW5nID0gSVNDX1RSVUU7Ci0gCQl9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yMDg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTIwODgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiODRkNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTIwODgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotQ1ZFLTIwMTYtMjA4OAotCi1CYWNrcG9ydCBjb21taXQgZDdmZjlhMWM0MWJmMGJhOTc3M2NiM2FkYjA4YjQ4YjlmZDU3Yzk1NiBmcm9tIHRoZQotdjlfMTBfM19wYXRjaCBicmFuY2guCi0KLWh0dHBzOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMTYtMjA4OAotaHR0cHM6Ly9rYi5pc2Mub3JnL2FydGljbGUvQUEtMDEzNTEKLQotQ1ZFOiBDVkUtMjAxNi0yMDg4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0KLU9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPiBiZWxvdzoKLQotNDMyMi4gICBbc2VjdXJpdHldICAgICAgRHVwbGljYXRlIEVETlMgQ09PS0lFIG9wdGlvbnMgaW4gYSByZXNwb25zZSBjb3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBhc3NlcnRpb24gZmFpbHVyZS4gKENWRS0yMDE2LTIwODgpCi0gICAgICAgICAgICAgICAgICAgICAgICBbUlQgIzQxODA5XQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA0NTVjMDg0OGY4MGE4YWNkYTI3YWFkMTQ2NmM3Mjk4N2NhZmFhMDI5KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgN2NkMzAwYWJkNmVlOGI4ZWU4NzMwNTkzZGFmNzQyYmE1M2Y5MGJjMykKLS0tLQotIENIQU5HRVMgICAgICAgICAgICB8ICA0ICsrKysKLSBiaW4vZGlnL2RpZ2hvc3QuYyAgfCAgOSArKysrKysrKysKLSBiaW4vbmFtZWQvY2xpZW50LmMgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSBkb2MvYXJtL25vdGVzLnhtbCAgfCAgNyArKysrKysrCi0gbGliL2Rucy9yZXNvbHZlci5jIHwgMTQgKysrKysrKysrKysrKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IGM1YjVkMmIuLmQyZTMzNjAgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDcgQEAKLSs0MzIyLiAgW3NlY3VyaXR5XSAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQKLSsgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIChDVkUtMjAxNi0yMDg4KQotKyAgICAgICAgICAgICAgICAgICAgICAgW1JUICM0MTgwOV0KLSsKLSA0MzE5LiAgW3NlY3VyaXR5XSAgICAgIEZpeCByZXNvbHZlciBhc3NlcnRpb24gZmFpbHVyZSBkdWUgdG8gaW1wcm9wZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIEROQU1FIGhhbmRsaW5nIHdoZW4gcGFyc2luZyBmZXRjaCByZXBseSBtZXNzYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIChDVkUtMjAxNi0xMjg2KSBbUlQgIzQxNzUzXQotZGlmZiAtLWdpdCBhL2Jpbi9kaWcvZGlnaG9zdC5jIGIvYmluL2RpZy9kaWdob3N0LmMKLWluZGV4IGNhODJmOGUuLjM0MDkwNGYgMTAwNjQ0Ci0tLS0gYS9iaW4vZGlnL2RpZ2hvc3QuYwotKysrIGIvYmluL2RpZy9kaWdob3N0LmMKLUBAIC0zNDU4LDYgKzM0NTgsNyBAQCBwcm9jZXNzX29wdChkaWdfbG9va3VwX3QgKmwsIGRuc19tZXNzYWdlX3QgKm1zZykgewotIAlpc2NfYnVmZmVyX3Qgb3B0YnVmOwotIAlpc2NfdWludDE2X3Qgb3B0Y29kZSwgb3B0bGVuOwotIAlkbnNfcmRhdGFzZXRfdCAqb3B0ID0gbXNnLT5vcHQ7Ci0rCWlzY19ib29sZWFuX3Qgc2Vlbl9jb29raWUgPSBJU0NfRkFMU0U7Ci0gCi0gCXJlc3VsdCA9IGRuc19yZGF0YXNldF9maXJzdChvcHQpOwotIAlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpIHsKLUBAIC0zNDcwLDcgKzM0NzEsMTUgQEAgcHJvY2Vzc19vcHQoZGlnX2xvb2t1cF90ICpsLCBkbnNfbWVzc2FnZV90ICptc2cpIHsKLSAJCQlvcHRsZW4gPSBpc2NfYnVmZmVyX2dldHVpbnQxNigmb3B0YnVmKTsKLSAJCQlzd2l0Y2ggKG9wdGNvZGUpIHsKLSAJCQljYXNlIEROU19PUFRfQ09PS0lFOgotKwkJCQkvKgotKwkJCQkgKiBPbmx5IHByb2Nlc3MgdGhlIGZpcnN0IGNvb2tpZSBvcHRpb24uCi0rCQkJCSAqLwotKwkJCQlpZiAoc2Vlbl9jb29raWUpIHsKLSsJCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotKwkJCQkJYnJlYWs7Ci0rCQkJCX0KLSAJCQkJcHJvY2Vzc19zaXQobCwgbXNnLCAmb3B0YnVmLCBvcHRsZW4pOwotKwkJCQlzZWVuX2Nvb2tpZSA9IElTQ19UUlVFOwotIAkJCQlicmVhazsKLSAJCQlkZWZhdWx0OgotIAkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDY4MzMwNWMuLjBkNzMzMWEgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTEyMCw3ICsxMjAsMTAgQEAKLSAgKi8KLSAjZW5kaWYKLSAKLS0jZGVmaW5lIFNJVF9TSVpFIDI0VSAvKiA4ICsgNCArIDQgKyA4ICovCi0rI2RlZmluZSBDT09LSUVfU0laRSAyNFUgLyogOCArIDQgKyA0ICsgOCAqLwotKwotKyNkZWZpbmUgV0FOVE5TSUQoeCkgKCgoeCktPmF0dHJpYnV0ZXMgJiBOU19DTElFTlRBVFRSX1dBTlROU0lEKSAhPSAwKQotKyNkZWZpbmUgV0FOVEVYUElSRSh4KSAoKCh4KS0+YXR0cmlidXRlcyAmIE5TX0NMSUVOVEFUVFJfV0FOVEVYUElSRSkgIT0gMCkKLSAKLSAvKiUgbmFtZXNlcnZlciBjbGllbnQgbWFuYWdlciBzdHJ1Y3R1cmUgKi8KLSBzdHJ1Y3QgbnNfY2xpZW50bWdyIHsKLUBAIC0xMzk1LDcgKzEzOTgsNyBAQCBuc19jbGllbnRfYWRkb3B0KG5zX2NsaWVudF90ICpjbGllbnQsIGRuc19tZXNzYWdlX3QgKm1lc3NhZ2UsCi0gewotIAljaGFyIG5zaWRbQlVGU0laXSwgKm5zaWRwOwotICNpZmRlZiBJU0NfUExBVEZPUk1fVVNFU0lUCi0tCXVuc2lnbmVkIGNoYXIgc2l0W1NJVF9TSVpFXTsKLSsJdW5zaWduZWQgY2hhciBzaXRbQ09PS0lFX1NJWkVdOwotICNlbmRpZgotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlkbnNfdmlld190ICp2aWV3OwotQEAgLTE0MjAsNyArMTQyMyw3IEBAIG5zX2NsaWVudF9hZGRvcHQobnNfY2xpZW50X3QgKmNsaWVudCwgZG5zX21lc3NhZ2VfdCAqbWVzc2FnZSwKLSAJZmxhZ3MgPSBjbGllbnQtPmV4dGZsYWdzICYgRE5TX01FU1NBR0VFWFRGTEFHX1JFUExZUFJFU0VSVkU7Ci0gCi0gCS8qIFNldCBFRE5TIG9wdGlvbnMgaWYgYXBwbGljYWJsZSAqLwotLQlpZiAoKGNsaWVudC0+YXR0cmlidXRlcyAmIE5TX0NMSUVOVEFUVFJfV0FOVE5TSUQpICE9IDAgJiYKLSsJaWYgKFdBTlROU0lEKGNsaWVudCkgJiYKLSAJICAgIChuc19nX3NlcnZlci0+c2VydmVyX2lkICE9IE5VTEwgfHwKLSAJICAgICBuc19nX3NlcnZlci0+c2VydmVyX3VzZWhvc3RuYW1lKSkgewotIAkJaWYgKG5zX2dfc2VydmVyLT5zZXJ2ZXJfdXNlaG9zdG5hbWUpIHsKLUBAIC0xNDUzLDcgKzE0NTYsNyBAQCBuc19jbGllbnRfYWRkb3B0KG5zX2NsaWVudF90ICpjbGllbnQsIGRuc19tZXNzYWdlX3QgKm1lc3NhZ2UsCi0gCi0gCQlJTlNJU1QoY291bnQgPCBETlNfRUROU09QVElPTlMpOwotIAkJZWRuc29wdHNbY291bnRdLmNvZGUgPSBETlNfT1BUX0NPT0tJRTsKLS0JCWVkbnNvcHRzW2NvdW50XS5sZW5ndGggPSBTSVRfU0laRTsKLSsJCWVkbnNvcHRzW2NvdW50XS5sZW5ndGggPSBDT09LSUVfU0laRTsKLSAJCWVkbnNvcHRzW2NvdW50XS52YWx1ZSA9IHNpdDsKLSAJCWNvdW50Kys7Ci0gCX0KLUBAIC0xNjYxLDE5ICsxNjY0LDI2IEBAIGNvbXB1dGVfc2l0KG5zX2NsaWVudF90ICpjbGllbnQsIGlzY191aW50MzJfdCB3aGVuLCBpc2NfdWludDMyX3Qgbm9uY2UsCi0gCi0gc3RhdGljIHZvaWQKLSBwcm9jZXNzX3NpdChuc19jbGllbnRfdCAqY2xpZW50LCBpc2NfYnVmZmVyX3QgKmJ1Ziwgc2l6ZV90IG9wdGxlbikgewotLQl1bnNpZ25lZCBjaGFyIGRidWZbU0lUX1NJWkVdOwotKwl1bnNpZ25lZCBjaGFyIGRidWZbQ09PS0lFX1NJWkVdOwotIAl1bnNpZ25lZCBjaGFyICpvbGQ7Ci0gCWlzY19zdGR0aW1lX3Qgbm93OwotIAlpc2NfdWludDMyX3Qgd2hlbjsKLSAJaXNjX3VpbnQzMl90IG5vbmNlOwotIAlpc2NfYnVmZmVyX3QgZGI7Ci0gCi0rCS8qCi0rCSAqIElmIHdlIGhhdmUgYWxyZWFkeSBzZWVuIGEgRUNTIG9wdGlvbiBza2lwIHRoaXMgRUNTIG9wdGlvbi4KLSsJICovCi0rCWlmICgoY2xpZW50LT5hdHRyaWJ1dGVzICYgTlNfQ0xJRU5UQVRUUl9XQU5UU0lUKSAhPSAwKSB7Ci0rCQlpc2NfYnVmZmVyX2ZvcndhcmQoYnVmLCBvcHRsZW4pOwotKwkJcmV0dXJuOwotKwl9Ci0gCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1dBTlRTSVQ7Ci0gCi0gCWlzY19zdGF0c19pbmNyZW1lbnQobnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0gCQkJICAgIGRuc19uc3N0YXRzY291bnRlcl9zaXRvcHQpOwotIAotLQlpZiAob3B0bGVuICE9IFNJVF9TSVpFKSB7Ci0rCWlmIChvcHRsZW4gIT0gQ09PS0lFX1NJWkUpIHsKLSAJCS8qCi0gCQkgKiBOb3Qgb3VyIHRva2VuLgotIAkJICovCi1AQCAtMTcxNywxNCArMTcyNywxMyBAQCBwcm9jZXNzX3NpdChuc19jbGllbnRfdCAqY2xpZW50LCBpc2NfYnVmZmVyX3QgKmJ1Ziwgc2l6ZV90IG9wdGxlbikgewotIAlpc2NfYnVmZmVyX2luaXQoJmRiLCBkYnVmLCBzaXplb2YoZGJ1ZikpOwotIAljb21wdXRlX3NpdChjbGllbnQsIHdoZW4sIG5vbmNlLCAmZGIpOwotIAotLQlpZiAoIWlzY19zYWZlX21lbWVxdWFsKG9sZCwgZGJ1ZiwgU0lUX1NJWkUpKSB7Ci0rCWlmICghaXNjX3NhZmVfbWVtZXF1YWwob2xkLCBkYnVmLCBDT09LSUVfU0laRSkpIHsKLSAJCWlzY19zdGF0c19pbmNyZW1lbnQobnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0gCQkJCSAgICBkbnNfbnNzdGF0c2NvdW50ZXJfc2l0bm9tYXRjaCk7Ci0gCQlyZXR1cm47Ci0gCX0KLSAJaXNjX3N0YXRzX2luY3JlbWVudChuc19nX3NlcnZlci0+bnNzdGF0cywKLSAJCQkgICAgZG5zX25zc3RhdHNjb3VudGVyX3NpdG1hdGNoKTsKLS0KLSAJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfSEFWRVNJVDsKLSB9Ci0gI2VuZGlmCi1AQCAtMTc4Myw3ICsxNzkyLDkgQEAgcHJvY2Vzc19vcHQobnNfY2xpZW50X3QgKmNsaWVudCwgZG5zX3JkYXRhc2V0X3QgKm9wdCkgewotIAkJCW9wdGxlbiA9IGlzY19idWZmZXJfZ2V0dWludDE2KCZvcHRidWYpOwotIAkJCXN3aXRjaCAob3B0Y29kZSkgewotIAkJCWNhc2UgRE5TX09QVF9OU0lEOgotLQkJCQlpc2Nfc3RhdHNfaW5jcmVtZW50KG5zX2dfc2VydmVyLT5uc3N0YXRzLAotKwkJCQlpZiAoIVdBTlROU0lEKGNsaWVudCkpCi0rCQkJCQlpc2Nfc3RhdHNfaW5jcmVtZW50KAotKwkJCQkJCSAgICBuc19nX3NlcnZlci0+bnNzdGF0cywKLSAJCQkJCQkgICAgZG5zX25zc3RhdHNjb3VudGVyX25zaWRvcHQpOwotIAkJCQljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9XQU5UTlNJRDsKLSAJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci1AQCAtMTc5NCw3ICsxODA1LDkgQEAgcHJvY2Vzc19vcHQobnNfY2xpZW50X3QgKmNsaWVudCwgZG5zX3JkYXRhc2V0X3QgKm9wdCkgewotIAkJCQlicmVhazsKLSAjZW5kaWYKLSAJCQljYXNlIEROU19PUFRfRVhQSVJFOgotLQkJCQlpc2Nfc3RhdHNfaW5jcmVtZW50KG5zX2dfc2VydmVyLT5uc3N0YXRzLAotKwkJCQlpZiAoIVdBTlRFWFBJUkUoY2xpZW50KSkKLSsJCQkJCWlzY19zdGF0c19pbmNyZW1lbnQoCi0rCQkJCQkJICBuc19nX3NlcnZlci0+bnNzdGF0cywKLSAJCQkJCQkgIGRuc19uc3N0YXRzY291bnRlcl9leHBpcmVvcHQpOwotIAkJCQljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9XQU5URVhQSVJFOwotIAkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLWRpZmYgLS1naXQgYS9kb2MvYXJtL25vdGVzLnhtbCBiL2RvYy9hcm0vbm90ZXMueG1sCi1pbmRleCBlYmY0ZjU1Li4wOTVlYjViIDEwMDY0NAotLS0tIGEvZG9jL2FybS9ub3Rlcy54bWwKLSsrKyBiL2RvYy9hcm0vbm90ZXMueG1sCi1AQCAtNTEsNiArNTEsMTMgQEAKLSAgICAgPHRpdGxlPlNlY3VyaXR5IEZpeGVzPC90aXRsZT4KLSAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICA8bGlzdGl0ZW0+Ci0rICAgICAgIDxwYXJhPgotKyAgICAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQgdHJpZ2dlcgotKyAgICAgICAgIGFuIGFzc2VydGlvbiBmYWlsdXJlLiBUaGlzIGZsYXcgaXMgZGlzY2xvc2VkIGluIENWRS0yMDE2LTIwODguCi0rICAgICAgICAgW1JUICM0MTgwOV0KLSsgICAgICAgPC9wYXJhPgotKyAgICAgIDwvbGlzdGl0ZW0+Ci0rICAgICAgPGxpc3RpdGVtPgotIAk8cGFyYT4KLSAJICBTcGVjaWZpYyBBUEwgZGF0YSBjb3VsZCB0cmlnZ2VyIGFuIElOU0lTVC4gIFRoaXMgZmxhdwotIAkgIHdhcyBkaXNjb3ZlcmVkIGJ5IEJyaWFuIE1pdGNoZWxsIGFuZCBpcyBkaXNjbG9zZWQgaW4KLWRpZmYgLS1naXQgYS9saWIvZG5zL3Jlc29sdmVyLmMgYi9saWIvZG5zL3Jlc29sdmVyLmMKLWluZGV4IGE3OTdlM2YuLmJhMWFlMjMgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3Jlc29sdmVyLmMKLSsrKyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotQEAgLTc1MDIsNyArNzUwMiw5IEBAIHByb2Nlc3Nfb3B0KHJlc3F1ZXJ5X3QgKnF1ZXJ5LCBkbnNfcmRhdGFzZXRfdCAqb3B0KSB7Ci0gCXVuc2lnbmVkIGNoYXIgKnNpdDsKLSAJZG5zX2FkYmFkZHJpbmZvX3QgKmFkZHJpbmZvOwotIAl1bnNpZ25lZCBjaGFyIGNvb2tpZVs4XTsKLSsJaXNjX2Jvb2xlYW5fdCBzZWVuX2Nvb2tpZSA9IElTQ19GQUxTRTsKLSAjZW5kaWYKLSsJaXNjX2Jvb2xlYW5fdCBzZWVuX25zaWQgPSBJU0NfRkFMU0U7Ci0gCi0gCXJlc3VsdCA9IGRuc19yZGF0YXNldF9maXJzdChvcHQpOwotIAlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpIHsKLUBAIC03NTE2LDE0ICs3NTE4LDIzIEBAIHByb2Nlc3Nfb3B0KHJlc3F1ZXJ5X3QgKnF1ZXJ5LCBkbnNfcmRhdGFzZXRfdCAqb3B0KSB7Ci0gCQkJSU5TSVNUKG9wdGxlbiA8PSBpc2NfYnVmZmVyX3JlbWFpbmluZ2xlbmd0aCgmb3B0YnVmKSk7Ci0gCQkJc3dpdGNoIChvcHRjb2RlKSB7Ci0gCQkJY2FzZSBETlNfT1BUX05TSUQ6Ci0tCQkJCWlmIChxdWVyeS0+b3B0aW9ucyAmIEROU19GRVRDSE9QVF9XQU5UTlNJRCkKLSsJCQkJaWYgKCFzZWVuX25zaWQgJiYKLSsJCQkJICAgIHF1ZXJ5LT5vcHRpb25zICYgRE5TX0ZFVENIT1BUX1dBTlROU0lEKQotIAkJCQkJbG9nX25zaWQoJm9wdGJ1Ziwgb3B0bGVuLCBxdWVyeSwKLSAJCQkJCQkgSVNDX0xPR19ERUJVRygzKSwKLSAJCQkJCQkgcXVlcnktPmZjdHgtPnJlcy0+bWN0eCk7Ci0gCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotKwkJCQlzZWVuX25zaWQgPSBJU0NfVFJVRTsKLSAJCQkJYnJlYWs7Ci0gI2lmZGVmIElTQ19QTEFURk9STV9VU0VTSVQKLSAJCQljYXNlIEROU19PUFRfQ09PS0lFOgotKwkJCQkvKgotKwkJCQkgKiBPbmx5IHByb2Nlc3MgdGhlIGZpcnN0IGNvb2tpZSBvcHRpb24uCi0rCQkJCSAqLwotKwkJCQlpZiAoc2Vlbl9jb29raWUpIHsKLSsJCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotKwkJCQkJYnJlYWs7Ci0rCQkJCX0KLSAJCQkJc2l0ID0gaXNjX2J1ZmZlcl9jdXJyZW50KCZvcHRidWYpOwotIAkJCQljb21wdXRlX2NjKHF1ZXJ5LCBjb29raWUsIHNpemVvZihjb29raWUpKTsKLSAJCQkJSU5TSVNUKHF1ZXJ5LT5mY3R4LT5ybWVzc2FnZS0+c2l0YmFkID09IDAgJiYKLUBAIC03NTQxLDYgKzc1NTIsNyBAQCBwcm9jZXNzX29wdChyZXNxdWVyeV90ICpxdWVyeSwgZG5zX3JkYXRhc2V0X3QgKm9wdCkgewotIAkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLSAJCQkJaW5jX3N0YXRzKHF1ZXJ5LT5mY3R4LT5yZXMsCi0gCQkJCQkgIGRuc19yZXNzdGF0c2NvdW50ZXJfc2l0aW4pOwotKwkJCQlzZWVuX2Nvb2tpZSA9IElTQ19UUlVFOwotIAkJCQlicmVhazsKLSAjZW5kaWYKLSAJCQlkZWZhdWx0OgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzkzMDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSA5ZDhhYmE4YTc3Nzg3MjFhZTJjZWU2ZTQ2NzBhOGU2YmU2NTkwYjA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogV2VkLCAxMiBPY3QgMjAxNiAxOTo1Mjo1OSArMDkwMAotU3ViamVjdDogW1BBVENIXQotNDQwNi4gICBbc2VjdXJpdHldICAgICAgZ2V0cnJzZXRieW5hbWUgd2l0aCBhIG5vbiBhYnNvbHV0ZSBuYW1lIGNvdWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgaW4gbHdyZXNkCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmFtZWQgd2l0aCBsd3JlcyBjb25maWd1cmVkIGlmIHdoZW4gY29tYmluZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBzZWFyY2ggbGlzdCBlbnRyeSB0aGUgcmVzdWx0aW5nIG5hbWUgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvbyBsb25nLiAoQ1ZFLTIwMTYtMjc3NSkgW1JUICM0MjY5NF0KLQotQmFja3BvcnQgY29tbWl0IDM4Y2MyZDE0ZTIxOGU1MzZlMDEwMmZhNzBkZWVmOTk0NjEzNTQyMzIgZnJvbSB0aGUKLXY5LjExLjBfcGF0Y2ggYnJhbmNoLgotCi1DVkU6IENWRS0yMDE2LTI3NzUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogemhlbmdydW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KLQotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKLSBiaW4vbmFtZWQvbHdkZ3Jibi5jICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKystLS0tLS0KLSBiaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYyB8ICA5ICsrKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCBkMmUzMzYwLi5kMGE5ZDEyIDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw5IEBACi0rNDQwNi4gICBbc2VjdXJpdHldICAgICAgZ2V0cnJzZXRieW5hbWUgd2l0aCBhIG5vbiBhYnNvbHV0ZSBuYW1lIGNvdWxkCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBpbmZpbml0ZSByZWN1cnNpb24gYnVnIGluIGx3cmVzZAotKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lZCB3aXRoIGx3cmVzIGNvbmZpZ3VyZWQgaWYgd2hlbiBjb21iaW5lZAotKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBzZWFyY2ggbGlzdCBlbnRyeSB0aGUgcmVzdWx0aW5nIG5hbWUgaXMKLSsgICAgICAgICAgICAgICAgICAgICAgICB0b28gbG9uZy4gKENWRS0yMDE2LTI3NzUpIFtSVCAjNDI2OTRdCi0rCi0gNDMyMi4gIFtzZWN1cml0eV0gICAgICBEdXBsaWNhdGUgRUROUyBDT09LSUUgb3B0aW9ucyBpbiBhIHJlc3BvbnNlIGNvdWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGFzc2VydGlvbiBmYWlsdXJlLiAoQ1ZFLTIwMTYtMjA4OCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtSVCAjNDE4MDldCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2x3ZGdyYm4uYyBiL2Jpbi9uYW1lZC9sd2RncmJuLmMKLWluZGV4IDNlN2IxNWIuLmUxZTlhZGMgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvbHdkZ3Jibi5jCi0rKysgYi9iaW4vbmFtZWQvbHdkZ3Jibi5jCi1AQCAtNDAzLDE0ICs0MDMsMTggQEAgc3RhcnRfbG9va3VwKG5zX2x3ZGNsaWVudF90ICpjbGllbnQpIHsKLSAJSU5TSVNUKGNsaWVudC0+bG9va3VwID09IE5VTEwpOwotIAotIAlkbnNfZml4ZWRuYW1lX2luaXQoJmFic25hbWUpOwotLQlyZXN1bHQgPSBuc19sd3NlYXJjaGN0eF9jdXJyZW50KCZjbGllbnQtPnNlYXJjaGN0eCwKLS0JCQkJCWRuc19maXhlZG5hbWVfbmFtZSgmYWJzbmFtZSkpOwotKwotIAkvKgotLQkgKiBUaGlzIHdpbGwgcmV0dXJuIGZhaWx1cmUgaWYgcmVsYXRpdmUgbmFtZSArIHN1ZmZpeCBpcyB0b28gbG9uZy4KLS0JICogSW4gdGhpcyBjYXNlLCBqdXN0IGdvIG9uIHRvIHRoZSBuZXh0IGVudHJ5IGluIHRoZSBzZWFyY2ggcGF0aC4KLSsgICAgICAgICAqIFBlcmZvcm0gc2VhcmNoIGFjcm9zcyBhbGwgc2VhcmNoIGRvbWFpbnMgdW50aWwgc3VjY2VzcwotKyAgICAgICAgICogaXMgcmV0dXJuZWQuIFJldHVybiBpbiBjYXNlIG9mIGZhaWx1cmUuCi0gCSAqLwotLQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0tCQlzdGFydF9sb29rdXAoY2xpZW50KTsKLSsgICAgICAgIHdoaWxlIChuc19sd3NlYXJjaGN0eF9jdXJyZW50KCZjbGllbnQtPnNlYXJjaGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBkbnNfZml4ZWRuYW1lX25hbWUoJmFic25hbWUpKSAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChuc19sd3NlYXJjaGN0eF9uZXh0KCZjbGllbnQtPnNlYXJjaGN0eCkgIT0gSVNDX1JfU1VDQ0VTUykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIG5zX2x3ZGNsaWVudF9lcnJvcnBrdHNlbmQoY2xpZW50LCBMV1JFU19SX0ZBSUxVUkUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgfQotIAotIAlyZXN1bHQgPSBkbnNfbG9va3VwX2NyZWF0ZShjbS0+bWN0eCwKLSAJCQkJICAgZG5zX2ZpeGVkbmFtZV9uYW1lKCZhYnNuYW1lKSwKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jCi1pbmRleCBhZDliNTUxLi4zZWI0YTY2IDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jCi1AQCAtNzY4LDcgKzc2OCwxNCBAQCBtYWluKHZvaWQpIHsKLSAJdGVzdF9nZXRycnNldGJ5bmFtZSgiZS5leGFtcGxlMS4iLCAxLCAyLCAxLCAxLCAxKTsKLSAJdGVzdF9nZXRycnNldGJ5bmFtZSgiZS5leGFtcGxlMS4iLCAxLCA0NiwgMiwgMCwgMSk7Ci0gCXRlc3RfZ2V0cnJzZXRieW5hbWUoIiIsIDEsIDEsIDAsIDAsIDApOwotLQotKyAgICAgICAgdGVzdF9nZXRycnNldGJ5bmFtZSgiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5IiwgMSwgMSwgMCwgMCwgMCk7Ci0rIAotIAlpZiAoZmFpbHMgPT0gMCkKLSAJCXByaW50ZigiSTpva1xuIik7Ci0gCXJldHVybiAoZmFpbHMpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzhiZjYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLUZyb20gMTE3MTExMTY1NzA4MTk3MDU4NWY5ZjBlMDNiNDc2MzU4YzMzYTZjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IFdlZCwgMTIgT2N0IDIwMTYgMjA6MzY6NTIgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gCi00NDY3LiAgIFtzZWN1cml0eV0gICAgICBJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhbiBhc3NlcnRpb24gd2hlbiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyBhIG1lc3NhZ2UuIChDVkUtMjAxNi0yNzc2KSBbUlQgIzQzMTM5XQotCi1CYWNrcG9ydCBjb21taXQgMmJkMDkyMmNmOTk1YjlhYzIwNWZjODNiYWY3ZTIyMGI5NWM2YmYxMiBmcm9tIHRoZQotdjkuMTEuMF9wYXRjaCBicmFuY2guCi0KLUNWRTogQ1ZFLTIwMTYtMjc3NgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiB6aGVuZ3J1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgotCi0tLS0KLSBDSEFOR0VTICAgICAgICAgICB8ICAzICsrKwotIGxpYi9kbnMvbWVzc2FnZS5jIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCBkMGE5ZDEyLi41YzhjNjFhIDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw2IEBACi0rNDQ2Ny4gICBbc2VjdXJpdHldICAgICAgSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIHdoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgYSBtZXNzYWdlLiAoQ1ZFLTIwMTYtMjc3NikgW1JUICM0MzEzOV0KLSsKLSA0NDA2LiAgIFtzZWN1cml0eV0gICAgICBnZXRycnNldGJ5bmFtZSB3aXRoIGEgbm9uIGFic29sdXRlIG5hbWUgY291bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgaW4gbHdyZXNkCi0gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5hbWVkIHdpdGggbHdyZXMgY29uZmlndXJlZCBpZiB3aGVuIGNvbWJpbmVkCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9tZXNzYWdlLmMgYi9saWIvZG5zL21lc3NhZ2UuYwotaW5kZXggNmI1YjRiYi4uYjc0ZGM4MSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvbWVzc2FnZS5jCi0rKysgYi9saWIvZG5zL21lc3NhZ2UuYwotQEAgLTE3NTQsNyArMTc1NCw3IEBAIGRuc19tZXNzYWdlX3JlbmRlcmJlZ2luKGRuc19tZXNzYWdlX3QgKm1zZywgZG5zX2NvbXByZXNzX3QgKmNjdHgsCi0gCWlmIChyLmxlbmd0aCA8IEROU19NRVNTQUdFX0hFQURFUkxFTikKLSAJCXJldHVybiAoSVNDX1JfTk9TUEFDRSk7Ci0gCi0tCWlmIChyLmxlbmd0aCA8IG1zZy0+cmVzZXJ2ZWQpCi0rICAgICAgICBpZiAoci5sZW5ndGggLSBETlNfTUVTU0FHRV9IRUFERVJMRU4gPCBtc2ctPnJlc2VydmVkKQotIAkJcmV0dXJuIChJU0NfUl9OT1NQQUNFKTsKLSAKLSAJLyoKLUBAIC0xODk1LDggKzE4OTUsMjkgQEAgbm9yZW5kZXJfcmRhdGFzZXQoY29uc3QgZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCB1bnNpZ25lZCBpbnQgb3B0aW9ucywKLSAKLSAJcmV0dXJuIChJU0NfVFJVRSk7Ci0gfQotLQotICNlbmRpZgotKwotK3N0YXRpYyBpc2NfcmVzdWx0X3QKLStyZW5kZXJzZXQoZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBkbnNfbmFtZV90ICpvd25lcl9uYW1lLAotKyAgICAgICAgIGRuc19jb21wcmVzc190ICpjY3R4LCBpc2NfYnVmZmVyX3QgKnRhcmdldCwKLSsgICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQsIHVuc2lnbmVkIGludCBvcHRpb25zLCB1bnNpZ25lZCBpbnQgKmNvdW50cCkKLSt7Ci0rICAgICAgIGlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCi0rICAgICAgIC8qCi0rICAgICAgICAqIFNocmluayB0aGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciBieSB0aGUgcmVzZXJ2ZWQgYW1vdW50LgotKyAgICAgICAgKi8KLSsgICAgICAgaWYgKHRhcmdldC0+bGVuZ3RoIC0gdGFyZ2V0LT51c2VkIDwgcmVzZXJ2ZWQpCi0rICAgICAgICAgICAgICAgcmV0dXJuIChJU0NfUl9OT1NQQUNFKTsKLSsKLSsgICAgICAgdGFyZ2V0LT5sZW5ndGggLT0gcmVzZXJ2ZWQ7Ci0rICAgICAgIHJlc3VsdCA9IGRuc19yZGF0YXNldF90b3dpcmUocmRhdGFzZXQsIG93bmVyX25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2N0eCwgdGFyZ2V0LCBvcHRpb25zLCBjb3VudHApOwotKyAgICAgICB0YXJnZXQtPmxlbmd0aCArPSByZXNlcnZlZDsKLSsKLSsgICAgICAgcmV0dXJuIChyZXN1bHQpOwotK30KLSsKLSBpc2NfcmVzdWx0X3QKLSBkbnNfbWVzc2FnZV9yZW5kZXJzZWN0aW9uKGRuc19tZXNzYWdlX3QgKm1zZywgZG5zX3NlY3Rpb25fdCBzZWN0aW9uaWQsCi0gCQkJICB1bnNpZ25lZCBpbnQgb3B0aW9ucykKLUBAIC0xOTM5LDYgKzE5NjAsOCBAQCBkbnNfbWVzc2FnZV9yZW5kZXJzZWN0aW9uKGRuc19tZXNzYWdlX3QgKm1zZywgZG5zX3NlY3Rpb25fdCBzZWN0aW9uaWQsCi0gCS8qCi0gCSAqIFNocmluayB0aGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciBieSB0aGUgcmVzZXJ2ZWQgYW1vdW50LgotIAkgKi8KLSsgICAgICAgIGlmIChtc2ctPmJ1ZmZlci0+bGVuZ3RoIC0gbXNnLT5idWZmZXItPnVzZWQgPCBtc2ctPnJlc2VydmVkKQotKyAgICAgICAgICAgICAgICByZXR1cm4gKElTQ19SX05PU1BBQ0UpOwotIAltc2ctPmJ1ZmZlci0+bGVuZ3RoIC09IG1zZy0+cmVzZXJ2ZWQ7Ci0gCi0gCXRvdGFsID0gMDsKLUBAIC0yMjE0LDkgKzIyMzcsOCBAQCBkbnNfbWVzc2FnZV9yZW5kZXJlbmQoZG5zX21lc3NhZ2VfdCAqbXNnKSB7Ci0gCQkgKiBSZW5kZXIuCi0gCQkgKi8KLSAJCWNvdW50ID0gMDsKLS0JCXJlc3VsdCA9IGRuc19yZGF0YXNldF90b3dpcmUobXNnLT5vcHQsIGRuc19yb290bmFtZSwKLS0JCQkJCSAgICAgbXNnLT5jY3R4LCBtc2ctPmJ1ZmZlciwgMCwKLS0JCQkJCSAgICAgJmNvdW50KTsKLSsgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVuZGVyc2V0KG1zZy0+b3B0LCBkbnNfcm9vdG5hbWUsIG1zZy0+Y2N0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+YnVmZmVyLCBtc2ctPnJlc2VydmVkLCAwLCAmY291bnQpOwotIAkJbXNnLT5jb3VudHNbRE5TX1NFQ1RJT05fQURESVRJT05BTF0gKz0gY291bnQ7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJcmV0dXJuIChyZXN1bHQpOwotQEAgLTIyMzIsOSArMjI1NCw4IEBAIGRuc19tZXNzYWdlX3JlbmRlcmVuZChkbnNfbWVzc2FnZV90ICptc2cpIHsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCQljb3VudCA9IDA7Ci0tCQlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKG1zZy0+dHNpZywgbXNnLT50c2lnbmFtZSwKLS0JCQkJCSAgICAgbXNnLT5jY3R4LCBtc2ctPmJ1ZmZlciwgMCwKLS0JCQkJCSAgICAgJmNvdW50KTsKLSsgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVuZGVyc2V0KG1zZy0+dHNpZywgbXNnLT50c2lnbmFtZSwgbXNnLT5jY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5idWZmZXIsIG1zZy0+cmVzZXJ2ZWQsIDAsICZjb3VudCk7Ci0gCQltc2ctPmNvdW50c1tETlNfU0VDVElPTl9BRERJVElPTkFMXSArPSBjb3VudDsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlyZXR1cm4gKHJlc3VsdCk7Ci1AQCAtMjI1NSw5ICsyMjc2LDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyZW5kKGRuc19tZXNzYWdlX3QgKm1zZykgewotIAkJICogdGhlIG93bmVyIG5hbWUgb2YgYSBTSUcoMCkgaXMgaXJyZWxldmFudCwgYW5kIHdpbGwgbm90Ci0gCQkgKiBiZSBzZXQgaW4gYSBtZXNzYWdlIGJlaW5nIHJlbmRlcmVkLgotIAkJICovCi0tCQlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKG1zZy0+c2lnMCwgZG5zX3Jvb3RuYW1lLAotLQkJCQkJICAgICBtc2ctPmNjdHgsIG1zZy0+YnVmZmVyLCAwLAotLQkJCQkJICAgICAmY291bnQpOwotKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZW5kZXJzZXQobXNnLT5zaWcwLCBkbnNfcm9vdG5hbWUsIG1zZy0+Y2N0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+YnVmZmVyLCBtc2ctPnJlc2VydmVkLCAwLCAmY291bnQpOwotIAkJbXNnLT5jb3VudHNbRE5TX1NFQ1RJT05fQURESVRJT05BTF0gKz0gY291bnQ7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJcmV0dXJuIChyZXN1bHQpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtNjE3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi02MTcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWJjMjExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi02MTcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA5MCArMCwwIEBACi1Gcm9tIDFiYmNmZTJmYzg0ZjU3YjFlNGUwNzVmYjNiYzJhMWRkMGEzYTg1MWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBXZWQsIDIgTm92IDIwMTYgMTc6MzE6MjcgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gNDUwNC4gW3NlY3VyaXR5XSBBbGxvdyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBpbiBhCi0gem9uZSB0byBiZSBzcGVjaWZpZWQuIFRoaXMgcHJvdmlkZXMgYSBjb250cm9sIGZvciBpc3N1ZXMgcmFpc2VkIGluCi0gQ1ZFLTIwMTYtNjE3MC4gW1JUICM0MjE0M10KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNWY4NDEyYTRjYjVlZTE0YTBlOGNkZGQ0MTA3ODU0YjQwZWUzMjkxZSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9YmluZDkuZ2l0O2E9Y29tbWl0O2g9MWJiY2ZlMmZjODRmNTdiMWU0ZTA3NWZiM2JjMmExZGQwYTNhODUxZl0KLQotQ1ZFOiBDVkUtMjAxNi02MTcwCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIENIQU5HRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCi0gYmluL25hbWVkL2NvbmZpZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBiaW4vbmFtZWQvbmFtZWQuY29uZi5kb2Nib29rICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwotIGJpbi9uYW1lZC91cGRhdGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArKysKLSBiaW4vbmFtZWQvem9uZWNvbmYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKLSBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL2NsZWFuLnNoICAgICAgICAgICAgICAgfCAgIDEgKwotIGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL25hbWVkLmNvbmYgICAgICAgICB8ICAgNyArKwotIGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL3Rvby1iaWcudGVzdC5kYi5pbiB8ICAxMCArKwotIGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvc2V0dXAuc2ggICAgICAgICAgICAgICB8ICAgMiArCi0gYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS90ZXN0cy5zaCAgICAgICAgICAgICAgIHwgIDE1ICsrKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9jbGVhbi5zaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9heGZyLXRvby1iaWcuZGIgICAgICAgIHwgIDEwICsrCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9peGZyLXRvby1iaWcuZGIuaW4gICAgIHwgIDEzICsrKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvbmFtZWQuY29uZiAgICAgICAgICAgICB8ICAxMSArKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczYvbmFtZWQuY29uZiAgICAgICAgICAgICB8ICAxNCArKysKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvc2V0dXAuc2ggICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci90ZXN0cy5zaCAgICAgICAgICAgICAgICAgICB8ICAyNiArKysrKwotIGRvYy9hcm0vQnY5QVJNLWJvb2sueG1sICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMSArKysrCi0gZG9jL2FybS9ub3Rlcy54bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsrCi0gbGliL2JpbmQ5L2NoZWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBsaWIvZG5zL2RiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysrCi0gbGliL2Rucy9lY2RiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCi0gbGliL2Rucy9pbmNsdWRlL2Rucy9kYi5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrKysKLSBsaWIvZG5zL2luY2x1ZGUvZG5zL3JkYXRhc2xhYi5oICAgICAgICAgICAgICAgICAgfCAgMTMgKysrCi0gbGliL2Rucy9pbmNsdWRlL2Rucy9yZXN1bHQuaCAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCi0gbGliL2Rucy9pbmNsdWRlL2Rucy96b25lLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKystCi0gbGliL2Rucy9yYnRkYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKy0tCi0gbGliL2Rucy9yZGF0YXNsYWIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwotIGxpYi9kbnMvcmVzdWx0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQotIGxpYi9kbnMvc2RiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQotIGxpYi9kbnMvc2Rsei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQotIGxpYi9kbnMveGZyaW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArKystCi0gbGliL2Rucy96b25lLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsrKy0KLSBsaWIvaXNjY2ZnL25hbWVkY29uZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIDM0IGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvdG9vLWJpZy50ZXN0LmRiLmluCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvYXhmci10b28tYmlnLmRiCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvaXhmci10b28tYmlnLmRiLmluCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggNDFjZmNlNS4uOTdkMmU2MCAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsNyBAQAotKzQ1MDQuCVtzZWN1cml0eV0JQWxsb3cgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMgaW4gYSB6b25lIHRvCi0rCQkJYmUgc3BlY2lmaWVkLiAgVGhpcyBwcm92aWRlcyBhIGNvbnRyb2wgZm9yIGlzc3VlcwotKwkJCXJhaXNlZCBpbiBDVkUtMjAxNi02MTcwLiBbUlQgIzQyMTQzXQotKwotIDQ0ODkuCVtzZWN1cml0eV0JSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYXNzZXJ0aW9ucyB3aGVuIHByb2Nlc3NpbmcKLSAJCQlhIHJlc3BvbnNlLiAoQ1ZFLTIwMTYtODg2NCkgW1JUICM0MzQ2NV0KLSAKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY29uZmlnLmMgYi9iaW4vbmFtZWQvY29uZmlnLmMKLWluZGV4IGYwNjM0OGMuLmMyNGUzMzQgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY29uZmlnLmMKLSsrKyBiL2Jpbi9uYW1lZC9jb25maWcuYwotQEAgLTIwOSw2ICsyMDksNyBAQCBvcHRpb25zIHtcblwKLSAJbWF4LXRyYW5zZmVyLXRpbWUtb3V0IDEyMDtcblwKLSAJbWF4LXRyYW5zZmVyLWlkbGUtaW4gNjA7XG5cCi0gCW1heC10cmFuc2Zlci1pZGxlLW91dCA2MDtcblwKLSsJbWF4LXJlY29yZHMgMDtcblwKLSAJbWF4LXJldHJ5LXRpbWUgMTIwOTYwMDsgLyogMiB3ZWVrcyAqL1xuXAotIAltaW4tcmV0cnktdGltZSA1MDA7XG5cCi0gCW1heC1yZWZyZXNoLXRpbWUgMjQxOTIwMDsgLyogNCB3ZWVrcyAqL1xuXAotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9uYW1lZC5jb25mLmRvY2Jvb2sgYi9iaW4vbmFtZWQvbmFtZWQuY29uZi5kb2Nib29rCi1pbmRleCA0Yzk5YTYxLi5jMmQxNzNhIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL25hbWVkLmNvbmYuZG9jYm9vawotKysrIGIvYmluL25hbWVkL25hbWVkLmNvbmYuZG9jYm9vawotQEAgLTMzOCw2ICszMzgsNyBAQCBvcHRpb25zIHsKLSAJfTsKLSAKLSAJbWF4LWpvdXJuYWwtc2l6ZSA8cmVwbGFjZWFibGU+c2l6ZV9ub19kZWZhdWx0PC9yZXBsYWNlYWJsZT47Ci0rCW1heC1yZWNvcmRzIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLW91dCA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItaWRsZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotQEAgLTUyNyw2ICs1MjgsNyBAQCB2aWV3IDxyZXBsYWNlYWJsZT5zdHJpbmc8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+b3B0aW9uYWxfY2xhc3M8L3JlcGxhY2VhYmxlPgotIAl9OwotIAotIAltYXgtam91cm5hbC1zaXplIDxyZXBsYWNlYWJsZT5zaXplX25vX2RlZmF1bHQ8L3JlcGxhY2VhYmxlPjsKLSsJbWF4LXJlY29yZHMgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtb3V0IDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci1pZGxlLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci1AQCAtNjI0LDYgKzYyNiw3IEBAIHpvbmUgPHJlcGxhY2VhYmxlPnN0cmluZzwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5vcHRpb25hbF9jbGFzczwvcmVwbGFjZWFibGU+Ci0gCX07Ci0gCi0gCW1heC1qb3VybmFsLXNpemUgPHJlcGxhY2VhYmxlPnNpemVfbm9fZGVmYXVsdDwvcmVwbGFjZWFibGU+OwotKwltYXgtcmVjb3JkcyA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1vdXQgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLWlkbGUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvdXBkYXRlLmMgYi9iaW4vbmFtZWQvdXBkYXRlLmMKLWluZGV4IDgzYjFhMDUuLmNjMmE2MTEgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvdXBkYXRlLmMKLSsrKyBiL2Jpbi9uYW1lZC91cGRhdGUuYwotQEAgLTI0NTUsNiArMjQ1NSw4IEBAIHVwZGF0ZV9hY3Rpb24oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCWlzY19ib29sZWFuX3QgaGFkX2Ruc2tleTsKLSAJZG5zX3JkYXRhdHlwZV90IHByaXZhdGV0eXBlID0gZG5zX3pvbmVfZ2V0cHJpdmF0ZXR5cGUoem9uZSk7Ci0gCWRuc190dGxfdCBtYXh0dGwgPSAwOwotKwlpc2NfdWludDMyX3QgbWF4cmVjb3JkczsKLSsJaXNjX3VpbnQ2NF90IHJlY29yZHM7Ci0gCi0gCUlOU0lTVChldmVudC0+ZXZfdHlwZSA9PSBETlNfRVZFTlRfVVBEQVRFKTsKLSAKLUBAIC0zMTM4LDYgKzMxNDAsMjAgQEAgdXBkYXRlX2FjdGlvbihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQl9Ci0gCQl9Ci0gCi0rCQltYXhyZWNvcmRzID0gZG5zX3pvbmVfZ2V0bWF4cmVjb3Jkcyh6b25lKTsKLSsJCWlmIChtYXhyZWNvcmRzICE9IDBVKSB7Ci0rCQkJcmVzdWx0ID0gZG5zX2RiX2dldHNpemUoZGIsIHZlciwgJnJlY29yZHMsIE5VTEwpOwotKwkJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJiByZWNvcmRzID4gbWF4cmVjb3JkcykgewotKwkJCQl1cGRhdGVfbG9nKGNsaWVudCwgem9uZSwgSVNDX0xPR19FUlJPUiwKLSsJCQkJCSAgICJyZWNvcmRzIGluIHpvbmUgKCUiCi0rCQkJCQkgICBJU0NfUFJJTlRfUVVBREZPUk1BVAotKwkJCQkJICAgInUpIGV4Y2VlZHMgbWF4LXJlY29yZHMgKCV1KSIsCi0rCQkJCQkgICByZWNvcmRzLCBtYXhyZWNvcmRzKTsKLSsJCQkJcmVzdWx0ID0gRE5TX1JfVE9PTUFOWVJFQ09SRFM7Ci0rCQkJCWdvdG8gZmFpbHVyZTsKLSsJCQl9Ci0rCQl9Ci0rCi0gCQlqb3VybmFsZmlsZSA9IGRuc196b25lX2dldGpvdXJuYWwoem9uZSk7Ci0gCQlpZiAoam91cm5hbGZpbGUgIT0gTlVMTCkgewotIAkJCXVwZGF0ZV9sb2coY2xpZW50LCB6b25lLCBMT0dMRVZFTF9ERUJVRywKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvem9uZWNvbmYuYyBiL2Jpbi9uYW1lZC96b25lY29uZi5jCi1pbmRleCA0ZWUzZGZlLi4xNGRkOGNlIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL3pvbmVjb25mLmMKLSsrKyBiL2Jpbi9uYW1lZC96b25lY29uZi5jCi1AQCAtOTc4LDYgKzk3OCwxMyBAQCBuc196b25lX2NvbmZpZ3VyZShjb25zdCBjZmdfb2JqX3QgKmNvbmZpZywgY29uc3QgY2ZnX29ial90ICp2Y29uZmlnLAotIAkJCWRuc196b25lX3NldG1heHR0bChyYXcsIG1heHR0bCk7Ci0gCX0KLSAKLSsJb2JqID0gTlVMTDsKLSsJcmVzdWx0ID0gbnNfY29uZmlnX2dldChtYXBzLCAibWF4LXJlY29yZHMiLCAmb2JqKTsKLSsJSU5TSVNUKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmIG9iaiAhPSBOVUxMKTsKLSsJZG5zX3pvbmVfc2V0bWF4cmVjb3JkcyhtYXliZXJhdywgY2ZnX29ial9hc3VpbnQzMihvYmopKTsKLSsJaWYgKHpvbmUgIT0gbWF5YmVyYXcpCi0rCQlkbnNfem9uZV9zZXRtYXhyZWNvcmRzKHpvbmUsIDApOwotKwotIAlpZiAocmF3ICE9IE5VTEwgJiYgZmlsZW5hbWUgIT0gTlVMTCkgewotICNkZWZpbmUgU0lHTkVEICIuc2lnbmVkIgotIAkJc2l6ZV90IHNpZ25lZGxlbiA9IHN0cmxlbihmaWxlbmFtZSkgKyBzaXplb2YoU0lHTkVEKTsKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL2NsZWFuLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9jbGVhbi5zaAotaW5kZXggYWFlZmMwMi4uZWEyNTU0NSAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvY2xlYW4uc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvY2xlYW4uc2gKLUBAIC0zMiw2ICszMiw3IEBAIHJtIC1mIG5zMy9leGFtcGxlLmRiLmpubCBuczMvZXhhbXBsZS5kYgotIHJtIC1mIG5zMy9uc2VjM3BhcmFtLnRlc3QuZGIuc2lnbmVkLmpubCBuczMvbnNlYzNwYXJhbS50ZXN0LmRiIG5zMy9uc2VjM3BhcmFtLnRlc3QuZGIuc2lnbmVkIG5zMy9kc3NldC1uc2VjM3BhcmFtLnRlc3QuCi0gcm0gLWYgbnMzL2Ruc2tleS50ZXN0LmRiLnNpZ25lZC5qbmwgbnMzL2Ruc2tleS50ZXN0LmRiIG5zMy9kbnNrZXkudGVzdC5kYi5zaWduZWQgbnMzL2Rzc2V0LWRuc2tleS50ZXN0LgotIHJtIC1mIG5zMy9LKgotK3JtIC1mIG5zMy90b28tYmlnLnRlc3QuZGIKLSBybSAtZiBkaWcub3V0LioKLSBybSAtZiBqcC5vdXQubnMzLioKLSBybSAtZiBLeHh4LioKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy9uYW1lZC5jb25mIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvbmFtZWQuY29uZgotaW5kZXggMmFiZDUyMi4uNjhmZjI3YSAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL25hbWVkLmNvbmYKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL25hbWVkLmNvbmYKLUBAIC02MCwzICs2MCwxMCBAQCB6b25lICJkbnNrZXkudGVzdCIgewotIAlhbGxvdy11cGRhdGUgeyBhbnk7IH07Ci0gCWZpbGUgImRuc2tleS50ZXN0LmRiLnNpZ25lZCI7Ci0gfTsKLSsKLSt6b25lICJ0b28tYmlnLnRlc3QiIHsKLSsJdHlwZSBtYXN0ZXI7Ci0rCWFsbG93LXVwZGF0ZSB7IGFueTsgfTsKLSsJbWF4LXJlY29yZHMgMzsKLSsJZmlsZSAidG9vLWJpZy50ZXN0LmRiIjsKLSt9OwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL3Rvby1iaWcudGVzdC5kYi5pbiBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL3Rvby1iaWcudGVzdC5kYi5pbgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdmZjFlNGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL3Rvby1iaWcudGVzdC5kYi5pbgotQEAgLTAsMCArMSwxMCBAQAotKzsgQ29weXJpZ2h0IChDKSAyMDE2ICBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0sIEluYy4gKCJJU0MiKQotKzsKLSs7IFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSs7IExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLSs7IGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi0rCi0rJFRUTCAxMAotK3Rvby1iaWcudGVzdC4gSU4gU09BIHRvby1iaWcudGVzdC4gaG9zdG1hc3Rlci50b28tYmlnLnRlc3QuIDEgMzYwMCA5MDAgMjQxOTIwMCAzNjAwCi0rdG9vLWJpZy50ZXN0LiBJTiBOUyB0b28tYmlnLnRlc3QuCi0rdG9vLWJpZy50ZXN0LiBJTiBBIDEwLjUzLjAuMwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvc2V0dXAuc2ggYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3NldHVwLnNoCi1pbmRleCA4MjgyNTVlLi40M2M0MDk0IDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9zZXR1cC5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9zZXR1cC5zaAotQEAgLTI3LDEyICsyNywxNCBAQCB0ZXN0IC1yICRSQU5ERklMRSB8fCAkR0VOUkFORE9NIDQwMCAkUkFOREZJTEUKLSBybSAtZiBuczEvKi5qbmwgbnMxL2V4YW1wbGUuZGIgbnMyLyouam5sIG5zMi9leGFtcGxlLmJrCi0gcm0gLWYgbnMyL3VwZGF0ZS5iayBuczIvdXBkYXRlLmFsdC5iawotIHJtIC1mIG5zMy9leGFtcGxlLmRiLmpubAotK3JtIC1mIG5zMy90b28tYmlnLnRlc3QuZGIuam5sCi0gCi0gY3AgLWYgbnMxL2V4YW1wbGUxLmRiIG5zMS9leGFtcGxlLmRiCi0gc2VkICdzL2V4YW1wbGUubmlsL290aGVyLm5pbC9nJyBuczEvZXhhbXBsZTEuZGIgPiBuczEvb3RoZXIuZGIKLSBzZWQgJ3MvZXhhbXBsZS5uaWwvdW5peHRpbWUubmlsL2cnIG5zMS9leGFtcGxlMS5kYiA+IG5zMS91bml4dGltZS5kYgotIHNlZCAncy9leGFtcGxlLm5pbC9rZXl0ZXN0cy5uaWwvZycgbnMxL2V4YW1wbGUxLmRiID4gbnMxL2tleXRlc3RzLmRiCi0gY3AgLWYgbnMzL2V4YW1wbGUuZGIuaW4gbnMzL2V4YW1wbGUuZGIKLStjcCAtZiBuczMvdG9vLWJpZy50ZXN0LmRiLmluIG5zMy90b28tYmlnLnRlc3QuZGIKLSAKLSAjIHVwZGF0ZV90ZXN0LnBsIGhhcyBpdHMgb3duIHpvbmUgZmlsZSBiZWNhdXNlIGl0Ci0gIyByZXF1aXJlcyBhIHNwZWNpZmljIE5TIHJlY29yZCBzZXQuCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS90ZXN0cy5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvdGVzdHMuc2gKLWluZGV4IDc4ZDUwMWUuLjBhNmJiZDMgMTAwNzU1Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3Rlc3RzLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3Rlc3RzLnNoCi1AQCAtNTgxLDUgKzU4MSwyMCBAQCBpZiBbICRyZXQgLW5lIDAgXTsgdGhlbgotICAgICBzdGF0dXM9MQotIGZpCi0gCi0rbj1gZXhwciAkbiArIDFgCi0rZWNobyAiSTpjaGVjayB0aGF0IGFkZGluZyB0b28gbWFueSByZWNvcmRzIGlzIGJsb2NrZWQgKCRuKSIKLStyZXQ9MAotKyROU1VQREFURSAtdiA8PCBFT0YgPiBuc3VwZGF0ZS5vdXQtJG4gMj4mMSAmJiByZXQ9MQotK3NlcnZlciAxMC41My4wLjMgNTMwMAotK3pvbmUgdG9vLWJpZy50ZXN0LgotK3VwZGF0ZSBhZGQgcjEudG9vLWJpZy50ZXN0IDM2MDAgSU4gVFhUIHIxLnRvby1iaWcudGVzdAotK3NlbmQKLStFT0YKLStncmVwICJ1cGRhdGUgZmFpbGVkOiBTRVJWRkFJTCIgbnN1cGRhdGUub3V0LSRuID4gL2Rldi9udWxsIHx8IHJldD0xCi0rRElHICt0Y3AgQDEwLjUzLjAuMyAtcCA1MzAwIHIxLnRvby1iaWcudGVzdCBUWFQgPiBkaWcub3V0Lm5zMy50ZXN0JG4KLStncmVwICJzdGF0dXM6IE5YRE9NQUlOIiBkaWcub3V0Lm5zMy50ZXN0JG4gPiAvZGV2L251bGwgfHwgcmV0PTEKLStncmVwICJyZWNvcmRzIGluIHpvbmUgKDQpIGV4Y2VlZHMgbWF4LXJlY29yZHMgKDMpIiBuczMvbmFtZWQucnVuID4gL2Rldi9udWxsIHx8IHJldD0xCi0rWyAkcmV0ID0gMCBdIHx8IHsgZWNobyBJOmZhaWxlZDsgc3RhdHVzPTE7IH0KLSsKLSBlY2hvICJJOmV4aXQgc3RhdHVzOiAkc3RhdHVzIgotIGV4aXQgJHN0YXR1cwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9jbGVhbi5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9jbGVhbi5zaAotaW5kZXggNDhhYTE1OS4uZGE2MmEzMyAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9jbGVhbi5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL2NsZWFuLnNoCi1AQCAtMzYsMyArMzYsNCBAQCBybSAtZiBuczcvKi5kYiBuczcvKi5iayBuczcvKi5qbmwKLSBybSAtZiAqL25hbWVkLm1lbXN0YXRzCi0gcm0gLWYgKi9uYW1lZC5ydW4KLSBybSAtZiAqL2Fucy5ydW4KLStybSAtZiBuczEvaXhmci10b28tYmlnLmRiIG5zMS9peGZyLXRvby1iaWcuZGIuam5sCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9heGZyLXRvby1iaWcuZGIgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2F4ZnItdG9vLWJpZy5kYgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ0Mzc2MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvYXhmci10b28tYmlnLmRiCi1AQCAtMCwwICsxLDEwIEBACi0rOyBDb3B5cmlnaHQgKEMpIDIwMTYgIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSwgSW5jLiAoIklTQyIpCi0rOwotKzsgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotKzsgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotKzsgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KLSsKLSskVFRMCTM2MDAKLStACUlOCVNPQQkuIC4gMCAwIDAgMCAwCi0rQAlJTglOUwkuCi0rJEdFTkVSQVRFIDEtMjkJaG9zdCQJQQkxLjIuMy4kCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9peGZyLXRvby1iaWcuZGIuaW4gYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2l4ZnItdG9vLWJpZy5kYi5pbgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMxOGJiNzcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvaXhmci10b28tYmlnLmRiLmluCi1AQCAtMCwwICsxLDEzIEBACi0rOyBDb3B5cmlnaHQgKEMpIDIwMTYgIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSwgSW5jLiAoIklTQyIpCi0rOwotKzsgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotKzsgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotKzsgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KLSsKLSskVFRMCTM2MDAKLStACUlOCVNPQQkuIC4gMCAwIDAgMCAwCi0rQAlJTglOUwluczEKLStACUlOCU5TCW5zNgotK25zMQlJTglBCTEwLjUzLjAuMQotK25zNglJTglBCTEwLjUzLjAuNgotKyRHRU5FUkFURSAxLTI1CWhvc3QkCUEJMS4yLjMuJAotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvbmFtZWQuY29uZiBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvbmFtZWQuY29uZgotaW5kZXggMDdkYWQ4NS4uMWQyOTI5MiAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvbmFtZWQuY29uZgotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9uYW1lZC5jb25mCi1AQCAtNDQsMyArNDQsMTQgQEAgem9uZSAic2xhdmUiIHsKLSAJdHlwZSBtYXN0ZXI7Ci0gCWZpbGUgInNsYXZlLmRiIjsKLSB9OwotKwotK3pvbmUgImF4ZnItdG9vLWJpZyIgewotKyAgICAgICAgdHlwZSBtYXN0ZXI7Ci0rICAgICAgICBmaWxlICJheGZyLXRvby1iaWcuZGIiOwotK307Ci0rCi0rem9uZSAiaXhmci10b28tYmlnIiB7Ci0rICAgICAgICB0eXBlIG1hc3RlcjsKLSsJYWxsb3ctdXBkYXRlIHsgYW55OyB9OwotKyAgICAgICAgZmlsZSAiaXhmci10b28tYmlnLmRiIjsKLSt9OwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczYvbmFtZWQuY29uZiBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczYvbmFtZWQuY29uZgotaW5kZXggYzk0MjFiMS4uYTEyYTkyYyAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczYvbmFtZWQuY29uZgotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zNi9uYW1lZC5jb25mCi1AQCAtNTIsMyArNTIsMTcgQEAgem9uZSAic2xhdmUiIHsKLSAJbWFzdGVycyB7IDEwLjUzLjAuMTsgfTsKLSAJZmlsZSAic2xhdmUuYmsiOwotIH07Ci0rCi0rem9uZSAiYXhmci10b28tYmlnIiB7Ci0rCXR5cGUgc2xhdmU7Ci0rCW1heC1yZWNvcmRzIDMwOwotKwltYXN0ZXJzIHsgMTAuNTMuMC4xOyB9OwotKwlmaWxlICJheGZyLXRvby1iaWcuYmsiOwotK307Ci0rCi0rem9uZSAiaXhmci10b28tYmlnIiB7Ci0rCXR5cGUgc2xhdmU7Ci0rCW1heC1yZWNvcmRzIDMwOwotKwltYXN0ZXJzIHsgMTAuNTMuMC4xOyB9OwotKwlmaWxlICJpeGZyLXRvby1iaWcuYmsiOwotK307Ci1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3NldHVwLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3NldHVwLnNoCi1pbmRleCA1NmNhOTAxLi5jNTVhYmY4IDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3NldHVwLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvc2V0dXAuc2gKLUBAIC0zMywzICszMyw1IEBAIGNwIC1mIG5zNC9uYW1lZC5jb25mLmJhc2UgbnM0L25hbWVkLmNvbmYKLSAKLSBjcCBuczIvc2xhdmUuZGIuaW4gbnMyL3NsYXZlLmRiCi0gdG91Y2ggLXQgMjAwMTAxMDEwMDAwIG5zMi9zbGF2ZS5kYgotKwotK2NwIC1mIG5zMS9peGZyLXRvby1iaWcuZGIuaW4gbnMxL2l4ZnItdG9vLWJpZy5kYgotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci90ZXN0cy5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci90ZXN0cy5zaAotaW5kZXggNjdiMmExYS4uZmUzM2YwYSAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci90ZXN0cy5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3Rlc3RzLnNoCi1AQCAtMzY4LDUgKzM2OCwzMSBAQCAkRElHQ01EIG5pbC4gVFhUIHwgZ3JlcCAnaW5jb3JyZWN0IGtleSBBWEZSJyA+L2Rldi9udWxsICYmIHsKLSAgICAgc3RhdHVzPTEKLSB9Ci0gCi0rbj1gZXhwciAkbiArIDFgCi0rZWNobyAiSTp0ZXN0IHRoYXQgYSB6b25lIHdpdGggdG9vIG1hbnkgcmVjb3JkcyBpcyByZWplY3RlZCAoQVhGUikgKCRuKSIKLSt0bXA9MAotK2dyZXAgIidheGZyLXRvby1iaWcvSU4nLio6IHRvbyBtYW55IHJlY29yZHMiIG5zNi9uYW1lZC5ydW4gPi9kZXYvbnVsbCB8fCB0bXA9MQotK2lmIHRlc3QgJHRtcCAhPSAwIDsgdGhlbiBlY2hvICJJOmZhaWxlZCI7IGZpCi0rc3RhdHVzPWBleHByICRzdGF0dXMgKyAkdG1wYAotKwotK249YGV4cHIgJG4gKyAxYAotK2VjaG8gIkk6dGVzdCB0aGF0IGEgem9uZSB3aXRoIHRvbyBtYW55IHJlY29yZHMgaXMgcmVqZWN0ZWQgKElYRlIpICgkbikiCi0rdG1wPTAKLStncmVwICInaXhmci10b28tYmlnLi9JTi4qOiB0b28gbWFueSByZWNvcmRzIiBuczYvbmFtZWQucnVuID4vZGV2L251bGwgJiYgdG1wPTEKLSskTlNVUERBVEUgPDwgRU9GCi0rem9uZSBpeGZyLXRvby1iaWcKLStzZXJ2ZXIgMTAuNTMuMC4xIDUzMDAKLSt1cGRhdGUgYWRkIHRoZS0zMXN0LXJlY29yZC5peGZyLXRvby1iaWcgMCBUWFQgdGhpcyBpcyBpdAotK3NlbmQKLStFT0YKLStmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDgKLStkbwotKyAgICBncmVwICInaXhmci10b28tYmlnL0lOJy4qOiB0b28gbWFueSByZWNvcmRzIiBuczYvbmFtZWQucnVuID4vZGV2L251bGwgJiYgYnJlYWsKLSsgICAgc2xlZXAgMQotK2RvbmUKLStncmVwICInaXhmci10b28tYmlnL0lOJy4qOiB0b28gbWFueSByZWNvcmRzIiBuczYvbmFtZWQucnVuID4vZGV2L251bGwgfHwgdG1wPTEKLStpZiB0ZXN0ICR0bXAgIT0gMCA7IHRoZW4gZWNobyAiSTpmYWlsZWQiOyBmaQotK3N0YXR1cz1gZXhwciAkc3RhdHVzICsgJHRtcGAKLSsKLSBlY2hvICJJOmV4aXQgc3RhdHVzOiAkc3RhdHVzIgotIGV4aXQgJHN0YXR1cwotZGlmZiAtLWdpdCBhL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sIGIvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLWluZGV4IDg0OGI1ODIuLjAzNjk1MDUgMTAwNjQ0Ci0tLS0gYS9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotKysrIGIvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLUBAIC00ODU4LDYgKzQ4NTgsNyBAQCBiYWRyZXNwOjEsYWRiZXJyOjAsZmluZGZhaWw6MCx2YWxmYWlsOjBdCi0gICAgIDxvcHRpb25hbD4gdXNlLXF1ZXJ5cG9ydC1wb29sIDxyZXBsYWNlYWJsZT55ZXNfb3Jfbm88L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSAgICAgPG9wdGlvbmFsPiBxdWVyeXBvcnQtcG9vbC1wb3J0cyA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0gICAgIDxvcHRpb25hbD4gcXVlcnlwb3J0LXBvb2wtdXBkYXRlaW50ZXJ2YWwgPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotKyAgICA8b3B0aW9uYWw+IG1heC1yZWNvcmRzIDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSAgICAgPG9wdGlvbmFsPiBtYXgtdHJhbnNmZXItdGltZS1pbiA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0gICAgIDxvcHRpb25hbD4gbWF4LXRyYW5zZmVyLXRpbWUtb3V0IDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSAgICAgPG9wdGlvbmFsPiBtYXgtdHJhbnNmZXItaWRsZS1pbiA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci1AQCAtODE2NCw2ICs4MTY1LDE2IEBAIGF2b2lkLXY2LXVkcC1wb3J0cyB7IDQwMDAwOyByYW5nZSA1MDAwMCA2MDAwMDsgfTsKLSAJICAgIDwvdmFybGlzdGVudHJ5PgotIAotIAkgICAgPHZhcmxpc3RlbnRyeT4KLSsJICAgICAgPHRlcm0+PGNvbW1hbmQ+bWF4LXJlY29yZHM8L2NvbW1hbmQ+PC90ZXJtPgotKwkgICAgICA8bGlzdGl0ZW0+Ci0rCQk8cGFyYT4KLSsJCSAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMgcGVybWl0dGVkIGluIGEgem9uZS4KLSsJCSAgVGhlIGRlZmF1bHQgaXMgemVybyB3aGljaCBtZWFucyB1bmxpbWl0ZWQuCi0rCSAJPC9wYXJhPgotKwkgICAgICA8L2xpc3RpdGVtPgotKwkgICAgPC92YXJsaXN0ZW50cnk+Ci0rCi0rCSAgICA8dmFybGlzdGVudHJ5PgotIAkgICAgICA8dGVybT48Y29tbWFuZD5ob3N0LXN0YXRpc3RpY3MtbWF4PC9jb21tYW5kPjwvdGVybT4KLSAJICAgICAgPGxpc3RpdGVtPgotIAkJPHBhcmE+Ci1AQCAtMTIwNTYsNiArMTIwNjcsMTYgQEAgem9uZSA8cmVwbGFjZWFibGU+em9uZV9uYW1lPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPjxyZXBsYWNlYWJsZT5jbGFzczwvcmVwbGFjZWEKLSAJICAgICAgPC92YXJsaXN0ZW50cnk+Ci0gCi0gCSAgICAgIDx2YXJsaXN0ZW50cnk+Ci0rCQk8dGVybT48Y29tbWFuZD5tYXgtcmVjb3JkczwvY29tbWFuZD48L3Rlcm0+Ci0rCQk8bGlzdGl0ZW0+Ci0rCQkgIDxwYXJhPgotKwkJICAgIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YKLSsJCSAgICA8Y29tbWFuZD5tYXgtcmVjb3JkczwvY29tbWFuZD4gaW4gPHhyZWYgbGlua2VuZD0ic2VydmVyX3Jlc291cmNlX2xpbWl0cyIvPi4KLSsJCSAgPC9wYXJhPgotKwkJPC9saXN0aXRlbT4KLSsJICAgICAgPC92YXJsaXN0ZW50cnk+Ci0rCi0rCSAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gCQk8dGVybT48Y29tbWFuZD5tYXgtdHJhbnNmZXItdGltZS1pbjwvY29tbWFuZD48L3Rlcm0+Ci0gCQk8bGlzdGl0ZW0+Ci0gCQkgIDxwYXJhPgotZGlmZiAtLWdpdCBhL2RvYy9hcm0vbm90ZXMueG1sIGIvZG9jL2FybS9ub3Rlcy54bWwKLWluZGV4IDA5NWViNWIuLjM2NDk1ZTcgMTAwNjQ0Ci0tLS0gYS9kb2MvYXJtL25vdGVzLnhtbAotKysrIGIvZG9jL2FybS9ub3Rlcy54bWwKLUBAIC01Miw2ICs1MiwxNSBAQAotICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgPHBhcmE+Ci0rCSAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcwotKwkgIHBlcm1pdHRlZCBpbiBhIHpvbmUgKG1heC1yZWNvcmRzICM7KS4gIFRoaXMgcHJvdmlkZXMgYSBtZWNoYW5pc20KLSsJICB0byBibG9jayBvdmVybHkgbGFyZ2Ugem9uZSB0cmFuc2ZlcnMsIHdoaWNoIGlzIGEgcG90ZW50aWFsIHJpc2sKLSsJICB3aXRoIHNsYXZlIHpvbmVzIGZyb20gb3RoZXIgcGFydGllcywgYXMgZGVzY3JpYmVkIGluIENWRS0yMDE2LTYxNzAuCi0rCSAgW1JUICM0MjE0M10KLSsJPC9wYXJhPgotKyAgICAgIDwvbGlzdGl0ZW0+Ci0rICAgICAgPGxpc3RpdGVtPgotKwk8cGFyYT4KLSAgICAgICAgICBEdXBsaWNhdGUgRUROUyBDT09LSUUgb3B0aW9ucyBpbiBhIHJlc3BvbnNlIGNvdWxkIHRyaWdnZXIKLSAgICAgICAgICBhbiBhc3NlcnRpb24gZmFpbHVyZS4gVGhpcyBmbGF3IGlzIGRpc2Nsb3NlZCBpbiBDVkUtMjAxNi0yMDg4LgotICAgICAgICAgIFtSVCAjNDE4MDldCi1kaWZmIC0tZ2l0IGEvbGliL2JpbmQ5L2NoZWNrLmMgYi9saWIvYmluZDkvY2hlY2suYwotaW5kZXggYjhjMDVkZC4uZWRiNzUzNCAxMDA2NDQKLS0tLSBhL2xpYi9iaW5kOS9jaGVjay5jCi0rKysgYi9saWIvYmluZDkvY2hlY2suYwotQEAgLTE1MTAsNiArMTUxMCw4IEBAIGNoZWNrX3pvbmVjb25mKGNvbnN0IGNmZ19vYmpfdCAqemNvbmZpZywgY29uc3QgY2ZnX29ial90ICp2b3B0aW9ucywKLSAJICBSRURJUkVDVFpPTkUgfSwKLSAJeyAibWFzdGVycyIsIFNMQVZFWk9ORSB8IFNUVUJaT05FIHwgUkVESVJFQ1RaT05FIH0sCi0gCXsgIm1heC1peGZyLWxvZy1zaXplIiwgTUFTVEVSWk9ORSB8IFNMQVZFWk9ORSB8IFNUUkVESVJFQ1RaT05FIH0sCi0rCXsgIm1heC1yZWNvcmRzIiwgTUFTVEVSWk9ORSB8IFNMQVZFWk9ORSB8IFNUVUJaT05FIHwgU1RSRURJUkVDVFpPTkUgfAotKyAgICAgICAgICBTVEFUSUNTVFVCWk9ORSB8IFJFRElSRUNUWk9ORSB9LAotIAl7ICJtYXgtcmVmcmVzaC10aW1lIiwgU0xBVkVaT05FIHwgU1RVQlpPTkUgfCBTVFJFRElSRUNUWk9ORSB9LAotIAl7ICJtYXgtcmV0cnktdGltZSIsIFNMQVZFWk9ORSB8IFNUVUJaT05FIHwgU1RSRURJUkVDVFpPTkUgfSwKLSAJeyAibWF4LXRyYW5zZmVyLWlkbGUtaW4iLCBTTEFWRVpPTkUgfCBTVFVCWk9ORSB8IFNUUkVESVJFQ1RaT05FIH0sCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9kYi5jIGIvbGliL2Rucy9kYi5jCi1pbmRleCA3ZTRmMzU3Li5jZWQ5NGE1IDEwMDY0NAotLS0tIGEvbGliL2Rucy9kYi5jCi0rKysgYi9saWIvZG5zL2RiLmMKLUBAIC05OTksNiArOTk5LDE5IEBAIGRuc19kYl9nZXRuc2VjM3BhcmFtZXRlcnMoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sCi0gfQotIAotIGlzY19yZXN1bHRfdAotK2Ruc19kYl9nZXRzaXplKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLCBpc2NfdWludDY0X3QgKnJlY29yZHMsCi0rCSAgICAgICBpc2NfdWludDY0X3QgKmJ5dGVzKQotK3sKLSsJUkVRVUlSRShETlNfREJfVkFMSUQoZGIpKTsKLSsJUkVRVUlSRShkbnNfZGJfaXN6b25lKGRiKSA9PSBJU0NfVFJVRSk7Ci0rCi0rCWlmIChkYi0+bWV0aG9kcy0+Z2V0c2l6ZSAhPSBOVUxMKQotKwkJcmV0dXJuICgoZGItPm1ldGhvZHMtPmdldHNpemUpKGRiLCB2ZXJzaW9uLCByZWNvcmRzLCBieXRlcykpOwotKwotKwlyZXR1cm4gKElTQ19SX05PVEZPVU5EKTsKLSt9Ci0rCi0raXNjX3Jlc3VsdF90Ci0gZG5zX2RiX3NldHNpZ25pbmd0aW1lKGRuc19kYl90ICpkYiwgZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LAotIAkJICAgICAgaXNjX3N0ZHRpbWVfdCByZXNpZ24pCi0gewotZGlmZiAtLWdpdCBhL2xpYi9kbnMvZWNkYi5jIGIvbGliL2Rucy9lY2RiLmMKLWluZGV4IDU1M2EzMzkuLmI1ZDA0ZDIgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2VjZGIuYwotKysrIGIvbGliL2Rucy9lY2RiLmMKLUBAIC01ODcsNyArNTg3LDggQEAgc3RhdGljIGRuc19kYm1ldGhvZHNfdCBlY2RiX21ldGhvZHMgPSB7Ci0gCU5VTEwsCQkJLyogZmluZG5vZGVleHQgKi8KLSAJTlVMTCwJCQkvKiBmaW5kZXh0ICovCi0gCU5VTEwsCQkJLyogc2V0Y2FjaGVzdGF0cyAqLwotLQlOVUxMCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTCwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMCQkJLyogZ2V0c2l6ZSAqLwotIH07Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvZGIuaCBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvZGIuaAotaW5kZXggYTRhNDQ4Mi4uYWZmNDJkNiAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvZGIuaAotKysrIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9kYi5oCi1AQCAtMTk1LDYgKzE5NSw4IEBAIHR5cGVkZWYgc3RydWN0IGRuc19kYm1ldGhvZHMgewotIAkJCQkgICBkbnNfcmRhdGFzZXRfdCAqc2lncmRhdGFzZXQpOwotIAlpc2NfcmVzdWx0X3QJKCpzZXRjYWNoZXN0YXRzKShkbnNfZGJfdCAqZGIsIGlzY19zdGF0c190ICpzdGF0cyk7Ci0gCXVuc2lnbmVkIGludAkoKmhhc2hzaXplKShkbnNfZGJfdCAqZGIpOwotKwlpc2NfcmVzdWx0X3QJKCpnZXRzaXplKShkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwKLSsJCQkJICAgaXNjX3VpbnQ2NF90ICpyZWNvcmRzLCBpc2NfdWludDY0X3QgKmJ5dGVzKTsKLSB9IGRuc19kYm1ldGhvZHNfdDsKLSAKLSB0eXBlZGVmIGlzY19yZXN1bHRfdAotQEAgLTE0ODUsNiArMTQ4NywyNCBAQCBkbnNfZGJfZ2V0bnNlYzNwYXJhbWV0ZXJzKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLAotICAqLwotIAotIGlzY19yZXN1bHRfdAotK2Ruc19kYl9nZXRzaXplKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLCBpc2NfdWludDY0X3QgKnJlY29yZHMsCi0rICAgICAgICAgICAgICAgaXNjX3VpbnQ2NF90ICpieXRlcyk7Ci0rLyolPAotKyAqIEdldCB0aGUgbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIGdpdmVuIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGFzIHdlbGwKLSsgKiBhcyB0aGUgbnVtYmVyIGJ5dGVzIHVzZWQgdG8gc3RvcmUgdGhvc2UgcmVjb3Jkcy4KLSsgKgotKyAqIFJlcXVpcmVzOgotKyAqIFxsaQknZGInIGlzIGEgdmFsaWQgem9uZSBkYXRhYmFzZS4KLSsgKiBcbGkJJ3ZlcnNpb24nIGlzIE5VTEwgb3IgYSB2YWxpZCB2ZXJzaW9uLgotKyAqIFxsaQkncmVjb3JkcycgaXMgTlVMTCBvciBhIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSByZWNvcmQgY291bnQgaW4uCi0rICogXGxpCSdieXRlcycgaXMgTlVMTCBvciBhIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSBieXRlIGNvdW50IGluLgotKyAqCi0rICogUmV0dXJuczoKLSsgKiBcbGkJI0lTQ19SX1NVQ0NFU1MKLSsgKiBcbGkJI0lTQ19SX05PVElNUExFTUVOVEVECi0rICovCi0rCi0raXNjX3Jlc3VsdF90Ci0gZG5zX2RiX2ZpbmRuc2VjM25vZGUoZG5zX2RiX3QgKmRiLCBkbnNfbmFtZV90ICpuYW1lLAotIAkJICAgICBpc2NfYm9vbGVhbl90IGNyZWF0ZSwgZG5zX2Ribm9kZV90ICoqbm9kZXApOwotIC8qJTwKLWRpZmYgLS1naXQgYS9saWIvZG5zL2luY2x1ZGUvZG5zL3JkYXRhc2xhYi5oIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9yZGF0YXNsYWIuaAotaW5kZXggM2FjNDRiOC4uMmUxZTc1OSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmRhdGFzbGFiLmgKLSsrKyBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmRhdGFzbGFiLmgKLUBAIC0xMDQsNiArMTA0LDcgQEAgZG5zX3JkYXRhc2xhYl90b3JkYXRhc2V0KHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuLAotICAqIEVuc3VyZXM6Ci0gICpcbGkJJ3JkYXRhc2V0JyBpcyBhc3NvY2lhdGVkIGFuZCBwb2ludHMgdG8gYSB2YWxpZCByZGF0YWVzdC4KLSAgKi8KLSsKLSB1bnNpZ25lZCBpbnQKLSBkbnNfcmRhdGFzbGFiX3NpemUodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4pOwotIC8qJTwKLUBAIC0xMTYsNiArMTE3LDE4IEBAIGRuc19yZGF0YXNsYWJfc2l6ZSh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbik7Ci0gICpcbGkJVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgc2xhYiwgaW5jbHVkaW5nIHRoZSByZXNlcnZlbGVuLgotICAqLwotIAotK3Vuc2lnbmVkIGludAotK2Ruc19yZGF0YXNsYWJfY291bnQodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4pOwotKy8qJTwKLSsgKiBSZXR1cm4gdGhlIG51bWJlciBvZiByZWNvcmRzIGluIHRoZSByZGF0YXNsYWIKLSsgKgotKyAqIFJlcXVpcmVzOgotKyAqXGxpCSdzbGFiJyBwb2ludHMgdG8gYSBzbGFiLgotKyAqCi0rICogUmV0dXJuczoKLSsgKlxsaQlUaGUgbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIHNsYWIuCi0rICovCi0rCi0gaXNjX3Jlc3VsdF90Ci0gZG5zX3JkYXRhc2xhYl9tZXJnZSh1bnNpZ25lZCBjaGFyICpvc2xhYiwgdW5zaWduZWQgY2hhciAqbnNsYWIsCi0gCQkgICAgdW5zaWduZWQgaW50IHJlc2VydmVsZW4sIGlzY19tZW1fdCAqbWN0eCwKLWRpZmYgLS1naXQgYS9saWIvZG5zL2luY2x1ZGUvZG5zL3Jlc3VsdC5oIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9yZXN1bHQuaAotaW5kZXggN2QxMWMyYi4uOTNkMWZkNSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmVzdWx0LmgKLSsrKyBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmVzdWx0LmgKLUBAIC0xNTcsOCArMTU3LDEyIEBACi0gI2RlZmluZSBETlNfUl9CQURDRFMJCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExMSkKLSAjZGVmaW5lIEROU19SX0JBRENETlNLRVkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTEyKQotICNkZWZpbmUgRE5TX1JfT1BURVJSCQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTMpCi0rI2RlZmluZSBETlNfUl9CQURETlNUQVAJCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExNCkKLSsjZGVmaW5lIEROU19SX0JBRFRTSUcJCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExNSkKLSsjZGVmaW5lIEROU19SX0JBRFNJRzAJCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExNikKLSsjZGVmaW5lIEROU19SX1RPT01BTllSRUNPUkRTCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExNykKLSAKLS0jZGVmaW5lIEROU19SX05SRVNVTFRTCQkJMTE0CS8qJTwgTnVtYmVyIG9mIHJlc3VsdHMgKi8KLSsjZGVmaW5lIEROU19SX05SRVNVTFRTCQkJMTE4CS8qJTwgTnVtYmVyIG9mIHJlc3VsdHMgKi8KLSAKLSAvKgotICAqIEROUyB3aXJlIGZvcm1hdCByY29kZXMuCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9pbmNsdWRlL2Rucy96b25lLmggYi9saWIvZG5zL2luY2x1ZGUvZG5zL3pvbmUuaAotaW5kZXggYTkzNjdmMS4uMjI3NTQwYiAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvem9uZS5oCi0rKysgYi9saWIvZG5zL2luY2x1ZGUvZG5zL3pvbmUuaAotQEAgLTI5Niw2ICsyOTYsMzIgQEAgZG5zX3pvbmVfZ2V0ZmlsZShkbnNfem9uZV90ICp6b25lKTsKLSAgKi8KLSAKLSB2b2lkCi0rZG5zX3pvbmVfc2V0bWF4cmVjb3JkcyhkbnNfem9uZV90ICp6b25lLCBpc2NfdWludDMyX3QgcmVjb3Jkcyk7Ci0rLyolPAotKyAqIAlTZXRzIHRoZSBtYXhpbWltIG51bWJlciBvZiByZWNvcmRzIHBlcm1pdHRlZCBpbiBhIHpvbmUuCi0rICoJMCBpbXBsaWVzIHVubGltaXRlZC4KLSsgKgotKyAqIFJlcXVpcmVzOgotKyAqXGxpCSd6b25lJyB0byBiZSB2YWxpZCBpbml0aWFsaXNlZCB6b25lLgotKyAqCi0rICogUmV0dXJuczoKLSsgKlxsaQl2b2lkCi0rICovCi0rCi0raXNjX3VpbnQzMl90Ci0rZG5zX3pvbmVfZ2V0bWF4cmVjb3JkcyhkbnNfem9uZV90ICp6b25lKTsKLSsvKiU8Ci0rICogCUdldHMgdGhlIG1heGltaW0gbnVtYmVyIG9mIHJlY29yZHMgcGVybWl0dGVkIGluIGEgem9uZS4KLSsgKgkwIGltcGxpZXMgdW5saW1pdGVkLgotKyAqCi0rICogUmVxdWlyZXM6Ci0rICpcbGkJJ3pvbmUnIHRvIGJlIHZhbGlkIGluaXRpYWxpc2VkIHpvbmUuCi0rICoKLSsgKiBSZXR1cm5zOgotKyAqXGxpCWlzY191aW50MzJfdCBtYXhyZWNvcmRzLgotKyAqLwotKwotK3ZvaWQKLSBkbnNfem9uZV9zZXRtYXh0dGwoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3VpbnQzMl90IG1heHR0bCk7Ci0gLyolPAotICAqIAlTZXRzIHRoZSBtYXggdHRsIG9mIHRoZSB6b25lLgotQEAgLTMxNiw3ICszNDIsNyBAQCBkbnNfem9uZV9nZXRtYXh0dGwoZG5zX3pvbmVfdCAqem9uZSk7Ci0gICpcbGkJJ3pvbmUnIHRvIGJlIHZhbGlkIGluaXRpYWxpc2VkIHpvbmUuCi0gICoKLSAgKiBSZXR1cm5zOgotLSAqXGxpCWlzY191aW50MzJfdCBtYXh0dGwuCi0rICpcbGkJZG5zX3R0bF90IG1heHR0bC4KLSAgKi8KLSAKLSBpc2NfcmVzdWx0X3QKLWRpZmYgLS1naXQgYS9saWIvZG5zL3JidGRiLmMgYi9saWIvZG5zL3JidGRiLmMKLWluZGV4IDYyYmVjZmMuLjcyZDcyMmYgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3JidGRiLmMKLSsrKyBiL2xpYi9kbnMvcmJ0ZGIuYwotQEAgLTIwOSw2ICsyMDksNyBAQCB0eXBlZGVmIGlzY191aW50NjRfdCAgICAgICAgICAgICAgICAgICAgcmJ0ZGJfc2VyaWFsX3Q7Ci0gI2RlZmluZSBmcmVlX3JidGRiX2NhbGxiYWNrIGZyZWVfcmJ0ZGJfY2FsbGJhY2s2NAotICNkZWZpbmUgZnJlZV9yZGF0YXNldCBmcmVlX3JkYXRhc2V0NjQKLSAjZGVmaW5lIGdldG5zZWMzcGFyYW1ldGVycyBnZXRuc2VjM3BhcmFtZXRlcnM2NAotKyNkZWZpbmUgZ2V0c2l6ZSBnZXRzaXplNjQKLSAjZGVmaW5lIGdldG9yaWdpbm5vZGUgZ2V0b3JpZ2lubm9kZTY0Ci0gI2RlZmluZSBnZXRycnNldHN0YXRzIGdldHJyc2V0c3RhdHM2NAotICNkZWZpbmUgZ2V0c2lnbmluZ3RpbWUgZ2V0c2lnbmluZ3RpbWU2NAotQEAgLTU4OSw2ICs1OTAsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgcmJ0ZGJfdmVyc2lvbiB7Ci0gCWlzY191aW50MTZfdAkJCWl0ZXJhdGlvbnM7Ci0gCWlzY191aW50OF90CQkJc2FsdF9sZW5ndGg7Ci0gCXVuc2lnbmVkIGNoYXIJCQlzYWx0W0ROU19OU0VDM19TQUxUU0laRV07Ci0rCi0rCS8qCi0rCSAqIHJlY29yZHMgYW5kIGJ5dGVzIGFyZSBjb3ZlcmVkIGJ5IHJ3bG9jay4KLSsJICovCi0rCWlzY19yd2xvY2tfdCAgICAgICAgICAgICAgICAgICAgcndsb2NrOwotKwlpc2NfdWludDY0X3QJCQlyZWNvcmRzOwotKwlpc2NfdWludDY0X3QJCQlieXRlczsKLSB9IHJidGRiX3ZlcnNpb25fdDsKLSAKLSB0eXBlZGVmIElTQ19MSVNUKHJidGRiX3ZlcnNpb25fdCkgICAgICAgcmJ0ZGJfdmVyc2lvbmxpc3RfdDsKLUBAIC0xMTMwLDYgKzExMzgsNyBAQCBmcmVlX3JidGRiKGRuc19yYnRkYl90ICpyYnRkYiwgaXNjX2Jvb2xlYW5fdCBsb2csIGlzY19ldmVudF90ICpldmVudCkgewotIAkJSU5TSVNUKHJlZnMgPT0gMCk7Ci0gCQlVTkxJTksocmJ0ZGItPm9wZW5fdmVyc2lvbnMsIHJidGRiLT5jdXJyZW50X3ZlcnNpb24sIGxpbmspOwotIAkJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJlZmVyZW5jZXMpOwotKwkJaXNjX3J3bG9ja19kZXN0cm95KCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yd2xvY2spOwotIAkJaXNjX21lbV9wdXQocmJ0ZGItPmNvbW1vbi5tY3R4LCByYnRkYi0+Y3VycmVudF92ZXJzaW9uLAotIAkJCSAgICBzaXplb2YocmJ0ZGJfdmVyc2lvbl90KSk7Ci0gCX0KLUBAIC0xMzgzLDYgKzEzOTIsNyBAQCBhbGxvY2F0ZV92ZXJzaW9uKGlzY19tZW1fdCAqbWN0eCwgcmJ0ZGJfc2VyaWFsX3Qgc2VyaWFsLAotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBuZXd2ZXJzaW9uKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICoqdmVyc2lvbnApIHsKLSsJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJZG5zX3JidGRiX3QgKnJidGRiID0gKGRuc19yYnRkYl90ICopZGI7Ci0gCXJidGRiX3ZlcnNpb25fdCAqdmVyc2lvbjsKLSAKLUBAIC0xNDE1LDEzICsxNDI1LDI4IEBAIG5ld3ZlcnNpb24oZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKip2ZXJzaW9ucCkgewotIAkJCXZlcnNpb24tPnNhbHRfbGVuZ3RoID0gMDsKLSAJCQltZW1zZXQodmVyc2lvbi0+c2FsdCwgMCwgc2l6ZW9mKHZlcnNpb24tPnNhbHQpKTsKLSAJCX0KLS0JCXJidGRiLT5uZXh0X3NlcmlhbCsrOwotLQkJcmJ0ZGItPmZ1dHVyZV92ZXJzaW9uID0gdmVyc2lvbjsKLS0JfQotKwkJcmVzdWx0ID0gaXNjX3J3bG9ja19pbml0KCZ2ZXJzaW9uLT5yd2xvY2ssIDAsIDApOwotKwkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQkJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJnZlcnNpb24tPnJlZmVyZW5jZXMpOwotKwkJCWlzY19tZW1fcHV0KHJidGRiLT5jb21tb24ubWN0eCwgdmVyc2lvbiwKLSsJCQkJICAgIHNpemVvZigqdmVyc2lvbikpOwotKwkJCXZlcnNpb24gPSBOVUxMOwotKwkJfSBlbHNlIHsKLSsJCQlSV0xPQ0soJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJ3bG9jaywKLSsJCQkgICAgICAgaXNjX3J3bG9ja3R5cGVfcmVhZCk7Ci0rCQkJdmVyc2lvbi0+cmVjb3JkcyA9IHJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJlY29yZHM7Ci0rCQkJdmVyc2lvbi0+Ynl0ZXMgPSByYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5ieXRlczsKLSsJCQlSV1VOTE9DSygmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cndsb2NrLAotKwkJCQkgaXNjX3J3bG9ja3R5cGVfcmVhZCk7Ci0rCQkJcmJ0ZGItPm5leHRfc2VyaWFsKys7Ci0rCQkJcmJ0ZGItPmZ1dHVyZV92ZXJzaW9uID0gdmVyc2lvbjsKLSsJCX0KLSsJfSBlbHNlCi0rCQlyZXN1bHQgPSBJU0NfUl9OT01FTU9SWTsKLSAJUkJUREJfVU5MT0NLKCZyYnRkYi0+bG9jaywgaXNjX3J3bG9ja3R5cGVfd3JpdGUpOwotIAotIAlpZiAodmVyc2lvbiA9PSBOVUxMKQotLQkJcmV0dXJuIChJU0NfUl9OT01FTU9SWSk7Ci0rCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCi0gCSp2ZXJzaW9ucCA9IHZlcnNpb247Ci0gCi1AQCAtMjY4MSw2ICsyNzA2LDcgQEAgY2xvc2V2ZXJzaW9uKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICoqdmVyc2lvbnAsIGlzY19ib29sZWFuX3QgY29tbWl0KSB7Ci0gCi0gCWlmIChjbGVhbnVwX3ZlcnNpb24gIT0gTlVMTCkgewotIAkJSU5TSVNUKEVNUFRZKGNsZWFudXBfdmVyc2lvbi0+Y2hhbmdlZF9saXN0KSk7Ci0rCQlpc2Nfcndsb2NrX2Rlc3Ryb3koJmNsZWFudXBfdmVyc2lvbi0+cndsb2NrKTsKLSAJCWlzY19tZW1fcHV0KHJidGRiLT5jb21tb24ubWN0eCwgY2xlYW51cF92ZXJzaW9uLAotIAkJCSAgICBzaXplb2YoKmNsZWFudXBfdmVyc2lvbikpOwotIAl9Ci1AQCAtNjI1NCw2ICs2MjgwLDI2IEBAIGFkZDMyKGRuc19yYnRkYl90ICpyYnRkYiwgZG5zX3JidG5vZGVfdCAqcmJ0bm9kZSwgcmJ0ZGJfdmVyc2lvbl90ICpyYnR2ZXJzaW9uLAotIAkJZWxzZQotIAkJCXJidG5vZGUtPmRhdGEgPSBuZXdoZWFkZXI7Ci0gCQluZXdoZWFkZXItPm5leHQgPSB0b3BoZWFkZXItPm5leHQ7Ci0rCQlpZiAocmJ0dmVyc2lvbiAhPSBOVUxMKQotKwkJCVJXTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV93cml0ZSk7Ci0rCQlpZiAocmJ0dmVyc2lvbiAhPSBOVUxMICYmICFoZWFkZXJfbngpIHsKLSsJCQlyYnR2ZXJzaW9uLT5yZWNvcmRzIC09Ci0rCQkJCWRuc19yZGF0YXNsYWJfY291bnQoKHVuc2lnbmVkIGNoYXIgKiloZWFkZXIsCi0rCQkJCQkJICAgIHNpemVvZigqaGVhZGVyKSk7Ci0rCQkJcmJ0dmVyc2lvbi0+Ynl0ZXMgLT0KLSsJCQkJZG5zX3JkYXRhc2xhYl9zaXplKCh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAotKwkJCQkJCSAgIHNpemVvZigqaGVhZGVyKSk7Ci0rCQl9Ci0rCQlpZiAocmJ0dmVyc2lvbiAhPSBOVUxMICYmICFuZXdoZWFkZXJfbngpIHsKLSsJCQlyYnR2ZXJzaW9uLT5yZWNvcmRzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfY291bnQoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0rCQkJcmJ0dmVyc2lvbi0+Ynl0ZXMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9zaXplKCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0rCQl9Ci0rCQlpZiAocmJ0dmVyc2lvbiAhPSBOVUxMKQotKwkJCVJXVU5MT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3dyaXRlKTsKLSAJCWlmIChsb2FkaW5nKSB7Ci0gCQkJLyoKLSAJCQkgKiBUaGVyZSBhcmUgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byAnaGVhZGVyJyB3aGVuCi1AQCAtNjM1NSw2ICs2NDAxLDE2IEBAIGFkZDMyKGRuc19yYnRkYl90ICpyYnRkYiwgZG5zX3JidG5vZGVfdCAqcmJ0bm9kZSwgcmJ0ZGJfdmVyc2lvbl90ICpyYnR2ZXJzaW9uLAotIAkJCW5ld2hlYWRlci0+ZG93biA9IE5VTEw7Ci0gCQkJcmJ0bm9kZS0+ZGF0YSA9IG5ld2hlYWRlcjsKLSAJCX0KLSsJCWlmIChyYnR2ZXJzaW9uICE9IE5VTEwgJiYgIW5ld2hlYWRlcl9ueCkgewotKwkJCVJXTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV93cml0ZSk7Ci0rCQkJcmJ0dmVyc2lvbi0+cmVjb3JkcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX2NvdW50KCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgICBzaXplb2YoKm5ld2hlYWRlcikpOwotKwkJCXJidHZlcnNpb24tPmJ5dGVzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfc2l6ZSgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICBzaXplb2YoKm5ld2hlYWRlcikpOwotKwkJCVJXVU5MT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3dyaXRlKTsKLSsJCX0KLSAJCWlkeCA9IG5ld2hlYWRlci0+bm9kZS0+bG9ja251bTsKLSAJCWlmIChJU19DQUNIRShyYnRkYikpIHsKLSAJCQlJU0NfTElTVF9QUkVQRU5EKHJidGRiLT5yZGF0YXNldHNbaWR4XSwKLUBAIC02ODExLDYgKzY4NjcsMTIgQEAgc3VidHJhY3RyZGF0YXNldChkbnNfZGJfdCAqZGIsIGRuc19kYm5vZGVfdCAqbm9kZSwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLAotIAkJCSAqLwotIAkJCW5ld2hlYWRlci0+YWRkaXRpb25hbF9hdXRoID0gTlVMTDsKLSAJCQluZXdoZWFkZXItPmFkZGl0aW9uYWxfZ2x1ZSA9IE5VTEw7Ci0rCQkJcmJ0dmVyc2lvbi0+cmVjb3JkcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX2NvdW50KCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgICBzaXplb2YoKm5ld2hlYWRlcikpOwotKwkJCXJidHZlcnNpb24tPmJ5dGVzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfc2l6ZSgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICBzaXplb2YoKm5ld2hlYWRlcikpOwotIAkJfSBlbHNlIGlmIChyZXN1bHQgPT0gRE5TX1JfTlhSUlNFVCkgewotIAkJCS8qCi0gCQkJICogVGhpcyBzdWJ0cmFjdGlvbiB3b3VsZCByZW1vdmUgYWxsIG9mIHRoZSByZGF0YTsKLUBAIC02ODQ2LDYgKzY5MDgsMTIgQEAgc3VidHJhY3RyZGF0YXNldChkbnNfZGJfdCAqZGIsIGRuc19kYm5vZGVfdCAqbm9kZSwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLAotIAkJICogdG9waGVhZGVyLgotIAkJICovCi0gCQlJTlNJU1QocmJ0dmVyc2lvbi0+c2VyaWFsID49IHRvcGhlYWRlci0+c2VyaWFsKTsKLSsJCXJidHZlcnNpb24tPnJlY29yZHMgLT0KLSsJCQkJZG5zX3JkYXRhc2xhYl9jb3VudCgodW5zaWduZWQgY2hhciAqKWhlYWRlciwKLSsJCQkJCQkgICAgc2l6ZW9mKCpoZWFkZXIpKTsKLSsJCXJidHZlcnNpb24tPmJ5dGVzIC09Ci0rCQkJCWRuc19yZGF0YXNsYWJfc2l6ZSgodW5zaWduZWQgY2hhciAqKWhlYWRlciwKLSsJCQkJCQkgICBzaXplb2YoKmhlYWRlcikpOwotIAkJaWYgKHRvcGhlYWRlcl9wcmV2ICE9IE5VTEwpCi0gCQkJdG9waGVhZGVyX3ByZXYtPm5leHQgPSBuZXdoZWFkZXI7Ci0gCQllbHNlCi1AQCAtNzE3Miw2ICs3MjQwLDcgQEAgcmJ0X2RhdGFmaXhlcihkbnNfcmJ0bm9kZV90ICpyYnRub2RlLCB2b2lkICpiYXNlLCBzaXplX3QgZmlsZXNpemUsCi0gCXVuc2lnbmVkIGNoYXIgKmxpbWl0ID0gKCh1bnNpZ25lZCBjaGFyICopIGJhc2UpICsgZmlsZXNpemU7Ci0gCXVuc2lnbmVkIGNoYXIgKnA7Ci0gCXNpemVfdCBzaXplOwotKwl1bnNpZ25lZCBpbnQgY291bnQ7Ci0gCi0gCVJFUVVJUkUocmJ0bm9kZSAhPSBOVUxMKTsKLSAKLUBAIC03MTc5LDYgKzcyNDgsOSBAQCByYnRfZGF0YWZpeGVyKGRuc19yYnRub2RlX3QgKnJidG5vZGUsIHZvaWQgKmJhc2UsIHNpemVfdCBmaWxlc2l6ZSwKLSAJCXAgPSAodW5zaWduZWQgY2hhciAqKSBoZWFkZXI7Ci0gCi0gCQlzaXplID0gZG5zX3JkYXRhc2xhYl9zaXplKHAsIHNpemVvZigqaGVhZGVyKSk7Ci0rCQljb3VudCA9IGRuc19yZGF0YXNsYWJfY291bnQocCwgc2l6ZW9mKCpoZWFkZXIpKTs7Ci0rCQlyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yZWNvcmRzICs9IGNvdW50OwotKwkJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+Ynl0ZXMgKz0gc2l6ZTsKLSAJCWlzY19jcmM2NF91cGRhdGUoY3JjLCBwLCBzaXplKTsKLSAjaWZkZWYgREVCVUcKLSAJCWhleGR1bXAoImhhc2hpbmcgaGVhZGVyIiwgcCwgc2l6ZW9mKHJkYXRhc2V0aGVhZGVyX3QpKTsKLUBAIC03Nzc3LDYgKzc4NDksMzMgQEAgZ2V0bnNlYzNwYXJhbWV0ZXJzKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLCBkbnNfaGFzaF90ICpoYXNoLAotIH0KLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0rZ2V0c2l6ZShkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwgaXNjX3VpbnQ2NF90ICpyZWNvcmRzLAotKyAgICAgICAgaXNjX3VpbnQ2NF90ICpieXRlcykKLSt7Ci0rCWRuc19yYnRkYl90ICpyYnRkYjsKLSsJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0rCXJidGRiX3ZlcnNpb25fdCAqcmJ0dmVyc2lvbiA9IHZlcnNpb247Ci0rCi0rCXJidGRiID0gKGRuc19yYnRkYl90ICopZGI7Ci0rCi0rCVJFUVVJUkUoVkFMSURfUkJUREIocmJ0ZGIpKTsKLSsJSU5TSVNUKHJidHZlcnNpb24gPT0gTlVMTCB8fCByYnR2ZXJzaW9uLT5yYnRkYiA9PSByYnRkYik7Ci0rCi0rCWlmIChyYnR2ZXJzaW9uID09IE5VTEwpCi0rCQlyYnR2ZXJzaW9uID0gcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbjsKLSsKLSsJUldMT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3JlYWQpOwotKwlpZiAocmVjb3JkcyAhPSBOVUxMKQotKwkJKnJlY29yZHMgPSByYnR2ZXJzaW9uLT5yZWNvcmRzOwotKwotKwlpZiAoYnl0ZXMgIT0gTlVMTCkKLSsJCSpieXRlcyA9IHJidHZlcnNpb24tPmJ5dGVzOwotKwlSV1VOTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV9yZWFkKTsKLSsKLSsJcmV0dXJuIChyZXN1bHQpOwotK30KLSsKLStzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gc2V0c2lnbmluZ3RpbWUoZG5zX2RiX3QgKmRiLCBkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGlzY19zdGR0aW1lX3QgcmVzaWduKSB7Ci0gCWRuc19yYnRkYl90ICpyYnRkYiA9IChkbnNfcmJ0ZGJfdCAqKWRiOwotIAlpc2Nfc3RkdGltZV90IG9sZHJlc2lnbjsKLUBAIC03OTcyLDcgKzgwNzEsOCBAQCBzdGF0aWMgZG5zX2RibWV0aG9kc190IHpvbmVfbWV0aG9kcyA9IHsKLSAJTlVMTCwKLSAJTlVMTCwKLSAJTlVMTCwKLS0JaGFzaHNpemUKLSsJaGFzaHNpemUsCi0rCWdldHNpemUKLSB9OwotIAotIHN0YXRpYyBkbnNfZGJtZXRob2RzX3QgY2FjaGVfbWV0aG9kcyA9IHsKLUBAIC04MDE4LDcgKzgxMTgsOCBAQCBzdGF0aWMgZG5zX2RibWV0aG9kc190IGNhY2hlX21ldGhvZHMgPSB7Ci0gCU5VTEwsCi0gCU5VTEwsCi0gCXNldGNhY2hlc3RhdHMsCi0tCWhhc2hzaXplCi0rCWhhc2hzaXplLAotKwlOVUxMCi0gfTsKLSAKLSBpc2NfcmVzdWx0X3QKLUBAIC04MzEwLDYgKzg0MTEsMjAgQEAgZG5zX3JidGRiX2NyZWF0ZQotIAlyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5zYWx0X2xlbmd0aCA9IDA7Ci0gCW1lbXNldChyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5zYWx0LCAwLAotIAkgICAgICAgc2l6ZW9mKHJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnNhbHQpKTsKLSsJcmVzdWx0ID0gaXNjX3J3bG9ja19pbml0KCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yd2xvY2ssIDAsIDApOwotKwlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsJCWlzY19yZWZjb3VudF9kZXN0cm95KCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yZWZlcmVuY2VzKTsKLSsJCWlzY19tZW1fcHV0KG1jdHgsIHJidGRiLT5jdXJyZW50X3ZlcnNpb24sCi0rCQkJICAgIHNpemVvZigqcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbikpOwotKwkJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbiA9IE5VTEw7Ci0rCQlpc2NfcmVmY291bnRfZGVjcmVtZW50KCZyYnRkYi0+cmVmZXJlbmNlcywgTlVMTCk7Ci0rCQlpc2NfcmVmY291bnRfZGVzdHJveSgmcmJ0ZGItPnJlZmVyZW5jZXMpOwotKwkJZnJlZV9yYnRkYihyYnRkYiwgSVNDX0ZBTFNFLCBOVUxMKTsKLSsJCXJldHVybiAocmVzdWx0KTsKLSsJfQotKwotKwlyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yZWNvcmRzID0gMDsKLSsJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+Ynl0ZXMgPSAwOwotIAlyYnRkYi0+ZnV0dXJlX3ZlcnNpb24gPSBOVUxMOwotIAlJU0NfTElTVF9JTklUKHJidGRiLT5vcGVuX3ZlcnNpb25zKTsKLSAJLyoKLWRpZmYgLS1naXQgYS9saWIvZG5zL3JkYXRhc2xhYi5jIGIvbGliL2Rucy9yZGF0YXNsYWIuYwotaW5kZXggZTI5ZGM4NC4uNjNlMzcyOCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmRhdGFzbGFiLmMKLSsrKyBiL2xpYi9kbnMvcmRhdGFzbGFiLmMKLUBAIC01MjMsNiArNTIzLDE5IEBAIGRuc19yZGF0YXNsYWJfc2l6ZSh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbikgewotIAlyZXR1cm4gKCh1bnNpZ25lZCBpbnQpKGN1cnJlbnQgLSBzbGFiKSk7Ci0gfQotIAotK3Vuc2lnbmVkIGludAotK2Ruc19yZGF0YXNsYWJfY291bnQodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4pIHsKLSsJdW5zaWduZWQgaW50IGNvdW50OwotKwl1bnNpZ25lZCBjaGFyICpjdXJyZW50OwotKwotKwlSRVFVSVJFKHNsYWIgIT0gTlVMTCk7Ci0rCi0rCWN1cnJlbnQgPSBzbGFiICsgcmVzZXJ2ZWxlbjsKLSsJY291bnQgPSAqY3VycmVudCsrICogMjU2OwotKwljb3VudCArPSAqY3VycmVudCsrOwotKwlyZXR1cm4gKGNvdW50KTsKLSt9Ci0rCi0gLyoKLSAgKiBNYWtlIHRoZSBkbnNfcmRhdGFfdCAncmRhdGEnIHJlZmVyIHRvIHRoZSBzbGFiIGl0ZW0KLSAgKiBiZWdpbm5pbmcgYXQgJypjdXJyZW50Jywgd2hpY2ggaXMgcGFydCBvZiBhIHNsYWIgb2YgdHlwZQotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmVzdWx0LmMgYi9saWIvZG5zL3Jlc3VsdC5jCi1pbmRleCA3YmU0ZjU3Li5hNjIxOTA5IDEwMDY0NAotLS0tIGEvbGliL2Rucy9yZXN1bHQuYwotKysrIGIvbGliL2Rucy9yZXN1bHQuYwotQEAgLTE2NywxMSArMTY3LDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyICp0ZXh0W0ROU19SX05SRVNVTFRTXSA9IHsKLSAJImNvdmVyZWQgYnkgbmVnYXRpdmUgdHJ1c3QgYW5jaG9yIiwgICAgLyolPCAxMTAgRE5TX1JfTlRBQ09WRVJFRCAqLwotIAkiYmFkIENEUyIsCQkJICAgICAgIC8qJTwgMTExIEROU19SX0JBRENTRCAqLwotIAkiYmFkIENETlNLRVkiLAkJCSAgICAgICAvKiU8IDExMiBETlNfUl9CQURDRE5TS0VZICovCi0tCSJtYWxmb3JtZWQgT1BUIG9wdGlvbiIJCSAgICAgICAvKiU8IDExMyBETlNfUl9PUFRFUlIgKi8KLSsJIm1hbGZvcm1lZCBPUFQgb3B0aW9uIiwJCSAgICAgICAvKiU8IDExMyBETlNfUl9PUFRFUlIgKi8KLSsJIm1hbGZvcm1lZCBETlNUQVAgZGF0YSIsCSAgICAgICAvKiU8IDExNCBETlNfUl9CQURETlNUQVAgKi8KLSsKLSsJIlRTSUcgaW4gd3JvbmcgbG9jYXRpb24iLAkgICAgICAgLyolPCAxMTUgRE5TX1JfQkFEVFNJRyAqLwotKwkiU0lHKDApIGluIHdyb25nIGxvY2F0aW9uIiwJICAgICAgIC8qJTwgMTE2IEROU19SX0JBRFNJRzAgKi8KLSsJInRvbyBtYW55IHJlY29yZHMiLAkgICAgICAgICAgICAgICAvKiU8IDExNyBETlNfUl9UT09NQU5ZUkVDT1JEUyAqLwotIH07Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKnJjb2RlX3RleHRbRE5TX1JfTlJDT0RFUkVTVUxUU10gPSB7Ci0tCSJOT0VSUk9SIiwJCQkJLyolPCAwIEROU19SX05PRVJPUiAqLwotKwkiTk9FUlJPUiIsCQkJCS8qJTwgMCBETlNfUl9OT0VSUk9SICovCi0gCSJGT1JNRVJSIiwJCQkJLyolPCAxIEROU19SX0ZPUk1FUlIgKi8KLSAJIlNFUlZGQUlMIiwJCQkJLyolPCAyIEROU19SX1NFUlZGQUlMICovCi0gCSJOWERPTUFJTiIsCQkJCS8qJTwgMyBETlNfUl9OWERPTUFJTiAqLwotZGlmZiAtLWdpdCBhL2xpYi9kbnMvc2RiLmMgYi9saWIvZG5zL3NkYi5jCi1pbmRleCBhYmZlZWIwLi4xOTM5N2UwIDEwMDY0NAotLS0tIGEvbGliL2Rucy9zZGIuYwotKysrIGIvbGliL2Rucy9zZGIuYwotQEAgLTEyOTgsNyArMTI5OCw4IEBAIHN0YXRpYyBkbnNfZGJtZXRob2RzX3Qgc2RiX21ldGhvZHMgPSB7Ci0gCWZpbmRub2RlZXh0LAotIAlmaW5kZXh0LAotIAlOVUxMLAkJCS8qIHNldGNhY2hlc3RhdHMgKi8KLS0JTlVMTAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwsCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTAkJCS8qIGdldHNpemUgKi8KLSB9OwotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLWRpZmYgLS1naXQgYS9saWIvZG5zL3NkbHouYyBiL2xpYi9kbnMvc2Rsei5jCi1pbmRleCBiMTE5OGE0Li4wZTMxNjNkIDEwMDY0NAotLS0tIGEvbGliL2Rucy9zZGx6LmMKLSsrKyBiL2xpYi9kbnMvc2Rsei5jCi1AQCAtMTI2OSw3ICsxMjY5LDggQEAgc3RhdGljIGRuc19kYm1ldGhvZHNfdCBzZGx6ZGJfbWV0aG9kcyA9IHsKLSAJZmluZG5vZGVleHQsCi0gCWZpbmRleHQsCi0gCU5VTEwsCQkJLyogc2V0Y2FjaGVzdGF0cyAqLwotLQlOVUxMCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTCwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMCQkJLyogZ2V0c2l6ZSAqLwotIH07Ci0gCi0gLyoKLWRpZmYgLS1naXQgYS9saWIvZG5zL3hmcmluLmMgYi9saWIvZG5zL3hmcmluLmMKLWluZGV4IDJhNmMxYjQuLmFjNTY2ZTEgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3hmcmluLmMKLSsrKyBiL2xpYi9kbnMveGZyaW4uYwotQEAgLTE0OSw2ICsxNDksOSBAQCBzdHJ1Y3QgZG5zX3hmcmluX2N0eCB7Ci0gCXVuc2lnbmVkIGludAkJbnJlY3M7CQkvKiU8IE51bWJlciBvZiByZWNvcmRzIHJlY3ZkICovCi0gCWlzY191aW50NjRfdAkJbmJ5dGVzOwkJLyolPCBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgKi8KLSAKLSsJdW5zaWduZWQgaW50CQltYXhyZWNvcmRzOwkvKiU8IFRoZSBtYXhpbXVtIG51bWJlciBvZgotKwkJCQkJCSAgICAgcmVjb3JkcyBzZXQgZm9yIHRoZSB6b25lICovCi0rCi0gCWlzY190aW1lX3QJCXN0YXJ0OwkJLyolPCBTdGFydCB0aW1lIG9mIHRoZSB0cmFuc2ZlciAqLwotIAlpc2NfdGltZV90CQllbmQ7CQkvKiU8IEVuZCB0aW1lIG9mIHRoZSB0cmFuc2ZlciAqLwotIAotQEAgLTMwOSwxMCArMzEyLDE4IEBAIGF4ZnJfcHV0ZGF0YShkbnNfeGZyaW5fY3R4X3QgKnhmciwgZG5zX2RpZmZvcF90IG9wLAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBheGZyX2FwcGx5KGRuc194ZnJpbl9jdHhfdCAqeGZyKSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCWlzY191aW50NjRfdCByZWNvcmRzOwotIAotIAlDSEVDSyhkbnNfZGlmZl9sb2FkKCZ4ZnItPmRpZmYsIHhmci0+YXhmci5hZGQsIHhmci0+YXhmci5hZGRfcHJpdmF0ZSkpOwotIAl4ZnItPmRpZmZsZW4gPSAwOwotIAlkbnNfZGlmZl9jbGVhcigmeGZyLT5kaWZmKTsKLSsJaWYgKHhmci0+bWF4cmVjb3JkcyAhPSAwVSkgewotKwkJcmVzdWx0ID0gZG5zX2RiX2dldHNpemUoeGZyLT5kYiwgeGZyLT52ZXIsICZyZWNvcmRzLCBOVUxMKTsKLSsJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJiByZWNvcmRzID4geGZyLT5tYXhyZWNvcmRzKSB7Ci0rCQkJcmVzdWx0ID0gRE5TX1JfVE9PTUFOWVJFQ09SRFM7Ci0rCQkJZ290byBmYWlsdXJlOwotKwkJfQotKwl9Ci0gCXJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gIGZhaWx1cmU6Ci0gCXJldHVybiAocmVzdWx0KTsKLUBAIC0zOTYsNiArNDA3LDcgQEAgaXhmcl9wdXRkYXRhKGRuc194ZnJpbl9jdHhfdCAqeGZyLCBkbnNfZGlmZm9wX3Qgb3AsCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGl4ZnJfYXBwbHkoZG5zX3hmcmluX2N0eF90ICp4ZnIpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSsJaXNjX3VpbnQ2NF90IHJlY29yZHM7Ci0gCi0gCWlmICh4ZnItPnZlciA9PSBOVUxMKSB7Ci0gCQlDSEVDSyhkbnNfZGJfbmV3dmVyc2lvbih4ZnItPmRiLCAmeGZyLT52ZXIpKTsKLUBAIC00MDMsNiArNDE1LDEzIEBAIGl4ZnJfYXBwbHkoZG5zX3hmcmluX2N0eF90ICp4ZnIpIHsKLSAJCQlDSEVDSyhkbnNfam91cm5hbF9iZWdpbl90cmFuc2FjdGlvbih4ZnItPml4ZnIuam91cm5hbCkpOwotIAl9Ci0gCUNIRUNLKGRuc19kaWZmX2FwcGx5KCZ4ZnItPmRpZmYsIHhmci0+ZGIsIHhmci0+dmVyKSk7Ci0rCWlmICh4ZnItPm1heHJlY29yZHMgIT0gMFUpIHsKLSsJCXJlc3VsdCA9IGRuc19kYl9nZXRzaXplKHhmci0+ZGIsIHhmci0+dmVyLCAmcmVjb3JkcywgTlVMTCk7Ci0rCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYgcmVjb3JkcyA+IHhmci0+bWF4cmVjb3JkcykgewotKwkJCXJlc3VsdCA9IEROU19SX1RPT01BTllSRUNPUkRTOwotKwkJCWdvdG8gZmFpbHVyZTsKLSsJCX0KLSsJfQotIAlpZiAoeGZyLT5peGZyLmpvdXJuYWwgIT0gTlVMTCkgewotIAkJcmVzdWx0ID0gZG5zX2pvdXJuYWxfd3JpdGVkaWZmKHhmci0+aXhmci5qb3VybmFsLCAmeGZyLT5kaWZmKTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLUBAIC03NTksNyArNzc4LDcgQEAgeGZyaW5fcmVzZXQoZG5zX3hmcmluX2N0eF90ICp4ZnIpIHsKLSAKLSBzdGF0aWMgdm9pZAotIHhmcmluX2ZhaWwoZG5zX3hmcmluX2N0eF90ICp4ZnIsIGlzY19yZXN1bHRfdCByZXN1bHQsIGNvbnN0IGNoYXIgKm1zZykgewotLQlpZiAocmVzdWx0ICE9IEROU19SX1VQVE9EQVRFKSB7Ci0rCWlmIChyZXN1bHQgIT0gRE5TX1JfVVBUT0RBVEUgJiYgcmVzdWx0ICE9IEROU19SX1RPT01BTllSRUNPUkRTKSB7Ci0gCQl4ZnJpbl9sb2coeGZyLCBJU0NfTE9HX0VSUk9SLCAiJXM6ICVzIiwKLSAJCQkgIG1zZywgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCQlpZiAoeGZyLT5pc19peGZyKQotQEAgLTg1Miw2ICs4NzEsNyBAQCB4ZnJpbl9jcmVhdGUoaXNjX21lbV90ICptY3R4LAotIAl4ZnItPm5tc2cgPSAwOwotIAl4ZnItPm5yZWNzID0gMDsKLSAJeGZyLT5uYnl0ZXMgPSAwOwotKwl4ZnItPm1heHJlY29yZHMgPSBkbnNfem9uZV9nZXRtYXhyZWNvcmRzKHpvbmUpOwotIAlpc2NfdGltZV9ub3coJnhmci0+c3RhcnQpOwotIAotIAl4ZnItPnRzaWdrZXkgPSBOVUxMOwotZGlmZiAtLWdpdCBhL2xpYi9kbnMvem9uZS5jIGIvbGliL2Rucy96b25lLmMKLWluZGV4IDkwZTU1OGQuLjJiMGQ4ZTQgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3pvbmUuYwotKysrIGIvbGliL2Rucy96b25lLmMKLUBAIC0yNTMsNiArMjUzLDggQEAgc3RydWN0IGRuc196b25lIHsKLSAJaXNjX3VpbnQzMl90CQltYXhyZXRyeTsKLSAJaXNjX3VpbnQzMl90CQltaW5yZXRyeTsKLSAKLSsJaXNjX3VpbnQzMl90CQltYXhyZWNvcmRzOwotKwotIAlpc2Nfc29ja2FkZHJfdAkJKm1hc3RlcnM7Ci0gCWlzY19kc2NwX3QJCSptYXN0ZXJkc2NwczsKLSAJZG5zX25hbWVfdAkJKiptYXN0ZXJrZXluYW1lczsKLUBAIC0xMDA4OCw2ICsxMDA5MCwyMCBAQCBkbnNfem9uZV9zZXRtYXhyZXRyeXRpbWUoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3VpbnQzMl90IHZhbCkgewotIAl6b25lLT5tYXhyZXRyeSA9IHZhbDsKLSB9Ci0gCi0raXNjX3VpbnQzMl90Ci0rZG5zX3pvbmVfZ2V0bWF4cmVjb3JkcyhkbnNfem9uZV90ICp6b25lKSB7Ci0rICAgICAgICBSRVFVSVJFKEROU19aT05FX1ZBTElEKHpvbmUpKTsKLSsKLSsJcmV0dXJuICh6b25lLT5tYXhyZWNvcmRzKTsKLSt9Ci0rCi0rdm9pZAotK2Ruc196b25lX3NldG1heHJlY29yZHMoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3VpbnQzMl90IHZhbCkgewotKyAgICAgICAgUkVRVUlSRShETlNfWk9ORV9WQUxJRCh6b25lKSk7Ci0rCi0rCXpvbmUtPm1heHJlY29yZHMgPSB2YWw7Ci0rfQotKwotIHN0YXRpYyBpc2NfYm9vbGVhbl90Ci0gbm90aWZ5X2lzcXVldWVkKGRuc196b25lX3QgKnpvbmUsIHVuc2lnbmVkIGludCBmbGFncywgZG5zX25hbWVfdCAqbmFtZSwKLSAJCWlzY19zb2NrYWRkcl90ICphZGRyLCBkbnNfdHNpZ2tleV90ICprZXkpCi1AQCAtMTQ0MzEsNyArMTQ0NDcsNyBAQCB6b25lX3hmcmRvbmUoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3Jlc3VsdF90IHJlc3VsdCkgewotIAlETlNfWk9ORV9DTFJGTEFHKHpvbmUsIEROU19aT05FRkxHX1NPQUJFRk9SRUFYRlIpOwotIAotIAlUSU1FX05PVygmbm93KTsKLS0Jc3dpdGNoIChyZXN1bHQpIHsKLSsJc3dpdGNoICh4ZnJyZXN1bHQpIHsKLSAJY2FzZSBJU0NfUl9TVUNDRVNTOgotIAkJRE5TX1pPTkVfU0VURkxBRyh6b25lLCBETlNfWk9ORUZMR19ORUVETk9USUZZKTsKLSAJCS8qRkFMTFRIUk9VR0gqLwotQEAgLTE0NTU4LDYgKzE0NTc0LDExIEBAIHpvbmVfeGZyZG9uZShkbnNfem9uZV90ICp6b25lLCBpc2NfcmVzdWx0X3QgcmVzdWx0KSB7Ci0gCQlETlNfWk9ORV9TRVRGTEFHKHpvbmUsIEROU19aT05FRkxBR19OT0lYRlIpOwotIAkJZ290byBzYW1lX21hc3RlcjsKLSAKLSsJY2FzZSBETlNfUl9UT09NQU5ZUkVDT1JEUzoKLSsJCUROU19aT05FX0pJVFRFUl9BREQoJm5vdywgem9uZS0+cmVmcmVzaCwgJnpvbmUtPnJlZnJlc2h0aW1lKTsKLSsJCWluY19zdGF0cyh6b25lLCBkbnNfem9uZXN0YXRzY291bnRlcl94ZnJmYWlsKTsKLSsJCWJyZWFrOwotKwotIAlkZWZhdWx0OgotIAluZXh0X21hc3RlcjoKLSAJCS8qCi1kaWZmIC0tZ2l0IGEvbGliL2lzY2NmZy9uYW1lZGNvbmYuYyBiL2xpYi9pc2NjZmcvbmFtZWRjb25mLmMKLWluZGV4IDc4MGFiNDYuLmU3ZmYxY2MgMTAwNjQ0Ci0tLS0gYS9saWIvaXNjY2ZnL25hbWVkY29uZi5jCi0rKysgYi9saWIvaXNjY2ZnL25hbWVkY29uZi5jCi1AQCAtMTY3OSw2ICsxNjc5LDcgQEAgem9uZV9jbGF1c2VzW10gPSB7Ci0gCXsgIm1hc3RlcmZpbGUtZm9ybWF0IiwgJmNmZ190eXBlX21hc3RlcmZvcm1hdCwgMCB9LAotIAl7ICJtYXgtaXhmci1sb2ctc2l6ZSIsICZjZmdfdHlwZV9zaXplLCBDRkdfQ0xBVVNFRkxBR19PQlNPTEVURSB9LAotIAl7ICJtYXgtam91cm5hbC1zaXplIiwgJmNmZ190eXBlX3NpemVub2RlZmF1bHQsIDAgfSwKLSsJeyAibWF4LXJlY29yZHMiLCAmY2ZnX3R5cGVfdWludDMyLCAwIH0sCi0gCXsgIm1heC1yZWZyZXNoLXRpbWUiLCAmY2ZnX3R5cGVfdWludDMyLCAwIH0sCi0gCXsgIm1heC1yZXRyeS10aW1lIiwgJmNmZ190eXBlX3VpbnQzMiwgMCB9LAotIAl7ICJtYXgtdHJhbnNmZXItaWRsZS1pbiIsICZjZmdfdHlwZV91aW50MzIsIDAgfSwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTg4NjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtODg2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyZDY4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtODg2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi1Gcm9tIGMxZDA1OTlhMjQ2ZjY0NmQxYzIyMDE4ZjhmYTA5NDU5MjcwYTQ0YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDIxIE9jdCAyMDE2IDE0OjU1OjEwICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIDQ0ODkuIFtzZWN1cml0eV0gSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYXNzZXJ0aW9ucyB3aGVuCi0gcHJvY2Vzc2luZyBhIHJlc3BvbnNlLiAoQ1ZFLTIwMTYtODg2NCkgW1JUICM0MzQ2NV0KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYmQ2ZjI3ZjVjMzUzMTMzYjU2M2ZlNjkxMDBiMmYxNjhjMTI5ZjNjYSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9YmluZDkuZ2l0O2E9Y29tbWl0O2g9YzFkMDU5OWEyNDZmNjQ2ZDFjMjIwMThmOGZhMDk0NTkyNzBhNDRiOF0KLQotQ1ZFOiBDVkUtMjAxNi04ODY0Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIENIQU5HRVMgICAgICAgICAgICB8ICAzICsrKwotIGxpYi9kbnMvcmVzb2x2ZXIuYyB8IDY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggNWM4YzYxYS4uNDFjZmNlNSAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsNiBAQAotKzQ0ODkuCVtzZWN1cml0eV0JSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYXNzZXJ0aW9ucyB3aGVuIHByb2Nlc3NpbmcKLSsJCQlhIHJlc3BvbnNlLiAoQ1ZFLTIwMTYtODg2NCkgW1JUICM0MzQ2NV0KLSsKLSA0NDY3LiAgIFtzZWN1cml0eV0gICAgICBJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhbiBhc3NlcnRpb24gd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyBhIG1lc3NhZ2UuIChDVkUtMjAxNi0yNzc2KSBbUlQgIzQzMTM5XQotIAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmVzb2x2ZXIuYyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotaW5kZXggYmExYWUyMy4uMTNjOGI0NCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmVzb2x2ZXIuYwotKysrIGIvbGliL2Rucy9yZXNvbHZlci5jCi1AQCAtNjEyLDcgKzYxMiw5IEBAIHZhbGNyZWF0ZShmZXRjaGN0eF90ICpmY3R4LCBkbnNfYWRiYWRkcmluZm9fdCAqYWRkcmluZm8sIGRuc19uYW1lX3QgKm5hbWUsCi0gCXZhbGFyZy0+YWRkcmluZm8gPSBhZGRyaW5mbzsKLSAKLSAJaWYgKCFJU0NfTElTVF9FTVBUWShmY3R4LT52YWxpZGF0b3JzKSkKLS0JCUlOU0lTVCgodmFsb3B0aW9ucyAmIEROU19WQUxJREFUT1JfREVGRVIpICE9IDApOwotKwkJdmFsb3B0aW9ucyB8PSBETlNfVkFMSURBVE9SX0RFRkVSOwotKwllbHNlCi0rCQl2YWxvcHRpb25zICY9IH5ETlNfVkFMSURBVE9SX0RFRkVSOwotIAotIAlyZXN1bHQgPSBkbnNfdmFsaWRhdG9yX2NyZWF0ZShmY3R4LT5yZXMtPnZpZXcsIG5hbWUsIHR5cGUsIHJkYXRhc2V0LAotIAkJCQkgICAgICBzaWdyZGF0YXNldCwgZmN0eC0+cm1lc3NhZ2UsCi1AQCAtNTUyNiwxMyArNTUyOCw2IEBAIGNhY2hlX25hbWUoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX25hbWVfdCAqbmFtZSwgZG5zX2FkYmFkZHJpbmZvX3QgKmFkZHJpbmZvLAotIAkJCQkJCQkgICByZGF0YXNldCwKLSAJCQkJCQkJICAgc2lncmRhdGFzZXQsCi0gCQkJCQkJCSAgIHZhbG9wdGlvbnMsIHRhc2spOwotLQkJCQkJLyoKLS0JCQkJCSAqIERlZmVyIGFueSBmdXJ0aGVyIHZhbGlkYXRpb25zLgotLQkJCQkJICogVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSB2YWxpZGF0b3JzCi0tCQkJCQkgKiBmcm9tIG1hbmlwdWxhdGluZyBmY3R4LT5ybWVzc2FnZQotLQkJCQkJICogc2ltdWx0YW5lb3VzbHkuCi0tCQkJCQkgKi8KLS0JCQkJCXZhbG9wdGlvbnMgfD0gRE5TX1ZBTElEQVRPUl9ERUZFUjsKLSAJCQkJfQotIAkJCX0gZWxzZSBpZiAoQ0hBSU5JTkcocmRhdGFzZXQpKSB7Ci0gCQkJCWlmIChyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2NuYW1lKQotQEAgLTU2NDcsNiArNTY0MiwxMSBAQCBjYWNoZV9uYW1lKGZldGNoY3R4X3QgKmZjdHgsIGRuc19uYW1lX3QgKm5hbWUsIGRuc19hZGJhZGRyaW5mb190ICphZGRyaW5mbywKLSAJCQkJICAgICAgIGVyZXN1bHQgPT0gRE5TX1JfTkNBQ0hFTlhSUlNFVCk7Ci0gCQkJfQotIAkJCWV2ZW50LT5yZXN1bHQgPSBlcmVzdWx0OwotKwkJCWlmIChhZGJwICE9IE5VTEwgJiYgKmFkYnAgIT0gTlVMTCkgewotKwkJCQlpZiAoYW5vZGVwICE9IE5VTEwgJiYgKmFub2RlcCAhPSBOVUxMKQotKwkJCQkJZG5zX2RiX2RldGFjaG5vZGUoKmFkYnAsIGFub2RlcCk7Ci0rCQkJCWRuc19kYl9kZXRhY2goYWRicCk7Ci0rCQkJfQotIAkJCWRuc19kYl9hdHRhY2goZmN0eC0+Y2FjaGUsIGFkYnApOwotIAkJCWRuc19kYl90cmFuc2Zlcm5vZGUoZmN0eC0+Y2FjaGUsICZub2RlLCBhbm9kZXApOwotIAkJCWNsb25lX3Jlc3VsdHMoZmN0eCk7Ci1AQCAtNTg5Nyw2ICs1ODk3LDExIEBAIG5jYWNoZV9tZXNzYWdlKGZldGNoY3R4X3QgKmZjdHgsIGRuc19hZGJhZGRyaW5mb190ICphZGRyaW5mbywKLSAJCWZjdHgtPmF0dHJpYnV0ZXMgfD0gRkNUWF9BVFRSX0hBVkVBTlNXRVI7Ci0gCQlpZiAoZXZlbnQgIT0gTlVMTCkgewotIAkJCWV2ZW50LT5yZXN1bHQgPSBlcmVzdWx0OwotKwkJCWlmIChhZGJwICE9IE5VTEwgJiYgKmFkYnAgIT0gTlVMTCkgewotKwkJCQlpZiAoYW5vZGVwICE9IE5VTEwgJiYgKmFub2RlcCAhPSBOVUxMKQotKwkJCQkJZG5zX2RiX2RldGFjaG5vZGUoKmFkYnAsIGFub2RlcCk7Ci0rCQkJCWRuc19kYl9kZXRhY2goYWRicCk7Ci0rCQkJfQotIAkJCWRuc19kYl9hdHRhY2goZmN0eC0+Y2FjaGUsIGFkYnApOwotIAkJCWRuc19kYl90cmFuc2Zlcm5vZGUoZmN0eC0+Y2FjaGUsICZub2RlLCBhbm9kZXApOwotIAkJCWNsb25lX3Jlc3VsdHMoZmN0eCk7Ci1AQCAtNjcxOCwxMyArNjcyMywxNSBAQCBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJZG5zX21lc3NhZ2VfdCAqbWVzc2FnZTsKLS0JZG5zX25hbWVfdCAqbmFtZSwgKmRuYW1lLCAqcW5hbWUsIHRuYW1lLCAqbnNfbmFtZTsKLSsJZG5zX25hbWVfdCAqbmFtZSwgKmRuYW1lID0gTlVMTCwgKnFuYW1lLCAqZHFuYW1lLCB0bmFtZSwgKm5zX25hbWU7Ci0rCWRuc19uYW1lX3QgKmNuYW1lID0gTlVMTDsKLSAJZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCAqbnNfcmRhdGFzZXQ7Ci0gCWlzY19ib29sZWFuX3QgZG9uZSwgZXh0ZXJuYWwsIGNoYWluaW5nLCBhYSwgZm91bmQsIHdhbnRfY2hhaW5pbmc7Ci0tCWlzY19ib29sZWFuX3QgaGF2ZV9hbnN3ZXIsIGZvdW5kX2NuYW1lLCBmb3VuZF90eXBlLCB3YW50ZWRfY2hhaW5pbmc7Ci0rCWlzY19ib29sZWFuX3QgaGF2ZV9hbnN3ZXIsIGZvdW5kX2NuYW1lLCBmb3VuZF9kbmFtZSwgZm91bmRfdHlwZTsKLSsJaXNjX2Jvb2xlYW5fdCB3YW50ZWRfY2hhaW5pbmc7Ci0gCXVuc2lnbmVkIGludCBhZmxhZzsKLSAJZG5zX3JkYXRhdHlwZV90IHR5cGU7Ci0tCWRuc19maXhlZG5hbWVfdCBmZG5hbWUsIGZxbmFtZTsKLSsJZG5zX2ZpeGVkbmFtZV90IGZkbmFtZSwgZnFuYW1lLCBmcWRuYW1lOwotIAlkbnNfdmlld190ICp2aWV3OwotIAotIAlGQ1RYVFJBQ0UoImFuc3dlcl9yZXNwb25zZSIpOwotQEAgLTY3MzgsNiArNjc0NSw3IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCi0gCWRvbmUgPSBJU0NfRkFMU0U7Ci0gCWZvdW5kX2NuYW1lID0gSVNDX0ZBTFNFOwotKwlmb3VuZF9kbmFtZSA9IElTQ19GQUxTRTsKLSAJZm91bmRfdHlwZSA9IElTQ19GQUxTRTsKLSAJY2hhaW5pbmcgPSBJU0NfRkFMU0U7Ci0gCWhhdmVfYW5zd2VyID0gSVNDX0ZBTFNFOwotQEAgLTY3NDcsMTIgKzY3NTUsMTMgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCWFhID0gSVNDX1RSVUU7Ci0gCWVsc2UKLSAJCWFhID0gSVNDX0ZBTFNFOwotLQlxbmFtZSA9ICZmY3R4LT5uYW1lOwotKwlkcW5hbWUgPSBxbmFtZSA9ICZmY3R4LT5uYW1lOwotIAl0eXBlID0gZmN0eC0+dHlwZTsKLSAJdmlldyA9IGZjdHgtPnJlcy0+dmlldzsKLSsJZG5zX2ZpeGVkbmFtZV9pbml0KCZmcWRuYW1lKTsKLSAJcmVzdWx0ID0gZG5zX21lc3NhZ2VfZmlyc3RuYW1lKG1lc3NhZ2UsIEROU19TRUNUSU9OX0FOU1dFUik7Ci0gCXdoaWxlICghZG9uZSAmJiByZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykgewotLQkJZG5zX25hbWVyZWxuX3QgbmFtZXJlbG47Ci0rCQlkbnNfbmFtZXJlbG5fdCBuYW1lcmVsbiwgZG5hbWVyZWxuOwotIAkJaW50IG9yZGVyOwotIAkJdW5zaWduZWQgaW50IG5sYWJlbHM7Ci0gCi1AQCAtNjc2MCw2ICs2NzY5LDggQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCWRuc19tZXNzYWdlX2N1cnJlbnRuYW1lKG1lc3NhZ2UsIEROU19TRUNUSU9OX0FOU1dFUiwgJm5hbWUpOwotIAkJZXh0ZXJuYWwgPSBJU0NfVEYoIWRuc19uYW1lX2lzc3ViZG9tYWluKG5hbWUsICZmY3R4LT5kb21haW4pKTsKLSAJCW5hbWVyZWxuID0gZG5zX25hbWVfZnVsbGNvbXBhcmUocW5hbWUsIG5hbWUsICZvcmRlciwgJm5sYWJlbHMpOwotKwkJZG5hbWVyZWxuID0gZG5zX25hbWVfZnVsbGNvbXBhcmUoZHFuYW1lLCBuYW1lLCAmb3JkZXIsCi0rCQkJCQkJICZubGFiZWxzKTsKLSAJCWlmIChuYW1lcmVsbiA9PSBkbnNfbmFtZXJlbG5fZXF1YWwpIHsKLSAJCQl3YW50ZWRfY2hhaW5pbmcgPSBJU0NfRkFMU0U7Ci0gCQkJZm9yIChyZGF0YXNldCA9IElTQ19MSVNUX0hFQUQobmFtZS0+bGlzdCk7Ci1AQCAtNjg1NCw3ICs2ODY1LDcgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCX0KLSAJCQkJfSBlbHNlIGlmIChyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX3Jyc2lnCi0gCQkJCQkgICAmJiByZGF0YXNldC0+Y292ZXJzID09Ci0tCQkJCQkgICBkbnNfcmRhdGF0eXBlX2NuYW1lCi0rCQkJCQkgICAgICBkbnNfcmRhdGF0eXBlX2NuYW1lCi0gCQkJCQkgICAmJiAhZm91bmRfdHlwZSkgewotIAkJCQkJLyoKLSAJCQkJCSAqIFdlJ3JlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBlbHNlLAotQEAgLTY4ODQsMTEgKzY4OTUsMTggQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCQkgKiBhIENOQU1FIG9yIEROQU1FKS4KLSAJCQkJCQkgKi8KLSAJCQkJCQlJTlNJU1QoIWV4dGVybmFsKTsKLS0JCQkJCQlpZiAoYWZsYWcgPT0KLS0JCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpIHsKLSsJCQkJCQlpZiAoKHJkYXRhc2V0LT50eXBlICE9Ci0rCQkJCQkJICAgICBkbnNfcmRhdGF0eXBlX2NuYW1lKSB8fAotKwkJCQkJCSAgICAhZm91bmRfZG5hbWUgfHwKLSsJCQkJCQkgICAgKGFmbGFnID09Ci0rCQkJCQkJICAgICBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikpCi0rCQkJCQkJewotIAkJCQkJCQloYXZlX2Fuc3dlciA9IElTQ19UUlVFOwotKwkJCQkJCQlpZiAocmRhdGFzZXQtPnR5cGUgPT0KLSsJCQkJCQkJICAgIGRuc19yZGF0YXR5cGVfY25hbWUpCi0rCQkJCQkJCQljbmFtZSA9IG5hbWU7Ci0gCQkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQkJCUROU19OQU1FQVRUUl9BTlNXRVI7Ci0rCQkJCQkJCSAgICBETlNfTkFNRUFUVFJfQU5TV0VSOwotIAkJCQkJCX0KLSAJCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PSBhZmxhZzsKLSAJCQkJCQlpZiAoYWEpCi1AQCAtNjk4MiwxMSArNzAwMCwxMSBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLSAJCQkJfQotIAotLQkJCQlpZiAobmFtZXJlbG4gIT0gZG5zX25hbWVyZWxuX3N1YmRvbWFpbikgewotKwkJCQlpZiAoZG5hbWVyZWxuICE9IGRuc19uYW1lcmVsbl9zdWJkb21haW4pIHsKLSAJCQkJCWNoYXIgcWJ1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSAJCQkJCWNoYXIgb2J1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLSAKLS0JCQkJCWRuc19uYW1lX2Zvcm1hdChxbmFtZSwgcWJ1ZiwKLSsJCQkJCWRuc19uYW1lX2Zvcm1hdChkcW5hbWUsIHFidWYsCi0gCQkJCQkJCXNpemVvZihxYnVmKSk7Ci0gCQkJCQlkbnNfbmFtZV9mb3JtYXQobmFtZSwgb2J1ZiwKLSAJCQkJCQkJc2l6ZW9mKG9idWYpKTsKLUBAIC03MDAxLDcgKzcwMTksNyBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJd2FudF9jaGFpbmluZyA9IElTQ19UUlVFOwotIAkJCQkJUE9TVCh3YW50X2NoYWluaW5nKTsKLSAJCQkJCWFmbGFnID0gRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVI7Ci0tCQkJCQlyZXN1bHQgPSBkbmFtZV90YXJnZXQocmRhdGFzZXQsIHFuYW1lLAotKwkJCQkJcmVzdWx0ID0gZG5hbWVfdGFyZ2V0KHJkYXRhc2V0LCBkcW5hbWUsCi0gCQkJCQkJCSAgICAgIG5sYWJlbHMsICZmZG5hbWUpOwotIAkJCQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9OT1NQQUNFKSB7Ci0gCQkJCQkJLyoKLUBAIC03MDE4LDEwICs3MDM2LDEzIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCi0gCQkJCQlkbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgmZmRuYW1lKTsKLSAJCQkJCWlmICghaXNfYW5zd2VydGFyZ2V0X2FsbG93ZWQodmlldywKLS0JCQkJCQkJcW5hbWUsIHJkYXRhc2V0LT50eXBlLAotLQkJCQkJCQlkbmFtZSwgJmZjdHgtPmRvbWFpbikpIHsKLSsJCQkJCQkgICAgIGRxbmFtZSwgcmRhdGFzZXQtPnR5cGUsCi0rCQkJCQkJICAgICBkbmFtZSwgJmZjdHgtPmRvbWFpbikpCi0rCQkJCQl7Ci0gCQkJCQkJcmV0dXJuIChETlNfUl9TRVJWRkFJTCk7Ci0gCQkJCQl9Ci0rCQkJCQlkcW5hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoJmZxZG5hbWUpOwotKwkJCQkJZG5zX25hbWVfY29weShkbmFtZSwgZHFuYW1lLCBOVUxMKTsKLSAJCQkJfSBlbHNlIHsKLSAJCQkJCS8qCi0gCQkJCQkgKiBXZSd2ZSBmb3VuZCBhIHNpZ25hdHVyZSB0aGF0Ci1AQCAtNzA0Niw2ICs3MDY3LDEwIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQlJTlNJU1QoIWV4dGVybmFsKTsKLSAJCQkJCWlmIChhZmxhZyA9PSBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikgewotIAkJCQkJCWhhdmVfYW5zd2VyID0gSVNDX1RSVUU7Ci0rCQkJCQkJZm91bmRfZG5hbWUgPSBJU0NfVFJVRTsKLSsJCQkJCQlpZiAoY25hbWUgIT0gTlVMTCkKLSsJCQkJCQkJY25hbWUtPmF0dHJpYnV0ZXMgJj0KLSsJCQkJCQkJICAgfkROU19OQU1FQVRUUl9BTlNXRVI7Ci0gCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotIAkJCQkJCQlETlNfTkFNRUFUVFJfQU5TV0VSOwotIAkJCQkJfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaAppbmRleCAwOTZkNWQ4Li44YmM0ZWEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2gKQEAgLTE3LDI0ICsxNywyOCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgY29udGV4dCh0cmFpbGluZyB3aGl0ZXNwYWNlKSBmb3IgdmVyc2lvbiA5LjEwLjUtUDMuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4gfCAgICA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4gYi9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbgotaW5kZXggOGIzZTVhYS4uNDg2OGEyNCAxMDA2NDQKK2luZGV4IGRjYTI3MmYuLjAyYmVjY2UgMTAwNjQ0CiAtLS0gYS9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbgogKysrIGIvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KIEBAIC03NCwxMSArNzQsMTEgQEAgcm5kYy1jb25mZ2VuLkBPQDogcm5kYy1jb25mZ2VuLmMKICBkZG5zLWNvbmZnZW4uQE9AOiBkZG5zLWNvbmZnZW4uYwogIAkke0xJQlRPT0xfTU9ERV9DT01QSUxFfSAke0NDfSAke0FMTF9DRkxBR1N9IC1jICR7c3JjZGlyfS9kZG5zLWNvbmZnZW4uYwogIAotLXJuZGMtY29uZmdlbkBFWEVFWFRAOiBybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30gJHtDT05GREVQTElCU30gCistcm5kYy1jb25mZ2VuQEVYRUVYVEA6IHJuZGMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSAke0NPTkZERVBMSUJTfQogK3JuZGMtY29uZmdlbkBFWEVFWFRAOiBybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtDT05GREVQTElCU30gJChTVUJESVJTKQogIAlleHBvcnQgQkFTRU9CSlM9InJuZGMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSI7IFwKICAJJHtGSU5BTEJVSUxEQ01EfQogIAotLWRkbnMtY29uZmdlbkBFWEVFWFRAOiBkZG5zLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30gJHtDT05GREVQTElCU30gCistZGRucy1jb25mZ2VuQEVYRUVYVEA6IGRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSAke0NPTkZERVBMSUJTfQogK2RkbnMtY29uZmdlbkBFWEVFWFRAOiBkZG5zLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtDT05GREVQTElCU30gJChTVUJESVJTKQogIAlleHBvcnQgQkFTRU9CSlM9ImRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSI7IFwKICAJJHtGSU5BTEJVSUxEQ01EfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2dlbmVyYXRlLXJuZGMta2V5LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2dlbmVyYXRlLXJuZGMta2V5LnNoCmluZGV4IGRiMjAxMjcuLmVmOTE1YzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9nZW5lcmF0ZS1ybmRjLWtleS5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZ2VuZXJhdGUtcm5kYy1rZXkuc2gKQEAgLTMsNSArMyw2IEBACiBpZiBbICEgLXMgL2V0Yy9iaW5kL3JuZGMua2V5IF07IHRoZW4KICAgICBlY2hvIC1uICJHZW5lcmF0aW5nIC9ldGMvYmluZC9ybmRjLmtleToiCiAgICAgL3Vzci9zYmluL3JuZGMtY29uZmdlbiAtYSAtYiA1MTIgLXIgL2Rldi91cmFuZG9tCisgICAgY2hvd24gcm9vdDpiaW5kIC9ldGMvYmluZC9ybmRjLmtleQogICAgIGNobW9kIDA2NDAgL2V0Yy9iaW5kL3JuZGMua2V5CiBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL21pcHMxLW5vdC1zdXBwb3J0LW9wY29kZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL21pcHMxLW5vdC1zdXBwb3J0LW9wY29kZS5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTMwNzk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9taXBzMS1ub3Qtc3VwcG9ydC1vcGNvZGUuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi1iaW5kOiBwb3J0IGEgcGF0Y2ggdG8gZml4IGEgYnVpbGQgZmFpbHVyZQotCi1taXBzMSBkb2VzIG5vdCBzdXBwb3J0IGxsIGFuZCBzYyBpbnN0cnVjdGlvbnMsIGFuZCBsZWFkIHRvIGJlbG93IGVycm9yLCBub3cKLXdlIHBvcnQgYSBwYXRjaCBmcm9tIGRlYmlhbiB0byBmaXggaXQKLVtodHRwOi8vc2VjdXJpdHkuZGViaWFuLm9yZy9kZWJpYW4tc2VjdXJpdHkvcG9vbC91cGRhdGVzL21haW4vYi9iaW5kOS9iaW5kOV85LjguNC5kZnNnLlAxLTYrbm11MitkZWI3dTEuZGlmZi5nel0KLQotfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci18IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBPcGNvZGUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHByb2Nlc3NvcjogbWlwczEgKG1pcHMxKSBgbGwgJDMsMCgkNiknCi18IHtzdGFuZGFyZCBpbnB1dH06NTA6IEVycm9yOiBPcGNvZGUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHByb2Nlc3NvcjogbWlwczEgKG1pcHMxKSBgc2MgJDMsMCgkNiknCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBiaW5kOS05LjguNC5kZnNnLlAxLm9yaWcvbGliL2lzYy9taXBzL2luY2x1ZGUvaXNjL2F0b21pYy5oCi0rKysgYmluZDktOS44LjQuZGZzZy5QMS9saWIvaXNjL21pcHMvaW5jbHVkZS9pc2MvYXRvbWljLmgKLUBAIC0zMSwxOCArMzEsMjAgQEAKLSBpc2NfYXRvbWljX3hhZGQoaXNjX2ludDMyX3QgKnAsIGludCB2YWwpIHsKLSAJaXNjX2ludDMyX3Qgb3JpZzsKLSAKLS0JLyogYWRkIGlzIGEgY2hlYXQsIHNpbmNlIE1JUFMgaGFzIG5vIG1vdiBpbnN0cnVjdGlvbiAqLwotLQlfX2FzbV9fIHZvbGF0aWxlICgKLS0JICAgICIxOiIKLS0JICAgICJsbCAkMywgJTFcbiIKLS0JICAgICJhZGQgJTAsICQwLCAkM1xuIgotLQkgICAgImFkZCAkMywgJDMsICUyXG4iCi0tCSAgICAic2MgJDMsICUxXG4iCi0tCSAgICAiYmVxICQzLCAwLCAxYiIKLS0JICAgIDogIj0mciIob3JpZykKLS0JICAgIDogIm0iKCpwKSwgInIiKHZhbCkKLS0JICAgIDogIm1lbW9yeSIsICIkMyIKLS0JCSk7Ci0rCV9fYXNtX18gX192b2xhdGlsZV9fICgKLSsJIgkuc2V0CXB1c2gJCVxuIgotKwkiCS5zZXQJbWlwczIJCVxuIgotKwkiCS5zZXQJbm9yZW9yZGVyCVxuIgotKwkiCS5zZXQJbm9hdAkJXG4iCi0rCSIxOglsbAkkMSwgJTEJCVxuIgotKwkiCWFkZHUJJTAsICQxLCAlMglcbiIKLSsJIglzYwklMCwgJTEJCVxuIgotKwkiCWJlcXoJJTAsIDFiCQlcbiIKLSsJIgltb3ZlCSUwLCAkMQkJXG4iCi0rCSIJLnNldAlwb3AJCVxuIgotKwk6ICI9JnIiIChvcmlnKSwgIitSIiAoKnApCi0rCTogInIiICh2YWwpCi0rCTogIm1lbW9yeSIpOwotIAotIAlyZXR1cm4gKG9yaWcpOwotIH0KLUBAIC01MiwxNiArNTQsNyBAQAotICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZAotIGlzY19hdG9taWNfc3RvcmUoaXNjX2ludDMyX3QgKnAsIGlzY19pbnQzMl90IHZhbCkgewotLQlfX2FzbV9fIHZvbGF0aWxlICgKLS0JICAgICIxOiIKLS0JICAgICJsbCAkMywgJTBcbiIKLS0JICAgICJhZGQgJDMsICQwLCAlMVxuIgotLQkgICAgInNjICQzLCAlMFxuIgotLQkgICAgImJlcSAkMywgMCwgMWIiCi0tCSAgICA6Ci0tCSAgICA6ICJtIigqcCksICJyIih2YWwpCi0tCSAgICA6ICJtZW1vcnkiLCAiJDMiCi0tCQkpOwotKwkqcCA9IHZhbDsKLSB9Ci0gCi0gLyoKLUBAIC03MiwyMCArNjUsMjMgQEAKLSBzdGF0aWMgaW5saW5lIGlzY19pbnQzMl90Ci0gaXNjX2F0b21pY19jbXB4Y2hnKGlzY19pbnQzMl90ICpwLCBpbnQgY21wdmFsLCBpbnQgdmFsKSB7Ci0gCWlzY19pbnQzMl90IG9yaWc7Ci0rCWlzY19pbnQzMl90IHRtcDsKLSAKLS0JX19hc21fXyB2b2xhdGlsZSgKLS0JICAgICIxOiIKLS0JICAgICJsbCAkMywgJTFcbiIKLS0JICAgICJhZGQgJTAsICQwLCAkM1xuIgotLQkgICAgImJuZSAkMywgJTIsIDJmXG4iCi0tCSAgICAiYWRkICQzLCAkMCwgJTNcbiIKLS0JICAgICJzYyAkMywgJTFcbiIKLS0JICAgICJiZXEgJDMsIDAsIDFiXG4iCi0tCSAgICAiMjoiCi0tCSAgICA6ICI9JnIiKG9yaWcpCi0tCSAgICA6ICJtIigqcCksICJyIihjbXB2YWwpLCAiciIodmFsKQotLQkgICAgOiAibWVtb3J5IiwgIiQzIgotLQkJKTsKLSsJX19hc21fXyBfX3ZvbGF0aWxlX18gKAotKwkiCS5zZXQJcHVzaAkJXG4iCi0rCSIJLnNldAltaXBzMgkJXG4iCi0rCSIJLnNldAlub3Jlb3JkZXIJXG4iCi0rCSIJLnNldAlub2F0CQlcbiIKLSsJIjE6CWxsCSQxLCAlMQkJXG4iCi0rCSIJYm5lCSQxLCAlMywgMmYJXG4iCi0rCSIJbW92ZQklMiwgJTQJCVxuIgotKwkiCXNjCSUyLCAlMQkJXG4iCi0rCSIJYmVxegklMiwgMWIJCVxuIgotKwkiMjoJbW92ZQklMCwgJDEJCVxuIgotKwkiCS5zZXQJcG9wCQlcbiIKLSsJOiAiPSZyIihvcmlnKSwgIitSIiAoKnApLCAiPXIiICh0bXApCi0rCTogInIiKGNtcHZhbCksICJyIih2YWwpCi0rCTogIm1lbW9yeSIpOwotIAotIAlyZXR1cm4gKG9yaWcpOwotIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MjlmMTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK1VzZSBweXRob24zIHJhdGhlciBkZWZhdWx0IHB5dGhvbiB3aGljaCBtYXliZSBsaW5rcyB0byBweXRob24yIGZvciBvZS4gQW5kIGFkZAorb3B0aW9uIGZvciBzZXR1cC5weSB0byBpbnN0YWxsIGZpbGVzIHRvIHJpZ2h0IGRpcmVjdG9yeS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS9iaW4vcHl0aG9uL01ha2VmaWxlLmluIGIvYmluL3B5dGhvbi9NYWtlZmlsZS5pbgoraW5kZXggYTQzYTNjMS4uMmU3MjdmMiAxMDA2NDQKKy0tLSBhL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KKysrKyBiL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KK0BAIC01NSw5ICs1NSw5IEBAIGluc3RhbGw6OiAke1RBUkdFVFN9IGluc3RhbGxkaXJzCisgCSR7SU5TVEFMTF9EQVRBfSAke3NyY2Rpcn0vZG5zc2VjLWNvdmVyYWdlLjggJHtERVNURElSfSR7bWFuZGlyfS9tYW44CisgCWlmIHRlc3QgLW4gIiR7UFlUSE9OfSIgOyB0aGVuIFwKKyAJCWlmIHRlc3QgLW4gIiR7REVTVERJUn0iIDsgdGhlbiBcCistCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0ke0RFU1RESVJ9IC0tcHJlZml4PSR7cHJlZml4fSA7IFwKKysJCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1yb290PSR7REVTVERJUn0gLS1wcmVmaXg9JHtwcmVmaXh9IC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gOyBcCisgCQllbHNlIFwKKy0JCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtwcmVmaXh9IDsgXAorKwkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXByZWZpeD0ke3ByZWZpeH0gLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSA7IFwKKyAJCWZpIFwKKyAJZmkKKyAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDMxNGJiOTAuLjg2NzkyM2UgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTIyNyw3ICsyMjcsNyBAQCBBQ19BUkdfV0lUSChweXRob24sCisgWyAgLS13aXRoLXB5dGhvbj1QQVRIICAgICAgc3BlY2lmeSBwYXRoIHRvIHB5dGhvbiBpbnRlcnByZXRlcl0sCisgICAgIHVzZV9weXRob249IiR3aXRodmFsIiwgdXNlX3B5dGhvbj0idW5zcGVjIikKKyAKKy1weXRob249InB5dGhvbiBweXRob24zIHB5dGhvbjMuNSBweXRob24zLjQgcHl0aG9uMy4zIHB5dGhvbjMuMiBweXRob24yIHB5dGhvbjIuNyIKKytweXRob249InB5dGhvbjMgcHl0aG9uMy41IHB5dGhvbjMuNCBweXRob24zLjMgcHl0aG9uMy4yIHB5dGhvbjIgcHl0aG9uMi43IgorIAorIHRlc3RhcmdwYXJzZT0ndHJ5OiBpbXBvcnQgYXJncGFyc2UKKyBleGNlcHQ6IGV4aXQoMSknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC4zLVAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuMy1QMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwMjI3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC4zLVAzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLVNVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIklTQyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9MGE5NWY1MmEwYWI2YzVmNTJkZWRjOWE0NWU3YWJiM2YiCi0KLURFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzMS1ub3Qtc3VwcG9ydC1vcGNvZGUuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LXRlc3Qtb24taG9zdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKLSAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMjg1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEyODZfMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMjg2XzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjA4OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yNzc1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTI3NzYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtODg2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MTcwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmNmN2U3NzJiNjE2ZjcyNTk0MjBhM2VkYzVkZjM1MGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkwODEwZDFmYmI3MmFmYTYyOWU3NDYzOGQxOWNkNDRlMjhkMmIyZTVlYjYzZjU1YzcwNWFkODVkMWE0Y2I4MyIKLQotRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgotRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tIC0tZGlzYWJsZS10aHJlYWRzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1kaXNhYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICIKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcKLQotIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgotCi1JTklUU0NSSVBUX05BTUUgPSAiYmluZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCi1GSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCi0JIyBieSAibWFrZSBpbnN0YWxsIjoKLQkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKLQlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICIke0R9JHtiaW5kaXJ9L25zbG9va3VwIgotCXJtICIke0R9JHttYW5kaXJ9L21hbjEvbnNsb29rdXAuMSIKLQlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0JaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgotCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgotCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcwotCi0JIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcwotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAotCSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNS1QMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3MjRhOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIKQEAgLTAsMCArMSwxMTkgQEAKK1NVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIklTQyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ZGJhNDY1MDc0NDYxOTgxMTliY2RlMzJhNGZlYWFiNDMiCisKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKKyAgICAgICAgICAgZmlsZTovL25hbWVkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vYmluZDkgXAorICAgICAgICAgICBmaWxlOi8vaW5pdC5kLWFkZC1zdXBwb3J0LWZvci1yZWFkLW9ubHktcm9vdGZzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaCBcCisgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkoXC5cZCspKygtUFxkKykqKS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNzljYWZiZDlhYzc2MjM5ZWU1MzJkZDg5ZDA1Y2M4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDdlOTZiNWIwYmJhYzdiOTAwZDRjNGJiYjgyZTA5NTZiNGU1MDk0MzNjNWZhMzkyYmI3MmE5MjliOTY2MDZhIgorCitFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCitFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgcHl0aG9uMy1kaXIKKworZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCisKKyMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgorUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgorCitJTklUU0NSSVBUX05BTUUgPSAiYmluZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCitGSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCisJIyBieSAibWFrZSBpbnN0YWxsIjoKKwkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKKwlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICIke0R9JHtiaW5kaXJ9L25zbG9va3VwIgorCXJtICIke0R9JHttYW5kaXJ9L21hbjEvbnNsb29rdXAuMSIKKwlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKwlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgorCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgorCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcworCisJIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKKwlmaQorCisgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2lzYy8qLnB5YworfQorCitDT05GRklMRVNfJHtQTn0gPSAiIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAorCSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwppbmRleCA4ODI4NzNhLi4xODA3YWE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwpAQCAtNiwxNiArNiw0MSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OWJjNTRiOTNjZDdlMTdiZjAzZjUyNTEzZjM5ZjkyNmUiCi1ERVBFTkRTID0gInVkZXYgbGlidXNiIGRidXMtZ2xpYiBnbGliLTIuMCBsaWJjaGVjayIKK0RFUEVORFMgPSAidWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgbGliY2hlY2siCiBQUk9WSURFUyArPSAiYmx1ZXotaGNpZHVtcCIKIFJQUk9WSURFU18ke1BOfSArPSAiYmx1ZXotaGNpZHVtcCIKIAogUkNPTkZMSUNUU18ke1BOfSA9ICJibHVlejQiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJvYmV4LXByb2ZpbGVzIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJRyA/Pz0gIm9iZXgtcHJvZmlsZXMgXAorICAgIHJlYWRsaW5lIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyAgICBhMmRwLXByb2ZpbGVzIFwKKyAgICBhdnJjcC1wcm9maWxlcyBcCisgICAgbmV0d29yay1wcm9maWxlcyBcCisgICAgaGlkLXByb2ZpbGVzIFwKKyAgICBob2ctcHJvZmlsZXMgXAorICAgIHRvb2xzIFwKKyAgICBkZXByZWNhdGVkIFwKKyIKIFBBQ0tBR0VDT05GSUdbb2JleC1wcm9maWxlc10gPSAiLS1lbmFibGUtb2JleCwtLWRpc2FibGUtb2JleCxsaWJpY2FsIgotUEFDS0FHRUNPTkZJR1tleHBlcmltZW50YWxdID0gIi0tZW5hYmxlLWV4cGVyaW1lbnRhbCwtLWRpc2FibGUtZXhwZXJpbWVudGFsLCIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0tZW5hYmxlLWNsaWVudCwtLWRpc2FibGUtY2xpZW50LHJlYWRsaW5lLCIKK1BBQ0tBR0VDT05GSUdbdGVzdGluZ10gPSAiLS1lbmFibGUtdGVzdGluZywtLWRpc2FibGUtdGVzdGluZyIKK1BBQ0tBR0VDT05GSUdbbWlkaV0gPSAiLS1lbmFibGUtbWlkaSwtLWRpc2FibGUtbWlkaSxhbHNhLWxpYiIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbY3Vwc10gPSAiLS1lbmFibGUtY3VwcywtLWRpc2FibGUtY3VwcywsY3VwcyIKK1BBQ0tBR0VDT05GSUdbbmZjXSA9ICItLWVuYWJsZS1uZmMsLS1kaXNhYmxlLW5mYyIKK1BBQ0tBR0VDT05GSUdbc2FwLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1zYXAsLS1kaXNhYmxlLXNhcCIKK1BBQ0tBR0VDT05GSUdbYTJkcC1wcm9maWxlc10gPSAiLS1lbmFibGUtYTJkcCwtLWRpc2FibGUtYTJkcCIKK1BBQ0tBR0VDT05GSUdbYXZyY3AtcHJvZmlsZXNdID0gIi0tZW5hYmxlLWF2cmNwLC0tZGlzYWJsZS1hdnJjcCIKK1BBQ0tBR0VDT05GSUdbbmV0d29yay1wcm9maWxlc10gPSAiLS1lbmFibGUtbmV0d29yaywtLWRpc2FibGUtbmV0d29yayIKK1BBQ0tBR0VDT05GSUdbaGlkLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1oaWQsLS1kaXNhYmxlLWhpZCIKK1BBQ0tBR0VDT05GSUdbaG9nLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1ob2csLS1kaXNhYmxlLWhvZyIKK1BBQ0tBR0VDT05GSUdbaGVhbHRoLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1oZWFsdGgsLS1kaXNhYmxlLWhlYWx0aCIKK1BBQ0tBR0VDT05GSUdbc2l4YXhpc10gPSAiLS1lbmFibGUtc2l4YXhpcywtLWRpc2FibGUtc2l4YXhpcyIKK1BBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkc10gPSAiLS1lbmFibGUtdGhyZWFkcywtLWRpc2FibGUtdGhyZWFkcyIKK1BBQ0tBR0VDT05GSUdbZGVwcmVjYXRlZF0gPSAiLS1lbmFibGUtZGVwcmVjYXRlZCwtLWRpc2FibGUtZGVwcmVjYXRlZCIKIAogU1JDX1VSSSA9ICJcCiAgICAgJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9ibHVldG9vdGgvYmx1ZXotJHtQVn0udGFyLnh6IFwKQEAgLTI0LDYgKzQ5LDcgQEAKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gnLCBkKX0gXAogICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2ggXAogICAgIGZpbGU6Ly9jdmUtMjAxNy0xMDAwMjUwLnBhdGNoIFwKICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKQEAgLTMzLDIxICs1OSwyMCBAQAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHB0ZXN0CiAKIEVYVFJBX09FQ09ORiA9ICJcCi0gIC0tZW5hYmxlLXRvb2xzIFwKLSAgLS1kaXNhYmxlLWN1cHMgXAogICAtLWVuYWJsZS10ZXN0IFwKICAgLS1lbmFibGUtZGF0YWZpbGVzIFwKLSAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXN5c3RlbWQnLCAnLS1kaXNhYmxlLXN5c3RlbWQnLCBkKX0gXAogICAtLWVuYWJsZS1saWJyYXJ5IFwKICIKIAogIyBibHVlejUgYnVpbGRzIGEgbGFyZ2UgbnVtYmVyIG9mIHVzZWZ1bCB1dGlsaXRpZXMgYnV0IGRvZXMgbm90CiAjIGluc3RhbGwgdGhlbS4gIFNwZWNpZnkgd2hpY2ggb25lcyB3ZSB3YW50IHB1dCBpbnRvICR7UE59LW5vaW5zdC10b29scy4KIE5PSU5TVF9UT09MU19SRUFETElORSA/Pz0gIiIKLU5PSU5TVF9UT09MU19FWFBFUklNRU5UQUwgPz89ICIiCitOT0lOU1RfVE9PTFNfVEVTVElORyA/Pz0gIiIKK05PSU5TVF9UT09MU19CVCA/Pz0gIiIKIE5PSU5TVF9UT09MUyA9ICIgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JlYWRsaW5lJywgJyR7Tk9JTlNUX1RPT0xTX1JFQURMSU5FfScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2V4cGVyaW1lbnRhbCcsICcke05PSU5TVF9UT09MU19FWFBFUklNRU5UQUx9JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGVzdGluZycsICcke05PSU5TVF9UT09MU19URVNUSU5HfScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Rvb2xzJywgJyR7Tk9JTlNUX1RPT0xTX0JUfScsICcnLCBkKX0gXAogIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKQEAgLTU1LDM4ICs4MCwzNiBAQAogCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7SU5JVF9EX0RJUn0vYmx1ZXRvb3RoCiAKIAlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KLQlpZiBbIC1mICR7U30vcHJvZmlsZXMvYXVkaW8vYXVkaW8uY29uZiBdOyB0aGVuCi0JICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Byb2ZpbGVzL2F1ZGlvL2F1ZGlvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KLQlmaQogCWlmIFsgLWYgJHtTfS9wcm9maWxlcy9uZXR3b3JrL25ldHdvcmsuY29uZiBdOyB0aGVuCi0JICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Byb2ZpbGVzL25ldHdvcmsvbmV0d29yay5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCisJCWluc3RhbGwgLW0gMDY0NCAke1N9L3Byb2ZpbGVzL25ldHdvcmsvbmV0d29yay5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCiAJZmkKIAlpZiBbIC1mICR7U30vcHJvZmlsZXMvaW5wdXQvaW5wdXQuY29uZiBdOyB0aGVuCi0JICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Byb2ZpbGVzL2lucHV0L2lucHV0LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcHJvZmlsZXMvaW5wdXQvaW5wdXQuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwogCWZpCiAKLSAgaWYgWyAtZiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2JsdWV0b290aCBdOyB0aGVuCi0gICAgc2VkIC1pIC1lICdzI0BMSUJFWEVDRElSQCMke2xpYmV4ZWNkaXJ9I2cnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvYmx1ZXRvb3RoCi0gIGZpCisJaWYgWyAtZiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2JsdWV0b290aCBdOyB0aGVuCisJCXNlZCAtaSAtZSAncyNATElCRVhFQ0RJUkAjJHtsaWJleGVjZGlyfSNnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2JsdWV0b290aAorCWZpCiAKIAkjIEluc3RhbGwgZGVzaXJlZCB0b29scyB0aGF0IHVwc3RyZWFtIGxlYXZlcyBpbiBidWlsZCBhcmVhCi0gICAgICAgIGZvciBmIGluICR7Tk9JTlNUX1RPT0xTfSA7IGRvCi0JICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vJGYgJHtEfS8ke2JpbmRpcn0KKwlmb3IgZiBpbiAke05PSU5TVF9UT09MU30gOyBkbworCQlpbnN0YWxsIC1tIDc1NSAke0J9LyRmICR7RH0vJHtiaW5kaXJ9CiAJZG9uZQogCi0gICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAotICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtsaWJkaXJ9L2JsdWV6L3Rlc3QvKgorCSMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAorCSMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKwlzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7bGliZGlyfS9ibHVlei90ZXN0LyoKIH0KIAotQUxMT1dfRU1QVFlfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA9ICIxIgotUEFDS0FHRVMgPSsgImxpYmFzb3VuZC1tb2R1bGUtYmx1ZXogJHtQTn0tdGVzdHRvb2xzICR7UE59LW9iZXggJHtQTn0tbm9pbnN0LXRvb2xzIgorUEFDS0FHRVMgPSsgIiR7UE59LXRlc3R0b29scyAke1BOfS1vYmV4ICR7UE59LW5vaW5zdC10b29scyIKIAotRklMRVNfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA9ICIke2xpYmRpcn0vYWxzYS1saWIvbGliKi5zbyAke2RhdGFkaXJ9L2Fsc2EiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyouc28gJHtzeXN0ZW1kX3VuaXRkaXJ9LyAke2RhdGFkaXJ9L2RidXMtMSIKLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5sYSBcCi0gICR7bGliZGlyfS9hbHNhLWxpYi8qLmxhIFwKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLnNvIFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0vICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2xpYmRpcn0vY3VwcyBcCisiCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyoubGEgXAogIgogCiBGSUxFU18ke1BOfS1vYmV4ID0gIiR7bGliZXhlY2Rpcn0vYmx1ZXRvb3RoL29iZXhkIFwKQEAgLTEwOSwxNyArMTMyLDE3IEBACiAKIFJERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAicHl0aG9uMyBweXRob24zLWRidXMgcHl0aG9uMy1weWdvYmplY3QiCiAKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJibHVldG9vdGguc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ2JsdWV0b290aC5zZXJ2aWNlJywgJycsIGQpfSIKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCiBJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiYmx1ZXRvb3RoIgogCiBFWENMVURFX0ZST01fV09STEQgPSAiMSIKIAogZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3RzCisJb2VfcnVubWFrZSBidWlsZHRlc3RzCiB9CiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIGNwIC1yICR7Qn0vdW5pdC8gJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgcm0gLWYgJHtEfSR7UFRFU1RfUEFUSH0vdW5pdC8qLm8KKwljcCAtciAke0J9L3VuaXQvICR7RH0ke1BURVNUX1BBVEh9CisJcm0gLWYgJHtEfSR7UFRFU1RfUEFUSH0vdW5pdC8qLm8KIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY3OTQzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gM2IzNDFmYjQyMWVmNjFkYjc3ODJiZjEzMTRlYzY5MzgyODQ2N2RlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHkgRHVhbiA8ZnVnYW5nLmR1YW5AbnhwLmNvbT4KK0RhdGU6IFdlZCwgMjMgTm92IDIwMTYgMTc6MTI6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaGNpYXR0YWNoOiBiY200M3h4OiBmaXggdGhlIGRlbGF5IHRpbWVyIGZvciBmaXJtd2FyZSBkb3dubG9hZAorCitGcm9tIHRoZSBsb2cgaW4gLmJjbTQzeHhfbG9hZF9maXJtd2FyZSgpOgorICAgICAgICAvKiBXYWl0IDUwbXMgdG8gbGV0IHRoZSBmaXJtd2FyZSBwbGFjZWQgaW4gZG93bmxvYWQgbW9kZSAqLworICAgICAgICBuYW5vc2xlZXAoJnRtX21vZGUsIE5VTEwpOworCitCdXQgdGltZXNwZWMgdG1fbW9kZSBpcyByZWFsIGlzIDUwdXMuIENvcnJlY3QgdGhlIGRlbGF5ZWQgdGltZXIgY291bnQuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9ibHVldG9vdGgvYmx1ZXouZ2l0L2NvbW1pdC8/aWQ9NzYyNTVmNzMyZDY4YWVmMmI5MGQzNmQ5YzdiZTUxYTllMTczOWNlN10KKworU2lnbmVkLW9mZi1ieTogRnVnYW5nIER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+CistLS0KKyB0b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMgYi90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jCitpbmRleCA4MWYzOGNiLi5hYzFiM2MxIDEwMDY0NAorLS0tIGEvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYworKysrIGIvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYworQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgaW50IGJjbTQzeHhfc2V0X3NwZWVkKGludCBmZCwgc3RydWN0IHRlcm1pb3MgKnRpLCB1aW50MzJfdCBzcGVlZCkKKyBzdGF0aWMgaW50IGJjbTQzeHhfbG9hZF9maXJtd2FyZShpbnQgZmQsIGNvbnN0IGNoYXIgKmZ3KQorIHsKKyAJdW5zaWduZWQgY2hhciBjbWRbXSA9IHsgSENJX0NPTU1BTkRfUEtULCAweDJlLCAweGZjLCAweDAwIH07CistCXN0cnVjdCB0aW1lc3BlYyB0bV9tb2RlID0geyAwLCA1MDAwMCB9OworLQlzdHJ1Y3QgdGltZXNwZWMgdG1fcmVhZHkgPSB7IDAsIDIwMDAwMDAgfTsKKysJc3RydWN0IHRpbWVzcGVjIHRtX21vZGUgPSB7IDAsIDUwMDAwMDAwIH07CisrCXN0cnVjdCB0aW1lc3BlYyB0bV9yZWFkeSA9IHsgMCwgMjAwMDAwMDAwIH07CisgCXVuc2lnbmVkIGNoYXIgcmVzcFtDQ19NSU5fU0laRV07CisgCXVuc2lnbmVkIGNoYXIgdHhfYnVmWzEwMjRdOworIAlpbnQgbGVuLCBmZF9mdywgbjsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0CmluZGV4IDQ4OWU5YjkuLmQ3OTcyZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvaW5pdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2luaXQKQEAgLTIxLDI1ICsyMSwyMiBAQAogCiBjYXNlICQxIGluCiAgIHN0YXJ0KQotCWVjaG8gIlN0YXJ0aW5nICRERVNDIgotCisJZWNobyAtbiAiU3RhcnRpbmcgJERFU0M6ICIKIAlpZiB0ZXN0ICIkQkxVRVRPT1RIX0VOQUJMRUQiID0gMDsgdGhlbgotCQllY2hvICJkaXNhYmxlZC4gc2VlIC9ldGMvZGVmYXVsdC9ibHVldG9vdGgiCisJCWVjaG8gImRpc2FibGVkIChzZWUgL2V0Yy9kZWZhdWx0L2JsdWV0b290aCkuIgogCQlleGl0IDAKIAlmaQotCiAJc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLWJhY2tncm91bmQgJFNTRF9PUFRJT05TCi0JZWNobyAiJHtEQUVNT04jIyovfSIKLQorCWVjaG8gIiR7REFFTU9OIyMqL30uIgogICA7OwogICBzdG9wKQotCWVjaG8gIlN0b3BwaW5nICRERVNDIgorCWVjaG8gLW4gIlN0b3BwaW5nICRERVNDOiAiCiAJaWYgdGVzdCAiJEJMVUVUT09USF9FTkFCTEVEIiA9IDA7IHRoZW4KLQkJZWNobyAiZGlzYWJsZWQuIgorCQllY2hvICJkaXNhYmxlZCAoc2VlIC9ldGMvZGVmYXVsdC9ibHVldG9vdGgpLiIKIAkJZXhpdCAwCiAJZmkKIAlzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgJFNTRF9PUFRJT05TCi0JZWNobyAiJHtEQUVNT059IgorCWVjaG8gIiR7REFFTU9OIyMqL30uIgogICA7OwogICByZXN0YXJ0fGZvcmNlLXJlbG9hZCkKIAkkMCBzdG9wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMGI4MmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotcmVxdWlyZSBibHVlejUuaW5jCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJibHVlejUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OThkZWY4OGRmOTY4NDBkZmJiMDg1OGJiNmQ3MzM1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNmM5YzA1ZDJhMWRhNjQ0Y2UzNTcwZDk3NWFkYTM2NDNkMmU2MGMwMDdhOTU1YmFjMDljMGEwZWZlYjU4ZDE1IgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCi0gICAgYXR0cmliL2dhdHR0b29sIFwKLSAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKLSAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKLSAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKLSAgICB0b29scy9vYmV4Y3RsIFwKLSAgICB0b29scy9idG1nbXQgXAotIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBFWFBFUklNRU5UQUwKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX0VYUEVSSU1FTlRBTCA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYmRhZGRyIFwKLSAgICB0b29scy9hdmluZm8gXAotICAgIHRvb2xzL2F2dGVzdCBcCi0gICAgdG9vbHMvc2NvdGVzdCBcCi0gICAgdG9vbHMvYW1wdGVzdCBcCi0gICAgdG9vbHMvaHdkYiBcCi0gICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKLSAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAotICAgIHRvb2xzL2J0aW5mbyBcCi0gICAgdG9vbHMvYnRhdHRhY2ggXAotICAgIHRvb2xzL2J0c25vb3AgXAotICAgIHRvb2xzL2J0cHJveHkgXAotICAgIHRvb2xzL2J0aW90ZXN0IFwKLSAgICB0b29scy9tY2FwdGVzdCBcCi0gICAgdG9vbHMvY2x0ZXN0IFwKLSAgICB0b29scy9vb2J0ZXN0IFwKLSAgICB0b29scy9zZXEyYnNlcSBcCi0gICAgdG9vbHMvaWJlYWNvbiBcCi0gICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCi0gICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFmODU4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40Ni5iYgpAQCAtMCwwICsxLDY5IEBACityZXF1aXJlIGJsdWV6NS5pbmMKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKKworU1JDX1VSSVttZDVzdW1dID0gIjkxM2YzNWQ2ZmE0Y2E1NzcyYzUzYWRiOTM2YmYxOTQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYWIzZDM4MzdjMWFmYjhhZTIyOGE5NGJhMTc3MDlhNDY1MGJkNGRiMjQyMTFiNjc3MWFiNzM1Yzg5MDhlMjgiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAorICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAorICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAorICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAorICAgIHRvb2xzL29iZXhjdGwgXAorICAgIHRvb2xzL2J0bWdtdCBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCisgICAgZW11bGF0b3IvYnR2aXJ0IFwKKyAgICBlbXVsYXRvci9iMWVlIFwKKyAgICBlbXVsYXRvci9oZnAgXAorICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAorICAgIHRvb2xzLzNkc3AgXAorICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKKyAgICB0b29scy9nYXAtdGVzdGVyIFwKKyAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAorICAgIHRvb2xzL3Njby10ZXN0ZXIgXAorICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAorICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAorICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAorICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKKyAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfQlQgPz0gIiBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRzbm9vcCBcCisgICAgdG9vbHMvYnRwcm94eSBcCisgICAgdG9vbHMvYnRpb3Rlc3QgXAorICAgIHRvb2xzL2JuZXB0ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9hZHZ0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvbm9rZncgXAorICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCisgICAgdG9vbHMvZWRkeXN0b25lIFwKKyAgICB0b29scy9pYmVhY29uIFwKKyAgICB0b29scy9idGdhdHQtY2xpZW50IFwKKyAgICB0b29scy9idGdhdHQtc2VydmVyIFwKKyAgICB0b29scy90ZXN0LXJ1bm5lciBcCisgICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAorICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCisgICAgcHJvZmlsZXMvaWFwL2lhcGQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKaW5kZXggNjRhNTQxOC4uMmIwM2Y5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCkBAIC0xMyw5ICsxMyw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTQ4NmEyNzlhNmFiMGM4ZDE1MmJjZGEzYTViNWVkYzM2IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBibHVldG9vdGgKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGJsdWV0b290aCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLURFUEVORFMgID0gImRidXMgZ2xpYi0yLjAgcHBwIGlwdGFibGVzIHJlYWRsaW5lIgorREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCBwcHAgcmVhZGxpbmUiCiAKIElOQ19QUiA9ICJyMjAiCiAKQEAgLTMzLDYgKzMzLDcgQEAKIFBBQ0tBR0VDT05GSUcgPz89ICJ3aXNwciBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnM2cgc3lzdGVtZCB3aWZpJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGlwdGFibGVzIFwKICIKIAogIyBJZiB5b3Ugd2FudCBDb25uTWFuIHRvIHN1cHBvcnQgVlBOLCBhZGQgZm9sbG93aW5nIHN0YXRlbWVudCBpbnRvCkBAIC01MCw2ICs1MSw4IEBACiBQQUNLQUdFQ09ORklHW3BwdHBdID0gIi0tZW5hYmxlLXBwdHAgLS13aXRoLXBwdHA9JHtzYmluZGlyfS9wcHRwLC0tZGlzYWJsZS1wcHRwLCxwcHRwLWxpbnV4IgogIyBXSVNQciBzdXBwb3J0IGZvciBsb2dnaW5nIGludG8gaG90c3BvdHMsIHJlcXVpcmVzIFRMUwogUEFDS0FHRUNPTkZJR1t3aXNwcl0gPSAiLS1lbmFibGUtd2lzcHIsLS1kaXNhYmxlLXdpc3ByLGdudXRscywiCitQQUNLQUdFQ09ORklHW25mdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9bmZ0YWJsZXMgLCxsaWJtbmwgbGlibmZ0bmwsLGtlcm5lbC1tb2R1bGUtbmYtdGFibGVzLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tbmF0LWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tcm91dGUtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1tZXRhIGtlcm5lbC1tb2R1bGUtbmZ0LW1hc3EtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1uYXQiCitQQUNLQUdFQ09ORklHW2lwdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9aXB0YWJsZXMgLCxpcHRhYmxlcyxpcHRhYmxlcyIKIAogSU5JVFNDUklQVF9OQU1FID0gImNvbm5tYW4iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNSA1IDIgMyAuIHN0b3AgMjIgMCAxIDYgLiIKQEAgLTY2LDYgKzY5LDExIEBACiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0tdnBuID0gImNvbm5tYW4tdnBuLnNlcnZpY2UiCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0td2FpdC1vbmxpbmUgPSAiY29ubm1hbi13YWl0LW9ubGluZS5zZXJ2aWNlIgogCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3Jlc29sdi1jb25mJywnJyxkKX0iCitBTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5jb25ubWFuJywnJyxkKX0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZicsJycsZCl9IgorCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZApAQCAtODYsNiArOTQsMTEgQEAKIAkjIEF1dG9tYWtlIDEuMTIgd29uJ3QgaW5zdGFsbCBlbXB0eSBkaXJlY3RvcmllcywgYnV0IHdlIG5lZWQgdGhlCiAJIyBwbHVnaW5zIGRpcmVjdG9yeSB0byBiZSBwcmVzZW50IGZvciBvd25lcnNoaXAKIAlta2RpciAtcCAke0R9JHtsaWJkaXJ9L2Nvbm5tYW4vcGx1Z2lucworCisgICAgIyBGb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGRvIG5vdCBjcmVhdGUgbGlua3MgZHVyaW5nIGJvb3R1cAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgbG4gLXNmIC4uL3J1bi9jb25ubWFuL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLmNvbm5tYW4KKyAgICBmaQogfQogCiAjIFRoZXNlIHVzZWQgdG8gYmUgcGx1Z2lucywgYnV0IG5vdyB0aGV5IGFyZSBjb3JlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1GaXgtY29tcGlsZS1vbi1tdXNsLXdpdGgta2VybmVsLTQuOS1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtRml4LWNvbXBpbGUtb24tbXVzbC13aXRoLWtlcm5lbC00LjktaGVhZGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYzYjg2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1GaXgtY29tcGlsZS1vbi1tdXNsLXdpdGgta2VybmVsLTQuOS1oZWFkZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSBjOGJmYWQ0ZWU5ZDJjNTA1YzAwY2NiYjhiMjEzOTU0M2I1YWQ2ZmNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjMgSmFuIDIwMTcgMTc6NDE6MzkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGNvbXBpbGUgb24gbXVzbCB3aXRoIGtlcm5lbCA0LjkgaGVhZGVycwotCi1LZXJuZWwgaGVhZGVycyBicmVhayB3aGVuIG11c2wgZGVmaW5lcyBJRkZfTE9XRVJfVVAuIFdoaWxlCi13YWl0aW5nIGZvciBtb3JlIHByb3BlciBmaXggaW4gbXVzbCwgYWRkIGEgaGFjayB0byBjb25ubWFuLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1dvcmthcm91bmRdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gc3JjLzZ0bzQuYyAgICAgfCA0ICsrKysKLSBzcmMvZmlyZXdhbGwuYyB8IDQgKysrKwotIHNyYy9pcHRhYmxlcy5jIHwgNCArKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvNnRvNC5jIGIvc3JjLzZ0bzQuYwotaW5kZXggNzFhMjg4Mi4uMTkzOGFmYiAxMDA2NDQKLS0tLSBhL3NyYy82dG80LmMKLSsrKyBiL3NyYy82dG80LmMKLUBAIC0yNCw2ICsyNCwxMCBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSsvKiBoYWNrIHRvIG1ha2Ugc3VyZSBrZXJuZWwgaGVhZGVycyB1bmRlcnN0YW5kIHRoYXQgbGliYyAobXVzbCkKLSsgICBkb2VzIGRlZmluZSBJRkZfTE9XRVJfVVAgZXQgYWwuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0lGX05FVF9ERVZJQ0VfRkxBR1NfTE9XRVJfVVBfRE9STUFOVF9FQ0hPIDAKLSsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZpcmV3YWxsLmMgYi9zcmMvZmlyZXdhbGwuYwotaW5kZXggYzQ0MGRmNi4uYzgzZGVmOSAxMDA2NDQKLS0tLSBhL3NyYy9maXJld2FsbC5jCi0rKysgYi9zcmMvZmlyZXdhbGwuYwotQEAgLTIzLDYgKzIzLDEwIEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKy8qIGhhY2sgdG8gbWFrZSBzdXJlIGtlcm5lbCBoZWFkZXJzIHVuZGVyc3RhbmQgdGhhdCBsaWJjIChtdXNsKQotKyAgIGRvZXMgZGVmaW5lIElGRl9MT1dFUl9VUCBldCBhbC4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfSUZfTkVUX0RFVklDRV9GTEFHU19MT1dFUl9VUF9ET1JNQU5UX0VDSE8gMAotKwotICNpbmNsdWRlIDxlcnJuby5oPgotIAotICNpbmNsdWRlIDx4dGFibGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2lwdGFibGVzLmMgYi9zcmMvaXB0YWJsZXMuYwotaW5kZXggODJlM2FjNC4uNDZhZDllMiAxMDA2NDQKLS0tLSBhL3NyYy9pcHRhYmxlcy5jCi0rKysgYi9zcmMvaXB0YWJsZXMuYwotQEAgLTIzLDYgKzIzLDEwIEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKy8qIGhhY2sgdG8gbWFrZSBzdXJlIGtlcm5lbCBoZWFkZXJzIHVuZGVyc3RhbmQgdGhhdCBsaWJjIChtdXNsKQotKyAgIGRvZXMgZGVmaW5lIElGRl9MT1dFUl9VUCBldCBhbC4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfSUZfTkVUX0RFVklDRV9GTEFHU19MT1dFUl9VUF9ET1JNQU5UX0VDSE8gMAotKwotICNpbmNsdWRlIDxnZXRvcHQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWNvbm5tYW4uc2VydmljZS1zdG9wLXN5c3RlbWQtcmVzb2x2ZWQtd2hlbi13ZS11c2UtY28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMmUwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gOWY3MGI5NGViZjE4ZjUyYzExNTYzNDY0MjY1MjgzMGZhNzdmMjdhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDEyIEp1biAyMDE3IDE2OjUyOjM5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbm5tYW4uc2VydmljZTogc3RvcCBzeXN0ZW1kLXJlc29sdmVkIHdoZW4gd2UgdXNlIGNvbm5tYW4KKworU3RvcCBzeXN0ZW1kLXJlc29sdmVkIHNlcnZpY2Ugd2hlbiB3ZSB1c2UgY29ubm1hbiBhcyBuZXR3b3JrIG1hbmFnZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBzcmMvY29ubm1hbi5zZXJ2aWNlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY29ubm1hbi5zZXJ2aWNlLmluIGIvc3JjL2Nvbm5tYW4uc2VydmljZS5pbgoraW5kZXggOWY1YzEwZi4uZGFiNDhiYyAxMDA2NDQKKy0tLSBhL3NyYy9jb25ubWFuLnNlcnZpY2UuaW4KKysrKyBiL3NyYy9jb25ubWFuLnNlcnZpY2UuaW4KK0BAIC02LDYgKzYsNyBAQCBSZXF1aXJlc01vdW50c0Zvcj1AbG9jYWxzdGF0ZWRpckAvbGliL2Nvbm5tYW4KKyBBZnRlcj1kYnVzLnNlcnZpY2UgbmV0d29yay1wcmUudGFyZ2V0IHN5c3RlbWQtc3lzdXNlcnMuc2VydmljZQorIEJlZm9yZT1uZXR3b3JrLnRhcmdldCBtdWx0aS11c2VyLnRhcmdldCBzaHV0ZG93bi50YXJnZXQKKyBXYW50cz1uZXR3b3JrLnRhcmdldAorK0NvbmZsaWN0cz1zeXN0ZW1kLXJlc29sdmVkLnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPWRidXMKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmFmYmQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSA0MDU4Y2UzMTg2YTk5ZmQ1ZjAzMzUwZmMxMWE3ZmM4ZDM4YjZhMzgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxMDo1MzoxOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBmaXJld2FsbC1uZnRhYmxlczogZml4IGJ1aWxkIHdpdGggbGlibmZ0bmwtMS4wLjcKKworV2UgbmVlZCB0aGVzZSB1cGRhdGVzIHRvIGFjY29tbW9kYXRlIHRoZSBjaGFuZ2VzIGNhdXNlZCBieSB0aGUgZm9sbG93aW5nCitjb21taXQgaW4gbGlibmZ0bmwtMS4wLjcKKworY29tbWl0IDkwN2E5ZjhlNWE5M2Y1YmNkNDQ5NjQzZWIzOTE2YTY1NmQ2MzQ3NTgKK0F1dGhvcjogUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5ldGZpbHRlci5vcmc+CitEYXRlOiAgIFR1ZSBEZWMgMjAgMTM6NDc6MTEgMjAxNiArMDEwMAorCitzcmM6IGdldCByaWQgb2YgYWxpYXNlcyBhbmQgY29tcGF0CisKK1RoaXMgbWFjaGluZXJ5IHdhcyBpbnRyb2R1Y2VkIHRvIGF2b2lkIHN1ZGRlbiBjb21waWxhdGlvbiBicmVha2FnZSBvZgorb2xkIG5mdGFibGVzIHJlbGVhc2VzLiBXaXRoIHRoZSB1cGNvbWluZyByZWxlYXNlIG9mIDAuNyAoYW5kIDAuNiB3aGljaAoraXMgbm93IDYgbW9udGhzIG9sZCkgdGhpcyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZS4KKworTW9yZW92ZXIsIHVzZXJzIGdhaW4gbm90aGluZyBmcm9tIG9sZGVyIHJlbGVhc2VzIHNpbmNlIHRoZXkgYXJlCitoYWxmLWJvaWxlZCBhbmQgYnVnZ3kuCisKK1NvIGxldCdzIGdldCByaWQgb2YgYWxpYXNlcyBub3cuIEJ1bXAgTElCVkVSU0lPTiBhbmQgdXBkYXRlIG1hcCBmaWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHNyYy9maXJld2FsbC1uZnRhYmxlcy5jIHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMgYi9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYworaW5kZXggNTgzZDFjNC4uODNiMTM3YiAxMDA2NDQKKy0tLSBhL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCisrKysgYi9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYworQEAgLTM4Nyw5ICszODcsOSBAQCBzdGF0aWMgaW50IGFkZF9jbXAoc3RydWN0IG5mdG5sX3J1bGUgKnJ1bGUsIHVpbnQzMl90IHNyZWcsIHVpbnQzMl90IG9wLAorICAgICAgICAgaWYgKCFleHByKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAKKy0gICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9DTVBfU1JFRywgc3JlZyk7CistICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfQ01QX09QLCBvcCk7CistICAgICAgICBuZnRubF9leHByX3NldChleHByLCBORlRfRVhQUl9DTVBfREFUQSwgZGF0YSwgZGF0YV9sZW4pOworKyAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfQ01QX1NSRUcsIHNyZWcpOworKyAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfQ01QX09QLCBvcCk7CisrICAgICAgICBuZnRubF9leHByX3NldChleHByLCBORlROTF9FWFBSX0NNUF9EQVRBLCBkYXRhLCBkYXRhX2xlbik7CisgCisgICAgICAgICBuZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOworIAorQEAgLTU3NSw4ICs1NzUsOCBAQCBzdGF0aWMgaW50IGJ1aWxkX3J1bGVfbmF0KGNvbnN0IGNoYXIgKmFkZHJlc3MsIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuLAorIAlleHByID0gbmZ0bmxfZXhwcl9hbGxvYygibWV0YSIpOworIAlpZiAoIWV4cHIpCisgCQlnb3RvIGVycjsKKy0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUZOQU1FKTsKKy0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKKysJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRk5BTUUpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7CisgCW5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7CisgCWVyciA9IGFkZF9jbXAocnVsZSwgTkZUX1JFR18xLCBORlRfQ01QX0VRLCBpbnRlcmZhY2UsCisgCQkJc3RybGVuKGludGVyZmFjZSkgKyAxKTsKK0BAIC02NzcsOCArNjc3LDggQEAgc3RhdGljIGludCBidWlsZF9ydWxlX3NuYXQoaW50IGluZGV4LCBjb25zdCBjaGFyICphZGRyZXNzLAorIAlleHByID0gbmZ0bmxfZXhwcl9hbGxvYygibWV0YSIpOworIAlpZiAoIWV4cHIpCisgCQlnb3RvIGVycjsKKy0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUYpOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGKTsKKysJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOworIAluZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOworIAllcnIgPSBhZGRfY21wKHJ1bGUsIE5GVF9SRUdfMSwgTkZUX0NNUF9FUSwgJmluZGV4LCBzaXplb2YoaW5kZXgpKTsKKyAJaWYgKGVyciA8IDApCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAzLXN0YXRzLUZpeC1iYWQtZmlsZS1kZXNjcmlwdG9yLWluaXRpYWxpc2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtc3RhdHMtRml4LWJhZC1maWxlLWRlc2NyaXB0b3ItaW5pdGlhbGlzYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDU4MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtc3RhdHMtRml4LWJhZC1maWxlLWRlc2NyaXB0b3ItaW5pdGlhbGlzYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBjN2Y0MTUxZmIwNTNiMGQwNjkxZDhmMTBkN2UzNjkwMjY1ZDI4ODg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVrYXN6IE5vd2FrIDxsbm93YWtAdHljb2ludC5jb20+Ci1EYXRlOiBXZWQsIDI2IE9jdCAyMDE2IDE4OjEzOjAyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0YXRzOiBGaXggYmFkIGZpbGUgZGVzY3JpcHRvciBpbml0aWFsaXNhdGlvbgotCi1TdGF0cyBmaWxlIGNvZGUgaW5pdGlhbGlzZXMgaXRzIGZpbGUgZGVzY3JpcHRvciBmaWVsZCB0byAwLiAgQnV0IDAgaXMKLWEgdmFsaWQgZmQgdmFsdWUuIC0xIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuICBUaGlzIGNhdXNlcyBwcm9ibGVtcwotd2hlbiBhbiBlcnJvciBoYXBwZW5zIGJlZm9yZSBhIHN0YXRzIGZpbGUgaXMgb3BlbiAoZS5nLiBta2RpcgotZmFpbHMpLiBUaGUgY2xlYW4tdXAgcHJvY2VkdXJlLCBzdGF0c19mcmVlKCkgY2FsbHMgY2xvc2UoZmQpLiAgV2hlbiBmZAotaXMgMCwgdGhpcyBmaXJzdCBjbG9zZXMgc3RkaW4sIGFuZCB0aGVuIGFueSBmaWxlcy9zb2NrZXRzIHdoaWNoCi1yZWNlaXZlZCBmZD0wLCByZS11c2VkIGJ5IHRoZSBPUy4KLQotRml4ZWQgc2V2ZXJhbCBpbnN0YW5jZXMgb2YgYmFkIGZpbGUgZGVzY3JpcHRvciBmaWVsZCBoYW5kbGluZywgaW4gY2FzZQotb2YgZXJyb3JzLgotCi1UaGUgYnVnIHJlc3VsdHMgd2l0aCBjb25ubWFuIGZyZWV6aW5nIGlmIHRoZXJlIGlzIG5vIHJlYWQvd3JpdGUgc3RvcmFnZQotZGlyZWN0b3J5IGF2YWlsYWJsZSwgYW5kIHRoZXJlIGFyZSBtdWx0aXBsZSBhY3RpdmUgaW50ZXJmYWNlcwotKGZkPTAgZ2V0cyByZS11c2VkIGZvciBzb2NrZXRzIGluIHRoYXQgY2FzZSkuCi0KLVRoZSBwYXRjaCB3YXMgaW1wb3J0ZWQgZnJvbSB0aGUgQ29ubm1hbiBnaXQgcmVwb3NpdG9yeQotKGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuKSBhcyBvZiBjb21taXQgaWQKLWM3ZjQxNTFmYjA1M2IwZDA2OTFkOGYxMGQ3ZTM2OTAyNjVkMjg4ODkuIAotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1TaWduZWQtb2ZmLWJ5OiBMdWthc3ogTm93YWsgPGxub3dha0B0eWNvaW50LmNvbT4KLS0tLQotIHNyYy9zdGF0cy5jIHwgMTUgKysrKysrKysrKysrKysrCi0gc3JjL3V0aWwuYyAgfCAgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3N0YXRzLmMgYi9zcmMvc3RhdHMuYwotaW5kZXggMjYzNDNiMS4uYzNjYTczOCAxMDA2NDQKLS0tLSBhL3NyYy9zdGF0cy5jCi0rKysgYi9zcmMvc3RhdHMuYwotQEAgLTM3OCw2ICszNzgsNyBAQCBzdGF0aWMgaW50IHN0YXRzX2ZpbGVfc2V0dXAoc3RydWN0IHN0YXRzX2ZpbGUgKmZpbGUpCi0gCQkJc3RyZXJyb3IoZXJybm8pLCBmaWxlLT5uYW1lKTsKLSAKLSAJCVRGUihjbG9zZShmaWxlLT5mZCkpOwotKwkJZmlsZS0+ZmQgPSAtMTsKLSAJCWdfZnJlZShmaWxlLT5uYW1lKTsKLSAJCWZpbGUtPm5hbWUgPSBOVUxMOwotIAotQEAgLTM5Myw2ICszOTQsNyBAQCBzdGF0aWMgaW50IHN0YXRzX2ZpbGVfc2V0dXAoc3RydWN0IHN0YXRzX2ZpbGUgKmZpbGUpCi0gCWVyciA9IHN0YXRzX2ZpbGVfcmVtYXAoZmlsZSwgc2l6ZSk7Ci0gCWlmIChlcnIgPCAwKSB7Ci0gCQlURlIoY2xvc2UoZmlsZS0+ZmQpKTsKLSsJCWZpbGUtPmZkID0gLTE7Ci0gCQlnX2ZyZWUoZmlsZS0+bmFtZSk7Ci0gCQlmaWxlLT5uYW1lID0gTlVMTDsKLSAKLUBAIC02NDksNiArNjUxLDEzIEBAIHN0YXRpYyBpbnQgc3RhdHNfZmlsZV9oaXN0b3J5X3VwZGF0ZShzdHJ1Y3Qgc3RhdHNfZmlsZSAqZGF0YV9maWxlKQotIAliemVybyhoaXN0b3J5X2ZpbGUsIHNpemVvZihzdHJ1Y3Qgc3RhdHNfZmlsZSkpOwotIAliemVybyh0ZW1wX2ZpbGUsIHNpemVvZihzdHJ1Y3Qgc3RhdHNfZmlsZSkpOwotIAotKwkvKgotKwkgKiAwIGlzIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIC0gZmQgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQKLSsJICogdG8gLTEgdG8gaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkKLSsJICovCi0rCWhpc3RvcnlfZmlsZS0+ZmQgPSAtMTsKLSsJdGVtcF9maWxlLT5mZCA9IC0xOwotKwotIAllcnIgPSBzdGF0c19vcGVuKGhpc3RvcnlfZmlsZSwgZGF0YV9maWxlLT5oaXN0b3J5X25hbWUpOwotIAlpZiAoZXJyIDwgMCkKLSAJCXJldHVybiBlcnI7Ci1AQCAtNjgyLDYgKzY5MSwxMiBAQCBpbnQgX19jb25ubWFuX3N0YXRzX3NlcnZpY2VfcmVnaXN0ZXIoc3RydWN0IGNvbm5tYW5fc2VydmljZSAqc2VydmljZSkKLSAJCWlmICghZmlsZSkKLSAJCQlyZXR1cm4gLUVOT01FTTsKLSAKLSsJCS8qCi0rCQkgKiAwIGlzIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIC0gZmQgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQKLSsJCSAqIHRvIC0xIHRvIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5Ci0rCQkgKi8KLSsJCWZpbGUtPmZkID0gLTE7Ci0rCi0gCQlnX2hhc2hfdGFibGVfaW5zZXJ0KHN0YXRzX2hhc2gsIHNlcnZpY2UsIGZpbGUpOwotIAl9IGVsc2UgewotIAkJcmV0dXJuIC1FQUxSRUFEWTsKLWRpZmYgLS1naXQgYS9zcmMvdXRpbC5jIGIvc3JjL3V0aWwuYwotaW5kZXggZTY1MzJjOC4uNzMyZDQ1MSAxMDA2NDQKLS0tLSBhL3NyYy91dGlsLmMKLSsrKyBiL3NyYy91dGlsLmMKLUBAIC02Myw3ICs2Myw3IEBAIGludCBfX2Nvbm5tYW5fdXRpbF9pbml0KHZvaWQpCi0gewotIAlpbnQgciA9IDA7Ci0gCi0tCWlmIChmID4gMCkKLSsJaWYgKGYgPj0gMCkKLSAJCXJldHVybiAwOwotIAotIAlmID0gb3BlbihVUkFORE9NLCBPX1JET05MWSk7Ci1AQCAtODYsNyArODYsNyBAQCBpbnQgX19jb25ubWFuX3V0aWxfaW5pdCh2b2lkKQotIAotIHZvaWQgX19jb25ubWFuX3V0aWxfY2xlYW51cCh2b2lkKQotIHsKLS0JaWYgKGYgPiAwKQotKwlpZiAoZiA+PSAwKQotIAkJY2xvc2UoZik7Ci0gCi0gCWYgPSAtMTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwNGQ5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgY29ubm1hbi5pbmMKLQotU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29ubm1hbiBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1zdGF0cy1GaXgtYmFkLWZpbGUtZGVzY3JpcHRvci1pbml0aWFsaXNhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4NjUucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1jb21waWxlLW9uLW11c2wtd2l0aC1rZXJuZWwtNC45LWhlYWRlcnMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTE5MDNmZDNlN2E2YTM3MWQxMmFjNWQ3MmExZmEwMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzg5NDYwMzZmYTcwMTI0ZDY2MzEzNmY5ZjZiNjIzOGQ4OTdjYTQ4Mjc4MmRmOTA3YjA3YTQyOGIwOWRmNWEwIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJjb25ubWFuLWNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMmM2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zNC5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIGNvbm5tYW4uaW5jCisKK1NSQ19VUkkgID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbi5oLUNoYW5nZS12aXNpYmlsaXR5LXRvLWRlZmF1bHQtZm9yLWRlYnVnLXN5bWIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY29ubm1hbi5zZXJ2aWNlLXN0b3Atc3lzdGVtZC1yZXNvbHZlZC13aGVuLXdlLXVzZS1jby5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29ubm1hbiBcCisgICAgICAgICAgICBmaWxlOi8vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4NjUucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImUyMDAwMjg3MDJjODMxZDVmNTM1ZDIwZDYxZTYwOGVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5YTA4MDhjNzI5YzFmMzQ4ZmMzNmQ4Y2VjYjUyZDE5YjcyYmMzNGNiNDExYzUwMjYwOGNiMGUwMTkwZmM3MWUiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCmluZGV4IGFhZmRkMGEuLmU5NDM3MDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwpAQCAtMTIsMzAgKzEyLDMzIEBACiAKIERFUEVORFMgPSAib3BlbnNzbCBiaW5kIgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5pc2Mub3JnL2lzYy9kaGNwLyR7UFZ9L2RoY3AtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorU1JDX1VSSSA9ICJodHRwOi8vZnRwLmlzYy5vcmcvaXNjL2RoY3AvJHtQVn0vZGhjcC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vaW5pdC1yZWxheSBmaWxlOi8vZGVmYXVsdC1yZWxheSBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LXNlcnZlciBmaWxlOi8vZGVmYXVsdC1zZXJ2ZXIgXAogICAgICAgICAgICBmaWxlOi8vZGhjbGllbnQuY29uZiBmaWxlOi8vZGhjcGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIgXAorICAgICAgICAgICBmaWxlOi8vZGhjbGllbnQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kaGNwZC5zZXJ2aWNlIGZpbGU6Ly9kaGNyZWxheS5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2RoY3BkNi5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NlYXJjaC1mb3ItbGlieG1sMi5wYXRjaCAiCi0KKyAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImZ0cDovL2Z0cC5pc2Mub3JnL2lzYy9kaGNwLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrXC4oXGQrPykpLyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCB1c2VyYWRkIHVwZGF0ZS1yYy5kCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuLyR7UE59IC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59LXNlcnZlciA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vJHtCUE59IC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgJHtCUE59IgogCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciAke1BOfS1yZWxheSIKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyICR7UE59LXJlbGF5ICR7UE59LWNsaWVudCIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1zZXJ2ZXIgPSAiZGhjcGQuc2VydmljZSBkaGNwZDYuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2VydmVyID0gImRpc2FibGUiCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1yZWxheSA9ICJkaGNyZWxheS5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1yZWxheSA9ICJkaXNhYmxlIgogCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gImRoY2xpZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWNsaWVudCA9ICJkaXNhYmxlIgorCiBJTklUU0NSSVBUX1BBQ0tBR0VTID0gImRoY3Atc2VydmVyIgogSU5JVFNDUklQVF9OQU1FX2RoY3Atc2VydmVyID0gImRoY3Atc2VydmVyIgogSU5JVFNDUklQVF9QQVJBTVNfZGhjcC1zZXJ2ZXIgPSAiZGVmYXVsdHMiCkBAIC00Niw3ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgLS13aXRoLWNsaS1sZWFzZS1maWxlPSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RoY3AvZGhjbGllbnQubGVhc2VzIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtY2xpNi1sZWFzZS1maWxlPSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RoY3AvZGhjbGllbnQ2LmxlYXNlcyBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmJpbmQ9JHtTVEFHSU5HX0xJQkRJUn0vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wYXJhbm9pYSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtcGFyYW5vaWEgLS1kaXNhYmxlLXN0YXRpYyBcCiAgICAgICAgICAgICAgICAgLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSBcCiAgICAgICAgICAgICAgICAiCiAKQEAgLTc5LDE1ICs4MiwyMyBAQAogCXNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNwZCouc2VydmljZQogCXNlZCAtaSAtZSAncyxAYmFzZV9iaW5kaXJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY3BkKi5zZXJ2aWNlCiAJc2VkIC1pIC1lICdzLEBsb2NhbHN0YXRlZGlyQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY3BkKi5zZXJ2aWNlCi0gICAgICAgc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY3JlbGF5LnNlcnZpY2UKKwlzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcmVsYXkuc2VydmljZQorCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGhjbGllbnQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNsaWVudC5zZXJ2aWNlCisJc2VkIC1pIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNsaWVudC5zZXJ2aWNlCiB9CiAKLVBBQ0tBR0VTICs9ICJkaGNwLXNlcnZlciBkaGNwLXNlcnZlci1jb25maWcgZGhjcC1jbGllbnQgZGhjcC1yZWxheSBkaGNwLW9tc2hlbGwiCitQQUNLQUdFUyArPSAiZGhjcC1saWJzIGRoY3Atc2VydmVyIGRoY3Atc2VydmVyLWNvbmZpZyBkaGNwLWNsaWVudCBkaGNwLXJlbGF5IGRoY3Atb21zaGVsbCIKIAotRklMRVNfJHtQTn0gPSAiIgorUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJERVBFTkRTXyR7UE59LXN0YXRpY2RldiA9ICIiCiAKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYmRoY3BjdGwuc28uMCogJHtsaWJkaXJ9L2xpYm9tYXBpLnNvLjAqIgorCiBGSUxFU18ke1BOfS1zZXJ2ZXIgPSAiJHtzYmluZGlyfS9kaGNwZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9kaGNwLXNlcnZlciIKIFJSRUNPTU1FTkRTXyR7UE59LXNlcnZlciA9ICJkaGNwLXNlcnZlci1jb25maWciCiAKQEAgLTk1LDcgKzEwNiwxMSBAQAogCiBGSUxFU18ke1BOfS1yZWxheSA9ICIke3NiaW5kaXJ9L2RoY3JlbGF5ICR7c3lzY29uZmRpcn0vaW5pdC5kL2RoY3AtcmVsYXkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L2RoY3AtcmVsYXkiCiAKLUZJTEVTXyR7UE59LWNsaWVudCA9ICIke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQgJHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LXNjcmlwdCAke3N5c2NvbmZkaXJ9L2RoY3AvZGhjbGllbnQuY29uZiIKK0ZJTEVTXyR7UE59LWNsaWVudCA9ICIke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9kaGNsaWVudC1zY3JpcHQgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGhjcC9kaGNsaWVudC5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICIKIAogRklMRVNfJHtQTn0tb21zaGVsbCA9ICIke2JpbmRpcn0vb21zaGVsbCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViM2NmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA3Y2MyOTE0NDUzNWE2MjJmYzY3MWRjODZlYjFkYTY1YjA0NzNhN2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNjoxNDoyMiArMDgwMAorU3ViamVjdDogW1BBVENIIDAxLzExXSBkZWZpbmUgbWFjcm8gX1BBVEhfREhDUERfQ09ORiBhbmQgX1BBVEhfREhDTElFTlRfQ09ORgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitSZWJhc2UgdG8gNC4zLjYKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluY2x1ZGVzL3NpdGUuaCB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCitpbmRleCBiMmY3ZmQ3Li4yODBmYmI5IDEwMDY0NAorLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCisrKysgYi9pbmNsdWRlcy9zaXRlLmgKK0BAIC0xNDksNyArMTQ5LDggQEAKKyAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0aGUgZGhjcGQuY29uZiBmaWxlIHRvIGdvIHNvbWV3aGVyZSBvdGhlciB0aGFuCisgICAgdGhlIGRlZmF1bHQgbG9jYXRpb24uICAgQnkgZGVmYXVsdCwgaXQgZ29lcyBpbiAvZXRjL2RoY3BkLmNvbmYuICovCisgCistLyogI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3BkLmNvbmYiICovCisrI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3AvZGhjcGQuY29uZiIKKysjZGVmaW5lIF9QQVRIX0RIQ0xJRU5UX0NPTkYJIi9ldGMvZGhjcC9kaGNsaWVudC5jb25mIgorIAorIC8qIE5ldHdvcmsgQVBJIGRlZmluaXRpb25zLiAgIFlvdSBkbyBub3QgbmVlZCB0byBjaG9vc2Ugb25lIG9mIHRoZXNlIC0gaWYKKyAgICB5b3UgZG9uJ3QgY2hvb3NlLCBvbmUgd2lsbCBiZSBjaG9zZW4gZm9yIHlvdSBpbiB5b3VyIHN5c3RlbSdzIGNvbmZpZworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NDQzYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVN1YmplY3Q6IFtQQVRDSF0gc2l0ZS5oOiBlbmFibGUgZ2VudGxlIHNodXRkb3duCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGluY2x1ZGVzL3NpdGUuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3NpdGUuaCBiL2luY2x1ZGVzL3NpdGUuaAotaW5kZXggMWRkMTI1MS4uYWJiNjZlNCAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3NpdGUuaAotKysrIGIvaW5jbHVkZXMvc2l0ZS5oCi1AQCAtMjg5LDcgKzI4OSw3IEBACi0gICAgc2l0dWF0aW9ucy4gIFdlIHBsYW4gdG8gcmV2aXNpdCB0aGlzIGZlYXR1cmUgYW5kIG1heQotICAgIG1ha2Ugbm9uLWJhY2t3YXJkcyBjb21wYXRpYmxlIGNoYW5nZXMgaW5jbHVkaW5nIHRoZQotICAgIHJlbW92YWwgb2YgdGhpcyBkZWZpbmUuICBVc2UgYXQgeW91ciBvd24gcmlzay4gICovCi0tLyogI2RlZmluZSBFTkFCTEVfR0VOVExFX1NIVVRET1dOICovCi0rI2RlZmluZSBFTkFCTEVfR0VOVExFX1NIVVRET1dOCi0gCi0gLyogSW5jbHVkZSBvbGQgZXJyb3IgY29kZXMuICBUaGlzIGlzIHByb3ZpZGVkIGluIGNhc2UgeW91Ci0gICAgYXJlIGJ1aWxkaW5nIGFuIGV4dGVybmFsIHByb2dyYW0gc2ltaWxhciB0byBvbXNoZWxsIGZvcgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDU5ZGMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSBiZTc1NDBkMzFjMzU2ZTgwZWUwMmU5MGU4YmYxNjJiN2FjNmU1YmE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNDo1Njo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDAyLzExXSBkaGNsaWVudCBkYnVzCisKK3Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQorCitSZWJhc2UgdG8gNC4zLjYKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9zY3JpcHRzL2JzZG9zICAgfCA1ICsrKysrCisgY2xpZW50L3NjcmlwdHMvZnJlZWJzZCB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9saW51eCAgIHwgNSArKysrKworIGNsaWVudC9zY3JpcHRzL25ldGJzZCAgfCA1ICsrKysrCisgY2xpZW50L3NjcmlwdHMvb3BlbmJzZCB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9zb2xhcmlzIHwgNSArKysrKworIDYgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvYnNkb3MgYi9jbGllbnQvc2NyaXB0cy9ic2RvcworaW5kZXggZDY5ZDBkOC4uMDk1YjE0MyAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2JzZG9zCisrKysgYi9jbGllbnQvc2NyaXB0cy9ic2RvcworQEAgLTQ1LDYgKzQ1LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgLiAvZXRjL2RoY2xpZW50LWV4aXQtaG9va3MKKyAgIGZpCisgIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAorKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KKysgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAorKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCisrICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICBmaQorICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvZnJlZWJzZCBiL2NsaWVudC9zY3JpcHRzL2ZyZWVic2QKK2luZGV4IDhmM2UyYTIuLmFkN2ZiNDQgMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9mcmVlYnNkCisrKysgYi9jbGllbnQvc2NyaXB0cy9mcmVlYnNkCitAQCAtODksNiArODksMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9saW51eCBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitpbmRleCA1ZmIxNjEyLi4zZDQ0N2I2IDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKKysrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitAQCAtMTc0LDYgKzE3NCwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgICAgICBleGl0X3N0YXR1cz0kPworICAgICBmaQorIAorKyAgICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICAgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAorKyAgICAgICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgICBmaQorICAgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9uZXRic2QgYi9jbGllbnQvc2NyaXB0cy9uZXRic2QKK2luZGV4IDA3MzgzYjcuLmFhYmE4ZTggMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9uZXRic2QKKysrKyBiL2NsaWVudC9zY3JpcHRzL25ldGJzZAorQEAgLTQ1LDYgKzQ1LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgLiAvZXRjL2RoY2xpZW50LWV4aXQtaG9va3MKKyAgIGZpCisgIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAorKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KKysgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAorKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCisrICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICBmaQorICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvb3BlbmJzZCBiL2NsaWVudC9zY3JpcHRzL29wZW5ic2QKK2luZGV4IGU3ZjQ3NDYuLjU2Yjk4MGMgMTAwNjQ0CistLS0gYS9jbGllbnQvc2NyaXB0cy9vcGVuYnNkCisrKysgYi9jbGllbnQvc2NyaXB0cy9vcGVuYnNkCitAQCAtNDUsNiArNDUsMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9zb2xhcmlzIGIvY2xpZW50L3NjcmlwdHMvc29sYXJpcworaW5kZXggYWY1NTNiOS4uNGEyYWE2OSAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL3NvbGFyaXMKKysrKyBiL2NsaWVudC9zY3JpcHRzL3NvbGFyaXMKK0BAIC0yNiw2ICsyNiwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgIC4gL2V0Yy9kaGNsaWVudC1leGl0LWhvb2tzCisgICBmaQorICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKKysgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKKysgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgZmkKKyAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwYzdiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZDgwYmQ3OTIzMjNkYmQ1NjI2OTMwOWY4NWI0NTA2ZWI2YjFiNjBlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6MDU6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMV0gbGluayB3aXRoIGxjcnlwdG8KKworRnJvbSA0LjIuMCBmaW5hbCByZWxlYXNlLCAtbGNyeXB0byBjaGVjayB3YXMgcmVtb3ZlZCBhbmQgd2UgY29tcGlsZQorc3RhdGljIGxpYnJhcmllcworZnJvbSBiaW5kIHRoYXQgYXJlIGxpbmtlZCB0byBsaWJjcnlwdG8uIFRoaXMgaXMgd2h5IGkgYWRkZWQgYSBwYXRjaCBpbgorb3JkZXIgdG8gYWRkCistbGNyeXB0byB0byBMSUJTLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KKworUmViYXNlIHRvIDQuMy42CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNkZmEzNTIuLjQ0ZmI1N2UgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU5MSw2ICs1OTEsMTAgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW3ZvaWQgZm9vKCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKKyAjIExvb2sgZm9yIG9wdGlvbmFsIGhlYWRlcnMuCisgQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0LmggbmV0L2lmX2RsLmggbmV0L2lmNi5oIHJlZ2V4LmgpCisgCisrIyBmaW5kIGFuIE1ENSBsaWJyYXJ5CisrQUNfU0VBUkNIX0xJQlMoTUQ1X0luaXQsIFtjcnlwdG9dKQorK0FDX1NFQVJDSF9MSUJTKE1ENUluaXQsIFtjcnlwdG9dKQorKworICMgU29sYXJpcyBuZWVkcyBzb21lIGxpYnJhcmllcyBmb3IgZnVuY3Rpb25zCisgQUNfU0VBUkNIX0xJQlMoc29ja2V0LCBbc29ja2V0XSkKKyBBQ19TRUFSQ0hfTElCUyhpbmV0X250b2EsIFtuc2xdKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMWQ4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIGNjY2VjMDM0NGQ2OGRhYzQxMDBiNmYyNjBlZTI0ZTdjMmRhOWRmZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjA4OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTFdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1JQIDIwMTMvMDMvMjEKKworUmViYXNlIHRvIDQuMy42CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgfCA0ICsrLS0KKyBjb21tb24vTWFrZWZpbGUuYW0gIHwgMyArKy0KKyBkaGNwY3RsL01ha2VmaWxlLmFtIHwgMiArKworIG9tYXBpcC9NYWtlZmlsZS5hbSAgfCAxICsKKyByZWxheS9NYWtlZmlsZS5hbSAgIHwgMiArLQorIHNlcnZlci9NYWtlZmlsZS5hbSAgfCAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDJjYjgzZDguLjQ3MzBiYjMgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTcsMTEgKzcsMTEgQEAgU1VCRElSUyA9IC4gdGVzdHMKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorIAorIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKKy0JICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInCisrCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY2xpZW50LmNvbmYuZXhhbXBsZQorIHNiaW5fUFJPR1JBTVMgPSBkaGNsaWVudAorLWRoY2xpZW50X1NPVVJDRVMgPSBjbHBhcnNlLmMgZGhjbGllbnQuYyBkaGM2LmMgXAorK2RoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQoc3JjZGlyKS9kaGNsaWVudC5jICQoc3JjZGlyKS9kaGM2LmMgXAorIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKKyAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKKyAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKK2RpZmYgLS1naXQgYS9jb21tb24vTWFrZWZpbGUuYW0gYi9jb21tb24vTWFrZWZpbGUuYW0KK2luZGV4IDExM2FlZTguLjBmMjRmYmIgMTAwNjQ0CistLS0gYS9jb21tb24vTWFrZWZpbGUuYW0KKysrKyBiL2NvbW1vbi9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw1IEBACistQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKKysKKyBBTV9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQorIAorIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJkaGNwLmEKK2RpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQoraW5kZXggY2ViMGRlMS4uYmE4ZGQ4YiAxMDA2NDQKKy0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0xLDUgKzEsNyBAQAorIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgCisrQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCisrCisgYmluX1BST0dSQU1TID0gb21zaGVsbAorIGxpYl9MSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmEKKyBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKK2RpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KK2luZGV4IDQ0NmE1OTQuLmRkMWFmYTAgMTAwNjQ0CistLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw1IEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCisgbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0CitkaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQoraW5kZXggMzA2MGVjYS4uNmQ2NTJmNiAxMDA2NDQKKy0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCisrKysgYi9yZWxheS9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKyAKKy1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCisrQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKKyBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYworZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQoraW5kZXggNTRmZWVkZi4uMzk5MGI5YyAxMDA2NDQKKy0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCitAQCAtNiw3ICs2LDcgQEAgU1VCRElSUyA9IC4gdGVzdHMKKyAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorIAorLUFNX0NQUEZMQUdTID0gLUkuLiAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjcGQuY29uZi5leGFtcGxlCisgc2Jpbl9QUk9HUkFNUyA9IGRoY3BkCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1NjM4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAyZThmZjBlNGY2ZDM5ZTM0NmVhODZiOGM1MTRhYjRjY2M3OGZhMzU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNToyNDoxNCArMDgwMAorU3ViamVjdDogW1BBVENIIDA1LzExXSBkaGNwLWNsaWVudDogZml4IGludm9rZSBkaGNsaWVudC1zY3JpcHQgZmFpbGVkIG9uCisgUmVhZC1vbmx5IGZpbGUgc3lzdGVtCisKK0luIHJlYWQtb25seSBmaWxlIHN5c3RlbSwgJy9ldGMnIGlzIG9uIHRoZSByZWFkb25seSBwYXJ0aXRpb24sCithbmQgJy9ldGMvcmVzb2x2LmNvbmYnIGlzIHN5bWxpbmtlZCB0byBhIHNlcGFyYXRlIHdyaXRhYmxlCitwYXJ0aXRpb24uCisKK0luIHRoaXMgc2l0dWF0aW9uLCB3ZSBjcmVhdGUgdGVtcCBmaWxlcyAncmVzb2x2LmNvbmYuZGhjbGllbnQtbmV3JworaW4gL3RtcCBkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjbGllbnQvc2NyaXB0cy9saW51eCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKK2luZGV4IDNkNDQ3YjYuLjMxMjJhNzUgMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9saW51eAorKysrIGIvY2xpZW50L3NjcmlwdHMvbGludXgKK0BAIC00MCw3ICs0MCw3IEBAIG1ha2VfcmVzb2x2X2NvbmYoKSB7CisgICAgICMgREhDUHY0CisgICAgIGlmIFsgLW4gIiRuZXdfZG9tYWluX3NlYXJjaCIgXSB8fCBbIC1uICIkbmV3X2RvbWFpbl9uYW1lIiBdIHx8CisgICAgICAgIFsgLW4gIiRuZXdfZG9tYWluX25hbWVfc2VydmVycyIgXTsgdGhlbgorLSAgICAgICAgbmV3X3Jlc29sdl9jb25mPS9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQtbmV3CisrICAgICAgICBuZXdfcmVzb2x2X2NvbmY9L3RtcC9yZXNvbHYuY29uZi5kaGNsaWVudC1uZXcKKyAgICAgICAgIHJtIC1mICRuZXdfcmVzb2x2X2NvbmYKKyAKKyAgICAgICAgIGlmIFsgLW4gIiRuZXdfZG9tYWluX25hbWUiIF07IHRoZW4KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNi1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmIyODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNi1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDAxNjQxZDE0NmU0ZTZiZWE5NTRlNGE0ZWUxZjYyMzBiODIyNjY1YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjM3OjQ5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTFdIHNpdGUuaDogZW5hYmxlIGdlbnRsZSBzaHV0ZG93bgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgaW5jbHVkZXMvc2l0ZS5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCitpbmRleCAyODBmYmI5Li5lNmMyOTcyIDEwMDY0NAorLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCisrKysgYi9pbmNsdWRlcy9zaXRlLmgKK0BAIC0yOTYsNyArMjk2LDcgQEAKKyAgICBzaXR1YXRpb25zLiAgV2UgcGxhbiB0byByZXZpc2l0IHRoaXMgZmVhdHVyZSBhbmQgbWF5CisgICAgbWFrZSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlcyBpbmNsdWRpbmcgdGhlCisgICAgcmVtb3ZhbCBvZiB0aGlzIGRlZmluZS4gIFVzZSBhdCB5b3VyIG93biByaXNrLiAgKi8KKy0vKiAjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04gKi8KKysjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04KKyAKKyAvKiBJbmNsdWRlIG9sZCBlcnJvciBjb2Rlcy4gIFRoaXMgaXMgcHJvdmlkZWQgaW4gY2FzZSB5b3UKKyAgICBhcmUgYnVpbGRpbmcgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBzaW1pbGFyIHRvIG9tc2hlbGwgZm9yCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjMjZlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSA3MTA3NTExZmQyMDlmMDhmOWE5NmY4OTM4MDQxYWU0OGYzMjk1ODk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTY6MTc6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xMV0gQWRkIGNvbmZpZ3VyZSBhcmd1bWVudCB0byBtYWtlIHRoZSBsaWJ4bWwyIGRlcGVuZGVuY3kKKyBleHBsaWNpdCBhbmQgZGV0ZXJtaW5pc2l0aWMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorCitSZWJhc2UgdG8gNC4zLjYKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0NGZiNTdlLi44ZTlmNTA5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MTEsNiArNjExLDE3IEBAIEFDX0NIRUNLX0ZVTkNTKHN0cmxjYXQpCisgIyBGb3IgSFAvVVggd2UgbmVlZCAtbGlwdjYgZm9yIGlmX25hbWV0b2luZGV4LCBwZXJoYXBzIG90aGVycy4KKyBBQ19TRUFSQ0hfTElCUyhpZl9uYW1ldG9pbmRleCwgW2lwdjZdKQorIAorK0FDX0FSR19XSVRIKGxpYnhtbDIsCisrCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbGlieG1sMl0sIFtsaW5rIGFnYWluc3QgbGlieG1sMi4gdGhpcyBpcyBuZWVkZWQgaWYgYmluZCB3YXMgYnVpbHQgd2l0aCB4bWwyIHN1cHBvcnQgZW5hYmxlZF0pLAorKwl3aXRoX2xpYnhtbDI9IiR3aXRodmFsIiwgd2l0aF9saWJ4bWwyPSJubyIpCisrCisraWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4bm87IHRoZW4KKysJQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLAorKwkJW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KKysJCQlBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCisrCQlmaV0pCisrZmkKKysKKyAjIGNoZWNrIGZvciAvZGV2L3JhbmRvbSAoZGVjbGFyZXMgSEFWRV9ERVZfUkFORE9NKQorIEFDX01TR19DSEVDS0lORyhmb3IgcmFuZG9tIGRldmljZSkKKyBBQ19BUkdfV0lUSChyYW5kb21kZXYsCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNmQxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKQEAgLTAsMCArMSwxMTcgQEAKK0Zyb20gOTI4NzVmNWNjNDQ5MTQ1MTVlNTBjMTFjNTAzYTA5Y2VjOTA0OTdiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6NTE6NDQgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xMV0gdHdlYWsgdG8gc3VwcG9ydCBleHRlcm5hbCBiaW5kCisKK1R3ZWFrIHRoZSBleHRlcm5hbCBiaW5kIHRvIG9lLWNvcmUncyBzeXNyb290IHJhdGhlciB0aGFuCitleHRlcm5hbCBiaW5kIHNvdXJjZSBidWlsZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIDxvZS1jb3JlIHNwZWNpZmljPgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjbGllbnQvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIGNvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KKyBkaGNwY3RsL01ha2VmaWxlLmFtICAgICAgfCAyICstCisgb21hcGlwL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQorIHJlbGF5L01ha2VmaWxlLmFtICAgICAgICB8IDIgKy0KKyBzZXJ2ZXIvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCitpbmRleCA0NzMwYmIzLi44NGQ4MTMxIDEwMDY0NAorLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCisrKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KK0BAIC00LDcgKzQsNyBAQAorICMgcHJvZHVjdGlvbiBjb2RlLiBTYWRseSwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuCisgU1VCRElSUyA9IC4gdGVzdHMKKyAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJyBcCisgCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKK2RpZmYgLS1naXQgYS9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0gYi9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDUwMzFkMGMuLmE4ZGZkMjYgMTAwNjQ0CistLS0gYS9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgU1VCRElSUyA9IC4KKyAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9ICQoQVRGX0NGTEFHUykgLURVTklUX1RFU1QgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgQU1fQ1BQRkxBR1MgKz0gLUlAQklORERJUkAvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikKK2RpZmYgLS1naXQgYS9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGY2YTQzZTQuLjJmOThkMjIgMTAwNjQ0CistLS0gYS9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgU1VCRElSUyA9IC4KKyAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9ICQoQVRGX0NGTEFHUykgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCitkaWZmIC0tZ2l0IGEvZGhjcGN0bC9NYWtlZmlsZS5hbSBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK2luZGV4IGJhOGRkOGIuLjliMjQ4NmUgMTAwNjQ0CistLS0gYS9kaGNwY3RsL01ha2VmaWxlLmFtCisrKysgYi9kaGNwY3RsL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDQgQEAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKKyAKK2RpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KK2luZGV4IGRkMWFmYTAuLmU0YTg1OTkgMTAwNjQ0CistLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw0IEBACistQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKytCSU5ETElCRElSID0gQEJJTkRESVJACisgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBsaWJfTElCUkFSSUVTID0gbGlib21hcGkuYQorZGlmZiAtLWdpdCBhL3JlbGF5L01ha2VmaWxlLmFtIGIvcmVsYXkvTWFrZWZpbGUuYW0KK2luZGV4IDZkNjUyZjYuLmIzYmY1NzggMTAwNjQ0CistLS0gYS9yZWxheS9NYWtlZmlsZS5hbQorKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KK0BAIC0xLDQgKzEsNCBAQAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCitkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCitpbmRleCAzOTkwYjljLi5iNWQ4YzJkIDEwMDY0NAorLS0tIGEvc2VydmVyL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK0BAIC00LDcgKzQsNyBAQAorICMgcHJvZHVjdGlvbiBjb2RlLiBTYWRseSwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuCisgU1VCRElSUyA9IC4gdGVzdHMKKyAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGE4N2M1ZTcuLjk4MjEwODEgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw2IEBACisgU1VCRElSUyA9IC4KKyAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyAKKyBBTV9DUFBGTEFHUyA9ICQoQVRGX0NGTEFHUykgLURVTklUX1RFU1QgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgQU1fQ1BQRkxBR1MgKz0gLUlAQklORERJUkAvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMmI2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGYzZjhiNzcyNmU1MGUyNGVmM2VkZjVmYTVhMTdlMzFkMzkxMThkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNTo0OTozMSArMDgwMAorU3ViamVjdDogW1BBVENIIDA5LzExXSByZW1vdmUgZGhjbGllbnQtc2NyaXB0IGJhc2ggZGVwZW5kZW5jeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorCitSZWJhc2UgdG8gNC4zLjYKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAoraW5kZXggMzEyMmE3NS4uMTcxMmQ3ZCAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4CisrKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjIGRoY2xpZW50LXNjcmlwdCBmb3IgTGludXguIERhbiBIYWxiZXJ0LCBNYXJjaCwgMTk5Ny4KKyAjIFVwZGF0ZWQgZm9yIExpbnV4IDIuWzEyXSBieSBCcmlhbiBKLiBNdXJyZWxsLCBKYW51YXJ5IDE5OTkuCisgIyBObyBndWFyYW50ZWVzIGFib3V0IHRoaXMuIEknbSBhIG5vdmljZSBhdCB0aGUgZGV0YWlscyBvZiBMaW51eAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyODczMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoCkBAIC0wLDAgKzEsMjA4IEBACitGcm9tIDc2YzM3MGE5MjllNWFiNWRiYzgxYzJmYmNmNGU1MGY0ZmJjMDhjZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6NTM6MzcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMV0gYnVpbGQgc2hhcmVkIGxpYnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1BvcnQgcGF0Y2hlcyBmcm9tIEZlZG9yYSB0byBidWlsZCBzaGFyZWQgbGlicyByYXRoZXIgdGhhbiBzdGF0aWMgbGlicy4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjbGllbnQvTWFrZWZpbGUuYW0gICAgICAgfCAgNCArKy0tCisgY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMTMgKysrKystLS0tLS0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICB8IDEyICsrLS0tLS0tLS0tLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDE0ICsrKysrKy0tLS0tLS0tCisgb21hcGlwL01ha2VmaWxlLmFtICAgICAgIHwgIDcgKysrLS0tLQorIHJlbGF5L01ha2VmaWxlLmFtICAgICAgICB8ICA1ICsrLS0tCisgc2VydmVyL01ha2VmaWxlLmFtICAgICAgIHwgIDcgKysrLS0tLQorIHNlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSB8ICA3ICsrKy0tLS0KKyA4IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCitpbmRleCA4NGQ4MTMxLi5lNzc2YmYwIDEwMDY0NAorLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCisrKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KK0BAIC0xNSw3ICsxNSw3IEBAIGRoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQoc3JjZGlyKS9kaGNsaWVudC5jICQoc3JjZGlyKS9kaGM2LmMgXAorIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKKyAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKKyAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKKy1kaGNsaWVudF9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCQkgJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKKytkaGNsaWVudF9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmxhIFwKKysJCSAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgbWFuX01BTlMgPSBkaGNsaWVudC44IGRoY2xpZW50LXNjcmlwdC44IGRoY2xpZW50LmNvbmYuNSBkaGNsaWVudC5sZWFzZXMuNQorIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggMmY5OGQyMi4uODc0NWU4OCAxMDA2NDQKKy0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTUsMjYgKzE1LDIzIEBAIEFURl9URVNUUyArPSBhbGxvY191bml0dGVzdCBkbnNfdW5pdHRlc3QgbWlzY191bml0dGVzdCBuc19uYW1lX3VuaXR0ZXN0CisgYWxsb2NfdW5pdHRlc3RfU09VUkNFUyA9IHRlc3RfYWxsb2MuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYworIGFsbG9jX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKKyBhbGxvY191bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKKy0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQorKwkuLi8uLi9vbWFwaXAvbGlib21hcGkubGEgLUwkKEJJTkRMSUJESVIpIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgCisgZG5zX3VuaXR0ZXN0X1NPVVJDRVMgPSBkbnNfdW5pdHRlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYworIGRuc191bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCisgZG5zX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAorLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKKyBtaXNjX3VuaXR0ZXN0X1NPVVJDRVMgPSBtaXNjX3VuaXR0ZXN0LmMgJCh0b3Bfc3JjZGlyKS90ZXN0cy90X2FwaV9kaGNwLmMKKyBtaXNjX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKKyBtaXNjX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAorLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKKyBuc19uYW1lX3VuaXR0ZXN0X1NPVVJDRVMgPSBuc19uYW1lX3Rlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYworIG5zX25hbWVfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQorIG5zX25hbWVfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCistCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKKysJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgLUwkKEJJTkRMSUJESVIpIFwKKysJLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKKyBjaGVjazogJChBVEZfVEVTVFMpCisgCUBpZiB0ZXN0ICQodG9wX3NyY2RpcikgIT0gJHt0b3BfYnVpbGRkaXJ9OyB0aGVuIFwKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDhlOWY1MDkuLmJmZTk4OGEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ3LDE2ICs0Nyw4IEBAIEFNX0NPTkRJVElPTkFMKENST1NTX0NPTVBJTElORywgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSAieWVzIikKKyAjIFVzZSB0aGlzIHRvIGRlZmluZSBfR05VX1NPVVJDRSB0byBwdWxsIGluIHRoZSBJUHY2IEFkdmFuY2VkIFNvY2tldCBBUEkuCisgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgCistQUNfUFJPR19SQU5MSUIKKy0KKy1BQ19QQVRIX1BST0coQVIsIGFyKQorLUFDX1NVQlNUKEFSKQorLQorLWlmIHRlc3QgIlgkQVIiID0gIlgiOyB0aGVuCistCUFDX01TR19FUlJPUihbCistYXIgcHJvZ3JhbSBub3QgZm91bmQuICBQbGVhc2UgZml4IHlvdXIgUEFUSCB0byBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgaW4KKy13aGljaCBhciByZXNpZGVzLCBvciBzZXQgQVIgaW4gdGhlIGVudmlyb25tZW50IHdpdGggdGhlIGZ1bGwgcGF0aCB0byBhci5dKQorLWZpCisrIyBVc2UgbGlidG9vbCB0byBzaW1wbGlmeSBidWlsZGluZyBvZiBzaGFyZWQgbGlicmFyaWVzCisrQUNfUFJPR19MSUJUT09MCisgCisgQUNfQ09ORklHX0hFQURFUlMoW2luY2x1ZGVzL2NvbmZpZy5oXSkKKyAKK2RpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQoraW5kZXggOWIyNDg2ZS4uNzg0Y2RmNyAxMDA2NDQKKy0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0zLDE5ICszLDE3IEBAIEJJTkRMSUJESVIgPSBAQklORERJUkAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKKyAKKyBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCistbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQorK2xpYl9MVExJQlJBUklFUyA9IGxpYmRoY3BjdGwubGEKKyBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKKyBtYW5fTUFOUyA9IG9tc2hlbGwuMSBkaGNwY3RsLjMKKyBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKKyAKKyBvbXNoZWxsX1NPVVJDRVMgPSBvbXNoZWxsLmMKKy1vbXNoZWxsX0xEQUREID0gbGliZGhjcGN0bC5hIC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgXAorLQkgICAgICAgICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCistCSAgICAgICAgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrb21zaGVsbF9MREFERCA9IGxpYmRoY3BjdGwubGEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkgICAgICAgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorLWxpYmRoY3BjdGxfYV9TT1VSQ0VTID0gZGhjcGN0bC5jIGNhbGxiYWNrLmMgcmVtb3RlLmMKKytsaWJkaGNwY3RsX2xhX1NPVVJDRVMgPSBkaGNwY3RsLmMgY2FsbGJhY2suYyByZW1vdGUuYworIAorIGNsdGVzdF9TT1VSQ0VTID0gY2x0ZXN0LmMKKy1jbHRlc3RfTERBREQgPSBsaWJkaGNwY3RsLmEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCistCSAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAorLSAgICAgICAgICAgICAgICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK2NsdGVzdF9MREFERCA9IGxpYmRoY3BjdGwubGEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCitkaWZmIC0tZ2l0IGEvb21hcGlwL01ha2VmaWxlLmFtIGIvb21hcGlwL01ha2VmaWxlLmFtCitpbmRleCBlNGE4NTk5Li5jMGM3YTFlIDEwMDY0NAorLS0tIGEvb21hcGlwL01ha2VmaWxlLmFtCisrKysgYi9vbWFwaXAvTWFrZWZpbGUuYW0KK0BAIC0xLDEwICsxLDEwIEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCistbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKKytsaWJfTFRMSUJSQVJJRVMgPSBsaWJvbWFwaS5sYQorIG5vaW5zdF9QUk9HUkFNUyA9IHN2dGVzdAorIAorLWxpYm9tYXBpX2FfU09VUkNFUyA9IHByb3RvY29sLmMgYnVmZmVyLmMgYWxsb2MuYyByZXN1bHQuYyBjb25uZWN0aW9uLmMgXAorK2xpYm9tYXBpX2xhX1NPVVJDRVMgPSBwcm90b2NvbC5jIGJ1ZmZlci5jIGFsbG9jLmMgcmVzdWx0LmMgY29ubmVjdGlvbi5jIFwKKyAJCSAgICAgZXJyd2Fybi5jIGxpc3RlbmVyLmMgZGlzcGF0Y2guYyBnZW5lcmljLmMgc3VwcG9ydC5jIFwKKyAJCSAgICAgaGFuZGxlLmMgbWVzc2FnZS5jIGNvbnZlcnQuYyBoYXNoLmMgYXV0aC5jIGluZXRfYWRkci5jIFwKKyAJCSAgICAgYXJyYXkuYyB0cmFjZS5jIHRvaXNjLmMgaXNjcHJpbnQuYyBpc2NsaWIuYworQEAgLTEzLDYgKzEzLDUgQEAgbWFuX01BTlMgPSBvbWFwaS4zCisgRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCisgCisgc3Z0ZXN0X1NPVVJDRVMgPSB0ZXN0LmMKKy1zdnRlc3RfTERBREQgPSBsaWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCistCQkkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKKytzdnRlc3RfTERBREQgPSBsaWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKK2RpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCitpbmRleCBiM2JmNTc4Li5mNDcwMDlmIDEwMDY0NAorLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KKysrKyBiL3JlbGF5L01ha2VmaWxlLmFtCitAQCAtNCw5ICs0LDggQEAgQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKKyBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYworLWRoY3JlbGF5X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCistCQkgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKKy0JCSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKKytkaGNyZWxheV9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmxhIFwKKysJCSAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyBtYW5fTUFOUyA9IGRoY3JlbGF5LjgKKyBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKKyAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2luZGV4IGI1ZDhjMmQuLmQ3Zjg3NmQgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQorQEAgLTE1LDEwICsxNSw5IEBAIGRoY3BkX1NPVVJDRVMgPSBkaGNwZC5jIGRoY3AuYyBib290cC5jIGNvbmZwYXJzLmMgZGIuYyBjbGFzcy5jIGZhaWxvdmVyLmMgXAorIAkJZGhjcHY2LmMgbWRiNi5jIGxkYXAuYyBsZGFwX2Nhc2EuYyBsZWFzZWNoYWluLmMgbGRhcF9rcmJfaGVscGVyLmMKKyAKKyBkaGNwZF9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQorLWRoY3BkX0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCistCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkgICAgICAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgXAorLQkgICAgICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hICQoTERBUF9MSUJTKQorK2RoY3BkX0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkgICAgICAuLi9kaGNwY3RsL2xpYmRoY3BjdGwubGEgLUwkKEJJTkRMSUJESVIpIFwKKysJICAgICAgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MgJChMREFQX0xJQlMpCisgCisgbWFuX01BTlMgPSBkaGNwZC44IGRoY3BkLmNvbmYuNSBkaGNwZC5sZWFzZXMuNQorIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggOTgyMTA4MS4uZGU5NTg3MiAxMDA2NDQKKy0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTksMTAgKzE5LDkgQEAgREhDUFNSQyA9IC4uL2RoY3AuYyAuLi9ib290cC5jIC4uL2NvbmZwYXJzLmMgLi4vZGIuYyAuLi9jbGFzcy5jICAgICAgXAorICAgICAgICAgICAuLi9kZG5zLmMgLi4vZGhjcGxlYXNlcXVlcnkuYyAuLi9kaGNwdjYuYyAuLi9tZGI2LmMgICAgICAgIFwKKyAgICAgICAgICAgLi4vbGRhcC5jIC4uL2xkYXBfY2FzYS5jIC4uL2RoY3BkLmMgLi4vbGVhc2VjaGFpbi5jCisgCistREhDUExJQlMgPSAkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmRoY3AuYSAkKHRvcF9idWlsZGRpcikvb21hcGlwL2xpYm9tYXBpLmEgXAorLSAgICAgICAgICAkKHRvcF9idWlsZGRpcikvZGhjcGN0bC9saWJkaGNwY3RsLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSAgJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hIFwKKy0JICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrREhDUExJQlMgPSAkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmRoY3AuYSAkKHRvcF9idWlsZGRpcikvb21hcGlwL2xpYm9tYXBpLmxhIFwKKysgICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2RoY3BjdGwvbGliZGhjcGN0bC5sYSBcCisrICAgICAgICAgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorIEFURl9URVNUUyA9CisgaWYgSEFWRV9BVEYKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2JiNDYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIDM3NzI1ZjNlMjJlZGI1MGUwY2EyZDFmZmY5NzEzMjFhNWE0ZDUxMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDAzOjA1OjEzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIE1vdmVkIHRoZSBjYWxsIHRvIGlzY19hcHBfY3R4c3RhcnQoKSB0byBub3QgZ2V0IHNpZ25hbAorIGJsb2NrIGJ5IGFsbCB0aHJlYWRzCisKK1NpZ25lZC1vZmYtYnk6IEZyYW5jaXMgRHVwb250IDxmZHVwb250QGlzYy5vcmc+CisKK0luIGh0dHBzOi8vc291cmNlLmlzYy5vcmcvZ2l0L2JpbmQ5LmdpdCwgc2luY2UgdGhlIGZvbGxvd2luZworY29tbWl0IGFwcGxpZWQ6CisuLi4KK2NvbW1pdCBiOTliZmExODRiYzkzNzU0MjFiNWRmOTE1ZWVhN2RmYWM2YTY4YTk5CitBdXRob3I6IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgorRGF0ZTogICBXZWQgQXByIDEwIDEzOjQ5OjU3IDIwMTMgLTA3MDAKKworICAgIFttYXN0ZXJdIHVuaWZ5IGludGVybmFsIGFuZCBleHBvcnQgbGlicmFyaWVzCisKKyAgICAzNTUwLiAgICAgICBbZnVuY10gICAgICAgICAgVW5pZmllZCB0aGUgaW50ZXJuYWwgYW5kIGV4cG9ydCB2ZXJzaW9ucyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJJTkQgbGlicmFyaWVzLCBhbGxvd2luZyBleHRlcm5hbCBjbGllbnRzIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgbGlicmFyaWVzIGFzIEJJTkQuIFtSVCAjMzMxMzFdCisuLi4KKyhnaXQgc2hvdyBiOTliZmExODRiYzkzNzU0MjFiNWRmOTE1ZWVhN2RmYWM2YTY4YTk5IC0tIC4vbGliL2lzYy91bml4L2FwcC5jKQorCitJbiB0aGlzIGNvbW1pdCwgaWYgYmluZDkgZW5hYmxlIHRocmVhZHMoSVNDX1BMQVRGT1JNX1VTRVRIUkVBRFMpLAoraXQgYmxvY2tzIHNpZ25hbCBTSUdIVVAsIFNJR0lOVCBhbmQgU0lHVEVSTSBpbiBpc2NfX2FwcF9jdHhzdGFydC4KK1doaWNoIGNhdXNlZCBkaGNsaWVudC9kaGNwZCBjb3VsZCBub3QgYmUgc3RvcHBlZCBieSBTSUdURVJNLgorCitJdCBjYXVzZWQgc3lzdGVtZCdzIHJlYm9vdCBodW5nIHdoaWNoIHNlbmQgU0lHVEVSTSBieSBkZWZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZS5pc2Mub3JnL2dpdC9kaGNwLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG9tYXBpcC9pc2NsaWIuYyB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vbWFwaXAvaXNjbGliLmMgYi9vbWFwaXAvaXNjbGliLmMKK2luZGV4IGNlODY0OTAuLjZhMDQzNDUgMTAwNjQ0CistLS0gYS9vbWFwaXAvaXNjbGliLmMKKysrKyBiL29tYXBpcC9pc2NsaWIuYworQEAgLTE4NSwxNiArMTg1LDYgQEAgZGhjcF9jb250ZXh0X2NyZWF0ZShpbnQgZmxhZ3MsCisgCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisgCQkJZ290byBjbGVhbnVwOworIAorLQkJcmVzdWx0ID0gaXNjX2FwcF9jdHhzdGFydChkaGNwX2dibF9jdHguYWN0eCk7CistCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCistCQkJcmV0dXJuIChyZXN1bHQpOworLQkJZGhjcF9nYmxfY3R4LmFjdHhfc3RhcnRlZCA9IElTQ19UUlVFOworLQorLQkJLyogTm90IGFsbCBPU3Mgc3VwcG9ydCBzdXBwcmVzc2luZyBTSUdQSVBFIHRocm91Z2ggc29ja2V0CistCQkgKiBvcHRpb25zLCBzbyBzZXQgdGhlIHNpZ2FsIGFjdGlvbiB0byBiZSBpZ25vcmUuICBUaGlzIGFsbG93cworLQkJICogYnJva2VuIGNvbm5lY3Rpb25zIHRvIGZhaWwgZ3JhY2VmdWxseSB3aXRoIEVQSVBFIG9uIHdyaXRlcyAqLworLQkJaGFuZGxlX3NpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKKy0KKyAJCXJlc3VsdCA9IGlzY190YXNrbWdyX2NyZWF0ZWluY3R4KGRoY3BfZ2JsX2N0eC5tY3R4LAorIAkJCQkJCSBkaGNwX2dibF9jdHguYWN0eCwKKyAJCQkJCQkgMSwgMCwKK0BAIC0yMTcsNiArMjA3LDIxIEBAIGRoY3BfY29udGV4dF9jcmVhdGUoaW50IGZsYWdzLAorIAkJcmVzdWx0ID0gaXNjX3Rhc2tfY3JlYXRlKGRoY3BfZ2JsX2N0eC50YXNrbWdyLCAwLCAmZGhjcF9nYmxfY3R4LnRhc2spOworIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQorIAkJCWdvdG8gY2xlYW51cDsKKysKKysJCXJlc3VsdCA9IGlzY19hcHBfY3R4c3RhcnQoZGhjcF9nYmxfY3R4LmFjdHgpOworKwkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQorKwkJCXJldHVybiAocmVzdWx0KTsKKysJCWRoY3BfZ2JsX2N0eC5hY3R4X3N0YXJ0ZWQgPSBJU0NfVFJVRTsKKysKKysJCS8qIE5vdCBhbGwgT1NzIHN1cHBvcnQgc3VwcHJlc3NpbmcgU0lHUElQRSB0aHJvdWdoIHNvY2tldAorKwkJICogb3B0aW9ucywgc28gc2V0IHRoZSBzaWdhbCBhY3Rpb24gdG8gYmUgaWdub3JlLiAgVGhpcyBhbGxvd3MKKysJCSAqIGJyb2tlbiBjb25uZWN0aW9ucyB0byBmYWlsIGdyYWNlZnVsbHkgd2l0aCBFUElQRSBvbiB3cml0ZXMgKi8KKysJCWhhbmRsZV9zaWduYWwoU0lHUElQRSwgU0lHX0lHTik7CisrCisrCQkvKiBSZXNldCBoYW5kbGVycyBpbnN0YWxsZWQgYnkgaXNjX2FwcF9jdHhzdGFydCgpCisrCQkgKiB0byBkZWZhdWx0IGZvciBjb250cm9sLWMgYW5kIGtpbGwgKi8KKysJCWhhbmRsZV9zaWduYWwoU0lHSU5ULCBTSUdfREZMKTsKKysJCWhhbmRsZV9zaWduYWwoU0lHVEVSTSwgU0lHX0RGTCk7CisgCX0KKyAKKyAjaWYgZGVmaW5lZCAoTlNVUERBVEUpCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzYWY5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1MDE1NDNiM2VmNzE1NDg4YTE0MmUzZDMwMWZmMjczM2FhMzNlZWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+CitEYXRlOiBXZWQsIDI1IE9jdCAyMDE3IDIxOjAwOjA1ICswNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRoY3A6IGNvcnJlY3QgdGhlIGludGVudGlvbiBmb3IgeG1sMiBsaWIgc2VhcmNoCisKK0EgbWlzc2luZyBjYXNlIGJyZWFrcyB0aGUgYnVpbGQgd2hlbiBsaWJ4bWwyIGlzCityZXF1aXJlZCBhbmQgZm91bmQgYXBwcm9wcmlhdGVseS4gVGhlIHRoaXJkIGFyZ3VtZW50Cit0byB0aGUgZnVuY3Rpb24gQUNfU0VBUkNIX0xJQiBpcyBhY3Rpb24taWYtZm91bmQgd2hpY2gKK3dhcyBtaXN0YWtlbmx5IGJlZW4gdXNlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGxpYnJhcnkKK2lzIG5vdCBmb3VuZCBhbmQgaGVuY2UgYnJlYWtzIHRoZSBjb25maWd1cmUgcGhhc2UKK3doZXJlIGl0IHNob3VkIGFjdHVhbGx5IHBhc3MuCitXZSBub3cgcGFzcyBvbiBzaWxlbnRseSB3aGVuIGFjdGlvbi1pZi1mb3VuZCBpcworZXhlY3V0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYmZlOTg4YS4uZjA0NTllNiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjA4LDcgKzYwOCw3IEBAIEFDX0FSR19XSVRIKGxpYnhtbDIsCisgCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKKyAKKyBpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgorLQlBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sCisrCUFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwsCisgCQlbaWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4YXV0bzsgdGhlbgorIAkJCUFDX01TR19GQUlMVVJFKFsqKiogQ2Fubm90IGZpbmQgeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCB3aXRoIC1seG1sMiBhbmQgbGlieG1sMiB3YXMgcmVxdWVzdGVkXSkKKyAJCWZpXSkKKy0tIAorMi4xMS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYmRhZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1kZWZpbmUgbWFjcm8gX1BBVEhfREhDUERfQ09ORiBhbmQgX1BBVEhfREhDTElFTlRfQ09ORgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmNsdWRlcy9zaXRlLmggfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3NpdGUuaCBiL2luY2x1ZGVzL3NpdGUuaAotaW5kZXggZDg3YjMwOS4uMTdiYzQwZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3NpdGUuaAotKysrIGIvaW5jbHVkZXMvc2l0ZS5oCi1AQCAtMTM5LDcgKzEzOSw4IEBACi0gLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdGhlIGRoY3BkLmNvbmYgZmlsZSB0byBnbyBzb21ld2hlcmUgb3RoZXIgdGhhbgotICAgIHRoZSBkZWZhdWx0IGxvY2F0aW9uLiAgIEJ5IGRlZmF1bHQsIGl0IGdvZXMgaW4gL2V0Yy9kaGNwZC5jb25mLiAqLwotIAotLS8qICNkZWZpbmUgX1BBVEhfREhDUERfQ09ORgkiL2V0Yy9kaGNwZC5jb25mIiAqLwotKyNkZWZpbmUgX1BBVEhfREhDUERfQ09ORgkiL2V0Yy9kaGNwL2RoY3BkLmNvbmYiCi0rI2RlZmluZSBfUEFUSF9ESENMSUVOVF9DT05GCSIvZXRjL2RoY3AvZGhjbGllbnQuY29uZiIKLSAKLSAvKiBOZXR3b3JrIEFQSSBkZWZpbml0aW9ucy4gICBZb3UgZG8gbm90IG5lZWQgdG8gY2hvb3NlIG9uZSBvZiB0aGVzZSAtIGlmCi0gICAgeW91IGRvbid0IGNob29zZSwgb25lIHdpbGwgYmUgY2hvc2VuIGZvciB5b3UgaW4geW91ciBzeXN0ZW0ncyBjb25maWcKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjA5NWE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kaGNsaWVudC1zY3JpcHQtZHJvcC1yZXNvbHYuY29uZi5kaGNsaWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLWRoY3AtY2xpZW50OiBmaXggaW52b2tlIGRoY2xpZW50LXNjcmlwdCBmYWlsZWQgb24gUmVhZC1vbmx5IGZpbGUgc3lzdGVtCi0KLUluIHJlYWQtb25seSBmaWxlIHN5c3RlbSwgJy9ldGMnIGlzIG9uIHRoZSByZWFkb25seSBwYXJ0aXRpb24sCi1hbmQgJy9ldGMvcmVzb2x2LmNvbmYnIGlzIHN5bWxpbmtlZCB0byBhIHNlcGFyYXRlIHdyaXRhYmxlCi1wYXJ0aXRpb24uCi0KLUluIHRoaXMgc2l0dWF0aW9uLCB3ZSBzaG91bGQgdXNlIHNoZWxsIHZhcmlhYmxlIHRvIGluc3RlYWQgb2YKLXRlbXAgZmlsZXMgJy9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQnIGFuZCAnL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYnLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgMjAgKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKLS0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci0rKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTI3LDI3ICsyNywyNSBAQCBpcD0vc2Jpbi9pcAotIAotIG1ha2VfcmVzb2x2X2NvbmYoKSB7Ci0gICBpZiBbIHgiJG5ld19kb21haW5fbmFtZV9zZXJ2ZXJzIiAhPSB4IF07IHRoZW4KLS0gICAgY2F0IC9kZXYvbnVsbCA+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQKLS0gICAgY2htb2QgNjQ0IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQKLSsgICAgcmVzb2x2X2NvbmY9IiIKLSAgICAgaWYgWyB4IiRuZXdfZG9tYWluX3NlYXJjaCIgIT0geCBdOyB0aGVuCi0tICAgICAgZWNobyBzZWFyY2ggJG5ld19kb21haW5fc2VhcmNoID4+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQKLSsgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RvbWFpbl9zZWFyY2h9XG4iCi0gICAgIGVsaWYgWyB4IiRuZXdfZG9tYWluX25hbWUiICE9IHggXTsgdGhlbgotICAgICAgICMgTm90ZSB0aGF0IHRoZSBESENQICdEb21haW4gTmFtZSBPcHRpb24nIGlzIHJlYWxseSBqdXN0IGEgZG9tYWluCi0gICAgICAgIyBuYW1lLCBhbmQgdGhhdCB0aGlzIHByYWN0aWNlIG9mIHVzaW5nIHRoZSBkb21haW4gbmFtZSBvcHRpb24gYXMKLSAgICAgICAjIGEgc2VhcmNoIHBhdGggaXMgYm90aCBub25zdGFuZGFyZCBhbmQgZGVwcmVjYXRlZC4KLS0gICAgICBlY2hvIHNlYXJjaCAkbmV3X2RvbWFpbl9uYW1lID4+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQKLSsgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RvbWFpbl9uYW1lfVxuIgotICAgICBmaQotICAgICBmb3IgbmFtZXNlcnZlciBpbiAkbmV3X2RvbWFpbl9uYW1lX3NlcnZlcnM7IGRvCi0tICAgICAgZWNobyBuYW1lc2VydmVyICRuYW1lc2VydmVyID4+L2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICAgIHJlc29sdl9jb25mPSIke3Jlc29sdl9jb25mfW5hbWVzZXJ2ZXIgJHtuYW1lc2VydmVyfVxuIgotICAgICBkb25lCi0gCi0tICAgIG12IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQgL2V0Yy9yZXNvbHYuY29uZgotKyAgICBlY2hvIC1lICIke3Jlc29sdl9jb25mfSIgPiAvZXRjL3Jlc29sdi5jb25mCi0gICBlbGlmIFsgIngke25ld19kaGNwNl9uYW1lX3NlcnZlcnN9IiAhPSB4IF0gOyB0aGVuCi0tICAgIGNhdCAvZGV2L251bGwgPiAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NgotLSAgICBjaG1vZCA2NDQgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYKLSsgICAgcmVzb2x2X2NvbmY9IiIKLSAKLSAgICAgaWYgWyAieCR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9IiAhPSB4IF0gOyB0aGVuCi0tICAgICAgZWNobyBzZWFyY2ggJHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0gPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYKLSsgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9XG4iCi0gICAgIGZpCi0gICAgIHNob3B0IC1zIG5vY2FzZW1hdGNoIAotICAgICBmb3IgbmFtZXNlcnZlciBpbiAke25ld19kaGNwNl9uYW1lX3NlcnZlcnN9IDsgZG8KLUBAIC01OSwxMSArNTcsMTEgQEAgbWFrZV9yZXNvbHZfY29uZigpIHsKLSAgICAgICBlbHNlCi0gCXpvbmVfaWQ9Ci0gICAgICAgZmkKLS0gICAgICBlY2hvIG5hbWVzZXJ2ZXIgJHtuYW1lc2VydmVyfSR6b25lX2lkID4+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQ2Ci0rICAgICAgcmVzb2x2X2NvbmY9IiR7cmVzb2x2X2NvbmZ9bmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9JHpvbmVfaWRcbiIKLSAgICAgZG9uZQotICAgICBzaG9wdCAtdSBub2Nhc2VtYXRjaCAKLSAKLS0gICAgbXYgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYgL2V0Yy9yZXNvbHYuY29uZgotKyAgICBlY2hvIC1lICIke3Jlc29sdl9jb25mfSIgPiAvZXRjL3Jlc29sdi5jb25mCi0gICBmaQotIH0KLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY3AtMy4wLjMtZGhjbGllbnQtZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kaGNwLTMuMC4zLWRoY2xpZW50LWRidXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YTY2NmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY3AtMy4wLjMtZGhjbGllbnQtZGJ1cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi0tLS0gY2xpZW50L3NjcmlwdHMvYnNkb3MKLSsrKyBjbGllbnQvc2NyaXB0cy9ic2RvcwotQEAgLTQ3LDYgKzQ3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvZnJlZWJzZAotKysrIGNsaWVudC9zY3JpcHRzL2ZyZWVic2QKLUBAIC01Nyw2ICs1NywxMSBAQAotICAgICAuIC9ldGMvZGhjcC9kaGNsaWVudC1leGl0LWhvb2tzCi0gICBmaQotICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKLSsgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCi0rICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKLSsgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAotKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgotKyAgZmkKLSAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIAotLS0tIGNsaWVudC9zY3JpcHRzL2xpbnV4Ci0rKysgY2xpZW50L3NjcmlwdHMvbGludXgKLUBAIC02OSw2ICs2OSwxMSBAQAotICAgICAuIC9ldGMvZGhjcC9kaGNsaWVudC1leGl0LWhvb2tzCi0gICBmaQotICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKLSsgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCi0rICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKLSsgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAotKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgotKyAgZmkKLSAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIAotLS0tIGNsaWVudC9zY3JpcHRzL25ldGJzZAotKysrIGNsaWVudC9zY3JpcHRzL25ldGJzZAotQEAgLTQ3LDYgKzQ3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvb3BlbmJzZAotKysrIGNsaWVudC9zY3JpcHRzL29wZW5ic2QKLUBAIC00Nyw2ICs0NywxMSBAQAotICAgICAuIC9ldGMvZGhjcC9kaGNsaWVudC1leGl0LWhvb2tzCi0gICBmaQotICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKLSsgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCi0rICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKLSsgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAotKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgotKyAgZmkKLSAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIAotLS0tIGNsaWVudC9zY3JpcHRzL3NvbGFyaXMKLSsrKyBjbGllbnQvc2NyaXB0cy9zb2xhcmlzCi1AQCAtNDcsNiArNDcsMTEgQEAKLSAgICAgLiAvZXRjL2RoY3AvZGhjbGllbnQtZXhpdC1ob29rcwotICAgZmkKLSAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0Ci0rICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCi0rICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKLSsgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKLSsgIGZpCi0gICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXhzZXBidWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXhzZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY0NDE0Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZml4c2VwYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1GaXggb3V0IG9mIHRyZWUgYnVpbGRzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1SUCAyMDEzLzAzLzIxCi0KLVJlYmFzZSB0byA0LjMuNAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjbGllbnQvTWFrZWZpbGUuYW0gIHwgNCArKy0tCi0gY29tbW9uL01ha2VmaWxlLmFtICB8IDMgKystCi0gZGhjcGN0bC9NYWtlZmlsZS5hbSB8IDIgKysKLSBvbWFwaXAvTWFrZWZpbGUuYW0gIHwgMSArCi0gcmVsYXkvTWFrZWZpbGUuYW0gICB8IDIgKy0KLSBzZXJ2ZXIvTWFrZWZpbGUuYW0gIHwgMiArLQotIDYgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCi1pbmRleCAyY2I4M2Q4Li40NzMwYmIzIDEwMDY0NAotLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCi0rKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KLUBAIC03LDExICs3LDExIEBAIFNVQkRJUlMgPSAuIHRlc3RzCi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLSBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJyBcCi0tCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJwotKwkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNsaWVudC5jb25mLmV4YW1wbGUKLSBzYmluX1BST0dSQU1TID0gZGhjbGllbnQKLS1kaGNsaWVudF9TT1VSQ0VTID0gY2xwYXJzZS5jIGRoY2xpZW50LmMgZGhjNi5jIFwKLStkaGNsaWVudF9TT1VSQ0VTID0gJChzcmNkaXIpL2NscGFyc2UuYyAkKHNyY2RpcikvZGhjbGllbnQuYyAkKHNyY2RpcikvZGhjNi5jIFwKLSAJCSAgIHNjcmlwdHMvYnNkb3Mgc2NyaXB0cy9mcmVlYnNkIHNjcmlwdHMvbGludXggc2NyaXB0cy9tYWNvcyBcCi0gCQkgICBzY3JpcHRzL25ldGJzZCBzY3JpcHRzL25leHRzdGVwIHNjcmlwdHMvb3BlbmJzZCBcCi0gCQkgICBzY3JpcHRzL3NvbGFyaXMgc2NyaXB0cy9vcGVud3J0Ci1kaWZmIC0tZ2l0IGEvY29tbW9uL01ha2VmaWxlLmFtIGIvY29tbW9uL01ha2VmaWxlLmFtCi1pbmRleCAxMTNhZWU4Li4wZjI0ZmJiIDEwMDY0NAotLS0tIGEvY29tbW9uL01ha2VmaWxlLmFtCi0rKysgYi9jb21tb24vTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNSBAQAotLUFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0rQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0rCi0gQU1fQ0ZMQUdTID0gJChMREFQX0NGTEFHUykKLSAKLSBub2luc3RfTElCUkFSSUVTID0gbGliZGhjcC5hCi1kaWZmIC0tZ2l0IGEvZGhjcGN0bC9NYWtlZmlsZS5hbSBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLWluZGV4IGNlYjBkZTEuLmJhOGRkOGIgMTAwNjQ0Ci0tLS0gYS9kaGNwY3RsL01ha2VmaWxlLmFtCi0rKysgYi9kaGNwY3RsL01ha2VmaWxlLmFtCi1AQCAtMSw1ICsxLDcgQEAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQotKwotIGJpbl9QUk9HUkFNUyA9IG9tc2hlbGwKLSBsaWJfTElCUkFSSUVTID0gbGliZGhjcGN0bC5hCi0gbm9pbnN0X1BST0dSQU1TID0gY2x0ZXN0Ci1kaWZmIC0tZ2l0IGEvb21hcGlwL01ha2VmaWxlLmFtIGIvb21hcGlwL01ha2VmaWxlLmFtCi1pbmRleCA0NDZhNTk0Li5kZDFhZmEwIDEwMDY0NAotLS0tIGEvb21hcGlwL01ha2VmaWxlLmFtCi0rKysgYi9vbWFwaXAvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNSBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBsaWJfTElCUkFSSUVTID0gbGlib21hcGkuYQotIG5vaW5zdF9QUk9HUkFNUyA9IHN2dGVzdAotZGlmZiAtLWdpdCBhL3JlbGF5L01ha2VmaWxlLmFtIGIvcmVsYXkvTWFrZWZpbGUuYW0KLWluZGV4IDMwNjBlY2EuLjZkNjUyZjYgMTAwNjQ0Ci0tLS0gYS9yZWxheS9NYWtlZmlsZS5hbQotKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0gCi0tQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwotK0FNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gc2Jpbl9QUk9HUkFNUyA9IGRoY3JlbGF5Ci0gZGhjcmVsYXlfU09VUkNFUyA9IGRoY3JlbGF5LmMKLWRpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLWluZGV4IDU0ZmVlZGYuLjM5OTBiOWMgMTAwNjQ0Ci0tLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KLSsrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQotQEAgLTYsNyArNiw3IEBAIFNVQkRJUlMgPSAuIHRlc3RzCi0gCi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLS1BTV9DUFBGTEFHUyA9IC1JLi4gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY3BkLmNvbmYuZXhhbXBsZQotIHNiaW5fUFJPR1JBTVMgPSBkaGNwZAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzU2NjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpYnhtbDItY29uZmlndXJlLWFyZ3VtZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotQWRkIGNvbmZpZ3VyZSBhcmd1bWVudCB0byBtYWtlIHRoZSBsaWJ4bWwyIGRlcGVuZGVuY3kgZXhwbGljaXQgYW5kCi1kZXRlcm1pbmlzaXRpYy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0KLVJlYmFzZSB0byA0LjMuNAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTEgKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3MjZjODhlLi4xNjg0ZGYxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MTgsNyArNzE4LDE2IEBAIEFDX1NVQlNUKEJJTkRTUkNESVIpCi0gCi0gIyBXZSBuZWVkIHRvIGZpbmQgbGlieG1sMiBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZW5hYmxlZAotICMgb3RoZXJ3aXNlIHdlJ2xsIGZhaWwgdG8gYnVpbGQgb21hcGlwL3Rlc3QuYwotLUFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwpCi0rQUNfQVJHX1dJVEgobGlieG1sMiwKLSsJQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJ4bWwyXSwgW2xpbmsgYWdhaW5zdCBsaWJ4bWwyLiB0aGlzIGlzIG5lZWRlZCBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHhtbDIgc3VwcG9ydCBlbmFibGVkXSksCi0rCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKLSsKLStpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgotKyAgICBBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sCi0rICAgICAgICAgICAgICAgICAgIFtpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhhdXRvOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX0ZBSUxVUkUoWyoqKiBDYW5ub3QgZmluZCB4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50IHdpdGggLWx4bWwyIGFuZCBsaWJ4bWwyIHdhcyByZXF1ZXN0ZWRdKQotKyAgICAgICAgICAgICAgICAgICAgZmldKQotK2ZpCi0gCi0gIyBPcGVuTERBUCBzdXBwb3J0LgotIEFDX0FSR19XSVRIKGxkYXAsCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saW5rLXdpdGgtbGNyeXB0by5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQwZTBkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1BdXRob3I6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLURhdGU6ICAgVGh1IEZlYiAyIDIzOjU5OjExIDIwMTIgKzAyMDAKLQotRnJvbSA0LjIuMCBmaW5hbCByZWxlYXNlLCAtbGNyeXB0byBjaGVjayB3YXMgcmVtb3ZlZCBhbmQgd2UgY29tcGlsZSBzdGF0aWMgbGlicmFyaWVzCi1mcm9tIGJpbmQgdGhhdCBhcmUgbGlua2VkIHRvIGxpYmNyeXB0by4gVGhpcyBpcyB3aHkgaSBhZGRlZCBhIHBhdGNoIGluIG9yZGVyIHRvIGFkZAotLWxjcnlwdG8gdG8gTElCUy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLVJlYmFzZSB0byA0LjMuNAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwOTdiMGMzLi43MjZjODhlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01ODQsNiArNTg0LDEwIEBAIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1t2b2lkIGZvbygpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7Ci0gIyBMb29rIGZvciBvcHRpb25hbCBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoc3lzL3NvY2tldC5oIG5ldC9pZl9kbC5oIG5ldC9pZjYuaCByZWdleC5oKQotIAotKyMgZmluZCBhbiBNRDUgbGlicmFyeQotK0FDX1NFQVJDSF9MSUJTKE1ENV9Jbml0LCBbY3J5cHRvXSkKLStBQ19TRUFSQ0hfTElCUyhNRDVJbml0LCBbY3J5cHRvXSkKLSsKLSAjIFNvbGFyaXMgbmVlZHMgc29tZSBsaWJyYXJpZXMgZm9yIGZ1bmN0aW9ucwotIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgW3NvY2tldF0pCi0gQUNfU0VBUkNIX0xJQlMoaW5ldF9udG9hLCBbbnNsXSkKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTdiOWY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gOGFlZDJhOWZmMDljYjBkNTg0YWQwYTczNDBmZTNhNTk2ODc5ZDliMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIxIEp1bCAyMDE2IDE5OjA3OjAyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBkaGNsaWVudC1zY3JpcHQgYmFzaCBkZXBlbmRlbmN5Ci0KLVRha2UgdGhlIGRhc2ggY29tcGF0aWJsZSBJUHY2IGxpbmstbG9jYWwgYWRkcmVzcyB0ZXN0IGZyb20gdGhlIERlYmlhbgotdmVyc2lvbiBvZiBkaGNsaWVudC1zY3JpcHQuCi0KLU5vdGUgdGhhdCBhbHRob3VnaCAiZWNobyAtZSIgaW4gdGhlIE9FIHZlcnNpb24gb2YgZGhjbGllbnQtc2NyaXB0IGlzCi10ZWNobmljYWxseSBiYXNoIHNwZWNpZmljIHRvbywgaXQgaXMgc3VwcG9ydGVkIGJ5IEJ1c3lib3ggZWNobyB3aGVuCi1CdXN5Ym94IGlzIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfRkVBVFVSRV9GQU5DWV9FQ0hPIGVuYWJsZWQgKHdoaWNoCi1pcyB0aGUgZGVmYXVsdCBpbiB0aGUgT0UgQnVzeWJveCBkZWZjb25maWcpIHRoZXJlZm9yZSBsZWF2ZSBhcy1pcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgNyArKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKLWluZGV4IDIzMmEwYWEuLjEzODNmNDYgMTAwNzU1Ci0tLS0gYS9jbGllbnQvc2NyaXB0cy9saW51eAotKysrIGIvY2xpZW50L3NjcmlwdHMvbGludXgKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIyBkaGNsaWVudC1zY3JpcHQgZm9yIExpbnV4LiBEYW4gSGFsYmVydCwgTWFyY2gsIDE5OTcuCi0gIyBVcGRhdGVkIGZvciBMaW51eCAyLlsxMl0gYnkgQnJpYW4gSi4gTXVycmVsbCwgSmFudWFyeSAxOTk5LgotICMgTm8gZ3VhcmFudGVlcyBhYm91dCB0aGlzLiBJJ20gYSBub3ZpY2UgYXQgdGhlIGRldGFpbHMgb2YgTGludXgKLUBAIC00NywxMSArNDcsMTEgQEAgbWFrZV9yZXNvbHZfY29uZigpIHsKLSAgICAgaWYgWyAieCR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9IiAhPSB4IF0gOyB0aGVuCi0gICAgICAgcmVzb2x2X2NvbmY9InNlYXJjaCAke25ld19kaGNwNl9kb21haW5fc2VhcmNofVxuIgotICAgICBmaQotLSAgICBzaG9wdCAtcyBub2Nhc2VtYXRjaCAKLSAgICAgZm9yIG5hbWVzZXJ2ZXIgaW4gJHtuZXdfZGhjcDZfbmFtZV9zZXJ2ZXJzfSA7IGRvCi0gICAgICAgIyBJZiB0aGUgbmFtZXNlcnZlciBoYXMgYSBsaW5rLWxvY2FsIGFkZHJlc3MKLSAgICAgICAjIGFkZCBhIDx6b25lX2lkPiAoaW50ZXJmYWNlIG5hbWUpIHRvIGl0LgotLSAgICAgIGlmICBbWyAiJG5hbWVzZXJ2ZXIiID1+IF5mZTgwOjogXV0KLSsgICAgICBpZiBbICIke25hbWVzZXJ2ZXIjI2ZlODA6On0iICE9ICIkbmFtZXNlcnZlciIgXSB8fAotKyAgICAgICAgIFsgIiR7bmFtZXNlcnZlciMjRkU4MDo6fSIgIT0gIiRuYW1lc2VydmVyIiBdCi0gICAgICAgdGhlbgotIAl6b25lX2lkPSIlJGludGVyZmFjZSIKLSAgICAgICBlbHNlCi1AQCAtNTksNyArNTksNiBAQCBtYWtlX3Jlc29sdl9jb25mKCkgewotICAgICAgIGZpCi0gICAgICAgcmVzb2x2X2NvbmY9IiR7cmVzb2x2X2NvbmZ9bmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9JHpvbmVfaWRcbiIKLSAgICAgZG9uZQotLSAgICBzaG9wdCAtdSBub2Nhc2VtYXRjaCAKLSAKLSAgICAgZWNobyAtZSAiJHtyZXNvbHZfY29uZn0iID4gL2V0Yy9yZXNvbHYuY29uZgotICAgZmkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlcGxhY2UtaWZjb25maWctcm91dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg0ZGY1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi1Gb3VuZCB0aGlzIHBhdGNoIGhlcmU6Ci1odHRwczovL2xpc3RzLmlzYy5vcmcvcGlwZXJtYWlsL2RoY3AtdXNlcnMvMjAxMS1KYW51YXJ5LzAxMjkxMC5odG1sCi0KLWFuZCBtYWRlIHNvbWUgYWRqdXN0bWVudHMvdXBkYXRlcyB0byBtYWtlIGl0IHdvcmsgd2l0aCB0aGlzIHZlcnNpb24uCi1XYXNuJ3QgYWJsZSB0byBmaW5kIHRoYXQgd2h5IHRoaXMgcGF0Y2ggd2FzIG5vdCBhY2NlcHRlZCBieSBJU0MgREhDUCBkZXZlbG9wZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgotCi1SZWJhc2UgdG8gNC4zLjQKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L3NjcmlwdHMvbGludXggfCA4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAotaW5kZXggYTAyY2ZkOS4uMjMyYTBhYSAxMDA3NTUKLS0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci0rKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTEwMSwxNyArMTAxLDExIEBAIGZpCi0gaWYgWyB4JG9sZF9icm9hZGNhc3RfYWRkcmVzcyAhPSB4IF07IHRoZW4KLSAgIG9sZF9icm9hZGNhc3RfYXJnPSJicm9hZGNhc3QgJG9sZF9icm9hZGNhc3RfYWRkcmVzcyIKLSBmaQotLWlmIFsgeCRuZXdfc3VibmV0X21hc2sgIT0geCBdOyB0aGVuCi0tICBuZXdfc3VibmV0X2FyZz0ibmV0bWFzayAkbmV3X3N1Ym5ldF9tYXNrIgotK2lmIFsgLW4gIiRuZXdfc3VibmV0X21hc2siIF07IHRoZW4KLSsgICAgbmV3X21hc2s9Ii8kbmV3X3N1Ym5ldF9tYXNrIgotIGZpCi0taWYgWyB4JG9sZF9zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KLS0gIG9sZF9zdWJuZXRfYXJnPSJuZXRtYXNrICRvbGRfc3VibmV0X21hc2siCi0tZmkKLS1pZiBbIHgkYWxpYXNfc3VibmV0X21hc2sgIT0geCBdOyB0aGVuCi0tICBhbGlhc19zdWJuZXRfYXJnPSJuZXRtYXNrICRhbGlhc19zdWJuZXRfbWFzayIKLS1maQotLWlmIFsgeCRuZXdfaW50ZXJmYWNlX210dSAhPSB4IF07IHRoZW4KLS0gIG10dV9hcmc9Im10dSAkbmV3X2ludGVyZmFjZV9tdHUiCi0raWYgWyAtbiAiJGFsaWFzX3N1Ym5ldF9tYXNrIiBdOyB0aGVuCi0rICAgIGFsaWFzX21hc2s9Ii8kYWxpYXNfc3VibmV0X21hc2siCi0gZmkKLSBpZiBbIHgkSUZfTUVUUklDICE9IHggXTsgdGhlbgotICAgbWV0cmljX2FyZz0ibWV0cmljICRJRl9NRVRSSUMiCi1AQCAtMTI1LDkgKzExOSw5IEBAIGZpCi0gaWYgWyB4JHJlYXNvbiA9IHhQUkVJTklUIF07IHRoZW4KLSAgIGlmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgotICAgICAjIEJyaW5nIGRvd24gYWxpYXMgaW50ZXJmYWNlLiBJdHMgcm91dGVzIHdpbGwgZGlzYXBwZWFyIHRvby4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZTowLSBpbmV0IDAKLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0gICBmaQotLSAgaWZjb25maWcgJGludGVyZmFjZSAwIHVwCi0rICAke2lwfSBsaW5rIHNldCBkZXYgJHtpbnRlcmZhY2V9IHVwCi0gCi0gICAjIFdlIG5lZWQgdG8gZ2l2ZSB0aGUga2VybmVsIHNvbWUgdGltZSB0byBnZXQgdGhlIGludGVyZmFjZSB1cC4KLSAgIHNsZWVwIDEKLUBAIC0xNTQsMjUgKzE0OCwzMCBAQCBpZiBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRU5FVyBdIHx8IFwKLSAgIGlmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4IF0gJiYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdICYmIFwKLSAJCVsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHgkb2xkX2lwX2FkZHJlc3MgXTsgdGhlbgotICAgICAjIFBvc3NpYmxlIG5ldyBhbGlhcy4gUmVtb3ZlIG9sZCBhbGlhcy4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZTowLSBpbmV0IDAKLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0gICBmaQotICAgaWYgWyB4JG9sZF9pcF9hZGRyZXNzICE9IHggXSAmJiBbIHgkb2xkX2lwX2FkZHJlc3MgIT0geCRuZXdfaXBfYWRkcmVzcyBdOyB0aGVuCi0gICAgICMgSVAgYWRkcmVzcyBjaGFuZ2VkLiBCcmluZ2luZyBkb3duIHRoZSBpbnRlcmZhY2Ugd2lsbCBkZWxldGUgYWxsIHJvdXRlcywKLSAgICAgIyBhbmQgY2xlYXIgdGhlIEFSUCBjYWNoZS4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZSBpbmV0IDAgZG93bgotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9Ci0gCi0gICBmaQotICAgaWYgWyB4JG9sZF9pcF9hZGRyZXNzID0geCBdIHx8IFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4JG5ld19pcF9hZGRyZXNzIF0gfHwgXAotICAgICAgWyB4JHJlYXNvbiA9IHhCT1VORCBdIHx8IFsgeCRyZWFzb24gPSB4UkVCT09UIF07IHRoZW4KLSAKLS0gICAgaWZjb25maWcgJGludGVyZmFjZSBpbmV0ICRuZXdfaXBfYWRkcmVzcyAkbmV3X3N1Ym5ldF9hcmcgXAotLQkJCQkJJG5ld19icm9hZGNhc3RfYXJnICRtdHVfYXJnCi0rICAgICR7aXB9IC00IGFkZHIgYWRkICR7bmV3X2lwX2FkZHJlc3N9JHtuZXdfbWFza30gJHtuZXdfYnJvYWRjYXN0X2FyZ30gXAotKyAgICAgICAgICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfQotKyAgICBpZiBbIC1uICIkbmV3X2ludGVyZmFjZV9tdHUiIF07IHRoZW4KLSsgICAgICAjIHNldCBNVFUKLSsgICAgICAke2lwfSBsaW5rIHNldCBkZXYgJHtpbnRlcmZhY2V9IG10dSAke25ld19pbnRlcmZhY2VfbXR1fQotKyAgICBmaQotICAgICAjIEFkZCBhIG5ldHdvcmsgcm91dGUgdG8gdGhlIGNvbXB1dGVkIG5ldHdvcmsgYWRkcmVzcy4KLSAgICAgZm9yIHJvdXRlciBpbiAkbmV3X3JvdXRlcnM7IGRvCi0gICAgICAgaWYgWyAieCRuZXdfc3VibmV0X21hc2siID0gIngyNTUuMjU1LjI1NS4yNTUiIF0gOyB0aGVuCi0tCXJvdXRlIGFkZCAtaG9zdCAkcm91dGVyIGRldiAkaW50ZXJmYWNlCi0rICAgICAgICAke2lwfSAtNCByb3V0ZSBhZGQgJHtyb3V0ZXJ9IGRldiAkaW50ZXJmYWNlID4vZGV2L251bGwgMj4mMQotICAgICAgIGZpCi0tICAgICAgcm91dGUgYWRkIGRlZmF1bHQgZ3cgJHJvdXRlciAkbWV0cmljX2FyZyBkZXYgJGludGVyZmFjZQotKyAgICAgICR7aXB9IC00IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAke3JvdXRlcn0gZGV2ICR7aW50ZXJmYWNlfSBcCi0rICAgICAgICAke21ldHJpY19hcmd9ID4vZGV2L251bGwgMj4mMQotICAgICBkb25lCi0gICBlbHNlCi0gICAgICMgd2UgaGF2ZW4ndCBjaGFuZ2VkIHRoZSBhZGRyZXNzLCBoYXZlIHdlIGNoYW5nZWQgb3RoZXIgb3B0aW9ucyAgICAgICAgICAgCi1AQCAtMTgwLDIxICsxNzksMjMgQEAgaWYgWyB4JHJlYXNvbiA9IHhCT1VORCBdIHx8IFsgeCRyZWFzb24gPSB4UkVORVcgXSB8fCBcCi0gICAgIGlmIFsgeCRuZXdfcm91dGVycyAhPSB4IF0gJiYgWyB4JG5ld19yb3V0ZXJzICE9IHgkb2xkX3JvdXRlcnMgXSA7IHRoZW4KLSAgICAgICAjIGlmIHdlJ3ZlIGNoYW5nZWQgcm91dGVycyBkZWxldGUgdGhlIG9sZCBhbmQgYWRkIHRoZSBuZXcuCi0gICAgICAgZm9yIHJvdXRlciBpbiAkb2xkX3JvdXRlcnM7IGRvCi0tICAgICAgICByb3V0ZSBkZWwgZGVmYXVsdCBndyAkcm91dGVyCi0rICAgICAgICAke2lwfSAtNCByb3V0ZSBkZWxldGUgZGVmYXVsdCB2aWEgJHtyb3V0ZXJ9Ci0gICAgICAgZG9uZQotICAgICAgIGZvciByb3V0ZXIgaW4gJG5ld19yb3V0ZXJzOyBkbwotICAgICAgICAgaWYgWyAieCRuZXdfc3VibmV0X21hc2siID0gIngyNTUuMjU1LjI1NS4yNTUiIF0gOyB0aGVuCi0tCSAgcm91dGUgYWRkIC1ob3N0ICRyb3V0ZXIgZGV2ICRpbnRlcmZhY2UKLS0JZmkKLS0Jcm91dGUgYWRkIGRlZmF1bHQgZ3cgJHJvdXRlciAkbWV0cmljX2FyZyBkZXYgJGludGVyZmFjZQotKwkgICAgICAke2lwfSAtNCByb3V0ZSBhZGQgJHtyb3V0ZXJ9IGRldiAkaW50ZXJmYWNlID4vZGV2L251bGwgMj4mMQotKwkgICAgZmkKLSsgICAgICAgICR7aXB9IC00IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAke3JvdXRlcn0gZGV2ICR7aW50ZXJmYWNlfSBcCi0rICAgICAgICAgICR7bWV0cmljX2FyZ30gPi9kZXYvbnVsbCAyPiYxCi0gICAgICAgZG9uZQotICAgICBmaQotICAgZmkKLSAgIGlmIFsgeCRuZXdfaXBfYWRkcmVzcyAhPSB4JGFsaWFzX2lwX2FkZHJlc3MgXSAmJiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF07Ci0gICAgdGhlbgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAgaW5ldCAkYWxpYXNfaXBfYWRkcmVzcyAkYWxpYXNfc3VibmV0X2FyZwotLSAgICByb3V0ZSBhZGQgLWhvc3QgJGFsaWFzX2lwX2FkZHJlc3MgJGludGVyZmFjZTowCi0rICAgICR7aXB9IC00IGFkZHIgZmx1c2ggZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX06MAotKyAgICAke2lwfSAtNCBhZGRyIGFkZCAke2FsaWFzX2lwX2FkZHJlc3N9JHthbGlhc19tYXNrfSBcCi0rICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICR7aXB9IC00IHJvdXRlIGFkZCAke2FsaWFzX2lwX2FkZHJlc3N9IGRldiAke2ludGVyZmFjZX0gPi9kZXYvbnVsbCAyPiYxCi0gICBmaQotICAgbWFrZV9yZXNvbHZfY29uZgotICAgZXhpdF93aXRoX2hvb2tzIDAKLUBAIC0yMDQsNDIgKzIwNSw0OSBAQCBpZiBbIHgkcmVhc29uID0geEVYUElSRSBdIHx8IFsgeCRyZWFzb24gPSB4RkFJTCBdIHx8IFsgeCRyZWFzb24gPSB4UkVMRUFTRSBdIFwKLSAgICB8fCBbIHgkcmVhc29uID0geFNUT1AgXTsgdGhlbgotICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0gICAgICMgVHVybiBvZmYgYWxpYXMgaW50ZXJmYWNlLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSAgIGZpCi0gICBpZiBbIHgkb2xkX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0gICAgICMgU2h1dCBkb3duIGludGVyZmFjZSwgd2hpY2ggd2lsbCBkZWxldGUgcm91dGVzIGFuZCBjbGVhciBhcnAgY2FjaGUuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2UgaW5ldCAwIGRvd24KLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfQotICAgZmkKLSAgIGlmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAgaW5ldCAkYWxpYXNfaXBfYWRkcmVzcyAkYWxpYXNfc3VibmV0X2FyZwotLSAgICByb3V0ZSBhZGQgLWhvc3QgJGFsaWFzX2lwX2FkZHJlc3MgJGludGVyZmFjZTowCi0rICAgICR7aXB9IC00IGFkZHIgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30ke2FsaWFzX25ldHdvcmtfYXJnfSBcCi0rICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICR7aXB9IC00IHJvdXRlIGFkZCAke2FsaWFzX2lwX2FkZHJlc3N9IGRldiAke2ludGVyZmFjZX0gPi9kZXYvbnVsbCAyPiYxCi0gICBmaQotICAgZXhpdF93aXRoX2hvb2tzIDAKLSBmaQotIAotIGlmIFsgeCRyZWFzb24gPSB4VElNRU9VVCBdOyB0aGVuCi0gICBpZiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF07IHRoZW4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZTowLSBpbmV0IDAKLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICBmaQotKyAgJHtpcH0gLTQgYWRkciBhZGQgJHtuZXdfaXBfYWRkcmVzc30ke25ld19tYXNrfSAke25ld19icm9hZGNhc3RfYXJnfSBcCi0rICAgICAgICAgICAgZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX0KLSsgIGlmIFsgLW4gIiRuZXdfaW50ZXJmYWNlX210dSIgXTsgdGhlbgotKyAgICAjIHNldCBNVFUKLSsgICAgaXAgbGluayBzZXQgZGV2ICR7aW50ZXJmYWNlfSBtdHUgJHtuZXdfaW50ZXJmYWNlX210dX0KLSAgIGZpCi0tICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgJG5ld19pcF9hZGRyZXNzICRuZXdfc3VibmV0X2FyZyBcCi0tCQkJCQkkbmV3X2Jyb2FkY2FzdF9hcmcgJG10dV9hcmcKLSAgIHNldCAkbmV3X3JvdXRlcnMKLSAgIGlmIHBpbmcgLXEgLWMgMSAkMTsgdGhlbgotICAgICBpZiBbIHgkbmV3X2lwX2FkZHJlc3MgIT0geCRhbGlhc19pcF9hZGRyZXNzIF0gJiYgXAotIAkJCVsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgotLSAgICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MCBpbmV0ICRhbGlhc19pcF9hZGRyZXNzICRhbGlhc19zdWJuZXRfYXJnCi0tICAgICAgcm91dGUgYWRkIC1ob3N0ICRhbGlhc19pcF9hZGRyZXNzIGRldiAkaW50ZXJmYWNlOjAKLSsgICAgICAke2lwfSAtNCBhZGRyIGFkZCAke2FsaWFzX2lwX2FkZHJlc3N9JHthbGlhc19tYXNrfSBcCi0rICAgICAgICAgICAgZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX06MAotKyAgICAgICR7aXB9IC00IHJvdXRlIGFkZCAke2FsaWFzX2lwX2FkZHJlc3N9IGRldiAke2ludGVyZmFjZX0gPi9kZXYvbnVsbCAyPiYxCi0gICAgIGZpCi0gICAgIGZvciByb3V0ZXIgaW4gJG5ld19yb3V0ZXJzOyBkbwotICAgICAgIGlmIFsgIngkbmV3X3N1Ym5ldF9tYXNrIiA9ICJ4MjU1LjI1NS4yNTUuMjU1IiBdIDsgdGhlbgotLQlyb3V0ZSBhZGQgLWhvc3QgJHJvdXRlciBkZXYgJGludGVyZmFjZQotKwkgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7cm91dGVyfSBkZXYgJGludGVyZmFjZSA+L2Rldi9udWxsIDI+JjEKLSAgICAgICBmaQotLSAgICAgIHJvdXRlIGFkZCBkZWZhdWx0IGd3ICRyb3V0ZXIgJG1ldHJpY19hcmcgZGV2ICRpbnRlcmZhY2UKLSsgICAgICAke2lwfSAtNCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJHtyb3V0ZXJ9IGRldiAke2ludGVyZmFjZX0gXAotKyAgICAgICAgJHttZXRyaWNfYXJnfSA+L2Rldi9udWxsIDI+JjEKLSAgICAgZG9uZQotICAgICBtYWtlX3Jlc29sdl9jb25mCi0gICAgIGV4aXRfd2l0aF9ob29rcyAwCi0gICBmaQotLSAgaWZjb25maWcgJGludGVyZmFjZSBpbmV0IDAgZG93bgotKyAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9Ci0gICBleGl0X3dpdGhfaG9va3MgMQotIGZpCi0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9zZWFyY2gtZm9yLWxpYnhtbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3Avc2VhcmNoLWZvci1saWJ4bWwyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDhhNWI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9zZWFyY2gtZm9yLWxpYnhtbDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1saWJkbnMgcmVxdWlyZXMgbGlieG1sMiBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIGxpYnhtbDIgc3VwcG9ydAotZW5hYmxlZC4gQ29tcGlsYXRpb24gd2lsbCBmYWlsIGZvciBvbWFwaXAvdGVzdC5jIGluIGNhc2UKLWx4bWwyIGlzbid0IHVzZWQgZHVyaW5nIHRoZSBidWlsZC4gU28sIHdlIGFkZCBsb3NlbHkgY291cGxlZAotc2VhcmNoIHBhdGggd2hpY2ggd2lsbCBwaWNrIHVwIHRoZSBsaWIgaWYgaXQgaXMgcHJlc2VudC4KLQotU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzlkYzhiNS4uODVmNTliZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAyLDYgKzYwMiwxMCBAQCBubykKLSBlc2FjCi0gQUNfU1VCU1QoW2xpYmJpbmRdKQotIAotKyMgV2UgbmVlZCB0byBmaW5kIGxpYnhtbDIgaWYgYmluZCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGVuYWJsZWQKLSsjIG90aGVyd2lzZSB3ZSdsbCBmYWlsIHRvIGJ1aWxkIG9tYXBpcC90ZXN0LmMKLStBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sKQotKwotICMgT3BlbkxEQVAgc3VwcG9ydC4KLSBBQ19BUkdfV0lUSChsZGFwLAotICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWxkYXBdLFtlbmFibGUgT3BlbkxEQVAgc3VwcG9ydCBpbiBkaGNwZCAoZGVmYXVsdCBpcyBubyldKSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC90d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2M2YWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC90d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotRnJvbSBhZDdiYjQwMWY0NzcxNGZjMzBjNDA4ODUzYjc5NmNlMGYxYzdlNjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjo1MTo0NCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0d2VhayB0byBzdXBwb3J0IGV4dGVybmFsIGJpbmQKLQotVHdlYWsgdGhlIGV4dGVybmFsIGJpbmQgdG8gb2UtY29yZSdzIHN5c3Jvb3QgcmF0aGVyIHRoYW4KLWV4dGVybmFsIGJpbmQgc291cmNlIGJ1aWxkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgPG9lLWNvcmUgc3BlY2lmaWM+Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KLSBjbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCi0gY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQotIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDIgKy0KLSBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCi0gcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQotIHNlcnZlci9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KLSBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KLWluZGV4IDQ3MzBiYjMuLjg0ZDgxMzEgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQotQEAgLTQsNyArNCw3IEBACi0gIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KLSBTVUJESVJTID0gLiB0ZXN0cwotIAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKLSAJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZGE2OWVhOS4uZmUzNWU1NyAxMDA2NDQKLS0tLSBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSBTVUJESVJTID0gLgotIAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQotZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZjhkNmIwZS4uMDVjZDljMSAxMDA2NDQKLS0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSBTVUJESVJTID0gLgotIAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLWRpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotaW5kZXggYmE4ZGQ4Yi4uOWIyNDg2ZSAxMDA2NDQKLS0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQotIAotZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQotaW5kZXggZGQxYWZhMC4uZTRhODU5OSAxMDA2NDQKLS0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQotKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotK0JJTkRMSUJESVIgPSBAQklORERJUkAKLSBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCi1kaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQotaW5kZXggNmQ2NTJmNi4uYjNiZjU3OCAxMDA2NDQKLS0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCi0rKysgYi9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLWRpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLWluZGV4IDM5OTBiOWMuLmI1ZDhjMmQgMTAwNjQ0Ci0tLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KLSsrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQotQEAgLTQsNyArNCw3IEBACi0gIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KLSBTVUJESVJTID0gLiB0ZXN0cwotIAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggNjVhOWY3NC4uMjg5MjMwOSAxMDA2NDQKLS0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSBTVUJESVJTID0gLgotIAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIAotIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OGMyOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBkaGNwLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgICBmaWxlOi8vbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpeHNlcGJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC1zY3JpcHQtZHJvcC1yZXNvbHYuY29uZi5kaGNsaWVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjVlNWIyZmEzMWMyZTI3ZTQ4NzAzOWQ4NmY4M2QzZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjk1OTM2YmYxNWQyMzkzYzU1ZGQ1MDViYzUyN2QxZDQ0MDgyODljZWM1YTlmYThhYmI5OWY3NTc3ZTdmOTU0IgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2JpbmQtaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBkaGNwLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImFmYTZlOWIzZWI3NTM5ZWEwNDg0MjFhODJjNjY4YWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0MWVhZjYzNjRmMTM3N2ZlMDY1ZDM1NjcxZDljZjgyYmJiYzhmMjEyMDc4MTliMmI5ZjMzZjY1MmFlYzZmMWIiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY2xpZW50LXN5c3RlbWQtd3JhcHBlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMGUyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY2xpZW50LXN5c3RlbWQtd3JhcHBlcgpAQCAtMCwwICsxLDM5IEBACisjIS9iaW4vc2gKKworIyBJbiBjYXNlIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBmb3IgbmZzLCBza2lwIGl0LgorbmZzcm9vdD0wCitpbnRlcmZhY2VzPSIiCitleGVjIDk8JjAgPCAvcHJvYy9tb3VudHMKK3doaWxlIHJlYWQgZGV2IG10cHQgZnN0eXBlIHJlc3Q7IGRvCisgICAgaWYgdGVzdCAkbXRwdCA9ICIvIiA7IHRoZW4KKyAgICAgICAgY2FzZSAkZnN0eXBlIGluCisgICAgICAgICAgICBuZnMgfCBuZnM0KQorICAgICAgICAgICAgICAgIG5mc3Jvb3Q9MQorICAgICAgICAgICAgICAgIG5mc19hZGRyPWBlY2hvICRyZXN0IHwgc2VkIC1lICdzL14uKmFkZHI9XChbMC05Ll0qXCkuKiQvXDEvJ2AKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICBmaQorZG9uZQorZXhlYyAwPCY5IDk8Ji0KKworaWYgWyAkbmZzcm9vdCAtZXEgMCBdOyB0aGVuCisgICAgaW50ZXJmYWNlcz0iJElOVEVSRkFDRVMiCitlbHNlCisgICAgaWYgWyAteCAvYmluL2lwIC1vIC14IC9zYmluL2lwIF0gOyB0aGVuCisJbmZzX2lmYWNlPWBpcCByb3V0ZSBnZXQgJG5mc19hZGRyIHwgZ3JlcCBkZXYgfCBzZWQgLWUgJ3MvXi4qZGV2IFwoWy1hLXowLTkuXSpcKS4qJC9cMS8nYAorICAgIGZpCisgICAgZm9yIGkgaW4gJElOVEVSRkFDRVM7IGRvCisJaWYgdGVzdCAieCRpIiA9ICJ4JG5mc19pZmFjZSI7IHRoZW4KKyAgICAgICAgICAgIGVjaG8gImRoY2xpZW50IHNraXBwaW5nIG5mc3Jvb3QgaW50ZXJmYWNlICRpIgorCWVsc2UKKwkgICAgaW50ZXJmYWNlcz0iJGludGVyZmFjZXMgJGkiCisJZmkKKyAgICBkb25lCitmaQorCitpZiB0ZXN0ICJ4JGludGVyZmFjZXMiICE9ICJ4IjsgdGhlbgorICAgIC9zYmluL2RoY2xpZW50IC1kIC1jZiAvZXRjL2RoY3AvZGhjbGllbnQuY29uZiAtcSAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC5sZWFzZXMgJGludGVyZmFjZXMKK2ZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY2xpZW50LnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY2xpZW50LnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkYjRkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUR5bmFtaWMgSG9zdCBDb25maWd1cmF0aW9uIFByb3RvY29sIChESENQKQorV2FudHM9bmV0d29yay50YXJnZXQKK0JlZm9yZT1uZXR3b3JrLnRhcmdldAorQWZ0ZXI9c3lzdGVtZC11ZGV2ZC5zZXJ2aWNlCisKK1tTZXJ2aWNlXQorRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9kaGNwLWNsaWVudAorRXhlY1N0YXJ0PUBCQVNFX1NCSU5ESVJAL2RoY2xpZW50LXN5c3RlbWQtd3JhcHBlcgorUmVtYWluQWZ0ZXJFeGl0PXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKaW5kZXggY2U2NDg4OC4uYTU3OGViMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwpAQCAtMTMsNyArMTMsMTAgQEAKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGJhc2gtY29tcGxldGlvbiBwa2djb25maWcKIAotRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgS0VSTkVMX0lOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0gRE9DRElSPSR7ZG9jZGlyfS9pcHJvdXRlMiBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCcgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCitQQUNLQUdFQ09ORklHID8/PSAidGlwYyIKK1BBQ0tBR0VDT05GSUdbdGlwY10gPSAiLCxsaWJtbmwsIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBLRVJORUxfSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFNVQkRJUlM9J2xpYiB0YyBpcCBicmlkZ2UgbWlzYyBnZW5sICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpcGMnLCAndGlwYycsICcnLCBkKX0nIFNCSU5ESVI9JyR7YmFzZV9zYmluZGlyfScgTElCRElSPScke2xpYmRpcn0nIgogCiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKICAgICBzaCBjb25maWd1cmUgJHtTVEFHSU5HX0lOQ0RJUn0KQEAgLTMyLDcgKzM1LDcgQEAKICMgVGhlIC5zbyBmaWxlcyBpbiBpcHJvdXRlMi10YyBhcmUgbW9kdWxlcywgbm90IHRyYWRpdGlvbmFsIGxpYnJhcmllcwogSU5TQU5FX1NLSVBfJHtQTn0tdGMgPSAiZGV2LXNvIgogCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGMgJHtQTn0tbG5zdGF0ICR7UE59LWlmc3RhdCAke1BOfS1nZW5sICR7UE59LXJ0YWNjdCAke1BOfS1uc3RhdCAke1BOfS1zcyIKK1BBQ0tBR0VTID0rICIke1BOfS10YyAke1BOfS1sbnN0YXQgJHtQTn0taWZzdGF0ICR7UE59LWdlbmwgJHtQTn0tcnRhY2N0ICR7UE59LW5zdGF0ICR7UE59LXNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpcGMnLCAnJHtQTn0tdGlwYycsICcnLCBkKX0iCiBGSUxFU18ke1BOfS10YyA9ICIke2Jhc2Vfc2JpbmRpcn0vdGMqIFwKICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90Yy8qLnNvIgogRklMRVNfJHtQTn0tbG5zdGF0ID0gIiR7YmFzZV9zYmluZGlyfS9sbnN0YXQgJHtiYXNlX3NiaW5kaXJ9L2N0c3RhdCAke2Jhc2Vfc2JpbmRpcn0vcnRzdGF0IgpAQCAtNDEsNiArNDQsNyBAQAogRklMRVNfJHtQTn0tcnRhY2N0ID0gIiR7YmFzZV9zYmluZGlyfS9ydGFjY3QiCiBGSUxFU18ke1BOfS1uc3RhdCA9ICIke2Jhc2Vfc2JpbmRpcn0vbnN0YXQiCiBGSUxFU18ke1BOfS1zcyA9ICIke2Jhc2Vfc2JpbmRpcn0vc3MiCitGSUxFU18ke1BOfS10aXBjID0gIiR7YmFzZV9zYmluZGlyfS90aXBjIgogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJpcCIKIEFMVEVSTkFUSVZFX1RBUkdFVFtpcF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lwLiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1leHBsaWNpdGx5LWZvci1VSU5UMTZfTUFYLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwYzBhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1leHBsaWNpdGx5LWZvci1VSU5UMTZfTUFYLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gM2M4ODVkODdiZWZjNzA2YmI5MjM5MzNiOTgxOWRlNmZlMmRlODk3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIwIE1heSAyMDE3IDE0OjAzOjE5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZXhwbGljaXRseSBmb3IgVUlOVDE2X01BWCkKKworRml4ZXMKK3wgdGNfY29yZS5jOjE5MDoyOTogZXJyb3I6ICdVSU5UMTZfTUFYJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnX19JTlQxNl9NQVhfXyc/Cit8ICAgIGlmICgoc3ogPj4gcy0+c2l6ZV9sb2cpID4gVUlOVDE2X01BWCkgeworfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0Yy90Y19jb3JlLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3RjL3RjX2NvcmUuYyBiL3RjL3RjX2NvcmUuYworaW5kZXggN2JiZTBkNy4uODIxYjc0MSAxMDA2NDQKKy0tLSBhL3RjL3RjX2NvcmUuYworKysrIGIvdGMvdGNfY29yZS5jCitAQCAtMTIsNiArMTIsNyBAQAorIAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXNsb2cuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjhkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZjU4ZmM5OWM4OGE1NDEzNWU1NWE2ZTA5NTZjZThhZTcxMDc4ZDFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEyIEp1biAyMDE3IDA0OjI5OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGlwOiBSZW1vdmUgdW5uZWVkIGhlYWRlcgorCitGaXggcmVkZWZpbml0aW9uIG9mIHN0cnVjdCBldGhoZHIgd2l0aCBhIHN1aXRhYmx5IHBhdGNoZWQgbXVzbCBsaWJjCit0aGF0IHN1cHByZXNzZXMgdGhlIGtlcm5lbCBpZl9ldGhlci5oLgorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbmV0ZGV2QHZnZXIua2VybmVsLm9yZ10KKy0tLQorIGlwL2lwbGlua19icmlkZ2UuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pcC9pcGxpbmtfYnJpZGdlLmMgYi9pcC9pcGxpbmtfYnJpZGdlLmMKK2luZGV4IDgxOGI0M2MuLmYwNjViMjIgMTAwNjQ0CistLS0gYS9pcC9pcGxpbmtfYnJpZGdlLmMKKysrKyBiL2lwL2lwbGlua19icmlkZ2UuYworQEAgLTE1LDcgKzE1LDYgQEAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9saW5rLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorLSNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorIAorICNpbmNsdWRlICJydF9uYW1lcy5oIgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNTBlODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSBpcHJvdXRlMi5pbmMKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjk0YTJiMGVkZWZhZWFjMTI0ZGM4ZjVkMDA2OTMxYjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjJiMWUxYzFmYzcwNGFkMzU4MzdlNWE2NjEwMzczOTcyN2I4YjQ4YWM5MGI0OGMxM2Y3OWI3MzY3ZmYwYTlhOCIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjExLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkMDU0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1leHBsaWNpdGx5LWZvci1VSU5UMTZfTUFYLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjdhOTQ5OGRlODhiY2NhOTVjMzA1ZGY2MTA4YWUxOTdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyNjcxMDI4YmRhNjk2ZDBjYjhmNDhlYzhlNzAyNTgxYzNhNTAxY2FlZWQzM2VlYzNhODFkNzA0MWNiYzgwMjYiCisKKyMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUworIworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnBjYXAvbGlicGNhcC5pbmMKaW5kZXggNjYzNTc3OS4uZTU3ZWE4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jCkBAIC0zOCwzICszOCw1IEBACiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgc2VkIC1pIC1lJ3MsXlZfUlBBVEhfT1BUPS4qJCxWX1JQQVRIX09QVD0sJyAke1N9L3BjYXAtY29uZmlnLmluCiB9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYgppbmRleCBiZDQ4OGViLi5kYmM1NzhlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYgpAQCAtMSw5ICsxLDEwIEBACiBTVU1NQVJZID0gIk1vYmlsZSBCcm9hZGJhbmQgU2VydmljZSBQcm92aWRlciBEYXRhYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9OZXR3b3JrTWFuYWdlci9Nb2JpbGVCcm9hZGJhbmQvU2VydmljZVByb3ZpZGVycyIKIFNFQ1RJT04gPSAibmV0d29yayIKIExJQ0VOU0UgPSAiUEQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzk2NDU3OWIyYThlY2U0YmM2NzQ0ZDJkYzlhOGIwNCIKLVNSQ1JFViA9ICI1MTk0NjU3NjZmYWJjODViOWZkZWE1ZjJiNWVlM2QwOGMyYjFmNzBkIgotUFYgPSAiMjAxNTEyMTQiCitTUkNSRVYgPSAiYmVmY2JiYzk4NjdlNzQyYWMxNjQxNTY2MGIwYjc1MjEyMThhNTMwYyIKK1BWID0gIjIwMTcwMzEwIgogUEUgPSAiMSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItVUlOVDE2X01BWC1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNWEyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItVUlOVDE2X01BWC1kZWZpbml0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMzZiNDgwNTdiY2U3NmRjZWQzMzVkNjdhMjg5NGE0MjA5Njc4MTFjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIwIE1heSAyMDE3IDE0OjA3OjUzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIFVJTlQxNl9NQVggZGVmaW5pdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHN1cHBvcnQvbnNtL3JwYy5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zdXBwb3J0L25zbS9ycGMuYyBiL3N1cHBvcnQvbnNtL3JwYy5jCitpbmRleCA0ZTVmNDBlLi5kOTFjNmVhIDEwMDY0NAorLS0tIGEvc3VwcG9ydC9uc20vcnBjLmMKKysrKyBiL3N1cHBvcnQvbnNtL3JwYy5jCitAQCAtNDAsNiArNDAsNyBAQAorIAorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMS4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzEuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2E5YWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMS4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgotREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKLU5GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCi0KLSMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKLURFUEVORFMgPSAibGliY2FwIGxpYm5mc2lkbWFwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCBiYXNoIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZnNkIgotCi1pbmhlcml0IHVzZXJhZGQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1jbGllbnQiCi1VU0VSQUREX1BBUkFNXyR7UE59LWNsaWVudCA9ICItLXN5c3RlbSAgLS1ob21lLWRpciAvdmFyL2xpYi9uZnMgXAotCQkJICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGN1c2VyIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmZzLXV0aWxzLyR7UFZ9L25mcy11dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWxsb3ctdG8tZXhwbGljaXRseS1kaXNhYmxlLW5mc2lkbWFwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzc2VydmVyIFwKLSAgICAgICAgICAgZmlsZTovL25mc2NvbW1vbiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtc2VydmVyLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLW1vdW50ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zdGF0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3Byb2MtZnMtbmZzZC5tb3VudCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtRG8tbm90LXBhc3MtQ0ZMQUdTLXRvLWdjYy13aGlsZS1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU0ZTQxMTkwNDNlYzg1MDdhMmEwZTA1NGNmMjg4OWE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0MmE1YmMwYThkODBkMDQ2NTAwMzBjZWI5YTExZjA4ZjRhY2ZiY2IxZWUyOTdmNjU3ZmI5NGUzMzljNDU5NzUiCi0KLSMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKLSMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotSU5JVFNDUklQVF9OQU1FID0gIm5mc3NlcnZlciIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LWNsaWVudCA9ICJuZnNjb21tb24iCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1jbGllbnQgPSAiZGVmYXVsdHMgMTkgMjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZnMtc2VydmVyLnNlcnZpY2UgbmZzLW1vdW50ZC5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJuZnMtc3RhdGQuc2VydmljZSIKLQotIyAtLWVuYWJsZS11dWlkIGlzIG5lZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zdGF0ZHVzZXI9cnBjdXNlciBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW91bnRjb25maWcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYm1vdW50LW1vdW50IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzdjQxIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS11dWlkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzZGNsdHJhY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zdGF0ZHBhdGg9L3Zhci9saWIvbmZzL3N0YXRkIFwKLSAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC10Y3Atd3JhcHBlcnMsLS13aXRob3V0LXRjcC13cmFwcGVycyx0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW25mc2lkbWFwXSA9ICItLWVuYWJsZS1uZnNpZG1hcCwtLWRpc2FibGUtbmZzaWRtYXAsa2V5dXRpbHMiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgotCi1DT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKLQkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKLQotRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKLQkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKLQkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKLQkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCi0JCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCi1SREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKLQotRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgotCi1GSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCi1SREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCi0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQotCi0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL29zZF9sb2dpbi9NYWtlZmlsZS5hbQotfQotCi0jIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAotIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW1ha2UgY2xlYW4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLwotCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAotCWZpCi0KLQkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKLQlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQotCi0JIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCi0JY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKLQljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKLQotCSMgdGhlIGZvbGxvd2luZyBhcmUgYnVpbHQgYnkgQ0NfRk9SX0JVSUxECi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZGVidWcKLQlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNnZW4KLQlybSAtZiAke0R9JHtzYmluZGlyfS9sb2NrdGVzdAotCi0gICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAotCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTE3YzRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgpAQCAtMCwwICsxLDE0OSBAQAorU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgorREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKK05GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCisKKyMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKK0RFUEVORFMgPSAibGliY2FwIGxpYm5mc2lkbWFwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCBiYXNoIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZnNkIgorCitpbmhlcml0IHVzZXJhZGQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1jbGllbnQiCitVU0VSQUREX1BBUkFNXyR7UE59LWNsaWVudCA9ICItLXN5c3RlbSAgLS1ob21lLWRpciAvdmFyL2xpYi9uZnMgXAorCQkJICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGN1c2VyIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmZzLXV0aWxzLyR7UFZ9L25mcy11dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWxsb3ctdG8tZXhwbGljaXRseS1kaXNhYmxlLW5mc2lkbWFwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmZzc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL25mc2NvbW1vbiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc2VydmVyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLW1vdW50ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zdGF0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3Byb2MtZnMtbmZzZC5tb3VudCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtRG8tbm90LXBhc3MtQ0ZMQUdTLXRvLWdjYy13aGlsZS1idWlsZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItVUlOVDE2X01BWC1kZWZpbml0aW9uLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjU5ZGZjYjJlNjI1NGIxMjlmOTAxZjQwYzg2MDg2YjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmYWViNTRjNzBiODRlNmJkM2I5YjY5MDE1NDRiMWY2YWRkOGQyNDZmMzVjMTY4M2U0MDJkYWY0ZTBjNzE5ZWYiCisKKyMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKKyMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorSU5JVFNDUklQVF9OQU1FID0gIm5mc3NlcnZlciIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LWNsaWVudCA9ICJuZnNjb21tb24iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1jbGllbnQgPSAiZGVmYXVsdHMgMTkgMjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZnMtc2VydmVyLnNlcnZpY2UgbmZzLW1vdW50ZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJuZnMtc3RhdGQuc2VydmljZSIKKworIyAtLWVuYWJsZS11dWlkIGlzIG5lZWQgZm9yIGNyb3NzLWNvbXBpbGluZworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zdGF0ZHVzZXI9cnBjdXNlciBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbW91bnRjb25maWcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYm1vdW50LW1vdW50IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzdjQxIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS11dWlkIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzZGNsdHJhY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zdGF0ZHBhdGg9L3Zhci9saWIvbmZzL3N0YXRkIFwKKyAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC10Y3Atd3JhcHBlcnMsLS13aXRob3V0LXRjcC13cmFwcGVycyx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW25mc2lkbWFwXSA9ICItLWVuYWJsZS1uZnNpZG1hcCwtLWRpc2FibGUtbmZzaWRtYXAsa2V5dXRpbHMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgorCitDT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKKwkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKKworRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKKwkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKKwkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKKwkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCisJCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCitSREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKKworRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgorCitGSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCitSREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQorCisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL29zZF9sb2dpbi9NYWtlZmlsZS5hbQorfQorCisjIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAorIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCW1ha2UgY2xlYW4KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgorCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLworCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAorCWZpCisKKwkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKKwlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQorCisJIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCisJY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKKwljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKKworCSMgdGhlIGZvbGxvd2luZyBhcmUgYnVpbHQgYnkgQ0NfRk9SX0JVSUxECisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZGVidWcKKwlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNnZW4KKwlybSAtZiAke0R9JHtzYmluZGlyfS9sb2NrdGVzdAorCisgICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAorCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlYmQ3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBvZm9uby5pbmMKLQotU1JDX1VSSSAgPSAiXAotICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gIGZpbGU6Ly9vZm9ubyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYTVmODgwM2FjZTExMDUxMWI2ZmY1YTJiMzk3ODJlOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTBlMDliZGQ4YjUzYjhkMmU0YjU0ZjE4NjNlY2Q5YWViZTQ3ODY0NzdhNmNiZjhmNjU1NDk2ZThlZGIzMWM4MSIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURfR05VX1NPVVJDRSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4Zjk4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIwLmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBvZm9uby5pbmMKKworU1JDX1VSSSAgPSAiXAorICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCisgIGZpbGU6Ly9vZm9ubyBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZmFkMDYzMGZjZTZhOWFlY2RiN2RiMzdiYzFmMWRiN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ3YmE4ZjQ4MWE3NzE1ZDAxM2E3OWY4ZDY0NzdlYjg5ZDhhYWFlMzk5Mzk1ZDVkMDA4YTEzMTdjMzRhMzFkNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVhZmI3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TCSA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICIxNDU0NGQ1OTk2ODM2ZjYyODYxM2MyY2U1NDQzODBlZTZmYzhmNTE0IgotUFYJID0gIjAuMTItZ2l0JHtTUkNQVn0iCi1QUiA9ICJyNSIKLQotU1JDX1VSSSAgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL29mb25vL29mb25vLmdpdCBcCi0JICAgIGZpbGU6Ly9vZm9ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAke1N9L2Jvb3RzdHJhcAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTllMjAwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGE3ZTM1OWQ0YmEzNDVhYTJhMTNjMDdmMTA1NzE4NGU5YjRlNTk4YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMTE6MTk6NDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BlbnNzaDogRml4IHN5bnRheCBlcnJvciBvbiB4MzIKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorVGhpcyBidWcgaGFzIGJlZW4gZml4ZWQgaW4gdl83LjUgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoLworb3BlbnNzaC1wb3J0YWJsZS90cmVlL1ZfN181IGFuZCBtYXN0ZXIgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS8KK29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS90cmVlL21hc3Rlci4KKworRml4IGNvbXBpbGF0aW9uIGVycm9yIGR1cmluZyBvcGVuc3NoIHgzMiBidWlsZCBkdWUgdG8gc3ludGF4IGVycm9yLgorCitTaWduZWQtb2ZmLWJ5OiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KKy0tLQorIHNhbmRib3gtc2VjY29tcC1maWx0ZXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYyBiL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYworaW5kZXggM2ExYWVkYy4uYThkNDcyYSAxMDA2NDQKKy0tLSBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYworKysrIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCitAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgcHJlYXV0aF9pbnNuc1tdID0geworIAkgKiB4ODYtNjQgc3lzY2FsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGUuZy4KKyAJICogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvODQ5OTIzCisgCSAqLworLQlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpOworKwlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpLAorICNlbmRpZgorIAorIAkvKiBEZWZhdWx0IGRlbnkgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2gKaW5kZXggZGY2NGExNC4uN2UwNDNhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoCkBAIC04LDcgKzgsNyBAQAogSW4gY2FzZSBvZiBjb21waWxhdGlvbiBieSBnY2Mgb3IgY2xhbmcgd2l0aCAtZnRyYXB2IG9wdGlvbiwgdGhlIG92ZXJmbG93CiB3b3VsZCBsZWFkIHRvIHByb2dyYW0gYWJvcnQuCiAKLVVwc3RyZWFtLXN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDhdCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4XQogCiBTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jaGVja19rZXlzCmluZGV4IGY1YmJhNTMuLjU0NjNiMWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cwpAQCAtMSw1ICsxLDM1IEBACiAjISAvYmluL3NoCiAKK2dlbmVyYXRlX2tleSgpIHsKKyAgICBsb2NhbCBGSUxFPSQxCisgICAgbG9jYWwgVFlQRT0kMgorICAgIGxvY2FsIERJUj0iJChkaXJuYW1lICIkRklMRSIpIgorCisgICAgbWtkaXIgLXAgIiRESVIiCisgICAgc3NoLWtleWdlbiAtcSAtZiAiJHtGSUxFfS50bXAiIC1OICcnIC10ICRUWVBFCisKKyAgICAjIEF0b21pY2FsbHkgcmVuYW1lIGZpbGUgcHVibGljIGtleQorICAgIG12IC1mICIke0ZJTEV9LnRtcC5wdWIiICIke0ZJTEV9LnB1YiIKKworICAgICMgVGhpcyBzeW5jIGRvZXMgZG91YmxlIGR1dHk6IEVuc3VyaW5nIHRoYXQgdGhlIGRhdGEgaW4gdGhlIHRlbXBvcmFyeQorICAgICMgcHJpdmF0ZSBrZXkgZmlsZSBpcyBvbiBkaXNrIGJlZm9yZSB0aGUgcmVuYW1lLCBhbmQgZW5zdXJpbmcgdGhhdCB0aGUKKyAgICAjIHB1YmxpYyBrZXkgcmVuYW1lIGlzIGNvbXBsZXRlZCBiZWZvcmUgdGhlIHByaXZhdGUga2V5IHJlbmFtZSwgc2luY2Ugd2UKKyAgICAjIHN3aXRjaCBvbiB0aGUgZXhpc3RlbmNlIG9mIHRoZSBwcml2YXRlIGtleSB0byB0cmlnZ2VyIGtleSBnZW5lcmF0aW9uLgorICAgICMgVGhpcyBkb2VzIG1lYW4gaXQgaXMgcG9zc2libGUgZm9yIHRoZSBwdWJsaWMga2V5IHRvIGV4aXN0LCBidXQgYmUgZ2FyYmFnZQorICAgICMgYnV0IHRoaXMgaXMgT0sgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHByaXZhdGUga2V5IHdvbid0IGV4aXN0IGFuZCB0aGUKKyAgICAjIGtleXMgd2lsbCBiZSByZWdlbmVyYXRlZC4KKyAgICAjCisgICAgIyBJbiB0aGUgZXZlbnQgdGhhdCBzeW5jIHVuZGVyc3RhbmRzIGFyZ3VtZW50cyB0aGF0IGxpbWl0IHdoYXQgaXQgdHJpZXMgdG8KKyAgICAjIGZzeW5jKCksIHdlIHByb3ZpZGVkIHRoZW0uIElmIGl0IGRvZXMgbm90LCBpdCB3aWxsIHNpbXBseSBjYWxsIHN5bmMoKQorICAgICMgd2hpY2ggaXMganVzdCBhcyB3ZWxsCisgICAgc3luYyAiJHtGSUxFfS5wdWIiICIkRElSIiAiJHtGSUxFfS50bXAiCisKKyAgICBtdiAiJHtGSUxFfS50bXAiICIkRklMRSIKKworICAgICMgc3luYyB0byBlbnN1cmUgdGhlIGF0b21pYyByZW5hbWUgaXMgY29tbWl0dGVkCisgICAgc3luYyAiJERJUiIKK30KKwogIyAvZXRjL2RlZmF1bHQvc3NoIG1heSBzZXQgU1lTQ09ORkRJUiBhbmQgU1NIRF9PUFRTCiBpZiB0ZXN0IC1mIC9ldGMvZGVmYXVsdC9zc2g7IHRoZW4KICAgICAuIC9ldGMvZGVmYXVsdC9zc2gKQEAgLTQzLDIyICs3MywxOCBAQAogIyBjcmVhdGUga2V5cyBpZiBuZWNlc3NhcnkKIGlmIFsgISAtZiAkSE9TVF9LRVlfUlNBIF07IHRoZW4KICAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIFJTQSBrZXkuLi4iCi0gICAgbWtkaXIgLXAgJChkaXJuYW1lICRIT1NUX0tFWV9SU0EpCi0gICAgc3NoLWtleWdlbiAtcSAtZiAkSE9TVF9LRVlfUlNBIC1OICcnIC10IHJzYQorICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfUlNBIHJzYQogZmkKIGlmIFsgISAtZiAkSE9TVF9LRVlfRUNEU0EgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRUNEU0Ega2V5Li4uIgotICAgIG1rZGlyIC1wICQoZGlybmFtZSAkSE9TVF9LRVlfRUNEU0EpCi0gICAgc3NoLWtleWdlbiAtcSAtZiAkSE9TVF9LRVlfRUNEU0EgLU4gJycgLXQgZWNkc2EKKyAgICBnZW5lcmF0ZV9rZXkgJEhPU1RfS0VZX0VDRFNBIGVjZHNhCiBmaQogaWYgWyAhIC1mICRIT1NUX0tFWV9EU0EgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRFNBIGtleS4uLiIKLSAgICBta2RpciAtcCAkKGRpcm5hbWUgJEhPU1RfS0VZX0RTQSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9EU0EgLU4gJycgLXQgZHNhCisgICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9EU0EgZHNhCiBmaQogaWYgWyAhIC1mICRIT1NUX0tFWV9FRDI1NTE5IF07IHRoZW4KICAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIEVEMjU1MTkga2V5Li4uIgotICAgIG1rZGlyIC1wICQoZGlybmFtZSAkSE9TVF9LRVlfRUQyNTUxOSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9FRDI1NTE5IC1OICcnIC10IGVkMjU1MTkKKyAgICBnZW5lcmF0ZV9rZXkgJEhPU1RfS0VZX0VEMjU1MTkgZWQyNTUxOQogZmkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnCmluZGV4IGQ0OGJkMmIuLjMxZmU1ZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcKQEAgLTEwNyw3ICsxMDcsNiBAQAogI1ByaW50TGFzdExvZyB5ZXMKICNUQ1BLZWVwQWxpdmUgeWVzCiAjVXNlTG9naW4gbm8KLVVzZVByaXZpbGVnZVNlcGFyYXRpb24gc2FuZGJveCAjIERlZmF1bHQgZm9yIG5ldyBpbnN0YWxsYXRpb25zLgogI1Blcm1pdFVzZXJFbnZpcm9ubWVudCBubwogQ29tcHJlc3Npb24gbm8KIENsaWVudEFsaXZlSW50ZXJ2YWwgMTUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjRwMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjRwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwMWVhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy40cDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAotdGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAotU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAotYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1lMzI2MDQ1NjU3ZTg0MjU0MWQzZjM1YWFkYTQ0MjUwNyIKLQotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAotICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAotICAgICAgICAgICAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJkYjJhODNjYWY2NmEyMDhiYjc4ZDZkMjg3Y2RhYTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIxZmM0YTE0ZTIwMjQyOTMxODE5MjRlZDI0ODcyZTZmMmUwNjI5M2YzZTg5MjZhMzc2YjhhZWM0ODFmMTlkMSIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi0jIExGUyBzdXBwb3J0OgotQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKLQotIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1FWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCi0gICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCi0gICAgICAgICAgICAgICAgIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdWNsaWJjIGJlY2F1c2UgaW5jbHVkaW5nIHN0ZGlvLmgKLSMgcHVsbHMgaW4gcHRocmVhZHMuaCBhbmQgY2F1c2VzIGNvbmZsaWN0cyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgotIyBUaGlzIHJlc3VsdHMgaW4gY29tcGlsYXRpb24gZmFpbHVyZSwgc28gdW5sZXNzIHRoaXMgaXMgZml4ZWQsCi0jIGRpc2FibGUgcGFtIGZvciB1Y2xpYmMuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjPSIgLS13aXRob3V0LXBhbSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi0JaWYgWyAhIC1lIGFjaW5jbHVkZS5tNCAtYSAtZSBhY2xvY2FsLm00IF07IHRoZW4KLQkJY3AgYWNsb2NhbC5tNCBhY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAotICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgotICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCi0JCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCi0Jcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAotCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0KLQlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQotCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAotCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgotRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi1GSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKLUZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCi1GSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCi1GSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgotUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKLQotUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCi1SUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1rZXlnZW4gPSAic3NoLWtleWdlbiIKLQotQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCi1DT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgotQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKLUFMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmNhNmZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiCkBAIC0wLDAgKzEsMTY4IEBACitTVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCit0aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCitTc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCithbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWUzMjYwNDU2NTdlODQyNTQxZDNmMzVhYWRhNDQyNTA3IgorCisjIG9wZW5zc2wgMS4xIHBhdGNoZXMgYXJlIHByb3Bvc2VkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvcHVsbC80OAorREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wxMCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAorICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzaC1GaXgtc3ludGF4LWVycm9yLW9uLXgzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjUyZmRjN2Q4MzkyZjExMmJlZjExY2FjZjdlNjllMjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTg0NmUzYzVmYWI5ZjA1NDc0MDBiNGQyYzAxNzk5MmY5MTQyMjJiM2ZkMWY4ZWVlNmM3ZGM2YmM1ZTU5ZjlmMCIKKworaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCisjIExGUyBzdXBwb3J0OgorQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCisgICAgICAgICAgICAgICAgIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCisJaWYgWyAhIC1lIGFjaW5jbHVkZS5tNCAtYSAtZSBhY2xvY2FsLm00IF07IHRoZW4KKwkJY3AgYWNsb2NhbC5tNCBhY2luY2x1ZGUubTQKKwlmaQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAorICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgorICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCisJCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKwlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCisJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCisJaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9CisKKwkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAorCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKwlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKworCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAorCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgorRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCitGSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCitGSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKK0ZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCitGSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCitGSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgorUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKKworUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCitSUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1rZXlnZW4gPSAic3NoLWtleWdlbiIKKworQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCitDT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKK0FMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm0vZGViaWFuL3ZlcnNpb24tc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybS9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU3NDM0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm0vZGViaWFuL3ZlcnNpb24tc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNDY2NiBAQAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1Lm9yaWcvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMTY1MSw2ICsxNjUxLDggQEAKKyAJCX0KKyAJfQorIAorKyRzaGFyZWRfbGRmbGFnIC49ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9b3BlbnNzbC5sZCI7CisrCisgb3BlbihJTiwnPE1ha2VmaWxlLm9yZycpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgTWFrZWZpbGUub3JnOiQhXG4iOworIHVubGluaygiJE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbW92ZSBvbGQgJE1ha2VmaWxlLm5ldzokIVxuIiBpZiAtZSAiJE1ha2VmaWxlLm5ldyI7Cisgb3BlbihPVVQsIj4kTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlICRNYWtlZmlsZS5uZXc6JCFcbiI7CitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMjoxOTowOC42MDE4MjcyNjYgKzAxMDAKK0BAIC0wLDAgKzEsNDYxNSBAQAorK09QRU5TU0xfMS4wLjAgeworKwlnbG9iYWw6CisrCQlCSU9fZl9zc2w7CisrCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKKysJCUJJT19uZXdfc3NsOworKwkJQklPX25ld19zc2xfY29ubmVjdDsKKysJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOworKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7CisrCQlCSU9fc3NsX3NodXRkb3duOworKwkJZDJpX1NTTF9TRVNTSU9OOworKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7CisrCQlEVExTdjFfbWV0aG9kOworKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7CisrCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKKysJCWkyZF9TU0xfU0VTU0lPTjsKKysJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7CisrCQlrc3NsX2NnZXRfdGt0OworKwkJa3NzbF9jaGVja19hdXRoZW50OworKwkJa3NzbF9jdHhfZnJlZTsKKysJCWtzc2xfY3R4X25ldzsKKysJCWtzc2xfY3R4X3NldGtleTsKKysJCWtzc2xfY3R4X3NldHByaW5jOworKwkJa3NzbF9jdHhfc2V0c3RyaW5nOworKwkJa3NzbF9jdHhfc2hvdzsKKysJCWtzc2xfZXJyX3NldDsKKysJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7CisrCQlrc3NsX3NnZXRfdGt0OworKwkJa3NzbF9za2lwX2NvbmZvdW5kOworKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKKysJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOworKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKKysJCVNTTF9hY2NlcHQ7CisrCQlTU0xfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7CisrCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKKysJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOworKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKKysJCVNTTF9jYWxsYmFja19jdHJsOworKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKKysJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7CisrCQlTU0xfQ0lQSEVSX2dldF9uYW1lOworKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKKysJCVNTTF9jbGVhcjsKKysJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7CisrCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOworKwkJU1NMX0NPTVBfZ2V0X25hbWU7CisrCQlTU0xfY29ubmVjdDsKKysJCVNTTF9jb3B5X3Nlc3Npb25faWQ7CisrCQlTU0xfY3RybDsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9DVFhfYWRkX3Nlc3Npb247CisrCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7CisrCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NUWF9jdHJsOworKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKKysJCVNTTF9DVFhfZnJlZTsKKysJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKKysJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOworKwkJU1NMX0NUWF9uZXc7CisrCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOworKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOworKwkJU1NMX0NUWF9zZXNzaW9uczsKKysJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOworKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKKysJCVNTTF9DVFhfc2V0MV9wYXJhbTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOworKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOworKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOworKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKKysJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7CisrCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOworKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7CisrCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wdXJwb3NlOworKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7CisrCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKKysJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90cnVzdDsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9kb19oYW5kc2hha2U7CisrCQlTU0xfZHVwOworKwkJU1NMX2R1cF9DQV9saXN0OworKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKKysJCVNTTF9mcmVlOworKwkJU1NMX2dldDFfc2Vzc2lvbjsKKysJCVNTTF9nZXRfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X2NpcGhlcl9saXN0OworKwkJU1NMX2dldF9jaXBoZXJzOworKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7CisrCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247CisrCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOworKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7CisrCQlTU0xfZ2V0X2Vycm9yOworKwkJU1NMX2dldF9leF9kYXRhOworKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKKysJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7CisrCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9nZXRfZmQ7CisrCQlTU0xfZ2V0X2ZpbmlzaGVkOworKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47CisrCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7CisrCQlTU0xfZ2V0X3ByaXZhdGVrZXk7CisrCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKKysJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX2dldF9yYmlvOworKwkJU1NMX2dldF9yZWFkX2FoZWFkOworKwkJU1NMX2dldF9yZmQ7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWU7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKKysJCVNTTF9nZXRfc2Vzc2lvbjsKKysJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7CisrCQlTU0xfZ2V0X3NodXRkb3duOworKwkJU1NMX2dldF9TU0xfQ1RYOworKwkJU1NMX2dldF9zc2xfbWV0aG9kOworKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9nZXRfdmVyaWZ5X21vZGU7CisrCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7CisrCQlTU0xfZ2V0X3ZlcnNpb247CisrCQlTU0xfZ2V0X3diaW87CisrCQlTU0xfZ2V0X3dmZDsKKysJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKKysJCVNTTF9saWJyYXJ5X2luaXQ7CisrCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKKysJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7CisrCQlTU0xfbmV3OworKwkJU1NMX3BlZWs7CisrCQlTU0xfcGVuZGluZzsKKysJCVNTTF9yZWFkOworKwkJU1NMX3JlbmVnb3RpYXRlOworKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7CisrCQlTU0xfcnN0YXRlX3N0cmluZzsKKysJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfU0VTU0lPTl9jbXA7CisrCQlTU0xfU0VTU0lPTl9mcmVlOworKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX1NFU1NJT05fZ2V0X2lkOworKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7CisrCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKKysJCVNTTF9TRVNTSU9OX2hhc2g7CisrCQlTU0xfU0VTU0lPTl9uZXc7CisrCQlTU0xfU0VTU0lPTl9wcmludDsKKysJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOworKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKKysJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OworKwkJU1NMX3NldDFfcGFyYW07CisrCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKKysJCVNTTF9zZXRfYmlvOworKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7CisrCQlTU0xfc2V0X2V4X2RhdGE7CisrCQlTU0xfc2V0X2ZkOworKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOworKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3B1cnBvc2U7CisrCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX3NldF9yZWFkX2FoZWFkOworKwkJU1NMX3NldF9yZmQ7CisrCQlTU0xfc2V0X3Nlc3Npb247CisrCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7CisrCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOworKwkJU1NMX3NldF9zaHV0ZG93bjsKKysJCVNTTF9zZXRfU1NMX0NUWDsKKysJCVNTTF9zZXRfc3NsX21ldGhvZDsKKysJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOworKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKKysJCVNTTF9zZXRfdHJ1c3Q7CisrCQlTU0xfc2V0X3ZlcmlmeTsKKysJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OworKwkJU1NMX3NldF93ZmQ7CisrCQlTU0xfc2h1dGRvd247CisrCQlTU0xfc3RhdGU7CisrCQlTU0xfc3RhdGVfc3RyaW5nOworKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7CisrCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTHYyM19jbGllbnRfbWV0aG9kOworKwkJU1NMdjIzX21ldGhvZDsKKysJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOworKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKKysJCVNTTHYyX21ldGhvZDsKKysJCVNTTHYyX3NlcnZlcl9tZXRob2Q7CisrCQlTU0x2M19jbGllbnRfbWV0aG9kOworKwkJU1NMdjNfbWV0aG9kOworKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKKysJCVNTTF92ZXJzaW9uOworKwkJU1NMX3dhbnQ7CisrCQlTU0xfd3JpdGU7CisrCQlUTFN2MV9jbGllbnRfbWV0aG9kOworKwkJVExTdjFfbWV0aG9kOworKwkJVExTdjFfc2VydmVyX21ldGhvZDsKKysKKysKKysJCVNTTGVheTsKKysJCVNTTGVheV92ZXJzaW9uOworKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKKysJCUFTTjFfSEVBREVSX2ZyZWU7CisrCQlBU04xX0hFQURFUl9uZXc7CisrCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7CisrCQlBU04xX0lOVEVHRVJfZ2V0OworKwkJQVNOMV9JTlRFR0VSX3NldDsKKysJCUFTTjFfSU5URUdFUl90b19CTjsKKysJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKKysJCUFTTjFfT0JKRUNUX2ZyZWU7CisrCQlBU04xX09CSkVDVF9uZXc7CisrCQlBU04xX1BSSU5UQUJMRV90eXBlOworKwkJQVNOMV9TVFJJTkdfY21wOworKwkJQVNOMV9TVFJJTkdfZHVwOworKwkJQVNOMV9TVFJJTkdfZnJlZTsKKysJCUFTTjFfU1RSSU5HX25ldzsKKysJCUFTTjFfU1RSSU5HX3ByaW50OworKwkJQVNOMV9TVFJJTkdfc2V0OworKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7CisrCQlBU04xX1RZUEVfZnJlZTsKKysJCUFTTjFfVFlQRV9uZXc7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7CisrCQlBU04xX1VUQ1RJTUVfY2hlY2s7CisrCQlBU04xX1VUQ1RJTUVfcHJpbnQ7CisrCQlBU04xX1VUQ1RJTUVfc2V0OworKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlBU04xX2QyaV9iaW87CisrCQlBU04xX2QyaV9mcDsKKysJCUFTTjFfZGlnZXN0OworKwkJQVNOMV9kdXA7CisrCQlBU04xX2dldF9vYmplY3Q7CisrCQlBU04xX2kyZF9iaW87CisrCQlBU04xX2kyZF9mcDsKKysJCUFTTjFfb2JqZWN0X3NpemU7CisrCQlBU04xX3BhcnNlOworKwkJQVNOMV9wdXRfb2JqZWN0OworKwkJQVNOMV9zaWduOworKwkJQVNOMV92ZXJpZnk7CisrCQlCRl9jYmNfZW5jcnlwdDsKKysJCUJGX2NmYjY0X2VuY3J5cHQ7CisrCQlCRl9lY2JfZW5jcnlwdDsKKysJCUJGX2VuY3J5cHQ7CisrCQlCRl9vZmI2NF9lbmNyeXB0OworKwkJQkZfb3B0aW9uczsKKysJCUJGX3NldF9rZXk7CisrCQlCSU9fQ09OTkVDVF9mcmVlOworKwkJQklPX0NPTk5FQ1RfbmV3OworKwkJQklPX2FjY2VwdDsKKysJCUJJT19jdHJsOworKwkJQklPX2ludF9jdHJsOworKwkJQklPX2RlYnVnX2NhbGxiYWNrOworKwkJQklPX2R1bXA7CisrCQlCSU9fZHVwX2NoYWluOworKwkJQklPX2ZfYmFzZTY0OworKwkJQklPX2ZfYnVmZmVyOworKwkJQklPX2ZfY2lwaGVyOworKwkJQklPX2ZfbWQ7CisrCQlCSU9fZl9udWxsOworKwkJQklPX2ZfcHJveHlfc2VydmVyOworKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19mZF9zaG91bGRfcmV0cnk7CisrCQlCSU9fZmluZF90eXBlOworKwkJQklPX2ZyZWU7CisrCQlCSU9fZnJlZV9hbGw7CisrCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7CisrCQlCSU9fZ2V0X2ZpbHRlcl9iaW87CisrCQlCSU9fZ2V0X2hvc3RfaXA7CisrCQlCSU9fZ2V0X3BvcnQ7CisrCQlCSU9fZ2V0X3JldHJ5X0JJTzsKKysJCUJJT19nZXRfcmV0cnlfcmVhc29uOworKwkJQklPX2dldGhvc3RieW5hbWU7CisrCQlCSU9fZ2V0czsKKysJCUJJT19uZXc7CisrCQlCSU9fbmV3X2FjY2VwdDsKKysJCUJJT19uZXdfY29ubmVjdDsKKysJCUJJT19uZXdfZmQ7CisrCQlCSU9fbmV3X2ZpbGU7CisrCQlCSU9fbmV3X2ZwOworKwkJQklPX25ld19zb2NrZXQ7CisrCQlCSU9fcG9wOworKwkJQklPX3ByaW50ZjsKKysJCUJJT19wdXNoOworKwkJQklPX3B1dHM7CisrCQlCSU9fcmVhZDsKKysJCUJJT19zX2FjY2VwdDsKKysJCUJJT19zX2Nvbm5lY3Q7CisrCQlCSU9fc19mZDsKKysJCUJJT19zX2ZpbGU7CisrCQlCSU9fc19tZW07CisrCQlCSU9fc19udWxsOworKwkJQklPX3NfcHJveHlfY2xpZW50OworKwkJQklPX3Nfc29ja2V0OworKwkJQklPX3NldDsKKysJCUJJT19zZXRfY2lwaGVyOworKwkJQklPX3NldF90Y3BfbmRlbGF5OworKwkJQklPX3NvY2tfY2xlYW51cDsKKysJCUJJT19zb2NrX2Vycm9yOworKwkJQklPX3NvY2tfaW5pdDsKKysJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKKysJCUJJT19zb2NrZXRfaW9jdGw7CisrCQlCSU9fd3JpdGU7CisrCQlCTl9DVFhfZnJlZTsKKysJCUJOX0NUWF9uZXc7CisrCQlCTl9NT05UX0NUWF9mcmVlOworKwkJQk5fTU9OVF9DVFhfbmV3OworKwkJQk5fTU9OVF9DVFhfc2V0OworKwkJQk5fYWRkOworKwkJQk5fYWRkX3dvcmQ7CisrCQlCTl9oZXgyYm47CisrCQlCTl9iaW4yYm47CisrCQlCTl9ibjJoZXg7CisrCQlCTl9ibjJiaW47CisrCQlCTl9jbGVhcjsKKysJCUJOX2NsZWFyX2JpdDsKKysJCUJOX2NsZWFyX2ZyZWU7CisrCQlCTl9jbXA7CisrCQlCTl9jb3B5OworKwkJQk5fZGl2OworKwkJQk5fZGl2X3dvcmQ7CisrCQlCTl9kdXA7CisrCQlCTl9mcmVlOworKwkJQk5fZnJvbV9tb250Z29tZXJ5OworKwkJQk5fZ2NkOworKwkJQk5fZ2VuZXJhdGVfcHJpbWU7CisrCQlCTl9nZXRfd29yZDsKKysJCUJOX2lzX2JpdF9zZXQ7CisrCQlCTl9pc19wcmltZTsKKysJCUJOX2xzaGlmdDsKKysJCUJOX2xzaGlmdDE7CisrCQlCTl9tYXNrX2JpdHM7CisrCQlCTl9tb2Q7CisrCQlCTl9tb2RfZXhwOworKwkJQk5fbW9kX2V4cF9tb250OworKwkJQk5fbW9kX2V4cF9zaW1wbGU7CisrCQlCTl9tb2RfaW52ZXJzZTsKKysJCUJOX21vZF9tdWw7CisrCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7CisrCQlCTl9tb2Rfd29yZDsKKysJCUJOX211bDsKKysJCUJOX25ldzsKKysJCUJOX251bV9iaXRzOworKwkJQk5fbnVtX2JpdHNfd29yZDsKKysJCUJOX29wdGlvbnM7CisrCQlCTl9wcmludDsKKysJCUJOX3ByaW50X2ZwOworKwkJQk5fcmFuZDsKKysJCUJOX3JlY2lwcm9jYWw7CisrCQlCTl9yc2hpZnQ7CisrCQlCTl9yc2hpZnQxOworKwkJQk5fc2V0X2JpdDsKKysJCUJOX3NldF93b3JkOworKwkJQk5fc3FyOworKwkJQk5fc3ViOworKwkJQk5fdG9fQVNOMV9JTlRFR0VSOworKwkJQk5fdWNtcDsKKysJCUJOX3ZhbHVlX29uZTsKKysJCUJVRl9NRU1fZnJlZTsKKysJCUJVRl9NRU1fZ3JvdzsKKysJCUJVRl9NRU1fbmV3OworKwkJQlVGX3N0cmR1cDsKKysJCUNPTkZfZnJlZTsKKysJCUNPTkZfZ2V0X251bWJlcjsKKysJCUNPTkZfZ2V0X3NlY3Rpb247CisrCQlDT05GX2dldF9zdHJpbmc7CisrCQlDT05GX2xvYWQ7CisrCQlDUllQVE9fYWRkX2xvY2s7CisrCQlDUllQVE9fZGJnX2ZyZWU7CisrCQlDUllQVE9fZGJnX21hbGxvYzsKKysJCUNSWVBUT19kYmdfcmVhbGxvYzsKKysJCUNSWVBUT19kYmdfcmVtYWxsb2M7CisrCQlDUllQVE9fZnJlZTsKKysJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7CisrCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fbG9jazsKKysJCUNSWVBUT19tYWxsb2M7CisrCQlDUllQVE9fbWVtX2N0cmw7CisrCQlDUllQVE9fbWVtX2xlYWtzOworKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKKysJCUNSWVBUT19tZW1fbGVha3NfZnA7CisrCQlDUllQVE9fcmVhbGxvYzsKKysJCUNSWVBUT19yZW1hbGxvYzsKKysJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX3RocmVhZF9pZDsKKysJCURIX2NoZWNrOworKwkJREhfY29tcHV0ZV9rZXk7CisrCQlESF9mcmVlOworKwkJREhfZ2VuZXJhdGVfa2V5OworKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKKysJCURIX25ldzsKKysJCURIX3NpemU7CisrCQlESHBhcmFtc19wcmludDsKKysJCURIcGFyYW1zX3ByaW50X2ZwOworKwkJRFNBX2ZyZWU7CisrCQlEU0FfZ2VuZXJhdGVfa2V5OworKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7CisrCQlEU0FfaXNfcHJpbWU7CisrCQlEU0FfbmV3OworKwkJRFNBX3ByaW50OworKwkJRFNBX3ByaW50X2ZwOworKwkJRFNBX3NpZ247CisrCQlEU0Ffc2lnbl9zZXR1cDsKKysJCURTQV9zaXplOworKwkJRFNBX3ZlcmlmeTsKKysJCURTQXBhcmFtc19wcmludDsKKysJCURTQXBhcmFtc19wcmludF9mcDsKKysJCUVSUl9jbGVhcl9lcnJvcjsKKysJCUVSUl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfZnJlZV9zdHJpbmdzOworKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOworKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7CisrCQlFUlJfZ2V0X2Vycm9yOworKwkJRVJSX2dldF9lcnJvcl9saW5lOworKwkJRVJSX2dldF9zdGF0ZTsKKysJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOworKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKKysJCUVSUl9sb2FkX0JOX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0RIX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKKysJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOworKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKKysJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOworKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKKysJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOworKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOworKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9zdHJpbmdzOworKwkJRVJSX3BlZWtfZXJyb3I7CisrCQlFUlJfcGVla19lcnJvcl9saW5lOworKwkJRVJSX3ByaW50X2Vycm9yczsKKysJCUVSUl9wcmludF9lcnJvcnNfZnA7CisrCQlFUlJfcHV0X2Vycm9yOworKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfcmVtb3ZlX3N0YXRlOworKwkJRVZQX0J5dGVzVG9LZXk7CisrCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOworKwkJRVZQX0NpcGhlckZpbmFsOworKwkJRVZQX0NpcGhlckluaXQ7CisrCQlFVlBfQ2lwaGVyVXBkYXRlOworKwkJRVZQX0RlY29kZUJsb2NrOworKwkJRVZQX0RlY29kZUZpbmFsOworKwkJRVZQX0RlY29kZUluaXQ7CisrCQlFVlBfRGVjb2RlVXBkYXRlOworKwkJRVZQX0RlY3J5cHRGaW5hbDsKKysJCUVWUF9EZWNyeXB0SW5pdDsKKysJCUVWUF9EZWNyeXB0VXBkYXRlOworKwkJRVZQX0RpZ2VzdEZpbmFsOworKwkJRVZQX0RpZ2VzdEluaXQ7CisrCQlFVlBfRGlnZXN0VXBkYXRlOworKwkJRVZQX0VuY29kZUJsb2NrOworKwkJRVZQX0VuY29kZUZpbmFsOworKwkJRVZQX0VuY29kZUluaXQ7CisrCQlFVlBfRW5jb2RlVXBkYXRlOworKwkJRVZQX0VuY3J5cHRGaW5hbDsKKysJCUVWUF9FbmNyeXB0SW5pdDsKKysJCUVWUF9FbmNyeXB0VXBkYXRlOworKwkJRVZQX09wZW5GaW5hbDsKKysJCUVWUF9PcGVuSW5pdDsKKysJCUVWUF9QS0VZX2Fzc2lnbjsKKysJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX2ZyZWU7CisrCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9uZXc7CisrCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9zaXplOworKwkJRVZQX1BLRVlfdHlwZTsKKysJCUVWUF9TZWFsRmluYWw7CisrCQlFVlBfU2VhbEluaXQ7CisrCQlFVlBfU2lnbkZpbmFsOworKwkJRVZQX1ZlcmlmeUZpbmFsOworKwkJRVZQX2FkZF9hbGlhczsKKysJCUVWUF9hZGRfY2lwaGVyOworKwkJRVZQX2FkZF9kaWdlc3Q7CisrCQlFVlBfYmZfY2JjOworKwkJRVZQX2JmX2NmYjY0OworKwkJRVZQX2JmX2VjYjsKKysJCUVWUF9iZl9vZmI7CisrCQlFVlBfY2xlYW51cDsKKysJCUVWUF9kZXNfY2JjOworKwkJRVZQX2Rlc19jZmI2NDsKKysJCUVWUF9kZXNfZWNiOworKwkJRVZQX2Rlc19lZGU7CisrCQlFVlBfZGVzX2VkZTM7CisrCQlFVlBfZGVzX2VkZTNfY2JjOworKwkJRVZQX2Rlc19lZGUzX2NmYjY0OworKwkJRVZQX2Rlc19lZGUzX29mYjsKKysJCUVWUF9kZXNfZWRlX2NiYzsKKysJCUVWUF9kZXNfZWRlX2NmYjY0OworKwkJRVZQX2Rlc19lZGVfb2ZiOworKwkJRVZQX2Rlc19vZmI7CisrCQlFVlBfZGVzeF9jYmM7CisrCQlFVlBfZHNzOworKwkJRVZQX2RzczE7CisrCQlFVlBfZW5jX251bGw7CisrCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKKysJCUVWUF9nZXRfZGlnZXN0YnluYW1lOworKwkJRVZQX2dldF9wd19wcm9tcHQ7CisrCQlFVlBfaWRlYV9jYmM7CisrCQlFVlBfaWRlYV9jZmI2NDsKKysJCUVWUF9pZGVhX2VjYjsKKysJCUVWUF9pZGVhX29mYjsKKysJCUVWUF9tZDI7CisrCQlFVlBfbWQ1OworKwkJRVZQX21kX251bGw7CisrCQlFVlBfcmMyX2NiYzsKKysJCUVWUF9yYzJfY2ZiNjQ7CisrCQlFVlBfcmMyX2VjYjsKKysJCUVWUF9yYzJfb2ZiOworKwkJRVZQX3JjNDsKKysJCUVWUF9yZWFkX3B3X3N0cmluZzsKKysJCUVWUF9zZXRfcHdfcHJvbXB0OworKwkJRVZQX3NoYTsKKysJCUVWUF9zaGExOworKwkJTUQyOworKwkJTUQyX0ZpbmFsOworKwkJTUQyX0luaXQ7CisrCQlNRDJfVXBkYXRlOworKwkJTUQyX29wdGlvbnM7CisrCQlNRDU7CisrCQlNRDVfRmluYWw7CisrCQlNRDVfSW5pdDsKKysJCU1ENV9VcGRhdGU7CisrCQlNREMyOworKwkJTURDMl9GaW5hbDsKKysJCU1EQzJfSW5pdDsKKysJCU1EQzJfVXBkYXRlOworKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0FDX25ldzsKKysJCU5FVFNDQVBFX1NQS0lfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0lfbmV3OworKwkJTkVUU0NBUEVfU1BLSV9zaWduOworKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7CisrCQlPQkpfYWRkX29iamVjdDsKKysJCU9CSl9ic2VhcmNoOworKwkJT0JKX2NsZWFudXA7CisrCQlPQkpfY21wOworKwkJT0JKX2NyZWF0ZTsKKysJCU9CSl9kdXA7CisrCQlPQkpfbG4ybmlkOworKwkJT0JKX25ld19uaWQ7CisrCQlPQkpfbmlkMmxuOworKwkJT0JKX25pZDJvYmo7CisrCQlPQkpfbmlkMnNuOworKwkJT0JKX29iajJuaWQ7CisrCQlPQkpfc24ybmlkOworKwkJT0JKX3R4dDJuaWQ7CisrCQlQRU1fQVNOMV9yZWFkOworKwkJUEVNX0FTTjFfcmVhZF9iaW87CisrCQlQRU1fQVNOMV93cml0ZTsKKysJCVBFTV9BU04xX3dyaXRlX2JpbzsKKysJCVBFTV9TZWFsRmluYWw7CisrCQlQRU1fU2VhbEluaXQ7CisrCQlQRU1fU2VhbFVwZGF0ZTsKKysJCVBFTV9TaWduRmluYWw7CisrCQlQRU1fU2lnbkluaXQ7CisrCQlQRU1fU2lnblVwZGF0ZTsKKysJCVBFTV9YNTA5X0lORk9fcmVhZDsKKysJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87CisrCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKKysJCVBFTV9kZWtfaW5mbzsKKysJCVBFTV9kb19oZWFkZXI7CisrCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKKysJCVBFTV9wcm9jX3R5cGU7CisrCQlQRU1fcmVhZDsKKysJCVBFTV9yZWFkX0RIcGFyYW1zOworKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX1BLQ1M3OworKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9YNTA5OworKwkJUEVNX3JlYWRfWDUwOV9DUkw7CisrCQlQRU1fcmVhZF9YNTA5X1JFUTsKKysJCVBFTV9yZWFkX2JpbzsKKysJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19QS0NTNzsKKysJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fWDUwOTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKKysJCVBFTV93cml0ZTsKKysJCVBFTV93cml0ZV9ESHBhcmFtczsKKysJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKKysJCVBFTV93cml0ZV9QS0NTNzsKKysJCVBFTV93cml0ZV9Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfWDUwOTsKKysJCVBFTV93cml0ZV9YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9YNTA5X1JFUTsKKysJCVBFTV93cml0ZV9iaW87CisrCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOworKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OworKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7CisrCQlQS0NTN19ESUdFU1RfZnJlZTsKKysJCVBLQ1M3X0RJR0VTVF9uZXc7CisrCQlQS0NTN19FTkNSWVBUX2ZyZWU7CisrCQlQS0NTN19FTkNSWVBUX25ldzsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7CisrCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7CisrCQlQS0NTN19FTlZFTE9QRV9mcmVlOworKwkJUEtDUzdfRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OworKwkJUEtDUzdfU0lHTkVEX2ZyZWU7CisrCQlQS0NTN19TSUdORURfbmV3OworKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfZHVwOworKwkJUEtDUzdfZnJlZTsKKysJCVBLQ1M3X25ldzsKKysJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX2ZyZWU7CisrCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX25ldzsKKysJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7CisrCQlQUk9YWV9hZGRfbm9wcm94eTsKKysJCVBST1hZX2FkZF9zZXJ2ZXI7CisrCQlQUk9YWV9jaGVja19ieV9ob3N0OworKwkJUFJPWFlfY2hlY2tfdXJsOworKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX2ZyZWU7CisrCQlQUk9YWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX2dldF9wcm94aWVzOworKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OworKwkJUFJPWFlfbG9hZF9jb25mOworKwkJUFJPWFlfbmV3OworKwkJUFJPWFlfcHJpbnQ7CisrCQlSQU5EX2J5dGVzOworKwkJUkFORF9jbGVhbnVwOworKwkJUkFORF9maWxlX25hbWU7CisrCQlSQU5EX2xvYWRfZmlsZTsKKysJCVJBTkRfc2NyZWVuOworKwkJUkFORF9zZWVkOworKwkJUkFORF93cml0ZV9maWxlOworKwkJUkMyX2NiY19lbmNyeXB0OworKwkJUkMyX2NmYjY0X2VuY3J5cHQ7CisrCQlSQzJfZWNiX2VuY3J5cHQ7CisrCQlSQzJfZW5jcnlwdDsKKysJCVJDMl9vZmI2NF9lbmNyeXB0OworKwkJUkMyX3NldF9rZXk7CisrCQlSQzQ7CisrCQlSQzRfb3B0aW9uczsKKysJCVJDNF9zZXRfa2V5OworKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7CisrCQlSU0FQcml2YXRlS2V5X2R1cDsKKysJCVJTQVB1YmxpY0tleV9kdXA7CisrCQlSU0FfUEtDUzFfU1NMZWF5OworKwkJUlNBX2ZyZWU7CisrCQlSU0FfZ2VuZXJhdGVfa2V5OworKwkJUlNBX25ldzsKKysJCVJTQV9uZXdfbWV0aG9kOworKwkJUlNBX3ByaW50OworKwkJUlNBX3ByaW50X2ZwOworKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKKysJCVJTQV9wcml2YXRlX2VuY3J5cHQ7CisrCQlSU0FfcHVibGljX2RlY3J5cHQ7CisrCQlSU0FfcHVibGljX2VuY3J5cHQ7CisrCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUlNBX3NpZ247CisrCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKKysJCVJTQV9zaXplOworKwkJUlNBX3ZlcmlmeTsKKysJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlTSEE7CisrCQlTSEExOworKwkJU0hBMV9GaW5hbDsKKysJCVNIQTFfSW5pdDsKKysJCVNIQTFfVXBkYXRlOworKwkJU0hBX0ZpbmFsOworKwkJU0hBX0luaXQ7CisrCQlTSEFfVXBkYXRlOworKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7CisrCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKKysJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOworKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKKysJCVRYVF9EQl9mcmVlOworKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKKysJCVRYVF9EQl9pbnNlcnQ7CisrCQlUWFRfREJfcmVhZDsKKysJCVRYVF9EQl93cml0ZTsKKysJCVg1MDlfQUxHT1JfZnJlZTsKKysJCVg1MDlfQUxHT1JfbmV3OworKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKKysJCVg1MDlfQVRUUklCVVRFX25ldzsKKysJCVg1MDlfQ0lORl9mcmVlOworKwkJWDUwOV9DSU5GX25ldzsKKysJCVg1MDlfQ1JMX0lORk9fZnJlZTsKKysJCVg1MDlfQ1JMX0lORk9fbmV3OworKwkJWDUwOV9DUkxfYWRkX2V4dDsKKysJCVg1MDlfQ1JMX2NtcDsKKysJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7CisrCQlYNTA5X0NSTF9kdXA7CisrCQlYNTA5X0NSTF9mcmVlOworKwkJWDUwOV9DUkxfZ2V0X2V4dDsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfQ1JMX25ldzsKKysJCVg1MDlfQ1JMX3NpZ247CisrCQlYNTA5X0NSTF92ZXJpZnk7CisrCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfRVhURU5TSU9OX2R1cDsKKysJCVg1MDlfRVhURU5TSU9OX2ZyZWU7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7CisrCQlYNTA5X0VYVEVOU0lPTl9uZXc7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7CisrCQlYNTA5X0lORk9fZnJlZTsKKysJCVg1MDlfSU5GT19uZXc7CisrCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKKysJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OworKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKKysJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7CisrCQlYNTA5X0xPT0tVUF9jdHJsOworKwkJWDUwOV9MT09LVVBfZmlsZTsKKysJCVg1MDlfTE9PS1VQX2ZyZWU7CisrCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKKysJCVg1MDlfTE9PS1VQX2luaXQ7CisrCQlYNTA5X0xPT0tVUF9uZXc7CisrCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKKysJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X05BTUVfRU5UUllfZHVwOworKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9FTlRSWV9uZXc7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnk7CisrCQlYNTA5X05BTUVfY21wOworKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKKysJCVg1MDlfTkFNRV9kaWdlc3Q7CisrCQlYNTA5X05BTUVfZHVwOworKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OworKwkJWDUwOV9OQU1FX2ZyZWU7CisrCQlYNTA5X05BTUVfZ2V0X2VudHJ5OworKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKKysJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOworKwkJWDUwOV9OQU1FX2hhc2g7CisrCQlYNTA5X05BTUVfbmV3OworKwkJWDUwOV9OQU1FX29uZWxpbmU7CisrCQlYNTA5X05BTUVfcHJpbnQ7CisrCQlYNTA5X05BTUVfc2V0OworKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKKysJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7CisrCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7CisrCQlYNTA5X1BLRVlfZnJlZTsKKysJCVg1MDlfUEtFWV9uZXc7CisrCQlYNTA5X1BVQktFWV9mcmVlOworKwkJWDUwOV9QVUJLRVlfZ2V0OworKwkJWDUwOV9QVUJLRVlfbmV3OworKwkJWDUwOV9QVUJLRVlfc2V0OworKwkJWDUwOV9SRVFfSU5GT19mcmVlOworKwkJWDUwOV9SRVFfSU5GT19uZXc7CisrCQlYNTA5X1JFUV9kdXA7CisrCQlYNTA5X1JFUV9mcmVlOworKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKKysJCVg1MDlfUkVRX25ldzsKKysJCVg1MDlfUkVRX3ByaW50OworKwkJWDUwOV9SRVFfcHJpbnRfZnA7CisrCQlYNTA5X1JFUV9zZXRfcHVia2V5OworKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfUkVRX3NldF92ZXJzaW9uOworKwkJWDUwOV9SRVFfc2lnbjsKKysJCVg1MDlfUkVRX3RvX1g1MDk7CisrCQlYNTA5X1JFUV92ZXJpZnk7CisrCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKKysJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OworKwkJWDUwOV9SRVZPS0VEX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7CisrCQlYNTA5X1JFVk9LRURfbmV3OworKwkJWDUwOV9TSUdfZnJlZTsKKysJCVg1MDlfU0lHX25ldzsKKysJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7CisrCQlYNTA5X1NUT1JFX0NUWF9pbml0OworKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKKysJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKKysJCVg1MDlfU1RPUkVfZnJlZTsKKysJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7CisrCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOworKwkJWDUwOV9TVE9SRV9uZXc7CisrCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOworKwkJWDUwOV9WQUxfZnJlZTsKKysJCVg1MDlfVkFMX25ldzsKKysJCVg1MDlfYWRkX2V4dDsKKysJCVg1MDlfYXNuMV9tZXRoOworKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOworKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKKysJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKKysJCVg1MDlfZGVsZXRlX2V4dDsKKysJCVg1MDlfZGlnZXN0OworKwkJWDUwOV9kdXA7CisrCQlYNTA5X2ZyZWU7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OworKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKKysJCVg1MDlfZ2V0X2V4dDsKKysJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7CisrCQlYNTA5X2dldF9wdWJrZXk7CisrCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKKysJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfZ210aW1lX2FkajsKKysJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOworKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7CisrCQlYNTA5X2xvYWRfY2VydF9maWxlOworKwkJWDUwOV9uZXc7CisrCQlYNTA5X3ByaW50OworKwkJWDUwOV9wcmludF9mcDsKKysJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOworKwkJWDUwOV9zZXRfbm90QWZ0ZXI7CisrCQlYNTA5X3NldF9ub3RCZWZvcmU7CisrCQlYNTA5X3NldF9wdWJrZXk7CisrCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7CisrCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7CisrCQlYNTA5X3NldF92ZXJzaW9uOworKwkJWDUwOV9zaWduOworKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOworKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKKysJCVg1MDlfdG9fWDUwOV9SRVE7CisrCQlYNTA5X3ZlcmlmeTsKKysJCVg1MDlfdmVyaWZ5X2NlcnQ7CisrCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKKysJCVg1MDl2M19hZGRfZXh0OworKwkJWDUwOXYzX2FkZF9leHRlbnNpb247CisrCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOworKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKKysJCVg1MDl2M19kZWxldGVfZXh0OworKwkJWDUwOXYzX2dldF9leHQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDl2M19nZXRfZXh0X2NvdW50OworKwkJWDUwOXYzX3BhY2tfc3RyaW5nOworKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKKysJCVg1MDl2M191bnBhY2tfc3RyaW5nOworKwkJX2Rlc19jcnlwdDsKKysJCWEyZF9BU04xX09CSkVDVDsKKysJCWEyaV9BU04xX0lOVEVHRVI7CisrCQlhMmlfQVNOMV9TVFJJTkc7CisrCQlhc24xX0ZpbmlzaDsKKysJCWFzbjFfR2V0U2VxdWVuY2U7CisrCQlibl9kaXZfd29yZHM7CisrCQlibl9leHBhbmQyOworKwkJYm5fbXVsX2FkZF93b3JkczsKKysJCWJuX211bF93b3JkczsKKysJCUJOX3VhZGQ7CisrCQlCTl91c3ViOworKwkJYm5fc3FyX3dvcmRzOworKwkJX29zc2xfb2xkX2NyeXB0OworKwkJZDJpX0FTTjFfQklUX1NUUklORzsKKysJCWQyaV9BU04xX0JPT0xFQU47CisrCQlkMmlfQVNOMV9IRUFERVI7CisrCQlkMmlfQVNOMV9JQTVTVFJJTkc7CisrCQlkMmlfQVNOMV9JTlRFR0VSOworKwkJZDJpX0FTTjFfT0JKRUNUOworKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOworKwkJZDJpX0FTTjFfU0VUOworKwkJZDJpX0FTTjFfVDYxU1RSSU5HOworKwkJZDJpX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1VUQ1RJTUU7CisrCQlkMmlfQVNOMV9ieXRlczsKKysJCWQyaV9BU04xX3R5cGVfYnl0ZXM7CisrCQlkMmlfREhwYXJhbXM7CisrCQlkMmlfRFNBUHJpdmF0ZUtleTsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX0RTQVB1YmxpY0tleTsKKysJCWQyaV9EU0FwYXJhbXM7CisrCQlkMmlfTkVUU0NBUEVfU1BLQUM7CisrCQlkMmlfTkVUU0NBUEVfU1BLSTsKKysJCWQyaV9OZXRzY2FwZV9SU0E7CisrCQlkMmlfUEtDUzc7CisrCQlkMmlfUEtDUzdfRElHRVNUOworKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7CisrCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7CisrCQlkMmlfUEtDUzdfRU5WRUxPUEU7CisrCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7CisrCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWQyaV9QS0NTN19TSUdORUQ7CisrCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKKysJCWQyaV9QS0NTN19iaW87CisrCQlkMmlfUEtDUzdfZnA7CisrCQlkMmlfUHJpdmF0ZUtleTsKKysJCWQyaV9QdWJsaWNLZXk7CisrCQlkMmlfUlNBUHJpdmF0ZUtleTsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX1JTQVB1YmxpY0tleTsKKysJCWQyaV9YNTA5OworKwkJZDJpX1g1MDlfQUxHT1I7CisrCQlkMmlfWDUwOV9BVFRSSUJVVEU7CisrCQlkMmlfWDUwOV9DSU5GOworKwkJZDJpX1g1MDlfQ1JMOworKwkJZDJpX1g1MDlfQ1JMX0lORk87CisrCQlkMmlfWDUwOV9DUkxfYmlvOworKwkJZDJpX1g1MDlfQ1JMX2ZwOworKwkJZDJpX1g1MDlfRVhURU5TSU9OOworKwkJZDJpX1g1MDlfTkFNRTsKKysJCWQyaV9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfWDUwOV9QS0VZOworKwkJZDJpX1g1MDlfUFVCS0VZOworKwkJZDJpX1g1MDlfUkVROworKwkJZDJpX1g1MDlfUkVRX0lORk87CisrCQlkMmlfWDUwOV9SRVFfYmlvOworKwkJZDJpX1g1MDlfUkVRX2ZwOworKwkJZDJpX1g1MDlfUkVWT0tFRDsKKysJCWQyaV9YNTA5X1NJRzsKKysJCWQyaV9YNTA5X1ZBTDsKKysJCWQyaV9YNTA5X2JpbzsKKysJCWQyaV9YNTA5X2ZwOworKwkJREVTX2NiY19ja3N1bTsKKysJCURFU19jYmNfZW5jcnlwdDsKKysJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKKysJCURFU19jZmI2NF9lbmNyeXB0OworKwkJREVTX2NmYl9lbmNyeXB0OworKwkJREVTX2RlY3J5cHQzOworKwkJREVTX2VjYjNfZW5jcnlwdDsKKysJCURFU19lY2JfZW5jcnlwdDsKKysJCURFU19lZGUzX2NiY19lbmNyeXB0OworKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfZW5jX3JlYWQ7CisrCQlERVNfZW5jX3dyaXRlOworKwkJREVTX2VuY3J5cHQxOworKwkJREVTX2VuY3J5cHQyOworKwkJREVTX2VuY3J5cHQzOworKwkJREVTX2ZjcnlwdDsKKysJCURFU19pc193ZWFrX2tleTsKKysJCURFU19rZXlfc2NoZWQ7CisrCQlERVNfbmNiY19lbmNyeXB0OworKwkJREVTX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfb2ZiX2VuY3J5cHQ7CisrCQlERVNfb3B0aW9uczsKKysJCURFU19wY2JjX2VuY3J5cHQ7CisrCQlERVNfcXVhZF9ja3N1bTsKKysJCURFU19yYW5kb21fa2V5OworKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKKysJCURFU19zZXRfa2V5OworKwkJREVTX3NldF9vZGRfcGFyaXR5OworKwkJREVTX3N0cmluZ190b18ya2V5czsKKysJCURFU19zdHJpbmdfdG9fa2V5OworKwkJREVTX3hjYmNfZW5jcnlwdDsKKysJCURFU194d2hpdGVfaW4yb3V0OworKwkJZmNyeXB0X2JvZHk7CisrCQlpMmFfQVNOMV9JTlRFR0VSOworKwkJaTJhX0FTTjFfT0JKRUNUOworKwkJaTJhX0FTTjFfU1RSSU5HOworKwkJaTJkX0FTTjFfQklUX1NUUklORzsKKysJCWkyZF9BU04xX0JPT0xFQU47CisrCQlpMmRfQVNOMV9IRUFERVI7CisrCQlpMmRfQVNOMV9JQTVTVFJJTkc7CisrCQlpMmRfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfT0JKRUNUOworKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOworKwkJaTJkX0FTTjFfUFJJTlRBQkxFOworKwkJaTJkX0FTTjFfU0VUOworKwkJaTJkX0FTTjFfVFlQRTsKKysJCWkyZF9BU04xX1VUQ1RJTUU7CisrCQlpMmRfQVNOMV9ieXRlczsKKysJCWkyZF9ESHBhcmFtczsKKysJCWkyZF9EU0FQcml2YXRlS2V5OworKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfRFNBUHVibGljS2V5OworKwkJaTJkX0RTQXBhcmFtczsKKysJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKKysJCWkyZF9ORVRTQ0FQRV9TUEtJOworKwkJaTJkX05ldHNjYXBlX1JTQTsKKysJCWkyZF9QS0NTNzsKKysJCWkyZF9QS0NTN19ESUdFU1Q7CisrCQlpMmRfUEtDUzdfRU5DUllQVDsKKysJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKKysJCWkyZF9QS0NTN19FTlZFTE9QRTsKKysJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKKysJCWkyZF9QS0NTN19SRUNJUF9JTkZPOworKwkJaTJkX1BLQ1M3X1NJR05FRDsKKysJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKKysJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOworKwkJaTJkX1BLQ1M3X2JpbzsKKysJCWkyZF9QS0NTN19mcDsKKysJCWkyZF9Qcml2YXRlS2V5OworKwkJaTJkX1B1YmxpY0tleTsKKysJCWkyZF9SU0FQcml2YXRlS2V5OworKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfUlNBUHVibGljS2V5OworKwkJaTJkX1g1MDk7CisrCQlpMmRfWDUwOV9BTEdPUjsKKysJCWkyZF9YNTA5X0FUVFJJQlVURTsKKysJCWkyZF9YNTA5X0NJTkY7CisrCQlpMmRfWDUwOV9DUkw7CisrCQlpMmRfWDUwOV9DUkxfSU5GTzsKKysJCWkyZF9YNTA5X0NSTF9iaW87CisrCQlpMmRfWDUwOV9DUkxfZnA7CisrCQlpMmRfWDUwOV9FWFRFTlNJT047CisrCQlpMmRfWDUwOV9OQU1FOworKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKKysJCWkyZF9YNTA5X1BLRVk7CisrCQlpMmRfWDUwOV9QVUJLRVk7CisrCQlpMmRfWDUwOV9SRVE7CisrCQlpMmRfWDUwOV9SRVFfSU5GTzsKKysJCWkyZF9YNTA5X1JFUV9iaW87CisrCQlpMmRfWDUwOV9SRVFfZnA7CisrCQlpMmRfWDUwOV9SRVZPS0VEOworKwkJaTJkX1g1MDlfU0lHOworKwkJaTJkX1g1MDlfVkFMOworKwkJaTJkX1g1MDlfYmlvOworKwkJaTJkX1g1MDlfZnA7CisrCQlpZGVhX2NiY19lbmNyeXB0OworKwkJaWRlYV9jZmI2NF9lbmNyeXB0OworKwkJaWRlYV9lY2JfZW5jcnlwdDsKKysJCWlkZWFfZW5jcnlwdDsKKysJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKKysJCWlkZWFfb3B0aW9uczsKKysJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OworKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7CisrCQlsaF9kZWxldGU7CisrCQlsaF9kb2FsbDsKKysJCWxoX2RvYWxsX2FyZzsKKysJCWxoX2ZyZWU7CisrCQlsaF9pbnNlcnQ7CisrCQlsaF9uZXc7CisrCQlsaF9ub2RlX3N0YXRzOworKwkJbGhfbm9kZV9zdGF0c19iaW87CisrCQlsaF9ub2RlX3VzYWdlX3N0YXRzOworKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87CisrCQlsaF9yZXRyaWV2ZTsKKysJCWxoX3N0YXRzOworKwkJbGhfc3RhdHNfYmlvOworKwkJbGhfc3RyaGFzaDsKKysJCXNrX2RlbGV0ZTsKKysJCXNrX2RlbGV0ZV9wdHI7CisrCQlza19kdXA7CisrCQlza19maW5kOworKwkJc2tfZnJlZTsKKysJCXNrX2luc2VydDsKKysJCXNrX25ldzsKKysJCXNrX3BvcDsKKysJCXNrX3BvcF9mcmVlOworKwkJc2tfcHVzaDsKKysJCXNrX3NldF9jbXBfZnVuYzsKKysJCXNrX3NoaWZ0OworKwkJc2tfdW5zaGlmdDsKKysJCXNrX3plcm87CisrCQlCSU9fZl9uYmlvX3Rlc3Q7CisrCQlBU04xX1RZUEVfZ2V0OworKwkJQVNOMV9UWVBFX3NldDsKKysJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7CisrCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7CisrCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKKysJCVBLQ1M3X2N0cmw7CisrCQlQS0NTN19zZXRfdHlwZTsKKysJCVBLQ1M3X3NldF9jb250ZW50OworKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OworKwkJUEtDUzdfYWRkX3NpZ25lcjsKKysJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKKysJCVBLQ1M3X2FkZF9jcmw7CisrCQlQS0NTN19jb250ZW50X25ldzsKKysJCVBLQ1M3X2RhdGFTaWduOworKwkJUEtDUzdfZGF0YVZlcmlmeTsKKysJCVBLQ1M3X2RhdGFJbml0OworKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKKysJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKKysJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKKysJCUVWUF9kZWxldGVfYWxpYXM7CisrCQlFVlBfbWRjMjsKKysJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKKysJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOworKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87CisrCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OworKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKKysJCWkyZF9SU0FQdWJsaWNLZXlfZnA7CisrCQlCSU9fY29weV9uZXh0X3JldHJ5OworKwkJUlNBX2ZsYWdzOworKwkJWDUwOV9TVE9SRV9hZGRfY3JsOworKwkJWDUwOV9sb2FkX2NybF9maWxlOworKwkJRVZQX3JjMl80MF9jYmM7CisrCQlFVlBfcmM0XzQwOworKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKKysJCUhNQUM7CisrCQlITUFDX0luaXQ7CisrCQlITUFDX1VwZGF0ZTsKKysJCUhNQUNfRmluYWw7CisrCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKKysJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOworKwkJSE1BQ19jbGVhbnVwOworKwkJQklPX3B0cl9jdHJsOworKwkJQklPX25ld19maWxlX2ludGVybmFsOworKwkJQklPX25ld19mcF9pbnRlcm5hbDsKKysJCUJJT19zX2ZpbGVfaW50ZXJuYWw7CisrCQlCTl9CTElORElOR19jb252ZXJ0OworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OworKwkJQk5fQkxJTkRJTkdfdXBkYXRlOworKwkJUlNBX2JsaW5kaW5nX29uOworKwkJUlNBX2JsaW5kaW5nX29mZjsKKysJCWkydF9BU04xX09CSkVDVDsKKysJCUJOX0JMSU5ESU5HX25ldzsKKysJCUJOX0JMSU5ESU5HX2ZyZWU7CisrCQlFVlBfY2FzdDVfY2JjOworKwkJRVZQX2Nhc3Q1X2NmYjY0OworKwkJRVZQX2Nhc3Q1X2VjYjsKKysJCUVWUF9jYXN0NV9vZmI7CisrCQlCRl9kZWNyeXB0OworKwkJQ0FTVF9zZXRfa2V5OworKwkJQ0FTVF9lbmNyeXB0OworKwkJQ0FTVF9kZWNyeXB0OworKwkJQ0FTVF9lY2JfZW5jcnlwdDsKKysJCUNBU1RfY2JjX2VuY3J5cHQ7CisrCQlDQVNUX2NmYjY0X2VuY3J5cHQ7CisrCQlDQVNUX29mYjY0X2VuY3J5cHQ7CisrCQlSQzJfZGVjcnlwdDsKKysJCU9CSl9jcmVhdGVfb2JqZWN0czsKKysJCUJOX2V4cDsKKysJCUJOX211bF93b3JkOworKwkJQk5fc3ViX3dvcmQ7CisrCQlCTl9kZWMyYm47CisrCQlCTl9ibjJkZWM7CisrCQlCSU9fZ2hibl9jdHJsOworKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKKysJCUNSWVBUT19nZXRfZXhfZGF0YTsKKysJCUNSWVBUT19zZXRfZXhfZGF0YTsKKysJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOworKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7CisrCQlFVlBfUEtFWV9iaXRzOworKwkJTUQ1X1RyYW5zZm9ybTsKKysJCVNIQTFfVHJhbnNmb3JtOworKwkJU0hBX1RyYW5zZm9ybTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7CisrCQlDUllQVE9fZHVwX2V4X2RhdGE7CisrCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7CisrCQlDUllQVE9fbmV3X2V4X2RhdGE7CisrCQlSU0Ffc2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKKysJCVJTQV9wYWRkaW5nX2FkZF9ub25lOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKKysJCWJuX2FkZF93b3JkczsKKysJCWQyaV9OZXRzY2FwZV9SU0FfMjsKKysJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OworKwkJUklQRU1EMTYwX0luaXQ7CisrCQlSSVBFTUQxNjBfVXBkYXRlOworKwkJUklQRU1EMTYwX0ZpbmFsOworKwkJUklQRU1EMTYwOworKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKKysJCVJDNV8zMl9zZXRfa2V5OworKwkJUkM1XzMyX2VjYl9lbmNyeXB0OworKwkJUkM1XzMyX2VuY3J5cHQ7CisrCQlSQzVfMzJfZGVjcnlwdDsKKysJCVJDNV8zMl9jYmNfZW5jcnlwdDsKKysJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OworKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7CisrCQlCTl9ibjJtcGk7CisrCQlCTl9tcGkyYm47CisrCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OworKwkJQklPX2dldF9leF9kYXRhOworKwkJQklPX2dldF9leF9uZXdfaW5kZXg7CisrCQlCSU9fc2V0X2V4X2RhdGE7CisrCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKKysJCVg1MDl2M19zZXRfa2V5X3VzYWdlOworKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7CisrCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKKysJCUVWUF9QS0VZX2RlY3J5cHQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0OworKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7CisrCQlQS0NTN19hZGRfcmVjaXBpZW50OworKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOworKwkJUEtDUzdfc2V0X2NpcGhlcjsKKysJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOworKwkJRVJSX2FkZF9lcnJvcl9kYXRhOworKwkJRVJSX3NldF9lcnJvcl9kYXRhOworKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOworKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOworKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKKysJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKKysJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKKysJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOworKwkJYXNuMV9hZGRfZXJyb3I7CisrCQlkMmlfQVNOMV9CTVBTVFJJTkc7CisrCQlpMmRfQVNOMV9CTVBTVFJJTkc7CisrCQlCSU9fZl9iZXI7CisrCQlCTl9pbml0OworKwkJQ09NUF9DVFhfbmV3OworKwkJQ09NUF9DVFhfZnJlZTsKKysJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOworKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCU9CSl9OQU1FX2FkZDsKKysJCUJJT19zb2NrZXRfbmJpbzsKKysJCUVWUF9yYzJfNjRfY2JjOworKwkJT0JKX05BTUVfY2xlYW51cDsKKysJCU9CSl9OQU1FX2dldDsKKysJCU9CSl9OQU1FX2luaXQ7CisrCQlPQkpfTkFNRV9uZXdfaW5kZXg7CisrCQlPQkpfTkFNRV9yZW1vdmU7CisrCQlCTl9NT05UX0NUWF9jb3B5OworKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7CisrCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7CisrCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOworKwkJUkFORF9TU0xlYXk7CisrCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKKysJCVJTQV9tZW1vcnlfbG9jazsKKysJCWJuX3N1Yl93b3JkczsKKysJCWJuX211bF9ub3JtYWw7CisrCQlibl9tdWxfY29tYmE4OworKwkJYm5fbXVsX2NvbWJhNDsKKysJCWJuX3Nxcl9ub3JtYWw7CisrCQlibl9zcXJfY29tYmE4OworKwkJYm5fc3FyX2NvbWJhNDsKKysJCWJuX2NtcF93b3JkczsKKysJCWJuX211bF9yZWN1cnNpdmU7CisrCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7CisrCQlibl9zcXJfcmVjdXJzaXZlOworKwkJYm5fbXVsX2xvd19ub3JtYWw7CisrCQlCTl9SRUNQX0NUWF9pbml0OworKwkJQk5fUkVDUF9DVFhfbmV3OworKwkJQk5fUkVDUF9DVFhfZnJlZTsKKysJCUJOX1JFQ1BfQ1RYX3NldDsKKysJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKKysJCUJOX21vZF9leHBfcmVjcDsKKysJCUJOX2Rpdl9yZWNwOworKwkJQk5fQ1RYX2luaXQ7CisrCQlCTl9NT05UX0NUWF9pbml0OworKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7CisrCQlQS0NTN19hZGRfYXR0cmlidXRlOworKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7CisrCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOworKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKKysJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOworKwkJQ09NUF9jb21wcmVzc19ibG9jazsKKysJCUNPTVBfZXhwYW5kX2Jsb2NrOworKwkJQ09NUF9ybGU7CisrCQlDT01QX3psaWI7CisrCQltc190aW1lX2RpZmY7CisrCQltc190aW1lX25ldzsKKysJCW1zX3RpbWVfZnJlZTsKKysJCW1zX3RpbWVfY21wOworKwkJbXNfdGltZV9nZXQ7CisrCQlQS0NTN19zZXRfYXR0cmlidXRlczsKKysJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKKysJCVg1MDlfQVRUUklCVVRFX2R1cDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOworKwkJQVNOMV9USU1FX3ByaW50OworKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKKysJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7CisrCQlPQkpfdHh0Mm9iajsKKysJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKKysJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROworKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7CisrCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROworKwkJWDUwOVYzX0VYVF9hZGQ7CisrCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKKysJCVg1MDlWM19FWFRfYWRkX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NsZWFudXA7CisrCQlYNTA5VjNfRVhUX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NvbmZfbmlkOworKwkJWDUwOVYzX0VYVF9nZXQ7CisrCQlYNTA5VjNfRVhUX2dldF9uaWQ7CisrCQlYNTA5VjNfRVhUX3ByaW50OworKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKKysJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKKysJCVg1MDlWM19hZGRfdmFsdWU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKKysJCVg1MDlWM19jb25mX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKKysJCVg1MDlWM19wYXJzZV9saXN0OworKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOworKwkJZDJpX0FTTjFfVElNRTsKKysJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKKysJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJZDJpX2V4dF9rdTsKKysJCWV4dF9rdV9mcmVlOworKwkJZXh0X2t1X25ldzsKKysJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKKysJCWkyZF9BU04xX1RJTUU7CisrCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7CisrCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCWkyZF9leHRfa3U7CisrCQlFVlBfTURfQ1RYX2NvcHk7CisrCQlpMmRfQVNOMV9FTlVNRVJBVEVEOworKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKKysJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7CisrCQlBU04xX0VOVU1FUkFURURfZ2V0OworKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOworKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOworKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKKysJCWEyaV9BU04xX0VOVU1FUkFURUQ7CisrCQlpMmRfR0VORVJBTF9OQU1FOworKwkJZDJpX0dFTkVSQUxfTkFNRTsKKysJCUdFTkVSQUxfTkFNRV9uZXc7CisrCQlHRU5FUkFMX05BTUVfZnJlZTsKKysJCUdFTkVSQUxfTkFNRVNfbmV3OworKwkJR0VORVJBTF9OQU1FU19mcmVlOworKwkJZDJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMmRfR0VORVJBTF9OQU1FUzsKKysJCWkydl9HRU5FUkFMX05BTUVTOworKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOworKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOworKwkJaGV4X3RvX3N0cmluZzsKKysJCXN0cmluZ190b19oZXg7CisrCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7CisrCQlYNTA5X0NSTF9wcmludF9mcDsKKysJCVg1MDlfQ1JMX3ByaW50OworKwkJaTJ2X0dFTkVSQUxfTkFNRTsKKysJCXYyaV9HRU5FUkFMX05BTUU7CisrCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOworKwkJdjJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMnNfQVNOMV9JTlRFR0VSOworKwkJWDUwOVYzX0VYVF9kMmk7CisrCQluYW1lX2NtcDsKKysJCXN0cl9kdXA7CisrCQlpMnNfQVNOMV9FTlVNRVJBVEVEOworKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKKysJCUJJT19zX2xvZzsKKysJCUJJT19mX3JlbGlhYmxlOworKwkJUEtDUzdfZGF0YUZpbmFsOworKwkJUEtDUzdfZGF0YURlY29kZTsKKysJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOworKwkJQk5fc2V0X3BhcmFtczsKKysJCUJOX2dldF9wYXJhbXM7CisrCQlCSU9fZ2V0X2V4X251bTsKKysJCUJJT19zZXRfZXhfZnJlZV9mdW5jOworKwkJRVZQX3JpcGVtZDE2MDsKKysJCUFTTjFfVElNRV9zZXQ7CisrCQlpMmRfQVVUSE9SSVRZX0tFWUlEOworKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKKysJCUFVVEhPUklUWV9LRVlJRF9uZXc7CisrCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKKysJCUFTTjFfc2VxX3VucGFjazsKKysJCUFTTjFfc2VxX3BhY2s7CisrCQlBU04xX3VucGFja19zdHJpbmc7CisrCQlBU04xX3BhY2tfc3RyaW5nOworKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKKysJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKKysJCVBLQ1M4X2VuY3J5cHQ7CisrCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKKysJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKKysJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKKysJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKKysJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOworKwkJUEtDUzEyX3BiZV9jcnlwdDsKKysJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKKysJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKKysJCVBLQ1MxMl9pbml0OworKwkJUEtDUzEyX2tleV9nZW5fYXNjOworKwkJUEtDUzEyX2tleV9nZW5fdW5pOworKwkJUEtDUzEyX2dlbl9tYWM7CisrCQlQS0NTMTJfdmVyaWZ5X21hYzsKKysJCVBLQ1MxMl9zZXRfbWFjOworKwkJUEtDUzEyX3NldHVwX21hYzsKKysJCU9QRU5TU0xfYXNjMnVuaTsKKysJCU9QRU5TU0xfdW5pMmFzYzsKKysJCWkyZF9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX25ldzsKKysJCWQyaV9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX2ZyZWU7CisrCQlpMmRfUEtDUzEyOworKwkJZDJpX1BLQ1MxMjsKKysJCVBLQ1MxMl9uZXc7CisrCQlQS0NTMTJfZnJlZTsKKysJCWkyZF9QS0NTMTJfTUFDX0RBVEE7CisrCQlQS0NTMTJfTUFDX0RBVEFfbmV3OworKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKKysJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOworKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfbmV3OworKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOworKwkJUEtDUzEyX1BCRV9hZGQ7CisrCQlQS0NTOF9hZGRfa2V5dXNhZ2U7CisrCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOworKwkJUEtDUzEyX3BhcnNlOworKwkJUEtDUzEyX2NyZWF0ZTsKKysJCWkyZF9QS0NTMTJfYmlvOworKwkJaTJkX1BLQ1MxMl9mcDsKKysJCWQyaV9QS0NTMTJfYmlvOworKwkJZDJpX1BLQ1MxMl9mcDsKKysJCWkyZF9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX25ldzsKKysJCWQyaV9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX2ZyZWU7CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7CisrCQlFVlBfUEtDUzgyUEtFWTsKKysJCUVWUF9QS0VZMlBLQ1M4OworKwkJUEtDUzhfc2V0X2Jyb2tlbjsKKysJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKKysJCUVWUF9QQkVfYWxnX2FkZDsKKysJCVBLQ1M1X3BiZV9zZXQ7CisrCQlFVlBfUEJFX2NsZWFudXA7CisrCQlpMmRfU1hORVQ7CisrCQlkMmlfU1hORVQ7CisrCQlTWE5FVF9uZXc7CisrCQlTWE5FVF9mcmVlOworKwkJaTJkX1NYTkVUSUQ7CisrCQlkMmlfU1hORVRJRDsKKysJCVNYTkVUSURfbmV3OworKwkJU1hORVRJRF9mcmVlOworKwkJRFNBX1NJR19uZXc7CisrCQlEU0FfU0lHX2ZyZWU7CisrCQlEU0FfZG9fc2lnbjsKKysJCURTQV9kb192ZXJpZnk7CisrCQlkMmlfRFNBX1NJRzsKKysJCWkyZF9EU0FfU0lHOworKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKKysJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7CisrCQlpMmRfQVNOMV9VVEY4U1RSSU5HOworKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKKysJCWkyZF9ESVJFQ1RPUllTVFJJTkc7CisrCQlkMmlfRElSRUNUT1JZU1RSSU5HOworKwkJaTJkX0RJU1BMQVlURVhUOworKwkJZDJpX0RJU1BMQVlURVhUOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKKysJCWkyZF9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX25ldzsKKysJCWQyaV9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX2ZyZWU7CisrCQlpMmRfUEJFMlBBUkFNOworKwkJUEJFMlBBUkFNX25ldzsKKysJCWQyaV9QQkUyUEFSQU07CisrCQlQQkUyUEFSQU1fZnJlZTsKKysJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOworKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87CisrCQlTWE5FVF9hZGRfaWRfYXNjOworKwkJU1hORVRfYWRkX2lkX3Vsb25nOworKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7CisrCQlTWE5FVF9nZXRfaWRfYXNjOworKwkJU1hORVRfZ2V0X2lkX3Vsb25nOworKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7CisrCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7CisrCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOworKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7CisrCQlpMmRfUE9MSUNZSU5GTzsKKysJCVBPTElDWUlORk9fbmV3OworKwkJZDJpX1BPTElDWUlORk87CisrCQlQT0xJQ1lJTkZPX2ZyZWU7CisrCQlpMmRfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19uZXc7CisrCQlkMmlfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19mcmVlOworKwkJaTJkX1VTRVJOT1RJQ0U7CisrCQlVU0VSTk9USUNFX25ldzsKKysJCWQyaV9VU0VSTk9USUNFOworKwkJVVNFUk5PVElDRV9mcmVlOworKwkJaTJkX05PVElDRVJFRjsKKysJCU5PVElDRVJFRl9uZXc7CisrCQlkMmlfTk9USUNFUkVGOworKwkJTk9USUNFUkVGX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3N0cmluZzsKKysJCVg1MDlWM19nZXRfc2VjdGlvbjsKKysJCVg1MDlWM19zdHJpbmdfZnJlZTsKKysJCVg1MDlWM19zZWN0aW9uX2ZyZWU7CisrCQlYNTA5VjNfc2V0X2N0eDsKKysJCXMyaV9BU04xX0lOVEVHRVI7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19tYWxsb2NfbG9ja2VkOworKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOworKwkJQk5fbW9kX2V4cDJfbW9udDsKKysJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOworKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKKysJCVg1MDlfQUxHT1JfZHVwOworKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKKysJCWkyZF9DUkxfRElTVF9QT0lOVFM7CisrCQlDUkxfRElTVF9QT0lOVFNfbmV3OworKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7CisrCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOworKwkJaTJkX0RJU1RfUE9JTlQ7CisrCQlESVNUX1BPSU5UX25ldzsKKysJCWQyaV9ESVNUX1BPSU5UOworKwkJRElTVF9QT0lOVF9mcmVlOworKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKKysJCURJU1RfUE9JTlRfTkFNRV9uZXc7CisrCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKKysJCWQyaV9ESVNUX1BPSU5UX05BTUU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKKysJCVg1MDlWM19FWFRfaTJkOworKwkJWDUwOVYzX0VYVF92YWxfcHJuOworKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKKysJCUVWUF9DSVBIRVJfdHlwZTsKKysJCUVWUF9QQkVfQ2lwaGVySW5pdDsKKysJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKKysJCWQyaV9BU04xX1VJTlRFR0VSOworKwkJc2tfdmFsdWU7CisrCQlza19udW07CisrCQlza19zZXQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOworKwkJc2tfc29ydDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKKysJCVBLQ1M1X1BCRV9hZGQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OworKwkJaTJkX1BLQ1M4X2ZwOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCWQyaV9QS0NTOF9iaW87CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1BLQ1M4OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJZDJpX1BLQ1M4X2ZwOworKwkJUEVNX3dyaXRlX1BLQ1M4OworKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUEtDUzg7CisrCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzVfUEJFX2tleWl2Z2VuOworKwkJaTJkX1BLQ1M4X2JpbzsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJQklPX3NfYmlvOworKwkJUEtDUzVfcGJlMl9zZXQ7CisrCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOworKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OworKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKKysJCUJJT19jdHJsX3BlbmRpbmc7CisrCQlCSU9fY3RybF93cGVuZGluZzsKKysJCUJJT19uZXdfYmlvX3BhaXI7CisrCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOworKwkJQ1JZUFRPX251bV9sb2NrczsKKysJCUNPTkZfbG9hZF9iaW87CisrCQlDT05GX2xvYWRfZnA7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7CisrCQlSU0Ffc2V0X21ldGhvZDsKKysJCVJTQV9nZXRfbWV0aG9kOworKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCVJTQV9jaGVja19rZXk7CisrCQlPQkpfb2JqMnR4dDsKKysJCURTQV9kdXBfREg7CisrCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKKysJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKKysJCUJJT19ud3JpdGU7CisrCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOworKwkJQklPX25yZWFkOworKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOworKwkJQklPX253cml0ZTA7CisrCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7CisrCQlCSU9fbnJlYWQwOworKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7CisrCQlCSU9fbmV3X21lbV9idWY7CisrCQlESF9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9tZXRob2Q7CisrCQlEU0FfT3BlblNTTDsKKysJCURIX2dldF9leF9kYXRhOworKwkJREhfZ2V0X2V4X25ld19pbmRleDsKKysJCURTQV9uZXdfbWV0aG9kOworKwkJREhfbmV3X21ldGhvZDsKKysJCURIX09wZW5TU0w7CisrCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9nZXRfZXhfZGF0YTsKKysJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOworKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKKysJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKKysJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKKysJCVVURjhfcHV0YzsKKysJCVVURjhfZ2V0YzsKKysJCVJTQV9udWxsX21ldGhvZDsKKysJCUFTTjFfdGFnMnN0cjsKKysJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKKysJCURJU1BMQVlURVhUX25ldzsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7CisrCQlYNTA5X3NldF9leF9kYXRhOworKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOworKwkJWDUwOV9QVVJQT1NFX2dldDA7CisrCQlQRU1fcmVhZF9YNTA5X0FVWDsKKysJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlQRU1fd3JpdGVfUFVCS0VZOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKKysJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X2NsZWFyOworKwkJWDUwOV9UUlVTVF9hZGQ7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OworKwkJWDUwOV9hbGlhc19zZXQxOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKKysJCUVWUF9QS0VZX2dldDFfRFNBOworKwkJQVNOMV9CTVBTVFJJTkdfbmV3OworKwkJQVNOMV9tYnN0cmluZ19jb3B5OworKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKKysJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKKysJCURTQV9zZXRfbWV0aG9kOworKwkJWDUwOV9nZXRfZXhfZGF0YTsKKysJCUFTTjFfU1RSSU5HX3R5cGU7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOworKwkJQVNOMV9USU1FX2ZyZWU7CisrCQlBU04xX09DVEVUX1NUUklOR19jbXA7CisrCQlBU04xX0JJVF9TVFJJTkdfbmV3OworKwkJWDUwOV9nZXRfZXh0X2QyaTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKKysJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKKysJCUFTTjFfSU5URUdFUl9jbXA7CisrCQlkMmlfUlNBX1BVQktFWV9mcDsKKysJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7CisrCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1NUT1JFX0NUWF9mcmVlOworKwkJRVZQX1BLRVlfc2V0MV9EU0E7CisrCQlpMmRfRFNBX1BVQktFWV9mcDsKKysJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOworKwkJQVNOMV9USU1FX25ldzsKKysJCWkyZF9SU0FfUFVCS0VZOworKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OworKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKKysJCWQyaV9YNTA5X0FVWDsKKysJCWkyZF9EU0FfUFVCS0VZOworKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKKysJCVBFTV9yZWFkX0RTQV9QVUJLRVk7CisrCQlpMmRfUlNBX1BVQktFWV9iaW87CisrCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKKysJCWkyZF9QVUJLRVk7CisrCQlBU04xX1VUQ1RJTUVfZnJlZTsKKysJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7CisrCQlQRU1fcmVhZF9iaW9fUFVCS0VZOworKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7CisrCQlESVNQTEFZVEVYVF9mcmVlOworKwkJT1RIRVJOQU1FX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfbmV3OworKwkJWDUwOV9UUlVTVF9jbGVhbnVwOworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKKysJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7CisrCQlQRU1fcmVhZF9QVUJLRVk7CisrCQlpMmRfRFNBX1BVQktFWV9iaW87CisrCQlpMmRfT1RIRVJOQU1FOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOworKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OworKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKKysJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOworKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKKysJCUFTTjFfU1RSSU5HX2xlbmd0aDsKKysJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7CisrCQlYNTA5VjNfZ2V0X2QyaTsKKysJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOworKwkJaTJkX1g1MDlfQ0VSVF9BVVg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7CisrCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9TVE9SRV9DVFhfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9SU0E7CisrCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9YNTA5X0FVWDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKKysJCWQyaV9EU0FfUFVCS0VZX2ZwOworKwkJZDJpX1JTQV9QVUJLRVk7CisrCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKKysJCVg1MDlfVFJVU1RfZ2V0MDsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOworKwkJQVNOMV9JQTVTVFJJTkdfbmV3OworKwkJZDJpX0RTQV9QVUJLRVk7CisrCQlYNTA5X2NoZWNrX3B1cnBvc2U7CisrCQlBU04xX0VOVU1FUkFURURfbmV3OworKwkJZDJpX1JTQV9QVUJLRVlfYmlvOworKwkJZDJpX1BVQktFWTsKKysJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OworKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7CisrCQlBU04xX0JNUFNUUklOR19mcmVlOworKwkJQVNOMV9UNjFTVFJJTkdfbmV3OworKwkJQVNOMV9VVENUSU1FX25ldzsKKysJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlFVlBfUEtFWV9zZXQxX1JTQTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOworKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OworKwkJQ1JZUFRPX2FkZF9pbmZvOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7CisrCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9hbGlhc19nZXQwOworKwkJQVNOMV9TVFJJTkdfZGF0YTsKKysJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X3NldF9iaXQ7CisrCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKKysJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOworKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7CisrCQlYNTA5X2NoZWNrX3RydXN0OworKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfYWRkOworKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OworKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7CisrCQlkMmlfRFNBX1BVQktFWV9iaW87CisrCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKKysJCWQyaV9PVEhFUk5BTUU7CisrCQlYNTA5X3JlamVjdF9zZXRfYml0OworKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKKysJCUVWUF9QS0VZX3NldDFfREg7CisrCQlBU04xX09DVEVUX1NUUklOR19kdXA7CisrCQlBU04xX0JJVF9TVFJJTkdfc2V0OworKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7CisrCQlBU04xX0lOVEVHRVJfZnJlZTsKKysJCU9USEVSTkFNRV9mcmVlOworKwkJaTJkX1JTQV9QVUJLRVlfZnA7CisrCQlBU04xX0lOVEVHRVJfZHVwOworKwkJZDJpX1g1MDlfQ0VSVF9BVVg7CisrCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKKysJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOworKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7CisrCQlBU04xX21ic3RyaW5nX25jb3B5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9ESDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKKysJCUFTTjFfSU5URUdFUl9uZXc7CisrCQlpMmRfWDUwOV9BVVg7CisrCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKKysJCVg1MDlfY21wOworKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKKysJCURJUkVDVE9SWVNUUklOR19uZXc7CisrCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OworKwkJUEtDUzEyX25ld3Bhc3M7CisrCQlTTUlNRV93cml0ZV9QS0NTNzsKKysJCVNNSU1FX3JlYWRfUEtDUzc7CisrCQlERVNfc2V0X2tleV9jaGVja2VkOworKwkJUEtDUzdfdmVyaWZ5OworKwkJUEtDUzdfZW5jcnlwdDsKKysJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKKysJCVNNSU1FX2NybGZfY29weTsKKysJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKKysJCVBLQ1M3X2dldDBfc2lnbmVyczsKKysJCVBLQ1M3X2RlY3J5cHQ7CisrCQlTTUlNRV90ZXh0OworKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOworKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOworKwkJUEtDUzdfc2lnbjsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7CisrCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOworKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKKysJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKKysJCUNSWVBUT19pc19tZW1fY2hlY2tfb247CisrCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7CisrCQlDUllQVE9fcG9wX2luZm87CisrCQlDUllQVE9fcHVzaF9pbmZvXzsKKysJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJQVNOMV9OVUxMX2ZyZWU7CisrCQlkMmlfQVNOMV9OVUxMOworKwkJQVNOMV9OVUxMX25ldzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKKysJCWkyZF9BU04xX05VTEw7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKKysJCVBFTV9jYjsKKysJCWkyZF9Qcml2YXRlS2V5X2ZwOworKwkJZDJpX1ByaXZhdGVLZXlfYmlvOworKwkJZDJpX1ByaXZhdGVLZXlfZnA7CisrCQlpMmRfUHJpdmF0ZUtleV9iaW87CisrCQlYNTA5X3JlamVjdF9jbGVhcjsKKysJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7CisrCQlkMmlfQXV0b1ByaXZhdGVLZXk7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7CisrCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7CisrCQlYNTA5YXRfZ2V0X2F0dHI7CisrCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7CisrCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKKysJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyOworKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOworKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOworKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKKysJCVJBTkRfYWRkOworKwkJQklPX251bWJlcl93cml0dGVuOworKwkJQklPX251bWJlcl9yZWFkOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKKysJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKKysJCVJBTkRfcHNldWRvX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHI7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHI7CisrCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUJOX3BzZXVkb19yYW5kOworKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7CisrCQlCTl9DVFhfZW5kOworKwkJQk5fQ1RYX3N0YXJ0OworKwkJQk5fQ1RYX2dldDsKKysJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKKysJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKKysJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OworKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKKysJCURFU19jcnlwdDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOworKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKKysJCUJJT19jYWxsYmFja19jdHJsOworKwkJUkFORF9lZ2Q7CisrCQlSQU5EX3N0YXR1czsKKysJCWJuX2R1bXAxOworKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7CisrCQlsaF9udW1faXRlbXM7CisrCQlSQU5EX2V2ZW50OworKwkJRFNPX25ldzsKKysJCURTT19uZXdfbWV0aG9kOworKwkJRFNPX2ZyZWU7CisrCQlEU09fZmxhZ3M7CisrCQlEU09fdXA7CisrCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTT19nZXRfbWV0aG9kOworKwkJRFNPX3NldF9tZXRob2Q7CisrCQlEU09fbG9hZDsKKysJCURTT19iaW5kX3ZhcjsKKysJCURTT19NRVRIT0RfbnVsbDsKKysJCURTT19NRVRIT0Rfb3BlbnNzbDsKKysJCURTT19NRVRIT0RfZGxmY247CisrCQlEU09fTUVUSE9EX3dpbjMyOworKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7CisrCQlEU09fTUVUSE9EX2RsOworKwkJTkNPTkZfbG9hZDsKKysJCU5DT05GX2xvYWRfZnA7CisrCQlOQ09ORl9uZXc7CisrCQlOQ09ORl9nZXRfc3RyaW5nOworKwkJTkNPTkZfZnJlZTsKKysJCU5DT05GX2dldF9udW1iZXI7CisrCQlDT05GX2R1bXBfZnA7CisrCQlOQ09ORl9sb2FkX2JpbzsKKysJCU5DT05GX2R1bXBfZnA7CisrCQlOQ09ORl9nZXRfc2VjdGlvbjsKKysJCU5DT05GX2R1bXBfYmlvOworKwkJQ09ORl9kdW1wX2JpbzsKKysJCU5DT05GX2ZyZWVfZGF0YTsKKysJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRVJSX2Vycm9yX3N0cmluZ19uOworKwkJQklPX3NucHJpbnRmOworKwkJRFNPX2N0cmw7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OworKwkJQklPX3ZmcmVlOworKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKKysJCUFTTjFfVVRDVElNRV9nZXQ7CisrCQlYNTA5X1JFUV9kaWdlc3Q7CisrCQlYNTA5X0NSTF9kaWdlc3Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKKysJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7CisrCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKKysJCVJBTkRfZWdkX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZW1haWxfZnJlZTsKKysJCWkyZF9SU0FfTkVUOworKwkJZDJpX1JTQV9ORVRfMjsKKysJCWQyaV9SU0FfTkVUOworKwkJRFNPX2JpbmRfZnVuYzsKKysJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKKysJCXNrX25ld19udWxsOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKKysJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKKysJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKKysJCWMyaV9BU04xX0JJVF9TVFJJTkc7CisrCQlpMmNfQVNOMV9CSVRfU1RSSU5HOworKwkJUkFORF9wb2xsOworKwkJYzJpX0FTTjFfSU5URUdFUjsKKysJCWkyY19BU04xX0lOVEVHRVI7CisrCQlCSU9fZHVtcF9pbmRlbnQ7CisrCQlBU04xX3BhcnNlX2R1bXA7CisrCQljMmlfQVNOMV9PQkpFQ1Q7CisrCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7CisrCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKKysJCVg1MDlfTkFNRV9wcmludF9leDsKKysJCUFTTjFfU1RSSU5HX3ByaW50X2V4OworKwkJTUQ0OworKwkJTUQ0X1RyYW5zZm9ybTsKKysJCU1ENF9GaW5hbDsKKysJCU1ENF9VcGRhdGU7CisrCQlNRDRfSW5pdDsKKysJCUVWUF9tZDQ7CisrCQlpMmRfUFVCS0VZX2JpbzsKKysJCWkyZF9QVUJLRVlfZnA7CisrCQlkMmlfUFVCS0VZX2JpbzsKKysJCUFTTjFfU1RSSU5HX3RvX1VURjg7CisrCQlCSU9fdnByaW50ZjsKKysJCUJJT192c25wcmludGY7CisrCQlkMmlfUFVCS0VZX2ZwOworKwkJWDUwOV9jbXBfdGltZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7CisrCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKKysJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOworKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKKysJCVg1MDlfdGltZV9hZGo7CisrCQlYNTA5X2NoZWNrX2lzc3VlZDsKKysJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OworKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOworKwkJREVTX2NoZWNrX2tleTsKKysJCURFU19yd19tb2RlOworKwkJUlNBX1BLQ1MxX1JTQXJlZjsKKysJCVg1MDlfa2V5aWRfc2V0MTsKKysJCUJJT19uZXh0OworKwkJRFNPX01FVEhPRF92bXM7CisrCQlCSU9fZl9saW5lYnVmZmVyOworKwkJQk5fYm50ZXN0X3JhbmQ7CisrCQlPUEVOU1NMX2lzc2V0dWdpZDsKKysJCUJOX3JhbmRfcmFuZ2U7CisrCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKKysJCUVOR0lORV9zZXRfRFNBOworKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOworKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOworKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX3NldF9ESDsKKysJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2luaXQ7CisrCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9maW5pc2g7CisrCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OworKwkJRU5HSU5FX2dldF9ESDsKKysJCUVOR0lORV9jdHJsOworKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9nZXRfbmFtZTsKKysJCUVOR0lORV9nZXRfbGFzdDsKKysJCUVOR0lORV9nZXRfcHJldjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9nZXRfUlNBOworKwkJRU5HSU5FX3NldF9kZWZhdWx0OworKwkJRU5HSU5FX2dldF9SQU5EOworKwkJRU5HSU5FX2dldF9maXJzdDsKKysJCUVOR0lORV9ieV9pZDsKKysJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7CisrCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfc2V0X1JTQTsKKysJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfcmVtb3ZlOworKwkJRU5HSU5FX2ZyZWU7CisrCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2dldF9uZXh0OworKwkJRU5HSU5FX3NldF9uYW1lOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfc2V0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X2lkOworKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9uZXc7CisrCQlFTkdJTkVfZ2V0X2lkOworKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2FkZDsKKysJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2dldF9EU0E7CisrCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247CisrCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7CisrCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7CisrCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKKysJCUFTTjFfVVRGOFNUUklOR19pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcnM7CisrCQlkMmlfT0NTUF9CQVNJQ1JFU1A7CisrCQlLUkI1X0NIRUNLU1VNX2l0OworKwkJRUNfUE9JTlRfYWRkOworKwkJQVNOMV9pdGVtX2V4X2kyZDsKKysJCU9DU1BfQ0VSVElEX2l0OworKwkJZDJpX09DU1BfUkVTUEJZVEVTOworKwkJWDUwOVYzX2FkZDFfaTJkOworKwkJUEtDUzdfRU5WRUxPUEVfaXQ7CisrCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKKysJCVg1MDlWM19FWFRfbmNvbmY7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKKysJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7CisrCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfcHJpbnRfZXg7CisrCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7CisrCQlFTkdJTkVfbG9hZF9keW5hbWljOworKwkJUEJLREYyUEFSQU1faXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OworKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKKysJCU9DU1Bfc2VuZHJlcV9iaW87CisrCQlBU04xX2l0ZW1fZGlnZXN0OworKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKKysJCU9DU1BfU0lHTkFUVVJFX2l0OworKwkJWDUwOV9DUkxfaXQ7CisrCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OworKwkJS1JCNV9FTkNLRVlfaXQ7CisrCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKKysJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7CisrCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7CisrCQlpMmRfT0NTUF9TRVJWSUNFTE9DOworKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKKysJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKKysJCUFTTjFfVDYxU1RSSU5HX2l0OworKwkJRUNfR1JPVVBfbWV0aG9kX29mOworKwkJaTJkX0tSQjVfQVBSRVE7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7CisrCQlBU04xX1BSSU5UQUJMRV9uZXc7CisrCQlITUFDX0luaXRfZXg7CisrCQlkMmlfS1JCNV9BVVRIRU5UOworKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7CisrCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7CisrCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlFQ19QT0lOVF9vY3QycG9pbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2N0cmw7CisrCQlfc2hhZG93X0RFU19yd19tb2RlOworKwkJYXNuMV9kb19hZGI7CisrCQlBU04xX3RlbXBsYXRlX2kyZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9ESDsKKysJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7CisrCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKKysJCVVJX2R1cF9pbnB1dF9zdHJpbmc7CisrCQlkMmlfS1JCNV9BUFJFUTsKKysJCUVWUF9NRF9DVFhfY29weV9leDsKKysJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7CisrCQlpMmRfT0NTUF9SRVFJTkZPOworKwkJS1JCNV9FTkNLRVlfZnJlZTsKKysJCU9DU1BfcmVzcF9nZXQwOworKwkJR0VORVJBTF9OQU1FX2l0OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7CisrCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVWT0tFRElORk87CisrCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKKysJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247CisrCQlFVlBfQ2lwaGVyRmluYWxfZXg7CisrCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OworKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7CisrCQlPQ1NQX3Jlc3BfZmluZDsKKysJCUJOX25ubW9kOworKwkJWDUwOV9DUkxfc29ydDsKKysJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKKysJCU9DU1BfU0VSVklDRUxPQ19uZXc7CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKKysJCVNYTkVUX2l0OworKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47CisrCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOworKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7CisrCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7CisrCQlEU09fY29udmVydF9maWxlbmFtZTsKKysJCVBPTElDWVFVQUxJTkZPX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7CisrCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOworKwkJRFNPX3NldF9maWxlbmFtZTsKKysJCUFTTjFfaXRlbV9mcmVlOworKwkJS1JCNV9US1RCT0RZX2ZyZWU7CisrCQlBVVRIT1JJVFlfS0VZSURfaXQ7CisrCQlLUkI1X0FQUkVRQk9EWV9uZXc7CisrCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7CisrCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOworKwkJaTJkX09DU1BfUkVTUERBVEE7CisrCQlFVlBfTURfQ1RYX2luaXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKKysJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKKysJCVVJX2FkZF9lcnJvcl9zdHJpbmc7CisrCQlLUkI1X0NIRUNLU1VNX2ZyZWU7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKKysJCUVOR0lORV9sb2FkX3Vic2VjOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOworKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7CisrCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfaXRlbV91bnBhY2s7CisrCQlORVRTQ0FQRV9TUEtBQ19pdDsKKysJCVg1MDlfUkVWT0tFRF9pdDsKKysJCUFTTjFfU1RSSU5HX2VuY29kZTsKKysJCUVWUF9hZXNfMTI4X2VjYjsKKysJCUtSQjVfQVVUSEVOVF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfY2VydF9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVRVUVTVDsKKysJCVVJX2R1cF9pbmZvX3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKKysJCVBLQ1MxMl9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKKysJCUFTTjFfaXRlbV9pMmQ7CisrCQlFVlBfRGVjcnlwdEZpbmFsX2V4OworKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKKysJCUVOR0lORV9nZXRfY21kX2RlZm5zOworKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKKysJCUVWUF9FbmNyeXB0RmluYWxfZXg7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKKysJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOworKwkJYXNuMV9leF9pMmM7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOworKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7CisrCQlYNTA5X0VYVEVOU0lPTl9pdDsKKysJCWkyZF9LUkI1X0FVVEhFTlQ7CisrCQlTWE5FVElEX2l0OworKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKKysJCUVESVBBUlRZTkFNRV9uZXc7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5OworKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OworKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKKysJCUVSUl9wcmludF9lcnJvcnNfY2I7CisrCQlFTkdJTkVfc2V0X2NpcGhlcnM7CisrCQlkMmlfS1JCNV9BUFJFUUJPRFk7CisrCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7CisrCQlYNTA5X1BVQktFWV9pdDsKKysJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7CisrCQlQS0NTN19FTkNSWVBUX2l0OworKwkJaTJkX09DU1BfUkVTUE9OU0U7CisrCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7CisrCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKKysJCWQyaV9LUkI1X0FVVEhEQVRBOworKwkJT0NTUF9jb3B5X25vbmNlOworKwkJS1JCNV9BVVRIREFUQV9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX25ldzsKKysJCUVDX0dGcF9tb250X21ldGhvZDsKKysJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKKysJCVVJX2dldF9leF9kYXRhOworKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKKysJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOworKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJWDUwOVYzX3NldF9uY29uZjsKKysJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OworKwkJWDUwOV9hZGQxX2V4dF9pMmQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19pdDsKKysJCUtSQjVfUFJJTkNOQU1FX25ldzsKKysJCVBLQ1MxMl9TQUZFQkFHX2l0OworKwkJRUNfR1JPVVBfZ2V0X29yZGVyOworKwkJZDJpX09DU1BfUkVTUElEOworKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKKysJCU5DT05GX2dldF9udW1iZXJfZTsKKysJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7CisrCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOworKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOworKwkJaTJkX09DU1BfT05FUkVROworKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7CisrCQlPQ1NQX1JFU1BCWVRFU19uZXc7CisrCQlFVlBfTURfQ1RYX2NyZWF0ZTsKKysJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKKysJCVg1MDlfQUxHT1JfaXQ7CisrCQlBU04xX1RJTUVfaXQ7CisrCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2dldDBfcmVzdWx0OworKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKKysJCUVWUF9hZXNfMjU2X2VjYjsKKysJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfSUE1U1RSSU5HX2l0OworKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOworKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKKysJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOworKwkJT0NTUF9DRVJUSURfZnJlZTsKKysJCVg1MDlfQ0VSVF9BVVhfaXQ7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OworKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OworKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7CisrCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKKysJCVg1MDlfQVRUUklCVVRFX2l0OworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7CisrCQlQS0NTMTJfZGVjcnlwdF9za2V5OworKwkJS1JCNV9BVVRIRU5UX2l0OworKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKKysJCVJTQVB1YmxpY0tleV9pdDsKKysJCWkyZF9PQ1NQX1JFUVVFU1Q7CisrCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOworKwkJT0NTUF9TRVJWSUNFTE9DX2l0OworKwkJQVNOMV9pdGVtX3NpZ247CisrCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7CisrCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOworKwkJaTJkX09DU1BfQkFTSUNSRVNQOworKwkJaTJkX09DU1BfUkVTUEJZVEVTOworKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7CisrCQlITUFDX0NUWF9pbml0OworKwkJRU5HSU5FX2dldF9kaWdlc3Q7CisrCQlPQ1NQX1JFU1BPTlNFX3ByaW50OworKwkJS1JCNV9US1RCT0RZX2l0OworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7CisrCQlQQkUyUEFSQU1faXQ7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOworKwkJUEtDUzdfU0lHTkVEX2l0OworKwkJRU5HSU5FX2dldF9jaXBoZXI7CisrCQlpMmRfT0NTUF9DUkxJRDsKKysJCU9DU1BfU0lOR0xFUkVTUF9uZXc7CisrCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7CisrCQlSU0FfdXBfcmVmOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOworKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVBLQ1M4X2RlY3J5cHQ7CisrCQlQRU1fYnl0ZXNfcmVhZF9iaW87CisrCQlESVJFQ1RPUllTVFJJTkdfaXQ7CisrCQlkMmlfT0NTUF9DUkxJRDsKKysJCUVDX1BPSU5UX2lzX29uX2N1cnZlOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKKysJCWQyaV9LUkI1X0NIRUNLU1VNOworKwkJQVNOMV9pdGVtX2R1cDsKKysJCVg1MDlfaXQ7CisrCQlCTl9tb2RfYWRkOworKwkJS1JCNV9BVVRIREFUQV9mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07CisrCQlBU04xX2l0ZW1fdmVyaWZ5OworKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOworKwkJWkxPTkdfaXQ7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOworKwkJQVNOMV9USU1FX2NoZWNrOworKwkJVUlfZ2V0MF91c2VyX2RhdGE7CisrCQlITUFDX0NUWF9jbGVhbnVwOworKwkJRFNBX3VwX3JlZjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlBU04xX0JNUFNUUklOR19pdDsKKysJCUFTTjFfdGFnMmJpdDsKKysJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKKysJCVg1MDlfb2NzcGlkX3ByaW50OworKwkJS1JCNV9FTkNEQVRBX2l0OworKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVVJX2FkZF91c2VyX2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKKysJCVVJX2dldF9tZXRob2Q7CisrCQlPQ1NQX09ORVJFUV9mcmVlOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7CisrCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKKysJCU9DU1BfUkVRVUVTVF9pdDsKKysJCU9DU1BfQkFTSUNSRVNQX2l0OworKwkJQUVTX2VjYl9lbmNyeXB0OworKwkJQk5fbW9kX3NxcjsKKysJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7CisrCQlHRU5FUkFMX05BTUVTX2l0OworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OworKwkJQVNOMV9GQk9PTEVBTl9pdDsKKysJCVVJX3NldF9leF9kYXRhOworKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7CisrCQlkMmlfS1JCNV9QUklOQ05BTUU7CisrCQlPQ1NQX1JFU1BCWVRFU19pdDsKKysJCVg1MDlfQ0lORl9pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7CisrCQlkMmlfRURJUEFSVFlOQU1FOworKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKKysJCUVOR0lORV9nZXRfZGlnZXN0czsKKysJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7CisrCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7CisrCQlkMmlfS1JCNV9USUNLRVQ7CisrCQlPVEhFUk5BTUVfaXQ7CisrCQlFVlBfTURfQ1RYX2NsZWFudXA7CisrCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247CisrCQlCTl9tb2Rfc3ViOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOworKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7CisrCQlPQ1NQX1JFUVVFU1RfZnJlZTsKKysJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7CisrCQlYNTA5X1ZBTF9pdDsKKysJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKKysJCUVDX1BPSU5UX211bDsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mOworKwkJWDUwOV9UUlVTVF9zZXQ7CisrCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7CisrCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKKysJCURJU1BMQVlURVhUX2l0OworKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7CisrCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOworKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKKysJCUtSQjVfRU5DREFUQV9uZXc7CisrCQlEU09fdXBfcmVmOworKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKKysJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKKysJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7CisrCQlYNTA5X1NJR19pdDsKKysJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247CisrCQlFUlJfbG9hZF9FQ19zdHJpbmdzOworKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKKysJCUVDX1BPSU5UX21ldGhvZF9vZjsKKysJCWkyZF9LUkI1X0FQUkVRQk9EWTsKKysJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OworKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRU5HSU5FX2dldF9leF9kYXRhOworKwkJVUlfZGVzdHJveV9tZXRob2Q7CisrCQlBU04xX2l0ZW1faTJkX2JpbzsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOworKwkJQVNOMV9wcmltaXRpdmVfbmV3OworKwkJQVNOMV9QUklOVEFCTEVfaXQ7CisrCQlFVlBfYWVzXzE5Ml9lY2I7CisrCQlPQ1NQX1NJR05BVFVSRV9uZXc7CisrCQlMT05HX2l0OworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKKysJCWQyaV9PQ1NQX0NFUlRJRDsKKysJCUFTTjFfaXRlbV9kMmlfZnA7CisrCQlDUkxfRElTVF9QT0lOVFNfaXQ7CisrCQlHRU5FUkFMX05BTUVfcHJpbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKKysJCVBLQ1MxMl9TQUZFQkFHU19pdDsKKysJCWQyaV9PQ1NQX1NJR05BVFVSRTsKKysJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOworKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKKysJCUVDX0dST1VQX2ZyZWU7CisrCQlBU04xX0JJVF9TVFJJTkdfaXQ7CisrCQlYNTA5X1JFUV9pdDsKKysJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7CisrCQlFUlJfdW5sb2FkX3N0cmluZ3M7CisrCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OworKwkJRURJUEFSVFlOQU1FX2ZyZWU7CisrCQlPQ1NQX1JFUUlORk9fZnJlZTsKKysJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOworKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOworKwkJYXNuMV9leF9jMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKKysJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOworKwkJYXNuMV9lbmNfcmVzdG9yZTsKKysJCVVJX2ZyZWU7CisrCQlVSV9uZXdfbWV0aG9kOworKwkJRVZQX0VuY3J5cHRJbml0X2V4OworKwkJWDUwOV9wdWJrZXlfZGlnZXN0OworKwkJRUNfUE9JTlRfaW52ZXJ0OworKwkJT0NTUF9iYXNpY19zaWduOworKwkJaTJkX09DU1BfUkVTUElEOworKwkJT0NTUF9jaGVja19ub25jZTsKKysJCUVOR0lORV9jdHJsX2NtZDsKKysJCWQyaV9LUkI1X0VOQ0tFWTsKKysJCU9DU1BfcGFyc2VfdXJsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7CisrCQlPQ1NQX0NSTElEX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7CisrCQlSU0FQcml2YXRlS2V5X2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKKysJCWkyZF9FRElQQVJUWU5BTUU7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCU9DU1BfQ1JMSURfbmV3OworKwkJRU5HSU5FX2dldF9mbGFnczsKKysJCU9DU1BfT05FUkVRX2l0OworKwkJVUlfcHJvY2VzczsKKysJCUFTTjFfSU5URUdFUl9pdDsKKysJCUVWUF9DaXBoZXJJbml0X2V4OworKwkJVUlfZ2V0X3N0cmluZ190eXBlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlibl9kdXBfZXhwYW5kOworKwkJT0NTUF9jZXJ0X2lkX25ldzsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OworKwkJQk5fbW9kX2FkZF9xdWljazsKKysJCUVDX1BPSU5UX25ldzsKKysJCUVWUF9NRF9DVFhfZGVzdHJveTsKKysJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7CisrCQlFVlBfYWVzXzEyOF9jYmM7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOworKwkJRUNfUE9JTlRfZnJlZTsKKysJCURIX3VwX3JlZjsKKysJCVg1MDlfTkFNRV9FTlRSWV9pdDsKKysJCVVJX2dldF9leF9uZXdfaW5kZXg7CisrCQlCTl9tb2Rfc3ViX3F1aWNrOworKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKKysJCU9DU1BfcmVxdWVzdF9zaWduOworKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OworKwkJRU5HSU5FX3NldF9kaWdlc3RzOworKwkJT0NTUF9pZF9pc3N1ZXJfY21wOworKwkJT0JKX05BTUVfZG9fYWxsOworKwkJRUNfUE9JTlRzX211bDsKKysJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKKysJCVg1MDlWM19FWFRfbmNvbmZfbmlkOworKwkJQVNOMV9TRVFVRU5DRV9pdDsKKysJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOworKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7CisrCQlVSV9PcGVuU1NMOworKwkJUEVNX2RlZl9jYWxsYmFjazsKKysJCUVOR0lORV9jbGVhbnVwOworKwkJRElTVF9QT0lOVF9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9pdDsKKysJCWQyaV9LUkI1X1RLVEJPRFk7CisrCQlFQ19QT0lOVF9jbXA7CisrCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKKysJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7CisrCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7CisrCQlBU04xX2l0ZW1fZXhfZDJpOworKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7CisrCQlVSV9zZXRfbWV0aG9kOworKwkJT0NTUF9pZF9nZXQwX2luZm87CisrCQlCTl9tb2Rfc3FydDsKKysJCUVDX0dST1VQX2NvcHk7CisrCQlLUkI1X0VOQ0RBVEFfZnJlZTsKKysJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlPQ1NQX2NlcnRfdG9faWQ7CisrCQlPQ1NQX1JFU1BJRF9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX2l0OworKwkJZDJpX09DU1BfUkVTUERBVEE7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOworKwkJT0NTUF9jaGVja192YWxpZGl0eTsKKysJCVBLQ1MxMl9CQUdTX2l0OworKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKKysJCUFTTjFfdGVtcGxhdGVfZnJlZTsKKysJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OworKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKKysJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKKysJCWkyZF9LUkI1X0FVVEhEQVRBOworKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7CisrCQlFTkdJTkVfc2V0X2V4X2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7CisrCQlDQklHTlVNX2l0OworKwkJS1JCNV9USUNLRVRfbmV3OworKwkJS1JCNV9BUFJFUV9uZXc7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOworKwkJS1JCNV9FTkNLRVlfbmV3OworKwkJQVNOMV90ZW1wbGF0ZV9kMmk7CisrCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07CisrCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKKysJCUJOX3N3YXA7CisrCQlQT0xJQ1lJTkZPX2l0OworKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOworKwkJYXNuMV9lbmNfZnJlZTsKKysJCU9DU1BfUkVTUElEX2l0OworKwkJRUNfR1JPVVBfbmV3OworKwkJRVZQX2Flc18yNTZfY2JjOworKwkJaTJkX0tSQjVfUFJJTkNOQU1FOworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OworKwkJT0NTUF9SRVFJTkZPX2l0OworKwkJUEJFUEFSQU1faXQ7CisrCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKKysJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKKysJCUVESVBBUlRZTkFNRV9pdDsKKysJCU5FVFNDQVBFX1NQS0lfaXQ7CisrCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOworKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOworKwkJRUNfUE9JTlRfY29weTsKKysJCUJOX2tyb25lY2tlcjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7CisrCQlBU04xX0VOVU1FUkFURURfaXQ7CisrCQlVSV9zZXRfcmVzdWx0OworKwkJaTJkX0tSQjVfVElDS0VUOworKwkJWDUwOV9wcmludF9leF9mcDsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOworKwkJZDJpX09DU1BfUkVTUE9OU0U7CisrCQlBU04xX1VUQ1RJTUVfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKKysJCU9DU1BfUkVTUE9OU0VfbmV3OworKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKKysJCU9DU1BfcmVzcF9jb3VudDsKKysJCUtSQjVfQ0hFQ0tTVU1fbmV3OworKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OworKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOworKwkJTk9USUNFUkVGX2l0OworKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOworKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKKysJCUFFU19lbmNyeXB0OworKwkJT0NTUF9SRVFVRVNUX25ldzsKKysJCUFTTjFfQU5ZX2l0OworKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOworKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7CisrCQlpMmRfS1JCNV9US1RCT0RZOworKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKKysJCUFFU19kZWNyeXB0OworKwkJYXNuMV9lbmNfaW5pdDsKKysJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKKysJCU9DU1BfQ0VSVElEX25ldzsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7CisrCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKKysJCWQyaV9LUkI1X0VOQ0RBVEE7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OworKwkJT0NTUF9iYXNpY192ZXJpZnk7CisrCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7CisrCQlBU04xX2l0ZW1fZDJpOworKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKKysJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7CisrCQlpMmRfT0NTUF9TSUdOQVRVUkU7CisrCQlhc24xX2VuY19zYXZlOworKwkJRU5HSU5FX2xvYWRfbnVyb247CisrCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKKysJCVBLQ1MxMl9NQUNfREFUQV9pdDsKKysJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7CisrCQlhc24xX2RvX2xvY2s7CisrCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKKysJCUtSQjVfQVBSRVFCT0RZX2l0OworKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKKysJCUFTTjFfaXRlbV9leF9uZXc7CisrCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKKysJCUtSQjVfUFJJTkNOQU1FX2l0OworKwkJRVZQX0RlY3J5cHRJbml0X2V4OworKwkJaTJkX09DU1BfQ0VSVElEOworKwkJQVNOMV9pdGVtX2QyaV9iaW87CisrCQlFQ19QT0lOVF9kYmw7CisrCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7CisrCQlpMmRfS1JCNV9DSEVDS1NVTTsKKysJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7CisrCQlBRVNfb3B0aW9uczsKKysJCUVOR0lORV9sb2FkX2NoaWw7CisrCQlPQ1NQX2lkX2NtcDsKKysJCU9DU1BfQkFTSUNSRVNQX25ldzsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKKysJCUtSQjVfQVBSRVFfaXQ7CisrCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247CisrCQlDT05GX3NldF9uY29uZjsKKysJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKKysJCURJU1RfUE9JTlRfTkFNRV9pdDsKKysJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OworKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OworKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKKysJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7CisrCQlLUkI1X1RLVEJPRFlfbmV3OworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7CisrCQlFUlJfbG9hZF9VSV9zdHJpbmdzOworKwkJaTJkX0tSQjVfRU5DS0VZOworKwkJQVNOMV90ZW1wbGF0ZV9uZXc7CisrCQlPQ1NQX1NJR05BVFVSRV9mcmVlOworKwkJQVNOMV9pdGVtX2kyZF9mcDsKKysJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2l0OworKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OworKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7CisrCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7CisrCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKKysJCUtSQjVfQVVUSEVOVF9uZXc7CisrCQlYNTA5X0NSTF9JTkZPX2l0OworKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKKysJCUFFU19zZXRfZGVjcnlwdF9rZXk7CisrCQlQS0NTN19ESUdFU1RfaXQ7CisrCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOworKwkJRVZQX0RpZ2VzdEluaXRfZXg7CisrCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJT0NTUF9SRVNQT05TRV9pdDsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2l0OworKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7CisrCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKKysJCURTT19nZXRfZmlsZW5hbWU7CisrCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OworKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOworKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7CisrCQlCTl9tb2RfbHNoaWZ0OworKwkJS1JCNV9BVVRIREFUQV9pdDsKKysJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKKysJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7CisrCQlPQ1NQX1JFU1BJRF9mcmVlOworKwkJYXNuMV9nZXRfZmllbGRfcHRyOworKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKKysJCU9DU1BfQ1JMSURfaXQ7CisrCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OworKwkJRU5HSU5FX2xvYWRfYXRhbGxhOworKwkJWDUwOV9OQU1FX2l0OworKwkJVVNFUk5PVElDRV9pdDsKKysJCU9DU1BfUkVRSU5GT19uZXc7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7CisrCQlBU04xX2l0ZW1fcGFjazsKKysJCWkyZF9LUkI1X0VOQ0RBVEE7CisrCQlYNTA5X1BVUlBPU0Vfc2V0OworKwkJWDUwOV9SRVFfSU5GT19pdDsKKysJCVVJX21ldGhvZF9zZXRfb3BlbmVyOworKwkJQVNOMV9pdGVtX2V4X2ZyZWU7CisrCQlBU04xX0JPT0xFQU5faXQ7CisrCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOworKwkJVUlfY3JlYXRlX21ldGhvZDsKKysJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKKysJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKKysJCWQyaV9PQ1NQX1JFUUlORk87CisrCQlVSV9hZGRfaW5mb19zdHJpbmc7CisrCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7CisrCQlBU04xX05VTExfaXQ7CisrCQlCTl9tb2RfbHNoaWZ0MTsKKysJCWQyaV9PQ1NQX09ORVJFUTsKKysJCU9DU1BfT05FUkVRX25ldzsKKysJCUtSQjVfVElDS0VUX2l0OworKwkJRVZQX2Flc18xOTJfY2JjOworKwkJS1JCNV9USUNLRVRfZnJlZTsKKysJCVVJX25ldzsKKysJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOworKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7CisrCQlQS0NTN19pdDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKKysJCUVOR0lORV9zZXRfZmxhZ3M7CisrCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OworKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOworKwkJRVZQX0RpZ2VzdDsKKysJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7CisrCQlBU04xX1RCT09MRUFOX2l0OworKwkJQVNOMV9pdGVtX25ldzsKKysJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7CisrCQlCSUdOVU1faXQ7CisrCQlBRVNfY2JjX2VuY3J5cHQ7CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOworKwkJT0NTUF9SRVNQT05TRV9mcmVlOworKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7CisrCQlpMmRfQVNOMV9UNjFTVFJJTkc7CisrCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7CisrCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7CisrCQlFQ19QT0lOVF9wb2ludDJvY3Q7CisrCQlLUkI1X0FQUkVRX2ZyZWU7CisrCQlBU04xX09CSkVDVF9pdDsKKysJCU9DU1BfY3JsSURfbmV3OworKwkJT0NTUF9jcmxJRDJfbmV3OworKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKKysJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOworKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOworKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKKysJCUNPTkZfbW9kdWxlc19maW5pc2g7CisrCQlPUEVOU1NMX2NvbmZpZzsKKysJCUNPTkZfbW9kdWxlc191bmxvYWQ7CisrCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOworKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOworKwkJQ09ORl9wYXJzZV9saXN0OworKwkJQ09ORl9tb2R1bGVfYWRkOworKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7CisrCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOworKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7CisrCQlDT05GX21vZHVsZXNfbG9hZDsKKysJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKKysJCUVSUl9wZWVrX3RvcF9lcnJvcjsKKysJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7CisrCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOworKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKKysJCURFU19yZWFkXzJwYXNzd29yZHM7CisrCQlERVNfcmVhZF9wYXNzd29yZDsKKysJCVVJX1VUSUxfcmVhZF9wdzsKKysJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7CisrCQlFTkdJTkVfbG9hZF9hZXA7CisrCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOworKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKKysJCUFFU19vZmIxMjhfZW5jcnlwdDsKKysJCUFFU19jdHIxMjhfZW5jcnlwdDsKKysJCUFFU19jZmIxMjhfZW5jcnlwdDsKKysJCUVOR0lORV9sb2FkXzQ3NThjY2E7CisrCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOworKwkJRVZQX2Flc18yNTZfb2ZiOworKwkJRVZQX2Flc18xOTJfb2ZiOworKwkJRVZQX2Flc18xMjhfY2ZiMTI4OworKwkJRVZQX2Flc18yNTZfY2ZiMTI4OworKwkJRVZQX2Flc18xMjhfb2ZiOworKwkJRVZQX2Flc18xOTJfY2ZiMTI4OworKwkJQ09ORl9tb2R1bGVzX2ZyZWU7CisrCQlOQ09ORl9kZWZhdWx0OworKwkJT1BFTlNTTF9ub19jb25maWc7CisrCQlOQ09ORl9XSU4zMjsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKKysJCUVWUF9kZXNfZWRlX2VjYjsKKysJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKKysJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUVWUF9kZXNfZWRlM19lY2I7CisrCQlYNTA5X1JFUV9wcmludF9leDsKKysJCUVOR0lORV91cF9yZWY7CisrCQlCVUZfTUVNX2dyb3dfY2xlYW47CisrCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKKysJCUJVRl9zdHJsY2F0OworKwkJQklPX2luZGVudDsKKysJCUJVRl9zdHJsY3B5OworKwkJT3BlblNTTERpZTsKKysJCU9QRU5TU0xfY2xlYW5zZTsKKysJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OworKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOworKwkJRVZQX2Flc18xMjhfY2ZiODsKKysJCUZJUFNfY29ycnVwdF9yc2E7CisrCQlGSVBTX3NlbGZ0ZXN0X2RlczsKKysJCUVWUF9hZXNfMTI4X2NmYjE7CisrCQlFVlBfYWVzXzE5Ml9jZmI4OworKwkJRklQU19tb2RlX3NldDsKKysJCUZJUFNfc2VsZnRlc3RfZHNhOworKwkJRVZQX2Flc18yNTZfY2ZiODsKKysJCUZJUFNfYWxsb3dfbWQ1OworKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7CisrCQlFVlBfZGVzX2VkZTNfY2ZiODsKKysJCUZJUFNfcmFuZF9zZWVkZWQ7CisrCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQUVTX2NmYjhfZW5jcnlwdDsKKysJCUZJUFNfcmFuZF9zZWVkOworKwkJRklQU19jb3JydXB0X2RlczsKKysJCUVWUF9hZXNfMTkyX2NmYjE7CisrCQlGSVBTX3NlbGZ0ZXN0X2FlczsKKysJCUZJUFNfc2V0X3Bybmdfa2V5OworKwkJRVZQX2Rlc19jZmI4OworKwkJRklQU19jb3JydXB0X2RzYTsKKysJCUZJUFNfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX21ldGhvZDsKKysJCUVWUF9hZXNfMjU2X2NmYjE7CisrCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7CisrCQlGSVBTX2NvcnJ1cHRfYWVzOworKwkJRklQU19zZWxmdGVzdF9zaGExOworKwkJRklQU19zZWxmdGVzdF9yc2E7CisrCQlGSVBTX2NvcnJ1cHRfc2hhMTsKKysJCUVWUF9kZXNfY2ZiMTsKKysJCUZJUFNfZHNhX2NoZWNrOworKwkJQUVTX2NmYjFfZW5jcnlwdDsKKysJCUVWUF9kZXNfZWRlM19jZmIxOworKwkJRklQU19yYW5kX2NoZWNrOworKwkJRklQU19tZDVfYWxsb3dlZDsKKysJCUZJUFNfbW9kZTsKKysJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOworKwkJc2tfaXNfc29ydGVkOworKwkJWDUwOV9jaGVja19jYTsKKysJCUhNQUNfQ1RYX3NldF9mbGFnczsKKysJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJUFJPWFlfUE9MSUNZX2l0OworKwkJaTJkX1BST1hZX1BPTElDWTsKKysJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJZDJpX1BST1hZX1BPTElDWTsKKysJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKKysJCVBST1hZX1BPTElDWV9mcmVlOworKwkJUFJPWFlfUE9MSUNZX25ldzsKKysJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7CisrCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKKysJCUVWUF9zaGEzODQ7CisrCQlFVlBfc2hhNTEyOworKwkJRVZQX3NoYTIyNDsKKysJCUVWUF9zaGEyNTY7CisrCQlGSVBTX3NlbGZ0ZXN0X2htYWM7CisrCQlGSVBTX2NvcnJ1cHRfcm5nOworKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKKysJCVJTQV9YOTMxX2hhc2hfaWQ7CisrCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7CisrCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7CisrCQlQS0NTMV9NR0YxOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7CisrCQlSU0FfWDkzMV9kZXJpdmU7CisrCQlCSU9fbmV3X2RncmFtOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKKysJCUVSUl9zZXRfbWFyazsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKKysJCUVOR0lORV9zZXRfU1RPUkU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OworKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7CisrCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKKysJCVBPTElDWV9NQVBQSU5HX2l0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7CisrCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlCTl9uaXN0X21vZF8xOTI7CisrCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOworKwkJU1RPUkVfc2V0X21ldGhvZDsKKysJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOworKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKKysJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUEtDUzEyX2FkZF9zYWZlOworKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOworKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKKysJCVNIQTUxMl9VcGRhdGU7CisrCQlpMmRfRUNQcml2YXRlS2V5OworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKKysJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07CisrCQlCTl9HRjJtX21vZF9leHBfYXJyOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7CisrCQlYNTA5X2tleWlkX2dldDA7CisrCQlFTkdJTkVfbG9hZF9nbXA7CisrCQlwaXRlbV9uZXc7CisrCQlCTl9HRjJtX21vZF9tdWxfYXJyOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7CisrCQlvMmlfRUNQdWJsaWNLZXk7CisrCQlFQ19LRVlfY29weTsKKysJCUJJT19kdW1wX2ZwOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKKysJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKKysJCWkyb19FQ1B1YmxpY0tleTsKKysJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7CisrCQlhMmlfSVBBRERSRVNTOworKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7CisrCQlFQ19QT0lOVF9wb2ludDJibjsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7CisrCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKKysJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7CisrCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOworKwkJRUNfS0VZX2dldF9jb252X2Zvcm07CisrCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OworKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7CisrCQlTVE9SRV9nZXRfcHVibGljX2tleTsKKysJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7CisrCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKKysJCXBxdWV1ZV9pdGVyYXRvcjsKKysJCUVDRFNBX1NJR19uZXc7CisrCQlPUEVOU1NMX0RJUl9lbmQ7CisrCQlCTl9HRjJtX21vZF9zcXI7CisrCQlFQ19QT0lOVF9ibjJwb2ludDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKKysJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOworKwkJU1RPUkVfZ2V0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOworKwkJRUNEU0Ffc2lnbl9leDsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKKysJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07CisrCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOworKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19pbjsKKysJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlCTl9CTElORElOR19zZXRfZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7CisrCQlTVE9SRV9nZXRfbnVtYmVyOworKwkJRUNEU0Ffc2lnbl9zZXR1cDsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOworKwkJRUNfS0VZX3VwX3JlZjsKKysJCVBPTElDWV9NQVBQSU5HX2ZyZWU7CisrCQlCTl9HRjJtX21vZF9kaXY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7CisrCQlFQ19LRVlfZnJlZTsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOworKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7CisrCQlkMmlfRUNfUFVCS0VZOworKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOworKwkJcHF1ZXVlX3ByaW50OworKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7CisrCQlFQ19LRVlfcHJpbnRfZnA7CisrCQlCTl9HRjJtX21vZF9hcnI7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOworKwkJRVZQX1BLRVlfY21wOworKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKKysJCVNUT1JFX25ld19lbmdpbmU7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7CisrCQlFQ0RIX2dldF9leF9kYXRhOworKwkJRVZQX1BLRVlfZ2V0X2F0dHI7CisrCQlFQ0RTQV9kb19zaWduOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKKysJCUVDREhfT3BlblNTTDsKKysJCUVDX0tFWV9zZXRfY29udl9mb3JtOworKwkJRUNfUE9JTlRfZHVwOworKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKKysJCVNUT1JFX2xpc3RfY3JsX2VuZHA7CisrCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKKysJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOworKwkJU1RPUkVfbGlzdF9jcmxfZW5kOworKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7CisrCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKKysJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7CisrCQlwcXVldWVfZmluZDsKKysJCUVDRFNBX1NJR19mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7CisrCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OworKwkJcHF1ZXVlX3BlZWs7CisrCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OworKwkJU1RPUkVfc3RvcmVfY3JsOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKKysJCVBLQ1MxMl9hZGRfc2FmZXM7CisrCQlCTl9CTElORElOR19jb252ZXJ0X2V4OworKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOworKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKKysJCUJOX0dGMm1fcG9seTJhcnI7CisrCQlTVE9SRV9jdHJsOworKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OworKwkJaTJkX0VDUGFyYW1ldGVyczsKKysJCWkyZF9FQ1BLUGFyYW1ldGVyczsKKysJCUJOX0dFTkNCX2NhbGw7CisrCQlkMmlfRUNQS1BhcmFtZXRlcnM7CisrCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X0VDREg7CisrCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKKysJCVNIQTI1Nl9Jbml0OworKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKKysJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOworKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKKysJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKKysJCUVDUGFyYW1ldGVyc19wcmludDsKKysJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OworKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKKysJCUJVRl9tZW1kdXA7CisrCQlCTl9HRjJtX21vZF9tdWw7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OworKwkJRUNfR1JPVVBfc2V0X3NlZWQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7CisrCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKKysJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OworKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOworKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9udW1iZXI7CisrCQlCTl9pc19wcmltZV9leDsKKysJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKKysJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7CisrCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKKysJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOworKwkJRUNEU0FfZ2V0X2V4X2RhdGE7CisrCQlTSEEyMjQ7CisrCQlCSU9fZHVtcF9pbmRlbnRfZnA7CisrCQlFQ19LRVlfc2V0X2dyb3VwOworKwkJQlVGX3N0cm5kdXA7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OworKwkJQk5fR0YybV9tb2Q7CisrCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKKysJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKKysJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7CisrCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7CisrCQlpMmRfRUNfUFVCS0VZOworKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQVNOMV9wdXRfZW9jOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7CisrCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOworKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOworKwkJRUNfR0ZwX25pc3RfbWV0aG9kOworKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247CisrCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OworKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOworKwkJWDUwOV9DRVJUX1BBSVJfaXQ7CisrCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOworKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKKysJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKKysJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7CisrCQlSU0Ffc2V0dXBfYmxpbmRpbmc7CisrCQlCSU9fc19kYXRhZ3JhbTsKKysJCVNUT1JFX01lbW9yeTsKKysJCXNrX2ZpbmRfZXg7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKKysJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7CisrCQlCTl9HRjJtX21vZF9zcXJ0OworKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OworKwkJU0hBMzg0X1VwZGF0ZTsKKysJCUJOX0dGMm1fYXJyMnBvbHk7CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247CisrCQlFQ19HUk9VUF9jaGVjazsKKysJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7CisrCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOworKwkJU0hBMjI0X0ZpbmFsOworKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlTSEEyMjRfVXBkYXRlOworKwkJZDJpX0VDUHJpdmF0ZUtleTsKKysJCUFTTjFfaXRlbV9uZGVmX2kyZDsKKysJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKKysJCUVSUl9wb3BfdG9fbWFyazsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7CisrCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7CisrCQlpMmRfUEtDUzdfTkRFRjsKKysJCUVDX0dST1VQX2dldF9kZWdyZWU7CisrCQlBU04xX2dlbmVyYXRlX3YzOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOworKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKKysJCUJOX0dGMm1fYWRkOworKwkJRUNfS0VZX2dldDBfZ3JvdXA7CisrCQlTVE9SRV9nZW5lcmF0ZV9jcmw7CisrCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OworKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKKysJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKKysJCUJOX25pc3RfbW9kXzIyNDsKKysJCVNIQTUxMl9GaW5hbDsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47CisrCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOworKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKKysJCWkyZF9FQ19QVUJLRVlfYmlvOworKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKKysJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7CisrCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7CisrCQlTVE9SRV9saXN0X2NybF9zdGFydDsKKysJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOworKwkJdjJpX0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOworKwkJT0JKX2JzZWFyY2hfZXg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKKysJCUJOX0dGMm1fbW9kX2ludjsKKysJCUJOX0dGMm1fbW9kX2V4cDsKKysJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKKysJCUVDX0dST1VQX2dldDBfc2VlZDsKKysJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKKysJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKKysJCUVOR0lORV9zZXRfRUNEU0E7CisrCQlTVE9SRV9jcmVhdGVfbWV0aG9kOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7CisrCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKKysJCVBFTV93cml0ZV9FQ19QVUJLRVk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOworKwkJRUNESF9zZXRfbWV0aG9kOworKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKKysJCUVDREhfc2V0X2V4X2RhdGE7CisrCQlTVE9SRV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9uaXN0X21vZF81MjE7CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7CisrCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOworKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKKysJCVBFTV9yZWFkX0VDX1BVQktFWTsKKysJCWkyZF9FQ0RTQV9TSUc7CisrCQlFQ0RTQV9PcGVuU1NMOworKwkJU1RPUkVfZGVsZXRlX2NybDsKKysJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOworKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKKysJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07CisrCQlFQ19HUk9VUF9jbXA7CisrCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OworKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247CisrCQlTSEEyMjRfSW5pdDsKKysJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKKysJCVNIQTUxMl9Jbml0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKKysJCUJOX3NldF9uZWdhdGl2ZTsKKysJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7CisrCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OworKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX09CSkVDVF9mcmVlOworKwkJQk5fbmlzdF9tb2RfMzg0OworKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOworKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOworKwkJRUNESF9jb21wdXRlX2tleTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7CisrCQlwcXVldWVfcG9wOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKKysJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKKysJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7CisrCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7CisrCQlTSEEyNTY7CisrCQlpMmRfRUNQcml2YXRlS2V5X2ZwOworKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7CisrCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOworKwkJT1BFTlNTTF9ESVJfcmVhZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOworKwkJRUNfR1JPVVBfZHVwOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOworKwkJRUNfS0VZX25ldzsKKysJCVNIQTI1Nl9UcmFuc2Zvcm07CisrCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKKysJCUVDRFNBX3ZlcmlmeTsKKysJCUVDX1BPSU5UX3BvaW50MmhleDsKKysJCUVOR0lORV9nZXRfU1RPUkU7CisrCQlTSEE1MTI7CisrCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7CisrCQlFQ0RTQV9kb19zaWduX2V4OworKwkJRUNEU0FfZG9fdmVyaWZ5OworKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKKysJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKKysJCVNIQTUxMl9UcmFuc2Zvcm07CisrCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07CisrCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlTVE9SRV9mcmVlOworKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKKysJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfZ2V0X2V4X2RhdGE7CisrCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7CisrCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKKysJCVg1MDlfQ0VSVF9QQUlSX25ldzsKKysJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKKysJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKKysJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKKysJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cjsKKysJCVNUT1JFX21vZGlmeV9jcmw7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OworKwkJUE9MSUNZX01BUFBJTkdTX2l0OworKwkJR0VORVJBTF9TVUJUUkVFX2l0OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7CisrCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7CisrCQlCSU9fZHVtcF9pbmRlbnRfY2I7CisrCQlkMmlfWDUwOV9DRVJUX1BBSVI7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7CisrCQlhc24xX2NvbnN0X0ZpbmlzaDsKKysJCWkyZF9FQ19QVUJLRVlfZnA7CisrCQlCTl9uaXN0X21vZF8yNTY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOworKwkJcHF1ZXVlX2ZyZWU7CisrCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07CisrCQlFQ0RTQV9zaXplOworKwkJZDJpX0VDX1BVQktFWV9iaW87CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOworKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKKysJCVNIQTI1Nl9GaW5hbDsKKysJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7CisrCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OworKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfRUNESDsKKysJCWQyaV9FQ0RTQV9TSUc7CisrCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKKysJCUVDRFNBX3NpZ247CisrCQlYNTA5X3BvbGljeV9jaGVjazsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKKysJCVNUT1JFX3NldF9leF9kYXRhOworKwkJRU5HSU5FX2dldF9FQ0RTQTsKKysJCUVWUF9lY2RzYTsKKysJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKKysJCVBLQ1MxMl9hZGRfY2VydDsKKysJCVNUT1JFX09CSkVDVF9uZXc7CisrCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7CisrCQlFQ19LRVlfZHVwOworKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7CisrCQlFQ0RTQV9zZXRfbWV0aG9kOworKwkJYTJpX0lQQUREUkVTU19OQzsKKysJCWQyaV9FQ1BhcmFtZXRlcnM7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKKysJCVNUT1JFX2dldF9jcmw7CisrCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OworKwkJU0hBMzg0X0luaXQ7CisrCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7CisrCQlFQ0RTQV9zZXRfZXhfZGF0YTsKKysJCVNIQTM4NF9GaW5hbDsKKysJCVBLQ1M3X3NldF9kaWdlc3Q7CisrCQlFQ19LRVlfcHJpbnQ7CisrCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVNIQTM4NDsKKysJCVBPTElDWV9NQVBQSU5HX25ldzsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7CisrCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOworKwkJRUNfS0VZX2NoZWNrX2tleTsKKysJCWQyaV9FQ19QVUJLRVlfZnA7CisrCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7CisrCQlwcXVldWVfbmV4dDsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKKysJCXBxdWV1ZV9uZXc7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKKysJCVNUT1JFX25ld19tZXRob2Q7CisrCQlQS0NTMTJfYWRkX2tleTsKKysJCURTT19tZXJnZTsKKysJCUVDX1BPSU5UX2hleDJwb2ludDsKKysJCUJJT19kdW1wX2NiOworKwkJU0hBMjU2X1VwZGF0ZTsKKysJCXBxdWV1ZV9pbnNlcnQ7CisrCQlwaXRlbV9mcmVlOworKwkJQk5fR0YybV9tb2RfaW52X2FycjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOworKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKKysJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7CisrCQlESF9jaGVja19wdWJfa2V5OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7CisrCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7CisrCQlFVlBfQ0lQSEVSX0NUWF9uZXc7CisrCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOworKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQ2FtZWxsaWFfZGVjcnlwdDsKKysJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OworKwkJQ2FtZWxsaWFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfc2V0X2tleTsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOworKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKKysJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKKysJCWEyaV9pcGFkZDsKKysJCUFTSWRlbnRpZmllcnNfZnJlZTsKKysJCWkyZF9BU0lkT3JSYW5nZTsKKysJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKKysJCXYzX2FzaWRfaXNfY2Fub25pY2FsOworKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7CisrCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKKysJCXYzX2FkZHJfYWRkX3ByZWZpeDsKKysJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7CisrCQlCSU9fc2V0X2ZsYWdzOworKwkJQVNJZGVudGlmaWVyc19pdDsKKysJCXYzX2FkZHJfZ2V0X3JhbmdlOworKwkJQklPX21ldGhvZF90eXBlOworKwkJdjNfYWRkcl9pbmhlcml0czsKKysJCUlQQWRkcmVzc0Nob2ljZV9pdDsKKysJCUFFU19pZ2VfZW5jcnlwdDsKKysJCXYzX2FkZHJfYWRkX3JhbmdlOworKwkJRVZQX0NJUEhFUl9DVFhfbmlkOworKwkJZDJpX0FTUmFuZ2U7CisrCQl2M19hZGRyX2FkZF9pbmhlcml0OworKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKKysJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOworKwkJRVZQX01EX3R5cGU7CisrCQl2M19hc2lkX2Nhbm9uaXplOworKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKKysJCXYzX2FzaWRfYWRkX2luaGVyaXQ7CisrCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOworKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OworKwkJQVNJZE9yUmFuZ2VfbmV3OworKwkJRVZQX01EX3NpemU7CisrCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlCSU9fY2xlYXJfZmxhZ3M7CisrCQlpMmRfQVNSYW5nZTsKKysJCUlQQWRkcmVzc1JhbmdlX2l0OworKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKKysJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7CisrCQlBU1JhbmdlX2ZyZWU7CisrCQlFVlBfTURfcGtleV90eXBlOworKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKKysJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOworKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKKysJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OworKwkJRVZQX0NJUEhFUl9mbGFnczsKKysJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OworKwkJZDJpX0lQQWRkcmVzc1JhbmdlOworKwkJQUVTX2JpX2lnZV9lbmNyeXB0OworKwkJQklPX2dldF9jYWxsYmFjazsKKysJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKKysJCXYzX2FkZHJfc3Vic2V0OworKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKKysJCXYzX2FzaWRfc3Vic2V0OworKwkJQklPX3Rlc3RfZmxhZ3M7CisrCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOworKwkJQVNSYW5nZV9pdDsKKysJCWQyaV9BU0lkZW50aWZpZXJzOworKwkJQVNSYW5nZV9uZXc7CisrCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOworKwkJdjNfYWRkcl9nZXRfYWZpOworKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOworKwkJRVZQX0NpcGhlcjsKKysJCWkyZF9JUEFkZHJlc3NPclJhbmdlOworKwkJQVNJZE9yUmFuZ2VfaXQ7CisrCQlFVlBfQ0lQSEVSX25pZDsKKysJCWkyZF9JUEFkZHJlc3NDaG9pY2U7CisrCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOworKwkJQVNJZGVudGlmaWVyc19uZXc7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7CisrCQlJUEFkZHJlc3NGYW1pbHlfbmV3OworKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7CisrCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKKysJCWkyZF9JUEFkZHJlc3NSYW5nZTsKKysJCUlQQWRkcmVzc0ZhbWlseV9pdDsKKysJCXYzX2FzaWRfaW5oZXJpdHM7CisrCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7CisrCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7CisrCQlFVlBfTURfYmxvY2tfc2l6ZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOworKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOworKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7CisrCQl2M19hZGRyX2Nhbm9uaXplOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OworKwkJRVZQX01EX0NUWF9tZDsKKysJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7CisrCQlCSU9fbWV0aG9kX25hbWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7CisrCQlBU0lkT3JSYW5nZV9mcmVlOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7CisrCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKKysJCUJJT19zZXRfY2FsbGJhY2s7CisrCQlkMmlfQVNJZE9yUmFuZ2U7CisrCQlpMmRfQVNJZGVudGlmaWVyczsKKysJCVNFRURfZGVjcnlwdDsKKysJCVNFRURfZW5jcnlwdDsKKysJCVNFRURfY2JjX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9vZmI7CisrCQlTRUVEX2NmYjEyOF9lbmNyeXB0OworKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKKysJCUVWUF9zZWVkX2NiYzsKKysJCVNFRURfZWNiX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9lY2I7CisrCQlTRUVEX3NldF9rZXk7CisrCQlFVlBfc2VlZF9jZmIxMjg7CisrCQlYNTA5X0VYVEVOU0lPTlNfaXQ7CisrCQlYNTA5X2dldDFfb2NzcDsKKysJCU9DU1BfUkVRX0NUWF9mcmVlOworKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKKysJCU9DU1Bfc2VuZHJlcV9uYmlvOworKwkJT0NTUF9zZW5kcmVxX25ldzsKKysJCWQyaV9YNTA5X0VYVEVOU0lPTlM7CisrCQlYNTA5X0FMR09SU19pdDsKKysJCVg1MDlfQUxHT1JfZ2V0MDsKKysJCVg1MDlfQUxHT1Jfc2V0MDsKKysJCUFFU191bndyYXBfa2V5OworKwkJQUVTX3dyYXBfa2V5OworKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7CisrCQlBU04xX1RZUEVfc2V0MTsKKysJCUFTTjFfU1RSSU5HX3NldDA7CisrCQlpMmRfWDUwOV9BTEdPUlM7CisrCQlCSU9fZl96bGliOworKwkJQ09NUF96bGliX2NsZWFudXA7CisrCQlkMmlfWDUwOV9BTEdPUlM7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKKysJCVBFTV93cml0ZV9DTVM7CisrCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKKysJCUVSUl9sb2FkX0NNU19zdHJpbmdzOworKwkJQ01TX3NpZ25fcmVjZWlwdDsKKysJCWkyZF9DTVNfQ29udGVudEluZm87CisrCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOworKwkJZDJpX0NNU19iaW87CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOworKwkJQ01TX3ZlcmlmeTsKKysJCVNNSU1FX3JlYWRfQ01TOworKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7CisrCQlDTVNfYWRkMV9jZXJ0OworKwkJQ01TX3NldF9kZXRhY2hlZDsKKysJCUNNU19lbmNyeXB0OworKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOworKwkJQ01TX3VuY29tcHJlc3M7CisrCQlDTVNfYWRkMF9jcmw7CisrCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKKysJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOworKwkJUEVNX3dyaXRlX2Jpb19DTVM7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOworKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7CisrCQlDTVNfZmluYWw7CisrCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKKysJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKKysJCUNNU19kYXRhOworKwkJQ01TX0NvbnRlbnRJbmZvX2l0OworKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19jb21wcmVzczsKKysJCUNNU19kaWdlc3RfY3JlYXRlOworKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7CisrCQlDTVNfU2lnbmVySW5mb19zaWduOworKwkJQ01TX2RhdGFfY3JlYXRlOworKwkJaTJkX0NNU19iaW87CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKKysJCUNNU19kZWNyeXB0OworKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7CisrCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfYWRkX3NtaW1lY2FwOworKwkJUEVNX3JlYWRfQ01TOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7CisrCQlkMmlfQ01TX0NvbnRlbnRJbmZvOworKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKKysJCUNNU19Db250ZW50SW5mb19uZXc7CisrCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOworKwkJQ01TX2dldDBfdHlwZTsKKysJCUNNU19pc19kZXRhY2hlZDsKKysJCUNNU19zaWduOworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOworKwkJU01JTUVfd3JpdGVfQ01TOworKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKKysJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOworKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7CisrCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7CisrCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OworKwkJQ01TX2dldDBfc2lnbmVyczsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKKysJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCUNNU19nZXQwX1NpZ25lckluZm9zOworKwkJQ01TX2FkZDBfY2VydDsKKysJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7CisrCQlDTVNfZGlnZXN0X3ZlcmlmeTsKKysJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7CisrCQlDTVNfU2lnbmVkRGF0YV9pbml0OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKKysJCUNNU192ZXJpZnlfcmVjZWlwdDsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKKysJCVBFTV9yZWFkX2Jpb19DTVM7CisrCQlDTVNfZ2V0MV9jcmxzOworKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKKysJCVNNSU1FX3JlYWRfQVNOMTsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7CisrCQlDTVNfZ2V0MF9jb250ZW50OworKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7CisrCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlDTVNfZ2V0MV9jZXJ0czsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX2RhdGFGaW5hbDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOworKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OworKwkJQ01TX2RhdGFJbml0OworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7CisrCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKKysJCUNNU19hZGQxX3NpZ25lcjsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKKysJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47CisrCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOworKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OworKwkJRU5HSU5FX2xvYWRfY2FwaTsKKysJCU9QRU5TU0xfaXNzZXJ2aWNlOworKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOworKwkJRklQU19yYW5kX3N0YXR1czsKKysJCUZJUFNfcmFuZF9zZXRfa2V5OworKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOworKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7CisrCQlGSVBTX3JuZ19zdGljazsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOworKwkJRklQU19yYW5kX3NldF9kdDsKKysJCUNSWVBUT19kYmdfcG9wX2luZm87CisrCQlGSVBTX2RzYV9mcmVlOworKwkJUlNBX1g5MzFfZGVyaXZlX2V4OworKwkJRklQU19yc2FfbmV3OworKwkJRklQU19yYW5kX2J5dGVzOworKwkJZmlwc19jaXBoZXJfdGVzdDsKKysJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7CisrCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKKysJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOworKwkJRklQU19kaF9uZXc7CisrCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKKysJCUZJUFNfZGhfZnJlZTsKKysJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKKysJCUVWUF9hZGRfYWxnX21vZHVsZTsKKysJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlGSVBTX3JhbmRfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX3Jlc2V0OworKwkJRklQU19kc2FfbmV3OworKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKKysJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OworKwkJaW50X0VSUl9saWJfaW5pdDsKKysJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCUZJUFNfcnNhX2ZyZWU7CisrCQlGSVBTX2RzYV9zaWdfZW5jb2RlOworKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87CisrCQlPUEVOU1NMX2luaXQ7CisrCQlDUllQVE9fc3RyZHVwOworKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQMV9yZWxlYXNlOworKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7CisrCQlKUEFLRV9TVEVQM0JfaW5pdDsKKysJCUpQQUtFX1NURVAxX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDFfaW5pdDsKKysJCUpQQUtFX1NURVAzQl9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7CisrCQlKUEFLRV9DVFhfbmV3OworKwkJSlBBS0VfQ1RYX2ZyZWU7CisrCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKKysJCUpQQUtFX1NURVAzQV9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKKysJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAxX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMl9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDNBX2luaXQ7CisrCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOworKwkJSlBBS0VfU1RFUDJfaW5pdDsKKysJCXBxdWV1ZV9zaXplOworKwkJaTJkX1RTX0FDQ1VSQUNZOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOworKwkJRVZQX1BLRVlfQ1RYX25ldzsKKysJCWkyZF9UU19UU1RfSU5GTzsKKysJCUVWUF9QS0VZX2FzbjFfZmluZDsKKysJCURTT19NRVRIT0RfYmVvczsKKysJCVRTX0NPTkZfbG9hZF9jZXJ0OworKwkJVFNfUkVRX2dldF9leHQ7CisrCQlFVlBfUEtFWV9zaWduX2luaXQ7CisrCQlBU04xX2l0ZW1fcHJpbnQ7CisrCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7CisrCQlUU19SRVNQX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOworKwkJRVZQX1BLRVlfYXNuMV9hZGQwOworKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOworKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOworKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKKysJCVRTX1RTVF9JTkZPX3NldF90aW1lOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKKysJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKKysJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87CisrCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKKysJCWQyaV9UU19SRVNQX2ZwOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKKysJCVdISVJMUE9PTF9Jbml0OworKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87CisrCQlFVlBfUEtFWV9rZXlnZW47CisrCQlFVlBfRGlnZXN0U2lnbkluaXQ7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOworKwkJVFNfUkVRX2R1cDsKKysJCUdFTkVSQUxfTkFNRV9kdXA7CisrCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKKysJCVdISVJMUE9PTDsKKysJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKKysJCUVWUF9QS0VZX2FzbjFfbmV3OworKwkJQklPX25ld19OREVGOworKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7CisrCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKKysJCWkyZF9UU19UU1RfSU5GT19iaW87CisrCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKKysJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOworKwkJU01JTUVfd3JpdGVfQVNOMTsKKysJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OworKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7CisrCQlDUllQVE9fVEhSRUFESURfY3B5OworKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOworKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7CisrCQlUU19DT05GX2xvYWRfa2V5OworKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOworKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKKysJCWIyaV9QdWJsaWNLZXlfYmlvOworKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKKysJCUVWUF9QS0VZX25ld19tYWNfa2V5OworKwkJQklPX25ld19DTVM7CisrCQlDUllQVE9fVEhSRUFESURfY21wOworKwkJVFNfUkVRX2V4dF9mcmVlOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKKysJCUVWUF9QS0VZX2dldDBfYXNuMTsKKysJCWQyaV9ORVRTQ0FQRV9YNTA5OworKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKKysJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKKysJCUVWUF9QS0VZX2tleWdlbl9pbml0OworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287CisrCQlUU19SRVFfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOworKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOworKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOworKwkJQk5fYXNjMmJuOworKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOworKwkJZDJpX1RTX0FDQ1VSQUNZOworKwkJRFNPX2dsb2JhbF9sb29rdXA7CisrCQlUU19DT05GX3NldF90c2FfbmFtZTsKKysJCWkyZF9BU04xX1NFVF9BTlk7CisrCQlFTkdJTkVfbG9hZF9nb3N0OworKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKKysJCUFTTjFfUENUWF9nZXRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKKysJCVRTX1JFU1BfbmV3OworKwkJRVNTX0NFUlRfSURfZHVwOworKwkJVFNfU1RBVFVTX0lORk9fZHVwOworKwkJVFNfUkVRX2RlbGV0ZV9leHQ7CisrCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7CisrCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7CisrCQlpMmRfQ01TX2Jpb19zdHJlYW07CisrCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OworKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKKysJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7CisrCQlUU19SRVFfZ2V0X25vbmNlOworKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOworKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOworKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKKysJCUFTTjFfU0VUX0FOWV9pdDsKKysJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKKysJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OworKwkJZDJpX1RTX1RTVF9JTkZPOworKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7CisrCQlkMmlfVFNfUkVTUF9iaW87CisrCQlPVEhFUk5BTUVfY21wOworKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOworKwkJVFNfUkVTUF9DVFhfbmV3OworKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87CisrCQlQS0NTN19maW5hbDsKKysJCUVWUF9QS0VZX2Jhc2VfaWQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7CisrCQlUU19SRVFfc2V0X21zZ19pbXByaW50OworKwkJRVZQX1BLRVlfQ1RYX2N0cmw7CisrCQlUU19DT05GX3NldF9kaWdlc3RzOworKwkJZDJpX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKKysJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOworKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOworKwkJVFNfQUNDVVJBQ1lfbmV3OworKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7CisrCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKKysJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OworKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OworKwkJTkVUU0NBUEVfWDUwOV9mcmVlOworKwkJaTJiX1BWS19iaW87CisrCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOworKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7CisrCQliMmlfUFZLX2JpbzsKKysJCUFTTjFfVVRDVElNRV9hZGo7CisrCQlUU19UU1RfSU5GT19uZXc7CisrCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKKysJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOworKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7CisrCQlUU19UU1RfSU5GT19nZXRfdGltZTsKKysJCVBLQ1M4X3BrZXlfZ2V0MDsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKKysJCU9CSl9hZGRfc2lnaWQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19zaWduOworKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKKysJCUVWUF9QS0VZX3NpZ247CisrCQlPQkpfc2lnaWRfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7CisrCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OworKwkJQVNOMV9USU1FX2FkajsKKysJCVRTX09CSl9wcmludF9iaW87CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKKysJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOworKwkJQ01TX3N0cmVhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXRfY2I7CisrCQlQS0NTN190b19UU19UU1RfSU5GTzsKKysJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOworKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKKysJCWkyZF9UU19SRVNQX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKKysJCVRTX1JFUV9zZXRfbm9uY2U7CisrCQlFU1NfQ0VSVF9JRF9uZXc7CisrCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOworKwkJVFNfUkVRX2dldF9leHRfY291bnQ7CisrCQlCVUZfcmV2ZXJzZTsKKysJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKKysJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7CisrCQlpMmJfUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfVFNfUkVTUDsKKysJCWIyaV9QdWJsaWNLZXk7CisrCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7CisrCQlUU19TVEFUVVNfSU5GT19mcmVlOworKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47CisrCQlPQkpfYnNlYXJjaF9leF87CisrCQlBU04xX2JuX3ByaW50OworKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKKysJCUVWUF9EaWdlc3RWZXJpZnlJbml0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7CisrCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOworKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKKysJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7CisrCQlQS0NTOF9wa2V5X3NldDA7CisrCQlBU04xX1NUUklOR19jb3B5OworKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOworKwkJWDUwOV9DUkxfbWF0Y2g7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7CisrCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OworKwkJZDJpX1RTX1JFU1A7CisrCQlUU19DT05GX2xvYWRfY2VydHM7CisrCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7CisrCQlFUlJfbG9hZF9UU19zdHJpbmdzOworKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247CisrCQlFVlBfUEtFWV9DVFhfZHVwOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OworKwkJaTJiX1B1YmxpY0tleV9iaW87CisrCQlUU19DT05GX3NldF9jZXJ0czsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOworKwkJVFNfVkVSSUZZX0NUWF9mcmVlOworKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOworKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKKysJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKKysJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOworKwkJVFNfUkVRX2dldF92ZXJzaW9uOworKwkJVFNfUkVRX2FkZF9leHQ7CisrCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOworKwkJT0JKX2JzZWFyY2hfOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OworKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07CisrCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7CisrCQlQS0NTN19zaWduX2FkZF9zaWduZXI7CisrCQlkMmlfVFNfVFNUX0lORk9fYmlvOworKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOworKwkJVFNfUkVTUF9wcmludF9iaW87CisrCQlUU19UU1RfSU5GT19nZXRfZXh0czsKKysJCUhNQUNfQ1RYX2NvcHk7CisrCQlQS0NTNV9wYmUyX3NldF9pdjsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOworKwkJYjJpX1ByaXZhdGVLZXk7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOworKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7CisrCQlUU19DT05GX3NldF9zZXJpYWw7CisrCQlUU19UU1RfSU5GT19mcmVlOworKwkJZDJpX1RTX1JFUV9mcDsKKysJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOworKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOworKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7CisrCQlFVlBfQ0lQSEVSX2RvX2FsbDsKKysJCWIyaV9Qcml2YXRlS2V5X2JpbzsKKysJCU9DU1BfQ0VSVElEX2R1cDsKKysJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07CisrCQlUU19NU0dfSU1QUklOVF9kdXA7CisrCQlQS0NTN19wcmludF9jdHg7CisrCQlpMmRfVFNfUkVRX2JpbzsKKysJCUVWUF93aGlybHBvb2w7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7CisrCQlBU04xX1BDVFhfc2V0X2ZsYWdzOworKwkJaTJkX0VTU19DRVJUX0lEOworKwkJVFNfVkVSSUZZX0NUWF9uZXc7CisrCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7CisrCQlFVlBfUEtFWV92ZXJpZnk7CisrCQlXSElSTFBPT0xfRmluYWw7CisrCQlYNTA5X0NSTF9NRVRIT0RfbmV3OworKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKKysJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OworKwkJTkVUU0NBUEVfWDUwOV9pdDsKKysJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOworKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOworKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOworKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7CisrCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOworKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OworKwkJZDJpX1RTX1JFUTsKKysJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7CisrCQlCSU9fZl9hc24xOworKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7CisrCQlFVlBfUEJFX2ZpbmQ7CisrCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7CisrCQlFVlBfUEtFWV9kZXJpdmU7CisrCQlpMmRfVFNfUkVROworKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKKysJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7CisrCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOworKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKKysJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7CisrCQlUU19SRVNQX2dldF90b2tlbjsKKysJCVRTX0FDQ1VSQUNZX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOworKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7CisrCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OworKwkJVFNfUkVTUF9mcmVlOworKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7CisrCQlDTVNfYWRkMV9jcmw7CisrCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7CisrCQlUU19SRVNQX0NUWF9hZGRfbWQ7CisrCQlUU19UU1RfSU5GT19kdXA7CisrCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKKysJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKKysJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKKysJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOworKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247CisrCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87CisrCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7CisrCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOworKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKKysJCVRTX1NUQVRVU19JTkZPX25ldzsKKysJCUVWUF9QS0VZX0NUWF9nZXRfY2I7CisrCQlUU19SRVFfZ2V0X2V4dF9kMmk7CisrCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OworKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7CisrCQlpMmRfTkVUU0NBUEVfWDUwOTsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7CisrCQlFVlBfUEtFWV9hc24xX2NvcHk7CisrCQlBU04xX1RZUEVfY21wOworKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOworKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7CisrCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKKysJCWQyaV9FU1NfU0lHTklOR19DRVJUOworKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7CisrCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKKysJCVRTX1JFUV9zZXRfdmVyc2lvbjsKKysJCUVWUF9QS0VZX2dldDA7CisrCQlCSU9fYXNuMV9zZXRfc3VmZml4OworKwkJaTJkX1RTX1NUQVRVU19JTkZPOworKwkJRVZQX01EX2RvX2FsbDsKKysJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOworKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7CisrCQlFVlBfUEtFWV9tZXRoX2FkZDA7CisrCQlUU19UU1RfSU5GT19zZXRfdHNhOworKwkJRVZQX1BLRVlfbWV0aF9uZXc7CisrCQlXSElSTFBPT0xfVXBkYXRlOworKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7CisrCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKKysJCUVTU19TSUdOSU5HX0NFUlRfZHVwOworKwkJZDJpX1RTX1JFUV9iaW87CisrCQlYNTA5X3RpbWVfYWRqX2V4OworKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOworKwkJZDJpX1RTX1NUQVRVU19JTkZPOworKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKKysJCUJJT19hc24xX2dldF9zdWZmaXg7CisrCQlUU19SRVFfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfZnJlZTsKKysJCVRTX1JFUV9nZXRfZXh0czsKKysJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOworKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKKysJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87CisrCQlpMmRfVFNfUkVTUF9iaW87CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OworKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOworKwkJVFNfUkVRX25ldzsKKysJCVRTX01TR19JTVBSSU5UX25ldzsKKysJCUVWUF9QS0VZX21ldGhfZmluZDsKKysJCUVWUF9QS0VZX2lkOworKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKKysJCWEyaV9HRU5FUkFMX05BTUU7CisrCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOworKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7CisrCQlUU19DT05GX3NldF9wb2xpY2llczsKKysJCUFTTjFfUENUWF9uZXc7CisrCQlFU1NfQ0VSVF9JRF9mcmVlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKKysJCVRTX01TR19JTVBSSU5UX2ZyZWU7CisrCQlUU19WRVJJRllfQ1RYX2luaXQ7CisrCQlQS0NTN19zdHJlYW07CisrCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7CisrCQlUU19DT05GX3NldF9kZWZfcG9saWN5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOworKwkJTkVUU0NBUEVfWDUwOV9uZXc7CisrCQlUU19BQ0NVUkFDWV9mcmVlOworKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87CisrCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7CisrCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKKysJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7CisrCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7CisrCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOworKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOworKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOworKwkJWDUwOV9jaGVja19ha2lkOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKKysJCUFTTjFfUENUWF9mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKKysJCWkyZF9BU04xX2Jpb19zdHJlYW07CisrCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7CisrCQlFVlBfUEtFWV9hc24xX2ZyZWU7CisrCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7CisrCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7CisrCQlHRU5FUkFMX05BTUVfY21wOworKwkJZDJpX0FTTjFfU0VUX0FOWTsKKysJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKKysJCWkyZF9UU19SRVFfZnA7CisrCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7CisrCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7CisrCQlkMmlfRVNTX0NFUlRfSUQ7CisrCQlPQkpfZmluZF9zaWdpZF9hbGdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOworKwkJUEtDUzVfUEJLREYyX0hNQUM7CisrCQlFVlBfUEtFWV9wYXJhbWdlbjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOworKwkJQklPX25ld19QS0NTNzsKKysJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOworKwkJVFNfZXh0X3ByaW50X2JpbzsKKysJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87CisrCQljaGVja19kZWZlcjsKKysJCURTT19wYXRoYnlhZGRyOworKwkJRVZQX1BLRVlfc2V0X3R5cGU7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOworKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OworKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKKysJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OworKwkJWDUwOV9OQU1FX2hhc2hfb2xkOworKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7CisrCQlFVlBfTURfZmxhZ3M7CisrCQlUU19SRVNQX0NUWF9mcmVlOworKwkJRFNBcGFyYW1zX2R1cDsKKysJCURIcGFyYW1zX2R1cDsKKysJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKKysJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKKysJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKKysJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOworKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKKysJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47CisrCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKKysJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OworKworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKKysKKytPUEVOU1NMXzEuMC4xIHsKKysJZ2xvYmFsOgorKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOworKwkJVExTdjFfMV9tZXRob2Q7CisrCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7CisrCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOworKwkJU1NMX2dldF9zcnBfZzsKKysJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKKysJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OworKwkJU1NMX2dldF9zcnBfTjsKKysJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOworKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOworKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOworKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7CisrCQlTU0xfU1JQX0NUWF9pbml0OworKwkJU1JQX0NhbGNfQV9wYXJhbTsKKysJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKKysJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOworKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKKysJCVNTTF9TUlBfQ1RYX2ZyZWU7CisrCQlTU0xfc2V0X2RlYnVnOworKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOworKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOworKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OworKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX2NhY2hlX2hpdDsKKysJCVNTTF9nZXQwX2tzc2xfY3R4OworKwkJU1NMX3NldDBfa3NzbF9jdHg7CisrCQlTU0xfc2V0X3N0YXRlOworKwkJU1NMX0NJUEhFUl9nZXRfaWQ7CisrCQlUTFN2MV8yX21ldGhvZDsKKysJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOworKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7CisrCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7CisrCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7CisrCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKKysJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKKysJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7CisrCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7CisrCisrCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7CisrCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OworKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKKysJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47CisrCQlTUlBfQ2FsY191OworKwkJU1JQX1ZCQVNFX2ZyZWU7CisrCQlTUlBfQ2FsY19jbGllbnRfa2V5OworKwkJU1JQX2dldF9kZWZhdWx0X2dOOworKwkJU1JQX0NhbGNfeDsKKysJCVNSUF9DYWxjX0I7CisrCQlTUlBfVkJBU0VfbmV3OworKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOworKwkJU1JQX0NhbGNfQTsKKysJCVNSUF9WZXJpZnlfQV9tb2RfTjsKKysJCVNSUF9WQkFTRV9pbml0OworKwkJU1JQX1ZlcmlmeV9CX21vZF9OOworKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKKysJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOworKwkJRVZQX2Flc18xOTJfY3RyOworKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87CisrCQlFVlBfUEtFWV9tZXRoX2NvcHk7CisrCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOworKwkJRVZQX2Flc18xMjhfY3RyOworKwkJRVZQX2Flc18yNTZfY3RyOworKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfZmxhZ3M7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7CisrCQlFVlBfYWVzXzEyOF94dHM7CisrCQlFVlBfYWVzXzI1Nl94dHM7CisrCQlFVlBfYWVzXzEyOF9nY207CisrCQlFQ19LRVlfY2xlYXJfZmxhZ3M7CisrCQlFQ19LRVlfc2V0X2ZsYWdzOworKwkJRVZQX2Flc18yNTZfY2NtOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKKysJCUVWUF9hZXNfMTI4X2NjbTsKKysJCUVWUF9hZXNfMTkyX2djbTsKKysJCVg1MDlfQUxHT1Jfc2V0X21kOworKwkJUkFORF9pbml0X2ZpcHM7CisrCQlFVlBfYWVzXzI1Nl9nY207CisrCQlFVlBfYWVzXzE5Ml9jY207CisrCQlDTUFDX0NUWF9jb3B5OworKwkJQ01BQ19DVFhfZnJlZTsKKysJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKKysJCUNNQUNfQ1RYX2NsZWFudXA7CisrCQlDTUFDX0luaXQ7CisrCQlDTUFDX1VwZGF0ZTsKKysJCUNNQUNfcmVzdW1lOworKwkJQ01BQ19DVFhfbmV3OworKwkJQ01BQ19GaW5hbDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKKysJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKKysJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKKysJCUVWUF9yYzRfaG1hY19tZDU7CisrCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOworKwkJQ1JZUFRPX2djbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7CisrCQlFTkdJTkVfbG9hZF9yZHJhbmQ7CisrCQlDUllQVE9fY2NtMTI4X3NldGl2OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19nY20xMjhfYWFkOworKwkJQ1JZUFRPX2NjbTEyOF9pbml0OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19nY20xMjhfbmV3OworKwkJQ1JZUFRPX2NjbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fY2NtMTI4X2FhZDsKKysJCUNSWVBUT19nY20xMjhfaW5pdDsKKysJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKKysJCUVOR0lORV9sb2FkX3JzYXg7CisrCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKKysJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7CisrCQlQS0NTNV9wYmtkZjJfc2V0OworKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOworKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7CisrCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKKysJCVg1MDlfUkVRX3NpZ25fY3R4OworKwkJUlNBX1BTU19QQVJBTVNfbmV3OworKwkJWDUwOV9DUkxfc2lnbl9jdHg7CisrCQlYNTA5X3NpZ25hdHVyZV9kdW1wOworKwkJZDJpX1JTQV9QU1NfUEFSQU1TOworKwkJUlNBX1BTU19QQVJBTVNfaXQ7CisrCQlSU0FfUFNTX1BBUkFNU19mcmVlOworKwkJWDUwOV9zaWduX2N0eDsKKysJCWkyZF9SU0FfUFNTX1BBUkFNUzsKKysJCUFTTjFfaXRlbV9zaWduX2N0eDsKKysJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7CisrCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOworKwkJT1BFTlNTTF9zdGRlcnI7CisrCQlPUEVOU1NMX2NwdWlkX3NldHVwOworKwkJT1BFTlNTTF9zaG93ZmF0YWw7CisrCQlCSU9fbmV3X2RncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKKysJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKKysJCUJJT19zX2RhdGFncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1faXNfc2N0cDsKKysJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKKyt9IE9QRU5TU0xfMS4wLjA7CisrCisrT1BFTlNTTF8xLjAuMWQgeworKwlnbG9iYWw6CisrCQlDUllQVE9fbWVtY21wOworK30gT1BFTlNTTF8xLjAuMTsKKysKKytPUEVOU1NMXzEuMC4yIHsKKysJZ2xvYmFsOgorKwkJU1NMX0NUWF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfc2V0X2FscG5fcHJvdG9zOworKwkJU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2I7CisrCQlTU0xfZ2V0MF9hbHBuX3NlbGVjdGVkOworKwkJU1NMX0NUWF9zZXRfY3VzdG9tX2NsaV9leHQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fc3J2X2V4dDsKKysJCVNTTF9DVFhfc2V0X3Nydl9zdXBwX2RhdGE7CisrCQlTU0xfQ1RYX3NldF9jbGlfc3VwcF9kYXRhOworKwkJU1NMX3NldF9jZXJ0X2NiOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mbzsKKysJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm9fZmlsZTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX2dldDBfcGFyYW07CisrCQlTU0xfZ2V0MF9wYXJhbTsKKysJCVNTTF9jZXJ0c19jbGVhcjsKKysJCURUTFN2MV8yX21ldGhvZDsKKysJCURUTFN2MV8yX3NlcnZlcl9tZXRob2Q7CisrCQlEVExTdjFfMl9jbGllbnRfbWV0aG9kOworKwkJRFRMU19tZXRob2Q7CisrCQlEVExTX3NlcnZlcl9tZXRob2Q7CisrCQlEVExTX2NsaWVudF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldF9zc2xfbWV0aG9kOworKwkJU1NMX0NUWF9nZXQwX2NlcnRpZmljYXRlOworKwkJU1NMX0NUWF9nZXQwX3ByaXZhdGVrZXk7CisrCQlTU0xfQ09NUF9zZXQwX2NvbXByZXNzaW9uX21ldGhvZHM7CisrCQlTU0xfQ09NUF9mcmVlX2NvbXByZXNzaW9uX21ldGhvZHM7CisrCQlTU0xfQ0lQSEVSX2ZpbmQ7CisrCQlTU0xfaXNfc2VydmVyOworKwkJU1NMX0NPTkZfQ1RYX25ldzsKKysJCVNTTF9DT05GX0NUWF9maW5pc2g7CisrCQlTU0xfQ09ORl9DVFhfZnJlZTsKKysJCVNTTF9DT05GX0NUWF9zZXRfZmxhZ3M7CisrCQlTU0xfQ09ORl9DVFhfY2xlYXJfZmxhZ3M7CisrCQlTU0xfQ09ORl9DVFhfc2V0MV9wcmVmaXg7CisrCQlTU0xfQ09ORl9DVFhfc2V0X3NzbDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsX2N0eDsKKysJCVNTTF9DT05GX2NtZDsKKysJCVNTTF9DT05GX2NtZF9hcmd2OworKwkJU1NMX0NPTkZfY21kX3ZhbHVlX3R5cGU7CisrCQlTU0xfdHJhY2U7CisrCQlTU0xfQ0lQSEVSX3N0YW5kYXJkX25hbWU7CisrCQlTU0xfZ2V0X3Rsc2FfcmVjb3JkX2J5bmFtZTsKKysJCUFTTjFfVElNRV9kaWZmOworKwkJQklPX2hleF9zdHJpbmc7CisrCQlDTVNfUmVjaXBpZW50SW5mb19nZXQwX3BrZXlfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fZW5jcnlwdDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX21kX2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmF0dXJlOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2FsZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9yZWtzOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX29yaWdfaWQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX29yaWdfaWRfY21wOworKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9nZXQwX2lkOworKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9jZXJ0X2NtcDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfc2V0MF9wa2V5OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2N0eDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZGVjcnlwdDsKKysJCUNNU19TaGFyZWRJbmZvX2VuY29kZTsKKysJCURIX2NvbXB1dGVfa2V5X3BhZGRlZDsKKysJCWQyaV9ESHhwYXJhbXM7CisrCQlpMmRfREh4cGFyYW1zOworKwkJREhfZ2V0XzEwMjRfMTYwOworKwkJREhfZ2V0XzIwNDhfMjI0OworKwkJREhfZ2V0XzIwNDhfMjU2OworKwkJREhfS0RGX1g5XzQyOworKwkJRUNESF9LREZfWDlfNjI7CisrCQlFQ0RTQV9NRVRIT0RfbmV3OworKwkJRUNEU0FfTUVUSE9EX2ZyZWU7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX2dldF9hcHBfZGF0YTsKKysJCUVDRFNBX01FVEhPRF9zZXRfc2lnbjsKKysJCUVDRFNBX01FVEhPRF9zZXRfc2lnbl9zZXR1cDsKKysJCUVDRFNBX01FVEhPRF9zZXRfdmVyaWZ5OworKwkJRUNEU0FfTUVUSE9EX3NldF9mbGFnczsKKysJCUVDRFNBX01FVEhPRF9zZXRfbmFtZTsKKysJCUVWUF9kZXNfZWRlM193cmFwOworKwkJRVZQX2Flc18xMjhfd3JhcDsKKysJCUVWUF9hZXNfMTkyX3dyYXA7CisrCQlFVlBfYWVzXzI1Nl93cmFwOworKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMjU2OworKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMjU2OworKwkJQ1JZUFRPXzEyOF93cmFwOworKwkJQ1JZUFRPXzEyOF91bndyYXA7CisrCQlPQ1NQX1JFUV9DVFhfbmJpbzsKKysJCU9DU1BfUkVRX0NUWF9uZXc7CisrCQlPQ1NQX3NldF9tYXhfcmVzcG9uc2VfbGVuZ3RoOworKwkJT0NTUF9SRVFfQ1RYX2kyZDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvX2QyaTsKKysJCU9DU1BfUkVRX0NUWF9nZXQwX21lbV9iaW87CisrCQlPQ1NQX1JFUV9DVFhfaHR0cDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQX21nZjE7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21nZjE7CisrCQlSU0FfT0FFUF9QQVJBTVNfZnJlZTsKKysJCVJTQV9PQUVQX1BBUkFNU19pdDsKKysJCVJTQV9PQUVQX1BBUkFNU19uZXc7CisrCQlTU0xfZ2V0X3NpZ2FsZ3M7CisrCQlTU0xfZ2V0X3NoYXJlZF9zaWdhbGdzOworKwkJU1NMX2NoZWNrX2NoYWluOworKwkJWDUwOV9jaGFpbl91cF9yZWY7CisrCQlYNTA5X2h0dHBfbmJpbzsKKysJCVg1MDlfQ1JMX2h0dHBfbmJpbzsKKysJCVg1MDlfUkVWT0tFRF9kdXA7CisrCQlpMmRfcmVfWDUwOV90YnM7CisrCQlYNTA5X2dldDBfc2lnbmF0dXJlOworKwkJWDUwOV9nZXRfc2lnbmF0dXJlX25pZDsKKysJCVg1MDlfQ1JMX2RpZmY7CisrCQlYNTA5X2NoYWluX2NoZWNrX3N1aXRlYjsKKysJCVg1MDlfQ1JMX2NoZWNrX3N1aXRlYjsKKysJCVg1MDlfY2hlY2tfaG9zdDsKKysJCVg1MDlfY2hlY2tfZW1haWw7CisrCQlYNTA5X2NoZWNrX2lwOworKwkJWDUwOV9jaGVja19pcF9hc2M7CisrCQlYNTA5X1NUT1JFX3NldF9sb29rdXBfY3Jsc19jYjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfc3RvcmU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2hvc3Q7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQxX2hvc3Q7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfaG9zdGZsYWdzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9wZWVybmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfZW1haWw7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcF9hc2M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX25hbWU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfY291bnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwOworKwkJWDUwOVYzX0VYVF9mcmVlOworKwkJRUNfR1JPVVBfZ2V0X21vbnRfZGF0YTsKKysJCUVDX2N1cnZlX25pZDJuaXN0OworKwkJRUNfY3VydmVfbmlzdDJuaWQ7CisrCQlQRU1fd3JpdGVfYmlvX0RIeHBhcmFtczsKKysJCVBFTV93cml0ZV9ESHhwYXJhbXM7CisrCQlTU0xfQ1RYX2FkZF9jbGllbnRfY3VzdG9tX2V4dDsKKysJCVNTTF9DVFhfYWRkX3NlcnZlcl9jdXN0b21fZXh0OworKwkJU1NMX2V4dGVuc2lvbl9zdXBwb3J0ZWQ7CisrCQlCVUZfc3RybmxlbjsKKysJCXNrX2RlZXBfY29weTsKKysJCVNTTF90ZXN0X2Z1bmN0aW9uczsKKyt9IE9QRU5TU0xfMS4wLjFkOworKworSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjAgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMTAgQEAKKytPUEVOU1NMXzEuMC4wIHsKKysJZ2xvYmFsOgorKwkJYmluZF9lbmdpbmU7CisrCQl2X2NoZWNrOworKwkJT1BFTlNTTF9pbml0OworKwkJT1BFTlNTTF9maW5pc2g7CisrCWxvY2FsOgorKwkJKjsKKyt9OworKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDFhOWIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDNkOTE5OTQyM2Q0ODc2NjY0OWEyYjJlYmIzOTI0ZTg5MmVkMTZmYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDIwIEp1biAyMDE3IDE1OjMyOjA4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW5zc2w6IEZvcmNlIHNvZnQgbGluayB0byBhdm9pZCByYXJlIHJhY2UKKworVGhpcyBwYXRjaCB3b3JrcyBhcm91bmQgYSByYXJlIHBhcmFsbGVsIGJ1aWxkIHJhY2UgY29uZGl0aW9uLiAKK1RoZSBlcnJvciBzZWVuIGlzOgorCitsbjogZmFpbGVkIHRvIGNyZWF0ZSBzeW1ib2xpYyBsaW5rICdsaWJzc2wuc28nOiBGaWxlIGV4aXN0cworbWFrZVs0XTogKioqIFtNYWtlZmlsZS5zaGFyZWQ6MTcxOiBsaW5rX2EuZ251XSBFcnJvciAxCittYWtlWzRdOiBMZWF2aW5nIGRpcmVjdG9yeQorJy8uLi4vYnVpbGQvdG1wLWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L29wZW5zc2wtbmF0aXZlLzEuMC4yay1yMC9vcGVuc3NsLTEuMC4yaycKKworVGhlIG9wZW5zc2wgdGVhbSBpcyByZXdyaXRpbmcgdGhlaXIgYnVpbGQgZmlsZXMgc28gaXQncyBub3QKK2FwcHJvcHJpYXRlIGZvciBvcGVuc3NsIHVwc3RyZWFtIGFuZCBmaXhpbmcgdGhlIHJvb3QgY2F1c2Ugb2YKK3RoZSBNYWtlZmlsZSByYWNlIGNvbmRpdGlvbiB3YXMgYWxzbyBub3QgcHVyc3VlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtidWlsZCBydWxlcyByZXdyaXRlIGluIHByb2dyZXNzXQorU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuc2hhcmVkIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLnNoYXJlZCBiL01ha2VmaWxlLnNoYXJlZAoraW5kZXggZThkMjIyYS4uMWJmZjkyZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnNoYXJlZAorKysrIGIvTWFrZWZpbGUuc2hhcmVkCitAQCAtMTE4LDE0ICsxMTgsMTQgQEAKKyAJCWlmIFsgLW4gIiQkU0hMSUJfQ09NUEFUIiBdOyB0aGVuIFwKKyAJCQlmb3IgeCBpbiAkJFNITElCX0NPTVBBVDsgZG8gXAorIAkJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCR4JCRTSExJQl9TVUZGSVg7IFwKKy0JCQkJICBsbiAtcyAkJHByZXYgJCRTSExJQiQkeCQkU0hMSUJfU1VGRklYICk7IFwKKysJCQkJICBsbiAtc2YgJCRwcmV2ICQkU0hMSUIkJHgkJFNITElCX1NVRkZJWCApOyBcCisgCQkJCXByZXY9JCRTSExJQiQkeCQkU0hMSUJfU1VGRklYOyBcCisgCQkJZG9uZTsgXAorIAkJZmk7IFwKKyAJCWlmIFsgLW4gIiQkU0hMSUJfU09WRVIiIF07IHRoZW4gXAorIAkJCVsgLWUgIiQkU0hMSUIkJFNITElCX1NVRkZJWCIgXSB8fCBcCisgCQkJKCAkKFNFVF9YKTsgcm0gLWYgJCRTSExJQiQkU0hMSUJfU1VGRklYOyBcCistCQkJICBsbiAtcyAkJHByZXYgJCRTSExJQiQkU0hMSUJfU1VGRklYICk7IFwKKysJCQkgIGxuIC1zZiAkJHByZXYgJCRTSExJQiQkU0hMSUJfU1VGRklYICk7IFwKKyAJCWZpOyBcCisgCWZpCisgCistLSAKKzIuOS4zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMjJmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL01ha2VmaWxlcy1wdGVzdC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIGExNzZjNjlmNGZkZmJmYTdlNGNjYjc5ZDkxYzNiNjYwMmRhN2U2OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGVuZWEuY29tPgorRGF0ZTogVGh1LCAyNCBBcHIgMjAxNCAxOToyODoyNSArMDIwMAorU3ViamVjdDogW1BBVENIIDE5LzI4XSBvcGVuc3NsOiBlbmFibGUgcHRlc3Qgc3VwcG9ydAorCitBZGQgJ2J1aWxkdGVzdCcgYW5kICdydW50ZXN0JyB0YXJnZXRzIHRvIE1ha2VmaWxlLCB0byBidWlsZCBhbmQgcnVuIHRlc3RzCitjcm9zcy1jb21waWxlZC4KKworU2lnbmVkLW9mZi1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBlbmVhLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgTWFrZWZpbGUub3JnICAgICAgIHwgIDEwICstCisgTWFrZWZpbGUub3JnLm9yaWcgIHwgICA3ICstCisgdGVzdC9NYWtlZmlsZSAgICAgIHwgIDEzICstCisgdGVzdC9NYWtlZmlsZS5vcmlnIHwgOTg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxMDA5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvTWFrZWZpbGUub3JpZworCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUub3JnIGIvTWFrZWZpbGUub3JnCitpbmRleCAxMTFmYmJhLi44ZTc5MzZjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUub3JnCisrKysgYi9NYWtlZmlsZS5vcmcKK0BAIC00NjgsOCArNDY4LDE2IEBAIHJlaGFzaC50aW1lOiBjZXJ0cyBhcHBzCisgdGVzdDogICB0ZXN0cworIAorIHRlc3RzOiByZWhhc2gKKysJJChNQUtFKSBidWlsZHRlc3QKKysJJChNQUtFKSBydW50ZXN0CisrCisrYnVpbGR0ZXN0OgorKwlAKGNkIHRlc3QgJiYgXAorKwkkKENMRUFSRU5WKSAmJiAkKE1BS0UpIC1lICQoQlVJTERFTlYpIFRPUD0uLiBURVNUUz0nJChURVNUUyknIE9QRU5TU0xfREVCVUdfTUVNT1JZPW9uIE9QRU5TU0xfQ09ORj0uLi9hcHBzL29wZW5zc2wuY25mIGV4ZSBhcHBzKTsKKysKKytydW50ZXN0OgorIAlAKGNkIHRlc3QgJiYgZWNobyAidGVzdGluZy4uLiIgJiYgXAorLQkkKENMRUFSRU5WKSAmJiAkKE1BS0UpIC1lICQoQlVJTERFTlYpIFRPUD0uLiBURVNUUz0nJChURVNUUyknIE9QRU5TU0xfREVCVUdfTUVNT1JZPW9uIE9QRU5TU0xfQ09ORj0uLi9hcHBzL29wZW5zc2wuY25mIHRlc3RzICk7CisrCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgYWxsdGVzdHMgKTsKKyAJT1BFTlNTTF9DT05GPWFwcHMvb3BlbnNzbC5jbmYgdXRpbC9vcGVuc3Nsd3JhcC5zaCB2ZXJzaW9uIC1hCisgCisgcmVwb3J0OgorZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUgYi90ZXN0L01ha2VmaWxlCitpbmRleCBhMWY3ZWViLi5iMjk4NGM0IDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlZmlsZQorKysrIGIvdGVzdC9NYWtlZmlsZQorQEAgLTE1MCw3ICsxNTAsNyBAQCB0ZXN0czoJZXhlIGFwcHMgJChURVNUUykKKyBhcHBzOgorIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCisgCistYWxsdGVzdHM6IFwKKythbGwtdGVzdHM9IFwKKyAJdGVzdF9kZXMgdGVzdF9pZGVhIHRlc3Rfc2hhIHRlc3RfbWQ0IHRlc3RfbWQ1IHRlc3RfaG1hYyBcCisgCXRlc3RfbWQyIHRlc3RfbWRjMiB0ZXN0X3dwIFwKKyAJdGVzdF9ybWQgdGVzdF9yYzIgdGVzdF9yYzQgdGVzdF9yYzUgdGVzdF9iZiB0ZXN0X2Nhc3QgdGVzdF9hZXMgXAorQEAgLTE2Miw2ICsxNjIsMTEgQEAgYWxsdGVzdHM6IFwKKyAJdGVzdF9jb25zdGFudF90aW1lIHRlc3RfdmVyaWZ5X2V4dHJhIHRlc3RfY2xpZW50aGVsbG8gdGVzdF9zc2x2MmNvbmZ0ZXN0IFwKKyAJdGVzdF9kdGxzIHRlc3RfYmFkX2R0bHMgdGVzdF9mYXRhbGVycgorIAorK2FsbHRlc3RzOgorKwlAKGZvciBpIGluICQoYWxsLXRlc3RzKTsgZG8gXAorKwkoICQoTUFLRSkgJCRpICYmIGVjaG8gIlBBU1M6ICQkaSIgKSB8fCBlY2hvICJGQUlMOiAkJGkiOyBcCisrCWRvbmUpCisrCisgdGVzdF9ldnA6ICQoRVZQVEVTVCkkKEVYRV9FWFQpIGV2cHRlc3RzLnR4dAorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKEVWUFRFU1QpIGV2cHRlc3RzLnR4dAorIAorQEAgLTIzMCw3ICsyMzUsNyBAQCB0ZXN0X3g1MDk6IC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdHg1MDkgdGVzdHg1MDkucGVtIHYzLWNlcnQxLnBlbSB2My1jZXJ0Mi5wZQorIAllY2hvIHRlc3Qgc2Vjb25kIHg1MDl2MyBjZXJ0aWZpY2F0ZQorIAlzaCAuL3R4NTA5IHYzLWNlcnQyLnBlbSAyPi9kZXYvbnVsbAorIAorLXRlc3RfcnNhOiAkKFJTQVRFU1QpJChFWEVfRVhUKSAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRyc2EgdGVzdHJzYS5wZW0KKyt0ZXN0X3JzYTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0cnNhIHRlc3Ryc2EucGVtCisgCUBzaCAuL3Ryc2EgMj4vZGV2L251bGwKKyAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChSU0FURVNUKQorIAorQEAgLTMzMSwxMSArMzM2LDExIEBAIHRlc3RfdHNhOiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRlc3R0c2EgQ0F0c2EuY25mIC4uL3V0aWwvc2hsaWJfd3JhcC5zaAorIAkgIHNoIC4vdGVzdHRzYTsgXAorIAlmaQorIAorLXRlc3RfaWdlOiAkKElHRVRFU1QpJChFWEVfRVhUKQorK3Rlc3RfaWdlOgorIAlAZWNobyAiVGVzdCBJR0UgbW9kZSIKKyAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChJR0VURVNUKQorIAorLXRlc3RfanBha2U6ICQoSlBBS0VURVNUKSQoRVhFX0VYVCkKKyt0ZXN0X2pwYWtlOgorIAlAZWNobyAiVGVzdCBKUEFLRSIKKyAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChKUEFLRVRFU1QpCisgCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTdiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitBZGQgbXVzbCB0cmlwbGV0IHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMmEub3JpZy9Db25maWd1cmUKKysrKyBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKK0BAIC00MzEsNyArNDMxLDcgQEAgbXkgJXRhYmxlPSgKKyAjCisgIyAgICAgICAuL0NvbmZpZ3VyZSBsaW51eC1hcm12NCAtbWFyY2g9YXJtdjYgLURfX0FSTV9NQVhfQVJDSF9fPTgKKyAjCistImxpbnV4LWFybXY0IiwJImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1hcm12NCIsICJnY2M6IC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKyAibGludXgtYWFyY2g2NCIsImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FhcmNoNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICMgQ29uZmlndXJlIHNjcmlwdCBhZGRzIG1pbmltYWxseSByZXF1aXJlZCAtbWFyY2ggZm9yIGFzc2VtYmx5IHN1cHBvcnQsCisgIyBpZiBubyAtbWFyY2ggd2FzIHNwZWNpZmllZCBhdCBjb21tYW5kIGxpbmUuIG1pcHMzMiBhbmQgbWlwczY0IGJlbG93CitAQCAtNTA0LDQgKzUwNCw2IEBAIG15ICV0YWJsZT0oCisgImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbXVzbGVhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LW11c2xlYWJpLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisgCisgImxpbnV4LWF2cjMyIiwiJEVOVnsnQ0MnfTotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS4iLAorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwMTU4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLXRhcmdldHMucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworVGhlIG51bWJlciBvZiBjb2xvbnMgYXJlIGltcG9ydGFudCA6KQorCisKKy0tLQorIENvbmZpZ3VyZSB8ICAgMTYgKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK0luZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorQEAgLTQ0Myw2ICs0NDMsMjEgQEAgbXkgJXRhYmxlPSgKKyAibGludXgtYWxwaGEtY2NjIiwiY2NjOi1mYXN0IC1yZWFkb25seV9zdHJpbmdzIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX0iLAorICJsaW51eC1hbHBoYStid3gtY2NjIiwiY2NjOi1mYXN0IC1yZWFkb25seV9zdHJpbmdzIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX0iLAorIAorKyAKKysjIExpbnV4IG9uIEFSTQorKyJsaW51eC1lbGYtYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWVsZi1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1nbnVlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1nbnVlYWJpLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrCisrImxpbnV4LWF2cjMyIiwiJEVOVnsnQ0MnfTotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS4iLAorKworKyMjIyMgTGludXggb24gTUlQUy9NSVBTNjQKKysibGludXgtbWlwcyIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LW1pcHM2NCIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtbWFiaT02NCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbWlwczY0ZWwiLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLW1hYmk9NjQgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LW1pcHNlbCIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrCisgIyBBbmRyb2lkOiBsaW51eC0qIGJ1dCB3aXRob3V0IHBvaW50ZXJzIHRvIGhlYWRlcnMgYW5kIGxpYnMuCisgImFuZHJvaWQiLCJnY2M6LW1hbmRyb2lkIC1JXCQoQU5EUk9JRF9ERVYpL2luY2x1ZGUgLUJcJChBTkRST0lEX0RFVikvbGliIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKyAiYW5kcm9pZC14ODYiLCJnY2M6LW1hbmRyb2lkIC1JXCQoQU5EUk9JRF9ERVYpL2luY2x1ZGUgLUJcJChBTkRST0lEX0RFVikvbGliIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToiLmV2YWx7bXkgJGFzbT0ke3g4Nl9lbGZfYXNtfTskYXNtPX5zLzplbGYvOmFuZHJvaWQvOyRhc219LiI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9jYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NhLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9jYS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9tYW4tZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL25vLXJwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXJwYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL3BpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL3BpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9waWMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL3BpYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZGQ5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworSW5kZXg6IG9wZW5zc2wtMS4wLjJkL2NyeXB0by9vcGVuc3Nsdi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMmQub3JpZy9jcnlwdG8vb3BlbnNzbHYuaAorKysrIG9wZW5zc2wtMS4wLjJkL2NyeXB0by9vcGVuc3Nsdi5oCitAQCAtODgsNyArODgsNyBAQCBleHRlcm4gIkMiIHsKKyAgKiBzaG91bGQgb25seSBrZWVwIHRoZSB2ZXJzaW9ucyB0aGF0IGFyZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50LgorICAqLworICMgZGVmaW5lIFNITElCX1ZFUlNJT05fSElTVE9SWSAiIgorLSMgZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMCIKKysjIGRlZmluZSBTSExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjIiCisgCisgCisgI2lmZGVmICBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwNGVlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw0NjU4IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1Lm9yaWcvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMTY1MSw2ICsxNjUxLDggQEAKKyAJCX0KKyAJfQorIAorKyRzaGFyZWRfbGRmbGFnIC49ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9b3BlbnNzbC5sZCI7CisrCisgb3BlbihJTiwnPE1ha2VmaWxlLm9yZycpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgTWFrZWZpbGUub3JnOiQhXG4iOworIHVubGluaygiJE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbW92ZSBvbGQgJE1ha2VmaWxlLm5ldzokIVxuIiBpZiAtZSAiJE1ha2VmaWxlLm5ldyI7Cisgb3BlbihPVVQsIj4kTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlICRNYWtlZmlsZS5uZXc6JCFcbiI7CitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMjoxOTowOC42MDE4MjcyNjYgKzAxMDAKK0BAIC0wLDAgKzEsNDYwOCBAQAorK09QRU5TU0xfMS4wLjJkIHsKKysJZ2xvYmFsOgorKwkJQklPX2Zfc3NsOworKwkJQklPX25ld19idWZmZXJfc3NsX2Nvbm5lY3Q7CisrCQlCSU9fbmV3X3NzbDsKKysJCUJJT19uZXdfc3NsX2Nvbm5lY3Q7CisrCQlCSU9fcHJveHlfc3NsX2NvcHlfc2Vzc2lvbl9pZDsKKysJCUJJT19zc2xfY29weV9zZXNzaW9uX2lkOworKwkJQklPX3NzbF9zaHV0ZG93bjsKKysJCWQyaV9TU0xfU0VTU0lPTjsKKysJCURUTFN2MV9jbGllbnRfbWV0aG9kOworKwkJRFRMU3YxX21ldGhvZDsKKysJCURUTFN2MV9zZXJ2ZXJfbWV0aG9kOworKwkJRVJSX2xvYWRfU1NMX3N0cmluZ3M7CisrCQlpMmRfU1NMX1NFU1NJT047CisrCQlrc3NsX2J1aWxkX3ByaW5jaXBhbF8yOworKwkJa3NzbF9jZ2V0X3RrdDsKKysJCWtzc2xfY2hlY2tfYXV0aGVudDsKKysJCWtzc2xfY3R4X2ZyZWU7CisrCQlrc3NsX2N0eF9uZXc7CisrCQlrc3NsX2N0eF9zZXRrZXk7CisrCQlrc3NsX2N0eF9zZXRwcmluYzsKKysJCWtzc2xfY3R4X3NldHN0cmluZzsKKysJCWtzc2xfY3R4X3Nob3c7CisrCQlrc3NsX2Vycl9zZXQ7CisrCQlrc3NsX2tyYjVfZnJlZV9kYXRhX2NvbnRlbnRzOworKwkJa3NzbF9zZ2V0X3RrdDsKKysJCWtzc2xfc2tpcF9jb25mb3VuZDsKKysJCWtzc2xfdmFsaWRhdGVfdGltZXM7CisrCQlQRU1fcmVhZF9iaW9fU1NMX1NFU1NJT047CisrCQlQRU1fcmVhZF9TU0xfU0VTU0lPTjsKKysJCVBFTV93cml0ZV9iaW9fU1NMX1NFU1NJT047CisrCQlQRU1fd3JpdGVfU1NMX1NFU1NJT047CisrCQlTU0xfYWNjZXB0OworKwkJU1NMX2FkZF9jbGllbnRfQ0E7CisrCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOworKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqc190b19zdGs7CisrCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqZWN0c190b19zdGFjazsKKysJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmpzX3RvX3N0azsKKysJCVNTTF9hbGVydF9kZXNjX3N0cmluZzsKKysJCVNTTF9hbGVydF9kZXNjX3N0cmluZ19sb25nOworKwkJU1NMX2FsZXJ0X3R5cGVfc3RyaW5nOworKwkJU1NMX2FsZXJ0X3R5cGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfY2FsbGJhY2tfY3RybDsKKysJCVNTTF9jaGVja19wcml2YXRlX2tleTsKKysJCVNTTF9DSVBIRVJfZGVzY3JpcHRpb247CisrCQlTU0xfQ0lQSEVSX2dldF9iaXRzOworKwkJU1NMX0NJUEhFUl9nZXRfbmFtZTsKKysJCVNTTF9DSVBIRVJfZ2V0X3ZlcnNpb247CisrCQlTU0xfY2xlYXI7CisrCQlTU0xfQ09NUF9hZGRfY29tcHJlc3Npb25fbWV0aG9kOworKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzaW9uX21ldGhvZHM7CisrCQlTU0xfQ09NUF9nZXRfY29tcHJlc3NfbWV0aG9kczsKKysJCVNTTF9DT01QX2dldF9uYW1lOworKwkJU1NMX2Nvbm5lY3Q7CisrCQlTU0xfY29weV9zZXNzaW9uX2lkOworKwkJU1NMX2N0cmw7CisrCQlTU0xfQ1RYX2FkZF9jbGllbnRfQ0E7CisrCQlTU0xfQ1RYX2FkZF9zZXNzaW9uOworKwkJU1NMX0NUWF9jYWxsYmFja19jdHJsOworKwkJU1NMX0NUWF9jaGVja19wcml2YXRlX2tleTsKKysJCVNTTF9DVFhfY3RybDsKKysJCVNTTF9DVFhfZmx1c2hfc2Vzc2lvbnM7CisrCQlTU0xfQ1RYX2ZyZWU7CisrCQlTU0xfQ1RYX2dldF9jZXJ0X3N0b3JlOworKwkJU1NMX0NUWF9nZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfQ1RYX2dldF9jbGllbnRfY2VydF9jYjsKKysJCVNTTF9DVFhfZ2V0X2V4X2RhdGE7CisrCQlTU0xfQ1RYX2dldF9leF9uZXdfaW5kZXg7CisrCQlTU0xfQ1RYX2dldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX0NUWF9nZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfQ1RYX2dldF90aW1lb3V0OworKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrOworKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X21vZGU7CisrCQlTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9uczsKKysJCVNTTF9DVFhfbmV3OworKwkJU1NMX0NUWF9yZW1vdmVfc2Vzc2lvbjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfZ2V0X2NiOworKwkJU1NMX0NUWF9zZXNzX2dldF9uZXdfY2I7CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X3JlbW92ZV9jYjsKKysJCVNTTF9DVFhfc2Vzc2lvbnM7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X2dldF9jYjsKKysJCVNTTF9DVFhfc2Vzc19zZXRfbmV3X2NiOworKwkJU1NMX0NUWF9zZXNzX3NldF9yZW1vdmVfY2I7CisrCQlTU0xfQ1RYX3NldDFfcGFyYW07CisrCQlTU0xfQ1RYX3NldF9jZXJ0X3N0b3JlOworKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYjsKKysJCVNTTF9DVFhfc2V0X2NpcGhlcl9saXN0OworKwkJU1NMX0NUWF9zZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9jYjsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2VuZ2luZTsKKysJCVNTTF9DVFhfc2V0X2Nvb2tpZV9nZW5lcmF0ZV9jYjsKKysJCVNTTF9DVFhfc2V0X2Nvb2tpZV92ZXJpZnlfY2I7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYjsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHM7CisrCQlTU0xfQ1RYX3NldF9kZWZfcGFzc3dkX2NiX3VkOworKwkJU1NMX0NUWF9zZXRfZGVmX3ZlcmlmeV9wYXRoczsKKysJCVNTTF9DVFhfc2V0X2V4X2RhdGE7CisrCQlTU0xfQ1RYX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOworKwkJU1NMX0NUWF9zZXRfaW5mb19jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X21zZ19jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wc2tfc2VydmVyX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHVycG9zZTsKKysJCVNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX0NUWF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OworKwkJU1NMX0NUWF9zZXRfc3NsX3ZlcnNpb247CisrCQlTU0xfQ1RYX3NldF90aW1lb3V0OworKwkJU1NMX0NUWF9zZXRfdG1wX2RoX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfdG1wX2VjZGhfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90bXBfcnNhX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfdHJ1c3Q7CisrCQlTU0xfQ1RYX3NldF92ZXJpZnk7CisrCQlTU0xfQ1RYX3NldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0X2NoYWluX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX0FTTjE7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfZmlsZTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXk7CisrCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9wc2tfaWRlbnRpdHlfaGludDsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXk7CisrCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5X2ZpbGU7CisrCQlTU0xfZG9faGFuZHNoYWtlOworKwkJU1NMX2R1cDsKKysJCVNTTF9kdXBfQ0FfbGlzdDsKKysJCVNTTGVheV9hZGRfc3NsX2FsZ29yaXRobXM7CisrCQlTU0xfZnJlZTsKKysJCVNTTF9nZXQxX3Nlc3Npb247CisrCQlTU0xfZ2V0X2NlcnRpZmljYXRlOworKwkJU1NMX2dldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9nZXRfY2lwaGVyczsKKysJCVNTTF9nZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyOworKwkJU1NMX2dldF9jdXJyZW50X2NvbXByZXNzaW9uOworKwkJU1NMX2dldF9jdXJyZW50X2V4cGFuc2lvbjsKKysJCVNTTF9nZXRfZGVmYXVsdF90aW1lb3V0OworKwkJU1NMX2dldF9lcnJvcjsKKysJCVNTTF9nZXRfZXhfZGF0YTsKKysJCVNTTF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHg7CisrCQlTU0xfZ2V0X2V4X2RfWDUwOV9TVE9SRV9DVFhfaWR4OworKwkJU1NMX2dldF9leF9uZXdfaW5kZXg7CisrCQlTU0xfZ2V0X2ZkOworKwkJU1NMX2dldF9maW5pc2hlZDsKKysJCVNTTF9nZXRfaW5mb19jYWxsYmFjazsKKysJCVNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluOworKwkJU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlOworKwkJU1NMX2dldF9wZWVyX2ZpbmlzaGVkOworKwkJU1NMX2dldF9wcml2YXRla2V5OworKwkJU1NMX2dldF9wc2tfaWRlbnRpdHk7CisrCQlTU0xfZ2V0X3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX2dldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9nZXRfcmJpbzsKKysJCVNTTF9nZXRfcmVhZF9haGVhZDsKKysJCVNTTF9nZXRfcmZkOworKwkJU1NMX2dldF9zZXJ2ZXJuYW1lOworKwkJU1NMX2dldF9zZXJ2ZXJuYW1lX3R5cGU7CisrCQlTU0xfZ2V0X3Nlc3Npb247CisrCQlTU0xfZ2V0X3NoYXJlZF9jaXBoZXJzOworKwkJU1NMX2dldF9zaHV0ZG93bjsKKysJCVNTTF9nZXRfU1NMX0NUWDsKKysJCVNTTF9nZXRfc3NsX21ldGhvZDsKKysJCVNTTF9nZXRfdmVyaWZ5X2NhbGxiYWNrOworKwkJU1NMX2dldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfZ2V0X3ZlcmlmeV9tb2RlOworKwkJU1NMX2dldF92ZXJpZnlfcmVzdWx0OworKwkJU1NMX2dldF92ZXJzaW9uOworKwkJU1NMX2dldF93YmlvOworKwkJU1NMX2dldF93ZmQ7CisrCQlTU0xfaGFzX21hdGNoaW5nX3Nlc3Npb25faWQ7CisrCQlTU0xfbGlicmFyeV9pbml0OworKwkJU1NMX2xvYWRfY2xpZW50X0NBX2ZpbGU7CisrCQlTU0xfbG9hZF9lcnJvcl9zdHJpbmdzOworKwkJU1NMX25ldzsKKysJCVNTTF9wZWVrOworKwkJU1NMX3BlbmRpbmc7CisrCQlTU0xfcmVhZDsKKysJCVNTTF9yZW5lZ290aWF0ZTsKKysJCVNTTF9yZW5lZ290aWF0ZV9wZW5kaW5nOworKwkJU1NMX3JzdGF0ZV9zdHJpbmc7CisrCQlTU0xfcnN0YXRlX3N0cmluZ19sb25nOworKwkJU1NMX1NFU1NJT05fY21wOworKwkJU1NMX1NFU1NJT05fZnJlZTsKKysJCVNTTF9TRVNTSU9OX2dldF9leF9kYXRhOworKwkJU1NMX1NFU1NJT05fZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9TRVNTSU9OX2dldF9pZDsKKysJCVNTTF9TRVNTSU9OX2dldF90aW1lOworKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWVvdXQ7CisrCQlTU0xfU0VTU0lPTl9oYXNoOworKwkJU1NMX1NFU1NJT05fbmV3OworKwkJU1NMX1NFU1NJT05fcHJpbnQ7CisrCQlTU0xfU0VTU0lPTl9wcmludF9mcDsKKysJCVNTTF9TRVNTSU9OX3NldF9leF9kYXRhOworKwkJU1NMX1NFU1NJT05fc2V0X3RpbWU7CisrCQlTU0xfU0VTU0lPTl9zZXRfdGltZW91dDsKKysJCVNTTF9zZXQxX3BhcmFtOworKwkJU1NMX3NldF9hY2NlcHRfc3RhdGU7CisrCQlTU0xfc2V0X2JpbzsKKysJCVNTTF9zZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfc2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX3NldF9jb25uZWN0X3N0YXRlOworKwkJU1NMX3NldF9leF9kYXRhOworKwkJU1NMX3NldF9mZDsKKysJCVNTTF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKKysJCVNTTF9zZXRfaW5mb19jYWxsYmFjazsKKysJCVNTTF9zZXRfbXNnX2NhbGxiYWNrOworKwkJU1NMX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOworKwkJU1NMX3NldF9wc2tfc2VydmVyX2NhbGxiYWNrOworKwkJU1NMX3NldF9wdXJwb3NlOworKwkJU1NMX3NldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9zZXRfcmVhZF9haGVhZDsKKysJCVNTTF9zZXRfcmZkOworKwkJU1NMX3NldF9zZXNzaW9uOworKwkJU1NMX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7CisrCQlTU0xfc2V0X3Nlc3Npb25fc2VjcmV0X2NiOworKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHQ7CisrCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dF9jYjsKKysJCVNTTF9zZXRfc2h1dGRvd247CisrCQlTU0xfc2V0X1NTTF9DVFg7CisrCQlTU0xfc2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfc2V0X3RtcF9kaF9jYWxsYmFjazsKKysJCVNTTF9zZXRfdG1wX2VjZGhfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3RtcF9yc2FfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3RydXN0OworKwkJU1NMX3NldF92ZXJpZnk7CisrCQlTU0xfc2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9zZXRfdmVyaWZ5X3Jlc3VsdDsKKysJCVNTTF9zZXRfd2ZkOworKwkJU1NMX3NodXRkb3duOworKwkJU1NMX3N0YXRlOworKwkJU1NMX3N0YXRlX3N0cmluZzsKKysJCVNTTF9zdGF0ZV9zdHJpbmdfbG9uZzsKKysJCVNTTF91c2VfY2VydGlmaWNhdGU7CisrCQlTU0xfdXNlX2NlcnRpZmljYXRlX0FTTjE7CisrCQlTU0xfdXNlX2NlcnRpZmljYXRlX2ZpbGU7CisrCQlTU0xfdXNlX1ByaXZhdGVLZXk7CisrCQlTU0xfdXNlX1ByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleV9maWxlOworKwkJU1NMX3VzZV9wc2tfaWRlbnRpdHlfaGludDsKKysJCVNTTF91c2VfUlNBUHJpdmF0ZUtleTsKKysJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X2ZpbGU7CisrCQlTU0x2MjNfY2xpZW50X21ldGhvZDsKKysJCVNTTHYyM19tZXRob2Q7CisrCQlTU0x2MjNfc2VydmVyX21ldGhvZDsKKysJCVNTTHYyX2NsaWVudF9tZXRob2Q7CisrCQlTU0x2Ml9tZXRob2Q7CisrCQlTU0x2Ml9zZXJ2ZXJfbWV0aG9kOworKwkJU1NMdjNfY2xpZW50X21ldGhvZDsKKysJCVNTTHYzX21ldGhvZDsKKysJCVNTTHYzX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfdmVyc2lvbjsKKysJCVNTTF93YW50OworKwkJU1NMX3dyaXRlOworKwkJVExTdjFfY2xpZW50X21ldGhvZDsKKysJCVRMU3YxX21ldGhvZDsKKysJCVRMU3YxX3NlcnZlcl9tZXRob2Q7CisrCisrCisrCQlTU0xlYXk7CisrCQlTU0xlYXlfdmVyc2lvbjsKKysJCUFTTjFfQklUX1NUUklOR19hc24xX21ldGg7CisrCQlBU04xX0hFQURFUl9mcmVlOworKwkJQVNOMV9IRUFERVJfbmV3OworKwkJQVNOMV9JQTVTVFJJTkdfYXNuMV9tZXRoOworKwkJQVNOMV9JTlRFR0VSX2dldDsKKysJCUFTTjFfSU5URUdFUl9zZXQ7CisrCQlBU04xX0lOVEVHRVJfdG9fQk47CisrCQlBU04xX09CSkVDVF9jcmVhdGU7CisrCQlBU04xX09CSkVDVF9mcmVlOworKwkJQVNOMV9PQkpFQ1RfbmV3OworKwkJQVNOMV9QUklOVEFCTEVfdHlwZTsKKysJCUFTTjFfU1RSSU5HX2NtcDsKKysJCUFTTjFfU1RSSU5HX2R1cDsKKysJCUFTTjFfU1RSSU5HX2ZyZWU7CisrCQlBU04xX1NUUklOR19uZXc7CisrCQlBU04xX1NUUklOR19wcmludDsKKysJCUFTTjFfU1RSSU5HX3NldDsKKysJCUFTTjFfU1RSSU5HX3R5cGVfbmV3OworKwkJQVNOMV9UWVBFX2ZyZWU7CisrCQlBU04xX1RZUEVfbmV3OworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfdG9fc3RyaW5nOworKwkJQVNOMV9VVENUSU1FX2NoZWNrOworKwkJQVNOMV9VVENUSU1FX3ByaW50OworKwkJQVNOMV9VVENUSU1FX3NldDsKKysJCUFTTjFfY2hlY2tfaW5maW5pdGVfZW5kOworKwkJQVNOMV9kMmlfYmlvOworKwkJQVNOMV9kMmlfZnA7CisrCQlBU04xX2RpZ2VzdDsKKysJCUFTTjFfZHVwOworKwkJQVNOMV9nZXRfb2JqZWN0OworKwkJQVNOMV9pMmRfYmlvOworKwkJQVNOMV9pMmRfZnA7CisrCQlBU04xX29iamVjdF9zaXplOworKwkJQVNOMV9wYXJzZTsKKysJCUFTTjFfcHV0X29iamVjdDsKKysJCUFTTjFfc2lnbjsKKysJCUFTTjFfdmVyaWZ5OworKwkJQkZfY2JjX2VuY3J5cHQ7CisrCQlCRl9jZmI2NF9lbmNyeXB0OworKwkJQkZfZWNiX2VuY3J5cHQ7CisrCQlCRl9lbmNyeXB0OworKwkJQkZfb2ZiNjRfZW5jcnlwdDsKKysJCUJGX29wdGlvbnM7CisrCQlCRl9zZXRfa2V5OworKwkJQklPX0NPTk5FQ1RfZnJlZTsKKysJCUJJT19DT05ORUNUX25ldzsKKysJCUJJT19hY2NlcHQ7CisrCQlCSU9fY3RybDsKKysJCUJJT19pbnRfY3RybDsKKysJCUJJT19kZWJ1Z19jYWxsYmFjazsKKysJCUJJT19kdW1wOworKwkJQklPX2R1cF9jaGFpbjsKKysJCUJJT19mX2Jhc2U2NDsKKysJCUJJT19mX2J1ZmZlcjsKKysJCUJJT19mX2NpcGhlcjsKKysJCUJJT19mX21kOworKwkJQklPX2ZfbnVsbDsKKysJCUJJT19mX3Byb3h5X3NlcnZlcjsKKysJCUJJT19mZF9ub25fZmF0YWxfZXJyb3I7CisrCQlCSU9fZmRfc2hvdWxkX3JldHJ5OworKwkJQklPX2ZpbmRfdHlwZTsKKysJCUJJT19mcmVlOworKwkJQklPX2ZyZWVfYWxsOworKwkJQklPX2dldF9hY2NlcHRfc29ja2V0OworKwkJQklPX2dldF9maWx0ZXJfYmlvOworKwkJQklPX2dldF9ob3N0X2lwOworKwkJQklPX2dldF9wb3J0OworKwkJQklPX2dldF9yZXRyeV9CSU87CisrCQlCSU9fZ2V0X3JldHJ5X3JlYXNvbjsKKysJCUJJT19nZXRob3N0YnluYW1lOworKwkJQklPX2dldHM7CisrCQlCSU9fbmV3OworKwkJQklPX25ld19hY2NlcHQ7CisrCQlCSU9fbmV3X2Nvbm5lY3Q7CisrCQlCSU9fbmV3X2ZkOworKwkJQklPX25ld19maWxlOworKwkJQklPX25ld19mcDsKKysJCUJJT19uZXdfc29ja2V0OworKwkJQklPX3BvcDsKKysJCUJJT19wcmludGY7CisrCQlCSU9fcHVzaDsKKysJCUJJT19wdXRzOworKwkJQklPX3JlYWQ7CisrCQlCSU9fc19hY2NlcHQ7CisrCQlCSU9fc19jb25uZWN0OworKwkJQklPX3NfZmQ7CisrCQlCSU9fc19maWxlOworKwkJQklPX3NfbWVtOworKwkJQklPX3NfbnVsbDsKKysJCUJJT19zX3Byb3h5X2NsaWVudDsKKysJCUJJT19zX3NvY2tldDsKKysJCUJJT19zZXQ7CisrCQlCSU9fc2V0X2NpcGhlcjsKKysJCUJJT19zZXRfdGNwX25kZWxheTsKKysJCUJJT19zb2NrX2NsZWFudXA7CisrCQlCSU9fc29ja19lcnJvcjsKKysJCUJJT19zb2NrX2luaXQ7CisrCQlCSU9fc29ja19ub25fZmF0YWxfZXJyb3I7CisrCQlCSU9fc29ja19zaG91bGRfcmV0cnk7CisrCQlCSU9fc29ja2V0X2lvY3RsOworKwkJQklPX3dyaXRlOworKwkJQk5fQ1RYX2ZyZWU7CisrCQlCTl9DVFhfbmV3OworKwkJQk5fTU9OVF9DVFhfZnJlZTsKKysJCUJOX01PTlRfQ1RYX25ldzsKKysJCUJOX01PTlRfQ1RYX3NldDsKKysJCUJOX2FkZDsKKysJCUJOX2FkZF93b3JkOworKwkJQk5faGV4MmJuOworKwkJQk5fYmluMmJuOworKwkJQk5fYm4yaGV4OworKwkJQk5fYm4yYmluOworKwkJQk5fY2xlYXI7CisrCQlCTl9jbGVhcl9iaXQ7CisrCQlCTl9jbGVhcl9mcmVlOworKwkJQk5fY21wOworKwkJQk5fY29weTsKKysJCUJOX2RpdjsKKysJCUJOX2Rpdl93b3JkOworKwkJQk5fZHVwOworKwkJQk5fZnJlZTsKKysJCUJOX2Zyb21fbW9udGdvbWVyeTsKKysJCUJOX2djZDsKKysJCUJOX2dlbmVyYXRlX3ByaW1lOworKwkJQk5fZ2V0X3dvcmQ7CisrCQlCTl9pc19iaXRfc2V0OworKwkJQk5faXNfcHJpbWU7CisrCQlCTl9sc2hpZnQ7CisrCQlCTl9sc2hpZnQxOworKwkJQk5fbWFza19iaXRzOworKwkJQk5fbW9kOworKwkJQk5fbW9kX2V4cDsKKysJCUJOX21vZF9leHBfbW9udDsKKysJCUJOX21vZF9leHBfc2ltcGxlOworKwkJQk5fbW9kX2ludmVyc2U7CisrCQlCTl9tb2RfbXVsOworKwkJQk5fbW9kX211bF9tb250Z29tZXJ5OworKwkJQk5fbW9kX3dvcmQ7CisrCQlCTl9tdWw7CisrCQlCTl9uZXc7CisrCQlCTl9udW1fYml0czsKKysJCUJOX251bV9iaXRzX3dvcmQ7CisrCQlCTl9vcHRpb25zOworKwkJQk5fcHJpbnQ7CisrCQlCTl9wcmludF9mcDsKKysJCUJOX3JhbmQ7CisrCQlCTl9yZWNpcHJvY2FsOworKwkJQk5fcnNoaWZ0OworKwkJQk5fcnNoaWZ0MTsKKysJCUJOX3NldF9iaXQ7CisrCQlCTl9zZXRfd29yZDsKKysJCUJOX3NxcjsKKysJCUJOX3N1YjsKKysJCUJOX3RvX0FTTjFfSU5URUdFUjsKKysJCUJOX3VjbXA7CisrCQlCTl92YWx1ZV9vbmU7CisrCQlCVUZfTUVNX2ZyZWU7CisrCQlCVUZfTUVNX2dyb3c7CisrCQlCVUZfTUVNX25ldzsKKysJCUJVRl9zdHJkdXA7CisrCQlDT05GX2ZyZWU7CisrCQlDT05GX2dldF9udW1iZXI7CisrCQlDT05GX2dldF9zZWN0aW9uOworKwkJQ09ORl9nZXRfc3RyaW5nOworKwkJQ09ORl9sb2FkOworKwkJQ1JZUFRPX2FkZF9sb2NrOworKwkJQ1JZUFRPX2RiZ19mcmVlOworKwkJQ1JZUFRPX2RiZ19tYWxsb2M7CisrCQlDUllQVE9fZGJnX3JlYWxsb2M7CisrCQlDUllQVE9fZGJnX3JlbWFsbG9jOworKwkJQ1JZUFRPX2ZyZWU7CisrCQlDUllQVE9fZ2V0X2FkZF9sb2NrX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9pZF9jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfbG9ja19uYW1lOworKwkJQ1JZUFRPX2dldF9sb2NraW5nX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX2xvY2s7CisrCQlDUllQVE9fbWFsbG9jOworKwkJQ1JZUFRPX21lbV9jdHJsOworKwkJQ1JZUFRPX21lbV9sZWFrczsKKysJCUNSWVBUT19tZW1fbGVha3NfY2I7CisrCQlDUllQVE9fbWVtX2xlYWtzX2ZwOworKwkJQ1JZUFRPX3JlYWxsb2M7CisrCQlDUllQVE9fcmVtYWxsb2M7CisrCQlDUllQVE9fc2V0X2FkZF9sb2NrX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9pZF9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT190aHJlYWRfaWQ7CisrCQlESF9jaGVjazsKKysJCURIX2NvbXB1dGVfa2V5OworKwkJREhfZnJlZTsKKysJCURIX2dlbmVyYXRlX2tleTsKKysJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnM7CisrCQlESF9uZXc7CisrCQlESF9zaXplOworKwkJREhwYXJhbXNfcHJpbnQ7CisrCQlESHBhcmFtc19wcmludF9mcDsKKysJCURTQV9mcmVlOworKwkJRFNBX2dlbmVyYXRlX2tleTsKKysJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzOworKwkJRFNBX2lzX3ByaW1lOworKwkJRFNBX25ldzsKKysJCURTQV9wcmludDsKKysJCURTQV9wcmludF9mcDsKKysJCURTQV9zaWduOworKwkJRFNBX3NpZ25fc2V0dXA7CisrCQlEU0Ffc2l6ZTsKKysJCURTQV92ZXJpZnk7CisrCQlEU0FwYXJhbXNfcHJpbnQ7CisrCQlEU0FwYXJhbXNfcHJpbnRfZnA7CisrCQlFUlJfY2xlYXJfZXJyb3I7CisrCQlFUlJfZXJyb3Jfc3RyaW5nOworKwkJRVJSX2ZyZWVfc3RyaW5nczsKKysJCUVSUl9mdW5jX2Vycm9yX3N0cmluZzsKKysJCUVSUl9nZXRfZXJyX3N0YXRlX3RhYmxlOworKwkJRVJSX2dldF9lcnJvcjsKKysJCUVSUl9nZXRfZXJyb3JfbGluZTsKKysJCUVSUl9nZXRfc3RhdGU7CisrCQlFUlJfZ2V0X3N0cmluZ190YWJsZTsKKysJCUVSUl9saWJfZXJyb3Jfc3RyaW5nOworKwkJRVJSX2xvYWRfQVNOMV9zdHJpbmdzOworKwkJRVJSX2xvYWRfQklPX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CTl9zdHJpbmdzOworKwkJRVJSX2xvYWRfQlVGX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9DT05GX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9ESF9zdHJpbmdzOworKwkJRVJSX2xvYWRfRFNBX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9FUlJfc3RyaW5nczsKKysJCUVSUl9sb2FkX0VWUF9zdHJpbmdzOworKwkJRVJSX2xvYWRfT0JKX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9QRU1fc3RyaW5nczsKKysJCUVSUl9sb2FkX1BST1hZX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9SU0Ffc3RyaW5nczsKKysJCUVSUl9sb2FkX1g1MDlfc3RyaW5nczsKKysJCUVSUl9sb2FkX2NyeXB0b19zdHJpbmdzOworKwkJRVJSX2xvYWRfc3RyaW5nczsKKysJCUVSUl9wZWVrX2Vycm9yOworKwkJRVJSX3BlZWtfZXJyb3JfbGluZTsKKysJCUVSUl9wcmludF9lcnJvcnM7CisrCQlFUlJfcHJpbnRfZXJyb3JzX2ZwOworKwkJRVJSX3B1dF9lcnJvcjsKKysJCUVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nOworKwkJRVJSX3JlbW92ZV9zdGF0ZTsKKysJCUVWUF9CeXRlc1RvS2V5OworKwkJRVZQX0NJUEhFUl9DVFhfY2xlYW51cDsKKysJCUVWUF9DaXBoZXJGaW5hbDsKKysJCUVWUF9DaXBoZXJJbml0OworKwkJRVZQX0NpcGhlclVwZGF0ZTsKKysJCUVWUF9EZWNvZGVCbG9jazsKKysJCUVWUF9EZWNvZGVGaW5hbDsKKysJCUVWUF9EZWNvZGVJbml0OworKwkJRVZQX0RlY29kZVVwZGF0ZTsKKysJCUVWUF9EZWNyeXB0RmluYWw7CisrCQlFVlBfRGVjcnlwdEluaXQ7CisrCQlFVlBfRGVjcnlwdFVwZGF0ZTsKKysJCUVWUF9EaWdlc3RGaW5hbDsKKysJCUVWUF9EaWdlc3RJbml0OworKwkJRVZQX0RpZ2VzdFVwZGF0ZTsKKysJCUVWUF9FbmNvZGVCbG9jazsKKysJCUVWUF9FbmNvZGVGaW5hbDsKKysJCUVWUF9FbmNvZGVJbml0OworKwkJRVZQX0VuY29kZVVwZGF0ZTsKKysJCUVWUF9FbmNyeXB0RmluYWw7CisrCQlFVlBfRW5jcnlwdEluaXQ7CisrCQlFVlBfRW5jcnlwdFVwZGF0ZTsKKysJCUVWUF9PcGVuRmluYWw7CisrCQlFVlBfT3BlbkluaXQ7CisrCQlFVlBfUEtFWV9hc3NpZ247CisrCQlFVlBfUEtFWV9jb3B5X3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9mcmVlOworKwkJRVZQX1BLRVlfbWlzc2luZ19wYXJhbWV0ZXJzOworKwkJRVZQX1BLRVlfbmV3OworKwkJRVZQX1BLRVlfc2F2ZV9wYXJhbWV0ZXJzOworKwkJRVZQX1BLRVlfc2l6ZTsKKysJCUVWUF9QS0VZX3R5cGU7CisrCQlFVlBfU2VhbEZpbmFsOworKwkJRVZQX1NlYWxJbml0OworKwkJRVZQX1NpZ25GaW5hbDsKKysJCUVWUF9WZXJpZnlGaW5hbDsKKysJCUVWUF9hZGRfYWxpYXM7CisrCQlFVlBfYWRkX2NpcGhlcjsKKysJCUVWUF9hZGRfZGlnZXN0OworKwkJRVZQX2JmX2NiYzsKKysJCUVWUF9iZl9jZmI2NDsKKysJCUVWUF9iZl9lY2I7CisrCQlFVlBfYmZfb2ZiOworKwkJRVZQX2NsZWFudXA7CisrCQlFVlBfZGVzX2NiYzsKKysJCUVWUF9kZXNfY2ZiNjQ7CisrCQlFVlBfZGVzX2VjYjsKKysJCUVWUF9kZXNfZWRlOworKwkJRVZQX2Rlc19lZGUzOworKwkJRVZQX2Rlc19lZGUzX2NiYzsKKysJCUVWUF9kZXNfZWRlM19jZmI2NDsKKysJCUVWUF9kZXNfZWRlM19vZmI7CisrCQlFVlBfZGVzX2VkZV9jYmM7CisrCQlFVlBfZGVzX2VkZV9jZmI2NDsKKysJCUVWUF9kZXNfZWRlX29mYjsKKysJCUVWUF9kZXNfb2ZiOworKwkJRVZQX2Rlc3hfY2JjOworKwkJRVZQX2RzczsKKysJCUVWUF9kc3MxOworKwkJRVZQX2VuY19udWxsOworKwkJRVZQX2dldF9jaXBoZXJieW5hbWU7CisrCQlFVlBfZ2V0X2RpZ2VzdGJ5bmFtZTsKKysJCUVWUF9nZXRfcHdfcHJvbXB0OworKwkJRVZQX2lkZWFfY2JjOworKwkJRVZQX2lkZWFfY2ZiNjQ7CisrCQlFVlBfaWRlYV9lY2I7CisrCQlFVlBfaWRlYV9vZmI7CisrCQlFVlBfbWQyOworKwkJRVZQX21kNTsKKysJCUVWUF9tZF9udWxsOworKwkJRVZQX3JjMl9jYmM7CisrCQlFVlBfcmMyX2NmYjY0OworKwkJRVZQX3JjMl9lY2I7CisrCQlFVlBfcmMyX29mYjsKKysJCUVWUF9yYzQ7CisrCQlFVlBfcmVhZF9wd19zdHJpbmc7CisrCQlFVlBfc2V0X3B3X3Byb21wdDsKKysJCUVWUF9zaGE7CisrCQlFVlBfc2hhMTsKKysJCU1EMjsKKysJCU1EMl9GaW5hbDsKKysJCU1EMl9Jbml0OworKwkJTUQyX1VwZGF0ZTsKKysJCU1EMl9vcHRpb25zOworKwkJTUQ1OworKwkJTUQ1X0ZpbmFsOworKwkJTUQ1X0luaXQ7CisrCQlNRDVfVXBkYXRlOworKwkJTURDMjsKKysJCU1EQzJfRmluYWw7CisrCQlNREMyX0luaXQ7CisrCQlNREMyX1VwZGF0ZTsKKysJCU5FVFNDQVBFX1NQS0FDX2ZyZWU7CisrCQlORVRTQ0FQRV9TUEtBQ19uZXc7CisrCQlORVRTQ0FQRV9TUEtJX2ZyZWU7CisrCQlORVRTQ0FQRV9TUEtJX25ldzsKKysJCU5FVFNDQVBFX1NQS0lfc2lnbjsKKysJCU5FVFNDQVBFX1NQS0lfdmVyaWZ5OworKwkJT0JKX2FkZF9vYmplY3Q7CisrCQlPQkpfYnNlYXJjaDsKKysJCU9CSl9jbGVhbnVwOworKwkJT0JKX2NtcDsKKysJCU9CSl9jcmVhdGU7CisrCQlPQkpfZHVwOworKwkJT0JKX2xuMm5pZDsKKysJCU9CSl9uZXdfbmlkOworKwkJT0JKX25pZDJsbjsKKysJCU9CSl9uaWQyb2JqOworKwkJT0JKX25pZDJzbjsKKysJCU9CSl9vYmoybmlkOworKwkJT0JKX3NuMm5pZDsKKysJCU9CSl90eHQybmlkOworKwkJUEVNX0FTTjFfcmVhZDsKKysJCVBFTV9BU04xX3JlYWRfYmlvOworKwkJUEVNX0FTTjFfd3JpdGU7CisrCQlQRU1fQVNOMV93cml0ZV9iaW87CisrCQlQRU1fU2VhbEZpbmFsOworKwkJUEVNX1NlYWxJbml0OworKwkJUEVNX1NlYWxVcGRhdGU7CisrCQlQRU1fU2lnbkZpbmFsOworKwkJUEVNX1NpZ25Jbml0OworKwkJUEVNX1NpZ25VcGRhdGU7CisrCQlQRU1fWDUwOV9JTkZPX3JlYWQ7CisrCQlQRU1fWDUwOV9JTkZPX3JlYWRfYmlvOworKwkJUEVNX1g1MDlfSU5GT193cml0ZV9iaW87CisrCQlQRU1fZGVrX2luZm87CisrCQlQRU1fZG9faGVhZGVyOworKwkJUEVNX2dldF9FVlBfQ0lQSEVSX0lORk87CisrCQlQRU1fcHJvY190eXBlOworKwkJUEVNX3JlYWQ7CisrCQlQRU1fcmVhZF9ESHBhcmFtczsKKysJCVBFTV9yZWFkX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9EU0FwYXJhbXM7CisrCQlQRU1fcmVhZF9QS0NTNzsKKysJCVBFTV9yZWFkX1ByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9SU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfWDUwOTsKKysJCVBFTV9yZWFkX1g1MDlfQ1JMOworKwkJUEVNX3JlYWRfWDUwOV9SRVE7CisrCQlQRU1fcmVhZF9iaW87CisrCQlQRU1fcmVhZF9iaW9fREhwYXJhbXM7CisrCQlQRU1fcmVhZF9iaW9fRFNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX2Jpb19EU0FwYXJhbXM7CisrCQlQRU1fcmVhZF9iaW9fUEtDUzc7CisrCQlQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX2Jpb19SU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX1g1MDk7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9DUkw7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9SRVE7CisrCQlQRU1fd3JpdGU7CisrCQlQRU1fd3JpdGVfREhwYXJhbXM7CisrCQlQRU1fd3JpdGVfRFNBUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9EU0FwYXJhbXM7CisrCQlQRU1fd3JpdGVfUEtDUzc7CisrCQlQRU1fd3JpdGVfUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9SU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX1g1MDk7CisrCQlQRU1fd3JpdGVfWDUwOV9DUkw7CisrCQlQRU1fd3JpdGVfWDUwOV9SRVE7CisrCQlQRU1fd3JpdGVfYmlvOworKwkJUEVNX3dyaXRlX2Jpb19ESHBhcmFtczsKKysJCVBFTV93cml0ZV9iaW9fRFNBUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9iaW9fRFNBcGFyYW1zOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTNzsKKysJCVBFTV93cml0ZV9iaW9fUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9iaW9fUlNBUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9iaW9fWDUwOTsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9DUkw7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfUkVROworKwkJUEtDUzdfRElHRVNUX2ZyZWU7CisrCQlQS0NTN19ESUdFU1RfbmV3OworKwkJUEtDUzdfRU5DUllQVF9mcmVlOworKwkJUEtDUzdfRU5DUllQVF9uZXc7CisrCQlQS0NTN19FTkNfQ09OVEVOVF9mcmVlOworKwkJUEtDUzdfRU5DX0NPTlRFTlRfbmV3OworKwkJUEtDUzdfRU5WRUxPUEVfZnJlZTsKKysJCVBLQ1M3X0VOVkVMT1BFX25ldzsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2RpZ2VzdDsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2ZyZWU7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9uZXc7CisrCQlQS0NTN19SRUNJUF9JTkZPX2ZyZWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX25ldzsKKysJCVBLQ1M3X1NJR05FRF9mcmVlOworKwkJUEtDUzdfU0lHTkVEX25ldzsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX2ZyZWU7CisrCQlQS0NTN19TSUdORVJfSU5GT19uZXc7CisrCQlQS0NTN19TSUdOX0VOVkVMT1BFX2ZyZWU7CisrCQlQS0NTN19TSUdOX0VOVkVMT1BFX25ldzsKKysJCVBLQ1M3X2R1cDsKKysJCVBLQ1M3X2ZyZWU7CisrCQlQS0NTN19uZXc7CisrCQlQUk9YWV9FTlRSWV9hZGRfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX2NsZWFyX25vcHJveHk7CisrCQlQUk9YWV9FTlRSWV9mcmVlOworKwkJUFJPWFlfRU5UUllfZ2V0X25vcHJveHk7CisrCQlQUk9YWV9FTlRSWV9uZXc7CisrCQlQUk9YWV9FTlRSWV9zZXRfc2VydmVyOworKwkJUFJPWFlfYWRkX25vcHJveHk7CisrCQlQUk9YWV9hZGRfc2VydmVyOworKwkJUFJPWFlfY2hlY2tfYnlfaG9zdDsKKysJCVBST1hZX2NoZWNrX3VybDsKKysJCVBST1hZX2NsZWFyX25vcHJveHk7CisrCQlQUk9YWV9mcmVlOworKwkJUFJPWFlfZ2V0X25vcHJveHk7CisrCQlQUk9YWV9nZXRfcHJveGllczsKKysJCVBST1hZX2dldF9wcm94eV9lbnRyeTsKKysJCVBST1hZX2xvYWRfY29uZjsKKysJCVBST1hZX25ldzsKKysJCVBST1hZX3ByaW50OworKwkJUkFORF9ieXRlczsKKysJCVJBTkRfY2xlYW51cDsKKysJCVJBTkRfZmlsZV9uYW1lOworKwkJUkFORF9sb2FkX2ZpbGU7CisrCQlSQU5EX3NjcmVlbjsKKysJCVJBTkRfc2VlZDsKKysJCVJBTkRfd3JpdGVfZmlsZTsKKysJCVJDMl9jYmNfZW5jcnlwdDsKKysJCVJDMl9jZmI2NF9lbmNyeXB0OworKwkJUkMyX2VjYl9lbmNyeXB0OworKwkJUkMyX2VuY3J5cHQ7CisrCQlSQzJfb2ZiNjRfZW5jcnlwdDsKKysJCVJDMl9zZXRfa2V5OworKwkJUkM0OworKwkJUkM0X29wdGlvbnM7CisrCQlSQzRfc2V0X2tleTsKKysJCVJTQVByaXZhdGVLZXlfYXNuMV9tZXRoOworKwkJUlNBUHJpdmF0ZUtleV9kdXA7CisrCQlSU0FQdWJsaWNLZXlfZHVwOworKwkJUlNBX1BLQ1MxX1NTTGVheTsKKysJCVJTQV9mcmVlOworKwkJUlNBX2dlbmVyYXRlX2tleTsKKysJCVJTQV9uZXc7CisrCQlSU0FfbmV3X21ldGhvZDsKKysJCVJTQV9wcmludDsKKysJCVJTQV9wcmludF9mcDsKKysJCVJTQV9wcml2YXRlX2RlY3J5cHQ7CisrCQlSU0FfcHJpdmF0ZV9lbmNyeXB0OworKwkJUlNBX3B1YmxpY19kZWNyeXB0OworKwkJUlNBX3B1YmxpY19lbmNyeXB0OworKwkJUlNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVJTQV9zaWduOworKwkJUlNBX3NpZ25fQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlSU0Ffc2l6ZTsKKysJCVJTQV92ZXJpZnk7CisrCQlSU0FfdmVyaWZ5X0FTTjFfT0NURVRfU1RSSU5HOworKwkJU0hBOworKwkJU0hBMTsKKysJCVNIQTFfRmluYWw7CisrCQlTSEExX0luaXQ7CisrCQlTSEExX1VwZGF0ZTsKKysJCVNIQV9GaW5hbDsKKysJCVNIQV9Jbml0OworKwkJU0hBX1VwZGF0ZTsKKysJCU9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zOworKwkJT3BlblNTTF9hZGRfYWxsX2NpcGhlcnM7CisrCQlPcGVuU1NMX2FkZF9hbGxfZGlnZXN0czsKKysJCVRYVF9EQl9jcmVhdGVfaW5kZXg7CisrCQlUWFRfREJfZnJlZTsKKysJCVRYVF9EQl9nZXRfYnlfaW5kZXg7CisrCQlUWFRfREJfaW5zZXJ0OworKwkJVFhUX0RCX3JlYWQ7CisrCQlUWFRfREJfd3JpdGU7CisrCQlYNTA5X0FMR09SX2ZyZWU7CisrCQlYNTA5X0FMR09SX25ldzsKKysJCVg1MDlfQVRUUklCVVRFX2ZyZWU7CisrCQlYNTA5X0FUVFJJQlVURV9uZXc7CisrCQlYNTA5X0NJTkZfZnJlZTsKKysJCVg1MDlfQ0lORl9uZXc7CisrCQlYNTA5X0NSTF9JTkZPX2ZyZWU7CisrCQlYNTA5X0NSTF9JTkZPX25ldzsKKysJCVg1MDlfQ1JMX2FkZF9leHQ7CisrCQlYNTA5X0NSTF9jbXA7CisrCQlYNTA5X0NSTF9kZWxldGVfZXh0OworKwkJWDUwOV9DUkxfZHVwOworKwkJWDUwOV9DUkxfZnJlZTsKKysJCVg1MDlfQ1JMX2dldF9leHQ7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDlfQ1JMX2dldF9leHRfY291bnQ7CisrCQlYNTA5X0NSTF9uZXc7CisrCQlYNTA5X0NSTF9zaWduOworKwkJWDUwOV9DUkxfdmVyaWZ5OworKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X05JRDsKKysJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X0VYVEVOU0lPTl9kdXA7CisrCQlYNTA5X0VYVEVOU0lPTl9mcmVlOworKwkJWDUwOV9FWFRFTlNJT05fZ2V0X2NyaXRpY2FsOworKwkJWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGE7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfb2JqZWN0OworKwkJWDUwOV9FWFRFTlNJT05fbmV3OworKwkJWDUwOV9FWFRFTlNJT05fc2V0X2NyaXRpY2FsOworKwkJWDUwOV9FWFRFTlNJT05fc2V0X2RhdGE7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfb2JqZWN0OworKwkJWDUwOV9JTkZPX2ZyZWU7CisrCQlYNTA5X0lORk9fbmV3OworKwkJWDUwOV9MT09LVVBfYnlfYWxpYXM7CisrCQlYNTA5X0xPT0tVUF9ieV9maW5nZXJwcmludDsKKysJCVg1MDlfTE9PS1VQX2J5X2lzc3Vlcl9zZXJpYWw7CisrCQlYNTA5X0xPT0tVUF9ieV9zdWJqZWN0OworKwkJWDUwOV9MT09LVVBfY3RybDsKKysJCVg1MDlfTE9PS1VQX2ZpbGU7CisrCQlYNTA5X0xPT0tVUF9mcmVlOworKwkJWDUwOV9MT09LVVBfaGFzaF9kaXI7CisrCQlYNTA5X0xPT0tVUF9pbml0OworKwkJWDUwOV9MT09LVVBfbmV3OworKwkJWDUwOV9MT09LVVBfc2h1dGRvd247CisrCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X05JRDsKKysJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfT0JKOworKwkJWDUwOV9OQU1FX0VOVFJZX2R1cDsKKysJCVg1MDlfTkFNRV9FTlRSWV9mcmVlOworKwkJWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhOworKwkJWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3Q7CisrCQlYNTA5X05BTUVfRU5UUllfbmV3OworKwkJWDUwOV9OQU1FX0VOVFJZX3NldF9kYXRhOworKwkJWDUwOV9OQU1FX0VOVFJZX3NldF9vYmplY3Q7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5OworKwkJWDUwOV9OQU1FX2NtcDsKKysJCVg1MDlfTkFNRV9kZWxldGVfZW50cnk7CisrCQlYNTA5X05BTUVfZGlnZXN0OworKwkJWDUwOV9OQU1FX2R1cDsKKysJCVg1MDlfTkFNRV9lbnRyeV9jb3VudDsKKysJCVg1MDlfTkFNRV9mcmVlOworKwkJWDUwOV9OQU1FX2dldF9lbnRyeTsKKysJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfTklEOworKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9PQko7CisrCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfTklEOworKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X09CSjsKKysJCVg1MDlfTkFNRV9oYXNoOworKwkJWDUwOV9OQU1FX25ldzsKKysJCVg1MDlfTkFNRV9vbmVsaW5lOworKwkJWDUwOV9OQU1FX3ByaW50OworKwkJWDUwOV9OQU1FX3NldDsKKysJCVg1MDlfT0JKRUNUX2ZyZWVfY29udGVudHM7CisrCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9ieV9zdWJqZWN0OworKwkJWDUwOV9PQkpFQ1RfdXBfcmVmX2NvdW50OworKwkJWDUwOV9QS0VZX2ZyZWU7CisrCQlYNTA5X1BLRVlfbmV3OworKwkJWDUwOV9QVUJLRVlfZnJlZTsKKysJCVg1MDlfUFVCS0VZX2dldDsKKysJCVg1MDlfUFVCS0VZX25ldzsKKysJCVg1MDlfUFVCS0VZX3NldDsKKysJCVg1MDlfUkVRX0lORk9fZnJlZTsKKysJCVg1MDlfUkVRX0lORk9fbmV3OworKwkJWDUwOV9SRVFfZHVwOworKwkJWDUwOV9SRVFfZnJlZTsKKysJCVg1MDlfUkVRX2dldF9wdWJrZXk7CisrCQlYNTA5X1JFUV9uZXc7CisrCQlYNTA5X1JFUV9wcmludDsKKysJCVg1MDlfUkVRX3ByaW50X2ZwOworKwkJWDUwOV9SRVFfc2V0X3B1YmtleTsKKysJCVg1MDlfUkVRX3NldF9zdWJqZWN0X25hbWU7CisrCQlYNTA5X1JFUV9zZXRfdmVyc2lvbjsKKysJCVg1MDlfUkVRX3NpZ247CisrCQlYNTA5X1JFUV90b19YNTA5OworKwkJWDUwOV9SRVFfdmVyaWZ5OworKwkJWDUwOV9SRVZPS0VEX2FkZF9leHQ7CisrCQlYNTA5X1JFVk9LRURfZGVsZXRlX2V4dDsKKysJCVg1MDlfUkVWT0tFRF9mcmVlOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHQ7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpYzsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9SRVZPS0VEX25ldzsKKysJCVg1MDlfU0lHX2ZyZWU7CisrCQlYNTA5X1NJR19uZXc7CisrCQlYNTA5X1NUT1JFX0NUWF9jbGVhbnVwOworKwkJWDUwOV9TVE9SRV9DVFhfaW5pdDsKKysJCVg1MDlfU1RPUkVfYWRkX2NlcnQ7CisrCQlYNTA5X1NUT1JFX2FkZF9sb29rdXA7CisrCQlYNTA5X1NUT1JFX2ZyZWU7CisrCQlYNTA5X1NUT1JFX2dldF9ieV9zdWJqZWN0OworKwkJWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9uczsKKysJCVg1MDlfU1RPUkVfbmV3OworKwkJWDUwOV9TVE9SRV9zZXRfZGVmYXVsdF9wYXRoczsKKysJCVg1MDlfVkFMX2ZyZWU7CisrCQlYNTA5X1ZBTF9uZXc7CisrCQlYNTA5X2FkZF9leHQ7CisrCQlYNTA5X2FzbjFfbWV0aDsKKysJCVg1MDlfY2VydGlmaWNhdGVfdHlwZTsKKysJCVg1MDlfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlYNTA5X2NtcF9jdXJyZW50X3RpbWU7CisrCQlYNTA5X2RlbGV0ZV9leHQ7CisrCQlYNTA5X2RpZ2VzdDsKKysJCVg1MDlfZHVwOworKwkJWDUwOV9mcmVlOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2FyZWE7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2Rpcl9lbnY7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlX2VudjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfcHJpdmF0ZV9kaXI7CisrCQlYNTA5X2dldF9leHQ7CisrCQlYNTA5X2dldF9leHRfYnlfTklEOworKwkJWDUwOV9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDlfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfZ2V0X2lzc3Vlcl9uYW1lOworKwkJWDUwOV9nZXRfcHVia2V5OworKwkJWDUwOV9nZXRfcHVia2V5X3BhcmFtZXRlcnM7CisrCQlYNTA5X2dldF9zZXJpYWxOdW1iZXI7CisrCQlYNTA5X2dldF9zdWJqZWN0X25hbWU7CisrCQlYNTA5X2dtdGltZV9hZGo7CisrCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2NtcDsKKysJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfaGFzaDsKKysJCVg1MDlfaXNzdWVyX25hbWVfY21wOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoOworKwkJWDUwOV9sb2FkX2NlcnRfZmlsZTsKKysJCVg1MDlfbmV3OworKwkJWDUwOV9wcmludDsKKysJCVg1MDlfcHJpbnRfZnA7CisrCQlYNTA5X3NldF9pc3N1ZXJfbmFtZTsKKysJCVg1MDlfc2V0X25vdEFmdGVyOworKwkJWDUwOV9zZXRfbm90QmVmb3JlOworKwkJWDUwOV9zZXRfcHVia2V5OworKwkJWDUwOV9zZXRfc2VyaWFsTnVtYmVyOworKwkJWDUwOV9zZXRfc3ViamVjdF9uYW1lOworKwkJWDUwOV9zZXRfdmVyc2lvbjsKKysJCVg1MDlfc2lnbjsKKysJCVg1MDlfc3ViamVjdF9uYW1lX2NtcDsKKysJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2g7CisrCQlYNTA5X3RvX1g1MDlfUkVROworKwkJWDUwOV92ZXJpZnk7CisrCQlYNTA5X3ZlcmlmeV9jZXJ0OworKwkJWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmc7CisrCQlYNTA5djNfYWRkX2V4dDsKKysJCVg1MDl2M19hZGRfZXh0ZW5zaW9uOworKwkJWDUwOXYzX2FkZF9uZXRzY2FwZV9leHRlbnNpb25zOworKwkJWDUwOXYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOworKwkJWDUwOXYzX2NsZWFudXBfZXh0ZW5zaW9uczsKKysJCVg1MDl2M19kYXRhX3R5cGVfYnlfTklEOworKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9PQko7CisrCQlYNTA5djNfZGVsZXRlX2V4dDsKKysJCVg1MDl2M19nZXRfZXh0OworKwkJWDUwOXYzX2dldF9leHRfYnlfTklEOworKwkJWDUwOXYzX2dldF9leHRfYnlfT0JKOworKwkJWDUwOXYzX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5djNfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDl2M19wYWNrX3N0cmluZzsKKysJCVg1MDl2M19wYWNrX3R5cGVfYnlfTklEOworKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9PQko7CisrCQlYNTA5djNfdW5wYWNrX3N0cmluZzsKKysJCV9kZXNfY3J5cHQ7CisrCQlhMmRfQVNOMV9PQkpFQ1Q7CisrCQlhMmlfQVNOMV9JTlRFR0VSOworKwkJYTJpX0FTTjFfU1RSSU5HOworKwkJYXNuMV9GaW5pc2g7CisrCQlhc24xX0dldFNlcXVlbmNlOworKwkJYm5fZGl2X3dvcmRzOworKwkJYm5fZXhwYW5kMjsKKysJCWJuX211bF9hZGRfd29yZHM7CisrCQlibl9tdWxfd29yZHM7CisrCQlCTl91YWRkOworKwkJQk5fdXN1YjsKKysJCWJuX3Nxcl93b3JkczsKKysJCV9vc3NsX29sZF9jcnlwdDsKKysJCWQyaV9BU04xX0JJVF9TVFJJTkc7CisrCQlkMmlfQVNOMV9CT09MRUFOOworKwkJZDJpX0FTTjFfSEVBREVSOworKwkJZDJpX0FTTjFfSUE1U1RSSU5HOworKwkJZDJpX0FTTjFfSU5URUdFUjsKKysJCWQyaV9BU04xX09CSkVDVDsKKysJCWQyaV9BU04xX09DVEVUX1NUUklORzsKKysJCWQyaV9BU04xX1BSSU5UQUJMRTsKKysJCWQyaV9BU04xX1BSSU5UQUJMRVNUUklORzsKKysJCWQyaV9BU04xX1NFVDsKKysJCWQyaV9BU04xX1Q2MVNUUklORzsKKysJCWQyaV9BU04xX1RZUEU7CisrCQlkMmlfQVNOMV9VVENUSU1FOworKwkJZDJpX0FTTjFfYnl0ZXM7CisrCQlkMmlfQVNOMV90eXBlX2J5dGVzOworKwkJZDJpX0RIcGFyYW1zOworKwkJZDJpX0RTQVByaXZhdGVLZXk7CisrCQlkMmlfRFNBUHJpdmF0ZUtleV9iaW87CisrCQlkMmlfRFNBUHJpdmF0ZUtleV9mcDsKKysJCWQyaV9EU0FQdWJsaWNLZXk7CisrCQlkMmlfRFNBcGFyYW1zOworKwkJZDJpX05FVFNDQVBFX1NQS0FDOworKwkJZDJpX05FVFNDQVBFX1NQS0k7CisrCQlkMmlfTmV0c2NhcGVfUlNBOworKwkJZDJpX1BLQ1M3OworKwkJZDJpX1BLQ1M3X0RJR0VTVDsKKysJCWQyaV9QS0NTN19FTkNSWVBUOworKwkJZDJpX1BLQ1M3X0VOQ19DT05URU5UOworKwkJZDJpX1BLQ1M3X0VOVkVMT1BFOworKwkJZDJpX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOworKwkJZDJpX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlkMmlfUEtDUzdfU0lHTkVEOworKwkJZDJpX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJZDJpX1BLQ1M3X1NJR05fRU5WRUxPUEU7CisrCQlkMmlfUEtDUzdfYmlvOworKwkJZDJpX1BLQ1M3X2ZwOworKwkJZDJpX1ByaXZhdGVLZXk7CisrCQlkMmlfUHVibGljS2V5OworKwkJZDJpX1JTQVByaXZhdGVLZXk7CisrCQlkMmlfUlNBUHJpdmF0ZUtleV9iaW87CisrCQlkMmlfUlNBUHJpdmF0ZUtleV9mcDsKKysJCWQyaV9SU0FQdWJsaWNLZXk7CisrCQlkMmlfWDUwOTsKKysJCWQyaV9YNTA5X0FMR09SOworKwkJZDJpX1g1MDlfQVRUUklCVVRFOworKwkJZDJpX1g1MDlfQ0lORjsKKysJCWQyaV9YNTA5X0NSTDsKKysJCWQyaV9YNTA5X0NSTF9JTkZPOworKwkJZDJpX1g1MDlfQ1JMX2JpbzsKKysJCWQyaV9YNTA5X0NSTF9mcDsKKysJCWQyaV9YNTA5X0VYVEVOU0lPTjsKKysJCWQyaV9YNTA5X05BTUU7CisrCQlkMmlfWDUwOV9OQU1FX0VOVFJZOworKwkJZDJpX1g1MDlfUEtFWTsKKysJCWQyaV9YNTA5X1BVQktFWTsKKysJCWQyaV9YNTA5X1JFUTsKKysJCWQyaV9YNTA5X1JFUV9JTkZPOworKwkJZDJpX1g1MDlfUkVRX2JpbzsKKysJCWQyaV9YNTA5X1JFUV9mcDsKKysJCWQyaV9YNTA5X1JFVk9LRUQ7CisrCQlkMmlfWDUwOV9TSUc7CisrCQlkMmlfWDUwOV9WQUw7CisrCQlkMmlfWDUwOV9iaW87CisrCQlkMmlfWDUwOV9mcDsKKysJCURFU19jYmNfY2tzdW07CisrCQlERVNfY2JjX2VuY3J5cHQ7CisrCQlERVNfY2Jsb2NrX3ByaW50X2ZpbGU7CisrCQlERVNfY2ZiNjRfZW5jcnlwdDsKKysJCURFU19jZmJfZW5jcnlwdDsKKysJCURFU19kZWNyeXB0MzsKKysJCURFU19lY2IzX2VuY3J5cHQ7CisrCQlERVNfZWNiX2VuY3J5cHQ7CisrCQlERVNfZWRlM19jYmNfZW5jcnlwdDsKKysJCURFU19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlERVNfZWRlM19vZmI2NF9lbmNyeXB0OworKwkJREVTX2VuY19yZWFkOworKwkJREVTX2VuY193cml0ZTsKKysJCURFU19lbmNyeXB0MTsKKysJCURFU19lbmNyeXB0MjsKKysJCURFU19lbmNyeXB0MzsKKysJCURFU19mY3J5cHQ7CisrCQlERVNfaXNfd2Vha19rZXk7CisrCQlERVNfa2V5X3NjaGVkOworKwkJREVTX25jYmNfZW5jcnlwdDsKKysJCURFU19vZmI2NF9lbmNyeXB0OworKwkJREVTX29mYl9lbmNyeXB0OworKwkJREVTX29wdGlvbnM7CisrCQlERVNfcGNiY19lbmNyeXB0OworKwkJREVTX3F1YWRfY2tzdW07CisrCQlERVNfcmFuZG9tX2tleTsKKysJCV9vc3NsX29sZF9kZXNfcmFuZG9tX3NlZWQ7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfMnBhc3N3b3JkczsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF9wYXNzd29yZDsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF9wdzsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF9wd19zdHJpbmc7CisrCQlERVNfc2V0X2tleTsKKysJCURFU19zZXRfb2RkX3Bhcml0eTsKKysJCURFU19zdHJpbmdfdG9fMmtleXM7CisrCQlERVNfc3RyaW5nX3RvX2tleTsKKysJCURFU194Y2JjX2VuY3J5cHQ7CisrCQlERVNfeHdoaXRlX2luMm91dDsKKysJCWZjcnlwdF9ib2R5OworKwkJaTJhX0FTTjFfSU5URUdFUjsKKysJCWkyYV9BU04xX09CSkVDVDsKKysJCWkyYV9BU04xX1NUUklORzsKKysJCWkyZF9BU04xX0JJVF9TVFJJTkc7CisrCQlpMmRfQVNOMV9CT09MRUFOOworKwkJaTJkX0FTTjFfSEVBREVSOworKwkJaTJkX0FTTjFfSUE1U1RSSU5HOworKwkJaTJkX0FTTjFfSU5URUdFUjsKKysJCWkyZF9BU04xX09CSkVDVDsKKysJCWkyZF9BU04xX09DVEVUX1NUUklORzsKKysJCWkyZF9BU04xX1BSSU5UQUJMRTsKKysJCWkyZF9BU04xX1NFVDsKKysJCWkyZF9BU04xX1RZUEU7CisrCQlpMmRfQVNOMV9VVENUSU1FOworKwkJaTJkX0FTTjFfYnl0ZXM7CisrCQlpMmRfREhwYXJhbXM7CisrCQlpMmRfRFNBUHJpdmF0ZUtleTsKKysJCWkyZF9EU0FQcml2YXRlS2V5X2JpbzsKKysJCWkyZF9EU0FQcml2YXRlS2V5X2ZwOworKwkJaTJkX0RTQVB1YmxpY0tleTsKKysJCWkyZF9EU0FwYXJhbXM7CisrCQlpMmRfTkVUU0NBUEVfU1BLQUM7CisrCQlpMmRfTkVUU0NBUEVfU1BLSTsKKysJCWkyZF9OZXRzY2FwZV9SU0E7CisrCQlpMmRfUEtDUzc7CisrCQlpMmRfUEtDUzdfRElHRVNUOworKwkJaTJkX1BLQ1M3X0VOQ1JZUFQ7CisrCQlpMmRfUEtDUzdfRU5DX0NPTlRFTlQ7CisrCQlpMmRfUEtDUzdfRU5WRUxPUEU7CisrCQlpMmRfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7CisrCQlpMmRfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWkyZF9QS0NTN19TSUdORUQ7CisrCQlpMmRfUEtDUzdfU0lHTkVSX0lORk87CisrCQlpMmRfUEtDUzdfU0lHTl9FTlZFTE9QRTsKKysJCWkyZF9QS0NTN19iaW87CisrCQlpMmRfUEtDUzdfZnA7CisrCQlpMmRfUHJpdmF0ZUtleTsKKysJCWkyZF9QdWJsaWNLZXk7CisrCQlpMmRfUlNBUHJpdmF0ZUtleTsKKysJCWkyZF9SU0FQcml2YXRlS2V5X2JpbzsKKysJCWkyZF9SU0FQcml2YXRlS2V5X2ZwOworKwkJaTJkX1JTQVB1YmxpY0tleTsKKysJCWkyZF9YNTA5OworKwkJaTJkX1g1MDlfQUxHT1I7CisrCQlpMmRfWDUwOV9BVFRSSUJVVEU7CisrCQlpMmRfWDUwOV9DSU5GOworKwkJaTJkX1g1MDlfQ1JMOworKwkJaTJkX1g1MDlfQ1JMX0lORk87CisrCQlpMmRfWDUwOV9DUkxfYmlvOworKwkJaTJkX1g1MDlfQ1JMX2ZwOworKwkJaTJkX1g1MDlfRVhURU5TSU9OOworKwkJaTJkX1g1MDlfTkFNRTsKKysJCWkyZF9YNTA5X05BTUVfRU5UUlk7CisrCQlpMmRfWDUwOV9QS0VZOworKwkJaTJkX1g1MDlfUFVCS0VZOworKwkJaTJkX1g1MDlfUkVROworKwkJaTJkX1g1MDlfUkVRX0lORk87CisrCQlpMmRfWDUwOV9SRVFfYmlvOworKwkJaTJkX1g1MDlfUkVRX2ZwOworKwkJaTJkX1g1MDlfUkVWT0tFRDsKKysJCWkyZF9YNTA5X1NJRzsKKysJCWkyZF9YNTA5X1ZBTDsKKysJCWkyZF9YNTA5X2JpbzsKKysJCWkyZF9YNTA5X2ZwOworKwkJaWRlYV9jYmNfZW5jcnlwdDsKKysJCWlkZWFfY2ZiNjRfZW5jcnlwdDsKKysJCWlkZWFfZWNiX2VuY3J5cHQ7CisrCQlpZGVhX2VuY3J5cHQ7CisrCQlpZGVhX29mYjY0X2VuY3J5cHQ7CisrCQlpZGVhX29wdGlvbnM7CisrCQlpZGVhX3NldF9kZWNyeXB0X2tleTsKKysJCWlkZWFfc2V0X2VuY3J5cHRfa2V5OworKwkJbGhfZGVsZXRlOworKwkJbGhfZG9hbGw7CisrCQlsaF9kb2FsbF9hcmc7CisrCQlsaF9mcmVlOworKwkJbGhfaW5zZXJ0OworKwkJbGhfbmV3OworKwkJbGhfbm9kZV9zdGF0czsKKysJCWxoX25vZGVfc3RhdHNfYmlvOworKwkJbGhfbm9kZV91c2FnZV9zdGF0czsKKysJCWxoX25vZGVfdXNhZ2Vfc3RhdHNfYmlvOworKwkJbGhfcmV0cmlldmU7CisrCQlsaF9zdGF0czsKKysJCWxoX3N0YXRzX2JpbzsKKysJCWxoX3N0cmhhc2g7CisrCQlza19kZWxldGU7CisrCQlza19kZWxldGVfcHRyOworKwkJc2tfZHVwOworKwkJc2tfZmluZDsKKysJCXNrX2ZyZWU7CisrCQlza19pbnNlcnQ7CisrCQlza19uZXc7CisrCQlza19wb3A7CisrCQlza19wb3BfZnJlZTsKKysJCXNrX3B1c2g7CisrCQlza19zZXRfY21wX2Z1bmM7CisrCQlza19zaGlmdDsKKysJCXNrX3Vuc2hpZnQ7CisrCQlza196ZXJvOworKwkJQklPX2ZfbmJpb190ZXN0OworKwkJQVNOMV9UWVBFX2dldDsKKysJCUFTTjFfVFlQRV9zZXQ7CisrCQlQS0NTN19jb250ZW50X2ZyZWU7CisrCQlFUlJfbG9hZF9QS0NTN19zdHJpbmdzOworKwkJWDUwOV9maW5kX2J5X2lzc3Vlcl9hbmRfc2VyaWFsOworKwkJWDUwOV9maW5kX2J5X3N1YmplY3Q7CisrCQlQS0NTN19jdHJsOworKwkJUEtDUzdfc2V0X3R5cGU7CisrCQlQS0NTN19zZXRfY29udGVudDsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX3NldDsKKysJCVBLQ1M3X2FkZF9zaWduZXI7CisrCQlQS0NTN19hZGRfY2VydGlmaWNhdGU7CisrCQlQS0NTN19hZGRfY3JsOworKwkJUEtDUzdfY29udGVudF9uZXc7CisrCQlQS0NTN19kYXRhU2lnbjsKKysJCVBLQ1M3X2RhdGFWZXJpZnk7CisrCQlQS0NTN19kYXRhSW5pdDsKKysJCVBLQ1M3X2FkZF9zaWduYXR1cmU7CisrCQlQS0NTN19jZXJ0X2Zyb21fc2lnbmVyX2luZm87CisrCQlQS0NTN19nZXRfc2lnbmVyX2luZm87CisrCQlFVlBfZGVsZXRlX2FsaWFzOworKwkJRVZQX21kYzI7CisrCQlQRU1fcmVhZF9iaW9fUlNBUHVibGljS2V5OworKwkJUEVNX3dyaXRlX2Jpb19SU0FQdWJsaWNLZXk7CisrCQlkMmlfUlNBUHVibGljS2V5X2JpbzsKKysJCWkyZF9SU0FQdWJsaWNLZXlfYmlvOworKwkJUEVNX3JlYWRfUlNBUHVibGljS2V5OworKwkJUEVNX3dyaXRlX1JTQVB1YmxpY0tleTsKKysJCWQyaV9SU0FQdWJsaWNLZXlfZnA7CisrCQlpMmRfUlNBUHVibGljS2V5X2ZwOworKwkJQklPX2NvcHlfbmV4dF9yZXRyeTsKKysJCVJTQV9mbGFnczsKKysJCVg1MDlfU1RPUkVfYWRkX2NybDsKKysJCVg1MDlfbG9hZF9jcmxfZmlsZTsKKysJCUVWUF9yYzJfNDBfY2JjOworKwkJRVZQX3JjNF80MDsKKysJCUVWUF9DSVBIRVJfQ1RYX2luaXQ7CisrCQlITUFDOworKwkJSE1BQ19Jbml0OworKwkJSE1BQ19VcGRhdGU7CisrCQlITUFDX0ZpbmFsOworKwkJRVJSX2dldF9uZXh0X2Vycm9yX2xpYnJhcnk7CisrCQlFVlBfUEtFWV9jbXBfcGFyYW1ldGVyczsKKysJCUhNQUNfY2xlYW51cDsKKysJCUJJT19wdHJfY3RybDsKKysJCUJJT19uZXdfZmlsZV9pbnRlcm5hbDsKKysJCUJJT19uZXdfZnBfaW50ZXJuYWw7CisrCQlCSU9fc19maWxlX2ludGVybmFsOworKwkJQk5fQkxJTkRJTkdfY29udmVydDsKKysJCUJOX0JMSU5ESU5HX2ludmVydDsKKysJCUJOX0JMSU5ESU5HX3VwZGF0ZTsKKysJCVJTQV9ibGluZGluZ19vbjsKKysJCVJTQV9ibGluZGluZ19vZmY7CisrCQlpMnRfQVNOMV9PQkpFQ1Q7CisrCQlCTl9CTElORElOR19uZXc7CisrCQlCTl9CTElORElOR19mcmVlOworKwkJRVZQX2Nhc3Q1X2NiYzsKKysJCUVWUF9jYXN0NV9jZmI2NDsKKysJCUVWUF9jYXN0NV9lY2I7CisrCQlFVlBfY2FzdDVfb2ZiOworKwkJQkZfZGVjcnlwdDsKKysJCUNBU1Rfc2V0X2tleTsKKysJCUNBU1RfZW5jcnlwdDsKKysJCUNBU1RfZGVjcnlwdDsKKysJCUNBU1RfZWNiX2VuY3J5cHQ7CisrCQlDQVNUX2NiY19lbmNyeXB0OworKwkJQ0FTVF9jZmI2NF9lbmNyeXB0OworKwkJQ0FTVF9vZmI2NF9lbmNyeXB0OworKwkJUkMyX2RlY3J5cHQ7CisrCQlPQkpfY3JlYXRlX29iamVjdHM7CisrCQlCTl9leHA7CisrCQlCTl9tdWxfd29yZDsKKysJCUJOX3N1Yl93b3JkOworKwkJQk5fZGVjMmJuOworKwkJQk5fYm4yZGVjOworKwkJQklPX2doYm5fY3RybDsKKysJCUNSWVBUT19mcmVlX2V4X2RhdGE7CisrCQlDUllQVE9fZ2V0X2V4X2RhdGE7CisrCQlDUllQVE9fc2V0X2V4X2RhdGE7CisrCQlFUlJfbG9hZF9DUllQVE9fc3RyaW5nczsKKysJCUVSUl9sb2FkX0NSWVBUT2xpYl9zdHJpbmdzOworKwkJRVZQX1BLRVlfYml0czsKKysJCU1ENV9UcmFuc2Zvcm07CisrCQlTSEExX1RyYW5zZm9ybTsKKysJCVNIQV9UcmFuc2Zvcm07CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfY2hhaW47CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGE7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2VydDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9jaGFpbjsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9lcnJvcjsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9leF9kYXRhOworKwkJQ1JZUFRPX2R1cF9leF9kYXRhOworKwkJQ1JZUFRPX2dldF9uZXdfbG9ja2lkOworKwkJQ1JZUFRPX25ld19leF9kYXRhOworKwkJUlNBX3NldF9leF9kYXRhOworKwkJUlNBX2dldF9leF9kYXRhOworKwkJUlNBX2dldF9leF9uZXdfaW5kZXg7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8xOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMjsKKysJCVJTQV9wYWRkaW5nX2FkZF9TU0x2MjM7CisrCQlSU0FfcGFkZGluZ19hZGRfbm9uZTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMjsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMzsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX25vbmU7CisrCQlibl9hZGRfd29yZHM7CisrCQlkMmlfTmV0c2NhcGVfUlNBXzI7CisrCQlDUllQVE9fZ2V0X2V4X25ld19pbmRleDsKKysJCVJJUEVNRDE2MF9Jbml0OworKwkJUklQRU1EMTYwX1VwZGF0ZTsKKysJCVJJUEVNRDE2MF9GaW5hbDsKKysJCVJJUEVNRDE2MDsKKysJCVJJUEVNRDE2MF9UcmFuc2Zvcm07CisrCQlSQzVfMzJfc2V0X2tleTsKKysJCVJDNV8zMl9lY2JfZW5jcnlwdDsKKysJCVJDNV8zMl9lbmNyeXB0OworKwkJUkM1XzMyX2RlY3J5cHQ7CisrCQlSQzVfMzJfY2JjX2VuY3J5cHQ7CisrCQlSQzVfMzJfY2ZiNjRfZW5jcnlwdDsKKysJCVJDNV8zMl9vZmI2NF9lbmNyeXB0OworKwkJQk5fYm4ybXBpOworKwkJQk5fbXBpMmJuOworKwkJQVNOMV9CSVRfU1RSSU5HX2dldF9iaXQ7CisrCQlBU04xX0JJVF9TVFJJTkdfc2V0X2JpdDsKKysJCUJJT19nZXRfZXhfZGF0YTsKKysJCUJJT19nZXRfZXhfbmV3X2luZGV4OworKwkJQklPX3NldF9leF9kYXRhOworKwkJWDUwOXYzX2dldF9rZXlfdXNhZ2U7CisrCQlYNTA5djNfc2V0X2tleV91c2FnZTsKKysJCWEyaV9YNTA5djNfa2V5X3VzYWdlOworKwkJaTJhX1g1MDl2M19rZXlfdXNhZ2U7CisrCQlFVlBfUEtFWV9kZWNyeXB0OworKwkJRVZQX1BLRVlfZW5jcnlwdDsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fc2V0OworKwkJUEtDUzdfYWRkX3JlY2lwaWVudDsKKysJCVBLQ1M3X2FkZF9yZWNpcGllbnRfaW5mbzsKKysJCVBLQ1M3X3NldF9jaXBoZXI7CisrCQlBU04xX1RZUEVfZ2V0X2ludF9vY3RldHN0cmluZzsKKysJCUFTTjFfVFlQRV9nZXRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1RZUEVfc2V0X2ludF9vY3RldHN0cmluZzsKKysJCUFTTjFfVFlQRV9zZXRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1VUQ1RJTUVfc2V0X3N0cmluZzsKKysJCUVSUl9hZGRfZXJyb3JfZGF0YTsKKysJCUVSUl9zZXRfZXJyb3JfZGF0YTsKKysJCUVWUF9DSVBIRVJfYXNuMV90b19wYXJhbTsKKysJCUVWUF9DSVBIRVJfcGFyYW1fdG9fYXNuMTsKKysJCUVWUF9DSVBIRVJfZ2V0X2FzbjFfaXY7CisrCQlFVlBfQ0lQSEVSX3NldF9hc24xX2l2OworKwkJRVZQX3JjNV8zMl8xMl8xNl9jYmM7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2NmYjY0OworKwkJRVZQX3JjNV8zMl8xMl8xNl9lY2I7CisrCQlFVlBfcmM1XzMyXzEyXzE2X29mYjsKKysJCWFzbjFfYWRkX2Vycm9yOworKwkJZDJpX0FTTjFfQk1QU1RSSU5HOworKwkJaTJkX0FTTjFfQk1QU1RSSU5HOworKwkJQklPX2ZfYmVyOworKwkJQk5faW5pdDsKKysJCUNPTVBfQ1RYX25ldzsKKysJCUNPTVBfQ1RYX2ZyZWU7CisrCQlDT01QX0NUWF9jb21wcmVzc19ibG9jazsKKysJCUNPTVBfQ1RYX2V4cGFuZF9ibG9jazsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9uZXdfaW5kZXg7CisrCQlPQkpfTkFNRV9hZGQ7CisrCQlCSU9fc29ja2V0X25iaW87CisrCQlFVlBfcmMyXzY0X2NiYzsKKysJCU9CSl9OQU1FX2NsZWFudXA7CisrCQlPQkpfTkFNRV9nZXQ7CisrCQlPQkpfTkFNRV9pbml0OworKwkJT0JKX05BTUVfbmV3X2luZGV4OworKwkJT0JKX05BTUVfcmVtb3ZlOworKwkJQk5fTU9OVF9DVFhfY29weTsKKysJCUJJT19uZXdfc29ja3M0YV9jb25uZWN0OworKwkJQklPX3Nfc29ja3M0YV9jb25uZWN0OworKwkJUFJPWFlfc2V0X2Nvbm5lY3RfbW9kZTsKKysJCVJBTkRfU1NMZWF5OworKwkJUkFORF9zZXRfcmFuZF9tZXRob2Q7CisrCQlSU0FfbWVtb3J5X2xvY2s7CisrCQlibl9zdWJfd29yZHM7CisrCQlibl9tdWxfbm9ybWFsOworKwkJYm5fbXVsX2NvbWJhODsKKysJCWJuX211bF9jb21iYTQ7CisrCQlibl9zcXJfbm9ybWFsOworKwkJYm5fc3FyX2NvbWJhODsKKysJCWJuX3Nxcl9jb21iYTQ7CisrCQlibl9jbXBfd29yZHM7CisrCQlibl9tdWxfcmVjdXJzaXZlOworKwkJYm5fbXVsX3BhcnRfcmVjdXJzaXZlOworKwkJYm5fc3FyX3JlY3Vyc2l2ZTsKKysJCWJuX211bF9sb3dfbm9ybWFsOworKwkJQk5fUkVDUF9DVFhfaW5pdDsKKysJCUJOX1JFQ1BfQ1RYX25ldzsKKysJCUJOX1JFQ1BfQ1RYX2ZyZWU7CisrCQlCTl9SRUNQX0NUWF9zZXQ7CisrCQlCTl9tb2RfbXVsX3JlY2lwcm9jYWw7CisrCQlCTl9tb2RfZXhwX3JlY3A7CisrCQlCTl9kaXZfcmVjcDsKKysJCUJOX0NUWF9pbml0OworKwkJQk5fTU9OVF9DVFhfaW5pdDsKKysJCVJBTkRfZ2V0X3JhbmRfbWV0aG9kOworKwkJUEtDUzdfYWRkX2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2FkZF9zaWduZWRfYXR0cmlidXRlOworKwkJUEtDUzdfZGlnZXN0X2Zyb21fYXR0cmlidXRlczsKKysJCVBLQ1M3X2dldF9hdHRyaWJ1dGU7CisrCQlQS0NTN19nZXRfaXNzdWVyX2FuZF9zZXJpYWw7CisrCQlQS0NTN19nZXRfc2lnbmVkX2F0dHJpYnV0ZTsKKysJCUNPTVBfY29tcHJlc3NfYmxvY2s7CisrCQlDT01QX2V4cGFuZF9ibG9jazsKKysJCUNPTVBfcmxlOworKwkJQ09NUF96bGliOworKwkJbXNfdGltZV9kaWZmOworKwkJbXNfdGltZV9uZXc7CisrCQltc190aW1lX2ZyZWU7CisrCQltc190aW1lX2NtcDsKKysJCW1zX3RpbWVfZ2V0OworKwkJUEtDUzdfc2V0X2F0dHJpYnV0ZXM7CisrCQlQS0NTN19zZXRfc2lnbmVkX2F0dHJpYnV0ZXM7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGU7CisrCQlYNTA5X0FUVFJJQlVURV9kdXA7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9jaGVjazsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX3ByaW50OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfc2V0OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfc2V0X3N0cmluZzsKKysJCUFTTjFfVElNRV9wcmludDsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX2ZyZWU7CisrCQlCQVNJQ19DT05TVFJBSU5UU19uZXc7CisrCQlFUlJfbG9hZF9YNTA5VjNfc3RyaW5nczsKKysJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfZnJlZTsKKysJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfbmV3OworKwkJT0JKX3R4dDJvYmo7CisrCQlQRU1fcmVhZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3JlYWRfTlNfQ0VSVF9TRVE7CisrCQlQRU1fcmVhZF9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV9yZWFkX2Jpb19OU19DRVJUX1NFUTsKKysJCVBFTV93cml0ZV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3dyaXRlX05TX0NFUlRfU0VROworKwkJUEVNX3dyaXRlX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3dyaXRlX2Jpb19OU19DRVJUX1NFUTsKKysJCVg1MDlWM19FWFRfYWRkOworKwkJWDUwOVYzX0VYVF9hZGRfYWxpYXM7CisrCQlYNTA5VjNfRVhUX2FkZF9jb25mOworKwkJWDUwOVYzX0VYVF9jbGVhbnVwOworKwkJWDUwOVYzX0VYVF9jb25mOworKwkJWDUwOVYzX0VYVF9jb25mX25pZDsKKysJCVg1MDlWM19FWFRfZ2V0OworKwkJWDUwOVYzX0VYVF9nZXRfbmlkOworKwkJWDUwOVYzX0VYVF9wcmludDsKKysJCVg1MDlWM19FWFRfcHJpbnRfZnA7CisrCQlYNTA5VjNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7CisrCQlYNTA5VjNfYWRkX3ZhbHVlOworKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sOworKwkJWDUwOVYzX2FkZF92YWx1ZV9pbnQ7CisrCQlYNTA5VjNfY29uZl9mcmVlOworKwkJWDUwOVYzX2dldF92YWx1ZV9ib29sOworKwkJWDUwOVYzX2dldF92YWx1ZV9pbnQ7CisrCQlYNTA5VjNfcGFyc2VfbGlzdDsKKysJCWQyaV9BU04xX0dFTkVSQUxJWkVEVElNRTsKKysJCWQyaV9BU04xX1RJTUU7CisrCQlkMmlfQkFTSUNfQ09OU1RSQUlOVFM7CisrCQlkMmlfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCWQyaV9leHRfa3U7CisrCQlleHRfa3VfZnJlZTsKKysJCWV4dF9rdV9uZXc7CisrCQlpMmRfQVNOMV9HRU5FUkFMSVpFRFRJTUU7CisrCQlpMmRfQVNOMV9USU1FOworKwkJaTJkX0JBU0lDX0NPTlNUUkFJTlRTOworKwkJaTJkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlpMmRfZXh0X2t1OworKwkJRVZQX01EX0NUWF9jb3B5OworKwkJaTJkX0FTTjFfRU5VTUVSQVRFRDsKKysJCWQyaV9BU04xX0VOVU1FUkFURUQ7CisrCQlBU04xX0VOVU1FUkFURURfc2V0OworKwkJQVNOMV9FTlVNRVJBVEVEX2dldDsKKysJCUJOX3RvX0FTTjFfRU5VTUVSQVRFRDsKKysJCUFTTjFfRU5VTUVSQVRFRF90b19CTjsKKysJCWkyYV9BU04xX0VOVU1FUkFURUQ7CisrCQlhMmlfQVNOMV9FTlVNRVJBVEVEOworKwkJaTJkX0dFTkVSQUxfTkFNRTsKKysJCWQyaV9HRU5FUkFMX05BTUU7CisrCQlHRU5FUkFMX05BTUVfbmV3OworKwkJR0VORVJBTF9OQU1FX2ZyZWU7CisrCQlHRU5FUkFMX05BTUVTX25ldzsKKysJCUdFTkVSQUxfTkFNRVNfZnJlZTsKKysJCWQyaV9HRU5FUkFMX05BTUVTOworKwkJaTJkX0dFTkVSQUxfTkFNRVM7CisrCQlpMnZfR0VORVJBTF9OQU1FUzsKKysJCWkyc19BU04xX09DVEVUX1NUUklORzsKKysJCXMyaV9BU04xX09DVEVUX1NUUklORzsKKysJCVg1MDlWM19FWFRfY2hlY2tfY29uZjsKKysJCWhleF90b19zdHJpbmc7CisrCQlzdHJpbmdfdG9faGV4OworKwkJREVTX2VkZTNfY2JjbV9lbmNyeXB0OworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVA7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQOworKwkJWDUwOV9DUkxfcHJpbnRfZnA7CisrCQlYNTA5X0NSTF9wcmludDsKKysJCWkydl9HRU5FUkFMX05BTUU7CisrCQl2MmlfR0VORVJBTF9OQU1FOworKwkJaTJkX1BLRVlfVVNBR0VfUEVSSU9EOworKwkJZDJpX1BLRVlfVVNBR0VfUEVSSU9EOworKwkJUEtFWV9VU0FHRV9QRVJJT0RfbmV3OworKwkJUEtFWV9VU0FHRV9QRVJJT0RfZnJlZTsKKysJCXYyaV9HRU5FUkFMX05BTUVTOworKwkJaTJzX0FTTjFfSU5URUdFUjsKKysJCVg1MDlWM19FWFRfZDJpOworKwkJbmFtZV9jbXA7CisrCQlzdHJfZHVwOworKwkJaTJzX0FTTjFfRU5VTUVSQVRFRDsKKysJCWkyc19BU04xX0VOVU1FUkFURURfVEFCTEU7CisrCQlCSU9fc19sb2c7CisrCQlCSU9fZl9yZWxpYWJsZTsKKysJCVBLQ1M3X2RhdGFGaW5hbDsKKysJCVBLQ1M3X2RhdGFEZWNvZGU7CisrCQlYNTA5VjNfRVhUX0NSTF9hZGRfY29uZjsKKysJCUJOX3NldF9wYXJhbXM7CisrCQlCTl9nZXRfcGFyYW1zOworKwkJQklPX2dldF9leF9udW07CisrCQlCSU9fc2V0X2V4X2ZyZWVfZnVuYzsKKysJCUVWUF9yaXBlbWQxNjA7CisrCQlBU04xX1RJTUVfc2V0OworKwkJaTJkX0FVVEhPUklUWV9LRVlJRDsKKysJCWQyaV9BVVRIT1JJVFlfS0VZSUQ7CisrCQlBVVRIT1JJVFlfS0VZSURfbmV3OworKwkJQVVUSE9SSVRZX0tFWUlEX2ZyZWU7CisrCQlBU04xX3NlcV91bnBhY2s7CisrCQlBU04xX3NlcV9wYWNrOworKwkJQVNOMV91bnBhY2tfc3RyaW5nOworKwkJQVNOMV9wYWNrX3N0cmluZzsKKysJCVBLQ1MxMl9wYWNrX3NhZmViYWc7CisrCQlQS0NTMTJfTUFLRV9LRVlCQUc7CisrCQlQS0NTOF9lbmNyeXB0OworKwkJUEtDUzEyX01BS0VfU0hLRVlCQUc7CisrCQlQS0NTMTJfcGFja19wN2RhdGE7CisrCQlQS0NTMTJfcGFja19wN2VuY2RhdGE7CisrCQlQS0NTMTJfYWRkX2xvY2Fsa2V5aWQ7CisrCQlQS0NTMTJfYWRkX2ZyaWVuZGx5bmFtZV9hc2M7CisrCQlQS0NTMTJfYWRkX2ZyaWVuZGx5bmFtZV91bmk7CisrCQlQS0NTMTJfZ2V0X2ZyaWVuZGx5bmFtZTsKKysJCVBLQ1MxMl9wYmVfY3J5cHQ7CisrCQlQS0NTMTJfZGVjcnlwdF9kMmk7CisrCQlQS0NTMTJfaTJkX2VuY3J5cHQ7CisrCQlQS0NTMTJfaW5pdDsKKysJCVBLQ1MxMl9rZXlfZ2VuX2FzYzsKKysJCVBLQ1MxMl9rZXlfZ2VuX3VuaTsKKysJCVBLQ1MxMl9nZW5fbWFjOworKwkJUEtDUzEyX3ZlcmlmeV9tYWM7CisrCQlQS0NTMTJfc2V0X21hYzsKKysJCVBLQ1MxMl9zZXR1cF9tYWM7CisrCQlPUEVOU1NMX2FzYzJ1bmk7CisrCQlPUEVOU1NMX3VuaTJhc2M7CisrCQlpMmRfUEtDUzEyX0JBR1M7CisrCQlQS0NTMTJfQkFHU19uZXc7CisrCQlkMmlfUEtDUzEyX0JBR1M7CisrCQlQS0NTMTJfQkFHU19mcmVlOworKwkJaTJkX1BLQ1MxMjsKKysJCWQyaV9QS0NTMTI7CisrCQlQS0NTMTJfbmV3OworKwkJUEtDUzEyX2ZyZWU7CisrCQlpMmRfUEtDUzEyX01BQ19EQVRBOworKwkJUEtDUzEyX01BQ19EQVRBX25ldzsKKysJCWQyaV9QS0NTMTJfTUFDX0RBVEE7CisrCQlQS0NTMTJfTUFDX0RBVEFfZnJlZTsKKysJCWkyZF9QS0NTMTJfU0FGRUJBRzsKKysJCVBLQ1MxMl9TQUZFQkFHX25ldzsKKysJCWQyaV9QS0NTMTJfU0FGRUJBRzsKKysJCVBLQ1MxMl9TQUZFQkFHX2ZyZWU7CisrCQlFUlJfbG9hZF9QS0NTMTJfc3RyaW5nczsKKysJCVBLQ1MxMl9QQkVfYWRkOworKwkJUEtDUzhfYWRkX2tleXVzYWdlOworKwkJUEtDUzEyX2dldF9hdHRyX2dlbjsKKysJCVBLQ1MxMl9wYXJzZTsKKysJCVBLQ1MxMl9jcmVhdGU7CisrCQlpMmRfUEtDUzEyX2JpbzsKKysJCWkyZF9QS0NTMTJfZnA7CisrCQlkMmlfUEtDUzEyX2JpbzsKKysJCWQyaV9QS0NTMTJfZnA7CisrCQlpMmRfUEJFUEFSQU07CisrCQlQQkVQQVJBTV9uZXc7CisrCQlkMmlfUEJFUEFSQU07CisrCQlQQkVQQVJBTV9mcmVlOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX25ldzsKKysJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19mcmVlOworKwkJRVZQX1BLQ1M4MlBLRVk7CisrCQlFVlBfUEtFWTJQS0NTODsKKysJCVBLQ1M4X3NldF9icm9rZW47CisrCQlFVlBfUEJFX0FMR09SX0NpcGhlckluaXQ7CisrCQlFVlBfUEJFX2FsZ19hZGQ7CisrCQlQS0NTNV9wYmVfc2V0OworKwkJRVZQX1BCRV9jbGVhbnVwOworKwkJaTJkX1NYTkVUOworKwkJZDJpX1NYTkVUOworKwkJU1hORVRfbmV3OworKwkJU1hORVRfZnJlZTsKKysJCWkyZF9TWE5FVElEOworKwkJZDJpX1NYTkVUSUQ7CisrCQlTWE5FVElEX25ldzsKKysJCVNYTkVUSURfZnJlZTsKKysJCURTQV9TSUdfbmV3OworKwkJRFNBX1NJR19mcmVlOworKwkJRFNBX2RvX3NpZ247CisrCQlEU0FfZG9fdmVyaWZ5OworKwkJZDJpX0RTQV9TSUc7CisrCQlpMmRfRFNBX1NJRzsKKysJCWkyZF9BU04xX1ZJU0lCTEVTVFJJTkc7CisrCQlkMmlfQVNOMV9WSVNJQkxFU1RSSU5HOworKwkJaTJkX0FTTjFfVVRGOFNUUklORzsKKysJCWQyaV9BU04xX1VURjhTVFJJTkc7CisrCQlpMmRfRElSRUNUT1JZU1RSSU5HOworKwkJZDJpX0RJUkVDVE9SWVNUUklORzsKKysJCWkyZF9ESVNQTEFZVEVYVDsKKysJCWQyaV9ESVNQTEFZVEVYVDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5OworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDk7CisrCQlpMmRfUEJLREYyUEFSQU07CisrCQlQQktERjJQQVJBTV9uZXc7CisrCQlkMmlfUEJLREYyUEFSQU07CisrCQlQQktERjJQQVJBTV9mcmVlOworKwkJaTJkX1BCRTJQQVJBTTsKKysJCVBCRTJQQVJBTV9uZXc7CisrCQlkMmlfUEJFMlBBUkFNOworKwkJUEJFMlBBUkFNX2ZyZWU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOworKwkJaTJkX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKKysJCWQyaV9BU04xX1NFVF9PRl9TWE5FVElEOworKwkJaTJkX0FTTjFfU0VUX09GX1NYTkVUSUQ7CisrCQlkMmlfQVNOMV9TRVRfT0ZfUE9MSUNZUVVBTElORk87CisrCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZUVVBTElORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKKysJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOworKwkJU1hORVRfYWRkX2lkX2FzYzsKKysJCVNYTkVUX2FkZF9pZF91bG9uZzsKKysJCVNYTkVUX2FkZF9pZF9JTlRFR0VSOworKwkJU1hORVRfZ2V0X2lkX2FzYzsKKysJCVNYTkVUX2dldF9pZF91bG9uZzsKKysJCVNYTkVUX2dldF9pZF9JTlRFR0VSOworKwkJWDUwOVYzX3NldF9jb25mX2xoYXNoOworKwkJaTJkX0NFUlRJRklDQVRFUE9MSUNJRVM7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX25ldzsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfZnJlZTsKKysJCWQyaV9DRVJUSUZJQ0FURVBPTElDSUVTOworKwkJaTJkX1BPTElDWUlORk87CisrCQlQT0xJQ1lJTkZPX25ldzsKKysJCWQyaV9QT0xJQ1lJTkZPOworKwkJUE9MSUNZSU5GT19mcmVlOworKwkJaTJkX1BPTElDWVFVQUxJTkZPOworKwkJUE9MSUNZUVVBTElORk9fbmV3OworKwkJZDJpX1BPTElDWVFVQUxJTkZPOworKwkJUE9MSUNZUVVBTElORk9fZnJlZTsKKysJCWkyZF9VU0VSTk9USUNFOworKwkJVVNFUk5PVElDRV9uZXc7CisrCQlkMmlfVVNFUk5PVElDRTsKKysJCVVTRVJOT1RJQ0VfZnJlZTsKKysJCWkyZF9OT1RJQ0VSRUY7CisrCQlOT1RJQ0VSRUZfbmV3OworKwkJZDJpX05PVElDRVJFRjsKKysJCU5PVElDRVJFRl9mcmVlOworKwkJWDUwOVYzX2dldF9zdHJpbmc7CisrCQlYNTA5VjNfZ2V0X3NlY3Rpb247CisrCQlYNTA5VjNfc3RyaW5nX2ZyZWU7CisrCQlYNTA5VjNfc2VjdGlvbl9mcmVlOworKwkJWDUwOVYzX3NldF9jdHg7CisrCQlzMmlfQVNOMV9JTlRFR0VSOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fbWFsbG9jX2xvY2tlZDsKKysJCUNSWVBUT19mcmVlX2xvY2tlZDsKKysJCUJOX21vZF9leHAyX21vbnQ7CisrCQlFUlJfZ2V0X2Vycm9yX2xpbmVfZGF0YTsKKysJCUVSUl9wZWVrX2Vycm9yX2xpbmVfZGF0YTsKKysJCVBLQ1MxMl9QQkVfa2V5aXZnZW47CisrCQlYNTA5X0FMR09SX2R1cDsKKysJCWQyaV9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOworKwkJaTJkX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7CisrCQlpMmRfQ1JMX0RJU1RfUE9JTlRTOworKwkJQ1JMX0RJU1RfUE9JTlRTX25ldzsKKysJCUNSTF9ESVNUX1BPSU5UU19mcmVlOworKwkJZDJpX0NSTF9ESVNUX1BPSU5UUzsKKysJCWkyZF9ESVNUX1BPSU5UOworKwkJRElTVF9QT0lOVF9uZXc7CisrCQlkMmlfRElTVF9QT0lOVDsKKysJCURJU1RfUE9JTlRfZnJlZTsKKysJCWkyZF9ESVNUX1BPSU5UX05BTUU7CisrCQlESVNUX1BPSU5UX05BTUVfbmV3OworKwkJRElTVF9QT0lOVF9OQU1FX2ZyZWU7CisrCQlkMmlfRElTVF9QT0lOVF9OQU1FOworKwkJWDUwOVYzX2FkZF92YWx1ZV91Y2hhcjsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FUVFJJQlVURTsKKysJCWkyZF9BU04xX1NFVF9PRl9BU04xX1RZUEU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOworKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FUVFJJQlVURTsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7CisrCQlYNTA5VjNfRVhUX2kyZDsKKysJCVg1MDlWM19FWFRfdmFsX3BybjsKKysJCVg1MDlWM19FWFRfYWRkX2xpc3Q7CisrCQlFVlBfQ0lQSEVSX3R5cGU7CisrCQlFVlBfUEJFX0NpcGhlckluaXQ7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2xfbmY7CisrCQlkMmlfQVNOMV9VSU5URUdFUjsKKysJCXNrX3ZhbHVlOworKwkJc2tfbnVtOworKwkJc2tfc2V0OworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKKysJCXNrX3NvcnQ7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0NSTDsKKysJCWkyZF9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKKysJCWkyZF9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOworKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlQS0NTNV9QQkVfYWRkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTODsKKysJCWkyZF9QS0NTOF9mcDsKKysJCVBFTV9yZWFkX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfYmlvX1A4X1BSSVZfS0VZX0lORk87CisrCQlkMmlfUEtDUzhfYmlvOworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fd3JpdGVfYmlvX1A4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9QS0NTODsKKysJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2JpbzsKKysJCWQyaV9QS0NTOF9mcDsKKysJCVBFTV93cml0ZV9QS0NTODsKKysJCVBFTV9yZWFkX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9QOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M4OworKwkJUEVNX3dyaXRlX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fd3JpdGVfUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M1X1BCRV9rZXlpdmdlbjsKKysJCWkyZF9QS0NTOF9iaW87CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2JpbzsKKysJCUJJT19zX2JpbzsKKysJCVBLQ1M1X3BiZTJfc2V0OworKwkJUEtDUzVfUEJLREYyX0hNQUNfU0hBMTsKKysJCVBLQ1M1X3YyX1BCRV9rZXlpdmdlbjsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX1BLQ1M4UHJpdmF0ZUtleTsKKysJCUJJT19jdHJsX2dldF9yZWFkX3JlcXVlc3Q7CisrCQlCSU9fY3RybF9wZW5kaW5nOworKwkJQklPX2N0cmxfd3BlbmRpbmc7CisrCQlCSU9fbmV3X2Jpb19wYWlyOworKwkJQklPX2N0cmxfZ2V0X3dyaXRlX2d1YXJhbnRlZTsKKysJCUNSWVBUT19udW1fbG9ja3M7CisrCQlDT05GX2xvYWRfYmlvOworKwkJQ09ORl9sb2FkX2ZwOworKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfT0JKRUNUOworKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfT0JKRUNUOworKwkJUEtDUzdfc2lnbmF0dXJlVmVyaWZ5OworKwkJUlNBX3NldF9tZXRob2Q7CisrCQlSU0FfZ2V0X21ldGhvZDsKKysJCVJTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlSU0FfY2hlY2tfa2V5OworKwkJT0JKX29iajJ0eHQ7CisrCQlEU0FfZHVwX0RIOworKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbnM7CisrCQlYNTA5X1JFUV9zZXRfZXh0ZW5zaW9uX25pZHM7CisrCQlCSU9fbndyaXRlOworKwkJWDUwOV9SRVFfZXh0ZW5zaW9uX25pZDsKKysJCUJJT19ucmVhZDsKKysJCVg1MDlfUkVRX2dldF9leHRlbnNpb25fbmlkczsKKysJCUJJT19ud3JpdGUwOworKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnNfbmlkOworKwkJQklPX25yZWFkMDsKKysJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zOworKwkJQklPX25ld19tZW1fYnVmOworKwkJREhfc2V0X2V4X2RhdGE7CisrCQlESF9zZXRfbWV0aG9kOworKwkJRFNBX09wZW5TU0w7CisrCQlESF9nZXRfZXhfZGF0YTsKKysJCURIX2dldF9leF9uZXdfaW5kZXg7CisrCQlEU0FfbmV3X21ldGhvZDsKKysJCURIX25ld19tZXRob2Q7CisrCQlESF9PcGVuU1NMOworKwkJRFNBX2dldF9leF9uZXdfaW5kZXg7CisrCQlESF9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlEU0Ffc2V0X2V4X2RhdGE7CisrCQlESF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlEU0FfZ2V0X2V4X2RhdGE7CisrCQlYNTA5VjNfRVhUX1JFUV9hZGRfY29uZjsKKysJCU5FVFNDQVBFX1NQS0lfcHJpbnQ7CisrCQlORVRTQ0FQRV9TUEtJX3NldF9wdWJrZXk7CisrCQlORVRTQ0FQRV9TUEtJX2I2NF9lbmNvZGU7CisrCQlORVRTQ0FQRV9TUEtJX2dldF9wdWJrZXk7CisrCQlORVRTQ0FQRV9TUEtJX2I2NF9kZWNvZGU7CisrCQlVVEY4X3B1dGM7CisrCQlVVEY4X2dldGM7CisrCQlSU0FfbnVsbF9tZXRob2Q7CisrCQlBU04xX3RhZzJzdHI7CisrCQlCSU9fY3RybF9yZXNldF9yZWFkX3JlcXVlc3Q7CisrCQlESVNQTEFZVEVYVF9uZXc7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9mcmVlOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfZDJpOworKwkJWDUwOV9zZXRfZXhfZGF0YTsKKysJCVg1MDlfcmVqZWN0X3NldF9iaXRfYXNjOworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV90eHQ7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X05JRDsKKysJCVg1MDlfUFVSUE9TRV9nZXQwOworKwkJUEVNX3JlYWRfWDUwOV9BVVg7CisrCQlkMmlfQVVUSE9SSVRZX0lORk9fQUNDRVNTOworKwkJUEVNX3dyaXRlX1BVQktFWTsKKysJCUFDQ0VTU19ERVNDUklQVElPTl9uZXc7CisrCQlYNTA5X0NFUlRfQVVYX2ZyZWU7CisrCQlkMmlfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJWDUwOV90cnVzdF9jbGVhcjsKKysJCVg1MDlfVFJVU1RfYWRkOworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX25ldzsKKysJCVg1MDlfYWxpYXNfc2V0MTsKKysJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX2ZyZWU7CisrCQlFVlBfUEtFWV9nZXQxX0RTQTsKKysJCUFTTjFfQk1QU1RSSU5HX25ldzsKKysJCUFTTjFfbWJzdHJpbmdfY29weTsKKysJCUFTTjFfVVRGOFNUUklOR19uZXc7CisrCQlEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJaTJkX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCUFTTjFfVDYxU1RSSU5HX2ZyZWU7CisrCQlEU0Ffc2V0X21ldGhvZDsKKysJCVg1MDlfZ2V0X2V4X2RhdGE7CisrCQlBU04xX1NUUklOR190eXBlOworKwkJWDUwOV9QVVJQT1NFX2dldF9ieV9zbmFtZTsKKysJCUFTTjFfVElNRV9mcmVlOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfY21wOworKwkJQVNOMV9CSVRfU1RSSU5HX25ldzsKKysJCVg1MDlfZ2V0X2V4dF9kMmk7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9BVVg7CisrCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrX2FzYzsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZfbWFza19hc2M7CisrCQlQRU1fd3JpdGVfYmlvX1JTQV9QVUJLRVk7CisrCQlBU04xX0lOVEVHRVJfY21wOworKwkJZDJpX1JTQV9QVUJLRVlfZnA7CisrCQlYNTA5X3RydXN0X3NldF9iaXRfYXNjOworKwkJUEVNX3dyaXRlX2Jpb19EU0FfUFVCS0VZOworKwkJWDUwOV9TVE9SRV9DVFhfZnJlZTsKKysJCUVWUF9QS0VZX3NldDFfRFNBOworKwkJaTJkX0RTQV9QVUJLRVlfZnA7CisrCQlYNTA5X2xvYWRfY2VydF9jcmxfZmlsZTsKKysJCUFTTjFfVElNRV9uZXc7CisrCQlpMmRfUlNBX1BVQktFWTsKKysJCVg1MDlfU1RPUkVfQ1RYX3B1cnBvc2VfaW5oZXJpdDsKKysJCVBFTV9yZWFkX1JTQV9QVUJLRVk7CisrCQlkMmlfWDUwOV9BVVg7CisrCQlpMmRfRFNBX1BVQktFWTsKKysJCVg1MDlfQ0VSVF9BVVhfcHJpbnQ7CisrCQlQRU1fcmVhZF9EU0FfUFVCS0VZOworKwkJaTJkX1JTQV9QVUJLRVlfYmlvOworKwkJQVNOMV9CSVRfU1RSSU5HX251bV9hc2M7CisrCQlpMmRfUFVCS0VZOworKwkJQVNOMV9VVENUSU1FX2ZyZWU7CisrCQlEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJWDUwOV9QVVJQT1NFX2dldF9ieV9pZDsKKysJCUFDQ0VTU19ERVNDUklQVElPTl9mcmVlOworKwkJUEVNX3JlYWRfYmlvX1BVQktFWTsKKysJCUFTTjFfU1RSSU5HX3NldF9ieV9OSUQ7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2lkOworKwkJRElTUExBWVRFWFRfZnJlZTsKKysJCU9USEVSTkFNRV9uZXc7CisrCQlYNTA5X0NFUlRfQVVYX25ldzsKKysJCVg1MDlfVFJVU1RfY2xlYW51cDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfT0JKOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9kMmk7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MF9uYW1lOworKwkJUEVNX3JlYWRfUFVCS0VZOworKwkJaTJkX0RTQV9QVUJLRVlfYmlvOworKwkJaTJkX09USEVSTkFNRTsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2ZyZWU7CisrCQlBU04xX0JJVF9TVFJJTkdfc2V0X2FzYzsKKysJCVg1MDlfZ2V0X2V4X25ld19pbmRleDsKKysJCUFTTjFfU1RSSU5HX1RBQkxFX2NsZWFudXA7CisrCQlYNTA5X1RSVVNUX2dldF9ieV9pZDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfdHJ1c3Q7CisrCQlBU04xX1NUUklOR19sZW5ndGg7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfbmV3OworKwkJWDUwOVYzX2dldF9kMmk7CisrCQlBU04xX0VOVU1FUkFURURfZnJlZTsKKysJCWkyZF9YNTA5X0NFUlRfQVVYOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RydXN0OworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFzazsKKysJCVg1MDlfU1RPUkVfQ1RYX25ldzsKKysJCUVWUF9QS0VZX2dldDFfUlNBOworKwkJRElSRUNUT1JZU1RSSU5HX2ZyZWU7CisrCQlQRU1fd3JpdGVfWDUwOV9BVVg7CisrCQlBU04xX09DVEVUX1NUUklOR19zZXQ7CisrCQlkMmlfRFNBX1BVQktFWV9mcDsKKysJCWQyaV9SU0FfUFVCS0VZOworKwkJWDUwOV9UUlVTVF9nZXQwX25hbWU7CisrCQlYNTA5X1RSVVNUX2dldDA7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfZnJlZTsKKysJCUFTTjFfSUE1U1RSSU5HX25ldzsKKysJCWQyaV9EU0FfUFVCS0VZOworKwkJWDUwOV9jaGVja19wdXJwb3NlOworKwkJQVNOMV9FTlVNRVJBVEVEX25ldzsKKysJCWQyaV9SU0FfUFVCS0VZX2JpbzsKKysJCWQyaV9QVUJLRVk7CisrCQlYNTA5X1RSVVNUX2dldF90cnVzdDsKKysJCVg1MDlfVFJVU1RfZ2V0X2ZsYWdzOworKwkJQVNOMV9CTVBTVFJJTkdfZnJlZTsKKysJCUFTTjFfVDYxU1RSSU5HX25ldzsKKysJCUFTTjFfVVRDVElNRV9uZXc7CisrCQlpMmRfQVVUSE9SSVRZX0lORk9fQUNDRVNTOworKwkJRVZQX1BLRVlfc2V0MV9SU0E7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfcHVycG9zZTsKKysJCUFTTjFfSUE1U1RSSU5HX2ZyZWU7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQVVYOworKwkJWDUwOV9QVVJQT1NFX2dldF9jb3VudDsKKysJCUNSWVBUT19hZGRfaW5mbzsKKysJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfdHh0OworKwkJQVNOMV9TVFJJTkdfZ2V0X2RlZmF1bHRfbWFzazsKKysJCVg1MDlfYWxpYXNfZ2V0MDsKKysJCUFTTjFfU1RSSU5HX2RhdGE7CisrCQlpMmRfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJWDUwOV90cnVzdF9zZXRfYml0OworKwkJQVNOMV9CSVRfU1RSSU5HX2ZyZWU7CisrCQlQRU1fcmVhZF9iaW9fUlNBX1BVQktFWTsKKysJCVg1MDlfYWRkMV9yZWplY3Rfb2JqZWN0OworKwkJWDUwOV9jaGVja190cnVzdDsKKysJCVBFTV9yZWFkX2Jpb19EU0FfUFVCS0VZOworKwkJWDUwOV9QVVJQT1NFX2FkZDsKKysJCUFTTjFfU1RSSU5HX1RBQkxFX2dldDsKKysJCUFTTjFfVVRGOFNUUklOR19mcmVlOworKwkJZDJpX0RTQV9QVUJLRVlfYmlvOworKwkJUEVNX3dyaXRlX1JTQV9QVUJLRVk7CisrCQlkMmlfT1RIRVJOQU1FOworKwkJWDUwOV9yZWplY3Rfc2V0X2JpdDsKKysJCVBFTV93cml0ZV9EU0FfUFVCS0VZOworKwkJWDUwOV9QVVJQT1NFX2dldDBfc25hbWU7CisrCQlFVlBfUEtFWV9zZXQxX0RIOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZHVwOworKwkJQVNOMV9CSVRfU1RSSU5HX3NldDsKKysJCVg1MDlfVFJVU1RfZ2V0X2NvdW50OworKwkJQVNOMV9JTlRFR0VSX2ZyZWU7CisrCQlPVEhFUk5BTUVfZnJlZTsKKysJCWkyZF9SU0FfUFVCS0VZX2ZwOworKwkJQVNOMV9JTlRFR0VSX2R1cDsKKysJCWQyaV9YNTA5X0NFUlRfQVVYOworKwkJUEVNX3dyaXRlX2Jpb19QVUJLRVk7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfZnJlZTsKKysJCVg1MDlfUFVSUE9TRV9jbGVhbnVwOworKwkJQVNOMV9tYnN0cmluZ19uY29weTsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX25ldzsKKysJCUVWUF9QS0VZX2dldDFfREg7CisrCQlBU04xX09DVEVUX1NUUklOR19uZXc7CisrCQlBU04xX0lOVEVHRVJfbmV3OworKwkJaTJkX1g1MDlfQVVYOworKwkJQVNOMV9CSVRfU1RSSU5HX25hbWVfcHJpbnQ7CisrCQlYNTA5X2NtcDsKKysJCUFTTjFfU1RSSU5HX2xlbmd0aF9zZXQ7CisrCQlESVJFQ1RPUllTVFJJTkdfbmV3OworKwkJWDUwOV9hZGQxX3RydXN0X29iamVjdDsKKysJCVBLQ1MxMl9uZXdwYXNzOworKwkJU01JTUVfd3JpdGVfUEtDUzc7CisrCQlTTUlNRV9yZWFkX1BLQ1M3OworKwkJREVTX3NldF9rZXlfY2hlY2tlZDsKKysJCVBLQ1M3X3ZlcmlmeTsKKysJCVBLQ1M3X2VuY3J5cHQ7CisrCQlERVNfc2V0X2tleV91bmNoZWNrZWQ7CisrCQlTTUlNRV9jcmxmX2NvcHk7CisrCQlpMmRfQVNOMV9QUklOVEFCTEVTVFJJTkc7CisrCQlQS0NTN19nZXQwX3NpZ25lcnM7CisrCQlQS0NTN19kZWNyeXB0OworKwkJU01JTUVfdGV4dDsKKysJCVBLQ1M3X3NpbXBsZV9zbWltZWNhcDsKKysJCVBLQ1M3X2dldF9zbWltZWNhcDsKKysJCVBLQ1M3X3NpZ247CisrCQlQS0NTN19hZGRfYXR0cmliX3NtaW1lY2FwOworKwkJQ1JZUFRPX2RiZ19zZXRfb3B0aW9uczsKKysJCUNSWVBUT19yZW1vdmVfYWxsX2luZm87CisrCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7CisrCQlDUllQVE9faXNfbWVtX2NoZWNrX29uOworKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfZnVuY3Rpb25zOworKwkJQ1JZUFRPX3BvcF9pbmZvOworKwkJQ1JZUFRPX3B1c2hfaW5mb187CisrCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19vcHRpb25zOworKwkJUEVNX3dyaXRlX1BLQ1M4UHJpdmF0ZUtleV9uaWQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleV9uaWQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdktleV9uaWQ7CisrCQlkMmlfUEtDUzhQcml2YXRlS2V5X2JpbzsKKysJCUFTTjFfTlVMTF9mcmVlOworKwkJZDJpX0FTTjFfTlVMTDsKKysJCUFTTjFfTlVMTF9uZXc7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X2JpbzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfZnA7CisrCQlpMmRfQVNOMV9OVUxMOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9uaWRfZnA7CisrCQlkMmlfUEtDUzhQcml2YXRlS2V5X2ZwOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9uaWRfYmlvOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fZnA7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19iaW87CisrCQlQRU1fY2I7CisrCQlpMmRfUHJpdmF0ZUtleV9mcDsKKysJCWQyaV9Qcml2YXRlS2V5X2JpbzsKKysJCWQyaV9Qcml2YXRlS2V5X2ZwOworKwkJaTJkX1ByaXZhdGVLZXlfYmlvOworKwkJWDUwOV9yZWplY3RfY2xlYXI7CisrCQlYNTA5X1RSVVNUX3NldF9kZWZhdWx0OworKwkJZDJpX0F1dG9Qcml2YXRlS2V5OworKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF90eXBlOworKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9kYXRhOworKwkJWDUwOWF0X2dldF9hdHRyOworKwkJWDUwOWF0X2dldF9hdHRyX2NvdW50OworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X05JRDsKKysJCVg1MDlfQVRUUklCVVRFX3NldDFfb2JqZWN0OworKwkJWDUwOV9BVFRSSUJVVEVfY291bnQ7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfT0JKOworKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9vYmplY3Q7CisrCQlYNTA5YXRfZ2V0X2F0dHJfYnlfTklEOworKwkJWDUwOWF0X2FkZDFfYXR0cjsKKysJCVg1MDlfQVRUUklCVVRFX2dldDBfZGF0YTsKKysJCVg1MDlhdF9kZWxldGVfYXR0cjsKKysJCVg1MDlhdF9nZXRfYXR0cl9ieV9PQko7CisrCQlSQU5EX2FkZDsKKysJCUJJT19udW1iZXJfd3JpdHRlbjsKKysJCUJJT19udW1iZXJfcmVhZDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDFfY2hhaW47CisrCQlFUlJfbG9hZF9SQU5EX3N0cmluZ3M7CisrCQlSQU5EX3BzZXVkb19ieXRlczsKKysJCVg1MDlfUkVRX2dldF9hdHRyX2J5X05JRDsKKysJCVg1MDlfUkVRX2dldF9hdHRyOworKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X05JRDsKKysJCVg1MDlfUkVRX2dldF9hdHRyX2J5X09CSjsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X09CSjsKKysJCVg1MDlfUkVRX2dldF9hdHRyX2NvdW50OworKwkJWDUwOV9SRVFfYWRkMV9hdHRyOworKwkJWDUwOV9SRVFfZGVsZXRlX2F0dHI7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X09CSjsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfdHh0OworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV90eHQ7CisrCQlCTl9wc2V1ZG9fcmFuZDsKKysJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0OworKwkJQk5fQ1RYX2VuZDsKKysJCUJOX0NUWF9zdGFydDsKKysJCUJOX0NUWF9nZXQ7CisrCQlFVlBfUEtFWTJQS0NTOF9icm9rZW47CisrCQlBU04xX1NUUklOR19UQUJMRV9hZGQ7CisrCQlDUllQVE9fZGJnX2dldF9vcHRpb25zOworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX25ldzsKKysJCUNSWVBUT19nZXRfbWVtX2RlYnVnX29wdGlvbnM7CisrCQlERVNfY3J5cHQ7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfUkVRX05FVzsKKysJCVBFTV93cml0ZV9YNTA5X1JFUV9ORVc7CisrCQlCSU9fY2FsbGJhY2tfY3RybDsKKysJCVJBTkRfZWdkOworKwkJUkFORF9zdGF0dXM7CisrCQlibl9kdW1wMTsKKysJCURFU19jaGVja19rZXlfcGFyaXR5OworKwkJbGhfbnVtX2l0ZW1zOworKwkJUkFORF9ldmVudDsKKysJCURTT19uZXc7CisrCQlEU09fbmV3X21ldGhvZDsKKysJCURTT19mcmVlOworKwkJRFNPX2ZsYWdzOworKwkJRFNPX3VwOworKwkJRFNPX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCURTT19nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlEU09fZ2V0X21ldGhvZDsKKysJCURTT19zZXRfbWV0aG9kOworKwkJRFNPX2xvYWQ7CisrCQlEU09fYmluZF92YXI7CisrCQlEU09fTUVUSE9EX251bGw7CisrCQlEU09fTUVUSE9EX29wZW5zc2w7CisrCQlEU09fTUVUSE9EX2RsZmNuOworKwkJRFNPX01FVEhPRF93aW4zMjsKKysJCUVSUl9sb2FkX0RTT19zdHJpbmdzOworKwkJRFNPX01FVEhPRF9kbDsKKysJCU5DT05GX2xvYWQ7CisrCQlOQ09ORl9sb2FkX2ZwOworKwkJTkNPTkZfbmV3OworKwkJTkNPTkZfZ2V0X3N0cmluZzsKKysJCU5DT05GX2ZyZWU7CisrCQlOQ09ORl9nZXRfbnVtYmVyOworKwkJQ09ORl9kdW1wX2ZwOworKwkJTkNPTkZfbG9hZF9iaW87CisrCQlOQ09ORl9kdW1wX2ZwOworKwkJTkNPTkZfZ2V0X3NlY3Rpb247CisrCQlOQ09ORl9kdW1wX2JpbzsKKysJCUNPTkZfZHVtcF9iaW87CisrCQlOQ09ORl9mcmVlX2RhdGE7CisrCQlDT05GX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVSUl9lcnJvcl9zdHJpbmdfbjsKKysJCUJJT19zbnByaW50ZjsKKysJCURTT19jdHJsOworKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKKysJCWkyZF9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKKysJCWkyZF9BU04xX1NFVF9PRl9QS0NTNzsKKysJCUJJT192ZnJlZTsKKysJCWQyaV9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7CisrCQlBU04xX1VUQ1RJTUVfZ2V0OworKwkJWDUwOV9SRVFfZGlnZXN0OworKwkJWDUwOV9DUkxfZGlnZXN0OworKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3OworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGg7CisrCQlFVlBfQ0lQSEVSX0NUWF9jdHJsOworKwkJQk5fbW9kX2V4cF9tb250X3dvcmQ7CisrCQlSQU5EX2VnZF9ieXRlczsKKysJCVg1MDlfUkVRX2dldDFfZW1haWw7CisrCQlYNTA5X2dldDFfZW1haWw7CisrCQlYNTA5X2VtYWlsX2ZyZWU7CisrCQlpMmRfUlNBX05FVDsKKysJCWQyaV9SU0FfTkVUXzI7CisrCQlkMmlfUlNBX05FVDsKKysJCURTT19iaW5kX2Z1bmM7CisrCQlDUllQVE9fZ2V0X25ld19keW5sb2NraWQ7CisrCQlza19uZXdfbnVsbDsKKysJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2I7CisrCQlDUllQVE9fZGVzdHJveV9keW5sb2NraWQ7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfc2l6ZTsKKysJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NiOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX3ZhbHVlOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2I7CisrCQljMmlfQVNOMV9CSVRfU1RSSU5HOworKwkJaTJjX0FTTjFfQklUX1NUUklORzsKKysJCVJBTkRfcG9sbDsKKysJCWMyaV9BU04xX0lOVEVHRVI7CisrCQlpMmNfQVNOMV9JTlRFR0VSOworKwkJQklPX2R1bXBfaW5kZW50OworKwkJQVNOMV9wYXJzZV9kdW1wOworKwkJYzJpX0FTTjFfT0JKRUNUOworKwkJWDUwOV9OQU1FX3ByaW50X2V4X2ZwOworKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXhfZnA7CisrCQlYNTA5X05BTUVfcHJpbnRfZXg7CisrCQlBU04xX1NUUklOR19wcmludF9leDsKKysJCU1ENDsKKysJCU1ENF9UcmFuc2Zvcm07CisrCQlNRDRfRmluYWw7CisrCQlNRDRfVXBkYXRlOworKwkJTUQ0X0luaXQ7CisrCQlFVlBfbWQ0OworKwkJaTJkX1BVQktFWV9iaW87CisrCQlpMmRfUFVCS0VZX2ZwOworKwkJZDJpX1BVQktFWV9iaW87CisrCQlBU04xX1NUUklOR190b19VVEY4OworKwkJQklPX3ZwcmludGY7CisrCQlCSU9fdnNucHJpbnRmOworKwkJZDJpX1BVQktFWV9mcDsKKysJCVg1MDlfY21wX3RpbWU7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfdGltZTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDFfaXNzdWVyOworKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfbWF0Y2g7CisrCQlYNTA5X09CSkVDVF9pZHhfYnlfc3ViamVjdDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9mbGFnczsKKysJCVg1MDlfU1RPUkVfQ1RYX3RydXN0ZWRfc3RhY2s7CisrCQlYNTA5X3RpbWVfYWRqOworKwkJWDUwOV9jaGVja19pc3N1ZWQ7CisrCQlBU04xX1VUQ1RJTUVfY21wX3RpbWVfdDsKKysJCURFU19zZXRfd2Vha19rZXlfZmxhZzsKKysJCURFU19jaGVja19rZXk7CisrCQlERVNfcndfbW9kZTsKKysJCVJTQV9QS0NTMV9SU0FyZWY7CisrCQlYNTA5X2tleWlkX3NldDE7CisrCQlCSU9fbmV4dDsKKysJCURTT19NRVRIT0Rfdm1zOworKwkJQklPX2ZfbGluZWJ1ZmZlcjsKKysJCUJOX2JudGVzdF9yYW5kOworKwkJT1BFTlNTTF9pc3NldHVnaWQ7CisrCQlCTl9yYW5kX3JhbmdlOworKwkJRVJSX2xvYWRfRU5HSU5FX3N0cmluZ3M7CisrCQlFTkdJTkVfc2V0X0RTQTsKKysJCUVOR0lORV9nZXRfZmluaXNoX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JTQTsKKysJCUVOR0lORV9nZXRfQk5fbW9kX2V4cDsKKysJCURTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9zZXRfREg7CisrCQlFTkdJTkVfc2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9pbml0OworKwkJREhfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlSU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfZmluaXNoOworKwkJRU5HSU5FX2xvYWRfcHVibGljX2tleTsKKysJCUVOR0lORV9nZXRfREg7CisrCQlFTkdJTkVfY3RybDsKKysJCUVOR0lORV9nZXRfaW5pdF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfaW5pdF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9EU0E7CisrCQlFTkdJTkVfZ2V0X25hbWU7CisrCQlFTkdJTkVfZ2V0X2xhc3Q7CisrCQlFTkdJTkVfZ2V0X3ByZXY7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfREg7CisrCQlFTkdJTkVfZ2V0X1JTQTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdDsKKysJCUVOR0lORV9nZXRfUkFORDsKKysJCUVOR0lORV9nZXRfZmlyc3Q7CisrCQlFTkdJTkVfYnlfaWQ7CisrCQlFTkdJTkVfc2V0X2ZpbmlzaF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfZGVmX0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OworKwkJUlNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX3NldF9SU0E7CisrCQlFTkdJTkVfbG9hZF9wcml2YXRlX2tleTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9SQU5EOworKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwOworKwkJRU5HSU5FX3JlbW92ZTsKKysJCUVOR0lORV9mcmVlOworKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9nZXRfbmV4dDsKKysJCUVOR0lORV9zZXRfbmFtZTsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9EU0E7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9SU0E7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUkFORDsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwOworKwkJRU5HSU5FX3NldF9SQU5EOworKwkJRU5HSU5FX3NldF9pZDsKKysJCUVOR0lORV9zZXRfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfREg7CisrCQlFTkdJTkVfbmV3OworKwkJRU5HSU5FX2dldF9pZDsKKysJCURTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9hZGQ7CisrCQlESF9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9nZXRfRFNBOworKwkJRU5HSU5FX2dldF9jdHJsX2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9jdHJsX2Z1bmN0aW9uOworKwkJQk5fcHNldWRvX3JhbmRfcmFuZ2U7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfdmVyaWZ5X2NiOworKwkJRVJSX2xvYWRfQ09NUF9zdHJpbmdzOworKwkJUEtDUzEyX2l0ZW1fZGVjcnlwdF9kMmk7CisrCQlBU04xX1VURjhTVFJJTkdfaXQ7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9jaXBoZXJzOworKwkJRU5HSU5FX2dldF9jaXBoZXJzOworKwkJZDJpX09DU1BfQkFTSUNSRVNQOworKwkJS1JCNV9DSEVDS1NVTV9pdDsKKysJCUVDX1BPSU5UX2FkZDsKKysJCUFTTjFfaXRlbV9leF9pMmQ7CisrCQlPQ1NQX0NFUlRJRF9pdDsKKysJCWQyaV9PQ1NQX1JFU1BCWVRFUzsKKysJCVg1MDlWM19hZGQxX2kyZDsKKysJCVBLQ1M3X0VOVkVMT1BFX2l0OworKwkJVUlfYWRkX2lucHV0X2Jvb2xlYW47CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9SU0E7CisrCQlYNTA5VjNfRVhUX25jb25mOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2ZyZWU7CisrCQlkMmlfT0NTUF9DRVJUU1RBVFVTOworKwkJWDUwOV9SRVZPS0VEX3NldF9zZXJpYWxOdW1iZXI7CisrCQlYNTA5X3ByaW50X2V4OworKwkJT0NTUF9PTkVSRVFfZ2V0MV9leHRfZDJpOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SQU5EOworKwkJRU5HSU5FX2xvYWRfZHluYW1pYzsKKysJCVBCS0RGMlBBUkFNX2l0OworKwkJRVhURU5ERURfS0VZX1VTQUdFX25ldzsKKysJCUVDX0dST1VQX2NsZWFyX2ZyZWU7CisrCQlPQ1NQX3NlbmRyZXFfYmlvOworKwkJQVNOMV9pdGVtX2RpZ2VzdDsKKysJCU9DU1BfQkFTSUNSRVNQX2RlbGV0ZV9leHQ7CisrCQlPQ1NQX1NJR05BVFVSRV9pdDsKKysJCVg1MDlfQ1JMX2l0OworKwkJT0NTUF9CQVNJQ1JFU1BfYWRkX2V4dDsKKysJCUtSQjVfRU5DS0VZX2l0OworKwkJVUlfbWV0aG9kX3NldF9jbG9zZXI7CisrCQlYNTA5X1NUT1JFX3NldF9wdXJwb3NlOworKwkJaTJkX0FTTjFfR0VORVJBTFNUUklORzsKKysJCU9DU1BfcmVzcG9uc2Vfc3RhdHVzOworKwkJaTJkX09DU1BfU0VSVklDRUxPQzsKKysJCUVOR0lORV9nZXRfZGlnZXN0X2VuZ2luZTsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRnA7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9PQko7CisrCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9rZXk7CisrCQlBU04xX1Q2MVNUUklOR19pdDsKKysJCUVDX0dST1VQX21ldGhvZF9vZjsKKysJCWkyZF9LUkI1X0FQUkVROworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0OworKwkJQVNOMV9QUklOVEFCTEVfbmV3OworKwkJSE1BQ19Jbml0X2V4OworKwkJZDJpX0tSQjVfQVVUSEVOVDsKKysJCU9DU1BfYXJjaGl2ZV9jdXRvZmZfbmV3OworKwkJRUNfUE9JTlRfc2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9KcHJval9jb29yZHNfR0ZwOworKwkJX29zc2xfb2xkX2Rlc19pc193ZWFrX2tleTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfT0JKOworKwkJRUNfUE9JTlRfb2N0MnBvaW50OworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfY291bnQ7CisrCQlVSV9jdHJsOworKwkJX3NoYWRvd19ERVNfcndfbW9kZTsKKysJCWFzbjFfZG9fYWRiOworKwkJQVNOMV90ZW1wbGF0ZV9pMmQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfREg7CisrCQlVSV9jb25zdHJ1Y3RfcHJvbXB0OworKwkJWDUwOV9TVE9SRV9zZXRfdHJ1c3Q7CisrCQlVSV9kdXBfaW5wdXRfc3RyaW5nOworKwkJZDJpX0tSQjVfQVBSRVE7CisrCQlFVlBfTURfQ1RYX2NvcHlfZXg7CisrCQlPQ1NQX3JlcXVlc3RfaXNfc2lnbmVkOworKwkJaTJkX09DU1BfUkVRSU5GTzsKKysJCUtSQjVfRU5DS0VZX2ZyZWU7CisrCQlPQ1NQX3Jlc3BfZ2V0MDsKKysJCUdFTkVSQUxfTkFNRV9pdDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2l0OworKwkJWDUwOV9TVE9SRV9zZXRfZmxhZ3M7CisrCQlFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGcDsKKysJCU9DU1BfcmVzcG9uc2Vfc3RhdHVzX3N0cjsKKysJCWQyaV9PQ1NQX1JFVk9LRURJTkZPOworKwkJT0NTUF9iYXNpY19hZGQxX2NlcnQ7CisrCQlFUlJfZ2V0X2ltcGxlbWVudGF0aW9uOworKwkJRVZQX0NpcGhlckZpbmFsX2V4OworKwkJT0NTUF9DRVJUU1RBVFVTX25ldzsKKysJCUNSWVBUT19jbGVhbnVwX2FsbF9leF9kYXRhOworKwkJT0NTUF9yZXNwX2ZpbmQ7CisrCQlCTl9ubm1vZDsKKysJCVg1MDlfQ1JMX3NvcnQ7CisrCQlYNTA5X1JFVk9LRURfc2V0X3Jldm9jYXRpb25EYXRlOworKwkJRU5HSU5FX3JlZ2lzdGVyX1JBTkQ7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfbmV3OworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3Jkc19HRnA7CisrCQlfb3NzbF9vbGRfZGVzX29wdGlvbnM7CisrCQlTWE5FVF9pdDsKKysJCVVJX2R1cF9pbnB1dF9ib29sZWFuOworKwkJUEtDUzEyX2FkZF9DU1BOYW1lX2FzYzsKKysJCUVDX1BPSU5UX2lzX2F0X2luZmluaXR5OworKwkJRU5HSU5FX2xvYWRfY3J5cHRvZGV2OworKwkJRFNPX2NvbnZlcnRfZmlsZW5hbWU7CisrCQlQT0xJQ1lRVUFMSU5GT19pdDsKKysJCUVOR0lORV9yZWdpc3Rlcl9jaXBoZXJzOworKwkJQk5fbW9kX2xzaGlmdF9xdWljazsKKysJCURTT19zZXRfZmlsZW5hbWU7CisrCQlBU04xX2l0ZW1fZnJlZTsKKysJCUtSQjVfVEtUQk9EWV9mcmVlOworKwkJQVVUSE9SSVRZX0tFWUlEX2l0OworKwkJS1JCNV9BUFJFUUJPRFlfbmV3OworKwkJWDUwOVYzX0VYVF9SRVFfYWRkX25jb25mOworKwkJRU5HSU5FX2N0cmxfY21kX3N0cmluZzsKKysJCWkyZF9PQ1NQX1JFU1BEQVRBOworKwkJRVZQX01EX0NUWF9pbml0OworKwkJRVhURU5ERURfS0VZX1VTQUdFX2ZyZWU7CisrCQlQS0NTN19BVFRSX1NJR05faXQ7CisrCQlVSV9hZGRfZXJyb3Jfc3RyaW5nOworKwkJS1JCNV9DSEVDS1NVTV9mcmVlOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHQ7CisrCQlFTkdJTkVfbG9hZF91YnNlYzsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfZGlnZXN0czsKKysJCVBLRVlfVVNBR0VfUEVSSU9EX2l0OworKwkJUEtDUzEyX3VucGFja19hdXRoc2FmZXM7CisrCQlBU04xX2l0ZW1fdW5wYWNrOworKwkJTkVUU0NBUEVfU1BLQUNfaXQ7CisrCQlYNTA5X1JFVk9LRURfaXQ7CisrCQlBU04xX1NUUklOR19lbmNvZGU7CisrCQlFVlBfYWVzXzEyOF9lY2I7CisrCQlLUkI1X0FVVEhFTlRfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXQ7CisrCQlPQ1NQX2NlcnRfc3RhdHVzX3N0cjsKKysJCWQyaV9PQ1NQX1JFUVVFU1Q7CisrCQlVSV9kdXBfaW5mb19zdHJpbmc7CisrCQlfb3NzbF9vbGRfZGVzX3h3aGl0ZV9pbjJvdXQ7CisrCQlQS0NTMTJfaXQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXQ7CisrCQlPQ1NQX0NFUlRTVEFUVVNfZnJlZTsKKysJCV9vc3NsX29sZF9kZXNfY3J5cHQ7CisrCQlBU04xX2l0ZW1faTJkOworKwkJRVZQX0RlY3J5cHRGaW5hbF9leDsKKysJCUVOR0lORV9sb2FkX29wZW5zc2w7CisrCQlFTkdJTkVfZ2V0X2NtZF9kZWZuczsKKysJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZm47CisrCQlFVlBfRW5jcnlwdEZpbmFsX2V4OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X2RpZ2VzdHM7CisrCQlYNTA5X2dldDBfcHVia2V5X2JpdHN0cjsKKysJCWFzbjFfZXhfaTJjOworKwkJRU5HSU5FX3JlZ2lzdGVyX1JTQTsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0RTQTsKKysJCV9vc3NsX29sZF9kZXNfa2V5X3NjaGVkOworKwkJWDUwOV9FWFRFTlNJT05faXQ7CisrCQlpMmRfS1JCNV9BVVRIRU5UOworKwkJU1hORVRJRF9pdDsKKysJCWQyaV9PQ1NQX1NJTkdMRVJFU1A7CisrCQlFRElQQVJUWU5BTUVfbmV3OworKwkJUEtDUzEyX2NlcnRiYWcyeDUwOTsKKysJCV9vc3NsX29sZF9kZXNfb2ZiNjRfZW5jcnlwdDsKKysJCWQyaV9FWFRFTkRFRF9LRVlfVVNBR0U7CisrCQlFUlJfcHJpbnRfZXJyb3JzX2NiOworKwkJRU5HSU5FX3NldF9jaXBoZXJzOworKwkJZDJpX0tSQjVfQVBSRVFCT0RZOworKwkJVUlfbWV0aG9kX2dldF9mbHVzaGVyOworKwkJWDUwOV9QVUJLRVlfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VuY19yZWFkOworKwkJUEtDUzdfRU5DUllQVF9pdDsKKysJCWkyZF9PQ1NQX1JFU1BPTlNFOworKwkJRUNfR1JPVVBfZ2V0X2NvZmFjdG9yOworKwkJUEtDUzEyX3VucGFja19wN2RhdGE7CisrCQlkMmlfS1JCNV9BVVRIREFUQTsKKysJCU9DU1BfY29weV9ub25jZTsKKysJCUtSQjVfQVVUSERBVEFfbmV3OworKwkJT0NTUF9SRVNQREFUQV9uZXc7CisrCQlFQ19HRnBfbW9udF9tZXRob2Q7CisrCQlPQ1NQX1JFVk9LRURJTkZPX2ZyZWU7CisrCQlVSV9nZXRfZXhfZGF0YTsKKysJCUtSQjVfQVBSRVFCT0RZX2ZyZWU7CisrCQlFQ19HUk9VUF9nZXQwX2dlbmVyYXRvcjsKKysJCVVJX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCVg1MDlWM19zZXRfbmNvbmY7CisrCQlQS0NTMTJfaXRlbV9pMmRfZW5jcnlwdDsKKysJCVg1MDlfYWRkMV9leHRfaTJkOworKwkJUEtDUzdfU0lHTkVSX0lORk9faXQ7CisrCQlLUkI1X1BSSU5DTkFNRV9uZXc7CisrCQlQS0NTMTJfU0FGRUJBR19pdDsKKysJCUVDX0dST1VQX2dldF9vcmRlcjsKKysJCWQyaV9PQ1NQX1JFU1BJRDsKKysJCU9DU1BfcmVxdWVzdF92ZXJpZnk7CisrCQlOQ09ORl9nZXRfbnVtYmVyX2U7CisrCQlfb3NzbF9vbGRfZGVzX2RlY3J5cHQzOworKwkJWDUwOV9zaWduYXR1cmVfcHJpbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZnJlZTsKKysJCUVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lczsKKysJCWkyZF9PQ1NQX09ORVJFUTsKKysJCU9DU1BfUkVRVUVTVF9hZGRfZXh0OworKwkJT0NTUF9SRVNQQllURVNfbmV3OworKwkJRVZQX01EX0NUWF9jcmVhdGU7CisrCQlPQ1NQX3Jlc3BfZmluZF9zdGF0dXM7CisrCQlYNTA5X0FMR09SX2l0OworKwkJQVNOMV9USU1FX2l0OworKwkJT0NTUF9yZXF1ZXN0X3NldDFfbmFtZTsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfY291bnQ7CisrCQlVSV9nZXQwX3Jlc3VsdDsKKysJCVBLQ1MxMl9BVVRIU0FGRVNfaXQ7CisrCQlFVlBfYWVzXzI1Nl9lY2I7CisrCQlQS0NTMTJfcGFja19hdXRoc2FmZXM7CisrCQlBU04xX0lBNVNUUklOR19pdDsKKysJCVVJX2dldF9pbnB1dF9mbGFnczsKKysJCUVDX0dST1VQX3NldF9nZW5lcmF0b3I7CisrCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b18ya2V5czsKKysJCU9DU1BfQ0VSVElEX2ZyZWU7CisrCQlYNTA5X0NFUlRfQVVYX2l0OworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19pdDsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19jYmNfZW5jcnlwdDsKKysJCVJBTkRfc2V0X3JhbmRfZW5naW5lOworKwkJRFNPX2dldF9sb2FkZWRfZmlsZW5hbWU7CisrCQlYNTA5X0FUVFJJQlVURV9pdDsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfTklEOworKwkJUEtDUzEyX2RlY3J5cHRfc2tleTsKKysJCUtSQjVfQVVUSEVOVF9pdDsKKysJCVVJX2R1cF9lcnJvcl9zdHJpbmc7CisrCQlSU0FQdWJsaWNLZXlfaXQ7CisrCQlpMmRfT0NTUF9SRVFVRVNUOworKwkJUEtDUzEyX3g1MDljcmwyY2VydGJhZzsKKysJCU9DU1BfU0VSVklDRUxPQ19pdDsKKysJCUFTTjFfaXRlbV9zaWduOworKwkJWDUwOV9DUkxfc2V0X2lzc3Vlcl9uYW1lOworKwkJT0JKX05BTUVfZG9fYWxsX3NvcnRlZDsKKysJCWkyZF9PQ1NQX0JBU0lDUkVTUDsKKysJCWkyZF9PQ1NQX1JFU1BCWVRFUzsKKysJCVBLQ1MxMl91bnBhY2tfcDdlbmNkYXRhOworKwkJSE1BQ19DVFhfaW5pdDsKKysJCUVOR0lORV9nZXRfZGlnZXN0OworKwkJT0NTUF9SRVNQT05TRV9wcmludDsKKysJCUtSQjVfVEtUQk9EWV9pdDsKKysJCUFDQ0VTU19ERVNDUklQVElPTl9pdDsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2l0OworKwkJUEJFMlBBUkFNX2l0OworKwkJUEtDUzEyX2NlcnRiYWcyeDUwOWNybDsKKysJCVBLQ1M3X1NJR05FRF9pdDsKKysJCUVOR0lORV9nZXRfY2lwaGVyOworKwkJaTJkX09DU1BfQ1JMSUQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfbmV3OworKwkJRU5HSU5FX2NtZF9pc19leGVjdXRhYmxlOworKwkJUlNBX3VwX3JlZjsKKysJCUFTTjFfR0VORVJBTFNUUklOR19pdDsKKysJCUVOR0lORV9yZWdpc3Rlcl9EU0E7CisrCQlYNTA5VjNfRVhUX2FkZF9uY29uZl9zazsKKysJCUVOR0lORV9zZXRfbG9hZF9wdWJrZXlfZnVuY3Rpb247CisrCQlQS0NTOF9kZWNyeXB0OworKwkJUEVNX2J5dGVzX3JlYWRfYmlvOworKwkJRElSRUNUT1JZU1RSSU5HX2l0OworKwkJZDJpX09DU1BfQ1JMSUQ7CisrCQlFQ19QT0lOVF9pc19vbl9jdXJ2ZTsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7CisrCQlkMmlfS1JCNV9DSEVDS1NVTTsKKysJCUFTTjFfaXRlbV9kdXA7CisrCQlYNTA5X2l0OworKwkJQk5fbW9kX2FkZDsKKysJCUtSQjVfQVVUSERBVEFfZnJlZTsKKysJCV9vc3NsX29sZF9kZXNfY2JjX2Nrc3VtOworKwkJQVNOMV9pdGVtX3ZlcmlmeTsKKysJCUNSWVBUT19zZXRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUVDX1BPSU5UX2dldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9nZXRfSnByb2pfY29vcmRzX0dGcDsKKysJCVpMT05HX2l0OworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jczsKKysJCUFTTjFfVElNRV9jaGVjazsKKysJCVVJX2dldDBfdXNlcl9kYXRhOworKwkJSE1BQ19DVFhfY2xlYW51cDsKKysJCURTQV91cF9yZWY7CisrCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCV9vc3NsX29kZXNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJQVNOMV9CTVBTVFJJTkdfaXQ7CisrCQlBU04xX3RhZzJiaXQ7CisrCQlVSV9tZXRob2Rfc2V0X2ZsdXNoZXI7CisrCQlYNTA5X29jc3BpZF9wcmludDsKKysJCUtSQjVfRU5DREFUQV9pdDsKKysJCUVOR0lORV9nZXRfbG9hZF9wdWJrZXlfZnVuY3Rpb247CisrCQlVSV9hZGRfdXNlcl9kYXRhOworKwkJT0NTUF9SRVFVRVNUX2RlbGV0ZV9leHQ7CisrCQlVSV9nZXRfbWV0aG9kOworKwkJT0NTUF9PTkVSRVFfZnJlZTsKKysJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX2l0OworKwkJWDUwOV9DUkxfc2V0X25leHRVcGRhdGU7CisrCQlPQ1NQX1JFUVVFU1RfaXQ7CisrCQlPQ1NQX0JBU0lDUkVTUF9pdDsKKysJCUFFU19lY2JfZW5jcnlwdDsKKysJCUJOX21vZF9zcXI7CisrCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2l0OworKwkJR0VORVJBTF9OQU1FU19pdDsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19pdDsKKysJCUFTTjFfRkJPT0xFQU5faXQ7CisrCQlVSV9zZXRfZXhfZGF0YTsKKysJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvX2tleTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUlNBOworKwkJZDJpX0tSQjVfUFJJTkNOQU1FOworKwkJT0NTUF9SRVNQQllURVNfaXQ7CisrCQlYNTA5X0NJTkZfaXQ7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9kaWdlc3RzOworKwkJZDJpX0VESVBBUlRZTkFNRTsKKysJCWQyaV9PQ1NQX1NFUlZJQ0VMT0M7CisrCQlFTkdJTkVfZ2V0X2RpZ2VzdHM7CisrCQlfb3NzbF9vbGRfZGVzX3NldF9vZGRfcGFyaXR5OworKwkJT0NTUF9SRVNQREFUQV9mcmVlOworKwkJZDJpX0tSQjVfVElDS0VUOworKwkJT1RIRVJOQU1FX2l0OworKwkJRVZQX01EX0NUWF9jbGVhbnVwOworKwkJZDJpX0FTTjFfR0VORVJBTFNUUklORzsKKysJCVg1MDlfQ1JMX3NldF92ZXJzaW9uOworKwkJQk5fbW9kX3N1YjsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X05JRDsKKysJCUVOR0lORV9nZXRfZXhfbmV3X2luZGV4OworKwkJT0NTUF9SRVFVRVNUX2ZyZWU7CisrCQlPQ1NQX1JFUVVFU1RfYWRkMV9leHRfaTJkOworKwkJWDUwOV9WQUxfaXQ7CisrCQlFQ19QT0lOVHNfbWFrZV9hZmZpbmU7CisrCQlFQ19QT0lOVF9tdWw7CisrCQlYNTA5VjNfRVhUX2FkZF9uY29uZjsKKysJCVg1MDlfVFJVU1Rfc2V0OworKwkJWDUwOV9DUkxfYWRkMV9leHRfaTJkOworKwkJX29zc2xfb2xkX2Rlc19mY3J5cHQ7CisrCQlESVNQTEFZVEVYVF9pdDsKKysJCVg1MDlfQ1JMX3NldF9sYXN0VXBkYXRlOworKwkJT0NTUF9CQVNJQ1JFU1BfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2FkZDFfZXh0X2kyZDsKKysJCWQyaV9LUkI1X0FVVEhFTlRCT0RZOworKwkJQ1JZUFRPX3NldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOworKwkJQ1JZUFRPX3NldF9leF9kYXRhX2ltcGw7CisrCQlLUkI1X0VOQ0RBVEFfbmV3OworKwkJRFNPX3VwX3JlZjsKKysJCU9DU1BfY3JsX3JlYXNvbl9zdHI7CisrCQlVSV9nZXQwX3Jlc3VsdF9zdHJpbmc7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfbmV3OworKwkJWDUwOV9TSUdfaXQ7CisrCQlFUlJfc2V0X2ltcGxlbWVudGF0aW9uOworKwkJRVJSX2xvYWRfRUNfc3RyaW5nczsKKysJCVVJX2dldDBfYWN0aW9uX3N0cmluZzsKKysJCU9DU1BfT05FUkVRX2dldF9leHQ7CisrCQlFQ19QT0lOVF9tZXRob2Rfb2Y7CisrCQlpMmRfS1JCNV9BUFJFUUJPRFk7CisrCQlfb3NzbF9vbGRfZGVzX2VjYjNfZW5jcnlwdDsKKysJCUNSWVBUT19nZXRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUVOR0lORV9nZXRfZXhfZGF0YTsKKysJCVVJX2Rlc3Ryb3lfbWV0aG9kOworKwkJQVNOMV9pdGVtX2kyZF9iaW87CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X09CSjsKKysJCUFTTjFfcHJpbWl0aXZlX25ldzsKKysJCUFTTjFfUFJJTlRBQkxFX2l0OworKwkJRVZQX2Flc18xOTJfZWNiOworKwkJT0NTUF9TSUdOQVRVUkVfbmV3OworKwkJTE9OR19pdDsKKysJCUFTTjFfVklTSUJMRVNUUklOR19pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9hZGQxX2V4dF9pMmQ7CisrCQlkMmlfT0NTUF9DRVJUSUQ7CisrCQlBU04xX2l0ZW1fZDJpX2ZwOworKwkJQ1JMX0RJU1RfUE9JTlRTX2l0OworKwkJR0VORVJBTF9OQU1FX3ByaW50OworKwkJT0NTUF9TSU5HTEVSRVNQX2RlbGV0ZV9leHQ7CisrCQlQS0NTMTJfU0FGRUJBR1NfaXQ7CisrCQlkMmlfT0NTUF9TSUdOQVRVUkU7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMV9ub25jZTsKKysJCUVOR0lORV9zZXRfY21kX2RlZm5zOworKwkJT0NTUF9TRVJWSUNFTE9DX2ZyZWU7CisrCQlFQ19HUk9VUF9mcmVlOworKwkJQVNOMV9CSVRfU1RSSU5HX2l0OworKwkJWDUwOV9SRVFfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2NiY19lbmNyeXB0OworKwkJRVJSX3VubG9hZF9zdHJpbmdzOworKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9pdDsKKysJCUVESVBBUlRZTkFNRV9mcmVlOworKwkJT0NTUF9SRVFJTkZPX2ZyZWU7CisrCQlFQ19HUk9VUF9uZXdfY3VydmVfR0ZwOworKwkJT0NTUF9SRVFVRVNUX2dldDFfZXh0X2QyaTsKKysJCVBLQ1MxMl9pdGVtX3BhY2tfc2FmZWJhZzsKKysJCWFzbjFfZXhfYzJpOworKwkJRU5HSU5FX3JlZ2lzdGVyX2RpZ2VzdHM7CisrCQlpMmRfT0NTUF9SRVZPS0VESU5GTzsKKysJCWFzbjFfZW5jX3Jlc3RvcmU7CisrCQlVSV9mcmVlOworKwkJVUlfbmV3X21ldGhvZDsKKysJCUVWUF9FbmNyeXB0SW5pdF9leDsKKysJCVg1MDlfcHVia2V5X2RpZ2VzdDsKKysJCUVDX1BPSU5UX2ludmVydDsKKysJCU9DU1BfYmFzaWNfc2lnbjsKKysJCWkyZF9PQ1NQX1JFU1BJRDsKKysJCU9DU1BfY2hlY2tfbm9uY2U7CisrCQlFTkdJTkVfY3RybF9jbWQ7CisrCQlkMmlfS1JCNV9FTkNLRVk7CisrCQlPQ1NQX3BhcnNlX3VybDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0OworKwkJT0NTUF9DUkxJRF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0MV9leHRfZDJpOworKwkJUlNBUHJpdmF0ZUtleV9pdDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfREg7CisrCQlpMmRfRURJUEFSVFlOQU1FOworKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRnA7CisrCQlPQ1NQX0NSTElEX25ldzsKKysJCUVOR0lORV9nZXRfZmxhZ3M7CisrCQlPQ1NQX09ORVJFUV9pdDsKKysJCVVJX3Byb2Nlc3M7CisrCQlBU04xX0lOVEVHRVJfaXQ7CisrCQlFVlBfQ2lwaGVySW5pdF9leDsKKysJCVVJX2dldF9zdHJpbmdfdHlwZTsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0RIOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9EU0E7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJYm5fZHVwX2V4cGFuZDsKKysJCU9DU1BfY2VydF9pZF9uZXc7CisrCQlCQVNJQ19DT05TVFJBSU5UU19pdDsKKysJCUJOX21vZF9hZGRfcXVpY2s7CisrCQlFQ19QT0lOVF9uZXc7CisrCQlFVlBfTURfQ1RYX2Rlc3Ryb3k7CisrCQlPQ1NQX1JFU1BCWVRFU19mcmVlOworKwkJRVZQX2Flc18xMjhfY2JjOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldDFfZXh0X2QyaTsKKysJCUVDX1BPSU5UX2ZyZWU7CisrCQlESF91cF9yZWY7CisrCQlYNTA5X05BTUVfRU5UUllfaXQ7CisrCQlVSV9nZXRfZXhfbmV3X2luZGV4OworKwkJQk5fbW9kX3N1Yl9xdWljazsKKysJCU9DU1BfT05FUkVRX2FkZF9leHQ7CisrCQlPQ1NQX3JlcXVlc3Rfc2lnbjsKKysJCUVWUF9EaWdlc3RGaW5hbF9leDsKKysJCUVOR0lORV9zZXRfZGlnZXN0czsKKysJCU9DU1BfaWRfaXNzdWVyX2NtcDsKKysJCU9CSl9OQU1FX2RvX2FsbDsKKysJCUVDX1BPSU5Uc19tdWw7CisrCQlFTkdJTkVfcmVnaXN0ZXJfY29tcGxldGU7CisrCQlYNTA5VjNfRVhUX25jb25mX25pZDsKKysJCUFTTjFfU0VRVUVOQ0VfaXQ7CisrCQlVSV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlSQU5EX3F1ZXJ5X2VnZF9ieXRlczsKKysJCVVJX21ldGhvZF9nZXRfd3JpdGVyOworKwkJVUlfT3BlblNTTDsKKysJCVBFTV9kZWZfY2FsbGJhY2s7CisrCQlFTkdJTkVfY2xlYW51cDsKKysJCURJU1RfUE9JTlRfaXQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfaXQ7CisrCQlkMmlfS1JCNV9US1RCT0RZOworKwkJRUNfUE9JTlRfY21wOworKwkJT0NTUF9SRVZPS0VESU5GT19uZXc7CisrCQlpMmRfT0NTUF9DRVJUU1RBVFVTOworKwkJT0NTUF9iYXNpY19hZGQxX25vbmNlOworKwkJQVNOMV9pdGVtX2V4X2QyaTsKKysJCUJOX21vZF9sc2hpZnQxX3F1aWNrOworKwkJVUlfc2V0X21ldGhvZDsKKysJCU9DU1BfaWRfZ2V0MF9pbmZvOworKwkJQk5fbW9kX3NxcnQ7CisrCQlFQ19HUk9VUF9jb3B5OworKwkJS1JCNV9FTkNEQVRBX2ZyZWU7CisrCQlfb3NzbF9vbGRfZGVzX2NmYl9lbmNyeXB0OworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfT0JKOworKwkJT0NTUF9jZXJ0X3RvX2lkOworKwkJT0NTUF9SRVNQSURfbmV3OworKwkJT0NTUF9SRVNQREFUQV9pdDsKKysJCWQyaV9PQ1NQX1JFU1BEQVRBOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jb21wbGV0ZTsKKysJCU9DU1BfY2hlY2tfdmFsaWRpdHk7CisrCQlQS0NTMTJfQkFHU19pdDsKKysJCU9DU1BfdXJsX3N2Y2xvY19uZXc7CisrCQlBU04xX3RlbXBsYXRlX2ZyZWU7CisrCQlPQ1NQX1NJTkdMRVJFU1BfYWRkX2V4dDsKKysJCUtSQjVfQVVUSEVOVEJPRFlfaXQ7CisrCQlYNTA5X3N1cHBvcnRlZF9leHRlbnNpb247CisrCQlpMmRfS1JCNV9BVVRIREFUQTsKKysJCVVJX21ldGhvZF9nZXRfb3BlbmVyOworKwkJRU5HSU5FX3NldF9leF9kYXRhOworKwkJT0NTUF9SRVFVRVNUX3ByaW50OworKwkJQ0JJR05VTV9pdDsKKysJCUtSQjVfVElDS0VUX25ldzsKKysJCUtSQjVfQVBSRVFfbmV3OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGcDsKKysJCUtSQjVfRU5DS0VZX25ldzsKKysJCUFTTjFfdGVtcGxhdGVfZDJpOworKwkJX29zc2xfb2xkX2Rlc19xdWFkX2Nrc3VtOworKwkJT0NTUF9zaW5nbGVfZ2V0MF9zdGF0dXM7CisrCQlCTl9zd2FwOworKwkJUE9MSUNZSU5GT19pdDsKKysJCUVOR0lORV9zZXRfZGVzdHJveV9mdW5jdGlvbjsKKysJCWFzbjFfZW5jX2ZyZWU7CisrCQlPQ1NQX1JFU1BJRF9pdDsKKysJCUVDX0dST1VQX25ldzsKKysJCUVWUF9hZXNfMjU2X2NiYzsKKysJCWkyZF9LUkI1X1BSSU5DTkFNRTsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDI7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQzOworKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19pdDsKKysJCU9DU1BfUkVRSU5GT19pdDsKKysJCVBCRVBBUkFNX2l0OworKwkJS1JCNV9BVVRIRU5UQk9EWV9uZXc7CisrCQlYNTA5X0NSTF9hZGQwX3Jldm9rZWQ7CisrCQlFRElQQVJUWU5BTUVfaXQ7CisrCQlORVRTQ0FQRV9TUEtJX2l0OworKwkJVUlfZ2V0MF90ZXN0X3N0cmluZzsKKysJCUVOR0lORV9nZXRfY2lwaGVyX2VuZ2luZTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY2lwaGVyczsKKysJCUVDX1BPSU5UX2NvcHk7CisrCQlCTl9rcm9uZWNrZXI7CisrCQlfb3NzbF9vbGRfZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKKysJCV9vc3NsX29kZXNfZWRlM19vZmI2NF9lbmNyeXB0OworKwkJVUlfbWV0aG9kX2dldF9yZWFkZXI7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2NvdW50OworKwkJQVNOMV9FTlVNRVJBVEVEX2l0OworKwkJVUlfc2V0X3Jlc3VsdDsKKysJCWkyZF9LUkI1X1RJQ0tFVDsKKysJCVg1MDlfcHJpbnRfZXhfZnA7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZzsKKysJCWQyaV9PQ1NQX1JFU1BPTlNFOworKwkJQVNOMV9VVENUSU1FX2l0OworKwkJX29zc2xfb2xkX2Rlc19lbmNfd3JpdGU7CisrCQlPQ1NQX1JFU1BPTlNFX25ldzsKKysJCUFFU19zZXRfZW5jcnlwdF9rZXk7CisrCQlPQ1NQX3Jlc3BfY291bnQ7CisrCQlLUkI1X0NIRUNLU1VNX25ldzsKKysJCUVOR0lORV9sb2FkX2Nzd2lmdDsKKysJCU9DU1Bfb25lcmVxX2dldDBfaWQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfY2lwaGVyczsKKysJCU5PVElDRVJFRl9pdDsKKysJCVg1MDlWM19FWFRfQ1JMX2FkZF9uY29uZjsKKysJCU9DU1BfUkVWT0tFRElORk9faXQ7CisrCQlBRVNfZW5jcnlwdDsKKysJCU9DU1BfUkVRVUVTVF9uZXc7CisrCQlBU04xX0FOWV9pdDsKKysJCUNSWVBUT19leF9kYXRhX25ld19jbGFzczsKKysJCV9vc3NsX29sZF9kZXNfbmNiY19lbmNyeXB0OworKwkJaTJkX0tSQjVfVEtUQk9EWTsKKysJCUVDX1BPSU5UX2NsZWFyX2ZyZWU7CisrCQlBRVNfZGVjcnlwdDsKKysJCWFzbjFfZW5jX2luaXQ7CisrCQlVSV9nZXRfcmVzdWx0X21heHNpemU7CisrCQlPQ1NQX0NFUlRJRF9uZXc7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9SQU5EOworKwkJVUlfbWV0aG9kX2dldF9jbG9zZXI7CisrCQlkMmlfS1JCNV9FTkNEQVRBOworKwkJT0NTUF9yZXF1ZXN0X29uZXJlcV9jb3VudDsKKysJCU9DU1BfYmFzaWNfdmVyaWZ5OworKwkJS1JCNV9BVVRIRU5UQk9EWV9mcmVlOworKwkJQVNOMV9pdGVtX2QyaTsKKysJCUFTTjFfcHJpbWl0aXZlX2ZyZWU7CisrCQlpMmRfRVhURU5ERURfS0VZX1VTQUdFOworKwkJaTJkX09DU1BfU0lHTkFUVVJFOworKwkJYXNuMV9lbmNfc2F2ZTsKKysJCUVOR0lORV9sb2FkX251cm9uOworKwkJX29zc2xfb2xkX2Rlc19wY2JjX2VuY3J5cHQ7CisrCQlQS0NTMTJfTUFDX0RBVEFfaXQ7CisrCQlPQ1NQX2FjY2VwdF9yZXNwb25zZXNfbmV3OworKwkJYXNuMV9kb19sb2NrOworKwkJUEtDUzdfQVRUUl9WRVJJRllfaXQ7CisrCQlLUkI1X0FQUkVRQk9EWV9pdDsKKysJCWkyZF9PQ1NQX1NJTkdMRVJFU1A7CisrCQlBU04xX2l0ZW1fZXhfbmV3OworKwkJVUlfYWRkX3ZlcmlmeV9zdHJpbmc7CisrCQlfb3NzbF9vbGRfZGVzX3NldF9rZXk7CisrCQlLUkI1X1BSSU5DTkFNRV9pdDsKKysJCUVWUF9EZWNyeXB0SW5pdF9leDsKKysJCWkyZF9PQ1NQX0NFUlRJRDsKKysJCUFTTjFfaXRlbV9kMmlfYmlvOworKwkJRUNfUE9JTlRfZGJsOworKwkJYXNuMV9nZXRfY2hvaWNlX3NlbGVjdG9yOworKwkJaTJkX0tSQjVfQ0hFQ0tTVU07CisrCQlFTkdJTkVfc2V0X3RhYmxlX2ZsYWdzOworKwkJQUVTX29wdGlvbnM7CisrCQlFTkdJTkVfbG9hZF9jaGlsOworKwkJT0NTUF9pZF9jbXA7CisrCQlPQ1NQX0JBU0lDUkVTUF9uZXc7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9OSUQ7CisrCQlLUkI1X0FQUkVRX2l0OworKwkJRU5HSU5FX2dldF9kZXN0cm95X2Z1bmN0aW9uOworKwkJQ09ORl9zZXRfbmNvbmY7CisrCQlBU04xX1BSSU5UQUJMRV9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9OSUQ7CisrCQlESVNUX1BPSU5UX05BTUVfaXQ7CisrCQlYNTA5VjNfZXh0ZW5zaW9uc19wcmludDsKKysJCV9vc3NsX29sZF9kZXNfY2ZiNjRfZW5jcnlwdDsKKysJCVg1MDlfUkVWT0tFRF9hZGQxX2V4dF9pMmQ7CisrCQlfb3NzbF9vbGRfZGVzX29mYl9lbmNyeXB0OworKwkJS1JCNV9US1RCT0RZX25ldzsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2l0OworKwkJRVJSX2xvYWRfVUlfc3RyaW5nczsKKysJCWkyZF9LUkI1X0VOQ0tFWTsKKysJCUFTTjFfdGVtcGxhdGVfbmV3OworKwkJT0NTUF9TSUdOQVRVUkVfZnJlZTsKKysJCUFTTjFfaXRlbV9pMmRfZnA7CisrCQlLUkI1X1BSSU5DTkFNRV9mcmVlOworKwkJUEtDUzdfUkVDSVBfSU5GT19pdDsKKysJCUVYVEVOREVEX0tFWV9VU0FHRV9pdDsKKysJCUVDX0dGcF9zaW1wbGVfbWV0aG9kOworKwkJRUNfR1JPVVBfcHJlY29tcHV0ZV9tdWx0OworKwkJT0NTUF9yZXF1ZXN0X29uZXJlcV9nZXQwOworKwkJVUlfbWV0aG9kX3NldF93cml0ZXI7CisrCQlLUkI1X0FVVEhFTlRfbmV3OworKwkJWDUwOV9DUkxfSU5GT19pdDsKKysJCURTT19zZXRfbmFtZV9jb252ZXJ0ZXI7CisrCQlBRVNfc2V0X2RlY3J5cHRfa2V5OworKwkJUEtDUzdfRElHRVNUX2l0OworKwkJUEtDUzEyX3g1MDkyY2VydGJhZzsKKysJCUVWUF9EaWdlc3RJbml0X2V4OworKwkJaTJhX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCU9DU1BfUkVTUE9OU0VfaXQ7CisrCQlQS0NTN19FTkNfQ09OVEVOVF9pdDsKKysJCU9DU1BfcmVxdWVzdF9hZGQwX2lkOworKwkJRUNfUE9JTlRfbWFrZV9hZmZpbmU7CisrCQlEU09fZ2V0X2ZpbGVuYW1lOworKwkJT0NTUF9DRVJUU1RBVFVTX2l0OworKwkJT0NTUF9yZXF1ZXN0X2FkZDFfY2VydDsKKysJCVVJX2dldDBfb3V0cHV0X3N0cmluZzsKKysJCVVJX2R1cF92ZXJpZnlfc3RyaW5nOworKwkJQk5fbW9kX2xzaGlmdDsKKysJCUtSQjVfQVVUSERBVEFfaXQ7CisrCQlhc24xX3NldF9jaG9pY2Vfc2VsZWN0b3I7CisrCQlPQ1NQX2Jhc2ljX2FkZDFfc3RhdHVzOworKwkJT0NTUF9SRVNQSURfZnJlZTsKKysJCWFzbjFfZ2V0X2ZpZWxkX3B0cjsKKysJCVVJX2FkZF9pbnB1dF9zdHJpbmc7CisrCQlPQ1NQX0NSTElEX2l0OworKwkJaTJkX0tSQjVfQVVUSEVOVEJPRFk7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9jb3VudDsKKysJCUVOR0lORV9sb2FkX2F0YWxsYTsKKysJCVg1MDlfTkFNRV9pdDsKKysJCVVTRVJOT1RJQ0VfaXQ7CisrCQlPQ1NQX1JFUUlORk9fbmV3OworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dDsKKysJCUNSWVBUT19nZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKKysJCUNSWVBUT19nZXRfZXhfZGF0YV9pbXBsOworKwkJQVNOMV9pdGVtX3BhY2s7CisrCQlpMmRfS1JCNV9FTkNEQVRBOworKwkJWDUwOV9QVVJQT1NFX3NldDsKKysJCVg1MDlfUkVRX0lORk9faXQ7CisrCQlVSV9tZXRob2Rfc2V0X29wZW5lcjsKKysJCUFTTjFfaXRlbV9leF9mcmVlOworKwkJQVNOMV9CT09MRUFOX2l0OworKwkJRU5HSU5FX2dldF90YWJsZV9mbGFnczsKKysJCVVJX2NyZWF0ZV9tZXRob2Q7CisrCQlPQ1NQX09ORVJFUV9hZGQxX2V4dF9pMmQ7CisrCQlfc2hhZG93X0RFU19jaGVja19rZXk7CisrCQlkMmlfT0NTUF9SRVFJTkZPOworKwkJVUlfYWRkX2luZm9fc3RyaW5nOworKwkJVUlfZ2V0X3Jlc3VsdF9taW5zaXplOworKwkJQVNOMV9OVUxMX2l0OworKwkJQk5fbW9kX2xzaGlmdDE7CisrCQlkMmlfT0NTUF9PTkVSRVE7CisrCQlPQ1NQX09ORVJFUV9uZXc7CisrCQlLUkI1X1RJQ0tFVF9pdDsKKysJCUVWUF9hZXNfMTkyX2NiYzsKKysJCUtSQjVfVElDS0VUX2ZyZWU7CisrCQlVSV9uZXc7CisrCQlPQ1NQX3Jlc3BvbnNlX2NyZWF0ZTsKKysJCV9vc3NsX29sZF9kZXNfeGNiY19lbmNyeXB0OworKwkJUEtDUzdfaXQ7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXQ7CisrCQlFTkdJTkVfc2V0X2ZsYWdzOworKwkJX29zc2xfb2xkX2Rlc19lY2JfZW5jcnlwdDsKKysJCU9DU1BfcmVzcG9uc2VfZ2V0MV9iYXNpYzsKKysJCUVWUF9EaWdlc3Q7CisrCQlPQ1NQX09ORVJFUV9kZWxldGVfZXh0OworKwkJQVNOMV9UQk9PTEVBTl9pdDsKKysJCUFTTjFfaXRlbV9uZXc7CisrCQlBU04xX1RJTUVfdG9fZ2VuZXJhbGl6ZWR0aW1lOworKwkJQklHTlVNX2l0OworKwkJQUVTX2NiY19lbmNyeXB0OworKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mbjsKKysJCU9DU1BfUkVTUE9OU0VfZnJlZTsKKysJCVVJX21ldGhvZF9zZXRfcmVhZGVyOworKwkJaTJkX0FTTjFfVDYxU1RSSU5HOworKwkJRUNfUE9JTlRfc2V0X3RvX2luZmluaXR5OworKwkJRVJSX2xvYWRfT0NTUF9zdHJpbmdzOworKwkJRUNfUE9JTlRfcG9pbnQyb2N0OworKwkJS1JCNV9BUFJFUV9mcmVlOworKwkJQVNOMV9PQkpFQ1RfaXQ7CisrCQlPQ1NQX2NybElEX25ldzsKKysJCU9DU1BfY3JsSUQyX25ldzsKKysJCUNPTkZfbW9kdWxlc19sb2FkX2ZpbGU7CisrCQlDT05GX2ltb2R1bGVfc2V0X3Vzcl9kYXRhOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X3N0cmluZzsKKysJCUNPTkZfbW9kdWxlX2dldF91c3JfZGF0YTsKKysJCUFTTjFfYWRkX29pZF9tb2R1bGU7CisrCQlDT05GX21vZHVsZXNfZmluaXNoOworKwkJT1BFTlNTTF9jb25maWc7CisrCQlDT05GX21vZHVsZXNfdW5sb2FkOworKwkJQ09ORl9pbW9kdWxlX2dldF92YWx1ZTsKKysJCUNPTkZfbW9kdWxlX3NldF91c3JfZGF0YTsKKysJCUNPTkZfcGFyc2VfbGlzdDsKKysJCUNPTkZfbW9kdWxlX2FkZDsKKysJCUNPTkZfZ2V0MV9kZWZhdWx0X2NvbmZpZ19maWxlOworKwkJQ09ORl9pbW9kdWxlX2dldF9mbGFnczsKKysJCUNPTkZfaW1vZHVsZV9nZXRfbW9kdWxlOworKwkJQ09ORl9tb2R1bGVzX2xvYWQ7CisrCQlDT05GX2ltb2R1bGVfZ2V0X25hbWU7CisrCQlFUlJfcGVla190b3BfZXJyb3I7CisrCQlDT05GX2ltb2R1bGVfZ2V0X3Vzcl9kYXRhOworKwkJQ09ORl9pbW9kdWxlX3NldF9mbGFnczsKKysJCUVOR0lORV9hZGRfY29uZl9tb2R1bGU7CisrCQlFUlJfcGVla19sYXN0X2Vycm9yX2xpbmU7CisrCQlFUlJfcGVla19sYXN0X2Vycm9yX2xpbmVfZGF0YTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3I7CisrCQlERVNfcmVhZF8ycGFzc3dvcmRzOworKwkJREVTX3JlYWRfcGFzc3dvcmQ7CisrCQlVSV9VVElMX3JlYWRfcHc7CisrCQlVSV9VVElMX3JlYWRfcHdfc3RyaW5nOworKwkJRU5HSU5FX2xvYWRfYWVwOworKwkJRU5HSU5FX2xvYWRfc3VyZXdhcmU7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19ub2NvbmY7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19ub2NvbmY7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19jb25mOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fY29uZjsKKysJCU9QRU5TU0xfbG9hZF9idWlsdGluX21vZHVsZXM7CisrCQlBRVNfb2ZiMTI4X2VuY3J5cHQ7CisrCQlBRVNfY3RyMTI4X2VuY3J5cHQ7CisrCQlBRVNfY2ZiMTI4X2VuY3J5cHQ7CisrCQlFTkdJTkVfbG9hZF80NzU4Y2NhOworKwkJX29zc2xfMDk2X2Rlc19yYW5kb21fc2VlZDsKKysJCUVWUF9hZXNfMjU2X29mYjsKKysJCUVWUF9hZXNfMTkyX29mYjsKKysJCUVWUF9hZXNfMTI4X2NmYjEyODsKKysJCUVWUF9hZXNfMjU2X2NmYjEyODsKKysJCUVWUF9hZXNfMTI4X29mYjsKKysJCUVWUF9hZXNfMTkyX2NmYjEyODsKKysJCUNPTkZfbW9kdWxlc19mcmVlOworKwkJTkNPTkZfZGVmYXVsdDsKKysJCU9QRU5TU0xfbm9fY29uZmlnOworKwkJTkNPTkZfV0lOMzI7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR19uZXc7CisrCQlFVlBfZGVzX2VkZV9lY2I7CisrCQlpMmRfQVNOMV9VTklWRVJTQUxTVFJJTkc7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR19mcmVlOworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfaXQ7CisrCQlkMmlfQVNOMV9VTklWRVJTQUxTVFJJTkc7CisrCQlFVlBfZGVzX2VkZTNfZWNiOworKwkJWDUwOV9SRVFfcHJpbnRfZXg7CisrCQlFTkdJTkVfdXBfcmVmOworKwkJQlVGX01FTV9ncm93X2NsZWFuOworKwkJQ1JZUFRPX3JlYWxsb2NfY2xlYW47CisrCQlCVUZfc3RybGNhdDsKKysJCUJJT19pbmRlbnQ7CisrCQlCVUZfc3RybGNweTsKKysJCU9wZW5TU0xEaWU7CisrCQlPUEVOU1NMX2NsZWFuc2U7CisrCQlFTkdJTkVfc2V0dXBfYnNkX2NyeXB0b2RldjsKKysJCUVSUl9yZWxlYXNlX2Vycl9zdGF0ZV90YWJsZTsKKysJCUVWUF9hZXNfMTI4X2NmYjg7CisrCQlGSVBTX2NvcnJ1cHRfcnNhOworKwkJRklQU19zZWxmdGVzdF9kZXM7CisrCQlFVlBfYWVzXzEyOF9jZmIxOworKwkJRVZQX2Flc18xOTJfY2ZiODsKKysJCUZJUFNfbW9kZV9zZXQ7CisrCQlGSVBTX3NlbGZ0ZXN0X2RzYTsKKysJCUVWUF9hZXNfMjU2X2NmYjg7CisrCQlGSVBTX2FsbG93X21kNTsKKysJCURFU19lZGUzX2NmYl9lbmNyeXB0OworKwkJRVZQX2Rlc19lZGUzX2NmYjg7CisrCQlGSVBTX3JhbmRfc2VlZGVkOworKwkJQUVTX2NmYnJfZW5jcnlwdF9ibG9jazsKKysJCUFFU19jZmI4X2VuY3J5cHQ7CisrCQlGSVBTX3JhbmRfc2VlZDsKKysJCUZJUFNfY29ycnVwdF9kZXM7CisrCQlFVlBfYWVzXzE5Ml9jZmIxOworKwkJRklQU19zZWxmdGVzdF9hZXM7CisrCQlGSVBTX3NldF9wcm5nX2tleTsKKysJCUVWUF9kZXNfY2ZiODsKKysJCUZJUFNfY29ycnVwdF9kc2E7CisrCQlGSVBTX3Rlc3RfbW9kZTsKKysJCUZJUFNfcmFuZF9tZXRob2Q7CisrCQlFVlBfYWVzXzI1Nl9jZmIxOworKwkJRVJSX2xvYWRfRklQU19zdHJpbmdzOworKwkJRklQU19jb3JydXB0X2FlczsKKysJCUZJUFNfc2VsZnRlc3Rfc2hhMTsKKysJCUZJUFNfc2VsZnRlc3RfcnNhOworKwkJRklQU19jb3JydXB0X3NoYTE7CisrCQlFVlBfZGVzX2NmYjE7CisrCQlGSVBTX2RzYV9jaGVjazsKKysJCUFFU19jZmIxX2VuY3J5cHQ7CisrCQlFVlBfZGVzX2VkZTNfY2ZiMTsKKysJCUZJUFNfcmFuZF9jaGVjazsKKysJCUZJUFNfbWQ1X2FsbG93ZWQ7CisrCQlGSVBTX21vZGU7CisrCQlGSVBTX3NlbGZ0ZXN0X2ZhaWxlZDsKKysJCXNrX2lzX3NvcnRlZDsKKysJCVg1MDlfY2hlY2tfY2E7CisrCQlITUFDX0NUWF9zZXRfZmxhZ3M7CisrCQlkMmlfUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTjsKKysJCVBST1hZX1BPTElDWV9pdDsKKysJCWkyZF9QUk9YWV9QT0xJQ1k7CisrCQlpMmRfUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTjsKKysJCWQyaV9QUk9YWV9QT0xJQ1k7CisrCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX25ldzsKKysJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fZnJlZTsKKysJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05faXQ7CisrCQlQUk9YWV9QT0xJQ1lfZnJlZTsKKysJCVBST1hZX1BPTElDWV9uZXc7CisrCQlCTl9NT05UX0NUWF9zZXRfbG9ja2VkOworKwkJRklQU19zZWxmdGVzdF9ybmc7CisrCQlFVlBfc2hhMzg0OworKwkJRVZQX3NoYTUxMjsKKysJCUVWUF9zaGEyMjQ7CisrCQlFVlBfc2hhMjU2OworKwkJRklQU19zZWxmdGVzdF9obWFjOworKwkJRklQU19jb3JydXB0X3JuZzsKKysJCUJOX21vZF9leHBfbW9udF9jb25zdHRpbWU7CisrCQlSU0FfWDkzMV9oYXNoX2lkOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfWDkzMTsKKysJCVJTQV92ZXJpZnlfUEtDUzFfUFNTOworKwkJUlNBX3BhZGRpbmdfYWRkX1g5MzE7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTOworKwkJUEtDUzFfTUdGMTsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfWHBxOworKwkJUlNBX1g5MzFfZ2VuZXJhdGVfa2V5OworKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWU7CisrCQlCTl9YOTMxX2dlbmVyYXRlX3ByaW1lOworKwkJUlNBX1g5MzFfZGVyaXZlOworKwkJQklPX25ld19kZ3JhbTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8zODQ7CisrCQlFUlJfc2V0X21hcms7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXQwX2NybHM7CisrCQlFTkdJTkVfc2V0X1NUT1JFOworKwkJRU5HSU5FX3JlZ2lzdGVyX0VDRFNBOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9zdGFydF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKKysJCUJOX0JMSU5ESU5HX2ludmVydF9leDsKKysJCU5BTUVfQ09OU1RSQUlOVFNfZnJlZTsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfbnVtYmVyOworKwkJQk5fQkxJTkRJTkdfZ2V0X3RocmVhZF9pZDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldDBfcGFyYW07CisrCQlQT0xJQ1lfTUFQUElOR19pdDsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX3N0YXJ0OworKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2ZyZWU7CisrCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfTklEOworKwkJQk5fbmlzdF9tb2RfMTkyOworKwkJRUNfR1JPVVBfZ2V0X3RyaW5vbWlhbF9iYXNpczsKKysJCVNUT1JFX3NldF9tZXRob2Q7CisrCQlHRU5FUkFMX1NVQlRSRUVfZnJlZTsKKysJCU5BTUVfQ09OU1RSQUlOVFNfaXQ7CisrCQlFQ0RIX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCVBLQ1MxMl9hZGRfc2FmZTsKKysJCUVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZTsKKysJCVNUT1JFX21ldGhfZ2V0X3VwZGF0ZV9zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfdXBkYXRlX3N0b3JlX2Z1bmN0aW9uOworKwkJRU5HSU5FX3JlZ2lzdGVyX0VDREg7CisrCQlTSEE1MTJfVXBkYXRlOworKwkJaTJkX0VDUHJpdmF0ZUtleTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8xOTI7CisrCQlTVE9SRV9tb2RpZnlfY2VydGlmaWNhdGU7CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOworKwkJQk5fR0YybV9tb2RfZXhwX2FycjsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfbnVtYmVyOworKwkJWDUwOV9rZXlpZF9nZXQwOworKwkJRU5HSU5FX2xvYWRfZ21wOworKwkJcGl0ZW1fbmV3OworKwkJQk5fR0YybV9tb2RfbXVsX2FycjsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmRwOworKwkJbzJpX0VDUHVibGljS2V5OworKwkJRUNfS0VZX2NvcHk7CisrCQlCSU9fZHVtcF9mcDsKKysJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9wYXJlbnQ7CisrCQlFQ19HUk9VUF9jaGVja19kaXNjcmltaW5hbnQ7CisrCQlpMm9fRUNQdWJsaWNLZXk7CisrCQlFQ19LRVlfcHJlY29tcHV0ZV9tdWx0OworKwkJYTJpX0lQQUREUkVTUzsKKysJCVNUT1JFX21ldGhfc2V0X2luaXRpYWxpc2VfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2luaXRpYWxpc2VfZnVuY3Rpb247CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVwdGg7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9pbmhlcml0OworKwkJRUNfUE9JTlRfcG9pbnQyYm47CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X2RuOworKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3BvbGljaWVzOworKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGMm07CisrCQlTVE9SRV9kZXN0cm95X21ldGhvZDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1NUT1JFOworKwkJRVZQX1BLRVlfZ2V0MV9FQ19LRVk7CisrCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9udW1iZXI7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNESDsKKysJCUVDX0tFWV9nZXRfY29udl9mb3JtOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfTkRFRl9pdDsKKysJCVNUT1JFX2RlbGV0ZV9wdWJsaWNfa2V5OworKwkJU1RPUkVfZ2V0X3B1YmxpY19rZXk7CisrCQlTVE9SRV9tb2RpZnlfYXJiaXRyYXJ5OworKwkJRU5HSU5FX2dldF9zdGF0aWNfc3RhdGU7CisrCQlwcXVldWVfaXRlcmF0b3I7CisrCQlFQ0RTQV9TSUdfbmV3OworKwkJT1BFTlNTTF9ESVJfZW5kOworKwkJQk5fR0YybV9tb2Rfc3FyOworKwkJRUNfUE9JTlRfYm4ycG9pbnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZGVwdGg7CisrCQlFQ19LRVlfc2V0X2FzbjFfZmxhZzsKKysJCVNUT1JFX2dldF9tZXRob2Q7CisrCQlFQ19LRVlfZ2V0X2tleV9tZXRob2RfZGF0YTsKKysJCUVDRFNBX3NpZ25fZXg7CisrCQlTVE9SRV9wYXJzZV9hdHRyc19lbmQ7CisrCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOworKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZfZm9ybTsKKysJCVNUT1JFX21ldGhvZF9zZXRfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9BVFRSX0lORk9faW47CisrCQlQRU1fcmVhZF9iaW9fRUNQS1BhcmFtZXRlcnM7CisrCQlFQ19HUk9VUF9nZXRfcGVudGFub21pYWxfYmFzaXM7CisrCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfdHh0OworKwkJQk5fQkxJTkRJTkdfc2V0X2ZsYWdzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9wb2xpY2llczsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfbmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9wdXJwb3NlOworKwkJU1RPUkVfZ2V0X251bWJlcjsKKysJCUVDRFNBX3NpZ25fc2V0dXA7CisrCQlCTl9HRjJtX21vZF9zb2x2ZV9xdWFkX2FycjsKKysJCUVDX0tFWV91cF9yZWY7CisrCQlQT0xJQ1lfTUFQUElOR19mcmVlOworKwkJQk5fR0YybV9tb2RfZGl2OworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2ZsYWdzOworKwkJRUNfS0VZX2ZyZWU7CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X25leHRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKKysJCVBFTV93cml0ZV9iaW9fRUNQcml2YXRlS2V5OworKwkJZDJpX0VDX1BVQktFWTsKKysJCVNUT1JFX21ldGhfZ2V0X2dlbmVyYXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9nZW5lcmF0ZV9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3RfZW5kX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X2VuZF9mdW5jdGlvbjsKKysJCXBxdWV1ZV9wcmludDsKKysJCUVDX0dST1VQX2hhdmVfcHJlY29tcHV0ZV9tdWx0OworKwkJRUNfS0VZX3ByaW50X2ZwOworKwkJQk5fR0YybV9tb2RfYXJyOworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NFUlRfUEFJUjsKKysJCUVWUF9QS0VZX2NtcDsKKysJCVg1MDlfcG9saWN5X2xldmVsX25vZGVfY291bnQ7CisrCQlTVE9SRV9uZXdfZW5naW5lOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X3N0YXJ0OworKwkJWDUwOV9WRVJJRllfUEFSQU1fbmV3OworKwkJRUNESF9nZXRfZXhfZGF0YTsKKysJCUVWUF9QS0VZX2dldF9hdHRyOworKwkJRUNEU0FfZG9fc2lnbjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0VDREg7CisrCQlFQ0RIX09wZW5TU0w7CisrCQlFQ19LRVlfc2V0X2NvbnZfZm9ybTsKKysJCUVDX1BPSU5UX2R1cDsKKysJCUdFTkVSQUxfU1VCVFJFRV9uZXc7CisrCQlTVE9SRV9saXN0X2NybF9lbmRwOworKwkJRUNfZ2V0X2J1aWx0aW5fY3VydmVzOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7CisrCQlYNTA5X3BjeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKKysJCVNUT1JFX2xpc3RfY3JsX2VuZDsKKysJCUVWUF9QS0VZX3NldDFfRUNfS0VZOworKwkJQk5fR0YybV9tb2Rfc3FydF9hcnI7CisrCQlpMmRfRUNQcml2YXRlS2V5X2JpbzsKKysJCUVDUEtQYXJhbWV0ZXJzX3ByaW50X2ZwOworKwkJcHF1ZXVlX2ZpbmQ7CisrCQlFQ0RTQV9TSUdfZnJlZTsKKysJCVBFTV93cml0ZV9iaW9fRUNQS1BhcmFtZXRlcnM7CisrCQlTVE9SRV9tZXRob2Rfc2V0X2N0cmxfZnVuY3Rpb247CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kOworKwkJRUNfS0VZX3NldF9wcml2YXRlX2tleTsKKysJCXBxdWV1ZV9wZWVrOworKwkJU1RPUkVfZ2V0X2FyYml0cmFyeTsKKysJCVNUT1JFX3N0b3JlX2NybDsKKysJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9wb2xpY3k7CisrCQlQS0NTMTJfYWRkX3NhZmVzOworKwkJQk5fQkxJTkRJTkdfY29udmVydF9leDsKKysJCVg1MDlfcG9saWN5X3RyZWVfZnJlZTsKKysJCU9QRU5TU0xfaWEzMmNhcF9sb2M7CisrCQlCTl9HRjJtX3BvbHkyYXJyOworKwkJU1RPUkVfY3RybDsKKysJCVNUT1JFX0FUVFJfSU5GT19jb21wYXJlOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzIyNDsKKysJCWkyZF9FQ1BhcmFtZXRlcnM7CisrCQlpMmRfRUNQS1BhcmFtZXRlcnM7CisrCQlCTl9HRU5DQl9jYWxsOworKwkJZDJpX0VDUEtQYXJhbWV0ZXJzOworKwkJU1RPUkVfbWV0aF9zZXRfZ2VuZXJhdGVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2dlbmVyYXRlX2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9FQ0RIOworKwkJTkFNRV9DT05TVFJBSU5UU19uZXc7CisrCQlTSEEyNTZfSW5pdDsKKysJCUVDX0tFWV9nZXQwX3B1YmxpY19rZXk7CisrCQlQRU1fd3JpdGVfYmlvX0VDX1BVQktFWTsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfY3N0cjsKKysJCVNUT1JFX2xpc3RfY3JsX25leHQ7CisrCQlTVE9SRV9BVFRSX0lORk9faW5fcmFuZ2U7CisrCQlFQ1BhcmFtZXRlcnNfcHJpbnQ7CisrCQlTVE9SRV9tZXRoX3NldF9kZWxldGVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2RlbGV0ZV9mdW5jdGlvbjsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfbmV4dDsKKysJCUFTTjFfZ2VuZXJhdGVfbmNvbmY7CisrCQlCVUZfbWVtZHVwOworKwkJQk5fR0YybV9tb2RfbXVsOworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9uZXh0X2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X25leHRfZnVuY3Rpb247CisrCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9kbjsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfbmV4dDsKKysJCUVDX0dST1VQX3NldF9zZWVkOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3RydXN0OworKwkJU1RPUkVfQVRUUl9JTkZPX2ZyZWU7CisrCQlTVE9SRV9nZXRfcHJpdmF0ZV9rZXk7CisrCQlFVlBfUEtFWV9nZXRfYXR0cl9jb3VudDsKKysJCVNUT1JFX0FUVFJfSU5GT19uZXc7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfR0YybTsKKysJCVNUT1JFX21ldGhfc2V0X3Jldm9rZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfcmV2b2tlX2Z1bmN0aW9uOworKwkJU1RPUkVfc3RvcmVfbnVtYmVyOworKwkJQk5faXNfcHJpbWVfZXg7CisrCQlTVE9SRV9yZXZva2VfcHVibGljX2tleTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyYW07CisrCQlTVE9SRV9kZWxldGVfYXJiaXRyYXJ5OworKwkJUEVNX3JlYWRfWDUwOV9DRVJUX1BBSVI7CisrCQlYNTA5X1NUT1JFX3NldF9kZXB0aDsKKysJCUVDRFNBX2dldF9leF9kYXRhOworKwkJU0hBMjI0OworKwkJQklPX2R1bXBfaW5kZW50X2ZwOworKwkJRUNfS0VZX3NldF9ncm91cDsKKysJCUJVRl9zdHJuZHVwOworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9zdGFydDsKKysJCUJOX0dGMm1fbW9kOworKwkJWDUwOV9SRVFfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlFQ19HUk9VUF9nZXRfc2VlZF9sZW47CisrCQlFUlJfbG9hZF9TVE9SRV9zdHJpbmdzOworKwkJUEVNX3JlYWRfYmlvX0VDX1BVQktFWTsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kOworKwkJaTJkX0VDX1BVQktFWTsKKysJCUVDRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCUFTTjFfcHV0X2VvYzsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsaWNpdF9wb2xpY3k7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbF9wb2xpY3k7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV90YWJsZV9jbGVhbnVwOworKwkJU1RPUkVfbW9kaWZ5X3ByaXZhdGVfa2V5OworKwkJWDUwOV9WRVJJRllfUEFSQU1fZnJlZTsKKysJCUVDX01FVEhPRF9nZXRfZmllbGRfdHlwZTsKKysJCUVDX0dGcF9uaXN0X21ldGhvZDsKKysJCVNUT1JFX21ldGhfc2V0X21vZGlmeV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbW9kaWZ5X2Z1bmN0aW9uOworKwkJU1RPUkVfcGFyc2VfYXR0cnNfbmV4dDsKKysJCUVOR0lORV9sb2FkX3BhZGxvY2s7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfbmFtZTsKKysJCVg1MDlfQ0VSVF9QQUlSX2l0OworKwkJU1RPUkVfbWV0aF9nZXRfcmV2b2tlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9yZXZva2VfZnVuY3Rpb247CisrCQlTVE9SRV9tZXRob2Rfc2V0X2dldF9mdW5jdGlvbjsKKysJCVNUT1JFX21vZGlmeV9udW1iZXI7CisrCQlTVE9SRV9tZXRob2RfZ2V0X3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfc3RvcmVfcHJpdmF0ZV9rZXk7CisrCQlCTl9HRjJtX21vZF9zcXJfYXJyOworKwkJUlNBX3NldHVwX2JsaW5kaW5nOworKwkJQklPX3NfZGF0YWdyYW07CisrCQlTVE9SRV9NZW1vcnk7CisrCQlza19maW5kX2V4OworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGMm07CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNEU0E7CisrCQlQT0xJQ1lfQ09OU1RSQUlOVFNfbmV3OworKwkJQk5fR0YybV9tb2Rfc3FydDsKKysJCUVDREhfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRUNfS0VZX2dlbmVyYXRlX2tleTsKKysJCVNIQTM4NF9VcGRhdGU7CisrCQlCTl9HRjJtX2FycjJwb2x5OworKwkJU1RPUkVfbWV0aG9kX2dldF9nZXRfZnVuY3Rpb247CisrCQlTVE9SRV9tZXRoX3NldF9jbGVhbnVwX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9jbGVhbnVwX2Z1bmN0aW9uOworKwkJRUNfR1JPVVBfY2hlY2s7CisrCQlkMmlfRUNQcml2YXRlS2V5X2JpbzsKKysJCUVDX0tFWV9pbnNlcnRfa2V5X21ldGhvZF9kYXRhOworKwkJU1RPUkVfbWV0aF9nZXRfbG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbG9ja19zdG9yZV9mdW5jdGlvbjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9kZXB0aDsKKysJCVNIQTIyNF9GaW5hbDsKKysJCVNUT1JFX21ldGhfc2V0X3VwZGF0ZV9zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfdXBkYXRlX3N0b3JlX2Z1bmN0aW9uOworKwkJU0hBMjI0X1VwZGF0ZTsKKysJCWQyaV9FQ1ByaXZhdGVLZXk7CisrCQlBU04xX2l0ZW1fbmRlZl9pMmQ7CisrCQlTVE9SRV9kZWxldGVfcHJpdmF0ZV9rZXk7CisrCQlFUlJfcG9wX3RvX21hcms7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1NUT1JFOworKwkJWDUwOV9wb2xpY3lfbGV2ZWxfZ2V0MF9ub2RlOworKwkJaTJkX1BLQ1M3X05ERUY7CisrCQlFQ19HUk9VUF9nZXRfZGVncmVlOworKwkJQVNOMV9nZW5lcmF0ZV92MzsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfY3N0cjsKKysJCVg1MDlfcG9saWN5X3RyZWVfbGV2ZWxfY291bnQ7CisrCQlCTl9HRjJtX2FkZDsKKysJCUVDX0tFWV9nZXQwX2dyb3VwOworKwkJU1RPUkVfZ2VuZXJhdGVfY3JsOworKwkJU1RPUkVfc3RvcmVfcHVibGljX2tleTsKKysJCVg1MDlfQ0VSVF9QQUlSX2ZyZWU7CisrCQlTVE9SRV9yZXZva2VfcHJpdmF0ZV9rZXk7CisrCQlCTl9uaXN0X21vZF8yMjQ7CisrCQlTSEE1MTJfRmluYWw7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2RuOworKwkJU1RPUkVfbWV0aF9nZXRfaW5pdGlhbGlzZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKKysJCVNUT1JFX2RlbGV0ZV9udW1iZXI7CisrCQlpMmRfRUNfUFVCS0VZX2JpbzsKKysJCUJJT19kZ3JhbV9ub25fZmF0YWxfZXJyb3I7CisrCQlFQ19HUk9VUF9nZXRfYXNuMV9mbGFnOworKwkJU1RPUkVfQVRUUl9JTkZPX2luX2V4OworKwkJU1RPUkVfbGlzdF9jcmxfc3RhcnQ7CisrCQlFQ0RIX2dldF9leF9uZXdfaW5kZXg7CisrCQlTVE9SRV9tZXRoX2dldF9tb2RpZnlfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X21vZGlmeV9mdW5jdGlvbjsKKysJCXYyaV9BU04xX0JJVF9TVFJJTkc7CisrCQlTVE9SRV9zdG9yZV9jZXJ0aWZpY2F0ZTsKKysJCU9CSl9ic2VhcmNoX2V4OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlZmF1bHQ7CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X3NoYTFzdHI7CisrCQlCTl9HRjJtX21vZF9pbnY7CisrCQlCTl9HRjJtX21vZF9leHA7CisrCQlTVE9SRV9tb2RpZnlfcHVibGljX2tleTsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3Rfc3RhcnRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247CisrCQlFQ19HUk9VUF9nZXQwX3NlZWQ7CisrCQlTVE9SRV9zdG9yZV9hcmJpdHJhcnk7CisrCQlTVE9SRV9tZXRoX3NldF91bmxvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X3VubG9ja19zdG9yZV9mdW5jdGlvbjsKKysJCUJOX0dGMm1fbW9kX2Rpdl9hcnI7CisrCQlFTkdJTkVfc2V0X0VDRFNBOworKwkJU1RPUkVfY3JlYXRlX21ldGhvZDsKKysJCUVDUEtQYXJhbWV0ZXJzX3ByaW50OworKwkJRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXk7CisrCQlQRU1fd3JpdGVfRUNfUFVCS0VZOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MTsKKysJCUVDREhfc2V0X21ldGhvZDsKKysJCXYyaV9HRU5FUkFMX05BTUVfZXg7CisrCQlFQ0RIX3NldF9leF9kYXRhOworKwkJU1RPUkVfZ2VuZXJhdGVfa2V5OworKwkJQk5fbmlzdF9tb2RfNTIxOworKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX2xldmVsOworKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKKysJCUVDX0dST1VQX3NldF9wb2ludF9jb252X2Zvcm07CisrCQlQRU1fcmVhZF9FQ19QVUJLRVk7CisrCQlpMmRfRUNEU0FfU0lHOworKwkJRUNEU0FfT3BlblNTTDsKKysJCVNUT1JFX2RlbGV0ZV9jcmw7CisrCQlFQ19LRVlfZ2V0X2VuY19mbGFnczsKKysJCUFTTjFfY29uc3RfY2hlY2tfaW5maW5pdGVfZW5kOworKwkJRVZQX1BLRVlfZGVsZXRlX2F0dHI7CisrCQlFQ0RTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlc19HRjJtOworKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRjJtOworKwkJRUNfR1JPVVBfY21wOworKwkJU1RPUkVfcmV2b2tlX2NlcnRpZmljYXRlOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzI1NjsKKysJCVNUT1JFX21ldGhfZ2V0X2RlbGV0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfZGVsZXRlX2Z1bmN0aW9uOworKwkJU0hBMjI0X0luaXQ7CisrCQlQRU1fcmVhZF9FQ1ByaXZhdGVLZXk7CisrCQlTSEE1MTJfSW5pdDsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZHA7CisrCQlCTl9zZXRfbmVnYXRpdmU7CisrCQlFUlJfbG9hZF9FQ0RTQV9zdHJpbmdzOworKwkJRUNfR1JPVVBfZ2V0X2Jhc2lzX3R5cGU7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfbmV4dDsKKysJCWkydl9BU04xX0JJVF9TVFJJTkc7CisrCQlTVE9SRV9PQkpFQ1RfZnJlZTsKKysJCUJOX25pc3RfbW9kXzM4NDsKKysJCWkyZF9YNTA5X0NFUlRfUEFJUjsKKysJCVBFTV93cml0ZV9FQ1BLUGFyYW1ldGVyczsKKysJCUVDREhfY29tcHV0ZV9rZXk7CisrCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9zaGExc3RyOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RIOworKwkJcHF1ZXVlX3BvcDsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2NzdHI7CisrCQlQT0xJQ1lfQ09OU1RSQUlOVFNfaXQ7CisrCQlTVE9SRV9nZXRfZXhfbmV3X2luZGV4OworKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfT0JKOworKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMF9wb2xpY3k7CisrCQlCTl9HRjJtX21vZF9zb2x2ZV9xdWFkOworKwkJU0hBMjU2OworKwkJaTJkX0VDUHJpdmF0ZUtleV9mcDsKKysJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF91c2VyX3BvbGljaWVzOworKwkJWDUwOV9wY3lfdHJlZV9nZXQwX3Vzcl9wb2xpY2llczsKKysJCU9QRU5TU0xfRElSX3JlYWQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDRFNBOworKwkJWDUwOV9WRVJJRllfUEFSQU1fbG9va3VwOworKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOworKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0YybTsKKysJCUVDX0dST1VQX2R1cDsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RTQTsKKysJCUVDX0tFWV9uZXc7CisrCQlTSEEyNTZfVHJhbnNmb3JtOworKwkJRUNfS0VZX3NldF9lbmNfZmxhZ3M7CisrCQlFQ0RTQV92ZXJpZnk7CisrCQlFQ19QT0lOVF9wb2ludDJoZXg7CisrCQlFTkdJTkVfZ2V0X1NUT1JFOworKwkJU0hBNTEyOworKwkJU1RPUkVfZ2V0X2NlcnRpZmljYXRlOworKwkJRUNEU0FfZG9fc2lnbl9leDsKKysJCUVDRFNBX2RvX3ZlcmlmeTsKKysJCWQyaV9FQ1ByaXZhdGVLZXlfZnA7CisrCQlTVE9SRV9kZWxldGVfY2VydGlmaWNhdGU7CisrCQlTSEE1MTJfVHJhbnNmb3JtOworKwkJWDUwOV9TVE9SRV9zZXQxX3BhcmFtOworKwkJU1RPUkVfbWV0aG9kX2dldF9jdHJsX2Z1bmN0aW9uOworKwkJU1RPUkVfZnJlZTsKKysJCVBFTV93cml0ZV9FQ1ByaXZhdGVLZXk7CisrCQlTVE9SRV9tZXRoX2dldF91bmxvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3VubG9ja19zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX2dldF9leF9kYXRhOworKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5OworKwkJUEVNX3JlYWRfRUNQS1BhcmFtZXRlcnM7CisrCQlYNTA5X0NFUlRfUEFJUl9uZXc7CisrCQlFTkdJTkVfcmVnaXN0ZXJfU1RPUkU7CisrCQlSU0FfZ2VuZXJhdGVfa2V5X2V4OworKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7CisrCQlFQ1BhcmFtZXRlcnNfcHJpbnRfZnA7CisrCQlYNTA5VjNfTkFNRV9mcm9tX3NlY3Rpb247CisrCQlFVlBfUEtFWV9hZGQxX2F0dHI7CisrCQlTVE9SRV9tb2RpZnlfY3JsOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9zdGFydDsKKysJCVBPTElDWV9NQVBQSU5HU19pdDsKKysJCUdFTkVSQUxfU1VCVFJFRV9pdDsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9uYW1lOworKwkJUEVNX3dyaXRlX1g1MDlfQ0VSVF9QQUlSOworKwkJQklPX2R1bXBfaW5kZW50X2NiOworKwkJZDJpX1g1MDlfQ0VSVF9QQUlSOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmRwOworKwkJYXNuMV9jb25zdF9GaW5pc2g7CisrCQlpMmRfRUNfUFVCS0VZX2ZwOworKwkJQk5fbmlzdF9tb2RfMjU2OworKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMF90YWJsZTsKKysJCXBxdWV1ZV9mcmVlOworKwkJQk5fQkxJTkRJTkdfY3JlYXRlX3BhcmFtOworKwkJRUNEU0Ffc2l6ZTsKKysJCWQyaV9FQ19QVUJLRVlfYmlvOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzUyMTsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfc2hhMXN0cjsKKysJCUJOX2dlbmVyYXRlX3ByaW1lX2V4OworKwkJRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWU7CisrCQlTSEEyNTZfRmluYWw7CisrCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OworKwkJUEVNX3JlYWRfYmlvX0VDUHJpdmF0ZUtleTsKKysJCVNUT1JFX21ldGhfZ2V0X2NsZWFudXBfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2NsZWFudXBfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X0VDREg7CisrCQlkMmlfRUNEU0FfU0lHOworKwkJQk5faXNfcHJpbWVfZmFzdHRlc3RfZXg7CisrCQlFQ0RTQV9zaWduOworKwkJWDUwOV9wb2xpY3lfY2hlY2s7CisrCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9OSUQ7CisrCQlTVE9SRV9zZXRfZXhfZGF0YTsKKysJCUVOR0lORV9nZXRfRUNEU0E7CisrCQlFVlBfZWNkc2E7CisrCQlCTl9CTElORElOR19nZXRfZmxhZ3M7CisrCQlQS0NTMTJfYWRkX2NlcnQ7CisrCQlTVE9SRV9PQkpFQ1RfbmV3OworKwkJRVJSX2xvYWRfRUNESF9zdHJpbmdzOworKwkJRUNfS0VZX2R1cDsKKysJCUVWUF9DSVBIRVJfQ1RYX3JhbmRfa2V5OworKwkJRUNEU0Ffc2V0X21ldGhvZDsKKysJCWEyaV9JUEFERFJFU1NfTkM7CisrCQlkMmlfRUNQYXJhbWV0ZXJzOworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmQ7CisrCQlTVE9SRV9nZXRfY3JsOworKwkJWDUwOV9QT0xJQ1lfTk9ERV9wcmludDsKKysJCVNIQTM4NF9Jbml0OworKwkJRUNfR0YybV9zaW1wbGVfbWV0aG9kOworKwkJRUNEU0Ffc2V0X2V4X2RhdGE7CisrCQlTSEEzODRfRmluYWw7CisrCQlQS0NTN19zZXRfZGlnZXN0OworKwkJRUNfS0VZX3ByaW50OworKwkJU1RPUkVfbWV0aF9zZXRfbG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbG9ja19zdG9yZV9mdW5jdGlvbjsKKysJCUVDRFNBX2dldF9leF9uZXdfaW5kZXg7CisrCQlTSEEzODQ7CisrCQlQT0xJQ1lfTUFQUElOR19uZXc7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZHA7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BvbGljeV90cmVlOworKwkJRUNfR1JPVVBfc2V0X2FzbjFfZmxhZzsKKysJCUVDX0tFWV9jaGVja19rZXk7CisrCQlkMmlfRUNfUFVCS0VZX2ZwOworKwkJUEtDUzdfc2V0MF90eXBlX290aGVyOworKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ0VSVF9QQUlSOworKwkJcHF1ZXVlX25leHQ7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X2VuZF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9lbmRfZnVuY3Rpb247CisrCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3RpbWU7CisrCQlwcXVldWVfbmV3OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDREg7CisrCQlTVE9SRV9uZXdfbWV0aG9kOworKwkJUEtDUzEyX2FkZF9rZXk7CisrCQlEU09fbWVyZ2U7CisrCQlFQ19QT0lOVF9oZXgycG9pbnQ7CisrCQlCSU9fZHVtcF9jYjsKKysJCVNIQTI1Nl9VcGRhdGU7CisrCQlwcXVldWVfaW5zZXJ0OworKwkJcGl0ZW1fZnJlZTsKKysJCUJOX0dGMm1fbW9kX2ludl9hcnI7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RTQTsKKysJCUJOX0JMSU5ESU5HX3NldF90aHJlYWRfaWQ7CisrCQlnZXRfcmZjMzUyNl9wcmltZV84MTkyOworKwkJWDUwOV9WRVJJRllfUEFSQU1fY2xlYXJfZmxhZ3M7CisrCQlnZXRfcmZjMjQwOV9wcmltZV8xMDI0OworKwkJREhfY2hlY2tfcHViX2tleTsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzIwNDg7CisrCQlnZXRfcmZjMzUyNl9wcmltZV82MTQ0OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMTUzNjsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzMwNzI7CisrCQlnZXRfcmZjMzUyNl9wcmltZV80MDk2OworKwkJZ2V0X3JmYzI0MDlfcHJpbWVfNzY4OworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2ZsYWdzOworKwkJRVZQX0NJUEhFUl9DVFhfbmV3OworKwkJRVZQX0NJUEhFUl9DVFhfZnJlZTsKKysJCUNhbWVsbGlhX2NiY19lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2ZiMTI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmIxX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jdHIxMjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYnJfZW5jcnlwdF9ibG9jazsKKysJCUNhbWVsbGlhX2RlY3J5cHQ7CisrCQlDYW1lbGxpYV9lY2JfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9vZmIxMjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX3NldF9rZXk7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NiYzsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzEyOF9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMTI4X29mYjsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2JjOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2VjYjsKKysJCUVWUF9jYW1lbGxpYV8xOTJfb2ZiOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8yNTZfZWNiOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9vZmI7CisrCQlhMmlfaXBhZGQ7CisrCQlBU0lkZW50aWZpZXJzX2ZyZWU7CisrCQlpMmRfQVNJZE9yUmFuZ2U7CisrCQlFVlBfQ0lQSEVSX2Jsb2NrX3NpemU7CisrCQl2M19hc2lkX2lzX2Nhbm9uaWNhbDsKKysJCUlQQWRkcmVzc0Nob2ljZV9mcmVlOworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2FwcF9kYXRhOworKwkJQklPX3NldF9jYWxsYmFja19hcmc7CisrCQl2M19hZGRyX2FkZF9wcmVmaXg7CisrCQlJUEFkZHJlc3NPclJhbmdlX2l0OworKwkJQklPX3NldF9mbGFnczsKKysJCUFTSWRlbnRpZmllcnNfaXQ7CisrCQl2M19hZGRyX2dldF9yYW5nZTsKKysJCUJJT19tZXRob2RfdHlwZTsKKysJCXYzX2FkZHJfaW5oZXJpdHM7CisrCQlJUEFkZHJlc3NDaG9pY2VfaXQ7CisrCQlBRVNfaWdlX2VuY3J5cHQ7CisrCQl2M19hZGRyX2FkZF9yYW5nZTsKKysJCUVWUF9DSVBIRVJfQ1RYX25pZDsKKysJCWQyaV9BU1JhbmdlOworKwkJdjNfYWRkcl9hZGRfaW5oZXJpdDsKKysJCXYzX2FzaWRfYWRkX2lkX29yX3JhbmdlOworKwkJdjNfYWRkcl92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7CisrCQlFVlBfQ0lQSEVSX2l2X2xlbmd0aDsKKysJCUVWUF9NRF90eXBlOworKwkJdjNfYXNpZF9jYW5vbml6ZTsKKysJCUlQQWRkcmVzc1JhbmdlX2ZyZWU7CisrCQl2M19hc2lkX2FkZF9pbmhlcml0OworKwkJRVZQX0NJUEhFUl9DVFhfa2V5X2xlbmd0aDsKKysJCUlQQWRkcmVzc1JhbmdlX25ldzsKKysJCUFTSWRPclJhbmdlX25ldzsKKysJCUVWUF9NRF9zaXplOworKwkJRVZQX01EX0NUWF90ZXN0X2ZsYWdzOworKwkJQklPX2NsZWFyX2ZsYWdzOworKwkJaTJkX0FTUmFuZ2U7CisrCQlJUEFkZHJlc3NSYW5nZV9pdDsKKysJCUlQQWRkcmVzc0Nob2ljZV9uZXc7CisrCQlBU0lkZW50aWZpZXJDaG9pY2VfbmV3OworKwkJQVNSYW5nZV9mcmVlOworKwkJRVZQX01EX3BrZXlfdHlwZTsKKysJCUVWUF9NRF9DVFhfY2xlYXJfZmxhZ3M7CisrCQlJUEFkZHJlc3NGYW1pbHlfZnJlZTsKKysJCWkyZF9JUEFkZHJlc3NGYW1pbHk7CisrCQlJUEFkZHJlc3NPclJhbmdlX25ldzsKKysJCUVWUF9DSVBIRVJfZmxhZ3M7CisrCQl2M19hc2lkX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKKysJCWQyaV9JUEFkZHJlc3NSYW5nZTsKKysJCUFFU19iaV9pZ2VfZW5jcnlwdDsKKysJCUJJT19nZXRfY2FsbGJhY2s7CisrCQlJUEFkZHJlc3NPclJhbmdlX2ZyZWU7CisrCQl2M19hZGRyX3N1YnNldDsKKysJCWQyaV9JUEFkZHJlc3NGYW1pbHk7CisrCQl2M19hc2lkX3N1YnNldDsKKysJCUJJT190ZXN0X2ZsYWdzOworKwkJaTJkX0FTSWRlbnRpZmllckNob2ljZTsKKysJCUFTUmFuZ2VfaXQ7CisrCQlkMmlfQVNJZGVudGlmaWVyczsKKysJCUFTUmFuZ2VfbmV3OworKwkJZDJpX0lQQWRkcmVzc0Nob2ljZTsKKysJCXYzX2FkZHJfZ2V0X2FmaTsKKysJCUVWUF9DSVBIRVJfa2V5X2xlbmd0aDsKKysJCUVWUF9DaXBoZXI7CisrCQlpMmRfSVBBZGRyZXNzT3JSYW5nZTsKKysJCUFTSWRPclJhbmdlX2l0OworKwkJRVZQX0NJUEhFUl9uaWQ7CisrCQlpMmRfSVBBZGRyZXNzQ2hvaWNlOworKwkJRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZTsKKysJCUFTSWRlbnRpZmllcnNfbmV3OworKwkJdjNfYWRkcl92YWxpZGF0ZV9wYXRoOworKwkJSVBBZGRyZXNzRmFtaWx5X25ldzsKKysJCUVWUF9NRF9DVFhfc2V0X2ZsYWdzOworKwkJdjNfYWRkcl9pc19jYW5vbmljYWw7CisrCQlpMmRfSVBBZGRyZXNzUmFuZ2U7CisrCQlJUEFkZHJlc3NGYW1pbHlfaXQ7CisrCQl2M19hc2lkX2luaGVyaXRzOworKwkJRVZQX0NJUEhFUl9DVFhfY2lwaGVyOworKwkJRVZQX0NJUEhFUl9DVFhfZ2V0X2FwcF9kYXRhOworKwkJRVZQX01EX2Jsb2NrX3NpemU7CisrCQlFVlBfQ0lQSEVSX0NUWF9mbGFnczsKKysJCXYzX2FzaWRfdmFsaWRhdGVfcGF0aDsKKysJCWQyaV9JUEFkZHJlc3NPclJhbmdlOworKwkJdjNfYWRkcl9jYW5vbml6ZTsKKysJCUFTSWRlbnRpZmllckNob2ljZV9pdDsKKysJCUVWUF9NRF9DVFhfbWQ7CisrCQlkMmlfQVNJZGVudGlmaWVyQ2hvaWNlOworKwkJQklPX21ldGhvZF9uYW1lOworKwkJRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoOworKwkJQVNJZE9yUmFuZ2VfZnJlZTsKKysJCUFTSWRlbnRpZmllckNob2ljZV9mcmVlOworKwkJQklPX2dldF9jYWxsYmFja19hcmc7CisrCQlCSU9fc2V0X2NhbGxiYWNrOworKwkJZDJpX0FTSWRPclJhbmdlOworKwkJaTJkX0FTSWRlbnRpZmllcnM7CisrCQlTRUVEX2RlY3J5cHQ7CisrCQlTRUVEX2VuY3J5cHQ7CisrCQlTRUVEX2NiY19lbmNyeXB0OworKwkJRVZQX3NlZWRfb2ZiOworKwkJU0VFRF9jZmIxMjhfZW5jcnlwdDsKKysJCVNFRURfb2ZiMTI4X2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9jYmM7CisrCQlTRUVEX2VjYl9lbmNyeXB0OworKwkJRVZQX3NlZWRfZWNiOworKwkJU0VFRF9zZXRfa2V5OworKwkJRVZQX3NlZWRfY2ZiMTI4OworKwkJWDUwOV9FWFRFTlNJT05TX2l0OworKwkJWDUwOV9nZXQxX29jc3A7CisrCQlPQ1NQX1JFUV9DVFhfZnJlZTsKKysJCWkyZF9YNTA5X0VYVEVOU0lPTlM7CisrCQlPQ1NQX3NlbmRyZXFfbmJpbzsKKysJCU9DU1Bfc2VuZHJlcV9uZXc7CisrCQlkMmlfWDUwOV9FWFRFTlNJT05TOworKwkJWDUwOV9BTEdPUlNfaXQ7CisrCQlYNTA5X0FMR09SX2dldDA7CisrCQlYNTA5X0FMR09SX3NldDA7CisrCQlBRVNfdW53cmFwX2tleTsKKysJCUFFU193cmFwX2tleTsKKysJCVg1MDlhdF9nZXQwX2RhdGFfYnlfT0JKOworKwkJQVNOMV9UWVBFX3NldDE7CisrCQlBU04xX1NUUklOR19zZXQwOworKwkJaTJkX1g1MDlfQUxHT1JTOworKwkJQklPX2ZfemxpYjsKKysJCUNPTVBfemxpYl9jbGVhbnVwOworKwkJZDJpX1g1MDlfQUxHT1JTOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2ZyZWU7CisrCQlQRU1fd3JpdGVfQ01TOworKwkJQ01TX2FkZDBfQ2VydGlmaWNhdGVDaG9pY2VzOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7CisrCQlFUlJfbG9hZF9DTVNfc3RyaW5nczsKKysJCUNNU19zaWduX3JlY2VpcHQ7CisrCQlpMmRfQ01TX0NvbnRlbnRJbmZvOworKwkJQ01TX3NpZ25lZF9kZWxldGVfYXR0cjsKKysJCWQyaV9DTVNfYmlvOworKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKKysJCUNNU192ZXJpZnk7CisrCQlTTUlNRV9yZWFkX0NNUzsKKysJCUNNU19kZWNyeXB0X3NldDFfa2V5OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9hbGdzOworKwkJQ01TX2FkZDFfY2VydDsKKysJCUNNU19zZXRfZGV0YWNoZWQ7CisrCQlDTVNfZW5jcnlwdDsKKysJCUNNU19FbnZlbG9wZWREYXRhX2NyZWF0ZTsKKysJCUNNU191bmNvbXByZXNzOworKwkJQ01TX2FkZDBfY3JsOworKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5X2NvbnRlbnQ7CisrCQlDTVNfdW5zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCVBFTV93cml0ZV9iaW9fQ01TOworKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9jZXJ0X2NtcDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9hbGdzOworKwkJQ01TX1JlY2lwSW5mb19rdHJpX2dldDBfYWxnczsKKysJCUNNU19Db250ZW50SW5mb19mcmVlOworKwkJQ01TX2ZpbmFsOworKwkJQ01TX2FkZF9zaW1wbGVfc21pbWVjYXA7CisrCQlDTVNfU2lnbmVySW5mb192ZXJpZnk7CisrCQlDTVNfZGF0YTsKKysJCUNNU19Db250ZW50SW5mb19pdDsKKysJCWQyaV9DTVNfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfY29tcHJlc3M7CisrCQlDTVNfZGlnZXN0X2NyZWF0ZTsKKysJCUNNU19TaWduZXJJbmZvX2NlcnRfY21wOworKwkJQ01TX1NpZ25lckluZm9fc2lnbjsKKysJCUNNU19kYXRhX2NyZWF0ZTsKKysJCWkyZF9DTVNfYmlvOworKwkJQ01TX0VuY3J5cHRlZERhdGFfc2V0MV9rZXk7CisrCQlDTVNfZGVjcnlwdDsKKysJCWludF9zbWltZV93cml0ZV9BU04xOworKwkJQ01TX3Vuc2lnbmVkX2RlbGV0ZV9hdHRyOworKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2NvdW50OworKwkJQ01TX2FkZF9zbWltZWNhcDsKKysJCVBFTV9yZWFkX0NNUzsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOworKwkJZDJpX0NNU19Db250ZW50SW5mbzsKKysJCUNNU19hZGRfc3RhbmRhcmRfc21pbWVjYXA7CisrCQlDTVNfQ29udGVudEluZm9fbmV3OworKwkJQ01TX1JlY2lwaWVudEluZm9fdHlwZTsKKysJCUNNU19nZXQwX3R5cGU7CisrCQlDTVNfaXNfZGV0YWNoZWQ7CisrCQlDTVNfc2lnbjsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyOworKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKKysJCVNNSU1FX3dyaXRlX0NNUzsKKysJCUNNU19FbmNyeXB0ZWREYXRhX2RlY3J5cHQ7CisrCQlDTVNfZ2V0MF9SZWNpcGllbnRJbmZvczsKKysJCUNNU19hZGQwX1Jldm9jYXRpb25JbmZvQ2hvaWNlOworKwkJQ01TX2RlY3J5cHRfc2V0MV9wa2V5OworKwkJQ01TX1NpZ25lckluZm9fc2V0MV9zaWduZXJfY2VydDsKKysJCUNNU19nZXQwX3NpZ25lcnM7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfZ2V0MF92YWx1ZXM7CisrCQlDTVNfc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7CisrCQlDTVNfZ2V0MF9TaWduZXJJbmZvczsKKysJCUNNU19hZGQwX2NlcnQ7CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9lbmNyeXB0OworKwkJQ01TX2RpZ2VzdF92ZXJpZnk7CisrCQlDTVNfc2V0MV9zaWduZXJzX2NlcnRzOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cjsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfa2V5OworKwkJQ01TX1NpZ25lZERhdGFfaW5pdDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2dldDBfaWQ7CisrCQlDTVNfdmVyaWZ5X3JlY2VpcHQ7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfaXQ7CisrCQlQRU1fcmVhZF9iaW9fQ01TOworKwkJQ01TX2dldDFfY3JsczsKKysJCUNNU19hZGQwX3JlY2lwaWVudF9rZXk7CisrCQlTTUlNRV9yZWFkX0FTTjE7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfbmV3OworKwkJQ01TX2dldDBfY29udGVudDsKKysJCUNNU19nZXQxX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfaWRfY21wOworKwkJQ01TX2FkZDFfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX3NpZ25lcl9pZDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfTklEOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cjsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHJfYnlfTklEOworKwkJQ01TX2dldDFfY2VydHM7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUNNU19kYXRhRmluYWw7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfc2lnbmVyX2lkOworKwkJQ01TX1JlY2lwSW5mb19rdHJpX2dldDBfc2lncl9pZDsKKysJCWkyZF9DTVNfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfYWRkMV9yZWNpcGllbnRfY2VydDsKKysJCUNNU19kYXRhSW5pdDsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2RlY3J5cHQ7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyX2NvdW50OworKwkJQ01TX2dldDBfZUNvbnRlbnRUeXBlOworKwkJQ01TX3NldDFfZUNvbnRlbnRUeXBlOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2NyZWF0ZTA7CisrCQlDTVNfYWRkMV9zaWduZXI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX3BrZXk7CisrCQlFTkdJTkVfc2V0X2xvYWRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9sZF9zc2xfY2xudF9jZXJ0X2ZuOworKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mbjsKKysJCUVOR0lORV9sb2FkX3NzbF9jbGllbnRfY2VydDsKKysJCUVOR0lORV9sb2FkX2NhcGk7CisrCQlPUEVOU1NMX2lzc2VydmljZTsKKysJCUZJUFNfZHNhX3NpZ19kZWNvZGU7CisrCQlFVlBfQ0lQSEVSX0NUWF9jbGVhcl9mbGFnczsKKysJCUZJUFNfcmFuZF9zdGF0dXM7CisrCQlGSVBTX3JhbmRfc2V0X2tleTsKKysJCUNSWVBUT19zZXRfbWVtX2luZm9fZnVuY3Rpb25zOworKwkJUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4OworKwkJaW50X0VSUl9zZXRfc3RhdGVfZnVuYzsKKysJCWludF9FVlBfTURfc2V0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlpbnRfQ1JZUFRPX3NldF9kb19keW5sb2NrX2NhbGxiYWNrOworKwkJRklQU19ybmdfc3RpY2s7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfZmxhZ3M7CisrCQlCTl9YOTMxX2dlbmVyYXRlX3ByaW1lX2V4OworKwkJRklQU19zZWxmdGVzdF9jaGVjazsKKysJCUZJUFNfcmFuZF9zZXRfZHQ7CisrCQlDUllQVE9fZGJnX3BvcF9pbmZvOworKwkJRklQU19kc2FfZnJlZTsKKysJCVJTQV9YOTMxX2Rlcml2ZV9leDsKKysJCUZJUFNfcnNhX25ldzsKKysJCUZJUFNfcmFuZF9ieXRlczsKKysJCWZpcHNfY2lwaGVyX3Rlc3Q7CisrCQlFVlBfQ0lQSEVSX0NUWF90ZXN0X2ZsYWdzOworKwkJQ1JZUFRPX21hbGxvY19kZWJ1Z19pbml0OworKwkJQ1JZUFRPX2RiZ19wdXNoX2luZm87CisrCQlGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbjsKKysJCUZJUFNfZGhfbmV3OworKwkJRklQU19jb3JydXB0X2RzYV9rZXlnZW47CisrCQlGSVBTX2RoX2ZyZWU7CisrCQlmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3Q7CisrCQlFVlBfYWRkX2FsZ19tb2R1bGU7CisrCQlpbnRfUkFORF9pbml0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlpbnRfRVZQX0NJUEhFUl9zZXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9FVlBfTURfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOworKwkJRklQU19yYW5kX3Rlc3RfbW9kZTsKKysJCUZJUFNfcmFuZF9yZXNldDsKKysJCUZJUFNfZHNhX25ldzsKKysJCWludF9SQU5EX3NldF9jYWxsYmFja3M7CisrCQlCTl9YOTMxX2Rlcml2ZV9wcmltZV9leDsKKysJCWludF9FUlJfbGliX2luaXQ7CisrCQlpbnRfRVZQX0NJUEhFUl9pbml0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlGSVBTX3JzYV9mcmVlOworKwkJRklQU19kc2Ffc2lnX2VuY29kZTsKKysJCUNSWVBUT19kYmdfcmVtb3ZlX2FsbF9pbmZvOworKwkJT1BFTlNTTF9pbml0OworKwkJQ1JZUFRPX3N0cmR1cDsKKysJCUpQQUtFX1NURVAzQV9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDFfcmVsZWFzZTsKKysJCUpQQUtFX2dldF9zaGFyZWRfa2V5OworKwkJSlBBS0VfU1RFUDNCX2luaXQ7CisrCQlKUEFLRV9TVEVQMV9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAxX2luaXQ7CisrCQlKUEFLRV9TVEVQM0JfcHJvY2VzczsKKysJCUpQQUtFX1NURVAyX2dlbmVyYXRlOworKwkJSlBBS0VfQ1RYX25ldzsKKysJCUpQQUtFX0NUWF9mcmVlOworKwkJSlBBS0VfU1RFUDNCX3JlbGVhc2U7CisrCQlKUEFLRV9TVEVQM0FfcmVsZWFzZTsKKysJCUpQQUtFX1NURVAyX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQM0JfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMV9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDNBX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDJfcmVsZWFzZTsKKysJCUpQQUtFX1NURVAzQV9pbml0OworKwkJRVJSX2xvYWRfSlBBS0Vfc3RyaW5nczsKKysJCUpQQUtFX1NURVAyX2luaXQ7CisrCQlwcXVldWVfc2l6ZTsKKysJCWkyZF9UU19BQ0NVUkFDWTsKKysJCWkyZF9UU19NU0dfSU1QUklOVF9mcDsKKysJCWkyZF9UU19NU0dfSU1QUklOVDsKKysJCUVWUF9QS0VZX3ByaW50X3B1YmxpYzsKKysJCUVWUF9QS0VZX0NUWF9uZXc7CisrCQlpMmRfVFNfVFNUX0lORk87CisrCQlFVlBfUEtFWV9hc24xX2ZpbmQ7CisrCQlEU09fTUVUSE9EX2Jlb3M7CisrCQlUU19DT05GX2xvYWRfY2VydDsKKysJCVRTX1JFUV9nZXRfZXh0OworKwkJRVZQX1BLRVlfc2lnbl9pbml0OworKwkJQVNOMV9pdGVtX3ByaW50OworKwkJVFNfVFNUX0lORk9fc2V0X25vbmNlOworKwkJVFNfUkVTUF9kdXA7CisrCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9tZXRoczsKKysJCUVWUF9QS0VZX2FzbjFfYWRkMDsKKysJCVBLQ1M3X2FkZDBfYXR0cmliX3NpZ25pbmdfdGltZTsKKysJCWkyZF9UU19UU1RfSU5GT19mcDsKKysJCUJJT19hc24xX2dldF9wcmVmaXg7CisrCQlUU19UU1RfSU5GT19zZXRfdGltZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2RlY3J5cHQ7CisrCQlFVlBfUEtFWV9zZXRfdHlwZV9zdHI7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2tleWdlbl9pbmZvOworKwkJVFNfUkVRX3NldF9wb2xpY3lfaWQ7CisrCQlkMmlfVFNfUkVTUF9mcDsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5naW5lOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmc7CisrCQlXSElSTFBPT0xfSW5pdDsKKysJCVRTX1JFU1Bfc2V0X3N0YXR1c19pbmZvOworKwkJRVZQX1BLRVlfa2V5Z2VuOworKwkJRVZQX0RpZ2VzdFNpZ25Jbml0OworKwkJVFNfQUNDVVJBQ1lfc2V0X21pbGxpczsKKysJCVRTX1JFUV9kdXA7CisrCQlHRU5FUkFMX05BTUVfZHVwOworKwkJQVNOMV9TRVFVRU5DRV9BTllfaXQ7CisrCQlXSElSTFBPT0w7CisrCQlYNTA5X1NUT1JFX2dldDFfY3JsczsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGg7CisrCQlFVlBfUEtFWV9hc24xX25ldzsKKysJCUJJT19uZXdfTkRFRjsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoOworKwkJVFNfTVNHX0lNUFJJTlRfc2V0X2FsZ287CisrCQlpMmRfVFNfVFNUX0lORk9fYmlvOworKwkJVFNfVFNUX0lORk9fc2V0X29yZGVyaW5nOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9PQko7CisrCQlDUllQVE9fVEhSRUFESURfc2V0X3BvaW50ZXI7CisrCQlUU19DT05GX2dldF90c2Ffc2VjdGlvbjsKKysJCVNNSU1FX3dyaXRlX0FTTjE7CisrCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2tleTsKKysJCUVWUF9QS0VZX2VuY3J5cHRfb2xkOworKwkJRVZQX1BLRVlfZW5jcnlwdF9pbml0OworKwkJQ1JZUFRPX1RIUkVBRElEX2NweTsKKysJCUFTTjFfUENUWF9nZXRfY2VydF9mbGFnczsKKysJCWkyZF9FU1NfU0lHTklOR19DRVJUOworKwkJVFNfQ09ORl9sb2FkX2tleTsKKysJCWkyZF9BU04xX1NFUVVFTkNFX0FOWTsKKysJCWQyaV9UU19NU0dfSU1QUklOVF9iaW87CisrCQlFVlBfUEtFWV9hc24xX3NldF9wdWJsaWM7CisrCQliMmlfUHVibGljS2V5X2JpbzsKKysJCUJJT19hc24xX3NldF9wcmVmaXg7CisrCQlFVlBfUEtFWV9uZXdfbWFjX2tleTsKKysJCUJJT19uZXdfQ01TOworKwkJQ1JZUFRPX1RIUkVBRElEX2NtcDsKKysJCVRTX1JFUV9leHRfZnJlZTsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X2ZyZWU7CisrCQlFVlBfUEtFWV9nZXQwX2FzbjE7CisrCQlkMmlfTkVUU0NBUEVfWDUwOTsKKysJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyX2luaXQ7CisrCQlFVlBfUEtFWV9DVFhfc2V0X2RhdGE7CisrCQlFVlBfUEtFWV9rZXlnZW5faW5pdDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zdGF0dXNfaW5mbzsKKysJCVRTX01TR19JTVBSSU5UX2dldF9hbGdvOworKwkJVFNfUkVRX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX0NUWF9jdHJsX3N0cjsKKysJCUVWUF9QS0VZX2dldF9kZWZhdWx0X2RpZ2VzdF9uaWQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M3X3N0cmVhbTsKKysJCVRTX01TR19JTVBSSU5UX3ByaW50X2JpbzsKKysJCUJOX2FzYzJibjsKKysJCVRTX1JFUV9nZXRfcG9saWN5X2lkOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfYXNuMV9tZXRoczsKKysJCUVOR0lORV9zZXRfZGVmX3BrZXlfYXNuMV9tZXRoczsKKysJCWQyaV9UU19BQ0NVUkFDWTsKKysJCURTT19nbG9iYWxfbG9va3VwOworKwkJVFNfQ09ORl9zZXRfdHNhX25hbWU7CisrCQlpMmRfQVNOMV9TRVRfQU5ZOworKwkJRU5HSU5FX2xvYWRfZ29zdDsKKysJCVdISVJMUE9PTF9CaXRVcGRhdGU7CisrCQlBU04xX1BDVFhfZ2V0X2ZsYWdzOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9OSUQ7CisrCQlUU19SRVNQX25ldzsKKysJCUVTU19DRVJUX0lEX2R1cDsKKysJCVRTX1NUQVRVU19JTkZPX2R1cDsKKysJCVRTX1JFUV9kZWxldGVfZXh0OworKwkJRVZQX0RpZ2VzdFZlcmlmeUZpbmFsOworKwkJRVZQX1BLRVlfcHJpbnRfcGFyYW1zOworKwkJaTJkX0NNU19iaW9fc3RyZWFtOworKwkJVFNfUkVRX2dldF9tc2dfaW1wcmludDsKKysJCU9CSl9maW5kX3NpZ2lkX2J5X2FsZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfc2VyaWFsOworKwkJVFNfUkVRX2dldF9ub25jZTsKKysJCVg1MDlfUFVCS0VZX3NldDBfcGFyYW07CisrCQlFVlBfUEtFWV9DVFhfc2V0MF9rZXlnZW5faW5mbzsKKysJCURJU1RfUE9JTlRfc2V0X2RwbmFtZTsKKysJCWkyZF9JU1NVSU5HX0RJU1RfUE9JTlQ7CisrCQlBU04xX1NFVF9BTllfaXQ7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2RhdGE7CisrCQlUU19TVEFUVVNfSU5GT19wcmludF9iaW87CisrCQlFVlBfUEtFWV9kZXJpdmVfaW5pdDsKKysJCWQyaV9UU19UU1RfSU5GTzsKKysJCUVWUF9QS0VZX2FzbjFfYWRkX2FsaWFzOworKwkJZDJpX1RTX1JFU1BfYmlvOworKwkJT1RIRVJOQU1FX2NtcDsKKysJCUdFTkVSQUxfTkFNRV9zZXQwX3ZhbHVlOworKwkJUEtDUzdfUkVDSVBfSU5GT19nZXQwX2FsZzsKKysJCVRTX1JFU1BfQ1RYX25ldzsKKysJCVRTX1JFU1Bfc2V0X3RzdF9pbmZvOworKwkJUEtDUzdfZmluYWw7CisrCQlFVlBfUEtFWV9iYXNlX2lkOworKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9jZXJ0OworKwkJVFNfUkVRX3NldF9tc2dfaW1wcmludDsKKysJCUVWUF9QS0VZX0NUWF9jdHJsOworKwkJVFNfQ09ORl9zZXRfZGlnZXN0czsKKysJCWQyaV9UU19NU0dfSU1QUklOVDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2N0cmw7CisrCQlUU19SRVFfZ2V0X2V4dF9ieV9OSUQ7CisrCQlQS0NTNV9wYmVfc2V0MF9hbGdvcjsKKysJCUJOX0JMSU5ESU5HX3RocmVhZF9pZDsKKysJCVRTX0FDQ1VSQUNZX25ldzsKKysJCVg1MDlfQ1JMX01FVEhPRF9mcmVlOworKwkJQVNOMV9QQ1RYX2dldF9ubV9mbGFnczsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ247CisrCQlDUllQVE9fVEhSRUFESURfY3VycmVudDsKKysJCUVWUF9QS0VZX2RlY3J5cHRfaW5pdDsKKysJCU5FVFNDQVBFX1g1MDlfZnJlZTsKKysJCWkyYl9QVktfYmlvOworKwkJRVZQX1BLRVlfcHJpbnRfcHJpdmF0ZTsKKysJCUdFTkVSQUxfTkFNRV9nZXQwX3ZhbHVlOworKwkJYjJpX1BWS19iaW87CisrCQlBU04xX1VUQ1RJTUVfYWRqOworKwkJVFNfVFNUX0lORk9fbmV3OworKwkJRVZQX01EX2RvX2FsbF9zb3J0ZWQ7CisrCQlUU19DT05GX3NldF9kZWZhdWx0X2VuZ2luZTsKKysJCVRTX0FDQ1VSQUNZX3NldF9zZWNvbmRzOworKwkJVFNfVFNUX0lORk9fZ2V0X3RpbWU7CisrCQlQS0NTOF9wa2V5X2dldDA7CisrCQlFVlBfUEtFWV9hc24xX2dldDA7CisrCQlPQkpfYWRkX3NpZ2lkOworKwkJUEtDUzdfU0lHTkVSX0lORk9fc2lnbjsKKysJCUVWUF9QS0VZX3BhcmFtZ2VuX2luaXQ7CisrCQlFVlBfUEtFWV9zaWduOworKwkJT0JKX3NpZ2lkX2ZyZWU7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9pbml0OworKwkJZDJpX0VTU19JU1NVRVJfU0VSSUFMOworKwkJSVNTVUlOR19ESVNUX1BPSU5UX25ldzsKKysJCUFTTjFfVElNRV9hZGo7CisrCQlUU19PQkpfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5X3JlY292ZXI7CisrCQlFVlBfUEtFWV9tZXRoX3NldF92cmZ5X3JlY292ZXI7CisrCQlUU19SRVNQX2dldF9zdGF0dXNfaW5mbzsKKysJCUNNU19zdHJlYW07CisrCQlFVlBfUEtFWV9DVFhfc2V0X2NiOworKwkJUEtDUzdfdG9fVFNfVFNUX0lORk87CisrCQlBU04xX1BDVFhfZ2V0X29pZF9mbGFnczsKKysJCVRTX1RTVF9JTkZPX2FkZF9leHQ7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9kZXJpdmU7CisrCQlpMmRfVFNfUkVTUF9mcDsKKysJCWkyZF9UU19NU0dfSU1QUklOVF9iaW87CisrCQlUU19SRVNQX0NUWF9zZXRfYWNjdXJhY3k7CisrCQlUU19SRVFfc2V0X25vbmNlOworKwkJRVNTX0NFUlRfSURfbmV3OworKwkJRU5HSU5FX3BrZXlfYXNuMV9maW5kX3N0cjsKKysJCVRTX1JFUV9nZXRfZXh0X2NvdW50OworKwkJQlVGX3JldmVyc2U7CisrCQlUU19UU1RfSU5GT19wcmludF9iaW87CisrCQlkMmlfSVNTVUlOR19ESVNUX1BPSU5UOworKwkJRU5HSU5FX2dldF9wa2V5X21ldGhzOworKwkJaTJiX1ByaXZhdGVLZXlfYmlvOworKwkJaTJkX1RTX1JFU1A7CisrCQliMmlfUHVibGljS2V5OworKwkJVFNfVkVSSUZZX0NUWF9jbGVhbnVwOworKwkJVFNfU1RBVFVTX0lORk9fZnJlZTsKKysJCVRTX1JFU1BfdmVyaWZ5X3Rva2VuOworKwkJT0JKX2JzZWFyY2hfZXhfOworKwkJQVNOMV9ibl9wcmludDsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0X2NvdW50OworKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfYXNuMV9tZXRoczsKKysJCUFTTjFfUENUWF9zZXRfbm1fZmxhZ3M7CisrCQlFVlBfRGlnZXN0VmVyaWZ5SW5pdDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X21ldGhzOworKwkJVFNfVFNUX0lORk9fZ2V0X3BvbGljeV9pZDsKKysJCVRTX1JFUV9nZXRfY2VydF9yZXE7CisrCQlYNTA5X0NSTF9zZXRfbWV0aF9kYXRhOworKwkJUEtDUzhfcGtleV9zZXQwOworKwkJQVNOMV9TVFJJTkdfY29weTsKKysJCWQyaV9UU19UU1RfSU5GT19mcDsKKysJCVg1MDlfQ1JMX21hdGNoOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHJpdmF0ZTsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfZDJpOworKwkJVFNfUkVTUF9DVFhfYWRkX3BvbGljeTsKKysJCWQyaV9UU19SRVNQOworKwkJVFNfQ09ORl9sb2FkX2NlcnRzOworKwkJVFNfVFNUX0lORk9fZ2V0X21zZ19pbXByaW50OworKwkJRVJSX2xvYWRfVFNfc3RyaW5nczsKKysJCVRTX1RTVF9JTkZPX2dldF92ZXJzaW9uOworKwkJRVZQX1BLRVlfQ1RYX2R1cDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeTsKKysJCWkyYl9QdWJsaWNLZXlfYmlvOworKwkJVFNfQ09ORl9zZXRfY2VydHM7CisrCQlFVlBfUEtFWV9hc24xX2dldDBfaW5mbzsKKysJCVRTX1ZFUklGWV9DVFhfZnJlZTsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJVFNfUkVTUF9DVFhfc2V0X3NlcmlhbF9jYjsKKysJCVg1MDlfQ1JMX2dldF9tZXRoX2RhdGE7CisrCQlUU19SRVNQX0NUWF9zZXRfdGltZV9jYjsKKysJCVRTX01TR19JTVBSSU5UX2dldF9tc2c7CisrCQlUU19UU1RfSU5GT19leHRfZnJlZTsKKysJCVRTX1JFUV9nZXRfdmVyc2lvbjsKKysJCVRTX1JFUV9hZGRfZXh0OworKwkJRVZQX1BLRVlfQ1RYX3NldF9hcHBfZGF0YTsKKysJCU9CSl9ic2VhcmNoXzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeWN0eDsKKysJCWkyZF9QS0NTN19iaW9fc3RyZWFtOworKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9udW1lcmljOworKwkJUEtDUzdfc2lnbl9hZGRfc2lnbmVyOworKwkJZDJpX1RTX1RTVF9JTkZPX2JpbzsKKysJCVRTX1RTVF9JTkZPX2dldF9vcmRlcmluZzsKKysJCVRTX1JFU1BfcHJpbnRfYmlvOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dHM7CisrCQlITUFDX0NUWF9jb3B5OworKwkJUEtDUzVfcGJlMl9zZXRfaXY7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoczsKKysJCWIyaV9Qcml2YXRlS2V5OworKwkJRVZQX1BLRVlfQ1RYX2dldF9hcHBfZGF0YTsKKysJCVRTX1JFUV9zZXRfY2VydF9yZXE7CisrCQlDUllQVE9fVEhSRUFESURfc2V0X2NhbGxiYWNrOworKwkJVFNfQ09ORl9zZXRfc2VyaWFsOworKwkJVFNfVFNUX0lORk9fZnJlZTsKKysJCWQyaV9UU19SRVFfZnA7CisrCQlUU19SRVNQX3ZlcmlmeV9yZXNwb25zZTsKKysJCWkyZF9FU1NfSVNTVUVSX1NFUklBTDsKKysJCVRTX0FDQ1VSQUNZX2dldF9zZWNvbmRzOworKwkJRVZQX0NJUEhFUl9kb19hbGw7CisrCQliMmlfUHJpdmF0ZUtleV9iaW87CisrCQlPQ1NQX0NFUlRJRF9kdXA7CisrCQlYNTA5X1BVQktFWV9nZXQwX3BhcmFtOworKwkJVFNfTVNHX0lNUFJJTlRfZHVwOworKwkJUEtDUzdfcHJpbnRfY3R4OworKwkJaTJkX1RTX1JFUV9iaW87CisrCQlFVlBfd2hpcmxwb29sOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfcGFyYW07CisrCQlFVlBfUEtFWV9tZXRoX3NldF9lbmNyeXB0OworKwkJQVNOMV9QQ1RYX3NldF9mbGFnczsKKysJCWkyZF9FU1NfQ0VSVF9JRDsKKysJCVRTX1ZFUklGWV9DVFhfbmV3OworKwkJVFNfUkVTUF9DVFhfc2V0X2V4dGVuc2lvbl9jYjsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9tZXRoczsKKysJCVRTX1JFU1BfQ1RYX3NldF9zdGF0dXNfaW5mb19jb25kOworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXRfaW5mb19jb25kOworKwkJRVZQX1BLRVlfdmVyaWZ5OworKwkJV0hJUkxQT09MX0ZpbmFsOworKwkJWDUwOV9DUkxfTUVUSE9EX25ldzsKKysJCUVWUF9EaWdlc3RTaWduRmluYWw7CisrCQlUU19SRVNQX0NUWF9zZXRfZGVmX3BvbGljeTsKKysJCU5FVFNDQVBFX1g1MDlfaXQ7CisrCQlUU19SRVNQX2NyZWF0ZV9yZXNwb25zZTsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX2dldDBfYWxnczsKKysJCVRTX1RTVF9JTkZPX2dldF9ub25jZTsKKysJCUVWUF9QS0VZX2RlY3J5cHRfb2xkOworKwkJVFNfVFNUX0lORk9fc2V0X3BvbGljeV9pZDsKKysJCVRTX0NPTkZfc2V0X2Vzc19jZXJ0X2lkX2NoYWluOworKwkJRVZQX1BLRVlfQ1RYX2dldDBfcGtleTsKKysJCWQyaV9UU19SRVE7CisrCQlFVlBfUEtFWV9hc24xX2ZpbmRfc3RyOworKwkJQklPX2ZfYXNuMTsKKysJCUVTU19TSUdOSU5HX0NFUlRfbmV3OworKwkJRVZQX1BCRV9maW5kOworKwkJWDUwOV9DUkxfZ2V0MF9ieV9jZXJ0OworKwkJRVZQX1BLRVlfZGVyaXZlOworKwkJaTJkX1RTX1JFUTsKKysJCVRTX1RTVF9JTkZPX2RlbGV0ZV9leHQ7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9mcmVlOworKwkJQVNOMV9QQ1RYX3NldF9zdHJfZmxhZ3M7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX3N0cjsKKysJCVRTX0NPTkZfc2V0X3NpZ25lcl9rZXk7CisrCQlUU19BQ0NVUkFDWV9nZXRfbWlsbGlzOworKwkJVFNfUkVTUF9nZXRfdG9rZW47CisrCQlUU19BQ0NVUkFDWV9kdXA7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfYXNuMV9tZXRoczsKKysJCUVOR0lORV9yZWdfYWxsX3BrZXlfYXNuMV9tZXRoczsKKysJCVg1MDlfQ1JMX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUNSWVBUT19USFJFQURJRF9oYXNoOworKwkJQ01TX0NvbnRlbnRJbmZvX3ByaW50X2N0eDsKKysJCVRTX1JFU1BfZnJlZTsKKysJCUlTU1VJTkdfRElTVF9QT0lOVF9mcmVlOworKwkJRVNTX0lTU1VFUl9TRVJJQUxfbmV3OworKwkJQ01TX2FkZDFfY3JsOworKwkJUEtDUzdfYWRkMV9hdHRyaWJfZGlnZXN0OworKwkJVFNfUkVTUF9DVFhfYWRkX21kOworKwkJVFNfVFNUX0lORk9fZHVwOworKwkJRU5HSU5FX3NldF9wa2V5X2FzbjFfbWV0aHM7CisrCQlQRU1fd3JpdGVfYmlvX1BhcmFtZXRlcnM7CisrCQlUU19UU1RfSU5GT19nZXRfYWNjdXJhY3k7CisrCQlYNTA5X0NSTF9nZXQwX2J5X3NlcmlhbDsKKysJCVRTX1RTVF9JTkZPX3NldF92ZXJzaW9uOworKwkJVFNfUkVTUF9DVFhfZ2V0X3RzdF9pbmZvOworKwkJVFNfUkVTUF92ZXJpZnlfc2lnbmF0dXJlOworKwkJQ1JZUFRPX1RIUkVBRElEX2dldF9jYWxsYmFjazsKKysJCVRTX1RTVF9JTkZPX2dldF90c2E7CisrCQlUU19TVEFUVVNfSU5GT19uZXc7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2NiOworKwkJVFNfUkVRX2dldF9leHRfZDJpOworKwkJR0VORVJBTF9OQU1FX3NldDBfb3RoZXJuYW1lOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9jb3VudDsKKysJCVRTX1JFU1BfQ1RYX2dldF9yZXF1ZXN0OworKwkJaTJkX05FVFNDQVBFX1g1MDk7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aF9lbmdpbmU7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduY3R4OworKwkJRVZQX1BLRVlfYXNuMV9jb3B5OworKwkJQVNOMV9UWVBFX2NtcDsKKysJCUVWUF9DSVBIRVJfZG9fYWxsX3NvcnRlZDsKKysJCUVWUF9QS0VZX0NUWF9mcmVlOworKwkJSVNTVUlOR19ESVNUX1BPSU5UX2l0OworKwkJZDJpX1RTX01TR19JTVBSSU5UX2ZwOworKwkJWDUwOV9TVE9SRV9nZXQxX2NlcnRzOworKwkJRVZQX1BLRVlfQ1RYX2dldF9vcGVyYXRpb247CisrCQlkMmlfRVNTX1NJR05JTkdfQ0VSVDsKKysJCVRTX0NPTkZfc2V0X29yZGVyaW5nOworKwkJRVZQX1BCRV9hbGdfYWRkX3R5cGU7CisrCQlUU19SRVFfc2V0X3ZlcnNpb247CisrCQlFVlBfUEtFWV9nZXQwOworKwkJQklPX2FzbjFfc2V0X3N1ZmZpeDsKKysJCWkyZF9UU19TVEFUVVNfSU5GTzsKKysJCUVWUF9NRF9kb19hbGw7CisrCQlUU19UU1RfSU5GT19zZXRfYWNjdXJhY3k7CisrCQlQS0NTN19hZGRfYXR0cmliX2NvbnRlbnRfdHlwZTsKKysJCUVSUl9yZW1vdmVfdGhyZWFkX3N0YXRlOworKwkJRVZQX1BLRVlfbWV0aF9hZGQwOworKwkJVFNfVFNUX0lORk9fc2V0X3RzYTsKKysJCUVWUF9QS0VZX21ldGhfbmV3OworKwkJV0hJUkxQT09MX1VwZGF0ZTsKKysJCVRTX0NPTkZfc2V0X2FjY3VyYWN5OworKwkJQVNOMV9QQ1RYX3NldF9vaWRfZmxhZ3M7CisrCQlFU1NfU0lHTklOR19DRVJUX2R1cDsKKysJCWQyaV9UU19SRVFfYmlvOworKwkJWDUwOV90aW1lX2Fkal9leDsKKysJCVRTX1JFU1BfQ1RYX2FkZF9mbGFnczsKKysJCWQyaV9UU19TVEFUVVNfSU5GTzsKKysJCVRTX01TR19JTVBSSU5UX3NldF9tc2c7CisrCQlCSU9fYXNuMV9nZXRfc3VmZml4OworKwkJVFNfUkVRX2ZyZWU7CisrCQlFVlBfUEtFWV9tZXRoX2ZyZWU7CisrCQlUU19SRVFfZ2V0X2V4dHM7CisrCQlUU19SRVNQX0NUWF9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKKysJCVRTX1JFU1BfQ1RYX3NldF9jbGtfcHJlY19kaWdpdHM7CisrCQlUU19SRVNQX0NUWF9hZGRfZmFpbHVyZV9pbmZvOworKwkJaTJkX1RTX1JFU1BfYmlvOworKwkJRVZQX1BLRVlfQ1RYX2dldDBfcGVlcmtleTsKKysJCVBFTV93cml0ZV9iaW9fQ01TX3N0cmVhbTsKKysJCVRTX1JFUV9uZXc7CisrCQlUU19NU0dfSU1QUklOVF9uZXc7CisrCQlFVlBfUEtFWV9tZXRoX2ZpbmQ7CisrCQlFVlBfUEtFWV9pZDsKKysJCVRTX1RTVF9JTkZPX3NldF9zZXJpYWw7CisrCQlhMmlfR0VORVJBTF9OQU1FOworKwkJVFNfQ09ORl9zZXRfY3J5cHRvX2RldmljZTsKKysJCUVWUF9QS0VZX3ZlcmlmeV9pbml0OworKwkJVFNfQ09ORl9zZXRfcG9saWNpZXM7CisrCQlBU04xX1BDVFhfbmV3OworKwkJRVNTX0NFUlRfSURfZnJlZTsKKysJCUVOR0lORV91bnJlZ2lzdGVyX3BrZXlfbWV0aHM7CisrCQlUU19NU0dfSU1QUklOVF9mcmVlOworKwkJVFNfVkVSSUZZX0NUWF9pbml0OworKwkJUEtDUzdfc3RyZWFtOworKwkJVFNfUkVTUF9DVFhfc2V0X2NlcnRzOworKwkJVFNfQ09ORl9zZXRfZGVmX3BvbGljeTsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2FkajsKKysJCU5FVFNDQVBFX1g1MDlfbmV3OworKwkJVFNfQUNDVVJBQ1lfZnJlZTsKKysJCVRTX1JFU1BfZ2V0X3RzdF9pbmZvOworKwkJRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyOworKwkJUEVNX3JlYWRfYmlvX1BhcmFtZXRlcnM7CisrCQlUU19DT05GX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOworKwkJVFNfQ09ORl9zZXRfY2xrX3ByZWNfZGlnaXRzOworKwkJRVNTX0lTU1VFUl9TRVJJQUxfZHVwOworKwkJVFNfQUNDVVJBQ1lfZ2V0X21pY3JvczsKKysJCUFTTjFfUENUWF9nZXRfc3RyX2ZsYWdzOworKwkJTkFNRV9DT05TVFJBSU5UU19jaGVjazsKKysJCUFTTjFfQklUX1NUUklOR19jaGVjazsKKysJCVg1MDlfY2hlY2tfYWtpZDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX3BrZXlfYXNuMV9tZXRoczsKKysJCUVOR0lORV91bnJlZ19wa2V5X2FzbjFfbWV0aHM7CisrCQlBU04xX1BDVFhfZnJlZTsKKysJCVBFTV93cml0ZV9iaW9fQVNOMV9zdHJlYW07CisrCQlpMmRfQVNOMV9iaW9fc3RyZWFtOworKwkJVFNfWDUwOV9BTEdPUl9wcmludF9iaW87CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jbGVhbnVwOworKwkJRVZQX1BLRVlfYXNuMV9mcmVlOworKwkJRVNTX1NJR05JTkdfQ0VSVF9mcmVlOworKwkJVFNfVFNUX0lORk9fc2V0X21zZ19pbXByaW50OworKwkJR0VORVJBTF9OQU1FX2NtcDsKKysJCWQyaV9BU04xX1NFVF9BTlk7CisrCQlFTkdJTkVfc2V0X3BrZXlfbWV0aHM7CisrCQlpMmRfVFNfUkVRX2ZwOworKwkJZDJpX0FTTjFfU0VRVUVOQ0VfQU5ZOworKwkJR0VORVJBTF9OQU1FX2dldDBfb3RoZXJOYW1lOworKwkJZDJpX0VTU19DRVJUX0lEOworKwkJT0JKX2ZpbmRfc2lnaWRfYWxnczsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2tleWdlbjsKKysJCVBLQ1M1X1BCS0RGMl9ITUFDOworKwkJRVZQX1BLRVlfcGFyYW1nZW47CisrCQlFVlBfUEtFWV9tZXRoX3NldF9wYXJhbWdlbjsKKysJCUJJT19uZXdfUEtDUzc7CisrCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3ZlcjsKKysJCVRTX2V4dF9wcmludF9iaW87CisrCQlUU19BU04xX0lOVEVHRVJfcHJpbnRfYmlvOworKwkJY2hlY2tfZGVmZXI7CisrCQlEU09fcGF0aGJ5YWRkcjsKKysJCUVWUF9QS0VZX3NldF90eXBlOworKwkJVFNfQUNDVVJBQ1lfc2V0X21pY3JvczsKKysJCVRTX1JFUV90b19UU19WRVJJRllfQ1RYOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY29weTsKKysJCUFTTjFfUENUWF9zZXRfY2VydF9mbGFnczsKKysJCVRTX1RTVF9JTkZPX2dldF9leHQ7CisrCQlFVlBfUEtFWV9hc24xX3NldF9jdHJsOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCUVWUF9QS0VZX0NUWF9uZXdfaWQ7CisrCQlUU19SRVFfZ2V0X2V4dF9ieV9PQko7CisrCQlUU19DT05GX3NldF9zaWduZXJfY2VydDsKKysJCVg1MDlfTkFNRV9oYXNoX29sZDsKKysJCUFTTjFfVElNRV9zZXRfc3RyaW5nOworKwkJRVZQX01EX2ZsYWdzOworKwkJVFNfUkVTUF9DVFhfZnJlZTsKKysJCURTQXBhcmFtc19kdXA7CisrCQlESHBhcmFtc19kdXA7CisrCQlPQ1NQX1JFUV9DVFhfYWRkMV9oZWFkZXI7CisrCQlPQ1NQX1JFUV9DVFhfc2V0MV9yZXE7CisrCQlYNTA5X1NUT1JFX3NldF92ZXJpZnlfY2I7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfY3JsOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJlbnRfY3R4OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2lzc3VlcjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VyX2lzc3VlcjsKKysJCVg1MDlfaXNzdWVyX25hbWVfaGFzaF9vbGQ7CisrCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoX29sZDsKKysJCUVWUF9DSVBIRVJfQ1RYX2NvcHk7CisrCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RvcjsKKysJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdHI7CisrCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RvcjsKKysJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdHI7CisrCQlFVlBfcmVhZF9wd19zdHJpbmdfbWluOworKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2NmYjEyOF8xX2VuY3J5cHQ7CisrCQlDUllQVE9fY2JjMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY3RyMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fb2ZiMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY3RzMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fY3RzMTI4X2VuY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fY2JjMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fY2ZiMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY2ZiMTI4XzhfZW5jcnlwdDsKKysJCVNTTF9yZW5lZ290aWF0ZV9hYmJyZXZpYXRlZDsKKysJCVRMU3YxXzFfbWV0aG9kOworKwkJVExTdjFfMV9jbGllbnRfbWV0aG9kOworKwkJVExTdjFfMV9zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYjsKKysJCVNTTF9nZXRfc3JwX2c7CisrCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWVfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9zcnBfdW5fY2I7CisrCQlTU0xfZ2V0X3NycF91c2VyaW5mbzsKKysJCVNTTF9zZXRfc3JwX3NlcnZlcl9wYXJhbTsKKysJCVNTTF9zZXRfc3JwX3NlcnZlcl9wYXJhbV9wdzsKKysJCVNTTF9nZXRfc3JwX047CisrCQlTU0xfZ2V0X3NycF91c2VybmFtZTsKKysJCVNTTF9DVFhfc2V0X3NycF9wYXNzd29yZDsKKysJCVNTTF9DVFhfc2V0X3NycF9zdHJlbmd0aDsKKysJCVNTTF9DVFhfc2V0X3NycF92ZXJpZnlfcGFyYW1fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9zcnBfdmZ5X3BhcmFtX2NiOworKwkJU1NMX0NUWF9zZXRfc3JwX2NiX2FyZzsKKysJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZTsKKysJCVNTTF9DVFhfU1JQX0NUWF9pbml0OworKwkJU1NMX1NSUF9DVFhfaW5pdDsKKysJCVNSUF9DYWxjX0FfcGFyYW07CisrCQlTUlBfZ2VuZXJhdGVfc2VydmVyX21hc3Rlcl9zZWNyZXQ7CisrCQlTUlBfZ2VuX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OworKwkJU1NMX0NUWF9TUlBfQ1RYX2ZyZWU7CisrCQlTUlBfZ2VuZXJhdGVfY2xpZW50X21hc3Rlcl9zZWNyZXQ7CisrCQlTUlBfZ2VuX2NsaWVudF9tYXN0ZXJfc2VjcmV0OworKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91c2VybmFtZTsKKysJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdW47CisrCQlTU0xfU1JQX0NUWF9mcmVlOworKwkJU1NMX3NldF9kZWJ1ZzsKKysJCVNTTF9TRVNTSU9OX2dldDBfcGVlcjsKKysJCVRMU3YxXzJfY2xpZW50X21ldGhvZDsKKysJCVNTTF9TRVNTSU9OX3NldDFfaWRfY29udGV4dDsKKysJCVRMU3YxXzJfc2VydmVyX21ldGhvZDsKKysJCVNTTF9jYWNoZV9oaXQ7CisrCQlTU0xfZ2V0MF9rc3NsX2N0eDsKKysJCVNTTF9zZXQwX2tzc2xfY3R4OworKwkJU1NMX3NldF9zdGF0ZTsKKysJCVNTTF9DSVBIRVJfZ2V0X2lkOworKwkJVExTdjFfMl9tZXRob2Q7CisrCQlrc3NsX2N0eF9nZXQwX2NsaWVudF9wcmluYzsKKysJCVNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsOworKwkJU1NMX3NldF90bHNleHRfdXNlX3NydHA7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VkX2NiOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2X2NiOworKwkJU1NMX2dldDBfbmV4dF9wcm90b19uZWdvdGlhdGVkOworKwkJU1NMX2dldF9zZWxlY3RlZF9zcnRwX3Byb2ZpbGU7CisrCQlTU0xfQ1RYX3NldF90bHNleHRfdXNlX3NydHA7CisrCQlTU0xfc2VsZWN0X25leHRfcHJvdG87CisrCQlTU0xfZ2V0X3NydHBfcHJvZmlsZXM7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYjsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsX2NiOworKwkJU1NMX1NFU1NJT05fZ2V0X2NvbXByZXNzX2lkOworKworKwkJU1JQX1ZCQVNFX2dldF9ieV91c2VyOworKwkJU1JQX0NhbGNfc2VydmVyX2tleTsKKysJCVNSUF9jcmVhdGVfdmVyaWZpZXI7CisrCQlTUlBfY3JlYXRlX3ZlcmlmaWVyX0JOOworKwkJU1JQX0NhbGNfdTsKKysJCVNSUF9WQkFTRV9mcmVlOworKwkJU1JQX0NhbGNfY2xpZW50X2tleTsKKysJCVNSUF9nZXRfZGVmYXVsdF9nTjsKKysJCVNSUF9DYWxjX3g7CisrCQlTUlBfQ2FsY19COworKwkJU1JQX1ZCQVNFX25ldzsKKysJCVNSUF9jaGVja19rbm93bl9nTl9wYXJhbTsKKysJCVNSUF9DYWxjX0E7CisrCQlTUlBfVmVyaWZ5X0FfbW9kX047CisrCQlTUlBfVkJBU0VfaW5pdDsKKysJCVNSUF9WZXJpZnlfQl9tb2RfTjsKKysJCUVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXM7CisrCQlFQ19LRVlfc2V0X3B1Yl9rZXlfYWZmX2Nvb3JkczsKKysJCUVWUF9hZXNfMTkyX2N0cjsKKysJCUVWUF9QS0VZX21ldGhfZ2V0MF9pbmZvOworKwkJRVZQX1BLRVlfbWV0aF9jb3B5OworKwkJRVJSX2FkZF9lcnJvcl92ZGF0YTsKKysJCUVWUF9hZXNfMTI4X2N0cjsKKysJCUVWUF9hZXNfMjU2X2N0cjsKKysJCUVDX0dGcF9uaXN0cDIyNF9tZXRob2Q7CisrCQlFQ19LRVlfZ2V0X2ZsYWdzOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTU19tZ2YxOworKwkJRVZQX2Flc18xMjhfeHRzOworKwkJRVZQX2Flc18yNTZfeHRzOworKwkJRVZQX2Flc18xMjhfZ2NtOworKwkJRUNfS0VZX2NsZWFyX2ZsYWdzOworKwkJRUNfS0VZX3NldF9mbGFnczsKKysJCUVWUF9hZXNfMjU2X2NjbTsKKysJCVJTQV92ZXJpZnlfUEtDUzFfUFNTX21nZjE7CisrCQlFVlBfYWVzXzEyOF9jY207CisrCQlFVlBfYWVzXzE5Ml9nY207CisrCQlYNTA5X0FMR09SX3NldF9tZDsKKysJCVJBTkRfaW5pdF9maXBzOworKwkJRVZQX2Flc18yNTZfZ2NtOworKwkJRVZQX2Flc18xOTJfY2NtOworKwkJQ01BQ19DVFhfY29weTsKKysJCUNNQUNfQ1RYX2ZyZWU7CisrCQlDTUFDX0NUWF9nZXQwX2NpcGhlcl9jdHg7CisrCQlDTUFDX0NUWF9jbGVhbnVwOworKwkJQ01BQ19Jbml0OworKwkJQ01BQ19VcGRhdGU7CisrCQlDTUFDX3Jlc3VtZTsKKysJCUNNQUNfQ1RYX25ldzsKKysJCUNNQUNfRmluYWw7CisrCQlDUllQVE9fY3RyMTI4X2VuY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X3JlbGVhc2U7CisrCQlDUllQVE9fY2NtMTI4X2RlY3J5cHRfY2NtNjQ7CisrCQlDUllQVE9fY2NtMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9feHRzMTI4X2VuY3J5cHQ7CisrCQlFVlBfcmM0X2htYWNfbWQ1OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdF9ibG9jazsKKysJCUNSWVBUT19nY20xMjhfc2V0aXY7CisrCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0OworKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMTsKKysJCUNSWVBUT19nY20xMjhfdGFnOworKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0X2NjbTY0OworKwkJRU5HSU5FX2xvYWRfcmRyYW5kOworKwkJQ1JZUFRPX2NjbTEyOF9zZXRpdjsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fZ2NtMTI4X2FhZDsKKysJCUNSWVBUT19jY20xMjhfaW5pdDsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fZ2NtMTI4X25ldzsKKysJCUNSWVBUT19jY20xMjhfdGFnOworKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2NjbTEyOF9hYWQ7CisrCQlDUllQVE9fZ2NtMTI4X2luaXQ7CisrCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHQ7CisrCQlFTkdJTkVfbG9hZF9yc2F4OworKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyOworKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyOworKwkJQ1JZUFRPX2djbTEyOF9maW5pc2g7CisrCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGExOworKwkJUEtDUzVfcGJrZGYyX3NldDsKKysJCUNNU19hZGQwX3JlY2lwaWVudF9wYXNzd29yZDsKKysJCUNNU19kZWNyeXB0X3NldDFfcGFzc3dvcmQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX3Bhc3N3b3JkOworKwkJUkFORF9zZXRfZmlwc19kcmJnX3R5cGU7CisrCQlYNTA5X1JFUV9zaWduX2N0eDsKKysJCVJTQV9QU1NfUEFSQU1TX25ldzsKKysJCVg1MDlfQ1JMX3NpZ25fY3R4OworKwkJWDUwOV9zaWduYXR1cmVfZHVtcDsKKysJCWQyaV9SU0FfUFNTX1BBUkFNUzsKKysJCVJTQV9QU1NfUEFSQU1TX2l0OworKwkJUlNBX1BTU19QQVJBTVNfZnJlZTsKKysJCVg1MDlfc2lnbl9jdHg7CisrCQlpMmRfUlNBX1BTU19QQVJBTVM7CisrCQlBU04xX2l0ZW1fc2lnbl9jdHg7CisrCQlFQ19HRnBfbmlzdHA1MjFfbWV0aG9kOworKwkJRUNfR0ZwX25pc3RwMjU2X21ldGhvZDsKKysJCU9QRU5TU0xfc3RkZXJyOworKwkJT1BFTlNTTF9jcHVpZF9zZXR1cDsKKysJCU9QRU5TU0xfc2hvd2ZhdGFsOworKwkJQklPX25ld19kZ3JhbV9zY3RwOworKwkJQklPX2RncmFtX3NjdHBfbXNnX3dhaXRpbmc7CisrCQlCSU9fZGdyYW1fc2N0cF93YWl0X2Zvcl9kcnk7CisrCQlCSU9fc19kYXRhZ3JhbV9zY3RwOworKwkJQklPX2RncmFtX2lzX3NjdHA7CisrCQlCSU9fZGdyYW1fc2N0cF9ub3RpZmljYXRpb25fY2I7CisrCQlDUllQVE9fbWVtY21wOworKwkJU1NMX0NUWF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfc2V0X2FscG5fcHJvdG9zOworKwkJU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2I7CisrCQlTU0xfZ2V0MF9hbHBuX3NlbGVjdGVkOworKwkJU1NMX0NUWF9zZXRfY3VzdG9tX2NsaV9leHQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fc3J2X2V4dDsKKysJCVNTTF9DVFhfc2V0X3Nydl9zdXBwX2RhdGE7CisrCQlTU0xfQ1RYX3NldF9jbGlfc3VwcF9kYXRhOworKwkJU1NMX3NldF9jZXJ0X2NiOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mbzsKKysJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm9fZmlsZTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX2dldDBfcGFyYW07CisrCQlTU0xfZ2V0MF9wYXJhbTsKKysJCVNTTF9jZXJ0c19jbGVhcjsKKysJCURUTFN2MV8yX21ldGhvZDsKKysJCURUTFN2MV8yX3NlcnZlcl9tZXRob2Q7CisrCQlEVExTdjFfMl9jbGllbnRfbWV0aG9kOworKwkJRFRMU19tZXRob2Q7CisrCQlEVExTX3NlcnZlcl9tZXRob2Q7CisrCQlEVExTX2NsaWVudF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldF9zc2xfbWV0aG9kOworKwkJU1NMX0NUWF9nZXQwX2NlcnRpZmljYXRlOworKwkJU1NMX0NUWF9nZXQwX3ByaXZhdGVrZXk7CisrCQlTU0xfQ09NUF9zZXQwX2NvbXByZXNzaW9uX21ldGhvZHM7CisrCQlTU0xfQ09NUF9mcmVlX2NvbXByZXNzaW9uX21ldGhvZHM7CisrCQlTU0xfQ0lQSEVSX2ZpbmQ7CisrCQlTU0xfaXNfc2VydmVyOworKwkJU1NMX0NPTkZfQ1RYX25ldzsKKysJCVNTTF9DT05GX0NUWF9maW5pc2g7CisrCQlTU0xfQ09ORl9DVFhfZnJlZTsKKysJCVNTTF9DT05GX0NUWF9zZXRfZmxhZ3M7CisrCQlTU0xfQ09ORl9DVFhfY2xlYXJfZmxhZ3M7CisrCQlTU0xfQ09ORl9DVFhfc2V0MV9wcmVmaXg7CisrCQlTU0xfQ09ORl9DVFhfc2V0X3NzbDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsX2N0eDsKKysJCVNTTF9DT05GX2NtZDsKKysJCVNTTF9DT05GX2NtZF9hcmd2OworKwkJU1NMX0NPTkZfY21kX3ZhbHVlX3R5cGU7CisrCQlTU0xfdHJhY2U7CisrCQlTU0xfQ0lQSEVSX3N0YW5kYXJkX25hbWU7CisrCQlTU0xfZ2V0X3Rsc2FfcmVjb3JkX2J5bmFtZTsKKysJCUFTTjFfVElNRV9kaWZmOworKwkJQklPX2hleF9zdHJpbmc7CisrCQlDTVNfUmVjaXBpZW50SW5mb19nZXQwX3BrZXlfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fZW5jcnlwdDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX21kX2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmF0dXJlOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2FsZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9yZWtzOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX29yaWdfaWQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX29yaWdfaWRfY21wOworKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9nZXQwX2lkOworKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9jZXJ0X2NtcDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfc2V0MF9wa2V5OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2N0eDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZGVjcnlwdDsKKysJCUNNU19TaGFyZWRJbmZvX2VuY29kZTsKKysJCURIX2NvbXB1dGVfa2V5X3BhZGRlZDsKKysJCWQyaV9ESHhwYXJhbXM7CisrCQlpMmRfREh4cGFyYW1zOworKwkJREhfZ2V0XzEwMjRfMTYwOworKwkJREhfZ2V0XzIwNDhfMjI0OworKwkJREhfZ2V0XzIwNDhfMjU2OworKwkJREhfS0RGX1g5XzQyOworKwkJRUNESF9LREZfWDlfNjI7CisrCQlFQ0RTQV9NRVRIT0RfbmV3OworKwkJRUNEU0FfTUVUSE9EX2ZyZWU7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX2dldF9hcHBfZGF0YTsKKysJCUVDRFNBX01FVEhPRF9zZXRfc2lnbjsKKysJCUVDRFNBX01FVEhPRF9zZXRfc2lnbl9zZXR1cDsKKysJCUVDRFNBX01FVEhPRF9zZXRfdmVyaWZ5OworKwkJRUNEU0FfTUVUSE9EX3NldF9mbGFnczsKKysJCUVDRFNBX01FVEhPRF9zZXRfbmFtZTsKKysJCUVWUF9kZXNfZWRlM193cmFwOworKwkJRVZQX2Flc18xMjhfd3JhcDsKKysJCUVWUF9hZXNfMTkyX3dyYXA7CisrCQlFVlBfYWVzXzI1Nl93cmFwOworKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMjU2OworKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMjU2OworKwkJQ1JZUFRPXzEyOF93cmFwOworKwkJQ1JZUFRPXzEyOF91bndyYXA7CisrCQlPQ1NQX1JFUV9DVFhfbmJpbzsKKysJCU9DU1BfUkVRX0NUWF9uZXc7CisrCQlPQ1NQX3NldF9tYXhfcmVzcG9uc2VfbGVuZ3RoOworKwkJT0NTUF9SRVFfQ1RYX2kyZDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvX2QyaTsKKysJCU9DU1BfUkVRX0NUWF9nZXQwX21lbV9iaW87CisrCQlPQ1NQX1JFUV9DVFhfaHR0cDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQX21nZjE7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21nZjE7CisrCQlSU0FfT0FFUF9QQVJBTVNfZnJlZTsKKysJCVJTQV9PQUVQX1BBUkFNU19pdDsKKysJCVJTQV9PQUVQX1BBUkFNU19uZXc7CisrCQlTU0xfZ2V0X3NpZ2FsZ3M7CisrCQlTU0xfZ2V0X3NoYXJlZF9zaWdhbGdzOworKwkJU1NMX2NoZWNrX2NoYWluOworKwkJWDUwOV9jaGFpbl91cF9yZWY7CisrCQlYNTA5X2h0dHBfbmJpbzsKKysJCVg1MDlfQ1JMX2h0dHBfbmJpbzsKKysJCVg1MDlfUkVWT0tFRF9kdXA7CisrCQlpMmRfcmVfWDUwOV90YnM7CisrCQlYNTA5X2dldDBfc2lnbmF0dXJlOworKwkJWDUwOV9nZXRfc2lnbmF0dXJlX25pZDsKKysJCVg1MDlfQ1JMX2RpZmY7CisrCQlYNTA5X2NoYWluX2NoZWNrX3N1aXRlYjsKKysJCVg1MDlfQ1JMX2NoZWNrX3N1aXRlYjsKKysJCVg1MDlfY2hlY2tfaG9zdDsKKysJCVg1MDlfY2hlY2tfZW1haWw7CisrCQlYNTA5X2NoZWNrX2lwOworKwkJWDUwOV9jaGVja19pcF9hc2M7CisrCQlYNTA5X1NUT1JFX3NldF9sb29rdXBfY3Jsc19jYjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfc3RvcmU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2hvc3Q7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQxX2hvc3Q7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfaG9zdGZsYWdzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9wZWVybmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfZW1haWw7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcF9hc2M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX25hbWU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfY291bnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwOworKwkJWDUwOVYzX0VYVF9mcmVlOworKwkJRUNfR1JPVVBfZ2V0X21vbnRfZGF0YTsKKysJCUVDX2N1cnZlX25pZDJuaXN0OworKwkJRUNfY3VydmVfbmlzdDJuaWQ7CisrCQlQRU1fd3JpdGVfYmlvX0RIeHBhcmFtczsKKysJCVBFTV93cml0ZV9ESHhwYXJhbXM7CisrCQlTU0xfQ1RYX2FkZF9jbGllbnRfY3VzdG9tX2V4dDsKKysJCVNTTF9DVFhfYWRkX3NlcnZlcl9jdXN0b21fZXh0OworKwkJU1NMX2V4dGVuc2lvbl9zdXBwb3J0ZWQ7CisrCQlCVUZfc3RybmxlbjsKKysJCXNrX2RlZXBfY29weTsKKysJCVNTTF90ZXN0X2Z1bmN0aW9uczsKKysKKysJbG9jYWw6CisrCQkqOworK307CisrCisrT1BFTlNTTF8xLjAuMmcgeworKyAgICAgICBnbG9iYWw6CisrICAgICAgICAgICAgICAgU1JQX1ZCQVNFX2dldDFfYnlfdXNlcjsKKysgICAgICAgICAgICAgICBTUlBfdXNlcl9wd2RfZnJlZTsKKyt9IE9QRU5TU0xfMS4wLjJkOworKworSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjIgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMTAgQEAKKytPUEVOU1NMXzEuMC4yIHsKKysJZ2xvYmFsOgorKwkJYmluZF9lbmdpbmU7CisrCQl2X2NoZWNrOworKwkJT1BFTlNTTF9pbml0OworKwkJT1BFTlNTTF9maW5pc2g7CisrCWxvY2FsOgorKwkJKjsKKyt9OworKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZmluZC5wbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZmluZC5wbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2ZpbmQucGwKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZmluZC5wbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29lLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29lLWxkZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vZS1sZGZsYWdzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29lLWxkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtY19yZWhhc2guc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtY19yZWhhc2guc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyMGZkYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaApAQCAtMCwwICsxLDIyMiBAQAorIyEvYmluL3NoCisjCisjIEJlbiBTZWNyZXN0IDxibHNlY3Jlc0BnbWFpbC5jb20+CisjCisjIHNoIGNfcmVoYXNoIHNjcmlwdCwgc2NhbiBhbGwgZmlsZXMgaW4gYSBkaXJlY3RvcnkKKyMgYW5kIGFkZCBzeW1ib2xpYyBsaW5rcyB0byB0aGVpciBoYXNoIHZhbHVlcy4KKyMKKyMgYmFzZWQgb24gdGhlIGNfcmVoYXNoIHBlcmwgc2NyaXB0IGRpc3RyaWJ1dGVkIHdpdGggb3BlbnNzbAorIworIyBMSUNFTlNFOiBTZWUgT3BlblNTTCBsaWNlbnNlCisjIF5eYWNjZXB0YWJsZT9eXgorIworCisjIGRlZmF1bHQgY2VydGlmaWNhdGUgbG9jYXRpb24KK0RJUj0vZXRjL29wZW5zc2wKKworIyBmb3IgZmlsZXR5cGUgYml0ZmllbGQKK0lTX0NFUlQ9JCgoIDEgPDwgMCApKQorSVNfQ1JMPSQoKCAxIDw8IDEgKSkKKworCisjIGNoZWNrIHRvIHNlZSBpZiBhIGZpbGUgaXMgYSBjZXJ0aWZpY2F0ZSBmaWxlIG9yIGEgQ1JMIGZpbGUKKyMgYXJndW1lbnRzOgorIyAgICAgICAxLiB0aGUgZmlsZW5hbWUgdG8gYmUgc2Nhbm5lZAorIyByZXR1cm5zOgorIyAgICAgICBiaXRmaWVsZCBvZiBmaWxlIHR5cGU7IHVzZXMgJHtJU19DRVJUfSBhbmQgJHtJU19DUkx9CisjCitjaGVja19maWxlKCkKK3sKKyAgICBsb2NhbCBJU19UWVBFPTAKKworICAgICMgbWFrZSBJRlMgYSBuZXdsaW5lIHNvIHdlIGNhbiBwcm9jZXNzIGdyZXAgb3V0cHV0IGxpbmUgYnkgbGluZQorICAgIGxvY2FsIE9MRElGUz0ke0lGU30KKyAgICBJRlM9JCggcHJpbnRmICJcbiIgKQorCisgICAgIyBYWFg6IGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IHRvIGhhdmUgdHdvICdncmVwIC1tJyBidXQgaXMgLW0gcG9ydGFibGU/CisgICAgZm9yIExJTkUgaW4gJCggZ3JlcCAnXi0tLS0tQkVHSU4gLiotLS0tLScgJHsxfSApCisgICAgZG8KKwlpZiBlY2hvICR7TElORX0gXAorCSAgICB8IGdyZXAgLXEgLUUgJ14tLS0tLUJFR0lOIChYNTA5IHxUUlVTVEVEICk/Q0VSVElGSUNBVEUtLS0tLScKKwl0aGVuCisJICAgIElTX1RZUEU9JCgoICR7SVNfVFlQRX0gfCAke0lTX0NFUlR9ICkpCisKKwkgICAgaWYgWyAkKCggJHtJU19UWVBFfSAmICR7SVNfQ1JMfSApKSAtbmUgMCBdCisJICAgIHRoZW4KKwkgICAgCWJyZWFrCisJICAgIGZpCisJZWxpZiBlY2hvICR7TElORX0gfCBncmVwIC1xICdeLS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tJworCXRoZW4KKwkgICAgSVNfVFlQRT0kKCggJHtJU19UWVBFfSB8ICR7SVNfQ1JMfSApKQorCisJICAgIGlmIFsgJCgoICR7SVNfVFlQRX0gJiAke0lTX0NFUlR9ICkpIC1uZSAwIF0KKwkgICAgdGhlbgorCSAgICAJYnJlYWsKKwkgICAgZmkKKwlmaQorICAgIGRvbmUKKworICAgICMgcmVzdG9yZSBJRlMKKyAgICBJRlM9JHtPTERJRlN9CisKKyAgICByZXR1cm4gJHtJU19UWVBFfQorfQorCisKKyMKKyMgdXNlIG9wZW5zc2wgdG8gZmluZ2VycHJpbnQgYSBmaWxlCisjICAgIGFyZ3VtZW50czoKKyMJMS4gdGhlIGZpbGVuYW1lIHRvIGZpbmdlcnByaW50CisjCTIuIHRoZSBtZXRob2QgdG8gdXNlICh4NTA5LCBjcmwpCisjICAgIHJldHVybnM6CisjCW5vbmUKKyMgICAgYXNzdW1wdGlvbnM6CisjCXVzZXIgd2lsbCBjYXB0dXJlIG91dHB1dCBmcm9tIGxhc3Qgc3RhZ2Ugb2YgcGlwZWxpbmUKKyMKK2ZpbmdlcnByaW50KCkKK3sKKyAgICAke1NTTF9DTUR9ICR7Mn0gLWZpbmdlcnByaW50IC1ub291dCAtaW4gJHsxfSB8IHNlZCAncy9eLio9Ly8nIHwgdHIgLWQgJzonCit9CisKKworIworIyBsaW5rX2hhc2ggLSBjcmVhdGUgbGlua3MgdG8gY2VydGlmaWNhdGUgZmlsZXMKKyMgICAgYXJndW1lbnRzOgorIyAgICAgICAxLiB0aGUgZmlsZW5hbWUgdG8gY3JlYXRlIGEgbGluayBmb3IKKyMJMi4gdGhlIHR5cGUgb2YgY2VydGlmaWNhdGUgYmVpbmcgbGlua2VkICh4NTA5LCBjcmwpCisjICAgIHJldHVybnM6CisjCTAgb24gc3VjY2VzcywgMSBvdGhlcndpc2UKKyMKK2xpbmtfaGFzaCgpCit7CisgICAgbG9jYWwgRklOR0VSUFJJTlQ9JCggZmluZ2VycHJpbnQgJHsxfSAkezJ9ICkKKyAgICBsb2NhbCBIQVNIPSQoICR7U1NMX0NNRH0gJHsyfSAtaGFzaCAtbm9vdXQgLWluICR7MX0gKQorICAgIGxvY2FsIFNVRkZJWD0wCisgICAgbG9jYWwgTElOS0ZJTEU9JycKKyAgICBsb2NhbCBUQUc9JycKKworICAgIGlmIFsgJHsyfSA9ICJjcmwiIF0KKyAgICB0aGVuCisgICAgCVRBRz0ncicKKyAgICBmaQorCisgICAgTElOS0ZJTEU9JHtIQVNIfS4ke1RBR30ke1NVRkZJWH0KKworICAgIHdoaWxlIFsgLWYgJHtMSU5LRklMRX0gXQorICAgIGRvCisJaWYgWyAke0ZJTkdFUlBSSU5UfSA9ICQoIGZpbmdlcnByaW50ICR7TElOS0ZJTEV9ICR7Mn0gKSBdCisJdGhlbgorCSAgICBlY2hvICJOT1RFOiBTa2lwcGluZyBkdXBsaWNhdGUgZmlsZSAkezF9IiA+JjIKKwkgICAgcmV0dXJuIDEKKwlmaQkKKworCVNVRkZJWD0kKCggJHtTVUZGSVh9ICsgMSApKQorCUxJTktGSUxFPSR7SEFTSH0uJHtUQUd9JHtTVUZGSVh9CisgICAgZG9uZQorCisgICAgZWNobyAiJHszfSA9PiAke0xJTktGSUxFfSIKKworICAgICMgYXNzdW1lIGFueSBzeXN0ZW0gd2l0aCBhIFBPU0lYIHNoZWxsIHdpbGwgZWl0aGVyIHN1cHBvcnQgc3ltbGlua3Mgb3IKKyAgICAjIGRvIHNvbWV0aGluZyB0byBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5CisgICAgbG4gLXMgJHszfSAke0xJTktGSUxFfQorCisgICAgcmV0dXJuIDAKK30KKworCisjIGhhc2hfZGlyIGNyZWF0ZSBoYXNoIGxpbmtzIGluIGEgZ2l2ZW4gZGlyZWN0b3J5CitoYXNoX2RpcigpCit7CisgICAgZWNobyAiRG9pbmcgJHsxfSIKKworICAgIGNkICR7MX0KKworICAgIGxzIC0xICogMj4vZGV2L251bGwgfCB3aGlsZSByZWFkIEZJTEUKKyAgICBkbworICAgICAgICBpZiBlY2hvICR7RklMRX0gfCBncmVwIC1xIC1FICdeW1s6eGRpZ2l0Ol1dezh9XC5yP1tbOmRpZ2l0Ol1dKyQnIFwKKwkgICAgCSYmIFsgLWggIiR7RklMRX0iIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcm0gJHtGSUxFfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGxzIC0xICoucGVtICouY2VyICouY3J0ICouY3JsIDI+L2Rldi9udWxsIHwgd2hpbGUgcmVhZCBGSUxFCisgICAgZG8KKwlSRUFMX0ZJTEU9JHtGSUxFfQorCSMgaWYgd2UgcnVuIG9uIGJ1aWxkIGhvc3QgdGhlbiBnZXQgdG8gdGhlIHJlYWwgZmlsZXMgaW4gcm9vdGZzCisJaWYgWyAtbiAiJHtTWVNST09UfSIgLWEgLWggJHtGSUxFfSBdCisJdGhlbgorCSAgICBGSUxFPSQoIHJlYWRsaW5rICR7RklMRX0gKQorCSAgICAjIGNoZWNrIHRoZSBzeW1saW5rIGlzIGFic29sdXRlIChvciBkYW5nbGluZyBpbiBvdGhlciB3b3JkKQorCSAgICBpZiBbICJ4LyIgPSAieCQoIGVjaG8gJHtGSUxFfSB8IGN1dCAtYzEgLSkiIF0KKwkgICAgdGhlbgorCQlSRUFMX0ZJTEU9JHtTWVNST09UfS8ke0ZJTEV9CisJICAgIGZpCisJZmkKKworCWNoZWNrX2ZpbGUgJHtSRUFMX0ZJTEV9CisgICAgICAgIGxvY2FsIEZJTEVfVFlQRT0kez99CisJbG9jYWwgVFlQRV9TVFI9JycKKworICAgICAgICBpZiBbICQoKCAke0ZJTEVfVFlQRX0gJiAke0lTX0NFUlR9ICkpIC1uZSAwIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgICAgVFlQRV9TVFI9J3g1MDknCisgICAgICAgIGVsaWYgWyAkKCggJHtGSUxFX1RZUEV9ICYgJHtJU19DUkx9ICkpIC1uZSAwIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgICAgVFlQRV9TVFI9J2NybCcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWNobyAiTk9URTogJHtGSUxFfSBkb2VzIG5vdCBjb250YWluIGEgY2VydGlmaWNhdGUgb3IgQ1JMOiBza2lwcGluZyIgPiYyCisJICAgIGNvbnRpbnVlCisgICAgICAgIGZpCisKKwlsaW5rX2hhc2ggJHtSRUFMX0ZJTEV9ICR7VFlQRV9TVFJ9ICR7RklMRX0KKyAgICBkb25lCit9CisKKworIyBjaG9vc2UgdGhlIG5hbWUgb2YgYW4gc3NsIGFwcGxpY2F0aW9uCitpZiBbIC1uICIke09QRU5TU0x9IiBdCit0aGVuCisgICAgU1NMX0NNRD0kKHdoaWNoICR7T1BFTlNTTH0gMj4vZGV2L251bGwpCitlbHNlCisgICAgU1NMX0NNRD0vdXNyL2Jpbi9vcGVuc3NsCisgICAgT1BFTlNTTD0ke1NTTF9DTUR9CisgICAgZXhwb3J0IE9QRU5TU0wKK2ZpCisKKyMgZml4IHBhdGhzCitQQVRIPSR7UEFUSH06JHtESVJ9L2JpbgorZXhwb3J0IFBBVEgKKworIyBjb25maXJtIGV4aXN0YW5jZS9leGVjdXRhYmlsaXR5IG9mIHNzbCBjb21tYW5kCitpZiAhIFsgLXggJHtTU0xfQ01EfSBdCit0aGVuCisgICAgZWNobyAiJHswfTogcmVoYXNoaW5nIHNraXBwZWQgKCdvcGVuc3NsJyBwcm9ncmFtIG5vdCBhdmFpbGFibGUpIiA+JjIKKyAgICBleGl0IDAKK2ZpCisKKyMgZGV0ZXJtaW5lIHdoaWNoIGRpcmVjdG9yaWVzIHRvIHByb2Nlc3MKK29sZF9JRlM9JElGUworaWYgWyAkeyN9IC1ndCAwIF0KK3RoZW4KKyAgICBJRlM9JzonCisgICAgRElSTElTVD0keyp9CitlbGlmIFsgLW4gIiR7U1NMX0NFUlRfRElSfSIgXQordGhlbgorICAgIERJUkxJU1Q9JFNTTF9DRVJUX0RJUgorZWxzZQorICAgIERJUkxJU1Q9JHtESVJ9L2NlcnRzCitmaQorCitJRlM9JzonCisKKyMgcHJvY2VzcyBkaXJlY3RvcmllcworZm9yIENFUlRfRElSIGluICR7RElSTElTVH0KK2RvCisgICAgaWYgWyAtZCAke0NFUlRfRElSfSAtYSAtdyAke0NFUlRfRElSfSBdCisgICAgdGhlbgorICAgICAgICBJRlM9JG9sZF9JRlMKKyAgICAgICAgaGFzaF9kaXIgJHtDRVJUX0RJUn0KKyAgICAgICAgSUZTPSc6JworICAgIGZpCitkb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wYXJhbGxlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQxM2JmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wYXJhbGxlbC5wYXRjaApAQCAtMCwwICsxLDM3MCBAQAorRnJvbSA3ZmIxMTkyZjExMmMxOTIwYmZkMzlmNDE4NWYzNGU5YWZmZjNjZmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFNhdCwgNSBNYXIgMjAxNiAwMDoxMjowMiArMDAwMAorU3ViamVjdDogW1BBVENIIDI0LzI4XSBGaXggdGhlIHBhcmFsbGVsIHJhY2VzIGluIHRoZSBNYWtlZmlsZXMuCisKK1RoaXMgcGF0Y2ggd2FzIHRha2VuIGZyb20gdGhlIEdlbnRvbyBwYWNrYWdpbmc6CitodHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC9wbGFpbi9kZXYtbGlicy9vcGVuc3NsL2ZpbGVzL29wZW5zc2wtMS4wLjJnLXBhcmFsbGVsLWJ1aWxkLnBhdGNoCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworUmVmcmVzaGVkIGZvciAxLjAuMmkKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKworLS0tCisgTWFrZWZpbGUub3JnICAgICAgICAgIHwgIDE0ICstCisgTWFrZWZpbGUub3JnLm9yaWcgICAgIHwgIDEwICstCisgTWFrZWZpbGUuc2hhcmVkICAgICAgIHwgICAyICsKKyBNYWtlZmlsZS5zaGFyZWQub3JpZyAgfCA2NTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBjcnlwdG8vTWFrZWZpbGUgICAgICAgfCAgMTAgKy0KKyBlbmdpbmVzL01ha2VmaWxlICAgICAgfCAgIDYgKy0KKyBlbmdpbmVzL01ha2VmaWxlLm9yaWcgfCAzMzggKysrKysrKysrKysrKysrKysrKysrKysrKysKKyB0ZXN0L01ha2VmaWxlICAgICAgICAgfCAgOTIgKysrLS0tLQorIHRlc3QvTWFrZWZpbGUub3JpZyAgICB8ICA4OCArKysrLS0tCisgOSBmaWxlcyBjaGFuZ2VkLCAxMTA4IGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUuc2hhcmVkLm9yaWcKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZW5naW5lcy9NYWtlZmlsZS5vcmlnCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmcgYi9NYWtlZmlsZS5vcmcKK2luZGV4IDhlNzkzNmMuLmVkOThkMmEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5vcmcKKysrKyBiL01ha2VmaWxlLm9yZworQEAgLTI4MywxNyArMjgzLDE3IEBAIGJ1aWxkX2xpYmNyeXB0bzogYnVpbGRfY3J5cHRvIGJ1aWxkX2VuZ2luZXMgbGliY3J5cHRvLnBjCisgYnVpbGRfbGlic3NsOiBidWlsZF9zc2wgbGlic3NsLnBjCisgCisgYnVpbGRfY3J5cHRvOgorLQlAZGlyPWNyeXB0bzsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorKwkrQGRpcj1jcnlwdG87IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF9zc2w6IGJ1aWxkX2NyeXB0bworLQlAZGlyPXNzbDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorKwkrQGRpcj1zc2w7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF9lbmdpbmVzOiBidWlsZF9jcnlwdG8KKy0JQGRpcj1lbmdpbmVzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPWVuZ2luZXM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF9hcHBzOiBidWlsZF9saWJzCistCUBkaXI9YXBwczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorKwkrQGRpcj1hcHBzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisgYnVpbGRfdGVzdHM6IGJ1aWxkX2xpYnMKKy0JQGRpcj10ZXN0OyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPXRlc3Q7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF90b29sczogYnVpbGRfbGlicworLQlAZGlyPXRvb2xzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPXRvb2xzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisgCisgYWxsX3Rlc3RhcHBzOiBidWlsZF9saWJzIGJ1aWxkX3Rlc3RhcHBzCisgYnVpbGRfdGVzdGFwcHM6CitAQCAtNTY1LDcgKzU2NSw3IEBAIGluc3RhbGxfc3c6CisgCShjcCAkJGkgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGk7IFwKKyAJY2htb2QgNjQ0ICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpICk7IFwKKyAJZG9uZTsKKy0JQHNldCAtZTsgdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX0JVSUxEX0NNRCkKKysJK0BzZXQgLWU7IHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9CVUlMRF9DTUQpCisgCUBzZXQgLWU7IGxpYmxpc3Q9IiQoTElCUykiOyBmb3IgaSBpbiAkJGxpYmxpc3QgO1wKKyAJZG8gXAorIAkJaWYgWyAtZiAiJCRpIiBdOyB0aGVuIFwKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5zaGFyZWQgYi9NYWtlZmlsZS5zaGFyZWQKK2luZGV4IGY2ZjkyZTcuLjgxNjQxODYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5zaGFyZWQKKysrKyBiL01ha2VmaWxlLnNoYXJlZAorQEAgLTEwNSw2ICsxMDUsNyBAQCBMSU5LX1NPPQlcCisgICAgIFNIQVJFREZMQUdTPSIkKE9FX0xERkxBR1MpICQke1NIQVJFREZMQUdTOi0kKENGTEFHUykgJChTSEFSRURfTERGTEFHUyl9IjsgXAorICAgICBMSUJQQVRIPWBmb3IgeCBpbiAkJExJQkRFUFM7IGRvIGVjaG8gJCR4OyBkb25lIHwgc2VkIC1lICdzL14gKi1MLy87dCcgLWUgZCB8IHVuaXFgOyBcCisgICAgIExJQlBBVEg9YGVjaG8gJCRMSUJQQVRIIHwgc2VkIC1lICdzLyAvOi9nJ2A7IFwKKysgICAgWyAtZSAkJFNITElCJCRTSExJQl9TT1ZFUiQkU0hMSUJfU1VGRklYIF0gJiYgZXhpdCAwOyBcCisgICAgIExEX0xJQlJBUllfUEFUSD0kJExJQlBBVEg6JCRMRF9MSUJSQVJZX1BBVEggXAorICAgICAkJHtTSEFSRURDTUR9ICQke1NIQVJFREZMQUdTfSBcCisgCS1vICQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVggXAorQEAgLTEyMiw2ICsxMjMsNyBAQCBTWU1MSU5LX1NPPQlcCisgCQkJZG9uZTsgXAorIAkJZmk7IFwKKyAJCWlmIFsgLW4gIiQkU0hMSUJfU09WRVIiIF07IHRoZW4gXAorKwkJCVsgLWUgIiQkU0hMSUIkJFNITElCX1NVRkZJWCIgXSB8fCBcCisgCQkJKCAkKFNFVF9YKTsgcm0gLWYgJCRTSExJQiQkU0hMSUJfU1VGRklYOyBcCisgCQkJICBsbiAtcyAkJHByZXYgJCRTSExJQiQkU0hMSUJfU1VGRklYICk7IFwKKyAJCWZpOyBcCitkaWZmIC0tZ2l0IGEvY3J5cHRvL01ha2VmaWxlIGIvY3J5cHRvL01ha2VmaWxlCitpbmRleCAxN2E4N2Y4Li4yOWMyZGNmIDEwMDY0NAorLS0tIGEvY3J5cHRvL01ha2VmaWxlCisrKysgYi9jcnlwdG8vTWFrZWZpbGUKK0BAIC04NSwxMSArODUsMTEgQEAgdGVzdGFwcHM6CisgCUBpZiBbIC16ICIkKFRISVMpIiBdOyB0aGVuICQoTUFLRSkgLWYgJChUT1ApL01ha2VmaWxlIHJlZmxlY3QgVEhJUz0kQDsgZmkKKyAKKyBzdWJkaXJzOgorLQlAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorIAorIGZpbGVzOgorIAkkKFBFUkwpICQoVE9QKS91dGlsL2ZpbGVzLnBsICJDUFVJRF9PQko9JChDUFVJRF9PQkopIiBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KKy0JQHRhcmdldD1maWxlczsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9ZmlsZXM7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgbGlua3M6CisgCUAkKFBFUkwpICQoVE9QKS91dGlsL21rbGluay5wbCAuLi9pbmNsdWRlL29wZW5zc2wgJChFWEhFQURFUikKK0BAIC0xMDAsNyArMTAwLDcgQEAgbGlua3M6CisgIyBsaWI6ICQoTElCKTogYXJlIHNwbGl0dGVkIHRvIGF2b2lkIGVuZC1sZXNzIGxvb3AKKyBsaWI6CSQoTElCKQorIAlAdG91Y2ggbGliCistJChMSUIpOgkkKExJQk9CSikKKyskKExJQik6CSQoTElCT0JKKSB8IHN1YmRpcnMKKyAJJChBUikgJChMSUIpICQoTElCT0JKKQorIAl0ZXN0IC16ICIkKEZJUFNMSUJESVIpIiB8fCAkKEFSKSAkKExJQikgJChGSVBTTElCRElSKWZpcHNjYW5pc3Rlci5vCisgCSQoUkFOTElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5kLgorQEAgLTExMSw3ICsxMTEsNyBAQCBzaGFyZWQ6IGJ1aWxkaW5mLmggbGliIHN1YmRpcnMKKyAJZmkKKyAKKyBsaWJzOgorLQlAdGFyZ2V0PWxpYjsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQorIAorIGluc3RhbGw6CisgCUBbIC1uICIkKElOU1RBTExUT1ApIiBdICMgc2hvdWxkIGJlIHNldCBieSB0b3AgTWFrZWZpbGUuLi4KK0BAIC0xMjAsNyArMTIwLDcgQEAgaW5zdGFsbDoKKyAJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAorIAljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAorIAlkb25lOworLQlAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCisrCStAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgbGludDoKKyAJQHRhcmdldD1saW50OyAkKFJFQ1VSU0lWRV9NQUtFKQorZGlmZiAtLWdpdCBhL2VuZ2luZXMvTWFrZWZpbGUgYi9lbmdpbmVzL01ha2VmaWxlCitpbmRleCBmZThlOWNhLi5hNDNkMjFiIDEwMDY0NAorLS0tIGEvZW5naW5lcy9NYWtlZmlsZQorKysrIGIvZW5naW5lcy9NYWtlZmlsZQorQEAgLTcyLDcgKzcyLDcgQEAgdG9wOgorIAorIGFsbDoJbGliIHN1YmRpcnMKKyAKKy1saWI6CSQoTElCT0JKKQorK2xpYjoJJChMSUJPQkopIHwgc3ViZGlycworIAlAaWYgWyAtbiAiJChTSEFSRURfTElCUykiIF07IHRoZW4gXAorIAkJc2V0IC1lOyBcCisgCQlmb3IgbCBpbiAkKExJQk5BTUVTKTsgZG8gXAorQEAgLTg5LDcgKzg5LDcgQEAgbGliOgkkKExJQk9CSikKKyAKKyBzdWJkaXJzOgorIAllY2hvICQoRURJUlMpCistCUB0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgZmlsZXM6CisgCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCitAQCAtMTI4LDcgKzEyOCw3IEBAIGluc3RhbGw6CisgCQkJICBtdiAtZiAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIpL3NzbC9lbmdpbmVzLyQkcGZ4JCRsJCRzZngubmV3ICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvc3NsL2VuZ2luZXMvJCRwZngkJGwkJHNmeCApOyBcCisgCQlkb25lOyBcCisgCWZpCistCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyB0YWdzOgorIAljdGFncyAkKFNSQykKK2RpZmYgLS1naXQgYS90ZXN0L01ha2VmaWxlIGIvdGVzdC9NYWtlZmlsZQoraW5kZXggNDBhYmQ2MC4uNzhkMzc4OCAxMDA2NDQKKy0tLSBhL3Rlc3QvTWFrZWZpbGUKKysrKyBiL3Rlc3QvTWFrZWZpbGUKK0BAIC0xNDUsNyArMTQ1LDcgQEAgaW5zdGFsbDoKKyB0YWdzOgorIAljdGFncyAkKFNSQykKKyAKKy10ZXN0czoJZXhlIGFwcHMgJChURVNUUykKKyt0ZXN0czoJZXhlICQoVEVTVFMpCisgCisgYXBwczoKKyAJQChjZCAuLjsgJChNQUtFKSBESVJTPWFwcHMgYWxsKQorQEAgLTQ0NCwxMzkgKzQ0NCwxMzkgQEAgQlVJTERfQ01EX1NUQVRJQz1zaGxpYl90YXJnZXQ9OyBcCisgCQlsaW5rX2FwcC4kJHtzaGxpYl90YXJnZXR9CisgCisgJChSU0FURVNUKSQoRVhFX0VYVCk6ICQoUlNBVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSU0FURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoUlNBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoQk5URVNUKSQoRVhFX0VYVCk6ICQoQk5URVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEJOVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEJOVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRUNURVNUKSQoRVhFX0VYVCk6ICQoRUNURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVDVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVDVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRVhQVEVTVCkkKEVYRV9FWFQpOiAkKEVYUFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRVhQVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVYUFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKElERUFURVNUKSQoRVhFX0VYVCk6ICQoSURFQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSURFQVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChJREVBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUQyVEVTVCkkKEVYRV9FWFQpOiAkKE1EMlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTUQyVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1EMlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQVRFU1QpJChFWEVfRVhUKTogJChTSEFURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNIQVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChTSEExVEVTVCkkKEVYRV9FWFQpOiAkKFNIQTFURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNIQTFURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoU0hBMVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQTI1NlRFU1QpJChFWEVfRVhUKTogJChTSEEyNTZURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNIQTI1NlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEEyNTZURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChTSEE1MTJURVNUKSQoRVhFX0VYVCk6ICQoU0hBNTEyVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChTSEE1MTJURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoU0hBNTEyVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUk1EVEVTVCkkKEVYRV9FWFQpOiAkKFJNRFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUk1EVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJNRFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKE1EQzJURVNUKSQoRVhFX0VYVCk6ICQoTURDMlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTURDMlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChNREMyVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUQ0VEVTVCkkKEVYRV9FWFQpOiAkKE1ENFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTUQ0VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1ENFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKE1ENVRFU1QpJChFWEVfRVhUKTogJChNRDVURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKE1ENVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChNRDVURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChITUFDVEVTVCkkKEVYRV9FWFQpOiAkKEhNQUNURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEhNQUNURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoSE1BQ1RFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFdQVEVTVCkkKEVYRV9FWFQpOiAkKFdQVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChXUFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChXUFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFJDMlRFU1QpJChFWEVfRVhUKTogJChSQzJURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJDMlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSQzJURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChCRlRFU1QpJChFWEVfRVhUKTogJChCRlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoQkZURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQkZURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChDQVNUVEVTVCkkKEVYRV9FWFQpOiAkKENBU1RURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKENBU1RURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQ0FTVFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFJDNFRFU1QpJChFWEVfRVhUKTogJChSQzRURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJDNFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSQzRURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChSQzVURVNUKSQoRVhFX0VYVCk6ICQoUkM1VEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSQzVURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoUkM1VEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoREVTVEVTVCkkKEVYRV9FWFQpOiAkKERFU1RFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoREVTVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERFU1RFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFJBTkRURVNUKSQoRVhFX0VYVCk6ICQoUkFORFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUkFORFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSQU5EVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoREhURVNUKSQoRVhFX0VYVCk6ICQoREhURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKERIVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERIVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRFNBVEVTVCkkKEVYRV9FWFQpOiAkKERTQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRFNBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERTQVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKE1FVEhURVNUKSQoRVhFX0VYVCk6ICQoTUVUSFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTUVUSFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChNRVRIVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoU1NMVEVTVCkkKEVYRV9FWFQpOiAkKFNTTFRFU1QpLm8gJChETElCU1NMKSAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChTU0xURVNUKTsgJChGSVBTX0JVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTU0xURVNUKTsgJChGSVBTX0JVSUxEX0NNRCkKKyAKKyAkKEVOR0lORVRFU1QpJChFWEVfRVhUKTogJChFTkdJTkVURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVOR0lORVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChFTkdJTkVURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFVlBURVNUKSQoRVhFX0VYVCk6ICQoRVZQVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChFVlBURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRVZQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRVZQRVhUUkFURVNUKSQoRVhFX0VYVCk6ICQoRVZQRVhUUkFURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVWUEVYVFJBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVWUEVYVFJBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRUNEU0FURVNUKSQoRVhFX0VYVCk6ICQoRUNEU0FURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVDRFNBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVDRFNBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoRUNESFRFU1QpJChFWEVfRVhUKTogJChFQ0RIVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChFQ0RIVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVDREhURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChJR0VURVNUKSQoRVhFX0VYVCk6ICQoSUdFVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChJR0VURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoSUdFVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoSlBBS0VURVNUKSQoRVhFX0VYVCk6ICQoSlBBS0VURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEpQQUtFVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEpQQUtFVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoQVNOMVRFU1QpJChFWEVfRVhUKTogJChBU04xVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChBU04xVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEFTTjFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChTUlBURVNUKSQoRVhFX0VYVCk6ICQoU1JQVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChTUlBURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoU1JQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoVjNOQU1FVEVTVCkkKEVYRV9FWFQpOiAkKFYzTkFNRVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoVjNOQU1FVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFYzTkFNRVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEhFQVJUQkVBVFRFU1QpJChFWEVfRVhUKTogJChIRUFSVEJFQVRURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEhFQVJUQkVBVFRFU1QpOyAkKEJVSUxEX0NNRF9TVEFUSUMpCisrCStAdGFyZ2V0PSQoSEVBUlRCRUFUVEVTVCk7ICQoQlVJTERfQ01EX1NUQVRJQykKKyAKKyAkKENPTlNUVElNRVRFU1QpJChFWEVfRVhUKTogJChDT05TVFRJTUVURVNUKS5vCistCUB0YXJnZXQ9JChDT05TVFRJTUVURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChDT05TVFRJTUVURVNUKSAkKEJVSUxEX0NNRCkKKyAKKyAkKFZFUklGWUVYVFJBVEVTVCkkKEVYRV9FWFQpOiAkKFZFUklGWUVYVFJBVEVTVCkubworLQlAdGFyZ2V0PSQoVkVSSUZZRVhUUkFURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChWRVJJRllFWFRSQVRFU1QpICQoQlVJTERfQ01EKQorIAorICQoQ0xJRU5USEVMTE9URVNUKSQoRVhFX0VYVCk6ICQoQ0xJRU5USEVMTE9URVNUKS5vCistCUB0YXJnZXQ9JChDTElFTlRIRUxMT1RFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKENMSUVOVEhFTExPVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChCQUREVExTVEVTVCkkKEVYRV9FWFQpOiAkKEJBRERUTFNURVNUKS5vCistCUB0YXJnZXQ9JChCQUREVExTVEVTVCkgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQkFERFRMU1RFU1QpICQoQlVJTERfQ01EKQorIAorICQoRkFUQUxFUlJURVNUKSQoRVhFX0VYVCk6ICQoRkFUQUxFUlJURVNUKS5vIHNzbHRlc3RsaWIubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKKyAJQHRhcmdldD0kKEZBVEFMRVJSVEVTVCk7IGV4b2JqPXNzbHRlc3RsaWIubzsgJChCVUlMRF9DTUQpCisgCisgJChTU0xWMkNPTkZURVNUKSQoRVhFX0VYVCk6ICQoU1NMVjJDT05GVEVTVCkubworLQlAdGFyZ2V0PSQoU1NMVjJDT05GVEVTVCkgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoU1NMVjJDT05GVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChEVExTVEVTVCkkKEVYRV9FWFQpOiAkKERUTFNURVNUKS5vIHNzbHRlc3RsaWIubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChEVExTVEVTVCk7IGV4b2JqPXNzbHRlc3RsaWIubzsgJChCVUlMRF9DTUQpCisgCisgIyQoQUVTVEVTVCkubzogJChBRVNURVNUKS5jCisgIwkkKENDKSAtYyAkKENGTEFHUykgLURJTlRFUk1FRElBVEVfVkFMVUVfS0FUIC1EVFJBQ0VfS0FUX01DVCAkKEFFU1RFU1QpLmMKK0BAIC01ODksNyArNTg5LDcgQEAgJChEVExTVEVTVCkkKEVYRV9FWFQpOiAkKERUTFNURVNUKS5vIHNzbHRlc3RsaWIubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKKyAjCWZpCisgCisgZHVtbXl0ZXN0JChFWEVfRVhUKTogZHVtbXl0ZXN0Lm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PWR1bW15dGVzdDsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PWR1bW15dGVzdDsgJChCVUlMRF9DTUQpCisgCisgIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgorIAorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3B0ZXN0LWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0LWRlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wdGVzdC1kZXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0LWRlcHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNiMjBmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3J1bi1wdGVzdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorbWFrZSAtayBydW50ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvc2hhcmVkLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3NoYXJlZC1saWJzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvc2hhcmVkLWxpYnMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vc2hhcmVkLWxpYnMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjJhNzk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wgfCBTU0xlYXkiIGR1YWwgbGljZW5zZQotTElDRU5TRSA9ICJvcGVuc3NsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjlhOGY5NjgxMDczNDVlMGI3NWFhOGMyZWNhYTdlYzgiCi0KLURFUEVORFMgPSAibWFrZWRlcGVuZC1uYXRpdmUgaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG9wZW5zc2wtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKLQotUEFDS0FHRUNPTkZJR1twZXJsXSA9ICIsLCwiCi0KLVRFUk1JT19saWJjLW11c2wgPSAiLURURVJNSU9TIgotVEVSTUlPID89ICItRFRFUk1JTyIKLSMgQXZvaWQgYmluYXJpZXMgYmVpbmcgbWFya2VkIGFzIHJlcXVpcmluZyBhbiBleGVjdXRhYmxlIHN0YWNrIHNpbmNlIGl0IAotIyBkb2Vzbid0KHdoaWNoIGNhdXNlcyBhbmQgdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggU0VMaW51eAotQ0ZMQUcgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAotCSAke1RFUk1JT30gJHtDRkxBR1N9IC1XYWxsIC1XYSwtLW5vZXhlY3N0YWNrIgotCi1leHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMiCi1leHBvcnQgRVhfTElCUyA9ICItbGdjYyAtbGRsIgotZXhwb3J0IEFTID0gIiR7Q0N9IC1jIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBzaXRlaW5mbyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QgcmVsYXRpdmVfc3ltbGlua3MKLQotUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgJHtQTn0tbWlzYyBvcGVuc3NsLWNvbmYiCi1GSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKLUZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgotRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLyoiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCBkKX0iCi0KLVBST1ZJREVTICs9ICJvcGVuc3NsMTAiCi0KLSMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gIE1ha2UgdGhlIGxpYmNyeXB0bwotIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KLSMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2Ugc2luY2UgdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgotRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLVJSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LW1pc2MgbWFrZSBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgYmMiCi0KLSMgUmVtb3ZlIHRoaXMgdG8gZW5hYmxlIFNTTHYzLiBTU0x2MyBpcyBkZWZhdWx0ZWQgdG8gZGlzYWJsZWQgZHVlIHRvIHRoZSBQT09ETEUKLSMgdnVsbmVyYWJpbGl0eQotRVhUUkFfT0VDT05GID0gIiAtbm8tc3NsMyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfZGFyd2luICgpIHsKLQlzZWQgLWkgLWUgJy92ZXJzaW9uLXNjcmlwdD1vcGVuc3NsXC5sZC9kJyBDb25maWd1cmUKLX0KLQotZG9fY29uZmlndXJlICgpIHsKLQljZCB1dGlsCi0JcGVybCBwZXJscGF0aC5wbCAke1NUQUdJTkdfQklORElSX05BVElWRX0KLQljZCAuLgotCWxuIC1zZiBhcHBzL29wZW5zc2wucG9kIGNyeXB0by9jcnlwdG8ucG9kIHNzbC9zc2wucG9kIGRvYy8KLQotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LXVjbGliYyB8XAotCWxpbnV4LXVjbGliY2VhYmkgfFwKLQlsaW51eC1nbnVlYWJpIHxcCi0JbGludXgtdWNsaWJjc3BlIHxcCi0JbGludXgtZ251c3BlIHxcCi0JbGludXgtbXVzbCopCi0JCW9zPWxpbnV4Ci0JCTs7Ci0JCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0pCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFybWViKQotCQl0YXJnZXQ9bGludXgtZWxmLWFybWViCi0JCTs7Ci0JbGludXgtYWFyY2g2NCopCi0JCXRhcmdldD1saW51eC1hYXJjaDY0Ci0JCTs7Ci0JbGludXgtc2gzKQotCQl0YXJnZXQ9ZGViaWFuLXNoMwotCQk7OwotCWxpbnV4LXNoNCkKLQkJdGFyZ2V0PWRlYmlhbi1zaDQKLQkJOzsKLQlsaW51eC1pNDg2KQotCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTQ4NgotCQk7OwotCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKLQkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk1ODYKLQkJOzsKLQlsaW51eC1pNjg2KQotCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTY4Ni9jbW92Ci0JCTs7Ci0JbGludXgtZ251eDMyLXg4Nl82NCkKLQkJdGFyZ2V0PWxpbnV4LXgzMgotCQk7OwotCWxpbnV4LWdudTY0LXg4Nl82NCkKLQkJdGFyZ2V0PWxpbnV4LXg4Nl82NAotCQk7OwotCWxpbnV4LWdudW4zMi1taXBzKmVsKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzJlbAotCQk7OwotCWxpbnV4LWdudW4zMi1taXBzKikKLQkJdGFyZ2V0PWRlYmlhbi1taXBzbjMyCi0JCTs7Ci0JbGludXgtbWlwcyo2NCplbCkKLQkJdGFyZ2V0PWRlYmlhbi1taXBzNjRlbAotCQk7OwotCWxpbnV4LW1pcHMqNjQqKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NAotCQk7OwotCWxpbnV4LW1pcHMqZWwpCi0JCXRhcmdldD1kZWJpYW4tbWlwc2VsCi0JCTs7Ci0JbGludXgtbWlwcyopCi0JCXRhcmdldD1kZWJpYW4tbWlwcwotCQk7OwotCWxpbnV4LW1pY3JvYmxhemUqfGxpbnV4LW5pb3MyKikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXBvd2VycGMpCi0JCXRhcmdldD1saW51eC1wcGMKLQkJOzsKLQlsaW51eC1wb3dlcnBjNjQpCi0JCXRhcmdldD1saW51eC1wcGM2NAotCQk7OwotCWxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y4Ci0JCTs7Ci0JbGludXgtc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y4Ci0JCTs7Ci0JZGFyd2luLWkzODYpCi0JCXRhcmdldD1kYXJ3aW4taTM4Ni1jYwotCQk7OwotCWVzYWMKLQkjIGluamVjdCBtYWNoaW5lLXNwZWNpZmljIGZsYWdzCi0Jc2VkIC1pIC1lICJzfF5cKFwiJHRhcmdldFwiLFxzKlwiW146XVwrXCk6XChbXjpdXCtcKXxcMToke0NGTEFHfXxnIiBDb25maWd1cmUKLSAgICAgICAgdXNlcHJlZml4PSR7cHJlZml4fQotICAgICAgICBpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHVzZXByZWZpeD0vCi0gICAgICAgIGZpICAgICAgICAKLQlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSBzaGFyZWQgLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbCAtLWxpYmRpcj1gYmFzZW5hbWUgJHtsaWJkaXJ9YCAkdGFyZ2V0Ci19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotICAgIHNlZCAtaSAncy9cKChPUEVOU1NMPVwpIi4qIi9cMSJvcGVuc3NsIi8nIE1ha2VmaWxlCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgZGVwZW5kCi0Jb2VfcnVubWFrZQotfQotCi1kb19jb21waWxlX3B0ZXN0ICgpIHsKLQkjIGJ1aWxkIGRlcGVuZGVuY2llcyBmb3IgdGVzdCBkaXJlY3RvcnkgdG9vCi0JZXhwb3J0IERJUlM9IiRESVJTIHRlc3QiCi0Jb2VfcnVubWFrZSBkZXBlbmQKLQlvZV9ydW5tYWtlIGJ1aWxkdGVzdAotfQotCi1kb19pbnN0YWxsICgpIHsKLQkjIENyZWF0ZSAke0R9LyR7cHJlZml4fSB0byBmaXggcGFyYWxsZWwgaXNzdWVzCi0JbWtkaXIgLXAgJHtEfS8ke3ByZWZpeH0vCi0KLQlvZV9ydW5tYWtlIElOU1RBTExfUFJFRklYPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgaW5zdGFsbAotCi0Jb2VfbGliaW5zdGFsbCAtc28gbGliY3J5cHRvICR7RH0ke2xpYmRpcn0KLQlvZV9saWJpbnN0YWxsIC1zbyBsaWJzc2wgJHtEfSR7bGliZGlyfQotCi0JaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQotCWNwIC0tZGVyZWZlcmVuY2UgLVIgaW5jbHVkZS9vcGVuc3NsICR7RH0ke2luY2x1ZGVkaXJ9Ci0KLQlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCi0Jc2VkIC1pIC1lICdzLC9ldGMvb3BlbnNzbCwke3N5c2NvbmZkaXJ9L3NzbCxnJyAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvQ0EucGwKLQkJc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKLQllbHNlCi0JCXJtIC1mICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvQ0EucGwgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAotCWZpCi0KLQkjIENyZWF0ZSBTU0wgc3RydWN0dXJlCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2wvCi0JbXYgJHtEfSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzIFwKLQkgICAke0R9JHtsaWJkaXJ9L3NzbC9wcml2YXRlIFwKLQkgICBcCi0JICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLwotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cwotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9wcml2YXRlICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUKLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYgJHtEfSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLXIgLUwgTWFrZWZpbGUub3JnIE1ha2VmaWxlIHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICAgICAjIFJlcGxhY2UgdGhlIHBhdGggdG8gbmF0aXZlIHBlcmwgd2l0aCB0aGUgcGF0aCB0byB0YXJnZXQgcGVybAotICAgICAgICBzZWQgLWkgJ3MsXlBFUkw9LiosUEVSTD0ke2JpbmRpcn0vcGVybCwnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi0KLQljcCBDb25maWd1cmUgY29uZmlnIGVfb3MuaCAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yIC1MIGluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0KLQlsbiAtc2YgJHtsaWJkaXJ9L2xpYmNyeXB0by5hICR7RH0ke1BURVNUX1BBVEh9Ci0JbG4gLXNmICR7bGliZGlyfS9saWJzc2wuYSAke0R9JHtQVEVTVF9QQVRIfQotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bwotCWNwIGNyeXB0by9jb25zdGFudF90aW1lX2xvY2wuaCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KLQljcCAtciBjZXJ0cyAke0R9JHtQVEVTVF9QQVRIfQotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtsaWJkaXJ9L3NzbC9taXNjL0NBLnNoICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtiaW5kaXJ9L29wZW5zc2wgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JY3AgYXBwcy9zZXJ2ZXIucGVtICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JY3AgYXBwcy9zZXJ2ZXIyLnBlbSAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAotCWluc3RhbGwgdXRpbC9vcGVuc3Nsd3JhcC5zaCAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCi0JaW5zdGFsbCB1dGlsL3NobGliX3dyYXAuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKLQkjIFRpbWUgc3RhbXBzIGFyZSByZWxldmFudCBmb3IgIm1ha2UgYWxsdGVzdHMiLCBvdGhlcndpc2UKLQkjIG1ha2UgbWF5IHRyeSB0byByZWNvbXBpbGUgYmluYXJpZXMuIE5vdCBvbmx5IG11c3QgdGhlCi0JIyBiaW5hcnkgZmlsZXMgYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlcywgdGhleSBhbHNvIG11c3QKLQkjIGJlIG1vcmUgcmVjZW50IHRoYW4gdGhlIGhlYWRlciBmaWxlcyBpbiAvdXNyL2luY2x1ZGUuCi0JIwotCSMgVXNpbmcgImNwIC1hIiBpcyBub3Qgc3VmZmljaWVudCwgYmVjYXVzZSBkb19pbnN0YWxsCi0JIyBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgdGltZSBzdGFtcHMuCi0JIwotCSMgU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgb3JpZ2luYWwgZmlsZSBzdGFtcHMsIHdlIHNldAotCSMgdGhlIGN1cnJlbnQgdGltZSBmb3IgYWxsIGZpbGVzLiBCaW5hcmllcyB3aWxsIGdldAotCSMgbW9kaWZpZWQgYWdhaW4gbGF0ZXIgd2hlbiBzdHJpcHBpbmcgdGhlbSwgYnV0IHRoYXQncyBva2F5LgotCXRvdWNoICR7RH0ke1BURVNUX1BBVEh9Ci0JZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1wcmludDAgfCB4YXJncyAtLXZlcmJvc2UgLTAgdG91Y2ggLXIgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3BlbnNzbCBcCi0JICAgIE9QRU5TU0xfQ09ORj0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKLQkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wvY2VydHMgXAotCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wvY2VydC5wZW0gXAotCSAgICBPUEVOU1NMX0VOR0lORVM9JHtsaWJkaXJ9L3NzbC9lbmdpbmVzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZiYjM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gM2ZkYjFlMmExNmVhNDA1YzY3MzE0NDdhODk5NGYyMjI4MDhlZjdlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA3IEFwciAyMDE3IDE4OjAxOjUyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0ZXN0IHRoYXQgcmVxdWlyZXMgcnVubmluZyBhcyBub24tcm9vdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50IHwgMTcgKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAoraW5kZXggZjkwMmMyMy4uYzc1NjdjMSAxMDA2NDQKKy0tLSBhL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50CisrKysgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAorQEAgLTIzLDcgKzIzLDcgQEAgc2V0dXAoInRlc3RfcmVoYXNoIik7CisgcGxhbiBza2lwX2FsbCA9PiAidGVzdF9yZWhhc2ggaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIgorICAgICB1bmxlc3MgcnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgIi1oZWxwIl0pKTsKKyAKKy1wbGFuIHRlc3RzID0+IDU7CisrcGxhbiB0ZXN0cyA9PiAzOworIAorIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7CisgICAgIHByZXBhcmUoKTsKK0BAIC00MiwyMSArNDIsNiBAQCBpbmRpciAicmVoYXNoLiQkIiA9PiBzdWIgeworICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiBlbXB0eSBkaXJlY3RvcnknKTsKKyB9LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOworIAorLWluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7CistICAgIHByZXBhcmUoKTsKKy0gICAgY2htb2QgMDUwMCwgY3VyZGlyKCk7CistICBTS0lQOiB7CistICAgICAgaWYgKCFvayghb3BlbihGT08sICI+dW53cml0YWJsZS50eHQiKSwKKy0gICAgICAgICAgICAgICJUZXN0aW5nIHRoYXQgd2UgYXJlbid0IHJ1bm5pbmcgYXMgYSBwcml2aWxlZ2VkIHVzZXIsIHN1Y2ggYXMgcm9vdCIpKSB7CistICAgICAgICAgIGNsb3NlIEZPTzsKKy0gICAgICAgICAgc2tpcCAiSXQncyBwb2ludGxlc3MgdG8gcnVuIHRoZSBuZXh0IHRlc3QgYXMgcm9vdCIsIDE7CistICAgICAgfQorLSAgICAgIGlzbnQocnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgY3VyZGlyKCldKSksIDEsCistICAgICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiByZWFkb25seSBkaXJlY3RvcnknKTsKKy0gICAgfQorLSAgICBjaG1vZCAwNzAwLCBjdXJkaXIoKTsgICAgICAgIyBtYWtlIGl0IHdyaXRhYmxlIGFnYWluLCBzbyBjbGVhbnVwIHdvcmtzCistfSwgY3JlYXRlID0+IDEsIGNsZWFudXAgPT4gMTsKKy0KKyBzdWIgcHJlcGFyZSB7CisgICAgIG15IEBwZW1zb3VyY2VmaWxlcyA9IHNvcnQgZ2xvYihzcmN0b3BfZmlsZSgndGVzdCcsICIqLnBlbSIpKTsKKyAgICAgbXkgQGRlc3RmaWxlcyA9ICgpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZTRlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAwOGZhY2U0MzUzZDgwMTExOTczYWJhOWMxMzA0YzkyMTU4Y2ZhZDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IE1hciAyMDE3IDE2OjQwOjEyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFRha2UgbGlua2luZyBmbGFncyBmcm9tIExERkxBR1MgZW52IHZhcgorCitUaGlzIGZpeGVzICJObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeSIgaXNzdWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIENvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbCB8IDIgKy0KKyBDb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwgYi9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKK2luZGV4IGMwMjk4MTcuLjQzYjc2OWIgMTAwNjQ0CistLS0gYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKKysrKyBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorQEAgLTE3Myw3ICsxNzMsNyBAQCBDUk9TU19DT01QSUxFPSB7LSAkY29uZmlne2Nyb3NzX2NvbXBpbGVfcHJlZml4fSAtfQorIENDPSAkKENST1NTX0NPTVBJTEUpey0gJHRhcmdldHtjY30gLX0KKyBDRkxBR1M9ey0gb3VyICRjZmxhZ3MyID0gam9pbigiICIsKG1hcCB7ICItRCIuJF99IEB7JHRhcmdldHtkZWZpbmVzfX0sIEB7JGNvbmZpZ3tkZWZpbmVzfX0pLCItRE9QRU5TU0xESVI9XCJcXFwiXCQoT1BFTlNTTERJUilcXFwiXCIiLCItREVOR0lORVNESVI9XCJcXFwiXCQoRU5HSU5FU0RJUilcXFwiXCIiKSAtfSB7LSAkdGFyZ2V0e2NmbGFnc30gLX0gey0gJGNvbmZpZ3tjZmxhZ3N9IC19CisgQ0ZMQUdTX1E9ey0gJGNmbGFnczIgPX4gc3woW1xcIl0pfFxcJDF8ZzsgJGNmbGFnczIgLX0gey0gJGNvbmZpZ3tjZmxhZ3N9IC19CistTERGTEFHUz0gey0gJHRhcmdldHtsZmxhZ3N9IC19CisrTERGTEFHUz0gey0gJHRhcmdldHtsZmxhZ3N9LiIgIi4kRU5WeydMREZMQUdTJ30gLX0KKyBQTElCX0xERkxBR1M9IHstICR0YXJnZXR7cGxpYl9sZmxhZ3N9IC19CisgRVhfTElCUz0gey0gJHRhcmdldHtleF9saWJzfSAtfSB7LSAkY29uZmlne2V4X2xpYnN9IC19CisgTElCX0NGTEFHUz17LSAkdGFyZ2V0e3NoYXJlZF9jZmxhZ30gfHwgIiIgLX0KK2RpZmYgLS1naXQgYS9Db25maWd1cmUgYi9Db25maWd1cmUKK2luZGV4IGFlZTdjYzMuLjI3NGQyMzYgMTAwNzU1CistLS0gYS9Db25maWd1cmUKKysrKyBiL0NvbmZpZ3VyZQorQEAgLTk3OSw3ICs5NzksNyBAQCAkY29uZmlne2J1aWxkX2ZpbGV9ID0gJHRhcmdldHtidWlsZF9maWxlfTsKKyAkY29uZmlne2RlZmluZXN9ID0gW107CisgJGNvbmZpZ3tjZmxhZ3N9ID0gIiI7CisgJGNvbmZpZ3tleF9saWJzfSA9ICIiOworLSRjb25maWd7c2hhcmVkX2xkZmxhZ30gPSAiIjsKKyskY29uZmlne3NoYXJlZF9sZGZsYWd9ID0gJEVOVnsnTERGTEFHUyd9OworIAorICMgTWFrZSBzdXJlIGJ1aWxkX3NjaGVtZSBpcyBjb25zaXN0ZW50LgorICR0YXJnZXR7YnVpbGRfc2NoZW1lfSA9IFsgJHRhcmdldHtidWlsZF9zY2hlbWV9IF0KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMGExNjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoCkBAIC0wLDAgKzEsODggQEAKK0Zyb20gYmNjMDk2YTUwODExYmYwZjBjNGZkMzRiMjk5M2ZlZDdhNzAxNTk3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPgorRGF0ZTogRnJpLCAzIE5vdiAyMDE3IDIzOjMwOjAxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFlcy9hc20ve2Flcy1hcm12NHxic2Flcy1hcm12N30ucGw6IG1ha2UgaXQgd29yayB3aXRoCisgYmludXRpbHMtMi4yOS4KKworSXQncyBub3QgY2xlYXIgaWYgaXQncyBhIGZlYXR1cmUgb3IgYnVnLCBidXQgYmludXRpbHMtMi4yOVsuMV0KK2ludGVycHJldHMgJ2FkcicgaW5zdHJ1Y3Rpb24gd2l0aCBUaHVtYjIgY29kZSByZWZlcmVuY2UgZGlmZmVyZW50bHksCitpbiBhIHdheSB0aGF0IGFmZmVjdHMgY2FsY3VsYXRpb24gb2YgYWRkcmVzc2VzIG9mIGNvbnN0YW50cycgdGFibGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1Jldmlld2VkLWJ5OiBUaW0gSHVkc29uIDx0amhAb3BlbnNzbC5vcmc+CitSZXZpZXdlZC1ieTogQmVybmQgRWRsaW5nZXIgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+CitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KKyhNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNDY2OSkKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYjgyYWNjM2MxYTdmMzA0YzlkZjMxODQxNzUzYTBmYTc2YjViM2NkYSkKKy0tLQorIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCAgIHwgNiArKystLS0KKyBjcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbCB8IDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKK2luZGV4IDE2ZDc5YWFlNTMuLmM2NDc0YjhhYWQgMTAwNjQ0CistLS0gYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKKysrKyBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAorQEAgLTIwMCw3ICsyMDAsNyBAQCBBRVNfZW5jcnlwdDoKKyAjaWZuZGVmCV9fdGh1bWIyX18KKyAJc3ViCXIzLHBjLCM4CQlAIEFFU19lbmNyeXB0CisgI2Vsc2UKKy0JYWRyCXIzLEFFU19lbmNyeXB0CisrCWFkcglyMywuCisgI2VuZGlmCisgCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9CisgI2lmZGVmCV9fQVBQTEVfXworQEAgLTQ1MCw3ICs0NTAsNyBAQCBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKKyAjaWZuZGVmCV9fdGh1bWIyX18KKyAJc3ViCXIzLHBjLCM4CQlAIEFFU19zZXRfZW5jcnlwdF9rZXkKKyAjZWxzZQorLQlhZHIJcjMsQUVTX3NldF9lbmNyeXB0X2tleQorKwlhZHIJcjMsLgorICNlbmRpZgorIAl0ZXEJcjAsIzAKKyAjaWZkZWYJX190aHVtYjJfXworQEAgLTk3Niw3ICs5NzYsNyBAQCBBRVNfZGVjcnlwdDoKKyAjaWZuZGVmCV9fdGh1bWIyX18KKyAJc3ViCXIzLHBjLCM4CQlAIEFFU19kZWNyeXB0CisgI2Vsc2UKKy0JYWRyCXIzLEFFU19kZWNyeXB0CisrCWFkcglyMywuCisgI2VuZGlmCisgCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9CisgI2lmZGVmCV9fQVBQTEVfXworZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKK2luZGV4IDlmMjg4NjYwZWYuLmEyN2JiNGExNzkgMTAwNjQ0CistLS0gYS9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAorKysrIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKK0BAIC03NDQsNyArNzQ0LDcgQEAgJGNvZGUuPTw8X19fOworIC50eXBlCV9ic2Flc19kZWNyeXB0OCwlZnVuY3Rpb24KKyAuYWxpZ24JNAorIF9ic2Flc19kZWNyeXB0ODoKKy0JYWRyCSRjb25zdCxfYnNhZXNfZGVjcnlwdDgKKysJYWRyCSRjb25zdCwuCisgCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5CisgI2lmZGVmCV9fQVBQTEVfXworIAlhZHIJJGNvbnN0LC5MTTBJU1IKK0BAIC04NDMsNyArODQzLDcgQEAgX2JzYWVzX2NvbnN0OgorIC50eXBlCV9ic2Flc19lbmNyeXB0OCwlZnVuY3Rpb24KKyAuYWxpZ24JNAorIF9ic2Flc19lbmNyeXB0ODoKKy0JYWRyCSRjb25zdCxfYnNhZXNfZW5jcnlwdDgKKysJYWRyCSRjb25zdCwuCisgCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5CisgI2lmZGVmCV9fQVBQTEVfXworIAlhZHIJJGNvbnN0LC5MTTBTUgorQEAgLTk1MSw3ICs5NTEsNyBAQCAkY29kZS49PDxfX187CisgLnR5cGUJX2JzYWVzX2tleV9jb252ZXJ0LCVmdW5jdGlvbgorIC5hbGlnbgk0CisgX2JzYWVzX2tleV9jb252ZXJ0OgorLQlhZHIJJGNvbnN0LF9ic2Flc19rZXlfY29udmVydAorKwlhZHIJJGNvbnN0LC4KKyAJdmxkMS44CXtAWE1NWzddfSwgIFskaW5wXSEJCUAgbG9hZCByb3VuZCAwIGtleQorICNpZmRlZglfX0FQUExFX18KKyAJYWRyCSRjb25zdCwuTE0wCistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL01ha2VmaWxlcy1wdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ5NDQ2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotQWRkICdidWlsZHRlc3QnIGFuZCAncnVudGVzdCcgdGFyZ2V0cyB0byBNYWtlZmlsZSwgdG8gYnVpbGQgYW5kIHJ1biB0ZXN0cwotY3Jvc3MtY29tcGlsZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAZW5lYS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGVuZWEuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLUluZGV4OiBvcGVuc3NsLTEuMC4yL01ha2VmaWxlLm9yZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjIub3JpZy9NYWtlZmlsZS5vcmcKLSsrKyBvcGVuc3NsLTEuMC4yL01ha2VmaWxlLm9yZwotQEAgLTQ1MSw4ICs0NTEsMTYgQEAgcmVoYXNoLnRpbWU6IGNlcnRzIGFwcHMKLSB0ZXN0OiAgIHRlc3RzCi0gCi0gdGVzdHM6IHJlaGFzaAotKwkkKE1BS0UpIGJ1aWxkdGVzdAotKwkkKE1BS0UpIHJ1bnRlc3QKLSsKLStidWlsZHRlc3Q6Ci0rCUAoY2QgdGVzdCAmJiBcCi0rCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgZXhlIGFwcHMpOwotKwotK3J1bnRlc3Q6Ci0gCUAoY2QgdGVzdCAmJiBlY2hvICJ0ZXN0aW5nLi4uIiAmJiBcCi0tCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgdGVzdHMgKTsKLSsJJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiBhbGx0ZXN0cyApOwotIAlPUEVOU1NMX0NPTkY9YXBwcy9vcGVuc3NsLmNuZiB1dGlsL29wZW5zc2x3cmFwLnNoIHZlcnNpb24gLWEKLSAKLSByZXBvcnQ6Ci1JbmRleDogb3BlbnNzbC0xLjAuMi90ZXN0L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMi5vcmlnL3Rlc3QvTWFrZWZpbGUKLSsrKyBvcGVuc3NsLTEuMC4yL3Rlc3QvTWFrZWZpbGUKLUBAIC0xMzcsNyArMTM3LDcgQEAgdGVzdHM6CWV4ZSBhcHBzICQoVEVTVFMpCi0gYXBwczoKLSAJQChjZCAuLjsgJChNQUtFKSBESVJTPWFwcHMgYWxsKQotIAotLWFsbHRlc3RzOiBcCi0rYWxsLXRlc3RzPSBcCi0gCXRlc3RfZGVzIHRlc3RfaWRlYSB0ZXN0X3NoYSB0ZXN0X21kNCB0ZXN0X21kNSB0ZXN0X2htYWMgXAotIAl0ZXN0X21kMiB0ZXN0X21kYzIgdGVzdF93cCBcCi0gCXRlc3Rfcm1kIHRlc3RfcmMyIHRlc3RfcmM0IHRlc3RfcmM1IHRlc3RfYmYgdGVzdF9jYXN0IHRlc3RfYWVzIFwKLUBAIC0xNDgsNiArMTQ4LDExIEBAIGFsbHRlc3RzOiBcCi0gCXRlc3RfanBha2UgdGVzdF9zcnAgdGVzdF9jbXMgdGVzdF9vY3NwIHRlc3RfdjNuYW1lIHRlc3RfaGVhcnRiZWF0IFwKLSAJdGVzdF9jb25zdGFudF90aW1lCi0gCi0rYWxsdGVzdHM6Ci0rCUAoZm9yIGkgaW4gJChhbGwtdGVzdHMpOyBkbyBcCi0rCSggJChNQUtFKSAkJGkgJiYgZWNobyAiUEFTUzogJCRpIiApIHx8IGVjaG8gIkZBSUw6ICQkaSI7IFwKLSsJZG9uZSkKLSsKLSB0ZXN0X2V2cDogJChFVlBURVNUKSQoRVhFX0VYVCkgZXZwdGVzdHMudHh0Ci0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoRVZQVEVTVCkgZXZwdGVzdHMudHh0Ci0gCi1AQCAtMjEzLDcgKzIxOCw3IEBAIHRlc3RfeDUwOTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0eDUKLSAJZWNobyB0ZXN0IHNlY29uZCB4NTA5djMgY2VydGlmaWNhdGUKLSAJc2ggLi90eDUwOSB2My1jZXJ0Mi5wZW0gMj4vZGV2L251bGwKLSAKLS10ZXN0X3JzYTogJChSU0FURVNUKSQoRVhFX0VYVCkgLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0cnNhIHRlc3Ryc2EucGVtCi0rdGVzdF9yc2E6IC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdHJzYSB0ZXN0cnNhLnBlbQotIAlAc2ggLi90cnNhIDI+L2Rldi9udWxsCi0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoUlNBVEVTVCkKLSAKLUBAIC0zMTMsMTEgKzMxOCwxMSBAQCB0ZXN0X3RzYTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0ZXN0Ci0gCSAgc2ggLi90ZXN0dHNhOyBcCi0gCWZpCi0gCi0tdGVzdF9pZ2U6ICQoSUdFVEVTVCkkKEVYRV9FWFQpCi0rdGVzdF9pZ2U6Ci0gCUBlY2hvICJUZXN0IElHRSBtb2RlIgotIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKElHRVRFU1QpCi0gCi0tdGVzdF9qcGFrZTogJChKUEFLRVRFU1QpJChFWEVfRVhUKQotK3Rlc3RfanBha2U6Ci0gCUBlY2hvICJUZXN0IEpQQUtFIgotIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKEpQQUtFVEVTVCkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTNkYzdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1BZGQgbXVzbCB0cmlwbGV0IHN1cHBvcnQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMmEub3JpZy9Db25maWd1cmUKLSsrKyBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKLUBAIC00MzEsNyArNDMxLDcgQEAgbXkgJXRhYmxlPSgKLSAjCi0gIyAgICAgICAuL0NvbmZpZ3VyZSBsaW51eC1hcm12NCAtbWFyY2g9YXJtdjYgLURfX0FSTV9NQVhfQVJDSF9fPTgKLSAjCi0tImxpbnV4LWFybXY0IiwJImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1hcm12NCIsICJnY2M6IC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtYWFyY2g2NCIsImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FhcmNoNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICMgQ29uZmlndXJlIHNjcmlwdCBhZGRzIG1pbmltYWxseSByZXF1aXJlZCAtbWFyY2ggZm9yIGFzc2VtYmx5IHN1cHBvcnQsCi0gIyBpZiBubyAtbWFyY2ggd2FzIHNwZWNpZmllZCBhdCBjb21tYW5kIGxpbmUuIG1pcHMzMiBhbmQgbWlwczY0IGJlbG93Ci1AQCAtNTA0LDYgKzUwNCw4IEBAIG15ICV0YWJsZT0oCi0gImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtdWNsaWJjZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtdWNsaWJjZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1tdXNsZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtbXVzbGVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAKLSAibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvY29uZmlndXJlLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvY29uZmlndXJlLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MWU3NGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotVGhlIG51bWJlciBvZiBjb2xvbnMgYXJlIGltcG9ydGFudCA6KQotCi0KLS0tLQotIENvbmZpZ3VyZSB8ICAgMTYgKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQotKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQotQEAgLTQ0Myw2ICs0NDMsMjMgQEAgbXkgJXRhYmxlPSgKLSAibGludXgtYWxwaGEtY2NjIiwiY2NjOi1mYXN0IC1yZWFkb25seV9zdHJpbmdzIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX0iLAotICJsaW51eC1hbHBoYStid3gtY2NjIiwiY2NjOi1mYXN0IC1yZWFkb25seV9zdHJpbmdzIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX0iLAotIAotKyAKLSsjIExpbnV4IG9uIEFSTQotKyJsaW51eC1lbGYtYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWVsZi1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1nbnVlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1nbnVlYWJpLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LXVjbGliY2VhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LXVjbGliY2VhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsKLSsibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCi0rCi0rIyMjIyBMaW51eCBvbiBNSVBTL01JUFM2NAotKyJsaW51eC1taXBzIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtbWlwczY0IiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1tYWJpPTY0IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1taXBzNjRlbCIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtbWFiaT02NCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtbWlwc2VsIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsKLSAjIEFuZHJvaWQ6IGxpbnV4LSogYnV0IHdpdGhvdXQgcG9pbnRlcnMgdG8gaGVhZGVycyBhbmQgbGlicy4KLSAiYW5kcm9pZCIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJhbmRyb2lkLXg4NiIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiIuZXZhbHtteSAkYXNtPSR7eDg2X2VsZl9hc219OyRhc209fnMvOmVsZi86YW5kcm9pZC87JGFzbX0uIjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL3ZlcnNpb24tc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjQ5MTgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYzICswLDAgQEAKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS5vcmlnL0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE2NTEsNiArMTY1MSw4IEBACi0gCQl9Ci0gCX0KLSAKLSskc2hhcmVkX2xkZmxhZyAuPSAiIC1XbCwtLXZlcnNpb24tc2NyaXB0PW9wZW5zc2wubGQiOwotKwotIG9wZW4oSU4sJzxNYWtlZmlsZS5vcmcnKSB8fCBkaWUgInVuYWJsZSB0byByZWFkIE1ha2VmaWxlLm9yZzokIVxuIjsKLSB1bmxpbmsoIiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byByZW1vdmUgb2xkICRNYWtlZmlsZS5uZXc6JCFcbiIgaWYgLWUgIiRNYWtlZmlsZS5uZXciOwotIG9wZW4oT1VULCI+JE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIGNyZWF0ZSAkTWFrZWZpbGUubmV3OiQhXG4iOwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjI6MTk6MDguNjAxODI3MjY2ICswMTAwCi1AQCAtMCwwICsxLDQ2MTUgQEAKLStPUEVOU1NMXzEuMC4wIHsKLSsJZ2xvYmFsOgotKwkJQklPX2Zfc3NsOwotKwkJQklPX25ld19idWZmZXJfc3NsX2Nvbm5lY3Q7Ci0rCQlCSU9fbmV3X3NzbDsKLSsJCUJJT19uZXdfc3NsX2Nvbm5lY3Q7Ci0rCQlCSU9fcHJveHlfc3NsX2NvcHlfc2Vzc2lvbl9pZDsKLSsJCUJJT19zc2xfY29weV9zZXNzaW9uX2lkOwotKwkJQklPX3NzbF9zaHV0ZG93bjsKLSsJCWQyaV9TU0xfU0VTU0lPTjsKLSsJCURUTFN2MV9jbGllbnRfbWV0aG9kOwotKwkJRFRMU3YxX21ldGhvZDsKLSsJCURUTFN2MV9zZXJ2ZXJfbWV0aG9kOwotKwkJRVJSX2xvYWRfU1NMX3N0cmluZ3M7Ci0rCQlpMmRfU1NMX1NFU1NJT047Ci0rCQlrc3NsX2J1aWxkX3ByaW5jaXBhbF8yOwotKwkJa3NzbF9jZ2V0X3RrdDsKLSsJCWtzc2xfY2hlY2tfYXV0aGVudDsKLSsJCWtzc2xfY3R4X2ZyZWU7Ci0rCQlrc3NsX2N0eF9uZXc7Ci0rCQlrc3NsX2N0eF9zZXRrZXk7Ci0rCQlrc3NsX2N0eF9zZXRwcmluYzsKLSsJCWtzc2xfY3R4X3NldHN0cmluZzsKLSsJCWtzc2xfY3R4X3Nob3c7Ci0rCQlrc3NsX2Vycl9zZXQ7Ci0rCQlrc3NsX2tyYjVfZnJlZV9kYXRhX2NvbnRlbnRzOwotKwkJa3NzbF9zZ2V0X3RrdDsKLSsJCWtzc2xfc2tpcF9jb25mb3VuZDsKLSsJCWtzc2xfdmFsaWRhdGVfdGltZXM7Ci0rCQlQRU1fcmVhZF9iaW9fU1NMX1NFU1NJT047Ci0rCQlQRU1fcmVhZF9TU0xfU0VTU0lPTjsKLSsJCVBFTV93cml0ZV9iaW9fU1NMX1NFU1NJT047Ci0rCQlQRU1fd3JpdGVfU1NMX1NFU1NJT047Ci0rCQlTU0xfYWNjZXB0OwotKwkJU1NMX2FkZF9jbGllbnRfQ0E7Ci0rCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOwotKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqc190b19zdGs7Ci0rCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqZWN0c190b19zdGFjazsKLSsJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmpzX3RvX3N0azsKLSsJCVNTTF9hbGVydF9kZXNjX3N0cmluZzsKLSsJCVNTTF9hbGVydF9kZXNjX3N0cmluZ19sb25nOwotKwkJU1NMX2FsZXJ0X3R5cGVfc3RyaW5nOwotKwkJU1NMX2FsZXJ0X3R5cGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfY2FsbGJhY2tfY3RybDsKLSsJCVNTTF9jaGVja19wcml2YXRlX2tleTsKLSsJCVNTTF9DSVBIRVJfZGVzY3JpcHRpb247Ci0rCQlTU0xfQ0lQSEVSX2dldF9iaXRzOwotKwkJU1NMX0NJUEhFUl9nZXRfbmFtZTsKLSsJCVNTTF9DSVBIRVJfZ2V0X3ZlcnNpb247Ci0rCQlTU0xfY2xlYXI7Ci0rCQlTU0xfQ09NUF9hZGRfY29tcHJlc3Npb25fbWV0aG9kOwotKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzaW9uX21ldGhvZHM7Ci0rCQlTU0xfQ09NUF9nZXRfY29tcHJlc3NfbWV0aG9kczsKLSsJCVNTTF9DT01QX2dldF9uYW1lOwotKwkJU1NMX2Nvbm5lY3Q7Ci0rCQlTU0xfY29weV9zZXNzaW9uX2lkOwotKwkJU1NMX2N0cmw7Ci0rCQlTU0xfQ1RYX2FkZF9jbGllbnRfQ0E7Ci0rCQlTU0xfQ1RYX2FkZF9zZXNzaW9uOwotKwkJU1NMX0NUWF9jYWxsYmFja19jdHJsOwotKwkJU1NMX0NUWF9jaGVja19wcml2YXRlX2tleTsKLSsJCVNTTF9DVFhfY3RybDsKLSsJCVNTTF9DVFhfZmx1c2hfc2Vzc2lvbnM7Ci0rCQlTU0xfQ1RYX2ZyZWU7Ci0rCQlTU0xfQ1RYX2dldF9jZXJ0X3N0b3JlOwotKwkJU1NMX0NUWF9nZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfQ1RYX2dldF9jbGllbnRfY2VydF9jYjsKLSsJCVNTTF9DVFhfZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfQ1RYX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTU0xfQ1RYX2dldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9nZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfQ1RYX2dldF90aW1lb3V0OwotKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrOwotKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX0NUWF9nZXRfdmVyaWZ5X21vZGU7Ci0rCQlTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9uczsKLSsJCVNTTF9DVFhfbmV3OwotKwkJU1NMX0NUWF9yZW1vdmVfc2Vzc2lvbjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfZ2V0X2NiOwotKwkJU1NMX0NUWF9zZXNzX2dldF9uZXdfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X3JlbW92ZV9jYjsKLSsJCVNTTF9DVFhfc2Vzc2lvbnM7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X2dldF9jYjsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfbmV3X2NiOwotKwkJU1NMX0NUWF9zZXNzX3NldF9yZW1vdmVfY2I7Ci0rCQlTU0xfQ1RYX3NldDFfcGFyYW07Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X3N0b3JlOwotKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYjsKLSsJCVNTTF9DVFhfc2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9jYjsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2VuZ2luZTsKLSsJCVNTTF9DVFhfc2V0X2Nvb2tpZV9nZW5lcmF0ZV9jYjsKLSsJCVNTTF9DVFhfc2V0X2Nvb2tpZV92ZXJpZnlfY2I7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYjsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHM7Ci0rCQlTU0xfQ1RYX3NldF9kZWZfcGFzc3dkX2NiX3VkOwotKwkJU1NMX0NUWF9zZXRfZGVmX3ZlcmlmeV9wYXRoczsKLSsJCVNTTF9DVFhfc2V0X2V4X2RhdGE7Ci0rCQlTU0xfQ1RYX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOwotKwkJU1NMX0NUWF9zZXRfaW5mb19jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X21zZ19jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wc2tfc2VydmVyX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHVycG9zZTsKLSsJCVNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX0NUWF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OwotKwkJU1NMX0NUWF9zZXRfc3NsX3ZlcnNpb247Ci0rCQlTU0xfQ1RYX3NldF90aW1lb3V0OwotKwkJU1NMX0NUWF9zZXRfdG1wX2RoX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfdG1wX2VjZGhfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90bXBfcnNhX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfdHJ1c3Q7Ci0rCQlTU0xfQ1RYX3NldF92ZXJpZnk7Ci0rCQlTU0xfQ1RYX3NldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0X2NoYWluX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX0FTTjE7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfZmlsZTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXk7Ci0rCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9wc2tfaWRlbnRpdHlfaGludDsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXk7Ci0rCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0xfZG9faGFuZHNoYWtlOwotKwkJU1NMX2R1cDsKLSsJCVNTTF9kdXBfQ0FfbGlzdDsKLSsJCVNTTGVheV9hZGRfc3NsX2FsZ29yaXRobXM7Ci0rCQlTU0xfZnJlZTsKLSsJCVNTTF9nZXQxX3Nlc3Npb247Ci0rCQlTU0xfZ2V0X2NlcnRpZmljYXRlOwotKwkJU1NMX2dldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9nZXRfY2lwaGVyczsKLSsJCVNTTF9nZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyOwotKwkJU1NMX2dldF9jdXJyZW50X2NvbXByZXNzaW9uOwotKwkJU1NMX2dldF9jdXJyZW50X2V4cGFuc2lvbjsKLSsJCVNTTF9nZXRfZGVmYXVsdF90aW1lb3V0OwotKwkJU1NMX2dldF9lcnJvcjsKLSsJCVNTTF9nZXRfZXhfZGF0YTsKLSsJCVNTTF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHg7Ci0rCQlTU0xfZ2V0X2V4X2RfWDUwOV9TVE9SRV9DVFhfaWR4OwotKwkJU1NMX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTU0xfZ2V0X2ZkOwotKwkJU1NMX2dldF9maW5pc2hlZDsKLSsJCVNTTF9nZXRfaW5mb19jYWxsYmFjazsKLSsJCVNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluOwotKwkJU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlOwotKwkJU1NMX2dldF9wZWVyX2ZpbmlzaGVkOwotKwkJU1NMX2dldF9wcml2YXRla2V5OwotKwkJU1NMX2dldF9wc2tfaWRlbnRpdHk7Ci0rCQlTU0xfZ2V0X3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX2dldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9nZXRfcmJpbzsKLSsJCVNTTF9nZXRfcmVhZF9haGVhZDsKLSsJCVNTTF9nZXRfcmZkOwotKwkJU1NMX2dldF9zZXJ2ZXJuYW1lOwotKwkJU1NMX2dldF9zZXJ2ZXJuYW1lX3R5cGU7Ci0rCQlTU0xfZ2V0X3Nlc3Npb247Ci0rCQlTU0xfZ2V0X3NoYXJlZF9jaXBoZXJzOwotKwkJU1NMX2dldF9zaHV0ZG93bjsKLSsJCVNTTF9nZXRfU1NMX0NUWDsKLSsJCVNTTF9nZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9nZXRfdmVyaWZ5X2NhbGxiYWNrOwotKwkJU1NMX2dldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9tb2RlOwotKwkJU1NMX2dldF92ZXJpZnlfcmVzdWx0OwotKwkJU1NMX2dldF92ZXJzaW9uOwotKwkJU1NMX2dldF93YmlvOwotKwkJU1NMX2dldF93ZmQ7Ci0rCQlTU0xfaGFzX21hdGNoaW5nX3Nlc3Npb25faWQ7Ci0rCQlTU0xfbGlicmFyeV9pbml0OwotKwkJU1NMX2xvYWRfY2xpZW50X0NBX2ZpbGU7Ci0rCQlTU0xfbG9hZF9lcnJvcl9zdHJpbmdzOwotKwkJU1NMX25ldzsKLSsJCVNTTF9wZWVrOwotKwkJU1NMX3BlbmRpbmc7Ci0rCQlTU0xfcmVhZDsKLSsJCVNTTF9yZW5lZ290aWF0ZTsKLSsJCVNTTF9yZW5lZ290aWF0ZV9wZW5kaW5nOwotKwkJU1NMX3JzdGF0ZV9zdHJpbmc7Ci0rCQlTU0xfcnN0YXRlX3N0cmluZ19sb25nOwotKwkJU1NMX1NFU1NJT05fY21wOwotKwkJU1NMX1NFU1NJT05fZnJlZTsKLSsJCVNTTF9TRVNTSU9OX2dldF9leF9kYXRhOwotKwkJU1NMX1NFU1NJT05fZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9TRVNTSU9OX2dldF9pZDsKLSsJCVNTTF9TRVNTSU9OX2dldF90aW1lOwotKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWVvdXQ7Ci0rCQlTU0xfU0VTU0lPTl9oYXNoOwotKwkJU1NMX1NFU1NJT05fbmV3OwotKwkJU1NMX1NFU1NJT05fcHJpbnQ7Ci0rCQlTU0xfU0VTU0lPTl9wcmludF9mcDsKLSsJCVNTTF9TRVNTSU9OX3NldF9leF9kYXRhOwotKwkJU1NMX1NFU1NJT05fc2V0X3RpbWU7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfdGltZW91dDsKLSsJCVNTTF9zZXQxX3BhcmFtOwotKwkJU1NMX3NldF9hY2NlcHRfc3RhdGU7Ci0rCQlTU0xfc2V0X2JpbzsKLSsJCVNTTF9zZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfc2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX3NldF9jb25uZWN0X3N0YXRlOwotKwkJU1NMX3NldF9leF9kYXRhOwotKwkJU1NMX3NldF9mZDsKLSsJCVNTTF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKLSsJCVNTTF9zZXRfaW5mb19jYWxsYmFjazsKLSsJCVNTTF9zZXRfbXNnX2NhbGxiYWNrOwotKwkJU1NMX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOwotKwkJU1NMX3NldF9wc2tfc2VydmVyX2NhbGxiYWNrOwotKwkJU1NMX3NldF9wdXJwb3NlOwotKwkJU1NMX3NldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9zZXRfcmVhZF9haGVhZDsKLSsJCVNTTF9zZXRfcmZkOwotKwkJU1NMX3NldF9zZXNzaW9uOwotKwkJU1NMX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7Ci0rCQlTU0xfc2V0X3Nlc3Npb25fc2VjcmV0X2NiOwotKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHQ7Ci0rCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dF9jYjsKLSsJCVNTTF9zZXRfc2h1dGRvd247Ci0rCQlTU0xfc2V0X1NTTF9DVFg7Ci0rCQlTU0xfc2V0X3NzbF9tZXRob2Q7Ci0rCQlTU0xfc2V0X3RtcF9kaF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdG1wX2VjZGhfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3RtcF9yc2FfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3RydXN0OwotKwkJU1NMX3NldF92ZXJpZnk7Ci0rCQlTU0xfc2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9zZXRfdmVyaWZ5X3Jlc3VsdDsKLSsJCVNTTF9zZXRfd2ZkOwotKwkJU1NMX3NodXRkb3duOwotKwkJU1NMX3N0YXRlOwotKwkJU1NMX3N0YXRlX3N0cmluZzsKLSsJCVNTTF9zdGF0ZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGU7Ci0rCQlTU0xfdXNlX2NlcnRpZmljYXRlX0FTTjE7Ci0rCQlTU0xfdXNlX2NlcnRpZmljYXRlX2ZpbGU7Ci0rCQlTU0xfdXNlX1ByaXZhdGVLZXk7Ci0rCQlTU0xfdXNlX1ByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMX3VzZV9wc2tfaWRlbnRpdHlfaGludDsKLSsJCVNTTF91c2VfUlNBUHJpdmF0ZUtleTsKLSsJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0x2MjNfY2xpZW50X21ldGhvZDsKLSsJCVNTTHYyM19tZXRob2Q7Ci0rCQlTU0x2MjNfc2VydmVyX21ldGhvZDsKLSsJCVNTTHYyX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0x2Ml9tZXRob2Q7Ci0rCQlTU0x2Ml9zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMdjNfY2xpZW50X21ldGhvZDsKLSsJCVNTTHYzX21ldGhvZDsKLSsJCVNTTHYzX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfdmVyc2lvbjsKLSsJCVNTTF93YW50OwotKwkJU1NMX3dyaXRlOwotKwkJVExTdjFfY2xpZW50X21ldGhvZDsKLSsJCVRMU3YxX21ldGhvZDsKLSsJCVRMU3YxX3NlcnZlcl9tZXRob2Q7Ci0rCi0rCi0rCQlTU0xlYXk7Ci0rCQlTU0xlYXlfdmVyc2lvbjsKLSsJCUFTTjFfQklUX1NUUklOR19hc24xX21ldGg7Ci0rCQlBU04xX0hFQURFUl9mcmVlOwotKwkJQVNOMV9IRUFERVJfbmV3OwotKwkJQVNOMV9JQTVTVFJJTkdfYXNuMV9tZXRoOwotKwkJQVNOMV9JTlRFR0VSX2dldDsKLSsJCUFTTjFfSU5URUdFUl9zZXQ7Ci0rCQlBU04xX0lOVEVHRVJfdG9fQk47Ci0rCQlBU04xX09CSkVDVF9jcmVhdGU7Ci0rCQlBU04xX09CSkVDVF9mcmVlOwotKwkJQVNOMV9PQkpFQ1RfbmV3OwotKwkJQVNOMV9QUklOVEFCTEVfdHlwZTsKLSsJCUFTTjFfU1RSSU5HX2NtcDsKLSsJCUFTTjFfU1RSSU5HX2R1cDsKLSsJCUFTTjFfU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1NUUklOR19uZXc7Ci0rCQlBU04xX1NUUklOR19wcmludDsKLSsJCUFTTjFfU1RSSU5HX3NldDsKLSsJCUFTTjFfU1RSSU5HX3R5cGVfbmV3OwotKwkJQVNOMV9UWVBFX2ZyZWU7Ci0rCQlBU04xX1RZUEVfbmV3OwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfdG9fc3RyaW5nOwotKwkJQVNOMV9VVENUSU1FX2NoZWNrOwotKwkJQVNOMV9VVENUSU1FX3ByaW50OwotKwkJQVNOMV9VVENUSU1FX3NldDsKLSsJCUFTTjFfY2hlY2tfaW5maW5pdGVfZW5kOwotKwkJQVNOMV9kMmlfYmlvOwotKwkJQVNOMV9kMmlfZnA7Ci0rCQlBU04xX2RpZ2VzdDsKLSsJCUFTTjFfZHVwOwotKwkJQVNOMV9nZXRfb2JqZWN0OwotKwkJQVNOMV9pMmRfYmlvOwotKwkJQVNOMV9pMmRfZnA7Ci0rCQlBU04xX29iamVjdF9zaXplOwotKwkJQVNOMV9wYXJzZTsKLSsJCUFTTjFfcHV0X29iamVjdDsKLSsJCUFTTjFfc2lnbjsKLSsJCUFTTjFfdmVyaWZ5OwotKwkJQkZfY2JjX2VuY3J5cHQ7Ci0rCQlCRl9jZmI2NF9lbmNyeXB0OwotKwkJQkZfZWNiX2VuY3J5cHQ7Ci0rCQlCRl9lbmNyeXB0OwotKwkJQkZfb2ZiNjRfZW5jcnlwdDsKLSsJCUJGX29wdGlvbnM7Ci0rCQlCRl9zZXRfa2V5OwotKwkJQklPX0NPTk5FQ1RfZnJlZTsKLSsJCUJJT19DT05ORUNUX25ldzsKLSsJCUJJT19hY2NlcHQ7Ci0rCQlCSU9fY3RybDsKLSsJCUJJT19pbnRfY3RybDsKLSsJCUJJT19kZWJ1Z19jYWxsYmFjazsKLSsJCUJJT19kdW1wOwotKwkJQklPX2R1cF9jaGFpbjsKLSsJCUJJT19mX2Jhc2U2NDsKLSsJCUJJT19mX2J1ZmZlcjsKLSsJCUJJT19mX2NpcGhlcjsKLSsJCUJJT19mX21kOwotKwkJQklPX2ZfbnVsbDsKLSsJCUJJT19mX3Byb3h5X3NlcnZlcjsKLSsJCUJJT19mZF9ub25fZmF0YWxfZXJyb3I7Ci0rCQlCSU9fZmRfc2hvdWxkX3JldHJ5OwotKwkJQklPX2ZpbmRfdHlwZTsKLSsJCUJJT19mcmVlOwotKwkJQklPX2ZyZWVfYWxsOwotKwkJQklPX2dldF9hY2NlcHRfc29ja2V0OwotKwkJQklPX2dldF9maWx0ZXJfYmlvOwotKwkJQklPX2dldF9ob3N0X2lwOwotKwkJQklPX2dldF9wb3J0OwotKwkJQklPX2dldF9yZXRyeV9CSU87Ci0rCQlCSU9fZ2V0X3JldHJ5X3JlYXNvbjsKLSsJCUJJT19nZXRob3N0YnluYW1lOwotKwkJQklPX2dldHM7Ci0rCQlCSU9fbmV3OwotKwkJQklPX25ld19hY2NlcHQ7Ci0rCQlCSU9fbmV3X2Nvbm5lY3Q7Ci0rCQlCSU9fbmV3X2ZkOwotKwkJQklPX25ld19maWxlOwotKwkJQklPX25ld19mcDsKLSsJCUJJT19uZXdfc29ja2V0OwotKwkJQklPX3BvcDsKLSsJCUJJT19wcmludGY7Ci0rCQlCSU9fcHVzaDsKLSsJCUJJT19wdXRzOwotKwkJQklPX3JlYWQ7Ci0rCQlCSU9fc19hY2NlcHQ7Ci0rCQlCSU9fc19jb25uZWN0OwotKwkJQklPX3NfZmQ7Ci0rCQlCSU9fc19maWxlOwotKwkJQklPX3NfbWVtOwotKwkJQklPX3NfbnVsbDsKLSsJCUJJT19zX3Byb3h5X2NsaWVudDsKLSsJCUJJT19zX3NvY2tldDsKLSsJCUJJT19zZXQ7Ci0rCQlCSU9fc2V0X2NpcGhlcjsKLSsJCUJJT19zZXRfdGNwX25kZWxheTsKLSsJCUJJT19zb2NrX2NsZWFudXA7Ci0rCQlCSU9fc29ja19lcnJvcjsKLSsJCUJJT19zb2NrX2luaXQ7Ci0rCQlCSU9fc29ja19ub25fZmF0YWxfZXJyb3I7Ci0rCQlCSU9fc29ja19zaG91bGRfcmV0cnk7Ci0rCQlCSU9fc29ja2V0X2lvY3RsOwotKwkJQklPX3dyaXRlOwotKwkJQk5fQ1RYX2ZyZWU7Ci0rCQlCTl9DVFhfbmV3OwotKwkJQk5fTU9OVF9DVFhfZnJlZTsKLSsJCUJOX01PTlRfQ1RYX25ldzsKLSsJCUJOX01PTlRfQ1RYX3NldDsKLSsJCUJOX2FkZDsKLSsJCUJOX2FkZF93b3JkOwotKwkJQk5faGV4MmJuOwotKwkJQk5fYmluMmJuOwotKwkJQk5fYm4yaGV4OwotKwkJQk5fYm4yYmluOwotKwkJQk5fY2xlYXI7Ci0rCQlCTl9jbGVhcl9iaXQ7Ci0rCQlCTl9jbGVhcl9mcmVlOwotKwkJQk5fY21wOwotKwkJQk5fY29weTsKLSsJCUJOX2RpdjsKLSsJCUJOX2Rpdl93b3JkOwotKwkJQk5fZHVwOwotKwkJQk5fZnJlZTsKLSsJCUJOX2Zyb21fbW9udGdvbWVyeTsKLSsJCUJOX2djZDsKLSsJCUJOX2dlbmVyYXRlX3ByaW1lOwotKwkJQk5fZ2V0X3dvcmQ7Ci0rCQlCTl9pc19iaXRfc2V0OwotKwkJQk5faXNfcHJpbWU7Ci0rCQlCTl9sc2hpZnQ7Ci0rCQlCTl9sc2hpZnQxOwotKwkJQk5fbWFza19iaXRzOwotKwkJQk5fbW9kOwotKwkJQk5fbW9kX2V4cDsKLSsJCUJOX21vZF9leHBfbW9udDsKLSsJCUJOX21vZF9leHBfc2ltcGxlOwotKwkJQk5fbW9kX2ludmVyc2U7Ci0rCQlCTl9tb2RfbXVsOwotKwkJQk5fbW9kX211bF9tb250Z29tZXJ5OwotKwkJQk5fbW9kX3dvcmQ7Ci0rCQlCTl9tdWw7Ci0rCQlCTl9uZXc7Ci0rCQlCTl9udW1fYml0czsKLSsJCUJOX251bV9iaXRzX3dvcmQ7Ci0rCQlCTl9vcHRpb25zOwotKwkJQk5fcHJpbnQ7Ci0rCQlCTl9wcmludF9mcDsKLSsJCUJOX3JhbmQ7Ci0rCQlCTl9yZWNpcHJvY2FsOwotKwkJQk5fcnNoaWZ0OwotKwkJQk5fcnNoaWZ0MTsKLSsJCUJOX3NldF9iaXQ7Ci0rCQlCTl9zZXRfd29yZDsKLSsJCUJOX3NxcjsKLSsJCUJOX3N1YjsKLSsJCUJOX3RvX0FTTjFfSU5URUdFUjsKLSsJCUJOX3VjbXA7Ci0rCQlCTl92YWx1ZV9vbmU7Ci0rCQlCVUZfTUVNX2ZyZWU7Ci0rCQlCVUZfTUVNX2dyb3c7Ci0rCQlCVUZfTUVNX25ldzsKLSsJCUJVRl9zdHJkdXA7Ci0rCQlDT05GX2ZyZWU7Ci0rCQlDT05GX2dldF9udW1iZXI7Ci0rCQlDT05GX2dldF9zZWN0aW9uOwotKwkJQ09ORl9nZXRfc3RyaW5nOwotKwkJQ09ORl9sb2FkOwotKwkJQ1JZUFRPX2FkZF9sb2NrOwotKwkJQ1JZUFRPX2RiZ19mcmVlOwotKwkJQ1JZUFRPX2RiZ19tYWxsb2M7Ci0rCQlDUllQVE9fZGJnX3JlYWxsb2M7Ci0rCQlDUllQVE9fZGJnX3JlbWFsbG9jOwotKwkJQ1JZUFRPX2ZyZWU7Ci0rCQlDUllQVE9fZ2V0X2FkZF9sb2NrX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9pZF9jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfbG9ja19uYW1lOwotKwkJQ1JZUFRPX2dldF9sb2NraW5nX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2xvY2s7Ci0rCQlDUllQVE9fbWFsbG9jOwotKwkJQ1JZUFRPX21lbV9jdHJsOwotKwkJQ1JZUFRPX21lbV9sZWFrczsKLSsJCUNSWVBUT19tZW1fbGVha3NfY2I7Ci0rCQlDUllQVE9fbWVtX2xlYWtzX2ZwOwotKwkJQ1JZUFRPX3JlYWxsb2M7Ci0rCQlDUllQVE9fcmVtYWxsb2M7Ci0rCQlDUllQVE9fc2V0X2FkZF9sb2NrX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9pZF9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT190aHJlYWRfaWQ7Ci0rCQlESF9jaGVjazsKLSsJCURIX2NvbXB1dGVfa2V5OwotKwkJREhfZnJlZTsKLSsJCURIX2dlbmVyYXRlX2tleTsKLSsJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnM7Ci0rCQlESF9uZXc7Ci0rCQlESF9zaXplOwotKwkJREhwYXJhbXNfcHJpbnQ7Ci0rCQlESHBhcmFtc19wcmludF9mcDsKLSsJCURTQV9mcmVlOwotKwkJRFNBX2dlbmVyYXRlX2tleTsKLSsJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzOwotKwkJRFNBX2lzX3ByaW1lOwotKwkJRFNBX25ldzsKLSsJCURTQV9wcmludDsKLSsJCURTQV9wcmludF9mcDsKLSsJCURTQV9zaWduOwotKwkJRFNBX3NpZ25fc2V0dXA7Ci0rCQlEU0Ffc2l6ZTsKLSsJCURTQV92ZXJpZnk7Ci0rCQlEU0FwYXJhbXNfcHJpbnQ7Ci0rCQlEU0FwYXJhbXNfcHJpbnRfZnA7Ci0rCQlFUlJfY2xlYXJfZXJyb3I7Ci0rCQlFUlJfZXJyb3Jfc3RyaW5nOwotKwkJRVJSX2ZyZWVfc3RyaW5nczsKLSsJCUVSUl9mdW5jX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9nZXRfZXJyX3N0YXRlX3RhYmxlOwotKwkJRVJSX2dldF9lcnJvcjsKLSsJCUVSUl9nZXRfZXJyb3JfbGluZTsKLSsJCUVSUl9nZXRfc3RhdGU7Ci0rCQlFUlJfZ2V0X3N0cmluZ190YWJsZTsKLSsJCUVSUl9saWJfZXJyb3Jfc3RyaW5nOwotKwkJRVJSX2xvYWRfQVNOMV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfQklPX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CTl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfQlVGX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9DT05GX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9ESF9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRFNBX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9FUlJfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0VWUF9zdHJpbmdzOwotKwkJRVJSX2xvYWRfT0JKX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9QRU1fc3RyaW5nczsKLSsJCUVSUl9sb2FkX1BST1hZX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9SU0Ffc3RyaW5nczsKLSsJCUVSUl9sb2FkX1g1MDlfc3RyaW5nczsKLSsJCUVSUl9sb2FkX2NyeXB0b19zdHJpbmdzOwotKwkJRVJSX2xvYWRfc3RyaW5nczsKLSsJCUVSUl9wZWVrX2Vycm9yOwotKwkJRVJSX3BlZWtfZXJyb3JfbGluZTsKLSsJCUVSUl9wcmludF9lcnJvcnM7Ci0rCQlFUlJfcHJpbnRfZXJyb3JzX2ZwOwotKwkJRVJSX3B1dF9lcnJvcjsKLSsJCUVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nOwotKwkJRVJSX3JlbW92ZV9zdGF0ZTsKLSsJCUVWUF9CeXRlc1RvS2V5OwotKwkJRVZQX0NJUEhFUl9DVFhfY2xlYW51cDsKLSsJCUVWUF9DaXBoZXJGaW5hbDsKLSsJCUVWUF9DaXBoZXJJbml0OwotKwkJRVZQX0NpcGhlclVwZGF0ZTsKLSsJCUVWUF9EZWNvZGVCbG9jazsKLSsJCUVWUF9EZWNvZGVGaW5hbDsKLSsJCUVWUF9EZWNvZGVJbml0OwotKwkJRVZQX0RlY29kZVVwZGF0ZTsKLSsJCUVWUF9EZWNyeXB0RmluYWw7Ci0rCQlFVlBfRGVjcnlwdEluaXQ7Ci0rCQlFVlBfRGVjcnlwdFVwZGF0ZTsKLSsJCUVWUF9EaWdlc3RGaW5hbDsKLSsJCUVWUF9EaWdlc3RJbml0OwotKwkJRVZQX0RpZ2VzdFVwZGF0ZTsKLSsJCUVWUF9FbmNvZGVCbG9jazsKLSsJCUVWUF9FbmNvZGVGaW5hbDsKLSsJCUVWUF9FbmNvZGVJbml0OwotKwkJRVZQX0VuY29kZVVwZGF0ZTsKLSsJCUVWUF9FbmNyeXB0RmluYWw7Ci0rCQlFVlBfRW5jcnlwdEluaXQ7Ci0rCQlFVlBfRW5jcnlwdFVwZGF0ZTsKLSsJCUVWUF9PcGVuRmluYWw7Ci0rCQlFVlBfT3BlbkluaXQ7Ci0rCQlFVlBfUEtFWV9hc3NpZ247Ci0rCQlFVlBfUEtFWV9jb3B5X3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9mcmVlOwotKwkJRVZQX1BLRVlfbWlzc2luZ19wYXJhbWV0ZXJzOwotKwkJRVZQX1BLRVlfbmV3OwotKwkJRVZQX1BLRVlfc2F2ZV9wYXJhbWV0ZXJzOwotKwkJRVZQX1BLRVlfc2l6ZTsKLSsJCUVWUF9QS0VZX3R5cGU7Ci0rCQlFVlBfU2VhbEZpbmFsOwotKwkJRVZQX1NlYWxJbml0OwotKwkJRVZQX1NpZ25GaW5hbDsKLSsJCUVWUF9WZXJpZnlGaW5hbDsKLSsJCUVWUF9hZGRfYWxpYXM7Ci0rCQlFVlBfYWRkX2NpcGhlcjsKLSsJCUVWUF9hZGRfZGlnZXN0OwotKwkJRVZQX2JmX2NiYzsKLSsJCUVWUF9iZl9jZmI2NDsKLSsJCUVWUF9iZl9lY2I7Ci0rCQlFVlBfYmZfb2ZiOwotKwkJRVZQX2NsZWFudXA7Ci0rCQlFVlBfZGVzX2NiYzsKLSsJCUVWUF9kZXNfY2ZiNjQ7Ci0rCQlFVlBfZGVzX2VjYjsKLSsJCUVWUF9kZXNfZWRlOwotKwkJRVZQX2Rlc19lZGUzOwotKwkJRVZQX2Rlc19lZGUzX2NiYzsKLSsJCUVWUF9kZXNfZWRlM19jZmI2NDsKLSsJCUVWUF9kZXNfZWRlM19vZmI7Ci0rCQlFVlBfZGVzX2VkZV9jYmM7Ci0rCQlFVlBfZGVzX2VkZV9jZmI2NDsKLSsJCUVWUF9kZXNfZWRlX29mYjsKLSsJCUVWUF9kZXNfb2ZiOwotKwkJRVZQX2Rlc3hfY2JjOwotKwkJRVZQX2RzczsKLSsJCUVWUF9kc3MxOwotKwkJRVZQX2VuY19udWxsOwotKwkJRVZQX2dldF9jaXBoZXJieW5hbWU7Ci0rCQlFVlBfZ2V0X2RpZ2VzdGJ5bmFtZTsKLSsJCUVWUF9nZXRfcHdfcHJvbXB0OwotKwkJRVZQX2lkZWFfY2JjOwotKwkJRVZQX2lkZWFfY2ZiNjQ7Ci0rCQlFVlBfaWRlYV9lY2I7Ci0rCQlFVlBfaWRlYV9vZmI7Ci0rCQlFVlBfbWQyOwotKwkJRVZQX21kNTsKLSsJCUVWUF9tZF9udWxsOwotKwkJRVZQX3JjMl9jYmM7Ci0rCQlFVlBfcmMyX2NmYjY0OwotKwkJRVZQX3JjMl9lY2I7Ci0rCQlFVlBfcmMyX29mYjsKLSsJCUVWUF9yYzQ7Ci0rCQlFVlBfcmVhZF9wd19zdHJpbmc7Ci0rCQlFVlBfc2V0X3B3X3Byb21wdDsKLSsJCUVWUF9zaGE7Ci0rCQlFVlBfc2hhMTsKLSsJCU1EMjsKLSsJCU1EMl9GaW5hbDsKLSsJCU1EMl9Jbml0OwotKwkJTUQyX1VwZGF0ZTsKLSsJCU1EMl9vcHRpb25zOwotKwkJTUQ1OwotKwkJTUQ1X0ZpbmFsOwotKwkJTUQ1X0luaXQ7Ci0rCQlNRDVfVXBkYXRlOwotKwkJTURDMjsKLSsJCU1EQzJfRmluYWw7Ci0rCQlNREMyX0luaXQ7Ci0rCQlNREMyX1VwZGF0ZTsKLSsJCU5FVFNDQVBFX1NQS0FDX2ZyZWU7Ci0rCQlORVRTQ0FQRV9TUEtBQ19uZXc7Ci0rCQlORVRTQ0FQRV9TUEtJX2ZyZWU7Ci0rCQlORVRTQ0FQRV9TUEtJX25ldzsKLSsJCU5FVFNDQVBFX1NQS0lfc2lnbjsKLSsJCU5FVFNDQVBFX1NQS0lfdmVyaWZ5OwotKwkJT0JKX2FkZF9vYmplY3Q7Ci0rCQlPQkpfYnNlYXJjaDsKLSsJCU9CSl9jbGVhbnVwOwotKwkJT0JKX2NtcDsKLSsJCU9CSl9jcmVhdGU7Ci0rCQlPQkpfZHVwOwotKwkJT0JKX2xuMm5pZDsKLSsJCU9CSl9uZXdfbmlkOwotKwkJT0JKX25pZDJsbjsKLSsJCU9CSl9uaWQyb2JqOwotKwkJT0JKX25pZDJzbjsKLSsJCU9CSl9vYmoybmlkOwotKwkJT0JKX3NuMm5pZDsKLSsJCU9CSl90eHQybmlkOwotKwkJUEVNX0FTTjFfcmVhZDsKLSsJCVBFTV9BU04xX3JlYWRfYmlvOwotKwkJUEVNX0FTTjFfd3JpdGU7Ci0rCQlQRU1fQVNOMV93cml0ZV9iaW87Ci0rCQlQRU1fU2VhbEZpbmFsOwotKwkJUEVNX1NlYWxJbml0OwotKwkJUEVNX1NlYWxVcGRhdGU7Ci0rCQlQRU1fU2lnbkZpbmFsOwotKwkJUEVNX1NpZ25Jbml0OwotKwkJUEVNX1NpZ25VcGRhdGU7Ci0rCQlQRU1fWDUwOV9JTkZPX3JlYWQ7Ci0rCQlQRU1fWDUwOV9JTkZPX3JlYWRfYmlvOwotKwkJUEVNX1g1MDlfSU5GT193cml0ZV9iaW87Ci0rCQlQRU1fZGVrX2luZm87Ci0rCQlQRU1fZG9faGVhZGVyOwotKwkJUEVNX2dldF9FVlBfQ0lQSEVSX0lORk87Ci0rCQlQRU1fcHJvY190eXBlOwotKwkJUEVNX3JlYWQ7Ci0rCQlQRU1fcmVhZF9ESHBhcmFtczsKLSsJCVBFTV9yZWFkX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9EU0FwYXJhbXM7Ci0rCQlQRU1fcmVhZF9QS0NTNzsKLSsJCVBFTV9yZWFkX1ByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9SU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfWDUwOTsKLSsJCVBFTV9yZWFkX1g1MDlfQ1JMOwotKwkJUEVNX3JlYWRfWDUwOV9SRVE7Ci0rCQlQRU1fcmVhZF9iaW87Ci0rCQlQRU1fcmVhZF9iaW9fREhwYXJhbXM7Ci0rCQlQRU1fcmVhZF9iaW9fRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX2Jpb19EU0FwYXJhbXM7Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzc7Ci0rCQlQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX2Jpb19SU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX1g1MDk7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9DUkw7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9SRVE7Ci0rCQlQRU1fd3JpdGU7Ci0rCQlQRU1fd3JpdGVfREhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9EU0FwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfUEtDUzc7Ci0rCQlQRU1fd3JpdGVfUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9SU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX1g1MDk7Ci0rCQlQRU1fd3JpdGVfWDUwOV9DUkw7Ci0rCQlQRU1fd3JpdGVfWDUwOV9SRVE7Ci0rCQlQRU1fd3JpdGVfYmlvOwotKwkJUEVNX3dyaXRlX2Jpb19ESHBhcmFtczsKLSsJCVBFTV93cml0ZV9iaW9fRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9iaW9fRFNBcGFyYW1zOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTNzsKLSsJCVBFTV93cml0ZV9iaW9fUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9iaW9fUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOTsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9DUkw7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfUkVROwotKwkJUEtDUzdfRElHRVNUX2ZyZWU7Ci0rCQlQS0NTN19ESUdFU1RfbmV3OwotKwkJUEtDUzdfRU5DUllQVF9mcmVlOwotKwkJUEtDUzdfRU5DUllQVF9uZXc7Ci0rCQlQS0NTN19FTkNfQ09OVEVOVF9mcmVlOwotKwkJUEtDUzdfRU5DX0NPTlRFTlRfbmV3OwotKwkJUEtDUzdfRU5WRUxPUEVfZnJlZTsKLSsJCVBLQ1M3X0VOVkVMT1BFX25ldzsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2RpZ2VzdDsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2ZyZWU7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9uZXc7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2ZyZWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX25ldzsKLSsJCVBLQ1M3X1NJR05FRF9mcmVlOwotKwkJUEtDUzdfU0lHTkVEX25ldzsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX2ZyZWU7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19uZXc7Ci0rCQlQS0NTN19TSUdOX0VOVkVMT1BFX2ZyZWU7Ci0rCQlQS0NTN19TSUdOX0VOVkVMT1BFX25ldzsKLSsJCVBLQ1M3X2R1cDsKLSsJCVBLQ1M3X2ZyZWU7Ci0rCQlQS0NTN19uZXc7Ci0rCQlQUk9YWV9FTlRSWV9hZGRfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX2NsZWFyX25vcHJveHk7Ci0rCQlQUk9YWV9FTlRSWV9mcmVlOwotKwkJUFJPWFlfRU5UUllfZ2V0X25vcHJveHk7Ci0rCQlQUk9YWV9FTlRSWV9uZXc7Ci0rCQlQUk9YWV9FTlRSWV9zZXRfc2VydmVyOwotKwkJUFJPWFlfYWRkX25vcHJveHk7Ci0rCQlQUk9YWV9hZGRfc2VydmVyOwotKwkJUFJPWFlfY2hlY2tfYnlfaG9zdDsKLSsJCVBST1hZX2NoZWNrX3VybDsKLSsJCVBST1hZX2NsZWFyX25vcHJveHk7Ci0rCQlQUk9YWV9mcmVlOwotKwkJUFJPWFlfZ2V0X25vcHJveHk7Ci0rCQlQUk9YWV9nZXRfcHJveGllczsKLSsJCVBST1hZX2dldF9wcm94eV9lbnRyeTsKLSsJCVBST1hZX2xvYWRfY29uZjsKLSsJCVBST1hZX25ldzsKLSsJCVBST1hZX3ByaW50OwotKwkJUkFORF9ieXRlczsKLSsJCVJBTkRfY2xlYW51cDsKLSsJCVJBTkRfZmlsZV9uYW1lOwotKwkJUkFORF9sb2FkX2ZpbGU7Ci0rCQlSQU5EX3NjcmVlbjsKLSsJCVJBTkRfc2VlZDsKLSsJCVJBTkRfd3JpdGVfZmlsZTsKLSsJCVJDMl9jYmNfZW5jcnlwdDsKLSsJCVJDMl9jZmI2NF9lbmNyeXB0OwotKwkJUkMyX2VjYl9lbmNyeXB0OwotKwkJUkMyX2VuY3J5cHQ7Ci0rCQlSQzJfb2ZiNjRfZW5jcnlwdDsKLSsJCVJDMl9zZXRfa2V5OwotKwkJUkM0OwotKwkJUkM0X29wdGlvbnM7Ci0rCQlSQzRfc2V0X2tleTsKLSsJCVJTQVByaXZhdGVLZXlfYXNuMV9tZXRoOwotKwkJUlNBUHJpdmF0ZUtleV9kdXA7Ci0rCQlSU0FQdWJsaWNLZXlfZHVwOwotKwkJUlNBX1BLQ1MxX1NTTGVheTsKLSsJCVJTQV9mcmVlOwotKwkJUlNBX2dlbmVyYXRlX2tleTsKLSsJCVJTQV9uZXc7Ci0rCQlSU0FfbmV3X21ldGhvZDsKLSsJCVJTQV9wcmludDsKLSsJCVJTQV9wcmludF9mcDsKLSsJCVJTQV9wcml2YXRlX2RlY3J5cHQ7Ci0rCQlSU0FfcHJpdmF0ZV9lbmNyeXB0OwotKwkJUlNBX3B1YmxpY19kZWNyeXB0OwotKwkJUlNBX3B1YmxpY19lbmNyeXB0OwotKwkJUlNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJTQV9zaWduOwotKwkJUlNBX3NpZ25fQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlSU0Ffc2l6ZTsKLSsJCVJTQV92ZXJpZnk7Ci0rCQlSU0FfdmVyaWZ5X0FTTjFfT0NURVRfU1RSSU5HOwotKwkJU0hBOwotKwkJU0hBMTsKLSsJCVNIQTFfRmluYWw7Ci0rCQlTSEExX0luaXQ7Ci0rCQlTSEExX1VwZGF0ZTsKLSsJCVNIQV9GaW5hbDsKLSsJCVNIQV9Jbml0OwotKwkJU0hBX1VwZGF0ZTsKLSsJCU9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zOwotKwkJT3BlblNTTF9hZGRfYWxsX2NpcGhlcnM7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfZGlnZXN0czsKLSsJCVRYVF9EQl9jcmVhdGVfaW5kZXg7Ci0rCQlUWFRfREJfZnJlZTsKLSsJCVRYVF9EQl9nZXRfYnlfaW5kZXg7Ci0rCQlUWFRfREJfaW5zZXJ0OwotKwkJVFhUX0RCX3JlYWQ7Ci0rCQlUWFRfREJfd3JpdGU7Ci0rCQlYNTA5X0FMR09SX2ZyZWU7Ci0rCQlYNTA5X0FMR09SX25ldzsKLSsJCVg1MDlfQVRUUklCVVRFX2ZyZWU7Ci0rCQlYNTA5X0FUVFJJQlVURV9uZXc7Ci0rCQlYNTA5X0NJTkZfZnJlZTsKLSsJCVg1MDlfQ0lORl9uZXc7Ci0rCQlYNTA5X0NSTF9JTkZPX2ZyZWU7Ci0rCQlYNTA5X0NSTF9JTkZPX25ldzsKLSsJCVg1MDlfQ1JMX2FkZF9leHQ7Ci0rCQlYNTA5X0NSTF9jbXA7Ci0rCQlYNTA5X0NSTF9kZWxldGVfZXh0OwotKwkJWDUwOV9DUkxfZHVwOwotKwkJWDUwOV9DUkxfZnJlZTsKLSsJCVg1MDlfQ1JMX2dldF9leHQ7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDlfQ1JMX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X0NSTF9uZXc7Ci0rCQlYNTA5X0NSTF9zaWduOwotKwkJWDUwOV9DUkxfdmVyaWZ5OwotKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X05JRDsKLSsJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X0VYVEVOU0lPTl9kdXA7Ci0rCQlYNTA5X0VYVEVOU0lPTl9mcmVlOwotKwkJWDUwOV9FWFRFTlNJT05fZ2V0X2NyaXRpY2FsOwotKwkJWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGE7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfb2JqZWN0OwotKwkJWDUwOV9FWFRFTlNJT05fbmV3OwotKwkJWDUwOV9FWFRFTlNJT05fc2V0X2NyaXRpY2FsOwotKwkJWDUwOV9FWFRFTlNJT05fc2V0X2RhdGE7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfb2JqZWN0OwotKwkJWDUwOV9JTkZPX2ZyZWU7Ci0rCQlYNTA5X0lORk9fbmV3OwotKwkJWDUwOV9MT09LVVBfYnlfYWxpYXM7Ci0rCQlYNTA5X0xPT0tVUF9ieV9maW5nZXJwcmludDsKLSsJCVg1MDlfTE9PS1VQX2J5X2lzc3Vlcl9zZXJpYWw7Ci0rCQlYNTA5X0xPT0tVUF9ieV9zdWJqZWN0OwotKwkJWDUwOV9MT09LVVBfY3RybDsKLSsJCVg1MDlfTE9PS1VQX2ZpbGU7Ci0rCQlYNTA5X0xPT0tVUF9mcmVlOwotKwkJWDUwOV9MT09LVVBfaGFzaF9kaXI7Ci0rCQlYNTA5X0xPT0tVUF9pbml0OwotKwkJWDUwOV9MT09LVVBfbmV3OwotKwkJWDUwOV9MT09LVVBfc2h1dGRvd247Ci0rCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X05JRDsKLSsJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfT0JKOwotKwkJWDUwOV9OQU1FX0VOVFJZX2R1cDsKLSsJCVg1MDlfTkFNRV9FTlRSWV9mcmVlOwotKwkJWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhOwotKwkJWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3Q7Ci0rCQlYNTA5X05BTUVfRU5UUllfbmV3OwotKwkJWDUwOV9OQU1FX0VOVFJZX3NldF9kYXRhOwotKwkJWDUwOV9OQU1FX0VOVFJZX3NldF9vYmplY3Q7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5OwotKwkJWDUwOV9OQU1FX2NtcDsKLSsJCVg1MDlfTkFNRV9kZWxldGVfZW50cnk7Ci0rCQlYNTA5X05BTUVfZGlnZXN0OwotKwkJWDUwOV9OQU1FX2R1cDsKLSsJCVg1MDlfTkFNRV9lbnRyeV9jb3VudDsKLSsJCVg1MDlfTkFNRV9mcmVlOwotKwkJWDUwOV9OQU1FX2dldF9lbnRyeTsKLSsJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfTklEOwotKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9PQko7Ci0rCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfTklEOwotKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X09CSjsKLSsJCVg1MDlfTkFNRV9oYXNoOwotKwkJWDUwOV9OQU1FX25ldzsKLSsJCVg1MDlfTkFNRV9vbmVsaW5lOwotKwkJWDUwOV9OQU1FX3ByaW50OwotKwkJWDUwOV9OQU1FX3NldDsKLSsJCVg1MDlfT0JKRUNUX2ZyZWVfY29udGVudHM7Ci0rCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9ieV9zdWJqZWN0OwotKwkJWDUwOV9PQkpFQ1RfdXBfcmVmX2NvdW50OwotKwkJWDUwOV9QS0VZX2ZyZWU7Ci0rCQlYNTA5X1BLRVlfbmV3OwotKwkJWDUwOV9QVUJLRVlfZnJlZTsKLSsJCVg1MDlfUFVCS0VZX2dldDsKLSsJCVg1MDlfUFVCS0VZX25ldzsKLSsJCVg1MDlfUFVCS0VZX3NldDsKLSsJCVg1MDlfUkVRX0lORk9fZnJlZTsKLSsJCVg1MDlfUkVRX0lORk9fbmV3OwotKwkJWDUwOV9SRVFfZHVwOwotKwkJWDUwOV9SRVFfZnJlZTsKLSsJCVg1MDlfUkVRX2dldF9wdWJrZXk7Ci0rCQlYNTA5X1JFUV9uZXc7Ci0rCQlYNTA5X1JFUV9wcmludDsKLSsJCVg1MDlfUkVRX3ByaW50X2ZwOwotKwkJWDUwOV9SRVFfc2V0X3B1YmtleTsKLSsJCVg1MDlfUkVRX3NldF9zdWJqZWN0X25hbWU7Ci0rCQlYNTA5X1JFUV9zZXRfdmVyc2lvbjsKLSsJCVg1MDlfUkVRX3NpZ247Ci0rCQlYNTA5X1JFUV90b19YNTA5OwotKwkJWDUwOV9SRVFfdmVyaWZ5OwotKwkJWDUwOV9SRVZPS0VEX2FkZF9leHQ7Ci0rCQlYNTA5X1JFVk9LRURfZGVsZXRlX2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9mcmVlOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHQ7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpYzsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9SRVZPS0VEX25ldzsKLSsJCVg1MDlfU0lHX2ZyZWU7Ci0rCQlYNTA5X1NJR19uZXc7Ci0rCQlYNTA5X1NUT1JFX0NUWF9jbGVhbnVwOwotKwkJWDUwOV9TVE9SRV9DVFhfaW5pdDsKLSsJCVg1MDlfU1RPUkVfYWRkX2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX2FkZF9sb29rdXA7Ci0rCQlYNTA5X1NUT1JFX2ZyZWU7Ci0rCQlYNTA5X1NUT1JFX2dldF9ieV9zdWJqZWN0OwotKwkJWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9uczsKLSsJCVg1MDlfU1RPUkVfbmV3OwotKwkJWDUwOV9TVE9SRV9zZXRfZGVmYXVsdF9wYXRoczsKLSsJCVg1MDlfVkFMX2ZyZWU7Ci0rCQlYNTA5X1ZBTF9uZXc7Ci0rCQlYNTA5X2FkZF9leHQ7Ci0rCQlYNTA5X2FzbjFfbWV0aDsKLSsJCVg1MDlfY2VydGlmaWNhdGVfdHlwZTsKLSsJCVg1MDlfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlYNTA5X2NtcF9jdXJyZW50X3RpbWU7Ci0rCQlYNTA5X2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X2RpZ2VzdDsKLSsJCVg1MDlfZHVwOwotKwkJWDUwOV9mcmVlOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2FyZWE7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2Rpcl9lbnY7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlX2VudjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfcHJpdmF0ZV9kaXI7Ci0rCQlYNTA5X2dldF9leHQ7Ci0rCQlYNTA5X2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDlfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfZ2V0X2lzc3Vlcl9uYW1lOwotKwkJWDUwOV9nZXRfcHVia2V5OwotKwkJWDUwOV9nZXRfcHVia2V5X3BhcmFtZXRlcnM7Ci0rCQlYNTA5X2dldF9zZXJpYWxOdW1iZXI7Ci0rCQlYNTA5X2dldF9zdWJqZWN0X25hbWU7Ci0rCQlYNTA5X2dtdGltZV9hZGo7Ci0rCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2NtcDsKLSsJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfaGFzaDsKLSsJCVg1MDlfaXNzdWVyX25hbWVfY21wOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoOwotKwkJWDUwOV9sb2FkX2NlcnRfZmlsZTsKLSsJCVg1MDlfbmV3OwotKwkJWDUwOV9wcmludDsKLSsJCVg1MDlfcHJpbnRfZnA7Ci0rCQlYNTA5X3NldF9pc3N1ZXJfbmFtZTsKLSsJCVg1MDlfc2V0X25vdEFmdGVyOwotKwkJWDUwOV9zZXRfbm90QmVmb3JlOwotKwkJWDUwOV9zZXRfcHVia2V5OwotKwkJWDUwOV9zZXRfc2VyaWFsTnVtYmVyOwotKwkJWDUwOV9zZXRfc3ViamVjdF9uYW1lOwotKwkJWDUwOV9zZXRfdmVyc2lvbjsKLSsJCVg1MDlfc2lnbjsKLSsJCVg1MDlfc3ViamVjdF9uYW1lX2NtcDsKLSsJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2g7Ci0rCQlYNTA5X3RvX1g1MDlfUkVROwotKwkJWDUwOV92ZXJpZnk7Ci0rCQlYNTA5X3ZlcmlmeV9jZXJ0OwotKwkJWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmc7Ci0rCQlYNTA5djNfYWRkX2V4dDsKLSsJCVg1MDl2M19hZGRfZXh0ZW5zaW9uOwotKwkJWDUwOXYzX2FkZF9uZXRzY2FwZV9leHRlbnNpb25zOwotKwkJWDUwOXYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOwotKwkJWDUwOXYzX2NsZWFudXBfZXh0ZW5zaW9uczsKLSsJCVg1MDl2M19kYXRhX3R5cGVfYnlfTklEOwotKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9PQko7Ci0rCQlYNTA5djNfZGVsZXRlX2V4dDsKLSsJCVg1MDl2M19nZXRfZXh0OwotKwkJWDUwOXYzX2dldF9leHRfYnlfTklEOwotKwkJWDUwOXYzX2dldF9leHRfYnlfT0JKOwotKwkJWDUwOXYzX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5djNfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDl2M19wYWNrX3N0cmluZzsKLSsJCVg1MDl2M19wYWNrX3R5cGVfYnlfTklEOwotKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9PQko7Ci0rCQlYNTA5djNfdW5wYWNrX3N0cmluZzsKLSsJCV9kZXNfY3J5cHQ7Ci0rCQlhMmRfQVNOMV9PQkpFQ1Q7Ci0rCQlhMmlfQVNOMV9JTlRFR0VSOwotKwkJYTJpX0FTTjFfU1RSSU5HOwotKwkJYXNuMV9GaW5pc2g7Ci0rCQlhc24xX0dldFNlcXVlbmNlOwotKwkJYm5fZGl2X3dvcmRzOwotKwkJYm5fZXhwYW5kMjsKLSsJCWJuX211bF9hZGRfd29yZHM7Ci0rCQlibl9tdWxfd29yZHM7Ci0rCQlCTl91YWRkOwotKwkJQk5fdXN1YjsKLSsJCWJuX3Nxcl93b3JkczsKLSsJCV9vc3NsX29sZF9jcnlwdDsKLSsJCWQyaV9BU04xX0JJVF9TVFJJTkc7Ci0rCQlkMmlfQVNOMV9CT09MRUFOOwotKwkJZDJpX0FTTjFfSEVBREVSOwotKwkJZDJpX0FTTjFfSUE1U1RSSU5HOwotKwkJZDJpX0FTTjFfSU5URUdFUjsKLSsJCWQyaV9BU04xX09CSkVDVDsKLSsJCWQyaV9BU04xX09DVEVUX1NUUklORzsKLSsJCWQyaV9BU04xX1BSSU5UQUJMRTsKLSsJCWQyaV9BU04xX1BSSU5UQUJMRVNUUklORzsKLSsJCWQyaV9BU04xX1NFVDsKLSsJCWQyaV9BU04xX1Q2MVNUUklORzsKLSsJCWQyaV9BU04xX1RZUEU7Ci0rCQlkMmlfQVNOMV9VVENUSU1FOwotKwkJZDJpX0FTTjFfYnl0ZXM7Ci0rCQlkMmlfQVNOMV90eXBlX2J5dGVzOwotKwkJZDJpX0RIcGFyYW1zOwotKwkJZDJpX0RTQVByaXZhdGVLZXk7Ci0rCQlkMmlfRFNBUHJpdmF0ZUtleV9iaW87Ci0rCQlkMmlfRFNBUHJpdmF0ZUtleV9mcDsKLSsJCWQyaV9EU0FQdWJsaWNLZXk7Ci0rCQlkMmlfRFNBcGFyYW1zOwotKwkJZDJpX05FVFNDQVBFX1NQS0FDOwotKwkJZDJpX05FVFNDQVBFX1NQS0k7Ci0rCQlkMmlfTmV0c2NhcGVfUlNBOwotKwkJZDJpX1BLQ1M3OwotKwkJZDJpX1BLQ1M3X0RJR0VTVDsKLSsJCWQyaV9QS0NTN19FTkNSWVBUOwotKwkJZDJpX1BLQ1M3X0VOQ19DT05URU5UOwotKwkJZDJpX1BLQ1M3X0VOVkVMT1BFOwotKwkJZDJpX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOwotKwkJZDJpX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlkMmlfUEtDUzdfU0lHTkVEOwotKwkJZDJpX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJZDJpX1BLQ1M3X1NJR05fRU5WRUxPUEU7Ci0rCQlkMmlfUEtDUzdfYmlvOwotKwkJZDJpX1BLQ1M3X2ZwOwotKwkJZDJpX1ByaXZhdGVLZXk7Ci0rCQlkMmlfUHVibGljS2V5OwotKwkJZDJpX1JTQVByaXZhdGVLZXk7Ci0rCQlkMmlfUlNBUHJpdmF0ZUtleV9iaW87Ci0rCQlkMmlfUlNBUHJpdmF0ZUtleV9mcDsKLSsJCWQyaV9SU0FQdWJsaWNLZXk7Ci0rCQlkMmlfWDUwOTsKLSsJCWQyaV9YNTA5X0FMR09SOwotKwkJZDJpX1g1MDlfQVRUUklCVVRFOwotKwkJZDJpX1g1MDlfQ0lORjsKLSsJCWQyaV9YNTA5X0NSTDsKLSsJCWQyaV9YNTA5X0NSTF9JTkZPOwotKwkJZDJpX1g1MDlfQ1JMX2JpbzsKLSsJCWQyaV9YNTA5X0NSTF9mcDsKLSsJCWQyaV9YNTA5X0VYVEVOU0lPTjsKLSsJCWQyaV9YNTA5X05BTUU7Ci0rCQlkMmlfWDUwOV9OQU1FX0VOVFJZOwotKwkJZDJpX1g1MDlfUEtFWTsKLSsJCWQyaV9YNTA5X1BVQktFWTsKLSsJCWQyaV9YNTA5X1JFUTsKLSsJCWQyaV9YNTA5X1JFUV9JTkZPOwotKwkJZDJpX1g1MDlfUkVRX2JpbzsKLSsJCWQyaV9YNTA5X1JFUV9mcDsKLSsJCWQyaV9YNTA5X1JFVk9LRUQ7Ci0rCQlkMmlfWDUwOV9TSUc7Ci0rCQlkMmlfWDUwOV9WQUw7Ci0rCQlkMmlfWDUwOV9iaW87Ci0rCQlkMmlfWDUwOV9mcDsKLSsJCURFU19jYmNfY2tzdW07Ci0rCQlERVNfY2JjX2VuY3J5cHQ7Ci0rCQlERVNfY2Jsb2NrX3ByaW50X2ZpbGU7Ci0rCQlERVNfY2ZiNjRfZW5jcnlwdDsKLSsJCURFU19jZmJfZW5jcnlwdDsKLSsJCURFU19kZWNyeXB0MzsKLSsJCURFU19lY2IzX2VuY3J5cHQ7Ci0rCQlERVNfZWNiX2VuY3J5cHQ7Ci0rCQlERVNfZWRlM19jYmNfZW5jcnlwdDsKLSsJCURFU19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlERVNfZWRlM19vZmI2NF9lbmNyeXB0OwotKwkJREVTX2VuY19yZWFkOwotKwkJREVTX2VuY193cml0ZTsKLSsJCURFU19lbmNyeXB0MTsKLSsJCURFU19lbmNyeXB0MjsKLSsJCURFU19lbmNyeXB0MzsKLSsJCURFU19mY3J5cHQ7Ci0rCQlERVNfaXNfd2Vha19rZXk7Ci0rCQlERVNfa2V5X3NjaGVkOwotKwkJREVTX25jYmNfZW5jcnlwdDsKLSsJCURFU19vZmI2NF9lbmNyeXB0OwotKwkJREVTX29mYl9lbmNyeXB0OwotKwkJREVTX29wdGlvbnM7Ci0rCQlERVNfcGNiY19lbmNyeXB0OwotKwkJREVTX3F1YWRfY2tzdW07Ci0rCQlERVNfcmFuZG9tX2tleTsKLSsJCV9vc3NsX29sZF9kZXNfcmFuZG9tX3NlZWQ7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfMnBhc3N3b3JkczsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF9wYXNzd29yZDsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF9wdzsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF9wd19zdHJpbmc7Ci0rCQlERVNfc2V0X2tleTsKLSsJCURFU19zZXRfb2RkX3Bhcml0eTsKLSsJCURFU19zdHJpbmdfdG9fMmtleXM7Ci0rCQlERVNfc3RyaW5nX3RvX2tleTsKLSsJCURFU194Y2JjX2VuY3J5cHQ7Ci0rCQlERVNfeHdoaXRlX2luMm91dDsKLSsJCWZjcnlwdF9ib2R5OwotKwkJaTJhX0FTTjFfSU5URUdFUjsKLSsJCWkyYV9BU04xX09CSkVDVDsKLSsJCWkyYV9BU04xX1NUUklORzsKLSsJCWkyZF9BU04xX0JJVF9TVFJJTkc7Ci0rCQlpMmRfQVNOMV9CT09MRUFOOwotKwkJaTJkX0FTTjFfSEVBREVSOwotKwkJaTJkX0FTTjFfSUE1U1RSSU5HOwotKwkJaTJkX0FTTjFfSU5URUdFUjsKLSsJCWkyZF9BU04xX09CSkVDVDsKLSsJCWkyZF9BU04xX09DVEVUX1NUUklORzsKLSsJCWkyZF9BU04xX1BSSU5UQUJMRTsKLSsJCWkyZF9BU04xX1NFVDsKLSsJCWkyZF9BU04xX1RZUEU7Ci0rCQlpMmRfQVNOMV9VVENUSU1FOwotKwkJaTJkX0FTTjFfYnl0ZXM7Ci0rCQlpMmRfREhwYXJhbXM7Ci0rCQlpMmRfRFNBUHJpdmF0ZUtleTsKLSsJCWkyZF9EU0FQcml2YXRlS2V5X2JpbzsKLSsJCWkyZF9EU0FQcml2YXRlS2V5X2ZwOwotKwkJaTJkX0RTQVB1YmxpY0tleTsKLSsJCWkyZF9EU0FwYXJhbXM7Ci0rCQlpMmRfTkVUU0NBUEVfU1BLQUM7Ci0rCQlpMmRfTkVUU0NBUEVfU1BLSTsKLSsJCWkyZF9OZXRzY2FwZV9SU0E7Ci0rCQlpMmRfUEtDUzc7Ci0rCQlpMmRfUEtDUzdfRElHRVNUOwotKwkJaTJkX1BLQ1M3X0VOQ1JZUFQ7Ci0rCQlpMmRfUEtDUzdfRU5DX0NPTlRFTlQ7Ci0rCQlpMmRfUEtDUzdfRU5WRUxPUEU7Ci0rCQlpMmRfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7Ci0rCQlpMmRfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWkyZF9QS0NTN19TSUdORUQ7Ci0rCQlpMmRfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlpMmRfUEtDUzdfU0lHTl9FTlZFTE9QRTsKLSsJCWkyZF9QS0NTN19iaW87Ci0rCQlpMmRfUEtDUzdfZnA7Ci0rCQlpMmRfUHJpdmF0ZUtleTsKLSsJCWkyZF9QdWJsaWNLZXk7Ci0rCQlpMmRfUlNBUHJpdmF0ZUtleTsKLSsJCWkyZF9SU0FQcml2YXRlS2V5X2JpbzsKLSsJCWkyZF9SU0FQcml2YXRlS2V5X2ZwOwotKwkJaTJkX1JTQVB1YmxpY0tleTsKLSsJCWkyZF9YNTA5OwotKwkJaTJkX1g1MDlfQUxHT1I7Ci0rCQlpMmRfWDUwOV9BVFRSSUJVVEU7Ci0rCQlpMmRfWDUwOV9DSU5GOwotKwkJaTJkX1g1MDlfQ1JMOwotKwkJaTJkX1g1MDlfQ1JMX0lORk87Ci0rCQlpMmRfWDUwOV9DUkxfYmlvOwotKwkJaTJkX1g1MDlfQ1JMX2ZwOwotKwkJaTJkX1g1MDlfRVhURU5TSU9OOwotKwkJaTJkX1g1MDlfTkFNRTsKLSsJCWkyZF9YNTA5X05BTUVfRU5UUlk7Ci0rCQlpMmRfWDUwOV9QS0VZOwotKwkJaTJkX1g1MDlfUFVCS0VZOwotKwkJaTJkX1g1MDlfUkVROwotKwkJaTJkX1g1MDlfUkVRX0lORk87Ci0rCQlpMmRfWDUwOV9SRVFfYmlvOwotKwkJaTJkX1g1MDlfUkVRX2ZwOwotKwkJaTJkX1g1MDlfUkVWT0tFRDsKLSsJCWkyZF9YNTA5X1NJRzsKLSsJCWkyZF9YNTA5X1ZBTDsKLSsJCWkyZF9YNTA5X2JpbzsKLSsJCWkyZF9YNTA5X2ZwOwotKwkJaWRlYV9jYmNfZW5jcnlwdDsKLSsJCWlkZWFfY2ZiNjRfZW5jcnlwdDsKLSsJCWlkZWFfZWNiX2VuY3J5cHQ7Ci0rCQlpZGVhX2VuY3J5cHQ7Ci0rCQlpZGVhX29mYjY0X2VuY3J5cHQ7Ci0rCQlpZGVhX29wdGlvbnM7Ci0rCQlpZGVhX3NldF9kZWNyeXB0X2tleTsKLSsJCWlkZWFfc2V0X2VuY3J5cHRfa2V5OwotKwkJbGhfZGVsZXRlOwotKwkJbGhfZG9hbGw7Ci0rCQlsaF9kb2FsbF9hcmc7Ci0rCQlsaF9mcmVlOwotKwkJbGhfaW5zZXJ0OwotKwkJbGhfbmV3OwotKwkJbGhfbm9kZV9zdGF0czsKLSsJCWxoX25vZGVfc3RhdHNfYmlvOwotKwkJbGhfbm9kZV91c2FnZV9zdGF0czsKLSsJCWxoX25vZGVfdXNhZ2Vfc3RhdHNfYmlvOwotKwkJbGhfcmV0cmlldmU7Ci0rCQlsaF9zdGF0czsKLSsJCWxoX3N0YXRzX2JpbzsKLSsJCWxoX3N0cmhhc2g7Ci0rCQlza19kZWxldGU7Ci0rCQlza19kZWxldGVfcHRyOwotKwkJc2tfZHVwOwotKwkJc2tfZmluZDsKLSsJCXNrX2ZyZWU7Ci0rCQlza19pbnNlcnQ7Ci0rCQlza19uZXc7Ci0rCQlza19wb3A7Ci0rCQlza19wb3BfZnJlZTsKLSsJCXNrX3B1c2g7Ci0rCQlza19zZXRfY21wX2Z1bmM7Ci0rCQlza19zaGlmdDsKLSsJCXNrX3Vuc2hpZnQ7Ci0rCQlza196ZXJvOwotKwkJQklPX2ZfbmJpb190ZXN0OwotKwkJQVNOMV9UWVBFX2dldDsKLSsJCUFTTjFfVFlQRV9zZXQ7Ci0rCQlQS0NTN19jb250ZW50X2ZyZWU7Ci0rCQlFUlJfbG9hZF9QS0NTN19zdHJpbmdzOwotKwkJWDUwOV9maW5kX2J5X2lzc3Vlcl9hbmRfc2VyaWFsOwotKwkJWDUwOV9maW5kX2J5X3N1YmplY3Q7Ci0rCQlQS0NTN19jdHJsOwotKwkJUEtDUzdfc2V0X3R5cGU7Ci0rCQlQS0NTN19zZXRfY29udGVudDsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX3NldDsKLSsJCVBLQ1M3X2FkZF9zaWduZXI7Ci0rCQlQS0NTN19hZGRfY2VydGlmaWNhdGU7Ci0rCQlQS0NTN19hZGRfY3JsOwotKwkJUEtDUzdfY29udGVudF9uZXc7Ci0rCQlQS0NTN19kYXRhU2lnbjsKLSsJCVBLQ1M3X2RhdGFWZXJpZnk7Ci0rCQlQS0NTN19kYXRhSW5pdDsKLSsJCVBLQ1M3X2FkZF9zaWduYXR1cmU7Ci0rCQlQS0NTN19jZXJ0X2Zyb21fc2lnbmVyX2luZm87Ci0rCQlQS0NTN19nZXRfc2lnbmVyX2luZm87Ci0rCQlFVlBfZGVsZXRlX2FsaWFzOwotKwkJRVZQX21kYzI7Ci0rCQlQRU1fcmVhZF9iaW9fUlNBUHVibGljS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19SU0FQdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHVibGljS2V5X2JpbzsKLSsJCWkyZF9SU0FQdWJsaWNLZXlfYmlvOwotKwkJUEVNX3JlYWRfUlNBUHVibGljS2V5OwotKwkJUEVNX3dyaXRlX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9SU0FQdWJsaWNLZXlfZnA7Ci0rCQlpMmRfUlNBUHVibGljS2V5X2ZwOwotKwkJQklPX2NvcHlfbmV4dF9yZXRyeTsKLSsJCVJTQV9mbGFnczsKLSsJCVg1MDlfU1RPUkVfYWRkX2NybDsKLSsJCVg1MDlfbG9hZF9jcmxfZmlsZTsKLSsJCUVWUF9yYzJfNDBfY2JjOwotKwkJRVZQX3JjNF80MDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2luaXQ7Ci0rCQlITUFDOwotKwkJSE1BQ19Jbml0OwotKwkJSE1BQ19VcGRhdGU7Ci0rCQlITUFDX0ZpbmFsOwotKwkJRVJSX2dldF9uZXh0X2Vycm9yX2xpYnJhcnk7Ci0rCQlFVlBfUEtFWV9jbXBfcGFyYW1ldGVyczsKLSsJCUhNQUNfY2xlYW51cDsKLSsJCUJJT19wdHJfY3RybDsKLSsJCUJJT19uZXdfZmlsZV9pbnRlcm5hbDsKLSsJCUJJT19uZXdfZnBfaW50ZXJuYWw7Ci0rCQlCSU9fc19maWxlX2ludGVybmFsOwotKwkJQk5fQkxJTkRJTkdfY29udmVydDsKLSsJCUJOX0JMSU5ESU5HX2ludmVydDsKLSsJCUJOX0JMSU5ESU5HX3VwZGF0ZTsKLSsJCVJTQV9ibGluZGluZ19vbjsKLSsJCVJTQV9ibGluZGluZ19vZmY7Ci0rCQlpMnRfQVNOMV9PQkpFQ1Q7Ci0rCQlCTl9CTElORElOR19uZXc7Ci0rCQlCTl9CTElORElOR19mcmVlOwotKwkJRVZQX2Nhc3Q1X2NiYzsKLSsJCUVWUF9jYXN0NV9jZmI2NDsKLSsJCUVWUF9jYXN0NV9lY2I7Ci0rCQlFVlBfY2FzdDVfb2ZiOwotKwkJQkZfZGVjcnlwdDsKLSsJCUNBU1Rfc2V0X2tleTsKLSsJCUNBU1RfZW5jcnlwdDsKLSsJCUNBU1RfZGVjcnlwdDsKLSsJCUNBU1RfZWNiX2VuY3J5cHQ7Ci0rCQlDQVNUX2NiY19lbmNyeXB0OwotKwkJQ0FTVF9jZmI2NF9lbmNyeXB0OwotKwkJQ0FTVF9vZmI2NF9lbmNyeXB0OwotKwkJUkMyX2RlY3J5cHQ7Ci0rCQlPQkpfY3JlYXRlX29iamVjdHM7Ci0rCQlCTl9leHA7Ci0rCQlCTl9tdWxfd29yZDsKLSsJCUJOX3N1Yl93b3JkOwotKwkJQk5fZGVjMmJuOwotKwkJQk5fYm4yZGVjOwotKwkJQklPX2doYm5fY3RybDsKLSsJCUNSWVBUT19mcmVlX2V4X2RhdGE7Ci0rCQlDUllQVE9fZ2V0X2V4X2RhdGE7Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGE7Ci0rCQlFUlJfbG9hZF9DUllQVE9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0NSWVBUT2xpYl9zdHJpbmdzOwotKwkJRVZQX1BLRVlfYml0czsKLSsJCU1ENV9UcmFuc2Zvcm07Ci0rCQlTSEExX1RyYW5zZm9ybTsKLSsJCVNIQV9UcmFuc2Zvcm07Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfY2hhaW47Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGE7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2VydDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9jaGFpbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9lcnJvcjsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9leF9kYXRhOwotKwkJQ1JZUFRPX2R1cF9leF9kYXRhOwotKwkJQ1JZUFRPX2dldF9uZXdfbG9ja2lkOwotKwkJQ1JZUFRPX25ld19leF9kYXRhOwotKwkJUlNBX3NldF9leF9kYXRhOwotKwkJUlNBX2dldF9leF9kYXRhOwotKwkJUlNBX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8xOwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMjsKLSsJCVJTQV9wYWRkaW5nX2FkZF9TU0x2MjM7Ci0rCQlSU0FfcGFkZGluZ19hZGRfbm9uZTsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMTsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVfMjsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMzsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX25vbmU7Ci0rCQlibl9hZGRfd29yZHM7Ci0rCQlkMmlfTmV0c2NhcGVfUlNBXzI7Ci0rCQlDUllQVE9fZ2V0X2V4X25ld19pbmRleDsKLSsJCVJJUEVNRDE2MF9Jbml0OwotKwkJUklQRU1EMTYwX1VwZGF0ZTsKLSsJCVJJUEVNRDE2MF9GaW5hbDsKLSsJCVJJUEVNRDE2MDsKLSsJCVJJUEVNRDE2MF9UcmFuc2Zvcm07Ci0rCQlSQzVfMzJfc2V0X2tleTsKLSsJCVJDNV8zMl9lY2JfZW5jcnlwdDsKLSsJCVJDNV8zMl9lbmNyeXB0OwotKwkJUkM1XzMyX2RlY3J5cHQ7Ci0rCQlSQzVfMzJfY2JjX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfY2ZiNjRfZW5jcnlwdDsKLSsJCVJDNV8zMl9vZmI2NF9lbmNyeXB0OwotKwkJQk5fYm4ybXBpOwotKwkJQk5fbXBpMmJuOwotKwkJQVNOMV9CSVRfU1RSSU5HX2dldF9iaXQ7Ci0rCQlBU04xX0JJVF9TVFJJTkdfc2V0X2JpdDsKLSsJCUJJT19nZXRfZXhfZGF0YTsKLSsJCUJJT19nZXRfZXhfbmV3X2luZGV4OwotKwkJQklPX3NldF9leF9kYXRhOwotKwkJWDUwOXYzX2dldF9rZXlfdXNhZ2U7Ci0rCQlYNTA5djNfc2V0X2tleV91c2FnZTsKLSsJCWEyaV9YNTA5djNfa2V5X3VzYWdlOwotKwkJaTJhX1g1MDl2M19rZXlfdXNhZ2U7Ci0rCQlFVlBfUEtFWV9kZWNyeXB0OwotKwkJRVZQX1BLRVlfZW5jcnlwdDsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fc2V0OwotKwkJUEtDUzdfYWRkX3JlY2lwaWVudDsKLSsJCVBLQ1M3X2FkZF9yZWNpcGllbnRfaW5mbzsKLSsJCVBLQ1M3X3NldF9jaXBoZXI7Ci0rCQlBU04xX1RZUEVfZ2V0X2ludF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVFlQRV9nZXRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1RZUEVfc2V0X2ludF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVFlQRV9zZXRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1VUQ1RJTUVfc2V0X3N0cmluZzsKLSsJCUVSUl9hZGRfZXJyb3JfZGF0YTsKLSsJCUVSUl9zZXRfZXJyb3JfZGF0YTsKLSsJCUVWUF9DSVBIRVJfYXNuMV90b19wYXJhbTsKLSsJCUVWUF9DSVBIRVJfcGFyYW1fdG9fYXNuMTsKLSsJCUVWUF9DSVBIRVJfZ2V0X2FzbjFfaXY7Ci0rCQlFVlBfQ0lQSEVSX3NldF9hc24xX2l2OwotKwkJRVZQX3JjNV8zMl8xMl8xNl9jYmM7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2NmYjY0OwotKwkJRVZQX3JjNV8zMl8xMl8xNl9lY2I7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X29mYjsKLSsJCWFzbjFfYWRkX2Vycm9yOwotKwkJZDJpX0FTTjFfQk1QU1RSSU5HOwotKwkJaTJkX0FTTjFfQk1QU1RSSU5HOwotKwkJQklPX2ZfYmVyOwotKwkJQk5faW5pdDsKLSsJCUNPTVBfQ1RYX25ldzsKLSsJCUNPTVBfQ1RYX2ZyZWU7Ci0rCQlDT01QX0NUWF9jb21wcmVzc19ibG9jazsKLSsJCUNPTVBfQ1RYX2V4cGFuZF9ibG9jazsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlPQkpfTkFNRV9hZGQ7Ci0rCQlCSU9fc29ja2V0X25iaW87Ci0rCQlFVlBfcmMyXzY0X2NiYzsKLSsJCU9CSl9OQU1FX2NsZWFudXA7Ci0rCQlPQkpfTkFNRV9nZXQ7Ci0rCQlPQkpfTkFNRV9pbml0OwotKwkJT0JKX05BTUVfbmV3X2luZGV4OwotKwkJT0JKX05BTUVfcmVtb3ZlOwotKwkJQk5fTU9OVF9DVFhfY29weTsKLSsJCUJJT19uZXdfc29ja3M0YV9jb25uZWN0OwotKwkJQklPX3Nfc29ja3M0YV9jb25uZWN0OwotKwkJUFJPWFlfc2V0X2Nvbm5lY3RfbW9kZTsKLSsJCVJBTkRfU1NMZWF5OwotKwkJUkFORF9zZXRfcmFuZF9tZXRob2Q7Ci0rCQlSU0FfbWVtb3J5X2xvY2s7Ci0rCQlibl9zdWJfd29yZHM7Ci0rCQlibl9tdWxfbm9ybWFsOwotKwkJYm5fbXVsX2NvbWJhODsKLSsJCWJuX211bF9jb21iYTQ7Ci0rCQlibl9zcXJfbm9ybWFsOwotKwkJYm5fc3FyX2NvbWJhODsKLSsJCWJuX3Nxcl9jb21iYTQ7Ci0rCQlibl9jbXBfd29yZHM7Ci0rCQlibl9tdWxfcmVjdXJzaXZlOwotKwkJYm5fbXVsX3BhcnRfcmVjdXJzaXZlOwotKwkJYm5fc3FyX3JlY3Vyc2l2ZTsKLSsJCWJuX211bF9sb3dfbm9ybWFsOwotKwkJQk5fUkVDUF9DVFhfaW5pdDsKLSsJCUJOX1JFQ1BfQ1RYX25ldzsKLSsJCUJOX1JFQ1BfQ1RYX2ZyZWU7Ci0rCQlCTl9SRUNQX0NUWF9zZXQ7Ci0rCQlCTl9tb2RfbXVsX3JlY2lwcm9jYWw7Ci0rCQlCTl9tb2RfZXhwX3JlY3A7Ci0rCQlCTl9kaXZfcmVjcDsKLSsJCUJOX0NUWF9pbml0OwotKwkJQk5fTU9OVF9DVFhfaW5pdDsKLSsJCVJBTkRfZ2V0X3JhbmRfbWV0aG9kOwotKwkJUEtDUzdfYWRkX2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2FkZF9zaWduZWRfYXR0cmlidXRlOwotKwkJUEtDUzdfZGlnZXN0X2Zyb21fYXR0cmlidXRlczsKLSsJCVBLQ1M3X2dldF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19nZXRfaXNzdWVyX2FuZF9zZXJpYWw7Ci0rCQlQS0NTN19nZXRfc2lnbmVkX2F0dHJpYnV0ZTsKLSsJCUNPTVBfY29tcHJlc3NfYmxvY2s7Ci0rCQlDT01QX2V4cGFuZF9ibG9jazsKLSsJCUNPTVBfcmxlOwotKwkJQ09NUF96bGliOwotKwkJbXNfdGltZV9kaWZmOwotKwkJbXNfdGltZV9uZXc7Ci0rCQltc190aW1lX2ZyZWU7Ci0rCQltc190aW1lX2NtcDsKLSsJCW1zX3RpbWVfZ2V0OwotKwkJUEtDUzdfc2V0X2F0dHJpYnV0ZXM7Ci0rCQlQS0NTN19zZXRfc2lnbmVkX2F0dHJpYnV0ZXM7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGU7Ci0rCQlYNTA5X0FUVFJJQlVURV9kdXA7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9jaGVjazsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX3ByaW50OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfc2V0OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfc2V0X3N0cmluZzsKLSsJCUFTTjFfVElNRV9wcmludDsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX2ZyZWU7Ci0rCQlCQVNJQ19DT05TVFJBSU5UU19uZXc7Ci0rCQlFUlJfbG9hZF9YNTA5VjNfc3RyaW5nczsKLSsJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfZnJlZTsKLSsJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfbmV3OwotKwkJT0JKX3R4dDJvYmo7Ci0rCQlQRU1fcmVhZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3JlYWRfTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fcmVhZF9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV9yZWFkX2Jpb19OU19DRVJUX1NFUTsKLSsJCVBFTV93cml0ZV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3dyaXRlX05TX0NFUlRfU0VROwotKwkJUEVNX3dyaXRlX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3dyaXRlX2Jpb19OU19DRVJUX1NFUTsKLSsJCVg1MDlWM19FWFRfYWRkOwotKwkJWDUwOVYzX0VYVF9hZGRfYWxpYXM7Ci0rCQlYNTA5VjNfRVhUX2FkZF9jb25mOwotKwkJWDUwOVYzX0VYVF9jbGVhbnVwOwotKwkJWDUwOVYzX0VYVF9jb25mOwotKwkJWDUwOVYzX0VYVF9jb25mX25pZDsKLSsJCVg1MDlWM19FWFRfZ2V0OwotKwkJWDUwOVYzX0VYVF9nZXRfbmlkOwotKwkJWDUwOVYzX0VYVF9wcmludDsKLSsJCVg1MDlWM19FWFRfcHJpbnRfZnA7Ci0rCQlYNTA5VjNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlOwotKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sOwotKwkJWDUwOVYzX2FkZF92YWx1ZV9pbnQ7Ci0rCQlYNTA5VjNfY29uZl9mcmVlOwotKwkJWDUwOVYzX2dldF92YWx1ZV9ib29sOwotKwkJWDUwOVYzX2dldF92YWx1ZV9pbnQ7Ci0rCQlYNTA5VjNfcGFyc2VfbGlzdDsKLSsJCWQyaV9BU04xX0dFTkVSQUxJWkVEVElNRTsKLSsJCWQyaV9BU04xX1RJTUU7Ci0rCQlkMmlfQkFTSUNfQ09OU1RSQUlOVFM7Ci0rCQlkMmlfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCWQyaV9leHRfa3U7Ci0rCQlleHRfa3VfZnJlZTsKLSsJCWV4dF9rdV9uZXc7Ci0rCQlpMmRfQVNOMV9HRU5FUkFMSVpFRFRJTUU7Ci0rCQlpMmRfQVNOMV9USU1FOwotKwkJaTJkX0JBU0lDX0NPTlNUUkFJTlRTOwotKwkJaTJkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlpMmRfZXh0X2t1OwotKwkJRVZQX01EX0NUWF9jb3B5OwotKwkJaTJkX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWQyaV9BU04xX0VOVU1FUkFURUQ7Ci0rCQlBU04xX0VOVU1FUkFURURfc2V0OwotKwkJQVNOMV9FTlVNRVJBVEVEX2dldDsKLSsJCUJOX3RvX0FTTjFfRU5VTUVSQVRFRDsKLSsJCUFTTjFfRU5VTUVSQVRFRF90b19CTjsKLSsJCWkyYV9BU04xX0VOVU1FUkFURUQ7Ci0rCQlhMmlfQVNOMV9FTlVNRVJBVEVEOwotKwkJaTJkX0dFTkVSQUxfTkFNRTsKLSsJCWQyaV9HRU5FUkFMX05BTUU7Ci0rCQlHRU5FUkFMX05BTUVfbmV3OwotKwkJR0VORVJBTF9OQU1FX2ZyZWU7Ci0rCQlHRU5FUkFMX05BTUVTX25ldzsKLSsJCUdFTkVSQUxfTkFNRVNfZnJlZTsKLSsJCWQyaV9HRU5FUkFMX05BTUVTOwotKwkJaTJkX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnZfR0VORVJBTF9OQU1FUzsKLSsJCWkyc19BU04xX09DVEVUX1NUUklORzsKLSsJCXMyaV9BU04xX09DVEVUX1NUUklORzsKLSsJCVg1MDlWM19FWFRfY2hlY2tfY29uZjsKLSsJCWhleF90b19zdHJpbmc7Ci0rCQlzdHJpbmdfdG9faGV4OwotKwkJREVTX2VkZTNfY2JjbV9lbmNyeXB0OwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVA7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQOwotKwkJWDUwOV9DUkxfcHJpbnRfZnA7Ci0rCQlYNTA5X0NSTF9wcmludDsKLSsJCWkydl9HRU5FUkFMX05BTUU7Ci0rCQl2MmlfR0VORVJBTF9OQU1FOwotKwkJaTJkX1BLRVlfVVNBR0VfUEVSSU9EOwotKwkJZDJpX1BLRVlfVVNBR0VfUEVSSU9EOwotKwkJUEtFWV9VU0FHRV9QRVJJT0RfbmV3OwotKwkJUEtFWV9VU0FHRV9QRVJJT0RfZnJlZTsKLSsJCXYyaV9HRU5FUkFMX05BTUVTOwotKwkJaTJzX0FTTjFfSU5URUdFUjsKLSsJCVg1MDlWM19FWFRfZDJpOwotKwkJbmFtZV9jbXA7Ci0rCQlzdHJfZHVwOwotKwkJaTJzX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWkyc19BU04xX0VOVU1FUkFURURfVEFCTEU7Ci0rCQlCSU9fc19sb2c7Ci0rCQlCSU9fZl9yZWxpYWJsZTsKLSsJCVBLQ1M3X2RhdGFGaW5hbDsKLSsJCVBLQ1M3X2RhdGFEZWNvZGU7Ci0rCQlYNTA5VjNfRVhUX0NSTF9hZGRfY29uZjsKLSsJCUJOX3NldF9wYXJhbXM7Ci0rCQlCTl9nZXRfcGFyYW1zOwotKwkJQklPX2dldF9leF9udW07Ci0rCQlCSU9fc2V0X2V4X2ZyZWVfZnVuYzsKLSsJCUVWUF9yaXBlbWQxNjA7Ci0rCQlBU04xX1RJTUVfc2V0OwotKwkJaTJkX0FVVEhPUklUWV9LRVlJRDsKLSsJCWQyaV9BVVRIT1JJVFlfS0VZSUQ7Ci0rCQlBVVRIT1JJVFlfS0VZSURfbmV3OwotKwkJQVVUSE9SSVRZX0tFWUlEX2ZyZWU7Ci0rCQlBU04xX3NlcV91bnBhY2s7Ci0rCQlBU04xX3NlcV9wYWNrOwotKwkJQVNOMV91bnBhY2tfc3RyaW5nOwotKwkJQVNOMV9wYWNrX3N0cmluZzsKLSsJCVBLQ1MxMl9wYWNrX3NhZmViYWc7Ci0rCQlQS0NTMTJfTUFLRV9LRVlCQUc7Ci0rCQlQS0NTOF9lbmNyeXB0OwotKwkJUEtDUzEyX01BS0VfU0hLRVlCQUc7Ci0rCQlQS0NTMTJfcGFja19wN2RhdGE7Ci0rCQlQS0NTMTJfcGFja19wN2VuY2RhdGE7Ci0rCQlQS0NTMTJfYWRkX2xvY2Fsa2V5aWQ7Ci0rCQlQS0NTMTJfYWRkX2ZyaWVuZGx5bmFtZV9hc2M7Ci0rCQlQS0NTMTJfYWRkX2ZyaWVuZGx5bmFtZV91bmk7Ci0rCQlQS0NTMTJfZ2V0X2ZyaWVuZGx5bmFtZTsKLSsJCVBLQ1MxMl9wYmVfY3J5cHQ7Ci0rCQlQS0NTMTJfZGVjcnlwdF9kMmk7Ci0rCQlQS0NTMTJfaTJkX2VuY3J5cHQ7Ci0rCQlQS0NTMTJfaW5pdDsKLSsJCVBLQ1MxMl9rZXlfZ2VuX2FzYzsKLSsJCVBLQ1MxMl9rZXlfZ2VuX3VuaTsKLSsJCVBLQ1MxMl9nZW5fbWFjOwotKwkJUEtDUzEyX3ZlcmlmeV9tYWM7Ci0rCQlQS0NTMTJfc2V0X21hYzsKLSsJCVBLQ1MxMl9zZXR1cF9tYWM7Ci0rCQlPUEVOU1NMX2FzYzJ1bmk7Ci0rCQlPUEVOU1NMX3VuaTJhc2M7Ci0rCQlpMmRfUEtDUzEyX0JBR1M7Ci0rCQlQS0NTMTJfQkFHU19uZXc7Ci0rCQlkMmlfUEtDUzEyX0JBR1M7Ci0rCQlQS0NTMTJfQkFHU19mcmVlOwotKwkJaTJkX1BLQ1MxMjsKLSsJCWQyaV9QS0NTMTI7Ci0rCQlQS0NTMTJfbmV3OwotKwkJUEtDUzEyX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyX01BQ19EQVRBOwotKwkJUEtDUzEyX01BQ19EQVRBX25ldzsKLSsJCWQyaV9QS0NTMTJfTUFDX0RBVEE7Ci0rCQlQS0NTMTJfTUFDX0RBVEFfZnJlZTsKLSsJCWkyZF9QS0NTMTJfU0FGRUJBRzsKLSsJCVBLQ1MxMl9TQUZFQkFHX25ldzsKLSsJCWQyaV9QS0NTMTJfU0FGRUJBRzsKLSsJCVBLQ1MxMl9TQUZFQkFHX2ZyZWU7Ci0rCQlFUlJfbG9hZF9QS0NTMTJfc3RyaW5nczsKLSsJCVBLQ1MxMl9QQkVfYWRkOwotKwkJUEtDUzhfYWRkX2tleXVzYWdlOwotKwkJUEtDUzEyX2dldF9hdHRyX2dlbjsKLSsJCVBLQ1MxMl9wYXJzZTsKLSsJCVBLQ1MxMl9jcmVhdGU7Ci0rCQlpMmRfUEtDUzEyX2JpbzsKLSsJCWkyZF9QS0NTMTJfZnA7Ci0rCQlkMmlfUEtDUzEyX2JpbzsKLSsJCWQyaV9QS0NTMTJfZnA7Ci0rCQlpMmRfUEJFUEFSQU07Ci0rCQlQQkVQQVJBTV9uZXc7Ci0rCQlkMmlfUEJFUEFSQU07Ci0rCQlQQkVQQVJBTV9mcmVlOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX25ldzsKLSsJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19mcmVlOwotKwkJRVZQX1BLQ1M4MlBLRVk7Ci0rCQlFVlBfUEtFWTJQS0NTODsKLSsJCVBLQ1M4X3NldF9icm9rZW47Ci0rCQlFVlBfUEJFX0FMR09SX0NpcGhlckluaXQ7Ci0rCQlFVlBfUEJFX2FsZ19hZGQ7Ci0rCQlQS0NTNV9wYmVfc2V0OwotKwkJRVZQX1BCRV9jbGVhbnVwOwotKwkJaTJkX1NYTkVUOwotKwkJZDJpX1NYTkVUOwotKwkJU1hORVRfbmV3OwotKwkJU1hORVRfZnJlZTsKLSsJCWkyZF9TWE5FVElEOwotKwkJZDJpX1NYTkVUSUQ7Ci0rCQlTWE5FVElEX25ldzsKLSsJCVNYTkVUSURfZnJlZTsKLSsJCURTQV9TSUdfbmV3OwotKwkJRFNBX1NJR19mcmVlOwotKwkJRFNBX2RvX3NpZ247Ci0rCQlEU0FfZG9fdmVyaWZ5OwotKwkJZDJpX0RTQV9TSUc7Ci0rCQlpMmRfRFNBX1NJRzsKLSsJCWkyZF9BU04xX1ZJU0lCTEVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9WSVNJQkxFU1RSSU5HOwotKwkJaTJkX0FTTjFfVVRGOFNUUklORzsKLSsJCWQyaV9BU04xX1VURjhTVFJJTkc7Ci0rCQlpMmRfRElSRUNUT1JZU1RSSU5HOwotKwkJZDJpX0RJUkVDVE9SWVNUUklORzsKLSsJCWkyZF9ESVNQTEFZVEVYVDsKLSsJCWQyaV9ESVNQTEFZVEVYVDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5OwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDk7Ci0rCQlpMmRfUEJLREYyUEFSQU07Ci0rCQlQQktERjJQQVJBTV9uZXc7Ci0rCQlkMmlfUEJLREYyUEFSQU07Ci0rCQlQQktERjJQQVJBTV9mcmVlOwotKwkJaTJkX1BCRTJQQVJBTTsKLSsJCVBCRTJQQVJBTV9uZXc7Ci0rCQlkMmlfUEJFMlBBUkFNOwotKwkJUEJFMlBBUkFNX2ZyZWU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOwotKwkJaTJkX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKLSsJCWQyaV9BU04xX1NFVF9PRl9TWE5FVElEOwotKwkJaTJkX0FTTjFfU0VUX09GX1NYTkVUSUQ7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUE9MSUNZUVVBTElORk87Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZUVVBTElORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOwotKwkJU1hORVRfYWRkX2lkX2FzYzsKLSsJCVNYTkVUX2FkZF9pZF91bG9uZzsKLSsJCVNYTkVUX2FkZF9pZF9JTlRFR0VSOwotKwkJU1hORVRfZ2V0X2lkX2FzYzsKLSsJCVNYTkVUX2dldF9pZF91bG9uZzsKLSsJCVNYTkVUX2dldF9pZF9JTlRFR0VSOwotKwkJWDUwOVYzX3NldF9jb25mX2xoYXNoOwotKwkJaTJkX0NFUlRJRklDQVRFUE9MSUNJRVM7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX25ldzsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfZnJlZTsKLSsJCWQyaV9DRVJUSUZJQ0FURVBPTElDSUVTOwotKwkJaTJkX1BPTElDWUlORk87Ci0rCQlQT0xJQ1lJTkZPX25ldzsKLSsJCWQyaV9QT0xJQ1lJTkZPOwotKwkJUE9MSUNZSU5GT19mcmVlOwotKwkJaTJkX1BPTElDWVFVQUxJTkZPOwotKwkJUE9MSUNZUVVBTElORk9fbmV3OwotKwkJZDJpX1BPTElDWVFVQUxJTkZPOwotKwkJUE9MSUNZUVVBTElORk9fZnJlZTsKLSsJCWkyZF9VU0VSTk9USUNFOwotKwkJVVNFUk5PVElDRV9uZXc7Ci0rCQlkMmlfVVNFUk5PVElDRTsKLSsJCVVTRVJOT1RJQ0VfZnJlZTsKLSsJCWkyZF9OT1RJQ0VSRUY7Ci0rCQlOT1RJQ0VSRUZfbmV3OwotKwkJZDJpX05PVElDRVJFRjsKLSsJCU5PVElDRVJFRl9mcmVlOwotKwkJWDUwOVYzX2dldF9zdHJpbmc7Ci0rCQlYNTA5VjNfZ2V0X3NlY3Rpb247Ci0rCQlYNTA5VjNfc3RyaW5nX2ZyZWU7Ci0rCQlYNTA5VjNfc2VjdGlvbl9mcmVlOwotKwkJWDUwOVYzX3NldF9jdHg7Ci0rCQlzMmlfQVNOMV9JTlRFR0VSOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fbWFsbG9jX2xvY2tlZDsKLSsJCUNSWVBUT19mcmVlX2xvY2tlZDsKLSsJCUJOX21vZF9leHAyX21vbnQ7Ci0rCQlFUlJfZ2V0X2Vycm9yX2xpbmVfZGF0YTsKLSsJCUVSUl9wZWVrX2Vycm9yX2xpbmVfZGF0YTsKLSsJCVBLQ1MxMl9QQkVfa2V5aXZnZW47Ci0rCQlYNTA5X0FMR09SX2R1cDsKLSsJCWQyaV9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOwotKwkJaTJkX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7Ci0rCQlpMmRfQ1JMX0RJU1RfUE9JTlRTOwotKwkJQ1JMX0RJU1RfUE9JTlRTX25ldzsKLSsJCUNSTF9ESVNUX1BPSU5UU19mcmVlOwotKwkJZDJpX0NSTF9ESVNUX1BPSU5UUzsKLSsJCWkyZF9ESVNUX1BPSU5UOwotKwkJRElTVF9QT0lOVF9uZXc7Ci0rCQlkMmlfRElTVF9QT0lOVDsKLSsJCURJU1RfUE9JTlRfZnJlZTsKLSsJCWkyZF9ESVNUX1BPSU5UX05BTUU7Ci0rCQlESVNUX1BPSU5UX05BTUVfbmV3OwotKwkJRElTVF9QT0lOVF9OQU1FX2ZyZWU7Ci0rCQlkMmlfRElTVF9QT0lOVF9OQU1FOwotKwkJWDUwOVYzX2FkZF92YWx1ZV91Y2hhcjsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FUVFJJQlVURTsKLSsJCWkyZF9BU04xX1NFVF9PRl9BU04xX1RZUEU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOwotKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FUVFJJQlVURTsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7Ci0rCQlYNTA5VjNfRVhUX2kyZDsKLSsJCVg1MDlWM19FWFRfdmFsX3BybjsKLSsJCVg1MDlWM19FWFRfYWRkX2xpc3Q7Ci0rCQlFVlBfQ0lQSEVSX3R5cGU7Ci0rCQlFVlBfUEJFX0NpcGhlckluaXQ7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2xfbmY7Ci0rCQlkMmlfQVNOMV9VSU5URUdFUjsKLSsJCXNrX3ZhbHVlOwotKwkJc2tfbnVtOwotKwkJc2tfc2V0OwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKLSsJCXNrX3NvcnQ7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0NSTDsKLSsJCWkyZF9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOwotKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlQS0NTNV9QQkVfYWRkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTODsKLSsJCWkyZF9QS0NTOF9mcDsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfYmlvX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlkMmlfUEtDUzhfYmlvOwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fd3JpdGVfYmlvX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9QS0NTODsKLSsJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2JpbzsKLSsJCWQyaV9QS0NTOF9mcDsKLSsJCVBFTV93cml0ZV9QS0NTODsKLSsJCVBFTV9yZWFkX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9QOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M4OwotKwkJUEVNX3dyaXRlX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fd3JpdGVfUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M1X1BCRV9rZXlpdmdlbjsKLSsJCWkyZF9QS0NTOF9iaW87Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2JpbzsKLSsJCUJJT19zX2JpbzsKLSsJCVBLQ1M1X3BiZTJfc2V0OwotKwkJUEtDUzVfUEJLREYyX0hNQUNfU0hBMTsKLSsJCVBLQ1M1X3YyX1BCRV9rZXlpdmdlbjsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX1BLQ1M4UHJpdmF0ZUtleTsKLSsJCUJJT19jdHJsX2dldF9yZWFkX3JlcXVlc3Q7Ci0rCQlCSU9fY3RybF9wZW5kaW5nOwotKwkJQklPX2N0cmxfd3BlbmRpbmc7Ci0rCQlCSU9fbmV3X2Jpb19wYWlyOwotKwkJQklPX2N0cmxfZ2V0X3dyaXRlX2d1YXJhbnRlZTsKLSsJCUNSWVBUT19udW1fbG9ja3M7Ci0rCQlDT05GX2xvYWRfYmlvOwotKwkJQ09ORl9sb2FkX2ZwOwotKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfT0JKRUNUOwotKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfT0JKRUNUOwotKwkJUEtDUzdfc2lnbmF0dXJlVmVyaWZ5OwotKwkJUlNBX3NldF9tZXRob2Q7Ci0rCQlSU0FfZ2V0X21ldGhvZDsKLSsJCVJTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlSU0FfY2hlY2tfa2V5OwotKwkJT0JKX29iajJ0eHQ7Ci0rCQlEU0FfZHVwX0RIOwotKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbnM7Ci0rCQlYNTA5X1JFUV9zZXRfZXh0ZW5zaW9uX25pZHM7Ci0rCQlCSU9fbndyaXRlOwotKwkJWDUwOV9SRVFfZXh0ZW5zaW9uX25pZDsKLSsJCUJJT19ucmVhZDsKLSsJCVg1MDlfUkVRX2dldF9leHRlbnNpb25fbmlkczsKLSsJCUJJT19ud3JpdGUwOwotKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnNfbmlkOwotKwkJQklPX25yZWFkMDsKLSsJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zOwotKwkJQklPX25ld19tZW1fYnVmOwotKwkJREhfc2V0X2V4X2RhdGE7Ci0rCQlESF9zZXRfbWV0aG9kOwotKwkJRFNBX09wZW5TU0w7Ci0rCQlESF9nZXRfZXhfZGF0YTsKLSsJCURIX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlEU0FfbmV3X21ldGhvZDsKLSsJCURIX25ld19tZXRob2Q7Ci0rCQlESF9PcGVuU1NMOwotKwkJRFNBX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlESF9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlEU0Ffc2V0X2V4X2RhdGE7Ci0rCQlESF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlEU0FfZ2V0X2V4X2RhdGE7Ci0rCQlYNTA5VjNfRVhUX1JFUV9hZGRfY29uZjsKLSsJCU5FVFNDQVBFX1NQS0lfcHJpbnQ7Ci0rCQlORVRTQ0FQRV9TUEtJX3NldF9wdWJrZXk7Ci0rCQlORVRTQ0FQRV9TUEtJX2I2NF9lbmNvZGU7Ci0rCQlORVRTQ0FQRV9TUEtJX2dldF9wdWJrZXk7Ci0rCQlORVRTQ0FQRV9TUEtJX2I2NF9kZWNvZGU7Ci0rCQlVVEY4X3B1dGM7Ci0rCQlVVEY4X2dldGM7Ci0rCQlSU0FfbnVsbF9tZXRob2Q7Ci0rCQlBU04xX3RhZzJzdHI7Ci0rCQlCSU9fY3RybF9yZXNldF9yZWFkX3JlcXVlc3Q7Ci0rCQlESVNQTEFZVEVYVF9uZXc7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9mcmVlOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfZDJpOwotKwkJWDUwOV9zZXRfZXhfZGF0YTsKLSsJCVg1MDlfcmVqZWN0X3NldF9iaXRfYXNjOwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV90eHQ7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X05JRDsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwOwotKwkJUEVNX3JlYWRfWDUwOV9BVVg7Ci0rCQlkMmlfQVVUSE9SSVRZX0lORk9fQUNDRVNTOwotKwkJUEVNX3dyaXRlX1BVQktFWTsKLSsJCUFDQ0VTU19ERVNDUklQVElPTl9uZXc7Ci0rCQlYNTA5X0NFUlRfQVVYX2ZyZWU7Ci0rCQlkMmlfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJWDUwOV90cnVzdF9jbGVhcjsKLSsJCVg1MDlfVFJVU1RfYWRkOwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX25ldzsKLSsJCVg1MDlfYWxpYXNfc2V0MTsKLSsJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX2ZyZWU7Ci0rCQlFVlBfUEtFWV9nZXQxX0RTQTsKLSsJCUFTTjFfQk1QU1RSSU5HX25ldzsKLSsJCUFTTjFfbWJzdHJpbmdfY29weTsKLSsJCUFTTjFfVVRGOFNUUklOR19uZXc7Ci0rCQlEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJaTJkX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCUFTTjFfVDYxU1RSSU5HX2ZyZWU7Ci0rCQlEU0Ffc2V0X21ldGhvZDsKLSsJCVg1MDlfZ2V0X2V4X2RhdGE7Ci0rCQlBU04xX1NUUklOR190eXBlOwotKwkJWDUwOV9QVVJQT1NFX2dldF9ieV9zbmFtZTsKLSsJCUFTTjFfVElNRV9mcmVlOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfY21wOwotKwkJQVNOMV9CSVRfU1RSSU5HX25ldzsKLSsJCVg1MDlfZ2V0X2V4dF9kMmk7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9BVVg7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrX2FzYzsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZfbWFza19hc2M7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQV9QVUJLRVk7Ci0rCQlBU04xX0lOVEVHRVJfY21wOwotKwkJZDJpX1JTQV9QVUJLRVlfZnA7Ci0rCQlYNTA5X3RydXN0X3NldF9iaXRfYXNjOwotKwkJUEVNX3dyaXRlX2Jpb19EU0FfUFVCS0VZOwotKwkJWDUwOV9TVE9SRV9DVFhfZnJlZTsKLSsJCUVWUF9QS0VZX3NldDFfRFNBOwotKwkJaTJkX0RTQV9QVUJLRVlfZnA7Ci0rCQlYNTA5X2xvYWRfY2VydF9jcmxfZmlsZTsKLSsJCUFTTjFfVElNRV9uZXc7Ci0rCQlpMmRfUlNBX1BVQktFWTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3B1cnBvc2VfaW5oZXJpdDsKLSsJCVBFTV9yZWFkX1JTQV9QVUJLRVk7Ci0rCQlkMmlfWDUwOV9BVVg7Ci0rCQlpMmRfRFNBX1BVQktFWTsKLSsJCVg1MDlfQ0VSVF9BVVhfcHJpbnQ7Ci0rCQlQRU1fcmVhZF9EU0FfUFVCS0VZOwotKwkJaTJkX1JTQV9QVUJLRVlfYmlvOwotKwkJQVNOMV9CSVRfU1RSSU5HX251bV9hc2M7Ci0rCQlpMmRfUFVCS0VZOwotKwkJQVNOMV9VVENUSU1FX2ZyZWU7Ci0rCQlEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJWDUwOV9QVVJQT1NFX2dldF9ieV9pZDsKLSsJCUFDQ0VTU19ERVNDUklQVElPTl9mcmVlOwotKwkJUEVNX3JlYWRfYmlvX1BVQktFWTsKLSsJCUFTTjFfU1RSSU5HX3NldF9ieV9OSUQ7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2lkOwotKwkJRElTUExBWVRFWFRfZnJlZTsKLSsJCU9USEVSTkFNRV9uZXc7Ci0rCQlYNTA5X0NFUlRfQVVYX25ldzsKLSsJCVg1MDlfVFJVU1RfY2xlYW51cDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfT0JKOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9kMmk7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MF9uYW1lOwotKwkJUEVNX3JlYWRfUFVCS0VZOwotKwkJaTJkX0RTQV9QVUJLRVlfYmlvOwotKwkJaTJkX09USEVSTkFNRTsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX0JJVF9TVFJJTkdfc2V0X2FzYzsKLSsJCVg1MDlfZ2V0X2V4X25ld19pbmRleDsKLSsJCUFTTjFfU1RSSU5HX1RBQkxFX2NsZWFudXA7Ci0rCQlYNTA5X1RSVVNUX2dldF9ieV9pZDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfdHJ1c3Q7Ci0rCQlBU04xX1NUUklOR19sZW5ndGg7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfbmV3OwotKwkJWDUwOVYzX2dldF9kMmk7Ci0rCQlBU04xX0VOVU1FUkFURURfZnJlZTsKLSsJCWkyZF9YNTA5X0NFUlRfQVVYOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RydXN0OwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFzazsKLSsJCVg1MDlfU1RPUkVfQ1RYX25ldzsKLSsJCUVWUF9QS0VZX2dldDFfUlNBOwotKwkJRElSRUNUT1JZU1RSSU5HX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfWDUwOV9BVVg7Ci0rCQlBU04xX09DVEVUX1NUUklOR19zZXQ7Ci0rCQlkMmlfRFNBX1BVQktFWV9mcDsKLSsJCWQyaV9SU0FfUFVCS0VZOwotKwkJWDUwOV9UUlVTVF9nZXQwX25hbWU7Ci0rCQlYNTA5X1RSVVNUX2dldDA7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfZnJlZTsKLSsJCUFTTjFfSUE1U1RSSU5HX25ldzsKLSsJCWQyaV9EU0FfUFVCS0VZOwotKwkJWDUwOV9jaGVja19wdXJwb3NlOwotKwkJQVNOMV9FTlVNRVJBVEVEX25ldzsKLSsJCWQyaV9SU0FfUFVCS0VZX2JpbzsKLSsJCWQyaV9QVUJLRVk7Ci0rCQlYNTA5X1RSVVNUX2dldF90cnVzdDsKLSsJCVg1MDlfVFJVU1RfZ2V0X2ZsYWdzOwotKwkJQVNOMV9CTVBTVFJJTkdfZnJlZTsKLSsJCUFTTjFfVDYxU1RSSU5HX25ldzsKLSsJCUFTTjFfVVRDVElNRV9uZXc7Ci0rCQlpMmRfQVVUSE9SSVRZX0lORk9fQUNDRVNTOwotKwkJRVZQX1BLRVlfc2V0MV9SU0E7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfcHVycG9zZTsKLSsJCUFTTjFfSUE1U1RSSU5HX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQVVYOwotKwkJWDUwOV9QVVJQT1NFX2dldF9jb3VudDsKLSsJCUNSWVBUT19hZGRfaW5mbzsKLSsJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfdHh0OwotKwkJQVNOMV9TVFJJTkdfZ2V0X2RlZmF1bHRfbWFzazsKLSsJCVg1MDlfYWxpYXNfZ2V0MDsKLSsJCUFTTjFfU1RSSU5HX2RhdGE7Ci0rCQlpMmRfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJWDUwOV90cnVzdF9zZXRfYml0OwotKwkJQVNOMV9CSVRfU1RSSU5HX2ZyZWU7Ci0rCQlQRU1fcmVhZF9iaW9fUlNBX1BVQktFWTsKLSsJCVg1MDlfYWRkMV9yZWplY3Rfb2JqZWN0OwotKwkJWDUwOV9jaGVja190cnVzdDsKLSsJCVBFTV9yZWFkX2Jpb19EU0FfUFVCS0VZOwotKwkJWDUwOV9QVVJQT1NFX2FkZDsKLSsJCUFTTjFfU1RSSU5HX1RBQkxFX2dldDsKLSsJCUFTTjFfVVRGOFNUUklOR19mcmVlOwotKwkJZDJpX0RTQV9QVUJLRVlfYmlvOwotKwkJUEVNX3dyaXRlX1JTQV9QVUJLRVk7Ci0rCQlkMmlfT1RIRVJOQU1FOwotKwkJWDUwOV9yZWplY3Rfc2V0X2JpdDsKLSsJCVBFTV93cml0ZV9EU0FfUFVCS0VZOwotKwkJWDUwOV9QVVJQT1NFX2dldDBfc25hbWU7Ci0rCQlFVlBfUEtFWV9zZXQxX0RIOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZHVwOwotKwkJQVNOMV9CSVRfU1RSSU5HX3NldDsKLSsJCVg1MDlfVFJVU1RfZ2V0X2NvdW50OwotKwkJQVNOMV9JTlRFR0VSX2ZyZWU7Ci0rCQlPVEhFUk5BTUVfZnJlZTsKLSsJCWkyZF9SU0FfUFVCS0VZX2ZwOwotKwkJQVNOMV9JTlRFR0VSX2R1cDsKLSsJCWQyaV9YNTA5X0NFUlRfQVVYOwotKwkJUEVNX3dyaXRlX2Jpb19QVUJLRVk7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfZnJlZTsKLSsJCVg1MDlfUFVSUE9TRV9jbGVhbnVwOwotKwkJQVNOMV9tYnN0cmluZ19uY29weTsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX25ldzsKLSsJCUVWUF9QS0VZX2dldDFfREg7Ci0rCQlBU04xX09DVEVUX1NUUklOR19uZXc7Ci0rCQlBU04xX0lOVEVHRVJfbmV3OwotKwkJaTJkX1g1MDlfQVVYOwotKwkJQVNOMV9CSVRfU1RSSU5HX25hbWVfcHJpbnQ7Ci0rCQlYNTA5X2NtcDsKLSsJCUFTTjFfU1RSSU5HX2xlbmd0aF9zZXQ7Ci0rCQlESVJFQ1RPUllTVFJJTkdfbmV3OwotKwkJWDUwOV9hZGQxX3RydXN0X29iamVjdDsKLSsJCVBLQ1MxMl9uZXdwYXNzOwotKwkJU01JTUVfd3JpdGVfUEtDUzc7Ci0rCQlTTUlNRV9yZWFkX1BLQ1M3OwotKwkJREVTX3NldF9rZXlfY2hlY2tlZDsKLSsJCVBLQ1M3X3ZlcmlmeTsKLSsJCVBLQ1M3X2VuY3J5cHQ7Ci0rCQlERVNfc2V0X2tleV91bmNoZWNrZWQ7Ci0rCQlTTUlNRV9jcmxmX2NvcHk7Ci0rCQlpMmRfQVNOMV9QUklOVEFCTEVTVFJJTkc7Ci0rCQlQS0NTN19nZXQwX3NpZ25lcnM7Ci0rCQlQS0NTN19kZWNyeXB0OwotKwkJU01JTUVfdGV4dDsKLSsJCVBLQ1M3X3NpbXBsZV9zbWltZWNhcDsKLSsJCVBLQ1M3X2dldF9zbWltZWNhcDsKLSsJCVBLQ1M3X3NpZ247Ci0rCQlQS0NTN19hZGRfYXR0cmliX3NtaW1lY2FwOwotKwkJQ1JZUFRPX2RiZ19zZXRfb3B0aW9uczsKLSsJCUNSWVBUT19yZW1vdmVfYWxsX2luZm87Ci0rCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7Ci0rCQlDUllQVE9faXNfbWVtX2NoZWNrX29uOwotKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3BvcF9pbmZvOwotKwkJQ1JZUFRPX3B1c2hfaW5mb187Ci0rCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19vcHRpb25zOwotKwkJUEVNX3dyaXRlX1BLQ1M4UHJpdmF0ZUtleV9uaWQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleV9uaWQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdktleV9uaWQ7Ci0rCQlkMmlfUEtDUzhQcml2YXRlS2V5X2JpbzsKLSsJCUFTTjFfTlVMTF9mcmVlOwotKwkJZDJpX0FTTjFfTlVMTDsKLSsJCUFTTjFfTlVMTF9uZXc7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X2JpbzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfQVNOMV9OVUxMOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9uaWRfZnA7Ci0rCQlkMmlfUEtDUzhQcml2YXRlS2V5X2ZwOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9uaWRfYmlvOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fZnA7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19iaW87Ci0rCQlQRU1fY2I7Ci0rCQlpMmRfUHJpdmF0ZUtleV9mcDsKLSsJCWQyaV9Qcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9Qcml2YXRlS2V5X2ZwOwotKwkJaTJkX1ByaXZhdGVLZXlfYmlvOwotKwkJWDUwOV9yZWplY3RfY2xlYXI7Ci0rCQlYNTA5X1RSVVNUX3NldF9kZWZhdWx0OwotKwkJZDJpX0F1dG9Qcml2YXRlS2V5OwotKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF90eXBlOwotKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9kYXRhOwotKwkJWDUwOWF0X2dldF9hdHRyOwotKwkJWDUwOWF0X2dldF9hdHRyX2NvdW50OwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X05JRDsKLSsJCVg1MDlfQVRUUklCVVRFX3NldDFfb2JqZWN0OwotKwkJWDUwOV9BVFRSSUJVVEVfY291bnQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfT0JKOwotKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9vYmplY3Q7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfYnlfTklEOwotKwkJWDUwOWF0X2FkZDFfYXR0cjsKLSsJCVg1MDlfQVRUUklCVVRFX2dldDBfZGF0YTsKLSsJCVg1MDlhdF9kZWxldGVfYXR0cjsKLSsJCVg1MDlhdF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlSQU5EX2FkZDsKLSsJCUJJT19udW1iZXJfd3JpdHRlbjsKLSsJCUJJT19udW1iZXJfcmVhZDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDFfY2hhaW47Ci0rCQlFUlJfbG9hZF9SQU5EX3N0cmluZ3M7Ci0rCQlSQU5EX3BzZXVkb19ieXRlczsKLSsJCVg1MDlfUkVRX2dldF9hdHRyX2J5X05JRDsKLSsJCVg1MDlfUkVRX2dldF9hdHRyOwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X05JRDsKLSsJCVg1MDlfUkVRX2dldF9hdHRyX2J5X09CSjsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X09CSjsKLSsJCVg1MDlfUkVRX2dldF9hdHRyX2NvdW50OwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyOwotKwkJWDUwOV9SRVFfZGVsZXRlX2F0dHI7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfdHh0OwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlCTl9wc2V1ZG9fcmFuZDsKLSsJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0OwotKwkJQk5fQ1RYX2VuZDsKLSsJCUJOX0NUWF9zdGFydDsKLSsJCUJOX0NUWF9nZXQ7Ci0rCQlFVlBfUEtFWTJQS0NTOF9icm9rZW47Ci0rCQlBU04xX1NUUklOR19UQUJMRV9hZGQ7Ci0rCQlDUllQVE9fZGJnX2dldF9vcHRpb25zOwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX25ldzsKLSsJCUNSWVBUT19nZXRfbWVtX2RlYnVnX29wdGlvbnM7Ci0rCQlERVNfY3J5cHQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfUkVRX05FVzsKLSsJCVBFTV93cml0ZV9YNTA5X1JFUV9ORVc7Ci0rCQlCSU9fY2FsbGJhY2tfY3RybDsKLSsJCVJBTkRfZWdkOwotKwkJUkFORF9zdGF0dXM7Ci0rCQlibl9kdW1wMTsKLSsJCURFU19jaGVja19rZXlfcGFyaXR5OwotKwkJbGhfbnVtX2l0ZW1zOwotKwkJUkFORF9ldmVudDsKLSsJCURTT19uZXc7Ci0rCQlEU09fbmV3X21ldGhvZDsKLSsJCURTT19mcmVlOwotKwkJRFNPX2ZsYWdzOwotKwkJRFNPX3VwOwotKwkJRFNPX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTT19nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlEU09fZ2V0X21ldGhvZDsKLSsJCURTT19zZXRfbWV0aG9kOwotKwkJRFNPX2xvYWQ7Ci0rCQlEU09fYmluZF92YXI7Ci0rCQlEU09fTUVUSE9EX251bGw7Ci0rCQlEU09fTUVUSE9EX29wZW5zc2w7Ci0rCQlEU09fTUVUSE9EX2RsZmNuOwotKwkJRFNPX01FVEhPRF93aW4zMjsKLSsJCUVSUl9sb2FkX0RTT19zdHJpbmdzOwotKwkJRFNPX01FVEhPRF9kbDsKLSsJCU5DT05GX2xvYWQ7Ci0rCQlOQ09ORl9sb2FkX2ZwOwotKwkJTkNPTkZfbmV3OwotKwkJTkNPTkZfZ2V0X3N0cmluZzsKLSsJCU5DT05GX2ZyZWU7Ci0rCQlOQ09ORl9nZXRfbnVtYmVyOwotKwkJQ09ORl9kdW1wX2ZwOwotKwkJTkNPTkZfbG9hZF9iaW87Ci0rCQlOQ09ORl9kdW1wX2ZwOwotKwkJTkNPTkZfZ2V0X3NlY3Rpb247Ci0rCQlOQ09ORl9kdW1wX2JpbzsKLSsJCUNPTkZfZHVtcF9iaW87Ci0rCQlOQ09ORl9mcmVlX2RhdGE7Ci0rCQlDT05GX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVSUl9lcnJvcl9zdHJpbmdfbjsKLSsJCUJJT19zbnByaW50ZjsKLSsJCURTT19jdHJsOwotKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKLSsJCWkyZF9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QS0NTNzsKLSsJCUJJT192ZnJlZTsKLSsJCWQyaV9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7Ci0rCQlBU04xX1VUQ1RJTUVfZ2V0OwotKwkJWDUwOV9SRVFfZGlnZXN0OwotKwkJWDUwOV9DUkxfZGlnZXN0OwotKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1M3OwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGg7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jdHJsOwotKwkJQk5fbW9kX2V4cF9tb250X3dvcmQ7Ci0rCQlSQU5EX2VnZF9ieXRlczsKLSsJCVg1MDlfUkVRX2dldDFfZW1haWw7Ci0rCQlYNTA5X2dldDFfZW1haWw7Ci0rCQlYNTA5X2VtYWlsX2ZyZWU7Ci0rCQlpMmRfUlNBX05FVDsKLSsJCWQyaV9SU0FfTkVUXzI7Ci0rCQlkMmlfUlNBX05FVDsKLSsJCURTT19iaW5kX2Z1bmM7Ci0rCQlDUllQVE9fZ2V0X25ld19keW5sb2NraWQ7Ci0rCQlza19uZXdfbnVsbDsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2I7Ci0rCQlDUllQVE9fZGVzdHJveV9keW5sb2NraWQ7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfc2l6ZTsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NiOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX3ZhbHVlOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2I7Ci0rCQljMmlfQVNOMV9CSVRfU1RSSU5HOwotKwkJaTJjX0FTTjFfQklUX1NUUklORzsKLSsJCVJBTkRfcG9sbDsKLSsJCWMyaV9BU04xX0lOVEVHRVI7Ci0rCQlpMmNfQVNOMV9JTlRFR0VSOwotKwkJQklPX2R1bXBfaW5kZW50OwotKwkJQVNOMV9wYXJzZV9kdW1wOwotKwkJYzJpX0FTTjFfT0JKRUNUOwotKwkJWDUwOV9OQU1FX3ByaW50X2V4X2ZwOwotKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXhfZnA7Ci0rCQlYNTA5X05BTUVfcHJpbnRfZXg7Ci0rCQlBU04xX1NUUklOR19wcmludF9leDsKLSsJCU1ENDsKLSsJCU1ENF9UcmFuc2Zvcm07Ci0rCQlNRDRfRmluYWw7Ci0rCQlNRDRfVXBkYXRlOwotKwkJTUQ0X0luaXQ7Ci0rCQlFVlBfbWQ0OwotKwkJaTJkX1BVQktFWV9iaW87Ci0rCQlpMmRfUFVCS0VZX2ZwOwotKwkJZDJpX1BVQktFWV9iaW87Ci0rCQlBU04xX1NUUklOR190b19VVEY4OwotKwkJQklPX3ZwcmludGY7Ci0rCQlCSU9fdnNucHJpbnRmOwotKwkJZDJpX1BVQktFWV9mcDsKLSsJCVg1MDlfY21wX3RpbWU7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfdGltZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDFfaXNzdWVyOwotKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfbWF0Y2g7Ci0rCQlYNTA5X09CSkVDVF9pZHhfYnlfc3ViamVjdDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9mbGFnczsKLSsJCVg1MDlfU1RPUkVfQ1RYX3RydXN0ZWRfc3RhY2s7Ci0rCQlYNTA5X3RpbWVfYWRqOwotKwkJWDUwOV9jaGVja19pc3N1ZWQ7Ci0rCQlBU04xX1VUQ1RJTUVfY21wX3RpbWVfdDsKLSsJCURFU19zZXRfd2Vha19rZXlfZmxhZzsKLSsJCURFU19jaGVja19rZXk7Ci0rCQlERVNfcndfbW9kZTsKLSsJCVJTQV9QS0NTMV9SU0FyZWY7Ci0rCQlYNTA5X2tleWlkX3NldDE7Ci0rCQlCSU9fbmV4dDsKLSsJCURTT19NRVRIT0Rfdm1zOwotKwkJQklPX2ZfbGluZWJ1ZmZlcjsKLSsJCUJOX2JudGVzdF9yYW5kOwotKwkJT1BFTlNTTF9pc3NldHVnaWQ7Ci0rCQlCTl9yYW5kX3JhbmdlOwotKwkJRVJSX2xvYWRfRU5HSU5FX3N0cmluZ3M7Ci0rCQlFTkdJTkVfc2V0X0RTQTsKLSsJCUVOR0lORV9nZXRfZmluaXNoX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JTQTsKLSsJCUVOR0lORV9nZXRfQk5fbW9kX2V4cDsKLSsJCURTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9zZXRfREg7Ci0rCQlFTkdJTkVfc2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9pbml0OwotKwkJREhfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlSU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfZmluaXNoOwotKwkJRU5HSU5FX2xvYWRfcHVibGljX2tleTsKLSsJCUVOR0lORV9nZXRfREg7Ci0rCQlFTkdJTkVfY3RybDsKLSsJCUVOR0lORV9nZXRfaW5pdF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfaW5pdF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X25hbWU7Ci0rCQlFTkdJTkVfZ2V0X2xhc3Q7Ci0rCQlFTkdJTkVfZ2V0X3ByZXY7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfREg7Ci0rCQlFTkdJTkVfZ2V0X1JTQTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdDsKLSsJCUVOR0lORV9nZXRfUkFORDsKLSsJCUVOR0lORV9nZXRfZmlyc3Q7Ci0rCQlFTkdJTkVfYnlfaWQ7Ci0rCQlFTkdJTkVfc2V0X2ZpbmlzaF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfZGVmX0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OwotKwkJUlNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX3NldF9SU0E7Ci0rCQlFTkdJTkVfbG9hZF9wcml2YXRlX2tleTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9SQU5EOwotKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwOwotKwkJRU5HSU5FX3JlbW92ZTsKLSsJCUVOR0lORV9mcmVlOwotKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9nZXRfbmV4dDsKLSsJCUVOR0lORV9zZXRfbmFtZTsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9EU0E7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9SU0E7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUkFORDsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwOwotKwkJRU5HSU5FX3NldF9SQU5EOwotKwkJRU5HSU5FX3NldF9pZDsKLSsJCUVOR0lORV9zZXRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfREg7Ci0rCQlFTkdJTkVfbmV3OwotKwkJRU5HSU5FX2dldF9pZDsKLSsJCURTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9hZGQ7Ci0rCQlESF9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9nZXRfRFNBOwotKwkJRU5HSU5FX2dldF9jdHJsX2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9jdHJsX2Z1bmN0aW9uOwotKwkJQk5fcHNldWRvX3JhbmRfcmFuZ2U7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfdmVyaWZ5X2NiOwotKwkJRVJSX2xvYWRfQ09NUF9zdHJpbmdzOwotKwkJUEtDUzEyX2l0ZW1fZGVjcnlwdF9kMmk7Ci0rCQlBU04xX1VURjhTVFJJTkdfaXQ7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9jaXBoZXJzOwotKwkJRU5HSU5FX2dldF9jaXBoZXJzOwotKwkJZDJpX09DU1BfQkFTSUNSRVNQOwotKwkJS1JCNV9DSEVDS1NVTV9pdDsKLSsJCUVDX1BPSU5UX2FkZDsKLSsJCUFTTjFfaXRlbV9leF9pMmQ7Ci0rCQlPQ1NQX0NFUlRJRF9pdDsKLSsJCWQyaV9PQ1NQX1JFU1BCWVRFUzsKLSsJCVg1MDlWM19hZGQxX2kyZDsKLSsJCVBLQ1M3X0VOVkVMT1BFX2l0OwotKwkJVUlfYWRkX2lucHV0X2Jvb2xlYW47Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9SU0E7Ci0rCQlYNTA5VjNfRVhUX25jb25mOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2ZyZWU7Ci0rCQlkMmlfT0NTUF9DRVJUU1RBVFVTOwotKwkJWDUwOV9SRVZPS0VEX3NldF9zZXJpYWxOdW1iZXI7Ci0rCQlYNTA5X3ByaW50X2V4OwotKwkJT0NTUF9PTkVSRVFfZ2V0MV9leHRfZDJpOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SQU5EOwotKwkJRU5HSU5FX2xvYWRfZHluYW1pYzsKLSsJCVBCS0RGMlBBUkFNX2l0OwotKwkJRVhURU5ERURfS0VZX1VTQUdFX25ldzsKLSsJCUVDX0dST1VQX2NsZWFyX2ZyZWU7Ci0rCQlPQ1NQX3NlbmRyZXFfYmlvOwotKwkJQVNOMV9pdGVtX2RpZ2VzdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2RlbGV0ZV9leHQ7Ci0rCQlPQ1NQX1NJR05BVFVSRV9pdDsKLSsJCVg1MDlfQ1JMX2l0OwotKwkJT0NTUF9CQVNJQ1JFU1BfYWRkX2V4dDsKLSsJCUtSQjVfRU5DS0VZX2l0OwotKwkJVUlfbWV0aG9kX3NldF9jbG9zZXI7Ci0rCQlYNTA5X1NUT1JFX3NldF9wdXJwb3NlOwotKwkJaTJkX0FTTjFfR0VORVJBTFNUUklORzsKLSsJCU9DU1BfcmVzcG9uc2Vfc3RhdHVzOwotKwkJaTJkX09DU1BfU0VSVklDRUxPQzsKLSsJCUVOR0lORV9nZXRfZGlnZXN0X2VuZ2luZTsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRnA7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9PQko7Ci0rCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9rZXk7Ci0rCQlBU04xX1Q2MVNUUklOR19pdDsKLSsJCUVDX0dST1VQX21ldGhvZF9vZjsKLSsJCWkyZF9LUkI1X0FQUkVROwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0OwotKwkJQVNOMV9QUklOVEFCTEVfbmV3OwotKwkJSE1BQ19Jbml0X2V4OwotKwkJZDJpX0tSQjVfQVVUSEVOVDsKLSsJCU9DU1BfYXJjaGl2ZV9jdXRvZmZfbmV3OwotKwkJRUNfUE9JTlRfc2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9KcHJval9jb29yZHNfR0ZwOwotKwkJX29zc2xfb2xkX2Rlc19pc193ZWFrX2tleTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfT0JKOwotKwkJRUNfUE9JTlRfb2N0MnBvaW50OwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfY291bnQ7Ci0rCQlVSV9jdHJsOwotKwkJX3NoYWRvd19ERVNfcndfbW9kZTsKLSsJCWFzbjFfZG9fYWRiOwotKwkJQVNOMV90ZW1wbGF0ZV9pMmQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfREg7Ci0rCQlVSV9jb25zdHJ1Y3RfcHJvbXB0OwotKwkJWDUwOV9TVE9SRV9zZXRfdHJ1c3Q7Ci0rCQlVSV9kdXBfaW5wdXRfc3RyaW5nOwotKwkJZDJpX0tSQjVfQVBSRVE7Ci0rCQlFVlBfTURfQ1RYX2NvcHlfZXg7Ci0rCQlPQ1NQX3JlcXVlc3RfaXNfc2lnbmVkOwotKwkJaTJkX09DU1BfUkVRSU5GTzsKLSsJCUtSQjVfRU5DS0VZX2ZyZWU7Ci0rCQlPQ1NQX3Jlc3BfZ2V0MDsKLSsJCUdFTkVSQUxfTkFNRV9pdDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2l0OwotKwkJWDUwOV9TVE9SRV9zZXRfZmxhZ3M7Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGcDsKLSsJCU9DU1BfcmVzcG9uc2Vfc3RhdHVzX3N0cjsKLSsJCWQyaV9PQ1NQX1JFVk9LRURJTkZPOwotKwkJT0NTUF9iYXNpY19hZGQxX2NlcnQ7Ci0rCQlFUlJfZ2V0X2ltcGxlbWVudGF0aW9uOwotKwkJRVZQX0NpcGhlckZpbmFsX2V4OwotKwkJT0NTUF9DRVJUU1RBVFVTX25ldzsKLSsJCUNSWVBUT19jbGVhbnVwX2FsbF9leF9kYXRhOwotKwkJT0NTUF9yZXNwX2ZpbmQ7Ci0rCQlCTl9ubm1vZDsKLSsJCVg1MDlfQ1JMX3NvcnQ7Ci0rCQlYNTA5X1JFVk9LRURfc2V0X3Jldm9jYXRpb25EYXRlOwotKwkJRU5HSU5FX3JlZ2lzdGVyX1JBTkQ7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfbmV3OwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3Jkc19HRnA7Ci0rCQlfb3NzbF9vbGRfZGVzX29wdGlvbnM7Ci0rCQlTWE5FVF9pdDsKLSsJCVVJX2R1cF9pbnB1dF9ib29sZWFuOwotKwkJUEtDUzEyX2FkZF9DU1BOYW1lX2FzYzsKLSsJCUVDX1BPSU5UX2lzX2F0X2luZmluaXR5OwotKwkJRU5HSU5FX2xvYWRfY3J5cHRvZGV2OwotKwkJRFNPX2NvbnZlcnRfZmlsZW5hbWU7Ci0rCQlQT0xJQ1lRVUFMSU5GT19pdDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9jaXBoZXJzOwotKwkJQk5fbW9kX2xzaGlmdF9xdWljazsKLSsJCURTT19zZXRfZmlsZW5hbWU7Ci0rCQlBU04xX2l0ZW1fZnJlZTsKLSsJCUtSQjVfVEtUQk9EWV9mcmVlOwotKwkJQVVUSE9SSVRZX0tFWUlEX2l0OwotKwkJS1JCNV9BUFJFUUJPRFlfbmV3OwotKwkJWDUwOVYzX0VYVF9SRVFfYWRkX25jb25mOwotKwkJRU5HSU5FX2N0cmxfY21kX3N0cmluZzsKLSsJCWkyZF9PQ1NQX1JFU1BEQVRBOwotKwkJRVZQX01EX0NUWF9pbml0OwotKwkJRVhURU5ERURfS0VZX1VTQUdFX2ZyZWU7Ci0rCQlQS0NTN19BVFRSX1NJR05faXQ7Ci0rCQlVSV9hZGRfZXJyb3Jfc3RyaW5nOwotKwkJS1JCNV9DSEVDS1NVTV9mcmVlOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHQ7Ci0rCQlFTkdJTkVfbG9hZF91YnNlYzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfZGlnZXN0czsKLSsJCVBLRVlfVVNBR0VfUEVSSU9EX2l0OwotKwkJUEtDUzEyX3VucGFja19hdXRoc2FmZXM7Ci0rCQlBU04xX2l0ZW1fdW5wYWNrOwotKwkJTkVUU0NBUEVfU1BLQUNfaXQ7Ci0rCQlYNTA5X1JFVk9LRURfaXQ7Ci0rCQlBU04xX1NUUklOR19lbmNvZGU7Ci0rCQlFVlBfYWVzXzEyOF9lY2I7Ci0rCQlLUkI1X0FVVEhFTlRfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXQ7Ci0rCQlPQ1NQX2NlcnRfc3RhdHVzX3N0cjsKLSsJCWQyaV9PQ1NQX1JFUVVFU1Q7Ci0rCQlVSV9kdXBfaW5mb19zdHJpbmc7Ci0rCQlfb3NzbF9vbGRfZGVzX3h3aGl0ZV9pbjJvdXQ7Ci0rCQlQS0NTMTJfaXQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXQ7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfZnJlZTsKLSsJCV9vc3NsX29sZF9kZXNfY3J5cHQ7Ci0rCQlBU04xX2l0ZW1faTJkOwotKwkJRVZQX0RlY3J5cHRGaW5hbF9leDsKLSsJCUVOR0lORV9sb2FkX29wZW5zc2w7Ci0rCQlFTkdJTkVfZ2V0X2NtZF9kZWZuczsKLSsJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZm47Ci0rCQlFVlBfRW5jcnlwdEZpbmFsX2V4OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X2RpZ2VzdHM7Ci0rCQlYNTA5X2dldDBfcHVia2V5X2JpdHN0cjsKLSsJCWFzbjFfZXhfaTJjOwotKwkJRU5HSU5FX3JlZ2lzdGVyX1JTQTsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0RTQTsKLSsJCV9vc3NsX29sZF9kZXNfa2V5X3NjaGVkOwotKwkJWDUwOV9FWFRFTlNJT05faXQ7Ci0rCQlpMmRfS1JCNV9BVVRIRU5UOwotKwkJU1hORVRJRF9pdDsKLSsJCWQyaV9PQ1NQX1NJTkdMRVJFU1A7Ci0rCQlFRElQQVJUWU5BTUVfbmV3OwotKwkJUEtDUzEyX2NlcnRiYWcyeDUwOTsKLSsJCV9vc3NsX29sZF9kZXNfb2ZiNjRfZW5jcnlwdDsKLSsJCWQyaV9FWFRFTkRFRF9LRVlfVVNBR0U7Ci0rCQlFUlJfcHJpbnRfZXJyb3JzX2NiOwotKwkJRU5HSU5FX3NldF9jaXBoZXJzOwotKwkJZDJpX0tSQjVfQVBSRVFCT0RZOwotKwkJVUlfbWV0aG9kX2dldF9mbHVzaGVyOwotKwkJWDUwOV9QVUJLRVlfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY19yZWFkOwotKwkJUEtDUzdfRU5DUllQVF9pdDsKLSsJCWkyZF9PQ1NQX1JFU1BPTlNFOwotKwkJRUNfR1JPVVBfZ2V0X2NvZmFjdG9yOwotKwkJUEtDUzEyX3VucGFja19wN2RhdGE7Ci0rCQlkMmlfS1JCNV9BVVRIREFUQTsKLSsJCU9DU1BfY29weV9ub25jZTsKLSsJCUtSQjVfQVVUSERBVEFfbmV3OwotKwkJT0NTUF9SRVNQREFUQV9uZXc7Ci0rCQlFQ19HRnBfbW9udF9tZXRob2Q7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX2ZyZWU7Ci0rCQlVSV9nZXRfZXhfZGF0YTsKLSsJCUtSQjVfQVBSRVFCT0RZX2ZyZWU7Ci0rCQlFQ19HUk9VUF9nZXQwX2dlbmVyYXRvcjsKLSsJCVVJX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCVg1MDlWM19zZXRfbmNvbmY7Ci0rCQlQS0NTMTJfaXRlbV9pMmRfZW5jcnlwdDsKLSsJCVg1MDlfYWRkMV9leHRfaTJkOwotKwkJUEtDUzdfU0lHTkVSX0lORk9faXQ7Ci0rCQlLUkI1X1BSSU5DTkFNRV9uZXc7Ci0rCQlQS0NTMTJfU0FGRUJBR19pdDsKLSsJCUVDX0dST1VQX2dldF9vcmRlcjsKLSsJCWQyaV9PQ1NQX1JFU1BJRDsKLSsJCU9DU1BfcmVxdWVzdF92ZXJpZnk7Ci0rCQlOQ09ORl9nZXRfbnVtYmVyX2U7Ci0rCQlfb3NzbF9vbGRfZGVzX2RlY3J5cHQzOwotKwkJWDUwOV9zaWduYXR1cmVfcHJpbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZnJlZTsKLSsJCUVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lczsKLSsJCWkyZF9PQ1NQX09ORVJFUTsKLSsJCU9DU1BfUkVRVUVTVF9hZGRfZXh0OwotKwkJT0NTUF9SRVNQQllURVNfbmV3OwotKwkJRVZQX01EX0NUWF9jcmVhdGU7Ci0rCQlPQ1NQX3Jlc3BfZmluZF9zdGF0dXM7Ci0rCQlYNTA5X0FMR09SX2l0OwotKwkJQVNOMV9USU1FX2l0OwotKwkJT0NTUF9yZXF1ZXN0X3NldDFfbmFtZTsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfY291bnQ7Ci0rCQlVSV9nZXQwX3Jlc3VsdDsKLSsJCVBLQ1MxMl9BVVRIU0FGRVNfaXQ7Ci0rCQlFVlBfYWVzXzI1Nl9lY2I7Ci0rCQlQS0NTMTJfcGFja19hdXRoc2FmZXM7Ci0rCQlBU04xX0lBNVNUUklOR19pdDsKLSsJCVVJX2dldF9pbnB1dF9mbGFnczsKLSsJCUVDX0dST1VQX3NldF9nZW5lcmF0b3I7Ci0rCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b18ya2V5czsKLSsJCU9DU1BfQ0VSVElEX2ZyZWU7Ci0rCQlYNTA5X0NFUlRfQVVYX2l0OwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19pdDsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19jYmNfZW5jcnlwdDsKLSsJCVJBTkRfc2V0X3JhbmRfZW5naW5lOwotKwkJRFNPX2dldF9sb2FkZWRfZmlsZW5hbWU7Ci0rCQlYNTA5X0FUVFJJQlVURV9pdDsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfTklEOwotKwkJUEtDUzEyX2RlY3J5cHRfc2tleTsKLSsJCUtSQjVfQVVUSEVOVF9pdDsKLSsJCVVJX2R1cF9lcnJvcl9zdHJpbmc7Ci0rCQlSU0FQdWJsaWNLZXlfaXQ7Ci0rCQlpMmRfT0NTUF9SRVFVRVNUOwotKwkJUEtDUzEyX3g1MDljcmwyY2VydGJhZzsKLSsJCU9DU1BfU0VSVklDRUxPQ19pdDsKLSsJCUFTTjFfaXRlbV9zaWduOwotKwkJWDUwOV9DUkxfc2V0X2lzc3Vlcl9uYW1lOwotKwkJT0JKX05BTUVfZG9fYWxsX3NvcnRlZDsKLSsJCWkyZF9PQ1NQX0JBU0lDUkVTUDsKLSsJCWkyZF9PQ1NQX1JFU1BCWVRFUzsKLSsJCVBLQ1MxMl91bnBhY2tfcDdlbmNkYXRhOwotKwkJSE1BQ19DVFhfaW5pdDsKLSsJCUVOR0lORV9nZXRfZGlnZXN0OwotKwkJT0NTUF9SRVNQT05TRV9wcmludDsKLSsJCUtSQjVfVEtUQk9EWV9pdDsKLSsJCUFDQ0VTU19ERVNDUklQVElPTl9pdDsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX2l0OwotKwkJUEJFMlBBUkFNX2l0OwotKwkJUEtDUzEyX2NlcnRiYWcyeDUwOWNybDsKLSsJCVBLQ1M3X1NJR05FRF9pdDsKLSsJCUVOR0lORV9nZXRfY2lwaGVyOwotKwkJaTJkX09DU1BfQ1JMSUQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfbmV3OwotKwkJRU5HSU5FX2NtZF9pc19leGVjdXRhYmxlOwotKwkJUlNBX3VwX3JlZjsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19pdDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9EU0E7Ci0rCQlYNTA5VjNfRVhUX2FkZF9uY29uZl9zazsKLSsJCUVOR0lORV9zZXRfbG9hZF9wdWJrZXlfZnVuY3Rpb247Ci0rCQlQS0NTOF9kZWNyeXB0OwotKwkJUEVNX2J5dGVzX3JlYWRfYmlvOwotKwkJRElSRUNUT1JZU1RSSU5HX2l0OwotKwkJZDJpX09DU1BfQ1JMSUQ7Ci0rCQlFQ19QT0lOVF9pc19vbl9jdXJ2ZTsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7Ci0rCQlkMmlfS1JCNV9DSEVDS1NVTTsKLSsJCUFTTjFfaXRlbV9kdXA7Ci0rCQlYNTA5X2l0OwotKwkJQk5fbW9kX2FkZDsKLSsJCUtSQjVfQVVUSERBVEFfZnJlZTsKLSsJCV9vc3NsX29sZF9kZXNfY2JjX2Nrc3VtOwotKwkJQVNOMV9pdGVtX3ZlcmlmeTsKLSsJCUNSWVBUT19zZXRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUVDX1BPSU5UX2dldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9nZXRfSnByb2pfY29vcmRzX0dGcDsKLSsJCVpMT05HX2l0OwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jczsKLSsJCUFTTjFfVElNRV9jaGVjazsKLSsJCVVJX2dldDBfdXNlcl9kYXRhOwotKwkJSE1BQ19DVFhfY2xlYW51cDsKLSsJCURTQV91cF9yZWY7Ci0rCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCV9vc3NsX29kZXNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJQVNOMV9CTVBTVFJJTkdfaXQ7Ci0rCQlBU04xX3RhZzJiaXQ7Ci0rCQlVSV9tZXRob2Rfc2V0X2ZsdXNoZXI7Ci0rCQlYNTA5X29jc3BpZF9wcmludDsKLSsJCUtSQjVfRU5DREFUQV9pdDsKLSsJCUVOR0lORV9nZXRfbG9hZF9wdWJrZXlfZnVuY3Rpb247Ci0rCQlVSV9hZGRfdXNlcl9kYXRhOwotKwkJT0NTUF9SRVFVRVNUX2RlbGV0ZV9leHQ7Ci0rCQlVSV9nZXRfbWV0aG9kOwotKwkJT0NTUF9PTkVSRVFfZnJlZTsKLSsJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX2l0OwotKwkJWDUwOV9DUkxfc2V0X25leHRVcGRhdGU7Ci0rCQlPQ1NQX1JFUVVFU1RfaXQ7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9pdDsKLSsJCUFFU19lY2JfZW5jcnlwdDsKLSsJCUJOX21vZF9zcXI7Ci0rCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2l0OwotKwkJR0VORVJBTF9OQU1FU19pdDsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19pdDsKLSsJCUFTTjFfRkJPT0xFQU5faXQ7Ci0rCQlVSV9zZXRfZXhfZGF0YTsKLSsJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvX2tleTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUlNBOwotKwkJZDJpX0tSQjVfUFJJTkNOQU1FOwotKwkJT0NTUF9SRVNQQllURVNfaXQ7Ci0rCQlYNTA5X0NJTkZfaXQ7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9kaWdlc3RzOwotKwkJZDJpX0VESVBBUlRZTkFNRTsKLSsJCWQyaV9PQ1NQX1NFUlZJQ0VMT0M7Ci0rCQlFTkdJTkVfZ2V0X2RpZ2VzdHM7Ci0rCQlfb3NzbF9vbGRfZGVzX3NldF9vZGRfcGFyaXR5OwotKwkJT0NTUF9SRVNQREFUQV9mcmVlOwotKwkJZDJpX0tSQjVfVElDS0VUOwotKwkJT1RIRVJOQU1FX2l0OwotKwkJRVZQX01EX0NUWF9jbGVhbnVwOwotKwkJZDJpX0FTTjFfR0VORVJBTFNUUklORzsKLSsJCVg1MDlfQ1JMX3NldF92ZXJzaW9uOwotKwkJQk5fbW9kX3N1YjsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X05JRDsKLSsJCUVOR0lORV9nZXRfZXhfbmV3X2luZGV4OwotKwkJT0NTUF9SRVFVRVNUX2ZyZWU7Ci0rCQlPQ1NQX1JFUVVFU1RfYWRkMV9leHRfaTJkOwotKwkJWDUwOV9WQUxfaXQ7Ci0rCQlFQ19QT0lOVHNfbWFrZV9hZmZpbmU7Ci0rCQlFQ19QT0lOVF9tdWw7Ci0rCQlYNTA5VjNfRVhUX2FkZF9uY29uZjsKLSsJCVg1MDlfVFJVU1Rfc2V0OwotKwkJWDUwOV9DUkxfYWRkMV9leHRfaTJkOwotKwkJX29zc2xfb2xkX2Rlc19mY3J5cHQ7Ci0rCQlESVNQTEFZVEVYVF9pdDsKLSsJCVg1MDlfQ1JMX3NldF9sYXN0VXBkYXRlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2FkZDFfZXh0X2kyZDsKLSsJCWQyaV9LUkI1X0FVVEhFTlRCT0RZOwotKwkJQ1JZUFRPX3NldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOwotKwkJQ1JZUFRPX3NldF9leF9kYXRhX2ltcGw7Ci0rCQlLUkI1X0VOQ0RBVEFfbmV3OwotKwkJRFNPX3VwX3JlZjsKLSsJCU9DU1BfY3JsX3JlYXNvbl9zdHI7Ci0rCQlVSV9nZXQwX3Jlc3VsdF9zdHJpbmc7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfbmV3OwotKwkJWDUwOV9TSUdfaXQ7Ci0rCQlFUlJfc2V0X2ltcGxlbWVudGF0aW9uOwotKwkJRVJSX2xvYWRfRUNfc3RyaW5nczsKLSsJCVVJX2dldDBfYWN0aW9uX3N0cmluZzsKLSsJCU9DU1BfT05FUkVRX2dldF9leHQ7Ci0rCQlFQ19QT0lOVF9tZXRob2Rfb2Y7Ci0rCQlpMmRfS1JCNV9BUFJFUUJPRFk7Ci0rCQlfb3NzbF9vbGRfZGVzX2VjYjNfZW5jcnlwdDsKLSsJCUNSWVBUT19nZXRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUVOR0lORV9nZXRfZXhfZGF0YTsKLSsJCVVJX2Rlc3Ryb3lfbWV0aG9kOwotKwkJQVNOMV9pdGVtX2kyZF9iaW87Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X09CSjsKLSsJCUFTTjFfcHJpbWl0aXZlX25ldzsKLSsJCUFTTjFfUFJJTlRBQkxFX2l0OwotKwkJRVZQX2Flc18xOTJfZWNiOwotKwkJT0NTUF9TSUdOQVRVUkVfbmV3OwotKwkJTE9OR19pdDsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9hZGQxX2V4dF9pMmQ7Ci0rCQlkMmlfT0NTUF9DRVJUSUQ7Ci0rCQlBU04xX2l0ZW1fZDJpX2ZwOwotKwkJQ1JMX0RJU1RfUE9JTlRTX2l0OwotKwkJR0VORVJBTF9OQU1FX3ByaW50OwotKwkJT0NTUF9TSU5HTEVSRVNQX2RlbGV0ZV9leHQ7Ci0rCQlQS0NTMTJfU0FGRUJBR1NfaXQ7Ci0rCQlkMmlfT0NTUF9TSUdOQVRVUkU7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMV9ub25jZTsKLSsJCUVOR0lORV9zZXRfY21kX2RlZm5zOwotKwkJT0NTUF9TRVJWSUNFTE9DX2ZyZWU7Ci0rCQlFQ19HUk9VUF9mcmVlOwotKwkJQVNOMV9CSVRfU1RSSU5HX2l0OwotKwkJWDUwOV9SRVFfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2NiY19lbmNyeXB0OwotKwkJRVJSX3VubG9hZF9zdHJpbmdzOwotKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9pdDsKLSsJCUVESVBBUlRZTkFNRV9mcmVlOwotKwkJT0NTUF9SRVFJTkZPX2ZyZWU7Ci0rCQlFQ19HUk9VUF9uZXdfY3VydmVfR0ZwOwotKwkJT0NTUF9SRVFVRVNUX2dldDFfZXh0X2QyaTsKLSsJCVBLQ1MxMl9pdGVtX3BhY2tfc2FmZWJhZzsKLSsJCWFzbjFfZXhfYzJpOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2RpZ2VzdHM7Ci0rCQlpMmRfT0NTUF9SRVZPS0VESU5GTzsKLSsJCWFzbjFfZW5jX3Jlc3RvcmU7Ci0rCQlVSV9mcmVlOwotKwkJVUlfbmV3X21ldGhvZDsKLSsJCUVWUF9FbmNyeXB0SW5pdF9leDsKLSsJCVg1MDlfcHVia2V5X2RpZ2VzdDsKLSsJCUVDX1BPSU5UX2ludmVydDsKLSsJCU9DU1BfYmFzaWNfc2lnbjsKLSsJCWkyZF9PQ1NQX1JFU1BJRDsKLSsJCU9DU1BfY2hlY2tfbm9uY2U7Ci0rCQlFTkdJTkVfY3RybF9jbWQ7Ci0rCQlkMmlfS1JCNV9FTkNLRVk7Ci0rCQlPQ1NQX3BhcnNlX3VybDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0OwotKwkJT0NTUF9DUkxJRF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0MV9leHRfZDJpOwotKwkJUlNBUHJpdmF0ZUtleV9pdDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfREg7Ci0rCQlpMmRfRURJUEFSVFlOQU1FOwotKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRnA7Ci0rCQlPQ1NQX0NSTElEX25ldzsKLSsJCUVOR0lORV9nZXRfZmxhZ3M7Ci0rCQlPQ1NQX09ORVJFUV9pdDsKLSsJCVVJX3Byb2Nlc3M7Ci0rCQlBU04xX0lOVEVHRVJfaXQ7Ci0rCQlFVlBfQ2lwaGVySW5pdF9leDsKLSsJCVVJX2dldF9zdHJpbmdfdHlwZTsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0RIOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9EU0E7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJYm5fZHVwX2V4cGFuZDsKLSsJCU9DU1BfY2VydF9pZF9uZXc7Ci0rCQlCQVNJQ19DT05TVFJBSU5UU19pdDsKLSsJCUJOX21vZF9hZGRfcXVpY2s7Ci0rCQlFQ19QT0lOVF9uZXc7Ci0rCQlFVlBfTURfQ1RYX2Rlc3Ryb3k7Ci0rCQlPQ1NQX1JFU1BCWVRFU19mcmVlOwotKwkJRVZQX2Flc18xMjhfY2JjOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldDFfZXh0X2QyaTsKLSsJCUVDX1BPSU5UX2ZyZWU7Ci0rCQlESF91cF9yZWY7Ci0rCQlYNTA5X05BTUVfRU5UUllfaXQ7Ci0rCQlVSV9nZXRfZXhfbmV3X2luZGV4OwotKwkJQk5fbW9kX3N1Yl9xdWljazsKLSsJCU9DU1BfT05FUkVRX2FkZF9leHQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfc2lnbjsKLSsJCUVWUF9EaWdlc3RGaW5hbF9leDsKLSsJCUVOR0lORV9zZXRfZGlnZXN0czsKLSsJCU9DU1BfaWRfaXNzdWVyX2NtcDsKLSsJCU9CSl9OQU1FX2RvX2FsbDsKLSsJCUVDX1BPSU5Uc19tdWw7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfY29tcGxldGU7Ci0rCQlYNTA5VjNfRVhUX25jb25mX25pZDsKLSsJCUFTTjFfU0VRVUVOQ0VfaXQ7Ci0rCQlVSV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlSQU5EX3F1ZXJ5X2VnZF9ieXRlczsKLSsJCVVJX21ldGhvZF9nZXRfd3JpdGVyOwotKwkJVUlfT3BlblNTTDsKLSsJCVBFTV9kZWZfY2FsbGJhY2s7Ci0rCQlFTkdJTkVfY2xlYW51cDsKLSsJCURJU1RfUE9JTlRfaXQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfaXQ7Ci0rCQlkMmlfS1JCNV9US1RCT0RZOwotKwkJRUNfUE9JTlRfY21wOwotKwkJT0NTUF9SRVZPS0VESU5GT19uZXc7Ci0rCQlpMmRfT0NTUF9DRVJUU1RBVFVTOwotKwkJT0NTUF9iYXNpY19hZGQxX25vbmNlOwotKwkJQVNOMV9pdGVtX2V4X2QyaTsKLSsJCUJOX21vZF9sc2hpZnQxX3F1aWNrOwotKwkJVUlfc2V0X21ldGhvZDsKLSsJCU9DU1BfaWRfZ2V0MF9pbmZvOwotKwkJQk5fbW9kX3NxcnQ7Ci0rCQlFQ19HUk9VUF9jb3B5OwotKwkJS1JCNV9FTkNEQVRBX2ZyZWU7Ci0rCQlfb3NzbF9vbGRfZGVzX2NmYl9lbmNyeXB0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfT0JKOwotKwkJT0NTUF9jZXJ0X3RvX2lkOwotKwkJT0NTUF9SRVNQSURfbmV3OwotKwkJT0NTUF9SRVNQREFUQV9pdDsKLSsJCWQyaV9PQ1NQX1JFU1BEQVRBOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jb21wbGV0ZTsKLSsJCU9DU1BfY2hlY2tfdmFsaWRpdHk7Ci0rCQlQS0NTMTJfQkFHU19pdDsKLSsJCU9DU1BfdXJsX3N2Y2xvY19uZXc7Ci0rCQlBU04xX3RlbXBsYXRlX2ZyZWU7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfYWRkX2V4dDsKLSsJCUtSQjVfQVVUSEVOVEJPRFlfaXQ7Ci0rCQlYNTA5X3N1cHBvcnRlZF9leHRlbnNpb247Ci0rCQlpMmRfS1JCNV9BVVRIREFUQTsKLSsJCVVJX21ldGhvZF9nZXRfb3BlbmVyOwotKwkJRU5HSU5FX3NldF9leF9kYXRhOwotKwkJT0NTUF9SRVFVRVNUX3ByaW50OwotKwkJQ0JJR05VTV9pdDsKLSsJCUtSQjVfVElDS0VUX25ldzsKLSsJCUtSQjVfQVBSRVFfbmV3OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGcDsKLSsJCUtSQjVfRU5DS0VZX25ldzsKLSsJCUFTTjFfdGVtcGxhdGVfZDJpOwotKwkJX29zc2xfb2xkX2Rlc19xdWFkX2Nrc3VtOwotKwkJT0NTUF9zaW5nbGVfZ2V0MF9zdGF0dXM7Ci0rCQlCTl9zd2FwOwotKwkJUE9MSUNZSU5GT19pdDsKLSsJCUVOR0lORV9zZXRfZGVzdHJveV9mdW5jdGlvbjsKLSsJCWFzbjFfZW5jX2ZyZWU7Ci0rCQlPQ1NQX1JFU1BJRF9pdDsKLSsJCUVDX0dST1VQX25ldzsKLSsJCUVWUF9hZXNfMjU2X2NiYzsKLSsJCWkyZF9LUkI1X1BSSU5DTkFNRTsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDI7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQzOwotKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19pdDsKLSsJCU9DU1BfUkVRSU5GT19pdDsKLSsJCVBCRVBBUkFNX2l0OwotKwkJS1JCNV9BVVRIRU5UQk9EWV9uZXc7Ci0rCQlYNTA5X0NSTF9hZGQwX3Jldm9rZWQ7Ci0rCQlFRElQQVJUWU5BTUVfaXQ7Ci0rCQlORVRTQ0FQRV9TUEtJX2l0OwotKwkJVUlfZ2V0MF90ZXN0X3N0cmluZzsKLSsJCUVOR0lORV9nZXRfY2lwaGVyX2VuZ2luZTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY2lwaGVyczsKLSsJCUVDX1BPSU5UX2NvcHk7Ci0rCQlCTl9rcm9uZWNrZXI7Ci0rCQlfb3NzbF9vbGRfZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKLSsJCV9vc3NsX29kZXNfZWRlM19vZmI2NF9lbmNyeXB0OwotKwkJVUlfbWV0aG9kX2dldF9yZWFkZXI7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2NvdW50OwotKwkJQVNOMV9FTlVNRVJBVEVEX2l0OwotKwkJVUlfc2V0X3Jlc3VsdDsKLSsJCWkyZF9LUkI1X1RJQ0tFVDsKLSsJCVg1MDlfcHJpbnRfZXhfZnA7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZzsKLSsJCWQyaV9PQ1NQX1JFU1BPTlNFOwotKwkJQVNOMV9VVENUSU1FX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lbmNfd3JpdGU7Ci0rCQlPQ1NQX1JFU1BPTlNFX25ldzsKLSsJCUFFU19zZXRfZW5jcnlwdF9rZXk7Ci0rCQlPQ1NQX3Jlc3BfY291bnQ7Ci0rCQlLUkI1X0NIRUNLU1VNX25ldzsKLSsJCUVOR0lORV9sb2FkX2Nzd2lmdDsKLSsJCU9DU1Bfb25lcmVxX2dldDBfaWQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfY2lwaGVyczsKLSsJCU5PVElDRVJFRl9pdDsKLSsJCVg1MDlWM19FWFRfQ1JMX2FkZF9uY29uZjsKLSsJCU9DU1BfUkVWT0tFRElORk9faXQ7Ci0rCQlBRVNfZW5jcnlwdDsKLSsJCU9DU1BfUkVRVUVTVF9uZXc7Ci0rCQlBU04xX0FOWV9pdDsKLSsJCUNSWVBUT19leF9kYXRhX25ld19jbGFzczsKLSsJCV9vc3NsX29sZF9kZXNfbmNiY19lbmNyeXB0OwotKwkJaTJkX0tSQjVfVEtUQk9EWTsKLSsJCUVDX1BPSU5UX2NsZWFyX2ZyZWU7Ci0rCQlBRVNfZGVjcnlwdDsKLSsJCWFzbjFfZW5jX2luaXQ7Ci0rCQlVSV9nZXRfcmVzdWx0X21heHNpemU7Ci0rCQlPQ1NQX0NFUlRJRF9uZXc7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9SQU5EOwotKwkJVUlfbWV0aG9kX2dldF9jbG9zZXI7Ci0rCQlkMmlfS1JCNV9FTkNEQVRBOwotKwkJT0NTUF9yZXF1ZXN0X29uZXJlcV9jb3VudDsKLSsJCU9DU1BfYmFzaWNfdmVyaWZ5OwotKwkJS1JCNV9BVVRIRU5UQk9EWV9mcmVlOwotKwkJQVNOMV9pdGVtX2QyaTsKLSsJCUFTTjFfcHJpbWl0aXZlX2ZyZWU7Ci0rCQlpMmRfRVhURU5ERURfS0VZX1VTQUdFOwotKwkJaTJkX09DU1BfU0lHTkFUVVJFOwotKwkJYXNuMV9lbmNfc2F2ZTsKLSsJCUVOR0lORV9sb2FkX251cm9uOwotKwkJX29zc2xfb2xkX2Rlc19wY2JjX2VuY3J5cHQ7Ci0rCQlQS0NTMTJfTUFDX0RBVEFfaXQ7Ci0rCQlPQ1NQX2FjY2VwdF9yZXNwb25zZXNfbmV3OwotKwkJYXNuMV9kb19sb2NrOwotKwkJUEtDUzdfQVRUUl9WRVJJRllfaXQ7Ci0rCQlLUkI1X0FQUkVRQk9EWV9pdDsKLSsJCWkyZF9PQ1NQX1NJTkdMRVJFU1A7Ci0rCQlBU04xX2l0ZW1fZXhfbmV3OwotKwkJVUlfYWRkX3ZlcmlmeV9zdHJpbmc7Ci0rCQlfb3NzbF9vbGRfZGVzX3NldF9rZXk7Ci0rCQlLUkI1X1BSSU5DTkFNRV9pdDsKLSsJCUVWUF9EZWNyeXB0SW5pdF9leDsKLSsJCWkyZF9PQ1NQX0NFUlRJRDsKLSsJCUFTTjFfaXRlbV9kMmlfYmlvOwotKwkJRUNfUE9JTlRfZGJsOwotKwkJYXNuMV9nZXRfY2hvaWNlX3NlbGVjdG9yOwotKwkJaTJkX0tSQjVfQ0hFQ0tTVU07Ci0rCQlFTkdJTkVfc2V0X3RhYmxlX2ZsYWdzOwotKwkJQUVTX29wdGlvbnM7Ci0rCQlFTkdJTkVfbG9hZF9jaGlsOwotKwkJT0NTUF9pZF9jbXA7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9uZXc7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlLUkI1X0FQUkVRX2l0OwotKwkJRU5HSU5FX2dldF9kZXN0cm95X2Z1bmN0aW9uOwotKwkJQ09ORl9zZXRfbmNvbmY7Ci0rCQlBU04xX1BSSU5UQUJMRV9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlESVNUX1BPSU5UX05BTUVfaXQ7Ci0rCQlYNTA5VjNfZXh0ZW5zaW9uc19wcmludDsKLSsJCV9vc3NsX29sZF9kZXNfY2ZiNjRfZW5jcnlwdDsKLSsJCVg1MDlfUkVWT0tFRF9hZGQxX2V4dF9pMmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX29mYl9lbmNyeXB0OwotKwkJS1JCNV9US1RCT0RZX25ldzsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2l0OwotKwkJRVJSX2xvYWRfVUlfc3RyaW5nczsKLSsJCWkyZF9LUkI1X0VOQ0tFWTsKLSsJCUFTTjFfdGVtcGxhdGVfbmV3OwotKwkJT0NTUF9TSUdOQVRVUkVfZnJlZTsKLSsJCUFTTjFfaXRlbV9pMmRfZnA7Ci0rCQlLUkI1X1BSSU5DTkFNRV9mcmVlOwotKwkJUEtDUzdfUkVDSVBfSU5GT19pdDsKLSsJCUVYVEVOREVEX0tFWV9VU0FHRV9pdDsKLSsJCUVDX0dGcF9zaW1wbGVfbWV0aG9kOwotKwkJRUNfR1JPVVBfcHJlY29tcHV0ZV9tdWx0OwotKwkJT0NTUF9yZXF1ZXN0X29uZXJlcV9nZXQwOwotKwkJVUlfbWV0aG9kX3NldF93cml0ZXI7Ci0rCQlLUkI1X0FVVEhFTlRfbmV3OwotKwkJWDUwOV9DUkxfSU5GT19pdDsKLSsJCURTT19zZXRfbmFtZV9jb252ZXJ0ZXI7Ci0rCQlBRVNfc2V0X2RlY3J5cHRfa2V5OwotKwkJUEtDUzdfRElHRVNUX2l0OwotKwkJUEtDUzEyX3g1MDkyY2VydGJhZzsKLSsJCUVWUF9EaWdlc3RJbml0X2V4OwotKwkJaTJhX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCU9DU1BfUkVTUE9OU0VfaXQ7Ci0rCQlQS0NTN19FTkNfQ09OVEVOVF9pdDsKLSsJCU9DU1BfcmVxdWVzdF9hZGQwX2lkOwotKwkJRUNfUE9JTlRfbWFrZV9hZmZpbmU7Ci0rCQlEU09fZ2V0X2ZpbGVuYW1lOwotKwkJT0NTUF9DRVJUU1RBVFVTX2l0OwotKwkJT0NTUF9yZXF1ZXN0X2FkZDFfY2VydDsKLSsJCVVJX2dldDBfb3V0cHV0X3N0cmluZzsKLSsJCVVJX2R1cF92ZXJpZnlfc3RyaW5nOwotKwkJQk5fbW9kX2xzaGlmdDsKLSsJCUtSQjVfQVVUSERBVEFfaXQ7Ci0rCQlhc24xX3NldF9jaG9pY2Vfc2VsZWN0b3I7Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfc3RhdHVzOwotKwkJT0NTUF9SRVNQSURfZnJlZTsKLSsJCWFzbjFfZ2V0X2ZpZWxkX3B0cjsKLSsJCVVJX2FkZF9pbnB1dF9zdHJpbmc7Ci0rCQlPQ1NQX0NSTElEX2l0OwotKwkJaTJkX0tSQjVfQVVUSEVOVEJPRFk7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9jb3VudDsKLSsJCUVOR0lORV9sb2FkX2F0YWxsYTsKLSsJCVg1MDlfTkFNRV9pdDsKLSsJCVVTRVJOT1RJQ0VfaXQ7Ci0rCQlPQ1NQX1JFUUlORk9fbmV3OwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dDsKLSsJCUNSWVBUT19nZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKLSsJCUNSWVBUT19nZXRfZXhfZGF0YV9pbXBsOwotKwkJQVNOMV9pdGVtX3BhY2s7Ci0rCQlpMmRfS1JCNV9FTkNEQVRBOwotKwkJWDUwOV9QVVJQT1NFX3NldDsKLSsJCVg1MDlfUkVRX0lORk9faXQ7Ci0rCQlVSV9tZXRob2Rfc2V0X29wZW5lcjsKLSsJCUFTTjFfaXRlbV9leF9mcmVlOwotKwkJQVNOMV9CT09MRUFOX2l0OwotKwkJRU5HSU5FX2dldF90YWJsZV9mbGFnczsKLSsJCVVJX2NyZWF0ZV9tZXRob2Q7Ci0rCQlPQ1NQX09ORVJFUV9hZGQxX2V4dF9pMmQ7Ci0rCQlfc2hhZG93X0RFU19jaGVja19rZXk7Ci0rCQlkMmlfT0NTUF9SRVFJTkZPOwotKwkJVUlfYWRkX2luZm9fc3RyaW5nOwotKwkJVUlfZ2V0X3Jlc3VsdF9taW5zaXplOwotKwkJQVNOMV9OVUxMX2l0OwotKwkJQk5fbW9kX2xzaGlmdDE7Ci0rCQlkMmlfT0NTUF9PTkVSRVE7Ci0rCQlPQ1NQX09ORVJFUV9uZXc7Ci0rCQlLUkI1X1RJQ0tFVF9pdDsKLSsJCUVWUF9hZXNfMTkyX2NiYzsKLSsJCUtSQjVfVElDS0VUX2ZyZWU7Ci0rCQlVSV9uZXc7Ci0rCQlPQ1NQX3Jlc3BvbnNlX2NyZWF0ZTsKLSsJCV9vc3NsX29sZF9kZXNfeGNiY19lbmNyeXB0OwotKwkJUEtDUzdfaXQ7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXQ7Ci0rCQlFTkdJTkVfc2V0X2ZsYWdzOwotKwkJX29zc2xfb2xkX2Rlc19lY2JfZW5jcnlwdDsKLSsJCU9DU1BfcmVzcG9uc2VfZ2V0MV9iYXNpYzsKLSsJCUVWUF9EaWdlc3Q7Ci0rCQlPQ1NQX09ORVJFUV9kZWxldGVfZXh0OwotKwkJQVNOMV9UQk9PTEVBTl9pdDsKLSsJCUFTTjFfaXRlbV9uZXc7Ci0rCQlBU04xX1RJTUVfdG9fZ2VuZXJhbGl6ZWR0aW1lOwotKwkJQklHTlVNX2l0OwotKwkJQUVTX2NiY19lbmNyeXB0OwotKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mbjsKLSsJCU9DU1BfUkVTUE9OU0VfZnJlZTsKLSsJCVVJX21ldGhvZF9zZXRfcmVhZGVyOwotKwkJaTJkX0FTTjFfVDYxU1RSSU5HOwotKwkJRUNfUE9JTlRfc2V0X3RvX2luZmluaXR5OwotKwkJRVJSX2xvYWRfT0NTUF9zdHJpbmdzOwotKwkJRUNfUE9JTlRfcG9pbnQyb2N0OwotKwkJS1JCNV9BUFJFUV9mcmVlOwotKwkJQVNOMV9PQkpFQ1RfaXQ7Ci0rCQlPQ1NQX2NybElEX25ldzsKLSsJCU9DU1BfY3JsSUQyX25ldzsKLSsJCUNPTkZfbW9kdWxlc19sb2FkX2ZpbGU7Ci0rCQlDT05GX2ltb2R1bGVfc2V0X3Vzcl9kYXRhOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X3N0cmluZzsKLSsJCUNPTkZfbW9kdWxlX2dldF91c3JfZGF0YTsKLSsJCUFTTjFfYWRkX29pZF9tb2R1bGU7Ci0rCQlDT05GX21vZHVsZXNfZmluaXNoOwotKwkJT1BFTlNTTF9jb25maWc7Ci0rCQlDT05GX21vZHVsZXNfdW5sb2FkOwotKwkJQ09ORl9pbW9kdWxlX2dldF92YWx1ZTsKLSsJCUNPTkZfbW9kdWxlX3NldF91c3JfZGF0YTsKLSsJCUNPTkZfcGFyc2VfbGlzdDsKLSsJCUNPTkZfbW9kdWxlX2FkZDsKLSsJCUNPTkZfZ2V0MV9kZWZhdWx0X2NvbmZpZ19maWxlOwotKwkJQ09ORl9pbW9kdWxlX2dldF9mbGFnczsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfbW9kdWxlOwotKwkJQ09ORl9tb2R1bGVzX2xvYWQ7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X25hbWU7Ci0rCQlFUlJfcGVla190b3BfZXJyb3I7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X3Vzcl9kYXRhOwotKwkJQ09ORl9pbW9kdWxlX3NldF9mbGFnczsKLSsJCUVOR0lORV9hZGRfY29uZl9tb2R1bGU7Ci0rCQlFUlJfcGVla19sYXN0X2Vycm9yX2xpbmU7Ci0rCQlFUlJfcGVla19sYXN0X2Vycm9yX2xpbmVfZGF0YTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3I7Ci0rCQlERVNfcmVhZF8ycGFzc3dvcmRzOwotKwkJREVTX3JlYWRfcGFzc3dvcmQ7Ci0rCQlVSV9VVElMX3JlYWRfcHc7Ci0rCQlVSV9VVElMX3JlYWRfcHdfc3RyaW5nOwotKwkJRU5HSU5FX2xvYWRfYWVwOwotKwkJRU5HSU5FX2xvYWRfc3VyZXdhcmU7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19ub2NvbmY7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19ub2NvbmY7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19jb25mOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fY29uZjsKLSsJCU9QRU5TU0xfbG9hZF9idWlsdGluX21vZHVsZXM7Ci0rCQlBRVNfb2ZiMTI4X2VuY3J5cHQ7Ci0rCQlBRVNfY3RyMTI4X2VuY3J5cHQ7Ci0rCQlBRVNfY2ZiMTI4X2VuY3J5cHQ7Ci0rCQlFTkdJTkVfbG9hZF80NzU4Y2NhOwotKwkJX29zc2xfMDk2X2Rlc19yYW5kb21fc2VlZDsKLSsJCUVWUF9hZXNfMjU2X29mYjsKLSsJCUVWUF9hZXNfMTkyX29mYjsKLSsJCUVWUF9hZXNfMTI4X2NmYjEyODsKLSsJCUVWUF9hZXNfMjU2X2NmYjEyODsKLSsJCUVWUF9hZXNfMTI4X29mYjsKLSsJCUVWUF9hZXNfMTkyX2NmYjEyODsKLSsJCUNPTkZfbW9kdWxlc19mcmVlOwotKwkJTkNPTkZfZGVmYXVsdDsKLSsJCU9QRU5TU0xfbm9fY29uZmlnOwotKwkJTkNPTkZfV0lOMzI7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR19uZXc7Ci0rCQlFVlBfZGVzX2VkZV9lY2I7Ci0rCQlpMmRfQVNOMV9VTklWRVJTQUxTVFJJTkc7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR19mcmVlOwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfaXQ7Ci0rCQlkMmlfQVNOMV9VTklWRVJTQUxTVFJJTkc7Ci0rCQlFVlBfZGVzX2VkZTNfZWNiOwotKwkJWDUwOV9SRVFfcHJpbnRfZXg7Ci0rCQlFTkdJTkVfdXBfcmVmOwotKwkJQlVGX01FTV9ncm93X2NsZWFuOwotKwkJQ1JZUFRPX3JlYWxsb2NfY2xlYW47Ci0rCQlCVUZfc3RybGNhdDsKLSsJCUJJT19pbmRlbnQ7Ci0rCQlCVUZfc3RybGNweTsKLSsJCU9wZW5TU0xEaWU7Ci0rCQlPUEVOU1NMX2NsZWFuc2U7Ci0rCQlFTkdJTkVfc2V0dXBfYnNkX2NyeXB0b2RldjsKLSsJCUVSUl9yZWxlYXNlX2Vycl9zdGF0ZV90YWJsZTsKLSsJCUVWUF9hZXNfMTI4X2NmYjg7Ci0rCQlGSVBTX2NvcnJ1cHRfcnNhOwotKwkJRklQU19zZWxmdGVzdF9kZXM7Ci0rCQlFVlBfYWVzXzEyOF9jZmIxOwotKwkJRVZQX2Flc18xOTJfY2ZiODsKLSsJCUZJUFNfbW9kZV9zZXQ7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2RzYTsKLSsJCUVWUF9hZXNfMjU2X2NmYjg7Ci0rCQlGSVBTX2FsbG93X21kNTsKLSsJCURFU19lZGUzX2NmYl9lbmNyeXB0OwotKwkJRVZQX2Rlc19lZGUzX2NmYjg7Ci0rCQlGSVBTX3JhbmRfc2VlZGVkOwotKwkJQUVTX2NmYnJfZW5jcnlwdF9ibG9jazsKLSsJCUFFU19jZmI4X2VuY3J5cHQ7Ci0rCQlGSVBTX3JhbmRfc2VlZDsKLSsJCUZJUFNfY29ycnVwdF9kZXM7Ci0rCQlFVlBfYWVzXzE5Ml9jZmIxOwotKwkJRklQU19zZWxmdGVzdF9hZXM7Ci0rCQlGSVBTX3NldF9wcm5nX2tleTsKLSsJCUVWUF9kZXNfY2ZiODsKLSsJCUZJUFNfY29ycnVwdF9kc2E7Ci0rCQlGSVBTX3Rlc3RfbW9kZTsKLSsJCUZJUFNfcmFuZF9tZXRob2Q7Ci0rCQlFVlBfYWVzXzI1Nl9jZmIxOwotKwkJRVJSX2xvYWRfRklQU19zdHJpbmdzOwotKwkJRklQU19jb3JydXB0X2FlczsKLSsJCUZJUFNfc2VsZnRlc3Rfc2hhMTsKLSsJCUZJUFNfc2VsZnRlc3RfcnNhOwotKwkJRklQU19jb3JydXB0X3NoYTE7Ci0rCQlFVlBfZGVzX2NmYjE7Ci0rCQlGSVBTX2RzYV9jaGVjazsKLSsJCUFFU19jZmIxX2VuY3J5cHQ7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiMTsKLSsJCUZJUFNfcmFuZF9jaGVjazsKLSsJCUZJUFNfbWQ1X2FsbG93ZWQ7Ci0rCQlGSVBTX21vZGU7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2ZhaWxlZDsKLSsJCXNrX2lzX3NvcnRlZDsKLSsJCVg1MDlfY2hlY2tfY2E7Ci0rCQlITUFDX0NUWF9zZXRfZmxhZ3M7Ci0rCQlkMmlfUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTjsKLSsJCVBST1hZX1BPTElDWV9pdDsKLSsJCWkyZF9QUk9YWV9QT0xJQ1k7Ci0rCQlpMmRfUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTjsKLSsJCWQyaV9QUk9YWV9QT0xJQ1k7Ci0rCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX25ldzsKLSsJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fZnJlZTsKLSsJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05faXQ7Ci0rCQlQUk9YWV9QT0xJQ1lfZnJlZTsKLSsJCVBST1hZX1BPTElDWV9uZXc7Ci0rCQlCTl9NT05UX0NUWF9zZXRfbG9ja2VkOwotKwkJRklQU19zZWxmdGVzdF9ybmc7Ci0rCQlFVlBfc2hhMzg0OwotKwkJRVZQX3NoYTUxMjsKLSsJCUVWUF9zaGEyMjQ7Ci0rCQlFVlBfc2hhMjU2OwotKwkJRklQU19zZWxmdGVzdF9obWFjOwotKwkJRklQU19jb3JydXB0X3JuZzsKLSsJCUJOX21vZF9leHBfbW9udF9jb25zdHRpbWU7Ci0rCQlSU0FfWDkzMV9oYXNoX2lkOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfWDkzMTsKLSsJCVJTQV92ZXJpZnlfUEtDUzFfUFNTOwotKwkJUlNBX3BhZGRpbmdfYWRkX1g5MzE7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTOwotKwkJUEtDUzFfTUdGMTsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfWHBxOwotKwkJUlNBX1g5MzFfZ2VuZXJhdGVfa2V5OwotKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWU7Ci0rCQlCTl9YOTMxX2dlbmVyYXRlX3ByaW1lOwotKwkJUlNBX1g5MzFfZGVyaXZlOwotKwkJQklPX25ld19kZ3JhbTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8zODQ7Ci0rCQlFUlJfc2V0X21hcms7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXQwX2NybHM7Ci0rCQlFTkdJTkVfc2V0X1NUT1JFOwotKwkJRU5HSU5FX3JlZ2lzdGVyX0VDRFNBOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9zdGFydF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKLSsJCUJOX0JMSU5ESU5HX2ludmVydF9leDsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfbnVtYmVyOwotKwkJQk5fQkxJTkRJTkdfZ2V0X3RocmVhZF9pZDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldDBfcGFyYW07Ci0rCQlQT0xJQ1lfTUFQUElOR19pdDsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX3N0YXJ0OwotKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2ZyZWU7Ci0rCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfTklEOwotKwkJQk5fbmlzdF9tb2RfMTkyOwotKwkJRUNfR1JPVVBfZ2V0X3RyaW5vbWlhbF9iYXNpczsKLSsJCVNUT1JFX3NldF9tZXRob2Q7Ci0rCQlHRU5FUkFMX1NVQlRSRUVfZnJlZTsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfaXQ7Ci0rCQlFQ0RIX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCVBLQ1MxMl9hZGRfc2FmZTsKLSsJCUVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZTsKLSsJCVNUT1JFX21ldGhfZ2V0X3VwZGF0ZV9zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfdXBkYXRlX3N0b3JlX2Z1bmN0aW9uOwotKwkJRU5HSU5FX3JlZ2lzdGVyX0VDREg7Ci0rCQlTSEE1MTJfVXBkYXRlOwotKwkJaTJkX0VDUHJpdmF0ZUtleTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8xOTI7Ci0rCQlTVE9SRV9tb2RpZnlfY2VydGlmaWNhdGU7Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOwotKwkJQk5fR0YybV9tb2RfZXhwX2FycjsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfbnVtYmVyOwotKwkJWDUwOV9rZXlpZF9nZXQwOwotKwkJRU5HSU5FX2xvYWRfZ21wOwotKwkJcGl0ZW1fbmV3OwotKwkJQk5fR0YybV9tb2RfbXVsX2FycjsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmRwOwotKwkJbzJpX0VDUHVibGljS2V5OwotKwkJRUNfS0VZX2NvcHk7Ci0rCQlCSU9fZHVtcF9mcDsKLSsJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9wYXJlbnQ7Ci0rCQlFQ19HUk9VUF9jaGVja19kaXNjcmltaW5hbnQ7Ci0rCQlpMm9fRUNQdWJsaWNLZXk7Ci0rCQlFQ19LRVlfcHJlY29tcHV0ZV9tdWx0OwotKwkJYTJpX0lQQUREUkVTUzsKLSsJCVNUT1JFX21ldGhfc2V0X2luaXRpYWxpc2VfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2luaXRpYWxpc2VfZnVuY3Rpb247Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVwdGg7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9pbmhlcml0OwotKwkJRUNfUE9JTlRfcG9pbnQyYm47Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X2RuOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3BvbGljaWVzOwotKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGMm07Ci0rCQlTVE9SRV9kZXN0cm95X21ldGhvZDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1NUT1JFOwotKwkJRVZQX1BLRVlfZ2V0MV9FQ19LRVk7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9udW1iZXI7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNESDsKLSsJCUVDX0tFWV9nZXRfY29udl9mb3JtOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfTkRFRl9pdDsKLSsJCVNUT1JFX2RlbGV0ZV9wdWJsaWNfa2V5OwotKwkJU1RPUkVfZ2V0X3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9tb2RpZnlfYXJiaXRyYXJ5OwotKwkJRU5HSU5FX2dldF9zdGF0aWNfc3RhdGU7Ci0rCQlwcXVldWVfaXRlcmF0b3I7Ci0rCQlFQ0RTQV9TSUdfbmV3OwotKwkJT1BFTlNTTF9ESVJfZW5kOwotKwkJQk5fR0YybV9tb2Rfc3FyOwotKwkJRUNfUE9JTlRfYm4ycG9pbnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZGVwdGg7Ci0rCQlFQ19LRVlfc2V0X2FzbjFfZmxhZzsKLSsJCVNUT1JFX2dldF9tZXRob2Q7Ci0rCQlFQ19LRVlfZ2V0X2tleV9tZXRob2RfZGF0YTsKLSsJCUVDRFNBX3NpZ25fZXg7Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19lbmQ7Ci0rCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOwotKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZfZm9ybTsKLSsJCVNUT1JFX21ldGhvZF9zZXRfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9BVFRSX0lORk9faW47Ci0rCQlQRU1fcmVhZF9iaW9fRUNQS1BhcmFtZXRlcnM7Ci0rCQlFQ19HUk9VUF9nZXRfcGVudGFub21pYWxfYmFzaXM7Ci0rCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQk5fQkxJTkRJTkdfc2V0X2ZsYWdzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9wb2xpY2llczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfbmFtZTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9wdXJwb3NlOwotKwkJU1RPUkVfZ2V0X251bWJlcjsKLSsJCUVDRFNBX3NpZ25fc2V0dXA7Ci0rCQlCTl9HRjJtX21vZF9zb2x2ZV9xdWFkX2FycjsKLSsJCUVDX0tFWV91cF9yZWY7Ci0rCQlQT0xJQ1lfTUFQUElOR19mcmVlOwotKwkJQk5fR0YybV9tb2RfZGl2OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2ZsYWdzOwotKwkJRUNfS0VZX2ZyZWU7Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X25leHRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKLSsJCVBFTV93cml0ZV9iaW9fRUNQcml2YXRlS2V5OwotKwkJZDJpX0VDX1BVQktFWTsKLSsJCVNUT1JFX21ldGhfZ2V0X2dlbmVyYXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9nZW5lcmF0ZV9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3RfZW5kX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X2VuZF9mdW5jdGlvbjsKLSsJCXBxdWV1ZV9wcmludDsKLSsJCUVDX0dST1VQX2hhdmVfcHJlY29tcHV0ZV9tdWx0OwotKwkJRUNfS0VZX3ByaW50X2ZwOwotKwkJQk5fR0YybV9tb2RfYXJyOwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NFUlRfUEFJUjsKLSsJCUVWUF9QS0VZX2NtcDsKLSsJCVg1MDlfcG9saWN5X2xldmVsX25vZGVfY291bnQ7Ci0rCQlTVE9SRV9uZXdfZW5naW5lOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X3N0YXJ0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fbmV3OwotKwkJRUNESF9nZXRfZXhfZGF0YTsKLSsJCUVWUF9QS0VZX2dldF9hdHRyOwotKwkJRUNEU0FfZG9fc2lnbjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0VDREg7Ci0rCQlFQ0RIX09wZW5TU0w7Ci0rCQlFQ19LRVlfc2V0X2NvbnZfZm9ybTsKLSsJCUVDX1BPSU5UX2R1cDsKLSsJCUdFTkVSQUxfU1VCVFJFRV9uZXc7Ci0rCQlTVE9SRV9saXN0X2NybF9lbmRwOwotKwkJRUNfZ2V0X2J1aWx0aW5fY3VydmVzOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7Ci0rCQlYNTA5X3BjeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKLSsJCVNUT1JFX2xpc3RfY3JsX2VuZDsKLSsJCUVWUF9QS0VZX3NldDFfRUNfS0VZOwotKwkJQk5fR0YybV9tb2Rfc3FydF9hcnI7Ci0rCQlpMmRfRUNQcml2YXRlS2V5X2JpbzsKLSsJCUVDUEtQYXJhbWV0ZXJzX3ByaW50X2ZwOwotKwkJcHF1ZXVlX2ZpbmQ7Ci0rCQlFQ0RTQV9TSUdfZnJlZTsKLSsJCVBFTV93cml0ZV9iaW9fRUNQS1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kOwotKwkJRUNfS0VZX3NldF9wcml2YXRlX2tleTsKLSsJCXBxdWV1ZV9wZWVrOwotKwkJU1RPUkVfZ2V0X2FyYml0cmFyeTsKLSsJCVNUT1JFX3N0b3JlX2NybDsKLSsJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9wb2xpY3k7Ci0rCQlQS0NTMTJfYWRkX3NhZmVzOwotKwkJQk5fQkxJTkRJTkdfY29udmVydF9leDsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZnJlZTsKLSsJCU9QRU5TU0xfaWEzMmNhcF9sb2M7Ci0rCQlCTl9HRjJtX3BvbHkyYXJyOwotKwkJU1RPUkVfY3RybDsKLSsJCVNUT1JFX0FUVFJfSU5GT19jb21wYXJlOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzIyNDsKLSsJCWkyZF9FQ1BhcmFtZXRlcnM7Ci0rCQlpMmRfRUNQS1BhcmFtZXRlcnM7Ci0rCQlCTl9HRU5DQl9jYWxsOwotKwkJZDJpX0VDUEtQYXJhbWV0ZXJzOwotKwkJU1RPUkVfbWV0aF9zZXRfZ2VuZXJhdGVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2dlbmVyYXRlX2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9FQ0RIOwotKwkJTkFNRV9DT05TVFJBSU5UU19uZXc7Ci0rCQlTSEEyNTZfSW5pdDsKLSsJCUVDX0tFWV9nZXQwX3B1YmxpY19rZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX0VDX1BVQktFWTsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfY3N0cjsKLSsJCVNUT1JFX2xpc3RfY3JsX25leHQ7Ci0rCQlTVE9SRV9BVFRSX0lORk9faW5fcmFuZ2U7Ci0rCQlFQ1BhcmFtZXRlcnNfcHJpbnQ7Ci0rCQlTVE9SRV9tZXRoX3NldF9kZWxldGVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2RlbGV0ZV9mdW5jdGlvbjsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfbmV4dDsKLSsJCUFTTjFfZ2VuZXJhdGVfbmNvbmY7Ci0rCQlCVUZfbWVtZHVwOwotKwkJQk5fR0YybV9tb2RfbXVsOwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9uZXh0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X25leHRfZnVuY3Rpb247Ci0rCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9kbjsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfbmV4dDsKLSsJCUVDX0dST1VQX3NldF9zZWVkOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3RydXN0OwotKwkJU1RPUkVfQVRUUl9JTkZPX2ZyZWU7Ci0rCQlTVE9SRV9nZXRfcHJpdmF0ZV9rZXk7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cl9jb3VudDsKLSsJCVNUT1JFX0FUVFJfSU5GT19uZXc7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfR0YybTsKLSsJCVNUT1JFX21ldGhfc2V0X3Jldm9rZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfcmV2b2tlX2Z1bmN0aW9uOwotKwkJU1RPUkVfc3RvcmVfbnVtYmVyOwotKwkJQk5faXNfcHJpbWVfZXg7Ci0rCQlTVE9SRV9yZXZva2VfcHVibGljX2tleTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyYW07Ci0rCQlTVE9SRV9kZWxldGVfYXJiaXRyYXJ5OwotKwkJUEVNX3JlYWRfWDUwOV9DRVJUX1BBSVI7Ci0rCQlYNTA5X1NUT1JFX3NldF9kZXB0aDsKLSsJCUVDRFNBX2dldF9leF9kYXRhOwotKwkJU0hBMjI0OwotKwkJQklPX2R1bXBfaW5kZW50X2ZwOwotKwkJRUNfS0VZX3NldF9ncm91cDsKLSsJCUJVRl9zdHJuZHVwOwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9zdGFydDsKLSsJCUJOX0dGMm1fbW9kOwotKwkJWDUwOV9SRVFfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlFQ19HUk9VUF9nZXRfc2VlZF9sZW47Ci0rCQlFUlJfbG9hZF9TVE9SRV9zdHJpbmdzOwotKwkJUEVNX3JlYWRfYmlvX0VDX1BVQktFWTsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kOwotKwkJaTJkX0VDX1BVQktFWTsKLSsJCUVDRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCUFTTjFfcHV0X2VvYzsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsaWNpdF9wb2xpY3k7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbF9wb2xpY3k7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV90YWJsZV9jbGVhbnVwOwotKwkJU1RPUkVfbW9kaWZ5X3ByaXZhdGVfa2V5OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZnJlZTsKLSsJCUVDX01FVEhPRF9nZXRfZmllbGRfdHlwZTsKLSsJCUVDX0dGcF9uaXN0X21ldGhvZDsKLSsJCVNUT1JFX21ldGhfc2V0X21vZGlmeV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbW9kaWZ5X2Z1bmN0aW9uOwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfbmV4dDsKLSsJCUVOR0lORV9sb2FkX3BhZGxvY2s7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfbmFtZTsKLSsJCVg1MDlfQ0VSVF9QQUlSX2l0OwotKwkJU1RPUkVfbWV0aF9nZXRfcmV2b2tlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9yZXZva2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2dldF9mdW5jdGlvbjsKLSsJCVNUT1JFX21vZGlmeV9udW1iZXI7Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfc3RvcmVfcHJpdmF0ZV9rZXk7Ci0rCQlCTl9HRjJtX21vZF9zcXJfYXJyOwotKwkJUlNBX3NldHVwX2JsaW5kaW5nOwotKwkJQklPX3NfZGF0YWdyYW07Ci0rCQlTVE9SRV9NZW1vcnk7Ci0rCQlza19maW5kX2V4OwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGMm07Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNEU0E7Ci0rCQlQT0xJQ1lfQ09OU1RSQUlOVFNfbmV3OwotKwkJQk5fR0YybV9tb2Rfc3FydDsKLSsJCUVDREhfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRUNfS0VZX2dlbmVyYXRlX2tleTsKLSsJCVNIQTM4NF9VcGRhdGU7Ci0rCQlCTl9HRjJtX2FycjJwb2x5OwotKwkJU1RPUkVfbWV0aG9kX2dldF9nZXRfZnVuY3Rpb247Ci0rCQlTVE9SRV9tZXRoX3NldF9jbGVhbnVwX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9jbGVhbnVwX2Z1bmN0aW9uOwotKwkJRUNfR1JPVVBfY2hlY2s7Ci0rCQlkMmlfRUNQcml2YXRlS2V5X2JpbzsKLSsJCUVDX0tFWV9pbnNlcnRfa2V5X21ldGhvZF9kYXRhOwotKwkJU1RPUkVfbWV0aF9nZXRfbG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbG9ja19zdG9yZV9mdW5jdGlvbjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9kZXB0aDsKLSsJCVNIQTIyNF9GaW5hbDsKLSsJCVNUT1JFX21ldGhfc2V0X3VwZGF0ZV9zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfdXBkYXRlX3N0b3JlX2Z1bmN0aW9uOwotKwkJU0hBMjI0X1VwZGF0ZTsKLSsJCWQyaV9FQ1ByaXZhdGVLZXk7Ci0rCQlBU04xX2l0ZW1fbmRlZl9pMmQ7Ci0rCQlTVE9SRV9kZWxldGVfcHJpdmF0ZV9rZXk7Ci0rCQlFUlJfcG9wX3RvX21hcms7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1NUT1JFOwotKwkJWDUwOV9wb2xpY3lfbGV2ZWxfZ2V0MF9ub2RlOwotKwkJaTJkX1BLQ1M3X05ERUY7Ci0rCQlFQ19HUk9VUF9nZXRfZGVncmVlOwotKwkJQVNOMV9nZW5lcmF0ZV92MzsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfY3N0cjsKLSsJCVg1MDlfcG9saWN5X3RyZWVfbGV2ZWxfY291bnQ7Ci0rCQlCTl9HRjJtX2FkZDsKLSsJCUVDX0tFWV9nZXQwX2dyb3VwOwotKwkJU1RPUkVfZ2VuZXJhdGVfY3JsOwotKwkJU1RPUkVfc3RvcmVfcHVibGljX2tleTsKLSsJCVg1MDlfQ0VSVF9QQUlSX2ZyZWU7Ci0rCQlTVE9SRV9yZXZva2VfcHJpdmF0ZV9rZXk7Ci0rCQlCTl9uaXN0X21vZF8yMjQ7Ci0rCQlTSEE1MTJfRmluYWw7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2RuOwotKwkJU1RPUkVfbWV0aF9nZXRfaW5pdGlhbGlzZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKLSsJCVNUT1JFX2RlbGV0ZV9udW1iZXI7Ci0rCQlpMmRfRUNfUFVCS0VZX2JpbzsKLSsJCUJJT19kZ3JhbV9ub25fZmF0YWxfZXJyb3I7Ci0rCQlFQ19HUk9VUF9nZXRfYXNuMV9mbGFnOwotKwkJU1RPUkVfQVRUUl9JTkZPX2luX2V4OwotKwkJU1RPUkVfbGlzdF9jcmxfc3RhcnQ7Ci0rCQlFQ0RIX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTVE9SRV9tZXRoX2dldF9tb2RpZnlfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X21vZGlmeV9mdW5jdGlvbjsKLSsJCXYyaV9BU04xX0JJVF9TVFJJTkc7Ci0rCQlTVE9SRV9zdG9yZV9jZXJ0aWZpY2F0ZTsKLSsJCU9CSl9ic2VhcmNoX2V4OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlZmF1bHQ7Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X3NoYTFzdHI7Ci0rCQlCTl9HRjJtX21vZF9pbnY7Ci0rCQlCTl9HRjJtX21vZF9leHA7Ci0rCQlTVE9SRV9tb2RpZnlfcHVibGljX2tleTsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3Rfc3RhcnRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247Ci0rCQlFQ19HUk9VUF9nZXQwX3NlZWQ7Ci0rCQlTVE9SRV9zdG9yZV9hcmJpdHJhcnk7Ci0rCQlTVE9SRV9tZXRoX3NldF91bmxvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3VubG9ja19zdG9yZV9mdW5jdGlvbjsKLSsJCUJOX0dGMm1fbW9kX2Rpdl9hcnI7Ci0rCQlFTkdJTkVfc2V0X0VDRFNBOwotKwkJU1RPUkVfY3JlYXRlX21ldGhvZDsKLSsJCUVDUEtQYXJhbWV0ZXJzX3ByaW50OwotKwkJRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXk7Ci0rCQlQRU1fd3JpdGVfRUNfUFVCS0VZOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MTsKLSsJCUVDREhfc2V0X21ldGhvZDsKLSsJCXYyaV9HRU5FUkFMX05BTUVfZXg7Ci0rCQlFQ0RIX3NldF9leF9kYXRhOwotKwkJU1RPUkVfZ2VuZXJhdGVfa2V5OwotKwkJQk5fbmlzdF9tb2RfNTIxOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX2xldmVsOwotKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKLSsJCUVDX0dST1VQX3NldF9wb2ludF9jb252X2Zvcm07Ci0rCQlQRU1fcmVhZF9FQ19QVUJLRVk7Ci0rCQlpMmRfRUNEU0FfU0lHOwotKwkJRUNEU0FfT3BlblNTTDsKLSsJCVNUT1JFX2RlbGV0ZV9jcmw7Ci0rCQlFQ19LRVlfZ2V0X2VuY19mbGFnczsKLSsJCUFTTjFfY29uc3RfY2hlY2tfaW5maW5pdGVfZW5kOwotKwkJRVZQX1BLRVlfZGVsZXRlX2F0dHI7Ci0rCQlFQ0RTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlc19HRjJtOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRjJtOwotKwkJRUNfR1JPVVBfY21wOwotKwkJU1RPUkVfcmV2b2tlX2NlcnRpZmljYXRlOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzI1NjsKLSsJCVNUT1JFX21ldGhfZ2V0X2RlbGV0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfZGVsZXRlX2Z1bmN0aW9uOwotKwkJU0hBMjI0X0luaXQ7Ci0rCQlQRU1fcmVhZF9FQ1ByaXZhdGVLZXk7Ci0rCQlTSEE1MTJfSW5pdDsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZHA7Ci0rCQlCTl9zZXRfbmVnYXRpdmU7Ci0rCQlFUlJfbG9hZF9FQ0RTQV9zdHJpbmdzOwotKwkJRUNfR1JPVVBfZ2V0X2Jhc2lzX3R5cGU7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfbmV4dDsKLSsJCWkydl9BU04xX0JJVF9TVFJJTkc7Ci0rCQlTVE9SRV9PQkpFQ1RfZnJlZTsKLSsJCUJOX25pc3RfbW9kXzM4NDsKLSsJCWkyZF9YNTA5X0NFUlRfUEFJUjsKLSsJCVBFTV93cml0ZV9FQ1BLUGFyYW1ldGVyczsKLSsJCUVDREhfY29tcHV0ZV9rZXk7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9zaGExc3RyOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RIOwotKwkJcHF1ZXVlX3BvcDsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2NzdHI7Ci0rCQlQT0xJQ1lfQ09OU1RSQUlOVFNfaXQ7Ci0rCQlTVE9SRV9nZXRfZXhfbmV3X2luZGV4OwotKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfT0JKOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMF9wb2xpY3k7Ci0rCQlCTl9HRjJtX21vZF9zb2x2ZV9xdWFkOwotKwkJU0hBMjU2OwotKwkJaTJkX0VDUHJpdmF0ZUtleV9mcDsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF91c2VyX3BvbGljaWVzOwotKwkJWDUwOV9wY3lfdHJlZV9nZXQwX3Vzcl9wb2xpY2llczsKLSsJCU9QRU5TU0xfRElSX3JlYWQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDRFNBOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fbG9va3VwOwotKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOwotKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0YybTsKLSsJCUVDX0dST1VQX2R1cDsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RTQTsKLSsJCUVDX0tFWV9uZXc7Ci0rCQlTSEEyNTZfVHJhbnNmb3JtOwotKwkJRUNfS0VZX3NldF9lbmNfZmxhZ3M7Ci0rCQlFQ0RTQV92ZXJpZnk7Ci0rCQlFQ19QT0lOVF9wb2ludDJoZXg7Ci0rCQlFTkdJTkVfZ2V0X1NUT1JFOwotKwkJU0hBNTEyOwotKwkJU1RPUkVfZ2V0X2NlcnRpZmljYXRlOwotKwkJRUNEU0FfZG9fc2lnbl9leDsKLSsJCUVDRFNBX2RvX3ZlcmlmeTsKLSsJCWQyaV9FQ1ByaXZhdGVLZXlfZnA7Ci0rCQlTVE9SRV9kZWxldGVfY2VydGlmaWNhdGU7Ci0rCQlTSEE1MTJfVHJhbnNmb3JtOwotKwkJWDUwOV9TVE9SRV9zZXQxX3BhcmFtOwotKwkJU1RPUkVfbWV0aG9kX2dldF9jdHJsX2Z1bmN0aW9uOwotKwkJU1RPUkVfZnJlZTsKLSsJCVBFTV93cml0ZV9FQ1ByaXZhdGVLZXk7Ci0rCQlTVE9SRV9tZXRoX2dldF91bmxvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3VubG9ja19zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX2dldF9leF9kYXRhOwotKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5OwotKwkJUEVNX3JlYWRfRUNQS1BhcmFtZXRlcnM7Ci0rCQlYNTA5X0NFUlRfUEFJUl9uZXc7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfU1RPUkU7Ci0rCQlSU0FfZ2VuZXJhdGVfa2V5X2V4OwotKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7Ci0rCQlFQ1BhcmFtZXRlcnNfcHJpbnRfZnA7Ci0rCQlYNTA5VjNfTkFNRV9mcm9tX3NlY3Rpb247Ci0rCQlFVlBfUEtFWV9hZGQxX2F0dHI7Ci0rCQlTVE9SRV9tb2RpZnlfY3JsOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9zdGFydDsKLSsJCVBPTElDWV9NQVBQSU5HU19pdDsKLSsJCUdFTkVSQUxfU1VCVFJFRV9pdDsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9uYW1lOwotKwkJUEVNX3dyaXRlX1g1MDlfQ0VSVF9QQUlSOwotKwkJQklPX2R1bXBfaW5kZW50X2NiOwotKwkJZDJpX1g1MDlfQ0VSVF9QQUlSOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmRwOwotKwkJYXNuMV9jb25zdF9GaW5pc2g7Ci0rCQlpMmRfRUNfUFVCS0VZX2ZwOwotKwkJQk5fbmlzdF9tb2RfMjU2OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMF90YWJsZTsKLSsJCXBxdWV1ZV9mcmVlOwotKwkJQk5fQkxJTkRJTkdfY3JlYXRlX3BhcmFtOwotKwkJRUNEU0Ffc2l6ZTsKLSsJCWQyaV9FQ19QVUJLRVlfYmlvOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzUyMTsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfc2hhMXN0cjsKLSsJCUJOX2dlbmVyYXRlX3ByaW1lX2V4OwotKwkJRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWU7Ci0rCQlTSEEyNTZfRmluYWw7Ci0rCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OwotKwkJUEVNX3JlYWRfYmlvX0VDUHJpdmF0ZUtleTsKLSsJCVNUT1JFX21ldGhfZ2V0X2NsZWFudXBfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2NsZWFudXBfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X0VDREg7Ci0rCQlkMmlfRUNEU0FfU0lHOwotKwkJQk5faXNfcHJpbWVfZmFzdHRlc3RfZXg7Ci0rCQlFQ0RTQV9zaWduOwotKwkJWDUwOV9wb2xpY3lfY2hlY2s7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlTVE9SRV9zZXRfZXhfZGF0YTsKLSsJCUVOR0lORV9nZXRfRUNEU0E7Ci0rCQlFVlBfZWNkc2E7Ci0rCQlCTl9CTElORElOR19nZXRfZmxhZ3M7Ci0rCQlQS0NTMTJfYWRkX2NlcnQ7Ci0rCQlTVE9SRV9PQkpFQ1RfbmV3OwotKwkJRVJSX2xvYWRfRUNESF9zdHJpbmdzOwotKwkJRUNfS0VZX2R1cDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3JhbmRfa2V5OwotKwkJRUNEU0Ffc2V0X21ldGhvZDsKLSsJCWEyaV9JUEFERFJFU1NfTkM7Ci0rCQlkMmlfRUNQYXJhbWV0ZXJzOwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmQ7Ci0rCQlTVE9SRV9nZXRfY3JsOwotKwkJWDUwOV9QT0xJQ1lfTk9ERV9wcmludDsKLSsJCVNIQTM4NF9Jbml0OwotKwkJRUNfR0YybV9zaW1wbGVfbWV0aG9kOwotKwkJRUNEU0Ffc2V0X2V4X2RhdGE7Ci0rCQlTSEEzODRfRmluYWw7Ci0rCQlQS0NTN19zZXRfZGlnZXN0OwotKwkJRUNfS0VZX3ByaW50OwotKwkJU1RPUkVfbWV0aF9zZXRfbG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbG9ja19zdG9yZV9mdW5jdGlvbjsKLSsJCUVDRFNBX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTSEEzODQ7Ci0rCQlQT0xJQ1lfTUFQUElOR19uZXc7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZHA7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BvbGljeV90cmVlOwotKwkJRUNfR1JPVVBfc2V0X2FzbjFfZmxhZzsKLSsJCUVDX0tFWV9jaGVja19rZXk7Ci0rCQlkMmlfRUNfUFVCS0VZX2ZwOwotKwkJUEtDUzdfc2V0MF90eXBlX290aGVyOwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ0VSVF9QQUlSOwotKwkJcHF1ZXVlX25leHQ7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X2VuZF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9lbmRfZnVuY3Rpb247Ci0rCQlFVlBfUEtFWV9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3RpbWU7Ci0rCQlwcXVldWVfbmV3OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDREg7Ci0rCQlTVE9SRV9uZXdfbWV0aG9kOwotKwkJUEtDUzEyX2FkZF9rZXk7Ci0rCQlEU09fbWVyZ2U7Ci0rCQlFQ19QT0lOVF9oZXgycG9pbnQ7Ci0rCQlCSU9fZHVtcF9jYjsKLSsJCVNIQTI1Nl9VcGRhdGU7Ci0rCQlwcXVldWVfaW5zZXJ0OwotKwkJcGl0ZW1fZnJlZTsKLSsJCUJOX0dGMm1fbW9kX2ludl9hcnI7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RTQTsKLSsJCUJOX0JMSU5ESU5HX3NldF90aHJlYWRfaWQ7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV84MTkyOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fY2xlYXJfZmxhZ3M7Ci0rCQlnZXRfcmZjMjQwOV9wcmltZV8xMDI0OwotKwkJREhfY2hlY2tfcHViX2tleTsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzIwNDg7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV82MTQ0OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMTUzNjsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzMwNzI7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV80MDk2OwotKwkJZ2V0X3JmYzI0MDlfcHJpbWVfNzY4OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2ZsYWdzOwotKwkJRVZQX0NJUEhFUl9DVFhfbmV3OwotKwkJRVZQX0NJUEhFUl9DVFhfZnJlZTsKLSsJCUNhbWVsbGlhX2NiY19lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2ZiMTI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmIxX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jdHIxMjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYnJfZW5jcnlwdF9ibG9jazsKLSsJCUNhbWVsbGlhX2RlY3J5cHQ7Ci0rCQlDYW1lbGxpYV9lY2JfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9vZmIxMjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX3NldF9rZXk7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzEyOF9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X29mYjsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfb2ZiOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9vZmI7Ci0rCQlhMmlfaXBhZGQ7Ci0rCQlBU0lkZW50aWZpZXJzX2ZyZWU7Ci0rCQlpMmRfQVNJZE9yUmFuZ2U7Ci0rCQlFVlBfQ0lQSEVSX2Jsb2NrX3NpemU7Ci0rCQl2M19hc2lkX2lzX2Nhbm9uaWNhbDsKLSsJCUlQQWRkcmVzc0Nob2ljZV9mcmVlOwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2FwcF9kYXRhOwotKwkJQklPX3NldF9jYWxsYmFja19hcmc7Ci0rCQl2M19hZGRyX2FkZF9wcmVmaXg7Ci0rCQlJUEFkZHJlc3NPclJhbmdlX2l0OwotKwkJQklPX3NldF9mbGFnczsKLSsJCUFTSWRlbnRpZmllcnNfaXQ7Ci0rCQl2M19hZGRyX2dldF9yYW5nZTsKLSsJCUJJT19tZXRob2RfdHlwZTsKLSsJCXYzX2FkZHJfaW5oZXJpdHM7Ci0rCQlJUEFkZHJlc3NDaG9pY2VfaXQ7Ci0rCQlBRVNfaWdlX2VuY3J5cHQ7Ci0rCQl2M19hZGRyX2FkZF9yYW5nZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX25pZDsKLSsJCWQyaV9BU1JhbmdlOwotKwkJdjNfYWRkcl9hZGRfaW5oZXJpdDsKLSsJCXYzX2FzaWRfYWRkX2lkX29yX3JhbmdlOwotKwkJdjNfYWRkcl92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7Ci0rCQlFVlBfQ0lQSEVSX2l2X2xlbmd0aDsKLSsJCUVWUF9NRF90eXBlOwotKwkJdjNfYXNpZF9jYW5vbml6ZTsKLSsJCUlQQWRkcmVzc1JhbmdlX2ZyZWU7Ci0rCQl2M19hc2lkX2FkZF9pbmhlcml0OwotKwkJRVZQX0NJUEhFUl9DVFhfa2V5X2xlbmd0aDsKLSsJCUlQQWRkcmVzc1JhbmdlX25ldzsKLSsJCUFTSWRPclJhbmdlX25ldzsKLSsJCUVWUF9NRF9zaXplOwotKwkJRVZQX01EX0NUWF90ZXN0X2ZsYWdzOwotKwkJQklPX2NsZWFyX2ZsYWdzOwotKwkJaTJkX0FTUmFuZ2U7Ci0rCQlJUEFkZHJlc3NSYW5nZV9pdDsKLSsJCUlQQWRkcmVzc0Nob2ljZV9uZXc7Ci0rCQlBU0lkZW50aWZpZXJDaG9pY2VfbmV3OwotKwkJQVNSYW5nZV9mcmVlOwotKwkJRVZQX01EX3BrZXlfdHlwZTsKLSsJCUVWUF9NRF9DVFhfY2xlYXJfZmxhZ3M7Ci0rCQlJUEFkZHJlc3NGYW1pbHlfZnJlZTsKLSsJCWkyZF9JUEFkZHJlc3NGYW1pbHk7Ci0rCQlJUEFkZHJlc3NPclJhbmdlX25ldzsKLSsJCUVWUF9DSVBIRVJfZmxhZ3M7Ci0rCQl2M19hc2lkX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKLSsJCWQyaV9JUEFkZHJlc3NSYW5nZTsKLSsJCUFFU19iaV9pZ2VfZW5jcnlwdDsKLSsJCUJJT19nZXRfY2FsbGJhY2s7Ci0rCQlJUEFkZHJlc3NPclJhbmdlX2ZyZWU7Ci0rCQl2M19hZGRyX3N1YnNldDsKLSsJCWQyaV9JUEFkZHJlc3NGYW1pbHk7Ci0rCQl2M19hc2lkX3N1YnNldDsKLSsJCUJJT190ZXN0X2ZsYWdzOwotKwkJaTJkX0FTSWRlbnRpZmllckNob2ljZTsKLSsJCUFTUmFuZ2VfaXQ7Ci0rCQlkMmlfQVNJZGVudGlmaWVyczsKLSsJCUFTUmFuZ2VfbmV3OwotKwkJZDJpX0lQQWRkcmVzc0Nob2ljZTsKLSsJCXYzX2FkZHJfZ2V0X2FmaTsKLSsJCUVWUF9DSVBIRVJfa2V5X2xlbmd0aDsKLSsJCUVWUF9DaXBoZXI7Ci0rCQlpMmRfSVBBZGRyZXNzT3JSYW5nZTsKLSsJCUFTSWRPclJhbmdlX2l0OwotKwkJRVZQX0NJUEhFUl9uaWQ7Ci0rCQlpMmRfSVBBZGRyZXNzQ2hvaWNlOwotKwkJRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZTsKLSsJCUFTSWRlbnRpZmllcnNfbmV3OwotKwkJdjNfYWRkcl92YWxpZGF0ZV9wYXRoOwotKwkJSVBBZGRyZXNzRmFtaWx5X25ldzsKLSsJCUVWUF9NRF9DVFhfc2V0X2ZsYWdzOwotKwkJdjNfYWRkcl9pc19jYW5vbmljYWw7Ci0rCQlpMmRfSVBBZGRyZXNzUmFuZ2U7Ci0rCQlJUEFkZHJlc3NGYW1pbHlfaXQ7Ci0rCQl2M19hc2lkX2luaGVyaXRzOwotKwkJRVZQX0NJUEhFUl9DVFhfY2lwaGVyOwotKwkJRVZQX0NJUEhFUl9DVFhfZ2V0X2FwcF9kYXRhOwotKwkJRVZQX01EX2Jsb2NrX3NpemU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9mbGFnczsKLSsJCXYzX2FzaWRfdmFsaWRhdGVfcGF0aDsKLSsJCWQyaV9JUEFkZHJlc3NPclJhbmdlOwotKwkJdjNfYWRkcl9jYW5vbml6ZTsKLSsJCUFTSWRlbnRpZmllckNob2ljZV9pdDsKLSsJCUVWUF9NRF9DVFhfbWQ7Ci0rCQlkMmlfQVNJZGVudGlmaWVyQ2hvaWNlOwotKwkJQklPX21ldGhvZF9uYW1lOwotKwkJRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoOwotKwkJQVNJZE9yUmFuZ2VfZnJlZTsKLSsJCUFTSWRlbnRpZmllckNob2ljZV9mcmVlOwotKwkJQklPX2dldF9jYWxsYmFja19hcmc7Ci0rCQlCSU9fc2V0X2NhbGxiYWNrOwotKwkJZDJpX0FTSWRPclJhbmdlOwotKwkJaTJkX0FTSWRlbnRpZmllcnM7Ci0rCQlTRUVEX2RlY3J5cHQ7Ci0rCQlTRUVEX2VuY3J5cHQ7Ci0rCQlTRUVEX2NiY19lbmNyeXB0OwotKwkJRVZQX3NlZWRfb2ZiOwotKwkJU0VFRF9jZmIxMjhfZW5jcnlwdDsKLSsJCVNFRURfb2ZiMTI4X2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9jYmM7Ci0rCQlTRUVEX2VjYl9lbmNyeXB0OwotKwkJRVZQX3NlZWRfZWNiOwotKwkJU0VFRF9zZXRfa2V5OwotKwkJRVZQX3NlZWRfY2ZiMTI4OwotKwkJWDUwOV9FWFRFTlNJT05TX2l0OwotKwkJWDUwOV9nZXQxX29jc3A7Ci0rCQlPQ1NQX1JFUV9DVFhfZnJlZTsKLSsJCWkyZF9YNTA5X0VYVEVOU0lPTlM7Ci0rCQlPQ1NQX3NlbmRyZXFfbmJpbzsKLSsJCU9DU1Bfc2VuZHJlcV9uZXc7Ci0rCQlkMmlfWDUwOV9FWFRFTlNJT05TOwotKwkJWDUwOV9BTEdPUlNfaXQ7Ci0rCQlYNTA5X0FMR09SX2dldDA7Ci0rCQlYNTA5X0FMR09SX3NldDA7Ci0rCQlBRVNfdW53cmFwX2tleTsKLSsJCUFFU193cmFwX2tleTsKLSsJCVg1MDlhdF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJQVNOMV9UWVBFX3NldDE7Ci0rCQlBU04xX1NUUklOR19zZXQwOwotKwkJaTJkX1g1MDlfQUxHT1JTOwotKwkJQklPX2ZfemxpYjsKLSsJCUNPTVBfemxpYl9jbGVhbnVwOwotKwkJZDJpX1g1MDlfQUxHT1JTOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2ZyZWU7Ci0rCQlQRU1fd3JpdGVfQ01TOwotKwkJQ01TX2FkZDBfQ2VydGlmaWNhdGVDaG9pY2VzOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlFUlJfbG9hZF9DTVNfc3RyaW5nczsKLSsJCUNNU19zaWduX3JlY2VpcHQ7Ci0rCQlpMmRfQ01TX0NvbnRlbnRJbmZvOwotKwkJQ01TX3NpZ25lZF9kZWxldGVfYXR0cjsKLSsJCWQyaV9DTVNfYmlvOwotKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKLSsJCUNNU192ZXJpZnk7Ci0rCQlTTUlNRV9yZWFkX0NNUzsKLSsJCUNNU19kZWNyeXB0X3NldDFfa2V5OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9hbGdzOwotKwkJQ01TX2FkZDFfY2VydDsKLSsJCUNNU19zZXRfZGV0YWNoZWQ7Ci0rCQlDTVNfZW5jcnlwdDsKLSsJCUNNU19FbnZlbG9wZWREYXRhX2NyZWF0ZTsKLSsJCUNNU191bmNvbXByZXNzOwotKwkJQ01TX2FkZDBfY3JsOwotKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5X2NvbnRlbnQ7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCVBFTV93cml0ZV9iaW9fQ01TOwotKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9jZXJ0X2NtcDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9hbGdzOwotKwkJQ01TX1JlY2lwSW5mb19rdHJpX2dldDBfYWxnczsKLSsJCUNNU19Db250ZW50SW5mb19mcmVlOwotKwkJQ01TX2ZpbmFsOwotKwkJQ01TX2FkZF9zaW1wbGVfc21pbWVjYXA7Ci0rCQlDTVNfU2lnbmVySW5mb192ZXJpZnk7Ci0rCQlDTVNfZGF0YTsKLSsJCUNNU19Db250ZW50SW5mb19pdDsKLSsJCWQyaV9DTVNfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfY29tcHJlc3M7Ci0rCQlDTVNfZGlnZXN0X2NyZWF0ZTsKLSsJCUNNU19TaWduZXJJbmZvX2NlcnRfY21wOwotKwkJQ01TX1NpZ25lckluZm9fc2lnbjsKLSsJCUNNU19kYXRhX2NyZWF0ZTsKLSsJCWkyZF9DTVNfYmlvOwotKwkJQ01TX0VuY3J5cHRlZERhdGFfc2V0MV9rZXk7Ci0rCQlDTVNfZGVjcnlwdDsKLSsJCWludF9zbWltZV93cml0ZV9BU04xOwotKwkJQ01TX3Vuc2lnbmVkX2RlbGV0ZV9hdHRyOwotKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2NvdW50OwotKwkJQ01TX2FkZF9zbWltZWNhcDsKLSsJCVBFTV9yZWFkX0NNUzsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJZDJpX0NNU19Db250ZW50SW5mbzsKLSsJCUNNU19hZGRfc3RhbmRhcmRfc21pbWVjYXA7Ci0rCQlDTVNfQ29udGVudEluZm9fbmV3OwotKwkJQ01TX1JlY2lwaWVudEluZm9fdHlwZTsKLSsJCUNNU19nZXQwX3R5cGU7Ci0rCQlDTVNfaXNfZGV0YWNoZWQ7Ci0rCQlDTVNfc2lnbjsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyOwotKwkJQ01TX3Vuc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKLSsJCVNNSU1FX3dyaXRlX0NNUzsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX2RlY3J5cHQ7Ci0rCQlDTVNfZ2V0MF9SZWNpcGllbnRJbmZvczsKLSsJCUNNU19hZGQwX1Jldm9jYXRpb25JbmZvQ2hvaWNlOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9wa2V5OwotKwkJQ01TX1NpZ25lckluZm9fc2V0MV9zaWduZXJfY2VydDsKLSsJCUNNU19nZXQwX3NpZ25lcnM7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfZ2V0MF92YWx1ZXM7Ci0rCQlDTVNfc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7Ci0rCQlDTVNfZ2V0MF9TaWduZXJJbmZvczsKLSsJCUNNU19hZGQwX2NlcnQ7Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9lbmNyeXB0OwotKwkJQ01TX2RpZ2VzdF92ZXJpZnk7Ci0rCQlDTVNfc2V0MV9zaWduZXJzX2NlcnRzOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfa2V5OwotKwkJQ01TX1NpZ25lZERhdGFfaW5pdDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2dldDBfaWQ7Ci0rCQlDTVNfdmVyaWZ5X3JlY2VpcHQ7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfaXQ7Ci0rCQlQRU1fcmVhZF9iaW9fQ01TOwotKwkJQ01TX2dldDFfY3JsczsKLSsJCUNNU19hZGQwX3JlY2lwaWVudF9rZXk7Ci0rCQlTTUlNRV9yZWFkX0FTTjE7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfbmV3OwotKwkJQ01TX2dldDBfY29udGVudDsKLSsJCUNNU19nZXQxX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfaWRfY21wOwotKwkJQ01TX2FkZDFfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3NpZ25lcl9pZDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfTklEOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cjsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHJfYnlfTklEOwotKwkJQ01TX2dldDFfY2VydHM7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUNNU19kYXRhRmluYWw7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfc2lnbmVyX2lkOwotKwkJQ01TX1JlY2lwSW5mb19rdHJpX2dldDBfc2lncl9pZDsKLSsJCWkyZF9DTVNfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfYWRkMV9yZWNpcGllbnRfY2VydDsKLSsJCUNNU19kYXRhSW5pdDsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2RlY3J5cHQ7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyX2NvdW50OwotKwkJQ01TX2dldDBfZUNvbnRlbnRUeXBlOwotKwkJQ01TX3NldDFfZUNvbnRlbnRUeXBlOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2NyZWF0ZTA7Ci0rCQlDTVNfYWRkMV9zaWduZXI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX3BrZXk7Ci0rCQlFTkdJTkVfc2V0X2xvYWRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9sZF9zc2xfY2xudF9jZXJ0X2ZuOwotKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mbjsKLSsJCUVOR0lORV9sb2FkX3NzbF9jbGllbnRfY2VydDsKLSsJCUVOR0lORV9sb2FkX2NhcGk7Ci0rCQlPUEVOU1NMX2lzc2VydmljZTsKLSsJCUZJUFNfZHNhX3NpZ19kZWNvZGU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jbGVhcl9mbGFnczsKLSsJCUZJUFNfcmFuZF9zdGF0dXM7Ci0rCQlGSVBTX3JhbmRfc2V0X2tleTsKLSsJCUNSWVBUT19zZXRfbWVtX2luZm9fZnVuY3Rpb25zOwotKwkJUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4OwotKwkJaW50X0VSUl9zZXRfc3RhdGVfZnVuYzsKLSsJCWludF9FVlBfTURfc2V0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlpbnRfQ1JZUFRPX3NldF9kb19keW5sb2NrX2NhbGxiYWNrOwotKwkJRklQU19ybmdfc3RpY2s7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfZmxhZ3M7Ci0rCQlCTl9YOTMxX2dlbmVyYXRlX3ByaW1lX2V4OwotKwkJRklQU19zZWxmdGVzdF9jaGVjazsKLSsJCUZJUFNfcmFuZF9zZXRfZHQ7Ci0rCQlDUllQVE9fZGJnX3BvcF9pbmZvOwotKwkJRklQU19kc2FfZnJlZTsKLSsJCVJTQV9YOTMxX2Rlcml2ZV9leDsKLSsJCUZJUFNfcnNhX25ldzsKLSsJCUZJUFNfcmFuZF9ieXRlczsKLSsJCWZpcHNfY2lwaGVyX3Rlc3Q7Ci0rCQlFVlBfQ0lQSEVSX0NUWF90ZXN0X2ZsYWdzOwotKwkJQ1JZUFRPX21hbGxvY19kZWJ1Z19pbml0OwotKwkJQ1JZUFRPX2RiZ19wdXNoX2luZm87Ci0rCQlGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbjsKLSsJCUZJUFNfZGhfbmV3OwotKwkJRklQU19jb3JydXB0X2RzYV9rZXlnZW47Ci0rCQlGSVBTX2RoX2ZyZWU7Ci0rCQlmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3Q7Ci0rCQlFVlBfYWRkX2FsZ19tb2R1bGU7Ci0rCQlpbnRfUkFORF9pbml0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlpbnRfRVZQX0NJUEhFUl9zZXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9FVlBfTURfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJRklQU19yYW5kX3Rlc3RfbW9kZTsKLSsJCUZJUFNfcmFuZF9yZXNldDsKLSsJCUZJUFNfZHNhX25ldzsKLSsJCWludF9SQU5EX3NldF9jYWxsYmFja3M7Ci0rCQlCTl9YOTMxX2Rlcml2ZV9wcmltZV9leDsKLSsJCWludF9FUlJfbGliX2luaXQ7Ci0rCQlpbnRfRVZQX0NJUEhFUl9pbml0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlGSVBTX3JzYV9mcmVlOwotKwkJRklQU19kc2Ffc2lnX2VuY29kZTsKLSsJCUNSWVBUT19kYmdfcmVtb3ZlX2FsbF9pbmZvOwotKwkJT1BFTlNTTF9pbml0OwotKwkJQ1JZUFRPX3N0cmR1cDsKLSsJCUpQQUtFX1NURVAzQV9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDFfcmVsZWFzZTsKLSsJCUpQQUtFX2dldF9zaGFyZWRfa2V5OwotKwkJSlBBS0VfU1RFUDNCX2luaXQ7Ci0rCQlKUEFLRV9TVEVQMV9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAxX2luaXQ7Ci0rCQlKUEFLRV9TVEVQM0JfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAyX2dlbmVyYXRlOwotKwkJSlBBS0VfQ1RYX25ldzsKLSsJCUpQQUtFX0NUWF9mcmVlOwotKwkJSlBBS0VfU1RFUDNCX3JlbGVhc2U7Ci0rCQlKUEFLRV9TVEVQM0FfcmVsZWFzZTsKLSsJCUpQQUtFX1NURVAyX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQM0JfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMV9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDNBX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDJfcmVsZWFzZTsKLSsJCUpQQUtFX1NURVAzQV9pbml0OwotKwkJRVJSX2xvYWRfSlBBS0Vfc3RyaW5nczsKLSsJCUpQQUtFX1NURVAyX2luaXQ7Ci0rCQlwcXVldWVfc2l6ZTsKLSsJCWkyZF9UU19BQ0NVUkFDWTsKLSsJCWkyZF9UU19NU0dfSU1QUklOVF9mcDsKLSsJCWkyZF9UU19NU0dfSU1QUklOVDsKLSsJCUVWUF9QS0VZX3ByaW50X3B1YmxpYzsKLSsJCUVWUF9QS0VZX0NUWF9uZXc7Ci0rCQlpMmRfVFNfVFNUX0lORk87Ci0rCQlFVlBfUEtFWV9hc24xX2ZpbmQ7Ci0rCQlEU09fTUVUSE9EX2Jlb3M7Ci0rCQlUU19DT05GX2xvYWRfY2VydDsKLSsJCVRTX1JFUV9nZXRfZXh0OwotKwkJRVZQX1BLRVlfc2lnbl9pbml0OwotKwkJQVNOMV9pdGVtX3ByaW50OwotKwkJVFNfVFNUX0lORk9fc2V0X25vbmNlOwotKwkJVFNfUkVTUF9kdXA7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9tZXRoczsKLSsJCUVWUF9QS0VZX2FzbjFfYWRkMDsKLSsJCVBLQ1M3X2FkZDBfYXR0cmliX3NpZ25pbmdfdGltZTsKLSsJCWkyZF9UU19UU1RfSU5GT19mcDsKLSsJCUJJT19hc24xX2dldF9wcmVmaXg7Ci0rCQlUU19UU1RfSU5GT19zZXRfdGltZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2RlY3J5cHQ7Ci0rCQlFVlBfUEtFWV9zZXRfdHlwZV9zdHI7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2tleWdlbl9pbmZvOwotKwkJVFNfUkVRX3NldF9wb2xpY3lfaWQ7Ci0rCQlkMmlfVFNfUkVTUF9mcDsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5naW5lOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmc7Ci0rCQlXSElSTFBPT0xfSW5pdDsKLSsJCVRTX1JFU1Bfc2V0X3N0YXR1c19pbmZvOwotKwkJRVZQX1BLRVlfa2V5Z2VuOwotKwkJRVZQX0RpZ2VzdFNpZ25Jbml0OwotKwkJVFNfQUNDVVJBQ1lfc2V0X21pbGxpczsKLSsJCVRTX1JFUV9kdXA7Ci0rCQlHRU5FUkFMX05BTUVfZHVwOwotKwkJQVNOMV9TRVFVRU5DRV9BTllfaXQ7Ci0rCQlXSElSTFBPT0w7Ci0rCQlYNTA5X1NUT1JFX2dldDFfY3JsczsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGg7Ci0rCQlFVlBfUEtFWV9hc24xX25ldzsKLSsJCUJJT19uZXdfTkRFRjsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoOwotKwkJVFNfTVNHX0lNUFJJTlRfc2V0X2FsZ287Ci0rCQlpMmRfVFNfVFNUX0lORk9fYmlvOwotKwkJVFNfVFNUX0lORk9fc2V0X29yZGVyaW5nOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9PQko7Ci0rCQlDUllQVE9fVEhSRUFESURfc2V0X3BvaW50ZXI7Ci0rCQlUU19DT05GX2dldF90c2Ffc2VjdGlvbjsKLSsJCVNNSU1FX3dyaXRlX0FTTjE7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2tleTsKLSsJCUVWUF9QS0VZX2VuY3J5cHRfb2xkOwotKwkJRVZQX1BLRVlfZW5jcnlwdF9pbml0OwotKwkJQ1JZUFRPX1RIUkVBRElEX2NweTsKLSsJCUFTTjFfUENUWF9nZXRfY2VydF9mbGFnczsKLSsJCWkyZF9FU1NfU0lHTklOR19DRVJUOwotKwkJVFNfQ09ORl9sb2FkX2tleTsKLSsJCWkyZF9BU04xX1NFUVVFTkNFX0FOWTsKLSsJCWQyaV9UU19NU0dfSU1QUklOVF9iaW87Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wdWJsaWM7Ci0rCQliMmlfUHVibGljS2V5X2JpbzsKLSsJCUJJT19hc24xX3NldF9wcmVmaXg7Ci0rCQlFVlBfUEtFWV9uZXdfbWFjX2tleTsKLSsJCUJJT19uZXdfQ01TOwotKwkJQ1JZUFRPX1RIUkVBRElEX2NtcDsKLSsJCVRTX1JFUV9leHRfZnJlZTsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X2ZyZWU7Ci0rCQlFVlBfUEtFWV9nZXQwX2FzbjE7Ci0rCQlkMmlfTkVUU0NBUEVfWDUwOTsKLSsJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyX2luaXQ7Ci0rCQlFVlBfUEtFWV9DVFhfc2V0X2RhdGE7Ci0rCQlFVlBfUEtFWV9rZXlnZW5faW5pdDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zdGF0dXNfaW5mbzsKLSsJCVRTX01TR19JTVBSSU5UX2dldF9hbGdvOwotKwkJVFNfUkVRX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX0NUWF9jdHJsX3N0cjsKLSsJCUVWUF9QS0VZX2dldF9kZWZhdWx0X2RpZ2VzdF9uaWQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M3X3N0cmVhbTsKLSsJCVRTX01TR19JTVBSSU5UX3ByaW50X2JpbzsKLSsJCUJOX2FzYzJibjsKLSsJCVRTX1JFUV9nZXRfcG9saWN5X2lkOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfYXNuMV9tZXRoczsKLSsJCUVOR0lORV9zZXRfZGVmX3BrZXlfYXNuMV9tZXRoczsKLSsJCWQyaV9UU19BQ0NVUkFDWTsKLSsJCURTT19nbG9iYWxfbG9va3VwOwotKwkJVFNfQ09ORl9zZXRfdHNhX25hbWU7Ci0rCQlpMmRfQVNOMV9TRVRfQU5ZOwotKwkJRU5HSU5FX2xvYWRfZ29zdDsKLSsJCVdISVJMUE9PTF9CaXRVcGRhdGU7Ci0rCQlBU04xX1BDVFhfZ2V0X2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlUU19SRVNQX25ldzsKLSsJCUVTU19DRVJUX0lEX2R1cDsKLSsJCVRTX1NUQVRVU19JTkZPX2R1cDsKLSsJCVRTX1JFUV9kZWxldGVfZXh0OwotKwkJRVZQX0RpZ2VzdFZlcmlmeUZpbmFsOwotKwkJRVZQX1BLRVlfcHJpbnRfcGFyYW1zOwotKwkJaTJkX0NNU19iaW9fc3RyZWFtOwotKwkJVFNfUkVRX2dldF9tc2dfaW1wcmludDsKLSsJCU9CSl9maW5kX3NpZ2lkX2J5X2FsZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfc2VyaWFsOwotKwkJVFNfUkVRX2dldF9ub25jZTsKLSsJCVg1MDlfUFVCS0VZX3NldDBfcGFyYW07Ci0rCQlFVlBfUEtFWV9DVFhfc2V0MF9rZXlnZW5faW5mbzsKLSsJCURJU1RfUE9JTlRfc2V0X2RwbmFtZTsKLSsJCWkyZF9JU1NVSU5HX0RJU1RfUE9JTlQ7Ci0rCQlBU04xX1NFVF9BTllfaXQ7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2RhdGE7Ci0rCQlUU19TVEFUVVNfSU5GT19wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9kZXJpdmVfaW5pdDsKLSsJCWQyaV9UU19UU1RfSU5GTzsKLSsJCUVWUF9QS0VZX2FzbjFfYWRkX2FsaWFzOwotKwkJZDJpX1RTX1JFU1BfYmlvOwotKwkJT1RIRVJOQU1FX2NtcDsKLSsJCUdFTkVSQUxfTkFNRV9zZXQwX3ZhbHVlOwotKwkJUEtDUzdfUkVDSVBfSU5GT19nZXQwX2FsZzsKLSsJCVRTX1JFU1BfQ1RYX25ldzsKLSsJCVRTX1JFU1Bfc2V0X3RzdF9pbmZvOwotKwkJUEtDUzdfZmluYWw7Ci0rCQlFVlBfUEtFWV9iYXNlX2lkOwotKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9jZXJ0OwotKwkJVFNfUkVRX3NldF9tc2dfaW1wcmludDsKLSsJCUVWUF9QS0VZX0NUWF9jdHJsOwotKwkJVFNfQ09ORl9zZXRfZGlnZXN0czsKLSsJCWQyaV9UU19NU0dfSU1QUklOVDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2N0cmw7Ci0rCQlUU19SRVFfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlQS0NTNV9wYmVfc2V0MF9hbGdvcjsKLSsJCUJOX0JMSU5ESU5HX3RocmVhZF9pZDsKLSsJCVRTX0FDQ1VSQUNZX25ldzsKLSsJCVg1MDlfQ1JMX01FVEhPRF9mcmVlOwotKwkJQVNOMV9QQ1RYX2dldF9ubV9mbGFnczsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ247Ci0rCQlDUllQVE9fVEhSRUFESURfY3VycmVudDsKLSsJCUVWUF9QS0VZX2RlY3J5cHRfaW5pdDsKLSsJCU5FVFNDQVBFX1g1MDlfZnJlZTsKLSsJCWkyYl9QVktfYmlvOwotKwkJRVZQX1BLRVlfcHJpbnRfcHJpdmF0ZTsKLSsJCUdFTkVSQUxfTkFNRV9nZXQwX3ZhbHVlOwotKwkJYjJpX1BWS19iaW87Ci0rCQlBU04xX1VUQ1RJTUVfYWRqOwotKwkJVFNfVFNUX0lORk9fbmV3OwotKwkJRVZQX01EX2RvX2FsbF9zb3J0ZWQ7Ci0rCQlUU19DT05GX3NldF9kZWZhdWx0X2VuZ2luZTsKLSsJCVRTX0FDQ1VSQUNZX3NldF9zZWNvbmRzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3RpbWU7Ci0rCQlQS0NTOF9wa2V5X2dldDA7Ci0rCQlFVlBfUEtFWV9hc24xX2dldDA7Ci0rCQlPQkpfYWRkX3NpZ2lkOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fc2lnbjsKLSsJCUVWUF9QS0VZX3BhcmFtZ2VuX2luaXQ7Ci0rCQlFVlBfUEtFWV9zaWduOwotKwkJT0JKX3NpZ2lkX2ZyZWU7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9pbml0OwotKwkJZDJpX0VTU19JU1NVRVJfU0VSSUFMOwotKwkJSVNTVUlOR19ESVNUX1BPSU5UX25ldzsKLSsJCUFTTjFfVElNRV9hZGo7Ci0rCQlUU19PQkpfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5X3JlY292ZXI7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92cmZ5X3JlY292ZXI7Ci0rCQlUU19SRVNQX2dldF9zdGF0dXNfaW5mbzsKLSsJCUNNU19zdHJlYW07Ci0rCQlFVlBfUEtFWV9DVFhfc2V0X2NiOwotKwkJUEtDUzdfdG9fVFNfVFNUX0lORk87Ci0rCQlBU04xX1BDVFhfZ2V0X29pZF9mbGFnczsKLSsJCVRTX1RTVF9JTkZPX2FkZF9leHQ7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9kZXJpdmU7Ci0rCQlpMmRfVFNfUkVTUF9mcDsKLSsJCWkyZF9UU19NU0dfSU1QUklOVF9iaW87Ci0rCQlUU19SRVNQX0NUWF9zZXRfYWNjdXJhY3k7Ci0rCQlUU19SRVFfc2V0X25vbmNlOwotKwkJRVNTX0NFUlRfSURfbmV3OwotKwkJRU5HSU5FX3BrZXlfYXNuMV9maW5kX3N0cjsKLSsJCVRTX1JFUV9nZXRfZXh0X2NvdW50OwotKwkJQlVGX3JldmVyc2U7Ci0rCQlUU19UU1RfSU5GT19wcmludF9iaW87Ci0rCQlkMmlfSVNTVUlOR19ESVNUX1BPSU5UOwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGhzOwotKwkJaTJiX1ByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1RTX1JFU1A7Ci0rCQliMmlfUHVibGljS2V5OwotKwkJVFNfVkVSSUZZX0NUWF9jbGVhbnVwOwotKwkJVFNfU1RBVFVTX0lORk9fZnJlZTsKLSsJCVRTX1JFU1BfdmVyaWZ5X3Rva2VuOwotKwkJT0JKX2JzZWFyY2hfZXhfOwotKwkJQVNOMV9ibl9wcmludDsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0X2NvdW50OwotKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfYXNuMV9tZXRoczsKLSsJCUFTTjFfUENUWF9zZXRfbm1fZmxhZ3M7Ci0rCQlFVlBfRGlnZXN0VmVyaWZ5SW5pdDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X21ldGhzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3BvbGljeV9pZDsKLSsJCVRTX1JFUV9nZXRfY2VydF9yZXE7Ci0rCQlYNTA5X0NSTF9zZXRfbWV0aF9kYXRhOwotKwkJUEtDUzhfcGtleV9zZXQwOwotKwkJQVNOMV9TVFJJTkdfY29weTsKLSsJCWQyaV9UU19UU1RfSU5GT19mcDsKLSsJCVg1MDlfQ1JMX21hdGNoOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHJpdmF0ZTsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfZDJpOwotKwkJVFNfUkVTUF9DVFhfYWRkX3BvbGljeTsKLSsJCWQyaV9UU19SRVNQOwotKwkJVFNfQ09ORl9sb2FkX2NlcnRzOwotKwkJVFNfVFNUX0lORk9fZ2V0X21zZ19pbXByaW50OwotKwkJRVJSX2xvYWRfVFNfc3RyaW5nczsKLSsJCVRTX1RTVF9JTkZPX2dldF92ZXJzaW9uOwotKwkJRVZQX1BLRVlfQ1RYX2R1cDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeTsKLSsJCWkyYl9QdWJsaWNLZXlfYmlvOwotKwkJVFNfQ09ORl9zZXRfY2VydHM7Ci0rCQlFVlBfUEtFWV9hc24xX2dldDBfaW5mbzsKLSsJCVRTX1ZFUklGWV9DVFhfZnJlZTsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJVFNfUkVTUF9DVFhfc2V0X3NlcmlhbF9jYjsKLSsJCVg1MDlfQ1JMX2dldF9tZXRoX2RhdGE7Ci0rCQlUU19SRVNQX0NUWF9zZXRfdGltZV9jYjsKLSsJCVRTX01TR19JTVBSSU5UX2dldF9tc2c7Ci0rCQlUU19UU1RfSU5GT19leHRfZnJlZTsKLSsJCVRTX1JFUV9nZXRfdmVyc2lvbjsKLSsJCVRTX1JFUV9hZGRfZXh0OwotKwkJRVZQX1BLRVlfQ1RYX3NldF9hcHBfZGF0YTsKLSsJCU9CSl9ic2VhcmNoXzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeWN0eDsKLSsJCWkyZF9QS0NTN19iaW9fc3RyZWFtOwotKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9udW1lcmljOwotKwkJUEtDUzdfc2lnbl9hZGRfc2lnbmVyOwotKwkJZDJpX1RTX1RTVF9JTkZPX2JpbzsKLSsJCVRTX1RTVF9JTkZPX2dldF9vcmRlcmluZzsKLSsJCVRTX1JFU1BfcHJpbnRfYmlvOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dHM7Ci0rCQlITUFDX0NUWF9jb3B5OwotKwkJUEtDUzVfcGJlMl9zZXRfaXY7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoczsKLSsJCWIyaV9Qcml2YXRlS2V5OwotKwkJRVZQX1BLRVlfQ1RYX2dldF9hcHBfZGF0YTsKLSsJCVRTX1JFUV9zZXRfY2VydF9yZXE7Ci0rCQlDUllQVE9fVEhSRUFESURfc2V0X2NhbGxiYWNrOwotKwkJVFNfQ09ORl9zZXRfc2VyaWFsOwotKwkJVFNfVFNUX0lORk9fZnJlZTsKLSsJCWQyaV9UU19SRVFfZnA7Ci0rCQlUU19SRVNQX3ZlcmlmeV9yZXNwb25zZTsKLSsJCWkyZF9FU1NfSVNTVUVSX1NFUklBTDsKLSsJCVRTX0FDQ1VSQUNZX2dldF9zZWNvbmRzOwotKwkJRVZQX0NJUEhFUl9kb19hbGw7Ci0rCQliMmlfUHJpdmF0ZUtleV9iaW87Ci0rCQlPQ1NQX0NFUlRJRF9kdXA7Ci0rCQlYNTA5X1BVQktFWV9nZXQwX3BhcmFtOwotKwkJVFNfTVNHX0lNUFJJTlRfZHVwOwotKwkJUEtDUzdfcHJpbnRfY3R4OwotKwkJaTJkX1RTX1JFUV9iaW87Ci0rCQlFVlBfd2hpcmxwb29sOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfcGFyYW07Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9lbmNyeXB0OwotKwkJQVNOMV9QQ1RYX3NldF9mbGFnczsKLSsJCWkyZF9FU1NfQ0VSVF9JRDsKLSsJCVRTX1ZFUklGWV9DVFhfbmV3OwotKwkJVFNfUkVTUF9DVFhfc2V0X2V4dGVuc2lvbl9jYjsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9tZXRoczsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zdGF0dXNfaW5mb19jb25kOwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXRfaW5mb19jb25kOwotKwkJRVZQX1BLRVlfdmVyaWZ5OwotKwkJV0hJUkxQT09MX0ZpbmFsOwotKwkJWDUwOV9DUkxfTUVUSE9EX25ldzsKLSsJCUVWUF9EaWdlc3RTaWduRmluYWw7Ci0rCQlUU19SRVNQX0NUWF9zZXRfZGVmX3BvbGljeTsKLSsJCU5FVFNDQVBFX1g1MDlfaXQ7Ci0rCQlUU19SRVNQX2NyZWF0ZV9yZXNwb25zZTsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX2dldDBfYWxnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9ub25jZTsKLSsJCUVWUF9QS0VZX2RlY3J5cHRfb2xkOwotKwkJVFNfVFNUX0lORk9fc2V0X3BvbGljeV9pZDsKLSsJCVRTX0NPTkZfc2V0X2Vzc19jZXJ0X2lkX2NoYWluOwotKwkJRVZQX1BLRVlfQ1RYX2dldDBfcGtleTsKLSsJCWQyaV9UU19SRVE7Ci0rCQlFVlBfUEtFWV9hc24xX2ZpbmRfc3RyOwotKwkJQklPX2ZfYXNuMTsKLSsJCUVTU19TSUdOSU5HX0NFUlRfbmV3OwotKwkJRVZQX1BCRV9maW5kOwotKwkJWDUwOV9DUkxfZ2V0MF9ieV9jZXJ0OwotKwkJRVZQX1BLRVlfZGVyaXZlOwotKwkJaTJkX1RTX1JFUTsKLSsJCVRTX1RTVF9JTkZPX2RlbGV0ZV9leHQ7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9mcmVlOwotKwkJQVNOMV9QQ1RYX3NldF9zdHJfZmxhZ3M7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX3N0cjsKLSsJCVRTX0NPTkZfc2V0X3NpZ25lcl9rZXk7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfbWlsbGlzOwotKwkJVFNfUkVTUF9nZXRfdG9rZW47Ci0rCQlUU19BQ0NVUkFDWV9kdXA7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfYXNuMV9tZXRoczsKLSsJCUVOR0lORV9yZWdfYWxsX3BrZXlfYXNuMV9tZXRoczsKLSsJCVg1MDlfQ1JMX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUNSWVBUT19USFJFQURJRF9oYXNoOwotKwkJQ01TX0NvbnRlbnRJbmZvX3ByaW50X2N0eDsKLSsJCVRTX1JFU1BfZnJlZTsKLSsJCUlTU1VJTkdfRElTVF9QT0lOVF9mcmVlOwotKwkJRVNTX0lTU1VFUl9TRVJJQUxfbmV3OwotKwkJQ01TX2FkZDFfY3JsOwotKwkJUEtDUzdfYWRkMV9hdHRyaWJfZGlnZXN0OwotKwkJVFNfUkVTUF9DVFhfYWRkX21kOwotKwkJVFNfVFNUX0lORk9fZHVwOwotKwkJRU5HSU5FX3NldF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlQRU1fd3JpdGVfYmlvX1BhcmFtZXRlcnM7Ci0rCQlUU19UU1RfSU5GT19nZXRfYWNjdXJhY3k7Ci0rCQlYNTA5X0NSTF9nZXQwX2J5X3NlcmlhbDsKLSsJCVRTX1RTVF9JTkZPX3NldF92ZXJzaW9uOwotKwkJVFNfUkVTUF9DVFhfZ2V0X3RzdF9pbmZvOwotKwkJVFNfUkVTUF92ZXJpZnlfc2lnbmF0dXJlOwotKwkJQ1JZUFRPX1RIUkVBRElEX2dldF9jYWxsYmFjazsKLSsJCVRTX1RTVF9JTkZPX2dldF90c2E7Ci0rCQlUU19TVEFUVVNfSU5GT19uZXc7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2NiOwotKwkJVFNfUkVRX2dldF9leHRfZDJpOwotKwkJR0VORVJBTF9OQU1FX3NldDBfb3RoZXJuYW1lOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9jb3VudDsKLSsJCVRTX1JFU1BfQ1RYX2dldF9yZXF1ZXN0OwotKwkJaTJkX05FVFNDQVBFX1g1MDk7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aF9lbmdpbmU7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduY3R4OwotKwkJRVZQX1BLRVlfYXNuMV9jb3B5OwotKwkJQVNOMV9UWVBFX2NtcDsKLSsJCUVWUF9DSVBIRVJfZG9fYWxsX3NvcnRlZDsKLSsJCUVWUF9QS0VZX0NUWF9mcmVlOwotKwkJSVNTVUlOR19ESVNUX1BPSU5UX2l0OwotKwkJZDJpX1RTX01TR19JTVBSSU5UX2ZwOwotKwkJWDUwOV9TVE9SRV9nZXQxX2NlcnRzOwotKwkJRVZQX1BLRVlfQ1RYX2dldF9vcGVyYXRpb247Ci0rCQlkMmlfRVNTX1NJR05JTkdfQ0VSVDsKLSsJCVRTX0NPTkZfc2V0X29yZGVyaW5nOwotKwkJRVZQX1BCRV9hbGdfYWRkX3R5cGU7Ci0rCQlUU19SRVFfc2V0X3ZlcnNpb247Ci0rCQlFVlBfUEtFWV9nZXQwOwotKwkJQklPX2FzbjFfc2V0X3N1ZmZpeDsKLSsJCWkyZF9UU19TVEFUVVNfSU5GTzsKLSsJCUVWUF9NRF9kb19hbGw7Ci0rCQlUU19UU1RfSU5GT19zZXRfYWNjdXJhY3k7Ci0rCQlQS0NTN19hZGRfYXR0cmliX2NvbnRlbnRfdHlwZTsKLSsJCUVSUl9yZW1vdmVfdGhyZWFkX3N0YXRlOwotKwkJRVZQX1BLRVlfbWV0aF9hZGQwOwotKwkJVFNfVFNUX0lORk9fc2V0X3RzYTsKLSsJCUVWUF9QS0VZX21ldGhfbmV3OwotKwkJV0hJUkxQT09MX1VwZGF0ZTsKLSsJCVRTX0NPTkZfc2V0X2FjY3VyYWN5OwotKwkJQVNOMV9QQ1RYX3NldF9vaWRfZmxhZ3M7Ci0rCQlFU1NfU0lHTklOR19DRVJUX2R1cDsKLSsJCWQyaV9UU19SRVFfYmlvOwotKwkJWDUwOV90aW1lX2Fkal9leDsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9mbGFnczsKLSsJCWQyaV9UU19TVEFUVVNfSU5GTzsKLSsJCVRTX01TR19JTVBSSU5UX3NldF9tc2c7Ci0rCQlCSU9fYXNuMV9nZXRfc3VmZml4OwotKwkJVFNfUkVRX2ZyZWU7Ci0rCQlFVlBfUEtFWV9tZXRoX2ZyZWU7Ci0rCQlUU19SRVFfZ2V0X2V4dHM7Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jbGtfcHJlY19kaWdpdHM7Ci0rCQlUU19SRVNQX0NUWF9hZGRfZmFpbHVyZV9pbmZvOwotKwkJaTJkX1RTX1JFU1BfYmlvOwotKwkJRVZQX1BLRVlfQ1RYX2dldDBfcGVlcmtleTsKLSsJCVBFTV93cml0ZV9iaW9fQ01TX3N0cmVhbTsKLSsJCVRTX1JFUV9uZXc7Ci0rCQlUU19NU0dfSU1QUklOVF9uZXc7Ci0rCQlFVlBfUEtFWV9tZXRoX2ZpbmQ7Ci0rCQlFVlBfUEtFWV9pZDsKLSsJCVRTX1RTVF9JTkZPX3NldF9zZXJpYWw7Ci0rCQlhMmlfR0VORVJBTF9OQU1FOwotKwkJVFNfQ09ORl9zZXRfY3J5cHRvX2RldmljZTsKLSsJCUVWUF9QS0VZX3ZlcmlmeV9pbml0OwotKwkJVFNfQ09ORl9zZXRfcG9saWNpZXM7Ci0rCQlBU04xX1BDVFhfbmV3OwotKwkJRVNTX0NFUlRfSURfZnJlZTsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX3BrZXlfbWV0aHM7Ci0rCQlUU19NU0dfSU1QUklOVF9mcmVlOwotKwkJVFNfVkVSSUZZX0NUWF9pbml0OwotKwkJUEtDUzdfc3RyZWFtOwotKwkJVFNfUkVTUF9DVFhfc2V0X2NlcnRzOwotKwkJVFNfQ09ORl9zZXRfZGVmX3BvbGljeTsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2FkajsKLSsJCU5FVFNDQVBFX1g1MDlfbmV3OwotKwkJVFNfQUNDVVJBQ1lfZnJlZTsKLSsJCVRTX1JFU1BfZ2V0X3RzdF9pbmZvOwotKwkJRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyOwotKwkJUEVNX3JlYWRfYmlvX1BhcmFtZXRlcnM7Ci0rCQlUU19DT05GX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOwotKwkJVFNfQ09ORl9zZXRfY2xrX3ByZWNfZGlnaXRzOwotKwkJRVNTX0lTU1VFUl9TRVJJQUxfZHVwOwotKwkJVFNfQUNDVVJBQ1lfZ2V0X21pY3JvczsKLSsJCUFTTjFfUENUWF9nZXRfc3RyX2ZsYWdzOwotKwkJTkFNRV9DT05TVFJBSU5UU19jaGVjazsKLSsJCUFTTjFfQklUX1NUUklOR19jaGVjazsKLSsJCVg1MDlfY2hlY2tfYWtpZDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX3BrZXlfYXNuMV9tZXRoczsKLSsJCUVOR0lORV91bnJlZ19wa2V5X2FzbjFfbWV0aHM7Ci0rCQlBU04xX1BDVFhfZnJlZTsKLSsJCVBFTV93cml0ZV9iaW9fQVNOMV9zdHJlYW07Ci0rCQlpMmRfQVNOMV9iaW9fc3RyZWFtOwotKwkJVFNfWDUwOV9BTEdPUl9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jbGVhbnVwOwotKwkJRVZQX1BLRVlfYXNuMV9mcmVlOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9mcmVlOwotKwkJVFNfVFNUX0lORk9fc2V0X21zZ19pbXByaW50OwotKwkJR0VORVJBTF9OQU1FX2NtcDsKLSsJCWQyaV9BU04xX1NFVF9BTlk7Ci0rCQlFTkdJTkVfc2V0X3BrZXlfbWV0aHM7Ci0rCQlpMmRfVFNfUkVRX2ZwOwotKwkJZDJpX0FTTjFfU0VRVUVOQ0VfQU5ZOwotKwkJR0VORVJBTF9OQU1FX2dldDBfb3RoZXJOYW1lOwotKwkJZDJpX0VTU19DRVJUX0lEOwotKwkJT0JKX2ZpbmRfc2lnaWRfYWxnczsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2tleWdlbjsKLSsJCVBLQ1M1X1BCS0RGMl9ITUFDOwotKwkJRVZQX1BLRVlfcGFyYW1nZW47Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9wYXJhbWdlbjsKLSsJCUJJT19uZXdfUEtDUzc7Ci0rCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3ZlcjsKLSsJCVRTX2V4dF9wcmludF9iaW87Ci0rCQlUU19BU04xX0lOVEVHRVJfcHJpbnRfYmlvOwotKwkJY2hlY2tfZGVmZXI7Ci0rCQlEU09fcGF0aGJ5YWRkcjsKLSsJCUVWUF9QS0VZX3NldF90eXBlOwotKwkJVFNfQUNDVVJBQ1lfc2V0X21pY3JvczsKLSsJCVRTX1JFUV90b19UU19WRVJJRllfQ1RYOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY29weTsKLSsJCUFTTjFfUENUWF9zZXRfY2VydF9mbGFnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHQ7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9jdHJsOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCUVWUF9QS0VZX0NUWF9uZXdfaWQ7Ci0rCQlUU19SRVFfZ2V0X2V4dF9ieV9PQko7Ci0rCQlUU19DT05GX3NldF9zaWduZXJfY2VydDsKLSsJCVg1MDlfTkFNRV9oYXNoX29sZDsKLSsJCUFTTjFfVElNRV9zZXRfc3RyaW5nOwotKwkJRVZQX01EX2ZsYWdzOwotKwkJVFNfUkVTUF9DVFhfZnJlZTsKLSsJCURTQXBhcmFtc19kdXA7Ci0rCQlESHBhcmFtc19kdXA7Ci0rCQlPQ1NQX1JFUV9DVFhfYWRkMV9oZWFkZXI7Ci0rCQlPQ1NQX1JFUV9DVFhfc2V0MV9yZXE7Ci0rCQlYNTA5X1NUT1JFX3NldF92ZXJpZnlfY2I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfY3JsOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJlbnRfY3R4OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2lzc3VlcjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VyX2lzc3VlcjsKLSsJCVg1MDlfaXNzdWVyX25hbWVfaGFzaF9vbGQ7Ci0rCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoX29sZDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NvcHk7Ci0rCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RvcjsKLSsJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdHI7Ci0rCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RvcjsKLSsJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdHI7Ci0rCQlFVlBfcmVhZF9wd19zdHJpbmdfbWluOwotKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2NmYjEyOF8xX2VuY3J5cHQ7Ci0rCQlDUllQVE9fY2JjMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY3RyMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fb2ZiMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY3RzMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fY3RzMTI4X2VuY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fY2JjMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fY2ZiMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY2ZiMTI4XzhfZW5jcnlwdDsKLSsKLSsJbG9jYWw6Ci0rCQkqOwotK307Ci0rCi0rCi0rT1BFTlNTTF8xLjAuMSB7Ci0rCWdsb2JhbDoKLSsJCVNTTF9yZW5lZ290aWF0ZV9hYmJyZXZpYXRlZDsKLSsJCVRMU3YxXzFfbWV0aG9kOwotKwkJVExTdjFfMV9jbGllbnRfbWV0aG9kOwotKwkJVExTdjFfMV9zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYjsKLSsJCVNTTF9nZXRfc3JwX2c7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWVfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdW5fY2I7Ci0rCQlTU0xfZ2V0X3NycF91c2VyaW5mbzsKLSsJCVNTTF9zZXRfc3JwX3NlcnZlcl9wYXJhbTsKLSsJCVNTTF9zZXRfc3JwX3NlcnZlcl9wYXJhbV9wdzsKLSsJCVNTTF9nZXRfc3JwX047Ci0rCQlTU0xfZ2V0X3NycF91c2VybmFtZTsKLSsJCVNTTF9DVFhfc2V0X3NycF9wYXNzd29yZDsKLSsJCVNTTF9DVFhfc2V0X3NycF9zdHJlbmd0aDsKLSsJCVNTTF9DVFhfc2V0X3NycF92ZXJpZnlfcGFyYW1fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdmZ5X3BhcmFtX2NiOwotKwkJU1NMX0NUWF9zZXRfc3JwX2NiX2FyZzsKLSsJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZTsKLSsJCVNTTF9DVFhfU1JQX0NUWF9pbml0OwotKwkJU1NMX1NSUF9DVFhfaW5pdDsKLSsJCVNSUF9DYWxjX0FfcGFyYW07Ci0rCQlTUlBfZ2VuZXJhdGVfc2VydmVyX21hc3Rlcl9zZWNyZXQ7Ci0rCQlTUlBfZ2VuX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OwotKwkJU1NMX0NUWF9TUlBfQ1RYX2ZyZWU7Ci0rCQlTUlBfZ2VuZXJhdGVfY2xpZW50X21hc3Rlcl9zZWNyZXQ7Ci0rCQlTUlBfZ2VuX2NsaWVudF9tYXN0ZXJfc2VjcmV0OwotKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91c2VybmFtZTsKLSsJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdW47Ci0rCQlTU0xfU1JQX0NUWF9mcmVlOwotKwkJU1NMX3NldF9kZWJ1ZzsKLSsJCVNTTF9TRVNTSU9OX2dldDBfcGVlcjsKLSsJCVRMU3YxXzJfY2xpZW50X21ldGhvZDsKLSsJCVNTTF9TRVNTSU9OX3NldDFfaWRfY29udGV4dDsKLSsJCVRMU3YxXzJfc2VydmVyX21ldGhvZDsKLSsJCVNTTF9jYWNoZV9oaXQ7Ci0rCQlTU0xfZ2V0MF9rc3NsX2N0eDsKLSsJCVNTTF9zZXQwX2tzc2xfY3R4OwotKwkJU1NMX3NldF9zdGF0ZTsKLSsJCVNTTF9DSVBIRVJfZ2V0X2lkOwotKwkJVExTdjFfMl9tZXRob2Q7Ci0rCQlrc3NsX2N0eF9nZXQwX2NsaWVudF9wcmluYzsKLSsJCVNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsOwotKwkJU1NMX3NldF90bHNleHRfdXNlX3NydHA7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VkX2NiOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2X2NiOwotKwkJU1NMX2dldDBfbmV4dF9wcm90b19uZWdvdGlhdGVkOwotKwkJU1NMX2dldF9zZWxlY3RlZF9zcnRwX3Byb2ZpbGU7Ci0rCQlTU0xfQ1RYX3NldF90bHNleHRfdXNlX3NydHA7Ci0rCQlTU0xfc2VsZWN0X25leHRfcHJvdG87Ci0rCQlTU0xfZ2V0X3NydHBfcHJvZmlsZXM7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYjsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsX2NiOwotKwkJU1NMX1NFU1NJT05fZ2V0X2NvbXByZXNzX2lkOwotKwotKwkJU1JQX1ZCQVNFX2dldF9ieV91c2VyOwotKwkJU1JQX0NhbGNfc2VydmVyX2tleTsKLSsJCVNSUF9jcmVhdGVfdmVyaWZpZXI7Ci0rCQlTUlBfY3JlYXRlX3ZlcmlmaWVyX0JOOwotKwkJU1JQX0NhbGNfdTsKLSsJCVNSUF9WQkFTRV9mcmVlOwotKwkJU1JQX0NhbGNfY2xpZW50X2tleTsKLSsJCVNSUF9nZXRfZGVmYXVsdF9nTjsKLSsJCVNSUF9DYWxjX3g7Ci0rCQlTUlBfQ2FsY19COwotKwkJU1JQX1ZCQVNFX25ldzsKLSsJCVNSUF9jaGVja19rbm93bl9nTl9wYXJhbTsKLSsJCVNSUF9DYWxjX0E7Ci0rCQlTUlBfVmVyaWZ5X0FfbW9kX047Ci0rCQlTUlBfVkJBU0VfaW5pdDsKLSsJCVNSUF9WZXJpZnlfQl9tb2RfTjsKLSsJCUVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXM7Ci0rCQlFQ19LRVlfc2V0X3B1Yl9rZXlfYWZmX2Nvb3JkczsKLSsJCUVWUF9hZXNfMTkyX2N0cjsKLSsJCUVWUF9QS0VZX21ldGhfZ2V0MF9pbmZvOwotKwkJRVZQX1BLRVlfbWV0aF9jb3B5OwotKwkJRVJSX2FkZF9lcnJvcl92ZGF0YTsKLSsJCUVWUF9hZXNfMTI4X2N0cjsKLSsJCUVWUF9hZXNfMjU2X2N0cjsKLSsJCUVDX0dGcF9uaXN0cDIyNF9tZXRob2Q7Ci0rCQlFQ19LRVlfZ2V0X2ZsYWdzOwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTU19tZ2YxOwotKwkJRVZQX2Flc18xMjhfeHRzOwotKwkJRVZQX2Flc18yNTZfeHRzOwotKwkJRVZQX2Flc18xMjhfZ2NtOwotKwkJRUNfS0VZX2NsZWFyX2ZsYWdzOwotKwkJRUNfS0VZX3NldF9mbGFnczsKLSsJCUVWUF9hZXNfMjU2X2NjbTsKLSsJCVJTQV92ZXJpZnlfUEtDUzFfUFNTX21nZjE7Ci0rCQlFVlBfYWVzXzEyOF9jY207Ci0rCQlFVlBfYWVzXzE5Ml9nY207Ci0rCQlYNTA5X0FMR09SX3NldF9tZDsKLSsJCVJBTkRfaW5pdF9maXBzOwotKwkJRVZQX2Flc18yNTZfZ2NtOwotKwkJRVZQX2Flc18xOTJfY2NtOwotKwkJQ01BQ19DVFhfY29weTsKLSsJCUNNQUNfQ1RYX2ZyZWU7Ci0rCQlDTUFDX0NUWF9nZXQwX2NpcGhlcl9jdHg7Ci0rCQlDTUFDX0NUWF9jbGVhbnVwOwotKwkJQ01BQ19Jbml0OwotKwkJQ01BQ19VcGRhdGU7Ci0rCQlDTUFDX3Jlc3VtZTsKLSsJCUNNQUNfQ1RYX25ldzsKLSsJCUNNQUNfRmluYWw7Ci0rCQlDUllQVE9fY3RyMTI4X2VuY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X3JlbGVhc2U7Ci0rCQlDUllQVE9fY2NtMTI4X2RlY3J5cHRfY2NtNjQ7Ci0rCQlDUllQVE9fY2NtMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9feHRzMTI4X2VuY3J5cHQ7Ci0rCQlFVlBfcmM0X2htYWNfbWQ1OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdF9ibG9jazsKLSsJCUNSWVBUT19nY20xMjhfc2V0aXY7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0OwotKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMTsKLSsJCUNSWVBUT19nY20xMjhfdGFnOwotKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0X2NjbTY0OwotKwkJRU5HSU5FX2xvYWRfcmRyYW5kOwotKwkJQ1JZUFRPX2NjbTEyOF9zZXRpdjsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fZ2NtMTI4X2FhZDsKLSsJCUNSWVBUT19jY20xMjhfaW5pdDsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fZ2NtMTI4X25ldzsKLSsJCUNSWVBUT19jY20xMjhfdGFnOwotKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2NjbTEyOF9hYWQ7Ci0rCQlDUllQVE9fZ2NtMTI4X2luaXQ7Ci0rCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHQ7Ci0rCQlFTkdJTkVfbG9hZF9yc2F4OwotKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyOwotKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyOwotKwkJQ1JZUFRPX2djbTEyOF9maW5pc2g7Ci0rCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGExOwotKwkJUEtDUzVfcGJrZGYyX3NldDsKLSsJCUNNU19hZGQwX3JlY2lwaWVudF9wYXNzd29yZDsKLSsJCUNNU19kZWNyeXB0X3NldDFfcGFzc3dvcmQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX3Bhc3N3b3JkOwotKwkJUkFORF9zZXRfZmlwc19kcmJnX3R5cGU7Ci0rCQlYNTA5X1JFUV9zaWduX2N0eDsKLSsJCVJTQV9QU1NfUEFSQU1TX25ldzsKLSsJCVg1MDlfQ1JMX3NpZ25fY3R4OwotKwkJWDUwOV9zaWduYXR1cmVfZHVtcDsKLSsJCWQyaV9SU0FfUFNTX1BBUkFNUzsKLSsJCVJTQV9QU1NfUEFSQU1TX2l0OwotKwkJUlNBX1BTU19QQVJBTVNfZnJlZTsKLSsJCVg1MDlfc2lnbl9jdHg7Ci0rCQlpMmRfUlNBX1BTU19QQVJBTVM7Ci0rCQlBU04xX2l0ZW1fc2lnbl9jdHg7Ci0rCQlFQ19HRnBfbmlzdHA1MjFfbWV0aG9kOwotKwkJRUNfR0ZwX25pc3RwMjU2X21ldGhvZDsKLSsJCU9QRU5TU0xfc3RkZXJyOwotKwkJT1BFTlNTTF9jcHVpZF9zZXR1cDsKLSsJCU9QRU5TU0xfc2hvd2ZhdGFsOwotKwkJQklPX25ld19kZ3JhbV9zY3RwOwotKwkJQklPX2RncmFtX3NjdHBfbXNnX3dhaXRpbmc7Ci0rCQlCSU9fZGdyYW1fc2N0cF93YWl0X2Zvcl9kcnk7Ci0rCQlCSU9fc19kYXRhZ3JhbV9zY3RwOwotKwkJQklPX2RncmFtX2lzX3NjdHA7Ci0rCQlCSU9fZGdyYW1fc2N0cF9ub3RpZmljYXRpb25fY2I7Ci0rfSBPUEVOU1NMXzEuMC4wOwotKwotK09QRU5TU0xfMS4wLjFkIHsKLSsJZ2xvYmFsOgotKwkJQ1JZUFRPX21lbWNtcDsKLSt9IE9QRU5TU0xfMS4wLjE7Ci0rCi0rT1BFTlNTTF8xLjAuMiB7Ci0rCWdsb2JhbDoKLSsJCVNTTF9DVFhfc2V0X2FscG5fcHJvdG9zOwotKwkJU1NMX3NldF9hbHBuX3Byb3RvczsKLSsJCVNTTF9DVFhfc2V0X2FscG5fc2VsZWN0X2NiOwotKwkJU1NMX2dldDBfYWxwbl9zZWxlY3RlZDsKLSsJCVNTTF9DVFhfc2V0X2N1c3RvbV9jbGlfZXh0OwotKwkJU1NMX0NUWF9zZXRfY3VzdG9tX3Nydl9leHQ7Ci0rCQlTU0xfQ1RYX3NldF9zcnZfc3VwcF9kYXRhOwotKwkJU1NMX0NUWF9zZXRfY2xpX3N1cHBfZGF0YTsKLSsJCVNTTF9zZXRfY2VydF9jYjsKLSsJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm87Ci0rCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvX2ZpbGU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXQwX3BhcmFtOwotKwkJU1NMX2dldDBfcGFyYW07Ci0rCQlTU0xfY2VydHNfY2xlYXI7Ci0rCQlEVExTdjFfMl9tZXRob2Q7Ci0rCQlEVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU3YxXzJfY2xpZW50X21ldGhvZDsKLSsJCURUTFNfbWV0aG9kOwotKwkJRFRMU19zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU19jbGllbnRfbWV0aG9kOwotKwkJU1NMX0NUWF9nZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9DVFhfZ2V0MF9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9DVFhfZ2V0MF9wcml2YXRla2V5OwotKwkJU1NMX0NPTVBfc2V0MF9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NPTVBfZnJlZV9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NJUEhFUl9maW5kOwotKwkJU1NMX2lzX3NlcnZlcjsKLSsJCVNTTF9DT05GX0NUWF9uZXc7Ci0rCQlTU0xfQ09ORl9DVFhfZmluaXNoOwotKwkJU1NMX0NPTkZfQ1RYX2ZyZWU7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX3NldDFfcHJlZml4OwotKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2w7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X3NzbF9jdHg7Ci0rCQlTU0xfQ09ORl9jbWQ7Ci0rCQlTU0xfQ09ORl9jbWRfYXJndjsKLSsJCVNTTF9DT05GX2NtZF92YWx1ZV90eXBlOwotKwkJU1NMX3RyYWNlOwotKwkJU1NMX0NJUEhFUl9zdGFuZGFyZF9uYW1lOwotKwkJU1NMX2dldF90bHNhX3JlY29yZF9ieW5hbWU7Ci0rCQlBU04xX1RJTUVfZGlmZjsKLSsJCUJJT19oZXhfc3RyaW5nOwotKwkJQ01TX1JlY2lwaWVudEluZm9fZ2V0MF9wa2V5X2N0eDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2VuY3J5cHQ7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3BrZXlfY3R4OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9tZF9jdHg7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3NpZ25hdHVyZTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9hbGc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfcmVrczsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9vcmlnX2lkOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9vcmlnX2lkX2NtcDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfZ2V0MF9pZDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfY2VydF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX3NldDBfcGtleTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9jdHg7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2RlY3J5cHQ7Ci0rCQlDTVNfU2hhcmVkSW5mb19lbmNvZGU7Ci0rCQlESF9jb21wdXRlX2tleV9wYWRkZWQ7Ci0rCQlkMmlfREh4cGFyYW1zOwotKwkJaTJkX0RIeHBhcmFtczsKLSsJCURIX2dldF8xMDI0XzE2MDsKLSsJCURIX2dldF8yMDQ4XzIyNDsKLSsJCURIX2dldF8yMDQ4XzI1NjsKLSsJCURIX0tERl9YOV80MjsKLSsJCUVDREhfS0RGX1g5XzYyOwotKwkJRUNEU0FfTUVUSE9EX25ldzsKLSsJCUVDRFNBX01FVEhPRF9mcmVlOwotKwkJRUNEU0FfTUVUSE9EX3NldF9hcHBfZGF0YTsKLSsJCUVDRFNBX01FVEhPRF9nZXRfYXBwX2RhdGE7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ247Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ25fc2V0dXA7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3ZlcmlmeTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfZmxhZ3M7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X25hbWU7Ci0rCQlFVlBfZGVzX2VkZTNfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X3dyYXA7Ci0rCQlFVlBfYWVzXzE5Ml93cmFwOwotKwkJRVZQX2Flc18yNTZfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTI1NjsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTI1NjsKLSsJCUNSWVBUT18xMjhfd3JhcDsKLSsJCUNSWVBUT18xMjhfdW53cmFwOwotKwkJT0NTUF9SRVFfQ1RYX25iaW87Ci0rCQlPQ1NQX1JFUV9DVFhfbmV3OwotKwkJT0NTUF9zZXRfbWF4X3Jlc3BvbnNlX2xlbmd0aDsKLSsJCU9DU1BfUkVRX0NUWF9pMmQ7Ci0rCQlPQ1NQX1JFUV9DVFhfbmJpb19kMmk7Ci0rCQlPQ1NQX1JFUV9DVFhfZ2V0MF9tZW1fYmlvOwotKwkJT0NTUF9SRVFfQ1RYX2h0dHA7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX09BRVBfUEFSQU1TX2ZyZWU7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfaXQ7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfbmV3OwotKwkJU1NMX2dldF9zaWdhbGdzOwotKwkJU1NMX2dldF9zaGFyZWRfc2lnYWxnczsKLSsJCVNTTF9jaGVja19jaGFpbjsKLSsJCVg1MDlfY2hhaW5fdXBfcmVmOwotKwkJWDUwOV9odHRwX25iaW87Ci0rCQlYNTA5X0NSTF9odHRwX25iaW87Ci0rCQlYNTA5X1JFVk9LRURfZHVwOwotKwkJaTJkX3JlX1g1MDlfdGJzOwotKwkJWDUwOV9nZXQwX3NpZ25hdHVyZTsKLSsJCVg1MDlfZ2V0X3NpZ25hdHVyZV9uaWQ7Ci0rCQlYNTA5X0NSTF9kaWZmOwotKwkJWDUwOV9jaGFpbl9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X0NSTF9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X2NoZWNrX2hvc3Q7Ci0rCQlYNTA5X2NoZWNrX2VtYWlsOwotKwkJWDUwOV9jaGVja19pcDsKLSsJCVg1MDlfY2hlY2tfaXBfYXNjOwotKwkJWDUwOV9TVE9SRV9zZXRfbG9va3VwX2NybHNfY2I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3N0b3JlOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2hvc3RmbGFnczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfcGVlcm5hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2VtYWlsOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXBfYXNjOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2NvdW50OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MDsKLSsJCVg1MDlWM19FWFRfZnJlZTsKLSsJCUVDX0dST1VQX2dldF9tb250X2RhdGE7Ci0rCQlFQ19jdXJ2ZV9uaWQybmlzdDsKLSsJCUVDX2N1cnZlX25pc3QybmlkOwotKwkJUEVNX3dyaXRlX2Jpb19ESHhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfREh4cGFyYW1zOwotKwkJU1NMX0NUWF9hZGRfY2xpZW50X2N1c3RvbV9leHQ7Ci0rCQlTU0xfQ1RYX2FkZF9zZXJ2ZXJfY3VzdG9tX2V4dDsKLSsJCVNTTF9leHRlbnNpb25fc3VwcG9ydGVkOwotKwkJQlVGX3N0cm5sZW47Ci0rCQlza19kZWVwX2NvcHk7Ci0rCQlTU0xfdGVzdF9mdW5jdGlvbnM7Ci0rfSBPUEVOU1NMXzEuMC4xZDsKLSsKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLStPUEVOU1NMXzEuMC4wIHsKLSsJZ2xvYmFsOgotKwkJYmluZF9lbmdpbmU7Ci0rCQl2X2NoZWNrOwotKwkJT1BFTlNTTF9pbml0OwotKwkJT1BFTlNTTF9maW5pc2g7Ci0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwIEBACi0rT1BFTlNTTF8xLjAuMCB7Ci0rCWdsb2JhbDoKLSsJCWJpbmRfZW5naW5lOwotKwkJdl9jaGVjazsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCU9QRU5TU0xfZmluaXNoOwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWNkZmVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yZC5vcmlnL2NyeXB0by9vcGVuc3Nsdi5oCi0rKysgb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKLUBAIC04OCw3ICs4OCw3IEBAIGV4dGVybiAiQyIgewotICAqIHNob3VsZCBvbmx5IGtlZXAgdGhlIHZlcnNpb25zIHRoYXQgYXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQuCi0gICovCi0gIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9ISVNUT1JZICIiCi0tIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4wIgotKyMgZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMiIKLSAKLSAKLSAjaWZkZWYgIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZjExYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDY1NiArMCwwIEBACi1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUub3JpZy9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNjUxLDYgKzE2NTEsOCBAQAotIAkJfQotIAl9Ci0gCi0rJHNoYXJlZF9sZGZsYWcgLj0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD1vcGVuc3NsLmxkIjsKLSsKLSBvcGVuKElOLCc8TWFrZWZpbGUub3JnJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBNYWtlZmlsZS5vcmc6JCFcbiI7Ci0gdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKLSBvcGVuKE9VVCwiPiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgJE1ha2VmaWxlLm5ldzokIVxuIjsKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIyOjE5OjA4LjYwMTgyNzI2NiArMDEwMAotQEAgLTAsMCArMSw0NjA4IEBACi0rT1BFTlNTTF8xLjAuMmQgewotKwlnbG9iYWw6Ci0rCQlCSU9fZl9zc2w7Ci0rCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKLSsJCUJJT19uZXdfc3NsOwotKwkJQklPX25ld19zc2xfY29ubmVjdDsKLSsJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOwotKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlCSU9fc3NsX3NodXRkb3duOwotKwkJZDJpX1NTTF9TRVNTSU9OOwotKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7Ci0rCQlEVExTdjFfbWV0aG9kOwotKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7Ci0rCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKLSsJCWkyZF9TU0xfU0VTU0lPTjsKLSsJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7Ci0rCQlrc3NsX2NnZXRfdGt0OwotKwkJa3NzbF9jaGVja19hdXRoZW50OwotKwkJa3NzbF9jdHhfZnJlZTsKLSsJCWtzc2xfY3R4X25ldzsKLSsJCWtzc2xfY3R4X3NldGtleTsKLSsJCWtzc2xfY3R4X3NldHByaW5jOwotKwkJa3NzbF9jdHhfc2V0c3RyaW5nOwotKwkJa3NzbF9jdHhfc2hvdzsKLSsJCWtzc2xfZXJyX3NldDsKLSsJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7Ci0rCQlrc3NsX3NnZXRfdGt0OwotKwkJa3NzbF9za2lwX2NvbmZvdW5kOwotKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKLSsJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOwotKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKLSsJCVNTTF9hY2NlcHQ7Ci0rCQlTU0xfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7Ci0rCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKLSsJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOwotKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF9jYWxsYmFja19jdHJsOwotKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKLSsJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7Ci0rCQlTU0xfQ0lQSEVSX2dldF9uYW1lOwotKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKLSsJCVNTTF9jbGVhcjsKLSsJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7Ci0rCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKLSsJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOwotKwkJU1NMX0NPTVBfZ2V0X25hbWU7Ci0rCQlTU0xfY29ubmVjdDsKLSsJCVNTTF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlTU0xfY3RybDsKLSsJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9DVFhfYWRkX3Nlc3Npb247Ci0rCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7Ci0rCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NUWF9jdHJsOwotKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfZnJlZTsKLSsJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKLSsJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOwotKwkJU1NMX0NUWF9uZXc7Ci0rCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOwotKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOwotKwkJU1NMX0NUWF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOwotKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKLSsJCVNTTF9DVFhfc2V0MV9wYXJhbTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOwotKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOwotKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOwotKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKLSsJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7Ci0rCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOwotKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7Ci0rCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wdXJwb3NlOwotKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7Ci0rCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKLSsJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90cnVzdDsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9kb19oYW5kc2hha2U7Ci0rCQlTU0xfZHVwOwotKwkJU1NMX2R1cF9DQV9saXN0OwotKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKLSsJCVNTTF9mcmVlOwotKwkJU1NMX2dldDFfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX2dldF9jaXBoZXJzOwotKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOwotKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7Ci0rCQlTU0xfZ2V0X2Vycm9yOwotKwkJU1NMX2dldF9leF9kYXRhOwotKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKLSsJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7Ci0rCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9nZXRfZmQ7Ci0rCQlTU0xfZ2V0X2ZpbmlzaGVkOwotKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47Ci0rCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7Ci0rCQlTU0xfZ2V0X3ByaXZhdGVrZXk7Ci0rCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKLSsJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX2dldF9yYmlvOwotKwkJU1NMX2dldF9yZWFkX2FoZWFkOwotKwkJU1NMX2dldF9yZmQ7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWU7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKLSsJCVNTTF9nZXRfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7Ci0rCQlTU0xfZ2V0X3NodXRkb3duOwotKwkJU1NMX2dldF9TU0xfQ1RYOwotKwkJU1NMX2dldF9zc2xfbWV0aG9kOwotKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9nZXRfdmVyaWZ5X21vZGU7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7Ci0rCQlTU0xfZ2V0X3ZlcnNpb247Ci0rCQlTU0xfZ2V0X3diaW87Ci0rCQlTU0xfZ2V0X3dmZDsKLSsJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKLSsJCVNTTF9saWJyYXJ5X2luaXQ7Ci0rCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKLSsJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7Ci0rCQlTU0xfbmV3OwotKwkJU1NMX3BlZWs7Ci0rCQlTU0xfcGVuZGluZzsKLSsJCVNTTF9yZWFkOwotKwkJU1NMX3JlbmVnb3RpYXRlOwotKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7Ci0rCQlTU0xfcnN0YXRlX3N0cmluZzsKLSsJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfU0VTU0lPTl9jbXA7Ci0rCQlTU0xfU0VTU0lPTl9mcmVlOwotKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX1NFU1NJT05fZ2V0X2lkOwotKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKLSsJCVNTTF9TRVNTSU9OX2hhc2g7Ci0rCQlTU0xfU0VTU0lPTl9uZXc7Ci0rCQlTU0xfU0VTU0lPTl9wcmludDsKLSsJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOwotKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKLSsJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OwotKwkJU1NMX3NldDFfcGFyYW07Ci0rCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKLSsJCVNTTF9zZXRfYmlvOwotKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7Ci0rCQlTU0xfc2V0X2V4X2RhdGE7Ci0rCQlTU0xfc2V0X2ZkOwotKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOwotKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3B1cnBvc2U7Ci0rCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX3NldF9yZWFkX2FoZWFkOwotKwkJU1NMX3NldF9yZmQ7Ci0rCQlTU0xfc2V0X3Nlc3Npb247Ci0rCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7Ci0rCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOwotKwkJU1NMX3NldF9zaHV0ZG93bjsKLSsJCVNTTF9zZXRfU1NMX0NUWDsKLSsJCVNTTF9zZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOwotKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdHJ1c3Q7Ci0rCQlTU0xfc2V0X3ZlcmlmeTsKLSsJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OwotKwkJU1NMX3NldF93ZmQ7Ci0rCQlTU0xfc2h1dGRvd247Ci0rCQlTU0xfc3RhdGU7Ci0rCQlTU0xfc3RhdGVfc3RyaW5nOwotKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTHYyM19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjIzX21ldGhvZDsKLSsJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKLSsJCVNTTHYyX21ldGhvZDsKLSsJCVNTTHYyX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0x2M19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjNfbWV0aG9kOwotKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKLSsJCVNTTF92ZXJzaW9uOwotKwkJU1NMX3dhbnQ7Ci0rCQlTU0xfd3JpdGU7Ci0rCQlUTFN2MV9jbGllbnRfbWV0aG9kOwotKwkJVExTdjFfbWV0aG9kOwotKwkJVExTdjFfc2VydmVyX21ldGhvZDsKLSsKLSsKLSsJCVNTTGVheTsKLSsJCVNTTGVheV92ZXJzaW9uOwotKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKLSsJCUFTTjFfSEVBREVSX2ZyZWU7Ci0rCQlBU04xX0hFQURFUl9uZXc7Ci0rCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7Ci0rCQlBU04xX0lOVEVHRVJfZ2V0OwotKwkJQVNOMV9JTlRFR0VSX3NldDsKLSsJCUFTTjFfSU5URUdFUl90b19CTjsKLSsJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKLSsJCUFTTjFfT0JKRUNUX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9uZXc7Ci0rCQlBU04xX1BSSU5UQUJMRV90eXBlOwotKwkJQVNOMV9TVFJJTkdfY21wOwotKwkJQVNOMV9TVFJJTkdfZHVwOwotKwkJQVNOMV9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfU1RSSU5HX25ldzsKLSsJCUFTTjFfU1RSSU5HX3ByaW50OwotKwkJQVNOMV9TVFJJTkdfc2V0OwotKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7Ci0rCQlBU04xX1RZUEVfZnJlZTsKLSsJCUFTTjFfVFlQRV9uZXc7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7Ci0rCQlBU04xX1VUQ1RJTUVfY2hlY2s7Ci0rCQlBU04xX1VUQ1RJTUVfcHJpbnQ7Ci0rCQlBU04xX1VUQ1RJTUVfc2V0OwotKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlBU04xX2QyaV9iaW87Ci0rCQlBU04xX2QyaV9mcDsKLSsJCUFTTjFfZGlnZXN0OwotKwkJQVNOMV9kdXA7Ci0rCQlBU04xX2dldF9vYmplY3Q7Ci0rCQlBU04xX2kyZF9iaW87Ci0rCQlBU04xX2kyZF9mcDsKLSsJCUFTTjFfb2JqZWN0X3NpemU7Ci0rCQlBU04xX3BhcnNlOwotKwkJQVNOMV9wdXRfb2JqZWN0OwotKwkJQVNOMV9zaWduOwotKwkJQVNOMV92ZXJpZnk7Ci0rCQlCRl9jYmNfZW5jcnlwdDsKLSsJCUJGX2NmYjY0X2VuY3J5cHQ7Ci0rCQlCRl9lY2JfZW5jcnlwdDsKLSsJCUJGX2VuY3J5cHQ7Ci0rCQlCRl9vZmI2NF9lbmNyeXB0OwotKwkJQkZfb3B0aW9uczsKLSsJCUJGX3NldF9rZXk7Ci0rCQlCSU9fQ09OTkVDVF9mcmVlOwotKwkJQklPX0NPTk5FQ1RfbmV3OwotKwkJQklPX2FjY2VwdDsKLSsJCUJJT19jdHJsOwotKwkJQklPX2ludF9jdHJsOwotKwkJQklPX2RlYnVnX2NhbGxiYWNrOwotKwkJQklPX2R1bXA7Ci0rCQlCSU9fZHVwX2NoYWluOwotKwkJQklPX2ZfYmFzZTY0OwotKwkJQklPX2ZfYnVmZmVyOwotKwkJQklPX2ZfY2lwaGVyOwotKwkJQklPX2ZfbWQ7Ci0rCQlCSU9fZl9udWxsOwotKwkJQklPX2ZfcHJveHlfc2VydmVyOwotKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19mZF9zaG91bGRfcmV0cnk7Ci0rCQlCSU9fZmluZF90eXBlOwotKwkJQklPX2ZyZWU7Ci0rCQlCSU9fZnJlZV9hbGw7Ci0rCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7Ci0rCQlCSU9fZ2V0X2ZpbHRlcl9iaW87Ci0rCQlCSU9fZ2V0X2hvc3RfaXA7Ci0rCQlCSU9fZ2V0X3BvcnQ7Ci0rCQlCSU9fZ2V0X3JldHJ5X0JJTzsKLSsJCUJJT19nZXRfcmV0cnlfcmVhc29uOwotKwkJQklPX2dldGhvc3RieW5hbWU7Ci0rCQlCSU9fZ2V0czsKLSsJCUJJT19uZXc7Ci0rCQlCSU9fbmV3X2FjY2VwdDsKLSsJCUJJT19uZXdfY29ubmVjdDsKLSsJCUJJT19uZXdfZmQ7Ci0rCQlCSU9fbmV3X2ZpbGU7Ci0rCQlCSU9fbmV3X2ZwOwotKwkJQklPX25ld19zb2NrZXQ7Ci0rCQlCSU9fcG9wOwotKwkJQklPX3ByaW50ZjsKLSsJCUJJT19wdXNoOwotKwkJQklPX3B1dHM7Ci0rCQlCSU9fcmVhZDsKLSsJCUJJT19zX2FjY2VwdDsKLSsJCUJJT19zX2Nvbm5lY3Q7Ci0rCQlCSU9fc19mZDsKLSsJCUJJT19zX2ZpbGU7Ci0rCQlCSU9fc19tZW07Ci0rCQlCSU9fc19udWxsOwotKwkJQklPX3NfcHJveHlfY2xpZW50OwotKwkJQklPX3Nfc29ja2V0OwotKwkJQklPX3NldDsKLSsJCUJJT19zZXRfY2lwaGVyOwotKwkJQklPX3NldF90Y3BfbmRlbGF5OwotKwkJQklPX3NvY2tfY2xlYW51cDsKLSsJCUJJT19zb2NrX2Vycm9yOwotKwkJQklPX3NvY2tfaW5pdDsKLSsJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKLSsJCUJJT19zb2NrZXRfaW9jdGw7Ci0rCQlCSU9fd3JpdGU7Ci0rCQlCTl9DVFhfZnJlZTsKLSsJCUJOX0NUWF9uZXc7Ci0rCQlCTl9NT05UX0NUWF9mcmVlOwotKwkJQk5fTU9OVF9DVFhfbmV3OwotKwkJQk5fTU9OVF9DVFhfc2V0OwotKwkJQk5fYWRkOwotKwkJQk5fYWRkX3dvcmQ7Ci0rCQlCTl9oZXgyYm47Ci0rCQlCTl9iaW4yYm47Ci0rCQlCTl9ibjJoZXg7Ci0rCQlCTl9ibjJiaW47Ci0rCQlCTl9jbGVhcjsKLSsJCUJOX2NsZWFyX2JpdDsKLSsJCUJOX2NsZWFyX2ZyZWU7Ci0rCQlCTl9jbXA7Ci0rCQlCTl9jb3B5OwotKwkJQk5fZGl2OwotKwkJQk5fZGl2X3dvcmQ7Ci0rCQlCTl9kdXA7Ci0rCQlCTl9mcmVlOwotKwkJQk5fZnJvbV9tb250Z29tZXJ5OwotKwkJQk5fZ2NkOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWU7Ci0rCQlCTl9nZXRfd29yZDsKLSsJCUJOX2lzX2JpdF9zZXQ7Ci0rCQlCTl9pc19wcmltZTsKLSsJCUJOX2xzaGlmdDsKLSsJCUJOX2xzaGlmdDE7Ci0rCQlCTl9tYXNrX2JpdHM7Ci0rCQlCTl9tb2Q7Ci0rCQlCTl9tb2RfZXhwOwotKwkJQk5fbW9kX2V4cF9tb250OwotKwkJQk5fbW9kX2V4cF9zaW1wbGU7Ci0rCQlCTl9tb2RfaW52ZXJzZTsKLSsJCUJOX21vZF9tdWw7Ci0rCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7Ci0rCQlCTl9tb2Rfd29yZDsKLSsJCUJOX211bDsKLSsJCUJOX25ldzsKLSsJCUJOX251bV9iaXRzOwotKwkJQk5fbnVtX2JpdHNfd29yZDsKLSsJCUJOX29wdGlvbnM7Ci0rCQlCTl9wcmludDsKLSsJCUJOX3ByaW50X2ZwOwotKwkJQk5fcmFuZDsKLSsJCUJOX3JlY2lwcm9jYWw7Ci0rCQlCTl9yc2hpZnQ7Ci0rCQlCTl9yc2hpZnQxOwotKwkJQk5fc2V0X2JpdDsKLSsJCUJOX3NldF93b3JkOwotKwkJQk5fc3FyOwotKwkJQk5fc3ViOwotKwkJQk5fdG9fQVNOMV9JTlRFR0VSOwotKwkJQk5fdWNtcDsKLSsJCUJOX3ZhbHVlX29uZTsKLSsJCUJVRl9NRU1fZnJlZTsKLSsJCUJVRl9NRU1fZ3JvdzsKLSsJCUJVRl9NRU1fbmV3OwotKwkJQlVGX3N0cmR1cDsKLSsJCUNPTkZfZnJlZTsKLSsJCUNPTkZfZ2V0X251bWJlcjsKLSsJCUNPTkZfZ2V0X3NlY3Rpb247Ci0rCQlDT05GX2dldF9zdHJpbmc7Ci0rCQlDT05GX2xvYWQ7Ci0rCQlDUllQVE9fYWRkX2xvY2s7Ci0rCQlDUllQVE9fZGJnX2ZyZWU7Ci0rCQlDUllQVE9fZGJnX21hbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVhbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVtYWxsb2M7Ci0rCQlDUllQVE9fZnJlZTsKLSsJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7Ci0rCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fbG9jazsKLSsJCUNSWVBUT19tYWxsb2M7Ci0rCQlDUllQVE9fbWVtX2N0cmw7Ci0rCQlDUllQVE9fbWVtX2xlYWtzOwotKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKLSsJCUNSWVBUT19tZW1fbGVha3NfZnA7Ci0rCQlDUllQVE9fcmVhbGxvYzsKLSsJCUNSWVBUT19yZW1hbGxvYzsKLSsJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3RocmVhZF9pZDsKLSsJCURIX2NoZWNrOwotKwkJREhfY29tcHV0ZV9rZXk7Ci0rCQlESF9mcmVlOwotKwkJREhfZ2VuZXJhdGVfa2V5OwotKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKLSsJCURIX25ldzsKLSsJCURIX3NpemU7Ci0rCQlESHBhcmFtc19wcmludDsKLSsJCURIcGFyYW1zX3ByaW50X2ZwOwotKwkJRFNBX2ZyZWU7Ci0rCQlEU0FfZ2VuZXJhdGVfa2V5OwotKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7Ci0rCQlEU0FfaXNfcHJpbWU7Ci0rCQlEU0FfbmV3OwotKwkJRFNBX3ByaW50OwotKwkJRFNBX3ByaW50X2ZwOwotKwkJRFNBX3NpZ247Ci0rCQlEU0Ffc2lnbl9zZXR1cDsKLSsJCURTQV9zaXplOwotKwkJRFNBX3ZlcmlmeTsKLSsJCURTQXBhcmFtc19wcmludDsKLSsJCURTQXBhcmFtc19wcmludF9mcDsKLSsJCUVSUl9jbGVhcl9lcnJvcjsKLSsJCUVSUl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfZnJlZV9zdHJpbmdzOwotKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOwotKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7Ci0rCQlFUlJfZ2V0X2Vycm9yOwotKwkJRVJSX2dldF9lcnJvcl9saW5lOwotKwkJRVJSX2dldF9zdGF0ZTsKLSsJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOwotKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JOX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0RIX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKLSsJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9zdHJpbmdzOwotKwkJRVJSX3BlZWtfZXJyb3I7Ci0rCQlFUlJfcGVla19lcnJvcl9saW5lOwotKwkJRVJSX3ByaW50X2Vycm9yczsKLSsJCUVSUl9wcmludF9lcnJvcnNfZnA7Ci0rCQlFUlJfcHV0X2Vycm9yOwotKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfcmVtb3ZlX3N0YXRlOwotKwkJRVZQX0J5dGVzVG9LZXk7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOwotKwkJRVZQX0NpcGhlckZpbmFsOwotKwkJRVZQX0NpcGhlckluaXQ7Ci0rCQlFVlBfQ2lwaGVyVXBkYXRlOwotKwkJRVZQX0RlY29kZUJsb2NrOwotKwkJRVZQX0RlY29kZUZpbmFsOwotKwkJRVZQX0RlY29kZUluaXQ7Ci0rCQlFVlBfRGVjb2RlVXBkYXRlOwotKwkJRVZQX0RlY3J5cHRGaW5hbDsKLSsJCUVWUF9EZWNyeXB0SW5pdDsKLSsJCUVWUF9EZWNyeXB0VXBkYXRlOwotKwkJRVZQX0RpZ2VzdEZpbmFsOwotKwkJRVZQX0RpZ2VzdEluaXQ7Ci0rCQlFVlBfRGlnZXN0VXBkYXRlOwotKwkJRVZQX0VuY29kZUJsb2NrOwotKwkJRVZQX0VuY29kZUZpbmFsOwotKwkJRVZQX0VuY29kZUluaXQ7Ci0rCQlFVlBfRW5jb2RlVXBkYXRlOwotKwkJRVZQX0VuY3J5cHRGaW5hbDsKLSsJCUVWUF9FbmNyeXB0SW5pdDsKLSsJCUVWUF9FbmNyeXB0VXBkYXRlOwotKwkJRVZQX09wZW5GaW5hbDsKLSsJCUVWUF9PcGVuSW5pdDsKLSsJCUVWUF9QS0VZX2Fzc2lnbjsKLSsJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX2ZyZWU7Ci0rCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9uZXc7Ci0rCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9zaXplOwotKwkJRVZQX1BLRVlfdHlwZTsKLSsJCUVWUF9TZWFsRmluYWw7Ci0rCQlFVlBfU2VhbEluaXQ7Ci0rCQlFVlBfU2lnbkZpbmFsOwotKwkJRVZQX1ZlcmlmeUZpbmFsOwotKwkJRVZQX2FkZF9hbGlhczsKLSsJCUVWUF9hZGRfY2lwaGVyOwotKwkJRVZQX2FkZF9kaWdlc3Q7Ci0rCQlFVlBfYmZfY2JjOwotKwkJRVZQX2JmX2NmYjY0OwotKwkJRVZQX2JmX2VjYjsKLSsJCUVWUF9iZl9vZmI7Ci0rCQlFVlBfY2xlYW51cDsKLSsJCUVWUF9kZXNfY2JjOwotKwkJRVZQX2Rlc19jZmI2NDsKLSsJCUVWUF9kZXNfZWNiOwotKwkJRVZQX2Rlc19lZGU7Ci0rCQlFVlBfZGVzX2VkZTM7Ci0rCQlFVlBfZGVzX2VkZTNfY2JjOwotKwkJRVZQX2Rlc19lZGUzX2NmYjY0OwotKwkJRVZQX2Rlc19lZGUzX29mYjsKLSsJCUVWUF9kZXNfZWRlX2NiYzsKLSsJCUVWUF9kZXNfZWRlX2NmYjY0OwotKwkJRVZQX2Rlc19lZGVfb2ZiOwotKwkJRVZQX2Rlc19vZmI7Ci0rCQlFVlBfZGVzeF9jYmM7Ci0rCQlFVlBfZHNzOwotKwkJRVZQX2RzczE7Ci0rCQlFVlBfZW5jX251bGw7Ci0rCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKLSsJCUVWUF9nZXRfZGlnZXN0YnluYW1lOwotKwkJRVZQX2dldF9wd19wcm9tcHQ7Ci0rCQlFVlBfaWRlYV9jYmM7Ci0rCQlFVlBfaWRlYV9jZmI2NDsKLSsJCUVWUF9pZGVhX2VjYjsKLSsJCUVWUF9pZGVhX29mYjsKLSsJCUVWUF9tZDI7Ci0rCQlFVlBfbWQ1OwotKwkJRVZQX21kX251bGw7Ci0rCQlFVlBfcmMyX2NiYzsKLSsJCUVWUF9yYzJfY2ZiNjQ7Ci0rCQlFVlBfcmMyX2VjYjsKLSsJCUVWUF9yYzJfb2ZiOwotKwkJRVZQX3JjNDsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZzsKLSsJCUVWUF9zZXRfcHdfcHJvbXB0OwotKwkJRVZQX3NoYTsKLSsJCUVWUF9zaGExOwotKwkJTUQyOwotKwkJTUQyX0ZpbmFsOwotKwkJTUQyX0luaXQ7Ci0rCQlNRDJfVXBkYXRlOwotKwkJTUQyX29wdGlvbnM7Ci0rCQlNRDU7Ci0rCQlNRDVfRmluYWw7Ci0rCQlNRDVfSW5pdDsKLSsJCU1ENV9VcGRhdGU7Ci0rCQlNREMyOwotKwkJTURDMl9GaW5hbDsKLSsJCU1EQzJfSW5pdDsKLSsJCU1EQzJfVXBkYXRlOwotKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0FDX25ldzsKLSsJCU5FVFNDQVBFX1NQS0lfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0lfbmV3OwotKwkJTkVUU0NBUEVfU1BLSV9zaWduOwotKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7Ci0rCQlPQkpfYWRkX29iamVjdDsKLSsJCU9CSl9ic2VhcmNoOwotKwkJT0JKX2NsZWFudXA7Ci0rCQlPQkpfY21wOwotKwkJT0JKX2NyZWF0ZTsKLSsJCU9CSl9kdXA7Ci0rCQlPQkpfbG4ybmlkOwotKwkJT0JKX25ld19uaWQ7Ci0rCQlPQkpfbmlkMmxuOwotKwkJT0JKX25pZDJvYmo7Ci0rCQlPQkpfbmlkMnNuOwotKwkJT0JKX29iajJuaWQ7Ci0rCQlPQkpfc24ybmlkOwotKwkJT0JKX3R4dDJuaWQ7Ci0rCQlQRU1fQVNOMV9yZWFkOwotKwkJUEVNX0FTTjFfcmVhZF9iaW87Ci0rCQlQRU1fQVNOMV93cml0ZTsKLSsJCVBFTV9BU04xX3dyaXRlX2JpbzsKLSsJCVBFTV9TZWFsRmluYWw7Ci0rCQlQRU1fU2VhbEluaXQ7Ci0rCQlQRU1fU2VhbFVwZGF0ZTsKLSsJCVBFTV9TaWduRmluYWw7Ci0rCQlQRU1fU2lnbkluaXQ7Ci0rCQlQRU1fU2lnblVwZGF0ZTsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZDsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87Ci0rCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKLSsJCVBFTV9kZWtfaW5mbzsKLSsJCVBFTV9kb19oZWFkZXI7Ci0rCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKLSsJCVBFTV9wcm9jX3R5cGU7Ci0rCQlQRU1fcmVhZDsKLSsJCVBFTV9yZWFkX0RIcGFyYW1zOwotKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX1BLQ1M3OwotKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9YNTA5OwotKwkJUEVNX3JlYWRfWDUwOV9DUkw7Ci0rCQlQRU1fcmVhZF9YNTA5X1JFUTsKLSsJCVBFTV9yZWFkX2JpbzsKLSsJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTNzsKLSsJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKLSsJCVBFTV93cml0ZTsKLSsJCVBFTV93cml0ZV9ESHBhcmFtczsKLSsJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKLSsJCVBFTV93cml0ZV9QS0NTNzsKLSsJCVBFTV93cml0ZV9Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfWDUwOTsKLSsJCVBFTV93cml0ZV9YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9YNTA5X1JFUTsKLSsJCVBFTV93cml0ZV9iaW87Ci0rCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOwotKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OwotKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7Ci0rCQlQS0NTN19ESUdFU1RfZnJlZTsKLSsJCVBLQ1M3X0RJR0VTVF9uZXc7Ci0rCQlQS0NTN19FTkNSWVBUX2ZyZWU7Ci0rCQlQS0NTN19FTkNSWVBUX25ldzsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7Ci0rCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7Ci0rCQlQS0NTN19FTlZFTE9QRV9mcmVlOwotKwkJUEtDUzdfRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OwotKwkJUEtDUzdfU0lHTkVEX2ZyZWU7Ci0rCQlQS0NTN19TSUdORURfbmV3OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfZHVwOwotKwkJUEtDUzdfZnJlZTsKLSsJCVBLQ1M3X25ldzsKLSsJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX2ZyZWU7Ci0rCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX25ldzsKLSsJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7Ci0rCQlQUk9YWV9hZGRfbm9wcm94eTsKLSsJCVBST1hZX2FkZF9zZXJ2ZXI7Ci0rCQlQUk9YWV9jaGVja19ieV9ob3N0OwotKwkJUFJPWFlfY2hlY2tfdXJsOwotKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX2ZyZWU7Ci0rCQlQUk9YWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX2dldF9wcm94aWVzOwotKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OwotKwkJUFJPWFlfbG9hZF9jb25mOwotKwkJUFJPWFlfbmV3OwotKwkJUFJPWFlfcHJpbnQ7Ci0rCQlSQU5EX2J5dGVzOwotKwkJUkFORF9jbGVhbnVwOwotKwkJUkFORF9maWxlX25hbWU7Ci0rCQlSQU5EX2xvYWRfZmlsZTsKLSsJCVJBTkRfc2NyZWVuOwotKwkJUkFORF9zZWVkOwotKwkJUkFORF93cml0ZV9maWxlOwotKwkJUkMyX2NiY19lbmNyeXB0OwotKwkJUkMyX2NmYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZWNiX2VuY3J5cHQ7Ci0rCQlSQzJfZW5jcnlwdDsKLSsJCVJDMl9vZmI2NF9lbmNyeXB0OwotKwkJUkMyX3NldF9rZXk7Ci0rCQlSQzQ7Ci0rCQlSQzRfb3B0aW9uczsKLSsJCVJDNF9zZXRfa2V5OwotKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7Ci0rCQlSU0FQcml2YXRlS2V5X2R1cDsKLSsJCVJTQVB1YmxpY0tleV9kdXA7Ci0rCQlSU0FfUEtDUzFfU1NMZWF5OwotKwkJUlNBX2ZyZWU7Ci0rCQlSU0FfZ2VuZXJhdGVfa2V5OwotKwkJUlNBX25ldzsKLSsJCVJTQV9uZXdfbWV0aG9kOwotKwkJUlNBX3ByaW50OwotKwkJUlNBX3ByaW50X2ZwOwotKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKLSsJCVJTQV9wcml2YXRlX2VuY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2RlY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2VuY3J5cHQ7Ci0rCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUlNBX3NpZ247Ci0rCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKLSsJCVJTQV9zaXplOwotKwkJUlNBX3ZlcmlmeTsKLSsJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlTSEE7Ci0rCQlTSEExOwotKwkJU0hBMV9GaW5hbDsKLSsJCVNIQTFfSW5pdDsKLSsJCVNIQTFfVXBkYXRlOwotKwkJU0hBX0ZpbmFsOwotKwkJU0hBX0luaXQ7Ci0rCQlTSEFfVXBkYXRlOwotKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKLSsJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOwotKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKLSsJCVRYVF9EQl9mcmVlOwotKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKLSsJCVRYVF9EQl9pbnNlcnQ7Ci0rCQlUWFRfREJfcmVhZDsKLSsJCVRYVF9EQl93cml0ZTsKLSsJCVg1MDlfQUxHT1JfZnJlZTsKLSsJCVg1MDlfQUxHT1JfbmV3OwotKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKLSsJCVg1MDlfQVRUUklCVVRFX25ldzsKLSsJCVg1MDlfQ0lORl9mcmVlOwotKwkJWDUwOV9DSU5GX25ldzsKLSsJCVg1MDlfQ1JMX0lORk9fZnJlZTsKLSsJCVg1MDlfQ1JMX0lORk9fbmV3OwotKwkJWDUwOV9DUkxfYWRkX2V4dDsKLSsJCVg1MDlfQ1JMX2NtcDsKLSsJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X0NSTF9kdXA7Ci0rCQlYNTA5X0NSTF9mcmVlOwotKwkJWDUwOV9DUkxfZ2V0X2V4dDsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfQ1JMX25ldzsKLSsJCVg1MDlfQ1JMX3NpZ247Ci0rCQlYNTA5X0NSTF92ZXJpZnk7Ci0rCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfRVhURU5TSU9OX2R1cDsKLSsJCVg1MDlfRVhURU5TSU9OX2ZyZWU7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7Ci0rCQlYNTA5X0VYVEVOU0lPTl9uZXc7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7Ci0rCQlYNTA5X0lORk9fZnJlZTsKLSsJCVg1MDlfSU5GT19uZXc7Ci0rCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKLSsJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OwotKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKLSsJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X0xPT0tVUF9jdHJsOwotKwkJWDUwOV9MT09LVVBfZmlsZTsKLSsJCVg1MDlfTE9PS1VQX2ZyZWU7Ci0rCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKLSsJCVg1MDlfTE9PS1VQX2luaXQ7Ci0rCQlYNTA5X0xPT0tVUF9uZXc7Ci0rCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X05BTUVfRU5UUllfZHVwOwotKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9FTlRSWV9uZXc7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnk7Ci0rCQlYNTA5X05BTUVfY21wOwotKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKLSsJCVg1MDlfTkFNRV9kaWdlc3Q7Ci0rCQlYNTA5X05BTUVfZHVwOwotKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OwotKwkJWDUwOV9OQU1FX2ZyZWU7Ci0rCQlYNTA5X05BTUVfZ2V0X2VudHJ5OwotKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOwotKwkJWDUwOV9OQU1FX2hhc2g7Ci0rCQlYNTA5X05BTUVfbmV3OwotKwkJWDUwOV9OQU1FX29uZWxpbmU7Ci0rCQlYNTA5X05BTUVfcHJpbnQ7Ci0rCQlYNTA5X05BTUVfc2V0OwotKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKLSsJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7Ci0rCQlYNTA5X1BLRVlfZnJlZTsKLSsJCVg1MDlfUEtFWV9uZXc7Ci0rCQlYNTA5X1BVQktFWV9mcmVlOwotKwkJWDUwOV9QVUJLRVlfZ2V0OwotKwkJWDUwOV9QVUJLRVlfbmV3OwotKwkJWDUwOV9QVUJLRVlfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19mcmVlOwotKwkJWDUwOV9SRVFfSU5GT19uZXc7Ci0rCQlYNTA5X1JFUV9kdXA7Ci0rCQlYNTA5X1JFUV9mcmVlOwotKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKLSsJCVg1MDlfUkVRX25ldzsKLSsJCVg1MDlfUkVRX3ByaW50OwotKwkJWDUwOV9SRVFfcHJpbnRfZnA7Ci0rCQlYNTA5X1JFUV9zZXRfcHVia2V5OwotKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfUkVRX3NldF92ZXJzaW9uOwotKwkJWDUwOV9SRVFfc2lnbjsKLSsJCVg1MDlfUkVRX3RvX1g1MDk7Ci0rCQlYNTA5X1JFUV92ZXJpZnk7Ci0rCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X1JFVk9LRURfbmV3OwotKwkJWDUwOV9TSUdfZnJlZTsKLSsJCVg1MDlfU0lHX25ldzsKLSsJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7Ci0rCQlYNTA5X1NUT1JFX0NUWF9pbml0OwotKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKLSsJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKLSsJCVg1MDlfU1RPUkVfZnJlZTsKLSsJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7Ci0rCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOwotKwkJWDUwOV9TVE9SRV9uZXc7Ci0rCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOwotKwkJWDUwOV9WQUxfZnJlZTsKLSsJCVg1MDlfVkFMX25ldzsKLSsJCVg1MDlfYWRkX2V4dDsKLSsJCVg1MDlfYXNuMV9tZXRoOwotKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOwotKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKLSsJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKLSsJCVg1MDlfZGVsZXRlX2V4dDsKLSsJCVg1MDlfZGlnZXN0OwotKwkJWDUwOV9kdXA7Ci0rCQlYNTA5X2ZyZWU7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OwotKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKLSsJCVg1MDlfZ2V0X2V4dDsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7Ci0rCQlYNTA5X2dldF9wdWJrZXk7Ci0rCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKLSsJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfZ210aW1lX2FkajsKLSsJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOwotKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7Ci0rCQlYNTA5X2xvYWRfY2VydF9maWxlOwotKwkJWDUwOV9uZXc7Ci0rCQlYNTA5X3ByaW50OwotKwkJWDUwOV9wcmludF9mcDsKLSsJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOwotKwkJWDUwOV9zZXRfbm90QWZ0ZXI7Ci0rCQlYNTA5X3NldF9ub3RCZWZvcmU7Ci0rCQlYNTA5X3NldF9wdWJrZXk7Ci0rCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7Ci0rCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7Ci0rCQlYNTA5X3NldF92ZXJzaW9uOwotKwkJWDUwOV9zaWduOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKLSsJCVg1MDlfdG9fWDUwOV9SRVE7Ci0rCQlYNTA5X3ZlcmlmeTsKLSsJCVg1MDlfdmVyaWZ5X2NlcnQ7Ci0rCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKLSsJCVg1MDl2M19hZGRfZXh0OwotKwkJWDUwOXYzX2FkZF9leHRlbnNpb247Ci0rCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOwotKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKLSsJCVg1MDl2M19kZWxldGVfZXh0OwotKwkJWDUwOXYzX2dldF9leHQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDl2M19nZXRfZXh0X2NvdW50OwotKwkJWDUwOXYzX3BhY2tfc3RyaW5nOwotKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKLSsJCVg1MDl2M191bnBhY2tfc3RyaW5nOwotKwkJX2Rlc19jcnlwdDsKLSsJCWEyZF9BU04xX09CSkVDVDsKLSsJCWEyaV9BU04xX0lOVEVHRVI7Ci0rCQlhMmlfQVNOMV9TVFJJTkc7Ci0rCQlhc24xX0ZpbmlzaDsKLSsJCWFzbjFfR2V0U2VxdWVuY2U7Ci0rCQlibl9kaXZfd29yZHM7Ci0rCQlibl9leHBhbmQyOwotKwkJYm5fbXVsX2FkZF93b3JkczsKLSsJCWJuX211bF93b3JkczsKLSsJCUJOX3VhZGQ7Ci0rCQlCTl91c3ViOwotKwkJYm5fc3FyX3dvcmRzOwotKwkJX29zc2xfb2xkX2NyeXB0OwotKwkJZDJpX0FTTjFfQklUX1NUUklORzsKLSsJCWQyaV9BU04xX0JPT0xFQU47Ci0rCQlkMmlfQVNOMV9IRUFERVI7Ci0rCQlkMmlfQVNOMV9JQTVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9JTlRFR0VSOwotKwkJZDJpX0FTTjFfT0JKRUNUOwotKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOwotKwkJZDJpX0FTTjFfU0VUOwotKwkJZDJpX0FTTjFfVDYxU1RSSU5HOwotKwkJZDJpX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1VUQ1RJTUU7Ci0rCQlkMmlfQVNOMV9ieXRlczsKLSsJCWQyaV9BU04xX3R5cGVfYnl0ZXM7Ci0rCQlkMmlfREhwYXJhbXM7Ci0rCQlkMmlfRFNBUHJpdmF0ZUtleTsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX0RTQVB1YmxpY0tleTsKLSsJCWQyaV9EU0FwYXJhbXM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLQUM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLSTsKLSsJCWQyaV9OZXRzY2FwZV9SU0E7Ci0rCQlkMmlfUEtDUzc7Ci0rCQlkMmlfUEtDUzdfRElHRVNUOwotKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7Ci0rCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7Ci0rCQlkMmlfUEtDUzdfRU5WRUxPUEU7Ci0rCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7Ci0rCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWQyaV9QS0NTN19TSUdORUQ7Ci0rCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKLSsJCWQyaV9QS0NTN19iaW87Ci0rCQlkMmlfUEtDUzdfZnA7Ci0rCQlkMmlfUHJpdmF0ZUtleTsKLSsJCWQyaV9QdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHJpdmF0ZUtleTsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9YNTA5OwotKwkJZDJpX1g1MDlfQUxHT1I7Ci0rCQlkMmlfWDUwOV9BVFRSSUJVVEU7Ci0rCQlkMmlfWDUwOV9DSU5GOwotKwkJZDJpX1g1MDlfQ1JMOwotKwkJZDJpX1g1MDlfQ1JMX0lORk87Ci0rCQlkMmlfWDUwOV9DUkxfYmlvOwotKwkJZDJpX1g1MDlfQ1JMX2ZwOwotKwkJZDJpX1g1MDlfRVhURU5TSU9OOwotKwkJZDJpX1g1MDlfTkFNRTsKLSsJCWQyaV9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfWDUwOV9QS0VZOwotKwkJZDJpX1g1MDlfUFVCS0VZOwotKwkJZDJpX1g1MDlfUkVROwotKwkJZDJpX1g1MDlfUkVRX0lORk87Ci0rCQlkMmlfWDUwOV9SRVFfYmlvOwotKwkJZDJpX1g1MDlfUkVRX2ZwOwotKwkJZDJpX1g1MDlfUkVWT0tFRDsKLSsJCWQyaV9YNTA5X1NJRzsKLSsJCWQyaV9YNTA5X1ZBTDsKLSsJCWQyaV9YNTA5X2JpbzsKLSsJCWQyaV9YNTA5X2ZwOwotKwkJREVTX2NiY19ja3N1bTsKLSsJCURFU19jYmNfZW5jcnlwdDsKLSsJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKLSsJCURFU19jZmI2NF9lbmNyeXB0OwotKwkJREVTX2NmYl9lbmNyeXB0OwotKwkJREVTX2RlY3J5cHQzOwotKwkJREVTX2VjYjNfZW5jcnlwdDsKLSsJCURFU19lY2JfZW5jcnlwdDsKLSsJCURFU19lZGUzX2NiY19lbmNyeXB0OwotKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfZW5jX3JlYWQ7Ci0rCQlERVNfZW5jX3dyaXRlOwotKwkJREVTX2VuY3J5cHQxOwotKwkJREVTX2VuY3J5cHQyOwotKwkJREVTX2VuY3J5cHQzOwotKwkJREVTX2ZjcnlwdDsKLSsJCURFU19pc193ZWFrX2tleTsKLSsJCURFU19rZXlfc2NoZWQ7Ci0rCQlERVNfbmNiY19lbmNyeXB0OwotKwkJREVTX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfb2ZiX2VuY3J5cHQ7Ci0rCQlERVNfb3B0aW9uczsKLSsJCURFU19wY2JjX2VuY3J5cHQ7Ci0rCQlERVNfcXVhZF9ja3N1bTsKLSsJCURFU19yYW5kb21fa2V5OwotKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKLSsJCURFU19zZXRfa2V5OwotKwkJREVTX3NldF9vZGRfcGFyaXR5OwotKwkJREVTX3N0cmluZ190b18ya2V5czsKLSsJCURFU19zdHJpbmdfdG9fa2V5OwotKwkJREVTX3hjYmNfZW5jcnlwdDsKLSsJCURFU194d2hpdGVfaW4yb3V0OwotKwkJZmNyeXB0X2JvZHk7Ci0rCQlpMmFfQVNOMV9JTlRFR0VSOwotKwkJaTJhX0FTTjFfT0JKRUNUOwotKwkJaTJhX0FTTjFfU1RSSU5HOwotKwkJaTJkX0FTTjFfQklUX1NUUklORzsKLSsJCWkyZF9BU04xX0JPT0xFQU47Ci0rCQlpMmRfQVNOMV9IRUFERVI7Ci0rCQlpMmRfQVNOMV9JQTVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfT0JKRUNUOwotKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJaTJkX0FTTjFfUFJJTlRBQkxFOwotKwkJaTJkX0FTTjFfU0VUOwotKwkJaTJkX0FTTjFfVFlQRTsKLSsJCWkyZF9BU04xX1VUQ1RJTUU7Ci0rCQlpMmRfQVNOMV9ieXRlczsKLSsJCWkyZF9ESHBhcmFtczsKLSsJCWkyZF9EU0FQcml2YXRlS2V5OwotKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfRFNBUHVibGljS2V5OwotKwkJaTJkX0RTQXBhcmFtczsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtJOwotKwkJaTJkX05ldHNjYXBlX1JTQTsKLSsJCWkyZF9QS0NTNzsKLSsJCWkyZF9QS0NTN19ESUdFU1Q7Ci0rCQlpMmRfUEtDUzdfRU5DUllQVDsKLSsJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKLSsJCWkyZF9QS0NTN19FTlZFTE9QRTsKLSsJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKLSsJCWkyZF9QS0NTN19SRUNJUF9JTkZPOwotKwkJaTJkX1BLQ1M3X1NJR05FRDsKLSsJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOwotKwkJaTJkX1BLQ1M3X2JpbzsKLSsJCWkyZF9QS0NTN19mcDsKLSsJCWkyZF9Qcml2YXRlS2V5OwotKwkJaTJkX1B1YmxpY0tleTsKLSsJCWkyZF9SU0FQcml2YXRlS2V5OwotKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUlNBUHVibGljS2V5OwotKwkJaTJkX1g1MDk7Ci0rCQlpMmRfWDUwOV9BTEdPUjsKLSsJCWkyZF9YNTA5X0FUVFJJQlVURTsKLSsJCWkyZF9YNTA5X0NJTkY7Ci0rCQlpMmRfWDUwOV9DUkw7Ci0rCQlpMmRfWDUwOV9DUkxfSU5GTzsKLSsJCWkyZF9YNTA5X0NSTF9iaW87Ci0rCQlpMmRfWDUwOV9DUkxfZnA7Ci0rCQlpMmRfWDUwOV9FWFRFTlNJT047Ci0rCQlpMmRfWDUwOV9OQU1FOwotKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWkyZF9YNTA5X1BLRVk7Ci0rCQlpMmRfWDUwOV9QVUJLRVk7Ci0rCQlpMmRfWDUwOV9SRVE7Ci0rCQlpMmRfWDUwOV9SRVFfSU5GTzsKLSsJCWkyZF9YNTA5X1JFUV9iaW87Ci0rCQlpMmRfWDUwOV9SRVFfZnA7Ci0rCQlpMmRfWDUwOV9SRVZPS0VEOwotKwkJaTJkX1g1MDlfU0lHOwotKwkJaTJkX1g1MDlfVkFMOwotKwkJaTJkX1g1MDlfYmlvOwotKwkJaTJkX1g1MDlfZnA7Ci0rCQlpZGVhX2NiY19lbmNyeXB0OwotKwkJaWRlYV9jZmI2NF9lbmNyeXB0OwotKwkJaWRlYV9lY2JfZW5jcnlwdDsKLSsJCWlkZWFfZW5jcnlwdDsKLSsJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKLSsJCWlkZWFfb3B0aW9uczsKLSsJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OwotKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7Ci0rCQlsaF9kZWxldGU7Ci0rCQlsaF9kb2FsbDsKLSsJCWxoX2RvYWxsX2FyZzsKLSsJCWxoX2ZyZWU7Ci0rCQlsaF9pbnNlcnQ7Ci0rCQlsaF9uZXc7Ci0rCQlsaF9ub2RlX3N0YXRzOwotKwkJbGhfbm9kZV9zdGF0c19iaW87Ci0rCQlsaF9ub2RlX3VzYWdlX3N0YXRzOwotKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87Ci0rCQlsaF9yZXRyaWV2ZTsKLSsJCWxoX3N0YXRzOwotKwkJbGhfc3RhdHNfYmlvOwotKwkJbGhfc3RyaGFzaDsKLSsJCXNrX2RlbGV0ZTsKLSsJCXNrX2RlbGV0ZV9wdHI7Ci0rCQlza19kdXA7Ci0rCQlza19maW5kOwotKwkJc2tfZnJlZTsKLSsJCXNrX2luc2VydDsKLSsJCXNrX25ldzsKLSsJCXNrX3BvcDsKLSsJCXNrX3BvcF9mcmVlOwotKwkJc2tfcHVzaDsKLSsJCXNrX3NldF9jbXBfZnVuYzsKLSsJCXNrX3NoaWZ0OwotKwkJc2tfdW5zaGlmdDsKLSsJCXNrX3plcm87Ci0rCQlCSU9fZl9uYmlvX3Rlc3Q7Ci0rCQlBU04xX1RZUEVfZ2V0OwotKwkJQVNOMV9UWVBFX3NldDsKLSsJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7Ci0rCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7Ci0rCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKLSsJCVBLQ1M3X2N0cmw7Ci0rCQlQS0NTN19zZXRfdHlwZTsKLSsJCVBLQ1M3X3NldF9jb250ZW50OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OwotKwkJUEtDUzdfYWRkX3NpZ25lcjsKLSsJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKLSsJCVBLQ1M3X2FkZF9jcmw7Ci0rCQlQS0NTN19jb250ZW50X25ldzsKLSsJCVBLQ1M3X2RhdGFTaWduOwotKwkJUEtDUzdfZGF0YVZlcmlmeTsKLSsJCVBLQ1M3X2RhdGFJbml0OwotKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKLSsJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKLSsJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKLSsJCUVWUF9kZWxldGVfYWxpYXM7Ci0rCQlFVlBfbWRjMjsKLSsJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOwotKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87Ci0rCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OwotKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKLSsJCWkyZF9SU0FQdWJsaWNLZXlfZnA7Ci0rCQlCSU9fY29weV9uZXh0X3JldHJ5OwotKwkJUlNBX2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9hZGRfY3JsOwotKwkJWDUwOV9sb2FkX2NybF9maWxlOwotKwkJRVZQX3JjMl80MF9jYmM7Ci0rCQlFVlBfcmM0XzQwOwotKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKLSsJCUhNQUM7Ci0rCQlITUFDX0luaXQ7Ci0rCQlITUFDX1VwZGF0ZTsKLSsJCUhNQUNfRmluYWw7Ci0rCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKLSsJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOwotKwkJSE1BQ19jbGVhbnVwOwotKwkJQklPX3B0cl9jdHJsOwotKwkJQklPX25ld19maWxlX2ludGVybmFsOwotKwkJQklPX25ld19mcF9pbnRlcm5hbDsKLSsJCUJJT19zX2ZpbGVfaW50ZXJuYWw7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0OwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OwotKwkJQk5fQkxJTkRJTkdfdXBkYXRlOwotKwkJUlNBX2JsaW5kaW5nX29uOwotKwkJUlNBX2JsaW5kaW5nX29mZjsKLSsJCWkydF9BU04xX09CSkVDVDsKLSsJCUJOX0JMSU5ESU5HX25ldzsKLSsJCUJOX0JMSU5ESU5HX2ZyZWU7Ci0rCQlFVlBfY2FzdDVfY2JjOwotKwkJRVZQX2Nhc3Q1X2NmYjY0OwotKwkJRVZQX2Nhc3Q1X2VjYjsKLSsJCUVWUF9jYXN0NV9vZmI7Ci0rCQlCRl9kZWNyeXB0OwotKwkJQ0FTVF9zZXRfa2V5OwotKwkJQ0FTVF9lbmNyeXB0OwotKwkJQ0FTVF9kZWNyeXB0OwotKwkJQ0FTVF9lY2JfZW5jcnlwdDsKLSsJCUNBU1RfY2JjX2VuY3J5cHQ7Ci0rCQlDQVNUX2NmYjY0X2VuY3J5cHQ7Ci0rCQlDQVNUX29mYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZGVjcnlwdDsKLSsJCU9CSl9jcmVhdGVfb2JqZWN0czsKLSsJCUJOX2V4cDsKLSsJCUJOX211bF93b3JkOwotKwkJQk5fc3ViX3dvcmQ7Ci0rCQlCTl9kZWMyYm47Ci0rCQlCTl9ibjJkZWM7Ci0rCQlCSU9fZ2hibl9jdHJsOwotKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKLSsJCUNSWVBUT19nZXRfZXhfZGF0YTsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YTsKLSsJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOwotKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7Ci0rCQlFVlBfUEtFWV9iaXRzOwotKwkJTUQ1X1RyYW5zZm9ybTsKLSsJCVNIQTFfVHJhbnNmb3JtOwotKwkJU0hBX1RyYW5zZm9ybTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7Ci0rCQlDUllQVE9fZHVwX2V4X2RhdGE7Ci0rCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7Ci0rCQlDUllQVE9fbmV3X2V4X2RhdGE7Ci0rCQlSU0Ffc2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKLSsJCVJTQV9wYWRkaW5nX2FkZF9ub25lOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKLSsJCWJuX2FkZF93b3JkczsKLSsJCWQyaV9OZXRzY2FwZV9SU0FfMjsKLSsJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OwotKwkJUklQRU1EMTYwX0luaXQ7Ci0rCQlSSVBFTUQxNjBfVXBkYXRlOwotKwkJUklQRU1EMTYwX0ZpbmFsOwotKwkJUklQRU1EMTYwOwotKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKLSsJCVJDNV8zMl9zZXRfa2V5OwotKwkJUkM1XzMyX2VjYl9lbmNyeXB0OwotKwkJUkM1XzMyX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfZGVjcnlwdDsKLSsJCVJDNV8zMl9jYmNfZW5jcnlwdDsKLSsJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OwotKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7Ci0rCQlCTl9ibjJtcGk7Ci0rCQlCTl9tcGkyYm47Ci0rCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OwotKwkJQklPX2dldF9leF9kYXRhOwotKwkJQklPX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCSU9fc2V0X2V4X2RhdGE7Ci0rCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKLSsJCVg1MDl2M19zZXRfa2V5X3VzYWdlOwotKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7Ci0rCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKLSsJCUVWUF9QS0VZX2RlY3J5cHQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0OwotKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7Ci0rCQlQS0NTN19hZGRfcmVjaXBpZW50OwotKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOwotKwkJUEtDUzdfc2V0X2NpcGhlcjsKLSsJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOwotKwkJRVJSX2FkZF9lcnJvcl9kYXRhOwotKwkJRVJSX3NldF9lcnJvcl9kYXRhOwotKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOwotKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOwotKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKLSsJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOwotKwkJYXNuMV9hZGRfZXJyb3I7Ci0rCQlkMmlfQVNOMV9CTVBTVFJJTkc7Ci0rCQlpMmRfQVNOMV9CTVBTVFJJTkc7Ci0rCQlCSU9fZl9iZXI7Ci0rCQlCTl9pbml0OwotKwkJQ09NUF9DVFhfbmV3OwotKwkJQ09NUF9DVFhfZnJlZTsKLSsJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOwotKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCU9CSl9OQU1FX2FkZDsKLSsJCUJJT19zb2NrZXRfbmJpbzsKLSsJCUVWUF9yYzJfNjRfY2JjOwotKwkJT0JKX05BTUVfY2xlYW51cDsKLSsJCU9CSl9OQU1FX2dldDsKLSsJCU9CSl9OQU1FX2luaXQ7Ci0rCQlPQkpfTkFNRV9uZXdfaW5kZXg7Ci0rCQlPQkpfTkFNRV9yZW1vdmU7Ci0rCQlCTl9NT05UX0NUWF9jb3B5OwotKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOwotKwkJUkFORF9TU0xlYXk7Ci0rCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKLSsJCVJTQV9tZW1vcnlfbG9jazsKLSsJCWJuX3N1Yl93b3JkczsKLSsJCWJuX211bF9ub3JtYWw7Ci0rCQlibl9tdWxfY29tYmE4OwotKwkJYm5fbXVsX2NvbWJhNDsKLSsJCWJuX3Nxcl9ub3JtYWw7Ci0rCQlibl9zcXJfY29tYmE4OwotKwkJYm5fc3FyX2NvbWJhNDsKLSsJCWJuX2NtcF93b3JkczsKLSsJCWJuX211bF9yZWN1cnNpdmU7Ci0rCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7Ci0rCQlibl9zcXJfcmVjdXJzaXZlOwotKwkJYm5fbXVsX2xvd19ub3JtYWw7Ci0rCQlCTl9SRUNQX0NUWF9pbml0OwotKwkJQk5fUkVDUF9DVFhfbmV3OwotKwkJQk5fUkVDUF9DVFhfZnJlZTsKLSsJCUJOX1JFQ1BfQ1RYX3NldDsKLSsJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKLSsJCUJOX21vZF9leHBfcmVjcDsKLSsJCUJOX2Rpdl9yZWNwOwotKwkJQk5fQ1RYX2luaXQ7Ci0rCQlCTl9NT05UX0NUWF9pbml0OwotKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7Ci0rCQlQS0NTN19hZGRfYXR0cmlidXRlOwotKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOwotKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKLSsJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOwotKwkJQ09NUF9jb21wcmVzc19ibG9jazsKLSsJCUNPTVBfZXhwYW5kX2Jsb2NrOwotKwkJQ09NUF9ybGU7Ci0rCQlDT01QX3psaWI7Ci0rCQltc190aW1lX2RpZmY7Ci0rCQltc190aW1lX25ldzsKLSsJCW1zX3RpbWVfZnJlZTsKLSsJCW1zX3RpbWVfY21wOwotKwkJbXNfdGltZV9nZXQ7Ci0rCQlQS0NTN19zZXRfYXR0cmlidXRlczsKLSsJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKLSsJCVg1MDlfQVRUUklCVVRFX2R1cDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOwotKwkJQVNOMV9USU1FX3ByaW50OwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKLSsJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7Ci0rCQlPQkpfdHh0Mm9iajsKLSsJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKLSsJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROwotKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROwotKwkJWDUwOVYzX0VYVF9hZGQ7Ci0rCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKLSsJCVg1MDlWM19FWFRfYWRkX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NsZWFudXA7Ci0rCQlYNTA5VjNfRVhUX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NvbmZfbmlkOwotKwkJWDUwOVYzX0VYVF9nZXQ7Ci0rCQlYNTA5VjNfRVhUX2dldF9uaWQ7Ci0rCQlYNTA5VjNfRVhUX3ByaW50OwotKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKLSsJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKLSsJCVg1MDlWM19hZGRfdmFsdWU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKLSsJCVg1MDlWM19jb25mX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKLSsJCVg1MDlWM19wYXJzZV9saXN0OwotKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOwotKwkJZDJpX0FTTjFfVElNRTsKLSsJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKLSsJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJZDJpX2V4dF9rdTsKLSsJCWV4dF9rdV9mcmVlOwotKwkJZXh0X2t1X25ldzsKLSsJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKLSsJCWkyZF9BU04xX1RJTUU7Ci0rCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7Ci0rCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCWkyZF9leHRfa3U7Ci0rCQlFVlBfTURfQ1RYX2NvcHk7Ci0rCQlpMmRfQVNOMV9FTlVNRVJBVEVEOwotKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7Ci0rCQlBU04xX0VOVU1FUkFURURfZ2V0OwotKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOwotKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOwotKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWEyaV9BU04xX0VOVU1FUkFURUQ7Ci0rCQlpMmRfR0VORVJBTF9OQU1FOwotKwkJZDJpX0dFTkVSQUxfTkFNRTsKLSsJCUdFTkVSQUxfTkFNRV9uZXc7Ci0rCQlHRU5FUkFMX05BTUVfZnJlZTsKLSsJCUdFTkVSQUxfTkFNRVNfbmV3OwotKwkJR0VORVJBTF9OQU1FU19mcmVlOwotKwkJZDJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMmRfR0VORVJBTF9OQU1FUzsKLSsJCWkydl9HRU5FUkFMX05BTUVTOwotKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOwotKwkJaGV4X3RvX3N0cmluZzsKLSsJCXN0cmluZ190b19oZXg7Ci0rCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7Ci0rCQlYNTA5X0NSTF9wcmludF9mcDsKLSsJCVg1MDlfQ1JMX3ByaW50OwotKwkJaTJ2X0dFTkVSQUxfTkFNRTsKLSsJCXYyaV9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOwotKwkJdjJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnNfQVNOMV9JTlRFR0VSOwotKwkJWDUwOVYzX0VYVF9kMmk7Ci0rCQluYW1lX2NtcDsKLSsJCXN0cl9kdXA7Ci0rCQlpMnNfQVNOMV9FTlVNRVJBVEVEOwotKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKLSsJCUJJT19zX2xvZzsKLSsJCUJJT19mX3JlbGlhYmxlOwotKwkJUEtDUzdfZGF0YUZpbmFsOwotKwkJUEtDUzdfZGF0YURlY29kZTsKLSsJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOwotKwkJQk5fc2V0X3BhcmFtczsKLSsJCUJOX2dldF9wYXJhbXM7Ci0rCQlCSU9fZ2V0X2V4X251bTsKLSsJCUJJT19zZXRfZXhfZnJlZV9mdW5jOwotKwkJRVZQX3JpcGVtZDE2MDsKLSsJCUFTTjFfVElNRV9zZXQ7Ci0rCQlpMmRfQVVUSE9SSVRZX0tFWUlEOwotKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKLSsJCUFVVEhPUklUWV9LRVlJRF9uZXc7Ci0rCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKLSsJCUFTTjFfc2VxX3VucGFjazsKLSsJCUFTTjFfc2VxX3BhY2s7Ci0rCQlBU04xX3VucGFja19zdHJpbmc7Ci0rCQlBU04xX3BhY2tfc3RyaW5nOwotKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKLSsJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKLSsJCVBLQ1M4X2VuY3J5cHQ7Ci0rCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKLSsJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKLSsJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKLSsJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKLSsJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOwotKwkJUEtDUzEyX3BiZV9jcnlwdDsKLSsJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKLSsJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKLSsJCVBLQ1MxMl9pbml0OwotKwkJUEtDUzEyX2tleV9nZW5fYXNjOwotKwkJUEtDUzEyX2tleV9nZW5fdW5pOwotKwkJUEtDUzEyX2dlbl9tYWM7Ci0rCQlQS0NTMTJfdmVyaWZ5X21hYzsKLSsJCVBLQ1MxMl9zZXRfbWFjOwotKwkJUEtDUzEyX3NldHVwX21hYzsKLSsJCU9QRU5TU0xfYXNjMnVuaTsKLSsJCU9QRU5TU0xfdW5pMmFzYzsKLSsJCWkyZF9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX25ldzsKLSsJCWQyaV9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyOwotKwkJZDJpX1BLQ1MxMjsKLSsJCVBLQ1MxMl9uZXc7Ci0rCQlQS0NTMTJfZnJlZTsKLSsJCWkyZF9QS0NTMTJfTUFDX0RBVEE7Ci0rCQlQS0NTMTJfTUFDX0RBVEFfbmV3OwotKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKLSsJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOwotKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfbmV3OwotKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOwotKwkJUEtDUzEyX1BCRV9hZGQ7Ci0rCQlQS0NTOF9hZGRfa2V5dXNhZ2U7Ci0rCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOwotKwkJUEtDUzEyX3BhcnNlOwotKwkJUEtDUzEyX2NyZWF0ZTsKLSsJCWkyZF9QS0NTMTJfYmlvOwotKwkJaTJkX1BLQ1MxMl9mcDsKLSsJCWQyaV9QS0NTMTJfYmlvOwotKwkJZDJpX1BLQ1MxMl9mcDsKLSsJCWkyZF9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX25ldzsKLSsJCWQyaV9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7Ci0rCQlFVlBfUEtDUzgyUEtFWTsKLSsJCUVWUF9QS0VZMlBLQ1M4OwotKwkJUEtDUzhfc2V0X2Jyb2tlbjsKLSsJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKLSsJCUVWUF9QQkVfYWxnX2FkZDsKLSsJCVBLQ1M1X3BiZV9zZXQ7Ci0rCQlFVlBfUEJFX2NsZWFudXA7Ci0rCQlpMmRfU1hORVQ7Ci0rCQlkMmlfU1hORVQ7Ci0rCQlTWE5FVF9uZXc7Ci0rCQlTWE5FVF9mcmVlOwotKwkJaTJkX1NYTkVUSUQ7Ci0rCQlkMmlfU1hORVRJRDsKLSsJCVNYTkVUSURfbmV3OwotKwkJU1hORVRJRF9mcmVlOwotKwkJRFNBX1NJR19uZXc7Ci0rCQlEU0FfU0lHX2ZyZWU7Ci0rCQlEU0FfZG9fc2lnbjsKLSsJCURTQV9kb192ZXJpZnk7Ci0rCQlkMmlfRFNBX1NJRzsKLSsJCWkyZF9EU0FfU0lHOwotKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKLSsJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9VVEY4U1RSSU5HOwotKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKLSsJCWkyZF9ESVJFQ1RPUllTVFJJTkc7Ci0rCQlkMmlfRElSRUNUT1JZU1RSSU5HOwotKwkJaTJkX0RJU1BMQVlURVhUOwotKwkJZDJpX0RJU1BMQVlURVhUOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKLSsJCWkyZF9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX25ldzsKLSsJCWQyaV9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEJFMlBBUkFNOwotKwkJUEJFMlBBUkFNX25ldzsKLSsJCWQyaV9QQkUyUEFSQU07Ci0rCQlQQkUyUEFSQU1fZnJlZTsKLSsJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOwotKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87Ci0rCQlTWE5FVF9hZGRfaWRfYXNjOwotKwkJU1hORVRfYWRkX2lkX3Vsb25nOwotKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7Ci0rCQlTWE5FVF9nZXRfaWRfYXNjOwotKwkJU1hORVRfZ2V0X2lkX3Vsb25nOwotKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7Ci0rCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7Ci0rCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOwotKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7Ci0rCQlpMmRfUE9MSUNZSU5GTzsKLSsJCVBPTElDWUlORk9fbmV3OwotKwkJZDJpX1BPTElDWUlORk87Ci0rCQlQT0xJQ1lJTkZPX2ZyZWU7Ci0rCQlpMmRfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19uZXc7Ci0rCQlkMmlfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19mcmVlOwotKwkJaTJkX1VTRVJOT1RJQ0U7Ci0rCQlVU0VSTk9USUNFX25ldzsKLSsJCWQyaV9VU0VSTk9USUNFOwotKwkJVVNFUk5PVElDRV9mcmVlOwotKwkJaTJkX05PVElDRVJFRjsKLSsJCU5PVElDRVJFRl9uZXc7Ci0rCQlkMmlfTk9USUNFUkVGOwotKwkJTk9USUNFUkVGX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3N0cmluZzsKLSsJCVg1MDlWM19nZXRfc2VjdGlvbjsKLSsJCVg1MDlWM19zdHJpbmdfZnJlZTsKLSsJCVg1MDlWM19zZWN0aW9uX2ZyZWU7Ci0rCQlYNTA5VjNfc2V0X2N0eDsKLSsJCXMyaV9BU04xX0lOVEVHRVI7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19tYWxsb2NfbG9ja2VkOwotKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOwotKwkJQk5fbW9kX2V4cDJfbW9udDsKLSsJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOwotKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKLSsJCVg1MDlfQUxHT1JfZHVwOwotKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKLSsJCWkyZF9DUkxfRElTVF9QT0lOVFM7Ci0rCQlDUkxfRElTVF9QT0lOVFNfbmV3OwotKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7Ci0rCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOwotKwkJaTJkX0RJU1RfUE9JTlQ7Ci0rCQlESVNUX1BPSU5UX25ldzsKLSsJCWQyaV9ESVNUX1BPSU5UOwotKwkJRElTVF9QT0lOVF9mcmVlOwotKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKLSsJCURJU1RfUE9JTlRfTkFNRV9uZXc7Ci0rCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKLSsJCWQyaV9ESVNUX1BPSU5UX05BTUU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKLSsJCVg1MDlWM19FWFRfaTJkOwotKwkJWDUwOVYzX0VYVF92YWxfcHJuOwotKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKLSsJCUVWUF9DSVBIRVJfdHlwZTsKLSsJCUVWUF9QQkVfQ2lwaGVySW5pdDsKLSsJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKLSsJCWQyaV9BU04xX1VJTlRFR0VSOwotKwkJc2tfdmFsdWU7Ci0rCQlza19udW07Ci0rCQlza19zZXQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOwotKwkJc2tfc29ydDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCVBLQ1M1X1BCRV9hZGQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OwotKwkJaTJkX1BLQ1M4X2ZwOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCWQyaV9QS0NTOF9iaW87Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1BLQ1M4OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJZDJpX1BLQ1M4X2ZwOwotKwkJUEVNX3dyaXRlX1BLQ1M4OwotKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzg7Ci0rCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzVfUEJFX2tleWl2Z2VuOwotKwkJaTJkX1BLQ1M4X2JpbzsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJQklPX3NfYmlvOwotKwkJUEtDUzVfcGJlMl9zZXQ7Ci0rCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOwotKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OwotKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKLSsJCUJJT19jdHJsX3BlbmRpbmc7Ci0rCQlCSU9fY3RybF93cGVuZGluZzsKLSsJCUJJT19uZXdfYmlvX3BhaXI7Ci0rCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOwotKwkJQ1JZUFRPX251bV9sb2NrczsKLSsJCUNPTkZfbG9hZF9iaW87Ci0rCQlDT05GX2xvYWRfZnA7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7Ci0rCQlSU0Ffc2V0X21ldGhvZDsKLSsJCVJTQV9nZXRfbWV0aG9kOwotKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJTQV9jaGVja19rZXk7Ci0rCQlPQkpfb2JqMnR4dDsKLSsJCURTQV9kdXBfREg7Ci0rCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKLSsJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKLSsJCUJJT19ud3JpdGU7Ci0rCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOwotKwkJQklPX25yZWFkOwotKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOwotKwkJQklPX253cml0ZTA7Ci0rCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7Ci0rCQlCSU9fbnJlYWQwOwotKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7Ci0rCQlCSU9fbmV3X21lbV9idWY7Ci0rCQlESF9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9tZXRob2Q7Ci0rCQlEU0FfT3BlblNTTDsKLSsJCURIX2dldF9leF9kYXRhOwotKwkJREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCURTQV9uZXdfbWV0aG9kOwotKwkJREhfbmV3X21ldGhvZDsKLSsJCURIX09wZW5TU0w7Ci0rCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9nZXRfZXhfZGF0YTsKLSsJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOwotKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKLSsJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKLSsJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKLSsJCVVURjhfcHV0YzsKLSsJCVVURjhfZ2V0YzsKLSsJCVJTQV9udWxsX21ldGhvZDsKLSsJCUFTTjFfdGFnMnN0cjsKLSsJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKLSsJCURJU1BMQVlURVhUX25ldzsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7Ci0rCQlYNTA5X3NldF9leF9kYXRhOwotKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOwotKwkJWDUwOV9QVVJQT1NFX2dldDA7Ci0rCQlQRU1fcmVhZF9YNTA5X0FVWDsKLSsJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlQRU1fd3JpdGVfUFVCS0VZOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKLSsJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X2NsZWFyOwotKwkJWDUwOV9UUlVTVF9hZGQ7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OwotKwkJWDUwOV9hbGlhc19zZXQxOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDFfRFNBOwotKwkJQVNOMV9CTVBTVFJJTkdfbmV3OwotKwkJQVNOMV9tYnN0cmluZ19jb3B5OwotKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKLSsJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKLSsJCURTQV9zZXRfbWV0aG9kOwotKwkJWDUwOV9nZXRfZXhfZGF0YTsKLSsJCUFTTjFfU1RSSU5HX3R5cGU7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOwotKwkJQVNOMV9USU1FX2ZyZWU7Ci0rCQlBU04xX09DVEVUX1NUUklOR19jbXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmV3OwotKwkJWDUwOV9nZXRfZXh0X2QyaTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKLSsJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKLSsJCUFTTjFfSU5URUdFUl9jbXA7Ci0rCQlkMmlfUlNBX1BVQktFWV9mcDsKLSsJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9mcmVlOwotKwkJRVZQX1BLRVlfc2V0MV9EU0E7Ci0rCQlpMmRfRFNBX1BVQktFWV9mcDsKLSsJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOwotKwkJQVNOMV9USU1FX25ldzsKLSsJCWkyZF9SU0FfUFVCS0VZOwotKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OwotKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKLSsJCWQyaV9YNTA5X0FVWDsKLSsJCWkyZF9EU0FfUFVCS0VZOwotKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKLSsJCVBFTV9yZWFkX0RTQV9QVUJLRVk7Ci0rCQlpMmRfUlNBX1BVQktFWV9iaW87Ci0rCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKLSsJCWkyZF9QVUJLRVk7Ci0rCQlBU04xX1VUQ1RJTUVfZnJlZTsKLSsJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7Ci0rCQlQRU1fcmVhZF9iaW9fUFVCS0VZOwotKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7Ci0rCQlESVNQTEFZVEVYVF9mcmVlOwotKwkJT1RIRVJOQU1FX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfbmV3OwotKwkJWDUwOV9UUlVTVF9jbGVhbnVwOwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7Ci0rCQlQRU1fcmVhZF9QVUJLRVk7Ci0rCQlpMmRfRFNBX1BVQktFWV9iaW87Ci0rCQlpMmRfT1RIRVJOQU1FOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOwotKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKLSsJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOwotKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKLSsJCUFTTjFfU1RSSU5HX2xlbmd0aDsKLSsJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7Ci0rCQlYNTA5VjNfZ2V0X2QyaTsKLSsJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOwotKwkJaTJkX1g1MDlfQ0VSVF9BVVg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9TVE9SRV9DVFhfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9SU0E7Ci0rCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9YNTA5X0FVWDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKLSsJCWQyaV9EU0FfUFVCS0VZX2ZwOwotKwkJZDJpX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKLSsJCVg1MDlfVFJVU1RfZ2V0MDsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOwotKwkJQVNOMV9JQTVTVFJJTkdfbmV3OwotKwkJZDJpX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X2NoZWNrX3B1cnBvc2U7Ci0rCQlBU04xX0VOVU1FUkFURURfbmV3OwotKwkJZDJpX1JTQV9QVUJLRVlfYmlvOwotKwkJZDJpX1BVQktFWTsKLSsJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OwotKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7Ci0rCQlBU04xX0JNUFNUUklOR19mcmVlOwotKwkJQVNOMV9UNjFTVFJJTkdfbmV3OwotKwkJQVNOMV9VVENUSU1FX25ldzsKLSsJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlFVlBfUEtFWV9zZXQxX1JTQTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOwotKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OwotKwkJQ1JZUFRPX2FkZF9pbmZvOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7Ci0rCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9hbGlhc19nZXQwOwotKwkJQVNOMV9TVFJJTkdfZGF0YTsKLSsJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X3NldF9iaXQ7Ci0rCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKLSsJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOwotKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7Ci0rCQlYNTA5X2NoZWNrX3RydXN0OwotKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfYWRkOwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OwotKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7Ci0rCQlkMmlfRFNBX1BVQktFWV9iaW87Ci0rCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKLSsJCWQyaV9PVEhFUk5BTUU7Ci0rCQlYNTA5X3JlamVjdF9zZXRfYml0OwotKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKLSsJCUVWUF9QS0VZX3NldDFfREg7Ci0rCQlBU04xX09DVEVUX1NUUklOR19kdXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfc2V0OwotKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7Ci0rCQlBU04xX0lOVEVHRVJfZnJlZTsKLSsJCU9USEVSTkFNRV9mcmVlOwotKwkJaTJkX1JTQV9QVUJLRVlfZnA7Ci0rCQlBU04xX0lOVEVHRVJfZHVwOwotKwkJZDJpX1g1MDlfQ0VSVF9BVVg7Ci0rCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOwotKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7Ci0rCQlBU04xX21ic3RyaW5nX25jb3B5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9ESDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKLSsJCUFTTjFfSU5URUdFUl9uZXc7Ci0rCQlpMmRfWDUwOV9BVVg7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKLSsJCVg1MDlfY21wOwotKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKLSsJCURJUkVDVE9SWVNUUklOR19uZXc7Ci0rCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OwotKwkJUEtDUzEyX25ld3Bhc3M7Ci0rCQlTTUlNRV93cml0ZV9QS0NTNzsKLSsJCVNNSU1FX3JlYWRfUEtDUzc7Ci0rCQlERVNfc2V0X2tleV9jaGVja2VkOwotKwkJUEtDUzdfdmVyaWZ5OwotKwkJUEtDUzdfZW5jcnlwdDsKLSsJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKLSsJCVNNSU1FX2NybGZfY29weTsKLSsJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKLSsJCVBLQ1M3X2dldDBfc2lnbmVyczsKLSsJCVBLQ1M3X2RlY3J5cHQ7Ci0rCQlTTUlNRV90ZXh0OwotKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOwotKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOwotKwkJUEtDUzdfc2lnbjsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7Ci0rCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOwotKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKLSsJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19pc19tZW1fY2hlY2tfb247Ci0rCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7Ci0rCQlDUllQVE9fcG9wX2luZm87Ci0rCQlDUllQVE9fcHVzaF9pbmZvXzsKLSsJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJQVNOMV9OVUxMX2ZyZWU7Ci0rCQlkMmlfQVNOMV9OVUxMOwotKwkJQVNOMV9OVUxMX25ldzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9BU04xX05VTEw7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKLSsJCVBFTV9jYjsKLSsJCWkyZF9Qcml2YXRlS2V5X2ZwOwotKwkJZDJpX1ByaXZhdGVLZXlfYmlvOwotKwkJZDJpX1ByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUHJpdmF0ZUtleV9iaW87Ci0rCQlYNTA5X3JlamVjdF9jbGVhcjsKLSsJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7Ci0rCQlkMmlfQXV0b1ByaXZhdGVLZXk7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7Ci0rCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7Ci0rCQlYNTA5YXRfZ2V0X2F0dHI7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7Ci0rCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKLSsJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyOwotKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOwotKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOwotKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKLSsJCVJBTkRfYWRkOwotKwkJQklPX251bWJlcl93cml0dGVuOwotKwkJQklPX251bWJlcl9yZWFkOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKLSsJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKLSsJCVJBTkRfcHNldWRvX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHI7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHI7Ci0rCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUJOX3BzZXVkb19yYW5kOwotKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7Ci0rCQlCTl9DVFhfZW5kOwotKwkJQk5fQ1RYX3N0YXJ0OwotKwkJQk5fQ1RYX2dldDsKLSsJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKLSsJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKLSsJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OwotKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKLSsJCURFU19jcnlwdDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOwotKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKLSsJCUJJT19jYWxsYmFja19jdHJsOwotKwkJUkFORF9lZ2Q7Ci0rCQlSQU5EX3N0YXR1czsKLSsJCWJuX2R1bXAxOwotKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7Ci0rCQlsaF9udW1faXRlbXM7Ci0rCQlSQU5EX2V2ZW50OwotKwkJRFNPX25ldzsKLSsJCURTT19uZXdfbWV0aG9kOwotKwkJRFNPX2ZyZWU7Ci0rCQlEU09fZmxhZ3M7Ci0rCQlEU09fdXA7Ci0rCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTT19nZXRfbWV0aG9kOwotKwkJRFNPX3NldF9tZXRob2Q7Ci0rCQlEU09fbG9hZDsKLSsJCURTT19iaW5kX3ZhcjsKLSsJCURTT19NRVRIT0RfbnVsbDsKLSsJCURTT19NRVRIT0Rfb3BlbnNzbDsKLSsJCURTT19NRVRIT0RfZGxmY247Ci0rCQlEU09fTUVUSE9EX3dpbjMyOwotKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7Ci0rCQlEU09fTUVUSE9EX2RsOwotKwkJTkNPTkZfbG9hZDsKLSsJCU5DT05GX2xvYWRfZnA7Ci0rCQlOQ09ORl9uZXc7Ci0rCQlOQ09ORl9nZXRfc3RyaW5nOwotKwkJTkNPTkZfZnJlZTsKLSsJCU5DT05GX2dldF9udW1iZXI7Ci0rCQlDT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9sb2FkX2JpbzsKLSsJCU5DT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9nZXRfc2VjdGlvbjsKLSsJCU5DT05GX2R1bXBfYmlvOwotKwkJQ09ORl9kdW1wX2JpbzsKLSsJCU5DT05GX2ZyZWVfZGF0YTsKLSsJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRVJSX2Vycm9yX3N0cmluZ19uOwotKwkJQklPX3NucHJpbnRmOwotKwkJRFNPX2N0cmw7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OwotKwkJQklPX3ZmcmVlOwotKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKLSsJCUFTTjFfVVRDVElNRV9nZXQ7Ci0rCQlYNTA5X1JFUV9kaWdlc3Q7Ci0rCQlYNTA5X0NSTF9kaWdlc3Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7Ci0rCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKLSsJCVJBTkRfZWdkX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZW1haWxfZnJlZTsKLSsJCWkyZF9SU0FfTkVUOwotKwkJZDJpX1JTQV9ORVRfMjsKLSsJCWQyaV9SU0FfTkVUOwotKwkJRFNPX2JpbmRfZnVuYzsKLSsJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKLSsJCXNrX25ld19udWxsOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKLSsJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKLSsJCWMyaV9BU04xX0JJVF9TVFJJTkc7Ci0rCQlpMmNfQVNOMV9CSVRfU1RSSU5HOwotKwkJUkFORF9wb2xsOwotKwkJYzJpX0FTTjFfSU5URUdFUjsKLSsJCWkyY19BU04xX0lOVEVHRVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnQ7Ci0rCQlBU04xX3BhcnNlX2R1bXA7Ci0rCQljMmlfQVNOMV9PQkpFQ1Q7Ci0rCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7Ci0rCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKLSsJCVg1MDlfTkFNRV9wcmludF9leDsKLSsJCUFTTjFfU1RSSU5HX3ByaW50X2V4OwotKwkJTUQ0OwotKwkJTUQ0X1RyYW5zZm9ybTsKLSsJCU1ENF9GaW5hbDsKLSsJCU1ENF9VcGRhdGU7Ci0rCQlNRDRfSW5pdDsKLSsJCUVWUF9tZDQ7Ci0rCQlpMmRfUFVCS0VZX2JpbzsKLSsJCWkyZF9QVUJLRVlfZnA7Ci0rCQlkMmlfUFVCS0VZX2JpbzsKLSsJCUFTTjFfU1RSSU5HX3RvX1VURjg7Ci0rCQlCSU9fdnByaW50ZjsKLSsJCUJJT192c25wcmludGY7Ci0rCQlkMmlfUFVCS0VZX2ZwOwotKwkJWDUwOV9jbXBfdGltZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7Ci0rCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKLSsJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKLSsJCVg1MDlfdGltZV9hZGo7Ci0rCQlYNTA5X2NoZWNrX2lzc3VlZDsKLSsJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OwotKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOwotKwkJREVTX2NoZWNrX2tleTsKLSsJCURFU19yd19tb2RlOwotKwkJUlNBX1BLQ1MxX1JTQXJlZjsKLSsJCVg1MDlfa2V5aWRfc2V0MTsKLSsJCUJJT19uZXh0OwotKwkJRFNPX01FVEhPRF92bXM7Ci0rCQlCSU9fZl9saW5lYnVmZmVyOwotKwkJQk5fYm50ZXN0X3JhbmQ7Ci0rCQlPUEVOU1NMX2lzc2V0dWdpZDsKLSsJCUJOX3JhbmRfcmFuZ2U7Ci0rCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKLSsJCUVOR0lORV9zZXRfRFNBOwotKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOwotKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOwotKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX3NldF9ESDsKLSsJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2luaXQ7Ci0rCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9maW5pc2g7Ci0rCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OwotKwkJRU5HSU5FX2dldF9ESDsKLSsJCUVOR0lORV9jdHJsOwotKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9nZXRfbmFtZTsKLSsJCUVOR0lORV9nZXRfbGFzdDsKLSsJCUVOR0lORV9nZXRfcHJldjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9nZXRfUlNBOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0OwotKwkJRU5HSU5FX2dldF9SQU5EOwotKwkJRU5HSU5FX2dldF9maXJzdDsKLSsJCUVOR0lORV9ieV9pZDsKLSsJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfc2V0X1JTQTsKLSsJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfcmVtb3ZlOwotKwkJRU5HSU5FX2ZyZWU7Ci0rCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2dldF9uZXh0OwotKwkJRU5HSU5FX3NldF9uYW1lOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfc2V0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X2lkOwotKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9uZXc7Ci0rCQlFTkdJTkVfZ2V0X2lkOwotKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2FkZDsKLSsJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2dldF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7Ci0rCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7Ci0rCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKLSsJCUFTTjFfVVRGOFNUUklOR19pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcnM7Ci0rCQlkMmlfT0NTUF9CQVNJQ1JFU1A7Ci0rCQlLUkI1X0NIRUNLU1VNX2l0OwotKwkJRUNfUE9JTlRfYWRkOwotKwkJQVNOMV9pdGVtX2V4X2kyZDsKLSsJCU9DU1BfQ0VSVElEX2l0OwotKwkJZDJpX09DU1BfUkVTUEJZVEVTOwotKwkJWDUwOVYzX2FkZDFfaTJkOwotKwkJUEtDUzdfRU5WRUxPUEVfaXQ7Ci0rCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKLSsJCVg1MDlWM19FWFRfbmNvbmY7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKLSsJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfcHJpbnRfZXg7Ci0rCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7Ci0rCQlFTkdJTkVfbG9hZF9keW5hbWljOwotKwkJUEJLREYyUEFSQU1faXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OwotKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKLSsJCU9DU1Bfc2VuZHJlcV9iaW87Ci0rCQlBU04xX2l0ZW1fZGlnZXN0OwotKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKLSsJCU9DU1BfU0lHTkFUVVJFX2l0OwotKwkJWDUwOV9DUkxfaXQ7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9FTkNLRVlfaXQ7Ci0rCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKLSsJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7Ci0rCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7Ci0rCQlpMmRfT0NTUF9TRVJWSUNFTE9DOwotKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKLSsJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKLSsJCUFTTjFfVDYxU1RSSU5HX2l0OwotKwkJRUNfR1JPVVBfbWV0aG9kX29mOwotKwkJaTJkX0tSQjVfQVBSRVE7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7Ci0rCQlBU04xX1BSSU5UQUJMRV9uZXc7Ci0rCQlITUFDX0luaXRfZXg7Ci0rCQlkMmlfS1JCNV9BVVRIRU5UOwotKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7Ci0rCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlFQ19QT0lOVF9vY3QycG9pbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2N0cmw7Ci0rCQlfc2hhZG93X0RFU19yd19tb2RlOwotKwkJYXNuMV9kb19hZGI7Ci0rCQlBU04xX3RlbXBsYXRlX2kyZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9ESDsKLSsJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7Ci0rCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKLSsJCVVJX2R1cF9pbnB1dF9zdHJpbmc7Ci0rCQlkMmlfS1JCNV9BUFJFUTsKLSsJCUVWUF9NRF9DVFhfY29weV9leDsKLSsJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7Ci0rCQlpMmRfT0NTUF9SRVFJTkZPOwotKwkJS1JCNV9FTkNLRVlfZnJlZTsKLSsJCU9DU1BfcmVzcF9nZXQwOwotKwkJR0VORVJBTF9OQU1FX2l0OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7Ci0rCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVWT0tFRElORk87Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKLSsJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFVlBfQ2lwaGVyRmluYWxfZXg7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OwotKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7Ci0rCQlPQ1NQX3Jlc3BfZmluZDsKLSsJCUJOX25ubW9kOwotKwkJWDUwOV9DUkxfc29ydDsKLSsJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKLSsJCU9DU1BfU0VSVklDRUxPQ19uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKLSsJCVNYTkVUX2l0OwotKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47Ci0rCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOwotKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7Ci0rCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7Ci0rCQlEU09fY29udmVydF9maWxlbmFtZTsKLSsJCVBPTElDWVFVQUxJTkZPX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOwotKwkJRFNPX3NldF9maWxlbmFtZTsKLSsJCUFTTjFfaXRlbV9mcmVlOwotKwkJS1JCNV9US1RCT0RZX2ZyZWU7Ci0rCQlBVVRIT1JJVFlfS0VZSURfaXQ7Ci0rCQlLUkI1X0FQUkVRQk9EWV9uZXc7Ci0rCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7Ci0rCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOwotKwkJaTJkX09DU1BfUkVTUERBVEE7Ci0rCQlFVlBfTURfQ1RYX2luaXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKLSsJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKLSsJCVVJX2FkZF9lcnJvcl9zdHJpbmc7Ci0rCQlLUkI1X0NIRUNLU1VNX2ZyZWU7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKLSsJCUVOR0lORV9sb2FkX3Vic2VjOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOwotKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7Ci0rCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfaXRlbV91bnBhY2s7Ci0rCQlORVRTQ0FQRV9TUEtBQ19pdDsKLSsJCVg1MDlfUkVWT0tFRF9pdDsKLSsJCUFTTjFfU1RSSU5HX2VuY29kZTsKLSsJCUVWUF9hZXNfMTI4X2VjYjsKLSsJCUtSQjVfQVVUSEVOVF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfY2VydF9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVRVUVTVDsKLSsJCVVJX2R1cF9pbmZvX3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKLSsJCVBLQ1MxMl9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKLSsJCUFTTjFfaXRlbV9pMmQ7Ci0rCQlFVlBfRGVjcnlwdEZpbmFsX2V4OwotKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKLSsJCUVOR0lORV9nZXRfY21kX2RlZm5zOwotKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKLSsJCUVWUF9FbmNyeXB0RmluYWxfZXg7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKLSsJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOwotKwkJYXNuMV9leF9pMmM7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOwotKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7Ci0rCQlYNTA5X0VYVEVOU0lPTl9pdDsKLSsJCWkyZF9LUkI1X0FVVEhFTlQ7Ci0rCQlTWE5FVElEX2l0OwotKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKLSsJCUVESVBBUlRZTkFNRV9uZXc7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5OwotKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OwotKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKLSsJCUVSUl9wcmludF9lcnJvcnNfY2I7Ci0rCQlFTkdJTkVfc2V0X2NpcGhlcnM7Ci0rCQlkMmlfS1JCNV9BUFJFUUJPRFk7Ci0rCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7Ci0rCQlYNTA5X1BVQktFWV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7Ci0rCQlQS0NTN19FTkNSWVBUX2l0OwotKwkJaTJkX09DU1BfUkVTUE9OU0U7Ci0rCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7Ci0rCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKLSsJCWQyaV9LUkI1X0FVVEhEQVRBOwotKwkJT0NTUF9jb3B5X25vbmNlOwotKwkJS1JCNV9BVVRIREFUQV9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX25ldzsKLSsJCUVDX0dGcF9tb250X21ldGhvZDsKLSsJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKLSsJCVVJX2dldF9leF9kYXRhOwotKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKLSsJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOwotKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJWDUwOVYzX3NldF9uY29uZjsKLSsJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OwotKwkJWDUwOV9hZGQxX2V4dF9pMmQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19pdDsKLSsJCUtSQjVfUFJJTkNOQU1FX25ldzsKLSsJCVBLQ1MxMl9TQUZFQkFHX2l0OwotKwkJRUNfR1JPVVBfZ2V0X29yZGVyOwotKwkJZDJpX09DU1BfUkVTUElEOwotKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKLSsJCU5DT05GX2dldF9udW1iZXJfZTsKLSsJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7Ci0rCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOwotKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOwotKwkJaTJkX09DU1BfT05FUkVROwotKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7Ci0rCQlPQ1NQX1JFU1BCWVRFU19uZXc7Ci0rCQlFVlBfTURfQ1RYX2NyZWF0ZTsKLSsJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKLSsJCVg1MDlfQUxHT1JfaXQ7Ci0rCQlBU04xX1RJTUVfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2dldDBfcmVzdWx0OwotKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKLSsJCUVWUF9hZXNfMjU2X2VjYjsKLSsJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfSUE1U1RSSU5HX2l0OwotKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOwotKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKLSsJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOwotKwkJT0NTUF9DRVJUSURfZnJlZTsKLSsJCVg1MDlfQ0VSVF9BVVhfaXQ7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OwotKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7Ci0rCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKLSsJCVg1MDlfQVRUUklCVVRFX2l0OwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlQS0NTMTJfZGVjcnlwdF9za2V5OwotKwkJS1JCNV9BVVRIRU5UX2l0OwotKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKLSsJCVJTQVB1YmxpY0tleV9pdDsKLSsJCWkyZF9PQ1NQX1JFUVVFU1Q7Ci0rCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOwotKwkJT0NTUF9TRVJWSUNFTE9DX2l0OwotKwkJQVNOMV9pdGVtX3NpZ247Ci0rCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7Ci0rCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOwotKwkJaTJkX09DU1BfQkFTSUNSRVNQOwotKwkJaTJkX09DU1BfUkVTUEJZVEVTOwotKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7Ci0rCQlITUFDX0NUWF9pbml0OwotKwkJRU5HSU5FX2dldF9kaWdlc3Q7Ci0rCQlPQ1NQX1JFU1BPTlNFX3ByaW50OwotKwkJS1JCNV9US1RCT0RZX2l0OwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7Ci0rCQlQQkUyUEFSQU1faXQ7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOwotKwkJUEtDUzdfU0lHTkVEX2l0OwotKwkJRU5HSU5FX2dldF9jaXBoZXI7Ci0rCQlpMmRfT0NTUF9DUkxJRDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9uZXc7Ci0rCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7Ci0rCQlSU0FfdXBfcmVmOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOwotKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVBLQ1M4X2RlY3J5cHQ7Ci0rCQlQRU1fYnl0ZXNfcmVhZF9iaW87Ci0rCQlESVJFQ1RPUllTVFJJTkdfaXQ7Ci0rCQlkMmlfT0NTUF9DUkxJRDsKLSsJCUVDX1BPSU5UX2lzX29uX2N1cnZlOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKLSsJCWQyaV9LUkI1X0NIRUNLU1VNOwotKwkJQVNOMV9pdGVtX2R1cDsKLSsJCVg1MDlfaXQ7Ci0rCQlCTl9tb2RfYWRkOwotKwkJS1JCNV9BVVRIREFUQV9mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07Ci0rCQlBU04xX2l0ZW1fdmVyaWZ5OwotKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOwotKwkJWkxPTkdfaXQ7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOwotKwkJQVNOMV9USU1FX2NoZWNrOwotKwkJVUlfZ2V0MF91c2VyX2RhdGE7Ci0rCQlITUFDX0NUWF9jbGVhbnVwOwotKwkJRFNBX3VwX3JlZjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlBU04xX0JNUFNUUklOR19pdDsKLSsJCUFTTjFfdGFnMmJpdDsKLSsJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKLSsJCVg1MDlfb2NzcGlkX3ByaW50OwotKwkJS1JCNV9FTkNEQVRBX2l0OwotKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVVJX2FkZF91c2VyX2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKLSsJCVVJX2dldF9tZXRob2Q7Ci0rCQlPQ1NQX09ORVJFUV9mcmVlOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7Ci0rCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKLSsJCU9DU1BfUkVRVUVTVF9pdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2l0OwotKwkJQUVTX2VjYl9lbmNyeXB0OwotKwkJQk5fbW9kX3NxcjsKLSsJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7Ci0rCQlHRU5FUkFMX05BTUVTX2l0OwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OwotKwkJQVNOMV9GQk9PTEVBTl9pdDsKLSsJCVVJX3NldF9leF9kYXRhOwotKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7Ci0rCQlkMmlfS1JCNV9QUklOQ05BTUU7Ci0rCQlPQ1NQX1JFU1BCWVRFU19pdDsKLSsJCVg1MDlfQ0lORl9pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7Ci0rCQlkMmlfRURJUEFSVFlOQU1FOwotKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKLSsJCUVOR0lORV9nZXRfZGlnZXN0czsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7Ci0rCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7Ci0rCQlkMmlfS1JCNV9USUNLRVQ7Ci0rCQlPVEhFUk5BTUVfaXQ7Ci0rCQlFVlBfTURfQ1RYX2NsZWFudXA7Ci0rCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247Ci0rCQlCTl9tb2Rfc3ViOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOwotKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlPQ1NQX1JFUVVFU1RfZnJlZTsKLSsJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7Ci0rCQlYNTA5X1ZBTF9pdDsKLSsJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKLSsJCUVDX1BPSU5UX211bDsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mOwotKwkJWDUwOV9UUlVTVF9zZXQ7Ci0rCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKLSsJCURJU1BMQVlURVhUX2l0OwotKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOwotKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKLSsJCUtSQjVfRU5DREFUQV9uZXc7Ci0rCQlEU09fdXBfcmVmOwotKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKLSsJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7Ci0rCQlYNTA5X1NJR19pdDsKLSsJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFUlJfbG9hZF9FQ19zdHJpbmdzOwotKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKLSsJCUVDX1BPSU5UX21ldGhvZF9vZjsKLSsJCWkyZF9LUkI1X0FQUkVRQk9EWTsKLSsJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OwotKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRU5HSU5FX2dldF9leF9kYXRhOwotKwkJVUlfZGVzdHJveV9tZXRob2Q7Ci0rCQlBU04xX2l0ZW1faTJkX2JpbzsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOwotKwkJQVNOMV9wcmltaXRpdmVfbmV3OwotKwkJQVNOMV9QUklOVEFCTEVfaXQ7Ci0rCQlFVlBfYWVzXzE5Ml9lY2I7Ci0rCQlPQ1NQX1NJR05BVFVSRV9uZXc7Ci0rCQlMT05HX2l0OwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKLSsJCWQyaV9PQ1NQX0NFUlRJRDsKLSsJCUFTTjFfaXRlbV9kMmlfZnA7Ci0rCQlDUkxfRElTVF9QT0lOVFNfaXQ7Ci0rCQlHRU5FUkFMX05BTUVfcHJpbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKLSsJCVBLQ1MxMl9TQUZFQkFHU19pdDsKLSsJCWQyaV9PQ1NQX1NJR05BVFVSRTsKLSsJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOwotKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKLSsJCUVDX0dST1VQX2ZyZWU7Ci0rCQlBU04xX0JJVF9TVFJJTkdfaXQ7Ci0rCQlYNTA5X1JFUV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7Ci0rCQlFUlJfdW5sb2FkX3N0cmluZ3M7Ci0rCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OwotKwkJRURJUEFSVFlOQU1FX2ZyZWU7Ci0rCQlPQ1NQX1JFUUlORk9fZnJlZTsKLSsJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOwotKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOwotKwkJYXNuMV9leF9jMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKLSsJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOwotKwkJYXNuMV9lbmNfcmVzdG9yZTsKLSsJCVVJX2ZyZWU7Ci0rCQlVSV9uZXdfbWV0aG9kOwotKwkJRVZQX0VuY3J5cHRJbml0X2V4OwotKwkJWDUwOV9wdWJrZXlfZGlnZXN0OwotKwkJRUNfUE9JTlRfaW52ZXJ0OwotKwkJT0NTUF9iYXNpY19zaWduOwotKwkJaTJkX09DU1BfUkVTUElEOwotKwkJT0NTUF9jaGVja19ub25jZTsKLSsJCUVOR0lORV9jdHJsX2NtZDsKLSsJCWQyaV9LUkI1X0VOQ0tFWTsKLSsJCU9DU1BfcGFyc2VfdXJsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7Ci0rCQlPQ1NQX0NSTElEX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7Ci0rCQlSU0FQcml2YXRlS2V5X2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKLSsJCWkyZF9FRElQQVJUWU5BTUU7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCU9DU1BfQ1JMSURfbmV3OwotKwkJRU5HSU5FX2dldF9mbGFnczsKLSsJCU9DU1BfT05FUkVRX2l0OwotKwkJVUlfcHJvY2VzczsKLSsJCUFTTjFfSU5URUdFUl9pdDsKLSsJCUVWUF9DaXBoZXJJbml0X2V4OwotKwkJVUlfZ2V0X3N0cmluZ190eXBlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlibl9kdXBfZXhwYW5kOwotKwkJT0NTUF9jZXJ0X2lkX25ldzsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OwotKwkJQk5fbW9kX2FkZF9xdWljazsKLSsJCUVDX1BPSU5UX25ldzsKLSsJCUVWUF9NRF9DVFhfZGVzdHJveTsKLSsJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7Ci0rCQlFVlBfYWVzXzEyOF9jYmM7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOwotKwkJRUNfUE9JTlRfZnJlZTsKLSsJCURIX3VwX3JlZjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9pdDsKLSsJCVVJX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCTl9tb2Rfc3ViX3F1aWNrOwotKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKLSsJCU9DU1BfcmVxdWVzdF9zaWduOwotKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OwotKwkJRU5HSU5FX3NldF9kaWdlc3RzOwotKwkJT0NTUF9pZF9pc3N1ZXJfY21wOwotKwkJT0JKX05BTUVfZG9fYWxsOwotKwkJRUNfUE9JTlRzX211bDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKLSsJCVg1MDlWM19FWFRfbmNvbmZfbmlkOwotKwkJQVNOMV9TRVFVRU5DRV9pdDsKLSsJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOwotKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7Ci0rCQlVSV9PcGVuU1NMOwotKwkJUEVNX2RlZl9jYWxsYmFjazsKLSsJCUVOR0lORV9jbGVhbnVwOwotKwkJRElTVF9QT0lOVF9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9pdDsKLSsJCWQyaV9LUkI1X1RLVEJPRFk7Ci0rCQlFQ19QT0lOVF9jbXA7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKLSsJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7Ci0rCQlBU04xX2l0ZW1fZXhfZDJpOwotKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7Ci0rCQlVSV9zZXRfbWV0aG9kOwotKwkJT0NTUF9pZF9nZXQwX2luZm87Ci0rCQlCTl9tb2Rfc3FydDsKLSsJCUVDX0dST1VQX2NvcHk7Ci0rCQlLUkI1X0VOQ0RBVEFfZnJlZTsKLSsJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlPQ1NQX2NlcnRfdG9faWQ7Ci0rCQlPQ1NQX1JFU1BJRF9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX2l0OwotKwkJZDJpX09DU1BfUkVTUERBVEE7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOwotKwkJT0NTUF9jaGVja192YWxpZGl0eTsKLSsJCVBLQ1MxMl9CQUdTX2l0OwotKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKLSsJCUFTTjFfdGVtcGxhdGVfZnJlZTsKLSsJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKLSsJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKLSsJCWkyZF9LUkI1X0FVVEhEQVRBOwotKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7Ci0rCQlFTkdJTkVfc2V0X2V4X2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7Ci0rCQlDQklHTlVNX2l0OwotKwkJS1JCNV9USUNLRVRfbmV3OwotKwkJS1JCNV9BUFJFUV9uZXc7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOwotKwkJS1JCNV9FTkNLRVlfbmV3OwotKwkJQVNOMV90ZW1wbGF0ZV9kMmk7Ci0rCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07Ci0rCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKLSsJCUJOX3N3YXA7Ci0rCQlQT0xJQ1lJTkZPX2l0OwotKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOwotKwkJYXNuMV9lbmNfZnJlZTsKLSsJCU9DU1BfUkVTUElEX2l0OwotKwkJRUNfR1JPVVBfbmV3OwotKwkJRVZQX2Flc18yNTZfY2JjOwotKwkJaTJkX0tSQjVfUFJJTkNOQU1FOwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OwotKwkJT0NTUF9SRVFJTkZPX2l0OwotKwkJUEJFUEFSQU1faXQ7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKLSsJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKLSsJCUVESVBBUlRZTkFNRV9pdDsKLSsJCU5FVFNDQVBFX1NQS0lfaXQ7Ci0rCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOwotKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOwotKwkJRUNfUE9JTlRfY29weTsKLSsJCUJOX2tyb25lY2tlcjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7Ci0rCQlBU04xX0VOVU1FUkFURURfaXQ7Ci0rCQlVSV9zZXRfcmVzdWx0OwotKwkJaTJkX0tSQjVfVElDS0VUOwotKwkJWDUwOV9wcmludF9leF9mcDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOwotKwkJZDJpX09DU1BfUkVTUE9OU0U7Ci0rCQlBU04xX1VUQ1RJTUVfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKLSsJCU9DU1BfUkVTUE9OU0VfbmV3OwotKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKLSsJCU9DU1BfcmVzcF9jb3VudDsKLSsJCUtSQjVfQ0hFQ0tTVU1fbmV3OwotKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OwotKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOwotKwkJTk9USUNFUkVGX2l0OwotKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOwotKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKLSsJCUFFU19lbmNyeXB0OwotKwkJT0NTUF9SRVFVRVNUX25ldzsKLSsJCUFTTjFfQU5ZX2l0OwotKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOwotKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7Ci0rCQlpMmRfS1JCNV9US1RCT0RZOwotKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKLSsJCUFFU19kZWNyeXB0OwotKwkJYXNuMV9lbmNfaW5pdDsKLSsJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKLSsJCU9DU1BfQ0VSVElEX25ldzsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7Ci0rCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKLSsJCWQyaV9LUkI1X0VOQ0RBVEE7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OwotKwkJT0NTUF9iYXNpY192ZXJpZnk7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7Ci0rCQlBU04xX2l0ZW1fZDJpOwotKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKLSsJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7Ci0rCQlpMmRfT0NTUF9TSUdOQVRVUkU7Ci0rCQlhc24xX2VuY19zYXZlOwotKwkJRU5HSU5FX2xvYWRfbnVyb247Ci0rCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKLSsJCVBLQ1MxMl9NQUNfREFUQV9pdDsKLSsJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7Ci0rCQlhc24xX2RvX2xvY2s7Ci0rCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKLSsJCUtSQjVfQVBSRVFCT0RZX2l0OwotKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKLSsJCUFTTjFfaXRlbV9leF9uZXc7Ci0rCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKLSsJCUtSQjVfUFJJTkNOQU1FX2l0OwotKwkJRVZQX0RlY3J5cHRJbml0X2V4OwotKwkJaTJkX09DU1BfQ0VSVElEOwotKwkJQVNOMV9pdGVtX2QyaV9iaW87Ci0rCQlFQ19QT0lOVF9kYmw7Ci0rCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7Ci0rCQlpMmRfS1JCNV9DSEVDS1NVTTsKLSsJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7Ci0rCQlBRVNfb3B0aW9uczsKLSsJCUVOR0lORV9sb2FkX2NoaWw7Ci0rCQlPQ1NQX2lkX2NtcDsKLSsJCU9DU1BfQkFTSUNSRVNQX25ldzsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKLSsJCUtSQjVfQVBSRVFfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247Ci0rCQlDT05GX3NldF9uY29uZjsKLSsJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKLSsJCURJU1RfUE9JTlRfTkFNRV9pdDsKLSsJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OwotKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OwotKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKLSsJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7Ci0rCQlLUkI1X1RLVEJPRFlfbmV3OwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7Ci0rCQlFUlJfbG9hZF9VSV9zdHJpbmdzOwotKwkJaTJkX0tSQjVfRU5DS0VZOwotKwkJQVNOMV90ZW1wbGF0ZV9uZXc7Ci0rCQlPQ1NQX1NJR05BVFVSRV9mcmVlOwotKwkJQVNOMV9pdGVtX2kyZF9mcDsKLSsJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2l0OwotKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OwotKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7Ci0rCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKLSsJCUtSQjVfQVVUSEVOVF9uZXc7Ci0rCQlYNTA5X0NSTF9JTkZPX2l0OwotKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKLSsJCUFFU19zZXRfZGVjcnlwdF9rZXk7Ci0rCQlQS0NTN19ESUdFU1RfaXQ7Ci0rCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOwotKwkJRVZQX0RpZ2VzdEluaXRfZXg7Ci0rCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJT0NTUF9SRVNQT05TRV9pdDsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2l0OwotKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7Ci0rCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKLSsJCURTT19nZXRfZmlsZW5hbWU7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OwotKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOwotKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7Ci0rCQlCTl9tb2RfbHNoaWZ0OwotKwkJS1JCNV9BVVRIREFUQV9pdDsKLSsJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKLSsJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7Ci0rCQlPQ1NQX1JFU1BJRF9mcmVlOwotKwkJYXNuMV9nZXRfZmllbGRfcHRyOwotKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKLSsJCU9DU1BfQ1JMSURfaXQ7Ci0rCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OwotKwkJRU5HSU5FX2xvYWRfYXRhbGxhOwotKwkJWDUwOV9OQU1FX2l0OwotKwkJVVNFUk5PVElDRV9pdDsKLSsJCU9DU1BfUkVRSU5GT19uZXc7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7Ci0rCQlBU04xX2l0ZW1fcGFjazsKLSsJCWkyZF9LUkI1X0VOQ0RBVEE7Ci0rCQlYNTA5X1BVUlBPU0Vfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19pdDsKLSsJCVVJX21ldGhvZF9zZXRfb3BlbmVyOwotKwkJQVNOMV9pdGVtX2V4X2ZyZWU7Ci0rCQlBU04xX0JPT0xFQU5faXQ7Ci0rCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOwotKwkJVUlfY3JlYXRlX21ldGhvZDsKLSsJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKLSsJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKLSsJCWQyaV9PQ1NQX1JFUUlORk87Ci0rCQlVSV9hZGRfaW5mb19zdHJpbmc7Ci0rCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7Ci0rCQlBU04xX05VTExfaXQ7Ci0rCQlCTl9tb2RfbHNoaWZ0MTsKLSsJCWQyaV9PQ1NQX09ORVJFUTsKLSsJCU9DU1BfT05FUkVRX25ldzsKLSsJCUtSQjVfVElDS0VUX2l0OwotKwkJRVZQX2Flc18xOTJfY2JjOwotKwkJS1JCNV9USUNLRVRfZnJlZTsKLSsJCVVJX25ldzsKLSsJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOwotKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7Ci0rCQlQS0NTN19pdDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKLSsJCUVOR0lORV9zZXRfZmxhZ3M7Ci0rCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OwotKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOwotKwkJRVZQX0RpZ2VzdDsKLSsJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7Ci0rCQlBU04xX1RCT09MRUFOX2l0OwotKwkJQVNOMV9pdGVtX25ldzsKLSsJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7Ci0rCQlCSUdOVU1faXQ7Ci0rCQlBRVNfY2JjX2VuY3J5cHQ7Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOwotKwkJT0NTUF9SRVNQT05TRV9mcmVlOwotKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7Ci0rCQlpMmRfQVNOMV9UNjFTVFJJTkc7Ci0rCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7Ci0rCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7Ci0rCQlFQ19QT0lOVF9wb2ludDJvY3Q7Ci0rCQlLUkI1X0FQUkVRX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9pdDsKLSsJCU9DU1BfY3JsSURfbmV3OwotKwkJT0NTUF9jcmxJRDJfbmV3OwotKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKLSsJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOwotKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOwotKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKLSsJCUNPTkZfbW9kdWxlc19maW5pc2g7Ci0rCQlPUEVOU1NMX2NvbmZpZzsKLSsJCUNPTkZfbW9kdWxlc191bmxvYWQ7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOwotKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOwotKwkJQ09ORl9wYXJzZV9saXN0OwotKwkJQ09ORl9tb2R1bGVfYWRkOwotKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOwotKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7Ci0rCQlDT05GX21vZHVsZXNfbG9hZDsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKLSsJCUVSUl9wZWVrX3RvcF9lcnJvcjsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7Ci0rCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOwotKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKLSsJCURFU19yZWFkXzJwYXNzd29yZHM7Ci0rCQlERVNfcmVhZF9wYXNzd29yZDsKLSsJCVVJX1VUSUxfcmVhZF9wdzsKLSsJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7Ci0rCQlFTkdJTkVfbG9hZF9hZXA7Ci0rCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOwotKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKLSsJCUFFU19vZmIxMjhfZW5jcnlwdDsKLSsJCUFFU19jdHIxMjhfZW5jcnlwdDsKLSsJCUFFU19jZmIxMjhfZW5jcnlwdDsKLSsJCUVOR0lORV9sb2FkXzQ3NThjY2E7Ci0rCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOwotKwkJRVZQX2Flc18yNTZfb2ZiOwotKwkJRVZQX2Flc18xOTJfb2ZiOwotKwkJRVZQX2Flc18xMjhfY2ZiMTI4OwotKwkJRVZQX2Flc18yNTZfY2ZiMTI4OwotKwkJRVZQX2Flc18xMjhfb2ZiOwotKwkJRVZQX2Flc18xOTJfY2ZiMTI4OwotKwkJQ09ORl9tb2R1bGVzX2ZyZWU7Ci0rCQlOQ09ORl9kZWZhdWx0OwotKwkJT1BFTlNTTF9ub19jb25maWc7Ci0rCQlOQ09ORl9XSU4zMjsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKLSsJCUVWUF9kZXNfZWRlX2VjYjsKLSsJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKLSsJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUVWUF9kZXNfZWRlM19lY2I7Ci0rCQlYNTA5X1JFUV9wcmludF9leDsKLSsJCUVOR0lORV91cF9yZWY7Ci0rCQlCVUZfTUVNX2dyb3dfY2xlYW47Ci0rCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKLSsJCUJVRl9zdHJsY2F0OwotKwkJQklPX2luZGVudDsKLSsJCUJVRl9zdHJsY3B5OwotKwkJT3BlblNTTERpZTsKLSsJCU9QRU5TU0xfY2xlYW5zZTsKLSsJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OwotKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOwotKwkJRVZQX2Flc18xMjhfY2ZiODsKLSsJCUZJUFNfY29ycnVwdF9yc2E7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2RlczsKLSsJCUVWUF9hZXNfMTI4X2NmYjE7Ci0rCQlFVlBfYWVzXzE5Ml9jZmI4OwotKwkJRklQU19tb2RlX3NldDsKLSsJCUZJUFNfc2VsZnRlc3RfZHNhOwotKwkJRVZQX2Flc18yNTZfY2ZiODsKLSsJCUZJUFNfYWxsb3dfbWQ1OwotKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiODsKLSsJCUZJUFNfcmFuZF9zZWVkZWQ7Ci0rCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQUVTX2NmYjhfZW5jcnlwdDsKLSsJCUZJUFNfcmFuZF9zZWVkOwotKwkJRklQU19jb3JydXB0X2RlczsKLSsJCUVWUF9hZXNfMTkyX2NmYjE7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2FlczsKLSsJCUZJUFNfc2V0X3Bybmdfa2V5OwotKwkJRVZQX2Rlc19jZmI4OwotKwkJRklQU19jb3JydXB0X2RzYTsKLSsJCUZJUFNfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX21ldGhvZDsKLSsJCUVWUF9hZXNfMjU2X2NmYjE7Ci0rCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7Ci0rCQlGSVBTX2NvcnJ1cHRfYWVzOwotKwkJRklQU19zZWxmdGVzdF9zaGExOwotKwkJRklQU19zZWxmdGVzdF9yc2E7Ci0rCQlGSVBTX2NvcnJ1cHRfc2hhMTsKLSsJCUVWUF9kZXNfY2ZiMTsKLSsJCUZJUFNfZHNhX2NoZWNrOwotKwkJQUVTX2NmYjFfZW5jcnlwdDsKLSsJCUVWUF9kZXNfZWRlM19jZmIxOwotKwkJRklQU19yYW5kX2NoZWNrOwotKwkJRklQU19tZDVfYWxsb3dlZDsKLSsJCUZJUFNfbW9kZTsKLSsJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOwotKwkJc2tfaXNfc29ydGVkOwotKwkJWDUwOV9jaGVja19jYTsKLSsJCUhNQUNfQ1RYX3NldF9mbGFnczsKLSsJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJUFJPWFlfUE9MSUNZX2l0OwotKwkJaTJkX1BST1hZX1BPTElDWTsKLSsJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJZDJpX1BST1hZX1BPTElDWTsKLSsJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKLSsJCVBST1hZX1BPTElDWV9mcmVlOwotKwkJUFJPWFlfUE9MSUNZX25ldzsKLSsJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKLSsJCUVWUF9zaGEzODQ7Ci0rCQlFVlBfc2hhNTEyOwotKwkJRVZQX3NoYTIyNDsKLSsJCUVWUF9zaGEyNTY7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2htYWM7Ci0rCQlGSVBTX2NvcnJ1cHRfcm5nOwotKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKLSsJCVJTQV9YOTMxX2hhc2hfaWQ7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7Ci0rCQlQS0NTMV9NR0YxOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7Ci0rCQlSU0FfWDkzMV9kZXJpdmU7Ci0rCQlCSU9fbmV3X2RncmFtOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKLSsJCUVSUl9zZXRfbWFyazsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKLSsJCUVOR0lORV9zZXRfU1RPUkU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OwotKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7Ci0rCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKLSsJCVBPTElDWV9NQVBQSU5HX2l0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7Ci0rCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlCTl9uaXN0X21vZF8xOTI7Ci0rCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOwotKwkJU1RPUkVfc2V0X21ldGhvZDsKLSsJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOwotKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKLSsJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUEtDUzEyX2FkZF9zYWZlOwotKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOwotKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKLSsJCVNIQTUxMl9VcGRhdGU7Ci0rCQlpMmRfRUNQcml2YXRlS2V5OwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKLSsJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07Ci0rCQlCTl9HRjJtX21vZF9leHBfYXJyOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7Ci0rCQlYNTA5X2tleWlkX2dldDA7Ci0rCQlFTkdJTkVfbG9hZF9nbXA7Ci0rCQlwaXRlbV9uZXc7Ci0rCQlCTl9HRjJtX21vZF9tdWxfYXJyOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7Ci0rCQlvMmlfRUNQdWJsaWNLZXk7Ci0rCQlFQ19LRVlfY29weTsKLSsJCUJJT19kdW1wX2ZwOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKLSsJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKLSsJCWkyb19FQ1B1YmxpY0tleTsKLSsJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7Ci0rCQlhMmlfSVBBRERSRVNTOwotKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7Ci0rCQlFQ19QT0lOVF9wb2ludDJibjsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7Ci0rCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKLSsJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7Ci0rCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOwotKwkJRUNfS0VZX2dldF9jb252X2Zvcm07Ci0rCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OwotKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9nZXRfcHVibGljX2tleTsKLSsJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7Ci0rCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKLSsJCXBxdWV1ZV9pdGVyYXRvcjsKLSsJCUVDRFNBX1NJR19uZXc7Ci0rCQlPUEVOU1NMX0RJUl9lbmQ7Ci0rCQlCTl9HRjJtX21vZF9zcXI7Ci0rCQlFQ19QT0lOVF9ibjJwb2ludDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKLSsJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOwotKwkJU1RPUkVfZ2V0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOwotKwkJRUNEU0Ffc2lnbl9leDsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKLSsJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07Ci0rCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOwotKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbjsKLSsJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlCTl9CTElORElOR19zZXRfZmxhZ3M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7Ci0rCQlTVE9SRV9nZXRfbnVtYmVyOwotKwkJRUNEU0Ffc2lnbl9zZXR1cDsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOwotKwkJRUNfS0VZX3VwX3JlZjsKLSsJCVBPTElDWV9NQVBQSU5HX2ZyZWU7Ci0rCQlCTl9HRjJtX21vZF9kaXY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7Ci0rCQlFQ19LRVlfZnJlZTsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7Ci0rCQlkMmlfRUNfUFVCS0VZOwotKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOwotKwkJcHF1ZXVlX3ByaW50OwotKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7Ci0rCQlFQ19LRVlfcHJpbnRfZnA7Ci0rCQlCTl9HRjJtX21vZF9hcnI7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOwotKwkJRVZQX1BLRVlfY21wOwotKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKLSsJCVNUT1JFX25ld19lbmdpbmU7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7Ci0rCQlFQ0RIX2dldF9leF9kYXRhOwotKwkJRVZQX1BLRVlfZ2V0X2F0dHI7Ci0rCQlFQ0RTQV9kb19zaWduOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKLSsJCUVDREhfT3BlblNTTDsKLSsJCUVDX0tFWV9zZXRfY29udl9mb3JtOwotKwkJRUNfUE9JTlRfZHVwOwotKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKLSsJCVNUT1JFX2xpc3RfY3JsX2VuZHA7Ci0rCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKLSsJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOwotKwkJU1RPUkVfbGlzdF9jcmxfZW5kOwotKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKLSsJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7Ci0rCQlwcXVldWVfZmluZDsKLSsJCUVDRFNBX1NJR19mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7Ci0rCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OwotKwkJcHF1ZXVlX3BlZWs7Ci0rCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OwotKwkJU1RPUkVfc3RvcmVfY3JsOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKLSsJCVBLQ1MxMl9hZGRfc2FmZXM7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0X2V4OwotKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOwotKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKLSsJCUJOX0dGMm1fcG9seTJhcnI7Ci0rCQlTVE9SRV9jdHJsOwotKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OwotKwkJaTJkX0VDUGFyYW1ldGVyczsKLSsJCWkyZF9FQ1BLUGFyYW1ldGVyczsKLSsJCUJOX0dFTkNCX2NhbGw7Ci0rCQlkMmlfRUNQS1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X0VDREg7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKLSsJCVNIQTI1Nl9Jbml0OwotKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKLSsJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOwotKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKLSsJCUVDUGFyYW1ldGVyc19wcmludDsKLSsJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OwotKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKLSsJCUJVRl9tZW1kdXA7Ci0rCQlCTl9HRjJtX21vZF9tdWw7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OwotKwkJRUNfR1JPVVBfc2V0X3NlZWQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKLSsJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OwotKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOwotKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9udW1iZXI7Ci0rCQlCTl9pc19wcmltZV9leDsKLSsJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKLSsJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7Ci0rCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKLSsJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOwotKwkJRUNEU0FfZ2V0X2V4X2RhdGE7Ci0rCQlTSEEyMjQ7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfZnA7Ci0rCQlFQ19LRVlfc2V0X2dyb3VwOwotKwkJQlVGX3N0cm5kdXA7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OwotKwkJQk5fR0YybV9tb2Q7Ci0rCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKLSsJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKLSsJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7Ci0rCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7Ci0rCQlpMmRfRUNfUFVCS0VZOwotKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQVNOMV9wdXRfZW9jOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7Ci0rCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOwotKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOwotKwkJRUNfR0ZwX25pc3RfbWV0aG9kOwotKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OwotKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOwotKwkJWDUwOV9DRVJUX1BBSVJfaXQ7Ci0rCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOwotKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKLSsJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7Ci0rCQlSU0Ffc2V0dXBfYmxpbmRpbmc7Ci0rCQlCSU9fc19kYXRhZ3JhbTsKLSsJCVNUT1JFX01lbW9yeTsKLSsJCXNrX2ZpbmRfZXg7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0OwotKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OwotKwkJU0hBMzg0X1VwZGF0ZTsKLSsJCUJOX0dGMm1fYXJyMnBvbHk7Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247Ci0rCQlFQ19HUk9VUF9jaGVjazsKLSsJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7Ci0rCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOwotKwkJU0hBMjI0X0ZpbmFsOwotKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfVXBkYXRlOwotKwkJZDJpX0VDUHJpdmF0ZUtleTsKLSsJCUFTTjFfaXRlbV9uZGVmX2kyZDsKLSsJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKLSsJCUVSUl9wb3BfdG9fbWFyazsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7Ci0rCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7Ci0rCQlpMmRfUEtDUzdfTkRFRjsKLSsJCUVDX0dST1VQX2dldF9kZWdyZWU7Ci0rCQlBU04xX2dlbmVyYXRlX3YzOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKLSsJCUJOX0dGMm1fYWRkOwotKwkJRUNfS0VZX2dldDBfZ3JvdXA7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9jcmw7Ci0rCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKLSsJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKLSsJCUJOX25pc3RfbW9kXzIyNDsKLSsJCVNIQTUxMl9GaW5hbDsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47Ci0rCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKLSsJCWkyZF9FQ19QVUJLRVlfYmlvOwotKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKLSsJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7Ci0rCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7Ci0rCQlTVE9SRV9saXN0X2NybF9zdGFydDsKLSsJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOwotKwkJdjJpX0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOwotKwkJT0JKX2JzZWFyY2hfZXg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKLSsJCUJOX0dGMm1fbW9kX2ludjsKLSsJCUJOX0dGMm1fbW9kX2V4cDsKLSsJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKLSsJCUVDX0dST1VQX2dldDBfc2VlZDsKLSsJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKLSsJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKLSsJCUVOR0lORV9zZXRfRUNEU0E7Ci0rCQlTVE9SRV9jcmVhdGVfbWV0aG9kOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7Ci0rCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKLSsJCVBFTV93cml0ZV9FQ19QVUJLRVk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOwotKwkJRUNESF9zZXRfbWV0aG9kOwotKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKLSsJCUVDREhfc2V0X2V4X2RhdGE7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9uaXN0X21vZF81MjE7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7Ci0rCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOwotKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKLSsJCVBFTV9yZWFkX0VDX1BVQktFWTsKLSsJCWkyZF9FQ0RTQV9TSUc7Ci0rCQlFQ0RTQV9PcGVuU1NMOwotKwkJU1RPUkVfZGVsZXRlX2NybDsKLSsJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOwotKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKLSsJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07Ci0rCQlFQ19HUk9VUF9jbXA7Ci0rCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OwotKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfSW5pdDsKLSsJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKLSsJCVNIQTUxMl9Jbml0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKLSsJCUJOX3NldF9uZWdhdGl2ZTsKLSsJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7Ci0rCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OwotKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX09CSkVDVF9mcmVlOwotKwkJQk5fbmlzdF9tb2RfMzg0OwotKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOwotKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOwotKwkJRUNESF9jb21wdXRlX2tleTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7Ci0rCQlwcXVldWVfcG9wOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKLSsJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7Ci0rCQlTSEEyNTY7Ci0rCQlpMmRfRUNQcml2YXRlS2V5X2ZwOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7Ci0rCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOwotKwkJT1BFTlNTTF9ESVJfcmVhZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOwotKwkJRUNfR1JPVVBfZHVwOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOwotKwkJRUNfS0VZX25ldzsKLSsJCVNIQTI1Nl9UcmFuc2Zvcm07Ci0rCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKLSsJCUVDRFNBX3ZlcmlmeTsKLSsJCUVDX1BPSU5UX3BvaW50MmhleDsKLSsJCUVOR0lORV9nZXRfU1RPUkU7Ci0rCQlTSEE1MTI7Ci0rCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7Ci0rCQlFQ0RTQV9kb19zaWduX2V4OwotKwkJRUNEU0FfZG9fdmVyaWZ5OwotKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKLSsJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKLSsJCVNIQTUxMl9UcmFuc2Zvcm07Ci0rCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlTVE9SRV9mcmVlOwotKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKLSsJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZ2V0X2V4X2RhdGE7Ci0rCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7Ci0rCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKLSsJCVg1MDlfQ0VSVF9QQUlSX25ldzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKLSsJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKLSsJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKLSsJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cjsKLSsJCVNUT1JFX21vZGlmeV9jcmw7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OwotKwkJUE9MSUNZX01BUFBJTkdTX2l0OwotKwkJR0VORVJBTF9TVUJUUkVFX2l0OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7Ci0rCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfY2I7Ci0rCQlkMmlfWDUwOV9DRVJUX1BBSVI7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7Ci0rCQlhc24xX2NvbnN0X0ZpbmlzaDsKLSsJCWkyZF9FQ19QVUJLRVlfZnA7Ci0rCQlCTl9uaXN0X21vZF8yNTY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOwotKwkJcHF1ZXVlX2ZyZWU7Ci0rCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07Ci0rCQlFQ0RTQV9zaXplOwotKwkJZDJpX0VDX1BVQktFWV9iaW87Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKLSsJCVNIQTI1Nl9GaW5hbDsKLSsJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7Ci0rCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfRUNESDsKLSsJCWQyaV9FQ0RTQV9TSUc7Ci0rCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKLSsJCUVDRFNBX3NpZ247Ci0rCQlYNTA5X3BvbGljeV9jaGVjazsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKLSsJCVNUT1JFX3NldF9leF9kYXRhOwotKwkJRU5HSU5FX2dldF9FQ0RTQTsKLSsJCUVWUF9lY2RzYTsKLSsJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKLSsJCVBLQ1MxMl9hZGRfY2VydDsKLSsJCVNUT1JFX09CSkVDVF9uZXc7Ci0rCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7Ci0rCQlFQ19LRVlfZHVwOwotKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7Ci0rCQlFQ0RTQV9zZXRfbWV0aG9kOwotKwkJYTJpX0lQQUREUkVTU19OQzsKLSsJCWQyaV9FQ1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKLSsJCVNUT1JFX2dldF9jcmw7Ci0rCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OwotKwkJU0hBMzg0X0luaXQ7Ci0rCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ0RTQV9zZXRfZXhfZGF0YTsKLSsJCVNIQTM4NF9GaW5hbDsKLSsJCVBLQ1M3X3NldF9kaWdlc3Q7Ci0rCQlFQ19LRVlfcHJpbnQ7Ci0rCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNIQTM4NDsKLSsJCVBPTElDWV9NQVBQSU5HX25ldzsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7Ci0rCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOwotKwkJRUNfS0VZX2NoZWNrX2tleTsKLSsJCWQyaV9FQ19QVUJLRVlfZnA7Ci0rCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7Ci0rCQlwcXVldWVfbmV4dDsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKLSsJCXBxdWV1ZV9uZXc7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKLSsJCVNUT1JFX25ld19tZXRob2Q7Ci0rCQlQS0NTMTJfYWRkX2tleTsKLSsJCURTT19tZXJnZTsKLSsJCUVDX1BPSU5UX2hleDJwb2ludDsKLSsJCUJJT19kdW1wX2NiOwotKwkJU0hBMjU2X1VwZGF0ZTsKLSsJCXBxdWV1ZV9pbnNlcnQ7Ci0rCQlwaXRlbV9mcmVlOwotKwkJQk5fR0YybV9tb2RfaW52X2FycjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOwotKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKLSsJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7Ci0rCQlESF9jaGVja19wdWJfa2V5OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7Ci0rCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9uZXc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOwotKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQ2FtZWxsaWFfZGVjcnlwdDsKLSsJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfc2V0X2tleTsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKLSsJCWEyaV9pcGFkZDsKLSsJCUFTSWRlbnRpZmllcnNfZnJlZTsKLSsJCWkyZF9BU0lkT3JSYW5nZTsKLSsJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKLSsJCXYzX2FzaWRfaXNfY2Fub25pY2FsOwotKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7Ci0rCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKLSsJCXYzX2FkZHJfYWRkX3ByZWZpeDsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7Ci0rCQlCSU9fc2V0X2ZsYWdzOwotKwkJQVNJZGVudGlmaWVyc19pdDsKLSsJCXYzX2FkZHJfZ2V0X3JhbmdlOwotKwkJQklPX21ldGhvZF90eXBlOwotKwkJdjNfYWRkcl9pbmhlcml0czsKLSsJCUlQQWRkcmVzc0Nob2ljZV9pdDsKLSsJCUFFU19pZ2VfZW5jcnlwdDsKLSsJCXYzX2FkZHJfYWRkX3JhbmdlOwotKwkJRVZQX0NJUEhFUl9DVFhfbmlkOwotKwkJZDJpX0FTUmFuZ2U7Ci0rCQl2M19hZGRyX2FkZF9pbmhlcml0OwotKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKLSsJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOwotKwkJRVZQX01EX3R5cGU7Ci0rCQl2M19hc2lkX2Nhbm9uaXplOwotKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKLSsJCXYzX2FzaWRfYWRkX2luaGVyaXQ7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOwotKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OwotKwkJQVNJZE9yUmFuZ2VfbmV3OwotKwkJRVZQX01EX3NpemU7Ci0rCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlCSU9fY2xlYXJfZmxhZ3M7Ci0rCQlpMmRfQVNSYW5nZTsKLSsJCUlQQWRkcmVzc1JhbmdlX2l0OwotKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKLSsJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7Ci0rCQlBU1JhbmdlX2ZyZWU7Ci0rCQlFVlBfTURfcGtleV90eXBlOwotKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKLSsJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOwotKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OwotKwkJRVZQX0NJUEhFUl9mbGFnczsKLSsJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OwotKwkJZDJpX0lQQWRkcmVzc1JhbmdlOwotKwkJQUVTX2JpX2lnZV9lbmNyeXB0OwotKwkJQklPX2dldF9jYWxsYmFjazsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKLSsJCXYzX2FkZHJfc3Vic2V0OwotKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKLSsJCXYzX2FzaWRfc3Vic2V0OwotKwkJQklPX3Rlc3RfZmxhZ3M7Ci0rCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOwotKwkJQVNSYW5nZV9pdDsKLSsJCWQyaV9BU0lkZW50aWZpZXJzOwotKwkJQVNSYW5nZV9uZXc7Ci0rCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOwotKwkJdjNfYWRkcl9nZXRfYWZpOwotKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOwotKwkJRVZQX0NpcGhlcjsKLSsJCWkyZF9JUEFkZHJlc3NPclJhbmdlOwotKwkJQVNJZE9yUmFuZ2VfaXQ7Ci0rCQlFVlBfQ0lQSEVSX25pZDsKLSsJCWkyZF9JUEFkZHJlc3NDaG9pY2U7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOwotKwkJQVNJZGVudGlmaWVyc19uZXc7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7Ci0rCQlJUEFkZHJlc3NGYW1pbHlfbmV3OwotKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7Ci0rCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKLSsJCWkyZF9JUEFkZHJlc3NSYW5nZTsKLSsJCUlQQWRkcmVzc0ZhbWlseV9pdDsKLSsJCXYzX2FzaWRfaW5oZXJpdHM7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7Ci0rCQlFVlBfTURfYmxvY2tfc2l6ZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOwotKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOwotKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7Ci0rCQl2M19hZGRyX2Nhbm9uaXplOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OwotKwkJRVZQX01EX0NUWF9tZDsKLSsJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7Ci0rCQlCSU9fbWV0aG9kX25hbWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7Ci0rCQlBU0lkT3JSYW5nZV9mcmVlOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7Ci0rCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKLSsJCUJJT19zZXRfY2FsbGJhY2s7Ci0rCQlkMmlfQVNJZE9yUmFuZ2U7Ci0rCQlpMmRfQVNJZGVudGlmaWVyczsKLSsJCVNFRURfZGVjcnlwdDsKLSsJCVNFRURfZW5jcnlwdDsKLSsJCVNFRURfY2JjX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9vZmI7Ci0rCQlTRUVEX2NmYjEyOF9lbmNyeXB0OwotKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX2NiYzsKLSsJCVNFRURfZWNiX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9lY2I7Ci0rCQlTRUVEX3NldF9rZXk7Ci0rCQlFVlBfc2VlZF9jZmIxMjg7Ci0rCQlYNTA5X0VYVEVOU0lPTlNfaXQ7Ci0rCQlYNTA5X2dldDFfb2NzcDsKLSsJCU9DU1BfUkVRX0NUWF9mcmVlOwotKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKLSsJCU9DU1Bfc2VuZHJlcV9uYmlvOwotKwkJT0NTUF9zZW5kcmVxX25ldzsKLSsJCWQyaV9YNTA5X0VYVEVOU0lPTlM7Ci0rCQlYNTA5X0FMR09SU19pdDsKLSsJCVg1MDlfQUxHT1JfZ2V0MDsKLSsJCVg1MDlfQUxHT1Jfc2V0MDsKLSsJCUFFU191bndyYXBfa2V5OwotKwkJQUVTX3dyYXBfa2V5OwotKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7Ci0rCQlBU04xX1RZUEVfc2V0MTsKLSsJCUFTTjFfU1RSSU5HX3NldDA7Ci0rCQlpMmRfWDUwOV9BTEdPUlM7Ci0rCQlCSU9fZl96bGliOwotKwkJQ09NUF96bGliX2NsZWFudXA7Ci0rCQlkMmlfWDUwOV9BTEdPUlM7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKLSsJCVBFTV93cml0ZV9DTVM7Ci0rCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCUVSUl9sb2FkX0NNU19zdHJpbmdzOwotKwkJQ01TX3NpZ25fcmVjZWlwdDsKLSsJCWkyZF9DTVNfQ29udGVudEluZm87Ci0rCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOwotKwkJZDJpX0NNU19iaW87Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOwotKwkJQ01TX3ZlcmlmeTsKLSsJCVNNSU1FX3JlYWRfQ01TOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7Ci0rCQlDTVNfYWRkMV9jZXJ0OwotKwkJQ01TX3NldF9kZXRhY2hlZDsKLSsJCUNNU19lbmNyeXB0OwotKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOwotKwkJQ01TX3VuY29tcHJlc3M7Ci0rCQlDTVNfYWRkMF9jcmw7Ci0rCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKLSsJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJUEVNX3dyaXRlX2Jpb19DTVM7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOwotKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7Ci0rCQlDTVNfZmluYWw7Ci0rCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKLSsJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKLSsJCUNNU19kYXRhOwotKwkJQ01TX0NvbnRlbnRJbmZvX2l0OwotKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19jb21wcmVzczsKLSsJCUNNU19kaWdlc3RfY3JlYXRlOwotKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7Ci0rCQlDTVNfU2lnbmVySW5mb19zaWduOwotKwkJQ01TX2RhdGFfY3JlYXRlOwotKwkJaTJkX0NNU19iaW87Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKLSsJCUNNU19kZWNyeXB0OwotKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7Ci0rCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfYWRkX3NtaW1lY2FwOwotKwkJUEVNX3JlYWRfQ01TOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlkMmlfQ01TX0NvbnRlbnRJbmZvOwotKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKLSsJCUNNU19Db250ZW50SW5mb19uZXc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOwotKwkJQ01TX2dldDBfdHlwZTsKLSsJCUNNU19pc19kZXRhY2hlZDsKLSsJCUNNU19zaWduOwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJU01JTUVfd3JpdGVfQ01TOwotKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKLSsJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOwotKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OwotKwkJQ01TX2dldDBfc2lnbmVyczsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKLSsJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCUNNU19nZXQwX1NpZ25lckluZm9zOwotKwkJQ01TX2FkZDBfY2VydDsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7Ci0rCQlDTVNfZGlnZXN0X3ZlcmlmeTsKLSsJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7Ci0rCQlDTVNfU2lnbmVkRGF0YV9pbml0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKLSsJCUNNU192ZXJpZnlfcmVjZWlwdDsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKLSsJCVBFTV9yZWFkX2Jpb19DTVM7Ci0rCQlDTVNfZ2V0MV9jcmxzOwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKLSsJCVNNSU1FX3JlYWRfQVNOMTsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7Ci0rCQlDTVNfZ2V0MF9jb250ZW50OwotKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7Ci0rCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfZ2V0MV9jZXJ0czsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX2RhdGFGaW5hbDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOwotKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OwotKwkJQ01TX2RhdGFJbml0OwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7Ci0rCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKLSsJCUNNU19hZGQxX3NpZ25lcjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKLSsJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47Ci0rCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOwotKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OwotKwkJRU5HSU5FX2xvYWRfY2FwaTsKLSsJCU9QRU5TU0xfaXNzZXJ2aWNlOwotKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJRklQU19yYW5kX3N0YXR1czsKLSsJCUZJUFNfcmFuZF9zZXRfa2V5OwotKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOwotKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7Ci0rCQlGSVBTX3JuZ19zdGljazsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOwotKwkJRklQU19yYW5kX3NldF9kdDsKLSsJCUNSWVBUT19kYmdfcG9wX2luZm87Ci0rCQlGSVBTX2RzYV9mcmVlOwotKwkJUlNBX1g5MzFfZGVyaXZlX2V4OwotKwkJRklQU19yc2FfbmV3OwotKwkJRklQU19yYW5kX2J5dGVzOwotKwkJZmlwc19jaXBoZXJfdGVzdDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7Ci0rCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKLSsJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOwotKwkJRklQU19kaF9uZXc7Ci0rCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKLSsJCUZJUFNfZGhfZnJlZTsKLSsJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKLSsJCUVWUF9hZGRfYWxnX21vZHVsZTsKLSsJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlGSVBTX3JhbmRfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX3Jlc2V0OwotKwkJRklQU19kc2FfbmV3OwotKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKLSsJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OwotKwkJaW50X0VSUl9saWJfaW5pdDsKLSsJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCUZJUFNfcnNhX2ZyZWU7Ci0rCQlGSVBTX2RzYV9zaWdfZW5jb2RlOwotKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlDUllQVE9fc3RyZHVwOwotKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQMV9yZWxlYXNlOwotKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7Ci0rCQlKUEFLRV9TVEVQM0JfaW5pdDsKLSsJCUpQQUtFX1NURVAxX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDFfaW5pdDsKLSsJCUpQQUtFX1NURVAzQl9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9DVFhfbmV3OwotKwkJSlBBS0VfQ1RYX2ZyZWU7Ci0rCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKLSsJCUpQQUtFX1NURVAzQV9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAxX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMl9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDNBX2luaXQ7Ci0rCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOwotKwkJSlBBS0VfU1RFUDJfaW5pdDsKLSsJCXBxdWV1ZV9zaXplOwotKwkJaTJkX1RTX0FDQ1VSQUNZOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOwotKwkJRVZQX1BLRVlfQ1RYX25ldzsKLSsJCWkyZF9UU19UU1RfSU5GTzsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZDsKLSsJCURTT19NRVRIT0RfYmVvczsKLSsJCVRTX0NPTkZfbG9hZF9jZXJ0OwotKwkJVFNfUkVRX2dldF9leHQ7Ci0rCQlFVlBfUEtFWV9zaWduX2luaXQ7Ci0rCQlBU04xX2l0ZW1fcHJpbnQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7Ci0rCQlUU19SRVNQX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOwotKwkJRVZQX1BLRVlfYXNuMV9hZGQwOwotKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOwotKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOwotKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKLSsJCVRTX1RTVF9JTkZPX3NldF90aW1lOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKLSsJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87Ci0rCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKLSsJCWQyaV9UU19SRVNQX2ZwOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKLSsJCVdISVJMUE9PTF9Jbml0OwotKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87Ci0rCQlFVlBfUEtFWV9rZXlnZW47Ci0rCQlFVlBfRGlnZXN0U2lnbkluaXQ7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOwotKwkJVFNfUkVRX2R1cDsKLSsJCUdFTkVSQUxfTkFNRV9kdXA7Ci0rCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKLSsJCVdISVJMUE9PTDsKLSsJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKLSsJCUVWUF9QS0VZX2FzbjFfbmV3OwotKwkJQklPX25ld19OREVGOwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7Ci0rCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKLSsJCWkyZF9UU19UU1RfSU5GT19iaW87Ci0rCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKLSsJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOwotKwkJU01JTUVfd3JpdGVfQVNOMTsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OwotKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7Ci0rCQlDUllQVE9fVEhSRUFESURfY3B5OwotKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOwotKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7Ci0rCQlUU19DT05GX2xvYWRfa2V5OwotKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOwotKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKLSsJCWIyaV9QdWJsaWNLZXlfYmlvOwotKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKLSsJCUVWUF9QS0VZX25ld19tYWNfa2V5OwotKwkJQklPX25ld19DTVM7Ci0rCQlDUllQVE9fVEhSRUFESURfY21wOwotKwkJVFNfUkVRX2V4dF9mcmVlOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDBfYXNuMTsKLSsJCWQyaV9ORVRTQ0FQRV9YNTA5OwotKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKLSsJCUVWUF9QS0VZX2tleWdlbl9pbml0OwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287Ci0rCQlUU19SRVFfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOwotKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOwotKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOwotKwkJQk5fYXNjMmJuOwotKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOwotKwkJZDJpX1RTX0FDQ1VSQUNZOwotKwkJRFNPX2dsb2JhbF9sb29rdXA7Ci0rCQlUU19DT05GX3NldF90c2FfbmFtZTsKLSsJCWkyZF9BU04xX1NFVF9BTlk7Ci0rCQlFTkdJTkVfbG9hZF9nb3N0OwotKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKLSsJCUFTTjFfUENUWF9nZXRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKLSsJCVRTX1JFU1BfbmV3OwotKwkJRVNTX0NFUlRfSURfZHVwOwotKwkJVFNfU1RBVFVTX0lORk9fZHVwOwotKwkJVFNfUkVRX2RlbGV0ZV9leHQ7Ci0rCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7Ci0rCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7Ci0rCQlpMmRfQ01TX2Jpb19zdHJlYW07Ci0rCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OwotKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7Ci0rCQlUU19SRVFfZ2V0X25vbmNlOwotKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOwotKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOwotKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKLSsJCUFTTjFfU0VUX0FOWV9pdDsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKLSsJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OwotKwkJZDJpX1RTX1RTVF9JTkZPOwotKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7Ci0rCQlkMmlfVFNfUkVTUF9iaW87Ci0rCQlPVEhFUk5BTUVfY21wOwotKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOwotKwkJVFNfUkVTUF9DVFhfbmV3OwotKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87Ci0rCQlQS0NTN19maW5hbDsKLSsJCUVWUF9QS0VZX2Jhc2VfaWQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7Ci0rCQlUU19SRVFfc2V0X21zZ19pbXByaW50OwotKwkJRVZQX1BLRVlfQ1RYX2N0cmw7Ci0rCQlUU19DT05GX3NldF9kaWdlc3RzOwotKwkJZDJpX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKLSsJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOwotKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOwotKwkJVFNfQUNDVVJBQ1lfbmV3OwotKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7Ci0rCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKLSsJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OwotKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OwotKwkJTkVUU0NBUEVfWDUwOV9mcmVlOwotKwkJaTJiX1BWS19iaW87Ci0rCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOwotKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7Ci0rCQliMmlfUFZLX2JpbzsKLSsJCUFTTjFfVVRDVElNRV9hZGo7Ci0rCQlUU19UU1RfSU5GT19uZXc7Ci0rCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKLSsJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOwotKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfdGltZTsKLSsJCVBLQ1M4X3BrZXlfZ2V0MDsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKLSsJCU9CSl9hZGRfc2lnaWQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19zaWduOwotKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKLSsJCUVWUF9QS0VZX3NpZ247Ci0rCQlPQkpfc2lnaWRfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7Ci0rCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OwotKwkJQVNOMV9USU1FX2FkajsKLSsJCVRTX09CSl9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKLSsJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOwotKwkJQ01TX3N0cmVhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfY2I7Ci0rCQlQS0NTN190b19UU19UU1RfSU5GTzsKLSsJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKLSsJCWkyZF9UU19SRVNQX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKLSsJCVRTX1JFUV9zZXRfbm9uY2U7Ci0rCQlFU1NfQ0VSVF9JRF9uZXc7Ci0rCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOwotKwkJVFNfUkVRX2dldF9leHRfY291bnQ7Ci0rCQlCVUZfcmV2ZXJzZTsKLSsJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKLSsJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7Ci0rCQlpMmJfUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfVFNfUkVTUDsKLSsJCWIyaV9QdWJsaWNLZXk7Ci0rCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7Ci0rCQlUU19TVEFUVVNfSU5GT19mcmVlOwotKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47Ci0rCQlPQkpfYnNlYXJjaF9leF87Ci0rCQlBU04xX2JuX3ByaW50OwotKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKLSsJCUVWUF9EaWdlc3RWZXJpZnlJbml0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOwotKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKLSsJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7Ci0rCQlQS0NTOF9wa2V5X3NldDA7Ci0rCQlBU04xX1NUUklOR19jb3B5OwotKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOwotKwkJWDUwOV9DUkxfbWF0Y2g7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7Ci0rCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OwotKwkJZDJpX1RTX1JFU1A7Ci0rCQlUU19DT05GX2xvYWRfY2VydHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7Ci0rCQlFUlJfbG9hZF9UU19zdHJpbmdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247Ci0rCQlFVlBfUEtFWV9DVFhfZHVwOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OwotKwkJaTJiX1B1YmxpY0tleV9iaW87Ci0rCQlUU19DT05GX3NldF9jZXJ0czsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOwotKwkJVFNfVkVSSUZZX0NUWF9mcmVlOwotKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOwotKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKLSsJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKLSsJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOwotKwkJVFNfUkVRX2dldF92ZXJzaW9uOwotKwkJVFNfUkVRX2FkZF9leHQ7Ci0rCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOwotKwkJT0JKX2JzZWFyY2hfOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OwotKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07Ci0rCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7Ci0rCQlQS0NTN19zaWduX2FkZF9zaWduZXI7Ci0rCQlkMmlfVFNfVFNUX0lORk9fYmlvOwotKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOwotKwkJVFNfUkVTUF9wcmludF9iaW87Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0czsKLSsJCUhNQUNfQ1RYX2NvcHk7Ci0rCQlQS0NTNV9wYmUyX3NldF9pdjsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOwotKwkJYjJpX1ByaXZhdGVLZXk7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOwotKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7Ci0rCQlUU19DT05GX3NldF9zZXJpYWw7Ci0rCQlUU19UU1RfSU5GT19mcmVlOwotKwkJZDJpX1RTX1JFUV9mcDsKLSsJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOwotKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOwotKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7Ci0rCQlFVlBfQ0lQSEVSX2RvX2FsbDsKLSsJCWIyaV9Qcml2YXRlS2V5X2JpbzsKLSsJCU9DU1BfQ0VSVElEX2R1cDsKLSsJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07Ci0rCQlUU19NU0dfSU1QUklOVF9kdXA7Ci0rCQlQS0NTN19wcmludF9jdHg7Ci0rCQlpMmRfVFNfUkVRX2JpbzsKLSsJCUVWUF93aGlybHBvb2w7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7Ci0rCQlBU04xX1BDVFhfc2V0X2ZsYWdzOwotKwkJaTJkX0VTU19DRVJUX0lEOwotKwkJVFNfVkVSSUZZX0NUWF9uZXc7Ci0rCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7Ci0rCQlFVlBfUEtFWV92ZXJpZnk7Ci0rCQlXSElSTFBPT0xfRmluYWw7Ci0rCQlYNTA5X0NSTF9NRVRIT0RfbmV3OwotKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OwotKwkJTkVUU0NBUEVfWDUwOV9pdDsKLSsJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOwotKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOwotKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OwotKwkJZDJpX1RTX1JFUTsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7Ci0rCQlCSU9fZl9hc24xOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7Ci0rCQlFVlBfUEJFX2ZpbmQ7Ci0rCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7Ci0rCQlFVlBfUEtFWV9kZXJpdmU7Ci0rCQlpMmRfVFNfUkVROwotKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7Ci0rCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOwotKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKLSsJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7Ci0rCQlUU19SRVNQX2dldF90b2tlbjsKLSsJCVRTX0FDQ1VSQUNZX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOwotKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7Ci0rCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OwotKwkJVFNfUkVTUF9mcmVlOwotKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7Ci0rCQlDTVNfYWRkMV9jcmw7Ci0rCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7Ci0rCQlUU19SRVNQX0NUWF9hZGRfbWQ7Ci0rCQlUU19UU1RfSU5GT19kdXA7Ci0rCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKLSsJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKLSsJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOwotKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247Ci0rCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87Ci0rCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7Ci0rCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOwotKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKLSsJCVRTX1NUQVRVU19JTkZPX25ldzsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfY2I7Ci0rCQlUU19SRVFfZ2V0X2V4dF9kMmk7Ci0rCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OwotKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7Ci0rCQlpMmRfTkVUU0NBUEVfWDUwOTsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7Ci0rCQlFVlBfUEtFWV9hc24xX2NvcHk7Ci0rCQlBU04xX1RZUEVfY21wOwotKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOwotKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7Ci0rCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKLSsJCWQyaV9FU1NfU0lHTklOR19DRVJUOwotKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7Ci0rCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKLSsJCVRTX1JFUV9zZXRfdmVyc2lvbjsKLSsJCUVWUF9QS0VZX2dldDA7Ci0rCQlCSU9fYXNuMV9zZXRfc3VmZml4OwotKwkJaTJkX1RTX1NUQVRVU19JTkZPOwotKwkJRVZQX01EX2RvX2FsbDsKLSsJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOwotKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7Ci0rCQlFVlBfUEtFWV9tZXRoX2FkZDA7Ci0rCQlUU19UU1RfSU5GT19zZXRfdHNhOwotKwkJRVZQX1BLRVlfbWV0aF9uZXc7Ci0rCQlXSElSTFBPT0xfVXBkYXRlOwotKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7Ci0rCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKLSsJCUVTU19TSUdOSU5HX0NFUlRfZHVwOwotKwkJZDJpX1RTX1JFUV9iaW87Ci0rCQlYNTA5X3RpbWVfYWRqX2V4OwotKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOwotKwkJZDJpX1RTX1NUQVRVU19JTkZPOwotKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKLSsJCUJJT19hc24xX2dldF9zdWZmaXg7Ci0rCQlUU19SRVFfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfZnJlZTsKLSsJCVRTX1JFUV9nZXRfZXh0czsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOwotKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87Ci0rCQlpMmRfVFNfUkVTUF9iaW87Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OwotKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOwotKwkJVFNfUkVRX25ldzsKLSsJCVRTX01TR19JTVBSSU5UX25ldzsKLSsJCUVWUF9QS0VZX21ldGhfZmluZDsKLSsJCUVWUF9QS0VZX2lkOwotKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKLSsJCWEyaV9HRU5FUkFMX05BTUU7Ci0rCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOwotKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7Ci0rCQlUU19DT05GX3NldF9wb2xpY2llczsKLSsJCUFTTjFfUENUWF9uZXc7Ci0rCQlFU1NfQ0VSVF9JRF9mcmVlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKLSsJCVRTX01TR19JTVBSSU5UX2ZyZWU7Ci0rCQlUU19WRVJJRllfQ1RYX2luaXQ7Ci0rCQlQS0NTN19zdHJlYW07Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7Ci0rCQlUU19DT05GX3NldF9kZWZfcG9saWN5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOwotKwkJTkVUU0NBUEVfWDUwOV9uZXc7Ci0rCQlUU19BQ0NVUkFDWV9mcmVlOwotKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87Ci0rCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7Ci0rCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7Ci0rCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOwotKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOwotKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOwotKwkJWDUwOV9jaGVja19ha2lkOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKLSsJCUFTTjFfUENUWF9mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKLSsJCWkyZF9BU04xX2Jpb19zdHJlYW07Ci0rCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7Ci0rCQlFVlBfUEtFWV9hc24xX2ZyZWU7Ci0rCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7Ci0rCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7Ci0rCQlHRU5FUkFMX05BTUVfY21wOwotKwkJZDJpX0FTTjFfU0VUX0FOWTsKLSsJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKLSsJCWkyZF9UU19SRVFfZnA7Ci0rCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7Ci0rCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7Ci0rCQlkMmlfRVNTX0NFUlRfSUQ7Ci0rCQlPQkpfZmluZF9zaWdpZF9hbGdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOwotKwkJUEtDUzVfUEJLREYyX0hNQUM7Ci0rCQlFVlBfUEtFWV9wYXJhbWdlbjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOwotKwkJQklPX25ld19QS0NTNzsKLSsJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOwotKwkJVFNfZXh0X3ByaW50X2JpbzsKLSsJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87Ci0rCQljaGVja19kZWZlcjsKLSsJCURTT19wYXRoYnlhZGRyOwotKwkJRVZQX1BLRVlfc2V0X3R5cGU7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOwotKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OwotKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKLSsJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OwotKwkJWDUwOV9OQU1FX2hhc2hfb2xkOwotKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7Ci0rCQlFVlBfTURfZmxhZ3M7Ci0rCQlUU19SRVNQX0NUWF9mcmVlOwotKwkJRFNBcGFyYW1zX2R1cDsKLSsJCURIcGFyYW1zX2R1cDsKLSsJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKLSsJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKLSsJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKLSsJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOwotKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKLSsJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47Ci0rCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKLSsJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OwotKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOwotKwkJVExTdjFfMV9tZXRob2Q7Ci0rCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7Ci0rCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOwotKwkJU1NMX2dldF9zcnBfZzsKLSsJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OwotKwkJU1NMX2dldF9zcnBfTjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOwotKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOwotKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7Ci0rCQlTU0xfU1JQX0NUWF9pbml0OwotKwkJU1JQX0NhbGNfQV9wYXJhbTsKLSsJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKLSsJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOwotKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKLSsJCVNTTF9TUlBfQ1RYX2ZyZWU7Ci0rCQlTU0xfc2V0X2RlYnVnOwotKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOwotKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOwotKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OwotKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX2NhY2hlX2hpdDsKLSsJCVNTTF9nZXQwX2tzc2xfY3R4OwotKwkJU1NMX3NldDBfa3NzbF9jdHg7Ci0rCQlTU0xfc2V0X3N0YXRlOwotKwkJU1NMX0NJUEhFUl9nZXRfaWQ7Ci0rCQlUTFN2MV8yX21ldGhvZDsKLSsJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOwotKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7Ci0rCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7Ci0rCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7Ci0rCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKLSsJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKLSsJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7Ci0rCi0rCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7Ci0rCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OwotKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKLSsJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47Ci0rCQlTUlBfQ2FsY191OwotKwkJU1JQX1ZCQVNFX2ZyZWU7Ci0rCQlTUlBfQ2FsY19jbGllbnRfa2V5OwotKwkJU1JQX2dldF9kZWZhdWx0X2dOOwotKwkJU1JQX0NhbGNfeDsKLSsJCVNSUF9DYWxjX0I7Ci0rCQlTUlBfVkJBU0VfbmV3OwotKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOwotKwkJU1JQX0NhbGNfQTsKLSsJCVNSUF9WZXJpZnlfQV9tb2RfTjsKLSsJCVNSUF9WQkFTRV9pbml0OwotKwkJU1JQX1ZlcmlmeV9CX21vZF9OOwotKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKLSsJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOwotKwkJRVZQX2Flc18xOTJfY3RyOwotKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87Ci0rCQlFVlBfUEtFWV9tZXRoX2NvcHk7Ci0rCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOwotKwkJRVZQX2Flc18xMjhfY3RyOwotKwkJRVZQX2Flc18yNTZfY3RyOwotKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfZmxhZ3M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7Ci0rCQlFVlBfYWVzXzEyOF94dHM7Ci0rCQlFVlBfYWVzXzI1Nl94dHM7Ci0rCQlFVlBfYWVzXzEyOF9nY207Ci0rCQlFQ19LRVlfY2xlYXJfZmxhZ3M7Ci0rCQlFQ19LRVlfc2V0X2ZsYWdzOwotKwkJRVZQX2Flc18yNTZfY2NtOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKLSsJCUVWUF9hZXNfMTI4X2NjbTsKLSsJCUVWUF9hZXNfMTkyX2djbTsKLSsJCVg1MDlfQUxHT1Jfc2V0X21kOwotKwkJUkFORF9pbml0X2ZpcHM7Ci0rCQlFVlBfYWVzXzI1Nl9nY207Ci0rCQlFVlBfYWVzXzE5Ml9jY207Ci0rCQlDTUFDX0NUWF9jb3B5OwotKwkJQ01BQ19DVFhfZnJlZTsKLSsJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKLSsJCUNNQUNfQ1RYX2NsZWFudXA7Ci0rCQlDTUFDX0luaXQ7Ci0rCQlDTUFDX1VwZGF0ZTsKLSsJCUNNQUNfcmVzdW1lOwotKwkJQ01BQ19DVFhfbmV3OwotKwkJQ01BQ19GaW5hbDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKLSsJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKLSsJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKLSsJCUVWUF9yYzRfaG1hY19tZDU7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7Ci0rCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOwotKwkJQ1JZUFRPX2djbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7Ci0rCQlFTkdJTkVfbG9hZF9yZHJhbmQ7Ci0rCQlDUllQVE9fY2NtMTI4X3NldGl2OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19nY20xMjhfYWFkOwotKwkJQ1JZUFRPX2NjbTEyOF9pbml0OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfbmV3OwotKwkJQ1JZUFRPX2NjbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fY2NtMTI4X2FhZDsKLSsJCUNSWVBUT19nY20xMjhfaW5pdDsKLSsJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKLSsJCUVOR0lORV9sb2FkX3JzYXg7Ci0rCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7Ci0rCQlQS0NTNV9wYmtkZjJfc2V0OwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7Ci0rCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKLSsJCVg1MDlfUkVRX3NpZ25fY3R4OwotKwkJUlNBX1BTU19QQVJBTVNfbmV3OwotKwkJWDUwOV9DUkxfc2lnbl9jdHg7Ci0rCQlYNTA5X3NpZ25hdHVyZV9kdW1wOwotKwkJZDJpX1JTQV9QU1NfUEFSQU1TOwotKwkJUlNBX1BTU19QQVJBTVNfaXQ7Ci0rCQlSU0FfUFNTX1BBUkFNU19mcmVlOwotKwkJWDUwOV9zaWduX2N0eDsKLSsJCWkyZF9SU0FfUFNTX1BBUkFNUzsKLSsJCUFTTjFfaXRlbV9zaWduX2N0eDsKLSsJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7Ci0rCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOwotKwkJT1BFTlNTTF9zdGRlcnI7Ci0rCQlPUEVOU1NMX2NwdWlkX3NldHVwOwotKwkJT1BFTlNTTF9zaG93ZmF0YWw7Ci0rCQlCSU9fbmV3X2RncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKLSsJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKLSsJCUJJT19zX2RhdGFncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1faXNfc2N0cDsKLSsJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKLSsJCUNSWVBUT19tZW1jbXA7Ci0rCQlTU0xfQ1RYX3NldF9hbHBuX3Byb3RvczsKLSsJCVNTTF9zZXRfYWxwbl9wcm90b3M7Ci0rCQlTU0xfQ1RYX3NldF9hbHBuX3NlbGVjdF9jYjsKLSsJCVNTTF9nZXQwX2FscG5fc2VsZWN0ZWQ7Ci0rCQlTU0xfQ1RYX3NldF9jdXN0b21fY2xpX2V4dDsKLSsJCVNTTF9DVFhfc2V0X2N1c3RvbV9zcnZfZXh0OwotKwkJU1NMX0NUWF9zZXRfc3J2X3N1cHBfZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2NsaV9zdXBwX2RhdGE7Ci0rCQlTU0xfc2V0X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvOwotKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mb19maWxlOwotKwkJU1NMX0NUWF9zZXRfY2VydF9jYjsKLSsJCVNTTF9DVFhfZ2V0MF9wYXJhbTsKLSsJCVNTTF9nZXQwX3BhcmFtOwotKwkJU1NMX2NlcnRzX2NsZWFyOwotKwkJRFRMU3YxXzJfbWV0aG9kOwotKwkJRFRMU3YxXzJfc2VydmVyX21ldGhvZDsKLSsJCURUTFN2MV8yX2NsaWVudF9tZXRob2Q7Ci0rCQlEVExTX21ldGhvZDsKLSsJCURUTFNfc2VydmVyX21ldGhvZDsKLSsJCURUTFNfY2xpZW50X21ldGhvZDsKLSsJCVNTTF9DVFhfZ2V0X3NzbF9tZXRob2Q7Ci0rCQlTU0xfQ1RYX2dldDBfY2VydGlmaWNhdGU7Ci0rCQlTU0xfQ1RYX2dldDBfcHJpdmF0ZWtleTsKLSsJCVNTTF9DT01QX3NldDBfY29tcHJlc3Npb25fbWV0aG9kczsKLSsJCVNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kczsKLSsJCVNTTF9DSVBIRVJfZmluZDsKLSsJCVNTTF9pc19zZXJ2ZXI7Ci0rCQlTU0xfQ09ORl9DVFhfbmV3OwotKwkJU1NMX0NPTkZfQ1RYX2ZpbmlzaDsKLSsJCVNTTF9DT05GX0NUWF9mcmVlOwotKwkJU1NMX0NPTkZfQ1RYX3NldF9mbGFnczsKLSsJCVNTTF9DT05GX0NUWF9jbGVhcl9mbGFnczsKLSsJCVNTTF9DT05GX0NUWF9zZXQxX3ByZWZpeDsKLSsJCVNTTF9DT05GX0NUWF9zZXRfc3NsOwotKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4OwotKwkJU1NMX0NPTkZfY21kOwotKwkJU1NMX0NPTkZfY21kX2FyZ3Y7Ci0rCQlTU0xfQ09ORl9jbWRfdmFsdWVfdHlwZTsKLSsJCVNTTF90cmFjZTsKLSsJCVNTTF9DSVBIRVJfc3RhbmRhcmRfbmFtZTsKLSsJCVNTTF9nZXRfdGxzYV9yZWNvcmRfYnluYW1lOwotKwkJQVNOMV9USU1FX2RpZmY7Ci0rCQlCSU9faGV4X3N0cmluZzsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9jdHg7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19lbmNyeXB0OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9wa2V5X2N0eDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfbWRfY3R4OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduYXR1cmU7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfYWxnOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX3Jla3M7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfb3JpZ19pZDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfb3JpZ19pZF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2dldDBfaWQ7Ci0rCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2NlcnRfY21wOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9zZXQwX3BrZXk7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfY3R4OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9kZWNyeXB0OwotKwkJQ01TX1NoYXJlZEluZm9fZW5jb2RlOwotKwkJREhfY29tcHV0ZV9rZXlfcGFkZGVkOwotKwkJZDJpX0RIeHBhcmFtczsKLSsJCWkyZF9ESHhwYXJhbXM7Ci0rCQlESF9nZXRfMTAyNF8xNjA7Ci0rCQlESF9nZXRfMjA0OF8yMjQ7Ci0rCQlESF9nZXRfMjA0OF8yNTY7Ci0rCQlESF9LREZfWDlfNDI7Ci0rCQlFQ0RIX0tERl9YOV82MjsKLSsJCUVDRFNBX01FVEhPRF9uZXc7Ci0rCQlFQ0RTQV9NRVRIT0RfZnJlZTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfYXBwX2RhdGE7Ci0rCQlFQ0RTQV9NRVRIT0RfZ2V0X2FwcF9kYXRhOwotKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduOwotKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduX3NldHVwOwotKwkJRUNEU0FfTUVUSE9EX3NldF92ZXJpZnk7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X2ZsYWdzOwotKwkJRUNEU0FfTUVUSE9EX3NldF9uYW1lOwotKwkJRVZQX2Rlc19lZGUzX3dyYXA7Ci0rCQlFVlBfYWVzXzEyOF93cmFwOwotKwkJRVZQX2Flc18xOTJfd3JhcDsKLSsJCUVWUF9hZXNfMjU2X3dyYXA7Ci0rCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEyNTY7Ci0rCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGEyNTY7Ci0rCQlDUllQVE9fMTI4X3dyYXA7Ci0rCQlDUllQVE9fMTI4X3Vud3JhcDsKLSsJCU9DU1BfUkVRX0NUWF9uYmlvOwotKwkJT0NTUF9SRVFfQ1RYX25ldzsKLSsJCU9DU1Bfc2V0X21heF9yZXNwb25zZV9sZW5ndGg7Ci0rCQlPQ1NQX1JFUV9DVFhfaTJkOwotKwkJT0NTUF9SRVFfQ1RYX25iaW9fZDJpOwotKwkJT0NTUF9SRVFfQ1RYX2dldDBfbWVtX2JpbzsKLSsJCU9DU1BfUkVRX0NUWF9odHRwOwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMTsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBfbWdmMTsKLSsJCVJTQV9PQUVQX1BBUkFNU19mcmVlOwotKwkJUlNBX09BRVBfUEFSQU1TX2l0OwotKwkJUlNBX09BRVBfUEFSQU1TX25ldzsKLSsJCVNTTF9nZXRfc2lnYWxnczsKLSsJCVNTTF9nZXRfc2hhcmVkX3NpZ2FsZ3M7Ci0rCQlTU0xfY2hlY2tfY2hhaW47Ci0rCQlYNTA5X2NoYWluX3VwX3JlZjsKLSsJCVg1MDlfaHR0cF9uYmlvOwotKwkJWDUwOV9DUkxfaHR0cF9uYmlvOwotKwkJWDUwOV9SRVZPS0VEX2R1cDsKLSsJCWkyZF9yZV9YNTA5X3RiczsKLSsJCVg1MDlfZ2V0MF9zaWduYXR1cmU7Ci0rCQlYNTA5X2dldF9zaWduYXR1cmVfbmlkOwotKwkJWDUwOV9DUkxfZGlmZjsKLSsJCVg1MDlfY2hhaW5fY2hlY2tfc3VpdGViOwotKwkJWDUwOV9DUkxfY2hlY2tfc3VpdGViOwotKwkJWDUwOV9jaGVja19ob3N0OwotKwkJWDUwOV9jaGVja19lbWFpbDsKLSsJCVg1MDlfY2hlY2tfaXA7Ci0rCQlYNTA5X2NoZWNrX2lwX2FzYzsKLSsJCVg1MDlfU1RPUkVfc2V0X2xvb2t1cF9jcmxzX2NiOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9zdG9yZTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDFfaG9zdDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9ob3N0ZmxhZ3M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX3BlZXJuYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9lbWFpbDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXA7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwX2FzYzsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfbmFtZTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9jb3VudDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDA7Ci0rCQlYNTA5VjNfRVhUX2ZyZWU7Ci0rCQlFQ19HUk9VUF9nZXRfbW9udF9kYXRhOwotKwkJRUNfY3VydmVfbmlkMm5pc3Q7Ci0rCQlFQ19jdXJ2ZV9uaXN0Mm5pZDsKLSsJCVBFTV93cml0ZV9iaW9fREh4cGFyYW1zOwotKwkJUEVNX3dyaXRlX0RIeHBhcmFtczsKLSsJCVNTTF9DVFhfYWRkX2NsaWVudF9jdXN0b21fZXh0OwotKwkJU1NMX0NUWF9hZGRfc2VydmVyX2N1c3RvbV9leHQ7Ci0rCQlTU0xfZXh0ZW5zaW9uX3N1cHBvcnRlZDsKLSsJCUJVRl9zdHJubGVuOwotKwkJc2tfZGVlcF9jb3B5OwotKwkJU1NMX3Rlc3RfZnVuY3Rpb25zOwotKwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKLStPUEVOU1NMXzEuMC4yZyB7Ci0rICAgICAgIGdsb2JhbDoKLSsgICAgICAgICAgICAgICBTUlBfVkJBU0VfZ2V0MV9ieV91c2VyOwotKyAgICAgICAgICAgICAgIFNSUF91c2VyX3B3ZF9mcmVlOwotK30gT1BFTlNTTF8xLjAuMmQ7Ci0rCi1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwIEBACi0rT1BFTlNTTF8xLjAuMiB7Ci0rCWdsb2JhbDoKLSsJCWJpbmRfZW5naW5lOwotKwkJdl9jaGVjazsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCU9QRU5TU0xfZmluaXNoOwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMCBAQAotK09QRU5TU0xfMS4wLjIgewotKwlnbG9iYWw6Ci0rCQliaW5kX2VuZ2luZTsKLSsJCXZfY2hlY2s7Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlPUEVOU1NMX2ZpbmlzaDsKLSsJbG9jYWw6Ci0rCQkqOwotK307Ci0rCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2ZpeC1jaXBoZXItZGVzLWVkZTMtY2ZiMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEzMThhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotVGhpcyBwYXRjaCBhZGRzIHRoZSBmaXggZm9yIG9uZSBvZiB0aGUgY2lwaGVycyB1c2VkIGluIG9wZW5zc2wsIG5hbWVseQotdGhlIGNpcGhlciBkZXMtZWRlMy1jZmIxLiBDb21wbGV0ZSBidWcgbG9nIGFuZCBwYXRjaCBpcyBwcmVzZW50IGhlcmU6Ci1odHRwOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0yODY3Ci0KLVNpZ25lZC1vZmYtYnk6IE11aGFtbWFkIFNoYWtlZWwgPG11aGFtbWFkX3NoYWtlZWxAbWVudG9yLmNvbT4KLQotSW5kZXg6IG9wZW5zc2wtMS4wLjIvY3J5cHRvL2V2cC9lX2RlczMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjIub3JpZy9jcnlwdG8vZXZwL2VfZGVzMy5jCi0rKysgb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2VfZGVzMy5jCi1AQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyBpbnQgZGVzX2VkZTNfY2ZiMV9jaXBoZXIoRVZQX0NJUEgKLSAgICAgc2l6ZV90IG47Ci0gICAgIHVuc2lnbmVkIGNoYXIgY1sxXSwgZFsxXTsKLSAKLS0gICAgZm9yIChuID0gMDsgbiA8IGlubDsgKytuKSB7Ci0rICAgIGZvciAobiA9IDA7IG4gKiA4IDwgaW5sOyArK24pIHsKLSAgICAgICAgIGNbMF0gPSAoaW5bbiAvIDhdICYgKDEgPDwgKDcgLSBuICUgOCkpKSA/IDB4ODAgOiAwOwotICAgICAgICAgREVTX2VkZTNfY2ZiX2VuY3J5cHQoYywgZCwgMSwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKGN0eCktPmtzMSwgJmRhdGEoY3R4KS0+a3MyLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzM2ZTVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLWF2b2lkLU5VTEwtcG9pbnRlci1kZXJlZmVyZW5jZS1pbi1FVlBfRGlnZXN0SW5pdF9leC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLW9wZW5zc2w6IGF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBFVlBfRGlnZXN0SW5pdF9leCgpCi0KLVdlIHNob3VsZCBhdm9pZCBhY2Nlc3NpbmcgdGhlIHR5cGUgcG9pbnRlciBpZiBpdCdzIE5VTEwsCi10aGlzIGNvdWxkIGhhcHBlbiBpZiBjdHgtPmRpZ2VzdCBpcyBub3QgTlVMTC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9vcGVuc3NsLWRldkBvcGVuc3NsLm9yZy9tc2czMjg2MC5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IFh1ZmVuZyBaaGFuZyA8eHVmZW5nLnpoYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUluZGV4OiBvcGVuc3NsLTEuMC4yaC9jcnlwdG8vZXZwL2RpZ2VzdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMmgub3JpZy9jcnlwdG8vZXZwL2RpZ2VzdC5jCi0rKysgb3BlbnNzbC0xLjAuMmgvY3J5cHRvL2V2cC9kaWdlc3QuYwotQEAgLTIxMSw3ICsyMTEsNyBAQCBpbnQgRVZQX0RpZ2VzdEluaXRfZXgoRVZQX01EX0NUWCAqY3R4LCBjCi0gICAgICAgICB0eXBlID0gY3R4LT5kaWdlc3Q7Ci0gICAgIH0KLSAjZW5kaWYKLS0gICAgaWYgKGN0eC0+ZGlnZXN0ICE9IHR5cGUpIHsKLSsgICAgaWYgKHR5cGUgJiYgKGN0eC0+ZGlnZXN0ICE9IHR5cGUpKSB7Ci0gICAgICAgICBpZiAoY3R4LT5kaWdlc3QgJiYgY3R4LT5kaWdlc3QtPmN0eF9zaXplKSB7Ci0gICAgICAgICAgICAgT1BFTlNTTF9mcmVlKGN0eC0+bWRfZGF0YSk7Ci0gICAgICAgICAgICAgY3R4LT5tZF9kYXRhID0gTlVMTDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wYXJhbGxlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wYXJhbGxlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNmNGM5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcGFyYWxsZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotRml4IHRoZSBwYXJhbGxlbCByYWNlcyBpbiB0aGUgTWFrZWZpbGVzLgotCi1UaGlzIHBhdGNoIHdhcyB0YWtlbiBmcm9tIHRoZSBHZW50b28gcGFja2FnaW5nOgotaHR0cHM6Ly9naXR3ZWIuZ2VudG9vLm9yZy9yZXBvL2dlbnRvby5naXQvcGxhaW4vZGV2LWxpYnMvb3BlbnNzbC9maWxlcy9vcGVuc3NsLTEuMC4yZy1wYXJhbGxlbC1idWlsZC5wYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLVJlZnJlc2hlZCBmb3IgMS4wLjJpCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0KLS0tLSBvcGVuc3NsLTEuMC4yZy9jcnlwdG8vTWFrZWZpbGUKLSsrKyBvcGVuc3NsLTEuMC4yZy9jcnlwdG8vTWFrZWZpbGUKLUBAIC04NSwxMSArODUsMTEgQEAKLSAJQGlmIFsgLXogIiQoVEhJUykiIF07IHRoZW4gJChNQUtFKSAtZiAkKFRPUCkvTWFrZWZpbGUgcmVmbGVjdCBUSElTPSRAOyBmaQotIAotIHN1YmRpcnM6Ci0tCUB0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQotKwkrQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gZmlsZXM6Ci0gCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgIkNQVUlEX09CSj0kKENQVUlEX09CSikiIE1ha2VmaWxlID4+ICQoVE9QKS9NSU5GTwotLQlAdGFyZ2V0PWZpbGVzOyAkKFJFQ1VSU0lWRV9NQUtFKQotKwkrQHRhcmdldD1maWxlczsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBsaW5rczoKLSAJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4uL2luY2x1ZGUvb3BlbnNzbCAkKEVYSEVBREVSKQotQEAgLTEwMCw3ICsxMDAsNyBAQAotICMgbGliOiAkKExJQik6IGFyZSBzcGxpdHRlZCB0byBhdm9pZCBlbmQtbGVzcyBsb29wCi0gbGliOgkkKExJQikKLSAJQHRvdWNoIGxpYgotLSQoTElCKToJJChMSUJPQkopCi0rJChMSUIpOgkkKExJQk9CSikgfCBzdWJkaXJzCi0gCSQoQVIpICQoTElCKSAkKExJQk9CSikKLSAJdGVzdCAteiAiJChGSVBTTElCRElSKSIgfHwgJChBUikgJChMSUIpICQoRklQU0xJQkRJUilmaXBzY2FuaXN0ZXIubwotIAkkKFJBTkxJQikgJChMSUIpIHx8IGVjaG8gTmV2ZXIgbWluZC4KLUBAIC0xMTEsNyArMTExLDcgQEAKLSAJZmkKLSAKLSBsaWJzOgotLQlAdGFyZ2V0PWxpYjsgJChSRUNVUlNJVkVfTUFLRSkKLSsJK0B0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQotIAotIGluc3RhbGw6Ci0gCUBbIC1uICIkKElOU1RBTExUT1ApIiBdICMgc2hvdWxkIGJlIHNldCBieSB0b3AgTWFrZWZpbGUuLi4KLUBAIC0xMjAsNyArMTIwLDcgQEAKLSAJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAotIAljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAotIAlkb25lOwotLQlAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gbGludDoKLSAJQHRhcmdldD1saW50OyAkKFJFQ1VSU0lWRV9NQUtFKQotLS0tIG9wZW5zc2wtMS4wLjJnL2VuZ2luZXMvTWFrZWZpbGUKLSsrKyBvcGVuc3NsLTEuMC4yZy9lbmdpbmVzL01ha2VmaWxlCi1AQCAtNzIsNyArNzIsNyBAQAotIAotIGFsbDoJbGliIHN1YmRpcnMKLSAKLS1saWI6CSQoTElCT0JKKQotK2xpYjoJJChMSUJPQkopIHwgc3ViZGlycwotIAlAaWYgWyAtbiAiJChTSEFSRURfTElCUykiIF07IHRoZW4gXAotIAkJc2V0IC1lOyBcCi0gCQlmb3IgbCBpbiAkKExJQk5BTUVTKTsgZG8gXAotQEAgLTg5LDcgKzg5LDcgQEAKLSAKLSBzdWJkaXJzOgotIAllY2hvICQoRURJUlMpCi0tCUB0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQotKwkrQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gZmlsZXM6Ci0gCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCi1AQCAtMTI4LDcgKzEyOCw3IEBACi0gCQkJICBtdiAtZiAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXcgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApLyQoTElCRElSKS9lbmdpbmVzLyQkcGZ4JCRsJCRzZnggKTsgXAotIAkJZG9uZTsgXAotIAlmaQotLQlAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gdGFnczoKLSAJY3RhZ3MgJChTUkMpCi0tLS0gb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUub3JnCi0rKysgb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUub3JnCi1AQCAtMjc5LDE3ICsyNzksMTcgQEAKLSBidWlsZF9saWJzc2w6IGJ1aWxkX3NzbCBsaWJzc2wucGMKLSAKLSBidWlsZF9jcnlwdG86Ci0tCUBkaXI9Y3J5cHRvOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0rCStAZGlyPWNyeXB0bzsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX3NzbDogYnVpbGRfY3J5cHRvCi0tCUBkaXI9c3NsOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0rCStAZGlyPXNzbDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX2VuZ2luZXM6IGJ1aWxkX2NyeXB0bwotLQlAZGlyPWVuZ2luZXM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9ZW5naW5lczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX2FwcHM6IGJ1aWxkX2xpYnMKLS0JQGRpcj1hcHBzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0rCStAZGlyPWFwcHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSBidWlsZF90ZXN0czogYnVpbGRfbGlicwotLQlAZGlyPXRlc3Q7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9dGVzdDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX3Rvb2xzOiBidWlsZF9saWJzCi0tCUBkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSAKLSBhbGxfdGVzdGFwcHM6IGJ1aWxkX2xpYnMgYnVpbGRfdGVzdGFwcHMKLSBidWlsZF90ZXN0YXBwczoKLUBAIC01NDQsNyArNTQ0LDcgQEAKLSAJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAotIAljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAotIAlkb25lOwotLQlAc2V0IC1lOyB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfQlVJTERfQ01EKQotKwkrQHNldCAtZTsgdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX0JVSUxEX0NNRCkKLSAJQHNldCAtZTsgbGlibGlzdD0iJChMSUJTKSI7IGZvciBpIGluICQkbGlibGlzdCA7XAotIAlkbyBcCi0gCQlpZiBbIC1mICIkJGkiIF07IHRoZW4gXAotLS0tIG9wZW5zc2wtMS4wLjJnL01ha2VmaWxlLnNoYXJlZAotKysrIG9wZW5zc2wtMS4wLjJnL01ha2VmaWxlLnNoYXJlZAotQEAgLTEwNSw2ICsxMDUsNyBAQAotICAgICBTSEFSRURGTEFHUz0iJCR7U0hBUkVERkxBR1M6LSQoQ0ZMQUdTKSAkKFNIQVJFRF9MREZMQUdTKX0iOyBcCi0gICAgIExJQlBBVEg9YGZvciB4IGluICQkTElCREVQUzsgZG8gZWNobyAkJHg7IGRvbmUgfCBzZWQgLWUgJ3MvXiAqLUwvLzt0JyAtZSBkIHwgdW5pcWA7IFwKLSAgICAgTElCUEFUSD1gZWNobyAkJExJQlBBVEggfCBzZWQgLWUgJ3MvIC86L2cnYDsgXAotKyAgICBbIC1lICQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVggXSAmJiBleGl0IDA7IFwKLSAgICAgTERfTElCUkFSWV9QQVRIPSQkTElCUEFUSDokJExEX0xJQlJBUllfUEFUSCBcCi0gICAgICQke1NIQVJFRENNRH0gJCR7U0hBUkVERkxBR1N9IFwKLSAJLW8gJCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCBcCi1AQCAtMTIyLDYgKzEyMyw3IEBACi0gCQkJZG9uZTsgXAotIAkJZmk7IFwKLSAJCWlmIFsgLW4gIiQkU0hMSUJfU09WRVIiIF07IHRoZW4gXAotKwkJCVsgLWUgIiQkU0hMSUIkJFNITElCX1NVRkZJWCIgXSB8fCBcCi0gCQkJKCAkKFNFVF9YKTsgcm0gLWYgJCRTSExJQiQkU0hMSUJfU1VGRklYOyBcCi0gCQkJICBsbiAtcyAkJHByZXYgJCRTSExJQiQkU0hMSUJfU1VGRklYICk7IFwKLSAJCWZpOyBcCi0tLS0gb3BlbnNzbC0xLjAuMmcvdGVzdC9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjJnL3Rlc3QvTWFrZWZpbGUKLUBAIC0xNDQsNyArMTQ0LDcgQEAKLSB0YWdzOgotIAljdGFncyAkKFNSQykKLSAKLS10ZXN0czoJZXhlIGFwcHMgJChURVNUUykKLSt0ZXN0czoJZXhlICQoVEVTVFMpCi0gCi0gYXBwczoKLSAJQChjZCAuLjsgJChNQUtFKSBESVJTPWFwcHMgYWxsKQotQEAgLTQzOCwxMzYgKzQzOCwxMzYgQEAKLSAJCWxpbmtfYXBwLiQke3NobGliX3RhcmdldH0KLSAKLSAkKFJTQVRFU1QpJChFWEVfRVhUKTogJChSU0FURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChSU0FURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChCTlRFU1QpJChFWEVfRVhUKTogJChCTlRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChFQ1RFU1QpJChFWEVfRVhUKTogJChFQ1RFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChFWFBURVNUKSQoRVhFX0VYVCk6ICQoRVhQVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFWFBURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRVhQVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSURFQVRFU1QpJChFWEVfRVhUKTogJChJREVBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChJREVBVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKElERUFURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRDJURVNUKSQoRVhFX0VYVCk6ICQoTUQyVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNRDJURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUQyVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBVEVTVCkkKEVYRV9FWFQpOiAkKFNIQVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU0hBVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFNIQTFURVNUKSQoRVhFX0VYVCk6ICQoU0hBMVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU0hBMVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChTSEExVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBMjU2VEVTVCkkKEVYRV9FWFQpOiAkKFNIQTI1NlRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU0hBMjU2VEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQTI1NlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFNIQTUxMlRFU1QpJChFWEVfRVhUKTogJChTSEE1MTJURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFNIQTUxMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChTSEE1MTJURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSTURURVNUKSQoRVhFX0VYVCk6ICQoUk1EVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSTURURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUk1EVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoTURDMlRFU1QpJChFWEVfRVhUKTogJChNREMyVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNREMyVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKE1EQzJURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRDRURVNUKSQoRVhFX0VYVCk6ICQoTUQ0VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNRDRURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUQ0VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoTUQ1VEVTVCkkKEVYRV9FWFQpOiAkKE1ENVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoTUQ1VEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKE1ENVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEhNQUNURVNUKSQoRVhFX0VYVCk6ICQoSE1BQ1RFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoSE1BQ1RFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChITUFDVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoV1BURVNUKSQoRVhFX0VYVCk6ICQoV1BURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoUkMyVEVTVCkkKEVYRV9FWFQpOiAkKFJDMlRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUkMyVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJDMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEJGVEVTVCkkKEVYRV9FWFQpOiAkKEJGVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKENBU1RURVNUKSQoRVhFX0VYVCk6ICQoQ0FTVFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoQ0FTVFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChDQVNUVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoUkM0VEVTVCkkKEVYRV9FWFQpOiAkKFJDNFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUkM0VEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJDNFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFJDNVRFU1QpJChFWEVfRVhUKTogJChSQzVURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJDNVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChSQzVURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChERVNURVNUKSQoRVhFX0VYVCk6ICQoREVTVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChERVNURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoREVTVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoUkFORFRFU1QpJChFWEVfRVhUKTogJChSQU5EVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSQU5EVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJBTkRURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChESFRFU1QpJChFWEVfRVhUKTogJChESFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChEU0FURVNUKSQoRVhFX0VYVCk6ICQoRFNBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChEU0FURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRFNBVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoTUVUSFRFU1QpJChFWEVfRVhUKTogJChNRVRIVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNRVRIVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKE1FVEhURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChTU0xURVNUKSQoRVhFX0VYVCk6ICQoU1NMVEVTVCkubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQotIAotICQoRU5HSU5FVEVTVCkkKEVYRV9FWFQpOiAkKEVOR0lORVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRU5HSU5FVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEVOR0lORVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVWUFRFU1QpJChFWEVfRVhUKTogJChFVlBURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEVWUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFVlBURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChFVlBFWFRSQVRFU1QpJChFWEVfRVhUKTogJChFVlBFWFRSQVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChFQ0RTQVRFU1QpJChFWEVfRVhUKTogJChFQ0RTQVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChFQ0RIVEVTVCkkKEVYRV9FWFQpOiAkKEVDREhURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEVDREhURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRUNESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKElHRVRFU1QpJChFWEVfRVhUKTogJChJR0VURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKElHRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChJR0VURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChKUEFLRVRFU1QpJChFWEVfRVhUKTogJChKUEFLRVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChBU04xVEVTVCkkKEVYRV9FWFQpOiAkKEFTTjFURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEFTTjFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoQVNOMVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFNSUFRFU1QpJChFWEVfRVhUKTogJChTUlBURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFNSUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChTUlBURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChWM05BTUVURVNUKSQoRVhFX0VYVCk6ICQoVjNOQU1FVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChWM05BTUVURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoVjNOQU1FVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSEVBUlRCRUFUVEVTVCkkKEVYRV9FWFQpOiAkKEhFQVJUQkVBVFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoSEVBUlRCRUFUVEVTVCk7ICQoQlVJTERfQ01EX1NUQVRJQykKLSsJK0B0YXJnZXQ9JChIRUFSVEJFQVRURVNUKTsgJChCVUlMRF9DTURfU1RBVElDKQotIAotICQoQ09OU1RUSU1FVEVTVCkkKEVYRV9FWFQpOiAkKENPTlNUVElNRVRFU1QpLm8KLS0JQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQotIAotICQoVkVSSUZZRVhUUkFURVNUKSQoRVhFX0VYVCk6ICQoVkVSSUZZRVhUUkFURVNUKS5vCi0tCUB0YXJnZXQ9JChWRVJJRllFWFRSQVRFU1QpICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFZFUklGWUVYVFJBVEVTVCkgJChCVUlMRF9DTUQpCi0gCi0gJChDTElFTlRIRUxMT1RFU1QpJChFWEVfRVhUKTogJChDTElFTlRIRUxMT1RFU1QpLm8KLS0JQHRhcmdldD0kKENMSUVOVEhFTExPVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKEJBRERUTFNURVNUKSQoRVhFX0VYVCk6ICQoQkFERFRMU1RFU1QpLm8KLS0JQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChCQUREVExTVEVTVCkgJChCVUlMRF9DTUQpCi0gCi0gJChTU0xWMkNPTkZURVNUKSQoRVhFX0VYVCk6ICQoU1NMVjJDT05GVEVTVCkubwotLQlAdGFyZ2V0PSQoU1NMVjJDT05GVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU1NMVjJDT05GVEVTVCkgJChCVUlMRF9DTUQpCi0gCi0gJChEVExTVEVTVCkkKEVYRV9FWFQpOiAkKERUTFNURVNUKS5vIHNzbHRlc3RsaWIubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChEVExTVEVTVCk7IGV4b2JqPXNzbHRlc3RsaWIubzsgJChCVUlMRF9DTUQpCi0gCi0gIyQoQUVTVEVTVCkubzogJChBRVNURVNUKS5jCi0gIwkkKENDKSAtYyAkKENGTEFHUykgLURJTlRFUk1FRElBVEVfVkFMVUVfS0FUIC1EVFJBQ0VfS0FUX01DVCAkKEFFU1RFU1QpLmMKLUBAIC01ODAsNiArNTgwLDYgQEAKLSAjCWZpCi0gCi0gZHVtbXl0ZXN0JChFWEVfRVhUKTogZHVtbXl0ZXN0Lm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PWR1bW15dGVzdDsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PWR1bW15dGVzdDsgJChCVUlMRF9DTUQpCi0gCi0gIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgotIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggM2IyMGZjZS4uNjVjNmNjNwotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKQEAgLTEsMiArMSw0IEBACiAjIS9iaW4vc2gKLW1ha2UgLWsgcnVudGVzdAorY2QgdGVzdAorT1BFTlNTTF9FTkdJTkVTPS4uL2VuZ2luZXMgQkxEVE9QPS4uIFNSQ1RPUD0uLiBwZXJsIHJ1bl90ZXN0cy5wbAorY2QgLi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2Y5N2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCkBAIC0wLDAgKzEsMjc1IEBACitTVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOWE4Zjk2ODEwNzM0NWUwYjc1YWE4YzJlY2FhN2VjOCIKKworREVQRU5EUyA9ICJtYWtlZGVwZW5kLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCisKK1BST1ZJREVTICs9ICJvcGVuc3NsMTAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgorCitQQUNLQUdFQ09ORklHID89ICJjcnlwdG9kZXYtbGludXgiCitQQUNLQUdFQ09ORklHW3BlcmxdID0gIiwsLCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTLCxjcnlwdG9kZXYtbGludXgiCisKK1RFUk1JT19saWJjLW11c2wgPSAiLURURVJNSU9TIgorVEVSTUlPID89ICItRFRFUk1JTyIKKyMgQXZvaWQgYmluYXJpZXMgYmVpbmcgbWFya2VkIGFzIHJlcXVpcmluZyBhbiBleGVjdXRhYmxlIHN0YWNrIHNpbmNlIGl0IAorIyBkb2Vzbid0KHdoaWNoIGNhdXNlcyBhbmQgdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggU0VMaW51eAorQ0ZMQUcgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAorCSAke1RFUk1JT30gJHtDRkxBR1N9IC1XYWxsIC1XYSwtLW5vZXhlY3N0YWNrIgorCitleHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMiCitleHBvcnQgRVhfTElCUyA9ICItbGdjYyAtbGRsIgorZXhwb3J0IEFTID0gIiR7Q0N9IC1jIgorCitpbmhlcml0IHBrZ2NvbmZpZyBzaXRlaW5mbyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QgcmVsYXRpdmVfc3ltbGlua3MKKworUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgJHtQTn0tbWlzYyBvcGVuc3NsLWNvbmYiCitGSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKK0ZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgorRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLyoiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyIKK1JERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCBkKX0iCisKKyMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gIE1ha2UgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KKyMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2Ugc2luY2UgdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgorRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK1JSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LW1pc2MgbWFrZSBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgYmMiCisKKyMgUmVtb3ZlIHRoaXMgdG8gZW5hYmxlIFNTTHYzLiBTU0x2MyBpcyBkZWZhdWx0ZWQgdG8gZGlzYWJsZWQgZHVlIHRvIHRoZSBQT09ETEUKKyMgdnVsbmVyYWJpbGl0eQorRVhUUkFfT0VDT05GID0gIiAtbm8tc3NsMyIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfZGFyd2luICgpIHsKKwlzZWQgLWkgLWUgJy92ZXJzaW9uLXNjcmlwdD1vcGVuc3NsXC5sZC9kJyBDb25maWd1cmUKK30KKworZG9fY29uZmlndXJlICgpIHsKKwljZCB1dGlsCisJcGVybCBwZXJscGF0aC5wbCAke1NUQUdJTkdfQklORElSX05BVElWRX0KKwljZCAuLgorCWxuIC1zZiBhcHBzL29wZW5zc2wucG9kIGNyeXB0by9jcnlwdG8ucG9kIHNzbC9zc2wucG9kIGRvYy8KKworCW9zPSR7SE9TVF9PU30KKwljYXNlICRvcyBpbgorCWxpbnV4LWdudWVhYmkgfFwKKwlsaW51eC1nbnVzcGUgfFwKKwlsaW51eC1tdXNsZWFiaSB8XAorCWxpbnV4LW11c2xzcGUgfFwKKwlsaW51eC1tdXNsICkKKwkJb3M9bGludXgKKwkJOzsKKwkJKikKKwkJOzsKKwllc2FjCisJdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgorCWNhc2UgJHRhcmdldCBpbgorCWxpbnV4LWFybSkKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYXJtZWIpCisJCXRhcmdldD1saW51eC1lbGYtYXJtZWIKKwkJOzsKKwlsaW51eC1hYXJjaDY0KikKKwkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKKwkJOzsKKwlsaW51eC1zaDMpCisJCXRhcmdldD1kZWJpYW4tc2gzCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9ZGViaWFuLXNoNAorCQk7OworCWxpbnV4LWk0ODYpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNDg2CisJCTs7CisJbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQorCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTU4NgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNjg2L2Ntb3YKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqZWwpCisJCXRhcmdldD1kZWJpYW4tbWlwc24zMmVsCisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzIKKwkJOzsKKwlsaW51eC1taXBzKjY0KmVsKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NGVsCisJCTs7CisJbGludXgtbWlwcyo2NCopCisJCXRhcmdldD1kZWJpYW4tbWlwczY0CisJCTs7CisJbGludXgtbWlwcyplbCkKKwkJdGFyZ2V0PWRlYmlhbi1taXBzZWwKKwkJOzsKKwlsaW51eC1taXBzKikKKwkJdGFyZ2V0PWRlYmlhbi1taXBzCisJCTs7CisJbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqfGxpbnV4LWdudSppbHAzMioqKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcG93ZXJwYykKKwkJdGFyZ2V0PWxpbnV4LXBwYworCQk7OworCWxpbnV4LXBvd2VycGM2NCkKKwkJdGFyZ2V0PWxpbnV4LXBwYzY0CisJCTs7CisJbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKKwkJOzsKKwlsaW51eC1zcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKKwkJOzsKKwlkYXJ3aW4taTM4NikKKwkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCisJCTs7CisJZXNhYworCSMgaW5qZWN0IG1hY2hpbmUtc3BlY2lmaWMgZmxhZ3MKKwlzZWQgLWkgLWUgInN8XlwoXCIkdGFyZ2V0XCIsXHMqXCJbXjpdXCtcKTpcKFteOl1cK1wpfFwxOiR7Q0ZMQUd9fGciIENvbmZpZ3VyZQorICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9CisgICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KKyAgICAgICAgZmkgICAgICAgIAorCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgc2VkIC1pICdzL1woKE9QRU5TU0w9XCkiLioiL1wxIm9wZW5zc2wiLycgTWFrZWZpbGUKK30KKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBkZXBlbmQKKwlvZV9ydW5tYWtlCit9CisKK2RvX2NvbXBpbGVfcHRlc3QgKCkgeworCSMgYnVpbGQgZGVwZW5kZW5jaWVzIGZvciB0ZXN0IGRpcmVjdG9yeSB0b28KKwlleHBvcnQgRElSUz0iJERJUlMgdGVzdCIKKwlvZV9ydW5tYWtlIGRlcGVuZAorCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Cit9CisKK2RvX2luc3RhbGwgKCkgeworCSMgQ3JlYXRlICR7RH0vJHtwcmVmaXh9IHRvIGZpeCBwYXJhbGxlbCBpc3N1ZXMKKwlta2RpciAtcCAke0R9LyR7cHJlZml4fS8KKworCW9lX3J1bm1ha2UgSU5TVEFMTF9QUkVGSVg9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBpbnN0YWxsCisKKwlvZV9saWJpbnN0YWxsIC1zbyBsaWJjcnlwdG8gJHtEfSR7bGliZGlyfQorCW9lX2xpYmluc3RhbGwgLXNvIGxpYnNzbCAke0R9JHtsaWJkaXJ9CisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KKworCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKwlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKworCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbAorCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAorCWVsc2UKKwkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CisJZmkKKworCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKwltdiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAorCSAgIFwKKwkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQorCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgorCisJIyBSZW5hbWUgbWFuIHBhZ2VzIHRvIHByZWZpeCBvcGVuc3NsMTAtKgorCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgZmA7IGRvCisJICAgIG12ICRmICQoZGlybmFtZSAkZikvb3BlbnNzbDEwLSQoYmFzZW5hbWUgJGYpCisJZG9uZQorCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgbGA7IGRvCisJICAgIGxuX2Y9YHJlYWRsaW5rICRmYAorCSAgICBybSAtZiAkZgorCSAgICBsbiAtcyBvcGVuc3NsMTAtJGxuX2YgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKKwlkb25lCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCWNwIC1yIC1MIE1ha2VmaWxlLm9yZyBNYWtlZmlsZSB0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSBwYXRoIHRvIG5hdGl2ZSBwZXJsIHdpdGggdGhlIHBhdGggdG8gdGFyZ2V0IHBlcmwKKyAgICAgICAgc2VkIC1pICdzLF5QRVJMPS4qLFBFUkw9JHtiaW5kaXJ9L3BlcmwsJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisJY3AgQ29uZmlndXJlIGNvbmZpZyBlX29zLmggJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAtTCBpbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9CisJbG4gLXNmICR7bGliZGlyfS9saWJjcnlwdG8uYSAke0R9JHtQVEVTVF9QQVRIfQorCWxuIC1zZiAke2xpYmRpcn0vbGlic3NsLmEgJHtEfSR7UFRFU1RfUEFUSH0KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KKwljcCBjcnlwdG8vY29uc3RhbnRfdGltZV9sb2NsLmggJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCisJY3AgLXIgY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7bGliZGlyfS9zc2wvbWlzYy9DQS5zaCAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7YmluZGlyfS9vcGVuc3NsICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWNwIGFwcHMvc2VydmVyLnBlbSAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWNwIGFwcHMvc2VydmVyMi5wZW0gICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwlpbnN0YWxsIHV0aWwvb3BlbnNzbHdyYXAuc2ggICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAorCWluc3RhbGwgdXRpbC9zaGxpYl93cmFwLnNoICAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCisJIyBUaW1lIHN0YW1wcyBhcmUgcmVsZXZhbnQgZm9yICJtYWtlIGFsbHRlc3RzIiwgb3RoZXJ3aXNlCisJIyBtYWtlIG1heSB0cnkgdG8gcmVjb21waWxlIGJpbmFyaWVzLiBOb3Qgb25seSBtdXN0IHRoZQorCSMgYmluYXJ5IGZpbGVzIGJlIG5ld2VyIHRoYW4gdGhlIHNvdXJjZXMsIHRoZXkgYWxzbyBtdXN0CisJIyBiZSBtb3JlIHJlY2VudCB0aGFuIHRoZSBoZWFkZXIgZmlsZXMgaW4gL3Vzci9pbmNsdWRlLgorCSMKKwkjIFVzaW5nICJjcCAtYSIgaXMgbm90IHN1ZmZpY2llbnQsIGJlY2F1c2UgZG9faW5zdGFsbAorCSMgZG9lcyBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHRpbWUgc3RhbXBzLgorCSMKKwkjIFNvIGluc3RlYWQgb2YgdXNpbmcgdGhlIG9yaWdpbmFsIGZpbGUgc3RhbXBzLCB3ZSBzZXQKKwkjIHRoZSBjdXJyZW50IHRpbWUgZm9yIGFsbCBmaWxlcy4gQmluYXJpZXMgd2lsbCBnZXQKKwkjIG1vZGlmaWVkIGFnYWluIGxhdGVyIHdoZW4gc3RyaXBwaW5nIHRoZW0sIGJ1dCB0aGF0J3Mgb2theS4KKwl0b3VjaCAke0R9JHtQVEVTVF9QQVRIfQorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtcHJpbnQwIHwgeGFyZ3MgLS12ZXJib3NlIC0wIHRvdWNoIC1yICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIGV4Y2x1ZGUgYmluYXJ5IGZpbGVzIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKKwlmb3IgZCBpbiBzc2x0ZXN0X29sZCB2M2V4dCB4NTA5YXV4OyBkbworCQlybSAtcmYgJHtEfSR7bGliZGlyfS8ke0JQTn0vcHRlc3QvdGVzdC8kZAorCWRvbmUKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtaSBcCisgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9Db25maWd1cmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3BlbnNzbCBcCisJICAgIE9QRU5TU0xfQ09ORj0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKKwkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wvY2VydHMgXAorCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wvY2VydC5wZW0gXAorCSAgICBPUEVOU1NMX0VOR0lORVM9JHtsaWJkaXJ9L3NzbC9lbmdpbmVzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMmsuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZDFhNTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yay5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLXJlcXVpcmUgb3BlbnNzbC5pbmMKLQotIyBGb3IgdGFyZ2V0IHNpZGUgdmVyc2lvbnMgb2Ygb3BlbnNzbCBlbmFibGUgc3VwcG9ydCBmb3IgT0NGIExpbnV4IGRyaXZlcgotIyBpZiB0aGV5IGFyZSBhdmFpbGFibGUuCi1ERVBFTkRTICs9ICJjcnlwdG9kZXYtbGludXgiCi0KLUNGTEFHICs9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTIgotQ0ZMQUdfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLWZQSUMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3ZmZhNWQ3NGJiNWEzMzcwNTZjMTRiMmVmOTNmYmY2IgotCi1leHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKLWV4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9JHtCUH0vdXRpbC8gXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LWRlcHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImY5NjVmYzBiZjAxYmY4ODJiMzEzMTRiNjEzOTFhZTY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiMzk3N2M2MWYyYWVkZjBmOTYzNjdkY2ZiNWM2ZTU3OGNmMzdlN2I4ZDkxM2I0ZWNiNjY0M2MzY2I4OGQ4YzAiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lbmdpbmVzIgotRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMvKi5zbyAke2xpYmRpcn0vZW5naW5lcyIKLQotIyBUaGUgY3J5cHRvX3VzZV9iaWdpbnQgcGF0Y2ggbWVhbnMgdGhhdCBwZXJsJ3MgYmlnbnVtIG1vZHVsZSBuZWVkcyB0byBiZQotIyBpbnN0YWxsZWQsIGJ1dCBzb21lIGRpc3RyaWJ1dGlvbnMgKGZvciBleGFtcGxlIEZlZG9yYSAyMykgZG9uJ3Qgc2hpcCBpdCBieQotIyBkZWZhdWx0LiAgQXMgdGhlIHJlc3VsdGluZyBlcnJvciBpcyB2ZXJ5IG1pc2xlYWRpbmcgY2hlY2sgZm9yIGJpZ251bSBiZWZvcmUKLSMgYnVpbGRpbmcuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlpZiAhIHBlcmwgLU1iaWdpbnQgLWUgdHJ1ZTsgdGhlbgotCQliYmZhdGFsICJUaGUgcGVybCBtb2R1bGUgJ2JpZ251bScgd2FzIG5vdCBmb3VuZCBidXQgdGhpcyBpcyByZXF1aXJlZCB0byBidWlsZCBvcGVuc3NsLiAgUGxlYXNlIGluc3RhbGwgdGhpcyBtb2R1bGUgKG9mdGVuIHBhY2thZ2VkIGFzIHBlcmwtYmlnbnVtKSBhbmQgcmUtcnVuIGJpdGJha2UuIgotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ybi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjQ0NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ybi5iYgpAQCAtMCwwICsxLDYwIEBACityZXF1aXJlIG9wZW5zc2wxMC5pbmMKKworIyBGb3IgdGFyZ2V0IHNpZGUgdmVyc2lvbnMgb2Ygb3BlbnNzbCBlbmFibGUgc3VwcG9ydCBmb3IgT0NGIExpbnV4IGRyaXZlcgorIyBpZiB0aGV5IGFyZSBhdmFpbGFibGUuCisKK0NGTEFHICs9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTIgorQ0ZMQUdfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLWZQSUMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA1N2Q5MjE4YzYxODBlMWQ5ZWU0MDc1NzJiMmRkMjI1IgorCitleHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKK2V4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgorCitTUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9b3BlbnNzbC0ke1BWfS91dGlsLyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY2EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL3BpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMTNiZGMxYjFkMWZmMzliNmZkNDJhMjU1ZTc0Njc2YTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzcwYmFiYjc1ZjI3OGMzOWUwYzUwZThjNGU3NDkzYmMwZjE4ZGI2ODY3NDc4MzQxYTgzMmE5ODJmZDE1YThmZSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCitGSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9zc2wvZW5naW5lcy8qLnNvICR7bGliZGlyfS9lbmdpbmVzIgorCisjIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCisjIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5CisjIGRlZmF1bHQuICBBcyB0aGUgcmVzdWx0aW5nIGVycm9yIGlzIHZlcnkgbWlzbGVhZGluZyBjaGVjayBmb3IgYmlnbnVtIGJlZm9yZQorIyBidWlsZGluZy4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCisJCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBnLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NDliZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBnLmJiCkBAIC0wLDAgKzEsMTU2IEBACitTVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYWU2ZGExMGY0ZmZkOTcwMzIxNDc3NmQyYWFiY2UzMiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmE1ZjFiOGI4MzViODhjYWRiY2U5YjM1ZWQ5NTMxYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU0ZDUwMTI2N2RhMzkzMTA5MDVjYjZkYzhjNjEyMWY3YTJjYWQ0NWE3NzA3Zjc2ZGY4MjhmZTFiODUwNzNhZiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L29wZW5zc2wtJHtQVn0iCisKK2luaGVyaXQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0CisKK2RvX2NvbmZpZ3VyZSAoKSB7CisJb3M9JHtIT1NUX09TfQorCWNhc2UgJG9zIGluCisJbGludXgtdWNsaWJjIHxcCisJbGludXgtdWNsaWJjZWFiaSB8XAorCWxpbnV4LWdudWVhYmkgfFwKKwlsaW51eC11Y2xpYmNzcGUgfFwKKwlsaW51eC1nbnVzcGUgfFwKKwlsaW51eC1tdXNsKikKKwkJb3M9bGludXgKKwkJOzsKKwkJKikKKwkJOzsKKwllc2FjCisJdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgorCWNhc2UgJHRhcmdldCBpbgorCWxpbnV4LWFybSkKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYXJtZWIpCisJCXRhcmdldD1saW51eC1hcm12NAorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LXNoMykKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXNoNCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LWk0ODYpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1pNjg2KQorCQl0YXJnZXQ9bGludXgtZWxmCisJCTs7CisJbGludXgtZ251eDMyLXg4Nl82NCkKKwkJdGFyZ2V0PWxpbnV4LXgzMgorCQk7OworCWxpbnV4LWdudTY0LXg4Nl82NCkKKwkJdGFyZ2V0PWxpbnV4LXg4Nl82NAorCQk7OworCWxpbnV4LW1pcHMpCisgICAgICAgICAgICAgICAgIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCisJCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgorCQk7OworCWxpbnV4LW1pcHNlbCkKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisgICAgICAgIGxpbnV4LWdudW4zMi1taXBzKikKKyAgICAgICAgICAgICAgIHRhcmdldD1saW51eC1taXBzNjQKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCkKKyAgICAgICAgICAgICAgIHRhcmdldD1saW51eDY0LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKKyAgICAgICAgICAgICAgIHRhcmdldD1saW51eDY0LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisJbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcG93ZXJwYykKKwkJdGFyZ2V0PWxpbnV4LXBwYworCQk7OworCWxpbnV4LXBvd2VycGM2NCkKKwkJdGFyZ2V0PWxpbnV4LXBwYzY0CisJCTs7CisJbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwlsaW51eC1zcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwlkYXJ3aW4taTM4NikKKwkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCisJCTs7CisJZXNhYworICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9CisgICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KKyAgICAgICAgZmkKKwlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj1gYmFzZW5hbWUgJHtsaWJkaXJ9YCAkdGFyZ2V0Cit9CisKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOiBJbiBmdW5jdGlvbiAnZXZlbnRmZCc6CisjfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzoxMTA6MjA6IGVycm9yOiAnX19OUl9ldmVudGZkJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKKyN8ICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9ldmVudGZkLCBuKTsKKyN8ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CitFWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAibm8tYWZhbGdlbmciCisKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCitFWFRSQV9PRUNPTkZfbGliYy1tdXNsICs9ICItRE9QRU5TU0xfTk9fQVNZTkMiCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKKyAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgICAgICAjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCisgICAgICAgICMgVGhpcyB2ZXJzaW9uIGlzIHVzZWQgZm9yIGV4YW1wbGUgd2hlbiBpbnN0YWxsaW5nIGNhLWNlcnRpZmljYXRlcyBkdXJpbmcKKyAgICAgICAgIyBpbWFnZSBjcmVhdGlvbi4KKyAgICAgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorICAgICAgICBzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXIgKiAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgICMgUHV0dGluZyAuc28gZmlsZXMgaW4gcHRlc3QgcGFja2FnZSB3aWxsIG1lc3MgdXAgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWFpbiBvcGVuc3NsIHBhY2thZ2UKKyAgICAgICAgIyBzbyB3ZSByZW5hbWUgdGhlbSB0byAuc28ucHRlc3QgYW5kIHBhdGNoIHRoZSB0ZXN0IGFjY29yZGluZ2x5CisgICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28ucHRlc3QKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zby5wdGVzdAorICAgICAgICBzZWQgLWkgJ3MvJHRhcmdldHtzaGFyZWRfZXh0ZW5zaW9uX3NpbXBsZX0vIi5zby5wdGVzdCIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlY2lwZXMvOTAtdGVzdF9zaGxpYmxvYWQudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBiYXNoIHB5dGhvbiIKKworRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLTEuMS8qIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4YWYzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJSUEMgcHJvZ3JhbSBudW1iZXIgbWFwcGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL25laWwuYnJvd24ubmFtZS9wb3J0bWFwLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wb3J0bWFwLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0zMTttZDU9NTFmZjY3ZTY2ZWM4NGIyMDA5YjAxN2IxZjk0YWZiZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZnJvbV9sb2NhbC5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzU7bWQ1PTFiZWM5MzhhMjI2OGI4YjQyM2M1ODgwMWFjZTNhZGMxIgotCi1JTklUU0NSSVBUX05BTUUgPSAicG9ydG1hcCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDEwIDIgMyA0IDUgLiBzdG9wIDMyIDAgMSA2IC4iCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicG9ydG1hcC5zZXJ2aWNlIgotCi1QQUNLQUdFUyA9KyAicG9ydG1hcC11dGlscyIKLUZJTEVTX3BvcnRtYXAtdXRpbHMgPSAiJHtiYXNlX3NiaW5kaXJ9L3BtYXBfc2V0ICR7YmFzZV9zYmluZGlyfS9wbWFwX2R1bXAiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9kZXN0ZGlyLW5vLXN0cmlwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYmY3ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZyb206IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6IFN1biwgMTMgTWF5IDIwMDcgMjE6MTU6MTIgKzAwMDAgKC0wNDAwKQotU3ViamVjdDogcmVzcGVjdCBERVNURElSIGFuZCBkb250IHVzZSAtcyB3aXRoIGluc3RhbGwKLVgtR2l0LVVybDogaHR0cDovL25laWwuYnJvd24ubmFtZS9naXQ/cD1wb3J0bWFwO2E9Y29tbWl0ZGlmZl9wbGFpbjtoPTYwM2M1OWI5NzhjMDRkZjIzNTRmNjhkNGEyZGM2NzZhNzU4ZmY0NmQKLQotcmVzcGVjdCBERVNURElSIGFuZCBkb250IHVzZSAtcyB3aXRoIGluc3RhbGwKLQotJChERVNURElSKSBpcyB0aGUgc3RhbmRhcmQgZm9yIGluc3RhbGxpbmcgaW50byBvdGhlciB0cmVlcywgbm90ICQoQkFTRURJUikgLi4uCi1zbyBJJ3ZlIGNvbnZlcnRlZCB0aGUgTWFrZWZpbGUgdG8gdXNlIHRoYXQuICBJJ3ZlIGFsc28gbGVmdCBpbiAkKEJBU0VESVIpIGFzIGEKLWRlZmF1bHQgdG8gc3VwcG9ydCBvbGQgaW5zdGFsbHM7IG5vdCBzdXJlIGlmIHlvdSdkIGp1c3QgY3V0IGl0LgotCi1TdHJpcHBpbmcgc2hvdWxkIGJlIGxlZnQgdG8gdGhlIHBlcnNvbiB0byBoYW5kbGUsIG5vdCBhdXRvbWF0aWNhbGx5IGRvbmUgYnkKLXRoZSBpbnN0YWxsIHN0ZXAuICBBbHNvLCBgaW5zdGFsbCAtc2AgYWx3YXlzIGNhbGxzIGBzdHJpcGAgd2hpY2ggaXMKLXdyb25nL3VuZGVzaXJlZCBpbiBjcm9zcy1jb21waWxpbmcgc2NlbmFyaW9zLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBOZWlsIEJyb3duIDxuZWlsYkBzdXNlLmRlPgotLS0tCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA5ZTlhNGI0Li41MzQzNDI4IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTM1LDEzICsxMzUsMTQgQEAgZnJvbV9sb2NhbDogQ1BQRkxBR1MgKz0gLURURVNUCi0gcG9ydG1hcC5tYW4gOiBwb3J0bWFwLjgKLSAJc2VkICQoTUFOX1NFRCkgPCBwb3J0bWFwLjggPiBwb3J0bWFwLm1hbgotIAotK0RFU1RESVIgPSAkKEJBU0VESVIpCi0gaW5zdGFsbDogYWxsCi0tCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA3NTUgLXMgcG9ydG1hcCAke0JBU0VESVJ9L3NiaW4KLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSAtcyBwbWFwX2R1bXAgJHtCQVNFRElSfS9zYmluCi0tCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA3NTUgLXMgcG1hcF9zZXQgJHtCQVNFRElSfS9zYmluCi0tCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA2NDQgcG9ydG1hcC5tYW4gJHtCQVNFRElSfS91c3Ivc2hhcmUvbWFuL21hbjgvcG9ydG1hcC44Ci0tCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA2NDQgcG1hcF9kdW1wLjggJHtCQVNFRElSfS91c3Ivc2hhcmUvbWFuL21hbjgKLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX3NldC44ICR7QkFTRURJUn0vdXNyL3NoYXJlL21hbi9tYW44Ci0rCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA3NTUgcG9ydG1hcCAkKERFU1RESVIpL3NiaW4KLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSBwbWFwX2R1bXAgJChERVNURElSKS9zYmluCi0rCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA3NTUgcG1hcF9zZXQgJChERVNURElSKS9zYmluCi0rCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA2NDQgcG9ydG1hcC5tYW4gJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjgvcG9ydG1hcC44Ci0rCWluc3RhbGwgLW8gcm9vdCAtZyByb290IC1tIDA2NDQgcG1hcF9kdW1wLjggJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjgKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX3NldC44ICQoREVTVERJUikvdXNyL3NoYXJlL21hbi9tYW44Ci0gCi0gY2xlYW46Ci0gCXJtIC1mICoubyBwb3J0bWFwIHBtYXBfZHVtcCBwbWFwX3NldCBmcm9tX2xvY2FsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9wb3J0bWFwLmluaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvcG9ydG1hcC5pbml0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2MjFhYTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9wb3J0bWFwLmluaXQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIS9iaW4vc2gKLSMKLSMjIyBCRUdJTiBJTklUIElORk8KLSMgUHJvdmlkZXM6ICAgICAgICAgIHBvcnRtYXAKLSMgUmVxdWlyZWQtU3RhcnQ6ICAgICRuZXR3b3JrCi0jIFJlcXVpcmVkLVN0b3A6ICAgICAkbmV0d29yawotIyBEZWZhdWx0LVN0YXJ0OiAgICAgUyAyIDMgNCA1Ci0jIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgotIyBTaG9ydC1EZXNjcmlwdGlvbjogVGhlIFJQQyBwb3J0bWFwcGVyCi0jIERlc2NyaXB0aW9uOiAgICAgICBQb3J0bWFwIGlzIGEgc2VydmVyIHRoYXQgY29udmVydHMgUlBDIChSZW1vdGUKLSMgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZSBDYWxsKSBwcm9ncmFtIG51bWJlcnMgaW50byBEQVJQQQotIyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wgcG9ydCBudW1iZXJzLiBJdCBtdXN0IGJlIHJ1bm5pbmcgaW4KLSMgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIG1ha2UgUlBDIGNhbGxzLiBTZXJ2aWNlcyB0aGF0IHVzZQotIyAgICAgICAgICAgICAgICAgICAgUlBDIGluY2x1ZGUgTkZTIGFuZCBOSVMuCi0jIyMgRU5EIElOSVQgSU5GTwotCi10ZXN0IC1mIC9zYmluL3BvcnRtYXAgfHwgZXhpdCAwCi0KLWNhc2UgIiQxIiBpbgotICAgIHN0YXJ0KQotCWVjaG8gIlN0YXJ0aW5nIHBvcnRtYXAgZGFlbW9uLi4uIgotICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjIC9zYmluL3BvcnRtYXAKLQotCWlmIFsgLWYgL3Zhci9ydW4vcG9ydG1hcC51cGdyYWRlLXN0YXRlIF07IHRoZW4KLSAgICAgICAgICBlY2hvICJSZXN0b3Jpbmcgb2xkIFJQQyBzZXJ2aWNlIGluZm9ybWF0aW9uLi4uIgotICAgICAgICAgIHNsZWVwIDEgIyBuZWVkcyBhIHNob3J0IHBhdXNlIG9yIHBtYXBfc2V0IHdvbid0IHdvcmsuIDooCi0JICBwbWFwX3NldCA8L3Zhci9ydW4vcG9ydG1hcC51cGdyYWRlLXN0YXRlCi0JICBybSAtZiAvdmFyL3J1bi9wb3J0bWFwLnVwZ3JhZGUtc3RhdGUKLSAgICAgICAgICBlY2hvICJkb25lLiIKLSAgICAgICAgZmkKLQotCTs7Ci0gICAgc3RvcCkKLSAgICAgICAgZWNobyAiU3RvcHBpbmcgcG9ydG1hcCBkYWVtb24uLi4iCi0gICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tZXhlYyAvc2Jpbi9wb3J0bWFwCi0JOzsKLSAgICByZWxvYWQpCi0JOzsKLSAgICBmb3JjZS1yZWxvYWQpCi0gICAgICAgICQwIHJlc3RhcnQKLQk7OwotICAgIHJlc3RhcnQpCi0JIyBwbWFwX2R1bXAgYW5kIHBtYXBfc2V0IG1heSBiZSBpbiBhIGRpZmZlcmVudCBwYWNrYWdlIGFuZCBub3QgaW5zdGFsbGVkLi4uCi0JaWYgWyAtZiAvc2Jpbi9wbWFwX2R1bXAgLWEgLWYgL3NiaW4vcG1hcF9zZXQgXTsgdGhlbgotCQlkb19zdGF0ZT0xCi0JZWxzZQotCQlkb19zdGF0ZT0wCi0JZmkKLQlbICRkb19zdGF0ZSAtZXEgMSBdICYmIHBtYXBfZHVtcCA+L3Zhci9ydW4vcG9ydG1hcC5zdGF0ZQotICAgICAgICAkMCBzdG9wCi0gICAgICAgICQwIHN0YXJ0Ci0JaWYgWyAkZG9fc3RhdGUgLWVxIDEgXTsgdGhlbgotCSAgaWYgWyAhIC1mIC92YXIvcnVuL3BvcnRtYXAudXBncmFkZS1zdGF0ZSBdOyB0aGVuCi0gICAgICAgICAgICBzbGVlcCAxCi0JICAgIHBtYXBfc2V0IDwvdmFyL3J1bi9wb3J0bWFwLnN0YXRlCi0JICBmaQotCSAgcm0gLWYgL3Zhci9ydW4vcG9ydG1hcC5zdGF0ZQotCWZpCi0JOzsKLSAgICAqKQotCWVjaG8gIlVzYWdlOiAvZXRjL2luaXQuZC9wb3J0bWFwIHtzdGFydHxzdG9wfHJlbG9hZHxyZXN0YXJ0fSIKLQlleGl0IDEKLQk7OwotZXNhYwotCi1leGl0IDAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9wb3J0bWFwLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjlkN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249VGhlIFJQQyBwb3J0bWFwcGVyCi1BZnRlcj1uZXR3b3JrLnRhcmdldAotCi1bU2VydmljZV0KLVR5cGU9Zm9ya2luZwotRXhlY1N0YXJ0PUBCQVNFX1NCSU5ESVJAL3BvcnRtYXAKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3RjcGQtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3RjcGQtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjI1MDU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC90Y3BkLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogU3VuLCAxMyBNYXkgMjAwNyAyMToxNzozMiArMDAwMCAoLTA0MDApCi1TdWJqZWN0OiBmaXggYnVpbGRpbmcgd2l0aCB0Y3BkIHN1cHBvcnQgZGlzYWJsZWQKLVgtR2l0LVVybDogaHR0cDovL25laWwuYnJvd24ubmFtZS9naXQ/cD1wb3J0bWFwO2E9Y29tbWl0ZGlmZl9wbGFpbjtoPTc4NDcyMDdhZWQxYjQ0ZmFmMDc3ZWVkMTRhOWFjOWM2ODI0NGViYTUKLQotZml4IGJ1aWxkaW5nIHdpdGggdGNwZCBzdXBwb3J0IGRpc2FibGVkCi0KLU1ha2Ugc3VyZSBwbWFwX2NoZWNrLmMgb25seSBpbmNsdWRlcyB0Y3BkLmggd2hlbiBIT1NUU19BQ0NFU1MgaXMgZGVmaW5lZC4KLQotU2lnbmVkLW9mZi1ieTogVGltb3RoeSBSZWRhZWxsaSA8ZHJpenp0QGdlbnRvby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBOZWlsIEJyb3duIDxuZWlsYkBzdXNlLmRlPgotLS0tCi0KLWRpZmYgLS1naXQgYS9wbWFwX2NoZWNrLmMgYi9wbWFwX2NoZWNrLmMKLWluZGV4IDg0ZjJjMTIuLjQ0M2E4MjIgMTAwNjQ0Ci0tLS0gYS9wbWFwX2NoZWNrLmMKLSsrKyBiL3BtYXBfY2hlY2suYwotQEAgLTQ0LDcgKzQ0LDkgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxycGMvcnBjZW50Lmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhPU1RTX0FDQ0VTUwotICNpbmNsdWRlIDx0Y3BkLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotICNpbmNsdWRlIDxncnAuaD4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXBfNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTcwMDk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1yZXF1aXJlIHBvcnRtYXAuaW5jCi0KLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMgIgotCi1QUiA9ICJyOSIKLQotU1JDX1VSSSA9ICJodHRwczovL2Zvc3NpZXMub3JnL2xpbnV4L21pc2Mvb2xkL3BvcnRtYXAtNi4wLnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXN0ZGlyLW5vLXN0cmlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjcGQtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BvcnRtYXAuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3J0bWFwLnNlcnZpY2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYzEwOGFiNjhiZjBmMzQ0NzdmODMxNzc5MWFhZjFmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmM4MjBkMzlmM2U2ZTcyOWQxYmVhMzI4N2EyZDhhNmM2ODRmMTAwNmZiOTYxMmY5N2RjYWQ0YTI4MWQ0MWRlIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59XyR7UFZ9LyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICIsLHRjcC13cmFwcGVycyIKLQotQ1BQRkxBR1MgKz0gIi1ERkFDSUxJVFk9TE9HX0RBRU1PTiAtREVOQUJMRV9ETlMgLURIT1NUU19BQ0NFU1MiCi1DRkxBR1MgKz0gIi1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWZQSUMiCi1FWFRSQV9PRU1BS0UgKz0gIidOT19UQ1BfV1JBUFBFUj0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0Y3Atd3JhcHBlcnMnLCAnJywgJzEnLCBkKX0nIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMgIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjICIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOC8gJHtEfSR7YmFzZV9zYmluZGlyfSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wb3J0bWFwLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcnRtYXAKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcG9ydG1hcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3J0bWFwLnNlcnZpY2UKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQuc2gKaW5kZXggNWM5ZTVkMy4uMzVhMWFhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQuc2gKQEAgLTQsNiArNCw3IEBACiBXUEFfU1VQX0JJTj0iL3Vzci9zYmluL3dwYV9zdXBwbGljYW50IgogV1BBX1NVUF9QTkFNRT0id3BhX3N1cHBsaWNhbnQiCiBXUEFfU1VQX1BJREZJTEU9Ii92YXIvcnVuL3dwYV9zdXBwbGljYW50LiRJRkFDRS5waWQiCitXUEFfQ09NTU9OX0NUUkxfSUZBQ0U9Ii92YXIvcnVuL3dwYV9zdXBwbGljYW50IgogV1BBX1NVUF9PUFRJT05TPSItQiAtUCAkV1BBX1NVUF9QSURGSUxFIC1pICRJRkFDRSIKIAogVkVSQk9TSVRZPTAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQppbmRleCBjZWFmMTVmLi5hMDYyMDI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCkBAIC0zLDE1ICszLDEzIEBACiAKIFBBVEg9Ii91c3IvbG9jYWwvYmluOi91c3IvYmluOi9iaW4iCiBFRElUT1I9InZpIgkJCSMgbmVlZGVkIGZvciBwYWNrYWdlcyBsaWtlIGNyb24sIGdpdC1jb21taXQKLXRlc3QgLXogIiRURVJNIiAmJiBURVJNPSJ2dDEwMCIJIyBCYXNpYyB0ZXJtaW5hbCBjYXBhYi4gRm9yIHNjcmVlbiBldGMuCitbICIkVEVSTSIgXSB8fCBURVJNPSJ2dDEwMCIJIyBCYXNpYyB0ZXJtaW5hbCBjYXBhYi4gRm9yIHNjcmVlbiBldGMuCiAKLWlmIFsgIiRIT01FIiA9ICJST09USE9NRSIgXTsgdGhlbgotCVBBVEg9JFBBVEg6L3Vzci9sb2NhbC9zYmluOi91c3Ivc2Jpbjovc2JpbgotZmkKLWlmIFsgIiRQUzEiIF07IHRoZW4KLQkjIHdvcmtzIGZvciBiYXNoIGFuZCBhc2ggKG5vIG90aGVyIHNoZWxscyBrbm93biB0byBiZSBpbiB1c2UgaGVyZSkKLQlQUzE9J1x1QFxoOlx3XCQgJwotZmkKKyMgQWRkIC9zYmluICYgY28gdG8gJFBBVEggZm9yIHRoZSByb290IHVzZXIKK1sgIiRIT01FIiAhPSAiUk9PVEhPTUUiIF0gfHwgUEFUSD0kUEFUSDovdXNyL2xvY2FsL3NiaW46L3Vzci9zYmluOi9zYmluCisKKyMgU2V0IHRoZSBwcm9tcHQgZm9yIGJhc2ggYW5kIGFzaCAobm8gb3RoZXIgc2hlbGxzIGtub3duIHRvIGJlIGluIHVzZSBoZXJlKQorWyAteiAiJFBTMSIgXSB8fCBQUzE9J1x1QFxoOlx3XCQgJwogCiBpZiBbIC1kIC9ldGMvcHJvZmlsZS5kIF07IHRoZW4KIAlmb3IgaSBpbiAvZXRjL3Byb2ZpbGUuZC8qLnNoOyBkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9zaGFyZS9kb3QucHJvZmlsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvc2hhcmUvZG90LnByb2ZpbGUKaW5kZXggOTc5NzkzZS4uYTg3MzE2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9zaGFyZS9kb3QucHJvZmlsZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3NoYXJlL2RvdC5wcm9maWxlCkBAIC03LDQgKzcsNSBAQAogIyBwYXRoIHNldCBieSAvZXRjL3Byb2ZpbGUKICMgZXhwb3J0IFBBVEgKIAotbWVzZyBuCisjIE1pZ2h0IGZhaWwgYWZ0ZXIgInN1IC0gbXl1c2VyIiB3aGVuIC9kZXYvdHR5KiBpcyBub3Qgd3JpdGFibGUgYnkgIm15dXNlciIuCittZXNnIG4gMj4vZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKaW5kZXggY2E3YmYwNi4uMWMwODYzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9iYWNrdXBzICR7bG9jYWxzdGF0ZWRpcn0vbGliIFwKICAgICAgICAgICAgL3N5cyAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9taXNjICR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wgXAogICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlIFwKLSAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9sb2cgXAorICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9LyR7QCd2b2xhdGlsZS8nIGlmIG9lLnR5cGVzLmJvb2xlYW4oJyR7Vk9MQVRJTEVfTE9HX0RJUn0nKSBlbHNlICcnfWxvZyBcCiAgICAgICAgICAgIC9ob21lICR7cHJlZml4fS9zcmMgJHtsb2NhbHN0YXRlZGlyfS9sb2NhbCBcCiAgICAgICAgICAgIC9tZWRpYSIKIApAQCAtNTMsNyArNTMsNyBAQAogICAgICAgICAgICAgICAgJHtwcmVmaXh9L2xpYi9sb2NhbGUiCiBkaXJzMjc3NS1sc2IgPSAiL3Zhci9tYWlsIgogCi12b2xhdGlsZXMgPSAibG9nIHRtcCIKK3ZvbGF0aWxlcyA9ICIke0AnbG9nJyBpZiBvZS50eXBlcy5ib29sZWFuKCcke1ZPTEFUSUxFX0xPR19ESVJ9JykgZWxzZSAnJ30gdG1wIgogY29uZmZpbGVzID0gIiR7c3lzY29uZmRpcn0vZGViaWFuX3ZlcnNpb24gJHtzeXNjb25mZGlyfS9ob3N0LmNvbmYgXAogICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaXNzdWUgLyR7c3lzY29uZmRpcn0vaXNzdWUubmV0IFwKICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYgJHtzeXNjb25mZGlyfS9wcm9maWxlIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKaW5kZXggYWRjNmU5YS4uNDg5MTBjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKQEAgLTM5LDkgKzM5LDExIEBACiBJTklUU0NSSVBUX05BTUVfJHtQTn0tdWRoY3BkID0gImJ1c3lib3gtdWRoY3BkIgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXN5c2xvZyIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zeXNsb2cgPSAiYnVzeWJveC1zeXNsb2cuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1zeXNsb2cgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1NSQ19VUkknLCAnZmlsZTovL3N5c2xvZy5jZmcnLCAnYnVzeWJveC1zeXNsb2cuc2VydmljZScsICcnLCBkKX0iCiAKLUNPTkZGSUxFU18ke1BOfS1zeXNsb2cgPSAiJHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mLiR7QlBOfSIKK0NPTkZGSUxFU18ke1BOfS1zeXNsb2cgPSAiJHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mIgorUkNPTkZMSUNUU18ke1BOfS1zeXNsb2cgPSAicnN5c2xvZyBzeXNrbG9nZCBzeXNsb2ctbmciCisKIENPTkZGSUxFU18ke1BOfS1tZGV2ID0gIiR7c3lzY29uZmRpcn0vbWRldi5jb25mIgogCiBSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1zeXNsb2cgJHtQTn0tdWRoY3BjIgpAQCAtNzEsNyArNzMsNyBAQAogCWJ1c3lib3hfY2ZnKGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgVHJ1ZSwgRmFsc2UsIGQpLCAnQ09ORklHX1JGS0lMTCcsIGNuZiwgcmVtKQogCXJldHVybiAiXG4iLmpvaW4oY25mKSwgIlxuIi5qb2luKHJlbSkKIAotIyBYLCBZID0gJHtAZmVhdHVyZXNfdG9fdWNsaWJjX3NldHRpbmdzKGQpfQorIyBYLCBZID0gJHtAZmVhdHVyZXNfdG9fYnVzeWJveF9zZXR0aW5ncyhkKX0KICMgdW5mb3J0dW5hdGVseSBkb2Vzbid0IHNlZW0gdG8gd29yayB3aXRoIGJpdGJha2UsIHdvcmthcm91bmQ6CiBkZWYgZmVhdHVyZXNfdG9fYnVzeWJveF9jb25mKGQpOgogCWNuZiwgcmVtID0gZmVhdHVyZXNfdG9fYnVzeWJveF9zZXR0aW5ncyhkKQpAQCAtMTAyLDYgKzEwNCw5IEBACiB9CiAKIGRvX3ByZXBhcmVfY29uZmlnICgpIHsKKwlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJCWV4cG9ydCBLQ09ORklHX05PVElNRVNUQU1QPTEKKwlmaQogCXNlZCAtZSAnL0NPTkZJR19TVEFUSUMvZCcgXAogCQk8ICR7V09SS0RJUn0vZGVmY29uZmlnID4gJHtTfS8uY29uZmlnCiAJZWNobyAiIyBDT05GSUdfU1RBVElDIGlzIG5vdCBzZXQiID4+IC5jb25maWcKQEAgLTExOCw2ICsxMjMsNyBAQAogCQkgICR7U30vLmNvbmZpZy5vZS10bXAgPiAke1N9Ly5jb25maWcKIAlmaQogCXNlZCAtaSAncy9DT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtbiIvQ09ORklHX0lGVVBET1dOX1VESENQQ19DTURfT1BUSU9OUz0iLVIgLWIiLycgJHtTfS8uY29uZmlnCisJc2VkIC1pICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnICR7U30vLmNvbmZpZwogfQogCiAjIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBzcmMgdXJpIHRoYXQgYXJlIC5jZmcgZmlsZXMKQEAgLTEzOCw2ICsxNDQsOSBAQAogCiBkb19jb21waWxlKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTCisJaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCQlleHBvcnQgS0NPTkZJR19OT1RJTUVTVEFNUD0xCisJZmkKIAlpZiBbICIke0JVU1lCT1hfU1BMSVRfU1VJRH0iID0gIjEiIC1hIHhgZ3JlcCAiQ09ORklHX0ZFQVRVUkVfSU5ESVZJRFVBTD15IiAuY29uZmlnYCA9IHggXTsgdGhlbgogCSMgc3BsaXQgdGhlIC5jb25maWcgaW50byB0d28gcGFydHMsIGFuZCBtYWtlIHR3byBidXN5Ym94IGJpbmFyaWVzCiAJCWlmIFsgLWUgLmNvbmZpZy5vcmlnIF07IHRoZW4KQEAgLTI0MSw5ICsyNTAsOSBAQAogCWZpCiAKIAlpZiBncmVwIC1xICJDT05GSUdfU1lTTE9HRD15IiAke0J9Ly5jb25maWc7IHRoZW4KLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc3lzbG9nICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cuJHtCUE59Ci0JCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLXN0YXJ0dXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mLiR7QlBOfQotCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mLiR7QlBOfQorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zeXNsb2cgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZworCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy1zdGFydHVwLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLXN0YXJ0dXAuY29uZgorCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mCiAJZmkKIAlpZiBncmVwICJDT05GSUdfQ1JPTkQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2J1c3lib3gtY3JvbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCkBAIC0zMDQsNyArMzEzLDYgQEAKIAkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CiAJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9idXN5Ym94LXN5c2xvZwogICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGxuIC1zZiAvZGV2L251bGwgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzbG9nLnNlcnZpY2UKICAgICAgICAgZmkKICAgICAgICAgaWYgZ3JlcCAtcSAiQ09ORklHX0tMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQpAQCAtMzE1LDcgKzMyMyw3IEBACiAKICAgICAjIFJlbW92ZSB0aGUgc3lzdmluaXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIGZvciBzeXN0ZW1kIHN5c3RlbXMgdG8gYXZvaWQgY29uZnVzaW9uCiAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0Jcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLXN0YXJ0dXAuY29uZi4ke0JQTn0KKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mCiAgICAgZmkKIH0KIApAQCAtMzI5LDIwICszMzcsNiBAQAogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICI1MCIKIAotQUxURVJOQVRJVkVfJHtQTn0tc3lzbG9nICs9ICJzeXNsb2ctY29uZiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2ctY29uZl0gPSAiJHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZiIKLQotcHl0aG9uICgpIHsKLSAgICBpZiBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcy1zeXNsb2cnICUgKHBuKSwgJyBzeXNsb2ctaW5pdCcpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgJ3N5c2xvZy1pbml0JywgJyVzL2luaXQuZC9zeXNsb2cnICUgKGQuZ2V0VmFyKCdzeXNjb25mZGlyJykpKQotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsICdzeXNsb2ctaW5pdCcsICclcy9pbml0LmQvc3lzbG9nLiVzJyAlIChkLmdldFZhcignc3lzY29uZmRpcicpLCBkLmdldFZhcignQlBOJykpKQotICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMtc3lzbG9nJyAlIChwbiksICcgc3lzbG9nLXN0YXJ0dXAtY29uZicpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgJ3N5c2xvZy1zdGFydHVwLWNvbmYnLCAnJXMvc3lzbG9nLXN0YXJ0dXAuY29uZicgJSAoZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSkpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgJ3N5c2xvZy1zdGFydHVwLWNvbmYnLCAnJXMvc3lzbG9nLXN0YXJ0dXAuY29uZi4lcycgJSAoZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSwgZC5nZXRWYXIoJ0JQTicpKSkKLX0KLQogcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCAoKSB7CiAgICAgIyBXZSBuZWVkIHRvIGxvYWQgdGhlIGZ1bGwgc2V0IG9mIGJ1c3lib3ggcHJvdmlkZXMgZnJvbSB0aGUgL2V0Yy9idXN5Ym94LmxpbmtzCiAgICAgIyBVc2UgdGhpcyB0byBzZWUgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgd2l0aCB0aGUgcmlnaHQgaW5mb3JtYXRpb24KQEAgLTQzOSwzICs0MzMsNSBAQAogCQlmaQogCWZpCiB9CisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NoJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcKaW5kZXggODgwM2I1Mi4uY2M2OGJlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcKQEAgLTgyMCw5ICs4MjAsOSBAQAogIyBDT05GSUdfSUZQTFVHRCBpcyBub3Qgc2V0CiBDT05GSUdfSUZVUERPV049eQogQ09ORklHX0lGVVBET1dOX0lGU1RBVEVfUEFUSD0iL3Zhci9ydW4vaWZzdGF0ZSIKLSMgQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVAgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUF9CVUlMVElOIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lGQ09ORklHX0JVSUxUSU49eQorQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVA9eQorQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBfQlVJTFRJTj15CisjIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lGQ09ORklHX0JVSUxUSU4gaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBWND15CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUFY2PXkKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX01BUFBJTkc9eQpAQCAtMTA1MywxNyArMTA1MywxNSBAQAogIwogIyBTeXN0ZW0gTG9nZ2luZyBVdGlsaXRpZXMKICMKLUNPTkZJR19TWVNMT0dEPXkKLUNPTkZJR19GRUFUVVJFX1JPVEFURV9MT0dGSUxFPXkKLUNPTkZJR19GRUFUVVJFX1JFTU9URV9MT0c9eQotQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9EVVA9eQotQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9DRkc9eQotQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9SRUFEX0JVRkZFUl9TSVpFPTI1NgotQ09ORklHX0ZFQVRVUkVfSVBDX1NZU0xPRz15Ci1DT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HX0JVRkZFUl9TSVpFPTY0Ci1DT05GSUdfTE9HUkVBRD15Ci1DT05GSUdfRkVBVFVSRV9MT0dSRUFEX1JFRFVDRURfTE9DS0lORz15Ci1DT05GSUdfRkVBVFVSRV9LTVNHX1NZU0xPRz15CisjIENPTkZJR19TWVNMT0dEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEUgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9SRU1PVEVfTE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9EVVAgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0cgaXMgbm90IHNldAorIyBDT05GSUdfTE9HUkVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfS01TR19TWVNMT0cgaXMgbm90IHNldAogQ09ORklHX0tMT0dEPXkKIAogIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9zeXNsb2cuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9zeXNsb2cuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNDI1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3N5c2xvZy5jZmcKQEAgLTAsMCArMSwxMSBAQAorQ09ORklHX1NZU0xPR0Q9eQorQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEU9eQorQ09ORklHX0ZFQVRVUkVfUkVNT1RFX0xPRz15CitDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUD15CitDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRz15CitDT05GSUdfRkVBVFVSRV9TWVNMT0dEX1JFQURfQlVGRkVSX1NJWkU9MjU2CitDT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HPXkKK0NPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0dfQlVGRkVSX1NJWkU9NjQKK0NPTkZJR19MT0dSRUFEPXkKK0NPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HPXkKK0NPTkZJR19GRUFUVVJFX0tNU0dfU1lTTE9HPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKaW5kZXggNmNjYmZmZC4uMWM4NTgwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAogICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAogICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAogICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCiAgICAgICAgICAgIGZpbGU6Ly9yY1MgXAogICAgICAgICAgICBmaWxlOi8vcmNLIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvZml4LXNlbGludXgtZmxhc2sucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvZml4LXNlbGludXgtZmxhc2sucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmVmMTAxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgbWFuaXB1bGF0aW9uIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlRoZSBHTlUgQ29yZSBVdGlsaXRpZXMgcHJvdmlkZSB0aGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgXAotbWFuaXB1bGF0aW9uIHV0aWxpdGllcy4gVGhlc2UgYXJlIHRoZSBjb3JlIHV0aWxpdGllcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qgb24gXAotZXZlcnkgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vZGViYnVncy5nbnUub3JnL2NvcmV1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zOGI3OTc4NWNhODg1MzdiNzU4NzE3ODJhMmEzYzZiOCIKLURFUEVORFMgPSAiZ21wIGxpYmNhcCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jb3JldXRpbHMvJHtCUH0udGFyLnh6O25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgIGh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0ZmlsZXMvJHtCUH0tbWFuLnRhci54ejtuYW1lPW1hbnBhZ2VzIFwKLSAgICAgICAgICAgZmlsZTovL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXNlbGludXgtZmxhc2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImQ1YWEyMDcyZjY2MmQ0MTE4YjlmNGM2M2I5NDYwMWE2IgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMTU1ZTk0ZDc0OGY4ZTJiYzMyN2M2NmUwY2JlYmRiOGQ2YWIyNjVkMmYzN2MzYzkyOGY3YmY2YzNiZWJhOWE4ZSIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICJiNTgxMDdmNTMyZjdiZWZmY2IyZjM4ZTJhYzFmMmRhMyIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI5MzI0ZWM0MTJmZmNhM2IwNDMxZTYyOTk3MjBjMzNhYzk4ZTc0OWU0MzBmNzJhN2M2ZTY1ZjM2MzVjODZhYTI5IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIgotCi0jIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCi0jCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi0jIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKLQotIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcwotIwotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi0KLSMgWyBkZiBta3RlbXAgYmFzZTY0IGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKLWJpbmRpcl9wcm9ncyA9ICJhcmNoIGJhc2VuYW1lIGNoY29uIGNrc3VtIGNvbW0gY3NwbGl0IGN1dCBkaXIgZGlyY29sb3JzIGRpcm5hbWUgZHUgXAotICAgICAgICAgICAgICAgIGVudiBleHBhbmQgZXhwciBmYWN0b3IgZm10IGZvbGQgZ3JvdXBzIGhlYWQgaG9zdGlkIGlkIGluc3RhbGwgXAotICAgICAgICAgICAgICAgIGpvaW4gbGluayBsb2duYW1lIG1kNXN1bSBta2ZpZm8gbmljZSBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKLSAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGVudiBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKLSAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXRcCi0gICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgotCi0jIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKLWJhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2Uga2lsbCBsbiBscyBta2RpciBcCi0gICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKLQotc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKLQotIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQotIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKLSMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKLSMgZGlyZWN0b3J5LgotYWNwYXRocyA9ICItSSAuL200IgotCi0jIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wICR7Qn0vc3JjCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKLQlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcwotCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKLQkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgotCXJldHVybgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlmb3IgaSBpbiBkZiBta3RlbXAgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgotCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAotCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCi0JbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59Ci0KLQkjIHByZWJ1aWx0IG1hbiBwYWdlcwotCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuMQotCWluc3RhbGwgLXQgJHtEfS8ke21hbmRpcn0vbWFuMSAke1N9L21hbi8qLjEKLQkjIHByZWJ1aWx0IG1hbiBwYWdlcyBkb24ndCBkbyBhIHNlcGFyYXRlIG1hbiBwYWdlIGZvciBbIHZzIHRlc3QuCi0JIyBzZWUgY29tbWVudCBhYm92ZSByLmUuIHNlZCBhbmQgdXBkYXRlLWFsdGVybmF0aXZlcwotCWNwIC1hICR7RH0ke21hbmRpcn0vbWFuMS90ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEuJHtCUE59Ci19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbWt0ZW1wIGRmIgotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG1rdGVtcC4xIGRmLjEgbGJyYWNrZXQuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgotQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCi1BTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCi1BTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0JCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLQlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0JCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4NzQwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjcuYmIKQEAgLTAsMCArMSwxNDIgQEAKK1NVTU1BUlkgPSAiVGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IG1hbmlwdWxhdGlvbiB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJUaGUgR05VIENvcmUgVXRpbGl0aWVzIHByb3ZpZGUgdGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IFwKK21hbmlwdWxhdGlvbiB1dGlsaXRpZXMuIFRoZXNlIGFyZSB0aGUgY29yZSB1dGlsaXRpZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGV4aXN0IG9uIFwKK2V2ZXJ5IHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jb3JldXRpbHMiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjttZDU9MzhiNzk3ODVjYTg4NTM3Yjc1ODcxNzgyYTJhM2M2YjgiCitERVBFTkRTID0gImdtcCBsaWJjYXAiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY29yZXV0aWxzLyR7QlB9LnRhci54ejtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICBodHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcvZGlzdGZpbGVzLyR7QlB9LW1hbi50YXIueHo7bmFtZT1tYW5wYWdlcyBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI1MDI3OTU3OTJjMjEyOTMyMzY1ZTA3Nzk0NmQzNTNhZSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjg4OTFkMzQ5ZWU4N2I5ZmY3ODcwZjUyYjZkOTMxMmE5ZGI2NzJkMjQzOWQyODliYzU3MDg0NzcxY2EyMTY1NmIiCitTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMWIzMWE2ODhkMDY3NjRlMGU5NGFhMjBiN2VhMDgyMjIiCitTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiMWY2MTU4MTllOTE2NzY0NmM3MzE2MzZiNmM1ZWNiZTc5ODM3ZTgyYTE4NjY2YmFjYzgyYzNmYjFkZmNmYWVhMyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtZ21wIgorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCIKKworIyBhY2wgYW5kIHhhdHRyIGFyZSBub3QgZGVmYXVsdCBmZWF0dXJlcworIworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKKyIKKworIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCisKKyMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKKyMKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorCisjIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKKyAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKKyAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCisgICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCisgICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAorICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKKworIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGtpbGwgbG4gbHMgbWtkaXIgXAorICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCisKK3NiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCisKKyMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKKyMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0CisjIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCisjIGRpcmVjdG9yeS4KK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCAke0J9L3NyYworfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisJcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKKwkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCisJIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KKwlyZXR1cm4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKKwkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKKwkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgorCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQorCisJIyBwcmVidWlsdCBtYW4gcGFnZXMKKwlpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjEKKwlpbnN0YWxsIC10ICR7RH0vJHttYW5kaXJ9L21hbjEgJHtTfS9tYW4vKi4xCisJIyBwcmVidWlsdCBtYW4gcGFnZXMgZG9uJ3QgZG8gYSBzZXBhcmF0ZSBtYW4gcGFnZSBmb3IgWyB2cyB0ZXN0LgorCSMgc2VlIGNvbW1lbnQgYWJvdmUgci5lLiBzZWQgYW5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0R9JHttYW5kaXJ9L21hbjEvdGVzdC4xICR7RH0ke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xLiR7QlBOfQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30gYmFzZTY0IG1rdGVtcCBkZiIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJiYXNlNjQuMSBta3RlbXAuMSBkZi4xIGxicmFja2V0LjEgZ3JvdXBzLjEga2lsbC4xIHVwdGltZS4xIHN0YXQuMSAgaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjRdID0gIiR7YmFzZV9iaW5kaXJ9L2Jhc2U2NCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtiYXNlNjRdID0gIiR7YmluZGlyfS9iYXNlNjQuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NC4xXSA9ICIke21hbmRpcn0vbWFuMS9iYXNlNjQuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgorQUxURVJOQVRJVkVfVEFSR0VUW21rdGVtcF0gPSAiJHtiaW5kaXJ9L21rdGVtcC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGZdID0gIiR7YmFzZV9iaW5kaXJ9L2RmIgorQUxURVJOQVRJVkVfVEFSR0VUW2RmXSA9ICIke2JpbmRpcn0vZGYuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2RmLjFdID0gIiR7bWFuZGlyfS9tYW4xL2RmLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L1siCitBTFRFUk5BVElWRV9UQVJHRVRbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGJyYWNrZXQuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQorCisJZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgppbmRleCA2OTFkYzg2Li40YWZiOTBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCkBAIC0xMSw2ICsxMSw3IEBACiBQUiA9ICJyMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5NDgxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJtYWtlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZjdiMDEzY2U4ZjY0MWNkNGM4OTdhY2RhMGVmMzQ2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzIzOGY3MDM1M2UzOGNlNWNhMTgzZWJjOTUyNWMwZDk3YWMwMGVmNjQwYWQyOWNmNzk0NzgyYWY2ZTZhMDgzIgotCi1TPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUVYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgotRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICA6Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKLQlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKLQlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKLQlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLX0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWFkYjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMjAuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJELUJ1cyB0ZXN0IHBhY2thZ2UgKGZvciBELWJ1cyBmdW5jdGlvbmFsaXR5IHRlc3Rpbmcgb25seSkiCitIT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKKworUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCisKK1M9IiR7V09SS0RJUn0vZGJ1cy0ke1BWfSIKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2RidXM6IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwdGVzdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworRVhUUkFfT0VDT05GX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnLS13aXRoLXgnLCAnLS13aXRob3V0LXgnLCBkKX0iCitFWFRSQV9PRUNPTkZfWF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXgiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxhci10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbGVkLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1jaGVja3MgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzc2VydHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXZlcmJvc2UtbW9kZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIgXAorICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAorICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgorCitkb19pbnN0YWxsKCkgeworICAgIDoKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkiCisJZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS90ZXN0Ly5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQorCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQorCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorfQorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZDczNTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCi1ERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLURFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgotQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgotUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcy10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmN2IwMTNjZThmNjQxY2Q0Yzg5N2FjZGEwZWYzNDY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjM4ZjcwMzUzZTM4Y2U1Y2ExODNlYmM5NTI1YzBkOTdhYzAwZWY2NDBhZDI5Y2Y3OTQ3ODJhZjZlNmEwODMiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgotCi1ERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKLQotT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKLU9MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotIyBmb3IgY29tcGF0aWJpbGl0eQotUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKLUZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF9kYnVzKCkgewotCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0Ci0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJCU9QVFM9Ii0tcm9vdD0kRCIKLQkJZmkKLQkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKLQlmaQotCi0JaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgotCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQlmaQotfQotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgotUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKLQlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKLQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAotCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKLQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cwotCi0KLQlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cwotCi0JY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCi0JIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0Ci0Jcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKLQotCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cwotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKLQotCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCi0JaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLwotCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPwotCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCi0KLQkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKLQkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCi0JCi0JIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAotCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KLQlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLQotCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGRlZGMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiCkBAIC0wLDAgKzEsMTgwIEBACitTVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgorREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCitERVBFTkRTID0gImV4cGF0IHZpcnR1YWwvbGliaW50bCIKK1JERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJyR7UE59LXB0ZXN0JywgJycsIGQpfSIKK0FMTE9XX0VNUFRZX2RidXMtcHRlc3QgPSAiMSIKK1JERVBFTkRTX2RidXMtcHRlc3RfY2xhc3MtdGFyZ2V0ID0gImRidXMtdGVzdC1wdGVzdCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGJ1cy0xLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vb3MtdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1leHBsaWNpdGVseS1jaGVjay1zdGRpbnQuaC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NGM5OTFlNzYzZDRmOWYxMzY5MDQxNmIyZGNkOTQxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNTc0Yjk3ODBiNTQyNWZkZTRkOTczYmI1OTZlN2VhMGYwOWUwMGZlMmVkZDY2MmRhOTAxNmU5NzZjNDYwYjQ4IgorCitpbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitJTklUU0NSSVBUX05BTUUgPSAiZGJ1cy0xIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBuZXRkZXYiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbWVzc2FnZWJ1cyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mICR7c3lzY29uZmRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiIKKworREVCSUFOTkFNRV8ke1BOfSA9ICJkYnVzLTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1saWIiCisKK09MRFBLR05BTUUgPSAiZGJ1cy14MTEiCitPTERQS0dOQU1FX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKKyMgZm9yIGNvbXBhdGliaWxpdHkKK1JQUk9WSURFU18ke1BOfSA9ICIke09MRFBLR05BTUV9IgorUlJFUExBQ0VTXyR7UE59ICs9ICIke09MRFBLR05BTUV9IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZGJ1cy1kYWVtb24qIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXV1aWRnZW4gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtY2xlYW51cC1zb2NrZXRzIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXNlbmQgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbW9uaXRvciBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1sYXVuY2ggXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtcnVuLXNlc3Npb24gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXBkYXRlLWFjdGl2YXRpb24tZW52aXJvbm1lbnQgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9kYnVzKiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisiCitGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTXyR7UE59LWxpYiA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtiaW5kaXJ9L2RidXMtdGVzdC10b29sIgorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0Jywnc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlJywnJyxkKX0iCitwa2dfcG9zdGluc3RfZGJ1cygpIHsKKwkjIElmIGJvdGggc3lzdGVtZCBhbmQgc3lzdmluaXQgYXJlIGVuYWJsZWQsIG1hc2sgdGhlIGRidXMtMSBpbml0IHNjcmlwdAorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWlmIFsgLW4gIiREIiBdOyB0aGVuCisJCQlPUFRTPSItLXJvb3Q9JEQiCisJCWZpCisJCXN5c3RlbWN0bCAkT1BUUyBtYXNrIGRidXMtMS5zZXJ2aWNlCisJZmkKKworCWlmIFsgLXogIiREIiBdICYmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KKwkJL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisJZmkKK30KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNQ1RMPSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWRpc2FibGUtc2VsaW51eCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJc2VkICdzOkBiaW5kaXJAOiR7YmluZGlyfTonIDwgJHtXT1JLRElSfS9kYnVzLTEuaW5pdCA+JHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGJ1cy0xCisJZmkKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWZvciBpIGluIGRidXMudGFyZ2V0LndhbnRzIHNvY2tldHMudGFyZ2V0LndhbnRzIG11bHRpLXVzZXIudGFyZ2V0LndhbnRzOyBkbyBcCisJCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LyRpOyBkb25lCisJCWluc3RhbGwgLW0gMDY0NCAke0J9L2J1cy9kYnVzLnNlcnZpY2UgJHtCfS9idXMvZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vCisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKKwkJbG4gLWZzIC4uL2RidXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9kYnVzLnNlcnZpY2UKKwlmaQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWVjaG8gImQgbWVzc2FnZWJ1cyBtZXNzYWdlYnVzIDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9ydW4vZGJ1cyBub25lIiBcCisJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2RidXMKKworCisJbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKKworCWNob3duIG1lc3NhZ2VidXM6bWVzc2FnZWJ1cyAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gcm9vdDptZXNzYWdlYnVzICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKKwljaG1vZCA0NzU1ICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKKworCSMgUmVtb3ZlIFJlZCBIYXQgaW5pdHNjcmlwdAorCXJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kCisKKwkjIFJlbW92ZSBlbXB0eSB0ZXN0ZXhlYyBkaXJlY3RvcnkgYXMgd2UgZG9uJ3QgYnVpbGQgdGVzdHMKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9kYnVzLTEuMC90ZXN0CisKKwkjIFJlbW92ZSAvdmFyL3J1biBhcyBpdCBpcyBjcmVhdGVkIG9uIHN0YXJ0dXAKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGZvciBkYnVzLWdsaWItbmF0aXZlIGludHJvc3BlY3Rpb24gZ2VuZXJhdGlvbgorCWluc3RhbGwgLWQgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy8KKwkjIE4uQi4gaXMgYmVsb3cgaW5zdGFsbCBhY3R1YWxseSByZXF1aXJlZD8KKwlpbnN0YWxsIC1tIDA2NDQgYnVzL3Nlc3Npb24uY29uZiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL3Nlc3Npb24uY29uZgorCisJIyBkYnVzLWdsaWItbmF0aXZlIGFuZCBkYnVzLWdsaWIgbmVlZCB0aGlzIHhtbCBmaWxlCisJLi9idXMvZGJ1cy1kYWVtb24gLS1pbnRyb3NwZWN0ID4gJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9kYnVzLWJ1cy1pbnRyb3NwZWN0LnhtbAorCQorCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKKwkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCisJcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCisKKwkjIFJlbW92ZSAvdmFyL3J1biB0byBhdm9pZCBRQSBlcnJvcgorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImJ1aWxkLWRlcHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMy1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMy1jb25maWd1cmUucGF0Y2gKaW5kZXggYzUzYWIwMS4uODQ2OWE1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDMtY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaApAQCAtMSwxOSArMSwyMCBAQAotRnJvbSBjNWY1YzUwNTRjMWIxNTUzOWRjY2Y4NjZlMmMzZmFiYTdlZDY4NDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1OGRkMjRhODBjYTBmNDAwZDA3NjFhZmQ5Y2UyYjdmNjg0ZmM5MTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0VyaWM9MjBCPUMzPUE5bmFyZD89IDxlcmljQGV1a3JlYS5jb20+CiBEYXRlOiBUaHUsIDI1IEFwciAyMDEzIDAwOjI3OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy82XSBjb25maWd1cmU6IGFkZCBhIHZhcmlhYmxlIHRvIGFsbG93IG9wZW5wdHkgY2hlY2sgdG8gYmUgY2FjaGVkCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogYWRkIGEgdmFyaWFibGUgdG8gYWxsb3cgb3BlbnB0eSBjaGVjayB0byBiZSBjYWNoZWQKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9ta2ovZHJvcGJlYXIvcHVsbC80OCBdCiAKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiAtLS0KICBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDA1NDYxZjMuLjljMTZkOTAgMTAwNjQ0CitpbmRleCA4OTNiOTA0Li4yNDU0MDhkIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNjYsMTUgKzE2NiwyMCBAQCBBQ19BUkdfRU5BQkxFKG9wZW5wdHksCitAQCAtMTc3LDE1ICsxNzcsMjAgQEAgQUNfQVJHX0VOQUJMRShvcGVucHR5LAogIAkJCUFDX01TR19OT1RJQ0UoTm90IHVzaW5nIG9wZW5wdHkpCiAgCQllbHNlCiAgCQkJQUNfTVNHX05PVElDRShVc2luZyBvcGVucHR5IGlmIGF2YWlsYWJsZSkKQEAgLTM4LDUgKzM5LDUgQEAKICBBQ19BUkdfRU5BQkxFKHN5c2xvZywKICAJWyAgLS1kaXNhYmxlLXN5c2xvZyAgICAgICAgRG9uJ3QgaW5jbHVkZSBzeXNsb2cgc3VwcG9ydF0sCiAtLSAKLTEuNy4xMS43CisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2gKaW5kZXggZGU5MzBmMi4uMmIwNWUxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmZkOGQyYWVkYWQwYzUwY2RmMWU0M2VkZDIzODc4NzRiNzIwYWQ0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjM3ZmE5YTQxZjI0OGZhNDFkZDc0YTQxYzY2Y2I0MWEyOTFjMDNkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE2IFNlcCAyMDE2IDEyOjE4OjIzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCBsaWJ0b21jcnlwdC9saWJ0b21tYXRoIG9yZGVyaW5nCkBAIC0xMSwxOCArMTEsMTkgQEAKIE5vdGUgdGhhdCBMSUJUT01fTElCUyBpcyBub3QgdXNlZCB3aGVuIGxpbmtpbmcgd2l0aCB0aGUgYnVuZGxlZAogbGlidG9tIGxpYnMuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9ta2ovZHJvcGJlYXIvY29tbWl0L2Y5ZTZiYzJhZWNhYjBmNGI1YjUyOWUwN2E5MmNjNjNjOGE2NmNkNGIgXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNmFiZTRjLi44NWJiOGJjIDEwMDY0NAoraW5kZXggMjQ1NDA4ZC4uZDYyNDg1MyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzkwLDE2ICszOTAsMTYgQEAgQUNfQVJHX0VOQUJMRShidW5kbGVkLWxpYnRvbSwKK0BAIC0zOTMsMTYgKzM5MywxNiBAQCBBQ19BUkdfRU5BQkxFKGJ1bmRsZWQtbGlidG9tLAogIAkJCUFDX01TR19OT1RJQ0UoRm9yY2luZyBidW5kbGVkIGxpYnRvbSopCiAgCQllbHNlCiAgCQkJQlVORExFRF9MSUJUT009MApAQCAtNDQsNSArNDUsNSBAQAogICkKICAKIC0tIAotMS45LjEKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2ZWZiNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tOiA9P1VURi04P3E/SGVucmlrPTIwTm9yZHN0cj1DMz1CNm0/PSA8aGVucmlrQGtuYy5udT4KLURhdGU6IFdlZCwgMTEgTWF5IDIwMTYgMTI6MzU6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBvdXQtb2YtdHJlZSBidWlsZHMgdXNpZ24gYnVuZGxlZCBsaWJ0b20KLQotV2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSB3ZSBuZWVkIGJvdGggc291cmNlIGFuZCBnZW5lcmF0ZWQKLWZvbGRlcnMgaW4gaW5jbHVkZSBwYXRocyB0byBmaW5kIGJvdGggZGlzdHJpYnV0ZWQgYW5kIGdlbmVyYXRlZAotaGVhZGVycy4KLQotCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBsaWJ0b21jcnlwdC9NYWtlZmlsZS5pbiB8IDIgKy0KLSBsaWJ0b21tYXRoL01ha2VmaWxlLmluICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnRvbWNyeXB0L01ha2VmaWxlLmluIGIvbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4KLWluZGV4IDMwNTZlZjAuLjc5NzA3MDAgMTAwNjQ0Ci0tLS0gYS9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbgotKysrIGIvbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4KLUBAIC0xOSw3ICsxOSw3IEBAIHNyY2Rpcj1Ac3JjZGlyQAotIAotICMgQ29tcGlsYXRpb24gZmxhZ3MuIE5vdGUgdGhlICs9IGRvZXMgbm90IHdyaXRlIG92ZXIgdGhlIHVzZXIncyBDRkxBR1MhCi0gIyBUaGUgcmVzdCBvZiB0aGUgZmxhZ3MgY29tZSBmcm9tIHRoZSBwYXJlbnQgRHJvcGJlYXIgbWFrZWZpbGUKLS1DRkxBR1MgKz0gLWMgLUkkKHNyY2Rpcikvc3JjL2hlYWRlcnMvIC1JJChzcmNkaXIpLy4uLyAtRExUQ19TT1VSQ0UgLUkkKHNyY2RpcikvLi4vbGlidG9tbWF0aC8KLStDRkxBR1MgKz0gLWMgLUlzcmMvaGVhZGVycy8gLUkkKHNyY2Rpcikvc3JjL2hlYWRlcnMvIC1JLi4vIC1JJChzcmNkaXIpLy4uLyAtRExUQ19TT1VSQ0UgLUkuLi9saWJ0b21tYXRoLyAtSSQoc3JjZGlyKS8uLi9saWJ0b21tYXRoLwotIAotICMgYWRkaXRpb25hbCB3YXJuaW5ncyAobmV3ZXIgR0NDIDMuNCBhbmQgaGlnaGVyKQotIGlmZGVmIEdDQ18zNAotZGlmZiAtLWdpdCBhL2xpYnRvbW1hdGgvTWFrZWZpbGUuaW4gYi9saWJ0b21tYXRoL01ha2VmaWxlLmluCi1pbmRleCAwNmFiYTY4Li4wMTljNTBiIDEwMDY0NAotLS0tIGEvbGlidG9tbWF0aC9NYWtlZmlsZS5pbgotKysrIGIvbGlidG9tbWF0aC9NYWtlZmlsZS5pbgotQEAgLTksNyArOSw3IEBAIFZQQVRIPUBzcmNkaXJACi0gc3JjZGlyPUBzcmNkaXJACi0gCi0gIyBTbyB0aGF0IGxpYnRvbW1hdGggY2FuIGluY2x1ZGUgRHJvcGJlYXIgaGVhZGVycyBmb3Igb3B0aW9ucyBhbmQgbV9idXJuKCkKLS1DRkxBR1MgKz0gLUkkKHNyY2RpcikvLi4vbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvIC1JJChzcmNkaXIpLy4uLwotK0NGTEFHUyArPSAtSS4gLUkkKHNyY2RpcikgLUkuLi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy8gLUkkKHNyY2RpcikvLi4vbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvIC1JLi4vIC1JJChzcmNkaXIpLy4uLwotIAotIGlmbmRlZiBJR05PUkVfU1BFRUQKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE2Ljc0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MDIwOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgZHJvcGJlYXIuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlhZDAxNzI3MzFlMGYxNjYyMzkzNzgwNDY0M2I1YmQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3MjBlYTU0ZWQwMDlhZjgxMjcwMWJjYzI5MGEyYTYwMWQ1YzEwN2QxMjk5M2U1ZDkyYzBmNWY4MWY3MTg4OTEiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE3Ljc1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZiMGQxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE3Ljc1LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBkcm9wYmVhci5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImU1N2U5YjlkMjU3MDVkY2IwNzNiYTE1YzQxNjQyNGZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjYmMxZGNiMWM5NzA5ZDIyNmRmZjY2OWU1NjA0MTcyYTE4Y2Y1ZGJmOWEyMDE0NzRkNTYxOGFlNDQ2NTA5OGMiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCmluZGV4IDlmYTBjYTIuLjBlZTZjMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYwpAQCAtNiw3ICs2LDExIEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKIAkgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vbm9fZ2V0cmFuZG9tLnBhdGNoIgorCiBpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZQogCiAjIFRoaXMgcGFja2FnZSB1c2VzIGFuIGFyY2hpdmUgZm9ybWF0IGtub3duIHRvIGhhdmUgaXNzdWUgd2l0aCBzb21lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmNDE5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaApAQCAtMCwwICsxLDE4IEBACitBZGQgQ0MgdGFnIHRvIGJ1aWxkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IGV4cGF0LTIuMi4yL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZXhwYXQtMi4yLjIub3JpZy9NYWtlZmlsZS5pbgorKysrIGV4cGF0LTIuMi4yL01ha2VmaWxlLmluCitAQCAtMTA5LDcgKzEwOSw3IEBAIG1rZGlyLWluaXQ6CisgCisgQ0MgPSBAQ0NACisgQ1hYID0gQENYWEAKKy1MSUJUT09MID0gQExJQlRPT0xACisrTElCVE9PTCA9IEBMSUJUT09MQCAtLXRhZyBDQworIAorIElOQ0xVREVTID0gLUkkKHNyY2RpcikvbGliIC1JLgorIExERkxBR1MgPSBATERGTEFHU0AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NGYxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK1RoZSBuYXRpdmUgdmVyc2lvbiBvZiBleHBhdCBtYXkgYmUgdXNlZCBvbiBvbGRlciBzeXN0ZW1zIHdoaWNoIGRvbnQgaGF2ZSBnbGliYyAyLjI1CithbmQgaGVuY2UgZG9uJ3QgaGF2ZSBnZXRyYW5kb20oKSB0aGFua3MgdG8gdW5pbmF0aXZlLiBEaXNhYmxlIHRoZSBsaWJjIGNhbGwgYW5kCit1c2UgdGhlIHN5c2NhbGwgaW5zdGVhZCB0byBhdm9pZCBhIGNvbXBhdGliaWxpdHkgaXNzdWUgdW50aWwgd2UgaGF2ZSAyLjI1IGV2ZXJ5d2hlcmUKK3dlIHN1cHBvcnQgd2l0aCB1bmluYXRpdmUuCisKK1JQCisyMDE3LzgvMTQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKK0luZGV4OiBleHBhdC0yLjIuMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBleHBhdC0yLjIuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGV4cGF0LTIuMi4zL2NvbmZpZ3VyZS5hYworQEAgLTE1MSw3ICsxNTEsNyBAQCBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWworICAgI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLyogZm9yIE5VTEwgKi8KKyAgICNpbmNsdWRlIDxzeXMvcmFuZG9tLmg+CisgICBpbnQgbWFpbigpIHsKKy0gICAgcmV0dXJuIGdldHJhbmRvbShOVUxMLCAwVSwgMFUpOworKyAgICByZXR1cm4gZ2V0cmFuZG9tQlJFQUtNRShOVUxMLCAwVSwgMFUpOworICAgfQorIF0pXSwgWworICAgICBBQ19ERUZJTkUoW0hBVkVfR0VUUkFORE9NXSwgWzFdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjIxYTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBleHBhdC5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTljM2VlNTU5YzZmOWRjZWUxMDQzZWFkMTEyMTM5ZjRmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmY0Nzg0MWM4MjlmYWNiMzQ2ZWI2ZTNmYWI1MjEyZTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDllNTBmZjJkMTliMzUzOGJkMjEyNzkwMmE4OTk4NzQ3NGUxYTRkYjhlNDNhNjZhNGQxYTcxMmFiOWE1MDRmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmY4NDUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiCkBAIC0wLDAgKzEsNCBAQAorcmVxdWlyZSBleHBhdC5pbmMKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTViODYyMGQ5OGU0OTc3MmQ5NWZjMWQyOTFjMjZhYTc5IgorU1JDX1VSSVttZDVzdW1dID0gImYwNTNhZjYzZWY1ZjM5YmQ5Yjc4ZDAxZmJjMjAzMzM0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzMTg5MGZiMDJmODVjMDAyYTY3NDkxOTIzZjg5YmRhNTAyOGE4ODBmZDZjMzc0ZjcwNzE5M2FkODFhYWNlNWYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzLmJiCmluZGV4IGRlOTI5N2UuLjAyZjU0MDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzLmJiCkBAIC0zLDM4ICszLDE4IEBACiAKIFNVTU1BUlkgPSAiUE9TSVggZmlsZSB0cmVlIHN0cmVhbSBvcGVyYXRpb25zIGxpYnJhcnkiCiBIT01FUEFHRSA9ICJodHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljIgotTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9mdHMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTM2O21kNT0yNTMyZWRkYjNkMWEyMTkwNTcyM2E0MDExZWM0ZTA4NSIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWZmZTM1ODE3NGFhZDM4M2YxYjY5Y2UzYjUzZGE5ODIiCiBTRUNUSU9OID0gImxpYnMiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL2EvYm9zdGljLmNvbS9rZWl0aGJvc3RpYy9maWxlcy9mdHMudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Z0cy1oZWFkZXItY29ycmVjdG5lc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnRzLXVjbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfY2RlZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3RkaW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzUucGF0Y2ggXAorU1JDUkVWID0gIjk0NDMzM2FlZDlkYzI0Y2ZhNzZjYzY0YmZlNzBjNzVkMjU2NTI3NTMiCitQViA9ICIxLjIrZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92b2lkbGludXgvbXVzbC1mdHMgXAogIgorUyA9ICIke1dPUktESVJ9L2dpdCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjEyMGMxNDcxNTQ4NWVjNmNlZDE0ZjQ5NGQwNTlkMjBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZjliOWI1YTQ1YWVhZjE2ZjMzYmI4NGU2OTJhMTBkYzY2MmUyMmVjOGE1MTc0OGY5ODc2N2Q2N2ZiNmYzNDIiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi0KLUhBU0hTVFlMRV9taXBzYXJjaCA9ICJzeXN2IgotSEFTSFNUWUxFID0gImdudSIKLQotVkVSID0gIjAiCi1kb19jb21waWxlICgpIHsKLSAgICAke0NDfSAtSSR7U30gLWZQSUMgLXNoYXJlZCAtV2wsLS1oYXNoLXN0eWxlPSR7SEFTSFNUWUxFfSAtbyBsaWJmdHMuc28uJHtWRVJ9IC1XbCwtc29uYW1lLGxpYmZ0cy5zby4ke1ZFUn0gJHtTfS9mdHMuYwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLURtNzU1ICR7Qn0vbGliZnRzLnNvLiR7VkVSfSAke0R9JHtsaWJkaXJ9L2xpYmZ0cy5zby4ke1ZFUn0KLSAgICBsbiAtc2YgbGliZnRzLnNvLiR7VkVSfSAke0R9JHtsaWJkaXJ9L2xpYmZ0cy5zbwotICAgIGluc3RhbGwgLURtNjQ0ICR7U30vZnRzLmggJHtEfSR7aW5jbHVkZWRpcn0vZnRzLmgKLX0KK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogIwogIyBXZSB3aWxsIHNraXAgcGFyc2luZyBmb3Igbm9uLW11c2wgc3lzdGVtcwogIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2Z0cy1oZWFkZXItY29ycmVjdG5lc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3M2RkYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUluY2x1ZGVkIG5lZWRlZCBoZWFkZXJzIGZvciBjb21waWxpbmcgd2l0aCBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotLS0tIGZ0cy5vcmlnL2Z0cy5oCi0rKysgZnRzL2Z0cy5oCi1AQCAtMzgsNiArMzgsMTcgQEAKLSAjaWZuZGVmCV9GVFNfSF8KLSAjZGVmaW5lCV9GVFNfSF8KLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKwotKyNpbmNsdWRlIDxkaXJlbnQuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsKLSB0eXBlZGVmIHN0cnVjdCB7Ci0gCXN0cnVjdCBfZnRzZW50ICpmdHNfY3VyOwkvKiBjdXJyZW50IG5vZGUgKi8KLSAJc3RydWN0IF9mdHNlbnQgKmZ0c19jaGlsZDsJLyogbGlua2VkIGxpc3Qgb2YgY2hpbGRyZW4gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2Z0cy11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9mdHMtdWNsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTc2NTRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2Z0cy11Y2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1BZGQgbWlzc2luZyBkZWZpbmVzIGZvciB1Y2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi0tLS0gZnRzLm9yaWcvZnRzLmMKLSsrKyBmdHMvZnRzLmMKLUBAIC0zMSw2ICszMSwxMCBAQAotICAqIFNVQ0ggREFNQUdFLgotICAqLwotIAotKyNkZWZpbmUJYWxpZ25vZihUWVBFKSAgICgoaW50KSAmKChzdHJ1Y3QgeyBjaGFyIGR1bW15MTsgVFlQRSBkdW1teTI7IH0gKikgMCktPmR1bW15MikKLSsjZGVmaW5lCUFMSUdOQllURVMJKGFsaWdub2YobG9uZyBkb3VibGUpIC0gMSkKLSsjZGVmaW5lCUFMSUdOKHApCSgoKHVpbnRwdHJfdCkocCkgKyBBTElHTkJZVEVTKSAmIH5BTElHTkJZVEVTKSAKLSsKLSAjaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVkKGxpbnQpCi0gc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWZ0cy5jCTguNiAoQmVya2VsZXkpIDgvMTQvOTQiOwotICNlbmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50ICovCi1AQCAtNjUyLDEwICs2NTYsMTAgQEAKLSAJCWlmICghSVNTRVQoRlRTX1NFRURPVCkgJiYgSVNET1QoZHAtPmRfbmFtZSkpCi0gCQkJY29udGludWU7Ci0gCi0tCQlpZiAoKHAgPSBmdHNfYWxsb2Moc3AsIGRwLT5kX25hbWUsIChpbnQpZHAtPmRfbmFtbGVuKSkgPT0gTlVMTCkKLSsJCWlmICgocCA9IGZ0c19hbGxvYyhzcCwgZHAtPmRfbmFtZSwgKGludClkcC0+ZF9yZWNsZW4pKSA9PSBOVUxMKQotIAkJCWdvdG8gbWVtMTsKLS0JCWlmIChkcC0+ZF9uYW1sZW4gPiBtYXhsZW4pIHsKLS0JCQlpZiAoZnRzX3BhbGxvYyhzcCwgKHNpemVfdClkcC0+ZF9uYW1sZW4pKSB7Ci0rCQlpZiAoZHAtPmRfcmVjbGVuID4gbWF4bGVuKSB7Ci0rCQkJaWYgKGZ0c19wYWxsb2Moc3AsIChzaXplX3QpZHAtPmRfcmVjbGVuKSkgewotIAkJCQkvKgotIAkJCQkgKiBObyBtb3JlIG1lbW9yeSBmb3IgcGF0aCBvciBzdHJ1Y3R1cmVzLiAgU2F2ZQotIAkJCQkgKiBlcnJubywgZnJlZSB1cCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIHRoZQotQEAgLTY3NSw3ICs2NzksNyBAQAotIAkJCW1heGxlbiA9IHNwLT5mdHNfcGF0aGxlbiAtIHNwLT5mdHNfY3VyLT5mdHNfcGF0aGxlbiAtIDE7Ci0gCQl9Ci0gCi0tCQlwLT5mdHNfcGF0aGxlbiA9IGxlbiArIGRwLT5kX25hbWxlbiArIDE7Ci0rCQlwLT5mdHNfcGF0aGxlbiA9IGxlbiArIGRwLT5kX3JlY2xlbiArIDE7Ci0gCQlwLT5mdHNfcGFyZW50ID0gc3AtPmZ0c19jdXI7Ci0gCQlwLT5mdHNfbGV2ZWwgPSBsZXZlbDsKLSAKLUBAIC03ODQsNyArNzg4LDcgQEAKLSAJLyogSWYgdXNlciBuZWVkcyBzdGF0IGluZm8sIHN0YXQgYnVmZmVyIGFscmVhZHkgYWxsb2NhdGVkLiAqLwotIAlzYnAgPSBJU1NFVChGVFNfTk9TVEFUKSA/ICZzYiA6IHAtPmZ0c19zdGF0cDsKLSAKLS0jaWZkZWYgRFRfV0hUCi0rI2lmZGVmIFNfSUZXSFQKLSAJLyoKLSAJICogV2hpdGVkLW91dCBmaWxlcyBkb24ndCByZWFsbHkgZXhpc3QuICBIb3dldmVyLCB0aGVyZSdzIHN0YXQoMikgZmlsZQotIAkgKiBtYXNrIGZvciB0aGVtLCBzbyB3ZSBzZXQgaXQgc28gdGhhdCBwcm9ncmFtcyAoaS5lLiwgZmluZCkgZG9uJ3QgaGF2ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZ2NjNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2djYzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Yjk0OGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZ2NjNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNjggKzAsMCBAQAotRm9yd2FyZCBwb3J0IHRoZSBzb3VyY2VzIHRvIGJlIGFibGUgdG8gY29tcGlsZSB3aXRoIGM5OS9nY2M1Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IGZ0cy9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZ0cy5vcmlnL2Z0cy5jCi0rKysgZnRzL2Z0cy5jCi1AQCAtNTEsMTYgKzUxLDYgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWZ0cy5jCTguNiAoQgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0tc3RhdGljIEZUU0VOVAkqZnRzX2FsbG9jIF9fUChGVFMgKiwgY2hhciAqLCBpbnQpOwotLXN0YXRpYyBGVFNFTlQJKmZ0c19idWlsZCBfX1AoRlRTICosIGludCk7Ci0tc3RhdGljIHZvaWQJIGZ0c19sZnJlZSBfX1AoRlRTRU5UICopOwotLXN0YXRpYyB2b2lkCSBmdHNfbG9hZCBfX1AoRlRTICosIEZUU0VOVCAqKTsKLS1zdGF0aWMgc2l6ZV90CSBmdHNfbWF4YXJnbGVuIF9fUChjaGFyICogY29uc3QgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19wYWRqdXN0IF9fUChGVFMgKiwgdm9pZCAqKTsKLS1zdGF0aWMgaW50CSBmdHNfcGFsbG9jIF9fUChGVFMgKiwgc2l6ZV90KTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfc29ydCBfX1AoRlRTICosIEZUU0VOVCAqLCBpbnQpOwotLXN0YXRpYyB1X3Nob3J0CSBmdHNfc3RhdCBfX1AoRlRTICosIHN0cnVjdCBkaXJlbnQgKiwgRlRTRU5UICosIGludCk7Ci0tCi0gI2RlZmluZQlJU0RPVChhKQkoYVswXSA9PSAnLicgJiYgKCFhWzFdIHx8IGFbMV0gPT0gJy4nICYmICFhWzJdKSkKLSAKLSAjZGVmaW5lCUlTU0VUKG9wdCkJKHNwLT5mdHNfb3B0aW9ucyAmIG9wdCkKLUBAIC03MywxMTkgKzYzLDE2IEBAIHN0YXRpYyB1X3Nob3J0CSBmdHNfc3RhdCBfX1AoRlRTICosIHN0cnUKLSAjZGVmaW5lCUJDSElMRAkJMQkJLyogZnRzX2NoaWxkcmVuICovCi0gI2RlZmluZQlCTkFNRVMJCTIJCS8qIGZ0c19jaGlsZHJlbiwgbmFtZXMgb25seSAqLwotICNkZWZpbmUJQlJFQUQJCTMJCS8qIGZ0c19yZWFkICovCi0tCi0tRlRTICoKLS1mdHNfb3Blbihhcmd2LCBvcHRpb25zLCBjb21wYXIpCi0tCWNoYXIgKiBjb25zdCAqYXJndjsKLS0JcmVnaXN0ZXIgaW50IG9wdGlvbnM7Ci0tCWludCAoKmNvbXBhcikoKTsKLS17Ci0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0tCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0tCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotLQlpbnQgbGVuOwotLQotLQkvKiBPcHRpb25zIGNoZWNrLiAqLwotLQlpZiAob3B0aW9ucyAmIH5GVFNfT1BUSU9OTUFTSykgewotLQkJZXJybm8gPSBFSU5WQUw7Ci0tCQlyZXR1cm4gKE5VTEwpOwotLQl9Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgdGhlIHN0cmVhbSAqLwotLQlpZiAoKHNwID0gbWFsbG9jKCh1X2ludClzaXplb2YoRlRTKSkpID09IE5VTEwpCi0tCQlyZXR1cm4gKE5VTEwpOwotLQltZW1zZXQoc3AsIDAsIHNpemVvZihGVFMpKTsKLS0Jc3AtPmZ0c19jb21wYXIgPSBjb21wYXI7Ci0tCXNwLT5mdHNfb3B0aW9ucyA9IG9wdGlvbnM7Ci0tCi0tCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQkvKgotLQkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLS0JICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotLQkgKi8KLS0JaWYgKGZ0c19wYWxsb2Moc3AsIE1BWChmdHNfbWF4YXJnbGVuKGFyZ3YpLCBNQVhQQVRITEVOKSkpCi0tCQlnb3RvIG1lbTE7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdCdzIHBhcmVudC4gKi8KLS0JaWYgKChwYXJlbnQgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLS0JCWdvdG8gbWVtMjsKLS0JcGFyZW50LT5mdHNfbGV2ZWwgPSBGVFNfUk9PVFBBUkVOVExFVkVMOwotLQotLQkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHJvb3QocykuICovCi0tCWZvciAocm9vdCA9IE5VTEwsIG5pdGVtcyA9IDA7ICphcmd2OyArK2FyZ3YsICsrbml0ZW1zKSB7Ci0tCQkvKiBEb24ndCBhbGxvdyB6ZXJvLWxlbmd0aCBwYXRocy4gKi8KLS0JCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPT0gMCkgewotLQkJCWVycm5vID0gRUlOVkFMOwotLQkJCWdvdG8gbWVtMzsKLS0JCX0KLS0KLS0JCXAgPSBmdHNfYWxsb2Moc3AsICphcmd2LCBsZW4pOwotLQkJcC0+ZnRzX2xldmVsID0gRlRTX1JPT1RMRVZFTDsKLS0JCXAtPmZ0c19wYXJlbnQgPSBwYXJlbnQ7Ci0tCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotLQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgSVNTRVQoRlRTX0NPTUZPTExPVykpOwotLQotLQkJLyogQ29tbWFuZC1saW5lICIuIiBhbmQgIi4uIiBhcmUgcmVhbCBkaXJlY3Rvcmllcy4gKi8KLS0JCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRE9UKQotLQkJCXAtPmZ0c19pbmZvID0gRlRTX0Q7Ci0tCi0tCQkvKgotLQkJICogSWYgY29tcGFyaXNvbiByb3V0aW5lIHN1cHBsaWVkLCB0cmF2ZXJzZSBpbiBzb3J0ZWQKLS0JCSAqIG9yZGVyOyBvdGhlcndpc2UgdHJhdmVyc2UgaW4gdGhlIG9yZGVyIHNwZWNpZmllZC4KLS0JCSAqLwotLQkJaWYgKGNvbXBhcikgewotLQkJCXAtPmZ0c19saW5rID0gcm9vdDsKLS0JCQlyb290ID0gcDsKLS0JCX0gZWxzZSB7Ci0tCQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotLQkJCWlmIChyb290ID09IE5VTEwpCi0tCQkJCXRtcCA9IHJvb3QgPSBwOwotLQkJCWVsc2UgewotLQkJCQl0bXAtPmZ0c19saW5rID0gcDsKLS0JCQkJdG1wID0gcDsKLS0JCQl9Ci0tCQl9Ci0tCX0KLS0JaWYgKGNvbXBhciAmJiBuaXRlbXMgPiAxKQotLQkJcm9vdCA9IGZ0c19zb3J0KHNwLCByb290LCBuaXRlbXMpOwotLQotLQkvKgotLQkgKiBBbGxvY2F0ZSBhIGR1bW15IHBvaW50ZXIgYW5kIG1ha2UgZnRzX3JlYWQgdGhpbmsgdGhhdCB3ZSd2ZSBqdXN0Ci0tCSAqIGZpbmlzaGVkIHRoZSBub2RlIGJlZm9yZSB0aGUgcm9vdChzKTsgc2V0IHAtPmZ0c19pbmZvIHRvIEZUU19JTklUCi0tCSAqIHNvIHRoYXQgZXZlcnl0aGluZyBhYm91dCB0aGUgImN1cnJlbnQiIG5vZGUgaXMgaWdub3JlZC4KLS0JICovCi0tCWlmICgoc3AtPmZ0c19jdXIgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLS0JCWdvdG8gbWVtMzsKLS0Jc3AtPmZ0c19jdXItPmZ0c19saW5rID0gcm9vdDsKLS0Jc3AtPmZ0c19jdXItPmZ0c19pbmZvID0gRlRTX0lOSVQ7Ci0tCi0tCS8qCi0tCSAqIElmIHVzaW5nIGNoZGlyKDIpLCBncmFiIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nIHRvIGRvdCB0byBpbnN1cmUKLS0JICogdGhhdCB3ZSBjYW4gZ2V0IGJhY2sgaGVyZTsgdGhpcyBjb3VsZCBiZSBhdm9pZGVkIGZvciBzb21lIHBhdGhzLAotLQkgKiBidXQgYWxtb3N0IGNlcnRhaW5seSBub3Qgd29ydGggdGhlIGVmZm9ydC4gIFNsYXNoZXMsIHN5bWJvbGljIGxpbmtzLAotLQkgKiBhbmQgIi4uIiBhcmUgYWxsIGZhaXJseSBuYXN0eSBwcm9ibGVtcy4gIE5vdGUsIGlmIHdlIGNhbid0IGdldCB0aGUKLS0JICogZGVzY3JpcHRvciB3ZSBydW4gYW55d2F5LCBqdXN0IG1vcmUgc2xvd2x5LgotLQkgKi8KLS0JaWYgKCFJU1NFVChGVFNfTk9DSERJUikgJiYgKHNwLT5mdHNfcmZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKQotLQkJU0VUKEZUU19OT0NIRElSKTsKLS0KLS0JcmV0dXJuIChzcCk7Ci0tCi0tbWVtMzoJZnRzX2xmcmVlKHJvb3QpOwotLQlmcmVlKHBhcmVudCk7Ci0tbWVtMjoJZnJlZShzcC0+ZnRzX3BhdGgpOwotLW1lbTE6CWZyZWUoc3ApOwotLQlyZXR1cm4gKE5VTEwpOwotLX0KLSsvKgotKyAqIFNwZWNpYWwgY2FzZSBhIHJvb3Qgb2YgIi8iIHNvIHRoYXQgc2xhc2hlcyBhcmVuJ3QgYXBwZW5kZWQgd2hpY2ggd291bGQKLSsgKiBjYXVzZSBwYXRocyB0byBiZSB3cml0dGVuIGFzICIvL2ZvbyIuCi0rICovCi0rI2RlZmluZQlOQVBQRU5EKHApCQkJCQkJCVwKLSsJKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMICYmIHAtPmZ0c19wYXRobGVuID09IDEgJiYJXAotKwkgICAgcC0+ZnRzX3BhdGhbMF0gPT0gJy8nID8gMCA6IHAtPmZ0c19wYXRobGVuKQotIAotIHN0YXRpYyB2b2lkCi0tZnRzX2xvYWQoc3AsIHApCi0tCUZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLStmdHNfbG9hZChGVFMgKnNwLCByZWdpc3RlciBGVFNFTlQgKnApCi0gewotIAlyZWdpc3RlciBpbnQgbGVuOwotIAlyZWdpc3RlciBjaGFyICpjcDsKLUBAIC0yMDgsMzMyICs5NSwyMTQgQEAgZnRzX2xvYWQoc3AsIHApCi0gCXNwLT5mdHNfZGV2ID0gcC0+ZnRzX2RldjsKLSB9Ci0gCi0taW50Ci0tZnRzX2Nsb3NlKHNwKQotLQlGVFMgKnNwOwotK3N0YXRpYyB2b2lkCi0rZnRzX2xmcmVlKHJlZ2lzdGVyIEZUU0VOVCAqaGVhZCkKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotLQlpbnQgc2F2ZWRfZXJybm87Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLSAKLS0JLyoKLS0JICogVGhpcyBzdGlsbCB3b3JrcyBpZiB3ZSBoYXZlbid0IHJlYWQgYW55dGhpbmcgLS0gdGhlIGR1bW15IHN0cnVjdHVyZQotLQkgKiBwb2ludHMgdG8gdGhlIHJvb3QgbGlzdCwgc28gd2Ugc3RlcCB0aHJvdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHJvb3QKLS0JICogbGlzdCB3aGljaCBoYXMgYSB2YWxpZCBwYXJlbnQgcG9pbnRlci4KLS0JICovCi0tCWlmIChzcC0+ZnRzX2N1cikgewotLQkJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotLQkJCWZyZWVwID0gcDsKLS0JCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCQkJZnJlZShmcmVlcCk7Ci0tCQl9Ci0rCS8qIEZyZWUgYSBsaW5rZWQgbGlzdCBvZiBzdHJ1Y3R1cmVzLiAqLwotKwl3aGlsZSAocCA9IGhlYWQpIHsKLSsJCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLSAJCWZyZWUocCk7Ci0gCX0KLSt9Ci0gCi0tCS8qIEZyZWUgdXAgY2hpbGQgbGlua2VkIGxpc3QsIHNvcnQgYXJyYXksIHBhdGggYnVmZmVyLiAqLwotLQlpZiAoc3AtPmZ0c19jaGlsZCkKLS0JCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JaWYgKHNwLT5mdHNfYXJyYXkpCi0tCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0rc3RhdGljIHNpemVfdAotK2Z0c19tYXhhcmdsZW4oY2hhciAqIGNvbnN0ICphcmd2KQotK3sKLSsJc2l6ZV90IGxlbiwgbWF4OwotIAotLQkvKiBSZXR1cm4gdG8gb3JpZ2luYWwgZGlyZWN0b3J5LCBzYXZlIGVycm5vIGlmIG5lY2Vzc2FyeS4gKi8KLS0JaWYgKCFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCXNhdmVkX2Vycm5vID0gZmNoZGlyKHNwLT5mdHNfcmZkKSA/IGVycm5vIDogMDsKLS0JCSh2b2lkKWNsb3NlKHNwLT5mdHNfcmZkKTsKLS0JfQotKwlmb3IgKG1heCA9IDA7ICphcmd2OyArK2FyZ3YpCi0rCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID4gbWF4KQotKwkJCW1heCA9IGxlbjsKLSsJcmV0dXJuIChtYXgpOwotK30KLSAKLS0JLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0tCWZyZWUoc3ApOwotIAotLQkvKiBTZXQgZXJybm8gYW5kIHJldHVybi4gKi8KLS0JaWYgKCFJU1NFVChGVFNfTk9DSERJUikgJiYgc2F2ZWRfZXJybm8pIHsKLS0JCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQlyZXR1cm4gKC0xKTsKLSsvKgotKyAqIFdoZW4gdGhlIHBhdGggaXMgcmVhbGxvYydkLCBoYXZlIHRvIGZpeCBhbGwgb2YgdGhlIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMKLSsgKiBhbHJlYWR5IHJldHVybmVkLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rZnRzX3BhZGp1c3QoRlRTICpzcCwgdm9pZCAqYWRkcikKLSt7Ci0rCUZUU0VOVCAqcDsKLSsKLSsjZGVmaW5lCUFESlVTVChwKSB7CQkJCQkJCVwKLSsJKHApLT5mdHNfYWNjcGF0aCA9CQkJCQkJXAotKwkgICAgKGNoYXIgKilhZGRyICsgKChwKS0+ZnRzX2FjY3BhdGggLSAocCktPmZ0c19wYXRoKTsJCVwKLSsJKHApLT5mdHNfcGF0aCA9IGFkZHI7CQkJCQkJXAotK30KLSsJLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLSsJZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotKwkJQURKVVNUKHApOwotKwotKwkvKiBBZGp1c3QgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuICovCi0rCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLSsJCUFESlVTVChwKTsKLSsJCXAgPSBwLT5mdHNfbGluayA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLSAJfQotLQlyZXR1cm4gKDApOwotIH0KLSAKLSAvKgotLSAqIFNwZWNpYWwgY2FzZSBhIHJvb3Qgb2YgIi8iIHNvIHRoYXQgc2xhc2hlcyBhcmVuJ3QgYXBwZW5kZWQgd2hpY2ggd291bGQKLS0gKiBjYXVzZSBwYXRocyB0byBiZSB3cml0dGVuIGFzICIvL2ZvbyIuCi0rICogQWxsb3cgZXNzZW50aWFsbHkgdW5saW1pdGVkIHBhdGhzOyBmaW5kLCBybSwgbHMgc2hvdWxkIGFsbCB3b3JrIG9uIGFueSB0cmVlLgotKyAqIE1vc3Qgc3lzdGVtcyB3aWxsIGFsbG93IGNyZWF0aW9uIG9mIHBhdGhzIG11Y2ggbG9uZ2VyIHRoYW4gTUFYUEFUSExFTiwgZXZlbgotKyAqIHRob3VnaCB0aGUga2VybmVsIHdvbid0IHJlc29sdmUgdGhlbS4gIEFkZCB0aGUgc2l6ZSAobm90IGp1c3Qgd2hhdCdzIG5lZWRlZCkKLSsgKiBwbHVzIDI1NiBieXRlcyBzbyBkb24ndCByZWFsbG9jIHRoZSBwYXRoIDIgYnl0ZXMgYXQgYSB0aW1lLgotICAqLwotLSNkZWZpbmUJTkFQUEVORChwKQkJCQkJCQlcCi0tCShwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCAmJiBwLT5mdHNfcGF0aGxlbiA9PSAxICYmCVwKLS0JICAgIHAtPmZ0c19wYXRoWzBdID09ICcvJyA/IDAgOiBwLT5mdHNfcGF0aGxlbikKLStzdGF0aWMgaW50Ci0rZnRzX3BhbGxvYyhGVFMgKnNwLCBzaXplX3QgbW9yZSkKLSt7Ci0rCXNwLT5mdHNfcGF0aGxlbiArPSBtb3JlICsgMjU2OwotKwlzcC0+ZnRzX3BhdGggPSByZWFsbG9jKHNwLT5mdHNfcGF0aCwgKHNpemVfdClzcC0+ZnRzX3BhdGhsZW4pOwotKwlyZXR1cm4gKHNwLT5mdHNfcGF0aCA9PSBOVUxMKTsKLSt9Ci0gCi0tRlRTRU5UICoKLS1mdHNfcmVhZChzcCkKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLStzdGF0aWMgRlRTRU5UICoKLStmdHNfYWxsb2MoRlRTICpzcCwgY2hhciAqbmFtZSwgcmVnaXN0ZXIgaW50IG5hbWVsZW4pCi0gewotLQlyZWdpc3RlciBGVFNFTlQgKnAsICp0bXA7Ci0tCXJlZ2lzdGVyIGludCBpbnN0cjsKLS0JcmVnaXN0ZXIgY2hhciAqdDsKLS0JaW50IHNhdmVkX2Vycm5vOwotKwlyZWdpc3RlciBGVFNFTlQgKnA7Ci0rCXNpemVfdCBsZW47Ci0gCi0tCS8qIElmIGZpbmlzaGVkIG9yIHVucmVjb3ZlcmFibGUgZXJyb3IsIHJldHVybiBOVUxMLiAqLwotLQlpZiAoc3AtPmZ0c19jdXIgPT0gTlVMTCB8fCBJU1NFVChGVFNfU1RPUCkpCi0rCS8qCi0rCSAqIFRoZSBmaWxlIG5hbWUgaXMgYSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgYW5kIG5vIHN0YXQgc3RydWN0dXJlIGlzCi0rCSAqIG5lY2Vzc2FyeSBpZiB0aGUgdXNlciBoYXMgc2V0IHRoZSBub3N0YXQgYml0LiAgQWxsb2NhdGUgdGhlIEZUU0VOVAotKwkgKiBzdHJ1Y3R1cmUsIHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBzdGF0IHN0cnVjdHVyZSBpbiBvbmUgY2h1bmssIGJ1dAotKwkgKiBiZSBjYXJlZnVsIHRoYXQgdGhlIHN0YXQgc3RydWN0dXJlIGlzIHJlYXNvbmFibHkgYWxpZ25lZC4gIFNpbmNlIHRoZQotKwkgKiBmdHNfbmFtZSBmaWVsZCBpcyBkZWNsYXJlZCB0byBiZSBvZiBzaXplIDEsIHRoZSBmdHNfbmFtZSBwb2ludGVyIGlzCi0rCSAqIG5hbWVsZW4gKyAyIGJlZm9yZSB0aGUgZmlyc3QgcG9zc2libGUgYWRkcmVzcyBvZiB0aGUgc3RhdCBzdHJ1Y3R1cmUuCi0rCSAqLwotKwlsZW4gPSBzaXplb2YoRlRTRU5UKSArIG5hbWVsZW47Ci0rCWlmICghSVNTRVQoRlRTX05PU1RBVCkpCi0rCQlsZW4gKz0gc2l6ZW9mKHN0cnVjdCBzdGF0KSArIEFMSUdOQllURVM7Ci0rCWlmICgocCA9IG1hbGxvYyhsZW4pKSA9PSBOVUxMKQotIAkJcmV0dXJuIChOVUxMKTsKLSAKLS0JLyogU2V0IGN1cnJlbnQgbm9kZSBwb2ludGVyLiAqLwotLQlwID0gc3AtPmZ0c19jdXI7Ci0rCS8qIENvcHkgdGhlIG5hbWUgcGx1cyB0aGUgdHJhaWxpbmcgTlVMTC4gKi8KLSsJbWVtbW92ZShwLT5mdHNfbmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOwotIAotLQkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLS0JaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0rCWlmICghSVNTRVQoRlRTX05PU1RBVCkpCi0rCQlwLT5mdHNfc3RhdHAgPSAoc3RydWN0IHN0YXQgKilBTElHTihwLT5mdHNfbmFtZSArIG5hbWVsZW4gKyAyKTsKLSsJcC0+ZnRzX25hbWVsZW4gPSBuYW1lbGVuOwotKwlwLT5mdHNfcGF0aCA9IHNwLT5mdHNfcGF0aDsKLSsJcC0+ZnRzX2Vycm5vID0gMDsKLSsJcC0+ZnRzX2ZsYWdzID0gMDsKLSAJcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0rCXAtPmZ0c19udW1iZXIgPSAwOwotKwlwLT5mdHNfcG9pbnRlciA9IE5VTEw7Ci0rCXJldHVybiAocCk7Ci0rfQotIAotLQkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotLQlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAwKTsKLS0JCXJldHVybiAocCk7Ci0tCX0KLSAKLStzdGF0aWMgdV9zaG9ydAotK2Z0c19zdGF0KEZUUyAqc3AsIHJlZ2lzdGVyIEZUU0VOVCAqcCwgc3RydWN0IGRpcmVudCAqZHAsIGludCBmb2xsb3cpCi0rewotKwlyZWdpc3RlciBGVFNFTlQgKnQ7Ci0rCXJlZ2lzdGVyIGRldl90IGRldjsKLSsJcmVnaXN0ZXIgaW5vX3QgaW5vOwotKwlzdHJ1Y3Qgc3RhdCAqc2JwLCBzYjsKLSsJaW50IHNhdmVkX2Vycm5vOwotKwotKwkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0rCXNicCA9IElTU0VUKEZUU19OT1NUQVQpID8gJnNiIDogcC0+ZnRzX3N0YXRwOwotKwotKyNpZmRlZiBTX0lGV0hUCi0gCS8qCi0tCSAqIEZvbGxvd2luZyBhIHN5bWxpbmsgLS0gU0xOT05FIHRlc3QgYWxsb3dzIGFwcGxpY2F0aW9uIHRvIHNlZQotLQkgKiBTTE5PTkUgYW5kIHJlY292ZXIuICBJZiBpbmRpcmVjdGluZyB0aHJvdWdoIGEgc3ltbGluaywgaGF2ZQotLQkgKiBrZWVwIGEgcG9pbnRlciB0byBjdXJyZW50IGxvY2F0aW9uLiAgSWYgdW5hYmxlIHRvIGdldCB0aGF0Ci0tCSAqIHBvaW50ZXIsIGZvbGxvdyBmYWlscy4KLS0JICovCi0tCWlmIChpbnN0ciA9PSBGVFNfRk9MTE9XICYmCi0tCSAgICAocC0+ZnRzX2luZm8gPT0gRlRTX1NMIHx8IHAtPmZ0c19pbmZvID09IEZUU19TTE5PTkUpKSB7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAxKTsKLS0JCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCAmJiAhSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJCWlmICgocC0+ZnRzX3N5bWZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQkJfSBlbHNlCi0tCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfU1lNRk9MTE9XOwotLQkJcmV0dXJuIChwKTsKLSsJICogV2hpdGVkLW91dCBmaWxlcyBkb24ndCByZWFsbHkgZXhpc3QuICBIb3dldmVyLCB0aGVyZSdzIHN0YXQoMikgZmlsZQotKwkgKiBtYXNrIGZvciB0aGVtLCBzbyB3ZSBzZXQgaXQgc28gdGhhdCBwcm9ncmFtcyAoaS5lLiwgZmluZCkgZG9uJ3QgaGF2ZQotKwkgKiB0byB0ZXN0IEZUU19XIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBmaWxlIHR5cGVzLgotKwkgKi8KLSsJaWYgKGRwICE9IE5VTEwgJiYgZHAtPmRfdHlwZSA9PSBEVF9XSFQpIHsKLSsJCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotKwkJc2JwLT5zdF9tb2RlID0gU19JRldIVDsKLSsJCXJldHVybiAoRlRTX1cpOwotIAl9Ci0tCi0tCS8qIERpcmVjdG9yeSBpbiBwcmUtb3JkZXIuICovCi0tCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCkgewotLQkJLyogSWYgc2tpcHBlZCBvciBjcm9zc2VkIG1vdW50IHBvaW50LCBkbyBwb3N0LW9yZGVyIHZpc2l0LiAqLwotLQkJaWYgKGluc3RyID09IEZUU19TS0lQIHx8Ci0tCQkgICAgSVNTRVQoRlRTX1hERVYpICYmIHAtPmZ0c19kZXYgIT0gc3AtPmZ0c19kZXYpIHsKLS0JCQlpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykKLS0JCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JCQlpZiAoc3AtPmZ0c19jaGlsZCkgewotLQkJCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotLQkJCX0KLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCQlyZXR1cm4gKHApOwotLQkJfSAKLS0KLS0JCS8qIFJlYnVpbGQgaWYgb25seSByZWFkIHRoZSBuYW1lcyBhbmQgbm93IHRyYXZlcnNpbmcuICovCi0tCQlpZiAoc3AtPmZ0c19jaGlsZCAmJiBzcC0+ZnRzX29wdGlvbnMgJiBGVFNfTkFNRU9OTFkpIHsKLS0JCQlzcC0+ZnRzX29wdGlvbnMgJj0gfkZUU19OQU1FT05MWTsKLS0JCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogQ2QgdG8gdGhlIHN1YmRpcmVjdG9yeS4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlIGFscmVhZHkgcmVhZCBhbmQgbm93IGZhaWwgdG8gY2hkaXIsIHdoYWNrIHRoZSBsaXN0Ci0tCQkgKiB0byBtYWtlIHRoZSBuYW1lcyBjb21lIG91dCByaWdodCwgYW5kIHNldCB0aGUgcGFyZW50IGVycm5vCi0tCQkgKiBzbyB0aGUgYXBwbGljYXRpb24gd2lsbCBldmVudHVhbGx5IGdldCBhbiBlcnJvciBjb25kaXRpb24uCi0tCQkgKiBTZXQgdGhlIEZUU19ET05UQ0hESVIgZmxhZyBzbyB0aGF0IHdoZW4gd2UgbG9naWNhbGx5IGNoYW5nZQotLQkJICogZGlyZWN0b3JpZXMgYmFjayB0byB0aGUgcGFyZW50IHdlIGRvbid0IGRvIGEgY2hkaXIuCi0tCQkgKgotLQkJICogSWYgaGF2ZW4ndCByZWFkIGRvIHNvLiAgSWYgdGhlIHJlYWQgZmFpbHMsIGZ0c19idWlsZCBzZXRzCi0tCQkgKiBGVFNfU1RPUCBvciB0aGUgZnRzX2luZm8gZmllbGQgb2YgdGhlIG5vZGUuCi0tCQkgKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0tCQkJaWYgKENIRElSKHNwLCBwLT5mdHNfYWNjcGF0aCkpIHsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfRE9OVENIRElSOwotLQkJCQlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkJCQlwLT5mdHNfYWNjcGF0aCA9Ci0tCQkJCQkgICAgcC0+ZnRzX3BhcmVudC0+ZnRzX2FjY3BhdGg7Ci0tCQkJfQotLQkJfSBlbHNlIGlmICgoc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgQlJFQUQpKSA9PSBOVUxMKSB7Ci0tCQkJaWYgKElTU0VUKEZUU19TVE9QKSkKLS0JCQkJcmV0dXJuIChOVUxMKTsKLS0JCQlyZXR1cm4gKHApOwotKyNlbmRpZgotKwotKwkvKgotKwkgKiBJZiBkb2luZyBhIGxvZ2ljYWwgd2Fsaywgb3IgYXBwbGljYXRpb24gcmVxdWVzdGVkIEZUU19GT0xMT1csIGRvCi0rCSAqIGEgc3RhdCgyKS4gIElmIHRoYXQgZmFpbHMsIGNoZWNrIGZvciBhIG5vbi1leGlzdGVudCBzeW1saW5rLiAgSWYKLSsJICogZmFpbCwgc2V0IHRoZSBlcnJubyBmcm9tIHRoZSBzdGF0IGNhbGwuCi0rCSAqLwotKwlpZiAoSVNTRVQoRlRTX0xPR0lDQUwpIHx8IGZvbGxvdykgewotKwkJaWYgKHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLSsJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotKwkJCWlmICghbHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLSsJCQkJZXJybm8gPSAwOwotKwkJCQlyZXR1cm4gKEZUU19TTE5PTkUpOwotKwkJCX0KLSsJCQlwLT5mdHNfZXJybm8gPSBzYXZlZF9lcnJubzsKLSsJCQlnb3RvIGVycjsKLSAJCX0KLS0JCXAgPSBzcC0+ZnRzX2NoaWxkOwotLQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQlnb3RvIG5hbWU7Ci0rCX0gZWxzZSBpZiAobHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLSsJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotK2VycjoJCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotKwkJcmV0dXJuIChGVFNfTlMpOwotIAl9Ci0gCi0tCS8qIE1vdmUgdG8gdGhlIG5leHQgbm9kZSBvbiB0aGlzIGxldmVsLiAqLwotLW5leHQ6CXRtcCA9IHA7Ci0tCWlmIChwID0gcC0+ZnRzX2xpbmspIHsKLS0JCWZyZWUodG1wKTsKLS0KLS0JCS8qCi0tCQkgKiBJZiByZWFjaGVkIHRoZSB0b3AsIHJldHVybiB0byB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5LCBhbmQKLS0JCSAqIGxvYWQgdGhlIHBhdGhzIGZvciB0aGUgbmV4dCByb290LgotLQkJICovCi0tCQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotLQkJCQlTRVQoRlRTX1NUT1ApOwotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCX0KLS0JCQlmdHNfbG9hZChzcCwgcCk7Ci0tCQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLQkJfQotLQotKwlpZiAoU19JU0RJUihzYnAtPnN0X21vZGUpKSB7Ci0gCQkvKgotLQkJICogVXNlciBtYXkgaGF2ZSBjYWxsZWQgZnRzX3NldCBvbiB0aGUgbm9kZS4gIElmIHNraXBwZWQsCi0tCQkgKiBpZ25vcmUuICBJZiBmb2xsb3dlZCwgZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIHNvIHdlIGNhbgotLQkJICogZ2V0IGJhY2sgaWYgbmVjZXNzYXJ5LgotKwkJICogU2V0IHRoZSBkZXZpY2UvaW5vZGUuICBVc2VkIHRvIGZpbmQgY3ljbGVzIGFuZCBjaGVjayBmb3IKLSsJCSAqIGNyb3NzaW5nIG1vdW50IHBvaW50cy4gIEFsc28gcmVtZW1iZXIgdGhlIGxpbmsgY291bnQsIHVzZWQKLSsJCSAqIGluIGZ0c19idWlsZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN0YXQgY2FsbHMuICBJdCBpcwotKwkJICogdW5kZXJzdG9vZCB0aGF0IHRoZXNlIGZpZWxkcyBhcmUgb25seSByZWZlcmVuY2VkIGlmIGZ0c19pbmZvCi0rCQkgKiBpcyBzZXQgdG8gRlRTX0QuCi0gCQkgKi8KLS0JCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX1NLSVApCi0tCQkJZ290byBuZXh0OwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfRk9MTE9XKSB7Ci0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgMSk7Ci0tCQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpCi0tCQkJCWlmICgocC0+ZnRzX3N5bWZkID0KLS0JCQkJICAgIG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotLQkJCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJCQlwLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQkJCX0gZWxzZQotLQkJCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19TWU1GT0xMT1c7Ci0tCQkJcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCQl9Ci0tCi0tbmFtZToJCXQgPSBzcC0+ZnRzX3BhdGggKyBOQVBQRU5EKHAtPmZ0c19wYXJlbnQpOwotLQkJKnQrKyA9ICcvJzsKLS0JCW1lbW1vdmUodCwgcC0+ZnRzX25hbWUsIHAtPmZ0c19uYW1lbGVuICsgMSk7Ci0tCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCX0KLSsJCWRldiA9IHAtPmZ0c19kZXYgPSBzYnAtPnN0X2RldjsKLSsJCWlubyA9IHAtPmZ0c19pbm8gPSBzYnAtPnN0X2lubzsKLSsJCXAtPmZ0c19ubGluayA9IHNicC0+c3Rfbmxpbms7Ci0gCi0tCS8qIE1vdmUgdXAgdG8gdGhlIHBhcmVudCBub2RlLiAqLwotLQlwID0gdG1wLT5mdHNfcGFyZW50OwotLQlmcmVlKHRtcCk7Ci0rCQlpZiAoSVNET1QocC0+ZnRzX25hbWUpKQotKwkJCXJldHVybiAoRlRTX0RPVCk7Ci0gCi0tCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RQQVJFTlRMRVZFTCkgewotIAkJLyoKLS0JCSAqIERvbmU7IGZyZWUgZXZlcnl0aGluZyB1cCBhbmQgc2V0IGVycm5vIHRvIDAgc28gdGhlIHVzZXIKLS0JCSAqIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm9yIGFuZCBFT0YuCi0rCQkgKiBDeWNsZSBkZXRlY3Rpb24gaXMgZG9uZSBieSBicnV0ZSBmb3JjZSB3aGVuIHRoZSBkaXJlY3RvcnkKLSsJCSAqIGlzIGZpcnN0IGVuY291bnRlcmVkLiAgSWYgdGhlIHRyZWUgZ2V0cyBkZWVwIGVub3VnaCBvciB0aGUKLSsJCSAqIG51bWJlciBvZiBzeW1ib2xpYyBsaW5rcyB0byBkaXJlY3RvcmllcyBpcyBoaWdoIGVub3VnaCwKLSsJCSAqIHNvbWV0aGluZyBmYXN0ZXIgbWlnaHQgYmUgd29ydGh3aGlsZS4KLSAJCSAqLwotLQkJZnJlZShwKTsKLS0JCWVycm5vID0gMDsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBOVUxMKTsKLS0JfQotLQotLQkvKiBOdWwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLS0Jc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0tCi0tCS8qCi0tCSAqIFJldHVybiB0byB0aGUgcGFyZW50IGRpcmVjdG9yeS4gIElmIGF0IGEgcm9vdCBub2RlIG9yIGNhbWUgdGhyb3VnaAotLQkgKiBhIHN5bWxpbmssIGdvIGJhY2sgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgT3RoZXJ3aXNlLCBjZCB1cAotLQkgKiBvbmUgZGlyZWN0b3J5LgotLQkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMKSB7Ci0tCQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JfSBlbHNlIGlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKSB7Ci0tCQlpZiAoRkNIRElSKHNwLCBwLT5mdHNfc3ltZmQpKSB7Ci0tCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0JCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJU0VUKEZUU19TVE9QKTsKLS0JCQlyZXR1cm4gKE5VTEwpOwotLQkJfQotLQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JfSBlbHNlIGlmICghKHAtPmZ0c19mbGFncyAmIEZUU19ET05UQ0hESVIpKSB7Ci0tCQlpZiAoQ0hESVIoc3AsICIuLiIpKSB7Ci0tCQkJU0VUKEZUU19TVE9QKTsKLS0JCQlyZXR1cm4gKE5VTEwpOwotLQkJfQotLQl9Ci0tCXAtPmZ0c19pbmZvID0gcC0+ZnRzX2Vycm5vID8gRlRTX0VSUiA6IEZUU19EUDsKLS0JcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLX0KLS0KLS0vKgotLSAqIEZ0c19zZXQgdGFrZXMgdGhlIHN0cmVhbSBhcyBhbiBhcmd1bWVudCBhbHRob3VnaCBpdCdzIG5vdCB1c2VkIGluIHRoaXMKLS0gKiBpbXBsZW1lbnRhdGlvbjsgaXQgd291bGQgYmUgbmVjZXNzYXJ5IGlmIGFueW9uZSB3YW50ZWQgdG8gYWRkIGdsb2JhbAotLSAqIHNlbWFudGljcyB0byBmdHMgdXNpbmcgZnRzX3NldC4gIEFuIGVycm9yIHJldHVybiBpcyBhbGxvd2VkIGZvciBzaW1pbGFyCi0tICogcmVhc29ucy4KLS0gKi8KLS0vKiBBUkdTVVNFRCAqLwotLWludAotLWZ0c19zZXQoc3AsIHAsIGluc3RyKQotLQlGVFMgKnNwOwotLQlGVFNFTlQgKnA7Ci0tCWludCBpbnN0cjsKLS17Ci0tCWlmIChpbnN0ciAmJiBpbnN0ciAhPSBGVFNfQUdBSU4gJiYgaW5zdHIgIT0gRlRTX0ZPTExPVyAmJgotLQkgICAgaW5zdHIgIT0gRlRTX05PSU5TVFIgJiYgaW5zdHIgIT0gRlRTX1NLSVApIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuICgxKTsKLSsJCWZvciAodCA9IHAtPmZ0c19wYXJlbnQ7Ci0rCQkgICAgdC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7IHQgPSB0LT5mdHNfcGFyZW50KQotKwkJCWlmIChpbm8gPT0gdC0+ZnRzX2lubyAmJiBkZXYgPT0gdC0+ZnRzX2RldikgewotKwkJCQlwLT5mdHNfY3ljbGUgPSB0OwotKwkJCQlyZXR1cm4gKEZUU19EQyk7Ci0rCQkJfQotKwkJcmV0dXJuIChGVFNfRCk7Ci0gCX0KLS0JcC0+ZnRzX2luc3RyID0gaW5zdHI7Ci0tCXJldHVybiAoMCk7Ci0rCWlmIChTX0lTTE5LKHNicC0+c3RfbW9kZSkpCi0rCQlyZXR1cm4gKEZUU19TTCk7Ci0rCWlmIChTX0lTUkVHKHNicC0+c3RfbW9kZSkpCi0rCQlyZXR1cm4gKEZUU19GKTsKLSsJcmV0dXJuIChGVFNfREVGQVVMVCk7Ci0gfQotIAotLUZUU0VOVCAqCi0tZnRzX2NoaWxkcmVuKHNwLCBpbnN0cikKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JaW50IGluc3RyOwotK3N0YXRpYyBGVFNFTlQgKgotK2Z0c19zb3J0KEZUUyAqc3AsIEZUU0VOVCAqaGVhZCwgcmVnaXN0ZXIgaW50IG5pdGVtcykKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS0JaW50IGZkOwotLQotLQlpZiAoaW5zdHIgJiYgaW5zdHIgIT0gRlRTX05BTUVPTkxZKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogU2V0IGN1cnJlbnQgbm9kZSBwb2ludGVyLiAqLwotLQlwID0gc3AtPmZ0c19jdXI7Ci0tCi0tCS8qCi0tCSAqIEVycm5vIHNldCB0byAwIHNvIHVzZXIgY2FuIGRpc3Rpbmd1aXNoIGVtcHR5IGRpcmVjdG9yeSBmcm9tCi0tCSAqIGFuIGVycm9yLgotLQkgKi8KLS0JZXJybm8gPSAwOwotLQotLQkvKiBGYXRhbCBlcnJvcnMgc3RvcCBoZXJlLiAqLwotLQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJcmV0dXJuIChOVUxMKTsKLS0KLS0JLyogUmV0dXJuIGxvZ2ljYWwgaGllcmFyY2h5IG9mIHVzZXIncyBhcmd1bWVudHMuICovCi0tCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfSU5JVCkKLS0JCXJldHVybiAocC0+ZnRzX2xpbmspOwotLQotLQkvKgotLQkgKiBJZiBub3QgYSBkaXJlY3RvcnkgYmVpbmcgdmlzaXRlZCBpbiBwcmUtb3JkZXIsIHN0b3AgaGVyZS4gIENvdWxkCi0tCSAqIGFsbG93IEZUU19ETlIsIGFzc3VtaW5nIHRoZSB1c2VyIGhhcyBmaXhlZCB0aGUgcHJvYmxlbSwgYnV0IHRoZQotLQkgKiBzYW1lIGVmZmVjdCBpcyBhdmFpbGFibGUgd2l0aCBGVFNfQUdBSU4uCi0tCSAqLwotLQlpZiAocC0+ZnRzX2luZm8gIT0gRlRTX0QgLyogJiYgcC0+ZnRzX2luZm8gIT0gRlRTX0ROUiAqLykKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIEZyZWUgdXAgYW55IHByZXZpb3VzIGNoaWxkIGxpc3QuICovCi0tCWlmIChzcC0+ZnRzX2NoaWxkKQotLQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQotLQlpZiAoaW5zdHIgPT0gRlRTX05BTUVPTkxZKSB7Ci0tCQlzcC0+ZnRzX29wdGlvbnMgfD0gRlRTX05BTUVPTkxZOwotLQkJaW5zdHIgPSBCTkFNRVM7Ci0tCX0gZWxzZSAKLS0JCWluc3RyID0gQkNISUxEOwotKwlyZWdpc3RlciBGVFNFTlQgKiphcCwgKnA7Ci0gCi0gCS8qCi0tCSAqIElmIHVzaW5nIGNoZGlyIG9uIGEgcmVsYXRpdmUgcGF0aCBhbmQgY2FsbGVkIEJFRk9SRSBmdHNfcmVhZCBkb2VzCi0tCSAqIGl0cyBjaGRpciB0byB0aGUgcm9vdCBvZiBhIHRyYXZlcnNhbCwgd2UgY2FuIGxvc2UgLS0gd2UgbmVlZCB0bwotLQkgKiBjaGRpciBpbnRvIHRoZSBzdWJkaXJlY3RvcnksIGFuZCB3ZSBkb24ndCBrbm93IHdoZXJlIHRoZSBjdXJyZW50Ci0tCSAqIGRpcmVjdG9yeSBpcywgc28gd2UgY2FuJ3QgZ2V0IGJhY2sgc28gdGhhdCB0aGUgdXBjb21pbmcgY2hkaXIgYnkKLS0JICogZnRzX3JlYWQgd2lsbCB3b3JrLgotKwkgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN0cnVjdHVyZXMgYW5kIGNhbGwgcXNvcnQoMykuCi0rCSAqIFJlYXNzZW1ibGUgdGhlIGFycmF5IGluIHRoZSBvcmRlciByZXR1cm5lZCBieSBxc29ydC4gIElmIHVuYWJsZSB0bwotKwkgKiBzb3J0IGZvciBtZW1vcnkgcmVhc29ucywgcmV0dXJuIHRoZSBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGVpcgotKwkgKiBjdXJyZW50IG9yZGVyLiAgQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCBuZWVkcyBwbHVzCi0rCSAqIDQwIHNvIGRvbid0IHJlYWxsb2Mgb25lIGVudHJ5IGF0IGEgdGltZS4KLSAJICovCi0tCWlmIChwLT5mdHNfbGV2ZWwgIT0gRlRTX1JPT1RMRVZFTCB8fCBwLT5mdHNfYWNjcGF0aFswXSA9PSAnLycgfHwKLS0JICAgIElTU0VUKEZUU19OT0NIRElSKSkKLS0JCXJldHVybiAoc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgaW5zdHIpKTsKLS0KLS0JaWYgKChmZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCXNwLT5mdHNfY2hpbGQgPSBmdHNfYnVpbGQoc3AsIGluc3RyKTsKLS0JaWYgKGZjaGRpcihmZCkpCi0tCQlyZXR1cm4gKE5VTEwpOwotLQkodm9pZCljbG9zZShmZCk7Ci0tCXJldHVybiAoc3AtPmZ0c19jaGlsZCk7Ci0rCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotKwkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLSsJCWlmICgoc3AtPmZ0c19hcnJheSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLSsJCSAgICAoc2l6ZV90KShzcC0+ZnRzX25pdGVtcyAqIHNpemVvZihGVFNFTlQgKikpKSkgPT0gTlVMTCkgewotKwkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLSsJCQlyZXR1cm4gKGhlYWQpOwotKwkJfQotKwl9Ci0rCWZvciAoYXAgPSBzcC0+ZnRzX2FycmF5LCBwID0gaGVhZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotKwkJKmFwKysgPSBwOwotKwlxc29ydCgodm9pZCAqKXNwLT5mdHNfYXJyYXksIG5pdGVtcywgc2l6ZW9mKEZUU0VOVCAqKSwgc3AtPmZ0c19jb21wYXIpOwotKwlmb3IgKGhlYWQgPSAqKGFwID0gc3AtPmZ0c19hcnJheSk7IC0tbml0ZW1zOyArK2FwKQotKwkJYXBbMF0tPmZ0c19saW5rID0gYXBbMV07Ci0rCWFwWzBdLT5mdHNfbGluayA9IE5VTEw7Ci0rCXJldHVybiAoaGVhZCk7Ci0gfQotIAotIC8qCi1AQCAtNTUxLDkgKzMyMCw3IEBAIGZ0c19jaGlsZHJlbihzcCwgaW5zdHIpCi0gICogYmVlbiBmb3VuZCwgY3V0dGluZyB0aGUgc3RhdCBjYWxscyBieSBhYm91dCAyLzMuCi0gICovCi0gc3RhdGljIEZUU0VOVCAqCi0tZnRzX2J1aWxkKHNwLCB0eXBlKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLQlpbnQgdHlwZTsKLStmdHNfYnVpbGQocmVnaXN0ZXIgRlRTICpzcCwgaW50IHR5cGUpCi0gewotIAlyZWdpc3RlciBzdHJ1Y3QgZGlyZW50ICpkcDsKLSAJcmVnaXN0ZXIgRlRTRU5UICpwLCAqaGVhZDsKLUBAIC03MTYsMjgzICs0ODMsNDc5IEBAIG1lbTE6CQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0gCQkJCS0tbmxpbmtzOwotIAkJfQotIAotLQkJLyogV2Ugd2FsayBpbiBkaXJlY3Rvcnkgb3JkZXIgc28gImxzIC1mIiBkb2Vzbid0IGdldCB1cHNldC4gKi8KLS0JCXAtPmZ0c19saW5rID0gTlVMTDsKLS0JCWlmIChoZWFkID09IE5VTEwpCi0tCQkJaGVhZCA9IHRhaWwgPSBwOwotLQkJZWxzZSB7Ci0tCQkJdGFpbC0+ZnRzX2xpbmsgPSBwOwotLQkJCXRhaWwgPSBwOwotKwkJLyogV2Ugd2FsayBpbiBkaXJlY3Rvcnkgb3JkZXIgc28gImxzIC1mIiBkb2Vzbid0IGdldCB1cHNldC4gKi8KLSsJCXAtPmZ0c19saW5rID0gTlVMTDsKLSsJCWlmIChoZWFkID09IE5VTEwpCi0rCQkJaGVhZCA9IHRhaWwgPSBwOwotKwkJZWxzZSB7Ci0rCQkJdGFpbC0+ZnRzX2xpbmsgPSBwOwotKwkJCXRhaWwgPSBwOwotKwkJfQotKwkJKytuaXRlbXM7Ci0rCX0KLSsJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0rCi0rCS8qCi0rCSAqIElmIGhhZCB0byByZWFsbG9jIHRoZSBwYXRoLCBhZGp1c3QgdGhlIGFkZHJlc3NlcyBmb3IgdGhlIHJlc3QKLSsJICogb2YgdGhlIHRyZWUuCi0rCSAqLwotKwlpZiAoYWRqYWRkcikKLSsJCWZ0c19wYWRqdXN0KHNwLCBhZGphZGRyKTsKLSsKLSsJLyoKLSsJICogSWYgbm90IGNoYW5naW5nIGRpcmVjdG9yaWVzLCByZXNldCB0aGUgcGF0aCBiYWNrIHRvIG9yaWdpbmFsCi0rCSAqIHN0YXRlLgotKwkgKi8KLSsJaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotKwkJaWYgKGNwIC0gMSA+IHNwLT5mdHNfcGF0aCkKLSsJCQktLWNwOwotKwkJKmNwID0gJ1wwJzsKLSsJfQotKwotKwkvKgotKwkgKiBJZiBkZXNjZW5kZWQgYWZ0ZXIgY2FsbGVkIGZyb20gZnRzX2NoaWxkcmVuIG9yIGFmdGVyIGNhbGxlZCBmcm9tCi0rCSAqIGZ0c19yZWFkIGFuZCBub3RoaW5nIGZvdW5kLCBnZXQgYmFjay4gIEF0IHRoZSByb290IGxldmVsIHdlIHVzZQotKwkgKiB0aGUgc2F2ZWQgZmQ7IGlmIG9uZSBvZiBmdHNfb3BlbigpJ3MgYXJndW1lbnRzIGlzIGEgcmVsYXRpdmUgcGF0aAotKwkgKiB0byBhbiBlbXB0eSBkaXJlY3RvcnksIHdlIHdpbmQgdXAgaGVyZSB3aXRoIG5vIG90aGVyIHdheSBiYWNrLiAgSWYKLSsJICogY2FuJ3QgZ2V0IGJhY2ssIHdlJ3JlIGRvbmUuCi0rCSAqLwotKwlpZiAoZGVzY2VuZCAmJiAodHlwZSA9PSBCQ0hJTEQgfHwgIW5pdGVtcykgJiYKLSsJICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLSsJICAgIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpIDogQ0hESVIoc3AsICIuLiIpKSkgewotKwkJY3VyLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0rCQlTRVQoRlRTX1NUT1ApOwotKwkJcmV0dXJuIChOVUxMKTsKLSsJfQotKwotKwkvKiBJZiBkaWRuJ3QgZmluZCBhbnl0aGluZywgcmV0dXJuIE5VTEwuICovCi0rCWlmICghbml0ZW1zKSB7Ci0rCQlpZiAodHlwZSA9PSBCUkVBRCkKLSsJCQljdXItPmZ0c19pbmZvID0gRlRTX0RQOwotKwkJcmV0dXJuIChOVUxMKTsKLSsJfQotKwotKwkvKiBTb3J0IHRoZSBlbnRyaWVzLiAqLwotKwlpZiAoc3AtPmZ0c19jb21wYXIgJiYgbml0ZW1zID4gMSkKLSsJCWhlYWQgPSBmdHNfc29ydChzcCwgaGVhZCwgbml0ZW1zKTsKLSsJcmV0dXJuIChoZWFkKTsKLSt9Ci0rCi0rCi0rRlRTICoKLStmdHNfb3BlbihjaGFyICogY29uc3QgKmFyZ3YsIHJlZ2lzdGVyIGludCBvcHRpb25zLCBpbnQgKCpjb21wYXIpKCkpCi0rewotKwlyZWdpc3RlciBGVFMgKnNwOwotKwlyZWdpc3RlciBGVFNFTlQgKnAsICpyb290OwotKwlyZWdpc3RlciBpbnQgbml0ZW1zOwotKwlGVFNFTlQgKnBhcmVudCwgKnRtcDsKLSsJaW50IGxlbjsKLSsKLSsJLyogT3B0aW9ucyBjaGVjay4gKi8KLSsJaWYgKG9wdGlvbnMgJiB+RlRTX09QVElPTk1BU0spIHsKLSsJCWVycm5vID0gRUlOVkFMOwotKwkJcmV0dXJuIChOVUxMKTsKLSsJfQotKwotKwkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHRoZSBzdHJlYW0gKi8KLSsJaWYgKChzcCA9IG1hbGxvYygodV9pbnQpc2l6ZW9mKEZUUykpKSA9PSBOVUxMKQotKwkJcmV0dXJuIChOVUxMKTsKLSsJbWVtc2V0KHNwLCAwLCBzaXplb2YoRlRTKSk7Ci0rCXNwLT5mdHNfY29tcGFyID0gY29tcGFyOwotKwlzcC0+ZnRzX29wdGlvbnMgPSBvcHRpb25zOwotKwotKwkvKiBMb2dpY2FsIHdhbGtzIHR1cm4gb24gTk9DSERJUjsgc3ltYm9saWMgbGlua3MgYXJlIHRvbyBoYXJkLiAqLwotKwlpZiAoSVNTRVQoRlRTX0xPR0lDQUwpKQotKwkJU0VUKEZUU19OT0NIRElSKTsKLSsKLSsJLyoKLSsJICogU3RhcnQgb3V0IHdpdGggMUsgb2YgcGF0aCBzcGFjZSwgYW5kIGVub3VnaCwgaW4gYW55IGNhc2UsCi0rCSAqIHRvIGhvbGQgdGhlIHVzZXIncyBwYXRocy4KLSsJICovCi0rCWlmIChmdHNfcGFsbG9jKHNwLCBNQVgoZnRzX21heGFyZ2xlbihhcmd2KSwgTUFYUEFUSExFTikpKQotKwkJZ290byBtZW0xOwotKwotKwkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHJvb3QncyBwYXJlbnQuICovCi0rCWlmICgocGFyZW50ID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0rCQlnb3RvIG1lbTI7Ci0rCXBhcmVudC0+ZnRzX2xldmVsID0gRlRTX1JPT1RQQVJFTlRMRVZFTDsKLSsKLSsJLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290KHMpLiAqLwotKwlmb3IgKHJvb3QgPSBOVUxMLCBuaXRlbXMgPSAwOyAqYXJndjsgKythcmd2LCArK25pdGVtcykgewotKwkJLyogRG9uJ3QgYWxsb3cgemVyby1sZW5ndGggcGF0aHMuICovCi0rCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID09IDApIHsKLSsJCQllcnJubyA9IEVJTlZBTDsKLSsJCQlnb3RvIG1lbTM7Ci0rCQl9Ci0rCi0rCQlwID0gZnRzX2FsbG9jKHNwLCAqYXJndiwgbGVuKTsKLSsJCXAtPmZ0c19sZXZlbCA9IEZUU19ST09UTEVWRUw7Ci0rCQlwLT5mdHNfcGFyZW50ID0gcGFyZW50OwotKwkJcC0+ZnRzX2FjY3BhdGggPSBwLT5mdHNfbmFtZTsKLSsJCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIElTU0VUKEZUU19DT01GT0xMT1cpKTsKLSsKLSsJCS8qIENvbW1hbmQtbGluZSAiLiIgYW5kICIuLiIgYXJlIHJlYWwgZGlyZWN0b3JpZXMuICovCi0rCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0RPVCkKLSsJCQlwLT5mdHNfaW5mbyA9IEZUU19EOwotKwotKwkJLyoKLSsJCSAqIElmIGNvbXBhcmlzb24gcm91dGluZSBzdXBwbGllZCwgdHJhdmVyc2UgaW4gc29ydGVkCi0rCQkgKiBvcmRlcjsgb3RoZXJ3aXNlIHRyYXZlcnNlIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuCi0rCQkgKi8KLSsJCWlmIChjb21wYXIpIHsKLSsJCQlwLT5mdHNfbGluayA9IHJvb3Q7Ci0rCQkJcm9vdCA9IHA7Ci0rCQl9IGVsc2UgewotKwkJCXAtPmZ0c19saW5rID0gTlVMTDsKLSsJCQlpZiAocm9vdCA9PSBOVUxMKQotKwkJCQl0bXAgPSByb290ID0gcDsKLSsJCQllbHNlIHsKLSsJCQkJdG1wLT5mdHNfbGluayA9IHA7Ci0rCQkJCXRtcCA9IHA7Ci0rCQkJfQotIAkJfQotLQkJKytuaXRlbXM7Ci0gCX0KLS0JKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCi0tCS8qCi0tCSAqIElmIGhhZCB0byByZWFsbG9jIHRoZSBwYXRoLCBhZGp1c3QgdGhlIGFkZHJlc3NlcyBmb3IgdGhlIHJlc3QKLS0JICogb2YgdGhlIHRyZWUuCi0tCSAqLwotLQlpZiAoYWRqYWRkcikKLS0JCWZ0c19wYWRqdXN0KHNwLCBhZGphZGRyKTsKLSsJaWYgKGNvbXBhciAmJiBuaXRlbXMgPiAxKQotKwkJcm9vdCA9IGZ0c19zb3J0KHNwLCByb290LCBuaXRlbXMpOwotIAotIAkvKgotLQkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMsIHJlc2V0IHRoZSBwYXRoIGJhY2sgdG8gb3JpZ2luYWwKLS0JICogc3RhdGUuCi0rCSAqIEFsbG9jYXRlIGEgZHVtbXkgcG9pbnRlciBhbmQgbWFrZSBmdHNfcmVhZCB0aGluayB0aGF0IHdlJ3ZlIGp1c3QKLSsJICogZmluaXNoZWQgdGhlIG5vZGUgYmVmb3JlIHRoZSByb290KHMpOyBzZXQgcC0+ZnRzX2luZm8gdG8gRlRTX0lOSVQKLSsJICogc28gdGhhdCBldmVyeXRoaW5nIGFib3V0IHRoZSAiY3VycmVudCIgbm9kZSBpcyBpZ25vcmVkLgotIAkgKi8KLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotLQkJaWYgKGNwIC0gMSA+IHNwLT5mdHNfcGF0aCkKLS0JCQktLWNwOwotLQkJKmNwID0gJ1wwJzsKLS0JfQotKwlpZiAoKHNwLT5mdHNfY3VyID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0rCQlnb3RvIG1lbTM7Ci0rCXNwLT5mdHNfY3VyLT5mdHNfbGluayA9IHJvb3Q7Ci0rCXNwLT5mdHNfY3VyLT5mdHNfaW5mbyA9IEZUU19JTklUOwotIAotIAkvKgotLQkgKiBJZiBkZXNjZW5kZWQgYWZ0ZXIgY2FsbGVkIGZyb20gZnRzX2NoaWxkcmVuIG9yIGFmdGVyIGNhbGxlZCBmcm9tCi0tCSAqIGZ0c19yZWFkIGFuZCBub3RoaW5nIGZvdW5kLCBnZXQgYmFjay4gIEF0IHRoZSByb290IGxldmVsIHdlIHVzZQotLQkgKiB0aGUgc2F2ZWQgZmQ7IGlmIG9uZSBvZiBmdHNfb3BlbigpJ3MgYXJndW1lbnRzIGlzIGEgcmVsYXRpdmUgcGF0aAotLQkgKiB0byBhbiBlbXB0eSBkaXJlY3RvcnksIHdlIHdpbmQgdXAgaGVyZSB3aXRoIG5vIG90aGVyIHdheSBiYWNrLiAgSWYKLS0JICogY2FuJ3QgZ2V0IGJhY2ssIHdlJ3JlIGRvbmUuCi0rCSAqIElmIHVzaW5nIGNoZGlyKDIpLCBncmFiIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nIHRvIGRvdCB0byBpbnN1cmUKLSsJICogdGhhdCB3ZSBjYW4gZ2V0IGJhY2sgaGVyZTsgdGhpcyBjb3VsZCBiZSBhdm9pZGVkIGZvciBzb21lIHBhdGhzLAotKwkgKiBidXQgYWxtb3N0IGNlcnRhaW5seSBub3Qgd29ydGggdGhlIGVmZm9ydC4gIFNsYXNoZXMsIHN5bWJvbGljIGxpbmtzLAotKwkgKiBhbmQgIi4uIiBhcmUgYWxsIGZhaXJseSBuYXN0eSBwcm9ibGVtcy4gIE5vdGUsIGlmIHdlIGNhbid0IGdldCB0aGUKLSsJICogZGVzY3JpcHRvciB3ZSBydW4gYW55d2F5LCBqdXN0IG1vcmUgc2xvd2x5LgotIAkgKi8KLS0JaWYgKGRlc2NlbmQgJiYgKHR5cGUgPT0gQkNISUxEIHx8ICFuaXRlbXMpICYmCi0tCSAgICAoY3VyLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCA/Ci0tCSAgICBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSA6IENIRElSKHNwLCAiLi4iKSkpIHsKLS0JCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJU0VUKEZUU19TVE9QKTsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLSsJaWYgKCFJU1NFVChGVFNfTk9DSERJUikgJiYgKHNwLT5mdHNfcmZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKQotKwkJU0VUKEZUU19OT0NIRElSKTsKLSAKLS0JLyogSWYgZGlkbid0IGZpbmQgYW55dGhpbmcsIHJldHVybiBOVUxMLiAqLwotLQlpZiAoIW5pdGVtcykgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpCi0tCQkJY3VyLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLSsJcmV0dXJuIChzcCk7Ci0gCi0tCS8qIFNvcnQgdGhlIGVudHJpZXMuICovCi0tCWlmIChzcC0+ZnRzX2NvbXBhciAmJiBuaXRlbXMgPiAxKQotLQkJaGVhZCA9IGZ0c19zb3J0KHNwLCBoZWFkLCBuaXRlbXMpOwotLQlyZXR1cm4gKGhlYWQpOwotK21lbTM6CWZ0c19sZnJlZShyb290KTsKLSsJZnJlZShwYXJlbnQpOwotK21lbTI6CWZyZWUoc3AtPmZ0c19wYXRoKTsKLSttZW0xOglmcmVlKHNwKTsKLSsJcmV0dXJuIChOVUxMKTsKLSB9Ci0gCi0tc3RhdGljIHVfc2hvcnQKLS1mdHNfc3RhdChzcCwgZHAsIHAsIGZvbGxvdykKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlzdHJ1Y3QgZGlyZW50ICpkcDsKLS0JaW50IGZvbGxvdzsKLStGVFNFTlQgKgotK2Z0c19yZWFkKHJlZ2lzdGVyIEZUUyAqc3ApCi0gewotLQlyZWdpc3RlciBGVFNFTlQgKnQ7Ci0tCXJlZ2lzdGVyIGRldl90IGRldjsKLS0JcmVnaXN0ZXIgaW5vX3QgaW5vOwotLQlzdHJ1Y3Qgc3RhdCAqc2JwLCBzYjsKLSsJcmVnaXN0ZXIgRlRTRU5UICpwLCAqdG1wOwotKwlyZWdpc3RlciBpbnQgaW5zdHI7Ci0rCXJlZ2lzdGVyIGNoYXIgKnQ7Ci0gCWludCBzYXZlZF9lcnJubzsKLSAKLS0JLyogSWYgdXNlciBuZWVkcyBzdGF0IGluZm8sIHN0YXQgYnVmZmVyIGFscmVhZHkgYWxsb2NhdGVkLiAqLwotLQlzYnAgPSBJU1NFVChGVFNfTk9TVEFUKSA/ICZzYiA6IHAtPmZ0c19zdGF0cDsKLSsJLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0rCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLSsJCXJldHVybiAoTlVMTCk7Ci0gCi0tI2lmZGVmIFNfSUZXSFQKLS0JLyoKLS0JICogV2hpdGVkLW91dCBmaWxlcyBkb24ndCByZWFsbHkgZXhpc3QuICBIb3dldmVyLCB0aGVyZSdzIHN0YXQoMikgZmlsZQotLQkgKiBtYXNrIGZvciB0aGVtLCBzbyB3ZSBzZXQgaXQgc28gdGhhdCBwcm9ncmFtcyAoaS5lLiwgZmluZCkgZG9uJ3QgaGF2ZQotLQkgKiB0byB0ZXN0IEZUU19XIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBmaWxlIHR5cGVzLgotLQkgKi8KLS0JaWYgKGRwICE9IE5VTEwgJiYgZHAtPmRfdHlwZSA9PSBEVF9XSFQpIHsKLS0JCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotLQkJc2JwLT5zdF9tb2RlID0gU19JRldIVDsKLS0JCXJldHVybiAoRlRTX1cpOwotKwkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0rCXAgPSBzcC0+ZnRzX2N1cjsKLSsKLSsJLyogU2F2ZSBhbmQgemVybyBvdXQgdXNlciBpbnN0cnVjdGlvbnMuICovCi0rCWluc3RyID0gcC0+ZnRzX2luc3RyOwotKwlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLSsKLSsJLyogQW55IHR5cGUgb2YgZmlsZSBtYXkgYmUgcmUtdmlzaXRlZDsgcmUtc3RhdCBhbmQgcmUtdHVybi4gKi8KLSsJaWYgKGluc3RyID09IEZUU19BR0FJTikgewotKwkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgMCk7Ci0rCQlyZXR1cm4gKHApOwotIAl9Ci0tI2VuZGlmCi0tCQotKwotIAkvKgotLQkgKiBJZiBkb2luZyBhIGxvZ2ljYWwgd2Fsaywgb3IgYXBwbGljYXRpb24gcmVxdWVzdGVkIEZUU19GT0xMT1csIGRvCi0tCSAqIGEgc3RhdCgyKS4gIElmIHRoYXQgZmFpbHMsIGNoZWNrIGZvciBhIG5vbi1leGlzdGVudCBzeW1saW5rLiAgSWYKLS0JICogZmFpbCwgc2V0IHRoZSBlcnJubyBmcm9tIHRoZSBzdGF0IGNhbGwuCi0rCSAqIEZvbGxvd2luZyBhIHN5bWxpbmsgLS0gU0xOT05FIHRlc3QgYWxsb3dzIGFwcGxpY2F0aW9uIHRvIHNlZQotKwkgKiBTTE5PTkUgYW5kIHJlY292ZXIuICBJZiBpbmRpcmVjdGluZyB0aHJvdWdoIGEgc3ltbGluaywgaGF2ZQotKwkgKiBrZWVwIGEgcG9pbnRlciB0byBjdXJyZW50IGxvY2F0aW9uLiAgSWYgdW5hYmxlIHRvIGdldCB0aGF0Ci0rCSAqIHBvaW50ZXIsIGZvbGxvdyBmYWlscy4KLSAJICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0tCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCQllcnJubyA9IDA7Ci0tCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0tCQkJfSAKLS0JCQlwLT5mdHNfZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCQlnb3RvIGVycjsKLSsJaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLSsJICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLSsJCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDEpOwotKwkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpCi0rCQkJaWYgKChwLT5mdHNfc3ltZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLSsJCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0rCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLSsJCQl9IGVsc2UKLSsJCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19TWU1GT0xMT1c7Ci0rCQlyZXR1cm4gKHApOwotKwl9Ci0rCi0rCS8qIERpcmVjdG9yeSBpbiBwcmUtb3JkZXIuICovCi0rCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCkgewotKwkJLyogSWYgc2tpcHBlZCBvciBjcm9zc2VkIG1vdW50IHBvaW50LCBkbyBwb3N0LW9yZGVyIHZpc2l0LiAqLwotKwkJaWYgKGluc3RyID09IEZUU19TS0lQIHx8Ci0rCQkgICAgSVNTRVQoRlRTX1hERVYpICYmIHAtPmZ0c19kZXYgIT0gc3AtPmZ0c19kZXYpIHsKLSsJCQlpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykKLSsJCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLSsJCQlpZiAoc3AtPmZ0c19jaGlsZCkgewotKwkJCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCQkJCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotKwkJCX0KLSsJCQlwLT5mdHNfaW5mbyA9IEZUU19EUDsKLSsJCQlyZXR1cm4gKHApOwotIAkJfQotLQl9IGVsc2UgaWYgKGxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS1lcnI6CQltZW1zZXQoc2JwLCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKLS0JCXJldHVybiAoRlRTX05TKTsKLSsKLSsJCS8qIFJlYnVpbGQgaWYgb25seSByZWFkIHRoZSBuYW1lcyBhbmQgbm93IHRyYXZlcnNpbmcuICovCi0rCQlpZiAoc3AtPmZ0c19jaGlsZCAmJiBzcC0+ZnRzX29wdGlvbnMgJiBGVFNfTkFNRU9OTFkpIHsKLSsJCQlzcC0+ZnRzX29wdGlvbnMgJj0gfkZUU19OQU1FT05MWTsKLSsJCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogQ2QgdG8gdGhlIHN1YmRpcmVjdG9yeS4KLSsJCSAqCi0rCQkgKiBJZiBoYXZlIGFscmVhZHkgcmVhZCBhbmQgbm93IGZhaWwgdG8gY2hkaXIsIHdoYWNrIHRoZSBsaXN0Ci0rCQkgKiB0byBtYWtlIHRoZSBuYW1lcyBjb21lIG91dCByaWdodCwgYW5kIHNldCB0aGUgcGFyZW50IGVycm5vCi0rCQkgKiBzbyB0aGUgYXBwbGljYXRpb24gd2lsbCBldmVudHVhbGx5IGdldCBhbiBlcnJvciBjb25kaXRpb24uCi0rCQkgKiBTZXQgdGhlIEZUU19ET05UQ0hESVIgZmxhZyBzbyB0aGF0IHdoZW4gd2UgbG9naWNhbGx5IGNoYW5nZQotKwkJICogZGlyZWN0b3JpZXMgYmFjayB0byB0aGUgcGFyZW50IHdlIGRvbid0IGRvIGEgY2hkaXIuCi0rCQkgKgotKwkJICogSWYgaGF2ZW4ndCByZWFkIGRvIHNvLiAgSWYgdGhlIHJlYWQgZmFpbHMsIGZ0c19idWlsZCBzZXRzCi0rCQkgKiBGVFNfU1RPUCBvciB0aGUgZnRzX2luZm8gZmllbGQgb2YgdGhlIG5vZGUuCi0rCQkgKi8KLSsJCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0rCQkJaWYgKENIRElSKHNwLCBwLT5mdHNfYWNjcGF0aCkpIHsKLSsJCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0rCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfRE9OVENIRElSOwotKwkJCQlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0rCQkJCQlwLT5mdHNfYWNjcGF0aCA9Ci0rCQkJCQkgICAgcC0+ZnRzX3BhcmVudC0+ZnRzX2FjY3BhdGg7Ci0rCQkJfQotKwkJfSBlbHNlIGlmICgoc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgQlJFQUQpKSA9PSBOVUxMKSB7Ci0rCQkJaWYgKElTU0VUKEZUU19TVE9QKSkKLSsJCQkJcmV0dXJuIChOVUxMKTsKLSsJCQlyZXR1cm4gKHApOwotKwkJfQotKwkJcCA9IHNwLT5mdHNfY2hpbGQ7Ci0rCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLSsJCWdvdG8gbmFtZTsKLSAJfQotIAotLQlpZiAoU19JU0RJUihzYnAtPnN0X21vZGUpKSB7Ci0rCS8qIE1vdmUgdG8gdGhlIG5leHQgbm9kZSBvbiB0aGlzIGxldmVsLiAqLwotK25leHQ6CXRtcCA9IHA7Ci0rCWlmIChwID0gcC0+ZnRzX2xpbmspIHsKLSsJCWZyZWUodG1wKTsKLSsKLSAJCS8qCi0tCQkgKiBTZXQgdGhlIGRldmljZS9pbm9kZS4gIFVzZWQgdG8gZmluZCBjeWNsZXMgYW5kIGNoZWNrIGZvcgotLQkJICogY3Jvc3NpbmcgbW91bnQgcG9pbnRzLiAgQWxzbyByZW1lbWJlciB0aGUgbGluayBjb3VudCwgdXNlZAotLQkJICogaW4gZnRzX2J1aWxkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3RhdCBjYWxscy4gIEl0IGlzCi0tCQkgKiB1bmRlcnN0b29kIHRoYXQgdGhlc2UgZmllbGRzIGFyZSBvbmx5IHJlZmVyZW5jZWQgaWYgZnRzX2luZm8KLS0JCSAqIGlzIHNldCB0byBGVFNfRC4KLSsJCSAqIElmIHJlYWNoZWQgdGhlIHRvcCwgcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RvcnksIGFuZAotKwkJICogbG9hZCB0aGUgcGF0aHMgZm9yIHRoZSBuZXh0IHJvb3QuCi0gCQkgKi8KLS0JCWRldiA9IHAtPmZ0c19kZXYgPSBzYnAtPnN0X2RldjsKLS0JCWlubyA9IHAtPmZ0c19pbm8gPSBzYnAtPnN0X2lubzsKLS0JCXAtPmZ0c19ubGluayA9IHNicC0+c3Rfbmxpbms7Ci0rCQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLSsJCQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotKwkJCQlTRVQoRlRTX1NUT1ApOwotKwkJCQlyZXR1cm4gKE5VTEwpOwotKwkJCX0KLSsJCQlmdHNfbG9hZChzcCwgcCk7Ci0rCQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotKwkJfQotKwotKwkJLyoKLSsJCSAqIFVzZXIgbWF5IGhhdmUgY2FsbGVkIGZ0c19zZXQgb24gdGhlIG5vZGUuICBJZiBza2lwcGVkLAotKwkJICogaWdub3JlLiAgSWYgZm9sbG93ZWQsIGdldCBhIGZpbGUgZGVzY3JpcHRvciBzbyB3ZSBjYW4KLSsJCSAqIGdldCBiYWNrIGlmIG5lY2Vzc2FyeS4KLSsJCSAqLwotKwkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfU0tJUCkKLSsJCQlnb3RvIG5leHQ7Ci0rCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19GT0xMT1cpIHsKLSsJCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAxKTsKLSsJCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkKLSsJCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotKwkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0rCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLSsJCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLSsJCQkJfSBlbHNlCi0rCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLSsJCQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLSsJCX0KLSAKLS0JCWlmIChJU0RPVChwLT5mdHNfbmFtZSkpCi0tCQkJcmV0dXJuIChGVFNfRE9UKTsKLStuYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzX3BhcmVudCk7Ci0rCQkqdCsrID0gJy8nOwotKwkJbWVtbW92ZSh0LCBwLT5mdHNfbmFtZSwgcC0+ZnRzX25hbWVsZW4gKyAxKTsKLSsJCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLSsJfQotIAotKwkvKiBNb3ZlIHVwIHRvIHRoZSBwYXJlbnQgbm9kZS4gKi8KLSsJcCA9IHRtcC0+ZnRzX3BhcmVudDsKLSsJZnJlZSh0bXApOwotKwotKwlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UUEFSRU5UTEVWRUwpIHsKLSAJCS8qCi0tCQkgKiBDeWNsZSBkZXRlY3Rpb24gaXMgZG9uZSBieSBicnV0ZSBmb3JjZSB3aGVuIHRoZSBkaXJlY3RvcnkKLS0JCSAqIGlzIGZpcnN0IGVuY291bnRlcmVkLiAgSWYgdGhlIHRyZWUgZ2V0cyBkZWVwIGVub3VnaCBvciB0aGUKLS0JCSAqIG51bWJlciBvZiBzeW1ib2xpYyBsaW5rcyB0byBkaXJlY3RvcmllcyBpcyBoaWdoIGVub3VnaCwKLS0JCSAqIHNvbWV0aGluZyBmYXN0ZXIgbWlnaHQgYmUgd29ydGh3aGlsZS4KLSsJCSAqIERvbmU7IGZyZWUgZXZlcnl0aGluZyB1cCBhbmQgc2V0IGVycm5vIHRvIDAgc28gdGhlIHVzZXIKLSsJCSAqIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm9yIGFuZCBFT0YuCi0gCQkgKi8KLS0JCWZvciAodCA9IHAtPmZ0c19wYXJlbnQ7Ci0tCQkgICAgdC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7IHQgPSB0LT5mdHNfcGFyZW50KQotLQkJCWlmIChpbm8gPT0gdC0+ZnRzX2lubyAmJiBkZXYgPT0gdC0+ZnRzX2RldikgewotLQkJCQlwLT5mdHNfY3ljbGUgPSB0OwotLQkJCQlyZXR1cm4gKEZUU19EQyk7Ci0tCQkJfQotLQkJcmV0dXJuIChGVFNfRCk7Ci0rCQlmcmVlKHApOwotKwkJZXJybm8gPSAwOwotKwkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IE5VTEwpOwotIAl9Ci0tCWlmIChTX0lTTE5LKHNicC0+c3RfbW9kZSkpCi0tCQlyZXR1cm4gKEZUU19TTCk7Ci0tCWlmIChTX0lTUkVHKHNicC0+c3RfbW9kZSkpCi0tCQlyZXR1cm4gKEZUU19GKTsKLS0JcmV0dXJuIChGVFNfREVGQVVMVCk7Ci0tfQotIAotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19zb3J0KHNwLCBoZWFkLCBuaXRlbXMpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqaGVhZDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqKmFwLCAqcDsKLSsJLyogTnVsIHRlcm1pbmF0ZSB0aGUgcGF0aG5hbWUuICovCi0rCXNwLT5mdHNfcGF0aFtwLT5mdHNfcGF0aGxlbl0gPSAnXDAnOwotIAotIAkvKgotLQkgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN0cnVjdHVyZXMgYW5kIGNhbGwgcXNvcnQoMykuCi0tCSAqIFJlYXNzZW1ibGUgdGhlIGFycmF5IGluIHRoZSBvcmRlciByZXR1cm5lZCBieSBxc29ydC4gIElmIHVuYWJsZSB0bwotLQkgKiBzb3J0IGZvciBtZW1vcnkgcmVhc29ucywgcmV0dXJuIHRoZSBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGVpcgotLQkgKiBjdXJyZW50IG9yZGVyLiAgQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCBuZWVkcyBwbHVzCi0tCSAqIDQwIHNvIGRvbid0IHJlYWxsb2Mgb25lIGVudHJ5IGF0IGEgdGltZS4KLSsJICogUmV0dXJuIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAgSWYgYXQgYSByb290IG5vZGUgb3IgY2FtZSB0aHJvdWdoCi0rCSAqIGEgc3ltbGluaywgZ28gYmFjayB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UsIGNkIHVwCi0rCSAqIG9uZSBkaXJlY3RvcnkuCi0gCSAqLwotLQlpZiAobml0ZW1zID4gc3AtPmZ0c19uaXRlbXMpIHsKLS0JCXNwLT5mdHNfbml0ZW1zID0gbml0ZW1zICsgNDA7Ci0tCQlpZiAoKHNwLT5mdHNfYXJyYXkgPSByZWFsbG9jKHNwLT5mdHNfYXJyYXksCi0tCQkgICAgKHNpemVfdCkoc3AtPmZ0c19uaXRlbXMgKiBzaXplb2YoRlRTRU5UICopKSkpID09IE5VTEwpIHsKLS0JCQlzcC0+ZnRzX25pdGVtcyA9IDA7Ci0tCQkJcmV0dXJuIChoZWFkKTsKLSsJaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMKSB7Ci0rCQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotKwkJCVNFVChGVFNfU1RPUCk7Ci0rCQkJcmV0dXJuIChOVUxMKTsKLSsJCX0KLSsJfSBlbHNlIGlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKSB7Ci0rCQlpZiAoRkNIRElSKHNwLCBwLT5mdHNfc3ltZmQpKSB7Ci0rCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLSsJCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotKwkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0rCQkJU0VUKEZUU19TVE9QKTsKLSsJCQlyZXR1cm4gKE5VTEwpOwotKwkJfQotKwkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLSsJfSBlbHNlIGlmICghKHAtPmZ0c19mbGFncyAmIEZUU19ET05UQ0hESVIpKSB7Ci0rCQlpZiAoQ0hESVIoc3AsICIuLiIpKSB7Ci0rCQkJU0VUKEZUU19TVE9QKTsKLSsJCQlyZXR1cm4gKE5VTEwpOwotIAkJfQotIAl9Ci0tCWZvciAoYXAgPSBzcC0+ZnRzX2FycmF5LCBwID0gaGVhZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJKmFwKysgPSBwOwotLQlxc29ydCgodm9pZCAqKXNwLT5mdHNfYXJyYXksIG5pdGVtcywgc2l6ZW9mKEZUU0VOVCAqKSwgc3AtPmZ0c19jb21wYXIpOwotLQlmb3IgKGhlYWQgPSAqKGFwID0gc3AtPmZ0c19hcnJheSk7IC0tbml0ZW1zOyArK2FwKQotLQkJYXBbMF0tPmZ0c19saW5rID0gYXBbMV07Ci0tCWFwWzBdLT5mdHNfbGluayA9IE5VTEw7Ci0tCXJldHVybiAoaGVhZCk7Ci0rCXAtPmZ0c19pbmZvID0gcC0+ZnRzX2Vycm5vID8gRlRTX0VSUiA6IEZUU19EUDsKLSsJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotIH0KLSAKLS1zdGF0aWMgRlRTRU5UICoKLS1mdHNfYWxsb2Moc3AsIG5hbWUsIG5hbWVsZW4pCi0tCUZUUyAqc3A7Ci0tCWNoYXIgKm5hbWU7Ci0tCXJlZ2lzdGVyIGludCBuYW1lbGVuOwotKy8qCi0rICogRnRzX3NldCB0YWtlcyB0aGUgc3RyZWFtIGFzIGFuIGFyZ3VtZW50IGFsdGhvdWdoIGl0J3Mgbm90IHVzZWQgaW4gdGhpcwotKyAqIGltcGxlbWVudGF0aW9uOyBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgaWYgYW55b25lIHdhbnRlZCB0byBhZGQgZ2xvYmFsCi0rICogc2VtYW50aWNzIHRvIGZ0cyB1c2luZyBmdHNfc2V0LiAgQW4gZXJyb3IgcmV0dXJuIGlzIGFsbG93ZWQgZm9yIHNpbWlsYXIKLSsgKiByZWFzb25zLgotKyAqLwotKy8qIEFSR1NVU0VEICovCi0raW50Ci0rZnRzX3NldChGVFMgKnNwLCBGVFNFTlQgKnAsIGludCBpbnN0cikKLSt7Ci0rCWlmIChpbnN0ciAmJiBpbnN0ciAhPSBGVFNfQUdBSU4gJiYgaW5zdHIgIT0gRlRTX0ZPTExPVyAmJgotKwkgICAgaW5zdHIgIT0gRlRTX05PSU5TVFIgJiYgaW5zdHIgIT0gRlRTX1NLSVApIHsKLSsJCWVycm5vID0gRUlOVkFMOwotKwkJcmV0dXJuICgxKTsKLSsJfQotKwlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLSsJcmV0dXJuICgwKTsKLSt9Ci0rCi0rRlRTRU5UICoKLStmdHNfY2hpbGRyZW4ocmVnaXN0ZXIgRlRTICpzcCwgaW50IGluc3RyKQotIHsKLSAJcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlzaXplX3QgbGVuOwotKwlpbnQgZmQ7Ci0rCi0rCWlmIChpbnN0ciAmJiBpbnN0ciAhPSBGVFNfTkFNRU9OTFkpIHsKLSsJCWVycm5vID0gRUlOVkFMOwotKwkJcmV0dXJuIChOVUxMKTsKLSsJfQotKwotKwkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0rCXAgPSBzcC0+ZnRzX2N1cjsKLSAKLSAJLyoKLS0JICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLS0JICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0tCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0tCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0tCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLS0JICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLSsJICogRXJybm8gc2V0IHRvIDAgc28gdXNlciBjYW4gZGlzdGluZ3Vpc2ggZW1wdHkgZGlyZWN0b3J5IGZyb20KLSsJICogYW4gZXJyb3IuCi0gCSAqLwotLQlsZW4gPSBzaXplb2YoRlRTRU5UKSArIG5hbWVsZW47Ci0tCWlmICghSVNTRVQoRlRTX05PU1RBVCkpCi0tCQlsZW4gKz0gc2l6ZW9mKHN0cnVjdCBzdGF0KSArIEFMSUdOQllURVM7Ci0tCWlmICgocCA9IG1hbGxvYyhsZW4pKSA9PSBOVUxMKQotKwllcnJubyA9IDA7Ci0rCi0rCS8qIEZhdGFsIGVycm9ycyBzdG9wIGhlcmUuICovCi0rCWlmIChJU1NFVChGVFNfU1RPUCkpCi0gCQlyZXR1cm4gKE5VTEwpOwotIAotLQkvKiBDb3B5IHRoZSBuYW1lIHBsdXMgdGhlIHRyYWlsaW5nIE5VTEwuICovCi0tCW1lbW1vdmUocC0+ZnRzX25hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKLSsJLyogUmV0dXJuIGxvZ2ljYWwgaGllcmFyY2h5IG9mIHVzZXIncyBhcmd1bWVudHMuICovCi0rCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfSU5JVCkKLSsJCXJldHVybiAocC0+ZnRzX2xpbmspOwotIAotLQlpZiAoIUlTU0VUKEZUU19OT1NUQVQpKQotLQkJcC0+ZnRzX3N0YXRwID0gKHN0cnVjdCBzdGF0ICopQUxJR04ocC0+ZnRzX25hbWUgKyBuYW1lbGVuICsgMik7Ci0tCXAtPmZ0c19uYW1lbGVuID0gbmFtZWxlbjsKLS0JcC0+ZnRzX3BhdGggPSBzcC0+ZnRzX3BhdGg7Ci0tCXAtPmZ0c19lcnJubyA9IDA7Ci0tCXAtPmZ0c19mbGFncyA9IDA7Ci0tCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotLQlwLT5mdHNfbnVtYmVyID0gMDsKLS0JcC0+ZnRzX3BvaW50ZXIgPSBOVUxMOwotLQlyZXR1cm4gKHApOwotKwkvKgotKwkgKiBJZiBub3QgYSBkaXJlY3RvcnkgYmVpbmcgdmlzaXRlZCBpbiBwcmUtb3JkZXIsIHN0b3AgaGVyZS4gIENvdWxkCi0rCSAqIGFsbG93IEZUU19ETlIsIGFzc3VtaW5nIHRoZSB1c2VyIGhhcyBmaXhlZCB0aGUgcHJvYmxlbSwgYnV0IHRoZQotKwkgKiBzYW1lIGVmZmVjdCBpcyBhdmFpbGFibGUgd2l0aCBGVFNfQUdBSU4uCi0rCSAqLwotKwlpZiAocC0+ZnRzX2luZm8gIT0gRlRTX0QgLyogJiYgcC0+ZnRzX2luZm8gIT0gRlRTX0ROUiAqLykKLSsJCXJldHVybiAoTlVMTCk7Ci0rCi0rCS8qIEZyZWUgdXAgYW55IHByZXZpb3VzIGNoaWxkIGxpc3QuICovCi0rCWlmIChzcC0+ZnRzX2NoaWxkKQotKwkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotKwotKwlpZiAoaW5zdHIgPT0gRlRTX05BTUVPTkxZKSB7Ci0rCQlzcC0+ZnRzX29wdGlvbnMgfD0gRlRTX05BTUVPTkxZOwotKwkJaW5zdHIgPSBCTkFNRVM7Ci0rCX0gZWxzZQotKwkJaW5zdHIgPSBCQ0hJTEQ7Ci0rCi0rCS8qCi0rCSAqIElmIHVzaW5nIGNoZGlyIG9uIGEgcmVsYXRpdmUgcGF0aCBhbmQgY2FsbGVkIEJFRk9SRSBmdHNfcmVhZCBkb2VzCi0rCSAqIGl0cyBjaGRpciB0byB0aGUgcm9vdCBvZiBhIHRyYXZlcnNhbCwgd2UgY2FuIGxvc2UgLS0gd2UgbmVlZCB0bwotKwkgKiBjaGRpciBpbnRvIHRoZSBzdWJkaXJlY3RvcnksIGFuZCB3ZSBkb24ndCBrbm93IHdoZXJlIHRoZSBjdXJyZW50Ci0rCSAqIGRpcmVjdG9yeSBpcywgc28gd2UgY2FuJ3QgZ2V0IGJhY2sgc28gdGhhdCB0aGUgdXBjb21pbmcgY2hkaXIgYnkKLSsJICogZnRzX3JlYWQgd2lsbCB3b3JrLgotKwkgKi8KLSsJaWYgKHAtPmZ0c19sZXZlbCAhPSBGVFNfUk9PVExFVkVMIHx8IHAtPmZ0c19hY2NwYXRoWzBdID09ICcvJyB8fAotKwkgICAgSVNTRVQoRlRTX05PQ0hESVIpKQotKwkJcmV0dXJuIChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBpbnN0cikpOwotKwotKwlpZiAoKGZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKQotKwkJcmV0dXJuIChOVUxMKTsKLSsJc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgaW5zdHIpOwotKwlpZiAoZmNoZGlyKGZkKSkKLSsJCXJldHVybiAoTlVMTCk7Ci0rCSh2b2lkKWNsb3NlKGZkKTsKLSsJcmV0dXJuIChzcC0+ZnRzX2NoaWxkKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLS1mdHNfbGZyZWUoaGVhZCkKLS0JcmVnaXN0ZXIgRlRTRU5UICpoZWFkOwotK2ludAotK2Z0c19jbG9zZShGVFMgKnNwKQotIHsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotKwlyZWdpc3RlciBGVFNFTlQgKmZyZWVwLCAqcDsKLSsJaW50IHNhdmVkX2Vycm5vOwotIAotLQkvKiBGcmVlIGEgbGlua2VkIGxpc3Qgb2Ygc3RydWN0dXJlcy4gKi8KLS0Jd2hpbGUgKHAgPSBoZWFkKSB7Ci0tCQloZWFkID0gaGVhZC0+ZnRzX2xpbms7Ci0rCS8qCi0rCSAqIFRoaXMgc3RpbGwgd29ya3MgaWYgd2UgaGF2ZW4ndCByZWFkIGFueXRoaW5nIC0tIHRoZSBkdW1teSBzdHJ1Y3R1cmUKLSsJICogcG9pbnRzIHRvIHRoZSByb290IGxpc3QsIHNvIHdlIHN0ZXAgdGhyb3VnaCB0byB0aGUgZW5kIG9mIHRoZSByb290Ci0rCSAqIGxpc3Qgd2hpY2ggaGFzIGEgdmFsaWQgcGFyZW50IHBvaW50ZXIuCi0rCSAqLwotKwlpZiAoc3AtPmZ0c19jdXIpIHsKLSsJCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLSsJCQlmcmVlcCA9IHA7Ci0rCQkJcCA9IHAtPmZ0c19saW5rID8gcC0+ZnRzX2xpbmsgOiBwLT5mdHNfcGFyZW50OwotKwkJCWZyZWUoZnJlZXApOwotKwkJfQotIAkJZnJlZShwKTsKLSAJfQotLX0KLSAKLS0vKgotLSAqIEFsbG93IGVzc2VudGlhbGx5IHVubGltaXRlZCBwYXRoczsgZmluZCwgcm0sIGxzIHNob3VsZCBhbGwgd29yayBvbiBhbnkgdHJlZS4KLS0gKiBNb3N0IHN5c3RlbXMgd2lsbCBhbGxvdyBjcmVhdGlvbiBvZiBwYXRocyBtdWNoIGxvbmdlciB0aGFuIE1BWFBBVEhMRU4sIGV2ZW4KLS0gKiB0aG91Z2ggdGhlIGtlcm5lbCB3b24ndCByZXNvbHZlIHRoZW0uICBBZGQgdGhlIHNpemUgKG5vdCBqdXN0IHdoYXQncyBuZWVkZWQpCi0tICogcGx1cyAyNTYgYnl0ZXMgc28gZG9uJ3QgcmVhbGxvYyB0aGUgcGF0aCAyIGJ5dGVzIGF0IGEgdGltZS4gCi0tICovCi0tc3RhdGljIGludAotLWZ0c19wYWxsb2Moc3AsIG1vcmUpCi0tCUZUUyAqc3A7Ci0tCXNpemVfdCBtb3JlOwotLXsKLS0Jc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0tCXNwLT5mdHNfcGF0aCA9IHJlYWxsb2Moc3AtPmZ0c19wYXRoLCAoc2l6ZV90KXNwLT5mdHNfcGF0aGxlbik7Ci0tCXJldHVybiAoc3AtPmZ0c19wYXRoID09IE5VTEwpOwotLX0KLSsJLyogRnJlZSB1cCBjaGlsZCBsaW5rZWQgbGlzdCwgc29ydCBhcnJheSwgcGF0aCBidWZmZXIuICovCi0rCWlmIChzcC0+ZnRzX2NoaWxkKQotKwkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotKwlpZiAoc3AtPmZ0c19hcnJheSkKLSsJCWZyZWUoc3AtPmZ0c19hcnJheSk7Ci0rCWZyZWUoc3AtPmZ0c19wYXRoKTsKLSAKLS0vKgotLSAqIFdoZW4gdGhlIHBhdGggaXMgcmVhbGxvYydkLCBoYXZlIHRvIGZpeCBhbGwgb2YgdGhlIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMKLS0gKiBhbHJlYWR5IHJldHVybmVkLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tZnRzX3BhZGp1c3Qoc3AsIGFkZHIpCi0tCUZUUyAqc3A7Ci0tCXZvaWQgKmFkZHI7Ci0tewotLQlGVFNFTlQgKnA7Ci0rCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotKwlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotKwkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotKwkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotKwl9Ci0gCi0tI2RlZmluZQlBREpVU1QocCkgewkJCQkJCQlcCi0tCShwKS0+ZnRzX2FjY3BhdGggPQkJCQkJCVwKLS0JICAgIChjaGFyICopYWRkciArICgocCktPmZ0c19hY2NwYXRoIC0gKHApLT5mdHNfcGF0aCk7CQlcCi0tCShwKS0+ZnRzX3BhdGggPSBhZGRyOwkJCQkJCVwKLS19Ci0tCS8qIEFkanVzdCB0aGUgY3VycmVudCBzZXQgb2YgY2hpbGRyZW4uICovCi0tCWZvciAocCA9IHNwLT5mdHNfY2hpbGQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLS0JCUFESlVTVChwKTsKLSsJLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0rCWZyZWUoc3ApOwotIAotLQkvKiBBZGp1c3QgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuICovCi0tCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLS0JCUFESlVTVChwKTsKLS0JCXAgPSBwLT5mdHNfbGluayA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLSsJLyogU2V0IGVycm5vIGFuZCByZXR1cm4uICovCi0rCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIHNhdmVkX2Vycm5vKSB7Ci0rCQllcnJubyA9IHNhdmVkX2Vycm5vOwotKwkJcmV0dXJuICgtMSk7Ci0gCX0KLSsJcmV0dXJuICgwKTsKLSB9Ci0gCi0tc3RhdGljIHNpemVfdAotLWZ0c19tYXhhcmdsZW4oYXJndikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLXsKLS0Jc2l6ZV90IGxlbiwgbWF4OwotLQotLQlmb3IgKG1heCA9IDA7ICphcmd2OyArK2FyZ3YpCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID4gbWF4KQotLQkJCW1heCA9IGxlbjsKLS0JcmV0dXJuIChtYXgpOwotLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL3JlbW92ZV9jZGVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL3JlbW92ZV9jZGVmcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE1MjcwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9yZW1vdmVfY2RlZnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1SZXBsYWNlIHVzZSBvZiBtYWNyb3MgZnJvbSBzeXMvY2RlZnMuaCBzaW5jZSBjZGVmcy5oIGlzIG1pc3Npbmcgb24gbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLUluZGV4OiBmdHMvZnRzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmdHMub3JpZy9mdHMuaAotKysrIGZ0cy9mdHMuaAotQEAgLTEyNiwxNSArMTI2LDIxIEBAIHR5cGVkZWYgc3RydWN0IF9mdHNlbnQgewotIAljaGFyIGZ0c19uYW1lWzFdOwkJLyogZmlsZSBuYW1lICovCi0gfSBGVFNFTlQ7Ci0gCi0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIAotLV9fQkVHSU5fREVDTFMKLS1GVFNFTlQJKmZ0c19jaGlsZHJlbiBfX1AoKEZUUyAqLCBpbnQpKTsKLS1pbnQJIGZ0c19jbG9zZSBfX1AoKEZUUyAqKSk7Ci0tRlRTCSpmdHNfb3BlbiBfX1AoKGNoYXIgKiBjb25zdCAqLCBpbnQsCi0tCSAgICBpbnQgKCopKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKSkpOwotLUZUU0VOVAkqZnRzX3JlYWQgX19QKChGVFMgKikpOwotLWludAkgZnRzX3NldCBfX1AoKEZUUyAqLCBGVFNFTlQgKiwgaW50KSk7Ci0tX19FTkRfREVDTFMKLSsjaWZuZGVmIF9fUAotKyNkZWZpbmUgX19QCi0rI2VuZGlmCi0rRlRTRU5UCSpmdHNfY2hpbGRyZW4gKEZUUyAqcCwgaW50IG9wdHMpOwotK2ludAkgZnRzX2Nsb3NlIChGVFMgKnApOwotK0ZUUwkqZnRzX29wZW4gKGNoYXIgKiBjb25zdCAqIHBhdGgsIGludCBvcHRzLAotKwkgICAgaW50ICgqY29tcGZuKShjb25zdCBGVFNFTlQgKiosIGNvbnN0IEZUU0VOVCAqKikpOwotK0ZUU0VOVAkqZnRzX3JlYWQgKEZUUyAqcCk7Ci0raW50CSBmdHNfc2V0IChGVFMgKnAsIEZUU0VOVCAqZiwgaW50IG9wdHMpOwotIAotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAjZW5kaWYgLyogIV9GVFNfSF8gKi8KLUluZGV4OiBmdHMvZnRzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmdHMub3JpZy9mdHMuYwotKysrIGZ0cy9mdHMuYwotQEAgLTUwLDE1ICs1MCwxNSBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZnRzLmMJOC42IChCCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgX19QKChGVFMgKiwgY2hhciAqLCBpbnQpKTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfYnVpbGQgX19QKChGVFMgKiwgaW50KSk7Ci0tc3RhdGljIHZvaWQJIGZ0c19sZnJlZSBfX1AoKEZUU0VOVCAqKSk7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIF9fUCgoRlRTICosIEZUU0VOVCAqKSk7Ci0tc3RhdGljIHNpemVfdAkgZnRzX21heGFyZ2xlbiBfX1AoKGNoYXIgKiBjb25zdCAqKSk7Ci0tc3RhdGljIHZvaWQJIGZ0c19wYWRqdXN0IF9fUCgoRlRTICosIHZvaWQgKikpOwotLXN0YXRpYyBpbnQJIGZ0c19wYWxsb2MgX19QKChGVFMgKiwgc2l6ZV90KSk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgX19QKChGVFMgKiwgRlRTRU5UICosIGludCkpOwotLXN0YXRpYyB1X3Nob3J0CSBmdHNfc3RhdCBfX1AoKEZUUyAqLCBzdHJ1Y3QgZGlyZW50ICosIEZUU0VOVCAqLCBpbnQpKTsKLStzdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgX19QKEZUUyAqLCBjaGFyICosIGludCk7Ci0rc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIF9fUChGVFMgKiwgaW50KTsKLStzdGF0aWMgdm9pZAkgZnRzX2xmcmVlIF9fUChGVFNFTlQgKik7Ci0rc3RhdGljIHZvaWQJIGZ0c19sb2FkIF9fUChGVFMgKiwgRlRTRU5UICopOwotK3N0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gX19QKGNoYXIgKiBjb25zdCAqKTsKLStzdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgX19QKEZUUyAqLCB2b2lkICopOwotK3N0YXRpYyBpbnQJIGZ0c19wYWxsb2MgX19QKEZUUyAqLCBzaXplX3QpOwotK3N0YXRpYyBGVFNFTlQJKmZ0c19zb3J0IF9fUChGVFMgKiwgRlRTRU5UICosIGludCk7Ci0rc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUChGVFMgKiwgc3RydWN0IGRpcmVudCAqLCBGVFNFTlQgKiwgaW50KTsKLSAKLSAjZGVmaW5lCUlTRE9UKGEpCShhWzBdID09ICcuJyAmJiAoIWFbMV0gfHwgYVsxXSA9PSAnLicgJiYgIWFbMl0pKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvc3RkaW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvc3RkaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWU2MDk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL3N0ZGludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLUluY2x1ZGUgc3RkaW50LmggZm9yIHVfKiB0eXBlZGVmcwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLS0tLSAuL2Z0cy5jLm9yaWcKLSsrKyAuL2Z0cy5jCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxmdHMuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgppbmRleCA4M2VkZmZlLi5jMjA1OWU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKQEAgLTI0LDggKzI0LDYgQEAKIAogUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKIAotTERGTEFHU19wcmVwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0IC1scHRocmVhZCAiCi0KIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCkBAIC04NiwxNSArODQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJhc3ByaW50Zi5zbyogXAogICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9HTlUuR2V0dGV4dC5kbGwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfZ2V0dGV4dC1ydW50aW1lX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgJHtsaWJkaXJ9L2xpYmludGwuc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY2hhcnNldC5hbGlhcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRldiArPSAiJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLmEgXAogICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vYXV0b3NwcmludGYuaCBcCiAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2X2FwcGVuZF9saWJjLXVjbGliYyA9ICIgJHtsaWJkaXJ9L2xpYmludGwuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGliaW50bC5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRvYyA9ICIke21hbmRpcn0vbWFuMS9nZXR0ZXh0LiogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9uZ2V0dGV4dC4qIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvZW52c3Vic3QuKiBcCkBAIC0xMTksNiArMTExLDEwIEBACiAJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9jb25maWcucnBhdGgKIAlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluCiAJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9yZW1vdmUtcG90Y2RhdGUuc2luCisKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9tc2dmbXQgXAorICAgICAgICAgICAgICAgIEdFVFRFWFREQVRBRElSPSIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQtMC4xOS44LyIKKwogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NzExMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2ZpeC1jb25mbGljdGluZy1yYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotUmVuYW1lICdyYW5kJyB2YXJpYWJsZSB0byBhdm9pZCBjb25mbGljdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBCasO2cm4gU3RlbmJlcmcgPGJqc3RAZW5lYS5jb20+Ci0KLWRpZmYgLXUgZ2xpYi0yLjM0LjMvdGVzdHMvcmVmY291bnQvc2lnbmFscy5jfiBnbGliLTIuMzQuMy90ZXN0cy9yZWZjb3VudC9zaWduYWxzLmMKLS0tLSBnbGliLTIuMzQuMy90ZXN0cy9yZWZjb3VudC9zaWduYWxzLmMJMjAxMi0xMS0yNiAxNzo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnbGliLTIuMzQuMy90ZXN0cy9yZWZjb3VudC9zaWduYWxzLmMJMjAxMy0wMi0wOCAxNDoyNDoxMC4wNTI0Nzc1NDYgKzAxMDAKLUBAIC05LDcgKzksNyBAQAotICNkZWZpbmUgTVlfSVNfVEVTVF9DTEFTUyh0Y2xhc3MpICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgodGNsYXNzKSwgR19UWVBFX1RFU1QpKQotICNkZWZpbmUgTVlfVEVTVF9HRVRfQ0xBU1ModGVzdCkgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKCh0ZXN0KSwgR19UWVBFX1RFU1QsIEdUZXN0Q2xhc3MpKQotIAotLXN0YXRpYyBHUmFuZCAqcmFuZDsKLStzdGF0aWMgR1JhbmQgKmdyYW5kOwotIAotIHR5cGVkZWYgc3RydWN0IF9HVGVzdCBHVGVzdDsKLSB0eXBlZGVmIHN0cnVjdCBfR1Rlc3RDbGFzcyBHVGVzdENsYXNzOwotQEAgLTg0LDcgKzg0LDcgQEAKLSAgICAgICBOVUxMCi0gICAgIH07Ci0gCi0tICAgIHJhbmQgPSBnX3JhbmRfbmV3KCk7Ci0rICAgIGdyYW5kID0gZ19yYW5kX25ldygpOwotIAotICAgICB0ZXN0X3R5cGUgPSBnX3R5cGVfcmVnaXN0ZXJfc3RhdGljIChHX1RZUEVfT0JKRUNULCAiR1Rlc3QiLAotICAgICAgICAgJnRlc3RfaW5mbywgMCk7Ci1AQCAtMjE4LDcgKzIxOCw3IEBACi0gc3RhdGljIHZvaWQKLSBteV90ZXN0X2RvX3Byb3AgKEdUZXN0ICogdGVzdCkKLSB7Ci0tICB0ZXN0LT52YWx1ZSA9IGdfcmFuZF9pbnQgKHJhbmQpOwotKyAgdGVzdC0+dmFsdWUgPSBnX3JhbmRfaW50IChncmFuZCk7Ci0gICBnX29iamVjdF9ub3RpZnkgKEdfT0JKRUNUICh0ZXN0KSwgInRlc3QtcHJvcCIpOwotIH0KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9nbGliLWdldHRleHRpemUtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItZ2V0dGV4dGl6ZS1kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNDM1MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItZ2V0dGV4dGl6ZS1kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIGFuIHZlcnkgb2xkIHBhdGNoIGNoZXJyeS1waWNrZWQgaW4gZXZlcnkgZ2xpYi0yLjAgcGF0Y2ggZGlyZWN0b3J5LiBUaGUgZWFybGllc3QgY29udGFpbmVyCi0jIGZvciBpdCBpcyAyLjYuNSBpbiBPRS4gVGhlIGVhcmxpZXN0IGNvbW1pdCBmb3IgaXQgaXMgYzhlNTcwMjEyN2U1MDdlODJlNmY2OGE0YjhjNTQ2ODAzYWNjZWE5ZAotIyBpbiBPRSBzaWRlIHdoaWNoIHBvcnRzIGZyb20gcHJldmlvdXMgYml0a2VlcGVyIFNDTS4gSW4gT0Ugc2lkZSBpdCdzIG9ubHkgdXNlZCB0aWwgMi4xMi40LgotIwotIyBrZWVwIGl0IHNpbmNlIGl0J3MgYWx3YXlzIGNsZWFuZXIgdG8gbm90IGhhcmRjb2RlIGRlc3RpbmF0aW9uIHBhdGguIFVzZSBAZGF0YWRpckAgaXMgbW9yZQotIyBwb3J0YWJsZSBoZXJlLiBtYXJrIGZvciB1cHN0cmVhbQotIwotIyBieSBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4sIDA2LzI1LzIwMTAKLSMgUmViYXNlZCBieSBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPiwgMTEvMTYvMjAxMAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLXJ1TiBnbGliLTIuMjcuMy1vcmlnL2dsaWItZ2V0dGV4dGl6ZS5pbiBnbGliLTIuMjcuMy9nbGliLWdldHRleHRpemUuaW4KLS0tLSBnbGliLTIuMjcuMy1vcmlnL2dsaWItZ2V0dGV4dGl6ZS5pbgkyMDA5LTA0LTAxIDA3OjA0OjIwLjAwMDAwMDAwMCArMDgwMAotKysrIGdsaWItMi4yNy4zL2dsaWItZ2V0dGV4dGl6ZS5pbgkyMDEwLTExLTE2IDEyOjU1OjA2Ljg3NDYwNTkxNiArMDgwMAotQEAgLTUyLDcgKzUyLDcgQEAKLSBkYXRhZGlyPUBkYXRhZGlyQAotIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKLSAKLS1nZXR0ZXh0X2Rpcj0kcHJlZml4L3NoYXJlL2dsaWItMi4wL2dldHRleHQKLStnZXR0ZXh0X2Rpcj1AZGF0YWRpckAvZ2xpYi0yLjAvZ2V0dGV4dAotIAotIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICBjYXNlICIkMSIgaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41MC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmVhMzQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUwLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1yZXF1aXJlIGdsaWIuaW5jCi0KLVBFID0gIjEiCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VjbGliY19tdXNsX3RyYW5zbGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LXJ1bi1tZWRpYS1zZFgtZHJpdmUtbW91bnQtaWYtdXNlcm5hbWUtcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVGVzdC1mb3ItcHRocmVhZF9nZXRuYW1lX25wLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzgxYWIyMjkzNGYyOTY3NTBkMDM2YWE1NWEzOTdkZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODJlZTk0YmY0YzAxNDU5YjZiMDBjYjlkYjA1NDVjMjIzNzkyMWUzMDYwYzBiNzRjZmYxM2ZiYzAyMGNmZDk5OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41Mi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZmU2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41Mi4zLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgZ2xpYi5pbmMKKworUEUgPSAiMSIKKworU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODkyNjVkMDI4OWE0MzZlOTljYWQ1NDQ5MWViMjFlZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVlZTc2MzVhN2MwZmNkNGVjOTFjYmMzYWUwN2M3ZjhmNWNlNjIxZDgxODM1MTFmNDE0ZGVkMDllN2U0ZTEyOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwppbmRleCAyYjMwZTM3Li40Y2RmMTQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCkBAIC00NSw3ICs0NSw2IEBACiBQUklOVEZfbWluZ3czMiA9ICItLWVuYWJsZS1pbmNsdWRlZC1wcmludGY9eWVzIgogRVhUUkFfT0VDT05GID0gIiR7UFJJTlRGfSAke0NPUkVDT05GfSIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtDT1JFQ09ORn0gLS1kaXNhYmxlLXNlbGludXgiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLXdpdGgtbGliaWNvbnY9Z251IgogCiAjIFRlbGwgY29uZmlndXJlIHRoYXQgd2UnbGwgaGF2ZSBkYnVzLWRhZW1vbiBvbiB0aGUgdGFyZ2V0IGZvciB0aGUgdGVzdHMKIEVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXRfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJyBhY19jdl9wcm9nX0RCVVNfREFFTU9OPWRidXMtZGFlbW9uJywgJycsIGQpfSIKQEAgLTY3LDEyICs2NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1jb21waWxlLXJlc291cmNlcyBcCiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiBcCiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcy9nc2NoZW1hLmR0ZCBcCisgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvdmFsZ3JpbmQvZ2xpYi5zdXBwIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nZXR0ZXh0L2l0cyIKIEZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nbGliLTIuMC9nZGIgJHtkYXRhZGlyfS9nZGIiCiBGSUxFU18ke1BOfS1jb2RlZ2VuID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAvY29kZWdlbi8qLnB5IFwKICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dkYnVzLWNvZGVnZW4iCiBGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKIAorUlJFQ09NTUVORFNfJHtQTn0gKz0gInNoYXJlZC1taW1lLWluZm8iCisjIFdoZW4gY3Jvc3MgY29tcGlsaW5nIGZvciBXaW5kb3dzIHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGlzCitSUkVDT01NRU5EU18ke1BOfV9yZW1vdmVfbWluZ3czMiA9ICJzaGFyZWQtbWltZS1pbmZvIgorCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogIyBWYWxncmluZCBydW50aW1lIGRldGVjdGlvbiB3b3JrcyB1c2luZyBoYW5kLXdyaXR0ZW4gYXNzZW1ibHksIHdoaWNoCkBAIC0xMTcsNiArMTIxLDEyIEBACiAJZmkKIH0KIAorUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiXAorICAgICAgICAgICAgcHl0aG9uMyBcCisgICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCisgICAgICAgICAgICBweXRob24zLXhtbCBcCisgICAgICAgICAgICIKKwogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKICAgICAgICAgICAgIGRidXMgXAogICAgICAgICAgICAgZ25vbWUtZGVza3RvcC10ZXN0aW5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWU4NjgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKLSMKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKLQotaW5oZXJpdCBuYXRpdmUKLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCi0KLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCi0KLVNSQ1JFVl9nbGliYyA/PSAiZGIwMjQyZTMwMjM0MzY3NTdiYmM3YzQ4OGE3NzllNmUzMzQzZGIwNCIKLVNSQ1JFVl9sb2NhbGVkZWYgPz0gIjI5ODY5YjZkYzExNDI3YzViYWI4MzliZGIxNTVjODVhN2M2NDRjNzEiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1sb2NhbGVfdC5oLWNvbXBhdGliaWxpdHktaGVhZGVyLnBhdGNoIFwKLSIKLSMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCi0jCi1TUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgotQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzVkNzBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKKyMKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKKworaW5oZXJpdCBuYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCisKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCisKK1NSQ1JFVl9nbGliYyA/PSAiMWM5YTVjMjcwZDhiNjZmMzBkY2ZhZjFjYjJkNmNmMzlkM2UxODM2OSIKK1NSQ1JFVl9sb2NhbGVkZWYgPz0gImRmYjRhZmU1NTFjNmM2ZTk0ZjljYzg1NDE3YmQxZjU4MjE2OGM4NDMiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorIgorIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KKyMKK1NSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYwppbmRleCAzN2YyN2NhLi5kZTg1OWQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCkBAIC0xOCw1ICsxOCw0IEBACiBkb19pbnN0YWxsW2RlcGVuZHNdICs9ICJ2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYzpkb19zdGFzaF9sb2NhbGUiCiAKIENPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfbGliYy11Y2xpYmNfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI2LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jCmluZGV4IDc1YWJhYmUuLmIzY2IxMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jCkBAIC0xMiw3ICsxMiw3IEBACiBCSU5VVElMU0RFUF9jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMtY3Jvc3NzZGs6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX3BhY2thZ2VbZGVwZW5kc10gKz0gIiR7QklOVVRJTFNERVB9IgogCi0jIGxvY2FsZWRlZiBsaW5rcyB3aXRoIGxpYmMuc28gYW5kIGdsaWJjLWNvbGxhdGVyYWwuaW5jaW5oaWJpdHMgYWxsIGRlZmF1bHQgZGVwcworIyBsb2NhbGVkZWYgbGlua3Mgd2l0aCBsaWJjLnNvIGFuZCBnbGliYy1jb2xsYXRlcmFsLmluYyBpbmhpYml0cyBhbGwgZGVmYXVsdCBkZXBzCiAjIGNhbm5vdCBhZGQgdmlydHVhbC9saWJjIHRvIERFUEVORFMsIGJlY2F1c2UgaXQgd291bGQgY29uZmxpY3Qgd2l0aCBsaWJjLWluaXRpYWwgaW4gUlNTCiBSREVQRU5EU19sb2NhbGVkZWYgKz0gImdsaWJjIgogCkBAIC0zOSw3ICszOSw2IEBACiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxvY2FsZS1iYXNlLS4qIFwKICAgICAgICAgICAgICAgICAgICAgXmdsaWJjLWdjb252LS4qIF5nbGliYy1jaGFybWFwLS4qIF5nbGliYy1sb2NhbGVkYXRhLS4qIF5nbGliYy1iaW5hcnktbG9jYWxlZGF0YS0uKiBcCi0gICAgICAgICAgICAgICAgICAgIF5nbGliYy1nY29udi0uKiAgXmdsaWJjLWNoYXJtYXAtLiogIF5nbGliYy1sb2NhbGVkYXRhLS4qICBeZ2xpYmMtYmluYXJ5LWxvY2FsZWRhdGEtLiogXAogICAgICAgICAgICAgICAgICAgICBeJHtNTFBSRUZJWH1nbGliYy1nY29udiQiCiAKICMgQ3JlYXRlIGEgZ2xpYmMtYmluYXJpZXMgcGFja2FnZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI2LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI2LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IDlmN2ZhNjIuLmRmM2RiMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKQEAgLTEsMTkgKzEsMyBAQAotIwotIyBGb3Igbm93LCB3ZSB3aWxsIHNraXAgYnVpbGRpbmcgb2YgYSBnY2MgcGFja2FnZSBpZiBpdCBpcyBhIHVjbGliYyBvbmUKLSMgYW5kIG91ciBidWlsZCBpcyBub3QgYSB1Y2xpYmMgb25lLCBhbmQgd2Ugc2tpcCBhIGdsaWJjIG9uZSBpZiBvdXIgYnVpbGQKLSMgaXMgYSB1Y2xpYmMgYnVpbGQuCi0jCi0jIFNlZSB0aGUgbm90ZSBpbiBnY2MvZ2NjXzMuNC4wLm9lCi0jCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaW1wb3J0IGJiLCByZQotICAgIHVjX29zID0gKHJlLm1hdGNoKCcuKnVjbGliYyonLCBkLmdldFZhcignVEFSR0VUX09TJykpICE9IE5vbmUpCi0gICAgaWYgdWNfb3M6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1RBUkdFVF9PUycpKQotfQotCiBJTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKIAogUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGNhdGNoc2VndiBzbG4gbnNjZCBsZGQgdHpjb2RlIGdsaWJjLXRocmVhZC1kYiAke1BOfS1waWMgbGliY2lkbiBsaWJtZW11c2FnZSBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MiCkBAIC0xNDcsMTEgKzEzMSwxNSBAQAogCWRvX2luc3RhbGxfYXJtbXVsdGlsaWIKIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfYXJtZWIgKCkgeworCWRvX2luc3RhbGxfYXJtbXVsdGlsaWIKK30KKwogZG9faW5zdGFsbF9hcm1tdWx0aWxpYiAoKSB7CiAKIAlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9lbmRpYW4uaCBiaXRzL2ZjbnRsLmggYml0cy9mZW52LmggYml0cy9mcC1mYXN0LmggYml0cy9od2NhcC5oIGJpdHMvaXBjLmggYml0cy9saW5rLmggYml0cy93b3Jkc2l6ZS5oCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvbG9jYWxfbGltLmggYml0cy9tbWFuLmggYml0cy9tc3EuaCBiaXRzL3B0aHJlYWR0eXBlcy5oICBiaXRzL3NlbS5oICBiaXRzL3NlbWFwaG9yZS5oIGJpdHMvc2V0am1wLmgKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9zaG0uaCBiaXRzL3NpZ3N0YWNrLmggYml0cy9zdGF0LmggYml0cy9zdGF0ZnMuaCBiaXRzL3N0cmluZy5oIGJpdHMvdHlwZXNpemVzLmgKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9sb2NhbF9saW0uaCBiaXRzL21tYW4uaCBiaXRzL21zcS5oIGJpdHMvcHRocmVhZHR5cGVzLmggYml0cy9wdGhyZWFkdHlwZXMtYXJjaC5oICBiaXRzL3NlbS5oICBiaXRzL3NlbWFwaG9yZS5oIGJpdHMvc2V0am1wLmgKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9zaG0uaCBiaXRzL3NpZ3N0YWNrLmggYml0cy9zdGF0LmggYml0cy9zdGF0ZnMuaCBiaXRzL3R5cGVzaXplcy5oCiAKIAlvZV9tdWx0aWxpYl9oZWFkZXIgZnB1X2NvbnRyb2wuaCBnbnUvbGliLW5hbWVzLmggZ251L3N0dWJzLmggaWVlZTc1NC5oCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI2LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExM2M0MjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtSW5jbHVkZS1sb2NhbGVfdC5oLWNvbXBhdGliaWxpdHktaGVhZGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBhYmZlYjBjZjRlMzI2MWE2NmE3YTIzYWJjOWFlZDMzYzAzNGM4NTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+Ci1EYXRlOiBXZWQsIDYgRGVjIDIwMTcgMTM6MjY6MTkgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsb2NhbGVfdC5oIGNvbXBhdGliaWxpdHkgaGVhZGVyCi0KLU5ld2VyIHZlcnNpb25zIG9mIGdsaWJjIChzaW5jZSAyLjI2KSBtb3ZlZCB0aGUgbG9jYWxlIHR5cGVkZWZzIGZyb20KLXhsb2NhbGUuaCB0byBiaXRzL3R5cGVzL2xvY2FsZV90LmguIENyZWF0ZSBhIGNvbXBhdGliaWxpdHkgaGVhZGVyIGZvcgotdGhlc2UgbmV3ZXIgdmVyc2lvbnMgb2YgZ2xpYmMKLQotU2VlIGYwYmUyNWI2MzM2ZGI3NDkyZTQ3ZDJlOGU3MmViOGFmNTNiNTUwNmQgaW4gZ2xpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIGNvbXBhdGliaWxpdHkgd2l0aCBuZXdlciBob3N0IGdsaWJjCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+Ci0KLS0tLQotIGxvY2FsZS9iaXRzL3R5cGVzL2xvY2FsZV90LmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaAotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaCBiL2xvY2FsZS9iaXRzL3R5cGVzL2xvY2FsZV90LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5iNTE5YTZjNWY4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvYml0cy90eXBlcy9sb2NhbGVfdC5oCi1AQCAtMCwwICsxIEBACi0rI2luY2x1ZGUgPHhsb2NhbGUuaD4KLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCmluZGV4IDA1NTNmOGEuLjE5YzFkOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMjcyN2U1OGQxZDI2OTk5NGRlMTdjYWRiMTIxOTUwMDFiMTQ1ODVlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODEzNDZiMmY3NzM1Njk4MDc4ZDViZjkxOWE3OGI2YzAyNjlkNmZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjZdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKK1N1YmplY3Q6IFtQQVRDSCAwMS8yNV0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcwogIHdlbGwKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KQEAgLTMxLDcgKzMxLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDUxZmIwZDAuLmY1MDNkYmMgMTAwNjQ0CitpbmRleCBjMWI2ZDRiYTBmLi5kN2FmOWViY2JjIDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwogQEAgLTIwNTQsNiArMjA1NCwxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCkBAIC02NSw1ICs2NSw1IEBACiAgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKICAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCmluZGV4IGU1ZWYzNDEuLjJjZTI0MGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMTU3OGY1MjY0N2VjODgwNDE4NmQxOTQ0ZDRjZDIwOTUxMzJlZmMzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODJmMmU5MTBlYzBlMmRlNmE5ZTJiMDA3ODI1YmRkZmM1ODUwNTc1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjZdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQKK1N1YmplY3Q6IFtQQVRDSCAwMi8yNV0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAogIFNESwogCiBXaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCkBAIC0yMiw3ICsyMiw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCBmNTAzZGJjLi4zYTNkMTEyIDEwMDY0NAoraW5kZXggZDdhZjllYmNiYy4uMTljMWRiOTk0OCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKIEBAIC0xNzUzLDcgKzE3NTMsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCkBAIC00Niw1ICs0Niw1IEBACiAgICAgIHsKICAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOwogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAppbmRleCA5ZTIwN2U0Li4zOTdlOGIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGU1Mzk2OGQ2MTgwNGI2YmFiMzJlYzZlMTNjYzBiM2NkNTcyMTQ3OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ5MGEwZWI0ZGExYWY3MjZlYTVkNjhlM2VmYzBkMThiYTk0YzQwNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzI2XSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsCitTdWJqZWN0OiBbUEFUQ0ggMDMvMjVdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKICBwYXRocwogCiBUaGlzIHBhdGNoIHB1dHMgdGhlIGR5bmFtaWMgbG9hZGVyIHBhdGggaW4gdGhlIGJpbmFyaWVzLCBTWVNURU1fRElSUyBzdHJpbmdzCkBAIC0yNiwxMCArMjYsMTAgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYwotaW5kZXggY2ZhMzM1ZS4uZGFhMTJlYyAxMDA2NDQKK2luZGV4IGU5NjMyZGEwYjMuLjRkZTUyOWQyY2YgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtY2FjaGUuYwogKysrIGIvZWxmL2RsLWNhY2hlLmMKLUBAIC0xMzIsNiArMTMyLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXAorQEAgLTEzMyw2ICsxMzMsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCiAgd2hpbGUgKDApCiAgCiAgCkBAIC00MSw3ICs0MSw3IEBACiAgaW50ZXJuYWxfZnVuY3Rpb24KICBfZGxfY2FjaGVfbGliY21wIChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIpCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDNhM2QxMTIuLmExNDEwZTQgMTAwNjQ0CitpbmRleCAxOWMxZGI5OTQ4Li43MGMyNTliNDAwIDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwogQEAgLTEwNiw4ICsxMDYsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOwpAQCAtNTYsNyArNTYsNyBAQAogICAgU1lTVEVNX0RJUlNfTEVOCiAgfTsKIGRpZmYgLS1naXQgYS9lbGYvaW50ZXJwLmMgYi9lbGYvaW50ZXJwLmMKLWluZGV4IDk0NDg4MDIuLmU3ZThjNzAgMTAwNjQ0CitpbmRleCBiNmU4ZjA0NDQ0Li40N2MyMDQxNWJjIDEwMDY0NAogLS0tIGEvZWxmL2ludGVycC5jCiArKysgYi9lbGYvaW50ZXJwLmMKIEBAIC0xOCw1ICsxOCw1IEBACkBAIC02Nyw3ICs2Nyw3IEBACiArY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKICAgID0gUlVOVElNRV9MSU5LRVI7CiBkaWZmIC0tZ2l0IGEvZWxmL2xkY29uZmlnLmMgYi9lbGYvbGRjb25maWcuYwotaW5kZXggNDY3Y2E4Mi4uNjMxYTJhOSAxMDA2NDQKK2luZGV4IDk5Y2FmOWU5YmIuLjM2ZWE1ZGY1ZjEgMTAwNjQ0CiAtLS0gYS9lbGYvbGRjb25maWcuYwogKysrIGIvZWxmL2xkY29uZmlnLmMKIEBAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBhcmdwIGFyZ3AgPQpAQCAtODEsMTggKzgxLDE4IEBACiAgICAgYSBwbGF0Zm9ybS4gICovCiAgc3RhdGljIGludAogZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCi1pbmRleCA0ZWMyNWQ3Li5lMTU5YzEyIDEwMDY0NAoraW5kZXggNjU2NDdmYjFjOC4uY2Q4MzgxY2IzMyAxMDA2NDQKIC0tLSBhL2VsZi9ydGxkLmMKICsrKyBiL2VsZi9ydGxkLmMKLUBAIC05OSw2ICs5OSw3IEBAIHVpbnRwdHJfdCBfX3BvaW50ZXJfY2hrX2d1YXJkX2xvY2FsCi0gc3Ryb25nX2FsaWFzIChfX3BvaW50ZXJfY2hrX2d1YXJkX2xvY2FsLCBfX3BvaW50ZXJfY2hrX2d1YXJkKQotICNlbmRpZgotIAorQEAgLTEyOCw2ICsxMjgsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKKyAgICAgfQorICAgcmV0dXJuICpwICE9ICdcMCc7CisgfQogK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7CiAgCi0gLyogTGlzdCBvZiBhdWRpdGluZyBEU09zLiAgKi8KLSBzdGF0aWMgc3RydWN0IGF1ZGl0X2xpc3QKLUBAIC04NTQsMTIgKzg1NSwxMiBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKKyAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKKyAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KK0BAIC05OTksMTIgKzEwMDAsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCiAgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKICAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCiAgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICsrX2RsX3NraXBfYXJnczsKICAgICAgICAtLV9kbF9hcmdjOwogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYwotaW5kZXggZTIzNTE4OC4uNTY5ZjcyZSAxMDA2NDQKK2luZGV4IDVhYTA1NWRlNmUuLmI5YTE0YjliZDMgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jb25mLmMKICsrKyBiL2ljb252L2djb252X2NvbmYuYwogQEAgLTM2LDcgKzM2LDcgQEAKQEAgLTEyMSw3ICsxMjEsNyBAQAogIC8qIFRoZSBwYXRoIGVsZW1lbnRzLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBfX2djb252X2dldF9wYXRoIGZ1bmN0aW9uLgogICAgIEFsbCBwYXRoIGVsZW1lbnRzIGVuZCBpbiBhIHNsYXNoLiAgKi8KIGRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1pbmRleCBlYjJmOTAwLi41MDU4MDRlIDEwMDY0NAoraW5kZXggMWYwYjhmNjI5ZC4uYWNiZTY4Mzk5ZCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiArKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAogQEAgLTI3LDEwICsyNyw2IEBACkBAIC0xMzYsNSArMTM2LDUgQEAKICAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKICAjZW5kaWYKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAppbmRleCBiOTgxZjdiLi44ZGI0N2JjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApAQCAtMSwxMiArMSwxNCBAQAotRnJvbSAwYjk1ZjM0MjA3ZmZlZDNhYTUzZmE5NDk2NjJiZmJjY2M3Yzg2NGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZmUxYjU2MTgwYzMwZDIzN2NjMmFiOWE1YTljOTdhMDMxMWY0MWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzU6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yNl0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CitTdWJqZWN0OiBbUEFUQ0ggMDQvMjVdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgogCiBUaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgogVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KIEl0IGFsc28gbWFrZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtb3JlIGVmZmljaWVudC4KIAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKwogU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KQEAgLTE1LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKLWluZGV4IGNlNjJiMzMuLjRmZTQ0ZWEgMTAwNjQ0CitpbmRleCAwZTI0MjAwNjE3Li4xNTMyZjUyZGVjIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCiBAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OwpAQCAtMjUsOCArMjcsOCBAQAogLSNkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTIDAKICsjZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUyAxCiAgI2RlZmluZSBVU0VfQVRPTUlDX0NPTVBJTEVSX0JVSUxUSU5TIDAKLSAKKyAjZGVmaW5lIEFUT01JQ19FWENIQU5HRV9VU0VTX0NBUyAwCiAgCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGVlNTAwMDAuLjk1NmIyYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNzdhNzQ5NTM3NmM3ZDBjNTUwN2MwZWM5OWJmMTU2ODE1MDMzOWVmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjllZGNjODQ1NjQxOTU2YjcyODZjNjBjODMzZjA1YTlmNzBjZmFiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjZdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSCAwNS8yNV0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+CkBAIC00OSw3ICs0OSw3IEBACiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxZTUxNmQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC0xODksNyArMTg5LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2ZmEwNjcKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtMjk2LDcgKzI5Niw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxZTUxNmQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwogQEAgLTAsMCArMSwxMzQgQEAKQEAgLTQzNiw3ICs0MzYsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2ZmEwNjcKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC01NDMsNyArNTQzLDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxZTUxNmQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiBAQCAtMCwwICsxLDEzNCBAQApAQCAtNjgzLDcgKzY4Myw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2ZmEwNjcKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTAsMCArMSwxMDEgQEAKQEAgLTc5MCw3ICs3OTAsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC05MzAsNyArOTMwLDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtMTAzNyw3ICsxMDM3LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxZTUxNmQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiBAQCAtMCwwICsxLDEzNCBAQApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtMTI4NCw3ICsxMjg0LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxZTUxNmQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiBAQCAtMCwwICsxLDEzNCBAQApAQCAtMTQyNCw3ICsxNDI0LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtMTUzMSwxNCArMTUzMSwxNCBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIxMDNiNGQKK2luZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY0ZGIxN2YKK2luZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwogQEAgLTAsMCArMSwyIEBACkBAIC0xNTQ2LDM5ICsxNTQ2LDM5IEBACiArcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZWFjNWZjCitpbmRleCAwMDAwMDAwMDAwLi43ZWFjNWZjZjAyCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2NGIyYTcKK2luZGV4IDAwMDAwMDAwMDAuLjI2NGIyYTc3MDAKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmEyNTkzNDQKK2luZGV4IDAwMDAwMDAwMDAuLmEyNTkzNDQ2N2IKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmE3YmM4NTQKK2luZGV4IDAwMDAwMDAwMDAuLmE3YmM4NTRiZTgKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA0ZmY4Y2MKK2luZGV4IDAwMDAwMDAwMDAuLjA0ZmY4Y2MxODEKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCmluZGV4IDkwODhkMjkuLmM3NGZlYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNTIwY2I5ZTc0NmFmNjM3Y2YwMWZlYTM4NWI3ZjRlZTRhYWRiZGZkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzI0MjAyNDg4YTFjMjQzOWJlMzQ1NzQ1NzIyZjVjYjA0YzBlMDg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjZdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KK1N1YmplY3Q6IFtQQVRDSCAwNi8yNV0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgogIG5hbWVzCiAKIFRoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgpAQCAtMTcsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKLWluZGV4IDhhNjZmZmUuLjA4ZDU2ZmMgMTAwNjQ0CitpbmRleCBkMjc4YTE4OWIyLi5hODRjYjg1MTU4IDEwMDY0NAogLS0tIGEvZWxmL3JlYWRsaWIuYwogKysrIGIvZWxmL3JlYWRsaWIuYwogQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9CkBAIC0yOSw1ICsyOSw1IEBACiAgCiAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAppbmRleCBmMzNkZWZlLi5iNjQzMjc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDY0MTMwMjYyNzg3ZDU0ZTJlNjY5NWFlNGVkODc4M2JmZWMxNGZmZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGNmMDBiZjlkZTgxMjgxNzFlNzlhMDE5ZGU4MDllMzVmM2FlZWQyODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzI2XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCitTdWJqZWN0OiBbUEFUQ0ggMDcvMjVdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKIAogb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdwogfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCkBAIC0zNiw3ICszNiw3IEBACiAgMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uMTc5NWZkNiAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCiBAQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC02MCw3ICs2MCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uYTkxN2YzMSAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKIEBAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwpAQCAtODQsNyArODQsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi5mYzRhNzQ5IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiBAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQpAQCAtOTMsNyArOTMsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li45ZDE3NTEyIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTEwMiw3ICsxMDIsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uZmM0YTc0OSAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0xMTEsNyArMTExLDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTEyMCw3ICsxMjAsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uZmM0YTc0OSAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0xMjksNyArMTI5LDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTEzOCw3ICsxMzgsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uMTc5NWZkNiAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTE2Miw3ICsxNjIsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uYTkxN2YzMSAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC0xODYsNyArMTg2LDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQuLmZjNGE3NDkgMTAwNjQ0CitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiBAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQpAQCAtMTk1LDcgKzE5NSw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li45ZDE3NTEyIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCkBAIC0yMDQsNSArMjA0LDUgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAppbmRleCAyNmY2NWM1Li4zYWVlYzUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDVhZmIwMTQ3ZTNlNDljM2I0NzQ0MDQ1MjQwMTRlZmU1MWIyYmNhNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJhYmUzMTFkZWNhOWVlMjczMDI3OGYxM2IwNjFiOTE0YjUyODZkYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzI2XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCitTdWJqZWN0OiBbUEFUQ0ggMDgvMjVdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKICBvdXQgX19zbG93IHZlcnNpb25zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMjMsNyArMjMsNyBAQAogIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2Li5kYWE4M2YzIDEwMDY0NAoraW5kZXggMTc5NWZkNmMzZS4uZGFhODNmM2ZlOCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKIEBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtNTgsNyArNTgsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotaW5kZXggYTkxN2YzMS4uYjgxMmNmMSAxMDA2NDQKK2luZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKIEBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC04Miw3ICs4Miw3IEBACiArfQogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDkuLjcwMzhhNzAgMTAwNjQ0CitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKIEBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC0xMjEsNyArMTIxLDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyLi4xMGRlMWYwIDEwMDY0NAoraW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKIEBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTE1MSw3ICsxNTEsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5Li43MDM4YTcwIDEwMDY0NAoraW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTE5MCw3ICsxOTAsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyLi4xMGRlMWYwIDEwMDY0NAoraW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC0yMjAsNyArMjIwLDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OS4uMWMzNDI0NCAxMDA2NDQKK2luZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQpAQCAtMjM3LDcgKzIzNyw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIuLjgxMjY1MzUgMTAwNjQ0CitpbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCkBAIC0yNTQsNyArMjU0LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggMTc5NWZkNi4uMTNhODE5NyAxMDA2NDQKK2luZGV4IDE3OTVmZDZjM2UuLjEzYTgxOTczZTMgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtMjg5LDcgKzI4OSw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEuLmZhZTJkODEgMTAwNjQ0CitpbmRleCBhOTE3ZjMxM2FiLi5mYWUyZDgxMjEwIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC0zMTQsNyArMzE0LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OS4uNzAzOGE3MCAxMDA2NDQKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC0zNTMsNyArMzUzLDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMi4uMTBkZTFmMCAxMDA2NDQKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwpAQCAtMzgzLDUgKzM4Myw1IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAppbmRleCBkNDE2YWNkLi43ZDVjMmUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGRkZDUxYmI0ZTAwNTQzMmNiM2MwZjhmMzM4MjI5NTQ0MDhhOWZlZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDkzYjVkNmJlZDE5OTM5MDM5MDMxYzQ1Yjc3N2QyOTYxOWRiMDYxODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzI2XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKK1N1YmplY3Q6IFtQQVRDSCAwOS8yNV0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCiAgOgogCiAgIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LApAQCAtNDUsMTAgKzQ1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLWluZGV4IDYwZWVlMDAuLjdkNTRkNWUgMTAwNjQ0CitpbmRleCA3MDUzZWFkMTZlLi4wYjFlMTcxNmIwIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCiArKysgYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLUBAIC00OTksNyArNDk5LDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKK0BAIC01MDAsNyArNTAwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKICAKICAJY2FzZSBSX0FSTV9UTFNfRFRQT0ZGMzI6CiAgCSAgaWYgKHN5bSAhPSBOVUxMKQpAQCAtNTgsNSArNTgsNSBAQAogIAogIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCmluZGV4IDI3NmYxZmEuLjcyNzVjM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkN2U3NDY3MDgyNTMzMGY1NDIxYTU1ZjVhYTJhMWNlNmZkYTdkN2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYTZlMGY0ZWU4NTg0YjA0MjI2MTU2ZGYxYTNkZTNlNDY3ZjBlZjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgogRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAotU3ViamVjdDogW1BBVENIIDEwLzI2XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KK1N1YmplY3Q6IFtQQVRDSCAxMC8yNV0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CiAKIGxpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgogaW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCkBAIC0xOCw3ICsxOCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCBmMmY2OTRmLi5lMDYyODMzIDEwMDY0NAoraW5kZXggNGVkNjNhOGVmMy4uZTg5OTE5ZWIxOSAxMDA2NDQKIC0tLSBhL21hbnVhbC9NYWtlZmlsZQogKysrIGIvbWFudWFsL01ha2VmaWxlCiBAQCAtMTA1LDcgKzEwNSw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCkBAIC0zMiw1ICszMiw1IEBACiAgCXRvdWNoICRACiAgCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCmluZGV4IDA5NmRhYjUuLjg0ZjJjYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDZlMjA3NjU3MTI2M2U0NWM0ODg4OTg5NmQzZDk0ZmY1NzZkZjJiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWIyYWY2Y2JmNjhkMzM1M2Q3MjUxOWU3ZjZjNDZiZWNiN2JkMWQwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjZdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKK1N1YmplY3Q6IFtQQVRDSCAxMS8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAogIG91dCBfX3Nsb3cgdmVyc2lvbnMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0xNCw3ICsxNCw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxYzM0MjQ0Li43MDM4YTcwIDEwMDY0NAoraW5kZXggMWMzNDI0NGJkOC4uNzAzOGE3MGI0NyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTQwLDcgKzQwLDcgQEAKICAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggODEyNjUzNS4uMTBkZTFmMCAxMDA2NDQKK2luZGV4IDgxMjY1MzU1OGYuLjEwZGUxZjBjYzMgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwpAQCAtNTcsNSArNTcsNSBAQAogICNlbmRpZgogIHsKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItTWFrZS1sZC12ZXJzaW9uLW91dHB1dC1tYXRjaGluZy1ncm9rLWdvbGQtcy1vdXRwdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcyOGM2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gYzA5NzRjNzQ2ZTAyNjY1MGJlZjVkMTk0MGViM2Y1MTk3NjVjNzdhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI1OjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjZdIE1ha2UgbGQgLS12ZXJzaW9uIG91dHB1dCBtYXRjaGluZyBncm9rIGdvbGQncyBvdXRwdXQKLQotYWRhcHRlZCBmcm9tIGZyb20gdXBzdHJlYW0gYnJhbmNoIHJvbGFuZC9nb2xkLXZzLWxpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggNWNmMzIzMC4uMzkxZjI5ZCAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNDU1NSw3ICs0NTU1LDcgQEAgZWxzZQotICAgIyBGb3VuZCBpdCwgbm93IGNoZWNrIHRoZSB2ZXJzaW9uLgotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB2ZXJzaW9uIG9mICRMRCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgdmVyc2lvbiBvZiAkTEQuLi4gIiA+JjY7IH0KLS0gIGFjX3Byb2dfdmVyc2lvbj1gJExEIC0tdmVyc2lvbiAyPiYxIHwgc2VkIC1uICdzL14uKkdOVSBsZC4qIFwoWzAtOV1bMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKLSsgIGFjX3Byb2dfdmVyc2lvbj1gJExEIC0tdmVyc2lvbiAyPiYxIHwgc2VkIC1uICdzL14uKkdOVSBbQmJpbnV0aWxzZF1bXi5dKiBcKFswLTldWzAtOV0qXC5bMC05Ll0qXCkuKiQvXDEvcCdgCi0gICBjYXNlICRhY19wcm9nX3ZlcnNpb24gaW4KLSAgICAgJycpIGFjX3Byb2dfdmVyc2lvbj0idi4gPy4/PywgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7Ci0gICAgIDIuMVswLTldWzAtOV0qfDIuMlsyLTldKnwyLlszLTldWzAtOV0qfFszLTldLip8WzEtOV1bMC05XSopCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkNzE5ZmFkLi41YjU4NzdjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05OTAsNyArOTkwLDcgQEAgQUNfQ0hFQ0tfUFJPR19WRVIoQVMsICRBUywgLS12ZXJzaW9uLAotIAkJICBbMi4xWzAtOV1bMC05XSp8Mi4yWzItOV0qfDIuWzMtOV1bMC05XSp8WzMtOV0uKnxbMS05XVswLTldKl0sCi0gCQkgIEFTPTogY3JpdGljX21pc3Npbmc9IiRjcml0aWNfbWlzc2luZyBhcyIpCi0gQUNfQ0hFQ0tfUFJPR19WRVIoTEQsICRMRCwgLS12ZXJzaW9uLAotLQkJICBbR05VIGxkLiogXChbMC05XVswLTldKlwuWzAtOS5dKlwpXSwKLSsJCSAgW0dOVSBbQmJpbnV0aWxzZF1bXi5dKiBcKFswLTldWzAtOV0qXC5bMC05Ll0qXCldLAotIAkJICBbMi4xWzAtOV1bMC05XSp8Mi4yWzItOV0qfDIuWzMtOV1bMC05XSp8WzMtOV0uKnxbMS05XVswLTldKl0sCi0gCQkgIExEPTogY3JpdGljX21pc3Npbmc9IiRjcml0aWNfbWlzc2luZyBsZCIpCi0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmY2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGZmZDNjNWEwNGQ4ZjJmMjZmZWE3MWZlZDRjZTQxZTg4YjZmNTEwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAorU3ViamVjdDogW1BBVENIIDEyLzI1XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKKyAkbGliY19jdl9yb290c2JpbmRpcgorCitVcHN0cmVhbS1TdGF0dXM6UGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQorIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQoraW5kZXggNzEyNDNhZDBjNi4uZjU3ODE4NzU3NiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitAQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTlmZTUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAwNDljY2U4MmYzNWUwZDg2NGQ5ODA3NWI4Mzg4OGRiYmE0ZDY4YWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjg6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8yNV0gQWRkIHVudXNlZCBhdHRyaWJ1dGUKKworSGVscHMgaW4gYXZvaWRpbmcgZ2NjIHdhcm5pbmcgd2hlbiBoZWFkZXIgaXMgaXMgaW5jbHVkZWQgaW4KK2Egc291cmNlIGZpbGUgd2hpY2ggZG9lcyBub3QgdXNlIGJvdGggZnVuY3Rpb25zCisKKyAgICAgICAgKiBpY29udi9nY29udl9jaGFyc2V0LmggKHN0cmlwKToKKyAgICAgICAgQWRkIHVudXNlZCBhdHRyaWJ1dGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgaWNvbnYvZ2NvbnZfY2hhcnNldC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCitpbmRleCAxOGQ4YmQ2YWU3Li5lYjcyOWRhNWQzIDEwMDY0NAorLS0tIGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCisrKysgYi9pY29udi9nY29udl9jaGFyc2V0LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorIAorLXN0YXRpYyB2b2lkCisrc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgc3RyaXAgKGNoYXIgKndwLCBjb25zdCBjaGFyICpzKQorIHsKKyAgIGludCBzbGFzaF9jb3VudCA9IDA7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM4MWM3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAyYTEyZWFkZmQ3OTQwYjZiMDkxM2RlOGU5NWQ4NTEyNTRjY2U3OTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjc6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8yNl0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5Ci0gJGxpYmNfY3Zfcm9vdHNiaW5kaXIKLQotVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF0dGhpZXUgQ3JhcGV0IDxNYXR0aGlldS5DcmFwZXRAaW5nZW5pY28uY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLWluZGV4IDcxMjQzYWQuLmY1NzgxODcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotQEAgLTMyLDYgKzMyLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLWluZGV4IDYzNGZlNGQuLjNkYjE2OTcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotQEAgLTIxLDYgKzIxLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGVjNGY3NzYzYjMwNjAzYjdiYTBiNzBiZDc3NTBlMzRkNDQyODIxYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAotU3ViamVjdDogW1BBVENIIDE0LzI2XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQotCi1IZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgotYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKLQotICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgotICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKLWluZGV4IDk1Y2JjZTcuLjE5MWEwZGQgMTAwNjQ0Ci0tLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKLSsrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCi0gewotICAgaW50IHNsYXNoX2NvdW50ID0gMDsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjNzBlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMjYzIEBACitGcm9tIDNiOTA0YmVlODFhMWNmZTgxZTNmNDM3YjVmMzI5NmVmZDU0YTUxYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAorU3ViamVjdDogW1BBVENIIDE0LzI1XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCisKK0l0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKK2J1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCitmYWxzZS1wb3NpdGl2ZSBtYXRjaGVzIHdpdGggdGhlIHBhdGggaXQgaXMgY29uZmlndXJlZCBpbnRvLgorCitUaGUgY2hhbmdlIGlzIHRvIHVzZSBhIG1vcmUgZWxhYm9yYXRlZCBzdHJpbmcgdG8gZ3JlcCBmb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBFc3F1aXZlbCA8YmVuamFtaW4uZXNxdWl2ZWxAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbmlvczIvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSAgICB8IDggKysrKy0tLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgfCA4ICsrKystLS0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQoraW5kZXggNWJkMzU1YTY5MS4uM2JjNTUzN2JjMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKK0BAIC0xNDgsMTIgKzE0OCwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX0FBUkNINjRFQl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX2FhcmNoNjRfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9hYXJjaDY0X2JlPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK2luZGV4IDc4NTFkZDRkYWMuLjZlOTIzODE3MWYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCitAQCAtMTAsOCArMTAsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKKyAgIFtsaWJjX2N2X2FhcmNoNjRfYmVdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FBUkNINjRFQl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19hYXJjaDY0X2JlLFsjaWZkZWYgX19BQVJDSDY0RUJfXworKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzLCBsaWJjX2N2X2FhcmNoNjRfYmU9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X2FhcmNoNjRfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKK2luZGV4IDQzMWU4NDNiMmIuLmUxNTI0NjExMzggMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorQEAgLTE1MSwxMiArMTUxLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCisgCQkgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfYXJtX3Bjc192ZnAiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X2FybV9wY3NfdmZwPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKK2luZGV4IDkwY2RkNjljNzUuLjA1YTI2MmJhMDAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworQEAgLTE1LDggKzE1LDggQEAgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBBUk0gaGFyZC1mbG9hdCBBQkldLAorICAgW2xpYmNfY3ZfYXJtX3Bjc192ZnBdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCistCQkgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAodXNlX2FybV9wY3NfdmZwLFsjaWZkZWYgX19BUk1fUENTX1ZGUAorKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCisgCQkgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMsIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X2FybV9wY3NfdmZwID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK2luZGV4IDRlMTMyNDhjMDMuLmYxNGFmOTUyZDAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCitAQCAtMTQzLDExICsxNDMsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitpbmRleCBiY2JkYWZmZDlmLi5hZDMwNTdmNGNjIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworQEAgLTYsOSArNiw5IEBAIGRubCBwb3NpdGlvbiBpbmRlcGVuZGVudCB3YXkuCisgZG5sIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgaWYgdGVzdCB4JGxpYmNfY3ZfbWlwc19uYW4yMDA4ID0geHllczsgdGhlbgorICAgQUNfREVGSU5FKEhBVkVfTUlQU19OQU4yMDA4KQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKK2luZGV4IDE0YzhhM2EwMTQuLmRkZTM4MTRlZjIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKK0BAIC0xNDIsMTIgKzE0MiwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfbmlvczJfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X25pb3MyX2JlPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbmlvczJfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCitpbmRleCBmMDVmNDM4MDJiLi5kYzg2Mzk5MDJkIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCitAQCAtNCw4ICs0LDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KKyAjIE5pb3MgSUkgYmlnIGVuZGlhbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfbmlvczJfYmVdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAoaXNfbmlvczJfYmUsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQoraW5kZXggYTU1MTNmYWQ0OC4uMjgzYjI5M2ZmMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQorQEAgLTQxNCwxMSArNDE0LDExIEBAIGVsc2UKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZgorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCisgZWxzZQorICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCitpbmRleCA5MTQ3YWE0NTgyLi43ODk4ZTI0NzM4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCitAQCAtMTA1LDkgKzEwNSw5IEBAIEFDX0NPTVBJTEVfSUZFTFNFKAorIExJQkNfQ09ORklHX1ZBUihbbWlwcy1tb2RlLXN3aXRjaF0sWyR7bGliY19taXBzX21vZGVfc3dpdGNofV0pCisgCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCistICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKKysgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQorIAorIGxpYmNfbWlwc19uYW49CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCitpbmRleCA0ZTdmY2YxZDk3Li40NGE5Y2IzNzkxIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK0BAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZiBfQ0FMTF9FTEYgPT0gMgorLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX3BwY19lbGZ2Ml9hYmkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubworQEAgLTE4OCwxMiArMTg4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9DQUxMX0VMRgorLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCisgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfZGVmX2NhbGxfZWxmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzCisgZWxzZQorICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKK2luZGV4IGY5Y2JhNmUxNWQuLmIyMWY3MmYxZTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworQEAgLTYsOCArNiw4IEBAIExJQkNfU0xJQkRJUl9SVExERElSKFtsaWI2NF0sIFtsaWI2NF0pCisgIyBEZWZpbmUgZGVmYXVsdC1hYmkgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIGZsYWdzLgorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgUG93ZXJQQzY0IEVMRnYyIEFCSV0sCisgICBbbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmldLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZiBfQ0FMTF9FTEYgPT0gMgorLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAodXNlX3BwY19lbGZ2Ml9hYmksWyNpZiBfQ0FMTF9FTEYgPT0gMgorKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpID0geWVzOyB0aGVuCitAQCAtMTksOCArMTksOCBAQCBlbHNlCisgICAjIENvbXBpbGVyIHRoYXQgZG8gbm90IHN1cHBvcnQgRUxGdjIgQUJJIGRvZXMgbm90IGRlZmluZSBfQ0FMTF9FTEYKKyAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBkZWZpbmVzIF9DQUxMX0VMRl0sCisgICAgIFtsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZl0sCistICAgIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICBbQUNfRUdSRVBfQ1BQKGlzX2RlZl9jYWxsX2VsZixbI2lmZGVmIF9DQUxMX0VMRgorKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCisgICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZlZmZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGI4Y2I4Y2IyNDJjYjc1MWQ4ODhmZWIxYWRhNWM0ZDBmMDVjYmMxZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAorU3ViamVjdDogW1BBVENIIDE1LzI1XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorCitUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KKyB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCitpbmRleCBkNmNjN2JhMzU3Li5lNGVhZDZlMWE3IDEwMDY0NAorLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKKysrKyBiL3RpbWV6b25lL01ha2VmaWxlCitAQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCisgCWNwICQ8ICRACisgCisgJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKKy0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAorKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCisgCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAorIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKKyAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKK2RpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKK2luZGV4IGQyYzNhNmQxZGQuLjA4OTY3OWYzMDYgMTAwNzU1CistLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKKysrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorQEAgLTM1LDcgKzM1LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKKyAKKyAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KKyA6ICR7QVdLPWF3a30KKy06ICR7VFpESVI9YHB3ZGB9CisrOiAke1RaRElSPSQocHdkKX0KKyAKKyAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgorICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkNDI1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2MyArMCwwIEBACi1Gcm9tIDE4ZDY0OTUxY2JiNjhkOGQ3NWU4ZWYzNDdjYmQwZTBhNWMxNDYwNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI2XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCi0KLUl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKLWJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCi1mYWxzZS1wb3NpdGl2ZSBtYXRjaGVzIHdpdGggdGhlIHBhdGggaXQgaXMgY29uZmlndXJlZCBpbnRvLgotCi1UaGUgY2hhbmdlIGlzIHRvIHVzZSBhIG1vcmUgZWxhYm9yYXRlZCBzdHJpbmcgdG8gZ3JlcCBmb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBFc3F1aXZlbCA8YmVuamFtaW4uZXNxdWl2ZWxAbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSAgICB8IDggKysrKy0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgfCA4ICsrKystLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotaW5kZXggNWJkMzU1YS4uM2JjNTUzNyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLUBAIC0xNDgsMTIgKzE0OCwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX2FhcmNoNjRfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9hYXJjaDY0X2JlPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLWluZGV4IDc4NTFkZDQuLjZlOTIzODEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi1AQCAtMTAsOCArMTAsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKLSAgIFtsaWJjX2N2X2FhcmNoNjRfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19hYXJjaDY0X2JlLFsjaWZkZWYgX19BQVJDSDY0RUJfXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzLCBsaWJjX2N2X2FhcmNoNjRfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FhcmNoNjRfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKLWluZGV4IDQzMWU4NDMuLmUxNTI0NjEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotQEAgLTE1MSwxMiArMTUxLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfYXJtX3Bjc192ZnAiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FybV9wY3NfdmZwPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLWluZGV4IDkwY2RkNjkuLjA1YTI2MmIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotQEAgLTE1LDggKzE1LDggQEAgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBBUk0gaGFyZC1mbG9hdCBBQkldLAotICAgW2xpYmNfY3ZfYXJtX3Bjc192ZnBdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0tCQkgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX2FybV9wY3NfdmZwLFsjaWZkZWYgX19BUk1fUENTX1ZGUAotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMsIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FybV9wY3NfdmZwID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLWluZGV4IDRlMTMyNDguLmYxNGFmOTUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCi1AQCAtMTQzLDExICsxNDMsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1pbmRleCBiY2JkYWZmLi5hZDMwNTdmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotQEAgLTYsOSArNiw5IEBAIGRubCBwb3NpdGlvbiBpbmRlcGVuZGVudCB3YXkuCi0gZG5sIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gaWYgdGVzdCB4JGxpYmNfY3ZfbWlwc19uYW4yMDA4ID0geHllczsgdGhlbgotICAgQUNfREVGSU5FKEhBVkVfTUlQU19OQU4yMDA4KQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLWluZGV4IDE0YzhhM2EuLmRkZTM4MTQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLUBAIC0xNDIsMTIgKzE0MiwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfbmlvczJfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X25pb3MyX2JlPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbmlvczJfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1pbmRleCBmMDVmNDM4Li5kYzg2Mzk5IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1AQCAtNCw4ICs0LDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAjIE5pb3MgSUkgYmlnIGVuZGlhbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfbmlvczJfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAoaXNfbmlvczJfYmUsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotaW5kZXggYTU1MTNmYS4uMjgzYjI5MyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotQEAgLTQxNCwxMSArNDE0LDExIEBAIGVsc2UKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZgotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCi0gZWxzZQotICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1pbmRleCA5MTQ3YWE0Li43ODk4ZTI0IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1AQCAtMTA1LDkgKzEwNSw5IEBAIEFDX0NPTVBJTEVfSUZFTFNFKAotIExJQkNfQ09ORklHX1ZBUihbbWlwcy1tb2RlLXN3aXRjaF0sWyR7bGliY19taXBzX21vZGVfc3dpdGNofV0pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCi0tICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKLSsgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQotIAotIGxpYmNfbWlwc19uYW49Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi1pbmRleCBhZjA2OTcwLi4yN2I4YzFiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLUBAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX3BwY19lbGZ2Ml9hYmkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubwotQEAgLTE4OCwxMiArMTg4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9DQUxMX0VMRgotLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfZGVmX2NhbGxfZWxmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzCi0gZWxzZQotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLWluZGV4IDA4MjI5MTUuLjlhMzJmZGQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotQEAgLTYsOCArNiw4IEBAIExJQkNfU0xJQkRJUl9SVExERElSKFtsaWI2NF0sIFtsaWI2NF0pCi0gIyBEZWZpbmUgZGVmYXVsdC1hYmkgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIGZsYWdzLgotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgUG93ZXJQQzY0IEVMRnYyIEFCSV0sCi0gICBbbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmldLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX3BwY19lbGZ2Ml9hYmksWyNpZiBfQ0FMTF9FTEYgPT0gMgotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpID0geWVzOyB0aGVuCi1AQCAtMTksOCArMTksOCBAQCBlbHNlCi0gICAjIENvbXBpbGVyIHRoYXQgZG8gbm90IHN1cHBvcnQgRUxGdjIgQUJJIGRvZXMgbm90IGRlZmluZSBfQ0FMTF9FTEYKLSAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBkZWZpbmVzIF9DQUxMX0VMRl0sCi0gICAgIFtsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZl0sCi0tICAgIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICBbQUNfRUdSRVBfQ1BQKGlzX2RlZl9jYWxsX2VsZixbI2lmZGVmIF9DQUxMX0VMRgotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCi0gICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDk5ODNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIDY5ZDM3ODAwMWFkZmU5YTM1OWQyZjRiMDY5YzFlZDJkMzZkZTQ0ODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDE2LzI1XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0CisKK1RoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCisodHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBuc2NkL25zY2QuaW5pdCB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25zY2QvbnNjZC5pbml0IGIvbnNjZC9uc2NkLmluaXQKK2luZGV4IGE4ODJkYTdkOGIuLmIwMjk4NmVjMTUgMTAwNjQ0CistLS0gYS9uc2NkL25zY2QuaW5pdAorKysrIGIvbnNjZC9uc2NkLmluaXQKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgIworICMgbnNjZDoJCVN0YXJ0cyB0aGUgTmFtZSBTd2l0Y2ggQ2FjaGUgRGFlbW9uCisgIworQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvZz1uc2NkCisgc3RhcnQgKCkgeworICAgICBbIC1kIC92YXIvcnVuL25zY2QgXSB8fCBta2RpciAvdmFyL3J1bi9uc2NkCisgICAgIFsgLWQgL3Zhci9kYi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9kYi9uc2NkCistICAgIGVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgorKyAgICBlY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgorICAgICBkYWVtb24gL3Vzci9zYmluL25zY2QKKyAgICAgUkVUVkFMPSQ/CisgICAgIGVjaG8KK0BAIC01OCw3ICs1OCw3IEBAIHN0YXJ0ICgpIHsKKyB9CisgCisgc3RvcCAoKSB7CistICAgIGVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgorKyAgICBlY2hvIC1uICJTdG9wcGluZyAkcHJvZzogIgorICAgICAvdXNyL3NiaW4vbnNjZCAtSworICAgICBSRVRWQUw9JD8KKyAgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KK0BAIC02Nyw5ICs2Nyw5IEBAIHN0b3AgKCkgeworIAkjIGEgbm9uLXByaXZpbGVnZWQgdXNlcgorIAlybSAtZiAvdmFyL3J1bi9uc2NkL25zY2QucGlkCisgCXJtIC1mIC92YXIvcnVuL25zY2Qvc29ja2V0CistICAgICAgIAlzdWNjZXNzICQiJHByb2cgc2h1dGRvd24iCisrCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgorICAgICBlbHNlCistICAgICAgIAlmYWlsdXJlICQiJHByb2cgc2h1dGRvd24iCisrCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgorICAgICBmaQorICAgICBlY2hvCisgICAgIHJldHVybiAkUkVUVkFMCitAQCAtMTAzLDEzICsxMDMsMTMgQEAgY2FzZSAiJDEiIGluCisgCVJFVFZBTD0kPworIAk7OworICAgICBmb3JjZS1yZWxvYWQgfCByZWxvYWQpCistICAgIAllY2hvIC1uICQiUmVsb2FkaW5nICRwcm9nOiAiCisrCWVjaG8gLW4gIlJlbG9hZGluZyAkcHJvZzogIgorIAlraWxscHJvYyAvdXNyL3NiaW4vbnNjZCAtSFVQCisgCVJFVFZBTD0kPworIAllY2hvCisgCTs7CisgICAgICopCistCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKysJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCisgCVJFVFZBTD0xCisgCTs7CisgZXNhYworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNmEyYzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gMmJlZDUxNWI5ZjlmNjEzYWUwZGI5Yjk2MDdkOGZhNjBhNGFmY2E1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjZdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCi0KLVRvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQotIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKLWluZGV4IGRlZTc1NjguLjY2YTUwYmUgMTAwNjQ0Ci0tLS0gYS90aW1lem9uZS9NYWtlZmlsZQotKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKLUBAIC0xMjAsNyArMTIwLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKLSAJY3AgJDwgJEAKLSAKLSAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQotLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCi0rCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKLSAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCi0gCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAotIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAotZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotaW5kZXggMmMzYjJmNC4uMGMwNGE2MSAxMDA3NTUKLS0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1AQCAtMzUsNyArMzUsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZwotIAotICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgotIDogJHtBV0s9YXdrfQotLTogJHtUWkRJUj1gcHdkYH0KLSs6ICR7VFpESVI9JChwd2QpfQotIAotICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0gIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyNTA2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSBjODgxNDg3NWIzNjJlZmJmZDc3ODM0NWQwZDI3Nzc0NzhiZjExYTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yNl0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAotCi1UaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQotKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBuc2NkL25zY2QuaW5pdCB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25zY2QvbnNjZC5pbml0IGIvbnNjZC9uc2NkLmluaXQKLWluZGV4IGE4ODJkYTcuLmIwMjk4NmUgMTAwNjQ0Ci0tLS0gYS9uc2NkL25zY2QuaW5pdAotKysrIGIvbnNjZC9uc2NkLmluaXQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIwotICMgbnNjZDoJCVN0YXJ0cyB0aGUgTmFtZSBTd2l0Y2ggQ2FjaGUgRGFlbW9uCi0gIwotQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvZz1uc2NkCi0gc3RhcnQgKCkgewotICAgICBbIC1kIC92YXIvcnVuL25zY2QgXSB8fCBta2RpciAvdmFyL3J1bi9uc2NkCi0gICAgIFsgLWQgL3Zhci9kYi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9kYi9uc2NkCi0tICAgIGVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgotICAgICBkYWVtb24gL3Vzci9zYmluL25zY2QKLSAgICAgUkVUVkFMPSQ/Ci0gICAgIGVjaG8KLUBAIC01OCw3ICs1OCw3IEBAIHN0YXJ0ICgpIHsKLSB9Ci0gCi0gc3RvcCAoKSB7Ci0tICAgIGVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdG9wcGluZyAkcHJvZzogIgotICAgICAvdXNyL3NiaW4vbnNjZCAtSwotICAgICBSRVRWQUw9JD8KLSAgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLUBAIC02Nyw5ICs2Nyw5IEBAIHN0b3AgKCkgewotIAkjIGEgbm9uLXByaXZpbGVnZWQgdXNlcgotIAlybSAtZiAvdmFyL3J1bi9uc2NkL25zY2QucGlkCi0gCXJtIC1mIC92YXIvcnVuL25zY2Qvc29ja2V0Ci0tICAgICAgIAlzdWNjZXNzICQiJHByb2cgc2h1dGRvd24iCi0rCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgotICAgICBlbHNlCi0tICAgICAgIAlmYWlsdXJlICQiJHByb2cgc2h1dGRvd24iCi0rCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgotICAgICBmaQotICAgICBlY2hvCi0gICAgIHJldHVybiAkUkVUVkFMCi1AQCAtMTAzLDEzICsxMDMsMTMgQEAgY2FzZSAiJDEiIGluCi0gCVJFVFZBTD0kPwotIAk7OwotICAgICBmb3JjZS1yZWxvYWQgfCByZWxvYWQpCi0tICAgIAllY2hvIC1uICQiUmVsb2FkaW5nICRwcm9nOiAiCi0rCWVjaG8gLW4gIlJlbG9hZGluZyAkcHJvZzogIgotIAlraWxscHJvYyAvdXNyL3NiaW4vbnNjZCAtSFVQCi0gCVJFVFZBTD0kPwotIAllY2hvCi0gCTs7Ci0gICAgICopCi0tCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSsJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCi0gCVJFVFZBTD0xCi0gCTs7Ci0gZXNhYwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzOWQ3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw2MTkgQEAKK0Zyb20gY2RjODhkZmZhMjI2ODE1ZTNhMjE4NjA0NjU1NDU5ZTMzZGM4NjQ4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMjVdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCisKK1BvcnRlZCBmcm9tIGVnbGliYworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKKworZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5lNmUwZGExYWFmCistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy1idWlsZGluZworQEAgLTAsMCArMSwzODMgQEAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQorKworKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgorKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKKytwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCisraW52b2x2ZWQ6CisrCisrMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCisrCisrMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgorKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKKysgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCisrICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KKysKKyszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0CisrICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCisrCisrNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgorKyAgIGJ1aWx0IGluIHN0ZXAgMy4KKysKKys1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KKysKKytUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKKytsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKKytvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0CisrZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCisrR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKKytHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCisraW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KKysKKytJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCisrZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKKytmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKKytjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bworK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgorK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCisrCisrCisrUHJlcGFyYXRpb24KKysKKytHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCisrTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KKytkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCisrY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKKytpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKKythbmQgTGludXggMy4xLgorKworK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKKytidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCisrYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKKysKKysgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251CisrICAgICQgaG9zdD0kYnVpbGQKKysgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQorKyAgICAkIGxpbnV4X2FyY2g9YXJtCisrCisrV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKKysKKysgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQorKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCisrICAgICQgbGludXh2PWxpbnV4LTMuMQorKworK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAorK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKKythbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKKysnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6CisrCisrICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKKysgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCisrICAgICQgbHMgJHNyYworKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKKysKKytXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCisrd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAorK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Cisrc3lzdGVtKSBpbiAnc3lzcm9vdCc6CisrCisrICAgICQgb2JqPSR0b3Avb2JqCisrICAgICQgdG9vbHM9JHRvcC90b29scworKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290CisrCisrCisrQmludXRpbHMKKysKKytDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKKysgICAgJCBjZCAkb2JqL2JpbnV0aWxzCisrICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAorKyAgICAkIG1ha2UKKysgICAgJCBtYWtlIGluc3RhbGwKKysKKysKKytUaGUgRmlyc3QgR0NDCisrCisrRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAorK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKKysnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQorK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAorK2J1aWx0IHlldCkuCisrCisrRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAorK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KKyt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAorK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKKythcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKKytHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCisrCisrV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKKytidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKKytsYW5ndWFnZSBpcyBuZWVkZWQuCisrCisrU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzEKKysgICAgJCBjZCAkb2JqL2djYzEKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrTGludXggS2VybmVsIEhlYWRlcnMKKysKKytUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KKytGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKKyt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCisrY29weSBmaXJzdDoKKysKKysgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAorKyAgICAkIGNkICRvYmovbGludXgKKysKKytOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgorKworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCisrICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCisrCisrCisrR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cworKworK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQworK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKKytmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAorKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKKysgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cworKworK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCisrY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAorK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcworK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcworK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKKytkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKKytmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCisraW5zdGFsbGF0aW9ucy4KKysKKytUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQorK2JlZW4gaW5zdGFsbGVkLgorKworK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKKytmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAorK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCisrc3VwcG9ydCBBUk0gdGFyZ2V0cy4KKysKKytXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCisraGVhZGVyczoKKysKKysgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5CisrYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCisrZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgorKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCisrcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgorKworK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKKyt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgorKworKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKKysgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCisrICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgorKworK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKKytzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKKytpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKKythIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCisrCisrCisrVGhlIFNlY29uZCBHQ0MKKysKKytXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KKytub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKKytidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCisrYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCisrICAgICQgY2QgJG9iai9nY2MyCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworKworK0dMSUJDLCBDb21wbGV0ZQorKworK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQorK2Z1bGwgR0xJQkMgYnVpbGQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nbGliYworKyAgICAkIGNkICRvYmovZ2xpYmMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bworK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQorK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKKysqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCisrQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCisrZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6CisrCisrICAgICQgY2QgJG9iai9saW51eAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysKKytOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6CisrCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290CisrCisrQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAorK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKKytmaWxlcyBpbiBwbGFjZS4KKysKKysKKytUaGUgVGhpcmQgR0NDCisrCisrRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCisrd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCisrICAgICQgY2QgJG9iai9nY2MzCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKworK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKKytHTElCQy4KKysKKytBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKKytzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgorK3RoZSBzeXNyb290LgorKworKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgorKworKworK1RyeWluZyBUaGluZ3MgT3V0CisrCisrQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCisrdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgorKworKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KKysgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+CisrICAgID4gaW50CisrICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyAgICA+IHsKKysgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KKysKKysKKytXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgorK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KKysgICAgRUxGIEhlYWRlcjoKKysgICAgLi4uCisrICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCisrICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KKysKKysgICAgLi4uCisrICAgIFByb2dyYW0gSGVhZGVyczoKKysgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgorKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAorKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQorKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCisrICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCisrICAgIC4uLgorKworK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQorK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JworK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAorK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCisrICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgorKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCisrICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCisrICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQorKyAgICAuLi4KKysKKysKKytBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKKysKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9oZWxsbworKyAgICBIZWxsbywgd29ybGQhCisrICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAorKyAgICA+IC4vYysrLWhlbGxvCisrICAgIEhlbGxvLCBDKysgd29ybGQhCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iNjdiNDY4NDY2CistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCitAQCAtMCwwICsxLDIwNSBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAorK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCisrdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KKytjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5CisrZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCisrdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCisrZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCisrc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgorK3NpbXVsYXRvci4KKysKKysKKytUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cworKworK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKKytjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKKysKKystIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKKysgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KKysgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKKysgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KKysKKystIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KKysgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCisrICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCisrICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgorKworKworK1VzYWdlCisrCisrVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCisrZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6CisrCisrLSBjcm9zcy10ZXN0LXdyYXBwZXIKKysKKysgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKKysgIHdpdGggYW55IGFyZ3VtZW50cy4KKysKKystIGNyb3NzLWxvY2FsZWRlZgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCisrICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55CisrICBhcmd1bWVudHMgbmVlZGVkLgorKworK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCisrCisrCisrVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgorKworK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCisrZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAorK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KKythY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKKytsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQorK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKKyt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCisrCisrRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKyt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKKysKKysgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCisrdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgorK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKKytpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAorK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorK2RpcmVjdG9yaWVzLgorKworK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQorK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKKyt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCisrYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCisrJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcworK2ZvbGxvd3M6CisrCisrICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKKytnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCisrYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgorK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgorKworK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKKysKKystIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKKysgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAorKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKKysgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCisrICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KKysKKystIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCisrICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAorKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgorKworKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAorKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCisrICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCisrICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQorKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCisrICBleGNlcHRpb25zLikKKysKKysgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKKysgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCisrICBtZXRhY2hhcmFjdGVycy4KKysKKystIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKKysgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCisrICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCisrICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAorKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKKysgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KKysKKysKKytUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKKysKKytJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCisrdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKKysnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgorK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKKytkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCisrY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCisrc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KKysKKytGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KKysKKysKKytUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKKysKKytTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKKytwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKKysnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKKysnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCisrYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCisraG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKKytvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKKyttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgorKworK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAorK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQorK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcworK3N1aXRhYmxlLgorKworK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKKyt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKKyt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCisrCisrCisrRXhhbXBsZQorKworK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCisrdGhlIGZvbGxvd2luZyBzY3JpcHQ6CisrCisrICAgICMhL2Jpbi9zaAorKworKyAgICBzcmNkaXI9Li4uCisrICAgIHRlc3RfaG9zdG5hbWU9Li4uCisrICAgIGxvY2FsZWRlZmRpcj0uLi4KKysgICAgY3Jvc3NfZ3h4PS4uLi1nKysKKysKKysgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgorKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgorKworKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKKysgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKKysgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKKysgICAgICAgICAiJEAiCisrCisrCisrT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucworKworK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKKyt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6CisrCisrLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJworKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCisrICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCisrICBkaXJlY3RvcnkuCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVjMDFmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjE5ICswLDAgQEAKLUZyb20gZGY5NmQ2YjYxYmI2MGYxM2NkM2Q0OTg5ZDFhZmM1NmQ3MDVmNGEzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMjZdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCi0KLVBvcnRlZCBmcm9tIGVnbGliYwotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKLQotZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNmUwZGExCi0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy1idWlsZGluZwotQEAgLTAsMCArMSwzODMgQEAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgotKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKLStwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCi0raW52b2x2ZWQ6Ci0rCi0rMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCi0rCi0rMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgotKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKLSsgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCi0rICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KLSsKLSszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0Ci0rICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCi0rCi0rNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgotKyAgIGJ1aWx0IGluIHN0ZXAgMy4KLSsKLSs1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KLSsKLStUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKLStsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKLStvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0Ci0rZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCi0rR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKLStHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCi0raW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KLSsKLStJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCi0rZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKLStmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKLStjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bwotK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgotK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCi0rCi0rCi0rUHJlcGFyYXRpb24KLSsKLStHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCi0rTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KLStkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCi0rY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKLStpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKLSthbmQgTGludXggMy4xLgotKwotK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKLStidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCi0rYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKLSsKLSsgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251Ci0rICAgICQgaG9zdD0kYnVpbGQKLSsgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQotKyAgICAkIGxpbnV4X2FyY2g9YXJtCi0rCi0rV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKLSsKLSsgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQotKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCi0rICAgICQgbGludXh2PWxpbnV4LTMuMQotKwotK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAotK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKLSthbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKLSsnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6Ci0rCi0rICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKLSsgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCi0rICAgICQgbHMgJHNyYwotKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKLSsKLStXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCi0rd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAotK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Ci0rc3lzdGVtKSBpbiAnc3lzcm9vdCc6Ci0rCi0rICAgICQgb2JqPSR0b3Avb2JqCi0rICAgICQgdG9vbHM9JHRvcC90b29scwotKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290Ci0rCi0rCi0rQmludXRpbHMKLSsKLStDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKLSsgICAgJCBjZCAkb2JqL2JpbnV0aWxzCi0rICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAotKyAgICAkIG1ha2UKLSsgICAgJCBtYWtlIGluc3RhbGwKLSsKLSsKLStUaGUgRmlyc3QgR0NDCi0rCi0rRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAotK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKLSsnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQotK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAotK2J1aWx0IHlldCkuCi0rCi0rRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAotK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KLSt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAotK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKLSthcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKLStHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCi0rCi0rV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKLStidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKLStsYW5ndWFnZSBpcyBuZWVkZWQuCi0rCi0rU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzEKLSsgICAgJCBjZCAkb2JqL2djYzEKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rTGludXggS2VybmVsIEhlYWRlcnMKLSsKLStUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KLStGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKLSt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCi0rY29weSBmaXJzdDoKLSsKLSsgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAotKyAgICAkIGNkICRvYmovbGludXgKLSsKLStOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgotKwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCi0rICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCi0rCi0rCi0rR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cwotKwotK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQwotK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKLStmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAotKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKLSsgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cwotKwotK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCi0rY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAotK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcwotK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcwotK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKLStkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKLStmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCi0raW5zdGFsbGF0aW9ucy4KLSsKLStUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQotK2JlZW4gaW5zdGFsbGVkLgotKwotK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKLStmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAotK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCi0rc3VwcG9ydCBBUk0gdGFyZ2V0cy4KLSsKLStXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCi0raGVhZGVyczoKLSsKLSsgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5Ci0rYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCi0rZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgotKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCi0rcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgotKwotK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKLSt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgotKwotKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKLSsgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCi0rICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgotKwotK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKLStzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKLStpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKLSthIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCi0rCi0rCi0rVGhlIFNlY29uZCBHQ0MKLSsKLStXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KLStub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKLStidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCi0rYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCi0rICAgICQgY2QgJG9iai9nY2MyCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotKwotK0dMSUJDLCBDb21wbGV0ZQotKwotK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQotK2Z1bGwgR0xJQkMgYnVpbGQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nbGliYwotKyAgICAkIGNkICRvYmovZ2xpYmMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bwotK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQotK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKLSsqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCi0rQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCi0rZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6Ci0rCi0rICAgICQgY2QgJG9iai9saW51eAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsKLStOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6Ci0rCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290Ci0rCi0rQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAotK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKLStmaWxlcyBpbiBwbGFjZS4KLSsKLSsKLStUaGUgVGhpcmQgR0NDCi0rCi0rRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCi0rd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCi0rICAgICQgY2QgJG9iai9nY2MzCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKwotK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKLStHTElCQy4KLSsKLStBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKLStzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgotK3RoZSBzeXNyb290LgotKwotKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgotKwotKwotK1RyeWluZyBUaGluZ3MgT3V0Ci0rCi0rQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCi0rdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgotKwotKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KLSsgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rICAgID4gaW50Ci0rICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotKyAgICA+IHsKLSsgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KLSsKLSsKLStXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgotK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KLSsgICAgRUxGIEhlYWRlcjoKLSsgICAgLi4uCi0rICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCi0rICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KLSsKLSsgICAgLi4uCi0rICAgIFByb2dyYW0gSGVhZGVyczoKLSsgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgotKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAotKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQotKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCi0rICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCi0rICAgIC4uLgotKwotK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQotK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JwotK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAotK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCi0rICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgotKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCi0rICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCi0rICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQotKyAgICAuLi4KLSsKLSsKLStBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKLSsKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9oZWxsbwotKyAgICBIZWxsbywgd29ybGQhCi0rICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAotKyAgICA+IC4vYysrLWhlbGxvCi0rICAgIEhlbGxvLCBDKysgd29ybGQhCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iNjdiNDY4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCi1AQCAtMCwwICsxLDIwNSBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAotK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCi0rdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KLStjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5Ci0rZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCi0rdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCi0rZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCi0rc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgotK3NpbXVsYXRvci4KLSsKLSsKLStUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cwotKwotK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKLStjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKLSsKLSstIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKLSsgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KLSsgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKLSsgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KLSsKLSstIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KLSsgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCi0rICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCi0rICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgotKwotKwotK1VzYWdlCi0rCi0rVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCi0rZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6Ci0rCi0rLSBjcm9zcy10ZXN0LXdyYXBwZXIKLSsKLSsgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKLSsgIHdpdGggYW55IGFyZ3VtZW50cy4KLSsKLSstIGNyb3NzLWxvY2FsZWRlZgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCi0rICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55Ci0rICBhcmd1bWVudHMgbmVlZGVkLgotKwotK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCi0rCi0rCi0rVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgotKwotK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCi0rZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAotK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KLSthY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKLStsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQotK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKLSt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCi0rCi0rRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKLSsKLSsgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCi0rdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgotK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKLStpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAotK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQotK2RpcmVjdG9yaWVzLgotKwotK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQotK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKLSt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCi0rYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCi0rJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcwotK2ZvbGxvd3M6Ci0rCi0rICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKLStnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCi0rYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgotK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgotKwotK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKLSsKLSstIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKLSsgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAotKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKLSsgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCi0rICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KLSsKLSstIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCi0rICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAotKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgotKwotKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAotKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCi0rICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCi0rICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQotKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCi0rICBleGNlcHRpb25zLikKLSsKLSsgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKLSsgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCi0rICBtZXRhY2hhcmFjdGVycy4KLSsKLSstIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKLSsgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCi0rICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCi0rICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAotKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKLSsgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KLSsKLSsKLStUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKLSsKLStJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCi0rdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKLSsnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgotK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKLStkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCi0rY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCi0rc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KLSsKLStGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KLSsKLSsKLStUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKLSsKLStTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKLStwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKLSsnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKLSsnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCi0rYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCi0raG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKLStvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKLSttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAotK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQotK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcwotK3N1aXRhYmxlLgotKwotK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKLSt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKLSt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCi0rCi0rCi0rRXhhbXBsZQotKwotK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCi0rdGhlIGZvbGxvd2luZyBzY3JpcHQ6Ci0rCi0rICAgICMhL2Jpbi9zaAotKwotKyAgICBzcmNkaXI9Li4uCi0rICAgIHRlc3RfaG9zdG5hbWU9Li4uCi0rICAgIGxvY2FsZWRlZmRpcj0uLi4KLSsgICAgY3Jvc3NfZ3h4PS4uLi1nKysKLSsKLSsgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgotKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgotKwotKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKLSsgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKLSsgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKLSsgICAgICAgICAiJEAiCi0rCi0rCi0rT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucwotKwotK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKLSt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6Ci0rCi0rLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJwotKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCi0rICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCi0rICBkaXJlY3RvcnkuCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmYzNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSAxMTYxY2QxYzY4MzU0N2QyOWEwMzYyNmQ5ZDdkZTdmOWNjMDNiNzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8yNV0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KKworVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKKworICAgICAgICAyMDA3LTAyLTIwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZSAoaW5zdGFsbC1oZWFkZXJzKTogUHJlc2VydmUgb2xkIGJlaGF2aW9yOiBkZXBlbmQgb24KKyAgICAgICAgICAgICAgICAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmggb25seSBpZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzCisgICAgICAgICAgICAgICAgaXMgc2V0OyBvdGhlcndpc2UsIHBsYWNlIGdudS9zdHVicy5oIG9uIHRoZSAnaW5zdGFsbC1vdGhlcnMnIGxpc3QuCisKKyAgICAgICAgMjAwNy0wMi0xNiAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICAgICAgICAgICogTWFrZWZpbGU6IEFtZW5kIG1ha2UgaW5zdGFsbC1oZWFkZXJzIHRvIGluc3RhbGwgZXZlcnl0aGluZworICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlci4gIEluc3RhbGwgZ251L3N0dWJzLmggYXMKKyAgICAgICAgICAgICAgICBwYXJ0IG9mICdpbnN0YWxsLWhlYWRlcnMnLCBub3QgJ2luc3RhbGwtb3RoZXJzJy4KKyAgICAgICAgICAgICAgICBJZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzIGlzICd5ZXMnLCBpbnN0YWxsIGEgZHVtbXkgY29weSBvZgorICAgICAgICAgICAgICAgIGdudS9zdHVicy5oLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgcmVhbCB0aGluZy4KKyAgICAgICAgICAgICAgICAqIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmg6IE5ldyBmaWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggfCAxMiArKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggM2UwYWU2ZjQzYi4uMjRkYzY2ZDE3YyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQorIHZwYXRoICUuaCAkKHN1YmRpci1kaXJzKQorIAorICMgV2hhdCB0byBpbnN0YWxsLgorLWluc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgaW5zdGFsbC1iaW4tc2NyaXB0ID0KKyAKKysjIElmIHdlJ3JlIGJvb3RzdHJhcHBpbmcsIGluc3RhbGwgYSBkdW1teSBnbnUvc3R1YnMuaCBhbG9uZyB3aXRoIHRoZQorKyMgb3RoZXIgaGVhZGVycywgc28gJ21ha2UgaW5zdGFsbC1oZWFkZXJzJyBwcm9kdWNlcyBhIHVzZWFibGUgaW5jbHVkZQorKyMgdHJlZS4gIE90aGVyd2lzZSwgaW5zdGFsbCBnbnUvc3R1YnMuaCBsYXRlciwgYWZ0ZXIgdGhlIHJlc3Qgb2YgdGhlCisrIyBidWlsZCBpcyBkb25lLgorK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQorK2luc3RhbGwtaGVhZGVyczogJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisrZWxzZQorK2luc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisrZW5kaWYKKysKKyBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQorIGhlYWRlcnMgKz0gZ251L2xpYi1uYW1lcy5oCisgZW5kaWYKK0BAIC0xNTIsNiArMTYxLDE2IEBAIG90aGVyczogJChjb21tb24tb2JqcGZ4KXRlc3RydW4uc2gKKyAKKyBzdWJkaXItc3R1YnMgOj0gJChmb3JlYWNoIGRpciwkKHN1YmRpcnMpLCQoY29tbW9uLW9ianBmeCkkKGRpcikvc3R1YnMpCisgCisrIyBnbnUvc3R1YnMuaCBkZXBlbmRzICh2aWEgdGhlIHN1YmRpciAnc3R1YnMnIHRhcmdldHMpIG9uIGFsbCB0aGUgLm8KKysjIGZpbGVzIGluIEVHTElCQy4gIEZvciBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBhbiBlbXB0eQorKyMgZ251L3N0dWJzLmggaXMgZ29vZCBlbm91Z2guCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisrJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oICQoK2ZvcmNlKQorKwkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKKysJJChJTlNUQUxMX0RBVEEpICQ8ICRACisrCisraW5zdGFsbGVkLXN0dWJzID0KKytlbHNlCisgaWZuZGVmIGFiaS12YXJpYW50cworIGluc3RhbGxlZC1zdHVicyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorIGVsc2UKK0BAIC0xNzgsNiArMTk3LDcgQEAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiAkKCtmb3JjZSkKKyAKKyBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsZWQtc3R1YnMpCisgZW5kaWYKKytlbmRpZgorIAorIAorICMgU2luY2Ugc3R1YnMuaCBpcyBuZXZlciBuZWVkZWQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgd2Ugc2ltcGxpZnkgdGhlCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4xZDJiNjY5YWZmCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCitAQCAtMCwwICsxLDEyIEBACisrLyogUGxhY2Vob2xkZXIgc3R1YnMuaCBmaWxlIGZvciBib290c3RyYXBwaW5nLgorKworKyAgIFdoZW4gYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgR0NDIHJlcXVpcmVzIHRoYXQgdGhlIEVHTElCQworKyAgIGhlYWRlcnMgYmUgaW5zdGFsbGVkLCBidXQgd2UgY2FuJ3QgZnVsbHkgYnVpbGQgRUdMSUJDIHdpdGhvdXQgdGhhdAorKyAgIEdDQy4gIFNvIHdlIHJ1biB0aGUgY29tbWFuZDoKKysKKysgICAgICBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcworKworKyAgIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgR0NDIG5lZWRzLCBidXQgYXZvaWQgYnVpbGRpbmcgY2VydGFpbgorKyAgIGRpZmZpY3VsdCBoZWFkZXJzLiAgVGhlIDxnbnUvc3R1YnMuaD4gaGVhZGVyIGRlcGVuZHMsIHZpYSB0aGUKKysgICBFR0xJQkMgc3ViZGlyICdzdHVicycgbWFrZSB0YXJnZXRzLCBvbiBldmVyeSAubyBmaWxlIGluIEVHTElCQywgYnV0CisrICAgYW4gZW1wdHkgc3R1YnMuaCBsaWtlIHRoaXMgd2lsbCBkbyBmaW5lIGZvciBHQ0MuICAqLworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiMjhjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKQEAgLTAsMCArMSw4MyBAQAorRnJvbSAxNzMyYzdmMjU0NTNjODc5YzE3NzAxODM5ZWYzNDg3NmE3MzU3MDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTU6MTU6MDkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxOS8yNV0gZWdsaWJjOiBDbGVhciBjYWNoZSBsaW5lcyBvbiBwcGM4eHgKKworMjAwNy0wNi0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KKyAgICAgICAgICAgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKKyAgICAgICAgKF9fbGliY19zdGFydF9tYWluKTogRGV0ZWN0IDh4eCBwYXJ0cyBhbmQgY2xlYXIKKyAgICAgICAgX19jYWNoZV9saW5lX3NpemUgaWYgZGV0ZWN0ZWQuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworICAgICAgICAoRExfUExBVEZPUk1fQVVYVik6IExpa2V3aXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgIHwgMTQgKysrKysrKysrKysrKy0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyB8IDE2ICsrKysrKysrKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworaW5kZXggMjNmNWQ1ZDM4OC4uN2U0NTI4OGRiNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKK0BAIC0yNCw5ICsyNCwyMSBAQCBpbnQgX19jYWNoZV9saW5lX3NpemUgYXR0cmlidXRlX2hpZGRlbjsKKyAvKiBTY2FuIHRoZSBBdXggVmVjdG9yIGZvciB0aGUgIkRhdGEgQ2FjaGUgQmxvY2sgU2l6ZSIgZW50cnkuICBJZiBmb3VuZAorICAgIHZlcmlmeSB0aGF0IHRoZSBzdGF0aWMgZXh0ZXJuIF9fY2FjaGVfbGluZV9zaXplIGlzIGRlZmluZWQgYnkgY2hlY2tpbmcKKyAgICBmb3Igbm90IE5VTEwuICBJZiBpdCBpcyBkZWZpbmVkIHRoZW4gYXNzaWduIHRoZSBjYWNoZSBibG9jayBzaXplCistICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICAqLworKyAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0bworKyAgIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8gZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaAorKyAgIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzCisrICAgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwgd2hpY2ggaXMgYSBwcml2aWxlZ2VkCisrICAgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlciBlbXVsYXRlcyBQb3dlclBDIG1mc3ByCisrICAgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgICovCisgI2RlZmluZSBETF9QTEFURk9STV9BVVhWCQkJCQkJICAgICAgXAorICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6CQkJCQkJICAgICAgXAorKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkJCQkJICAgICAgXAorKwkgIHsJCQkJCQkJCSAgICAgIFwKKysJICAgIHVuc2lnbmVkIHB2ciA9IDA7CQkJCQkJICAgICAgXAorKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpKTsJCQkJICAgICAgXAorKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQkJCSAgICAgIFwKKysJICAgICAgYnJlYWs7CQkJCQkJCSAgICAgIFwKKysJICB9CQkJCQkJCQkgICAgICBcCisgCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7CQkJCSAgICAgIFwKKyAJYnJlYWs7CisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworaW5kZXggYWQwMzZjMWU0Yi4uYWZlZTU2YTNkYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworQEAgLTczLDExICs3MywyNSBAQCBfX2xpYmNfc3RhcnRfbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2LAorIAorICAgLyogSW5pdGlhbGl6ZSB0aGUgX19jYWNoZV9saW5lX3NpemUgdmFyaWFibGUgZnJvbSB0aGUgYXV4IHZlY3Rvci4gIEZvciB0aGUKKyAgICAgIHN0YXRpYyBjYXNlLCB3ZSBhbHNvIG5lZWQgX2RsX2h3Y2FwLCBfZGxfaHdjYXAyIGFuZCBfZGxfcGxhdGZvcm0sIHNvIHdlCistICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4gICovCisrICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4KKysKKysgICAgIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8gb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0bworKyAgICAgZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaCBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQKKysgICAgIGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwKKysgICAgIHdoaWNoIGlzIGEgcHJpdmlsZWdlZCBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyCisrICAgICBlbXVsYXRlcyBQb3dlclBDIG1mc3ByIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICovCisgICBmb3IgKEVsZlcgKGF1eHZfdCkgKiBhdiA9IGF1eHZlYzsgYXYtPmFfdHlwZSAhPSBBVF9OVUxMOyArK2F2KQorICAgICBzd2l0Y2ggKGF2LT5hX3R5cGUpCisgICAgICAgeworICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6CisrCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQorKwkgIHsKKysJICAgIHVuc2lnbmVkIHB2ciA9IDA7CisrCisrCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikgOik7CisrCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCisrCSAgICAgIGJyZWFrOworKwkgIH0KKyAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsKKyAJYnJlYWs7CisgI2lmbmRlZiBTSEFSRUQKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTkyMWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSAyY2I3ZTNjYWU0MDIwZjQzMWQ0MjZhZDE3NDBiYjI1NTA2Y2RlODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yNl0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KLQotVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKLQotICAgICAgICAyMDA3LTAyLTIwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZSAoaW5zdGFsbC1oZWFkZXJzKTogUHJlc2VydmUgb2xkIGJlaGF2aW9yOiBkZXBlbmQgb24KLSAgICAgICAgICAgICAgICAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmggb25seSBpZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzCi0gICAgICAgICAgICAgICAgaXMgc2V0OyBvdGhlcndpc2UsIHBsYWNlIGdudS9zdHVicy5oIG9uIHRoZSAnaW5zdGFsbC1vdGhlcnMnIGxpc3QuCi0KLSAgICAgICAgMjAwNy0wMi0xNiAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAgICAgICAgICogTWFrZWZpbGU6IEFtZW5kIG1ha2UgaW5zdGFsbC1oZWFkZXJzIHRvIGluc3RhbGwgZXZlcnl0aGluZwotICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlci4gIEluc3RhbGwgZ251L3N0dWJzLmggYXMKLSAgICAgICAgICAgICAgICBwYXJ0IG9mICdpbnN0YWxsLWhlYWRlcnMnLCBub3QgJ2luc3RhbGwtb3RoZXJzJy4KLSAgICAgICAgICAgICAgICBJZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzIGlzICd5ZXMnLCBpbnN0YWxsIGEgZHVtbXkgY29weSBvZgotICAgICAgICAgICAgICAgIGdudS9zdHVicy5oLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgcmVhbCB0aGluZy4KLSAgICAgICAgICAgICAgICAqIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmg6IE5ldyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQotIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggfCAxMiArKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMWFlMzI4MS4uMjZhYjdiZiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQotIHZwYXRoICUuaCAkKHN1YmRpci1kaXJzKQotIAotICMgV2hhdCB0byBpbnN0YWxsLgotLWluc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gaW5zdGFsbC1iaW4tc2NyaXB0ID0KLSAKLSsjIElmIHdlJ3JlIGJvb3RzdHJhcHBpbmcsIGluc3RhbGwgYSBkdW1teSBnbnUvc3R1YnMuaCBhbG9uZyB3aXRoIHRoZQotKyMgb3RoZXIgaGVhZGVycywgc28gJ21ha2UgaW5zdGFsbC1oZWFkZXJzJyBwcm9kdWNlcyBhIHVzZWFibGUgaW5jbHVkZQotKyMgdHJlZS4gIE90aGVyd2lzZSwgaW5zdGFsbCBnbnUvc3R1YnMuaCBsYXRlciwgYWZ0ZXIgdGhlIHJlc3Qgb2YgdGhlCi0rIyBidWlsZCBpcyBkb25lLgotK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQotK2luc3RhbGwtaGVhZGVyczogJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZWxzZQotK2luc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZW5kaWYKLSsKLSBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQotIGhlYWRlcnMgKz0gZ251L2xpYi1uYW1lcy5oCi0gZW5kaWYKLUBAIC0xNTIsNiArMTYxLDE2IEBAIG90aGVyczogJChjb21tb24tb2JqcGZ4KXRlc3RydW4uc2gKLSAKLSBzdWJkaXItc3R1YnMgOj0gJChmb3JlYWNoIGRpciwkKHN1YmRpcnMpLCQoY29tbW9uLW9ianBmeCkkKGRpcikvc3R1YnMpCi0gCi0rIyBnbnUvc3R1YnMuaCBkZXBlbmRzICh2aWEgdGhlIHN1YmRpciAnc3R1YnMnIHRhcmdldHMpIG9uIGFsbCB0aGUgLm8KLSsjIGZpbGVzIGluIEVHTElCQy4gIEZvciBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBhbiBlbXB0eQotKyMgZ251L3N0dWJzLmggaXMgZ29vZCBlbm91Z2guCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0rJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oICQoK2ZvcmNlKQotKwkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLSsJJChJTlNUQUxMX0RBVEEpICQ8ICRACi0rCi0raW5zdGFsbGVkLXN0dWJzID0KLStlbHNlCi0gaWZuZGVmIGFiaS12YXJpYW50cwotIGluc3RhbGxlZC1zdHVicyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotIGVsc2UKLUBAIC0xNzgsNiArMTk3LDcgQEAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiAkKCtmb3JjZSkKLSAKLSBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsZWQtc3R1YnMpCi0gZW5kaWYKLStlbmRpZgotIAotIAotICMgU2luY2Ugc3R1YnMuaCBpcyBuZXZlciBuZWVkZWQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgd2Ugc2ltcGxpZnkgdGhlCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZDJiNjY5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi1AQCAtMCwwICsxLDEyIEBACi0rLyogUGxhY2Vob2xkZXIgc3R1YnMuaCBmaWxlIGZvciBib290c3RyYXBwaW5nLgotKwotKyAgIFdoZW4gYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgR0NDIHJlcXVpcmVzIHRoYXQgdGhlIEVHTElCQwotKyAgIGhlYWRlcnMgYmUgaW5zdGFsbGVkLCBidXQgd2UgY2FuJ3QgZnVsbHkgYnVpbGQgRUdMSUJDIHdpdGhvdXQgdGhhdAotKyAgIEdDQy4gIFNvIHdlIHJ1biB0aGUgY29tbWFuZDoKLSsKLSsgICAgICBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcwotKwotKyAgIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgR0NDIG5lZWRzLCBidXQgYXZvaWQgYnVpbGRpbmcgY2VydGFpbgotKyAgIGRpZmZpY3VsdCBoZWFkZXJzLiAgVGhlIDxnbnUvc3R1YnMuaD4gaGVhZGVyIGRlcGVuZHMsIHZpYSB0aGUKLSsgICBFR0xJQkMgc3ViZGlyICdzdHVicycgbWFrZSB0YXJnZXRzLCBvbiBldmVyeSAubyBmaWxlIGluIEVHTElCQywgYnV0Ci0rICAgYW4gZW1wdHkgc3R1YnMuaCBsaWtlIHRoaXMgd2lsbCBkbyBmaW5lIGZvciBHQ0MuICAqLwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzVkODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSAxMDhiM2ExZGY5NmE4NTUyMmM1MmEwZGVjMDMyZmMyYzEwNmY1ZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMC8yNV0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorCisyMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KKworICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworQEAgLTIsNiArMiw3IEBAIGxpYmMgeworICAgR0xJQkNfMi4yIHsKKyAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKKyAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OworKyAgICBfX2Zwc2NyX3ZhbHVlczsKKyAKKyAgICAgIyBhKgorICAgICBhbHBoYXNvcnQ2NDsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitpbmRleCA1ZjExYmM3MzdiLi4yZmQyMTdiMDBiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitAQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKKyAKKyAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQorICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+CisrCisrICAgICAgIC5kYXRhCisrICAgICAgIC5hbGlnbiAzCisrICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKKysgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0CisrICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAorK19fX2Zwc2NyX3ZhbHVlczoKKysgICAgICAgLmxvbmcgMAorKyAgICAgICAubG9uZyAweDgwMDAwCisrd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKKysKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtY2hlcnJ5LXBpY2tlZC1mcm9tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzQ0NTczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGIyZWQ5MDZlYzg2NDU4M2I0MzM3OWVmOWFkMmI1NjMwYzEyMzI1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxMDozMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI2XSBlZ2xpYmM6IGNoZXJyeS1waWNrZWQgZnJvbQotCi1odHRwOi8vd3d3LmVnbGliYy5vcmcvYXJjaGl2ZXMvcGF0Y2hlcy9tc2cwMDc3Mi5odG1sCi0KLU5vdCB5ZXQgbWVyZ2VkIGludG8gZ2xpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSByZXNvbHYvcmVzX2xpYmMuYyB8IDE0ICsrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Jlc29sdi9yZXNfbGliYy5jIGIvcmVzb2x2L3Jlc19saWJjLmMKLWluZGV4IGE0YjM3NmYuLjMyNTZlMTIgMTAwNjQ0Ci0tLS0gYS9yZXNvbHYvcmVzX2xpYmMuYwotKysrIGIvcmVzb2x2L3Jlc19saWJjLmMKLUBAIC0yMSwxMSArMjEsMTMgQEAKLSAjaW5jbHVkZSA8YXRvbWljLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KLSAjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0gI2luY2x1ZGUgPGxpYmMtbG9jay5oPgotIAotK19fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZCAoc3RhdGljLCBsb2NrKTsKLSBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Jlc19pbml0c3RhbXAgYXR0cmlidXRlX2hpZGRlbjsKLSAvKiBXZSBoYXZlIGF0b21pYyBpbmNyZW1lbnQgb3BlcmF0aW9ucyBvbiA2NC1iaXQgcGxhdGZvcm1zLiAgKi8KLSAjaWYgX19XT1JEU0laRSA9PSA2NAotQEAgLTMzLDcgKzM1LDYgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19yZXNfaW5pdHN0YW1wIGF0dHJpYnV0ZV9oaWRkZW47Ci0gIyBkZWZpbmUgYXRvbWljaW5jdW5sb2NrKGxvY2spICh2b2lkKSAwCi0gIyBkZWZpbmUgYXRvbWljaW5jKHZhcikgY2F0b21pY19pbmNyZW1lbnQgKCYodmFyKSkKLSAjZWxzZQotLV9fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZCAoc3RhdGljLCBsb2NrKTsKLSAjIGRlZmluZSBhdG9taWNpbmNsb2NrKGxvY2spIF9fbGliY19sb2NrX2xvY2sgKGxvY2spCi0gIyBkZWZpbmUgYXRvbWljaW5jdW5sb2NrKGxvY2spIF9fbGliY19sb2NrX3VubG9jayAobG9jaykKLSAjIGRlZmluZSBhdG9taWNpbmModmFyKSArK3ZhcgotQEAgLTkyLDcgKzkzLDE4IEBAIHJlc19pbml0KHZvaWQpIHsKLSBpbnQKLSBfX3Jlc19tYXliZV9pbml0IChyZXNfc3RhdGUgcmVzcCwgaW50IHByZWluaXQpCi0gewotKwlzdGF0aWMgdGltZV90IGxhc3RfbXRpbWU7Ci0rCXN0cnVjdCBzdGF0IHN0YXRidWY7Ci0rCWludCByZXQ7Ci0rCi0gCWlmIChyZXNwLT5vcHRpb25zICYgUkVTX0lOSVQpIHsKLSsJCXJldCA9IHN0YXQgKF9QQVRIX1JFU0NPTkYsICZzdGF0YnVmKTsKLSsJCV9fbGliY19sb2NrX2xvY2sgKGxvY2spOwotKwkJaWYgKChyZXQgPT0gMCkgJiYgKGxhc3RfbXRpbWUgIT0gc3RhdGJ1Zi5zdF9tdGltZSkpIHsKLSsJCQlsYXN0X210aW1lID0gc3RhdGJ1Zi5zdF9tdGltZTsKLSsJCQlhdG9taWNpbmMgKF9fcmVzX2luaXRzdGFtcCk7Ci0rCQl9Ci0rCQlfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotIAkJaWYgKF9fcmVzX2luaXRzdGFtcCAhPSByZXNwLT5fdS5fZXh0LmluaXRzdGFtcCkgewotIAkJCWlmIChyZXNwLT5uc2NvdW50ID4gMCkKLSAJCQkJX19yZXNfaWNsb3NlIChyZXNwLCB0cnVlKTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWE3MzkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIDAwMGFiNTE4YWExMjY5NzE0YmMwYTlhNDYzM2IwYTUzOGZhZTkxZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAotU3ViamVjdDogW1BBVENIIDIxLzI2XSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAotCi0yMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgotICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgotICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0gICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1pbmRleCA5OGVjMmIzLi5iMzg0YWUwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOwotIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCi0gICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZwotICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKLS0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCi0rICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCi0rICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCi0rICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKLSsgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKLSsgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKLSsgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KLSAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCi0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCi0rCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCi0rCSAgewkJCQkJCQkJICAgICAgXAotKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCi0rCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCi0rCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAotKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAotKwkgIH0JCQkJCQkJCSAgICAgIFwKLSAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAotIAlicmVhazsKLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1pbmRleCAwZWZkMjk3Li44Y2MwZWY4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1AQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQotICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKLS0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KLSsgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgotKwotKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCi0rICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAotKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAotKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKLSsgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KLSAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCi0gICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKLSAgICAgICB7Ci0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCi0rCSAgewotKwkgICAgdW5zaWduZWQgcHZyID0gMDsKLSsKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKLSsJICAgICAgYnJlYWs7Ci0rCSAgfQotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwotIAlicmVhazsKLSAjaWZuZGVmIFNIQVJFRAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZTM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKQEAgLTAsMCArMSwxMjMgQEAKK0Zyb20gMzM5MmVlODNiMDEzMmMwODlkZmZiMWU5ODkyYjRiMjUyY2UxZWMwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjU3OjAxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMjVdIGVnbGliYzogSW5zdGFsbCBQSUMgYXJjaGl2ZXMKKworRm9yd2FyZCBwb3J0IGZyb20gZWdsaWJjCisKKzIwMDgtMDItMDcgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICogTWFrZXJ1bGVzIChpbnN0YWxsLWV4dHJhcywgaW5zdGFsbC1tYXApOiBOZXcgdmFyaWFibGVzLgorICAgICAgICAoaW5zdGFsbGVkLWxpYmNzKTogQWRkIGxpYmNfcGljLmEuCisgICAgICAgIChpbnN0YWxsLWxpYik6IEluY2x1ZGUgX3BpYy5hIGZpbGVzIGZvciB2ZXJzaW9uZWQgc2hhcmVkCisgICAgICAgIGxpYnJhcmllcy4KKyAgICAgICAgKGluc3RhbGwtbWFwLW5vc3ViZGlyLCBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcik6IEFkZCBydWxlcyBmb3IKKyAgICAgICAgaW5zdGFsbGluZyBleHRyYSBmaWxlcy4KKyAgICAgICAgKGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyKTogRGVwZW5kIG9uIGluc3RhbGwtbWFwLW5vc3ViZGlyIGFuZAorICAgICAgICBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpci4KKworMjAwOC0wNC0wMSAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICogTWFrZXJ1bGVzIChpbnN0YWxsLWxpYik6IERvbid0IGluc3RhbGwgbGlicHRocmVhZF9waWMuYS4KKyAgICAgICAgKGluc3RhbGwtbWFwKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5tYXAuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZXJ1bGVzIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlcnVsZXMgYi9NYWtlcnVsZXMKK2luZGV4IDliYjcwN2MxNjguLjc0Y2JlZmI5YmEgMTAwNjQ0CistLS0gYS9NYWtlcnVsZXMKKysrKyBiL01ha2VydWxlcworQEAgLTc3NSw2ICs3NzUsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQorICQoY29tbW9uLW9ianBmeClsaWJjLnNvOiAkKGNvbW1vbi1vYmpwZngpbGliYy5tYXAKKyBlbmRpZgorIGNvbW1vbi1nZW5lcmF0ZWQgKz0gbGliYy5zbyBsaWJjX3BpYy5vcworK2lmbmRlZiBzdWJkaXIKKytpbnN0YWxsLWV4dHJhcyA6PSBzb2luaXQubyBzb2ZpbmkubworK2VuZGlmCisgaWZkZWYgbGliYy5zby12ZXJzaW9uCisgJChjb21tb24tb2JqcGZ4KWxpYmMuc28kKGxpYmMuc28tdmVyc2lvbik6ICQoY29tbW9uLW9ianBmeClsaWJjLnNvCisgCSQobWFrZS1saW5rKQorQEAgLTEwMjYsNiArMTAyOSw3IEBAIGVuZGlmCisgCisgaW5zdGFsbDogY2hlY2staW5zdGFsbC1zdXBwb3J0ZWQKKyAKKytpbnN0YWxsZWQtbGliY3MgOj0gJChpbnN0YWxsZWQtbGliY3MpICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLmEKKyBpbnN0YWxsOiAkKGluc3RhbGxlZC1saWJjcykKKyAkKGluc3RhbGxlZC1saWJjcyk6ICQoaW5zdF9saWJkaXIpL2xpYiQobGlicHJlZml4KSU6IGxpYiAkKCtmb3JjZSkKKyAJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCitAQCAtMTA1NCw2ICsxMDU4LDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCisgaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkIDo9ICQoZmlsdGVyICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCisgaW5zdGFsbC1saWIuc28tdW52ZXJzaW9uZWQgOj0gJChmaWx0ZXItb3V0ICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCisgCisrIyBJbnN0YWxsIHRoZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBsaWJyYXJpZXMsIGFuZCBjb3JyZXNwb25kaW5nCisrIyAubWFwIGZpbGVzLgorKyMgbGlicHRocmVhZF9waWMuYSBicmVha3MgbWtsaWJzLCBzbyBkb24ndCBpbnN0YWxsIGl0IGFuZCBpdHMgbWFwLgorK2luc3RhbGwtbGliIDo9ICQoaW5zdGFsbC1saWIpICQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkOiUuc289JV9waWMuYSkKKytpbnN0YWxsLWxpYiA6PSAkKGZpbHRlci1vdXQgbGlicHRocmVhZF9waWMuYSwkKGluc3RhbGwtbGliKSkKKysjIERlc3BpdGUgaGF2aW5nIGEgc29uYW1lIGxpYmh1cmR1c2VyIGFuZCBsaWJtYWNodXNlciBkbyBub3QgdXNlIHN5bWJvbAorKyMgdmVyc2lvbmluZywgc28gZG9uJ3QgaW5zdGFsbCB0aGUgY29ycmVzcG9uZGluZyAubWFwIGZpbGVzLgorK2lmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCisraW5zdGFsbC1tYXAgOj0gJChwYXRzdWJzdCAlLnNvLCUubWFwLFwKKysJCQkkKGZvcmVhY2ggTCwkKGluc3RhbGwtbGliLnNvLXZlcnNpb25lZCksJChub3RkaXIgJEwpKSkKKytpbnN0YWxsLW1hcCA6PSAkKGZpbHRlci1vdXQgbGliaHVyZHVzZXIubWFwIGxpYm1hY2h1c2VyLm1hcCBsaWJwdGhyZWFkLm1hcCwkKGluc3RhbGwtbWFwKSkKKytpZm5kZWYgc3ViZGlyCisraW5zdGFsbC1tYXAgOj0gJChpbnN0YWxsLW1hcCkgbGliYy5tYXAKKytlbmRpZgorK2VuZGlmCisrCisgIyBGb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgd2UgaW5zdGFsbCB0aHJlZSBmaWxlczoKKyAjCSQoaW5zdF9saWJkaXIpL2xpYmZvby5zbwktLSBmb3IgbGlua2luZywgc3ltbGluayBvciBsZCBzY3JpcHQKKyAjCSQoaW5zdF9zbGliZGlyKS9saWJmb28uc28uTk4JLS0gZm9yIGxvYWRpbmcgYnkgU09OQU1FLCBzeW1saW5rCitAQCAtMTI5OCw5ICsxMzE4LDIyIEBAICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzLW5vbmgpKTogJChpbnN0X2luY2x1ZGVkaXIpLyU6IFwKKyBlbmRpZgkjIGhlYWRlcnMtbm9uaAorIGVuZGlmCSMgaGVhZGVycworIAorK2lmZGVmIGluc3RhbGwtbWFwCisrJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvLCQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSk6IFwKKysgICQoaW5zdF9saWJkaXIpL2xpYiVfcGljLm1hcDogJChjb21tb24tb2JqcGZ4KWxpYiUubWFwICQoK2ZvcmNlKQorKwkkKGRvLWluc3RhbGwpCisrZW5kaWYKKysKKytpZmRlZiBpbnN0YWxsLWV4dHJhcworKyQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLywkKGluc3RhbGwtZXh0cmFzKSk6IFwKKysgICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLyUubzogJChlbGYtb2JqcGZ4KSUub3MgJCgrZm9yY2UpCisrCSQoZG8taW5zdGFsbCkKKytlbmRpZgorKworIC5QSE9OWTogaW5zdGFsbC1iaW4tbm9zdWJkaXIgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyIFwKKyAJaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpciBpbnN0YWxsLXNiaW4tbm9zdWJkaXIgaW5zdGFsbC1saWItbm9zdWJkaXIgXAorLQlpbnN0YWxsLWRhdGEtbm9zdWJkaXIgaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyCisrCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIgaW5zdGFsbC1tYXAtbm9zdWJkaXIgXAorKwlpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcgorIGluc3RhbGwtYmluLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfYmluZGlyKS8sJChpbnN0YWxsLWJpbikpCisgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfYmluZGlyKS8sJChpbnN0YWxsLWJpbi1zY3JpcHQpKQorIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXI6IFwKK0BAIC0xMzEzLDYgKzEzNDYsMTAgQEAgaW5zdGFsbC1kYXRhLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfZGF0YWRpcikvLCQoaW5zdGFsbC1kYXRhKSkKKyBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzKSkKKyBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsLW90aGVycykKKyBpbnN0YWxsLW90aGVycy1wcm9ncmFtcy1ub3N1YmRpcjogJChpbnN0YWxsLW90aGVycy1wcm9ncmFtcykKKytpbnN0YWxsLW1hcC1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvLFwKKysJCSAgICAgICAkKHBhdHN1YnN0IGxpYiUubWFwLGxpYiVfcGljLm1hcCwkKGluc3RhbGwtbWFwKSkpCisraW5zdGFsbC1leHRyYXMtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLyxcCisrCQkgICAgICAgJChpbnN0YWxsLWV4dHJhcykpCisgCisgIyBXZSBuZWVkIGFsbCB0aGUgYC1ub3N1YmRpcicgdGFyZ2V0cyBzbyB0aGF0IGBpbnN0YWxsJyBpbiB0aGUgcGFyZW50CisgIyBkb2Vzbid0IGRlcGVuZCBvbiBzZXZlcmFsIHRoaW5ncyB3aGljaCBlYWNoIGl0ZXJhdGUgb3ZlciB0aGUgc3ViZGlycy4KK0BAIC0xMzIyLDcgKzEzNTksOCBAQCBpbnN0YWxsLSU6OiBpbnN0YWxsLSUtbm9zdWJkaXIgOworIAorIC5QSE9OWTogaW5zdGFsbCBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcgorIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIgaW5zdGFsbC1kYXRhLW5vc3ViZGlyIFwKKy0JCQkgICAgaW5zdGFsbC1saWItbm9zdWJkaXIgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXIKKysJCQkgICAgaW5zdGFsbC1saWItbm9zdWJkaXIgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXIgXAorKwkJCSAgICBpbnN0YWxsLW1hcC1ub3N1YmRpciBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcgorIGlmZXEgKCQoYnVpbGQtcHJvZ3JhbXMpLHllcykKKyBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1iaW4tbm9zdWJkaXIgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyIFwKKyAJCQkgICAgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpciBpbnN0YWxsLXNiaW4tbm9zdWJkaXIgXAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOGEyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1NjYgQEAKK0Zyb20gZDk3NTMzZGMyMDFjZmQ4NjM3NjViMWE2N2EyN2ZkZTNlMjYyMmRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjMzOjQ5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjIvMjVdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICsrLQorIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsb2NhbGUvbG9jYWxlaW5mby5oICAgICAgICAgICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgfCAgNiArKysrKworIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKysrLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKysrKy0tLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jICAgICB8IDMxICsrKysrKysrKysrKysrKy0tLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysrCisgbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyAgICAgfCAgNSArKystCisgbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgbG9jYWxlL3NldGxvY2FsZS5jICAgICAgICAgICAgfCAzMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYworCitkaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCitpbmRleCA5OGVlNzYyNzJkLi5iYzNhZmIyMjQ4IDEwMDY0NAorLS0tIGEvbG9jYWxlL01ha2VmaWxlCisrKysgYi9sb2NhbGUvTWFrZWZpbGUKK0BAIC0yNiw3ICsyNiw4IEBAIGhlYWRlcnMJCT0gbGFuZ2luZm8uaCBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIFwKKyAJCSAgYml0cy90eXBlcy9sb2NhbGVfdC5oIGJpdHMvdHlwZXMvX19sb2NhbGVfdC5oCisgcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKKyAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAorLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCisrCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAorKwkJICBjYXRuYW1lcworIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCisgY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKKyAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQorZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi45ZmFkMzU3ZGIxCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvY2F0bmFtZXMuYworQEAgLTAsMCArMSw0OCBAQAorKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCisrCisrLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLworK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrICAgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgICBjYXRlZ29yeV9uYW1lLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYgREVGSU5FX0NBVEVHT1JZCisrICAgIH0KKysgIH07CisrCisrY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCisrICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgIH07CisrCisrLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCisrICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmCURFRklORV9DQVRFR09SWQorKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQorKyAgfTsKK2RpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAoraW5kZXggNGUxYzhjNTY4YS4uZjdlZDk0NmYxYyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKKysrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKK0BAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKKyAgICB1bnVzZWQuICBXZSBjYW4gbWFuYWdlIHRoaXMgcGxheWluZyBzb21lIHRyaWNrcyB3aXRoIHdlYWsgcmVmZXJlbmNlcy4KKyAgICBCdXQgd2l0aCB0aHJlYWQtbG9jYWwgbG9jYWxlIHNldHRpbmdzLCBpdCBiZWNvbWVzIHF1aXRlIHVuZ2Fpbmx5IHVubGVzcworICAgIHdlIGNhbiB1c2UgX190aHJlYWQgdmFyaWFibGVzLiAgU28gb25seSBpbiB0aGF0IGNhc2UgZG8gd2UgYXR0ZW1wdCB0aGlzLiAgKi8KKy0jaWZuZGVmIFNIQVJFRAorKyNpZiAhZGVmaW5lZCBTSEFSRUQgJiYgIWRlZmluZWQgSU5fR0xJQkNfTE9DQUxFREVGCisgIyBpbmNsdWRlIDx0bHMuaD4KKyAjIGRlZmluZSBOTF9DVVJSRU5UX0lORElSRUNUCTEKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCitpbmRleCBlNTVhYjg2ZTI4Li4wZjg3ZTZkZDI4IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCitAQCAtMTksNyArMTksOSBAQAorICNpbmNsdWRlIDxlcnJvci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgI2luY2x1ZGUgPHNwYXduLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0xNTYsNiArMTU4LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCisgICByZXR1cm4gY2xvc2VkaXIgKGRpcik7CisgfQorIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucworICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCisgc3RhdGljCitAQCAtMjA0LDYgKzIwNyw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCisgICAgIH0KKyAgIHJldHVybiBOVUxMOworIH0KKysjZW5kaWYKKyAKKyAvKiBPcGVucyBhIGNoYXJtYXAgZm9yIHJlYWRpbmcsIGdpdmVuIGl0cyBuYW1lIChub3QgYW4gYWxpYXMgbmFtZSkuICAqLworIEZJTEUgKgorQEAgLTIyNiw2ICsyMzAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN0cmVhbTsKKyAKKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAgIG1lbWNweSAocCwgIi5neiIsIDQpOworICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImd6aXAiKTsKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKK0BAIC0yMzUsNiArMjQwLDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN0cmVhbTsKKysjZW5kaWYKKyAKKyAgIHJldHVybiBOVUxMOworIH0KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworaW5kZXggY2VjODQ4Y2I3Yy4uZmNkNzY4ZWI3ZCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKK0BAIC0zNTAsNyArMzUwLDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCisgICAgIH0KKyAgIGlmICh3Y3MgIT0gTlVMTCkKKyAgICAgeworLSAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuICgod2NoYXJfdCAqKSB3Y3MpOworKyAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuX3VpbnQzMiAod2NzKTsKKyAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKKyAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLworICAgICAgIGlmIChud2NzID09IDApCitAQCAtMTc3Niw4ICsxNzc2LDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOworIAorIAkgICAgICBpZiAoKCplcHRyKS0+bndjcyA9PSBydW5wLT5ud2NzKQorIAkJeworLQkJICBpbnQgYyA9IHdtZW1jbXAgKCh3Y2hhcl90ICopICgqZXB0ciktPndjcywKKy0JCQkJICAgKHdjaGFyX3QgKikgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKKysJCSAgaW50IGMgPSB3bWVtY21wX3VpbnQzMiAoKCplcHRyKS0+d2NzLCBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworIAorIAkJICBpZiAoYyA9PSAwKQorIAkJICAgIHsKK0BAIC0yMDEwLDkgKzIwMDksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCisgCSAgICAgb25lIGNvbnNlY3V0aXZlIGVudHJ5LiAgKi8KKyAJICBpZiAocnVucC0+d2NuZXh0ICE9IE5VTEwKKyAJICAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKKy0JICAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAorLQkJCSAgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKKy0JCQkgIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisrCSAgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCisrCQkJCSBydW5wLT53Y25leHQtPndjcywKKysJCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisgCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCisgCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQorIAkgICAgeworQEAgLTIwMzYsOSArMjAzNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJCXJ1bnAgPSBydW5wLT53Y25leHQ7CisgCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkJICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJCSAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKysJCSAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJCXJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkJcnVucC0+bndjcyAtIDEpID09IDAKKyAJCSAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOworIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKK2luZGV4IGRmMjY2YzIwZDYuLjA1YzAxNTJlYzkgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKK0BAIC05MjYsNyArOTI2LDcgQEAgY3R5cGVfb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgIGFsbG9jYXRlX2FycmF5cyAoY3R5cGUsIGNoYXJtYXAsIGN0eXBlLT5yZXBlcnRvaXJlKTsKKyAKKyAgIGRlZmF1bHRfbWlzc2luZ19sZW4gPSAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZworLQkJCSA/IHdjc2xlbiAoKHdjaGFyX3QgKikgY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKKysJCQkgPyB3Y3NsZW5fdWludDMyIChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorIAkJCSA6IDApOworIAorICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7CitAQCAtMTkzNyw3ICsxOTM3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKKyAJICAgIGlnbm9yZSA9IDE7CisgCSAgZWxzZQorIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLworLQkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuICgod2NoYXJfdCAqKSB0b193c3RyKSAqIDQpOworKwkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuX3VpbnQzMiAodG9fd3N0cikgKiA0KTsKKyAKKyAJICBmaXJzdCA9IDA7CisgCX0KK0BAIC0yNDcxLDggKzI0NzEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOworIAkgICAgfQorIAorIAloYW5kbGVfdG9rX2RpZ2l0OgorLQkgIGNsYXNzX2JpdCA9IF9JU3dkaWdpdDsKKy0JICBjbGFzczI1Nl9iaXQgPSBfSVNkaWdpdDsKKysJICBjbGFzc19iaXQgPSBCSVR3ICh0b2tfZGlnaXQpOworKwkgIGNsYXNzMjU2X2JpdCA9IEJJVCAodG9rX2RpZ2l0KTsKKyAJICBoYW5kbGVfZGlnaXRzID0gMTsKKyAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOworIAorQEAgLTM5MjksOCArMzkyOSw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAKKyAJICB3aGlsZSAoaWR4IDwgbnVtYmVyKQorIAkgICAgeworLQkgICAgICBpbnQgcmVzID0gd2NzY21wICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbaWR4XS0+ZnJvbSwKKy0JCQkJKGNvbnN0IHdjaGFyX3QgKikgcnVucC0+ZnJvbSk7CisrCSAgICAgIGludCByZXMgPSB3Y3NjbXBfdWludDMyIChzb3J0ZWRbaWR4XS0+ZnJvbSwgcnVucC0+ZnJvbSk7CisgCSAgICAgIGlmIChyZXMgPT0gMCkKKyAJCXsKKyAJCSAgcmVwbGFjZSA9IDE7CitAQCAtMzk2NywxMSArMzk2NiwxMSBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgICAgICAgZm9yIChzaXplX3QgY250ID0gMDsgY250IDwgbnVtYmVyOyArK2NudCkKKyAJeworIAkgIHN0cnVjdCB0cmFuc2xpdF90b190ICpzcnVucDsKKy0JICBmcm9tX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgZnJvbV9sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgdG9fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB0b19sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorIAkgIC8qIFBsdXMgb25lIGZvciB0aGUgZXh0cmEgTlVMIGNoYXJhY3RlciBtYXJraW5nIHRoZSBlbmQgb2YKK0BAIC0zOTk1LDE4ICszOTk0LDE4IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAJICBjdHlwZS0+dHJhbnNsaXRfZnJvbV9pZHhbY250XSA9IGZyb21fbGVuOworIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAKKy0JICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CistCSAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCistCQkgICAoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKKysJICBsZW4gPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworKwkgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKysJCQkgIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworIAkgIGZyb21fbGVuICs9IGxlbjsKKyAKKyAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47CisgCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87CisgCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOworLQkgICAgICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAorLQkJICAgICAgIChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIsIGxlbik7CisrCSAgICAgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKKysJICAgICAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCisrCQkJICAgICAgc3J1bnAtPnN0ciwgbGVuKTsKKyAJICAgICAgdG9fbGVuICs9IGxlbjsKKyAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKKyAJICAgIH0KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworaW5kZXggMzJlOWM0MWUzNS4uNmE2MWZjZWRlYiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKK0BAIC0yMTUsOCArMjE1LDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworIAl9CisgICAgICAgZWxzZQorIAl7CisrCSAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHd0X2ZtdF9hbXBtW10KKysJICAgID0geyAnJScsJ0knLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywnJScsJ3AnLDAgfTsKKyAJICB0aW1lLT50X2ZtdF9hbXBtID0gIiVJOiVNOiVTICVwIjsKKy0JICB0aW1lLT53dF9mbXRfYW1wbSA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVJOiVNOiVTICVwIjsKKysJICB0aW1lLT53dF9mbXRfYW1wbSA9IHd0X2ZtdF9hbXBtOworIAl9CisgICAgIH0KKyAKK0BAIC0yMjYsNyArMjI4LDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CisgICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKKyAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKKyAgICAgICBzaXplX3QgaWR4OworLSAgICAgIHdjaGFyX3QgKndzdHI7CisrICAgICAgdWludDMyX3QgKndzdHI7CisgCisgICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQorIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKK0BAIC00NjQsMTggKzQ2NiwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAJICAgIH0KKyAKKyAJICAvKiBOb3cgZ2VuZXJhdGUgdGhlIHdpZGUgY2hhcmFjdGVyIG5hbWUgYW5kIGZvcm1hdC4gICovCistCSAgd3N0ciA9IHdjc2NociAoKHdjaGFyX3QgKikgdGltZS0+d2VyYVtpZHhdLCBMJzonKTsvKiBlbmQgZGlyZWN0aW9uICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBvZmZzZXQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIHN0YXJ0ICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBlbmQgKi8KKysJICB3c3RyID0gd2NzY2hyX3VpbnQzMiAodGltZS0+d2VyYVtpZHhdLCBMJzonKTsgLyogZW5kIGRpcmVjdGlvbiAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIG9mZnNldCAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIHN0YXJ0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgZW5kICovCisgCSAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKKy0JICAgICAgd3N0ciA9IHdjc2NociAod3N0ciArIDEsIEwnOicpOwkvKiBlbmQgbmFtZSAqLworKwkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gd3N0ciArIDE7CisrCSAgICAgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6Jyk7IC8qIGVuZCBuYW1lICovCisgCSAgICAgIGlmICh3c3RyICE9IE5VTEwpCisgCQl7CisgCQkgICp3c3RyID0gTCdcMCc7CistCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKKysJCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gd3N0ciArIDE7CisgCQl9CisgCSAgICAgIGVsc2UKKyAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQorQEAgLTUzNCw3ICs1MzYsMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CisgICBpZiAodGltZS0+ZGF0ZV9mbXQgPT0gTlVMTCkKKyAgICAgdGltZS0+ZGF0ZV9mbXQgPSAiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOworICAgaWYgKHRpbWUtPndkYXRlX2ZtdCA9PSBOVUxMKQorLSAgICB0aW1lLT53ZGF0ZV9mbXQgPSAoY29uc3QgdWludDMyX3QgKikgTCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CisrICAgIHsKKysgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd2RhdGVfZm10W10gPQorKwl7ICclJywnYScsJyAnLAorKwkgICclJywnYicsJyAnLAorKwkgICclJywnZScsJyAnLAorKwkgICclJywnSCcsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLAorKwkgICclJywnWicsJyAnLAorKwkgICclJywnWScsMCB9OworKyAgICAgIHRpbWUtPndkYXRlX2ZtdCA9IHdkYXRlX2ZtdDsKKysgICAgfQorIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworaW5kZXggNTJiMzQwOTYzYS4uMWE4YmNlMTdiNCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKK0BAIC01OTUsNyArNTk1LDcgQEAgZ2V0X3N0cmluZyAoc3RydWN0IGxpbmVyZWFkZXIgKmxyLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIHsKKyAgIGludCByZXR1cm5fd2lkZXN0ciA9IGxyLT5yZXR1cm5fd2lkZXN0cjsKKyAgIGNoYXIgKmJ1ZjsKKy0gIHdjaGFyX3QgKmJ1ZjIgPSBOVUxMOworKyAgdWludDMyX3QgKmJ1ZjIgPSBOVUxMOworICAgc2l6ZV90IGJ1ZmFjdDsKKyAgIHNpemVfdCBidWZtYXggPSA1NjsKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKK2luZGV4IDZhY2MxMzQyYzcuLmRmODc3NDBmOGIgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkICgqYXJncF9wcm9ncmFtX3ZlcnNpb25faG9vaykgKEZJTEUgKiwgc3RydWN0IGFyZ3Bfc3RhdGUgKikgPSBwcmludF92ZXJzaW9uOworICNkZWZpbmUgT1BUX0xJU1RfQVJDSElWRSAzMDkKKyAjZGVmaW5lIE9QVF9MSVRUTEVfRU5ESUFOIDQwMAorICNkZWZpbmUgT1BUX0JJR19FTkRJQU4gNDAxCisrI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwMgorIAorIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLworIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KK0BAIC0xNDMsNiArMTQ0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAorICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAorICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LAorKyAgeyAidWludDMyLWFsaWduIiwgT1BUX1VJTlQzMl9BTElHTiwgIkFMSUdOTUVOVCIsIDAsCisrICAgIE5fKCJTZXQgdGhlIHRhcmdldCdzIHVpbnQzMl90IGFsaWdubWVudCBpbiBieXRlcyAoZGVmYXVsdCA0KSIpIH0sCisgICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQorIH07CisgCitAQCAtMjMyLDEyICsyMzUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgIGN0eXBlIGxvY2FsZS4gIChQMTAwMy4yIDQuMzUuNS4yKSAgKi8KKyAgIHNldGxvY2FsZSAoTENfQ1RZUEUsICJQT1NJWCIpOworIAorKyNpZm5kZWYgTk9fU1lTQ09ORgorICAgLyogTG9vayB3aGV0aGVyIHRoZSBzeXN0ZW0gcmVhbGx5IGFsbG93cyBsb2NhbGUgZGVmaW5pdGlvbnMuICBQT1NJWAorICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQorICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCisgICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCisgICAgIFdJVEhfQ1VSX0xPQ0FMRSAoZXJyb3IgKDMsIDAsIF8oIlwKKyBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpKTsKKysjZW5kaWYKKyAKKyAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KKyAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOworQEAgLTMyOCw2ICszMzMsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQorICAgICBjYXNlIE9QVF9CSUdfRU5ESUFOOgorICAgICAgIHNldF9iaWdfZW5kaWFuICh0cnVlKTsKKyAgICAgICBicmVhazsKKysgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgorKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKKysgICAgICBicmVhazsKKyAgICAgY2FzZSAnYyc6CisgICAgICAgZm9yY2Vfb3V0cHV0ID0gMTsKKyAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworaW5kZXggMDk5MGVmMTFiZS4uNjgzNDIyYzkwOCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKK0BAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLAorICAgIG1hY2hpbmUgcnVubmluZyBsb2NhbGVkZWYuICAqLworIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7CisgCisrLyogVGhlIHRhcmdldCdzIHZhbHVlIG9mIF9fYWxpZ25fXyh1aW50MzJfdCkgLSAxLiAgKi8KKyt1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2sgPSAzOworKworIC8qIFdoZW4gY2FsbGVkIG91dHNpZGUgYSBzdGFydF9sb2NhbGVfc3RydWN0dXJlL2VuZF9sb2NhbGVfc3RydWN0dXJlCisgICAgb3Igc3RhcnRfbG9jYWxlX3ByZWx1ZGUvZW5kX2xvY2FsZV9wcmVsdWRlIGJsb2NrLCByZWNvcmQgdGhhdCB0aGUKKyAgICBuZXh0IGJ5dGUgaW4gRklMRSdzIG9ic3RhY2sgd2lsbCBiZSB0aGUgZmlyc3QgYnl0ZSBvZiBhIG5ldyBlbGVtZW50LgorQEAgLTYyMSw3ICs2MjQsNyBAQCBhZGRfbG9jYWxlX3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHJpbmcpCisgdm9pZAorIGFkZF9sb2NhbGVfd3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCB1aW50MzJfdCAqc3RyaW5nKQorIHsKKy0gIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3RyaW5nKSArIDEpOworKyAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuX3VpbnQzMiAoc3RyaW5nKSArIDEpOworIH0KKyAKKyAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK2luZGV4IDM0MDdlMTNjMTMuLjBiYjU1NmNhZjggMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCitAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gdm9pZCB3cml0ZV9hbGxfY2F0ZWdvcmllcyAoc3RydWN0IGxvY2FsZWRlZl90ICpkZWZpbml0aW9ucywKKyAKKyBleHRlcm4gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKytleHRlcm4gdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrOworKworIC8qIENoYW5nZSB0aGUgb3V0cHV0IHRvIGJlIGJpZy1lbmRpYW4gaWYgQklHX0VORElBTiBpcyB0cnVlIGFuZAorICAgIGxpdHRsZS1lbmRpYW4gb3RoZXJ3aXNlLiAgKi8KKyBzdGF0aWMgaW5saW5lIHZvaWQKK0BAIC04OSw3ICs5MSw4IEBAIG1heWJlX3N3YXBfdWludDMyICh1aW50MzJfdCB2YWx1ZSkKKyB9CisgCisgLyogTGlrZXdpc2UsIGJ1dCBtdW5nZSBhbiBhcnJheSBvZiBOIHVpbnQzMl90cyBzdGFydGluZyBhdCBBUlJBWS4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyB7CisgICBpZiAoc3dhcF9lbmRpYW5uZXNzX3ApCitAQCAtOTksNyArMTAyLDggQEAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCisgCisgLyogTGlrZSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSwgYnV0IHRoZSBhcnJheSBvZiBOIGVsZW1lbnRzIGlzIGF0CisgICAgdGhlIGVuZCBvZiBPQlNUQUNLJ3MgY3VycmVudCBvYmplY3QuICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0YXRpYyB2b2lkCisrX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgbWF5YmVfc3dhcF91aW50MzJfb2JzdGFjayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHNpemVfdCBuKQorIHsKKyAgIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICgodWludDMyX3QgKikgb2JzdGFja19uZXh0X2ZyZWUgKG9ic3RhY2spIC0gbiwgbik7CitAQCAtMjc2LDQgKzI4MCw1NSBAQCBleHRlcm4gdm9pZCBpZGVudGlmaWNhdGlvbl9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLAorIAkJCQkgICBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkJCQkgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCk7CisgCisrc3RhdGljIHNpemVfdCB3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyB1aW50MzJfdCAqIHdjc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgaW50IHdtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKysKKytzdGF0aWMgc2l6ZV90Cisrd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikKKyt7CisrICBzaXplX3QgbGVuID0gMDsKKysgIHdoaWxlIChzdHJbbGVuXSAhPSAwKQorKyAgICBsZW4rKzsKKysgIHJldHVybiBsZW47CisrfQorKworK3N0YXRpYyAgaW50Cisrd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICB3aGlsZSAobi0tICE9IDApCisrICAgIHsKKysgICAgICBpbnQgZGlmZiA9ICpzMSsrIC0gKnMyKys7CisrICAgICAgaWYgKGRpZmYgIT0gMCkKKysJcmV0dXJuIGRpZmY7CisrICAgIH0KKysgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50Cisrd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpCisreworKyAgd2hpbGUgKCpzMSAhPSAwICYmICpzMSA9PSAqczIpCisrICAgIHMxKyssIHMyKys7CisrICByZXR1cm4gKnMxIC0gKnMyOworK30KKysKKytzdGF0aWMgdWludDMyX3QgKgorK3dtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCisreworKyAgcmV0dXJuIG1lbWNweSAoczEsIHMyLCBuICogc2l6ZW9mICh1aW50MzJfdCkpOworK30KKysKKytzdGF0aWMgdWludDMyX3QgKgorK3djc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkKKyt7CisrICBkbworKyAgICBpZiAoKnMgPT0gY2gpCisrICAgICAgcmV0dXJuICh1aW50MzJfdCAqKSBzOworKyAgd2hpbGUgKCpzKysgIT0gMCk7CisrICByZXR1cm4gMDsKKyt9CisrCisgI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYworaW5kZXggMTlhY2M0YjJjNy4uYzg5ZDNiODdhZCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYworKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCitAQCAtNjQsMzYgKzY0LDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9CisgI2VuZGlmCisgCisgCistLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLworLWNvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistICAgIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgICBjYXRlZ29yeV9uYW1lLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCistICAgIH0KKy0gIH07CistCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gIH07CistCistLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KKy1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmCURFRklORV9DQVRFR09SWQorLSAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQorLSAgfTsKKy0KKy0KKyAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAorICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKKyAjZWxzZQorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGNkNWIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gYTUwYzZlODA1NDNmYjRjYmM1ODk5NzhjMTFmZTg0NmJmNGE5NDQ5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjU1OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMjZdIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKLQotMjAxMC0wOS0yOSAgTm9idWhpcm8gSXdhbWF0c3UgIDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLSAgICAgICAgICAgIEFuZHJldyBTdHViYnMgIDxhbXNAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICBSZXNvbHZlIFNIJ3MgX19mcHNjcl92YWx1ZXMgdG8gc3ltYm9sIGluIGxpYmMuc28uCi0KLSAgICAgICAgKiBzeXNkZXBzL3NoL3NoNC9mcHUvZnB1X2NvbnRyb2wuaDogQWRkIEMrKyBfX3NldF9mcHNjciBwcm90b3R5cGUuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgKEdMSUJDXzIuMik6IEFkZCBfX2Zwc2NyX3ZhbHVlcy4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyAoX19fZnBzY3JfdmFsdWVzKTogTmV3IGNvbnN0YW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIHwgIDEgKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIHwgMTEgKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLWluZGV4IGUwOTM4YzQuLmNhMWQ3ZGEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLUBAIC0yLDYgKzIsNyBAQCBsaWJjIHsKLSAgIEdMSUJDXzIuMiB7Ci0gICAgICMgZnVuY3Rpb25zIHVzZWQgaW4gb3RoZXIgbGlicmFyaWVzCi0gICAgIF9feHN0YXQ2NDsgX19meHN0YXQ2NDsgX19seHN0YXQ2NDsKLSsgICAgX19mcHNjcl92YWx1ZXM7Ci0gCi0gICAgICMgYSoKLSAgICAgYWxwaGFzb3J0NjQ7Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotaW5kZXggMDAyNGQ3OS4uZDFkYjdlNCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotQEAgLTMwLDMgKzMwLDE0IEBAIEVOVFJZIChfX3N5c2NhbGxfZXJyb3IpCi0gCi0gI2RlZmluZSBfX3N5c2NhbGxfZXJyb3IgX19zeXNjYWxsX2Vycm9yXzEKLSAjaW5jbHVkZSA8c3lzZGVwcy91bml4L3NoL3N5c2RlcC5TPgotKwotKyAgICAgICAuZGF0YQotKyAgICAgICAuYWxpZ24gMwotKyAgICAgICAuZ2xvYmwgX19fZnBzY3JfdmFsdWVzCi0rICAgICAgIC50eXBlIF9fX2Zwc2NyX3ZhbHVlcywgQG9iamVjdAotKyAgICAgICAuc2l6ZSBfX19mcHNjcl92YWx1ZXMsIDgKLStfX19mcHNjcl92YWx1ZXM6Ci0rICAgICAgIC5sb25nIDAKLSsgICAgICAgLmxvbmcgMHg4MDAwMAotK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCi0rCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1ODBkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGNiNGQwMGVhYzdmODQwOTIzMTRkZTU5MzYyNmVlYTQwZjk1MjkwMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIzLzI1XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKKworVGhpcyBpcyBhIGhhY2sgdG8gZml4IGJ1aWxkaW5nIHRoZSBsb2NhbGUgYml0cyBvbiBhbiBvbGRlcgorQ2VudE9zIDUuWCBtYWNoaW5lCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAoraW5kZXggNWI0MTZiZTBkOC4uNzllNjZlZWQ1ZSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitAQCAtMTksNiArMTksOSBAQAorICNpZm5kZWYgX0xEX0NPTkZJR19ICisgI2RlZmluZSBfTERfQ09ORklHX0gJMQorIAorKyNpZm5kZWYgRFVNTVlfTE9DQUxFX1QKKysjZGVmaW5lIERVTU1ZX0xPQ0FMRV9UCisrI2VuZGlmCisgLyogVXNlIHRoZSBpbnRlcm5hbCB0ZXh0ZG9tYWluIHVzZWQgZm9yIGxpYmMgbWVzc2FnZXMuICAqLworICNkZWZpbmUgUEFDS0FHRSBfbGliY19pbnRsX2RvbWFpbm5hbWUKKyAjaWZuZGVmIFZFUlNJT04KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNlNTcxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotRnJvbSAxMDE1NjhkYWY0OGQ5OWU3MWIyODBhMmZkZDg1NDYwZmU3NDBkNTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yNl0gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcwotCi1Gb3J3YXJkIHBvcnQgZnJvbSBlZ2xpYmMKLQotMjAwOC0wMi0wNyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtZXh0cmFzLCBpbnN0YWxsLW1hcCk6IE5ldyB2YXJpYWJsZXMuCi0gICAgICAgIChpbnN0YWxsZWQtbGliY3MpOiBBZGQgbGliY19waWMuYS4KLSAgICAgICAgKGluc3RhbGwtbGliKTogSW5jbHVkZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBzaGFyZWQKLSAgICAgICAgbGlicmFyaWVzLgotICAgICAgICAoaW5zdGFsbC1tYXAtbm9zdWJkaXIsIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyKTogQWRkIHJ1bGVzIGZvcgotICAgICAgICBpbnN0YWxsaW5nIGV4dHJhIGZpbGVzLgotICAgICAgICAoaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIpOiBEZXBlbmQgb24gaW5zdGFsbC1tYXAtbm9zdWJkaXIgYW5kCi0gICAgICAgIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyLgotCi0yMDA4LTA0LTAxICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtbGliKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5hLgotICAgICAgICAoaW5zdGFsbC1tYXApOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLm1hcC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlcnVsZXMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcwotaW5kZXggNjFhMDI0MC4uMzczZTYyOCAxMDA2NDQKLS0tLSBhL01ha2VydWxlcwotKysrIGIvTWFrZXJ1bGVzCi1AQCAtNzYyLDYgKzc2Miw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCi0gJChjb21tb24tb2JqcGZ4KWxpYmMuc286ICQoY29tbW9uLW9ianBmeClsaWJjLm1hcAotIGVuZGlmCi0gY29tbW9uLWdlbmVyYXRlZCArPSBsaWJjLnNvIGxpYmNfcGljLm9zCi0raWZuZGVmIHN1YmRpcgotK2luc3RhbGwtZXh0cmFzIDo9IHNvaW5pdC5vIHNvZmluaS5vCi0rZW5kaWYKLSBpZmRlZiBsaWJjLnNvLXZlcnNpb24KLSAkKGNvbW1vbi1vYmpwZngpbGliYy5zbyQobGliYy5zby12ZXJzaW9uKTogJChjb21tb24tb2JqcGZ4KWxpYmMuc28KLSAJJChtYWtlLWxpbmspCi1AQCAtMTAwNCw2ICsxMDA3LDcgQEAgZW5kaWYKLSAKLSBpbnN0YWxsOiBjaGVjay1pbnN0YWxsLXN1cHBvcnRlZAotIAotK2luc3RhbGxlZC1saWJjcyA6PSAkKGluc3RhbGxlZC1saWJjcykgJChpbnN0X2xpYmRpcikvbGliY19waWMuYQotIGluc3RhbGw6ICQoaW5zdGFsbGVkLWxpYmNzKQotICQoaW5zdGFsbGVkLWxpYmNzKTogJChpbnN0X2xpYmRpcikvbGliJChsaWJwcmVmaXgpJTogbGliICQoK2ZvcmNlKQotIAkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLUBAIC0xMDMyLDYgKzEwMzYsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKLSBpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQgOj0gJChmaWx0ZXIgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKLSBpbnN0YWxsLWxpYi5zby11bnZlcnNpb25lZCA6PSAkKGZpbHRlci1vdXQgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKLSAKLSsjIEluc3RhbGwgdGhlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgYW5kIGNvcnJlc3BvbmRpbmcKLSsjIC5tYXAgZmlsZXMuCi0rIyBsaWJwdGhyZWFkX3BpYy5hIGJyZWFrcyBta2xpYnMsIHNvIGRvbid0IGluc3RhbGwgaXQgYW5kIGl0cyBtYXAuCi0raW5zdGFsbC1saWIgOj0gJChpbnN0YWxsLWxpYikgJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQ6JS5zbz0lX3BpYy5hKQotK2luc3RhbGwtbGliIDo9ICQoZmlsdGVyLW91dCBsaWJwdGhyZWFkX3BpYy5hLCQoaW5zdGFsbC1saWIpKQotKyMgRGVzcGl0ZSBoYXZpbmcgYSBzb25hbWUgbGliaHVyZHVzZXIgYW5kIGxpYm1hY2h1c2VyIGRvIG5vdCB1c2Ugc3ltYm9sCi0rIyB2ZXJzaW9uaW5nLCBzbyBkb24ndCBpbnN0YWxsIHRoZSBjb3JyZXNwb25kaW5nIC5tYXAgZmlsZXMuCi0raWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKLStpbnN0YWxsLW1hcCA6PSAkKHBhdHN1YnN0ICUuc28sJS5tYXAsXAotKwkJCSQoZm9yZWFjaCBMLCQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkKSwkKG5vdGRpciAkTCkpKQotK2luc3RhbGwtbWFwIDo9ICQoZmlsdGVyLW91dCBsaWJodXJkdXNlci5tYXAgbGlibWFjaHVzZXIubWFwIGxpYnB0aHJlYWQubWFwLCQoaW5zdGFsbC1tYXApKQotK2lmbmRlZiBzdWJkaXIKLStpbnN0YWxsLW1hcCA6PSAkKGluc3RhbGwtbWFwKSBsaWJjLm1hcAotK2VuZGlmCi0rZW5kaWYKLSsKLSAjIEZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCB3ZSBpbnN0YWxsIHRocmVlIGZpbGVzOgotICMJJChpbnN0X2xpYmRpcikvbGliZm9vLnNvCS0tIGZvciBsaW5raW5nLCBzeW1saW5rIG9yIGxkIHNjcmlwdAotICMJJChpbnN0X3NsaWJkaXIpL2xpYmZvby5zby5OTgktLSBmb3IgbG9hZGluZyBieSBTT05BTUUsIHN5bWxpbmsKLUBAIC0xMjc1LDkgKzEyOTUsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAotIGVuZGlmCSMgaGVhZGVycy1ub25oCi0gZW5kaWYJIyBoZWFkZXJzCi0gCi0raWZkZWYgaW5zdGFsbC1tYXAKLSskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKTogXAotKyAgJChpbnN0X2xpYmRpcikvbGliJV9waWMubWFwOiAkKGNvbW1vbi1vYmpwZngpbGliJS5tYXAgJCgrZm9yY2UpCi0rCSQoZG8taW5zdGFsbCkKLStlbmRpZgotKwotK2lmZGVmIGluc3RhbGwtZXh0cmFzCi0rJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLCQoaW5zdGFsbC1leHRyYXMpKTogXAotKyAgJChpbnN0X2xpYmRpcikvbGliY19waWMvJS5vOiAkKGVsZi1vYmpwZngpJS5vcyAkKCtmb3JjZSkKLSsJJChkby1pbnN0YWxsKQotK2VuZGlmCi0rCi0gLlBIT05ZOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAotIAlpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBpbnN0YWxsLWxpYi1ub3N1YmRpciBcCi0tCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIKLSsJaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLW1hcC1ub3N1YmRpciBcCi0rCWluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCi0gaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKLSBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCi0gaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAotQEAgLTEyOTAsNiArMTMyMywxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQotIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQotIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQotK2luc3RhbGwtbWFwLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sXAotKwkJICAgICAgICQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSkKLStpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLFwKLSsJCSAgICAgICAkKGluc3RhbGwtZXh0cmFzKSkKLSAKLSAjIFdlIG5lZWQgYWxsIHRoZSBgLW5vc3ViZGlyJyB0YXJnZXRzIHNvIHRoYXQgYGluc3RhbGwnIGluIHRoZSBwYXJlbnQKLSAjIGRvZXNuJ3QgZGVwZW5kIG9uIHNldmVyYWwgdGhpbmdzIHdoaWNoIGVhY2ggaXRlcmF0ZSBvdmVyIHRoZSBzdWJkaXJzLgotQEAgLTEyOTksNyArMTMzNiw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7Ci0gCi0gLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCi0gaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXAotLQkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpcgotKwkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpciBcCi0rCQkJICAgIGluc3RhbGwtbWFwLW5vc3ViZGlyIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCi0gaWZlcSAoJChidWlsZC1wcm9ncmFtcykseWVzKQotIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAotIAkJCSAgICBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBcCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOTk4OTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTY2ICswLDAgQEAKLUZyb20gODI1MTZlM2VkMzcyZjYxOGM4ODZhMmRlNGY5NDk4ZjU5N2FhOGE4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjMzOjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMjZdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICsrLQotIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvbG9jYWxlaW5mby5oICAgICAgICAgICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgfCAgNiArKysrKwotIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKysrLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKysrKy0tLS0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jICAgICB8IDMxICsrKysrKysrKysrKysrKy0tLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyAgICAgfCAgNSArKystCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gbG9jYWxlL3NldGxvY2FsZS5jICAgICAgICAgICAgfCAzMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYwotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCi1pbmRleCBjNTM3OWU2Li5jOThjNjc1IDEwMDY0NAotLS0tIGEvbG9jYWxlL01ha2VmaWxlCi0rKysgYi9sb2NhbGUvTWFrZWZpbGUKLUBAIC0yNSw3ICsyNSw4IEBAIGluY2x1ZGUgLi4vTWFrZWNvbmZpZwotIGhlYWRlcnMJCT0gbG9jYWxlLmggYml0cy9sb2NhbGUuaCBsYW5naW5mby5oIHhsb2NhbGUuaAotIHJvdXRpbmVzCT0gc2V0bG9jYWxlIGZpbmRsb2NhbGUgbG9hZGxvY2FsZSBsb2FkYXJjaGl2ZSBcCi0gCQkgIGxvY2FsZWNvbnYgbmxfbGFuZ2luZm8gbmxfbGFuZ2luZm9fbCBtYl9jdXJfbWF4IFwKLS0JCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZQotKwkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlIFwKLSsJCSAgY2F0bmFtZXMKLSB0ZXN0cwkJPSB0c3QtQy1sb2NhbGUgdHN0LWxvY25hbWUgdHN0LWR1cGxvY2FsZQotIGNhdGVnb3JpZXMJPSBjdHlwZSBtZXNzYWdlcyBtb25ldGFyeSBudW1lcmljIHRpbWUgcGFwZXIgbmFtZSBcCi0gCQkgIGFkZHJlc3MgdGVsZXBob25lIG1lYXN1cmVtZW50IGlkZW50aWZpY2F0aW9uIGNvbGxhdGUKLWRpZmYgLS1naXQgYS9sb2NhbGUvY2F0bmFtZXMuYyBiL2xvY2FsZS9jYXRuYW1lcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOWZhZDM1NwotLS0tIC9kZXYvbnVsbAotKysrIGIvbG9jYWxlL2NhdG5hbWVzLmMKLUBAIC0wLDAgKzEsNDggQEAKLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSAibG9jYWxlaW5mby5oIgotKwotKy8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KLStjb25zdCB1bmlvbiBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyAgICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgICAgY2F0ZWdvcnlfbmFtZSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmIERFRklORV9DQVRFR09SWQotKyAgICB9Ci0rICB9OwotKwotK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotKyAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHVuaW9uIGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICB9OwotKwotKy8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotKyAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZglERUZJTkVfQ0FURUdPUlkKLSsgICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKLSsgIH07Ci1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLWluZGV4IDFmNGRhOTIuLjdmNjg5MzUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCi0rKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1AQCAtMjI0LDcgKzIyNCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIF9fbG9jYWxlX3QsIExPQ0FMRSkKLSAgICB1bnVzZWQuICBXZSBjYW4gbWFuYWdlIHRoaXMgcGxheWluZyBzb21lIHRyaWNrcyB3aXRoIHdlYWsgcmVmZXJlbmNlcy4KLSAgICBCdXQgd2l0aCB0aHJlYWQtbG9jYWwgbG9jYWxlIHNldHRpbmdzLCBpdCBiZWNvbWVzIHF1aXRlIHVuZ2Fpbmx5IHVubGVzcwotICAgIHdlIGNhbiB1c2UgX190aHJlYWQgdmFyaWFibGVzLiAgU28gb25seSBpbiB0aGF0IGNhc2UgZG8gd2UgYXR0ZW1wdCB0aGlzLiAgKi8KLS0jaWZuZGVmIFNIQVJFRAotKyNpZiAhZGVmaW5lZCBTSEFSRUQgJiYgIWRlZmluZWQgSU5fR0xJQkNfTE9DQUxFREVGCi0gIyBpbmNsdWRlIDx0bHMuaD4KLSAjIGRlZmluZSBOTF9DVVJSRU5UX0lORElSRUNUCTEKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1pbmRleCA5OWZjZDM1Li41ZTUyOGRjIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1AQCAtMTksNyArMTksOSBAQAotICNpbmNsdWRlIDxlcnJvci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gI2luY2x1ZGUgPHNwYXduLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNTYsNiArMTU4LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCi0gICByZXR1cm4gY2xvc2VkaXIgKGRpcik7Ci0gfQotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucwotICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCi0gc3RhdGljCi1AQCAtMjA0LDYgKzIwNyw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCi0gICAgIH0KLSAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSAvKiBPcGVucyBhIGNoYXJtYXAgZm9yIHJlYWRpbmcsIGdpdmVuIGl0cyBuYW1lIChub3QgYW4gYWxpYXMgbmFtZSkuICAqLwotIEZJTEUgKgotQEAgLTIyNiw2ICsyMzAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSAKLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAgIG1lbWNweSAocCwgIi5neiIsIDQpOwotICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImd6aXAiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLUBAIC0yMzUsNiArMjQwLDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCi0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSsjZW5kaWYKLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotaW5kZXggMWUxMjVmNi4uM2IyODY3ZiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLUBAIC0zNTAsNyArMzUwLDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCi0gICAgIH0KLSAgIGlmICh3Y3MgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuICgod2NoYXJfdCAqKSB3Y3MpOwotKyAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuX3VpbnQzMiAod2NzKTsKLSAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKLSAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLwotICAgICAgIGlmIChud2NzID09IDApCi1AQCAtMTc3Niw4ICsxNzc2LDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOwotIAotIAkgICAgICBpZiAoKCplcHRyKS0+bndjcyA9PSBydW5wLT5ud2NzKQotIAkJewotLQkJICBpbnQgYyA9IHdtZW1jbXAgKCh3Y2hhcl90ICopICgqZXB0ciktPndjcywKLS0JCQkJICAgKHdjaGFyX3QgKikgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKLSsJCSAgaW50IGMgPSB3bWVtY21wX3VpbnQzMiAoKCplcHRyKS0+d2NzLCBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotIAotIAkJICBpZiAoYyA9PSAwKQotIAkJICAgIHsKLUBAIC0yMDEwLDkgKzIwMDksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCi0gCSAgICAgb25lIGNvbnNlY3V0aXZlIGVudHJ5LiAgKi8KLSAJICBpZiAocnVucC0+d2NuZXh0ICE9IE5VTEwKLSAJICAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKLS0JICAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAotLQkJCSAgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKLS0JCQkgIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0rCSAgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCi0rCQkJCSBydW5wLT53Y25leHQtPndjcywKLSsJCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0gCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCi0gCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQotIAkgICAgewotQEAgLTIwMzYsOSArMjAzNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJCXJ1bnAgPSBydW5wLT53Y25leHQ7Ci0gCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkJICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJCSAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSsJCSAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJCXJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkJcnVucC0+bndjcyAtIDEpID09IDAKLSAJCSAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLWluZGV4IDBmZDE0MWMuLjY4MTM2ZTYgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLUBAIC05MjYsNyArOTI2LDcgQEAgY3R5cGVfb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgIGFsbG9jYXRlX2FycmF5cyAoY3R5cGUsIGNoYXJtYXAsIGN0eXBlLT5yZXBlcnRvaXJlKTsKLSAKLSAgIGRlZmF1bHRfbWlzc2luZ19sZW4gPSAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZwotLQkJCSA/IHdjc2xlbiAoKHdjaGFyX3QgKikgY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKLSsJCQkgPyB3Y3NsZW5fdWludDMyIChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotIAkJCSA6IDApOwotIAotICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7Ci1AQCAtMTkzNyw3ICsxOTM3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKLSAJICAgIGlnbm9yZSA9IDE7Ci0gCSAgZWxzZQotIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLwotLQkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuICgod2NoYXJfdCAqKSB0b193c3RyKSAqIDQpOwotKwkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuX3VpbnQzMiAodG9fd3N0cikgKiA0KTsKLSAKLSAJICBmaXJzdCA9IDA7Ci0gCX0KLUBAIC0yNDcxLDggKzI0NzEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOwotIAkgICAgfQotIAotIAloYW5kbGVfdG9rX2RpZ2l0OgotLQkgIGNsYXNzX2JpdCA9IF9JU3dkaWdpdDsKLS0JICBjbGFzczI1Nl9iaXQgPSBfSVNkaWdpdDsKLSsJICBjbGFzc19iaXQgPSBCSVR3ICh0b2tfZGlnaXQpOwotKwkgIGNsYXNzMjU2X2JpdCA9IEJJVCAodG9rX2RpZ2l0KTsKLSAJICBoYW5kbGVfZGlnaXRzID0gMTsKLSAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOwotIAotQEAgLTM5MjksOCArMzkyOSw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAKLSAJICB3aGlsZSAoaWR4IDwgbnVtYmVyKQotIAkgICAgewotLQkgICAgICBpbnQgcmVzID0gd2NzY21wICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbaWR4XS0+ZnJvbSwKLS0JCQkJKGNvbnN0IHdjaGFyX3QgKikgcnVucC0+ZnJvbSk7Ci0rCSAgICAgIGludCByZXMgPSB3Y3NjbXBfdWludDMyIChzb3J0ZWRbaWR4XS0+ZnJvbSwgcnVucC0+ZnJvbSk7Ci0gCSAgICAgIGlmIChyZXMgPT0gMCkKLSAJCXsKLSAJCSAgcmVwbGFjZSA9IDE7Ci1AQCAtMzk2NywxMSArMzk2NiwxMSBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gICAgICAgZm9yIChzaXplX3QgY250ID0gMDsgY250IDwgbnVtYmVyOyArK2NudCkKLSAJewotIAkgIHN0cnVjdCB0cmFuc2xpdF90b190ICpzcnVucDsKLS0JICBmcm9tX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgZnJvbV9sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdG9fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB0b19sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotIAkgIC8qIFBsdXMgb25lIGZvciB0aGUgZXh0cmEgTlVMIGNoYXJhY3RlciBtYXJraW5nIHRoZSBlbmQgb2YKLUBAIC0zOTk1LDE4ICszOTk0LDE4IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAJICBjdHlwZS0+dHJhbnNsaXRfZnJvbV9pZHhbY250XSA9IGZyb21fbGVuOwotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAKLS0JICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0tCSAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCi0tCQkgICAoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKLSsJICBsZW4gPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotKwkgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLSsJCQkgIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotIAkgIGZyb21fbGVuICs9IGxlbjsKLSAKLSAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47Ci0gCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87Ci0gCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCi0gCSAgICB7Ci0tCSAgICAgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotLQkgICAgICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAotLQkJICAgICAgIChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIsIGxlbik7Ci0rCSAgICAgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKLSsJICAgICAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0rCQkJICAgICAgc3J1bnAtPnN0ciwgbGVuKTsKLSAJICAgICAgdG9fbGVuICs9IGxlbjsKLSAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKLSAJICAgIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotaW5kZXggODc1MzFiYy4uNWYyYzI2NiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLUBAIC0yMTUsOCArMjE1LDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOwotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHd0X2ZtdF9hbXBtW10KLSsJICAgID0geyAnJScsJ0knLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywnJScsJ3AnLDAgfTsKLSAJICB0aW1lLT50X2ZtdF9hbXBtID0gIiVJOiVNOiVTICVwIjsKLS0JICB0aW1lLT53dF9mbXRfYW1wbSA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVJOiVNOiVTICVwIjsKLSsJICB0aW1lLT53dF9mbXRfYW1wbSA9IHd0X2ZtdF9hbXBtOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0yMjYsNyArMjI4LDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7Ci0gICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKLSAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKLSAgICAgICBzaXplX3QgaWR4OwotLSAgICAgIHdjaGFyX3QgKndzdHI7Ci0rICAgICAgdWludDMyX3QgKndzdHI7Ci0gCi0gICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQotIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKLUBAIC00NjQsMTggKzQ2NiwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAJICAgIH0KLSAKLSAJICAvKiBOb3cgZ2VuZXJhdGUgdGhlIHdpZGUgY2hhcmFjdGVyIG5hbWUgYW5kIGZvcm1hdC4gICovCi0tCSAgd3N0ciA9IHdjc2NociAoKHdjaGFyX3QgKikgdGltZS0+d2VyYVtpZHhdLCBMJzonKTsvKiBlbmQgZGlyZWN0aW9uICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBvZmZzZXQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIHN0YXJ0ICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBlbmQgKi8KLSsJICB3c3RyID0gd2NzY2hyX3VpbnQzMiAodGltZS0+d2VyYVtpZHhdLCBMJzonKTsgLyogZW5kIGRpcmVjdGlvbiAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIG9mZnNldCAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIHN0YXJ0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgZW5kICovCi0gCSAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLS0JICAgICAgd3N0ciA9IHdjc2NociAod3N0ciArIDEsIEwnOicpOwkvKiBlbmQgbmFtZSAqLwotKwkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gd3N0ciArIDE7Ci0rCSAgICAgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6Jyk7IC8qIGVuZCBuYW1lICovCi0gCSAgICAgIGlmICh3c3RyICE9IE5VTEwpCi0gCQl7Ci0gCQkgICp3c3RyID0gTCdcMCc7Ci0tCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLSsJCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gd3N0ciArIDE7Ci0gCQl9Ci0gCSAgICAgIGVsc2UKLSAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQotQEAgLTUzNCw3ICs1MzYsMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7Ci0gICBpZiAodGltZS0+ZGF0ZV9mbXQgPT0gTlVMTCkKLSAgICAgdGltZS0+ZGF0ZV9mbXQgPSAiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOwotICAgaWYgKHRpbWUtPndkYXRlX2ZtdCA9PSBOVUxMKQotLSAgICB0aW1lLT53ZGF0ZV9mbXQgPSAoY29uc3QgdWludDMyX3QgKikgTCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0rICAgIHsKLSsgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd2RhdGVfZm10W10gPQotKwl7ICclJywnYScsJyAnLAotKwkgICclJywnYicsJyAnLAotKwkgICclJywnZScsJyAnLAotKwkgICclJywnSCcsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLAotKwkgICclJywnWicsJyAnLAotKwkgICclJywnWScsMCB9OwotKyAgICAgIHRpbWUtPndkYXRlX2ZtdCA9IHdkYXRlX2ZtdDsKLSsgICAgfQotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotaW5kZXggYjg4NWY2NS4uMGFmYjYzMSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKLUBAIC01OTUsNyArNTk1LDcgQEAgZ2V0X3N0cmluZyAoc3RydWN0IGxpbmVyZWFkZXIgKmxyLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIHsKLSAgIGludCByZXR1cm5fd2lkZXN0ciA9IGxyLT5yZXR1cm5fd2lkZXN0cjsKLSAgIGNoYXIgKmJ1ZjsKLS0gIHdjaGFyX3QgKmJ1ZjIgPSBOVUxMOwotKyAgdWludDMyX3QgKmJ1ZjIgPSBOVUxMOwotICAgc2l6ZV90IGJ1ZmFjdDsKLSAgIHNpemVfdCBidWZtYXggPSA1NjsKLSAKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLWluZGV4IGI0YzQ4ZjEuLmVkMDhkNDggMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkICgqYXJncF9wcm9ncmFtX3ZlcnNpb25faG9vaykgKEZJTEUgKiwgc3RydWN0IGFyZ3Bfc3RhdGUgKikgPSBwcmludF92ZXJzaW9uOwotICNkZWZpbmUgT1BUX0xJU1RfQVJDSElWRSAzMDkKLSAjZGVmaW5lIE9QVF9MSVRUTEVfRU5ESUFOIDQwMAotICNkZWZpbmUgT1BUX0JJR19FTkRJQU4gNDAxCi0rI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwMgotIAotIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KLUBAIC0xNDMsNiArMTQ0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAotICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAotICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LAotKyAgeyAidWludDMyLWFsaWduIiwgT1BUX1VJTlQzMl9BTElHTiwgIkFMSUdOTUVOVCIsIDAsCi0rICAgIE5fKCJTZXQgdGhlIHRhcmdldCdzIHVpbnQzMl90IGFsaWdubWVudCBpbiBieXRlcyAoZGVmYXVsdCA0KSIpIH0sCi0gICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQotIH07Ci0gCi1AQCAtMjMyLDEyICsyMzUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgIGN0eXBlIGxvY2FsZS4gIChQMTAwMy4yIDQuMzUuNS4yKSAgKi8KLSAgIHNldGxvY2FsZSAoTENfQ1RZUEUsICJQT1NJWCIpOwotIAotKyNpZm5kZWYgTk9fU1lTQ09ORgotICAgLyogTG9vayB3aGV0aGVyIHRoZSBzeXN0ZW0gcmVhbGx5IGFsbG93cyBsb2NhbGUgZGVmaW5pdGlvbnMuICBQT1NJWAotICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQotICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCi0gICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCi0gICAgIFdJVEhfQ1VSX0xPQ0FMRSAoZXJyb3IgKDMsIDAsIF8oIlwKLSBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpKTsKLSsjZW5kaWYKLSAKLSAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KLSAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOwotQEAgLTMyOCw2ICszMzMsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQotICAgICBjYXNlIE9QVF9CSUdfRU5ESUFOOgotICAgICAgIHNldF9iaWdfZW5kaWFuICh0cnVlKTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgotKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKLSsgICAgICBicmVhazsKLSAgICAgY2FzZSAnYyc6Ci0gICAgICAgZm9yY2Vfb3V0cHV0ID0gMTsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotaW5kZXggMzJmNWNkMi4uMDI5NjdiMCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLUBAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLAotICAgIG1hY2hpbmUgcnVubmluZyBsb2NhbGVkZWYuICAqLwotIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7Ci0gCi0rLyogVGhlIHRhcmdldCdzIHZhbHVlIG9mIF9fYWxpZ25fXyh1aW50MzJfdCkgLSAxLiAgKi8KLSt1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2sgPSAzOwotKwotIC8qIFdoZW4gY2FsbGVkIG91dHNpZGUgYSBzdGFydF9sb2NhbGVfc3RydWN0dXJlL2VuZF9sb2NhbGVfc3RydWN0dXJlCi0gICAgb3Igc3RhcnRfbG9jYWxlX3ByZWx1ZGUvZW5kX2xvY2FsZV9wcmVsdWRlIGJsb2NrLCByZWNvcmQgdGhhdCB0aGUKLSAgICBuZXh0IGJ5dGUgaW4gRklMRSdzIG9ic3RhY2sgd2lsbCBiZSB0aGUgZmlyc3QgYnl0ZSBvZiBhIG5ldyBlbGVtZW50LgotQEAgLTYyMSw3ICs2MjQsNyBAQCBhZGRfbG9jYWxlX3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHJpbmcpCi0gdm9pZAotIGFkZF9sb2NhbGVfd3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCB1aW50MzJfdCAqc3RyaW5nKQotIHsKLS0gIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3RyaW5nKSArIDEpOwotKyAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuX3VpbnQzMiAoc3RyaW5nKSArIDEpOwotIH0KLSAKLSAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLWluZGV4IGEzZGQ5MDQuLjJjNzc2M2EgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1AQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gdm9pZCB3cml0ZV9hbGxfY2F0ZWdvcmllcyAoc3RydWN0IGxvY2FsZWRlZl90ICpkZWZpbml0aW9ucywKLSAKLSBleHRlcm4gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLStleHRlcm4gdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrOwotKwotIC8qIENoYW5nZSB0aGUgb3V0cHV0IHRvIGJlIGJpZy1lbmRpYW4gaWYgQklHX0VORElBTiBpcyB0cnVlIGFuZAotICAgIGxpdHRsZS1lbmRpYW4gb3RoZXJ3aXNlLiAgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQKLUBAIC04OSw3ICs5MSw4IEBAIG1heWJlX3N3YXBfdWludDMyICh1aW50MzJfdCB2YWx1ZSkKLSB9Ci0gCi0gLyogTGlrZXdpc2UsIGJ1dCBtdW5nZSBhbiBhcnJheSBvZiBOIHVpbnQzMl90cyBzdGFydGluZyBhdCBBUlJBWS4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSB7Ci0gICBpZiAoc3dhcF9lbmRpYW5uZXNzX3ApCi1AQCAtOTksNyArMTAyLDggQEAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCi0gCi0gLyogTGlrZSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSwgYnV0IHRoZSBhcnJheSBvZiBOIGVsZW1lbnRzIGlzIGF0Ci0gICAgdGhlIGVuZCBvZiBPQlNUQUNLJ3MgY3VycmVudCBvYmplY3QuICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotK3N0YXRpYyB2b2lkCi0rX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gbWF5YmVfc3dhcF91aW50MzJfb2JzdGFjayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHNpemVfdCBuKQotIHsKLSAgIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICgodWludDMyX3QgKikgb2JzdGFja19uZXh0X2ZyZWUgKG9ic3RhY2spIC0gbiwgbik7Ci1AQCAtMjc2LDQgKzI4MCw1NSBAQCBleHRlcm4gdm9pZCBpZGVudGlmaWNhdGlvbl9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkJCQkgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCk7Ci0gCi0rc3RhdGljIHNpemVfdCB3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyB1aW50MzJfdCAqIHdjc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgaW50IHdtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLSsKLStzdGF0aWMgc2l6ZV90Ci0rd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikKLSt7Ci0rICBzaXplX3QgbGVuID0gMDsKLSsgIHdoaWxlIChzdHJbbGVuXSAhPSAwKQotKyAgICBsZW4rKzsKLSsgIHJldHVybiBsZW47Ci0rfQotKwotK3N0YXRpYyAgaW50Ci0rd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICB3aGlsZSAobi0tICE9IDApCi0rICAgIHsKLSsgICAgICBpbnQgZGlmZiA9ICpzMSsrIC0gKnMyKys7Ci0rICAgICAgaWYgKGRpZmYgIT0gMCkKLSsJcmV0dXJuIGRpZmY7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpCi0rewotKyAgd2hpbGUgKCpzMSAhPSAwICYmICpzMSA9PSAqczIpCi0rICAgIHMxKyssIHMyKys7Ci0rICByZXR1cm4gKnMxIC0gKnMyOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3dtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCi0rewotKyAgcmV0dXJuIG1lbWNweSAoczEsIHMyLCBuICogc2l6ZW9mICh1aW50MzJfdCkpOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3djc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkKLSt7Ci0rICBkbwotKyAgICBpZiAoKnMgPT0gY2gpCi0rICAgICAgcmV0dXJuICh1aW50MzJfdCAqKSBzOwotKyAgd2hpbGUgKCpzKysgIT0gMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLwotZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotaW5kZXggNjliMzE0MS4uMWNlZjBiZSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYwotKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1AQCAtNjQsMzYgKzY0LDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9Ci0gI2VuZGlmCi0gCi0gCi0tLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotLWNvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tICAgIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgICBjYXRlZ29yeV9uYW1lLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0tICAgIH0KLS0gIH07Ci0tCi0tY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gIH07Ci0tCi0tLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmCURFRklORV9DQVRFR09SWQotLSAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotLSAgfTsKLS0KLS0KLSAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAotICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKLSAjZWxzZQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1OTM1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSBhNzg0NzQyNzM5YzkwZWVhMGQ0Y2NiYmQwNzNhMDY3ZDU1Y2E5NWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAorU3ViamVjdDogW1BBVENIIDI0LzI1XSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CisKK0FjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246CisKK1doZW4gcmVzb2x2aW5nIHN5bWJvbGljIHJlZmVyZW5jZXMsIHRoZSBkeW5hbWljIGxpbmtlciBleGFtaW5lcyB0aGUgc3ltYm9sCit0YWJsZXMgd2l0aCBhIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLgorCitUaGlzIGZ1bmN0aW9uIHdhcyB1c2luZyBhIGRlcHRoIGZpcnN0IHNlYXJjaC4gIEJ5IGRvaW5nIHNvIHRoZSBjb25mbGljdAorcmVzb2x1dGlvbiByZXBvcnRlZCB0byB0aGUgcHJlbGlua2VyICh3aGVuIExEX1RSQUNFX1BSRUxJTktJTkc9MSBpcyBzZXQpCit3YXMgaW5jb3JyZWN0LiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2hlbiB0aGVpciB3ZXJlIHZhcmlvdXMgY2lyY3VsYXIKK2RlcGVuZGVuY2llcyBiZXR3ZWVuIGxpYnJhcmllcy4gIFRoZSBwcm9ibGVtIHVzdWFsbHkgbWFuaWZlc3RlZCBpdHNlbGYgYnkKK3RoZSB3cm9uZyBJRlVOQyBiZWluZyBleGVjdXRlZC4KKworW0JaIyAyMDQ4OF0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGVsZi9kbC1kZXBzLmMgfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKK2luZGV4IDFiOGJhYzY1OTMuLmM2MTY4MDhmMzEgMTAwNjQ0CistLS0gYS9lbGYvZGwtZGVwcy5jCisrKysgYi9lbGYvZGwtZGVwcy5jCitAQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCisgeworICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7CisgICBzdHJ1Y3QgbGlua19tYXAgKipxOworKyAgc3RydWN0IGxpbmtfbWFwICoqcjsKKyAKKyAgICpwKysgPSBtYXA7CisgICBtYXAtPmxfcmVzZXJ2ZWQgPSAxOworLSAgaWYgKG1hcC0+bF9pbml0ZmluaSkKKy0gICAgZm9yIChxID0gbWFwLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKy0gICAgICBpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQorLQlwICs9IF9kbF9idWlsZF9sb2NhbF9zY29wZSAocCwgKnEpOworKworKyAgZm9yIChyID0gbGlzdDsgciA8IHA7ICsrcikKKysgICAgaWYgKCgqciktPmxfaW5pdGZpbmkpCisrICAgICAgZm9yIChxID0gKCpyKS0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCisrCWlmICghICgqcSktPmxfcmVzZXJ2ZWQpCisrCSAgeworKwkgICAgKnArKyA9ICpxOworKwkgICAgKCpxKS0+bF9yZXNlcnZlZCA9IDE7CisrCSAgfQorICAgcmV0dXJuIHAgLSBsaXN0OworIH0KKyAKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYwZjVkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGMyZDhjZGVhYjExNmNhYWNkZmVkYjM1ZWViM2U3NDNiNDQ4MDdiZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI1LzI2XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKLQotVGhpcyBpcyBhIGhhY2sgdG8gZml4IGJ1aWxkaW5nIHRoZSBsb2NhbGUgYml0cyBvbiBhbiBvbGRlcgotQ2VudE9zIDUuWCBtYWNoaW5lCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotaW5kZXggZjYwNjM2NS4uMGU1ZjhjMyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1AQCAtMTksNiArMTksOSBAQAotICNpZm5kZWYgX0xEX0NPTkZJR19ICi0gI2RlZmluZSBfTERfQ09ORklHX0gJMQotIAotKyNpZm5kZWYgRFVNTVlfTE9DQUxFX1QKLSsjZGVmaW5lIERVTU1ZX0xPQ0FMRV9UCi0rI2VuZGlmCi0gLyogVXNlIHRoZSBpbnRlcm5hbCB0ZXh0ZG9tYWluIHVzZWQgZm9yIGxpYmMgbWVzc2FnZXMuICAqLwotICNkZWZpbmUgUEFDS0FHRSBfbGliY19pbnRsX2RvbWFpbm5hbWUKLSAjaWZuZGVmIFZFUlNJT04KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YWQwNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZjNhNjcwNDk2YzhmZTZkNGFjZjA0NWY1YjE2N2ExOWNmNDFiMDQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9KPUMzPUE5cj1DMz1BOW15PTIwUm9zZW4/PSA8amVyZW15LnJvc2VuQHNtaWxlLmZyPgorRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNjowOToyNSArMDIwMAorU3ViamVjdDogW1BBVENIIDI1LzI1XSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKKworV2hlbiBuZXcgdmVyc2lvbiBvZiBjb21waWxlcnMgYXJlIHB1Ymxpc2hlZCwgdGhleSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aAorb2xkZXIgdmVyc2lvbnMgb2Ygc29mdHdhcmUuIFRoaXMgaXMgcGFydGljdWxhcmx5IGNvbW1vbiB3aGVuIHNvZnR3YXJlIGlzIGJ1aWx0Cit3aXRoIC1XZXJyb3IuCisKK0F1dG90b29scyBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgaGlzIGNvbXBpbGVyIHVzaW5nIGEKK3NldCBvZiB2YXJpYWJsZXMgKCRDQyAkQ1hYICRDUFAgZXRjLikuIFRob3NlIHZhcmlhYmxlcyBhcmUgdXNlZCBjb3JyZWN0bHkgd2hlbgorY29tcGlsaW5nIGdsaWJjIGJ1dCB0aGUgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdHJhbnNsaXRlcmF0aW9ucyBpbiB0aGUgbG9jYWxlLworc3ViZGlyZWN0b3J5IGRpcmVjdGx5IGNhbGxzIHRoZSBnY2MgYmluYXJ5IHRvIGdldCB0aGUgb3V0cHV0IG9mIHRoZQorcHJlcHJvY2Vzc29yIGluc3RlYWQgb2YgdXNpbmcgdGhlICRDUFAgdmFyaWFibGUgcHJvdmlkZWQgYnkgdGhlIGJ1aWxkCitlbnZpcm9ubWVudC4KKworVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gdGhlIGdjYyBiaW5hcnkgd2l0aCB0aGUgcHJvcGVyCitlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGh1cyBhbGxvd2luZyBhIHVzZXIgdG8gb3ZlcnJpZGUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNi0wOC9tc2cwMDc0Ni5odG1sXQorLS0tCisgbG9jYWxlL2dlbi10cmFuc2xpdC5wbCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwgYi9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCitpbmRleCAzMGQzZjJmMTk1Li5lOTc2NTMwMTdjIDEwMDY0NAorLS0tIGEvbG9jYWxlL2dlbi10cmFuc2xpdC5wbAorKysrIGIvbG9jYWxlL2dlbi10cmFuc2xpdC5wbAorQEAgLTEsNSArMSw1IEBACisgIyEvdXNyL2Jpbi9wZXJsIC13Cistb3BlbiBGLCAiY2F0IEMtdHJhbnNsaXQuaC5pbiB8IGdjYyAtRSAtIHwiIHx8IGRpZSAiQ2Fubm90IHByZXByb2Nlc3MgaW5wdXQgZmlsZSI7Cisrb3BlbiBGLCAnY2F0IEMtdHJhbnNsaXQuaC5pbiB8ICR7Q1BQOi1nY2MgLUV9IC0gfCcgfHwgZGllICJDYW5ub3QgcHJlcHJvY2VzcyBpbnB1dCBmaWxlIjsKKyAKKyAKKyBzdWIgY3N0cmxlbiB7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmJiOTZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaApAQCAtMCwwICsxLDkwIEBACitGcm9tIDAzNzI4M2NiYzc0NzM5YjcyZjM2ZGZlYzgyN2QxMjBmYWEyNDM0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lciBhdCByZWRoYXQgZG90IGNvbT4KK0RhdGU6IFRodSwgNiBKdWwgMjAxNyAxMTo1MDo1NSArMDIwMAorU3ViamVjdDogW1BBVENIIDI2LzI2XSBhc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudAorIGV4cHJlc3Npb24gW0JaIyAyMTI0Ml0KKworT24gMDcvMDUvMjAxNyAxMDoxNSBQTSwgWmFjayBXZWluYmVyZyB3cm90ZToKKz4gT24gV2VkLCBKdWwgNSwgMjAxNyBhdCAxMTo1MSBBTSwgRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4gd3JvdGU6Cis+PiBPbiAwNy8wNS8yMDE3IDA1OjQ2IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgorPj4+IEEgcHJvYmxlbSBvY2N1cnMgdG8gbWU6IGV4cHJlc3Npb25zIGludm9sdmluZyBWTEFzIF9hcmVfIGV2YWx1YXRlZAorPj4+IGluc2lkZSBzaXplb2YuCis+PgorPj4gVGhlIHR5cGUgb2YgdGhlIHNpemVvZiBhcmd1bWVudCB3b3VsZCBzdGlsbCBiZSBpbnQgKGR1ZSB0byB0aGUKKz4+IGNvbXBhcmlzb24gYWdhaW5zdCAwKSwgc28gdGhpcyBkb2Vzbid0IGFjdHVhbGx5IG9jY3VyLgorPgorPiBJIHJlY2hlY2tlZCB3aGF0IEM5OSBzYXlzIGFib3V0IHNpemVvZiBhbmQgVkxBcywgYW5kIHlvdSdyZSByaWdodCAtCis+IHRoZSBvcGVyYW5kIG9mIHNpemVvZiBpcyBvbmx5IGV2YWx1YXRlZCB3aGVuIHNpemVvZiBpcyBfZGlyZWN0bHlfCis+IGFwcGxpZWQgdG8gYSBWTEEuICBTbyB0aGlzIGlzIGluZGVlZCBzYWZlLCBidXQgSSB0aGluayB0aGlzIHdyaW5rbGUKKz4gc2hvdWxkIGJlIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudC4gIFBlcmhhcHMKKz4KKz4gLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAorPiAgICBidXQgd2lsbCB0cmlnZ2VyIGFueSBwZWRhbnRpYyB3YXJuaW5ncyBtYXNrZWQgYnkgdGhlIF9fZXh0ZW5zaW9uX18KKz4gICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybworPiAgICBlbnN1cmVzIHRoYXQgc2l6ZW9mIGlzIG5vdCBkaXJlY3RseSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBvcgorPiAgICBiaXQtZmllbGQgKHdoaWNoIHdvdWxkIGJlIGlsbC1mb3JtZWQpIG9yIFZMQSAod2hpY2ggd291bGQgYmUgZXZhbHVhdGVkKS4gICovCis+Cis+IHp3CisKK1doYXQgYWJvdXQgdGhlIGF0dGFjaGVkIHBhdGNoPworCitTaWRkaGVzaCwgaXMgdGhpcyBva2F5IGR1cmluZyB0aGUgZnJlZXplPyAgSSdkIGxpa2UgdG8gYmFja3BvcnQgaXQgdG8KKzIuMjUgYXMgd2VsbC4KKworVGhhbmtzLAorRmxvcmlhbgorCithc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudCBleHByZXNzaW9uCisKKzIwMTctMDctMDYgIEZsb3JpYW4gV2VpbWVyICA8ZndlaW1lckByZWRoYXQuY29tPgorCisJW0JaICMyMTI0Ml0KKwkqIGFzc2VydC9hc3NlcnQuaCBbX19HTlVDX18gJiYgIV9fU1RSSUNUX0FOU0lfX10gKGFzc2VydCk6CisJU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyByZXN1bHRpbmcgZnJvbSBzdGF0ZW1lbnQgZXhwcmVzc2lvbi4KKwkoX19BU1NFUlRfRlVOQ1RJT04pOiBBZGQgbWlzc2luZyBfX2V4dGVuZHNpb25fXy4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGFzc2VydC9hc3NlcnQuaCB8IDEyICsrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hc3NlcnQvYXNzZXJ0LmggYi9hc3NlcnQvYXNzZXJ0LmgKK2luZGV4IDIyZjAxOTUzN2MuLjY4MDFjZmViMTAgMTAwNjQ0CistLS0gYS9hc3NlcnQvYXNzZXJ0LmgKKysrKyBiL2Fzc2VydC9hc3NlcnQuaAorQEAgLTkxLDEzICs5MSwxOSBAQCBfX0VORF9ERUNMUworICAgICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAorICAgICAgOiBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCisgIyBlbHNlCisrLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAorKyAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXworKyAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgZXhwbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IHplcm8gaXMKKysgICByZXF1aXJlZCB0byBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMKKysgICBjb250ZXh0LCBhbmQgdG8gc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoCisrICAgYXJyYXlzLiAgKi8KKyAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKKy0gICAgKHsJCQkJCQkJCQlcCisrICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID09IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAorICAgICAgIGlmIChleHByKQkJCQkJCQkJXAorICAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCisgICAgICAgZWxzZQkJCQkJCQkJXAorICAgICAgICAgX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pOwlcCistICAgIH0pCisrICAgIH0pKQorICMgZW5kaWYKKyAKKyAjIGlmZGVmCV9fVVNFX0dOVQorQEAgLTExMyw3ICsxMTksNyBAQCBfX0VORF9ERUNMUworICAgIEM5eCBoYXMgYSBzaW1pbGFyIHZhcmlhYmxlIGNhbGxlZCBfX2Z1bmNfXywgYnV0IHByZWZlciB0aGUgR0NDIG9uZSBzaW5jZQorICAgIGl0IGRlbWFuZ2xlcyBDKysgZnVuY3Rpb24gbmFtZXMuICAqLworICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyA/IF9fR05VQ19QUkVSRVEgKDIsIDYpIDogX19HTlVDX1BSRVJFUSAoMiwgNCkKKy0jICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fUFJFVFRZX0ZVTkNUSU9OX18KKysjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZXh0ZW5zaW9uX18gX19QUkVUVFlfRlVOQ1RJT05fXworICMgZWxzZQorICMgIGlmIGRlZmluZWQgX19TVERDX1ZFUlNJT05fXyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyAjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZnVuY19fCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyZjUzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBmYjMxNWMxOTdjY2E2MTI5OWE2ZjY1ODhlYTM0NjAxNDVjMjU1ZDA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAotU3ViamVjdDogW1BBVENIIDI2LzI2XSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0Ci0KLUFjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246Ci0KLVdoZW4gcmVzb2x2aW5nIHN5bWJvbGljIHJlZmVyZW5jZXMsIHRoZSBkeW5hbWljIGxpbmtlciBleGFtaW5lcyB0aGUgc3ltYm9sCi10YWJsZXMgd2l0aCBhIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLgotCi1UaGlzIGZ1bmN0aW9uIHdhcyB1c2luZyBhIGRlcHRoIGZpcnN0IHNlYXJjaC4gIEJ5IGRvaW5nIHNvIHRoZSBjb25mbGljdAotcmVzb2x1dGlvbiByZXBvcnRlZCB0byB0aGUgcHJlbGlua2VyICh3aGVuIExEX1RSQUNFX1BSRUxJTktJTkc9MSBpcyBzZXQpCi13YXMgaW5jb3JyZWN0LiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2hlbiB0aGVpciB3ZXJlIHZhcmlvdXMgY2lyY3VsYXIKLWRlcGVuZGVuY2llcyBiZXR3ZWVuIGxpYnJhcmllcy4gIFRoZSBwcm9ibGVtIHVzdWFsbHkgbWFuaWZlc3RlZCBpdHNlbGYgYnkKLXRoZSB3cm9uZyBJRlVOQyBiZWluZyBleGVjdXRlZC4KLQotW0JaIyAyMDQ4OF0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGVsZi9kbC1kZXBzLmMgfCAxNCArKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKLWluZGV4IDZhODI5ODcuLjUzYmU4MjQgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtZGVwcy5jCi0rKysgYi9lbGYvZGwtZGVwcy5jCi1AQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCi0gewotICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipxOwotKyAgc3RydWN0IGxpbmtfbWFwICoqcjsKLSAKLSAgICpwKysgPSBtYXA7Ci0gICBtYXAtPmxfcmVzZXJ2ZWQgPSAxOwotLSAgaWYgKG1hcC0+bF9pbml0ZmluaSkKLS0gICAgZm9yIChxID0gbWFwLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLS0gICAgICBpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQotLQlwICs9IF9kbF9idWlsZF9sb2NhbF9zY29wZSAocCwgKnEpOwotKwotKyAgZm9yIChyID0gbGlzdDsgciA8IHA7ICsrcikKLSsgICAgaWYgKCgqciktPmxfaW5pdGZpbmkpCi0rICAgICAgZm9yIChxID0gKCpyKS0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCi0rCWlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0rCSAgewotKwkgICAgKnArKyA9ICpxOwotKwkgICAgKCpxKS0+bF9yZXNlcnZlZCA9IDE7Ci0rCSAgfQotICAgcmV0dXJuIHAgLSBsaXN0OwotIH0KLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc3YjI1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYTZiYjczZDFjZmQyMGE3M2ZiYmU2MDc2MDA4Mzc2ZmI4Nzg3OWQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTggQXVnIDIwMTYgMTc6NTk6MTMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVzZXQgZGxfbG9hZF93cml0ZV9sb2NrIGFmdGVyIGZvcmtpbmcKKworVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgorCisgIGh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xOTI4MgorCitUaGUgX19saWJjX2ZvcmsoKSBjb2RlIHJlc2V0IGRsX2xvYWRfbG9jaywgYnV0IGl0IGFsc28gbmVlZGVkIHRvIHJlc2V0CitkbF9sb2FkX3dyaXRlX2xvY2suICBUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogRGFtb2RhciBTb25vbmUgPGRhbW9kYXIuc29ub25lQGtwaXQuY29tPgorU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3lzZGVwcy9ucHRsL2ZvcmsuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9ucHRsL2ZvcmsuYyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKK2luZGV4IDJiOWFlNGIuLjNkMGI4ZGEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25wdGwvZm9yay5jCisrKysgYi9zeXNkZXBzL25wdGwvZm9yay5jCitAQCAtMTc0LDggKzE3NCw5IEBAIF9fbGliY19mb3JrICh2b2lkKQorICAgICAgIC8qIFJlc2V0IGxvY2tzIGluIHRoZSBJL08gY29kZS4gICovCisgICAgICAgX0lPX2xpc3RfcmVzZXRsb2NrICgpOworIAorLSAgICAgIC8qIFJlc2V0IHRoZSBsb2NrIHRoZSBkeW5hbWljIGxvYWRlciB1c2VzIHRvIHByb3RlY3QgaXRzIGRhdGEuICAqLworKyAgICAgIC8qIFJlc2V0IHRoZSBsb2NrcyB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KKyAgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX2xvY2spKTsKKysgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKyAKKyAgICAgICAvKiBSdW4gdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBjaGlsZC4gICovCisgICAgICAgd2hpbGUgKGFsbHAgIT0gTlVMTCkKKy0tIAorMS45LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWMwYmRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGEyZmM4NmNiOGQwMzY2MTcxZjEwMGViZDAzM2FlYjk2MDlmYTQwZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/Sj1DMz1BOXI9QzM9QTlteT0yMFJvc2VuPz0gPGplcmVteS5yb3NlbkBzbWlsZS5mcj4KLURhdGU6IE1vbiwgMjIgQXVnIDIwMTYgMTY6MDk6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8yN10gbG9jYWxlOiBmaXggaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gZ2NjIC1FCi0KLVdoZW4gbmV3IHZlcnNpb24gb2YgY29tcGlsZXJzIGFyZSBwdWJsaXNoZWQsIHRoZXkgbWF5IG5vdCBiZSBjb21wYXRpYmxlIHdpdGgKLW9sZGVyIHZlcnNpb25zIG9mIHNvZnR3YXJlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBjb21tb24gd2hlbiBzb2Z0d2FyZSBpcyBidWlsdAotd2l0aCAtV2Vycm9yLgotCi1BdXRvdG9vbHMgcHJvdmlkZXMgYSB3YXkgZm9yIGEgdXNlciB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIGhpcyBjb21waWxlciB1c2luZyBhCi1zZXQgb2YgdmFyaWFibGVzICgkQ0MgJENYWCAkQ1BQIGV0Yy4pLiBUaG9zZSB2YXJpYWJsZXMgYXJlIHVzZWQgY29ycmVjdGx5IHdoZW4KLWNvbXBpbGluZyBnbGliYyBidXQgdGhlIHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIHRyYW5zbGl0ZXJhdGlvbnMgaW4gdGhlIGxvY2FsZS8KLXN1YmRpcmVjdG9yeSBkaXJlY3RseSBjYWxscyB0aGUgZ2NjIGJpbmFyeSB0byBnZXQgdGhlIG91dHB1dCBvZiB0aGUKLXByZXByb2Nlc3NvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAkQ1BQIHZhcmlhYmxlIHByb3ZpZGVkIGJ5IHRoZSBidWlsZAotZW52aXJvbm1lbnQuCi0KLVRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIHRoZSBnY2MgYmluYXJ5IHdpdGggdGhlIHByb3BlcgotZW52aXJvbm1lbnQgdmFyaWFibGUsIHRodXMgYWxsb3dpbmcgYSB1c2VyIHRvIG92ZXJyaWRlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXMgOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE2LTA4L21zZzAwNzQ2Lmh0bWxdCi0tLS0KLSBsb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2dlbi10cmFuc2xpdC5wbCBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKLWluZGV4IDMwZDNmMmYuLmU5NzY1MzAgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCi0rKysgYi9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCi1AQCAtMSw1ICsxLDUgQEAKLSAjIS91c3IvYmluL3BlcmwgLXcKLS1vcGVuIEYsICJjYXQgQy10cmFuc2xpdC5oLmluIHwgZ2NjIC1FIC0gfCIgfHwgZGllICJDYW5ub3QgcHJlcHJvY2VzcyBpbnB1dCBmaWxlIjsKLStvcGVuIEYsICdjYXQgQy10cmFuc2xpdC5oLmluIHwgJHtDUFA6LWdjYyAtRX0gLSB8JyB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOwotIAotIAotIHN1YiBjc3RybGVuIHsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NjIzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK1RoZSBwYXRjaCBpbiB0aGlzIEJ1Z3ppbGxhIGVudHJ5IHdhcyByZXF1ZXN0ZWQgYnkgYSBjdXN0b21lcjoKKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDU3OAorCitJZiBhIHRocmVhZCBoYXBwZW5zIHRvIGhvbGQgZGxfbG9hZF9sb2NrIGFuZCBoYXZlIHJfc3RhdGUgc2V0IHRvIFJUX0FERCBvcgorUlRfREVMRVRFIGF0IHRoZSB0aW1lIGFub3RoZXIgdGhyZWFkIGNhbGxzIGZvcmsoKSwgdGhlbiB0aGUgY2hpbGQgZXhpdCBjb2RlCitmcm9tIGZvcmsgKGluIG5wdGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgvZm9yay5jIGluIG91ciBjYXNlKSByZS1pbml0aWFsaXplcworZGxfbG9hZF9sb2NrIGJ1dCBkb2VzIG5vdCByZXN0b3JlIHJfc3RhdGUgdG8gUlRfQ09OU0lTVEVOVC4gSWYgdGhlIGNoaWxkCitzdWJzZXF1ZW50bHkgcmVxdWlyZXMgbGQuc28gZnVuY3Rpb25hbGl0eSBiZWZvcmUgY2FsbGluZyBleGVjKCksIHRoZW4gdGhlCithc3NlcnRpb24gd2lsbCBmaXJlLgorCitUaGUgcGF0Y2ggYWNxdWlyZXMgZGxfbG9hZF9sb2NrIG9uIGVudHJ5IHRvIGZvcmsoKSBhbmQgcmVsZWFzZXMgaXQgb24gZXhpdAorZnJvbSB0aGUgcGFyZW50IHBhdGguICBUaGUgY2hpbGQgcGF0aCBpcyBpbml0aWFsaXplZCBhcyBjdXJyZW50bHkgZG9uZS4KK1RoaXMgaXMgZXNzZW50aWFsbHkgcHRocmVhZHNfYXRmb3JrLCBidXQgZm9yY2VkIHRvIGJlIGZpcnN0IGJlY2F1c2UgdGhlCithY3F1aXNpdGlvbiBvZiBkbF9sb2FkX2xvY2sgbXVzdCBoYXBwZW4gYmVmb3JlIG1hbGxvY19hdGZvcmsgaXMgYWN0aXZlCit0byBhdm9pZCBhIGRlYWRsb2NrLgorVGhlIHBhdGNoIGhhcyBub3QgeWV0IGJlZW4gaW50ZWdyYXRlZCB1cHN0cmVhbS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgTm90IEF1dGhvciBTZWUgYnVnemlsbGFdCisKK1NpZ25lZC1vZmYtYnk6IFJhZ2h1bmF0aCBMb2x1ciA8UmFnaHVuYXRoLkxvbHVyQGtwaXQuY29tPgorU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGdpdC9zeXNkZXBzL25wdGwvZm9yay5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3lzZGVwcy9ucHRsL2ZvcmsuYyAgICAgICAyMDE3LTA4LTAzIDE2OjAyOjE1LjY3NDcwNDA4MCArMDgwMAorKysrIGdpdC9zeXNkZXBzL25wdGwvZm9yay5jICAgIDIwMTctMDgtMDQgMTg6MTU6MDIuNDYzMzYyMDE1ICswODAwCitAQCAtMjUsNiArMjUsNyBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSA8aHAtdGltaW5nLmg+CisgI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrI2luY2x1ZGUgPGxpYmMtbG9jay5oPgorICNpbmNsdWRlIDxzdGRpby1sb2NrLmg+CisgI2luY2x1ZGUgPGF0b21pYy5oPgorICNpbmNsdWRlIDxucHRsL3B0aHJlYWRQLmg+CitAQCAtNjAsNiArNjEsMTAgQEAKKyAgICAgIGJ1dCBvdXIgY3VycmVudCBmb3JrIGltcGxlbWVudGF0aW9uIGlzIG5vdC4gICovCisgICBib29sIG11bHRpcGxlX3RocmVhZHMgPSBUSFJFQURfR0VUTUVNIChUSFJFQURfU0VMRiwgaGVhZGVyLm11bHRpcGxlX3RocmVhZHMpOworIAorKyAgLyogZ3JhYiBsZC5zbyBsb2NrIEJFRk9SRSBzd2l0Y2hpbmcgdG8gbWFsbG9jX2F0Zm9yayAqLworKyAgX19ydGxkX2xvY2tfbG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOworKyAgX19ydGxkX2xvY2tfbG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworKworICAgLyogUnVuIGFsbCB0aGUgcmVnaXN0ZXJlZCBwcmVwYXJhdGlvbiBoYW5kbGVycy4gIEluIHJldmVyc2Ugb3JkZXIuCisgICAgICBXaGlsZSBkb2luZyB0aGlzIHdlIGJ1aWxkIHVwIGEgbGlzdCBvZiBhbGwgdGhlIGVudHJpZXMuICAqLworICAgc3RydWN0IGZvcmtfaGFuZGxlciAqcnVucDsKK0BAIC0yNDcsNiArMjUyLDEwIEBACisgCisgCSAgYWxscCA9IGFsbHAtPm5leHQ7CisgCX0KKysKKysgICAgICAvKiB1bmxvY2sgbGQuc28gbGFzdCwgYmVjYXVzZSB3ZSBsb2NrZWQgaXQgZmlyc3QgKi8KKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKKyAgICAgfQorIAorICAgcmV0dXJuIHBpZDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkMmI5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1SZXdvcmstZm5vLW9taXQtZnJhbWUtcG9pbnRlci1zdXBwb3J0LW9uLWkzODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBAQAotRnJvbSAxZWEwMDNkNGZjY2M0NjQ2ZmQxODQ4YTE4MjQwNWExYzcwMDBhYjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRoZW1lcnZhbCBaYW5lbGxhIDxhZGhlbWVydmFsLnphbmVsbGFAbGluYXJvLm9yZz4KLURhdGU6IFN1biwgOCBKYW4gMjAxNyAxMTozODoyMyAtMDIwMAotU3ViamVjdDogW1BBVENIIDI4LzI4XSBSZXdvcmsgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgc3VwcG9ydCBvbiBpMzg2Ci0KLUNvbW1pdCA2YjFkZjhiMjdmIGZpeGVkIHRoZSAtT1MgYnVpbGQgaXNzdWUgb24gaTM4NiAoQlojMjA3MjkpIGJ5Ci1leHBsaWNpdGluZyBkaXNhYmxpbmcgZnJhbWUgcG9pbnRlciAoLWZvbWl0LWZyYW1lLXBvaW50ZXIpIG9uIHRoZQotZmF1bHR5IG9iamVjdHMuICBBbHRob3VnaCBpdCBkb2VzIGZpeCB0aGUgaXNzdWUsIGl0IGlzIGEgc3VicGFyCi13b3JrYXJvdW5kIHRoYXQgYWRkcyBjb21wbGV4aXR5IGluIGJ1aWxkIHByb2Nlc3MgKGEgcnVsZSBmb3IgZWFjaAotb2JqZWN0IHRvIGFkZCB0aGUgcmVxdWlyZWQgY29tcGlsZXIgb3B0aW9uIGFuZCBwb250ZW50aWFsbHkgbW9yZQotcnVsZXMgZm9yIG9iamVjdHMgdGhhdCBjYWxsIHtJTkxJTkUsSU5URVJOQUx9X1NZU0NBTEwpIGFuZCBkb2VzIG5vdAotYWxsb3cgdGhlIGltcGxlbWVudGF0aW9ucyB0byBnZXQgYWxsIHRoZSBwb3NzaWJsZSBkZWJ1Zy9jYWxsdHJhY2sKLWluZm9ybWF0aW9uIHBvc3NpYmxlICh1c2VkIG1haW5seSBpbiBkZWJ1Z2dlcnMgYW5kIHBlcmZvcm1hbmNlCi1tZWFzdXJlbWVudCB0b29scykuCi0KLVRoaXMgcGF0Y2ggZml4ZXMgaXQgYnkgYWRkaW5nIGFuIGV4cGxpY2l0IGNvbmZpZ3VyZSBjaGVjayB0byBzZWUKLWlmIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGlzIHNldCBhbmQgdG8gYWN0IGFjY29yZGluZ2x5IChzZXQgb3IKLW5vdCBPUFRJTUlaRV9GT1JfR0NDXzUpLiAgVGhlIG1ha2UgcnVsZXMgaXMgc2ltcGxpZmllZCBhbmQgb25seQotb25lIGlzIHJlcXVpcmVkOiB0byBhZGQgbGliYy1kby1zeXNjYWxsIG9uIGxvYWRlciBkdWUgbW1hcAotKHdoaWNoIHdpbGwgYmUgZW1wdHkgYW55d2F5IGZvciBkZWZhdWx0IGJ1aWxkIHdpdGgKLS1mb21pdC1mcmFtZS1wb2ludGVyKS4KLQotQ2hlY2tlZCBvbiBpMzg2LWxpbnV4LWdudSB3aXRoIEdDQyA2LjIuMSB3aXRoIENGTEFHUyBzZXRzIGFzCi0nLU9zJywgJy1PMiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcicsIGFuZCAnLU8yIC1mb21pdC1mcmFtZS1wb2ludGVyJy4KLUZvciAnLU9zJyB0aGUgdGVzdHN1aXRlIGlzc3VlcyBkZXNjcmliZWQgYnkgQlojMTk0NjMgYW5kIEJaIzE1MTA1Ci1zdGlsbCBhcHBsaWVkLgotCi1JdCBmaXhlcyBCWiAjMjEwMjksIGFsdGhvdWdoIGl0IGlzIG1hcmtlZCBhcyBkdXBsaWNhdGVkIG9mICMyMDcyOQotKEkgcmVvcGVuZWQgdG8gdHJhY2sgdGhpcyBjbGVhbnVwKS4KLQotCVtCWiAjMjEwMjldCi0JKiBjb25maWcuaC5pbiBbQ0FOX1VTRV9SRUdJU1RFUl9BU01fRUJQXTogTmV3IGRlZmluZS4KLQkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUKLQlbJChzdWJkaXIpID0gZWxmXSAoc3lzZGVwLWRsLXJvdXRpbmVzKTogQWRkIGxpYmMtZG8tc3lzY2FsbC4KLQkodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKTogUmVtb3ZlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLWVwb2xsX3B3YWl0Lm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbWlzY10gKENGTEFHUy1lcG9sbF9wd2FpdC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLW1tYXAubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLW1tYXAub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbWlzY10gKENGTEFHUy1tbWFwNjQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLW1tYXA2NC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLXBzZWxlY3Qubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoY2ZsYWdzLXBzZWxlY3Qubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoY2ZsYWdzLXBzZWxlY3Qub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbWlzY10gKGNmbGFncy1ydGxkLW1tYXAub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gc3lzdmlwY10gKGNmbGFncy1zZW10aW1lZG9wLm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gc3lzdmlwY10gKGNmbGFncy1zZW10aW1lZG9wLm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhZHZpc2U2NC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhZHZpc2U2NC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1wb3NpeF9mYWxsb2NhdGUubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1wb3NpeF9mYWxsb2NhdGUub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtcG9zaXhfZmFsbG9jYXRlNjQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1wb3NpeF9mYWxsb2NhdGU2NC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1zeW5jX2ZpbGVfcmFuZ2Uubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1zeW5jX2ZpbGVfcmFuZ2Uub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtZmFsbG9jYXRlLm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtZmFsbG9jYXRlLm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLWZhbGxvY2F0ZTY0Lm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtZmFsbG9jYXRlNjQub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vKToKLQlMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vcyk6Ci0JTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWRyd2xvY2subyk6Ci0JTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWRyd2xvY2sub3MpOgotCUxpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXNlbV93YWl0Lm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1zZW1fd2FpdC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXNlbV90aW1lZHdhaXQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXNlbV90aW1lZHdhaXQub3MpOiBMaWtld2lzZS4KLQkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjOiBBZGQgY2hlY2sgaWYgY29tcGlsZXIgYWxsb3dzCi0JZWJwIG9uIGlubGluZSBhc3NlbWJseS4KLQkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaCAoT1BUSU1JWkVfRk9SX0dDQ181KToKLQlTZXQgaWYgQ0FOX1VTRV9SRUdJU1RFUl9BU01fRUJQIGlzIHNldC4KLQkoY2hlY2tfY29uc2lzdGVuY3kpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gIGh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdGRpZmY7aD0zYjMzZDZlZDYwOTZjMWQyMGQwNWE2NTBiMDYwMjZkNjczZjczOTlhCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWcuaC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L01ha2VmaWxlICAgICB8IDM5ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZSAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYyB8IDE3ICsrKysrKysrKysrKysrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaCAgICAgfCAgNiArKy0tLQotIDUgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWcuaC5pbiBiL2NvbmZpZy5oLmluCi1pbmRleCA3YmZlOTIzLi5mYjJjYzUxIDEwMDY0NAotLS0tIGEvY29uZmlnLmguaW4KLSsrKyBiL2NvbmZpZy5oLmluCi1AQCAtMjU5LDQgKzI1OSw4IEBACi0gLyogQnVpbGQgZ2xpYmMgd2l0aCB0dW5hYmxlcyBzdXBwb3J0LiAgKi8KLSAjZGVmaW5lIEhBVkVfVFVOQUJMRVMgMAotIAotKy8qIFNvbWUgY29tcGlsZXIgb3B0aW9ucyBtYXkgbm93IGFsbG93IHRvIHVzZSBlYnAgaW4gX19hc21fXyAodXNlZCBtYWlubHkKLSsgICBpbiBpMzg2IDYgYXJndW1lbnQgc3lzY2FsbCBpc3N1ZSkuICAqLwotKyNkZWZpbmUgQ0FOX1VTRV9SRUdJU1RFUl9BU01fRUJQIDAKLSsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L01ha2VmaWxlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotaW5kZXggOTYwOTc1Mi4uNmFhYzBkZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUKLUBAIC0xLDQ3ICsxLDE4IEBACi0gIyBUaGUgZGVmYXVsdCBBQkkgaXMgMzIuCi0gZGVmYXVsdC1hYmkgOj0gMzIKLSAKLS0jICVlYnAgaXMgdXNlZCB0byBwYXNzIHRoZSA2dGggYXJndW1lbnQgdG8gc3lzdGVtIGNhbGxzLCBzbyB0aGVzZQotLSMgc3lzdGVtIGNhbGxzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBhIGZyYW1lIHBvaW50ZXIuCi0tdXNlcy02LXN5c2NhbGwtYXJndW1lbnRzID0gLWZvbWl0LWZyYW1lLXBvaW50ZXIKLS0KLSBpZmVxICgkKHN1YmRpciksbWlzYykKLSBzeXNkZXBfcm91dGluZXMgKz0gaW9wZXJtIGlvcGwgdm04NgotLUNGTEFHUy1lcG9sbF9wd2FpdC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1lcG9sbF9wd2FpdC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtbW1hcC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwNjQubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtbW1hcDY0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1wc2VsZWN0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBzZWxlY3Qub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXJ0bGQtbW1hcC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1lbmRpZgotLQotLWlmZXEgKCQoc3ViZGlyKSxzeXN2aXBjKQotLUNGTEFHUy1zZW10aW1lZG9wLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbXRpbWVkb3Aub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0gZW5kaWYKLSAKLSBpZmVxICgkKHN1YmRpciksZWxmKQotK3N5c2RlcC1kbC1yb3V0aW5lcyArPSBsaWJjLWRvLXN5c2NhbGwKLSBzeXNkZXAtb3RoZXJzICs9IGxkZGxpYmM0Ci0gaW5zdGFsbC1iaW4gKz0gbGRkbGliYzQKLSBlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxpbykKLSBzeXNkZXBfcm91dGluZXMgKz0gbGliYy1kby1zeXNjYWxsCi0tQ0ZMQUdTLXBvc2l4X2ZhZHZpc2U2NC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1wb3NpeF9mYWR2aXNlNjQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1wb3NpeF9mYWxsb2NhdGUub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZTY0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZTY0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zeW5jX2ZpbGVfcmFuZ2UubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1Mtc3luY19maWxlX3JhbmdlLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1mYWxsb2NhdGUubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtZmFsbG9jYXRlLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1mYWxsb2NhdGU2NC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1mYWxsb2NhdGU2NC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLSBlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxucHRsKQotQEAgLTYxLDE0ICszMiw2IEBAIGlmZXEgKCQoc3ViZGlyKSxucHRsKQotICMgcHVsbCBpbiBfX3N5c2NhbGxfZXJyb3Igcm91dGluZQotIGxpYnB0aHJlYWQtcm91dGluZXMgKz0gc3lzZGVwCi0gbGlicHRocmVhZC1zaGFyZWQtb25seS1yb3V0aW5lcyArPSBzeXNkZXAKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWRyZGxvY2subyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWRyZGxvY2sub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkd3Jsb2NrLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkd3Jsb2NrLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zZW1fd2FpdC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zZW1fd2FpdC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1Mtc2VtX3RpbWVkd2FpdC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zZW1fdGltZWR3YWl0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotIGVuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLHJ0KQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUKLWluZGV4IGViNzI2NTkuLmFlMmMzNTYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUKLUBAIC0zLDUgKzMsNDQgQEAKLSAKLSBhcmNoX21pbmltdW1fa2VybmVsPTIuNi4zMgotIAotKyMgQ2hlY2sgaWYgQ0ZMQUdTIGFsbG93cyBjb21waWxlciB0byB1c2UgZWJwIHJlZ2lzdGVyIGluIGlubGluZSBhc3NlbWJseS4KLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIGNvbXBpbGVyIGZsYWdzIGFsbG93cyBlYnAgaW4gaW5saW5lIGFzc2VtYmx5IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiBjb21waWxlciBmbGFncyBhbGxvd3MgZWJwIGluIGlubGluZSBhc3NlbWJseS4uLiAiID4mNjsgfQotK2lmICR7bGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnArOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rCi0rY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLSsgICAgdm9pZCBmb28gKGludCBpKQotKyAgICB7Ci0rICAgICAgcmVnaXN0ZXIgaW50IHJlZyBhc20gKCJlYnAiKSA9IGk7Ci0rICAgICAgYXNtICgiIyAlMCIgOiA6ICJyIiAocmVnKSk7Ci0rICAgIH0KLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGxpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwPXllcwotK2Vsc2UKLSsgIGxpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwPW5vCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnAiID4mNQotKyRhc19lY2hvICIkbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnAiID4mNjsgfQotK2lmIHRlc3QgJGxpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwID0geWVzOyB0aGVuCi0rICAkYXNfZWNobyAiI2RlZmluZSBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSBsaWJjX2N2X2djY191bndpbmRfZmluZF9mZGU9eWVzCi0gbGRkX3Jld3JpdGVfc2NyaXB0PXN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2xkZC1yZXdyaXRlLnNlZAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWMKLWluZGV4IDFhMTFkYTYuLjFjZDYzMmUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWMKLUBAIC0zLDUgKzMsMjIgQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAKLSBhcmNoX21pbmltdW1fa2VybmVsPTIuNi4zMgotIAotKyMgQ2hlY2sgaWYgQ0ZMQUdTIGFsbG93cyBjb21waWxlciB0byB1c2UgZWJwIHJlZ2lzdGVyIGluIGlubGluZSBhc3NlbWJseS4KLStBQ19DQUNIRV9DSEVDSyhbaWYgY29tcGlsZXIgZmxhZ3MgYWxsb3dzIGVicCBpbiBpbmxpbmUgYXNzZW1ibHldLAotKyAgICAgICAgICAgICAgICBsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCwgWwotK0FDX0NPTVBJTEVfSUZFTFNFKAotKyAgW0FDX0xBTkdfUFJPR1JBTShbCi0rICAgIHZvaWQgZm9vIChpbnQgaSkKLSsgICAgewotKyAgICAgIHJlZ2lzdGVyIGludCByZWcgYXNtICgiZWJwIikgPSBpOwotKyAgICAgIGFzbSAoIiMgJTAiIDogOiAiciIgKHJlZykpOwotKyAgICB9XSldLAotKyAgW2xpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwPXllc10sCi0rICBbbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9bm9dKQotK10pCi0raWYgdGVzdCAkbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnAgPSB5ZXM7IHRoZW4KLSsgIEFDX0RFRklORShDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlApCi0rZmkKLSsKLSBsaWJjX2N2X2djY191bndpbmRfZmluZF9mZGU9eWVzCi0gbGRkX3Jld3JpdGVfc2NyaXB0PXN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2xkZC1yZXdyaXRlLnNlZAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmggYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCi1pbmRleCBiYWY0NjQyLi40NDliMjNlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaAotQEAgLTQ0LDkgKzQ0LDkgQEAKLSAvKiBTaW5jZSBHQ0MgNSBhbmQgYWJvdmUgY2FuIHByb3Blcmx5IHNwaWxsICVlYnggd2l0aCBQSUMgd2hlbiBuZWVkZWQsCi0gICAgd2UgY2FuIGlubGluZSBzeXNjYWxscyB3aXRoIDYgYXJndW1lbnRzIGlmIEdDQyA1IG9yIGFib3ZlIGlzIHVzZWQKLSAgICB0byBjb21waWxlIGdsaWJjLiAgRGlzYWJsZSBHQ0MgNSBvcHRpbWl6YXRpb24gd2hlbiBjb21waWxpbmcgZm9yCi0tICAgcHJvZmlsaW5nIHNpbmNlIGFzbSAoImVicCIpIGNhbid0IGJlIHVzZWQgdG8gcHV0IHRoZSA2dGggYXJndW1lbnQKLS0gICBpbiAlZWJwIGZvciBzeXNjYWxsLiAgKi8KLS0jaWYgX19HTlVDX1BSRVJFUSAoNSwwKSAmJiAhZGVmaW5lZCBQUk9GCi0rICAgcHJvZmlsaW5nIG9yIHdoZW4gLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXMgdXNlZCBzaW5jZSBhc20gKCJlYnAiKQotKyAgIGNhbid0IGJlIHVzZWQgdG8gcHV0IHRoZSA2dGggYXJndW1lbnQgaW4gJWVicCBmb3Igc3lzY2FsbC4gICovCi0rI2lmIF9fR05VQ19QUkVSRVEgKDUsMCkgJiYgIWRlZmluZWQgUFJPRiAmJiBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAKLSAjIGRlZmluZSBPUFRJTUlaRV9GT1JfR0NDXzUKLSAjZW5kaWYKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYXNzZXJ0LVN1cHBvcnQtdHlwZXMtd2l0aG91dC1vcGVyYXRvci1pbnQtQlotMjE5NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzcwNTBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYXNzZXJ0LVN1cHBvcnQtdHlwZXMtd2l0aG91dC1vcGVyYXRvci1pbnQtQlotMjE5NzIucGF0Y2gKQEAgLTAsMCArMSwxOTQgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworKiBmaXhlcyAibGFtYmRhLWV4cHJlc3Npb24gaW4gdW5ldmFsdWF0ZWQgY29udGV4dCIgY29tcGlsZSBmYWlsdXJlcyBzdWNoIGFzCisgIGh0dHBzOi8vZ2l0aHViLmNvbS9ubG9obWFubi9qc29uL2lzc3Vlcy83MDUKKworKiBmaXhlcyAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcj09IiBjb21waWxlIGZhaWx1cmVzIHN1Y2ggYXMKKyAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNDgyOTkwCisKKyogQ2hhbmdlbG9nIGVkaXQgd2FzIHJlbW92ZWQgZnJvbSB1cHN0cmVhbSBjb21taXQgYmVjYXVzZSBpdCBjYXVzZWQgY29uZmxpY3QKKworU2lnbmVkLW9mZi1ieTogUy4gTG9ja3dvb2QtQ2hpbGRzIDxzamxAdmN0bGFicy5jb20+CisKK0Zyb20gYjU4ODlkMjVlOWJmOTQ0YTg5ZmRkN2JjYWJmM2I2YzZmNmJiNmY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDIxIEF1ZyAyMDE3IDEzOjAzOjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGFzc2VydDogU3VwcG9ydCB0eXBlcyB3aXRob3V0IG9wZXJhdG9yPT0gKGludCkgW0JaICMyMTk3Ml0KKworLS0tCisgYXNzZXJ0L01ha2VmaWxlICAgICAgICAgIHwgMTEgKysrKysrLQorIGFzc2VydC9hc3NlcnQuaCAgICAgICAgICB8IDE2ICsrKysrKy0tLS0KKyBhc3NlcnQvdHN0LWFzc2VydC1jKysuY2MgfCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBhc3NlcnQvdHN0LWFzc2VydC1nKysuY2MgfCAxOSArKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBhc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCisKK2RpZmYgLS1naXQgYS9hc3NlcnQvTWFrZWZpbGUgYi9hc3NlcnQvTWFrZWZpbGUKK2luZGV4IDFjM2JlOWIuLjllYzFiZTggMTAwNjQ0CistLS0gYS9hc3NlcnQvTWFrZWZpbGUKKysrKyBiL2Fzc2VydC9NYWtlZmlsZQorQEAgLTI1LDYgKzI1LDE1IEBAIGluY2x1ZGUgLi4vTWFrZWNvbmZpZworIGhlYWRlcnMJOj0gYXNzZXJ0LmgKKyAKKyByb3V0aW5lcyA6PSBhc3NlcnQgYXNzZXJ0LXBlcnIgX19hc3NlcnQKKy10ZXN0cyA6PSB0ZXN0LWFzc2VydCB0ZXN0LWFzc2VydC1wZXJyCisrdGVzdHMgOj0gdGVzdC1hc3NlcnQgdGVzdC1hc3NlcnQtcGVyciB0c3QtYXNzZXJ0LWMrKyB0c3QtYXNzZXJ0LWcrKworIAorIGluY2x1ZGUgLi4vUnVsZXMKKysKKytpZmVxICgkKGhhdmUtY3h4LXRocmVhZF9sb2NhbCkseWVzKQorK0NGTEFHUy10c3QtYXNzZXJ0LWMrKy5vID0gLXN0ZD1jKysxMQorK0xETElCUy10c3QtYXNzZXJ0LWMrKyA9IC1sc3RkYysrCisrQ0ZMQUdTLXRzdC1hc3NlcnQtZysrLm8gPSAtc3RkPWdudSsrMTEKKytMRExJQlMtdHN0LWFzc2VydC1nKysgPSAtbHN0ZGMrKworK2Vsc2UKKyt0ZXN0cy11bnN1cHBvcnRlZCArPSB0c3QtYXNzZXJ0LWMrKyB0c3QtYXNzZXJ0LWcrKworK2VuZGlmCitkaWZmIC0tZ2l0IGEvYXNzZXJ0L2Fzc2VydC5oIGIvYXNzZXJ0L2Fzc2VydC5oCitpbmRleCA2ODAxY2ZlLi42NDBjOTVjIDEwMDY0NAorLS0tIGEvYXNzZXJ0L2Fzc2VydC5oCisrKysgYi9hc3NlcnQvYXNzZXJ0LmgKK0BAIC04NSw3ICs4NSwxMiBAQCBfX0VORF9ERUNMUworIC8qIFdoZW4gcG9zc2libGUsIGRlZmluZSBhc3NlcnQgc28gdGhhdCBpdCBkb2VzIG5vdCBhZGQgZXh0cmEKKyAgICBwYXJlbnRoZXNlcyBhcm91bmQgRVhQUi4gIE90aGVyd2lzZSwgdGhvc2UgYWRkZWQgcGFyZW50aGVzZXMgd291bGQKKyAgICBzdXBwcmVzcyB3YXJuaW5ncyB3ZSdkIGV4cGVjdCB0byBiZSBkZXRlY3RlZCBieSBnY2MncyAtV3BhcmVudGhlc2VzLiAgKi8KKy0jIGlmICFkZWZpbmVkIF9fR05VQ19fIHx8IGRlZmluZWQgX19TVFJJQ1RfQU5TSV9fCisrIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCisrIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCisrICAgICAoc3RhdGljX2Nhc3QgPGJvb2w+IChleHByKQkJCQkJCVwKKysgICAgICA/IHZvaWQgKDApCQkJCQkJCVwKKysgICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkKKysjIGVsaWYgIWRlZmluZWQgX19HTlVDX18gfHwgZGVmaW5lZCBfX1NUUklDVF9BTlNJX18KKyAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKKyAgICAgKChleHByKQkJCQkJCQkJXAorICAgICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAorQEAgLTkzLDEyICs5OCwxMSBAQCBfX0VORF9ERUNMUworICMgZWxzZQorIC8qIFRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIEVYUFIgaXMgbm90IGV2YWx1YXRlZCBkdWUgdG8gdGhlIHNpemVvZiwKKyAgICBidXQgd2lsbCB0cmlnZ2VyIGFueSBwZWRhbnRpYyB3YXJuaW5ncyBtYXNrZWQgYnkgdGhlIF9fZXh0ZW5zaW9uX18KKy0gICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIGV4cGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCB6ZXJvIGlzCistICAgcmVxdWlyZWQgdG8gc3VwcG9ydCBmdW5jdGlvbiBwb2ludGVycyBhbmQgYml0IGZpZWxkcyBpbiB0aGlzCistICAgY29udGV4dCwgYW5kIHRvIHN1cHByZXNzIHRoZSBldmFsdWF0aW9uIG9mIHZhcmlhYmxlIGxlbmd0aAorLSAgIGFycmF5cy4gICovCisrICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yIGlzIHJlcXVpcmVkIHRvCisrICAgc3VwcG9ydCBmdW5jdGlvbiBwb2ludGVycyBhbmQgYml0IGZpZWxkcyBpbiB0aGlzIGNvbnRleHQsIGFuZCB0bworKyAgIHN1cHByZXNzIHRoZSBldmFsdWF0aW9uIG9mIHZhcmlhYmxlIGxlbmd0aCBhcnJheXMuICAqLworICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAorLSAgKCh2b2lkKSBzaXplb2YgKChleHByKSA9PSAwKSwgX19leHRlbnNpb25fXyAoewkJCVwKKysgICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPyAxIDogMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCisgICAgICAgaWYgKGV4cHIpCQkJCQkJCQlcCisgICAgICAgICA7IC8qIGVtcHR5ICovCQkJCQkJCVwKKyAgICAgICBlbHNlCQkJCQkJCQlcCitkaWZmIC0tZ2l0IGEvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjIGIvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTJhNWU2OQorLS0tIC9kZXYvbnVsbAorKysrIGIvYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCitAQCAtMCwwICsxLDc4IEBACisrLyogVGVzdHMgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIEMrKyBhbmQgYXNzZXJ0LgorKyAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQorKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKworKy8qIFRoZSBDKysgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBpZiB0aGUgYXNzZXJ0IGFyZ3VtZW50IGlzIGEgY29uc3RhbnQKKysgICBzdWJleHByZXNzaW9uLCB0aGVuIHRoZSBhc3NlcnQgaXRzZWxmIGlzIG9uZSwgdG9vLiAgKi8KKytjb25zdGV4cHIgaW50CisrY2hlY2tfY29uc3RleHByICgpCisreworKyAgcmV0dXJuIChhc3NlcnQgKHRydWUpLCAxKTsKKyt9CisrCisrLyogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbiBiZSBjb250ZXh0dWFsbHkgY29udmVydGVkIHRvIGJvb2wsIGJ1dAorKyAgIGNhbm5vdCBiZSBjb21wYXJlZCB0byBpbnQuICAqLworK3N0cnVjdCBub19pbnQKKyt7CisrICBub19pbnQgKCkgPSBkZWZhdWx0OworKyAgbm9faW50IChjb25zdCBub19pbnQgJikgPSBkZWxldGU7CisrCisrICBleHBsaWNpdCBvcGVyYXRvciBib29sICgpIGNvbnN0CisrICB7CisrICAgIHJldHVybiB0cnVlOworKyAgfQorKworKyAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3I9PSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3IhPSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworK307CisrCisrLyogVGhpcyBjbGFzcyB0ZXN0cyB0aGF0IG9wZXJhdG9yPT0gaXMgbm90IHVzZWQgYnkgYXNzZXJ0LiAgKi8KKytzdHJ1Y3QgYm9vbF9hbmRfaW50CisreworKyAgYm9vbF9hbmRfaW50ICgpID0gZGVmYXVsdDsKKysgIGJvb2xfYW5kX2ludCAoY29uc3Qgbm9faW50ICYpID0gZGVsZXRlOworKworKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCAoKSBjb25zdAorKyAgeworKyAgICByZXR1cm4gdHJ1ZTsKKysgIH0KKysKKysgIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KKysgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yPT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KKysgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yIT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KKyt9OworKworK3N0YXRpYyBpbnQKKytkb190ZXN0ICgpCisreworKyAgeworKyAgICBub19pbnQgdmFsdWU7CisrICAgIGFzc2VydCAodmFsdWUpOworKyAgfQorKworKyAgeworKyAgICBib29sX2FuZF9pbnQgdmFsdWU7CisrICAgIGFzc2VydCAodmFsdWUpOworKyAgfQorKworKyAgcmV0dXJuIDA7CisrfQorKworKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmM+CitkaWZmIC0tZ2l0IGEvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjIGIvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGMwNjQwMgorLS0tIC9kZXYvbnVsbAorKysrIGIvYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjCitAQCAtMCwwICsxLDE5IEBACisrLyogVGVzdHMgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIEMrKyBhbmQgYXNzZXJ0LiAgR05VIEMrKzExIHZlcnNpb24uCisrICAgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisrICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8dHN0LWFzc2VydC1jKysuY2M+CistLSAKKzEuOS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTA1MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gYTc2Mzc2ZGY3YzA3ZTU3N2E5NTE1YzNmYWE1ZGJkNTBiZGE1ZGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBGcmksIDIwIE9jdCAyMDE3IDE4OjQxOjE0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE1NjcwOiBnbG9iOiBGaXggb25lLWJ5dGUgb3ZlcmZsb3cgW0JaICMyMjMyMF0KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYzM2OWQ2NmU1NDI2YTMwZTQ3MjViMTAwZDVjZDI4ZTM3Mjc1NGY5MCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNTY3MAorQWZmZWN0czogZ2xpYmMgPCAyLjI3CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgQ2hhbmdlTG9nICAgIHwgNiArKysrKysKKyBORVdTICAgICAgICAgfCA1ICsrKysrCisgcG9zaXgvZ2xvYi5jIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogZ2l0L05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9ORVdTCisrKysgZ2l0L05FV1MKK0BAIC0yMDYsNiArMjA2LDExIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKKyAqIEEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBpbiBjbG50dWRwX2NhbGwgaW4gdGhlIFN1biBSUEMgc3lzdGVtIGhhcyBiZWVuCisgICBmaXhlZCAoQ1ZFLTIwMTctMTIxMzMpLgorIAorKyAgQ1ZFLTIwMTctMTU2NzA6IFRoZSBnbG9iIGZ1bmN0aW9uLCB3aGVuIGludm9rZWQgd2l0aCBHTE9CX1RJTERFLAorKyAgc3VmZmVyZWQgZnJvbSBhIG9uZS1ieXRlIG92ZXJmbG93IGR1cmluZyB+IG9wZXJhdG9yIHByb2Nlc3NpbmcgKGVpdGhlcgorKyAgb24gdGhlIHN0YWNrIG9yIHRoZSBoZWFwLCBkZXBlbmRpbmcgb24gdGhlIGxlbmd0aCBvZiB0aGUgdXNlciBuYW1lKS4KKysgIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9wb3NpeC9nbG9iLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3NpeC9nbG9iLmMKKysrKyBnaXQvcG9zaXgvZ2xvYi5jCitAQCAtODQzLDcgKzg0Myw3IEBAIGdsb2IgKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBmbGFncywgaW4KKyAJCSAgKnAgPSAnXDAnOworIAkJfQorIAkgICAgICBlbHNlCistCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUpKQorKwkJKigoY2hhciAqKSBtZW1wY3B5IChuZXdwLCBkaXJuYW1lICsgMSwgZW5kX25hbWUgLSBkaXJuYW1lIC0gMSkpCisgCQkgID0gJ1wwJzsKKyAJICAgICAgdXNlcl9uYW1lID0gbmV3cDsKKyAJICAgIH0KK0luZGV4OiBnaXQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ2l0L0NoYW5nZUxvZworQEAgLTEsMyArMSw5IEBACisrMjAxNy0xMC0yMCAgUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKysKKysgICAgICAgW0JaICMyMjMyMF0KKysgICAgICAgQ1ZFLTIwMTctMTU2NzAKKysgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdy4KKysKKyAyMDE3LTA4LTAyICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEBzb3VyY2V3YXJlLm9yZz4KKyAKKyAJKiB2ZXJzaW9uLmggKFJFTEVBU0UpOiBTZXQgdG8gInN0YWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTY5MjgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcxLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gZjFjZjk4YjU4Mzc4N2NmYjYyNzhiYWVhNDZlMjg2YTBlZTc1NjdmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBTdW4sIDIyIE9jdCAyMDE3IDEwOjAwOjU3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdsb2I6IEZpeCBidWZmZXIgb3ZlcmZsb3cgZHVyaW5nIEdMT0JfVElMREUgdW5lc2NhcGluZyBbQloKKyAjMjIzMzJdCisKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGExNTliNTNmYTA1OTk0N2NjMjU0OGUzYjBkNWJkY2Y3Yjk2MzBiYTgpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTU2NzEKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBDaGFuZ2VMb2cgICAgfCA2ICsrKysrKworIE5FV1MgICAgICAgICB8IDQgKysrKworIHBvc2l4L2dsb2IuYyB8IDQgKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTkVXUworKysrIGdpdC9ORVdTCitAQCAtMjExLDYgKzIxMSwxMCBAQCBTZWN1cml0eSByZWxhdGVkIGNoYW5nZXM6CisgICBvbiB0aGUgc3RhY2sgb3IgdGhlIGhlYXAsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSB1c2VyIG5hbWUpLgorICAgUmVwb3J0ZWQgYnkgVGltIFLDvGhzZW4uCisgCisrICBUaGUgZ2xvYiBmdW5jdGlvbiwgd2hlbiBpbnZva2VkIHdpdGggR0xPQl9USUxERSBhbmQgd2l0aG91dAorKyAgR0xPQl9OT0VTQ0FQRSwgY291bGQgd3JpdGUgcGFzdCB0aGUgZW5kIG9mIGEgYnVmZmVyIHdoaWxlCisrICB1bmVzY2FwaW5nIHVzZXIgbmFtZXMuICBSZXBvcnRlZCBieSBUaW0gUsO8aHNlbi4KKysKKyBUaGUgZm9sbG93aW5nIGJ1Z3MgYXJlIHJlc29sdmVkIHdpdGggdGhpcyByZWxlYXNlOgorIAorICAgWzk4NF0gbmV0d29yazogUmVzcG9uZCB0byBjaGFuZ2VkIHJlc29sdi5jb25mIGluIGdldGhvc3RieW5hbWUKK0luZGV4OiBnaXQvcG9zaXgvZ2xvYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcG9zaXgvZ2xvYi5jCisrKysgZ2l0L3Bvc2l4L2dsb2IuYworQEAgLTgyMywxMSArODIzLDExIEBAIGdsb2IgKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBmbGFncywgaW4KKyAJCSAgY2hhciAqcCA9IG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLAorIAkJCQkgICAgIHVuZXNjYXBlIC0gZGlybmFtZSAtIDEpOworIAkJICBjaGFyICpxID0gdW5lc2NhcGU7CistCQkgIHdoaWxlICgqcSAhPSAnXDAnKQorKwkJICB3aGlsZSAocSAhPSBlbmRfbmFtZSkKKyAJCSAgICB7CisgCQkgICAgICBpZiAoKnEgPT0gJ1xcJykKKyAJCQl7CistCQkJICBpZiAocVsxXSA9PSAnXDAnKQorKwkJCSAgaWYgKHEgKyAxID09IGVuZF9uYW1lKQorIAkJCSAgICB7CisgCQkJICAgICAgLyogIn5mb1xcb1xcIiB1bmVzY2FwZSB0byB1c2VyX25hbWUgImZvb1xcIiwKKyAJCQkJIGJ1dCAifmZvXFxvXFwvIiB1bmVzY2FwZSB0byB1c2VyX25hbWUKK0luZGV4OiBnaXQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ2l0L0NoYW5nZUxvZworQEAgLTEsNSArMSwxMCBAQAorKworIDIwMTctMTAtMjAgIFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CisgCisrICAgICAgIFtCWiAjMjIzMzJdCisrICAgICAgICogcG9zaXgvZ2xvYi5jIChfX2dsb2IpOiBGaXggYnVmZmVyIG92ZXJmbG93IGR1cmluZyBHTE9CX1RJTERFCisrICAgICAgIHVuZXNjYXBpbmcuCisrCisgICAgICAgIFtCWiAjMjIzMjBdCisgICAgICAgIENWRS0yMDE3LTE1NjcwCisgICAgICAgICogcG9zaXgvZ2xvYi5jIChfX2dsb2IpOiBGaXggb25lLWJ5dGUgb3ZlcmZsb3cuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTY5OTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTY5OTcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg3MzFlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNjk5Ny5wYXRjaApAQCAtMCwwICsxLDE1MCBAQAorRnJvbSA0ZWJkMGM0MTkxYzYwNzNjYzhhN2M1ZmRjZjFkMTgyYzQ3MTliY2JiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorRGF0ZTogU2F0LCAzMCBEZWMgMjAxNyAxMDo1NDoyMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBlbGY6IENoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIGR5bmFtaWMgc3RyaW5nIHRva2VuCisgZXhwYW5zaW9uIFtCWiAjMjI2MjVdCisKK1RoZSBmaWxsaW5fcnBhdGggZnVuY3Rpb24gaW4gZWxmL2RsLWxvYWQuYyBsb29wcyBvdmVyIGVhY2ggUlBBVEggb3IKK1JVTlBBVEggdG9rZW5zIGFuZCBpbnRlcnByZXRzIGVtcHR5IHRva2VucyBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkKKygiLi8iKS4gSW4gcHJhY3RpY2UgdGhlIGNoZWNrIGZvciBlbXB0eSB0b2tlbiBpcyBkb25lICphZnRlciogdGhlCitkeW5hbWljIHN0cmluZyB0b2tlbiBleHBhbnNpb24uIFRoZSBleHBhbnNpb24gcHJvY2VzcyBjYW4gcmV0dXJuIGFuCitlbXB0eSBzdHJpbmcgZm9yIHRoZSAkT1JJR0lOIHRva2VuIGlmIF9fbGliY19lbmFibGVfc2VjdXJlIGlzIHNldAorb3IgaWYgdGhlIHBhdGggb2YgdGhlIGJpbmFyeSBjYW4gbm90IGJlIGRldGVybWluZWQgKC9wcm9jIG5vdCBtb3VudGVkKS4KKworRml4IHRoYXQgYnkgbW92aW5nIHRoZSBjaGVjayBmb3IgZW1wdHkgdG9rZW5zIGJlZm9yZSB0aGUgZHluYW1pYyBzdHJpbmcKK3Rva2VuIGV4cGFuc2lvbi4gSW4gYWRkaXRpb24sIGNoZWNrIGZvciBOVUxMIHBvaW50ZXIgb3IgZW1wdHkgc3RyaW5ncworcmV0dXJuIGJ5IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbi4KKworVGhlIGFib3ZlIGNoYW5nZXMgaGlnaGxpZ2h0ZWQgYSBidWcgaW4gZGVjb21wb3NlX3JwYXRoLCBhbiBlbXB0eSBhcnJheQoraXMgcmVwcmVzZW50ZWQgYnkgdGhlIGZpcnN0IGVsZW1lbnQgYmVpbmcgTlVMTCBhdCB0aGUgZmlsbGluX3JwYXRoCitsZXZlbCwgYnV0IGJ5IHVzaW5nIGEgLTEgcG9pbnRlciBpbiBkZWNvbXBvc2VfcnBhdGggYW5kIG90aGVyIGZ1bmN0aW9ucy4KKworQ2hhbmdlbG9nOgorCVtCWiAjMjI2MjVdCisJKiBlbGYvZGwtbG9hZC5jIChmaWxsaW5fcnBhdGgpOiBDaGVjayBmb3IgZW1wdHkgdG9rZW5zIGJlZm9yZSBkeW5hbWljCisJc3RyaW5nIHRva2VuIGV4cGFuc2lvbi4gQ2hlY2sgZm9yIE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmcgcG9zc2libHkKKwlyZXR1cm5lZCBieSBleHBhbmRfZHluYW1pY19zdHJpbmdfdG9rZW4uCisJKGRlY29tcG9zZV9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSBwYXRoIGFmdGVyIGR5bmFtaWMgc3RyaW5nCisJdG9rZW4gZXhwYW5zaW9uLgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgM2UzYzkwNGRhZWY2OWI4YmY3ZDVjYzA3Zjc5M2M5ZjA3YzM1NTNlZikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNjk5NworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICAgfCAxMCArKysrKysrKysrCisgTkVXUyAgICAgICAgICB8ICA0ICsrKysKKyBlbGYvZGwtbG9hZC5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL05FV1MKKysrKyBnaXQvTkVXUworQEAgLTIxNSw2ICsyMTUsMTAgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgorICAgR0xPQl9OT0VTQ0FQRSwgY291bGQgd3JpdGUgcGFzdCB0aGUgZW5kIG9mIGEgYnVmZmVyIHdoaWxlCisgICB1bmVzY2FwaW5nIHVzZXIgbmFtZXMuICBSZXBvcnRlZCBieSBUaW0gUsO8aHNlbi4KKyAKKysgIENWRS0yMDE3LTE2OTk3OiBJbmNvcnJlY3QgaGFuZGxpbmcgb2YgUlBBVEggb3IgUlVOUEFUSCBjb250YWluaW5nICRPUklHSU4KKysgIGZvciBBVF9TRUNVUkUgb3IgU1VJRCBiaW5hcmllcyBjb3VsZCBiZSB1c2VkIHRvIGxvYWQgbGlicmFyaWVzIGZyb20gdGhlCisrICBjdXJyZW50IGRpcmVjdG9yeS4KKysKKyBUaGUgZm9sbG93aW5nIGJ1Z3MgYXJlIHJlc29sdmVkIHdpdGggdGhpcyByZWxlYXNlOgorIAorICAgWzk4NF0gbmV0d29yazogUmVzcG9uZCB0byBjaGFuZ2VkIHJlc29sdi5jb25mIGluIGdldGhvc3RieW5hbWUKK0luZGV4OiBnaXQvZWxmL2RsLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2VsZi9kbC1sb2FkLmMKKysrKyBnaXQvZWxmL2RsLWxvYWQuYworQEAgLTQzMywzMiArNDMzLDQxIEBAIGZpbGxpbl9ycGF0aCAoY2hhciAqcnBhdGgsIHN0cnVjdCByX3NlYXIKKyB7CisgICBjaGFyICpjcDsKKyAgIHNpemVfdCBuZWxlbXMgPSAwOworLSAgY2hhciAqdG9fZnJlZTsKKyAKKyAgIHdoaWxlICgoY3AgPSBfX3N0cnNlcCAoJnJwYXRoLCBzZXApKSAhPSBOVUxMKQorICAgICB7CisgICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqZGlycDsKKysgICAgICBjaGFyICp0b19mcmVlID0gTlVMTDsKKysgICAgICBzaXplX3QgbGVuID0gMDsKKyAKKy0gICAgICB0b19mcmVlID0gY3AgPSBleHBhbmRfZHluYW1pY19zdHJpbmdfdG9rZW4gKGwsIGNwLCAxKTsKKysgICAgICAvKiBgc3Ryc2VwJyBjYW4gcGFzcyBhbiBlbXB0eSBzdHJpbmcuICAqLworKyAgICAgIGlmICgqY3AgIT0gJ1wwJykKKysJeworKwkgIHRvX2ZyZWUgPSBjcCA9IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbiAobCwgY3AsIDEpOworIAorLSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGNwKTsKKysJICAvKiBleHBhbmRfZHluYW1pY19zdHJpbmdfdG9rZW4gY2FuIHJldHVybiBOVUxMIGluIGNhc2Ugb2YgZW1wdHkKKysJICAgICBwYXRoIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuICAqLworKwkgIGlmIChjcCA9PSBOVUxMKQorKwkgICAgY29udGludWU7CisrCisrCSAgLyogQ29tcHV0ZSB0aGUgbGVuZ3RoIGFmdGVyIGR5bmFtaWMgc3RyaW5nIHRva2VuIGV4cGFuc2lvbiBhbmQKKysJICAgICBpZ25vcmUgZW1wdHkgcGF0aHMuICAqLworKwkgIGxlbiA9IHN0cmxlbiAoY3ApOworKwkgIGlmIChsZW4gPT0gMCkKKysJICAgIHsKKysJICAgICAgZnJlZSAodG9fZnJlZSk7CisrCSAgICAgIGNvbnRpbnVlOworKwkgICAgfQorIAorLSAgICAgIC8qIGBzdHJzZXAnIGNhbiBwYXNzIGFuIGVtcHR5IHN0cmluZy4gIFRoaXMgaGFzIHRvIGJlCistCSBpbnRlcnByZXRlZCBhcyBgdXNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeScuICovCistICAgICAgaWYgKGxlbiA9PSAwKQorLQl7CistCSAgc3RhdGljIGNvbnN0IGNoYXIgY3Vyd2RbXSA9ICIuLyI7CistCSAgY3AgPSAoY2hhciAqKSBjdXJ3ZDsKKysJICAvKiBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyAoZXhjZXB0IGZvciAiLyIpLiAgKi8KKysJICB3aGlsZSAobGVuID4gMSAmJiBjcFtsZW4gLSAxXSA9PSAnLycpCisrCSAgICAtLWxlbjsKKysKKysJICAvKiBOb3cgYWRkIG9uZSBpZiB0aGVyZSBpcyBub25lIHNvIGZhci4gICovCisrCSAgaWYgKGxlbiA+IDAgJiYgY3BbbGVuIC0gMV0gIT0gJy8nKQorKwkgICAgY3BbbGVuKytdID0gJy8nOworIAl9CisgCistICAgICAgLyogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMgKGV4Y2VwdCBmb3IgIi8iKS4gICovCistICAgICAgd2hpbGUgKGxlbiA+IDEgJiYgY3BbbGVuIC0gMV0gPT0gJy8nKQorLQktLWxlbjsKKy0KKy0gICAgICAvKiBOb3cgYWRkIG9uZSBpZiB0aGVyZSBpcyBub25lIHNvIGZhci4gICovCistICAgICAgaWYgKGxlbiA+IDAgJiYgY3BbbGVuIC0gMV0gIT0gJy8nKQorLQljcFtsZW4rK10gPSAnLyc7CistCisgICAgICAgLyogTWFrZSBzdXJlIHdlIGRvbid0IHVzZSB1bnRydXN0ZWQgZGlyZWN0b3JpZXMgaWYgd2UgcnVuIFNVSUQuICAqLworICAgICAgIGlmIChfX2dsaWJjX3VubGlrZWx5IChjaGVja190cnVzdGVkKSAmJiAhaXNfdHJ1c3RlZF9wYXRoIChjcCwgbGVuKSkKKyAJeworQEAgLTYyMSw2ICs2MzAsMTQgQEAgZGVjb21wb3NlX3JwYXRoIChzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9zdAorICAgICAgbmVjZXNzYXJ5LiAgKi8KKyAgIGZyZWUgKGNvcHkpOworIAorKyAgLyogVGhlcmUgaXMgbm8gcGF0aCBhZnRlciBleHBhbnNpb24uICAqLworKyAgaWYgKHJlc3VsdFswXSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZnJlZSAocmVzdWx0KTsKKysgICAgICBzcHMtPmRpcnMgPSAoc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqKikgLTE7CisrICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrCisgICBzcHMtPmRpcnMgPSByZXN1bHQ7CisgICAvKiBUaGUgY2FsbGVyIHdpbGwgY2hhbmdlIHRoaXMgdmFsdWUgaWYgd2UgaGF2ZW4ndCB1c2VkIGEgcmVhbCBtYWxsb2MuICAqLworICAgc3BzLT5tYWxsb2NlZCA9IDE7CitJbmRleDogZ2l0L0NoYW5nZUxvZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0NoYW5nZUxvZworKysrIGdpdC9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMTIgQEAKKysyMDE3LTEyLTMwICBBdXJlbGllbiBKYXJubyAgPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorKyAgICAgICAgICAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KKysKKysgICAgICAgW0JaICMyMjYyNV0KKysgICAgICAgKiBlbGYvZGwtbG9hZC5jIChmaWxsaW5fcnBhdGgpOiBDaGVjayBmb3IgZW1wdHkgdG9rZW5zIGJlZm9yZSBkeW5hbWljCisrICAgICAgIHN0cmluZyB0b2tlbiBleHBhbnNpb24uIENoZWNrIGZvciBOVUxMIHBvaW50ZXIgb3IgZW1wdHkgc3RyaW5nIHBvc3NpYmx5CisrICAgICAgIHJldHVybmVkIGJ5IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbi4KKysgICAgICAgKGRlY29tcG9zZV9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSBwYXRoIGFmdGVyIGR5bmFtaWMgc3RyaW5nCisrICAgICAgIHRva2VuIGV4cGFuc2lvbi4KKyAKKyAyMDE3LTEwLTIwICBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE3NDI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE3NDI2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZDFjYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTc0MjYucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSBkZjhjMjE5Y2I5ODdjZmU4NWM1NTBlZmE2OTNhMTM4M2ExMWUzOGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJqdW4gU2hhbmthciA8YXJqdW5AcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMzAgTm92IDIwMTcgMTM6MzE6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGludGVnZXIgb3ZlcmZsb3cgaW4gbWFsbG9jIHdoZW4gdGNhY2hlIGlzIGVuYWJsZWQgW0JaCisgIzIyMzc1XQorCitXaGVuIHRoZSBwZXItdGhyZWFkIGNhY2hlIGlzIGVuYWJsZWQsIF9fbGliY19tYWxsb2MgdXNlcyByZXF1ZXN0MnNpemUgKHdoaWNoCitkb2VzIG5vdCBwZXJmb3JtIGFuIG92ZXJmbG93IGNoZWNrKSB0byBjYWxjdWxhdGUgdGhlIGNodW5rIHNpemUgZnJvbSB0aGUKK3JlcXVlc3RlZCBhbGxvY2F0aW9uIHNpemUuIFRoaXMgbGVhZHMgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBjYXVzaW5nIG1hbGxvYwordG8gaW5jb3JyZWN0bHkgcmV0dXJuIHRoZSBsYXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYmxvY2sgd2hlbiBjYWxsZWQgd2l0aAorYSB2ZXJ5IGxhcmdlIHNpemUgYXJndW1lbnQgKGNsb3NlIHRvIFNJWkVfTUFYKS4KKworVGhpcyBjb21taXQgdXNlcyBjaGVja2VkX3JlcXVlc3Qyc2l6ZSBpbnN0ZWFkLCByZW1vdmluZyB0aGUgb3ZlcmZsb3cuCisKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDM0Njk3Njk0ZThhOTNiMzI1YjE4ZjI1ZjdkY2RlZDU1ZDZiYWVhZjYpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTc0MjYKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBDaGFuZ2VMb2cgICAgICAgfCA3ICsrKysrKysKKyBORVdTICAgICAgICAgICAgfCA2ICsrKysrKworIG1hbGxvYy9tYWxsb2MuYyB8IDMgKystCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL05FV1MKKysrKyBnaXQvTkVXUworQEAgLTQsNiArNCw4IEBAIFNlZSB0aGUgZW5kIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuCisgCisgUGxlYXNlIHNlbmQgR05VIEMgbGlicmFyeSBidWcgcmVwb3J0cyB2aWEgPGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS8+CisgdXNpbmcgYGdsaWJjJyBpbiB0aGUgInByb2R1Y3QiIGZpZWxkLgorKworK1syMjM3NV0gbWFsbG9jIHJldHVybnMgcG9pbnRlciBmcm9tIHRjYWNoZSBpbnN0ZWFkIG9mIE5VTEwgKENWRS0yMDE3LTE3NDI2KQorIAwKKyBWZXJzaW9uIDIuMjYKKyAKK0BAIC0yMTUsNiArMjE3LDExIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKKyAgIGZvciBBVF9TRUNVUkUgb3IgU1VJRCBiaW5hcmllcyBjb3VsZCBiZSB1c2VkIHRvIGxvYWQgbGlicmFyaWVzIGZyb20gdGhlCisgICBjdXJyZW50IGRpcmVjdG9yeS4KKyAKKysgIENWRS0yMDE3LTE3NDI2OiBUaGUgbWFsbG9jIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIGFuIG9iamVjdCBzaXplIG5lYXIKKysgIHRoZSB2YWx1ZSBTSVpFX01BWCwgd291bGQgcmV0dXJuIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBpcyB0b28gc21hbGwsCisrICBpbnN0ZWFkIG9mIE5VTEwuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCB3aXRoIHRoZSBuZXcgbWFsbG9jCisrICB0aHJlYWQgY2FjaGUgaW4gZ2xpYmMgMi4yNi4gIFJlcG9ydGVkIGJ5IElhaW4gQnVjbGF3LgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9tYWxsb2MvbWFsbG9jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9tYWxsb2MvbWFsbG9jLmMKKysrKyBnaXQvbWFsbG9jL21hbGxvYy5jCitAQCAtMzA1MCw3ICszMDUwLDggQEAgX19saWJjX21hbGxvYyAoc2l6ZV90IGJ5dGVzKQorICAgICByZXR1cm4gKCpob29rKShieXRlcywgUkVUVVJOX0FERFJFU1MgKDApKTsKKyAjaWYgVVNFX1RDQUNIRQorICAgLyogaW50X2ZyZWUgYWxzbyBjYWxscyByZXF1ZXN0MnNpemUsIGJlIGNhcmVmdWwgdG8gbm90IHBhZCB0d2ljZS4gICovCistICBzaXplX3QgdGJ5dGVzID0gcmVxdWVzdDJzaXplIChieXRlcyk7CisrICBzaXplX3QgdGJ5dGVzOworKyAgY2hlY2tlZF9yZXF1ZXN0MnNpemUgKGJ5dGVzLCB0Ynl0ZXMpOworICAgc2l6ZV90IHRjX2lkeCA9IGNzaXplMnRpZHggKHRieXRlcyk7CisgCisgICBNQVlCRV9JTklUX1RDQUNIRSAoKTsKK0luZGV4OiBnaXQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ2l0L0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTctMTEtMzAgIEFyanVuIFNoYW5rYXIgIDxhcmp1bkByZWRoYXQuY29tPgorKworKyAgICAgICBbQlogIzIyMzc1XQorKyAgICAgICBDVkUtMjAxNy0xNzQyNgorKyAgICAgICAqIG1hbGxvYy9tYWxsb2MuYyAoX19saWJjX21hbGxvYyk6IFVzZSBjaGVja2VkX3JlcXVlc3Qyc2l6ZQorKyAgICAgICBpbnN0ZWFkIG9mIHJlcXVlc3Qyc2l6ZS4KKysKKyAyMDE3LTEyLTMwICBBdXJlbGllbiBKYXJubyAgPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorICAgICAgICAgICAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMWVjMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotcmVxdWlyZSBnbGliYy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIgotCi1TUkNSRVYgPz0gImRiMDI0MmUzMDIzNDM2NzU3YmJjN2M0ODhhNzc5ZTZlMzM0M2RiMDQiCi0KLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCi0KLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGZpbGU6Ly9ldGMvbGQuc28uY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgXAotICAgICAgICAgICBcCi0gICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1SZXdvcmstZm5vLW9taXQtZnJhbWUtcG9pbnRlci1zdXBwb3J0LW9uLWkzODYucGF0Y2ggXAotIgotCi1OQVRJVkVTREtGSVhFUyA/PSAiIgotTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiIgotCi0jIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLUdMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKLSMKLSMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZ2xpYmMgd2hlbiB0YXJnZXQgc3lzdGVtIEMgbGlicmFyeSBzZWxlY3Rpb24gaXMgbm90IGdsaWJjCi0jIHRoaXMgaGVscHMgaW4gZWFzaW5nIG91dCBwYXJzaW5nIGZvciBub24tZ2xpYmMgc3lzdGVtIGxpYnJhcmllcwotIwotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIC0tZGlzYWJsZS1wcm9maWxlIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYWRkLW9ucyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAotICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKLQotCi1kb19wYXRjaF9hcHBlbmQoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKLX0KLQotZG9fZml4X3JlYWRsaWJfYyAoKSB7Ci0Jc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKLX0KLQotZG9fY29uZmlndXJlICgpIHsKLSMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCi0jIGNhbGxzIGZvciBub3cKLSMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycwotIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKLSAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKLSAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKLSAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgotfQotCi1ycGNzdmMgPSAiYm9vdHBhcmFtX3Byb3QueCBubG1fcHJvdC54IHJzdGF0LnggXAotCSAgeXBwYXNzd2QueCBrbG1fcHJvdC54IHJleC54IHNtX2ludGVyLnggbW91bnQueCBcCi0JICBydXNlcnMueCBzcHJheS54IG5mc19wcm90LnggcnF1b3RhLngga2V5X3Byb3QueCIKLQotZG9fY29tcGlsZSAoKSB7Ci0JIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKLQl1bnNldCBMREZMQUdTCi0JYmFzZV9kb19jb21waWxlCi0JKAotCQljZCAke1N9L3N1bnJwYy9ycGNzdmMKLQkJZm9yIHIgaW4gJHtycGNzdmN9OyBkbwotCQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCi0JCQlybSAtZiAkaAotCQkJJHtCfS9zdW5ycGMvY3Jvc3MtcnBjZ2VuIC1oICRyIC1vICRoIHx8IGJid2FybiAiJHtQTn06IHVuYWJsZSB0byBnZW5lcmF0ZSBoZWFkZXIgZm9yICRyIgotCQlkb25lCi0JKQotCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgotCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCi0JdGhlbgotCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCi0JCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KLQkJdGhlbgotCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgotCQlmaQotCWZpCi0KLX0KLQotIyBVc2UgdGhlIGhvc3QgbG9jYWxlIGFyY2hpdmUgd2hlbiBidWlsdCBmb3IgbmF0aXZlc2RrIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0bwotIyBzaGlwIGEgY29tcGxldGUgKDEwME1CKSBsb2NhbGUgc2V0LgotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBlY2hvICJjb21wbG9jYWxlZGlyPS91c3IvbGliL2xvY2FsZSIgPj4gJHtTfS9jb25maWdwYXJtcwotfQotCi1yZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzBlYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIKQEAgLTAsMCArMSwxNTQgQEAKK3JlcXVpcmUgZ2xpYmMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ1JFViA/PSAiMWM5YTVjMjcwZDhiNjZmMzBkY2ZhZjFjYjJkNmNmMzlkM2UxODM2OSIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKKworR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopIgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTU2NzAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTU2NzEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNjk5Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNzQyNi5wYXRjaCBcCisiCisKK05BVElWRVNES0ZJWEVTID89ICIiCitOQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICIiCisKKyMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKK0JVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKKworR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgorIworIyBXZSB3aWxsIHNraXAgcGFyc2luZyBnbGliYyB3aGVuIHRhcmdldCBzeXN0ZW0gQyBsaWJyYXJ5IHNlbGVjdGlvbiBpcyBub3QgZ2xpYmMKKyMgdGhpcyBoZWxwcyBpbiBlYXNpbmcgb3V0IHBhcnNpbmcgZm9yIG5vbi1nbGliYyBzeXN0ZW0gbGlicmFyaWVzCisjCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zPWxpYmlkbiBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLW5zbCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAorICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKKworCitkb19wYXRjaF9hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKK30KKworZG9fZml4X3JlYWRsaWJfYyAoKSB7CisJc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKK30KKworZG9fY29uZmlndXJlICgpIHsKKyMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCisjIGNhbGxzIGZvciBub3cKKyMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycworIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKKyAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKKyAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgIyAicGx1cmFsLmMiIG1heSBvciBtYXkgbm90IGdldCByZWdlbmVyYXRlZCBmcm9tICJwbHVyYWwueSIgc28gd2UKKyAgICAgICAgIyB0b3VjaCAicGx1cmFsLnkiIHRvIG1ha2Ugc3VyZSBpdCBkb2VzLiAoVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZAorICAgICAgICAjIGZvciBnbGliYyB2ZXJzaW9uIDIuMjYrKQorICAgICAgICBmaW5kICR7U30vaW50bCAtbmFtZSAicGx1cmFsLnkiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgorfQorCitycGNzdmMgPSAiYm9vdHBhcmFtX3Byb3QueCBubG1fcHJvdC54IHJzdGF0LnggXAorCSAgeXBwYXNzd2QueCBrbG1fcHJvdC54IHJleC54IHNtX2ludGVyLnggbW91bnQueCBcCisJICBydXNlcnMueCBzcHJheS54IG5mc19wcm90LnggcnF1b3RhLngga2V5X3Byb3QueCIKKworZG9fY29tcGlsZSAoKSB7CisJIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKKwl1bnNldCBMREZMQUdTCisJYmFzZV9kb19jb21waWxlCisJKAorCQljZCAke1N9L3N1bnJwYy9ycGNzdmMKKwkJZm9yIHIgaW4gJHtycGNzdmN9OyBkbworCQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCisJCQlybSAtZiAkaAorCQkJJHtCfS9zdW5ycGMvY3Jvc3MtcnBjZ2VuIC1oICRyIC1vICRoIHx8IGJid2FybiAiJHtQTn06IHVuYWJsZSB0byBnZW5lcmF0ZSBoZWFkZXIgZm9yICRyIgorCQlkb25lCisJKQorCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgorCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCisJdGhlbgorCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCisJCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KKwkJdGhlbgorCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgorCQlmaQorCWZpCisKK30KKworIyBVc2UgdGhlIGhvc3QgbG9jYWxlIGFyY2hpdmUgd2hlbiBidWlsdCBmb3IgbmF0aXZlc2RrIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0bworIyBzaGlwIGEgY29tcGxldGUgKDEwME1CKSBsb2NhbGUgc2V0LgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBlY2hvICJjb21wbG9jYWxlZGlyPS91c3IvbGliL2xvY2FsZSIgPj4gJHtTfS9jb25maWdwYXJtcworfQorCityZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaAppbmRleCA4YzRkOTUzLi5hMjRiOGNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaApAQCAtMTIsNiArMTIsNyBAQAogbGlrZSB0aGUgbG9vcGJhY2sgZGV2aWNlIG5vdCBiZWluZyBjb25maWd1cmVkL2VuYWJsZWQuCiAKIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBkZWZuMmMucGwgICB8IDYgKysrLS0tCiAgZGVmbjJtYW4ucGwgfCA2ICsrKy0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IDA0NTc4MWMuLmJkNDQxYWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKQEAgLTMsOCArMyw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbi9idWlsZC1hcHBsaWFuY2UiCiAKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIAogSU1BR0VfSU5TVEFMTCA9ICJwYWNrYWdlZ3JvdXAtY29yZS1ib290IHBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIHBhY2thZ2Vncm91cC1zZWxmLWhvc3RlZCBcCiAgICAgICAgICAgICAgICAgIGtlcm5lbC1kZXYga2VybmVsLWRldnNyYyBjb25ubWFuIGNvbm5tYW4tcGx1Z2luLWV0aGVybmV0IGRoY3AtY2xpZW50IFwKQEAgLTE5LDEyICsxOCwxMiBAQAogQVBQRU5EICs9ICJyb290ZnN0eXBlPWV4dDQgcXVpZXQiCiAKIERFUEVORFMgPSAiemlwLW5hdGl2ZSBweXRob24zLXBpcC1uYXRpdmUiCi1JTUFHRV9GU1RZUEVTID0gInZtZGsiCitJTUFHRV9GU1RZUEVTID0gIndpYy52bWRrIgogCiBpbmhlcml0IGNvcmUtaW1hZ2UgbW9kdWxlLWJhc2Ugc2V0dXB0b29sczMKIAotU1JDUkVWID89ICJiODU5MjcyYWQ0MDUzMTg1ZDQ5ODBjYWMwNTQ4MWI0MzBlMDUzNDVmIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1weXJvIFwKK1NSQ1JFViA/PSAiYTk1ODg2NDZmY2VjMTdlNTMxOTllMWVhN2U3YjhkY2NmMTQwODE3ZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9cm9ja28gXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteCBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14ZiBcCiAgICAgICAgICAgIGZpbGU6Ly9SRUFETUVfVmlydHVhbEJveF9HdWVzdF9BZGRpdGlvbnMudHh0IFwKQEAgLTEwMSw3ICsxMDAsMTEgQEAKIAlleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CiAJZXhwb3J0IEhPTUU9JHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlcgogCW1rZGlyIC1wICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmNhY2hlL3BpcAotCXBpcDMgaW5zdGFsbCAtLXVzZXIgLUkgLVUgLXYgLXIgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0CisJcGlwM19pbnN0YWxsX3BhcmFtcz0iLS11c2VyIC1JIC1VIC12IC1yICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dCIKKwlpZiBbIC1uICIke2h0dHBfcHJveHl9IiBdOyB0aGVuCisJICAgcGlwM19pbnN0YWxsX3BhcmFtcz0iJHtwaXAzX2luc3RhbGxfcGFyYW1zfSAtLXByb3h5ICR7aHR0cF9wcm94eX0iCisJZmkKKwlwaXAzIGluc3RhbGwgJHtwaXAzX2luc3RhbGxfcGFyYW1zfQogCWNob3duIC1SIGJ1aWxkZXIuYnVpbGRlciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5sb2NhbAogCWNob3duIC1SIGJ1aWxkZXIuYnVpbGRlciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5jYWNoZQogfQpAQCAtMTIwLDcgKzEyMyw3IEBACiAJY2QgJHtXT1JLRElSfQogCW1rZGlyIC1wIFlvY3RvX0J1aWxkX0FwcGxpYW5jZQogCWNwICoudm14KiBZb2N0b19CdWlsZF9BcHBsaWFuY2UKLQlsbiAtc2YgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0udm1kayBZb2N0b19CdWlsZF9BcHBsaWFuY2UvWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZtZGsKKwlsbiAtc2YgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS53aWMudm1kayBZb2N0b19CdWlsZF9BcHBsaWFuY2UvWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZtZGsKIAl6aXAgLXIgJHtJTUdERVBMT1lESVJ9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgWW9jdG9fQnVpbGRfQXBwbGlhbmNlCiAJbG4gLXNmIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgJHtJTUdERVBMT1lESVJ9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS56aXAKIH0KQEAgLTEzMCw0ICsxMzMsNCBAQAogICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnY3JlYXRlX2J1bmRsZV9maWxlcycsIGQpCiB9CiAKLWFkZHRhc2sgYnVuZGxlX2ZpbGVzIGFmdGVyIGRvX3ZtaW1nIGJlZm9yZSBkb19pbWFnZV9jb21wbGV0ZQorYWRkdGFzayBidW5kbGVfZmlsZXMgYWZ0ZXIgZG9faW1hZ2Vfd2ljIGJlZm9yZSBkb19pbWFnZV9jb21wbGV0ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCmluZGV4IDU3OTRhMjUuLmM0NDZlODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKQEAgLTgsNyArOCw3IEBACiAjIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKIElNQUdFX0ZFQVRVUkVTID0gIiIKIAotZXhwb3J0IElNQUdFX0JBU0VOQU1FID0gImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiCitleHBvcnQgSU1BR0VfQkFTRU5BTUUgPSAiJHtNTFBSRUZJWH1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIgogSU1BR0VfTElOR1VBUyA9ICIiCiAKIExJQ0VOU0UgPSAiTUlUIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCmluZGV4IDE4NDcyN2QuLjE2OTk1ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKQEAgLTEsMTAgKzEsOSBAQAogIyBTaW1wbGUgaW5pdHJhbWZzIGltYWdlIGFydGlmYWN0IGdlbmVyYXRpb24gZm9yIHRpbnkgaW1hZ2VzLgogREVTQ1JJUFRJT04gPSAiVGlueSBpbWFnZSBjYXBhYmxlIG9mIGJvb3RpbmcgYSBkZXZpY2UuIFRoZSBrZXJuZWwgaW5jbHVkZXMgXAogdGhlIE1pbmltYWwgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBmaW5kcyB0aGUgXAotZmlyc3QgJ2luaXQnIHByb2dyYW0gbW9yZSBlZmZpY2llbnRseS4gIGNvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMgZG9lc24ndCBcCitmaXJzdCAnaW5pdCcgcHJvZ3JhbSBtb3JlIGVmZmljaWVudGx5LiBjb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzIGRvZXNuJ3QgXAogYWN0dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UgYnV0IHJhdGhlciBnZW5lcmF0ZXMgYm9vdCBhbmQgcm9vdGZzIGFydGlmYWN0cyBcCi1pbnRvIGEgY29tbW9uIGxvY2F0aW9uIHRoYXQgY2FuIHN1YnNlcXVlbnRseSBiZSBwaWNrZWQgdXAgYnkgZXh0ZXJuYWwgaW1hZ2UgXAotZ2VuZXJhdGlvbiB0b29scyBzdWNoIGFzIHdpYy4iCit0aGF0IGNhbiBzdWJzZXF1ZW50bHkgYmUgcGlja2VkIHVwIGJ5IGV4dGVybmFsIGltYWdlIGdlbmVyYXRpb24gdG9vbHMgc3VjaCBhcyB3aWMuIgogCiBQQUNLQUdFX0lOU1RBTEwgPSAiaW5pdHJhbWZzLWxpdmUtYm9vdCBwYWNrYWdlZ3JvdXAtY29yZS1ib290IGRyb3BiZWFyICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IHVkZXYgYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgogCkBAIC0xNyw3ICsxNiw3IEBACiBMSUNFTlNFID0gIk1JVCIKIAogIyBkb24ndCBhY3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZSwganVzdCB0aGUgYXJ0aWZhY3RzIG5lZWRlZCBmb3Igb25lCi1JTUFHRV9GU1RZUEVTID0gIiR7SU5JVFJBTUZTX0ZTVFlQRVN9IHdpYyIKK0lNQUdFX0ZTVFlQRVMgPSAiJHtJTklUUkFNRlNfRlNUWVBFU30iCiAKIGluaGVyaXQgY29yZS1pbWFnZQogCkBAIC00MCwzICszOSw1IEBACiB9CiAKIElNQUdFX1BSRVBST0NFU1NfQ09NTUFORCArPSAidGlueWluaXRyZDsiCisKK1FCX0tFUk5FTF9DTURMSU5FX0FQUEVORCArPSAiZGVidWdzaGVsbD0zIGluaXQ9L2Jpbi9idXN5Ym94IHNoIGluaXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaAppbmRleCA1YWQzYTYwLi43MDY0MThmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKQEAgLTE4Niw2ICsxODYsMTMgQEAKIAogcGFydGVkICR7ZGV2aWNlfSBwcmludAogCitlY2hvICJXYWl0aW5nIGZvciBkZXZpY2Ugbm9kZXMuLi4iCitDPTAKK3doaWxlIFsgJEMgLW5lIDMgXSAmJiBbICEgLWUgJGJvb3RmcyAgLW8gISAtZSAkcm9vdGZzIC1vICEgLWUgJHN3YXAgXTsgZG8KKyAgICBDPSQoKCBDICsgMSApKQorICAgIHNsZWVwIDEKK2RvbmUKKwogZWNobyAiRm9ybWF0dGluZyAkYm9vdGZzIHRvIHZmYXQuLi4iCiBta2ZzLnZmYXQgJGJvb3RmcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKaW5kZXggNTcyNjEzZS4uZGFkZTA1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaApAQCAtMTMyLDcgKzEzMiw3IEBACiAKIGRpc2tfc2l6ZT0kKHBhcnRlZCAke2RldmljZX0gdW5pdCBtYiBwcmludCB8IGdyZXAgJ15EaXNrIC4qOiAuKk1CJyB8IGN1dCAtZCIgIiAtZiAzIHwgc2VkIC1lICJzL01CLy8iKQogCi1ncnViX3ZlcnNpb249JChncnViLWluc3RhbGwgLXZ8c2VkICdzLy4qIFwoWzAtOV1cKS4qL1wxLycpCitncnViX3ZlcnNpb249JChncnViLWluc3RhbGwgLVZ8c2VkICdzLy4qIFwoWzAtOV1cKS4qL1wxLycpCiAKIGlmIFsgJGdydWJfdmVyc2lvbiAtZXEgMCBdIDsgdGhlbgogICAgIGJpb3NfYm9vdF9zaXplPTAKQEAgLTIxMSw2ICsyMTEsMTMgQEAKIAogcGFydGVkICR7ZGV2aWNlfSBwcmludAogCitlY2hvICJXYWl0aW5nIGZvciBkZXZpY2Ugbm9kZXMuLi4iCitDPTAKK3doaWxlIFsgJEMgLW5lIDMgXSAmJiBbICEgLWUgJGJvb3RmcyAgLW8gISAtZSAkcm9vdGZzIC1vICEgLWUgJHN3YXAgXTsgZG8KKyAgICBDPSQoKCBDICsgMSApKQorICAgIHNsZWVwIDEKK2RvbmUKKwogZWNobyAiRm9ybWF0dGluZyAkYm9vdGZzIHRvIGV4dDMuLi4iCiBta2ZzLmV4dDMgJGJvb3RmcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKaW5kZXggNDQxYjQxYy4uNDZjYWI2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaApAQCAtODQsNiArODQsMTAgQEAKICAgICAjIGRldmljZSBub2RlIGNyZWF0aW9uIGV2ZW50cyB3ZXJlIGhhbmRsZWQsIHRvIGF2b2lkIHVuZXhwZWN0ZWQgYmVoYXZpb3IKICAgICBraWxsYWxsIC05ICIke19VREVWX0RBRU1PTiMjKi99IiAyPi9kZXYvbnVsbAogCisgICAgIyBEb24ndCBydW4gc3lzdGVtZC11cGRhdGUtZG9uZSBvbiBzeXN0ZW1kLWJhc2VkIGxpdmUgc3lzdGVtcworICAgICMgYmVjYXVzZSBpdCB0cmlnZ2VycyBhIHNsb3cgcmVidWlsZCBvZiBsZGNvbmZpZyBjYWNoZXMuCisgICAgdG91Y2ggJHtST09UX01PVU5UfS9ldGMvLnVwZGF0ZWQgJHtST09UX01PVU5UfS92YXIvLnVwZGF0ZWQKKwogICAgICMgQWxsb3cgZm9yIGlkZW50aWZpY2F0aW9uIG9mIHRoZSByZWFsIHJvb3QgZXZlbiBhZnRlciBib290CiAgICAgbWtkaXIgLXAgICR7Uk9PVF9NT1VOVH0vbWVkaWEvcmVhbHJvb3QKICAgICBtb3VudCAtbiAtLW1vdmUgIi9ydW4vbWVkaWEvJHtST09UX0RJU0t9IiAke1JPT1RfTU9VTlR9L21lZGlhL3JlYWxyb290CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL21kZXYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL21kZXYKaW5kZXggYTVkZjFkNy4uOTgxNGQ5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9tZGV2CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbWRldgpAQCAtMSw1ICsxLDUgQEAKICMhL2Jpbi9zaAotIyBDb3B5cmlnaHQgKEMpIDIwMTEgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNyBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KICMgTGljZW5zZWQgb24gTUlUCiAKIG1kZXZfZW5hYmxlZCgpIHsKQEAgLTI1LDYgKzI1LDYgQEAKIAogCSMgbG9hZCBtb2R1bGVzIGZvciBkZXZpY2VzCiAJZmluZCAvc3lzIC1uYW1lIG1vZGFsaWFzIHwgd2hpbGUgcmVhZCBtOyBkbwotCQlsb2FkX2tlcm5lbF9tb2R1bGUgJChjYXQgJG0pCisJCWxvYWRfa2VybmVsX21vZHVsZSAkKGNhdCAiJG0iKQogCWRvbmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvc2V0dXAtbGl2ZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvc2V0dXAtbGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Yzc5ZjQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9zZXR1cC1saXZlCkBAIC0wLDAgKzEsNjQgQEAKKyMvYmluL3NoCisjIENvcHlyaWdodCAoQykgMjAxMSBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKyMgTGljZW5zZWQgb24gTUlUCisKK3NldHVwX2VuYWJsZWQoKSB7CisJcmV0dXJuIDAKK30KKworc2V0dXBfcnVuKCkgeworUk9PVF9JTUFHRT0icm9vdGZzLmltZyIKK0lTT0xJTlVYPSIiCitST09UX0RJU0s9IiIKK3NoZWxsdGltZW91dD0zMAorCisJaWYgWyAteiAiJGJvb3RwYXJhbV9yb290IiAtbyAiJGJvb3RwYXJhbV9yb290IiA9ICIvZGV2L3JhbTAiIF07IHRoZW4KKwkJZWNobyAiV2FpdGluZyBmb3IgcmVtb3ZhYmxlIG1lZGlhLi4uIgorCQlDPTAKKwkJd2hpbGUgdHJ1ZQorCQlkbworCQkgIGZvciBpIGluIGBscyAvcnVuL21lZGlhIDI+L2Rldi9udWxsYDsgZG8KKwkJICAgICAgaWYgWyAtZiAvcnVuL21lZGlhLyRpLyRST09UX0lNQUdFIF0gOyB0aGVuCisJCQkJZm91bmQ9InllcyIKKwkJCQlST09UX0RJU0s9IiRpIgorCQkJCWJyZWFrCisJCQkgIGVsaWYgWyAtZiAvcnVuL21lZGlhLyRpL2lzb2xpbnV4LyRST09UX0lNQUdFIF07IHRoZW4KKwkJCQlmb3VuZD0ieWVzIgorCQkJCUlTT0xJTlVYPSJpc29saW51eCIKKwkJCQlST09UX0RJU0s9IiRpIgorCQkJCWJyZWFrCisJCSAgICAgIGZpCisJCSAgZG9uZQorCQkgIGlmIFsgIiRmb3VuZCIgPSAieWVzIiBdOyB0aGVuCisJCSAgICAgIGJyZWFrOworCQkgIGZpCisJCSAgIyBkb24ndCB3YWl0IGZvciBtb3JlIHRoYW4gJHNoZWxsdGltZW91dCBzZWNvbmRzLCBpZiBpdCdzIHNldAorCQkgIGlmIFsgLW4gIiRzaGVsbHRpbWVvdXQiIF07IHRoZW4KKwkJICAgICAgZWNobyAtbiAiICIgJCgoICRzaGVsbHRpbWVvdXQgLSAkQyApKQorCQkgICAgICBpZiBbICRDIC1nZSAkc2hlbGx0aW1lb3V0IF07IHRoZW4KKwkJICAgICAgICAgICBlY2hvICIuLi4iCisJCQkgICBlY2hvICJNb3VudGVkIGZpbGVzeXN0ZW1zIgorCQkgICAgICAgICAgIG1vdW50IHwgZ3JlcCBtZWRpYQorCQkgICAgICAgICAgIGVjaG8gIkF2YWlsYWJsZSBibG9jayBkZXZpY2VzIgorCQkgICAgICAgICAgIGNhdCAvcHJvYy9wYXJ0aXRpb25zCisJCSAgICAgICAgICAgZmF0YWwgIkNhbm5vdCBmaW5kICRST09UX0lNQUdFIGZpbGUgaW4gL3J1bi9tZWRpYS8qICwgZHJvcHBpbmcgdG8gYSBzaGVsbCAiCisJCSAgICAgIGZpCisJCSAgICAgIEM9JCgoIEMgKyAxICkpCisJCSAgZmkKKwkJICBzbGVlcCAxCisJCWRvbmUKKwkJIyBUaGUgZXhpc3Rpbmcgcm9vdGZzIG1vZHVsZSBoYXMgbm8gc3VwcG9ydCBmb3Igcm9vdGZzIGltYWdlcy4gQXNzaWduIHRoZSByb290ZnMgaW1hZ2UuCisJCWJvb3RwYXJhbV9yb290PSIvcnVuL21lZGlhLyRST09UX0RJU0svJElTT0xJTlVYLyRST09UX0lNQUdFIgorCWZpCisKKwlpZiBbICIkYm9vdHBhcmFtX0xBQkVMIiAhPSAiYm9vdCIgLWEgLWYgL2luaXQuZC8kYm9vdHBhcmFtX0xBQkVMLnNoIF0gOyB0aGVuCisJCWlmIFsgLWYgL3J1bi9tZWRpYS8kaS8kSVNPTElOVVgvJFJPT1RfSU1BR0UgXSA7IHRoZW4KKwkJICAgIC4vaW5pdC5kLyRib290cGFyYW1fTEFCRUwuc2ggJGkvJElTT0xJTlVYICRST09UX0lNQUdFICR2aWRlb19tb2RlICR2Z2FfbW9kZSAkY29uc29sZV9wYXJhbXMKKwkJZWxzZQorCQkgICAgZmF0YWwgIkNvdWxkIG5vdCBmaW5kICRib290cGFyYW1fTEFCRUwgc2NyaXB0IgorCQlmaQorCisJCSMgSWYgd2UncmUgZ2V0dGluZyBoZXJlLCB3ZSBmYWlsZWQuLi4KKwkJZmF0YWwgIlRhcmdldCAkYm9vdHBhcmFtX0xBQkVMIGZhaWxlZCIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgppbmRleCA2N2ExYjA0Li4yYWZjMzdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgpAQCAtMyw3ICszLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogUkRFUEVORFNfJHtQTn0gKz0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCi1QUiA9ICJyMiIKK1BSID0gInI0IgogCiBpbmhlcml0IGFsbGFyY2gKIApAQCAtMTMsNyArMTMsOCBAQAogICAgICAgICAgICBmaWxlOi8vbWRldiBcCiAgICAgICAgICAgIGZpbGU6Ly91ZGV2IFwKICAgICAgICAgICAgZmlsZTovL2UyZnMgXAotICAgICAgICAgICBmaWxlOi8vZGVidWciCisgICAgICAgICAgIGZpbGU6Ly9kZWJ1ZyBcCisgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0iCiAKQEAgLTQ4LDcgKzQ5LDggQEAKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtdWRldiBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWUyZnMgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1yb290ZnMgXAotICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1kZWJ1ZyIKKyAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZGVidWcgXAorICAgICAgICAgICAiCiAKIEZJTEVTXyR7UE59LWJhc2UgPSAiL2luaXQgL2luaXQuZC85OS1maW5pc2ggL2RldiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCmluZGV4IDMyYzFmY2UuLjJhN2Y4NGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKQEAgLTIxLDQgKzIxLDQgQEAKIAogRklMRVNfJHtQTn0gPSAiIC9pbnN0YWxsLWVmaS5zaCAiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODYuKnx4ODZfNjQuKnxhYXJjaDY0LiopLWxpbnV4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYgppbmRleCA4OGIzYjMwLi5hNTUzYTBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYgpAQCAtMjEsNCArMjEsNCBAQAogCiBGSUxFU18ke1BOfSA9ICIgL2luc3RhbGwuc2ggIgogCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0KS4qLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2Lip8eDg2XzY0Lip8YWFyY2g2NC4qKS1saW51eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU3Zjc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiaW5pdHJhbWZzLWZyYW1ld29yayBtb2R1bGUgZm9yIEVGSSBpbnN0YWxsYXRpb24gb3B0aW9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1JERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyBkb3Nmc3Rvb2xzIHV0aWwtbGludXgtYmxraWQiCisKK1BSID0gInI0IgorCitTUkNfVVJJID0gImZpbGU6Ly9pbml0LWluc3RhbGwtZWZpLnNoIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtaW5zdGFsbC1lZmkuc2ggJHtEfS9pbml0LmQvaW5zdGFsbC1lZmkuc2gKK30KKworRklMRVNfJHtQTn0gPSAiL2luaXQuZC9pbnN0YWxsLWVmaS5zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYjY5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiaW5pdHJhbWZzLWZyYW1ld29yayBtb2R1bGUgZm9yIGluc3RhbGxhdGlvbiBvcHRpb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIGdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCIKKworIyBUaGUgc2FtZSByZXN0cmljdGlvbiBhcyBncnViCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCitDT01QQVRJQkxFX0hPU1RfYXJtdjdhID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfYXJtdjd2ZSA9ICdudWxsJworCitQUiA9ICJyMSIKKworU1JDX1VSSSA9ICJmaWxlOi8vaW5pdC1pbnN0YWxsLnNoIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtaW5zdGFsbC5zaCAke0R9L2luaXQuZC9pbnN0YWxsLnNoCit9CisKK0ZJTEVTXyR7UE59ID0gIi9pbml0LmQvaW5zdGFsbC5zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtc2V0dXAtbGl2ZV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLXNldHVwLWxpdmVfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMmZlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLXNldHVwLWxpdmVfMS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiaW5pdHJhbWZzLWZyYW1ld29yayBtb2R1bGUgZm9yIGxpdmUgYm9vdGluZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgdWRldi1leHRyYWNvbmYiCisKK1BSID0gInI0IgorCitpbmhlcml0IGFsbGFyY2gKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vaW5pdHJhbWZzLWZyYW1ld29yazoiCitTUkNfVVJJID0gImZpbGU6Ly9zZXR1cC1saXZlIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NldHVwLWxpdmUgJHtEfS9pbml0LmQvODAtc2V0dXAtbGl2ZQorfQorCitGSUxFU18ke1BOfSA9ICIvaW5pdC5kLzgwLXNldHVwLWxpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaAppbmRleCAyMmE3MWVjLi4zNTMxNmVjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKQEAgLTI1LDggKzI1LDE4IEBACiBbICIke1ZFUkJPU0V9IiAhPSAibm8iIF0gJiYgZWNobyAiUG9wdWxhdGluZyB2b2xhdGlsZSBGaWxlc3lzdGVtcy4iCiAKIGNyZWF0ZV9maWxlKCkgeworCUVYRUM9IiIKKwlbIC16ICIkMiIgXSAmJiB7CisJCUVYRUM9IgorCQl0b3VjaCBcIiQxXCI7CisJCSIKKwl9IHx8IHsKKwkJRVhFQz0iCisJCWNwIFwiJDJcIiBcIiQxXCI7CisJCSIKKwl9CiAJRVhFQz0iCi0JdG91Y2ggXCIkMVwiOworCSR7RVhFQ30KIAljaG93biAke1RVU0VSfS4ke1RHUk9VUH0gJDEgfHwgZWNobyBcIkZhaWxlZCB0byBzZXQgb3duZXIgLSR7VFVTRVJ9LSBmb3IgLSQxLS5cIiA+L2Rldi90dHkwIDI+JjE7CiAJY2htb2QgJHtUTU9ERX0gJDEgfHwgZWNobyBcIkZhaWxlZCB0byBzZXQgbW9kZSAtJHtUTU9ERX0tIGZvciAtJDEtLlwiID4vZGV2L3R0eTAgMj4mMSAiCiAKQEAgLTE4Nyw3ICsxOTcsOSBAQAogCiAJCWNhc2UgIiR7VFRZUEV9IiBpbgogCQkJImYiKSAgWyAiJHtWRVJCT1NFfSIgIT0gIm5vIiBdICYmIGVjaG8gIkNyZWF0aW5nIGZpbGUgLSR7VE5BTUV9LS4iCi0JCQkJY3JlYXRlX2ZpbGUgIiR7VE5BTUV9IgorCQkJCVRTT1VSQ0U9IiRUTFRBUkdFVCIKKwkJCQlbICIke1RTT1VSQ0V9IiA9ICJub25lIiBdICYmIFRTT1VSQ0U9IiIKKwkJCQljcmVhdGVfZmlsZSAiJHtUTkFNRX0iICIke1RTT1VSQ0V9IiAmCiAJCQkJOzsKIAkJCSJkIikgIFsgIiR7VkVSQk9TRX0iICE9ICJubyIgXSAmJiBlY2hvICJDcmVhdGluZyBkaXJlY3RvcnkgLSR7VE5BTUV9LS4iCiAJCQkJbWtfZGlyICIke1ROQU1FfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvdm9sYXRpbGVzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC92b2xhdGlsZXMKaW5kZXggYmMxN2M0NS4uMjAxMTA2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC92b2xhdGlsZXMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC92b2xhdGlsZXMKQEAgLTI3LDcgKzI3LDYgQEAKIGQgcm9vdCByb290IDA3NTUgL3Zhci92b2xhdGlsZS9sb2cgbm9uZQogZCByb290IHJvb3QgMTc3NyAvdmFyL3ZvbGF0aWxlL3RtcCBub25lCiBsIHJvb3Qgcm9vdCAxNzc3IC92YXIvbG9jayAvcnVuL2xvY2sKLWwgcm9vdCByb290IDA3NTUgL3Zhci9sb2cgL3Zhci92b2xhdGlsZS9sb2cKIGwgcm9vdCByb290IDA3NTUgL3Zhci9ydW4gL3J1bgogbCByb290IHJvb3QgMTc3NyAvdmFyL3RtcCAvdmFyL3ZvbGF0aWxlL3RtcAogbCByb290IHJvb3QgMTc3NyAvdG1wIC92YXIvdG1wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHNfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzXzEuMC5iYgppbmRleCAyZTRmN2U0Li45MWVlYTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHNfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2luaXRzY3JpcHRzIgogREVTQ1JJUFRJT04gPSAiSW5pdHNjcmlwdHMgcHJvdmlkZSB0aGUgYmFzaWMgc3lzdGVtIHN0YXJ0dXAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cyBmb3IgdGhlIHN5c3RlbS4gIFRoZXNlIHNjcmlwdHMgaW5jbHVkZSBhY3Rpb25zIHN1Y2ggYXMgZmlsZXN5c3RlbSBtb3VudGluZywgZnNjaywgUlRDIG1hbmlwdWxhdGlvbiBhbmQgb3RoZXIgYWN0aW9ucyByb3V0aW5lbHkgcGVyZm9ybWVkIGF0IHN5c3RlbSBzdGFydHVwLiAgSW4gYWRkaXRpb24sIHRoZSBzY3JpcHRzIGFyZSBhbHNvIHVzZWQgZHVyaW5nIHN5c3RlbSBzaHV0ZG93biB0byByZXZlcnNlIHRoZSBhY3Rpb25zIHBlcmZvcm1lZCBhdCBzdGFydHVwLiIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjIiCkBAIC00MiwxOSArNDMsMTkgQEAKIAogS0VSTkVMX1ZFUlNJT04gPSAiIgogCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIERFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUiCiBQQUNLQUdFX1dSSVRFX0RFUFNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgogCi1QQUNLQUdFUyA9KyAiJHtQTn0tZnVuY3Rpb25zIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tZnVuY3Rpb25zIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzZWxpbnV4JywnYmFzaCcsJycsZCl9IFwKK1BBQ0tBR0VTID0rICIke1BOfS1mdW5jdGlvbnMgJHtQTn0tc3VzaGVsbCIKK1JERVBFTkRTXyR7UE59ID0gImluaXRkLWZ1bmN0aW9ucyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc2VsaW51eCcsJyR7UE59LXN1c2hlbGwnLCcnLGQpfSBcCiAJCSAiCisjIFJlY29tbWVuZCBwbi1mdW5jdGlvbnMgc28gdGhhdCBpdCB3aWxsIGJlIGEgcHJlZmVycmVkIGRlZmF1bHQgcHJvdmlkZXIgZm9yIGluaXRkLWZ1bmN0aW9ucworUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tZnVuY3Rpb25zIgorUlBST1ZJREVTXyR7UE59LWZ1bmN0aW9ucyA9ICJpbml0ZC1mdW5jdGlvbnMiCitSQ09ORkxJQ1RTXyR7UE59LWZ1bmN0aW9ucyA9ICJsc2Jpbml0c2NyaXB0cyIKIEZJTEVTXyR7UE59LWZ1bmN0aW9ucyA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMqIgotCi1BTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1mdW5jdGlvbnMgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1mdW5jdGlvbnMgPSAiZnVuY3Rpb25zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Z1bmN0aW9uc10gPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zIgorRklMRVNfJHtQTn0tc3VzaGVsbCA9ICIke2Jhc2Vfc2JpbmRpcn0vc3VzaGVsbCIKIAogSEFMVEFSR1MgPz0gIi1kIC1mIgogCkBAIC0xMDIsNiArMTAzLDkgQEAKIAlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yZWFkLW9ubHktcm9vdGZzLWhvb2suc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCiAJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vc2F2ZS1ydGMuc2gJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCiAJaW5zdGFsbCAtbSAwNjQ0ICAgICR7V09SS0RJUn0vdm9sYXRpbGVzCQkke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wMF9jb3JlCisJaWYgWyAke0Agb2UudHlwZXMuYm9vbGVhbignJHtWT0xBVElMRV9MT0dfRElSfScpIH0gPSBUcnVlIF07IHRoZW4KKwkJZWNobyAibCByb290IHJvb3QgMDc1NSAvdmFyL2xvZyAvdmFyL3ZvbGF0aWxlL2xvZyIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDBfY29yZQorCWZpCiAJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vZG1lc2cuc2gJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogCWluc3RhbGwgLW0gMDY0NCAgICAke1dPUktESVJ9L2xvZ3JvdGF0ZS1kbWVzZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9LwogCkBAIC0xMzQsNyArMTM4LDcgQEAKIAl1cGRhdGUtcmMuZCAtciAke0R9IG1vdW50YWxsLnNoIHN0YXJ0IDAzIFMgLgogCXVwZGF0ZS1yYy5kIC1yICR7RH0gaG9zdG5hbWUuc2ggc3RhcnQgMzkgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSBtb3VudG5mcy5zaCBzdGFydCAxNSAyIDMgNCA1IC4KLQl1cGRhdGUtcmMuZCAtciAke0R9IGJvb3RtaXNjLnNoIHN0YXJ0IDU1IFMgLgorCXVwZGF0ZS1yYy5kIC1yICR7RH0gYm9vdG1pc2Muc2ggc3RhcnQgMzYgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSBzeXNmcy5zaCBzdGFydCAwMiBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IHBvcHVsYXRlLXZvbGF0aWxlLnNoIHN0YXJ0IDM3IFMgLgogCXVwZGF0ZS1yYy5kIC1yICR7RH0gcmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoIHN0YXJ0IDI5IFMgLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgppbmRleCA2NTMyNWMwLi40MjNiNDdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiS2V5dGFibGUgZmlsZXMgYW5kIGtleWJvYXJkIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2JkLXByb2plY3Qub3JnLyIKICMgZXZlcnl0aGluZyBtaW51cyBjb25zb2xlLWZvbnRzIGlzIEdQTHYyKwogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNWZjYzM2MTIxZDkzZTFmNjlkOTZhMzEzMDc4YzhiNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCmluZGV4IDk1OTc5NjMuLmU0YjE3ODIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiTGludXggY29udHJvbCBncm91cCBhYnN0cmFjdGlvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmNnLnNvdXJjZWZvcmdlLm5ldC8iCiBERVNDUklQVElPTiA9ICJsaWJjZ3JvdXAgaXMgYSBsaWJyYXJ5IHRoYXQgYWJzdHJhY3RzIHRoZSBjb250cm9sIGdyb3VwIGZpbGUgc3lzdGVtIFwKIGluIExpbnV4LiBDb250cm9sIGdyb3VwcyBhbGxvdyB5b3UgdG8gbGltaXQsIGFjY291bnQgYW5kIGlzb2xhdGUgcmVzb3VyY2UgdXNhZ2UgXAogKENQVSwgbWVtb3J5LCBkaXNrIEkvTywgZXRjLikgb2YgZ3JvdXBzIG9mIHByb2Nlc3Nlcy4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaAppbmRleCA1NDEyZThjLi5iYjU1ZWVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKQEAgLTgsNyArOCw3IEBACiBCdXQgdGhleSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIGEgcGh5c2ljYWwgcmVwcmVzZW50YXRpb24gaW4gYQogZG9jdW1lbnQsIHNvIHNpbXBseSBkaXNhbGxvdyB0aGVtIGluIFhQb2ludGVyIHJhbmdlcy4KIAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkIAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWMxZDFmNzEyMTE5NDAzNjYwOGJmNTU1ZjA4ZDMwNjJhMzZmZDM0NGJdCiAgLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9M2Y4YTkxMDM2ZDMzOGU1MWMwNTlkNTQzOTdhNDJkNjQ1ZjAxOWM2NV0KIENWRTogQ1ZFLTIwMTYtNDY1OApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X05VTExfcG9pbnRlcl9kZXJlZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaAppbmRleCA4MzU1MmNhLi5jNjBlMzJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaApAQCAtMiw4ICsyLDcgQEAKIAogeHBvaW50ZXI6IEZpeCBtb3JlIE5VTEwgcG9pbnRlciBkZXJlZnMKIAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1lOTA1ZjA4MTIzZTRhNmU3NzMxNTQ5ZTZmMDlkYWRmZjRjYWI2NWJkXQotQ1ZFOiAtCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1lOTA1ZjA4MTIzZTRhNmU3NzMxNTQ5ZTZmMDlkYWRmZjRjYWI2NWJkXQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CiBTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfbm9kZV9jb21wYXJpc29uLnBhdGNoCmluZGV4IDExNzE4YmIuLjY1ZjZiZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaApAQCAtNSwxMCArNSwxMCBAQAogIC0gQWRkIHNhbml0eSBjaGVjayBmb3IgZW1wdHkgc3RhY2suCiAgLSBJbmNsdWRlIGNvbXBhcmF0aW9uIGluIGNoYW5nZXMgZnJvbSB4bWxYUGF0aENtcE5vZGVzRXh0IHRvIHhtbFhQYXRoQ21wTm9kZXMKIAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAgLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YzFkMWY3MTIxMTk0MDM2NjA4YmY1NTVmMDhkMzA2MmEzNmZkMzQ0Yl0KICAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1hMDA1MTk5MzMwYjg2ZGFkYTE5ZDE2MmNhZTE1ZWY5YmRjYjZiYWE4XQotQ1ZFOiBuZWNlc3NhcnkgY2hhbmdlcyBmb3IgZml4aW5nIENWRS0yMDE2LTUxMzEKK0NWRTogQ1ZFLTIwMTYtNTEzMQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CiBTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVuLXB0ZXN0CmluZGV4IDQ3M2QwYjYuLmMzMTNkODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bi1wdGVzdApAQCAtMSwzICsxLDQgQEAKICMhL2Jpbi9zaAogCitleHBvcnQgTENfQUxMPWVuX1VTLlVURi04CiBtYWtlIC1rIHJ1bnRlc3RzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKaW5kZXggMTA3NTM5Yi4uOWFkYjI5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKIAotU1JDX1VSSSA9ICJmdHA6Ly94bWxzb2Z0Lm9yZy9saWJ4bWwyL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKICAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7bmFtZT10ZXN0dGFyIFwKICAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hbnNpZGVjbC5wYXRjaCBcCkBAIC01MywxMSArNTMsMTEgQEAKIAogUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uMy1jb3JlJywgJycsIGQpfSIKIAotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBnbGliYy1nY29udi1pYm0xMTQxIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBnbGliYy1nY29udi1pYm0xMTQxIGdsaWJjLWdjb252LWlzbzg4NTktNSIKIAogZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKIAotIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmUgZm9yIFJQTSB1c2UKKyMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKQEAgLTg5LDYgKzg5LDE3IEBACiAJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CiAJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKIAlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKaW5kZXggYWJkYzdmZS4uYmUzN2M0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgpAQCAtNDYsOCArNDYsNiBAQAogaW5oZXJpdCBub3BhY2thZ2VzCiAKIGRlbHRhc2sgaW5zdGFsbAotZGVsdGFzayBwYWNrYWdlCi1kZWx0YXNrIHBhY2thZ2VkYXRhCiBkZWx0YXNrIHBvcHVsYXRlX3N5c3Jvb3QKIAogZG9fcG9wdWxhdGVfc2RrW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7UEFDS0FHRV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZ28tdG9vbGNoYWluLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1nby10b29sY2hhaW4uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRlMzg1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZ28tdG9vbGNoYWluLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiTWV0YSBwYWNrYWdlIGZvciBidWlsZGluZyBhIGluc3RhbGxhYmxlIEdvIHRvb2xjaGFpbiIKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IHBvcHVsYXRlX3NkaworCitUT09MQ0hBSU5fSE9TVF9UQVNLX2FwcGVuZCA9ICIgXAorICAgIHBhY2thZ2Vncm91cC1nby1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IFwKKyIKKworVE9PTENIQUlOX1RBUkdFVF9UQVNLX2FwcGVuZCA9ICIgXAorICAgICR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0Jyl9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCmluZGV4IGZlMDIyZmYuLmE0MTIzYjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgpAQCAtNCwxNyArNCwxNCBAQAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIFBBQ0tBR0VTID0gIiIKIAoraW5oZXJpdCBub3BhY2thZ2VzCisKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCiBkZWx0YXNrIGRvX3BhdGNoCiBkZWx0YXNrIGRvX2NvbmZpZ3VyZQogZGVsdGFzayBkb19jb21waWxlCiBkZWx0YXNrIGRvX2luc3RhbGwKLWRlbHRhc2sgZG9fcGFja2FnZQotZGVsdGFzayBkb19wYWNrYWdlZGF0YQotZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX2lwawotZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbQotZGVsdGFzayBkb19wYWNrYWdlX3dyaXRlX2RlYgogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIGRvX3BhY2thZ2VfaW5kZXhbbm9zdGFtcF0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgppbmRleCBhYWEwMWQwLi4yYzFjYzM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCkBAIC00NCwyNSArNDQsMjUgQEAKIAogZG9faW5zdGFsbCAoKSB7CiAgICAgaWYgWyAtZiAiJHtCfS9ycG0ta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9ycG0ta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL3JwbS1ncGcvUlBNLUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9ycG0ta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL3JwbS1ncGcvUlBNLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vaXBrLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vaXBrLWtleSIgIiR7RH0ke3N5c2NvbmZkaXJ9L3BraS9pcGstZ3BnL0lQSy1HUEctS0VZLSR7RElTVFJPX1ZFUlNJT059IgorICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vaXBrLWtleSIgIiR7RH0ke3N5c2NvbmZkaXJ9L3BraS9pcGstZ3BnL0lQSy1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKICAgICBpZiBbIC1mICIke0J9L3BmLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcGYta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL3BhY2thZ2VmZWVkLWdwZy9QQUNLQUdFRkVFRC1HUEctS0VZLSR7RElTVFJPX1ZFUlNJT059IgorICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcGYta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL3BhY2thZ2VmZWVkLWdwZy9QQUNLQUdFRkVFRC1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKIH0KIAogZG9fZGVwbG95ICgpIHsKICAgICBpZiBbIC1mICIke0J9L3JwbS1rZXkiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0RFUExPWURJUn0vUlBNLUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9ycG0ta2V5IiAiJHtERVBMT1lESVJ9L1JQTS1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKICAgICBpZiBbIC1mICIke0J9L2lway1rZXkiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L2lway1rZXkiICIke0RFUExPWURJUn0vSVBLLUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9pcGsta2V5IiAiJHtERVBMT1lESVJ9L0lQSy1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKICAgICBpZiBbIC1mICIke0J9L3BmLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcGYta2V5IiAiJHtERVBMT1lESVJ9L1BBQ0tBR0VGRUVELUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0RFUExPWURJUn0vUEFDS0FHRUZFRUQtR1BHLUtFWS0ke0RJU1RST30tJHtESVNUUk9fQ09ERU5BTUV9IgogICAgIGZpCiB9CiBkb19kZXBsb3lbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9SUE19IgpAQCAtNzEsMyArNzEsMTEgQEAKICMgY2xlYXIgc3RhbXAtZXh0cmEtaW5mbyBzaW5jZSBNQUNISU5FIGlzIG5vcm1hbGx5IHB1dCB0aGVyZSBieSBkZXBsb3kuYmJjbGFzcwogZG9fZGVwbG95W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIGFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2dldF9wdWJsaWNfa2V5cworCisjIERlbGV0ZSB1bm5lY2Vzc2FyeSB0YXNrcy4gSW4gcGFydGljdWxhciwgImRvX3VucGFjayIgX211c3RfIGJlIGRlbGV0ZWQgYmVjYXVzZQorIyBpdCBjbGVhbnMgJHtCfSBhbmQgd2lsbCB3aXBlIGFueSBrZXlzIGV4cG9ydGVkIGJ5IGRvX2dldF9wdWJsaWNfa2V5cy4KK2RlbHRhc2sgZG9fZmV0Y2gKK2RlbHRhc2sgZG9fdW5wYWNrCitkZWx0YXNrIGRvX3BhdGNoCitkZWx0YXNrIGRvX2NvbmZpZ3VyZQorZGVsdGFzayBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCmluZGV4IGYzZmMxZWIuLjVmYWJmN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCkBAIC0zNCw4ICszNCw2IEBACiBpbmhlcml0IG5vcGFja2FnZXMKIAogZGVsdGFzayBpbnN0YWxsCi1kZWx0YXNrIHBhY2thZ2UKLWRlbHRhc2sgcGFja2FnZWRhdGEKIGRlbHRhc2sgcG9wdWxhdGVfc3lzcm9vdAogCiBkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtQQUNLQUdFX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCmluZGV4IGNkNDk0ZWMuLjA5ZWI0MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKQEAgLTUsMTIgKzUsMTUgQEAKIERFUEVORFMgPSAiXAogICAgICAgICAgICBwYXJ0ZWQtbmF0aXZlIHN5c2xpbnV4LW5hdGl2ZSBncHRmZGlzay1uYXRpdmUgZG9zZnN0b29scy1uYXRpdmUgXAogICAgICAgICAgICBtdG9vbHMtbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGdydWItZWZpLW5hdGl2ZSBjZHJ0b29scy1uYXRpdmUgXAotICAgICAgICAgICBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIFwKKyAgICAgICAgICAgYnRyZnMtdG9vbHMtbmF0aXZlIHNxdWFzaGZzLXRvb2xzLW5hdGl2ZSBwc2V1ZG8tbmF0aXZlIFwKKyAgICAgICAgICAgZTJmc3Byb2dzLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSBcCiAgICAgICAgICAgICIKIERFUEVORFNfYXBwZW5kX3g4NiA9ICIgc3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgogREVQRU5EU19hcHBlbmRfeDg2LTY0ID0gIiBzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCitERVBFTkRTX2FwcGVuZF94ODYteDMyID0gIiBzeXNsaW51eCBncnViLWVmaSIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKwogaW5oZXJpdCBub3BhY2thZ2VzCiAKICMgVGhlIHN5c3Jvb3Qgb2Ygd2ljLXRvb2xzIGlzIG5lZWRlZCBmb3Igd2ljLCBidXQgaWYgcm1fd29yayBpcyBlbmFibGVkLCBpdCB3aWxsCkBAIC0xOSwxNCArMjIsNSBAQAogCiBweXRob24gZG9fYnVpbGRfc3lzcm9vdCAoKSB7CiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJleHRlbmRfcmVjaXBlX3N5c3Jvb3QiLCBkKQotCi0gICAgIyBXcml0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdXNlZCBieSB3aWMKLSAgICAjIHRvIHRtcC9zeXNyb290cy88bWFjaGluZT4vaW1nZGF0YS93aWN0b29scy5lbnYKLSAgICBvdXRkaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1NUQUdJTkdfRElSJyksIGQuZ2V0VmFyKCdNQUNISU5FJyksICdpbWdkYXRhJykKLSAgICBiYi51dGlscy5ta2RpcmhpZXIob3V0ZGlyKQotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ob3V0ZGlyLCAid2ljLXRvb2xzLmVudiIpLCAndycpIGFzIGVudmY6Ci0gICAgICAgIGZvciB2YXIgaW4gKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnU1RBR0lOR19EQVRBRElSJywgJ1NUQUdJTkdfTElCRElSJyk6Ci0gICAgICAgICAgICBlbnZmLndyaXRlKCclcz0iJXMiXG4nICUgKHZhciwgZC5nZXRWYXIodmFyKS5zdHJpcCgpKSkKLQogfQogYWRkdGFzayBkb19idWlsZF9zeXNyb290IGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCmluZGV4IDU2YzlkN2YuLjlhZjExNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCkBAIC0yNiwzICsyNiw4IEBACiAjIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KICMgYXNzZW1ibHkKIE1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKKyMgdGh1bWIxIGlzIHVuc3VwcG9ydGVkCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IGE4OGJjNGQuLmRiMjZiNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC0zLDkgKzMsOSBAQAogCiByZXF1aXJlIG11c2wuaW5jCiAKLVNSQ1JFViA9ICI1NDgwN2Q0N2FjZWNhYjc3ODQ5OGNlZDg4Y2U4ZjYyYmZhMTZlMzc5IgorU1JDUkVWID0gImViMDNiZGUyZjI0NTgyODc0Y2I3MmI1NmM3ODExYmY1MWRhMGM4MTciCiAKLVBWID0gIjEuMS4xNitnaXQke1NSQ1BWfSIKK1BWID0gIjEuMS4xOCtnaXQke1NSQ1BWfSIKIAogIyBtaXJyb3IgaXMgYXQgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL211c2wuZ2l0CiAKQEAgLTI4LDYgKzI4LDE0IEBACiAKIExERkxBR1MgKz0gIi1XbCwtc29uYW1lLGxpYmMuc28iCiAKKyMgV2hlbiBjb21waWxpbmcgZm9yIFRodW1iIG9yIFRodW1iMiwgZnJhbWUgcG9pbnRlcnMgX211c3RfIGJlIGRpc2FibGVkIHNpbmNlIHRoZQorIyBUaHVtYiBmcmFtZSBwb2ludGVyIGluIHI3IGNsYXNoZXMgd2l0aCBtdXNsJ3MgdXNlIG9mIGlubGluZSBhc20gdG8gbWFrZSBzeXNjYWxscworIyAod2hlcmUgcjcgaXMgdXNlZCBmb3IgdGhlIHN5c2NhbGwgTlIpLiBJbiBtb3N0IGNhc2VzLCBmcmFtZSBwb2ludGVycyB3aWxsIGJlCisjIGRpc2FibGVkIGF1dG9tYXRpY2FsbHkgZHVlIHRvIHRoZSBvcHRpbWlzYXRpb24gbGV2ZWwsIGJ1dCBhcHBlbmQgYW4gZXhwbGljaXQKKyMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbiBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lCisjIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX2FybSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCiBDT05GSUdVUkVPUFRTID0gIiBcCiAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKICAgICAtLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9IFwKQEAgLTQ5LDEwICs1NywxMSBAQAogCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPScke0R9JwogCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJcm0gLWYgJHtEfSR7YmluZGlyfS9sZGQKIAlsbnIgJHtEfSR7bGliZGlyfS9saWJjLnNvICR7RH0ke2JpbmRpcn0vbGRkCiAJZm9yIGwgaW4gY3J5cHQgZGwgbSBwdGhyZWFkIHJlc29sdiBydCB1dGlsIHhuZXQKIAlkbwotCQlsbiAtcyBsaWJjLnNvICR7RH0ke2xpYmRpcn0vbGliJGwuc28KKwkJbG4gLXNmIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbwogCWRvbmUKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtdGljLWhhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE5NzA1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtdGljLWhhbmcucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBhOTU1OTBmNjc2MjA5ODMyZmUwYjI3MjI2ZTZkZTNjYjUwZTJiOTdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxNDozMTo1MSArMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gdGljIGhhbmcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCisndGljJyBvZiBzb21lIGxpbnV4IGRpc3RyaWJ1dGlvbnMgKGUuZy4gZmVkb3JhIDExKSBoYW5nIGluIGFuIGluZmluaXRlCitsb29wIHdoZW4gcHJvY2Vzc2luZyB0aGUgb3JpZ2luYWwgZmlsZS4KKworU2lnbmVkLW9mZi1ieTogYW5vbnltb3VzCisKK1JlYmFzZSB0byA2LjArMjAxNzA3MTUKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1pc2MvdGVybWluZm8uc3JjIHwgMTEgKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWlzYy90ZXJtaW5mby5zcmMgYi9taXNjL3Rlcm1pbmZvLnNyYworaW5kZXggZWUzZmFiMy4uMTc2ZDU5MyAxMDA2NDQKKy0tLSBhL21pc2MvdGVybWluZm8uc3JjCisrKysgYi9taXNjL3Rlcm1pbmZvLnNyYworQEAgLTUxNzcsMTIgKzUxNzcsMTEgQEAga29uc29sZS14ZjN4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDMueCB4dGVybSwKKyAjIFRoZSB2YWx1ZSBmb3Iga2JzIHJlZmxlY3RzIGxvY2FsIGN1c3RvbWl6YXRpb24gcmF0aGVyIHRoYW4gdGhlIHNldHRpbmdzIHVzZWQKKyAjIGZvciBYRnJlZTg2IHh0ZXJtLgorIGtvbnNvbGUteGY0eHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXlib2FyZCBmb3IgWEZyZWU4NiA0LnggeHRlcm0sCistCWtlbmQ9XEVPRiwga2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUrcGNma2V5cywKKy0JdXNlPWtvbnNvbGUtdnQxMDAsCistIyBLb25zb2xlIGRvZXMgbm90IGltcGxlbWVudCBzaGlmdGVkIGN1cnNvci1rZXlzLgorLWtvbnNvbGUrcGNma2V5c3xrb25zb2xlIHN1YnNldCBvZiB4dGVybStwY2ZrZXlzLAorLQlrTEZUQCwga1JJVEAsIGtjYnQ9XEVbWiwga2luZEAsIGtyaUAsIGtETkAsIGtVUEAsIHVzZT14dGVybStwY2MyLAorLQl1c2U9eHRlcm0rcGNmMCwKKysJa2VuZD1cRU9GLCBrZjE9XEVPUCwga2YxMz1cRU8yUCwga2YxND1cRU8yUSwga2YxNT1cRU8yUiwKKysJa2YxNj1cRU8yUywga2YxNz1cRVsxNTsyfiwga2YxOD1cRVsxNzsyfiwga2YxOT1cRVsxODsyfiwKKysJa2YyPVxFT1EsIGtmMjA9XEVbMTk7Mn4sIGtmMjE9XEVbMjA7Mn4sIGtmMjI9XEVbMjE7Mn4sCisrCWtmMjM9XEVbMjM7Mn4sIGtmMjQ9XEVbMjQ7Mn4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKKysJa2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUtdnQxMDAsCisgIyBLREUncyAidnQxMDAiIGtleWJvYXJkIGhhcyBubyByZWxhdGlvbnNoaXAgdG8gYW55IHRlcm1pbmFsIHRoYXQgREVDIG1hZGUsIGJ1dAorICMgaXQgaXMgc3RpbGwgdXNlZnVsIGZvciBkZXJpdmluZyB0aGUgb3RoZXIgZW50cmllcy4KKyBrb25zb2xlLXZ0MTAwfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIHZ0MTAwIChzaWMpIGtleWJvYXJkLAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDdjZTZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gOTM5Yzk5NGYzNzU2YzJkNmQzY2FiMmU2YTA0ZDA1ZmE3YzJiMWQ1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTQ6NDU6MjcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGNvbmZpZ3VyZTogcmVwcm9kdWNpYmxlCisKKyJjb25maWd1cmUiIGVuZm9yY2VzIC1VIGZvciBhciBmbGFncywgYnJlYWtpbmcgZGV0ZXJtaW5pc3RpYyBidWlsZHMuCitUaGUgZmxhZyB3YXMgYWRkZWQgdG8gZml4IHNvbWUgdmFndWVseSBzcGVjaWZpZWQgInJlY2VudCBQT1NJWCBiaW51dGlsCitidWlsZCBwcm9ibGVtcyIgaW4gMjAxNS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitSZWJhc2UgdG8gUmViYXNlIHRvIDYuMCsyMDE3MDcxNQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDdkN2QyYzEuLmY0NDQzNTQgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTQ0NTgsNyArNDQ1OCw3IEBAIGlmIHRlc3QgIiR7Y2ZfY3ZfYXJfZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyBlbHNlCisgCisgCWNmX2N2X2FyX2ZsYWdzPXVua25vd24KKy0JZm9yIGNmX2FyX2ZsYWdzIGluIC1jdXJ2VSAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorKwlmb3IgY2ZfYXJfZmxhZ3MgaW4gLWN1cnYgY3VydiAtY3J2IGNydiAtY3F2IGNxdiAtcnYgcnYKKyAJZG8KKyAKKyAJCSMgY2hlY2sgaWYgJEFSRkxBR1MgYWxyZWFkeSBjb250YWlucyB0aGlzIGNob2ljZQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL0NWRS0yMDE3LTEzNzMyLUNWRS0yMDE3LTEzNzM0LUNWRS0yMDE3LTEzNzMwLUNWRS0yMDE3LTEzNzI5LUNWRS0yMDE3LTEzNzI4LUNWRS0yMDE3LTEzNzMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE5MzMyYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL0NWRS0yMDE3LTEzNzMyLUNWRS0yMDE3LTEzNzM0LUNWRS0yMDE3LTEzNzMwLUNWRS0yMDE3LTEzNzI5LUNWRS0yMDE3LTEzNzI4LUNWRS0yMDE3LTEzNzMxLnBhdGNoCkBAIC0wLDAgKzEsNTQxIEBACitGcm9tIDRiZjcyY2I4ZjFkM2FhNWYzM2MzMWViODE3YTVmMDMzOGY0YWFmNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIwIFNlcCAyMDE3IDA1OjAyOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEltcG9ydCB1cHN0cmVhbSBwYXRjaCAyMDE3MDgyNgorCisyMDE3MDgyNgorCSsgZml4ZXMgZm9yICJpdGVybTIiIChyZXBvcnQgYnkgTGVvbmFyZG8gQnJvbmRhbmkgU2NoZW5rZWwpIC1URAorCSsgY29ycmVjdGVkIGEgd2FybmluZyBmcm9tIHRpYyBhYm91dCBrZXlzIHdoaWNoIGFyZSB0aGUgc2FtZSwgdG8gc2tpcAorCSAgb3ZlciBtaXNzaW5nL2NhbmNlbGxlZCB2YWx1ZXMuCisJKyBhZGQgY2hlY2sgaW4gdGljIGZvciB1bm5lY2Vzc2FyeSB1c2Ugb2YgIjIiIHRvIGRlbm90ZSBhIHNoaWZ0ZWQKKwkgIHNwZWNpYWwga2V5LgorCSsgaW1wcm92ZSBjaGVja3MgaW4gdHJpbV9zZ3IwLCBjb21wX3BhcnNlLmMgYW5kIHBhcnNlX2VudHJ5LmMsIGZvcgorCSAgY2FuY2VsbGVkIHN0cmluZyBjYXBhYmlsaXRpZXMuCisJKyBhZGQgY2hlY2sgaW4gX25jX3BhcnNlX2VudHJ5KCkgZm9yIGludmFsaWQgZW50cnkgbmFtZSwgc2V0dGluZyB0aGUKKwkgIG5hbWUgdG8gImludmFsaWQiIHRvIGF2b2lkIHByb2JsZW1zIHN0b3JpbmcgZW50cmllcy4KKwkrIGFkZC9pbXByb3ZlIGNoZWNrcyBpbiB0aWMncyBwYXJzZXIgdG8gYWRkcmVzcyBpbnZhbGlkIGlucHV0CisJICArIGFkZCBhIGNoZWNrIGluIGNvbXBfc2Nhbi5jIHRvIGhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIGEKKwkgICAgbm9udGV4dCBmaWxlIGVuZGluZyB3aXRoIGEgTlVMIHJhdGhlciB0aGFuIG5ld2xpbmUgaXMgZ2l2ZW4gdG8gdGljCisJICAgIGFzIGlucHV0IChSZWRoYXQgIzE0ODQyNzQpLgorCSAgKyBhbGxvdyBmb3IgY2FuY2VsbGVkIGNhcGFiaWxpdGllcyBpbiBfbmNfc2F2ZV9zdHIgKFJlZGhhdCAjMTQ4NDI3NikuCisJICArIGFkZCB2YWxpZGl0eSBjaGVja3MgZm9yICJ1c2U9IiB0YXJnZXQgaW4gX25jX3BhcnNlX2VudHJ5IChSZWRoYXQKKwkgICAgIzE0ODQyODQpLgorCSAgKyBjaGVjayBmb3IgaW52YWxpZCBzdHJpbmdzIGluIHBvc3Rwcm9jZXNzX3Rlcm1jYXAgKFJlZGhhdCAjMTQ4NDI4NSkKKwkgICsgcmVzZXQgc2Vjb25kYXJ5IHBvaW50ZXJzIG9uIEVPRiBpbiBuZXh0X2NoYXIoKSAoUmVkaGF0ICMxNDg0Mjg3KS4KKwkgICsgZ3VhcmQgX25jX3NhZmVfc3RyY3B5KCkgYW5kIF9uY19zYWZlX3N0cmNhdCgpIGFnYWluc3QgY2FsbHMgdXNpbmcKKwkgICAgY2FuY2VsbGVkIHN0cmluZ3MgKFJlZGhhdCAjMTQ4NDI5MSkuCisJKyBjb3JyZWN0IHR5cG8gaW4gY3Vyc19tZW1sZWFrcy4zeCAoU3ZlbiBKb2FjaGltKS4KKwkrIGltcHJvdmUgdGVzdC9jb25maWd1cmUgY2hlY2tzIGZvciBzb21lIGN1cnNlcyB2YXJpYW50cyBub3QgYmFzZWQgb24KKwkgIFgvT3BlbiBDdXJzZXMuCisJKyBhZGQgb3B0aW9ucyBmb3IgdGVzdC9jb25maWd1cmUgdG8gZGlzYWJsZSBjaGVja3MgZm9yIGZvcm0sIG1lbnUgYW5kCisJICBwYW5lbCBsaWJyYXJpZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTM3MzIsIENWRS0yMDE3LTEzNzM0LCBDVkUtMjAxNy0xMzczMCwgQ1ZFLTIwMTctMTM3MjksIENWRS0yMDE3LTEzNzI4LCBDVkUtMjAxNy0xMzczMQorIAorCitBdXRob3I6IFN2ZW4gSm9hY2hpbSA8c3ZlbmpvYWNAZ214LmRlPgorU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgorLS0tCisgZGlzdC5tayAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KKyBpbmNsdWRlL25jdXJzZXNfZGVmcyAgICAgICAgfCAgNCArLQorIG5jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYyB8ICA0ICstCisgbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMgIHwgMTAgKystLS0KKyBuY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jICAgfCAgNiArKy0KKyBuY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyBuY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYyAgICAgfCAgOSArKystLQorIG5jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMgICB8ICA0ICstCisgcHJvZ3MvdGljLmMgICAgICAgICAgICAgICAgIHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDkgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGlzdC5tayBiL2Rpc3QubWsKK2luZGV4IDlhZjI2OTkuLjJjNzA0NzIgMTAwNjQ0CistLS0gYS9kaXN0Lm1rCisrKysgYi9kaXN0Lm1rCitAQCAtMjUsNyArMjUsNyBAQAorICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworICMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMgJElkOiBkaXN0Lm1rLHYgMS4xMTcyIDIwMTcvMDcvMTMgMDA6MTU6MjcgdG9tIEV4cCAkCisrIyAkSWQ6IGRpc3QubWssdiAxLjExNzkgMjAxNy8wOC8yMCAxNTozMzo0MSB0b20gRXhwICQKKyAjIE1ha2VmaWxlIGZvciBjcmVhdGluZyBuY3Vyc2VzIGRpc3RyaWJ1dGlvbnMuCisgIworICMgVGhpcyBvbmx5IG5lZWRzIHRvIGJlIHVzZWQgZGlyZWN0bHkgYXMgYSBtYWtlZmlsZSBieSBkZXZlbG9wZXJzLCBidXQKK0BAIC0zNyw3ICszNyw3IEBAIFNIRUxMID0gL2Jpbi9zaAorICMgVGhlc2UgZGVmaW5lIHRoZSBtYWpvci9taW5vci9wYXRjaCB2ZXJzaW9ucyBvZiBuY3Vyc2VzLgorIE5DVVJTRVNfTUFKT1IgPSA2CisgTkNVUlNFU19NSU5PUiA9IDAKKy1OQ1VSU0VTX1BBVENIID0gMjAxNzA3MTUKKytOQ1VSU0VTX1BBVENIID0gMjAxNzA4MjYKKyAKKyAjIFdlIGRvbid0IGFwcGVuZCB0aGUgcGF0Y2ggdG8gdGhlIHZlcnNpb24sIHNpbmNlIHRoaXMgb25seSBhcHBsaWVzIHRvIHJlbGVhc2VzCisgVkVSU0lPTiA9ICQoTkNVUlNFU19NQUpPUikuJChOQ1VSU0VTX01JTk9SKQorZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmN1cnNlc19kZWZzIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKK2luZGV4IGU2NjExYjcuLmQyMzdkYjEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL25jdXJzZXNfZGVmcworKysrIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKK0BAIC0xLDQgKzEsNCBAQAorLSMgJElkOiBuY3Vyc2VzX2RlZnMsdiAxLjczIDIwMTcvMDYvMjQgMTQ6MjA6NTcgdG9tIEV4cCAkCisrIyAkSWQ6IG5jdXJzZXNfZGVmcyx2IDEuNzUgMjAxNy8wOC8yMCAxNjo1MDowNCB0b20gRXhwICQKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIENvcHlyaWdodCAoYykgMjAwMC0yMDE2LDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKK0BAIC01MCw3ICs1MCw5IEBAIEhBVkVfQlNEX1NUUklOR19ICisgSEFWRV9CVE9XQyAKKyBIQVZFX0JVSUxUSU5fSAorIEhBVkVfQ0hHQVQJMQorK0hBVkVfQ09MT1JfQ09OVEVOVAkxCisgSEFWRV9DT0xPUl9TRVQJMQorK0hBVkVfQ1VSU0NSCTEKKyBIQVZFX0RJUkVOVF9ICisgSEFWRV9FUlJOTworIEhBVkVfRkNOVExfSAorZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYworaW5kZXggNWRlMDlmMS4uMDkzNzRkNiAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYworKysrIGIvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCitAQCAtNDcsNyArNDcsNyBAQAorIAorICNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogYWxsb2NfZW50cnkuYyx2IDEuNjAgMjAxNy8wNi8yNyAyMzo0ODo1NSB0b20gRXhwICQiKQorK01PRFVMRV9JRCgiJElkOiBhbGxvY19lbnRyeS5jLHYgMS42MSAyMDE3LzA4LzI1IDA5OjA5OjA4IHRvbSBFeHAgJCIpCisgCisgI2RlZmluZSBBQlNFTlRfT0ZGU0VUICAgIC0xCisgI2RlZmluZSBDQU5DRUxMRURfT0ZGU0VUIC0yCitAQCAtOTgsNyArOTgsNyBAQCBfbmNfc2F2ZV9zdHIoY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nKQorICAgICBzaXplX3Qgb2xkX25leHRfZnJlZSA9IG5leHRfZnJlZTsKKyAgICAgc2l6ZV90IGxlbjsKKyAKKy0gICAgaWYgKHN0cmluZyA9PSAwKQorKyAgICBpZiAoIVZBTElEX1NUUklORyhzdHJpbmcpKQorIAlyZXR1cm4gX25jX3NhdmVfc3RyKCIiKTsKKyAgICAgbGVuID0gc3RybGVuKHN0cmluZykgKyAxOworIAorZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jIGIvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKK2luZGV4IDM0ZTYyMTYuLjU4MGQ0ZGYgMTAwNjQ0CistLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworKysrIGIvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgCisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBjb21wX3BhcnNlLmMsdiAxLjk2IDIwMTcvMDQvMTUgMTU6MzY6NTggdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS45OSAyMDE3LzA4LzI2IDE2OjE1OjUwIHRvbSBFeHAgJCIpCisgCisgc3RhdGljIHZvaWQgc2FuaXR5X2NoZWNrMihURVJNVFlQRTIgKiwgYm9vbCk7CisgTkNVUlNFU19JTVBFWFAgdm9pZCBOQ1VSU0VTX0FQSSgqX25jX2NoZWNrX3Rlcm10eXBlMikgKFRFUk1UWVBFMiAqLCBib29sKSA9IHNhbml0eV9jaGVjazI7CitAQCAtNTEwLDkgKzUxMCw5IEBAIHN0YXRpYyB2b2lkCisgZml4dXBfYWNzYyhURVJNVFlQRTIgKnRwLCBpbnQgbGl0ZXJhbCkKKyB7CisgICAgIGlmICghbGl0ZXJhbCkgeworLQlpZiAoYWNzX2NoYXJzID09IDAKKy0JICAgICYmIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgIT0gMAorLQkgICAgJiYgZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApCisrCWlmIChhY3NfY2hhcnMgPT0gQUJTRU5UX1NUUklORworKwkgICAgJiYgUFJFU0VOVChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQorKwkgICAgJiYgUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKQorIAkgICAgYWNzX2NoYXJzID0gc3RyZHVwKFZUX0FDU0MpOworICAgICB9CisgfQorQEAgLTU2OCw5ICs1NjgsNyBAQCBzYW5pdHlfY2hlY2syKFRFUk1UWVBFMiAqdHAsIGJvb2wgbGl0ZXJhbCkKKyAgICAgUEFJUkVEKGVudGVyX3hvbl9tb2RlLCBleGl0X3hvbl9tb2RlKTsKKyAgICAgUEFJUkVEKGVudGVyX2FtX21vZGUsIGV4aXRfYW1fbW9kZSk7CisgICAgIEFORE1JU1NJTkcobGFiZWxfb2ZmLCBsYWJlbF9vbik7CistI2lmZGVmIHJlbW92ZV9jbG9jaworICAgICBQQUlSRUQoZGlzcGxheV9jbG9jaywgcmVtb3ZlX2Nsb2NrKTsKKy0jZW5kaWYKKyAgICAgQU5ETUlTU0lORyhzZXRfY29sb3JfcGFpciwgaW5pdGlhbGl6ZV9wYWlyKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYyBiL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKK2luZGV4IDQwZDdmNmEuLmIyMDcyNTcgMTAwNjQ0CistLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCitAQCAtNTAsNyArNTAsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogY29tcF9zY2FuLmMsdiAxLjEwNiAyMDE3LzA0LzIyIDExOjQxOjEyIHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IGNvbXBfc2Nhbi5jLHYgMS4xMDggMjAxNy8wOC8yNSAyMjo1NzoyMSB0b20gRXhwICQiKQorIAorIC8qCisgICogTWF4aW11bSBsZW5ndGggb2Ygc3RyaW5nIGNhcGFiaWxpdHkgd2UnbGwgYWNjZXB0IGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLgorQEAgLTE2OCw2ICsxNjgsOCBAQCBuZXh0X2NoYXIodm9pZCkKKyAJaWYgKHJlc3VsdCAhPSAwKSB7CisgCSAgICBGcmVlQW5kTnVsbChyZXN1bHQpOworIAkgICAgRnJlZUFuZE51bGwocHVzaG5hbWUpOworKwkgICAgYnVmcHRyID0gMDsKKysJICAgIGJ1ZnN0YXJ0ID0gMDsKKyAJICAgIGFsbG9jYXRlZCA9IDA7CisgCX0KKyAJLyoKK0BAIC0yMjIsNiArMjI0LDggQEAgbmV4dF9jaGFyKHZvaWQpCisgCQl9CisgCQlpZiAoKGJ1ZnB0ciA9IGJ1ZnN0YXJ0KSAhPSAwKSB7CisgCQkgICAgdXNlZCA9IHN0cmxlbihidWZwdHIpOworKwkJICAgIGlmICh1c2VkID09IDApCisrCQkJcmV0dXJuIChFT0YpOworIAkJICAgIHdoaWxlIChpc3doaXRlKCpidWZwdHIpKSB7CisgCQkJaWYgKCpidWZwdHIgPT0gJ1x0JykgeworIAkJCSAgICBfbmNfY3Vycl9jb2wgPSAoX25jX2N1cnJfY29sIHwgNykgKyAxOworZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYworaW5kZXggM2ZhMmYyNS4uYmJiZmNiMiAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYworKysrIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCitAQCAtNDcsNyArNDcsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuODYgMjAxNy8wNi8yOCAwMDo1MzoxMiB0b20gRXhwICQiKQorK01PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS45MSAyMDE3LzA4LzI2IDE2OjEzOjM0IHRvbSBFeHAgJCIpCisgCisgI2lmZGVmIExJTlQKKyBzdGF0aWMgc2hvcnQgY29uc3QgcGFyYW1ldHJpemVkW10gPQorQEAgLTE4MCw2ICsxODAsMjAgQEAgX25jX2V4dGVuZF9uYW1lcyhFTlRSWSAqIGVudHJ5cCwgY2hhciAqbmFtZSwgaW50IHRva2VuX3R5cGUpCisgfQorICNlbmRpZiAvKiBOQ1VSU0VTX1hOQU1FUyAqLworIAorK3N0YXRpYyBib29sCisrdmFsaWRfZW50cnluYW1lKGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgICBib29sIHJlc3VsdCA9IFRSVUU7CisrICAgIGludCBjaDsKKysgICAgd2hpbGUgKChjaCA9IFVDaGFyKCpuYW1lKyspKSAhPSAnXDAnKSB7CisrCWlmIChjaCA8PSAnICcgfHwgY2ggPiAnficgfHwgY2ggPT0gJy8nKSB7CisrCSAgICByZXN1bHQgPSBGQUxTRTsKKysJICAgIGJyZWFrOworKwl9CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgLyoKKyAgKglpbnQKKyAgKglfbmNfcGFyc2VfZW50cnkoZW50cnksIGxpdGVyYWwsIHNpbGVudCkKK0BAIC0yMTEsNiArMjI1LDcgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCisgICAgIGludCB0b2tlbl90eXBlOworICAgICBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqZW50cnlfcHRyOworICAgICBjaGFyICpwdHIsICpiYXNlOworKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgICBib29sIGJhZF90Y191c2FnZSA9IEZBTFNFOworIAorICAgICB0b2tlbl90eXBlID0gX25jX2dldF90b2tlbihzaWxlbnQpOworQEAgLTI2MSw3ICsyNzYsMTIgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCisgICAgICAqIHJlc3VsdHMgaW4gdGhlIHRlcm1pbmFsIHR5cGUgZ2V0dGluZyBwcmVtYXR1cmVseSBzZXQgdG8gY29ycmVzcG9uZAorICAgICAgKiB0byB0aGF0IG9mIHRoZSBuZXh0IGVudHJ5LgorICAgICAgKi8KKy0gICAgX25jX3NldF90eXBlKF9uY19maXJzdF9uYW1lKGVudHJ5cC0+dHRlcm0udGVybV9uYW1lcykpOworKyAgICBuYW1lID0gX25jX2ZpcnN0X25hbWUoZW50cnlwLT50dGVybS50ZXJtX25hbWVzKTsKKysgICAgaWYgKCF2YWxpZF9lbnRyeW5hbWUobmFtZSkpIHsKKysJX25jX3dhcm5pbmcoImludmFsaWQgZW50cnkgbmFtZSBcIiVzXCIiLCBuYW1lKTsKKysJbmFtZSA9ICJpbnZhbGlkIjsKKysgICAgfQorKyAgICBfbmNfc2V0X3R5cGUobmFtZSk7CisgCisgICAgIC8qIGNoZWNrIGZvciBvdmVybHktbG9uZyBuYW1lcyBhbmQgYWxpYXNlcyAqLworICAgICBmb3IgKGJhc2UgPSBlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXM7IChwdHIgPSBzdHJjaHIoYmFzZSwgJ3wnKSkgIT0gMDsKK0BAIC0yODMsMTMgKzMwMywyNCBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKKyAJYm9vbCBpc191c2UgPSAoc3RyY21wKF9uY19jdXJyX3Rva2VuLnRrX25hbWUsICJ1c2UiKSA9PSAwKTsKKyAJYm9vbCBpc190YyA9ICFpc191c2UgJiYgKHN0cmNtcChfbmNfY3Vycl90b2tlbi50a19uYW1lLCAidGMiKSA9PSAwKTsKKyAJaWYgKGlzX3VzZSB8fCBpc190YykgeworKwkgICAgaWYgKCFWQUxJRF9TVFJJTkcoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKQorKwkJfHwgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nWzBdID09ICdcMCcpIHsKKysJCV9uY193YXJuaW5nKCJtaXNzaW5nIG5hbWUgZm9yIHVzZS1jbGF1c2UiKTsKKysJCWNvbnRpbnVlOworKwkgICAgfSBlbHNlIGlmICghdmFsaWRfZW50cnluYW1lKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZykpIHsKKysJCV9uY193YXJuaW5nKCJpbnZhbGlkIG5hbWUgZm9yIHVzZS1jbGF1c2UgXCIlc1wiIiwKKysJCQkgICAgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKKysJCWNvbnRpbnVlOworKwkgICAgfSBlbHNlIGlmIChlbnRyeXAtPm51c2VzID49IE1BWF9VU0VTKSB7CisrCQlfbmNfd2FybmluZygidG9vIG1hbnkgdXNlLWNsYXVzZXMsIGlnbm9yZWQgXCIlc1wiIiwKKysJCQkgICAgX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKKysJCWNvbnRpbnVlOworKwkgICAgfQorIAkgICAgZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLm5hbWUgPSBfbmNfc2F2ZV9zdHIoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKTsKKyAJICAgIGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5saW5lID0gX25jX2N1cnJfbGluZTsKKy0JICAgIGlmIChWQUxJRF9TVFJJTkcoZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLm5hbWUpKSB7CistCQllbnRyeXAtPm51c2VzKys7CistCQlpZiAoZW50cnlwLT5udXNlcyA+IDEgJiYgaXNfdGMpIHsKKy0JCSAgICBCQURfVENfVVNBR0UKKy0JCX0KKysJICAgIGVudHJ5cC0+bnVzZXMrKzsKKysJICAgIGlmIChlbnRyeXAtPm51c2VzID4gMSAmJiBpc190YykgeworKwkJQkFEX1RDX1VTQUdFCisgCSAgICB9CisgCX0gZWxzZSB7CisgCSAgICAvKiBub3JtYWwgdG9rZW4gbG9va3VwICovCitAQCAtNjQxLDEzICs2NzIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciBDX0JTW10gPSAiXGIiOworIHN0YXRpYyBjb25zdCBjaGFyIENfSFRbXSA9ICJcdCI7CisgCisgLyoKKy0gKiBOb3RlIHRoYXQgV0FOVEVEIGFuZCBQUkVTRU5UIGFyZSBub3Qgc2ltcGxlIGludmVyc2VzISAgSWYgYSBjYXBhYmlsaXR5CistICogaGFzIGJlZW4gZXhwbGljaXRseSBjYW5jZWxsZWQsIGl0J3Mgbm90IGNvbnNpZGVyZWQgV0FOVEVELgorLSAqLworLSNkZWZpbmUgV0FOVEVEKHMpCSgocykgPT0gQUJTRU5UX1NUUklORykKKy0jZGVmaW5lIFBSRVNFTlQocykJKCgocykgIT0gQUJTRU5UX1NUUklORykgJiYgKChzKSAhPSBDQU5DRUxMRURfU1RSSU5HKSkKKy0KKy0vKgorICAqIFRoaXMgYml0IG9mIGxlZ2VyZGVtYWluIHR1cm5zIGFsbCB0aGUgdGVybWluZm8gdmFyaWFibGUgbmFtZXMgaW50bworICAqIHJlZmVyZW5jZXMgdG8gbG9jYXRpb25zIGluIHRoZSBhcnJheXMgQm9vbGVhbnMsIE51bWJlcnMsIGFuZCBTdHJpbmdzIC0tLQorICAqIHByZWNpc2VseSB3aGF0J3MgbmVlZGVkLgorQEAgLTY3MiwxMCArNjk2LDEwIEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKKyAKKyAgICAgLyogaWYgdGhlcmUgd2FzIGEgdGMgZW50cnksIGFzc3VtZSB3ZSBwaWNrZWQgdXAgZGVmYXVsdHMgdmlhIHRoYXQgKi8KKyAgICAgaWYgKCFoYXNfYmFzZSkgeworLQlpZiAoV0FOVEVEKGluaXRfM3N0cmluZykgJiYgdGVybWNhcF9pbml0MikKKysJaWYgKFdBTlRFRChpbml0XzNzdHJpbmcpICYmIFBSRVNFTlQodGVybWNhcF9pbml0MikpCisgCSAgICBpbml0XzNzdHJpbmcgPSBfbmNfc2F2ZV9zdHIodGVybWNhcF9pbml0Mik7CisgCistCWlmIChXQU5URUQocmVzZXRfMnN0cmluZykgJiYgdGVybWNhcF9yZXNldCkKKysJaWYgKFdBTlRFRChyZXNldF8yc3RyaW5nKSAmJiBQUkVTRU5UKHRlcm1jYXBfcmVzZXQpKQorIAkgICAgcmVzZXRfMnN0cmluZyA9IF9uY19zYXZlX3N0cih0ZXJtY2FwX3Jlc2V0KTsKKyAKKyAJaWYgKFdBTlRFRChjYXJyaWFnZV9yZXR1cm4pKSB7CitAQCAtNzkwLDcgKzgxNCw3IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKKyAJaWYgKGluaXRfdGFicyAhPSA4ICYmIGluaXRfdGFicyAhPSBBQlNFTlRfTlVNRVJJQykKKyAJICAgIF9uY193YXJuaW5nKCJoYXJkd2FyZSB0YWJzIHdpdGggYSB3aWR0aCBvdGhlciB0aGFuIDg6ICVkIiwgaW5pdF90YWJzKTsKKyAJZWxzZSB7CistCSAgICBpZiAodGFiICYmIF9uY19jYXBjbXAodGFiLCBDX0hUKSkKKysJICAgIGlmIChQUkVTRU5UKHRhYikgJiYgX25jX2NhcGNtcCh0YWIsIENfSFQpKQorIAkJX25jX3dhcm5pbmcoImhhcmR3YXJlIHRhYnMgd2l0aCBhIG5vbi1eSSB0YWIgc3RyaW5nICVzIiwKKyAJCQkgICAgX25jX3Zpc2J1Zih0YWIpKTsKKyAJICAgIGVsc2UgeworQEAgLTg2NywxNyArODkxLDIyIEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKKyAJICAgICAqIFRoZSBtYWdpYyBtb21lbnQgLS0gY29weSB0aGUgbWFwcGVkIGtleSBzdHJpbmcgb3ZlciwKKyAJICAgICAqIHN0cmlwcGluZyBvdXQgcGFkZGluZy4KKyAJICAgICAqLworLQkgICAgZm9yIChkcCA9IGJ1ZjIsIGJwID0gdHAtPlN0cmluZ3NbZnJvbV9wdHItPm50ZV9pbmRleF07ICpicDsgYnArKykgeworLQkJaWYgKGJwWzBdID09ICckJyAmJiBicFsxXSA9PSAnPCcpIHsKKy0JCSAgICB3aGlsZSAoKmJwICYmICpicCAhPSAnPicpIHsKKy0JCQkrK2JwOworLQkJICAgIH0KKy0JCX0gZWxzZQorLQkJICAgICpkcCsrID0gKmJwOworLQkgICAgfQorLQkgICAgKmRwID0gJ1wwJzsKKysJICAgIGJwID0gdHAtPlN0cmluZ3NbZnJvbV9wdHItPm50ZV9pbmRleF07CisrCSAgICBpZiAoVkFMSURfU1RSSU5HKGJwKSkgeworKwkJZm9yIChkcCA9IGJ1ZjI7ICpicDsgYnArKykgeworKwkJICAgIGlmIChicFswXSA9PSAnJCcgJiYgYnBbMV0gPT0gJzwnKSB7CisrCQkJd2hpbGUgKCpicCAmJiAqYnAgIT0gJz4nKSB7CisrCQkJICAgICsrYnA7CisrCQkJfQorKwkJICAgIH0gZWxzZQorKwkJCSpkcCsrID0gKmJwOworKwkJfQorKwkJKmRwID0gJ1wwJzsKKyAKKy0JICAgIHRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IF9uY19zYXZlX3N0cihidWYyKTsKKysJCXRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IF9uY19zYXZlX3N0cihidWYyKTsKKysJICAgIH0gZWxzZSB7CisrCQl0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBicDsKKysJICAgIH0KKyAJfQorIAorIAkvKgorQEAgLTg4Niw3ICs5MTUsNyBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCisgCSAqIGdvdCBtYXBwZWQgdG8ga2ljaDEgYW5kIGltIHRvIGtJQyB0byBhdm9pZCBhIGNvbGxpc2lvbi4KKyAJICogSWYgdGhlIGRlc2NyaXB0aW9uIGhhcyBpbSBidXQgbm90IGljLCBoYWNrIGtJQyBiYWNrIHRvIGtpY2gxLgorIAkgKi8KKy0JaWYgKGZvdW5kaW0gJiYgV0FOVEVEKGtleV9pYykgJiYga2V5X3NpYykgeworKwlpZiAoZm91bmRpbSAmJiBXQU5URUQoa2V5X2ljKSAmJiBQUkVTRU5UKGtleV9zaWMpKSB7CisgCSAgICBrZXlfaWMgPSBrZXlfc2ljOworIAkgICAga2V5X3NpYyA9IEFCU0VOVF9TVFJJTkc7CisgCX0KK0BAIC05MzgsOSArOTY3LDkgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAkgICAgYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKGJ1ZjIpOworIAkgICAgX25jX3dhcm5pbmcoImFjc2Mgc3RyaW5nIHN5bnRoZXNpemVkIGZyb20gWEVOSVggY2FwYWJpbGl0aWVzIik7CisgCX0KKy0gICAgfSBlbHNlIGlmIChhY3NfY2hhcnMgPT0gMAorLQkgICAgICAgJiYgZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSAhPSAwCistCSAgICAgICAmJiBleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkgeworKyAgICB9IGVsc2UgaWYgKGFjc19jaGFycyA9PSBBQlNFTlRfU1RSSU5HCisrCSAgICAgICAmJiBQUkVTRU5UKGVudGVyX2FsdF9jaGFyc2V0X21vZGUpCisrCSAgICAgICAmJiBQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpIHsKKyAJYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKFZUX0FDU0MpOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jIGIvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKK2luZGV4IDM5M2Q4ZTcuLjEwZWM2YzggMTAwNjQ0CistLS0gYS9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworKysrIGIvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDcsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiwyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorQEAgLTM1LDggKzM1LDkgQEAKKyAqKi8KKyAKKyAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKysjaW5jbHVkZSA8dGljLmg+CisgCistTU9EVUxFX0lEKCIkSWQ6IHN0cmluZ3MuYyx2IDEuOCAyMDEyLzAyLzIyIDIyOjM0OjMxIHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHN0cmluZ3MuYyx2IDEuOSAyMDE3LzA4LzI2IDEzOjE2OjExIHRvbSBFeHAgJCIpCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBVc2VmdWwgc3RyaW5nIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSBmb3IgbXZjdXIpCitAQCAtMTA1LDcgKzEwNiw3IEBAIF9uY19zdHJfY29weShzdHJpbmdfZGVzYyAqIGRzdCwgc3RyaW5nX2Rlc2MgKiBzcmMpCisgTkNVUlNFU19FWFBPUlQoYm9vbCkKKyBfbmNfc2FmZV9zdHJjYXQoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKKyB7CistICAgIGlmIChzcmMgIT0gMCkgeworKyAgICBpZiAoUFJFU0VOVChzcmMpKSB7CisgCXNpemVfdCBsZW4gPSBzdHJsZW4oc3JjKTsKKyAKKyAJaWYgKGxlbiA8IGRzdC0+c19zaXplKSB7CitAQCAtMTI2LDcgKzEyNyw3IEBAIF9uY19zYWZlX3N0cmNhdChzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQorIE5DVVJTRVNfRVhQT1JUKGJvb2wpCisgX25jX3NhZmVfc3RyY3B5KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCisgeworLSAgICBpZiAoc3JjICE9IDApIHsKKysgICAgaWYgKFBSRVNFTlQoc3JjKSkgeworIAlzaXplX3QgbGVuID0gc3RybGVuKHNyYyk7CisgCisgCWlmIChsZW4gPCBkc3QtPnNfc2l6ZSkgeworZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMgYi9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCitpbmRleCA0Y2JjYjY1Li40ZDkyZDE1IDEwMDY0NAorLS0tIGEvbmN1cnNlcy90aW5mby90cmltX3NncjAuYworKysrIGIvbmN1cnNlcy90aW5mby90cmltX3NncjAuYworQEAgLTM2LDcgKzM2LDcgQEAKKyAKKyAjaW5jbHVkZSA8dGljLmg+CisgCistTU9EVUxFX0lEKCIkSWQ6IHRyaW1fc2dyMC5jLHYgMS4xNiAyMDE3LzA0LzA1IDIyOjMzOjA3IHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHRyaW1fc2dyMC5jLHYgMS4xNyAyMDE3LzA4LzI2IDE0OjU0OjE2IHRvbSBFeHAgJCIpCisgCisgI3VuZGVmIENVUgorICNkZWZpbmUgQ1VSIHRwLT4KK0BAIC0yNjMsNyArMjYzLDcgQEAgX25jX3RyaW1fc2dyMChURVJNVFlQRTIgKnRwKQorIAkgICAgLyoKKyAJICAgICAqIElmIHJtYWNzIGlzIGEgc3Vic3RyaW5nIG9mIHNncigwKSwgcmVtb3ZlIHRoYXQgY2h1bmsuCisgCSAgICAgKi8KKy0JICAgIGlmIChleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkgeworKwkgICAgaWYgKFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkgeworIAkJVFIoVFJBQ0VfREFUQUJBU0UsICgic2NhbiBmb3Igcm1hY3MgJXMiLCBfbmNfdmlzYnVmKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpKTsKKyAJCWogPSBzdHJsZW4ob2ZmKTsKKyAJCWsgPSBzdHJsZW4oZXhpdF9hbHRfY2hhcnNldF9tb2RlKTsKK2RpZmYgLS1naXQgYS9wcm9ncy90aWMuYyBiL3Byb2dzL3RpYy5jCitpbmRleCBjNWQ3OGU1Li42ZGQ0Njc4IDEwMDY0NAorLS0tIGEvcHJvZ3MvdGljLmMKKysrKyBiL3Byb2dzL3RpYy5jCitAQCAtNDgsNyArNDgsNyBAQAorICNpbmNsdWRlIDxwYXJhbWV0cml6ZWQuaD4KKyAjaW5jbHVkZSA8dHJhbnNmb3JtLmg+CisgCistTU9EVUxFX0lEKCIkSWQ6IHRpYy5jLHYgMS4yMzMgMjAxNy8wNy8xNSAxNzo0MDoxOSB0b20gRXhwICQiKQorK01PRFVMRV9JRCgiJElkOiB0aWMuYyx2IDEuMjQzIDIwMTcvMDgvMjYgMjA6NTY6NTUgdG9tIEV4cCAkIikKKyAKKyAjZGVmaW5lIFNURElOX05BTUUgIjxzdGRpbj4iCisgCitAQCAtNjIsNiArNjIsMTAgQEAgc3RhdGljIGJvb2wgc2hvd3N1bW1hcnkgPSBGQUxTRTsKKyBzdGF0aWMgY2hhciAqKm5hbWVsc3QgPSAwOworIHN0YXRpYyBjb25zdCBjaGFyICp0b19yZW1vdmU7CisgCisrI2lmIE5DVVJTRVNfWE5BTUVTCisrc3RhdGljIGJvb2wgdXNpbmdfZXh0ZW5zaW9ucyA9IEZBTFNFOworKyNlbmRpZgorKworIHN0YXRpYyB2b2lkICgqc2F2ZV9jaGVja190ZXJtdHlwZSkgKFRFUk1UWVBFMiAqLCBib29sKTsKKyBzdGF0aWMgdm9pZCBjaGVja190ZXJtdHlwZShURVJNVFlQRTIgKnR0LCBib29sKTsKKyAKK0BAIC04NTAsNiArODU0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgLyogRkFMTFRIUlUgKi8KKyAJY2FzZSAneCc6CisgCSAgICB1c2VfZXh0ZW5kZWRfbmFtZXMoVFJVRSk7CisrCSAgICB1c2luZ19leHRlbnNpb25zID0gVFJVRTsKKyAJICAgIGJyZWFrOworICNlbmRpZgorIAlkZWZhdWx0OgorQEAgLTI0MDUsMTAgKzI0MTAsMTcgQEAgY2hlY2tfY29uZmxpY3QoVEVSTVRZUEUyICp0cCkKKyAJICAgIGNvbnN0IGNoYXIgKmEgPSBnaXZlbltqXS52YWx1ZTsKKyAJICAgIGJvb2wgZmlyc3QgPSBUUlVFOworIAorKwkgICAgaWYgKCFWQUxJRF9TVFJJTkcoYSkpCisrCQljb250aW51ZTsKKysKKyAJICAgIGZvciAoayA9IGogKyAxOyBnaXZlbltrXS5rZXljb2RlOyBrKyspIHsKKyAJCWNvbnN0IGNoYXIgKmIgPSBnaXZlbltrXS52YWx1ZTsKKysKKysJCWlmICghVkFMSURfU1RSSU5HKGIpKQorKwkJICAgIGNvbnRpbnVlOworIAkJaWYgKGNoZWNrW2tdKQorIAkJICAgIGNvbnRpbnVlOworKworIAkJaWYgKCFfbmNfY2FwY21wKGEsIGIpKSB7CisgCQkgICAgY2hlY2tbal0gPSAxOworIAkJICAgIGNoZWNrW2tdID0gMTsKK0BAIC0yNDMxLDYgKzI0NDMsNjcgQEAgY2hlY2tfY29uZmxpY3QoVEVSTVRZUEUyICp0cCkKKyAJICAgIGlmICghZmlyc3QpCisgCQlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgCX0KKysjaWYgTkNVUlNFU19YTkFNRVMKKysJaWYgKHVzaW5nX2V4dGVuc2lvbnMpIHsKKysJICAgIC8qICpJTkRFTlQtT0ZGKiAqLworKwkgICAgc3RhdGljIHN0cnVjdCB7CisrCQljb25zdCBjaGFyICp4Y3Vyc2VzOworKwkJY29uc3QgY2hhciAqc2hpZnRlZDsKKysJICAgIH0gdGFibGVbXSA9IHsKKysJCXsgImtEQyIsICBOVUxMIH0sCisrCQl7ICJrRE4iLCAgImtpbmQiIH0sCisrCQl7ICJrRU5EIiwgTlVMTCB9LAorKwkJeyAia0hPTSIsIE5VTEwgfSwKKysJCXsgImtMRlQiLCBOVUxMIH0sCisrCQl7ICJrTlhUIiwgTlVMTCB9LAorKwkJeyAia1BSViIsIE5VTEwgfSwKKysJCXsgImtSSVQiLCBOVUxMIH0sCisrCQl7ICJrVVAiLCAgImtyaSIgfSwKKysJCXsgTlVMTCwgICBOVUxMIH0sCisrCSAgICB9OworKwkgICAgLyogKklOREVOVC1PTiogKi8KKysKKysJICAgIC8qCisrCSAgICAgKiBTVnI0IGN1cnNlcyBkZWZpbmVzIHRoZSAieGN1cnNlcyIgbmFtZXMgbGlzdGVkIGFib3ZlIGV4Y2VwdCBmb3IKKysJICAgICAqIHRoZSBzcGVjaWFsIGNhc2VzIGluIHRoZSAic2hpZnRlZCIgY29sdW1uLiAgV2hlbiB1c2luZyB0aGVzZQorKwkgICAgICogbmFtZXMgZm9yIHh0ZXJtJ3MgZXh0ZW5zaW9ucywgdGhhdCB3YXMgY29uZnVzaW5nLCBhbmQgcmVzdWx0ZWQKKysJICAgICAqIGluIGFkZGluZyBleHRlbmRlZCBjYXBhYmlsaXRpZXMgd2l0aCAiMiIgKHNoaWZ0KSBzdWZmaXguICBUaGlzCisrCSAgICAgKiBjaGVjayB3YXJucyBhYm91dCB1bm5lY2Vzc2FyeSB1c2Ugb2YgZXh0ZW5zaW9ucyBmb3IgdGhpcyBxdWlyay4KKysJICAgICAqLworKwkgICAgZm9yIChqID0gMDsgZ2l2ZW5bal0ua2V5Y29kZTsgKytqKSB7CisrCQljb25zdCBjaGFyICpmaW5kID0gZ2l2ZW5bal0ubmFtZTsKKysJCWludCB2YWx1ZTsKKysJCWNoYXIgY2g7CisrCisrCQlpZiAoIVZBTElEX1NUUklORyhnaXZlbltqXS52YWx1ZSkpCisrCQkgICAgY29udGludWU7CisrCisrCQlmb3IgKGsgPSAwOyB0YWJsZVtrXS54Y3Vyc2VzOyArK2spIHsKKysJCSAgICBjb25zdCBjaGFyICp0ZXN0ID0gdGFibGVba10ueGN1cnNlczsKKysJCSAgICBzaXplX3Qgc2l6ZSA9IHN0cmxlbih0ZXN0KTsKKysKKysJCSAgICBpZiAoIXN0cm5jbXAoZmluZCwgdGVzdCwgc2l6ZSkgJiYgc3RyY21wKGZpbmQsIHRlc3QpKSB7CisrCQkJc3dpdGNoIChzc2NhbmYoZmluZCArIHNpemUsICIlZCVjIiwgJnZhbHVlLCAmY2gpKSB7CisrCQkJY2FzZSAxOgorKwkJCSAgICBpZiAodmFsdWUgPT0gMikgeworKwkJCQlfbmNfd2FybmluZygiZXhwZWN0ZWQgJyVzJyByYXRoZXIgdGhhbiAnJXMnIiwKKysJCQkJCSAgICAodGFibGVba10uc2hpZnRlZAorKwkJCQkJICAgICA/IHRhYmxlW2tdLnNoaWZ0ZWQKKysJCQkJCSAgICAgOiB0ZXN0KSwgZmluZCk7CisrCQkJICAgIH0gZWxzZSBpZiAodmFsdWUgPCAyIHx8IHZhbHVlID4gMTUpIHsKKysJCQkJX25jX3dhcm5pbmcoImV4cGVjdGVkIG51bWVyaWMgMi4uMTUgJyVzJyIsIGZpbmQpOworKwkJCSAgICB9CisrCQkJICAgIGJyZWFrOworKwkJCWRlZmF1bHQ6CisrCQkJICAgIF9uY193YXJuaW5nKCJleHBlY3RlZCBudW1lcmljIHN1ZmZpeCBmb3IgJyVzJyIsIGZpbmQpOworKwkJCSAgICBicmVhazsKKysJCQl9CisrCQkJYnJlYWs7CisrCQkgICAgfQorKwkJfQorKwkgICAgfQorKwl9CisrI2VuZGlmCisgCWZyZWUoZ2l2ZW4pOworIAlmcmVlKGNoZWNrKTsKKyAgICAgfQorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL2NvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YThiZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSJjb25maWd1cmUiIGVuZm9yY2VzIC1VIGZvciBhciBmbGFncywgYnJlYWtpbmcgZGV0ZXJtaW5pc3RpYyBidWlsZHMuCi1UaGUgZmxhZyB3YXMgYWRkZWQgdG8gZml4IHNvbWUgdmFndWVseSBzcGVjaWZpZWQgInJlY2VudCBQT1NJWCBiaW51dGlsCi1idWlsZCBwcm9ibGVtcyIgaW4gMjAxNS4gCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggN2YzMTIwOC4uYWE4MDkxMSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNDQyOCw3ICs0NDI4LDcgQEAgaWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgotIGVsc2UKLSAKLSAJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgotLQlmb3IgY2ZfYXJfZmxhZ3MgaW4gLWN1cnZVIC1jdXJ2IGN1cnYgLWNydiBjcnYgLWNxdiBjcXYgLXJ2IHJ2Ci0rCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgotIAlkbwotIAotIAkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9maXgtY2ZsYWdzLW1hbmdsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL2ZpeC1jZmxhZ3MtbWFuZ2xlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTQ0N2M1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL2ZpeC1jZmxhZ3MtbWFuZ2xlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotY29uZmlndXJlIGhhcyBhIHBpZWNlIG9mIGxvZ2ljIHRvIGRldGVjdCB1c2VycyAiYWJ1c2luZyIgQ0MgdG8gaG9sZCBjb21waWxlcgotZmxhZ3MgKHdoaWNoIHdlIGRvKS4gIEl0IGFsc28gaGFzIGxvZ2ljIHRvICJjb3JyZWN0IiB0aGlzIGJ5IG1vdmluZyB0aGUgZmxhZ3MKLWZyb20gQ0MgdG8gQ0ZMQUdTLCBidXQgdGhlIHNlZCBvbmx5IGhhbmRsZXMgYSBzaW5nbGUgYXJndW1lbnQgaW4gQ0MuCi0KLVJlcGxhY2UgdGhlIHNlZCB3aXRoIGF3ayB0byBmaWx0ZXIgb3V0IGFsbCB3b3JkcyB0aGF0IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggN2YzMTIwOC4uMWEyOWNmYyAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMjE5MSwyICsyMTkxLDIgQEAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0MKLS0JY2ZfZmxhZ3M9YGVjaG8gIiRDQyIgfCBzZWQgLWUgJ3MvXi4qWyAJXVwoLVteIAldXCkvXDEvJ2AKLS0JQ0M9YGVjaG8gIiRDQyAiIHwgc2VkIC1lICdzL1sgCV0tW14gCV0uKiQvLycgLWUgJ3MvWyAJXSokLy8nYAotKwljZl9mbGFncz1gZWNobyAiJENDIiB8IGF3ayAgJ0JFR0lOe09SUz0iICI7UlM9IiAifSAvXi0uKy8ge3ByaW50ICQxfSdgCi0rCUNDPWBlY2hvICIkQ0MgIiB8IGF3ayAgJ0JFR0lOe09SUz0iICI7UlM9IiAifSAvXlteLV0uKy8ge3ByaW50ICQxfSdgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy90aWMtaGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL3RpYy1oYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmE4OWQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL3RpYy1oYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0ndGljJyBvZiBzb21lIGxpbnV4IGRpc3RyaWJ1dGlvbnMgKGUuZy4gZmVkb3JhIDExKSBoYW5nIGluIGFuIGluZmluaXRlCi1sb29wIHdoZW4gcHJvY2Vzc2luZyB0aGUgb3JpZ2luYWwgZmlsZS4KLQotSW5kZXg6IG5jdXJzZXMtNS43L21pc2MvdGVybWluZm8uc3JjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmN1cnNlcy01Ljcub3JpZy9taXNjL3Rlcm1pbmZvLnNyYwotKysrIG5jdXJzZXMtNS43L21pc2MvdGVybWluZm8uc3JjCi1AQCAtMzcwNiwxMiArMzcwNiwxMSBAQCBrb25zb2xlLXhmM3h8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ci0gIyBUaGUgdmFsdWUgZm9yIGticyByZWZsZWN0cyBsb2NhbCBjdXN0b21pemF0aW9uIHJhdGhlciB0aGFuIHRoZSBzZXR0aW5ncyB1c2VkCi0gIyBmb3IgWEZyZWU4NiB4dGVybS4KLSBrb25zb2xlLXhmNHh8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgNC54IHh0ZXJtLAotLQlrZW5kPVxFT0YsIGtob21lPVxFT0gsIHVzZT1rb25zb2xlK3BjZmtleXMsCi0tCXVzZT1rb25zb2xlLXZ0MTAwLAotLSMgS29uc29sZSBkb2VzIG5vdCBpbXBsZW1lbnQgc2hpZnRlZCBjdXJzb3Ita2V5cy4KLS1rb25zb2xlK3BjZmtleXN8a29uc29sZSBzdWJzZXQgb2YgeHRlcm0rcGNma2V5cywKLS0Ja0xGVEAsIGtSSVRALCBrY2J0PVxFW1osIGtpbmRALCBrcmlALCBrRE5ALCBrVVBALCB1c2U9eHRlcm0rcGNjMiwKLS0JdXNlPXh0ZXJtK3BjZjAsCi0rCWtlbmQ9XEVPRiwga2YxPVxFT1AsIGtmMTM9XEVPMlAsIGtmMTQ9XEVPMlEsIGtmMTU9XEVPMlIsCi0rCWtmMTY9XEVPMlMsIGtmMTc9XEVbMTU7Mn4sIGtmMTg9XEVbMTc7Mn4sIGtmMTk9XEVbMTg7Mn4sCi0rCWtmMj1cRU9RLCBrZjIwPVxFWzE5OzJ+LCBrZjIxPVxFWzIwOzJ+LCBrZjIyPVxFWzIxOzJ+LAotKwlrZjIzPVxFWzIzOzJ+LCBrZjI0PVxFWzI0OzJ+LCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0rCWtob21lPVxFT0gsIHVzZT1rb25zb2xlLXZ0MTAwLAotICMgS0RFJ3MgInZ0MTAwIiBrZXlib2FyZCBoYXMgbm8gcmVsYXRpb25zaGlwIHRvIGFueSB0ZXJtaW5hbCB0aGF0IERFQyBtYWRlLCBidXQKLSAjIGl0IGlzIHN0aWxsIHVzZWZ1bCBmb3IgZGVyaXZpbmcgdGhlIG90aGVyIGVudHJpZXMuCi0ga29uc29sZS12dDEwMHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCB2dDEwMCAoc2ljKSBrZXlib2FyZCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTYxMTI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjExMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTMxMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjExMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIG5jdXJzZXMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly90aWMtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LWNmbGFncy1tYW5nbGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCi0iCi0jIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCi1TUkNSRVYgPSAiM2RiMGJkMTljYjUwZTNkOWI0ZjJjZjE1YjdhMTAyZmUxMTMwMjA2OCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MDcxNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZGE1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MDcxNS5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIG5jdXJzZXMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggXAorIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gIjUyNjgxYTZhMWExOGI0ZDZlYjFhNzE2NTEyZDBkZDgyN2JkNzFjODciCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi1zaGVsbC1pbWFnZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYtc2hlbGwtaW1hZ2UuYmIKaW5kZXggMDI5NTQ3Yi4uMGQyYjhiZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi1zaGVsbC1pbWFnZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLXNoZWxsLWltYWdlLmJiCkBAIC0xLDEwICsxLDEzIEBACiBERVNDUklQVElPTiA9ICJib290IGltYWdlIHdpdGggVUVGSSBzaGVsbCBhbmQgdG9vbHMiCiAKICMgRm9yIHRoaXMgaW1hZ2UgcmVjaXBlLCBvbmx5IHRoZSB3aWMgZm9ybWF0IHdpdGggYQotIyBzaW5nbGUgdmZhdCBwYXJ0aXRpb24gbWFrZXMgc2Vuc2UuCisjIHNpbmdsZSB2ZmF0IHBhcnRpdGlvbiBtYWtlcyBzZW5zZS4gQmVjYXVzZSB3ZSBoYXZlIG5vCisjIGJvb3QgbG9hZGVyIGFuZCBubyByb290ZnMgcGFydGl0aW9uLCBub3QgYWRkaXRpb25hbAorIyB0b29scyBhcmUgbmVlZGVkIGZvciB0aGlzIC53a3MgZmlsZS4KIElNQUdFX0ZTVFlQRVNfZm9yY2V2YXJpYWJsZSA9ICd3aWMnCi0KIFdLU19GSUxFID0gIm92bWYvb3ZtZi1zaGVsbC1pbWFnZS53a3MiCitXS1NfRklMRV9ERVBFTkRTID0gIiIKKwogaW5oZXJpdCBpbWFnZQogCiAjIFdlIHdhbnQgYSBtaW5pbWFsIGltYWdlIHdpdGgganVzdCBvdm1mLXNoZWxsLWVmaSB1bnBhY2tlZCBpbiBpdC4gV2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1NZGVNb2R1bGVQa2ctVWVmaUhpaUxpYi1GaXgtaW5jb3JyZWN0LWNvbXBhcmlzb24tZXhwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLU1kZU1vZHVsZVBrZy1VZWZpSGlpTGliLUZpeC1pbmNvcnJlY3QtY29tcGFyaXNvbi1leHAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZDdhNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLU1kZU1vZHVsZVBrZy1VZWZpSGlpTGliLUZpeC1pbmNvcnJlY3QtY29tcGFyaXNvbi1leHAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDczNjkyNzEwZDUwZGExZjQyMWIwZTZkZGZmNzg0Y2EzMTM1Mzg5YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5kYW4gQmkgPGRhbmRhbi5iaUBpbnRlbC5jb20+Ci1EYXRlOiBTYXQsIDEgQXByIDIwMTcgMTA6MzE6MTQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWRlTW9kdWxlUGtnL1VlZmlIaWlMaWI6Rml4IGluY29ycmVjdCBjb21wYXJpc29uIGV4cHJlc3Npb24KLQotRml4IHRoZSBpbmNvcnJlY3QgY29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXIgYW5kIGNvbnN0YW50IHplcm8gY2hhcmFjdGVyLgotCi1odHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTQxNgotCi1WMjogVGhlIHBvaW50ZXIgU3RyaW5nUHRyIHBvaW50cyB0byBhIHN0cmluZyByZXR1cm5lZAotYnkgRXh0cmFjdENvbmZpZy9FeHBvcnRDb25maWcsIGlmIGl0IGlzIE5VTEwsIGZ1bmN0aW9uCi1JbnRlcm5hbEhpaUlmclZhbHVlQWN0aW9uIHdpbGwgcmV0dXJuIEZBTFNFLiBTbyBpbgotY3VycmVudCB1c2FnZSBtb2RlbCwgdGhlIFN0cmluZ1B0ciBjYW4gbm90IGJlIE5VTEwgYmVmb3JlCi11c2luZyBpdCwgc28gd2UgY2FuIGFkZCBBU1NFUlQgaGVyZS4KLQotQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4KLUNjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4KLUNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjAKLVNpZ25lZC1vZmYtYnk6IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4KLVJldmlld2VkLWJ5OiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpTGliLmMgfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpSGlpTGliL0hpaUxpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaUxpYi9IaWlMaWIuYwotKysrIGdpdC9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpSGlpTGliL0hpaUxpYi5jCi1AQCAtMjE4MCw2ICsyMTgwLDggQEAgSW50ZXJuYWxIaWlJZnJWYWx1ZUFjdGlvbiAoCi0gICB9DQotICAgDQotICAgU3RyaW5nUHRyID0gQ29uZmlnQWx0UmVzcDsNCi0rCi0rICBBU1NFUlQgKFN0cmluZ1B0ciAhPSBOVUxMKTsNCi0gICANCi0gICB3aGlsZSAoU3RyaW5nUHRyICE9IEwnXDAnKSB7DQotICAgICAvLw0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1pYTMyLURvbnQtdXNlLXBpZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1pYTMyLURvbnQtdXNlLXBpZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmI0MThiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gZjY1ZTljYzAyNTI3ODM4N2I0OTRjMjM4M2M1ZDlmZjNiZWQ5ODY4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDExIEp1biAyMDE3IDAwOjQ3OjI0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGlhMzI6IERvbnQgdXNlIC1waWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBCYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorKysrIGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK0BAIC00MzM2LDcgKzQzMzYsNyBAQCBSRUxFQVNFXypfKl9PQkpDT1BZX0FERERFQlVHRkxBRyAgID0KKyBOT09QVF8qXypfT0JKQ09QWV9BRERERUJVR0ZMQUcgICAgID0gLS1hZGQtZ251LWRlYnVnbGluaz0kKERFQlVHX0RJUikvJChNT0RVTEVfTkFNRSkuZGVidWcNCisgDQorIERFRklORSBHQ0NfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtT3MgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24NCistREVGSU5FIEdDQ19JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0NfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYWxpZ24tZG91YmxlIC1mcmVvcmRlci1ibG9ja3MgLWZyZW9yZGVyLWJsb2Nrcy1hbmQtcGFydGl0aW9uIC1PMiAtbW5vLXN0YWNrLWFyZy1wcm9iZQ0KKytERUZJTkUgR0NDX0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tMzIgLW1hbGlnbi1kb3VibGUgLWZyZW9yZGVyLWJsb2NrcyAtZnJlb3JkZXItYmxvY2tzLWFuZC1wYXJ0aXRpb24gLU8yIC1tbm8tc3RhY2stYXJnLXByb2JlIC1mbm8tUElFIC1uby1waWUNCisgREVGSU5FIEdDQ19YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0NfQUxMX0NDX0ZMQUdTKSAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbW5vLXN0YWNrLWFyZy1wcm9iZQ0KKyBERUZJTkUgR0NDX0lQRl9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1taW5saW5lLWludC1kaXZpZGUtbWluLWxhdGVuY3kNCisgREVGSU5FIEdDQ19BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0NfQUxMX0NDX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4gLW1hYmk9YWFwY3MgLWZuby1zaG9ydC1lbnVtcyAtZnVuc2lnbmVkLWNoYXIgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVduby1hZGRyZXNzIC1tdGh1bWIgLW1mbG9hdC1hYmk9c29mdCAtZm5vLXBpYyAtZm5vLXBpZQ0KK0BAIC00MzY5LDkgKzQzNjksOSBAQCBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkKKyBERUZJTkUgR0NDX0FBUkNINjRfUkNfRkxBR1MgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LWxpdHRsZWFhcmNoNjQgLUIgYWFyY2g2NCAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgDQorIERFRklORSBHQ0M0NF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KKy1ERUZJTkUgR0NDNDRfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMNCisrREVGSU5FIEdDQzQ0X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tUElFIC1uby1waWUNCisgREVGSU5FIEdDQzQ0X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW02NCAtZm5vLXN0YWNrLXByb3RlY3RvciAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMNCistREVGSU5FIEdDQzQ0X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KKytERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwIC1uby1waWUNCisgREVGSU5FIEdDQzQ0X0lBMzJfWDY0X0FTTERMSU5LX0ZMQUdTID0gREVGKEdDQzQ0X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksUmVmZXJlbmNlQWNwaVRhYmxlIC11IFJlZmVyZW5jZUFjcGlUYWJsZQ0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfRkxBR1MgICAgPSBERUYoR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSwkKElNQUdFX0VOVFJZX1BPSU5UKSAtdSAkKElNQUdFX0VOVFJZX1BPSU5UKSAtV2wsLU1hcCwkKERFU1RfRElSX0RFQlVHKS8kKEJBU0VfTkFNRSkubWFwDQorIERFRklORSBHQ0M0NF9JQTMyX0RMSU5LMl9GTEFHUyAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjAgREVGKEdDQ19ETElOSzJfRkxBR1NfQ09NTU9OKQ0KK0BAIC00NDUxLDcgKzQ0NTEsNyBAQCBERUZJTkUgR0NDNDhfQUFSQ0g2NF9BU0xETElOS19GTEFHUyAgPSBECisgDQorIERFRklORSBHQ0M0OV9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0OF9JQTMyX0NDX0ZMQUdTKQ0KKyBERUZJTkUgR0NDNDlfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfWDY0X0NDX0ZMQUdTKQ0KKy1ERUZJTkUgR0NDNDlfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDQwDQorK0RFRklORSBHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4NDAgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDlfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDlfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQorIERFRklORSBHQ0M0OV9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXANCisgREVGSU5FIEdDQzQ5X0lBMzJfRExJTksyX0ZMQUdTICAgICAgID0gREVGKEdDQzQ4X0lBMzJfRExJTksyX0ZMQUdTKQ0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCmluZGV4IDk0MDI5YTUuLjk0YWU1ZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApAQCAtMTAsNiArMTAsNyBAQAogd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gYmVmb3JlIGJ1aWxkaW5nLgogCiBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIE92bWZQa2cvYnVpbGQuc2ggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaAppbmRleCAwZmRjMjc4Li42NWI1YzE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKQEAgLTcsMzMgKzcsMzMgQEAKIHVzaW5nIHRoZSBiaXRiYWtlIG5hdGl2ZSBzeXNyb290IGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMuCiAKIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgfCA4ICsrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlIGIvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLWluZGV4IDgyMWQxMTQuLmZlMGYwOGIgMTAwNjQ0Ci0tLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLUBAIC00NCwxNCArNDQsMTQgQEAgQVJDSF9JTkNMVURFID0gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9BQXJjaDY0LworSW5kZXg6IGdpdC9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCisrKysgZ2l0L0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCitAQCAtNDQsMTUgKzQ0LDE1IEBAIEFSQ0hfSU5DTFVERSA9IC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvQUEKICBlbmRpZg0KICANCiAgSU5DTFVERSA9ICQoVE9PTF9JTkNMVURFKSAtSSAkKE1BS0VST09UKSAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0NvbW1vbiAtSSAkKE1BS0VST09UKS9JbmNsdWRlLyAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQgLUkgJChNQUtFUk9PVCkvQ29tbW9uLyAtSSAuLiAtSSAuICQoQVJDSF9JTkNMVURFKSANCiAtQlVJTERfQ1BQRkxBR1MgPSAkKElOQ0xVREUpIC1PMg0KLStCVUlMRF9DUFBGTEFHUyA6PSAkKEJVSUxEX0NQUEZMQUdTKSAkKElOQ0xVREUpIC1PMg0KKytCVUlMRF9DUFBGTEFHUyArPSAkKElOQ0xVREUpIC1PMg0KICBpZmVxICgkKERBUldJTiksRGFyd2luKQ0KICAjIGFzc3VtZSBjbGFuZyBvciBjbGFuZyBjb21wYXRpYmxlIGZsYWdzIG9uIE9TIFgNCiAtQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KLStCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpIC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXNlbGYtYXNzaWduIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWMgLWcNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXNlbGYtYXNzaWduIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWMgLWcNCiAgZWxzZQ0KIC1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KLStCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpIC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQorK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KICBlbmRpZg0KIC1CVUlMRF9MRkxBR1MgPQ0KLStCVUlMRF9MRkxBR1MgOj0gJChMREZMQUdTKQ0KLSBCVUlMRF9DWFhGTEFHUyA9DQorLUJVSUxEX0NYWEZMQUdTID0gLVduby11bnVzZWQtcmVzdWx0DQorK0JVSUxEX0xGTEFHUyA9ICQoTERGTEFHUykNCisrQlVJTERfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtcmVzdWx0DQogIA0KICBpZmVxICgkKEFSQ0gpLCBJQTMyKQ0KLS0tIAotMi45LjMKLQorICMNCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1NGZiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApAQCAtMCwwICsxLDE4IEBACitGcm9tIDAzMmZjNmIxZjc2OTFiZDUzN2ZkMmE2YmQxMzgyMWZjZjNjNDVlNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMSBTZXAgMjAxNyAwMjoyMTo1NSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBvdm1mOiBlbmFibGUgbG9uZyBwYXRoIGZpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitpbmRleCAyMDQxYjg5ZTJkLi44MTE2YWEyZTM1IDEwMDY0NAorLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAorKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAorQEAgLTIyICsyMiBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELgorLSNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDUwMA0KKysjZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCAxMDIzDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OWIxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorQXV0aG9yOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KK0Rlc2NyaXB0aW9uOiBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIHRvIGFsbCBHQ0MgdG9vbGNoYWlucworIFRoZSB1cHN0cmVhbSBidWlsZCBydWxlcyBpbmV4cGxpY2FibHkgcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciBvbmx5Cisgd2hlbiBidWlsZGluZyBmb3IgaTM4NiBhbmQgYW1kNjQuICBBZGQgdGhpcyBlc3NlbnRpYWwgYXJndW1lbnQgdG8gdGhlCisgZ2VuZXJpYyBydWxlcyBmb3IgZ2NjIDQuNCBhbmQgbGF0ZXIuCitMYXN0LVVwZGF0ZWQ6IDIwMTYtMDQtMTIKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworSW5kZXg6IGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKKysrKyBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCitAQCAtNDM2OCw3ICs0MzY4LDcgQEAgREVGSU5FIEdDQ19JUEZfUkNfRkxBR1MgICAgICAgICAgICA9IC1JCisgREVGSU5FIEdDQ19BUk1fUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGYzMi1saXR0bGVhcm0gICAgIC1CIGFybSAgICAgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIERFRklORSBHQ0NfQUFSQ0g2NF9SQ19GTEFHUyAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJjaDY0IC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KKyANCistREVGSU5FIEdDQzQ0X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorK0RFRklORSBHQ0M0NF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWZuby1zdGFjay1wcm90ZWN0b3IgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KKyBERUZJTkUgR0NDNDRfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1QSUUgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDRfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgppbmRleCA5ZDk4OGU5Li5mYTBkNjYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgpAQCAtMSw1ICsxLDcgQEAKLURFU0NSSVBUSU9OID0gIk9WTUYgLSBVRUZJIGZpcm13YXJlIGZvciBRZW11IGFuZCBLVk0iCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L2FwcHMvbWVkaWF3aWtpL3RpYW5vY29yZS9pbmRleC5waHA/dGl0bGU9T1ZNRiIKK1NVTU1BUlkgPSAiT1ZNRiAtIFVFRkkgZmlybXdhcmUgZm9yIFFlbXUgYW5kIEtWTSIKK0RFU0NSSVBUSU9OID0gIk9WTUYgaXMgYW4gRURLIElJIGJhc2VkIHByb2plY3QgdG8gZW5hYmxlIFVFRkkgc3VwcG9ydCBmb3IgXAorVmlydHVhbCBNYWNoaW5lcy4gT1ZNRiBjb250YWlucyBzYW1wbGUgVUVGSSBmaXJtd2FyZSBmb3IgUUVNVSBhbmQgS1ZNIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS90aWFub2NvcmUuZ2l0aHViLmlvL3dpa2kvT1ZNRiIKIExJQ0VOU0UgPSAiQlNEIgogTElDRU5TRV9jbGFzcy10YXJnZXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VjdXJlYm9vdCcsICdCU0QgJiBPcGVuU1NMJywgJ0JTRCcsIGQpfSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL092bWZQa2cvTGljZW5zZS50eHQ7bWQ1PTM0M2RjODhlODJmZjMzZDA0MjA3NGY2MjA1MGMzNDk2IgpAQCAtMTEsMjAgKzEzLDI1IEBACiBQQUNLQUdFQ09ORklHW3NlY3VyZWJvb3RdID0gIiwsLCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLmdpdDticmFuY2g9bWFzdGVyIFwKKwlmaWxlOi8vMDAwMS1pYTMyLURvbnQtdXNlLXBpZS5wYXRjaCBcCiAJZmlsZTovLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIFwKIAlmaWxlOi8vMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggXAorCWZpbGU6Ly8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIFwKIAlmaWxlOi8vVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLU1kZU1vZHVsZVBrZy1VZWZpSGlpTGliLUZpeC1pbmNvcnJlY3QtY29tcGFyaXNvbi1leHAucGF0Y2ggXAorCWZpbGU6Ly9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIFwKICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCisKK09QRU5TU0xfUkVMRUFTRSA9ICJvcGVuc3NsLTEuMS4wZSIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0JJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VjdXJlYm9vdCcsICdodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMC4yai50YXIuZ3o7bmFtZT1vcGVuc3NsO3N1YmRpcj0ke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWInLCAnJywgZCl9IFwKKwkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWN1cmVib290JywgJ2h0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlLyR7T1BFTlNTTF9SRUxFQVNFfS50YXIuZ3o7bmFtZT1vcGVuc3NsO3N1YmRpcj0ke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWInLCAnJywgZCl9IFwKIAlmaWxlOi8vMDAwNy1Pdm1mUGtnLUVucm9sbERlZmF1bHRLZXlzLWFwcGxpY2F0aW9uLWZvci1lbnJvbGxpbmctLnBhdGNoIFwKICIKIAotU1JDUkVWPSI0NTc1YTYwMmNhNjA3MmVlOWQwNDE1MGIzOGJmYjE0M2NiZmY4NTg4IgotU1JDX1VSSVtvcGVuc3NsLm1kNXN1bV0gPSAiOTYzMjIxMzhmMGI2OWU2MWI3MjEyYmM1M2Q1ZTkxMmIiCi1TUkNfVVJJW29wZW5zc2wuc2hhMjU2c3VtXSA9ICJlN2FmZjI5MmJlMjFjMjU5YzZhZjI2NDY5YzdhOWIzYmEyNmU5YWJhYWZmZDMyNWUzZGNjYzk3ODUyNTZjNDMxIgorU1JDUkVWPSJlYzQ5MTBjZDMzMzY1NjVmZGI2MWRhZmRkOWVjNGFlN2E2MTYwYmEzIgorU1JDX1VSSVtvcGVuc3NsLm1kNXN1bV0gPSAiNTFjNDJkMTUyMTIyZTQ3NDc1NGFlYTk2ZjY2OTI4YzYiCitTUkNfVVJJW29wZW5zc2wuc2hhMjU2c3VtXSA9ICI1N2JlODYxODk3OWQ4MGM5MTA3MjhjZmM5OTM2OWJmOTdiMmExYWJkOGYzNjZhYjZlYmRlZTg5NzVhZDM4NzRjIgogCiBpbmhlcml0IGRlcGxveQogCkBAIC0xNDQsNyArMTUxLDcgQEAKIAogZG9fY29tcGlsZV9jbGFzcy10YXJnZXQoKSB7CiAgICAgZXhwb3J0IExGTEFHUz0iJHtMREZMQUdTfSIKLSAgICBQQVJBTExFTF9KT0JTPSIke0AgJyR7UEFSQUxMRUxfTUFLRX0nLnJlcGxhY2UoJy1qJywgJy1uJyl9IgorICAgIFBBUkFMTEVMX0pPQlM9IiR7QCAnJHtQQVJBTExFTF9NQUtFfScucmVwbGFjZSgnLWonLCAnLW4gJyl9IgogICAgIE9WTUZfQVJDSD0iWDY0IgogICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdIDsgdGhlbgogICAgICAgICBPVk1GX0FSQ0g9IklBMzIiCkBAIC0xODYsMTAgKzE5Myw3IEBACiAgICAgICAgICMgYnVpbGRpbmcgd2l0aCBTZWN1cmUgQm9vdCBlbmFibGVkLgogICAgICAgICBiYm5vdGUgIkJ1aWxkaW5nIHdpdGggU2VjdXJlIEJvb3QuIgogICAgICAgICBybSAtcmYgJHtTfS9CdWlsZC9Pdm1mJE9WTUZfRElSX1NVRkZJWAotICAgICAgICBpZiAhIFsgLWYgJHtTfS9DcnlwdG9Qa2cvTGlicmFyeS9PcGVuc3NsTGliL29wZW5zc2wtKi9lZGsyLXBhdGNoLWFwcGxpZWQgXTsgdGhlbgotICAgICAgICAgICAgKCBjZCAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvb3BlbnNzbC0qICYmIHBhdGNoIC1wMSA8JChlY2hvIC4uL0VES0lJX29wZW5zc2wtKi5wYXRjaCkgJiYgdG91Y2ggZWRrMi1wYXRjaC1hcHBsaWVkICkKLSAgICAgICAgZmkKLSAgICAgICAgKCBjZCAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvICYmIC4vSW5zdGFsbC5zaCApCisgICAgICAgIGxuIC1zZiAke09QRU5TU0xfUkVMRUFTRX0gJHtTfS9DcnlwdG9Qa2cvTGlicmFyeS9PcGVuc3NsTGliL29wZW5zc2wKICAgICAgICAgJHtTfS9Pdm1mUGtnL2J1aWxkLnNoICRQQVJBTExFTF9KT0JTIC1hICRPVk1GX0FSQ0ggLWIgUkVMRUFTRSAtdCAke0ZJWEVEX0dDQ1ZFUn0gJHtPVk1GX1NFQ1VSRV9CT09UX0ZMQUdTfQogICAgICAgICBsbiAke2J1aWxkX2Rpcn0vRlYvT1ZNRi5mZCAke1dPUktESVJ9L292bWYvb3ZtZi5zZWNib290LmZkCiAgICAgICAgIGxuICR7YnVpbGRfZGlyfS9GVi9PVk1GX0NPREUuZmQgJHtXT1JLRElSfS9vdm1mL292bWYuc2VjYm9vdC5jb2RlLmZkCkBAIC0yNDEsMyArMjQ1LDQgQEAKIGFkZHRhc2sgZG9fZGVwbG95IGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX2J1aWxkCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCmluZGV4IDJjYTYzOTIuLmFlZTRhMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgpAQCAtNCw3ICs0LDYgQEAKIAogU1VNTUFSWSA9ICJIb3N0IHBhY2thZ2VzIGZvciB0aGUgc3RhbmRhbG9uZSBTREsgb3IgZXh0ZXJuYWwgdG9vbGNoYWluIgogUFIgPSAicjEyIgotTElDRU5TRSA9ICJNSVQiCiAKIGluaGVyaXQgcGFja2FnZWdyb3VwIG5hdGl2ZXNkawogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiCmluZGV4IDAwNjllM2UuLmY5ZTZlMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiCkBAIC0yMDQsNyArMjA0LDcgQEAKIFNVTU1BUllfcGFja2FnZWdyb3VwLWJhc2UtYmx1ZXRvb3RoID0gIkJsdWV0b290aCBzdXBwb3J0IgogUkRFUEVORFNfcGFja2FnZWdyb3VwLWJhc2UtYmx1ZXRvb3RoID0gIlwKICAgICAke0JMVUVafSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0NPTUJJTkVEX0ZFQVRVUkVTJywgJ2Fsc2EnLCAnbGliYXNvdW5kLW1vZHVsZS1ibHVleicsICcnLGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0NPTUJJTkVEX0ZFQVRVUkVTJywgJ2Fsc2EnLCBiYi51dGlscy5jb250YWlucygnQkxVRVonLCAnYmx1ZXo0JywgJ2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXonLCAnJywgZCksICcnLGQpfSBcCiAgICAgIgogCiBSUkVDT01NRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS1ibHVldG9vdGggPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCmluZGV4IDdkNmQ0MTQuLmFmMGNlMjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKQEAgLTMzLDcgKzMzLDYgQEAKIFNBTklUSVpFUlNfcG93ZXJwYzY0ID0gIiIKIFNBTklUSVpFUlNfc3BhcmMgPSAiIgogU0FOSVRJWkVSU19saWJjLW11c2wgPSAiIgotU0FOSVRJWkVSU19saWJjLXVjbGliYyA9ICIiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1jb3JlLXNkayA9ICJcCiAgICAgbGliZ29tcCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgppbmRleCA5NDZjOTQ3Li5hOGU0N2RhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKQEAgLTMxLDIzICszMSwxNSBAQAogUEVSRiA9ICJwZXJmIgogUEVSRl9saWJjLW11c2wgPSAiIgogCi0jIHN5c3RlbXRhcCBuZWVkcyBlbGZ1dGlscyB3aGljaCBpcyBub3QgZnVsbHkgYnVpbGRhYmxlIG9uIHVjbGliYwotIyBoZW5jZSB3ZSBleGNsdWRlIGl0IGZyb20gdWNsaWJjIGJhc2VkIGJ1aWxkcworIyBzeXN0ZW10YXAgbmVlZHMgZWxmdXRpbHMgd2hpY2ggaXMgbm90IGZ1bGx5IGJ1aWxkYWJsZSBvbiBzb21lIGFyY2hlcy9saWJjcwogU1lTVEVNVEFQID0gInN5c3RlbXRhcCIKLVNZU1RFTVRBUF9saWJjLXVjbGliYyA9ICIiCiBTWVNURU1UQVBfbGliYy1tdXNsID0gIiIKIFNZU1RFTVRBUF9taXBzYXJjaCA9ICIiCiBTWVNURU1UQVBfbmlvczIgPSAiIgogU1lTVEVNVEFQX2FhcmNoNjQgPSAiIgogCi0jIGx0dG5nLXVzdCB1c2VzIHNjaGVkX2dldGNwdSgpIHdoaWNoIGlzIG5vdCB0aGVyZSBvbiB1Y2xpYmMKLSMgZm9yIHNvbWUgb2YgdGhlIGFyY2hpdGVjdHVyZXMgaXQgY2FuIGJlIHBhdGNoZWQgdG8gY2FsbCB0aGUKLSMgc3lzY2FsbCBkaXJlY3RseSBidXQgZm9yIHg4Nl82NCBfX05SX2dldGNwdSBpcyBhIHZzeXNjYWxsCi0jIHdoaWNoIG1lYW5zIHdlIGNhbiBub3QgdXNlIHN5c2NhbGwoKSB0byBjYWxsIGl0LiBTbyB3ZSBpZ25vcmUKLSMgaXQgZm9yIHg4Nl82NC91Y2xpYmMKLQorIyBsdHRuZy11c3QgdXNlcyBzY2hlZF9nZXRjcHUoKSB3aGljaCBpcyBub3QgdGhlcmUgb24gZm9yIHNvbWUgcGxhdGZvcm1zLgogTFRUTkdVU1QgPSAibHR0bmctdXN0IgotTFRUTkdVU1RfbGliYy11Y2xpYmMgPSAiIgogTFRUTkdVU1RfbGliYy1tdXNsID0gIiIKIAogTFRUTkdUT09MUyA9ICJsdHRuZy10b29scyIKQEAgLTYwLDEzICs1MiwxMyBAQAogIyB2YWxncmluZCBkb2VzIG5vdCB3b3JrIG9uIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMvYXJjaGl0ZWN0dXJlcwogCiBWQUxHUklORCA9ICJ2YWxncmluZCIKLVZBTEdSSU5EX2xpYmMtdWNsaWJjID0gIiIKIFZBTEdSSU5EX2xpYmMtbXVzbCA9ICIiCiBWQUxHUklORF9taXBzYXJjaCA9ICIiCiBWQUxHUklORF9uaW9zMiA9ICIiCiBWQUxHUklORF9hcm12NCA9ICIiCiBWQUxHUklORF9hcm12NSA9ICIiCiBWQUxHUklORF9hcm12NiA9ICIiCitWQUxHUklORF9hcm1lYiA9ICIiCiBWQUxHUklORF9hYXJjaDY0ID0gIiIKIFZBTEdSSU5EX2xpbnV4LWdudXgzMiA9ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1jcm9zcy1jYW5hZGlhbi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1jcm9zcy1jYW5hZGlhbi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGFhY2UxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiSG9zdCBTREsgcGFja2FnZSBmb3IgR28gY3Jvc3MgY2FuYWRpYW4gdG9vbGNoYWluIgorUE4gPSAicGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCisKK2luaGVyaXQgY3Jvc3MtY2FuYWRpYW4gcGFja2FnZWdyb3VwCisKK1BBQ0tBR0VHUk9VUF9ESVNBQkxFX0NPTVBMRU1FTlRBUlkgPSAiMSIKKworR08gPSAiZ28tY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke0BhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ0dPJyl9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxOTA3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCkBAIC0wLDAgKzEsOCBAQAorU1VNTUFSWSA9ICJUYXJnZXQgcGFja2FnZXMgZm9yIHRoZSBHbyBTREsiCisKK2luaGVyaXQgcGFja2FnZWdyb3VwIGdvYXJjaAorCitSREVQRU5EU18ke1BOfSA9ICIgXAorICAgIGdvLXJ1bnRpbWUgXAorICAgIGdvLXJ1bnRpbWUtZGV2IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgppbmRleCBjMWJiZGZjLi5mZjQyODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCkBAIC00Miw3ICs0Miw2IEBACiAgICAgbWMtZmlzaCBcCiAgICAgbWMtaGVscGVycyBcCiAgICAgbWMtaGVscGVycy1wZXJsIFwKLSAgICBtYy1oZWxwZXJzLXB5dGhvbiBcCiAgICAgcGFydGVkIFwKICAgICAke1BTRVVET30gXAogICAgIHNjcmVlbiBcCkBAIC0xNDEsMTcgKzE0MCwxOSBAQAogICAgIG5mcy11dGlscyBcCiAgICAgbmZzLXV0aWxzLWNsaWVudCBcCiAgICAgb3BlbnNzbCBcCisgICAgb3BlbnNzaC1zY3AgXAogICAgIG9wZW5zc2gtc2Z0cC1zZXJ2ZXIgXAorICAgIG9wZW5zc2gtc3NoIFwKICAgICBvcGtnIFwKICAgICBvcGtnLXV0aWxzIFwKICAgICBwYXRjaCBcCiAgICAgcGVybCBcCiAgICAgcGVybC1kZXYgXAorICAgIHBlcmwtbWlzYyBcCiAgICAgcGVybC1tb2R1bGVzIFwKICAgICBwZXJsLXBvZCBcCiAgICAgcHl0aG9uIFwKICAgICBweXRob24tbW9kdWxlcyBcCi0gICAgcHl0aG9uLWdpdCBcCiAgICAgcHl0aG9uMyBcCiAgICAgcHl0aG9uMy1tb2R1bGVzIFwKICAgICBweXRob24zLWdpdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKaW5kZXggNjZjODVlOS4uMGJjZTFkZSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdApAQCAtNyw2ICs3LDEyIEBACiAjIERlZmF1bHQtU3RvcDoKICMjIyBFTkQgSU5JVCBJTkZPCiAKK2lmIFsgISAtZSAvZGV2L2ZiMCBdOyB0aGVuCisgICAgZWNobyAiRnJhbWVidWZmZXIgL2Rldi9mYjAgbm90IGRldGVjdGVkIgorICAgIGVjaG8gIkJvb3Qgc3BsYXNoc2NyZWVuIGRpc2FibGVkIgorICAgIGV4aXQgMDsKK2ZpCisKIHJlYWQgQ01ETElORSA8IC9wcm9jL2NtZGxpbmUKIGZvciB4IGluICRDTURMSU5FOyBkbwogICAgICAgICBjYXNlICR4IGluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCmluZGV4IDQ0Mjk3ZTEuLjNiN2Y4MTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCkBAIC01LDEzICs1LDE0IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BzcGxhc2guaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE2O21kNT04NDBmYjIzNTZiMTBhODViZWQ3OGRkMDlkYzc3NDVjNiIKIAotU1JDUkVWID0gIjg4MzQzYWQyM2M5MGZhMWRkOGQ3OWFjMGQ3ODRhNjkxYWEwYzZkMmIiCitTUkNSRVYgPSAiMjAxNWY3MDczZTk4ZGQ5NTYyZGIwOTM2YTI1NGFmNWVmNTYzNTZjZiIKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIFBSID0gInIxNSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0gXAogICAgICAgICAgICBmaWxlOi8vcHNwbGFzaC1pbml0IFwKICAgICAgICAgICAgJHtTUExBU0hfSU1BR0VTfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUExBU0hfSU1BR0VTID0gImZpbGU6Ly9wc3BsYXNoLXBva3ktaW1nLmg7b3V0c3VmZml4PWRlZmF1bHQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCmluZGV4IDFhMGExNTUuLmU5NjY1MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwpAQCAtNCw2ICs0LDcgQEAKIGFkZGl0aW9uYWwgZnVuY3Rpb25zIHRvIG1haW50YWluIGEgbGlzdCBvZiBwcmV2aW91c2x5LWVudGVyZWQgY29tbWFuZCBsaW5lcywgdG8gcmVjYWxsIGFuZCBwZXJoYXBzIHJlZWRpdCB0aG9zZSAgIFwKIGxpbmVzLCBhbmQgcGVyZm9ybSBjc2gtbGlrZSBoaXN0b3J5IGV4cGFuc2lvbiBvbiBwcmV2aW91cyBjb21tYW5kcy4iCiBTRUNUSU9OID0gImxpYnMiCitIT01FUEFHRSA9ICJodHRwczovL2Nuc3d3dy5jbnMuY3dydS5lZHUvcGhwL2NoZXQvcmVhZGxpbmUvcmx0b3AuaHRtbCIKIAogIyBHUEx2MisgKDwgNi4wKSwgR1BMdjMrICg+PSA2LjApCiBMSUNFTlNFID0gIkdQTHYzKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMThiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM0LmJiCkBAIC0wLDAgKzEsNDMgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgorCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGVwbG95CisKK0VGSV9DQyA/PSAiJHtDQ30iCisjIE1hbiBwYWdlcyBhcmUgcGFja2FnZWQgdGhyb3VnaCB0aGUgbWFpbiBzeXN0ZW1kIHJlY2lwZQorRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1nbnVlZmkgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKKyAgICAgICAgICAgICAgICAgRUZJX0NDPScke0VGSV9DQ30nIFwKKyAgICAgICAgICAgICAgICIKKworIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJb2VfcnVubWFrZSBzeXN0ZW1kLWJvb3Qke1NZU1RFTURfQk9PVF9FRklfQVJDSH0uZWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJIyBCeXBhc3Mgc3lzdGVtZCBpbnN0YWxsYXRpb24gd2l0aCBhIE5PUAorCToKK30KKworZG9fZGVwbG95ICgpIHsKKwlpbnN0YWxsICR7Qn0vc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgppbmRleCBmZTlhNTIxLi5kMjI4YTUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAiRW5oYW5jZXMgc3lzdGVtZCBjb21wYXRpbGliaXR5IHdpdGggZXhpc3RpbmcgU3lzVmluaXQgc2NyaXB0cyIKLQorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kIgogTElDRU5TRSA9ICJNSVQiCiAKIFBSID0gInIyOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmUtdW5pdHNfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNzU2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmUtdW5pdHNfMS4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiTWFjaGluZSBzcGVjaWZpYyBzeXN0ZW1kIHVuaXRzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitQUiA9ICJyMTkiCisKK2luaGVyaXQgc3lzdGVtZAorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCmluZGV4IDc2OGIxMzAuLmQ5MzQ3MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU2VyaWFsIHRlcm1pbmFsIHN1cHBvcnQgZm9yIHN5c3RlbWQiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kLyIKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYiCiAKQEAgLTM4LDggKzM5LDYgQEAKIAlmaQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJzeXN0ZW1kIgotCiAjIFRoaXMgaXMgYSBtYWNoaW5lIHNwZWNpZmljIGZpbGUKIEZJTEVTXyR7UE59ID0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlICR7c3lzY29uZmRpcn0iCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpAQCAtNDksMyArNDgsNSBAQAogICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQogfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCmluZGV4IGVmYWQxNGMuLjZlNWExYjcgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKQEAgLTEwOCw3ICsxMDgsNyBAQAogCiAJIyBJZiBhbnkgbmV3IHVuaXQgdHlwZXMgYXJlIGFkZGVkIHRvIHN5c3RlbWQgdGhleSBzaG91bGQgYmUgYWRkZWQKIAkjIHRvIHRoaXMgcmVndWxhciBleHByZXNzaW9uLgotCXVuaXRfdHlwZXNfcmU9J1wuXChzZXJ2aWNlXHxzb2NrZXRcfGRldmljZVx8bW91bnRcfGF1dG9tb3VudFx8c3dhcFx8dGFyZ2V0XHxwYXRoXHx0aW1lclx8c25hcHNob3RcKVxzKiQnCisJdW5pdF90eXBlc19yZT0nXC5cKHNlcnZpY2VcfHNvY2tldFx8ZGV2aWNlXHxtb3VudFx8YXV0b21vdW50XHxzd2FwXHx0YXJnZXRcfHRhcmdldFwud2FudHNcfHBhdGhcfHRpbWVyXHxzbmFwc2hvdFwpXHMqJCcKIAlpZiBbICIkYWN0aW9uIiA9ICJwcmVzZXQiIF07IHRoZW4KIAkJYWN0aW9uPWBlZ3JlcCAtc2ggICRzZXJ2aWNlICRST09UL2V0Yy9zeXN0ZW1kL3VzZXItcHJlc2V0LyoucHJlc2V0IHwgY3V0IC1mMSAtZCcgJ2AKIAkJaWYgWyAteiAiJGFjdGlvbiIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwppbmRleCAyOWUwYmU2Li5kOTlkMTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwpAQCAtMTQsMTAgKzE0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gImExZTJlZjdlYzkxMjkwMmQ4MTQyZTdjYjU4MzBjYmZiNDdkYmE4NmMiCitTUkNSRVYgPSAiYzFlZGFiN2FkMWU3Y2NjOWJlNjkzYmVkZmQ0NjRjZDFjYmZmYjM5NSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC5naXQ7cHJvdG9jb2w9Z2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxydCAtbHNzcF9ub25zaGFyZWQgLWxzc3AgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTU5OWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAzY2E1MzI2NDg1Y2IxOWU3NzVhZjZkZTYxNWMxN2JlNjZlNDRlNDcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgT2N0IDIwMTcgMjM6MDg6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIF9QQVRIX1dUTVBYIGFuZCBfUEFUSF9VVE1QWCBpZiBub3QgZGVmaW5lZAorCitNdXNsIG5lZWRzIHRoZXNlIGRlZmluZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvc2hhcmVkL3V0bXAtd3RtcC5jIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMgYi9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCitpbmRleCA5NzUwZGNkODEuLmJkNTVkNzRhMSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKKysrKyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDx1dG1wLmg+CisgI2luY2x1ZGUgPHV0bXB4Lmg+CisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKK0BAIC00MSw2ICs0MiwxMyBAQAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInV0bXAtd3RtcC5oIgorIAorKyNpZiBkZWZpbmVkIF9QQVRIX1VUTVAgJiYgIWRlZmluZWQgX1BBVEhfVVRNUFgKKysjIGRlZmluZSBfUEFUSF9VVE1QWCBfUEFUSF9VVE1QCisrI2VuZGlmCisrI2lmIGRlZmluZWQgX1BBVEhfV1RNUCAmJiAhZGVmaW5lZCBfUEFUSF9XVE1QWAorKyMgZGVmaW5lIF9QQVRIX1dUTVBYIF9QQVRIX1dUTVAKKysjZW5kaWYKKysKKyBpbnQgdXRtcF9nZXRfcnVubGV2ZWwoaW50ICpydW5sZXZlbCwgaW50ICpwcmV2aW91cykgeworICAgICAgICAgc3RydWN0IHV0bXB4ICpmb3VuZCwgbG9va3VwID0geyAudXRfdHlwZSA9IFJVTl9MVkwgfTsKKyAgICAgICAgIGludCByOworLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc5ZGM3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSBiMmQ0MTcxYzZlNTIxY2YxZTcwMzMxZmI3NjkyMzRkNjNhNGE2ZDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMTM6MDA6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CisKK1BSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCit0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KK3VpbnRtYXhfdC4KKworRml4ZXMgcG9ydGFibGlsaXR5IGVycm9ycyBsaWtlCisKK2V4ZWN1dGUuYzozNDQ2OjM2OiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAncmxpbV90IHtha2EgbG9uZyBsb25nIHVuc2lnbmVkIGludH0nIFstV2Vycm9yPWZvcm1hdD1dCit8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzcxOTldCisKKyBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8IDggLS0tLS0tLS0KKyBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDggKysrKy0tLS0KKyBzcmMvY29yZS9leGVjdXRlLmMgICAgICB8IDggKysrKy0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitpbmRleCBhZTQyYThmODkuLjE0NDI0OWNkNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAorQEAgLTYwLDE0ICs2MCw2IEBACisgIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCisgI2VuZGlmCisgCistI2lmIFNJWkVPRl9STElNX1QgPT0gOAorLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTY0CistI2VsaWYgU0laRU9GX1JMSU1fVCA9PSA0CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1MzIKKy0jZWxzZQorLSMgIGVycm9yIFVua25vd24gcmxpbV90IHNpemUKKy0jZW5kaWYKKy0KKyAjaWYgU0laRU9GX0RFVl9UID09IDgKKyAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0CisgI2VsaWYgU0laRU9GX0RFVl9UID09IDQKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitpbmRleCBjYTgzNGRmNjIuLjQxZmNlYmI3NCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYworQEAgLTI4NCwxMyArMjg0LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CisgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCisgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6IiBSTElNX0ZNVCwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjppbmZpbml0eSIsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTppbmZpbml0eSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA9PSBybC0+cmxpbV9tYXgpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOiIgUkxJTV9GTVQsIHJsLT5ybGltX2N1ciwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgCisgICAgICAgICBpZiAoIXMpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggZDcyZTViZjA4Li5kMzg5NDYwMDIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTM0NDMsMTAgKzM0NDMsMTAgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisgCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCisgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICVqdVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICBpZiAoYy0+aW9wcmlvX3NldCkgeworLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZjc0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MzMgQEAKK0Zyb20gMDkzM2NhNjI1MTgwOGY4NTZiOTJiMGNlOGRhODY5NmQ1ZmViYzMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0MTozOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDAxLzEyXSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICAgNCArCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKKyBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCisgc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQorIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNjkyZDdiYjk1Li4zY2M4ZjM0NTEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC05OTcsNiArOTk3LDEwIEBAIGxpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCisgCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmggXAorIAlzcmMvYmFzaWMvam91cm5hbC1pbXBvcnRlci5jCisgCisraWYgIUhBVkVfUFJJTlRGX0gKKytsaWJiYXNpY19sYV9TT1VSQ0VTICs9IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKKytlbmRpZgorKworIG5vZGlzdF9saWJiYXNpY19sYV9TT1VSQ0VTID0gXAorIAlzcmMvYmFzaWMvZXJybm8tZnJvbS1uYW1lLmggXAorIAlzcmMvYmFzaWMvZXJybm8tdG8tbmFtZS5oIFwKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDYwZTdkZjVlZS4uZWZjZGM2YzE2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMDgsOCArMzA4LDEwIEBAIEFDX0NIRUNLX0hFQURFUlMoW3VjaGFyLmhdLCBbXSwgW10pCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2NhcGFiaWxpdHkuaF0sIFtdLCBbQUNfTVNHX0VSUk9SKFsqKiogUE9TSVggY2FwcyBoZWFkZXJzIG5vdCBmb3VuZF0pXSkKKyBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQorIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCisrQUNfQ0hFQ0tfSEVBREVSUyhbcHJpbnRmLmhdLCBbXSwgW10pCisgQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvdm1fc29ja2V0cy5oXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dKQorIAorK0FNX0NPTkRJVElPTkFMKEhBVkVfUFJJTlRGX0gsIFt0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wcmludGZfaCIgPSB4eWVzXSkKKyAjIHVuY29uZGl0aW9uYWxseSBwdWxsLWluIGxpYnJ0IHdpdGggb2xkIGdsaWJjIHZlcnNpb25zCisgQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbXSwgW10pCisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDM3MTE3N2IwCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCitAQCAtMCwwICsxLDU3IEBACisrLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLworKworKy8qKioKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCisrCisrICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKysKKysgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQorKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjcHJhZ21hIG9uY2UKKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2lmZGVmIEhBVkVfUFJJTlRGX0gKKysjaW5jbHVkZSA8cHJpbnRmLmg+CisrI2Vsc2UKKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KKysgIFBBX0lOVCwJCQkvKiBpbnQgKi8KKysgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KKysgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLworKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCisrICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCisrICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLworKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KKysgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KKysgIFBBX0xBU1QKKyt9OworKworKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCisrI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAorKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKKysjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKKysjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQorKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQorKworK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOworKworKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK2luZGV4IGJkMTE0NGI0Yy4uYzljOTVlYjU0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorQEAgLTE5LDEyICsxOSwxMiBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorLSNpbmNsdWRlIDxwcmludGYuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpbmNsdWRlICJtYWNyby5oIgorKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisgCisgI2RlZmluZSB4c3ByaW50ZihidWYsIGZtdCwgLi4uKSBcCisgICAgICAgICBhc3NlcnRfbWVzc2FnZV9zZSgoc2l6ZV90KSBzbnByaW50ZihidWYsIEVMRU1FTlRTT0YoYnVmKSwgZm10LCBfX1ZBX0FSR1NfXykgPCBFTEVNRU5UU09GKGJ1ZiksICJ4c3ByaW50ZjogIiAjYnVmICJbXSBtdXN0IGJlIGJpZyBlbm91Z2giKQorZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK2luZGV4IDQ0MGZiYTY3Yy4uMDIzNmM0M2M0IDEwMDY0NAorLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKKysrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitAQCAtMTksNyArMTksNiBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxwcmludGYuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CitAQCAtMzgsNiArMzcsNyBAQAorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQorIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAppbmRleCBlZTJjZDZjLi43ZjFiYzQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYTU0NGQ2ZDE1ZjVjNDE4MDg0ZjMyMjM0OWFhZmUzNDExMjhkNWZjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjFiNWE2ZjcxN2JkYTZmODBhNmI1ZTNlNGQ1MGI0NTBmNmNjN2IwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDE0IERlYyAyMDE1IDA0OjA5OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTldIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8xNF0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MAogIHNlYy4KIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQEAgLTExLDIzICsxMSwyNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9jb3JlL2RldmljZS5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGV2aWNlLmMgYi9zcmMvY29yZS9kZXZpY2UuYwotaW5kZXggYzU3MmE2Ny4uZjkwNzc0ZSAxMDA2NDQKK2luZGV4IDc3NjAxYzU1Mi4uOThiZjQ5YmEyIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZGV2aWNlLmMKICsrKyBiL3NyYy9jb3JlL2RldmljZS5jCiBAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9pbml0KFVuaXQgKnUpIHsKICAgICAgICAgICAqIGluZGVmaW5pdGVseSBmb3IgcGx1Z2dlZCBpbiBkZXZpY2VzLCBzb21ldGhpbmcgd2hpY2ggY2Fubm90CiAgICAgICAgICAgKiBoYXBwZW4gZm9yIHRoZSBvdGhlciB1bml0cyBzaW5jZSB0aGVpciBvcGVyYXRpb25zIHRpbWUgb3V0CiAgICAgICAgICAgKiBhbnl3YXkuICovCi0tICAgICAgICB1LT5qb2JfdGltZW91dCA9IHUtPm1hbmFnZXItPmRlZmF1bHRfdGltZW91dF9zdGFydF91c2VjOwotKyAgICAgICAgdS0+am9iX3RpbWVvdXQgPSAoMjQwICogVVNFQ19QRVJfU0VDKTsKKy0gICAgICAgIHUtPmpvYl9ydW5uaW5nX3RpbWVvdXQgPSB1LT5tYW5hZ2VyLT5kZWZhdWx0X3RpbWVvdXRfc3RhcnRfdXNlYzsKKysgICAgICAgIHUtPmpvYl9ydW5uaW5nX3RpbWVvdXQgPSAoMjQwICogVVNFQ19QRVJfU0VDKTsKICAKICAgICAgICAgIHUtPmlnbm9yZV9vbl9pc29sYXRlID0gdHJ1ZTsKICB9CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxMDBlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gMjhkZDY2ZWNmY2U3NDNiMWVhOTA0NmM3YmI1MDFlMGZjYWVmZjcyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEx1Y2EgQnJ1bm8gPGx1Y2EuYnJ1bm9AY29yZW9zLmNvbT4KK0RhdGU6IFN1biwgNiBBdWcgMjAxNyAxMzoyNDoyNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb3JlOiBldmFsdWF0ZSBwcmVzZXRzIGFmdGVyIGdlbmVyYXRvcnMgaGF2ZSBydW4gKCM2NTI2KQorCitUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgZmlyc3QtYm9vdCBzeXN0ZW0gcHJlc2V0LXNldHRpbmdzIGV2YWx1YXRpb24gb3V0CitvZiBtYWluIGFuZCBpbnRvIHRoZSBtYW5hZ2VyIHN0YXJ0dXAgbG9naWMgaXRzZWxmLiBOb3RhYmx5LCBpdCByZXZlcnNlcwordGhlIG9yZGVyIGJldHdlZW4gZ2VuZXJhdG9ycyBhbmQgcHJlc2V0cyBldmFsdWF0aW9uLCBzbyB0aGF0IGFueSBjaGFuZ2VzCitwZXJmb3JtZWQgYnkgZmlyc3QtYm9vdCBnZW5lcmF0b3JzIGFyZSB0YWtlbiBpbnRvIHRoZSBhY2NvdW50IGJ5IHByZXNldHMKK2xvZ2ljLgorCitBZnRlciB0aGlzIGNoYW5nZSwgdW5pdHMgY3JlYXRlZCBieSBhIGdlbmVyYXRvciBjYW4gYmUgZW5hYmxlZCBhcyBwYXJ0CitvZiBhIHByZXNldC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jb3JlL21haW4uYyAgICB8IDEyICsrLS0tLS0tLS0tLQorIHNyYy9jb3JlL21hbmFnZXIuYyB8ICA4ICsrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYworaW5kZXggZGZlZGMzZC4uMTFhYzljZiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL21haW4uYworKysrIGIvc3JjL2NvcmUvbWFpbi5jCitAQCAtMTgwOSwxOCArMTgwOSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtKSB7CisrICAgICAgICBpZiAoYXJnX3N5c3RlbSkKKysgICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLworICAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKGVtcHR5X2V0YykgeworLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1bml0X2ZpbGVfcHJlc2V0X2FsbChVTklUX0ZJTEVfU1lTVEVNLCAwLCBOVUxMLCBVTklUX0ZJTEVfUFJFU0VUX0VOQUJMRV9PTkxZLCBOVUxMLCAwKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhyID09IC1FRVhJU1QgPyBMT0dfTk9USUNFIDogTE9HX1dBUk5JTkcsIHIsICJGYWlsZWQgdG8gcG9wdWxhdGUgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLCBpZ25vcmluZzogJW0iKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbygiUG9wdWxhdGVkIC9ldGMgd2l0aCBwcmVzZXQgdW5pdCBzZXR0aW5ncy4iKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgfQorLQorICAgICAgICAgciA9IG1hbmFnZXJfbmV3KGFyZ19zeXN0ZW0gPyBVTklUX0ZJTEVfU1lTVEVNIDogVU5JVF9GSUxFX1VTRVIsIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QsICZtKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWFuYWdlciBvYmplY3Q6ICVtIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFuYWdlci5jIGIvc3JjL2NvcmUvbWFuYWdlci5jCitpbmRleCAxYWFkYjcwLi5mYjVlMmI1IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbWFuYWdlci5jCisrKysgYi9zcmMvY29yZS9tYW5hZ2VyLmMKK0BAIC0xMzI4LDYgKzEzMjgsMTQgQEAgaW50IG1hbmFnZXJfc3RhcnR1cChNYW5hZ2VyICptLCBGSUxFICpzZXJpYWxpemF0aW9uLCBGRFNldCAqZmRzKSB7CisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorKyAgICAgICAgaWYgKG0tPmZpcnN0X2Jvb3QgJiYgbS0+dW5pdF9maWxlX3Njb3BlID09IFVOSVRfRklMRV9TWVNURU0pIHsKKysgICAgICAgICAgICAgICAgcSA9IHVuaXRfZmlsZV9wcmVzZXRfYWxsKFVOSVRfRklMRV9TWVNURU0sIDAsIE5VTEwsIFVOSVRfRklMRV9QUkVTRVRfRU5BQkxFX09OTFksIE5VTEwsIDApOworKyAgICAgICAgICAgICAgICBpZiAocSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Z1bGxfZXJybm8ocSA9PSAtRUVYSVNUID8gTE9HX05PVElDRSA6IExPR19XQVJOSU5HLCBxLCAiRmFpbGVkIHRvIHBvcHVsYXRlIC9ldGMgd2l0aCBwcmVzZXQgdW5pdCBzZXR0aW5ncywgaWdub3Jpbmc6ICVtIik7CisrICAgICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbygiUG9wdWxhdGVkIC9ldGMgd2l0aCBwcmVzZXQgdW5pdCBzZXR0aW5ncy4iKTsKKysgICAgICAgIH0KKysKKyAgICAgICAgIGxvb2t1cF9wYXRoc19yZWR1Y2UoJm0tPmxvb2t1cF9wYXRocyk7CisgICAgICAgICBtYW5hZ2VyX2J1aWxkX3VuaXRfcGF0aF9jYWNoZShtKTsKKyAKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWxvYWQtZnJhZ21lbnQtcmVmdXNlLXVuaXRzLXdpdGgtZXJyb3JzLWluLWNlcnRhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtbG9hZC1mcmFnbWVudC1yZWZ1c2UtdW5pdHMtd2l0aC1lcnJvcnMtaW4tY2VydGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTQ4YjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtbG9hZC1mcmFnbWVudC1yZWZ1c2UtdW5pdHMtd2l0aC1lcnJvcnMtaW4tY2VydGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotSWYgYSB1c2VyIGlzIGNyZWF0ZWQgd2l0aCBhIHN0cmljdGx5LXNwZWFraW5nIGludmFsaWQgbmFtZSBzdWNoIGFzICcwZGF5JyBhbmQgYQotdW5pdCBjcmVhdGVkIHRvIHJ1biBhcyB0aGF0IHVzZXIsIHN5c3RlbWQgcmVqZWN0cyB0aGUgdXNlcm5hbWUgYW5kIHJ1bnMgdGhlIHVuaXQKLWFzIHJvb3QuCi0KLUNWRTogQ1ZFLTIwMTctMTAwMDA4MgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBkOGUxMzEwZTFlZDdiNmYxMjJiYzdlYjhiYTA2MWZiZDA4ODc4M2MwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1piaWduaWV3PTIwSj1DND05OWRyemVqZXdza2ktU3ptZWs/PSA8emJ5c3pla0Bpbi53YXcucGw+Ci1EYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTM6Mjg6MTkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZS9sb2FkLWZyYWdtZW50OiByZWZ1c2UgdW5pdHMgd2l0aCBlcnJvcnMgaW4gY2VydGFpbgotIGRpcmVjdGl2ZXMKLQotSWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgaW4gYW55IG9mIHRoZSBFeGVjKiBsaW5lcywgV29ya2luZ0RpcmVjdG9yeSwKLVNFTGludXhDb250ZXh0LCBBcHBhcm1vclByb2ZpbGUsIFNtYWNrUHJvY2Vzc0xhYmVsLCBTZXJ2aWNlIChpbiAuc29ja2V0Ci11bml0cyksIFVzZXIsIG9yIEdyb3VwLCByZWZ1c2UgdG8gbG9hZCB0aGUgdW5pdC4gSWYgdGhlIGNvbmZpZyBzdGFuemEKLWhhcyBzdXBwb3J0LCBpZ25vcmUgdGhlIGZhaWx1cmUgaWYgJy0nIGlzIHByZXNlbnQuCi0KLUZvciB0aG9zZSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMsIGV2ZW4gaWYgd2Ugc3RhcnRlZCB0aGUgdW5pdCwgaXQncwotcHJldHR5IGxpa2VseSB0aGF0IGl0J2xsIGRvIHNvbWV0aGluZyB1bmV4cGVjdGVkIChsaWtlIHdyaXRlIGZpbGVzCi1pbiBhIHdyb25nIHBsYWNlLCBvciB3aXRoIGEgd3JvbmcgY29udGV4dCwgb3IgcnVuIHdpdGggd3JvbmcgcGVybWlzc2lvbnMsCi1ldGMpLiBJdCBzZWVtcyBiZXR0ZXIgdG8gcmVmdXNlIHRvIHN0YXJ0IHRoZSB1bml0IGFuZCBoYXZlIHRoZSBhZG1pbgotY2xlYW4gdXAgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBnaXZpbmcgdGhlIHNlcnZpY2UgYSBjaGFuY2UgdG8gbWVzcwotdXAgc3R1ZmYuCi0KLU5vdGUgdGhhdCBhbGwgInNlY3VyaXR5IiBvcHRpb25zIHRoYXQgcmVzdHJpY3Qgd2hhdCB0aGUgdW5pdCBjYW4gZG8KLShDYXBhYmlsaXRpZXMsIEFtYmllbnRDYXBhYmlsaXRpZXMsIFJlc3RyaWN0KiwgU3lzdGVtQ2FsbEZpbHRlciwgTGltaXQqLAotUHJpdmF0ZURldmljZXMsIFByb3RlY3QqLCBldGMpIGFyZSBfbm90XyB0cmVhdGVkIGxpa2UgdGhpcy4gU3VjaCBvcHRpb25zIGFyZQotb25seSBzdXBwbGVtZW50YXJ5LCBhbmQgYXJlIG5vdCBhbHdheXMgYXZhaWxhYmxlIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlCi1hbmQgY29tcGlsYXRpb24gb3B0aW9ucywgc28gdW5pdCBhdXRob3JzIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZpY2UKLXJ1bnMgY29ycmVjdGx5IHdpdGhvdXQgdGhlbSBhbnl3YXkuCi0KLUZpeGVzICM2MjM3LCAjNjI3Ny4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIHNyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYyAgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy90ZXN0L3Rlc3QtdW5pdC1maWxlLmMgfCAgMTQgKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29yZS9sb2FkLWZyYWdtZW50LmMgYi9zcmMvY29yZS9sb2FkLWZyYWdtZW50LmMKLWluZGV4IGNiYzgyNjgwOS4uMjA0Nzk3NGY0IDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbG9hZC1mcmFnbWVudC5jCi0rKysgYi9zcmMvY29yZS9sb2FkLWZyYWdtZW50LmMKLUBAIC02MzAsMjAgKzYzMCwyOCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWMoCi0gCi0gICAgICAgICAgICAgICAgIGlmIChpc2VtcHR5KGYpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLyogRmlyc3Qgd29yZCBpcyBlaXRoZXIgIi0iIG9yICJAIiB3aXRoIG5vIGNvbW1hbmQuICovCi0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkVtcHR5IHBhdGggaW4gY29tbWFuZCBsaW5lLCBpZ25vcmluZzogXCIlc1wiIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhdGggaW4gY29tbWFuZCBsaW5lJXM6IFwiJXNcIiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmICghc3RyaW5nX2lzX3NhZmUoZikpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRXhlY3V0YWJsZSBwYXRoIGNvbnRhaW5zIHNwZWNpYWwgY2hhcmFjdGVycywgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4ZWN1dGFibGUgcGF0aCBjb250YWlucyBzcGVjaWFsIGNoYXJhY3RlcnMlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBpZiAoIXBhdGhfaXNfYWJzb2x1dGUoZikpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRXhlY3V0YWJsZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSwgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4ZWN1dGFibGUgcGF0aCBpcyBub3QgYWJzb2x1dGUlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBpZiAoZW5kc3dpdGgoZiwgIi8iKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJFeGVjdXRhYmxlIHBhdGggc3BlY2lmaWVzIGEgZGlyZWN0b3J5LCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhlY3V0YWJsZSBwYXRoIHNwZWNpZmllcyBhIGRpcmVjdG9yeSVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIGlmIChmID09IGZpcnN0d29yZCkgewotQEAgLTY5OSw3ICs3MDcsNyBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghR1JFRURZX1JFQUxMT0MobiwgbmJ1ZnNpemUsIG5sZW4gKyAyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci1AQCAtNzA5LDggKzcxNywxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWMoCi0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFuWzBdKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkVtcHR5IGV4ZWN1dGFibGUgbmFtZSBvciB6ZXJvZXRoIGFyZ3VtZW50LCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgZXhlY3V0YWJsZSBuYW1lIG9yIHplcm9ldGggYXJndW1lbnQlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBuY2UgPSBuZXcwKEV4ZWNDb21tYW5kLCAxKTsKLUBAIC0xMzE1LDggKzEzMjUsMTAgQEAgaW50IGNvbmZpZ19wYXJzZV9leGVjX3NlbGludXhfY29udGV4dCgKLSAKLSAgICAgICAgIHIgPSB1bml0X25hbWVfcHJpbnRmKHUsIHJ2YWx1ZSwgJmspOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzLCBpZ25vcmluZzogJW0iKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMlczogJW0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGZyZWUoYy0+c2VsaW51eF9jb250ZXh0KTsKLUBAIC0xMzYzLDggKzEzNzUsMTAgQEAgaW50IGNvbmZpZ19wYXJzZV9leGVjX2FwcGFybW9yX3Byb2ZpbGUoCi0gCi0gICAgICAgICByID0gdW5pdF9uYW1lX3ByaW50Zih1LCBydmFsdWUsICZrKTsKLSAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycywgaWdub3Jpbmc6ICVtIik7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzJXM6ICVtIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBmcmVlKGMtPmFwcGFybW9yX3Byb2ZpbGUpOwotQEAgLTE0MTEsOCArMTQyNSwxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWNfc21hY2tfcHJvY2Vzc19sYWJlbCgKLSAKLSAgICAgICAgIHIgPSB1bml0X25hbWVfcHJpbnRmKHUsIHJ2YWx1ZSwgJmspOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzLCBpZ25vcmluZzogJW0iKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMlczogJW0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGZyZWUoYy0+c21hY2tfcHJvY2Vzc19sYWJlbCk7Ci1AQCAtMTYzMCwxOSArMTY0NiwxOSBAQCBpbnQgY29uZmlnX3BhcnNlX3NvY2tldF9zZXJ2aWNlKAotIAotICAgICAgICAgciA9IHVuaXRfbmFtZV9wcmludGYoVU5JVChzKSwgcnZhbHVlLCAmcCk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVyczogJXMiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAoIWVuZHN3aXRoKHAsICIuc2VydmljZSIpKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJVbml0IG11c3QgYmUgb2YgdHlwZSBzZXJ2aWNlLCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIlVuaXQgbXVzdCBiZSBvZiB0eXBlIHNlcnZpY2U6ICVzIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgciA9IG1hbmFnZXJfbG9hZF91bml0KFVOSVQocyktPm1hbmFnZXIsIHAsIE5VTEwsICZlcnJvciwgJngpOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gbG9hZCB1bml0ICVzLCBpZ25vcmluZzogJXMiLCBydmFsdWUsIGJ1c19lcnJvcl9tZXNzYWdlKCZlcnJvciwgcikpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byBsb2FkIHVuaXQgJXM6ICVzIiwgcnZhbHVlLCBidXNfZXJyb3JfbWVzc2FnZSgmZXJyb3IsIHIpKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgdW5pdF9yZWZfc2V0KCZzLT5zZXJ2aWNlLCB4KTsKLUBAIC0xODkzLDEzICsxOTA5LDEzIEBAIGludCBjb25maWdfcGFyc2VfdXNlcl9ncm91cCgKLSAKLSAgICAgICAgICAgICAgICAgciA9IHVuaXRfZnVsbF9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSB1bml0IHNwZWNpZmllcnMgaW4gJXMsIGlnbm9yaW5nOiAlbSIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiAlczogJW0iLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkX3VzZXJfZ3JvdXBfbmFtZV9vcl9pZChrKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJJbnZhbGlkIHVzZXIvZ3JvdXAgbmFtZSBvciBudW1lcmljIElELCBpZ25vcmluZzogJXMiLCBrKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiSW52YWxpZCB1c2VyL2dyb3VwIG5hbWUgb3IgbnVtZXJpYyBJRDogJXMiLCBrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgbiA9IGs7Ci1AQCAtMTk1NywxOSArMTk3MywxOSBAQCBpbnQgY29uZmlnX3BhcnNlX3VzZXJfZ3JvdXBfc3RydigKLSAgICAgICAgICAgICAgICAgaWYgKHIgPT0gLUVOT01FTSkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiSW52YWxpZCBzeW50YXgsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkludmFsaWQgc3ludGF4OiAlcyIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSB1bml0X2Z1bGxfcHJpbnRmKHUsIHdvcmQsICZrKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiAlcywgaWdub3Jpbmc6ICVtIiwgd29yZCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiAlczogJW0iLCB3b3JkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZF91c2VyX2dyb3VwX25hbWVfb3JfaWQoaykpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiSW52YWxpZCB1c2VyL2dyb3VwIG5hbWUgb3IgbnVtZXJpYyBJRCwgaWdub3Jpbmc6ICVzIiwgayk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkludmFsaWQgdXNlci9ncm91cCBuYW1lIG9yIG51bWVyaWMgSUQ6ICVzIiwgayk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBzdHJ2X3B1c2godXNlcnMsIGspOwotQEAgLTIxMjgsMjUgKzIxNDQsMjggQEAgaW50IGNvbmZpZ19wYXJzZV93b3JraW5nX2RpcmVjdG9yeSgKLSAKLSAgICAgICAgICAgICAgICAgciA9IHVuaXRfZnVsbF9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSB1bml0IHNwZWNpZmllcnMgaW4gd29ya2luZyBkaXJlY3RvcnkgcGF0aCAnJXMnLCBpZ25vcmluZzogJW0iLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluIHdvcmtpbmcgZGlyZWN0b3J5IHBhdGggJyVzJyVzOiAlbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydmFsdWUsIG1pc3Npbmdfb2sgPyAiLCBpZ25vcmluZyIgOiAiIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npbmdfb2sgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgcGF0aF9raWxsX3NsYXNoZXMoayk7Ci0gCi0gICAgICAgICAgICAgICAgIGlmICghdXRmOF9pc192YWxpZChrKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXhfaW52YWxpZF91dGY4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW5nX29rID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIGlmICghcGF0aF9pc19hYnNvbHV0ZShrKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJXb3JraW5nIGRpcmVjdG9yeSBwYXRoICclcycgaXMgbm90IGFic29sdXRlLCBpZ25vcmluZy4iLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29ya2luZyBkaXJlY3RvcnkgcGF0aCAnJXMnIGlzIG5vdCBhYnNvbHV0ZSVzLiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydmFsdWUsIG1pc3Npbmdfb2sgPyAiLCBpZ25vcmluZyIgOiAiIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npbmdfb2sgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAgICAgICAgZnJlZV9hbmRfcmVwbGFjZShjLT53b3JraW5nX2RpcmVjdG9yeSwgayk7Ci0tCi0gICAgICAgICAgICAgICAgIGMtPndvcmtpbmdfZGlyZWN0b3J5X2hvbWUgPSBmYWxzZTsKLSsgICAgICAgICAgICAgICAgZnJlZV9hbmRfcmVwbGFjZShjLT53b3JraW5nX2RpcmVjdG9yeSwgayk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBjLT53b3JraW5nX2RpcmVjdG9yeV9taXNzaW5nX29rID0gbWlzc2luZ19vazsKLUBAIC00MjI4LDggKzQyNDcsMTEgQEAgaW50IHVuaXRfbG9hZF9mcmFnbWVudChVbml0ICp1KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBsb2FkX2Zyb21fcGF0aCh1LCBrKTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotKyAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PRVhFQykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ191bml0X25vdGljZSh1LCAiVW5pdCBjb25maWd1cmF0aW9uIGhhcyBmYXRhbCBlcnJvciwgdW5pdCB3aWxsIG5vdCBiZSBzdGFydGVkLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwotKyAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIGlmICh1LT5sb2FkX3N0YXRlID09IFVOSVRfU1RVQikgewotICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9GT1JFQUNIKHQsIHUtPm5hbWVzLCBpKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYyBiL3NyYy90ZXN0L3Rlc3QtdW5pdC1maWxlLmMKLWluZGV4IDEyZjQ4YmY0My4uZmQ3OTdiNTg3IDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYwotQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgIi9SVmFsdWUvIGFyZ3YwIHIxIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYywgdSk7Ci0tICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FTk9FWEVDKTsKLSAgICAgICAgIGFzc2VydF9zZShjMS0+Y29tbWFuZF9uZXh0ID09IE5VTEwpOwotIAotICAgICAgICAgbG9nX2luZm8oIi8qIGhvbm91cl9hcmd2MCAqLyIpOwotQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDMsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgIkAvUlZhbHVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYywgdSk7Ci0tICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FTk9FWEVDKTsKLSAgICAgICAgIGFzc2VydF9zZShjMS0+Y29tbWFuZF9uZXh0ID09IE5VTEwpOwotIAotICAgICAgICAgbG9nX2luZm8oIi8qIG5vIGNvbW1hbmQsIHdoaXRlc3BhY2Ugb25seSwgcmVzZXQgKi8iKTsKLUBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9jb25maWdfcGFyc2VfZXhlYyh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1AL1JWYWx1ZSBhcmd2MCByMSA7IDsgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZ29vL2dvbyBib28iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID49IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYzEgPSBjMS0+Y29tbWFuZF9uZXh0OwotICAgICAgICAgY2hlY2tfZXhlY2NvbW1hbmQoYzEsICIvUlZhbHVlIiwgImFyZ3YwIiwgInIxIiwgTlVMTCwgdHJ1ZSk7Ci0gCi1AQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY29uZmlnX3BhcnNlX2V4ZWModm9pZCkgewotICAgICAgICAgICAgICAgICByID0gY29uZmlnX3BhcnNlX2V4ZWMoTlVMTCwgImZha2UiLCA0LCAic2VjdGlvbiIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7Ci0rICAgICAgICAgICAgICAgIGFzc2VydF9zZShyID09IC1FTk9FWEVDKTsKLSAgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gICAgICAgICB9Ci0gCi1AQCAtNDAxLDIxICs0MDEsMjEgQEAgc3RhdGljIHZvaWQgdGVzdF9jb25maWdfcGFyc2VfZXhlYyh2b2lkKSB7Ci0gICAgICAgICByID0gY29uZmlnX3BhcnNlX2V4ZWMoTlVMTCwgImZha2UiLCA0LCAic2VjdGlvbiIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxWYWx1ZSIsIDAsICIvcGF0aFxcIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYywgdSk7Ci0tICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FTk9FWEVDKTsKLSAgICAgICAgIGFzc2VydF9zZShjMS0+Y29tbWFuZF9uZXh0ID09IE5VTEwpOwotIAotICAgICAgICAgbG9nX2luZm8oIi8qIG1pc3NpbmcgZW5kaW5nICcgKi8iKTsKLSAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgIi9wYXRoICdmb28iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogbWlzc2luZyBlbmRpbmcgJyB3aXRoIHRyYWlsaW5nIGJhY2tzbGFzaCAqLyIpOwotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgNCwgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiL3BhdGggJ2Zvb1xcIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYywgdSk7Ci0tICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FTk9FWEVDKTsKLSAgICAgICAgIGFzc2VydF9zZShjMS0+Y29tbWFuZF9uZXh0ID09IE5VTEwpOwotIAotICAgICAgICAgbG9nX2luZm8oIi8qIGludmFsaWQgc3BhY2UgYmV0d2VlbiBtb2RpZmllcnMgKi8iKTsKLS0tIAotMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMzNiMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaApAQCAtMCwwICsxLDE2MyBAQAorRnJvbSBkZWEzNzRlODk4YTc0OWEwNDc0YjcyYjIwMTVjY2E5MDA5YjE0MzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVubmFydCBQb2V0dGVyaW5nIDxsZW5uYXJ0QHBvZXR0ZXJpbmcubmV0PgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAxMDozMTo0MCArMDIwMAorU3ViamVjdDogW1BBVENIXSBtYWluOiBza2lwIG1hbnkgaW5pdGlhbGl6YXRpb24gc3RlcHMgd2hlbiBydW5uaW5nIGluIC0tdGVzdAorIG1vZGUKKworTW9zdCBpbXBvcnRhbnRseSwgZG9uJ3QgY29sbGVjdCBvcGVuIHNvY2tldCBhY3RpdmF0aW9uIGZkcyB3aGVuIGluCistLXRlc3QgbW9kZS4gVGhpcyBzcGVjaWZpY2FsbHkgY3JlYXRlZCBhIHByb2JsZW0gYmVjYXVzZSB3ZSBpbnZva2UKK3BhZ2VyX29wZW4oKSBiZWZvcmVoYW5kICh3aGljaCB0aGVzZSBkYXlzIG1ha2VzIGNvcGllcyBvZiB0aGUgb3JpZ2luYWwKK3N0ZG91dC9zdGRlcnIgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZXN0b3JlIHRoZW0gd2hlbiB0aGUgcGFnZXIgZ29lcworYXdheSkgYW5kIHdlIG1pZ2h0IG1pc3Rha2VubHkgdGhlIGZkIGNvcGllcyBpdCBjcmVhdGVzIGFzIHNvY2tldAorYWN0aXZhdGlvbiBmZHMuCisKK0ZpeGVzOiAjNjM4MworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2NvcmUvbWFpbi5jIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCitpbmRleCAxMWFjOWNmLi5kMWE1M2E1IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbWFpbi5jCisrKysgYi9zcmMvY29yZS9tYWluLmMKK0BAIC0xNjc5LDIwICsxNjc5LDIyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgIGxvZ19jbG9zZSgpOworIAorICAgICAgICAgLyogUmVtZW1iZXIgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGZvciBsYXRlciBkZXNlcmlhbGl6YXRpb24gKi8KKy0gICAgICAgIHIgPSBmZHNldF9uZXdfZmlsbCgmZmRzKTsKKy0gICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0OiAlbSIpOworLSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQiOworLSAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgIH0gZWxzZQorLSAgICAgICAgICAgICAgICBmZHNldF9jbG9leGVjKGZkcywgdHJ1ZSk7CisrICAgICAgICBpZiAoYXJnX2FjdGlvbiA9PSBBQ1RJT05fUlVOKSB7CisrICAgICAgICAgICAgICAgIHIgPSBmZHNldF9uZXdfZmlsbCgmZmRzKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldDogJW0iKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQiOworKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmZHNldF9jbG9leGVjKGZkcywgdHJ1ZSk7CisgCistICAgICAgICBpZiAoYXJnX3NlcmlhbGl6YXRpb24pCistICAgICAgICAgICAgICAgIGFzc2VydF9zZShmZHNldF9yZW1vdmUoZmRzLCBmaWxlbm8oYXJnX3NlcmlhbGl6YXRpb24pKSA+PSAwKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zZXJpYWxpemF0aW9uKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zZShmZHNldF9yZW1vdmUoZmRzLCBmaWxlbm8oYXJnX3NlcmlhbGl6YXRpb24pKSA+PSAwKTsKKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtKQorLSAgICAgICAgICAgICAgICAvKiBCZWNvbWUgYSBzZXNzaW9uIGxlYWRlciBpZiB3ZSBhcmVuJ3Qgb25lIHlldC4gKi8KKy0gICAgICAgICAgICAgICAgc2V0c2lkKCk7CisrICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlY29tZSBhIHNlc3Npb24gbGVhZGVyIGlmIHdlIGFyZW4ndCBvbmUgeWV0LiAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHNpZCgpOworKyAgICAgICAgfQorIAorICAgICAgICAgLyogTW92ZSBvdXQgb2YgdGhlIHdheSwgc28gdGhhdCB3ZSB3b24ndCBibG9jayB1bm1vdW50cyAqLworICAgICAgICAgYXNzZXJ0X3NlKGNoZGlyKCIvIikgPT0gMCk7CitAQCAtMTc2Miw1NiArMTc2NCw1OCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfYWN0aW9uID09IEFDVElPTl9URVNUID8gIiB0ZXN0IiA6ICIiLCBnZXR1aWQoKSwgdCk7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiAhc2tpcF9zZXR1cCkgeworLSAgICAgICAgICAgICAgICBpZiAoYXJnX3Nob3dfc3RhdHVzID4gMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfd2VsY29tZSgpOworKyAgICAgICAgaWYgKGFyZ19hY3Rpb24gPT0gQUNUSU9OX1JVTikgeworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiAhc2tpcF9zZXR1cCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdfc2hvd19zdGF0dXMgPiAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3dlbGNvbWUoKTsKKyAKKy0gICAgICAgICAgICAgICAgaG9zdG5hbWVfc2V0dXAoKTsKKy0gICAgICAgICAgICAgICAgbWFjaGluZV9pZF9zZXR1cChOVUxMLCBhcmdfbWFjaGluZV9pZCwgTlVMTCk7CistICAgICAgICAgICAgICAgIGxvb3BiYWNrX3NldHVwKCk7CistICAgICAgICAgICAgICAgIGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbigpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lX3NldHVwKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZV9pZF9zZXR1cChOVUxMLCBhcmdfbWFjaGluZV9pZCwgTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2tfc2V0dXAoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBidW1wX3VuaXhfbWF4X2RncmFtX3FsZW4oKTsKKyAKKy0gICAgICAgICAgICAgICAgdGVzdF91c3IoKTsKKy0gICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3VzcigpOworKyAgICAgICAgICAgICAgICB9CisgCistICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiBhcmdfcnVudGltZV93YXRjaGRvZyA+IDAgJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgIT0gVVNFQ19JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgd2F0Y2hkb2dfc2V0X3RpbWVvdXQoJmFyZ19ydW50aW1lX3dhdGNoZG9nKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgPiAwICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nICE9IFVTRUNfSU5GSU5JVFkpCisrICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hkb2dfc2V0X3RpbWVvdXQoJmFyZ19ydW50aW1lX3dhdGNoZG9nKTsKKyAKKy0gICAgICAgIGlmIChhcmdfdGltZXJfc2xhY2tfbnNlYyAhPSBOU0VDX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX1RJTUVSU0xBQ0ssIGFyZ190aW1lcl9zbGFja19uc2VjKSA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIGFkanVzdCB0aW1lciBzbGFjazogJW0iKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ190aW1lcl9zbGFja19uc2VjICE9IE5TRUNfSU5GSU5JVFkpCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9USU1FUlNMQUNLLCBhcmdfdGltZXJfc2xhY2tfbnNlYykgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIGFkanVzdCB0aW1lciBzbGFjazogJW0iKTsKKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFjYXBfdGVzdF9hbGwoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KSkgeworLSAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcF91c2VybW9kZShhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpOworLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzOiAlbSIpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQgb2YgdXNlcm1vZGUgaGVscGVycyI7CistICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3AoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0LCB0cnVlKTsKKy0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQ6ICVtIik7CistICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCI7CistICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFjYXBfdGVzdF9hbGwoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wX3VzZXJtb2RlKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzOiAlbSIpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzIjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQsIHRydWUpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2VtZXJnZW5jeV9lcnJubyhyLCAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQ6ICVtIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgfQorIAorLSAgICAgICAgaWYgKGFyZ19zeXNjYWxsX2FyY2hzKSB7CistICAgICAgICAgICAgICAgIHIgPSBlbmZvcmNlX3N5c2NhbGxfYXJjaHMoYXJnX3N5c2NhbGxfYXJjaHMpOworLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBzZXQgc3lzY2FsbCBhcmNoaXRlY3R1cmVzIjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXNjYWxsX2FyY2hzKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVuZm9yY2Vfc3lzY2FsbF9hcmNocyhhcmdfc3lzY2FsbF9hcmNocyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBzZXQgc3lzY2FsbCBhcmNoaXRlY3R1cmVzIjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgfQorIAorLSAgICAgICAgaWYgKCFhcmdfc3lzdGVtKQorLSAgICAgICAgICAgICAgICAvKiBCZWNvbWUgcmVhcGVyIG9mIG91ciBjaGlsZHJlbiAqLworLSAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX0NISUxEX1NVQlJFQVBFUiwgMSkgPCAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7CisrICAgICAgICAgICAgICAgIGlmICghYXJnX3N5c3RlbSkKKysgICAgICAgICAgICAgICAgICAgICAgICAvKiBCZWNvbWUgcmVhcGVyIG9mIG91ciBjaGlsZHJlbiAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCistICAgICAgICAgICAgICAgIC8qIEJ1bXAgdXAgUkxJTUlUX05PRklMRSBmb3Igc3lzdGVtZCBpdHNlbGYgKi8KKy0gICAgICAgICAgICAgICAgKHZvaWQpIGJ1bXBfcmxpbWl0X25vZmlsZSgmc2F2ZWRfcmxpbWl0X25vZmlsZSk7CisrICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJ1bXAgdXAgUkxJTUlUX05PRklMRSBmb3Igc3lzdGVtZCBpdHNlbGYgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIHIgPSBtYW5hZ2VyX25ldyhhcmdfc3lzdGVtID8gVU5JVF9GSUxFX1NZU1RFTSA6IFVOSVRfRklMRV9VU0VSLCBhcmdfYWN0aW9uID09IEFDVElPTl9URVNULCAmbSk7CisgICAgICAgICBpZiAociA8IDApIHsKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRjMTM2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMTA0IEBACitGcm9tIDU4NWFiZDg5MWE1NjQwOTkxNTMxNDMwNDEwMWNhYzI2YjQyYzA3NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTA6NDU6NDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMl0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKKworaW5jbHVkZSBtaXNzaW5nLmggIGZvciBkZWZpbml0aW9uIG9mIHN0cm5kdXBhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgY29uZmlndXJlLmFjICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvbWlzc2luZy5oICAgIHwgMTEgKysrKysrKysrKysKKyBzcmMvYmFzaWMvbWtkaXIuYyAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgfCAgMSArCisgc3JjL3NoYXJlZC9wYWdlci5jICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL3VpZC1yYW5nZS5jIHwgIDEgKworIDYgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlZmNkYzZjMTYuLmNkMDM1YTk3MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzI5LDYgKzMyOSw3IEBAIEFDX0NIRUNLX0RFQ0xTKFsKKyAgICAgICAgIHBpdm90X3Jvb3QsCisgICAgICAgICBuYW1lX3RvX2hhbmRsZV9hdCwKKyAgICAgICAgIHNldG5zLAorKyAgICAgICAgc3RybmR1cGEsCisgICAgICAgICByZW5hbWVhdDIsCisgICAgICAgICBrY21wLAorICAgICAgICAga2V5Y3RsLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCAwNDkxMmJmNTIuLjgwMDk4ODhhZCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xMTA0LDYgKzExMDQsMTcgQEAgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKKyAjZGVmaW5lIEtFWUNUTF9ERVNDUklCRSA2CisgI2VuZGlmCisgCisrI2lmICFIQVZFX0RFQ0xfU1RSTkRVUEEKKysjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKKysgICh7IFwKKysgICAgY29uc3QgY2hhciAqX19vbGQgPSAocyk7IFwKKysgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbihfX29sZCwgKG4pKTsgXAorKyAgICBjaGFyICpfX25ldyA9IChjaGFyICopYWxsb2NhKF9fbGVuICsgMSk7IFwKKysgICAgX19uZXdbX19sZW5dID0gJ1wwJzsgXAorKyAgICAoY2hhciAqKW1lbWNweShfX25ldywgX19vbGQsIF9fbGVuKTsgXAorKyAgfSkKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtFWUNUTF9SRUFECisgI2RlZmluZSBLRVlDVExfUkVBRCAxMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ta2Rpci5jIGIvc3JjL2Jhc2ljL21rZGlyLmMKK2luZGV4IDZiMWE5ODQwMi4uZDEzODhkZjQ4IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21rZGlyLmMKKysrKyBiL3NyYy9iYXNpYy9ta2Rpci5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RhdC11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgaW50IG1rZGlyX3NhZmVfaW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBta2Rpcl9mdW5jX3QgX21rZGlyKSB7CisgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworaW5kZXggNDUzMmYyMjJjLi43YTMwYTBlMDYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCisgI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgaW50IHBhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqdikgeworICAgICAgICAgYXNzZXJ0KHYpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGFnZXIuYyBiL3NyYy9zaGFyZWQvcGFnZXIuYworaW5kZXggNGQ3YjAyYzYzLi44NTRlZmMwYzkgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKKysrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgcGlkX3QgcGFnZXJfcGlkID0gMDsKKyAKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYworaW5kZXggYjZlYzQ3NDM5Li45MWNlOWZiN2YgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCisrKysgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJ1aWQtcmFuZ2UuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgYm9vbCB1aWRfcmFuZ2VfaW50ZXJzZWN0KFVpZFJhbmdlICpyYW5nZSwgdWlkX3Qgc3RhcnQsIHVpZF90IG5yKSB7CisgICAgICAgICBhc3NlcnQocmFuZ2UpOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVuaXRzLVByZWZlci1nZXR0eS10by1hZ2V0dHktaW4tY29uc29sZS1zZXR1cC1zeXN0ZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUxYTI4ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gODczNmQ5YjliYjQ5MmY2MGU4ZjNhMWE3ZmI1YTA1YmEzMjAxZDg2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjI5OjE1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTldIHVuaXRzOiBQcmVmZXIgZ2V0dHkgdG8gYWdldHR5IGluIGNvbnNvbGUgc2V0dXAgc3lzdGVtZAotIHVuaXRzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbiBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdW5pdHMvZ2V0dHlALnNlcnZpY2UubTQgICAgICAgIHwgMiArLQotIHVuaXRzL3NlcmlhbC1nZXR0eUAuc2VydmljZS5tNCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VuaXRzL2dldHR5QC5zZXJ2aWNlLm00IGIvdW5pdHMvZ2V0dHlALnNlcnZpY2UubTQKLWluZGV4IDViODJjMTMuLmU3Mjk0NjkgMTAwNjQ0Ci0tLS0gYS91bml0cy9nZXR0eUAuc2VydmljZS5tNAotKysrIGIvdW5pdHMvZ2V0dHlALnNlcnZpY2UubTQKLUBAIC0zMyw3ICszMyw3IEBAIENvbmRpdGlvblBhdGhFeGlzdHM9L2Rldi90dHkwCi0gCi0gW1NlcnZpY2VdCi0gIyB0aGUgVlQgaXMgY2xlYXJlZCBieSBUVFlWVERpc2FsbG9jYXRlCi0tRXhlY1N0YXJ0PS0vc2Jpbi9hZ2V0dHkgLS1ub2NsZWFyICVJICRURVJNCi0rRXhlY1N0YXJ0PS0vc2Jpbi9nZXR0eSAtTCAlSSAkVEVSTQotIFR5cGU9aWRsZQotIFJlc3RhcnQ9YWx3YXlzCi0gUmVzdGFydFNlYz0wCi1kaWZmIC0tZ2l0IGEvdW5pdHMvc2VyaWFsLWdldHR5QC5zZXJ2aWNlLm00IGIvdW5pdHMvc2VyaWFsLWdldHR5QC5zZXJ2aWNlLm00Ci1pbmRleCA0NTIyZDBkLi5lNmQ0OTlkIDEwMDY0NAotLS0tIGEvdW5pdHMvc2VyaWFsLWdldHR5QC5zZXJ2aWNlLm00Ci0rKysgYi91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQKLUBAIC0yMiw3ICsyMiw3IEBAIEJlZm9yZT1nZXR0eS50YXJnZXQKLSBJZ25vcmVPbklzb2xhdGU9eWVzCi0gCi0gW1NlcnZpY2VdCi0tRXhlY1N0YXJ0PS0vc2Jpbi9hZ2V0dHkgLS1rZWVwLWJhdWQgMTE1MjAwLDM4NDAwLDk2MDAgJUkgJFRFUk0KLStFeGVjU3RhcnQ9LS9zYmluL2dldHR5IC1MIDExNTIwMCAlSSAkVEVSTQotIFR5cGU9aWRsZQotIFJlc3RhcnQ9YWx3YXlzCi0gVXRtcElkZW50aWZpZXI9JUkKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdjNmFjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZGVmaW5lLWV4cDEwLWlmLW1pc3NpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGIzODNjMjg2ZjU4MTg0NTc1MjE2YjJiZjZmMTg1YmEyYWQ2NDg5NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjI1OjQ1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTldIGRlZmluZSBleHAxMCBpZiBtaXNzaW5nCi0KLUluc3BpcmVkIGJ5OiBodHRwOi8vcGV0ZXIua29yc2dhYXJkLmNvbS9wYXRjaGVzL2Fsc2EtdXRpbHMvYWxzYW1peGVyLWZpeC1idWlsZC1vbi11Q2xpYmMtZXhwMTAucGF0Y2gKLQotZXhwMTAgZXh0ZW5zaW9uIGlzIG5vdCBwYXJ0IG9mIHVDbGliYywgc28gY29tcHV0ZSBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNhbXVlbCBNYXJ0aW4gPHMubWFydGluNDlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDRjMDEzYmUuLjRhM2ZkOWMgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTA3OCw0ICsxMDc4LDkgQEAgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKLSAKLSAjZW5kaWYKLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKy8qIDEwXnggPSAxMF4obG9nIGVeeCkgPSAoZV54KV5sb2cxMCA9IGVeKHggKiBsb2cgMTApICovCi0rI2RlZmluZSBleHAxMCh4KSAoZXhwKCh4KSAqIGxvZygxMCkpKQotKyNlbmRpZiAvKiBfX1VDTElCQ19fICovCi0rCi0gI2luY2x1ZGUgIm1pc3Npbmdfc3lzY2FsbC5oIgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTJkMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKQEAgLTAsMCArMSwxNTcgQEAKK0Zyb20gNWJiYmMyYTA4YTNiNDI4M2VjMDRhZjBlNzdlMjVmYjIwNWFhOGI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo1MDoxNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDAzLzEyXSBkb24ndCBmYWlsIGlmIEdMT0JfQlJBQ0UgYW5kIEdMT0JfQUxURElSRlVOQyBpcyBub3QKKyBkZWZpbmVkCisKK0lmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgcHJvdmlkZSBicmFjZQorZXhwYW5zaW9uIHVzZXJzIGp1c3Qgd29uJ3QgZ2V0IGl0LgorCitEb250IHVzZSBHTlUgR0xPQiBleHRlbnRpb25zIG9uIG5vbi1nbGliYyBzeXN0ZW1zCisKK0NvbmRpdGlvbmFsaXplIHVzZSBvZiBHTE9CX0FMVERJUkZVTkMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMjAgKysrKysrKysrKysrKysrKystLS0KKyBzcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIHwgMTcgKysrKysrKysrKysrKysrLS0KKyBzcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyAgIHwgIDggKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKK2luZGV4IGY2MTFjNDJlNC4uYWQ2ZTJiZThkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKK0BAIC0yNywxMyArMjcsMTggQEAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicGF0aC11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisgCisgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKKyAgICAgICAgIGludCBrOworIAorKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KKyAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7CistCisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9jbG9zZWRpcikKKyAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2Nsb3NlZGlyID0gKHZvaWQgKCopKHZvaWQgKikpIGNsb3NlZGlyOworICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfcmVhZGRpcikKK0BAIC00NCwxMCArNDksMTMgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKKyAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2xzdGF0ID0gbHN0YXQ7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9zdGF0KQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfc3RhdCA9IHN0YXQ7CistCisrI2VuZGlmCisgICAgICAgICBlcnJubyA9IDA7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MgfCBHTE9CX0FMVERJUkZVTkMsIE5VTEwsIHBnbG9iKTsKKy0KKysjZWxzZQorKyAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MsIE5VTEwsIHBnbG9iKTsKKysjZW5kaWYKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9NQVRDSCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgICAgICBpZiAoayA9PSBHTE9CX05PU1BBQ0UpCitAQCAtNjAsNiArNjgsMTIgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisrCisgaW50IGdsb2JfZXhpc3RzKGNvbnN0IGNoYXIgKnBhdGgpIHsKKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHt9OworICAgICAgICAgaW50IGs7CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKK2luZGV4IGFmODY2ZTAwNC4uM2FmYTA5YWRhIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworQEAgLTI5LDYgKzI5LDExIEBACisgI2luY2x1ZGUgImdsb2ItdXRpbC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJybS1yZi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKKyAgICAgICAgIGNoYXIgbmFtZVtdID0gIi90bXAvdGVzdC1nbG9iX2V4aXN0cy5YWFhYWFgiOworQEAgLTUxLDI1ICs1NiwzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKKyBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKKyAgICAgICAgIGNoYXIgdGVtcGxhdGVbXSA9ICIvdG1wL3Rlc3QtZ2xvYi11dGlsLlhYWFhYWFgiOworICAgICAgICAgY29uc3QgY2hhciAqZm47CistCisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXIsCisgICAgICAgICAgICAgICAgIC5nbF9yZWFkZGlyID0gKHN0cnVjdCBkaXJlbnQgKigqKSh2b2lkICopKSByZWFkZGlyX25vX2RvdCwKKyAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXIsCisgICAgICAgICAgICAgICAgIC5nbF9sc3RhdCA9IGxzdGF0LAorICAgICAgICAgICAgICAgICAuZ2xfc3RhdCA9IHN0YXQsCisrI2VuZGlmCisgICAgICAgICB9OworLQorICAgICAgICAgaW50IHI7CisgCisgICAgICAgICBhc3NlcnRfc2UobWtkdGVtcCh0ZW1wbGF0ZSkpOworIAorICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8uKiIpOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOworKyNlbHNlCisrICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOworKyNlbmRpZgorICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKKyAKKyAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKK2RpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitpbmRleCA5NDE5Yzk5ZTIuLjA3MDI3YTc2NSAxMDA2NDQKKy0tLSBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCisrKysgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworQEAgLTcxLDYgKzcxLDEyIEBACisgI2luY2x1ZGUgInVtYXNrLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisrCisgCisgLyogVGhpcyByZWFkcyBhbGwgZmlsZXMgbGlzdGVkIGluIC9ldGMvdG1wZmlsZXMuZC8/Ki5jb25mIGFuZCBjcmVhdGVzCisgICogdGhlbSBpbiB0aGUgZmlsZSBzeXN0ZW0uIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBjcmVhdGUKK0BAIC0xMDkyLDcgKzEwOTgsOSBAQCBzdGF0aWMgaW50IGl0ZW1fZG9fY2hpbGRyZW4oSXRlbSAqaSwgY29uc3QgY2hhciAqcGF0aCwgYWN0aW9uX3QgYWN0aW9uKSB7CisgCisgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uLCBib29sIHJlY3Vyc2l2ZSkgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0geworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXJfbm9tb2QsCisrI2VuZGlmCisgICAgICAgICB9OworICAgICAgICAgaW50IHIgPSAwLCBrOworICAgICAgICAgY2hhciAqKmZuOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjVhZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSBjODUwYjY1NGU3MTY3N2UwZDYyOTJmMTM0NTIwN2I5YjVhY2ZmYzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjMxOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTJdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKKyB0eXBlZGVmCisKK2luY2x1ZGUgbWlzc2luZy5oIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgNSArKysrKworIHNyYy9iYXNpYy9zdHJidWYuYyAgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDgwMDk4ODhhZC4uNjcxZjM0MWM2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTEwNjMsNiArMTA2MywxMSBAQCBzdHJ1Y3QgaW5wdXRfbWFzayB7CisgI2RlZmluZSBSRU5BTUVfTk9SRVBMQUNFICgxIDw8IDApCisgI2VuZGlmCisgCisrI2lmbmRlZiBfX0NPTVBBUl9GTl9UCisrI2RlZmluZSBfX0NPTVBBUl9GTl9UCisrdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CisrI2VuZGlmCisrCisgI2lmbmRlZiBLQ01QX0ZJTEUKKyAjZGVmaW5lIEtDTVBfRklMRSAwCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jIGIvc3JjL2Jhc2ljL3N0cmJ1Zi5jCitpbmRleCAwMGFhZjllNjIuLjlkYzRhNTg0YSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9zdHJidWYuYworKysrIGIvc3JjL2Jhc2ljL3N0cmJ1Zi5jCitAQCAtMjMsNiArMjMsNyBAQAorIAorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmJ1Zi5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgLyoKKyAgKiBTdHJidWYgc3RvcmVzIGdpdmVuIHN0cmluZ3MgaW4gYSBzaW5nbGUgY29udGludW91cyBhbGxvY2F0ZWQgbWVtb3J5CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4ODdlZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDIxMDgwYjZhNDBkMGE0ZGRkMmRiOGYwZmEzNzY4NmY2ZmE4ODVkMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTozODozMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDA2LzEyXSBJbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAorCitGaXhlcworL21udC9hL29lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLWJlYy1saW51eC1tdXNsL3N5c3RlbWQvMV8yMzQtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJworIHN0cnVjdCBldGhoZHIgeworICAgICAgICBefn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKKyBzcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyAgICB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK2luZGV4IDkyM2Y3ZGQxMC4uYjk1YjFlNGIyIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCitAQCAtMTksNiArMTksNyBAQAorIAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisgI2luY2x1ZGUgPGxpbnV4L2Nhbi9uZXRsaW5rLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitpbmRleCAzZDYyODA4ODQuLjQwZTU4YzM4ZiAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitAQCAtMTgsNiArMTgsNyBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9pZl90dW4uaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitpbmRleCBmYTVkM2VlN2YuLmUwODI4OTYyYSAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCisrKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYworQEAgLTE4LDYgKzE4LDcgQEAKKyAqKiovCisgCisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworaW5kZXggMjAxZmMyMzQzLi41ZjdjYzJhMGEgMTAwNjQ0CistLS0gYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKKysrKyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworQEAgLTE2LDcgKzE2LDcgQEAKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworLQorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK2luZGV4IDhlNDc3NzUxMy4uZDAxZmZmMmE0IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCitAQCAtMTYsNyArMTYsNyBAQAorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCistCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJsaW5rLWNvbmZpZy5oIgorICNpbmNsdWRlICJsb2cuaCIKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1jb25maWd1cmUtQ2hlY2stZm9yLWFkZGl0aW9uYWwtZmVhdHVyZXMtdGhhdC11Y2xpYmMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LWNvbmZpZ3VyZS1DaGVjay1mb3ItYWRkaXRpb25hbC1mZWF0dXJlcy10aGF0LXVjbGliYy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYTBkM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LWNvbmZpZ3VyZS1DaGVjay1mb3ItYWRkaXRpb25hbC1mZWF0dXJlcy10aGF0LXVjbGliYy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDgyZDgzN2I3NjYxOGE3NzM0ODViOTZlMzhiN2I5MTA4M2E3NDM3ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwNTowNTo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE5XSBjb25maWd1cmU6IENoZWNrIGZvciBhZGRpdGlvbmFsIGZlYXR1cmVzIHRoYXQgdWNsaWJjCi0gZG9lc250IHN1cHBvcnQKLQotVGhpcyBoZWxwcyBpbiBzdXBwb3J0aW5nIHVjbGliYyB3aGljaCBkb2VzIG5vdCBoYXZlIGFsbCBmZWF0dXJlcyB0aGF0Ci1nbGliYyBtaWdodCBoYXZlCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtubyBkZXNpcmUgZm9yIHVjbGliYyBzdXBwb3J0XQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTggKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggN2Y2YjNiOS4uN2M0YjVhMiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTEwLDYgKzExMCwyNCBAQCBBQ19QQVRIX1BST0coW1VNT1VOVF9QQVRIXSwgW3Vtb3VudF0sIFsvdXNyL2Jpbi91bW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXQotIAotIEFTX0lGKFshIGxuIC0tcmVsYXRpdmUgLS1oZWxwID4gL2Rldi9udWxsIDI+JjFdLCBbQUNfTVNHX0VSUk9SKFsqKiogbG4gZG9lc24ndCBzdXBwb3J0IC0tcmVsYXRpdmUgKioqXSldKQotIAotKyMgY2hlY2sgZm9yIGZldyBmdW5jdGlvbnMgbm90IGltcGxlbWVudGVkIGluIHVDbGliYwotKwotK0FDX0NIRUNLX0ZVTkNTX09OQ0UobWtvc3RlbXAgZXhlY3ZwZSBwb3NpeF9mYWxsb2NhdGUpCi0rCi0rIyBjaGVjayBmb3IgJW1zIGZvcm1hdCBzdXBwb3J0IC0gYXNzdW1lIGFsd2F5cyBubyBpZiBjcm9zcyBjb21waWxpbmcKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJW1zIGZvcm1hdCBpcyBzdXBwb3J0ZWQgYnkgKnNjYW5mXSkKLSsKLStBQ19MSU5LX0lGRUxTRSgKLSsJW0FDX0xBTkdfUFJPR1JBTShbCi0rCSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsJIF0sWwotKwkgICAgY2hhciAqYnVmMSwgKmJ1ZjIsICpidWYzLCBzdHI9IjEgMi4zIGFiY2RlIiA7Ci0rCSAgICBpbnQgcmMgPSBzc2NhbmYoc3RyLCAiJW1zICVtcyAlbXMiLCAmYnVmMSwgJmJ1ZjIsICZidWYzKSA7Ci0rCSAgICByZXR1cm4gKHJjPT0zKT8wOjE7XSldLAotKwlbQUNfREVGSU5FKFtIQVZFX01TRk9STUFUXSwgWzFdLCBbRGVmaW5lIGlmICVtcyBmb3JtYXQgaXMgc3VwcG9ydGVkIGJ5ICpzY2FuZi5dKV0sCi0rCVtBQ19NU0dfUkVTVUxUKFtub10pXSkKLSsKLSBNNF9ERUZJTkVTPQotIAotIEFDX0NIRUNLX1RPT0woT0JKQ09QWSwgb2JqY29weSkKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzNGM1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gMDVkZmZlNjc5MTlmZmM3MmJlNWMwMTdiYzZjZjgyZjE2NGIyZThmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTo0MjowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDA3LzEyXSBjaGVjayBmb3IgbWlzc2luZyBjYW5vbmljYWxpemVfZmlsZV9uYW1lCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMiArKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgICAgICB8IDEgKworIHNyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCB8IDYgKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2QwMzVhOTcxLi4zNjc0MTkwZmIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMzMyw2ICszMzMsNyBAQCBBQ19DSEVDS19ERUNMUyhbCisgICAgICAgICByZW5hbWVhdDIsCisgICAgICAgICBrY21wLAorICAgICAgICAga2V5Y3RsLAorKyAgICAgICAgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSwKKyAgICAgICAgIExPX0ZMQUdTX1BBUlRTQ0FOLAorICAgICAgICAgY29weV9maWxlX3JhbmdlLAorICAgICAgICAgZXhwbGljaXRfYnplcm9dLAorQEAgLTM0Myw2ICszNDQsNyBAQCBBQ19DSEVDS19ERUNMUyhbCisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHNjaGVkLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8bGludXgvbG9vcC5oPgorIF1dKQorIAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCA2NzFmMzQxYzYuLjhhZTQ5NjRlMSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xMjQ2LDMgKzEyNDYsNCBAQCBzdHJ1Y3QgZXRodG9vbF9saW5rX3NldHRpbmdzIHsKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSAibWlzc2luZ19zeXNjYWxsLmgiCisrCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCitpbmRleCA4OTgxMTZjN2IuLjRkNDRlZTRmYSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAorKysrIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCitAQCAtMjgsNiArMjgsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgeworIH0KKyAjZW5kaWYKKyAKKysjaWYgIUhBVkVfREVDTF9DQU5PTklDQUxJWkVfRklMRV9OQU1FCisrc3RhdGljIGlubGluZSBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKnBhdGgpIHsKKysgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoLCBOVUxMKTsKKyt9CisrI2VuZGlmCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfREVDTF9NRU1GRF9DUkVBVEUKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKaW5kZXggZmFkNjlhNS4uYmM5MmRiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgLS0KICAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMjllZDFkZC4uMDJmNDAxNyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGdpdC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmFtCisrKysgZ2l0L01ha2VmaWxlLmFtCiBAQCAtMzIwLDcgKzMyMCw3IEBAIGRlZmluZSBpbnN0YWxsLXJlbGF0aXZlLWFsaWFzZXMKICAJd2hpbGUgWyAtbiAiJCQxIiBdOyBkbyBcCiAgCQkkKE1LRElSX1ApIGBkaXJuYW1lICQoREVTVERJUikkJGRpci8kJDJgICYmIFwKQEAgLTI1LDE5ICsyNSwxNiBAQAogIAkJc2hpZnQgMiB8fCBleGl0ICQkPzsgXAogIAlkb25lCiAgZW5kZWYKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDdjNGI1YTIuLmIxMGM5NTIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwOCw4ICsxMDgsNiBAQCBBQ19QQVRIX1BST0coW1NVTE9HSU5dLCBbc3Vsb2dpbl0sIFsvdXNyL3NiaW4vc3Vsb2dpbl0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQorSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCitAQCAtMTEwLDggKzExMCw2IEBAIEFDX1BBVEhfUFJPRyhbU1VMT0dJTl0sIFtzdWxvZ2luXSwgWy91c3IKICBBQ19QQVRIX1BST0coW01PVU5UX1BBVEhdLCBbbW91bnRdLCBbL3Vzci9iaW4vbW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKICBBQ19QQVRIX1BST0coW1VNT1VOVF9QQVRIXSwgW3Vtb3VudF0sIFsvdXNyL2Jpbi91bW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKICAKIC1BU19JRihbISBsbiAtLXJlbGF0aXZlIC0taGVscCA+IC9kZXYvbnVsbCAyPiYxXSwgW0FDX01TR19FUlJPUihbKioqIGxuIGRvZXNuJ3Qgc3VwcG9ydCAtLXJlbGF0aXZlICoqKl0pXSkKIC0KLSAjIGNoZWNrIGZvciBmZXcgZnVuY3Rpb25zIG5vdCBpbXBsZW1lbnRlZCBpbiB1Q2xpYmMKKyBNNF9ERUZJTkVTPQogIAotIEFDX0NIRUNLX0ZVTkNTX09OQ0UobWtvc3RlbXAgZXhlY3ZwZSBwb3NpeF9mYWxsb2NhdGUpCi0tLSAKLTIuMTAuMgotCisgQUNfQ0hFQ0tfVE9PTChPQkpDT1BZLCBvYmpjb3B5KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTRmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA0OGU3YzBmNWIyZjVkNzc3YTE2YWM1NTg0ZGM0ZjUwZjFkZmE4MzJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6Mjc6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xMl0gRG8gbm90IGVuYWJsZSBuc3MgdGVzdHMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDNjYzhmMzQ1MS4uZGYyMGE5YTExIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNTI5MCw2ICs1MjkwLDcgQEAgRVhUUkFfRElTVCArPSBcCisgCXNyYy90aW1lc3luYy90aW1lc3luY2QuY29uZi5pbgorIAorICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisraWYgRU5BQkxFX05TU19TWVNURU1ECisgdGVzdF9uc3NfU09VUkNFUyA9IFwKKyAJc3JjL3Rlc3QvdGVzdC1uc3MuYworIAorQEAgLTUzMDIsNyArNTMwMyw2IEBAIG1hbnVhbF90ZXN0cyArPSBcCisgCXRlc3QtbnNzCisgCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy1pZiBFTkFCTEVfTlNTX1NZU1RFTUQKKyBsaWJuc3Nfc3lzdGVtZF9sYV9TT1VSQ0VTID0gXAorIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuc3ltIFwKKyAJc3JjL25zcy1zeXN0ZW1kL25zcy1zeXN0ZW1kLmMKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtbnNwYXduLVVzZS1leGVjdnBlLW9ubHktd2hlbi1saWJjLXN1cHBvcnRzLWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODZiNWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDk2MDI2YTM3NjMyNjRlYjQxYTJjM2UzNzRmMjMyZjZlNTQzMjg0YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjMzOjQ5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTldIG5zcGF3bjogVXNlIGV4ZWN2cGUgb25seSB3aGVuIGxpYmMgc3VwcG9ydHMgaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW25vIGRlc2lyZSBmb3IgdWNsaWJjIHN1cHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbnNwYXduL25zcGF3bi5jIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25zcGF3bi9uc3Bhd24uYyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLWluZGV4IDliOWFlOTAuLjE5YjQ3Y2QgMTAwNjQ0Ci0tLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCi0rKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMTIzLDYgKzEyMyw4IEBAIHR5cGVkZWYgZW51bSBMaW5rSm91cm5hbCB7Ci0gICAgICAgICBMSU5LX0dVRVNUCi0gfSBMaW5rSm91cm5hbDsKLSAKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0gc3RhdGljIGNoYXIgKmFyZ19kaXJlY3RvcnkgPSBOVUxMOwotIHN0YXRpYyBjaGFyICphcmdfdGVtcGxhdGUgPSBOVUxMOwotIHN0YXRpYyBjaGFyICphcmdfY2hkaXIgPSBOVUxMOwotQEAgLTI4NzEsNyArMjg3MywxMiBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAotICAgICAgICAgICAgICAgICBhWzBdID0gKGNoYXIqKSAiL3NiaW4vaW5pdCI7Ci0gICAgICAgICAgICAgICAgIGV4ZWN2ZShhWzBdLCBhLCBlbnZfdXNlKTsKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cnZfaXNlbXB0eShhcmdfcGFyYW1ldGVycykpCi0rI2lmZGVmIEhBVkVfRVhFQ1ZQRQotICAgICAgICAgICAgICAgICBleGVjdnBlKGFyZ19wYXJhbWV0ZXJzWzBdLCBhcmdfcGFyYW1ldGVycywgZW52X3VzZSk7Ci0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgZW52aXJvbiA9IGVudl91c2U7Ci0rICAgICAgICAgICAgICAgIGV4ZWN2cChhcmdfcGFyYW1ldGVyc1swXSwgYXJnX3BhcmFtZXRlcnMpOwotKyNlbmRpZiAvKiBIQVZFX0VYRUNWUEUgKi8KLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICBpZiAoIWFyZ19jaGRpcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiB3ZSBjYW5ub3QgY2hhbmdlIHRoZSBkaXJlY3RvcnksIHdlJ2xsIGVuZCB1cCBpbiAvLCB0aGF0IGlzIGV4cGVjdGVkLiAqLwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvcm0tc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM2OTRkYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvcm0tc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA3NWY0ZTdmMTY3ZGU1MzNhMTYwZWUxYWYyYTAzZmJhNGM1YTVmZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6MzM6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xMl0gdGVzdC1oZXhkZWNvY3QuYzogSW5jbHVkZSBtaXNzaW5nLmggZm9ybSBzdHJuZHVwYQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCitpbmRleCBmY2FlNDI3ZTcuLjVlYjVlMmVkNyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKKysrKyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgImhleGRlY29jdC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKKyAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS11dGlsLWJ5cGFzcy11bmltcGxlbWVudGVkLV9TQ19QSFlTX1BBR0VTLXN5c3RlbS1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXV0aWwtYnlwYXNzLXVuaW1wbGVtZW50ZWQtX1NDX1BIWVNfUEFHRVMtc3lzdGVtLWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNTBiYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXV0aWwtYnlwYXNzLXVuaW1wbGVtZW50ZWQtX1NDX1BIWVNfUEFHRVMtc3lzdGVtLWNvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDA4NWM4YjZmMjUzNzI2YWQ1NDdlN2JlODRmZjNmMmI5OTcwMTQ4OGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjM4OjA3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTldIHV0aWw6IGJ5cGFzcyB1bmltcGxlbWVudGVkIF9TQ19QSFlTX1BBR0VTIHN5c3RlbQotIGNvbmZpZ3VyYXRpb24gQVBJIG9uIHVjbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3VjbGliYy1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNpYy91dGlsLmMgfCAxNSArKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuYyBiL3NyYy9iYXNpYy91dGlsLmMKLWluZGV4IGMxYjVjYTEuLjRjNjJkNDMgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvdXRpbC5jCi1AQCAtNzQyLDYgKzc0MiwyMCBAQCB1aW50NjRfdCBwaHlzaWNhbF9tZW1vcnkodm9pZCkgewotICAgICAgICAgICogSW4gb3JkZXIgdG8gc3VwcG9ydCBjb250YWluZXJzIG5pY2VseSB0aGF0IGhhdmUgYSBjb25maWd1cmVkIG1lbW9yeSBsaW1pdCB3ZSdsbCB0YWtlIHRoZSBtaW5pbXVtIG9mIHRoZQotICAgICAgICAgICogcGh5c2ljYWxseSByZXBvcnRlZCBhbW91bnQgb2YgbWVtb3J5IGFuZCB0aGUgbGltaXQgY29uZmlndXJlZCBmb3IgdGhlIHJvb3QgY2dyb3VwLCBpZiB0aGVyZSBpcyBhbnkuICovCi0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsgICAgICAgIGNoYXIgbGluZVsxMjhdOwotKyAgICAgICAgRklMRSAqZiA9IGZvcGVuKCIvcHJvYy9tZW1pbmZvIiwgInIiKTsKLSsgICAgICAgIGlmIChmID09IE5VTEwpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgd2hpbGUgKCFmZW9mKGYpICYmIGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKS0xLCBmKSkgewotKyAgICAgICAgICAgICAgICBpZiAoc3NjYW5mKGxpbmUsICJNZW1Ub3RhbDogJWxpIGtCIiwgJm1lbSkgPT0gMSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbSAqPSAxMDI0OwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBmY2xvc2UoZik7Ci0rICAgICAgICByZXR1cm4gKHVpbnQ2NF90KSBtZW07Ci0rI2Vsc2UKLSAgICAgICAgIHNjID0gc3lzY29uZihfU0NfUEhZU19QQUdFUyk7Ci0gICAgICAgICBhc3NlcnQoc2MgPiAwKTsKLSAKLUBAIC03NjIsNiArNzc2LDcgQEAgdWludDY0X3QgcGh5c2ljYWxfbWVtb3J5KHZvaWQpIHsKLSAgICAgICAgIGxpbSAqPSBwczsKLSAKLSAgICAgICAgIHJldHVybiBNSU4obWVtLCBsaW0pOwotKyNlbmRpZgotIH0KLSAKLSB1aW50NjRfdCBwaHlzaWNhbF9tZW1vcnlfc2NhbGUodWludDY0X3QgdiwgdWludDY0X3QgbWF4KSB7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOGM4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDZlOWQyYmNhYTZmODg2YjIzODRjMWMzNWEwNGU0ZWJjMTQ4YWVhNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjo0MDoyNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEwLzEyXSB0ZXN0LXNpemVvZi5jOiBEaXNhYmxlIHRlc3RzIGZvciBtaXNzaW5nIHR5cGVkZWZzIGluCisgbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK2luZGV4IDI2OWFkZmQxOC4uYmE3ODU1ZGZmIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworQEAgLTE4LDcgKzE4LDYgQEAKKyAqKiovCisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorIAorIC8qIFByaW50IGluZm9ybWF0aW9uIGFib3V0IHZhcmlvdXMgdHlwZXMuIFVzZWZ1bCB3aGVuIGRpYWdub3NpbmcKK0BAIC00OCw4ICs0NywxMCBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7CisgICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7CisgICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGluZm8oZmxvYXQpOworICAgICAgICAgaW5mbyhkb3VibGUpOworQEAgLTU5LDcgKzYwLDkgQEAgaW50IG1haW4odm9pZCkgeworICAgICAgICAgaW5mbyhzc2l6ZV90KTsKKyAgICAgICAgIGluZm8odGltZV90KTsKKyAgICAgICAgIGluZm8odXNlY190KTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fdGltZV90KTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGluZm8oZW51bSBFbnVtKTsKKyAgICAgICAgIGluZm8oZW51bSBCaWdFbnVtKTsKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2ZlODI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIDJlYjQ1ZjVhMGE4YmZiOGJkY2EwODQ1ODdhZDI4ZTUwMDFmM2NjNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IFRodSwgMTggU2VwIDIwMTQgMTU6MjQ6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMl0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvaHdkYi9od2RiLmMgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIHNyYy91ZGV2L3VkZXZhZG0taHdkYi5jIHwgMTYgKysrKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaHdkYi9od2RiLmMgYi9zcmMvaHdkYi9od2RiLmMKK2luZGV4IDc5MzM5OGNhNi4uNjY5YjAwODE4IDEwMDY0NAorLS0tIGEvc3JjL2h3ZGIvaHdkYi5jCisrKysgYi9zcmMvaHdkYi9od2RiLmMKK0BAIC0xNTEsMTMgKzE1MSwxMiBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKKyAKKyBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkMoc3RydWN0IHRyaWUqLCB0cmllX2ZyZWUpOworIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworLQorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTgyLDcgKzE4MSwxMCBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCisgICAgICAgICAgICAgICAgIH07CisgCistICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisrCisgICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgMiBpZGVudGljYWwgcHJvcGVydGllcyBvbiB0aGUgc2FtZSBtYXRjaC1zdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgcHJvY2VzcyBmaWxlcyBpbiBvcmRlciwgd2UganVzdCByZXBsYWNlIHRoZSBwcmV2aW91cyB2YWx1ZS4KK0BAIC0yMDcsNyArMjA5LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0uZmlsZV9wcmlvcml0eSA9IGZpbGVfcHJpb3JpdHk7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitpbmRleCA2OWIwYjkwMjUuLmZiZDIxMzMwMCAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCisrKysgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworQEAgLTEyOCwxMyArMTI4LDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfbm9kZV9jbGVhbnVwKHN0cnVjdCB0cmllX25vZGUgKm5vZGUpIHsKKyAgICAgICAgIGZyZWUobm9kZSk7CisgfQorIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworIAorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTU1LDcgKzE1NSw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGxhY2UgZXhpc3RpbmcgZWFybGllciBrZXkgd2l0aCBuZXcgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWwtPnZhbHVlX29mZiA9IHY7CitAQCAtMTcyLDcgKzE3NCw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmtleV9vZmYgPSBrOworICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0udmFsdWVfb2ZmID0gdjsKKyAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOworLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTZkYjY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMCwwICsxLDk5IEBACitGcm9tIDk2MjE2MThjNzAxYTJkNWViM2UyNmY0MGM2ODM1NGQ0ZGZiOGY4NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDEyLzEyXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQorCitBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAordGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisKKyAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKKyAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKworTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCitkaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAorKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCitvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgorVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQord2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgorZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKKyhmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorCitUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAorY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCitqdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/CisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KKyBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKK2luZGV4IDA5NGFjZjE3OS4uY2RiYzBhZTcyIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorQEAgLTQ4LDcgKzQ4LDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7CisgCisgaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKKyAKKy0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKKysvKgorKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCisrICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisrCisrICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKysKKysgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgorKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCisrICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKKysgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KKysgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKKysgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCisrICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KKysKKysgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgorKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKKysgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKysqLworKworKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQorIAorIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOworIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYworaW5kZXggOTAzYTE4Nzg2Li4yZjYwNTJlZTcgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCisrKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitAQCAtNzAsNyArNzAsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgeworLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCisrICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgeworQEAgLTc4LDcgKzc4LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KK0BAIC04OSw3ICs4OSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOworIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaAppbmRleCA4NjY2YmRjLi5lYjM4MGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4Y2MxYWUxMWY1NGRjYzM4ZWUyMTY4YjBmOTk3MDNiODM1ZGQzOTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhYjVhMjcwNDAxMzNmN2NkZjA2MmFjOGNmZWI5NGUwODFkMzU2N2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTo0MToxMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDEyLzE5XSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTRdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKIAogcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKIENPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCkBAIC0xMSwyMyArMTEsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1pbmRleCBjMTNkMDVjLi5iMTRmYmVkIDEwMDY0NAoraW5kZXggZDI3NDVmNjVmLi42M2Y0NzJiZTggMTAwNjQ0CiAtLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKICsrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwogQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCiAgRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKICAKICBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0tS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0rS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxoZCp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisrS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCiAgCiAgIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCiAgVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaAppbmRleCAyYjMzMzM3Li5hZWViYmZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDc5ZTY0YTA3ODQwZTBkOTdkNjZlNDYxMTFmMWMwODZiZjgzOTgxYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ3OWUxZjRhYTJiOWYxYzkxMWE0ZDBkZDE4ZTIyMmQyNDFhOTc4ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjM1OjMwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTldIE1ha2Ugcm9vdCdzIGhvbWUgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZQorU3ViamVjdDogW1BBVENIIDQyLzQ4XSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKIAogT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKIHN5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKQEAgLTE0LDYgKzE0LDcgQEAKIAogU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8IDIgKysKICBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8IDcgKysrKysrKwpAQCAtMjQsMTggKzI1LDE4IEBACiAgNiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNDIwZTBlMC4uMzAxMGIwMSAxMDA2NDQKK2luZGV4IDFiY2Q5MzJjMi4uYzJiNGE5OWQyIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjEzLDYgKzIxMyw3IEBAIEFNX0NQUEZMQUdTID0gXAorQEAgLTIyNiw2ICsyMjYsNyBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLURMSUJESVI9XCIkKGxpYmRpcilcIiBcCiAgCS1EUk9PVExJQkRJUj1cIiQocm9vdGxpYmRpcilcIiBcCiAgCS1EUk9PVExJQkVYRUNESVI9XCIkKHJvb3RsaWJleGVjZGlyKVwiIFwKICsJLURST09USE9NRURJUj1cIiQocm9vdGhvbWVkaXIpXCIgXAotIAktRFRFU1RfRElSPVwiJChhYnNfdG9wX3NyY2RpcikvdGVzdFwiIFwKICAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMgXAogIAktSSAkKHRvcF9idWlsZGRpcikvc3JjL2Jhc2ljIFwKLUBAIC02MDU3LDYgKzYwNTgsNyBAQCBzdWJzdGl0dXRpb25zID0gXAorIAktSSAkKHRvcF9zcmNkaXIpL3NyYy9iYXNpYyBcCitAQCAtNjM1Niw2ICs2MzU3LDcgQEAgc3Vic3RpdHV0aW9ucyA9IFwKICAgICAgICAgJ3xyb290bGliZGlyPSQocm9vdGxpYmRpcil8JyBcCiAgICAgICAgICd8cm9vdGxpYmV4ZWNkaXI9JChyb290bGliZXhlY2Rpcil8JyBcCiAgICAgICAgICd8cm9vdGJpbmRpcj0kKHJvb3RiaW5kaXIpfCcgXApAQCAtNDQsMTAgKzQ1LDEwIEBACiAgICAgICAgICd8U1lTVEVNQ1RMPSQocm9vdGJpbmRpcikvc3lzdGVtY3RsfCcgXAogICAgICAgICAnfFNZU1RFTURfTk9USUZZPSQocm9vdGJpbmRpcikvc3lzdGVtZC1ub3RpZnl8JyBcCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMTBjOTUyLi5kZmMwYmQzIDEwMDY0NAoraW5kZXggMDM1NGZmZTZhLi5iNTNjYTFmMWEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE1MTMsNiArMTUxMywxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGxpYmRpcl0sCitAQCAtMTY0MSw2ICsxNjQxLDExIEBAIEFDX0FSR19XSVRIKFtyb290bGliZGlyXSwKICAgICAgICAgIFt3aXRoX3Jvb3RsaWJkaXI9JHtsaWJkaXJ9XSkKICBBWF9OT1JNQUxJWkVfUEFUSChbd2l0aF9yb290bGliZGlyXSkKICAKQEAgLTU3LDI5ICs1OCwyOSBAQAogKyAgICAgICAgW3dpdGhfcm9vdGhvbWVkaXI9L3Jvb3RdKQogKwogIEFDX0FSR19XSVRIKFtwYW1saWJkaXJdLAotICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGFtbGliZGlyPURJUl0sIFtkaXJlY3RvcnkgZm9yIFBBTSBtb2R1bGVzXSksCiAgICAgICAgICBbXSwKLUBAIC0xNTk4LDYgKzE2MDMsNyBAQCBBQ19TVUJTVChbcGFtbGliZGlyXSwgWyR3aXRoX3BhbWxpYmRpcl0pCi0gQUNfU1VCU1QoW3BhbWNvbmZkaXJdLCBbJHdpdGhfcGFtY29uZmRpcl0pCitAQCAtMTczMyw2ICsxNzM4LDcgQEAgQUNfU1VCU1QoW3BhbWNvbmZkaXJdLCBbJHdpdGhfcGFtY29uZmRpcl0pCisgQUNfU1VCU1QoW3JwbW1hY3Jvc2Rpcl0sIFskd2l0aF9ycG1tYWNyb3NkaXJdKQogIEFDX1NVQlNUKFtyb290cHJlZml4XSwgWyR3aXRoX3Jvb3RwcmVmaXhdKQogIEFDX1NVQlNUKFtyb290bGliZGlyXSwgWyR3aXRoX3Jvb3RsaWJkaXJdKQogK0FDX1NVQlNUKFtyb290aG9tZWRpcl0sIFskd2l0aF9yb290aG9tZWRpcl0pCiAgCiAgQUNfQ09ORklHX0ZJTEVTKFsKICAgICAgICAgIE1ha2VmaWxlCi1AQCAtMTY4OCw2ICsxNjk0LDcgQEAgQUNfTVNHX1JFU1VMVChbCitAQCAtMTgyOSw2ICsxODM1LDcgQEAgQUNfTVNHX1JFU1VMVChbCiAgICAgICAgICBpbmNsdWRlZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0KICAgICAgICAgIGxpYiBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9CiAgICAgICAgICByb290bGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290bGliZGlyfQogKyAgICAgICAgcm9vdCBob21lIGRpcjogICAgICAgICAgICAgICAgICAgICAke3dpdGhfcm9vdGhvbWVkaXJ9CiAgICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9CiAgICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9Ci0gICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQorICAgICAgICAgYnVpbGQgUHl0aG9uOiAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTn0KIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXNlci11dGlsLmMgYi9zcmMvYmFzaWMvdXNlci11dGlsLmMKLWluZGV4IDkzODUzM2QuLjNmOWZkYzQgMTAwNjQ0CitpbmRleCBjNjE5ZGFkNTIuLjY2MjY4MmFkZiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi1AQCAtMTI3LDcgKzEyNyw3IEBAIGludCBnZXRfdXNlcl9jcmVkcygKK0BAIC0xMjksNyArMTI5LDcgQEAgaW50IGdldF91c2VyX2NyZWRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICpnaWQgPSAwOwogIAogICAgICAgICAgICAgICAgICBpZiAoaG9tZSkKQEAgLTg4LDcgKzg5LDcgQEAKICAKICAgICAgICAgICAgICAgICAgaWYgKHNoZWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICpzaGVsbCA9ICIvYmluL3NoIjsKLUBAIC0zODcsNyArMzg3LDcgQEAgaW50IGdldF9ob21lX2RpcihjaGFyICoqX2gpIHsKK0BAIC0zODksNyArMzg5LDcgQEAgaW50IGdldF9ob21lX2RpcihjaGFyICoqX2gpIHsKICAgICAgICAgIC8qIEhhcmRjb2RlIGhvbWUgZGlyZWN0b3J5IGZvciByb290IHRvIGF2b2lkIE5TUyAqLwogICAgICAgICAgdSA9IGdldHVpZCgpOwogICAgICAgICAgaWYgKHUgPT0gMCkgewpAQCAtOTgsMTAgKzk5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL25zcGF3bi9uc3Bhd24uYyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLWluZGV4IDE5YjQ3Y2QuLmU0MmJmMTkgMTAwNjQ0CitpbmRleCA4YTVmZWRkNGIuLjdiMDFlYzA3OCAxMDA2NDQKIC0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLmMKICsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLUBAIC0yNzk4LDcgKzI3OTgsNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAorQEAgLTIyOTEsNyArMjI5MSw3IEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCiAgICAgICAgICBpZiAoZW52cFtuX2Vudl0pCiAgICAgICAgICAgICAgICAgIG5fZW52Kys7CiAgCkBAIC0xMTAsOCArMTExLDggQEAKICAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiVVNFUj0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkgfHwKICAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiTE9HTkFNRT0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci1AQCAtMjg4Miw3ICsyODgyLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAgICAgICAgIGVsc2UgeworQEAgLTIzNzMsNyArMjM3Myw3IEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCisgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBpZiAoIWFyZ19jaGRpcikKICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiB3ZSBjYW5ub3QgY2hhbmdlIHRoZSBkaXJlY3RvcnksIHdlJ2xsIGVuZCB1cCBpbiAvLCB0aGF0IGlzIGV4cGVjdGVkLiAqLwogLSAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBjaGRpcihob21lID86ICIvcm9vdCIpOwpAQCAtMTIwLDcgKzEyMSw3IEBACiAgICAgICAgICAgICAgICAgIGV4ZWNsZSgiL2Jpbi9iYXNoIiwgIi1iYXNoIiwgTlVMTCwgZW52X3VzZSk7CiAgICAgICAgICAgICAgICAgIGV4ZWNsZSgiL2Jpbi9zaCIsICItc2giLCBOVUxMLCBlbnZfdXNlKTsKIGRpZmYgLS1naXQgYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbiBiL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCi1pbmRleCBkYTY4ZWI4Li5lMjVmODc5IDEwMDY0NAoraW5kZXggZTllYjIzOGI5Li4zMjU4OGU0OGEgMTAwNjQ0CiAtLS0gYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgogKysrIGIvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4KIEBAIC0xNSw4ICsxNSw4IEBAIENvbmZsaWN0cz1zeXNsb2cuc29ja2V0CkBAIC0xMzEsMTEgKzEzMiwxMSBAQAogLVdvcmtpbmdEaXJlY3Rvcnk9LS9yb290CiArRW52aXJvbm1lbnQ9SE9NRT1Acm9vdGhvbWVkaXJACiArV29ya2luZ0RpcmVjdG9yeT0tQHJvb3Rob21lZGlyQAotIEV4ZWNTdGFydFByZT0tL2Jpbi9wbHltb3V0aCAtLXdhaXQgcXVpdAotIEV4ZWNTdGFydFByZT0tL2Jpbi9lY2hvIC1lICdZb3UgYXJlIGluIGVtZXJnZW5jeSBtb2RlLiBBZnRlciBsb2dnaW5nIGluLCB0eXBlICJqb3VybmFsY3RsIC14YiIgdG8gdmlld1xcbnN5c3RlbSBsb2dzLCAic3lzdGVtY3RsIHJlYm9vdCIgdG8gcmVib290LCAic3lzdGVtY3RsIGRlZmF1bHQiIG9yIF5EIHRvXFxudHJ5IGFnYWluIHRvIGJvb3QgaW50byBkZWZhdWx0IG1vZGUuJwotIEV4ZWNTdGFydD0tL2Jpbi9zaCAtYyAiQFNVTE9HSU5AOyBAU1lTVEVNQ1RMQCAtLWpvYi1tb2RlPWZhaWwgLS1uby1ibG9jayBkZWZhdWx0IgorIEV4ZWNTdGFydD0tQHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLXN1bG9naW4tc2hlbGwgZW1lcmdlbmN5CisgVHlwZT1pZGxlCisgU3RhbmRhcmRJbnB1dD10dHktZm9yY2UKIGRpZmYgLS1naXQgYS91bml0cy9yZXNjdWUuc2VydmljZS5pbiBiL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluCi1pbmRleCA1ZmVmZjY5Li5hODM0MzllIDEwMDY0NAoraW5kZXggNGFiNjZmNDg1Li5iZDk4OThmMmMgMTAwNjQ0CiAtLS0gYS91bml0cy9yZXNjdWUuc2VydmljZS5pbgogKysrIGIvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4KIEBAIC0xNCw4ICsxNCw4IEBAIEFmdGVyPXN5c2luaXQudGFyZ2V0IHBseW1vdXRoLXN0YXJ0LnNlcnZpY2UKQEAgLTE0Niw5ICsxNDcsOSBAQAogLVdvcmtpbmdEaXJlY3Rvcnk9LS9yb290CiArRW52aXJvbm1lbnQ9SE9NRT1Acm9vdGhvbWVkaXJACiArV29ya2luZ0RpcmVjdG9yeT0tQHJvb3Rob21lZGlyQAotIEV4ZWNTdGFydFByZT0tL2Jpbi9wbHltb3V0aCAtLXdhaXQgcXVpdAotIEV4ZWNTdGFydFByZT0tL2Jpbi9lY2hvIC1lICdZb3UgYXJlIGluIHJlc2N1ZSBtb2RlLiBBZnRlciBsb2dnaW5nIGluLCB0eXBlICJqb3VybmFsY3RsIC14YiIgdG8gdmlld1xcbnN5c3RlbSBsb2dzLCAic3lzdGVtY3RsIHJlYm9vdCIgdG8gcmVib290LCAic3lzdGVtY3RsIGRlZmF1bHQiIG9yIF5EIHRvXFxuYm9vdCBpbnRvIGRlZmF1bHQgbW9kZS4nCi0gRXhlY1N0YXJ0PS0vYmluL3NoIC1jICJAU1VMT0dJTkA7IEBTWVNURU1DVExAIC0tam9iLW1vZGU9ZmFpbCAtLW5vLWJsb2NrIGRlZmF1bHQiCisgRXhlY1N0YXJ0PS1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtc3Vsb2dpbi1zaGVsbCByZXNjdWUKKyBUeXBlPWlkbGUKKyBTdGFuZGFyZElucHV0PXR0eS1mb3JjZQogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMTk5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDRiNjczMzU0NGJlYjY2MmEwZjc3MzEwMzAyZmFlMWZiN2I3NmQxNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMiBTZXAgMjAxNSAxODo1MzozMSArMDAwMAorU3ViamVjdDogW1BBVENIIDEzLzEzXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCisgZnVuY3Rpb24gcG9pbnRlcgorCittYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvYmFzaWMvdXRpbC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKK2luZGV4IGM3ZGE2YzM5Yi4uODdmNjJiODkxIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3V0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3V0aWwuaAorQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCisgICogTm9ybWFsIHFzb3J0IHJlcXVpcmVzIGJhc2UgdG8gYmUgbm9ubnVsbC4gSGVyZSB3ZXJlIHJlcXVpcmUKKyAgKiB0aGF0IG9ubHkgaWYgbm1lbWIgPiAwLgorICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKKytzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgeworICAgICAgICAgaWYgKG5tZW1iIDw9IDEpCisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKaW5kZXggZjMxZDIxMS4uOTU4NzFiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDRkMjhkOWE3ZDhkNjlmYjQyOTk1NWQ3NzBlNTNlN2E4MTY0MGRhMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc4ODM5ODVhM2E3ODY3N2U5YTFkNWQ2MWZlN2ZhOGJhZGYzOWY1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjQ1OjIzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMTldIFJldmVydCAidWRldjogcmVtb3ZlIHVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTRdIFJldmVydCAidWRldjogcmVtb3ZlIHVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nCiAgc3VwcG9ydCIKIAogVGhpcyByZXZlcnRzIGNvbW1pdCBiZTJlYTcyM2IxZDAyM2IzZDM4NWQzYjc5MWVlNDYwN2NiZmIyMGNhLgpAQCAtMTEsMjMgKzExLDI0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrKwotIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCisgUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KICBUT0RPICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysrKysKICBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICBzcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyAgICAgICAgICB8ICAgMyArCiAgc3JjL3VkZXYvdWRldi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKysKICBzcmMvdWRldi91ZGV2ZC5jICAgICAgICAgICAgICAgICB8ICAxMyArKysrCi0gOCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyA4IGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMzAxMGIwMS4uMjI5NDkyYSAxMDA2NDQKK2luZGV4IGMyYjRhOTlkMi4uNjkyZDdiYjk1IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMzc5MSw2ICszNzkxLDE4IEBAIGxpYnVkZXZfY29yZV9sYV9MSUJBREQgPSBcCitAQCAtMzk4NSw2ICszOTg1LDE4IEBAIGxpYnVkZXZfY29yZV9sYV9MSUJBREQgPSBcCiAgCSQoQkxLSURfTElCUykgXAogIAkkKEtNT0RfTElCUykKICAKQEAgLTQ3LDE3ICs0OCwxMCBAQAogIGxpYnVkZXZfY29yZV9sYV9TT1VSQ0VTICs9IFwKICAJc3JjL3VkZXYvdWRldi1idWlsdGluLWttb2QuYwogZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQotaW5kZXggOWY1YmM5My4uZjYwYWUxMSAxMDA2NDQKK2luZGV4IDYwMzg4ZWViZS4uZTIxOTc2MzkzIDEwMDY0NAogLS0tIGEvUkVBRE1FCiArKysgYi9SRUFETUUKLUBAIC01MCwxNCArNTAsMTQgQEAgUkVRVUlSRU1FTlRTOgotICAgICAgICAgICBDT05GSUdfUFJPQ19GUwotICAgICAgICAgICBDT05GSUdfRkhBTkRMRSAobGlidWRldiwgbW91bnQgYW5kIGJpbmQgbW91bnQgaGFuZGxpbmcpCi0gCi0tICAgICAgICB1ZGV2IHdpbGwgZmFpbCB0byB3b3JrIHdpdGggdGhlIGxlZ2FjeSBzeXNmcyBsYXlvdXQ6Ci0rICAgICAgICBVZGV2IHdpbGwgZmFpbCB0byB3b3JrIHdpdGggdGhlIGxlZ2FjeSBzeXNmcyBsYXlvdXQ6Ci0gICAgICAgICAgIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPW4KLSAKK0BAIC02MSw4ICs2MSw4IEBAIFJFUVVJUkVNRU5UUzoKICAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKICAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgogIApAQCAtNjksMTAgKzYzLDEwIEBACiAgCiAgICAgICAgICBTb21lIHVkZXYgcnVsZXMgYW5kIHZpcnR1YWxpemF0aW9uIGRldGVjdGlvbiByZWxpZXMgb24gaXQ6CiBkaWZmIC0tZ2l0IGEvVE9ETyBiL1RPRE8KLWluZGV4IGJhYWFjOTQuLjFhYjE2OTEgMTAwNjQ0CitpbmRleCA2MWVmYTVlOWYuLjY3Y2NhYzIyNCAxMDA2NDQKIC0tLSBhL1RPRE8KICsrKyBiL1RPRE8KLUBAIC02NTgsNiArNjU4LDcgQEAgRmVhdHVyZXM6CitAQCAtNzQwLDYgKzc0MCw3IEBAIEZlYXR1cmVzOgogICogaW5pdGlhbGl6ZSB0aGUgaG9zdG5hbWUgZnJvbSB0aGUgZnMgbGFiZWwgb2YgLywgaWYgL2V0Yy9ob3N0bmFtZSBkb2VzIG5vdCBleGlzdD8KICAKICAqIHVkZXY6CkBAIC04MSwxMSArNzUsMTEgQEAKICAgIC0ga2lsbCBzY3NpX2lkCiAgICAtIGFkZCB0cmlnZ2VyIC0tc3Vic3lzdGVtLW1hdGNoPXVzYi91c2JfZGV2aWNlIGRldmljZQogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZGZjMGJkMy4uMWRlMDA2NiAxMDA2NDQKK2luZGV4IGI1M2NhMWYxYS4uMTE1MGNhNTBlIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzk0LDYgKzEzOTQsMjMgQEAgQU1fQ09ORElUSU9OQUwoSEFWRV9NWUhPU1ROQU1FLCBbdGVzdCAiJGhhdmVfbXlob3N0bmFtZSIgPSAieWVzIl0pCi0gQUNfQVJHX0VOQUJMRShod2RiLCBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1od2RiXSwgW2Rpc2FibGUgaGFyZHdhcmUgZGF0YWJhc2Ugc3VwcG9ydF0pXSwKK0BAIC0xNTIyLDYgKzE1MjIsMjMgQEAgQU1fQ09ORElUSU9OQUwoSEFWRV9NWUhPU1ROQU1FLCBbdGVzdCAiJGhhdmVfbXlob3N0bmFtZSIgPSAieWVzIl0pCisgQUNfQVJHX0VOQUJMRShod2RiLCBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1od2RiXSwgW2Rpc2FibGUgaGFyZHdhcmUgZGF0YWJhc2Ugc3VwcG9ydF0pXSwKICAgICAgICAgZW5hYmxlX2h3ZGI9JGVuYWJsZXZhbCwgZW5hYmxlX2h3ZGI9eWVzKQogIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9IV0RCLCBbdGVzdCB4JGVuYWJsZV9od2RiID0geHllc10pCiArQUNfQVJHX1dJVEgoZmlybXdhcmUtcGF0aCwKQEAgLTEwOCwxNyArMTAyLDE3IEBACiAgCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBoYXZlX21hbnBhZ2VzPW5vCi1AQCAtMTY5OCw2ICsxNzE1LDcgQEAgQUNfTVNHX1JFU1VMVChbCitAQCAtMTgzOSw2ICsxODU2LDcgQEAgQUNfTVNHX1JFU1VMVChbCiAgICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9CiAgICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9Ci0gICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQorICAgICAgICAgYnVpbGQgUHl0aG9uOiAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTn0KICsgICAgICAgIGZpcm13YXJlIHBhdGg6ICAgICAgICAgICAgICAgICAgICAgJHtGSVJNV0FSRV9QQVRIfQogICAgICAgICAgUEFNIG1vZHVsZXMgZGlyOiAgICAgICAgICAgICAgICAgICAke3dpdGhfcGFtbGliZGlyfQogICAgICAgICAgUEFNIGNvbmZpZ3VyYXRpb24gZGlyOiAgICAgICAgICAgICAke3dpdGhfcGFtY29uZmRpcn0KLSAgICAgICAgIEQtQnVzIHBvbGljeSBkaXI6ICAgICAgICAgICAgICAgICAgJHt3aXRoX2RidXNwb2xpY3lkaXJ9CisgICAgICAgICBSUE0gbWFjcm9zIGRpcjogICAgICAgICAgICAgICAgICAgICR7d2l0aF9ycG1tYWNyb3NkaXJ9CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmJkOGMyZmIKK2luZGV4IDAwMDAwMDAwMC4uYmQ4YzJmYjk2CiAtLS0gL2Rldi9udWxsCiArKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwogQEAgLTAsMCArMSwxNTQgQEAKQEAgLTI3Nyw3ICsyNzEsNyBAQAogKyAgICAgICAgLnJ1bl9vbmNlID0gdHJ1ZSwKICt9OwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKLWluZGV4IGU2YjM2ZjEuLmNkOTk0N2UgMTAwNjQ0CitpbmRleCBlNmIzNmYxMjQuLmNkOTk0N2UyYSAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCiArKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwogQEAgLTMxLDYgKzMxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gKmJ1aWx0aW5zW10gPSB7CkBAIC0yOTEsMTAgKzI4NSwxMCBAQAogICAgICAgICAgW1VERVZfQlVJTFRJTl9JTlBVVF9JRF0gPSAmdWRldl9idWlsdGluX2lucHV0X2lkLAogICAgICAgICAgW1VERVZfQlVJTFRJTl9LRVlCT0FSRF0gPSAmdWRldl9idWlsdGluX2tleWJvYXJkLAogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYuaCBiL3NyYy91ZGV2L3VkZXYuaAotaW5kZXggODQzM2U4ZC4uZDMyMzY2ZCAxMDA2NDQKK2luZGV4IGMwY2I3ZWFlOC4uOWYwZjFjZjEzIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi5oCiArKysgYi9zcmMvdWRldi91ZGV2LmgKLUBAIC0xNDgsNiArMTQ4LDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKK0BAIC0xNTAsNiArMTUwLDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKICAgICAgICAgIFVERVZfQlVJTFRJTl9CTEtJRCwKICAjZW5kaWYKICAgICAgICAgIFVERVZfQlVJTFRJTl9CVFJGUywKQEAgLTMwNCw3ICsyOTgsNyBAQAogICAgICAgICAgVURFVl9CVUlMVElOX0hXREIsCiAgICAgICAgICBVREVWX0JVSUxUSU5fSU5QVVRfSUQsCiAgICAgICAgICBVREVWX0JVSUxUSU5fS0VZQk9BUkQsCi1AQCAtMTc2LDYgKzE3OSw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4geworQEAgLTE3OCw2ICsxODEsOSBAQCBzdHJ1Y3QgdWRldl9idWlsdGluIHsKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYmxraWQ7CiAgI2VuZGlmCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2J0cmZzOwpAQCAtMzE1LDcgKzMwOSw3IEBACiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2lucHV0X2lkOwogIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9rZXlib2FyZDsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYwotaW5kZXggZDMzNmVlMC4uODFlNWRjNSAxMDA2NDQKK2luZGV4IGFjYmRkZDQxOC4uMjAzNDdiNDAyIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldmQuYwogKysrIGIvc3JjL3VkZXYvdWRldmQuYwogQEAgLTEyNSw2ICsxMjUsOSBAQCBzdHJ1Y3QgZXZlbnQgewpAQCAtMzUzLDUgKzM0Nyw1IEBACiAgICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGV2cGF0aFtjb21tb25dID09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kZWxheWluZ19zZXFudW0gPSBsb29wX2V2ZW50LT5zZXFudW07CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBkMWRmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtbWFrZS10ZXN0LWRpci1jb25maWd1cmFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tIDIxOGJiYzU1NWEzN2Y5MzczZmJiN2YwM2M3NDRlYjY1MTA5ZDM0NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjQ3OjM3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMTldIG1ha2UgdGVzdCBkaXIgY29uZmlndXJhYmxlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi10ZXN0IG1heWJlIGJlIHJ1biBvbiB0YXJnZXQgaW4gY3Jvc3MtY29tcGlsZSBlbnZpcm9ubWVudCwgYW5kIHRlc3QgZGlyCi1pcyBub3QgdGhlIGNvbXBpbGF0aW9uIGRpciwgc28gbWFrZSBpdCBjb25maWd1cmFibGUKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCA3ICsrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMjI5NDkyYS4uZTk5N2Q4MiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTIxNCw3ICsyMTQsNyBAQCBBTV9DUFBGTEFHUyA9IFwKLSAJLURST09UTElCRElSPVwiJChyb290bGliZGlyKVwiIFwKLSAJLURST09UTElCRVhFQ0RJUj1cIiQocm9vdGxpYmV4ZWNkaXIpXCIgXAotIAktRFJPT1RIT01FRElSPVwiJChyb290aG9tZWRpcilcIiBcCi0tCS1EVEVTVF9ESVI9XCIkKGFic190b3Bfc3JjZGlyKS90ZXN0XCIgXAotKwktRFRFU1RfRElSPVwiJCh0ZXN0ZGlyKS90ZXN0XCIgXAotIAktSSAkKHRvcF9zcmNkaXIpL3NyYyBcCi0gCS1JICQodG9wX2J1aWxkZGlyKS9zcmMvYmFzaWMgXAotIAktSSAkKHRvcF9zcmNkaXIpL3NyYy9iYXNpYyBcCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxZGUwMDY2Li5iMTJlMzIwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNTM1LDYgKzE1MzUsMTEgQEAgQUNfQVJHX1dJVEgoW3Jvb3Rob21lZGlyXSwKLSAgICAgICAgIFtdLAotICAgICAgICAgW3dpdGhfcm9vdGhvbWVkaXI9L3Jvb3RdKQotIAotK0FDX0FSR19XSVRIKFt0ZXN0ZGlyXSwKLSsgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtdGVzdGRpcj1ESVJdLCBbdGVzdCBmaWxlIGRpcmVjdG9yeV0pLAotKyAgICAgICAgW10sCi0rICAgICAgICBbd2l0aF90ZXN0ZGlyPSR7YWJzX3RvcF9zcmNkaXJ9XSkKLSsKLSBBQ19BUkdfV0lUSChbcGFtbGliZGlyXSwKLSAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGFtbGliZGlyPURJUl0sIFtEaXJlY3RvcnkgZm9yIFBBTSBtb2R1bGVzXSksCi0gICAgICAgICBbXSwKLUBAIC0xNjIxLDYgKzE2MjYsNyBAQCBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKLSBBQ19TVUJTVChbcm9vdHByZWZpeF0sIFskd2l0aF9yb290cHJlZml4XSkKLSBBQ19TVUJTVChbcm9vdGxpYmRpcl0sIFskd2l0aF9yb290bGliZGlyXSkKLSBBQ19TVUJTVChbcm9vdGhvbWVkaXJdLCBbJHdpdGhfcm9vdGhvbWVkaXJdKQotK0FDX1NVQlNUKFt0ZXN0ZGlyXSwgWyR3aXRoX3Rlc3RkaXJdKQotIAotIEFDX0NPTkZJR19GSUxFUyhbCi0gICAgICAgICBNYWtlZmlsZQotQEAgLTE3MTIsNiArMTcxOCw3IEBAIEFDX01TR19SRVNVTFQoWwotICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KLSAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9Ci0gICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KLSsgICAgICAgIHRlc3QgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Rlc3RkaXJ9Ci0gICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9Ci0gICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9Ci0gICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCmluZGV4IDc3ZGJkNmUuLmQyMDA2MzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKQEAgLTYsNiArNiw3IEBACiBtaXNzaW5nLmggYWxyZWFkeSBpbmNsdWRlcyBpdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBzcmMvYmFzaWMvZXNjYXBlLmggfCAxIC0KICBzcmMvYmFzaWMvdXRmOC5oICAgfCAxIC0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCmluZGV4IDU4MjQwMzMuLjA2N2I3M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaApAQCAtMSwyMSArMSwyMyBAQAotRnJvbSA3Y2MwYjE5ZDI0NDAyM2M3YjNlNTU3NzY1YjAzYjc5NzFlMDQ3ZjI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMzU1NDU3MDkyYjAyYTE1YzY0NmZjMWM3MmU2OGI2OTRhODZkZDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDY6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8xOV0gY2hlY2sgZm9yIHVjaGFyLmggaW4gY29uZmlndXJlCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTRdIGNoZWNrIGZvciB1Y2hhci5oIGluIGNvbmZpZ3VyZQogCiBVc2UgaWZkZWYgdG8gaW5jbHVkZSB1Y2hhci5oCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICB8IDEgKwogIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICsrCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjEyZTMyMC4uNGU2ZGZkZiAxMDA2NDQKK2luZGV4IDExNTBjYTUwZS4uNjBlN2RmNWVlIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0yOTgsNiArMjk4LDcgQEAgQU1fQ09ORElUSU9OQUwoW0hBVkVfUFlUSE9OXSwgW3Rlc3QgIngkaGF2ZV9weXRob24iID0gInh5ZXMiXSkKK0BAIC0zMDQsNiArMzA0LDcgQEAgQU1fQ09ORElUSU9OQUwoW0hBVkVfUFlUSE9OXSwgW3Rlc3QgIngkaGF2ZV9weXRob24iID0gInh5ZXMiXSkKICAKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIApAQCAtMjQsMTIgKzI2LDEyIEBACiAgQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvYnRyZnMuaF0sIFtdLCBbXSkKICBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9tZW1mZC5oXSwgW10sIFtdKQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA0OTM2ODczLi5jZTc5NDA0IDEwMDY0NAoraW5kZXggMjVhMTFmMzUxLi5kNjMxYjdlM2UgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMzUsNyArMzUsOSBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KK0BAIC0zNyw3ICszNyw5IEBACiAgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiArI2lmZGVmIEhBVkVfVUNIQVJfSAogICNpbmNsdWRlIDx1Y2hhci5oPgpAQCAtMzgsNSArNDAsNSBAQAogIAogICNpZmRlZiBIQVZFX0FVRElUCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaAppbmRleCA2NmFhNGNhLi5iNjA5Mjc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCkBAIC0xLDE4ICsxLDE5IEBACi1Gcm9tIDI4OTU1NGQ4N2U0ZmQ5NmNhZTA4YzBmYjQ0OWJmNDFkNTY0MWNkMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGI3YzZiZmUyZWM1YWU0MjZlNTg2ZTFkNmVjYWRiNTJhOTcxMjhhM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjQ5OjUzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMTldIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgorU3ViamVjdDogW1BBVENIIDEzLzE0XSBzb2NrZXQtdXRpbDogZG9uJ3QgZmFpbCBpZiBsaWJjIGRvZXNuJ3Qgc3VwcG9ydCBJRE4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgfCA5ICsrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLWluZGV4IDRlYmYxMDYuLjUzYjlhMTIgMTAwNjQ0CitpbmRleCAwMTZlNjRhYTAuLmQ0NjU4ODI2ZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwogQEAgLTQ3LDYgKzQ3LDE1IEBACkBAIC0yOSw4ICszMCw4IEBACiArI2RlZmluZSBOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMgMAogKyNlbmRpZgogIAotIGludCBzb2NrZXRfYWRkcmVzc19wYXJzZShTb2NrZXRBZGRyZXNzICphLCBjb25zdCBjaGFyICpzKSB7Ci0gICAgICAgICBjaGFyICplLCAqbjsKKyAjaWZkZWYgRU5BQkxFX0lETgorICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1iYWNrLXBvcnQtMjMzLWRvbi10LXVzZS10aGUtdW5pZmllZC1oaWVyYXJjaHktZm9yLXRoZS1zeXN0ZW1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMmQ4NjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1UaGlzIGlzIGEgZGlyZWN0IGJhY2twb3J0IGZyb20gc3lzdGVtZC0yMzMncyBzdHJlYW0gdG8gZml4IGx4Yy9kb2NrZXIuCi0KLSUgbHhjLXN0YXJ0IC1uIGNvbnRhaW5lciAtRgotbHhjLXN0YXJ0OiBjZ2ZzbmcuYzogcGFyc2VfaGllcmFyY2hpZXM6IDgyNSBGYWlsZWQgdG8gZmluZCBjdXJyZW50IGNncm91cCBmb3IgY29udHJvbGxlciAnbmFtZT1zeXN0ZW1kJwotbHhjLXN0YXJ0OiBjZ2ZzbmcuYzogYWxsX2NvbnRyb2xsZXJzX2ZvdW5kOiA0MzEgbm8gc3lzdGVtZCBjb250cm9sbGVyIG1vdW50cG9pbnQgZm91bmQKLWx4Yy1zdGFydDogc3RhcnQuYzogbHhjX3NwYXduOiAxMDgyIGZhaWxlZCBpbml0aWFsaXppbmcgY2dyb3VwIHN1cHBvcnQKLWx4Yy1zdGFydDogc3RhcnQuYzogX19seGNfc3RhcnQ6IDEzMzIgZmFpbGVkIHRvIHNwYXduICdjb250YWluZXInCi1seGMtc3RhcnQ6IGx4Y19zdGFydC5jOiBtYWluOiAzNDQgVGhlIGNvbnRhaW5lciBmYWlsZWQgdG8gc3RhcnQuCi1seGMtc3RhcnQ6IGx4Y19zdGFydC5jOiBtYWluOiAzNDggQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjYW4gYmUgb2J0YWluZWQgYnkgc2V0dGluZyB0aGUgLS1sb2dmaWxlIGFuZCAtLWxvZ3ByaW9yaXR5IG9wdGlvbnMuCi0KLSMjIGJlZ2luIGJhY2twb3J0ICMjCi0KLUZyb20gODQzZDViYWY2YWFkNmM1M2ZjMDBlYThkOTVkODMyMDlhNGY5MmRlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBQaXR0IDxtYXJ0aW4ucGl0dEB1YnVudHUuY29tPgotRGF0ZTogVGh1LCAxMCBOb3YgMjAxNiAwNTozMzoxMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb3JlOiBkb24ndCB1c2UgdGhlIHVuaWZpZWQgaGllcmFyY2h5IGZvciB0aGUgc3lzdGVtZCBjZ3JvdXAKLSB5ZXQgKCM0NjI4KQotCi1Ub28gbWFueSB0aGluZ3MgZG9uJ3QgZ2V0IGFsb25nIHdpdGggdGhlIHVuaWZpZWQgaGllcmFyY2h5IHlldDoKLQotICogaHR0cHM6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvaXNzdWVzLzExNzUKLSAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyL2lzc3Vlcy8yODEwOQotICogaHR0cHM6Ly9naXRodWIuY29tL2x4Yy9seGMvaXNzdWVzLzEyODAKLQotU28gcmV2ZXJ0IHRoZSBkZWZhdWx0IHRvIHRoZSBsZWdhY3kgaGllcmFyY2h5IGZvciBub3cuIERldmVsb3BlcnMgb2YgdGhlIGFib3ZlCi1zb2Z0d2FyZSBjYW4gb3B0IGludG8gdGhlIHVuaWZpZWQgaGllcmFyY2h5IHdpdGgKLSJzeXN0ZW1kLmxlZ2FjeV9zeXN0ZW1kX2Nncm91cF9jb250cm9sbGVyPTAiLgotLS0tCi0gc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwotaW5kZXggNWU3Mzc1My4uZGMxMzAyNSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwotQEAgLTI0MjMsMTAgKzI0MjMsMTAgQEAgYm9vbCBjZ19pc191bmlmaWVkX3N5c3RlbWRfY29udHJvbGxlcl93YW50ZWQodm9pZCkgewotIAotICAgICAgICAgICAgICAgICByID0gZ2V0X3Byb2NfY21kbGluZV9rZXkoInN5c3RlbWQubGVnYWN5X3N5c3RlbWRfY2dyb3VwX2NvbnRyb2xsZXI9IiwgJnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICB3YW50ZWQgPSB0cnVlOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHdhbnRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2FudGVkID0gcGFyc2VfYm9vbGVhbih2YWx1ZSkgPD0gMDsKLSAgICAgICAgIH0KLS0tIAotMi4xMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZmU0OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OTkgKzAsMCBAQAotcmVxdWlyZSBzeXN0ZW1kLmluYwotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1QRSA9ICIxIgotCi1ERVBFTkRTID0gImttb2QgaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBhY2wgcmVhZGxpbmUgbGliY2FwIGxpYmNncm91cCB1dGlsLWxpbnV4IgotCi1TRUNUSU9OID0gImJhc2Uvc2hlbGwiCi0KLWluaGVyaXQgdXNlcmFkZCBwa2djb25maWcgYXV0b3Rvb2xzIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgcHRlc3QgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZGVmaW5lLWV4cDEwLWlmLW1pc3NpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWNvbmZpZ3VyZS1DaGVjay1mb3ItYWRkaXRpb25hbC1mZWF0dXJlcy10aGF0LXVjbGliYy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtbnNwYXduLVVzZS1leGVjdnBlLW9ubHktd2hlbi1saWJjLXN1cHBvcnRzLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktdXRpbC1ieXBhc3MtdW5pbXBsZW1lbnRlZC1fU0NfUEhZU19QQUdFUy1zeXN0ZW0tY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1iYWNrLXBvcnQtMjMzLWRvbi10LXVzZS10aGUtdW5pZmllZC1oaWVyYXJjaHktZm9yLXRoZS1zeXN0ZW1kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1sb2FkLWZyYWdtZW50LXJlZnVzZS11bml0cy13aXRoLWVycm9ycy1pbi1jZXJ0YS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVuaXRzLVByZWZlci1nZXR0eS10by1hZ2V0dHktaW4tY29uc29sZS1zZXR1cC1zeXN0ZW0ucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInh6IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgcGFtIHNlbGludXggbGRjb25maWcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBiaW5mbXQgXAotICAgICAgICAgICAgICAgICAgIHJhbmRvbXNlZWQgXAotICAgICAgICAgICAgICAgICAgIG1hY2hpbmVkIFwKLSAgICAgICAgICAgICAgICAgICBiYWNrbGlnaHQgXAotICAgICAgICAgICAgICAgICAgIHZjb25zb2xlIFwKLSAgICAgICAgICAgICAgICAgICBxdW90YWNoZWNrIFwKLSAgICAgICAgICAgICAgICAgICBob3N0bmFtZWQgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQ0xJQkMnLCAnZ2xpYmMnLCAnbXlob3N0bmFtZSBzeXN1c2VycycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGhpYmVybmF0ZSBcCi0gICAgICAgICAgICAgICAgICAgdGltZWRhdGVkIFwKLSAgICAgICAgICAgICAgICAgICB0aW1lc3luY2QgXAotICAgICAgICAgICAgICAgICAgIGxvY2FsZWQgXAotICAgICAgICAgICAgICAgICAgIGltYSBcCi0gICAgICAgICAgICAgICAgICAgc21hY2sgXAotICAgICAgICAgICAgICAgICAgIGxvZ2luZCBcCi0gICAgICAgICAgICAgICAgICAgZmlyc3Rib290IFwKLSAgICAgICAgICAgICAgICAgICB1dG1wIFwKLSAgICAgICAgICAgICAgICAgICBwb2xraXQgXAotIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInNlbGludXgiCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAic21hY2siCi0KLSMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgotIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCi0jIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgotUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbam91cm5hbC11cGxvYWRdID0gIi0tZW5hYmxlLWxpYmN1cmwsLS1kaXNhYmxlLWxpYmN1cmwsY3VybCIKLSMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLWVuYWJsZS1nY3J5cHQsLS1kaXNhYmxlLWdjcnlwdCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi0tZW5hYmxlLWxpYmNyeXB0c2V0dXAsLS1kaXNhYmxlLWxpYmNyeXB0c2V0dXAsY3J5cHRzZXR1cCIKLVBBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLS1lbmFibGUtbWljcm9odHRwZCwtLWRpc2FibGUtbWljcm9odHRwZCxsaWJtaWNyb2h0dHBkIgotUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLS1lbmFibGUtZWxmdXRpbHMsLS1kaXNhYmxlLWVsZnV0aWxzLGVsZnV0aWxzIgotUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLS1lbmFibGUtcmVzb2x2ZWQsLS1kaXNhYmxlLXJlc29sdmVkIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrZF0gPSAiLS1lbmFibGUtbmV0d29ya2QsLS1kaXNhYmxlLW5ldHdvcmtkIgotUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLS1lbmFibGUtbWFjaGluZWQsLS1kaXNhYmxlLW1hY2hpbmVkIgotUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi0tZW5hYmxlLWJhY2tsaWdodCwtLWRpc2FibGUtYmFja2xpZ2h0IgotUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLS1lbmFibGUtdmNvbnNvbGUsLS1kaXNhYmxlLXZjb25zb2xlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKLVBBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLS1lbmFibGUtcXVvdGFjaGVjaywtLWRpc2FibGUtcXVvdGFjaGVjayIKLVBBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItLWVuYWJsZS1ob3N0bmFtZWQsLS1kaXNhYmxlLWhvc3RuYW1lZCIKLVBBQ0tBR0VDT05GSUdbbXlob3N0bmFtZV0gPSAiLS1lbmFibGUtbXlob3N0bmFtZSwtLWRpc2FibGUtbXlob3N0bmFtZSIKLVBBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItLWVuYWJsZS1yZmtpbGwsLS1kaXNhYmxlLXJma2lsbCIKLVBBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItLWVuYWJsZS1oaWJlcm5hdGUsLS1kaXNhYmxlLWhpYmVybmF0ZSIKLVBBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItLWVuYWJsZS10aW1lZGF0ZWQsLS1kaXNhYmxlLXRpbWVkYXRlZCIKLVBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItLWVuYWJsZS10aW1lc3luY2QsLS1kaXNhYmxlLXRpbWVzeW5jZCIKLVBBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLS1lbmFibGUtbG9jYWxlZCwtLWRpc2FibGUtbG9jYWxlZCIKLVBBQ0tBR0VDT05GSUdbZWZpXSA9ICItLWVuYWJsZS1lZmksLS1kaXNhYmxlLWVmaSIKLVBBQ0tBR0VDT05GSUdbaW1hXSA9ICItLWVuYWJsZS1pbWEsLS1kaXNhYmxlLWltYSIKLVBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi0tZW5hYmxlLXNtYWNrLC0tZGlzYWJsZS1zbWFjayIKLSMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItLWVuYWJsZS1sb2dpbmQsLS1kaXNhYmxlLWxvZ2luZCIKLVBBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi0tZW5hYmxlLXN5c3VzZXJzLC0tZGlzYWJsZS1zeXN1c2VycyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItLWVuYWJsZS1maXJzdGJvb3QsLS1kaXNhYmxlLWZpcnN0Ym9vdCIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLS1lbmFibGUtcmFuZG9tc2VlZCwtLWRpc2FibGUtcmFuZG9tc2VlZCIKLVBBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItLWVuYWJsZS1iaW5mbXQsLS1kaXNhYmxlLWJpbmZtdCIKLVBBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLS1lbmFibGUtdXRtcCwtLWRpc2FibGUtdXRtcCIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCIKLSMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0Ci1QQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi0tZW5hYmxlLWltcG9ydGQsLS1kaXNhYmxlLWltcG9ydGQiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS1lbmFibGUtbGliaWRuLC0tZGlzYWJsZS1saWJpZG4sbGliaWRuIgotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0IgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsLS1kaXNhYmxlLW1hbnBhZ2VzLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLC0tZGlzYWJsZS1wYW0sbGlicGFtIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLS1lbmFibGUteGtiY29tbW9uLC0tZGlzYWJsZS14a2Jjb21tb24sbGlieGtiY29tbW9uIgotIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCi1QQUNLQUdFQ09ORklHW2lwdGNdID0gIi0tZW5hYmxlLWxpYmlwdGMsLS1kaXNhYmxlLWxpYmlwdGMsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItLWVuYWJsZS1sZGNvbmZpZywtLWRpc2FibGUtbGRjb25maWcsLCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4IgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9eWVzIGFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPXllcyAsYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8gLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtcXJlbmNvZGUsLS1kaXNhYmxlLXFyZW5jb2RlLHFyZW5jb2RlIgotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCi1QQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItLWVuYWJsZS1jb3JlZHVtcCwtLWRpc2FibGUtY29yZWR1bXAiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLWVuYWJsZS1iemlwMiwtLWRpc2FibGUtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLS1lbmFibGUtbHo0LC0tZGlzYWJsZS1sejQsbHo0IgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS1lbmFibGUteHosLS1kaXNhYmxlLXh6LHh6IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0tJTEw9JHtiYXNlX2JpbmRpcn0va2lsbCIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUVVPVEFPTj0ke3NiaW5kaXJ9L3F1b3Rhb24iCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9TVUxPR0lOPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIgotCi0jIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncwotIyBidWlsZCBzeXN0ZW0uCi1yb290cHJlZml4ID89ICIke2Jhc2VfcHJlZml4fSIKLXJvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igotcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9NT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1VNT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9LTU9EPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfS0VYRUM9JHtzYmluZGlyfS9rZXhlYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9RVU9UQUNIRUNLPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9RVU9UQU9OPSR7c2JpbmRpcn0vcXVvdGFvbiBcCi0JCQkgIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1yb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXJvb3Rob21lZGlyPSR7Uk9PVF9IT01FfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNwbGl0LXVzciBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1weXRob24gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWZpcm13YXJlLXBhdGg9L2xpYi9maXJtd2FyZSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC10ZXN0ZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgIgotIyBwZXIgdGhlIHN5c3RlbWQgUkVBRE1FLCBkZWZpbmUgVkFMR1JJTkQ9MSB0byBydW4gdW5kZXIgdmFsZ3JpbmQKLUNGTEFHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsZ3JpbmQnLCAnIC1EVkFMR1JJTkQ9MScsICcnLCBkKX0iCi0KLSMgZGlzYWJsZSBwcm9ibGVtYXRpYyBHQ0MgNS4yIG9wdGltaXphdGlvbnMgW1lPQ1RPICM4MjkxXQotRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX2FybSA9ICIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIKLQotIyBBdm9pZCBsb2dpbiBmYWlsdXJlIG9uIHFlbXVtaXBzNjQgd2hlbiBwYW0gaXMgZW5hYmxlZAotRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHM2NCA9ICIgLWZuby10cmVlLXN3aXRjaC1jb252ZXJzaW9uIC1mbm8tdHJlZS10YWlsLW1lcmdlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlleHBvcnQgTk09IiR7SE9TVF9QUkVGSVh9Z2NjLW5tIgotCWV4cG9ydCBBUj0iJHtIT1NUX1BSRUZJWH1nY2MtYXIiCi0JZXhwb3J0IFJBTkxJQj0iJHtIT1NUX1BSRUZJWH1nY2MtcmFubGliIgotCWV4cG9ydCBLTU9EPSIke2Jhc2VfYmluZGlyfS9rbW9kIgotCWlmIFsgLWQgJHtTfS91bml0cy5wcmVfc2VkIF0gOyB0aGVuCi0JCWNwIC1yICR7U30vdW5pdHMucHJlX3NlZCAke1N9L3VuaXRzCi0JZWxzZQotCQljcCAtciAke1N9L3VuaXRzICR7U30vdW5pdHMucHJlX3NlZAotCWZpCi0Jc2VkIC1pIC1lICdzOi1EVEVTVF9ESVI9XFxcIi4qXFxcIjotRFRFU1RfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3RcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotCXNlZCAtaSAtZSAnczotRENBVEFMT0dfRElSPVxcXCIuKlxcXCI6LURDQVRBTE9HX0RJUj1cXFwiJHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nXFxcIjonICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQotCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCi0JZmkKLQotCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKLQlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAotCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAotCi0JIyBDcmVhdGUgbWFjaGluZS1pZAotCSMgMjA6MTIgPCBtZXpjYWxlcm8+IGtvZW46IHlvdSBoYXZlIHRocmVlIG9wdGlvbnM6IGEpIHJ1biBzeXN0ZW1kLW1hY2hpbmUtaWQtc2V0dXAgYXQgaW5zdGFsbCB0aW1lLCBiKSBoYXZlIC8gcmVhZC1vbmx5IGFuZCBhbiBlbXB0eSBmaWxlIHRoZXJlIChmb3Igc3RhdGVsZXNzKSBhbmQgYykgYm9vdCB3aXRoIC8gd3JpdGFibGUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkCi0KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCi0Jc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAotCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCi0JIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKLQkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscwotCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9Ci0JZmkKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mCi0JZWxzZQotCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JZmkKLQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgICAgICMgaW5zdGFsbCBkYXRhIGZpbGVzIG5lZWRlZCBmb3IgdGVzdHMKLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLSAgICAgICBjcCAtcmZMICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLSAgICAgICAjIHB5dGhvbiBpcyBkaXNhYmxlZCBmb3Igc3lzdGVtZCwgdGh1cyByZW1vdmluZyB0aGVzZSBweXRob24gdGVzdGluZyBzY3JpcHRzCi0gICAgICAgcm0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC8qLnB5Ci0gICAgICAgc2VkIC1pICdzLyJ0cmVlIi8ibHMiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC91ZGV2LXRlc3QucGwKLQotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZwotICAgICAgIGluc3RhbGwgJHtTfS9jYXRhbG9nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZy8KLQotICAgICAgIGluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi0KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzCi0gICAgICAgaW5zdGFsbCAke0J9L3J1bGVzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMvCi0KLSAgICAgICAjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHRoZXJlIGZvciB1ZGV2LXRlc3QucGwgdG8gd29yay4KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vdWRldi9ydWxlcy5kCi0KLSAgICAgICAjIGluc3RhbGwgYWN0dWFsIHRlc3QgYmluYXJpZXMKLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotCi0gICAgICAgaW5zdGFsbCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKLSAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXBhbSBcCi0gICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAotICAgICR7UE59LXhvcmcteGluaXRyYyBcCi0gICAgJHtQTn0tY29udGFpbmVyIFwKLSAgICAke1BOfS1leHRyYS11dGlscyBcCi0iCi0KLVNVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCi1ERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5OycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgotVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgYmFzaCB4eiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYXNpYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSB0emRhdGEtYWZyaWNhIHR6ZGF0YS1hbnRhcmN0aWNhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtYXJjdGljIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtcGFjaWZpYyB0emRhdGEtcG9zaXgiCi0KLUZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke2xpYmRpcn0vdWRldi9ydWxlcy5kIgotCi1GSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKLQotRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKLUZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgotCi1GSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCi1SUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKLQotUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAotIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIgotCi1GSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIFwKLSAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKLSAgICAgICAgICAgICAgICAvY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgotCi1SREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSIKLVJERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCi0gICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1hZ2V0dHkgIHV0aWwtbGludXgtZnNjayBlMmZzcHJvZ3MtZTJmc2NrIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCi0gICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCi0iCi0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCi0KLVBBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKLQotUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKLQotUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgotCi1GSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAotICAgICAgICAgICAgICAiCi0KLUZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgotSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi0jIFRPRE86Ci0jIHUtYSBmb3IgcnVubGV2ZWwgYW5kIHRlbGluaXQKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2luaXRdID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3ByZXJtXyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgewotCWlmIHRlc3QgLW4gIiREIjsgdGhlbgotCQkke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSBcCi0JCQktLXJvb3QgJEQKLQkJY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi0JZWxzZQotCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLQlmaQotfQotCi1wa2dfcHJlcm1fdWRldi1od2RiICgpIHsKLQlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQotCi0jIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCi0jIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCi0KLSAgICBpbXBvcnQgcmUKLSAgICBpZiByZS5tYXRjaCgnLiptdXNsKicsIGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSkgIT0gTm9uZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIk5vdCBfeWV0XyBzdXBwb3J0ZWQgb24gbXVzbCBiYXNlZCB0YXJnZXRzIikKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNlMjdiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiCkBAIC0wLDAgKzEsNjQxIEBACityZXF1aXJlIHN5c3RlbWQuaW5jCisKK1BST1ZJREVTID0gInVkZXYiCisKK1BFID0gIjEiCisKK0RFUEVORFMgPSAia21vZCBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGFjbCByZWFkbGluZSBsaWJjYXAgbGliY2dyb3VwIHV0aWwtbGludXgiCisKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBhdXRvdG9vbHMgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBwdGVzdCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcworCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLmdpdDtwcm90b2NvbD1naXQgXAorICAgICAgICAgICBmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tSEFWRV9NWUhPU1ROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvcm0tc3RybmR1cGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKKworUEFNX1BMVUdJTlMgPSAiIFwKKyAgICBwYW0tcGx1Z2luLXVuaXggXAorICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAorICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBsZGNvbmZpZyBwYW0gc2VsaW51eCB1c3JtZXJnZScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAorICAgIGJhY2tsaWdodCBcCisgICAgYmluZm10IFwKKyAgICBmaXJzdGJvb3QgXAorICAgIGhpYmVybmF0ZSBcCisgICAgaG9zdG5hbWVkIFwKKyAgICBpbWEgXAorICAgIGxvY2FsZWQgXAorICAgIGxvZ2luZCBcCisgICAgbWFjaGluZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5ldHdvcmtkIFwKKyAgICBuc3MgXAorICAgIHBvbGtpdCBcCisgICAgcXVvdGFjaGVjayBcCisgICAgcmFuZG9tc2VlZCBcCisgICAgcmVzb2x2ZWQgXAorICAgIHNtYWNrIFwKKyAgICBzeXN1c2VycyBcCisgICAgdGltZWRhdGVkIFwKKyAgICB0aW1lc3luY2QgXAorICAgIHV0bXAgXAorICAgIHZjb25zb2xlIFwKKyAgICB4eiBcCisiCisKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICIgXAorICAgIGxvY2FsZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5zcyBcCisgICAgcmVzb2x2ZWQgXAorICAgIHNlbGludXggXAorICAgIHNtYWNrIFwKKyAgICBzeXN1c2VycyBcCisgICAgdXRtcCBcCisiCisKKyMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgorIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCisjIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItLWVuYWJsZS1iYWNrbGlnaHQsLS1kaXNhYmxlLWJhY2tsaWdodCIKK1BBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItLWVuYWJsZS1iaW5mbXQsLS1kaXNhYmxlLWJpbmZtdCIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0tZW5hYmxlLWJ6aXAyLC0tZGlzYWJsZS1iemlwMixiemlwMiIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi0tZW5hYmxlLWNvcmVkdW1wLC0tZGlzYWJsZS1jb3JlZHVtcCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLS1lbmFibGUtbGliY3J5cHRzZXR1cCwtLWRpc2FibGUtbGliY3J5cHRzZXR1cCxjcnlwdHNldHVwIgorUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLS1lbmFibGUtZWZpLC0tZGlzYWJsZS1lZmkiCitQQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGZ1dGlscywtLWRpc2FibGUtZWxmdXRpbHMsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLS1lbmFibGUtZmlyc3Rib290LC0tZGlzYWJsZS1maXJzdGJvb3QiCisjIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS1lbmFibGUtZ2NyeXB0LC0tZGlzYWJsZS1nY3J5cHQsbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi0tZW5hYmxlLWhpYmVybmF0ZSwtLWRpc2FibGUtaGliZXJuYXRlIgorUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi0tZW5hYmxlLWhvc3RuYW1lZCwtLWRpc2FibGUtaG9zdG5hbWVkIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi0tZW5hYmxlLWltYSwtLWRpc2FibGUtaW1hIgorIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKK1BBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLS1lbmFibGUtaW1wb3J0ZCwtLWRpc2FibGUtaW1wb3J0ZCIKKyMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcworUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItLWVuYWJsZS1saWJpcHRjLC0tZGlzYWJsZS1saWJpcHRjLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgorUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLS1lbmFibGUtbGRjb25maWcsLS1kaXNhYmxlLWxkY29uZmlnIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0tZW5hYmxlLWxpYmlkbiwtLWRpc2FibGUtbGliaWRuLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLS1lbmFibGUtbG9jYWxlZCwtLWRpc2FibGUtbG9jYWxlZCIKK1BBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItLWVuYWJsZS1sb2dpbmQsLS1kaXNhYmxlLWxvZ2luZCIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItLWVuYWJsZS1sejQsLS1kaXNhYmxlLWx6NCxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItLWVuYWJsZS1tYWNoaW5lZCwtLWRpc2FibGUtbWFjaGluZWQiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywtLWRpc2FibGUtbWFucGFnZXMsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLS1lbmFibGUtbWljcm9odHRwZCwtLWRpc2FibGUtbWljcm9odHRwZCxsaWJtaWNyb2h0dHBkIgorUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItLWVuYWJsZS1teWhvc3RuYW1lLC0tZGlzYWJsZS1teWhvc3RuYW1lIgorUEFDS0FHRUNPTkZJR1tuZXR3b3JrZF0gPSAiLS1lbmFibGUtbmV0d29ya2QsLS1kaXNhYmxlLW5ldHdvcmtkIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLW5zcy1zeXN0ZW1kLC0tZGlzYWJsZS1uc3Mtc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0sLS1kaXNhYmxlLXBhbSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1xcmVuY29kZSwtLWRpc2FibGUtcXJlbmNvZGUscXJlbmNvZGUiCitQQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi0tZW5hYmxlLXF1b3RhY2hlY2ssLS1kaXNhYmxlLXF1b3RhY2hlY2siCitQQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi0tZW5hYmxlLXJhbmRvbXNlZWQsLS1kaXNhYmxlLXJhbmRvbXNlZWQiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItLWVuYWJsZS1yZXNvbHZlZCwtLWRpc2FibGUtcmVzb2x2ZWQiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLS1lbmFibGUtcmZraWxsLC0tZGlzYWJsZS1yZmtpbGwiCisjIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItLWVuYWJsZS1zZWNjb21wLC0tZGlzYWJsZS1zZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLS1lbmFibGUtc21hY2ssLS1kaXNhYmxlLXNtYWNrIgorUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLS1lbmFibGUtc3lzdXNlcnMsLS1kaXNhYmxlLXN5c3VzZXJzIgorUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi0tZW5hYmxlLXRpbWVkYXRlZCwtLWRpc2FibGUtdGltZWRhdGVkIgorUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi0tZW5hYmxlLXRpbWVzeW5jZCwtLWRpc2FibGUtdGltZXN5bmNkIgorUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLS1kaXNhYmxlLXNwbGl0LXVzciwtLWVuYWJsZS1zcGxpdC11c3IiCitQQUNLQUdFQ09ORklHW3V0bXBdID0gIi0tZW5hYmxlLXV0bXAsLS1kaXNhYmxlLXV0bXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD15ZXMgYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9eWVzLGFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPW5vIGFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLS1lbmFibGUtdmNvbnNvbGUsLS1kaXNhYmxlLXZjb25zb2xlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKKyMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQorUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi0tZW5hYmxlLXhrYmNvbW1vbiwtLWRpc2FibGUteGtiY29tbW9uLGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi0tZW5hYmxlLXh6LC0tZGlzYWJsZS14eix4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorCisjIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgQUNfUFJPR19QQVRIIGluIHRoZSBzeXN0ZW1kCisjIGNvbmZpZ3VyZSBzY3JpcHQgZGV0ZWN0aW5nIGFuZCBzZXR0aW5nIHBhdGhzIGZyb20gc3lzcm9vdCBvciBob3N0LgorQ0FDSEVEX0NPTkZJR1VSRVZBUlNfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgYWNfY3ZfcGF0aF9LRVhFQz0ke3NiaW5kaXJ9L2tleGVjIFwKKyAgICBhY19jdl9wYXRoX0tJTEw9JHtiYXNlX2JpbmRpcn0va2lsbCBcCisgICAgYWNfY3ZfcGF0aF9LTU9EPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAorICAgIGFjX2N2X3BhdGhfTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgYWNfY3ZfcGF0aF9RVU9UQUNIRUNLPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCisgICAgYWNfY3ZfcGF0aF9RVU9UQU9OPSR7c2JpbmRpcn0vcXVvdGFvbiBcCisgICAgYWNfY3ZfcGF0aF9TVUxPR0lOPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICBhY19jdl9wYXRoX1VNT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCBcCisiCisKKyMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCisjIGJ1aWxkIHN5c3RlbS4KK3Jvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igorcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCityb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRob3V0LXB5dGhvbiBcCisgICAgLS13aXRoLXJvb3Rob21lZGlyPSR7Uk9PVF9IT01FfSBcCisgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCisgICAgLS13aXRoLXJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCisgICAgLS13aXRoLXN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCisgICAgLS13aXRoLWZpcm13YXJlLXBhdGg9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZSBcCisiCisKKyMgcGVyIHRoZSBzeXN0ZW1kIFJFQURNRSwgZGVmaW5lIFZBTEdSSU5EPTEgdG8gcnVuIHVuZGVyIHZhbGdyaW5kCitDRkxBR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGdyaW5kJywgJyAtRFZBTEdSSU5EPTEnLCAnJywgZCl9IgorCisjIGRpc2FibGUgcHJvYmxlbWF0aWMgR0NDIDUuMiBvcHRpbWl6YXRpb25zIFtZT0NUTyAjODI5MV0KK0ZVTExfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm0gPSAiIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiCisKK0NPTVBJTEVSX05NID89ICIke0hPU1RfUFJFRklYfWdjYy1ubSIKK0NPTVBJTEVSX0FSID89ICIke0hPU1RfUFJFRklYfWdjYy1hciIKK0NPTVBJTEVSX1JBTkxJQiA/PSAiJHtIT1NUX1BSRUZJWH1nY2MtcmFubGliIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlleHBvcnQgTk09IiR7Q09NUElMRVJfTk19IgorCWV4cG9ydCBBUj0iJHtDT01QSUxFUl9BUn0iCisJZXhwb3J0IFJBTkxJQj0iJHtDT01QSUxFUl9SQU5MSUJ9IgorCWV4cG9ydCBLTU9EPSIke2Jhc2VfYmluZGlyfS9rbW9kIgorCWlmIFsgLWQgJHtTfS91bml0cy5wcmVfc2VkIF0gOyB0aGVuCisJCWNwIC1yICR7U30vdW5pdHMucHJlX3NlZCAke1N9L3VuaXRzCisJZWxzZQorCQljcCAtciAke1N9L3VuaXRzICR7U30vdW5pdHMucHJlX3NlZAorCWZpCisJc2VkIC1pIC1lICdzOi1EVEVTVF9ESVI9XFxcIi4qXFxcIjotRFRFU1RfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3RcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQorCXNlZCAtaSAtZSAnczotRENBVEFMT0dfRElSPVxcXCIuKlxcXCI6LURDQVRBTE9HX0RJUj1cXFwiJHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nXFxcIjonICR7U30vTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQorCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCisJZmkKKworCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKKwlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAorCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAorCisJIyBDcmVhdGUgbWFjaGluZS1pZAorCSMgMjA6MTIgPCBtZXpjYWxlcm8+IGtvZW46IHlvdSBoYXZlIHRocmVlIG9wdGlvbnM6IGEpIHJ1biBzeXN0ZW1kLW1hY2hpbmUtaWQtc2V0dXAgYXQgaW5zdGFsbCB0aW1lLCBiKSBoYXZlIC8gcmVhZC1vbmx5IGFuZCBhbiBlbXB0eSBmaWxlIHRoZXJlIChmb3Igc3RhdGVsZXNzKSBhbmQgYykgYm9vdCB3aXRoIC8gd3JpdGFibGUKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL3VkZXYvdWRldi5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJCXNlZCAtaSBzJUBVREVWREAlJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCWZpCisKKwljaG93biByb290OnN5c3RlbWQtam91cm5hbCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwKKworCSMgRGVsZXRlIGpvdXJuYWwgUkVBRE1FLCBhcyBsb2cgY2FuIGJlIHN5bWxpbmtlZCBpbnNpZGUgdm9sYXRpbGUuCisJcm0gLWYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9SRUFETUUKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cworCisJIyBDcmVhdGUgc3ltbGlua3MgZm9yIHN5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V0bXAnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlmaQorCisJIyBFbmFibGUgam91cm5hbCB0byBmb3J3YXJkIG1lc3NhZ2UgdG8gc3lzbG9nIGRhZW1vbgorCXNlZCAtaSAtZSAncy8uKkZvcndhcmRUb1N5c2xvZy4qL0ZvcndhcmRUb1N5c2xvZz15ZXMvJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKwkjIFNldCB0aGUgbWF4aW1pdW0gc2l6ZSBvZiBydW50aW1lIGpvdXJuYWwgdG8gNjRNIGFzIGRlZmF1bHQKKwlzZWQgLWkgLWUgJ3MvLipSdW50aW1lTWF4VXNlLiovUnVudGltZU1heFVzZT02NE0vJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKworCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0CisJIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKKwlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgorCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQorCWZpCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZWxzZQorCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWZpCisJaW5zdGFsbCAtRG0gMDc1NSAke1N9L3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLXN5c3YtaW5zdGFsbAorCisJIyBJZiBwb2xraXQgaXMgc2V0dXAgZml4dXAgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWlmIFsgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZCBdOyB0aGVuCisJCQljaG1vZCA3MDAgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQkJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJZmkKKwlmaQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwkjIGluc3RhbGwgZGF0YSBmaWxlcyBuZWVkZWQgZm9yIHRlc3RzCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0CisJY3AgLXJmTCAke1N9L3Rlc3QvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0CisJIyBweXRob24gaXMgZGlzYWJsZWQgZm9yIHN5c3RlbWQsIHRodXMgcmVtb3ZpbmcgdGhlc2UgcHl0aG9uIHRlc3Rpbmcgc2NyaXB0cworCXJtICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QvKi5weQorCXNlZCAtaSAncy8idHJlZSIvImxzIi8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QvdWRldi10ZXN0LnBsCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2cKKwlpbnN0YWxsICR7U30vY2F0YWxvZy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2cvCisKKwlpbnN0YWxsIC1EICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2J1aWxkLWF1eC90ZXN0LWRyaXZlcgorCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcworCWluc3RhbGwgJHtCfS9ydWxlcy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzLworCisJIyBUaGlzIGRpcmVjdG9yeSBuZWVkcyB0byBiZSB0aGVyZSBmb3IgdWRldi10ZXN0LnBsIHRvIHdvcmsuCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3VkZXYvcnVsZXMuZAorCisJIyBpbnN0YWxsIGFjdHVhbCB0ZXN0IGJpbmFyaWVzCisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworCWluc3RhbGwgLW0gMDc1NSAke0J9Ly5saWJzL3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKworCWluc3RhbGwgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7CisgICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIikKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CitQQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZHxuc3MpLioiCisKK1BBQ0tBR0VTID0rICJcCisgICAgJHtQTn0tZ3VpIFwKKyAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCisgICAgJHtQTn0taW5pdHJhbWZzIFwKKyAgICAke1BOfS1hbmFseXplIFwKKyAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCisgICAgJHtQTn0tcnBtLW1hY3JvcyBcCisgICAgJHtQTn0tYmluZm10IFwKKyAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCisgICAgJHtQTn0teG9yZy14aW5pdHJjIFwKKyAgICAke1BOfS1jb250YWluZXIgXAorICAgICR7UE59LWV4dHJhLXV0aWxzIFwKKyIKKworU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKK0RFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMiCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXk7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQ7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIGxvY2s7IC1yIHN5c3RlbWQtam91cm5hbCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgKz0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHk7IgorCitGSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCisKK0ZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKK1JERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImdhd2sgbWFrZSBwZXJsIGJhc2ggeHogXAorICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YSB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFzaWEgXAorICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLWFmcmljYSB0emRhdGEtYW50YXJjdGljYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLXBhY2lmaWMgdHpkYXRhLXBvc2l4IgorCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtsaWJkaXJ9L3VkZXYvcnVsZXMuZCIKKworRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCisKK0ZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCitGSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0teG9yZy14aW5pdHJjID0gIiR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIgorCitGSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKKworRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAorICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCisKK1JSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgorCitGSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMtb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1yZW1vdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcHVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC1uc3Bhd24uY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19teW1hY2hpbmVzLnNvLjIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCisiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCisKK0ZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC8qIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCisgICAgICAgICAgICAgICAgL2Nncm91cCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKKyAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lZGF0ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm5ldHdvcmsxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5yZXNvbHZlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmhvc3RuYW1lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9naW4xLmNvbmYgXAorICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAorICAgICAgICAgICAgICAgICAgICAgIHV0aWwtbGludXgtZnNjayBlMmZzcHJvZ3MtZTJmc2NrIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCisgICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCisiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCisKK1BBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKKworUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKKworUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgorCitGSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAorICAgICAgICAgICAgICAiCisKK0ZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgorSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCisjIFRPRE86CisjIHUtYSBmb3IgcnVubGV2ZWwgYW5kIHRlbGluaXQKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCByZXNvbHYtY29uZiIKKworQUxURVJOQVRJVkVfVEFSR0VUW2luaXRdID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCitBTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAorCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitwa2dfcHJlcm1fJHtQTn0gKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAorCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgorcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7CisJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisJCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKKwkJCS0tcm9vdCAkRAorCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKwllbHNlCisJCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorCWZpCit9CisKK3BrZ19wcmVybV91ZGV2LWh3ZGIgKCkgeworCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorcHl0aG9uICgpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiL3N0YXJ0X2dldHR5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWIvc3RhcnRfZ2V0dHkKaW5kZXggZTNkMDUyYS4uZTE1YWUzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWIvc3RhcnRfZ2V0dHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWIvc3RhcnRfZ2V0dHkKQEAgLTEsNSArMSw0MyBAQAogIyEvYmluL3NoCi1pZiBbIC1jIC9kZXYvJDIgXQotdGhlbiAKLQkvc2Jpbi9nZXR0eSAtTCAkMSAkMiAkMwotZmkKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHNldCB1cCB0aGUgc2VyaWFsIGNvbnNvbGUocykgb24gc3RhcnR1cC4KKyMgVGhlIHZhcmlhYmxlIFNFUklBTF9DT05TT0xFUyBjYW4gYmUgc2V0IGluIG1ldGEvY29uZi9tYWNoaW5lLyouY29uZi4KKyMgU2NyaXB0IGVuaGFuY2VtZW50IGhhcyBiZWVuIGRvbmUgYmFzZWQgb24gQnVnIFlPQ1RPICMxMDg0NC4KKyMgTW9zdCBvZiB0aGUgaW5mb3JtYXRpb24gaXMgcmV0cmlldmVkIGZyb20gL3Byb2MgdmlydHVhbCBmaWxlc3lzdGVtIGNvbnRhaW5pbmcKKyMgYWxsIHRoZSBydW50aW1lIHN5c3RlbSBpbmZvcm1hdGlvbiAoZWcuIHN5c3RlbSBtZW1vcnksIGRldmljZSBtb3VudCwgZXRjKS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBHZXQgYWN0aXZlIHNlcmlhbCBmaWxlbmFtZS4KK2FjdGl2ZV9zZXJpYWw9JChncmVwICJzZXJpYWwiIC9wcm9jL3R0eS9kcml2ZXJzIHwgY3V0IC1kLyAtZjEgfCBzZWQgInMvICokLy8iKQorCisjIFJlcGhyYXNlIGlucHV0IHBhcmFtZXRlciBmcm9tIHR0eVMgdGFyZ2V0IGluZGV4ICh0dHlTMSwgdHR5UzIsIHR0eUFNQTAsIGV0YykuCitydW50aW1lX3R0eT0kKGVjaG8gJDIgfCBncmVwIC1vaCAnWzAtOV0nKQorCisjIEJhY2t1cCAkSUZTLgorREVGQVVMVF9JRlM9JElGUworIyBDdXN0b21pemUgSW50ZXJuYWwgRmllbGQgU2VwYXJhdG9yLgorSUZTPSIkKHByaW50ZiAnXG5cdCcpIgorCitmb3IgbGluZSBpbiAkYWN0aXZlX3NlcmlhbDsgZG8KKwkjIENoZWNrIHdlIGhhdmUgdGhlIGZpbGUgY29udGFpbmluZyBjdXJyZW50IGFjdGl2ZSBzZXJpYWwgdGFyZ2V0IGluZGV4LgorCWlmIFsgLWUgIi9wcm9jL3R0eS9kcml2ZXIvJGxpbmUiIF0KKyAgICAgICAgdGhlbgorCQkjIFJlbW92ZSBhbGwgdW5rbm93biBlbnRyaWVzIGFuZCBkaXNjYXJkIHRoZSBmaXJzdCBsaW5lIChkZXNjKS4KKwkJYWN0aXZldHR5PSQoZ3JlcCAtdiAidW5rbm93biIgIi9wcm9jL3R0eS9kcml2ZXIvJGxpbmUiIFwKKwkJCSAgICB8IHRhaWwgLW4gKzIgfCBncmVwIC1vaCAiXlxzKlxTKlswLTldIikKKwkJZm9yIGFjdGl2ZSBpbiAkYWN0aXZldHR5OyBkbworCQkJIyBJZiBpbmRleGVzIGRvIG1hdGNoIHRoZW4gZW5hYmxlIHRoZSBzZXJpYWwgY29uc29sZS4KKwkJCWlmIFsgJGFjdGl2ZSAtZXEgJHJ1bnRpbWVfdHR5IF0KKwkJCXRoZW4KKwkJCQlpZiBbIC1jIC9kZXYvJDIgXQorCQkJCXRoZW4KKwkJCQkgICAgL3NiaW4vZ2V0dHkgLUwgJDEgJDIgJDMKKwkJCQlmaQorCQkJCWJyZWFrCisJCQlmaQorCQlkb25lCisJZmkKK2RvbmUKKworIyBSZXN0b3JlICRJRlMuCitJRlM9JERFRkFVTFRfSUZTCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCmluZGV4IDg4NDg1N2EuLjIyYTBlY2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCkBAIC02OCw3ICs2OCw3IEBACiBGSUxFU19zeXN2aW5pdC1waWRvZiA9ICIke2Jhc2VfYmluZGlyfS9waWRvZi5zeXN2aW5pdCAke2Jhc2Vfc2JpbmRpcn0va2lsbGFsbDUiCiBGSUxFU19zeXN2aW5pdC1zdWxvZ2luID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luLnN5c3Zpbml0IgogCi1SREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdHNjcmlwdHMtZnVuY3Rpb25zIgorUkRFUEVORFNfJHtQTn0gKz0gInN5c3Zpbml0LXBpZG9mIGluaXRkLWZ1bmN0aW9ucyIKIAogQ0ZMQUdTX3ByZXBlbmQgPSAiLURfR05VX1NPVVJDRSAiCiBleHBvcnQgTENSWVBUID0gIi1sY3J5cHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi9pbml0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvaW5pdAppbmRleCAwYWIwMjhiLi4wNDU1YWRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi9pbml0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L2luaXQKQEAgLTE0LDI1ICsxNCw3IEBACiBbIC1kIC9zeXMvY2xhc3MgXSB8fCBleGl0IDEKIFsgLXIgL3Byb2MvbW91bnRzIF0gfHwgZXhpdCAxCiBbIC14IEBVREVWREAgXSB8fCBleGl0IDEKLVNZU0NPTkZfQ0FDSEVEPSIvZXRjL3VkZXYvY2FjaGUuZGF0YSIKLVNZU0NPTkZfVE1QPSIvZGV2L3NobS91ZGV2LmNhY2hlIgotREVWQ0FDSEVfUkVHRU49Ii9kZXYvc2htL3VkZXYtcmVnZW4iICMgY3JlYXRlIHRvIHJlcXVlc3QgY2FjaGUgcmVnZW4KIAotIyBBIGxpc3Qgb2YgZmlsZXMgd2hpY2ggYXJlIHVzZWQgYXMgYSBjcml0ZXJpYSB0byBqdWRnZSB3aGV0aGVyIHRoZSB1ZGV2IGNhY2hlIGNvdWxkIGJlIHJldXNlZC4KLUNNUF9GSUxFX0xJU1Q9Ii9wcm9jL3ZlcnNpb24gL3Byb2MvY21kbGluZSAvcHJvYy9kZXZpY2VzIgotWyAtZiAvcHJvYy9hdGFncyBdICYmIENNUF9GSUxFX0xJU1Q9IiRDTVBfRklMRV9MSVNUIC9wcm9jL2F0YWdzIgotCi0jIExpc3Qgb2YgZmlsZXMgd2hvc2UgbWV0YWRhdGEgKHNpemUvbXRpbWUvbmFtZSkgd2lsbCBiZSBpbmNsdWRlZCBpbiBjYWNoZWQKLSMgc3lzdGVtIHN0YXRlLgotTUVUQV9GSUxFX0xJU1Q9ImxpYi91ZGV2L3J1bGVzLmQvKiBldGMvdWRldi9ydWxlcy5kLyoiCi0KLSMgQ29tbWFuZCB0byBjb21wdXRlIHN5c3RlbSBjb25maWd1cmF0aW9uLgotc3lzY29uZl9jbWQgKCkgewotCWNhdCAtLSAkQ01QX0ZJTEVfTElTVAotCXN0YXQgLWMgJyVzICVZICVuJyAtLSAkTUVUQV9GSUxFX0xJU1QgfCBhd2sgLUYvICd7cHJpbnQgJDEgIiAiICRORjt9JwotfQotCi1bIC1mIC9ldGMvZGVmYXVsdC91ZGV2LWNhY2hlIF0gJiYgLiAvZXRjL2RlZmF1bHQvdWRldi1jYWNoZQogWyAtZiAvZXRjL3VkZXYvdWRldi5jb25mIF0gJiYgLiAvZXRjL3VkZXYvdWRldi5jb25mCiBbIC1mIC9ldGMvZGVmYXVsdC9yY1MgXSAmJiAuIC9ldGMvZGVmYXVsdC9yY1MKIApAQCAtNjYsMzcgKzQ4LDYgQEAKICAgICAjIC92YXIvdm9sYXRpbGUvdG1wIGRpcmVjdG9yeSB0byBiZSBhdmFpbGFibGUuCiAgICAgbWtkaXIgLW0gMTc3NyAtcCAvdmFyL3ZvbGF0aWxlL3RtcAogCi0gICAgIyBDYWNoZSBoYW5kbGluZy4KLSAgICBpZiBbICIkREVWQ0FDSEUiICE9ICIiIF07IHRoZW4KLSAgICAgICAgICAgIGlmIFsgLWUgJERFVkNBQ0hFIF07IHRoZW4KLQkJICAgIHN5c2NvbmZfY21kID4gIiRTWVNDT05GX1RNUCIKLQkJICAgIGlmIGNtcCAkU1lTQ09ORl9DQUNIRUQgJFNZU0NPTkZfVE1QID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgeG1mICRERVZDQUNIRSAtQyAvIC1tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90X2ZpcnN0X2Jvb3Q9MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgIiRWRVJCT1NFIiAhPSAibm8iIF0gJiYgZWNobyAidWRldjogdXNpbmcgY2FjaGUgZmlsZSAkREVWQ0FDSEUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAtZSAkU1lTQ09ORl9UTVAgXSAmJiBybSAtZiAiJFNZU0NPTkZfVE1QIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgLWUgIiRERVZDQUNIRV9SRUdFTiIgXSAmJiBybSAtZiAiJERFVkNBQ0hFX1JFR0VOIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0JCQkgICAgIyBPdXRwdXQgZGV0YWlsZWQgcmVhc29uIHdoeSB0aGUgY2FjaGVkIC9kZXYgaXMgbm90IHVzZWQKLQkJCSAgICBjYXQgPDxFT0YKLXVkZXY6IE5vdCB1c2luZyB1ZGV2IGNhY2hlIGJlY2F1c2Ugb2YgY2hhbmdlcyBkZXRlY3RlZCBpbiB0aGUgZm9sbG93aW5nIGZpbGVzOgotdWRldjogICAgICRDTVBfRklMRV9MSVNUCi11ZGV2OiAgICAgJE1FVEFfRklMRV9MSVNUCi11ZGV2OiBUaGUgdWRldiBjYWNoZSB3aWxsIGJlIHJlZ2VuZXJhdGVkLiBUbyBpZGVudGlmeSB0aGUgZGV0ZWN0ZWQgY2hhbmdlcywKLXVkZXY6IGNvbXBhcmUgdGhlIGNhY2hlZCBzeXNjb25mIGF0ICAgJFNZU0NPTkZfQ0FDSEVECi11ZGV2OiBhZ2FpbnN0IHRoZSBjdXJyZW50IHN5c2NvbmYgYXQgICRTWVNDT05GX1RNUAotRU9GCi0JCQkgICAgdG91Y2ggIiRERVZDQUNIRV9SRUdFTiIKLSAgICAgICAgICAgICAgICAgICAgZmkKLQkgICAgZWxzZQotCQkgICAgaWYgWyAiJFJPT1RGU19SRUFEX09OTFkiICE9ICJ5ZXMiIF07IHRoZW4KLQkJCSAgICAjIElmIHJvb3RmcyBpcyBub3QgcmVhZC1vbmx5LCBpdCdzIHBvc3NpYmxlIHRoYXQgYSBuZXcgdWRldiBjYWNoZSB3b3VsZCBiZSBnZW5lcmF0ZWQ7Ci0JCQkgICAgIyBvdGhlcndpc2UsIHdlIGRvIG5vdCBib3RoZXIgdG8gcmVhZCBmaWxlcy4KLQkJCSAgICB0b3VjaCAiJERFVkNBQ0hFX1JFR0VOIgotCQkgICAgZmkKLSAgICAgICAgICAgIGZpCi0gICAgZmkKLQogICAgICMgbWFrZV9leHRyYV9ub2RlcwogICAgIGtpbGxfdWRldmQgPiAiL2Rldi9udWxsIiAyPiYxCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L3VkZXYtY2FjaGUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi91ZGV2LWNhY2hlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2ZmZjFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L3VkZXYtY2FjaGUKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0jIS9iaW4vc2ggLWUKLQotIyMjIEJFR0lOIElOSVQgSU5GTwotIyBQcm92aWRlczogICAgICAgICAgdWRldi1jYWNoZQotIyBSZXF1aXJlZC1TdGFydDogICAgbW91bnRhbGwKLSMgUmVxdWlyZWQtU3RvcDoKLSMgRGVmYXVsdC1TdGFydDogICAgIFMKLSMgRGVmYXVsdC1TdG9wOgotIyBTaG9ydC1EZXNjcmlwdGlvbjogY2FjaGUgL2RldiB0byBzcGVlZHVwIHRoZSB1ZGV2IG5leHQgYm9vdAotIyMjIEVORCBJTklUIElORk8KLQotZXhwb3J0IFRaPS9ldGMvbG9jYWx0aW1lCi0KLVsgLXIgL3Byb2MvbW91bnRzIF0gfHwgZXhpdCAxCi1bIC14IEBVREVWREAgXSB8fCBleGl0IDEKLVsgLWQgL3N5cy9jbGFzcyBdIHx8IGV4aXQgMQotCi1bIC1mIC9ldGMvZGVmYXVsdC9yY1MgXSAmJiAuIC9ldGMvZGVmYXVsdC9yY1MKLURFVkNBQ0hFX1RNUD0iL2Rldi9zaG0vdWRldi1jYWNoZS10bXAudGFyIgotU1lTQ09ORl9DQUNIRUQ9Ii9ldGMvdWRldi9jYWNoZS5kYXRhIgotU1lTQ09ORl9UTVA9Ii9kZXYvc2htL3VkZXYuY2FjaGUiCi1ERVZDQUNIRV9SRUdFTj0iL2Rldi9zaG0vdWRldi1yZWdlbiIgIyBjcmVhdGUgdG8gcmVxdWVzdCBjYWNoZSByZWdlbgotCi0jIEEgbGlzdCBvZiBmaWxlcyB3aGljaCBhcmUgdXNlZCBhcyBhIGNyaXRlcmlhIHRvIGp1ZGdlIHdoZXRoZXIgdGhlIHVkZXYgY2FjaGUgY291bGQgYmUgcmV1c2VkLgotQ01QX0ZJTEVfTElTVD0iL3Byb2MvdmVyc2lvbiAvcHJvYy9jbWRsaW5lIC9wcm9jL2RldmljZXMiCi1bIC1mIC9wcm9jL2F0YWdzIF0gJiYgQ01QX0ZJTEVfTElTVD0iJENNUF9GSUxFX0xJU1QgL3Byb2MvYXRhZ3MiCi0KLSMgTGlzdCBvZiBmaWxlcyB3aG9zZSBtZXRhZGF0YSAoc2l6ZS9tdGltZS9uYW1lKSB3aWxsIGJlIGluY2x1ZGVkIGluIGNhY2hlZAotIyBzeXN0ZW0gc3RhdGUuCi1NRVRBX0ZJTEVfTElTVD0ibGliL3VkZXYvcnVsZXMuZC8qIGV0Yy91ZGV2L3J1bGVzLmQvKiIKLQotIyBDb21tYW5kIHRvIGNvbXB1dGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCi1zeXNjb25mX2NtZCAoKSB7Ci0JY2F0IC0tICRDTVBfRklMRV9MSVNUCi0Jc3RhdCAtYyAnJXMgJVkgJW4nIC0tICRNRVRBX0ZJTEVfTElTVCB8IGF3ayAtRi8gJ3twcmludCAkMSAiICIgJE5GO30nCi19Ci0KLVsgLWYgL2V0Yy9kZWZhdWx0L3VkZXYtY2FjaGUgXSAmJiAuIC9ldGMvZGVmYXVsdC91ZGV2LWNhY2hlCi0KLWlmIFsgIiRST09URlNfUkVBRF9PTkxZIiA9ICJ5ZXMiIF07IHRoZW4KLSAgICBbICIkVkVSQk9TRSIgIT0gIm5vIiBdICYmIGVjaG8gInVkZXYtY2FjaGU6IHJlYWQtb25seSByb290ZnMsIHNraXAgZ2VuZXJhdGluZyB1ZGV2LWNhY2hlIgotICAgIGV4aXQgMAotZmkKLQotWyAiJERFVkNBQ0hFIiAhPSAiIiBdIHx8IGV4aXQgMAotWyAiJHtWRVJCT1NFfSIgPT0gIm5vIiBdIHx8IGVjaG8gLW4gInVkZXYtY2FjaGU6IGNoZWNraW5nIGZvciAke0RFVkNBQ0hFX1JFR0VOfS4uLiAiCi1pZiAhIFsgLWUgIiRERVZDQUNIRV9SRUdFTiIgXTsgdGhlbgotCVsgIiR7VkVSQk9TRX0iID09ICJubyIgXSB8fCBlY2hvICJub3QgZm91bmQuIgotCWV4aXQgMAotZmkKLVsgIiR7VkVSQk9TRX0iID09ICJubyIgXSB8fCBlY2hvICJmb3VuZC4iCi1lY2hvICJQb3B1bGF0aW5nIGRldiBjYWNoZSIKLQotZXJyX2NsZWFudXAgKCkgewotICAgICAgICBlY2hvICJ1ZGV2LWNhY2hlOiB1cGRhdGUgZmFpbGVkISIKLSAgICAgICAgdWRldmFkbSBjb250cm9sIC0tc3RhcnQtZXhlYy1xdWV1ZQotCXJtIC1mIC0tICIkU1lTQ09ORl9UTVAiICIkREVWQ0FDSEVfVE1QIiAiJERFVkNBQ0hFIiAiJFNZU0NPTkZfQ0FDSEVEIgotfQotCi0oCi0Jc2V0IC1lCi0JdHJhcCAnZXJyX2NsZWFudXAnIEVYSVQKLQl1ZGV2YWRtIGNvbnRyb2wgLS1zdG9wLWV4ZWMtcXVldWUKLQlzeXNjb25mX2NtZCA+ICIkU1lTQ09ORl9UTVAiCi0JZmluZCAvZGV2IC14ZGV2IFwoIC10eXBlIGIgLW8gLXR5cGUgYyAtbyAtdHlwZSBsIFwpIHwgY3V0IC1jIDItIFwKLQkJfCB4YXJncyB0YXIgY2YgIiR7REVWQ0FDSEVfVE1QfSIKLQlnemlwIDwgIiR7REVWQ0FDSEVfVE1QfSIgPiAiJERFVkNBQ0hFIgotCXJtIC1mICIke0RFVkNBQ0hFX1RNUH0iCi0JbXYgIiRTWVNDT05GX1RNUCIgIiRTWVNDT05GX0NBQ0hFRCIKLQl1ZGV2YWRtIGNvbnRyb2wgLS1zdGFydC1leGVjLXF1ZXVlCi0Jcm0gLWYgIiRERVZDQUNIRV9SRUdFTiIKLQl0cmFwIC0gRVhJVAotKSAmCi0KLWV4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZS5kZWZhdWx0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZS5kZWZhdWx0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2I3MzI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L3VkZXYtY2FjaGUuZGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyBEZWZhdWx0IGZvciAvZXRjL2luaXQuZC91ZGV2Ci0KLSMgQ29tbWVudCB0aGlzIG91dCB0byBkaXNhYmxlIGRldmljZSBjYWNoZQotREVWQ0FDSEU9Ii9ldGMvdWRldi1jYWNoZS50YXIuZ3oiCi1QUk9CRV9QTEFURk9STV9CVVM9InllcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZmI1NDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgotTElDRU5TRSA9ICJHUEx2Mi4wKyAmIExHUEwtMi4xKyIKLUxJQ0VOU0VfbGlidWRldiA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGttb2QgbGlieHNsdC1uYXRpdmUgdXRpbC1saW51eCIKLQotUFJPVklERVMgPSAidWRldiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vLyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vdWRldi1jYWNoZSBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LWNhY2hlLmRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCi0iCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dlbnRvby9ldWRldi9yZWxlYXNlcyIKLQotU1JDX1VSSVttZDVzdW1dID0gImEyYWFlMTZiYzQzMmVhYzBlNzFjMTI2N2MzODRlMjk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4ZjUzMGMxNTQwNzUwZTZkYWE5MWI1ZWFlZWJmODhlNzYxZTZmMGM4NjUxNWMxYzI4ZWVkZmQ4NzFmMDI3YzYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKLSAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKLVBBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2Ci0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdWRldi1jYWNoZSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZQotCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdWRldi1jYWNoZS5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdWRldi1jYWNoZQotCi0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9jYWNoZS5kYXRhCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcwotCi0JIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCi0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKLQotCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCi19Ci0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiZXVkZXYgdWRldi1jYWNoZSIKLUlOSVRTQ1JJUFRfTkFNRV9ldWRldiA9ICJ1ZGV2IgotSU5JVFNDUklQVF9QQVJBTVNfZXVkZXYgPSAic3RhcnQgMDQgUyAuIgotSU5JVFNDUklQVF9OQU1FX3VkZXYtY2FjaGUgPSAidWRldi1jYWNoZSIKLUlOSVRTQ1JJUFRfUEFSQU1TX3VkZXYtY2FjaGUgPSAic3RhcnQgMzYgUyAuIgotCi1QQUNLQUdFUyA9KyAibGlidWRldiIKLVBBQ0tBR0VTID0rICJ1ZGV2LWNhY2hlIgotUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCi0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtiYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgotRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCi1GSUxFU191ZGV2LWNhY2hlID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYtY2FjaGUgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3VkZXYtY2FjaGUiCi1GSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCi0KLVJERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAidWRldi1jYWNoZSIKLQotUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKLVJQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCi0KLXB5dGhvbiAoKSB7Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgewotICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgotICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgLS1yb290ICRECi0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotICAgIGVsc2UKLSAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCi0gICAgZmkKLX0KLQotcGtnX3ByZXJtX2V1ZGV2LWh3ZGIgKCkgewotICAgICAgICBybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmZiMjNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIKQEAgLTAsMCArMSw5NiBAQAorU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgorTElDRU5TRSA9ICJHUEx2Mi4wKyAmIExHUEwtMi4xKyIKK0xJQ0VOU0VfbGlidWRldiA9ICJMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGttb2QgbGlieHNsdC1uYXRpdmUgdXRpbC1saW51eCIKKworUFJPVklERVMgPSAidWRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vZGV2LmdlbnRvby5vcmcvfmJsdWVuZXNzLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dlbnRvby9ldWRldi9yZWxlYXNlcyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQxZTE5YjcwNDYyNjkyZmVmZDA3MmEzZjM4ODE4YjZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlNGM1NmVjMmZjMTg1NGFmZDBhMzFmM2FmZmE0OGY5MjJjNjJkNDBlZTEyYTBjMWE0YjRmMTUyZWY1YjBmNjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisJc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcworCisJIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKKworCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lCisJc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCQkke0J9L3NyYy91ZGV2L2tleWJvYXJkLWtleXMtZnJvbS1uYW1lLmgKK30KKworSU5JVFNDUklQVF9OQU1FID0gInVkZXYiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNCBTIC4iCisKK1BBQ0tBR0VTID0rICJsaWJ1ZGV2IgorUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCisKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtiYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgorRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCitGSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCisKK1JERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgorCitSUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgorUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKKworcHl0aG9uICgpIHsKKyAgICBpZiBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIGluIERJU1RST19GRUFUVVJFUyIpCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCisgICAgZWxzZQorICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKyAgICBmaQorfQorCitwa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7CisgICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIKaW5kZXggYWUxMjU1MC4uNDNhMWNmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRXh0cmEgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKIERFU0NSSVBUSU9OID0gIkV4dHJhIG1hY2hpbmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdWRldiwgc3BlY2lmaWNhbGx5IGJsYWNrbGlzdCBpbmZvcm1hdGlvbi4iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKaW5kZXggM2I5NjVjNS4uNmZjNmY2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJtYW5hZ2Ugc3ltbGlua3MgaW4gL2V0Yy9yY04uZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL3BoaWxiL3VwZGF0ZS1yYy5kLyIKIERFU0NSSVBUSU9OID0gInVwZGF0ZS1yYy5kIGlzIGEgdXRpbGl0eSB0aGF0IGFsbG93cyB0aGUgbWFuYWdlbWVudCBvZiBzeW1saW5rcyB0byB0aGUgaW5pdHNjcmlwdHMgaW4gdGhlIC9ldGMvcmNOLmQgZGlyZWN0b3J5IHN0cnVjdHVyZS4iCiBTRUNUSU9OID0gImJhc2UiCiAKQEAgLTE1LDYgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoIFwKICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCA2MzMwMmE5Li5mMGZmZDI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQSBzdWl0ZSBvZiBiYXNpYyBzeXN0ZW0gYWRtaW5pc3RyYXRpb24gdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3VzZXJ3ZWIua2VybmVsLm9yZy9+a3phay91dGlsLWxpbnV4LyIKIERFU0NSSVBUSU9OID0gIlV0aWwtbGludXggaW5jbHVkZXMgYSBzdWl0ZSBvZiBiYXNpYyBzeXN0ZW0gYWRtaW5pc3RyYXRpb24gdXRpbGl0aWVzIFwKIGNvbW1vbmx5IGZvdW5kIG9uIG1vc3QgTGludXggc3lzdGVtcy4gIFNvbWUgb2YgdGhlIG1vcmUgaW1wb3J0YW50IHV0aWxpdGllcyBpbmNsdWRlIFwKIGRpc2sgcGFydGl0aW9uaW5nLCBrZXJuZWwgbWVzc2FnZSBtYW5hZ2VtZW50LCBmaWxlc3lzdGVtIGNyZWF0aW9uLCBhbmQgc3lzdGVtIGxvZ2luLiIKQEAgLTMzLDkgKzM0LDEwIEBACiAgICAgICAgICAgICAgdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tY29va2llIHV0aWwtbGludXgtcmVzZXQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtbHNibGsgdXRpbC1saW51eC1ta2ZzLmNyYW1mcyB1dGlsLWxpbnV4LWZzdHJpbSBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1wYXJ0eCB1dGlsLWxpbnV4LWh3Y2xvY2sgdXRpbC1saW51eC1tb3VudHBvaW50IFwKLSAgICAgICAgICAgICB1dGlsLWxpbnV4LWZpbmRmcyB1dGlsLWxpbnV4LWdldG9wdCB1dGlsLWxpbnV4LXN1bG9naW4gdXRpbC1saW51eC1wcmxpbWl0IgorICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQgXAorICAgICAgICAgICAgIHV0aWwtbGludXgtaW9uaWNlIHV0aWwtbGludXgtc3dpdGNoLXJvb3QiCiBQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHlsaWJtb3VudCcsICd1dGlsLWxpbnV4LXB5bGlibW91bnQnLCAnJywgZCl9IgotUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3V0aWwtbGludXgtcnVudXNlcicsICcnLCBkKX0iCitQQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyIHV0aWwtbGludXgtc3UnLCAnJywgZCl9IgogCiBQQUNLQUdFU19EWU5BTUlDID0gIl51dGlsLWxpbnV4LWxpYi4qIgogCkBAIC05MSw2ICs5Myw5IEBACiBGSUxFU191dGlsLWxpbnV4LWdldG9wdCA9ICIke2Jhc2VfYmluZGlyfS9nZXRvcHQuJHtCUE59IgogRklMRVNfdXRpbC1saW51eC1ydW51c2VyID0gIiR7c2JpbmRpcn0vcnVudXNlciIKIEZJTEVTX3V0aWwtbGludXgtcHJsaW1pdCA9ICIke2JpbmRpcn0vcHJsaW1pdCIKK0ZJTEVTX3V0aWwtbGludXgtaW9uaWNlID0gIiR7YmluZGlyfS9pb25pY2UiCitGSUxFU191dGlsLWxpbnV4LXN1ID0gIiR7YmluZGlyfS9zdS51dGlsLWxpbnV4ICR7c3lzY29uZmRpcn0vcGFtLmQvc3UtbCIKK0NPTkZGSUxFU191dGlsLWxpbnV4LXN1ID0gIiR7c3lzY29uZmRpcn0vcGFtLmQvc3UtbCIKIAogRklMRVNfdXRpbC1saW51eC1weWxpYm1vdW50ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2xpYm1vdW50L3B5bGlibW91bnQuc28gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2xpYm1vdW50L19faW5pdF9fLiogXApAQCAtMTA3LDYgKzExMiw4IEBACiBGSUxFU191dGlsLWxpbnV4LXN1bG9naW4gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4qIgogRklMRVNfdXRpbC1saW51eC1tb3VudHBvaW50ID0gIiR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQuJHtCUE59IgogCitGSUxFU191dGlsLWxpbnV4LXN3aXRjaC1yb290ID0gIiR7YmFzZV9zYmluZGlyfS9zd2l0Y2hfcm9vdC4ke0JQTn0iCisKICMgVXRpbC1saW51eCcgYmxraWQgcmVwbGFjZXMgdGhlIGUyZnNwcm9ncyBvbmUKIEZJTEVTX3V0aWwtbGludXgtYmxraWQgPSAiJHtiYXNlX3NiaW5kaXJ9L2Jsa2lkKiIKIFJDT05GTElDVFNfdXRpbC1saW51eC1ibGtpZCA9ICJlMmZzcHJvZ3MtYmxraWQiCkBAIC0xMTYsMTEgKzEyMywxMiBAQAogUkRFUEVORFNfdXRpbC1saW51eC1yZXNldCArPSAibmN1cnNlcyIKIAogUkRFUEVORFNfdXRpbC1saW51eC1ydW51c2VyICs9ICJsaWJwYW0iCitSREVQRU5EU191dGlsLWxpbnV4LXN1ICs9ICJsaWJwYW0iCiAKIFJERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXgtdW1vdW50IHV0aWwtbGludXgtc3dhcG9ub2ZmIHV0aWwtbGludXgtbG9zZXR1cCB1dGlsLWxpbnV4LXN1bG9naW4gdXRpbC1saW51eC1sc2JsayIKLVJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd1dGlsLWxpbnV4LXJ1bnVzZXInLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3V0aWwtbGludXgtcnVudXNlciB1dGlsLWxpbnV4LXN1JywgJycsIGQpfSIKIAotUlJFQ09NTUVORFNfJHtQTn0gPSAidXRpbC1saW51eC1mZGlzayB1dGlsLWxpbnV4LWNmZGlzayB1dGlsLWxpbnV4LXNmZGlzayB1dGlsLWxpbnV4LW1vdW50IHV0aWwtbGludXgtcmVhZHByb2ZpbGUgdXRpbC1saW51eC1ta2ZzIHV0aWwtbGludXgtbW91bnRwb2ludCB1dGlsLWxpbnV4LXBybGltaXQiCitSUkVDT01NRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4LWZkaXNrIHV0aWwtbGludXgtY2ZkaXNrIHV0aWwtbGludXgtc2ZkaXNrIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC1yZWFkcHJvZmlsZSB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tb3VudHBvaW50IHV0aWwtbGludXgtcHJsaW1pdCB1dGlsLWxpbnV4LWlvbmljZSB1dGlsLWxpbnV4LXN3aXRjaC1yb290IgogCiBSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgogUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKQEAgLTE4Miw2ICsxOTAsMTIgQEAKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnVudXNlci5wYW1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3J1bnVzZXIKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnVudXNlci1sLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcnVudXNlci1sCiAJZmkKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCSMgUmVxdWlyZWQgZm9yICJzdSAtIiBha2EgInN1IC0tbG9naW4iIGJlY2F1c2UKKwkJIyBvdGhlcndpc2UgaXQgdXNlcyAib3RoZXIiLCB3aGljaCBoYXMgImF1dGggcGFtX2Rlbnkuc28iCisJCSMgYW5kIHRodXMgcHJldmVudHMgdGhlIG9wZXJhdGlvbi4KKwkJbG4gLXMgc3UgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3UtbAorCWZpCiB9CiAKICMgcmVzZXQgYW5kIG5vbG9naW4gY2F1c2VzIGEgY29uZmxpY3Qgd2l0aCBuY3Vyc2VzLW5hdGl2ZSBhbmQgc2hhZG93LW5hdGl2ZQpAQCAtMjkwLDcgKzMwNCw3IEBACiB9CiAKIFJERVBFTkRTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAidXRpbC1saW51eC1sc2JsayIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggZ3JlcCBjb3JldXRpbHMiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGdyZXAgY29yZXV0aWxzIHdoaWNoIHV0aWwtbGludXgtYmxraWQgdXRpbC1saW51eC1mc2NrIGJ0cmZzLXRvb2xzIgogCiBkb19jb21waWxlX3B0ZXN0KCkgewogICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCkBAIC0yOTgsMjMgKzMxMiwzMCBAQAogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3RzCi0gICAgZmluZCAuIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLTExMSAtZXhlYyBjcCB7fSAke0R9JHtQVEVTVF9QQVRIfSBcOwotICAgIGNwICR7U30vdGVzdHMvZnVuY3Rpb25zLnNoICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotICAgIGNwICR7U30vdGVzdHMvY29tbWFuZHMuc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgY3AgJHtTfS90ZXN0cy9ydW4uc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgY3AgLXBSICR7U30vdGVzdHMvZXhwZWN0ZWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZXhwZWN0ZWQKKyAgICBmaW5kIC4gLW5hbWUgJ3Rlc3QqJyAtbWF4ZGVwdGggMSAtdHlwZSBmIC1wZXJtIC0xMTEgLWV4ZWMgY3Age30gJHtEfSR7UFRFU1RfUEFUSH0gXDsKKyAgICBmaW5kIC4vLmxpYnMgLW5hbWUgJ3NhbXBsZSonIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLTExMSAtZXhlYyBjcCB7fSAke0R9JHtQVEVTVF9QQVRIfSBcOworICAgIGZpbmQgLi8ubGlicyAtbmFtZSAndGVzdConIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLTExMSAtZXhlYyBjcCB7fSAke0R9JHtQVEVTVF9QQVRIfSBcOwogCi0gICAgbGlzdD0iYml0b3BzIGJ1aWxkLXN5cyBjYWwgY29sIGNvbHJtIGNvbHVtbiBkbWVzZyBmc2NrIGhleGR1bXAgaHdjbG9jayBpcGNzIGlzb3NpemUgbG9naW4gbG9vayBtZDUgbWlzYyBtb3JlIG5hbWVpIHBhdGhzIHNjaGVkdXRpbHMgc2NyaXB0IHN3YXBvbiB0YWlsZiIKLSAgICAjIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG5vdCBpbnN0YWxsZWQgIHlldDoKLSAgICAjIGJsa2lkIHNjc2lfZGVidWcgbW9kdWxlIGRlcGVuZGVudAotICAgICMgY3JhbWZzIGdjYyBkZXBlbmRlbnQKLSAgICAjIGVqZWN0IGdjYyBkZXBlbmRlbnQKLSAgICAjIGZkaXNrIHNjc2lfZGVidWcgbW9kdWxlIGFuZCBnY2MgZGVwZW5kZW50Ci0gICAgIyBsc2NwdSBnY2MgZGVwZW5kYW50Ci0gICAgIyBsaWJtb3VudCB1dWlkZ2VuIGRlcGVuZGVudAotICAgICMgbW91bnQgZ2NjIGRlcGVuZGFudAotICAgICMgcGFydHggYmxraWQgZGVwZW5kYW50Ci0gICAgZm9yIGQgaW4gJGxpc3Q7IGRvCi0gICAgICAgIGNwIC1wUiAke1N9L3Rlc3RzL3RzLyRkICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3RzLwotICAgIGRvbmUKKyAgICBjcCAke1N9L3Rlc3RzLyouc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCisgICAgY3AgLXBSICR7U30vdGVzdHMvZXhwZWN0ZWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZXhwZWN0ZWQKKyAgICBjcCAtcFIgJHtTfS90ZXN0cy90cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAke1dPUktESVJ9L2J1aWxkL2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAjIFRoZSBvcmlnaW5hbCBwYXRocyBvZiBleGVjdXRhYmxlcyB0byBiZSB0ZXN0ZWQgcG9pbnQgdG8gYSBsb2NhbCBmb2xkZXIgY29udGFpbmluZworICAgICMgdGhlIGV4ZWN1dGFibGVzLiBXZSB3YW50IHRvIHRlc3QgdGhlIGluc3RhbGxlZCBleGVjdXRhYmxlcywgbm90IHRoZSBsb2NhbCBjb3BpZXMuCisgICAgIyBTbyBzdHJpcCB0aGUgcGF0aHMsIHRoZSBleGVjdXRhYmxlcyB3aWxsIGJlIGxvY2F0ZWQgdmlhICJ3aGljaCIKKyAgICBzZWQgIC1pIFwKKyAgICAgICAgIC1lICcvXlRTX0NNRC8gc3wkdG9wX2J1aWxkZGlyL3x8ZycgXAorICAgICAgICAgLWUgJy9eVFNfSEVMUEVSLyBzfCR0b3BfYnVpbGRkaXJ8JHtQVEVTVF9QQVRIfXxnJyBcCisgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jb21tYW5kcy5zaAorCisgICAgIyBDaGFuZ2UgJ2lmIFsgISAteCAiJDEiIF0nIHRvICdpZiBbICEgLXggImB3aGljaCAkMSAyPi9kZXYvbnVsbGAiXScKKyAgICBzZWQgLWkgLWUgXAorICAgICAgICAnL15cdGlmW1s6c3BhY2U6XV1cW1tbOnNwYWNlOl1dIVtbOnNwYWNlOl1dLXhbWzpzcGFjZTpdXSIkMSIvc3wkMXxgd2hpY2ggJDEgMj4vZGV2L251bGxgfGcnIFwKKyAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2Z1bmN0aW9ucy5zaAorCisgICAgIyAia2lsbCAtTCIgYmVoYXZlcyBkaWZmZXJlbnRseSB0aGFuICIvYmluL2tpbGwgLUwiIHNvIHdlIG5lZWQgYW4gYWRkaXRpb25hbCBmaXgKKyAgICBzZWQgLWkgLWUgXAorICAgICAgICAgJy9eVFNfQ01EX0tJTEwvIHN8a2lsbHwvYmluL2tpbGx8ZycgXAorICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY29tbWFuZHMuc2gKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmYTFjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2dldHJhbmRvbSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIGdsaWJjIDIuMjUrIGFuZCB1bmluYXRpdmUgbWF5IHJlbG9jYXRlIAorYmluYXJpZXMgb250byBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGlzIGZ1bmN0aW9uLiBGb3Igbm93LCBmb3JjZSB0aGUgCitjb2RlIHRvIHRoZSBvbGRlciBjb2RlcGF0aCB1bnRpbCB3ZSBjYW4gY29tZSB1cCB3aXRoIGEgYmV0dGVyIHNvbHV0aW9uIAorZm9yIHRoaXMga2luZCBvZiBpc3N1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitSUAorMjAxNi84LzE1CisKK0luZGV4OiB1dGlsLWxpbnV4LTIuMzAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdXRpbC1saW51eC0yLjMwLm9yaWcvY29uZmlndXJlLmFjCisrKysgdXRpbC1saW51eC0yLjMwL2NvbmZpZ3VyZS5hYworQEAgLTM5OSw3ICszOTksNiBAQCBBQ19DSEVDS19GVU5DUyhbIFwKKyAJZ2V0ZHRhYmxlc2l6ZSBcCisgCWdldGV4ZWNuYW1lIFwKKyAJZ2V0bW50aW5mbyBcCistCWdldHJhbmRvbSBcCisgCWdldHJsaW1pdCBcCisgCWdldHNnbmFtIFwKKyAJaW5vdGlmeV9pbml0IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZmZGU1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L3V1aWQtdGVzdC1lcnJvci1hcGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1UaGlzIHBhdGNoIGFkZHMgZXJyb3IoKSBBUEkgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1nbGliYyBzeXN0ZW0gQyBsaWJzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gbWlzYy11dGlscy90ZXN0X3V1aWRkLmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvdGVzdF91dWlkZC5jIGIvbWlzYy11dGlscy90ZXN0X3V1aWRkLmMKLWluZGV4IDM2ZjNiM2QuLjdkNTc5Y2UgMTAwNjQ0Ci0tLS0gYS9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwotKysrIGIvbWlzYy11dGlscy90ZXN0X3V1aWRkLmMKLUBAIC0yMyw3ICsyMyw2IEBACi0gICoKLSAgKgltYWtlIHV1aWRkIHV1aWRnZW4gbG9jYWxzdGF0ZWRpcj0vdmFyCi0gICovCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0gI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1AQCAtMzgsNiArMzcsMTcgQEAKLSAjaW5jbHVkZSAieGFsbG9jLmgiCi0gI2luY2x1ZGUgInN0cnV0aWxzLmgiCi0gCi0rI2lmZGVmIF9fR0xJQkNfXwotKyNpbmNsdWRlIDxlcnJvci5oPgotKyNlbHNlCi0rZXh0ZXJuIHZvaWQgKCplcnJvcl9wcmludF9wcm9nbmFtZSkodm9pZCk7Ci0rZXh0ZXJuIHVuc2lnbmVkIGludCBlcnJvcl9tZXNzYWdlX2NvdW50OwotK2V4dGVybiBpbnQgZXJyb3Jfb25lX3Blcl9saW5lOwotKwotK3ZvaWQgZXJyb3IoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSt2b2lkIGVycm9yX2F0X2xpbmUoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIC4uLik7Ci0rI2VuZGlmCi0rCi0gI2RlZmluZSBMT0cobGV2ZWwsYXJncykgaWYgKGxvZ2xldiA+PSBsZXZlbCkgeyBmcHJpbnRmIGFyZ3M7IH0KLSAKLSBzaXplX3QgbnByb2Nlc3NlcyA9IDQ7Ci1AQCAtMjU2LDYgKzI2Niw1NiBAQCBzdGF0aWMgdm9pZCBvYmplY3RfZHVtcChzaXplX3QgaWR4LCBvYmplY3RfdCAqb2JqKQotIAlmcHJpbnRmKHN0ZGVyciwgIn1cbiIpOwotIH0KLSAKLSsjaWZuZGVmIF9fR0xJQkNfXwotK2V4dGVybiBjaGFyICpfX3Byb2duYW1lOwotKwotK3ZvaWQgKCplcnJvcl9wcmludF9wcm9nbmFtZSkodm9pZCkgPSAwOwotK3Vuc2lnbmVkIGludCBlcnJvcl9tZXNzYWdlX2NvdW50ID0gMDsKLStpbnQgZXJyb3Jfb25lX3Blcl9saW5lID0gMDsKLSsKLStzdGF0aWMgdm9pZCBlcHJpbnQoaW50IHN0YXR1cywgaW50IGUsIGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCi0rewotKwlpZiAoZmlsZSAmJiBlcnJvcl9vbmVfcGVyX2xpbmUpIHsKLSsJCXN0YXRpYyBjb25zdCBjaGFyICpvbGRmaWxlOwotKwkJc3RhdGljIHVuc2lnbmVkIGludCBvbGRsaW5lOwotKwkJaWYgKGxpbmUgPT0gb2xkbGluZSAmJiBzdHJjbXAoZmlsZSwgb2xkZmlsZSkgPT0gMCkKLSsJCQlyZXR1cm47Ci0rCQlvbGRmaWxlID0gZmlsZTsKLSsJCW9sZGxpbmUgPSBsaW5lOwotKwl9Ci0rCWlmIChlcnJvcl9wcmludF9wcm9nbmFtZSkKLSsJCWVycm9yX3ByaW50X3Byb2duYW1lKCk7Ci0rCWVsc2UKLSsJCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIF9fcHJvZ25hbWUpOwotKwlpZiAoZmlsZSkKLSsJCWZwcmludGYoc3RkZXJyLCAiJXM6JXU6ICIsIGZpbGUsIGxpbmUpOwotKwl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXApOwotKwlpZiAoZSkKLSsJCWZwcmludGYoc3RkZXJyLCAiOiAlcyIsIHN0cmVycm9yKGUpKTsKLSsJcHV0YygnXG4nLCBzdGRlcnIpOwotKwlmZmx1c2goc3RkZXJyKTsKLSsJZXJyb3JfbWVzc2FnZV9jb3VudCsrOwotKwlpZiAoc3RhdHVzKQotKwkJZXhpdChzdGF0dXMpOwotK30KLSsKLSt2b2lkIGVycm9yKGludCBzdGF0dXMsIGludCBlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCXZhX2xpc3QgYXA7Ci0rCXZhX3N0YXJ0KGFwLGZtdCk7Ci0rCWVwcmludChzdGF0dXMsIGUsIDAsIDAsIGZtdCwgYXApOwotKwl2YV9lbmQoYXApOwotK30KLSsKLSt2b2lkIGVycm9yX2F0X2xpbmUoaW50IHN0YXR1cywgaW50IGUsIGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCXZhX2xpc3QgYXA7Ci0rCXZhX3N0YXJ0KGFwLGZtdCk7Ci0rCWVwcmludChzdGF0dXMsIGUsIGZpbGUsIGxpbmUsIGZtdCwgYXApOwotKwl2YV9lbmQoYXApOwotK30KLSsjZW5kaWYgLyogX19HTElCQ19fICovCi0rCi0gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gCXNpemVfdCBpLCBuZmFpbGVkID0gMCwgbmlnbm9yZWQgPSAwOwotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzk1YjQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotTUFKT1JfVkVSU0lPTiA9ICIyLjI5IgotcmVxdWlyZSB1dGlsLWxpbnV4LmluYwotCi0jIFRvIHN1cHBvcnQgb2xkZXIgaG9zdHMsIHdlIG5lZWQgdG8gcGF0Y2ggYW5kL29yIHJldmVydAotIyBzb21lIHVwc3RyZWFtIGNoYW5nZXMuICBPbmx5IGRvIHRoaXMgZm9yIG5hdGl2ZSBwYWNrYWdlcy4KLU9MREhPU1QgPSAiIgotT0xESE9TVF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovL3V0aWwtbGludXgtbmF0aXZlLXFzb3J0LnBhdGNoIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAotICAgICAgICAgICAgJHtPTERIT1NUfSBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3V1aWQtdGVzdC1lcnJvci1hcGkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjBjYmI2ZDE2YWI5YzU3MzZlNTY0OWVmMTI2NGJlZTZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjZTQwNjAwYjkzNGVjMmZlY2ZhNmJmYzRlZmU2OTgyZDA1MWJhOTZjMjgzMmIwNTIwMTM0N2FlYzU4MmY1NGYiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCi0JCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAotCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTQ0OWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCkBAIC0wLDAgKzEsMzEgQEAKK01BSk9SX1ZFUlNJT04gPSAiMi4zMCIKK3JlcXVpcmUgdXRpbC1saW51eC5pbmMKKworIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKKyMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCitPTERIT1NUID0gIiIKK09MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS1xc29ydC5wYXRjaCIKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKKyAgICAgICAgICAgICR7T0xESE9TVH0gXAorICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL25vX2dldHJhbmRvbS5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWEzNDI5MTUwMjY4MDI3OTA4YTFiOGFlNmVlOWE2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjA4YTRmZjY5MDZjYjdmNTc5NDBhYTViYzNhNmVlZDE0NmU1MGE3Y2MwYTA5MmY1MmVmMmFiNjUwNTdhMDhkIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAic2NhbmZfY3ZfYWxsb2NfbW9kaWZpZXI9bXMiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAorCQkJICAgICAtLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKKwkJCQktLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliXzEuMi4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjExLmJiCmluZGV4IGJhMjE2ZjYuLjY0MTA1MTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjExLmJiCkBAIC00NSw2ICs0NSwxMSBAQAogCWluc3RhbGwgJHtCfS9taW5pZ3ppcCAgICR7RH0ke1BURVNUX1BBVEh9CiAJaW5zdGFsbCAke0J9L2V4YW1wbGVzaCAgJHtEfSR7UFRFU1RfUEFUSH0KIAlpbnN0YWxsICR7Qn0vbWluaWd6aXBzaCAke0R9JHtQVEVTVF9QQVRIfQorCisJIyBSZW1vdmUgYnVpbGRob3N0IHJlZmVyZW5jZXMuLi4KKwlzZWQgLWkgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZyIgXAorCQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCiB9CiAKICMgTW92ZSB6bGliIHNoYXJlZCBsaWJyYXJpZXMgZm9yIHRhcmdldCBidWlsZHMgdG8gJGJhc2VfbGliZGlyIHNvIHRoZSBsaWJyYXJ5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlXzEuMi4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTY2MGRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGFwdC1uYXRpdmUuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9ub2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tY3VybC5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxNmI1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjI0LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBhcHQtbmF0aXZlLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbm9jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL25vLWN1cmwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2djY180LnhfYXB0LXBrZy1jb250cmliLXN0cnV0bC5jYy1JbmNsdWRlLWFycmF5LWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZ2NjXzQueF9SZXZlcnQtYXZvaWQtY2hhbmdpbmctdGhlLWdsb2JhbC1MQ19USU1FLWZvci1SZWxlYXNlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9nY2NfNC54X1JldmVydC11c2UtZGUtbG9jYWxlZC1zdGQtcHV0X3RpbWUtaW5zdGVhZC1yb2xsaW5nLW8ucGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwppbmRleCAzMDI2MzcwLi5mMWNkZTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKQEAgLTIsNyArMiw3IEBACiBMSUNFTlNFID0gIkdQTHYyLjArIgogU0VDVElPTiA9ICJiYXNlIgogCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNTI2VDE2Mjk0M1ovcG9vbC9tYWluL2EvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHogXAorU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS51YnVudHUuY29tL3VidW50dS9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtaG9zdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tYWtlcmFjZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1ubHMtZHBrZy5wYXRjaCBcCkBAIC0xNCw5ICsxNCw5IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWVudmlyb25tZW50Lm1hay1tdXNsLWJhc2VkLXN5c3RlbXMtY2FuLWdlbmVyYXRlLXNoYXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjgwZjZmMGVmMTEwYTQ1YTdlNWFmOGE5ZDIzM2ZiMGU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4MjBkMjdjYmE3MzQ3NmRmNGFiY2ZmMjdkYWRkMWI1ODQ3NDc0YmZlODVmN2U5MjAyYTlhMDc1MjY5NzNlYTYiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCitTUkNfVVJJW21kNXN1bV0gPSAiY2U4ZjlhYjExZjRmZDBhMDhlYzczZWFmZmQ3NWM4ZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmExMzExYTljZTAwZTcyMzc5YTBhM2JjNmQyNDBiYTMwYzA5NjhjZmJiYjM0NzI4NTllNTBiOTllMjRlOTU5OCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKICMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLVJldmVydC1hbHdheXMtcnVuLWRwa2ctY29uZmlndXJlLWEtYXQtdGhlLWVuZC1vZi1vdXIucGF0Y2gKaW5kZXggYjNhODgzYi4uNzM0YmEwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjIGIvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCi1pbmRleCA4MzRjYjBlLi44NGRlZDNhIDEwMDY0NAoraW5kZXggNTMzZDliMzY3Li42Y2U4MWJiZDkgMTAwNjQ0CiAtLS0gYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MKICsrKyBiL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotQEAgLTEwMzcsMTIgKzEwMzcsNiBAQCB2b2lkIHBrZ0RQa2dQTTo6QnVpbGRQYWNrYWdlc1Byb2dyZXNzTWFwKCkKK0BAIC0xMDQxLDEyICsxMDQxLDYgQEAgdm9pZCBwa2dEUGtnUE06OkJ1aWxkUGFja2FnZXNQcm9ncmVzc01hcCgpCiAgCSBQYWNrYWdlc1RvdGFsKys7CiAgICAgICAgfQogICAgIH0KQEAgLTM4LDcgKzM4LDcgQEAKICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp9fX0qLwogIGJvb2wgcGtnRFBrZ1BNOjpHbyhpbnQgU3RhdHVzRmQpCi1AQCAtMTI1MCw4ICsxMjQ0LDkgQEAgYm9vbCBwa2dEUGtnUE06OkdvKEFQVDo6UHJvZ3Jlc3M6OlBhY2thZ2VNYW5hZ2VyICpwcm9ncmVzcykKK0BAIC0xMjY4LDggKzEyNjIsOSBAQCBib29sIHBrZ0RQa2dQTTo6R28oQVBUOjpQcm9ncmVzczo6UGFja2FnZU1hbmFnZXIgKnByb2dyZXNzKQogIAogICAgIC8vIHN1cHBvcnQgc3VicHJlc3Npbmcgb2YgdHJpZ2dlcnMgcHJvY2Vzc2luZyBmb3Igc3BlY2lhbAogICAgIC8vIGNhc2VzIGxpa2UgZC1pIHRoYXQgcnVucyB0aGUgdHJpZ2dlcnMgaGFuZGxpbmcgbWFudWFsbHkKQEAgLTUwLDcgKzUwLDcgQEAKICAKICAgICAvLyBmb3IgdGhlIHByb2dyZXNzCiBkaWZmIC0tZ2l0IGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIgYi90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWRlYjgyMgotaW5kZXggNThmZDczMi4uMzM1OTc2MiAxMDA3NTUKK2luZGV4IGE4ZDU5NjA4ZC4uMGM2YTliYmJmIDEwMDc1NQogLS0tIGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIKICsrKyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyCiBAQCAtMjcsMzYgKzI3LDM2IEBAIE1lc3NhZ2U6IEluc3RhbGxpbmcgdGVzdGluZyAoYW1kNjQpCkBAIC02OSwxOSArNjksMTkgQEAKICAKICBTdGF0dXM6IHByb2dyZXNzCiAgUGFja2FnZTogdGVzdGluZzphbWQ2NAotLVBlcmNlbnQ6IDUwCi0rUGVyY2VudDogNjAKKy1QZXJjZW50OiA1MC4wMDAwCisrUGVyY2VudDogNjAuMDAwMAogIE1lc3NhZ2U6IFByZXBhcmluZyB0byBjb25maWd1cmUgdGVzdGluZyAoYW1kNjQpCiAgCiAgU3RhdHVzOiBwcm9ncmVzcwotLVBlcmNlbnQ6IDUwCi0rUGVyY2VudDogNjAKKy1QZXJjZW50OiA1MC4wMDAwCisrUGVyY2VudDogNjAuMDAwMAogIE1lc3NhZ2U6IFJ1bm5pbmcgZHBrZwogIAogIFN0YXR1czogcHJvZ3Jlc3MKICBQYWNrYWdlOiB0ZXN0aW5nOmFtZDY0Ci0tUGVyY2VudDogNTAKLStQZXJjZW50OiA2MAorLVBlcmNlbnQ6IDUwLjAwMDAKKytQZXJjZW50OiA2MC4wMDAwCiAgTWVzc2FnZTogQ29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCiAgCiAgU3RhdHVzOiBwcm9ncmVzcwpAQCAtOTgsNyArOTgsNyBAQAogIAogIFN0YXR1czogcHJvZ3Jlc3MKIGRpZmYgLS1naXQgYS90ZXN0L2ludGVncmF0aW9uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMgYi90ZXN0L2ludGVncmF0aW9uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMKLWluZGV4IGQ4NmU2MzguLmVmNmQyM2IgMTAwNzU1CitpbmRleCBkODZlNjM4Y2QuLmVmNmQyM2JlMiAxMDA3NTUKIC0tLSBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cwogKysrIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LW5vLWZkcy1sZWFrZWQtdG8tbWFpbnRhaW5lci1zY3JpcHRzCiBAQCAtNTksOCArNTksNyBAQCBzdGFydHVwIHBhY2thZ2VzIGNvbmZpZ3VyZQpAQCAtMTIyLDUgKzEyMiw1IEBACiAgY2hlY2twdXJnZQogIAogLS0gCi0yLjEuNAorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoCmluZGV4IDA0YjA0MDYuLmY3YWMxOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaApAQCAtMTEsNyArMTEsNyBAQAogYXB0LXBrZy9jb250cmliL3NydnJlYy5oOiBBZGQgZXhwbGljaXR5IGluY2x1ZGUgb2Ygc3lzL3R5cGVzLmgKIHRvIGF2b2lkIGVycm9ycyBpbiB0eXBlcyB1X2ludF9TSVpFLgogCi1VcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LWF2b2lkLWNoYW5naW5nLXRoZS1nbG9iYWwtTENfVElNRS1mb3ItUmVsZWFzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X1JldmVydC1hdm9pZC1jaGFuZ2luZy10aGUtZ2xvYmFsLUxDX1RJTUUtZm9yLVJlbGVhc2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM4ZGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X1JldmVydC1hdm9pZC1jaGFuZ2luZy10aGUtZ2xvYmFsLUxDX1RJTUUtZm9yLVJlbGVhc2UucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSA3ZWYyYjJkYmEwZTBiZWU0NTBkYTNjODQ1MGVhNzgyYTNlN2Q2NDI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAxMTo0OTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIIDMvM10gUmV2ZXJ0ICJhdm9pZCBjaGFuZ2luZyB0aGUgZ2xvYmFsIExDX1RJTUUgZm9yIFJlbGVhc2UKKyB3cml0aW5nIgorCitUaGlzIHJldmVydHMgY29tbWl0IDc4ZTdiNjgzYzY0NWU5MDdkYjEyNjU4NDA1YTRiMjAxYTYyNDNlYTguCisKK0FmdGVyIHdlIGRyb3AgZGViaWFuOCBhbmQgY2VudG9zNyB0aGF0IGhhcyBnY2MgPCA1IChzdGQ6OnB1dF90aW1lIG5vdCBhdmFpbGFibGUpIAordmVyc2lvbnMgdGhpcyBwYXRjaCBjYW4gYmUgcmVtb3ZlLgorCitTaWduZWQtb2ZmLWJ5OiBBbmliYWwgTGltb24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBmdHBhcmNoaXZlL3dyaXRlci5jYyB8IDI5ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZnRwYXJjaGl2ZS93cml0ZXIuY2MgYi9mdHBhcmNoaXZlL3dyaXRlci5jYworaW5kZXggMjU5NjM4Mi4uZTQzYTY0MyAxMDA2NDQKKy0tLSBhL2Z0cGFyY2hpdmUvd3JpdGVyLmNjCisrKysgYi9mdHBhcmNoaXZlL3dyaXRlci5jYworQEAgLTM3LDcgKzM3LDYgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGN0aW1lPgorICNpbmNsdWRlIDxpb3N0cmVhbT4KKy0jaW5jbHVkZSA8aW9tYW5pcD4KKyAjaW5jbHVkZSA8c3N0cmVhbT4KKyAjaW5jbHVkZSA8bWVtb3J5PgorICNpbmNsdWRlIDx1dGlsaXR5PgorQEAgLTk4NCwyOSArOTgzLDM1IEBAIFJlbGVhc2VXcml0ZXI6OlJlbGVhc2VXcml0ZXIoRmlsZUZkICogY29uc3QgR2l2ZW5PdXRwdXQsIHN0cmluZyBjb25zdCAmLypEQiovKSA6CisgICAgQWRkUGF0dGVybnMoX2NvbmZpZy0+RmluZFZlY3RvcigiQVBUOjpGVFBBcmNoaXZlOjpSZWxlYXNlOjpQYXR0ZXJucyIpKTsKKyAKKyAgICB0aW1lX3QgY29uc3Qgbm93ID0gdGltZShOVUxMKTsKKy0gICBhdXRvIGNvbnN0IHBvc2l4ID0gc3RkOjpsb2NhbGUoIkMuVVRGLTgiKTsKKyAKKy0gICAvLyBGSVhNRTogdXNlIFRpbWVSRkMxMTIzIGhlcmU/IEJ1dCB0aGF0IHVzZXMgR01UIHRvIHNhdGlzZnkgSFRUUC8xLjEKKy0gICBzdGQ6Om9zdHJpbmdzdHJlYW0gZGF0ZXN0cjsKKy0gICBkYXRlc3RyLmltYnVlKHBvc2l4KTsKKy0gICBkYXRlc3RyIDw8IHN0ZDo6cHV0X3RpbWUoZ210aW1lKCZub3cpLCAiJWEsICVkICViICVZICVIOiVNOiVTIFVUQyIpOworKyAgIHNldGxvY2FsZShMQ19USU1FLCAiQyIpOworKworKyAgIGNoYXIgZGF0ZXN0clsxMjhdOworKyAgIGlmIChzdHJmdGltZShkYXRlc3RyLCBzaXplb2YoZGF0ZXN0ciksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIiwKKysgICAgICAgICAgICAgICAgZ210aW1lKCZub3cpKSA9PSAwKQorKyAgIHsKKysgICAgICBkYXRlc3RyWzBdID0gJ1wwJzsKKysgICB9CisgCisgICAgdGltZV90IGNvbnN0IHZhbGlkdW50aWwgPSBub3cgKyBfY29uZmlnLT5GaW5kSSgiQVBUOjpGVFBBcmNoaXZlOjpSZWxlYXNlOjpWYWxpZFRpbWUiLCAwKTsKKy0gICBzdGQ6Om9zdHJpbmdzdHJlYW0gdmFsaWRzdHI7CistICAgaWYgKHZhbGlkdW50aWwgIT0gbm93KQorKyAgIGNoYXIgdmFsaWRzdHJbMTI4XTsKKysgICBpZiAobm93ID09IHZhbGlkdW50aWwgfHwKKysgICAgICAgc3RyZnRpbWUodmFsaWRzdHIsIHNpemVvZih2YWxpZHN0ciksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIiwKKysgICAgICAgICAgICAgICAgZ210aW1lKCZ2YWxpZHVudGlsKSkgPT0gMCkKKyAgICB7CistICAgICAgZGF0ZXN0ci5pbWJ1ZShwb3NpeCk7CistICAgICAgdmFsaWRzdHIgPDwgc3RkOjpwdXRfdGltZShnbXRpbWUoJnZhbGlkdW50aWwpLCAiJWEsICVkICViICVZICVIOiVNOiVTIFVUQyIpOworKyAgICAgIHZhbGlkc3RyWzBdID0gJ1wwJzsKKyAgICB9CisgCisrICAgc2V0bG9jYWxlKExDX1RJTUUsICIiKTsKKysKKyAgICBtYXA8c3RyaW5nLHN0cmluZz4gRmllbGRzOworICAgIEZpZWxkc1siT3JpZ2luIl0gPSAiIjsKKyAgICBGaWVsZHNbIkxhYmVsIl0gPSAiIjsKKyAgICBGaWVsZHNbIlN1aXRlIl0gPSAiIjsKKyAgICBGaWVsZHNbIlZlcnNpb24iXSA9ICIiOworICAgIEZpZWxkc1siQ29kZW5hbWUiXSA9ICIiOworLSAgIEZpZWxkc1siRGF0ZSJdID0gZGF0ZXN0ci5zdHIoKTsKKy0gICBGaWVsZHNbIlZhbGlkLVVudGlsIl0gPSB2YWxpZHN0ci5zdHIoKTsKKysgICBGaWVsZHNbIkRhdGUiXSA9IGRhdGVzdHI7CisrICAgRmllbGRzWyJWYWxpZC1VbnRpbCJdID0gdmFsaWRzdHI7CisgICAgRmllbGRzWyJBcmNoaXRlY3R1cmVzIl0gPSAiIjsKKyAgICBGaWVsZHNbIkNvbXBvbmVudHMiXSA9ICIiOworICAgIEZpZWxkc1siRGVzY3JpcHRpb24iXSA9ICIiOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtdXNlLWRlLWxvY2FsZWQtc3RkLXB1dF90aW1lLWluc3RlYWQtcm9sbGluZy1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LXVzZS1kZS1sb2NhbGVkLXN0ZC1wdXRfdGltZS1pbnN0ZWFkLXJvbGxpbmctby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODhhNjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LXVzZS1kZS1sb2NhbGVkLXN0ZC1wdXRfdGltZS1pbnN0ZWFkLXJvbGxpbmctby5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGM3MmVmOWI2YWU4M2EwYTJmYmJlZmQ1YzA1MDMzNWY2NWYwZDJiYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDIyIEF1ZyAyMDE3IDExOjQ4OjQ2IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBSZXZlcnQgInVzZSBkZS1sb2NhbGVkIHN0ZDo6cHV0X3RpbWUgaW5zdGVhZCByb2xsaW5nIG91cgorIG93biIKKworVGhpcyByZXZlcnRzIGNvbW1pdCA0ZWQyYTE3YWI0MzM0ZjAxOWMwMDUxMmFhNTRhMTYyZjBiZjA4M2M0LgorCitBZnRlciB3ZSBkcm9wIGRlYmlhbjggYW5kIGNlbnRvczcgdGhhdCBoYXMgZ2NjIDwgNSAoc3RkOjpwdXRfdGltZSBub3QgYXZhaWxhYmxlKSAKK3ZlcnNpb25zIHRoaXMgcGF0Y2ggY2FuIGJlIHJlbW92ZS4KKworU2lnbmVkLW9mZi1ieTogQW5pYmFsIExpbW9uIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYyB8IDE0ICsrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MgYi9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCitpbmRleCBjMmZmMDFkLi5lOWVmMmJlIDEwMDY0NAorLS0tIGEvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYworKysrIGIvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYworQEAgLTc2MCwxMSArNzYwLDE1IEBAIHN0cmluZyBUaW1lUkZDMTEyMyh0aW1lX3QgRGF0ZSkKKyAgICBpZiAoZ210aW1lX3IoJkRhdGUsICZDb252KSA9PSBOVUxMKQorICAgICAgIHJldHVybiAiIjsKKyAKKy0gICBhdXRvIGNvbnN0IHBvc2l4ID0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKTsKKy0gICBzdGQ6Om9zdHJpbmdzdHJlYW0gZGF0ZXN0cjsKKy0gICBkYXRlc3RyLmltYnVlKHBvc2l4KTsKKy0gICBkYXRlc3RyIDw8IHN0ZDo6cHV0X3RpbWUoJkNvbnYsICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgR01UIik7CistICAgcmV0dXJuIGRhdGVzdHIuc3RyKCk7CisrICAgY2hhciBCdWZbMzAwXTsKKysgICBjb25zdCBjaGFyICpEYXlbXSA9IHsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0In07CisrICAgY29uc3QgY2hhciAqTW9udGhbXSA9IHsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMifTsKKysKKysgICBzbnByaW50ZihCdWYsIHNpemVvZihCdWYpLCAiJXMsICUwMmkgJXMgJWkgJTAyaTolMDJpOiUwMmkgR01UIixEYXlbQ29udi50bV93ZGF5XSwKKysJICAgQ29udi50bV9tZGF5LE1vbnRoW0NvbnYudG1fbW9uXSxDb252LnRtX3llYXIrMTkwMCxDb252LnRtX2hvdXIsCisrCSAgIENvbnYudG1fbWluLENvbnYudG1fc2VjKTsKKysgICByZXR1cm4gQnVmOworIH0KKyAJCQkJCQkJCQkvKn19fSovCisgLy8gUmVhZE1lc3NhZ2VzIC0gUmVhZCBtZXNzYWdlcyBmcm9tIHRoZSBGRAkJCQkvKnt7eyovCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X2FwdC1wa2ctY29udHJpYi1zdHJ1dGwuY2MtSW5jbHVkZS1hcnJheS1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9hcHQtcGtnLWNvbnRyaWItc3RydXRsLmNjLUluY2x1ZGUtYXJyYXktaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMzI1OTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9hcHQtcGtnLWNvbnRyaWItc3RydXRsLmNjLUluY2x1ZGUtYXJyYXktaGVhZGVyLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZmY4NTYyZjc3MjRjNGRiNGI4MzYzNWFmOWU2MjdmMzQ5NTIyMjMyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuaWJhbCBMaW1vbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMDQ6NDE6MzEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGFwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2M6IEluY2x1ZGUgYXJyYXkgaGVhZGVyCisKK0lmIEdDQyB2ZXJzaW9uIGlzIGxlc3MgdGhhbiA1IHRoZSBhcnJheSBoZWFkZXIgbmVlZHMgdG8gYmUgaW5jbHVkZWQKK3RvIHN1cHBvcnQgc3RkOjphcnJheS4KKworQWZ0ZXIgd2UgZHJvcCBkZWJpYW44IGFuZCBjZW50b3M3IHRoYXQgaGFzIGdjYyA8IDUgdmVyc2lvbnMgdGhpcyBwYXRjaAorY2FuIGJlIHJlbW92ZS4KKworU2lnbmVkLW9mZi1ieTogQW5pYmFsIExpbW9uIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYyBiL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKK2luZGV4IDYwZDBjYTguLmMyZmYwMWQgMTAwNjQ0CistLS0gYS9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCisrKysgYi9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxzc3RyZWFtPgorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKysjaW5jbHVkZSA8YXJyYXk+CisgCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdF8xLjIuMjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdF8xLjIuMTIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdF8xLjIuMjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNGRjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiYSBjb2xsZWN0aW9uIG9mIGZyZWVseSByZS11c2FibGUgQXV0b2NvbmYgbWFjcm9zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLWF1dG9jb25mLWV4Y2VwdGlvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICBmaWxlOi8vQ09QWUlORy5FWENFUFRJT047bWQ1PWZkZWYxNjhlYmZmM2JjMmYxMzY2NGMzNjVhNWZiNTE1IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYmYxOWQ0Y2RkY2UyNjBiM2MzZTFkNTFkNDI1MDkwNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThmMmVmZDIzNWY4NDJiYWQyZjY5MzhiZjRhNzIyNDBhNWU1ZmNkMjQ4ZTg0NDQzMzVlNjNiZWI2MGZhYmQ4MiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYwppbmRleCBmMWIyZGZjLi5lYTYyZGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYwpAQCAtMSw0ICsxLDQgQEAKLVNVTU1BUlkgPSAiQSBHTlUgdG9vbCB0aGF0IHByb2N1ZGUgc2hlbGwgc2NyaXB0cyB0byBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZSBzb2Z0d2FyZSIKK1NVTU1BUlkgPSAiQSBHTlUgdG9vbCB0aGF0IHByb2R1Y2Ugc2hlbGwgc2NyaXB0cyB0byBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZSBzb2Z0d2FyZSIKIERFU0NSSVBUSU9OID0gIkF1dG9jb25mIGlzIGFuIGV4dGVuc2libGUgcGFja2FnZSBvZiBNNCBtYWNyb3MgdGhhdCBwcm9kdWNlIHNoZWxsIHNjcmlwdHMgdG8gYXV0b21hdGljYWxseSBcIAogY29uZmlndXJlIHNvZnR3YXJlIHNvdXJjZSBjb2RlIHBhY2thZ2VzLiBBdXRvY29uZiBjcmVhdGVzIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZm9yIGEgcGFja2FnZSBmcm9tIGEgdGVtcGxhdGUgXAogZmlsZSB0aGF0IGxpc3RzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZlYXR1cmVzIHRoYXQgdGhlIHBhY2thZ2UgY2FuIHVzZSwgaW4gdGhlIGZvcm0gb2YgTTQgbWFjcm8gY2FsbHMuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4tbmF0aXZlXzUuMTguMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUzNDc3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiQXV0b21hdGVkIHRleHQgYW5kIHByb2dyYW0gZ2VuZXJhdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiQXV0b0dlbiBpcyBhIHRvb2wgZGVzaWduZWQgdG8gc2ltcGxpZnkgdGhlIGNyZWF0aW9uIGFuZFwKLSBtYWludGVuYW5jZSBvZiBwcm9ncmFtcyB0aGF0IGNvbnRhaW4gbGFyZ2UgYW1vdW50cyBvZiByZXBldGl0aW91cyB0ZXh0LlwKLSBJdCBpcyBlc3BlY2lhbGx5IHZhbHVhYmxlIGluIHByb2dyYW1zIHRoYXQgaGF2ZSBzZXZlcmFsIGJsb2NrcyBvZiB0ZXh0XAotIHRoYXQgbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2dlbi8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXV0b2dlbi9yZWwke1BWfS9hdXRvZ2VuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmNyZWFzZS10aW1lb3V0LWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21rLXRwbC1jb25maWcuc2gtZm9yY2UtZXhpdC12YWx1ZS10by1iZS0wLWluLXN1YnByb2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXNjcmlwdC1lcnItd2hlbi1wcm9jZXNzaW5nLWxpYmd1aWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlnLWxpYm9wdHMubTQtcmVnZW5lcmF0ZS1pdC1mcm9tLWNvbmZpZy1saWJvcHRzLi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWF1dG9vcHRzLW1rLXRwbC1jb25maWcuc2gtZml4LXBlcmwtcGF0aC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NTFkMTVjY2JmNWI1ZmM1NjU4ZGEzNzVkNTAwMzM4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDVjMjAxODJmM2NiMGViZjE1NzFkM2IwMTk3Mjg1MWM1NmZiMzQzNDhkZmRjMzg3OTlmZDBlYzNiMmJhZGJlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9hdXRvZ2VuLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInJlbCg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLURFUEVORFMgPSAiZ3VpbGUtbmF0aXZlIGxpYnRvb2wtbmF0aXZlIGxpYnhtbDItbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG5hdGl2ZSBwa2djb25maWcKLQotIyBhdXRvZ2VuLW5hdGl2ZSBsaW5rcyBhZ2FpbnN0IGxpYmd1aWxlIHdoaWNoIG1heSBoYXZlIGJlZW4gcmVsb2NhdGVkIHdpdGggc3N0YXRlCi0jIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBlbnN1cmUgdGhlcmUgaXNuJ3QgYSByZWxvY2F0aW9uIGlzc3VlCi1leHBvcnQgR1VJTEVfTE9BRF9QQVRIID0gIiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ3VpbGUvMi4wIgotZXhwb3J0IEdVSUxFX0xPQURfQ09NUElMRURfUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZSIKLQotZXhwb3J0IFBPU0lYX1NIRUxMID0gIi91c3IvYmluL2VudiBzaCIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2F1dG9nZW4gXAotCQlHVUlMRV9MT0FEX1BBVEg9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAgXAotCQlHVUlMRV9MT0FEX0NPTVBJTEVEX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2d1aWxlLzIuMC9jY2FjaGUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDEtY29uZmlnLWxpYm9wdHMubTQtcmVnZW5lcmF0ZS1pdC1mcm9tLWNvbmZpZy1saWJvcHRzLi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDEtY29uZmlnLWxpYm9wdHMubTQtcmVnZW5lcmF0ZS1pdC1mcm9tLWNvbmZpZy1saWJvcHRzLi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0MDE4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi8wMDAxLWNvbmZpZy1saWJvcHRzLm00LXJlZ2VuZXJhdGUtaXQtZnJvbS1jb25maWctbGlib3B0cy4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDQ1MDQwZTdkMjY4MzI5ZWJjNDBlNmNiMjM3YzY0YTY2MzdjZmFiNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTMgTWFyIDIwMTcgMjA6MjI6MTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlnL2xpYm9wdHMubTQ6IHJlZ2VuZXJhdGUgaXQgZnJvbSBjb25maWcvbGlib3B0cy5kZWYKLQotSXQgd2FzIG91dCBvZiBkYXRlIGNvbXBhcmVkIHRvIGNvbmZpZy9saWJvcHRzLmRlZiwgc28gcmVnZW5lcmF0ZSBpdCB2aWEKLSJhdXRvZ2VuIGNvbmZpZy9saWJvcHRzLmRlZiIgY29tbWFuZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlnL2xpYm9wdHMubTQgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy9saWJvcHRzLm00IGIvY29uZmlnL2xpYm9wdHMubTQKLWluZGV4IGM3YmE0ZjMuLjUxZTZhMzkgMTAwNjQ0Ci0tLS0gYS9jb25maWcvbGlib3B0cy5tNAotKysrIGIvY29uZmlnL2xpYm9wdHMubTQKLUBAIC0yLDcgKzIsNyBAQCBkbmwgIC0qLSBidWZmZXItcmVhZC1vbmx5OiB0IC0qLSB2aTogc2V0IHJvOgotIGRubAotIGRubCBETyBOT1QgRURJVCBUSElTIEZJTEUgICAobGlib3B0cy5tNCkKLSBkbmwKLS1kbmwgSXQgaGFzIGJlZW4gQXV0b0dlbi1lZAotK2RubCBJdCBoYXMgYmVlbiBBdXRvR2VuLWVkICBNYXJjaCAxMywgMjAxNyBhdCAwODoyMToyMSBQTSBieSBBdXRvR2VuIDUuMTgKLSBkbmwgRnJvbSB0aGUgZGVmaW5pdGlvbnMgICAgbGlib3B0cy5kZWYKLSBkbmwgYW5kIHRoZSB0ZW1wbGF0ZSBmaWxlICAgY29uZnRlc3QudHBsCi0gZG5sCi1AQCAtMTE0LDYgKzExNCw3IEBAIEFDX0RFRlVOKFtJTlZPS0VfTElCT1BUU19NQUNST1NfRklSU1RdLFsKLSAgIEFDX1BST0dfU0VECi0gICBbd2hpbGUgOgotICAgZG8KLSsgICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0gICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGJhc2hgCi0gICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotICAgICAgIFBPU0lYX1NIRUxMPWB3aGljaCBkYXNoYAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vMDAwMi1hdXRvb3B0cy1tay10cGwtY29uZmlnLnNoLWZpeC1wZXJsLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi8wMDAyLWF1dG9vcHRzLW1rLXRwbC1jb25maWcuc2gtZml4LXBlcmwtcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmZTE0My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi8wMDAyLWF1dG9vcHRzLW1rLXRwbC1jb25maWcuc2gtZml4LXBlcmwtcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gOWY2OWYzZjVlZjIyYmYxYmNmZmIwZTY1MWVmYzI2MDg4OWNmYWE0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAyMDozMzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhdXRvb3B0cy9tay10cGwtY29uZmlnLnNoOiBmaXggcGVybCBwYXRoCi0KLVVzZSAid2hpY2ggcGVybCIgYXMgc2hlYmFuZyBkb2Vzbid0IHdvcmsgd2hlbiBpdCBpcyBsb25nZXIgdGhhbgotQklOUFJNX0JVRl9TSVpFIHdoaWNoIGlzIDEyOCB1c3VhbGx5LiBTbyB1c2UgIi91c3IvYmluL2VudiBwZXJsIiB0bwotaW5zdGVhZCBvZi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2ggYi9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi1pbmRleCAwOTNlODA4Li44ZGZjNmRkIDEwMDc1NQotLS0tIGEvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaAotKysrIGIvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaAotQEAgLTk4LDcgKzk4LDcgQEAgZml4X3NjcmlwdHMoKSB7Ci0gICAgICAgICBzdD1gc2VkIDFxICRmYAotIAotICAgICAgICAgY2FzZSAiJHN0IiBpbgotLSAgICAgICAgKnBlcmwgKSBlY2hvICcjIScgYHdoaWNoIHBlcmxgCi0rICAgICAgICAqcGVybCApIGVjaG8gJyMhL3Vzci9iaW4vZW52IHBlcmwnCi0gICAgICAgICAgICAgICAgICBzZWQgMWQgJGYKLSAgICAgICAgICAgICAgICAgIDs7Ci0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NGEzOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vZml4LXNjcmlwdC1lcnItd2hlbi1wcm9jZXNzaW5nLWxpYmd1aWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotYXV0b2dlbi1uYXRpdmU6IGZpeCBzY3JpcHQgZXJyIHdoZW4gcHJvY2Vzc2luZyBsaWJndWlsZQotCi1kb19jb25maWd1cmUgZm9yIGF1dG9nZW4gd2lsbCBmYWlsIGlmIHByb2plY3QgZGlyZWN0b3J5IHBhdGgKLWNvbnRhaW5zICctSScgY2hhcmFjdGVyLCB3aGljaCBpcyBjYXVzZWQgYnkgdGhlIHVuc3VpdGFibGUgc2VkCi1zY3JpcHQgd2hlbiBwcm9jZXNzaW5nIGxpYmd1aWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlnL2FnX21hY3Jvcy5tNCBiL2NvbmZpZy9hZ19tYWNyb3MubTQKLWluZGV4IDU4MTg2YjYuLjU4ZWQyYWQgMTAwNjQ0Ci0tLS0gYS9jb25maWcvYWdfbWFjcm9zLm00Ci0rKysgYi9jb25maWcvYWdfbWFjcm9zLm00Ci1AQCAtMzIsNyArMzIsNyBAQCBBQ19ERUZVTihbSU5WT0tFX0FHX01BQ1JPU19MQVNUXSxbCi0gICBHVUlMRV9GTEFHUwotICAgW2FnX2d2PWBnZGlyPVxgcGtnLWNvbmZpZyAtLWNmbGFncy1vbmx5LUkgXAotICAgZ3VpbGUtJHtHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTn0gfCBcCi0tICBzZWQgJ3MvLUkgKi8vO3MvICotSS4qLyAvZydcYAotKyAgc2VkICdzLyAqLUkgKlwvLyBcLy9nJ1xgCi0gICBmb3IgZCBpbiAkZ2RpcgotICAgZG8gIHRlc3QgLWYgIiRkL2xpYmd1aWxlL3ZlcnNpb24uaCIgJiYgZ2Rpcj0kZCAmJiBicmVhawotICAgZG9uZQotZGlmZiAtLWdpdCBhL2NvbmZpZy9taXNjLmRlZiBiL2NvbmZpZy9taXNjLmRlZgotaW5kZXggNDkwZDM2MS4uNmUxODNlZiAxMDA2NDQKLS0tLSBhL2NvbmZpZy9taXNjLmRlZgotKysrIGIvY29uZmlnL21pc2MuZGVmCi1AQCAtMzQyLDcgKzM0Miw3IEBAIGRvLWFsd2F5cyA9IDw8LSBfRU5EX0FMV0FZU18KLSAJR1VJTEVfRkxBR1MKLSAJW2FnX2d2PWBnZGlyPVxgcGtnLWNvbmZpZyAtLWNmbGFncy1vbmx5LUkgXAotIAkJCWd1aWxlLSR7R1VJTEVfRUZGRUNUSVZFX1ZFUlNJT059IHwgXAotLQkJCXNlZCAncy8tSSAqLy87cy8gKi1JLiovIC9nJ1xgCi0rCQkJc2VkICdzLyAqLUkgKlwvLyBcLy9nJ1xgCi0gCQl0ZXN0IC16ICIkZ2RpciIgJiYgZ2Rpcj0vdXNyL2luY2x1ZGUKLSAJCWZvciBkIGluICRnZGlyCi0gCQlkbyAgdGVzdCAtZiAiJGQvbGliZ3VpbGUvdmVyc2lvbi5oIiAmJiBnZGlyPSRkICYmIGJyZWFrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9pbmNyZWFzZS10aW1lb3V0LWxpbWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vaW5jcmVhc2UtdGltZW91dC1saW1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVmZDdlNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9pbmNyZWFzZS10aW1lb3V0LWxpbWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBhdXRvZ2VuOiBpbmNyZWFzZSB0aW1lb3V0IGxpbWl0IGZvciBzaGVsbCBjb21tYW5kcwotCi1PbiBzb21lIG92ZXJsb2FkZWQgaG9zdHMsIHNoZWxsIGNvbW1hbmRzIG9mIGF1dG9nZW4gbWF5IGNhbiBub3QKLWZpbmlzaCBpbiA1IHNlY3MuIFRoaXMgaGFzIGNhdXNlZCBtYW55IGJ1aWxkIGZhaWx1cmVzLCBzbyBpbmNyZWFzZQotdGhlIHRpbWVvdXQgbGltaXQgdG8gZml4IHRoaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogWGluIE91eWFuZyA8WGluLk91eWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgICAgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1OGE4NDhiLi4xNzBkZDllIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzgsOSArMTc4LDkgQEAgdGltZV9kZWx0YT1gZXhwciAke2NvbmZpZ19lbmRfdGltZX0gLSAke2NvbmZpZ19zdGFydF90aW1lfSAyPi9kZXYvbnVsbGAKLSBpZiB0ZXN0IC16ICIke0FHX1RJTUVPVVR9IgotIHRoZW4KLSAgIGlmIHRlc3QgLXogIiR7dGltZV9kZWx0YX0iCi0tICB0aGVuIHRpbWVfZGVsdGE9MTAKLS0gIGVsaWYgdGVzdCAke3RpbWVfZGVsdGF9IC1sdCA1Ci0tICB0aGVuIHRpbWVfZGVsdGE9NSA7IGZpCi0rICB0aGVuIHRpbWVfZGVsdGE9NjAKLSsgIGVsaWYgdGVzdCAke3RpbWVfZGVsdGF9IC1sdCAzMAotKyAgdGhlbiB0aW1lX2RlbHRhPTMwIDsgZmkKLSAKLSAgIEFHX1RJTUVPVVQ9JHt0aW1lX2RlbHRhfQotIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9tay10cGwtY29uZmlnLnNoLWZvcmNlLWV4aXQtdmFsdWUtdG8tYmUtMC1pbi1zdWJwcm9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vbWstdHBsLWNvbmZpZy5zaC1mb3JjZS1leGl0LXZhbHVlLXRvLWJlLTAtaW4tc3VicHJvYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2ZGE3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9tay10cGwtY29uZmlnLnNoLWZvcmNlLWV4aXQtdmFsdWUtdG8tYmUtMC1pbi1zdWJwcm9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLW1rLXRwbC1jb25maWcuc2g6IGZvcmNlIGV4aXQgdmFsdWUgdG8gYmUgMCBpbiBzdWJwcm9jZXNzCi0KLVRoZSByZXR1cm4gdmFsdWUgb2Ygc3RhdGVtZW50IGxpc3Q9YDxzdWJjb21tYW5kcz5gIGlzIHRoZSBleGl0IHZhbHVlIG9mIHRoZQotc3ViY29tbWFuZHMuIFNvIGlmIHRoZSBzdWJjb21tYW5kcyBmYWlscywgdGhlIGNvbXBpbGF0aW9uIGZhaWxzLiBUaGlzIGlzIG9idmlvdXNseQotbm90IGludGVuZGVkLiBJbiB0aGUgbm9ybWFsIGNhc2UsIHdlIGV4cGVjdCB0aGUgZ3JlcCBjb21tYW5kIHRvIGZhaWwgYXMgdGhlcmUgc2hvdWxkCi1iZSBubyAnbm9yZXR1cm4nIHdvcmQgaW4gdGhlIGxpYmd1aWxlIGZpbGVzLgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBhdXRvb3B0cy9tay10cGwtY29uZmlnLnNoIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaCBiL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLWluZGV4IDkyNmY1YWIuLjZiNGEwZmIgMTAwNzU1Ci0tLS0gYS9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi0rKysgYi9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi1AQCAtMjAyLDcgKzIwMiw3IEBAIGZpeF9ndWlsZSgpIHsKLSAKLSAgICAgbGlzdD1gc2V0ICtlIDsgZXhlYyAyPi9kZXYvbnVsbAotICAgICAgICAgZmluZCAke2xpYmd1aWxlZGlyfS9saWJndWlsZSogLXR5cGUgZiB8IFwKLS0gICAgICAgICAgICB4YXJncyBncmVwIC1sIC1FICdcPG5vcmV0dXJuXD4nYAotKyAgICAgICAgICAgIHhhcmdzIGdyZXAgLWwgLUUgJ1w8bm9yZXR1cm5cPicgOyBleGl0IDBgCi0gCi0gICAgIHRlc3QgLXogIiRsaXN0IiAmJiBleGl0IDAKLSAKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjIxZjEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDI1YThhYzMwNDg2Nzk4ZDIzZjUxNjcyMmQ3M2ViNjIyZTYyNjRmMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAxMToxOTo1NiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdXRvbWFrZTogQWRkIGRlZmF1bHQgbGlidG9vbF90YWcgdG8gY3BwYXNtLgorCisgICAgKiBiaW4vYXV0b21ha2UuaW4gKHJlZ2lzdGVyX2xhbmd1YWdlKTogRGVmaW5lIGRlZmF1bHQgbGlidG9vbCB0YWcgdG8gYmUgQ0MKKyAgICBzaW5jZSBDUFBBU0NPTVBJTEUgaXMgdXNpbmcgQ0MgdG8gY2FsbCBhc3NlbWJsZXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGJpbi9hdXRvbWFrZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2Jpbi9hdXRvbWFrZS5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS9iaW4vYXV0b21ha2UuaW4KK0BAIC04MzEsNiArODMxLDcgQEAgcmVnaXN0ZXJfbGFuZ3VhZ2UgKCduYW1lJyA9PiAnY3BwYXNtJywKKyAJCSAgICdjb21waWxlcicgPT4gJ0NQUEFTQ09NUElMRScsCisgCQkgICAnY29tcGlsZV9mbGFnJyA9PiAnLWMnLAorIAkJICAgJ291dHB1dF9mbGFnJyA9PiAnLW8nLAorKwkJICAgJ2xpYnRvb2xfdGFnJyA9PiAnQ0MnLAorIAkJICAgJ2V4dGVuc2lvbnMnID0+IFsnLlMnLCAnLnN4J10pOworIAorICMgRm9ydHJhbiA3NwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1wb3J0LXRvLVBlcmwtNS4yMi1hbmQtbGF0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNjg5NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMTNmMDBlYjQ0OTNjMjE3MjY5Yjc2NjE0NzU5ZTQ1MmQ4MzAyOTU1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBUaHUsIDMxIE1hciAyMDE2IDE2OjM1OjI5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9tYWtlOiBwb3J0IHRvIFBlcmwgNS4yMiBhbmQgbGF0ZXIKLQotV2l0aG91dCB0aGlzIGNoYW5nZSwgUGVybCA1LjIyIGNvbXBsYWlucyAiVW5lc2NhcGVkIGxlZnQgYnJhY2UgaW4KLXJlZ2V4IGlzIGRlcHJlY2F0ZWQiIGFuZCB0aGlzIGlzIHBsYW5uZWQgdG8gYmVjb21lIGEgaGFyZCBlcnJvciBpbgotUGVybCA1LjI2LiAgU2VlOgotaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L3BlcmwtNS4yMi4wL3BvZC9wZXJsZGVsdGEucG9kI0FfbGl0ZXJhbF8lMjJ7JTIyX3Nob3VsZF9ub3dfYmVfZXNjYXBlZF9pbl9hX3BhdHRlcm4KLSogYmluL2F1dG9tYWtlLmluIChzdWJzdGl0dXRlX2FjX3N1YnN0X3ZhcmlhYmxlcyk6IEVzY2FwZSBsZWZ0IGJyYWNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxM2YwMGViNDQ5M2MyMTcyNjliNzY2MTQ3NTllNDUyZDgzMDI5NTVlXQotLS0tCi0gYmluL2F1dG9tYWtlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmluL2F1dG9tYWtlLmluIGIvYmluL2F1dG9tYWtlLmluCi1pbmRleCBhM2EwYWEzMTguLjJjOGYzMWUxNCAxMDA2NDQKLS0tLSBhL2Jpbi9hdXRvbWFrZS5pbgotKysrIGIvYmluL2F1dG9tYWtlLmluCi1AQCAtMzg3OCw3ICszODc4LDcgQEAgc3ViIHN1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzX3dvcmtlcgotIHN1YiBzdWJzdGl0dXRlX2FjX3N1YnN0X3ZhcmlhYmxlcwotIHsKLSAgIG15ICgkdGV4dCkgPSBAXzsKLS0gICR0ZXh0ID1+IHMvXCR7KFteIFx0PTore31dKyl9L3N1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzX3dvcmtlciAoJDEpL2dlOwotKyAgJHRleHQgPX4gcy9cJFt7XShbXiBcdD06K3t9XSspfS9zdWJzdGl0dXRlX2FjX3N1YnN0X3ZhcmlhYmxlc193b3JrZXIgKCQxKS9nZTsKLSAgIHJldHVybiAkdGV4dDsKLSB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlXzEuMTUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWI2MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlXzEuMTUuMS5iYgpAQCAtMCwwICsxLDQzIEBACityZXF1aXJlIGF1dG9tYWtlLmluYworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtbmF0aXZlIgorCitOQU1FVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgYXV0b2NvbmYgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWJ5dGVzIFwKKyAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAorICAgIHBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCisgICAgcGVybC1tb2R1bGUtdGhyZWFkcyBcCisgICAgcGVybC1tb2R1bGUtdmFycyAiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUgaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLWF1dG9jb25mIgorCitTUkNfVVJJICs9ICJmaWxlOi8vcHl0aG9uLWxpYmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYnVpbGR0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wZXJmb3JtYW5jZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTVkZjNmMmQ2ZWI4ZjgxZTcwYjhjYjYzYTkzYzg4NTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTg4ZTMyNTI3YWJlMDUyMzA3ZDIxYzhjYTAwMGFhMjM4YjkxNGRmMzYzYTYxN2UzOGY0ZmI4OWY1YWJmNjI2MCIKKworUEVSTCA9ICIke1VTUkJJTlBBVEh9L3BlcmwiCitQRVJMX2NsYXNzLW5hdGl2ZSA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgorUEVSTF9jbGFzcy1uYXRpdmVzZGsgPSAiJHtVU1JCSU5QQVRIfS9lbnYgcGVybCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nJHtQRVJMfSciCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTAyZGQ2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlXzEuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1yZXF1aXJlIGF1dG9tYWtlLmluYwotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtbmF0aXZlIgotCi1OQU1FVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgYXV0b2NvbmYgXAotICAgIHBlcmwgXAotICAgIHBlcmwtbW9kdWxlLWJ5dGVzIFwKLSAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCi0gICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKLSAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAotICAgIHBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCi0gICAgcGVybC1tb2R1bGUtdGhyZWFkcyBcCi0gICAgcGVybC1tb2R1bGUtdmFycyAiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUgaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLWF1dG9jb25mIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcHl0aG9uLWxpYmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYnVpbGR0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wZXJmb3JtYW5jZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvbWFrZS1wb3J0LXRvLVBlcmwtNS4yMi1hbmQtbGF0ZXIucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzE2OTQ2YTEwNWNhMjI4YWI1NDVmYzM3YTcwZGYzYTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzk0NmU5NDVhOTZlMjgxNTJiYTVhNmJlYjA2MjVjYTcxNWM2ZTMyYWM1NWYyZTM1M2VmNTRkZWYwYzhlZDkyNCIKLQotUEVSTCA9ICIke1VTUkJJTlBBVEh9L3BlcmwiCi1QRVJMX2NsYXNzLW5hdGl2ZSA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgotUEVSTF9jbGFzcy1uYXRpdmVzZGsgPSAiJHtVU1JCSU5QQVRIfS9lbnYgcGVybCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nJHtQRVJMfSciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzg0YzUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1MSUNfRklMRVNfQ0hLU1VNPSJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKLSAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKLSAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICIKLQotZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLUJJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKLQotU1JDUkVWID0gIjM1NDE5OWM3NjkyYzFiZWQ1M2EyYTE1ZjBlNGQ1MzE0NTdlOTVmMTciCi1TUkNfVVJJID0gIlwKLSAgICAgZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IFwKLSAgICAgZmlsZTovLzAwMDMtZ3Byb2YtYWRkLXVjbGliYy1zdXBwb3J0LXRvLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA2LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDgtQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDktZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEwLXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEyLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTMtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE0LWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE2LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTY5NjUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNjk2Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE3LWJmZC1JbXByb3ZlLWxvb2t1cC1vZi1maWxlLWxpbmUtaW5mb3JtYXRpb24tZm9yLWVycm8ucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxOC1QUi0yMTQwOS1zZWdmYXVsdC1pbi1fYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy02OTY5LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTY5NjlfMi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy03MjA5LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTcyMTAucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIyMy5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy03NjE0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTMucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODM5NC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy04Mzk1LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTZfODM5Ny5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy04Mzk4LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTg0MjEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTAzOF85MDQ0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTkwMzkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTA0MF85MDQyLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0NC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ1LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDYucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0Ny5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ4LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1MC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzUxLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1My5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzU1LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTYucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV8yLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfMy5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV81LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfNi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzcucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV84LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfOS5wYXRjaCBcCi0iCi1TICA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI5LjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI5LjEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YTcyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMKQEAgLTAsMCArMSw0MyBAQAorTElDX0ZJTEVTX0NIS1NVTT0iXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCisgICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCisgICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAiCisKK2RlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKKyAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQorICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQorCitCSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCisKK1NSQ1JFViA/PSAiOTAyNzZmMTUzNzlkMzgwNzYxZmM0OTlkYTJiYTI0Y2ZiM2MxMmE5NCIKK0JJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD1iaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoO3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiXAorICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKKyAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOS4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjI4LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjkuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI5LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4yOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI5LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKaW5kZXggOGZiMWI0ZS4uMGI1MTVkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY4OWQwMTE2ODhiNWZmOTQ4MWQ0MzY3YmVmM2RlYTdhN2IyODY3ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU4YWM5Zjk1YTNkODNjMjllZmFmN2E4OTA2ZmI2YWVmZWE4YzhlNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjU4OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCkBAIC00Myw3ICs0Myw3IEBACiAgTERfRkxBRz0KICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX30KIGRpZmYgLS1naXQgYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLWluZGV4IGU2NWY5YTNjY2YuLmQ5OWQyYzFkMmEgMTAwNjQ0CitpbmRleCBkOTEzOGJjMDU5Li5lNDhmYWVjYTQzIDEwMDY0NAogLS0tIGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCiArKysgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKIEBAIC0xMzgsOCArMTM4LDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KQEAgLTU4LDUgKzU4LDUgQEAKICBpZiB0ZXN0IC16ICIkUExUIjsgdGhlbgogICAgSVBMVD0iLmlwbHQgICAgICAgICAke1JFTE9DQVRJTkctMH0gOiB7ICooLmlwbHQpIH0iCiAtLSAKLTIuMTIuMAorMi4xNC4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKaW5kZXggMTQyOTlmZC4uMzcwMzMzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDdjN2RlMTA3YjRiMGE1MDdkMmFlY2EzZTNhODZkMDFjYjRiNTEzNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhmOTI5YzYxNjIwODM1MWQwOTcxZDdkZmQ3NTc0ZDQ4ZDMxNDQ2MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjM3OjA1IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTVdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdApAQCAtNTcsNSArNTcsNSBAQAogICAgbGlicz0ke05BVElWRV9MSUJfRElSU30KICAgIGlmIFsgIngke05BVElWRX0iID0gInh5ZXMiIF0gOyB0aGVuCiAtLSAKLTIuMTIuMAorMi4xNC4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmMwOWNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZTVhODA2YWFlMDJhMTAyOTBjNzFkZWI3MmY2Mjk0Yzk4MDY4MzY4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCisKK2dwcm9mIG5lZWRzIHRvIGtub3cgYWJvdXQgdWNsaWJjCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlICAgICAgIHwgMiArLQorIGdwcm9mL2NvbmZpZ3VyZSB8IDUgKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBiZTlkZDg5ZDliLi5kOGFmMTU1YWI1IDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0zODQ0LDcgKzM4NDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCisgICBvcjFrKi0qLSopCisgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBnZGIiCisgICAgIDs7CistICBzaC0qLSopCisrICBzaCotKi0qIHwgc2g2NC0qLSopCisgICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgICAgICBzaCotKi1lbGYpCisgICAgICAgICAgOzsKK2RpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKK2luZGV4IGU3MWZlOGI5ZTQuLjY3OWUwZGNlNzcgMTAwNzU1CistLS0gYS9ncHJvZi9jb25maWd1cmUKKysrKyBiL2dwcm9mL2NvbmZpZ3VyZQorQEAgLTU4NzQsNiArNTg3NCwxMSBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgOzsKKyAKKytsaW51eC11Y2xpYmMqKQorKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKysgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC9saWIvbGlidUNsaWJjLSouc29gCisrICA7OworKworIG5ldGJzZCopCisgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1ncHJvZi1hZGQtdWNsaWJjLXN1cHBvcnQtdG8tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWdwcm9mLWFkZC11Y2xpYmMtc3VwcG9ydC10by1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZGI0MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWdwcm9mLWFkZC11Y2xpYmMtc3VwcG9ydC10by1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDc4OTNkMmIyNGQwMzAzYmRhM2EwMDQ5ODQ2NDg5NjE5ZmZkMTM4N2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA3OjMzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTVdIGdwcm9mOiBhZGQgdWNsaWJjIHN1cHBvcnQgdG8gY29uZmlndXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ3Byb2YvY29uZmlndXJlIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQotaW5kZXggOWU2YjhmMzUyNS4uMzhhNGMwYjBlNSAxMDA3NTUKLS0tLSBhL2dwcm9mL2NvbmZpZ3VyZQotKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICA7OwotIAotK2xpbnV4LXVjbGliYyopCi0rICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKLSsgIDs7Ci0rCi0gbmV0YnNkKikKLSAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCmluZGV4IGM2YjlkZTcuLjM4ZWVlMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGUzNDY1MGM1MDU3NGE4YTM5ZDY5NDU2N2VkNjA3YTYzMDA2YjZmOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDM2MzRlYzM1NDdiYzBmOGE1ZDFiOGFkMTUzNjVlMmY4MzZjZGE2NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA5OjU4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDQvMTVdIFBvaW50IHNjcmlwdHMgbG9jYXRpb24gdG8gbGliZGlyCkBAIC0xMiw3ICsxMiw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCi1pbmRleCAxNWJlYWE3MDIxLi5iYmY5YzY3MWQ4IDEwMDY0NAoraW5kZXggNjI1MzQ3ZmY2Mi4uZDUzMzRkMjY4MSAxMDA2NDQKIC0tLSBhL2xkL01ha2VmaWxlLmFtCiArKysgYi9sZC9NYWtlZmlsZS5hbQogQEAgLTU3LDcgKzU3LDcgQEAgZW5kaWYKQEAgLTI1LDEwICsyNSwxMCBAQAogIEVNVUwgPSBARU1VTEAKICBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgotaW5kZXggMDQyYjY5MGVkNi4uMzdlN2IyNWU5YSAxMDA2NDQKK2luZGV4IGJhMjUxNzc3YjAuLmEyY2YyMjgyYjUgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5pbgogKysrIGIvbGQvTWFrZWZpbGUuaW4KLUBAIC00NTIsNyArNDUyLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorQEAgLTQ0Niw3ICs0NDYsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCiAgIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgogICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgogICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgpAQCAtMzgsNSArMzgsNSBAQAogIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCiAgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCiAtLSAKLTIuMTIuMAorMi4xNC4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKaW5kZXggNzI2ZjcwMi4uNTkxNTBhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDQyMjkyZjU1MzNiY2E5MDRmMjMwYThlMDNjZWVlMWY4NGVmMGM0ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDlkMzdjOGY2OGMwN2RhNjMxODZjYjk5M2YxMjIxZjZjMTFlY2E0MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDUvMTVdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90CkBAIC0xNSwxOSArMTUsMTkgQEAKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0gYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLWluZGV4IDg0YWRhZWY2ZGYuLmFiOGM3NDI1N2UgMTAwNjQ0CitpbmRleCA5YWMxODQwMzE2Li45ZGM0YzE0OWJjIDEwMDY0NAogLS0tIGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtCiArKysgYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLUBAIC0xNDExLDYgKzE0MTEsOCBAQCBmcmFnbWVudCA8PEVPRgorQEAgLTE0NjMsNiArMTQ2Myw4IEBAIGZyYWdtZW50IDw8RU9GCiAgCSAgICAgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQogIAkgICAgewotIAkgICAgICBsaWJfcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7Ci0rCSAgICAgIGlmICgobGliX3BhdGgpICYmIChzdHJsZW4gKGxpYl9wYXRoKSA9PSAwKSkKLSsJCSAgbGliX3BhdGggPSBOVUxMOwotIAkgICAgICBpZiAoZ2xkJHtFTVVMQVRJT05fTkFNRX1fc2VhcmNoX25lZWRlZCAobGliX3BhdGgsICZuLAotIAkJCQkJCSAgICAgIGZvcmNlKSkKKyAJICAgICAgcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CisrCSAgICAgIGlmICgocGF0aCkgJiYgKHN0cmxlbiAocGF0aCkgPT0gMCkpCisrCQkgIHBhdGggPSBOVUxMOworIAkgICAgICBpZiAocGF0aAorIAkJICAmJiBnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChwYXRoLCAmbiwgZm9yY2UpKQogIAkJYnJlYWs7Ci1AQCAtMTY5Miw2ICsxNjk0LDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitAQCAtMTc0MCw2ICsxNzQyLDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCiAgICBycGF0aCA9IGNvbW1hbmRfbGluZS5ycGF0aDsKICAgIGlmIChycGF0aCA9PSBOVUxMKQogICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CkBAIC0zNyw1ICszNyw1IEBACiAgICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzcwY2E3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1FeHBsaWNpdGx5LWxpbmstd2l0aC1saWJtLW9uLXVjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gNmE0NmJmMTUxZDdlNTNkZjhiNWU3NjQ1YTJkMjQxOTY3Njg4MzY4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MzI6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xNV0gRXhwbGljaXRseSBsaW5rIHdpdGggbGlibSBvbiB1Y2xpYmMKLQotRGVzY3JpcHRpb246Ci0KLVdlIGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlIGxpYnRvb2wgcGF0Y2ggYW55bW9yZSBmb3IgYmludXRpbHMgYWZ0ZXIKLWxpYnRvb2wgaGFzIGJlZW4gdXBkYXRlZCB1cHN0cmVhbSBpdCBpbmNsdWRlIHN1cHBvcnQgZm9yIGl0LiBIb3dldmVyCi1mb3IgYnVpbGRpbmcgZ2FzIG5hdGl2ZWx5IG9uIHVjbGliYyBzeXN0ZW1zIHdlIGhhdmUgdG8gbGluayBpdCB3aXRoCi0tbG0gc28gdGhhdCBpdCBwaWNrcyB1cCBtaXNzaW5nIHN5bWJvbHMuCi0KLS9sb2NhbC9idWlsZF9hcmVhL0JVSUxEL2FybV92NXRfbGVfdWNsaWJjL2JpbnV0aWxzLTIuMTcuNTAvb2JqZGlyL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEoZmxvYXRmb3JtYXQubyk6Ci1JbiBmdW5jdGlvbiBgZmxvYXRmb3JtYXRfZnJvbV9kb3VibGUnOgotZmxvYXRmb3JtYXQuYzooLnRleHQrMHgxZWMpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBmcmV4cCcKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4MmY4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi0vbG9jYWwvYnVpbGRfYXJlYS9CVUlMRC9hcm1fdjV0X2xlX3VjbGliYy9iaW51dGlscy0yLjE3LjUwL29iamRpci9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hKGZsb2F0Zm9ybWF0Lm8pOgotSW4gZnVuY3Rpb24gYGZsb2F0Zm9ybWF0X3RvX2RvdWJsZSc6Ci1mbG9hdGZvcm1hdC5jOigudGV4dCsweDM4YSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxkZXhwJwotZmxvYXRmb3JtYXQuYzooLnRleHQrMHgzZDIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZGV4cCcKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4NDNlKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi1mbG9hdGZvcm1hdC5jOigudGV4dCsweDRlMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxkZXhwJwotY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLW1ha2VbNF06ICoqKiBbYXMtbmV3XSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2FzL2NvbmZpZ3VyZS50Z3QgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUudGd0IGIvZ2FzL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDcxMWQ1MzdlOTUuLjdjZDJkYzE3NmEgMTAwNjQ0Ci0tLS0gYS9nYXMvY29uZmlndXJlLnRndAotKysrIGIvZ2FzL2NvbmZpZ3VyZS50Z3QKLUBAIC00OTQsNiArNDk0LDEyIEBAIGNhc2UgJHtnZW5lcmljX3RhcmdldH0gaW4KLSAgICotKi1uZXR3YXJlKQkJCQlmbXQ9ZWxmIGVtPW5ldHdhcmUgOzsKLSBlc2FjCi0gCi0rY2FzZSAke2dlbmVyaWNfdGFyZ2V0fSBpbgotKyAgYXJtLSotKnVjbGliYyopCi0rICAgIG5lZWRfbGlibT15ZXMKLSsgICAgOzsKLStlc2FjCi0rCi0gY2FzZSAke2NwdV90eXBlfSBpbgotICAgYWFyY2g2NCB8IGFscGhhIHwgYXJtIHwgaTM4NiB8IGlhNjQgfCBtaWNyb2JsYXplIHwgbWlwcyB8IG5zMzJrIHwgb3IxayB8IG9yMWtuZCB8IHBkcDExIHwgcHBjIHwgcmlzY3YgfCBzcGFyYyB8IHo4MCB8IHo4aykKLSAgICAgYmZkX2dhcz15ZXMKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4N2VmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCkBAIC0wLDAgKzEsMjExNTcgQEAKK0Zyb20gNzFjNzM0YmIzNzU0MzE5MDI5ZGNmYzg5OGNlZGJhZGU0MjI3NGRjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTVdIFVzZSBsaWJ0b29sIDIuNAorCitnZXQgbGlidG9vbCBzeXNyb290IHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBiZmQvY29uZmlndXJlICAgICAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KKyBiZmQvY29uZmlndXJlLmFjICAgICB8ICAgIDIgKy0KKyBiaW51dGlscy9jb25maWd1cmUgICB8IDEzMTYgKysrKysrKysrKysrKysrKystLS0tLS0KKyBjb25maWd1cmUgICAgICAgICAgICB8ICAgIDIgKy0KKyBnYXMvY29uZmlndXJlICAgICAgICB8IDEzMTQgKysrKysrKysrKysrKysrKystLS0tLS0KKyBncHJvZi9jb25maWd1cmUgICAgICB8IDEzMjEgKysrKysrKysrKysrKysrKystLS0tLS0KKyBsZC9jb25maWd1cmUgICAgICAgICB8IDE2OTEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBsaWJ0b29sLm00ICAgICAgICAgICB8IDEwODAgKysrKysrKysrKysrKy0tLS0tLQorIGx0bWFpbi5zaCAgICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIGx0b3B0aW9ucy5tNCAgICAgICAgIHwgICAgMiArLQorIGx0dmVyc2lvbi5tNCAgICAgICAgIHwgICAxMiArLQorIGx0fm9ic29sZXRlLm00ICAgICAgIHwgICAgMiArLQorIG9wY29kZXMvY29uZmlndXJlICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQorIG9wY29kZXMvY29uZmlndXJlLmFjIHwgICAgMiArLQorIHpsaWIvY29uZmlndXJlICAgICAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQorIDE1IGZpbGVzIGNoYW5nZWQsIDk5MjcgaW5zZXJ0aW9ucygrKSwgMzY5NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCitpbmRleCA0ODI3NjU5NGVkLi4zZWNlODk0M2YzIDEwMDc1NQorLS0tIGEvYmZkL2NvbmZpZ3VyZQorKysrIGIvYmZkL2NvbmZpZ3VyZQorQEAgLTY3Miw2ICs2NzIsOSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKythY19jdF9BUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzg1LDYgKzc4OCw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NjEsNiArMTQ2NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCisgICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCitAQCAtNTM5Myw4ICs1Mzk5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU0MzQsNyArNTQ0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYxMjAsOCArNjEyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MTcwLDYgKzYxNzYsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYxODYsNiArNjI2NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjM1NCw3ICs2NDM5LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY1MDgsNiArNjU5NCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1MjEsMTEgKzY2MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTY1NDEsNyArNjc5NSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY1NjEsMTEgKzY4MTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjU4MSw3ICs2ODM5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MDAsNiArNjg1OCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjYxMSwxNiArNjg3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY5NjIsOCArNzI4MCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjk5OSw2ICs3MzE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTcwNDAsNiArNzM1OSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MDUxLDcgKzczODIsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MDc3LDggKzc0MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MDg4LDggKzc0MTksOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MTI2LDYgKzc0NTcsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MTQyLDYgKzc0ODMsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MzUzLDYgKzc3MzMsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc5MTYsNiArODQxMyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MDgwLDcgKzg1NzksOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODE2OSw3ICs4NjY5LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NDY3LDggKzg5NjcsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg2MzQsNiArOTEzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg2OTYsNyArOTIwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NzUzLDEzICs5MjU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg4MjAsNiArOTMyOCwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkxNzAsNyArOTY4Myw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkyNjksMTIgKzk3ODMsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTI4OCw4ICs5ODAyLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkzMDcsOCArOTgyMSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MzU0LDggKzk4NjgsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ4NSw3ICs5OTk5LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk0OTgsMjIgKzEwMDE4LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05NTI1LDcgKzEwMDUyLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTM4LDIyICsxMDA3MSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk1OTgsMjAgKzEwMTM4LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTY3Miw3ICsxMDI1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk2ODAsNyArMTAyNjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05Njk2LDcgKzEwMjc5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk3MjAsMTAgKzEwMzAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTgwMiwyMyArMTAzODUsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk5MDMsNyArMTA0OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05OTIyLDkgKzEwNTE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNTAwLDggKzExMDk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNTM0LDEzICsxMTEzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA2MzIsNyArMTEyODcsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE0NzIsMTAgKzEyMTI3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE1NzgsMTAgKzEyMjMzLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTQxNzIsNyArMTQ4MjcsNyBAQCBTSEFSRURfTERGTEFHUz0KKyBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCitAQCAtMTY4NzksMTMgKzE3NTM0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTY5MDAsMTQgKzE3NTYyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2OTQwLDEyICsxNzYwNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzAwMCw4ICsxNzY2NSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTcwMTEsMTIgKzE3NjgxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNzAzMiw3ICsxNzcwNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE3MDY4LDYgKzE3NzM5LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNzg0Nyw3ICsxODUxOSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTc5NTAsMTkgKzE4NjIzLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE3OTkyLDYgKzE4Njg4LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE4MDAxLDYgKzE4NzAzLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xODExNSwxMiArMTg4MjAsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTgyMDcsOSArMTg5MTIsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xODIyNSw2ICsxODkyNyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTgyNTcsMjEwICsxODk2MiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKK2luZGV4IDhmZDAzYTdlYTguLjg4MTZjMzI4NmMgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlndXJlLmFjCisrKysgYi9iZmQvY29uZmlndXJlLmFjCitAQCAtMjU0LDcgKzI1NCw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCitpbmRleCAyMmUxYjE3MzZlLi4zMjFiNjM1MzViIDEwMDc1NQorLS0tIGEvYmludXRpbHMvY29uZmlndXJlCisrKysgYi9iaW51dGlscy9jb25maWd1cmUKK0BAIC02NTksOCArNjU5LDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc3Miw2ICs3NzUsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDQ0LDYgKzE0NDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCisgICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCitAQCAtNTE2MCw4ICs1MTY2LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUyMDEsNyArNTIwNyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTU4ODcsOCArNTg5Myw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC01OTM3LDYgKzU5NDMsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTU5NTMsNiArNjAzMywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjEyMSw3ICs2MjA2LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYyNzUsNiArNjM2MSwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyOTAsOSArNjM5MSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjMwOCw3ICs2NTYyLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjMyOCwxMSArNjU4MiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MzQ4LDcgKzY2MDYsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjM2Nyw2ICs2NjI1LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02Mzc4LDEyICs2NjQwLDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTYzOTUsNiArNjY1NSw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTY3MjksOCArNzA0Nyw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjc2Niw2ICs3MDg0LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY4MDcsNiArNzEyNiwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02ODE4LDcgKzcxNDksNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02ODQ0LDggKzcxNzUsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02ODU1LDggKzcxODYsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02ODkzLDYgKzcyMjQsMjEgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02OTA4LDYgKzcyNTQsNDAgQEAgZmkKKyAKKyAKKyAKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MTIwLDYgKzc1MDAsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc2ODMsNiArODE4MCw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03ODc4LDcgKzgzNzcsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzk2Nyw3ICs4NDY3LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MjY1LDggKzg3NjUsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg0MzIsNiArODkzMCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg0OTQsNyArODk5OCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NTUxLDEzICs5MDU1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg2MTgsNiArOTEyNiwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg5NjgsNyArOTQ4MSw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkwNjcsMTIgKzk1ODEsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTA4Niw4ICs5NjAwLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkxMDUsOCArOTYxOSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MTUyLDggKzk2NjYsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTI4Myw3ICs5Nzk3LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkyOTYsMjIgKzk4MTYsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkzMjMsNyArOTg1MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTMzNiwyMiArOTg2OSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkzOTYsMjAgKzk5MzYsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NDcwLDcgKzEwMDUzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTQ3OCw3ICsxMDA2MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk0OTQsNyArMTAwNzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTUxOCwxMCArMTAxMDEsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05NjAwLDIzICsxMDE4MywzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTcwMSw3ICsxMDI5Nyw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk3MjAsOSArMTAzMTYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTAyOTgsOCArMTA4OTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAzMzIsMTMgKzEwOTI5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDQzMCw3ICsxMTA4NSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTI3MCwxMCArMTE5MjUsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTM3NiwxMCArMTIwMzEsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNTQ0NiwxMyArMTYxMDEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTQ2NywxNCArMTYxMjksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU1MDcsMTIgKzE2MTcyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NTY3LDggKzE2MjMyLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNTU3OCwxMiArMTYyNDgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE1NTk5LDcgKzE2MjcxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTU2MzUsNiArMTYzMDYsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE2MzkyLDcgKzE3MDY0LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNjQ5NSwxOSArMTcxNjgsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTY1MzcsNiArMTcyMzMsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTY1NDYsNiArMTcyNDgsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE2NjYwLDEyICsxNzM2NSwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNjc1Miw5ICsxNzQ1Nyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE2NzcwLDYgKzE3NDcyLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNjgwMiwyMTAgKzE3NTA3LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGQ4YWYxNTVhYjUuLjAwNWVkODI3YWIgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTM4NDQsNyArMzg0NCw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG9yMWsqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdkYiIKKyAgICAgOzsKKy0gIHNoKi0qLSogfCBzaDY0LSotKikKKysgIHNoLSotKiB8IHNoNjQtKi0qKQorICAgICBjYXNlICIke3RhcmdldH0iIGluCisgICAgICAgc2gqLSotZWxmKQorICAgICAgICAgIDs7CitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDkzYWZiMjBjOGYuLjgxZGQ0Y2JkOTcgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtNjUwLDggKzY1MCwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtNDkyMSw4ICs0OTI1LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTQ5NjIsNyArNDk2Niw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTU2NDgsOCArNTY1Miw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC01Njk4LDYgKzU3MDIsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTU3MTQsNiArNTc5MiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNTg4Miw3ICs1OTY1LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYwMzYsNiArNjEyMCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYwNTEsOSArNjE1MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjA2OSw3ICs2MzIxLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjA4OSwxMSArNjM0MSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MTA5LDcgKzYzNjUsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjEyOCw2ICs2Mzg0LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02MTM5LDEyICs2Mzk5LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTYxNTYsNiArNjQxNCw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTY0OTAsOCArNjgwNiw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjUyNyw2ICs2ODQzLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY1NjgsNiArNjg4NSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02NTc5LDcgKzY5MDgsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02NjA1LDggKzY5MzQsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02NjE2LDggKzY5NDUsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02NjU0LDYgKzY5ODMsMjEgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02NjY5LDYgKzcwMTMsNDAgQEAgZmkKKyAKKyAKKyAKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC02ODgxLDYgKzcyNTksMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc0NDQsNiArNzkzOSw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03NjM5LDcgKzgxMzYsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzcyOCw3ICs4MjI2LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MDI2LDggKzg1MjQsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTgxOTMsNiArODY4OSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTgyNTUsNyArODc1Nyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04MzEyLDEzICs4ODE0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTgzNzksNiArODg4NSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg3MjksNyArOTI0MCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTg4MjgsMTIgKzkzNDAsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtODg0Nyw4ICs5MzU5LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTg4NjYsOCArOTM3OCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC04OTEzLDggKzk0MjUsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTA0NCw3ICs5NTU2LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkwNTcsMjIgKzk1NzUsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkwODQsNyArOTYwOSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTA5NywyMiArOTYyOCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkxNTcsMjAgKzk2OTUsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05MjMxLDcgKzk4MTIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05MjM5LDcgKzk4MjAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05MjU1LDcgKzk4MzYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTI3OSwxMCArOTg2MCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTkzNjEsMjMgKzk5NDIsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk0NjIsNyArMTAwNTYsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05NDgxLDkgKzEwMDc1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwMDU5LDggKzEwNjUzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMDkzLDEzICsxMDY4OCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAxOTEsNyArMTA4NDQsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTEwMzEsMTAgKzExNjg0LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTExMzcsMTAgKzExNzkwLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTU0MzYsMTMgKzE2MDg5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU0NTcsMTQgKzE2MTE3LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NDk3LDEyICsxNjE2MCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTU1Nyw4ICsxNjIyMCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTU1NjgsMTIgKzE2MjM2LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNTU4OSw3ICsxNjI1OSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE1NjI1LDYgKzE2Mjk0LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNjM4OSw3ICsxNzA1OSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTY0OTIsMTkgKzE3MTYzLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE2NTM0LDYgKzE3MjI4LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE2NTQzLDYgKzE3MjQzLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNjY1NywxMiArMTczNjAsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTY3NDksOSArMTc0NTIsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNjc2Nyw2ICsxNzQ2Nyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTY3OTksMjEwICsxNzUwMiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCitpbmRleCA2NzllMGRjZTc3Li5hYzRjMDE2YTYzIDEwMDc1NQorLS0tIGEvZ3Byb2YvY29uZmlndXJlCisrKysgYi9ncHJvZi9jb25maWd1cmUKK0BAIC02MzEsOCArNjMxLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc0NCw2ICs3NDcsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDAyLDYgKzE0MDYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgCisgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKK0BAIC00ODM2LDggKzQ4NDIsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNDg3Nyw3ICs0ODgzLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTU2Myw4ICs1NTY5LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU2MTMsNiArNTYxOSw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTYyOSw2ICs1NzA5LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC01Nzk3LDcgKzU4ODIsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNTg3NCwxMSArNTk2MCw2IEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICA7OworIAorLWxpbnV4LXVjbGliYyopCistICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorLSAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKKy0gIDs7CistCisgbmV0YnNkKikKKyAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJworQEAgLTU5NTYsNiArNjAzNywyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTU5NzEsOSArNjA2NywxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTk4OSw3ICs2MjM4LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjAwOSwxMSArNjI1OCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MDI5LDcgKzYyODIsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjA0OCw2ICs2MzAxLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02MDU5LDEyICs2MzE2LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTYwNzYsNiArNjMzMSw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTY0MTAsOCArNjcyMyw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjQ0Nyw2ICs2NzYwLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY0ODgsNiArNjgwMiwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02NDk5LDcgKzY4MjUsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02NTI1LDggKzY4NTEsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02NTM2LDggKzY4NjIsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02NTc0LDYgKzY5MDAsMTggQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02NTkwLDYgKzY5MjgsNDMgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC02ODAxLDYgKzcxNzYsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTczNjQsNiArNzg1Niw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03NTU5LDcgKzgwNTMsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzY0OCw3ICs4MTQzLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC03OTQ2LDggKzg0NDEsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTgxMTMsNiArODYwNiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTgxNzUsNyArODY3NCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04MjMyLDEzICs4NzMxLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTgyOTksNiArODgwMiwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg2NDksNyArOTE1Nyw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTg3NDgsMTIgKzkyNTcsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtODc2Nyw4ICs5Mjc2LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTg3ODYsOCArOTI5NSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC04ODMzLDggKzkzNDIsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtODk2NCw3ICs5NDczLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTg5NzcsMjIgKzk0OTIsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkwMDQsNyArOTUyNiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTAxNywyMiArOTU0NSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkwNzcsMjAgKzk2MTIsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05MTUxLDcgKzk3MjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05MTU5LDcgKzk3MzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05MTc1LDcgKzk3NTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTE5OSwxMCArOTc3NywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTkyODEsMjMgKzk4NTksMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTkzODIsNyArOTk3Myw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk0MDEsOSArOTk5Miw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC05OTc5LDggKzEwNTcwLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMDEzLDEzICsxMDYwNSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAxMTEsNyArMTA3NjEsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTA5NTEsMTAgKzExNjAxLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTEwNTcsMTAgKzExNzA3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTMwMDUsMTMgKzEzNjU1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMwMjYsMTQgKzEzNjgzLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMDY2LDEyICsxMzcyNiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzEyNiw4ICsxMzc4NiwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTMxMzcsMTIgKzEzODAyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMzE1OCw3ICsxMzgyNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEzMTk0LDYgKzEzODYwLDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xMzk1MCw3ICsxNDYxNyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTQwNTMsMTkgKzE0NzIxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE0MDk1LDYgKzE0Nzg2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE0MTA0LDYgKzE0ODAxLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNDIxOCwxMiArMTQ5MTgsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTQzMTAsOSArMTUwMTAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNDMyOCw2ICsxNTAyNSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTQzNjAsMjEwICsxNTA2MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCitpbmRleCBkN2Y2NmY4Y2RjLi40ZTcxNTExYmQxIDEwMDc1NQorLS0tIGEvbGQvY29uZmlndXJlCisrKysgYi9sZC9jb25maWd1cmUKK0BAIC02NTUsOCArNjU1LDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc3OCw2ICs3ODEsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDY0LDYgKzE0NjgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAorICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgorIAorQEAgLTU2NTgsOCArNTY2NCw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01Njk5LDcgKzU3MDUsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02Mzg1LDggKzYzOTEsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjQzNSw2ICs2NDQxLDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02NDUxLDYgKzY1MzEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTY2MTksNyArNjcwNCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02NzczLDYgKzY4NTksMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02Nzg4LDkgKzY4ODksMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTY4MDYsNyArNzA2MCw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY4MjYsMTEgKzcwODAsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjg0Niw3ICs3MTA0LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY4NjUsNiArNzEyMywxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjg3NiwxMiArNzEzOCwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKyAKKyAKKyAKK0BAIC02ODkxLDYgKzcxNTMsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KK0BAIC03MjI3LDggKzc1NDUsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcyNjQsNiArNzU4Miw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MzA1LDYgKzc2MjQsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzMxNiw3ICs3NjQ3LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzM0Miw4ICs3NjczLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzM1Myw4ICs3Njg0LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzM5MSw2ICs3NzIyLDE5IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzQwNCw2ICs3NzQ4LDQyIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzYxOCw2ICs3OTk4LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC04MTgxLDYgKzg2NzgsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODI0OSw2ICs4NzQ4LDE2IEBAIGRvbmUKKyAKKyAKKyAKKytmdW5jX3N0cmlwbmFtZV9jbmYgKCkKKyt7CisrICBjYXNlICR7Mn0gaW4KKysgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorKworKworKworIAorIAorICMgU2V0IG9wdGlvbnMKK0BAIC04Mzc3LDcgKzg4ODYsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODQ2Niw3ICs4OTc2LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NzY0LDggKzkyNzQsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg5MzEsNiArOTQzOSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg5OTMsNyArOTUwNyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC05MDUwLDEzICs5NTY0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTkxMTcsNiArOTYzNSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTk0NjcsNyArOTk5MCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTk1NjYsMTIgKzEwMDkwLDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTk1ODUsOCArMTAxMDksOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTYwNCw4ICsxMDEyOCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NjUxLDggKzEwMTc1LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk3ODIsNyArMTAzMDYsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTc5NSwyMiArMTAzMjUsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk4MjIsNyArMTAzNTksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk4MzUsMjIgKzEwMzc4LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTg5NCwyMSArMTA0NDQsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKy0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTk2OSw3ICsxMDU2Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk5NzcsNyArMTA1NzAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05OTkzLDcgKzEwNTg2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTEwMDE3LDEwICsxMDYxMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTEwMDk5LDIzICsxMDY5MiwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtMTAyMDAsNyArMTA4MDYsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC0xMDIxOSw5ICsxMDgyNSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDc5Nyw4ICsxMTQwMyw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDgzMSwxMyArMTE0MzgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwOTI5LDcgKzExNTk0LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNzY5LDEwICsxMjQzNCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExODc1LDEwICsxMjU0MCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEyMjcwLDYgKzEyOTM1LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorIAorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9JENDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBsdF9zYXZlX0xEPSRMRAorICAgbHRfc2F2ZV9HQ0M9JEdDQworICAgR0NDPSRHWFgKK0BAIC0xMjI4Nyw2ICsxMjk1Myw3IEBAICRSTSAtciBjb25mdGVzdCoKKyAgIGZpCisgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAorICAgQ0M9JHtDWFgtImMrKyJ9CisrICBDRkxBR1M9JENYWEZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIGNvbXBpbGVyX0NYWD0kQ0MKKyAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbworQEAgLTEyNTY5LDcgKzEzMjM2LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCisgICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJworICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKKyAgICAgICAgICAgIyBleGVjdXRhYmxlLgorLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTI1ODIsMjIgKzEzMjU1LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCisrZmkKKyAKKyAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCitAQCAtMTI2MTAsNyArMTMyOTAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgIGVsc2UKKyAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMjYyMywyMiArMTMzMDksMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKKytmaQorIAorIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTEyNjgxLDI5ICsxMzM3NCw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgIDs7CisgCisgICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCistICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKy0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCistICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKy0gICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KKy0gICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworLQorLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorLSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKy0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKy0gICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCistCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGVsc2UKKy0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZml+CistICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubworLSAgICAgICAgZmkKKy0gICAgICAgIDs7CisrCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKysJLGNsKiB8IG5vLGNsKikKKysJICAjIE5hdGl2ZSBNU1ZDCisrCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyAnCisrCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCisrCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKKysJICBmaWxlX2xpc3Rfc3BlY19DWFg9J0AnCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJICBsaWJleHQ9bGliCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGVsc2UKKysJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBmaX4KKysJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICAgIGxpbmtuYW1lcz0nCisrCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBDWFgpPSd0cnVlJworKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorKwkgIG9sZF9wb3N0aW5zdGFsbF9jbWRzX0NYWD0nY2htb2QgNjQ0ICRvbGRsaWInCisrCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAgICouZXhlfCouRVhFKSA7OworKwkgICAgICAqKQorKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJCTs7CisrCSAgICBlc2FjfgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKysJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgICAgZmknCisrCSAgOzsKKysJKikKKysJICAjIGcrKworKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKysJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KKysJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKysKKysJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisrCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisrCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGVsc2UKKysJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBmaX4KKysJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICBlbHNlCisrCSAgICBsZF9zaGxpYnNfQ1hYPW5vCisrCSAgZmkKKysJICA7OworKwllc2FjCisrCTs7CisgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAKKyAKK0BAIC0xMjgwOSw3ICsxMzU0OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICopCisgICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubworQEAgLTEyODgwLDEwICsxMzYxOSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgaWE2NCopCistCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgICopCistCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgZXNhYworIAkgICAgICBmaQorQEAgLTEyOTI0LDkgKzEzNjYzLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgICopCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJICAgICAgZWxzZQorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICAgIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPXllcworQEAgLTEyOTk2LDIwICsxMzczNSwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgorLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKKyAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CistCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgCQkkUkFOTElCICRvbGRsaWInCisgCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworIAkgICAgICA7OworIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKKyAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCitAQCAtMTMyMDQsNyArMTM5NDMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgICAqKQorLQkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgIGVzYWMKKyAKK0BAIC0xMzI1MCw3ICsxMzk4OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAgIHNvbGFyaXMqKQorICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICAgICAgQ0MqKQorKyAgICAgICAgICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcworIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJworQEAgLTEzMjkxLDkgKzE0MDMwLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCisgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgCisgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorQEAgLTEzNDI4LDYgKzE0MTY3LDEzIEBAIHByaXZhdGU6CisgfTsKKyBfTFRfRU9GCisgCisrCisrX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKysqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKysqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7CisrZXNhYworKworIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgIGFjX3N0YXR1cz0kPworQEAgLTEzNDQxLDcgKzE0MTg3LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCisgCisgICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCistICAgIGNhc2UgJHAgaW4KKysgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorIAorICAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCitAQCAtMTM0NTAsMTMgKzE0MTk2LDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorIAkgcHJldj0kcAorIAkgY29udGludWUKKy0gICAgICAgZWxzZQorLQkgcHJldj0KKyAgICAgICAgZmkKKyAKKysgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKysgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisrICAgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIGVzYWMKKysgICAgICAgZmkKKysgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCistCSBjYXNlICRwIGluCistCSAtTCogfCAtUiopCisrCSBjYXNlICR7cHJldn0gaW4KKysJIC1MIHwgLVIpCisgCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQorIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKyAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCitAQCAtMTM0NzYsOCArMTQyMzEsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgorIAkgZmkKKyAgICAgICAgZmkKKysgICAgICAgcHJldj0KKyAgICAgICAgOzsKKyAKKysgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCisgICAgICouJG9iamV4dCkKKyAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCisgICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorQEAgLTEzNTEzLDYgKzE0MjcwLDcgQEAgZWxzZQorIGZpCisgCisgJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKKyAKKyAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgorIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC0xMzU0OCw3ICsxNDMwNiw3IEBAIGxpbnV4KikKKyAKKyBzb2xhcmlzKikKKyAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICBDQyopCisrICBDQyogfCBzdW5DQyopCisgICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKKyAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworQEAgLTEzNjEzLDggKzE0MzcxLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCisgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorQEAgLTEzNzE5LDYgKzE0NDc1LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctRERMTF9FWFBPUlQnCisrCTs7CisgICAgICAgZGd1eCopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisgCSAgZWMrKyopCitAQCAtMTM4NzEsNyArMTQ2MzIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAk7OworICAgICAgIHNvbGFyaXMqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorLQkgIENDKikKKysJICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJworIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKK0BAIC0xMzkzNiwxMCArMTQ2OTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9CistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC0xMzk5Nyw2ICsxNDc2NSw4IEBAIGZpCisgCisgCisgCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtMTQxNzQsNiArMTQ5NDQsNyBAQCBmaQorICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQorIAorICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFs0LTldKikKKyAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCitAQCAtMTQxODgsMTUgKzE0OTU5LDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLzsvXi4qWyBdX19ubV9fL3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKKyAKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQorICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9CitAQCAtMTQ0NTksOCArMTUyMzUsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTQ0OTIsMTMgKzE1MjY5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xNDU4OSw3ICsxNTQyNCw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xNTA0OCw2ICsxNTg4Myw3IEBAIGZpCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgICBMRENYWD0kTEQKKyAgIExEPSRsdF9zYXZlX0xECisgICBHQ0M9JGx0X3NhdmVfR0NDCitAQCAtMTgwODMsMTMgKzE4OTE5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgxMDQsMTQgKzE4OTQ3LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4MTQ0LDEyICsxODk5MCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODE4OCw4ICsxOTAzNCw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCisgY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4MjE2LDEyICsxOTA2MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XworIGhhcmRjb2RlX2F1dG9tYXRpY19DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGhfQ1hYPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlic19DWFg9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoX0NYWD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcHJlbGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kc19DWFg9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgyNTksOCArMTkxMDUsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE4MjcwLDEyICsxOTEyMSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTgyOTEsNyArMTkxNDQsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xODMxMyw4ICsxOTE2NSw4IEBAIExEX0NYWCBcCisgcmVsb2FkX2ZsYWdfQ1hYIFwKKyBjb21waWxlcl9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCistbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCBcCisrbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKKyBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKK0BAIC0xODMyNiw3ICsxOTE3OCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWCBcCistZml4X3NyY2ZpbGVfcGF0aF9DWFggXAorIGV4Y2x1ZGVfZXhwc3ltc19DWFggXAorIGluY2x1ZGVfZXhwc3ltc19DWFggXAorIGZpbGVfbGlzdF9zcGVjX0NYWCBcCitAQCAtMTgzNjAsNiArMTkyMTEsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE4Mzc0LDcgKzE5MjI2LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAorIG1vZHVsZV9jbWRzX0NYWCBcCisgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCisgZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXAorLXByZWxpbmtfY21kc19DWFg7IGRvCisrcHJlbGlua19jbWRzX0NYWCBcCisrcG9zdGxpbmtfY21kc19DWFg7IGRvCisgICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgorICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQorICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCitAQCAtMTkxNjcsNyArMjAwMjAsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE5MjcwLDE5ICsyMDEyNCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xOTMxMiw2ICsyMDE4OSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xOTMyMSw2ICsyMDIwNCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTk0MzUsMTIgKzIwMzIxLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE5NTI3LDkgKzIwNDEzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTk1NDUsNiArMjA0MjgsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE5NTkxLDIxMCArMjA0NzcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorQEAgLTE5ODIyLDEyICsyMDY2NywxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAorICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAorIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKKyAKK0BAIC0xOTkxNCw5ICsyMDc1OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlic19DWFgKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aF9DWFgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgKKyAKK0BAIC0xOTkzMiw2ICsyMDc3NCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAorICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHNfQ1hYCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAorIAorZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00CitpbmRleCAyNGQxM2YzNDQwLi5lNDVmZGM2OTk4IDEwMDY0NAorLS0tIGEvbGlidG9vbC5tNAorKysrIGIvbGlidG9vbC5tNAorQEAgLTEsNyArMSw4IEBACisgIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCitAQCAtMTAsNyArMTEsOCBAQAorIAorIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgXSkKKyAKKy0jIHNlcmlhbCA1NiBMVF9JTklUCisrIyBzZXJpYWwgNTcgTFRfSU5JVAorIAorIAorICMgTFRfUFJFUkVRKFZFUlNJT04pCitAQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIEFDX1NVQlNUKExJQlRPT0wpZG5sCisgCisgX0xUX1NFVFVQCitAQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorIGRubAorIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCisgCisgX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWworICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKK0BAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCisgY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCisgCistQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKKyAKK0BAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisrICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyBdLAorQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCisgICBmaQorIF0pCisgCistIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKKyAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKKyAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCisgIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKysjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KKysjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCisgbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKKyBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKKy1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWworLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maV0sW10pCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisraWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCisrICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWworKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH1dJworKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmldLFtdKQorKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrICBdKQorKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCisrZmkKKyBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAKKyAKK0BAIC0xMTE3LDcgKzExMzMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIAorIEFDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtMTE2MSw2ICsxMTc3LDM5IEBAIF9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKKyBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKKyAKKyAKKysjIF9MVF9XSVRIX1NZU1JPT1QKKysjIC0tLS0tLS0tLS0tLS0tLS0KKytBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCisrW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQorK0FDX0FSR19XSVRIKFtsaWJ0b29sLXN5c3Jvb3RdLAorK1sgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAorK1tdLCBbd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm9dKQorKworK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKKytkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfbGlidG9vbF9zeXNyb290fV0pCisrICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKKysgICA7OworK2VzYWMKKysKKysgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQorK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAorK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKKysKKyAjIF9MVF9FTkFCTEVfTE9DSworICMgLS0tLS0tLS0tLS0tLS0tCisgbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCitAQCAtMTMyMCwxNCArMTM2OSw0NyBAQCBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyBdKSMgX0xUX0VOQUJMRV9MT0NLCisgCisgCisrIyBfTFRfUFJPR19BUgorKyMgLS0tLS0tLS0tLS0KKyttNF9kZWZ1bihbX0xUX1BST0dfQVJdLAorK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCisrX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisrICBbbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKKysgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKyAgICAgXSkKKysgIF0pCisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCisrICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKKytdKSMgX0xUX1BST0dfQVIKKysKKysKKyAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCistW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKy1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKy1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQorK1tfTFRfUFJPR19BUgorIAorIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQorIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgorQEAgLTE2MjMsNyArMTcwNSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKKytbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xNjY3LDEwICsxNzQ5LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMjIxMCw4ICsyMjkyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTIyNDQsMTMgKzIzMjcsNzEgQEAgbTRfaWYoWyQxXSwgW10sWworICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0yMzQyLDcgKzI0ODMsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMjk1MCw2ICszMDkxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC0zMDE2LDcgKzMxNjIsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtMzE2Nyw2ICszMzE0LDIxIEBAIHRwZiopCisgICA7OworIGVzYWMKKyBdKQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTMxNzQsNyArMzMzNiwxMSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAorICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQorIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCistICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCisrICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKytfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKKysgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKytfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKKysgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCisgXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKKyAKKyAKK0BAIC0zMjc3LDYgKzM0NDMsNjcgQEAgZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQorIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQorIAorKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQorKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgorKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKKyttNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAorK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCisrbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCisrbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCisrQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAorK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAorK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKytdKQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKytfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAorKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCisrXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisrCisrCisrIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKKyttNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCisrW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKytBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCisrICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCpdKQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAorK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisrCisgCisgIyBMVF9MSUJfTQorICMgLS0tLS0tLS0KK0BAIC0zNDAzLDggKzM2MzAsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTM0NDAsNiArMzY2Nyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC0zNDczLDYgKzM3MDEsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtMzQ4NCw3ICszNzI0LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgorIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgCWZpCitAQCAtMzU1MSw2ICszNzkxLDEzIEBAIGVsc2UKKyAgIEFDX01TR19SRVNVTFQob2spCisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKKyAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAorQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKKyBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKKyAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCisgICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCisrX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKKysgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKKyBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKyAKKyAKK0BAIC0zNTcyLDcgKzM4MjEsNiBAQCBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorIAorLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQorIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCisgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorQEAgLTM2NzgsNiArMzkyNiwxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAkgIDs7CisgCWVzYWMKKyAJOzsKKysgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisrCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisrCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKysJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKysJOzsKKyAgICAgICBkZ3V4KikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAJICBlYysrKikKK0BAIC0zODMwLDcgKzQwODQsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAk7OworICAgICAgIHNvbGFyaXMqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorLQkgIENDKikKKysJICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKK0BAIC00MDUzLDYgKzQzMDcsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisrCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTQxMTUsNyArNDM3NSw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CitAQCAtNDE3Miw5ICs0NDMyLDExIEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCisgICAgIDs7CisgZXNhYworLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisrCisrQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKKysgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKKytfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQorIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtNDE5Myw2ICs0NDU1LDggQEAgZmkKKyBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCisgCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQorIAorK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCisgbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKKyBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCisgQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCitAQCAtNDIyMSw2ICs0NDg2LDcgQEAgbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCisgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQorIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCisgICBjYXNlICRob3N0X29zIGluCisgICBhaXhbWzQtOV1dKikKKyAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCitAQCAtNDIzNSwxNSArNDUwMSwyMCBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworICAgICA7OworICAgcHczMiopCisgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKKy0gIDs7CisrICAgIDs7CisgICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICBjbCopIDs7CisrICAgICopCisrICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCisrICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworICAgKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIDs7CisgICBlc2FjCistICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyBdLCBbCisgICBydW5wYXRoX3Zhcj0KKyAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK0BAIC00NDExLDcgKzQ2ODIsOCBAQCBfTFRfRU9GCisgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC00NTEwLDEyICs0NzgyLDEyIEBAIF9MVF9FT0YKKyAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTQ1MjksOCArNDgwMSw4IEBAIF9MVF9FT0YKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTQ1NDgsOCArNDgyMCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICBmaQorQEAgLTQ1OTUsOCArNDg2Nyw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICBmaQorQEAgLTQ3MjYsNyArNDk5OCw3IEBAIF9MVF9FT0YKKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICBlbHNlCitAQCAtNDczNyw3ICs1MDA5LDcgQEAgX0xUX0VPRgorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKyAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCitAQCAtNDc4MSwyMCArNTA1Myw2MyBAQCBfTFRfRU9GCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKy0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisrCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC00ODI4LDcgKzUxNDMsNyBAQCBfTFRfRU9GCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KK0BAIC00ODM2LDcgKzUxNTEsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtNDg1Miw3ICs1MTY3LDcgQEAgX0xUX0VPRgorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC00ODc2LDEwICs1MTkxLDEwIEBAIF9MVF9FT0YKKyAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtNDkyNiwxNiArNTI0MSwzMSBAQCBfTFRfRU9GCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIEFDX0xJTktfSUZFTFNFKGludCBmb28odm9pZCkge30sCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistICAgICAgICApCistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisrCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKKysJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBBQ19MSU5LX0lGRUxTRSgKKysJICAgICBbQUNfTEFOR19TT1VSQ0UoCisrCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKysJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCisrICAgICAgc3Vicm91dGluZSBmb28KKysgICAgICBlbmRdXSwKKysJCQkgICAgICBbRm9ydHJhbl0sIFtbCisrICAgICAgc3Vicm91dGluZSBmb28KKysgICAgICBlbmRdXSldKV0sCisrCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAorKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC01MDIwLDcgKzUzNTAsNyBAQCBfTFRfRU9GCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC01MDM5LDkgKzUzNjksOSBAQCBfTFRfRU9GCisgICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC01MzEzLDggKzU2NDMsNiBAQCBfTFRfVEFHREVDTChbXSwgW2luaGVyaXRfcnBhdGhdLCBbMF0sCisgICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKKyBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCisgICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQorLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKKy0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCisgX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCisgICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQorIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKK0BAIC01MzI1LDYgKzU2NTMsOCBAQCBfTFRfVEFHREVDTChbXSwgW2luY2x1ZGVfZXhwc3ltc10sIFsxXSwKKyAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCisgX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCisgICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCisrX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAorKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCisgX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKKyAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCisgZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCitAQCAtNTQyNiw2ICs1NzU2LDcgQEAgQ0M9IiRsdF9zYXZlX0NDIgorIG00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKKyBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAorIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCisgICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KK0BAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9JENDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBsdF9zYXZlX0xEPSRMRAorICAgbHRfc2F2ZV9HQ0M9JEdDQworICAgR0NDPSRHWFgKK0BAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgZmkKKyAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCisgICBDQz0ke0NYWC0iYysrIn0KKysgIENGTEFHUz0kQ1hYRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKKyAgICAgICAgICAgIyBleGVjdXRhYmxlLgorLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAKKyAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgZWxzZQorIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKyAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC01NzIxLDI5ICs2MDU0LDc1IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICA7OworIAorICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKy0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCistICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKy0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCistICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKy0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKy0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworLQorLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKy0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCistCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGVsc2UKKy0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZml+CistICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworLSAgICAgICAgZmkKKy0gICAgICAgIDs7CisrCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKysJLGNsKiB8IG5vLGNsKikKKysJICAjIE5hdGl2ZSBNU1ZDCisrCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKysJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJICBsaWJleHQ9bGliCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGVsc2UKKysJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBmaX4KKysJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICAgIGxpbmtuYW1lcz0nCisrCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCSAgIyBEb24ndCB1c2UgcmFubGliCisrCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAgICopCisrCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkJOzsKKysJICAgIGVzYWN+CisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgICBmaScKKysJICA7OworKwkqKQorKwkgICMgZysrCisrCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKysJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisrCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKysJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisrCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCisrCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKysJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBlbHNlCisrCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZml+CisrCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgZWxzZQorKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworKwkgIGZpCisrCSAgOzsKKysJZXNhYworKwk7OworICAgICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKyAJOzsKK0BAIC01ODE4LDcgKzYxOTcsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICopCisgICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgaWE2NCopCistCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgICopCistCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgZXNhYworIAkgICAgICBmaQorQEAgLTU5MzMsOSArNjMxMiw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgICopCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJICAgICAgZWxzZQorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgorLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKKyAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CistCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgCQkkUkFOTElCICRvbGRsaWInCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworIAkgICAgICA7OworIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCitAQCAtNjIxMyw3ICs2NTkyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgICAqKQorLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgIGVzYWMKKyAKK0BAIC02MjU5LDcgKzY2MzgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAorICAgICAgIHNvbGFyaXMqKQorICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICAgICAgQ0MqKQorKyAgICAgICAgICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCisgCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCitAQCAtNjMwMCw5ICs2Njc5LDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKKyAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAKKyAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCitAQCAtNjQzMSw2ICs2ODEwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyAgIExEQ1hYPSRMRAorICAgTEQ9JGx0X3NhdmVfTEQKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKK0BAIC02NDQ1LDYgKzY4MjUsMjkgQEAgQUNfTEFOR19QT1AKKyBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRworIAorIAorKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQorKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisrIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKysjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKysjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisrIworKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAorKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAorKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgorK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCisrQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKKytBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCisrZnVuY19zdHJpcG5hbWVfY25mICgpCisreworKyAgY2FzZSAkezJ9IGluCisrICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgZXNhYworK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKKytdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorKworICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCitAQCAtNjQ1Myw2ICs2ODU2LDcgQEAgQUNfTEFOR19QT1AKKyAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KKyBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCisgW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAorICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CisgX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQorIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CitAQCAtNjUwMyw2ICs2OTA3LDEzIEBAIHB1YmxpYyBjbGFzcyBmb28geworIH07CisgX0xUX0VPRgorIF0pCisrCisrX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKysqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKysqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7CisrZXNhYworKworIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKKyBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCitAQCAtNjUxNCw3ICs2OTI1LDcgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKyAKKyAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKy0gICAgY2FzZSAkcCBpbgorKyAgICBjYXNlICR7cHJldn0ke3B9IGluCisgCisgICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KK0BAIC02NTIzLDEzICs2OTM0LDIyIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgCSBwcmV2PSRwCisgCSBjb250aW51ZQorLSAgICAgICBlbHNlCistCSBwcmV2PQorICAgICAgICBmaQorIAorKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKysgICAgICAgICBjYXNlICRwIGluCisrICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgZXNhYworKyAgICAgICBmaQorKyAgICAgICBjYXNlICRwIGluCisrICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKy0JIGNhc2UgJHAgaW4KKy0JIC1MKiB8IC1SKikKKysJIGNhc2UgJHtwcmV2fSBpbgorKwkgLUwgfCAtUikKKyAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KK0BAIC02NTQ5LDggKzY5NjksMTAgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCisgCSBmaQorICAgICAgICBmaQorKyAgICAgICBwcmV2PQorICAgICAgICA7OworIAorKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKKyAgICAgKi4kb2JqZXh0KQorICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCitAQCAtNjU4Niw2ICs3MDA4LDcgQEAgZWxzZQorIGZpCisgCisgJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKKyAKKyAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgorIG00X2lmKFskMV0sIFtDWFhdLAorQEAgLTY2MjIsNyArNzA0NSw3IEBAIGxpbnV4KikKKyAKKyBzb2xhcmlzKikKKyAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICBDQyopCisrICBDQyogfCBzdW5DQyopCisgICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKKyAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworQEAgLTY3MzUsNyArNzE1OCw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9IiRDQyIKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIENDPSR7Rjc3LSJmNzcifQorKyAgQ0ZMQUdTPSRGRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTY3ODksNiArNzIxNCw3IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorIAorICAgR0NDPSRsdF9zYXZlX0dDQworICAgQ0M9IiRsdF9zYXZlX0NDIgorKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisgZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKKyAKKyBBQ19MQU5HX1BPUAorQEAgLTY4NjUsNyArNzI5MSw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0iJENDIgorICAgbHRfc2F2ZV9HQ0M9JEdDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgQ0M9JHtGQy0iZjk1In0KKysgIENGTEFHUz0kRkNGTEFHUworICAgY29tcGlsZXI9JENDCisgICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQorIAorQEAgLTY5MjEsNyArNzM0OSw4IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKKy0gIENDPSIkbHRfc2F2ZV9DQyIKKysgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcworIAorIEFDX0xBTkdfUE9QCitAQCAtNjk1OCwxMCArNzM4NywxMiBAQCBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKyBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisgCisgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKy1sdF9zYXZlX0NDPSIkQ0MiCisrbHRfc2F2ZV9DQz0kQ0MKKytsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgbHRfc2F2ZV9HQ0M9JEdDQworIEdDQz15ZXMKKyBDQz0ke0dDSi0iZ2NqIn0KKytDRkxBR1M9JEdDSkZMQUdTCisgY29tcGlsZXI9JENDCisgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorQEAgLTY5OTIsNyArNzQyMyw4IEBAIGZpCisgQUNfTEFOR19SRVNUT1JFCisgCisgR0NDPSRsdF9zYXZlX0dDQworLUNDPSIkbHRfc2F2ZV9DQyIKKytDQz0kbHRfc2F2ZV9DQworK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRworIAorIAorQEAgLTcwMjcsOSArNzQ1OSwxMSBAQCBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisgCisgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyBsdF9zYXZlX0NDPSIkQ0MiCisrbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworIGx0X3NhdmVfR0NDPSRHQ0MKKyBHQ0M9CisgQ0M9JHtSQy0id2luZHJlcyJ9CisrQ0ZMQUdTPQorIGNvbXBpbGVyPSRDQworIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNzA0Miw3ICs3NDc2LDggQEAgZmkKKyAKKyBHQ0M9JGx0X3NhdmVfR0NDCisgQUNfTEFOR19SRVNUT1JFCistQ0M9IiRsdF9zYXZlX0NDIgorK0NDPSRsdF9zYXZlX0NDCisrQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKKyAKKyAKK0BAIC03MTAxLDYgKzc1MzYsMTUgQEAgX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQorIEFDX1NVQlNUKFtPQkpEVU1QXSkKKyBdKQorIAorKyMgX0xUX0RFQ0xfRExMVE9PTAorKyMgLS0tLS0tLS0tLS0tLS0tLQorKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgorK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQorK0FDX1NVQlNUKFtETExUT09MXSkKKytdKQorIAorICMgX0xUX0RFQ0xfU0VECisgIyAtLS0tLS0tLS0tLS0KK0BAIC03MTk0LDggKzc2MzgsOCBAQCBtNF9kZWZ1bihbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSwKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzXSlkbmwKKyBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCisgCisgCistIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCistbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCistW2Nhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CisrIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKKysjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCisrbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorK1tkbmwgeworK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAorKyQxICgpXAorK3tcCisrbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCisrfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrXSkKKyAKKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKyAKKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAorKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCisrbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAorK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisrICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworKyAgICBlc2FjXSkKKysKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorKworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKysgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisrICAgIGVzYWMKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisgCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCisrICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKysgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCisgCistZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKKy1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAorLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9CisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorIAorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQorKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKKyAKKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKysgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKysgICAgZXNhY10pCisgCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCisgCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKyAKKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLltbXi5dXSokLy5sby8nYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQorK2ZpCisgCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCistfQorK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKKyAKKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKysgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKytkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKKysgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorIAorLV9MVF9FT0YKKy1lc2FjCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorIAorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCisrZmkKKytdKQorIAorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkWzFdKz1cJFsyXSIKKy19CistX0xUX0VPRgorKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisrIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCisrIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCisrbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKKytbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCisrQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAorK1tjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKyAgICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCistfQorLQorLV9MVF9FT0YKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKyAgICAgOzsKKy0gIGVzYWMKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKytdKQorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKytBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCisrX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisrICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAorKworK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCisrQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCisrWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworIF0pCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKKytfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKKysgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKKytdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDk1MDNlYzg1ZDcuLjcwZTg1NmUwNjUgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTEsMTAgKzEsOSBAQAorLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCisgCistIyBsaWJ0b29sIChHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCisrIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40CisgIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorLSMgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgCitAQCAtMzgsNyArMzcsNiBAQAorICMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyAjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKy0jICAgICAgIC0tbm8tZmluaXNoICAgICAgICAgIGxldCBpbnN0YWxsIG1vZGUgYXZvaWQgZmluaXNoIGNvbW1hbmRzCisgIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisgIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisgIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorQEAgLTcxLDE3ICs2OSwxOSBAQAorICMgICAgICAgICBjb21waWxlcjoJCSRMVENDCisgIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisgIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCistIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAorICMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KKyAjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCisgIworICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgorKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKysjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgorIAorIFBST0dSQU09bGlidG9vbAorIFBBQ0tBR0U9bGlidG9vbAorLVZFUlNJT049Mi4yLjdhCistVElNRVNUQU1QPSIgMS4zMTM0IDIwMDktMTEtMjkiCistcGFja2FnZV9yZXZpc2lvbj0xLjMxMzQKKytWRVJTSU9OPTIuNAorK1RJTUVTVEFNUD0iIgorK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCisgCisgIyBCZSBCb3VybmUgY29tcGF0aWJsZQorIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorQEAgLTEwNiw5ICsxMDYsNiBAQCBfTFRFQ0hPX0VPRicKKyB9CisgCisgIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KKy0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgorLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCistIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgorIGx0X3VzZXJfbG9jYWxlPQorIGx0X3NhZmVfbG9jYWxlPQorIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworQEAgLTEyMSwxNSArMTE4LDEzIEBAIGRvCisgCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgorIAlmaSIKKyBkb25lCisrTENfQUxMPUMKKytMQU5HVUFHRT1DCisrZXhwb3J0IExBTkdVQUdFIExDX0FMTAorIAorICRsdF91bnNldCBDRFBBVEgKKyAKKyAKKy0KKy0KKy0KKy0KKy0KKyAjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCitAQCAtMTQwLDcgKzEzNSw3IEBAIHByb2dwYXRoPSIkMCIKKyAKKyAKKyA6ICR7Q1A9ImNwIC1mIn0KKy06ICR7RUNITz0kYXNfZWNob30KKyt0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KKyA6ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9CisgOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQorIDogJHtHUkVQPSIvYmluL2dyZXAifQorQEAgLTE0OSw3ICsxNDQsNyBAQCBwcm9ncGF0aD0iJDAiCisgOiAke01LRElSPSJta2RpciJ9CisgOiAke01WPSJtdiAtZiJ9CisgOiAke1JNPSJybSAtZiJ9CistOiAke1NFRD0iL21vdW50L2VuZG9yL3dpbGRlbmh1L2xvY2FsLXg4Nl82NC9iaW4vc2VkIn0KKys6ICR7U0VEPSIvYmluL3NlZCJ9CisgOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CisgOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9CisgCitAQCAtMTY5LDYgKzE2NCwyNyBAQCBJRlM9IiAJJGx0X25sIgorIGRpcm5hbWU9InMsL1teL10qJCwsIgorIGJhc2VuYW1lPSJzLF4uKi8sLCIKKyAKKysjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKysjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisrIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCisrZnVuY19kaXJuYW1lICgpCisreworKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKyt9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19iYXNlbmFtZSBmaWxlCisrZnVuY19iYXNlbmFtZSAoKQorK3sKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyAjIGNhbGw6CitAQCAtMTgzLDE3ICsxOTksMzEgQEAgYmFzZW5hbWU9InMsXi4qLywsIgorICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKyB7CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorLX0KKysgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKysgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisrICAgIGVsc2UKKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisrICAgIGZpCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCisrZnVuY19zdHJpcG5hbWUgKCkKKyt7CisrICAgIGNhc2UgJHsyfSBpbgorKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorIAorLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIAorICMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KKyBwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKK0BAIC0zNzYsNiArNDA2LDE1IEBAIHNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCisgIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCisgZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworIAorKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCisrIyBzdHJpbmcgbGl0ZXJhbGx5LgorK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworKworKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisrIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKysjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KKytsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisrCisgIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKKyAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCisgIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCitAQCAtNDA0LDcgKzQ0Myw3IEBAIG9wdF93YXJuaW5nPToKKyAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KKyBmdW5jX2VjaG8gKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgorIH0KKyAKKyAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KK0BAIC00MzAsMTQgKzQ2OSwxNCBAQCBmdW5jX2VjaG9fYWxsICgpCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfZXJyb3IgKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgorIH0KKyAKKyAjIGZ1bmNfd2FybmluZyBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KKyBmdW5jX3dhcm5pbmcgKCkKKyB7CistICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKysgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgCisgICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgIDoKK0BAIC02NTYsMTkgKzY5NSwzNSBAQCBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKKyAgICAgZmkKKyB9CisgCistCistCisrIyBmdW5jX3RyX3NoCisrIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KKysjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKysjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCisrZnVuY190cl9zaCAoKQorK3sKKysgIGNhc2UgJDEgaW4KKysgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisrICAgIDs7CisrICAqICkKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisgCisgCisgIyBmdW5jX3ZlcnNpb24KKyAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3ZlcnNpb24gKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnLyhDKS8hYiBnbworIAk6bW9yZQorIAkvXC4vIXsKKyAJICBOCistCSAgcy9cbiMgLy8KKysJICBzL1xuIyAvIC8KKyAJICBiIG1vcmUKKyAJfQorIAk6Z28KK0BAIC02ODUsNyArNzQwLDkgQEAgZnVuY192ZXJzaW9uICgpCisgIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisgZnVuY191c2FnZSAoKQorIHsKKy0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLWgvIHsKKysgICAgJG9wdF9kZWJ1ZworKworKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8geworICAgICAgICAgcy9eIyAvLworIAlzL14jICokLy8KKyAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLworQEAgLTcwMSw3ICs3NTgsMTAgQEAgZnVuY191c2FnZSAoKQorICMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KKyBmdW5jX2hlbHAgKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKysJOnByaW50CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCitAQCAtNzE0LDcgKzc3NCwxMSBAQCBmdW5jX2hlbHAgKCkKKyAJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworIAlwCistICAgICB9JyA8ICIkcHJvZ3BhdGgiCisrCWQKKysgICAgIH0KKysgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKKysgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAorKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgIHJldD0kPworICAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KKyAgICAgICBleGl0ICRyZXQKK0BAIC03MjYsMTIgKzc5MCwzOSBAQCBmdW5jX2hlbHAgKCkKKyAjIGV4aXRfY21kLgorIGZ1bmNfbWlzc2luZ19hcmcgKCkKKyB7CistICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorKyAgICAkb3B0X2RlYnVnCisrCisrICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKKyAgICAgZXhpdF9jbWQ9ZXhpdAorIH0KKyAKKy1leGl0X2NtZD06CisgCisrIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQorK3sKKysgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKKysgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisrCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCisrfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0CisrIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCisreworKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKysgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKysKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCisrfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrZXhpdF9jbWQ9OgorIAorIAorIAorQEAgLTc0MSwyNiArODMyLDY0IEBAIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKKyBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXMuCistIyAkbW9kZSBpcyB1bnNldAorIG5vbm9wdD0KKy1leGVjdXRlX2RsZmlsZXM9CisgcHJlc2VydmVfYXJncz0KKyBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCisgbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgorIGV4dHJhY3RlZF9hcmNoaXZlcz0KKyBleHRyYWN0ZWRfc2VyaWFsPTAKKyAKKy1vcHRfZHJ5X3J1bj1mYWxzZQorLW9wdF9maW5pc2g9OgorLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQorLW9wdF9zaWxlbnQ9ZmFsc2UKKy1vcHRfZGVidWc9OgorLQorICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZworICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KKyBleGVjX2NtZD0KKyAKKysjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorK2Z1bmNfYXBwZW5kICgpCisreworKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgorK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKKysjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAorKyMgYnkgYSBzcGFjZS4KKytmdW5jX2FwcGVuZF9xdW90ZWQgKCkKKyt7CisrICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisrICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyt9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKytmdW5jX2FyaXRoICgpCisreworKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCisrfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2xlbiBzdHJpbmcKKysjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCisrZnVuY19sZW4gKCkKKyt7CisrICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbG8ybyBvYmplY3QKKytmdW5jX2xvMm8gKCkKKyt7CisrICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKyt9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCisrZnVuY194Zm9ybSAoKQorK3sKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCisrfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQorICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCitAQCAtODUwLDEzMCArOTc5LDIwNCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKKyAgIGVzYWMKKyB9CisgCistIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KKy0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgorKyMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisrIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQorKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgorK2Z1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQorIHsKKysgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorKyAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZWxzZQorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKyskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAorKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCisrJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgZmkKKyAKKy0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorLSAgY2FzZSAkMSBpbgorLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgbGlua3xsaW58bGl8bCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGVzYWMKKysgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorKyAgZmkKKyt9CisrCisrCisrIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisrY2FzZSAkMSBpbgorK2NsZWFufGNsZWF8Y2xlfGNsKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2xpbmt8bGlufGxpfGwpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytlc2FjCisgCistICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKKy0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KKysKKysKKysjIE9wdGlvbiBkZWZhdWx0czoKKytvcHRfZGVidWc9OgorK29wdF9kcnlfcnVuPWZhbHNlCisrb3B0X2NvbmZpZz1mYWxzZQorK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQorK29wdF9mZWF0dXJlcz1mYWxzZQorK29wdF9maW5pc2g9ZmFsc2UKKytvcHRfaGVscD1mYWxzZQorK29wdF9oZWxwX2FsbD1mYWxzZQorK29wdF9zaWxlbnQ9OgorK29wdF92ZXJib3NlPToKKytvcHRfc2lsZW50PWZhbHNlCisrb3B0X3ZlcmJvc2U9ZmFsc2UKKysKKysKKysjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKysjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KKyt7CisrICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisrICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgICBvcHQ9IiQxIgorICAgICBzaGlmdAorLQorICAgICBjYXNlICRvcHQgaW4KKy0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OworLQorLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKy0JCQlvcHRfZGVidWc9J3NldCAteCcKKyAJCQkkb3B0X2RlYnVnCisgCQkJOzsKKy0KKy0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgorLQkJCXNoaWZ0CisrICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorKwkJCW9wdF9kcnlfcnVuPToKKyAJCQk7OworLQorLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OworLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7CistICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OworLSAgICAgIC0tbm8tZmluaXNoKQlvcHRfZmluaXNoPWZhbHNlCQkJCTs7CistCistICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJY2FzZSAkMSBpbgorLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKy0JCQkgIGNsZWFuKQk7OworLQkJCSAgY29tcGlsZSkJOzsKKy0JCQkgIGV4ZWN1dGUpCTs7CistCQkJICBmaW5pc2gpCTs7CistCQkJICBpbnN0YWxsKQk7OworLQkJCSAgbGluaykJCTs7CistCQkJICByZWxpbmspCTs7CistCQkJICB1bmluc3RhbGwpCTs7CistCistCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKy0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCistCQkJICAgICBleGl0X2NtZD1leGl0CistCQkJICAgICBicmVhaworLQkJCSAgICAgOzsKKy0JCSAgICAgICAgZXNhYworLQorLQkJCW1vZGU9IiQxIgorKyAgICAgIC0tY29uZmlnKQorKwkJCW9wdF9jb25maWc9OgorK2Z1bmNfY29uZmlnCisrCQkJOzsKKysgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCisrfSRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworLQorICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCistCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKKy0KKy0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9OgorLQkJCW9wdF92ZXJib3NlPWZhbHNlCisrCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKKyAJCQk7OworLQorLSAgICAgIC0tbm8tcXVpZXR8LS1uby1zaWxlbnQpCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKy0JCQlvcHRfc2lsZW50PWZhbHNlCisrICAgICAgLS1mZWF0dXJlcykKKysJCQlvcHRfZmVhdHVyZXM9OgorK2Z1bmNfZmVhdHVyZXMKKyAJCQk7OworLQorLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1maW5pc2gpCisrCQkJb3B0X2ZpbmlzaD06Cisrc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKwkJCTs7CisrICAgICAgLS1oZWxwKQorKwkJCW9wdF9oZWxwPToKKysJCQk7OworKyAgICAgIC0taGVscC1hbGwpCisrCQkJb3B0X2hlbHBfYWxsPToKKytvcHRfaGVscD0nOiBoZWxwLWFsbCcKKysJCQk7OworKyAgICAgIC0tbW9kZSkKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgorK2Nhc2UgJG9wdGFyZyBpbgorKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKysgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisrCisrICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKysgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisrICAgICBleGl0X2NtZD1leGl0CisrICAgICBicmVhaworKyAgICAgOzsKKytlc2FjCisrCQkJc2hpZnQKKysJCQk7OworKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisgCQkJb3B0X3NpbGVudD1mYWxzZQorLQkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tbm8tdmVyYm9zZSkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLW5vLXZlcmJvc2UpCisgCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKKy0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKKysgICAgICAtLXNpbGVudHwtLXF1aWV0KQorKwkJCW9wdF9zaWxlbnQ9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQk7OworKyAgICAgIC0tdmVyYm9zZXwtdikKKysJCQlvcHRfdmVyYm9zZT06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrb3B0X3NpbGVudD1mYWxzZQorKwkJCTs7CisrICAgICAgLS10YWcpCisrCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfdGFnPSIkb3B0YXJnIgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCisrZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKysgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisrICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisrICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKysKKyAgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQorLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgorLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQorKyAgICAgIC0tKj0qKQorKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisrCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKyAJCQlzaGlmdAorIAkJCTs7CisgCistICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKKy0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OworLSAgICAgIC0taGVscC1hbGwpCW9wdF9oZWxwPSc6IGhlbHAtYWxsJwkJCQk7OworLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OworLQorLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7CistCistICAgICAgKikJCW5vbm9wdD0iJG9wdCIKKy0JCQlicmVhaworKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisrICAgICAgLVw/KnwtaCp8LW4qfC12KikKKysJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorKwkJCXNoaWZ0CisgCQkJOzsKKysKKysgICAgICAtLSkJCWJyZWFrCQkJCQk7OworKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7CisrICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgIGVzYWMKKyAgIGRvbmUKKyAKKysgICMgVmFsaWRhdGUgb3B0aW9uczoKKysKKysgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisrICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKysgICAgbm9ub3B0PSIkb3B0IgorKyAgICBzaGlmdAorKyAgZmkKKysKKysgICMgcHJlc2VydmUgLS1kZWJ1ZworKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorIAorICAgY2FzZSAkaG9zdCBpbgorICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiApCitAQCAtOTgxLDgyICsxMTg0LDQ0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgIDs7CisgICAgICopCistICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCisrICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICAgOzsKKyAgIGVzYWMKKyAKKy0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgorLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCistICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorLX0KKysgICRvcHRfaGVscCB8fCB7CisrICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKysgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisgCistIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0jIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCistIyByZWxlYXNlIG9mIGxpYnRvb2wuCistZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisteworLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCistICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBlbHNlCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCistICAgICAgZmkKKy0gICAgZWxzZQorLSAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCistJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKy0kcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKysgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgICAgIGZpCisgCistICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKy0gIGZpCistfQorLQorKyAgICAjIERhcndpbiBzdWNrcworKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorIAorLSMjIC0tLS0tLS0tLS0tICMjCistIyMgICAgTWFpbi4gICAgIyMKKy0jIyAtLS0tLS0tLS0tLSAjIworLQorLSRvcHRfaGVscCB8fCB7CistICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CistICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0KKy0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCistICBmaQorKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisrICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorKyAgICBmaQorIAorLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCisrICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKysgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKysgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisrICB9CisgCisgCistICAjIERhcndpbiBzdWNrcworLSAgZXZhbCAic3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiIgorKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKKyt9CisgCisgCistICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKy0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKKy0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCistICBmaQorIAorLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKy0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCistfQorIAorKyMjIC0tLS0tLS0tLS0tICMjCisrIyMgICAgTWFpbi4gICAgIyMKKysjIyAtLS0tLS0tLS0tLSAjIworIAorICMgZnVuY19sYWxpYl9wIGZpbGUKKyAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCitAQCAtMTEyMSwxMiArMTI4Niw5IEBAIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAoKQorICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCisgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQorIHsKKy0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKKy0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KKy0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgorLSAgICBmaQorKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCisrICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgfQorIAorICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCitAQCAtMTE0OSw3ICsxMzExLDcgQEAgZnVuY19leGVjdXRlX2NtZHMgKCkKKyAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JworICAgICBmb3IgY21kIGluICQxOyBkbworICAgICAgIElGUz0kc2F2ZV9pZnMKKy0gICAgICBldmFsICJjbWQ9XCIkY21kXCIiCisrICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKKyAgICAgZG9uZQorICAgICBJRlM9JHNhdmVfaWZzCitAQCAtMTE3Miw2ICsxMzM0LDM3IEBAIGZ1bmNfc291cmNlICgpCisgfQorIAorIAorKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKytmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQorK3sKKysgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisrICA9KikKKysgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIDs7CisrICBlc2FjCisrfQorKworKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAorKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisrIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCisreworKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisrICA/KjoiJGx0X3N5c3Jvb3QiKikKKysgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrICAgIDs7CisrICAqKQorKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisgIyBmdW5jX2luZmVyX3RhZyBhcmcKKyAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKKyAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgorQEAgLTExODQsOCArMTM3Nyw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCisgICAgICAgQ0NfcXVvdGVkPQorICAgICAgIGZvciBhcmcgaW4gJENDOyBkbworLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKKyAgICAgICBkb25lCisgICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAorQEAgLTEyMDQsOCArMTM5Niw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgCSAgICBDQ19xdW90ZWQ9CisgCSAgICBmb3IgYXJnIGluICRDQzsgZG8KKyAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorIAkgICAgZG9uZQorIAkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorIAkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTI3NCw2ICsxNDY1LDQ4NiBAQCBFT0YKKyAgICAgfQorIH0KKyAKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKysjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKysjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCisrIyBpbiAkYnVpbGQncyAkUEFUSC4KKysjCisrIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKysjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKKytmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKysgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKKysgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisrICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisrICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQorKyAgICBmaQorKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQorKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisrIworKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCisrIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCisrZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKysgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgb2xkSUZTPSRJRlMKKysgICAgSUZTPToKKysgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKysgICAgICBJRlM9JG9sZElGUworKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCisrICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKysgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKysgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgIGRvbmUKKysgICAgSUZTPSRvbGRJRlMKKysgIGZpCisrfQorKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCisrCisrCisrIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgorKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisrIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKKysjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisrIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisrIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQorKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisrIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisrIworKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworKyMgYmUgY29udmVydGVkLgorKyMKKysjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisrIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KKytmdW5jX2N5Z3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQorKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZpCisrICBlbHNlCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKysgIGZpCisrfQorKyNlbmQ6IGZ1bmNfY3lncGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKysgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKysgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorK30KKysjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCisrIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCisrZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisrICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCisrICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorKyAgICAjIEZhbGxiYWNrOgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICisrIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgorK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQzJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCisrICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKysgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKysgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CisrICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisrICAgIGZpCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisrIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgorK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgJDQgaW4KKysgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIDs7CisrICBlc2FjCisrICBjYXNlICQ0IGluCisrICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCisrICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorKworKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKysjCisrIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrCisrCisrIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKysjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX3RvX2hvc3RfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKKysKKysKKysjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCisrIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisrIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCisrZnVuY190b190b29sX2ZpbGUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBjYXNlICwkMiwgaW4KKysgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCisrICAgICAgOzsKKysgICAgKikKKysgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKysgICAgICA7OworKyAgZXNhYworK30KKysjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKysjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCisrICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKysjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisrIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrIworKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKKysjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorKyMKKysjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisrIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisrIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCisrIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisrIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyMgd2lsbCBicmVhay4KKysKKysKKysjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKysjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCisrdG9faG9zdF9wYXRoX2NtZD0KKytmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCisrICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKysgIGZpCisrfQorKworKworKyMgZnVuY190b19ob3N0X3BhdGggQVJHCisrIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9wYXRoICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysgICR0b19ob3N0X3BhdGhfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X3BhdGgKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCisrIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQorK3sKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKKysgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKysgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCisrIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisrIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCisrICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKysgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorKworKworICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCisgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyB7CitAQCAtMTMxNCwxMiArMTk4NSwxMiBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIDs7CisgCisgCS1waWUgfCAtZnBpZSB8IC1mUElFKQorLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisrICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCisgCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCistCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM0MCwxNSArMjAxMSwxNCBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCisgCSAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKKyAJICBkb25lCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKKyAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAKKyAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KKy0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisrCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAorQEAgLTEzNjQsOCArMjAzNCw3IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQorIAorICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCistICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKKyAgICAgZG9uZSAjIGZvciBhcmcKKyAKKyAgICAgY2FzZSAkYXJnX21vZGUgaW4KK0BAIC0xNDk2LDE3ICsyMTY1LDE2IEBAIGNvbXBpbGVyLiIKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorIAlleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgICBmaQorLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgorKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKKyAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKKyAgICAgZmkKKyAKKyAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCisrICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCisgICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CisgCistICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgorLSAgICAgIGV2YWwgInNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiIgorLSAgICBmaQorKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKKyAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisgCitAQCAtMTUyNiw3ICsyMTk0LDcgQEAgY29tcGlsZXIuIgorIAorICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgorIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCisrCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKKyAgICAgICBmaQorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKK0BAIC0xNTczLDExICsyMjQxLDExIEBAIGNvbXBpbGVyLiIKKyAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgorICAgICAgIGZpCisgICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCisgICAgICAgZmkKKyAKKyAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KKy0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisrICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCisgICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJworIAorQEAgLTE2MjIsMTMgKzIyOTAsMTMgQEAgY29tcGlsZXIuIgorIH0KKyAKKyAkb3B0X2hlbHAgfHwgeworLSAgdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKysgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorIH0KKyAKKyBmdW5jX21vZGVfaGVscCAoKQorIHsKKyAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCistICAgIGNhc2UgJG1vZGUgaW4KKysgICAgY2FzZSAkb3B0X21vZGUgaW4KKyAgICAgICAiIikKKyAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cworICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgorQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgorIAorICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCisgICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKKy0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5CistICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CisrICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKK0BAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCisgICAgICAgICA7OworIAorICAgICAgICopCistICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorICAgICAgICAgOzsKKyAgICAgZXNhYworIAorQEAgLTE4MTksMTMgKzI0ODcsMTMgQEAgaWYgJG9wdF9oZWxwOyB0aGVuCisgICBlbHNlCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorICAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgICB7CisgICAgICAgZnVuY19oZWxwIG5vZXhpdAorLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKysgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworIAllY2hvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorQEAgLTE4NTQsMTMgKzI1MjIsMTYgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgorIAorICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgorLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KKyAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAorIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCisgCisgICAgICAgZGlyPQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCitAQCAtMTg4Miw3ICsyNTUzLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAKKyAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCistCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisrCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKKyAJZWxzZQorIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKK0BAIC0xOTA3LDEwICsyNTc4LDEwIEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorIAorICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCistICAgICAgaWYgZXZhbCB0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiOyB0aGVuCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXIKKysgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCisgICAgICAgZWxzZQorLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyOlwkJHNobGlicGF0aF92YXIKKysJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCisgICAgICAgZmkKKyAgICAgZG9uZQorIAorQEAgLTE5MzksOCArMjYxMCw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgCTs7CisgICAgICAgZXNhYworICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCistICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgorQEAgLTE5NzIsMjIgKzI2NDIsNTkgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgZmkKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyt0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCisgZnVuY19tb2RlX2ZpbmlzaCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBsaWJkaXJzPSIkbm9ub3B0IgorKyAgICBsaWJzPQorKyAgICBsaWJkaXJzPQorICAgICBhZG1pbmNtZHM9CisgCistICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCistICAgICAgZm9yIGRpcgorLSAgICAgIGRvCistCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCistICAgICAgZG9uZQorKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKysgICAgZG8KKysgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgorKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKKyAKKysgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCisrCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisrCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCisrCWVsc2UKKysJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorKwlmaQorKworKyAgICAgIGVsc2UKKysJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorKyAgICAgIGZpCisrICAgIGRvbmUKKysKKysgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCisrICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisrICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKKysgICAgICBlbHNlCisrICAgICAgICBzeXNyb290X2NtZD0KKysgICAgICBmaQorKworKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcworKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisrICAgICAgICBkb25lCisrICAgICAgZWxzZQorKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKysgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisrCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorKwkgICAgPiAkdG1wZGlyL3RtcC1sYQorKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKKysJZG9uZQorKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgorKyAgICAgIGZpCisrICAgIGZpCisrCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKyAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgorIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCitAQCAtMTk5Nyw3ICsyNzA0LDcgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCisgCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgorIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCistCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCisgICAgICAgICRjbWRzIgorIAlmaQorICAgICAgIGRvbmUKK0BAIC0yMDA2LDUzICsyNzEzLDU1IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKKyAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCisgICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUworIAorLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorLSAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCistICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCistICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCistICAgIGRvbmUKKy0gICAgZWNobworLSAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKy0gICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCistICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCistICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKy0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCistICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKy0gICAgICBsaWJkaXI9TElCRElSCistICAgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisrICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKysJJEVDSE8gIiAgICRsaWJkaXIiCisrICAgICAgZG9uZQorKyAgICAgIGVjaG8KKysgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKysgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKysgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKysgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKysJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwlsaWJkaXI9TElCRElSCisrCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAKKy0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKy0gICAgZmkKKy0gICAgZWNobworKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKysJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKysJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisrICAgICAgZmkKKysgICAgICBlY2hvCisgCistICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKy0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCistCWVjaG8gInBhZ2VzLiIKKy0JOzsKKy0gICAgICAqKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCistICAgICAgICA7OworLSAgICBlc2FjCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisrICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisrICAgICAgY2FzZSAkaG9zdCBpbgorKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisrCSAgZWNobyAicGFnZXMuIgorKwkgIDs7CisrCSopCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisrCSAgOzsKKysgICAgICBlc2FjCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgZmkKKyAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgorQEAgLTIwNzcsNyArMjc4Niw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KKyAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorICAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OworQEAgLTIwOTcsNyArMjgwNiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGRvCisgICAgICAgYXJnMj0KKyAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KKy0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKKysJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKKyAJZGVzdD0kYXJnCisgCWNvbnRpbnVlCisgICAgICAgZmkKK0BAIC0yMTM1LDExICsyODQ0LDExIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KKyAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKKyAgICAgICBmaQorLSAgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBkb25lCisgCisgICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKK0BAIC0yMTUxLDcgKzI4NjAsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgorICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKyAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKy0JaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGZpCisgICAgIGZpCisgCitAQCAtMjIwOSwxMCArMjkxOCwxMyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLiRsaWJleHQpCisgCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCistCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCisgCTs7CisgCisgICAgICAgKi5sYSkKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysKKyAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKyAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKyAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0yMjI2LDIzICsyOTM4LDMwIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCisgCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZWxzZQorIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KKyAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCisgCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLQlkaXI9IiRkaXIkb2JqZGlyIgorKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCisgCisgCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKysgICAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRsaWJkaXIiCisrICAgICAgZGVzdGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisrICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdGRpciIKKysgICAgICBzX2Rlc3RkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKworIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCistCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCisrCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRzX2Rlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGRlc3RsaWJkaXJcJCUlImAKKyAKKyAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCisgCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdAorQEAgLTIzMTUsNyArMzAzNCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCisgCisgCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KKy0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKysJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC0yNTAzLDcgKzMyMjIsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKKyAgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCisgCistICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiICYmICRvcHRfZmluaXNoOyB0aGVuCisrICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCisgICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgorICAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKK0BAIC0yNTEyLDcgKzMyMzEsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorIAorIAorICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCitAQCAtMjU1OSw2ICszMjc4LDE4IEBAIGV4dGVybiBcIkNcIiB7CisgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisgI2VuZGlmCisgCisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKKyAiCisgCitAQCAtMjU3MCwyMSArMzMwMSwyMiBAQCBleHRlcm4gXCJDXCIgeworIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KKyAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCisgCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCistCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKKy0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisrCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAgICRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorQEAgLTI1OTMsMjMgKzMzMjUsMjMgQEAgZXh0ZXJuIFwiQ1wiIHsKKyAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCistCSAgICAgICR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnIDwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIgorKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0gICAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0gICAgICAgICAgICAgICAgY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCisrICAgICAgICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CisgCSAgZWxzZQorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorLQkgICAgICAkR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCisrCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCisrCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisgCSAgICAgIGNhc2UgJGhvc3QgaW4KKyAJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0JICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCistCSAgICAgICAgICBjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisgCSAgICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CitAQCAtMjYyMCwxMCArMzM1Miw1MiBAQCBleHRlcm4gXCJDXCIgeworIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKKyAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgorIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IgorLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorLQkgIH0KKysgICAgICAgICAgY2FzZSAkaG9zdCBpbgorKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisrCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgorKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisrCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKysJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgorKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKysJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKysJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrCSAgICAgICAgICBlbHNlCisrCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKysJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKysJICAgICAgICAgIGZpCisrCSAgICAgICAgZmkKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZmkKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisrCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCisrCSAgICAgICAgfQorKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKikKKysJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKysJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisrCSAgICAgIH0KKysJICAgIDs7CisrICAgICAgICAgIGVzYWMKKyAJZG9uZQorIAorIAkkb3B0X2RyeV9ydW4gfHwgeworQEAgLTI2NjEsMjYgKzM0MzUsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAqYWRkcmVzczsKKyB9IGx0X2Rsc3ltbGlzdDsKKy0iCistCSAgY2FzZSAkaG9zdCBpbgorLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCistICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KKy0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqb3NmNSopCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqKQorLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKKy0JICBlc2FjCistCistCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKKyBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107CistJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Cisge1wKKyAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgorQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbworIAkgIGNhc2UgJGFyZyBpbgorIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OworLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisrCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7CisgCSAgZXNhYworIAlkb25lCisgCitAQCAtMjc5Niw5ICszNTUzLDExIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgorICAgICA7OworICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworLSAgICBpZiAkT0JKRFVNUCAtZiAiJDEiIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CistICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorLSAgICAgIHdpbjMyX25tcmVzPWAkTk0gLWYgcG9zaXggLUEgIiQxIiB8CisrICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgorKyAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CisrICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CisgCSRTRUQgLW4gLWUgJworIAkgICAgMSwxMDB7CisgCQkvIEkgL3sKK0BAIC0yODI3LDYgKzM1ODYsMTMxIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKKyB9CisgCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisrIworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKysjCisrIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCisrIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCisrIworKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisrIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgorKyMKKysjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgorK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKysgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CisrICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgorKyAgICAgIHMvLiovPT09PU1BUks9PT09LworKyAgICAgIHAKKysgICAgICBkCisrICAgIH0KKysgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAorKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZworKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKysgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCisrICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCisrICAgIC9ePT09PU1BUks9PT09L3AKKysgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKKysgICAgL14uXHs0M1x9LyFkCisrICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisrICAgIHMvXi5cezQzXH0vLycgfAorKyAgICAkU0VEIC1uICcKKysgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisrICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQorKyAgICAgIEgKKysgICAgICAkIGIgcGFyYQorKyAgICAgIGIKKysgICAgICA6cGFyYQorKyAgICAgIHgKKysgICAgICBzL1xuLy9nCisrICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgorKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisrICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQorKyAgICAgIHMvW1wuIFx0XSokLy8KKysgICAgICAjIFByaW50CisrICAgICAgLy4vcCcgfAorKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKKysgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKysgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCisrICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgorKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQorKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisrICAgICMgYSAnLicuCisrICAgICMKKysgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKysgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKysgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKKysjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisrIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKysjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKysjCisrIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCisrICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAorKyAgZWxzZQorKyAgICAjIHVua25vd24KKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKysgIGZpCisrfQorIAorIAorICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgorQEAgLTI5MTcsNyArMzgwMSw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQorIAkgICAgZGFyd2luX2ZpbGU9CisgCSAgICBkYXJ3aW5fZmlsZXM9CisgCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KKy0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisrCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKKyAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CisgCSAgICAkUk0gLXJmIHVuZmF0LSQkCitAQCAtMjkzMiw3ICszODE2LDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKyAJOzsKKyAgICAgICBlc2FjCistICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKysgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAgICAgZG9uZQorIAorICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKK0BAIC0zMDE0LDcgKzM4OTgsMTEwIEBAIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorIF9MVEVDSE9fRU9GJworIH0KKyAgICAgRUNITz1cIiRxRUNIT1wiCistICBmaVwKKysgIGZpCisrCisrIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKysjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKKysjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisrIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKysjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisrIyB0aGlzIHBhdHRlcm4pLgorKyMKKysjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKKysjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KKysjCisrIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKKysjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgorK2x0X29wdGlvbl9kZWJ1Zz0KKytmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKKyt7CisrICBsdF9zY3JpcHRfYXJnMD1cJDAKKysgIHNoaWZ0CisrICBmb3IgbHRfb3B0CisrICBkbworKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgorKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OworKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCisrICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KKysgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgorKyAgICAgICAgZXhpdCAwCisrICAgICAgOzsKKysgICAgLS1sdC0qKQorKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKKysgICAgICAgIGV4aXQgMQorKyAgICAgIDs7CisrICAgIGVzYWMKKysgIGRvbmUKKysKKysgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKKysgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisrICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorKyAgZmkKKyt9CisrCisrIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0CisrIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCisrZnVuY19sdF9kdW1wX2FyZ3MgKCkKKyt7CisrICBsdF9kdW1wX2FyZ3NfTj0xOworKyAgZm9yIGx0X2FyZworKyAgZG8KKysgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAorKyAgZG9uZQorK30KKysKKysjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisrZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorK3sKKysiCisrICBjYXNlICRob3N0IGluCisrICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKysgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysKKysgICopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysgIGVzYWMKKysgICRFQ0hPICJcCisrICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorKyAgICAgIGV4aXQgMQorK30KKysKKysjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKysjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAorKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCisrZnVuY19leGVjX3Byb2dyYW0gKCkKKyt7CisrICBmb3IgbHRfd3JfYXJnCisrICBkbworKyAgICBjYXNlIFwkbHRfd3JfYXJnIGluCisrICAgIC0tbHQtKikgOzsKKysgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKysgICAgZXNhYworKyAgICBzaGlmdAorKyAgZG9uZQorKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9CisrfQorKworKyAgIyBQYXJzZSBvcHRpb25zCisrICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CisgCisgICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgorICAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKK0BAIC0zMDc4LDcgKzQwNjUsNyBAQCBfTFRFQ0hPX0VPRicKKyAKKyAgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKKyAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorLSAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCJcJHJlbGlua19jb21tYW5kXCIgMj4mMVxgOyB0aGVuIDoKKysgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKKyAgICAgICBlbHNlCisgCSRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKKyAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCitAQCAtMzEwMiw2ICs0MDg5LDE4IEBAIF9MVEVDSE9fRU9GJworIAorICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKKyAKKysJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKysJIworKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKKysJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKKysJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKysJICAkRUNITyAiXAorKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorKyIKKysJZmkKKysKKyAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCisgCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKyAJICAkRUNITyAiXAorQEAgLTMxMTYsMzUgKzQxMTUsMTAgQEAgX0xURUNIT19FT0YnCisgIgorIAlmaQorIAorLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0JICAkRUNITyAiXAorLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorLSIKKy0JZmkKKy0KKyAJJEVDSE8gIlwKKyAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCistIgorLQljYXNlICRob3N0IGluCistCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorLQkgICRFQ0hPICJcCistICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CistIgorLQkgIDs7CistCistCSopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0JZXNhYworLQkkRUNITyAiXAorLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKy0gICAgICBleGl0IDEKKysgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CisgICAgIGZpCisgICBlbHNlCisgICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KK0BAIC0zMTU4LDE2NiArNDEzMiw2IEBAIGZpXAorIH0KKyAKKyAKKy0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZworLSMKKy0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCistIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCistIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KKy0jIGJ1aWxkIGVudmlyb25tZW50czoKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCistIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQorLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCistIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgorLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKKy0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgorLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgorLSMKKy0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aCAoKQorLXsKKy0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKKy0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CistICAgICAgICAgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtdyAiJDEiIHwKKy0JICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCistICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKKy0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKy0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKKy0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCistICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCRFQ0hPICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfAorLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjazoKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gICAgICAgIGZpCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKKy0KKy0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKKy0jCistIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKKy0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgorLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6CistIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKy0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQorLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CistIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKy0jCistIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bworLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCistIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCistIyBvbiBvdXRwdXQuCistIworLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCistIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCistZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCistICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCistICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorLQlmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCistICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YAorLQkgICAgICAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiApIDI+L2Rldi9udWxsIHwKKy0JICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICpjeWd3aW4qICkKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqICkKKy0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCistICAgICAgICAgICAgSUZTPToKKy0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KKy0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUworLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKKy0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBkb25lCistICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKKy0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKy0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCistICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQorLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCistICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KKy0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKKy0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgorLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAorLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCistICAgICAgICBmaQorLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKKy0gICAgICAgIGNhc2UgIiQxIiBpbgorLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgICo6ICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgZmkKKy19CistIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAorLQorICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYworICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAorICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCitAQCAtMzMzNCwxMCArNDE0OCw2IEBAIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKKyAKKyAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorLQorLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCistICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAorLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KKyAqLworIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKK0BAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKKyB9IHdoaWxlICgwKQorIAorLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKKy0jaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKKy1zdGF0aWMgdm9pZAorLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCisteworLSAgICB2YV9saXN0IGFyZ3M7CistICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKy0gICAgdmFfZW5kIChhcmdzKTsKKy19CisrI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOworICNlbHNlCistIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7CisgI2VuZGlmCisgCistY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKKytjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCisgCisgdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CisgY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKK0BAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKKyBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CisgY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Cistdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKKyt2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKKytzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOworIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CisgY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKKyB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworQEAgLTM0OTcsMTQgKzQzMDEsMTQgQEAgdm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOworK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CisgY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOworIEVPRgorIAorIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKKyAJICAgICAgY2F0IDw8RU9GCistY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MTMsMTAgKzQzMTcsMTAgQEAgRU9GCisgCSAgICBmaQorIAorIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCisgCSAgICAgIGNhdCA8PEVPRgorIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOworLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKKytjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKKyBFT0YKKyAJICAgIGVsc2UKKyAJICAgICAgY2F0IDw8IkVPRiIKK0BAIC0zNTM5LDEyICs0MzQzLDEwIEBAIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKKyAKKyAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgorLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CisgCistc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOworIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOworLQorIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Cisrc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTM1NjEsMTAgKzQzNjMsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgIGludCBpOworIAorICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKysgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKyAKKy0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisrICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CisrICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5CisrICAgKi8KKysgIG5ld2FyZ2M9MDsKKyAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKK0BAIC0zNTgxLDIxICs0Mzg2LDU0IEBAIEVPRgorIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOworIAkgIHJldHVybiAwOworIAl9CisrICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorKwl7CisrICAgICAgICAgIGx0X2RlYnVnID0gMTsKKysgICAgICAgICAgY29udGludWU7CisrCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisrICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisrICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKysgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKysgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKysgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCisrICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorKyAgICAgICAgICAgKi8KKysgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCisrICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisrICAgICAgICB9CisrICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOworICAgICB9CisrICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOworKworK0VPRgorKwkgICAgY2F0IDw8RU9GCisrICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOworK0VPRgorKwkgICAgY2F0IDw8IkVPRiIKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworIAorLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKKy0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICB0bXBfcGF0aHNwZWMpKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIHRtcF9wYXRoc3BlYyk7CisgCisgICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKyAKKy0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisgCisgICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLworQEAgLTM2MTMsOCArNDQ1MSw5IEBAIEVPRgorICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CisgICB0bXBfcGF0aHNwZWMgPSAwOworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKy0JCQkgIHRhcmdldF9uYW1lKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorKwkJICB0YXJnZXRfbmFtZSk7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKK0BAIC0zNjY0LDM1ICs0NTAzLDE5IEBAIEVPRgorIAorICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCisgICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCistICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKysgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKKysgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCisrICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLworICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisrICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAKKy0gIG5ld2FyZ2M9MDsKKy0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCistICAgIHsKKy0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQorLSAgICAgICAgeworLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKy0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKy0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKy0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCistICAgICAgICAgICAqLworLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKKy0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKy0gICAgICAgIH0KKy0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCistICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CistICAgIH0KKy0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CistCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCisgICAgIHsKKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCisrCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CisgICAgIH0KKyAKKyBFT0YKK0BAIC0zNzA2LDcgKzQ1MjksOSBAQCBFT0YKKyAgIGlmIChydmFsID09IC0xKQorICAgICB7CisgICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisrCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgICAgICByZXR1cm4gMTI3OworICAgICB9CisgICByZXR1cm4gcnZhbDsKK0BAIC0zNzI4LDcgKzQ1NTMsNyBAQCB4bWFsbG9jIChzaXplX3QgbnVtKQorIHsKKyAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CisgICBpZiAoIXApCistICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOworIAorICAgcmV0dXJuIHA7CisgfQorQEAgLTM3NjIsOCArNDU4Nyw4IEBAIGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCisgeworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM3ODAsOCArNDYwNSw4IEBAIG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyAgIGludCBydmFsID0gMDsKKyAgIHN0cnVjdCBzdGF0IHN0OworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKy0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM4MDcsOCArNDYzMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgIGludCB0bXBfbGVuOworICAgY2hhciAqY29uY2F0X25hbWU7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7CisgCisgICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQorICAgICByZXR1cm4gTlVMTDsKK0BAIC0zODYxLDcgKzQ2ODYsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCisgCQl7CisgCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCisgCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKy0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAJCSAgY29uY2F0X25hbWUgPQorIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworQEAgLTM4ODYsNyArNDcxMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgICAgfQorICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLworICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisgICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKK0BAIC0zOTEyLDggKzQ3MzksOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKKyAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKysJCSAgICAgIHRtcF9wYXRoc3BlYyk7CisgICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQorIAl7CisgCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKK0BAIC0zOTM1LDggKzQ3NjMsOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgCX0KKyAgICAgICBlbHNlCisgCXsKKy0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOworLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKysJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKKysJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJfQorICAgICB9CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKK0BAIC0zOTQ5LDcgKzQ3NzgsOCBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CisgICBpZiAodG1wX3BhdGhzcGVjID09IDApCisgICAgIHsKKy0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgIH0KKyAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOworICNlbmRpZgorQEAgLTM5NzUsMTEgKzQ4MDUsMjUgQEAgc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKKyAgIHJldHVybiBzdHI7CisgfQorIAorK3ZvaWQKKytsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysgIHZhX2xpc3QgYXJnczsKKysgIGlmIChsdF9kZWJ1ZykKKysgICAgeworKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKKysgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKysgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKysgICAgICB2YV9lbmQgKGFyZ3MpOworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCistbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKKysJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAorIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKKyB7CistICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisrICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7CisgICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CisgICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKyAKK0BAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKKyB9CisgCisgdm9pZAorLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisrbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisgeworICAgdmFfbGlzdCBhcDsKKyAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CistICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKysgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICAgdmFfZW5kIChhcCk7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25udWxsIChjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqCisrbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKKyt9CisrCisgdm9pZAorIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAgIHsKKyAjaWZkZWYgSEFWRV9TRVRFTlYKKyAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KK0BAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCisgdm9pZAorIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworIAorICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgICB7CitAQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB2b2lkCisgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MjIyLDcgKzUwNzgsNyBAQCBFT0YKKyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBjYXNlIGBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCIgfCAkU0VEIC1lIDEwcWAgaW4KKysgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICAqaW1wb3J0KikgOiA7OworICAgICAqKSBmYWxzZSA7OworICAgICBlc2FjCitAQCAtNDQwMSw5ICs1MjU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKy0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCisgCSAgICBlbHNlCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgorIAkgICAgZmkKKyAJICAgIHByZXY9CisgCSAgICBjb250aW51ZQorQEAgLTQ0MjcsNyArNTI4Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqLSotZGFyd2luKikKKyAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgorIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7CistCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisrCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgorIAkJICAgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworQEAgLTQ0NDYsNyArNTMwMiw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBtb3JlYXJncz0KKyAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKKyAJICAgIGRvCistIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisrIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCisgCSAgICAgIGFyZz0kZmlsCisgCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgorIAorQEAgLTQ0NzUsNyArNTMzMSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICAgIHByZXY9CisgCQkgICAgICBjb250aW51ZQorIAkJICAgIGVsc2UKK0BAIC00NDg3LDcgKzUzNDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICBwcmV2PQorIAkJICBmaQorIAorQEAgLTQ1NTcsMTIgKzU0MTMsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgorIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZWxzZQorIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OworIAkgICAgZXNhYworIAkgIGZpCisgCSAgcHJldj0KK0BAIC00NTc0LDI4ICs1NDMwLDI4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY29udGludWUKKyAJICA7OworIAl3ZWFrKQorLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCisgCSAgcHJldj0KKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhjY2xpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNvbXBpbGVyKQorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhsaW5rZXIpCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKK0BAIC00Njg2LDE1ICs1NTQyLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLUwqKQorLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgorLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgorIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKKyAJICBlbHNlCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKKyAJICBmaQorIAlmaQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCWNhc2UgJGRpciBpbgorIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CitAQCAtNDcwNiwxMCArNTU2MywxNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJGRlcGxpYnMgIiBpbgorLQkqIiAtTCRkaXIgIiopIDs7CisrCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisrCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cworKwkgIDs7CisgCSopCistCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgorLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKysJICBjYXNlICRkaXIgaW4KKysJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisrCSAgZXNhYworKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICRob3N0IGluCitAQCAtNDcxOCwxMiArNTU4MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNDc0Nyw3ICs1NjEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICBjb250aW51ZQorIAkgICAgOzsKKyAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCitAQCAtNDc1OCw5ICs1NjIxLDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKKyAJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorIAkgICAgOzsKKy0JICAqLSotbGludXgqKQorLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCistCSAgICA7OworIAkgIGVzYWMKKyAJZWxpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sY19yIjsgdGhlbgorIAkgY2FzZSAkaG9zdCBpbgorQEAgLTQ3NzAsNyArNTYzMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgIDs7CisgCSBlc2FjCisgCWZpCistCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorQEAgLTQ3ODIsOCArNTY0Miw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKworICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgorLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCistCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKysgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKysJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAJcHJldj14Y29tcGlsZXIKK0BAIC00NzkxLDEyICs1NjUxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7CisrCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDg2MywxMyArNTcyMywxNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKysJPSopCisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICA7OworIAkqKQorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJHhycGF0aCAiIGluCisgCSoiICRkaXIgIiopIDs7CistCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDkyMiw4ICs1Nzg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDkzOCw5ICs1ODAyLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDk2OCwyNCArNTgzMiwyNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAJOzsKKyAKKy0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgorLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgorLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCistICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKy0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKKy0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQworLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKy0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCistICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKy0gICAgICAjIC10cD0qIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKysgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisrICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisrICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKysgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCisrICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisrICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisrICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKysgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCistICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qKQorKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKKyAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorICAgICAgICAgY29udGludWUKKyAgICAgICAgIDs7CisgCitAQCAtNDk5Nyw3ICs1ODY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRvYmpleHQpCisgCSMgQSBzdGFuZGFyZCBvYmplY3QuCistCW9ianM9IiRvYmpzICRhcmciCisrCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgorIAk7OworIAorICAgICAgICoubG8pCitAQCAtNTAyOCw3ICs1ODk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisrCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCisgCQlwcmV2PQorIAkJY29udGludWUKKyAJICAgICAgZWxzZQorQEAgLTUwNDAsNyArNTkwNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCisgCSAgICAgIHByZXY9CisgCSAgICBmaQorIAorQEAgLTUwODUsMjQgKzU5NTIsMjUgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRsaWJleHQpCisgCSMgQW4gYXJjaGl2ZS4KKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKy0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKKysJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorICAgICAgICoubGEpCisgCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KKyAKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCisgCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KKy0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCistCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBwcmV2PQorIAllbHNlCistCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJZmkKKyAJY29udGludWUKKyAJOzsKK0BAIC01MTI3LDcgKzU5OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKKyAKKyAgICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGV2YWwgImFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIiIKKysgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgorICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgICAgIGZpCitAQCAtNTE0NCwxMSArNjAxMiwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICBlbHNlCisgICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CisgICAgIGZpCistICAgIGV2YWwgInN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIiCistICAgIGV2YWwgInN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiIgorKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKKysgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgorIAorICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgorICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisrICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgorICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgorIAorQEAgLTUxNjksMTIgKzYwMzksMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCisgICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQorICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbworLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJY2FzZSAiJGxpYnMgIiBpbgorLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGZpCistICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCitAQCAtNTE4Nyw5ICs2MDU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgorIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KKyAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCistCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKKysJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OworIAkgIGVzYWMKKy0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgorKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgorIAlkb25lCisgICAgICAgZmkKKyAgICAgICBwcmVfcG9zdF9kZXBzPQorQEAgLTUyNTYsOCArNjEyNiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisgCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicworIAkgIGRlcGVuZGVuY3lfbGlicz0KKysJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKyAJICBjYXNlICRsaWIgaW4KKy0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKysJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICBlc2FjCisgCisgCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CitAQCAtNTI2Nyw3ICs2MTM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKyAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KKyAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKKy0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCWRvbmUKK0BAIC01Mjg4LDExICs2MTU5LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgZWxzZQorLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM3Nyw3ICs2MjQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisgCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkJICAgICoiICRkZXBsaWIgIiopIDs7CistCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKysJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OworIAkJZXNhYworIAkgICAgZmkKKyAJICBmaQorQEAgLTUzOTAsNyArNjI2MSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgcHJvZykKKyAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NDA0LDcgKzYyNzYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorIAkgICAgZmkKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKK0BAIC01NDE1LDE3ICs2Mjg4LDIxIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCS1SKikKKyAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisgCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgorLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKy0JKi5sYSkgbGliPSIkZGVwbGliIiA7OworKwkqLmxhKQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCSAgOzsKKyAJKi4kbGliZXh0KQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCitAQCAtNTQ4OCwxMSArNjM2NSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KKyAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCisgCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgorLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKKyAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBlbHNlCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGNvbnRpbnVlCitAQCAtNTUzOCw3ICs2NDE1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCisgCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7CistCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKK0BAIC01NTQ2LDggKzY0MjMsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAorIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKKyAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KKy0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgorLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCisrCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCisrCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCisgCWZpCisgCisgCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NTU4LDIwICs2NDM1LDIwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAkgICAgZmkKKyAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KKy0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKysJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCisgCSAgZmkKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gY29udgorQEAgLTU1NzksOSArNjQ1NiwxNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCisgCWxpbmtsaWI9CistCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKy0JICBsaW5rbGliPSIkbCIKKy0JZG9uZQorKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisrCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKKysJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisrCWVsc2UKKysJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisrCSAgICBsaW5rbGliPSIkbCIKKysJICBkb25lCisrCWZpCisgCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAlmaQorQEAgLTU1OTgsOSArNjQ4MSw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQorIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKKyAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KKy0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKysJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisgCSAgZWxzZQorLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgorIAkgIGZpCisgCSAgY29udGludWUKKyAJZmkgIyAkcGFzcyA9IGRsb3BlbgorQEAgLTU2MjIsMTQgKzY1MDUsMTQgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCisgCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KKy0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisrCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisgCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgorIAkgICAgZGlyPSIkbGFkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorLQkgICAgZGlyPSIkbGliZGlyIgorLQkgICAgYWJzZGlyPSIkbGliZGlyIgorKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisrCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKyAJICBmaQorIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCisgCWVsc2UKK0BAIC01NjM3LDEyICs2NTIwLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBlbHNlCisgCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCisgCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCistCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKysJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCisgCSAgZmkKKyAJZmkgIyAkaW5zdGFsbGVkID0geWVzCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgorQEAgLTU2NTMsMjAgKzY1MzYsNDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgorIAkgIGZpCistCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCistCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCistCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCistCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKy0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKKy0JICBlbHNlCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgorLQkgIGZpCisrCSAgY2FzZSAiJGhvc3QiIGluCisrCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisrCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0CisrCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKysJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisrCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCisrCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisrCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKysJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KKysJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKiApCisrCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKysJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKysJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKysJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisrCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKKysJICAgICAgZWxzZQorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBmaQorKwkgICAgOzsKKysJICBlc2FjCisgCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KKyAKKyAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KK0BAIC01Njg0LDcgKzY1OTMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAorIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisrCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgorIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCisgCisgCSAgbGlua2FsbGRlcGxpYnM9bm8KK0BAIC01Njk3LDcgKzY2MDYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCQkgOzsKKyAJICAgIGVzYWMKKyAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KK0BAIC01NzA4LDEyICs2NjE4LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCisgCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZmkKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKKyAJICBkb25lICMgZm9yIGRlcGxpYgorIAkgIGNvbnRpbnVlCisgCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgorQEAgLTU3MjgsNyArNjYzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgorIAkgICAgICAqIiRhYnNkaXI6IiopIDs7CistCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAorQEAgLTU3NDAsNyArNjY1MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc0OSw3ICs2NjU5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc3NCwxMiArNjY4NCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgJGhvc3QgaW4KKyAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQorIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz1ubworIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKKyAJICAgICAgbmVlZF9yZWxpbms9eWVzCisgCSAgICBmaQorIAkgICAgOzsKK0BAIC01ODE0LDcgKzY3MjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OworLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MjMsNyArNjczMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkbGliZGlyICIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MzUsNyArNjc0NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBzaGlmdAorIAkgICAgcmVhbG5hbWU9IiQxIgorIAkgICAgc2hpZnQKKy0JICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKyAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPworIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKyAJICAgICAgc29uYW1lPSIkZGxuYW1lIgorQEAgLTU4NDgsNyArNjc1OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCisgCQk7OworIAkgICAgICBlc2FjCistCSAgICAgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCisgCSAgICBlbHNlCisgCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAkgICAgZmkKK0BAIC01ODc3LDcgKzY3ODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgbGlua2xpYj0kbmV3bGliCisgCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSAgICBhZGRfc2hsaWJwYXRoPQorIAkgICAgYWRkX2Rpcj0KKyAJICAgIGFkZD0KK0BAIC01OTMzLDcgKzY4NDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCSAgY2FzZSAkbGliZGlyIGluCisgCQkgICAgW1xcL10qKQorLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKK0BAIC01OTU1LDcgKzY4NjUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCisgCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KKyAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7CistCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorQEAgLTU5NjksMTMgKzY4NzksMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKyAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCQkqIjokbGliZGlyOiIqKSA7OworLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisrCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICBmaQorIAorLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5ODksNyArNjg5OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokbGliZGlyOiIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICBhZGQ9Ii1sJG5hbWUiCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCitAQCAtNjAwMSwxMiArNjkxMSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaQorIAkgICAgZWxzZQorIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCisrCSAgICAgIGFkZF9kaXI9Ii1MJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisgCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQljYXNlICRsaWJkaXIgaW4KKyAJCSAgW1xcL10qKQorLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKK0BAIC02MDgzLDI3ICs2OTkzLDMzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgorIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OworLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CisgCQkgICBlc2FjOzsKKy0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCisgCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCisgCSAgZmkKKyAKKy0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgorIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQorIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCisgCSAgdG1wX2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgY2FzZSAkZGVwbGliIGluCisrICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisrICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CisrICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKysgICAgICAgICAgICBlc2FjCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCisrICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBkb25lCisgCisgCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCitAQCAtNjExMyw4ICs3MDI5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CisgCSAgICAgICoubGEpCisrCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgorLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKysJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCQljYXNlICRkaXIgaW4KKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OworQEAgLTYxMzAsNyArNzA0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQljYXNlICRob3N0IGluCisgCQkqLSotZGFyd2luKikKKyAJCSAgZGVwZGVwbD0KKy0JCSAgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCisgCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCisgCQkgICAgICBkZXBkZXBsPSR0bXAKK0BAIC02MTQxLDggKzcwNTksOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgICBmaQorLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKyAJCSAgICAgIHBhdGg9CisgCQkgICAgZmkKKyAJCSAgZmkKK0BAIC02MTUyLDcgKzcwNzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICA7OworIAkJZXNhYworIAkJZWxzZQorLQkJICBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKyAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAorQEAgLTYxOTIsNyArNzExMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbworIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCisgCSAgICAqIiAkZGlyICIqKSA7OworLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CitAQCAtNjIwNSw3ICs3MTIzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZmkKKyAJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgorLQkgIGV2YWwgdG1wX2xpYnM9XCQkdmFyCisrCSAgZXZhbCB0bXBfbGlicz1cIlwkJHZhclwiCisgCSAgbmV3X2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCisgCSAgICAjIEZJWE1FOiBQZWRhbnRpY2FsbHksIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBzbworQEAgLTYyNTAsMTMgKzcxNjgsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIC1MKikKKyAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCisgCSAgICAgICoiICRkZXBsaWIgIiopIDs7CistCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CistCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorLQkgIGV2YWwgJHZhcj1cJHRtcF9saWJzCisrCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKKyAJZG9uZSAjIGZvciB2YXIKKyAgICAgICBmaQorICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCitAQCAtNjI2OSw3ICs3MTg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICA7OworIAllc2FjCisgCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgorKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCisgCWZpCisgICAgICAgZG9uZQorICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKK0BAIC02MzEwLDcgKzcyMjgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubworICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCistICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgorICAgICAgIDs7CisgCisgICAgIGxpYikKK0BAIC02MzE5LDggKzcyMzcsOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGxpYiopCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKKyAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCTs7CisgICAgICAgKikKKyAJdGVzdCAiJG1vZHVsZSIgPSBubyAmJiBcCitAQCAtNjMzMCw4ICs3MjQ4LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCisgCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQkgIGV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCWVsc2UKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CitAQCAtNjM0Niw3ICs3MjY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBlY2hvCisgCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgorIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgorLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKKyAJZmkKKyAgICAgICBmaQorIAorQEAgLTY1NDQsNyArNzQ2Miw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZG9uZQorIAorIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KKy0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKKyAJICA7OworIAorIAlxbngpCitAQCAtNjYxMiwxMCArNzUzMCwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZpCisgCisgICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCistICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisrICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgorICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCistICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CisgCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgorIAlyZW1vdmVsaXN0PQorQEAgLTY2MzEsNyArNzU0OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICBjb250aW51ZQorIAkJIGZpCisgCSAgICAgICBmaQorLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisrCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCisgCSAgICAgICA7OworIAkgICAgKikgOzsKKyAJICBlc2FjCitAQCAtNjY0Miw3ICs3NTYwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KKyAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgorLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKyAKKyAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgorIAlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKK0BAIC02NjU5LDEwICs3NTc3LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KKyAJdGVtcF94cnBhdGg9CisgCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KKy0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKKysJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KK0BAIC02Njc2LDcgKzc1OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbworIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgorIAkqIiAkbGliICIqKSA7OworLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAKK0BAIC02Njg2LDcgKzc2MDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbworIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2OTgsNyArNzYxNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICA7OworIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKKyAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCistCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisrCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgorIAkgICAgOzsKKyAJICAqLSotbmV0YnNkKikKKyAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgorQEAgLTY3MTUsNyArNzYzNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgKikKKyAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCisgCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCistCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKKysJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKKyAJICAgIGZpCisgCSAgICA7OworIAkgIGVzYWMKK0BAIC02NzY0LDE4ICs3NjgzLDE4IEBAIEVPRgorIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgKiIgJGkgIiopCistCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGk9IiIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKKysJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKyAJCSAgZGVwbGliX21hdGNoPSQxCisgCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgIGVsc2UKKyAJCSAgICBkcm9wcGVkZGVwcz15ZXMKKyAJCSAgICBlY2hvCitAQCAtNjc4OSw3ICs3NzA4LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4MDcsMTggKzc3MjYsMTggQEAgRU9GCisgCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgICAqIiAkaSAiKikKKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgICAgaT0iIgorIAkJICAgICAgOzsKKyAJCSAgICBlc2FjCisgCQkgIGZpCisgCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICAgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICAgIGRlcGxpYl9tYXRjaD0kMQorIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGVsc2UKKyAJCSAgICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgICAgZWNobworQEAgLTY4NDAsNyArNzc1OSw3IEBAIEVPRgorIAkJZmkKKyAJCTs7CisgCSAgICAgICopCistCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC02ODU3LDE1ICs3Nzc2LDI3IEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KKysJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKysJCWVsc2UKKysJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKKysJCWZpCisrCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCistCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKKysJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisrCQkgICAgJG5vY2FzZWdsb2IKKysJCSAgZWxzZQorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgZmkKKyAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KKyAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CitAQCAtNjg4NSwxMCArNzgxNiwxMCBAQCBFT0YKKyAJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworIAkJCWVzYWMKKyAJCSAgICAgIGRvbmUKKy0JCSAgICAgIGlmIGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIiIDI+L2Rldi9udWxsIHwKKysJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8CisgCQkJICRTRUQgLWUgMTBxIHwKKyAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCQlhX2RlcGxpYj0iIgorIAkJCWJyZWFrIDIKKyAJCSAgICAgIGZpCitAQCAtNjkxMyw3ICs3ODQ0LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC02OTI5LDIwICs3ODYwLDIwIEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCisgCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKKyAJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAorIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCistCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICAgICAgYV9kZXBsaWI9IiIKKyAJCSAgICAgIGJyZWFrIDIKKyAJCSAgICBmaQorQEAgLTY5NjcsNyArNzg5OCw3IEBAIEVPRgorIAkgICAgICA7OworIAkgICAgKikKKyAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KKy0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkgICAgICA7OworIAkgICAgZXNhYworIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCitAQCAtNzA3MSw3ICs4MDAyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KKyAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCistCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKysJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzA4MSwxMCArODAxMiwxMCBAQCBFT0YKKyAJLUwqKQorIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgorIAkgICoiICRkZXBsaWIgIiopIDs7CistCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJICBlc2FjCisgCSAgOzsKKy0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgICAgICAgZGVwbGlicz0iJG5ld19saWJzIgorQEAgLTcxMDEsMTAgKzgwMzIsMTIgQEAgRU9GCisgCSAgaGFyZGNvZGVfbGliZGlycz0KKyAJICBkZXBfcnBhdGg9CisgCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKKy0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKysJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisgCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisgCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKyAJCWVsc2UKK0BAIC03MTEzLDE4ICs4MDQ2LDE4IEBAIEVPRgorIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQkgICAgOzsKKyAJCSAgKikKKy0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKKyAJICAgICAgZWxzZQorLQkJZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisrCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKyAJICAgICAgZmkKKyAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZWQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZG9uZQorQEAgLTcxMzMsNDAgKzgwNjYsMzggQEAgRU9GCisgCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgorIAkgICAgZWxzZQorLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAJICAgIGZpCisgCSAgZmkKKyAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgorIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICAgIHJwYXRoPQorIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KKy0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgICBkb25lCistCSAgICBldmFsICRydW5wYXRoX3Zhcj1cJHJwYXRoXCQkcnVucGF0aF92YXIKKy0JICAgIGV4cG9ydCAkcnVucGF0aF92YXIKKysJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgorIAkgIGZpCisgCSAgdGVzdCAtbiAiJGRlcF9ycGF0aCIgJiYgZGVwbGlicz0iJGRlcF9ycGF0aCAkZGVwbGlicyIKKyAJZmkKKyAKKyAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgorLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKysJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgorLQkgIGV2YWwgJHNobGlicGF0aF92YXI9XCRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyCistCSAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCisrCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorIAlmaQorIAorIAkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKKyAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCisgCXNoaWZ0CisgCXJlYWxuYW1lPSIkMSIKKyAJc2hpZnQKKyAKKyAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgorLQkgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAlmaQorQEAgLTcxNzgsNyArODEwOSw3IEBAIEVPRgorIAlsaW5rbmFtZXM9CisgCWZvciBsaW5rCisgCWRvCistCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgorIAlkb25lCisgCisgCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCitAQCAtNzE4OSw3ICs4MTIwLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisgCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCisgCWZpCisgCisgCW9yaWdfZXhwb3J0X3N5bWJvbHM9CitAQCAtNzIyMCwxMyArODE1MSw0NSBAQCBFT0YKKyAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCisgCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCisgCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKy0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisrCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KKyAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCistCSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKy0JICAgICAgZnVuY19sZW4gIiAkY21kIgorLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKysJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKKysJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisrCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCisrCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCisrCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKKysJCSAgZnVuY19sZW4gIiAkY21kIgorKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorKwkJICA7OworKwkJKikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKysJCSAgOzsKKysJICAgICAgZXNhYworKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKysJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCisrCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQorKwkgICAgICB0aGVuCisrCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKysJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisrCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisrCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKysJCXNhdmVfb3V0cHV0PSRvdXRwdXQKKysJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKysJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKysJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KKysJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkJZG9uZSA+ICIkb3V0cHV0IgorKwkJZXZhbCBjbWQ9XCIkY21kMVwiCisgCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlvdXRwdXQ9JHNhdmVfb3V0cHV0CisrCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKKyAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisgCSAgICAgIGVsc2UKKyAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgorQEAgLTcyNDgsNyArODIxMSw3IEBAIEVPRgorIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJZmkKKyAKKyAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03MjYwLDcgKzgyMjMsNyBAQCBFT0YKKyAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCisgCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKyAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAlmaQorQEAgLTcyNzAsNyArODIzMyw3IEBAIEVPRgorIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgorIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKKyAJICAqKQorLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKKyAJICAgIDs7CisgCSAgZXNhYworIAlkb25lCitAQCAtNzI4Niw0MyArODI0OSw0MyBAQCBFT0YKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcworLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBlbHNlCisgCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCistCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCSAgZmkKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgImZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorKwkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgorIAlmaQorIAorIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKKy0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCistCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKSB8fCBleGl0ICQ/CisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CisgCWZpCisgCisgCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KKyAJaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIiA7IHRoZW4KKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfY21kcworIAkgIGZpCisgCWVsc2UKKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworIAkgIGVsc2UKKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKKyAJICBmaQorIAlmaQorQEAgLTczNjYsMTAgKzgzMjksMTMgQEAgRU9GCisgCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKKyAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCisgCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KKyAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKKyAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKK0BAIC03MzgzLDE1ICs4MzQ5LDE3IEBAIEVPRgorIAkgICAgZmkKKyAJICAgIGZvciBvYmoKKyAJICAgIGRvCistCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisrCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAorIAkgICAgZG9uZQorLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgorIAkgIGVsc2UKKyAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCisgCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCisgCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorLQkgICAgICBldmFsICJ0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorIAkgICAgICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorIAkgICAgICBsZW49JGxlbjAKK0BAIC03NDExLDEyICs4Mzc5LDEyIEBAIEVPRgorIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCisgCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCisrCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCQkgIGVsc2UKKyAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgorIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJCSAgZmkKKyAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisgCQkgIGZ1bmNfYXJpdGggJGsgKyAxCitAQCAtNzQzMywxMSArODQwMSwxMSBAQCBFT0YKKyAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorIAkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCSAgICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIiCisrCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKyAKKyAJICAgIGVsc2UKKyAJICAgICAgb3V0cHV0PQorQEAgLTc0NTAsOSArODQxOCw5IEBAIEVPRgorIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKKyAJICAgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorLQkJZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCitAQCAtNzQ3MSw3ICs4NDM5LDcgQEAgRU9GCisgCQlsdF9leGl0PSQ/CisgCisgCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NDkyLDcgKzg0NjAsNyBAQCBFT0YKKyAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03NTA0LDcgKzg0NzIsNyBAQCBFT0YKKyAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKKyAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGZpCitAQCAtNzUxNSw3ICs4NDgzLDcgQEAgRU9GCisgCSAgb3V0cHV0PSRzYXZlX291dHB1dAorIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAkgICMgRXhwYW5kIHRoZSBsaWJyYXJ5IGxpbmtpbmcgY29tbWFuZHMgYWdhaW4gdG8gcmVzZXQgdGhlCitAQCAtNzUzOSwyMyArODUwNywyMyBAQCBFT0YKKyAKKyAJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgorIAkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCistCSAgZXZhbCAiY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiIgorKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCisgCWZpCisgCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJZmkKKyAKKyAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisgCWZvciBjbWQgaW4gJGNtZHM7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCistCSAgZXZhbCAiY21kPVwiJGNtZFwiIgorKwkgIGV2YWwgY21kPVwiJGNtZFwiCisgCSAgJG9wdF9zaWxlbnQgfHwgeworIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgorIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorQEAgLTc1NjQsNyArODUzMiw3IEBAIEVPRgorIAkgICAgbHRfZXhpdD0kPworIAorIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKyAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAorIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NTc2LDggKzg1NDQsOCBAQCBFT0YKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCisgCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KKyAKKyAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCitAQCAtNzY1NiwxNyArODYyNCwyMCBAQCBFT0YKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKy0JICBldmFsICJ0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKKyAJZWxzZQorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQorIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAgICAgICBmaQorIAorKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCisrICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisrCisgICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCisgICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgCitAQCAtNzY5MCw3ICs4NjYxLDcgQEAgRU9GCisgCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CisgCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCisgCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKKy0JIyAkb3B0X2RyeV9ydW4gfHwgZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIHx8IGV4aXQgJD8KKysJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/CisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzc0MCw4ICs4NzExLDggQEAgRU9GCisgCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKyAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCisgCSAgICAxMC5bMDEyM10pCistCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCistCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKysJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWZpCitAQCAtNzc2MSw3ICs4NzMyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03NzcxLDE3ICs4NzQyLDE3IEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKKyAKKyAKKy0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKKy0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgorIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCitAQCAtNzc4OSw3ICs4NzYwLDcgQEAgRU9GCisgCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorICAgICAgIGZpCitAQCAtNzgwOCwxOCArODc3OSwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorIAljYXNlICRob3N0IGluCitAQCAtNzgyOCwxMiArODc5OSwxMiBAQCBFT0YKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokbGliZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OworIAkgIGVzYWMKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc4NDIsNyArODgxMyw3IEBAIEVPRgorICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCistCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgIGZpCisgICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc4NTksMTggKzg4MzAsMTggQEAgRU9GCisgCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCTs7CisgCSAgICAgICopCistCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAgICAgICBkb25lCitAQCAtNzg3OCw3ICs4ODQ5LDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc5MjEsNiArODg5MiwxMiBAQCBFT0YKKyAJZXhpdF9zdGF0dXM9MAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JworIAorKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisrCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysJZmkKKysKKyAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKyAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgorIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCitAQCAtNzk0Myw3ICs4OTIwLDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk1MSw3ICs4OTI4LDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorIAlmaQorQEAgLTc5NjYsNiArODk0MywxMyBAQCBFT0YKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CisgCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisrCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAlleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgICBmaQorIAorQEAgLTc5OTksNiArODk4MywxMiBAQCBFT0YKKyAKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisgCisrICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKKysJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysgICAgICBmaQorKworICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCisgICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgorIAorQEAgLTgwOTYsNyArOTA4Niw3IEBAIEVPRgorIAllbHNlCisgCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCisgCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgorLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCisgCSAgZmkKKyAJZmkKKyAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKK0BAIC04MTA0LDEwICs5MDk0LDEwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgorIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKKy0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAgICAgICBmaQorIAorICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorQEAgLTgxMTgsMTAgKzkxMDgsMTAgQEAgRU9GCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCWZpCisgCisgCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQorQEAgLTgxMzksNyArOTEyOSw3IEBAIEVPRgorIAllbHNlCisgCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCisgCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCisgCSAgb2xkb2Jqcz0KK0BAIC04MTYzLDE4ICs5MTUzLDI4IEBAIEVPRgorIAkJZXNhYworIAkgICAgICBkb25lCisgCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKKy0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgorIAkgICAgICA7OworLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKKy0JZXZhbCAiY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAKKyAJZnVuY19sZW4gIiAkY21kcyIKKyAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKKyAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisgCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisrCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgorKwkgIGZvciBvYmogaW4gJG9sZG9ianMKKysJICBkbworKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKKysJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworIAllbHNlCisgCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKKyAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCitAQCAtODE4OSw3ICs5MTg5LDcgQEAgRU9GCisgCSAgZG8KKyAJICAgIGxhc3Rfb2xkb2JqPSRvYmoKKyAJICBkb25lCistCSAgZXZhbCAidGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgbGVuPSRsZW4wCitAQCAtODIwOCw3ICs5MjA4LDcgQEAgRU9GCisgCQlSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgICAgIGZpCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgICAgIG9iamxpc3Q9CisgCSAgICAgIGxlbj0kbGVuMAorIAkgICAgZmkKK0BAIC04MjE2LDkgKzkyMTYsOSBAQCBFT0YKKyAJICBSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgb2xkb2Jqcz0kb2JqbGlzdAorIAkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc1wiIgorKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCisgCSAgZWxzZQorLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgZmkKKyAJZmkKKyAgICAgICBmaQorQEAgLTgyNjgsMTIgKzkyNjgsMjMgQEAgRU9GCisgCSAgICAgICoubGEpCisgCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKysJCTs7CisrCSAgICAgIC1MKikKKysJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisgCQk7OworLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgLVIqKQorKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKysJCTs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKK0BAIC04Mjg0LDEyICs5Mjk1LDE0IEBAIEVPRgorIAkgICAgICAqLmxhKQorIAkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKysKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorIAkJOzsKKy0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorQEAgLTgzMDMsMTAgKzkzMTYsMTEgQEAgRU9GCisgCQkjIHRoZSBsaWJyYXJ5OgorIAkJZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtODMxOCw3ICs5MzMyLDcgQEAgRU9GCisgCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKKyAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKKyAJICAgICAgZXNhYworLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorIAkgICAgbmV3ZGxwcmVmaWxlcz0KK0BAIC04MzI3LDcgKzkzNDEsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisgCSAgZmkKK0BAIC04NDEyLDcgKzk0MjYsNyBAQCByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgorK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgorICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KKyAKKyAKK0BAIC04NDMyLDkgKzk0NDYsOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGZvciBhcmcKKyAgICAgZG8KKyAgICAgICBjYXNlICRhcmcgaW4KKy0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKy0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OworLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKysgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKysgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OworKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKKyAgICAgICBlc2FjCisgICAgIGRvbmUKKyAKK0BAIC04NDQzLDI0ICs5NDU3LDIzIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAgICAgcm1kaXJzPQorIAorLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgorICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisgICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCisgICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgorLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorKwlvZGlyPSIkb2JqZGlyIgorICAgICAgIGVsc2UKKy0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorKwlvZGlyPSIkZGlyLyRvYmpkaXIiCisgICAgICAgZmkKKyAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKyAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKysgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCisgCistICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisrICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKysgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KKyAJY2FzZSAiICRybWRpcnMgIiBpbgorLQkgICoiICRvYmpkaXIgIiopIDs7CistCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisrCSAgKiIgJG9kaXIgIiopIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7CisgCWVzYWMKKyAgICAgICBmaQorIAorQEAgLTg0ODYsMTggKzk0OTksMTcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCisgCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgorIAkgIGRvbmUKKy0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKKyAKKy0JICBjYXNlICIkbW9kZSIgaW4KKysJICBjYXNlICIkb3B0X21vZGUiIGluCisgCSAgY2xlYW4pCistCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KKy0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KKyAJICAgICoiICRkbG5hbWUgIiopIDs7CistCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisrCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKKyAJICAgIGVzYWMKKy0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKysJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKKyAJICAgIDs7CisgCSAgdW5pbnN0YWxsKQorIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCitAQCAtODUyNSwxOSArOTUzNywxOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCisgCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKKyAJICBmaQorIAorIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKKyAJICBmaQorIAlmaQorIAk7OworIAorICAgICAgICopCistCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgorKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCisgCSAgbm9leGVuYW1lPSRuYW1lCisgCSAgY2FzZSAkZmlsZSBpbgorIAkgICouZXhlKQorQEAgLTg1NDcsNyArOTU1OSw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCisgCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgorIAkgICAgOzsKKyAJICBlc2FjCisgCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCitAQCAtODU1Niw3ICs5NTY4LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisgCSAgICBlbHNlCisgCSAgICAgIHJlbGlua19jb21tYW5kPQorIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKK0BAIC04NTY0LDEyICs5NTc2LDEyIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CisgCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcworLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCisgCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKKyAJICAgIGZpCisgCSAgZmkKKyAJZmkKK0BAIC04NTc3LDcgKzk1ODksNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgICAgZXNhYworICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJworICAgICBkb25lCistICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCisgCisgICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcworICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCitAQCAtODU4OSwxNiArOTYwMCwxNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgorICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQorIAorLXRlc3QgLXogIiRtb2RlIiAmJiB7CisrdGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7CisgICBoZWxwPSIkZ2VuZXJpY19oZWxwIgorICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKKyB9CisgCisgdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCistICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorIAorIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KKyAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgorZGlmZiAtLWdpdCBhL2x0b3B0aW9ucy5tNCBiL2x0b3B0aW9ucy5tNAoraW5kZXggNWVmMTJjZWQyYS4uMTdjZmQ1MWMwYiAxMDA2NDQKKy0tLSBhL2x0b3B0aW9ucy5tNAorKysrIGIvbHRvcHRpb25zLm00CitAQCAtOCw3ICs4LDcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKKysjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAorIAorICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCisgQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQorZGlmZiAtLWdpdCBhL2x0dmVyc2lvbi5tNCBiL2x0dmVyc2lvbi5tNAoraW5kZXggYmY4N2Y3NzEzMi4uOWM3YjVkNDExOCAxMDA2NDQKKy0tLSBhL2x0dmVyc2lvbi5tNAorKysrIGIvbHR2ZXJzaW9uLm00CitAQCAtNywxNyArNywxNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKysjIEBjb25maWd1cmVfaW5wdXRACisgCistIyBzZXJpYWwgMzEzNCBsdHZlcnNpb24ubTQKKysjIHNlcmlhbCAzMjkzIGx0dmVyc2lvbi5tNAorICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKKyAKKy1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuN2FdKQorLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMxMzRdKQorK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNF0pCisrbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzI5M10pCisgCisgQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKKy1bbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrW21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQorIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCisgXSkKK2RpZmYgLS1naXQgYS9sdH5vYnNvbGV0ZS5tNCBiL2x0fm9ic29sZXRlLm00CitpbmRleCBiZjkyYjVlMDc5Li5jNTczZGE5MGM1IDEwMDY0NAorLS0tIGEvbHR+b2Jzb2xldGUubTQKKysrKyBiL2x0fm9ic29sZXRlLm00CitAQCAtNyw3ICs3LDcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKKyAKKyAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KKyAjCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQoraW5kZXggMTc1MzBmNTRiOS4uNzliMzk2MTFjMiAxMDA3NTUKKy0tLSBhL29wY29kZXMvY29uZmlndXJlCisrKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQorQEAgLTY1MCw2ICs2NTAsOSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKythY19jdF9BUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzYzLDYgKzc2Niw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlX3dlcnJvcgorQEAgLTE0MjMsNiArMTQyNyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTUxMTUsOCArNTEyMSw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01MTU2LDcgKzUxNjIsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC01ODQyLDggKzU4NDgsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNTg5Miw2ICs1ODk4LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01OTA4LDYgKzU5ODgsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYwNzYsNyArNjE2MSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02MjMwLDYgKzYzMTYsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02MjQzLDExICs2MzQ0LDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MjYzLDcgKzY1MTcsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MjgzLDExICs2NTM3LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYzMDMsNyArNjU2MSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzIyLDYgKzY1ODAsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYzMzMsMTYgKzY1OTUsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02Njg0LDggKzcwMDIsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTY3MjEsNiArNzAzOSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC02NzYyLDYgKzcwODEsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNjc3Myw3ICs3MTA0LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNjc5OSw4ICs3MTMwLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNjgxMCw4ICs3MTQxLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNjg0OCw2ICs3MTc5LDE2IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisgCisgCisgCitAQCAtNjg2NCw2ICs3MjA1LDQ1IEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzA3NSw2ICs3NDU1LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03NjM4LDYgKzgxMzUsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzgwMyw3ICs4MzAyLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTc4OTIsNyArODM5Miw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODE5MCw4ICs4NjkwLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04MzU3LDYgKzg4NTUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04NDE5LDcgKzg5MjMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODQ3NiwxMyArODk4MCwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04NTQzLDYgKzkwNTEsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC04ODkzLDcgKzk0MDYsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC04OTkyLDEyICs5NTA2LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkwMTEsOCArOTUyNSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MDMwLDggKzk1NDQsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTA3Nyw4ICs5NTkxLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkyMDgsNyArOTcyMiwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MjIxLDIyICs5NzQxLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05MjQ4LDcgKzk3NzUsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkyNjEsMjIgKzk3OTQsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05MzIxLDIwICs5ODYxLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTM5NSw3ICs5OTc4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTQwMyw3ICs5OTg2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTQxOSw3ICsxMDAwMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NDQzLDEwICsxMDAyNiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk1MjUsMjMgKzEwMTA4LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05NjI2LDcgKzEwMjIyLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTY0NSw5ICsxMDI0MSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDIyMyw4ICsxMDgxOSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDI1NywxMyArMTA4NTQsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwMzU1LDcgKzExMDEwLDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExMTk1LDEwICsxMTg1MCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExMzAxLDEwICsxMTk1NiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEyNTQzLDcgKzEzMTk4LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAjIHNpbmNlIGxpYmJmZCBtYXkgbm90IHB1bGwgaW4gdGhlIGVudGlyZXR5IG9mIGxpYmliZXJ0eS4KKyAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCisgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KKy0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgorKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgorICAgZmkKKyAKKyAgIGNhc2UgIiR7aG9zdH0iIGluCitAQCAtMTM1MjAsMTMgKzE0MTc1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM1NDEsMTQgKzE0MjAzLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNTgxLDEyICsxNDI0NiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzY0MSw4ICsxNDMwNiwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTM2NTIsMTIgKzE0MzIyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMzY3Myw3ICsxNDM0NSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEzNzA5LDYgKzE0MzgwLDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNDQ2NSw3ICsxNTEzNyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTQ1NjgsMTkgKzE1MjQxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE0NjEwLDYgKzE1MzA2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE0NjE5LDYgKzE1MzIxLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNDczMywxMiArMTU0MzgsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTQ4MjUsOSArMTU1MzAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNDg0Myw2ICsxNTU0NSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTQ4NzUsMjEwICsxNTU4MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYworaW5kZXggYTlmYmZkNjFmMS4uYzQzNzgwZjY0ZCAxMDA2NDQKKy0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCisrKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYworQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyBjaGFuZ2VxdW90ZShbLF0pZG5sCisgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KKy0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgorKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgorICAgZmkKKyAKKyAgIGNhc2UgIiR7aG9zdH0iIGluCitkaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQoraW5kZXggZGMyZDllZDM4My4uZWQ5YTQ5MmY1YyAxMDA3NTUKKy0tLSBhL3psaWIvY29uZmlndXJlCisrKysgYi96bGliL2NvbmZpZ3VyZQorQEAgLTYxNCw4ICs2MTQsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzM3LDYgKzc0MCw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9ob3N0X3NoYXJlZAorICcKK0BAIC0xMzg1LDYgKzEzODksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgCisgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKK0BAIC0zOTEwLDggKzM5MTYsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtMzk1MSw3ICszOTU3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNDc2Nyw4ICs0NzczLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTQ4MTcsNiArNDgyMyw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNDgzMyw2ICs0OTEzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC01MDAxLDcgKzUwODYsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNTE1NSw2ICs1MjQxLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNTE2OCwxMSArNTI2OSwxNjUgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTE4OCw3ICs1NDQzLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNTIwOCwxMSArNTQ2MywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01MjI4LDcgKzU0ODcsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNTI0Nyw2ICs1NTA2LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC01MjU4LDE2ICs1NTIxLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNTYwOSw4ICs1OTI4LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC01NjQ2LDYgKzU5NjUsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNTY4Nyw2ICs2MDA3LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTU2OTgsNyArNjAzMCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTU3MjQsOCArNjA1Niw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTU3MzUsOCArNjA2Nyw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTU3NzMsNiArNjEwNSwxOSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworIAorIAorIAorQEAgLTU3OTAsNiArNjEzNSw0MSBAQCBmaQorIAorIAorIAorKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTYwMDQsNiArNjM4NCwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNjU3MCw2ICs3MDY3LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTcwMzMsNyArNzUzMiw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03MTIyLDcgKzc2MjIsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTc0MjAsOCArNzkyMCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtNzU4Nyw2ICs4MDg1LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtNzY0OSw3ICs4MTUzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTc3MDYsMTMgKzgyMTAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtNzc3Myw2ICs4MjgxLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODEyMyw3ICs4NjM2LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtODIyMiwxMiArODczNiwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC04MjQxLDggKzg3NTUsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtODI2MCw4ICs4Nzc0LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTgzMDcsOCArODgyMSw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC04NDM4LDcgKzg5NTIsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKyAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorIGZpCisgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorQEAgLTg0NTQsMjIgKzg5NzQsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTg0ODEsNyArOTAwOCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKyAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorIGZpCisgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorQEAgLTg0OTcsMjIgKzkwMzAsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC04NTU3LDIwICs5MDk3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtODYzMSw3ICs5MjE0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtODYzOSw3ICs5MjIyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtODY1NSw3ICs5MjM4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTg2NzksMTAgKzkyNjIsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC04NzYxLDI2ICs5MzQ0LDM5IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKyAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorIGZpCisgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTg4NjUsNyArOTQ2MSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTg4ODQsOSArOTQ4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC05NDYyLDggKzEwMDU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTk0OTYsMTMgKzEwMDkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC05NTk0LDcgKzEwMjQ5LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTEwNDUyLDEwICsxMTEwNywxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEwNTU4LDEwICsxMTIxMywxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExOTkyLDEzICsxMjY0NywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEyMDEzLDE0ICsxMjY3NSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMjA1MywxMiArMTI3MTgsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTIxMTMsOCArMTI3NzgsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTEyMTI0LDEyICsxMjc5NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTIxNDUsNyArMTI4MTcsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xMjE4MSw2ICsxMjg1Miw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTI3NzAsNyArMTM0NDIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTEyODczLDE5ICsxMzU0Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xMjkxNSw2ICsxMzYxMSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xMjkyNCw2ICsxMzYyNiw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTMwMzgsMTIgKzEzNzQzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTEzMTMwLDkgKzEzODM1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTMxNDgsNiArMTM4NTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTEzMTgwLDIxMCArMTM4ODUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgwMTk2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSAyYjg3YWFkMTc0MWJjNDgxZGQwOTgyZjEwMGFkNWVhN2Y5MzdiYjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAorU3ViamVjdDogW1BBVENIIDA3LzE1XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKKworQmludXRpbHMgaGFzIGEgY29tbWVudCB0aGF0IGluZGljYXRlcyBpdCBpcyBzdXBwb3NlZCB0byBtYXRjaCBnY2MgZm9yCithbGwgb2YgdGhlIHN1cHBvcnQgIi1tYXJjaD0iIHNldHRpbmdzLCBidXQgaXQgd2FzIGxhY2tpbmcgdGhlIGFybXY1ZSBzZXR0aW5nLgorVGhpcyB3YXMgYSBzaW1wbGUgd2F5IHRvIGFkZCBpdCwgYXMgdGh1bWIgaW5zdHJ1Y3Rpb25zIHNob3VsZG4ndCBiZSBnZW5lcmF0ZWQKK2J5IHRoZSBjb21waWxlciBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCitVcHN0cmVhbSBtYWludGFpbmVyIGluZGljYXRlZCB0aGF0IHdlIHNob3VsZCBub3QgYmUgdXNpbmcgYXJtdjVlLCBldmVuCit0aG91Z2ggaXQgaXMgYSBsZWdhbCBhcmNoaWN0dXJlIGRlZmluZWQgYnkgb3VyIGdjYy4KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdhcy9jb25maWcvdGMtYXJtLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCitpbmRleCBhODg1ZWZlNGZjLi43MzVlYWE3NDQ3IDEwMDY0NAorLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYworKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYworQEAgLTI1OTkwLDYgKzI1OTkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKKyAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCisrICBBUk1fQVJDSF9PUFQgKCJhcm12NWUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKKyAgIEFSTV9BUkNIX09QVCAoImFybXY1dCIsCUFSTV9BUkNIX1Y1VCwJIEZQVV9BUkNIX1ZGUCksCisgICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKKyAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjdmNzUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEzNyArMCwwIEBACi1Gcm9tIDlhMzY1MWUxMjAyNjFjNzIwOTA2ODlhZDc3MGFkMDQ4YjBiYWY1MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjI4OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIFVzZSBsaWJ0b29sIDIuNAotCi1nZXQgbGlidG9vbCBzeXNyb290IHN1cHBvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KLQotIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQotIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQotIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQotIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQotIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQotIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKysrLS0tLS0tCi0gbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gbHRvcHRpb25zLm00ICAgICAgICAgfCAgICAyICstCi0gbHR2ZXJzaW9uLm00ICAgICAgICAgfCAgIDEyICstCi0gbHR+b2Jzb2xldGUubTQgICAgICAgfCAgICAyICstCi0gb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCi0gemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gMTQgZmlsZXMgY2hhbmdlZCwgOTkyNiBpbnNlcnRpb25zKCspLCAzNjkzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKLWluZGV4IGYzMGJmYWJlZjMuLmZhMWE1NDVlOWQgMTAwNzU1Ci0tLS0gYS9iZmQvY29uZmlndXJlCi0rKysgYi9iZmQvY29uZmlndXJlCi1AQCAtNjcyLDYgKzY3Miw5IEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotK2FjX2N0X0FSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03ODUsNiArNzg4LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ2MSw2ICsxNDY1LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKLSAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKLUBAIC01MzkzLDggKzUzOTksOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTQzNCw3ICs1NDQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjEyMCw4ICs2MTI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYxNzAsNiArNjE3Niw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjE4Niw2ICs2MjY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MzU0LDcgKzY0MzksOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjUwOCw2ICs2NTk0LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjUyMyw5ICs2NjI0LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02NTQxLDcgKzY3OTUsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NTYxLDExICs2ODE1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1ODEsNyArNjgzOSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NjAwLDYgKzY4NTgsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY2MTEsMTYgKzY4NzMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC02OTYyLDggKzcyODAsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY5OTksNiArNzMxNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MDQwLDYgKzczNTksMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzA1MSw3ICs3MzgyLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzA3Nyw4ICs3NDA4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzA4OCw4ICs3NDE5LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzEyNiw2ICs3NDU3LDE2IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzE0Nyw2ICs3NDg4LDQ1IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKLUBAIC03MzUzLDYgKzc3MzMsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc5MTYsNiArODQxMyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MDgwLDcgKzg1NzksOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODE2OSw3ICs4NjY5LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NDY3LDggKzg5NjcsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg2MzQsNiArOTEzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg2OTYsNyArOTIwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NzUzLDEzICs5MjU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg4MjAsNiArOTMyOCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTkxNzAsNyArOTY4Myw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkyNjksMTIgKzk3ODMsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTI4OCw4ICs5ODAyLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTkzMDcsOCArOTgyMSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MzU0LDggKzk4NjgsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTQ4NSw3ICs5OTk5LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk0OTgsMjIgKzEwMDE4LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05NTI1LDcgKzEwMDUyLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTM4LDIyICsxMDA3MSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk1OTgsMjAgKzEwMTM4LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTY3Miw3ICsxMDI1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk2ODAsNyArMTAyNjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05Njk2LDcgKzEwMjc5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk3MjAsMTAgKzEwMzAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTgwMiwyMyArMTAzODUsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk5MDMsNyArMTA0OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05OTIyLDkgKzEwNTE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNTAwLDggKzExMDk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNTM0LDEzICsxMTEzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA2MzIsNyArMTEyODcsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE0NzIsMTAgKzEyMTI3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE1NzgsMTAgKzEyMjMzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTQxMjIsNyArMTQ3NzcsNyBAQCBTSEFSRURfTERGTEFHUz0KLSBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1AQCAtMTY4MjYsMTMgKzE3NDgxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY4NDcsMTQgKzE3NTA5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2ODg3LDEyICsxNzU1MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjk0Nyw4ICsxNzYxMiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTY5NTgsMTIgKzE3NjI4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xNjk3OSw3ICsxNzY1MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE3MDE1LDYgKzE3Njg2LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNzc5NCw3ICsxODQ2Niw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTc4OTcsMTkgKzE4NTcwLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE3OTM5LDYgKzE4NjM1LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE3OTQ4LDYgKzE4NjUwLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xODA2MiwxMiArMTg3NjcsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTgxNTQsOSArMTg4NTksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xODE3Miw2ICsxODg3NCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTgyMDQsMjEwICsxODkwOSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKLWluZGV4IDlhMTgzYzE2MjguLjNkOGVhMDc4MzYgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlndXJlLmFjCi0rKysgYi9iZmQvY29uZmlndXJlLmFjCi1AQCAtMjUzLDcgKzI1Myw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCi1pbmRleCA4MjExOWVmZTcyLi40YTk4OTE4Y2UxIDEwMDc1NQotLS0tIGEvYmludXRpbHMvY29uZmlndXJlCi0rKysgYi9iaW51dGlscy9jb25maWd1cmUKLUBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc3Miw2ICs3NzUsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDQ0LDYgKzE0NDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCi0gICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi1AQCAtNTE2MCw4ICs1MTY2LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTUyMDEsNyArNTIwNyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4ODcsOCArNTg5Myw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01OTM3LDYgKzU5NDMsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5NTMsNiArNjAzMywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjEyMSw3ICs2MjA2LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTYyNzUsNiArNjM2MSwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyOTAsOSArNjM5MSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjMwOCw3ICs2NTYyLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjMyOCwxMSArNjU4MiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzQ4LDcgKzY2MDYsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjM2Nyw2ICs2NjI1LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02Mzc4LDEyICs2NjQwLDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotIAotIAotIAotQEAgLTYzOTUsNiArNjY1NSw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY3MjksOCArNzA0Nyw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjc2Niw2ICs3MDg0LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTY4MDcsNiArNzEyNiwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC02ODE4LDcgKzcxNDksNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC02ODQ0LDggKzcxNzUsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02ODU1LDggKzcxODYsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC02ODkzLDYgKzcyMjQsMjEgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC02OTEwLDYgKzcyNTYsNDAgQEAgZmkKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSsKLSsKLSAKLSAKLSAKLUBAIC03MTIwLDYgKzc1MDAsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc2ODMsNiArODE4MCw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03ODc4LDcgKzgzNzcsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtNzk2Nyw3ICs4NDY3LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04MjY1LDggKzg3NjUsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg0MzIsNiArODkzMCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg0OTQsNyArODk5OCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NTUxLDEzICs5MDU1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg2MTgsNiArOTEyNiwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTg5NjgsNyArOTQ4MSw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkwNjcsMTIgKzk1ODEsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTA4Niw4ICs5NjAwLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTkxMDUsOCArOTYxOSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MTUyLDggKzk2NjYsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTI4Myw3ICs5Nzk3LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkyOTYsMjIgKzk4MTYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkzMjMsNyArOTg1MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTMzNiwyMiArOTg2OSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkzOTYsMjAgKzk5MzYsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NDcwLDcgKzEwMDUzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTQ3OCw3ICsxMDA2MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk0OTQsNyArMTAwNzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTUxOCwxMCArMTAxMDEsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05NjAwLDIzICsxMDE4MywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTcwMSw3ICsxMDI5Nyw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk3MjAsOSArMTAzMTYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAyOTgsOCArMTA4OTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAzMzIsMTMgKzEwOTI5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDQzMCw3ICsxMTA4NSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTI3MCwxMCArMTE5MjUsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTM3NiwxMCArMTIwMzEsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTQzNiwxMyArMTYwOTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ1NywxNCArMTYxMTksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0OTcsMTIgKzE2MTYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTU3LDggKzE2MjIyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNTU2OCwxMiArMTYyMzgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE1NTg5LDcgKzE2MjYxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU2MjUsNiArMTYyOTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2MzgyLDcgKzE3MDU0LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjQ4NSwxOSArMTcxNTgsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTY1MjcsNiArMTcyMjMsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTY1MzYsNiArMTcyMzgsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE2NjUwLDEyICsxNzM1NSwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNjc0Miw5ICsxNzQ0Nyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE2NzYwLDYgKzE3NDYyLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNjc5MiwyMTAgKzE3NDk3LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggZTU3NGNiODUxNC4uYTM2ZjFhZTE2MSAxMDA3NTUKLS0tLSBhL2dhcy9jb25maWd1cmUKLSsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc2Myw2ICs3NjYsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC00OTIxLDggKzQ5MjUsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNDk2Miw3ICs0OTY2LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTY0OCw4ICs1NjUyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU2OTgsNiArNTcwMiw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTcxNCw2ICs1NzkyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01ODgyLDcgKzU5NjUsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjAzNiw2ICs2MTIwLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjA1MSw5ICs2MTUwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MDY5LDcgKzYzMjEsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MDg5LDExICs2MzQxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYxMDksNyArNjM2NSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MTI4LDYgKzYzODQsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYxMzksMTIgKzYzOTksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjE1Niw2ICs2NDE0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjQ5MCw4ICs2ODA2LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NTI3LDYgKzY4NDMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjU2OCw2ICs2ODg1LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY1NzksNyArNjkwOCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY2MDUsOCArNjkzNCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY2MTYsOCArNjk0NSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY2NTQsNiArNjk4MywyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTY2NzEsNiArNzAxNSw0MCBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotIAotIAotIAotQEAgLTY4ODEsNiArNzI1OSwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzQ0NCw2ICs3OTM5LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc2MzksNyArODEzNiw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03NzI4LDcgKzgyMjYsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgwMjYsOCArODUyNCw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODE5Myw2ICs4Njg5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODI1NSw3ICs4NzU3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTgzMTIsMTMgKzg4MTQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODM3OSw2ICs4ODg1LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODcyOSw3ICs5MjQwLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODgyOCwxMiArOTM0MCwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC04ODQ3LDggKzkzNTksOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtODg2Niw4ICs5Mzc4LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg5MTMsOCArOTQyNSw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MDQ0LDcgKzk1NTYsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTA1NywyMiArOTU3NSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTA4NCw3ICs5NjA5LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MDk3LDIyICs5NjI4LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTE1NywyMCArOTY5NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTkyMzEsNyArOTgxMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTkyMzksNyArOTgyMCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTkyNTUsNyArOTgzNiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05Mjc5LDEwICs5ODYwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTM2MSwyMyArOTk0MiwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTQ2Miw3ICsxMDA1Niw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk0ODEsOSArMTAwNzUsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAwNTksOCArMTA2NTMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAwOTMsMTMgKzEwNjg4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDE5MSw3ICsxMDg0NCw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTAzMSwxMCArMTE2ODQsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTEzNywxMCArMTE3OTAsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTQyNSwxMyArMTYwNzgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ0NiwxNCArMTYxMDYsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0ODYsMTIgKzE2MTQ5LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTQ2LDggKzE2MjA5LDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNTU1NywxMiArMTYyMjUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE1NTc4LDcgKzE2MjQ4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU2MTQsNiArMTYyODMsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2Mzc4LDcgKzE3MDQ4LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjQ4MSwxOSArMTcxNTIsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTY1MjMsNiArMTcyMTcsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTY1MzIsNiArMTcyMzIsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE2NjQ2LDEyICsxNzM0OSwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNjczOCw5ICsxNzQ0MSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE2NzU2LDYgKzE3NDU2LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNjc4OCwyMTAgKzE3NDkxLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IDM4YTRjMGIwZTUuLjM4ZDFmNjk5YzcgMTAwNzU1Ci0tLS0gYS9ncHJvZi9jb25maWd1cmUKLSsrKyBiL2dwcm9mL2NvbmZpZ3VyZQotQEAgLTYzMSw4ICs2MzEsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzQ0LDYgKzc0Nyw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0MDIsNiArMTQwNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTQ4MzYsOCArNDg0Miw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC00ODc3LDcgKzQ4ODMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01NTYzLDggKzU1NjksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTYxMyw2ICs1NjE5LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NjI5LDYgKzU3MDksMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTU3OTcsNyArNTg4Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC01ODc0LDExICs1OTYwLDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0tbGludXgtdWNsaWJjKikKLS0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0tICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotLSAgOzsKLS0KLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi1AQCAtNTk1Niw2ICs2MDM3LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTk3MSw5ICs2MDY3LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01OTg5LDcgKzYyMzgsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MDA5LDExICs2MjU4LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYwMjksNyArNjI4Miw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MDQ4LDYgKzYzMDEsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYwNTksMTIgKzYzMTYsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjA3Niw2ICs2MzMxLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjQxMCw4ICs2NzIzLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NDQ3LDYgKzY3NjAsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjQ4OCw2ICs2ODAyLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY0OTksNyArNjgyNSw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY1MjUsOCArNjg1MSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY1MzYsOCArNjg2Miw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY1NzQsNiArNjkwMCwxOCBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTY1OTUsNiArNjkzMyw0MyBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7Ci1AQCAtNjgwMSw2ICs3MTc2LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03MzY0LDYgKzc4NTYsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzU1OSw3ICs4MDUzLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc2NDgsNyArODE0Myw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzk0Niw4ICs4NDQxLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MTEzLDYgKzg2MDYsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MTc1LDcgKzg2NzQsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODIzMiwxMyArODczMSwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mjk5LDYgKzg4MDIsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04NjQ5LDcgKzkxNTcsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04NzQ4LDEyICs5MjU3LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTg3NjcsOCArOTI3Niw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04Nzg2LDggKzkyOTUsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODgzMyw4ICs5MzQyLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg5NjQsNyArOTQ3MywxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC04OTc3LDIyICs5NDkyLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MDA0LDcgKzk1MjYsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkwMTcsMjIgKzk1NDUsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MDc3LDIwICs5NjEyLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTE1MSw3ICs5NzI5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTE1OSw3ICs5NzM3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTE3NSw3ICs5NzUzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTkxOTksMTAgKzk3NzcsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05MjgxLDIzICs5ODU5LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05MzgyLDcgKzk5NzMsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05NDAxLDkgKzk5OTIsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtOTk3OSw4ICsxMDU3MCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDAxMywxMyArMTA2MDUsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMTExLDcgKzEwNzYxLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTEwOTUxLDEwICsxMTYwMSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMDU3LDEwICsxMTcwNywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEzMDA1LDEzICsxMzY1NSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMDI2LDE0ICsxMzY4MywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzA2NiwxMiArMTM3MjYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMxMjYsOCArMTM3ODYsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEzMTM3LDEyICsxMzgwMiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTMxNTgsNyArMTM4MjUsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMzE5NCw2ICsxMzg2MCw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTM5NTAsNyArMTQ2MTcsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE0MDUzLDE5ICsxNDcyMSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNDA5NSw2ICsxNDc4NiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNDEwNCw2ICsxNDgwMSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTQyMTgsMTIgKzE0OTE4LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE0MzEwLDkgKzE1MDEwLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTQzMjgsNiArMTUwMjUsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE0MzYwLDIxMCArMTUwNjAsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggYTE2YzZkYjA1OS4uNDI3N2I3NGJhZCAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtNjU5LDggKzY1OSwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03ODIsNiArNzg1LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ2Myw2ICsxNDY3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLWxpYi1wYXRoPWRpcjE6ZGlyMi4uLiAgc2V0IGRlZmF1bHQgTElCX1BBVEgKLSAgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUi4KLSAKLUBAIC01NjU3LDggKzU2NjMsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTY5OCw3ICs1NzA0LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjM4NCw4ICs2MzkwLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTY0MzQsNiArNjQ0MCw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjQ1MCw2ICs2NTMwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02NjE4LDcgKzY3MDMsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjc3Miw2ICs2ODU4LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjc4Nyw5ICs2ODg4LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02ODA1LDcgKzcwNTksNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02ODI1LDExICs3MDc5LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY4NDUsNyArNzEwMyw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02ODY0LDYgKzcxMjIsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY4NzUsMTIgKzcxMzcsMTIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0gCi0gCi0gCi1AQCAtNjg5MCw2ICs3MTUyLDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi1AQCAtNzIyNiw4ICs3NTQ0LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03MjYzLDYgKzc1ODEsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzMwNCw2ICs3NjIzLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTczMTUsNyArNzY0Niw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTczNDEsOCArNzY3Miw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTczNTIsOCArNzY4Myw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTczOTAsNiArNzcyMSwxOSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTc0MTAsNiArNzc1NCw0MiBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotKwotKwotIAotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNzYxNyw2ICs3OTk3LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04MTgwLDYgKzg2NzcsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODI0OCw2ICs4NzQ3LDE2IEBAIGRvbmUKLSAKLSAKLSAKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotKwotKwotKwotIAotIAotICMgU2V0IG9wdGlvbnMKLUBAIC04Mzc2LDcgKzg4ODUsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODQ2NSw3ICs4OTc1LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NzYzLDggKzkyNzMsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg5MzAsNiArOTQzOCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg5OTIsNyArOTUwNiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MDQ5LDEzICs5NTYzLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTkxMTYsNiArOTYzNCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTk0NjYsNyArOTk4OSw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk1NjUsMTIgKzEwMDg5LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTk1ODQsOCArMTAxMDgsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTYwMyw4ICsxMDEyNyw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NjUwLDggKzEwMTc0LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk3ODEsNyArMTAzMDUsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTc5NCwyMiArMTAzMjQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk4MjEsNyArMTAzNTgsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk4MzQsMjIgKzEwMzc3LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTg5MywyMSArMTA0NDMsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLS0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTk2OCw3ICsxMDU2MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk5NzYsNyArMTA1NjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05OTkyLDcgKzEwNTg1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTEwMDE2LDEwICsxMDYwOSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTEwMDk4LDIzICsxMDY5MSwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtMTAxOTksNyArMTA4MDUsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDIxOCw5ICsxMDgyNCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDc5Niw4ICsxMTQwMiw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDgzMCwxMyArMTE0MzcsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwOTI4LDcgKzExNTkzLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExNzY4LDEwICsxMjQzMywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExODc0LDEwICsxMjUzOSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyMjY5LDYgKzEyOTM0LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotIAotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9JENDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBsdF9zYXZlX0xEPSRMRAotICAgbHRfc2F2ZV9HQ0M9JEdDQwotICAgR0NDPSRHWFgKLUBAIC0xMjI4Niw2ICsxMjk1Miw3IEBAICRSTSAtciBjb25mdGVzdCoKLSAgIGZpCi0gICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotICAgQ0M9JHtDWFgtImMrKyJ9Ci0rICBDRkxBR1M9JENYWEZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIGNvbXBpbGVyX0NYWD0kQ0MKLSAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotQEAgLTEyNTY4LDcgKzEzMjM1LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJwotICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKLSAgICAgICAgICAgIyBleGVjdXRhYmxlLgotLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTI1ODEsMjIgKzEzMjU0LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCi0rZmkKLSAKLSAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCi1AQCAtMTI2MDksNyArMTMyODksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgIGVsc2UKLSAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjYyMiwyMiArMTMzMDgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEyNjgwLDI5ICsxMzM3Myw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0tICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLS0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0tICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLS0gICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLS0gICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotLQotLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotLSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLS0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLS0gICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0tCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGVsc2UKLS0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZml+Ci0tICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0rCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KLSsJLGNsKiB8IG5vLGNsKikKLSsJICAjIE5hdGl2ZSBNU1ZDCi0rCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyAnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKLSsJICBmaWxlX2xpc3Rfc3BlY19DWFg9J0AnCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJICBsaWJleHQ9bGliCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGVsc2UKLSsJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICAgIGxpbmtuYW1lcz0nCi0rCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBDWFgpPSd0cnVlJwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgotKwkgIG9sZF9wb3N0aW5zdGFsbF9jbWRzX0NYWD0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgICAqKQotKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJCTs7Ci0rCSAgICBlc2FjfgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLSsJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgICAgZmknCi0rCSAgOzsKLSsJKikKLSsJICAjIGcrKwotKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLSsJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLSsJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBsZF9zaGxpYnNfQ1hYPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAKLSAKLUBAIC0xMjgwOCw3ICsxMzU0Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICopCi0gICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotQEAgLTEyODc5LDEwICsxMzYxOCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgaWE2NCopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgICopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotQEAgLTEyOTIzLDkgKzEzNjYyLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICopCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJICAgICAgZWxzZQotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICAgIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPXllcwotQEAgLTEyOTk1LDIwICsxMzczNCwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJwotKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKLSAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0tCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgotKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0gCQkkUkFOTElCICRvbGRsaWInCi0gCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotIAkgICAgICA7OwotIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtMTMyMDMsNyArMTM5NDIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgICAqKQotLQkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgIGVzYWMKLSAKLUBAIC0xMzI0OSw3ICsxMzk4OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICAgICAgQ0MqKQotKyAgICAgICAgICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwotIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJwotQEAgLTEzMjkwLDkgKzE0MDI5LDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCi0gCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gCi0gCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTEzNDI3LDYgKzE0MTY2LDEzIEBAIHByaXZhdGU6Ci0gfTsKLSBfTFRfRU9GCi0gCi0rCi0rX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUwotK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKLSsqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKLSsqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Ci0rZXNhYwotKwotIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgIGFjX3N0YXR1cz0kPwotQEAgLTEzNDQwLDcgKzE0MTg2LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCi0gCi0gICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0tICAgIGNhc2UgJHAgaW4KLSsgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgotIAotICAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtMTM0NDksMTMgKzE0MTk1LDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgotIAkgcHJldj0kcAotIAkgY29udGludWUKLS0gICAgICAgZWxzZQotLQkgcHJldj0KLSAgICAgICAgZmkKLSAKLSsgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KLSsgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCi0rICAgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIGVzYWMKLSsgICAgICAgZmkKLSsgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0tCSBjYXNlICRwIGluCi0tCSAtTCogfCAtUiopCi0rCSBjYXNlICR7cHJldn0gaW4KLSsJIC1MIHwgLVIpCi0gCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQotIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKLSAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtMTM0NzUsOCArMTQyMzAsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgotIAkgZmkKLSAgICAgICAgZmkKLSsgICAgICAgcHJldj0KLSAgICAgICAgOzsKLSAKLSsgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCi0gICAgICouJG9iamV4dCkKLSAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCi0gICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTEzNTEyLDYgKzE0MjY5LDcgQEAgZWxzZQotIGZpCi0gCi0gJFJNIC1mIGNvbmZlc3QuJG9iamV4dAotK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKLSAKLSAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgotIGNhc2UgJGhvc3Rfb3MgaW4KLUBAIC0xMzU0Nyw3ICsxNDMwNSw3IEBAIGxpbnV4KikKLSAKLSBzb2xhcmlzKikKLSAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICBDQyopCi0rICBDQyogfCBzdW5DQyopCi0gICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTEzNjEyLDggKzE0MzcwLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCi0gICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTEzNzE4LDYgKzE0NDc0LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctRERMTF9FWFBPUlQnCi0rCTs7Ci0gICAgICAgZGd1eCopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCSAgZWMrKyopCi1AQCAtMTM4NzAsNyArMTQ2MzEsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAk7OwotICAgICAgIHNvbGFyaXMqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotLQkgIENDKikKLSsJICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJwotIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKLUBAIC0xMzkzNSwxMCArMTQ2OTYsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC0xMzk5Niw2ICsxNDc2NCw4IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtMTQxNzMsNiArMTQ5NDMsNyBAQCBmaQotICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQotIAotICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFs0LTldKikKLSAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtMTQxODcsMTUgKzE0OTU4LDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLzsvXi4qWyBdX19ubV9fL3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQotICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci1AQCAtMTQ0NTgsOCArMTUyMzQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTQ0OTEsMTMgKzE1MjY4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xNDU4OCw3ICsxNTQyMyw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xNTA0Nyw2ICsxNTg4Miw3IEBAIGZpCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gICBMRENYWD0kTEQKLSAgIExEPSRsdF9zYXZlX0xECi0gICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtMTgwMjYsMTMgKzE4ODYyLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgwNDcsMTQgKzE4ODkwLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MDg3LDEyICsxODkzMywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODEzMSw4ICsxODk3Nyw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCi0gY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MTU5LDEyICsxOTAwNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XwotIGhhcmRjb2RlX2F1dG9tYXRpY19DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGhfQ1hYPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlic19DWFg9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoX0NYWD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcHJlbGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kc19DWFg9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgyMDIsOCArMTkwNDgsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE4MjEzLDEyICsxOTA2NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTgyMzQsNyArMTkwODcsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xODI1Niw4ICsxOTEwOCw4IEBAIExEX0NYWCBcCi0gcmVsb2FkX2ZsYWdfQ1hYIFwKLSBjb21waWxlcl9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCi0tbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCBcCi0rbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKLSBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKLUBAIC0xODI2OSw3ICsxOTEyMSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWCBcCi0tZml4X3NyY2ZpbGVfcGF0aF9DWFggXAotIGV4Y2x1ZGVfZXhwc3ltc19DWFggXAotIGluY2x1ZGVfZXhwc3ltc19DWFggXAotIGZpbGVfbGlzdF9zcGVjX0NYWCBcCi1AQCAtMTgzMDMsNiArMTkxNTQsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE4MzE3LDcgKzE5MTY5LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAotIG1vZHVsZV9jbWRzX0NYWCBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXAotLXByZWxpbmtfY21kc19DWFg7IGRvCi0rcHJlbGlua19jbWRzX0NYWCBcCi0rcG9zdGxpbmtfY21kc19DWFg7IGRvCi0gICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgotICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCi1AQCAtMTkxMTAsNyArMTk5NjMsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE5MjEzLDE5ICsyMDA2Nyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xOTI1NSw2ICsyMDEzMiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xOTI2NCw2ICsyMDE0Nyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTkzNzgsMTIgKzIwMjY0LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE5NDcwLDkgKzIwMzU2LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTk0ODgsNiArMjAzNzEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE5NTM0LDIxMCArMjA0MjAsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotQEAgLTE5NzY1LDEyICsyMDYxMCwxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKLSAKLUBAIC0xOTg1Nyw5ICsyMDcwMiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlic19DWFgKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aF9DWFgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgKLSAKLUBAIC0xOTg3NSw2ICsyMDcxNyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHNfQ1hYCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAotIAotZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00Ci1pbmRleCAyNGQxM2YzNDQwLi5lNDVmZGM2OTk4IDEwMDY0NAotLS0tIGEvbGlidG9vbC5tNAotKysrIGIvbGlidG9vbC5tNAotQEAgLTEsNyArMSw4IEBACi0gIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi1AQCAtMTAsNyArMTEsOCBAQAotIAotIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAotICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gXSkKLSAKLS0jIHNlcmlhbCA1NiBMVF9JTklUCi0rIyBzZXJpYWwgNTcgTFRfSU5JVAotIAotIAotICMgTFRfUFJFUkVRKFZFUlNJT04pCi1AQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIEFDX1NVQlNUKExJQlRPT0wpZG5sCi0gCi0gX0xUX1NFVFVQCi1AQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAotIGRubAotIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCi0gCi0gX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwotICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKLUBAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAotIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCi0gY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCi0gCi0tQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKLSAKLUBAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotIAotLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0rICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0gCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSBdLAotQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCi0gICBmaQotIF0pCi0gCi0tIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKLSAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKLSAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKLSAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KLSAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCi0gIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KLSsjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KLSsjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCi0gbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKLSBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLS1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWwotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maV0sW10pCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0raWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCi0rICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWwotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH1dJwotKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmldLFtdKQotKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgotKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rICBdKQotKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCi0rZmkKLSBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSAKLSAKLUBAIC0xMTE3LDcgKzExMzMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIAotIEFDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtMTE2MSw2ICsxMTc3LDM5IEBAIF9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKLSBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKLSAKLSAKLSsjIF9MVF9XSVRIX1NZU1JPT1QKLSsjIC0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCi0rW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQotK0FDX0FSR19XSVRIKFtsaWJ0b29sLXN5c3Jvb3RdLAotK1sgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAotK1tdLCBbd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm9dKQotKwotK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKLStkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfbGlidG9vbF9zeXNyb290fV0pCi0rICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKLSsgICA7OwotK2VzYWMKLSsKLSsgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQotK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAotK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKLSsKLSAjIF9MVF9FTkFCTEVfTE9DSwotICMgLS0tLS0tLS0tLS0tLS0tCi0gbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCi1AQCAtMTMyMCwxNCArMTM2OSw0NyBAQCBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSBdKSMgX0xUX0VOQUJMRV9MT0NLCi0gCi0gCi0rIyBfTFRfUFJPR19BUgotKyMgLS0tLS0tLS0tLS0KLSttNF9kZWZ1bihbX0xUX1BST0dfQVJdLAotK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCi0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCi0rX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCi0rICBbbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAotKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKLSsgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCi0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKyAgICAgXSkKLSsgIF0pCi0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCi0rICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKLStdKSMgX0xUX1BST0dfQVIKLSsKLSsKLSAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi0tW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLS1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLS1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQotK1tfTFRfUFJPR19BUgotIAotIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQotIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgotQEAgLTE2MjMsNyArMTcwNSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKLStbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xNjY3LDEwICsxNzQ5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMjIxMCw4ICsyMjkyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTIyNDQsMTMgKzIzMjcsNzEgQEAgbTRfaWYoWyQxXSwgW10sWwotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0yMzQyLDcgKzI0ODMsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMjk1MCw2ICszMDkxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC0zMDE2LDcgKzMxNjIsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtMzE2Nyw2ICszMzE0LDIxIEBAIHRwZiopCi0gICA7OwotIGVzYWMKLSBdKQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTMxNzQsNyArMzMzNiwxMSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAotICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQotIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCi0tICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCi0rICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLStfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKLSsgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLStfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKLSsgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCi0gXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKLSAKLSAKLUBAIC0zMjc3LDYgKzM0NDMsNjcgQEAgZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQotIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQotIAotKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQotKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgotKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKLSttNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAotK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCi0rbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCi0rbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCi0rQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAotK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAotK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLStdKQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLStfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAotKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCi0rXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCi0rCi0rCi0rIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKLSttNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCi0rW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLStBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCi0rICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCpdKQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAotK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCi0rCi0gCi0gIyBMVF9MSUJfTQotICMgLS0tLS0tLS0KLUBAIC0zNDAzLDggKzM2MzAsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTM0NDAsNiArMzY2Nyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC0zNDczLDYgKzM3MDEsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtMzQ4NCw3ICszNzI0LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgotIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gCWZpCi1AQCAtMzU1MSw2ICszNzkxLDEzIEBAIGVsc2UKLSAgIEFDX01TR19SRVNVTFQob2spCi0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKLSAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAotQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKLSBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKLSAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCi0gICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCi0rX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKLSsgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKLSBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKLSAKLSAKLUBAIC0zNTcyLDcgKzM4MjEsNiBAQCBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ci0gX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQotIAotLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQotIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCi0gICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTM2NzgsNiArMzkyNiwxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAkgIDs7Ci0gCWVzYWMKLSAJOzsKLSsgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQotKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCi0rCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0rCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKLSsJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKLSsJOzsKLSAgICAgICBkZ3V4KikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJICBlYysrKikKLUBAIC0zODMwLDcgKzQwODQsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAk7OwotICAgICAgIHNvbGFyaXMqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotLQkgIENDKikKLSsJICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLUBAIC00MDUzLDYgKzQzMDcsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCi0rCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTQxMTUsNyArNDM3NSw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7Ci1AQCAtNDE3Miw5ICs0NDMyLDExIEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCi0gICAgIDs7Ci0gZXNhYwotLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCi0rCi0rQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKLSsgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKLStfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtNDE5Myw2ICs0NDU1LDggQEAgZmkKLSBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCi0gCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQotIAotK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCi0gbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKLSBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCi0gQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAotIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1AQCAtNDIyMSw2ICs0NDg2LDcgQEAgbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQotIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCi0gICBjYXNlICRob3N0X29zIGluCi0gICBhaXhbWzQtOV1dKikKLSAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtNDIzNSwxNSArNDUwMSwyMCBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotICAgICA7OwotICAgcHczMiopCi0gICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLS0gIDs7Ci0rICAgIDs7Ci0gICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQotLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICBjbCopIDs7Ci0rICAgICopCi0rICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotICAgKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIDs7Ci0gICBlc2FjCi0tICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSBdLCBbCi0gICBydW5wYXRoX3Zhcj0KLSAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLUBAIC00NDExLDcgKzQ2ODIsOCBAQCBfTFRfRU9GCi0gICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC00NTEwLDEyICs0NzgyLDEyIEBAIF9MVF9FT0YKLSAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTQ1MjksOCArNDgwMSw4IEBAIF9MVF9FT0YKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTQ1NDgsOCArNDgyMCw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICBmaQotQEAgLTQ1OTUsOCArNDg2Nyw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICBmaQotQEAgLTQ3MjYsNyArNDk5OCw3IEBAIF9MVF9FT0YKLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLSAgICAgICBlbHNlCi1AQCAtNDczNyw3ICs1MDA5LDcgQEAgX0xUX0VPRgotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLSAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi1AQCAtNDc4MSwyMCArNTA1Myw2MyBAQCBfTFRfRU9GCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLS0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC00ODI4LDcgKzUxNDMsNyBAQCBfTFRfRU9GCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLUBAIC00ODM2LDcgKzUxNTEsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtNDg1Miw3ICs1MTY3LDcgQEAgX0xUX0VPRgotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC00ODc2LDEwICs1MTkxLDEwIEBAIF9MVF9FT0YKLSAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtNDkyNiwxNiArNTI0MSwzMSBAQCBfTFRfRU9GCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIEFDX0xJTktfSUZFTFNFKGludCBmb28odm9pZCkge30sCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tICAgICAgICApCi0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCi0rCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKLSsJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBBQ19MSU5LX0lGRUxTRSgKLSsJICAgICBbQUNfTEFOR19TT1VSQ0UoCi0rCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAotKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKLSsJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCi0rICAgICAgc3Vicm91dGluZSBmb28KLSsgICAgICBlbmRdXSwKLSsJCQkgICAgICBbRm9ydHJhbl0sIFtbCi0rICAgICAgc3Vicm91dGluZSBmb28KLSsgICAgICBlbmRdXSldKV0sCi0rCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAotKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC01MDIwLDcgKzUzNTAsNyBAQCBfTFRfRU9GCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC01MDM5LDkgKzUzNjksOSBAQCBfTFRfRU9GCi0gICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC01MzEzLDggKzU2NDMsNiBAQCBfTFRfVEFHREVDTChbXSwgW2luaGVyaXRfcnBhdGhdLCBbMF0sCi0gICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKLSBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCi0gICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQotLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKLS0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCi0gX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCi0gICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQotIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKLUBAIC01MzI1LDYgKzU2NTMsOCBAQCBfTFRfVEFHREVDTChbXSwgW2luY2x1ZGVfZXhwc3ltc10sIFsxXSwKLSAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCi0gX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCi0gICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCi0rX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAotKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCi0gX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKLSAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCi0gZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCi1AQCAtNTQyNiw2ICs1NzU2LDcgQEAgQ0M9IiRsdF9zYXZlX0NDIgotIG00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKLSBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAotK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAotIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCi0gICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAotICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KLUBAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9JENDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBsdF9zYXZlX0xEPSRMRAotICAgbHRfc2F2ZV9HQ0M9JEdDQwotICAgR0NDPSRHWFgKLUBAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgZmkKLSAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCi0gICBDQz0ke0NYWC0iYysrIn0KLSsgIENGTEFHUz0kQ1hYRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwotICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKLSAgICAgICAgICAgIyBleGVjdXRhYmxlLgotLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAKLSAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgZWxzZQotIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLSAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC01NzIxLDI5ICs2MDU0LDc1IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICA7OwotIAotICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLS0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0tICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLS0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0tICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLS0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLS0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotLQotLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLS0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0tCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGVsc2UKLS0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZml+Ci0tICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0rCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KLSsJLGNsKiB8IG5vLGNsKikKLSsJICAjIE5hdGl2ZSBNU1ZDCi0rCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSsJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJICBsaWJleHQ9bGliCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGVsc2UKLSsJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICAgIGxpbmtuYW1lcz0nCi0rCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCSAgIyBEb24ndCB1c2UgcmFubGliCi0rCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAgICopCi0rCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkJOzsKLSsJICAgIGVzYWN+Ci0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgICBmaScKLSsJICA7OwotKwkqKQotKwkgICMgZysrCi0rCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLSsJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0rCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLSsJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0rCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCi0rCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLSsJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgZWxzZQotKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotKwkgIGZpCi0rCSAgOzsKLSsJZXNhYwotKwk7OwotICAgICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKLSAJOzsKLUBAIC01ODE4LDcgKzYxOTcsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICopCi0gICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgaWE2NCopCi0tCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgICopCi0tCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotQEAgLTU5MzMsOSArNjMxMiw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICopCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJICAgICAgZWxzZQotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJwotKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKLSAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0tCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgotKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0gCQkkUkFOTElCICRvbGRsaWInCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotIAkgICAgICA7OwotIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtNjIxMyw3ICs2NTkyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgICAqKQotLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgIGVzYWMKLSAKLUBAIC02MjU5LDcgKzY2MzgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAotICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICAgICAgQ0MqKQotKyAgICAgICAgICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCi0gCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi1AQCAtNjMwMCw5ICs2Njc5LDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKLSAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAKLSAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtNjQzMSw2ICs2ODEwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSAgIExEQ1hYPSRMRAotICAgTEQ9JGx0X3NhdmVfTEQKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLUBAIC02NDQ1LDYgKzY4MjUsMjkgQEAgQUNfTEFOR19QT1AKLSBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwotIAotIAotKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQotKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0rIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSsjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSsjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0rIwotKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAotKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAotKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgotK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCi0rQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKLStBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCi0rZnVuY19zdHJpcG5hbWVfY25mICgpCi0rewotKyAgY2FzZSAkezJ9IGluCi0rICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotKyAgZXNhYwotK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKLStdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgotKwotICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCi1AQCAtNjQ1Myw2ICs2ODU2LDcgQEAgQUNfTEFOR19QT1AKLSAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLSBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCi0gW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAotICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6Ci0gX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQotIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9Ci1AQCAtNjUwMyw2ICs2OTA3LDEzIEBAIHB1YmxpYyBjbGFzcyBmb28gewotIH07Ci0gX0xUX0VPRgotIF0pCi0rCi0rX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUwotK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKLSsqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKLSsqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Ci0rZXNhYwotKwotIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKLSBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi1AQCAtNjUxNCw3ICs2OTI1LDcgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLSAKLSAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLS0gICAgY2FzZSAkcCBpbgotKyAgICBjYXNlICR7cHJldn0ke3B9IGluCi0gCi0gICAgIC1MKiB8IC1SKiB8IC1sKikKLSAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLUBAIC02NTIzLDEzICs2OTM0LDIyIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCi0gCSBwcmV2PSRwCi0gCSBjb250aW51ZQotLSAgICAgICBlbHNlCi0tCSBwcmV2PQotICAgICAgICBmaQotIAotKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgotKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KLSsgICAgICAgICBjYXNlICRwIGluCi0rICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgZXNhYwotKyAgICAgICBmaQotKyAgICAgICBjYXNlICRwIGluCi0rICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLS0JIGNhc2UgJHAgaW4KLS0JIC1MKiB8IC1SKikKLSsJIGNhc2UgJHtwcmV2fSBpbgotKwkgLUwgfCAtUikKLSAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0gCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQotIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC02NTQ5LDggKzY5NjksMTAgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCi0gCSBmaQotICAgICAgICBmaQotKyAgICAgICBwcmV2PQotICAgICAgICA7OwotIAotKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKLSAgICAgKi4kb2JqZXh0KQotICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtNjU4Niw2ICs3MDA4LDcgQEAgZWxzZQotIGZpCi0gCi0gJFJNIC1mIGNvbmZlc3QuJG9iamV4dAotK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKLSAKLSAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgotIG00X2lmKFskMV0sIFtDWFhdLAotQEAgLTY2MjIsNyArNzA0NSw3IEBAIGxpbnV4KikKLSAKLSBzb2xhcmlzKikKLSAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICBDQyopCi0rICBDQyogfCBzdW5DQyopCi0gICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTY3MzUsNyArNzE1OCw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9IiRDQyIKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIENDPSR7Rjc3LSJmNzcifQotKyAgQ0ZMQUdTPSRGRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTY3ODksNiArNzIxNCw3IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgotIAotICAgR0NDPSRsdF9zYXZlX0dDQwotICAgQ0M9IiRsdF9zYXZlX0NDIgotKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0gZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKLSAKLSBBQ19MQU5HX1BPUAotQEAgLTY4NjUsNyArNzI5MSw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0iJENDIgotICAgbHRfc2F2ZV9HQ0M9JEdDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgQ0M9JHtGQy0iZjk1In0KLSsgIENGTEFHUz0kRkNGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQotIAotQEAgLTY5MjEsNyArNzM0OSw4IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLS0gIENDPSIkbHRfc2F2ZV9DQyIKLSsgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcwotIAotIEFDX0xBTkdfUE9QCi1AQCAtNjk1OCwxMCArNzM4NywxMiBAQCBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLSBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCi0gCi0gIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLS1sdF9zYXZlX0NDPSIkQ0MiCi0rbHRfc2F2ZV9DQz0kQ0MKLStsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gbHRfc2F2ZV9HQ0M9JEdDQwotIEdDQz15ZXMKLSBDQz0ke0dDSi0iZ2NqIn0KLStDRkxBR1M9JEdDSkZMQUdTCi0gY29tcGlsZXI9JENDCi0gX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgotQEAgLTY5OTIsNyArNzQyMyw4IEBAIGZpCi0gQUNfTEFOR19SRVNUT1JFCi0gCi0gR0NDPSRsdF9zYXZlX0dDQwotLUNDPSIkbHRfc2F2ZV9DQyIKLStDQz0kbHRfc2F2ZV9DQwotK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRwotIAotIAotQEAgLTcwMjcsOSArNzQ1OSwxMSBAQCBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCi0gCi0gIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSBsdF9zYXZlX0NDPSIkQ0MiCi0rbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotIGx0X3NhdmVfR0NDPSRHQ0MKLSBHQ0M9Ci0gQ0M9JHtSQy0id2luZHJlcyJ9Ci0rQ0ZMQUdTPQotIGNvbXBpbGVyPSRDQwotIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNzA0Miw3ICs3NDc2LDggQEAgZmkKLSAKLSBHQ0M9JGx0X3NhdmVfR0NDCi0gQUNfTEFOR19SRVNUT1JFCi0tQ0M9IiRsdF9zYXZlX0NDIgotK0NDPSRsdF9zYXZlX0NDCi0rQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKLSAKLSAKLUBAIC03MTAxLDYgKzc1MzYsMTUgQEAgX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQotIEFDX1NVQlNUKFtPQkpEVU1QXSkKLSBdKQotIAotKyMgX0xUX0RFQ0xfRExMVE9PTAotKyMgLS0tLS0tLS0tLS0tLS0tLQotKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgotK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQotK0FDX1NVQlNUKFtETExUT09MXSkKLStdKQotIAotICMgX0xUX0RFQ0xfU0VECi0gIyAtLS0tLS0tLS0tLS0KLUBAIC03MTk0LDggKzc2MzgsOCBAQCBtNF9kZWZ1bihbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSwKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzXSlkbmwKLSBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCi0gCi0gCi0tIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi0tbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCi0tW2Nhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0rIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKLSsjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCi0rbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAotK1tkbmwgewotK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAotKyQxICgpXAotK3tcCi0rbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCi0rfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rXSkKLSAKLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLSAKLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAotKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCi0rbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAotK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0rICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotKyAgICBlc2FjXSkKLSsKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQotKwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSsgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0rICAgIGVzYWMKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0gCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCi0rICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSsgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCi0gCi0tZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLS1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAotLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9Ci0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQotIAotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKLSAKLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSsgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSsgICAgZXNhY10pCi0gCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCi0gCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKLSAKLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLltbXi5dXSokLy5sby8nYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQotK2ZpCi0gCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi0tfQotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKLSAKLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKLSsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKLStkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKLSsgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQotIAotLV9MVF9FT0YKLS1lc2FjCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotIAotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCi0rZmkKLStdKQotIAotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkWzFdKz1cJFsyXSIKLS19Ci0tX0xUX0VPRgotKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5Ci0rIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCi0rIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCi0rbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKLStbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCi0rQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQotK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAotK1tjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSAgICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCi0tfQotLQotLV9MVF9FT0YKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSAgICAgOzsKLS0gIGVzYWMKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLStdKQotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLStBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCi0rX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCi0rICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAotKwotK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCi0rQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCi0rWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotIF0pCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKLStfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKLSsgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKLStdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzg1ZDcuLjcwZTg1NmUwNjUgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTEsMTAgKzEsOSBAQAotLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCi0gCi0tIyBsaWJ0b29sIChHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCi0rIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40Ci0gIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIAotICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAotLSMgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwotICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0gCi1AQCAtMzgsNyArMzcsNiBAQAotICMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSAjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotICMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKLS0jICAgICAgIC0tbm8tZmluaXNoICAgICAgICAgIGxldCBpbnN0YWxsIG1vZGUgYXZvaWQgZmluaXNoIGNvbW1hbmRzCi0gIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0gIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0gIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAotQEAgLTcxLDE3ICs2OSwxOSBAQAotICMgICAgICAgICBjb21waWxlcjoJCSRMVENDCi0gIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0gIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0tIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKLSsjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAotICMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KLSAjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCi0gIwotICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgotKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KLSsjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgotIAotIFBST0dSQU09bGlidG9vbAotIFBBQ0tBR0U9bGlidG9vbAotLVZFUlNJT049Mi4yLjdhCi0tVElNRVNUQU1QPSIgMS4zMTM0IDIwMDktMTEtMjkiCi0tcGFja2FnZV9yZXZpc2lvbj0xLjMxMzQKLStWRVJTSU9OPTIuNAotK1RJTUVTVEFNUD0iIgotK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCi0gCi0gIyBCZSBCb3VybmUgY29tcGF0aWJsZQotIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotQEAgLTEwNiw5ICsxMDYsNiBAQCBfTFRFQ0hPX0VPRicKLSB9Ci0gCi0gIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLS0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0tIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgotIGx0X3VzZXJfbG9jYWxlPQotIGx0X3NhZmVfbG9jYWxlPQotIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwotQEAgLTEyMSwxNSArMTE4LDEzIEBAIGRvCi0gCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgotIAlmaSIKLSBkb25lCi0rTENfQUxMPUMKLStMQU5HVUFHRT1DCi0rZXhwb3J0IExBTkdVQUdFIExDX0FMTAotIAotICRsdF91bnNldCBDRFBBVEgKLSAKLSAKLS0KLS0KLS0KLS0KLS0KLSAjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCi1AQCAtMTQwLDcgKzEzNSw3IEBAIHByb2dwYXRoPSIkMCIKLSAKLSAKLSA6ICR7Q1A9ImNwIC1mIn0KLS06ICR7RUNITz0kYXNfZWNob30KLSt0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KLSA6ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9Ci0gOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQotIDogJHtHUkVQPSIvYmluL2dyZXAifQotQEAgLTE0OSw3ICsxNDQsNyBAQCBwcm9ncGF0aD0iJDAiCi0gOiAke01LRElSPSJta2RpciJ9Ci0gOiAke01WPSJtdiAtZiJ9Ci0gOiAke1JNPSJybSAtZiJ9Ci0tOiAke1NFRD0iL21vdW50L2VuZG9yL3dpbGRlbmh1L2xvY2FsLXg4Nl82NC9iaW4vc2VkIn0KLSs6ICR7U0VEPSIvYmluL3NlZCJ9Ci0gOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9Ci0gOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9Ci0gCi1AQCAtMTY5LDYgKzE2NCwyNyBAQCBJRlM9IiAJJGx0X25sIgotIGRpcm5hbWU9InMsL1teL10qJCwsIgotIGJhc2VuYW1lPSJzLF4uKi8sLCIKLSAKLSsjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSsjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0rIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0rZnVuY19kaXJuYW1lICgpCi0rewotKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0rICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSsgICAgZmkKLSt9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19iYXNlbmFtZSBmaWxlCi0rZnVuY19iYXNlbmFtZSAoKQotK3sKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0rfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSAjIGNhbGw6Ci1AQCAtMTgzLDE3ICsxOTksMzEgQEAgYmFzZW5hbWU9InMsXi4qLywsIgotICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLSB7Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAotLX0KLSsgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSsgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0rICAgIGZpCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAotK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0rIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSsjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSsjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0rZnVuY19zdHJpcG5hbWUgKCkKLSt7Ci0rICAgIGNhc2UgJHsyfSBpbgotKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotKyAgICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotIAotLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgotIAotICMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KLSBwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKLUBAIC0zNzYsNiArNDA2LDE1IEBAIHNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCi0gIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi0gZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwotIAotKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCi0rIyBzdHJpbmcgbGl0ZXJhbGx5LgotK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJwotKwotKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCi0rIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKLSsjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KLStsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0rCi0gIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKLSAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCi0gIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCi1AQCAtNDA0LDcgKzQ0Myw3IEBAIG9wdF93YXJuaW5nPToKLSAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KLSBmdW5jX2VjaG8gKCkKLSB7Ci0tICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgotKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgotIH0KLSAKLSAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KLUBAIC00MzAsMTQgKzQ2OSwxNCBAQCBmdW5jX2VjaG9fYWxsICgpCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotIGZ1bmNfZXJyb3IgKCkKLSB7Ci0tICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgotKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgotIH0KLSAKLSAjIGZ1bmNfd2FybmluZyBhcmcuLi4KLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KLSBmdW5jX3dhcm5pbmcgKCkKLSB7Ci0tICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKLSsgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCi0gCi0gICAgICMgYmFzaCBidWcgYWdhaW46Ci0gICAgIDoKLUBAIC02NTYsMTkgKzY5NSwzNSBAQCBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKLSAgICAgZmkKLSB9Ci0gCi0tCi0tCi0rIyBmdW5jX3RyX3NoCi0rIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KLSsjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKLSsjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAotKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCi0rZnVuY190cl9zaCAoKQotK3sKLSsgIGNhc2UgJDEgaW4KLSsgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKLSsgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCi0rICAgIDs7Ci0rICAqICkKLSsgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0gCi0gCi0gIyBmdW5jX3ZlcnNpb24KLSAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLSBmdW5jX3ZlcnNpb24gKCkKLSB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSAgICAgJFNFRCAtbiAnLyhDKS8hYiBnbwotIAk6bW9yZQotIAkvXC4vIXsKLSAJICBOCi0tCSAgcy9cbiMgLy8KLSsJICBzL1xuIyAvIC8KLSAJICBiIG1vcmUKLSAJfQotIAk6Z28KLUBAIC02ODUsNyArNzQwLDkgQEAgZnVuY192ZXJzaW9uICgpCi0gIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi0gZnVuY191c2FnZSAoKQotIHsKLS0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLWgvIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewotICAgICAgICAgcy9eIyAvLwotIAlzL14jICokLy8KLSAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwotQEAgLTcwMSw3ICs3NTgsMTAgQEAgZnVuY191c2FnZSAoKQotICMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KLSBmdW5jX2hlbHAgKCkKLSB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKLSsJOnByaW50Ci0gICAgICAgICBzL14jIC8vCi0gCXMvXiMgKiQvLwotIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCi1AQCAtNzE0LDcgKzc3NCwxMSBAQCBmdW5jX2hlbHAgKCkKLSAJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0gCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotIAlwCi0tICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0rCWQKLSsgICAgIH0KLSsgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKLSsgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAotKyAgICAgJyA8ICIkcHJvZ3BhdGgiCi0gICAgIHJldD0kPwotICAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KLSAgICAgICBleGl0ICRyZXQKLUBAIC03MjYsMTIgKzc5MCwzOSBAQCBmdW5jX2hlbHAgKCkKLSAjIGV4aXRfY21kLgotIGZ1bmNfbWlzc2luZ19hcmcgKCkKLSB7Ci0tICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgotKyAgICAkb3B0X2RlYnVnCi0rCi0rICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKLSAgICAgZXhpdF9jbWQ9ZXhpdAotIH0KLSAKLS1leGl0X2NtZD06Ci0gCi0rIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAotKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAotKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQotK3sKLSsgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKLSsgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCi0rCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCi0rfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0Ci0rIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAotKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCi0rewotKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKLSsgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKLSsKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0rfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rZXhpdF9jbWQ9OgotIAotIAotIAotQEAgLTc0MSwyNiArODMyLDY0IEBAIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKLSBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXMuCi0tIyAkbW9kZSBpcyB1bnNldAotIG5vbm9wdD0KLS1leGVjdXRlX2RsZmlsZXM9Ci0gcHJlc2VydmVfYXJncz0KLSBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCi0gbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgotIGV4dHJhY3RlZF9hcmNoaXZlcz0KLSBleHRyYWN0ZWRfc2VyaWFsPTAKLSAKLS1vcHRfZHJ5X3J1bj1mYWxzZQotLW9wdF9maW5pc2g9OgotLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotLW9wdF9zaWxlbnQ9ZmFsc2UKLS1vcHRfZGVidWc9OgotLQotICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAotICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZwotICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KLSBleGVjX2NtZD0KLSAKLSsjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotK2Z1bmNfYXBwZW5kICgpCi0rewotKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgotK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKLSsjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAotKyMgYnkgYSBzcGFjZS4KLStmdW5jX2FwcGVuZF9xdW90ZWQgKCkKLSt7Ci0rICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi0rICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSt9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLStmdW5jX2FyaXRoICgpCi0rewotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCi0rfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2xlbiBzdHJpbmcKLSsjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0rZnVuY19sZW4gKCkKLSt7Ci0rICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfbG8ybyBvYmplY3QKLStmdW5jX2xvMm8gKCkKLSt7Ci0rICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLSt9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0rZnVuY194Zm9ybSAoKQotK3sKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0rfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0gIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQotICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCi1AQCAtODUwLDEzMCArOTc5LDIwNCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKLSAgIGVzYWMKLSB9Ci0gCi0tIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KLS0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgotKyMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0rIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQotKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgotK2Z1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQotIHsKLSsgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgotKyAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0rJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgICAgZWxzZQotKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0rJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLSskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICAgIGZpCi0rICAgIGVsc2UKLSsgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAotKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCi0rJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgZmkKLSAKLS0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotLSAgY2FzZSAkMSBpbgotLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgbGlua3xsaW58bGl8bCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGVzYWMKLSsgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotKyAgZmkKLSt9Ci0rCi0rCi0rIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0rY2FzZSAkMSBpbgotK2NsZWFufGNsZWF8Y2xlfGNsKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2xpbmt8bGlufGxpfGwpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStlc2FjCi0gCi0tICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKLS0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KLSsKLSsKLSsjIE9wdGlvbiBkZWZhdWx0czoKLStvcHRfZGVidWc9OgotK29wdF9kcnlfcnVuPWZhbHNlCi0rb3B0X2NvbmZpZz1mYWxzZQotK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQotK29wdF9mZWF0dXJlcz1mYWxzZQotK29wdF9maW5pc2g9ZmFsc2UKLStvcHRfaGVscD1mYWxzZQotK29wdF9oZWxwX2FsbD1mYWxzZQotK29wdF9zaWxlbnQ9OgotK29wdF92ZXJib3NlPToKLStvcHRfc2lsZW50PWZhbHNlCi0rb3B0X3ZlcmJvc2U9ZmFsc2UKLSsKLSsKLSsjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKLSsjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KLSt7Ci0rICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCi0rICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbwotICAgICBvcHQ9IiQxIgotICAgICBzaGlmdAotLQotICAgICBjYXNlICRvcHQgaW4KLS0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotLQotLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JwotIAkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLS0JCQlvcHRfZGVidWc9J3NldCAteCcKLSAJCQkkb3B0X2RlYnVnCi0gCQkJOzsKLS0KLS0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotLQkJCXNoaWZ0Ci0rICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQotKwkJCW9wdF9kcnlfcnVuPToKLSAJCQk7OwotLQotLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7Ci0tICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OwotLSAgICAgIC0tbm8tZmluaXNoKQlvcHRfZmluaXNoPWZhbHNlCQkJCTs7Ci0tCi0tICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJY2FzZSAkMSBpbgotLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLS0JCQkgIGNsZWFuKQk7OwotLQkJCSAgY29tcGlsZSkJOzsKLS0JCQkgIGV4ZWN1dGUpCTs7Ci0tCQkJICBmaW5pc2gpCTs7Ci0tCQkJICBpbnN0YWxsKQk7OwotLQkJCSAgbGluaykJCTs7Ci0tCQkJICByZWxpbmspCTs7Ci0tCQkJICB1bmluc3RhbGwpCTs7Ci0tCi0tCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLS0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0tCQkJICAgICBleGl0X2NtZD1leGl0Ci0tCQkJICAgICBicmVhawotLQkJCSAgICAgOzsKLS0JCSAgICAgICAgZXNhYwotLQotLQkJCW1vZGU9IiQxIgotKyAgICAgIC0tY29uZmlnKQotKwkJCW9wdF9jb25maWc9OgotK2Z1bmNfY29uZmlnCi0rCQkJOzsKLSsgICAgICAtLWRsb3BlbnwtZGxvcGVuKQotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCi0rfSRvcHRhcmciCi0gCQkJc2hpZnQKLSAJCQk7OwotLQotICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCi0tCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKLS0KLS0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotLQkJCW9wdF9zaWxlbnQ9OgotLQkJCW9wdF92ZXJib3NlPWZhbHNlCi0rCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKLSAJCQk7OwotLQotLSAgICAgIC0tbm8tcXVpZXR8LS1uby1zaWxlbnQpCi0tCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLS0JCQlvcHRfc2lsZW50PWZhbHNlCi0rICAgICAgLS1mZWF0dXJlcykKLSsJCQlvcHRfZmVhdHVyZXM9OgotK2Z1bmNfZmVhdHVyZXMKLSAJCQk7OwotLQotLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1maW5pc2gpCi0rCQkJb3B0X2ZpbmlzaD06Ci0rc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotKwkJCTs7Ci0rICAgICAgLS1oZWxwKQotKwkJCW9wdF9oZWxwPToKLSsJCQk7OwotKyAgICAgIC0taGVscC1hbGwpCi0rCQkJb3B0X2hlbHBfYWxsPToKLStvcHRfaGVscD0nOiBoZWxwLWFsbCcKLSsJCQk7OwotKyAgICAgIC0tbW9kZSkKLSsJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgotK2Nhc2UgJG9wdGFyZyBpbgotKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLSsgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7Ci0rCi0rICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLSsgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0rICAgICBleGl0X2NtZD1leGl0Ci0rICAgICBicmVhawotKyAgICAgOzsKLStlc2FjCi0rCQkJc2hpZnQKLSsJCQk7OwotKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCi0gCQkJb3B0X3NpbGVudD1mYWxzZQotLQkJCW9wdF92ZXJib3NlPToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSAJCQk7OwotLQotLSAgICAgIC0tbm8tdmVyYm9zZSkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLW5vLXZlcmJvc2UpCi0gCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSAJCQk7OwotLQotLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLS0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKLSsgICAgICAtLXNpbGVudHwtLXF1aWV0KQotKwkJCW9wdF9zaWxlbnQ9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKLSsJCQk7OwotKyAgICAgIC0tdmVyYm9zZXwtdikKLSsJCQlvcHRfdmVyYm9zZT06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0rb3B0X3NpbGVudD1mYWxzZQotKwkJCTs7Ci0rICAgICAgLS10YWcpCi0rCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfdGFnPSIkb3B0YXJnIgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCi0rZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgotIAkJCXNoaWZ0Ci0gCQkJOzsKLSAKLSsgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7Ci0rICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7Ci0rICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKLSsKLSAgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgotLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQotLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQotKyAgICAgIC0tKj0qKQotKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCi0rCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KLSAJCQlzaGlmdAotIAkJCTs7Ci0gCi0tICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLS0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OwotLSAgICAgIC0taGVscC1hbGwpCW9wdF9oZWxwPSc6IGhlbHAtYWxsJwkJCQk7OwotLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OwotLQotLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7Ci0tCi0tICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLS0JCQlicmVhawotKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6Ci0rICAgICAgLVw/KnwtaCp8LW4qfC12KikKLSsJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKLSsJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQotKwkJCXNoaWZ0Ci0gCQkJOzsKLSsKLSsgICAgICAtLSkJCWJyZWFrCQkJCQk7OwotKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7Ci0rICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7Ci0gICAgIGVzYWMKLSAgIGRvbmUKLSAKLSsgICMgVmFsaWRhdGUgb3B0aW9uczoKLSsKLSsgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50Ci0rICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KLSsgICAgbm9ub3B0PSIkb3B0IgotKyAgICBzaGlmdAotKyAgZmkKLSsKLSsgICMgcHJlc2VydmUgLS1kZWJ1ZwotKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgotIAotICAgY2FzZSAkaG9zdCBpbgotICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiApCi1AQCAtOTgxLDgyICsxMTg0LDQ0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQotICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgotICAgICAgIDs7Ci0gICAgICopCi0tICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCi0rICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCi0gICAgICAgOzsKLSAgIGVzYWMKLSAKLS0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgotLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0tICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotLX0KLSsgICRvcHRfaGVscCB8fCB7Ci0rICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSsgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0gCi0tIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLS0jIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCi0tIyByZWxlYXNlIG9mIGxpYnRvb2wuCi0tZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCi0tewotLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0tICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0tICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0tICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLS0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0tJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLS0gICAgICBlbHNlCi0tICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLS0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0tICAgICAgZmkKLS0gICAgZWxzZQotLSAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCi0tJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KLS0kcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSsgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0gICAgIGZpCi0gCi0tICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKLS0gIGZpCi0tfQotLQotKyAgICAjIERhcndpbiBzdWNrcwotKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotIAotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgICAgTWFpbi4gICAgIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLQotLSRvcHRfaGVscCB8fCB7Ci0tICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0tICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLS0KLS0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0tICBmaQotKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0rICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgotKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotKyAgICBmaQotIAotLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCi0rICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSsgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSsgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0rICB9Ci0gCi0gCi0tICAjIERhcndpbiBzdWNrcwotLSAgZXZhbCAic3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiIgotKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAotKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLSt9Ci0gCi0gCi0tICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLS0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKLS0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0tICBmaQotIAotLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLS0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0tfQotIAotKyMjIC0tLS0tLS0tLS0tICMjCi0rIyMgICAgTWFpbi4gICAgIyMKLSsjIyAtLS0tLS0tLS0tLSAjIwotIAotICMgZnVuY19sYWxpYl9wIGZpbGUKLSAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCi1AQCAtMTEyMSwxMiArMTI4Niw5IEBAIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAoKQotICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCi0gZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQotIHsKLS0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKLS0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KLS0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotLSAgICBmaQotKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0rICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0gfQotIAotICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCi1AQCAtMTE0OSw3ICsxMzExLDcgQEAgZnVuY19leGVjdXRlX2NtZHMgKCkKLSAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JwotICAgICBmb3IgY21kIGluICQxOyBkbwotICAgICAgIElGUz0kc2F2ZV9pZnMKLS0gICAgICBldmFsICJjbWQ9XCIkY21kXCIiCi0rICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKLSAgICAgZG9uZQotICAgICBJRlM9JHNhdmVfaWZzCi1AQCAtMTE3Miw2ICsxMzM0LDM3IEBAIGZ1bmNfc291cmNlICgpCi0gfQotIAotIAotKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAotKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCi0rIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLStmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQotK3sKLSsgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQotKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCi0rICA9KikKLSsgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIDs7Ci0rICBlc2FjCi0rfQotKwotKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAotKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCi0rIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgotK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCi0rewotKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCi0rICA/KjoiJGx0X3N5c3Jvb3QiKikKLSsgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCi0rICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgotKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rCi0gIyBmdW5jX2luZmVyX3RhZyBhcmcKLSAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKLSAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgotQEAgLTExODQsOCArMTM3Nyw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCi0gICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCi0gICAgICAgQ0NfcXVvdGVkPQotICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKLSAgICAgICBkb25lCi0gICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAotICAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAotQEAgLTEyMDQsOCArMTM5Niw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCi0gCSAgICBDQ19xdW90ZWQ9Ci0gCSAgICBmb3IgYXJnIGluICRDQzsgZG8KLSAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgotIAkgICAgZG9uZQotIAkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAotIAkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCi1AQCAtMTI3NCw2ICsxNDY1LDQ4NiBAQCBFT0YKLSAgICAgfQotIH0KLSAKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCi0rIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKLSsjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKLSsjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCi0rIyBpbiAkYnVpbGQncyAkUEFUSC4KLSsjCi0rIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKLSsjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKLStmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKLSsgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKLSsgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0rICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCi0rICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKLSsgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQotKyAgICBmaQotKyAgZmkKLSt9Ci0rIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCi0rIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAotKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQotKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncwotKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCi0rIwotKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgotKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCi0rIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCi0rZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKLSsgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgb2xkSUZTPSRJRlMKLSsgICAgSUZTPToKLSsgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KLSsgICAgICBJRlM9JG9sZElGUwotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCi0rICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KLSsgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgSUZTPSRvbGRJRlMKLSsgIGZpCi0rfQotKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgotKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgotKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCi0rIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKLSsjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0Ci0rIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCi0rIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQotKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCi0rIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCi0rIwotKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bwotKyMgYmUgY29udmVydGVkLgotKyMKLSsjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICi0rIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KLStmdW5jX2N5Z3BhdGggKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCi0rICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCi0rICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgotKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQotKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9Ci0rICAgIGZpCi0rICBlbHNlCi0rICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9Ci0rICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKLSsgIGZpCi0rfQotKyNlbmQ6IGZ1bmNfY3lncGF0aAotKwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KLSsjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSsgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKLSsgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotK30KLSsjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCi0rIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0Ci0rIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCi0rZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgotKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCi0rICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0rICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotKyAgICAjIEZhbGxiYWNrOgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICi0rIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0Ci0rIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgotK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgotKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLSsgICAgZnVuY19lcnJvciAiICBcYCQzJyIKLSsgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0rICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAotKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCi0rICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KLSsgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKLSsgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8Ci0rICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCi0rICAgIGZpCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjawotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCi0rIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAotKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgotK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGNhc2UgJDQgaW4KLSsgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIDs7Ci0rICBlc2FjCi0rICBjYXNlICQ0IGluCi0rICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKLSsjCi0rIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgotKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rCi0rCi0rIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKLSsjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX3RvX2hvc3RfZmlsZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKLSt9Ci0rIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKLSsKLSsKLSsjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCi0rIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCi0rIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAotKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCi0rZnVuY190b190b29sX2ZpbGUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBjYXNlICwkMiwgaW4KLSsgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCi0rICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCi0rICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKLSsgICAgICA7OwotKyAgZXNhYwotK30KLSsjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKLSsjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCi0rewotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKLSsjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCi0rICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKLSsjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KLSsjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCi0rIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJwotKyMKLSsjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCi0rIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rIwotKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKLSsjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAotKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgotKyMKLSsjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246Ci0rIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCi0rIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCi0rIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQotKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCi0rIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyMgd2lsbCBicmVhay4KLSsKLSsKLSsjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKLSsjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCi0rdG9faG9zdF9wYXRoX2NtZD0KLStmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgotKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCi0rICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKLSsgIGZpCi0rfQotKwotKwotKyMgZnVuY190b19ob3N0X3BhdGggQVJHCi0rIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfdG9faG9zdF9wYXRoICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsgICR0b19ob3N0X3BhdGhfY21kICIkMSIKLSt9Ci0rIyBlbmQgZnVuY190b19ob3N0X3BhdGgKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCi0rIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQotK3sKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYwotKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKLSsgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKLSsgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCi0rIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KLSsjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCi0rIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0rICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLSsgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgotKwotKwotICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCi0gZnVuY19tb2RlX2NvbXBpbGUgKCkKLSB7Ci1AQCAtMTMxNCwxMiArMTk4NSwxMiBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotIAkgIDs7Ci0gCi0gCS1waWUgfCAtZnBpZSB8IC1mUElFKQotLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCi0rICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi0gCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCi0tCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi1AQCAtMTM0MCwxNSArMjAxMSwxNCBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwotIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCi0gCSAgICBJRlM9IiRzYXZlX2lmcyIKLS0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKLSAJICBkb25lCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKLSAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAKLSAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KLS0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCi0rCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotQEAgLTEzNjQsOCArMjAzNCw3IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQotIAotICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0tICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCi0tICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKLSAgICAgZG9uZSAjIGZvciBhcmcKLSAKLSAgICAgY2FzZSAkYXJnX21vZGUgaW4KLUBAIC0xNDk2LDE3ICsyMTY1LDE2IEBAIGNvbXBpbGVyLiIKLSAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotIAlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgICBmaQotLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgotKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKLSAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKLSAgICAgZmkKLSAKLSAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCi0rICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCi0gICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1Ci0gCi0tICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotLSAgICAgIGV2YWwgInNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiIgotLSAgICBmaQotKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKLSAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Ci0gCi1AQCAtMTUyNiw3ICsyMTk0LDcgQEAgY29tcGlsZXIuIgotIAotICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgotIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLS0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCi0rCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKLSAgICAgICBmaQotIAotICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKLUBAIC0xNTczLDExICsyMjQxLDExIEBAIGNvbXBpbGVyLiIKLSAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgotICAgICAgIGZpCi0gICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KLS0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKLSsJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCi0gICAgICAgZmkKLSAKLSAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KLS0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCi0rICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKLSAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCi0gICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwotIAotQEAgLTE2MjIsMTMgKzIyOTAsMTMgQEAgY29tcGlsZXIuIgotIH0KLSAKLSAkb3B0X2hlbHAgfHwgewotLSAgdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KLSsgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQotIH0KLSAKLSBmdW5jX21vZGVfaGVscCAoKQotIHsKLSAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0tICAgIGNhc2UgJG1vZGUgaW4KLSsgICAgY2FzZSAkb3B0X21vZGUgaW4KLSAgICAgICAiIikKLSAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cwotICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgotQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgotIAotICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCi0gICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKLS0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0tICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSsgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5Ci0rICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCi0gICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLSAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKLUBAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCi0gICAgICAgICA7OwotIAotICAgICAgICopCi0tICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCi0rICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgotICAgICAgICAgOzsKLSAgICAgZXNhYwotIAotQEAgLTE4MTksMTMgKzI0ODcsMTMgQEAgaWYgJG9wdF9oZWxwOyB0aGVuCi0gICBlbHNlCi0gICAgIHsKLSAgICAgICBmdW5jX2hlbHAgbm9leGl0Ci0tICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0gCWZ1bmNfbW9kZV9oZWxwCi0gICAgICAgZG9uZQotICAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJwotICAgICB7Ci0gICAgICAgZnVuY19oZWxwIG5vZXhpdAotLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSsgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotIAllY2hvCi0gCWZ1bmNfbW9kZV9oZWxwCi0gICAgICAgZG9uZQotQEAgLTE4NTQsMTMgKzI1MjIsMTYgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgotIAotICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbwotKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KLSAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAotIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCi0gCi0gICAgICAgZGlyPQotICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICAqLmxhKQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCi0rCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwotIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAotIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi1AQCAtMTg4Miw3ICsyNTUzLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAKLSAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCi0tCSAgZGlyPSIkZGlyLyRvYmpkaXIiCi0rCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKLSAJZWxzZQotIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKLUBAIC0xOTA3LDEwICsyNTc4LDEwIEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgotIAotICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCi0tICAgICAgaWYgZXZhbCB0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiOyB0aGVuCi0tCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXIKLSsgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgotKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCi0gICAgICAgZWxzZQotLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyOlwkJHNobGlicGF0aF92YXIKLSsJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCi0gICAgICAgZmkKLSAgICAgZG9uZQotIAotQEAgLTE5MzksOCArMjYxMCw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gCTs7Ci0gICAgICAgZXNhYwotICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCi0tICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCi0tICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKLSAgICAgZG9uZQotIAotICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgotQEAgLTE5NzIsMjIgKzI2NDIsNTkgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgZmkKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCi0gZnVuY19tb2RlX2ZpbmlzaCAoKQotIHsKLSAgICAgJG9wdF9kZWJ1ZwotLSAgICBsaWJkaXJzPSIkbm9ub3B0IgotKyAgICBsaWJzPQotKyAgICBsaWJkaXJzPQotICAgICBhZG1pbmNtZHM9Ci0gCi0tICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0tICAgICAgZm9yIGRpcgotLSAgICAgIGRvCi0tCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCi0tICAgICAgZG9uZQotKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KLSsgICAgZG8KLSsgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgotKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKLSAKLSsgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCi0rCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCi0rCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCi0rCWVsc2UKLSsJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotKwlmaQotKwotKyAgICAgIGVsc2UKLSsJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsKLSsgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCi0rICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAotKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNyb290X2NtZD0KLSsgICAgICBmaQotKwotKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcwotKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgotKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSsgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCi0rICAgICAgICBkb25lCi0rICAgICAgZWxzZQotKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKLSsgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0rCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAotKwkgICAgPiAkdG1wZGlyL3RtcC1sYQotKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKLSsJZG9uZQotKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgotKyAgICAgIGZpCi0rICAgIGZpCi0rCi0rICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0gICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgotIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCi1AQCAtMTk5Nyw3ICsyNzA0LDcgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQotIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCi0gCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgotIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0tCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCi0gICAgICAgICRjbWRzIgotIAlmaQotICAgICAgIGRvbmUKLUBAIC0yMDA2LDUzICsyNzEzLDU1IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCi0gICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwotIAotLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotLSAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0tICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0tICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0tICAgIGRvbmUKLS0gICAgZWNobwotLSAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLS0gICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0tICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0tICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLS0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLS0gICAgICBlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLS0gICAgICBlY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLS0gICAgICBsaWJkaXI9TElCRElSCi0tICAgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0rICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0rICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSsJJEVDSE8gIiAgICRsaWJkaXIiCi0rICAgICAgZG9uZQotKyAgICAgIGVjaG8KLSsgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLSsgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSsgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLSsgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLSsJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSsJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSsJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwlsaWJkaXI9TElCRElSCi0rCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAKLS0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLS0gICAgZmkKLS0gICAgZWNobwotKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLSsJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSsJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0rICAgICAgZmkKLSsgICAgICBlY2hvCi0gCi0tICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLS0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0tCWVjaG8gInBhZ2VzLiIKLS0JOzsKLS0gICAgICAqKQotLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0rICAgICAgY2FzZSAkaG9zdCBpbgotKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0rCSAgZWNobyAicGFnZXMuIgotKwkgIDs7Ci0rCSopCi0rCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0rCSAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgZmkKLSAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgotQEAgLTIwNzcsNyArMjc4Niw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KLSAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgotICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKLSAgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgotICAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OwotQEAgLTIwOTcsNyArMjgwNiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGRvCi0gICAgICAgYXJnMj0KLSAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLS0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKLSsJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKLSAJZGVzdD0kYXJnCi0gCWNvbnRpbnVlCi0gICAgICAgZmkKLUBAIC0yMTM1LDExICsyODQ0LDExIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCi0gICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KLSAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgotIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKLSAgICAgICBmaQotLSAgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICBkb25lCi0gCi0gICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKLUBAIC0yMTUxLDcgKzI4NjAsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgotICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKLSAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKLS0JaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgIGZpCi0gICAgIGZpCi0gCi1AQCAtMjIwOSwxMCArMjkxOCwxMyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICAqLiRsaWJleHQpCi0gCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0tCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgotKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCi0gCTs7Ci0gCi0gICAgICAgKi5sYSkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgotKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsKLSAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLSAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLSAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLUBAIC0yMjI2LDIzICsyOTM4LDMwIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCi0gCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZWxzZQotIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KLSAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gCi0gCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgotIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLQlkaXI9IiRkaXIkb2JqZGlyIgotKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCi0gCi0gCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLSsgICAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KLSsgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRsaWJkaXIiCi0rICAgICAgZGVzdGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCi0rICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdGRpciIKLSsgICAgICBzX2Rlc3RkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwotIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCi0tCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCi0rCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRzX2Rlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGRlc3RsaWJkaXJcJCUlImAKLSAKLSAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCi0gCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdAotQEAgLTIzMTUsNyArMzAzNCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCi0gCi0gCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLS0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLSsJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0gCTs7Ci0gCi0gICAgICAgKi5sbykKLUBAIC0yNTAzLDcgKzMyMjIsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKLSAgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCi0gCi0tICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiICYmICRvcHRfZmluaXNoOyB0aGVuCi0rICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCi0gICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KLSAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgotICAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKLUBAIC0yNTEyLDcgKzMyMzEsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBmaQotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQotIAotIAotICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCi1AQCAtMjU1OSw2ICszMjc4LDE4IEBAIGV4dGVybiBcIkNcIiB7Ci0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCi0gI2VuZGlmCi0gCi0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKLSAiCi0gCi1AQCAtMjU3MCwyMSArMzMwMSwyMiBAQCBleHRlcm4gXCJDXCIgewotIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KLSAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCi0gCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCi0tCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKLS0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCi0rCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotIAkgIGRvbmUKLSAKLSAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgIH0KLSAJICBmaQotIAotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgIH0KLSAJICBmaQotIAotQEAgLTI1OTMsMjMgKzMzMjUsMjMgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCi0tCSAgICAgICR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnIDwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIgotKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKLSAJICAgICAgY2FzZSAkaG9zdCBpbgotIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0gICAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLS0gICAgICAgICAgICAgICAgY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0rICAgICAgICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0rICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAJICAgICAgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotLQkgICAgICAkR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCi0rCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICAgIGNhc2UgJGhvc3QgaW4KLSAJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0JICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0tCSAgICAgICAgICBjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLSsJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0rCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gCSAgICAgICAgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICB9Ci1AQCAtMjYyMCwxMCArMzM1Miw1MiBAQCBleHRlcm4gXCJDXCIgewotIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKLSAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgotIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IgotLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotLQkgIH0KLSsgICAgICAgICAgY2FzZSAkaG9zdCBpbgotKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0rCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQotKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgotKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCi0rCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKLSsJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgotKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKLSsJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKLSsJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KLSsJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCi0rCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgICBlbHNlCi0rCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KLSsJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgotKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLSsJICAgICAgICAgIGZpCi0rCSAgICAgICAgZmkKLSsJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KLSsJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGVsc2UKLSsJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgotKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZmkKLSsJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8Ci0rCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCi0rCSAgICAgICAgfQotKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKLSsJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgICAgICB9Ci0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgICAgKikKLSsJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICAgIH0KLSsJICAgIDs7Ci0rICAgICAgICAgIGVzYWMKLSAJZG9uZQotIAotIAkkb3B0X2RyeV9ydW4gfHwgewotQEAgLTI2NjEsMjYgKzM0MzUsOSBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAqYWRkcmVzczsKLSB9IGx0X2Rsc3ltbGlzdDsKLS0iCi0tCSAgY2FzZSAkaG9zdCBpbgotLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0tICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KLS0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCi0tCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLS0JICAqb3NmNSopCi0tCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCi0tCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLS0JICAqKQotLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKLS0JICBlc2FjCi0tCi0tCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAotK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKLSBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107Ci0tJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAotK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAotIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Ci0ge1wKLSAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgotQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbwotIAkgIGNhc2UgJGFyZyBpbgotIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gCi1AQCAtMjc5Niw5ICszNTUzLDExIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKLSAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgotICAgICA7OwotICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYwotLSAgICBpZiAkT0JKRFVNUCAtZiAiJDEiIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0tICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgotLSAgICAgIHdpbjMyX25tcmVzPWAkTk0gLWYgcG9zaXggLUEgIiQxIiB8Ci0rICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgotKyAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0rICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8Ci0gCSRTRUQgLW4gLWUgJwotIAkgICAgMSwxMDB7Ci0gCQkvIEkgL3sKLUBAIC0yODI3LDYgKzM1ODYsMTMxIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKLSAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKLSB9Ci0gCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCi0rIwotKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKLSsjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAotKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgotKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKLSsjCi0rIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCi0rIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQotKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCi0rIwotKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCi0rIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgotKyMKLSsjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQotKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKLSsgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAotKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97Ci0rICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgotKyAgICAgIHMvLiovPT09PU1BUks9PT09LwotKyAgICAgIHAKLSsgICAgICBkCi0rICAgIH0KLSsgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAotKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZwotKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKLSsgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCi0rICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCi0rICAgIC9ePT09PU1BUks9PT09L3AKLSsgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKLSsgICAgL14uXHs0M1x9LyFkCi0rICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCi0rICAgIHMvXi5cezQzXH0vLycgfAotKyAgICAkU0VEIC1uICcKLSsgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCi0rICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQotKyAgICAgIEgKLSsgICAgICAkIGIgcGFyYQotKyAgICAgIGIKLSsgICAgICA6cGFyYQotKyAgICAgIHgKLSsgICAgICBzL1xuLy9nCi0rICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgotKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCi0rICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQotKyAgICAgIHMvW1wuIFx0XSokLy8KLSsgICAgICAjIFByaW50Ci0rICAgICAgLy4vcCcgfAotKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKLSsgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKLSsgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQotKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCi0rICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQotKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgotKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQotKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5Ci0rICAgICMgYSAnLicuCi0rICAgICMKLSsgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KLSsgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRwotKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0rIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgotK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKLSsgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRwotKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0rIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgotK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAotKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKLSsjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCi0rIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKLSsjIGltcG9ydCBsaWJyYXJ5IEFSRy4KLSsjCi0rIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAotKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgotKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgotKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5Ci0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCi0rICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgotKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAotKyAgZWxzZQotKyAgICAjIHVua25vd24KLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKLSsgIGZpCi0rfQotIAotIAotICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgotQEAgLTI5MTcsNyArMzgwMSw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQotIAkgICAgZGFyd2luX2ZpbGU9Ci0gCSAgICBkYXJ3aW5fZmlsZXM9Ci0gCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLS0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCi0rCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKLSAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKLSAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0Ci0gCSAgICAkUk0gLXJmIHVuZmF0LSQkCi1AQCAtMjkzMiw3ICszODE2LDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCi0gICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKLSAJOzsKLSAgICAgICBlc2FjCi0tICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKLSsgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKLSAgICAgZG9uZQotIAotICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKLUBAIC0zMDE0LDcgKzM4OTgsMTEwIEBAIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQotIF9MVEVDSE9fRU9GJwotIH0KLSAgICAgRUNITz1cIiRxRUNIT1wiCi0tICBmaVwKLSsgIGZpCi0rCi0rIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KLSsjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKLSsjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCi0rIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKLSsjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCi0rIyB0aGlzIHBhdHRlcm4pLgotKyMKLSsjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKLSsjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KLSsjCi0rIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKLSsjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgotK2x0X29wdGlvbl9kZWJ1Zz0KLStmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKLSt7Ci0rICBsdF9zY3JpcHRfYXJnMD1cJDAKLSsgIHNoaWZ0Ci0rICBmb3IgbHRfb3B0Ci0rICBkbwotKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgotKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OwotKyAgICAtLWx0LWR1bXAtc2NyaXB0KQotKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCi0rICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KLSsgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAotKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgotKyAgICAgICAgZXhpdCAwCi0rICAgICAgOzsKLSsgICAgLS1sdC0qKQotKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKLSsgICAgICAgIGV4aXQgMQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgIGRvbmUKLSsKLSsgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKLSsgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgotKyAgZmkKLSt9Ci0rCi0rIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0Ci0rIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCi0rZnVuY19sdF9kdW1wX2FyZ3MgKCkKLSt7Ci0rICBsdF9kdW1wX2FyZ3NfTj0xOwotKyAgZm9yIGx0X2FyZwotKyAgZG8KLSsgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgotKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAotKyAgZG9uZQotK30KLSsKLSsjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCi0rZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQotK3sKLSsiCi0rICBjYXNlICRob3N0IGluCi0rICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLSsgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0rICAgICRFQ0hPICJcCi0rICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCi0rICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKLSsgICAgICBmaQotKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotKyIKLSsgICAgOzsKLSsKLSsgICopCi0rICAgICRFQ0hPICJcCi0rICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCi0rICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKLSsgICAgICBmaQotKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotKyIKLSsgICAgOzsKLSsgIGVzYWMKLSsgICRFQ0hPICJcCi0rICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotKyAgICAgIGV4aXQgMQotK30KLSsKLSsjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KLSsjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAotKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCi0rZnVuY19leGVjX3Byb2dyYW0gKCkKLSt7Ci0rICBmb3IgbHRfd3JfYXJnCi0rICBkbwotKyAgICBjYXNlIFwkbHRfd3JfYXJnIGluCi0rICAgIC0tbHQtKikgOzsKLSsgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKLSsgICAgZXNhYwotKyAgICBzaGlmdAotKyAgZG9uZQotKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9Ci0rfQotKwotKyAgIyBQYXJzZSBvcHRpb25zCi0rICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9Ci0gCi0gICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgotICAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKLUBAIC0zMDc4LDcgKzQwNjUsNyBAQCBfTFRFQ0hPX0VPRicKLSAKLSAgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKLSAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgotLSAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCJcJHJlbGlua19jb21tYW5kXCIgMj4mMVxgOyB0aGVuIDoKLSsgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKLSAgICAgICBlbHNlCi0gCSRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKLSAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCi1AQCAtMzEwMiw2ICs0MDg5LDE4IEBAIF9MVEVDSE9fRU9GJwotIAotICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKLSAKLSsJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLSsJIwotKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKLSsJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKLSsJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgotKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLSsJICAkRUNITyAiXAotKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotKyIKLSsJZmkKLSsKLSAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCi0gCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLSAJICAkRUNITyAiXAotQEAgLTMxMTYsMzUgKzQxMTUsMTAgQEAgX0xURUNIT19FT0YnCi0gIgotIAlmaQotIAotLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLS0JICAkRUNITyAiXAotLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotLSIKLS0JZmkKLS0KLSAJJEVDSE8gIlwKLSAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0tIgotLQljYXNlICRob3N0IGluCi0tCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotLQkgICRFQ0hPICJcCi0tICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0tIgotLQkgIDs7Ci0tCi0tCSopCi0tCSAgJEVDSE8gIlwKLS0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLS0iCi0tCSAgOzsKLS0JZXNhYwotLQkkRUNITyAiXAotLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLS0gICAgICBleGl0IDEKLSsgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9Ci0gICAgIGZpCi0gICBlbHNlCi0gICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KLUBAIC0zMTU4LDE2NiArNDEzMiw2IEBAIGZpXAotIH0KLSAKLSAKLS0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZwotLSMKLS0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0tIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCi0tIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KLS0jIGJ1aWxkIGVudmlyb25tZW50czoKLS0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0tIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLS0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCi0tIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCi0tIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgotLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLS0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgotLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgotLSMKLS0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLS0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLS1mdW5jX3RvX2hvc3RfcGF0aCAoKQotLXsKLS0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0tICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgICptaW5ndyogKQotLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLS0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKLS0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8Ci0tICAgICAgICAgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKmN5Z3dpbiogKQotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtdyAiJDEiIHwKLS0JICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICogKQotLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KLS0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0tICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKLS0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLS0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLS0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKLS0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0tICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCRFQ0hPICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfAotLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLS0gICAgICAgICAgIyBGYWxsYmFjazoKLS0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLS0gICAgICAgIGZpCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICBmaQotLX0KLS0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKLS0KLS0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKLS0jCi0tIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLS0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKLS0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgotLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0tIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLS0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0tIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLS0jCi0tIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCi0tIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCi0tIyBvbiBvdXRwdXQuCi0tIwotLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0tIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCi0tZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCi0tewotLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCi0tICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgICptaW5ndyogKQotLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0tICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0tICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotLQlmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLS0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCi0tICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YAotLQkgICAgICAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiApIDI+L2Rldi9udWxsIHwKLS0JICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICpjeWd3aW4qICkKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHwKLS0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqICkKLS0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0tICAgICAgICAgICAgSUZTPToKLS0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KLS0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKLS0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLS0gICAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLS0gICAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBkb25lCi0tICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsgdGhlbgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKLS0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLS0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0tICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQotLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0tICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KLS0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKLS0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKLS0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0tICAgICAgICBmaQotLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKLS0gICAgICAgIGNhc2UgIiQxIiBpbgotLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgICo6ICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgZmkKLS19Ci0tIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAotLQotICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwotICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAotICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCi1AQCAtMzMzNCwxMCArNDE0OCw2IEBAIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKLSAKLSAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0gICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotLQotLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0tICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAotLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KLSAqLwotIEVPRgotIAkgICAgY2F0IDw8IkVPRiIKLUBAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKLSB9IHdoaWxlICgwKQotIAotLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKLS0jaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKLS0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLS1zdGF0aWMgdm9pZAotLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCi0tewotLSAgICB2YV9saXN0IGFyZ3M7Ci0tICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLS0gICAgdmFfZW5kIChhcmdzKTsKLS19Ci0rI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQotK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOwotICNlbHNlCi0tIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCi0rc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7Ci0gI2VuZGlmCi0gCi0tY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKLStjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCi0gCi0gdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7Ci0gY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKLUBAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKLSBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKLSBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7Ci0gY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci0tdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKLSt2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKLStzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOwotIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci0gY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLSB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotQEAgLTM0OTcsMTQgKzQzMDEsMTQgQEAgdm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7Ci0gRU9GCi0gCi0gCSAgICBjYXQgPDxFT0YKLS1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwotK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Ci0gY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOwotIEVPRgotIAotIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKLSsgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKLSAJICAgICAgY2F0IDw8RU9GCi0tY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOwotK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwotIEVPRgotIAkgICAgZWxzZQotIAkgICAgICBjYXQgPDwiRU9GIgotQEAgLTM1MTMsMTAgKzQzMTcsMTAgQEAgRU9GCi0gCSAgICBmaQotIAotIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKLSsgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCi0gCSAgICAgIGNhdCA8PEVPRgotIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKLStjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKLSBFT0YKLSAJICAgIGVsc2UKLSAJICAgICAgY2F0IDw8IkVPRiIKLUBAIC0zNTM5LDEyICs0MzQzLDEwIEBAIEVPRgotIAkgICAgY2F0IDw8IkVPRiIKLSAKLSAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgotLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1Ci0gCi0tc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOwotIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOwotLQotIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKLSAKLSBpbnQKLSBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotQEAgLTM1NjEsMTAgKzQzNjMsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGludCBpOwotIAotICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKLSsgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKLSAKLS0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCi0rICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAotKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0Ci0rICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5Ci0rICAgKi8KLSsgIG5ld2FyZ2M9MDsKLSAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKLUBAIC0zNTgxLDIxICs0Mzg2LDU0IEBAIEVPRgotIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0rICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQotKwl7Ci0rICAgICAgICAgIGx0X2RlYnVnID0gMTsKLSsgICAgICAgICAgY29udGludWU7Ci0rCX0KLSsgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0rICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0rICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLSsgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSsgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSsgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0rICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotKyAgICAgICAgICAgKi8KLSsgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCi0rICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0rICAgICAgICB9Ci0rICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotICAgICB9Ci0rICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotKwotK0VPRgotKwkgICAgY2F0IDw8RU9GCi0rICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOwotK0VPRgotKwkgICAgY2F0IDw8IkVPRiIKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOwotIAotLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwotICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKLSAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLS0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0tCQkJICB0bXBfcGF0aHNwZWMpKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCi0rCQkgIHRtcF9wYXRoc3BlYyk7Ci0gCi0gICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0tCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAotKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7Ci0gICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKLSAKLS0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0gICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7Ci0gCi0gICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwotQEAgLTM2MTMsOCArNDQ1MSw5IEBAIEVPRgotICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7Ci0gICB0bXBfcGF0aHNwZWMgPSAwOwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLS0JCQkgIHRhcmdldF9uYW1lKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotKwkJICB0YXJnZXRfbmFtZSk7Ci0gRU9GCi0gCi0gCSAgICBjYXQgPDxFT0YKLUBAIC0zNjY0LDM1ICs0NTAzLDE5IEBAIEVPRgotIAotICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCi0gICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0tICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKLSsgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKLSsgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQotKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCi0rICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLwotICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7Ci0rICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKLSAKLS0gIG5ld2FyZ2M9MDsKLS0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0tICAgIHsKLS0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQotLSAgICAgICAgewotLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0tICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLS0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLS0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLS0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0tICAgICAgICAgICAqLwotLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLS0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLS0gICAgICAgIH0KLS0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0tICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0tICAgIH0KLS0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0tCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAotKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCi0gICAgIHsKLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCi0rCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7Ci0gICAgIH0KLSAKLSBFT0YKLUBAIC0zNzA2LDcgKzQ1MjksOSBAQCBFT0YKLSAgIGlmIChydmFsID09IC0xKQotICAgICB7Ci0gICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCi0rCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAgICAgICByZXR1cm4gMTI3OwotICAgICB9Ci0gICByZXR1cm4gcnZhbDsKLUBAIC0zNzI4LDcgKzQ1NTMsNyBAQCB4bWFsbG9jIChzaXplX3QgbnVtKQotIHsKLSAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7Ci0gICBpZiAoIXApCi0tICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOwotIAotICAgcmV0dXJuIHA7Ci0gfQotQEAgLTM3NjIsOCArNDU4Nyw4IEBAIGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCi0gewotICAgc3RydWN0IHN0YXQgc3Q7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwotICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCi0gICAgIHJldHVybiAwOwotIAotQEAgLTM3ODAsOCArNDYwNSw4IEBAIG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKLSAgIGludCBydmFsID0gMDsKLSAgIHN0cnVjdCBzdGF0IHN0OwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLS0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwotICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCi0gICAgIHJldHVybiAwOwotIAotQEAgLTM4MDcsOCArNDYzMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAgIGludCB0bXBfbGVuOwotICAgY2hhciAqY29uY2F0X25hbWU7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7Ci0gCi0gICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQotICAgICByZXR1cm4gTlVMTDsKLUBAIC0zODYxLDcgKzQ2ODYsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gCQl7Ci0gCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCi0gCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLS0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSsJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKLSAJCSAgY29uY2F0X25hbWUgPQotIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwotQEAgLTM4ODYsNyArNDcxMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAgICAgfQotICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwotICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7Ci0gICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwotICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKLUBAIC0zOTEyLDggKzQ3MzksOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKLSAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKLSAgICAgewotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLSsJCSAgICAgIHRtcF9wYXRoc3BlYyk7Ci0gICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQotIAl7Ci0gCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKLUBAIC0zOTM1LDggKzQ3NjMsOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLS0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOwotLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKLSsJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKLSsJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAJfQotICAgICB9Ci0gICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKLUBAIC0zOTQ5LDcgKzQ3NzgsOCBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7Ci0gICBpZiAodG1wX3BhdGhzcGVjID09IDApCi0gICAgIHsKLS0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwotKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7Ci0gICAgIH0KLSAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOwotICNlbmRpZgotQEAgLTM5NzUsMTEgKzQ4MDUsMjUgQEAgc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKLSAgIHJldHVybiBzdHI7Ci0gfQotIAotK3ZvaWQKLStsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGlmIChsdF9kZWJ1ZykKLSsgICAgewotKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKLSsgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSsgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSsgICAgICB2YV9lbmQgKGFyZ3MpOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0tbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAotK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKLSsJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAotIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKLSB7Ci0tICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7Ci0rICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7Ci0gICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7Ci0gICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKLSAKLUBAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKLSB9Ci0gCi0gdm9pZAotLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCi0rbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCi0gewotICAgdmFfbGlzdCBhcDsKLSAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0tICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKLSsgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwotICAgdmFfZW5kIChhcCk7Ci0gfQotIAotK3N0YXRpYyBjb25zdCBjaGFyICoKLStub25udWxsIChjb25zdCBjaGFyICpzKQotK3sKLSsgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKLSt9Ci0rCi0gdm9pZAotIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAgIHsKLSAjaWZkZWYgSEFWRV9TRVRFTlYKLSAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KLUBAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCi0gdm9pZAotIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotIAotICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQotICAgICB7Ci1AQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB2b2lkCi0gbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gCi0gICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCi0gICAgIHsKLUBAIC00MjIyLDcgKzUwNzgsNyBAQCBFT0YKLSBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQotIHsKLSAgICAgJG9wdF9kZWJ1ZwotLSAgICBjYXNlIGBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCIgfCAkU0VEIC1lIDEwcWAgaW4KLSsgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgotICAgICAqaW1wb3J0KikgOiA7OwotICAgICAqKSBmYWxzZSA7OwotICAgICBlc2FjCi1AQCAtNDQwMSw5ICs1MjU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLS0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCi0gCSAgICBlbHNlCi0tCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgotIAkgICAgZmkKLSAJICAgIHByZXY9Ci0gCSAgICBjb250aW51ZQotQEAgLTQ0MjcsNyArNTI4Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqLSotZGFyd2luKikKLSAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgotIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0tCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCi0rCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgotIAkJICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotQEAgLTQ0NDYsNyArNTMwMiw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBtb3JlYXJncz0KLSAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKLSAJICAgIGRvCi0tIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCi0rIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCi0gCSAgICAgIGFyZz0kZmlsCi0gCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgotIAotQEAgLTQ0NzUsNyArNTMzMSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0tCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCSAgICAgIHByZXY9Ci0gCQkgICAgICBjb250aW51ZQotIAkJICAgIGVsc2UKLUBAIC00NDg3LDcgKzUzNDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQotIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgotKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCSAgICBwcmV2PQotIAkJICBmaQotIAotQEAgLTQ1NTcsMTIgKzU0MTMsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgotIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7Ci0gCSAgICBlc2FjCi0gCSAgZWxzZQotIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OwotIAkgICAgZXNhYwotIAkgIGZpCi0gCSAgcHJldj0KLUBAIC00NTc0LDI4ICs1NDMwLDI4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY29udGludWUKLSAJICA7OwotIAl3ZWFrKQotLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCi0gCSAgcHJldj0KLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhjY2xpbmtlcikKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGNvbXBpbGVyKQotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhsaW5rZXIpCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKLUBAIC00Njg2LDE1ICs1NTQyLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCTs7Ci0gCi0gICAgICAgLUwqKQotLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgotLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgotKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgotKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgotIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKLSAJICBlbHNlCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKLSAJICBmaQotIAlmaQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCWNhc2UgJGRpciBpbgotIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7Ci1AQCAtNDcwNiwxMCArNTU2MywxNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAiJGRlcGxpYnMgIiBpbgotLQkqIiAtTCRkaXIgIiopIDs7Ci0rCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCi0rCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cwotKwkgIDs7Ci0gCSopCi0tCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgotLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgotKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKLSsJICBjYXNlICRkaXIgaW4KLSsJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7Ci0rCSAgZXNhYwotKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICRob3N0IGluCi1AQCAtNDcxOCwxMiArNTU4MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiRkaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7Ci0gCSAgZXNhYwotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNDc0Nyw3ICs1NjEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLS0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0gCSAgICBjb250aW51ZQotIAkgICAgOzsKLSAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCi1AQCAtNDc1OCw5ICs1NjIxLDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKLSAJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQotIAkgICAgOzsKLS0JICAqLSotbGludXgqKQotLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCi0tCSAgICA7OwotIAkgIGVzYWMKLSAJZWxpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sY19yIjsgdGhlbgotIAkgY2FzZSAkaG9zdCBpbgotQEAgLTQ3NzAsNyArNTYzMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgIDs7Ci0gCSBlc2FjCi0gCWZpCi0tCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgotIAljb250aW51ZQotIAk7OwotIAotQEAgLTQ3ODIsOCArNTY0Miw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKwotICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KLSAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCi0tCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKLSsJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAJcHJldj14Y29tcGlsZXIKLUBAIC00NzkxLDEyICs1NjUxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCTs7Ci0gCi0gICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLS0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7Ci0rCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OwotIAllc2FjCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNDg2MywxMyArNTcyMywxNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJY2FzZSAkZGlyIGluCi0gCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLSsJPSopCi0rCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgotKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsJICA7OwotIAkqKQotIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAiJHhycGF0aCAiIGluCi0gCSoiICRkaXIgIiopIDs7Ci0tCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OwotKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwotIAllc2FjCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNDkyMiw4ICs1Nzg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotLQkgIGFyZz0iJGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAlkb25lCi0gCUlGUz0iJHNhdmVfaWZzIgotIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCi1AQCAtNDkzOCw5ICs1ODAyLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAlkb25lCi0gCUlGUz0iJHNhdmVfaWZzIgotIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCi1AQCAtNDk2OCwyNCArNTgzMiwyNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJOzsKLSAKLS0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCi0tICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgotLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0tICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLS0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKLS0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLS0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCi0tICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKLS0gICAgICAjIC10cD0qIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KLSsgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6Ci0rICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKLSsgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCi0rICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKLSsgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCi0rICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0rICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQwotKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0rICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKLSsgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcwotKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgotKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAotKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCi0gICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCi0tICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qKQotKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAotKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKLSAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotICAgICAgICAgY29udGludWUKLSAgICAgICAgIDs7Ci0gCi1AQCAtNDk5Nyw3ICs1ODY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAqLiRvYmpleHQpCi0gCSMgQSBzdGFuZGFyZCBvYmplY3QuCi0tCW9ianM9IiRvYmpzICRhcmciCi0rCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgotIAk7OwotIAotICAgICAgICoubG8pCi1AQCAtNTAyOCw3ICs1ODk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCi0rCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCi0gCQlwcmV2PQotIAkJY29udGludWUKLSAJICAgICAgZWxzZQotQEAgLTUwNDAsNyArNTkwNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0tCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgotKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCi0gCSAgICAgIHByZXY9Ci0gCSAgICBmaQotIAotQEAgLTUwODUsMjQgKzU5NTIsMjUgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAqLiRsaWJleHQpCi0gCSMgQW4gYXJjaGl2ZS4KLS0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLS0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgotKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKLSsJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgotIAljb250aW51ZQotIAk7OwotIAotICAgICAgICoubGEpCi0gCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KLSAKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCi0gCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLS0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIHByZXY9Ci0gCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCi0tCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBwcmV2PQotIAllbHNlCi0tCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJZmkKLSAJY29udGludWUKLSAJOzsKLUBAIC01MTI3LDcgKzU5OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKLSAKLSAgICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgotLSAgICAgIGV2YWwgImFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIiIKLSsgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgotICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gICAgIGZpCi1AQCAtNTE0NCwxMSArNjAxMiwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICBlbHNlCi0gICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9Ci0gICAgIGZpCi0tICAgIGV2YWwgInN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIiCi0tICAgIGV2YWwgInN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiIgotKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKLSsgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgotIAotICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgotICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCi0rICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCi0rICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgotICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgotIAotQEAgLTUxNjksMTIgKzYwMzksMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCi0gICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQotICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJY2FzZSAiJGxpYnMgIiBpbgotLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGZpCi0tICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKLSsgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKLSAgICAgZG9uZQotIAotICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCi1AQCAtNTE4Nyw5ICs2MDU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgotIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KLSAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCi0tCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKLSsJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwotIAkgIGVzYWMKLS0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgotKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgotIAlkb25lCi0gICAgICAgZmkKLSAgICAgICBwcmVfcG9zdF9kZXBzPQotQEAgLTUyNTYsOCArNjEyNiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCi0gCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwotIAkgIGRlcGVuZGVuY3lfbGlicz0KLSsJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSAJICBjYXNlICRsaWIgaW4KLS0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKLSsJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKLSAJICBlc2FjCi0gCi0gCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5Ci1AQCAtNTI2Nyw3ICs2MTM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLSAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KLSAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKLS0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWRvbmUKLUBAIC01Mjg4LDExICs2MTU5LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKLSAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgZWxzZQotLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KLSAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OwotKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7Ci0gCQllc2FjCi0gCSAgICBmaQotIAkgIGZpCi1AQCAtNTM3Nyw3ICs2MjQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCi0gCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKLSsJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwotIAkJZXNhYwotIAkgICAgZmkKLSAJICBmaQotQEAgLTUzOTAsNyArNjI2MSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCi0gCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICAgIDs7Ci0gCSAgcHJvZykKLSAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLUBAIC01NDA0LDcgKzYyNzYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgICAgZmkKLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKLUBAIC01NDE1LDE3ICs2Mjg4LDIxIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCS1SKikKLSAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0gCSAgICBjYXNlICIkeHJwYXRoICIgaW4KLSAJICAgICoiICRkaXIgIiopIDs7Ci0tCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZmkKLSAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLS0JKi5sYSkgbGliPSIkZGVwbGliIiA7OwotKwkqLmxhKQotKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCSAgOzsKLSAJKi4kbGliZXh0KQotIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLSAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi1AQCAtNTQ4OCwxMSArNjM2NSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KLSAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCi0gCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKLSAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCi0gCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgICBlbHNlCi0tCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgotIAkgICAgZmkKLSAJICBmaQotIAkgIGNvbnRpbnVlCi1AQCAtNTUzOCw3ICs2NDE1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCi0gCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7Ci0tCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZmkKLUBAIC01NTQ2LDggKzY0MjMsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAotIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKLSAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KLS0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCi0rCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCi0rCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCi0gCWZpCi0gCi0gCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLUBAIC01NTU4LDIwICs2NDM1LDIwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgotIAkgICAgZmkKLSAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KLS0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCi0gCSAgZmkKLSAJICB0bXBfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgotIAkgIGRvbmUKLSAJICBjb250aW51ZQotIAlmaSAjICRwYXNzID0gY29udgotQEAgLTU1NzksOSArNjQ1NiwxNSBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCi0gCWxpbmtsaWI9Ci0tCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLS0JICBsaW5rbGliPSIkbCIKLS0JZG9uZQotKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCi0rCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKLSsJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgotKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5Ci0rCWVsc2UKLSsJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0rCSAgICBsaW5rbGliPSIkbCIKLSsJICBkb25lCi0rCWZpCi0gCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgotIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgotIAlmaQotQEAgLTU1OTgsOSArNjQ4MSw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQotIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKLSAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KLS0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKLSsJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCi0gCSAgZWxzZQotLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgotIAkgIGZpCi0gCSAgY29udGludWUKLSAJZmkgIyAkcGFzcyA9IGRsb3BlbgotQEAgLTU2MjIsMTQgKzY1MDUsMTQgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCi0gCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KLS0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0rCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0gCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgotIAkgICAgZGlyPSIkbGFkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotLQkgICAgZGlyPSIkbGliZGlyIgotLQkgICAgYWJzZGlyPSIkbGliZGlyIgotKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCi0rCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLSAJICBmaQotIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCi0gCWVsc2UKLUBAIC01NjM3LDEyICs2NTIwLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBkaXI9IiRsYWRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLS0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgotKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKLSAJICBlbHNlCi0gCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCi0gCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0tCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKLSsJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCi0gCSAgZmkKLSAJZmkgIyAkaW5zdGFsbGVkID0geWVzCi0gCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgotQEAgLTU2NTMsMjAgKzY1MzYsNDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgotIAkgIGZpCi0tCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0tCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0tCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCi0tCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLS0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLS0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLS0JICBlbHNlCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgotLQkgIGZpCi0rCSAgY2FzZSAiJGhvc3QiIGluCi0rCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCi0rCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLSsJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCi0rCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0Ci0rCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKLSsJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCi0rCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCi0rCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCi0rCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKLSsJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KLSsJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgotKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgotKwkgICAgICBlbHNlCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSsJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgICAgKiApCi0rCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLSsJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLSsJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLSsJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0rCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKLSsJICAgICAgZWxzZQotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICBlc2FjCi0gCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KLSAKLSAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLUBAIC01Njg0LDcgKzY1OTMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAotIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgotLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCi0rCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgotIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCi0gCi0gCSAgbGlua2FsbGRlcGxpYnM9bm8KLUBAIC01Njk3LDcgKzY2MDYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIGNhc2UgJGRlcGxpYiBpbgotIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCQkgOzsKLSAJICAgIGVzYWMKLSAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KLUBAIC01NzA4LDEyICs2NjE4LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCi0gCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICAgZmkKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKLSAJICBkb25lICMgZm9yIGRlcGxpYgotIAkgIGNvbnRpbnVlCi0gCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgotQEAgLTU3MjgsNyArNjYzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLSAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgotIAkgICAgICAqIiRhYnNkaXI6IiopIDs7Ci0tCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAotQEAgLTU3NDAsNyArNjY1MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTc0OSw3ICs2NjU5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTc3NCwxMiArNjY4NCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNhc2UgJGhvc3QgaW4KLSAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQotIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCi0tCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgotIAkgICAgICBuZWVkX3JlbGluaz1ubwotIAkgICAgOzsKLSAJICAqKQotIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKLSAJICAgICAgbmVlZF9yZWxpbms9eWVzCi0gCSAgICBmaQotIAkgICAgOzsKLUBAIC01ODE0LDcgKzY3MjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU4MjMsNyArNjczMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU4MzUsNyArNjc0NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBzaGlmdAotIAkgICAgcmVhbG5hbWU9IiQxIgotIAkgICAgc2hpZnQKLS0JICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPwotIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSAJICAgICAgc29uYW1lPSIkZGxuYW1lIgotQEAgLTU4NDgsNyArNjc1OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCi0gCQk7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgotKwkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCi0gCSAgICBlbHNlCi0gCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgotIAkgICAgZmkKLUBAIC01ODc3LDcgKzY3ODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgbGlua2xpYj0kbmV3bGliCi0gCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCi0gCi0tCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgotKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0gCSAgICBhZGRfc2hsaWJwYXRoPQotIAkgICAgYWRkX2Rpcj0KLSAJICAgIGFkZD0KLUBAIC01OTMzLDcgKzY4NDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCSAgY2FzZSAkbGliZGlyIGluCi0gCQkgICAgW1xcL10qKQotLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLUBAIC01OTU1LDcgKzY4NjUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCi0gCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KLSAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotQEAgLTU5NjksMTMgKzY4NzksMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KLSAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCi0gCQkqIjokbGliZGlyOiIqKSA7OwotLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7Ci0rCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICBmaQotIAotLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJICAgIGFkZF9zaGxpYnBhdGg9Ci0gCSAgICBhZGRfZGlyPQotIAkgICAgYWRkPQotQEAgLTU5ODksNyArNjg5OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgotIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICBhZGQ9Ii1sJG5hbWUiCi0gCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCi1AQCAtNjAwMSwxMiArNjkxMSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0rCSAgICAgIGFkZF9kaXI9Ii1MJGx0X3N5c3Jvb3QkbGliZGlyIgotIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLUBAIC02MDgzLDI3ICs2OTkzLDMzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgotIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OwotLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OwotKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7Ci0gCQkgICBlc2FjOzsKLS0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCi0gCSAgZmkKLSAKLS0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKLSsJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgotIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQotIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCi0gCSAgdG1wX2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgY2FzZSAkZGVwbGliIGluCi0rICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0rICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7Ci0rICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKLSsgICAgICAgICAgICBlc2FjCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCi0rICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBkb25lCi0gCi0gCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCi1AQCAtNjExMyw4ICs3MDI5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGNhc2UgJGRlcGxpYiBpbgotIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7Ci0gCSAgICAgICoubGEpCi0rCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgotLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSsJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAotIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCQljYXNlICRkaXIgaW4KLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwotQEAgLTYxMzAsNyArNzA0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQljYXNlICRob3N0IGluCi0gCQkqLSotZGFyd2luKikKLSAJCSAgZGVwZGVwbD0KLS0JCSAgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotIAkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCi0gCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCi0gCQkgICAgICBkZXBkZXBsPSR0bXAKLUBAIC02MTQxLDggKzcwNTksOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAotICAgICAgICAgICAgICAgICAgICAgICBmaQotLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSAJCSAgICAgIHBhdGg9Ci0gCQkgICAgZmkKLSAJCSAgZmkKLUBAIC02MTUyLDcgKzcwNzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICA7OwotIAkJZXNhYwotIAkJZWxzZQotLQkJICBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAotQEAgLTYxOTIsNyArNzExMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwotIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCi0gCSAgICAqIiAkZGlyICIqKSA7OwotLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJICBuZXdsaWJfc2VhcmNoX3BhdGg9Ci1AQCAtNjIwNSw3ICs3MTIzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZmkKLSAJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgotLQkgIGV2YWwgdG1wX2xpYnM9XCQkdmFyCi0rCSAgZXZhbCB0bXBfbGlicz1cIlwkJHZhclwiCi0gCSAgbmV3X2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCi0gCSAgICAjIEZJWE1FOiBQZWRhbnRpY2FsbHksIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBzbwotQEAgLTYyNTAsMTMgKzcxNjgsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIC1MKikKLSAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCi0gCSAgICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0tCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotLQkgIGV2YWwgJHZhcj1cJHRtcF9saWJzCi0rCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKLSAJZG9uZSAjIGZvciB2YXIKLSAgICAgICBmaQotICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCi1AQCAtNjI2OSw3ICs3MTg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICA7OwotIAllc2FjCi0gCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgotKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCi0gCWZpCi0gICAgICAgZG9uZQotICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKLUBAIC02MzEwLDcgKzcyMjgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgotICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwotICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCi0tICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgotICAgICAgIDs7Ci0gCi0gICAgIGxpYikKLUBAIC02MzE5LDggKzcyMzcsOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGxpYiopCi0gCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKLSAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCi0gCTs7Ci0gICAgICAgKikKLSAJdGVzdCAiJG1vZHVsZSIgPSBubyAmJiBcCi1AQCAtNjMzMCw4ICs3MjQ4LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCi0gCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgotIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQkgIGV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCi0gCWVsc2UKLSAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci1AQCAtNjM0Niw3ICs3MjY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBlY2hvCi0gCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgotIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgotLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgotKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKLSAJZmkKLSAgICAgICBmaQotIAotQEAgLTY1NDQsNyArNzQ2Miw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZG9uZQotIAotIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KLS0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgotKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKLSAJICA7OwotIAotIAlxbngpCi1AQCAtNjYxMiwxMCArNzUzMCwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZpCi0gCi0gICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCi0tICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCi0rICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgotICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCi0tICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0gCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5Ci0gCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgotIAlyZW1vdmVsaXN0PQotQEAgLTY2MzEsNyArNzU0OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgICBjb250aW51ZQotIAkJIGZpCi0gCSAgICAgICBmaQotLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCi0rCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCi0gCSAgICAgICA7OwotIAkgICAgKikgOzsKLSAJICBlc2FjCi1AQCAtNjY0Miw3ICs3NTYwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KLSAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgotLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgotKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKLSAKLSAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgotIAlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKLUBAIC02NjU5LDEwICs3NTc3LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KLSAJdGVtcF94cnBhdGg9Ci0gCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KLS0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKLSsJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLUBAIC02Njc2LDcgKzc1OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwotIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgotIAkqIiAkbGliICIqKSA7OwotLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAKLUBAIC02Njg2LDcgKzc2MDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbwotIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCi0gCSoiICRsaWIgIiopIDs7Ci0tCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotIAotQEAgLTY2OTgsNyArNzYxNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLSAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0tCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0rCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgotIAkgICAgOzsKLSAJICAqLSotbmV0YnNkKikKLSAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgotQEAgLTY3MTUsNyArNzYzNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgKikKLSAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCi0gCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCi0tCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKLSAJICAgIGZpCi0gCSAgICA7OwotIAkgIGVzYWMKLUBAIC02NzY0LDE4ICs3NjgzLDE4IEBAIEVPRgotIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSAgKiIgJGkgIiopCi0tCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgIGk9IiIKLSAJCSAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkJICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotLQkJICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKLSAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKLSAJCSAgZGVwbGliX21hdGNoPSQxCi0gCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLS0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgIGVsc2UKLSAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLSAJCSAgICBlY2hvCi1AQCAtNjc4OSw3ICs3NzA4LDcgQEAgRU9GCi0gCQlmaQotIAkJOzsKLSAJICAgICAgKikKLS0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTY4MDcsMTggKzc3MjYsMTggQEAgRU9GCi0gCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSAgICAqIiAkaSAiKikKLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgICAgaT0iIgotIAkJICAgICAgOzsKLSAJCSAgICBlc2FjCi0gCQkgIGZpCi0gCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotLQkJICAgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKLSAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAotIAkJICAgIGRlcGxpYl9tYXRjaD0kMQotIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgIGVsc2UKLSAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotIAkJICAgICAgZWNobwotQEAgLTY4NDAsNyArNzc1OSw3IEBAIEVPRgotIAkJZmkKLSAJCTs7Ci0gCSAgICAgICopCi0tCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC02ODU3LDE1ICs3Nzc2LDI3IEBAIEVPRgotIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSoiICRhX2RlcGxpYiAiKikKLS0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICBhX2RlcGxpYj0iIgotIAkJICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgotLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KLSsJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKLSsJCWVsc2UKLSsJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKLSsJCWZpCi0rCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAotIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCi0tCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAotKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgotKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKLSsJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCi0rCQkgICAgJG5vY2FzZWdsb2IKLSsJCSAgZWxzZQotKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgZmkKLSAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwotIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KLSAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8Ci1AQCAtNjg4NSwxMCArNzgxNiwxMCBAQCBFT0YKLSAJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OwotIAkJCWVzYWMKLSAJCSAgICAgIGRvbmUKLS0JCSAgICAgIGlmIGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIiIDI+L2Rldi9udWxsIHwKLSsJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8Ci0gCQkJICRTRUQgLWUgMTBxIHwKLSAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLS0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCQlhX2RlcGxpYj0iIgotIAkJCWJyZWFrIDIKLSAJCSAgICAgIGZpCi1AQCAtNjkxMyw3ICs3ODQ0LDcgQEAgRU9GCi0gCSAgICAgIDs7Ci0gCSAgICAqKQotIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KLUBAIC02OTI5LDIwICs3ODYwLDIwIEBAIEVPRgotIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSoiICRhX2RlcGxpYiAiKikKLS0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICBhX2RlcGxpYj0iIgotIAkJICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgotLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCi0gCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAotIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCi0gCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLSAJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAotIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICAgICAgYV9kZXBsaWI9IiIKLSAJCSAgICAgIGJyZWFrIDIKLSAJCSAgICBmaQotQEAgLTY5NjcsNyArNzg5OCw3IEBAIEVPRgotIAkgICAgICA7OwotIAkgICAgKikKLSAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLS0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkgICAgICA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCi1AQCAtNzA3MSw3ICs4MDAyLDcgQEAgRU9GCi0gCSopCi0gCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KLSAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0tCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzA4MSwxMCArODAxMiwxMCBAQCBFT0YKLSAJLUwqKQotIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgotIAkgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLS0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gICAgICAgZGVwbGlicz0iJG5ld19saWJzIgotQEAgLTcxMDEsMTAgKzgwMzIsMTIgQEAgRU9GCi0gCSAgaGFyZGNvZGVfbGliZGlycz0KLSAJICBkZXBfcnBhdGg9Ci0gCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLS0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSsJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0gCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0gCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLSAJCWVsc2UKLUBAIC03MTEzLDE4ICs4MDQ2LDE4IEBAIEVPRgotIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQkgICAgOzsKLSAJCSAgKikKLS0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLSAJICAgICAgZWxzZQotLQkJZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCi0rCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKLSAJICAgICAgZmkKLSAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZWQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZG9uZQotQEAgLTcxMzMsNDAgKzgwNjYsMzggQEAgRU9GCi0gCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0tCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIiCi0rCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgotIAkgICAgZWxzZQotLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAJICAgIGZpCi0gCSAgZmkKLSAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgotIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICAgIHJwYXRoPQotIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLS0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgICBkb25lCi0tCSAgICBldmFsICRydW5wYXRoX3Zhcj1cJHJwYXRoXCQkcnVucGF0aF92YXIKLS0JICAgIGV4cG9ydCAkcnVucGF0aF92YXIKLSsJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgotIAkgIGZpCi0gCSAgdGVzdCAtbiAiJGRlcF9ycGF0aCIgJiYgZGVwbGlicz0iJGRlcF9ycGF0aCAkZGVwbGlicyIKLSAJZmkKLSAKLSAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgotLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKLSsJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgotIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgotLQkgIGV2YWwgJHNobGlicGF0aF92YXI9XCRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyCi0tCSAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCi0rCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgotIAlmaQotIAotIAkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KLS0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQlldmFsICJsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKLSAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0gCXNoaWZ0Ci0gCXJlYWxuYW1lPSIkMSIKLSAJc2hpZnQKLSAKLSAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgotLQkgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgotKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKLSAJZWxzZQotIAkgIHNvbmFtZT0iJHJlYWxuYW1lIgotIAlmaQotQEAgLTcxNzgsNyArODEwOSw3IEBAIEVPRgotIAlsaW5rbmFtZXM9Ci0gCWZvciBsaW5rCi0gCWRvCi0tCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgotIAlkb25lCi0gCi0gCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCi1AQCAtNzE4OSw3ICs4MTIwLDcgQEAgRU9GCi0gCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0gCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0tCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCi0rCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCi0gCWZpCi0gCi0gCW9yaWdfZXhwb3J0X3N5bWJvbHM9Ci1AQCAtNzIyMCwxMyArODE1MSw0NSBAQCBFT0YKLSAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCi0gCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCi0gCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLS0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0rCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KLSAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKLS0JICAgICAgZnVuY19sZW4gIiAkY21kIgotLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLSsJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKLSsJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCi0rCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCi0rCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCi0rCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcwotKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKLSsJCSAgZnVuY19sZW4gIiAkY21kIgotKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotKwkJICA7OwotKwkJKikKLSsJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KLSsJCSAgOzsKLSsJICAgICAgZXNhYwotKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKLSsJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCi0rCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQotKwkgICAgICB0aGVuCi0rCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCi0rCQlza2lwcGVkX2V4cG9ydD1mYWxzZQotKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KLSsJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCi0rCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci0rCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKLSsJCXNhdmVfb3V0cHV0PSRvdXRwdXQKLSsJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQotKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSsJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKLSsJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KLSsJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkJZG9uZSA+ICIkb3V0cHV0IgotKwkJZXZhbCBjbWQ9XCIkY21kMVwiCi0gCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCi0rCQlvdXRwdXQ9JHNhdmVfb3V0cHV0Ci0rCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKLSAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCi0gCSAgICAgIGVsc2UKLSAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgotQEAgLTcyNDgsNyArODIxMSw3IEBAIEVPRgotIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCi0gCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0tCSAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKLSAJZmkKLSAKLSAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KLUBAIC03MjYwLDcgKzgyMjMsNyBAQCBFT0YKLSAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQotIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCi0gCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0tCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKLSAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwotIAlmaQotQEAgLTcyNzAsNyArODIzMyw3IEBAIEVPRgotIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgotIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKLSAJICAqKQotLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAlkb25lCi1AQCAtNzI4Niw0MyArODI0OSw0MyBAQCBFT0YKLSAJICBmaQotIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLSAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwotLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBlbHNlCi0gCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0tCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZmkKLSAJZmkKLSAKLSAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgIGV2YWwgImZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIiCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgotKwkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgotIAlmaQotIAotIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLS0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0tCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKSB8fCBleGl0ICQ/Ci0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/Ci0gCWZpCi0gCi0gCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLSAJaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIiA7IHRoZW4KLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgotIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCi0gCSAgZWxzZQotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCi0gCSAgICBjbWRzPSRtb2R1bGVfY21kcwotIAkgIGZpCi0gCWVsc2UKLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgotIAkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcwotIAkgIGVsc2UKLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiCi0gCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKLSAJICBmaQotIAlmaQotQEAgLTczNjYsMTAgKzgzMjksMTMgQEAgRU9GCi0gCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKLSAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcwotIAkgICAgZG8KLS0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKLSsJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0Ci0gCSAgICBkb25lCi0gCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0Ci0tCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0rCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KLSAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKLSAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKLUBAIC03MzgzLDE1ICs4MzQ5LDE3IEBAIEVPRgotIAkgICAgZmkKLSAJICAgIGZvciBvYmoKLSAJICAgIGRvCi0tCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0Ci0rCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAotIAkgICAgZG9uZQotLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCi0rCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgotIAkgIGVsc2UKLSAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCi0gCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCi0gCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotLQkgICAgICBldmFsICJ0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKLSsJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgotIAkgICAgICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCi0gCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAotIAkgICAgICBsZW49JGxlbjAKLUBAIC03NDExLDEyICs4Mzc5LDEyIEBAIEVPRgotIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCi0gCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLSAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAotLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCi0rCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCi0gCQkgIGVsc2UKLSAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgotIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0gCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCi0tCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKLSsJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKLSAJCSAgZmkKLSAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0gCQkgIGZ1bmNfYXJpdGggJGsgKyAxCi1AQCAtNzQzMywxMSArODQwMSwxMSBAQCBFT0YKLSAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotIAkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0tCSAgICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgotIAkgICAgICBmaQotLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSAKLSAJICAgIGVsc2UKLSAJICAgICAgb3V0cHV0PQotQEAgLTc0NTAsOSArODQxOCw5IEBAIEVPRgotIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKLSAJICAgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgotIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgotLQkJZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgotKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCi1AQCAtNzQ3MSw3ICs4NDM5LDcgQEAgRU9GCi0gCQlsdF9leGl0PSQ/Ci0gCi0gCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAotIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCi0gCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKLUBAIC03NDkyLDcgKzg0NjAsNyBAQCBFT0YKLSAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCi0gCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgotKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKLSAJICAgIGZpCi0gCi0gCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KLUBAIC03NTA0LDcgKzg0NzIsNyBAQCBFT0YKLSAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKLSAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KLSAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0tCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKLSAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKLSAJICAgIGZpCi1AQCAtNzUxNSw3ICs4NDgzLDcgQEAgRU9GCi0gCSAgb3V0cHV0PSRzYXZlX291dHB1dAotIAotIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBmaQotIAkgICMgRXhwYW5kIHRoZSBsaWJyYXJ5IGxpbmtpbmcgY29tbWFuZHMgYWdhaW4gdG8gcmVzZXQgdGhlCi1AQCAtNzUzOSwyMyArODUwNywyMyBAQCBFT0YKLSAKLSAJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgotIAkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCi0tCSAgZXZhbCAiY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiIgotKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCi0gCWZpCi0gCi0gCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwotIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLS0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJZmkKLSAKLSAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0gCWZvciBjbWQgaW4gJGNtZHM7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgZXZhbCAiY21kPVwiJGNtZFwiIgotKwkgIGV2YWwgY21kPVwiJGNtZFwiCi0gCSAgJG9wdF9zaWxlbnQgfHwgewotIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgotIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgotQEAgLTc1NjQsNyArODUzMiw3IEBAIEVPRgotIAkgICAgbHRfZXhpdD0kPwotIAotIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKLSAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAotIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKLUBAIC03NTc2LDggKzg1NDQsOCBAQCBFT0YKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCi0gCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLS0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpIHx8IGV4aXQgJD8KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KLSAKLSAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCi0gCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi1AQCAtNzY1NiwxNyArODYyNCwyMCBAQCBFT0YKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCi0gCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICBldmFsICJ0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKLSAJZWxzZQotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJZmkKLSAgICAgICBmaQotIAotKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCi0rICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCi0rCi0gICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0gICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0Ci0gCi1AQCAtNzY5MCw3ICs4NjYxLDcgQEAgRU9GCi0gCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0Ci0gCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCi0gCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKLS0JIyAkb3B0X2RyeV9ydW4gfHwgZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIHx8IGV4aXQgJD8KLSsJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/Ci0gCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgIGZpCi0gCi1AQCAtNzc0MCw4ICs4NzExLDggQEAgRU9GCi0gCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KLSAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCi0gCSAgICAxMC5bMDEyM10pCi0tCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0tCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLSsJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgotKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCWZpCi1AQCAtNzc2MSw3ICs4NzMyLDcgQEAgRU9GCi0gCSopCi0gCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgotIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLS0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OwotKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03NzcxLDE3ICs4NzQyLDE3IEBAIEVPRgotIAktTCopCi0gCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCi0gCSAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgIGVzYWMKLSAJICA7OwotLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKLSAKLSAKLS0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLS0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgotIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCi1AQCAtNzc4OSw3ICs4NzYwLDcgQEAgRU9GCi0gCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotICAgICAgIGZpCi1AQCAtNzgwOCwxOCArODc3OSwxOCBAQCBFT0YKLSAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJOzsKLSAJICAgICAgKikKLS0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCi0rCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotIAljYXNlICRob3N0IGluCi1AQCAtNzgyOCwxMiArODc5OSwxMiBAQCBFT0YKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokbGliZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwotIAkgIGVzYWMKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTc4NDIsNyArODgxMyw3IEBAIEVPRgotICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgotIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0tCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotICAgICAgIGZpCi0gICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgotIAotQEAgLTc4NTksMTggKzg4MzAsMTggQEAgRU9GCi0gCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCTs7Ci0gCSAgICAgICopCi0tCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgotKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAgICAgICBkb25lCi1AQCAtNzg3OCw3ICs4ODQ5LDcgQEAgRU9GCi0gICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCi0gCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLS0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gICAgICAgZmkKLSAgICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgotIAotQEAgLTc5MjEsNiArODg5MiwxMiBAQCBFT0YKLSAJZXhpdF9zdGF0dXM9MAotIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwotIAotKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsJZmkKLSsKLSAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KLSAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgotIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCi1AQCAtNzk0Myw3ICs4OTIwLDcgQEAgRU9GCi0gCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICBycGF0aD0KLSAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgIGRvbmUKLSAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCi0gCWZpCi1AQCAtNzk1MSw3ICs4OTI4LDcgQEAgRU9GCi0gCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICBycGF0aD0KLSAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbwotLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgIGRvbmUKLSAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgotIAlmaQotQEAgLTc5NjYsNiArODk0MywxMyBAQCBFT0YKLSAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0Ci0gCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAotIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCi0rCi0rCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKwlmaQotKwotIAlleGl0ICRFWElUX1NVQ0NFU1MKLSAgICAgICBmaQotIAotQEAgLTc5OTksNiArODk4MywxMiBAQCBFT0YKLSAKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCi0gCi0rICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKLSsJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsgICAgICBmaQotKwotICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCi0gICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgotIAotQEAgLTgwOTYsNyArOTA4Niw3IEBAIEVPRgotIAllbHNlCi0gCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCi0gCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgotLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCi0rCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCi0gCSAgZmkKLSAJZmkKLSAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKLUBAIC04MTA0LDEwICs5MDk0LDEwIEBAIEVPRgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgotIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKLS0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAgICAgICBmaQotIAotICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotQEAgLTgxMTgsMTAgKzkxMDgsMTAgQEAgRU9GCi0gCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwotIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLS0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCWZpCi0gCi0gCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQotQEAgLTgxMzksNyArOTEyOSw3IEBAIEVPRgotIAllbHNlCi0gCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCi0gCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCi0gCSAgb2xkb2Jqcz0KLUBAIC04MTYzLDE4ICs5MTUzLDI4IEBAIEVPRgotIAkJZXNhYwotIAkgICAgICBkb25lCi0gCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKLS0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgotKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgotIAkgICAgICA7OwotLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZmkKLS0JZXZhbCAiY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAKLSAJZnVuY19sZW4gIiAkY21kcyIKLSAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKLSAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0gCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwotKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCi0rCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgotKwkgIGZvciBvYmogaW4gJG9sZG9ianMKLSsJICBkbwotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKLSsJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwotIAllbHNlCi0gCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKLSAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCi1AQCAtODE4OSw3ICs5MTg5LDcgQEAgRU9GCi0gCSAgZG8KLSAJICAgIGxhc3Rfb2xkb2JqPSRvYmoKLSAJICBkb25lCi0tCSAgZXZhbCAidGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCi0gCSAgbGVuMD0kZnVuY19sZW5fcmVzdWx0Ci0gCSAgbGVuPSRsZW4wCi1AQCAtODIwOCw3ICs5MjA4LDcgQEAgRU9GCi0gCQlSQU5MSUI9JHNhdmVfUkFOTElCCi0gCSAgICAgIGZpCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgICAgIG9iamxpc3Q9Ci0gCSAgICAgIGxlbj0kbGVuMAotIAkgICAgZmkKLUBAIC04MjE2LDkgKzkyMTYsOSBAQCBFT0YKLSAJICBSQU5MSUI9JHNhdmVfUkFOTElCCi0gCSAgb2xkb2Jqcz0kb2JqbGlzdAotIAkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCi0tCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc1wiIgotKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgZmkKLSAJZmkKLSAgICAgICBmaQotQEAgLTgyNjgsMTIgKzkyNjgsMjMgQEAgRU9GCi0gCSAgICAgICoubGEpCi0gCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSsJCTs7Ci0rCSAgICAgIC1MKikKLSsJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0gCQk7OwotLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgLVIqKQotKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSsJCTs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKLUBAIC04Mjg0LDEyICs5Mjk1LDE0IEBAIEVPRgotIAkgICAgICAqLmxhKQotIAkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSsKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotIAkJOzsKLS0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgotQEAgLTgzMDMsMTAgKzkzMTYsMTEgQEAgRU9GCi0gCQkjIHRoZSBsaWJyYXJ5OgotIAkJZnVuY19iYXNlbmFtZSAiJGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtODMxOCw3ICs5MzMyLDcgQEAgRU9GCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKLSAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKLSAJICAgIGRvbmUKLSAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgotIAkgICAgbmV3ZGxwcmVmaWxlcz0KLUBAIC04MzI3LDcgKzkzNDEsNyBAQCBFT0YKLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwotIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgotIAkgICAgZG9uZQotIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCi0gCSAgZmkKLUBAIC04NDEyLDcgKzk0MjYsNyBAQCByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgotICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSB9Ci0gCi0teyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgotK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgotICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KLSAKLSAKLUBAIC04NDMyLDkgKzk0NDYsOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgIGZvciBhcmcKLSAgICAgZG8KLSAgICAgICBjYXNlICRhcmcgaW4KLS0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLS0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OwotLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKLSsgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSsgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OwotKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKLSAgICAgICBlc2FjCi0gICAgIGRvbmUKLSAKLUBAIC04NDQzLDI0ICs5NDU3LDIzIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAgICAgcm1kaXJzPQotIAotLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgotICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0gICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCi0gICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgotLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgotKwlvZGlyPSIkb2JqZGlyIgotICAgICAgIGVsc2UKLS0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgotKwlvZGlyPSIkZGlyLyRvYmpkaXIiCi0gICAgICAgZmkKLSAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKLSAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKLSsgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCi0gCi0tICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCi0rICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSsgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KLSAJY2FzZSAiICRybWRpcnMgIiBpbgotLQkgICoiICRvYmpkaXIgIiopIDs7Ci0tCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7Ci0rCSAgKiIgJG9kaXIgIiopIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7Ci0gCWVzYWMKLSAgICAgICBmaQotIAotQEAgLTg0ODYsMTggKzk0OTksMTcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCi0gCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgotIAkgIGRvbmUKLS0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKLSAKLS0JICBjYXNlICIkbW9kZSIgaW4KLSsJICBjYXNlICIkb3B0X21vZGUiIGluCi0gCSAgY2xlYW4pCi0tCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KLS0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQotKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KLSAJICAgICoiICRkbG5hbWUgIiopIDs7Ci0tCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7Ci0rCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKLSAJICAgIGVzYWMKLS0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKLSsJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKLSAJICAgIDs7Ci0gCSAgdW5pbnN0YWxsKQotIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCi1AQCAtODUyNSwxOSArOTUzNywxOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0gCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCi0gCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKLSAJICBmaQotIAotIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLSAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCi0gCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKLSAJICBmaQotIAlmaQotIAk7OwotIAotICAgICAgICopCi0tCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCi0gCSAgbm9leGVuYW1lPSRuYW1lCi0gCSAgY2FzZSAkZmlsZSBpbgotIAkgICouZXhlKQotQEAgLTg1NDcsNyArOTU1OSw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCi0gCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCi1AQCAtODU1Niw3ICs5NTY4LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKLSAJICAgICAgcmVsaW5rX2NvbW1hbmQ9Ci0gCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCi0gCSAgICBlbHNlCi0gCSAgICAgIHJlbGlua19jb21tYW5kPQotIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKLUBAIC04NTY0LDEyICs5NTc2LDEyIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5Ci0gCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCi0gCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKLSAJICAgIGZpCi0gCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCi0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKLSAJICAgIGZpCi0gCSAgZmkKLSAJZmkKLUBAIC04NTc3LDcgKzk1ODksNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgICAgZXNhYwotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJwotICAgICBkb25lCi0tICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCi0gCi0gICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwotICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCi1AQCAtODU4OSwxNiArOTYwMCwxNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIAotLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCi0reyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgotICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQotIAotLXRlc3QgLXogIiRtb2RlIiAmJiB7Ci0rdGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7Ci0gICBoZWxwPSIkZ2VuZXJpY19oZWxwIgotICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKLSB9Ci0gCi0gdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0tICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCi0rICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgotIAotIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KLSAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgotZGlmZiAtLWdpdCBhL2x0b3B0aW9ucy5tNCBiL2x0b3B0aW9ucy5tNAotaW5kZXggNWVmMTJjZWQyYS4uMTdjZmQ1MWMwYiAxMDA2NDQKLS0tLSBhL2x0b3B0aW9ucy5tNAotKysrIGIvbHRvcHRpb25zLm00Ci1AQCAtOCw3ICs4LDcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKLSsjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAotIAotICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCi0gQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQotZGlmZiAtLWdpdCBhL2x0dmVyc2lvbi5tNCBiL2x0dmVyc2lvbi5tNAotaW5kZXggYmY4N2Y3NzEzMi4uOWM3YjVkNDExOCAxMDA2NDQKLS0tLSBhL2x0dmVyc2lvbi5tNAotKysrIGIvbHR2ZXJzaW9uLm00Ci1AQCAtNywxNyArNywxNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KLSsjIEBjb25maWd1cmVfaW5wdXRACi0gCi0tIyBzZXJpYWwgMzEzNCBsdHZlcnNpb24ubTQKLSsjIHNlcmlhbCAzMjkzIGx0dmVyc2lvbi5tNAotICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKLSAKLS1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuN2FdKQotLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMxMzRdKQotK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNF0pCi0rbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzI5M10pCi0gCi0gQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKLS1bbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rW21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQotIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCi0gXSkKLWRpZmYgLS1naXQgYS9sdH5vYnNvbGV0ZS5tNCBiL2x0fm9ic29sZXRlLm00Ci1pbmRleCBiZjkyYjVlMDc5Li5jNTczZGE5MGM1IDEwMDY0NAotLS0tIGEvbHR+b2Jzb2xldGUubTQKLSsrKyBiL2x0fm9ic29sZXRlLm00Ci1AQCAtNyw3ICs3LDcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAotKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKLSAKLSAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KLSAjCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQotaW5kZXggMGIzNTJhNDU0ZC4uN2VhZWE3ZGI3MyAxMDA3NTUKLS0tLSBhL29wY29kZXMvY29uZmlndXJlCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQotQEAgLTY1MCw2ICs2NTAsOSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSthY19jdF9BUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzYzLDYgKzc2Niw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlX3dlcnJvcgotQEAgLTE0MjMsNiArMTQyNyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTUxMTUsOCArNTEyMSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01MTU2LDcgKzUxNjIsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01ODQyLDggKzU4NDgsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTg5Miw2ICs1ODk4LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01OTA4LDYgKzU5ODgsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYwNzYsNyArNjE2MSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02MjMwLDYgKzYzMTYsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02MjQ1LDkgKzYzNDYsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYyNjMsNyArNjUxNyw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYyODMsMTEgKzY1MzcsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjMwMyw3ICs2NTYxLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYzMjIsNiArNjU4MCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjMzMywxNiArNjU5NSw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTY2ODQsOCArNzAwMiw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjcyMSw2ICs3MDM5LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTY3NjIsNiArNzA4MSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC02NzczLDcgKzcxMDQsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC02Nzk5LDggKzcxMzAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02ODEwLDggKzcxNDEsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC02ODQ4LDYgKzcxNzksMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC02ODY5LDYgKzcyMTAsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwotQEAgLTcwNzUsNiArNzQ1NSwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzYzOCw2ICs4MTM1LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc4MDMsNyArODMwMiw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03ODkyLDcgKzgzOTIsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgxOTAsOCArODY5MCw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODM1Nyw2ICs4ODU1LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODQxOSw3ICs4OTIzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg0NzYsMTMgKzg5ODAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODU0Myw2ICs5MDUxLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODg5Myw3ICs5NDA2LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODk5MiwxMiArOTUwNiwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MDExLDggKzk1MjUsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTAzMCw4ICs5NTQ0LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkwNzcsOCArOTU5MSw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MjA4LDcgKzk3MjIsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTIyMSwyMiArOTc0MSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTI0OCw3ICs5Nzc1LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MjYxLDIyICs5Nzk0LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTMyMSwyMCArOTg2MSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTkzOTUsNyArOTk3OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk0MDMsNyArOTk4Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk0MTksNyArMTAwMDIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTQ0MywxMCArMTAwMjYsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05NTI1LDIzICsxMDEwOCwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTYyNiw3ICsxMDIyMiw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk2NDUsOSArMTAyNDEsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAyMjMsOCArMTA4MTksOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAyNTcsMTMgKzEwODU0LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDM1NSw3ICsxMTAxMCw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTE5NSwxMCArMTE4NTAsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTMwMSwxMCArMTE5NTYsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjU0Myw3ICsxMzE5OCw3IEBAIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gIyBzaW5jZSBsaWJiZmQgbWF5IG5vdCBwdWxsIGluIHRoZSBlbnRpcmV0eSBvZiBsaWJpYmVydHkuCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gICBjYXNlICIke2hvc3R9IiBpbgotQEAgLTEzNTE4LDEzICsxNDE3MywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNTM5LDE0ICsxNDIwMSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzU3OSwxMiArMTQyNDQsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM2MzksOCArMTQzMDQsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEzNjUwLDEyICsxNDMyMCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTM2NzEsNyArMTQzNDMsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMzcwNyw2ICsxNDM3OCw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTQ0NjMsNyArMTUxMzUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE0NTY2LDE5ICsxNTIzOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNDYwOCw2ICsxNTMwNCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNDYxNyw2ICsxNTMxOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTQ3MzEsMTIgKzE1NDM2LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE0ODIzLDkgKzE1NTI4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTQ4NDEsNiArMTU1NDMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE0ODczLDIxMCArMTU1NzgsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlLmFjIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLWluZGV4IGI5ZjVlYjhhNGYuLmEzMWI2NmEyZjAgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLUBAIC0xNjcsNyArMTY3LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gY2hhbmdlcXVvdGUoWyxdKWRubAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gICBjYXNlICIke2hvc3R9IiBpbgotZGlmZiAtLWdpdCBhL3psaWIvY29uZmlndXJlIGIvemxpYi9jb25maWd1cmUKLWluZGV4IGJlZDllM2VhMmIuLmNhZWYwYjY3NGUgMTAwNzU1Ci0tLS0gYS96bGliL2NvbmZpZ3VyZQotKysrIGIvemxpYi9jb25maWd1cmUKLUBAIC02MTQsOCArNjE0LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTczNyw2ICs3NDAsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfaG9zdF9zaGFyZWQKLSAnCi1AQCAtMTM4NSw2ICsxMzg5LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtMzkxMCw4ICszOTE2LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTM5NTEsNyArMzk1Nyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTQ3NjcsOCArNDc3Myw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC00ODE3LDYgKzQ4MjMsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTQ4MzMsNiArNDkxMywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTAwMSw3ICs1MDg2LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTUxNTUsNiArNTI0MSwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTUxNzAsOSArNTI3MSwxNjMgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTE4OCw3ICs1NDQzLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNTIwOCwxMSArNTQ2MywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01MjI4LDcgKzU0ODcsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNTI0Nyw2ICs1NTA2LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC01MjU4LDE2ICs1NTIxLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNTYwOSw4ICs1OTI4LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC01NjQ2LDYgKzU5NjUsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNTY4Nyw2ICs2MDA3LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTU2OTgsNyArNjAzMCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTU3MjQsOCArNjA1Niw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTU3MzUsOCArNjA2Nyw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTU3NzMsNiArNjEwNSwxOSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTU3OTMsNiArNjEzOCw0MSBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotKwotIAotIAotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgotQEAgLTYwMDQsNiArNjM4NCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNjU3MCw2ICs3MDY3LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTcwMzMsNyArNzUzMiw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03MTIyLDcgKzc2MjIsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTc0MjAsOCArNzkyMCw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtNzU4Nyw2ICs4MDg1LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNzY0OSw3ICs4MTUzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTc3MDYsMTMgKzgyMTAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtNzc3Myw2ICs4MjgxLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODEyMyw3ICs4NjM2LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODIyMiwxMiArODczNiwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC04MjQxLDggKzg3NTUsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtODI2MCw4ICs4Nzc0LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTgzMDcsOCArODgyMSw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC04NDM4LDcgKzg5NTIsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg0NTQsMjIgKzg5NzQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTg0ODEsNyArOTAwOCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg0OTcsMjIgKzkwMzAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC04NTU3LDIwICs5MDk3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtODYzMSw3ICs5MjE0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtODYzOSw3ICs5MjIyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtODY1NSw3ICs5MjM4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTg2NzksMTAgKzkyNjIsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC04NzYxLDI2ICs5MzQ0LDM5IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTg4NjUsNyArOTQ2MSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTg4ODQsOSArOTQ4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC05NDYyLDggKzEwMDU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTk0OTYsMTMgKzEwMDkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC05NTk0LDcgKzEwMjQ5LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTEwNDUyLDEwICsxMTEwNywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEwNTU4LDEwICsxMTIxMywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExOTkyLDEzICsxMjY0NywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDEzLDE0ICsxMjY3NSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjA1MywxMiArMTI3MTgsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIxMTMsOCArMTI3NzgsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEyMTI0LDEyICsxMjc5NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTIxNDUsNyArMTI4MTcsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMjE4MSw2ICsxMjg1Miw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTI3NzAsNyArMTM0NDIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTEyODczLDE5ICsxMzU0Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xMjkxNSw2ICsxMzYxMSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xMjkyNCw2ICsxMzYyNiw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTMwMzgsMTIgKzEzNzQzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTEzMTMwLDkgKzEzODM1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTMxNDgsNiArMTM4NTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTEzMTgwLDIxMCArMTM4ODUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0OTIyNWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOWMzMTNlOGExNWE3ZTdjNWMwZjI5MDZlMzIxOGVkMjExNTYzYWMyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzc6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gQWRkIHRoZSBhcm12NWUgYXJjaGl0ZWN0dXJlIHRvIGJpbnV0aWxzCi0KLUJpbnV0aWxzIGhhcyBhIGNvbW1lbnQgdGhhdCBpbmRpY2F0ZXMgaXQgaXMgc3VwcG9zZWQgdG8gbWF0Y2ggZ2NjIGZvcgotYWxsIG9mIHRoZSBzdXBwb3J0ICItbWFyY2g9IiBzZXR0aW5ncywgYnV0IGl0IHdhcyBsYWNraW5nIHRoZSBhcm12NWUgc2V0dGluZy4KLVRoaXMgd2FzIGEgc2ltcGxlIHdheSB0byBhZGQgaXQsIGFzIHRodW1iIGluc3RydWN0aW9ucyBzaG91bGRuJ3QgYmUgZ2VuZXJhdGVkCi1ieSB0aGUgY29tcGlsZXIgYW55d2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZAotVXBzdHJlYW0gbWFpbnRhaW5lciBpbmRpY2F0ZWQgdGhhdCB3ZSBzaG91bGQgbm90IGJlIHVzaW5nIGFybXY1ZSwgZXZlbgotdGhvdWdoIGl0IGlzIGEgbGVnYWwgYXJjaGljdHVyZSBkZWZpbmVkIGJ5IG91ciBnY2MuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnYXMvY29uZmlnL3RjLWFybS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWFybS5jIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotaW5kZXggNjBiZGE1MTA3MC4uZWI2ZDBhZmQ2ZSAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWcvdGMtYXJtLmMKLSsrKyBiL2dhcy9jb25maWcvdGMtYXJtLmMKLUBAIC0yNTYzMyw2ICsyNTYzMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtX2FyY2hfb3B0aW9uX3RhYmxlIGFybV9hcmNoc1tdID0KLSAgIEFSTV9BUkNIX09QVCAoImFybXY0dCIsCUFSTV9BUkNIX1Y0VCwJIEZQVV9BUkNIX0ZQQSksCi0gICBBUk1fQVJDSF9PUFQgKCJhcm12NHR4bSIsCUFSTV9BUkNIX1Y0VHhNLAkgRlBVX0FSQ0hfRlBBKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY1IiwJQVJNX0FSQ0hfVjUsCSBGUFVfQVJDSF9WRlApLAotKyAgQVJNX0FSQ0hfT1BUICgiYXJtdjVlIiwJQVJNX0FSQ0hfVjVURSwJIEZQVV9BUkNIX1ZGUCksCi0gICBBUk1fQVJDSF9PUFQgKCJhcm12NXQiLAlBUk1fQVJDSF9WNVQsCSBGUFVfQVJDSF9WRlApLAotICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0eG0iLAlBUk1fQVJDSF9WNVR4TSwJIEZQVV9BUkNIX1ZGUCksCi0gICBBUk1fQVJDSF9PUFQgKCJhcm12NXRlIiwJQVJNX0FSQ0hfVjVURSwJIEZQVV9BUkNIX1ZGUCksCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYTIyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDMzMTQ0M2E4N2EzMWVjNTA0ZTU2NTJmYzA5OWQ5MTI5YTlhNGRlYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTVdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZworIGluc3RhbGxhdGlvbiBsb2NhdGlvbgorCitUaGFua3MgdG8gUlAgZm9yIGhlbHBpbmcgZmluZCB0aGUgc291cmNlIGNvZGUgY2F1c2luZyB0aGUgaXNzdWUuCisKKzIwMTAvMDgvMTMKK05pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJpYmVydHkvTWFrZWZpbGUuaW4gfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgoraW5kZXggMjVjZmEyOWFkNS4uY2U2N2E3MTBlMyAxMDA2NDQKKy0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgorKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitAQCAtMzY0LDcgKzM2NCw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKKyAjIG11bHRpbGliLXNwZWNpZmljIGZsYWdzLCBpdCdzIG92ZXJyaWRkZW4gYnkgRkxBR1NfVE9fUEFTUyBmcm9tIHRoZQorICMgZGVmYXVsdCBtdWx0aWxpYiwgc28gd2UgaGF2ZSB0byB0YWtlIENGTEFHUyBpbnRvIGFjY291bnQgYXMgd2VsbCwKKyAjIHNpbmNlIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSBtdWx0aWxpYiBmbGFncy4KKy1NVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorKyNNVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorK01VTFRJT1NESVIgPSAiIgorIGluc3RhbGxfdG9fbGliZGlyOiBhbGwKKyAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKKyAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzQwNTkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAyYmU5YjQ0YTRhMzA4ZTNlYTQyYTAyN2M0YzMyMTExNzBmMTBjOWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozOTowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzE1XSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcKLSBpbnN0YWxsYXRpb24gbG9jYXRpb24KLQotVGhhbmtzIHRvIFJQIGZvciBoZWxwaW5nIGZpbmQgdGhlIHNvdXJjZSBjb2RlIGNhdXNpbmcgdGhlIGlzc3VlLgotCi0yMDEwLzA4LzEzCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliaWJlcnR5L01ha2VmaWxlLmluIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvTWFrZWZpbGUuaW4gYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KLWluZGV4IDBmZjllNDVlNDUuLjQyYzMyNjQyYjIgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotQEAgLTM2Niw3ICszNjYsOCBAQCBpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCi0gIyBtdWx0aWxpYi1zcGVjaWZpYyBmbGFncywgaXQncyBvdmVycmlkZGVuIGJ5IEZMQUdTX1RPX1BBU1MgZnJvbSB0aGUKLSAjIGRlZmF1bHQgbXVsdGlsaWIsIHNvIHdlIGhhdmUgdG8gdGFrZSBDRkxBR1MgaW50byBhY2NvdW50IGFzIHdlbGwsCi0gIyBzaW5jZSBpdCB3aWxsIGJlIHBhc3NlZCB0aGUgbXVsdGlsaWIgZmxhZ3MuCi0tTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLSsjTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLStNVUxUSU9TRElSID0gIiIKLSBpbnN0YWxsX3RvX2xpYmRpcjogYWxsCi0gCWlmIHRlc3QgLW4gIiR7dGFyZ2V0X2hlYWRlcl9kaXJ9IjsgdGhlbiBcCi0gCQkke21raW5zdGFsbGRpcnN9ICQoREVTVERJUikkKGxpYmRpcikvJChNVUxUSU9TRElSKTsgXAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGUyNTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKQEAgLTAsMCArMSwyNzMgQEAKK0Zyb20gMGE0YWZkY2YwNzAwZWZkNDU5NjM1NjhlMmQwMDQ5MTI3Y2RmNDQzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZworCisyMDA4LTA3LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNi0xMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBsZC8KKyAgICAqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGQudGV4aW5mbyAoLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCisgICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjaworICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCisgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCisgICAgKGxkX29wdGlvbnMpOiBBZGQgLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgorICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCisKKzIwMDctMDQtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgTWVyZ2UgZnJvbSBTb3VyY2VyeSBHKysgYmludXRpbHMgMi4xNzoKKworICAgIDIwMDctMDMtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorICAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4uCisgICAgbGQvCisgICAgKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBOZXcgb3B0aW9uLgorICAgICogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisgICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBJZgorICAgIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIGRlZmluZWQsIHdhcm4gZm9yIHVzZSBvZiAvbGliLAorICAgIC91c3IvbGliLCAvdXNyL2xvY2FsL2xpYiBvciAvdXNyL1gxMVI2L2xpYi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxkL2NvbmZpZy5pbiAgICB8ICAzICsrKworIGxkL2NvbmZpZ3VyZSAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBsZC9jb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCisgbGQvbGQuaCAgICAgICAgIHwgIDggKysrKysrKysKKyBsZC9sZC50ZXhpbmZvICAgfCAxMiArKysrKysrKysrKysKKyBsZC9sZGZpbGUuYyAgICAgfCAxNyArKysrKysrKysrKysrKysrKworIGxkL2xkbGV4LmggICAgICB8ICAyICsrCisgbGQvbGRtYWluLmMgICAgIHwgIDIgKysKKyBsZC9sZXhzdXAuYyAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgOSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KK2luZGV4IGE4NDY3NDNkYTYuLmRmM2NkNWZiNjAgMTAwNjQ0CistLS0gYS9sZC9jb25maWcuaW4KKysrKyBiL2xkL2NvbmZpZy5pbgorQEAgLTI3LDYgKzI3LDkgQEAKKyAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCisgI3VuZGVmIEVOQUJMRV9OTFMKKyAKKysvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcyAqLworKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKworIC8qIEFkZGl0aW9uYWwgZXh0ZW5zaW9uIGEgc2hhcmVkIG9iamVjdCBtaWdodCBoYXZlLiAqLworICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KKyAKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKK2luZGV4IDRlNzE1MTFiZDEuLjcxYzZhZDFmZDEgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTc4OSw2ICs3ODksNyBAQCB3aXRoX2xpYl9wYXRoCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorIHdpdGhfc3lzcm9vdAorK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX2dvbGQKKyBlbmFibGVfZ290CisgZW5hYmxlX2NvbXByZXNzZWRfZGVidWdfc2VjdGlvbnMKK0BAIC0xNDQ4LDYgKzE0NDksOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKKyAgIC0tZW5hYmxlLXRhcmdldHMgICAgICAgIGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworICAgLS1lbmFibGUtNjQtYml0LWJmZCAgICAgNjQtYml0IHN1cHBvcnQgKG9uIGhvc3RzIHdpdGggbmFycm93ZXIgd29yZCBzaXplcykKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLWdvbGRbPUFSR10gICAgIGJ1aWxkIGdvbGQgW0FSRz17ZGVmYXVsdCx5ZXMsbm99XQorICAgLS1lbmFibGUtZ290PTx0eXBlPiAgICAgR09UIGhhbmRsaW5nIHNjaGVtZSAodGFyZ2V0LCBzaW5nbGUsIG5lZ2F0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlnb3QpCitAQCAtMTYzMTUsNiArMTYzMTgsMTkgQEAgZmkKKyAKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ29sZCB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCitpbmRleCAwMDA4MGY4NWZkLi4zYWE5OGUzN2ZiIDEwMDY0NAorLS0tIGEvbGQvY29uZmlndXJlLmFjCisrKysgYi9sZC9jb25maWd1cmUuYWMKK0BAIC05NSw2ICs5NSwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKKyBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1QpCisgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSksLAorKyAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgIFsxXSwKKysgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSkKKytmaQorKworIGRubCBVc2UgLS1lbmFibGUtZ29sZCB0byBkZWNpZGUgaWYgdGhpcyBsaW5rZXIgc2hvdWxkIGJlIHRoZSBkZWZhdWx0LgorIGRubCAiaW5zdGFsbF9hc19kZWZhdWx0IiBpcyBzZXQgdG8gZmFsc2UgaWYgZ29sZCBpcyB0aGUgZGVmYXVsdCBsaW5rZXIuCisgZG5sICJpbnN0YWxsZWRfbGlua2VyIiBpcyB0aGUgaW5zdGFsbGVkIEJGRCBsaW5rZXIgbmFtZS4KK2RpZmYgLS1naXQgYS9sZC9sZC5oIGIvbGQvbGQuaAoraW5kZXggYzZmYTEyNDdmMC4uMDFjMzczNDk4ZiAxMDA2NDQKKy0tLSBhL2xkL2xkLmgKKysrKyBiL2xkL2xkLmgKK0BAIC0xNzQsNiArMTc0LDE0IEBAIHR5cGVkZWYgc3RydWN0CisgICAgICBpbiB0aGUgbGlua2VyIHNjcmlwdC4gICovCisgICBiZmRfYm9vbGVhbiBmb3JjZV9ncm91cF9hbGxvY2F0aW9uOworIAorKyAgLyogSWYgVFJVRSAodGhlIGRlZmF1bHQpIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4KKysgICAgIGNyb3NzIGxpbmtpbmcuICAqLworKyAgYmZkX2Jvb2xlYW4gcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKysKKysgIC8qIElmIFRSVUUgKGRlZmF1bHQgRkFMU0UpIGdpdmUgYW4gZXJyb3IgZm9yIHVzZXMgb2Ygc3lzdGVtCisrICAgICBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcgaW5zdGVhZCBvZiBhIHdhcm5pbmcuICAqLworKyAgYmZkX2Jvb2xlYW4gZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKysKKyAgIC8qIEJpZyBvciBsaXR0bGUgZW5kaWFuIGFzIHNldCBvbiBjb21tYW5kIGxpbmUuICAqLworICAgZW51bSBlbmRpYW5fZW51bSBlbmRpYW47CisgCitkaWZmIC0tZ2l0IGEvbGQvbGQudGV4aW5mbyBiL2xkL2xkLnRleGluZm8KK2luZGV4IGViZTdlN2I3YmQuLjMzYWEyYzYyZmEgMTAwNjQ0CistLS0gYS9sZC9sZC50ZXhpbmZvCisrKysgYi9sZC9sZC50ZXhpbmZvCitAQCAtMjQ4MCw2ICsyNDgwLDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgorIAorIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55CisgQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCisrCisrQGtpbmRleCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAaXRlbSAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgc3VjaCBhcworK0BmaWxley91c3IvbGlifSB3aGVuIGNyb3NzIGxpbmtpbmcuICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlCisraW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2ggZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdAorK2xpYnJhcmllcyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisrQGtpbmRleCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAaXRlbSAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytHaXZlIGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nCisrc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZy4KKyBAZW5kIHRhYmxlCisgCisgQGMgbWFuIGVuZAorZGlmZiAtLWdpdCBhL2xkL2xkZmlsZS5jIGIvbGQvbGRmaWxlLmMKK2luZGV4IDNiMzdhMGEzZTIuLjVjODViMDE4NDkgMTAwNjQ0CistLS0gYS9sZC9sZGZpbGUuYworKysrIGIvbGQvbGRmaWxlLmMKK0BAIC0xMTYsNiArMTE2LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQorICAgICBuZXdfZGlycy0+bmFtZSA9IGNvbmNhdCAobGRfc3lzcm9vdCwgbmFtZSArIHN0cmxlbiAoIiRTWVNST09UIiksIChjb25zdCBjaGFyICopIE5VTEwpOworICAgZWxzZQorICAgICBuZXdfZGlycy0+bmFtZSA9IHhzdHJkdXAgKG5hbWUpOworKworKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyAgaWYgKGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisrICAmJiAoKCFzdHJuY21wIChuYW1lLCAiL2xpYiIsIDQpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbGliIiwgOCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9sb2NhbC9saWIiLCAxNCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9YMTFSNi9saWIiLCAxNCkpKSkKKysgICB7CisrICAgICBpZiAoY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCisrICAgICAgIGVpbmZvIChfKCIlWCVQOiBlcnJvcjogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7CisrICAgICBlbHNlCisrICAgICAgIGVpbmZvIChfKCIlUDogd2FybmluZzogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7CisrICAgfQorKyNlbmRpZgorKworIH0KKyAKKyAvKiBUcnkgdG8gb3BlbiBhIEJGRCBmb3IgYSBsYW5nX2lucHV0X3N0YXRlbWVudC4gICovCitkaWZmIC0tZ2l0IGEvbGQvbGRsZXguaCBiL2xkL2xkbGV4LmgKK2luZGV4IDVhYTdmNmJjM2UuLmNiNjU1ZTAzOTkgMTAwNjQ0CistLS0gYS9sZC9sZGxleC5oCisrKysgYi9sZC9sZGxleC5oCitAQCAtMTQ3LDYgKzE0Nyw4IEBAIGVudW0gb3B0aW9uX3ZhbHVlcworICAgT1BUSU9OX1JFUVVJUkVfREVGSU5FRF9TWU1CT0wsCisgICBPUFRJT05fT1JQSEFOX0hBTkRMSU5HLAorICAgT1BUSU9OX0ZPUkNFX0dST1VQX0FMTE9DQVRJT04sCisrICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKKysgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorIH07CisgCisgLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCitkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYworaW5kZXggMmIwOWYyMDQxMy4uODllMmEzYTgwNSAxMDA2NDQKKy0tLSBhL2xkL2xkbWFpbi5jCisrKysgYi9sZC9sZG1haW4uYworQEAgLTI2MSw2ICsyNjEsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOworICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7CisrICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7CisrICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOworIAorICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQorZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKK2luZGV4IGVmZmEyNzdiMTYuLmU0OTI5NjA3ZTkgMTAwNjQ0CistLS0gYS9sZC9sZXhzdXAuYworKysrIGIvbGQvbGV4c3VwLmMKK0BAIC01MzgsNiArNTM4LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9CisgICB7IHsib3JwaGFuLWhhbmRsaW5nIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9PUlBIQU5fSEFORExJTkd9LAorICAgICAnXDAnLCBOXygiPU1PREUiKSwgTl8oIkNvbnRyb2wgaG93IG9ycGhhbiBzZWN0aW9ucyBhcmUgaGFuZGxlZC4iKSwKKyAgICAgVFdPX0RBU0hFUyB9LAorKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKKysgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisrICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCisrICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisgfTsKKyAKKyAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQorQEAgLTE1NjgsNiArMTU3NiwxNCBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKKyAJICAgIGVpbmZvIChfKCIlUCVGOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiIKKyAJCSAgICAgIiBcIi0tb3JwaGFuLWhhbmRsaW5nXCJcbiIpKTsKKyAJICBicmVhazsKKysKKysJY2FzZSBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKKysJICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOworKwkgIGJyZWFrOworKworKwljYXNlIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgorKwkgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKysJICBicmVhazsKKyAJfQorICAgICB9CisgCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk2MjQyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDg4ZmFjMDhmMWM0NzJjNjEyZjM4MWNiYjk0MDg3NTZmMmY1OGI0ZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCisKK0VuYWJsaW5nIHN5c3Jvb3Qgc3VwcG9ydCBpbiBsaWJ0b29sIGV4cG9zZWQgYSBidWcgd2hlcmUgdGhlIGZpbmFsCitsaWJyYXJ5IGhhZCBhbiBSUEFUSCBlbmNvZGVkIGludG8gaXQgd2hpY2ggc3RpbGwgcG9pbnRlZCB0byB0aGUKK3N5c3Jvb3QuIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBpc3N1ZSB1bnRpbCBpdCBnZXRzIHNvcnRlZCBvdXQKK3Vwc3RyZWFtLgorCitGaXggc3VnZ2VzdGVkIGJ5IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAxMCArKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNzBlODU2ZTA2NS4uMTFlZTY4NGNjYyAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtODAzNSw5ICs4MDM1LDExIEBAIEVPRgorIAkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKyAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKysJCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKy0JCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorLQkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKyAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorIAkJZWxzZQorQEAgLTg3NzAsNiArODc3MiwxMCBAQCBFT0YKKyAgICAgICBoYXJkY29kZV9saWJkaXJzPQorICAgICAgIGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGggJGZpbmFsaXplX3JwYXRoOyBkbworIAlpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKysJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKKysJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzc0YWQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjczICswLDAgQEAKLUZyb20gYjFhYjE3YWJlNDEyODY4NGYxOTc3NTQ0ODU0NTE3NmZiMmE1ZTI3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZwotCi0yMDA4LTA3LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNi0xMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBsZC8KLSAgICAqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGQudGV4aW5mbyAoLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCi0gICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjawotICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCi0gICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCi0gICAgKGxkX29wdGlvbnMpOiBBZGQgLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgotICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCi0KLTIwMDctMDQtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgTWVyZ2UgZnJvbSBTb3VyY2VyeSBHKysgYmludXRpbHMgMi4xNzoKLQotICAgIDIwMDctMDMtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotICAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4uCi0gICAgbGQvCi0gICAgKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBOZXcgb3B0aW9uLgotICAgICogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0gICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBJZgotICAgIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIGRlZmluZWQsIHdhcm4gZm9yIHVzZSBvZiAvbGliLAotICAgIC91c3IvbGliLCAvdXNyL2xvY2FsL2xpYiBvciAvdXNyL1gxMVI2L2xpYi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGxkL2NvbmZpZy5pbiAgICB8ICAzICsrKwotIGxkL2NvbmZpZ3VyZSAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSBsZC9jb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCi0gbGQvbGQuaCAgICAgICAgIHwgIDggKysrKysrKysKLSBsZC9sZC50ZXhpbmZvICAgfCAxMiArKysrKysrKysrKysKLSBsZC9sZGZpbGUuYyAgICAgfCAxNyArKysrKysrKysrKysrKysrKwotIGxkL2xkbGV4LmggICAgICB8ICAyICsrCi0gbGQvbGRtYWluLmMgICAgIHwgIDIgKysKLSBsZC9sZXhzdXAuYyAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gOSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KLWluZGV4IDJjNmQ2OThiNmMuLmQzY2I3ZTg4MmQgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWcuaW4KLSsrKyBiL2xkL2NvbmZpZy5pbgotQEAgLTE3LDYgKzE3LDkgQEAKLSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCi0gI3VuZGVmIEVOQUJMRV9OTFMKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcyAqLwotKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKwotIC8qIEFkZGl0aW9uYWwgZXh0ZW5zaW9uIGEgc2hhcmVkIG9iamVjdCBtaWdodCBoYXZlLiAqLwotICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KLSAKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IDQyNzdiNzRiYWQuLjYzMTA5NjQ0YjYgMTAwNzU1Ci0tLS0gYS9sZC9jb25maWd1cmUKLSsrKyBiL2xkL2NvbmZpZ3VyZQotQEAgLTc5Myw2ICs3OTMsNyBAQCB3aXRoX2xpYl9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotIHdpdGhfc3lzcm9vdAotK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0gZW5hYmxlX2dvbGQKLSBlbmFibGVfZ290Ci0gZW5hYmxlX2NvbXByZXNzZWRfZGVidWdfc2VjdGlvbnMKLUBAIC0xNDUwLDYgKzE0NTEsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKLSAgIC0tZW5hYmxlLXRhcmdldHMgICAgICAgIGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotICAgLS1lbmFibGUtNjQtYml0LWJmZCAgICAgNjQtYml0IHN1cHBvcnQgKG9uIGhvc3RzIHdpdGggbmFycm93ZXIgd29yZCBzaXplcykKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMKLSAgIC0tZW5hYmxlLWdvbGRbPUFSR10gICAgIGJ1aWxkIGdvbGQgW0FSRz17ZGVmYXVsdCx5ZXMsbm99XQotICAgLS1lbmFibGUtZ290PTx0eXBlPiAgICAgR09UIGhhbmRsaW5nIHNjaGVtZSAodGFyZ2V0LCBzaW5nbGUsIG5lZ2F0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlnb3QpCi1AQCAtMTYzMTQsNiArMTYzMTcsMTkgQEAgZmkKLSAKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ29sZCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCi1pbmRleCAzNmE5ZjUwODNhLi40N2YxZDMzZmE1IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLmFjCi0rKysgYi9sZC9jb25maWd1cmUuYWMKLUBAIC05NSw2ICs5NSwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1QpCi0gQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgIFsxXSwKLSsgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSkKLStmaQotKwotIGRubCBVc2UgLS1lbmFibGUtZ29sZCB0byBkZWNpZGUgaWYgdGhpcyBsaW5rZXIgc2hvdWxkIGJlIHRoZSBkZWZhdWx0LgotIGRubCAiaW5zdGFsbF9hc19kZWZhdWx0IiBpcyBzZXQgdG8gZmFsc2UgaWYgZ29sZCBpcyB0aGUgZGVmYXVsdCBsaW5rZXIuCi0gZG5sICJpbnN0YWxsZWRfbGlua2VyIiBpcyB0aGUgaW5zdGFsbGVkIEJGRCBsaW5rZXIgbmFtZS4KLWRpZmYgLS1naXQgYS9sZC9sZC5oIGIvbGQvbGQuaAotaW5kZXggMTA0YmI4ZTIzNy4uNzRjOTE0YmRkNSAxMDA2NDQKLS0tLSBhL2xkL2xkLmgKLSsrKyBiL2xkL2xkLmgKLUBAIC0xNzIsNiArMTcyLDE0IEBAIHR5cGVkZWYgc3RydWN0Ci0gICAvKiBJZiBzZXQsIGRpc3BsYXkgdGhlIHRhcmdldCBtZW1vcnkgdXNhZ2UgKHBlciBtZW1vcnkgcmVnaW9uKS4gICovCi0gICBiZmRfYm9vbGVhbiBwcmludF9tZW1vcnlfdXNhZ2U7Ci0gCi0rICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgotKyAgICAgY3Jvc3MgbGlua2luZy4gICovCi0rICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KLSsgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCi0rICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCi0gICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKLSAKLWRpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbwotaW5kZXggZDM5M2FjZGQ5NC4uYmE5OTViMWUzYSAxMDA2NDQKLS0tLSBhL2xkL2xkLnRleGluZm8KLSsrKyBiL2xkL2xkLnRleGluZm8KLUBAIC0yNDAzLDYgKzI0MDMsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCi0gCi0gUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKLSBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KLSsKLStAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCi0rQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKLStpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0Ci0rbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLStAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKLStzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgotIEBlbmQgdGFibGUKLSAKLSBAYyBtYW4gZW5kCi1kaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggMDk0M2JiMmRmYS4uOTU4NzRjNzVkZSAxMDA2NDQKLS0tLSBhL2xkL2xkZmlsZS5jCi0rKysgYi9sZC9sZGZpbGUuYwotQEAgLTExNCw2ICsxMTQsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCi0gICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgMSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7Ci0gICBlbHNlCi0gICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSsgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCi0rICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQotKyAgIHsKLSsgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICAgIGVsc2UKLSsgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICB9Ci0rI2VuZGlmCi0rCi0gfQotIAotIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KLWRpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAotaW5kZXggM2VjYWMyYmM4Ni4uMzQxMTdmNDNhNSAxMDA2NDQKLS0tLSBhL2xkL2xkbGV4LmgKLSsrKyBiL2xkL2xkbGV4LmgKLUBAIC0xNDYsNiArMTQ2LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCi0gICBPUFRJT05fUFJJTlRfTUVNT1JZX1VTQUdFLAotICAgT1BUSU9OX1JFUVVJUkVfREVGSU5FRF9TWU1CT0wsCi0gICBPUFRJT05fT1JQSEFOX0hBTkRMSU5HLAotKyAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCi0rICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKLSB9OwotIAotIC8qIFRoZSBpbml0aWFsIHBhcnNlciBzdGF0ZXMuICAqLwotZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKLWluZGV4IDFlNDhiMWEyZGIuLjIxZjI3YmFjZjEgMTAwNjQ0Ci0tLS0gYS9sZC9sZG1haW4uYwotKysrIGIvbGQvbGRtYWluLmMKLUBAIC0yNzAsNiArMjcwLDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgY29tbWFuZF9saW5lLndhcm5fbWlzbWF0Y2ggPSBUUlVFOwotICAgY29tbWFuZF9saW5lLndhcm5fc2VhcmNoX21pc21hdGNoID0gVFJVRTsKLSAgIGNvbW1hbmRfbGluZS5jaGVja19zZWN0aW9uX2FkZHJlc3NlcyA9IC0xOwotKyAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOwotKyAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKLSAKLSAgIC8qIFdlIGluaXRpYWxpemUgREVNQU5HTElORyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgIENPTExFQ1RfTk9fREVNQU5HTEUuICBUaGUgZ2NjIGNvbGxlY3QyIHByb2dyYW0gd2lsbCBkZW1hbmdsZSB0aGUKLWRpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCi1pbmRleCAwYjdkNDk3NmFjLi5kZWRjMDdhMTQzIDEwMDY0NAotLS0tIGEvbGQvbGV4c3VwLmMKLSsrKyBiL2xkL2xleHN1cC5jCi1AQCAtNTM1LDYgKzUzNSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQotICAgeyB7Im9ycGhhbi1oYW5kbGluZyIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fT1JQSEFOX0hBTkRMSU5HfSwKLSAgICAgJ1wwJywgTl8oIj1NT0RFIiksIE5fKCJDb250cm9sIGhvdyBvcnBoYW4gc2VjdGlvbnMgYXJlIGhhbmRsZWQuIiksCi0gICAgIFRXT19EQVNIRVMgfSwKLSsgIHsgeyJuby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0rICAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCi0rICAgICdcMCcsIE5VTEwsIE5fKCJEbyBub3Qgd2FybiBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKLSsgICAgVFdPX0RBU0hFUyB9LAotKyAgeyB7ImVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKLSsgICAgKyAgICAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAotKyAgICAnXDAnLCBOVUxMLCBOXygiR2l2ZSBhbiBlcnJvciBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKLSsgICAgVFdPX0RBU0hFUyB9LAotIH07Ci0gCi0gI2RlZmluZSBPUFRJT05fQ09VTlQgQVJSQVlfU0laRSAobGRfb3B0aW9ucykKLUBAIC0xNTYyLDYgKzE1NzAsMTQgQEAgcGFyc2VfYXJncyAodW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICBlaW5mbyAoXygiJVAlRjogaW52YWxpZCBhcmd1bWVudCB0byBvcHRpb24iCi0gCQkgICAgICIgXCItLW9ycGhhbi1oYW5kbGluZ1wiXG4iKSk7Ci0gCSAgYnJlYWs7Ci0rCi0rCWNhc2UgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6Ci0rCSAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKLSsJICBicmVhazsKLSsKLSsJY2FzZSBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKLSsJICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7Ci0rCSAgYnJlYWs7Ci0gCX0KLSAgICAgfQotIAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODdhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSA0OTc2NjBiZGJlYjY3ODg3ODY1NTNhNWQ3MzMxMDVmN2Y4OThkYzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAorU3ViamVjdDogW1BBVENIIDExLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eAorCit3ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW11bGF0aW9ucyB0byBiZSBONjQgaW5zdGVhZCBvZiBOMzIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJmZC9jb25maWcuYmZkICAgfCA4ICsrKystLS0tCisgbGQvY29uZmlndXJlLnRndCB8IDggKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKK2luZGV4IGRjMjRhYWJhZDUuLjQ1MTEwMjRmMjIgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlnLmJmZAorKysrIGIvYmZkL2NvbmZpZy5iZmQKK0BAIC0xMTg2LDEyICsxMTg2LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCisgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqZWwtKi1saW51eCopCistICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjCistICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKKysgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2xlX3ZlYworKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorICAgICA7OworICAgbWlwczY0Ki0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9iZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfYmVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisgICAgIDs7CisgICBtaXBzKmVsLSotbGludXgqKQorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfbGVfdmVjCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IDQ3YzcxOWNkMDUuLmZlN2I5MjM4YjIgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUudGd0CisrKysgYi9sZC9jb25maWd1cmUudGd0CitAQCAtNTMwLDExICs1MzAsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKKyBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKKyAJCSAgICAgICAgdGFyZ19leHRyYV9lbXVscz0iZWxmMzJlbG1pcHZ4d29ya3MiIDs7CisgbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcyA7OworLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgorK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgorIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OworLW1pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXBuMzIKKy0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKKyttaXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0YnRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRsdHNtaXAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7CisgbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAorIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDllZjUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gNGZlMTNhMzY5OTcyNTNhNWM5MWJjYjA4NmFlYjM5MmFiMjA5NWY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xNV0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKLQotRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKLWxpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQotc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAotdXBzdHJlYW0uCi0KLUZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCi0gCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCi0rCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0tCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0gCQllbHNlCi1AQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgotICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9Ci0gICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCi0gCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0rCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgotKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0gCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM1ZTU4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0wLDAgKzEsMzkzIEBACitGcm9tIDhjNjBhNTVkMzY3ODU4OWQ5MzczOWJkMjdmZWMyMTY5MTFkODA5NjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDEyLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCisKK1BhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+CisKK1VzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQorTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KKworVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCithc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKworIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKKyBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCisgYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKKyBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KKyBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKworIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKKyBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCisgZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCisgaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKworIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8ICA2ICsrKysrKworIGxkL2NvbmZpZ3VyZS50Z3QgICAgICB8ICAyICsrCisgb3Bjb2Rlcy9taXBzLWRpcy5jICAgIHwgMTIgKysrKystLS0tLS0tCisgb3Bjb2Rlcy9taXBzLW9wYy5jICAgIHwgMzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDE0IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAoraW5kZXggM2QzOGZkYTE0Yi4uMGFlYzQ5YmJiMyAxMDA2NDQKKy0tLSBhL2JmZC9hb3V0eC5oCisrKysgYi9iZmQvYW91dHguaAorQEAgLTgxNCw2ICs4MTQsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKKyAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKKyAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKKyAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKKysJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKKyAJICAvKiBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIE1JUFMzLCBNSVBTNCwgTUlQUzE2LCBNSVBTMzIsIGV0Yy4gICovCisgCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYworaW5kZXggNDMzYjk1ZmEwOC4uMDYzYjc5NDNhMSAxMDA2NDQKKy0tLSBhL2JmZC9hcmNodXJlcy5jCisrKysgYi9iZmQvYXJjaHVyZXMuYworQEAgLTIwMSw2ICsyMDEsNyBAQCBERVNDUklQVElPTgorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIHsqIGRlY2ltYWwgJ1hMUicgICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIHsqIGRlY2ltYWwgJ0lBMicgICp9CisrLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcgICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CitkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKK2luZGV4IGQxMjZhZWQwODYuLjJiNzUzYjNhOTMgMTAwNjQ0CistLS0gYS9iZmQvYmZkLWluMi5oCisrKysgYi9iZmQvYmZkLWluMi5oCitAQCAtMjA2MCw2ICsyMDYwLDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMworICNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIC8qIGRlY2ltYWwgJ1hMUicgICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJyAgKi8KKysjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnICAqLworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAorZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKK2luZGV4IDQ1MTEwMjRmMjIuLmYwZjkwNzJmMTAgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlnLmJmZAorKysrIGIvYmZkL2NvbmZpZy5iZmQKK0BAIC0xMTY5LDYgKzExNjksMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKKyAgICAgOzsKKysgIG1pcHNpc2E2NCotKi1lbGYqKQorKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCisrCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrCXdhbnQ2ND10cnVlCisrCTs7CisgICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKK2RpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCitpbmRleCAyNDkzMDk0YmVmLi44Mzc1ZDFhZTk2IDEwMDY0NAorLS0tIGEvYmZkL2NwdS1taXBzLmMKKysrKyBiL2JmZC9jcHUtbWlwcy5jCitAQCAtMTA1LDcgKzEwNSw4IEBAIGVudW0KKyAgIElfbWlwc29jdGVvbjMsCisgICBJX3hsciwKKyAgIElfaW50ZXJhcHRpdl9tcjIsCistICBJX21pY3JvbWlwcworKyAgSV9taWNyb21pcHMsCisrICBJX3hscAorIH07CisgCisgI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKK0BAIC0xNTgsNyArMTU5LDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQorICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwgICAgICAgRkFMU0UsIE5OKElfeGxyKSksCisgICBOICgzMiwgMzIsIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIsICJtaXBzOmludGVyYXB0aXYtbXIyIiwgRkFMU0UsCisgICAgICBOTihJX2ludGVyYXB0aXZfbXIyKSksCistICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsMCkKKysgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSxOTihJX21pY3JvbWlwcykpLAorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgICAgICBGQUxTRSwgMCkKKyB9OworIAorIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKK2RpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYworaW5kZXggZmRkZjY4YzgxNi4uMzU0Yzg1ZDAwYiAxMDA2NDQKKy0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKKysrKyBiL2JmZC9lbGZ4eC1taXBzLmMKK0BAIC02Nzk2LDYgKzY3OTYsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQorICAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOgorICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyOworIAorKyAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDoKKysgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHA7CisrCisgICAgIGRlZmF1bHQ6CisgICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKKyAJeworQEAgLTExOTU2LDYgKzExOTU5LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQorICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOworICAgICAgIGJyZWFrOworIAorKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgorKwkgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9YTFA7CisrCSAgYnJlYWs7CisrCisgICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgorICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOworICAgICAgIGJyZWFrOworQEAgLTEzOTg5LDYgKzEzOTk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQorICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbnAsIGJmZF9tYWNoX21pcHNfb2N0ZW9uIH0sCisgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9uLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorICAgeyBiZmRfbWFjaF9taXBzX2xvb25nc29uXzNhLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorKyAgeyBiZmRfbWFjaF9taXBzX3hscCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKKyAKKyAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KKyAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAorZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYworaW5kZXggMmIxNWYwZjJjYi4uMDkyNzQ0NzA4ZSAxMDA2NDQKKy0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYworKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCitAQCAtMzMzNSw2ICszMzM1LDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7CisgCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7CisgCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOworKwkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxwIik7IGJyZWFrOworIAkgICAgY2FzZSAwOgorIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKKyAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQorZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKK2luZGV4IDM4MDRkZjI5NTguLjk1NzZjOTg2ZGIgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYworKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKK0BAIC01NTIsNiArNTUyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1JNNzAwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9WUjU1MDAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICkKKyAKKyAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKK0BAIC01ODEsNiArNTgyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CisgICAgICYmIG1pcHNfb3B0cy5pc2EgIT0gSVNBX01JUFMzKSAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9SNDMwMCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICkKKyAKKyAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKK0BAIC0xOTczOCw3ICsxOTc0MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQorICAgLyogQnJvYWRjb20gWExQLgorICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCisgICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLworLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKKysgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCisgCisgICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLworICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAorZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCitpbmRleCA4MWRkNGNiZDk3Li45NWJkZjNiMTliIDEwMDc1NQorLS0tIGEvZ2FzL2NvbmZpZ3VyZQorKysrIGIvZ2FzL2NvbmZpZ3VyZQorQEAgLTEyOTg5LDYgKzEyOTg5LDkgQEAgX0FDRU9GCisgCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQorIAkgICAgbWlwc19jcHU9bWlwczY0cjYKKyAJICAgIDs7CisrCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQorKwkJbWlwc19jcHU9eGxwCisrCQk7OworIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKKyAJICAgIG1pcHNfY3B1PXIzOTAwCisgCSAgICA7OworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAoraW5kZXggYTRiZWE0M2ZmOC4uNzNkOTA0ZTI1ZiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAorKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitAQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQorICNkZWZpbmUgRV9NSVBTX01BQ0hfU0IxICAgICAgICAgMHgwMDhhMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OCTB4MDA4YjAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX1hMUiAgICAgCTB4MDA4YzAwMDAKKysjZGVmaW5lIEVfTUlQU19NQUNIX1hMUCAgICAgICAgIDB4MDA4ZjAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjIJMHgwMDhkMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKK2luZGV4IGNlYWU5ZWM1MGEuLjI3NmVlM2M2YzEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKKysrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorQEAgLTEyNTksNiArMTI1OSw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisgLyogSW1hZ2luYXRpb24gaW50ZXJBcHRpdiBNUjIuICAqLworICNkZWZpbmUgSU5TTl9JTlRFUkFQVElWX01SMgkgIDB4MDQwMDAwMDAKKysvKiBOZXRsb2dpYyBYbFAgaW5zdHJ1Y3Rpb24gKi8KKysjZGVmaW5lIElOU05fWExQCQkweDAwMDAwMDgwCisgCisgLyogRFNQIEFTRSAqLworICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKK0BAIC0xMzY1LDYgKzEzNjcsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CisgI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCisgI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLworICNkZWZpbmUgQ1BVX0lOVEVSQVBUSVZfTVIyIDczNjU1MAkvKiBkZWNpbWFsICdJQTInICAqLworKyNkZWZpbmUgQ1BVX1hMUCAgICAgICAgIDg4NzY4MCAgICAgIC8qIGRlY2ltYWwgJ1hMUCcgICAqLworIAorIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCisgCitAQCAtMTQ0NSw2ICsxNDQ4LDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCisgICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKKyAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOworIAorKyAgICBjYXNlIENQVV9YTFA6CisrICAgICAgcmV0dXJuIChtYXNrICYgSU5TTl9YTFApICE9IDA7CisrCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIEZBTFNFOworICAgICB9CitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IGZlN2I5MjM4YjIuLjJhZGYxMDhiMTcgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUudGd0CisrKysgYi9sZC9jb25maWd1cmUudGd0CitAQCAtNTE2LDYgKzUxNiw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKKyBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCisgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7CisrbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIiA7OworIG1pcHM2NCplbC1wczItZWxmKikJdGFyZ19lbXVsPWVsZjMybHI1OTAwbjMyCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7CitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCitpbmRleCA0NTE5NTAwN2MxLi40YTgwYTA1ZDE5IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCisrKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKK0BAIC02NTUsMTMgKzY1NSwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KKyAgICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorICAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorIAorLSAgLyogWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiBpdCBpcyBiZWluZworLSAgICAgTUlQUzY0UjIuICAqLworLSAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHIsIENQVV9YTFIsCistICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExSLCAwLAorLSAgICBtaXBzX2NwMF9uYW1lc194bHIsCistICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKKy0gICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKKysgIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxwLCBDUFVfWExQLAorKyAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUCwgMCwKKysgICAgbWlwc19jcDBfbmFtZXNfbWlwczMyNjRyMiwKKysgICAgbWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiksCisrICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19taXBzMzI2NHIyIH0sCisgCisgICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCisgICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLworZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYworaW5kZXggMTlmY2E0MDhjOS4uZDAyMDY5YzUyOCAxMDA2NDQKKy0tLSBhL29wY29kZXMvbWlwcy1vcGMuYworKysrIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitAQCAtMzI4LDYgKzMyOCw3IEBAIGRlY29kZV9taXBzX29wZXJhbmQgKGNvbnN0IGNoYXIgKnApCisgI2RlZmluZSBJT0NUMwlJTlNOX09DVEVPTjMKKyAjZGVmaW5lIFhMUiAgICAgSU5TTl9YTFIKKyAjZGVmaW5lIElBTVIyCUlOU05fSU5URVJBUFRJVl9NUjIKKysjZGVmaW5lIFhMUAlJTlNOX1hMUAorICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKKyAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAorIAorQEAgLTk2Niw2ICs5NjcsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAorIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCisgeyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAorK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCisgLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgeyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKKyB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorQEAgLTk5OCwxMiArMTAwMCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSLAkJMCwJMCB9LAorK3siZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImRicmVhayIsCQkiIiwJCTB4NzAwMDAwM2YsIDB4ZmZmZmZmZmYsCTAsCQkJMCwJCU41LAkJMCwJMCB9LAorIHsiZGNsbyIsCQkiZCxzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJVLHMiLAkgCTB4NzAwMDAwMjUsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyB7ImRjbHoiLAkJImQscyIsCQkweDAwMDAwMDUyLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZGNseiIsCQkiVSxzIiwJIAkweDcwMDAwMDI0LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCisreyJkY3JjIiwJCSJkLHMsdCIsCTB4NzAwMDAwMWQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCisgeyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCitAQCAtMTA3NSw2ICsxMDc4LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCisgeyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisgeyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAorK3siZG1mdXIiLAkJInQsZCIsCQkweDcwMDAwMDFlLCAweGZmZTAwN2ZmLCBXUl8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCisgeyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCitAQCAtMTA5MCw2ICsxMDk0LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgeyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyt7ImRtdHVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZiwgMHhmZmUwMDdmZiwJUkRfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAorK3siZG11bCIsCQkiZCxzLHQiLAkweDcwMDAwMDA2LCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKK0BAIC0xMjQzLDkgKzEyNDksOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LAorLXsibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKK0BAIC0xNDEwLDcgKzE0MTYsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAorLXsibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKKyB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKKyB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAorQEAgLTE0NTUsMTAgKzE0NjEsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLworIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCisgeyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXNnc25kcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDEsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyB7Im1zZ2xkIiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHTEQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dMRF9ULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dXQUlULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dsZHMiLAkJImQsdCIsCQkweDRhMDAwMDAyLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSIiLAkJMCwgICAgKGludCkgTV9NU0dXQUlULCAgSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibXNnc3luYyIsCQkiIiwJCTB4NGEwMDAwMDQsIDB4ZmZmZmZmZmYsMCwJCQkwLAkJWExQLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKK0BAIC0xNTA4LDcgKzE1MTcsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKKyB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKK0BAIC0xOTQ1LDkgKzE5NTQsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKKyB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorLXsic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJzd2MwIiwJCSJFLG8oYikiLAkweGUwMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8zfFJEX0MwfFNNLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCisgeyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LAorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWMxMDFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gZjQzZjgzMmUwMDA5Y2FlYTZhM2Q1YmNhYThmMGE2NGQ5NDMwNzJlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKLQotd2UgY2hhbmdlIHRoZSBkZWZhdWx0IGVtdWxhdGlvbnMgdG8gYmUgTjY0IGluc3RlYWQgb2YgTjMyCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIGNvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiZmQvY29uZmlnLmJmZCAgIHwgOCArKysrLS0tLQotIGxkL2NvbmZpZ3VyZS50Z3QgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCAxYjI4MDE2YjkxLi42MzU5NmMyZWJjIDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZy5iZmQKLSsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtMTE4MywxMiArMTE4MywxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIG1pcHNfZWNvZmZfYmVfdmVjIG1pcHNfZWNvZmZfbGVfdmVjIgotICAgICA7OwotICAgbWlwczY0KmVsLSotbGludXgqKQotLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2xlX3ZlYwotLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCi0rICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9sZV92ZWMKLSsgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHM2NCotKi1saW51eCopCi0tICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2JlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotICAgICA7OwotICAgbWlwcyplbC0qLWxpbnV4KikKLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCBiODVjNmJiMzVhLi40ZTc3MzgzYTE5IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLnRndAotKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTUxOCwxMSArNTE4LDExIEBAIG1pcHMqZWwtKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWxtaXB2eHdvcmtzCi0gbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCi0gCQkgICAgICAgIHRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwotIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKLS1taXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGx0c21pcCBlbGY2NGJ0c21pcCIKLSttaXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRsdHNtaXAKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGJ0c21pcCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLS1taXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwbjMyCi0tCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiCi0rbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0bHRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCIKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwM2UwNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOTkgKzAsMCBAQAotRnJvbSBmYzZmYTZhNmU2ZTllNmU1YWQ3MDgwNzg1YWYzMWI0ZWE2OGY2MGM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUAotCi1QYXRjaCBGcm9tOiBOZWJ1IFBoaWxpcHMgPG5waGlsaXBzQG5ldGxvZ2ljbWljcm8uY29tPgotCi1Vc2luZyB0aGUgbWlwc2lzYTY0cjJubG0gdGFyZ2V0LCBhZGQgc3VwcG9ydCBmb3IgWExQIGZyb20KLU5ldGxvZ2ljLiBBbHNvLCB1cGRhdGUgdmVuZG9yIG5hbWUgdG8gTkxNIHdoZXJldmVyIGFwcGxpY2FibGUuCi0KLVVzZSAweDAwMDAwMDgwIGZvciBJTlNOX1hMUCwgdGhlIHZhbHVlIDB4MDAwMDAwNDAgaGFzIGFscmVhZHkgYmVlbgotYXNzaWduZWQgdG8gSU5TTl9PQ1RFT04zCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGJmZC9hb3V0eC5oICAgICAgICAgICB8ICAxICsKLSBiZmQvYXJjaHVyZXMuYyAgICAgICAgfCAgMSArCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgIHwgIDEgKwotIGJmZC9jb25maWcuYmZkICAgICAgICB8ICA1ICsrKysrCi0gYmZkL2NwdS1taXBzLmMgICAgICAgIHwgIDYgKysrKy0tCi0gYmZkL2VsZnh4LW1pcHMuYyAgICAgIHwgIDggKysrKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgICAgfCAgMSArCi0gZ2FzL2NvbmZpZy90Yy1taXBzLmMgIHwgIDQgKysrLQotIGdhcy9jb25maWd1cmUgICAgICAgICB8ICAzICsrKwotIGluY2x1ZGUvZWxmL21pcHMuaCAgICB8ICAxICsKLSBpbmNsdWRlL29wY29kZS9taXBzLmggfCAxMCArKysrKysrKy0tCi0gbGQvY29uZmlndXJlLnRndCAgICAgIHwgIDIgKysKLSBvcGNvZGVzL21pcHMtZGlzLmMgICAgfCAxMiArKysrKy0tLS0tLS0KLSBvcGNvZGVzL21pcHMtb3BjLmMgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKLWluZGV4IGQzMGU4YjhmYmMuLjkxM2I0OTk3NDQgMTAwNjQ0Ci0tLS0gYS9iZmQvYW91dHguaAotKysrIGIvYmZkL2FvdXR4LmgKLUBAIC04MTIsNiArODEyLDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCi0gCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc194bHI6Ci0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0gCSAgLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBNSVBTMywgTUlQUzQsIE1JUFMxNiwgTUlQUzMyLCBldGMuICAqLwotIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOwotIAkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKLWluZGV4IDZmMzVhNWIyYTcuLmQxMmNkZjYwOWEgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaHVyZXMuYwotKysrIGIvYmZkL2FyY2h1cmVzLmMKLUBAIC0xOTcsNiArMTk3LDcgQEAgREVTQ1JJUFRJT04KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjIJCTY1MDIKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMwotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICB7KiBkZWNpbWFsICdYTFInICAqfQotKy4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICB7KiBkZWNpbWFsICdYTFAnICAqfQotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMiAgICAgICAgICAgICAzMgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAotZGlmZiAtLWdpdCBhL2JmZC9iZmQtaW4yLmggYi9iZmQvYmZkLWluMi5oCi1pbmRleCA2Mjg4YzNiYjRhLi5lOWY5ODU5YTdiIDEwMDY0NAotLS0tIGEvYmZkL2JmZC1pbjIuaAotKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTIwNDEsNiArMjA0MSw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQotICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24yICAgICAgICAgIDY1MDIKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJyAgKi8KLSsjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnICAqLwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDYzNTk2YzJlYmMuLjZlOTIzZmIwZWQgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC0xMTY2LDYgKzExNjYsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLSAgICAgOzsKLSsgIG1pcHNpc2E2NCotKi1lbGYqKQotKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCi0rCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0rCXdhbnQ2ND10cnVlCi0rCTs7Ci0gICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLWRpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCi1pbmRleCBiOWVjZGQ2ZTU1Li5kZjFiZmZjMjViIDEwMDY0NAotLS0tIGEvYmZkL2NwdS1taXBzLmMKLSsrKyBiL2JmZC9jcHUtbWlwcy5jCi1AQCAtMTA0LDcgKzEwNCw4IEBAIGVudW0KLSAgIElfbWlwc29jdGVvbjIsCi0gICBJX21pcHNvY3Rlb24zLAotICAgSV94bHIsCi0tICBJX21pY3JvbWlwcwotKyAgSV9taWNyb21pcHMsCi0rICBJX3hscAotIH07Ci0gCi0gI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKLUBAIC0xNTUsNyArMTU2LDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX29jdGVvbjIsIm1pcHM6b2N0ZW9uMiIsICBGQUxTRSwgTk4oSV9taXBzb2N0ZW9uMikpLAotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX29jdGVvbjMsICJtaXBzOm9jdGVvbjMiLCAgRkFMU0UsIE5OKElfbWlwc29jdGVvbjMpKSwKLSAgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHIsICJtaXBzOnhsciIsICAgICAgIEZBTFNFLCBOTihJX3hscikpLAotLSAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLDApCi0rICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsTk4oSV9taWNyb21pcHMpKSwKLSsgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHAsICJtaXBzOnhscCIsICAgICAgRkFMU0UsIDApCi0gfTsKLSAKLSAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCi1kaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKLWluZGV4IDcyMzg1M2Y4MjEuLjdiNDY0MjExYzMgMTAwNjQ0Ci0tLS0gYS9iZmQvZWxmeHgtbWlwcy5jCi0rKysgYi9iZmQvZWxmeHgtbWlwcy5jCi1AQCAtNjc4Nyw2ICs2Nzg3LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKLSAgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6Ci0gICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfeGxyOwotIAotKwljYXNlIEVfTUlQU19NQUNIX1hMUDoKLSsgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHA7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKLSAJewotQEAgLTEyMTA2LDYgKzEyMTA5LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQotICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOwotICAgICAgIGJyZWFrOwotIAotKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgotKwkgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9YTFA7Ci0rCSAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgotICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOwotICAgICAgIGJyZWFrOwotQEAgLTE0MTM1LDYgKzE0MTQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQotICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbnAsIGJmZF9tYWNoX21pcHNfb2N0ZW9uIH0sCi0gICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9uLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotICAgeyBiZmRfbWFjaF9taXBzX2xvb25nc29uXzNhLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotKyAgeyBiZmRfbWFjaF9taXBzX3hscCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKLSAKLSAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KLSAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggOGRjYTQ5MDIyNi4uYjVmNTc3ZjVhMSAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMzI2MSw2ICszMjYxLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMjogc3RyY2F0IChidWYsICIsIG9jdGVvbjIiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjM6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24zIik7IGJyZWFrOwotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxyIik7IGJyZWFrOwotKwkJY2FzZSBFX01JUFNfTUFDSF9YTFA6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxwIik7IGJyZWFrOwotIAkgICAgY2FzZSAwOgotIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKLSAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IGUyNGU4NGRmNTQuLmJhZjg0ZTQxOWQgMTAwNjQ0Ci0tLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYwotKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLUBAIC01NTIsNiArNTUyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1JNNzAwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9WUjU1MDAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC01ODEsNiArNTgyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgICYmIG1pcHNfb3B0cy5pc2EgIT0gSVNBX01JUFMzKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9SNDMwMCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC0xOTQwOSw3ICsxOTQxMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQotICAgLyogQnJvYWRjb20gWExQLgotICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCi0gICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwotLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKLSsgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCi0gCi0gICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLwotICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBhMzZmMWFlMTYxLi45OWYwYTk0ZTIwIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTEyOTg5LDYgKzEyOTg5LDkgQEAgX0FDRU9GCi0gCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQotIAkgICAgbWlwc19jcHU9bWlwczY0cjYKLSAJICAgIDs7Ci0rCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQotKwkJbWlwc19jcHU9eGxwCi0rCQk7OwotIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKLSAJICAgIG1pcHNfY3B1PXIzOTAwCi0gCSAgICA7OwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAotaW5kZXggM2UyN2IwNTEyMi4uODFlYTc4YTgxNyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAotKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1AQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQotICNkZWZpbmUgRV9NSVBTX01BQ0hfU0IxICAgICAgICAgMHgwMDhhMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OCTB4MDA4YjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX1hMUiAgICAgCTB4MDA4YzAwMDAKLSsjZGVmaW5lIEVfTUlQU19NQUNIX1hMUCAgICAgICAgIDB4MDA4ZjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjIJMHgwMDhkMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLWluZGV4IDBkMDQzZDk1MjAuLjQ1MGU5YzJkNjcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKLSsrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotQEAgLTEyNDQsOCArMTI0NCwxMCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7Ci0gI2RlZmluZSBJTlNOX0xPT05HU09OXzJGICAgICAgICAgIDB4ODAwMDAwMDAKLSAvKiBMb29uZ3NvbiAzQS4gICovCi0gI2RlZmluZSBJTlNOX0xPT05HU09OXzNBICAgICAgICAgIDB4MDAwMDA0MDAKLS0vKiBSTUkgWGxyIGluc3RydWN0aW9uICovCi0tI2RlZmluZSBJTlNOX1hMUiAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAotKy8qIE5ldGxvZ2ljIFhsciBpbnN0cnVjdGlvbiAqLwotKyNkZWZpbmUgSU5TTl9YTFIJCTB4MDAwMDAwMjAKLSsvKiBOZXRsb2dpYyBYbFAgaW5zdHJ1Y3Rpb24gKi8KLSsjZGVmaW5lIElOU05fWExQCQkweDAwMDAwMDgwCi0gCi0gLyogRFNQIEFTRSAqLwotICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKLUBAIC0xMzQ0LDYgKzEzNDYsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7Ci0gI2RlZmluZSBDUFVfT0NURU9OMgk2NTAyCi0gI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCi0gI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLwotKyNkZWZpbmUgQ1BVX1hMUCAgICAgICAgIDg4NzY4MCAgICAgIC8qIGRlY2ltYWwgJ1hMUCcgICAqLwotIAotIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCi0gCi1AQCAtMTQyMSw2ICsxNDI0LDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCi0gICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKLSAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOwotIAotKyAgICBjYXNlIENQVV9YTFA6Ci0rICAgICAgcmV0dXJuIChtYXNrICYgSU5TTl9YTFApICE9IDA7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDRlNzczODNhMTkuLjhhODFmN2FjMzkgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTA0LDYgKzUwNCw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKLSBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCi0gCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7Ci0rbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIiA7OwotIG1pcHM2NCplbC1wczItZWxmKikJdGFyZ19lbXVsPWVsZjMybHI1OTAwbjMyCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1pbmRleCBiYjk5MTJlNDYyLi43MGVjYzUxNzE3IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCi0rKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKLUBAIC02NDgsMTMgKzY0OCwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KLSAgICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotICAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotIAotLSAgLyogWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiBpdCBpcyBiZWluZwotLSAgICAgTUlQUzY0UjIuICAqLwotLSAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHIsIENQVV9YTFIsCi0tICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExSLCAwLAotLSAgICBtaXBzX2NwMF9uYW1lc194bHIsCi0tICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKLS0gICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKLSsgIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxwLCBDUFVfWExQLAotKyAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUCwgMCwKLSsgICAgbWlwc19jcDBfbmFtZXNfbWlwczMyNjRyMiwKLSsgICAgbWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiksCi0rICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19taXBzMzI2NHIyIH0sCi0gCi0gICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCi0gICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLwotZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYwotaW5kZXggNWNiOGU3MzY1Zi4uZjIwNzQ4NTZhMiAxMDA2NDQKLS0tLSBhL29wY29kZXMvbWlwcy1vcGMuYwotKysrIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1AQCAtMzIwLDcgKzMyMCw4IEBAIGRlY29kZV9taXBzX29wZXJhbmQgKGNvbnN0IGNoYXIgKnApCi0gI2RlZmluZSBJT0NUUAkoSU5TTl9PQ1RFT05QIHwgSU5TTl9PQ1RFT04yIHwgSU5TTl9PQ1RFT04zKQotICNkZWZpbmUgSU9DVDIJKElOU05fT0NURU9OMiB8IElOU05fT0NURU9OMykKLSAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMwotLSNkZWZpbmUgWExSICAgICBJTlNOX1hMUgotKyNkZWZpbmUgWExSCUlOU05fWExSCi0rI2RlZmluZSBYTFAJSU5TTl9YTFAKLSAjZGVmaW5lIElWSVJUCUFTRV9WSVJUCi0gI2RlZmluZSBJVklSVDY0CUFTRV9WSVJUNjQKLSAKLUBAIC05NTgsNiArOTU5LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiY2xvIiwJCQkiVSxzIiwJCTB4NzAwMDAwMjEsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKLSB7ImNseiIsCQkJImQscyIsCQkweDAwMDAwMDUwLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTM3LAkJMCwJMCB9LAotIHsiY2x6IiwJCQkiVSxzIiwJCTB4NzAwMDAwMjAsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKLSt7ImNyYyIsCQkJImQscyx0IiwJMHg3MDAwMDAxYywgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAotIC8qIGN0YzAgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIHsiY3RjMSIsCQkidCxHIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJjdGMxIiwJCSJ0LFMiLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLUBAIC05OTAsMTIgKzk5MiwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCi0teyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSLAkJMCwJMCB9LAotK3siZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7ImRicmVhayIsCQkiIiwJCTB4NzAwMDAwM2YsIDB4ZmZmZmZmZmYsCTAsCQkJMCwJCU41LAkJMCwJMCB9LAotIHsiZGNsbyIsCQkiZCxzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkY2xvIiwJCSJVLHMiLAkgCTB4NzAwMDAwMjUsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKLSB7ImRjbHoiLAkJImQscyIsCQkweDAwMDAwMDUyLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZGNseiIsCQkiVSxzIiwJIAkweDcwMDAwMDI0LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCi0reyJkY3JjIiwJCSJkLHMsdCIsCTB4NzAwMDAwMWQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKLSAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCi0geyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCi1AQCAtMTA2Nyw2ICsxMDcwLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCi0geyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCi0geyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAotK3siZG1mdXIiLAkJInQsZCIsCQkweDcwMDAwMDFlLCAweGZmZTAwN2ZmLCBXUl8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKLSB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCi0geyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCi1AQCAtMTA4Miw2ICsxMDg2LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSt7ImRtdHVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZiwgMHhmZmUwMDdmZiwJUkRfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAotK3siZG11bCIsCQkiZCxzLHQiLAkweDcwMDAwMDA2LCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKLUBAIC0xMjM1LDkgKzEyNDEsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKLSB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LAotLXsibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLSt7ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCi0geyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCi0geyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKLUBAIC0xNDAyLDcgKzE0MDgsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCi0geyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAotIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAotLXsibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKLSB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAotQEAgLTE0NDcsMTAgKzE0NTMsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLwotIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCi0geyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXNnc25kcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDEsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKLSB7Im1zZ2xkIiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHTEQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotIHsibXNnbGQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dMRF9ULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLS17Im1zZ3dhaXQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dXQUlULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLS17Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtc2dsZHMiLAkJImQsdCIsCQkweDRhMDAwMDAyLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCi0reyJtc2d3YWl0IiwJCSIiLAkJMCwgICAgKGludCkgTV9NU0dXQUlULCAgSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibXNnc3luYyIsCQkiIiwJCTB4NGEwMDAwMDQsIDB4ZmZmZmZmZmYsMCwJCQkwLAkJWExQLAkJMCwJMCB9LAotIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKLSB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKLSB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKLUBAIC0xNTAwLDcgKzE1MDksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCi0geyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAotIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCi0teyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCi0geyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKLSB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLUBAIC0xOTM3LDkgKzE5NDYsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKLSB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAotLXsic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLSt7InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJzd2MwIiwJCSJFLG8oYikiLAkweGUwMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8zfFJEX0MwfFNNLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKLSB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCi0geyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzM3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBlNDYyMDJiZWNhYjYyNWM2YzA4Y2FmOTFlMDhjY2JiYzFiZjc5OWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CitEYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTVdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCisKK1NpZ25lZC1vZmYtYnk6IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIG9wY29kZXMvcHBjLW9wYy5jIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCitpbmRleCA0MjYyNjFhYjIxLi4wZDM1OTE2Y2RkIDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKKysrKyBiL29wY29kZXMvcHBjLW9wYy5jCitAQCAtNDg4MSw3ICs0ODgxLDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorIHsid2FpdGFzZWMiLAlYKDMxLDMwKSwgICAgICBYUlRSQVJCX01BU0ssIFBPV0VSOCwJUE9XRVI5LAkJezB9fSwKKy17IndhaXQiLAlYKDMxLDMwKSwJWFdDX01BU0ssICAgIFBPV0VSOSwJMCwJCXtXQ319LAorIAorIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorQEAgLTQ5MzUsNyArNDkzNCw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKKyAKKyB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorLXsid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1dDfX0sCisreyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTJ8UE9XRVI5LCAwLAl7V0N9fSwKKyAKKyB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAorIAorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYjEwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBiZjIwZDU4MjM2NjJkMWYyZWI0N2RlMmNkZmQxNzM2MjdhMjA1YjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8xNV0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKKworQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0CitpbmRleCAzZDYzMDI3Mjk3Li5jMWY5MmExMzYwIDEwMDY0NAorLS0tIGEvZ29sZC9jb25maWd1cmUudGd0CisrKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCisgIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorICA7OworK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKysgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKysgOzsKKyBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX29iaj1taXBzCisgIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQorQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCotKi0qKQorKyB0YXJnX29iaj1taXBzCisrIHRhcmdfbWFjaGluZT1FTV9NSVBTCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKKysgOzsKKyBtaXBzKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFMKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI5NWEwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGE5MTc3MTUwZjgwOGQ3ZTYyODVlMTAxMWM4NWQwY2U4OTAzN2I1NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLURhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKLQotU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLWluZGV4IDMwZmQ3ODkxODIuLmYyNzA4ZTIyNzYgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL3BwYy1vcGMuYwotKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLUBAIC00ODc2LDcgKzQ4NzYsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0geyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCi0gCi0geyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAotLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCi0gCi0geyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCi0gCi1AQCAtNDkzMCw3ICs0OTI5LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0gewotIAotIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCi0geyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKLSt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAotIAotIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCi0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCmluZGV4IDE1NTkwMzguLjJjODkwMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1OGNkYjI4ZWQ3MWNiNTdiNGEwZWExYjQxMmE3MDhmZGIwZjg0YzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5YjQ1NmEwZTRmMjg0ZmQ0MWFjMzY1OTUxNDRlZDQ0ZGM4MjQxMGVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAogU3ViamVjdDogW1BBVENIIDE1LzE1XSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCkBAIC04NSw1ICs4NSw1IEBACiAgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjJlYjg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYzNlYmRlNWQ4Y2MzYjAwOTI5NjZiNGQ3MjVjYWQ3Y2ZkMDc0ZmQ4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMTZdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCi0KLUFkZCBtaXBzNjQgdGFyZ2V0IHRyaXBsZXRzIGFuZCBkZWZhdWx0IHRvIE42NAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDE2LTA4L21zZzAwMDQ4Lmh0bWwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdvbGQvY29uZmlndXJlLnRndCB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dvbGQvY29uZmlndXJlLnRndCBiL2dvbGQvY29uZmlndXJlLnRndAotaW5kZXggM2Q2MzAyNzI5Ny4uYzFmOTJhMTM2MCAxMDA2NDQKLS0tLSBhL2dvbGQvY29uZmlndXJlLnRndAotKysrIGIvZ29sZC9jb25maWd1cmUudGd0Ci1AQCAtMTUzLDYgKzE1MywxMyBAQCBhYXJjaDY0Ki0qKQotICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSAgOzsKLSttaXBzKjY0KmVsKi0qLSp8bWlwcyo2NCpsZSotKi0qKQotKyB0YXJnX29iaj1taXBzCi0rIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQotKyB0YXJnX3NpemU9NjQKLSsgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0rIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0rIDs7Ci0gbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKLSAgdGFyZ19vYmo9bWlwcwotICB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKLUBAIC0xNjAsNiArMTY3LDEzIEBAIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCi0gIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotICA7OwotK21pcHMqNjQqLSotKikKLSsgdGFyZ19vYmo9bWlwcwotKyB0YXJnX21hY2hpbmU9RU1fTUlQUwotKyB0YXJnX3NpemU9NjQKLSsgdGFyZ19iaWdfZW5kaWFuPXRydWUKLSsgdGFyZ19leHRyYV9iaWdfZW5kaWFuPWZhbHNlCi0rIDs7Ci0gbWlwcyotKi0qKQotICB0YXJnX29iaj1taXBzCi0gIHRhcmdfbWFjaGluZT1FTV9NSVBTCi0tLSAKLTIuMTIuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTctYmZkLUltcHJvdmUtbG9va3VwLW9mLWZpbGUtbGluZS1pbmZvcm1hdGlvbi1mb3ItZXJyby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1iZmQtSW1wcm92ZS1sb29rdXAtb2YtZmlsZS1saW5lLWluZm9ybWF0aW9uLWZvci1lcnJvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2FkMTBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1iZmQtSW1wcm92ZS1sb29rdXAtb2YtZmlsZS1saW5lLWluZm9ybWF0aW9uLWZvci1lcnJvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSAzMjM5YTQyMzFmZjc5YmY4YjY3YjhmYWFmNDE0YjE2Njc0ODYxNjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFuZHJldy5idXJnZXNzQGVtYmVjb3NtLmNvbT4KLURhdGU6IE1vbiwgMTkgRGVjIDIwMTYgMTU6Mjc6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYmZkOiBJbXByb3ZlIGxvb2t1cCBvZiBmaWxlIC8gbGluZSBpbmZvcm1hdGlvbiBmb3IgZXJyb3JzCi0KLVdoZW4gbG9va2luZyB1cCBmaWxlIGFuZCBsaW5lIGluZm9ybWF0aW9uICh1c2VkIGZyb20gdGhlIGxpbmtlciB0bwotcmVwb3J0IGVycm9yIG1lc3NhZ2VzKSBpZiBubyBzeW1ib2wgaXMgcGFzc2VkIGluLCB0aGVuIHVzZSB0aGUgc3ltYm9sCi1saXN0IHRvIGxvb2sgZm9yIGEgbWF0Y2hpbmcgc3ltYm9sLgotCi1JZiBhIG1hdGNoaW5nIHN5bWJvbCBpcyBmb3VuZCB0aGVuIHVzZSB0aGlzIHRvIGxvb2sgdXAgdGhlIGZpbGUgLyBsaW5lCi1pbmZvcm1hdGlvbi4KLQotVGhpcyBzaG91bGQgaW1wcm92ZSBlcnJvcnMgd2hlbiBsb29raW5nIHVwIGZpbGUgLyBsaW5lIGluZm9ybWF0aW9uIGZvcgotZGF0YSBzZWN0aW9ucy4gIEhvcGVmdWxseSB3ZSBzaG91bGQgZmluZCBhIG1hdGNoaW5nIGRhdGEgc3ltYm9sLCB3aGljaAotc2hvdWxkLCBpbiB0dXJuICh3ZSBob3BlKSBtYXRjaCBhIERXX1RBR192YXJpYWJsZSBpbiB0aGUgRFdBUkYsIHRoaXMKLXNob3VsZCBhbGxvdyB1cyB0byBnaXZlIGFjY3VyYXRlIGZpbGUgLyBsaW5lIGVycm9ycyBmb3IgZGF0YSBzeW1ib2xzLgotCi1BcyB0aGUgaG9wZSBpcyB0byBmaW5kIGEgbWF0Y2hpbmcgRFdfVEFHX3ZhcmlhYmxlIGluIHRoZSBEV0FSRiB0aGVuIHdlCi1pZ25vcmUgc2VjdGlvbiBzeW1ib2xzLCBhbmQgcHJlZmVyIGdsb2JhbCBzeW1ib2xzIHRvIGxvY2Fscy4KLQotQ1ZFOiBDVkUtMjAxNy04MzkyCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLVNpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci0tLS0KLSBiZmQvZHdhcmYyLmMgICAgICAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQotCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDAzNDQ3YTkuLjliYjgxMjYgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTQxNTUsNiArNDE1NSwzOCBAQCBfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAotICAgICB7Ci0gICAgICAgQkZEX0FTU0VSVCAoc2VjdGlvbiAhPSBOVUxMICYmIGZ1bmN0aW9ubmFtZV9wdHIgIT0gTlVMTCk7Ci0gICAgICAgYWRkciA9IG9mZnNldDsKLSsKLSsgICAgICAvKiBJZiB3ZSBoYXZlIG5vIFNZTUJPTCBidXQgdGhlIHNlY3Rpb24gd2UncmUgbG9va2luZyBhdCBpcyBub3QgYQotKyAgICAgICAgIGNvZGUgc2VjdGlvbiwgdGhlbiB0YWtlIGEgbG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIHN5bWJvbHMgdG8gc2VlCi0rICAgICAgICAgaWYgd2UgaGF2ZSBhIHN5bWJvbCBhdCB0aGUgYWRkcmVzcyB3ZSdyZSBsb29raW5nIGZvci4gIElmIHdlIGRvCi0rICAgICAgICAgdGhlbiB1c2UgdGhpcyB0byBsb29rIHVwIGxpbmUgaW5mb3JtYXRpb24uICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KLSsgICAgICAgICBnaXZlIGZpbGUgYW5kIGxpbmUgcmVzdWx0cyBmb3IgZGF0YSBzeW1ib2xzLiAgV2UgZXhjbHVkZSBjb2RlCi0rICAgICAgICAgc3ltYm9scyBoZXJlLCBpZiB3ZSBsb29rIHVwIGEgZnVuY3Rpb24gc3ltYm9sIGFuZCB0aGVuIGxvb2sgdXAgdGhlCi0rICAgICAgICAgbGluZSBpbmZvcm1hdGlvbiB3ZSdsbCBhY3R1YWxseSByZXR1cm4gdGhlIGxpbmUgbnVtYmVyIGZvciB0aGUKLSsgICAgICAgICBvcGVuaW5nICd7JyByYXRoZXIgdGhhbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBsaW5lLiAgVGhpcyBpcwotKyAgICAgICAgIGJlY2F1c2UgbG9va2luZyB1cCBieSBzeW1ib2wgdXNlcyB0aGUgbGluZSB0YWJsZSwgaW4gd2hpY2ggdGhlCi0rICAgICAgICAgZmlyc3QgbGluZSBmb3IgYSBmdW5jdGlvbiBpcyB1c3VhbGx5IHRoZSBvcGVuaW5nICd7Jywgd2hpbGUKLSsgICAgICAgICBsb29raW5nIHVwIHRoZSBmdW5jdGlvbiBieSBzZWN0aW9uICsgb2Zmc2V0IHVzZXMgdGhlCi0rICAgICAgICAgRFdfQVRfZGVjbF9saW5lIGZyb20gdGhlIGZ1bmN0aW9uIERXX1RBR19zdWJwcm9ncmFtIGZvciB0aGUgbGluZSwKLSsgICAgICAgICB3aGljaCB3aWxsIGJlIHRoZSBsaW5lIG9mIHRoZSBmdW5jdGlvbiBuYW1lLiAgKi8KLSsgICAgICBpZiAoKHNlY3Rpb24tPmZsYWdzICYgU0VDX0NPREUpID09IDApCi0rCXsKLSsJICBhc3ltYm9sICoqdG1wOwotKwotKwkgIGZvciAodG1wID0gc3ltYm9sczsgKCp0bXApICE9IE5VTEw7ICsrdG1wKQotKwkgICAgaWYgKCgqdG1wKS0+dGhlX2JmZCA9PSBhYmZkCi0rCQkmJiAoKnRtcCktPnNlY3Rpb24gPT0gc2VjdGlvbgotKwkJJiYgKCp0bXApLT52YWx1ZSA9PSBvZmZzZXQKLSsJCSYmICgoKnRtcCktPmZsYWdzICYgQlNGX1NFQ1RJT05fU1lNKSA9PSAwKQotKwkgICAgICB7Ci0rCQlzeW1ib2wgPSAqdG1wOwotKwkJZG9fbGluZSA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIC8qIEZvciBsb2NhbCBzeW1ib2xzLCBrZWVwIGdvaW5nIGluIHRoZSBob3BlIHdlIGZpbmQgYQotKyAgICAgICAgICAgICAgICAgICBnbG9iYWwuICAqLwotKyAgICAgICAgICAgICAgICBpZiAoKHN5bWJvbC0+ZmxhZ3MgJiBCU0ZfR0xPQkFMKSAhPSAwKQotKyAgICAgICAgICAgICAgICAgIGJyZWFrOwotKwkgICAgICB9Ci0rCX0KLSAgICAgfQotIAotICAgaWYgKHNlY3Rpb24tPm91dHB1dF9zZWN0aW9uKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUFItMjE0MDktc2VnZmF1bHQtaW4tX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUFItMjE0MDktc2VnZmF1bHQtaW4tX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjM3ZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE4LVBSLTIxNDA5LXNlZ2ZhdWx0LWluLV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA5N2U4M2ExMDBhYTgyNTBiZTc4MzMwNGJmZTA0Mjk3NjFjNmU2YjZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjMgQXByIDIwMTcgMTM6NTU6NDkgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIgMjE0MDksIHNlZ2ZhdWx0IGluIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lCi0KLQlQUiAyMTQwOQotCSogZHdhcmYyLmMgKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogRG9uJ3Qgc2VnZmF1bHQgd2hlbgotCW5vIHN5bWJvbHMuCi0KLUNWRTogQ1ZFLTIwMTctODM5MgotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgotLS0tCi0gYmZkL2R3YXJmMi5jICB8IDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2R3YXJmMi5jIGIvYmZkL2R3YXJmMi5jCi1pbmRleCAxMzJhNjc0Li4wZWYzZTFmIDEwMDY0NAotLS0tIGEvYmZkL2R3YXJmMi5jCi0rKysgYi9iZmQvZHdhcmYyLmMKLUBAIC00MjA1LDcgKzQyMDUsNyBAQCBfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAotICAgICAgICAgIGxvb2tpbmcgdXAgdGhlIGZ1bmN0aW9uIGJ5IHNlY3Rpb24gKyBvZmZzZXQgdXNlcyB0aGUKLSAgICAgICAgICBEV19BVF9kZWNsX2xpbmUgZnJvbSB0aGUgZnVuY3Rpb24gRFdfVEFHX3N1YnByb2dyYW0gZm9yIHRoZSBsaW5lLAotICAgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGxpbmUgb2YgdGhlIGZ1bmN0aW9uIG5hbWUuICAqLwotLSAgICAgIGlmICgoc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfQ09ERSkgPT0gMCkKLSsgICAgICBpZiAoc3ltYm9scyAhPSBOVUxMICYmIChzZWN0aW9uLT5mbGFncyAmIFNFQ19DT0RFKSA9PSAwKQotIAl7Ci0gCSAgYXN5bWJvbCAqKnRtcDsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzM0Yzk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi1Gcm9tIGJkYzUxNjZjMjc0Yjg0MmY4M2Y4MzI4ZTdjZmFhZjgwZmQyOTkzNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEzIEZlYiAyMDE3IDEzOjA4OjMyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBGaXggcmVhZGVsZiB3cml0aW5nIHRvIGlsbGVnYWwgYWRkcmVzc2VzIHdoaWxzdAotIHByb2Nlc3NpbmcgY29ycnVwdCBpbnB1dCBmaWxlcyBjb250YWluaW5nIHN5bWJvbC1kaWZmZXJlbmNlIHJlbG9jYXRpb25zLgotCi0JUFIgYmludXRpbHMvMjExMzcKLQkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIGVuZCBwYXJhbWV0ZXIuCi0JQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyBiZWZvcmUgd3JpdGluZyByZWxvY2F0ZWQgdmFsdWVzLgotCShhcHBseV9yZWxvY2F0aW9ucyk6IFBhc3MgZW5kIHRvIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZy4KLQotKGNoZXJyeSBwaWNrIGZyb20gY29tbWl0IDAzZjc3ODZlMmY0NDBiOTg5MmIxYzM0YTU4ZmIyNjIyMmNlMWI0OTMpCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi1DVkU6IENWRS0yMDE3LTY5NjUKLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDcgKysrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggZjIxODY3Zjk4Yy4uZTc4OWEzYjk5YiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJUFIgYmludXRpbHMvMjExMzcKLSsJKiByZWFkZWxmLmMgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyk6IEFkZCBlbmQgcGFyYW1ldGVyLgotKwlDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IGJlZm9yZSB3cml0aW5nIHJlbG9jYXRlZCB2YWx1ZXMuCi0rCShhcHBseV9yZWxvY2F0aW9ucyk6IFBhc3MgZW5kIHRvIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZy4KLSsKLSAyMDE3LTAzLTAyICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgotIAotIAkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IGI1ZjU3N2Y1YTEuLjhjZGFhZTNiOGMgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTExNTg1LDYgKzExNTg1LDcgQEAgcHJvY2Vzc19zeW1pbmZvIChGSUxFICogZmlsZSBBVFRSSUJVVEVfVU5VU0VEKQotIHN0YXRpYyBiZmRfYm9vbGVhbgotIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJCQkJdW5zaWduZWQgY2hhciAqICAgICBzdGFydCwKLSsJCQkJdW5zaWduZWQgY2hhciAqICAgICBlbmQsCi0gCQkJCUVsZl9JbnRlcm5hbF9TeW0gKiAgc3ltdGFiKQotIHsKLSAgIHVuc2lnbmVkIGludCByZWxvY190eXBlID0gZ2V0X3JlbG9jX3R5cGUgKHJlbG9jLT5yX2luZm8pOwotQEAgLTExNjI1LDEzICsxMTYyNiwxOSBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gCSAgaGFuZGxlX3N5bV9kaWZmOgotIAkgICAgaWYgKHNhdmVkX3N5bSAhPSBOVUxMKQotIAkgICAgICB7Ci0rCQlpbnQgcmVsb2Nfc2l6ZSA9IHJlbG9jX3R5cGUgPT0gMSA/IDQgOiAyOwotIAkJYmZkX3ZtYSB2YWx1ZTsKLSAKLSAJCXZhbHVlID0gcmVsb2MtPnJfYWRkZW5kCi0gCQkgICsgKHN5bXRhYltnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pXS5zdF92YWx1ZQotIAkJICAgICAtIHNhdmVkX3N5bS0+c3RfdmFsdWUpOwotIAotLQkJYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2NfdHlwZSA9PSAxID8gNCA6IDIpOwotKwkJaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0rCQkgIC8qIFBSIDIxMTM3ICovCi0rCQkgIGVycm9yIChfKCJNU1A0MzAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkJIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCWVsc2UKLSsJCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0gCi0gCQlzYXZlZF9zeW0gPSBOVUxMOwotIAkJcmV0dXJuIFRSVUU7Ci1AQCAtMTE2NjIsMTMgKzExNjY5LDE4IEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICBjYXNlIDI6IC8qIFJfTU4xMDMwMF8xNiAqLwotIAkgICAgaWYgKHNhdmVkX3N5bSAhPSBOVUxMKQotIAkgICAgICB7Ci0rCQlpbnQgcmVsb2Nfc2l6ZSA9IHJlbG9jX3R5cGUgPT0gMSA/IDQgOiAyOwotIAkJYmZkX3ZtYSB2YWx1ZTsKLSAKLSAJCXZhbHVlID0gcmVsb2MtPnJfYWRkZW5kCi0gCQkgICsgKHN5bXRhYltnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pXS5zdF92YWx1ZQotIAkJICAgICAtIHNhdmVkX3N5bS0+c3RfdmFsdWUpOwotIAotLQkJYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2NfdHlwZSA9PSAxID8gNCA6IDIpOwotKwkJaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0rCQkgIGVycm9yIChfKCJNTjEwMzAwIHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJCSBzdGFydCArIHJlbG9jLT5yX29mZnNldCArIHJlbG9jX3NpemUsIGVuZCk7Ci0rCQllbHNlCi0rCQkgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIHJlbG9jX3NpemUpOwotIAotIAkJc2F2ZWRfc3ltID0gTlVMTDsKLSAJCXJldHVybiBUUlVFOwotQEAgLTExNzAzLDEyICsxMTcxNSwyMCBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gCSAgICBicmVhazsKLSAKLSAJICBjYXNlIDB4NDE6IC8qIFJfUkw3OF9BQlMzMi4gICovCi0tCSAgICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCA0KTsKLSsJICAgIGlmIChzdGFydCArIHJlbG9jLT5yX29mZnNldCArIDQgPj0gZW5kKQotKwkgICAgICBlcnJvciAoXygiUkw3OCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCSAgICAgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyAyLCBlbmQpOwotKwkgICAgZWxzZQotKwkgICAgICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCA0KTsKLSAJICAgIHZhbHVlID0gMDsKLSAJICAgIHJldHVybiBUUlVFOwotIAotIAkgIGNhc2UgMHg0MzogLyogUl9STDc4X0FCUzE2LiAgKi8KLS0JICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDIpOwotKwkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgMiA+PSBlbmQpCi0rCSAgICAgIGVycm9yIChfKCJSTDc4IHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJICAgICBzdGFydCArIHJlbG9jLT5yX29mZnNldCArIDIsIGVuZCk7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDIpOwotIAkgICAgdmFsdWUgPSAwOwotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi1AQCAtMTIzMjUsNyArMTIzNDUsNyBAQCBhcHBseV9yZWxvY2F0aW9ucyAodm9pZCAqICAgICAgICAgICAgICAgICAgICAgZmlsZSwKLSAKLSAJICByZWxvY190eXBlID0gZ2V0X3JlbG9jX3R5cGUgKHJwLT5yX2luZm8pOwotIAotLQkgIGlmICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKHJwLCBzdGFydCwgc3ltdGFiKSkKLSsJICBpZiAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChycCwgc3RhcnQsIGVuZCwgc3ltdGFiKSkKLSAJICAgIGNvbnRpbnVlOwotIAkgIGVsc2UgaWYgKGlzX25vbmVfcmVsb2MgKHJlbG9jX3R5cGUpKQotIAkgICAgY29udGludWU7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNThkZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLUZyb20gMzgzZWM3NTdkMjc2NTI0NDhkMTUxMTE2OWUxMTMzZjQ4NmFiZjU0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTMgRmViIDIwMTcgMTQ6MDM6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHJlYWQtYWZ0ZXItZnJlZSBlcnJvciBpbiByZWFkZWxmIHdoZW4gcHJvY2Vzc2luZwotIG11bHRpcGxlLCByZWxvY2F0ZWQgc2VjdGlvbnMgaW4gYW4gTVNQNDMwIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxMTM5Ci0JKiByZWFkZWxmLmMgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyk6IEFkZCBudW1fc3ltcwotCXBhcmFtZXRlci4gIENoZWNrIGZvciBzeW1ib2wgdGFibGUgb3ZlcmZsb3cgYmVmb3JlIGFjY2Vzc2luZwotCXN5bWJvbCB2YWx1ZS4gIElmIHJlbG9jIHBvaW50ZXIgaXMgTlVMTCwgZGlzY2FyZCBhbGwgc2F2ZWQgc3RhdGUuCi0JKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBudW1fc3ltcyB0byB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcuCi0JQ2FsbCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgd2l0aCBhIE5VTEwgcmVsb2MgcG9pbnRlcgotCWFmdGVyIHByb2Nlc3NpbmcgYWxsIG9mIHRoZSByZWxvY3MuCi0KLShjaGVycnkgcGljayBmcm9tIGNvbW1pdCBmODRjZTEzYjY3MDg4MDFjYTFkNjI4OWI3YzQwMDNlMmY1YTZkN2Y5KQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotQ1ZFOiBDVkUtMjAxNy02OTY2Ci0KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICAxMCArKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IGU3ODlhM2I5OWIuLmJkNjNjOGEwZDggMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsNSArMSwxNSBAQAotIDIwMTctMDItMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rCVBSIGJpbnV0aWxzLzIxMTM5Ci0rCSogcmVhZGVsZi5jICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcpOiBBZGQgbnVtX3N5bXMKLSsJcGFyYW1ldGVyLiAgQ2hlY2sgZm9yIHN5bWJvbCB0YWJsZSBvdmVyZmxvdyBiZWZvcmUgYWNjZXNzaW5nCi0rCXN5bWJvbCB2YWx1ZS4gIElmIHJlbG9jIHBvaW50ZXIgaXMgTlVMTCwgZGlzY2FyZCBhbGwgc2F2ZWQgc3RhdGUuCi0rCShhcHBseV9yZWxvY2F0aW9ucyk6IFBhc3MgbnVtX3N5bXMgdG8gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nLgotKwlDYWxsIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyB3aXRoIGEgTlVMTCByZWxvYyBwb2ludGVyCi0rCWFmdGVyIHByb2Nlc3NpbmcgYWxsIG9mIHRoZSByZWxvY3MuCi0rCi0rMjAxNy0wMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSAJUFIgYmludXRpbHMvMjExMzcKLSAJKiByZWFkZWxmLmMgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyk6IEFkZCBlbmQgcGFyYW1ldGVyLgotIAlDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IGJlZm9yZSB3cml0aW5nIHJlbG9jYXRlZCB2YWx1ZXMuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA4Y2RhYWUzYjhjLi43YzE1OGM2MzQyIDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xMTU4MCwxNSArMTE1ODAsMjcgQEAgcHJvY2Vzc19zeW1pbmZvIChGSUxFICogZmlsZSBBVFRSSUJVVEVfVU5VU0VEKQotIAotIC8qIENoZWNrIHRvIHNlZSBpZiB0aGUgZ2l2ZW4gcmVsb2MgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBhIHRhcmdldCBzcGVjaWZpYwotICAgIG1hbm5lci4gIElmIHNvIHRoZW4gcHJvY2VzcyB0aGUgcmVsb2MgYW5kIHJldHVybiBUUlVFIG90aGVyd2lzZSByZXR1cm4KLS0gICBGQUxTRS4gICovCi0rICAgRkFMU0UuCi0rCi0rICAgSWYgY2FsbGVkIHdpdGggcmVsb2MgPT0gTlVMTCwgdGhlbiB0aGlzIGlzIGEgc2lnbmFsIHRoYXQgcmVsb2MgcHJvY2Vzc2luZwotKyAgIGZvciB0aGUgY3VycmVudCBzZWN0aW9uIGhhcyBmaW5pc2hlZCwgYW5kIGFueSBzYXZlZCBzdGF0ZSBzaG91bGQgYmUKLSsgICBkaXNjYXJkZWQuICAqLwotIAotIHN0YXRpYyBiZmRfYm9vbGVhbgotIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJCQkJdW5zaWduZWQgY2hhciAqICAgICBzdGFydCwKLSAJCQkJdW5zaWduZWQgY2hhciAqICAgICBlbmQsCi0tCQkJCUVsZl9JbnRlcm5hbF9TeW0gKiAgc3ltdGFiKQotKwkJCQlFbGZfSW50ZXJuYWxfU3ltICogIHN5bXRhYiwKLSsJCQkJdW5zaWduZWQgbG9uZyAgICAgICBudW1fc3ltcykKLSB7Ci0tICB1bnNpZ25lZCBpbnQgcmVsb2NfdHlwZSA9IGdldF9yZWxvY190eXBlIChyZWxvYy0+cl9pbmZvKTsKLSsgIHVuc2lnbmVkIGludCByZWxvY190eXBlID0gMDsKLSsgIHVuc2lnbmVkIGxvbmcgc3ltX2luZGV4ID0gMDsKLSsKLSsgIGlmIChyZWxvYykKLSsgICAgewotKyAgICAgIHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocmVsb2MtPnJfaW5mbyk7Ci0rICAgICAgc3ltX2luZGV4ID0gZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKTsKLSsgICAgfQotIAotICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGluZSkKLSAgICAgewotQEAgLTExNTk3LDYgKzExNjA5LDEyIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAgICAgICB7Ci0gCXN0YXRpYyBFbGZfSW50ZXJuYWxfU3ltICogc2F2ZWRfc3ltID0gTlVMTDsKLSAKLSsJaWYgKHJlbG9jID09IE5VTEwpCi0rCSAgewotKwkgICAgc2F2ZWRfc3ltID0gTlVMTDsKLSsJICAgIHJldHVybiBUUlVFOwotKwkgIH0KLSsKLSAJc3dpdGNoIChyZWxvY190eXBlKQotIAkgIHsKLSAJICBjYXNlIDEwOiAvKiBSX01TUDQzMF9TWU1fRElGRiAqLwotQEAgLTExNjA0LDcgKzExNjIyLDEyIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICAgICAgYnJlYWs7Ci0gCSAgICAvKiBGYWxsIHRocm91Z2guICAqLwotIAkgIGNhc2UgMjE6IC8qIFJfTVNQNDMwWF9TWU1fRElGRiAqLwotLQkgICAgc2F2ZWRfc3ltID0gc3ltdGFiICsgZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKTsKLSsJICAgIC8qIFBSIDIxMTM5LiAgKi8KLSsJICAgIGlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCSAgICAgIGVycm9yIChfKCJNU1A0MzAgU1lNX0RJRkYgcmVsb2MgY29udGFpbnMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWx1XG4iKSwKLSsJCSAgICAgc3ltX2luZGV4KTsKLSsJICAgIGVsc2UKLSsJICAgICAgc2F2ZWRfc3ltID0gc3ltdGFiICsgc3ltX2luZGV4OwotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi0gCSAgY2FzZSAxOiAvKiBSX01TUDQzMF8zMiBvciBSX01TUDQzMF9BQlMzMiAqLwotQEAgLTExNjI5LDE2ICsxMTY1MiwyMSBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gCQlpbnQgcmVsb2Nfc2l6ZSA9IHJlbG9jX3R5cGUgPT0gMSA/IDQgOiAyOwotIAkJYmZkX3ZtYSB2YWx1ZTsKLSAKLS0JCXZhbHVlID0gcmVsb2MtPnJfYWRkZW5kCi0tCQkgICsgKHN5bXRhYltnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pXS5zdF92YWx1ZQotLQkJICAgICAtIHNhdmVkX3N5bS0+c3RfdmFsdWUpOwotLQotLQkJaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0tCQkgIC8qIFBSIDIxMTM3ICovCi0tCQkgIGVycm9yIChfKCJNU1A0MzAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0tCQkJIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCWlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCQkgIGVycm9yIChfKCJNU1A0MzAgcmVsb2MgY29udGFpbnMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWx1XG4iKSwKLSsJCQkgc3ltX2luZGV4KTsKLSAJCWVsc2UKLS0JCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0rCQkgIHsKLSsJCSAgICB2YWx1ZSA9IHJlbG9jLT5yX2FkZGVuZCArIChzeW10YWJbc3ltX2luZGV4XS5zdF92YWx1ZQotKwkJCQkJICAgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0rCi0rCQkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0rCQkgICAgICAvKiBQUiAyMTEzNyAqLwotKwkJICAgICAgZXJyb3IgKF8oIk1TUDQzMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCQkgICAgIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCSAgICBlbHNlCi0rCQkgICAgICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSsJCSAgfQotIAotIAkJc2F2ZWRfc3ltID0gTlVMTDsKLSAJCXJldHVybiBUUlVFOwotQEAgLTExNjU4LDEzICsxMTY4NiwyNCBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gICAgICAgewotIAlzdGF0aWMgRWxmX0ludGVybmFsX1N5bSAqIHNhdmVkX3N5bSA9IE5VTEw7Ci0gCi0rCWlmIChyZWxvYyA9PSBOVUxMKQotKwkgIHsKLSsJICAgIHNhdmVkX3N5bSA9IE5VTEw7Ci0rCSAgICByZXR1cm4gVFJVRTsKLSsJICB9Ci0rCi0gCXN3aXRjaCAocmVsb2NfdHlwZSkKLSAJICB7Ci0gCSAgY2FzZSAzNDogLyogUl9NTjEwMzAwX0FMSUdOICovCi0gCSAgICByZXR1cm4gVFJVRTsKLSAJICBjYXNlIDMzOiAvKiBSX01OMTAzMDBfU1lNX0RJRkYgKi8KLS0JICAgIHNhdmVkX3N5bSA9IHN5bXRhYiArIGdldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyk7Ci0rCSAgICBpZiAoc3ltX2luZGV4ID49IG51bV9zeW1zKQotKwkgICAgICBlcnJvciAoXygiTU4xMDMwMF9TWU1fRElGRiByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJICAgICBzeW1faW5kZXgpOwotKwkgICAgZWxzZQotKwkgICAgICBzYXZlZF9zeW0gPSBzeW10YWIgKyBzeW1faW5kZXg7Ci0gCSAgICByZXR1cm4gVFJVRTsKLSsKLSAJICBjYXNlIDE6IC8qIFJfTU4xMDMwMF8zMiAqLwotIAkgIGNhc2UgMjogLyogUl9NTjEwMzAwXzE2ICovCi0gCSAgICBpZiAoc2F2ZWRfc3ltICE9IE5VTEwpCi1AQCAtMTE2NzIsMTUgKzExNzExLDIwIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotLQkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLS0JCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0tCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0tCi0tCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLS0JCSAgZXJyb3IgKF8oIk1OMTAzMDAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0tCQkJIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCWlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCQkgIGVycm9yIChfKCJNTjEwMzAwIHJlbG9jIGNvbnRhaW5zIGludmFsaWQgc3ltYm9sIGluZGV4ICVsdVxuIiksCi0rCQkJIHN5bV9pbmRleCk7Ci0gCQllbHNlCi0tCQkgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIHJlbG9jX3NpemUpOwotKwkJICB7Ci0rCQkgICAgdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQgKyAoc3ltdGFiW3N5bV9pbmRleF0uc3RfdmFsdWUKLSsJCQkJCSAgICAgICAtIHNhdmVkX3N5bS0+c3RfdmFsdWUpOwotKwotKwkJICAgIGlmIChzdGFydCArIHJlbG9jLT5yX29mZnNldCArIHJlbG9jX3NpemUgPj0gZW5kKQotKwkJICAgICAgZXJyb3IgKF8oIk1OMTAzMDAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkJICAgICBzdGFydCArIHJlbG9jLT5yX29mZnNldCArIHJlbG9jX3NpemUsIGVuZCk7Ci0rCQkgICAgZWxzZQotKwkJICAgICAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0rCQkgIH0KLSAKLSAJCXNhdmVkX3N5bSA9IE5VTEw7Ci0gCQlyZXR1cm4gVFJVRTsKLUBAIC0xMTcwMCwxMiArMTE3NDQsMjQgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAlzdGF0aWMgYmZkX3ZtYSBzYXZlZF9zeW0yID0gMDsKLSAJc3RhdGljIGJmZF92bWEgdmFsdWU7Ci0gCi0rCWlmIChyZWxvYyA9PSBOVUxMKQotKwkgIHsKLSsJICAgIHNhdmVkX3N5bTEgPSBzYXZlZF9zeW0yID0gMDsKLSsJICAgIHJldHVybiBUUlVFOwotKwkgIH0KLSsKLSAJc3dpdGNoIChyZWxvY190eXBlKQotIAkgIHsKLSAJICBjYXNlIDB4ODA6IC8qIFJfUkw3OF9TWU0uICAqLwotIAkgICAgc2F2ZWRfc3ltMSA9IHNhdmVkX3N5bTI7Ci0tCSAgICBzYXZlZF9zeW0yID0gc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlOwotLQkgICAgc2F2ZWRfc3ltMiArPSByZWxvYy0+cl9hZGRlbmQ7Ci0rCSAgICBpZiAoc3ltX2luZGV4ID49IG51bV9zeW1zKQotKwkgICAgICBlcnJvciAoXygiUkw3OF9TWU0gcmVsb2MgY29udGFpbnMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWx1XG4iKSwKLSsJCSAgICAgc3ltX2luZGV4KTsKLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJc2F2ZWRfc3ltMiA9IHN5bXRhYltzeW1faW5kZXhdLnN0X3ZhbHVlOwotKwkJc2F2ZWRfc3ltMiArPSByZWxvYy0+cl9hZGRlbmQ7Ci0rCSAgICAgIH0KLSAJICAgIHJldHVybiBUUlVFOwotIAotIAkgIGNhc2UgMHg4MzogLyogUl9STDc4X09Qc3ViLiAgKi8KLUBAIC0xMjM0NSw3ICsxMjQwMSw3IEBAIGFwcGx5X3JlbG9jYXRpb25zICh2b2lkICogICAgICAgICAgICAgICAgICAgICBmaWxlLAotIAotIAkgIHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocnAtPnJfaW5mbyk7Ci0gCi0tCSAgaWYgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAocnAsIHN0YXJ0LCBlbmQsIHN5bXRhYikpCi0rCSAgaWYgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAocnAsIHN0YXJ0LCBlbmQsIHN5bXRhYiwgbnVtX3N5bXMpKQotIAkgICAgY29udGludWU7Ci0gCSAgZWxzZSBpZiAoaXNfbm9uZV9yZWxvYyAocmVsb2NfdHlwZSkpCi0gCSAgICBjb250aW51ZTsKLUBAIC0xMjQ0MSw2ICsxMjQ5Nyw5IEBAIGFwcGx5X3JlbG9jYXRpb25zICh2b2lkICogICAgICAgICAgICAgICAgICAgICBmaWxlLAotIAl9Ci0gCi0gICAgICAgZnJlZSAoc3ltdGFiKTsKLSsgICAgICAvKiBMZXQgdGhlIHRhcmdldCBzcGVjaWZpYyByZWxvYyBwcm9jZXNzaW5nIGNvZGUga25vdyB0aGF0Ci0rCSB3ZSBoYXZlIGZpbmlzaGVkIHdpdGggdGhlc2UgcmVsb2NzLiAgKi8KLSsgICAgICB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwotIAotICAgICAgIGlmIChyZWxvY3NfcmV0dXJuKQotIAl7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNTQwMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAxZDlhMjY5NjkwM2ZjNTlkNmE5MzZmNGFiNGU0NDA3ZWYzMjlkMDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxNyBGZWIgMjAxNyAxNTo1OTo0NSArMDAwMAotU3ViamVjdDogRml4IGlsbGVnYWwgbWVtb3J5IGFjY2Vzc2VzIGluIHJlYWRlbGYgd2hlbiBwYXJzaW5nCi0gYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxMTU2Ci0JKiByZWFkZWxmLmMgKGZpbmRfc2VjdGlvbl9pbl9zZXQpOiBUZXN0IGZvciBpbnZhbGlkIHNlY3Rpb24KLQlpbmRpY2llcy4KLQotQ1ZFOiBDVkUtMjAxNy02OTY5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi0KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICA2ICsrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDEwICsrKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IGJkNjNjOGEwZDguLjFkODQwYjQyZjkgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wMi0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJUFIgYmludXRpbHMvMjExNTYKLSsJKiByZWFkZWxmLmMgKGZpbmRfc2VjdGlvbl9pbl9zZXQpOiBUZXN0IGZvciBpbnZhbGlkIHNlY3Rpb24KLSsJaW5kaWNpZXMuCi0rCi0gMjAxNy0wMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExMzkKLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDdjMTU4YzYzNDIuLjQ5NjA0OTFjNWMgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTY3NSw4ICs2NzUsMTQgQEAgZmluZF9zZWN0aW9uX2luX3NldCAoY29uc3QgY2hhciAqIG5hbWUsIHVuc2lnbmVkIGludCAqIHNldCkKLSAgIGlmIChzZXQgIT0gTlVMTCkKLSAgICAgewotICAgICAgIHdoaWxlICgoaSA9ICpzZXQrKykgPiAwKQotLQlpZiAoc3RyZXEgKFNFQ1RJT05fTkFNRSAoc2VjdGlvbl9oZWFkZXJzICsgaSksIG5hbWUpKQotLQkgIHJldHVybiBzZWN0aW9uX2hlYWRlcnMgKyBpOwotKwl7Ci0rCSAgLyogU2VlIFBSIDIxMTU2IGZvciBhIHJlcHJvZHVjZXIuICAqLwotKwkgIGlmIChpID49IGVsZl9oZWFkZXIuZV9zaG51bSkKLSsJICAgIGNvbnRpbnVlOyAvKiBGSVhNRTogU2hvdWxkIHdlIGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UgPyAgKi8KLSsKLSsJICBpZiAoc3RyZXEgKFNFQ1RJT05fTkFNRSAoc2VjdGlvbl9oZWFkZXJzICsgaSksIG5hbWUpKQotKwkgICAgcmV0dXJuIHNlY3Rpb25faGVhZGVycyArIGk7Ci0rCX0KLSAgICAgfQotIAotICAgcmV0dXJuIGZpbmRfc2VjdGlvbiAobmFtZSk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjlfMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OV8yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWE1ZGVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OV8yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLUZyb20gZWY4MTEyNjMxNGY2NzQ3MmE0NmRiOTU4MTUzMGZiZjVjY2I2YjNmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjAgRmViIDIwMTcgMTQ6NDA6MzkgKzAwMDAKLVN1YmplY3Q6IEZpeCBhbm90aGVyIG1lbW9yeSBhY2Nlc3MgZXJyb3IgaW4gcmVhZGVsZiB3aGVuCi0gcGFyc2luZyBhIGNvcnJ1cHQgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjExNTYKLQkqIGR3YXJmLmMgKGN1X3R1X2luZGV4ZXNfcmVhZCk6IE1vdmUgaW50by4uLgotCShsb2FkX2N1X3R1X2luZGV4ZXMpOiAuLi4gaGVyZS4gIENoYW5nZSB0aGUgdmFyaWFibGUgaW50bwotCXRyaS1zdGF0ZS4gIENoYW5nZSB0aGUgZnVuY3Rpb24gaW50byBib29sZWFuLCByZXR1cm5pbmcKLQlmYWxzZSBpZiB0aGUgaW5kaWNpZXMgY291bGQgbm90IGJlIGxvYWRlZC4KLQkoZmluZF9jdV90dV9zZXQpOiBSZXR1cm4gTlVMTCBpZiB0aGUgaW5kaWNpZXMgY291bGQgbm90IGJlCi0JbG9hZGVkLgotCi1DVkU6IENWRS0yMDE3LTY5NjkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgMTAgKysrKysrKysrKwotIGJpbnV0aWxzL2R3YXJmLmMgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCAxZDg0MGI0MmY5Li41MzM1MmMxODAxIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE3LTAyLTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTE1NgotKwkqIGR3YXJmLmMgKGN1X3R1X2luZGV4ZXNfcmVhZCk6IE1vdmUgaW50by4uLgotKwkobG9hZF9jdV90dV9pbmRleGVzKTogLi4uIGhlcmUuICBDaGFuZ2UgdGhlIHZhcmlhYmxlIGludG8KLSsJdHJpLXN0YXRlLiAgQ2hhbmdlIHRoZSBmdW5jdGlvbiBpbnRvIGJvb2xlYW4sIHJldHVybmluZwotKwlmYWxzZSBpZiB0aGUgaW5kaWNpZXMgY291bGQgbm90IGJlIGxvYWRlZC4KLSsJKGZpbmRfY3VfdHVfc2V0KTogUmV0dXJuIE5VTEwgaWYgdGhlIGluZGljaWVzIGNvdWxkIG5vdCBiZQotKwlsb2FkZWQuCi0rCi0gMjAxNy0wMi0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExNTYKLWRpZmYgLS1naXQgYS9iaW51dGlscy9kd2FyZi5jIGIvYmludXRpbHMvZHdhcmYuYwotaW5kZXggMDE4NGE3YWIyZS4uNmQ4NzljOWI2MSAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL2R3YXJmLmMKLSsrKyBiL2JpbnV0aWxzL2R3YXJmLmMKLUBAIC03Niw3ICs3Niw2IEBAIGludCBkd2FyZl9jaGVjayA9IDA7Ci0gICAgYXMgYSB6ZXJvLXRlcm1pbmF0ZWQgbGlzdCBvZiBzZWN0aW9uIGluZGV4ZXMgY29tcHJpc2luZyBvbmUgc2V0IG9mIGRlYnVnCi0gICAgc2VjdGlvbnMgZnJvbSBhIC5kd28gZmlsZS4gICovCi0gCi0tc3RhdGljIGludCBjdV90dV9pbmRleGVzX3JlYWQgPSAwOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgKnNobmR4X3Bvb2wgPSBOVUxMOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2huZHhfcG9vbF9zaXplID0gMDsKLSBzdGF0aWMgdW5zaWduZWQgaW50IHNobmR4X3Bvb2xfdXNlZCA9IDA7Ci1AQCAtOTksNyArOTgsNyBAQCBzdGF0aWMgaW50IHR1X2NvdW50ID0gMDsKLSBzdGF0aWMgc3RydWN0IGN1X3R1X3NldCAqY3Vfc2V0cyA9IE5VTEw7Ci0gc3RhdGljIHN0cnVjdCBjdV90dV9zZXQgKnR1X3NldHMgPSBOVUxMOwotIAotLXN0YXRpYyB2b2lkIGxvYWRfY3VfdHVfaW5kZXhlcyAodm9pZCAqZmlsZSk7Ci0rc3RhdGljIGJmZF9ib29sZWFuIGxvYWRfY3VfdHVfaW5kZXhlcyAodm9pZCAqKTsKLSAKLSAvKiBWYWx1ZXMgZm9yIGRvX2RlYnVnX2xpbmVzLiAgKi8KLSAjZGVmaW5lIEZMQUdfREVCVUdfTElORVNfUkFXCSAxCi1AQCAtMjcxNSw3ICsyNzE0LDcgQEAgbG9hZF9kZWJ1Z19pbmZvICh2b2lkICogZmlsZSkKLSAgICAgcmV0dXJuIG51bV9kZWJ1Z19pbmZvX2VudHJpZXM7Ci0gCi0gICAvKiBJZiB0aGlzIGlzIGEgRFdBUkYgcGFja2FnZSBmaWxlLCBsb2FkIHRoZSBDVSBhbmQgVFUgaW5kZXhlcy4gICovCi0tICBsb2FkX2N1X3R1X2luZGV4ZXMgKGZpbGUpOwotKyAgKHZvaWQpIGxvYWRfY3VfdHVfaW5kZXhlcyAoZmlsZSk7Ci0gCi0gICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChpbmZvLCBmaWxlKQotICAgICAgICYmIHByb2Nlc3NfZGVidWdfaW5mbyAoJmRlYnVnX2Rpc3BsYXlzIFtpbmZvXS5zZWN0aW9uLCBmaWxlLCBhYmJyZXYsIDEsIDApKQotQEAgLTczNzgsMjEgKzczNzcsMjcgQEAgcHJvY2Vzc19jdV90dV9pbmRleCAoc3RydWN0IGR3YXJmX3NlY3Rpb24gKnNlY3Rpb24sIGludCBkb19kaXNwbGF5KQotICAgIHNlY3Rpb24gc2V0cyB0aGF0IHdlIGNhbiB1c2UgdG8gYXNzb2NpYXRlIGEgLmRlYnVnX2luZm8uZHdvIHNlY3Rpb24KLSAgICB3aXRoIGl0cyBhc3NvY2lhdGVkIC5kZWJ1Z19hYmJyZXYuZHdvIHNlY3Rpb24gaW4gYSAuZHdwIGZpbGUuICAqLwotIAotLXN0YXRpYyB2b2lkCi0rc3RhdGljIGJmZF9ib29sZWFuCi0gbG9hZF9jdV90dV9pbmRleGVzICh2b2lkICpmaWxlKQotIHsKLSsgIHN0YXRpYyBpbnQgY3VfdHVfaW5kZXhlc19yZWFkID0gLTE7IC8qIFRyaS1zdGF0ZSB2YXJpYWJsZS4gICovCi0rCi0gICAvKiBJZiB3ZSBoYXZlIGFscmVhZHkgbG9hZGVkIChvciB0cmllZCB0byBsb2FkKSB0aGUgQ1UgYW5kIFRVIGluZGV4ZXMKLSAgICAgIHRoZW4gZG8gbm90IGJvdGhlciB0byByZXBlYXQgdGhlIHRhc2suICAqLwotLSAgaWYgKGN1X3R1X2luZGV4ZXNfcmVhZCkKLS0gICAgcmV0dXJuOwotLQotLSAgaWYgKGxvYWRfZGVidWdfc2VjdGlvbiAoZHdwX2N1X2luZGV4LCBmaWxlKSkKLS0gICAgcHJvY2Vzc19jdV90dV9pbmRleCAoJmRlYnVnX2Rpc3BsYXlzIFtkd3BfY3VfaW5kZXhdLnNlY3Rpb24sIDApOwotLQotLSAgaWYgKGxvYWRfZGVidWdfc2VjdGlvbiAoZHdwX3R1X2luZGV4LCBmaWxlKSkKLS0gICAgcHJvY2Vzc19jdV90dV9pbmRleCAoJmRlYnVnX2Rpc3BsYXlzIFtkd3BfdHVfaW5kZXhdLnNlY3Rpb24sIDApOwotKyAgaWYgKGN1X3R1X2luZGV4ZXNfcmVhZCA9PSAtMSkKLSsgICAgewotKyAgICAgIGN1X3R1X2luZGV4ZXNfcmVhZCA9IFRSVUU7Ci0rICAKLSsgICAgICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfY3VfaW5kZXgsIGZpbGUpKQotKwlpZiAoISBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF9jdV9pbmRleF0uc2VjdGlvbiwgMCkpCi0rCSAgY3VfdHVfaW5kZXhlc19yZWFkID0gRkFMU0U7Ci0rCi0rICAgICAgaWYgKGxvYWRfZGVidWdfc2VjdGlvbiAoZHdwX3R1X2luZGV4LCBmaWxlKSkKLSsJaWYgKCEgcHJvY2Vzc19jdV90dV9pbmRleCAoJmRlYnVnX2Rpc3BsYXlzIFtkd3BfdHVfaW5kZXhdLnNlY3Rpb24sIDApKQotKwkgIGN1X3R1X2luZGV4ZXNfcmVhZCA9IEZBTFNFOwotKyAgICB9Ci0gCi0tICBjdV90dV9pbmRleGVzX3JlYWQgPSAxOwotKyAgcmV0dXJuIChiZmRfYm9vbGVhbikgY3VfdHVfaW5kZXhlc19yZWFkOwotIH0KLSAKLSAvKiBGaW5kIHRoZSBzZXQgb2Ygc2VjdGlvbnMgdGhhdCBpbmNsdWRlcyBzZWN0aW9uIFNITkRYLiAgKi8KLUBAIC03NDAyLDcgKzc0MDcsOCBAQCBmaW5kX2N1X3R1X3NldCAodm9pZCAqZmlsZSwgdW5zaWduZWQgaW50IHNobmR4KQotIHsKLSAgIHVuc2lnbmVkIGludCBpOwotIAotLSAgbG9hZF9jdV90dV9pbmRleGVzIChmaWxlKTsKLSsgIGlmICghIGxvYWRfY3VfdHVfaW5kZXhlcyAoZmlsZSkpCi0rICAgIHJldHVybiBOVUxMOwotIAotICAgLyogRmluZCBTSE5EWCBpbiB0aGUgc2huZHggcG9vbC4gICovCi0gICBmb3IgKGkgPSAwOyBpIDwgc2huZHhfcG9vbF91c2VkOyBpKyspCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMDkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNTdhMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjA5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSBiMjcwNmNlYWRhYzcyMzllN2IwMmQ0M2YwNTEwMGZjNjUzOGIwZDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMyBGZWIgMjAxNyAxNTowNDozNyArMDAwMAotU3ViamVjdDogRml4IGludmFsaWQgcmVhZCBvZiBzZWN0aW9uIGNvbnRlbnRzIHdoaWxzdCBwcm9jZXNzaW5nIGEgY29ycnVwdCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTEzNQotCSogcmVhZGVsZi5jIChkdW1wX3NlY3Rpb25fYXNfYnl0ZXMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUKLQl1bmNvbXByZXNzX3NlY3Rpb25fY29udGVudHMgcmV0dXJucyBmYWxzZS4KLQotQ1ZFOiBDVkUtMjAxNy03MjA5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTYgKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggNTMzNTJjMTgwMS4uY2Y5Mjc0NGMxMiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTEzNQotKwkqIHJlYWRlbGYuYyAoZHVtcF9zZWN0aW9uX2FzX2J5dGVzKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlCi0rCXVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyByZXR1cm5zIGZhbHNlLgotKwotIDIwMTctMDItMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCVBSIGJpbnV0aWxzLzIxMTU2Ci1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA0OTYwNDkxYzVjLi5mMGU3YjA4MGU4IDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xMjgwMywxMCArMTI4MDMsMTggQEAgZHVtcF9zZWN0aW9uX2FzX2J5dGVzIChFbGZfSW50ZXJuYWxfU2hkciAqIHNlY3Rpb24sCi0gCSAgbmV3X3NpemUgLT0gMTI7Ci0gCX0KLSAKLS0gICAgICBpZiAodW5jb21wcmVzc2VkX3NpemUKLS0JICAmJiB1bmNvbXByZXNzX3NlY3Rpb25fY29udGVudHMgKCYgc3RhcnQsIHVuY29tcHJlc3NlZF9zaXplLAotLQkJCQkJICAmIG5ld19zaXplKSkKLS0Jc2VjdGlvbl9zaXplID0gbmV3X3NpemU7Ci0rICAgICAgaWYgKHVuY29tcHJlc3NlZF9zaXplKQotKwl7Ci0rCSAgaWYgKHVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyAoJiBzdGFydCwgdW5jb21wcmVzc2VkX3NpemUsCi0rCQkJCQkgICAmIG5ld19zaXplKSkKLSsJICAgIHNlY3Rpb25fc2l6ZSA9IG5ld19zaXplOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgZXJyb3IgKF8oIlVuYWJsZSB0byBkZWNvbXByZXNzIHNlY3Rpb24gJXNcbiIpLAotKwkJICAgICBwcmludGFibGVfc2VjdGlvbl9uYW1lIChzZWN0aW9uKSk7Ci0rCSAgICAgIHJldHVybjsKLSsJICAgIH0KLSsJfQotICAgICB9Ci0gCi0gICBpZiAocmVsb2NhdGUpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3OTE3OTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotRnJvbSA0ZGE1OThhNDcyZTFkMjk4ODI1MDM1ZTQ1MmUzYmM2OGY3MTQzMTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAxNCBGZWIgMjAxNyAxNDowNzoyOSArMDAwMAotU3ViamVjdDogRml4IGhhbmRsaW5nIG9mIGNvcnJ1cHQgU1RBQlMgZW51bSB0eXBlIHN0cmluZ3MuCi0KLQlQUiBiaW51dGlscy8yMTE1NwotCSogc3RhYnMuYyAocGFyc2Vfc3RhYl9lbnVtX3R5cGUpOiBDaGVjayBmb3IgY29ycnVwdCBOQU1FOlZBTFVFCi0JcGFpcnMuCi0JKHBhcnNlX251bWJlcik6IEV4aXQgZWFybHkgaWYgcGFzc2VkIGFuIGVtcHR5IHN0cmluZy4KLQotQ1ZFOiBDVkUtMjAxNy03MjEwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi0KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICA3ICsrKysrKysKLSBiaW51dGlscy9zdGFicy5jICAgfCAxNCArKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCBjZjkyNzQ0YzEyLi4wMDQ1ZmJhYWE2IDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAyLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTE1NwotKwkqIHN0YWJzLmMgKHBhcnNlX3N0YWJfZW51bV90eXBlKTogQ2hlY2sgZm9yIGNvcnJ1cHQgTkFNRTpWQUxVRQotKwlwYWlycy4KLSsJKHBhcnNlX251bWJlcik6IEV4aXQgZWFybHkgaWYgcGFzc2VkIGFuIGVtcHR5IHN0cmluZy4KLSsKLSAyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTEzNQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3N0YWJzLmMgYi9iaW51dGlscy9zdGFicy5jCi1pbmRleCBmNWM1ZDJkOGUwLi41ZDAxM2NjMzYxIDEwMDY0NAotLS0tIGEvYmludXRpbHMvc3RhYnMuYwotKysrIGIvYmludXRpbHMvc3RhYnMuYwotQEAgLTIzMiw2ICsyMzIsMTAgQEAgcGFyc2VfbnVtYmVyIChjb25zdCBjaGFyICoqcHAsIGJmZF9ib29sZWFuICpwb3ZlcmZsb3cpCi0gCi0gICBvcmlnID0gKnBwOwotIAotKyAgLyogU3RvcCBlYXJseSBpZiB3ZSBhcmUgcGFzc2VkIGFuIGVtcHR5IHN0cmluZy4gICovCi0rICBpZiAoKm9yaWcgPT0gMCkKLSsgICAgcmV0dXJuIChiZmRfdm1hKSAwOwotKwotICAgZXJybm8gPSAwOwotICAgdWwgPSBzdHJ0b3VsICgqcHAsIChjaGFyICoqKSBwcCwgMCk7Ci0gICBpZiAodWwgKyAxICE9IDAgfHwgZXJybm8gPT0gMCkKLUBAIC0xOTc1LDkgKzE5NzksMTcgQEAgcGFyc2Vfc3RhYl9lbnVtX3R5cGUgKHZvaWQgKmRoYW5kbGUsIGNvbnN0IGNoYXIgKipwcCkKLSAgICAgICBiZmRfc2lnbmVkX3ZtYSB2YWw7Ci0gCi0gICAgICAgcCA9ICpwcDsKLS0gICAgICB3aGlsZSAoKnAgIT0gJzonKQotKyAgICAgIHdoaWxlICgqcCAhPSAnOicgJiYgKnAgIT0gMCkKLSAJKytwOwotIAotKyAgICAgIGlmICgqcCA9PSAwKQotKwl7Ci0rCSAgYmFkX3N0YWIgKG9yaWcpOwotKwkgIGZyZWUgKG5hbWVzKTsKLSsJICBmcmVlICh2YWx1ZXMpOwotKwkgIHJldHVybiBERUJVR19UWVBFX05VTEw7Ci0rCX0KLSsKLSAgICAgICBuYW1lID0gc2F2ZXN0cmluZyAoKnBwLCBwIC0gKnBwKTsKLSAKLSAgICAgICAqcHAgPSBwICsgMTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIyMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc4YzhiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDY5YWNlMjIwMDEwNjM0OGExYjAwZDUwOWE2YTIzNDMzN2MxMDRjMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDEgRGVjIDIwMTYgMTU6MjA6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZyBmYXVsdCBhdHRlbXB0aW5nIHRvIHVuZ2V0IGFuIEVPRiBjaGFyYWN0ZXIuCi0KLQlQUiBnYXMvMjA4OTgKLQkqIGFwcC5jIChkb19zY3J1Yl9jaGFycyk6IERvIG5vdCBhdHRlbXB0IHRvIHVuZ2V0IEVPRi4KLQotQWZmZWN0czogPD0gMi4yOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy03MjIzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gZ2FzL0NoYW5nZUxvZyB8IDMgKysrCi0gZ2FzL2FwcC5jICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2dhcy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvQ2hhbmdlTG9nCi0rKysgZ2l0L2dhcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTYtMTItMDEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rIAotKyAgICAgICBQUiBnYXMvMjA4OTgKLSsgICAgICAgKiBhcHAuYyAoZG9fc2NydWJfY2hhcnMpOiBEbyBub3QgYXR0ZW1wdCB0byB1bmdldCBFT0YuCi0rCi0gMjAxNy0wMy0wMiAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KLSAKLSAJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi1AQCAtMTk4LDcgKzIwMyw2IEBACi0gCSogY29uZmlnL3RjLXBydS5jIChtZF9udW1iZXJfdG9fY2hhcnMpOiBGaXggcGFyYW1ldGVyIHRvIGJlCi0gCXZhbHVlVCwgYXMgZGVjbGFyZWQgaW4gdGMuaC4KLSAJKG1kX2FwcGx5X2ZpeCk6IEZpeCB0byB3b3JrIG9uIDMyLWJpdCBob3N0cy4KLS0+Pj4+Pj4+IDAxMTU2MTEuLi4gUklTQy1WL0dBUzogQ29ycmVjdCBicmFuY2ggcmVsYXhhdGlvbiBmb3Igd2VhayBzeW1ib2xzLgotIAotIDIwMTctMDEtMDIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotSW5kZXg6IGdpdC9nYXMvYXBwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvYXBwLmMKLSsrKyBnaXQvZ2FzL2FwcC5jCi1AQCAtMTM1MCw3ICsxMzUwLDcgQEAgZG9fc2NydWJfY2hhcnMgKHNpemVfdCAoKmdldCkgKGNoYXIgKiwgcwotIAkJICBQVVQgKGNoKTsKLSAJCSAgYnJlYWs7Ci0gCQl9Ci0tCSAgICAgIGVsc2UKLSsJICAgICAgZWxzZSBpZiAoY2gyICE9IEVPRikKLSAJCXsKLSAJCSAgc3RhdGUgPSA5OwotIAkJICBpZiAoY2ggPT0gRU9GIHx8ICFJU19TWU1CT0xfQ09NUE9ORU5UIChjaCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTc2MTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTc2MTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlODYzMWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03NjE0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gYWQzMjk4NmZkZjlkYTFjODc0OGU0N2I4YjQ1MTAwMzk4MjIzZGJhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxMToyMzozNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aGVuIHVzaW5nIGEgbGluayBidWlsdCB3aXRoCi0gY2xhbmcuCi0KLQlQUiBiaW51dGlscy8yMTM0MgotCSogZWxmbGluay5jIChfYmZkX2VsZl9kZWZpbmVfbGlua2FnZV9zeW0pOiBQcmV2ZW50IG51bGwgcG9pbnRlcgotCWRlcmVmZXJlbmNlLgotCShiZmRfZWxmX2ZpbmFsX2xpbmspOiBPbmx5IGluaXRpYWxpemUgdGhlIGV4dGVuZGVkIHN5bWJvbCBpbmRleAotCXNlY3Rpb24gaWYgdGhlcmUgYXJlIGV4dGVuZGVkIHN5bWJvbCB0YWJsZXMgdG8gbGlzdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy03NjE0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2VsZmxpbmsuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvZWxmbGluay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZmxpbmsuYwotKysrIGdpdC9iZmQvZWxmbGluay5jCi1AQCAtMTE5LDE1ICsxMTksMTggQEAgX2JmZF9lbGZfZGVmaW5lX2xpbmthZ2Vfc3ltIChiZmQgKmFiZmQsCi0gCSBkZWZpbmVkIGluIHNoYXJlZCBsaWJyYXJpZXMgY2FuJ3QgYmUgb3ZlcnJpZGRlbiwgYmVjYXVzZSB3ZQotIAkgbG9zZSB0aGUgbGluayB0byB0aGUgYmZkIHdoaWNoIGlzIHZpYSB0aGUgc3ltYm9sIHNlY3Rpb24uICAqLwotICAgICAgIGgtPnJvb3QudHlwZSA9IGJmZF9saW5rX2hhc2hfbmV3OwotKyAgICAgIGJoID0gJmgtPnJvb3Q7Ci0gICAgIH0KLSsgIGVsc2UKLSsgICAgYmggPSBOVUxMOwotIAotLSAgYmggPSAmaC0+cm9vdDsKLSAgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKTsKLSAgIGlmICghX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wgKGluZm8sIGFiZmQsIG5hbWUsIEJTRl9HTE9CQUwsCi0gCQkJCQkgc2VjLCAwLCBOVUxMLCBGQUxTRSwgYmVkLT5jb2xsZWN0LAotIAkJCQkJICZiaCkpCi0gICAgIHJldHVybiBOVUxMOwotICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBiaDsKLSsgIEJGRF9BU1NFUlQgKGggIT0gTlVMTCk7Ci0gICBoLT5kZWZfcmVndWxhciA9IDE7Ci0gICBoLT5ub25fZWxmID0gMDsKLSAgIGgtPnJvb3QubGlua2VyX2RlZiA9IDE7Ci1AQCAtMTE5NzMsMjQgKzExOTc2LDI4IEBAIGJmZF9lbGZfZmluYWxfbGluayAoYmZkICphYmZkLCBzdHJ1Y3QgYmYKLSAgICAgewotICAgICAgIC8qIEZpbmlzaCB1cCBhbmQgd3JpdGUgb3V0IHRoZSBzeW1ib2wgc3RyaW5nIHRhYmxlICguc3RydGFiKQotIAkgc2VjdGlvbi4gICovCi0tICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXN0cnRhYl9oZHI7Ci0rICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXN0cnRhYl9oZHIgPSBOVUxMOwotICAgICAgIGZpbGVfcHRyIG9mZiA9IHN5bXRhYl9oZHItPnNoX29mZnNldCArIHN5bXRhYl9oZHItPnNoX3NpemU7Ci0gCi0tICAgICAgc3ltdGFiX3NobmR4X2hkciA9ICYgZWxmX3N5bXRhYl9zaG5keF9saXN0IChhYmZkKS0+aGRyOwotLSAgICAgIGlmIChzeW10YWJfc2huZHhfaGRyICE9IE5VTEwgJiYgc3ltdGFiX3NobmR4X2hkci0+c2hfbmFtZSAhPSAwKQotKyAgICAgIGlmIChlbGZfc3ltdGFiX3NobmR4X2xpc3QgKGFiZmQpKQotIAl7Ci0tCSAgc3ltdGFiX3NobmR4X2hkci0+c2hfdHlwZSA9IFNIVF9TWU1UQUJfU0hORFg7Ci0tCSAgc3ltdGFiX3NobmR4X2hkci0+c2hfZW50c2l6ZSA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0tCSAgc3ltdGFiX3NobmR4X2hkci0+c2hfYWRkcmFsaWduID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLS0JICBhbXQgPSBiZmRfZ2V0X3N5bWNvdW50IChhYmZkKSAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0tCSAgc3ltdGFiX3NobmR4X2hkci0+c2hfc2l6ZSA9IGFtdDsKLSsJICBzeW10YWJfc2huZHhfaGRyID0gJiBlbGZfc3ltdGFiX3NobmR4X2xpc3QgKGFiZmQpLT5oZHI7Ci0gCi0tCSAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXRhYl9zaG5keF9oZHIsCi0tCQkJCQkJCSAgIG9mZiwgVFJVRSk7Ci0rCSAgaWYgKHN5bXRhYl9zaG5keF9oZHIgIT0gTlVMTCAmJiBzeW10YWJfc2huZHhfaGRyLT5zaF9uYW1lICE9IDApCi0rCSAgICB7Ci0rCSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX3R5cGUgPSBTSFRfU1lNVEFCX1NITkRYOwotKwkgICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLSsJICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfYWRkcmFsaWduID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLSsJICAgICAgYW10ID0gYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotKwkgICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9zaXplID0gYW10OwotIAotLQkgIGlmIChiZmRfc2VlayAoYWJmZCwgc3ltdGFiX3NobmR4X2hkci0+c2hfb2Zmc2V0LCBTRUVLX1NFVCkgIT0gMAotLQkgICAgICB8fCAoYmZkX2J3cml0ZSAoZmxpbmZvLnN5bXNobmR4YnVmLCBhbXQsIGFiZmQpICE9IGFtdCkpCi0tCSAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICAgIG9mZiA9IF9iZmRfZWxmX2Fzc2lnbl9maWxlX3Bvc2l0aW9uX2Zvcl9zZWN0aW9uIChzeW10YWJfc2huZHhfaGRyLAotKwkJCQkJCQkgICAgICAgb2ZmLCBUUlVFKTsKLSsKLSsJICAgICAgaWYgKGJmZF9zZWVrIChhYmZkLCBzeW10YWJfc2huZHhfaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0rCQkgIHx8IChiZmRfYndyaXRlIChmbGluZm8uc3ltc2huZHhidWYsIGFtdCwgYWJmZCkgIT0gYW10KSkKLSsJCXJldHVybiBGQUxTRTsKLSsJICAgIH0KLSAJfQotIAotICAgICAgIHN5bXN0cnRhYl9oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+c3RydGFiX2hkcjsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDQtMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxMzQyCi0rICAgICAgICogZWxmbGluay5jIChfYmZkX2VsZl9kZWZpbmVfbGlua2FnZV9zeW0pOiBQcmV2ZW50IG51bGwgcG9pbnRlcgotKyAgICAgICBkZXJlZmVyZW5jZS4KLSsgICAgICAgKGJmZF9lbGZfZmluYWxfbGluayk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5kZWQgc3ltYm9sIGluZGV4Ci0rICAgICAgIHNlY3Rpb24gaWYgdGhlcmUgYXJlIGV4dGVuZGVkIHN5bWJvbCB0YWJsZXMgdG8gbGlzdC4KLSsKLSAyMDE3LTAzLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJUFIgMjEyMjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUwMGEwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotRnJvbSBiY2U5NjRhYTZjNzc3ZDIzNmZiZDY0MWYyYmM3YmI5MzFjZmU0YmYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjMgQXByIDIwMTcgMTE6MDM6MzQgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIgMjE0MTIsIGdldF9yZWxvY19zZWN0aW9uIGFzc3VtZXMgLnJlbC8ucmVsYSBuYW1lIGZvcgotIFNIVF9SRUwvUkVMQS4KLQotVGhpcyBwYXRjaCBmaXhlcyBhbiBhc3N1bXB0aW9uIG1hZGUgYnkgY29kZSB0aGF0IHJ1bnMgZm9yIG9iamNvcHkgYW5kCi1zdHJpcCwgdGhhdCBTSFRfUkVML1NIUl9SRUxBIHNlY3Rpb25zIGFyZSBhbHdheXMgbmFtZWQgc3RhcnRpbmcgd2l0aCBhCi0ucmVsLy5yZWxhIHByZWZpeC4gIEknbSBhbHNvIG1vZGlmeWluZyB0aGUgaW50ZXJmYWNlIGZvcgotZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24sIHNvIGFueSBiYWNrZW5kIGZ1bmN0aW9uIGp1c3QgbmVlZHMgdG8KLWhhbmRsZSBuYW1lIG1hcHBpbmcuCi0KLQlQUiAyMTQxMgotCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSA8Z2V0X3JlbG9jX3NlY3Rpb24+KTogQ2hhbmdlCi0JcGFyYW1ldGVycyBhbmQgY29tbWVudC4KLQkoX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOiBEZWxldGUuCi0JKF9iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbik6IERlY2xhcmUuCi0JKiBlbGYuYyAoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uLCBlbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOgotCU5ldyBmdW5jdGlvbnMuICBEb24ndCBibGluZGx5IHNraXAgb3ZlciBhc3N1bWVkIC5yZWwvLnJlbGEgcHJlZml4LgotCUV4dHJhY3RlZCBmcm9tLi4KLQkoX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOiAuLmhlcmUuICBEZWxldGUuCi0JKGFzc2lnbl9zZWN0aW9uX251bWJlcnMpOiBDYWxsIGVsZl9nZXRfcmVsb2Nfc2VjdGlvbi4KLQkqIGVsZjY0LXBwYy5jIChlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbik6IERlZmluZS4KLQkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbik6IFVwZGF0ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04MzkzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICAgIHwgMTUgKysrKysrKysrKysrKysKLSBiZmQvZWxmLWJmZC5oICAgICAgfCAgOCArKysrLS0tCi0gYmZkL2VsZi5jICAgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gYmZkL2VsZjY0LXBwYy5jICAgIHwgIDEgKwotIGJmZC9lbGZ4eC10YXJnZXQuaCB8ICAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvZWxmLWJmZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZi1iZmQuaAotKysrIGdpdC9iZmQvZWxmLWJmZC5oCi1AQCAtMTMyMiw4ICsxMzIyLDEwIEBAIHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhCi0gICBiZmRfc2l6ZV90eXBlICgqbWF5YmVfZnVuY3Rpb25fc3ltKSAoY29uc3QgYXN5bWJvbCAqc3ltLCBhc2VjdGlvbiAqc2VjLAotIAkJCQkgICAgICAgYmZkX3ZtYSAqY29kZV9vZmYpOwotIAotLSAgLyogUmV0dXJuIHRoZSBzZWN0aW9uIHdoaWNoIFJFTE9DX1NFQyBhcHBsaWVzIHRvLiAgKi8KLS0gIGFzZWN0aW9uICooKmdldF9yZWxvY19zZWN0aW9uKSAoYXNlY3Rpb24gKnJlbG9jX3NlYyk7Ci0rICAvKiBHaXZlbiBOQU1FLCB0aGUgbmFtZSBvZiBhIHJlbG9jYXRpb24gc2VjdGlvbiBzdHJpcHBlZCBvZiBpdHMKLSsgICAgIC5yZWwvLnJlbGEgcHJlZml4LCByZXR1cm4gdGhlIHNlY3Rpb24gaW4gQUJGRCB0byB3aGljaCB0aGUKLSsgICAgIHJlbG9jYXRpb25zIGFwcGx5LiAgKi8KLSsgIGFzZWN0aW9uICooKmdldF9yZWxvY19zZWN0aW9uKSAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKTsKLSAKLSAgIC8qIENhbGxlZCB0byBzZXQgdGhlIHNoX2ZsYWdzLCBzaF9saW5rIGFuZCBzaF9pbmZvIGZpZWxkcyBvZiBPU0VDVElPTiB3aGljaAotICAgICAgaGFzIGEgdHlwZSA+PSBTSFRfTE9PUy4gIFJldHVybnMgVFJVRSBpZiB0aGUgZmllbGRzIHdlcmUgaW5pdGlhbGlzZWQsCi1AQCAtMjM5Miw3ICsyMzk0LDcgQEAgZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmX2lzX2Z1bmN0aW9uXwotIGV4dGVybiBiZmRfc2l6ZV90eXBlIF9iZmRfZWxmX21heWJlX2Z1bmN0aW9uX3N5bSAoY29uc3QgYXN5bWJvbCAqLCBhc2VjdGlvbiAqLAotIAkJCQkJCSAgYmZkX3ZtYSAqKTsKLSAKLS1leHRlcm4gYXNlY3Rpb24gKl9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uIChhc2VjdGlvbiAqKTsKLStleHRlcm4gYXNlY3Rpb24gKl9iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbiAoYmZkICosIGNvbnN0IGNoYXIgKik7Ci0gCi0gZXh0ZXJuIGludCBiZmRfZWxmX2dldF9kZWZhdWx0X3NlY3Rpb25fdHlwZSAoZmxhZ3dvcmQpOwotIAotSW5kZXg6IGdpdC9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLmMKLSsrKyBnaXQvYmZkL2VsZi5jCi1AQCAtMzUzMiwxNyArMzUzMiwzOSBAQCBiZmRfZWxmX3NldF9ncm91cF9jb250ZW50cyAoYmZkICphYmZkLCBhCi0gICBIX1BVVF8zMiAoYWJmZCwgc2VjLT5mbGFncyAmIFNFQ19MSU5LX09OQ0UgPyBHUlBfQ09NREFUIDogMCwgbG9jKTsKLSB9Ci0gCi0tLyogUmV0dXJuIHRoZSBzZWN0aW9uIHdoaWNoIFJFTE9DX1NFQyBhcHBsaWVzIHRvLiAgKi8KLSsvKiBHaXZlbiBOQU1FLCB0aGUgbmFtZSBvZiBhIHJlbG9jYXRpb24gc2VjdGlvbiBzdHJpcHBlZCBvZiBpdHMKLSsgICAucmVsLy5yZWxhIHByZWZpeCwgcmV0dXJuIHRoZSBzZWN0aW9uIGluIEFCRkQgdG8gd2hpY2ggdGhlCi0rICAgcmVsb2NhdGlvbnMgYXBwbHkuICAqLwotIAotIGFzZWN0aW9uICoKLS1fYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbiAoYXNlY3Rpb24gKnJlbG9jX3NlYykKLStfYmZkX2VsZl9wbHRfZ2V0X3JlbG9jX3NlY3Rpb24gKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICAvKiBJZiBhIHRhcmdldCBuZWVkcyAuZ290LnBsdCBzZWN0aW9uLCByZWxvY2F0aW9ucyBpbiByZWxhLnBsdC9yZWwucGx0Ci0rICAgICBzZWN0aW9uIGxpa2VseSBhcHBseSB0byAuZ290LnBsdCBvciAuZ290IHNlY3Rpb24uICAqLwotKyAgaWYgKGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+d2FudF9nb3RfcGx0Ci0rICAgICAgJiYgc3RyY21wIChuYW1lLCAiLnBsdCIpID09IDApCi0rICAgIHsKLSsgICAgICBhc2VjdGlvbiAqc2VjOwotKwotKyAgICAgIG5hbWUgPSAiLmdvdC5wbHQiOwotKyAgICAgIHNlYyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLSsgICAgICBpZiAoc2VjICE9IE5VTEwpCi0rCXJldHVybiBzZWM7Ci0rICAgICAgbmFtZSA9ICIuZ290IjsKLSsgICAgfQotKwotKyAgcmV0dXJuIGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLSt9Ci0rCi0rLyogUmV0dXJuIHRoZSBzZWN0aW9uIHRvIHdoaWNoIFJFTE9DX1NFQyBhcHBsaWVzLiAgKi8KLSsKLStzdGF0aWMgYXNlY3Rpb24gKgotK2VsZl9nZXRfcmVsb2Nfc2VjdGlvbiAoYXNlY3Rpb24gKnJlbG9jX3NlYykKLSB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdW5zaWduZWQgaW50IHR5cGU7Ci0gICBiZmQgKmFiZmQ7Ci0tCi0tICBpZiAocmVsb2Nfc2VjID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLSAKLSAgIHR5cGUgPSBlbGZfc2VjdGlvbl9kYXRhIChyZWxvY19zZWMpLT50aGlzX2hkci5zaF90eXBlOwotICAgaWYgKHR5cGUgIT0gU0hUX1JFTCAmJiB0eXBlICE9IFNIVF9SRUxBKQotQEAgLTM1NTAsMjggKzM1NzIsMTUgQEAgX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24gKGFzZWN0aW9uICpyZQotIAotICAgLyogV2UgbG9vayB1cCB0aGUgc2VjdGlvbiB0aGUgcmVsb2NzIGFwcGx5IHRvIGJ5IG5hbWUuICAqLwotICAgbmFtZSA9IHJlbG9jX3NlYy0+bmFtZTsKLS0gIGlmICh0eXBlID09IFNIVF9SRUwpCi0tICAgIG5hbWUgKz0gNDsKLS0gIGVsc2UKLS0gICAgbmFtZSArPSA1OwotKyAgaWYgKHN0cm5jbXAgKG5hbWUsICIucmVsIiwgNCkgIT0gMCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICBuYW1lICs9IDQ7Ci0rICBpZiAodHlwZSA9PSBTSFRfUkVMQSAmJiAqbmFtZSsrICE9ICdhJykKLSsgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICAvKiBJZiBhIHRhcmdldCBuZWVkcyAuZ290LnBsdCBzZWN0aW9uLCByZWxvY2F0aW9ucyBpbiByZWxhLnBsdC9yZWwucGx0Ci0tICAgICBzZWN0aW9uIGFwcGx5IHRvIC5nb3QucGx0IHNlY3Rpb24uICAqLwotICAgYWJmZCA9IHJlbG9jX3NlYy0+b3duZXI7Ci0tICBpZiAoZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT53YW50X2dvdF9wbHQKLS0gICAgICAmJiBzdHJjbXAgKG5hbWUsICIucGx0IikgPT0gMCkKLS0gICAgewotLSAgICAgIC8qIC5nb3QucGx0IGlzIGEgbGlua2VyIGNyZWF0ZWQgaW5wdXQgc2VjdGlvbi4gIEl0IG1heSBiZSBtYXBwZWQKLS0JIHRvIHNvbWUgb3RoZXIgb3V0cHV0IHNlY3Rpb24uICBUcnkgdHdvIGxpa2VseSBzZWN0aW9ucy4gICovCi0tICAgICAgbmFtZSA9ICIuZ290LnBsdCI7Ci0tICAgICAgcmVsb2Nfc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOwotLSAgICAgIGlmIChyZWxvY19zZWMgIT0gTlVMTCkKLS0JcmV0dXJuIHJlbG9jX3NlYzsKLS0gICAgICBuYW1lID0gIi5nb3QiOwotLSAgICB9Ci0tCi0tICByZWxvY19zZWMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgbmFtZSk7Ci0tICByZXR1cm4gcmVsb2Nfc2VjOwotKyAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotKyAgcmV0dXJuIGJlZC0+Z2V0X3JlbG9jX3NlY3Rpb24gKGFiZmQsIG5hbWUpOwotIH0KLSAKLSAvKiBBc3NpZ24gYWxsIEVMRiBzZWN0aW9uIG51bWJlcnMuICBUaGUgZHVtbXkgZmlyc3Qgc2VjdGlvbiBpcyBoYW5kbGVkIGhlcmUKLUBAIC0zODMzLDcgKzM4NDIsNyBAQCBhc3NpZ25fc2VjdGlvbl9udW1iZXJzIChiZmQgKmFiZmQsIHN0cnVjCi0gCSAgaWYgKHMgIT0gTlVMTCkKLSAJICAgIGQtPnRoaXNfaGRyLnNoX2xpbmsgPSBlbGZfc2VjdGlvbl9kYXRhIChzKS0+dGhpc19pZHg7Ci0gCi0tCSAgcyA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+Z2V0X3JlbG9jX3NlY3Rpb24gKHNlYyk7Ci0rCSAgcyA9IGVsZl9nZXRfcmVsb2Nfc2VjdGlvbiAoc2VjKTsKLSAJICBpZiAocyAhPSBOVUxMKQotIAkgICAgewotIAkgICAgICBkLT50aGlzX2hkci5zaF9pbmZvID0gZWxmX3NlY3Rpb25fZGF0YSAocyktPnRoaXNfaWR4OwotSW5kZXg6IGdpdC9iZmQvZWxmNjQtcHBjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmNjQtcHBjLmMKLSsrKyBnaXQvYmZkL2VsZjY0LXBwYy5jCi1AQCAtMTIxLDYgKzEyMSw3IEBAIHN0YXRpYyBiZmRfdm1hIG9wZF9lbnRyeV92YWx1ZQotICNkZWZpbmUgZWxmX2JhY2tlbmRfc3BlY2lhbF9zZWN0aW9ucwkgICAgICBwcGM2NF9lbGZfc3BlY2lhbF9zZWN0aW9ucwotICNkZWZpbmUgZWxmX2JhY2tlbmRfbWVyZ2Vfc3ltYm9sX2F0dHJpYnV0ZSAgICBwcGM2NF9lbGZfbWVyZ2Vfc3ltYm9sX2F0dHJpYnV0ZQotICNkZWZpbmUgZWxmX2JhY2tlbmRfbWVyZ2Vfc3ltYm9sCSAgICAgIHBwYzY0X2VsZl9tZXJnZV9zeW1ib2wKLSsjZGVmaW5lIGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uCSAgICAgIGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lCi0gCi0gLyogVGhlIG5hbWUgb2YgdGhlIGR5bmFtaWMgaW50ZXJwcmV0ZXIuICBUaGlzIGlzIHB1dCBpbiB0aGUgLmludGVycAotICAgIHNlY3Rpb24uICAqLwotSW5kZXg6IGdpdC9iZmQvZWxmeHgtdGFyZ2V0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmeHgtdGFyZ2V0LmgKLSsrKyBnaXQvYmZkL2VsZnh4LXRhcmdldC5oCi1AQCAtNzA2LDcgKzcwNiw3IEBACi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbgotLSNkZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24gX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24KLSsjZGVmaW5lIGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uIF9iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbgotICNlbmRpZgotIAotICNpZm5kZWYgZWxmX2JhY2tlbmRfY29weV9zcGVjaWFsX3NlY3Rpb25fZmllbGRzCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTggQEAKLSsyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsgCi0rICAgICAgIFBSIDIxNDEyCi0rICAgICAgICogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSA8Z2V0X3JlbG9jX3NlY3Rpb24+KTogQ2hhbmdlCi0rICAgICAgIHBhcmFtZXRlcnMgYW5kIGNvbW1lbnQuCi0rICAgICAgIChfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbik6IERlbGV0ZS4KLSsgICAgICAgKF9iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbik6IERlY2xhcmUuCi0rICAgICAgICogZWxmLmMgKF9iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbiwgZWxmX2dldF9yZWxvY19zZWN0aW9uKToKLSsgICAgICAgTmV3IGZ1bmN0aW9ucy4gIERvbid0IGJsaW5kbHkgc2tpcCBvdmVyIGFzc3VtZWQgLnJlbC8ucmVsYSBwcmVmaXguCi0rICAgICAgIEV4dHJhY3RlZCBmcm9tLi4KLSsgICAgICAgKF9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uKTogLi5oZXJlLiAgRGVsZXRlLgotKyAgICAgICAoYXNzaWduX3NlY3Rpb25fbnVtYmVycyk6IENhbGwgZWxmX2dldF9yZWxvY19zZWN0aW9uLgotKyAgICAgICAqIGVsZjY0LXBwYy5jIChlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbik6IERlZmluZS4KLSsgICAgICAgKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24pOiBVcGRhdGUuCi0rCi0gMjAxNy0wNC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjEzNDIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZjNmIxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotRnJvbSA3ZWFjZDY2YjA4NmNhYmIxZGFhYjIwODkwZDU0ODE4OTRkNGY1NmIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjMgQXByIDIwMTcgMTU6MjE6MTEgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIgMjE0MTQsIG51bGwgcG9pbnRlciBkZXJlZiBvZiBfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbgotIHN5bQotCi0JUFIgMjE0MTQKLQkqIHNlY3Rpb24uYyAoR0xPQkFMX1NZTV9JTklUKTogTWFrZSBhdmFpbGFibGUgaW4gYmZkLmguCi0JKiBlbGYuYyAobGNvbW1fc3ltKTogTmV3LgotCShfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbik6IFVzZSBsY29tbV9zeW0gc2VjdGlvbiBzeW1ib2wuCi0JKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODM5NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCAgOCArKysrKysrKwotIGJmZC9iZmQtaW4yLmggfCAxMiArKysrKysrKysrKysKLSBiZmQvZWxmLmMgICAgIHwgIDYgKysrKy0tCi0gYmZkL3NlY3Rpb24uYyB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL2JmZC1pbjIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9iZmQtaW4yLmgKLSsrKyBnaXQvYmZkL2JmZC1pbjIuaAotQEAgLTE4MzgsNiArMTgzOCwxOCBAQCBleHRlcm4gYXNlY3Rpb24gX2JmZF9zdGRfc2VjdGlvbls0XTsKLSAgICAgIHsgTlVMTCB9LCB7IE5VTEwgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfQotIAotKy8qIFdlIHVzZSBhIG1hY3JvIHRvIGluaXRpYWxpemUgdGhlIHN0YXRpYyBhc3ltYm9sIHN0cnVjdHVyZXMgYmVjYXVzZQotKyAgIHRyYWRpdGlvbmFsIEMgZG9lcyBub3QgcGVybWl0IHVzIHRvIGluaXRpYWxpemUgYSB1bmlvbiBtZW1iZXIgd2hpbGUKLSsgICBnY2Mgd2FybnMgaWYgd2UgZG9uJ3QgaW5pdGlhbGl6ZSBpdC4KLSsgICB0aGVfYmZkLCBuYW1lLCB2YWx1ZSwgYXR0ciwgc2VjdGlvbiBbLCB1ZGF0YV0gICovCi0rI2lmZGVmIF9fU1REQ19fCi0rI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotKyAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04sIHsgMCB9fQotKyNlbHNlCi0rI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotKyAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04gfQotKyNlbmRpZgotKwotIHZvaWQgYmZkX3NlY3Rpb25fbGlzdF9jbGVhciAoYmZkICopOwotIAotIGFzZWN0aW9uICpiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKTsKLUluZGV4OiBnaXQvYmZkL2VsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZi5jCi0rKysgZ2l0L2JmZC9lbGYuYwotQEAgLTExMTY0LDkgKzExMTY0LDExIEBAIF9iZmRfZWxmX2dldF9zeW50aGV0aWNfc3ltdGFiIChiZmQgKmFiZmQKLSAKLSAvKiBJdCBpcyBvbmx5IHVzZWQgYnkgeDg2LTY0IHNvIGZhci4KLSAgICA/Pz8gVGhpcyByZXBlYXRzICpDT00qIGlkIG9mIHplcm8uICBzZWMtPmlkIGlzIHN1cHBvc2VkIHRvIGJlIHVuaXF1ZSwKLS0gICBidXQgY3VycmVudCB1c2FnZSB3b3VsZCBhbGxvdyBhbGwgb2YgX2JmZF9zdGRfc2VjdGlvbiB0byBiZSB6ZXJvLiAgdCovCi0rICAgYnV0IGN1cnJlbnQgdXNhZ2Ugd291bGQgYWxsb3cgYWxsIG9mIF9iZmRfc3RkX3NlY3Rpb24gdG8gYmUgemVyby4gICovCi0rc3RhdGljIGNvbnN0IGFzeW1ib2wgbGNvbW1fc3ltCi0rICA9IEdMT0JBTF9TWU1fSU5JVCAoIkxBUkdFX0NPTU1PTiIsICZfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbik7Ci0gYXNlY3Rpb24gX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb24KLS0gID0gQkZEX0ZBS0VfU0VDVElPTiAoX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb24sIE5VTEwsCi0rICA9IEJGRF9GQUtFX1NFQ1RJT04gKF9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uLCAmbGNvbW1fc3ltLAotIAkJICAgICAgIkxBUkdFX0NPTU1PTiIsIDAsIFNFQ19JU19DT01NT04pOwotIAotIHZvaWQKLUluZGV4OiBnaXQvYmZkL3NlY3Rpb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9zZWN0aW9uLmMKLSsrKyBnaXQvYmZkL3NlY3Rpb24uYwotQEAgLTczOCwyMCArNzM4LDIwIEBAIENPREVfRlJBR01FTlQKLSAuICAgICB7IE5VTEwgfSwgeyBOVUxMIH0JCQkJCQlcCi0gLiAgICB9Ci0gLgotKy57KiBXZSB1c2UgYSBtYWNybyB0byBpbml0aWFsaXplIHRoZSBzdGF0aWMgYXN5bWJvbCBzdHJ1Y3R1cmVzIGJlY2F1c2UKLSsuICAgdHJhZGl0aW9uYWwgQyBkb2VzIG5vdCBwZXJtaXQgdXMgdG8gaW5pdGlhbGl6ZSBhIHVuaW9uIG1lbWJlciB3aGlsZQotKy4gICBnY2Mgd2FybnMgaWYgd2UgZG9uJ3QgaW5pdGlhbGl6ZSBpdC4KLSsuICAgdGhlX2JmZCwgbmFtZSwgdmFsdWUsIGF0dHIsIHNlY3Rpb24gWywgdWRhdGFdICAqfQotKy4jaWZkZWYgX19TVERDX18KLSsuI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotKy4gIHsgMCwgTkFNRSwgMCwgQlNGX1NFQ1RJT05fU1lNLCBTRUNUSU9OLCB7IDAgfX0KLSsuI2Vsc2UKLSsuI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotKy4gIHsgMCwgTkFNRSwgMCwgQlNGX1NFQ1RJT05fU1lNLCBTRUNUSU9OIH0KLSsuI2VuZGlmCi0rLgotICovCi0gCi0tLyogV2UgdXNlIGEgbWFjcm8gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGljIGFzeW1ib2wgc3RydWN0dXJlcyBiZWNhdXNlCi0tICAgdHJhZGl0aW9uYWwgQyBkb2VzIG5vdCBwZXJtaXQgdXMgdG8gaW5pdGlhbGl6ZSBhIHVuaW9uIG1lbWJlciB3aGlsZQotLSAgIGdjYyB3YXJucyBpZiB3ZSBkb24ndCBpbml0aWFsaXplIGl0LiAgKi8KLS0gLyogdGhlX2JmZCwgbmFtZSwgdmFsdWUsIGF0dHIsIHNlY3Rpb24gWywgdWRhdGFdICovCi0tI2lmZGVmIF9fU1REQ19fCi0tI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotLSAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04sIHsgMCB9fQotLSNlbHNlCi0tI2RlZmluZSBHTE9CQUxfU1lNX0lOSVQoTkFNRSwgU0VDVElPTikgXAotLSAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04gfQotLSNlbmRpZgotLQotIC8qIFRoZXNlIHN5bWJvbHMgYXJlIGdsb2JhbCwgbm90IHNwZWNpZmljIHRvIGFueSBCRkQuICBUaGVyZWZvcmUsIGFueXRoaW5nCi0gICAgdGhhdCB0cmllcyB0byBjaGFuZ2UgdGhlbSBpcyBicm9rZW4sIGFuZCBzaG91bGQgYmUgcmVwYWlyZWQuICAqLwotIAotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSw0ICsxLDEyIEBACi0rCi0gMjAxNy0wNC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rICAgICAgIFBSIDIxNDE0Ci0rICAgICAgICogc2VjdGlvbi5jIChHTE9CQUxfU1lNX0lOSVQpOiBNYWtlIGF2YWlsYWJsZSBpbiBiZmQuaC4KLSsgICAgICAgKiBlbGYuYyAobGNvbW1fc3ltKTogTmV3LgotKyAgICAgICAoX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb24pOiBVc2UgbGNvbW1fc3ltIHNlY3Rpb24gc3ltYm9sLgotKyAgICAgICAqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KLSsKLSsrMjAxNy0wNC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gIAotICAgICAgICBQUiAyMTQxMgotICAgICAgICAqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgPGdldF9yZWxvY19zZWN0aW9uPik6IENoYW5nZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTliY2UzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gZTYzZDEyMzI2OGYyM2E0Y2JjNDVlZTU1ZmI2ZGJjN2Q4NDcyOWRhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMjYgQXByIDIwMTcgMTM6MDc6NDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZy1mYXVsdCBhdHRlbXB0aW5nIHRvIGNvbXByZXNzIGEgZGVidWcgc2VjdGlvbiBpbiBhCi0gY29ycnVwdCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTQzMQotCSogY29tcHJlc3MuYyAoYmZkX2luaXRfc2VjdGlvbl9jb21wcmVzc19zdGF0dXMpOiBDaGVjayB0aGUgcmV0dXJuCi0JdmFsdWUgZnJvbSBiZmRfbWFsbG9jLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTgzOTUKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICB8ICA2ICsrKysrKwotIGJmZC9jb21wcmVzcy5jIHwgMTkgKysrKysrKysrLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL2NvbXByZXNzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvY29tcHJlc3MuYwotKysrIGdpdC9iZmQvY29tcHJlc3MuYwotQEAgLTU0Miw3ICs1NDIsNiBAQCBiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyAoYmZkICphCi0gewotICAgYmZkX3NpemVfdHlwZSB1bmNvbXByZXNzZWRfc2l6ZTsKLSAgIGJmZF9ieXRlICp1bmNvbXByZXNzZWRfYnVmZmVyOwotLSAgYmZkX2Jvb2xlYW4gcmV0OwotIAotICAgLyogRXJyb3IgaWYgbm90IG9wZW5lZCBmb3IgcmVhZC4gICovCi0gICBpZiAoYWJmZC0+ZGlyZWN0aW9uICE9IHJlYWRfZGlyZWN0aW9uCi1AQCAtNTU4LDE4ICs1NTcsMTggQEAgYmZkX2luaXRfc2VjdGlvbl9jb21wcmVzc19zdGF0dXMgKGJmZCAqYQotICAgLyogUmVhZCBpbiB0aGUgZnVsbCBzZWN0aW9uIGNvbnRlbnRzIGFuZCBjb21wcmVzcyBpdC4gICovCi0gICB1bmNvbXByZXNzZWRfc2l6ZSA9IHNlYy0+c2l6ZTsKLSAgIHVuY29tcHJlc3NlZF9idWZmZXIgPSAoYmZkX2J5dGUgKikgYmZkX21hbGxvYyAodW5jb21wcmVzc2VkX3NpemUpOwotKyAgLyogUFIgMjE0MzEgKi8KLSsgIGlmICh1bmNvbXByZXNzZWRfYnVmZmVyID09IE5VTEwpCi0rICAgIHJldHVybiBGQUxTRTsKLSsKLSAgIGlmICghYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWMsIHVuY29tcHJlc3NlZF9idWZmZXIsCi0gCQkJCSAwLCB1bmNvbXByZXNzZWRfc2l6ZSkpCi0tICAgIHJldCA9IEZBTFNFOwotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgdW5jb21wcmVzc2VkX3NpemUgPSBiZmRfY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyAoYWJmZCwgc2VjLAotLQkJCQkJCQkgdW5jb21wcmVzc2VkX2J1ZmZlciwKLS0JCQkJCQkJIHVuY29tcHJlc3NlZF9zaXplKTsKLS0gICAgICByZXQgPSB1bmNvbXByZXNzZWRfc2l6ZSAhPSAwOwotLSAgICB9Ci0rICAgIHJldHVybiBGQUxTRTsKLSAKLS0gIHJldHVybiByZXQ7Ci0rICB1bmNvbXByZXNzZWRfc2l6ZSA9IGJmZF9jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWMsCi0rCQkJCQkJICAgICB1bmNvbXByZXNzZWRfYnVmZmVyLAotKwkJCQkJCSAgICAgdW5jb21wcmVzc2VkX3NpemUpOwotKyAgcmV0dXJuIHVuY29tcHJlc3NlZF9zaXplICE9IDA7Ci0gfQotIAotIC8qCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDQtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNDMxCi0rICAgICAgICogY29tcHJlc3MuYyAoYmZkX2luaXRfc2VjdGlvbl9jb21wcmVzc19zdGF0dXMpOiBDaGVjayB0aGUgcmV0dXJuCi0rICAgICAgIHZhbHVlIGZyb20gYmZkX21hbGxvYy4KLSAKLSAyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAgICAgICAgUFIgMjE0MTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5Nl84Mzk3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk2XzgzOTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZjQyODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk2XzgzOTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBhOTQxMjkxY2FiNzFiOWFjMzU2ZTFjMDM5NjhjMTc3YzAzZTYwMmFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjkgQXByIDIwMTcgMTQ6NDg6MTYgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyMTQzMiwgYnVmZmVyIG92ZXJmbG93IGluIHBlcmZvcm1fcmVsb2NhdGlvbgotCi1UaGUgZXhpc3RpbmcgcmVsb2Mgb2Zmc2V0IHJhbmdlIHRlc3RzIGRpZG4ndCBjYXRjaCBzbWFsbCBuZWdhdGl2ZQotb2Zmc2V0cyBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHJlbG9jIGZpZWxkLgotCi0JUFIgMjE0MzIKLQkqIHJlbG9jLmMgKHJlbG9jX29mZnNldF9pbl9yYW5nZSk6IE5ldyBmdW5jdGlvbi4KLQkoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbiwgYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFVzZSBpdC4KLQkoX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODM5NgotQ1ZFOiBDVkUtMjAxNy04Mzk3Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA3ICsrKysrKysKLSBiZmQvcmVsb2MuYyAgIHwgMzIgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9yZWxvYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3JlbG9jLmMKLSsrKyBnaXQvYmZkL3JlbG9jLmMKLUBAIC01MzgsNiArNTM4LDIyIEBAIGJmZF9jaGVja19vdmVyZmxvdyAoZW51bSBjb21wbGFpbl9vdmVyZmwKLSAgIHJldHVybiBmbGFnOwotIH0KLSAKLSsvKiBIT1dUTyBkZXNjcmliZXMgYSByZWxvY2F0aW9uLCBhdCBvZmZzZXQgT0NURVQuICBSZXR1cm4gd2hldGhlciB0aGUKLSsgICByZWxvY2F0aW9uIGZpZWxkIGlzIHdpdGhpbiBTRUNUSU9OIG9mIEFCRkQuICAqLwotKwotK3N0YXRpYyBiZmRfYm9vbGVhbgotK3JlbG9jX29mZnNldF9pbl9yYW5nZSAocmVsb2NfaG93dG9fdHlwZSAqaG93dG8sIGJmZCAqYWJmZCwKLSsJCSAgICAgICBhc2VjdGlvbiAqc2VjdGlvbiwgYmZkX3NpemVfdHlwZSBvY3RldCkKLSt7Ci0rICBiZmRfc2l6ZV90eXBlIG9jdGV0X2VuZCA9IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGFiZmQsIHNlY3Rpb24pOwotKyAgYmZkX3NpemVfdHlwZSByZWxvY19zaXplID0gYmZkX2dldF9yZWxvY19zaXplIChob3d0byk7Ci0rCi0rICAvKiBUaGUgcmVsb2MgZmllbGQgbXVzdCBiZSBjb250YWluZWQgZW50aXJlbHkgd2l0aGluIHRoZSBzZWN0aW9uLgotKyAgICAgQWxsb3cgemVybyBsZW5ndGggZmllbGRzIChtYXJrZXIgcmVsb2NzIG9yIE5PTkUgcmVsb2NzIHdoZXJlIG5vCi0rICAgICByZWxvY2F0aW9uIHdpbGwgYmUgcGVyZm9ybWVkKSBhdCB0aGUgZW5kIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSsgIHJldHVybiBvY3RldCA8PSBvY3RldF9lbmQgJiYgb2N0ZXQgKyByZWxvY19zaXplIDw9IG9jdGV0X2VuZDsKLSt9Ci0rCi0gLyoKLSBGVU5DVElPTgotIAliZmRfcGVyZm9ybV9yZWxvY2F0aW9uCi1AQCAtNjE4LDEzICs2MzQsMTAgQEAgYmZkX3BlcmZvcm1fcmVsb2NhdGlvbiAoYmZkICphYmZkLAotICAgLyogUFIgMTc1MTI6IGZpbGU6IDBmNjdmNjlkLiAgKi8KLSAgIGlmIChob3d0byA9PSBOVUxMKQotICAgICByZXR1cm4gYmZkX3JlbG9jX3VuZGVmaW5lZDsKLS0KLS0gIC8qIElzIHRoZSBhZGRyZXNzIG9mIHRoZSByZWxvY2F0aW9uIHJlYWxseSB3aXRoaW4gdGhlIHNlY3Rpb24/Ci0tICAgICBJbmNsdWRlIHRoZSBzaXplIG9mIHRoZSByZWxvYyBpbiB0aGUgdGVzdCBmb3Igb3V0IG9mIHJhbmdlIGFkZHJlc3Nlcy4KLS0gICAgIFBSIDE3NTEyOiBmaWxlOiBjMTQ2YWI4YiwgNDZkZmYyN2YsIDM4ZTUzZWJmLiAgKi8KLSsgIAotKyAgLyogSXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlbG9jYXRpb24gcmVhbGx5IHdpdGhpbiB0aGUgc2VjdGlvbj8gICovCi0gICBvY3RldHMgPSByZWxvY19lbnRyeS0+YWRkcmVzcyAqIGJmZF9vY3RldHNfcGVyX2J5dGUgKGFiZmQpOwotLSAgaWYgKG9jdGV0cyArIGJmZF9nZXRfcmVsb2Nfc2l6ZSAoaG93dG8pCi0tICAgICAgPiBiZmRfZ2V0X3NlY3Rpb25fbGltaXRfb2N0ZXRzIChhYmZkLCBpbnB1dF9zZWN0aW9uKSkKLSsgIGlmICghcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChob3d0bywgYWJmZCwgaW5wdXRfc2VjdGlvbiwgb2N0ZXRzKSkKLSAgICAgcmV0dXJuIGJmZF9yZWxvY19vdXRvZnJhbmdlOwotIAotICAgLyogV29yayBvdXQgd2hpY2ggc2VjdGlvbiB0aGUgcmVsb2NhdGlvbiBpcyB0YXJnZXRlZCBhdCBhbmQgdGhlCi1AQCAtMTAxMiw4ICsxMDI1LDcgQEAgYmZkX2luc3RhbGxfcmVsb2NhdGlvbiAoYmZkICphYmZkLAotIAotICAgLyogSXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlbG9jYXRpb24gcmVhbGx5IHdpdGhpbiB0aGUgc2VjdGlvbj8gICovCi0gICBvY3RldHMgPSByZWxvY19lbnRyeS0+YWRkcmVzcyAqIGJmZF9vY3RldHNfcGVyX2J5dGUgKGFiZmQpOwotLSAgaWYgKG9jdGV0cyArIGJmZF9nZXRfcmVsb2Nfc2l6ZSAoaG93dG8pCi0tICAgICAgPiBiZmRfZ2V0X3NlY3Rpb25fbGltaXRfb2N0ZXRzIChhYmZkLCBpbnB1dF9zZWN0aW9uKSkKLSsgIGlmICghcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChob3d0bywgYWJmZCwgaW5wdXRfc2VjdGlvbiwgb2N0ZXRzKSkKLSAgICAgcmV0dXJuIGJmZF9yZWxvY19vdXRvZnJhbmdlOwotIAotICAgLyogV29yayBvdXQgd2hpY2ggc2VjdGlvbiB0aGUgcmVsb2NhdGlvbiBpcyB0YXJnZXRlZCBhdCBhbmQgdGhlCi1AQCAtMTM1MSw4ICsxMzYzLDcgQEAgX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3d0b190eQotICAgYmZkX3NpemVfdHlwZSBvY3RldHMgPSBhZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoaW5wdXRfYmZkKTsKLSAKLSAgIC8qIFNhbml0eSBjaGVjayB0aGUgYWRkcmVzcy4gICovCi0tICBpZiAob2N0ZXRzICsgYmZkX2dldF9yZWxvY19zaXplIChob3d0bykKLS0gICAgICA+IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbikpCi0rICBpZiAoIXJlbG9jX29mZnNldF9pbl9yYW5nZSAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgb2N0ZXRzKSkKLSAgICAgcmV0dXJuIGJmZF9yZWxvY19vdXRvZnJhbmdlOwotIAotICAgLyogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGJhc2ljIHJlbG9jYXRpb24KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDQtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKyAgICAgICBQUiAyMTQzMgotKyAgICAgICAqIHJlbG9jLmMgKHJlbG9jX29mZnNldF9pbl9yYW5nZSk6IE5ldyBmdW5jdGlvbi4KLSsgICAgICAgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24sIGJmZF9pbnN0YWxsX3JlbG9jYXRpb24pOiBVc2UgaXQuCi0rICAgICAgIChfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KLSsKLSAyMDE3LTA0LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTQzMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjlhY2M4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi1Gcm9tIGQ5NDlmZjU2MDdiOWY1OTVlMGVlZDJmZjE1ZmJlNWViODRlYjNhMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDI4IEFwciAyMDE3IDEwOjI4OjA0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBoZWFwLWJ1ZmZlciBvdmVyZmxvdyBidWdzIGNhdXNlZCB3aGVuIGR1bXBpbmcgZGVidWcKLSBpbmZvcm1hdGlvbiBmcm9tIGEgY29ycnVwdCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTQzOAotCSogZHdhcmYuYyAocHJvY2Vzc19leHRlbmRlZF9saW5lX29wKTogRG8gbm90IGFzc3VtZSB0aGF0IHRoZQotCXN0cmluZyBleHRyYWN0ZWQgZnJvbSB0aGUgc2VjdGlvbiBpcyBOVUwgdGVybWluYXRlZC4KLQkoZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nKTogSWYgdGhlIHN0cmluZyByZXRyaWV2ZWQgZnJvbSB0aGUgc2VjdGlvbgotCWlzIG5vdCBOVUwgdGVybWluYXRlZCwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuCi0JKGZldGNoX2luZGlyZWN0X2xpbmVfc3RyaW5nKTogTGlrZXdpc2UuCi0JKGZldGNoX2luZGV4ZWRfc3RyaW5nKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODM5OAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDEwICsrKysrKysrKwotIGJpbnV0aWxzL2R3YXJmLmMgICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvZHdhcmYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL2R3YXJmLmMKLSsrKyBnaXQvYmludXRpbHMvZHdhcmYuYwotQEAgLTQ3MiwxNSArNDcyLDIwIEBAIHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCAodW5zaWduZWQgY2hhcgotICAgICAgIHByaW50ZiAoXygiICBFbnRyeVx0RGlyXHRUaW1lXHRTaXplXHROYW1lXG4iKSk7Ci0gICAgICAgcHJpbnRmICgiICAgJWRcdCIsICsrc3RhdGVfbWFjaGluZV9yZWdzLmxhc3RfZmlsZV9lbnRyeSk7Ci0gCi0tICAgICAgbmFtZSA9IGRhdGE7Ci0tICAgICAgZGF0YSArPSBzdHJubGVuICgoY2hhciAqKSBkYXRhLCBlbmQgLSBkYXRhKSArIDE7Ci0tICAgICAgcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotLSAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKLS0gICAgICBwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0tICAgICAgZGF0YSArPSBieXRlc19yZWFkOwotLSAgICAgIHByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLS0gICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0tICAgICAgcHJpbnRmICgiJXNcblxuIiwgbmFtZSk7Ci0rICAgICAgewotKwlzaXplX3QgbDsKLSsKLSsJbmFtZSA9IGRhdGE7Ci0rCWwgPSBzdHJubGVuICgoY2hhciAqKSBkYXRhLCBlbmQgLSBkYXRhKTsKLSsJZGF0YSArPSBsZW4gKyAxOwotKwlwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0rCWRhdGEgKz0gYnl0ZXNfcmVhZDsKLSsJcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotKwlkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0rCXByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLSsJZGF0YSArPSBieXRlc19yZWFkOwotKwlwcmludGYgKCIlLipzXG5cbiIsIChpbnQpIGwsIG5hbWUpOwotKyAgICAgIH0KLSAKLSAgICAgICBpZiAoKCh1bnNpZ25lZCBpbnQpIChkYXRhIC0gb3JpZ19kYXRhKSAhPSBsZW4pIHx8IGRhdGEgPT0gZW5kKQotIAl3YXJuIChfKCJEV19MTkVfZGVmaW5lX2ZpbGU6IEJhZCBvcGNvZGUgbGVuZ3RoXG4iKSk7Ci1AQCAtNTk3LDE4ICs2MDIsMjcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKgotIGZldGNoX2luZGlyZWN0X3N0cmluZyAoZHdhcmZfdm1hIG9mZnNldCkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmZfc2VjdGlvbiAqc2VjdGlvbiA9ICZkZWJ1Z19kaXNwbGF5cyBbc3RyXS5zZWN0aW9uOwotKyAgY29uc3QgdW5zaWduZWQgY2hhciAqIHJldDsKLSAKLSAgIGlmIChzZWN0aW9uLT5zdGFydCA9PSBOVUxMKQotICAgICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgXygiPG5vIC5kZWJ1Z19zdHIgc2VjdGlvbj4iKTsKLSAKLS0gIGlmIChvZmZzZXQgPiBzZWN0aW9uLT5zaXplKQotKyAgaWYgKG9mZnNldCA+PSBzZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgd2FybiAoXygiRFdfRk9STV9zdHJwIG9mZnNldCB0b28gYmlnOiAlc1xuIiksCi0gCSAgICBkd2FyZl92bWF0b2EgKCJ4Iiwgb2Zmc2V0KSk7Ci0gICAgICAgcmV0dXJuIChjb25zdCB1bnNpZ25lZCBjaGFyICopIF8oIjxvZmZzZXQgaXMgdG9vIGJpZz4iKTsKLSAgICAgfQotKyAgcmV0ID0gc2VjdGlvbi0+c3RhcnQgKyBvZmZzZXQ7Ci0rICAvKiBVbmZvcnR1bmF0ZWx5IHdlIGNhbm5vdCByZWx5IHVwb24gdGhlIC5kZWJ1Z19zdHIgc2VjdGlvbiBlbmRpbmcgd2l0aCBhCi0rICAgICBOVUwgYnl0ZS4gIFNpbmNlIG91ciBjYWxsZXIgaXMgZXhwZWN0aW5nIHRvIHJlY2VpdmUgYSB3ZWxsIGZvcm1lZCBDCi0rICAgICBzdHJpbmcgd2UgdGVzdCBmb3IgdGhlIGxhY2sgb2YgYSB0ZXJtaW5hdGluZyBieXRlIGhlcmUuICAqLwotKyAgaWYgKHN0cm5sZW4gKChjb25zdCBjaGFyICopIHJldCwgc2VjdGlvbi0+c2l6ZSAtIG9mZnNldCkKLSsgICAgICA9PSBzZWN0aW9uLT5zaXplIC0gb2Zmc2V0KQotKyAgICByZXQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKQotKyAgICAgIF8oIjxubyBOVUwgYnl0ZSBhdCBlbmQgb2YgLmRlYnVnX3N0ciBzZWN0aW9uPiIpOwotIAotLSAgcmV0dXJuIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNlY3Rpb24tPnN0YXJ0ICsgb2Zmc2V0OwotKyAgcmV0dXJuIHJldDsgCi0gfQotIAotIHN0YXRpYyBjb25zdCBjaGFyICoKLUBAIC02MjEsNiArNjM1LDcgQEAgZmV0Y2hfaW5kZXhlZF9zdHJpbmcgKGR3YXJmX3ZtYSBpZHgsIHN0cgotICAgc3RydWN0IGR3YXJmX3NlY3Rpb24gKnN0cl9zZWN0aW9uID0gJmRlYnVnX2Rpc3BsYXlzIFtzdHJfc2VjX2lkeF0uc2VjdGlvbjsKLSAgIGR3YXJmX3ZtYSBpbmRleF9vZmZzZXQgPSBpZHggKiBvZmZzZXRfc2l6ZTsKLSAgIGR3YXJmX3ZtYSBzdHJfb2Zmc2V0OwotKyAgY29uc3QgY2hhciAqIHJldDsKLSAKLSAgIGlmIChpbmRleF9zZWN0aW9uLT5zdGFydCA9PSBOVUxMKQotICAgICByZXR1cm4gKGR3byA/IF8oIjxubyAuZGVidWdfc3RyX29mZnNldHMuZHdvIHNlY3Rpb24+IikKLUBAIC02MjgsNyArNjQzLDcgQEAgZmV0Y2hfaW5kZXhlZF9zdHJpbmcgKGR3YXJmX3ZtYSBpZHgsIHN0cgotIAotICAgaWYgKHRoaXNfc2V0ICE9IE5VTEwpCi0gICAgIGluZGV4X29mZnNldCArPSB0aGlzX3NldC0+c2VjdGlvbl9vZmZzZXRzIFtEV19TRUNUX1NUUl9PRkZTRVRTXTsKLS0gIGlmIChpbmRleF9vZmZzZXQgPiBpbmRleF9zZWN0aW9uLT5zaXplKQotKyAgaWYgKGluZGV4X29mZnNldCA+PSBpbmRleF9zZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgd2FybiAoXygiRFdfRk9STV9HTlVfc3RyX2luZGV4IG9mZnNldCB0b28gYmlnOiAlc1xuIiksCi0gCSAgICBkd2FyZl92bWF0b2EgKCJ4IiwgaW5kZXhfb2Zmc2V0KSk7Ci1AQCAtNjQxLDE0ICs2NTYsMjIgQEAgZmV0Y2hfaW5kZXhlZF9zdHJpbmcgKGR3YXJmX3ZtYSBpZHgsIHN0cgotIAotICAgc3RyX29mZnNldCA9IGJ5dGVfZ2V0IChpbmRleF9zZWN0aW9uLT5zdGFydCArIGluZGV4X29mZnNldCwgb2Zmc2V0X3NpemUpOwotICAgc3RyX29mZnNldCAtPSBzdHJfc2VjdGlvbi0+YWRkcmVzczsKLS0gIGlmIChzdHJfb2Zmc2V0ID4gc3RyX3NlY3Rpb24tPnNpemUpCi0rICBpZiAoc3RyX29mZnNldCA+PSBzdHJfc2VjdGlvbi0+c2l6ZSkKLSAgICAgewotICAgICAgIHdhcm4gKF8oIkRXX0ZPUk1fR05VX3N0cl9pbmRleCBpbmRpcmVjdCBvZmZzZXQgdG9vIGJpZzogJXNcbiIpLAotIAkgICAgZHdhcmZfdm1hdG9hICgieCIsIHN0cl9vZmZzZXQpKTsKLSAgICAgICByZXR1cm4gXygiPGluZGlyZWN0IGluZGV4IG9mZnNldCBpcyB0b28gYmlnPiIpOwotICAgICB9Ci0gCi0tICByZXR1cm4gKGNvbnN0IGNoYXIgKikgc3RyX3NlY3Rpb24tPnN0YXJ0ICsgc3RyX29mZnNldDsKLSsgIHJldCA9IChjb25zdCBjaGFyICopIHN0cl9zZWN0aW9uLT5zdGFydCArIHN0cl9vZmZzZXQ7Ci0rICAvKiBVbmZvcnR1bmF0ZWx5IHdlIGNhbm5vdCByZWx5IHVwb24gc3RyX3NlY3Rpb24gZW5kaW5nIHdpdGggYSBOVUwgYnl0ZS4KLSsgICAgIFNpbmNlIG91ciBjYWxsZXIgaXMgZXhwZWN0aW5nIHRvIHJlY2VpdmUgYSB3ZWxsIGZvcm1lZCBDIHN0cmluZyB3ZSB0ZXN0Ci0rICAgICBmb3IgdGhlIGxhY2sgb2YgYSB0ZXJtaW5hdGluZyBieXRlIGhlcmUuICAqLwotKyAgaWYgKHN0cm5sZW4gKHJldCwgc3RyX3NlY3Rpb24tPnNpemUgLSBzdHJfb2Zmc2V0KQotKyAgICAgID09IHN0cl9zZWN0aW9uLT5zaXplIC0gc3RyX29mZnNldCkKLSsgICAgcmV0ID0gKGNvbnN0IGNoYXIgKikgXygiPG5vIE5VTCBieXRlIGF0IGVuZCBvZiBzZWN0aW9uPiIpOwotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEzIEBACi0rMjAxNy0wNC0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE0MzgKLSsgICAgICAgKiBkd2FyZi5jIChwcm9jZXNzX2V4dGVuZGVkX2xpbmVfb3ApOiBEbyBub3QgYXNzdW1lIHRoYXQgdGhlCi0rICAgICAgIHN0cmluZyBleHRyYWN0ZWQgZnJvbSB0aGUgc2VjdGlvbiBpcyBOVUwgdGVybWluYXRlZC4KLSsgICAgICAgKGZldGNoX2luZGlyZWN0X3N0cmluZyk6IElmIHRoZSBzdHJpbmcgcmV0cmlldmVkIGZyb20gdGhlIHNlY3Rpb24KLSsgICAgICAgaXMgbm90IE5VTCB0ZXJtaW5hdGVkLCByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KLSsgICAgICAgKGZldGNoX2luZGlyZWN0X2xpbmVfc3RyaW5nKTogTGlrZXdpc2UuCi0rICAgICAgIChmZXRjaF9pbmRleGVkX3N0cmluZyk6IExpa2V3aXNlLgotKwotIDIwMTctMDItMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCVBSIGJpbnV0aWxzLzIxMTU3CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTg0MjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTg0MjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NjljNjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04NDIxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAzOWZmMWI3OWY2ODdiNjVmNDE0NGRkYjM3OWYyMjU4NzAwMzQ0M2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyIE1heSAyMDE3IDExOjU0OjUzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgbWVtb3J5IGV4aGF1c3Rpb24gZnJvbSBhIGNvcnJ1cHQgUEUgYmluYXJ5IHdpdGggYW4KLSBvdmVybGFyZ2UgbnVtYmVyIG9mIHJlbG9jcy4KLQotCVBSIDIxNDQwCi0JKiBvYmpkdW1wLmMgKGR1bXBfcmVsb2NzX2luX3NlY3Rpb24pOiBDaGVjayBmb3IgYW4gZXhjZXNzaXZlCi0JbnVtYmVyIG9mIHJlbG9jcyBiZWZvcmUgYXR0ZW1wdGluZyB0byBkdW1wIHRoZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODQyMQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmludXRpbHMvb2JqZHVtcC5jIHwgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0zMzExLDYgKzMzMTEsMTQgQEAgZHVtcF9yZWxvY3NfaW5fc2VjdGlvbiAoYmZkICphYmZkLAotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgaWYgKChiZmRfZ2V0X2ZpbGVfZmxhZ3MgKGFiZmQpICYgKEJGRF9JTl9NRU1PUlkgfCBCRkRfTElOS0VSX0NSRUFURUQpKSA9PSAwCi0rICAgICAgJiYgcmVsc2l6ZSA+IGdldF9maWxlX3NpemUgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKSkKLSsgICAgewotKyAgICAgIHByaW50ZiAoIiAodG9vIG1hbnk6IDB4JXgpXG4iLCBzZWN0aW9uLT5yZWxvY19jb3VudCk7Ci0rICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ZpbGVfdHJ1bmNhdGVkKTsKLSsgICAgICBiZmRfZmF0YWwgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSsgICAgfQotKwotICAgcmVscHAgPSAoYXJlbGVudCAqKikgeG1hbGxvYyAocmVsc2l6ZSk7Ci0gICByZWxjb3VudCA9IGJmZF9jYW5vbmljYWxpemVfcmVsb2MgKGFiZmQsIHNlY3Rpb24sIHJlbHBwLCBzeW1zKTsKLSAKLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgMjE0NDAKLSsgICAgICAgKiBvYmpkdW1wLmMgKGR1bXBfcmVsb2NzX2luX3NlY3Rpb24pOiBDaGVjayBmb3IgYW4gZXhjZXNzaXZlCi0rICAgICAgIG51bWJlciBvZiByZWxvY3MgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZHVtcCB0aGVtLgotKwotIDIwMTctMDQtMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNDM4CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTkwMzhfOTA0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOF85MDQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVlZmMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOF85MDQ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSBmMzJiYTcyOTkxZDI0MDZiMjFhYjE3ZWRjMjM0YTJmM2ZhN2ZiMjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAzIEFwciAyMDE3IDExOjAxOjQ1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlYWRlbGY6IFVwZGF0ZSBjaGVjayBmb3IgaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZAotIGluZm9ybWF0aW9uLgotCi0JUFIgYmludXRpbHMvMjEzNDMKLQkqIHJlYWRlbGYuYyAoZ2V0X3Vud2luZF9zZWN0aW9uX3dvcmQpOiBGaXggc25hZnUgY2hlY2tpbmcgZm9yCi0JaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZCBpbmZvcm1hdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05MDM4Ci1DVkU6IENWRS0yMDE3LTkwNDQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCA2ICsrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgZ2l0L2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTc5NzIsOSArNzk3Miw5IEBAIGdldF91bndpbmRfc2VjdGlvbl93b3JkIChzdHJ1Y3QgYXJtX3Vud18KLSAgICAgcmV0dXJuIEZBTFNFOwotIAotICAgLyogSWYgdGhlIG9mZnNldCBpcyBpbnZhbGlkIHRoZW4gZmFpbC4gICovCi0tICBpZiAod29yZF9vZmZzZXQgPiAoc2VjLT5zaF9zaXplIC0gNCkKLS0gICAgICAvKiBQUiAxODg3OSAqLwotLSAgICAgIHx8IChzZWMtPnNoX3NpemUgPCA1ICYmIHdvcmRfb2Zmc2V0ID49IHNlYy0+c2hfc2l6ZSkKLSsgIGlmICgvKiBQUiAyMTM0MyAqLy8qIFBSIDE4ODc5ICovCi0rICAgICAgc2VjLT5zaF9zaXplIDwgNAotKyAgICAgIHx8IHdvcmRfb2Zmc2V0ID4gKHNlYy0+c2hfc2l6ZSAtIDQpCi0gICAgICAgfHwgKChiZmRfc2lnbmVkX3ZtYSkgd29yZF9vZmZzZXQpIDwgMCkKLSAgICAgcmV0dXJuIEZBTFNFOwotIAotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA0LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTM0MwotKyAgICAgICAqIHJlYWRlbGYuYyAoZ2V0X3Vud2luZF9zZWN0aW9uX3dvcmQpOiBGaXggc25hZnUgY2hlY2tpbmcgZm9yCi0rICAgICAgIGludmFsaWQgd29yZCBvZmZzZXRzIGluIEFSTSB1bndpbmQgaW5mb3JtYXRpb24uCi0rCi0gMjAxNy0wNS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgMjE0NDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVkOGY3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTkwMzkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDgyMTU2YWI3MDRiMDhiMTI0ZDMxOWMwZGVjZGJkNDhiM2NhMmRhYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDMgQXByIDIwMTcgMTI6MTQ6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVhZGVsZjogRml4IG92ZXJsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHJlYWRpbmcgYQotIGJpbmFyeSB3aXRoIGFuIGV4Y2Vzc2l2ZSBudW1iZXIgb2YgcHJvZ3JhbSBoZWFkZXJzLgotCi0JUFIgYmludXRpbHMvMjEzNDUKLQkqIHJlYWRlbGYuYyAoZ2V0X3Byb2dyYW1faGVhZGVycyk6IENoZWNrIGZvciB0aGVyZSBiZWluZyB0b28gbWFueQotCXByb2dyYW0gaGVhZGVycyBiZWZvcmUgYXR0ZW1wdGluZyB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05MDM5Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTcgKysrKysrKysrKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgZ2l0L2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTQ3NjUsOSArNDc2NSwxOSBAQCBnZXRfcHJvZ3JhbV9oZWFkZXJzIChGSUxFICogZmlsZSkKLSAgIGlmIChwcm9ncmFtX2hlYWRlcnMgIT0gTlVMTCkKLSAgICAgcmV0dXJuIDE7Ci0gCi0tICBwaGRycyA9IChFbGZfSW50ZXJuYWxfUGhkciAqKSBjbWFsbG9jIChlbGZfaGVhZGVyLmVfcGhudW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKEVsZl9JbnRlcm5hbF9QaGRyKSk7Ci0rICAvKiBCZSBraW5kIHRvIG1lbW9yeSBjaGVja2VycyBieSBsb29raW5nIGZvcgotKyAgICAgZV9waG51bSB2YWx1ZXMgd2hpY2ggd2Uga25vdyBtdXN0IGJlIGludmFsaWQuICAqLwotKyAgaWYgKGVsZl9oZWFkZXIuZV9waG51bQotKyAgICAgICogKGlzXzMyYml0X2VsZiA/IHNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfUGhkcikgOiBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1BoZHIpKQotKyAgICAgID49IGN1cnJlbnRfZmlsZV9zaXplKQotKyAgICB7Ci0rICAgICAgZXJyb3IgKF8oIlRvbyBtYW55IHByb2dyYW0gaGVhZGVycyAtICUjeCAtIHRoZSBmaWxlIGlzIG5vdCB0aGF0IGJpZ1xuIiksCi0rCSAgICAgZWxmX2hlYWRlci5lX3BobnVtKTsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSAKLSsgIHBoZHJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopIGNtYWxsb2MgKGVsZl9oZWFkZXIuZV9waG51bSwKLSsJCQkJCSBzaXplb2YgKEVsZl9JbnRlcm5hbF9QaGRyKSk7Ci0gICBpZiAocGhkcnMgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGVycm9yIChfKCJPdXQgb2YgbWVtb3J5IHJlYWRpbmcgJXUgcHJvZ3JhbSBoZWFkZXJzXG4iKSwKLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsNSArMSwxMSBAQAotIDIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxMzQ1Ci0rICAgICAgICogcmVhZGVsZi5jIChnZXRfcHJvZ3JhbV9oZWFkZXJzKTogQ2hlY2sgZm9yIHRoZXJlIGJlaW5nIHRvbyBtYW55Ci0rICAgICAgIHByb2dyYW0gaGVhZGVycyBiZWZvcmUgYXR0ZW1wdGluZyB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlbS4KLSsKLSsyMDE3LTA0LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotICAgICAgICBQUiBiaW51dGlscy8yMTM0MwotICAgICAgICAqIHJlYWRlbGYuYyAoZ2V0X3Vud2luZF9zZWN0aW9uX3dvcmQpOiBGaXggc25hZnUgY2hlY2tpbmcgZm9yCi0gICAgICAgIGludmFsaWQgd29yZCBvZmZzZXRzIGluIEFSTSB1bndpbmQgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTkwNDBfOTA0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTA0MF85MDQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWM2YTdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTA0MF85MDQyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSA3Mjk2YTYyYTJhMjM3ZjZiMWFkOGRiOGMzOGIwOTBlOWY1OTJjOGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNjowNjozMCArMDEwMAotU3ViamVjdDogW1BBVENIXSByZWFkZWxmOiBmaXggb3V0IG9mIHJhbmdlIHN1YnRyYWN0aW9uLCBzZWcgZmF1bHQgZnJvbSBhIE5VTEwKLSBwb2ludGVyIGFuZCBtZW1vcnkgZXhoYXVzdGlvbiwgYWxsIGZyb20gcGFyc2luZyBjb3JydXB0IGJpbmFyaWVzLgotCi0JUFIgYmludXRpbHMvMjEzNzkKLQkqIHJlYWRlbGYuYyAocHJvY2Vzc19keW5hbWljX3NlY3Rpb24pOiBEZXRlY3Qgb3ZlciBsYXJnZSBzZWN0aW9uCi0Jb2Zmc2V0cyBpbiB0aGUgRFRfU1lNVEFCIGVudHJ5LgotCi0JUFIgYmludXRpbHMvMjEzNDUKLQkqIHJlYWRlbGYuYyAocHJvY2Vzc19taXBzX3NwZWNpZmljKTogQ2F0Y2ggYW4gdW5mZWFzaWJsZSBtZW1vcnkKLQlhbGxvY2F0aW9uIGJlZm9yZSBpdCBoYXBwZW5zIGFuZCBwcmludCBhIHN1aXRhYmxlIGVycm9yIG1lc3NhZ2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTA0MAotQ1ZFOiBDVkUtMjAxNy05MDQyCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgMTIgKysrKysrKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgZ2l0L2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTkzMDYsNiArOTMwNiwxMiBAQCBwcm9jZXNzX2R5bmFtaWNfc2VjdGlvbiAoRklMRSAqIGZpbGUpCi0gCSAgICAgcHJvY2Vzc2luZyB0aGF0LiAgVGhpcyBpcyBvdmVya2lsbCwgSSBrbm93LCBidXQgaXQKLSAJICAgICBzaG91bGQgd29yay4gICovCi0gCSAgc2VjdGlvbi5zaF9vZmZzZXQgPSBvZmZzZXRfZnJvbV92bWEgKGZpbGUsIGVudHJ5LT5kX3VuLmRfdmFsLCAwKTsKLSsJICBpZiAoKGJmZF9zaXplX3R5cGUpIHNlY3Rpb24uc2hfb2Zmc2V0ID4gY3VycmVudF9maWxlX3NpemUpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFNlZSBQUiAyMTM3OSBmb3IgYSByZXByb2R1Y2VyLiAgKi8KLSsJICAgICAgZXJyb3IgKF8oIkludmFsaWQgRFRfU1lNVEFCIGVudHJ5OiAlbHgiKSwgKGxvbmcpIHNlY3Rpb24uc2hfb2Zmc2V0KTsKLSsJICAgICAgcmV0dXJuIEZBTFNFOwotKwkgICAgfQotIAotIAkgIGlmIChhcmNoaXZlX2ZpbGVfb2Zmc2V0ICE9IDApCi0gCSAgICBzZWN0aW9uLnNoX3NpemUgPSBhcmNoaXZlX2ZpbGVfc2l6ZSAtIHNlY3Rpb24uc2hfb2Zmc2V0OwotQEAgLTE1MTc1LDYgKzE1MTgxLDE1IEBAIHByb2Nlc3NfbWlwc19zcGVjaWZpYyAoRklMRSAqIGZpbGUpCi0gCSAgcmV0dXJuIDA7Ci0gCX0KLSAKLSsgICAgICAvKiBQUiAyMTM0NSAtIHByaW50IGEgc2xpZ2h0bHkgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UKLSsJIGlmIHdlIGFyZSBzdXJlIHRoYXQgdGhlIGNtYWxsb2Mgd2lsbCBmYWlsLiAgKi8KLSsgICAgICBpZiAoY29uZmxpY3Rzbm8gKiBzaXplb2YgKCogaWNvbmYpID4gY3VycmVudF9maWxlX3NpemUpCi0rCXsKLSsJICBlcnJvciAoXygiT3ZlcmxhcmdlIG51bWJlciBvZiBjb25mbGljdHMgZGV0ZWN0ZWQ6ICVseFxuIiksCi0rCQkgKGxvbmcpIGNvbmZsaWN0c25vKTsKLSsJICByZXR1cm4gRkFMU0U7Ci0rCX0KLSsKLSAgICAgICBpY29uZiA9IChFbGYzMl9Db25mbGljdCAqKSBjbWFsbG9jIChjb25mbGljdHNubywgc2l6ZW9mICgqIGljb25mKSk7Ci0gICAgICAgaWYgKGljb25mID09IE5VTEwpCi0gCXsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5ZWQwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGU2NDUxOWQxZWQ3ZmQ4Zjk5MGYwNWE1NTYyZDViNWMwYzQ0YjdkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDE3OjEwOjI4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBzZWctZmF1bHQgd2hlbiB0cnlpbmcgdG8gZGlzYXNzZW1ibGUgYSBjb3JydXB0IHNjb3JlCi0gYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1NzYKLQkqIHNjb3JlNy1kaXMuYyAoc2NvcmVfb3Bjb2Rlcyk6IEFkZCBzZW50aW5lbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQyCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gb3Bjb2Rlcy9DaGFuZ2VMb2cgICAgfCA1ICsrKysrCi0gb3Bjb2Rlcy9zY29yZTctZGlzLmMgfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvb3Bjb2Rlcy9zY29yZTctZGlzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL3Njb3JlNy1kaXMuYwotKysrIGdpdC9vcGNvZGVzL3Njb3JlNy1kaXMuYwotQEAgLTUxMyw3ICs1MTMsOCBAQCBzdGF0aWMgc3RydWN0IHNjb3JlX29wY29kZSBzY29yZV9vcGNvZGVzCi0gICB7MHgwMDAwMGQwNSwgMHgwMDAwN2YwZiwgInR2YyEifSwKLSAgIHsweDAwMDAwMDI2LCAweDNlMDAwM2ZmLCAieG9yXHRcdCUyMC0yNHIsICUxNS0xOXIsICUxMC0xNHIifSwKLSAgIHsweDAwMDAwMDI3LCAweDNlMDAwM2ZmLCAieG9yLmNcdFx0JTIwLTI0ciwgJTE1LTE5ciwgJTEwLTE0ciJ9LAotLSAgezB4MDAwMDIwMDcsIDB4MDAwMDcwMGYsICJ4b3IhXHRcdCU4LTExciwgJTQtN3IifQotKyAgezB4MDAwMDIwMDcsIDB4MDAwMDcwMGYsICJ4b3IhXHRcdCU4LTExciwgJTQtN3IifSwKLSsgIHsgMCwgMCwgTlVMTCB9Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdAotSW5kZXg6IGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDggQEAKLSsyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTU3NgotKyAgICAgICAqIHNjb3JlNy1kaXMuYyAoc2NvcmVfb3Bjb2Rlcyk6IEFkZCBzZW50aW5lbC4KLSsKLSAyMDE3LTAzLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJQXBwbHkgZnJvbSBtYXN0ZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM0YTVhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGY0NjFiYmQ4NDdmMTU2NTdmM2RkMmYzMTdjMzBjNzVhNzUyMGRhMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDE3OjAxOjU0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBidWcgd2hlbiBkaXNhc3NlbWJsaW5nIGEgY29ycnVwdCBTSAotIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTc4Ci0JKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IEZpeCBjaGVjayBmb3IgaW52YWxpZAotCWZsYWcgdmFsdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgNiArKysrKysKLSBiZmQvZWxmMzItc2guYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9lbGYzMi1zaC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZjMyLXNoLmMKLSsrKyBnaXQvYmZkL2VsZjMyLXNoLmMKLUBAIC02MzQ0LDcgKzYzNDQsNyBAQCBzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyAoYmZkICphYmZkKQotIHsKLSAgIGZsYWd3b3JkIGZsYWdzID0gZWxmX2VsZmhlYWRlciAoYWJmZCktPmVfZmxhZ3MgJiBFRl9TSF9NQUNIX01BU0s7Ci0gCi0tICBpZiAoZmxhZ3MgPj0gc2l6ZW9mKHNoX2VmX2JmZF90YWJsZSkpCi0rICBpZiAoZmxhZ3MgPj0gQVJSQVlfU0laRSAoc2hfZWZfYmZkX3RhYmxlKSkKLSAgICAgcmV0dXJuIEZBTFNFOwotIAotICAgaWYgKHNoX2VmX2JmZF90YWJsZVtmbGFnc10gPT0gMCkKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsgCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTc4Ci0rICAgICAgICogZWxmMzItc2guYyAoc2hfZWxmX3NldF9tYWNoX2Zyb21fZmxhZ3MpOiBGaXggY2hlY2sgZm9yIGludmFsaWQKLSsgICAgICAgZmxhZyB2YWx1ZS4KLSsKLSAyMDE3LTA0LTI5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAgICAgICAgUFIgMjE0MzIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIzODg1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDc2ODAwY2JhNTk1ZWZjM2ZlOTVhNDQ2YzJkNjY0ZTQyYWU0ZWU4NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEyOjA4OjU3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEhhbmRsZSBFSVRSIHJlY29yZHMgaW4gVk1TIEFscGhhIGJpbmFyaWVzIHdpdGggb3ZlcmxhcmdlCi0gY29tbWFuZCBsZW5ndGggcGFyYW1ldGVycy4KLQotCVBSIGJpbnV0aWxzLzIxNTc5Ci0JKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfc2x1cnBfZXRpcik6IEV4dGVuZCBjaGVjayBvZiBjbWRfbGVuZ3RoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDUKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCAgNSArKysrKwotIGJmZC92bXMtYWxwaGEuYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL3Ztcy1hbHBoYS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3Ztcy1hbHBoYS5jCi0rKysgZ2l0L2JmZC92bXMtYWxwaGEuYwotQEAgLTE3NDEsNiArMTc0MSwxMiBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgX2JmZF9oZXhkdW1wICg4LCBwdHIsIGNtZF9sZW5ndGggLSA0LCAwKTsKLSAjZW5kaWYKLSAKLSsjaWYgVk1TX0RFQlVHCi0rICAgICAgX2JmZF92bXNfZGVidWcgKDQsICJldGlyOiAlcyglZClcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIF9iZmRfdm1zX2V0aXJfbmFtZSAoY21kKSwgY21kKTsKLSsgICAgICBfYmZkX2hleGR1bXAgKDgsIHB0ciwgY21kX2xlbmd0aCAtIDQsIDApOwotKyNlbmRpZgotKwotICAgICAgIHN3aXRjaCAoY21kKQotICAgICAgICAgewotICAgICAgICAgICAvKiBTdGFjayBnbG9iYWwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ0YTQwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIGFlODdmN2U3M2ViYTI5YmQzOGIzYTk2ODRhMTBiOTQ4ZWQ3MTU2MTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDE2OjUwOjAzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTgwCi1iaW51dGlscyAqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfYnl0ZXMpOiBDaGVjayBmb3IgYnVmZmVyIG92ZXJydW4gd2hlbgotCXByaW50aW5nIG91dCByYWUgaW5zbnMuCi0KLWxkCSogdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZDogQWRqdXN0IGV4cGVjdGVkIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ2Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvb2JqZHVtcC5jICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIGxkL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgNSArKysrKwotIGxkL3Rlc3RzdWl0ZS9sZC1uZHMzMi9kaWZmLmQgfCAgNiArKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0xODU1LDIwICsxODU1LDIzIEBAIGRpc2Fzc2VtYmxlX2J5dGVzIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW4KLSAKLSAJICAgICAgZm9yIChqID0gYWRkcl9vZmZzZXQgKiBvcGI7IGogPCBhZGRyX29mZnNldCAqIG9wYiArIHBiOyBqICs9IGJwYykKLSAJCXsKLS0JCSAgaW50IGs7Ci0tCi0tCQkgIGlmIChicGMgPiAxICYmIGluZi0+ZGlzcGxheV9lbmRpYW4gPT0gQkZEX0VORElBTl9MSVRUTEUpCi0tCQkgICAgewotLQkJICAgICAgZm9yIChrID0gYnBjIC0gMTsgayA+PSAwOyBrLS0pCi0tCQkJcHJpbnRmICgiJTAyeCIsICh1bnNpZ25lZCkgZGF0YVtqICsga10pOwotLQkJICAgICAgcHV0Y2hhciAoJyAnKTsKLS0JCSAgICB9Ci0tCQkgIGVsc2UKLSsJCSAgLyogUFIgMjE1ODA6IENoZWNrIGZvciBhIGJ1ZmZlciBlbmRpbmcgZWFybHkuICAqLwotKwkJICBpZiAoaiArIGJwYyA8PSBzdG9wX29mZnNldCAqIG9wYikKLSAJCSAgICB7Ci0tCQkgICAgICBmb3IgKGsgPSAwOyBrIDwgYnBjOyBrKyspCi0tCQkJcHJpbnRmICgiJTAyeCIsICh1bnNpZ25lZCkgZGF0YVtqICsga10pOwotLQkJICAgICAgcHV0Y2hhciAoJyAnKTsKLSsJCSAgICAgIGludCBrOwotKwotKwkJICAgICAgaWYgKGluZi0+ZGlzcGxheV9lbmRpYW4gPT0gQkZEX0VORElBTl9MSVRUTEUpCi0rCQkJewotKwkJCSAgZm9yIChrID0gYnBjIC0gMTsgayA+PSAwOyBrLS0pCi0rCQkJICAgIHByaW50ZiAoIiUwMngiLCAodW5zaWduZWQpIGRhdGFbaiArIGtdKTsKLSsJCQl9Ci0rCQkgICAgICBlbHNlCi0rCQkJewotKwkJCSAgZm9yIChrID0gMDsgayA8IGJwYzsgaysrKQotKwkJCSAgICBwcmludGYgKCIlMDJ4IiwgKHVuc2lnbmVkKSBkYXRhW2ogKyBrXSk7Ci0rCQkJfQotIAkJICAgIH0KLSsJCSAgcHV0Y2hhciAoJyAnKTsKLSAJCX0KLSAKLSAJICAgICAgZm9yICg7IHBiIDwgb2N0ZXRzX3Blcl9saW5lOyBwYiArPSBicGMpCi1JbmRleDogZ2l0L2xkL3Rlc3RzdWl0ZS9sZC1uZHMzMi9kaWZmLmQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9sZC90ZXN0c3VpdGUvbGQtbmRzMzIvZGlmZi5kCi0rKysgZ2l0L2xkL3Rlc3RzdWl0ZS9sZC1uZHMzMi9kaWZmLmQKLUBAIC03LDkgKzcsOSBAQAotIAotIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLmRhdGE6Ci0gMDAwMDgwMDAgPFdPUkQ+ICg3ZSAwMCAwMCAwMHwwMCAwMCAwMCA3ZSkuKgotLTAwMDA4MDA0IDxIQUxGPiAoN2UgMDAgN2UgZmV8MDAgN2UgN2UgZmUpLioKLS0wMDAwODAwNiA8QllURT4gN2UgZmUgMDAgZmUuKgotLTAwMDA4MDA3IDxVTEVCMTI4PiBmZSAwMC4qCi0rMDAwMDgwMDQgPEhBTEY+ICg3ZSAwMHwwMCA3ZSkuKgotKzAwMDA4MDA2IDxCWVRFPiA3ZS4qCi0rMDAwMDgwMDcgPFVMRUIxMjg+IGZlLioKLSAJLi4uCi0gMDAwMDgwMDkgPFVMRUIxMjhfMj4gZmUgMDAuKgotIC4qCi1JbmRleDogZ2l0L2xkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2xkL0NoYW5nZUxvZwotKysrIGdpdC9sZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTgwCi0rICAgICAgICogdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZDogQWRqdXN0IGV4cGVjdGVkIG91dHB1dC4KLSsKLSAyMDE3LTAzLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJKiBsZGxhbmcuYyAob3Blbl9pbnB1dF9iZmRzKTogQ2hlY2sgdGhhdCBsYW5nX2Fzc2lnbm1lbnRfc3RhdGVtZW50CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZWFkNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA2MmI3NmU0YjZlMGI0Y2I1YjNlMDA1M2QxZGU0MDk3YjMyNTc3MDQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMzowODo0NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYWRkcmVzcyB2aW9sYXRpb24gcGFyc2luZyBhIGNvcnJ1cHQgaWVlZSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4MQotCShpZWVlX2FyY2hpdmVfcCk6IFVzZSBhIHN0YXRpYyBidWZmZXIgdG8gYXZvaWQgY29tcGlsZXIgYnVncy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ3Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDIgKysKLSBiZmQvaWVlZS5jICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL2llZWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9pZWVlLmMKLSsrKyBnaXQvYmZkL2llZWUuYwotQEAgLTEzNTcsNyArMTM1Nyw3IEBAIGllZWVfYXJjaGl2ZV9wIChiZmQgKmFiZmQpCi0gewotICAgY2hhciAqbGlicmFyeTsKLSAgIHVuc2lnbmVkIGludCBpOwotLSAgdW5zaWduZWQgY2hhciBidWZmZXJbNTEyXTsKLSsgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls1MTJdOwotICAgZmlsZV9wdHIgYnVmZmVyX29mZnNldCA9IDA7Ci0gICBpZWVlX2FyX2RhdGFfdHlwZSAqc2F2ZSA9IGFiZmQtPnRkYXRhLmllZWVfYXJfZGF0YTsKLSAgIGllZWVfYXJfZGF0YV90eXBlICppZWVlOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDggQEAKLSsyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTU4MQotKyAgICAgICAoaWVlZV9hcmNoaXZlX3ApOiBMaWtld2lzZS4KLSsKLSAyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotICAKLSAgICAgICAgUFIgYmludXRpbHMvMjE1NzgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwNzAyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDYzNjM0YmI0YTEwNzg3N2RkMDhiNjI4MmUyOGUxMWNmZDFhMTY0OWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEyOjQ0OjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGEgcG9zc2libGUgY29tcGlsZXIgYnVnIGJ5IHVzaW5nIGEgc3RhdGljIGJ1ZmZlcgotIGluc3RlYWQgb2YgYSBzdGFjayBsb2NhbCBidWZmZXIuCi0KLQlQUiBiaW51dGlscy8yMTU4MgotCSogaWVlZS5jIChpZWVlX29iamVjdF9wKTogVXNlIGEgc3RhdGljIGJ1ZmZlciB0byBhdm9pZCBjb21waWxlcgotCWJ1Z3MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0OAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA2ICsrKysrKwotIGJmZC9pZWVlLmMgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvaWVlZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2llZWUuYwotKysrIGdpdC9iZmQvaWVlZS5jCi1AQCAtMTg3NSw3ICsxODc1LDcgQEAgaWVlZV9vYmplY3RfcCAoYmZkICphYmZkKQotICAgY2hhciAqcHJvY2Vzc29yOwotICAgdW5zaWduZWQgaW50IHBhcnQ7Ci0gICBpZWVlX2RhdGFfdHlwZSAqaWVlZTsKLS0gIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzMwMF07Ci0rICBzdGF0aWMgdW5zaWduZWQgY2hhciBidWZmZXJbMzAwXTsKLSAgIGllZWVfZGF0YV90eXBlICpzYXZlID0gSUVFRV9EQVRBIChhYmZkKTsKLSAgIGJmZF9zaXplX3R5cGUgYW10OwotIAotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDkgQEAKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotKyAgICAgICBQUiBiaW51dGlscy8yMTU4MgotKyAgICAgICAqIGllZWUuYyAoaWVlZV9vYmplY3RfcCk6IFVzZSBhIHN0YXRpYyBidWZmZXIgdG8gYXZvaWQgY29tcGlsZXIKLSsgICAgICAgYnVncy4KLSsKLSAgICAgICAgUFIgYmludXRpbHMvMjE1ODEKLSAgICAgICAgKGllZWVfYXJjaGl2ZV9wKTogTGlrZXdpc2UuCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYzJhZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotRnJvbSAwOGM3ODgxYjgxNGM1NDZlZmMzOTk2ZmQxZGVjZGYwODc3ZjdhNzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMTo1MjowMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGludmFsaWQgYXJyYXkgYWNjZXNzZXMgd2hlbiBkaXNhc3NlbWJsaW5nIGEgY29ycnVwdAotIGJmaW4gYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODYKLQkqIGJmaW4tZGlzLmMgKGdyZWdzKTogQ2xpcCBpbmRleCB0byBwcmV2ZW50IG92ZXJmbG93LgotCShyZWdzKTogTGlrZXdpc2UuCi0JKHJlZ3NfbG8pOiBMaWtld2lzZS4KLQkocmVnc19oaSk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDkKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgfCA4ICsrKysrKysrCi0gb3Bjb2Rlcy9iZmluLWRpcy5jIHwgOCArKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJUFIgYmludXRpbHMvMjE1ODYKLSsJKiBiZmluLWRpcy5jIChncmVncyk6IENsaXAgaW5kZXggdG8gcHJldmVudCBvdmVyZmxvdy4KLSsJKHJlZ3MpOiBMaWtld2lzZS4KLSsJKHJlZ3NfbG8pOiBMaWtld2lzZS4KLSsJKHJlZ3NfaGkpOiBMaWtld2lzZS4KLSsKLSAyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTU3NgotSW5kZXg6IGdpdC9vcGNvZGVzL2JmaW4tZGlzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL2JmaW4tZGlzLmMKLSsrKyBnaXQvb3Bjb2Rlcy9iZmluLWRpcy5jCi1AQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY28KLSAgIFJFR19QMCwgUkVHX1AxLCBSRUdfUDIsIFJFR19QMywgUkVHX1A0LCBSRUdfUDUsIFJFR19TUCwgUkVHX0ZQLAotIH07Ci0gCi0tI2RlZmluZSBncmVncyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfZ3JlZ3NbKChpKSA8PCAzKSB8ICh4KV0pCi0rI2RlZmluZSBncmVncyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfZ3JlZ3NbKCgoaSkgPDwgMykgfCAoeCkpICYgMTVdKQotIAotIC8qIFtkcmVncyBwcmVncyAoaXJlZ3MgbXJlZ3MpIChicmVncyBscmVncyldLiAgKi8KLSBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvZGVfcmVnc1tdID0KLUBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjbwotICAgUkVHX0IwLCBSRUdfQjEsIFJFR19CMiwgUkVHX0IzLCBSRUdfTDAsIFJFR19MMSwgUkVHX0wyLCBSRUdfTDMsCi0gfTsKLSAKLS0jZGVmaW5lIHJlZ3MoeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NbKChpKSA8PCAzKSB8ICh4KV0pCi0rI2RlZmluZSByZWdzKHgsIGkpIFJFR05BTUUgKGRlY29kZV9yZWdzWygoKGkpIDw8IDMpIHwgKHgpKSAmIDMxXSkKLSAKLSAvKiBbZHJlZ3MgcHJlZ3MgKGlyZWdzIG1yZWdzKSAoYnJlZ3MgbHJlZ3MpIExvdyBIYWxmXS4gICovCi0gc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjb2RlX3JlZ3NfbG9bXSA9Ci1AQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY28KLSAgIFJFR19CTDAsIFJFR19CTDEsIFJFR19CTDIsIFJFR19CTDMsIFJFR19MTDAsIFJFR19MTDEsIFJFR19MTDIsIFJFR19MTDMsCi0gfTsKLSAKLS0jZGVmaW5lIHJlZ3NfbG8oeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NfbG9bKChpKSA8PCAzKSB8ICh4KV0pCi0rI2RlZmluZSByZWdzX2xvKHgsIGkpIFJFR05BTUUgKGRlY29kZV9yZWdzX2xvWygoKGkpIDw8IDMpIHwgKHgpKSAmIDMxXSkKLSAKLSAvKiBbZHJlZ3MgcHJlZ3MgKGlyZWdzIG1yZWdzKSAoYnJlZ3MgbHJlZ3MpIEhpZ2ggSGFsZl0uICAqLwotIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY29kZV9yZWdzX2hpW10gPQotQEAgLTM4Myw3ICszODMsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvCi0gICBSRUdfQkgwLCBSRUdfQkgxLCBSRUdfQkgyLCBSRUdfQkgzLCBSRUdfTEgwLCBSRUdfTEgxLCBSRUdfTEgyLCBSRUdfTEgzLAotIH07Ci0gCi0tI2RlZmluZSByZWdzX2hpKHgsIGkpIFJFR05BTUUgKGRlY29kZV9yZWdzX2hpWygoaSkgPDwgMykgfCAoeCldKQotKyNkZWZpbmUgcmVnc19oaSh4LCBpKSBSRUdOQU1FIChkZWNvZGVfcmVnc19oaVsoKChpKSA8PCAzKSB8ICh4KSkgJiAzMV0pCi0gCi0gc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjb2RlX3N0YXRiaXRzW10gPQotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4ZmE2OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotRnJvbSBkYjVmYTc3MDI2OGJhZjhjYzgyY2Y5YjE0MWQ2OTc5OWZkNDg1ZmUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBKdW4gMjAxNyAxMzozNTowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYWRkcmVzcyB2aW9sYXRpb24gcHJvYmxlbXMgd2hlbiBkaXNhc3NlbWJsaW5nIGEgY29ycnVwdAotIFJYIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTg3Ci0JKiByeC1kZWNvZGUub3BjOiBJbmNsdWRlIGxpYmliZXJ0eS5oCi0JKEdFVF9TQ0FMRSk6IE5ldyBtYWNybyAtIHZhbGlkYXRlcyBhY2Nlc3MgdG8gU0NBTEUgYXJyYXkuCi0JKEdFVF9QU0NBTEUpOiBOZXcgbWFjcm8gLSB2YWxpZGF0ZXMgYWNjZXNzIHRvIFBTQ0FMRSBhcnJheS4KLQkoRElzLCBTSXMsIFMySXMsIHJ4X2Rpc3ApOiBVc2UgbmV3IG1hY3Jvcy4KLQkqIHJ4LWRlY29kZS5jOiBSZWdlbmVyYXRlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTAKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICAgfCAgOSArKysrKysrKysKLSBvcGNvZGVzL3J4LWRlY29kZS5jICAgfCAyNCArKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSBvcGNvZGVzL3J4LWRlY29kZS5vcGMgfCAyNCArKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L29wY29kZXMvcngtZGVjb2RlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL3J4LWRlY29kZS5jCi0rKysgZ2l0L29wY29kZXMvcngtZGVjb2RlLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlICJhbnNpZGVjbC5oIgotICNpbmNsdWRlICJvcGNvZGUvcnguaCIKLSsjaW5jbHVkZSAibGliaWJlcnR5LmgiCi0gCi0gI2RlZmluZSBSWF9PUENPREVfQklHX0VORElBTiAwCi0gCi1AQCAtNDUsNyArNDYsNyBAQCBzdGF0aWMgaW50IHRyYWNlID0gMDsKLSAjZGVmaW5lIExTSVpFIDIKLSAKLSAvKiBUaGVzZSBhcmUgZm9yIHdoZW4gdGhlIHVwcGVyIGJpdHMgYXJlICJkb24ndCBjYXJlIiBvciAidW5kZWZpbmVkIi4gICovCi0tc3RhdGljIGludCBid2xbXSA9Ci0rc3RhdGljIGludCBid2xbNF0gPQotIHsKLSAgIFJYX0J5dGUsCi0gICBSWF9Xb3JkLAotQEAgLTUzLDcgKzU0LDcgQEAgc3RhdGljIGludCBid2xbXSA9Ci0gICBSWF9CYWRfU2l6ZSAvKiBCb2d1cyBpbnN0cnVjdGlvbnMgY2FuIGhhdmUgYSBzaXplIGZpZWxkIHNldCB0byAzLiAgKi8KLSB9OwotIAotLXN0YXRpYyBpbnQgc2J3bFtdID0KLStzdGF0aWMgaW50IHNid2xbNF0gPQotIHsKLSAgIFJYX1NCeXRlLAotICAgUlhfU1dvcmQsCi1AQCAtNjEsNyArNjIsNyBAQCBzdGF0aWMgaW50IHNid2xbXSA9Ci0gICBSWF9CYWRfU2l6ZSAvKiBCb2d1cyBpbnN0cnVjdGlvbnMgY2FuIGhhdmUgYSBzaXplIGZpZWxkIHNldCB0byAzLiAgKi8KLSB9OwotIAotLXN0YXRpYyBpbnQgdWJ3W10gPQotK3N0YXRpYyBpbnQgdWJ3WzRdID0KLSB7Ci0gICBSWF9VQnl0ZSwKLSAgIFJYX1VXb3JkLAotQEAgLTY5LDcgKzcwLDcgQEAgc3RhdGljIGludCB1YndbXSA9Ci0gICBSWF9CYWRfU2l6ZSAvKiBCb2d1cyBpbnN0cnVjdGlvbnMgY2FuIGhhdmUgYSBzaXplIGZpZWxkIHNldCB0byAzLiAgKi8KLSB9OwotIAotLXN0YXRpYyBpbnQgbWVtZXhbXSA9Ci0rc3RhdGljIGludCBtZW1leFs0XSA9Ci0gewotICAgUlhfU0J5dGUsCi0gICBSWF9TV29yZCwKLUBAIC04OSw2ICs5MCw5IEBAIHN0YXRpYyBpbnQgU0NBTEVbXSA9IHsgMSwgMiwgNCwgMCB9OwotIC8qIFRoaXMgaXMgZm9yIHRoZSBwcmVmaXggc2l6ZSBlbnVtLiAgKi8KLSBzdGF0aWMgaW50IFBTQ0FMRVtdID0geyA0LCAxLCAxLCAxLCAyLCAyLCAyLCAzLCA0IH07Ci0gCi0rI2RlZmluZSBHRVRfU0NBTEUoX2luZHgpICAoKHVuc2lnbmVkKShfaW5keCkgPCBBUlJBWV9TSVpFIChTQ0FMRSkgPyBTQ0FMRVsoX2luZHgpXSA6IDApCi0rI2RlZmluZSBHRVRfUFNDQUxFKF9pbmR4KSAoKHVuc2lnbmVkKShfaW5keCkgPCBBUlJBWV9TSVpFIChQU0NBTEUpID8gUFNDQUxFWyhfaW5keCldIDogMCkKLSsKLSBzdGF0aWMgaW50IGZsYWdtYXBbXSA9IHswLCAxLCAyLCAzLCAwLCAwLCAwLCAwLAotIAkJICAgICAgIDE2LCAxNywgMCwgMCwgMCwgMCwgMCwgMCB9OwotIAotQEAgLTEwNyw3ICsxMTEsNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBEQyhjKSAgICAgICBPUCAoMCwgUlhfT3BlcmFuZF9JbW1lZGlhdGUsIDAsIGMpCi0gI2RlZmluZSBEUihyKSAgICAgICBPUCAoMCwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBESShyLGEpICAgICBPUCAoMCwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBESXMocixhLHMpICBPUCAoMCwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgRElzKHIsYSxzKSAgT1AgKDAsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgREQodCxyLHMpICAgcnhfZGlzcCAoMCwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBERihyKSAgICAgICBPUCAoMCwgUlhfT3BlcmFuZF9GbGFnLCAgZmxhZ21hcFtyXSwgMCkKLSAKLUBAIC0xMTUsNyArMTE5LDcgQEAgc3RhdGljIGludCBkc3AzbWFwW10gPSB7IDgsIDksIDEwLCAzLCA0LAotICNkZWZpbmUgU1IocikgICAgICAgT1AgKDEsIFJYX09wZXJhbmRfUmVnaXN0ZXIsICByLCAwKQotICNkZWZpbmUgU1JSKHIpICAgICAgT1AgKDEsIFJYX09wZXJhbmRfVHdvUmVnLCAgciwgMCkKLSAjZGVmaW5lIFNJKHIsYSkgICAgIE9QICgxLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIFNJcyhyLGEscykgIE9QICgxLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBTSXMocixhLHMpICBPUCAoMSwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBTRCh0LHIscykgICByeF9kaXNwICgxLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIFNQKHQscikgICAgIHJ4X2Rpc3AgKDEsIHQsIHIsICh0IT0zKSA/IFJYX1VCeXRlIDogUlhfTG9uZywgbGQpOyBQKHQsIDEpOwotICNkZWZpbmUgU1BtKHQscixtKSAgcnhfZGlzcCAoMSwgdCwgciwgbWVtZXhbbV0sIGxkKTsgcngtPm9wWzFdLnNpemUgPSBtZW1leFttXTsKLUBAIC0xMjQsNyArMTI4LDcgQEAgc3RhdGljIGludCBkc3AzbWFwW10gPSB7IDgsIDksIDEwLCAzLCA0LAotICNkZWZpbmUgUzJDKGkpICAgICAgT1AgKDIsIFJYX09wZXJhbmRfSW1tZWRpYXRlLCAwLCBpKQotICNkZWZpbmUgUzJSKHIpICAgICAgT1AgKDIsIFJYX09wZXJhbmRfUmVnaXN0ZXIsICByLCAwKQotICNkZWZpbmUgUzJJKHIsYSkgICAgT1AgKDIsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgUzJJcyhyLGEscykgT1AgKDIsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIFMySXMocixhLHMpIE9QICgyLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIFMyRCh0LHIscykgIHJ4X2Rpc3AgKDIsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgUzJQKHQscikgICAgcnhfZGlzcCAoMiwgdCwgciwgKHQhPTMpID8gUlhfVUJ5dGUgOiBSWF9Mb25nLCBsZCk7IFAodCwgMik7Ci0gI2RlZmluZSBTMlBtKHQscixtKSByeF9kaXNwICgyLCB0LCByLCBtZW1leFttXSwgbGQpOyByeC0+b3BbMl0uc2l6ZSA9IG1lbWV4W21dOwotQEAgLTIxMSw3ICsyMTUsNyBAQCBpbW1lZGlhdGUgKGludCBzZmllbGQsIGludCBleCwgTG9jYWxEYXRhCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCBpbnQgc2l6ZSwgTG9jYWxEYXRhICogbGQpCi0rcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgc2l6ZSwgTG9jYWxEYXRhICogbGQpCi0gewotICAgaW50IGRpc3A7Ci0gCi1AQCAtMjI4LDcgKzIzMiw3IEBAIHJ4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgaW50IHMKLSAgICAgY2FzZSAxOgotICAgICAgIGxkLT5yeC0+b3Bbbl0udHlwZSA9IFJYX09wZXJhbmRfSW5kaXJlY3Q7Ci0gICAgICAgZGlzcCA9IEdFVEJZVEUgKCk7Ci0tICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogUFNDQUxFW3NpemVdOwotKyAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIEdFVF9QU0NBTEUgKHNpemUpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDI6Ci0gICAgICAgbGQtPnJ4LT5vcFtuXS50eXBlID0gUlhfT3BlcmFuZF9JbmRpcmVjdDsKLUBAIC0yMzgsNyArMjQyLDcgQEAgcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCBpbnQgcwotICNlbHNlCi0gICAgICAgZGlzcCA9IGRpc3AgKyBHRVRCWVRFICgpICogMjU2OwotICNlbmRpZgotLSAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIFBTQ0FMRVtzaXplXTsKLSsgICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBHRVRfUFNDQUxFIChzaXplKTsKLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBhYm9ydCAoKTsKLUluZGV4OiBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUub3BjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9yeC1kZWNvZGUub3BjCi0rKysgZ2l0L29wY29kZXMvcngtZGVjb2RlLm9wYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImFuc2lkZWNsLmgiCi0gI2luY2x1ZGUgIm9wY29kZS9yeC5oIgotKyNpbmNsdWRlICJsaWJpYmVydHkuaCIKLSAKLSAjZGVmaW5lIFJYX09QQ09ERV9CSUdfRU5ESUFOIDAKLSAKLUBAIC00NCw3ICs0NSw3IEBAIHN0YXRpYyBpbnQgdHJhY2UgPSAwOwotICNkZWZpbmUgTFNJWkUgMgotIAotIC8qIFRoZXNlIGFyZSBmb3Igd2hlbiB0aGUgdXBwZXIgYml0cyBhcmUgImRvbid0IGNhcmUiIG9yICJ1bmRlZmluZWQiLiAgKi8KLS1zdGF0aWMgaW50IGJ3bFtdID0KLStzdGF0aWMgaW50IGJ3bFs0XSA9Ci0gewotICAgUlhfQnl0ZSwKLSAgIFJYX1dvcmQsCi1AQCAtNTIsNyArNTMsNyBAQCBzdGF0aWMgaW50IGJ3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBzYndsW10gPQotK3N0YXRpYyBpbnQgc2J3bFs0XSA9Ci0gewotICAgUlhfU0J5dGUsCi0gICBSWF9TV29yZCwKLUBAIC02MCw3ICs2MSw3IEBAIHN0YXRpYyBpbnQgc2J3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCB1YndbXSA9Ci0rc3RhdGljIGludCB1YndbNF0gPQotIHsKLSAgIFJYX1VCeXRlLAotICAgUlhfVVdvcmQsCi1AQCAtNjgsNyArNjksNyBAQCBzdGF0aWMgaW50IHVid1tdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBtZW1leFtdID0KLStzdGF0aWMgaW50IG1lbWV4WzRdID0KLSB7Ci0gICBSWF9TQnl0ZSwKLSAgIFJYX1NXb3JkLAotQEAgLTg4LDYgKzg5LDkgQEAgc3RhdGljIGludCBTQ0FMRVtdID0geyAxLCAyLCA0LCAwIH07Ci0gLyogVGhpcyBpcyBmb3IgdGhlIHByZWZpeCBzaXplIGVudW0uICAqLwotIHN0YXRpYyBpbnQgUFNDQUxFW10gPSB7IDQsIDEsIDEsIDEsIDIsIDIsIDIsIDMsIDQgfTsKLSAKLSsjZGVmaW5lIEdFVF9TQ0FMRShfaW5keCkgICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFNDQUxFKSA/IFNDQUxFWyhfaW5keCldIDogMCkKLSsjZGVmaW5lIEdFVF9QU0NBTEUoX2luZHgpICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFBTQ0FMRSkgPyBQU0NBTEVbKF9pbmR4KV0gOiAwKQotKwotIHN0YXRpYyBpbnQgZmxhZ21hcFtdID0gezAsIDEsIDIsIDMsIDAsIDAsIDAsIDAsCi0gCQkgICAgICAgMTYsIDE3LCAwLCAwLCAwLCAwLCAwLCAwIH07Ci0gCi1AQCAtMTA2LDcgKzExMCw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIERDKGMpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ltbWVkaWF0ZSwgMCwgYykKLSAjZGVmaW5lIERSKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIERJKHIsYSkgICAgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIERJcyhyLGEscykgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBESXMocixhLHMpICBPUCAoMCwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBERCh0LHIscykgICByeF9kaXNwICgwLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIERGKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ZsYWcsICBmbGFnbWFwW3JdLCAwKQotIAotQEAgLTExNCw3ICsxMTgsNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTUihyKSAgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTUlIocikgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9Ud29SZWcsICByLCAwKQotICNkZWZpbmUgU0kocixhKSAgICAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgU0lzKHIsYSxzKSAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIFNJcyhyLGEscykgIE9QICgxLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIFNEKHQscixzKSAgIHJ4X2Rpc3AgKDEsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgU1AodCxyKSAgICAgcnhfZGlzcCAoMSwgdCwgciwgKHQhPTMpID8gUlhfVUJ5dGUgOiBSWF9Mb25nLCBsZCk7IFAodCwgMSk7Ci0gI2RlZmluZSBTUG0odCxyLG0pICByeF9kaXNwICgxLCB0LCByLCBtZW1leFttXSwgbGQpOyByeC0+b3BbMV0uc2l6ZSA9IG1lbWV4W21dOwotQEAgLTEyMyw3ICsxMjcsNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTMkMoaSkgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbW1lZGlhdGUsIDAsIGkpCi0gI2RlZmluZSBTMlIocikgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTMkkocixhKSAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBTMklzKHIsYSxzKSBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgUzJJcyhyLGEscykgT1AgKDIsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgUzJEKHQscixzKSAgcnhfZGlzcCAoMiwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBTMlAodCxyKSAgICByeF9kaXNwICgyLCB0LCByLCAodCE9MykgPyBSWF9VQnl0ZSA6IFJYX0xvbmcsIGxkKTsgUCh0LCAyKTsKLSAjZGVmaW5lIFMyUG0odCxyLG0pIHJ4X2Rpc3AgKDIsIHQsIHIsIG1lbWV4W21dLCBsZCk7IHJ4LT5vcFsyXS5zaXplID0gbWVtZXhbbV07Ci1AQCAtMjEwLDcgKzIxNCw3IEBAIGltbWVkaWF0ZSAoaW50IHNmaWVsZCwgaW50IGV4LCBMb2NhbERhdGEKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1yeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLStyeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIHVuc2lnbmVkIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLSB7Ci0gICBpbnQgZGlzcDsKLSAKLUBAIC0yMjcsNyArMjMxLDcgQEAgcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCBpbnQgcwotICAgICBjYXNlIDE6Ci0gICAgICAgbGQtPnJ4LT5vcFtuXS50eXBlID0gUlhfT3BlcmFuZF9JbmRpcmVjdDsKLSAgICAgICBkaXNwID0gR0VUQllURSAoKTsKLS0gICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBQU0NBTEVbc2l6ZV07Ci0rICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogR0VUX1BTQ0FMRSAoc2l6ZSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMjoKLSAgICAgICBsZC0+cngtPm9wW25dLnR5cGUgPSBSWF9PcGVyYW5kX0luZGlyZWN0OwotQEAgLTIzNyw3ICsyNDEsNyBAQCByeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzCi0gI2Vsc2UKLSAgICAgICBkaXNwID0gZGlzcCArIEdFVEJZVEUgKCkgKiAyNTY7Ci0gI2VuZGlmCi0tICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogUFNDQUxFW3NpemVdOwotKyAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIEdFVF9QU0NBTEUgKHNpemUpOwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgIGFib3J0ICgpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2MxOGNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3NDggKzAsMCBAQAotRnJvbSA2MzMyM2I1YjIzYmQ4M2ZhN2IwNGVhMDBkZmY1OTNjOTMzZTliMGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMjozNzowMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYWRkcmVzcyB2aW9sYXRpb24gd2hlbiBkaXNhc3NlbWJsaW5nIGEgY29ycnVwdCBSTDc4Ci0gYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODgKLQkqIHJsNzgtZGVjb2RlLm9wYyAoT1BfQlVGX0xFTik6IERlZmluZS4KLQkoR0VUQllURSk6IENoZWNrIGZvciB0aGUgaW5kZXggZXhjZWVkaW5nIE9QX0JVRl9MRU4uCi0JKHJsNzhfZGVjb2RlX29wY29kZSk6IFVzZSBPUF9CVUZfTEVOIGFzIHRoZSBsZW5ndGggb2YgdGhlIG9wX2J1ZgotCWFycmF5LgotCSogcmw3OC1kZWNvZGUuYzogUmVnZW5lcmF0ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzUxCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gb3Bjb2Rlcy9DaGFuZ2VMb2cgICAgICAgfCAgIDkgKwotIG9wY29kZXMvcmw3OC1kZWNvZGUuYyAgIHwgODIwICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG9wY29kZXMvcmw3OC1kZWNvZGUub3BjIHwgICA2ICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MjQgaW5zZXJ0aW9ucygrKSwgNDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9DaGFuZ2VMb2cgYi9vcGNvZGVzL0NoYW5nZUxvZwotaW5kZXggMzRiMTg0NC4uYzc3ZjAwYSAxMDA2NDQKLS0tLSBhL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgYi9vcGNvZGVzL0NoYW5nZUxvZwotQEAgLTEsNSArMSwxNCBAQAotIDIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rCVBSIGJpbnV0aWxzLzIxNTg4Ci0rCSogcmw3OC1kZWNvZGUub3BjIChPUF9CVUZfTEVOKTogRGVmaW5lLgotKwkoR0VUQllURSk6IENoZWNrIGZvciB0aGUgaW5kZXggZXhjZWVkaW5nIE9QX0JVRl9MRU4uCi0rCShybDc4X2RlY29kZV9vcGNvZGUpOiBVc2UgT1BfQlVGX0xFTiBhcyB0aGUgbGVuZ3RoIG9mIHRoZSBvcF9idWYKLSsJYXJyYXkuCi0rCSogcmw3OC1kZWNvZGUuYzogUmVnZW5lcmF0ZS4KLSsKLSsyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotIAlQUiBiaW51dGlscy8yMTU4NgotIAkqIGJmaW4tZGlzLmMgKGdyZWdzKTogQ2xpcCBpbmRleCB0byBwcmV2ZW50IG92ZXJmbG93LgotIAkocmVncyk6IExpa2V3aXNlLgotZGlmZiAtLWdpdCBhL29wY29kZXMvcmw3OC1kZWNvZGUuYyBiL29wY29kZXMvcmw3OC1kZWNvZGUuYwotaW5kZXggZDA1NjZlYS4uYjJkNGJkNiAxMDA2NDQKLS0tLSBhL29wY29kZXMvcmw3OC1kZWNvZGUuYwotKysrIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jCi1AQCAtNTEsNyArNTEsOSBAQCB0eXBlZGVmIHN0cnVjdAotICNkZWZpbmUgVygpIHJsNzgtPnNpemUgPSBSTDc4X1dvcmQKLSAKLSAjZGVmaW5lIEFVIEFUVFJJQlVURV9VTlVTRUQKLS0jZGVmaW5lIEdFVEJZVEUoKSAobGQtPm9wIFtsZC0+cmw3OC0+bl9ieXRlcysrXSA9IGxkLT5nZXRieXRlIChsZC0+cHRyKSkKLSsKLSsjZGVmaW5lIE9QX0JVRl9MRU4gMjAKLSsjZGVmaW5lIEdFVEJZVEUoKSAobGQtPnJsNzgtPm5fYnl0ZXMgPCAoT1BfQlVGX0xFTiAtIDEpID8gbGQtPm9wIFtsZC0+cmw3OC0+bl9ieXRlcysrXSA9IGxkLT5nZXRieXRlIChsZC0+cHRyKTogMCkKLSAjZGVmaW5lIEIgKCh1bnNpZ25lZCBsb25nKSBHRVRCWVRFKCkpCi0gCi0gI2RlZmluZSBTWU5UQVgoeCkgcmw3OC0+c3ludGF4ID0geAotQEAgLTE2OSw3ICsxNzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gCQkgIFJMNzhfRGlzX0lzYSBpc2EpCi0gewotICAgTG9jYWxEYXRhIGxkcywgKiBsZCA9ICZsZHM7Ci0tICB1bnNpZ25lZCBjaGFyIG9wX2J1ZlsyMF0gPSB7MH07Ci0rICB1bnNpZ25lZCBjaGFyIG9wX2J1ZltPUF9CVUZfTEVOXSA9IHswfTsKLSAgIHVuc2lnbmVkIGNoYXIgKm9wID0gb3BfYnVmOwotICAgaW50IG9wMCwgb3AxOwotIAotQEAgLTIwMSw3ICsyMDMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJub3AiKTsKLS0jbGluZSA5MTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobm9wKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjE0LDcgKzIxNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDA3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDAwMCAwcncxCQkJYWRkdwklMCwgJTEJCQkJKi8KLS0jbGluZSAyNzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJ3IEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0yMjQsNyArMjI2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICBydyA9IDB4JXhcbiIsIHJ3KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgJTEiKTsKLS0jbGluZSAyNzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihBWCk7IFNSVyhydyk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjM5LDcgKzI0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICVlITEiKTsKLS0jbGluZSAyNjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihBWCk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTI1NCw3ICsyNTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAjJTEiKTsKLS0jbGluZSAyNzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihBWCk7IFNDKElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTI2OSw3ICsyNzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAlMSIpOwotLSNsaW5lIDI3NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTI4NCw3ICsyODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4Y2gJYSwgeCIpOwotLSNsaW5lIDEyMzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTUihYKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzAxLDcgKzMwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjc4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShCLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0zMTYsNyArMzE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAjJTEiKTsKLS0jbGluZSAyMjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzMzLDcgKzMzNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJTEiKTsKLS0jbGluZSAyMjIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMjQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0zNDgsNyArMzUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAjJTEiKTsKLS0jbGluZSAyMTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM2Myw3ICszNjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlMSIpOwotLSNsaW5lIDIwNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIwNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00oSEwsIDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM3OCw3ICszODAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlYTEiKTsKLS0jbGluZSAyMTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0zOTMsNyArMzk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlZSExIik7Ci0tI2xpbmUgMjAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC00MDgsNyArNDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgIyUxIik7Ci0tI2xpbmUgMjgwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjgyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRFIoU1ApOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDI1LDcgKzQyNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImVzOiIpOwotLSNsaW5lIDE5MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDE5NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBERSgpOyBTRSgpOwotICAgICAgICAgICBvcCArKzsKLSAgICAgICAgICAgcGMgKys7Ci1AQCAtNDQwLDcgKzQ0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDE2OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDAwMSAwcmEwCQkJbW92dwklMCwgJTEJCQkJKi8KLS0jbGluZSA4NTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJhIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00NTAsNyArNDUyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJTEiKTsKLS0jbGluZSA4NTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmEpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDYwLDcgKzQ2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDE3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDAwMSAwcmExCQkJbW92dwklMCwgJTEJCQkJKi8KLS0jbGluZSA4NTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJhIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00NzAsNyArNDcyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJTEiKTsKLS0jbGluZSA4NTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNSVyhyYSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDg1LDcgKzQ4Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNzI5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzMxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEIsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDAsNyArNTAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgIyUxIik7Ci0tI2xpbmUgNzI2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzI4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEIsIElNTVUoMikpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MTUsNyArNTE3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgIyUxIik7Ci0tI2xpbmUgMjYwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjYyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZGMpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01MzIsNyArNTM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJTEiKTsKLS0jbGluZSAyNTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTQ3LDcgKzU0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICMlMSIpOwotLSNsaW5lIDI0OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTU2Miw3ICs1NjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlZTEiKTsKLS0jbGluZSAyMzYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMzggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTShITCwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTc3LDcgKzU3OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlYTEiKTsKLS0jbGluZSAyNDUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNDcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTkyLDcgKzU5NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlITEiKTsKLS0jbGluZSAyMzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMzUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02MDcsNyArNjA5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgIyUxIik7Ci0tI2xpbmUgMTE5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBEUihTUCk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC02MjAsNyArNjIyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4Mjc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDEwIDBydzEJCQlzdWJ3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDExOTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTk0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCBydyBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNjMwLDcgKzYzMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcncgPSAweCV4XG4iLCBydyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YncJJTAsICUxIik7Ci0tI2xpbmUgMTE5MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExOTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBEUihBWCk7IFNSVyhydyk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNjQ1LDcgKzY0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YncJJTAsICVlITEiKTsKLS0jbGluZSAxMTgzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE4NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNjYwLDcgKzY2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YncJJTAsICMlMSIpOwotLSNsaW5lIDExODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTQyhJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02NzUsNyArNjc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJTEiKTsKLS0jbGluZSAxMTk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE5NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTY5MCw3ICs2OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDc0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc0MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShDLCBJTU1VKDIpKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzA1LDcgKzcwNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjg0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjg2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShDLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC03MjAsNyArNzIyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAjJTEiKTsKLS0jbGluZSAxMTQ2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC03MzcsNyArNzM5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlMSIpOwotLSNsaW5lIDExNDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzUyLDcgKzc1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgIyUxIik7Ci0tI2xpbmUgMTEzNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTc2Nyw3ICs3NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICVlMSIpOwotLSNsaW5lIDExMjIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTI0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTShITCwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzgyLDcgKzc4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWVhMSIpOwotLSNsaW5lIDExMjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTMwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzk3LDcgKzc5OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUhMSIpOwotLSNsaW5lIDExMTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC04MDgsNyArODEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MzY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDExIDByZzAJCQltb3Z3CSUwLCAjJTEJCQkJKi8KLS0jbGluZSA4NTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC04MTgsNyArODIwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByZyA9IDB4JXhcbiIsIHJnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgIyUxIik7Ci0tI2xpbmUgODUzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODU1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFJXKHJnKTsgU0MoSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtODMwLDcgKzgzMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDAwOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBiaXQgMDAwMAkJYnRjbHIJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSA0MTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODQwLDcgKzg0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnRjbHIJJXMxLCAkJWEwIik7Ci0tI2xpbmUgNDE2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDE4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kX2NsZWFyKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKFQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC04NTAsNyArODUyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDE6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDAxCQlidGNscgklMSwgJCVhMAkJCSovCi0tI2xpbmUgNDEwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDEyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTg2MCw3ICs4NjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJ0Y2xyCSUxLCAkJWEwIik7Ci0tI2xpbmUgNDEwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDEyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kX2NsZWFyKTsgREMocGMrSU1NUygxKSszKTsgU1IoQSk7IFNCKGJpdCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtODY4LDcgKzg3MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDAyOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBiaXQgMDAxMAkJYnQJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSA0MDIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODc4LDcgKzg4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJXMxLCAkJWEwIik7Ci0tI2xpbmUgNDAyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDA0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKFQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC04ODgsNyArODkwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDM6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDExCQlidAklMSwgJCVhMAkJCSovCi0tI2xpbmUgMzk2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTg5OCw3ICs5MDAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJ0CSUxLCAkJWEwIik7Ci0tI2xpbmUgMzk2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoQSk7IFNCKGJpdCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtOTA2LDcgKzkwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA0OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBiaXQgMDEwMAkJYmYJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSAzNjMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTE2LDcgKzkxOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYmYJJXMxLCAkJWEwIik7Ci0tI2xpbmUgMzYzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzY1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKEYpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC05MjYsNyArOTI4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDU6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMTAxCQliZgklMSwgJCVhMAkJCSovCi0tI2xpbmUgMzU3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzU5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTkzNiw3ICs5MzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJmCSUxLCAkJWEwIik7Ci0tI2xpbmUgMzU3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzU5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoQSk7IFNCKGJpdCk7IENPTkQoRik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtOTQ0LDcgKzk0Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMDExMQkJc2hsCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwNzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDc3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTk1NCw3ICs5NTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGNudCA9IDB4JXhcbiIsIGNudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNobAklMCwgJTEiKTsKLS0jbGluZSAxMDc1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaGwpOyBEUihDKTsgU0MoY250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05NjIsNyArOTY0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDg6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGNudCAxMDAwCQlzaGwJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA3MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGNudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTcyLDcgKzk3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hsCSUwLCAlMSIpOwotLSNsaW5lIDEwNzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IERSKEIpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTk4MCw3ICs5ODIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwOToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwY250IDEwMDEJCXNobAklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgY250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC05OTAsNyArOTkyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBjbnQgPSAweCV4XG4iLCBjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGwJJTAsICUxIik7Ci0tI2xpbmUgMTA2OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2hsKTsgRFIoQSk7IFNDKGNudCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtOTk4LDcgKzEwMDAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwYToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwY250IDEwMTAJCXNocgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgY250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMDA4LDcgKzEwMTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGNudCA9IDB4JXhcbiIsIGNudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNocgklMCwgJTEiKTsKLS0jbGluZSAxMDg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaHIpOyBEUihBKTsgU0MoY250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMDE2LDcgKzEwMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwYjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwY250IDEwMTEJCXNhcgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDMzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgY250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMDI2LDcgKzEwMjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGNudCA9IDB4JXhcbiIsIGNudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNhcgklMCwgJTEiKTsKLS0jbGluZSAxMDMzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzYXIpOyBEUihBKTsgU0MoY250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMDM1LDcgKzEwMzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4YzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSB3Y250IDExMDAJCXNobHcJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHdjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDBmOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwNDUsNyArMTA0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgd2NudCA9IDB4JXhcbiIsIHdjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGx3CSUwLCAlMSIpOwotLSNsaW5lIDEwODEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDgzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IFcoKTsgRFIoQkMpOyBTQyh3Y250KTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTA1Niw3ICsxMDU4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgd2NudCAxMTAxCQlzaGx3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwNzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCB3Y250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwZjsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMDY2LDcgKzEwNjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHdjbnQgPSAweCV4XG4iLCB3Y250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hsdwklMCwgJTEiKTsKLS0jbGluZSAxMDc4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA4MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaGwpOyBXKCk7IERSKEFYKTsgU0Mod2NudCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTA3NSw3ICsxMDc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGU6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgd2NudCAxMTEwCQlzaHJ3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCB3Y250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwZjsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMDg1LDcgKzEwODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHdjbnQgPSAweCV4XG4iLCB3Y250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hydwklMCwgJTEiKTsKLS0jbGluZSAxMDg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA5MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaHIpOyBXKCk7IERSKEFYKTsgU0Mod2NudCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTEwOTYsNyArMTA5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDhmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIHdjbnQgMTExMQkJc2FydwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDM2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgd2NudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MGY7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTEwNiw3ICsxMTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICB3Y250ID0gMHgleFxuIiwgd2NudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNhcncJJTAsICUxIik7Ci0tI2xpbmUgMTAzNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMzggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2FyKTsgVygpOyBEUihBWCk7IFNDKHdjbnQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xMTE2LDcgKzExMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMDAJCWJ0Y2xyCSVzMSwgJCVhMAkJCSovCi0tI2xpbmUgNDEzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDE1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExMjYsNyArMTEyOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnRjbHIJJXMxLCAkJWEwIik7Ci0tI2xpbmUgNDEzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDE1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kX2NsZWFyKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsgREMocGMrSU1NUygxKSs0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMTM0LDcgKzExMzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMDEJCWJ0Y2xyCSVlMSwgJCVhMAkJCSovCi0tI2xpbmUgNDA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExNDQsNyArMTE0Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnRjbHIJJWUxLCAkJWEwIik7Ci0tI2xpbmUgNDA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kX2NsZWFyKTsgREMocGMrSU1NUygxKSszKTsgU00oSEwsMCk7IFNCKGJpdCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTE1Miw3ICsxMTU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMDEwCQlidAklczEsICQlYTAJCQkqLwotLSNsaW5lIDM5OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQwMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTYyLDcgKzExNjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJ0CSVzMSwgJCVhMCIpOwotLSNsaW5lIDM5OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQwMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IFNNKE5vbmUsIFNGUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTE3MCw3ICsxMTcyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODM6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMDExCQlidAklZTEsICQlYTAJCQkqLwotLSNsaW5lIDM5MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM5NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTgwLDcgKzExODIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJ0CSVlMSwgJCVhMCIpOwotLSNsaW5lIDM5MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM5NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMyk7IFNNKEhMLDApOyBTQihiaXQpOyBDT05EKFQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTExODgsNyArMTE5MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDg0OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDEwMAkJYmYJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSAzNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTE5OCw3ICsxMjAwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiZgklczEsICQlYTAiKTsKLS0jbGluZSAzNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKEYpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEyMDYsNyArMTIwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDg1OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDEwMQkJYmYJJWUxLCAkJWEwCQkJKi8KLS0jbGluZSAzNTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTIxNiw3ICsxMjE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiZgklZTEsICQlYTAiKTsKLS0jbGluZSAzNTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzMpOyBTTShITCwwKTsgU0IoYml0KTsgQ09ORChGKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMjI5LDcgKzEyMzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHgzNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAwMTEgMHJhMQkJCXhjaHcJJTAsICUxCQkJCSovCi0tI2xpbmUgMTIzOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJhIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0xMjM5LDcgKzEyNDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJhID0gMHgleFxuIiwgcmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4Y2h3CSUwLCAlMSIpOwotLSNsaW5lIDEyMzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjQxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhjaCk7IFcoKTsgRFIoQVgpOyBTUlcocmEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xMjU2LDcgKzEyNTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAjJTEiKTsKLS0jbGluZSA3MzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3NDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQywgSU1NVSgyKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTEyNzEsNyArMTI3Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICMlMSIpOwotLSNsaW5lIDczMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDczNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShCQywgSU1NVSgyKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTEyODYsNyArMTI4OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICMlMSIpOwotLSNsaW5lIDExNzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xMzAzLDcgKzEzMDUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlMSIpOwotLSNsaW5lIDExNzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTc3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTEzMTgsNyArMTMyMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICMlMSIpOwotLSNsaW5lIDExNjYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTY4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTMzMyw3ICsxMzM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJWUxIik7Ci0tI2xpbmUgMTE1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTShITCwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM0OCw3ICsxMzUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJWVhMSIpOwotLSNsaW5lIDExNjMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTY1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTEzNjMsNyArMTM2NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICVlITEiKTsKLS0jbGluZSAxMTUxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE1MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTEzNzgsNyArMTM4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklZSEwLCAjJTEiKTsKLS0jbGluZSA0ODAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0ODIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTEzOTMsNyArMTM5NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgIyUxIik7Ci0tI2xpbmUgNzE3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzE5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEVTKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTQwOCw3ICsxNDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgJWUhMSIpOwotLSNsaW5lIDUzMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUzMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTQxOCw3ICsxNDIwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4NDc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMTAwIDByYTEJCQljbXB3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDU0MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU0MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTE0MjgsNyArMTQzMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmEgPSAweCV4XG4iLCByYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcHcJJTAsICUxIik7Ci0tI2xpbmUgNTQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTUlcocmEpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE0NDMsNyArMTQ0NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcHcJJTAsICMlMSIpOwotLSNsaW5lIDUzNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUzOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBXKCk7IERSKEFYKTsgU0MoSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTQ1OCw3ICsxNDYwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgJTEiKTsKLS0jbGluZSA1NDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgVygpOyBEUihBWCk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTQ3NSw3ICsxNDc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA3MzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQkMsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDkwLDcgKzE0OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlMSIpOwotLSNsaW5lIDY4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oQkMsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTE1MDUsNyArMTUwNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgIyUxIik7Ci0tI2xpbmUgNDgzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDg1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTUyMCw3ICsxNTIyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAlMSIpOwotLSNsaW5lIDUxMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUxMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xNTM3LDcgKzE1MzksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICMlMSIpOwotLSNsaW5lIDUwMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUwMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTU1Miw3ICsxNTU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAlZTEiKTsKLS0jbGluZSA0ODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0OTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTY3LDcgKzE1NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICVlYTEiKTsKLS0jbGluZSA0OTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTgyLDcgKzE1ODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICVlITEiKTsKLS0jbGluZSA0ODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0ODggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE1OTcsNyArMTU5OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDU3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDEwMSAwcmVnCQkJbW92CSUwLCAjJTEJCQkJKi8KLS0jbGluZSA2NjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0xNjA3LDcgKzE2MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgIyUxIik7Ci0tI2xpbmUgNjY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSQihyZWcpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjIyLDcgKzE2MjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlMCwgJTEiKTsKLS0jbGluZSA4NzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShCLCBJTU1VKDIpKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTE2MzcsNyArMTYzOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlMSIpOwotLSNsaW5lIDg2MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg2NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oQiwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTY1Miw3ICsxNjU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAjJTEiKTsKLS0jbGluZSAzMTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTE2NjksNyArMTY3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJTEiKTsKLS0jbGluZSAzMDkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTY4NCw3ICsxNjg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAjJTEiKTsKLS0jbGluZSAzMDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjk5LDcgKzE3MDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlMSIpOwotLSNsaW5lIDI4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00oSEwsIDApOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzE0LDcgKzE3MTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlYTEiKTsKLS0jbGluZSAyOTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyOTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTcyOSw3ICsxNzMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlZSExIik7Ci0tI2xpbmUgMjg1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjg3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTc0Myw3ICsxNzQ1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4Njc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMTEwIDByYmEJCQltb3YJJTAsICUxCQkJCSovCi0tI2xpbmUgNjcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYmEgQVUgPSBvcFswXSAmIDB4MDc7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtMTc1Myw3ICsxNzU1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNjcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTUkIocmJhKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzcyLDcgKzE3NzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDAwIDByZWcJCWFkZAklMCwgJTEJCQkJKi8KLS0jbGluZSAyMjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xNzgyLDcgKzE3ODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJTEiKTsKLS0jbGluZSAyMjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkKTsgRFJCKHJlZyk7IFNSKEEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE3OTYsNyArMTc5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDBmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDAgMXJiYQkJYWRkCSUwLCAlMQkJCQkqLwotLSNsaW5lIDIxOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE4MDYsNyArMTgwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlMSIpOwotLSNsaW5lIDIxOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU1JCKHJiYSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTgyMSw3ICsxODIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICVlYTEiKTsKLS0jbGluZSAyNjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihBWCk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xODM2LDcgKzE4MzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgxNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDAxIDByZWcJCWFkZGMJJTAsICUxCQkJCSovCi0tI2xpbmUgMjU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTg0Niw3ICsxODQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlMSIpOwotLSNsaW5lIDI1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGRjKTsgRFJCKHJlZyk7IFNSKEEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE4NjAsNyArMTg2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDFmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDEgMXJiYQkJYWRkYwklMCwgJTEJCQkJKi8KLS0jbGluZSAyNTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xODcwLDcgKzE4NzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICUxIik7Ci0tI2xpbmUgMjUxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZGMpOyBEUihBKTsgU1JCKHJiYSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTg4NSw3ICsxODg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Mjc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMCAwcmVnCQlzdWIJJTAsICUxCQkJCSovCi0tI2xpbmUgMTE0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xODk1LDcgKzE4OTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJTEiKTsKLS0jbGluZSAxMTQzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWIpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTkwOSw3ICsxOTExLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MmY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMCAxcmJhCQlzdWIJJTAsICUxCQkJCSovCi0tI2xpbmUgMTEzNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xOTE5LDcgKzE5MjEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJTEiKTsKLS0jbGluZSAxMTM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEzOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWIpOyBEUihBKTsgU1JCKHJiYSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTkzNCw3ICsxOTM2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YncJJTAsICVlYTEiKTsKLS0jbGluZSAxMTg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE5NDksNyArMTk1MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDM3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMTEgMHJlZwkJc3ViYwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE5NTksNyArMTk2MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJTEiKTsKLS0jbGluZSAxMTcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWJjKTsgRFJCKHJlZyk7IFNSKEEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE5NzMsNyArMTk3NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDNmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMTEgMXJiYQkJc3ViYwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE5ODMsNyArMTk4NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJTEiKTsKLS0jbGluZSAxMTY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNSQihyYmEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE5OTgsNyArMjAwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDQ3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAxMDAgMHJlZwkJY21wCSUwLCAlMQkJCQkqLwotLSNsaW5lIDUwNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUwOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIwMDgsNyArMjAxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAlMSIpOwotLSNsaW5lIDUwNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUwOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChjbXApOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjAyMiw3ICsyMDI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMCAxcmJhCQljbXAJJTAsICUxCQkJCSovCi0tI2xpbmUgNTA0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjAzMiw3ICsyMDM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICUxIik7Ci0tI2xpbmUgNTA0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMDQ3LDcgKzIwNDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgJWVhMSIpOwotLSNsaW5lIDUzNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUzNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChjbXApOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIwNjIsNyArMjA2NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDU3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAxMDEgMHJlZwkJYW5kCSUwLCAlMQkJCQkqLwotLSNsaW5lIDMwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIwNzIsNyArMjA3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlMSIpOwotLSNsaW5lIDMwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEUkIocmVnKTsgU1IoQSk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIwODYsNyArMjA4OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDVmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAxMDEgMXJiYQkJYW5kCSUwLCAlMQkJCQkqLwotLSNsaW5lIDMwMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIwOTYsNyArMjA5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlMSIpOwotLSNsaW5lIDMwMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU1JCKHJiYSk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIxMTEsNyArMjExMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJpbmMJJWVhMCIpOwotLSNsaW5lIDU4NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBETShITCwgSU1NVSgxKSk7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjEyNiw3ICsyMTI4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Njc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDExMCAwcmVnCQlvcgklMCwgJTEJCQkJKi8KLS0jbGluZSA5NjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMTM2LDcgKzIxMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlMSIpOwotLSNsaW5lIDk2MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSQihyZWcpOyBTUihBKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjE1MCw3ICsyMTUyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NmY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDExMCAxcmJhCQlvcgklMCwgJTEJCQkJKi8KLS0jbGluZSA5NTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMTYwLDcgKzIxNjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlMSIpOwotLSNsaW5lIDk1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSKEEpOyBTUkIocmJhKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjE3NSw3ICsyMTc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImRlYwklZWEwIik7Ci0tI2xpbmUgNTUxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTkwLDcgKzIxOTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3NzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTExIDByZWcJCXhvcgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMjY1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIyMDAsNyArMjIwMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlMSIpOwotLSNsaW5lIDEyNjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjY3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhvcik7IERSQihyZWcpOyBTUihBKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjIxNCw3ICsyMjE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4N2Y6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDExMSAxcmJhCQl4b3IJJTAsICUxCQkJCSovCi0tI2xpbmUgMTI2MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNjQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMjI0LDcgKzIyMjYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJTEiKTsKLS0jbGluZSAxMjYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEUihBKTsgU1JCKHJiYSk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIyMzksNyArMjI0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJpbmN3CSVlYTAiKTsKLS0jbGluZSA1OTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkKTsgVygpOyBETShITCwgSU1NVSgxKSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIyNTUsNyArMjI1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlMSIpOwotLSNsaW5lIDIwNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIwOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMjcwLDcgKzIyNzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlZTEiKTsKLS0jbGluZSAyMTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjMwOSw5ICsyMzExLDkgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Zjc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMW5ubiAwMW1tCQljYWxsdAlbJXgwXQkJCQkqLwotLSNsaW5lIDQzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgbm5uIEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLS0jbGluZSA0MzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IG1tIEFVID0gb3BbMV0gJiAweDAzOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIzMjIsNyArMjMyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgbW0gPSAweCV4XG4iLCBtbSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNhbGx0CVsleDBdIik7Ci0tI2xpbmUgNDMzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNhbGwpOyBETShOb25lLCAweDgwICsgbW0qMTYgKyBubm4qMik7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTIzMzgsNyArMjM0MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDhmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDEwMDAgMXJlZwkJeGNoCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEyMjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjI2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjM0OCw3ICsyMzUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICUxIik7Ci0tI2xpbmUgMTIyNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgLyogTm90ZTogREVDVyB1c2VzIHJlZyA9PSBYLCBzbyB0aGlzIG11c3QgZm9sbG93IERFQ1cgKi8KLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNSQihyZWcpOwotIAotQEAgLTIzNjQsNyArMjM2Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJkZWN3CSVlYTAiKTsKLS0jbGluZSA1NjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgVygpOyBETShITCwgSU1NVSgxKSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIzNzksNyArMjM4MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlZTEiKTsKLS0jbGluZSAyMzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIzOTQsNyArMjM5Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlZTEiKTsKLS0jbGluZSAyNDIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0MTAsNyArMjQxMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICVlMSIpOwotLSNsaW5lIDExMjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTI3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0MjUsNyArMjQyNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICVlMSIpOwotLSNsaW5lIDExMzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTMzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0NDAsNyArMjQ0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICUxIik7Ci0tI2xpbmUgMTIyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNDU1LDcgKzI0NTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZTEiKTsKLS0jbGluZSAxMjIxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIyMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNDcwLDcgKzI0NzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZSExIik7Ci0tI2xpbmUgMTIwMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0ODUsNyArMjQ4Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVzMSIpOwotLSNsaW5lIDEyMzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjMzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTTShOb25lLCBTRlIpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1MDAsNyArMjUwMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlMSIpOwotLSNsaW5lIDEyMTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjE0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTTShITCwgMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjUxNSw3ICsyNTE3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJWVhMSIpOwotLSNsaW5lIDEyMTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjIwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjUzMCw3ICsyNTMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJWUxIik7Ci0tI2xpbmUgMTIwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKERFLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTQ1LDcgKzI1NDcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZWExIik7Ci0tI2xpbmUgMTIwOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKERFLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTYwLDcgKzI1NjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJWUxIik7Ci0tI2xpbmUgMTE1NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1NzUsNyArMjU3Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZTEiKTsKLS0jbGluZSAxMTYwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjU5MCw3ICsyNTkyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA3MjMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoRVMpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjYwNSw3ICsyNjA3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJWUxIik7Ci0tI2xpbmUgMTIxNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjYyMCw3ICsyNjIyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWUxIik7Ci0tI2xpbmUgNDkyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDk0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2MzUsNyArMjYzNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICVlMSIpOwotLSNsaW5lIDQ5NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ5NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjUwLDcgKzI2NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYmgJJCVhMCIpOwotLSNsaW5lIDM0MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM0MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMyk7IFNSKE5vbmUpOyBDT05EKEgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2NjUsNyArMjY2Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzayVjMSIpOwotLSNsaW5lIDEwOTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNraXApOyBDT05EKEMpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2ODAsNyArMjY4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlMSIpOwotLSNsaW5lIDY2MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjkxLDcgKzI2OTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmYToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxMXJnIDEwMTAJCWNhbGwJJTAJCQkJKi8KLS0jbGluZSA0MzAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzFdID4+IDQpICYgMHgwMzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yNzAxLDcgKzI3MDMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjYWxsCSUwIik7Ci0tI2xpbmUgNDMwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDMyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNhbGwpOyBEUlcocmcpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI3MTYsNyArMjcxOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJicglheCIpOwotLSNsaW5lIDM4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2gpOyBEUihBWCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTI3MzMsNyArMjczNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJicmsiKTsKLS0jbGluZSAzODggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzOTAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJlYWspOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yNzUwLDcgKzI3NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicG9wCSVzMCIpOwotLSNsaW5lIDk4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk5MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKFBTVyk7IFNQT1AoKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjc2Nyw3ICsyNzY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdnMJJWVhMCwgJTEiKTsKLS0jbGluZSA4MTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIElNTVUoMSkpOyBTUihYKTsgRnpjOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yNzgwLDcgKzI3ODIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxMXJiIDExMTEJCXNlbAlyYiUxCQkJCSovCi0tI2xpbmUgMTA0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiIEFVID0gKG9wWzFdID4+IDQpICYgMHgwMzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yNzkwLDcgKzI3OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiID0gMHgleFxuIiwgcmIpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZWwJcmIlMSIpOwotLSNsaW5lIDEwNDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNlbCk7IFNDKHJiKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjgwNyw3ICsyODA5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJWUxIik7Ci0tI2xpbmUgMjkxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjkzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yODIyLDcgKzI4MjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlZTEiKTsKLS0jbGluZSAyOTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyOTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4MzcsNyArMjgzOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJibmgJJCVhMCIpOwotLSNsaW5lIDM0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMyk7IFNSKE5vbmUpOyBDT05EKE5IKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yODUyLDcgKzI4NTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTAwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEwMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChOQyk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjg2Nyw3ICsyODY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNjI3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjI5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNMihITCwgQiwgMCk7IFNSKEEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4ODIsNyArMjg4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb3IJJTAsICUxIik7Ci0tI2xpbmUgMTAyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMjQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9yKTsgRFIoQSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4OTcsNyArMjg5OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb2xjCSUwLCAlMSIpOwotLSNsaW5lIDEwMTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDE4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJvbGMpOyBEUihBKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjkxMiw3ICsyOTE0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInB1c2gJJXMxIik7Ci0tI2xpbmUgOTk3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTk5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IFcoKTsgRFBVU0goKTsgU1IoUFNXKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjkyOSw3ICsyOTMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcHMJJTAsICVlYTEiKTsKLS0jbGluZSA1MjYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY21wKTsgRFIoWCk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjk0Niw3ICsyOTQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZTEiKTsKLS0jbGluZSA5NDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjk2MSw3ICsyOTYzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZTEiKTsKLS0jbGluZSA5NTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjk3Niw3ICsyOTc4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNrJWMxIik7Ci0tI2xpbmUgMTA5NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwOTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2tpcCk7IENPTkQoSCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjk5MSw3ICsyOTkzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNrJWMxIik7Ci0tI2xpbmUgMTEwOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2tpcCk7IENPTkQoWik7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMwMDgsNyArMzAxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlMSIpOwotLSNsaW5lIDY2MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY2NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMDIzLDcgKzMwMjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicm9sCSUwLCAlMSIpOwotLSNsaW5lIDEwMTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDE1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJvbCk7IERSKEEpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMDM4LDcgKzMwNDAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicmV0YiIpOwotLSNsaW5lIDEwMDggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDEwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJldGkpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMDU1LDcgKzMwNTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiaGFsdCIpOwotLSNsaW5lIDU3NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU3OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChoYWx0KTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzA2Niw3ICszMDY4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmU6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMTExciAxMTEwCQlyb2x3YwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAyMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgciBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDE7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzA3Niw3ICszMDc4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByID0gMHgleFxuIiwgcik7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInJvbHdjCSUwLCAlMSIpOwotLSNsaW5lIDEwMTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJvbGMpOyBXKCk7IERSVyhyKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzA5MSw3ICszMDkzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUxIik7Ci0tI2xpbmUgMTI1MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxMDYsNyArMzEwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICVlMSIpOwotLSNsaW5lIDEyNTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjU4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMTIxLDcgKzMxMjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChOSCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzEzNiw3ICszMTM4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNrJWMxIik7Ci0tI2xpbmUgMTEwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2tpcCk7IENPTkQoTlopOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxNTEsNyArMzE1Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDYzNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETTIoSEwsIEMsIDApOyBTUihBKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMTY2LDcgKzMxNjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicm9yYwklMCwgJTEiKTsKLS0jbGluZSAxMDI1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChyb3JjKTsgRFIoQSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMTg2LDcgKzMxODgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicmV0aSIpOwotLSNsaW5lIDEwMDUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDA3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJldGkpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMyMDEsNyArMzIwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdG9wIik7Ci0tI2xpbmUgMTExNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3RvcCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMyMjEsNyArMzIyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJWUwLCAlMSIpOwotLSNsaW5lIDg3NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg3NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEMsIElNTVUoMikpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzIzNiw3ICszMjM4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODY1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODY3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShDLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0zMjUxLDcgKzMyNTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvcgklMCwgIyUxIik7Ci0tI2xpbmUgOTY3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTY5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMyNjgsNyArMzI3MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlMSIpOwotLSNsaW5lIDk2NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMyODMsNyArMzI4NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAjJTEiKTsKLS0jbGluZSA5NTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMyOTgsNyArMzMwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZTEiKTsKLS0jbGluZSA5NDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU00oSEwsIDApOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0zMzEzLDcgKzMzMTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvcgklMCwgJWVhMSIpOwotLSNsaW5lIDk0OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk1MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMzMjgsNyArMzMzMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZSExIik7Ci0tI2xpbmUgOTQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0zMzQyLDcgKzMzNDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg3NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAxMTEgMHJiYQkJCW1vdgklMCwgJTEJCQkJKi8KLS0jbGluZSA2OTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2OTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0zMzUyLDcgKzMzNTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA2OTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2OTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFJCKHJiYSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTMzNzEsNyArMzM3Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDcwOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDAwMAkJc2V0MQklZSEwCQkJCSovCi0tI2xpbmUgMTA0NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzM4MSw3ICszMzgzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSVlITAiKTsKLS0jbGluZSAxMDQ2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgREIoYml0KTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzM5Niw3ICszMzk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NzE6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAwMDAxCQltb3YxCSUwLCBjeQkJCQkqLwotLSNsaW5lIDgwMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNDA2LDcgKzM0MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJJTAsIGN5Iik7Ci0tI2xpbmUgODAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgREIoYml0KTsgU0NZKCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzQyMSw3ICszNDIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NzI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAwMDEwCQlzZXQxCSUwCQkJCSovCi0tI2xpbmUgMTA2NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzQzMSw3ICszNDMzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSUwIik7Ci0tI2xpbmUgMTA2NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzQ0OCw3ICszNDUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NzM6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAwMDExCQljbHIxCSUwCQkJCSovCi0tI2xpbmUgNDU2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDU4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM0NTgsNyArMzQ2MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2xyMQklMCIpOwotLSNsaW5lIDQ1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ1OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IERCKGJpdCk7IFNDKDApOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNDc1LDcgKzM0NzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3NDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAxMDAJCW1vdjEJY3ksICUxCQkJCSovCi0tI2xpbmUgNzk3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzk5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM0ODUsNyArMzQ4Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQljeSwgJTEiKTsKLS0jbGluZSA3OTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRENZKCk7IFNNKE5vbmUsIFNBRERSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNTAwLDcgKzM1MDIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3NToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAxMDEJCWFuZDEJY3ksICVzMQkJCQkqLwotLSNsaW5lIDMyNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMyOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNTEwLDcgKzM1MTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFuZDEJY3ksICVzMSIpOwotLSNsaW5lIDMyNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMyOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNTMwLDcgKzM1MzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3NjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAxMTAJCW9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgOTgxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTgzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM1NDAsNyArMzU0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IxCWN5LCAlczEiKTsKLS0jbGluZSA5ODEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNTU3LDcgKzM1NTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3NzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAxMTEJCXhvcjEJY3ksICVzMQkJCQkqLwotLSNsaW5lIDEyODUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjg3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM1NjcsNyArMzU2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yMQljeSwgJXMxIik7Ci0tI2xpbmUgMTI4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNNKE5vbmUsIFNBRERSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzU4NCw3ICszNTg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Nzg6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAxMDAwCQljbHIxCSVlITAJCQkJKi8KLS0jbGluZSA0MzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzU5NCw3ICszNTk2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCSVlITAiKTsKLS0jbGluZSA0MzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgSU1NVSgyKSk7IERCKGJpdCk7IFNDKDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM2MDksNyArMzYxMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc5OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTAwMQkJbW92MQklczAsIGN5CQkJCSovCi0tI2xpbmUgODA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM2MTksNyArMzYyMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQklczAsIGN5Iik7Ci0tI2xpbmUgODA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNGUik7IERCKGJpdCk7IFNDWSgpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNjM2LDcgKzM2MzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3YToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDEwMTAJCXNldDEJJXMwCQkJCSovCi0tI2xpbmUgMTA1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzY0Niw3ICszNjQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSVzMCIpOwotLSNsaW5lIDEwNTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDYwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIG9wMCA9IFNGUjsKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgb3AwKTsgREIoYml0KTsgU0MoMSk7Ci0gICAgICAgICAgICAgICAgIGlmIChvcDAgPT0gUkw3OF9TRlJfUFNXICYmIGJpdCA9PSA3KQotQEAgLTM2NjQsNyArMzY2Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdiOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTAxMQkJY2xyMQklczAJCQkJKi8KLS0jbGluZSA0NTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzY3NCw3ICszNjc2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCSVzMCIpOwotLSNsaW5lIDQ1MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBvcDAgPSBTRlI7Ci0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIG9wMCk7IERCKGJpdCk7IFNDKDApOwotICAgICAgICAgICAgICAgICBpZiAob3AwID09IFJMNzhfU0ZSX1BTVyAmJiBiaXQgPT0gNykKLUBAIC0zNjkyLDcgKzM2OTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3YzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDExMDAJCW1vdjEJY3ksICVzMQkJCQkqLwotLSNsaW5lIDgwMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgwMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNzAyLDcgKzM3MDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJY3ksICVzMSIpOwotLSNsaW5lIDgwMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgwMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNzE3LDcgKzM3MTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ZDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDExMDEJCWFuZDEJY3ksICVzMQkJCQkqLwotLSNsaW5lIDMyMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMyNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNzI3LDcgKzM3MjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFuZDEJY3ksICVzMSIpOwotLSNsaW5lIDMyMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMyNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEQ1koKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNzQyLDcgKzM3NDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDExMTAJCW9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgOTc4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3NTIsNyArMzc1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IxCWN5LCAlczEiKTsKLS0jbGluZSA5NzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNzY3LDcgKzM3NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDExMTEJCXhvcjEJY3ksICVzMQkJCQkqLwotLSNsaW5lIDEyODIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjg0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3NzcsNyArMzc3OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yMQljeSwgJXMxIik7Ci0tI2xpbmUgMTI4MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNNKE5vbmUsIFNGUik7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzc5Miw3ICszNzk0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJY3kiKTsKLS0jbGluZSAxMDU1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA1NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzgwNyw3ICszODA5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZjE6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAwMDAxCQltb3YxCSVlMCwgY3kJCQkJKi8KLS0jbGluZSA3ODUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3ODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzgxNyw3ICszODE5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCSVlMCwgY3kiKTsKLS0jbGluZSA3ODUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3ODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBEQihiaXQpOyBTQ1koKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODMyLDcgKzM4MzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmMjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAwMTAJCXNldDEJJWUwCQkJCSovCi0tI2xpbmUgMTA0OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzg0Miw3ICszODQ0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSVlMCIpOwotLSNsaW5lIDEwNDkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDUxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKEhMLCAwKTsgREIoYml0KTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzg1Nyw3ICszODU5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZjM6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAwMDExCQljbHIxCSVlMAkJCQkqLwotLSNsaW5lIDQ0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODY3LDcgKzM4NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJWUwIik7Ci0tI2xpbmUgNDQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKEhMLCAwKTsgREIoYml0KTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzg4Miw3ICszODg0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZjQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAwMTAwCQltb3YxCWN5LCAlZTEJCQkJKi8KLS0jbGluZSA3OTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzg5Miw3ICszODk0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCWN5LCAlZTEiKTsKLS0jbGluZSA3OTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRENZKCk7IFNNKEhMLCAwKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTA3LDcgKzM5MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMDEJCWFuZDEJY3ksICVlMQkJCSovCi0tI2xpbmUgMzE3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzE5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM5MTcsNyArMzkxOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJWUxIik7Ci0tI2xpbmUgMzE3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzE5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTTShITCwgMCk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzkzMiw3ICszOTM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZjY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAwMTEwCQlvcjEJY3ksICVlMQkJCQkqLwotLSNsaW5lIDk3MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zOTQyLDcgKzM5NDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yMQljeSwgJWUxIik7Ci0tI2xpbmUgOTcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRENZKCk7IFNNKEhMLCAwKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTU3LDcgKzM5NTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMTEJCXhvcjEJY3ksICVlMQkJCQkqLwotLSNsaW5lIDEyNzYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjc4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM5NjcsNyArMzk2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yMQljeSwgJWUxIik7Ci0tI2xpbmUgMTI3NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNzggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNNKEhMLCAwKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTgyLDcgKzM5ODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2xyMQljeSIpOwotLSNsaW5lIDQ0NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzk5Nyw3ICszOTk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Zjk6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMDAxCQltb3YxCSVlMCwgY3kJCQkJKi8KLS0jbGluZSA3ODggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtNDAwNyw3ICs0MDA5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCSVlMCwgY3kiKTsKLS0jbGluZSA3ODggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IERCKGJpdCk7IFNDWSgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQwMjIsNyArNDAyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTAxMAkJc2V0MQklMAkJCQkqLwotLSNsaW5lIDEwNTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDU0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQwMzIsNyArNDAzNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2V0MQklMCIpOwotLSNsaW5lIDEwNTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDU0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC00MDQ3LDcgKzQwNDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmYjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDEwMTEJCWNscjEJJTAJCQkJKi8KLS0jbGluZSA0NDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtNDA1Nyw3ICs0MDU5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCSUwIik7Ci0tI2xpbmUgNDQ0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBEQihiaXQpOyBTQygwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC00MDcyLDcgKzQwNzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmYzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDExMDAJCW1vdjEJY3ksICVlMQkJCQkqLwotLSNsaW5lIDc5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MDgyLDcgKzQwODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJY3ksICVlMSIpOwotLSNsaW5lIDc5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU1IoQSk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDA5Nyw3ICs0MDk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMTAxCQlhbmQxCWN5LCAlMQkJCQkqLwotLSNsaW5lIDMyMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMyMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MTA3LDcgKzQxMDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFuZDEJY3ksICUxIik7Ci0tI2xpbmUgMzIwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzIyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTUihBKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC00MTIyLDcgKzQxMjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDExMTAJCW9yMQljeSwgJTEJCQkJKi8KLS0jbGluZSA5NzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtNDEzMiw3ICs0MTM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJvcjEJY3ksICUxIik7Ci0tI2xpbmUgOTc1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTc3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRENZKCk7IFNSKEEpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQxNDcsNyArNDE0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTExMQkJeG9yMQljeSwgJTEJCQkJKi8KLS0jbGluZSAxMjc5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MTU3LDcgKzQxNTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhvcjEJY3ksICUxIik7Ci0tI2xpbmUgMTI3OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNSKEEpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQxNzIsNyArNDE3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJub3QxCWN5Iik7Ci0tI2xpbmUgOTE2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTE4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhvcik7IERDWSgpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDE5Miw3ICs0MTk0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODc3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODc5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oQkMsIElNTVUoMikpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDIwNyw3ICs0MjA5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShCQywgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDIyMiw3ICs0MjI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAjJTEiKTsKLS0jbGluZSAxMjcxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI3MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRCh4b3IpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDIzOSw3ICs0MjQxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlMSIpOwotLSNsaW5lIDEyNjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTQyNTQsNyArNDI1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgIyUxIik7Ci0tI2xpbmUgMTI1OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC00MjY5LDcgKzQyNzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICVlMSIpOwotLSNsaW5lIDEyNDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjQ5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTTShITCwgMCk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTQyODQsNyArNDI4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWVhMSIpOwotLSNsaW5lIDEyNTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjU1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTQyOTksNyArNDMwMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUhMSIpOwotLSNsaW5lIDEyNDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDMxNCw3ICs0MzE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ODc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMDAwIDByZWcJCQlpbmMJJTAJCQkJKi8KLS0jbGluZSA1ODcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1ODkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00MzI0LDcgKzQzMjYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluYwklMCIpOwotLSNsaW5lIDU4NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUkIocmVnKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgIH0KLUBAIC00MzM5LDcgKzQzNDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlYTEiKTsKLS0jbGluZSA2NjYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKFNQLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00MzU0LDcgKzQzNTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlMSIpOwotLSNsaW5lIDY0OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY1MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oREUsIDApOwotIAotICAgICAgICAgfQotQEAgLTQzNjksNyArNDM3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWVhMSIpOwotLSNsaW5lIDY1MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY1MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oREUsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQzODQsNyArNDM4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShITCwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDM5OSw3ICs0NDAxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZWExIik7Ci0tI2xpbmUgNjU3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjU5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQxNCw3ICs0NDE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDY5MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY5MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgfQotQEAgLTQ0MjksNyArNDQzMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJXMxIik7Ci0tI2xpbmUgNjg3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjg5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShOb25lLCBTRlIpOwotIAotICAgICAgICAgfQotQEAgLTQ0NDQsNyArNDQ0Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUhMSIpOwotLSNsaW5lIDY0NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY0NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQ1OSw3ICs0NDYxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4OTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMDAxIDByZWcJCQlkZWMJJTAJCQkJKi8KLS0jbGluZSA1NTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00NDY5LDcgKzQ0NzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlYwklMCIpOwotLSNsaW5lIDU1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBEUkIocmVnKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgIH0KLUBAIC00NDg0LDcgKzQ0ODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWEwLCAlMSIpOwotLSNsaW5lIDY0MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY0NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShTUCwgSU1NVSgxKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTQ0OTksNyArNDUwMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNjE1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjE3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKERFLCAwKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDUxNCw3ICs0NTE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlYTAsICUxIik7Ci0tI2xpbmUgNjIxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKERFLCBJTU1VKDEpKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDUyOSw3ICs0NTMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA2MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTQ0LDcgKzQ1NDYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWVhMCwgJTEiKTsKLS0jbGluZSA2MzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MzUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIElNTVUoMSkpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTU5LDcgKzQ1NjEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNzQ3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzQ5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDU3NCw3ICs0NTc2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVzMCwgJTEiKTsKLS0jbGluZSA3ODAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3ODIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0ZSKTsgU1IoQSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTQ1OTEsNyArNDU5Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZSEwLCAlMSIpOwotLSNsaW5lIDYxMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYxNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDYwNiw3ICs0NjA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jCSVlITAiKTsKLS0jbGluZSA1ODEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1ODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDYxNyw3ICs0NjE5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4YTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMDEwIDByZzEJCQlpbmN3CSUwCQkJCSovCi0tI2xpbmUgNjAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNDYyNyw3ICs0NjI5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByZyA9IDB4JXhcbiIsIHJnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jdwklMCIpOwotLSNsaW5lIDYwMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYwMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSVyhyZyk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ2NDIsNyArNDY0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluY3cJJWUhMCIpOwotLSNsaW5lIDU5NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU5NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERNKE5vbmUsIElNTVUoMikpOyBTQygxKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjU3LDcgKzQ2NTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmMJJTAiKTsKLS0jbGluZSA1OTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1OTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRE0oTm9uZSwgU0FERFIpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00Njc0LDcgKzQ2NzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmN3CSUwIik7Ci0tI2xpbmUgNjA0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjA2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRE0oTm9uZSwgU0FERFIpOyBTQygxKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDY5MSw3ICs0NjkzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWExIik7Ci0tI2xpbmUgODUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODUyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShTUCwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDcwNiw3ICs0NzA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODM4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODQwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShERSwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDcyMSw3ICs0NzIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWVhMSIpOwotLSNsaW5lIDg0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg0MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oREUsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQ3MzYsNyArNDczOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlMSIpOwotLSNsaW5lIDg0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg0NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oSEwsIDApOwotIAotICAgICAgICAgfQotQEAgLTQ3NTEsNyArNDc1Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlYTEiKTsKLS0jbGluZSA4NDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKEhMLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NzY2LDcgKzQ3NjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgfQotQEAgLTQ3ODEsNyArNDc4Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVzMSIpOwotLSNsaW5lIDg4MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg4NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0ZSKTsKLSAKLSAgICAgICAgIH0KLUBAIC00Nzk2LDcgKzQ3OTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZSExIik7Ci0tI2xpbmUgODM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAKLUBAIC00ODEyLDcgKzQ4MTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJkZWMJJWUhMCIpOwotLSNsaW5lIDU0OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBETShOb25lLCBJTU1VKDIpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgIH0KLUBAIC00ODIzLDcgKzQ4MjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhiNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMTEgMHJnMSAJCQlkZWN3CSUwCQkJCSovCi0tI2xpbmUgNTY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNDgzMyw3ICs0ODM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByZyA9IDB4JXhcbiIsIHJnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZGVjdwklMCIpOwotLSNsaW5lIDU2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU3MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSVyhyZyk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ4NDgsNyArNDg1MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlY3cJJWUhMCIpOwotLSNsaW5lIDU2MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU2NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERNKE5vbmUsIElNTVUoMikpOyBTQygxKTsKLSAKLSAgICAgICAgIH0KLUBAIC00ODYzLDcgKzQ4NjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJkZWMJJTAiKTsKLS0jbGluZSA1NTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRE0oTm9uZSwgU0FERFIpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00ODgwLDcgKzQ4ODIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJkZWN3CSUwIik7Ci0tI2xpbmUgNTcxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTczICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRE0oTm9uZSwgU0FERFIpOyBTQygxKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDg5Nyw3ICs0ODk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklYTAsICUxIik7Ci0tI2xpbmUgODMxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODMzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oU1AsIElNTVUoMSkpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDkxMiw3ICs0OTE0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oREUsIDApOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDkyNyw3ICs0OTI5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZWEwLCAlMSIpOwotLSNsaW5lIDgyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgyNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKERFLCBJTU1VKDEpKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTQ5NDIsNyArNDk0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJWUwLCAlMSIpOwotLSNsaW5lIDgyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEhMLCAwKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTQ5NTcsNyArNDk1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJWVhMCwgJTEiKTsKLS0jbGluZSA4MjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShITCwgSU1NVSgxKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00OTcyLDcgKzQ5NzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg5NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg5NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKE5vbmUsIFNBRERSKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTQ5ODcsNyArNDk4OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJXMwLCAlMSIpOwotLSNsaW5lIDkwMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkwMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKE5vbmUsIFNGUik7IFNSKEFYKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTAwNCw3ICs1MDA2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZSEwLCAlMSIpOwotLSNsaW5lIDgxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgxOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKE5vbmUsIElNTVUoMikpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTAxNSw3ICs1MDE3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4YzY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTAwIDByZzAJCQlwb3AJJTAJCQkJKi8KLS0jbGluZSA5ODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01MDI1LDcgKzUwMjcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJwb3AJJTAiKTsKLS0jbGluZSA5ODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmcpOyBTUE9QKCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTAzNiw3ICs1MDM4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4Yzc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTAwIDByZzEJCQlwdXNoCSUxCQkJCSovCi0tI2xpbmUgOTk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTA0Niw3ICs1MDQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByZyA9IDB4JXhcbiIsIHJnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgicHVzaAklMSIpOwotLSNsaW5lIDk5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk5NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERQVVNIKCk7IFNSVyhyZyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTA2MSw3ICs1MDYzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVhMCwgIyUxIik7Ci0tI2xpbmUgNjM5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjQxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKFNQLCBJTU1VKDEpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTA3Niw3ICs1MDc4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgIyUxIik7Ci0tI2xpbmUgODkyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODk0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDkxLDcgKzUwOTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWVhMCwgIyUxIik7Ci0tI2xpbmUgNjE4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjIwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKERFLCBJTU1VKDEpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTEwNiw3ICs1MTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklczAsICMlMSIpOwotLSNsaW5lIDg5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKE5vbmUsIFNGUik7IFNDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTUxMjEsNyArNTEyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZWEwLCAjJTEiKTsKLS0jbGluZSA2MzAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MzIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIElNTVUoMSkpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MTM2LDcgKzUxMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICMlMSIpOwotLSNsaW5lIDc0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc0NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTUxNTEsNyArNTE1Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklczAsICMlMSIpOwotLSNsaW5lIDc1MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBvcDAgPSBTRlI7Ci0gICAgICAgICAgIG9wMSA9IElNTVUoMSk7Ci0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIG9wMCk7IFNDKG9wMSk7Ci1AQCAtNTE5Myw3ICs1MTk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlITAsICMlMSIpOwotLSNsaW5lIDYwOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYxMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTIwNCw3ICs1MjA2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZDM6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTAxIDAwcmcJCQljbXAwCSUwCQkJCSovCi0tI2xpbmUgNTE4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTIwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IG9wWzBdICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01MjE0LDcgKzUyMTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAwCSUwIik7Ci0tI2xpbmUgNTE4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTIwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERSQihyZyk7IFNDKDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTUyMjksNyArNTIzMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcDAJJTAiKTsKLS0jbGluZSA1MjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgU0FERFIpOyBTQygwKTsgRnphYzsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTI0Niw3ICs1MjQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wMAklZSEwIik7Ci0tI2xpbmUgNTE1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTE3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERNKE5vbmUsIElNTVUoMikpOyBTQygwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01MjYxLDcgKzUyNjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtdWx1CXgiKTsKLS0jbGluZSA5MDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobXVsdSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTUyNzgsNyArNTI4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInJldCIpOwotLSNsaW5lIDEwMDIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDA0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHJldCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTI5Myw3ICs1Mjk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDcxMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcxMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihYKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgfQotQEAgLTUzMDgsNyArNTMxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUhMSIpOwotLSNsaW5lIDcwOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcxMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihYKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTMxOCw3ICs1MzIwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZmE6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMXJhIDEwMTAJCQltb3Z3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDg4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg5MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUzMjgsNyArNTMzMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmEgPSAweCV4XG4iLCByYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICUxIik7Ci0tI2xpbmUgODg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFJXKHJhKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgfQotQEAgLTUzMzgsNyArNTM0MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweGZiOgotICAgICAgICAgewotICAgICAgICAgICAvKiogMTFyYSAxMDExCQkJbW92dwklMCwgJWVzITEJCQkqLwotLSNsaW5lIDg4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUzNDgsNyArNTM1MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmEgPSAweCV4XG4iLCByYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlcyExIik7Ci0tI2xpbmUgODg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFJXKHJhKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTM2Myw3ICs1MzY1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYmMJJCVhMCIpOwotLSNsaW5lIDMzNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMzNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMik7IFNSKE5vbmUpOyBDT05EKEMpOwotIAotICAgICAgICAgfQotQEAgLTUzNzgsNyArNTM4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJ6CSQlYTAiKTsKLS0jbGluZSAzNDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzIpOyBTUihOb25lKTsgQ09ORChaKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MzkzLDcgKzUzOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJibmMJJCVhMCIpOwotLSNsaW5lIDMzNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMzOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMik7IFNSKE5vbmUpOyBDT05EKE5DKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NDA4LDcgKzU0MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJibnoJJCVhMCIpOwotLSNsaW5lIDM0OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM1MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMik7IFNSKE5vbmUpOyBDT05EKE5aKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTQyMSw3ICs1NDIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZTM6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTEwIDAwcmcJCQlvbmViCSUwCQkJCSovCi0tI2xpbmUgOTI0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTI2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IG9wWzBdICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01NDMxLDcgKzU0MzMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmViCSUwIik7Ci0tI2xpbmUgOTI0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTI2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSQihyZyk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTU0NDYsNyArNTQ0OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9uZWIJJTAiKTsKLS0jbGluZSA5MjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBTQygxKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTQ2Myw3ICs1NDY1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib25lYgklZSEwIik7Ci0tI2xpbmUgOTIxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTQygxKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NDc4LDcgKzU0ODAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmV3CSUwIik7Ci0tI2xpbmUgOTMyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTM0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEFYKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTQ5Myw3ICs1NDk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib25ldwklMCIpOwotLSNsaW5lIDkzNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkzNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihCQyk7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01NTEwLDcgKzU1MTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNjk5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzAxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEIpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTUyNSw3ICs1NTI3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNjkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEIpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTQwLDcgKzU1NDIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicgkhJSFhMCIpOwotLSNsaW5lIDM2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM3MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2gpOyBEQyhJTU1VKDMpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTU1LDcgKzU1NTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicgklIWEwIik7Ci0tI2xpbmUgMzcxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzczICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTU1NzAsNyArNTU3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJyCSQlIWEwIik7Ci0tI2xpbmUgMzc0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzc2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKHBjK0lNTVMoMikrMyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTU4NSw3ICs1NTg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnIJJCVhMCIpOwotLSNsaW5lIDM3NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM3OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2gpOyBEQyhwYytJTU1TKDEpKzIpOwotIAotICAgICAgICAgfQotQEAgLTU1OTYsNyArNTU5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweGYzOgotICAgICAgICAgewotICAgICAgICAgICAvKiogMTExMSAwMHJnCQkJY2xyYgklMAkJCQkqLwotLSNsaW5lIDQ2NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmcgQVUgPSBvcFswXSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTYwNiw3ICs1NjA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByZyA9IDB4JXhcbiIsIHJnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xyYgklMCIpOwotLSNsaW5lIDQ2NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUkIocmcpOyBTQygwKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NjIxLDcgKzU2MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbHJiCSUwIik7Ci0tI2xpbmUgNDY3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDY5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgU0MoMCk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTU2MzgsNyArNTY0MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNscmIJJWUhMCIpOwotLSNsaW5lIDQ2MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ2MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgU0MoMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTY1Myw3ICs1NjU1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xydwklMCIpOwotLSNsaW5lIDQ3MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBWCk7IFNDKDApOwotIAotICAgICAgICAgfQotQEAgLTU2NjgsNyArNTY3MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNscncJJTAiKTsKLS0jbGluZSA0NzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQkMpOyBTQygwKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTY4NSw3ICs1Njg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDcwNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcwNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihDKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgfQotQEAgLTU3MDAsNyArNTcwMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUhMSIpOwotLSNsaW5lIDcwMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcwNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihDKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTcxNSw3ICs1NzE3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2FsbAkhJSFhMCIpOwotLSNsaW5lIDQyMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQyMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjYWxsKTsgREMoSU1NVSgzKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTczMCw3ICs1NzMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2FsbAklIWEwIik7Ci0tI2xpbmUgNDI0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDI2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNhbGwpOyBEQyhJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NzQ1LDcgKzU3NDcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjYWxsCSQlIWEwIik7Ci0tI2xpbmUgNDI3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDI5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNhbGwpOyBEQyhwYytJTU1TKDIpKzMpOwotIAotICAgICAgICAgfQotQEAgLTU3NjAsMTMgKzU3NjIsMTMgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnJrMSIpOwotLSNsaW5lIDM4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmVhayk7Ci0gCi0gICAgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gICB9Ci0tI2xpbmUgMTI5MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyOTIgInJsNzgtZGVjb2RlLm9wYyIKLSAKLSAgIHJldHVybiBybDc4LT5uX2J5dGVzOwotIH0KLWRpZmYgLS1naXQgYS9vcGNvZGVzL3JsNzgtZGVjb2RlLm9wYyBiL29wY29kZXMvcmw3OC1kZWNvZGUub3BjCi1pbmRleCA2MjEyZjA4Li5iMjVlNDQxIDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMKLSsrKyBiL29wY29kZXMvcmw3OC1kZWNvZGUub3BjCi1AQCAtNTAsNyArNTAsOSBAQCB0eXBlZGVmIHN0cnVjdAotICNkZWZpbmUgVygpIHJsNzgtPnNpemUgPSBSTDc4X1dvcmQKLSAKLSAjZGVmaW5lIEFVIEFUVFJJQlVURV9VTlVTRUQKLS0jZGVmaW5lIEdFVEJZVEUoKSAobGQtPm9wIFtsZC0+cmw3OC0+bl9ieXRlcysrXSA9IGxkLT5nZXRieXRlIChsZC0+cHRyKSkKLSsKLSsjZGVmaW5lIE9QX0JVRl9MRU4gMjAKLSsjZGVmaW5lIEdFVEJZVEUoKSAobGQtPnJsNzgtPm5fYnl0ZXMgPCAoT1BfQlVGX0xFTiAtIDEpID8gbGQtPm9wIFtsZC0+cmw3OC0+bl9ieXRlcysrXSA9IGxkLT5nZXRieXRlIChsZC0+cHRyKTogMCkKLSAjZGVmaW5lIEIgKCh1bnNpZ25lZCBsb25nKSBHRVRCWVRFKCkpCi0gCi0gI2RlZmluZSBTWU5UQVgoeCkgcmw3OC0+c3ludGF4ID0geAotQEAgLTE2OCw3ICsxNzAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gCQkgIFJMNzhfRGlzX0lzYSBpc2EpCi0gewotICAgTG9jYWxEYXRhIGxkcywgKiBsZCA9ICZsZHM7Ci0tICB1bnNpZ25lZCBjaGFyIG9wX2J1ZlsyMF0gPSB7MH07Ci0rICB1bnNpZ25lZCBjaGFyIG9wX2J1ZltPUF9CVUZfTEVOXSA9IHswfTsKLSAgIHVuc2lnbmVkIGNoYXIgKm9wID0gb3BfYnVmOwotICAgaW50IG9wMCwgb3AxOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2M2E5OTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLUZyb20gYzUzZDJlNmQ3NDRkYTAwMGFhYWZlMDIzN2JjZWQwOTBhYWI2MjgxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTE6Mjc6MTUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHBvdGVudGlhbCBhZGRyZXNzIHZpb2xhdGlvbnMgd2hlbiBwcm9jZXNzaW5nIGEgY29ycnVwdAotIEFscGhhIFZNQSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4OQotCSogdm1zLWFscGhhLmMgKF9iZmRfdm1zX2dldF92YWx1ZSk6IEFkZCBhbiBleHRyYSBwYXJhbWV0ZXIgLSB0aGUKLQltYXhpbXVtIHZhbHVlIGZvciB0aGUgYXNjaWMgcG9pbnRlci4gIENoZWNrIHRoYXQgbmFtZSBwcm9jZXNzaW5nCi0JZG9lcyBub3QgcmVhZCBiZXlvbmQgdGhpcyB2YWx1ZS4KLQkoX2JmZF92bXNfc2x1cnBfZXRpcik6IEFkZCBjaGVja3MgZm9yIGF0dGVtcHRzIHRvIHJlYWQgYmV5b25kIHRoZQotCWVuZCBvZiBldGlyIHJlY29yZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzUyCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgIHwgIDkgKysrKysrKysrCi0gYmZkL3Ztcy1hbHBoYS5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtOSw2ICs5LDE1IEBACi0gCi0gMjAxNy0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAgCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTg5Ci0rICAgICAgICogdm1zLWFscGhhLmMgKF9iZmRfdm1zX2dldF92YWx1ZSk6IEFkZCBhbiBleHRyYSBwYXJhbWV0ZXIgLSB0aGUKLSsgICAgICAgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIGFzY2ljIHBvaW50ZXIuICBDaGVjayB0aGF0IG5hbWUgcHJvY2Vzc2luZwotKyAgICAgICBkb2VzIG5vdCByZWFkIGJleW9uZCB0aGlzIHZhbHVlLgotKyAgICAgICAoX2JmZF92bXNfc2x1cnBfZXRpcik6IEFkZCBjaGVja3MgZm9yIGF0dGVtcHRzIHRvIHJlYWQgYmV5b25kIHRoZQotKyAgICAgICBlbmQgb2YgZXRpciByZWNvcmQuCi0rCi0rMjAxNy0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsgCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNTc4Ci0gICAgICAgICogZWxmMzItc2guYyAoc2hfZWxmX3NldF9tYWNoX2Zyb21fZmxhZ3MpOiBGaXggY2hlY2sgZm9yIGludmFsaWQKLSAgICAgICAgZmxhZyB2YWx1ZS4KLUluZGV4OiBnaXQvYmZkL3Ztcy1hbHBoYS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3Ztcy1hbHBoYS5jCi0rKysgZ2l0L2JmZC92bXMtYWxwaGEuYwotQEAgLTE0NTYsNyArMTQ1Niw3IEBAIGRzdF9yZXRyaWV2ZV9sb2NhdGlvbiAoYmZkICphYmZkLCB1bnNpZ24KLSAvKiBXcml0ZSBtdWx0aXBsZSBieXRlcyB0byBzZWN0aW9uIGltYWdlLiAgKi8KLSAKLSBzdGF0aWMgYmZkX2Jvb2xlYW4KLS1pbWFnZV93cml0ZSAoYmZkICphYmZkLCB1bnNpZ25lZCBjaGFyICpwdHIsIGludCBzaXplKQotK2ltYWdlX3dyaXRlIChiZmQgKmFiZmQsIHVuc2lnbmVkIGNoYXIgKnB0ciwgdW5zaWduZWQgaW50IHNpemUpCi0gewotICNpZiBWTVNfREVCVUcKLSAgIF9iZmRfdm1zX2RlYnVnICg4LCAiaW1hZ2Vfd3JpdGUgZnJvbSAoJXAsICVkKSB0byAoJWxkKVxuIiwgcHRyLCBzaXplLAotQEAgLTE2MDMsMTQgKzE2MDMsMTYgQEAgX2JmZF92bXNfZXRpcl9uYW1lIChpbnQgY21kKQotICNkZWZpbmUgSElHSEJJVChvcCkgKChvcCAmIDB4ODAwMDAwMDBMKSA9PSAweDgwMDAwMDAwTCkKLSAKLSBzdGF0aWMgdm9pZAotLV9iZmRfdm1zX2dldF92YWx1ZSAoYmZkICphYmZkLCBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpYywKLStfYmZkX3Ztc19nZXRfdmFsdWUgKGJmZCAqYWJmZCwKLSsJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpYywKLSsJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICptYXhfYXNjaWMsCi0gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgIGJmZF92bWEgKnZtYSwKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbHBoYV92bXNfbGlua19oYXNoX2VudHJ5ICoqaHApCi0gewotICAgY2hhciBuYW1lWzI1N107Ci0tICBpbnQgbGVuOwotLSAgaW50IGk7Ci0rICB1bnNpZ25lZCBpbnQgbGVuOwotKyAgdW5zaWduZWQgaW50IGk7Ci0gICBzdHJ1Y3QgYWxwaGFfdm1zX2xpbmtfaGFzaF9lbnRyeSAqaDsKLSAKLSAgIC8qIE5vdCBsaW5raW5nLiAgRG8gbm90IHRyeSB0byByZXNvbHZlIHRoZSBzeW1ib2wuICAqLwotQEAgLTE2MjIsNiArMTYyNCwxNCBAQCBfYmZkX3Ztc19nZXRfdmFsdWUgKGJmZCAqYWJmZCwgY29uc3QgdW5zCi0gICAgIH0KLSAKLSAgIGxlbiA9ICphc2NpYzsKLSsgIGlmIChhc2NpYyArIGxlbiA+PSBtYXhfYXNjaWMpCi0rICAgIHsKLSsgICAgICBfYmZkX2Vycm9yX2hhbmRsZXIgKF8oIkNvcnJ1cHQgdm1zIHZhbHVlIikpOwotKyAgICAgICp2bWEgPSAwOwotKyAgICAgICpocCA9IE5VTEw7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgIG5hbWVbaV0gPSBhc2NpY1tpICsgMV07Ci0gICBuYW1lW2ldID0gMDsKLUBAIC0xNzQxLDYgKzE3NTEsMTUgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgIF9iZmRfaGV4ZHVtcCAoOCwgcHRyLCBjbWRfbGVuZ3RoIC0gNCwgMCk7Ci0gI2VuZGlmCi0gCi0rICAgICAgLyogUFIgMjE1ODk6IENoZWNrIGZvciBhIGNvcnJ1cHQgRVRJUiByZWNvcmQuICAqLwotKyAgICAgIGlmIChjbWRfbGVuZ3RoIDwgNCkKLSsJewotKwljb3JydXB0X2V0aXI6Ci0rCSAgX2JmZF9lcnJvcl9oYW5kbGVyIChfKCJDb3JydXB0IEVUSVIgcmVjb3JkIGVuY291bnRlcmVkIikpOwotKwkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotKwkgIHJldHVybiBGQUxTRTsKLSsJfQotKwotICAgICAgIHN3aXRjaCAoY21kKQotICAgICAgICAgewotICAgICAgICAgICAvKiBTdGFjayBnbG9iYWwKLUBAIC0xNzQ4LDcgKzE3NjcsNyBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gCi0gICAgICAgICAgICAgIHN0YWNrIDMyIGJpdCB2YWx1ZSBvZiBzeW1ib2wgKGhpZ2ggYml0cyBzZXQgdG8gMCkuICAqLwotICAgICAgICAgY2FzZSBFVElSX19DX1NUQV9HQkw6Ci0tICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0rICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBtYXhwdHIsIGluZm8sICZvcDEsICZoKTsKLSAgICAgICAgICAgX2JmZF92bXNfcHVzaCAoYWJmZCwgb3AxLCBhbHBoYV92bXNfc3ltX3RvX2N0eHQgKGgpKTsKLSAgICAgICAgICAgYnJlYWs7Ci0gCi1AQCAtMTc1Nyw2ICsxNzc2LDggQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotIAotICAgICAgICAgICAgICBzdGFjayAzMiBiaXQgdmFsdWUsIHNpZ24gZXh0ZW5kIHRvIDY0IGJpdC4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RBX0xXOgotKwkgIGlmIChwdHIgKyA0ID49IG1heHB0cikKLSsJICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICBfYmZkX3Ztc19wdXNoIChhYmZkLCBiZmRfZ2V0bDMyIChwdHIpLCBSRUxDX05PTkUpOwotICAgICAgICAgICBicmVhazsKLSAKLUBAIC0xNzY1LDYgKzE3ODYsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gCi0gICAgICAgICAgICAgIHN0YWNrIDY0IGJpdCB2YWx1ZSBvZiBzeW1ib2wuICAqLwotICAgICAgICAgY2FzZSBFVElSX19DX1NUQV9RVzoKLSsJICBpZiAocHRyICsgOCA+PSBtYXhwdHIpCi0rCSAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgX2JmZF92bXNfcHVzaCAoYWJmZCwgYmZkX2dldGw2NCAocHRyKSwgUkVMQ19OT05FKTsKLSAgICAgICAgICAgYnJlYWs7Ci0gCi1AQCAtMTc3OCw2ICsxODAxLDggQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgaW50IHBzZWN0OwotIAotKwkgICAgaWYgKHB0ciArIDEyID49IG1heHB0cikKLSsJICAgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgICAgcHNlY3QgPSBiZmRfZ2V0bDMyIChwdHIpOwotICAgICAgICAgICAgIGlmICgodW5zaWduZWQgaW50KSBwc2VjdCA+PSBQUklWIChzZWN0aW9uX2NvdW50KSkKLSAgICAgICAgICAgICAgIHsKLUBAIC0xODY3LDYgKzE4OTIsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAKLSsJICAgIGlmIChwdHIgKyA0ID49IG1heHB0cikKLSsJICAgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgICAgc2l6ZSA9IGJmZF9nZXRsMzIgKHB0cik7Ci0gICAgICAgICAgICAgX2JmZF92bXNfcG9wIChhYmZkLCAmb3AxLCAmcmVsMSk7Ci0gICAgICAgICAgICAgaWYgKHJlbDEgIT0gUkVMQ19OT05FKQotQEAgLTE4NzksNyArMTkwNiw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgLyogU3RvcmUgZ2xvYmFsOiB3cml0ZSBzeW1ib2wgdmFsdWUKLSAgICAgICAgICAgICAgYXJnOiBjcwlnbG9iYWwgc3ltYm9sIG5hbWUuICAqLwotICAgICAgICAgY2FzZSBFVElSX19DX1NUT19HQkw6Ci0tICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0rICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBtYXhwdHIsIGluZm8sICZvcDEsICZoKTsKLSAgICAgICAgICAgaWYgKGggJiYgaC0+c3ltKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmIChoLT5zeW0tPnR5cCA9PSBFR1NEX19DX1NZTUcpCi1AQCAtMTkwMSw3ICsxOTI4LDcgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAvKiBTdG9yZSBjb2RlIGFkZHJlc3M6IHdyaXRlIGFkZHJlc3Mgb2YgZW50cnkgcG9pbnQKLSAgICAgICAgICAgICAgYXJnOiBjcwlnbG9iYWwgc3ltYm9sIG5hbWUgKHByb2NlZHVyZSkuICAqLwotICAgICAgICAgY2FzZSBFVElSX19DX1NUT19DQToKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICAgICAgICAgICBpZiAoaCAmJiBoLT5zeW0pCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYgKGgtPnN5bS0+ZmxhZ3MgJiBFR1NZX19WX05PUk0pCi1AQCAtMTk0Niw4ICsxOTczLDEwIEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgICAgZGEJZGF0YS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0lNTToKLSAgICAgICAgICAgewotLSAgICAgICAgICAgIGludCBzaXplOwotKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwotIAotKwkgICAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgICBzaXplID0gYmZkX2dldGwzMiAocHRyKTsKLSAgICAgICAgICAgICBpbWFnZV93cml0ZSAoYWJmZCwgcHRyICsgNCwgc2l6ZSk7Ci0gICAgICAgICAgIH0KLUBAIC0xOTYwLDcgKzE5ODksNyBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgICAgIHN0b3JlIGdsb2JhbCBsb25nd29yZDogc3RvcmUgMzJiaXQgdmFsdWUgb2Ygc3ltYm9sCi0gICAgICAgICAgICAgIGFyZzogY3MJc3ltYm9sIG5hbWUuICAqLwotICAgICAgICAgY2FzZSBFVElSX19DX1NUT19HQkxfTFc6Ci0tICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0rICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyLCBtYXhwdHIsIGluZm8sICZvcDEsICZoKTsKLSAjaWYgMAotICAgICAgICAgICBhYm9ydCAoKTsKLSAjZW5kaWYKLUBAIC0yMDEzLDcgKzIwNDIsNyBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgICAgIGRhCXNpZ25hdHVyZS4gICovCi0gCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RDX0xQX1BTQjoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIgKyA0LCBpbmZvLCAmb3AxLCAmaCk7Ci0rICAgICAgICAgIF9iZmRfdm1zX2dldF92YWx1ZSAoYWJmZCwgcHRyICsgNCwgbWF4cHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0gICAgICAgICAgIGlmIChoICYmIGgtPnN5bSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZiAoaC0+c3ltLT50eXAgPT0gRUdTRF9fQ19TWU1HKQotQEAgLTIxMDksNiArMjEzOCw4IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgLyogQXVnbWVudCByZWxvY2F0aW9uIGJhc2U6IGluY3JlbWVudCBpbWFnZSBsb2NhdGlvbiBjb3VudGVyIGJ5IG9mZnNldAotICAgICAgICAgICAgICBhcmc6IGx3CW9mZnNldCB2YWx1ZS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfQ1RMX0FVR1JCOgotKwkgIGlmIChwdHIgKyA0ID49IG1heHB0cikKLSsJICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICBvcDEgPSBiZmRfZ2V0bDMyIChwdHIpOwotICAgICAgICAgICBpbWFnZV9pbmNfcHRyIChhYmZkLCBvcDEpOwotICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxMTQyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIDA0Zjk2M2ZkNDg5Y2FlNzI0YTYwMTQwZTEzOTg0NDE1YzIwNWY0YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDEwOjM1OjE2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBzZWctZmF1bHRzIGluIG9iamR1bXAgd2hlbiBkaXNhc3NlbWJsaW5nIGEgY29ycnVwdAotIHZlcnNhZG9zIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTkxCi0JKiB2ZXJzYWRvcy5jICh2ZXJzYWRvc19ta29iamVjdCk6IFplcm8gdGhlIGFsbG9jYXRlZCB0ZGF0YSBzdHJ1Y3R1cmUuCi0JKHByb2Nlc3Nfb3RyKTogQ2hlY2sgZm9yIGFuIGludmFsaWQgb2Zmc2V0IGluIHRoZSBvdHIgc3RydWN0dXJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTMKLUNWRTogQ1ZFLTIwMTctOTc1NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgIDYgKysrKysrCi0gYmZkL3ZlcnNhZG9zLmMgfCAxMiArKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL3ZlcnNhZG9zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvdmVyc2Fkb3MuYwotKysrIGdpdC9iZmQvdmVyc2Fkb3MuYwotQEAgLTE0OSw3ICsxNDksNyBAQCB2ZXJzYWRvc19ta29iamVjdCAoYmZkICphYmZkKQotICAgaWYgKGFiZmQtPnRkYXRhLnZlcnNhZG9zX2RhdGEgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGJmZF9zaXplX3R5cGUgYW10ID0gc2l6ZW9mICh0ZGF0YV90eXBlKTsKLS0gICAgICB0ZGF0YV90eXBlICp0ZGF0YSA9IGJmZF9hbGxvYyAoYWJmZCwgYW10KTsKLSsgICAgICB0ZGF0YV90eXBlICp0ZGF0YSA9IGJmZF96YWxsb2MgKGFiZmQsIGFtdCk7Ci0gCi0gICAgICAgaWYgKHRkYXRhID09IE5VTEwpCi0gCXJldHVybiBGQUxTRTsKLUBAIC0zNDUsMTMgKzM0NSwxMyBAQCByZWxvY19ob3d0b190eXBlIHZlcnNhZG9zX2hvd3RvX3RhYmxlW10KLSB9OwotIAotIHN0YXRpYyBpbnQKLS1nZXRfb2Zmc2V0IChpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpwdHIpCi0rZ2V0X29mZnNldCAodW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgY2hhciAqcHRyKQotIHsKLSAgIGludCB2YWwgPSAwOwotIAotICAgaWYgKGxlbikKLSAgICAgewotLSAgICAgIGludCBpOwotKyAgICAgIHVuc2lnbmVkIGludCBpOwotIAotICAgICAgIHZhbCA9ICpwdHIrKzsKLSAgICAgICBpZiAodmFsICYgMHg4MCkKLUBAIC0zOTQsOSArMzk0LDEzIEBAIHByb2Nlc3Nfb3RyIChiZmQgKmFiZmQsIHN0cnVjdCBleHRfb3RyICoKLSAJICBpbnQgZmxhZyA9ICpzcmNwKys7Ci0gCSAgaW50IGVzZGlkcyA9IChmbGFnID4+IDUpICYgMHg3OwotIAkgIGludCBzaXplaW53b3JkcyA9ICgoZmxhZyA+PiAzKSAmIDEpID8gMiA6IDE7Ci0tCSAgaW50IG9mZnNldGxlbiA9IGZsYWcgJiAweDc7Ci0rCSAgdW5zaWduZWQgaW50IG9mZnNldGxlbiA9IGZsYWcgJiAweDc7Ci0gCSAgaW50IGo7Ci0gCi0rCSAgLyogUFIgMjE1OTE6IENoZWNrIGZvciBpbnZhbGlkIGxlbmd0aHMuICAqLwotKwkgIGlmIChzcmNwICsgZXNkaWRzICsgb2Zmc2V0bGVuID49IGVuZHApCi0rCSAgICByZXR1cm47Ci0rCi0gCSAgaWYgKGVzZGlkcyA9PSAwKQotIAkgICAgewotIAkgICAgICAvKiBBIHplcm8gZXNkaWQgbWVhbnMgdGhlIG5ldyBwYyBpcyB0aGUgb2Zmc2V0IGdpdmVuLiAgKi8KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTgsNiArOCwxMCBAQAotICAgICAgICAoaWVlZV9hcmNoaXZlX3ApOiBMaWtld2lzZS4KLSAKLSAyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTU5MQotKyAgICAgICAqIHZlcnNhZG9zLmMgKHZlcnNhZG9zX21rb2JqZWN0KTogWmVybyB0aGUgYWxsb2NhdGVkIHRkYXRhIHN0cnVjdHVyZS4KLSsgICAgICAgKHByb2Nlc3Nfb3RyKTogQ2hlY2sgZm9yIGFuIGludmFsaWQgb2Zmc2V0IGluIHRoZSBvdHIgc3RydWN0dXJlLgotICAKLSAgICAgICAgUFIgYmludXRpbHMvMjE1ODkKLSAgICAgICAgKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfZ2V0X3ZhbHVlKTogQWRkIGFuIGV4dHJhIHBhcmFtZXRlciAtIHRoZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWRjOTA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMGQ5NmU0ZGY0ODEyYzNiYWQ3N2MyMjlkZmVmNDdhOWJjMTE1YWMxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMDY6NDA6MTcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaTM4Ni1kaXM6IENoZWNrIHZhbGlkIGJuZCByZWdpc3RlcgotCi1TaW5jZSB0aGVyZSBhcmUgb25seSA0IGJuZCByZWdpc3RlcnMsIHJldHVybiAiKGJhZCkiIGZvciByZWdpc3RlcgotbnVtYmVyID4gMy4KLQotCVBSIGJpbnV0aWxzLzIxNTk0Ci0JKiBpMzg2LWRpcy5jIChPUF9FX3JlZ2lzdGVyKTogQ2hlY2sgdmFsaWQgYm5kIHJlZ2lzdGVyLgotCShPUF9HKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi1DVkU6IENWRS0yMDE3LTk3NTUKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgfCAgNiArKysrKysKLSBvcGNvZGVzL2kzODYtZGlzLmMgfCAxMCArKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL0NoYW5nZUxvZwotKysrIGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNi0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTU5NAotKwkqIGkzODYtZGlzLmMgKE9QX0VfcmVnaXN0ZXIpOiBDaGVjayB2YWxpZCBibmQgcmVnaXN0ZXIuCi0rCShPUF9HKTogTGlrZXdpc2UuCi0rCi0gMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjE1ODgKLUluZGV4OiBnaXQvb3Bjb2Rlcy9pMzg2LWRpcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9pMzg2LWRpcy5jCi0rKysgZ2l0L29wY29kZXMvaTM4Ni1kaXMuYwotQEAgLTE0OTM5LDYgKzE0OTM5LDExIEBAIE9QX0VfcmVnaXN0ZXIgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGEKLSAgICAgICBuYW1lcyA9IGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0Yml0ID8gbmFtZXM2NCA6IG5hbWVzMzI7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgYm5kX21vZGU6Ci0rICAgICAgaWYgKHJlZyA+IDB4MykKLSsJewotKwkgIG9hcHBlbmQgKCIoYmFkKSIpOwotKwkgIHJldHVybjsKLSsJfQotICAgICAgIG5hbWVzID0gbmFtZXNfYm5kOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIGluZGlyX3ZfbW9kZToKLUBAIC0xNTQ4Myw2ICsxNTQ4OCwxMSBAQCBPUF9HIChpbnQgYnl0ZW1vZGUsIGludCBzaXplZmxhZykKLSAgICAgICBvYXBwZW5kIChuYW1lczY0W21vZHJtLnJlZyArIGFkZF0pOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIGJuZF9tb2RlOgotKyAgICAgIGlmIChtb2RybS5yZWcgPiAweDMpCi0rCXsKLSsJICBvYXBwZW5kICgiKGJhZCkiKTsKLSsJICByZXR1cm47Ci0rCX0KLSAgICAgICBvYXBwZW5kIChuYW1lc19ibmRbbW9kcm0ucmVnXSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2Ugdl9tb2RlOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTFkMGJlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gY2QzZWE3YzY5YWNjNTA0NWViMjhmOWJmODBkOTIzMTE2ZTE1ZTRmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTM6MjY6NTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBhZGRyZXNzIHZpb2xhdGlvbiBwcm9ibGVtIHdoZW4gZGlzYXNzZW1ibGluZyBjb3JydXB0Ci0gYWFyY2g2NCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU5NQotCSogYWFyY2g2NC1kaXMuYyAoYWFyY2g2NF9leHRfbGRzdF9yZWdsaXN0KTogQ2hlY2sgZm9yIGFuIG91dCBvZgotCXJhbmdlIHZhbHVlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTYKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICAgfCA2ICsrKysrKwotIG9wY29kZXMvYWFyY2g2NC1kaXMuYyB8IDMgKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtNiw2ICs2LDEyIEBACi0gCi0gMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsJUFIgYmludXRpbHMvMjE1OTUKLSsJKiBhYXJjaDY0LWRpcy5jIChhYXJjaDY0X2V4dF9sZHN0X3JlZ2xpc3QpOiBDaGVjayBmb3IgYW4gb3V0IG9mCi0rCXJhbmdlIHZhbHVlLgotKwotKzIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0gCVBSIGJpbnV0aWxzLzIxNTg4Ci0gCSogcmw3OC1kZWNvZGUub3BjIChPUF9CVUZfTEVOKTogRGVmaW5lLgotIAkoR0VUQllURSk6IENoZWNrIGZvciB0aGUgaW5kZXggZXhjZWVkaW5nIE9QX0JVRl9MRU4uCi1JbmRleDogZ2l0L29wY29kZXMvYWFyY2g2NC1kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvYWFyY2g2NC1kaXMuYwotKysrIGdpdC9vcGNvZGVzL2FhcmNoNjQtZGlzLmMKLUBAIC00MDksNiArNDA5LDkgQEAgYWFyY2g2NF9leHRfbGRzdF9yZWdsaXN0IChjb25zdCBhYXJjaDY0XwotICAgaW5mby0+cmVnbGlzdC5maXJzdF9yZWdubyA9IGV4dHJhY3RfZmllbGQgKEZMRF9SdCwgY29kZSwgMCk7Ci0gICAvKiBvcGNvZGUgKi8KLSAgIHZhbHVlID0gZXh0cmFjdF9maWVsZCAoRkxEX29wY29kZSwgY29kZSwgMCk7Ci0rICAvKiBQUiAyMTU5NTogQ2hlY2sgZm9yIGEgYm9ndXMgdmFsdWUuICAqLwotKyAgaWYgKHZhbHVlID49IEFSUkFZX1NJWkUgKGRhdGEpKQotKyAgICByZXR1cm4gMDsKLSAgIGlmIChleHBlY3RlZF9udW0gIT0gZGF0YVt2YWx1ZV0ubnVtX2VsZW1lbnRzIHx8IGRhdGFbdmFsdWVdLmlzX3Jlc2VydmVkKQotICAgICByZXR1cm4gMDsKLSAgIGluZm8tPnJlZ2xpc3QubnVtX3JlZ3MgPSBkYXRhW3ZhbHVlXS5udW1fcmVnczsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5ZDdlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIDA0ZTE1YjRhOTQ2MmNiMWFlODE5ZTg3OGE2MDA5ODI5YWFiODAyMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDE1OjQ2OjM0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBwYXJzaW5nIGEgY29ycnVwdCB0ZXhoZXggZm9ybWF0IGZpbGUuCi0KLQlQUiBiaW51dGlscy8yMTY3MAotCSogdGVraGV4LmMgKGdldHZhbHVlKTogQ2hlY2sgZm9yIHRoZSBzb3VyY2UgcG9pbnRlciBleGNlZWRpbmcgdGhlCi0JZW5kIHBvaW50ZXIgYmVmb3JlIHRoZSBmaXJzdCBieXRlIGlzIHJlYWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFXzIwMTctOTk1NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA2ICsrKysrKwotIGJmZC90ZWtoZXguYyAgfCA2ICsrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC90ZWtoZXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC90ZWtoZXguYwotKysrIGdpdC9iZmQvdGVraGV4LmMKLUBAIC0yNzMsNiArMjczLDkgQEAgZ2V0dmFsdWUgKGNoYXIgKipzcmNwLCBiZmRfdm1hICp2YWx1ZXAsCi0gICBiZmRfdm1hIHZhbHVlID0gMDsKLSAgIHVuc2lnbmVkIGludCBsZW47Ci0gCi0rICBpZiAoc3JjID49IGVuZHApCi0rICAgIHJldHVybiBGQUxTRTsKLSsKLSAgIGlmICghSVNIRVggKCpzcmMpKQotICAgICByZXR1cm4gRkFMU0U7Ci0gCi1AQCAtNTE0LDkgKzUxNywxMCBAQCBwYXNzX292ZXIgKGJmZCAqYWJmZCwgYmZkX2Jvb2xlYW4gKCpmdW5jCi0gICAvKiBUbyB0aGUgZnJvbnQgb2YgdGhlIGZpbGUuICAqLwotICAgaWYgKGJmZF9zZWVrIChhYmZkLCAoZmlsZV9wdHIpIDAsIFNFRUtfU0VUKSAhPSAwKQotICAgICByZXR1cm4gRkFMU0U7Ci0rCi0gICB3aGlsZSAoISBpc19lb2YpCi0gICAgIHsKLS0gICAgICBjaGFyIHNyY1tNQVhDSFVOS107Ci0rICAgICAgc3RhdGljIGNoYXIgc3JjW01BWENIVU5LXTsKLSAgICAgICBjaGFyIHR5cGU7Ci0gCi0gICAgICAgLyogRmluZCBmaXJzdCAnJScuICAqLwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSsgICAgICAgUFIgYmludXRpbHMvMjE2NzAKLSsgICAgICAgKiB0ZWtoZXguYyAoZ2V0dmFsdWUpOiBDaGVjayBmb3IgdGhlIHNvdXJjZSBwb2ludGVyIGV4Y2VlZGluZyB0aGUKLSsgICAgICAgZW5kIHBvaW50ZXIgYmVmb3JlIHRoZSBmaXJzdCBieXRlIGlzIHJlYWQuCi0rCi0gMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE1ODIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NDY3MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotRnJvbSBjZmQxNGE1MDBlMDQ4NTM3NDU5NjIzNGRlNGRiMTBlODhlYmM3NjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxNToyNTowOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYWRkcmVzcyB2aW9sYXRpb25zIHdoZW4gYXRlbXB0aW5nIHRvIHBhcnNlIGZ1enplZAotIGJpbmFyaWVzLgotCi0JUFIgYmludXRpbHMvMjE2NjUKLWJmZAkqIG9wbmNscy5jIChnZXRfYnVpbGRfaWQpOiBDaGVjayB0aGF0IHRoZSBzZWN0aW9uIGlzIGJlaWcgZW5vdWdoCi0JdG8gY29udGFpbiB0aGUgd2hvbGUgbm90ZS4KLQkqIGNvbXByZXNzLmMgKGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzKTogQ2hlY2sgZm9yIGFuZCByZWplY3QKLQlhIHNlY3Rpb24gd2hvZXMgc2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGVudGlyZSBmaWxlLgotCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9jb3B5X25vdGVzKTogQWxsb3cgZm9yIHRoZSBvdXB1dCB0byBub3QKLQljb250YWluIGEgbm90ZXMgc2VjdGlvbi4KLQotYmludXRpbHMqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfc2VjdGlvbik6IFNraXAgYW55IHNlY3Rpb24gdGhhdCBpcyBiaWdnZXIKLQl0aGFuIHRoZSBlbnRpcmUgZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLUNWRTogQ1ZFLTIwMTctOTk1NSAjMQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICAgICB8IDEwICsrKysrKysrKysKLSBiZmQvY29tcHJlc3MuYyAgICAgfCAgNiArKysrKysKLSBiZmQvZWxmMzItdjg1MC5jICAgfCAgNCArKystCi0gYmZkL29wbmNscy5jICAgICAgIHwgMTggKysrKysrKysrKysrKysrKy0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvb2JqZHVtcC5jIHwgIDQgKystLQotIDYgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvY29tcHJlc3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9jb21wcmVzcy5jCi0rKysgZ2l0L2JmZC9jb21wcmVzcy5jCi1AQCAtMjM5LDYgKzIzOSwxMiBAQCBiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyAoYmZkICphYmZkCi0gICAgICAgKnB0ciA9IE5VTEw7Ci0gICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgIH0KLSsgIGVsc2UgaWYgKGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSA+IDAKLSsJICAgJiYgc3ogPiAoYmZkX3NpemVfdHlwZSkgYmZkX2dldF9maWxlX3NpemUgKGFiZmQpKQotKyAgICB7Ci0rICAgICAgKnB0ciA9IE5VTEw7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICB9Ci0gCi0gICBzd2l0Y2ggKHNlYy0+Y29tcHJlc3Nfc3RhdHVzKQotICAgICB7Ci1JbmRleDogZ2l0L2JmZC9lbGYzMi12ODUwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmMzItdjg1MC5jCi0rKysgZ2l0L2JmZC9lbGYzMi12ODUwLmMKLUBAIC0yNDUwLDcgKzI0NTAsOSBAQCB2ODUwX2VsZl9jb3B5X25vdGVzIChiZmQgKmliZmQsIGJmZCAqb2JmCi0gCUJGRF9BU1NFUlQgKGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChpYmZkLCBpbm90ZXMsICYgaWNvbnQpKTsKLSAKLSAgICAgICBpZiAoKG9jb250ID0gZWxmX3NlY3Rpb25fZGF0YSAob25vdGVzKS0+dGhpc19oZHIuY29udGVudHMpID09IE5VTEwpCi0tCUJGRF9BU1NFUlQgKGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChvYmZkLCBvbm90ZXMsICYgb2NvbnQpKTsKLSsJLyogSWYgdGhlIG91dHB1dCBpcyBiZWluZyBzdHJpcHBlZCB0aGVuIGl0IGlzIHBvc3NpYmxlIGZvcgotKwkgICB0aGUgbm90ZXMgc2VjdGlvbiB0byBkaXNhcHBlYXIuICBJbiB0aGlzIGNhc2UgZG8gbm90aGluZy4gICovCi0rCXJldHVybjsKLSAKLSAgICAgICAvKiBDb3B5L292ZXJ3cml0ZSBub3RlcyBmcm9tIHRoZSBpbnB1dCB0byB0aGUgb3V0cHV0LiAgKi8KLSAgICAgICBtZW1jcHkgKG9jb250LCBpY29udCwgYmZkX3NlY3Rpb25fc2l6ZSAob2JmZCwgb25vdGVzKSk7Ci1JbmRleDogZ2l0L2JmZC9vcG5jbHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9vcG5jbHMuYwotKysrIGdpdC9iZmQvb3BuY2xzLmMKLUBAIC0xNzc2LDYgKzE3NzYsNyBAQCBnZXRfYnVpbGRfaWQgKGJmZCAqYWJmZCkKLSAgIEVsZl9FeHRlcm5hbF9Ob3RlICplbm90ZTsKLSAgIGJmZF9ieXRlICpjb250ZW50czsKLSAgIGFzZWN0aW9uICpzZWN0OwotKyAgYmZkX3NpemVfdHlwZSBzaXplOwotIAotICAgQkZEX0FTU0VSVCAoYWJmZCk7Ci0gCi1AQCAtMTc5MCw4ICsxNzkxLDkgQEAgZ2V0X2J1aWxkX2lkIChiZmQgKmFiZmQpCi0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLSsgIHNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCk7Ci0gICAvKiBGSVhNRTogU2hvdWxkIHdlIHN1cHBvcnQgc21hbGxlciBidWlsZC1pZCBub3RlcyA/ICAqLwotLSAgaWYgKGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KSA8IDB4MjQpCi0rICBpZiAoc2l6ZSA8IDB4MjQpCi0gICAgIHsKLSAgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfaW52YWxpZF9vcGVyYXRpb24pOwotICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE4MDQsNiArMTgwNiwxNyBAQCBnZXRfYnVpbGRfaWQgKGJmZCAqYWJmZCkKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotKyAgLyogRklYTUU6IFBhcmFub2lhIC0gYWxsb3cgZm9yIGNvbXByZXNzZWQgYnVpbGQtaWQgc2VjdGlvbnMuCi0rICAgICBNYXliZSB3ZSBzaG91bGQgY29tcGxhaW4gaWYgdGhpcyBzaXplIGlzIGRpZmZlcmVudCBmcm9tCi0rICAgICB0aGUgb25lIG9idGFpbmVkIGFib3ZlLi4uICAqLwotKyAgc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KTsKLSsgIGlmIChzaXplIDwgc2l6ZW9mIChFbGZfRXh0ZXJuYWxfTm90ZSkpCi0rICAgIHsKLSsgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfaW52YWxpZF9vcGVyYXRpb24pOwotKyAgICAgIGZyZWUgKGNvbnRlbnRzKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgZW5vdGUgPSAoRWxmX0V4dGVybmFsX05vdGUgKikgY29udGVudHM7Ci0gICBpbm90ZS50eXBlID0gSF9HRVRfMzIgKGFiZmQsIGVub3RlLT50eXBlKTsKLSAgIGlub3RlLm5hbWVzeiA9IEhfR0VUXzMyIChhYmZkLCBlbm90ZS0+bmFtZXN6KTsKLUBAIC0xODE1LDcgKzE4MjgsOCBAQCBnZXRfYnVpbGRfaWQgKGJmZCAqYWJmZCkKLSAgIGlmIChpbm90ZS5kZXNjc3ogPT0gMAotICAgICAgIHx8IGlub3RlLnR5cGUgIT0gTlRfR05VX0JVSUxEX0lECi0gICAgICAgfHwgaW5vdGUubmFtZXN6ICE9IDQgLyogc2l6ZW9mICJHTlUiICAqLwotLSAgICAgIHx8IHN0cmNtcCAoaW5vdGUubmFtZWRhdGEsICJHTlUiKSAhPSAwKQotKyAgICAgIHx8IHN0cm5jbXAgKGlub3RlLm5hbWVkYXRhLCAiR05VIiwgNCkgIT0gMAotKyAgICAgIHx8IHNpemUgPCAoMTIgKyBCRkRfQUxJR04gKGlub3RlLm5hbWVzeiwgNCkgKyBpbm90ZS5kZXNjc3opKQotICAgICB7Ci0gICAgICAgZnJlZSAoY29udGVudHMpOwotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci1JbmRleDogZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0yMDQ4LDcgKzIwNDgsNyBAQCBkaXNhc3NlbWJsZV9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uCi0gICAgIHJldHVybjsKLSAKLSAgIGRhdGFzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOwotLSAgaWYgKGRhdGFzaXplID09IDApCi0rICBpZiAoZGF0YXNpemUgPT0gMCB8fCBkYXRhc2l6ZSA+PSAoYmZkX3NpemVfdHlwZSkgYmZkX2dldF9maWxlX3NpemUgKGFiZmQpKQotICAgICByZXR1cm47Ci0gCi0gICBpZiAoc3RhcnRfYWRkcmVzcyA9PSAoYmZkX3ZtYSkgLTEKLUBAIC0yOTEyLDcgKzI5MTIsNyBAQCBkdW1wX3RhcmdldF9zcGVjaWZpYyAoYmZkICphYmZkKQotIHN0YXRpYyB2b2lkCi0gZHVtcF9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0aW9uLCB2b2lkICpkdW1teSBBVFRSSUJVVEVfVU5VU0VEKQotIHsKLS0gIGJmZF9ieXRlICpkYXRhID0gMDsKLSsgIGJmZF9ieXRlICpkYXRhID0gTlVMTDsKLSAgIGJmZF9zaXplX3R5cGUgZGF0YXNpemU7Ci0gICBiZmRfdm1hIGFkZHJfb2Zmc2V0OwotICAgYmZkX3ZtYSBzdGFydF9vZmZzZXQ7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDQgKzEsMTQgQEAKLSAyMDE3LTA2LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIG9wbmNscy5jIChnZXRfYnVpbGRfaWQpOiBDaGVjayB0aGF0IHRoZSBzZWN0aW9uIGlzIGJlaWcgZW5vdWdoCi0rICAgICAgIHRvIGNvbnRhaW4gdGhlIHdob2xlIG5vdGUuCi0rICAgICAgICogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBDaGVjayBmb3IgYW5kIHJlamVjdAotKyAgICAgICBhIHNlY3Rpb24gd2hvZXMgc2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGVudGlyZSBmaWxlLgotKyAgICAgICAqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfY29weV9ub3Rlcyk6IEFsbG93IGZvciB0aGUgb3VwdXQgdG8gbm90Ci0rICAgICAgIGNvbnRhaW4gYSBub3RlcyBzZWN0aW9uLgotKwotKzIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTY3MAotICAgICAgICAqIHRla2hleC5jIChnZXR2YWx1ZSk6IENoZWNrIGZvciB0aGUgc291cmNlIHBvaW50ZXIgZXhjZWVkaW5nIHRoZQotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSsgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLSsgICAgICAgKiBvYmpkdW1wLmMgKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBTa2lwIGFueSBzZWN0aW9uIHRoYXQgaXMgYmlnZ2VyCi0rICAgICAgIHRoYW4gdGhlIGVudGlyZSBmaWxlLgotKwotIDIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxMzQ1CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTUyOTVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLUZyb20gMDYzMGI0OWM0NzBjYTJlM2MzZjc0ZGE0YzdlNGZmNjM0NDBkZDcxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMDk6MjQ6NDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZmlsZSBzaXplIGJlZm9yZSBnZXR0aW5nIHNlY3Rpb24gY29udGVudHMKLQotRG9uJ3QgY2hlY2sgdGhlIHNlY3Rpb24gc2l6ZSBpbiBiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyBzaW5jZQotdGhlIHNpemUgb2YgYSBkZWNvbXByZXNzZWQgc2VjdGlvbiBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlIGZpbGUgc2l6ZS4KLUluc3RlYWQsIGNoZWNrIGZpbGUgc2l6ZSBpbiBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBEb24ndCBjaGVjayB0aGUKLQlmaWxlIHNpemUgaGVyZS4KLQkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBDaGVjayBmb3IgYW5kCi0JcmVqZWN0IGEgc2VjdGlvbiB3aG9lcyBzaXplICsgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZQotCW9mIHRoZSBlbnRpcmUgZmlsZS4KLQkoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk5NTUgIzIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICB8IDEwICsrKysrKysrKy0KLSBiZmQvY29tcHJlc3MuYyB8ICA4ICstLS0tLS0tCi0gYmZkL2xpYmJmZC5jICAgfCAxNyArKysrKysrKysrKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvY29tcHJlc3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9jb21wcmVzcy5jCi0rKysgZ2l0L2JmZC9jb21wcmVzcy5jCi1AQCAtMjM5LDEyICsyMzksNiBAQCBiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyAoYmZkICphYmZkCi0gICAgICAgKnB0ciA9IE5VTEw7Ci0gICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSA+IDAKLS0JICAgJiYgc3ogPiAoYmZkX3NpemVfdHlwZSkgYmZkX2dldF9maWxlX3NpemUgKGFiZmQpKQotLSAgICB7Ci0tICAgICAgKnB0ciA9IE5VTEw7Ci0tICAgICAgcmV0dXJuIEZBTFNFOwotLSAgICB9Ci0gCi0gICBzd2l0Y2ggKHNlYy0+Y29tcHJlc3Nfc3RhdHVzKQotICAgICB7Ci1AQCAtMjYwLDcgKzI1NCw3IEBAIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQKLSAJCSAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KLSAJCSAgKF8oImVycm9yOiAlQiglQSkgaXMgdG9vIGxhcmdlICglI2x4IGJ5dGVzKSIpLAotIAkJICBhYmZkLCBzZWMsIChsb25nKSBzeik7Ci0tCSAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICAgIHJldHVybiBGQUxTRTsKLSAJICAgIH0KLSAJfQotIAotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtNzgwLDYgKzc4MCw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAJCQkJICAgYmZkX3NpemVfdHlwZSBjb3VudCkKLSB7Ci0gICBiZmRfc2l6ZV90eXBlIHN6OwotKyAgZmlsZV9wdHIgZmlsZXN6OwotICAgaWYgKGNvdW50ID09IDApCi0gICAgIHJldHVybiBUUlVFOwotIAotQEAgLTgwMiw4ICs4MDMsMTUgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotICAgICBzeiA9IHNlY3Rpb24tPnJhd3NpemU7Ci0gICBlbHNlCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSsgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLSsgIGlmIChmaWxlc3ogPCAwKQotKyAgICB7Ci0rICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KLSsgICAgICBhYm9ydCAoKTsKLSsgICAgfQotICAgaWYgKG9mZnNldCArIGNvdW50IDwgY291bnQKLS0gICAgICB8fCBvZmZzZXQgKyBjb3VudCA+IHN6KQotKyAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3oKLSsgICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIHN6KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3opCi0gICAgIHsKLSAgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfaW52YWxpZF9vcGVyYXRpb24pOwotICAgICAgIHJldHVybiBGQUxTRTsKLUBAIC04MjYsNiArODM0LDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbgotIHsKLSAjaWZkZWYgVVNFX01NQVAKLSAgIGJmZF9zaXplX3R5cGUgc3o7Ci0rICBmaWxlX3B0ciBmaWxlc3o7Ci0gCi0gICBpZiAoY291bnQgPT0gMCkKLSAgICAgcmV0dXJuIFRSVUU7Ci1AQCAtODU4LDcgKzg2NywxMyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gICAgIHN6ID0gc2VjdGlvbi0+cmF3c2l6ZTsKLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotKyAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotKyAgICB7Ci0rICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KLSsgICAgICBhYm9ydCAoKTsKLSsgICAgfQotICAgaWYgKG9mZnNldCArIGNvdW50ID4gc3oKLSsgICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIHN6KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3oKLSAgICAgICB8fCAhIGJmZF9nZXRfZmlsZV93aW5kb3cgKGFiZmQsIHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQsIGNvdW50LCB3LAotIAkJCQlUUlVFKSkKLSAgICAgcmV0dXJuIEZBTFNFOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEzIEBACi0rMjAxNy0wNi0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIGNvbXByZXNzLmMgKGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzKTogRG9uJ3QgY2hlY2sgdGhlCi0rICAgICAgIGZpbGUgc2l6ZSBoZXJlLgotKyAgICAgICAqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBDaGVjayBmb3IgYW5kCi0rICAgICAgIHJlamVjdCBhIHNlY3Rpb24gd2hvZXMgc2l6ZSArIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gdGhlIHNpemUKLSsgICAgICAgb2YgdGhlIGVudGlyZSBmaWxlLgotKyAgICAgICAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IExpa2V3aXNlLgotKwotIDIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjY3YzRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAxZjQ3M2UzZDBhZDI4NTE5NTkzNGU2YTA3N2M3ZWQzMmFmZTY2NDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxNTo0NzoxNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYSBtaXNzaW5nIGxpbmUgdG8KLSBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93Ci0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBBZGQKLQlhIG1pc3NpbmcgbGluZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICMzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2xpYmJmZC5jICB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnaXQvYmZkL2xpYmJmZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2xpYmJmZC5jCi0rKysgZ2l0L2JmZC9saWJiZmQuYwotQEAgLTg2OCw2ICs4NjgsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gICBlbHNlCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLSsgIGlmIChmaWxlc3ogPCAwKQotICAgICB7Ci0gICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KLSAgICAgICBhYm9ydCAoKTsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNiArMSwxMiBAQAotIDIwMTctMDYtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLSsgICAgICAgKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IEFkZAotKyAgICAgICBhIG1pc3NpbmcgbGluZS4KLSsKLSsyMDE3LTA2LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0gICAgICAgICogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBEb24ndCBjaGVjayB0aGUKLSAgICAgICAgZmlsZSBzaXplIGhlcmUuCi0gICAgICAgICogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV80LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZDUyOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGFiMjdmODBjNWRjZWFhMjNjNGJhN2Y2MmMwZDVkMjJhNWQ1ZGQ3YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDAwOjIxOjI1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBHREIgcmVncmVzc2lvbnMgY2F1c2VkIGJ5IHByZXZpb3VzCi0gYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIGNoYW5nZXMKLQotUmVmOiBodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTctMDYvbXNnMDAzNDMuaHRtbAotCi1iZmQvQ2hhbmdlTG9nOgotMjAxNy0wNi0yNiAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogQWRkICJjb3VudCIsIG5vdAotCSJzeiIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjNAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA2ICsrKysrKwotIGJmZC9saWJiZmQuYyAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTI2ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTY2NQotKwkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBBZGQgImNvdW50Iiwgbm90Ci0rCSJzeiIuCi0rCi0gMjAxNy0wNi0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtODExLDcgKzgxMSw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAgICAgfQotICAgaWYgKG9mZnNldCArIGNvdW50IDwgY291bnQKLSAgICAgICB8fCBvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgKHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBzeikgPiAoYmZkX3NpemVfdHlwZSkgZmlsZXN6KQotKyAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgY291bnQpID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzYmQzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gNzIxMWFlNTAxZWIwZGUxMDQ0OTgzZjJkZmIwMDA5MWE1OGZiZDY2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA5OjQ1OjA0ICswOTMwCi1TdWJqZWN0OiBbUEFUQ0hdIE1vcmUgZml4ZXMgZm9yIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyBjaGFuZ2UKLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlIGFib3J0LgotCVVzZSB1bnNpZ25lZCBmaWxlIHBvaW50ZXIgdHlwZSwgYW5kIHJlbW92ZSBjYXN0LgotCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBMaWtld2lzZS4KLQlBZGQgImNvdW50Iiwgbm90ICJzeiIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjNQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCAgOCArKysrKysrKwotIGJmZC9saWJiZmQuYyAgfCAxOCArKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsJUFIgYmludXRpbHMvMjE2NjUKLSsJKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlIGFib3J0LgotKwlVc2UgdW5zaWduZWQgZmlsZSBwb2ludGVyIHR5cGUsIGFuZCByZW1vdmUgY2FzdC4KLSsJKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IExpa2V3aXNlLgotKwlBZGQgImNvdW50Iiwgbm90ICJzeiIuCi0rCi0gMjAxNy0wNi0yNiAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjE2NjUKLUluZGV4OiBnaXQvYmZkL2xpYmJmZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2xpYmJmZC5jCi0rKysgZ2l0L2JmZC9saWJiZmQuYwotQEAgLTc4MCw3ICs3ODAsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMgKGJmZCAqCi0gCQkJCSAgIGJmZF9zaXplX3R5cGUgY291bnQpCi0gewotICAgYmZkX3NpemVfdHlwZSBzejsKLS0gIGZpbGVfcHRyIGZpbGVzejsKLSsgIHVmaWxlX3B0ciBmaWxlc3o7Ci0gICBpZiAoY291bnQgPT0gMCkKLSAgICAgcmV0dXJuIFRSVUU7Ci0gCi1AQCAtODA0LDE0ICs4MDQsOSBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMgKGJmZCAqCi0gICBlbHNlCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLS0gIGlmIChmaWxlc3ogPCAwKQotLSAgICB7Ci0tICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KLS0gICAgICBhYm9ydCAoKTsKLS0gICAgfQotICAgaWYgKG9mZnNldCArIGNvdW50IDwgY291bnQKLSAgICAgICB8fCBvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgKHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCkgPiAoYmZkX3NpemVfdHlwZSkgZmlsZXN6KQotKyAgICAgIHx8IHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTgzNCw3ICs4MjksNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gewotICNpZmRlZiBVU0VfTU1BUAotICAgYmZkX3NpemVfdHlwZSBzejsKLS0gIGZpbGVfcHRyIGZpbGVzejsKLSsgIHVmaWxlX3B0ciBmaWxlc3o7Ci0gCi0gICBpZiAoY291bnQgPT0gMCkKLSAgICAgcmV0dXJuIFRSVUU7Ci1AQCAtODY4LDEzICs4NjMsOCBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gICBlbHNlCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLS0gIGlmIChmaWxlc3ogPCAwKQotLSAgICB7Ci0tICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KLS0gICAgICBhYm9ydCAoKTsKLS0gICAgfQotICAgaWYgKG9mZnNldCArIGNvdW50ID4gc3oKLS0gICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIHN6KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3oKLSsgICAgICB8fCBzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgY291bnQgPiBmaWxlc3oKLSAgICAgICB8fCAhIGJmZF9nZXRfZmlsZV93aW5kb3cgKGFiZmQsIHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQsIGNvdW50LCB3LAotIAkJCQlUUlVFKSkKLSAgICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2NDI5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gZWE5YWFmYzQxYTc2NGU0ZTJkYmI4OGE3YjAzMWU4ODZiNDgxYjk5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE0OjQzOjQ5ICswOTMwCi1TdWJqZWN0OiBbUEFUQ0hdIFdhcm5pbmcgZml4Ci0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IFdhcm5pbmcgZml4LgotCShfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjNgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCAxMiArKysrKysrKystLS0KLSBiZmQvbGliYmZkLmMgIHwgIDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtODA2LDcgKzgwNiw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLSAgIGlmIChvZmZzZXQgKyBjb3VudCA8IGNvdW50Ci0gICAgICAgfHwgb2Zmc2V0ICsgY291bnQgPiBzegotLSAgICAgIHx8IHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzeikKLSsgICAgICB8fCAodWZpbGVfcHRyKSBzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgY291bnQgPiBmaWxlc3opCi0gICAgIHsKLSAgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfaW52YWxpZF9vcGVyYXRpb24pOwotICAgICAgIHJldHVybiBGQUxTRTsKLUBAIC04NjQsNyArODY0LDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbgotICAgICBzeiA9IHNlY3Rpb24tPnNpemU7Ci0gICBmaWxlc3ogPSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCk7Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPiBzegotLSAgICAgIHx8IHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzegotKyAgICAgIHx8ICh1ZmlsZV9wdHIpIHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzegotICAgICAgIHx8ICEgYmZkX2dldF9maWxlX3dpbmRvdyAoYWJmZCwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCwgY291bnQsIHcsCi0gCQkJCVRSVUUpKQotICAgICByZXR1cm4gRkFMU0U7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsMTEgQEAKLSAyMDE3LTA2LTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSsgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLSsgICAgICAgKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogV2FybmluZyBmaXguCi0rICAgICAgIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0rCi0rMjAxNy0wNi0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0gCVBSIGJpbnV0aWxzLzIxNjY1Ci0gCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IERlbGV0ZSBhYm9ydC4KLSAJVXNlIHVuc2lnbmVkIGZpbGUgcG9pbnRlciB0eXBlLCBhbmQgcmVtb3ZlIGNhc3QuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV83LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2FlNjNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV83LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotRnJvbSA2MGEwMjA0MmJhY2Y4ZDI1ODE0NDMwMDgwYWRkYTYxZWQwODZiY2E2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAzMCBKdW4gMjAxNyAxMTowMzozNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggZmFpbHVyZXMgaW4gTU1JWCBsaW5rZXIgdGVzdHMgaW50cm9kdWNlZCBieSBmaXggZm9yIFBSCi0gMjE2NjUuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9zZWN0aW9uKTogTW92ZSBjaGVjayBmb3IgYW4gb3ZlcmxhcmdlCi0Jc2VjdGlvbiB0byBqdXN0IGJlZm9yZSB0aGUgYWxsb2NhdGlvbiBvZiBtZW1vcnkuICBEbyBub3QgY2hlY2sKLQlzZWN0aW9uIHNpemUgYWdhaW5zdCBmaWxlIHNpemUsIGJ1dCBpbnN0ZWFkIHVzZSBhbiBhcmJpdHJhcnkgMkdiCi0JbGltaXQuICBJc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgc2VjdGlvbiBpcyB0b28gYmlnLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk5NTUgIzcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgOCArKysrKysrKwotIGJpbnV0aWxzL29iamR1bXAuYyB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMjA0OCw3ICsyMDQ4LDcgQEAgZGlzYXNzZW1ibGVfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbgotICAgICByZXR1cm47Ci0gCi0gICBkYXRhc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0aW9uKTsKLS0gIGlmIChkYXRhc2l6ZSA9PSAwIHx8IGRhdGFzaXplID49IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0rICBpZiAoZGF0YXNpemUgPT0gMCkKLSAgICAgcmV0dXJuOwotIAotICAgaWYgKHN0YXJ0X2FkZHJlc3MgPT0gKGJmZF92bWEpIC0xCi1AQCAtMjExMiw2ICsyMTEyLDI5IEBAIGRpc2Fzc2VtYmxlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAgICAgfQotICAgcmVsX3BwZW5kID0gcmVsX3BwICsgcmVsX2NvdW50OwotIAotKyAgLyogUFIgMjE2NjU6IENoZWNrIGZvciBvdmVybGFyZ2UgZGF0YXNpemVzLgotKyAgICAgTm90ZSAtIHdlIHVzZWQgdG8gY2hlY2sgZm9yICJkYXRhc2l6ZSA+IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSIgYnV0Ci0rICAgICB0aGlzIGZhaWxzIHdoZW4gdXNpbmcgY29tcHJlc3NlZCBzZWN0aW9ucyBvciBjb21wcmVzc2VkIGZpbGUgZm9ybWF0cwotKyAgICAgKGVnIE1NTywgdGVraGV4KS4KLSsKLSsgICAgIFRoZSBjYWxsIHRvIHhtYWxsb2MgYmVsb3cgd2lsbCBmYWlsIGlmIHRvbyBtdWNoIG1lbW9yeSBpcyByZXF1ZXN0ZWQsCi0rICAgICB3aGljaCB3aWxsIGNhdGNoIHRoZSBwcm9ibGVtIGluIHRoZSBub3JtYWwgdXNlIGNhc2UuICBCdXQgaWYgYSBtZW1vcnkKLSsgICAgIGNoZWNrZXIgaXMgaW4gdXNlLCBlZyB2YWxncmluZCBvciBzYW5pdGl6ZSwgdGhlbiBhbiBleGNlcHRpb24gd2lsbAotKyAgICAgYmUgc3RpbGwgZ2VuZXJhdGVkLCBzbyB3ZSB0cnkgdG8gY2F0Y2ggdGhlIHByb2JsZW0gZmlyc3QuCi0rCi0rICAgICBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIHNpbXBsZSB3YXkgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIG1lbW9yeSBjYW4KLSsgICAgIGJlIGFsbG9jYXRlZCBieSBjYWxsaW5nIHhtYWxsb2MuICBTbyBpbnN0ZWFkIHdlIHVzZSBhIHNpbXBsZSwgYXJiaXRyYXJ5Ci0rICAgICBsaW1pdCBvZiAyR2IuICBIb3BlZnVsbHkgdGhpcyBzaG91bGQgYmUgZW5vdWdoIGZvciBtb3N0IHVzZXJzLiAgSWYKLSsgICAgIHNvbWVvbmUgZG9lcyBzdGFydCB0cnlpbmcgdG8gZGlzYXNzZW1ibGUgc2VjdGlvbnMgbGFyZ2VyIHRoZW4gMkdiIGluCi0rICAgICBzaXplIHRoZXkgd2lsbCBkb3VidGxlc3MgY29tcGxhaW4gYW5kIHdlIGNhbiBpbmNyZWFzZSB0aGUgbGltaXQuICAqLwotKyNkZWZpbmUgTUFYX1hNQUxMT0MgKDEwMjQgKiAxMDI0ICogMTAyNCAqIDJVTCkgLyogMkdiICovCi0rICBpZiAoZGF0YXNpemUgPiBNQVhfWE1BTExPQykKLSsgICAgewotKyAgICAgIG5vbl9mYXRhbCAoXygiUmVhZGluZyBzZWN0aW9uICVzIGZhaWxlZCBiZWNhdXNlIGl0IGlzIHRvbyBiaWcgKCUjbHgpIiksCi0rCQkgc2VjdGlvbi0+bmFtZSwgKHVuc2lnbmVkIGxvbmcpIGRhdGFzaXplKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIGRhdGEgPSAoYmZkX2J5dGUgKikgeG1hbGxvYyAoZGF0YXNpemUpOwotIAotICAgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWN0aW9uLCBkYXRhLCAwLCBkYXRhc2l6ZSk7Ci1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfc2VjdGlvbik6IE1vdmUgY2hlY2sgZm9yIGFuIG92ZXJsYXJnZQotKyAgICAgICBzZWN0aW9uIHRvIGp1c3QgYmVmb3JlIHRoZSBhbGxvY2F0aW9uIG9mIG1lbW9yeS4gIERvIG5vdCBjaGVjawotKyAgICAgICBzZWN0aW9uIHNpemUgYWdhaW5zdCBmaWxlIHNpemUsIGJ1dCBpbnN0ZWFkIHVzZSBhbiBhcmJpdHJhcnkgMkdiCi0rICAgICAgIGxpbWl0LiAgSXNzdWUgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlIHNlY3Rpb24gaXMgdG9vIGJpZy4KLSsKLSAyMDE3LTA2LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotICAKLSAgICAgICAgUFIgYmludXRpbHMvMjE2NjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV84LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZGQ5NzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotRnJvbSBiYWU3NTAxZTg3YWI2MTQxMTVkOWQzMjEzYjRkZDE4ZDk2ZTYwNGRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMSBKdWwgMjAxNyAyMTo1ODoxMCArMDkzMAotU3ViamVjdDogW1BBVENIXSBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24KLQotSXQncyBuaWNlciB0aGFuIHhtYWxsb2MgZm9sbG93ZWQgYnkgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzLCBzaW5jZQoteG1hbGxvYyBleGl0cyBvbiBmYWlsdXJlIGFuZCBuZWVkcyBhIGNoZWNrIHRoYXQgaXRzIHNpemVfdCBhcmcgZG9lc24ndAotbG9zZSBoaWdoIGJpdHMgd2hlbiBjb252ZXJ0ZWQgZnJvbSBiZmRfc2l6ZV90eXBlLgotCi0JUFIgYmludXRpbHMvMjE2NjUKLQkqIG9iamR1bXAuYyAoc3RydGFiKTogTWFrZSB2YXIgYSBiZmRfYnl0ZSouCi0JKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBEb24ndCBsaW1pdCBtYWxsb2Mgc2l6ZS4gIEluc3RlYWQsIHVzZQotCWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLgotCShyZWFkX3NlY3Rpb25fc3RhYnMpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uICBSZXR1cm4KLQliZmRfYnl0ZSouCi0JKGZpbmRfc3RhYnNfc2VjdGlvbik6IFJlbW92ZSBub3cgdW5uZWNlc3NhcnkgY2FzdC4KLQkqIG9iamNvcHkuYyAoY29weV9vYmplY3QpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uICBGcmVlCi0JY29udGVudHMgb24gZXJyb3IgcmV0dXJuLgotCSogbmxtY29udi5jIChjb3B5X3NlY3Rpb25zKTogVXNlIGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk5NTUgIzgKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAxMyArKysrKysrKysrKysrCi0gYmludXRpbHMvbmxtY29udi5jIHwgIDYgKystLS0tCi0gYmludXRpbHMvb2JqY29weS5jIHwgIDUgKysrLS0KLSBiaW51dGlscy9vYmpkdW1wLmMgfCA0NCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxNiBAQAotKzIwMTctMDctMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTY2NQotKwkqIG9iamR1bXAuYyAoc3RydGFiKTogTWFrZSB2YXIgYSBiZmRfYnl0ZSouCi0rCShkaXNhc3NlbWJsZV9zZWN0aW9uKTogRG9uJ3QgbGltaXQgbWFsbG9jIHNpemUuICBJbnN0ZWFkLCB1c2UKLSsJYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0rCShyZWFkX3NlY3Rpb25fc3RhYnMpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uICBSZXR1cm4KLSsJYmZkX2J5dGUqLgotKwkoZmluZF9zdGFic19zZWN0aW9uKTogUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBjYXN0LgotKwkqIG9iamNvcHkuYyAoY29weV9vYmplY3QpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uICBGcmVlCi0rCWNvbnRlbnRzIG9uIGVycm9yIHJldHVybi4KLSsJKiBubG1jb252LmMgKGNvcHlfc2VjdGlvbnMpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0rCi0gMjAxNy0wNi0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLUluZGV4OiBnaXQvYmludXRpbHMvbmxtY29udi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvbmxtY29udi5jCi0rKysgZ2l0L2JpbnV0aWxzL25sbWNvbnYuYwotQEAgLTEyMjQsNyArMTIyNCw3IEBAIGNvcHlfc2VjdGlvbnMgKGJmZCAqaW5iZmQsIGFzZWN0aW9uICppbnMKLSAgIGNvbnN0IGNoYXIgKmlubmFtZTsKLSAgIGFzZWN0aW9uICpvdXRzZWM7Ci0gICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0tICB2b2lkICpjb250ZW50czsKLSsgIGJmZF9ieXRlICpjb250ZW50czsKLSAgIGxvbmcgcmVsb2Nfc2l6ZTsKLSAgIGJmZF9ieXRlIGJ1Zls0XTsKLSAgIGJmZF9zaXplX3R5cGUgYWRkOwotQEAgLTEyNDAsOSArMTI0MCw3IEBAIGNvcHlfc2VjdGlvbnMgKGJmZCAqaW5iZmQsIGFzZWN0aW9uICppbnMKLSAgICAgY29udGVudHMgPSBOVUxMOwotICAgZWxzZQotICAgICB7Ci0tICAgICAgY29udGVudHMgPSB4bWFsbG9jIChzaXplKTsKLS0gICAgICBpZiAoISBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGluYmZkLCBpbnNlYywgY29udGVudHMsCi0tCQkJCSAgICAgIChmaWxlX3B0cikgMCwgc2l6ZSkpCi0rICAgICAgaWYgKCFiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbiAoaW5iZmQsIGluc2VjLCAmY29udGVudHMpKQotIAliZmRfZmF0YWwgKGJmZF9nZXRfZmlsZW5hbWUgKGluYmZkKSk7Ci0gICAgIH0KLSAKLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgbG9uZyBkeW5zeW1jb3VudCA9IDA7Ci0gc3RhdGljIGJmZF9ieXRlICpzdGFiczsKLSBzdGF0aWMgYmZkX3NpemVfdHlwZSBzdGFiX3NpemU7Ci0gCi0tc3RhdGljIGNoYXIgKnN0cnRhYjsKLStzdGF0aWMgYmZkX2J5dGUgKnN0cnRhYjsKLSBzdGF0aWMgYmZkX3NpemVfdHlwZSBzdGFic3RyX3NpemU7Ci0gCi0gc3RhdGljIGJmZF9ib29sZWFuIGlzX3JlbG9jYXRhYmxlID0gRkFMU0U7Ci1AQCAtMjExMiwyOSArMjExMiw2IEBAIGRpc2Fzc2VtYmxlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAgICAgfQotICAgcmVsX3BwZW5kID0gcmVsX3BwICsgcmVsX2NvdW50OwotIAotLSAgLyogUFIgMjE2NjU6IENoZWNrIGZvciBvdmVybGFyZ2UgZGF0YXNpemVzLgotLSAgICAgTm90ZSAtIHdlIHVzZWQgdG8gY2hlY2sgZm9yICJkYXRhc2l6ZSA+IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSIgYnV0Ci0tICAgICB0aGlzIGZhaWxzIHdoZW4gdXNpbmcgY29tcHJlc3NlZCBzZWN0aW9ucyBvciBjb21wcmVzc2VkIGZpbGUgZm9ybWF0cwotLSAgICAgKGVnIE1NTywgdGVraGV4KS4KLS0KLS0gICAgIFRoZSBjYWxsIHRvIHhtYWxsb2MgYmVsb3cgd2lsbCBmYWlsIGlmIHRvbyBtdWNoIG1lbW9yeSBpcyByZXF1ZXN0ZWQsCi0tICAgICB3aGljaCB3aWxsIGNhdGNoIHRoZSBwcm9ibGVtIGluIHRoZSBub3JtYWwgdXNlIGNhc2UuICBCdXQgaWYgYSBtZW1vcnkKLS0gICAgIGNoZWNrZXIgaXMgaW4gdXNlLCBlZyB2YWxncmluZCBvciBzYW5pdGl6ZSwgdGhlbiBhbiBleGNlcHRpb24gd2lsbAotLSAgICAgYmUgc3RpbGwgZ2VuZXJhdGVkLCBzbyB3ZSB0cnkgdG8gY2F0Y2ggdGhlIHByb2JsZW0gZmlyc3QuCi0tCi0tICAgICBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIHNpbXBsZSB3YXkgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIG1lbW9yeSBjYW4KLS0gICAgIGJlIGFsbG9jYXRlZCBieSBjYWxsaW5nIHhtYWxsb2MuICBTbyBpbnN0ZWFkIHdlIHVzZSBhIHNpbXBsZSwgYXJiaXRyYXJ5Ci0tICAgICBsaW1pdCBvZiAyR2IuICBIb3BlZnVsbHkgdGhpcyBzaG91bGQgYmUgZW5vdWdoIGZvciBtb3N0IHVzZXJzLiAgSWYKLS0gICAgIHNvbWVvbmUgZG9lcyBzdGFydCB0cnlpbmcgdG8gZGlzYXNzZW1ibGUgc2VjdGlvbnMgbGFyZ2VyIHRoZW4gMkdiIGluCi0tICAgICBzaXplIHRoZXkgd2lsbCBkb3VidGxlc3MgY29tcGxhaW4gYW5kIHdlIGNhbiBpbmNyZWFzZSB0aGUgbGltaXQuICAqLwotLSNkZWZpbmUgTUFYX1hNQUxMT0MgKDEwMjQgKiAxMDI0ICogMTAyNCAqIDJVTCkgLyogMkdiICovCi0tICBpZiAoZGF0YXNpemUgPiBNQVhfWE1BTExPQykKLS0gICAgewotLSAgICAgIG5vbl9mYXRhbCAoXygiUmVhZGluZyBzZWN0aW9uICVzIGZhaWxlZCBiZWNhdXNlIGl0IGlzIHRvbyBiaWcgKCUjbHgpIiksCi0tCQkgc2VjdGlvbi0+bmFtZSwgKHVuc2lnbmVkIGxvbmcpIGRhdGFzaXplKTsKLS0gICAgICByZXR1cm47Ci0tICAgIH0KLS0KLSAgIGRhdGEgPSAoYmZkX2J5dGUgKikgeG1hbGxvYyAoZGF0YXNpemUpOwotIAotICAgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWN0aW9uLCBkYXRhLCAwLCBkYXRhc2l6ZSk7Ci1AQCAtMjY1MiwxMiArMjYyOSwxMSBAQCBkdW1wX2R3YXJmIChiZmQgKmFiZmQpCi0gLyogUmVhZCBBQkZEJ3Mgc3RhYnMgc2VjdGlvbiBTVEFCU0VDVF9OQU1FLCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0bwotICAgIGl0LiAgUmV0dXJuIE5VTEwgb24gZmFpbHVyZS4gICAqLwotIAotLXN0YXRpYyBjaGFyICoKLStzdGF0aWMgYmZkX2J5dGUgKgotIHJlYWRfc2VjdGlvbl9zdGFicyAoYmZkICphYmZkLCBjb25zdCBjaGFyICpzZWN0X25hbWUsIGJmZF9zaXplX3R5cGUgKnNpemVfcHRyKQotIHsKLSAgIGFzZWN0aW9uICpzdGFic2VjdDsKLS0gIGJmZF9zaXplX3R5cGUgc2l6ZTsKLS0gIGNoYXIgKmNvbnRlbnRzOwotKyAgYmZkX2J5dGUgKmNvbnRlbnRzOwotIAotICAgc3RhYnNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgc2VjdF9uYW1lKTsKLSAgIGlmIChzdGFic2VjdCA9PSBOVUxMKQotQEAgLTI2NjYsMTAgKzI2NDIsNyBAQCByZWFkX3NlY3Rpb25fc3RhYnMgKGJmZCAqYWJmZCwgY29uc3QgY2hhCi0gICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci0gCi0tICBzaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RhYnNlY3QpOwotLSAgY29udGVudHMgID0gKGNoYXIgKikgeG1hbGxvYyAoc2l6ZSk7Ci0tCi0tICBpZiAoISBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHN0YWJzZWN0LCBjb250ZW50cywgMCwgc2l6ZSkpCi0rICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChhYmZkLCBzdGFic2VjdCwgJmNvbnRlbnRzKSkKLSAgICAgewotICAgICAgIG5vbl9mYXRhbCAoXygicmVhZGluZyAlcyBzZWN0aW9uIG9mICVzIGZhaWxlZDogJXMiKSwKLSAJCSBzZWN0X25hbWUsIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAotQEAgLTI2NzksNyArMjY1Miw3IEBAIHJlYWRfc2VjdGlvbl9zdGFicyAoYmZkICphYmZkLCBjb25zdCBjaGEKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgKnNpemVfcHRyID0gc2l6ZTsKLSsgICpzaXplX3B0ciA9IGJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHN0YWJzZWN0KTsKLSAKLSAgIHJldHVybiBjb250ZW50czsKLSB9Ci1AQCAtMjgwNiw4ICsyNzc5LDcgQEAgZmluZF9zdGFic19zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uCi0gCi0gICAgICAgaWYgKHN0cnRhYikKLSAJewotLQkgIHN0YWJzID0gKGJmZF9ieXRlICopIHJlYWRfc2VjdGlvbl9zdGFicyAoYWJmZCwgc2VjdGlvbi0+bmFtZSwKLS0JCQkJCQkgICAmc3RhYl9zaXplKTsKLSsJICBzdGFicyA9IHJlYWRfc2VjdGlvbl9zdGFicyAoYWJmZCwgc2VjdGlvbi0+bmFtZSwgJnN0YWJfc2l6ZSk7Ci0gCSAgaWYgKHN0YWJzKQotIAkgICAgcHJpbnRfc2VjdGlvbl9zdGFicyAoYWJmZCwgc2VjdGlvbi0+bmFtZSwgJnNvdWdodC0+c3RyaW5nX29mZnNldCk7Ci0gCX0KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqY29weS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqY29weS5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamNvcHkuYwotQEAgLTIxODYsMTQgKzIxODYsMTUgQEAgY29weV9vYmplY3QgKGJmZCAqaWJmZCwgYmZkICpvYmZkLCBjb25zdAotIAkgICAgICBjb250aW51ZTsKLSAJICAgIH0KLSAKLS0JICBiZmRfYnl0ZSAqIGNvbnRlbnRzID0geG1hbGxvYyAoc2l6ZSk7Ci0tCSAgaWYgKGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoaWJmZCwgc2VjLCBjb250ZW50cywgMCwgc2l6ZSkpCi0rCSAgYmZkX2J5dGUgKmNvbnRlbnRzOwotKyAgICAgICAgICBpZiAoYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGliZmQsIHNlYywgJmNvbnRlbnRzKSkKLSAJICAgIHsKLSAJICAgICAgaWYgKGZ3cml0ZSAoY29udGVudHMsIDEsIHNpemUsIGYpICE9IHNpemUpCi0gCQl7Ci0gCQkgIG5vbl9mYXRhbCAoXygiZXJyb3Igd3JpdGluZyBzZWN0aW9uIGNvbnRlbnRzIHRvICVzIChlcnJvcjogJXMpIiksCi0gCQkJICAgICBwZHVtcC0+ZmlsZW5hbWUsCi0gCQkJICAgICBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgICBmcmVlIChjb250ZW50cyk7Ci0gCQkgIHJldHVybiBGQUxTRTsKLSAJCX0KLSAJICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV85LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MzUzZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNjEgKzAsMCBAQAotRnJvbSA4ZTJmNTRiY2VlN2UzZTgzMTVkNGEzOWEzMDJlYWY4ZTQzODllMDdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAwNjozNDowNSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYmZkX2dldF9maWxlX3NpemUgdG8gZ2V0IGFyY2hpdmUgZWxlbWVudCBzaXplCi0KLVdlIGNhbid0IHVzZSBzdGF0KCkgdG8gZ2V0IGFyY2hpdmUgZWxlbWVudCBzaXplLiAgQWRkIGJmZF9nZXRfZmlsZV9zaXplCi10byBnZXQgc2l6ZSBmb3IgYm90aCBub3JtYWwgZmlsZXMgYW5kIGFyY2hpdmUgZWxlbWVudHMuCi0KLWJmZC8KLQotCVBSIGJpbnV0aWxzLzIxNTE5Ci0JKiBiZmRpby5jIChiZmRfZ2V0X2ZpbGVfc2l6ZSk6IE5ldyBmdW5jdGlvbi4KLQkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCi0KLWJpbnV0aWxzLwotCi0JUFIgYmludXRpbHMvMjE1MTkKLQkqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IFJlcGxhY2UgZ2V0X2ZpbGVfc2l6ZQotCXdpdGggYmZkX2dldF9maWxlX3NpemUgdG8gZ2V0IGFyY2hpdmUgZWxlbWVudCBzaXplLgotCSogdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9vYmpkdW1wLmV4cCAodGVzdF9vYmpkdW1wX2YpOiBOZXcKLQlwcm9jLgotCSh0ZXN0X29iamR1bXBfaCk6IExpa2V3aXNlLgotCSh0ZXN0X29iamR1bXBfdCk6IExpa2V3aXNlLgotCSh0ZXN0X29iamR1bXBfcik6IExpa2V3aXNlLgotCSh0ZXN0X29iamR1bXBfcyk6IExpa2V3aXNlLgotCUFkZCBvYmpkdW1wIHRlc3RzIG9uIGFyY2hpdmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwotIGJmZC9iZmQtaW4yLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGJmZC9iZmRpby5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrKwotIGJpbnV0aWxzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysKLSBiaW51dGlscy9vYmpkdW1wLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCi0gYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9vYmpkdW1wLmV4cCB8IDE3OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL2JmZC1pbjIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9iZmQtaW4yLmgKLSsrKyBnaXQvYmZkL2JmZC1pbjIuaAotQEAgLTEyNDEsNiArMTI0MSw4IEBAIGxvbmcgYmZkX2dldF9tdGltZSAoYmZkICphYmZkKTsKLSAKLSBmaWxlX3B0ciBiZmRfZ2V0X3NpemUgKGJmZCAqYWJmZCk7Ci0gCi0rZmlsZV9wdHIgYmZkX2dldF9maWxlX3NpemUgKGJmZCAqYWJmZCk7Ci0rCi0gdm9pZCAqYmZkX21tYXAgKGJmZCAqYWJmZCwgdm9pZCAqYWRkciwgYmZkX3NpemVfdHlwZSBsZW4sCi0gICAgIGludCBwcm90LCBpbnQgZmxhZ3MsIGZpbGVfcHRyIG9mZnNldCwKLSAgICAgdm9pZCAqKm1hcF9hZGRyLCBiZmRfc2l6ZV90eXBlICptYXBfbGVuKTsKLUluZGV4OiBnaXQvYmZkL2JmZGlvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvYmZkaW8uYwotKysrIGdpdC9iZmQvYmZkaW8uYwotQEAgLTQzNCw2ICs0MzQsMjkgQEAgYmZkX2dldF9zaXplIChiZmQgKmFiZmQpCi0gICByZXR1cm4gYnVmLnN0X3NpemU7Ci0gfQotIAotKy8qCi0rRlVOQ1RJT04KLSsJYmZkX2dldF9maWxlX3NpemUKLSsKLStTWU5PUFNJUwotKwlmaWxlX3B0ciBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYmZkICphYmZkKTsKLSsKLStERVNDUklQVElPTgotKwlSZXR1cm4gdGhlIGZpbGUgc2l6ZSAoYXMgcmVhZCBmcm9tIGZpbGUgc3lzdGVtKSBmb3IgdGhlIGZpbGUKLSsJYXNzb2NpYXRlZCB3aXRoIEJGRCBAdmFye2FiZmR9LiAgSXQgc3VwcG9ydHMgYm90aCBub3JtYWwgZmlsZXMKLSsJYW5kIGFyY2hpdmUgZWxlbWVudHMuCi0rCi0rKi8KLSsKLStmaWxlX3B0cgotK2JmZF9nZXRfZmlsZV9zaXplIChiZmQgKmFiZmQpCi0rewotKyAgaWYgKGFiZmQtPm15X2FyY2hpdmUgIT0gTlVMTAotKyAgICAgICYmICFiZmRfaXNfdGhpbl9hcmNoaXZlIChhYmZkLT5teV9hcmNoaXZlKSkKLSsgICAgcmV0dXJuIGFyZWx0X3NpemUgKGFiZmQpOwotKwotKyAgcmV0dXJuIGJmZF9nZXRfc2l6ZSAoYWJmZCk7Ci0rfQotIAotIC8qCi0gRlVOQ1RJT04KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTMzMTAsNyArMzMxMCw3IEBAIGR1bXBfcmVsb2NzX2luX3NlY3Rpb24gKGJmZCAqYWJmZCwKLSAgICAgfQotIAotICAgaWYgKChiZmRfZ2V0X2ZpbGVfZmxhZ3MgKGFiZmQpICYgKEJGRF9JTl9NRU1PUlkgfCBCRkRfTElOS0VSX0NSRUFURUQpKSA9PSAwCi0tICAgICAgJiYgcmVsc2l6ZSA+IGdldF9maWxlX3NpemUgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKSkKLSsgICAgICAmJiByZWxzaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpKQotICAgICB7Ci0gICAgICAgcHJpbnRmICgiICh0b28gbWFueTogMHgleClcbiIsIHNlY3Rpb24tPnJlbG9jX2NvdW50KTsKLSAgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfZmlsZV90cnVuY2F0ZWQpOwotSW5kZXg6IGdpdC9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9vYmpkdW1wLmV4cAotKysrIGdpdC9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwCi1AQCAtNjQsOTYgKzY0LDE2OCBAQCBpZiBbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotIGlmIHshW2JpbnV0aWxzX2Fzc2VtYmxlICRzcmNkaXIvJHN1YmRpci9iaW50ZXN0LnMgdG1wZGlyL2JpbnRlc3Qub119IHRoZW4gewotICAgICByZXR1cm4KLSB9Ci0raWYgeyFbYmludXRpbHNfYXNzZW1ibGUgJHNyY2Rpci8kc3ViZGlyL2JpbnRlc3QucyB0bXBkaXIvYmludGVzdDIub119IHRoZW4gewotKyAgICByZXR1cm4KLSt9Ci0gaWYgW2lzX3JlbW90ZSBob3N0XSB7Ci0gICAgIHNldCB0ZXN0ZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgdG1wZGlyL2JpbnRlc3Qub10KLSsgICAgc2V0IHRlc3RmaWxlMiBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgdG1wZGlyL2JpbnRlc3QyLm9dCi0gfSBlbHNlIHsKLSAgICAgc2V0IHRlc3RmaWxlIHRtcGRpci9iaW50ZXN0Lm8KLSsgICAgc2V0IHRlc3RmaWxlMiB0bXBkaXIvYmludGVzdDIubwotK30KLSsKLStpZiB7ICFbaXN0YXJnZXQgImFscGhhLSotKiJdIHx8IFtpc19lbGZfZm9ybWF0XSB9IHRoZW4gewotKyAgICByZW1vdGVfZmlsZSBob3N0IGZpbGUgZGVsZXRlIHRtcGRpci9iaW50ZXN0LmEKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRBUiAicmMgdG1wZGlyL2JpbnRlc3QuYSAkdGVzdGZpbGUyIl0KLSsgICAgaWYgIVtzdHJpbmcgbWF0Y2ggIiIgJGdvdF0gdGhlbiB7Ci0rCWZhaWwgImJpbnRlc3QuYSIKLSsJcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgdG1wZGlyL2JpbnRlc3QuYQotKyAgICB9IGVsc2UgewotKwlpZiBbaXNfcmVtb3RlIGhvc3RdIHsKLSsJICAgIHNldCB0ZXN0YXJjaGl2ZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgdG1wZGlyL2JpbnRlc3QuYV0KLSsJfSBlbHNlIHsKLSsJICAgIHNldCB0ZXN0YXJjaGl2ZSB0bXBkaXIvYmludGVzdC5hCi0rCX0KLSsgICAgfQotKyAgICByZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB0bXBkaXIvYmludGVzdDIubwotIH0KLSAKLSAjIFRlc3Qgb2JqZHVtcCAtZgotIAotLXNldCBnb3QgW2JpbnV0aWxzX3J1biAkT0JKRFVNUCAiJE9CSkRVTVBGTEFHUyAtZiAkdGVzdGZpbGUiXQotK3Byb2MgdGVzdF9vYmpkdW1wX2YgeyB0ZXN0ZmlsZSBkdW1wZmlsZSB9IHsKLSsgICAgZ2xvYmFsIE9CSkRVTVAKLSsgICAgZ2xvYmFsIE9CSkRVTVBGTEFHUwotKyAgICBnbG9iYWwgY3B1c19yZWdleAotIAotLXNldCB3YW50ICIkdGVzdGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LiphcmNoaXRlY3R1cmU6XFsgCVxdKiR7Y3B1c19yZWdleH0uKkhBU19SRUxPQy4qSEFTX1NZTVMiCi0rICAgIHNldCBnb3QgW2JpbnV0aWxzX3J1biAkT0JKRFVNUCAiJE9CSkRVTVBGTEFHUyAtZiAkdGVzdGZpbGUiXQotIAotLWlmICFbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotLSAgICBmYWlsICJvYmpkdW1wIC1mIgotLX0gZWxzZSB7Ci0tICAgIHBhc3MgIm9iamR1bXAgLWYiCi0rICAgIHNldCB3YW50ICIkZHVtcGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LiphcmNoaXRlY3R1cmU6XFsgCVxdKiR7Y3B1c19yZWdleH0uKkhBU19SRUxPQy4qSEFTX1NZTVMiCi0rCi0rICAgIGlmICFbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotKwlmYWlsICJvYmpkdW1wIC1mICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rICAgIH0gZWxzZSB7Ci0rCXBhc3MgIm9iamR1bXAgLWYgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfQotK30KLSsKLSt0ZXN0X29iamR1bXBfZiAkdGVzdGZpbGUgJHRlc3RmaWxlCi0raWYgeyBbIHJlbW90ZV9maWxlIGhvc3QgZXhpc3RzICR0ZXN0YXJjaGl2ZSBdIH0gdGhlbiB7Ci0rICAgIHRlc3Rfb2JqZHVtcF9mICR0ZXN0YXJjaGl2ZSBiaW50ZXN0Mi5vCi0gfQotIAotICMgVGVzdCBvYmpkdW1wIC1oCi0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1oICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfaCB7IHRlc3RmaWxlIGR1bXBmaWxlIH0gewotKyAgICBnbG9iYWwgT0JKRFVNUAotKyAgICBnbG9iYWwgT0JKRFVNUEZMQUdTCi0gCi0tc2V0IHdhbnQgIiR0ZXN0ZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKlNlY3Rpb25zLipcWzAtOVxdK1xbIAlcXStcW14gCVxdKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteIAlcXSpcWyAJXF0qKFxbMC05YS1mQS1GXF0rKS4qXFswLTlcXStcWyAJXF0rXFteIAlcXSooXFwuZGF0YXxEQVRBfERfMSlcW14gCVxdKlxbIAlcXSooXFswLTlhLWZBLUZcXSspIgotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLWggJHRlc3RmaWxlIl0KLSAKLS1pZiAhW3JlZ2V4cCAkd2FudCAkZ290IGFsbCB0ZXh0X25hbWUgdGV4dF9zaXplIGRhdGFfbmFtZSBkYXRhX3NpemVdIHRoZW4gewotLSAgICBmYWlsICJvYmpkdW1wIC1oIgotLX0gZWxzZSB7Ci0tICAgIHZlcmJvc2UgInRleHQgbmFtZSBpcyAkdGV4dF9uYW1lIHNpemUgaXMgJHRleHRfc2l6ZSIKLS0gICAgdmVyYm9zZSAiZGF0YSBuYW1lIGlzICRkYXRhX25hbWUgc2l6ZSBpcyAkZGF0YV9zaXplIgotLSAgICBzZXQgZXRzIDgKLS0gICAgc2V0IGVkcyA0Ci0tICAgICMgVGhlIFt0aV1jNHggdGFyZ2V0IGhhcyB0aGUgcHJvcGVydHkgc2l6ZW9mKGNoYXIpPXNpemVvZihsb25nKT0xCi0tICAgIGlmIFtpc3RhcmdldCAqYzR4Ki0qLSpdIHRoZW4gewotLSAgICAgICAgc2V0IGV0cyAyCi0tICAgICAgICBzZXQgZWRzIDEKLS0gICAgfQotLSAgICAjIGM1NHggc2VjdGlvbiBzaXplcyBhcmUgaW4gYnl0ZXMsIG5vdCBvY3RldHM7IGFkanVzdCBhY2NvcmRpbmdseQotLSAgICBpZiBbaXN0YXJnZXQgKmM1NHgqLSotKl0gdGhlbiB7Ci0tCXNldCBldHMgNAotLQlzZXQgZWRzIDIKLS0gICAgfQotLSAgICBpZiB7W2V4cHIgIjB4JHRleHRfc2l6ZSJdIDwgJGV0cyB8fCBbZXhwciAiMHgkZGF0YV9zaXplIl0gPCAkZWRzfSB0aGVuIHsKLS0Jc2VuZF9sb2cgInNpemVzIHRvbyBzbWFsbFxuIgotLQlmYWlsICJvYmpkdW1wIC1oIgotKyAgICBzZXQgd2FudCAiJGR1bXBmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qU2VjdGlvbnMuKlxbMC05XF0rXFsgCVxdK1xbXiAJXF0qKHRleHR8VEVYVHxQfFxcXCRDT0RFXFxcJClcW14gCVxdKlxbIAlcXSooXFswLTlhLWZBLUZcXSspLipcWzAtOVxdK1xbIAlcXStcW14gCVxdKihcXC5kYXRhfERBVEF8RF8xKVxbXiAJXF0qXFsgCVxdKihcWzAtOWEtZkEtRlxdKykiCi0rCi0rICAgIGlmICFbcmVnZXhwICR3YW50ICRnb3QgYWxsIHRleHRfbmFtZSB0ZXh0X3NpemUgZGF0YV9uYW1lIGRhdGFfc2l6ZV0gdGhlbiB7Ci0rCWZhaWwgIm9iamR1bXAgLWggKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSAgICAgfSBlbHNlIHsKLS0JcGFzcyAib2JqZHVtcCAtaCIKLSsJdmVyYm9zZSAidGV4dCBuYW1lIGlzICR0ZXh0X25hbWUgc2l6ZSBpcyAkdGV4dF9zaXplIgotKwl2ZXJib3NlICJkYXRhIG5hbWUgaXMgJGRhdGFfbmFtZSBzaXplIGlzICRkYXRhX3NpemUiCi0rCXNldCBldHMgOAotKwlzZXQgZWRzIDQKLSsJIyBUaGUgW3RpXWM0eCB0YXJnZXQgaGFzIHRoZSBwcm9wZXJ0eSBzaXplb2YoY2hhcik9c2l6ZW9mKGxvbmcpPTEKLSsJaWYgW2lzdGFyZ2V0ICpjNHgqLSotKl0gdGhlbiB7Ci0rICAgICAgICAgICAgc2V0IGV0cyAyCi0rICAgICAgICAgICAgc2V0IGVkcyAxCi0rCX0KLSsJIyBjNTR4IHNlY3Rpb24gc2l6ZXMgYXJlIGluIGJ5dGVzLCBub3Qgb2N0ZXRzOyBhZGp1c3QgYWNjb3JkaW5nbHkKLSsJaWYgW2lzdGFyZ2V0ICpjNTR4Ki0qLSpdIHRoZW4gewotKwkgICAgc2V0IGV0cyA0Ci0rCSAgICBzZXQgZWRzIDIKLSsgICAgICAgIH0KLSsJaWYge1tleHByICIweCR0ZXh0X3NpemUiXSA8ICRldHMgfHwgW2V4cHIgIjB4JGRhdGFfc2l6ZSJdIDwgJGVkc30gdGhlbiB7Ci0rCSAgICBzZW5kX2xvZyAic2l6ZXMgdG9vIHNtYWxsXG4iCi0rCSAgICBmYWlsICJvYmpkdW1wIC1oICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rCX0gZWxzZSB7Ci0rCSAgICBwYXNzICJvYmpkdW1wIC1oICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rCX0KLSAgICAgfQotIH0KLSAKLSt0ZXN0X29iamR1bXBfaCAkdGVzdGZpbGUgJHRlc3RmaWxlCi0raWYgeyBbIHJlbW90ZV9maWxlIGhvc3QgZXhpc3RzICR0ZXN0YXJjaGl2ZSBdIH0gdGhlbiB7Ci0rICAgIHRlc3Rfb2JqZHVtcF9oICR0ZXN0YXJjaGl2ZSBiaW50ZXN0Mi5vCi0rfQotKwotICMgVGVzdCBvYmpkdW1wIC10Ci0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC10ICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfdCB7IHRlc3RmaWxlfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSsKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC10ICR0ZXN0ZmlsZSJdCi0rCi0rICAgIGlmIFtpbmZvIGV4aXN0cyB2YXJzXSB0aGVuIHsgdW5zZXQgdmFycyB9Ci0rICAgIHdoaWxlIHtbcmVnZXhwICIoXFthLXpcXSpfc3ltYm9sKSguKikiICRnb3QgYWxsIHN5bWJvbCByZXN0XX0gewotKwlzZXQgdmFycygkc3ltYm9sKSAxCi0rCXNldCBnb3QgJHJlc3QKLSsgICAgfQotIAotLWlmIFtpbmZvIGV4aXN0cyB2YXJzXSB0aGVuIHsgdW5zZXQgdmFycyB9Ci0td2hpbGUge1tyZWdleHAgIihcW2EtelxdKl9zeW1ib2wpKC4qKSIgJGdvdCBhbGwgc3ltYm9sIHJlc3RdfSB7Ci0tICAgIHNldCB2YXJzKCRzeW1ib2wpIDEKLS0gICAgc2V0IGdvdCAkcmVzdAotKyAgICBpZiB7IVtpbmZvIGV4aXN0cyB2YXJzKHRleHRfc3ltYm9sKV0gXAotKwkgfHwgIVtpbmZvIGV4aXN0cyB2YXJzKGRhdGFfc3ltYm9sKV0gXAotKwkgfHwgIVtpbmZvIGV4aXN0cyB2YXJzKGNvbW1vbl9zeW1ib2wpXSBcCi0rCSB8fCAhW2luZm8gZXhpc3RzIHZhcnMoZXh0ZXJuYWxfc3ltYm9sKV19IHRoZW4gewotKwlmYWlsICJvYmpkdW1wIC10ICgkdGVzdGZpbGUpIgotKyAgICB9IGVsc2UgewotKwlwYXNzICJvYmpkdW1wIC10ICgkdGVzdGZpbGUpIgotKyAgICB9Ci0gfQotIAotLWlmIHshW2luZm8gZXhpc3RzIHZhcnModGV4dF9zeW1ib2wpXSBcCi0tICAgICB8fCAhW2luZm8gZXhpc3RzIHZhcnMoZGF0YV9zeW1ib2wpXSBcCi0tICAgICB8fCAhW2luZm8gZXhpc3RzIHZhcnMoY29tbW9uX3N5bWJvbCldIFwKLS0gICAgIHx8ICFbaW5mbyBleGlzdHMgdmFycyhleHRlcm5hbF9zeW1ib2wpXX0gdGhlbiB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLXQiCi0tfSBlbHNlIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtdCIKLSt0ZXN0X29iamR1bXBfdCAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX3QgJHRlc3RhcmNoaXZlCi0gfQotIAotICMgVGVzdCBvYmpkdW1wIC1yCi0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1yICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfciB7IHRlc3RmaWxlIGR1bXBmaWxlIH0gewotKyAgICBnbG9iYWwgT0JKRFVNUAotKyAgICBnbG9iYWwgT0JKRFVNUEZMQUdTCi0gCi0tc2V0IHdhbnQgIiR0ZXN0ZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKlJFTE9DQVRJT04gUkVDT1JEUyBGT1IgXFxcW1xbXlxdXF0qKHRleHR8VEVYVHxQfFxcXCRDT0RFXFxcJClcW15cXVxdKlxcXF0uKmV4dGVybmFsX3N5bWJvbCIKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1yICR0ZXN0ZmlsZSJdCi0gCi0taWYgW3JlZ2V4cCAkd2FudCAkZ290XSB0aGVuIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtciIKLS19IGVsc2UgewotLSAgICBmYWlsICJvYmpkdW1wIC1yIgotKyAgICBzZXQgd2FudCAiJGR1bXBmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qUkVMT0NBVElPTiBSRUNPUkRTIEZPUiBcXFxbXFteXF1cXSoodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXlxdXF0qXFxcXS4qZXh0ZXJuYWxfc3ltYm9sIgotKwotKyAgICBpZiBbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotKwlwYXNzICJvYmpkdW1wIC1yICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgIm9iamR1bXAgLXIgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfQotK30KLSsKLSt0ZXN0X29iamR1bXBfciAkdGVzdGZpbGUgJHRlc3RmaWxlCi0raWYgeyBbIHJlbW90ZV9maWxlIGhvc3QgZXhpc3RzICR0ZXN0YXJjaGl2ZSBdIH0gdGhlbiB7Ci0rICAgIHRlc3Rfb2JqZHVtcF9yICR0ZXN0YXJjaGl2ZSBiaW50ZXN0Mi5vCi0gfQotIAotICMgVGVzdCBvYmpkdW1wIC1zCi0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1zICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfcyB7IHRlc3RmaWxlIGR1bXBmaWxlIH0gewotKyAgICBnbG9iYWwgT0JKRFVNUAotKyAgICBnbG9iYWwgT0JKRFVNUEZMQUdTCi0gCi0tc2V0IHdhbnQgIiR0ZXN0ZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKkNvbnRlbnRzLioodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXjAtOVxdKlxbIAlcXSpcWzAtOWEtZkEtRlxdKlxbIAlcXSooMDAwMDAwMDF8MDEwMDAwMDB8MDAwMDAxMDApLipDb250ZW50cy4qKGRhdGF8REFUQXxEXzEpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMnwwMjAwMDAwMHwwMDAwMDIwMCkiCi0rICAgIHNldCBnb3QgW2JpbnV0aWxzX3J1biAkT0JKRFVNUCAiJE9CSkRVTVBGTEFHUyAtcyAkdGVzdGZpbGUiXQotIAotLWlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0tICAgIHBhc3MgIm9iamR1bXAgLXMiCi0tfSBlbHNlIHsKLS0gICAgZmFpbCAib2JqZHVtcCAtcyIKLSsgICAgc2V0IHdhbnQgIiRkdW1wZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKkNvbnRlbnRzLioodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXjAtOVxdKlxbIAlcXSpcWzAtOWEtZkEtRlxdKlxbIAlcXSooMDAwMDAwMDF8MDEwMDAwMDB8MDAwMDAxMDApLipDb250ZW50cy4qKGRhdGF8REFUQXxEXzEpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMnwwMjAwMDAwMHwwMDAwMDIwMCkiCi0rCi0rICAgIGlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0rCXBhc3MgIm9iamR1bXAgLXMgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfSBlbHNlIHsKLSsJZmFpbCAib2JqZHVtcCAtcyAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9Ci0rfQotKwotK3Rlc3Rfb2JqZHVtcF9zICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX3MgJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLXMgb24gYSBmaWxlIHRoYXQgY29udGFpbnMgYSBjb21wcmVzc2VkIC5kZWJ1ZyBzZWN0aW9uCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDUtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE1MTkKLSsgICAgICAgKiBiZmRpby5jIChiZmRfZ2V0X2ZpbGVfc2l6ZSk6IE5ldyBmdW5jdGlvbi4KLSsgICAgICAgKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgotKwotIDIwMTctMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDE2IEBACi0rMjAxNy0wNS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTUxOQotKyAgICAgICAqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IFJlcGxhY2UgZ2V0X2ZpbGVfc2l6ZQotKyAgICAgICB3aXRoIGJmZF9nZXRfZmlsZV9zaXplIHRvIGdldCBhcmNoaXZlIGVsZW1lbnQgc2l6ZS4KLSsgICAgICAgKiB0ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwICh0ZXN0X29iamR1bXBfZik6IE5ldwotKyAgICAgICBwcm9jLgotKyAgICAgICAodGVzdF9vYmpkdW1wX2gpOiBMaWtld2lzZS4KLSsgICAgICAgKHRlc3Rfb2JqZHVtcF90KTogTGlrZXdpc2UuCi0rICAgICAgICh0ZXN0X29iamR1bXBfcik6IExpa2V3aXNlLgotKyAgICAgICAodGVzdF9vYmpkdW1wX3MpOiBMaWtld2lzZS4KLSsgICAgICAgQWRkIG9iamR1bXAgdGVzdHMgb24gYXJjaGl2ZS4KLSsKLSAyMDE3LTA3LTAxICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjE2NjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUxNDM3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1yZXF1aXJlIGJpbnV0aWxzLmluYwotcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKLQotREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciIKLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KLQotCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCi0Jcm0gLXJmICR7RH0ke2JpbmRpcn0KLQlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9Ci0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KLQlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWE5NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI5LjEuYmIKQEAgLTAsMCArMSw0OSBAQAorcmVxdWlyZSBiaW51dGlscy5pbmMKK3JlcXVpcmUgYmludXRpbHMtJHtQVn0uaW5jCisKK0RFUEVORFMgKz0gImZsZXggYmlzb24gemxpYiIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc3lzcm9vdD0vIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0Ml9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1lbmFibGUtdGFyZ2V0cz1hbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS02NC1iaXQtYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IiCisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBJbnN0YWxsIHRoZSBsaWJpYmVydHkgaGVhZGVyCisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9hbnNpZGVjbC5oICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xpYmliZXJ0eS5oICR7RH0ke2luY2x1ZGVkaXJ9CisKKwkjIFdlIG9ubHkgd2FudCBsaWJpYmVydHksIGxpYmJmZCBhbmQgbGlib3Bjb2RlcworCXJtIC1yZiAke0R9JHtiaW5kaXJ9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQorCXJtIC1yZiAke0R9JHtwcmVmaXh9L2xpYi9sZHNjcmlwdHMKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9pbmZvCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbWFuCisJcm1kaXIgJHtEfSR7cHJlZml4fS9zaGFyZSB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0vZ2NjLWxpYiB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn02NC9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfSB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn02NCB8fCA6Cit9CisKKyMgU3BsaXQgb3V0IGxpYmJmZC0qLnNvIHNvIGluY2x1ZGluZyBwZXJmIGRvZXNuJ3QgaW5jbHVkZSBleHRyYSBzdHVmZgorUEFDS0FHRV9CRUZPUkVfUE4gKz0gImxpYmJmZCIKK0ZJTEVTX2xpYmJmZCA9ICIke2xpYmRpcn0vbGliYmZkLSouc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vMDAwMS1zcmMtbG9jYWwubWstZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi8wMDAxLXNyYy1sb2NhbC5tay1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKaW5kZXggOTU0M2E1Ni4uMWU4NmY1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi8wMDAxLXNyYy1sb2NhbC5tay1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi8wMDAxLXNyYy1sb2NhbC5tay1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNhMTVmN2M5YWNlNmMwMjk0ZWRjMzEzYTE4NDhjYWZjYzMxYjJhOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDViOTIwNGVlZTRiMDZiNDhkNTRlY2MzZWYzYTBiNTZmYzVjYzg0ZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMjQgQXByIDIwMTUgMDA6Mzg6MzIgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3JjL2xvY2FsLm1rOiBmaXggcGFyYWxsZWwgaXNzdWUKQEAgLTksMTEgKzksMTIgQEAKIC9iaW4vYmFzaDogc3JjL3lhY2MudG1wOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiBNYWtlZmlsZTo2NjcwOiByZWNpcGUgZm9yIHRhcmdldCAnc3JjL3lhY2MnIGZhaWxlZAogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2Jpc29uLXBhdGNoZXMvMjAxNy0wNy9tc2cwMDAwMC5odG1sIF0KIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCi0gc3JjL2xvY2FsLm1rIHwgICAgMSArCisgc3JjL2xvY2FsLm1rIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvbG9jYWwubWsgYi9zcmMvbG9jYWwubWsKQEAgLTI5LDUgKzMwLDUgQEAKICAJJChBTV9WX2F0KWVjaG8gImV4ZWMgJyQoYmluZGlyKS9iaXNvbicgLXkgIiciJCRAIicgPj4kQC50bXAKICAJJChBTV9WX2F0KWNobW9kIGEreCAkQC50bXAKIC0tIAotMS43LjkuNQorMi44LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKaW5kZXggY2ZmY2Q4OC4uN2QwNjZiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCkBAIC0yMyw3ICsyMyw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzM0MjIwMWRlMTA0Y2M5Y2UwYTIxZTBhZDEwZDQwMjEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTcyNDI4Yzc5MTdiZGY5ZmE5M2NiODE4MWM5NzFiNmUyMjgzNDEyNTg0OGNmMWQwM2NlMTBiMWJiMDcxNmZlMSIKIAotTERGTEFHU19wcmVwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0ICIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImdldHRleHQtbWluaW1hbC1uYXRpdmUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCmluZGV4IDRmMDE3MzQuLmEzMTAxMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIGVjaG8gJ0VYSVRfUFJPQz0iJEVYSVRfUFJPQyBtYXRjaGJveC13aW5kb3ctbWFuYWdlciInID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2Jvb3RjaGFydGQuY29uZgogCiAgICAjIFVzZSBweXRob24gMyBpbnN0ZWFkIG9mIHB5dGhvbiAyCi0gICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9weWJvb3RjaGFydGd1aQorICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtEfSR7YmluZGlyfS9weWJvb3RjaGFydGd1aQogfQogCiBQQUNLQUdFUyA9KyAicHlib290Y2hhcnRndWkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MTkwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGU1ODM2OWY2ZDM2YmM1MWViNTlkNmFmYTM0YzFjYWUzZmYwODEwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBBdWcgMjAxNyAxNDoxMDozOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogYnVpbGQgbWt0YWJsZXMgdXNpbmcgbmF0aXZlIGdjYworCitJdCdzIGEgdGhyb3dhd2F5IGhlbHBlciBiaW5hcnkgdXNlZCBkdXJpbmcgYnVpbGQsIGFuZCBzbyBpdCBuZWVkcyB0bworYmUgbmF0aXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGIzZTJiNjMuLjM0N2FhZjEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0zMjMsNyArMzIzLDcgQEAgdmVyc2lvbi5oOiB2ZXJzaW9uLnNoIHZlcnNpb24uaC5pbiBjb25maWd1cmUuYWMKKyAKKyBta3RhYmxlczoga2VybmVsLWxpYi9ta3RhYmxlcy5jCisgCUBlY2hvICIgICAgW0NDXSAgICAgJEAiCistCSQoUSkkKENDKSAkKENGTEFHUykgJDwgLW8gJEAKKysJJChRKSQoQlVJTERfQ0MpICQoQlVJTERfQ0ZMQUdTKSAkPCAtbyAkQAorIAorIGtlcm5lbC1saWIvdGFibGVzLmM6IG1rdGFibGVzCisgCUBlY2hvICIgICAgW1RBQkxFXSAgJEAiCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNjYzg5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCitpbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKK2Vhc3kgYWRtaW5pc3RyYXRpb24uIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCitidHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorCitTUkNSRVYgPSAiMDYwNzEzMmMzMjAwYmNlYWQxNDI2ZTZkYzY4NTQzMjAwOGRlOTVkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgorCW1rZGlyIC1wICR7U30vY29uZmlnCisJY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KK30KKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVlOWUyMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAotaW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCi1lYXN5IGFkbWluaXN0cmF0aW9uLiBcCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAotYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLQotU1JDUkVWID0gIjk2NDg1YzM0YWMwMzI5ZmIwMDczNDc2ZjE2ZDIwODNjNjQ3MDFmMjkiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgotCW1rZGlyIC1wICR7U30vY29uZmlnCi0JY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KLX0KLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKaW5kZXggYzYwYzE2NC4uODRkMDRjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgpAQCAtMjIsNiArMjIsNyBAQAogU1JDUkVWID0gImM1MzUyYzA1NGM2ZWYxNTczNWRhMzFiNzZkNmQ4ODYyMGY0YWZmMGEiCiBQRSA9ICIxIgogUFYgPSAiMjAxNS4wMi4xMCtnaXQke1NSQ1BWfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NocnBhdGgvY2hycGF0aC9zdGFuZGFyZGRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2hycGF0aC9jaHJwYXRoL3N0YW5kYXJkZG9jLnBhdGNoCmluZGV4IGY5NmYxMDQuLjNkMzAzZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2hycGF0aC9jaHJwYXRoL3N0YW5kYXJkZG9jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2hycGF0aC9jaHJwYXRoL3N0YW5kYXJkZG9jLnBhdGNoCkBAIC0xLDE0ICsxLDI0IEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK0Zyb20gMjg1YjVmYmYxZDZiMjVmZjU1ZDMwNWMxN2VkZjRkMzI3YmYxOWRkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogVHVlLCA1IEp1bCAyMDExIDIzOjQyOjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNocnBhdGg6IEVuc3VyZSB0aGUgcGFja2FnZSByZXNwZWN0cyB0aGUgZG9jZGlyIHZhcmlhYmxlCiAKLWF1dG9jb25mL2F1dG9tYWtlIHNldCBkb2NkaXIgYXV0b21hdGljYWxseSwgdXNlIHRoZWlyIHZhbHVlIGVuc3VyaW5nIAorYXV0b2NvbmYvYXV0b21ha2Ugc2V0IGRvY2RpciBhdXRvbWF0aWNhbGx5LCB1c2UgdGhlaXIgdmFsdWUgZW5zdXJpbmcKIGRvYyBmaWxlcyBhcmUgcGxhY2VkIGludG8gJGRhdGFkaXIvZG9jLCBub3QgJHByZWZpeC9kb2MuCiAKIFJQIDUvNy8yMDExCiAKLUluZGV4OiBjaHJwYXRoLTAuMTMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJwYXRoLTAuMTMub3JpZy9NYWtlZmlsZS5hbQkyMDExLTA3LTA1IDIzOjQwOjE0Ljc2OTkyMDI1NCArMDEwMAotKysrIGNocnBhdGgtMC4xMy9NYWtlZmlsZS5hbQkyMDExLTA3LTA1IDIzOjQwOjE5LjgxOTkyMDYzNSArMDEwMAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwOi8vbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmcvcGlwZXJtYWlsL2NocnBhdGgtZGV2ZWwvV2Vlay1vZi1Nb24tMjAxNzA3MTAvMDAwMDEzLmh0bWwgXQorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBiNTBhZDIxLi41ZjdlODYxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtMSw3ICsxLDUgQEAKICBTVUJESVJTID0gdGVzdHN1aXRlIGRlYgogIApAQCAtMTcsMyArMjcsNiBAQAogIGRvY19EQVRBID0gQVVUSE9SUyBDT1BZSU5HIENoYW5nZUxvZyBJTlNUQUxMIE5FV1MgUkVBRE1FCiAgCiAgYmluX1BST0dSQU1TID0gY2hycGF0aAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWQ0MzQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotcmVxdWlyZSBjbWFrZS5pbmMKLWluaGVyaXQgbmF0aXZlCi0KLURFUEVORFMgKz0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBleHBhdC1uYXRpdmUgeHotbmF0aXZlIHpsaWItbmF0aXZlIGN1cmwtbmF0aXZlIgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2NtbGliYXJjaGl2ZS1kaXNhYmxlLWV4dDJmcy5wYXRjaCBcCi0iCi0KLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCi0KLSMgRGlzYWJsZSBjY21ha2Ugc2luY2Ugd2UgZG9uJ3QgZGVwZW5kIG9uIG5jdXJzZXMKLUNNQUtFX0VYVFJBQ09ORiA9ICJcCi0gICAgLURDTUFLRV9MSUJSQVJZX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCQVJDSElWRT0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKLSAgICAtREVOQUJMRV9BQ0w9MCAtREhBVkVfQUNMX0xJQkFDTF9IPTAgXAotICAgIC1ESEFWRV9TWVNfQUNMX0g9MCBcCi0iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JJHtTfS9jb25maWd1cmUgLS12ZXJib3NlIC0tcHJlZml4PSR7cHJlZml4fSAtLSAke0NNQUtFX0VYVFJBQ09ORn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLWRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gInBlcmNlbnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NWU4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjguMi5iYgpAQCAtMCwwICsxLDM4IEBACityZXF1aXJlIGNtYWtlLmluYworaW5oZXJpdCBuYXRpdmUKKworREVQRU5EUyArPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGV4cGF0LW5hdGl2ZSB4ei1uYXRpdmUgemxpYi1uYXRpdmUgY3VybC1uYXRpdmUiCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoIFwKKyIKKworQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworIyBEaXNhYmxlIGNjbWFrZSBzaW5jZSB3ZSBkb24ndCBkZXBlbmQgb24gbmN1cnNlcworQ01BS0VfRVhUUkFDT05GID0gIlwKKyAgICAtRENNQUtFX0xJQlJBUllfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAorICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJBUkNISVZFPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlVWPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlJIQVNIPTAgXAorICAgIC1ERU5BQkxFX0FDTD0wIC1ESEFWRV9BQ0xfTElCQUNMX0g9MCBcCisgICAgLURIQVZFX1NZU19BQ0xfSD0wIFwKKyIKKworZG9fY29uZmlndXJlICgpIHsKKwkke1N9L2NvbmZpZ3VyZSAtLXZlcmJvc2UgLS1wcmVmaXg9JHtwcmVmaXh9IC0tICR7Q01BS0VfRVhUUkFDT05GfQorfQorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KKworZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKaW5kZXggNmM4YjM2ZC4uNmFlYjI1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKQEAgLTYsNyArNiw3IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9wdWJsaWMua2l0d2FyZS5jb20vQnVnL215X3ZpZXdfcGFnZS5waHAiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodC50eHQ7bWQ1PTdhNjRiYzU2NDIwMmJmNzQwMWQ5YThlZjMzYzk1NjRkIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodC50eHQ7bWQ1PThkOGM3YmMzMmY4Nzk3ZDIzZjVjZjYwNWQ5MzM5ZDJkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9jbWFrZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MzttZDU9NDQ5NGRlZTE4NDIxMmZjODljNDY5YzNhY2Q1NTVhMTQiCiAKIENNQUtFX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0iCkBAIC0xNCwxMiArMTQsMTEgQEAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9jbWFrZS5vcmcvZmlsZXMvdiR7Q01BS0VfTUFKT1JfVkVSU0lPTn0vY21ha2UtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3F0NC1mYWlsLXNpbGVudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1nY2Mtd2FybmluZ3Mtd2l0aC1Xc3RyaWN0LXByb3RvdHlwZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1LV0lNTC10ZXN0cy1SZW1vdmUtZm9ybWF0LXNlY3VyaXR5LWZyb20tZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzliZDdlNjVjZDgxZWEzYWEyNjE5NDg0YWQ2ZmYyNWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGMxMjQ2YzRlNmQxNjhlYTRkNmUwNDJjZmJhNTc3YzFhY2Q2NWZlZWEyN2U1NmY1ZmYzN2RmOTIwYzMwY2FlMCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNWRmZjYxZjZhN2YxMzA1MjcxYWIzZjZhZTI2MTQxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTMwNzI3OTRlYjRjMDlmMmQ3ODJmY2VlMDQzODQ3Yjk5YmI0Y2Y4ZDQ1NzM5NzhkOWIyMDI0MjE0ZDZlOTJkIgogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbWFrZS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjgyMGRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA0NmQyNWU3ODJlYmQ5YjZjNTA3NzFiNmYzMDQzM2M1OGZhZTAzYTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1lIFJvdXNzaW4tQsOpbGFuZ2VyIDxtYXhpbWUucm91c3NpbmJlbGFuZ2VyQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTE6MzA6MDcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IFVzZSBmaW5kX3Byb2dyYW0gaWYgZmluZF9ob3N0X3Byb2dyYW0gaXMgbm90CisgYXZhaWxhYmxlCisKK0NNYWtlIGRvZXMgbm90IGRlZmluZSB0aGUgYGZpbmRfaG9zdF9wcm9ncmFtYCBjb21tYW5kIHdlJ3ZlIGJlZW4gdXNpbmcKK2luIHRoZSBjcm9zcy1jb21waWxpbmcgY29kZSBwYXRoLiAgSXQgd2FzIHByb3ZpZGVkIGJ5IGEgd2lkZWx5IHVzZWQKK0FuZHJvaWQgdG9vbGNoYWluIGZpbGUuICBGb3IgY29tcGF0aWJpbGl0eSwgY29udGludWUgdG8gdXNlCitgZmluZF9ob3N0X3Byb2dyYW1gIGlmIGF2YWlsYWJsZSwgYnV0IG90aGVyd2lzZSB1c2UganVzdCBgZmluZF9wcm9ncmFtYC4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorW2h0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2NtYWtlL2NtYWtlL21lcmdlX3JlcXVlc3RzLzEwMDldCisgICAgICAgIC0gV2lsbCBiZSBpbiAzLjEwCisKK1NpZ25lZC1vZmYtYnk6IE1heGltZSBSb3Vzc2luLULDqWxhbmdlciA8bWF4aW1lLnJvdXNzaW5iZWxhbmdlckBnbWFpbC5jb20+CistLS0KKyBNb2R1bGVzL0ZpbmRDVURBLmNtYWtlIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlIGIvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQoraW5kZXggYTRkY2E1NC4uNzdjYTM1MSAxMDA2NDQKKy0tLSBhL01vZHVsZXMvRmluZENVREEuY21ha2UKKysrKyBiL01vZHVsZXMvRmluZENVREEuY21ha2UKK0BAIC02NzksNyArNjc5LDExIEBAIGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQorICAgIyBhZGQga25vd24gQ1VEQSB0YXJnZXRyIHJvb3QgcGF0aCB0byB0aGUgc2V0IG9mIGRpcmVjdG9yaWVzIHdlIHNlYXJjaCBmb3IgcHJvZ3JhbXMsIGxpYnJhcmllcyBhbmQgaGVhZGVycworICAgc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSCAiJHtDVURBX1RPT0xLSVRfVEFSR0VUX0RJUn07JHtDTUFLRV9GSU5EX1JPT1RfUEFUSH0iKQorICAgbWFjcm8oIGN1ZGFfZmluZF9ob3N0X3Byb2dyYW0gKQorLSAgICBmaW5kX2hvc3RfcHJvZ3JhbSggJHtBUkdOfSApCisrICAgIGlmIChDT01NQU5EIGZpbmRfaG9zdF9wcm9ncmFtKQorKyAgICAgIGZpbmRfaG9zdF9wcm9ncmFtKCAke0FSR059ICkKKysgICAgZWxzZSgpCisrICAgICAgZmluZF9wcm9ncmFtKCAke0FSR059ICkKKysgICAgZW5kaWYoKQorICAgZW5kbWFjcm8oKQorIGVsc2UoKQorICAgIyBmb3Igbm9uLWNyb3NzLWNvbXBpbGUsIGZpbmRfaG9zdF9wcm9ncmFtID09IGZpbmRfcHJvZ3JhbSBhbmQgQ1VEQV9UT09MS0lUX1RBUkdFVF9ESVIgPT0gQ1VEQV9UT09MS0lUX1JPT1RfRElSCistLQorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1LV0lNTC10ZXN0cy1SZW1vdmUtZm9ybWF0LXNlY3VyaXR5LWZyb20tZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MDEzM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMDk0MTM5NWIxNDY4MDRhYmNkODcwMDQ1ODlmZjZlN2EyOTUzNDEyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDE2IE1hciAyMDE3IDE0OjM5OjA0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEtXSU1MIHRlc3RzOiBSZW1vdmUgZm9ybWF0LXNlY3VyaXR5IGZyb20gZmxhZ3MKLQotRm9yIHRoZSB0ZXN0cyB3aGVyZSAiZm9ybWF0IiBpcyByZW1vdmVkIGZyb20gZmxhZ3MsICJmb3JtYXQtc2VjdXJpdHkiCi1zaG91bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLiBPdGhlcndpc2UgYnVpbGRpbmcgY21ha2Ugd2l0aAotIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IiBmYWlsczoKLQotfCBjYzE6IGVycm9yOiAtV2Zvcm1hdC1zZWN1cml0eSBpZ25vcmVkIHdpdGhvdXQgLVdmb3JtYXQgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtwYXJ0IG9mIGNvbW1pdCBmNzc0MjBjZmM5XQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIFV0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL0tXSU1ML3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9VdGlsaXRpZXMvS1dJTUwvdGVzdC9DTWFrZUxpc3RzLnR4dAotaW5kZXggNGY2ZjM3Yi4uMWJmOTNiYiAxMDA2NDQKLS0tLSBhL1V0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0Ci0rKysgYi9VdGlsaXRpZXMvS1dJTUwvdGVzdC9DTWFrZUxpc3RzLnR4dAotQEAgLTEwLDcgKzEwLDcgQEAgZW5kaWYoKQotICMgU3VwcHJlc3MgcHJpbnRmL3NjYW5mIGZvcm1hdCB3YXJuaW5nczsgd2UgdGVzdCBpZiB0aGUgc2l6ZXMgbWF0Y2guCi0gZm9yZWFjaChsYW5nIEMgQ1hYKQotICAgaWYoS1dJTUxfTEFOR1VBR0VfJHtsYW5nfSBBTkQgQ01BS0VfJHtsYW5nfV9DT01QSUxFUl9JRCBTVFJFUVVBTCAiR05VIikKLS0gICAgc2V0KENNQUtFXyR7bGFuZ31fRkxBR1MgIiR7Q01BS0VfJHtsYW5nfV9GTEFHU30gLVduby1mb3JtYXQiKQotKyAgICBzZXQoQ01BS0VfJHtsYW5nfV9GTEFHUyAiJHtDTUFLRV8ke2xhbmd9X0ZMQUdTfSAtV25vLWZvcm1hdCAtV25vLWZvcm1hdC1zZWN1cml0eSIpCi0gICBlbmRpZigpCi0gZW5kZm9yZWFjaCgpCi0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlCmluZGV4IDY1MTg0MDguLmRjODQ3N2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQpAQCAtMSw3ICsxLDcgQEAKIHNldCggQ01BS0VfU1lTVEVNX05BTUUgTGludXggKQogc2V0KCBDTUFLRV9DX0ZMQUdTICRFTlZ7Q0ZMQUdTfSBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UgKQogc2V0KCBDTUFLRV9DWFhfRkxBR1MgJEVOVntDWFhGTEFHU30gIENBQ0hFIFNUUklORyAiIiBGT1JDRSApCi1zZXQoIENNQUtFIEFTTV9GTEFHUyAke0NNQUtFX0NfRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCitzZXQoIENNQUtFX0FTTV9GTEFHUyAke0NNQUtFX0NfRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiBzZXQoIENNQUtFX0xERkxBR1NfRkxBR1MgJHtDTUFLRV9DWFhfRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiAKIHNldCggQ01BS0VfRklORF9ST09UX1BBVEggJEVOVntPRUNPUkVfVEFSR0VUX1NZU1JPT1R9ICRFTlZ7T0VDT1JFX05BVElWRV9TWVNST09UfSApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2F2b2lkLWdjYy13YXJuaW5ncy13aXRoLVdzdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvYXZvaWQtZ2NjLXdhcm5pbmdzLXdpdGgtV3N0cmljdC1wcm90b3R5cGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjhkNDgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvYXZvaWQtZ2NjLXdhcm5pbmdzLXdpdGgtV3N0cmljdC1wcm90b3R5cGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA0YmMxNzM0NWMwMWVhNDY3MDk5ZTI4YzdkZjMwYzIzYWNlOWU3ODExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTQgT2N0IDIwMTYgMTY6MjY6NTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2tGdW5jdGlvbkV4aXN0cy5jOiBhdm9pZCBnY2Mgd2FybmluZ3Mgd2l0aAotIC1Xc3RyaWN0LXByb3RvdHlwZXMKLQotQXZvaWQgd2FybmluZ3MgKGFuZCB0aGVyZWZvcmUgYnVpbGQgZmFpbHVyZXMgZXRjKSBpZiBhIHVzZXIgaGFwcGVucwotdG8gYWRkIC1Xc3RyaWN0LXByb3RvdHlwZXMgdG8gQ0ZMQUdTLgotCi0gfCAkIGdjYyAtLXZlcnNpb24KLSB8IGdjYyAoVWJ1bnR1IDQuOC40LTJ1YnVudHUxfjE0LjA0LjMpIDQuOC40Ci0gfAotIHwgJCBnY2MgLVdzdHJpY3QtcHJvdG90eXBlcyAtV2Vycm9yIC1EQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTPXB0aHJlYWRfY3JlYXRlIC1vIGZvby5vIC1jIE1vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jCi0gfCBNb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYzo3OjM6IGVycm9yOiBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpc24ndCBhIHByb3RvdHlwZSBbLVdlcnJvcj1zdHJpY3QtcHJvdG90eXBlc10KLSB8ICAgIENIRUNLX0ZVTkNUSU9OX0VYSVNUUygpOwotIHwgICAgXgotIHwgY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLSB8Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYyBiL01vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jCi1pbmRleCAyMzA0MDAwLi4yMjRlMzQwIDEwMDY0NAotLS0tIGEvTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLSsrKyBiL01vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jCi1AQCAtNCw3ICs0LDcgQEAKLSBleHRlcm4gIkMiCi0gI2VuZGlmCi0gICBjaGFyCi0tICBDSEVDS19GVU5DVElPTl9FWElTVFMoKTsKLSsgIENIRUNLX0ZVTkNUSU9OX0VYSVNUUyh2b2lkKTsKLSAjaWZkZWYgX19DTEFTU0lDX0NfXwotIGludCBtYWluKCkKLSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuNy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTY2YTQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1yZXF1aXJlIGNtYWtlLmluYwotCi1pbmhlcml0IGNtYWtlCi0KLURFUEVORFMgKz0gImN1cmwgZXhwYXQgemxpYiBsaWJhcmNoaXZlIHh6IG5jdXJzZXMgYnppcDIiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAotICAgIGZpbGU6Ly9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBcCi0gICAgZmlsZTovL2Vudmlyb25tZW50LmQtY21ha2Uuc2giCi0KLSMgU3RyaXAgJHtwcmVmaXh9IGZyb20gJHtkb2NkaXJ9LCBzZXQgcmVzdWx0IGludG8gZG9jZGlyX3N0cmlwcGVkCi1weXRob24gKCkgewotICAgIHByZWZpeD1kLmdldFZhcigicHJlZml4IikKLSAgICBkb2NkaXI9ZC5nZXRWYXIoImRvY2RpciIpCi0KLSAgICBpZiBub3QgZG9jZGlyLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgYmIuZmF0YWwoJ2RvY2RpciBtdXN0IGNvbnRhaW4gcHJlZml4IGFzIGl0cyBwcmVmaXgnKQotCi0gICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyW2xlbihwcmVmaXgpOl0KLSAgICBpZiBsZW4oZG9jZGlyX3N0cmlwcGVkKSA+IDAgYW5kIGRvY2Rpcl9zdHJpcHBlZFswXSA9PSAnLyc6Ci0gICAgICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2Rpcl9zdHJpcHBlZFsxOl0KLQotICAgIGQuc2V0VmFyKCJkb2NkaXJfc3RyaXBwZWQiLCBkb2NkaXJfc3RyaXBwZWQpCi19Ci0KLUVYVFJBX09FQ01BS0U9IiBcCi0gICAgLURDTUFLRV9ET0NfRElSPSR7ZG9jZGlyX3N0cmlwcGVkfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCi0gICAgLURLV1NZU19DSEFSX0lTX1NJR05FRD0xIFwKLSAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKLSAgICAtREtXU1lTX0xGU19XT1JLUz0xIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2NtYWtlCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSAke0R9JHtkYXRhZGlyfS9jbWFrZS8KLQotICAgIG1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtY21ha2Uuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9jbWFrZS5zaAotfQotCi1GSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RvY2Rpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjhmZDdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjguMi5iYgpAQCAtMCwwICsxLDUwIEBACityZXF1aXJlIGNtYWtlLmluYworCitpbmhlcml0IGNtYWtlCisKK0RFUEVORFMgKz0gImN1cmwgZXhwYXQgemxpYiBsaWJhcmNoaXZlIHh6IG5jdXJzZXMgYnppcDIiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgIGZpbGU6Ly9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBcCisgICAgZmlsZTovL2Vudmlyb25tZW50LmQtY21ha2Uuc2giCisKKyMgU3RyaXAgJHtwcmVmaXh9IGZyb20gJHtkb2NkaXJ9LCBzZXQgcmVzdWx0IGludG8gZG9jZGlyX3N0cmlwcGVkCitweXRob24gKCkgeworICAgIHByZWZpeD1kLmdldFZhcigicHJlZml4IikKKyAgICBkb2NkaXI9ZC5nZXRWYXIoImRvY2RpciIpCisKKyAgICBpZiBub3QgZG9jZGlyLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgYmIuZmF0YWwoJ2RvY2RpciBtdXN0IGNvbnRhaW4gcHJlZml4IGFzIGl0cyBwcmVmaXgnKQorCisgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyW2xlbihwcmVmaXgpOl0KKyAgICBpZiBsZW4oZG9jZGlyX3N0cmlwcGVkKSA+IDAgYW5kIGRvY2Rpcl9zdHJpcHBlZFswXSA9PSAnLyc6CisgICAgICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2Rpcl9zdHJpcHBlZFsxOl0KKworICAgIGQuc2V0VmFyKCJkb2NkaXJfc3RyaXBwZWQiLCBkb2NkaXJfc3RyaXBwZWQpCit9CisKK0VYVFJBX09FQ01BS0U9IiBcCisgICAgLURDTUFLRV9ET0NfRElSPSR7ZG9jZGlyX3N0cmlwcGVkfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCisgICAgLURLV1NZU19DSEFSX0lTX1NJR05FRD0xIFwKKyAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKKyAgICAtREtXU1lTX0xGU19XT1JLUz0xIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2NtYWtlCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSAke0R9JHtkYXRhZGlyfS9jbWFrZS8KKworICAgIG1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtY21ha2Uuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9jbWFrZS5zaAorfQorCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RvY2Rpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWMvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC10aGUtc2hhcmVkLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWMvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC10aGUtc2hhcmVkLWxpYnJhcnkucGF0Y2gKaW5kZXggMDEyNzEyNC4uY2Q3MjA4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtdGhlLXNoYXJlZC1saWJyYXJ5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tYy8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IE1vbiwgMiBKYW4gMjAxNyAxNzoyMzo1OSArMDIwMAogU3ViamVjdDogW1BBVENIXSBDb3JyZWN0bHkgaW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYy9wdWxsLzc4XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBzcmMvQ01ha2VMaXN0cy50eHQgfCAzICsrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKaW5kZXggMWY5MDZlZS4uN2I3MGRhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXByaW50LXByb2dyZXNzLWluLXBlcmNlbnQtd2hlbi1kb3dubG9hZGluZy1DVkUtZGIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jdXJsLWFsbG93LW92ZXJyaWRpbmctZGVmYXVsdC1DQS1jZXJ0aWZpY2F0ZS1maWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLUNvbXBhcmUtY29tcHV0ZWQtdnMtZXhwZWN0ZWQtc2hhMjU2LWRpZ2l0LXN0ci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1mcmVlaW5nLW1lbW9yeS1hbGxvY2F0ZWQtYnktc3FsaXRlLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjNWY0MjQ3MTQwZmM5YmUzYmY0MTQ5MWQzMWEzNDE1NSIKQEAgLTI5LDcgKzMwLDcgQEAKIAogZG9fcG9wdWxhdGVfY3ZlX2RiKCkgewogICAgIGlmIFsgIiR7QkJfTk9fTkVUV09SS30iID0gIjEiIF0gOyB0aGVuCi0gICAgICAgIGJiZXJyb3IgIkJCX05PX05FVFdPUksgaXMgc2V0OyBDYW4ndCB1cGRhdGUgY3ZlLWNoZWNrLXRvb2wgZGF0YWJhc2UsIENWRXMgd29uJ3QgYmUgY2hlY2tlZCIKKyAgICAgICAgYmJ3YXJuICJCQl9OT19ORVRXT1JLIGlzIHNldDsgQ2FuJ3QgdXBkYXRlIGN2ZS1jaGVjay10b29sIGRhdGFiYXNlLCBuZXcgQ1ZFcyB3b24ndCBiZSBkZXRlY3RlZCIKICAgICAgICAgcmV0dXJuCiAgICAgZmkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy8wMDAxLUZpeC1mcmVlaW5nLW1lbW9yeS1hbGxvY2F0ZWQtYnktc3FsaXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy8wMDAxLUZpeC1mcmVlaW5nLW1lbW9yeS1hbGxvY2F0ZWQtYnktc3FsaXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODJjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBhMzM1MzQyOTY1MmY4M2JiOGIwMzE2NTAwZmFhODhmYTI1NTU1NDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgTWFya28gPHBldGVyLm1hcmtvQHNpZW1lbnMuY29tPgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAyMzowOTo1MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggZnJlZWluZyBtZW1vcnkgYWxsb2NhdGVkIGJ5IHNxbGl0ZQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBNYXJrbyA8cGV0ZXIubWFya29Ac2llbWVucy5jb20+CistLS0KKyBzcmMvY29yZS5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS5jIGIvc3JjL2NvcmUuYworaW5kZXggNjI2MzAzMS4uNjc4OGYxNiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlLmMKKysrKyBiL3NyYy9jb3JlLmMKK0BAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBib29sIGVuc3VyZV90YWJsZShDdmVEQiAqc2VsZikKKyAgICAgICAgIHJjID0gc3FsaXRlM19leGVjKHNlbGYtPmRiLCBxdWVyeSwgTlVMTCwgTlVMTCwgJmVycik7CisgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZW5zdXJlX3RhYmxlKCk6ICVzXG4iLCBlcnIpOworLSAgICAgICAgICAgICAgICBmcmVlKGVycik7CisrICAgICAgICAgICAgICAgIHNxbGl0ZTNfZnJlZShlcnIpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgICAgICAKK0BAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBib29sIGVuc3VyZV90YWJsZShDdmVEQiAqc2VsZikKKyAgICAgICAgIHJjID0gc3FsaXRlM19leGVjKHNlbGYtPmRiLCBxdWVyeSwgTlVMTCwgTlVMTCwgJmVycik7CisgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZW5zdXJlX3RhYmxlKCk6ICVzXG4iLCBlcnIpOworLSAgICAgICAgICAgICAgICBmcmVlKGVycik7CisrICAgICAgICAgICAgICAgIHNxbGl0ZTNfZnJlZShlcnIpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgCitAQCAtOTksMTEgKzk5LDExIEBAIHN0YXRpYyBib29sIGVuc3VyZV90YWJsZShDdmVEQiAqc2VsZikKKyAgICAgICAgIHJjID0gc3FsaXRlM19leGVjKHNlbGYtPmRiLCBxdWVyeSwgTlVMTCwgTlVMTCwgJmVycik7CisgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZW5zdXJlX3RhYmxlKCk6ICVzXG4iLCBlcnIpOworLSAgICAgICAgICAgICAgICBmcmVlKGVycik7CisrICAgICAgICAgICAgICAgIHNxbGl0ZTNfZnJlZShlcnIpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgICAgICBpZiAoZXJyKSB7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICB9CisgCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy8wMDAxLXByaW50LXByb2dyZXNzLWluLXBlcmNlbnQtd2hlbi1kb3dubG9hZGluZy1DVkUtZGIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaAppbmRleCAwNTEwZTNhLi44ZWE2ZjY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaApAQCAtMzgsNyArMzgsNyBAQAogKyAgICAgICAgaWYgKGRsdG90YWwgJiYgcGVyY2VudCAmJiBwZXJjZW50LT5lbmQgPj0gcGVyY2VudC0+c3RhcnQpIHsKICsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpZmYgPSBwZXJjZW50LT5lbmQgLSBwZXJjZW50LT5zdGFydDsKICsgICAgICAgICAgICAgICAgaWYgKGRpZmYpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiY29tcGxldGVkOiAiQ1VSTF9GT1JNQVRfT0ZGX1QiJSVcciIsIHBlcmNlbnQtPnN0YXJ0ICsgKGRpZmYgKiBkbG5vdyAvIGRsdG90YWwpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiY29tcGxldGVkOiAlIkNVUkxfRk9STUFUX0NVUkxfT0ZGX1QiJSVcciIsIHBlcmNlbnQtPnN0YXJ0ICsgKGRpZmYgKiBkbG5vdyAvIGRsdG90YWwpKTsKICsgICAgICAgICAgICAgICAgfQogKyAgICAgICAgfQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiCmluZGV4IDU4M2IzODcuLmY4YjdiMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIKQEAgLTE4LDE0ICsxOCw5IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKIAotTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKIAotZG9fY29uZmlndXJlICgpIHsKLQlpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotCWF1dG90b29sc19kb19jb25maWd1cmUKLX0KK0xERkxBR1MgKz0gIiR7VE9PTENIQUlOX09QVElPTlN9IgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCWNwIC1yICR7U30vdGVzdGluZyAke0R9JHtQVEVTVF9QQVRIfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKaW5kZXggZWEzZDdjMS4uYjZkYTY1YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKIFNSQ1JFViA9ICJkOGIxOGRmM2U5ZGNiZTRmMDkyYmVkNTY1ODM1ZDM5NzVlOTk0MzJjIgogUyA9ICIke1dPUktESVJ9L2dpdCIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDlhOWQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkRNSSAoRGVza3RvcCBNYW5hZ2VtZW50IEludGVyZmFjZSkgdGFibGUgcmVsYXRlZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvZG1pZGVjb2RlLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9L2RtaWRlY29kZS8ke0JQfS50YXIueHoiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YWFyY2g2NHxhcm18cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbAotfQotCi1kb191bnBhY2tfZXh0cmEoKSB7Ci0Jc2VkIC1pIC1lICcvXnByZWZpeC9zOi91c3IvbG9jYWw6JHtleGVjX3ByZWZpeH06JyAke1N9L01ha2VmaWxlCi19Ci1hZGR0YXNrIHVucGFja19leHRyYSBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyODFlZTU3MmQ0NWM3OGVjYTczYTE0ODM0YzQ5NWZmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWMzNWJiMTkzNzI5YzFkNTkzYTE0NjBiNTlkODJkMjRiODkxMDJhYjIzZmQwNDE2ZTZjZjQzMjVkMDc3ZTQ1IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODMyODFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMS5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkRNSSAoRGVza3RvcCBNYW5hZ2VtZW50IEludGVyZmFjZSkgdGFibGUgcmVsYXRlZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvZG1pZGVjb2RlLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9L2RtaWRlY29kZS8ke0JQfS50YXIueHoiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YWFyY2g2NHxhcm18cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbAorfQorCitkb191bnBhY2tfZXh0cmEoKSB7CisJc2VkIC1pIC1lICcvXnByZWZpeC9zOi91c3IvbG9jYWw6JHtleGVjX3ByZWZpeH06JyAke1N9L01ha2VmaWxlCit9CithZGR0YXNrIHVucGFja19leHRyYSBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzljMmMwMTVjNTE1YWE2Y2E1ZjIyOWFlZTQ5YzEwMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzY2Y2U5YjI1NTQ4YzU5YjFlN2U5MzA1MDViNGNhZDlhN2JiMGI5MDRhMWEzOTFmYmI2MDRkNTI5NzgxYWMwIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWYzMTQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDE2NjgzM2E4OGE5MjhhNTc0YmY5MTQzYjliNjVmNTQ0YmU0ODJjNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTggQXVnIDIwMTcgMTU6NTU6MTUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgY29uZi5yZWxlYXNldmVyIGluc3RlYWQgb2YgcmVsZWFzZXZlcgorCitUaGUgc3Vic3RpdHV0aW9ucyBtYXkgYWN0dWFsbHkgc2V0IHRoZSBjb25mLnJlbGVhc2V2ZXIgY29ycmVjdGx5LAorYW5kIHNvIHRoZSBjaGVjayBzaG91bGQgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgcGFzc2VkLWluIGZ1bmN0aW9uCitwYXJhbWV0ZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mL3B1bGwvOTAxXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBkbmYvY2xpL2NsaS5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKK2luZGV4IDJkNjM0MjBjLi4xNjc5NDNiOCAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY2xpLnB5CisrKysgYi9kbmYvY2xpL2NsaS5weQorQEAgLTkxNCw3ICs5MTQsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKKyAgICAgICAgIGNvbmYucmVsZWFzZXZlciA9IHJlbGVhc2V2ZXIKKyAgICAgICAgIHN1YnN0ID0gY29uZi5zdWJzdGl0dXRpb25zCisgICAgICAgICBzdWJzdC51cGRhdGVfZnJvbV9ldGMoY29uZi5pbnN0YWxscm9vdCkKKy0gICAgICAgIGlmIHJlbGVhc2V2ZXIgaXMgTm9uZToKKysgICAgICAgIGlmIGNvbmYucmVsZWFzZXZlciBpcyBOb25lOgorICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKF8oIlVuYWJsZSB0byBkZXRlY3QgcmVsZWFzZSB2ZXJzaW9uICh1c2UgJy0tcmVsZWFzZXZlcicgdG8gc3BlY2lmeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVsZWFzZSB2ZXJzaW9uKSIpKQorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKaW5kZXggNjEzMjhlNi4uMWFiZDg4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCkBAIC0xMCw4ICsxMCw3IEBACiAtLS0KICBiaW4vZG5mLWF1dG9tYXRpYy5pbiB8IDIgKy0KICBiaW4vZG5mLmluICAgICAgICAgICB8IDIgKy0KLSBiaW4veXVtLmluICAgICAgICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2Jpbi9kbmYtYXV0b21hdGljLmluIGIvYmluL2RuZi1hdXRvbWF0aWMuaW4KIGluZGV4IDViMDZhYTI2Li45ZjZmNzAzZSAxMDA3NTUKQEAgLTMzLDE2ICszMiw2IEBACiAgIyBUaGUgZG5mIGV4ZWN1dGFibGUgc2NyaXB0LgogICMKICAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IFJlZCBIYXQsIEluYy4KLWRpZmYgLS1naXQgYS9iaW4veXVtLmluIGIvYmluL3l1bS5pbgotaW5kZXggZjFmZWUwNzEuLjAxM2RjOGM1IDEwMDc1NQotLS0tIGEvYmluL3l1bS5pbgotKysrIGIvYmluL3l1bS5pbgotQEAgLTEsNCArMSw0IEBACi0tIyFAUFlUSE9OX0VYRUNVVEFCTEVACi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotICMgVGhlIGRuZiBleGVjdXRhYmxlIHNjcmlwdC4KLSAjCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTYgUmVkIEhhdCwgSW5jLgogLS0gCiAyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZDZhNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJQYWNrYWdlIG1hbmFnZXIgZm9ya2VkIGZyb20gWXVtLCB1c2luZyBsaWJzb2x2IGFzIGEgZGVwZW5kZW5jeSByZXNvbHZlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQUNLQUdFLUxJQ0VOU0lORzttZDU9YmZjMjk5MTZlMTEzMjFiZTA2OTI0YzRmYjA5NmZkY2MgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2RuZi5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICJiZTI1ODUxODNlYzQ0ODVlZTRkNWUxMjFmMjQyZDg2NjkyOTZmMDY1IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZSBzeXN0ZW1kCisKK0RFUEVORFMgKz0gImxpYmRuZiBsaWJyZXBvIGxpYmNvbXBzIHB5dGhvbjMtaW5pcGFyc2UiCisKKyMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLworRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj0wIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1uZXRjbGllbnQgcHl0aG9uMy1lbWFpbCBweXRob24zLXRocmVhZGluZyBweXRob24zLWRpc3R1dGlscyBsaWJyZXBvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1zdWJwcm9jZXNzIGxpYmNvbXBzIGxpYmRuZiBweXRob24zLXNxbGl0ZTMgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXJwbSBweXRob24zLWluaXBhcnNlIHB5dGhvbjMtanNvbiBweXRob24zLWltcG9ydGxpYiBweXRob24zLWN1cnNlcyBweXRob24zLWFyZ3BhcnNlIHB5dGhvbjMtbWlzYyBweXRob24zLWdwZyIKKyMgUmVjb21tZW5kIGdudXBnIHNvIHRoYXQgR1BHIHNpZ25hdHVyZSBjaGVjayBvbiByZXBvc2l0b3J5IG1ldGFkYXRhIGlzIHBvc3NpYmxlCitSUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImdudXBnIgorCisjIENyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkICdkbmYnIGFzICdtYWtlIGluc3RhbGwnIGRvZXMgbm90IGRvIGl0LCBidXQKKyMgLnNwZWMgZmlsZSBpbiBkbmYgc291cmNlIHRyZWUgZG9lcyAoYW5kIHRoZW4gRmVkb3JhIGFuZCBkbmYgZG9jdW1lbnRhdGlvbgorIyBzYXlzIHRoYXQgZG5mIGJpbmFyeSBpcyBwbGFpbiAnZG5mJykuCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi0zICR7RH0vJHtiaW5kaXJ9L2RuZgorICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYy0zICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMKK30KKworIyBEaXJlY3QgZG5mLW5hdGl2ZSB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9kbmYgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCisgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbmYtbWFrZWNhY2hlLnNlcnZpY2UgZG5mLW1ha2VjYWNoZS50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjgxNGZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlBhY2thZ2UgbWFuYWdlciBmb3JrZWQgZnJvbSBZdW0sIHVzaW5nIGxpYnNvbHYgYXMgYSBkZXBlbmRlbmN5IHJlc29sdmVyIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBQ0tBR0UtTElDRU5TSU5HO21kNT1iZmMyOTkxNmUxMTMyMWJlMDY5MjRjNGZiMDk2ZmRjYyBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QViA9ICIyLjAuMCtnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJmMDA5M2Q2NzJkMzA2OWNmZWU4NDQ3OTczYWU3MGVmNjE1ZmQ4ODg2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZSBzeXN0ZW1kCi0KLURFUEVORFMgKz0gImxpYmRuZiBsaWJyZXBvIGxpYmNvbXBzIHB5dGhvbjMtcHlncGdtZSBweXRob24zLWluaXBhcnNlIgotCi0jIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KLUVYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49MCAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtZW1haWwgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy1kaXN0dXRpbHMgbGlicmVwbyBweXRob24zLXNoZWxsIHB5dGhvbjMtc3VicHJvY2VzcyBsaWJjb21wcyBsaWJkbmYgcHl0aG9uMy1zcWxpdGUzIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1weWdwZ21lIHB5dGhvbjMtcnBtIHB5dGhvbjMtaW5pcGFyc2UgcHl0aG9uMy1qc29uIHB5dGhvbjMtaW1wb3J0bGliIHB5dGhvbjMtY3Vyc2VzIHB5dGhvbjMtYXJncGFyc2UgcHl0aG9uMy1taXNjIgotCi0jIENyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkICdkbmYnIGFzICdtYWtlIGluc3RhbGwnIGRvZXMgbm90IGRvIGl0LCBidXQKLSMgLnNwZWMgZmlsZSBpbiBkbmYgc291cmNlIHRyZWUgZG9lcyAoYW5kIHRoZW4gRmVkb3JhIGFuZCBkbmYgZG9jdW1lbnRhdGlvbgotIyBzYXlzIHRoYXQgZG5mIGJpbmFyeSBpcyBwbGFpbiAnZG5mJykuCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi0zICR7RH0vJHtiaW5kaXJ9L2RuZgotICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYy0zICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMKLX0KLQotIyBEaXJlY3QgZG5mLW5hdGl2ZSB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9kbmYgXAotICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCi0gICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbmYtbWFrZWNhY2hlLnNlcnZpY2UgZG5mLW1ha2VjYWNoZS50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWRwa2ctU3VwcG9ydC1tdXNseDMyLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZTY4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWRwa2ctU3VwcG9ydC1tdXNseDMyLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYTMyOGM4YmVjMGJmODA3MWFlOGYyMGZlZTRjNzQ3NTIwNTA2NGJhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorRGF0ZTogU3VuLCAxMCBTZXAgMjAxNyAwMDoxNDoxNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkcGtnOiBTdXBwb3J0IG11c2x4MzIgYnVpbGQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nLgorQ2hhbmdlcyBtYWRlIG9uIG9zdGFibGUgYW5kIHR1cGxldGFibGUgdG8gZW5hYmxlIG11c2x4MzIgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorLS0tCisgZGF0YS9vc3RhYmxlICAgIHwgMSArCisgZGF0YS90dXBsZXRhYmxlIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2RhdGEvb3N0YWJsZSBiL2RhdGEvb3N0YWJsZQoraW5kZXggYmU2NDM0Mi4uODdkYjI3MyAxMDA2NDQKKy0tLSBhL2RhdGEvb3N0YWJsZQorKysrIGIvZGF0YS9vc3RhYmxlCitAQCAtMTksNiArMTksNyBAQCBiYXNlLXVjbGliYy1saW51eAlsaW51eC11Y2xpYmMJCWxpbnV4W14tXSotdWNsaWJjCisgZWFiaWhmLW11c2wtbGludXgJbGludXgtbXVzbGVhYmloZglsaW51eFteLV0qLW11c2xlYWJpaGYKKyBlYWJpLW11c2wtbGludXgJCWxpbnV4LW11c2xlYWJpCQlsaW51eFteLV0qLW11c2xlYWJpCisgYmFzZS1tdXNsLWxpbnV4CQlsaW51eC1tdXNsCQlsaW51eFteLV0qLW11c2wKKyt4MzItbXVzbC1saW51eAkJbGludXgtbXVzbHgzMgkJbGludXhbXi1dKi1tdXNseDMyCisgZWFiaWhmLWdudS1saW51eAlsaW51eC1nbnVlYWJpaGYJCWxpbnV4W14tXSotZ251ZWFiaWhmCisgZWFiaS1nbnUtbGludXgJCWxpbnV4LWdudWVhYmkJCWxpbnV4W14tXSotZ251ZWFiaQorIGFiaW4zMi1nbnUtbGludXgJbGludXgtZ251YWJpbjMyCQlsaW51eFteLV0qLWdudWFiaW4zMgorZGlmZiAtLWdpdCBhL2RhdGEvdHVwbGV0YWJsZSBiL2RhdGEvdHVwbGV0YWJsZQoraW5kZXggMjhmMDBiZi4uNzQ4ZmZhYiAxMDA2NDQKKy0tLSBhL2RhdGEvdHVwbGV0YWJsZQorKysrIGIvZGF0YS90dXBsZXRhYmxlCitAQCAtMTAsNiArMTAsNyBAQCBiYXNlLXVjbGliYy1saW51eC08Y3B1PgkJdWNsaWJjLWxpbnV4LTxjcHU+CisgZWFiaWhmLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWhmCisgZWFiaS1tdXNsLWxpbnV4LWFybQkJbXVzbC1saW51eC1hcm1lbAorIGJhc2UtbXVzbC1saW51eC08Y3B1PgkJbXVzbC1saW51eC08Y3B1PgorK3gzMi1tdXNsLWxpbnV4LWFtZDY0CQl4MzIKKyBpbHAzMi1nbnUtbGludXgtYXJtNjQJCWFybTY0aWxwMzIKKyBlYWJpaGYtZ251LWxpbnV4LWFybQkJYXJtaGYKKyBlYWJpLWdudS1saW51eC1hcm0JCWFybWVsCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaAppbmRleCAyMzFhNmEyLi45ZmUwY2E3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAyLUFkYXB0LXRvLWxpbnV4LXdycy1rZXJuZWwtdmVyc2lvbi13aGljaC1oYXMtY2hhcmFjdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoCkBAIC0xMywxMyArMTMsMTMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGliL2Rwa2cvcGFyc2VoZWxwLmMgYi9saWIvZHBrZy9wYXJzZWhlbHAuYwotaW5kZXggNzliMjkwOC4uNzc1OGFhNSAxMDA2NDQKK2luZGV4IDQ1MzA3N2ZkOS4uZjQyZWEyODgyIDEwMDY0NAogLS0tIGEvbGliL2Rwa2cvcGFyc2VoZWxwLmMKICsrKyBiL2xpYi9kcGtnL3BhcnNlaGVscC5jCi1AQCAtMjM1LDE0ICsyMzUsMTIgQEAgcGFyc2V2ZXJzaW9uKHN0cnVjdCBkcGtnX3ZlcnNpb24gKnJ2ZXJzaW9uLCBjb25zdCBjaGFyICpzdHJpbmcsCi0gCi0gICAvKiBYWFg6IFdvdWxkIGJlIGZhc3RlciB0byB1c2Ugc29tZXRoaW5nIGxpa2UgY2lzdmVyc2lvbiBhbmQgY2lzcmV2aXNpb24uICovCitAQCAtMjQzLDE0ICsyNDMsMTIgQEAgcGFyc2V2ZXJzaW9uKHN0cnVjdCBkcGtnX3ZlcnNpb24gKnJ2ZXJzaW9uLCBjb25zdCBjaGFyICpzdHJpbmcsCiAgICBwdHIgPSBydmVyc2lvbi0+dmVyc2lvbjsKKyAgIGlmICghKnB0cikKKyAgICAgcmV0dXJuIGRwa2dfcHV0X2Vycm9yKGVyciwgXygidmVyc2lvbiBudW1iZXIgaXMgZW1wdHkiKSk7CiAtICBpZiAoKnB0ciAmJiAhY19pc2RpZ2l0KCpwdHIrKykpCiAtICAgIHJldHVybiBkcGtnX3B1dF93YXJuKGVyciwgXygidmVyc2lvbiBudW1iZXIgZG9lcyBub3Qgc3RhcnQgd2l0aCBkaWdpdCIpKTsKICAgIGZvciAoOyAqcHRyOyBwdHIrKykgewpAQCAtMzMsNiArMzMsNiBAQAogICAgICAgIHJldHVybiBkcGtnX3B1dF93YXJuKGVyciwgXygiaW52YWxpZCBjaGFyYWN0ZXIgaW4gcmV2aXNpb24gbnVtYmVyIikpOwogICAgfQogIAotLS0gCi0yLjEuNAogCistLSAKKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAppbmRleCBhNmIwMDg4Li5kOTI5NDY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaApAQCAtNiwzNyArNiwzNiBAQAogaGVscHMgY29tcGlsaW5nIGRwa2cgZm9yIG11c2wvYXJtLXNvZnRmbG9hdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gb3N0YWJsZSAgICAgIHwgMSArCi0gdHJpcGxldHRhYmxlIHwgMSArCisgZGF0YS9vc3RhYmxlICAgIHwgMSArCisgZGF0YS90dXBsZXRhYmxlIHwgMSArCiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL29zdGFibGUgYi9vc3RhYmxlCi1pbmRleCAzYmI2ODE5Li5kMGZmZGM3IDEwMDY0NAotLS0tIGEvb3N0YWJsZQotKysrIGIvb3N0YWJsZQotQEAgLTE1LDYgKzE1LDcgQEAKLSB1Y2xpYmNlYWJpLWxpbnV4CWxpbnV4LXVjbGliY2VhYmkJbGludXhbXi1dKi11Y2xpYmNlYWJpCi0gdWNsaWJjLWxpbnV4CQlsaW51eC11Y2xpYmMJCWxpbnV4W14tXSotdWNsaWJjCi0gbXVzbGVhYmloZi1saW51eAlsaW51eC1tdXNsZWFiaWhmCWxpbnV4W14tXSotbXVzbGVhYmloZgotK211c2xlYWJpLWxpbnV4CQlsaW51eC1tdXNsZWFiaQkJbGludXhbXi1dKi1tdXNsZWFiaQotIG11c2wtbGludXgJCWxpbnV4LW11c2wJCWxpbnV4W14tXSotbXVzbAotIGdudWVhYmloZi1saW51eAkJbGludXgtZ251ZWFiaWhmCQlsaW51eFteLV0qLWdudWVhYmloZgotIGdudWVhYmktbGludXgJCWxpbnV4LWdudWVhYmkJCWxpbnV4W14tXSotZ251ZWFiaQotZGlmZiAtLWdpdCBhL3RyaXBsZXR0YWJsZSBiL3RyaXBsZXR0YWJsZQotaW5kZXggMTIxMzU4NC4uNzBkMjRjMSAxMDA2NDQKLS0tLSBhL3RyaXBsZXR0YWJsZQotKysrIGIvdHJpcGxldHRhYmxlCi1AQCAtNiw2ICs2LDcgQEAKLSB1Y2xpYmNlYWJpLWxpbnV4LWFybQl1Y2xpYmMtbGludXgtYXJtZWwKLSB1Y2xpYmMtbGludXgtPGNwdT4JdWNsaWJjLWxpbnV4LTxjcHU+Ci0gbXVzbGVhYmloZi1saW51eC1hcm0JbXVzbC1saW51eC1hcm1oZgotK211c2xlYWJpLWxpbnV4LWFybQltdXNsLWxpbnV4LWFybWVsCi0gbXVzbC1saW51eC08Y3B1PgltdXNsLWxpbnV4LTxjcHU+Ci0gZ251ZWFiaWhmLWxpbnV4LWFybQlhcm1oZgotIGdudWVhYmktbGludXgtYXJtCWFybWVsCitkaWZmIC0tZ2l0IGEvZGF0YS9vc3RhYmxlIGIvZGF0YS9vc3RhYmxlCitpbmRleCA5OWMxZjg4OWQuLmJlNjQzNDI3MSAxMDA2NDQKKy0tLSBhL2RhdGEvb3N0YWJsZQorKysrIGIvZGF0YS9vc3RhYmxlCitAQCAtMTcsNiArMTcsNyBAQAorIGVhYmktdWNsaWJjLWxpbnV4CWxpbnV4LXVjbGliY2VhYmkJbGludXhbXi1dKi11Y2xpYmNlYWJpCisgYmFzZS11Y2xpYmMtbGludXgJbGludXgtdWNsaWJjCQlsaW51eFteLV0qLXVjbGliYworIGVhYmloZi1tdXNsLWxpbnV4CWxpbnV4LW11c2xlYWJpaGYJbGludXhbXi1dKi1tdXNsZWFiaWhmCisrZWFiaS1tdXNsLWxpbnV4CQlsaW51eC1tdXNsZWFiaQkJbGludXhbXi1dKi1tdXNsZWFiaQorIGJhc2UtbXVzbC1saW51eAkJbGludXgtbXVzbAkJbGludXhbXi1dKi1tdXNsCisgZWFiaWhmLWdudS1saW51eAlsaW51eC1nbnVlYWJpaGYJCWxpbnV4W14tXSotZ251ZWFiaWhmCisgZWFiaS1nbnUtbGludXgJCWxpbnV4LWdudWVhYmkJCWxpbnV4W14tXSotZ251ZWFiaQorZGlmZiAtLWdpdCBhL2RhdGEvdHVwbGV0YWJsZSBiL2RhdGEvdHVwbGV0YWJsZQoraW5kZXggNWY1MDBmNmNhLi4yOGYwMGJmZTYgMTAwNjQ0CistLS0gYS9kYXRhL3R1cGxldGFibGUKKysrKyBiL2RhdGEvdHVwbGV0YWJsZQorQEAgLTgsNiArOCw3IEBACisgZWFiaS11Y2xpYmMtbGludXgtYXJtCQl1Y2xpYmMtbGludXgtYXJtZWwKKyBiYXNlLXVjbGliYy1saW51eC08Y3B1PgkJdWNsaWJjLWxpbnV4LTxjcHU+CisgZWFiaWhmLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWhmCisrZWFiaS1tdXNsLWxpbnV4LWFybQkJbXVzbC1saW51eC1hcm1lbAorIGJhc2UtbXVzbC1saW51eC08Y3B1PgkJbXVzbC1saW51eC08Y3B1PgorIGlscDMyLWdudS1saW51eC1hcm02NAkJYXJtNjRpbHAzMgorIGVhYmloZi1nbnUtbGludXgtYXJtCQlhcm1oZgogLS0gCi0yLjYuNAorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDctZHBrZy1kZWItYnVpbGQuYy1SZW1vdmUtdXNhZ2Utb2YtY2xhbXAtbXRpbWUtaW4tdGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2gKaW5kZXggOGJmYWFkMS4uMWI5ODVkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2gKQEAgLTIzLDE4ICsyMywxNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZHBrZy1kZWIvYnVpbGQuYyBiL2Rwa2ctZGViL2J1aWxkLmMKLWluZGV4IDY1NWFhNTUuLjkyN2Y1NmYgMTAwNjQ0CitpbmRleCBhOTJiNThlLi5hM2QxOTEyIDEwMDY0NAogLS0tIGEvZHBrZy1kZWIvYnVpbGQuYwogKysrIGIvZHBrZy1kZWIvYnVpbGQuYwotQEAgLTQ0Nyw3ICs0NDcsNyBAQCB0YXJiYWxsX3BhY2soY29uc3QgY2hhciAqZGlyLCBmaWxlbmFtZXNfZmVlZF9mdW5jICp0YXJfZmlsZW5hbWVzX2ZlZWRlciwKLSAgICAgc25wcmludGYobXRpbWUsIHNpemVvZihtdGltZSksICJAJWxkIiwgdGltZXN0YW1wKTsKK0BAIC00NTAsNyArNDUwLDcgQEAgdGFyYmFsbF9wYWNrKGNvbnN0IGNoYXIgKmRpciwgZmlsZW5hbWVzX2ZlZWRfZnVuYyAqdGFyX2ZpbGVuYW1lc19mZWVkZXIsCiAgCi0gICAgIGV4ZWNscChUQVIsICJ0YXIiLCAiLWNmIiwgIi0iLCAiLS1mb3JtYXQ9Z251IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICItLW10aW1lIiwgbXRpbWUsICItLWNsYW1wLW10aW1lIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICItLW10aW1lIiwgbXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1udWxsIiwgIi0tbm8tdW5xdW90ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1yZWN1cnNpb24iLCAiLVQiLCAiLSIsIE5VTEwpOwotICAgICBvaHNoaXRlKF8oInVuYWJsZSB0byBleGVjdXRlICVzICglcykiKSwgInRhciAtY2YiLCBUQVIpOworICAgICBjb21tYW5kX2luaXQoJmNtZCwgVEFSLCAidGFyIC1jZiIpOworICAgICBjb21tYW5kX2FkZF9hcmdzKCZjbWQsICJ0YXIiLCAiLWNmIiwgIi0iLCAiLS1mb3JtYXQ9Z251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1tdGltZSIsIG10aW1lLCAiLS1jbGFtcC1tdGltZSIsIE5VTEwpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW10aW1lIiwgbXRpbWUsIE5VTEwpOworICAgICAvKiBNb2RlIG1pZ2h0IGJlY29tZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIHBhc3MgaXQgYmVmb3JlIC1ULiAqLworICAgICBpZiAobW9kZSkKKyAgICAgICBjb21tYW5kX2FkZF9hcmdzKCZjbWQsICItLW1vZGUiLCBtb2RlLCBOVUxMKTsKIC0tIAotMi4xLjQKLQorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoCmluZGV4IGRjNjllYjIuLmQxNjU2MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoCkBAIC0yNCwyMyArMjQsMjUgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLcmlzaG5hbmphbmFwcGEsIEphZ2FkZWVzaCA8amFnYWRlZXNoLmtyaXNobmFuamFuYXBwYUBjYXZpdW1uZXR3b3Jrcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIAogLS0tCi0gdHJpcGxldHRhYmxlIHwgMSArCisgZGF0YS90dXBsZXRhYmxlIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLWRpZmYgLS1naXQgYS90cmlwbGV0dGFibGUgYi90cmlwbGV0dGFibGUKLWluZGV4IGFiZTQ3MjYuLjFlOWMyNDcgMTAwNjQ0Ci0tLS0gYS90cmlwbGV0dGFibGUKLSsrKyBiL3RyaXBsZXR0YWJsZQotQEAgLTExLDYgKzExLDcgQEAgZ251ZWFiaWhmLWxpbnV4LWFybQlhcm1oZgotIGdudWVhYmktbGludXgtYXJtCWFybWVsCi0gZ251YWJpbjMyLWxpbnV4LW1pcHM2NHI2ZWwJbWlwc24zMnI2ZWwKLSBnbnVhYmluMzItbGludXgtbWlwczY0cjYJbWlwc24zMnI2Ci0rZ251ZWFiaS1saW51eC1hcm1lYglhcm1lYgotIGdudWFiaW4zMi1saW51eC1taXBzNjRlbAltaXBzbjMyZWwKLSBnbnVhYmluMzItbGludXgtbWlwczY0CW1pcHNuMzIKLSBnbnVhYmk2NC1saW51eC1taXBzNjRyNmVsCW1pcHM2NHI2ZWwKK2RpZmYgLS1naXQgYS9kYXRhL3R1cGxldGFibGUgYi9kYXRhL3R1cGxldGFibGUKK2luZGV4IGI3ODAyYmVjMy4uNWY1MDBmNmNhIDEwMDY0NAorLS0tIGEvZGF0YS90dXBsZXRhYmxlCisrKysgYi9kYXRhL3R1cGxldGFibGUKK0BAIC0xMiw2ICsxMiw3IEBAIGJhc2UtbXVzbC1saW51eC08Y3B1PgkJbXVzbC1saW51eC08Y3B1PgorIGlscDMyLWdudS1saW51eC1hcm02NAkJYXJtNjRpbHAzMgorIGVhYmloZi1nbnUtbGludXgtYXJtCQlhcm1oZgorIGVhYmktZ251LWxpbnV4LWFybQkJYXJtZWwKKytlYWJpLWdudS1saW51eC1hcm1lYgkJYXJtZWIKKyBhYmluMzItZ251LWxpbnV4LW1pcHM2NHI2ZWwJbWlwc24zMnI2ZWwKKyBhYmluMzItZ251LWxpbnV4LW1pcHM2NHI2CW1pcHNuMzJyNgorIGFiaW4zMi1nbnUtbGludXgtbWlwczY0ZWwJbWlwc24zMmVsCiAtLSAKLTIuMS40CisyLjExLjAKKwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hcmNoX3BtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYXJjaF9wbS5wYXRjaAppbmRleCBjYWQ0YzBmLi40ZTBkMjJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hcmNoX3BtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FyY2hfcG0ucGF0Y2gKQEAgLTcsMTYgKzcsMjMgQEAKIAogU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgogCistLS0KKyBzY3JpcHRzL0Rwa2cvQXJjaC5wbSB8IDMgLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCiAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL0Rwa2cvQXJjaC5wbSBiL3NjcmlwdHMvRHBrZy9BcmNoLnBtCitpbmRleCAxNzIwODQ3YjguLjYzNDVjZTNiOSAxMDA2NDQKIC0tLSBhL3NjcmlwdHMvRHBrZy9BcmNoLnBtCiArKysgYi9zY3JpcHRzL0Rwa2cvQXJjaC5wbQotQEAgLTIzMyw5ICsyMzMsNiBAQCBzdWIgcmVhZF90cmlwbGV0dGFibGUoKQotIAkJICAgIChteSAkZHQgPSAkZGVidHJpcGxldCkgPX4gcy88Y3B1Pi8kX2NwdS87CitAQCAtMzIzLDkgKzMyMyw2IEBAIHN1YiBfbG9hZF90dXBsZXRhYmxlKCkKKyAJCSAgICAobXkgJGR0ID0gJGRlYnR1cGxlKSA9fiBzLzxjcHU+LyRfY3B1LzsKICAJCSAgICAobXkgJGRhID0gJGRlYmFyY2gpID1+IHMvPGNwdT4vJF9jcHUvOwogIAotLQkJICAgIG5leHQgaWYgZXhpc3RzICRkZWJhcmNoX3RvX2RlYnRyaXBsZXR7JGRhfQotLQkJICAgICAgICAgb3IgZXhpc3RzICRkZWJ0cmlwbGV0X3RvX2RlYmFyY2h7JGR0fTsKKy0JCSAgICBuZXh0IGlmIGV4aXN0cyAkZGViYXJjaF90b19kZWJ0dXBsZXskZGF9CistCQkgICAgICAgICBvciBleGlzdHMgJGRlYnR1cGxlX3RvX2RlYmFyY2h7JGR0fTsKIC0KLSAJCSAgICAkZGViYXJjaF90b19kZWJ0cmlwbGV0eyRkYX0gPSAkZHQ7Ci0gCQkgICAgJGRlYnRyaXBsZXRfdG9fZGViYXJjaHskZHR9ID0gJGRhOworIAkJICAgICRkZWJhcmNoX3RvX2RlYnR1cGxleyRkYX0gPSAkZHQ7CisgCQkgICAgJGRlYnR1cGxlX3RvX2RlYmFyY2h7JGR0fSA9ICRkYTsKICAJCX0KKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZHBrZy1jb25maWd1cmUuc2VydmljZQppbmRleCBmMGIwNzg5Li45YTI0OGNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UKQEAgLTgsNyArOCw3IEBACiBUeXBlPW9uZXNob3QKIEVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL2RlZmF1bHQvcG9zdGluc3QKIEV4ZWNTdGFydD0tQEJBU0VfQklORElSQC9zaCAtYyAiIGlmIFsgJFBPU1RJTlNUX0xPR0dJTkcgPSAnMScgXTsgdGhlbiBAQklORElSQC9kcGtnIC0tY29uZmlndXJlIC1hID4gJExPR0ZJTEUgMj4mMTsgZWxzZSBAQklORElSQC9kcGtnIC0tY29uZmlndXJlIC1hOyBmaSIKLUV4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgZGlzYWJsZSBkcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCitFeGVjU3RhcnRQb3N0PUBCQVNFX0JJTkRJUkAvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgZHBrZy1jb25maWd1cmUuc2VydmljZQogU3RhbmRhcmRPdXRwdXQ9c3lzbG9nCiBSZW1haW5BZnRlckV4aXQ9Tm8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvbm9tYW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9ub21hbi5wYXRjaAppbmRleCBkMzBjMTUwLi5hN2YzY2I4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9ub21hbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9ub21hbi5wYXRjaApAQCAtMSwxNCArMSwyMiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXNhYmxlIGZlYXR1cmVdCiAKLWRpZmYgLXJ1TiBkcGtnLTEuMTUuOC41LW9yaWcvTWFrZWZpbGUuYW0gZHBrZy0xLjE1LjguNS9NYWtlZmlsZS5hbQotLS0tIGRwa2ctMS4xNS44LjUtb3JpZy9NYWtlZmlsZS5hbQkyMDEwLTEwLTA4IDEyOjI3OjE1LjA0MjA4MzcwMyArMDgwMAotKysrIGRwa2ctMS4xNS44LjUvTWFrZWZpbGUuYW0JMjAxMC0xMC0wOCAxMjoyNzoyNy43NTUxNDgyMjggKzA4MDAKLUBAIC0xMiw4ICsxMiw3IEBACi0gCXV0aWxzIFwKKy0tLQorIE1ha2VmaWxlLmFtIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAwZGE1MmNiMTYuLmExZjc5ZTBhMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEzLDggKzEzLDcgQEAgU1VCRElSUyA9IFwKICAJJChNQVlCRV9EU0VMRUNUKSBcCiAgCXNjcmlwdHMgXAorIAl0LWZ1bmMgXAogLQlwbyBcCiAtCW1hbgogKwlwbwogIAogIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00CisgCistLSAKKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMzg1YWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgZHBrZy5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzMxVDIyMTkzMVovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbm9tYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXRhci1uby10aW1lc3RhbXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJjaF9wbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLU91ci1wcmUtcG9zdGluc3RzLWV4cGVjdC1ELXRvLWJlLXNldC13aGVuLXJ1bm5pbmctaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1UaGUtbHV0aW1lcy1mdW5jdGlvbi1kb2Vzbi10LXdvcmstcHJvcGVybHktZm9yLWFsbC1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZHBrZy1jb21waWxlci5tNC1yZW1vdmUtV3ZsYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2dsaWJjMi41LXN5bmNfZmlsZV9yYW5nZS5wYXRjaCAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjY2ZmMTc3MzBjMDk2NDQyOGZjMTg2ZGVkMmYyZjQwMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjU1MjRkYTQxYmExOGIxODNmZjExZTM4OGViODY4NmY3Y2M1OGVlODM1ZWQ3ZDQ4YmQxNTljNDZhOGI2ZGM1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjNTlmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBkcGtnLmluYworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNzA1MThUMDkzODM4Wi9wb29sL21haW4vZC9kcGtnL2Rwa2dfMS4xOC4yNC50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbm9tYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXRhci1uby10aW1lc3RhbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXJjaF9wbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLU91ci1wcmUtcG9zdGluc3RzLWV4cGVjdC1ELXRvLWJlLXNldC13aGVuLXJ1bm5pbmctaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1UaGUtbHV0aW1lcy1mdW5jdGlvbi1kb2Vzbi10LXdvcmstcHJvcGVybHktZm9yLWFsbC1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZHBrZy1jb21waWxlci5tNC1yZW1vdmUtV3ZsYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRwa2ctU3VwcG9ydC1tdXNseDMyLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyZThhZjhmYWYxZTY4OTIyOGRhODA2YzNlOGM2ODgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4NTMwODFkM2UwNmJmZDQ2YTIyNzA1NmU1OTFmMDk0ZTQyZTc4ZmE4YTU3OTNiMDA5M2JhZDMwYjcxMGQ3YjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtZTJmc2NrLWV4aXQtd2l0aC1leGl0LXN0YXR1cy0wLWlmLW5vLWVycm9ycy13ZXJlLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQxNzUyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLUZyb20gYmY5ZjNiNmQ1YjEwZDE5MjE4YjRlZDkwNGMxMmIyMmUzNmVjNTdkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1EYXRlOiBUaHUsIDE2IEZlYiAyMDE3IDIyOjAyOjM1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGUyZnNjazogZXhpdCB3aXRoIGV4aXQgc3RhdHVzIDAgaWYgbm8gZXJyb3JzIHdlcmUgZml4ZWQKLQotUHJldmlvdXNseSwgZTJmc2NrIHdvdWxkIGV4aXQgd2l0aCBhIHN0YXR1cyBjb2RlIG9mIDEgZXZlbiB0aG91Z2ggdGhlCi1vbmx5IGNoYW5nZXMgdGhhdCBpdCBtYWRlIHRvIHRoZSBmaWxlIHN5c3RlbSB3ZXJlIHZhcmlvdXMKLW9wdGltemlhdGlvbnMgYW5kIG5vdCBmaXhpbmcgZmlsZSBzeXN0ZW0gY29ycnVwdGlvbi4gIFNpbmNlIHRoZSBtYW4KLXBhZ2Ugc3RhdGVzIHRoYXQgYW4gZXhpdCBzdGF0dXMgb2YgMSBtZWFucyAiZmlsZSBzeXN0ZW0gZXJyb3JzCi1jb3JydXB0ZWQiLCBmaXggZTJmc2NrIHRvIHJldHVybiBhbiBleGl0IHN0YXR1cyBvZiAwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU2NodWx0eiA8ZC5zY2h1bHR6QHBoeXRlYy5kZT4KLS0tLQotIGUyZnNjay9lMmZzY2suY29uZi41LmluICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysrKysrCi0gZTJmc2NrL2pvdXJuYWwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBlMmZzY2svcHJvYmxlbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKystLS0KLSBlMmZzY2svcHJvYmxlbVAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGUyZnNjay91bml4LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrLS0tLQotIHRlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEgICAgICAgfCAgMiArLQotIHRlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEgfCAgMiArLQotIHRlc3RzL2ZfY29udmVydF9ibWFwL2V4cGVjdC4xICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvZXhwZWN0LjEgICAgfCAgMiArLQotIHRlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4xICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Zfam91cm5hbC9leHBlY3QuMSAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEgICAgICAgfCAgMiArLQotIHRlc3RzL2ZfcmVoYXNoX2Rpci9leHBlY3QuMSAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xICAgICAgICAgICAgICAgfCAgMiArLQotIDE2IGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZTJmc2NrL2UyZnNjay5jb25mLjUuaW4gYi9lMmZzY2svZTJmc2NrLmNvbmYuNS5pbgotaW5kZXggMTg0OGJkYi4uMGJmYzc2YSAxMDA2NDQKLS0tLSBhL2UyZnNjay9lMmZzY2suY29uZi41LmluCi0rKysgYi9lMmZzY2svZTJmc2NrLmNvbmYuNS5pbgotQEAgLTMwMyw2ICszMDMsMTMgQEAgb2YgJ3Nob3VsZCB0aGlzIHByb2JsZW0gYmUgZml4ZWQ/Jy4gIFRoZQotIG9wdGlvbiBldmVuIG92ZXJyaWRlcyB0aGUKLSAuQiAteQotIG9wdGlvbiBnaXZlbiBvbiB0aGUgY29tbWFuZC1saW5lIChqdXN0IGZvciB0aGUgc3BlY2lmaWMgcHJvYmxlbSwgb2YgY291cnNlKS4KLSsuVFAKLSsuSSBub3RfYV9maXgKLStUaGlzIGJvb2xlYW4gb3B0aW9uLCBpdCBzZXQgdG8gdHJ1ZSwgbWFya3MgdGhlIHByb2JsZW0gYXMKLStvbmUgd2hlcmUgaWYgdGhlIHVzZXIgZ2l2ZXMgcGVybWlzc2lvbiB0byBtYWtlIHRoZSByZXF1ZXN0ZWQgY2hhbmdlLAotK2l0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgZmlsZSBzeXN0ZW0gaGFkIGEgcHJvYmxlbSB3aGljaCBoYXMgc2luY2UKLStiZWVuIGZpeGVkLiAgVGhpcyBpcyB1c2VkIGZvciByZXF1ZXN0cyB0byBvcHRpbWl6ZSB0aGUgZmlsZSBzeXN0ZW0ncwotK2RhdGEgc3RydWN0dXJlLCBzdWNoIGFzIHBydW5pbmcgYW4gZXh0ZW50IHRyZWUuCi0gQFREQl9NQU5fQ09NTUVOVEAuU0ggVEhFIFtzY3JhdGNoX2ZpbGVzXSBTVEFOWkEKLSBAVERCX01BTl9DT01NRU5UQFRoZSBmb2xsb3dpbmcgcmVsYXRpb25zIGFyZSBkZWZpbmVkIGluIHRoZQotIEBUREJfTUFOX0NPTU1FTlRALkkgW3NjcmF0Y2hfZmlsZXNdCi1kaWZmIC0tZ2l0IGEvZTJmc2NrL2pvdXJuYWwuYyBiL2UyZnNjay9qb3VybmFsLmMKLWluZGV4IDQ2ZmU3YjQuLmM0ZjU4ZjEgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svam91cm5hbC5jCi0rKysgYi9lMmZzY2svam91cm5hbC5jCi1AQCAtNTcyLDYgKzU3Miw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3YyX2pvdXJuYWxfZmllbGRzKGpvdXJuYWxfdCAqam91cm5hbCkKLSAJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzBfQ0xFQVJfVjJfSk9VUk5BTCwgJnBjdHgpKQotIAkJcmV0dXJuOwotIAotKwljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1BST0JMRU1TX0ZJWEVEOwotIAltZW1zZXQoKChjaGFyICopIGpvdXJuYWwtPmpfc3VwZXJibG9jaykgKyBWMV9TQl9TSVpFLCAwLAotIAkgICAgICAgY3R4LT5mcy0+YmxvY2tzaXplLVYxX1NCX1NJWkUpOwotIAltYXJrX2J1ZmZlcl9kaXJ0eShqb3VybmFsLT5qX3NiX2J1ZmZlcik7Ci1kaWZmIC0tZ2l0IGEvZTJmc2NrL3Byb2JsZW0uYyBiL2UyZnNjay9wcm9ibGVtLmMKLWluZGV4IDM0YTY3MWUuLjRiMjUwNjkgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svcHJvYmxlbS5jCi0rKysgYi9lMmZzY2svcHJvYmxlbS5jCi1AQCAtMTI3NiwxMiArMTI3NiwxMiBAQCBzdGF0aWMgc3RydWN0IGUyZnNja19wcm9ibGVtIHByb2JsZW1fdGFibGVbXSA9IHsKLSAJLyogSW5vZGUgZXh0ZW50IHRyZWUgY291bGQgYmUgc2hvcnRlciAqLwotIAl7IFBSXzFFX0NBTl9DT0xMQVBTRV9FWFRFTlRfVFJFRSwKLSAJICBOXygiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAiKSwKLS0JICBQUk9NUFRfRklYLCBQUl9OT19PSyB8IFBSX1BSRUVOX05PIHwgUFJfUFJFRU5fT0sgfSwKLSsJICBQUk9NUFRfRklYLCBQUl9OT19PSyB8IFBSX1BSRUVOX05PIHwgUFJfUFJFRU5fT0sgfCBQUl9OT1RfQV9GSVggfSwKLSAKLSAJLyogSW5vZGUgZXh0ZW50IHRyZWUgY291bGQgYmUgbmFycm93ZXIgKi8KLSAJeyBQUl8xRV9DQU5fTkFSUk9XX0VYVEVOVF9UUkVFLAotIAkgIE5fKCJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiKSwKLS0JICBQUk9NUFRfRklYLCBQUl9OT19PSyB8IFBSX1BSRUVOX05PIHwgUFJfUFJFRU5fT0sgfSwKLSsJICBQUk9NUFRfRklYLCBQUl9OT19PSyB8IFBSX1BSRUVOX05PIHwgUFJfUFJFRU5fT0sgfCBQUl9OT1RfQV9GSVggfSwKLSAKLSAJLyogUGFzcyAyIGVycm9ycyAqLwotIAotQEAgLTIxNjYsNiArMjE2Niw3IEBAIGludCBmaXhfcHJvYmxlbShlMmZzY2tfdCBjdHgsIHByb2JsZW1fdCBjb2RlLCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQotIAkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9OT19OT01TRywgIm5vX25vbXNnIik7Ci0gCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX1BSRUVOX05PSERSLCAicHJlZW5fbm9oZWFkZXIiKTsKLSAJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfRk9SQ0VfTk8sICJmb3JjZV9ubyIpOwotKwkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9OT1RfQV9GSVgsICJub3RfYV9maXgiKTsKLSAJCXByb2ZpbGVfZ2V0X2ludGVnZXIoY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsCi0gCQkJCSAgICAibWF4X2NvdW50X3Byb2JsZW1zIiwgMCwgMCwKLSAJCQkJICAgICZwdHItPm1heF9jb3VudCk7Ci1AQCAtMjI4Myw3ICsyMjg0LDggQEAgaW50IGZpeF9wcm9ibGVtKGUyZnNja190IGN0eCwgcHJvYmxlbV90IGNvZGUsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCi0gCWlmIChwdHItPmZsYWdzICYgUFJfQUZURVJfQ09ERSkKLSAJCWFuc3dlciA9IGZpeF9wcm9ibGVtKGN0eCwgcHRyLT5zZWNvbmRfY29kZSwgcGN0eCk7Ci0gCi0tCWlmIChhbnN3ZXIgJiYgKHB0ci0+cHJvbXB0ICE9IFBST01QVF9OT05FKSkKLSsJaWYgKGFuc3dlciAmJiAocHRyLT5wcm9tcHQgIT0gUFJPTVBUX05PTkUpICYmCi0rCSAgICAhKHB0ci0+ZmxhZ3MgJiBQUl9OT1RfQV9GSVgpKQotIAkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19QUk9CTEVNU19GSVhFRDsKLSAKLSAJcmV0dXJuIGFuc3dlcjsKLWRpZmYgLS1naXQgYS9lMmZzY2svcHJvYmxlbVAuaCBiL2UyZnNjay9wcm9ibGVtUC5oCi1pbmRleCA3OTQ0Y2Q2Li42M2JiOGRmIDEwMDY0NAotLS0tIGEvZTJmc2NrL3Byb2JsZW1QLmgKLSsrKyBiL2UyZnNjay9wcm9ibGVtUC5oCi1AQCAtNDQsMyArNDQsNCBAQCBzdHJ1Y3QgbGF0Y2hfZGVzY3IgewotICNkZWZpbmUgUFJfQ09ORklHCTB4MDgwMDAwIC8qIFRoaXMgcHJvYmxlbSBoYXMgYmVlbiBjdXN0b21pemVkCi0gCQkJCSAgICBmcm9tIHRoZSBjb25maWcgZmlsZSAqLwotICNkZWZpbmUgUFJfRk9SQ0VfTk8JMHgxMDAwMDAgLyogRm9yY2UgdGhlIGFuc3dlciB0byBiZSBubyAqLwotKyNkZWZpbmUgUFJfTk9UX0FfRklYCTB4MjAwMDAwIC8qIFllcyBkb2Vzbid0IG1lYW4gYSBwcm9ibGVtIHdhcyBmaXhlZCAqLwotZGlmZiAtLWdpdCBhL2UyZnNjay91bml4LmMgYi9lMmZzY2svdW5peC5jCi1pbmRleCBlYjlmMzExLi45ZTRkMzFhIDEwMDY0NAotLS0tIGEvZTJmc2NrL3VuaXguYwotKysrIGIvZTJmc2NrL3VuaXguYwotQEAgLTE5MDEsMTEgKzE5MDEsMjMgQEAgbm9fam91cm5hbDoKLSAJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNl9JT19GTFVTSCwgJnBjdHgpOwotIAotIAlpZiAod2FzX2NoYW5nZWQpIHsKLS0JCWV4aXRfdmFsdWUgfD0gRlNDS19OT05ERVNUUlVDVDsKLS0JCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pKQotLQkJCWxvZ19vdXQoY3R4LCBfKCJcbiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgIgotLQkJCQkgICAgICAgIk1PRElGSUVEICoqKioqXG4iKSwKLSsJCWludCBmc19maXhlZCA9IChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUFJPQkxFTVNfRklYRUQpOwotKwotKwkJaWYgKGZzX2ZpeGVkKQotKwkJCWV4aXRfdmFsdWUgfD0gRlNDS19OT05ERVNUUlVDVDsKLSsJCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pKSB7Ci0rI2lmIDAJLyogRG8gdGhpcyBsYXRlcjsgaXQgYnJlYWtzIHRvbyBtYW55IHRlc3RzJyBnb2xkZW4gb3V0cHV0cyAqLwotKwkJCWxvZ19vdXQoY3R4LCBmc19maXhlZCA/Ci0rCQkJCV8oIlxuJXM6ICoqKioqIEZJTEUgU1lTVEVNIEVSUk9SUyAiCi0rCQkJCSAgIkNPUlJFQ1RFRCAqKioqKlxuIikgOgotKwkJCQlfKCIlczogRmlsZSBzeXN0ZW0gd2FzIG1vZGlmaWVkLlxuIiksCi0gCQkJCWN0eC0+ZGV2aWNlX25hbWUpOwotKyNlbHNlCi0rCQkJbG9nX291dChjdHgsCi0rCQkJCV8oIlxuJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKlxuIiksCi0rCQkJCWN0eC0+ZGV2aWNlX25hbWUpOwotKyNlbmRpZgotKwkJfQotIAkJaWYgKGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX0lTUk9PVCkgewotIAkJCWxvZ19vdXQoY3R4LCBfKCIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIiksCi0gCQkJCWN0eC0+ZGV2aWNlX25hbWUpOwotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEgYi90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4xCi1pbmRleCBlMmViNjVlLi44MTY1YTU4IDEwMDY0NAotLS0tIGEvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMQotQEAgLTEzLDQgKzEzLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE5LzUxMiBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEgYi90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4xCi1pbmRleCBhMzU5Yzk5Li5kZDMzZjYzIDEwMDY0NAotLS0tIGEvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMQotQEAgLTIwLDQgKzIwLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDI2LzUxMiBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZfY29udmVydF9ibWFwL2V4cGVjdC4xIGIvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEKLWluZGV4IDdkMmNhODYuLmMzODc5NjIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEKLUBAIC0yMyw0ICsyMyw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCA1NzAvMjA0OCBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvZXhwZWN0LjEgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCi1pbmRleCA3YWY5MWFhLi5jODZjNTcxIDEwMDY0NAotLS0tIGEvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMQotQEAgLTMwLDQgKzMwLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEzLzEyOCBmaWxlcyAoMTUuNCUgbm9uLWNvbnRpZ3VvdXMpLCA1NzQvMjA0OCBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4xIGIvdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEKLWluZGV4IDIyM2NhNjkuLmVhNDg0MDUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEKLUBAIC0yNiw0ICsyNiw0IEBAIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gICAgICAgICAgICAwIHNvY2tldHMKLSAtLS0tLS0tLS0tLS0KLSAgICAgICAgICAzNDMgZmlsZXMKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xIGIvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEKLWluZGV4IGM1NzI5NTEuLjQxMzQyMzQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEKLUBAIC02LDQgKzYsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTEvMjA0OCBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDEzMzAvODE5MiBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Zfam91cm5hbC9leHBlY3QuMSBiL3Rlc3RzL2Zfam91cm5hbC9leHBlY3QuMQotaW5kZXggYTIwMmM4MC4uMGExODY1NCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfam91cm5hbC9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCi1AQCAtNTksNCArNTksNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogNTMvMjA0OCBmaWxlcyAoMS45JSBub24tY29udGlndW91cyksIDE0MDkvODE5MiBibG9ja3MKLS1FeGl0IHN0YXR1cyBpcyAxCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xIGIvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEKLWluZGV4IGVkZGMxZjguLjA4N2ViZWUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX29ycGhhbi9leHBlY3QuMQotKysrIGIvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEKLUBAIC0xMSw0ICsxMSw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMi8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMwMy84MTkyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9leHBlY3QuMSBiL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKLWluZGV4IDJlYWFiNzguLjVkNzEzYjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xCi1AQCAtNyw0ICs3LDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEvMTAwIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xIGIvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xCi1pbmRleCA2MDc2NzY1Li5jMTQ0OWJhIDEwMDY0NAotLS0tIGEvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEKLUBAIC03LDQgKzcsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTA1LzIwNDggZmlsZXMgKDIuOSUgbm9uLWNvbnRpZ3VvdXMpLCAzMzYvNTEyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl91bnNvcnRlZF9FQXMvZXhwZWN0LjEgYi90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMQotaW5kZXggN2Q1ODhkNy4uNjRiOTA0NSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMQotQEAgLTgsNCArOCw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMi8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTI5NC8yMDQ4IGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM0YTU0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gZjZkMTg4NTgwYzJjOTU5OTMxOTA3NmZlZTIyZjI0MjQ2NTJjNzExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAxOTo1NTozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtaXNjL2NyZWF0ZV9pbm9kZS5jOiBzZXQgZGlyJ3MgbW9kZSBjb3JyZWN0bHkKKworVGhlIGRpcidzIG1vZGUgaGFzIGJlZW4gc2V0IGJ5IGV4dDJmc19ta2RpcigpIHdpdGggdW1hc2ssIHNvCityZXNldCBpdCB0byB0aGUgc291cmNlJ3MgbW9kZSBpbiBzZXRfaW5vZGVfZXh0cmEoKS4KKworRml4ZWQgd2hlbiBzb3VyY2UgZGlyJ3MgbW9kZSBpcyA1MjEsIGJ1dCB0YXJiYWxsIHdvdWxkIGJlIDcyMSwgdGhpcyB3YXMKK2luY29ycmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBtaXNjL2NyZWF0ZV9pbm9kZS5jIHwgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9taXNjL2NyZWF0ZV9pbm9kZS5jIGIvbWlzYy9jcmVhdGVfaW5vZGUuYworaW5kZXggOGNlM2ZhZi4uNTBmYmFhOCAxMDA2NDQKKy0tLSBhL21pc2MvY3JlYXRlX2lub2RlLmMKKysrKyBiL21pc2MvY3JlYXRlX2lub2RlLmMKK0BAIC0xMTYsNyArMTE2LDE0IEBAIHN0YXRpYyBlcnJjb2RlX3Qgc2V0X2lub2RlX2V4dHJhKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKyAKKyAJaW5vZGUuaV91aWQgPSBzdC0+c3RfdWlkOworIAlpbm9kZS5pX2dpZCA9IHN0LT5zdF9naWQ7CistCWlub2RlLmlfbW9kZSB8PSBzdC0+c3RfbW9kZTsKKysJLyoKKysJICogVGhlIGRpcidzIG1vZGUgaGFzIGJlZW4gc2V0IGJ5IGV4dDJmc19ta2RpcigpIHdpdGggdW1hc2ssIHNvCisrCSAqIHJlc2V0IGl0IHRvIHRoZSBzb3VyY2UncyBtb2RlCisrCSAqLworKwlpZiBTX0lTRElSKHN0LT5zdF9tb2RlKQorKwkJaW5vZGUuaV9tb2RlID0gTElOVVhfU19JRkRJUiB8IHN0LT5zdF9tb2RlOworKwllbHNlCisrCQlpbm9kZS5pX21vZGUgfD0gc3QtPnN0X21vZGU7CisgCWlub2RlLmlfYXRpbWUgPSBzdC0+c3RfYXRpbWU7CisgCWlub2RlLmlfbXRpbWUgPSBzdC0+c3RfbXRpbWU7CisgCWlub2RlLmlfY3RpbWUgPSBzdC0+c3RfY3RpbWU7CistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLTEuNDMtc3lzbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy0xLjQzLXN5c21hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJiZjJiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLTEuNDMtc3lzbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLUZyb20gMzBlZjQxZjY4NzAzYjZhMTYwMjdjYzg3ODcxMThiODdmMTQ2MmRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6IE1vbiwgMjggTWFyIDIwMTYgMjA6MzE6MzMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCBlMmZzcHJvZ3NdIGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oIGFzIG5lZWRlZAotCi1UaGUgbWlub3IvbWFqb3IvbWFrZWRldiBtYWNyb3MgYXJlIG5vdCBlbnRpcmVseSBzdGFuZGFyZC4gIGdsaWJjIGhhcyBoYWQKLXRoZSBkZWZpbml0aW9ucyBpbiBzeXMvc3lzbWFjcm9zLmggc2luY2UgdGhlIHN0YXJ0LCBhbmQgd2FudHMgdG8gbW92ZSBhd2F5Ci1mcm9tIGFsd2F5cyBkZWZpbmluZyB0aGVtIGltcGxpY2l0bHkgdmlhIHN5cy90eXBlcy5oIChhcyB0aGlzIHBvbGx1dGVzIHRoZQotbmFtZXNwYWNlIGluIHZpb2xhdGlvbiBvZiBQT1NJWCkuICBPdGhlciBDIGxpYnJhcmllcyBoYXZlIGFscmVhZHkgZHJvcHBlZAotdGhlbS4gIFNpbmNlIHRoZSBjb25maWd1cmUgc2NyaXB0IGFscmVhZHkgY2hlY2tzIGZvciB0aGlzIGhlYWRlciwgdXNlIHRoYXQKLXRvIHB1bGwgaW4gdGhlIGhlYWRlciBpbiBmaWxlcyB0aGF0IHVzZSB0aGVzZSBtYWNyb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotVGFrZW4gZnJvbSBnZW50b28gcG9ydGFnZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLQotIGRlYnVnZnMvZGVidWdmcy5jICAgICAgfCAzICsrKwotIGxpYi9ibGtpZC9kZXZuYW1lLmMgICAgfCAzICsrKwotIGxpYi9ibGtpZC9kZXZuby5jICAgICAgfCAzICsrKwotIGxpYi9leHQyZnMvZmluZGRldi5jICAgfCAzICsrKwotIGxpYi9leHQyZnMvaXNtb3VudGVkLmMgfCAzICsrKwotIG1pc2MvY3JlYXRlX2lub2RlLmMgICAgfCA0ICsrKysKLSBtaXNjL21rX2h1Z2VmaWxlcy5jICAgIHwgMyArKysKLSA3IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2RlYnVnZnMvZGVidWdmcy5jIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLWluZGV4IGJhOGJlNDAuLjdkNDgxYmMgMTAwNjQ0Ci0tLS0gYS9kZWJ1Z2ZzL2RlYnVnZnMuYwotKysrIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLUBAIC0yNiw2ICsyNiw5IEBAIGV4dGVybiBjaGFyICpvcHRhcmc7Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiZGVidWdmcy5oIgotICNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKLWRpZmYgLS1naXQgYS9saWIvYmxraWQvZGV2bmFtZS5jIGIvbGliL2Jsa2lkL2Rldm5hbWUuYwotaW5kZXggM2UyZWZhOS4uNjcxZTc4MSAxMDA2NDQKLS0tLSBhL2xpYi9ibGtpZC9kZXZuYW1lLmMKLSsrKyBiL2xpYi9ibGtpZC9kZXZuYW1lLmMKLUBAIC0zNiw2ICszNiw5IEBACi0gI2lmIEhBVkVfU1lTX01LREVWX0gKLSAjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8dGltZS5oPgotIAotICNpbmNsdWRlICJibGtpZFAuaCIKLWRpZmYgLS1naXQgYS9saWIvYmxraWQvZGV2bm8uYyBiL2xpYi9ibGtpZC9kZXZuby5jCi1pbmRleCA0NzlkOTc3Li42MWU2ZmM3IDEwMDY0NAotLS0tIGEvbGliL2Jsa2lkL2Rldm5vLmMKLSsrKyBiL2xpYi9ibGtpZC9kZXZuby5jCi1AQCAtMzEsNiArMzEsOSBAQAotICNpZiBIQVZFX1NZU19NS0RFVl9ICi0gI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgotICNlbmRpZgotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImJsa2lkUC5oIgotIAotZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvZmluZGRldi5jIGIvbGliL2V4dDJmcy9maW5kZGV2LmMKLWluZGV4IDMxMTYwOGQuLjYyZmEwZGIgMTAwNjQ0Ci0tLS0gYS9saWIvZXh0MmZzL2ZpbmRkZXYuYwotKysrIGIvbGliL2V4dDJmcy9maW5kZGV2LmMKLUBAIC0zMSw2ICszMSw5IEBACi0gI2lmIEhBVkVfU1lTX01LREVWX0gKLSAjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiZXh0Ml9mcy5oIgotICNpbmNsdWRlICJleHQyZnMuaCIKLWRpZmYgLS1naXQgYS9saWIvZXh0MmZzL2lzbW91bnRlZC5jIGIvbGliL2V4dDJmcy9pc21vdW50ZWQuYwotaW5kZXggZTBmNjlkZC4uNzQwNDk5NiAxMDA2NDQKLS0tLSBhL2xpYi9leHQyZnMvaXNtb3VudGVkLmMKLSsrKyBiL2xpYi9leHQyZnMvaXNtb3VudGVkLmMKLUBAIC00OSw2ICs0OSw5IEBACi0gI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiZXh0Ml9mcy5oIgotICNpbmNsdWRlICJleHQyZnMuaCIKLWRpZmYgLS1naXQgYS9taXNjL2NyZWF0ZV9pbm9kZS5jIGIvbWlzYy9jcmVhdGVfaW5vZGUuYwotaW5kZXggNGRiZDhlNS4uOThhZWI0MSAxMDA2NDQKLS0tLSBhL21pc2MvY3JlYXRlX2lub2RlLmMKLSsrKyBiL21pc2MvY3JlYXRlX2lub2RlLmMKLUBAIC0yMiw2ICsyMiwxMCBAQAotICNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4KLSAjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXh0MmZzL2ZpZW1hcC5oPgotZGlmZiAtLWdpdCBhL21pc2MvbWtfaHVnZWZpbGVzLmMgYi9taXNjL21rX2h1Z2VmaWxlcy5jCi1pbmRleCA3MWExNWM1Li4wMGU5NWNkIDEwMDY0NAotLS0tIGEvbWlzYy9ta19odWdlZmlsZXMuYwotKysrIGIvbWlzYy9ta19odWdlZmlsZXMuYwotQEAgLTM1LDYgKzM1LDkgQEAgZXh0ZXJuIGludCBvcHRpbmQ7Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGJsa2lkL2Jsa2lkLmg+Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAppbmRleCA4NzlkOTM2Li43ZGYwOTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCkBAIC0xLDMgKzEsNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL01ha2VmaWxlLmluCiBpbmRleCBjMTMwZjRhLi5kMmFkZTAzIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9yZXByb2R1Y2libGUtZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1ZDFkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9yZXByb2R1Y2libGUtZG9jLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKKworU3VwcHBvcnQgZm9yIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuCitXaGVuIGNvbXByZXNzaW5nLCBkbyBub3Qgc2F2ZSB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIGFuZCB0aW1lIHN0YW1wLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbVGhlb2RvcmUgVHMnbyB0eXRzb0BtaXQuZWR1IChtYWludGFpbmVyKV0KKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5pbiBiL2RvYy9NYWtlZmlsZS5pbgoraW5kZXggOWNiNTg0Yy4uMGJlZTRlNCAxMDA2NDQKKy0tLSBhL2RvYy9NYWtlZmlsZS5pbgorKysrIGIvZG9jL01ha2VmaWxlLmluCitAQCAtMjgsNyArMjgsNyBAQCBpbnN0YWxsLWRvYy1saWJzOiBsaWJleHQyZnMuaW5mbyBsaWJleHQyZnMuZHZpCisgCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKGluZm9kaXIpLyQkaSA7IFwKKyAJZG9uZQorIAkkKEUpICIJR1pJUCAkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKiIKKy0JLSQoUSkgZ3ppcCAtOSAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKKysJLSQoUSkgZ3ppcCAtOSAtbiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKKyAKKyB1bmluc3RhbGwtZG9jLWxpYnM6CisgCSQoUk0pIC1yZiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcnVuLXB0ZXN0CmluZGV4IGUwMmZjN2YuLmVmMTBiMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3J1bi1wdGVzdApAQCAtMSwxMSArMSwxMCBAQAogIyEvYmluL3NoCiAKIGNkIC4vdGVzdAotLi90ZXN0X3NjcmlwdCAmPi4uL3Rlc3QubG9nCi1pZiBbICQ/IC1lcSAwIF0KLXRoZW4KLQllY2hvICJQQVNTOiBlMmZzcHJvZ3MiCi0Jcm0gLi4vdGVzdC5sb2cKLWVsc2UKLQllY2hvICJGQUlMOiBlMmZzcHJvZ3MiCi1maQorLi90ZXN0X3NjcmlwdCB8IHNlZCAtdSAtZSAnLzpbWzpzcGFjZTpdXW9rL3MvXi9QQVNTOiAvJyAtZSAnLzpbWzpzcGFjZTpdXWZhaWxlZC9zL14vRkFJTDogLycgLWUgJy86W1s6c3BhY2U6XV1za2lwcGVkL3MvXi9TS0lQOiAvJworcm0gLXJmIC92YXIvdm9sYXRpbGUvdG1wLyplMmZzcHJvZ3MqCitybSAtZiB0bXAtKgorcm0gLWYgKi50bXAKK3JtIC1mICoub2sKK3JtIC1mICouZmFpbGVkCitybSAtZiAqLmxvZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTZjNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1yZXF1aXJlIGUyZnNwcm9ncy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9lMmZzcHJvZ3MtMS40My1zeXNtYWNyb3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZTJmc2NrLWV4aXQtd2l0aC1leGl0LXN0YXR1cy0wLWlmLW5vLWVycm9ycy13ZXJlLWZpeC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2giCi0KLVNSQ1JFViA9ICIzZDY2YzRiMjBmMDlmOTIzMDc4YzFlNmViOWI1NDk4NjViNTQ5Njc0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKLQotRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCi0KLUVYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicwotCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKLQlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjawotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCi0KLQkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCi0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KLQkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncwotCi0JaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0KLQkjIENsZWFuIGhvc3QgcGF0aCAoYnVpbGQgZGlyZWN0b3J5KSBpbiBjb21waWxlX2V0LCBta19jbWRzCi0Jc2VkIC1pIC1lICJzLFwoRVRfRElSPS4qXCkke1N9L2xpYi9ldFwoLipcKSxcMSR7ZGF0YWRpcn0vZXRcMixnIiAke0R9JHtiaW5kaXJ9L2NvbXBpbGVfZXQKLQlzZWQgLWkgLWUgInMsXChTU19ESVI9LipcKSR7U30vbGliL3NzXCguKlwpLFwxJHtkYXRhZGlyfS9zc1wyLGciICR7RH0ke2JpbmRpcn0vbWtfY21kcwotfQotCi0jIE5lZWQgdG8gZmluZCB0aGUgcmlnaHQgbWtlMmZzLmNvbmYgZmlsZQotZTJmc3Byb2dzX2NvbmZfZml4dXAgKCkgewotCWZvciBpIGluIG1rZTJmcyBta2ZzLmV4dDIgbWtmcy5leHQzIG1rZnMuZXh0NDsgZG8KLQkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JZTJmc3Byb2dzX2NvbmZfZml4dXAKLX0KLQotUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MiCi1SUkVDT01NRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIgotCi1QQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKLVBBQ0tBR0VTID0rICJsaWJjb21lcnIgbGlic3MgbGliZTJwIGxpYmV4dDJmcyIKLQotRklMRVNfZTJmc3Byb2dzLXJlc2l6ZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVzaXplMmZzKiIKLUZJTEVTX2UyZnNwcm9ncy1lMmZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayAke2Jhc2Vfc2JpbmRpcn0vZnNjay5leHQqIgotRklMRVNfZTJmc3Byb2dzLW1rZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzICR7YmFzZV9zYmluZGlyfS9ta2ZzLmV4dCogJHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZiIKLUZJTEVTX2UyZnNwcm9ncy10dW5lMmZzID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzICR7YmFzZV9zYmluZGlyfS9lMmxhYmVsIgotRklMRVNfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICIke2Jhc2Vfc2JpbmRpcn0vYmFkYmxvY2tzIgotRklMRVNfbGliY29tZXJyID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNvbV9lcnIuc28uKiIKLUZJTEVTX2xpYnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYnNzLnNvLioiCi1GSUxFU19saWJlMnAgPSAiJHtiYXNlX2xpYmRpcn0vbGliZTJwLnNvLioiCi1GSUxFU19saWJleHQyZnMgPSAiJHtsaWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke2Jhc2VfbGliZGlyfS9saWJleHQyZnMuc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS8qLyouYXdrICR7ZGF0YWRpcn0vKi8qLnNlZCAke2Jhc2VfbGliZGlyfS8qLnNvICR7YmluZGlyfS9jb21waWxlX2V0ICR7YmluZGlyfS9ta19jbWRzIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJjaGF0dHIiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIiCi1BTFRFUk5BVElWRV9UQVJHRVRbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiZnNjay44IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzY2suOF0gPSAiJHttYW5kaXJ9L21hbjgvZnNjay44IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0gJHtQTn0tdHVuZTJmcyBjb3JldXRpbHMgcHJvY3BzIGJhc2giCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLWEgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLWEgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlzZWQgLWUgJ3MhLi4vZTJmc2NrL2UyZnNjayFlMmZzY2shZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qL2V4cGVjdCoKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMDkzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My41LmJiCkBAIC0wLDAgKzEsMTE3IEBACityZXF1aXJlIGUyZnNwcm9ncy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL2FjaW5jbHVkZS5tNCBcCisgICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtZG9jLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIFwKKyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCIKKworU1JDUkVWID0gIjJhMTNjODRiNTEzYWEwOTRkMWNkYTcyN2U5MmQzNWE4OWRkNzc3ZGEiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKKworRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCit9CisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCisJIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgorCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKKworCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCisKKwlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KKworCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKKwlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAorCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCit9CisKKyMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCitlMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7CisJZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbworCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgorCWRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitSREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKK1JSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCisKK1BBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgorCitGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgorRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCitGSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgorRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCitGSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCitGSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgorRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKK0ZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKK0ZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgorCisJIyBSZW1vdmUgdmFyaW91cyBmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKKwkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAorCSAgICAtZXhlYyAgcm0gLWYge30gKworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwZmZhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNTEgKzAsMCBAQAotRnJvbSAwNTRmZWRkYTVhYjliODQxNjBkNDBkOTBjYjk2N2YyZjU4MjJiODg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMDY6MzU6MzQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFByb3ZpZGUgYWx0ZXJuYXRpdmVzIGZvciBnbGliYyBhc3N1bXB0aW9ucyBoZWxwcwotIGNvbXBpbGluZyBpdCBvbiBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotUmViYXNlIHRvIDAuNjgKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWIvY29sb3IuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQotIGxpYi9jcmMzMl9maWxlLmMgICAgICAgICAgICAgICAgIHwgIDEgKwotIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICAgIHwgIDEgLQotIGxpYi9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIGxpYi94bWFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX2VuZC5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gbGliYXNtL2FzbV9uZXdzY24uYyAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2dlbmRpcy5jICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9sZXguYyAgICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmR3L01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgIDQgKysrLQotIGxpYmR3L2xpYmR3X2FsbG9jLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyB8ICAzICsrLQotIGxpYmR3ZmwvZHdmbF9lcnJvci5jICAgICAgICAgICAgIHwgIDQgKysrLQotIGxpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyAgIHwgIDEgKwotIGxpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyAgICAgICAgIHwgIDIgKy0KLSBsaWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jICAgICB8IDEwICsrKysrKysrKysKLSBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgICB8ICAxICsKLSBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyAgICAgICAgICB8ICAyICstCi0gbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKystLQotIGxpYmVsZi9saWJlbGYuaCAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGxpYmVsZi9saWJlbGZQLmggICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9hZGRyMmxpbmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FybGliLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hcmxpYjIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZWxmY21wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9maW5kdGV4dHJlbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbm0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yYW5saWIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3NpemUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaW5ncy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0cmlwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy91bnN0cmlwLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hZGRyc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYWxscmVncy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kYXRhLmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2J1aWxkaWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2FsdGxpbmsuYyAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVidWdsaW5rLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlbGV0ZWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWFkZHItc2VjdC5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgICAgfCAgMiArLQotIHRlc3RzL2R3ZmxsaW5lcy5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsbW9kdGVzdC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbHN5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Vhcmx5LW9mZnNjbi5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9lY3AuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNyZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9mdW5jc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZ2V0c3JjX2RpZS5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xpbmUyYWRkci5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9sb3dfaGlnaF9wYy5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbWQ1LXNoYTEtdGVzdC5jICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Jkd3JtbWFwLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zYXJpZHguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvc2VjdGlvbmR1bXAuYyAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3ZhcmxvY3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy92ZHNvc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gNzAgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyZmY0NDRlLi40MWY3N2RmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjgsNyArMjgsNyBAQCBwa2dpbmNsdWRlX0hFQURFUlMgPSB2ZXJzaW9uLmgKLSAKLSAjIEFkZCBkb2MgYmFjayB3aGVuIHdlIGhhdmUgc29tZSByZWFsIGNvbnRlbnQuCi0gU1VCRElSUyA9IGNvbmZpZyBtNCBsaWIgbGliZWxmIGxpYmVibCBsaWJkd2VsZiBsaWJkd2ZsIGxpYmR3IGxpYmNwdSBsaWJhc20gXAotLQkgIGJhY2tlbmRzIHNyYyBwbyB0ZXN0cwotKwkgIGJhY2tlbmRzIHBvIHRlc3RzCi0gCi0gRVhUUkFfRElTVCA9IGVsZnV0aWxzLnNwZWMgR1BHLUtFWSBOT1RFUyBDT05UUklCVVRJTkcgXAotIAkgICAgIENPUFlJTkcgQ09QWUlORy1HUExWMiBDT1BZSU5HLUxHUExWMwotZGlmZiAtLWdpdCBhL2xpYi9jb2xvci5jIGIvbGliL2NvbG9yLmMKLWluZGV4IGZkZTJkOWQuLjczMjkyYWMgMTAwNjQ0Ci0tLS0gYS9saWIvY29sb3IuYwotKysrIGIvbGliL2NvbG9yLmMKLUBAIC0zMiwxMiArMzIsMTMgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlICJsaWJldS5oIgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAKLSAKLSAvKiBQcm90b3R5cGUgZm9yIG9wdGlvbiBoYW5kbGVyLiAgKi8KLWRpZmYgLS1naXQgYS9saWIvY3JjMzJfZmlsZS5jIGIvbGliL2NyYzMyX2ZpbGUuYwotaW5kZXggYTg0MzRkNC4uNTdlNDI5OCAxMDA2NDQKLS0tLSBhL2xpYi9jcmMzMl9maWxlLmMKLSsrKyBiL2xpYi9jcmMzMl9maWxlLmMKLUBAIC0zNSw2ICszNSw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAKLSBpbnQKLSBjcmMzMl9maWxlIChpbnQgZmQsIHVpbnQzMl90ICpyZXNwKQotZGlmZiAtLWdpdCBhL2xpYi9maXhlZHNpemVoYXNoLmggYi9saWIvZml4ZWRzaXplaGFzaC5oCi1pbmRleCBkYWMyYTVmLi40MzAxNmZjIDEwMDY0NAotLS0tIGEvbGliL2ZpeGVkc2l6ZWhhc2guaAotKysrIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAotQEAgLTMwLDcgKzMwLDYgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAKLSAjaW5jbHVkZSA8c3lzdGVtLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvbGliL3N5c3RlbS5oIGIvbGliL3N5c3RlbS5oCi1pbmRleCBjY2Q5OWQ2Li4wZTkzZTYwIDEwMDY0NAotLS0tIGEvbGliL3N5c3RlbS5oCi0rKysgYi9saWIvc3lzdGVtLmgKLUBAIC01NSw2ICs1NSwxNiBAQAotICNlbHNlCi0gIyBlcnJvciAiVW5rbm93biBieXRlIG9yZGVyIgotICNlbmRpZgotKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCi0rI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgXAotKyAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAotKyAgICAoeyBsb25nIGludCBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCi0rICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7CQkJCSAgICAgIFwKLSsgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7CQkJICAgICAgXAotKyAgICAgICBfX3Jlc3VsdDsgfSkpCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBlcnJvcihzdGF0dXMsIGVycm5vLCAuLi4pIGVycihzdGF0dXMsIF9fVkFfQVJHU19fKQotIAotICNpZm5kZWYgTUFYCi0gI2RlZmluZSBNQVgobSwgbikgKChtKSA8IChuKSA/IChuKSA6IChtKSkKLWRpZmYgLS1naXQgYS9saWIveG1hbGxvYy5jIGIvbGliL3htYWxsb2MuYwotaW5kZXggMGNkZTM4NC4uMjE3YjA1NCAxMDA2NDQKLS0tLSBhL2xpYi94bWFsbG9jLmMKLSsrKyBiL2xpYi94bWFsbG9jLmMKLUBAIC0zMCw3ICszMCw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fZW5kLmMgYi9saWJhc20vYXNtX2VuZC5jCi1pbmRleCAxOTFhNTM1Li5iZjVhYjA2IDEwMDY0NAotLS0tIGEvbGliYXNtL2FzbV9lbmQuYwotKysrIGIvbGliYXNtL2FzbV9lbmQuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fbmV3c2NuLmMgYi9saWJhc20vYXNtX25ld3Njbi5jCi1pbmRleCBkZGJiMjVkLi43NGE1OThkIDEwMDY0NAotLS0tIGEvbGliYXNtL2FzbV9uZXdzY24uYwotKysrIGIvbGliYXNtL2FzbV9uZXdzY24uYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9nZW5kaXMuYyBiL2xpYmNwdS9pMzg2X2dlbmRpcy5jCi1pbmRleCBhYWU1ZWFlLi42ZDc2MDE2IDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfZ2VuZGlzLmMKLSsrKyBiL2xpYmNwdS9pMzg2X2dlbmRpcy5jCi1AQCAtMzEsNyArMzEsNyBAQAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9sZXguYyBiL2xpYmNwdS9pMzg2X2xleC5jCi1pbmRleCBiNjcwNjA4Li5iODQyYzI1IDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfbGV4LmMKLSsrKyBiL2xpYmNwdS9pMzg2X2xleC5jCi1AQCAtNTkyLDcgKzU5Miw3IEBAIGNoYXIgKmkzODZfdGV4dDsKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAKLSAjaW5jbHVkZSA8bGliZXUuaD4KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9wYXJzZS5jIGIvbGliY3B1L2kzODZfcGFyc2UuYwotaW5kZXggNzI0YWRkZi4uNWI2NzgwMiAxMDA2NDQKLS0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKLSsrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKLUBAIC0xMDcsNyArMTA3LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLWRpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCi1pbmRleCAwODJkOTZjLi41MWNiZWEwIDEwMDY0NAotLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmR3L01ha2VmaWxlLmFtCi1AQCAtMTAyLDYgKzEwMiw4IEBAIGVuZGlmCi0gbGliZHdfcGljX2FfU09VUkNFUyA9Ci0gYW1fbGliZHdfcGljX2FfT0JKRUNUUyA9ICQobGliZHdfYV9TT1VSQ0VTOi5jPS5vcykKLSAKLStmdHNfTERBREQgPSAtbGZ0cwotKwotIGxpYmR3X3NvX1NPVVJDRVMgPQotIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwIGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKLSAJICAuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEgLi4vbGliZWJsL2xpYmVibC5hIFwKLUBAIC0xMTIsNyArMTE0LDcgQEAgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAotIAkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywtcnBhdGgsJChwa2dsaWJkaXIpIFwKLSAJCS1XbCwtLXZlcnNpb24tc2NyaXB0LCQ8LC0tbm8tdW5kZWZpbmVkIFwKLSAJCS1XbCwtLXdob2xlLWFyY2hpdmUgJChmaWx0ZXItb3V0ICQ8LCReKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlXAotLQkJLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKQotKwkJLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAkKGZ0c19MREFERCkKLSAJQCQodGV4dHJlbF9jaGVjaykKLSAJJChBTV9WX2F0KWxuIC1mcyAkQCAkQC4kKFZFUlNJT04pCi0gCi1kaWZmIC0tZ2l0IGEvbGliZHcvbGliZHdfYWxsb2MuYyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLWluZGV4IDI4YThjZjYuLjI5YWViM2YgMTAwNjQ0Ci0tLS0gYS9saWJkdy9saWJkd19hbGxvYy5jCi0rKysgYi9saWJkdy9saWJkd19hbGxvYy5jCi1AQCAtMzEsNyArMzEsNyBAQAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSAibGliZHdQLmgiCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMgYi9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYwotaW5kZXggOTAzZTE5My4uYjAwZDEwYyAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi0rKysgYi9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAgICBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRlICJsaWJkd2ZsUC5oIgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1AQCAtOTQsNyArOTUsNyBAQCBfX2xpYmR3Zmxfb3Blbl9ieV9idWlsZF9pZCAoRHdmbF9Nb2R1bGUgKm1vZCwgYm9vbCBkZWJ1ZywgY2hhciAqKmZpbGVfbmFtZSwKLSAJewotIAkgIGlmICgqZmlsZV9uYW1lICE9IE5VTEwpCi0gCSAgICBmcmVlICgqZmlsZV9uYW1lKTsKLS0JICAqZmlsZV9uYW1lID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAobmFtZSk7Ci0rCSAgKmZpbGVfbmFtZSA9IHJlYWxwYXRoIChuYW1lLCBOVUxMKTsKLSAJICBpZiAoKmZpbGVfbmFtZSA9PSBOVUxMKQotIAkgICAgewotIAkgICAgICAqZmlsZV9uYW1lID0gbmFtZTsKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1pbmRleCA3YmNmNjFjLi5jMzQ1Nzk3IDEwMDY0NAotLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLSsrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1AQCAtMTQwLDYgKzE0MCw3IEBAIF9fbGliZHdmbF9zZXRlcnJubyAoRHdmbF9FcnJvciBlcnJvcikKLSBjb25zdCBjaGFyICoKLSBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQotIHsKLSsgIHN0YXRpYyBfX3RocmVhZCBjaGFyIHNbNjRdID0gIiI7Ci0gICBpZiAoZXJyb3IgPT0gMCB8fCBlcnJvciA9PSAtMSkKLSAgICAgewotICAgICAgIGludCBsYXN0X2Vycm9yID0gZ2xvYmFsX2Vycm9yOwotQEAgLTE1NCw3ICsxNTUsOCBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQotICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCi0gICAgIHsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgotLSAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOwotKyAgICAgIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBzLCBzaXplb2YocykpOwotKyAgICAgIHJldHVybiBzOwotICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgotICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKLWluZGV4IDBlODgxMGIuLjgyYWQ2NjUgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKLSsrKyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCS8qIERXQVJGX0VfKiB2YWx1ZXMgYXJlIGhlcmUuICAqLwotICNpbmNsdWRlICIuLi9saWJlbGYvbGliZWxmUC5oIgotIAotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotaW5kZXggODA1MTVkYi4uODBiMDE0OCAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotKysrIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1AQCAtMzg1LDcgKzM4NSw3IEBAIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCi0gICAgICAgLyogSWYgRklMRV9OQU1FIGlzIGEgc3ltbGluaywgdGhlIGRlYnVnIGZpbGUgbWlnaHQgYmUgYXNzb2NpYXRlZAotIAkgd2l0aCB0aGUgc3ltbGluayB0YXJnZXQgbmFtZSBpbnN0ZWFkLiAgKi8KLSAKLS0gICAgICBjaGFyICpjYW5vbiA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKGZpbGVfbmFtZSk7Ci0rICAgICAgY2hhciAqY2Fub24gPSByZWFscGF0aCAoZmlsZV9uYW1lLCBOVUxMKTsKLSAgICAgICBpZiAoY2Fub24gIT0gTlVMTCAmJiBzdHJjbXAgKGZpbGVfbmFtZSwgY2Fub24pKQotIAlmZCA9IGZpbmRfZGVidWdpbmZvX2luX3BhdGggKG1vZCwgY2Fub24sCi0gCQkJCSAgICAgZGVidWdsaW5rX2ZpbGUsIGRlYnVnbGlua19jcmMsCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLWluZGV4IDZiNmI3ZDMuLmRlYmM0YTQgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi0rKysgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi1AQCAtMzEsNiArMzEsMTYgQEAKLSAKLSAjZGVmaW5lIGNyYzMyX2ZpbGUgYXR0cmlidXRlX2hpZGRlbiBfX2xpYmR3ZmxfY3JjMzJfZmlsZQotICNkZWZpbmUgY3JjMzIgX19saWJkd2ZsX2NyYzMyCi0rCi0rI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKLSsjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCi0rICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCi0rICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKLSsgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsJCQkJICAgICAgXAotKyAgICAgICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsJCQkgICAgICBcCi0rICAgICAgIF9fcmVzdWx0OyB9KSkKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIExJQl9TWVNURU1fSAkxCi0gI2luY2x1ZGUgPGxpYmR3ZmxQLmg+Ci0gI2luY2x1ZGUgIi4uL2xpYi9jcmMzMl9maWxlLmMiCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1pbmRleCA5Y2Q4ZWE5Li40ZGJmNGM1IDEwMDY0NAotLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi0rKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLUBAIC0zNiw2ICszNiw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlICJsaWJkd2ZsUC5oIgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLWRpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1pbmRleCAzNGQ0MzlhLi41NmQyMzQ1IDEwMDY0NAotLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLSsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtMzIsNyArMzIsNyBAQAotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZlAuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCi1pbmRleCA3NDY1NGQ2Li44MWVlZThiIDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZi5oCi0rKysgYi9saWJlbGYvZWxmLmgKLUBAIC0yMSw3ICsyMSw5IEBACi0gCi0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIAotIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCi0gCi1AQCAtMzcwNCw2ICszNzA2LDggQEAgZW51bQotICNkZWZpbmUgUl9CUEZfTk9ORQkJMAkvKiBObyByZWxvYyAqLwotICNkZWZpbmUgUl9CUEZfTUFQX0ZECQkxCS8qIE1hcCBmZCB0byBwb2ludGVyICovCi0gCi0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gCi0gI2VuZGlmCS8qIGVsZi5oICovCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZi5oIGIvbGliZWxmL2xpYmVsZi5oCi1pbmRleCBjMGQ2Mzg5Li4zOGE2OGZkIDEwMDY0NAotLS0tIGEvbGliZWxmL2xpYmVsZi5oCi0rKysgYi9saWJlbGYvbGliZWxmLmgKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2lmbmRlZiBfTElCRUxGX0gKLSAjZGVmaW5lIF9MSUJFTEZfSCAxCi0gCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLWRpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmUC5oIGIvbGliZWxmL2xpYmVsZlAuaAotaW5kZXggNDQ1OTk4Mi4uMTI5NmYyMCAxMDA2NDQKLS0tLSBhL2xpYmVsZi9saWJlbGZQLmgKLSsrKyBiL2xpYmVsZi9saWJlbGZQLmgKLUBAIC0zNiw2ICszNiw3IEBACi0gCi0gI2luY2x1ZGUgPGFyLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSsjaW5jbHVkZSA8bGliZWxmLmg+Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLWRpZmYgLS1naXQgYS9zcmMvYWRkcjJsaW5lLmMgYi9zcmMvYWRkcjJsaW5lLmMKLWluZGV4IDAyMjIwODguLmNkNmE5YTYgMTAwNjQ0Ci0tLS0gYS9zcmMvYWRkcjJsaW5lLmMKLSsrKyBiL3NyYy9hZGRyMmxpbmUuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmR3ZmwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXIuYyBiL3NyYy9hci5jCi1pbmRleCBmMmYzMjJiLi42ZTcwMDMxIDEwMDY0NAotLS0tIGEvc3JjL2FyLmMKLSsrKyBiL3NyYy9hci5jCi1AQCAtMjIsNyArMjIsNyBAQAotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYwotaW5kZXggZTA4MzlhYS4uMTE0MzY1OCAxMDA2NDQKLS0tLSBhL3NyYy9hcmxpYi5jCi0rKysgYi9zcmMvYXJsaWIuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXJsaWIyLmMgYi9zcmMvYXJsaWIyLmMKLWluZGV4IDU1M2ZjNTcuLjQ2NDQzZDAgMTAwNjQ0Ci0tLS0gYS9zcmMvYXJsaWIyLmMKLSsrKyBiL3NyYy9hcmxpYjIuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmNtcC5jIGIvc3JjL2VsZmNtcC5jCi1pbmRleCA0MDFhYjMxLi44NzNkMjUzIDEwMDY0NAotLS0tIGEvc3JjL2VsZmNtcC5jCi0rKysgYi9zcmMvZWxmY21wLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCi1pbmRleCA3ZDNmMjI3Li4wNzRkMjFjIDEwMDY0NAotLS0tIGEvc3JjL2VsZmxpbnQuYwotKysrIGIvc3JjL2VsZmxpbnQuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9maW5kdGV4dHJlbC5jIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKLWluZGV4IGRjNDE1MDIuLjMyNTg4OGMgMTAwNjQ0Ci0tLS0gYS9zcmMvZmluZHRleHRyZWwuYwotKysrIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmR3Lmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL25tLmMgYi9zcmMvbm0uYwotaW5kZXggYzU0ZTk2Zi4uOWUwMzFkOSAxMDA2NDQKLS0tLSBhL3NyYy9ubS5jCi0rKysgYi9zcmMvbm0uYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYwotaW5kZXggZmZmNGI4MS4uNGIxZjk2NiAxMDA2NDQKLS0tLSBhL3NyYy9vYmpkdW1wLmMKLSsrKyBiL3NyYy9vYmpkdW1wLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvcmFubGliLmMgYi9zcmMvcmFubGliLmMKLWluZGV4IDQxYTNiY2YuLjBjN2RhMmMgMTAwNjQ0Ci0tLS0gYS9zcmMvcmFubGliLmMKLSsrKyBiL3NyYy9yYW5saWIuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCBkMThhNGI3Li5hNmNmYjM1IDEwMDY0NAotLS0tIGEvc3JjL3JlYWRlbGYuYwotKysrIGIvc3JjL3JlYWRlbGYuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc2l6ZS5jIGIvc3JjL3NpemUuYwotaW5kZXggZGUwZDc5MS4uNDYzOWQ0MiAxMDA2NDQKLS0tLSBhL3NyYy9zaXplLmMKLSsrKyBiL3NyYy9zaXplLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc3RhY2suYyBiL3NyYy9zdGFjay5jCi1pbmRleCBhNWE3YmViLi40YzA3NWJjIDEwMDY0NAotLS0tIGEvc3JjL3N0YWNrLmMKLSsrKyBiL3NyYy9zdGFjay5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmdzLmMgYi9zcmMvc3RyaW5ncy5jCi1pbmRleCA0OWFhYjhiLi4wOWQ1YjFjIDEwMDY0NAotLS0tIGEvc3JjL3N0cmluZ3MuYwotKysrIGIvc3JjL3N0cmluZ3MuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N0cmlwLmMgYi9zcmMvc3RyaXAuYwotaW5kZXggYTg3NWRkZi4uZmQ3NmY3ZiAxMDA2NDQKLS0tLSBhL3NyYy9zdHJpcC5jCi0rKysgYi9zcmMvc3RyaXAuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJlbGYuaD4KLWRpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYwotaW5kZXggZDgzOGFlOS4uMDEwODI3MiAxMDA2NDQKLS0tLSBhL3NyYy91bnN0cmlwLmMKLSsrKyBiL3NyYy91bnN0cmlwLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9hZGRyc2NvcGVzLmMgYi90ZXN0cy9hZGRyc2NvcGVzLmMKLWluZGV4IDc5MTU2OWYuLjU0ZjQzMTEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKLSsrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYwotaW5kZXggMjg2ZjdlMy4uYzlkZTA4OSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2FsbHJlZ3MuYwotKysrIGIvdGVzdHMvYWxscmVncy5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotaW5kZXggYjcxNThkYS4uMzU0ZmE2YSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKLSsrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQotZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKLWluZGV4IGE2NDRjOGEuLmI4Y2JlMjcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS5jIGIvdGVzdHMvYmFja3RyYWNlLmMKLWluZGV4IDFmZjYzNTMuLjQ3ZTNmN2IgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iYWNrdHJhY2UuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpZmRlZiBfX2xpbnV4X18KLWRpZmYgLS1naXQgYS90ZXN0cy9idWlsZGlkLmMgYi90ZXN0cy9idWlsZGlkLmMKLWluZGV4IDg3YzE4NzcuLjI5NTNlNmIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9idWlsZGlkLmMKLSsrKyBiL3Rlc3RzL2J1aWxkaWQuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZWxmKQotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGVidWdhbHRsaW5rLmMgYi90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotaW5kZXggNmQ5N2Q1MC4uZWU3ZTU1OSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RlYnVnYWx0bGluay5jCi0rKysgYi90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHcpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2xpbmsuYyBiL3Rlc3RzL2RlYnVnbGluay5jCi1pbmRleCA5MzVkMTAyLi43NDFjYjgxIDEwMDY0NAotLS0tIGEvdGVzdHMvZGVidWdsaW5rLmMKLSsrKyBiL3Rlc3RzL2RlYnVnbGluay5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGVsZXRlZC5jIGIvdGVzdHMvZGVsZXRlZC5jCi1pbmRleCA2YmUzNWJjLi4wMTkwNzExIDEwMDY0NAotLS0tIGEvdGVzdHMvZGVsZXRlZC5jCi0rKysgYi90ZXN0cy9kZWxldGVkLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2lmZGVmIF9fbGludXhfXwotICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotaW5kZXggMjFlNDcwYS4uMWVhMWUzYiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKLSsrKyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotaW5kZXggYWE4MDMwZS4uMDJjOGJlZiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotKysrIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotaW5kZXggNjg5Y2RkNy4uNTk3M2RhMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotKysrIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLWluZGV4IDFlZTk4OWYuLmZkNjJlNjUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLSsrKyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIHN0YXRpYyBjb25zdCBEd2ZsX0NhbGxiYWNrcyBjYWxsYmFja3MgPQotICAgewotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jIGIvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLWluZGV4IGE0ZTk3ZDMuLmY0NzE1ODcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotKysrIGIvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbGluZXMuYyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1pbmRleCA5MDM3OWRkLi5jYmRmNmM0IDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbGxpbmVzLmMKLSsrKyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbG1vZHRlc3QuYyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLWluZGV4IDAwMjdmOTYuLmU2OGQzYmMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsbW9kdGVzdC5jCi0rKysgYi90ZXN0cy9kd2ZsbW9kdGVzdC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2Zsc3ltcy5jIGIvdGVzdHMvZHdmbHN5bXMuYwotaW5kZXggNDlhYzMzNC4uY2YwNzgzMCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmxzeW1zLmMKLSsrKyBiL3Rlc3RzL2R3ZmxzeW1zLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotIHN0YXRpYyBjb25zdCBjaGFyICoKLWRpZmYgLS1naXQgYS90ZXN0cy9lYXJseS1vZmZzY24uYyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1pbmRleCA5MjRjYjllLi42ZjYwZDVhIDEwMDY0NAotLS0tIGEvdGVzdHMvZWFybHktb2Zmc2NuLmMKLSsrKyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2VjcC5jIGIvdGVzdHMvZWNwLmMKLWluZGV4IDM4YTY4NTkuLjc0M2NlYTUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lY3AuYwotKysrIGIvdGVzdHMvZWNwLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi1pbmRleCBiYThhZTM3Li43NmY1ZjA0IDEwMDY0NAotLS0tIGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotKysrIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3JldHZhbC5jIGIvdGVzdHMvZnVuY3JldHZhbC5jCi1pbmRleCA4ZDE5ZDExLi5jOGFhYTkzIDEwMDY0NAotLS0tIGEvdGVzdHMvZnVuY3JldHZhbC5jCi0rKysgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNzY29wZXMuYyBiL3Rlc3RzL2Z1bmNzY29wZXMuYwotaW5kZXggOWM5MDE4NS4uZGJjY2I4OSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Z1bmNzY29wZXMuYwotKysrIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9nZXRzcmNfZGllLmMgYi90ZXN0cy9nZXRzcmNfZGllLmMKLWluZGV4IDA1NWFlZGUuLjljMzk0ZGQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9nZXRzcmNfZGllLmMKLSsrKyBiL3Rlc3RzL2dldHNyY19kaWUuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZi5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpbmUyYWRkci5jIGIvdGVzdHMvbGluZTJhZGRyLmMKLWluZGV4IGUwZDY1ZDMuLjliZjAwMjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saW5lMmFkZHIuYwotKysrIGIvdGVzdHMvbGluZTJhZGRyLmMKLUBAIC0yNiw3ICsyNiw3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIAotIHN0YXRpYyB2b2lkCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbG93X2hpZ2hfcGMuYyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLWluZGV4IGQwZjQzMDIuLjhkYTRmYmQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9sb3dfaGlnaF9wYy5jCi0rKysgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9tZDUtc2hhMS10ZXN0LmMgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKLWluZGV4IGQ1MDM1NWUuLjNjNDFmNDAgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKLSsrKyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotICNpbmNsdWRlICJtZDUuaCIKLSAjaW5jbHVkZSAic2hhMS5oIgotZGlmZiAtLWdpdCBhL3Rlc3RzL3Jkd3JtbWFwLmMgYi90ZXN0cy9yZHdybW1hcC5jCi1pbmRleCA2ZjAyN2RmLi4xY2U1ZTZlIDEwMDY0NAotLS0tIGEvdGVzdHMvcmR3cm1tYXAuYwotKysrIGIvdGVzdHMvcmR3cm1tYXAuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3NhcmlkeC5jIGIvdGVzdHMvc2FyaWR4LmMKLWluZGV4IDhhNDUwZDguLmIzODc4MDEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9zYXJpZHguYwotKysrIGIvdGVzdHMvc2FyaWR4LmMKLUBAIC0xNyw3ICsxNyw3IEBACi0gCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3NlY3Rpb25kdW1wLmMgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCi1pbmRleCAzMDMzZmVkLi44ZTg4OGRiIDEwMDY0NAotLS0tIGEvdGVzdHMvc2VjdGlvbmR1bXAuYwotKysrIGIvdGVzdHMvc2VjdGlvbmR1bXAuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdmFybG9jcy5jIGIvdGVzdHMvdmFybG9jcy5jCi1pbmRleCBjM2ZiYTg5Li5lMDQzZWEyIDEwMDY0NAotLS0tIGEvdGVzdHMvdmFybG9jcy5jCi0rKysgYi90ZXN0cy92YXJsb2NzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3Zkc29zeW1zLmMgYi90ZXN0cy92ZHNvc3ltcy5jCi1pbmRleCBiODc2YzEwLi5hZmIyODIzIDEwMDY0NAotLS0tIGEvdGVzdHMvdmRzb3N5bXMuYwotKysrIGIvdGVzdHMvdmRzb3N5bXMuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1lbGZfZ2V0YXJzeW0tU2lsZW5jZS1XZXJyb3ItbWF5YmUtdW5pbml0aWFsaXplZC1mYWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTRjMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDY2OGFjY2YzMjJmZDcxODVlMjczYmZkNTBiODQzMjBlNzFkOWRlNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEwIEFwciAyMDE1IDAwOjI5OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVsZl9nZXRhcnN5bTogU2lsZW5jZSAtV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWQgZmFsc2UKLSBwb3NpdGl2ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGxpYmVsZi9lbGZfZ2V0YXJzeW0uYyB8IDkgKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfZ2V0YXJzeW0uYyBiL2xpYmVsZi9lbGZfZ2V0YXJzeW0uYwotaW5kZXggZDBiYjI4YS4uMDg5NTRkMiAxMDA2NDQKLS0tLSBhL2xpYmVsZi9lbGZfZ2V0YXJzeW0uYwotKysrIGIvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi1AQCAtMTY1LDggKzE2NSwxMyBAQCBlbGZfZ2V0YXJzeW0gKGVsZiwgcHRyKQotICAgICAgIGludCB3ID0gaW5kZXg2NF9wID8gOCA6IDQ7Ci0gCi0gICAgICAgLyogV2UgaGF2ZSBhbiBhcmNoaXZlLiAgVGhlIGZpcnN0IHdvcmQgaW4gdGhlcmUgaXMgdGhlIG51bWJlciBvZgotLQkgZW50cmllcyBpbiB0aGUgdGFibGUuICAqLwotLSAgICAgIHVpbnQ2NF90IG47Ci0rCSBlbnRyaWVzIGluIHRoZSB0YWJsZS4KLSsJIFNldCB0byBTSVpFX01BWCBqdXN0IHRvIHNpbGVuY2UgLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkCi0rCSBlbGZfZ2V0YXJzeW0uYzoyOTA6OTogZXJyb3I6ICduJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KLSsJIFRoZSByZWFkX251bWJlcl9lbnRyaWVzIGZ1bmN0aW9uIGRvZXNuJ3QgaW5pdGlhbGl6ZSBuIG9ubHkgd2hlbiByZXR1cm5pbmcKLSsJIC0xIHdoaWNoIGluIHR1cm4gZW5zdXJlcyB0byBqdW1wIG92ZXIgdXNhZ2Ugb2YgdGhpcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgotKwkgKi8KLSsgICAgICB1aW50NjRfdCBuID0gU0laRV9NQVg7Ci0gICAgICAgc2l6ZV90IG9mZiA9IGVsZi0+c3RhcnRfb2Zmc2V0ICsgU0FSTUFHICsgc2l6ZW9mIChzdHJ1Y3QgYXJfaGRyKTsKLSAgICAgICBpZiAocmVhZF9udW1iZXJfZW50cmllcyAoJm4sIGVsZiwgJm9mZiwgaW5kZXg2NF9wKSA8IDApCi0gCXsKLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkyM2JmNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVtQQVRDSF0gZml4IGEgc3RhY2stdXNhZ2Ugd2FybmluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotbm90IHVzZSBhIHZhcmlhYmxlIHRvIGFzIGEgYXJyYXkgc2l6ZSwgb3RoZXJ3aXNlIHRoZSB3YXJuaW5nIHRvIGVycm9yIHRoYXQKLXN0YWNrIHVzYWdlIG1pZ2h0IGJlIHVuYm91bmRlZCBbLVdlcnJvcj1zdGFjay11c2FnZT1dIHdpbGwgaGFwcGVuCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhY2tlbmRzL3BwY19pbml0cmVnLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jIGIvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotaW5kZXggNjRmNTM3OS4uNTJkZGUzZSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKLSsrKyBiL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKLUBAIC05Myw3ICs5Myw3IEBAIHBwY19zZXRfaW5pdGlhbF9yZWdpc3RlcnNfdGlkIChwaWRfdCB0aWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotIAlyZXR1cm4gZmFsc2U7Ci0gICAgIH0KLSAgIGNvbnN0IHNpemVfdCBncHJzID0gc2l6ZW9mICh1c2VyX3JlZ3Muci5ncHIpIC8gc2l6ZW9mICgqdXNlcl9yZWdzLnIuZ3ByKTsKLS0gIER3YXJmX1dvcmQgZHdhcmZfcmVnc1tncHJzXTsKLSsgIER3YXJmX1dvcmQgZHdhcmZfcmVnc1tzaXplb2YgKHVzZXJfcmVncy5yLmdwcikgLyBzaXplb2YgKCp1c2VyX3JlZ3Muci5ncHIpXTsKLSAgIGZvciAodW5zaWduZWQgZ3ByID0gMDsgZ3ByIDwgZ3ByczsgZ3ByKyspCi0gICAgIGR3YXJmX3JlZ3NbZ3ByXSA9IHVzZXJfcmVncy5yLmdwcltncHJdOwotICAgaWYgKCEgc2V0ZnVuYyAoMCwgZ3BycywgZHdhcmZfcmVncywgYXJnKSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmU5MmQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1yZW1vdmUtdGhlLXVubmVlZC1jaGVja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLURpc2FibGUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKLQotUmVtb3ZlIHRoZSB0ZXN0ICJUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOgotTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzIHByb3ZpZGVkIgotc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBIUC1VWCBhbmQgaWYgdGhlIGV1Yy1qcCBpcyBub3QKLWluc3RhbGxlZCBvbiB0aGUgaG9zdCwgdGhlIGRlcGVuZGVuY2Ugd2lsbCBiZSBidWlsdCB3aXRob3V0Ci1pY29udiBzdXBwb3J0IGFuZCB3aWxsIGNhdXNlIGd1aWxkLW5hdGl2ZSBidWlsZGluZyBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtNC9pY29udi5tNCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9tNC9pY29udi5tNCBiL200L2ljb252Lm00Ci1pbmRleCBhNTAzNjQ2Li4yOTlmMWViIDEwMDY0NAotLS0tIGEvbTQvaWNvbnYubTQKLSsrKyBiL200L2ljb252Lm00Ci1AQCAtMTU5LDYgKzE1OSw3IEBAIGludCBtYWluICgpCi0gICAgICAgfQotICAgfQotICNlbmRpZgotKyNpZiAwCi0gICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKLSAgICAgIHByb3ZpZGVkLiAgKi8KLSAgIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KLUBAIC0xNzAsNiArMTcxLDcgQEAgaW50IG1haW4gKCkKLSAgICAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLwotICAgICAgICYmIGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKSkKLSAgICAgcmVzdWx0IHw9IDE2OwotKyNlbmRpZgotICAgcmV0dXJuIHJlc3VsdDsKLSB9XV0pXSwKLSAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sCi0tLSAKLTIuMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvRml4X29uZV9HQ0M3X3dhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L0ZpeF9vbmVfR0NDN193YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODhmNGViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvRml4X29uZV9HQ0M3X3dhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDkzYzUxMTQ0YzNmNjY0ZDRlOTcwOWRhNzVhMWQwZmEwMGVhMGZlOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KLURhdGU6IFN1biwgMTIgRmViIDIwMTcgMjE6NTE6MzQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliYXNtOiBGaXggb25lIEdDQzcgLVdmb3JtYXQtdHJ1bmNhdGlvbj0yIHdhcm5pbmcuCi0KLU1ha2Ugc3VyZSB0aGF0IGlmIHdlIGhhdmUgcmVhbGx5IGxvdHMgb2YgbGFiZWxzIHRoZSB0ZW1wc3ltIGRvZXNuJ3QgZ2V0Ci10cnVuY2F0ZWQgYmVjYXVzZSBpdCBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgd2hvbGUgbmFtZS4KLQotVGhpcyBkb2Vzbid0IGVuYWJsZSAtV2Zvcm1hdC10cnVuY2F0aW9uPTIgb3IgZml4IG90aGVyICJpc3N1ZXMiIHBvaW50ZWQKLW91dCBieSBlbmFibGluZyB0aGlzIHdhcm5pbmcgYmVjYXVzZSB0aGVyZSBhcmUgY3VycmVudGx5IHNvbWUgaXNzdWVzCi13aXRoIGl0LiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03OTQ0OAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9ZWxmdXRpbHMuZ2l0O2E9Y29tbWl0O2g9OTNjNTExNDRjM2Y2NjRkNGU5NzA5ZGE3NWExZDBmYTAwZWEwZmU5NSkKLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KLQotLS0tCi0gbGliYXNtL0NoYW5nZUxvZyAgICB8IDYgKysrKystCi0gbGliYXNtL2FzbV9uZXdzeW0uYyB8IDYgKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBlbGZ1dGlscy0wLjE2OC9saWJhc20vYXNtX25ld3N5bS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjgub3JpZy9saWJhc20vYXNtX25ld3N5bS5jCi0rKysgZWxmdXRpbHMtMC4xNjgvbGliYXNtL2FzbV9uZXdzeW0uYwotQEAgLTEsNSArMSw1IEBACi0gLyogRGVmaW5lIG5ldyBzeW1ib2wgZm9yIGN1cnJlbnQgcG9zaXRpb24gaW4gZ2l2ZW4gc2VjdGlvbi4KLS0gICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUsIDIwMTYgUmVkIEhhdCwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAxNiwgMjAxNyBSZWQgSGF0LCBJbmMuCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuCi0gICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPiwgMjAwMi4KLSAKLUBAIC00NCw3ICs0NCw5IEBAIEFzbVN5bV90ICoKLSBhc21fbmV3c3ltIChBc21TY25fdCAqYXNtc2NuLCBjb25zdCBjaGFyICpuYW1lLCBHRWxmX1h3b3JkIHNpemUsCi0gCSAgICBpbnQgdHlwZSwgaW50IGJpbmRpbmcpCi0gewotLSNkZWZpbmUgVEVNUFNZTUxFTiAxMAotKy8qIFdlIGRvbid0IHJlYWxseSBleHBlY3QgbGFiZWxzIHdpdGggbWFueSBkaWdpdHMsIGJ1dCBpbiB0aGVvcnkgaXQgY291bGQKLSsgICBiZSAxMCBkaWdpdHMgKHBsdXMgIi5MIiBhbmQgYSB6ZXJvIHRlcm1pbmF0b3IpLiAgKi8KLSsjZGVmaW5lIFRFTVBTWU1MRU4gMTMKLSAgIGNoYXIgdGVtcHN5bVtURU1QU1lNTEVOXTsKLSAgIEFzbVN5bV90ICpyZXN1bHQ7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2FhcmNoNjRfdWlvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9hYXJjaDY0X3Vpby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhkYzU3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2FhcmNoNjRfdWlvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRml4IGJ1aWxkIG9uIGFhcmNoNjQvbXVzbAotCi1FcnJvcnMKLQotaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgJiAoaGF2ZSAnbG9uZyBkb3VibGUnIGFuZCAndW5zaWduZWQgaW50JykKLQotZXJyb3I6IHJlZGVmaW5pdGlvbgotIG9mICdzdHJ1Y3QgaW92ZWMnCi0gc3RydWN0IGlvdmVjIHsgdm9pZCAqaW92X2Jhc2U7IHNpemVfdCBpb3ZfbGVuOyB9OwotICAgICAgICBeCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjMvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2My5vcmlnL2JhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jCi0rKysgZWxmdXRpbHMtMC4xNjMvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKLUBAIC0zMyw3ICszMyw3IEBACi0gI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaWZkZWYgX19hYXJjaDY0X18KLS0jIGluY2x1ZGUgPGxpbnV4L3Vpby5oPgotKyMgaW5jbHVkZSA8c3lzL3Vpby5oPgotICMgaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSAjIGluY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAvKiBEZWFsIHdpdGggb2xkIGdsaWJjIGRlZmluaW5nIHVzZXJfcHRfcmVncyBpbnN0ZWFkIG9mIHVzZXJfcmVnc19zdHJ1Y3QuICAqLwotQEAgLTgyLDcgKzgyLDcgQEAgYWFyY2g2NF9zZXRfaW5pdGlhbF9yZWdpc3RlcnNfdGlkIChwaWRfdAotIAotICAgRHdhcmZfV29yZCBkd2FyZl9mcmVnc1szMl07Ci0gICBmb3IgKGludCByID0gMDsgciA8IDMyOyByKyspCi0tICAgIGR3YXJmX2ZyZWdzW3JdID0gZnJlZ3MudnJlZ3Nbcl0gJiAweEZGRkZGRkZGOwotKyAgICBkd2FyZl9mcmVnc1tyXSA9ICh1bnNpZ25lZCBpbnQpZnJlZ3MudnJlZ3Nbcl0gJiAweEZGRkZGRkZGOwotIAotICAgaWYgKCEgc2V0ZnVuYyAoNjQsIDMyLCBkd2FyZl9mcmVncywgYXJnKSkKLSAgICAgcmV0dXJuIGZhbHNlOwotSW5kZXg6IGVsZnV0aWxzLTAuMTYzL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2My5vcmlnL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKLSsrKyBlbGZ1dGlscy0wLjE2My9iYWNrZW5kcy9hcm1faW5pdHJlZy5jCi1AQCAtMzcsNyArMzcsNyBAQAotICNlbmRpZgotIAotICNpZmRlZiBfX2FhcmNoNjRfXwotLSMgaW5jbHVkZSA8bGludXgvdWlvLmg+Ci0rIyBpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gIyBpbmNsdWRlIDxzeXMvdXNlci5oPgotICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9odXJkX3BhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9odXJkX3BhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDU2OGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaHVyZF9wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBlbGZ1dGlscy0wLjE2NS90ZXN0cy9ydW4tbmF0aXZlLXRlc3Quc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NS5vcmlnL3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotKysrIGVsZnV0aWxzLTAuMTY1L3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotQEAgLTgzLDYgKzgzLDkgQEAgbmF0aXZlX3Rlc3QoKQotICMgImNhbm5vdCBhdHRhY2ggdG8gcHJvY2VzczogRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIi4KLSBbICIkKHVuYW1lKSIgPSAiR05VL2tGcmVlQlNEIiBdICYmIGV4aXQgNzcKLSAKLSsjIGh1cmQncyAvcHJvYy8kUElEL21hcHMgZG9lcyBub3QgZ2l2ZSBwYXRocyB5ZXQuCi0rWyAiJCh1bmFtZSkiID0gIkdOVSIgXSAmJiBleGl0IDc3Ci0rCi0gbmF0aXZlX3Rlc3QgJHthYnNfYnVpbGRkaXJ9L2FsbHJlZ3MKLSBuYXRpdmVfdGVzdCAke2Fic19idWlsZGRpcn0vZnVuY3JldHZhbAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU3MGRlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi0tLS0gZWxmdXRpbHMtMC4xNjUub3JpZy90ZXN0cy9ydW4tc3RyaXAtc3RybWVyZ2Uuc2gKLSsrKyBlbGZ1dGlscy0wLjE2NS90ZXN0cy9ydW4tc3RyaXAtc3RybWVyZ2Uuc2gKLUBAIC0zMCw3ICszMCw3IEBAIHJlbWVyZ2VkPXJlbWVyZ2VkLmVsZgotIHRlbXBmaWxlcyAkbWVyZ2VkICRzdHJpcHBlZCAkZGVidWdmaWxlICRyZW1lcmdlZAotIAotIGVjaG8gZWxmbGludCAkaW5wdXQKLS10ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vc3JjL2VsZmxpbnQgLS1nbnUgJGlucHV0Ci0rdGVzdHJ1bl9vbl9zZWxmX3NraXAgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLWdudSAkaW5wdXQKLSBlY2hvIGVsZnN0cm1lcmdlCi0gdGVzdHJ1biAke2Fic190b3BfYnVpbGRkaXJ9L3Rlc3RzL2VsZnN0cm1lcmdlIC1vICRtZXJnZWQgJGlucHV0Ci0gZWNobyBlbGZsaW50ICRtZXJnZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9rZnJlZWJzZF9wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTA4NWQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGIvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS90ZXN0cy9ydW4tbmF0aXZlLXRlc3Quc2gKLSsrKyBiL3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotQEAgLTc3LDYgKzc3LDEyIEBAIG5hdGl2ZV90ZXN0KCkKLSAgIHRlc3QgJG5hdGl2ZSAtZXEgMCB8fCB0ZXN0cnVuICIkQCIgLXAgJG5hdGl2ZSA+IC9kZXYvbnVsbAotIH0KLSAKLSsjIE9uIHRoZSBEZWJpYW4gYnVpbGRkcywgR05VL2tGcmVlQlNEIGxpbnByb2NmcyAvcHJvYy8kUElEL21hcHMgZG9lcwotKyMgbm90IGdpdmUgYWJzb2x1dGUgcGF0aHMgZHVlIHRvIHNidWlsZCdzIGJpbmQgbW91bnRzIChidWcgIzU3MDgwNSkKLSsjIHRoZXJlZm9yZSB0aGUgbmV4dCB0d28gdGVzdCBwcm9ncmFtcyBhcmUgZXhwZWN0ZWQgdG8gZmFpbCB3aXRoCi0rIyAiY2Fubm90IGF0dGFjaCB0byBwcm9jZXNzOiBGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLgotK1sgIiQodW5hbWUpIiA9ICJHTlUva0ZyZWVCU0QiIF0gJiYgZXhpdCA3NwotKwotIG5hdGl2ZV90ZXN0ICR7YWJzX2J1aWxkZGlyfS9hbGxyZWdzCi0gbmF0aXZlX3Rlc3QgJHthYnNfYnVpbGRkaXJ9L2Z1bmNyZXR2YWwKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZTc2ZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw2ODYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX2luaXQuYwotQEAgLTAsMCArMSw1OSBAQAotKy8qIEluaXRpYWxpemF0aW9uIG9mIG1pcHMgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgotKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNkZWZpbmUgQkFDS0VORAkJbWlwc18KLSsjZGVmaW5lIFJFTE9DX1BSRUZJWAlSX01JUFNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLSsvKiBUaGlzIGRlZmluZXMgdGhlIGNvbW1vbiByZWxvYyBob29rcyBiYXNlZCBvbiBtaXBzX3JlbG9jLmRlZi4gICovCi0rI2luY2x1ZGUgImNvbW1vbi1yZWxvYy5jIgotKwotK2NvbnN0IGNoYXIgKgotK21pcHNfaW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotKyAgICAgR0VsZl9IYWxmIG1hY2hpbmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotKyAgICAgRWJsICplaCwKLSsgICAgIHNpemVfdCBlaGxlbikKLSt7Ci0rICAvKiBDaGVjayB3aGV0aGVyIHRoZSBFbGZfQkggb2JqZWN0IGhhcyBhIHN1ZmZpY2VudCBzaXplLiAgKi8KLSsgIGlmIChlaGxlbiA8IHNpemVvZiAoRWJsKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAvKiBXZSBoYW5kbGUgaXQuICAqLwotKyAgaWYgKG1hY2hpbmUgPT0gRU1fTUlQUykKLSsgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBiaWctZW5kaWFuIjsKLSsgIGVsc2UgaWYgKG1hY2hpbmUgPT0gRU1fTUlQU19SUzNfTEUpCi0rICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgbGl0dGxlLWVuZGlhbiI7Ci0rCi0rICBtaXBzX2luaXRfcmVsb2MgKGVoKTsKLSsgIEhPT0sgKGVoLCByZWxvY19zaW1wbGVfdHlwZSk7Ci0rICBIT09LIChlaCwgcmV0dXJuX3ZhbHVlX2xvY2F0aW9uKTsKLSsgIEhPT0sgKGVoLCByZWdpc3Rlcl9pbmZvKTsKLSsKLSsgIHJldHVybiBNT0RWRVJTSU9OOwotK30KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfcmVncy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYwotQEAgLTAsMCArMSwxMDQgQEAKLSsvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgTUlQUyBEV0FSRi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5EIG1pcHNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLStzc2l6ZV90Ci0rbWlwc19yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLSsJCSAgICBpbnQgcmVnbm8sIGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAotKwkJICAgIGNvbnN0IGNoYXIgKipwcmVmaXgsIGNvbnN0IGNoYXIgKipzZXRuYW1lLAotKwkJICAgIGludCAqYml0cywgaW50ICp0eXBlKQotK3sKLSsgIGlmIChuYW1lID09IE5VTEwpCi0rICAgIHJldHVybiA2NjsKLSsKLSsgIGlmIChyZWdubyA8IDAgfHwgcmVnbm8gPiA2NSB8fCBuYW1lbGVuIDwgNCkKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgKnByZWZpeCA9ICIkIjsKLSsKLSsgIGlmIChyZWdubyA8IDMyKQotKyAgICB7Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgbmFtZVswXSA9IHJlZ25vICsgJzAnOwotKyAgICAgICAgICBuYW1lbGVuID0gMTsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgICB7Ci0rICAgICAgICAgIG5hbWVbMF0gPSAocmVnbm8gLyAxMCkgKyAnMCc7Ci0rICAgICAgICAgIG5hbWVbMV0gPSAocmVnbm8gJSAxMCkgKyAnMCc7Ci0rICAgICAgICAgIG5hbWVsZW4gPSAyOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChyZWdubyA8IDY0KQotKyAgICB7Ci0rICAgICAgKnNldG5hbWUgPSAiRlBVIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIG5hbWVbMF0gPSAnZic7Ci0rICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKLSsJewotKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgKyAnMCc7Ci0rCSAgbmFtZWxlbiA9IDI7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBuYW1lWzFdID0gKHJlZ25vIC0gMzIpIC8gMTAgKyAnMCc7Ci0rCSAgbmFtZVsyXSA9IChyZWdubyAtIDMyKSAlIDEwICsgJzAnOwotKwkgIG5hbWVsZW4gPSAzOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJlZ25vID09IDY0KQotKyAgICB7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbmFtZVswXSA9ICdoJzsKLSsgICAgICBuYW1lWzFdID0gJ2knOwotKyAgICAgIG5hbWVsZW4gPSAyOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBuYW1lWzBdID0gJ2wnOwotKyAgICAgIG5hbWVbMV0gPSAnbyc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgIH0KLSsKLSsgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7Ci0rICByZXR1cm4gbmFtZWxlbjsKLSt9Ci1JbmRleDogYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKLUBAIC0wLDAgKzEsNzkgQEAKLSsvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBtaXBzLiAgLSotIEMgLSotCi0rICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsvKiAJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KLSsKLStSRUxPQ19UWVBFIChOT05FLCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMTYsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDMyLCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUwzMiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMjYsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEhJMTYsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChMTzE2LCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR1BSRUwxNiwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKExJVEVSQUwsICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1QxNiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoUEMxNiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKENBTEwxNiwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHUFJFTDMyLCAgICAgICAgICAgIDApCi0rCi0rUkVMT0NfVFlQRSAoU0hJRlQ1LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNISUZUNiwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICg2NCwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0RJU1AsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9QQUdFLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfT0ZTVCwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0hJMTYsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9MTzE2LCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChTVUIsICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSU5TRVJUX0EsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKElOU0VSVF9CLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChERUxFVEUsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSElHSEVSLCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEhJR0hFU1QsICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChDQUxMX0hJMTYsICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQ0FMTF9MTzE2LCAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNDTl9ESVNQLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUwxNiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQUREX0lNTUVESUFURSwgICAgICAwKQotK1JFTE9DX1RZUEUgKFBKVU1QLCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUxHT1QsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSkFMUiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMMzIsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUw2NCwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfR0QsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0xETSwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfSEkxNiwgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0xPMTYsICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0dPVFRQUkVMLCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTDMyLCAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUw2NCwgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMX0hJMTYsICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9MTzE2LCAgICAgMCkKLSsKLSsjZGVmaW5lIE5PX0NPUFlfUkVMT0MgMQotKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgMQotSW5kZXg6IGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotQEAgLTAsMCArMSwzMjEgQEAKLSsvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L21pcHMgQUJJLgotKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rI2luY2x1ZGUgPGVsZi5oPgotKwotKyNpbmNsdWRlICIuLi9saWJlYmwvbGliZWJsUC5oIgotKyNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIKLSsKLSsjZGVmaW5lIEJBQ0tFTkQgbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIFRoZSBBQkkgb2YgdGhlIGZpbGUuICBBbHNvIHNlZSBFRl9NSVBTX0FCSTIgYWJvdmUuICovCi0rI2RlZmluZSBFRl9NSVBTX0FCSQkJMHgwMDAwRjAwMAotKwotKy8qIFRoZSBvcmlnaW5hbCBvMzIgYWJpLiAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9PMzIgICAgICAgICAgMHgwMDAwMTAwMAotKwotKy8qIE8zMiBleHRlbmRlZCB0byB3b3JrIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmVzICovCi0rI2RlZmluZSBFX01JUFNfQUJJX082NCAgICAgICAgICAweDAwMDAyMDAwCi0rCi0rLyogRUFCSSBpbiAzMiBiaXQgbW9kZSAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJMzIgICAgICAgMHgwMDAwMzAwMAotKwotKy8qIEVBQkkgaW4gNjQgYml0IG1vZGUgKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfRUFCSTY0ICAgICAgIDB4MDAwMDQwMDAKLSsKLSsvKiBBbGwgdGhlIHBvc3NpYmxlIE1JUFMgQUJJcy4gKi8KLStlbnVtIG1pcHNfYWJpCi0rICB7Ci0rICAgIE1JUFNfQUJJX1VOS05PV04gPSAwLAotKyAgICBNSVBTX0FCSV9OMzIsCi0rICAgIE1JUFNfQUJJX08zMiwKLSsgICAgTUlQU19BQklfTjY0LAotKyAgICBNSVBTX0FCSV9PNjQsCi0rICAgIE1JUFNfQUJJX0VBQkkzMiwKLSsgICAgTUlQU19BQklfRUFCSTY0LAotKyAgICBNSVBTX0FCSV9MQVNUCi0rICB9OwotKwotKy8qIEZpbmQgdGhlIG1pcHMgQUJJIG9mIHRoZSBjdXJyZW50IGZpbGUgKi8KLStlbnVtIG1pcHNfYWJpIGZpbmRfbWlwc19hYmkoRWxmICplbGYpCi0rewotKyAgR0VsZl9FaGRyIGVoZHJfbWVtOwotKyAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7Ci0rCi0rICBpZiAoZWhkciA9PSBOVUxMKQotKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgIEdFbGZfV29yZCBlbGZfZmxhZ3MgPSBlaGRyLT5lX2ZsYWdzOwotKwotKyAgLyogQ2hlY2sgZWxmX2ZsYWdzIHRvIHNlZSBpZiBpdCBzcGVjaWZpZXMgdGhlIEFCSSBiZWluZyB1c2VkLiAgKi8KLSsgIHN3aXRjaCAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJKSkKLSsgICAgewotKyAgICBjYXNlIEVfTUlQU19BQklfTzMyOgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9PNjQ6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKLSsgICAgY2FzZSBFX01JUFNfQUJJX0VBQkkzMjoKLSsgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOwotKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTY0OgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgaWYgKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSTIpKQotKwlyZXR1cm4gTUlQU19BQklfTjMyOwotKyAgICB9Ci0rCi0rICAvKiBHQ0MgY3JlYXRlcyBhIHBzZXVkby1zZWN0aW9uIHdob3NlIG5hbWUgZGVzY3JpYmVzIHRoZSBBQkkuICAqLwotKyAgc2l6ZV90IHNoc3RybmR4OwotKyAgaWYgKGVsZl9nZXRzaGRyc3RybmR4IChlbGYsICZzaHN0cm5keCkgPCAwKQotKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBFbGZfU2NuICpzY24gPSBOVUxMOwotKyAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOwotKyAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOwotKyAgICAgIGlmIChzaGRyID09IE5VTEwpCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgICAgICBuYW1lID0gZWxmX3N0cnB0ciAoZWxmLCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSkgPzogIiI7Ci0rICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICIubWRlYnVnLiIsIDgpICE9IDApCi0rICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmkzMiIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTzMyOwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTjMyIikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9OMzI7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmk2NCIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTjY0OwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTzY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpMzIiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmk2NCIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OwotKyAgICAgIGVsc2UKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKLSt9Ci0rCi0rdW5zaWduZWQgaW50Ci0rbWlwc19hYmlfcmVnc2l6ZSAoZW51bSBtaXBzX2FiaSBhYmkpCi0rewotKyAgc3dpdGNoIChhYmkpCi0rICAgIHsKLSsgICAgY2FzZSBNSVBTX0FCSV9FQUJJMzI6Ci0rICAgIGNhc2UgTUlQU19BQklfTzMyOgotKyAgICAgIHJldHVybiA0OwotKyAgICBjYXNlIE1JUFNfQUJJX04zMjoKLSsgICAgY2FzZSBNSVBTX0FCSV9ONjQ6Ci0rICAgIGNhc2UgTUlQU19BQklfTzY0OgotKyAgICBjYXNlIE1JUFNfQUJJX0VBQkk2NDoKLSsgICAgICByZXR1cm4gODsKLSsgICAgY2FzZSBNSVBTX0FCSV9VTktOT1dOOgotKyAgICBjYXNlIE1JUFNfQUJJX0xBU1Q6Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSt9Ci0rCi0rCi0rLyogJHYwIG9yIHBhaXIgJHYwLCAkdjEgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ19vMzJbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsKLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19pbnRyZWcJMQotKyNkZWZpbmUgbmxvY19pbnRyZWdwYWlyCTQKLSsKLSsvKiAkZjAgKGZsb2F0KSwgb3IgcGFpciAkZjAsICRmMSAoZG91YmxlKS4KLSsgKiBmMi9mMyBhcmUgdXNlZCBmb3IgQ09NUExFWCAoPSAyIGRvdWJsZXMpIHJldHVybnMgaW4gRm9ydHJhbiAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdfbzMyW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM1IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgIH07Ci0rCi0rLyogJGYwLCBvciBwYWlyICRmMCwgJGYyLiAgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19mcHJlZyAgMQotKyNkZWZpbmUgbmxvY19mcHJlZ3BhaXIgNAotKyNkZWZpbmUgbmxvY19mcHJlZ3F1YWQgOAotKwotKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQotKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKLSsgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluICR2MC4gICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9icmVnMiwgLm51bWJlciA9IDAgfQotKyAgfTsKLSsjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKLSsKLStpbnQKLSttaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3sKLSsgIC8qIEZpcnN0IGZpbmQgdGhlIEFCSSB1c2VkIGJ5IHRoZSBlbGYgb2JqZWN0ICovCi0rICBlbnVtIG1pcHNfYWJpIGFiaSA9IGZpbmRfbWlwc19hYmkoZnVuY3R5cGVkaWUtPmN1LT5kYmctPmVsZik7Ci0rCi0rICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIEFCSSAqLwotKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9MQVNUKQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICAvKiBXZSBjb3VsZG4ndCBpZGVudGlmeSB0aGUgQUJJLCBidXQgdGhlIGZpbGUgc2VlbXMgdmFsaWQgKi8KLSsgIGlmIChhYmkgPT0gTUlQU19BQklfVU5LTk9XTikKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgLyogQ2FuJ3QgaGFuZGxlIEVBQkkgdmFyaWFudHMgKi8KLSsgIGlmICgoYWJpID09IE1JUFNfQUJJX0VBQkkzMikgfHwgKGFiaSA9PSBNSVBTX0FCSV9FQUJJNjQpKQotKyAgICByZXR1cm4gLTI7Ci0rCi0rICB1bnNpZ25lZCBpbnQgcmVnc2l6ZSA9IG1pcHNfYWJpX3JlZ3NpemUgKGFiaSk7Ci0rICBpZiAoIXJlZ3NpemUpCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCi0rICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLSsKLSsgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKLSsgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKLSsgIGlmIChhdHRyID09IE5VTEwpCi0rICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLwotKyAgICByZXR1cm4gMDsKLSsKLSsgIER3YXJmX0RpZSBkaWVfbWVtOwotKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSsgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotKwotKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLwotKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgotKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQotKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQotKyAgICB7Ci0rICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rICAgIH0KLSsKLSsgIHN3aXRjaCAodGFnKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0rICAgICAgcmV0dXJuIC0xOwotKwotKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgotKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQotKwl7Ci0rCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCX0KLSsgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKwotKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgotKyAgICAgIHsKLSsgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKLSsJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKLSsJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKLSsJICB7Ci0rCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCi0rCSAgICAgIHNpemUgPSByZWdzaXplOwotKwkgICAgZWxzZQotKwkgICAgICByZXR1cm4gLTE7Ci0rCSAgfQotKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCi0rCSAgewotKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKLSsJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKLSsJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQotKwkgICAgICByZXR1cm4gLTE7Ci0rCi0rI2RlZmluZSBBQklfTE9DKGxvYywgcmVnc2l6ZSkgKChyZWdzaXplKSA9PSA0ID8gKGxvYyAjIyBfbzMyKSA6IChsb2MpKQotKwotKwkgICAgaWYgKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkKLSsJICAgICAgewotKwkJKmxvY3AgPSBBQklfTE9DKGxvY19mcHJlZywgcmVnc2l6ZSk7Ci0rCQlpZiAoc2l6ZSA8PSByZWdzaXplKQotKwkJICAgIHJldHVybiBubG9jX2ZwcmVnOwotKwotKwkJaWYgKHNpemUgPD0gMipyZWdzaXplKQotKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjsKLSsKLSsJCWlmIChzaXplIDw9IDQqcmVnc2l6ZSAmJiBhYmkgPT0gTUlQU19BQklfTzMyKQotKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncXVhZDsKLSsKLSsJCWdvdG8gYWdncmVnYXRlOwotKwkgICAgICB9Ci0rCSAgfQotKwkqbG9jcCA9IEFCSV9MT0MobG9jX2ludHJlZywgcmVnc2l6ZSk7Ci0rCWlmIChzaXplIDw9IHJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVnOwotKwlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSsKLSsJLyogRWxzZSBmYWxsIHRocm91Z2guIFNob3VsZG4ndCBoYXBwZW4gdGhvdWdoIChhdCBsZWFzdCB3aXRoIGdjYykgKi8KLSsgICAgICB9Ci0rCi0rICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotKyAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgotKyAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgotKyAgICBhZ2dyZWdhdGU6Ci0rICAgICAgLyogWFhYIFRPRE86IENhbid0IGhhbmRsZSBzdHJ1Y3R1cmUgcmV0dXJuIHdpdGggb3RoZXIgQUJJJ3MgeWV0IDotLyAqLwotKyAgICAgIGlmICgoYWJpICE9IE1JUFNfQUJJX08zMikgJiYgKGFiaSAhPSBNSVBTX0FCSV9PNjQpKQotKyAgICAgICAgcmV0dXJuIC0yOwotKwotKyAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKLSsgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7Ci0rICAgIH0KLSsKLSsgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KLSsgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAotKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KLSsgIHJldHVybiAtMjsKLSt9Ci1JbmRleDogYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCi1AQCAtMCwwICsxLDUyIEBACi0rLyogTUlQUyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsgICBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LCAyMDAyLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLSsvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCi0rRWxmX1R5cGUKLSttaXBzX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQotK3sKLSsgIHN3aXRjaCAodHlwZSkKLSsgICAgewotKyAgICBjYXNlIFJfTUlQU18xNjoKLSsgICAgICByZXR1cm4gRUxGX1RfSEFMRjsKLSsgICAgY2FzZSBSX01JUFNfMzI6Ci0rICAgICAgcmV0dXJuIEVMRl9UX1dPUkQ7Ci0rICAgIGNhc2UgUl9NSVBTXzY0OgotKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gRUxGX1RfTlVNOwotKyAgICB9Ci0rfQotSW5kZXg6IGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi0rKysgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotQEAgLTcxLDYgKzcxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMsIDAsIDAgfSwKLSAgIHsgInNwYXJjIiwgImVsZl9zcGFyY3Y4cGx1cyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDMzJQTFVTLCAwLCAwIH0sCi0gICB7ICJzMzkwIiwgImVibF9zMzkwIiwgInMzOTAiLCA0LCBFTV9TMzkwLCAwLCAwIH0sCi0rICB7ICJtaXBzIiwgImVsZl9taXBzIiwgIm1pcHMiLCA0LCBFTV9NSVBTLCAwLCAwIH0sCi0rICB7ICJtaXBzIiwgImVsZl9taXBzZWwiLCAibWlwc2VsIiwgNCwgRU1fTUlQU19SUzNfTEUsIDAsIDAgfSwKLSAKLSAgIHsgIm0zMiIsICJlbGZfbTMyIiwgIm0zMiIsIDMsIEVNX00zMiwgMCwgMCB9LAotICAgeyAibTY4ayIsICJlbGZfbTY4ayIsICJtNjhrIiwgNCwgRU1fNjhLLCBFTEZDTEFTUzMyLCBFTEZEQVRBMk1TQiB9LAotSW5kZXg6IGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCi0rKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTMzLDEyICszMywxMiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JCi0gCi0gCi0gbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAotLQkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MKLSsJICB0aWxlZ3ggbTY4ayBicGYgcGFyaXNjIG1pcHMKLSBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCi0gCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAotLQkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3BhcmlzY19waWMuYQotKwkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3BhcmlzY19waWMuYSBsaWJlYmxfbWlwc19waWMuYQotIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCi0gbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKLSAKLUBAIC0xMzIsNiArMTMyLDEwIEBAIHBhcmlzY19TUkNTID0gcGFyaXNjX2luaXQuYyBwYXJpc2Nfc3ltYm8KLSBsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQotIGFtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQotIAotK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYwotK2xpYmVibF9taXBzX3BpY19hX1NPVVJDRVMgPSAkKG1pcHNfU1JDUykKLSthbV9saWJlYmxfbWlwc19waWNfYV9PQkpFQ1RTID0gJChtaXBzX1NSQ1M6LmM9Lm9zKQotKwotIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpCi0gCUBybSAtZiAkKEA6LnNvPS5tYXApCi0gCSQoQU1fVl9hdCllY2hvICdFTEZVVElMU18kKFBBQ0tBR0VfVkVSU0lPTikgeyBnbG9iYWw6ICQqX2luaXQ7IGxvY2FsOiAqOyB9OycgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RmMzU3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLU9uIG1hbnkgYXJjaGl0ZWN0dXJlcyB0aGlzIHRlc3QgZmFpbHMgYmVjYXVzZSBiaW5hcmllcy9saWJzIHByb2R1Y2VkIGJ5Ci1iaW51dGlscyBkb24ndCBwYXNzIGVsZmxpbnQuIEhvd2V2ZXIgZWxmdXRpbHMgc2hvdWxkbid0IEZUQkZTIGJlY2F1c2Ugb2YgdGhpcy4KLQotU28gd2UgcnVuIHRoZSB0ZXN0cyBvbiBhbGwgYXJjaHMgdG8gc2VlIHdoYXQgYnJlYWtzLCBidXQgaWYgaXQgYnJlYWtzIHdlIGlnbm9yZQotdGhlIHJlc3VsdCAoZXhpdGNvZGUgNzcgbWVhbnM6IHRoaXMgdGVzdCB3YXMgc2tpcHBlZCkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogYi90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoCi0rKysgYi90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoCi1AQCAtMTgsNCArMTgsNCBAQAotIAotIC4gJHNyY2Rpci90ZXN0LXN1YnIuc2gKLSAKLS10ZXN0cnVuX29uX3NlbGYgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLXF1aWV0IC0tZ251LWxkCi0rdGVzdHJ1bl9vbl9zZWxmX3NraXAgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLXF1aWV0IC0tZ251LWxkCi1JbmRleDogYi90ZXN0cy90ZXN0LXN1YnIuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3Rlc3Qtc3Vici5zaAotKysrIGIvdGVzdHMvdGVzdC1zdWJyLnNoCi1AQCAtMTUyLDMgKzE1MiwxOCBAQCB0ZXN0cnVuX29uX3NlbGZfcXVpZXQoKQotICAgIyBPbmx5IGV4aXQgaWYgc29tZXRoaW5nIGZhaWxlZAotICAgaWYgdGVzdCAkZXhpdF9zdGF0dXMgIT0gMDsgdGhlbiBleGl0ICRleGl0X3N0YXR1czsgZmkKLSB9Ci0rCi0rIyBTYW1lIGFzIHRlc3RydW5fb25fc2VsZigpLCBidXQgc2tpcCBvbiBmYWlsdXJlLgotK3Rlc3RydW5fb25fc2VsZl9za2lwKCkKLSt7Ci0rICBleGl0X3N0YXR1cz0wCi0rCi0rICBmb3IgZmlsZSBpbiAkc2VsZl90ZXN0X2ZpbGVzOyBkbwotKyAgICAgIHRlc3RydW4gJCogJGZpbGUgXAotKwkgIHx8IHsgZWNobyAiKioqIGZhaWx1cmUgaW4gJCogJGZpbGUiOyBleGl0X3N0YXR1cz03NzsgfQotKyAgZG9uZQotKwotKyAgIyBPbmx5IGV4aXQgaWYgc29tZXRoaW5nIGZhaWxlZAotKyAgaWYgdGVzdCAkZXhpdF9zdGF0dXMgIT0gMDsgdGhlbiBleGl0ICRleGl0X3N0YXR1czsgZmkKLSt9Ci0rCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZpeGhlYWRlcmNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9maXhoZWFkZXJjaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlM2IyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRm9yIHNvbWUgYmluYXJpZXMgd2UgY2FuIGdldCBhIGludmFsaWQgc2VjdGlvbiBhbGlnbm1lbnQsIGZvciBleGFtcGxlIGlmIAotc2hfYWxpZ24gPSAxIGFuZCBzaF9hZGRyYWxpZ24gaXMgMC4gSW4gdGhlIGNhc2Ugb2YgYSB6ZXJvIHNpemUgc2VjdGlvbiBsaWtlIAotIi5ub3RlLkdOVS1zdGFjayIsIHRoaXMgaXMgaXJyZWxhdmVudCBhcyBmYXIgYXMgSSBjYW4gdGVsbCBhbmQgd2Ugc2hvdWxkbid0Ci1lcnJvciBpbiB0aGlzIGNhc2UuCi0KLVJQIDIwMTQvNi8xMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi0tLS0gYS9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi0rKysgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi1AQCAtMzM5LDggKzMzOSw4IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVudWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVfdCBzaG51bSkKLSAJCSAgICAgd2UgdGVzdCBmb3IgdGhlIGFsaWdubWVudCBvZiB0aGUgc2VjdGlvbiBiZWluZyBsYXJnZQotIAkJICAgICBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IGFsaWdubWVudCByZXF1aXJlZCBieSBhIGRhdGEKLSAJCSAgICAgYmxvY2suICAqLwotLQkJICBpZiAodW5saWtlbHkgKCEgcG93ZXJvZjIgKHNoZHItPnNoX2FkZHJhbGlnbikpCi0tCQkgICAgICB8fCB1bmxpa2VseSAoKHNoZHItPnNoX2FkZHJhbGlnbiA/OiAxKSA8IHNoX2FsaWduKSkKLSsJCSAgaWYgKHNoZHItPnNoX3NpemUgJiYgKHVubGlrZWx5ICghIHBvd2Vyb2YyIChzaGRyLT5zaF9hZGRyYWxpZ24pKQotKwkJICAgICAgfHwgdW5saWtlbHkgKChzaGRyLT5zaF9hZGRyYWxpZ24gPzogMSkgPCBzaF9hbGlnbikpKQotIAkJICAgIHsKLSAJCSAgICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9JTlZBTElEX0FMSUdOKTsKLSAJCSAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvc2hhZG93LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9zaGFkb3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMTk2MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9zaGFkb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1GaXggY29udHJvbCBwYXRoIHdoZXJlIHdlIGhhdmUgc3RyIGFzIHVuaW5pdGlhbGl6ZWQgc3RyaW5nCi0KLXwgL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6IEluIGZ1bmN0aW9uICdpMzg2X2Rpc2FzbSc6Ci18IC9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOjMxMDo1OiBlcnJvcjogJ3N0cicgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgICAgbWVtY3B5IChidWYgKyBidWZjbnQsIF9zdHIsIF9sZW4pOyAgICAgICAgICAgXAotfCAgICAgIF4KLXwgL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6NzA5OjE3OiBub3RlOiAnc3RyJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICAgIGNvbnN0IGNoYXIgKnN0cjsKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJjcHUvaTM4Nl9kaXNhc20uYwotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1AQCAtODIxLDYgKzgyMSw3IEBAIGkzODZfZGlzYXNtIChjb25zdCB1aW50OF90ICoqc3RhcnRwLCBjb24KLSAJCQkgICAgfQotIAotIAkJCWRlZmF1bHQ6Ci0rCQkJICBzdHIgPSAiIjsKLSAJCQkgIGFzc2VydCAoISAiSU5WQUxJRCBub3QgaGFuZGxlZCIpOwotIAkJCX0KLSAJCSAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjFlODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy9GaXhfZWxmX2N2dF9ndW5oYXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRml4IGVsZl9jdnRfZ3VuaGFzaCBpZiBkZXN0IGFuZCBzcmMgYXJlIHNhbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGUgJ2Rlc3QnIGFuZCAnc3JjJyBjYW4gYmUgc2FtZSwgd2UgbmVlZCB0byBzYXZlIHRoZSB2YWx1ZSBvZiBzcmMzMlsyXQotYmVmb3JlIHN3YXBpbmcgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8QmFvU2hhbi5QYW5nQHdpbmRyaXZlci5jb20+Ci1kaWZmIC0tZ2l0IGEvbGliZWxmL2dudWhhc2hfeGxhdGUuaCBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKLWluZGV4IDZmYWYxMTMuLjA0ZDljYTEgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oCi0rKysgYi9saWJlbGYvZ251aGFzaF94bGF0ZS5oCi1AQCAtNDAsNiArNDAsNyBAQCBlbGZfY3Z0X2dudWhhc2ggKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgaW50IGVuY29kZSkKLSAgICAgIHdvcmRzLiAgV2UgbXVzdCBkZXRhbmdsZSB0aGVtIGhlcmUuICAgKi8KLSAgIEVsZjMyX1dvcmQgKmRlc3QzMiA9IGRlc3Q7Ci0gICBjb25zdCBFbGYzMl9Xb3JkICpzcmMzMiA9IHNyYzsKLSsgIEVsZjMyX1dvcmQgc2F2ZV9zcmMzMl8yID0gc3JjMzJbMl07IC8vIGRlc3QgY291bGQgYmUgZXF1YWwgdG8gc3JjCi0gCi0gICAvKiBGaXJzdCBmb3VyIGNvbnRyb2wgd29yZHMsIDMyIGJpdHMuICAqLwotICAgZm9yICh1bnNpZ25lZCBpbnQgY250ID0gMDsgY250IDwgNDsgKytjbnQpCi1AQCAtNTAsNyArNTEsNyBAQCBlbGZfY3Z0X2dudWhhc2ggKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgaW50IGVuY29kZSkKLSAgICAgICBsZW4gLT0gNDsKLSAgICAgfQotIAotLSAgRWxmMzJfV29yZCBiaXRtYXNrX3dvcmRzID0gZW5jb2RlID8gc3JjMzJbMl0gOiBkZXN0MzJbMl07Ci0rICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzYXZlX3NyYzMyXzIgOiBkZXN0MzJbMl07Ci0gCi0gICAvKiBOb3cgdGhlIDY0IGJpdCB3b3Jkcy4gICovCi0gICBFbGY2NF9Yd29yZCAqZGVzdDY0ID0gKEVsZjY0X1h3b3JkICopICZkZXN0MzJbNF07CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzL2Rzby1saW5rLWNoYW5nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvZHNvLWxpbmstY2hhbmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGNkM2VkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvZHNvLWxpbmstY2hhbmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbGluayB0byB0aGUgZGVwZW5kZW5jaWVzIG9mIGxpYmR3IGV4cGxpY2l0LCBhcyByZWNlbnQKLSMgbGQgbm8gbG9uZ2VyIGltcGxpY2l0bHkgbGlua3MgdGhlbS4gU2VlCi0jIGh0dHA6Ly9saXN0cy5mZWRvcmFwcm9qZWN0Lm9yZy9waXBlcm1haWwvZGV2ZWwvMjAxMC1NYXJjaC8xMzM2MDEuaHRtbCBhcwotIyBhIHNpbWlsYXIgZXhhbXBsZSBvZiB0aGUgZXJyb3IgbWVzc2FnZSB5b3UgY2FuIGVuY291bnRlciB3aXRob3V0IHRoaXMgcGF0Y2gsCi0jIGFuZCBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvVW5kZXJzdGFuZGluZ0RTT0xpbmtDaGFuZ2UgYW5kCi0jIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWF0dXJlcy9DaGFuZ2VJbkltcGxpY2l0RFNPTGlua2luZyBmb3IgbW9yZQotIyBkZXRhaWxzLgotCi0tLS0gZWxmdXRpbHMtMC4xNDgub3JpZy9zcmMvTWFrZWZpbGUuYW0KLSsrKyBlbGZ1dGlscy0wLjE0OC9zcmMvTWFrZWZpbGUuYW0KLUBAIC04Niw3ICs4Niw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAkKHppcF9MSUJTKSAkKGwKLSBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEKLSBlbHNlCi0gbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbwotLWxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KLStsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAotIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KLSBlbmRpZgotIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYQotLS0tIGVsZnV0aWxzLTAuMTQ4Lm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBlbGZ1dGlscy0wLjE0OC90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTE3Miw3ICsxNzIsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgJCh6aXBfTElCUykgJChsCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hCi0gbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCi0gZWxzZQotLWxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KLStsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAotIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KLSBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCi0gZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTc3Y2UwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICIoR1BMdjMgJiBFbGZ1dGlscy1FeGNlcHRpb24pIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1ERVBFTkRTID0gImxpYnRvb2wgYnppcDIgemxpYiB2aXJ0dWFsL2xpYmludGwiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgIgotU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjUyYWRmYTQwNzU4ZDBkMzllNWQ1YzU3Njg5YmYzOGQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OGQwNzg5M2JhMTM3M2M3ZGQ2OWE3ODU1OTc0NzA2ZDA1Mzc3NzY2NTY4YTdkOTAwMjcwNmQ1ZGU3MmMyNzYiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovL2Rzby1saW5rLWNoYW5nZS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9GaXhfZWxmX2N2dF9ndW5oYXNoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2ZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9hYXJjaDY0X3Vpby5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9GaXhfb25lX0dDQzdfd2FybmluZy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9zaGFkb3cucGF0Y2ggXAotIgotCi0jIHBpY2sgdGhlIHBhdGNoIGZyb20gZGViaWFuCi0jIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjgtMC4yLmRlYmlhbi50YXIueHoKLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgXAotIgotIyBGaXggdGhlIHBhdGNoZXMgZnJvbSBEZWJpYW4gd2l0aCBHQ0M3Ci1TUkNfVVJJICs9ICJmaWxlOi8vZmFsbHRocm91Z2gucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggIgotCi0jIFRoZSBidWlsZHN5c3RlbSB3YW50cyB0byBnZW5lcmF0ZSAyIC5oIGZpbGVzIGZyb20gc291cmNlIHVzaW5nIGEgYmluYXJ5IGl0IGp1c3QgYnVpbHQsCi0jIHdoaWNoIGNhbiBub3QgcGFzcyB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyBsZXQncyB3b3JrIGFyb3VuZCBpdCBieSBhZGRpbmcgMiAuaCBmaWxlcwotIyBhbG9uZyB3aXRoIHRoZSBkb19jb25maWd1cmVfcHJlcGVuZCgpCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1iemxpYiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0tZW5hYmxlLXVjbGliYyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KLQkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCi0JZmkKLX0KLQotIyB3ZSBjYW4gbm90IGJ1aWxkIGNvbXBsZXRlIGVsZnV0aWxzIHdoZW4gdXNpbmcgdWNsaWJjCi0jIGJ1dCBzb21lIHJlY2lwZXMgZS5nLiBnY2MgNC41IGRlcGVuZHMgb24gbGliZWxmIHNvIHdlCi0jIGJ1aWxkIG9ubHkgbGliZWxmIGZvciB1Y2xpYmMgY2FzZQotCi1FWFRSQV9PRU1BS0VfbGliYy11Y2xpYmMgPSAiLUMgbGliZWxmIgotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotQUxMT1dfRU1QVFlfJHtQTn1fbGliYy1tdXNsID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5Ci1QQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKLUZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKLSAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKLSAgICAke2JpbmRpcn0vZXUtbGQgXAotICAgICR7YmluZGlyfS9ldS1ubSBcCi0gICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAotICAgICR7YmluZGlyfS9ldS1zaXplIFwKLSAgICAke2JpbmRpcn0vZXUtc3RyaXAiCi0KLUZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKLUZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKLUZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCi0jIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQotIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCi0jRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCi0jRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCi0KLSMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjgxZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgpAQCAtMCwwICsxLDc5IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICIoR1BMdjMgJiBFbGZ1dGlscy1FeGNlcHRpb24pIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gImxpYnRvb2wgYnppcDIgemxpYiB2aXJ0dWFsL2xpYmludGwiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgIgorU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjAzNTk5YWVlOThjOWI3MjZjN2E3MzJhMmRkMDI0NWQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmODQ0Nzc1NTc2Yjc5YmRjOWY5YzcxN2E1MDA1OGQwODYyMDMyM2MxZTkzNTQ1ODIyM2ExMmYyNDljOWUwNjYiCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgorCisjIFBpY2sgcGF0Y2hlcyBmcm9tIGRlYmlhbgorIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LTAuMi5kZWJpYW4udGFyLnh6CitTUkNfVVJJICs9ICJcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAorICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAorICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKKyIKKyMgRml4IHRoZSBwYXRjaGVzIGZyb20gRGViaWFuIHdpdGggR0NDNworU1JDX1VSSSArPSAiZmlsZTovL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaCIKKworIyBUaGUgYnVpbGRzeXN0ZW0gd2FudHMgdG8gZ2VuZXJhdGUgMiAuaCBmaWxlcyBmcm9tIHNvdXJjZSB1c2luZyBhIGJpbmFyeSBpdCBqdXN0IGJ1aWx0LAorIyB3aGljaCBjYW4gbm90IHBhc3MgdGhlIGNyb3NzIGNvbXBpbGluZywgc28gbGV0J3Mgd29yayBhcm91bmQgaXQgYnkgYWRkaW5nIDIgLmggZmlsZXMKKyMgYWxvbmcgd2l0aCB0aGUgZG9fY29uZmlndXJlX3ByZXBlbmQoKQorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CisKK0VYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLXdpdGhvdXQtbHptYSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtYnpsaWIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdICYmIFsgLXogYGVjaG8gIiR7VEFSR0VUX0FSQ0h9InxncmVwICdpLjg2J2AgXTt0aGVuCisJCXJtIC1mICR7RH0ke2JpbmRpcn0vZXUtb2JqZHVtcAorCWZpCit9CisKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK0FMTE9XX0VNUFRZXyR7UE59X2xpYmMtbXVzbCA9ICIxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQorUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCitGSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCisgICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCisgICAgJHtiaW5kaXJ9L2V1LWxkIFwKKyAgICAke2JpbmRpcn0vZXUtbm0gXAorICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKKyAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCisgICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgorCitGSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCitGSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCitGSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgorIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKKyMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgorI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgorI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgorCisjIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjNTdmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSAwYTY5YTI2YzlmNzQ4N2RhY2E5MDBkYjg3Y2QxMTk1ODU3YTQ2MDNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxMDo1NyArMDgwMAorU3ViamVjdDogW1BBVENIIDEvN10gZHNvIGxpbmsgY2hhbmdlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitUaGlzIHBhdGNoIG1ha2VzIHRoZSBsaW5rIHRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgbGliZHcgZXhwbGljaXQsIGFzCityZWNlbnQgbGQgbm8gbG9uZ2VyIGltcGxpY2l0bHkgbGlua3MgdGhlbS4gU2VlCitodHRwOi8vbGlzdHMuZmVkb3JhcHJvamVjdC5vcmcvcGlwZXJtYWlsL2RldmVsLzIwMTAtTWFyY2gvMTMzNjAxLmh0bWwKK2FzIGEgc2ltaWxhciBleGFtcGxlIG9mIHRoZSBlcnJvciBtZXNzYWdlIHlvdSBjYW4gZW5jb3VudGVyIHdpdGhvdXQgdGhpcworcGF0Y2gsIGFuZCBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvVW5kZXJzdGFuZGluZ0RTT0xpbmtDaGFuZ2UgYW5kCitodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVhdHVyZXMvQ2hhbmdlSW5JbXBsaWNpdERTT0xpbmtpbmcgZm9yCittb3JlIGRldGFpbHMuCisKK1JlYmFzZSB0byAwLjE3MAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gICB8IDIgKy0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMmIxYzBkYy4uOTMwNWI4NCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNDQsNyArNDQsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKKyBlbHNlCisgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbworLWxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KKytsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KKyBlbmRpZgorIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYQorZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDM3MzUwODQuLjUyODYxNWQgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC00MDAsNyArNDAwLDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKKyBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEgLWx6CisgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCisgZWxzZQorLWxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KKytsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KKyBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCisgZW5kaWYKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjBiMDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDc2NzJlMzYzNDY4MjcxYjRjNjNmZjU4NzcwYzVhYWMxNWFiOGY3MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDIyOjMwOjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmFzbSBtYXkgbGluayB3aXRoIGxpYmJ6MiBpZiBmb3VuZAorCitUaGlzIGNhbiBmYWlsIHRvIGxpbmsgYmluYXJpZXMgbGlrZSBvYmpkdW1wCit3aGVyZSBpbmRpcmVjdCBsaWJyYXJpZXMgbWF5IGJlIG5vdCBmb3VuZCBieSBsaW5rZXIKKworfCAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvcmlzY3Y2NC1iZWMtbGludXgvZWxmdXRpbHMvMC4xNzAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJiejIuc28uMTogZXJyb3IgYWRkaW5nIHN5bWJvbHM6IERTTyBtaXNzaW5nIGZyb20gY29tbWFuZCBsaW5lCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9NYWtlZmlsZS5hbSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZTAzYmMzMi4uOWI3ZTg1MyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMzksMTEgKzM5LDExIEBAIEVYVFJBX0RJU1QgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlLmluCisgQ0xFQU5GSUxFUyArPSBtYWtlLWRlYnVnLWFyY2hpdmUKKyAKKyBpZiBCVUlMRF9TVEFUSUMKKy1saWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKKytsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEgJCh6aXBfTElCUykKKyBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKKyBlbHNlCistbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbworK2xpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28gJCh6aXBfTElCUykKKyBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KKyBlbmRpZgorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNzE4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBlOTg2NzBmN2M3YjRjNzNmYjY1NTM0OTQ5NzE2ZmQ4ZDA0Mzk2MGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxMzo1OSArMDgwMAorU3ViamVjdDogW1BBVENIIDIvN10gRml4IGVsZl9jdnRfZ3VuaGFzaCBpZiBkZXN0IGFuZCBzcmMgYXJlIHNhbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitUaGUgJ2Rlc3QnIGFuZCAnc3JjJyBjYW4gYmUgc2FtZSwgd2UgbmVlZCB0byBzYXZlIHRoZSB2YWx1ZSBvZiBzcmMzMlsyXQorYmVmb3JlIHN3YXBpbmcgaXQuCisKK1NpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8QmFvU2hhbi5QYW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAwLjE3MAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliZWxmL2dudWhhc2hfeGxhdGUuaCB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZWxmL2dudWhhc2hfeGxhdGUuaCBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKK2luZGV4IDZmYWYxMTMuLjA0ZDljYTEgMTAwNjQ0CistLS0gYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oCisrKysgYi9saWJlbGYvZ251aGFzaF94bGF0ZS5oCitAQCAtNDAsNiArNDAsNyBAQCBlbGZfY3Z0X2dudWhhc2ggKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgaW50IGVuY29kZSkKKyAgICAgIHdvcmRzLiAgV2UgbXVzdCBkZXRhbmdsZSB0aGVtIGhlcmUuICAgKi8KKyAgIEVsZjMyX1dvcmQgKmRlc3QzMiA9IGRlc3Q7CisgICBjb25zdCBFbGYzMl9Xb3JkICpzcmMzMiA9IHNyYzsKKysgIEVsZjMyX1dvcmQgc2F2ZV9zcmMzMl8yID0gc3JjMzJbMl07IC8vIGRlc3QgY291bGQgYmUgZXF1YWwgdG8gc3JjCisgCisgICAvKiBGaXJzdCBmb3VyIGNvbnRyb2wgd29yZHMsIDMyIGJpdHMuICAqLworICAgZm9yICh1bnNpZ25lZCBpbnQgY250ID0gMDsgY250IDwgNDsgKytjbnQpCitAQCAtNTAsNyArNTEsNyBAQCBlbGZfY3Z0X2dudWhhc2ggKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgaW50IGVuY29kZSkKKyAgICAgICBsZW4gLT0gNDsKKyAgICAgfQorIAorLSAgRWxmMzJfV29yZCBiaXRtYXNrX3dvcmRzID0gZW5jb2RlID8gc3JjMzJbMl0gOiBkZXN0MzJbMl07CisrICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzYXZlX3NyYzMyXzIgOiBkZXN0MzJbMl07CisgCisgICAvKiBOb3cgdGhlIDY0IGJpdCB3b3Jkcy4gICovCisgICBFbGY2NF9Yd29yZCAqZGVzdDY0ID0gKEVsZjY0X1h3b3JkICopICZkZXN0MzJbNF07CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDlmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA1NjVkNTkzNWFiZjViNTg3NzNmOWM4Mzg1YzAwMTg5MjIxOTgwZDk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxNzoyMCArMDgwMAorU3ViamVjdDogW1BBVENIIDMvN10gZml4aGVhZGVyY2hlY2sKKworRm9yIHNvbWUgYmluYXJpZXMgd2UgY2FuIGdldCBhIGludmFsaWQgc2VjdGlvbiBhbGlnbm1lbnQsIGZvciBleGFtcGxlIGlmCitzaF9hbGlnbiA9IDEgYW5kIHNoX2FkZHJhbGlnbiBpcyAwLiBJbiB0aGUgY2FzZSBvZiBhIHplcm8gc2l6ZSBzZWN0aW9uCitsaWtlCisiLm5vdGUuR05VLXN0YWNrIiwgdGhpcyBpcyBpcnJlbGF2ZW50IGFzIGZhciBhcyBJIGNhbiB0ZWxsIGFuZCB3ZQorc2hvdWxkbid0CitlcnJvciBpbiB0aGlzIGNhc2UuCisKK1JQIDIwMTQvNi8xMQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitpbmRleCBkODNjMGIzLi5hNTFiZjcwIDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworQEAgLTMzOSw4ICszMzksOCBAQCBfX2VsZncyKExJQkVMRkJJVFMsdXBkYXRlbnVsbF93cmxvY2spIChFbGYgKmVsZiwgaW50ICpjaGFuZ2VfYm9wLCBzaXplX3Qgc2hudW0pCisgCQkgICAgIHdlIHRlc3QgZm9yIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHNlY3Rpb24gYmVpbmcgbGFyZ2UKKyAJCSAgICAgZW5vdWdoIGZvciB0aGUgbGFyZ2VzdCBhbGlnbm1lbnQgcmVxdWlyZWQgYnkgYSBkYXRhCisgCQkgICAgIGJsb2NrLiAgKi8KKy0JCSAgaWYgKHVubGlrZWx5ICghIHBvd2Vyb2YyIChzaGRyLT5zaF9hZGRyYWxpZ24pKQorLQkJICAgICAgfHwgdW5saWtlbHkgKChzaGRyLT5zaF9hZGRyYWxpZ24gPzogMSkgPCBzaF9hbGlnbikpCisrCQkgIGlmIChzaGRyLT5zaF9zaXplICYmICh1bmxpa2VseSAoISBwb3dlcm9mMiAoc2hkci0+c2hfYWRkcmFsaWduKSkKKysJCSAgICAgIHx8IHVubGlrZWx5ICgoc2hkci0+c2hfYWRkcmFsaWduID86IDEpIDwgc2hfYWxpZ24pKSkKKyAJCSAgICB7CisgCQkgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfSU5WQUxJRF9BTElHTik7CisgCQkgICAgICByZXR1cm4gLTE7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODkzYWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBiYjdlZDExOTUwMTAxNzk4YWFlODJmN2ZkYThiM2RjYjA1Zjc1NWM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNDowNiArMDgwMAorU3ViamVjdDogW1BBVENIIDQvN10gRGlzYWJsZSB0aGUgdGVzdCB0byBjb252ZXJ0IGV1Yy1qcAorCitSZW1vdmUgdGhlIHRlc3QgIlRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6CitObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMgcHJvdmlkZWQiCitzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IEhQLVVYIGFuZCBpZiB0aGUgZXVjLWpwIGlzIG5vdAoraW5zdGFsbGVkIG9uIHRoZSBob3N0LCB0aGUgZGVwZW5kZW5jZSB3aWxsIGJlIGJ1aWx0IHdpdGhvdXQKK2ljb252IHN1cHBvcnQgYW5kIHdpbGwgY2F1c2UgZ3VpbGQtbmF0aXZlIGJ1aWxkaW5nIGZhaWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBtNC9pY29udi5tNCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tNC9pY29udi5tNCBiL200L2ljb252Lm00CitpbmRleCBhNTAzNjQ2Li4yOTlmMWViIDEwMDY0NAorLS0tIGEvbTQvaWNvbnYubTQKKysrKyBiL200L2ljb252Lm00CitAQCAtMTU5LDYgKzE1OSw3IEBAIGludCBtYWluICgpCisgICAgICAgfQorICAgfQorICNlbmRpZgorKyNpZiAwCisgICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKKyAgICAgIHByb3ZpZGVkLiAgKi8KKyAgIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KK0BAIC0xNzAsNiArMTcxLDcgQEAgaW50IG1haW4gKCkKKyAgICAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLworICAgICAgICYmIGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKSkKKyAgICAgcmVzdWx0IHw9IDE2OworKyNlbmRpZgorICAgcmV0dXJuIHJlc3VsdDsKKyB9XV0pXSwKKyAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmEwMWNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBkZDZkYmY2YWYzOTY1MTkzODBmNDhjMGVmMWNlNmNmNGRkNzdmNmQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNToxNiArMDgwMAorU3ViamVjdDogW1BBVENIIDUvN10gZml4IGEgc3RhY2stdXNhZ2Ugd2FybmluZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworbm90IHVzZSBhIHZhcmlhYmxlIHRvIGFzIGEgYXJyYXkgc2l6ZSwgb3RoZXJ3aXNlIHRoZSB3YXJuaW5nIHRvIGVycm9yCit0aGF0CitzdGFjayB1c2FnZSBtaWdodCBiZSB1bmJvdW5kZWQgWy1XZXJyb3I9c3RhY2stdXNhZ2U9XSB3aWxsIGhhcHBlbgorCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAwLjE3MAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFja2VuZHMvcHBjX2luaXRyZWcuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCitpbmRleCA2OWQ2MjNiLi5kZTQxZGVjIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvcHBjX2luaXRyZWcuYworKysrIGIvYmFja2VuZHMvcHBjX2luaXRyZWcuYworQEAgLTkzLDcgKzkzLDcgQEAgcHBjX3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90IHRpZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCXJldHVybiBmYWxzZTsKKyAgICAgfQorICAgY29uc3Qgc2l6ZV90IGdwcnMgPSBzaXplb2YgKHVzZXJfcmVncy5yLmdwcikgLyBzaXplb2YgKCp1c2VyX3JlZ3Muci5ncHIpOworLSAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW2dwcnNdOworKyAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW3NpemVvZiAodXNlcl9yZWdzLnIuZ3ByKSAvIHNpemVvZiAoKnVzZXJfcmVncy5yLmdwcildOworICAgZm9yICh1bnNpZ25lZCBncHIgPSAwOyBncHIgPCBncHJzOyBncHIrKykKKyAgICAgZHdhcmZfcmVnc1tncHJdID0gdXNlcl9yZWdzLnIuZ3ByW2dwcl07CisgICBpZiAoISBzZXRmdW5jICgwLCBncHJzLCBkd2FyZl9yZWdzLCBhcmcpKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyOWEwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gZTU3YWQ0N2ZjODU0OTM1M2NhODBjMjNiOWI0ZjM4ZjMxZmRlMTNlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6Mjc6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA2LzddIEZpeCBidWlsZCBvbiBhYXJjaDY0L211c2wKKworRXJyb3JzCisKK2ludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5ICYgKGhhdmUgJ2xvbmcgZG91YmxlJyBhbmQgJ3Vuc2lnbmVkIGludCcpCisKK2Vycm9yOiByZWRlZmluaXRpb24KKyBvZiAnc3RydWN0IGlvdmVjJworIHN0cnVjdCBpb3ZlYyB7IHZvaWQgKmlvdl9iYXNlOyBzaXplX3QgaW92X2xlbjsgfTsKKyAgICAgICAgXgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jIHwgNCArKy0tCisgYmFja2VuZHMvYXJtX2luaXRyZWcuYyAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYyBiL2JhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jCitpbmRleCBkYWY2ZjM3Li42NDQ1Mjc2IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKKysrKyBiL2JhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jCitAQCAtMzMsNyArMzMsNyBAQAorICNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQorLSMgaW5jbHVkZSA8bGludXgvdWlvLmg+CisrIyBpbmNsdWRlIDxzeXMvdWlvLmg+CisgIyBpbmNsdWRlIDxzeXMvdXNlci5oPgorICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCitAQCAtODIsNyArODIsNyBAQCBhYXJjaDY0X3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90IHRpZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCisgICBEd2FyZl9Xb3JkIGR3YXJmX2ZyZWdzWzMyXTsKKyAgIGZvciAoaW50IHIgPSAwOyByIDwgMzI7IHIrKykKKy0gICAgZHdhcmZfZnJlZ3Nbcl0gPSBmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7CisrICAgIGR3YXJmX2ZyZWdzW3JdID0gKHVuc2lnbmVkIGludClmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7CisgCisgICBpZiAoISBzZXRmdW5jICg2NCwgMzIsIGR3YXJmX2ZyZWdzLCBhcmcpKQorICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYXJtX2luaXRyZWcuYyBiL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKK2luZGV4IGVmY2FiYWYuLjA2MmJiOWUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hcm1faW5pdHJlZy5jCisrKysgYi9iYWNrZW5kcy9hcm1faW5pdHJlZy5jCitAQCAtMzgsNyArMzgsNyBAQAorICNlbmRpZgorIAorICNpZmRlZiBfX2FhcmNoNjRfXworLSMgaW5jbHVkZSA8bGludXgvdWlvLmg+CisrIyBpbmNsdWRlIDxzeXMvdWlvLmg+CisgIyBpbmNsdWRlIDxzeXMvdXNlci5oPgorICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ3NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAxZTkxYzFkNGUzN2MwNWNmOTUwNThiNGIzYzNmMzUyZDcyODg2ZjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzozMTozOCArMDgwMAorU3ViamVjdDogW1BBVENIIDcvN10gRml4IGNvbnRyb2wgcGF0aCB3aGVyZSB3ZSBoYXZlIHN0ciBhcyB1bmluaXRpYWxpemVkCisgc3RyaW5nCisKK3wKKy9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOgorSW4gZnVuY3Rpb24gJ2kzODZfZGlzYXNtJzoKK3wKKy9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOjMxMDo1OgorZXJyb3I6ICdzdHInIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgorWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KK3wgICAgICBtZW1jcHkgKGJ1ZiArIGJ1ZmNudCwgX3N0ciwgX2xlbik7ICAgICAgICAgICBcCit8ICAgICAgXgorfAorL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6NzA5OjE3Ogorbm90ZTogJ3N0cicgd2FzIGRlY2xhcmVkIGhlcmUKK3wgICAgICBjb25zdCBjaGFyICpzdHI7CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUmViYXNlIHRvIDAuMTcwCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmNwdS9pMzg2X2Rpc2FzbS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitpbmRleCA4MzFhZmJlLi42MGZkNmQ0IDEwMDY0NAorLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKKysrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitAQCAtODIxLDYgKzgyMSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAJCQkgICAgfQorIAkJCSAgLyogRmFsbHRocm91Z2ggKi8KKyAJCQlkZWZhdWx0OgorKwkJCSAgc3RyID0gIiI7CisgCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKKyAJCQl9CisgCQkgICAgfQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2NGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCkBAIC0wLDAgKzEsMTAzMSBAQAorRnJvbSAwMTBiMGM1N2U3NDg0NDBlYjFjZWIzZDk3Nzg3NWYyNDg4ZDJiNGNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6MDY6MjYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFByb3ZpZGUgYWx0ZXJuYXRpdmVzIGZvciBnbGliYyBhc3N1bXB0aW9ucyBoZWxwcworIGNvbXBpbGluZyBpdCBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWIvY29sb3IuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQorIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICAgIHwgIDEgLQorIGxpYi9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIGxpYi94bWFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJhc20vYXNtX2VuZC5jICAgICAgICAgICAgICAgICB8ICAyICstCisgbGliYXNtL2FzbV9uZXdzY24uYyAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmNwdS9pMzg2X2dlbmRpcy5jICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJjcHUvaTM4Nl9sZXguYyAgICAgICAgICAgICAgICB8ICAyICstCisgbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmR3L01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgIDMgKystCisgbGliZHcvbGliZHdfYWxsb2MuYyAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIHwgIDMgKystCisgbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgICAgfCAgNCArKystCisgbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jICAgfCAgMSArCisgbGliZHdmbC9maW5kLWRlYnVnaW5mby5jICAgICAgICAgfCAgMiArLQorIGxpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgICAgIHwgIDkgKysrKysrKysrCisgbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jICAgfCAgMSArCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgICAgICAgICAgfCAgMiArLQorIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrLS0KKyBsaWJlbGYvbGliZWxmLmggICAgICAgICAgICAgICAgICB8ICAxICsKKyBsaWJlbGYvbGliZWxmUC5oICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYWRkcjJsaW5lLmMgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2FyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9hcmxpYi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvYXJsaWIyLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2VsZmNtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9lbGZsaW50LmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvZmluZHRleHRyZWwuYyAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL25tLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9vYmpkdW1wLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvcmFubGliLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3JlYWRlbGYuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9zaXplLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvc3RhY2suYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3N0cmluZ3MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9zdHJpcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvdW5zdHJpcC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYWRkcnNjb3Blcy5jICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2FsbHJlZ3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9iYWNrdHJhY2UtZGF0YS5jICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2JhY2t0cmFjZS5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9idWlsZGlkLmMgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZGVidWdhbHRsaW5rLmMgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2RlYnVnbGluay5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kZWxldGVkLmMgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1hZGRyLXNlY3QuYyAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYyAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jICAgICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsbGluZXMuYyAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbG1vZHRlc3QuYyAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2R3ZmxzeW1zLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9lYXJseS1vZmZzY24uYyAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZWNwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2ZpbmQtcHJvbG9ndWVzLmMgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9mdW5jcmV0dmFsLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZnVuY3Njb3Blcy5jICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2dldHNyY19kaWUuYyAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9saW5lMmFkZHIuYyAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvbG93X2hpZ2hfcGMuYyAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL21kNS1zaGExLXRlc3QuYyAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9yZHdybW1hcC5jICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvc2FyaWR4LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3NlY3Rpb25kdW1wLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy92YXJsb2NzLmMgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvdmRzb3N5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQorIDY5IGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMmZmNDQ0ZS4uNDFmNzdkZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTI4LDcgKzI4LDcgQEAgcGtnaW5jbHVkZV9IRUFERVJTID0gdmVyc2lvbi5oCisgCisgIyBBZGQgZG9jIGJhY2sgd2hlbiB3ZSBoYXZlIHNvbWUgcmVhbCBjb250ZW50LgorIFNVQkRJUlMgPSBjb25maWcgbTQgbGliIGxpYmVsZiBsaWJlYmwgbGliZHdlbGYgbGliZHdmbCBsaWJkdyBsaWJjcHUgbGliYXNtIFwKKy0JICBiYWNrZW5kcyBzcmMgcG8gdGVzdHMKKysJICBiYWNrZW5kcyBwbyB0ZXN0cworIAorIEVYVFJBX0RJU1QgPSBlbGZ1dGlscy5zcGVjIEdQRy1LRVkgTk9URVMgQ09OVFJJQlVUSU5HIFwKKyAJICAgICBDT1BZSU5HIENPUFlJTkctR1BMVjIgQ09QWUlORy1MR1BMVjMKK2RpZmYgLS1naXQgYS9saWIvY29sb3IuYyBiL2xpYi9jb2xvci5jCitpbmRleCBmNjIzODlkLi5hMmE4NGI0IDEwMDY0NAorLS0tIGEvbGliL2NvbG9yLmMKKysrKyBiL2xpYi9jb2xvci5jCitAQCAtMzIsMTMgKzMyLDE0IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSAibGliZXUuaCIKKyAjaW5jbHVkZSAiY29sb3IuaCIKKysjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgLyogUHJvdG90eXBlIGZvciBvcHRpb24gaGFuZGxlci4gICovCisgc3RhdGljIGVycm9yX3QgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSk7CitkaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKK2luZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0CistLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCisrKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCitAQCAtMzAsNyArMzAsNiBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorIAorICNpbmNsdWRlIDxzeXN0ZW0uaD4KKyAKK2RpZmYgLS1naXQgYS9saWIvc3lzdGVtLmggYi9saWIvc3lzdGVtLmgKK2luZGV4IDkyMDMzMzUuLjFhNjAxMzEgMTAwNjQ0CistLS0gYS9saWIvc3lzdGVtLmgKKysrKyBiL2xpYi9zeXN0ZW0uaAorQEAgLTUwLDYgKzUwLDE2IEBACisgI2Vsc2UKKyAjIGVycm9yICJVbmtub3duIGJ5dGUgb3JkZXIiCisgI2VuZGlmCisrI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKKysjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCisrICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCisrICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKKysgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsJCQkJICAgICAgXAorKyAgICAgICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsJCQkgICAgICBcCisrICAgICAgIF9fcmVzdWx0OyB9KSkKKysjZW5kaWYKKysKKysjZGVmaW5lIGVycm9yKHN0YXR1cywgZXJybm8sIC4uLikgZXJyKHN0YXR1cywgX19WQV9BUkdTX18pCisgCisgI2lmbmRlZiBNQVgKKyAjZGVmaW5lIE1BWChtLCBuKSAoKG0pIDwgKG4pID8gKG4pIDogKG0pKQorZGlmZiAtLWdpdCBhL2xpYi94bWFsbG9jLmMgYi9saWIveG1hbGxvYy5jCitpbmRleCAwY2RlMzg0Li4yMTdiMDU0IDEwMDY0NAorLS0tIGEvbGliL3htYWxsb2MuYworKysrIGIvbGliL3htYWxsb2MuYworQEAgLTMwLDcgKzMwLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9lbmQuYyBiL2xpYmFzbS9hc21fZW5kLmMKK2luZGV4IGNlZDI0ZjUuLjRhZDkxOGMgMTAwNjQ0CistLS0gYS9saWJhc20vYXNtX2VuZC5jCisrKysgYi9saWJhc20vYXNtX2VuZC5jCitAQCAtMzIsNyArMzIsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9uZXdzY24uYyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKK2luZGV4IGRkYmIyNWQuLjc0YTU5OGQgMTAwNjQ0CistLS0gYS9saWJhc20vYXNtX25ld3Njbi5jCisrKysgYi9saWJhc20vYXNtX25ld3Njbi5jCitAQCAtMzIsNyArMzIsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKK2luZGV4IGFhZTVlYWUuLjZkNzYwMTYgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYworKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKK0BAIC0zMSw3ICszMSw3IEBACisgIyBpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2xleC5jIGIvbGliY3B1L2kzODZfbGV4LmMKK2luZGV4IGJhNWY0YWEuLmIxZTQxOTEgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9sZXguYworKysrIGIvbGliY3B1L2kzODZfbGV4LmMKK0BAIC01NzcsNyArNTc3LDcgQEAgY2hhciAqaTM4Nl90ZXh0OworICNlbmRpZgorIAorICNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorIAorICNpbmNsdWRlIDxsaWJldS5oPgorZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLmMgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCitpbmRleCBlZjFhYzM1Li40OGYyZTY0IDEwMDY0NAorLS0tIGEvbGliY3B1L2kzODZfcGFyc2UuYworKysrIGIvbGliY3B1L2kzODZfcGFyc2UuYworQEAgLTEwNyw3ICsxMDcsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPgorZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KK2luZGV4IGZmOGMyOTEuLjg5ZTc5MmEgMTAwNjQ0CistLS0gYS9saWJkdy9NYWtlZmlsZS5hbQorKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KK0BAIC0xMDUsNyArMTA1LDggQEAgYW1fbGliZHdfcGljX2FfT0JKRUNUUyA9ICQobGliZHdfYV9TT1VSQ0VTOi5jPS5vcykKKyBsaWJkd19zb19MSUJTID0gbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAorIAkgIC4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYSAuLi9saWJlYmwvbGliZWJsLmEKKyBsaWJkd19zb19ERVBTID0gLi4vbGliL2xpYmV1LmEgLi4vbGliZWxmL2xpYmVsZi5zbworLWxpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKQorK2Z0c19MREFERCA9IC1sZnRzCisrbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpICQoZnRzX0xEQUREKQorIGxpYmR3X3NvX1NPVVJDRVMgPQorIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwICQobGliZHdfc29fTElCUykgJChsaWJkd19zb19ERVBTKQorICMgVGhlIHJwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgbGliZWJsIGJlY2F1c2UgaXRzICRPUklHSU4gdXNlIHdpbGwKK2RpZmYgLS1naXQgYS9saWJkdy9saWJkd19hbGxvYy5jIGIvbGliZHcvbGliZHdfYWxsb2MuYworaW5kZXggMjhhOGNmNi4uMjlhZWIzZiAxMDA2NDQKKy0tLSBhL2xpYmR3L2xpYmR3X2FsbG9jLmMKKysrKyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKK0BAIC0zMSw3ICszMSw3IEBACisgIyBpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlICJsaWJkd1AuaCIKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCitpbmRleCBlZTBjMTY0Li5iMDZhYjU5IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCitAQCAtMzEsNiArMzEsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlICJsaWJkd2ZsUC5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitAQCAtOTksNyArMTAwLDcgQEAgX19saWJkd2ZsX29wZW5fYnlfYnVpbGRfaWQgKER3ZmxfTW9kdWxlICptb2QsIGJvb2wgZGVidWcsIGNoYXIgKipmaWxlX25hbWUsCisgCXsKKyAJICBpZiAoKmZpbGVfbmFtZSAhPSBOVUxMKQorIAkgICAgZnJlZSAoKmZpbGVfbmFtZSk7CistCSAgKmZpbGVfbmFtZSA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKG5hbWUpOworKwkgICpmaWxlX25hbWUgPSByZWFscGF0aCAobmFtZSwgTlVMTCk7CisgCSAgaWYgKCpmaWxlX25hbWUgPT0gTlVMTCkKKyAJICAgIHsKKyAJICAgICAgKmZpbGVfbmFtZSA9IG5hbWU7CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworaW5kZXggN2JjZjYxYy4uYzM0NTc5NyAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jCisrKysgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworQEAgLTE0MCw2ICsxNDAsNyBAQCBfX2xpYmR3Zmxfc2V0ZXJybm8gKER3ZmxfRXJyb3IgZXJyb3IpCisgY29uc3QgY2hhciAqCisgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyB7CisrICBzdGF0aWMgX190aHJlYWQgY2hhciBzWzY0XSA9ICIiOworICAgaWYgKGVycm9yID09IDAgfHwgZXJyb3IgPT0gLTEpCisgICAgIHsKKyAgICAgICBpbnQgbGFzdF9lcnJvciA9IGdsb2JhbF9lcnJvcjsKK0BAIC0xNTQsNyArMTU1LDggQEAgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyAgIHN3aXRjaCAoZXJyb3IgJn4gMHhmZmZmKQorICAgICB7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKEVSUk5PKToKKy0gICAgICByZXR1cm4gc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsICJiYWQiLCAwKTsKKysgICAgICBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgcywgc2l6ZW9mKHMpKTsKKysgICAgICByZXR1cm4gczsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRUxGKToKKyAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOworICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCitpbmRleCA5Nzc1YWNlLi41MTFjNGE2IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCisrKysgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSAic3lzdGVtLmgiCisgI2luY2x1ZGUgIi4uL2xpYmR3L2xpYmR3UC5oIgkvKiBEV0FSRl9FXyogdmFsdWVzIGFyZSBoZXJlLiAgKi8KKyAjaW5jbHVkZSAiLi4vbGliZWxmL2xpYmVsZlAuaCIKKyAjaW5jbHVkZSAic3lzdGVtLmgiCitkaWZmIC0tZ2l0IGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCitpbmRleCA2ZDVhNDJhLi45MjY3Nzg4IDEwMDY0NAorLS0tIGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCisrKysgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKK0BAIC0zODksNyArMzg5LDcgQEAgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKKyAgICAgICAvKiBJZiBGSUxFX05BTUUgaXMgYSBzeW1saW5rLCB0aGUgZGVidWcgZmlsZSBtaWdodCBiZSBhc3NvY2lhdGVkCisgCSB3aXRoIHRoZSBzeW1saW5rIHRhcmdldCBuYW1lIGluc3RlYWQuICAqLworIAorLSAgICAgIGNoYXIgKmNhbm9uID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoZmlsZV9uYW1lKTsKKysgICAgICBjaGFyICpjYW5vbiA9IHJlYWxwYXRoIChmaWxlX25hbWUsIE5VTEwpOworICAgICAgIGlmIChjYW5vbiAhPSBOVUxMICYmIHN0cmNtcCAoZmlsZV9uYW1lLCBjYW5vbikpCisgCWZkID0gZmluZF9kZWJ1Z2luZm9faW5fcGF0aCAobW9kLCBjYW5vbiwKKyAJCQkJICAgICBkZWJ1Z2xpbmtfZmlsZSwgZGVidWdsaW5rX2NyYywKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworaW5kZXggZjg0OTEyOC4uNmYwYWNhMSAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKKysrKyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKK0BAIC0yOSw2ICsyOSwxNSBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCisrI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKKysjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCisrICAoX19leHRlbnNpb25fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgIF9fcmVzdWx0OyB9KSkKKysjZW5kaWYKKysKKyAjZGVmaW5lIGNyYzMyX2ZpbGUgYXR0cmlidXRlX2hpZGRlbiBfX2xpYmR3ZmxfY3JjMzJfZmlsZQorICNkZWZpbmUgY3JjMzIgX19saWJkd2ZsX2NyYzMyCisgI2luY2x1ZGUgPGxpYmR3ZmxQLmg+CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCitpbmRleCA5ZDBmZWYyLi45ZmMwOWI4IDEwMDY0NAorLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCisrKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgPHN5c3RlbS5oPgorIAorICNpbmNsdWRlICJsaWJkd2ZsUC5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK2RpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCitpbmRleCA1MzcxMzk2Li4yZTY2ZGZkIDEwMDY0NAorLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKKysrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCitAQCAtMzIsNyArMzIsNyBAQAorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZGxmY24uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmVsZlAuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCitpbmRleCA1Y2YyYjkzLi45OTBiM2FmIDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZi5oCisrKysgYi9saWJlbGYvZWxmLmgKK0BAIC0yMSw3ICsyMSw5IEBACisgCisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgCistX19CRUdJTl9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorIAorIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCisgCitAQCAtMzcwNSw2ICszNzA3LDggQEAgZW51bQorICNkZWZpbmUgUl9CUEZfTk9ORQkJMAkvKiBObyByZWxvYyAqLworICNkZWZpbmUgUl9CUEZfTUFQX0ZECQkxCS8qIE1hcCBmZCB0byBwb2ludGVyICovCisgCistX19FTkRfREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmCisgCisgI2VuZGlmCS8qIGVsZi5oICovCitkaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZi5oIGIvbGliZWxmL2xpYmVsZi5oCitpbmRleCA1NDdjMGY1Li5kZDc4Nzk5IDEwMDY0NAorLS0tIGEvbGliZWxmL2xpYmVsZi5oCisrKysgYi9saWJlbGYvbGliZWxmLmgKK0BAIC0yOSw2ICsyOSw3IEBACisgI2lmbmRlZiBfTElCRUxGX0gKKyAjZGVmaW5lIF9MSUJFTEZfSCAxCisgCisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKK2RpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmUC5oIGIvbGliZWxmL2xpYmVsZlAuaAoraW5kZXggN2VlNjYyNS4uNTg0MDg5OSAxMDA2NDQKKy0tLSBhL2xpYmVsZi9saWJlbGZQLmgKKysrKyBiL2xpYmVsZi9saWJlbGZQLmgKK0BAIC0zMiw2ICszMiw3IEBACisgCisgI2luY2x1ZGUgPGFyLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKysjaW5jbHVkZSA8bGliZWxmLmg+CisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KK2RpZmYgLS1naXQgYS9zcmMvYWRkcjJsaW5lLmMgYi9zcmMvYWRkcjJsaW5lLmMKK2luZGV4IGJhNDE0YTcuLjA0YjcxMTYgMTAwNjQ0CistLS0gYS9zcmMvYWRkcjJsaW5lLmMKKysrKyBiL3NyYy9hZGRyMmxpbmUuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmR3ZmwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYXIuYyBiL3NyYy9hci5jCitpbmRleCBlYzMyY2VlLi40ZWZkNzI5IDEwMDY0NAorLS0tIGEvc3JjL2FyLmMKKysrKyBiL3NyYy9hci5jCitAQCAtMjIsNyArMjIsNyBAQAorIAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYworaW5kZXggZTA4MzlhYS4uMTE0MzY1OCAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYi5jCisrKysgYi9zcmMvYXJsaWIuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYXJsaWIyLmMgYi9zcmMvYXJsaWIyLmMKK2luZGV4IDU1M2ZjNTcuLjQ2NDQzZDAgMTAwNjQ0CistLS0gYS9zcmMvYXJsaWIyLmMKKysrKyBiL3NyYy9hcmxpYjIuYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmNtcC5jIGIvc3JjL2VsZmNtcC5jCitpbmRleCA1MDQ2NDIwLi5jZmYxODNmIDEwMDY0NAorLS0tIGEvc3JjL2VsZmNtcC5jCisrKysgYi9zcmMvZWxmY21wLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCitpbmRleCA1MWU1M2MyLi5kYTBiMGRjIDEwMDY0NAorLS0tIGEvc3JjL2VsZmxpbnQuYworKysrIGIvc3JjL2VsZmxpbnQuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGJ5dGVzd2FwLmg+CisgI2luY2x1ZGUgPGVuZGlhbi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9maW5kdGV4dHJlbC5jIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKK2luZGV4IDhmMWUyMzkuLjcxNDYzYWYgMTAwNjQ0CistLS0gYS9zcmMvZmluZHRleHRyZWwuYworKysrIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmR3Lmg+CitkaWZmIC0tZ2l0IGEvc3JjL25tLmMgYi9zcmMvbm0uYworaW5kZXggOTY5YzZkMy4uMzExM2MwNCAxMDA2NDQKKy0tLSBhL3NyYy9ubS5jCisrKysgYi9zcmMvbm0uYworQEAgLTI2LDcgKzI2LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYworaW5kZXggODYwY2ZhYy4uNjFlNjdiZiAxMDA2NDQKKy0tLSBhL3NyYy9vYmpkdW1wLmMKKysrKyBiL3NyYy9vYmpkdW1wLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvcmFubGliLmMgYi9zcmMvcmFubGliLmMKK2luZGV4IGNjMGVlMjMuLmFlODUxZTQgMTAwNjQ0CistLS0gYS9zcmMvcmFubGliLmMKKysrKyBiL3NyYy9yYW5saWIuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCitpbmRleCAzNDZlY2NkLi5jODMxYWE4IDEwMDY0NAorLS0tIGEvc3JjL3JlYWRlbGYuYworKysrIGIvc3JjL3JlYWRlbGYuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS9zcmMvc2l6ZS5jIGIvc3JjL3NpemUuYworaW5kZXggYWQ4ZGJjYi4uZmQ4M2JlMCAxMDA2NDQKKy0tLSBhL3NyYy9zaXplLmMKKysrKyBiL3NyYy9zaXplLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS9zcmMvc3RhY2suYyBiL3NyYy9zdGFjay5jCitpbmRleCA2ZjJmZjY5Li42ZGEwMjQzIDEwMDY0NAorLS0tIGEvc3JjL3N0YWNrLmMKKysrKyBiL3NyYy9zdGFjay5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGFyZ3AuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmdzLmMgYi9zcmMvc3RyaW5ncy5jCitpbmRleCBkMjE0MzU2Li43NmNiMjZiIDEwMDY0NAorLS0tIGEvc3JjL3N0cmluZ3MuYworKysrIGIvc3JjL3N0cmluZ3MuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3N0cmlwLmMgYi9zcmMvc3RyaXAuYworaW5kZXggYzc4MzBlYy4uMGQ3ZjE0OCAxMDA2NDQKKy0tLSBhL3NyYy9zdHJpcC5jCisrKysgYi9zcmMvc3RyaXAuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGJ5dGVzd2FwLmg+CisgI2luY2x1ZGUgPGVuZGlhbi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3Vuc3RyaXAuYyBiL3NyYy91bnN0cmlwLmMKK2luZGV4IDUwNzQ5MDkuLjNkNGY5NTIgMTAwNjQ0CistLS0gYS9zcmMvdW5zdHJpcC5jCisrKysgYi9zcmMvdW5zdHJpcC5jCitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvYWRkcnNjb3Blcy5jIGIvdGVzdHMvYWRkcnNjb3Blcy5jCitpbmRleCA3OTE1NjlmLi41NGY0MzExIDEwMDY0NAorLS0tIGEvdGVzdHMvYWRkcnNjb3Blcy5jCisrKysgYi90ZXN0cy9hZGRyc2NvcGVzLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9hbGxyZWdzLmMgYi90ZXN0cy9hbGxyZWdzLmMKK2luZGV4IDI4NmY3ZTMuLmM5ZGUwODkgMTAwNjQ0CistLS0gYS90ZXN0cy9hbGxyZWdzLmMKKysrKyBiL3Rlc3RzL2FsbHJlZ3MuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKK2luZGV4IGEzODdkOGYuLjk1NWMyN2QgMTAwNjQ0CistLS0gYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCisrKysgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCitAQCAtMjcsNyArMjcsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCitpbmRleCAyZGM4YTlhLi4yNGNhN2ZiIDEwMDY0NAorLS0tIGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCitAQCAtMjIsNyArMjIsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYworaW5kZXggMjFhYmU4YS4uZDczMzI0OCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCisrKysgYi90ZXN0cy9iYWNrdHJhY2UuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgI2lmZGVmIF9fbGludXhfXworZGlmZiAtLWdpdCBhL3Rlc3RzL2J1aWxkaWQuYyBiL3Rlc3RzL2J1aWxkaWQuYworaW5kZXggODdjMTg3Ny4uMjk1M2U2YiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2J1aWxkaWQuYworKysrIGIvdGVzdHMvYnVpbGRpZC5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihlbGYpCisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQorICNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCitpbmRleCA2ZDk3ZDUwLi5lZTdlNTU5IDEwMDY0NAorLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKKysrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnbGluay5jIGIvdGVzdHMvZGVidWdsaW5rLmMKK2luZGV4IDkzNWQxMDIuLjc0MWNiODEgMTAwNjQ0CistLS0gYS90ZXN0cy9kZWJ1Z2xpbmsuYworKysrIGIvdGVzdHMvZGVidWdsaW5rLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQorICNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9kZWxldGVkLmMgYi90ZXN0cy9kZWxldGVkLmMKK2luZGV4IDZiZTM1YmMuLjAxOTA3MTEgMTAwNjQ0CistLS0gYS90ZXN0cy9kZWxldGVkLmMKKysrKyBiL3Rlc3RzL2RlbGV0ZWQuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaWZkZWYgX19saW51eF9fCisgI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCitpbmRleCAyMWU0NzBhLi4xZWExZTNiIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYworKysrIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCitpbmRleCBhYTgwMzBlLi4wMmM4YmVmIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCisrKysgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKK0BAIC0yMCw3ICsyMCw3IEBACisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCitpbmRleCA2ODljZGQ3Li41OTczZGEzIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCisrKysgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKK0BAIC0yNCw3ICsyNCw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYworaW5kZXggMWVlOTg5Zi4uZmQ2MmU2NSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYworKysrIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgCisgc3RhdGljIGNvbnN0IER3ZmxfQ2FsbGJhY2tzIGNhbGxiYWNrcyA9CisgICB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYworaW5kZXggYTRlOTdkMy4uZjQ3MTU4NyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCisrKysgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxsaW5lcy5jIGIvdGVzdHMvZHdmbGxpbmVzLmMKK2luZGV4IDkwMzc5ZGQuLmNiZGY2YzQgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsbGluZXMuYworKysrIGIvdGVzdHMvZHdmbGxpbmVzLmMKK0BAIC0yNyw3ICsyNyw3IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgCisgaW50CisgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYworaW5kZXggMDAyN2Y5Ni4uZTY4ZDNiYyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKKysrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCitpbmRleCA0OWFjMzM0Li5jZjA3ODMwIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbHN5bXMuYworKysrIGIvdGVzdHMvZHdmbHN5bXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisgc3RhdGljIGNvbnN0IGNoYXIgKgorZGlmZiAtLWdpdCBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKK2luZGV4IDkyNGNiOWUuLjZmNjBkNWEgMTAwNjQ0CistLS0gYS90ZXN0cy9lYXJseS1vZmZzY24uYworKysrIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZWNwLmMgYi90ZXN0cy9lY3AuYworaW5kZXggMzhhNjg1OS4uNzQzY2VhNSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VjcC5jCisrKysgYi90ZXN0cy9lY3AuYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKK2luZGV4IGJhOGFlMzcuLjc2ZjVmMDQgMTAwNjQ0CistLS0gYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCisrKysgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9mdW5jcmV0dmFsLmMgYi90ZXN0cy9mdW5jcmV0dmFsLmMKK2luZGV4IDhkMTlkMTEuLmM4YWFhOTMgMTAwNjQ0CistLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKKysrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCitpbmRleCA5YzkwMTg1Li5kYmNjYjg5IDEwMDY0NAorLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCisrKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYworaW5kZXggMDU1YWVkZS4uOWMzOTRkZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2dldHNyY19kaWUuYworKysrIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCitAQCAtMTksNyArMTksNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliZWxmLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvbGluZTJhZGRyLmMgYi90ZXN0cy9saW5lMmFkZHIuYworaW5kZXggZTBkNjVkMy4uOWJmMDAyMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xpbmUyYWRkci5jCisrKysgYi90ZXN0cy9saW5lMmFkZHIuYworQEAgLTI2LDcgKzI2LDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgCisgCisgc3RhdGljIHZvaWQKK2RpZmYgLS1naXQgYS90ZXN0cy9sb3dfaGlnaF9wYy5jIGIvdGVzdHMvbG93X2hpZ2hfcGMuYworaW5kZXggZDBmNDMwMi4uOGRhNGZiZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xvd19oaWdoX3BjLmMKKysrKyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYworaW5kZXggZDUwMzU1ZS4uM2M0MWY0MCAxMDA2NDQKKy0tLSBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYworKysrIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCitAQCAtMTksNyArMTksNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgCisgI2luY2x1ZGUgIm1kNS5oIgorICNpbmNsdWRlICJzaGExLmgiCitkaWZmIC0tZ2l0IGEvdGVzdHMvcmR3cm1tYXAuYyBiL3Rlc3RzL3Jkd3JtbWFwLmMKK2luZGV4IDZmMDI3ZGYuLjFjZTVlNmUgMTAwNjQ0CistLS0gYS90ZXN0cy9yZHdybW1hcC5jCisrKysgYi90ZXN0cy9yZHdybW1hcC5jCitAQCAtMTksNyArMTksNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYworaW5kZXggOGE0NTBkOC4uYjM4NzgwMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3NhcmlkeC5jCisrKysgYi90ZXN0cy9zYXJpZHguYworQEAgLTE3LDcgKzE3LDcgQEAKKyAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKK2luZGV4IDMwMzNmZWQuLjhlODg4ZGIgMTAwNjQ0CistLS0gYS90ZXN0cy9zZWN0aW9uZHVtcC5jCisrKysgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy92YXJsb2NzLmMgYi90ZXN0cy92YXJsb2NzLmMKK2luZGV4IGMzZmJhODkuLmUwNDNlYTIgMTAwNjQ0CistLS0gYS90ZXN0cy92YXJsb2NzLmMKKysrKyBiL3Rlc3RzL3ZhcmxvY3MuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKK2luZGV4IGI4NzZjMTAuLmFmYjI4MjMgMTAwNjQ0CistLS0gYS90ZXN0cy92ZHNvc3ltcy5jCisrKysgYi90ZXN0cy92ZHNvc3ltcy5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2FybV9iYWNrZW5kLmRpZmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2FybV9iYWNrZW5kLmRpZmYKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2FybV9iYWNrZW5kLmRpZmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9mYWxsdGhyb3VnaC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vZmFsbHRocm91Z2gucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMGU1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2gKQEAgLTAsMCArMSw3MTUgQEAKK0Zyb20gNDZkMGQwY2E3MTgwOTM0ODZlZWVlZGYxYjQ0MTM0ZTllMjliNTZmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDk6MTg6NTkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlwcyBiYWNrZW5kcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICB8ICAgOCArLQorIGJhY2tlbmRzL21pcHNfaW5pdC5jICAgIHwgIDU5ICsrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVncy5jICAgIHwgMTA0ICsrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZiB8ICA3OSArKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JldHZhbC5jICB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MiArKysrKysrKworIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jIHwgICAyICsKKyA3IGZpbGVzIGNoYW5nZWQsIDYyMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX2luaXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlZ3MuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZgorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JldHZhbC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfc3ltYm9sLmMKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KK2luZGV4IDdmMWY1ZDQuLjkxYmFmNmUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQorKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KK0BAIC0zMywxMiArMzMsMTIgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKKyAKKyAKKyBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCistCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYworKwkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MgbWlwcworIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCisgCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAorIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKKyAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCistCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCisrCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCisgbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKKyBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQorIAorQEAgLTEyOCw2ICsxMjgsMTAgQEAgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYworIGxpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCisgYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCisgCisrbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCisrbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQorK2FtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCisrCisgbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKKyAJQHJtIC1mICQoQDouc289Lm1hcCkKKyAJJChBTV9WX2F0KWVjaG8gJ0VMRlVUSUxTXyQoUEFDS0FHRV9WRVJTSU9OKSB7IGdsb2JhbDogJCpfaW5pdDsgbG9jYWw6ICo7IH07JyBcCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19pbml0LmMgYi9iYWNrZW5kcy9taXBzX2luaXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjk3NWMwNGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCitAQCAtMCwwICsxLDU5IEBACisrLyogSW5pdGlhbGl6YXRpb24gb2YgbWlwcyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCisrICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2RlZmluZSBCQUNLRU5ECQltaXBzXworKyNkZWZpbmUgUkVMT0NfUFJFRklYCVJfTUlQU18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIG1pcHNfcmVsb2MuZGVmLiAgKi8KKysjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCisrCisrY29uc3QgY2hhciAqCisrbWlwc19pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisrICAgICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisrICAgICBFYmwgKmVoLAorKyAgICAgc2l6ZV90IGVobGVuKQorK3sKKysgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLworKyAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysgIC8qIFdlIGhhbmRsZSBpdC4gICovCisrICBpZiAobWFjaGluZSA9PSBFTV9NSVBTKQorKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGJpZy1lbmRpYW4iOworKyAgZWxzZSBpZiAobWFjaGluZSA9PSBFTV9NSVBTX1JTM19MRSkKKysgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBsaXR0bGUtZW5kaWFuIjsKKysKKysgIG1pcHNfaW5pdF9yZWxvYyAoZWgpOworKyAgSE9PSyAoZWgsIHJlbG9jX3NpbXBsZV90eXBlKTsKKysgIEhPT0sgKGVoLCByZXR1cm5fdmFsdWVfbG9jYXRpb24pOworKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOworKworKyAgcmV0dXJuIE1PRFZFUlNJT047CisrfQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmVncy5jIGIvYmFja2VuZHMvbWlwc19yZWdzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40NGY4NmNiCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYworQEAgLTAsMCArMSwxMDQgQEAKKysvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgTUlQUyBEV0FSRi4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGR3YXJmLmg+CisrCisrI2RlZmluZSBCQUNLRU5EIG1pcHNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKytzc2l6ZV90CisrbWlwc19yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKysJCSAgICBpbnQgcmVnbm8sIGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAorKwkJICAgIGNvbnN0IGNoYXIgKipwcmVmaXgsIGNvbnN0IGNoYXIgKipzZXRuYW1lLAorKwkJICAgIGludCAqYml0cywgaW50ICp0eXBlKQorK3sKKysgIGlmIChuYW1lID09IE5VTEwpCisrICAgIHJldHVybiA2NjsKKysKKysgIGlmIChyZWdubyA8IDAgfHwgcmVnbm8gPiA2NSB8fCBuYW1lbGVuIDwgNCkKKysgICAgcmV0dXJuIC0xOworKworKyAgKnByZWZpeCA9ICIkIjsKKysKKysgIGlmIChyZWdubyA8IDMyKQorKyAgICB7CisrICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKKysgICAgICAgIHsKKysgICAgICAgICAgbmFtZVswXSA9IHJlZ25vICsgJzAnOworKyAgICAgICAgICBuYW1lbGVuID0gMTsKKysgICAgICAgIH0KKysgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgIG5hbWVbMF0gPSAocmVnbm8gLyAxMCkgKyAnMCc7CisrICAgICAgICAgIG5hbWVbMV0gPSAocmVnbm8gJSAxMCkgKyAnMCc7CisrICAgICAgICAgIG5hbWVsZW4gPSAyOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChyZWdubyA8IDY0KQorKyAgICB7CisrICAgICAgKnNldG5hbWUgPSAiRlBVIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG5hbWVbMF0gPSAnZic7CisrICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKKysJeworKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgKyAnMCc7CisrCSAgbmFtZWxlbiA9IDI7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICBuYW1lWzFdID0gKHJlZ25vIC0gMzIpIC8gMTAgKyAnMCc7CisrCSAgbmFtZVsyXSA9IChyZWdubyAtIDMyKSAlIDEwICsgJzAnOworKwkgIG5hbWVsZW4gPSAzOworKwl9CisrICAgIH0KKysgIGVsc2UgaWYgKHJlZ25vID09IDY0KQorKyAgICB7CisrICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgbmFtZVswXSA9ICdoJzsKKysgICAgICBuYW1lWzFdID0gJ2knOworKyAgICAgIG5hbWVsZW4gPSAyOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBuYW1lWzBdID0gJ2wnOworKyAgICAgIG5hbWVbMV0gPSAnbyc7CisrICAgICAgbmFtZWxlbiA9IDI7CisrICAgIH0KKysKKysgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7CisrICByZXR1cm4gbmFtZWxlbjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ1Nzk5NzAKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCitAQCAtMCwwICsxLDc5IEBACisrLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgbWlwcy4gIC0qLSBDIC0qLQorKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrLyogCSAgICBOQU1FLAkJUkVMfEVYRUN8RFlOCSovCisrCisrUkVMT0NfVFlQRSAoTk9ORSwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDE2LCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICgzMiwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUkVMMzIsICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDI2LCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChISTE2LCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoTE8xNiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdQUkVMMTYsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChMSVRFUkFMLCAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UMTYsICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFBDMTYsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChDQUxMMTYsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR1BSRUwzMiwgICAgICAgICAgICAwKQorKworK1JFTE9DX1RZUEUgKFNISUZUNSwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChTSElGVDYsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoNjQsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9ESVNQLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfUEFHRSwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX09GU1QsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9ISTE2LCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfTE8xNiwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoU1VCLCAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKElOU0VSVF9BLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChJTlNFUlRfQiwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoREVMRVRFLCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJR0hFUiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChISUdIRVNULCAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQ0FMTF9ISTE2LCAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKENBTExfTE8xNiwgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChTQ05fRElTUCwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUkVMMTYsICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEFERF9JTU1FRElBVEUsICAgICAgMCkKKytSRUxPQ19UWVBFIChQSlVNUCwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUkVMR09ULCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEpBTFIsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQTU9EMzIsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUFJFTDMyLCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMNjQsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0dELCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19MRE0sICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0hJMTYsICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUFJFTF9MTzE2LCAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19HT1RUUFJFTCwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUwzMiwgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMNjQsICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9ISTE2LCAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUxfTE8xNiwgICAgIDApCisrCisrI2RlZmluZSBOT19DT1BZX1JFTE9DIDEKKysjZGVmaW5lIE5PX1JFTEFUSVZFX1JFTE9DIDEKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY1NmNkMWYKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK0BAIC0wLDAgKzEsMzIxIEBACisrLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9taXBzIEFCSS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDxkd2FyZi5oPgorKyNpbmNsdWRlIDxlbGYuaD4KKysKKysjaW5jbHVkZSAiLi4vbGliZWJsL2xpYmVibFAuaCIKKysjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCisrCisrI2RlZmluZSBCQUNLRU5EIG1pcHNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKysvKiBUaGUgQUJJIG9mIHRoZSBmaWxlLiAgQWxzbyBzZWUgRUZfTUlQU19BQkkyIGFib3ZlLiAqLworKyNkZWZpbmUgRUZfTUlQU19BQkkJCTB4MDAwMEYwMDAKKysKKysvKiBUaGUgb3JpZ2luYWwgbzMyIGFiaS4gKi8KKysjZGVmaW5lIEVfTUlQU19BQklfTzMyICAgICAgICAgIDB4MDAwMDEwMDAKKysKKysvKiBPMzIgZXh0ZW5kZWQgdG8gd29yayBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlcyAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9PNjQgICAgICAgICAgMHgwMDAwMjAwMAorKworKy8qIEVBQkkgaW4gMzIgYml0IG1vZGUgKi8KKysjZGVmaW5lIEVfTUlQU19BQklfRUFCSTMyICAgICAgIDB4MDAwMDMwMDAKKysKKysvKiBFQUJJIGluIDY0IGJpdCBtb2RlICovCisrI2RlZmluZSBFX01JUFNfQUJJX0VBQkk2NCAgICAgICAweDAwMDA0MDAwCisrCisrLyogQWxsIHRoZSBwb3NzaWJsZSBNSVBTIEFCSXMuICovCisrZW51bSBtaXBzX2FiaQorKyAgeworKyAgICBNSVBTX0FCSV9VTktOT1dOID0gMCwKKysgICAgTUlQU19BQklfTjMyLAorKyAgICBNSVBTX0FCSV9PMzIsCisrICAgIE1JUFNfQUJJX042NCwKKysgICAgTUlQU19BQklfTzY0LAorKyAgICBNSVBTX0FCSV9FQUJJMzIsCisrICAgIE1JUFNfQUJJX0VBQkk2NCwKKysgICAgTUlQU19BQklfTEFTVAorKyAgfTsKKysKKysvKiBGaW5kIHRoZSBtaXBzIEFCSSBvZiB0aGUgY3VycmVudCBmaWxlICovCisrZW51bSBtaXBzX2FiaSBmaW5kX21pcHNfYWJpKEVsZiAqZWxmKQorK3sKKysgIEdFbGZfRWhkciBlaGRyX21lbTsKKysgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOworKworKyAgaWYgKGVoZHIgPT0gTlVMTCkKKysgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7CisrCisrICBHRWxmX1dvcmQgZWxmX2ZsYWdzID0gZWhkci0+ZV9mbGFnczsKKysKKysgIC8qIENoZWNrIGVsZl9mbGFncyB0byBzZWUgaWYgaXQgc3BlY2lmaWVzIHRoZSBBQkkgYmVpbmcgdXNlZC4gICovCisrICBzd2l0Y2ggKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSSkpCisrICAgIHsKKysgICAgY2FzZSBFX01JUFNfQUJJX08zMjoKKysgICAgICByZXR1cm4gTUlQU19BQklfTzMyOworKyAgICBjYXNlIEVfTUlQU19BQklfTzY0OgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9FQUJJMzI6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKKysgICAgY2FzZSBFX01JUFNfQUJJX0VBQkk2NDoKKysgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OworKyAgICBkZWZhdWx0OgorKyAgICAgIGlmICgoZWxmX2ZsYWdzICYgRUZfTUlQU19BQkkyKSkKKysJcmV0dXJuIE1JUFNfQUJJX04zMjsKKysgICAgfQorKworKyAgLyogR0NDIGNyZWF0ZXMgYSBwc2V1ZG8tc2VjdGlvbiB3aG9zZSBuYW1lIGRlc2NyaWJlcyB0aGUgQUJJLiAgKi8KKysgIHNpemVfdCBzaHN0cm5keDsKKysgIGlmIChlbGZfZ2V0c2hkcnN0cm5keCAoZWxmLCAmc2hzdHJuZHgpIDwgMCkKKysgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7CisrCisrICBjb25zdCBjaGFyICpuYW1lOworKyAgRWxmX1NjbiAqc2NuID0gTlVMTDsKKysgIHdoaWxlICgoc2NuID0gZWxmX25leHRzY24gKGVsZiwgc2NuKSkgIT0gTlVMTCkKKysgICAgeworKyAgICAgIEdFbGZfU2hkciBzaGRyX21lbTsKKysgICAgICBHRWxmX1NoZHIgKnNoZHIgPSBnZWxmX2dldHNoZHIgKHNjbiwgJnNoZHJfbWVtKTsKKysgICAgICBpZiAoc2hkciA9PSBOVUxMKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7CisrCisrICAgICAgbmFtZSA9IGVsZl9zdHJwdHIgKGVsZiwgc2hzdHJuZHgsIHNoZHItPnNoX25hbWUpID86ICIiOworKyAgICAgIGlmIChzdHJuY21wIChuYW1lLCAiLm1kZWJ1Zy4iLCA4KSAhPSAwKQorKyAgICAgICAgY29udGludWU7CisrCisrICAgICAgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpMzIiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX08zMjsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaU4zMiIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTjMyOworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpNjQiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX042NDsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaU82NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTzY0OworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuZWFiaTMyIikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJMzI7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpNjQiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkk2NDsKKysgICAgICBlbHNlCisrICAgICAgICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKKysgICAgfQorKworKyAgcmV0dXJuIE1JUFNfQUJJX1VOS05PV047CisrfQorKworK3Vuc2lnbmVkIGludAorK21pcHNfYWJpX3JlZ3NpemUgKGVudW0gbWlwc19hYmkgYWJpKQorK3sKKysgIHN3aXRjaCAoYWJpKQorKyAgICB7CisrICAgIGNhc2UgTUlQU19BQklfRUFCSTMyOgorKyAgICBjYXNlIE1JUFNfQUJJX08zMjoKKysgICAgICByZXR1cm4gNDsKKysgICAgY2FzZSBNSVBTX0FCSV9OMzI6CisrICAgIGNhc2UgTUlQU19BQklfTjY0OgorKyAgICBjYXNlIE1JUFNfQUJJX082NDoKKysgICAgY2FzZSBNSVBTX0FCSV9FQUJJNjQ6CisrICAgICAgcmV0dXJuIDg7CisrICAgIGNhc2UgTUlQU19BQklfVU5LTk9XTjoKKysgICAgY2FzZSBNSVBTX0FCSV9MQVNUOgorKyAgICBkZWZhdWx0OgorKyAgICAgIHJldHVybiAwOworKyAgICB9CisrfQorKworKworKy8qICR2MCBvciBwYWlyICR2MCwgJHYxICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdfbzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWczIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgIH07CisrCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfaW50cmVnCTEKKysjZGVmaW5lIG5sb2NfaW50cmVncGFpcgk0CisrCisrLyogJGYwIChmbG9hdCksIG9yIHBhaXIgJGYwLCAkZjEgKGRvdWJsZSkuCisrICogZjIvZjMgYXJlIHVzZWQgZm9yIENPTVBMRVggKD0gMiBkb3VibGVzKSByZXR1cm5zIGluIEZvcnRyYW4gKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnX28zMltdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM0IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNSB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICB9OworKworKy8qICRmMCwgb3IgcGFpciAkZjAsICRmMi4gICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfZnByZWcgIDEKKysjZGVmaW5lIG5sb2NfZnByZWdwYWlyIDQKKysjZGVmaW5lIG5sb2NfZnByZWdxdWFkIDgKKysKKysvKiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0dXJlIGFuZCBpcyBhY3R1YWxseSBzdG9yZWQgaW4gc3RhY2sgc3BhY2UKKysgICBwYXNzZWQgaW4gYSBoaWRkZW4gYXJndW1lbnQgYnkgdGhlIGNhbGxlci4gIEJ1dCwgdGhlIGNvbXBpbGVyCisrICAgaGVscGZ1bGx5IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhhdCBzcGFjZSBpbiAkdjAuICAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfYWdncmVnYXRlW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfYnJlZzIsIC5udW1iZXIgPSAwIH0KKysgIH07CisrI2RlZmluZSBubG9jX2FnZ3JlZ2F0ZSAxCisrCisraW50CisrbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyt7CisrICAvKiBGaXJzdCBmaW5kIHRoZSBBQkkgdXNlZCBieSB0aGUgZWxmIG9iamVjdCAqLworKyAgZW51bSBtaXBzX2FiaSBhYmkgPSBmaW5kX21pcHNfYWJpKGZ1bmN0eXBlZGllLT5jdS0+ZGJnLT5lbGYpOworKworKyAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nIHdoaWxlIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBBQkkgKi8KKysgIGlmIChhYmkgPT0gTUlQU19BQklfTEFTVCkKKysgICAgcmV0dXJuIC0xOworKworKyAgLyogV2UgY291bGRuJ3QgaWRlbnRpZnkgdGhlIEFCSSwgYnV0IHRoZSBmaWxlIHNlZW1zIHZhbGlkICovCisrICBpZiAoYWJpID09IE1JUFNfQUJJX1VOS05PV04pCisrICAgIHJldHVybiAtMjsKKysKKysgIC8qIENhbid0IGhhbmRsZSBFQUJJIHZhcmlhbnRzICovCisrICBpZiAoKGFiaSA9PSBNSVBTX0FCSV9FQUJJMzIpIHx8IChhYmkgPT0gTUlQU19BQklfRUFCSTY0KSkKKysgICAgcmV0dXJuIC0yOworKworKyAgdW5zaWduZWQgaW50IHJlZ3NpemUgPSBtaXBzX2FiaV9yZWdzaXplIChhYmkpOworKyAgaWYgKCFyZWdzaXplKQorKyAgICByZXR1cm4gLTI7CisrCisrICAvKiBTdGFydCB3aXRoIHRoZSBmdW5jdGlvbidzIHR5cGUsIGFuZCBnZXQgdGhlIERXX0FUX3R5cGUgYXR0cmlidXRlLAorKyAgICAgd2hpY2ggaXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybiB2YWx1ZS4gICovCisrCisrICBEd2FyZl9BdHRyaWJ1dGUgYXR0cl9tZW07CisrICBEd2FyZl9BdHRyaWJ1dGUgKmF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAoZnVuY3R5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7CisrICBpZiAoYXR0ciA9PSBOVUxMKQorKyAgICAvKiBUaGUgZnVuY3Rpb24gaGFzIG5vIHJldHVybiB2YWx1ZSwgbGlrZSBhIGB2b2lkJyBmdW5jdGlvbiBpbiBDLiAgKi8KKysgICAgcmV0dXJuIDA7CisrCisrICBEd2FyZl9EaWUgZGllX21lbTsKKysgIER3YXJmX0RpZSAqdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisrICBpbnQgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKysKKysgIC8qIEZvbGxvdyB0eXBlZGVmcyBhbmQgcXVhbGlmaWVycyB0byBnZXQgdG8gdGhlIGFjdHVhbCB0eXBlLiAgKi8KKysgIHdoaWxlICh0YWcgPT0gRFdfVEFHX3R5cGVkZWYKKysJIHx8IHRhZyA9PSBEV19UQUdfY29uc3RfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3ZvbGF0aWxlX3R5cGUKKysJIHx8IHRhZyA9PSBEV19UQUdfcmVzdHJpY3RfdHlwZSkKKysgICAgeworKyAgICAgIGF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysgICAgICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysgICAgICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKyAgICB9CisrCisrICBzd2l0Y2ggKHRhZykKKysgICAgeworKyAgICBjYXNlIC0xOgorKyAgICAgIHJldHVybiAtMTsKKysKKysgICAgY2FzZSBEV19UQUdfc3VicmFuZ2VfdHlwZToKKysgICAgICBpZiAoISBkd2FyZl9oYXNhdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplKSkKKysJeworKwkgIGF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysJICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKwl9CisrICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysKKysgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorKyAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorKyAgICBjYXNlIERXX1RBR19wb2ludGVyX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZToKKysgICAgICB7CisrICAgICAgICBEd2FyZl9Xb3JkIHNpemU7CisrCWlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUsCisrCQkJCQkgJmF0dHJfbWVtKSwgJnNpemUpICE9IDApCisrCSAgeworKwkgICAgaWYgKHRhZyA9PSBEV19UQUdfcG9pbnRlcl90eXBlIHx8IHRhZyA9PSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlKQorKwkgICAgICBzaXplID0gcmVnc2l6ZTsKKysJICAgIGVsc2UKKysJICAgICAgcmV0dXJuIC0xOworKwkgIH0KKysJaWYgKHRhZyA9PSBEV19UQUdfYmFzZV90eXBlKQorKwkgIHsKKysJICAgIER3YXJmX1dvcmQgZW5jb2Rpbmc7CisrCSAgICBpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfZW5jb2RpbmcsCisrCQkJCQkgICAgICZhdHRyX21lbSksICZlbmNvZGluZykgIT0gMCkKKysJICAgICAgcmV0dXJuIC0xOworKworKyNkZWZpbmUgQUJJX0xPQyhsb2MsIHJlZ3NpemUpICgocmVnc2l6ZSkgPT0gNCA/IChsb2MgIyMgX28zMikgOiAobG9jKSkKKysKKysJICAgIGlmIChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpCisrCSAgICAgIHsKKysJCSpsb2NwID0gQUJJX0xPQyhsb2NfZnByZWcsIHJlZ3NpemUpOworKwkJaWYgKHNpemUgPD0gcmVnc2l6ZSkKKysJCSAgICByZXR1cm4gbmxvY19mcHJlZzsKKysKKysJCWlmIChzaXplIDw9IDIqcmVnc2l6ZSkKKysgICAgICAgICAgICAgICAgICByZXR1cm4gbmxvY19mcHJlZ3BhaXI7CisrCisrCQlpZiAoc2l6ZSA8PSA0KnJlZ3NpemUgJiYgYWJpID09IE1JUFNfQUJJX08zMikKKysgICAgICAgICAgICAgICAgICByZXR1cm4gbmxvY19mcHJlZ3F1YWQ7CisrCisrCQlnb3RvIGFnZ3JlZ2F0ZTsKKysJICAgICAgfQorKwkgIH0KKysJKmxvY3AgPSBBQklfTE9DKGxvY19pbnRyZWcsIHJlZ3NpemUpOworKwlpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkgIHJldHVybiBubG9jX2ludHJlZzsKKysJaWYgKHNpemUgPD0gMipyZWdzaXplKQorKwkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7CisrCisrCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiBTaG91bGRuJ3QgaGFwcGVuIHRob3VnaCAoYXQgbGVhc3Qgd2l0aCBnY2MpICovCisrICAgICAgfQorKworKyAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKysgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKysgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKKysgICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZToKKysgICAgYWdncmVnYXRlOgorKyAgICAgIC8qIFhYWCBUT0RPOiBDYW4ndCBoYW5kbGUgc3RydWN0dXJlIHJldHVybiB3aXRoIG90aGVyIEFCSSdzIHlldCA6LS8gKi8KKysgICAgICBpZiAoKGFiaSAhPSBNSVBTX0FCSV9PMzIpICYmIChhYmkgIT0gTUlQU19BQklfTzY0KSkKKysgICAgICAgIHJldHVybiAtMjsKKysKKysgICAgICAqbG9jcCA9IGxvY19hZ2dyZWdhdGU7CisrICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOworKyAgICB9CisrCisrICAvKiBYWFggV2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IHRvIHJldHVybiBzcGVjaWZpYyBlcnJvcnMgZnJvbSBlYmwgY2FsbHMuCisrICAgICBUaGlzIHZhbHVlIG1lYW5zIHdlIGRvIG5vdCB1bmRlcnN0YW5kIHRoZSB0eXBlLCBidXQgaXQgaXMgd2VsbC1mb3JtZWQKKysgICAgIERXQVJGIGFuZCBtaWdodCBiZSB2YWxpZC4gICovCisrICByZXR1cm4gLTI7CisrfQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmE0NjVmZQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19zeW1ib2wuYworQEAgLTAsMCArMSw1MiBAQAorKy8qIE1JUFMgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrICAgV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiwgMjAwMi4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxlbGYuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrI2RlZmluZSBCQUNLRU5ECQltaXBzXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrLyogQ2hlY2sgZm9yIHRoZSBzaW1wbGUgcmVsb2MgdHlwZXMuICAqLworK0VsZl9UeXBlCisrbWlwc19yZWxvY19zaW1wbGVfdHlwZSAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgdHlwZSkKKyt7CisrICBzd2l0Y2ggKHR5cGUpCisrICAgIHsKKysgICAgY2FzZSBSX01JUFNfMTY6CisrICAgICAgcmV0dXJuIEVMRl9UX0hBTEY7CisrICAgIGNhc2UgUl9NSVBTXzMyOgorKyAgICAgIHJldHVybiBFTEZfVF9XT1JEOworKyAgICBjYXNlIFJfTUlQU182NDoKKysgICAgICByZXR1cm4gRUxGX1RfWFdPUkQ7CisrICAgIGRlZmF1bHQ6CisrICAgICAgcmV0dXJuIEVMRl9UX05VTTsKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCitpbmRleCAxZjgxNDc3Li41MzcxMzk2IDEwMDY0NAorLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKKysrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCitAQCAtNzIsNiArNzIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CisgICB7ICJzcGFyYyIsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAorICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKKyAgIHsgInMzOTAiLCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKKysgIHsgIm1pcHMiLCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKKysgIHsgIm1pcHMiLCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAorIAorICAgeyAibTMyIiwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCisgICB7ICJtNjhrIiwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCmluZGV4IDYzMGYyZTQuLmUyZDI0ZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCkBAIC0xNiw3ICsxNiw3IEBACiBERVBFTkRTICs9ICJ0Y2wiCiBSREVQRU5EU18ke1BOfSA9ICJ0Y2wiCiAKLWluaGVyaXQgYXV0b3Rvb2xzCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIFBSID0gInIxIgogCkBAIC01Nyw2ICs1NywxMSBAQAogICAgICAgICAgICAgICAgICIKIEVYVFJBX09FTUFLRV9pbnN0YWxsID0gIiAnU0NSSVBUUz0nICIKIAorQUxURVJOQVRJVkVfJHtQTn0gID0gIm1rcGFzc3dkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21rcGFzc3dkXSA9ICIke2JpbmRpcn0vbWtwYXNzd2QiCisjIFVzZSBsb3dlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBta3Bhc3N3ZCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0NSWVBUUFcpCitBTFRFUk5BVElWRV9QUklPUklUWVtta3Bhc3N3ZF0gPSAiNDAiCisKIEZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcl9uYXRpdmV9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gXAogICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0LmggXAogICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0X3RjbC5oIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjJhOTAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdHkgZm9yIG1vZGlmeWluZyBHUFQgZGlzayBwYXJ0aXRpb25pbmciCi1ERVNDUklQVElPTiA9ICJHUFQgZmRpc2sgaXMgYSBkaXNrIHBhcnRpdGlvbmluZyB0b29sIGxvb3NlbHkgbW9kZWxlZCBvbiBMaW51eCBmZGlzaywgYnV0IHVzZWQgZm9yIG1vZGlmeWluZyBHVUlEIFBhcnRpdGlvbiBUYWJsZSAoR1BUKSBkaXNrcy4gVGhlIHJlbGF0ZWQgRml4UGFydHMgdXRpbGl0eSBmaXhlcyBzb21lIGNvbW1vbiBwcm9ibGVtcyBvbiBNYXN0ZXIgQm9vdCBSZWNvcmQgKE1CUikgZGlza3MuIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBwb3B0IG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDdmM2QzMDZiMDgzMTIzYmNjNmY1OTQxZWZhZGU1ODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY0YzhhZWUyZWZkZGE1MDM0NjgwNGQ3ZTYyMzA0MDdkNWY0MmE4YWU3NTRkZjcwNDA0ZGQ4YjJmZGZhZWFjNyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ3B0ZmRpc2svZmlsZXMvZ3B0ZmRpc2svIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dwdGZkaXNrLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLUVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdDWFg9JHtDWFh9JyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGNnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBzZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgZml4cGFydHMgJHtEfSR7c2JpbmRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MTdlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjMuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBtb2RpZnlpbmcgR1BUIGRpc2sgcGFydGl0aW9uaW5nIgorREVTQ1JJUFRJT04gPSAiR1BUIGZkaXNrIGlzIGEgZGlzayBwYXJ0aXRpb25pbmcgdG9vbCBsb29zZWx5IG1vZGVsZWQgb24gTGludXggZmRpc2ssIGJ1dCB1c2VkIGZvciBtb2RpZnlpbmcgR1VJRCBQYXJ0aXRpb24gVGFibGUgKEdQVCkgZGlza3MuIFRoZSByZWxhdGVkIEZpeFBhcnRzIHV0aWxpdHkgZml4ZXMgc29tZSBjb21tb24gcHJvYmxlbXMgb24gTWFzdGVyIEJvb3QgUmVjb3JkIChNQlIpIGRpc2tzLiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gInV0aWwtbGludXggcG9wdCBuY3Vyc2VzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtQVn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjA3YjYyNWE1ODNiNjZjOGM1ODQwYmU1OTIzZjNlM2ZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5ZmQ1YWVjMzVjNDA5ZDYxMGEzNmNiNDljNjViNDQyMDU4NTY1ZWQ4NDA0MmY3NjdiYmE2MTRiOGZjOTFiNWMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dwdGZkaXNrL2ZpbGVzL2dwdGZkaXNrLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9ncHRmZGlzay8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnQ1hYPSR7Q1hYfSciCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBjZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgc2dkaXNrICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGZpeHBhcnRzICR7RH0ke3NiaW5kaXJ9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCmluZGV4IDFlZjQ4NWUuLmQzMWFjNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaApAQCAtMSwxOSArMSwzMCBAQAotVGhlIGF3ayBwYXR0ZXJuIHdhcyBjaGVja2VkICpiZWZvcmUqIHRoZSBQZXJsIHBhdHRlcm4sIHNvIHRoZSBwZXJsCi1zY3JpcHQgd2l0aCBCRUdJTnsuLi59IHdvdWxkIGJlIHJlcG9ydGVkIGFzIGF3aywgdGhpcyBwYXRjaCBmaXhlcyBpdC4KK1RoZSBhd2sgcGF0dGVybiB3YXMgY2hlY2tlZCAqYmVmb3JlKiB0aGUgUGVybCBwYXR0ZXJuLCBzbyB0aGUKK3Blcmwgc2NyaXB0IHdpdGggQkVHSU57Li4ufSB3b3VsZCBiZSByZXBvcnRlZCBhcyBhd2ssIHRoaXMgcGF0Y2ggZml4ZXMgaXQuCiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KIAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEJpZWRsIDxkZWJpYW4uYXhobkBtYW5jaG1hbC5pbi11bG0uZGU+CiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIG9uIDUuMzEKKworU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIC0tLQorIG1hZ2ljL01hZ2Rpci9jb21tYW5kcyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCiBkaWZmIC0tZ2l0IGEvbWFnaWMvTWFnZGlyL2NvbW1hbmRzIGIvbWFnaWMvTWFnZGlyL2NvbW1hbmRzCitpbmRleCAxYTQ2ZWZkLi4yNTVjMDRiIDEwMDY0NAogLS0tIGEvbWFnaWMvTWFnZGlyL2NvbW1hbmRzCiArKysgYi9tYWdpYy9NYWdkaXIvY29tbWFuZHMKIEBAIC01Nyw2ICs1Nyw3IEBACiAgMAlzdHJpbmcvd3QJIyFcIC91c3IvYmluL2F3awlhd2sgc2NyaXB0IHRleHQgZXhlY3V0YWJsZQogICE6bWltZQl0ZXh0L3gtYXdrCi0gMAlyZWdleC80MDk2CT1eXFxzezAsMTAwfUJFR0lOXFxzezAsMTAwfVt7XQlhd2sgb3IgcGVybCBzY3JpcHQgdGV4dAorIDAJcmVnZXgvNDA5Ngk9XltBLVphLXowLTlfXXswLDEwMH1CRUdJTltBLVphLXowLTlfXXswLDEwMH1be10JYXdrIG9yIHBlcmwgc2NyaXB0IHRleHQKICshOnN0cmVuZ3RoIC0gMTIKICAKICAjIEFUJlQgQmVsbCBMYWJzJyBQbGFuIDkgc2hlbGwKICAwCXN0cmluZy93dAkjIVwgL2Jpbi9yYwlQbGFuIDkgcmMgc2hlbGwgc2NyaXB0IHRleHQgZXhlY3V0YWJsZQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5OGZjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCi1vbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgdHdvIGNsYXVzZSBCU0QKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCi0KLURFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi0jIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjawotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDUkVWID0gIjc5ODE0OTUwYWFmYjgxZWNkNmE5MTBjMmE4YTNiOGVjMTJmM2U0YTYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KLSMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KLWJpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMWY1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAorb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIHR3byBjbGF1c2UgQlNECitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTZhNzM4Mjg3MmVkYjY4ZDMzZTFhOTM5OGI2ZTAzMTg4IgorCitERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworIyBCbGFja2xpc3QgYSBib2d1cyB0YWcgaW4gdXBzdHJlYW0gY2hlY2sKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIkZJTEUoP1A8cHZlcj4oPyE2XzIzKS4rKSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQgXAorICAgICAgICBmaWxlOi8vZGViaWFuLTc0MjI2Mi5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ1JFViA9ICI3MGM1ZjE1MDYwYzdhZDgxMTUwMTc3ZGU4M2EzZTY0NTAwYTU0YzlmIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtc3RkPWM5OSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCmluZGV4IGFiMzViMDkuLmE5MDZmZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCkBAIC01NSw3ICs1NSwxMSBAQAogCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KIAljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KIAljcCAtciAke0J9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAorCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIFwKIAkgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCiAJICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyAtZSAncy9edG9wX2J1aWxkZGlyID0gXCguKlwpL3RvcF9idWlsZGRpciA9IC4vJyBcCiAJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzY5Njc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLXJlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKLQotIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCi0KLVBWID0gIjUuNC4wIgotCi0jU05BUCA9ICI1LTIwMTUwNDA1IgotCi0jIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQotCi1CSU5WID0gIjUuNC4wIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtNS40OiR7RklMRV9ESVJOQU1FfS9nY2MtNS40L2JhY2twb3J0OiIKLQotREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIiCi1OQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCi0iCi0jQkFTRVVSSSA9ICJodHRwOi8vd3d3Lm5ldGd1bGwuY29tL2djYy9zbmFwc2hvdHMvJHtTTkFQfS9nY2MtJHtTTkFQfS50YXIuYnoyIgotQkFTRVVSSSA9ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUkkgPSAiXAotICAgICAgICAgICAke0JBU0VVUkl9IFwKLSAgICAgICAgICAgJHtCQUNLUE9SVFN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbGliYy1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktYzk5LXNucHJpbnRmLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOC1maXgtZy1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Mi1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQzLWxpYnN0ZGMtU3VwcG9ydC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ1LVN1cHBvcnQtZm9yLWFybS1saW51eC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDYtR2V0LXJpZC1vZi1ldmVyLWJyb2tlbi1maXhpbmNsdWRlcy1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1zc3Bfbm9uc2hhcmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU4LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU5LWxpYmdjYy11c2UtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MTMxLnBhdGNoIFwKLSIKLQotQkFDS1BPUlRTID0gIiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRjNjI2YWMyYTgzZWYzMGRmYjkyNjBlNmY1OWMyYjMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwOGRmNzZkZWMyZDM0ZGU2NTU4MjQ5ZDhhZjRjYmVlMjFlY2VkZGJjYjU4MGQ2NjZmN2E1YTU4M2NhMzMwM2EiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImdjYy0oP1A8cHZlcj41XC5cZCtcLlxkKykudGFyIgotCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1NOQVB9IgotUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKLUIgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotSkFWQSA9ICIiCi0KLUxUTyA9ICItLWVuYWJsZS1sdG8iCi0KLUVYVFJBX09FQ09ORl9CQVNFID0gIlwKLSAgICAke0xUT30gXAotICAgIC0tZW5hYmxlLWxpYnNzcCBcCi0gICAgLS1lbmFibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgIgotCi1FWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAotICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAotICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAotICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWVhZDk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA2MDI5YmIzMzgzMDVhNWQxNDAzZWUyMzQyN2VkOGQ1OGVhZTFmZjUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS80Nl0gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZSAgICB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGEzZjY2YmEuLjFjYmEzYTkgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTc0NjQsNyArNzQ2NCw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk4N2RmYWIuLmQzYWRiOTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxMDQsNyArMzEwNCw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAyLXVjbGliYy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAyLXVjbGliYy1jb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDZhZWI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMi11Y2xpYmMtY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gYjY3YzNhODQ0YmNjZWMxNzY2YTdlYzEyMGUyZDE4Y2RjYmM1ZjExNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM4OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvNDZdIHVjbGliYy1jb25mCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoIHwgNCArKysrCi0gbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgICAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggYi9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLWluZGV4IDYwYjA0OTcuLjZkYzdlYWQgMTAwNzU1Ci0tLS0gYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLSsrKyBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotQEAgLTEwNiw2ICsxMDYsMTAgQEAgaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCAtYSAkSF9SRUFMX1RBUkdFVCA9IGk2ODYtcGMtbGludXgtZ251IF0KLSAgdGhlbgotICAgbWFrZSBhbGwtZ2RiIGFsbC1kZWphZ251IGFsbC1sZCB8fCBleGl0IDEKLSAgIG1ha2UgaW5zdGFsbC1nZGIgaW5zdGFsbC1kZWphZ251IGluc3RhbGwtbGQgfHwgZXhpdCAxCi0rZWxpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC11Y2xpYmMgXQotKyB0aGVuCi0rICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotKyAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLSBlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgXSA7IHRoZW4KLSAgIG1ha2UgYm9vdHN0cmFwIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsIHx8IGV4aXQgMQotZGlmZiAtLWdpdCBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLWluZGV4IDc0M2Q5NTEuLmFlNGVhNjAgMTAwNzU1Ci0tLS0gYS9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotKysrIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLUBAIC02MDMsNyArNjAzLDcgQEAgaG9zdF9vcz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0gCi0gIyBUcmFuc2Zvcm0gbGludXgqIHRvICotKi1saW51eC1nbnUqLCB0byBzdXBwb3J0IG9sZCBjb25maWd1cmUgc2NyaXB0cy4KLSBjYXNlICRob3N0X29zIGluCi0tbGludXgtZ251KikgOzsKLStsaW51eC1nbnUqfGxpbnV4LXVjbGliYyopIDs7Ci0gbGludXgqKSBob3N0PWBlY2hvICRob3N0IHwgc2VkICdzL15cKC4qLS4qLWxpbnV4XClcKC4qXCkkL1wxLWdudVwyLydgCi0gZXNhYwotIAotQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGxpbnV4LWdudW9sZGxkKiB8IGxpbnV4LWdudWFvdXQqIHwgbGludXgtZ251Y29mZiopCi0gICA7OwotIAotICMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLS1saW51eC1nbnUqKQotK2xpbnV4KikKLSAgIHZlcnNpb25fdHlwZT1saW51eAotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICBuZWVkX3ZlcnNpb249bm8KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMDMyNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gOWJjYjNhMTg0OGZmMGY4OTkwMzAxY2EwOWEyNWIxNWMyY2Y5MGM2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQwOjEyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvNDZdIGdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgfCA1ICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oICB8IDkgKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oICB8IDkgKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotaW5kZXggNmRhNWYyMi4uMmY4NWMyZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLUBAIC0yNjMsNSArMjYzLDEwIEBAIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgotICNpZmRlZiBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKLSAjZGVmaW5lIF9HTElCQ1hYX0xEQkxfQ09NUEFUKGRibCwgbGRibCkgXAotICAgZXh0ZXJuICJDIiB2b2lkIGxkYmwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChhbGlhcyAoI2RibCkpKQotKyNpZmRlZiBfX1VDTElCQ19fCi0rLy8gVGhpcyBpcyBiZWNhdXNlIF9fY19sb2NhbGUgaXMgb2YgdHlwZSBfX2N0eXBlX3RvdXBsb3dfdCogd2hpY2ggaXMgc2hvcnQgb24gdWNsaWJjLiBmb3IgZ2xpYmMgaXRzIGludCoKLStfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUHMsIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcyk7Ci0rI2Vsc2UKLSBfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUGksIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSk7Ci0rI2VuZGlmCi0gI2VuZGlmIC8vIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotaW5kZXggZWUzZWY4Ni4uN2ZkNTQ4NSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1AQCAtNDAsMTMgKzQwLDIyIEBACi0gCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSAKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgdHlwZWRlZiBfX2N0eXBlX3RvdXBsb3dfdCoJX19jX2xvY2FsZTsKLSsjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSAKLSAgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBhbmQgbG9uZyBkb3VibGUgdG8gc3RyaW5nIGFuZAotICAgLy8gcmV0dXJuIGxlbmd0aCBvZiBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi1pbmRleCBmZDUyYjczLi4yNjI3Y2YzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLUBAIC0zMyw2ICszMywxMSBAQAotIAotIC8vIEluZm9ybWF0aW9uIGFzIGdsZWFuZWQgZnJvbSAvdXNyL2luY2x1ZGUvY3R5cGUuaAotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCi0gewotIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi1AQCAtNDEsNyArNDYsMTEgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAgIHN0cnVjdCBjdHlwZV9iYXNlCi0gICB7Ci0gICAgIC8vIE5vbi1zdGFuZGFyZCB0eXBlZGVmcy4KLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KglfX3RvX3R5cGU7Ci0rI2Vsc2UKLSAgICAgdHlwZWRlZiBjb25zdCBpbnQqIAkJX190b190eXBlOwotKyNlbmRpZgotIAotICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBhcnRpY3VsYXIgc2l6ZQotICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBhbiBlbnVtLgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTYyNjVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg2MiArMCwwIEBACi1Gcm9tIGJkOWRkNDcyZDE2MmZjNzI1MjJmOTZmNzBmNjM5MWM3YzYzZDJiZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0MTozOSArMDQwMAotU3ViamVjdDogW1BBVENIIDA0LzQ2XSB1Y2xpYmMtbG9jYWxlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICA2MyArKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAxMTcgKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MgICAgICAgIHwgMzA4ICsrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgICAgICAgIHwgIDgwICsrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgMzAwICsrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjICAgICAgIHwgMTAwICsrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggICAgICAgIHwgMTE4ICsrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8IDY5MiArKysrKysrKysrKysrKysrKysrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8IDE2MCArKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgNDA2ICsrKysrKysrKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCAgIHwgIDY4ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzUgKysrCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmggICAgICAgfCAgIDIgKwotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhciAgICAgICAgICAgICAgICAgIHwgICAyICsKLSAxNiBmaWxlcyBjaGFuZ2VkLCAyNjg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00IGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotaW5kZXggODI2ZWY4Ni4uNzljYzcxNiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLSsrKyBiL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLUBAIC0yMDI5LDYgKzIwMjksOSBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTIyMTMsNiArMjIxNiw0MCBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvdGltZV9tZW1iZXJzLmNjCi0gICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotICAgICAgIDs7Ci0rICAgIHVjbGliYykKLSsgICAgICBBQ19NU0dfUkVTVUxUKHVjbGliYykKLSsKLSsgICAgICAjIERlY2xhcmUgaW50ZW50aW9uIHRvIHVzZSBnZXR0ZXh0LCBhbmQgYWRkIHN1cHBvcnQgZm9yIHNwZWNpZmljCi0rICAgICAgIyBsYW5ndWFnZXMuCi0rICAgICAgIyBGb3Igc29tZSByZWFzb24sIEFMTF9MSU5HVUFTIGhhcyB0byBiZSBiZWZvcmUgQU0tR05VLUdFVFRFWFQKLSsgICAgICBBTExfTElOR1VBUz0iZGUgZnIiCi0rCi0rICAgICAgIyBEb24ndCBjYWxsIEFNLUdOVS1HRVRURVhUIGhlcmUuIEluc3RlYWQsIGFzc3VtZSBnbGliYy4KLSsgICAgICBBQ19DSEVDS19QUk9HKGNoZWNrX21zZ2ZtdCwgbXNnZm10LCB5ZXMsIG5vKQotKyAgICAgIGlmIHRlc3QgeCIkY2hlY2tfbXNnZm10IiA9IHgieWVzIiAmJiB0ZXN0IHgiJGVuYWJsZV9ubHMiID0geCJ5ZXMiOyB0aGVuCi0rICAgICAgICBVU0VfTkxTPXllcwotKyAgICAgIGZpCi0rICAgICAgIyBFeHBvcnQgdGhlIGJ1aWxkIG9iamVjdHMuCi0rICAgICAgZm9yIGxpbmcgaW4gJEFMTF9MSU5HVUFTOyBkbyBcCi0rICAgICAgICBnbGliY3h4X01PRklMRVM9IiRnbGliY3h4X01PRklMRVMgJGxpbmcubW8iOyBcCi0rICAgICAgICBnbGliY3h4X1BPRklMRVM9IiRnbGliY3h4X1BPRklMRVMgJGxpbmcucG8iOyBcCi0rICAgICAgZG9uZQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfTU9GSUxFUykKLSsgICAgICBBQ19TVUJTVChnbGliY3h4X1BPRklMRVMpCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYWUzZTRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0wLDAgKzEsNjMgQEAKLSsvLyBQcm90b3R5cGVzIGZvciBHTElCQyB0aHJlYWQgbG9jYWxlIF9fLXByZWZpeGVkIGZ1bmN0aW9ucyAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLyBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0rI2luY2x1ZGUgPGNsb2NhbGU+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihubF9sYW5naW5mb19sKSBfX25sX2xhbmdpbmZvX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJjb2xsX2wpIF9fc3RyY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RyZnRpbWVfbCkgX19zdHJmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9kX2wpIF9fc3RydG9kX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2ZfbCkgX19zdHJ0b2ZfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvbGRfbCkgX19zdHJ0b2xkX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ4ZnJtX2wpIF9fc3RyeGZybV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YobmV3bG9jYWxlKSBfX25ld2xvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGZyZWVsb2NhbGUpIF9fZnJlZWxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGR1cGxvY2FsZSkgX19kdXBsb2NhbGU7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK2V4dGVybiAiQyIgX190eXBlb2YoaXN3Y3R5cGVfbCkgX19pc3djdHlwZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93bG93ZXJfbCkgX190b3dsb3dlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93dXBwZXJfbCkgX190b3d1cHBlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzY29sbF9sKSBfX3djc2NvbGxfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc2Z0aW1lX2wpIF9fd2NzZnRpbWVfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUwODFkYzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTAsMCArMSwxNjAgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxjZXJybm8+ICAvLyBGb3IgZXJybm8KLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0rI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cnRvbF9sKFMsIEUsIEIsIEwpICAgICAgc3RydG9sKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvdWxfbChTLCBFLCBCLCBMKSAgICAgc3RydG91bCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2xsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvbGwoKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bGxfbChTLCBFLCBCLCBMKSAgICBzdHJ0b3VsbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rI2RlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotKyNkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2Y7Ci0rCSAgZWxzZQotKwkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19sZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICBfX2NfbG9jYWxlIF9fb2xkKQotKyAgewotKyAgICBfX2Nsb2MgPSBfX25ld2xvY2FsZSgxIDw8IExDX0FMTCwgX19zLCBfX29sZCk7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgaWYgKCFfX2Nsb2MpCi0rICAgICAgewotKwkvLyBUaGlzIG5hbWVkIGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIE9TLgotKwlfX3Rocm93X3J1bnRpbWVfZXJyb3IoX19OKCJsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUgIgotKwkJCSAgICAgICJuYW1lIG5vdCB2YWxpZCIpKTsKLSsgICAgICB9Ci0rI2VuZGlmCi0rICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19kZXN0cm95X2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsKLSsgICAgaWYgKF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSsgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSsgIH0KLSsKLSsgIF9fY19sb2NhbGUKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLSt9IC8vIG5hbWVzcGFjZSBzdGQKLSsKLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0rICAgIHsKLSsgICAgICAiTENfQ1RZUEUiLAotKyAgICAgICJMQ19OVU1FUklDIiwKLSsgICAgICAiTENfVElNRSIsCi0rICAgICAgIkxDX0NPTExBVEUiLAotKyAgICAgICJMQ19NT05FVEFSWSIsCi0rICAgICAgIkxDX01FU1NBR0VTIiwKLSsjaWYgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgIT0gMAotKyAgICAgICJMQ19QQVBFUiIsCi0rICAgICAgIkxDX05BTUUiLAotKyAgICAgICJMQ19BRERSRVNTIiwKLSsgICAgICAiTENfVEVMRVBIT05FIiwKLSsgICAgICAiTENfTUVBU1VSRU1FTlQiLAotKyAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSsjZW5kaWYKLSsgICAgfTsKLSt9Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotK30gIC8vIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGEwN2MxZgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC0wLDAgKzEsMTE3IEBACi0rLy8gV3JhcHBlciBmb3IgdW5kZXJseWluZyBDLWxhbmd1YWdlIGxvY2FsaXphdGlvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjggIFN0YW5kYXJkIGxvY2FsZSBjYXRlZ29yaWVzLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZuZGVmIF9DX0xPQ0FMRV9ICi0rI2RlZmluZSBfQ19MT0NBTEVfSCAxCi0rCi0rI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotKwotKyNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4JCS8vIEZvciBjb2RlY3Z0Ci0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rI2VuZGlmCi0rI2RlZmluZSBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgMQotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBjYXRlZ29yaWVzCi0rI2VuZGlmCi0rLy8gI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyA2Ci0rI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAwCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotK30KLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICB0eXBlZGVmIF9fbG9jYWxlX3QJCV9fY19sb2NhbGU7Ci0rI2Vsc2UKLSsgIHR5cGVkZWYgaW50KgkJCV9fY19sb2NhbGU7Ci0rI2VuZGlmCi0rCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBfVHYgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiBzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHNwcmludGYgd2hpY2gsIGluIGdlbmVyYWwsIGNhbiBiZSBkYW5nZXJvdXMgYW5kIHNob3VsZAotKyAgLy8gYmUgYXZvaWRlZC4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9Udj4KLSsgICAgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYywgaW50IF9fcHJlYykKLSsgICAgewotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0rI2Vsc2UKLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fc2F2LCBfX29sZCk7Ci0rICAgICAgc3RkOjpzZXRsb2NhbGUoTENfQUxMLCAiQyIpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0rI2VuZGlmCi0rICAgICAgcmV0dXJuIF9fcmV0OwotKyAgICB9Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRhYTk2MgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYwotQEAgLTAsMCArMSwzMDggQEAKLSsvLyBzdGQ6OmNvZGVjdnQgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuNSAtIFRlbXBsYXRlIGNsYXNzIGNvZGVjdnQKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4gIC8vIEZvciBNQl9DVVJfTUFYCi0rI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBGb3IgTUJfTEVOX01BWAotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tLAotKwkgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCSBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwkgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0Ci0rICB7Ci0rICAgIHJlc3VsdCBfX3JldCA9IG9rOwotKyAgICBzdGF0ZV90eXBlIF9fdG1wX3N0YXRlKF9fc3RhdGUpOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKLSsjZW5kaWYKLSsKLSsgICAgLy8gd2NzbnJ0b21icyBpcyAqdmVyeSogZmFzdCBidXQgc3RvcHMgaWYgZW5jb3VudGVycyBOVUwgY2hhcmFjdGVyczoKLSsgICAgLy8gaW4gY2FzZSB3ZSBmYWxsIGJhY2sgdG8gd2NydG9tYiBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogd2NzbnJ0b21icyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQgPSB3bWVtY2hyKF9fZnJvbV9uZXh0LCBMJ1wwJywKLSsJCQkJCQkgICAgICBfX2Zyb21fZW5kIC0gX19mcm9tX25leHQpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwljb25zdCBzaXplX3QgX19jb252ID0gd2NzbnJ0b21icyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCQkgX190b19lbmQgLSBfX3RvX25leHQsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gd2NydG9tYi4KLSsJICAgIGZvciAoOyBfX2Zyb20gPCBfX2Zyb21fbmV4dDsgKytfX2Zyb20pCi0rCSAgICAgIF9fdG9fbmV4dCArPSB3Y3J0b21iKF9fdG9fbmV4dCwgKl9fZnJvbSwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBleHRlcm5fdHlwZSBfX2J1ZltNQl9MRU5fTUFYXTsKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgIGNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3J0b21iKF9fYnVmLCAqX19mcm9tX25leHQsICZfX3RtcF9zdGF0ZSk7Ci0rCSAgICBpZiAoX19jb252ID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3RvX2VuZCAtIF9fdG9fbmV4dCkpCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJbWVtY3B5KF9fdG9fbmV4dCwgX19idWYsIF9fY29udik7Ci0rCQlfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCQlfX3RvX25leHQgKz0gX19jb252OwotKwkJKytfX2Zyb21fbmV4dDsKLSsJICAgICAgfQotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBleHRlcm5fdHlwZSomIF9fZnJvbV9uZXh0LAotKwlpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwlpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIHN0b3JlIGEgTCdcMCcgYW5kIHRoZW4gY29udGludWUsIGluIGEgbG9vcC4KLSsgICAgLy8gTkI6IG1ic25ydG93Y3MgaXMgYSBHTlUgZXh0ZW5zaW9uCi0rICAgIGZvciAoX19mcm9tX25leHQgPSBfX2Zyb20sIF9fdG9fbmV4dCA9IF9fdG87Ci0rCSBfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX190b19uZXh0IDwgX190b19lbmQKLSsJICYmIF9fcmV0ID09IG9rOykKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tX25leHQsICdcMCcsCi0rCQkJCQkJCQkgIF9fZnJvbV9lbmQKLSsJCQkJCQkJCSAgLSBfX2Zyb21fbmV4dCkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbV9uZXh0LAotKwkJCQkgICBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yICg7OyArK19fdG9fbmV4dCwgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhfX3RvX25leHQsIF9fZnJvbSwgX19mcm9tX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb207Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCA9IGVycm9yOwotKwkgIH0KLSsJZWxzZSBpZiAoX19mcm9tX25leHQgJiYgX19mcm9tX25leHQgPCBfX2Zyb21fY2h1bmtfZW5kKQotKwkgIHsKLSsJICAgIC8vIEl0IGlzIHVuY2xlYXIgd2hhdCB0byByZXR1cm4gaW4gdGhpcyBjYXNlIChzZWUgRFIgMzgyKS4KLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgICBfX3JldCA9IHBhcnRpYWw7Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb21fY2h1bmtfZW5kOwotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICB9Ci0rCi0rCWlmIChfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX19yZXQgPT0gb2spCi0rCSAgewotKwkgICAgaWYgKF9fdG9fbmV4dCA8IF9fdG9fZW5kKQotKwkgICAgICB7Ci0rCQkvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkJX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkJKytfX2Zyb21fbmV4dDsKLSsJCSpfX3RvX25leHQrKyA9IEwnXDAnOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rICAgIC8vIFhYWCBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgZW5jb2RpbmcgaXMKLSsgICAgLy8gc3RhdGVsZXNzIGFuZCBpcyBlaXRoZXIgc2luZ2xlLWJ5dGUgb3IgdmFyaWFibGUtd2lkdGguCi0rICAgIGludCBfX3JldCA9IDA7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICBpZiAoTUJfQ1VSX01BWCA9PSAxKQotKyAgICAgIF9fcmV0ID0gMTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncy4KLSsgICAgaW50IF9fcmV0ID0gTUJfQ1VSX01BWDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2xlbmd0aChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAotKwkgICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0Ci0rICB7Ci0rICAgIGludCBfX3JldCA9IDA7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGFkdmFuY2UgcGFzdCBpdCBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsKLSsgICAgLy8gQSBkdW1teSBpbnRlcm5hbCBidWZmZXIgaXMgbmVlZGVkIGluIG9yZGVyIGZvciBtYnNucnRvY3dzIHRvIGNvbnNpZGVyCi0rICAgIC8vIGl0cyBmb3VydGggcGFyYW1ldGVyIChpdCB3b3VsZG4ndCB3aXRoIE5VTEwgYXMgZmlyc3QgcGFyYW1ldGVyKS4KLSsgICAgd2NoYXJfdCogX190byA9IHN0YXRpY19jYXN0PHdjaGFyX3QqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZih3Y2hhcl90KQotKwkJCQkJCQkgICAqIF9fbWF4KSk7Ci0rICAgIHdoaWxlIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tLCAnXDAnLAotKwkJCQkJCQkJICBfX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbSkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZW5kOwotKwotKwljb25zdCBleHRlcm5fdHlwZSogX190bXBfZnJvbSA9IF9fZnJvbTsKLSsJc2l6ZV90IF9fY29udiA9IG1ic25ydG93Y3MoX190bywgJl9fZnJvbSwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbSwKLSsJCQkJICAgX19tYXgsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gbWJydG93Yy4KLSsJICAgIGZvciAoX19mcm9tID0gX190bXBfZnJvbTs7IF9fZnJvbSArPSBfX2NvbnYpCi0rCSAgICAgIHsKLSsJCV9fY29udiA9IG1icnRvd2MoTlVMTCwgX19mcm9tLCBfX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJICAgIGJyZWFrOwotKwkgIH0KLSsJaWYgKCFfX2Zyb20pCi0rCSAgX19mcm9tID0gX19mcm9tX2NodW5rX2VuZDsKLSsKLSsJX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJX19tYXggLT0gX19jb252OwotKwotKwlpZiAoX19mcm9tIDwgX19lbmQgJiYgX19tYXgpCi0rCSAgewotKwkgICAgLy8gWFhYIFByb2JhYmx5IHdyb25nIGZvciBzdGF0ZWZ1bCBlbmNvZGluZ3MKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgICsrX19mcm9tOwotKwkgICAgKytfX3JldDsKLSsJICAgIC0tX19tYXg7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jMjY2NGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDgwIEBACi0rLy8gc3RkOjpjb2xsYXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi40LjEuMiAgY29sbGF0ZSB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCi0rICAvLyBiZSBwdXQgdGhlcmUgaW5zdGVhZCBvZiBoZXJlLgotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fY29tcGFyZShjb25zdCBjaGFyKiBfX29uZSwgY29uc3QgY2hhciogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3N0cmNvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8Y2hhcj46Ol9NX3RyYW5zZm9ybShjaGFyKiBfX3RvLCBjb25zdCBjaGFyKiBfX2Zyb20sCi0rCQkJCXNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fc3RyeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTx3Y2hhcl90Pjo6X01fY29tcGFyZShjb25zdCB3Y2hhcl90KiBfX29uZSwKLSsJCQkJIGNvbnN0IHdjaGFyX3QqIF9fdHdvKSBjb25zdAotKyAgICB7Ci0rICAgICAgaW50IF9fY21wID0gX193Y3Njb2xsX2woX19vbmUsIF9fdHdvLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsKLSsgICAgICByZXR1cm4gKF9fY21wID4+ICg4ICogc2l6ZW9mIChpbnQpIC0gMikpIHwgKF9fY21wICE9IDApOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHNpemVfdAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV90cmFuc2Zvcm0od2NoYXJfdCogX190bywgY29uc3Qgd2NoYXJfdCogX19mcm9tLAotKwkJCQkgICBzaXplX3QgX19uKSBjb25zdAotKyAgICB7IHJldHVybiBfX3djc3hmcm1fbChfX3RvLCBfX2Zyb20sIF9fbiwgX01fY19sb2NhbGVfY29sbGF0ZSk7IH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyOTRlM2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwMCBAQAotKy8vIHN0ZDo6Y3R5cGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuMS4yICBjdHlwZSB2aXJ0dWFsIGZ1bmN0aW9ucy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2RlZmluZSBfTElCQwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI3VuZGVmIF9MSUJDCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQotKyNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQotKyNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQotKyNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotKyAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotKyAgICB7Ci0rICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJewotKwkgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY3R5cGUpOwotKwkgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSwgX19zKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIHRoaXMtPl9NX3RvdXBwZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b3VwcGVyOwotKwkgIHRoaXMtPl9NX3RvbG93ZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b2xvd2VyOwotKwkgIHRoaXMtPl9NX3RhYmxlID0gdGhpcy0+X01fY19sb2NhbGVfY3R5cGUtPl9fY3R5cGVfYjsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01fY29udmVydF90b193bWFzayhjb25zdCBtYXNrIF9fbSkgY29uc3QKLSsgIHsKLSsgICAgX193bWFza190eXBlIF9fcmV0OwotKyAgICBzd2l0Y2ggKF9fbSkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBzcGFjZToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJzcGFjZSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwcmludDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwcmludCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBjbnRybDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJjbnRybCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB1cHBlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ1cHBlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBsb3dlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJsb3dlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBhbHBoYToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJhbHBoYSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJkaWdpdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwdW5jdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwdW5jdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB4ZGlnaXQ6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgieGRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFsbnVtOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFsbnVtIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGdyYXBoOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImdyYXBoIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwlfX3JldCA9IF9fd21hc2tfdHlwZSgpOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvdXBwZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd3VwcGVyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd3VwcGVyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvbG93ZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd2xvd2VyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd2xvd2VyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgYm9vbAotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotKyAgewotKyAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKyAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotKyAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKyAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLSsJICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJewotKwkgIF9fcmV0ID0gdHJ1ZTsKLSsJICBicmVhazsKLSsJfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMoY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgbWFzayogX192ZWMpIGNvbnN0Ci0rICB7Ci0rICAgIGZvciAoOyBfX2xvIDwgX19oaTsgKytfX3ZlYywgKytfX2xvKQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCW1hc2sgX19tID0gMDsKLSsJZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQotKwkgIGlmIChfX2lzd2N0eXBlX2woKl9fbG8sIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkgICAgX19tIHw9IF9NX2JpdFtfX2JpdGN1cl07Ci0rCSpfX3ZlYyA9IF9fbTsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiAhdGhpcy0+ZG9faXMoX19tLCAqX19sbykpCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19zY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiB0aGlzLT5kb19pcyhfX20sICpfX2xvKSAhPSAwKQotKyAgICAgICsrX19sbzsKLSsgICAgcmV0dXJuIF9fbG87Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjaGFyIF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9NX3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldOyB9Ci0rCi0rICBjb25zdCBjaGFyKgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgd2NoYXJfdCogX19kZXN0KSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKwkqX19kZXN0ID0gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9fbG8pXTsKLSsJKytfX2xvOwotKwkrK19fZGVzdDsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY2hhcgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KHdjaGFyX3QgX193YywgY2hhciBfX2RmYXVsdCkgY29uc3QKLSsgIHsKLSsgICAgaWYgKF9fd2MgPj0gMCAmJiBfX3djIDwgMTI4ICYmIF9NX25hcnJvd19vaykKLSsgICAgICByZXR1cm4gX01fbmFycm93W19fd2NdOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYihfX3djKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiAoX19jID09IEVPRiA/IF9fZGZhdWx0IDogc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGksIGNoYXIgX19kZmF1bHQsCi0rCSAgICBjaGFyKiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgaWYgKF9NX25hcnJvd19vaykKLSsgICAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rCXsKLSsJICBpZiAoKl9fbG8gPj0gMCAmJiAqX19sbyA8IDEyOCkKLSsJICAgICpfX2Rlc3QgPSBfTV9uYXJyb3dbKl9fbG9dOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAgICAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICAgIH0KLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsgICAgZWxzZQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGNvbnN0IGludCBfX2MgPSB3Y3RvYigqX19sbyk7Ci0rCSAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgdm9pZAotKyAgY3R5cGU8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfY3R5cGUoKQotKyAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIHdpbnRfdCBfX2k7Ci0rICAgIGZvciAoX19pID0gMDsgX19pIDwgMTI4OyArK19faSkKLSsgICAgICB7Ci0rCWNvbnN0IGludCBfX2MgPSB3Y3RvYihfX2kpOwotKwlpZiAoX19jID09IEVPRikKLSsJICBicmVhazsKLSsJZWxzZQotKwkgIF9NX25hcnJvd1tfX2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKTsKLSsgICAgICB9Ci0rICAgIGlmIChfX2kgPT0gMTI4KQotKyAgICAgIF9NX25hcnJvd19vayA9IHRydWU7Ci0rICAgIGVsc2UKLSsgICAgICBfTV9uYXJyb3dfb2sgPSBmYWxzZTsKLSsgICAgZm9yIChzaXplX3QgX19qID0gMDsKLSsJIF9faiA8IHNpemVvZihfTV93aWRlbikgLyBzaXplb2Yod2ludF90KTsgKytfX2opCi0rICAgICAgX01fd2lkZW5bX19qXSA9IGJ0b3djKF9faik7Ci0rCi0rICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8PSAxMTsgKytfX2spCi0rICAgICAgewotKwlfTV9iaXRbX19rXSA9IHN0YXRpY19jYXN0PG1hc2s+KF9JU2JpdChfX2spKTsKLSsJX01fd21hc2tbX19rXSA9IF9NX2NvbnZlcnRfdG9fd21hc2soX01fYml0W19fa10pOwotKyAgICAgIH0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICB9Ci0rI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTM1OTRkOQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTAwIEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGdldHRleHQgc3R1ZmYKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fZGNnZXR0ZXh0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkJICAgICBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KTsKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgX19kY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotKyNlbHNlCi0rI3VuZGVmIGdldHRleHQKLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gU3BlY2lhbGl6YXRpb25zLgotKyAgdGVtcGxhdGU8PgotKyAgICBzdHJpbmcKLSsgICAgbWVzc2FnZXM8Y2hhcj46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgc3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KGdldHRleHQoX19kZmF1bHQuY19zdHIoKSkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gc3RyaW5nKF9fbXNnKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbHNlCi0rICAgICAgY29uc3QgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9fZGZhdWx0LmNfc3RyKCkpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbmRpZgotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHdzdHJpbmcKLSsgICAgbWVzc2FnZXM8d2NoYXJfdD46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgd3N0cmluZyYgX19kZmF1bHQpIGNvbnN0Ci0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIF9NX2NvbnZlcnRfZnJvbV9jaGFyKF9fbXNnKTsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxzZQotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZW5kaWYKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE0MjQwNzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0wLDAgKzEsMTE4IEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKLStleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKLSsjZWxzZQotKyN1bmRlZiBfX3RleHRkb21haW4KLSsjdW5kZWYgX19iaW5kdGV4dGRvbWFpbgotKyNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0rI2VuZGlmCi0rCi0rICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfZ2V0X2NfbG9jYWxlKCkpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfU19nZXRfY19uYW1lKCkpCi0rICAgICB7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCXNpemVfdCBfX3JlZnMpCi0rICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYykpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfX3MpCi0rICAgICB7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKyAgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0rCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0rICAgIHsKLSsgICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7Ci0rICAgIH0KLSsKLSsgIC8vIFZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6fm1lc3NhZ2VzKCkKLSsgICAgewotKyAgICAgIGlmIChfTV9uYW1lX21lc3NhZ2VzICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdHlwZW5hbWUgbWVzc2FnZXM8X0NoYXJUPjo6Y2F0YWxvZwotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19vcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLAotKwkJCSAgICAgIGNvbnN0IGxvY2FsZSYpIGNvbnN0Ci0rICAgIHsKLSsgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSsgICAgICAvLyBiZSB1c2VkLgotKyAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdm9pZAotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19jbG9zZShjYXRhbG9nKSBjb25zdAotKyAgICB7IH0KLSsKLSsgICAvLyBtZXNzYWdlc19ieW5hbWUKLSsgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlc19ieW5hbWU8X0NoYXJUPjo6bWVzc2FnZXNfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgIDogbWVzc2FnZXM8X0NoYXJUPihfX3JlZnMpCi0rICAgICB7Ci0rICAgICAgIGlmICh0aGlzLT5fTV9uYW1lX21lc3NhZ2VzICE9IGxvY2FsZTo6ZmFjZXQ6Ol9TX2dldF9jX25hbWUoKSkKLSsJIGRlbGV0ZSBbXSB0aGlzLT5fTV9uYW1lX21lc3NhZ2VzOwotKyAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKLSsgICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgIHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJIHsKLSsJICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rCSAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcywgX19zKTsKLSsJIH0KLSsgICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWE1MjczMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNjkyIEBACi0rLy8gc3RkOjptb25leXB1bmN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi42LjMuMiAgbW9uZXlwdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBvcHRpbWl6ZSB0aGlzIGZvciB1Y2xpYmMKLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci0rICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVlCi0rICBtb25leV9iYXNlOjpwYXR0ZXJuCi0rICBtb25leV9iYXNlOjpfU19jb25zdHJ1Y3RfcGF0dGVybihjaGFyIF9fcHJlY2VkZXMsIGNoYXIgX19zcGFjZSwgY2hhciBfX3Bvc24pCi0rICB7Ci0rICAgIHBhdHRlcm4gX19yZXQ7Ci0rCi0rICAgIC8vIFRoaXMgaW5zYW5lbHkgY29tcGxpY2F0ZWQgcm91dGluZSBhdHRlbXB0cyB0byBjb25zdHJ1Y3QgYSB2YWxpZAotKyAgICAvLyBwYXR0ZXJuIGZvciB1c2Ugd2l0aCBtb255ZXB1bmN0LiBBIGNvdXBsZSBvZiBpbnZhcmlhbnRzOgotKwotKyAgICAvLyBpZiAoX19wcmVjZWRlcykgc3ltYm9sIC0+IHZhbHVlCi0rICAgIC8vIGVsc2UgdmFsdWUgLT4gc3ltYm9sCi0rCi0rICAgIC8vIGlmIChfX3NwYWNlKSBzcGFjZQotKyAgICAvLyBlbHNlIG5vbmUKLSsKLSsgICAgLy8gbm9uZSA9PSBuZXZlciBmaXJzdAotKyAgICAvLyBzcGFjZSBuZXZlciBmaXJzdCBvciBsYXN0Ci0rCi0rICAgIC8vIEFueSBlbGVnYW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGFyZSB3ZWxjb21lLgotKyAgICBzd2l0Y2ggKF9fcG9zbikKLSsgICAgICB7Ci0rICAgICAgY2FzZSAwOgotKyAgICAgIGNhc2UgMToKLSsJLy8gMSBUaGUgc2lnbiBwcmVjZWRlcyB0aGUgdmFsdWUgYW5kIHN5bWJvbC4KLSsJX19yZXQuZmllbGRbMF0gPSBzaWduOwotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24uCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24gYW5kIGVuZHMgd2l0aCBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMjoKLSsJLy8gMiBUaGUgc2lnbiBmb2xsb3dzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIGVpdGhlciBlbmRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZW5kcyB3aXRoIHNpZ24gdGhlbiBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMzoKLSsJLy8gMyBUaGUgc2lnbiBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgc3ltYm9sLgotKwlpZiAoX19wcmVjZWRlcykKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbM10gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgNDoKLSsJLy8gNCBUaGUgc2lnbiBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkgICAgX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc2lnbjsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsJOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsJCQkJCQkgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCB0cnVlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gdHJ1ZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCBmYWxzZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0gbW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX1RIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gZmFsc2UKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgbW9uZXlwdW5jdDxjaGFyLCBmYWxzZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkJCQkJCQljb25zdCBjaGFyKikKLSsjZWxzZQotKwkJCQkJCQljb25zdCBjaGFyKiBfX25hbWUpCi0rI2VuZGlmCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsKLSsJICBjb25zdCBjaGFyKiBfX2Nwb3NzaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NuZWdzaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NjdXJyID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwotKwkgIHdjaGFyX3QqIF9fd2NzX3BzID0gMDsKLSsJICB3Y2hhcl90KiBfX3djc19ucyA9IDA7Ci0rCSAgY29uc3QgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKwkgICAgewotKwkgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsJICAgICAgc2l6ZV90IF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICAgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOwotKwotKwkgICAgICAvLyBfSW50bCA9PSB0cnVlLgotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NjdXJyKTsKLSsJICAgICAgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgd2NoYXJfdCogX193Y3MgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djcywgJl9fY2N1cnIsIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX193Y3M7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsJICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsJICAgICAgX01fZGF0YSA9IDA7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19wczsKLSsJICAgICAgZGVsZXRlIF9fd2NzX25zOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX0ZSQUNfRElHSVRTLAotKwkJCQkJCSAgICAgIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICB2b2lkCi0rICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJICAgICAgIGNvbnN0IGNoYXIqKQotKyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgIHsKLSsgICAgaWYgKCFfTV9kYXRhKQotKyAgICAgIF9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIGZhbHNlPjsKLSsKLSsgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsgICAgICAgICAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7Ci0rI2VuZGlmCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rICAgICAgICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19DVVJSRU5DWV9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICB0cnkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsgICAgICAgICAgICAgIHNpemVfdCBfX2xlbjsKLSsgICAgICAgICAgICAgIF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKyAgICAgICAgICAgICAgaWYgKF9fbGVuKQotKyAgICAgICAgICAgICAgICB7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKyAgICAgICAgICAgICAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NuZWdzaWduKTsKLSsJICAgICAgaWYgKCFfX25wb3NuKQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiKCkiOwotKwkgICAgICBlbHNlIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX25zID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfbnMsICZfX2NuZWdzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX193Y3NfbnM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsgICAgICAgICAgY2F0Y2ggKC4uLikKLSsJICAgIHsKLSsJICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgICAgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ucG9zbik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZQotKyAgICAgICAgICAmJiB3Y3NjbXAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiwgTCIoKSIpICE9IDApCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fY3Vycl9zeW1ib2w7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ODNlYzFhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIHN0ZDo6bnVtcHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjMuMS4yICBudW1wdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19udW1fYmFzZTo6X1Nfb2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19vdXRbX19pXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX291dFtfX2ldOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKERFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChUSE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsKLSsJICAvLyBDaGVjayBmb3IgTlVMTCwgd2hpY2ggaW1wbGllcyBubyBncm91cGluZy4KLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSAnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gInRydWUiOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lX3NpemUgPSA0OwotKyAgICAgIC8vIF9NX2ZhbHNlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChOT1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWUgPSAiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDxjaGFyPjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PHdjaGFyX3Q+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsKLSsJICAvLyBVc2UgY3R5cGU6OndpZGVuIGNvZGUgd2l0aG91dCB0aGUgZmFjZXQuLi4KLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV0pOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9Ci0rCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal0pOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsKLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgZWxzZQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCX0KLSsKLSsgICAgICAvLyBOQjogVGhlcmUgaXMgbm8gd2F5IHRvIGV4dGFjdCB0aGlzIGluZm8gZnJvbSBwb3NpeCBsb2NhbGVzLgotKyAgICAgIC8vIF9NX3RydWVuYW1lID0gX19ubF9sYW5naW5mb19sKFlFU1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZSA9IEwidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9IEwiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDx3Y2hhcl90Pjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKyAjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMDcwN2Q3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDQwNiBAQAotKy8vIHN0ZDo6dGltZV9nZXQsIHN0ZDo6dGltZV9wdXQgaW1wbGVtZW50YXRpb24sIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjEuMiAtIHRpbWVfZ2V0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6Ci0rICAgIF9NX3B1dChjaGFyKiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3QgY2hhciogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3N0cmZ0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0rCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyNlbHNlCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdHJmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKyAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotKyAgICAgIGlmIChfX2xlbiA9PSAwKQotKwlfX3NbMF0gPSAnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPGNoYXI+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9ICJQTSI7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9ICJNb25kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSAiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9ICJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSAiVGh1cnNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSAiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gIlN1biI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTIgPSAiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9ICJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gIldlZCI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTUgPSAiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9ICJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gIlNhdCI7Ci0rCi0rCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSAiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSAiTWFyY2giOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSAiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gIkp1bmUiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSAiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9ICJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSAiU2VwdGVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSAiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSAiRGVjZW1iZXIiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9ICJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSAiTWFyIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9ICJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSAiSnVuIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9ICJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSAiU2VwIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9ICJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSAiRGVjIjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfRF9UX0ZNVCwKLSsJCQkJCQkJICAgICBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX19ubF9sYW5naW5mb19sKEFNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fbmxfbGFuZ2luZm9fbChQTV9TVFIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX19ubF9sYW5naW5mb19sKERBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBfX25sX2xhbmdpbmZvX2woREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX19ubF9sYW5naW5mb19sKERBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBfX25sX2xhbmdpbmZvX2woREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX19ubF9sYW5naW5mb19sKERBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gX19ubF9sYW5naW5mb19sKEFCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNywgX19jbG9jKTsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gX19ubF9sYW5naW5mb19sKE1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX25sX2xhbmdpbmZvX2woTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fbmxfbGFuZ2luZm9fbChNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gX19ubF9sYW5naW5mb19sKE1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX25sX2xhbmdpbmZvX2woTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fbmxfbGFuZ2luZm9fbChNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gX19ubF9sYW5naW5mb19sKE1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEyLCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMiwgX19jbG9jKTsKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46OgotKyAgICBfTV9wdXQod2NoYXJfdCogX19zLCBzaXplX3QgX19tYXhsZW4sIGNvbnN0IHdjaGFyX3QqIF9fZm9ybWF0LAotKwkgICBjb25zdCB0bSogX190bSkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fd2NzZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHdjc2Z0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9IEwnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPHdjaGFyX3Q+OwotKwotKyN3YXJuaW5nIHdpZGUgdGltZSBzdHVmZgotKy8vICAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gTCJBTSI7Ci0rCSAgX01fZGF0YS0+X01fcG0gPSBMIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBMIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gTCJTdW5kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBMIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IEwiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9IEwiV2VkbmVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gTCJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IEwiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gTCJTYXR1cmRheSI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IEwiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IEwiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IEwiVHVlIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IEwiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IEwiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IEwiRnJpIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IEwiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBMIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSBMIkZlYnJ1YXJ5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gTCJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IEwiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IEwiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IEwiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IEwiQXVndXN0IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gTCJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBMIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBMIk5vdmVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEyID0gTCJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gTCJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gTCJGZWIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gTCJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gTCJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gTCJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gTCJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gTCJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gTCJBdWciOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gTCJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gTCJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gTCJOb3YiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gTCJEZWMiOwotKwl9Ci0rI2lmIDAKLSsgICAgICBlbHNlCi0rCXsKLSsJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOwotKwotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90ICpfX3c7IH0gX191OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dFUkFfRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1BNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX191Ll9fdzsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX191Ll9fdzsKLSsJfQotKyNlbmRpZiAvLyAwCi0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmE4ZTg1OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtMCwwICsxLDY4IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3Qoc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY2FjaGVfdHlwZSogX19jYWNoZSwgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9fY2FjaGUpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgewotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0rICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+Ojp+X190aW1lcHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfdGltZXB1bmN0ICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1pbmRleCA4Y2Q0Yzc2Li4yMTcwMTJlIDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTE1OTE4LDYgKzE1OTE4LDkgQEAgZmkKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTE2MTk2LDYgKzE2MTk5LDc4IEBAICRhc19lY2hvICJuZXdsaWIiID4mNjsgfQotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1Y2xpYmMiID4mNQotKyRhc19lY2hvICJ1Y2xpYmMiID4mNjsgfQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jaGVja19tc2dmbXQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9IiRjaGVja19tc2dmbXQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9InllcyIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCIgJiYgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9Im5vIgotK2ZpCi0rZmkKLStjaGVja19tc2dmbXQ9JGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10Ci0raWYgdGVzdCAtbiAiJGNoZWNrX21zZ2ZtdCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY2hlY2tfbXNnZm10IiA+JjUKLSskYXNfZWNobyAiJGNoZWNrX21zZ2ZtdCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rCi0rCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1pbmRleCAwNmI1ZDQ3Li43ZDNmODM1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1AQCAtMTAxLDcgKzEwMSw5IEBAIHVzaW5nIHN0ZDo6d21lbWNtcDsKLSB1c2luZyBzdGQ6OndtZW1jcHk7Ci0gdXNpbmcgc3RkOjp3bWVtbW92ZTsKLSB1c2luZyBzdGQ6OndtZW1zZXQ7Ci0rI2lmIF9HTElCQ1hYX0hBVkVfV0NTRlRJTUUKLSB1c2luZyBzdGQ6Ondjc2Z0aW1lOwotKyNlbmRpZgotIAotICNpZiBfR0xJQkNYWF9VU0VfQzk5Ci0gdXNpbmcgc3RkOjp3Y3N0b2xkOwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhciBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotaW5kZXggYWExYjJmYS4uNDVjNDYxNyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1AQCAtMTc1LDcgKzE3NSw5IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0gICB1c2luZyA6Ondjc2NvbGw7Ci0gICB1c2luZyA6Ondjc2NweTsKLSAgIHVzaW5nIDo6d2NzY3NwbjsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotICAgdXNpbmcgOjp3Y3NmdGltZTsKLSsjZW5kaWYKLSAgIHVzaW5nIDo6d2NzbGVuOwotICAgdXNpbmcgOjp3Y3NuY2F0OwotICAgdXNpbmcgOjp3Y3NuY21wOwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWE4NmE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLUZyb20gNzJhMWE0YWYzYzE4NjI3ZjU5YWE1YmExZjc1M2E4OTAxMWI0ZTRmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQyOjM2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvNDZdIHVjbGliYy1sb2NhbGUtbm9fX3gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDE0IC0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8ICAxICsKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjICAgICAgICB8ICA3IC0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyB8ICA3IC0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyAgICAgICB8ICA3ICstLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDE4ICsrKystLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgIDQgLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICAzIC0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAgMyAtLQotIDEwIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCAyYWUzZTRhLi5lNzRmZGRmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC02MCw0ICs2MCw0OSBAQCBleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0gZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSAjZW5kaWYKLSAKLSsjIGRlZmluZSBfX25sX2xhbmdpbmZvX2wgbmxfbGFuZ2luZm9fbAotKyMgZGVmaW5lIF9fc3RyY29sbF9sIHN0cmNvbGxfbAotKyMgZGVmaW5lIF9fc3RyZnRpbWVfbCBzdHJmdGltZV9sCi0rIyBkZWZpbmUgX19zdHJ0b2RfbCBzdHJ0b2RfbAotKyMgZGVmaW5lIF9fc3RydG9mX2wgc3RydG9mX2wKLSsjIGRlZmluZSBfX3N0cnRvbGRfbCBzdHJ0b2xkX2wKLSsjIGRlZmluZSBfX3N0cnhmcm1fbCBzdHJ4ZnJtX2wKLSsjIGRlZmluZSBfX25ld2xvY2FsZSBuZXdsb2NhbGUKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUgZnJlZWxvY2FsZQotKyMgZGVmaW5lIF9fZHVwbG9jYWxlIGR1cGxvY2FsZQotKyMgZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotKwotKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsjICBkZWZpbmUgX19pc3djdHlwZV9sIGlzd2N0eXBlX2wKLSsjICBkZWZpbmUgX190b3dsb3dlcl9sIHRvd2xvd2VyX2wKLSsjICBkZWZpbmUgX190b3d1cHBlcl9sIHRvd3VwcGVyX2wKLSsjICBkZWZpbmUgX193Y3Njb2xsX2wgd2NzY29sbF9sCi0rIyAgZGVmaW5lIF9fd2NzZnRpbWVfbCB3Y3NmdGltZV9sCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sIHdjc3hmcm1fbAotKyMgIGRlZmluZSBfX3djdHlwZV9sIHdjdHlwZV9sCi0rIyBlbmRpZgotKwotKyNlbHNlCi0rIyBkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjIGRlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyMgZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rIyB3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rIyBkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0rIyBkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKy8vIyBkZWZpbmUgX191c2Vsb2NhbGUgPwotKy8vCi0rIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyMgIGRlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rIyAgZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgICB0b3dsb3dlcigoQykpCi0rIyAgZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgICB0b3d1cHBlcigoQykpCi0rIyAgZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rLy8jICBkZWZpbmUgX193Y3NmdGltZV9sKFMsIE0sIEYsIFQsIEwpICB3Y3NmdGltZSgoUyksIChNKSwgKEYpLCAoVCkpCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjICBkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgIHdjdHlwZSgoUykpCi0rIyBlbmRpZgotKwotICNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCA1MDgxZGMxLi4yMTQzMGQwIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMCArMzksNiBAQAotICNpbmNsdWRlIDxsYW5naW5mby5oPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19zdHJ0b2xfbChTLCBFLCBCLCBMKSAgICAgIHN0cnRvbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b3VsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvdWwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9sbF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b2xsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvdWxsX2woUywgRSwgQiwgTCkgICAgc3RydG91bGwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCi0tI2RlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQotLSNkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCi0tI3dhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KLS0jZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCi0tI2RlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0tI2RlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIHRlbXBsYXRlPD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCBkYTA3YzFmLi40YmNhNWYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gewotICAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotIH0KLSsjZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotICNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotaW5kZXggYzI2NjRhNy4uZWM1YzMyOSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0zNiwxMyArMzYsNiBAQAotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotLSNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotLSNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLS0jZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3Mjk0ZTNhLi43YjEyODYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzgsMTMgKzM4LDYgQEAKLSAjdW5kZWYgX0xJQkMKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0tI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0tI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0tI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotaW5kZXggMTM1OTRkOS4uZDc2OTNiNCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTM5LDEzICszOSwxMCBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBnZXR0ZXh0IHN0dWZmCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tZXh0ZXJuICJDIiBjaGFyICpfX2RjZ2V0dGV4dChjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCSAgICAgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSk7Ci0gI3VuZGVmIGdldHRleHQKLS0jZGVmaW5lIGdldHRleHQobXNnaWQpIF9fZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIGRjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0gI2Vsc2UKLS0jdW5kZWYgZ2V0dGV4dAotICNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCAxNDI0MDc4Li5kODlkYTMzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTM2LDE1ICszNiwxMSBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLWV4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotLWV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotLSNlbHNlCi0tI3VuZGVmIF9fdGV4dGRvbWFpbgotLSN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0tI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotLSNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI3VuZGVmIHRleHRkb21haW4KLSsjdW5kZWYgYmluZHRleHRkb21haW4KLSsjZGVmaW5lIHRleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0gI2VuZGlmCi0gCi0gICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotQEAgLTcwLDcgKzY2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0gCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0gICAgIHsKLS0gICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSAgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSAgICAgfQotIAotQEAgLTkwLDcgKzg2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIHsKLSAgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSAgICAgICAvLyBiZSB1c2VkLgotLSAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCBhYTUyNzMxLi4yZTZmODBhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtNDMsMTAgKzQzLDYgQEAKLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDg4M2VjMWEuLjJjNzA2NDIgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtNDEsOSArNDEsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLWluZGV4IGUwNzA3ZDcuLmQ4NDhlZDUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtNDAsOSArNDAsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdkYmU2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGIxMjk4MzQ0ZjBjMjIxYzM4MmE5NWFmNjg5ZjdmM2VjZDg2NGY1MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0NTo1NyArMDQwMAotU3ViamVjdDogW1BBVENIIDA2LzQ2XSB1Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIHwgIDQgKystLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgIHwgMTMgKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IDJlNmY4MGEuLjMxZWJiOWYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIHN0ZAotICMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLS0jIGVsc2UKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0gIyBlbmRpZgotQEAgLTU1Niw3ICs1NTYsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDJjNzA2NDIuLmQ1Yzg5NjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMTI3LDEyICsxMjcsMjUgQEAgbmFtZXNwYWNlIHN0ZAotIAl7Ci0gCSAgLy8gTmFtZWQgbG9jYWxlLgotIAkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBudW1lcmljCi0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotIAkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotIAotIAkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSAKLSAJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSAJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlNzQ5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NDIgKzAsMCBAQAotRnJvbSBlOWQ3Y2I2Mjc0MWMyMmQ2NjdmZTU2ZTk4ZDUwNzUzZDg5YWVmZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDY6NTggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy80Nl0gdWNsaWJjLWxvY2FsZS11cGRhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICAzICsKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDc0ICsrKysrKysrKystLS0tLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDQyICsrKysrKy0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgNTEgKysrKysrKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMiArKy0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCAzNCArKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgNSArKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgMTggKysrKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAxNyArKystLQotIDkgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCBlNzRmZGRmLi45NzFhNmI0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0zMSw2ICszMSw5IEBACi0gCi0gI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0rI2luY2x1ZGUgPGNzdGRsaWI+Ci0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotaW5kZXggMjE0MzBkMC4uMWI5ZDhlMSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMzksMjMgKzM5LDIwIEBACi0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgdGVtcGxhdGU8PgotICAgICB2b2lkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotIAkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotICAgICB7Ci0tICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0tCXsKLS0JICBjaGFyKiBfX3Nhbml0eTsKLS0JICBlcnJubyA9IDA7Ci0tCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Y7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19mOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC02MywxNiArNjAsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Q7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTw+Ci1AQCAtODAsMTYgKzc0LDEzIEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0tICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotLQkgICAgX192ID0gX19sZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fbGQ7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdm9pZAotQEAgLTExMCwxNyArMTAxLDE4IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHZvaWQKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgewotLSAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICBpZiAoX19jbG9jICYmIF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSAgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSAgIH0KLSAKLSAgIF9fY19sb2NhbGUKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSAgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLS19IC8vIG5hbWVzcGFjZSBzdGQKLSAKLS1uYW1lc3BhY2UgX19nbnVfY3h4Ci0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0UoX19nbnVfY3h4KQotKwotICAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0gICAgIHsKLSAgICAgICAiTENfQ1RZUEUiLAotQEAgLTEzOCw5ICsxMzAsMTEgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAotICAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSAjZW5kaWYKLSAgICAgfTsKLS19Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi0rCi0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotLX0gIC8vIG5hbWVzcGFjZSBzdGQKLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotaW5kZXggNGJjYTVmMS4uNjRhNmQ0NiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTM5LDIxICszOSwyMyBAQAotICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSAKLSAjaW5jbHVkZSA8Y3N0cmluZz4gICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnN0cmxlbgotLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c25wcmludGYgb3Igc3RkOjpzcHJpbnRmCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjp2c25wcmludGYgb3Igc3RkOjp2c3ByaW50ZgotICNpbmNsdWRlIDxjbG9jYWxlPgotICNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggdGhpcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX0lDT05WCi0gI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLSNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2lmZGVmIEhBVkVfTElCSU5UTF9ICi0rI2luY2x1ZGUgPGxpYmludGwuaD4JCS8vIEZvciBtZXNzYWdlcwotICNlbmRpZgotKyNpbmNsdWRlIDxjc3RkYXJnPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHdoYXQgaXMgX0dMSUJDWFhfQ19MT0NBTEVfR05VIGZvcgotKy8vIHBzbTogdXNlZCBpbiBvcy9nbnUtbGludXgvY3R5cGVfbm9uaW5saW5lLmgKLSAjZW5kaWYKLSAjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0gCi1AQCAtNzgsMjMgKzgwLDI1IEBAIG5hbWVzcGFjZSBzdGQKLSAjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSAjZW5kaWYKLS0KLS0gIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLS0gIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLS0gIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBkb3VibGUgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotKyAgLy8gdGhlIHVuc2FmZSB2c3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0gICAvLyBiZSBhdm9pZGVkLgotLSAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotLSAgICBpbnQKLS0gICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLS0JCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotLQkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICBpbmxpbmUgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY29uc3QgX19jX2xvY2FsZSYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCV9fY2xvYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCi0rI2VuZGlmCi0rCQkgICAgICwKLSsJCSAgICAgY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUsCi0rCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LCAuLi4pCi0gICAgIHsKLSsgICAgICB2YV9saXN0IF9fYXJnczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsKLSAgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0tCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmLCBpbnQgX19wcmVjKQotLSAgICB7Ci0gIyBpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAgICAgICBjaGFyKiBfX29sZCA9IHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0gICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX29sZCkgKyAxXTsKLUBAIC0xMDMsNyArMTA3LDkgQEAgbmFtZXNwYWNlIHN0ZAotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0gICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rICAgICAgdmFfc3RhcnQoX19hcmdzLCBfX2ZtdCk7Ci0rICAgICAgY29uc3QgaW50IF9fcmV0ID0gc3RkOjp2c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fYXJncyk7Ci0rICAgICAgdmFfZW5kKF9fYXJncyk7Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0gICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotaW5kZXggN2IxMjg2MS4uMTNlMDExZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotQEAgLTMzLDE2ICszMywyMCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKLSAgIC8vIHZhcmlvdXMgL2NvbmZpZy9vcy8qIGZpbGVzLgotLSAgdGVtcGxhdGU8PgotICAgICBjdHlwZV9ieW5hbWU8Y2hhcj46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMpCi0gICAgIDogY3R5cGU8Y2hhcj4oMCwgZmFsc2UsIF9fcmVmcykKLSAgICAgewotQEAgLTU3LDYgKzYxLDggQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAl9Ci0gICAgIH0KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+Ojp+Y3R5cGVfYnluYW1lKCkKLSsgICAgeyB9Ci0gCi0gI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0gICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi1AQCAtMTM4LDE3ICsxNDQsMzMgQEAgbmFtZXNwYWNlIHN0ZAotICAgY3R5cGU8d2NoYXJfdD46OgotICAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotICAgewotLSAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotLSAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgLy8gVGhlIGNhc2Ugb2YgX19tID09IGN0eXBlX2Jhc2U6OnNwYWNlIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQsCi0rICAgIC8vIGR1ZSB0byBpdHMgdXNlIGluIG1hbnkgaXN0cmVhbSBmdW5jdGlvbnMuICBUaGVyZWZvcmUgd2UgZGVhbCB3aXRoCi0rICAgIC8vIGl0IGZpcnN0LCBleHBsb2l0aW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBvbiBHTlUgc3lzdGVtcyBfTV9iaXRbNV0KLSsgICAgLy8gaXMgdGhlIG1hc2sgY29ycmVzcG9uZGluZyB0byBjdHlwZV9iYXNlOjpzcGFjZS4gIE5COiBhbiBlbmNvZGluZwotKyAgICAvLyBjaGFuZ2Ugd291bGQgbm90IGFmZmVjdCBjb3JyZWN0bmVzcyEKLSsKLSAgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotLSAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotLSAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0tICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLS0JICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLS0JewotLQkgIF9fcmV0ID0gdHJ1ZTsKLS0JICBicmVhazsKLS0JfQotKyAgICBpZiAoX19tID09IF9NX2JpdFs1XSkKLSsgICAgICBfX3JldCA9IF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrWzVdLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCS8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rCS8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKwljb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0pCi0rCSAgICB7Ci0rCSAgICAgIGlmIChfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJCXsKLSsJCSAgX19yZXQgPSB0cnVlOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoX19tID09IF9NX2JpdFtfX2JpdGN1cl0pCi0rCQlicmVhazsKLSsJICAgIH0KLSsgICAgICB9Ci0rCi0gICAgIHJldHVybiBfX3JldDsKLSAgIH0KLSAKLUBAIC0yOTAsNCArMzEyLDUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotICAgfQotICNlbmRpZiAvLyAgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLS19Ci0rCi0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCBkODlkYTMzLi4wNjc2NTdhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTUzLDEyICs1MywxNiBAQAotICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotICAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJc2l6ZV90IF9fcmVmcykKLS0gICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0tICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoTlVMTCksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKE5VTEwpCi0gICAgICB7Ci0tICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgICBzdGQ6Om1lbWNweShfX3RtcCwgX19zLCBfX2xlbik7Ci0gICAgICAgIF9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgLy8gTGFzdCB0byBhdm9pZCBsZWFraW5nIG1lbW9yeSBpZiBuZXcgdGhyb3dzLgotKyAgICAgICBfTV9jX2xvY2FsZV9tZXNzYWdlcyA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0gICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMzFlYmI5Zi4uNzY3OWI5YyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTIwNiw3ICsyMTEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgfQotIAlicmVhazsKLSAgICAgICBkZWZhdWx0OgotLQk7Ci0rCV9fcmV0ID0gcGF0dGVybigpOwotICAgICAgIH0KLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotQEAgLTM5MCw3ICszOTUsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAJICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSAJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotQEAgLTQ3Nyw4ICs0ODQsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC00OTgsOCArNTA1LDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotQEAgLTU0NSw4ICs1NTIsMTEgQEAgbmFtZXNwYWNlIHN0ZAotIAkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0gCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0tCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rICAgICAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotKyAgICAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTYzMyw4ICs2NDMsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgICAgICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47Ci0gCSAgICB9Ci1AQCAtNjUzLDggKzY2Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICBmcmVlKF9fb2xkKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAl9Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggZDVjODk2MS4uOGFlODk2OSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0zMyw5ICszMywxNCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotaW5kZXggZDg0OGVkNS4uZjI0ZDUzZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC01MywxMSArNTMsMTQgQEAgbmFtZXNwYWNlIHN0ZAotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSAJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0gI2Vsc2UKLS0gICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0gICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLS0gICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICAgICBpZiAoX19sZW4gPT0gMCkKLUBAIC0yMDcsMTEgKzIxMCwxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotaW5kZXggYmE4ZTg1OC4uMTY2NWRkZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtNTAsMTIgKzUwLDIxIEBACi0gICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0gCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0tICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoTlVMTCkKLSAgICAgewotLSAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0ZDo6c3RybGVuKF9fcykgKyAxOwotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICBfTV9uYW1lX3RpbWVwdW5jdCA9IF9fdG1wOwotLSAgICAgIF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY2xvYyk7Ci0rCi0rICAgICAgdHJ5Ci0rCXsgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsgfQotKyAgICAgIGNhdGNoKC4uLikKLSsJewotKwkgIGRlbGV0ZSBbXSBfTV9uYW1lX3RpbWVwdW5jdDsKLSsJICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJfQotKwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjg3OTMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDliNzQ0MjA2OWViNjhhNDJkMjQzNzE4MWMxYjJlNzEwZGQwNzdlOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0ODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzQ2XSBtaXNzaW5nLWV4ZWNpbmZvX2gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBib2VobS1nYy9pbmNsdWRlL2djLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib2VobS1nYy9pbmNsdWRlL2djLmggYi9ib2VobS1nYy9pbmNsdWRlL2djLmgKLWluZGV4IDZiMzhmMmQuLmZjYTk4ZmYgMTAwNjQ0Ci0tLS0gYS9ib2VobS1nYy9pbmNsdWRlL2djLmgKLSsrKyBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotQEAgLTUwMyw3ICs1MDMsNyBAQCBHQ19BUEkgR0NfUFRSIEdDX21hbGxvY19hdG9taWNfaWdub3JlX29mZl9wYWdlIEdDX1BST1RPKChzaXplX3QgbGIpKTsKLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19HTElCQ19fKQotICMgaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAjIGlmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSB8fCBfX0dMSUJDX18gPiAyKSBcCi0tICAgICAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSsgICAgICYmICFkZWZpbmVkKF9faWE2NF9fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotICMgICBpZm5kZWYgR0NfSEFWRV9CVUlMVElOX0JBQ0tUUkFDRQotICMgICAgIGRlZmluZSBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgIGVuZGlmCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDktYzk5LXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjIzNmM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGZkZTk3ZjgwZDJkOTMxZWQzZmE0YTg2Mjk0Nzk5MzY2YjIzNTkzMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzQ2XSBjOTktc25wcmludGYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLWluZGV4IDM3ZjAxY2EuLmYwMGMwNmQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gICB1c2luZyA6OnZzcHJpbnRmOwotIH0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLSNpZiBfR0xJQkNYWF9VU0VfQzk5Ci0rI2lmIF9HTElCQ1hYX1VTRV9DOTkgfHwgZGVmaW5lZChfX1VDTElCQ19fKQotIAotICN1bmRlZiBzbnByaW50ZgotICN1bmRlZiB2ZnNjYW5mCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRhODg3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotRnJvbSA3YTkwZTYyZDU1N2M3OGFlNTIwMDZkZmYzMGM5OTAwNmUxMGQ5MzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC80Nl0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uOiBjb2Rlc291cmNlcnldCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gNyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0Ci1pbmRleCAxMjE4YTcxLi5iZmJhMTE0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbW1vbi5vcHQKLSsrKyBiL2djYy9jb21tb24ub3B0Ci1AQCAtNjIzLDYgKzYyMywxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKLSBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZwotIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgotaW5kZXggNTMzNTI1OC4uZjA3OTgyNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuaW4KLSsrKyBiL2djYy9jb25maWcuaW4KLUBAIC0xNjgsNiArMTY4LDEyIEBACi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLwotKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQotICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KLSAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggM2M5Mjc5NS4uMzQzNzFhMyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC05MzMsNiArOTMzLDcgQEAgd2l0aF9zeXN0ZW1femxpYgotIGVuYWJsZV9tYWludGFpbmVyX21vZGUKLSBlbmFibGVfbGlua19tdXRleAotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0gZW5hYmxlX3BsdWdpbgotIGVuYWJsZV9ob3N0X3NoYXJlZAotIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0Ci1AQCAtMTY3MCw2ICsxNjcxLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicwotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5Ci0rICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKLSAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAotICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKLSAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0Ci1AQCAtMjgyMTEsNiArMjgyMTQsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotIGZpCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLStlbHNlCi0rICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubwotK2ZpCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGQ0MTQwODEuLjI0MGQzMjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTY1NCw2ICs1NjU0LDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCi0gICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCi0gCi0rQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKLSsgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgICAgIFsxXSwKLSsgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIEFDX1NVQlNUKHN1YmRpcnMpCi0gQUNfU1VCU1Qoc3JjZGlyKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBkM2JlNTg5Li5jODFiNTViIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTI2OSw2ICsyNjksNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLVdvdmVybGVuZ3RoLXN0cmluZ3MgIC1XcGFja2VkICAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQgIC1XcGFkZGVkIEBnb2wKLSAtV3BhcmVudGhlc2VzICAtV3BlZGFudGljLW1zLWZvcm1hdCAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCi0gLVdwb2ludGVyLWFyaXRoICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAotKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCi0gLVdyZWR1bmRhbnQtZGVjbHMgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAotIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKLSAtV3NoaWZ0LWNvdW50LW5lZ2F0aXZlIC1Xc2hpZnQtY291bnQtb3ZlcmZsb3cgQGdvbAotQEAgLTQ0MzMsNiArNDQzNCwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCi0gbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCi0gbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgotIAotK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCi0rZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcwotK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCi0rZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKLStzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCi0rCi0gQGl0ZW0gLVdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggZDk1NmMzNi4uNjc1YmNjMSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtODM1LDYgKzgzNSw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKLSAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCi0gICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVTfX0gIiBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiBcCi0rICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfVwKLSsgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9XAotICAgICAle3N0YXRpYzp9ICV7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW9cCi0gICAgICIgQ0hLUF9TUEVDICIgXAotICAgICAle2ZvcGVuYWNjfGZvcGVubXB8ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolOmluY2x1ZGUobGliZ29tcC5zcGVjKSUobGlua19nb21wKX1cCi1kaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKLWluZGV4IDZjNTRjYTYuLmNjMGM5MjEgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzgzLDYgKzM4NCwyNCBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotIAl9Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgIHsKLSsgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7Ci0rCi0rICAgICAgIGZvciAocCA9IGhlYWRzW1FVT1RFXTsgcDsgcCA9IHAtPm5leHQpCi0rICAgICAgICAgewotKyAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKLSsgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0rICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7Ci0rICAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTFlNjk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGRiNDA2MDU0ZGU2YjA5NjdjZDc2Y2JiOTk4ZjA1YjBjNWFmMGJkOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowMDozNCArMDQwMAotU3ViamVjdDogW1BBVENIIDExLzQ2XSBnY2MtcG9pc29uLWRpci1leHRlbmQKLQotQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi16ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCi0vdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKLWFib3J0ZWQuCi0KLUluc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCi13YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9pbmNwYXRoLmMgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggY2MwYzkyMS4uMGJjMWY2NyAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0zOTQsNyArMzk0LDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0gICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0tICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQotICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTBiYmM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gMjc4ZDI5M2M0Y2VlOTQ4MmEyM2FhMzQ0Mzc0MTg2MWZmMmY2NzIxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvNDZdIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAotCi1CZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgotCi1UaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCi0KLU90aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKLQotLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgotCi0tIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCi0KLUJvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPwotCi1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDFjYmEzYTkuLjljYWU4ZGEgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTY3MzMsNiArNjczMywzOCBAQCBmaQotIAotIAotIAotKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCi0rIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKLSsjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgotKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCi0rIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCi0rIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KLStpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0gIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCi0gIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KLSBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWFhZjRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gYmRkZTRmNWVmYTNjODlhYzdlZTBiYzA1ZjMyMmYyN2UzZGFiZWFiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvNDZdIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgotCi1HQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQotbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cwotY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKLWFuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Ci1rbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCi1wZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgotCi1UaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAotdGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCi1hbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQotZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbwotYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCi0KLVJQIDE1LzgvMTEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgfCAgNiArKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgfCAxMCArKystLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgIDUgKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotaW5kZXggZjZkYmI3OC4uZDc3MGRhNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLUBAIC0zMiw3ICszMiw1IEBACi0gIwotIGNvbW1hPSwKLSBNVUxUSUxJQl9PUFRJT05TICAgID0gJChzdWJzdCAkKGNvbW1hKSwvLCQoVE1fTVVMVElMSUJfQ09ORklHKSkKLS1NVUxUSUxJQl9ESVJOQU1FUyAgID0gJChwYXRzdWJzdCBtJSwgJSwgJChzdWJzdCAvLCAsJChNVUxUSUxJQl9PUFRJT05TKSkpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDppMzg2LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbXgzMj0uLi9saWJ4MzIkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251eDMyKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLWluZGV4IDdlOTY0MDYuLmI3MmRjYjAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1AQCAtMTcsMTAgKzE3LDYgQEAKLSAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0Ci0tTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKLS1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKLS1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAotLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotKwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotaW5kZXggYjZiMzUxZC4uMWQ1YjM3YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1AQCAtMjYsMTAgKzI2LDkgQEAKLSAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KLSAKLSBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKLS1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCi0rTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KLSBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0gCi0gcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCi0gCSQoQ09NUElMRSkgJDwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM3NDFmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi1Gcm9tIGExMzc2M2Y4YTFkNDEzYTQzMmU3YjQwODM1YTA2MmY4NjIwOGYyOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDE0LzQ2XSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgNCArKysrCi0gZ2NjL2NwL2crK3NwZWMuYyAgICB8IDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCA4ICsrKysrKystCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1pbmRleCA0MTYyNTY2Li40NTNlYzhlIDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xNTQzLDYgKzE1NDMsMTAgQEAgbm9zdGRpbmMrKwotIEMrKyBPYmpDKysKLSBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysKLSAKLStub3N0ZGxpYisrCi0rRHJpdmVyCi0rRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQotKwotIG8KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKLSA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAotZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCi1pbmRleCA2NTM2ZDdlLi5mNTdhNWQ0IDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzOCw2ICsxMzgsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGM4MWI1NWIuLjZkM2Y2OGMgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMTk1LDYgKzE5NSw3IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKLSAtZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCi0gLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKLSstbm9zdGRsaWIrKyBAZ29sCi0gLWZ2aXNpYmlsaXR5LW1zLWNvbXBhdCBAZ29sCi0gLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCi0gLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCi1AQCAtNDg4LDcgKzQ4OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtcyAgLXN0YXRpYyAtc3RhdGljLWxpYmdjYyAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCi0gLXN0YXRpYy1saWJhc2FuIC1zdGF0aWMtbGlidHNhbiAtc3RhdGljLWxpYmxzYW4gLXN0YXRpYy1saWJ1YnNhbiBAZ29sCi0gLXN0YXRpYy1saWJtcHggLXN0YXRpYy1saWJtcHh3cmFwcGVycyBAZ29sCi0tLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKLSstc2hhcmVkIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAotIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKLSAtdSBAdmFye3N5bWJvbH0gLXogQHZhcntrZXl3b3JkfX0KLSAKLUBAIC0xMTE4Nyw2ICsxMTE4OCwxMSBAQCBUaGVzZSBlbnRyaWVzIGFyZSB1c3VhbGx5IHJlc29sdmVkIGJ5IGVudHJpZXMgaW4KLSBsaWJjLiAgVGhlc2UgZW50cnkgcG9pbnRzIHNob3VsZCBiZSBzdXBwbGllZCB0aHJvdWdoIHNvbWUgb3RoZXIKLSBtZWNoYW5pc20gd2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQuCi0gCi0rQGl0ZW0gLW5vc3RkbGliKysKLStAb3BpbmRleCBub3N0ZGxpYisrCi0rRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCi0rT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCi0rCi0gQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9Ci0gQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotIEBjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDY3NWJjYzEuLmEzN2VjOGIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTg0NSw2ICs4NDUsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gfX19fX19IgotICNlbmRpZgotIAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2MmVmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA0YmQyMWExZDYzY2ZiMTRlMjYxZDkwYWRjMGM1ZDRmOTQ2MmRjNTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTQ6MjAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS80Nl0gZ2NjOiBkaXNhYmxlIE1BU0tfUkVMQVhfUElDX0NBTExTIGJpdAotCi1UaGUgbmV3IGZlYXR1cmUgYWRkZWQgYWZ0ZXIgNC4zLjMKLSJodHRwOi8vd3d3LnB1YmJzLm5ldC8yMDA5MDkvZ2NjLzk0MDQ4LXBhdGNoLWFkZC1zdXBwb3J0LWZvci1ybWlwc2phbHIuaHRtbCIKLXdpbGwgY2F1c2UgY2MxcGx1cyBlYXQgdXAgYWxsIHRoZSBzeXN0ZW0gbWVtb3J5IHdoZW4gYnVpbGQgd2Via2l0LWd0ay4KLVRoZSBmdW5jdGlvbiBtaXBzX2dldF9waWNfY2FsbF9zeW1ib2wga2VlcHMgb24gcmVjdXJzaXZlbHkgY2FsbGluZyBpdHNlbGYuCi1EaXNhYmxlIHRoaXMgZmVhdHVyZSB0byB3YWxrIGFzaWRlIHRoZSBidWcuCi0KLVNpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgNyAtLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMzQzNzFhMy4uOGNhZWNkYyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yNjQ3OSwxMyArMjY0NzksNiBAQCAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBmb3IgZXhwbGljaXQgSkFMUiByZWxvY2F0aW9uLi4uICIgPiY2OwotICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgotICAgICAgIGZpCi0gICAgIGZpCi0tICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCi0tICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KLS0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUwotLSAgICAgIGVsc2UKLS0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgotLSAgICAgIGZpCi0tICAgIGZpCi0gICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNQotICRhc19lY2hvICIkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCAyNDBkMzIyLi41NzgxOWZmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTQzODQsMTMgKzQzODQsNiBAQCB4OgotICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgotICAgICAgIGZpCi0gICAgIGZpCi0tICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCi0tICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KLS0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUwotLSAgICAgIGVsc2UKLS0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgotLSAgICAgIGZpCi0tICAgIGZpCi0gICAgIEFDX01TR19SRVNVTFQoJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jKQotIAotICAgICBBQ19DQUNIRV9DSEVDSyhbbGlua2VyIGZvciAuZWhfZnJhbWUgcGVyc29uYWxpdHkgcmVsYXhhdGlvbl0sCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2YWUyNjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDkyNDI3ZWJiOTRkYzY2ZjhlNjRlYmYzZmZiY2Q2ZGQ1Y2UwOTM1YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAotU3ViamVjdDogW1BBVENIIDE2LzQ2XSBDT0xMRUNUX0dDQ19PUFRJT05TCi0KLVRoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KLWludm9rZSBjb2xsZWN0Mi4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggYTM3ZWM4Yi4uODdiNDdjNSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtNDM1Miw2ICs0MzUyLDE1IEBAIHNldF9jb2xsZWN0X2djY19vcHRpb25zICh2b2lkKQotIAkJc2l6ZW9mICgiQ09MTEVDVF9HQ0NfT1BUSU9OUz0iKSAtIDEpOwotIAotICAgZmlyc3RfdGltZSA9IFRSVUU7Ci0rI2lmZGVmIEhBVkVfTERfU1lTUk9PVAotKyAgaWYgKHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkICYmIHRhcmdldF9zeXN0ZW1fcm9vdCkKLSsgICAgewotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIictLXN5c3Jvb3Q9Iiwgc2l6ZW9mKCInLS1zeXNyb290PSIpLTEpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgdGFyZ2V0X3N5c3RlbV9yb290LHN0cmxlbih0YXJnZXRfc3lzdGVtX3Jvb3QpKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInIiwgMSk7Ci0rICAgICAgZmlyc3RfdGltZSA9IEZBTFNFOwotKyAgICB9Ci0rI2VuZGlmCi0gICBmb3IgKGkgPSAwOyAoaW50KSBpIDwgbl9zd2l0Y2hlczsgaSsrKQotICAgICB7Ci0gICAgICAgY29uc3QgY2hhciAqY29uc3QgKmFyZ3M7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg5YTI3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIGIxZjMxMThlNDM5NDU5YzI2YTNlMTljNjE3YjdiMGM5Mzc0NWU3N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAotU3ViamVjdDogW1BBVENIIDE3LzQ2XSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCi0gJHtCfQotCi1Vc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKLXRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdoaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcwotb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKLXdvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgotdG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCi0KLVNvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQotIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggMDdjNmYwYS4uZTFlNjNlOCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNTAyLDcgKzUwMiw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACi0gVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAotIAotIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACi0tdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKLSt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKLSBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAotIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAotIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggOGNhZWNkYy4uOGVjM2Q0MCAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMTg1MCw4ICsxMTg1MCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDU3ODE5ZmYuLjY0M2E0N2UgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTgzMiw4ICsxODMyLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKLWluZGV4IGMzMmYwODcuLjY4MDNhYjkgMTAwNjQ0Ci0tLS0gYS9nY2MvbWtjb25maWcuc2gKLSsrKyBiL2djYy9ta2NvbmZpZy5zaAotQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KLSAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCi0gCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKLSAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KLS0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0rCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgotIAkgICAgZWxzZQotIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAotQEAgLTEwOSw3ICsxMDksNyBAQCBlc2FjCi0gCi0gIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgotIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KLS0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCi0rICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCi0gZmkKLSAKLSAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiYTMyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGQxMWM3M2MxMjk1NTY1ZmYzNzY2YWUwNGUyYTQxMGE4OWZjODRkZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAotU3ViamVjdDogW1BBVENIIDE4LzQ2XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KLQotKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKLXVzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKLWRpcmVjdG9yeS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IGJiMzEwN2IuLjVkNDdlNjUgMTAwNzU1Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotQEAgLTEyNzQ3LDcgKzEyNzQ3LDcgQEAgZXNhYwotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBhY19leHQ9JHthY19mY19zcmNleHQtZn0KLSBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotaW5kZXggYWRhZmIzZi4uYjRhZGUyOCAxMDA2NDQKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1AQCAtMjQwLDcgKzI0MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCi0gCi0gIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWE0ZDFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOS1saWJnY2Mtc2psai1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gN2I0MDIxMmVkNmMwYzlmZTRlZmU1MWYzMWJjY2QzZDlmODkyZjIzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvNDZdIGxpYmdjYy1zamxqLWNoZWNrCi0KLWFjX2ZuX2NfdHJ5X2NvbXBpbGUgZG9lc250IHNlZW0gdG8ga2VlcCB0aGUgaW50ZXJtZWRpYXRlIGZpbGVzCi13aGljaCBhcmUgbmVlZGVkIGZvciBzamxqIHRlc3QgdG8gcGFzcyBzaW5jZSBpdCBncmVwcyBpbnRvIHRoZQotZ2VuZXJhdGVkIGZpbGUuIFNvIHdlIHJ1biB0aGUgY29tcGlsZXIgY29tbWFuZCB1c2luZyBBQ19UUllfQ09NTUFORAotd2hpY2ggdGhlbiBnZW5lcmF0ZXMgdGhlIG5lZWRlZCAucyBmaWxlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGliZ2NjL2NvbmZpZ3VyZSAgICB8IDEwICsrKysrKy0tLS0KLSBsaWJnY2MvY29uZmlndXJlLmFjIHwgMTAgKysrKy0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlIGIvbGliZ2NjL2NvbmZpZ3VyZQotaW5kZXggMjAzZDM4NC4uNmFlZjNlNyAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUKLUBAIC00NTcwLDE3ICs0NTcwLDE5IEBAIHZvaWQgZm9vICgpCi0gfQotIAotIF9BQ0VPRgotLUNGTEFHU19ob2xkPSRDRkxBR1MKLS1DRkxBR1M9Ii0tc2F2ZS10ZW1wcyAtZmV4Y2VwdGlvbnMiCi0gbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9dW5rbm93bgotLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGU7IHRoZW4gOgotK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtZmV4Y2VwdGlvbnMgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JjUnCi0rICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4KLSAgIGlmIGdyZXAgX1Vud2luZF9TakxqX1Jlc3VtZSBjb25mdGVzdC5zID4vZGV2L251bGwgMj4mMTsgdGhlbgotICAgICBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz15ZXMKLSAgIGVsaWYgZ3JlcCBfVW53aW5kX1Jlc3VtZSBjb25mdGVzdC5zID4vZGV2L251bGwgMj4mMTsgdGhlbgotICAgICBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz1ubwotICAgZmkKLSBmaQotLUNGTEFHUz0kQ0ZMQUdTX2hvbGQKLSBybSAtZiBjb25mdGVzdCoKLSAKLSBmaQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUuYWMgYi9saWJnY2MvY29uZmlndXJlLmFjCi1pbmRleCBhMTBhOTUyLi5jYzMyNGYzIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTI1NSwxNiArMjU1LDE0IEBAIHZvaWQgZm9vICgpCi0gICBiYXIoKTsKLSB9Ci0gXSldKQotLUNGTEFHU19ob2xkPSRDRkxBR1MKLS1DRkxBR1M9Ii0tc2F2ZS10ZW1wcyAtZmV4Y2VwdGlvbnMiCi0gbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9dW5rbm93bgotLUFTX0lGKFthY19mbl9jX3RyeV9jb21waWxlXSwKLS0gIFtpZiBncmVwIF9VbndpbmRfU2pMal9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLStpZiBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAtZmV4Y2VwdGlvbnMgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JkFTX01FU1NBR0VfTE9HX0ZEKTsgdGhlbgotKyAgaWYgZ3JlcCBfVW53aW5kX1NqTGpfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPXllcwotICAgZWxpZiBncmVwIF9VbndpbmRfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPW5vCi0tICBmaV0pCi0tQ0ZMQUdTPSRDRkxBR1NfaG9sZAotKyAgZmkKLStmaQotIHJtIC1mIGNvbmZ0ZXN0KgotIF0pCi0gCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNmNjZkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjAtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDVmOTc1OWE4NWZmZjNkNzhlM2Y3MWFlMDFjOTcwYjEwZDMyNmM0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDIwLzQ2XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCi0KLUN1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQotcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgotcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCi1wZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgotCi1UaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCi0KLVRoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAotLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KLQotW1lPQ1RPICMyMDc0XQotCi1SUCAyMDEyLzA0LzEzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLWluZGV4IGIwNzI4ZjAuLmU2OWVlN2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCi0rKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1AQCAtNjMsNSArNjMsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjKystY3BwLW91dHB1dCIsCi0gICAgIiV7IU06JXshTU06JXshRTpcCi0tICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTJcCi0rICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTJcCi0gICAgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA4N2I0N2M1Li5lNmVmYWU3IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMTQyLDcgKzExNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBpbGVyIGRlZmF1bHRfY29tcGlsZXJzW10gPQotICAgICAgICAgICAgICAgICAgICAgJVd7byo6LS1vdXRwdXQtcGNoPSUqfX0lVn19fX19fSIsIDAsIDAsIDB9LAotICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAY3BwLW91dHB1dCIsCi0tICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSsgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCi0gICB7IkBhc3NlbWJsZXIiLAotICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2NmZmU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAzNGQyMmFiNmNmZDJkZmU2ZGQxNzFjOGQwYjMxY2FmY2RlYjg2Mjk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyMS80Nl0gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKLQotTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKLXNvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCi1pbmRleCBjODM1NzM0Li5kZDA3MzlkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5nY2MKLSsrKyBiL2djYy9jb25maWcuZ2NjCi1AQCAtMjAxNywyOSArMjAxNywyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgotIAkJCTs7Ci0gCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCi0gCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKLSAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyNiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCWVzYWMKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIwODM1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi1Gcm9tIGY2YjQxYjYyZWE2MmEwZjE0NDdkOWZjMjM1ZjdmZDJiYmYzZmU3YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAotU3ViamVjdDogW1BBVENIIDIyLzQ2XSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCi0KLVRoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi1yZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCi1UaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCi1DaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZwotU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKLQotUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDEwICsrKysrLS0tLS0KLSBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQotIDExIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLWluZGV4IDJjNzBhMmYuLmRkMDQ4ZGIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1AQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAotIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCBlOWQ2NWRjLi5jZmRmM2YwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC02OCw4ICs2OCw4IEBACi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBhbmQgVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJLiAgKi8KLSAKLSAjdW5kZWYgIEdMSUJDX0RZTkFNSUNfTElOS0VSCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICIvbGliL2xkLWxpbnV4LnNvLjMiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUICIvbGliL2xkLWxpbnV4LWFybWhmLnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYXJtaGYuc28uMyIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLWluZGV4IDQ5YWQ5NTQuLmE1YWI1NTkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLUBAIC02Miw3ICs2Miw3IEBACi0gCi0gI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKLSAgICAle3N0YXRpYzotQnN0YXRpY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLWluZGV4IGExMDA5NjMuLjIxYmEyYjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLUBAIC0yMCw0ICsyMCw0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotaW5kZXggYTI3ZDNiZS4uNjE4NWNjZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLUBAIC0yNyw2ICsyNyw2IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OWDMyICJlbGYzMl94ODZfNjQiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDg1NzM4OWEuLjIyYjliZTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTczLDEwICs3MywxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cwotICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLWluZGV4IDkxZGYyNjEuLmMzMDZhZmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSTjMyICIvc3lzdGVtL2Jpbi9saW5rZXIzMiIKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSTjMyIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDA4NzllN2UuLjMxYzQzMzggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTM1NywxNCArMzU3LDE0IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQuc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCi0gI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MTovbGliNjQvbGQ2NC5zby4xOzovbGliNjQvbGQ2NC5zby4yfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCi0gI2Vsc2UKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjovbGliNjQvbGQ2NC5zby4yOzovbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IDBmNWQ2MTQuLjE2ODQxNmMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc2gvbGludXguaAotQEAgLTQzLDcgKzQzLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAKLSAjZGVmaW5lIFRBUkdFVF9BU01fRklMRV9FTkQgZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFjawotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAotICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIl9saW51eCIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLWluZGV4IDU2ZGVmNGIuLjAwYjU2NGMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiAgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1pbmRleCBmYTgwNWZkLi4wZWI0YWNkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1AQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNpZmRlZiBTUEFSQ19CSV9BUkNICi0gCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTkxYzllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDk3MDFmNTk2YmJlNWJmNTFiYmY0ODY2MWJjNTE1YjQ1ZDRiNmY0ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAotU3ViamVjdDogW1BBVENIIDIzLzQ2XSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgotCi1UaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKLWJ1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgotCi1oZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCi0KLVRoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKLWl0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Ci13b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KLVRoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKLSQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggZTFlNjNlOC4uN2I0OWY4OCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtMzI2Miw3ICszMjYyLDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCi0gIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKLSAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCi0gCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCi0tCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKLSsJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKLSAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAotIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKLSAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNC1EaXNhYmxlLXNkdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNC1EaXNhYmxlLXNkdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzY2U5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjQtRGlzYWJsZS1zZHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotRnJvbSA5NDZlMDQ3NjE0MTAzZTFmMjk4MjYxM2M3YWE1Zjc2NTg3NTAwYzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC80Nl0gRGlzYWJsZSBzZHQuCi0KLVdlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KLUl0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCi1zZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKLWJ1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgotCi1SUCAyMDEyLzgvNwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1EaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA4ZWMzZDQwLi5lYWEzYjA3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI3ODU3LDEyICsyNzg1NywxMiBAQCBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KLSBoYXZlX3N5c19zZHRfaD1ubwotLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0tCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0tCi0tZmkKLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIwotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjCi0rI2ZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDY0M2E0N2UuLjlmNmNhY2IgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTMxNSwxNSArNTMxNSwxNSBAQCBpZiB0ZXN0IHgkZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwID0geHllczsgdGhlbgotIGZpCi0gCi0gIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgotLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLS1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotLWhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLS0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotLWZpCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0rI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLSsjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLSsjaGF2ZV9zeXNfc2R0X2g9bm8KLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotKyNmaQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSAKLSAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KLSAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDIxNzAxMmUuLjgxMjQwYjkgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMjA5NjQsMTEgKzIwOTY0LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSAKLS0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0rIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSAKLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0gCi0tICBmaQotKyMgIGZpCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotaW5kZXggNTgwZmI4Yi4uNWE0MTA4MyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI1LWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjUtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ1ZWI5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjUtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZjY4YzViNzg3NTE2NjA1MDViMjJiNDZkYWQ5OTI0MGRiMGRmMzQ1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvNDZdIGxpYnRvb2wKLQotbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAotd2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgotCi1UaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KLUFyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Ci1mb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgotCi1mdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCi10byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KLQotUlAgMjAxMi84LzI0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbHRtYWluLnNoIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4Li4wMTIxZmJhIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMmQ5NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDRjNzVlMzQ5YWE3YWJkMWUyODU3MjAzMjhiMjM2OTA2MzZiZWEyNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAotU3ViamVjdDogW1BBVENIIDI2LzQ2XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCi0KLVRoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCi1tZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAotdGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKLVRoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKLWZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KLQotV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCBjZmRmM2YwLi4wNDhhMDYyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC03NywxMCArNzcsMTQgQEAKLSAgICAgJXttZmxvYXQtYWJpPXNvZnQqOiIgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAifSBcCi0gICAgICV7IW1mbG9hdC1hYmk9KjoiIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgIn0iCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ODE1ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSA4MjE3ZGQ3ZmIzMThmOWFiYzY1NjRmNjdiNDI0YzQzM2Q4Mzk4ZDYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNy80Nl0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKLSB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLQotVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci1zbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCBlYWEzYjA3Li45YjYwYWFkIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTExODMwLDEwICsxMTgzMCwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTExODQ0LDYgKzExODU0LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDlmNmNhY2IuLmUxZTU0ZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTgxMiwxMCArMTgxMiwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTE4MjYsNiArMTgzNiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjgtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGRkZDljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAwOGEwZTQ1YjMwOGZjOTdkMDZmNWMzZWY3N2EyNTdlN2E2YmQxYTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOC80Nl0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAwMTIxZmJhLi41MmJkYmRiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSsJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCi0rCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KLSsJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICAgIGRpcj0iJGxpYmRpciIKLSAJICAgIGFic2Rpcj0iJGxpYmRpciIKLSAJICBmaQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjktZXhwb3J0LUNQUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOS1leHBvcnQtQ1BQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjE5NWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOS1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA5NWY0OTRkMTU0NDg1N2FkMzg5NDlhN2RhMzdlMmQ3MjY0NDc1MjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOS80Nl0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDM2YjQwMDguLmE3ODNlMWUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAotIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzAtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzA1MTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA0ZWQ4YzFmZDlkYzA1ZjdhOWRiOTI5OGE1NTM5NmM4ZjBmZjU0OWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgotRGF0ZTogV2VkLCA1IEZlYiAyMDE0IDE2OjUyOjMxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvNDZdIEVuYWJsZSBTUEUgJiBBbHRpVmVjIGdlbmVyYXRpb24gb24gcG93ZXBjKmxpbnV4IHRhcmdldAotCi1XaGVuIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LCB0aGUgcmVzdWx0aW5nIEdDQyB3aWxsCi1ub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlIGZvciBTUEUgdGFyZ2V0cyAoZTUwMHYxL3YyKS4KLUdDQyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eHNwZSB3aWxsIG5vdCBiZSBhYmxlIHRvCi1nZW5lcmF0ZSBBbHRpVmVjIGluc3RydWN0aW9ucyAoZm9yIGU2NTAwKS4KLVRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ3VyZWQgZmlsZSBzdWNoIHRoYXQgU1BFIG9yIEFsdGlWZWMgY29kZQotY2FuIGJlIGdlbmVyYXRlZCB3aGVuIGdjYyBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eC4KLVRoZSBBQkkgYW5kIHNwZWNpZmZpYyBpbnN0cnVjdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlCi0iLW1hYmk9c3BlIG9yIC1tYWJpPWFsdGl2ZWMiIGFuZCB0aGUgIi1tc3BlIG9yIC1tYWx0aXZlYyIgcGFyYW1ldGVycy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnY2MvY29uZmlnLmdjYyB8IDkgKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2NjLTUuMy4wL2djYy9jb25maWcuZ2NjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuMy4wLm9yaWcvZ2NjL2NvbmZpZy5nY2MKLSsrKyBnY2MtNS4zLjAvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMzQ2LDcgKzIzNDYsMTQgQEAgcG93ZXJwYy0qLXJ0ZW1zKikKLSAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSByczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXJ0ZW1zIHJzNjAwMC90LXBwY2NvbW0iCi0gCTs7Ci0gcG93ZXJwYyotKi1saW51eCopCi0tCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwljYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgcG93ZXJwYyotKi1saW51eCpzcGUqIHwgcG93ZXJwYyotKi1saW51eCphbHRpdmVjKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwkJOzsKLSsJICAgICopCi0rCQl0bV9maWxlPSIke3RtX2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggZ251LXVzZXIuaCBmcmVlYnNkLXNwZWMuaCByczYwMDAvc3lzdjQuaCByczYwMDAvbGludXhhbHRpdmVjLmggcnM2MDAwL2xpbnV4c3BlLmggcnM2MDAwL2U1MDAuaCIKLSsJCTs7Ci0rCWVzYWMKLSAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJZXh0cmFfb2Jqcz0iJGV4dHJhX29ianMgcnM2MDAwLWxpbnV4Lm8iCi1JbmRleDogZ2NjLTUuMy4wL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS4zLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oCi0rKysgZ2NjLTUuMy4wL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLUBAIC0yNyw2ICsyNywzIEBACi0gI3VuZGVmCVRBUkdFVF9ERUZBVUxUCi0gI2RlZmluZSBUQVJHRVRfREVGQVVMVCBNQVNLX1NUUklDVF9BTElHTgotICNlbmRpZgotLQotLSN1bmRlZiAgQVNNX0RFRkFVTFRfU1BFQwotLSNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMgLW1zcGUgLW1lNTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMxLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiYzY2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gYmI2ZmVhODIxNDgzYWEzMjU5YjM0ZTEwMWEzOWM5OTNlZGQwMTQxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjIxOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvNDZdIERpc2FibGUgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgYW5kIG90aGVyIG11bHRpbGliCi0gb3B0aW9ucy4KLQotSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCi1zeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlCi1BQkksIGFzCi1sb25nIGFzIHRoZSBkeW5hbWljIGxvYWRlciBpcyBwcmVzZW50IGluIC9saWIuCi0KLVdlIHNpbXBseSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBydWxlcyBpbiBnY2MgdG8gZmluZCBhbmQgY29uZmlndXJlIHRoZQotbm9ybWFsIGxpYmRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLWluZGV4IGMyOTYzNzYuLjNiYjU5YmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1AQCAtMjEsOCArMjEsOCBAQAotIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQotIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKLSAKLS1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0rI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NTAzZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMyLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotRnJvbSBiYjI2ZjkwZjVlMGFjY2MzNTM5ZjYyYjZmZWM2NjM2ODI5NTlkZDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi80Nl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDdiNDlmODguLmNkNWJjNGEgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTU4Miw2ICs1ODIsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLStsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcwotIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLSAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCi1AQCAtMjYxMCw2ICsyNjExLDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCi0gCi0gUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCi0gICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAotKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAotICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKLWluZGV4IDU4MGMxYmEuLjAzYTAyODcgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKLWluZGV4IDFkNTQ3OTguLjk4M2Q0NWUgMTAwNjQ0Ci0tLS0gYS9nY2MvZGVmYXVsdHMuaAotKysrIGIvZ2NjL2RlZmF1bHRzLmgKLUBAIC0xMzYxLDQgKzEzNjEsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gCi0gI2VuZGlmIC8qIEdDQ19JTlNOX0ZMQUdTX0ggICovCi0gCi0rLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0rCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0rI2VuZGlmCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotKyNlbmRpZgotKwotICNlbmRpZiAgLyogISBHQ0NfREVGQVVMVFNfSCAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggZTZlZmFlNy4uM2NhMjdiOSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTI2MywxMyArMTI2Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7Ci0gCi0gLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0gCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0tI2VuZGlmCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotLSNlbmRpZgotLQotICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLwotICN1bmRlZiBNRF9FWEVDX1BSRUZJWAotICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMy1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZDQ4MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDYyOWZjYzdkMDA3NWM5YjQyNjFkYTY0MzVlMTIyNDI5ZmIwMjhlYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDMzLzQ2XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCi0KLXNpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgotCi1UaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0oUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQotaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKLQotUlAKLTIwMTIvMDkvMjIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCi0gbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotaW5kZXggM2Q4YWI2Mi4uMjNkZmY3ZSAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1AQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotIAotLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KLSBNX1NJWkUJCT0gLUROPSQoUEFUX04pCi0gTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYwotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotaW5kZXggOTI4ODY1Mi4uMzcyMDI1NiAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1AQCAtMzMwLDcgKzMzMCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQotIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0tTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMgPQotIE1fU0laRSA9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNC1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NTNmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGE0ZWZjOWNhODU3MzRjMjgzZDRkYTA5YjYyODEyMWUxYzFmNDljNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzQvNDZdIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKLSAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKLQotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA1MmJkYmRiLi44MmJjZWMzIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0rCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgotIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0tCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSsKLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzUtRG9udC1saW5rLXRoZS1wbHVnaW5zLXdpdGgtbGliZ29tcC1leHBsaWNpdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWQ1ODliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIDViMDEyNWE3OTI4NDJhZTAyZGY1MDdiYzU1NTU1NjYxY2IxMGY5YTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA4IE1hciAyMDE1IDAzOjQxOjM5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzUvNDZdIERvbnQgbGluayB0aGUgcGx1Z2lucyB3aXRoIGxpYmdvbXAgZXhwbGljaXRseQotCi1UaGV5IGFyZSBkbG9wZW5lZCBieSBsaWJnb21wIGFueXdheS4gVGhpcyBmaXhlcwotdGhlIGxpYnRvb2wgcmVsaW5rIGlzc3VlIHdoaWNoIGNhdXNlcyBpc3N1ZXMgZHVyaW5nCi1jcm9zcyBjb21waWxhdGlvbgotCi1saWJ0b29sOiBpbnN0YWxsOiAvdXNyL2Jpbi9pbnN0YWxsIC1jIC5saWJzL2xpYmdvbXAubGFpCi0vaG9tZS91YnVudHUvd29yay9ibGVlZGluZy9idWlsZC1xZW11eDg2LTY0bWMvdG1wL3dvcmsvY29yZTItNjQtcmRrLWxpbnV4L2djYy1ydW50aW1lLzUuMC1yMC9pbWFnZS91c3IvbGliLy4uL2xpYi9saWJnb21wLmxhCi1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogY2Fubm90IGluc3RhbGwgYGxpYmdvbXAtcGx1Z2luLWhvc3Rfbm9uc2htLmxhJwotdG8gYSBkaXJlY3Rvcnkgbm90IGVuZGluZyBpbiAvdXNyL2xpYgotTWFrZWZpbGU6NTE3OiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC10b29sZXhlY2xpYkxUTElCUkFSSUVTJyBmYWlsZWQKLW1ha2VbMl06ICoqKiBbaW5zdGFsbC10b29sZXhlY2xpYkxUTElCUkFSSUVTXSBFcnJvciAxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJnb21wL01ha2VmaWxlLmluICAgICAgICB8IDcgKysrLS0tLQotIGxpYmdvbXAvcGx1Z2luL01ha2VmcmFnLmFtIHwgMyArLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01ha2VmaWxlLmluCi1pbmRleCBiNjFiMTA4Li43MWIyNjI3IDEwMDY0NAotLS0tIGEvbGliZ29tcC9NYWtlZmlsZS5pbgotKysrIGIvbGliZ29tcC9NYWtlZmlsZS5pbgotQEAgLTEyMyw3ICsxMjMsNyBAQCBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQodG9vbGV4ZWNsaWJkaXIpIiAiJChERVNURElSKSQoaW5mb2RpcikiIFwKLSAJIiQoREVTVERJUikkKGZpbmNsdWRlZGlyKSIgIiQoREVTVERJUikkKGxpYnN1YmluY2x1ZGVkaXIpIiBcCi0gCSIkKERFU1RESVIpJCh0b29sZXhlY2xpYmRpcikiCi0gTFRMSUJSQVJJRVMgPSAkKHRvb2xleGVjbGliX0xUTElCUkFSSUVTKQotLWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0RFUEVOREVOQ0lFUyA9IGxpYmdvbXAubGEKLStsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSUJBREQgPQotIGFtX2xpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX09CSkVDVFMgPSAgXAotIAlsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYS1wbHVnaW4taG9zdC5sbwotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX09CSkVDVFMgPSAgXAotQEAgLTEzMyw3ICsxMzMsNyBAQCBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSU5LID0gJChMSUJUT09MKSAtLXRhZz1DQyBcCi0gCS0tbW9kZT1saW5rICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0gCSQobGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAotIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci0tQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0RFUEVOREVOQ0lFUyA9IGxpYmdvbXAubGEgXAotK0BQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9ERVBFTkRFTkNJRVMgPSAgXAotIEBQTFVHSU5fTlZQVFhfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpCi0gQFBMVUdJTl9OVlBUWF9UUlVFQGFtX2xpYmdvbXBfcGx1Z2luX252cHR4X2xhX09CSkVDVFMgPSAgXAotIEBQTFVHSU5fTlZQVFhfVFJVRUAJbGliZ29tcF9wbHVnaW5fbnZwdHhfbGEtcGx1Z2luLW52cHR4LmxvCi1AQCAtNDA3LDcgKzQwNyw3IEBAIGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52LmMgZXJyb3IuYyBpdGVyLmMgXAotIEBQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MREZMQUdTID0gIFwKLSBAUExVR0lOX05WUFRYX1RSVUVACSQobGliZ29tcF9wbHVnaW5fbnZwdHhfdmVyc2lvbl9pbmZvKSBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQAkkKGx0X2hvc3RfZmxhZ3MpICQoUExVR0lOX05WUFRYX0xERkxBR1MpCi0tQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xJQkFERCA9IGxpYmdvbXAubGEgJChQTFVHSU5fTlZQVFhfTElCUykKLStAUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCQUREID0gJChQTFVHSU5fTlZQVFhfTElCUykKLSBAUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCVE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMKLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV92ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGlidG9vbF9WRVJTSU9OKQotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX1NPVVJDRVMgPSBwbHVnaW4vcGx1Z2luLWhvc3QuYwotQEAgLTQxNSw3ICs0MTUsNiBAQCBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1ESE9TVF9OT05TSE1fUExVR0lOCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfTERGTEFHUyA9IFwKLSAJJChsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV92ZXJzaW9uX2luZm8pICQobHRfaG9zdF9mbGFncykKLSAKLS1saWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSUJBREQgPSBsaWJnb21wLmxhCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfTElCVE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMKLSBub2Rpc3Rfbm9pbnN0X0hFQURFUlMgPSBsaWJnb21wX2YuaAotIG5vZGlzdF9saWJzdWJpbmNsdWRlX0hFQURFUlMgPSBvbXAuaCBvcGVuYWNjLmgKLWRpZmYgLS1naXQgYS9saWJnb21wL3BsdWdpbi9NYWtlZnJhZy5hbSBiL2xpYmdvbXAvcGx1Z2luL01ha2VmcmFnLmFtCi1pbmRleCAxNjc0ODVmLi5kMmM1NDI4IDEwMDY0NAotLS0tIGEvbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0KLSsrKyBiL2xpYmdvbXAvcGx1Z2luL01ha2VmcmFnLmFtCi1AQCAtMzUsNyArMzUsNyBAQCBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpICQoUExVR0lOX05WUFRYX0NQUEZMQUdTKQotIGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfcGx1Z2luX252cHR4X3ZlcnNpb25faW5mbykgXAotIAkkKGx0X2hvc3RfZmxhZ3MpCi0gbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTERGTEFHUyArPSAkKFBMVUdJTl9OVlBUWF9MREZMQUdTKQotLWxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xJQkFERCA9IGxpYmdvbXAubGEgJChQTFVHSU5fTlZQVFhfTElCUykKLStsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MSUJBREQgPSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotIGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xJQlRPT0xGTEFHUyA9IC0tdGFnPWRpc2FibGUtc3RhdGljCi0gZW5kaWYKLSAKLUBAIC00NSw1ICs0NSw0IEBAIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX1NPVVJDRVMgPSBwbHVnaW4vcGx1Z2luLWhvc3QuYwotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURIT1NUX05PTlNITV9QTFVHSU4KLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MREZMQUdTID0gXAotIAkkKGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX3ZlcnNpb25faW5mbykgJChsdF9ob3N0X2ZsYWdzKQotLWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQkFERCA9IGxpYmdvbXAubGEKLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWMwMjk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBiMGIwNjg4MTc2YTk0ODI3NzdlOWIyZTk4NDA4YmZjNDUwNWQzMWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNi80Nl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZwotIGJhc2VfbGliZGlyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IDI1N2FjZjAuLmFiZWI5NDggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzctYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGRiZTc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDQyMGNhNjRhODZkNTYwYTc3ZWU1OTZhOTc3NGQ2NzJiMDhjYTgyNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxODozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDM3LzQ2XSBhYXJjaDY0OiBBZGQgc3VwcG9ydCBmb3IgbXVzbCBsZHNvCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCBhYmViOTQ4Li5mOWU2NWZjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTIzLDYgKzIzLDggQEAKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0LnNvLjEiCi0rCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM4LWZpeC1nLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJhNTc0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gOGRmM2U3MDA3YTIyYzlkNmJlNWQ1YWU0YjliMTY5YzVjODQzMTkxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI3IE1heSAyMDE1IDE3OjA2OjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzgvNDZdIGZpeCBnKysgc3lzcm9vdAotCi1Qb3J0aW9ucyBvZgotCi1odHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcvbXNnMjYwMTMuaHRtbAotCi1hcmUgbm90IHVwc3RyZWFtZWQgeWV0LiBTbyBsZXRzIGtlZXAgbWlzc2luZyBwaWVjZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1XaXRob3V0IHRoaXMsIGNvbXBpbGluZyBzb21ldGhpbmcgc2ltcGxlIGxpa2UgI2luY2x1ZGUgPGxpbWl0cz4gb24gdGFyZ2V0Ci13aXRoIGMrKyB0ZXN0LmNwcCBmYWlscyB1bmFibGUgdG8gZmluZCB0aGUgaGVhZGVyLiBzdHJhY2Ugc2hvd3MgaXQgbG9va2luZyBpbgotdXNyL2luY2x1ZGUveHh4eCByYXRoZXIgdGhhbiAvdXNyL2luY2x1ZGUveHh4eAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKysrLQotIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA5YjYwYWFkLi42ZGY1OTRjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTMzNzUsNyArMzM3NSw5IEBAIGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3Q9MAotIGlmIHRlc3QgIiR7d2l0aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuCi0gICBnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdD1gZXhwciAiJHtnY2NfZ3h4X2luY2x1ZGVfZGlyfSIgOiAiJHt3aXRoX3N5c3Jvb3R9IidcKC4qXCknYAotICAgaWYgdGVzdCAiJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iOyB0aGVuCi0tICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBpZiB0ZXN0IHgke3dpdGhfc3lzcm9vdH0gIT0geC87IHRoZW4KLSsgICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyPSIke2djY19neHhfd2l0aG91dF9zeXNyb290fSIKLSsgICAgZmkKLSAgICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0xCi0gICBmaQotIGZpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGUxZTU0ZjIuLjNiYjIxNzMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTUyLDcgKzE1Miw5IEBAIGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3Q9MAotIGlmIHRlc3QgIiR7d2l0aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuCi0gICBnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdD1gZXhwciAiJHtnY2NfZ3h4X2luY2x1ZGVfZGlyfSIgOiAiJHt3aXRoX3N5c3Jvb3R9IidcKC4qXCknYAotICAgaWYgdGVzdCAiJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iOyB0aGVuCi0tICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBpZiB0ZXN0IHgke3dpdGhfc3lzcm9vdH0gIT0geC87IHRoZW4KLSsgICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyPSIke2djY19neHhfd2l0aG91dF9zeXNyb290fSIKLSsgICAgZmkKLSAgICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0xCi0gICBmaQotIGZpCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzktbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTBkZjk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDFlZWRlOWU0YTEwZDM1MzJkYjgyNmE2ZWVjZWQ2OTVkZjNhZDViODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDM5LzQ2XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCi0KLSogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCi0gICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKLSAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KLSogRml4IGJhZCBSUEFUSCBpdXNzdWU6Ci0gIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCi0gL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAotIFtycGF0aHNdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQotaW5kZXggN2EyNzRiMy4uZGI2OWJlYSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzUsOCArMzUsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCi1pbmRleCAxOTE2MTM0Li5jODk5NWQyIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0yNjIsOCArMjYyLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLSBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQotIEJVSUxUX1NPVVJDRVMgPSBjb21waWxlci1uYW1lLmgKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQwLWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFlMTMxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIGI0MTY3NGQzNTdjNGJhMzIwYjk4NjBlMGYzMTNkMmY1YTMzMmYyN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDAvNDZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQotIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggMDNhMDI4Ny4uZjQ0YzFkOCAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC0zNSw2ICszNSwzMCBAQAotICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAjZW5kaWYKLSAKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7Ci0rI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7Ci0rI2VuZGlmCi0rCi0gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKLSA9IElOQ0xVREVfREVGQVVMVFM7Ci1AQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotID0gewotICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLS0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0tICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KLS0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCi0rICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAotICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQotIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLwotICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKLUBAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNlbmRpZgotICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0gICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLwotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9Ci0gICB9OwotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCi1pbmRleCBjOTg2NDRmLi40MTk4NjY5IDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCAzY2EyN2I5Li4yYjc3NTZlIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMjAsNiArMTIwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IFRBUkdFVF9TWVNURU1fUk9PVDsKLSAjZWxzZQotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSAwOwotICNlbmRpZgotKyAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotIAotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLUBAIC0zOTAsNiArMzkyLDcgQEAgb3Igd2l0aCBjb25zdGFudCB0ZXh0IGluIGEgc2luZ2xlIGFyZ3VtZW50LgotICAlRyAgICAgcHJvY2VzcyBMSUJHQ0NfU1BFQyBhcyBhIHNwZWMuCi0gICVSICAgICBPdXRwdXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGFyZ2V0X3N5c3RlbV9yb290IGFuZAotICAgICAgICAgdGFyZ2V0X3N5c3Jvb3Rfc3VmZml4LgotKyAlciAgICAgT3V0cHV0IHRoZSBiYXNlIHBhdGggdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeAotICAlUyAgICAgcHJvY2VzcyBTVEFSVEZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgUyBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCi0gICVFICAgICBwcm9jZXNzIEVOREZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgRSBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCi0gICVDICAgICBwcm9jZXNzIENQUF9TUEVDIGFzIGEgc3BlYy4KLUBAIC0xMjg2LDEwICsxMjg5LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7Ci0gICAgZ2NjX2V4ZWNfcHJlZml4IGlzIHNldCBiZWNhdXNlLCBpbiB0aGF0IGNhc2UsIHdlIGtub3cgd2hlcmUgdGhlCi0gICAgY29tcGlsZXIgaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdXNlIHBhdGhzIHJlbGF0aXZlIHRvIHRoYXQKLSAgICBsb2NhdGlvbiBpbnN0ZWFkLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfZXhlY19wcmVmaXggPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfbGliZXhlY19wcmVmaXggPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfYmluZGlyX3ByZWZpeCA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2V4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLStzdGF0aWMgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0gCi0gLyogRm9yIG5hdGl2ZSBjb21waWxlcnMsIHRoZXNlIGFyZSB3ZWxsLWtub3duIHBhdGhzIGNvbnRhaW5pbmcKLSAgICBjb21wb25lbnRzIHRoYXQgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IgY3Jvc3MKLUBAIC0xMjk3LDkgKzEzMDAsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX2V4ZWNfcHJlZml4ID0gTURfRVhFQ19QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXggPSBNRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4XzEgPSBNRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMQotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzIKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMjsKLSAKLSAvKiBBIHJlbGF0aXZlIHBhdGggdG8gYmUgdXNlZCBpbiBmaW5kaW5nIHRoZSBsb2NhdGlvbiBvZiB0b29scwotQEAgLTU1MjMsNiArNTUyNiwxMSBAQCBkb19zcGVjXzEgKGNvbnN0IGNoYXIgKnNwZWMsIGludCBpbnN3aXRjaCwgY29uc3QgY2hhciAqc29mdF9tYXRjaGVkX3BhcnQpCi0gCSAgICAgIH0KLSAJICAgIGJyZWFrOwotIAotKyAgICAgICAgICBjYXNlICdyJzoKLSsgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgsCi0rCQkgICAgICBzdHJsZW4gKHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgpKTsKLSsgICAgICAgICAgICBicmVhazsKLSsKLSAJICBjYXNlICdTJzoKLSAJICAgIHZhbHVlID0gZG9fc3BlY18xIChzdGFydGZpbGVfc3BlYywgMCwgTlVMTCk7Ci0gCSAgICBpZiAodmFsdWUgIT0gMCkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQxLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1MDRhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDk5Y2FkYjRkODQxNWRkNWEyNzVkN2Q2NDEwZjIwZGIzM2QwZjg0MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDEvNDZdIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKLSBtdWx0aWxpYi4KLQotV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCi08c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCi13aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKLWNvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKLXRoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQotY28tZXhpc3Qgb24gdGFyZ2V0LgotCi1XZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKLWZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKLTx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCi1taXBzNjQtcG9sa21sbGliMzItbGludXgKLWlzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KLQotVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCi1pczoKLQotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi13aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCi13aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KLQotVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0Ci1iaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6Ci0KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAgMjAxNS83LzMxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDJiNzc1NmUuLjhmNTNhZWEgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTIzMDUsNyArMjMwNSw3IEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCi0gICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAJewotIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOwotLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOwotIAl9Ci0gCi1AQCAtMjMxNyw2ICsyMzE3LDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCi0gCSAgLyogTG9vayBmaXJzdCBpbiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5LiAgKi8KLSAJICBpZiAoIXNraXBfbXVsdGlfZGlyKQotIAkgICAgewotKwkgICAgICBpZiAoIShwbC0+b3NfbXVsdGlsaWIgPyBza2lwX211bHRpX29zX2RpciA6IHNraXBfbXVsdGlfZGlyKSkKLSsJICAgICAgICB7Ci0rCSAgICAgICAgICBjb25zdCBjaGFyICp0aGlzX211bHRpOwotKwkgICAgICAgICAgc2l6ZV90IHRoaXNfbXVsdGlfbGVuOwotKwotKwkgICAgICAgICAgaWYgKHBsLT5vc19tdWx0aWxpYikKLSsJCSAgICB7Ci0rCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfb3NfZGlyOwotKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9vc19kaXJfbGVuOwotKwkJICAgIH0KLSsJICAgICAgICAgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfZGlyOwotKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9kaXJfbGVuOwotKwkJICAgIH0KLSsKLSsJICAgICAgICAgIC8qIExvb2sgaW4gbXVsdGlsaWIgTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeSBmaXJzdCAqLwotKwkgICAgICAgICAgaWYgKHRoaXNfbXVsdGlfbGVuKQotKwkgICAgICAgICAgICB7Ci0rCQkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIHRoaXNfbXVsdGksIHRoaXNfbXVsdGlfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgbWVtY3B5IChwYXRoICsgbGVuICsgdGhpc19tdWx0aV9sZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKLSsJICAgICAgICAgICAgICAgIGlmIChyZXQpCi0rCQkgICAgICAgICAgYnJlYWs7Ci0rCSAgICAgICAgICAgIH0KLSsJICAgICAgICB9Ci0rCi0gCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0gCSAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKLSAJICAgICAgaWYgKHJldCkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWY3NjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Mi1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDc4ZTc3MjA2OTAyMzQ5YzkyNTZmMDZjM2RkMTc5MTk3YTM5YWYyZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDIvNDZdIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCi0KLVdoZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCi1DRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKLUNYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgotV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCi10aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgotCi1UaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKLUNQUCwgYW5kIEdNUElOQy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKLSBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKwotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBnY2MvY29uZmlndXJlLmFjIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGE3ODNlMWUuLjhiNmQzZDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0NKPSIkKEdDSl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdDSjsgXAotQEAgLTE3MCw2ICsxNzEsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE4Nyw2ICsxOTEsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1AQCAtNzEwLDYgKzcxNSw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKLSAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKLSAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAotIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCi0rCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCi0gCSJGTEVYPSQoRkxFWCkiIFwKLSAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAotaW5kZXggMWVhMTk1NC4uNzhhNTljMyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnRwbAotKysrIGIvTWFrZWZpbGUudHBsCi1AQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcyLDYgKzE3Myw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg5LDYgKzE5Myw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IGNkNWJjNGEuLjk4YWU0ZjQgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTc2Miw3ICs3NjIsNyBAQCBCVUlMRF9MSU5LRVJGTEFHUyA9ICQoQlVJTERfQ1hYRkxBR1MpCi0gIyBOYXRpdmUgbGlua2VyIGFuZCBwcmVwcm9jZXNzb3IgZmxhZ3MuICBGb3IgeC1mcmFnbWVudCBvdmVycmlkZXMuCi0gQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKLSBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAotLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCi0rCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCi0gCi0gIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgotIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA2ZGY1OTRjLi5mY2IwNWU3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTExNTIxLDcgKzExNTIxLDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggM2JiMjE3My4uOTIzYmM5YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xNjMzLDcgKzE2MzMsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZDg0MDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQzLWxpYnN0ZGMtU3VwcG9ydC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBkZjQzMGI5NDNhMmRmNmI3MjA1NGM4MDhkNGI5MzMzOGE4MjU2MmRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBEZWMgMjAxNSAwODoyMzozNCArMDAwMAotU3ViamVjdDogW1BBVENIIDQzLzQ2XSBsaWJzdGRjKys6IFN1cHBvcnQgbXVzbAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdCB8IDEwICsrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0IGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCA2NDAxOTljLi4xNzU2NDQ0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLUBAIC0yNzQsMTQgKzI3NCwyNCBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYnNkL2ZyZWVic2QiCi0gICAgIDs7Ci0gICBnbnUqIHwgbGludXgqIHwga2ZyZWVic2QqLWdudSB8IGtuZXRic2QqLWdudSkKLSsgICAgIyBjaGVjayBmb3IgbXVzbCBieSB0YXJnZXQKLSsgICAgY2FzZSAiJHtob3N0X29zfSIgaW4KLSsgICAgICAqLW11c2wqKQotKyAgICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2dlbmVyaWMiCi0rICAgICAgICA7OwotKyAgICAgICopCi0gICAgIGlmIFsgIiR1Y2xpYmMiID0gInllcyIgXTsgdGhlbgotICAgICAgIG9zX2luY2x1ZGVfZGlyPSJvcy91Y2xpYmMiCi0gICAgIGVsaWYgWyAiJGJpb25pYyIgPSAieWVzIiBdOyB0aGVuCi0gICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2Jpb25pYyIKLSsgICAgZWxpZiBbICIkbXVzbCIgPSAieWVzIiBdOyB0aGVuCi0rICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2dlbmVyaWMiCi0gICAgIGVsc2UKLSAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ251LWxpbnV4IgotICAgICBmaQotICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICBocHV4KikKLSAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2hwdXgiCi0gICAgIDs7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ0LUFkZGluZy1tbXVzbC1hcy1hLW11c2wtbGliYy1zcGVjaWZpZXItYW5kLXRoZS1uZWNlc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YWE5NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ0LUFkZGluZy1tbXVzbC1hcy1hLW11c2wtbGliYy1zcGVjaWZpZXItYW5kLXRoZS1uZWNlc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotRnJvbSAwYjU0Nzk5ZDgwZmI4NTljN2IxNDI0NjdlNGQ0MmM5OWRiNTlkZjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBEZWMgMjAxNSAwODozMDozNSArMDAwMAotU3ViamVjdDogW1BBVENIIDQ0LzQ2XSBBZGRpbmcgLW1tdXNsIGFzIGEgbXVzbCBsaWJjIHNwZWNpZmllciwgYW5kIHRoZQotIG5lY2Vzc2FyeSBoYWNrcyBmb3IgaXQgdG8ga25vdyBob3cgdG8gZmluZCBtdXNsJ3MgZHluYW1pYyBsaW5rZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3BhcnRpYWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgICAgICAgICAgICAgICAgfCAgMTAgKysrKy0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgICB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSBnY2MvY29uZmlnL2xpbnV4Lm9wdCAgICAgICAgICB8ICAgNCArKwotIGdjYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oIHwgICAxICsKLSBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oICAgICB8ICAgNSArKysKLSBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggICAgICAgICB8ICAgMyArKwotIDYgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcuZ2NjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy5nY2MKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy5nY2MKLUBAIC01NzUsNyArNTc1LDcgQEAgY2FzZSAke3RhcmdldH0gaW4KLSBlc2FjCi0gCi0gIyBDb21tb24gQyBsaWJyYXJpZXMuCi0tdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgTElCQ19HTElCQz0xIExJQkNfVUNMSUJDPTIgTElCQ19CSU9OSUM9MyIKLSt0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIExJQkNfTVVTTD00IgotIAotICMgMzItYml0IHg4NiBwcm9jZXNzb3JzIHN1cHBvcnRlZCBieSAtLXdpdGgtYXJjaD0uICBFYWNoIHByb2Nlc3NvcgotICMgTVVTVCBiZSBzZXBhcmF0ZWQgYnkgZXhhY3RseSBvbmUgc3BhY2UuCi1AQCAtNzIwLDYgKzcyMCw5IEBAIGNhc2UgJHt0YXJnZXR9IGluCi0gICAgICotKi0qdWNsaWJjKikKLSAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19VQ0xJQkMiCi0gICAgICAgOzsKLSsgICAgKi0qLSptdXNsKikKLSsgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19NVVNMIgotKyAgICAgIDs7Ci0gICAgICopCi0gICAgICAgdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgREVGQVVMVF9MSUJDPUxJQkNfR0xJQkMiCi0gICAgICAgOzsKLUBAIC0yNDIwLDYgKzI0MjMsMTEgQEAgcG93ZXJwYyotKi1saW51eCopCi0gCSAgICBwb3dlcnBjKi0qLWxpbnV4KnBhaXJlZCopCi0gCQl0bV9maWxlPSIke3RtX2ZpbGV9IHJzNjAwMC83NTBjbC5oIiA7OwotIAllc2FjCi0rICAgICAgICBjYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgKi1saW51eCotbXVzbCopCi0rCQllbmFibGVfc2VjdXJlcGx0PXllcyA7OwotKwllc2FjCi0rCi0gCWlmIHRlc3QgeCR7ZW5hYmxlX3NlY3VyZXBsdH0gPSB4eWVzOyB0aGVuCi0gCQl0bV9maWxlPSJyczYwMDAvc2VjdXJlcGx0LmggJHt0bV9maWxlfSIKLSAJZmkKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgZ2NjLTUuNC4wL2djYy9jb25maWcvbGludXguaAotQEAgLTMyLDEwICszMiwxMiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJCi0gI2RlZmluZSBPUFRJT05fR0xJQkMgIChERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQykKLSAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQykKLSAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKERFRkFVTFRfTElCQyA9PSBMSUJDX0JJT05JQykKLSsjZGVmaW5lIE9QVElPTl9NVVNMICAgKERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wpCi0gI2Vsc2UKLSAjZGVmaW5lIE9QVElPTl9HTElCQyAgKGxpbnV4X2xpYmMgPT0gTElCQ19HTElCQykKLSAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKGxpbnV4X2xpYmMgPT0gTElCQ19VQ0xJQkMpCi0gI2RlZmluZSBPUFRJT05fQklPTklDIChsaW51eF9saWJjID09IExJQkNfQklPTklDKQotKyNkZWZpbmUgT1BUSU9OX01VU0wgICAobGludXhfbGliYyA9PSBMSUJDX01VU0wpCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCkJCQlcCi1AQCAtNTMsMTggKzU1LDIxIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAgICB1Q2xpYmMgb3IgQmlvbmljIGlzIHRoZSBkZWZhdWx0IEMgbGlicmFyeSBhbmQgd2hldGhlcgotICAgIC1tdWNsaWJjIG9yIC1tZ2xpYmMgb3IgLW1iaW9uaWMgaGFzIGJlZW4gcGFzc2VkIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC4gICovCi0gCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxKExJQkMxLCBMSUJDMiwgTElCQzMsIExEMSwgTEQyLCBMRDMpCVwKLS0gICIleyIgTElCQzIgIjoiIExEMiAiOzoleyIgTElCQzMgIjoiIExEMyAiOzoiIExEMSAifX0iCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxKExJQkMxLCBMSUJDMiwgTElCQzMsIExJQkM0LCBMRDEsIExEMiwgTEQzLCBMRDQpCVwKLSsgICIleyIgTElCQzIgIjoiIExEMiAiOzoleyIgTElCQzMgIjoiIExEMyAiOzoleyIgTElCQzQgIjoiIExENCAiOzoiIExEMSAifX19IgotIAotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgRywgVSwgQikKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsICJtbXVzbCIsIEcsIFUsIEIsIE0pCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm11Y2xpYmMiLCAibWdsaWJjIiwgIm1iaW9uaWMiLCBVLCBHLCBCKQotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtdWNsaWJjIiwgIm1nbGliYyIsICJtYmlvbmljIiwgIm1tdXNsIiwgVSwgRywgQiwgTSkKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19CSU9OSUMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWJpb25pYyIsICJtZ2xpYmMiLCAibXVjbGliYyIsIEIsIEcsIFUpCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1iaW9uaWMiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCAibW11c2wiLCBCLCBHLCBVLCBNKQotKyNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibW11c2wiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsIE0sIEcsIFUsIEIpCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIERFRkFVTFRfTElCQyIKLSAjZW5kaWYgLyogREVGQVVMVF9MSUJDICovCi1AQCAtODQsMTYgKzg5LDE2IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSCQkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSLAlcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSLCBNVVNMX0RZTkFNSUNfTElOS0VSKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMgkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVIzMikKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSNjQJCQkJCVwKLSAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQpCi0rCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0LCBNVVNMX0RZTkFNSUNfTElOS0VSNjQpCi0gI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUlgzMgkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUlgzMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUlgzMikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyLCBNVVNMX0RZTkFNSUNfTElOS0VSWDMyKQotIAotIC8qIFdoZXRoZXIgd2UgaGF2ZSBCaW9uaWMgbGliYyBydW50aW1lICovCi0gI3VuZGVmIFRBUkdFVF9IQVNfQklPTklDCi1AQCAtMTIzLDMgKzEyOCw3NCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJCi0gIyBkZWZpbmUgVEFSR0VUX0xJQkNfSEFTX0ZVTkNUSU9OIGxpbnV4X2xpYmNfaGFzX2Z1bmN0aW9uCi0gCi0gI2VuZGlmCi0rCi0rLyogbXVzbCBhdm9pZHMgcHJvYmxlbWF0aWMgaW5jbHVkZXMgYnkgcmVhcnJhbmdpbmcgdGhlIGluY2x1ZGUgZGlyZWN0b3JpZXMuCi0rICogVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGNwcGRlZmF1bHQuYyAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfR1BQCQkJXAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCi0rICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCQlcCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAkJXAotKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAkJXAotKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCVwKLSsgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAkJCVwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAkJXAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyNlbmRpZgotKwotKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAotKyNlbmRpZgotKwotKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCQkJXAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUwotKyNlbmRpZgotKwotKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCVwKLSsgICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1RPT0wKLSsjZW5kaWYKLSsKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCQkJXAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgMCwgMCwgMCwgMSwgMiB9LAlcCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAwIH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCAoQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSkgJiYgIWRlZmluZWQgKFRBUkdFVF9TWVNURU1fUk9PVCkKLSsjIHVuZGVmIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKLSsjZWxzZQotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rI2VuZGlmCi0rCi0rI3VuZGVmIElOQ0xVREVfREVGQVVMVFMKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFMJCQkJXAotKyAgewkJCQkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAotKyAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCi0rICB9Ci0rI2VuZGlmCi1JbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcvbGludXgub3B0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy9saW51eC5vcHQKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5vcHQKLUBAIC0yOCw1ICsyOCw5IEBAIFRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2wKLSBVc2UgR05VIEMgbGlicmFyeQotIAotIG11Y2xpYmMKLS1UYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfVUNMSUJDKSBOZWdhdGl2ZShtYmlvbmljKQotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19VQ0xJQkMpIE5lZ2F0aXZlKG1tdXNsKQotIFVzZSB1Q2xpYmMgQyBsaWJyYXJ5Ci0rCi0rbW11c2wKLStUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfTVVTTCkgTmVnYXRpdmUobWJpb25pYykKLStVc2UgbXVzbCBDIGxpYnJhcnkKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotKysrIGdjYy01LjQuMC9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotQEAgLTE4LDMgKzE4LDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICItbXNlY3VyZS1wbHQiCi0rI2RlZmluZSBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICItLXNlY3VyZS1wbHQiCi1JbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi0rKysgZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLUBAIC01MzgsNiArNTM4LDEwIEBAIEVORElBTl9TRUxFQ1QoIiAtbWJpZyIsICIgLW1saXR0bGUiLCBERUYKLSAjZGVmaW5lIENDMV9TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotICNlbmRpZgotIAotKyNpZm5kZWYgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQwotKyNkZWZpbmUgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotKyNlbmRpZgotKwotIC8qIFBhc3MgLUcgeHh4IHRvIHRoZSBjb21waWxlci4gICovCi0gI3VuZGVmIENDMV9TUEVDCi0gI2RlZmluZQlDQzFfU1BFQyAiJXtHKn0gJShjYzFfY3B1KSIgXAotQEAgLTg4OSw2ICs4OTMsNyBAQCBuY3J0bi5vJXMiCi0gICB7ICJsaW5rX29zX29wZW5ic2QiLAkJTElOS19PU19PUEVOQlNEX1NQRUMgfSwJCQlcCi0gICB7ICJsaW5rX29zX2RlZmF1bHQiLAkJTElOS19PU19ERUZBVUxUX1NQRUMgfSwJCQlcCi0gICB7ICJjYzFfc2VjdXJlX3BsdF9kZWZhdWx0IiwJQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDIH0sCQlcCi0rICB7ICJsaW5rX3NlY3VyZV9wbHRfZGVmYXVsdCIsCUxJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKLSAgIHsgImNwcF9vc19hZHMiLAkJQ1BQX09TX0FEU19TUEVDIH0sCQkJXAotICAgeyAiY3BwX29zX3llbGxvd2tuaWZlIiwJQ1BQX09TX1lFTExPV0tOSUZFX1NQRUMgfSwJCVwKLSAgIHsgImNwcF9vc19tdm1lIiwJCUNQUF9PU19NVk1FX1NQRUMgfSwJCQlcCi1JbmRleDogZ2NjLTUuNC4wL2djYy9naW5jbHVkZS9zdGRkZWYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjQuMC5vcmlnL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGdjYy01LjQuMC9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLUBAIC0xODQsNiArMTg0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0yMDAsNiArMjAxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLUBAIC0yMTgsNiArMjIwLDcgQEAgdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKLSB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZW5kaWYgLyogX19CRU9TX18gKi8KLSAjZW5kaWYgLyogIShkZWZpbmVkIChfX0dOVUdfXykgJiYgZGVmaW5lZCAoc2l6ZV90KSkgKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLwotICNlbmRpZiAvKiBfX3NpemVfdCAqLwotICNlbmRpZiAvKiBfU0laRVRfICovCi0gI2VuZGlmIC8qIF9HQ0NfU0laRV9UICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMTExNWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ1LVN1cHBvcnQtZm9yLWFybS1saW51eC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLUZyb20gYTZjNjQ5NTcxZDQ5Yzk3MmU2ZDIwNzU3Nzc4MGFkYTdlOWI2YmFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggRGVjIDIwMTUgMDg6MzE6NTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0NS81N10gU3VwcG9ydCBmb3IgYXJtLWxpbnV4LW11c2wuCi0KLUZpeCBtdXNsIGxkc28gZm9yIGFsbCBhcmNoZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydCBbcGFydGlhbF0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgIDEgKwotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgICAgICAgfCAgMSArCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICAgICAgICB8ICA1ICsrKysrCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICAgICAgICB8ICA4ICsrKysrKystCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICAgICAgICB8IDEzICsrKysrKysrKy0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oICAgICAgICAgIHwgMTAgKysrKysrKy0tLQotIGxpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjICAgICAgICAgfCAgNCArKysrCi0gbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmggICAgICB8ICA4ICsrKysrKy0tCi0gOSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCBmOWU2NWZjLi4xYjJkMGMwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTIyLDYgKzIyLDcgQEAKLSAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0LnNvLjEiCi0gCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0LnNvLjEiCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCAwNDhhMDYyLi5hZGI5YzQ0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC04MSw2ICs4MSwyMyBAQAotICN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQwotICNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCi0gCi0rLyogRm9yIEFSTSBtdXNsIGN1cnJlbnRseSBzdXBwb3J0cyBmb3VyIGR5bmFtaWMgbGlua2VyczoKLSsgICAtIGxkLW11c2wtYXJtLnNvLjEgLSBmb3IgdGhlIEVBQkktZGVyaXZlZCBzb2Z0LWZsb2F0IEFCSQotKyAgIC0gbGQtbXVzbC1hcm1oZi5zby4xIC0gZm9yIHRoZSBFQUJJLWRlcml2ZWQgaGFyZC1mbG9hdCBBQkkKLSsgICAtIGxkLW11c2wtYXJtZWIuc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIHNvZnQtZmxvYXQgQUJJLCBFQgotKyAgIC0gbGQtbXVzbC1hcm1lYmhmLnNvLjEgLSBmb3IgdGhlIEVBQkktZGVyaXZlZCBoYXJkLWZsb2F0IEFCSSwgRUIKLSsgICBtdXNsIGRvZXMgbm90IHN1cHBvcnQgdGhlIGxlZ2FjeSBPQUJJIG1vZGUuCi0rICAgQWxsIHRoZSBkeW5hbWljIGxpbmtlcnMgbGl2ZSBpbiAvbGliLgotKyAgIFdlIGRlZmF1bHQgdG8gc29mdC1mbG9hdCwgRUwuICovCi0rI3VuZGVmICBNVVNMX0RZTkFNSUNfTElOS0VSCi0rI2lmIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttbGl0dGxlLWVuZGlhbjo7OmVifSIKLSsjZWxzZQotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21iaWctZW5kaWFuOmVifSIKLSsjZW5kaWYKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggMjFiYTJiMi4uZTJiODFlNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIxLDMgKzIxLDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1pMzg2LnNvLjEiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLWluZGV4IDYxODVjY2UuLjVhM2E5NzcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1AQCAtMzAsMyArMzAsOCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKLSsKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1pMzg2LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wteDg2XzY0LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXgzMi5zby4xIgotKwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLWluZGV4IGMzMDZhZmIuLmI4OTkzODggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMSw2ICsyMSwxMiBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmNjQle0VCOmJ9JXtFTDpsfXRzbWlwIgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSsjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwcyV7RUw6ZWx9JXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVI2NAotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLW1pcHM2NCV7RUw6ZWx9JXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSTjMyIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLW1pcHNuMzIle0VMOmVsfSV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotKwotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0gICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi1AQCAtNDAsNCArNDYsNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSTjMyICIvc3lzdGVtL2Jpbi9saW5rZXIzMiIKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSTjMyIFwKLSAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiwgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgIEJJT05JQ19EWU5BTUlDX0xJTktFUk4zMiwgIE1VU0xfRFlOQU1JQ19MSU5LRVJOMzIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCAzMWM0MzM4Li42NzlkYTRiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC0zNjUsMTcgKzM2NSwyMiBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICNlbmRpZgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYy5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGM2NC5zby4xIgotKwotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bW11c2w6IiBNICI7OiIgVSAifX0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttdWNsaWJjOiIgVSAiOzoiIEcgIn0iCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bXVjbGliYzoiIFUgIjs6JXttbXVzbDoiIE0gIjs6IiBHICJ9fSIKLSsjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bWdsaWJjOiIgRyAiOzole211Y2xpYmM6IiBVICI7OiIgTSAifX0iCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIERFRkFVTFRfTElCQyIKLSAjZW5kaWYKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMikKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVIzMikKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCkKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCkKLSAKLSAjdW5kZWYgIERFRkFVTFRfQVNNX0VORElBTgotICNpZiAoVEFSR0VUX0RFRkFVTFQgJiBNQVNLX0xJVFRMRV9FTkRJQU4pCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaCBiL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLWluZGV4IDdjZDA3ZTAuLjg3OTRmYTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi1AQCAtNzYzLDE1ICs3NjMsMTkgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRkFVTFRfQVNNX0VORElBTikKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLnNvLjEiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtcG93ZXJwYy5zby4xIgotKwotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bW11c2w6IiBNICI7OiIgVSAifX0iCi0rI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttdWNsaWJjOiIgVSAiOzoiIE0gIn19IgotICNlbGlmICFkZWZpbmVkIChERUZBVUxUX0xJQkMpIHx8IERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bXVjbGliYzoiIFUgIjs6IiBHICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle211Y2xpYmM6IiBVICI7OiV7bW11c2w6IiBNICI7OiIgRyAifX0iCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIERFRkFVTFRfTElCQyIKLSAjZW5kaWYKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUikKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUiwgTVVTTF9EWU5BTUlDX0xJTktFUikKLSAKLSAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQyAiLW0gZWxmMzJwcGNsaW51eCAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLWRpZmYgLS1naXQgYS9saWJpdG0vY29uZmlnL2FybS9od2NhcC5jYyBiL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjCi1pbmRleCBhMWMyY2ZkLi5kZDRmYWQyIDEwMDY0NAotLS0tIGEvbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MKLSsrKyBiL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjCi1AQCAtNDAsNyArNDAsMTEgQEAgaW50IEdUTV9od2NhcCBISURERU4gPSAwCi0gCi0gI2lmZGVmIF9fbGludXhfXwotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaWZkZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGVsZi5oPgotIAotIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkKLWRpZmYgLS1naXQgYS9saWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaCBiL2xpYml0bS9jb25maWcvbGludXgveDg2L3Rscy5oCi1pbmRleCBlNzMxYWI3Li41NGFkOGI2IDEwMDY0NAotLS0tIGEvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLSsrKyBiL2xpYml0bS9jb25maWcvbGludXgveDg2L3Rscy5oCi1AQCAtMjUsMTYgKzI1LDE5IEBACi0gI2lmbmRlZiBMSUJJVE1fWDg2X1RMU19ICi0gI2RlZmluZSBMSUJJVE1fWDg2X1RMU19IIDEKLSAKLS0jaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkgJiYgX19HTElCQ19QUkVSRVEoMiwgMTApCi0rI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCi0rI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDEwKQotIC8qIFVzZSBzbG90cyBpbiB0aGUgVENCIGhlYWQgcmF0aGVyIHRoYW4gX190aHJlYWQgbG9va3Vwcy4KLSAgICBHTElCQyBoYXMgcmVzZXJ2ZWQgd29yZHMgMTAgdGhyb3VnaCAxMyBmb3IgVE0uICAqLwotICNkZWZpbmUgSEFWRV9BUkNIX0dUTV9USFJFQUQgMQotICNkZWZpbmUgSEFWRV9BUkNIX0dUTV9USFJFQURfRElTUCAxCi0gI2VuZGlmCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImNvbmZpZy9nZW5lcmljL3Rscy5oIgotIAotLSNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKSAmJiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKLSsjaWYgX19HTElCQ19QUkVSRVEoMiwgMTApCi0gbmFtZXNwYWNlIEdUTSBISURERU4gewotIAotICNpZmRlZiBfX3g4Nl82NF9fCi1AQCAtMTAxLDUgKzEwNCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYWJpX2Rpc3Aoc3RydWN0IGFiaV9kaXNwYXRjaCAqeCkKLSAKLSB9IC8vIG5hbWVzcGFjZSBHVE0KLSAjZW5kaWYgLyogPj0gR0xJQkMgMi4xMCAqLwotKyNlbmRpZgotIAotICNlbmRpZiAvLyBMSUJJVE1fWDg2X1RMU19ICi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDYtR2V0LXJpZC1vZi1ldmVyLWJyb2tlbi1maXhpbmNsdWRlcy1vbi1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGIwZmM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDA0NzExNmU4YzljYmIzNDAyNjRmNGYyOGRiM2YyMWE2OGJhNTdmZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IERlYyAyMDE1IDA4OjMyOjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDYvNDZdIEdldCByaWQgb2YgZXZlci1icm9rZW4gZml4aW5jbHVkZXMgb24gbXVzbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZml4aW5jbHVkZXMvbWtmaXhpbmMuc2ggfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ZpeGluY2x1ZGVzL21rZml4aW5jLnNoIGIvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2gKLWluZGV4IDY2NTNmZWRiLi4wZDk2YzhjIDEwMDc1NQotLS0tIGEvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2gKLSsrKyBiL2ZpeGluY2x1ZGVzL21rZml4aW5jLnNoCi1AQCAtMTksNyArMTksOCBAQCBjYXNlICRtYWNoaW5lIGluCi0gICAgIHBvd2VycGMtKi1lYWJpKiAgICB8IFwKLSAgICAgcG93ZXJwYy0qLXJ0ZW1zKiAgIHwgXAotICAgICBwb3dlcnBjbGUtKi1lYWJpc2ltKiB8IFwKLS0gICAgcG93ZXJwY2xlLSotZWFiaSogKQotKyAgICBwb3dlcnBjbGUtKi1lYWJpKiB8IFwKLSsgICAgKi1tdXNsKiApCi0gCSMgIElGIHRoZXJlIGlzIG5vIGluY2x1ZGUgZml4aW5nLAotIAkjICBUSEVOIGNyZWF0ZSBhIG5vLW9wIGZpeGVyIGFuZCBleGl0Ci0gCShlY2hvICIjISAvYmluL3NoIiA7IGVjaG8gImV4aXQgMCIgKSA+ICR7dGFyZ2V0fQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExY2ZiOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ3LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmNWNhMDcxMzJiOTI5MmQyMDQ1Y2E3MjA0ZTljYmZkZTJlNTlkMGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMiBGZWIgMjAxNiAxMDoyNjoxMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQ3LzQ4XSBuaW9zMjogRGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1pbmRleCBmNDNmNjU1Li41NTg3YWIzIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLUBAIC0zMCw2ICszMCw3IEBACi0gI2RlZmluZSBDUFBfU1BFQyAiJXtwb3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtbmlvczIuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgICIvbGliL2xkLW11c2wtbmlvczIuc28uMSIKLSAKLSAjdW5kZWYgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgTElOS19TUEVDX0VORElBTiBcCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OC1zc3Bfbm9uc2hhcmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZGQ0MGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDNjYjYwMTNjZjI4N2VkOWIxMjQ3ZWEzNzU0MWU2NGI5ODEwYTEyMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFNhdCwgNyBOb3YgMjAxNSAxNDo1ODo0MCArMDAwMAotU3ViamVjdDogW1BBVENIIDQ4LzQ4XSBzc3Bfbm9uc2hhcmVkCi0KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2djYy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDhmNTNhZWEuLjNkZGM2NTggMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTczMiw3ICs3MzIsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gI2lmbmRlZiBMSU5LX1NTUF9TUEVDCi0gI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotICNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0tCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0On0iCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotICNlbHNlCi0gI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSAJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ5LURpc2FibGUtdGhlLXdlYWstcmVmZXJlbmNlLWxvZ2ljLWluLWd0aHIuaC1mb3Itb3MtZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhNTE0My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gNTUzZDhlM2I5MDczZmYzZTBhOWQyZmFjOWIxODIzZmIxN2FkMjQ3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMjE6MDA6MTggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0OS81MV0gRGlzYWJsZSB0aGUgd2VhayByZWZlcmVuY2UgbG9naWMgaW4gZ3Roci5oIGZvcgotIG9zL2dlbmVyaWMKLQotSXQgZG9lcyBub3Qgd29yayB1bmxlc3Mgd29yayBhcm91bmRzIGFyZSB0aGVyZSBpbiBndGhyLXBvc2l4LmgKLQotb3JpZ2luIG9mIHBhdGNoCi1odHRwOi8vcG9ydDcwLm5ldC9+bnN6L211c2wvZ2NjLTUuMy4wLzAwMDQtZ3Roci5wYXRjaAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGxpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNCAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBsaWJzdGRjKystdjMvY29uZmlnL29zL2dlbmVyaWMvb3NfZGVmaW5lcy5oIHwgNSArKysrKwotIGxpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgfCAzICsrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNCBiL2xpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNAotaW5kZXggYmE4OTBmOS4uMzBiOGIxYTYgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9hY2luY2x1ZGUubTQKLSsrKyBiL2xpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNAotQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIGZvbyAodm9pZCk7Ci0gCSAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzICNwcmFnbWEgd2Vha10pCi0gICBmaQotICAgY2FzZSAiJGhvc3QiIGluCi0tICAgICotKi1kYXJ3aW4qIHwgKi0qLWhwdXgqIHwgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqICkKLSsgICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotbXVzbCogKQotICAgICAgIEFDX0RFRklORShHVEhSRUFEX1VTRV9XRUFLLCAwLAotIAkJW0RlZmluZSB0byAwIGlmIHRoZSB0YXJnZXQgc2hvdWxkbid0IHVzZSAjcHJhZ21hIHdlYWtdKQotICAgICAgIDs7Ci1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1pbmRleCA1ZDQ3ZTY1Li5jZGY5Njk1IDEwMDc1NQotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLUBAIC0yNjQ1Niw3ICsyNjQ1Niw3IEBAICRhc19lY2hvICIjZGVmaW5lIFNVUFBPUlRTX1dFQUsgMSIgPj5jb25mZGVmcy5oCi0gCi0gICBmaQotICAgY2FzZSAiJGhvc3QiIGluCi0tICAgICotKi1kYXJ3aW4qIHwgKi0qLWhwdXgqIHwgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqICkKLSsgICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotbXVzbCogKQotIAotICRhc19lY2hvICIjZGVmaW5lIEdUSFJFQURfVVNFX1dFQUsgMCIgPj5jb25mZGVmcy5oCi0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nZW5lcmljL29zX2RlZmluZXMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmgKLWluZGV4IDQ1YmY1MmEuLjEwM2VjMGUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dlbmVyaWMvb3NfZGVmaW5lcy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dlbmVyaWMvb3NfZGVmaW5lcy5oCi1AQCAtMzMsNCArMzMsOSBAQAotIC8vIFN5c3RlbS1zcGVjaWZpYyAjZGVmaW5lLCB0eXBlZGVmcywgY29ycmVjdGlvbnMsIGV0YywgZ28gaGVyZS4gIFRoaXMKLSAvLyBmaWxlIHdpbGwgY29tZSBiZWZvcmUgYWxsIG90aGVycy4KLSAKLSsvLyBEaXNhYmxlIHRoZSB3ZWFrIHJlZmVyZW5jZSBsb2dpYyBpbiBndGhyLmggZm9yIG9zL2dlbmVyaWMgYmVjYXVzZSBpdAotKy8vIGlzIGJyb2tlbiBvbiBldmVyeSBwbGF0Zm9ybSB1bmxlc3MgdGhlcmUgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMKLSsvLyB3b3JrYXJvdW5kIGluIGd0aHItcG9zaXguaCBhbmQgYXQgbGluay10aW1lIGZvciBzdGF0aWMgbGlua2luZy4KLSsjZGVmaW5lIF9HTElCQ1hYX0dUSFJFQURfVVNFX1dFQUsgMAotKwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdCBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAotaW5kZXggMTc1NjQ0NC4uMmE4N2JiOCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMjczLDYgKzI3Myw5IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCi0gICBmcmVlYnNkKikKLSAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2JzZC9mcmVlYnNkIgotICAgICA7OwotKyAgbGludXgtbXVzbCopCi0rICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9nZW5lcmljIgotKyAgICA7OwotICAgZ251KiB8IGxpbnV4KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gICAgICMgY2hlY2sgZm9yIG11c2wgYnkgdGFyZ2V0Ci0gICAgIGNhc2UgIiR7aG9zdF9vc30iIGluCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MC1wb3dlcnBjLXBhc3Mtc2VjdXJlLXBsdC10by10aGUtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZjJiYmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDRmYTBjZjAzNjc4Zjg0OTkxN2RjYzNkMTQ5OTg5YjdmZWNkYmUyNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDIxOjEwOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNTAvNTFdIHBvd2VycGMgcGFzcyAtLXNlY3VyZS1wbHQgdG8gdGhlIGxpbmtlcgotCi1TZWN1cmUtcGx0IHdoZW4gZW5hYmxlZCBkb2VzIG5vdCBwYXNzIHJpZ2h0IG9wdGlvbnMgdG8gbGlua2VyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDQgKysrKwotIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggICB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA2NzlkYTRiLi4zY2E3Y2Q3IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC0xNzQsMjAgKzE3NCwyNCBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICN1bmRlZglBU01fREVGQVVMVF9TUEVDCi0gI3VuZGVmCUFTTV9TUEVDCi0gI3VuZGVmCUxJTktfT1NfTElOVVhfU1BFQwotKyN1bmRlZglMSU5LX1NFQ1VSRV9QTFRfU1BFQwotIAotICNpZm5kZWYJUlM2MDAwX0JJX0FSQ0gKLSAjZGVmaW5lCUFTTV9ERUZBVUxUX1NQRUMgIi1tcHBjNjQiCi0gI2RlZmluZQlBU01fU1BFQwkgIiUoYXNtX3NwZWM2NCkgJShhc21fc3BlY19jb21tb24pIgotICNkZWZpbmUJTElOS19PU19MSU5VWF9TUEVDICIlKGxpbmtfb3NfbGludXhfc3BlYzY0KSIKLSsjZGVmaW5lCUxJTktfU0VDVVJFX1BMVF9TUEVDICIiCi0gI2Vsc2UKLSAjaWYgREVGQVVMVF9BUkNINjRfUAotICNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMleyFtMzI6NjR9IgotICNkZWZpbmUJQVNNX1NQRUMJICIle20zMjolKGFzbV9zcGVjMzIpfSV7IW0zMjolKGFzbV9zcGVjNjQpfSAlKGFzbV9zcGVjX2NvbW1vbikiCi0gI2RlZmluZQlMSU5LX09TX0xJTlVYX1NQRUMgIiV7bTMyOiUobGlua19vc19saW51eF9zcGVjMzIpfSV7IW0zMjolKGxpbmtfb3NfbGludXhfc3BlYzY0KX0iCi0rI2RlZmluZQlMSU5LX1NFQ1VSRV9QTFRfU1BFQyAiJXttMzI6ICIgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAifSIKLSAjZWxzZQotICNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMle202NDo2NH0iCi0gI2RlZmluZQlBU01fU1BFQwkgIiV7IW02NDolKGFzbV9zcGVjMzIpfSV7bTY0OiUoYXNtX3NwZWM2NCl9ICUoYXNtX3NwZWNfY29tbW9uKSIKLSAjZGVmaW5lCUxJTktfT1NfTElOVVhfU1BFQyAiJXshbTY0OiUobGlua19vc19saW51eF9zcGVjMzIpfSV7bTY0OiUobGlua19vc19saW51eF9zcGVjNjQpfSIKLSsjZGVmaW5lCUxJTktfU0VDVVJFX1BMVF9TUEVDICIleyFtNjQ6ICIgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAifSIKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotaW5kZXggODc5NGZhNS4uMDgzNTU1MSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLUBAIC01NzEsNiArNTcxLDcgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRkFVTFRfQVNNX0VORElBTikKLSAgICAgICAgICAgICAgICA6ICUobGlua19zdGFydF9kZWZhdWx0KSAgICAgfSIKLSAKLSAjZGVmaW5lIExJTktfU1RBUlRfREVGQVVMVF9TUEVDICIiCi0rI2RlZmluZSBMSU5LX1NFQ1VSRV9QTFRfU1BFQyBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDCi0gCi0gI3VuZGVmCUxJTktfU1BFQwotICNkZWZpbmUJTElOS19TUEVDICJcCi1AQCAtNTc4LDYgKzU3OSw3IEBAIEVORElBTl9TRUxFQ1QoIiAtbWJpZyIsICIgLW1saXR0bGUiLCBERUZBVUxUX0FTTV9FTkRJQU4pCi0gJXtSKn0gXAotICUobGlua19zaGxpYikgXAotICV7IVQqOiAlKGxpbmtfc3RhcnQpIH0gXAotKyV7IXN0YXRpYzogJXshbWJzcy1wbHQ6ICUobGlua19zZWN1cmVfcGx0X2RlZmF1bHQpfX0gXAotICUobGlua19vcykiCi0gCi0gLyogU2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IGRlZmF1bHQuICAqLwotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTEtSWdub3JlLWZkZWJ1Zy1wcmVmaXgtbWFwLWluLXByb2R1Y2VyLXN0cmluZy1ieS1EYW5pZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGY3OWI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzMjU5M2IzODA4MmVhNjVmNGM4MjE1OTI1NGFkZjFlMGRjMjQyM2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogYmVybmRzIDxiZXJuZHNAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVHVlLCAxNiBGZWIgMjAxNiAwMzoxNToxNSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBJZ25vcmUgLWZkZWJ1Zy1wcmVmaXgtbWFwIGluIHByb2R1Y2VyIHN0cmluZyAoYnkgRGFuaWVsIEthaG4KLSBHaWxsbW9yKQotCi0qIGR3YXJmMm91dC5jIChnZW5fcHJvZHVjZXJfc3RyaW5nKTogSWdub3JlIC1mZGVidWctcHJlZml4LW1hcC4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjMxODM1IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvZHdhcmYyb3V0LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwotaW5kZXggMzYxNGMxMC4uNTI2ZjExNCAxMDA2NDQKLS0tLSBhL2djYy9kd2FyZjJvdXQuYwotKysrIGIvZ2NjL2R3YXJmMm91dC5jCi1AQCAtMTk2NzAsNiArMTk2NzAsNyBAQCBnZW5fcHJvZHVjZXJfc3RyaW5nICh2b2lkKQotICAgICAgIGNhc2UgT1BUX2ZwcmVwcm9jZXNzZWQ6Ci0gICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86Ci0gICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgotKyAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSAJLyogSWdub3JlIHRoZXNlLiAgKi8KLSAJY29udGludWU7Ci0gICAgICAgZGVmYXVsdDoKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUyLW5pb3MyLXVzZS1yZXQtd2l0aC1yMzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNjYjQ3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1Gcm9tIDFkNjcxMjBkOTVjMmM2ZTBlZDRmNzM1N2QxY2M2Mjg4N2VhYmE0NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzYW5kcmEgPHNhbmRyYUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUdWUsIDEyIE1heSAyMDE1IDE1OjU3OjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIDIwMTUtMDUtMTIgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+Ci0gU2FuZHJhIExvb3NlbW9yZSA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+Ci0KLQlnY2MvCi0JKiBjb25maWcvbmlvczIvbmlvczIuaCAoZW51bSByZWdfY2xhc3MpOiBBZGQgSUpNUF9SRUdTIGVudW0KLQl2YWx1ZS4KLQkoUkVHX0NMQVNTX05BTUVTKTogQWRkICJJSk1QX1JFR1MiLgotCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGQgbmV3IGVudHJ5IGZvciBJSk1QX1JFR1MuCi0JKiBjb25maWcvbmlvczIvbmlvczIubWQgKGluZGlyZWN0X2p1bXAsKnRhYmxlanVtcCk6IEFkanVzdCB0bwotCXVzZSBuZXcgImMiIHJlZ2lzdGVyIGNvbnN0cmFpbnQuCi0JKiBjb25maWcvbmlvczIvY29uc3RyYWludC5tZCAoYyk6IE5ldyByZWdpc3RlciBjb25zdHJhaW50Ci0JY29ycmVzcG9uZGluZyB0byBJSk1QX1JFR1MuCi0KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMjMwODIgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBnaXQ6Ly9nY2MuZ251Lm9yZy9naXQvZ2NjLmdpdCAxZDY3MTIwZDk1YzJjNmUwZWQ0ZjczNTdkMWNjNjI4ODdlYWJhNDYzIF0KLS0tLQotIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKysKLSBnY2MvY29uZmlnL25pb3MyL2NvbnN0cmFpbnRzLm1kIHwgIDMgKysrCi0gZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5oICAgICAgICB8IDExICsrKysrKystLS0tCi0gZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZCAgICAgICB8ICA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2NvbnN0cmFpbnRzLm1kIGIvZ2NjL2NvbmZpZy9uaW9zMi9jb25zdHJhaW50cy5tZAotaW5kZXggZjRiZDlmNy4uNzM1Zjg5MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQKLSsrKyBiL2djYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQKLUBAIC0zOSw2ICszOSw5IEBACi0gCi0gOzsgUmVnaXN0ZXIgY29uc3RyYWludHMKLSAKLSsoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgImMiICJJSk1QX1JFR1MiCi0rICAiQSByZWdpc3RlciBzdWl0YWJsZSBmb3IgYW4gaW5kaXJlY3QganVtcC4iKQotKwotIChkZWZpbmVfcmVnaXN0ZXJfY29uc3RyYWludCAiaiIgIlNJQl9SRUdTIgotICAgIkEgcmVnaXN0ZXIgc3VpdGFibGUgZm9yIGFuIGluZGlyZWN0IHNpYmNhbGwuIikKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL25pb3MyLmggYi9nY2MvY29uZmlnL25pb3MyL25pb3MyLmgKLWluZGV4IDUxMGFiNWYuLmFjMzM5NzggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL25pb3MyLmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbmlvczIuaAotQEAgLTE3Myw2ICsxNzMsNyBAQCBlbnVtIHJlZ19jbGFzcwotIHsKLSAgIE5PX1JFR1MsCi0gICBTSUJfUkVHUywKLSsgIElKTVBfUkVHUywKLSAgIEdQX1JFR1MsCi0gICBBTExfUkVHUywKLSAgIExJTV9SRUdfQ0xBU1NFUwotQEAgLTE4Myw2ICsxODQsNyBAQCBlbnVtIHJlZ19jbGFzcwotICNkZWZpbmUgUkVHX0NMQVNTX05BTUVTICAgXAotICAgeyAgIk5PX1JFR1MiLAkJICBcCi0gICAgICAiU0lCX1JFR1MiLAkgIFwKLSsgICAgICJJSk1QX1JFR1MiLAkgIFwKLSAgICAgICJHUF9SRUdTIiwgICAgICAgICAgIFwKLSAgICAgICJBTExfUkVHUyIgfQotIAotQEAgLTE5MCwxMCArMTkyLDExIEBAIGVudW0gcmVnX2NsYXNzCi0gCi0gI2RlZmluZSBSRUdfQ0xBU1NfQ09OVEVOVFMJCQlcCi0gICB7CQkJCQkJXAotLSAgICAvKiBOT19SRUdTICAqLyB7IDAsIDB9LAkJCVwKLS0gICAgLyogU0lCX1JFR1MgKi8geyAweGZlMGMsIDB9LAkJXAotLSAgICAvKiBHUF9SRUdTICAqLyB7fjAsIDB9LAkJCVwKLS0gICAgLyogQUxMX1JFR1MgKi8ge34wLH4wfQkJCVwKLSsgICAgLyogTk9fUkVHUyAgICAqLyB7IDAsIDB9LAkJCVwKLSsgICAgLyogU0lCX1JFR1MgICAqLyB7IDB4ZmUwYywgMH0sCQlcCi0rICAgIC8qIElKTVBfUkVHUyAgKi8geyAweDdmZmZmZmZmLCAwfSwJCVwKLSsgICAgLyogR1BfUkVHUyAgICAqLyB7fjAsIDB9LAkJCVwKLSsgICAgLyogQUxMX1JFR1MgICAqLyB7fjAsfjB9CQkJXAotICAgfQotIAotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbmlvczIubWQgYi9nY2MvY29uZmlnL25pb3MyL25pb3MyLm1kCi1pbmRleCA3YjM1ZDI2OS4uMzZlZjEwMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbmlvczIubWQKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbmlvczIubWQKLUBAIC02OTcsNyArNjk3LDcgQEAKLSA7IGNoZWNrIG9yIGFkanVzdCBmb3Igb3ZlcmZsb3cuCi0gCi0gKGRlZmluZV9pbnNuICJpbmRpcmVjdF9qdW1wIgotLSAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0KLSsgIFsoc2V0IChwYykgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgImMiKSldCi0gICAiIgotICAgImptcFxcdCUwIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImNvbnRyb2wiKV0pCi1AQCAtODExLDcgKzgxMSw3IEBACi0gCi0gKGRlZmluZV9pbnNuICIqdGFibGVqdW1wIgotICAgWyhzZXQgKHBjKQotLSAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkKLSsgICAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJjIikpCi0gICAgKHVzZSAobGFiZWxfcmVmIChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpKSldCi0gICAiIgotICAgImptcFxcdCUwIgotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTMtZXhwci5jLVBSLXRhcmdldC02NTM1OC1Bdm9pZC1jbG9iYmVyaW5nLXBhcnRpYWwtYXJndS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMThmNDBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA3ICswLDAgQEAKLUZyb20gNTM2YjgzMTg5NzQ0OTVjZGUyYjQyYzNjMjc0Mjc0OGUyYjI3MWJlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGt0a2FjaG92IDxrdGthY2hvdkAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBXZWQsIDI3IE1heSAyMDE1IDEzOjI1OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSIHRhcmdldC82NTM1OCBBdm9pZCBjbG9iYmVyaW5nIHBhcnRpYWwgYXJndW1lbnQgZHVyaW5nCi0gc2liY2FsbAotCi0JUFIgdGFyZ2V0LzY1MzU4Ci0JKiBleHByLmMgKG1lbW9yeV9sb2FkX292ZXJsYXApOiBOZXcgZnVuY3Rpb24uCi0JKGVtaXRfcHVzaF9pbnNuKTogV2hlbiBwdXNoaW5nIHBhcnRpYWwgYXJncyB0byB0aGUgc3RhY2sgd291bGQKLQljbG9iYmVyIHRoZSByZWdpc3RlciBwYXJ0IGxvYWQgdGhlIG92ZXJsYXBwaW5nIHBhcnQgaW50byBhIHBzZXVkbwotCWFuZCBwdXQgaXQgaW50byB0aGUgaGFyZCByZWcgYWZ0ZXIgcHVzaGluZy4gIENoYW5nZSByZXR1cm4gdHlwZQotCXRvIGJvb2wuICBBZGQgYm9vbCBhcmd1bWVudC4KLQkqIGV4cHIuaCAoZW1pdF9wdXNoX2luc24pOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gYm9vbC4KLQlBZGQgYm9vbCBhcmd1bWVudC4KLQkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQ2FuY2VsIHNpYmNhbGwgb3B0aW1pemF0aW9uIHdoZW4gZW5jb3VudGVyaW5nCi0JcGFydGlhbCBhcmd1bWVudCBvbiB0YXJnZXRzIHdpdGggQVJHU19HUk9XX0RPV05XQVJEIGFuZAotCSFTVEFDS19HUk9XU19ET1dOV0FSRC4KLQkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFVwZGF0ZSBjYWxsc2l0ZSBvZiBlbWl0X3B1c2hfaW5zbi4KLQkoc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLgotCi0JUFIgdGFyZ2V0LzY1MzU4Ci0JKiBnY2MuZGcvcHI2NTM1OC5jOiBOZXcgdGVzdC4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjIzNzUzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGZyb20gNi4wCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY2FsbHMuYyAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKystLQotIGdjYy9leHByLmMgICAgICAgICAgICAgICAgICAgICB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQotIGdjYy9leHByLmggICAgICAgICAgICAgICAgICAgICB8ICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2NTM1OC5jIHwgMzMgKysrKysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jYWxscy5jIGIvZ2NjL2NhbGxzLmMKLWluZGV4IGVlOGVhNWYuLjIzMzQzODEgMTAwNjQ0Ci0tLS0gYS9nY2MvY2FsbHMuYwotKysrIGIvZ2NjL2NhbGxzLmMKLUBAIC0zMjM2LDYgKzMyMzYsMTQgQEAgZXhwYW5kX2NhbGwgKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBpbnQgaWdub3JlKQotIAkgICAgewotIAkgICAgICBydHhfaW5zbiAqYmVmb3JlX2FyZyA9IGdldF9sYXN0X2luc24gKCk7Ci0gCi0rCSAgICAgLyogT24gdGFyZ2V0cyB3aXRoIHdlaXJkIGNhbGxpbmcgY29udmVudGlvbnMgKGUuZy4gUEEpIGl0J3MKLSsJCWhhcmQgdG8gZW5zdXJlIHRoYXQgYWxsIGNhc2VzIG9mIGFyZ3VtZW50IG92ZXJsYXAgYmV0d2VlbgotKwkJc3RhY2sgYW5kIHJlZ2lzdGVycyB3b3JrLiAgUGxheSBpdCBzYWZlIGFuZCBiYWlsIG91dC4gICovCi0rI2lmIGRlZmluZWQoQVJHU19HUk9XX0RPV05XQVJEKSAmJiAhZGVmaW5lZChTVEFDS19HUk9XU19ET1dOV0FSRCkKLSsJCSAgc2liY2FsbF9mYWlsdXJlID0gMTsKLSsJCSAgYnJlYWs7Ci0rI2VuZGlmCi0rCi0gCSAgICAgIGlmIChzdG9yZV9vbmVfYXJnICgmYXJnc1tpXSwgYXJnYmxvY2ssIGZsYWdzLAotIAkJCQkgYWRqdXN0ZWRfYXJnc19zaXplLnZhciAhPSAwLAotIAkJCQkgcmVnX3Bhcm1fc3RhY2tfc3BhY2UpCi1AQCAtNDI3OSw3ICs0Mjg3LDcgQEAgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSAoaW50IHJldHZhbCwgcnR4IG9yZ2Z1biwgcnR4IHZhbHVlLAotIAkJCSAgcGFydGlhbCwgcmVnLCAwLCBhcmdibG9jaywKLSAJCQkgIEdFTl9JTlQgKGFyZ3ZlY1thcmdudW1dLmxvY2F0ZS5vZmZzZXQuY29uc3RhbnQpLAotIAkJCSAgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQkJICBBUkdTX1NJWkVfUlRYIChhcmd2ZWNbYXJnbnVtXS5sb2NhdGUuYWxpZ25tZW50X3BhZCkpOwotKwkJCSAgQVJHU19TSVpFX1JUWCAoYXJndmVjW2FyZ251bV0ubG9jYXRlLmFsaWdubWVudF9wYWQpLCBmYWxzZSk7Ci0gCi0gCSAgLyogTm93IG1hcmsgdGhlIHNlZ21lbnQgd2UganVzdCB1c2VkLiAgKi8KLSAJICBpZiAoQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTKQotQEAgLTQ4ODYsMTAgKzQ4OTQsMTEgQEAgc3RvcmVfb25lX2FyZyAoc3RydWN0IGFyZ19kYXRhICphcmcsIHJ0eCBhcmdibG9jaywgaW50IGZsYWdzLAotIAotICAgICAgIC8qIFRoaXMgaXNuJ3QgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IGl0IG9uIHRoZSBzdGFjaywgc28gcHV0IGl0IHRoZXJlLgotIAkgVGhpcyBjYW4gZWl0aGVyIGJlIGRvbmUgd2l0aCBwdXNoIG9yIGNvcHkgaW5zbnMuICAqLwotLSAgICAgIGVtaXRfcHVzaF9pbnNuIChhcmctPnZhbHVlLCBhcmctPm1vZGUsIFRSRUVfVFlQRSAocHZhbCksIE5VTExfUlRYLAotKyAgICAgIGlmICghZW1pdF9wdXNoX2luc24gKGFyZy0+dmFsdWUsIGFyZy0+bW9kZSwgVFJFRV9UWVBFIChwdmFsKSwgTlVMTF9SVFgsCi0gCQkgICAgICBwYXJtX2FsaWduLCBwYXJ0aWFsLCByZWcsIHVzZWQgLSBzaXplLCBhcmdibG9jaywKLSAJCSAgICAgIEFSR1NfU0laRV9SVFggKGFyZy0+bG9jYXRlLm9mZnNldCksIHJlZ19wYXJtX3N0YWNrX3NwYWNlLAotLQkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUuYWxpZ25tZW50X3BhZCkpOwotKwkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUuYWxpZ25tZW50X3BhZCksIHRydWUpKQotKwlzaWJjYWxsX2ZhaWx1cmUgPSAxOwotIAotICAgICAgIC8qIFVubGVzcyB0aGlzIGlzIGEgcGFydGlhbGx5LWluLXJlZ2lzdGVyIGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgaXMgbm93Ci0gCSBpbiB0aGUgc3RhY2suICAqLwotQEAgLTUwMDEsNyArNTAxMCw3IEBAIHN0b3JlX29uZV9hcmcgKHN0cnVjdCBhcmdfZGF0YSAqYXJnLCBydHggYXJnYmxvY2ssIGludCBmbGFncywKLSAgICAgICBlbWl0X3B1c2hfaW5zbiAoYXJnLT52YWx1ZSwgYXJnLT5tb2RlLCBUUkVFX1RZUEUgKHB2YWwpLCBzaXplX3J0eCwKLSAJCSAgICAgIHBhcm1fYWxpZ24sIHBhcnRpYWwsIHJlZywgZXhjZXNzLCBhcmdibG9jaywKLSAJCSAgICAgIEFSR1NfU0laRV9SVFggKGFyZy0+bG9jYXRlLm9mZnNldCksIHJlZ19wYXJtX3N0YWNrX3NwYWNlLAotLQkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUuYWxpZ25tZW50X3BhZCkpOwotKwkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUuYWxpZ25tZW50X3BhZCksIGZhbHNlKTsKLSAKLSAgICAgICAvKiBVbmxlc3MgdGhpcyBpcyBhIHBhcnRpYWxseS1pbi1yZWdpc3RlciBhcmd1bWVudCwgdGhlIGFyZ3VtZW50IGlzIG5vdwotIAkgaW4gdGhlIHN0YWNrLgotZGlmZiAtLWdpdCBhL2djYy9leHByLmMgYi9nY2MvZXhwci5jCi1pbmRleCA1YzA5NTUwLi4yNGE2MjkzIDEwMDY0NAotLS0tIGEvZ2NjL2V4cHIuYwotKysrIGIvZ2NjL2V4cHIuYwotQEAgLTQxMjEsMTIgKzQxMjEsMzUgQEAgZW1pdF9zaW5nbGVfcHVzaF9pbnNuIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHgsIHRyZWUgdHlwZSkKLSB9Ci0gI2VuZGlmCi0gCi0rLyogSWYgcmVhZGluZyBTSVpFIGJ5dGVzIGZyb20gWCB3aWxsIGVuZCB1cCByZWFkaW5nIGZyb20KLSsgICBZIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgb3ZlcmxhcC4gIFJldHVybiAtMQotKyAgIGlmIHRoZXJlIGlzIG5vIG92ZXJsYXAgb3IgLTIgaWYgd2UgY2FuJ3QgZGV0ZXJtaW5lCi0rICAgKGZvciBleGFtcGxlIHdoZW4gWCBhbmQgWSBoYXZlIGRpZmZlcmVudCBiYXNlIHJlZ2lzdGVycykuICAqLwotKwotK3N0YXRpYyBpbnQKLSttZW1vcnlfbG9hZF9vdmVybGFwIChydHggeCwgcnR4IHksIEhPU1RfV0lERV9JTlQgc2l6ZSkKLSt7Ci0rICBydHggdG1wID0gcGx1c19jb25zdGFudCAoUG1vZGUsIHgsIHNpemUpOwotKyAgcnR4IHN1YiA9IHNpbXBsaWZ5X2dlbl9iaW5hcnkgKE1JTlVTLCBQbW9kZSwgdG1wLCB5KTsKLSsKLSsgIGlmICghQ09OU1RfSU5UX1AgKHN1YikpCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIEhPU1RfV0lERV9JTlQgdmFsID0gSU5UVkFMIChzdWIpOwotKwotKyAgcmV0dXJuIElOX1JBTkdFICh2YWwsIDEsIHNpemUpID8gdmFsIDogLTE7Ci0rfQotKwotIC8qIEdlbmVyYXRlIGNvZGUgdG8gcHVzaCBYIG9udG8gdGhlIHN0YWNrLCBhc3N1bWluZyBpdCBoYXMgbW9kZSBNT0RFIGFuZAotICAgIHR5cGUgVFlQRS4KLSAgICBNT0RFIGlzIHJlZHVuZGFudCBleGNlcHQgd2hlbiBYIGlzIGEgQ09OU1RfSU5UIChzaW5jZSB0aGV5IGRvbid0Ci0gICAgY2FycnkgbW9kZSBpbmZvKS4KLSAgICBTSVpFIGlzIGFuIHJ0eCBmb3IgdGhlIHNpemUgb2YgZGF0YSB0byBiZSBjb3BpZWQgKGluIGJ5dGVzKSwKLSAgICBuZWVkZWQgb25seSBpZiBYIGlzIEJMS21vZGUuCi0rICAgUmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bC4gIE1heSByZXR1cm4gZmFsc2UgaWYgYXNrZWQgdG8gcHVzaCBhCi0rICAgcGFydGlhbCBhcmd1bWVudCBkdXJpbmcgYSBzaWJjYWxsIG9wdGltaXphdGlvbiAoYXMgc3BlY2lmaWVkIGJ5Ci0rICAgU0lCQ0FMTF9QKSBhbmQgdGhlIGluY29taW5nIGFuZCBvdXRnb2luZyBwb2ludGVycyBjYW5ub3QgYmUgc2hvd24KLSsgICB0byBub3Qgb3ZlcmxhcC4KLSAKLSAgICBBTElHTiAoaW4gYml0cykgaXMgbWF4aW11bSBhbGlnbm1lbnQgd2UgY2FuIGFzc3VtZS4KLSAKLUBAIC00MTUyLDExICs0MTc1LDExIEBAIGVtaXRfc2luZ2xlX3B1c2hfaW5zbiAobWFjaGluZV9tb2RlIG1vZGUsIHJ0eCB4LCB0cmVlIHR5cGUpCi0gICAgZm9yIGFyZ3VtZW50cyBwYXNzZWQgaW4gcmVnaXN0ZXJzLiAgSWYgbm9uemVybywgaXQgd2lsbCBiZSB0aGUgbnVtYmVyCi0gICAgb2YgYnl0ZXMgcmVxdWlyZWQuICAqLwotIAotLXZvaWQKLStib29sCi0gZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAJCXVuc2lnbmVkIGludCBhbGlnbiwgaW50IHBhcnRpYWwsIHJ0eCByZWcsIGludCBleHRyYSwKLSAJCXJ0eCBhcmdzX2FkZHIsIHJ0eCBhcmdzX3NvX2ZhciwgaW50IHJlZ19wYXJtX3N0YWNrX3NwYWNlLAotLQkJcnR4IGFsaWdubWVudF9wYWQpCi0rCQlydHggYWxpZ25tZW50X3BhZCwgYm9vbCBzaWJjYWxsX3ApCi0gewotICAgcnR4IHhpbm5lcjsKLSAgIGVudW0gZGlyZWN0aW9uIHN0YWNrX2RpcmVjdGlvbgotQEAgLTQxNzksNiArNDIwMiwxMCBAQCBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotIAotICAgeGlubmVyID0geDsKLSAKLSsgIGludCBucmVncyA9IHBhcnRpYWwgLyBVTklUU19QRVJfV09SRDsKLSsgIHJ0eCAqdG1wX3JlZ3MgPSBOVUxMOwotKyAgaW50IG92ZXJsYXBwaW5nID0gMDsKLSsKLSAgIGlmIChtb2RlID09IEJMS21vZGUKLSAgICAgICB8fCAoU1RSSUNUX0FMSUdOTUVOVCAmJiBhbGlnbiA8IEdFVF9NT0RFX0FMSUdOTUVOVCAobW9kZSkpKQotICAgICB7Ci1AQCAtNDMwOSw2ICs0MzM2LDQzIEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCSAgICAgUEFSTV9CT1VOREFSWS4gIEFzc3VtZSB0aGUgY2FsbGVyIGlzbid0IGx5aW5nLiAgKi8KLSAJICBzZXRfbWVtX2FsaWduICh0YXJnZXQsIGFsaWduKTsKLSAKLSsJICAvKiBJZiBwYXJ0IHNob3VsZCBnbyBpbiByZWdpc3RlcnMgYW5kIHB1c2hpbmcgdG8gdGhhdCBwYXJ0IHdvdWxkCi0rCSAgICAgb3ZlcndyaXRlIHNvbWUgb2YgdGhlIHZhbHVlcyB0aGF0IG5lZWQgdG8gZ28gaW50byByZWdzLCBsb2FkIHRoZQotKwkgICAgIG92ZXJsYXBwaW5nIHZhbHVlcyBpbnRvIHRlbXBvcmFyeSBwc2V1ZG9zIHRvIGJlIG1vdmVkIGludG8gdGhlIGhhcmQKLSsJICAgICByZWdzIGF0IHRoZSBlbmQgYWZ0ZXIgdGhlIHN0YWNrIHB1c2hpbmcgaGFzIGNvbXBsZXRlZC4KLSsJICAgICBXZSBjYW5ub3QgbG9hZCB0aGVtIGRpcmVjdGx5IGludG8gdGhlIGhhcmQgcmVncyBoZXJlIGJlY2F1c2UKLSsJICAgICB0aGV5IGNhbiBiZSBjbG9iYmVyZWQgYnkgdGhlIGJsb2NrIG1vdmUgZXhwYW5zaW9ucy4KLSsJICAgICBTZWUgUFIgNjUzNTguICAqLwotKwotKwkgIGlmIChwYXJ0aWFsID4gMCAmJiByZWcgIT0gMCAmJiBtb2RlID09IEJMS21vZGUKLSsJICAgICAgJiYgR0VUX0NPREUgKHJlZykgIT0gUEFSQUxMRUwpCi0rCSAgICB7Ci0rCSAgICAgIG92ZXJsYXBwaW5nID0gbWVtb3J5X2xvYWRfb3ZlcmxhcCAoWEVYUCAoeCwgMCksIHRlbXAsIHBhcnRpYWwpOwotKwkgICAgICBpZiAob3ZlcmxhcHBpbmcgPiAwKQotKwkgICAgICAgIHsKLSsJCSAgZ2NjX2Fzc2VydCAob3ZlcmxhcHBpbmcgJSBVTklUU19QRVJfV09SRCA9PSAwKTsKLSsJCSAgb3ZlcmxhcHBpbmcgLz0gVU5JVFNfUEVSX1dPUkQ7Ci0rCi0rCQkgIHRtcF9yZWdzID0gWEFMTE9DQVZFQyAocnR4LCBvdmVybGFwcGluZyk7Ci0rCi0rCQkgIGZvciAoaW50IGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmc7IGkrKykKLSsJCSAgICB0bXBfcmVnc1tpXSA9IGdlbl9yZWdfcnR4ICh3b3JkX21vZGUpOwotKwotKwkJICBmb3IgKGludCBpID0gMDsgaSA8IG92ZXJsYXBwaW5nOyBpKyspCi0rCQkgICAgZW1pdF9tb3ZlX2luc24gKHRtcF9yZWdzW2ldLAotKwkJCQkgICAgb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlICh0YXJnZXQsIGksIG1vZGUpKTsKLSsJICAgICAgICB9Ci0rCSAgICAgIGVsc2UgaWYgKG92ZXJsYXBwaW5nID09IC0xKQotKwkJb3ZlcmxhcHBpbmcgPSAwOwotKwkgICAgICAvKiBDb3VsZCBub3QgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgb3ZlcmxhcC4KLSsJICAgICAgICAgRmFpbCB0aGUgc2liY2FsbC4gICovCi0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgb3ZlcmxhcHBpbmcgPSAwOwotKwkJICBpZiAoc2liY2FsbF9wKQotKwkJICAgIHJldHVybiBmYWxzZTsKLSsJCX0KLSsJICAgIH0KLSAJICBlbWl0X2Jsb2NrX21vdmUgKHRhcmdldCwgeGlubmVyLCBzaXplLCBCTE9DS19PUF9DQUxMX1BBUk0pOwotIAl9Ci0gICAgIH0KLUBAIC00MzYzLDEyICs0NDI3LDEzIEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCSBoYXMgYSBzaXplIGEgbXVsdGlwbGUgb2YgYSB3b3JkLiAgKi8KLSAgICAgICBmb3IgKGkgPSBzaXplIC0gMTsgaSA+PSBub3Rfc3RhY2s7IGktLSkKLSAJaWYgKGkgPj0gbm90X3N0YWNrICsgb2Zmc2V0KQotLQkgIGVtaXRfcHVzaF9pbnNuIChvcGVyYW5kX3N1YndvcmRfZm9yY2UgKHgsIGksIG1vZGUpLAotKwkgIGlmICghZW1pdF9wdXNoX2luc24gKG9wZXJhbmRfc3Vid29yZF9mb3JjZSAoeCwgaSwgbW9kZSksCi0gCQkJICB3b3JkX21vZGUsIE5VTExfVFJFRSwgTlVMTF9SVFgsIGFsaWduLCAwLCBOVUxMX1JUWCwKLSAJCQkgIDAsIGFyZ3NfYWRkciwKLSAJCQkgIEdFTl9JTlQgKGFyZ3Nfb2Zmc2V0ICsgKChpIC0gbm90X3N0YWNrICsgc2tpcCkKLSAJCQkJCQkgICogVU5JVFNfUEVSX1dPUkQpKSwKLS0JCQkgIHJlZ19wYXJtX3N0YWNrX3NwYWNlLCBhbGlnbm1lbnRfcGFkKTsKLSsJCQkgIHJlZ19wYXJtX3N0YWNrX3NwYWNlLCBhbGlnbm1lbnRfcGFkLCBzaWJjYWxsX3ApKQotKwkgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC00NDExLDkgKzQ0NzYsOCBAQCBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotIAl9Ci0gICAgIH0KLSAKLS0gIC8qIElmIHBhcnQgc2hvdWxkIGdvIGluIHJlZ2lzdGVycywgY29weSB0aGF0IHBhcnQKLS0gICAgIGludG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVycy4gIERvIHRoaXMgbm93LCBhdCB0aGUgZW5kLAotLSAgICAgc2luY2UgbWVtLXRvLW1lbSBjb3BpZXMgYWJvdmUgbWF5IGRvIGZ1bmN0aW9uIGNhbGxzLiAgKi8KLSsgIC8qIE1vdmUgdGhlIHBhcnRpYWwgYXJndW1lbnRzIGludG8gdGhlIHJlZ2lzdGVycyBhbmQgYW55IG92ZXJsYXBwaW5nCi0rICAgICB2YWx1ZXMgdGhhdCB3ZSBtb3ZlZCBpbnRvIHRoZSBwc2V1ZG9zIGluIHRtcF9yZWdzLiAgKi8KLSAgIGlmIChwYXJ0aWFsID4gMCAmJiByZWcgIT0gMCkKLSAgICAgewotICAgICAgIC8qIEhhbmRsZSBjYWxscyB0aGF0IHBhc3MgdmFsdWVzIGluIG11bHRpcGxlIG5vbi1jb250aWd1b3VzIGxvY2F0aW9ucy4KLUBAIC00NDIxLDkgKzQ0ODUsMTUgQEAgZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAgICAgICBpZiAoR0VUX0NPREUgKHJlZykgPT0gUEFSQUxMRUwpCi0gCWVtaXRfZ3JvdXBfbG9hZCAocmVnLCB4LCB0eXBlLCAtMSk7Ci0gICAgICAgZWxzZQotLQl7Ci0rICAgICAgICB7Ci0gCSAgZ2NjX2Fzc2VydCAocGFydGlhbCAlIFVOSVRTX1BFUl9XT1JEID09IDApOwotLQkgIG1vdmVfYmxvY2tfdG9fcmVnIChSRUdOTyAocmVnKSwgeCwgcGFydGlhbCAvIFVOSVRTX1BFUl9XT1JELCBtb2RlKTsKLSsJICBtb3ZlX2Jsb2NrX3RvX3JlZyAoUkVHTk8gKHJlZyksIHgsIG5yZWdzIC0gb3ZlcmxhcHBpbmcsIG1vZGUpOwotKwotKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmc7IGkrKykKLSsJICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAod29yZF9tb2RlLCBSRUdOTyAocmVnKQotKwkJCQkJCSAgICArIG5yZWdzIC0gb3ZlcmxhcHBpbmcgKyBpKSwKLSsJCQkgICAgdG1wX3JlZ3NbaV0pOwotKwotIAl9Ci0gICAgIH0KLSAKLUBAIC00NDMyLDYgKzQ1MDIsOCBAQCBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotIAotICAgaWYgKGFsaWdubWVudF9wYWQgJiYgYXJnc19hZGRyID09IDApCi0gICAgIGFudGlfYWRqdXN0X3N0YWNrIChhbGlnbm1lbnRfcGFkKTsKLSsKLSsgIHJldHVybiB0cnVlOwotIH0KLSAMCi0gLyogUmV0dXJuIFggaWYgWCBjYW4gYmUgdXNlZCBhcyBhIHN1YnRhcmdldCBpbiBhIHNlcXVlbmNlIG9mIGFyaXRobWV0aWMKLWRpZmYgLS1naXQgYS9nY2MvZXhwci5oIGIvZ2NjL2V4cHIuaAotaW5kZXggODY3ODUyZS4uNWZjYzEzZiAxMDA2NDQKLS0tLSBhL2djYy9leHByLmgKLSsrKyBiL2djYy9leHByLmgKLUBAIC0yMTgsOCArMjE4LDggQEAgZXh0ZXJuIHJ0eCBlbWl0X21vdmVfcmVzb2x2ZV9wdXNoIChtYWNoaW5lX21vZGUsIHJ0eCk7Ci0gZXh0ZXJuIHJ0eCBwdXNoX2Jsb2NrIChydHgsIGludCwgaW50KTsKLSAKLSAvKiBHZW5lcmF0ZSBjb2RlIHRvIHB1c2ggc29tZXRoaW5nIG9udG8gdGhlIHN0YWNrLCBnaXZlbiBpdHMgbW9kZSBhbmQgdHlwZS4gICovCi0tZXh0ZXJuIHZvaWQgZW1pdF9wdXNoX2luc24gKHJ0eCwgbWFjaGluZV9tb2RlLCB0cmVlLCBydHgsIHVuc2lnbmVkIGludCwKLS0JCQkgICAgaW50LCBydHgsIGludCwgcnR4LCBydHgsIGludCwgcnR4KTsKLStleHRlcm4gYm9vbCBlbWl0X3B1c2hfaW5zbiAocnR4LCBtYWNoaW5lX21vZGUsIHRyZWUsIHJ0eCwgdW5zaWduZWQgaW50LAotKwkJCSAgICBpbnQsIHJ0eCwgaW50LCBydHgsIHJ0eCwgaW50LCBydHgsIGJvb2wpOwotIAotIC8qIEV4cGFuZCBhbiBhc3NpZ25tZW50IHRoYXQgc3RvcmVzIHRoZSB2YWx1ZSBvZiBGUk9NIGludG8gVE8uICAqLwotIGV4dGVybiB2b2lkIGV4cGFuZF9hc3NpZ25tZW50ICh0cmVlLCB0cmVlLCBib29sKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYTg5ZmQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMKLUBAIC0wLDAgKzEsMzMgQEAKLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KLSsKLStzdHJ1Y3QgcGFjawotK3sKLSsgIGludCBmaW5lOwotKyAgaW50IHZpY3RpbTsKLSsgIGludCBraWxsZXI7Ci0rfTsKLSsKLStpbnQgX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXywgX19ub2Nsb25lX18pKQotK2JhciAoaW50IGEsIGludCBiLCBzdHJ1Y3QgcGFjayBwKQotK3sKLSsgIGlmIChhICE9IDIwIHx8IGIgIT0gMzApCi0rICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKLSsgIGlmIChwLmZpbmUgIT0gNDAgfHwgcC52aWN0aW0gIT0gNTAgfHwgcC5raWxsZXIgIT0gNjApCi0rICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQgX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXywgX19ub2Nsb25lX18pKQotK2ZvbyAoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywgc3RydWN0IHBhY2sgcCkKLSt7Ci0rICByZXR1cm4gYmFyIChhcmcyLCBhcmczLCBwKTsKLSt9Ci0rCi0raW50IG1haW4gKHZvaWQpCi0rewotKyAgc3RydWN0IHBhY2sgcCA9IHsgNDAsIDUwLCA2MCB9OwotKwotKyAgKHZvaWQpIGZvbyAoMTAsIDIwLCAzMCwgcCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTQtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTE2ODc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotRnJvbSBlZjdjMmJkYTZiNGM4OGY4MDA3ZWQ2NjNiMTEwOGNkNDY1MTU5OGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwMjoyNzo0MyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnY2MvbGliY3BwOiBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ+PTxuZXc+Ci0KLVNpbWlsYXIgLWZkZWJ1Zy1wcmVmaXgtbWFwLCBhZGQgb3B0aW9uIC1mZmlsZS1wcmVmaXgtbWFwIHRvIG1hcCBvbmUKLWRpcmVjdG9yeSBuYW1lIChvbGQpIHRvIGFub3RoZXIgKG5ldykgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kCi1fX2J1aWx0aW5fRklMRSAoKS4KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzAyNjgKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jICAgICB8ICA2ICsrKysKLSBnY2MvYy1mYW1pbHkvYy5vcHQgICAgICAgIHwgIDQgKysrCi0gZ2NjL2R3YXJmMm91dC5jICAgICAgICAgICB8ICAxICsKLSBnY2MvZ2ltcGxpZnkuYyAgICAgICAgICAgIHwgIDIgKysKLSBsaWJjcHAvTWFrZWZpbGUuaW4gICAgICAgIHwgMTAgKysrLS0tCi0gbGliY3BwL2ZpbGUtbWFwLmMgICAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCB8IDMwICsrKysrKysrKysrKysrKysKLSBsaWJjcHAvbWFjcm8uYyAgICAgICAgICAgIHwgIDIgKysKLSA4IGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvZmlsZS1tYXAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLWluZGV4IDcxOGEwNTIuLjNmOTNjNTYgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLSsrKyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotQEAgLTQ2LDYgKzQ2LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAib3B0cy5oIgotICNpbmNsdWRlICJwbHVnaW4uaCIJCS8qIEZvciBQTFVHSU5fSU5DTFVERV9GSUxFIGV2ZW50LiAgKi8KLSAjaW5jbHVkZSAibWtkZXBzLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gI2luY2x1ZGUgImMtdGFyZ2V0LmgiCi0gI2luY2x1ZGUgInRtLmgiCQkJLyogRm9yIEJZVEVTX0JJR19FTkRJQU4sCi0gCQkJCSAgIERPTExBUlNfSU5fSURFTlRJRklFUlMsCi1AQCAtNTEwLDYgKzUxMSwxMSBAQCBjX2NvbW1vbl9oYW5kbGVfb3B0aW9uIChzaXplX3Qgc2NvZGUsIGNvbnN0IGNoYXIgKmFyZywgaW50IHZhbHVlLAotICAgICAgIGNwcF9vcHRzLT5uYXJyb3dfY2hhcnNldCA9IGFyZzsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86Ci0rICAgICAgaWYgKGFkZF9maWxlX3ByZWZpeF9tYXAgKGFyZykgPCAwKQotKyAgICAgICAgZXJyb3IgKCJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgT1BUX2Z3aWRlX2V4ZWNfY2hhcnNldF86Ci0gICAgICAgY3BwX29wdHMtPndpZGVfY2hhcnNldCA9IGFyZzsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDQ1M2VjOGUuLjMwYWQwNTMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTExMTcsNiArMTExNywxMCBAQCBmZXhlYy1jaGFyc2V0PQotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotIC1mZXhlYy1jaGFyc2V0PTxjc2V0PglDb252ZXJ0IGFsbCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBzZXQgPGNzZXQ+Ci0gCi0rZmZpbGUtcHJlZml4LW1hcD0KLStDIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0TmVnYXRpdmUKLSstZmZpbGUtcHJlZml4LW1hcD08b2xkPW5ldz4JTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fIGFuZCBfX2J1aWx0aW5fRklMRSAoKQotKwotIGZleHRlbmRlZC1pZGVudGlmaWVycwotIEMgT2JqQyBDKysgT2JqQysrCi0gUGVybWl0IHVuaXZlcnNhbCBjaGFyYWN0ZXIgbmFtZXMgKFxcdSBhbmQgXFxVKSBpbiBpZGVudGlmaWVycwotZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwotaW5kZXggNTI2ZjExNC4uNDM4YTQ3NSAxMDA2NDQKLS0tLSBhL2djYy9kd2FyZjJvdXQuYwotKysrIGIvZ2NjL2R3YXJmMm91dC5jCi1AQCAtMTk2NzEsNiArMTk2NzEsNyBAQCBnZW5fcHJvZHVjZXJfc3RyaW5nICh2b2lkKQotICAgICAgIGNhc2UgT1BUX2ZsdHJhbnNfb3V0cHV0X2xpc3RfOgotICAgICAgIGNhc2UgT1BUX2ZyZXNvbHV0aW9uXzoKLSAgICAgICBjYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0rICAgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86Ci0gCS8qIElnbm9yZSB0aGVzZS4gICovCi0gCWNvbnRpbnVlOwotICAgICAgIGRlZmF1bHQ6Ci1kaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsaWZ5LmMgYi9nY2MvZ2ltcGxpZnkuYwotaW5kZXggYzg1ZjgzYS4uMWZmZTFlMSAxMDA2NDQKLS0tLSBhL2djYy9naW1wbGlmeS5jCi0rKysgYi9nY2MvZ2ltcGxpZnkuYwotQEAgLTg3LDYgKzg3LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAiZ2ltcGxlLWxvdy5oIgotICNpbmNsdWRlICJjaWxrLmgiCi0gI2luY2x1ZGUgImdvbXAtY29uc3RhbnRzLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gCi0gI2luY2x1ZGUgImxhbmdob29rcy1kZWYuaCIJLyogRklYTUU6IGZvciBsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgKi8KLSAjaW5jbHVkZSAidHJlZS1wYXNzLmgiCQkvKiBGSVhNRTogb25seSBmb3IgUFJPUF9naW1wbGVfYW55ICovCi1AQCAtMjM3MCw2ICsyMzcxLDcgQEAgZ2ltcGxpZnlfY2FsbF9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wLCBib29sIHdhbnRfdmFsdWUpCi0gICAgICAgY2FzZSBCVUlMVF9JTl9GSUxFOgotIAl7Ci0gCSAgY29uc3QgY2hhciAqbG9jZmlsZSA9IExPQ0FUSU9OX0ZJTEUgKEVYUFJfTE9DQVRJT04gKCpleHByX3ApKTsKLSsJICBsb2NmaWxlID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobG9jZmlsZSk7Ci0gCSAgKmV4cHJfcCA9IGJ1aWxkX3N0cmluZ19saXRlcmFsIChzdHJsZW4gKGxvY2ZpbGUpICsgMSwgbG9jZmlsZSk7Ci0gCSAgcmV0dXJuIEdTX09LOwotIAl9Ci1kaWZmIC0tZ2l0IGEvbGliY3BwL01ha2VmaWxlLmluIGIvbGliY3BwL01ha2VmaWxlLmluCi1pbmRleCBhZDM1NTYzLi5jMjEwZmY5IDEwMDY0NAotLS0tIGEvbGliY3BwL01ha2VmaWxlLmluCi0rKysgYi9saWJjcHAvTWFrZWZpbGUuaW4KLUBAIC04NCwxMiArODQsMTIgQEAgREVQTU9ERSA9ICQoQ1hYREVQTU9ERSkKLSAKLSAKLSBsaWJjcHBfYV9PQkpTID0gY2hhcnNldC5vIGRpcmVjdGl2ZXMubyBkaXJlY3RpdmVzLW9ubHkubyBlcnJvcnMubyBcCi0tCWV4cHIubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gbWFjcm8ubyBcCi0tCW1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSsJZXhwci5vIGZpbGUtbWFwLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIFwKLSsJbWFjcm8ubyBta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCi0gCi0gbGliY3BwX2FfU09VUkNFUyA9IGNoYXJzZXQuYyBkaXJlY3RpdmVzLmMgZGlyZWN0aXZlcy1vbmx5LmMgZXJyb3JzLmMgXAotLQlleHByLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIG1hY3JvLmMgXAotLQlta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0rCWV4cHIuYyBmaWxlLW1hcC5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBcCi0rCW1hY3JvLmMgbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYwotIAotIGFsbDogbGliY3BwLmEgJChVU0VEX0NBVEFMT0dTKQotIAotQEAgLTI2Myw3ICsyNjMsNyBAQCBwby8kKFBBQ0tBR0UpLnBvdDogJChsaWJjcHBfYV9TT1VSQ0VTKQotIAotIFRBR1NfU09VUkNFUyA9ICQobGliY3BwX2FfU09VUkNFUykgaW50ZXJuYWwuaCB1Y25pZC5oIFwKLSAgICAgaW5jbHVkZS9saW5lLW1hcC5oIGluY2x1ZGUvc3ltdGFiLmggaW5jbHVkZS9jcHAtaWQtZGF0YS5oIFwKLS0gICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oCi0rICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaCBpbmNsdWRlL2ZpbGUtbWFwLmgKLSAKLSBUQUdTOiAkKFRBR1NfU09VUkNFUykKLSAJY2QgJChzcmNkaXIpICYmIGV0YWdzICQoVEFHU19TT1VSQ0VTKQotZGlmZiAtLWdpdCBhL2xpYmNwcC9maWxlLW1hcC5jIGIvbGliY3BwL2ZpbGUtbWFwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wNGU4NTFiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjcHAvZmlsZS1tYXAuYwotQEAgLTAsMCArMSw5MiBAQAotKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXwotKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLStUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKLStsYXRlciB2ZXJzaW9uLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSthbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KLSsgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKLSsgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KLSsKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotKwotKy8qIFN0cnVjdHVyZSByZWNvcmRpbmcgdGhlIG1hcHBpbmcgZnJvbSBzb3VyY2UgZmlsZSBhbmQgZGlyZWN0b3J5Ci0rICAgbmFtZXMgYXQgY29tcGlsZSB0aW1lIHRvIF9fRklMRV9fICovCi0rdHlwZWRlZiBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwCi0rewotKyAgY29uc3QgY2hhciAqb2xkX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXg7Ci0rICBzaXplX3Qgb2xkX2xlbjsKLSsgIHNpemVfdCBuZXdfbGVuOwotKyAgc3RydWN0IGZpbGVfcHJlZml4X21hcCAqbmV4dDsKLSt9IGZpbGVfcHJlZml4X21hcDsKLSsKLSsvKiBMaW5rZWQgbGlzdCBvZiBzdWNoIHN0cnVjdHVyZXMuICAqLwotK3N0YXRpYyBmaWxlX3ByZWZpeF9tYXAgKmZpbGVfcHJlZml4X21hcHM7Ci0rCi0rLyogUmVjb3JkIHByZWZpeCBtYXBwaW5nIG9mIF9fRklMRV9fLiAgQVJHIGlzIHRoZSBhcmd1bWVudCB0bwotKyAgIC1mZmlsZS1wcmVmaXgtbWFwIGFuZCBtdXN0IGJlIG9mIHRoZSBmb3JtIE9MRD1ORVcuICAqLwotK2ludAotK2FkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZykKLSt7Ci0rICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rCi0rICBwID0gc3RyY2hyIChhcmcsICc9Jyk7Ci0rICBpZiAoIXApCi0rICB7Ci0rICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgfQotKyAgbWFwID0gWE5FVyAoZmlsZV9wcmVmaXhfbWFwKTsKLSsgIG1hcC0+b2xkX3ByZWZpeCA9IHhzdHJuZHVwIChhcmcsIHAgLSBhcmcpOwotKyAgbWFwLT5vbGRfbGVuID0gcCAtIGFyZzsKLSsgIHArKzsKLSsgIG1hcC0+bmV3X3ByZWZpeCA9IHhzdHJkdXAgKHApOwotKyAgbWFwLT5uZXdfbGVuID0gc3RybGVuIChwKTsKLSsgIG1hcC0+bmV4dCA9IGZpbGVfcHJlZml4X21hcHM7Ci0rICBmaWxlX3ByZWZpeF9tYXBzID0gbWFwOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFBlcmZvcm0gdXNlci1zcGVjaWZpZWQgbWFwcGluZyBvZiBfX0ZJTEVfXyBwcmVmaXhlcy4gIFJldHVybgotKyAgIHRoZSBuZXcgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGZpbGVuYW1lLiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStyZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKLSsgIGNoYXIgKnM7Ci0rICBjb25zdCBjaGFyICpuYW1lOwotKyAgc2l6ZV90IG5hbWVfbGVuOwotKwotKyAgZm9yIChtYXAgPSBmaWxlX3ByZWZpeF9tYXBzOyBtYXA7IG1hcCA9IG1hcC0+bmV4dCkKLSsgICAgaWYgKGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSsgICAgICBicmVhazsKLSsgIGlmICghbWFwKQotKyAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICBuYW1lID0gZmlsZW5hbWUgKyBtYXAtPm9sZF9sZW47Ci0rICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotKyAgcyA9IChjaGFyICopIGFsbG9jYSAobmFtZV9sZW4gKyBtYXAtPm5ld19sZW4pOwotKyAgbWVtY3B5IChzLCBtYXAtPm5ld19wcmVmaXgsIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMgKyBtYXAtPm5ld19sZW4sIG5hbWUsIG5hbWVfbGVuKTsKLSsKLSsgIHJldHVybiB4c3RyZHVwIChzKTsKLSt9Ci0rCi0rCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNmY4Y2JmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi1AQCAtMCwwICsxLDMwIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpZm5kZWYgTElCQ1BQX0ZJTEVfTUFQX0gKLSsjZGVmaW5lIExJQkNQUF9GSUxFX01BUF9ICi0rCi0rY29uc3QgY2hhciAqIHJlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLStpbnQgYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKTsKLSsKLSsjZW5kaWYgLyogIUxJQkNQUF9GSUxFX01BUF9IICAqLwotZGlmZiAtLWdpdCBhL2xpYmNwcC9tYWNyby5jIGIvbGliY3BwL21hY3JvLmMKLWluZGV4IDFlMGEwYjUuLmMzZDMzMGMgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvbWFjcm8uYwotKysrIGIvbGliY3BwL21hY3JvLmMKLUBAIC0yNiw2ICsyNiw3IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlICJjcHBsaWIuaCIKLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBtYWNyb19hcmcgbWFjcm9fYXJnOwotIC8qIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIHRva2VucyBvZiBhIG1hY3JvIGFyZ3VtZW50LiAgVGhlc2UKLUBAIC0yOTcsNiArMjk4LDcgQEAgX2NwcF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfaGFzaG5vZGUgKm5vZGUpCi0gCSAgICBpZiAoIW5hbWUpCi0gCSAgICAgIGFib3J0ICgpOwotIAkgIH0KLSsJbmFtZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKG5hbWUpOwotIAlsZW4gPSBzdHJsZW4gKG5hbWUpOwotIAlidWYgPSBfY3BwX3VuYWxpZ25lZF9hbGxvYyAocGZpbGUsIGxlbiAqIDIgKyAzKTsKLSAJcmVzdWx0ID0gYnVmOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU1LVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdjYWVkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSAxNGI3OTY0MWZmNmIwMDA4YWVmN2ZiZjdhYTMwMGRhZWMxMWQxZTc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwNTozOTo1OSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcAotCi1UaGUgb2UtY29yZSBtYXkgdXNlIGV4dGVybmFsIHRvb2xjaGFpbiB0byBjb21waWxlLAotd2hpY2ggbWF5IG5vdCBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwLgotCi1TaW5jZSB3ZSB1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIGRvIHRoZSBzYW1lIHRoaW5nLAotc28gd2UgY291bGQgcmV1c2UgaXQgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLWNvcmUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9vcHRzLWdsb2JhbC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL29wdHMtZ2xvYmFsLmMgYi9nY2Mvb3B0cy1nbG9iYWwuYwotaW5kZXggYjYxYmRjZi4uNTFiYjE3NyAxMDA2NDQKLS0tLSBhL2djYy9vcHRzLWdsb2JhbC5jCi0rKysgYi9nY2Mvb3B0cy1nbG9iYWwuYwotQEAgLTUwLDYgKzUwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAicnRsLmgiCi0gI2luY2x1ZGUgImRiZ2NudC5oIgotICNpbmNsdWRlICJkZWJ1Zy5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotICNpbmNsdWRlICJoYXNoLW1hcC5oIgotICNpbmNsdWRlICJwbHVnaW4tYXBpLmgiCi0gI2luY2x1ZGUgImlwYS1yZWYuaCIKLUBAIC0zNzgsNiArMzc5LDkgQEAgaGFuZGxlX2NvbW1vbl9kZWZlcnJlZF9vcHRpb25zICh2b2lkKQotIAotIAljYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0gCSAgYWRkX2RlYnVnX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSsKLSsJICAvKiBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcCAqLwotKwkgIGFkZF9maWxlX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBPUFRfZmR1bXBfOgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTYtRW5hYmxlLWxpYmMtcHJvdmlkZS1zc3AtYW5kLWdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzkxMzQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSA1YzdiZDg1M2M4NzAzZjY1OTA0MDgzNzc4NzEyZWY2MjVjM2YzODE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjcgTWFyIDIwMTYgMjA6MzE6NTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA1Ni81N10gRW5hYmxlIGxpYmMgcHJvdmlkZSBzc3AgYW5kCi0gZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlX3BoZHIgZm9yIG11c2wKLQotICAgICAgICAqIGNvbmZpZ3VyZS5hYyAoZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwKTogQWRkICotKi1tdXNsKi4KLSAgICAgICAgKGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyKTogQWRkICotbGludXgtbXVzbCouCi0gICAgICAgICogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBnY2MvY29uZmlndXJlICAgIHwgNyArKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGZjYjA1ZTcuLjgxYTQ0OWMgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjc4MTQsNiArMjc4MTQsOSBAQCBpZiB0ZXN0ICIke2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZWxzZQotICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vCi0gICAgIGNhc2UgIiR0YXJnZXQiIGluCi0rICAgICAgICotKi1tdXNsKikKLSsgICAgICAgICMgQWxsIHZlcnNpb25zIG9mIG11c2wgcHJvdmlkZSBzdGFjayBwcm90ZWN0b3IKLSsgICAgICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXM7OwotICAgICAgICAqLSotbGludXgqIHwgKi0qLWtmcmVlYnNkKi1nbnUgfCAqLSota25ldGJzZCotZ251KQotICAgICAgICMgZ2xpYmMgMi40IGFuZCBsYXRlciBwcm92aWRlcyBfX3N0YWNrX2Noa19mYWlsIGFuZAotICAgICAgICMgZWl0aGVyIF9fc3RhY2tfY2hrX2d1YXJkLCBvciBUTFMgYWNjZXNzIHRvIHN0YWNrIGd1YXJkIGNhbmFyeS4KLUBAIC0yNzg0Niw2ICsyNzg0OSw3IEBAIGZpCi0gCSAjIDxodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMDgtMTAvbXNnMDAxMzAuaHRtbD4pIGFuZCBmb3Igbm93Ci0gCSAjIHNpbXBseSBhc3NlcnQgdGhhdCBnbGliYyBkb2VzIHByb3ZpZGUgdGhpcywgd2hpY2ggaXMgdHJ1ZSBmb3IgYWxsCi0gCSAjIHJlYWxpc3RpY2FsbHkgdXNhYmxlIEdOVS9IdXJkIGNvbmZpZ3VyYXRpb25zLgotKwkgIyBBbGwgc3VwcG9ydGVkIHZlcnNpb25zIG9mIG11c2wgcHJvdmlkZSBpdCBhcyB3ZWxsCi0gCSBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzOzsKLSAgICAgICAgKi0qLWRhcndpbiogfCAqLSotZnJlZWJzZCopCi0gCSBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJfX3N0YWNrX2Noa19mYWlsIiAiYWNfY3ZfZnVuY19fX3N0YWNrX2Noa19mYWlsIgotQEAgLTI3OTQyLDYgKzI3OTQ2LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj1ubwotICAgICBmaQotICAgICA7OwotKyAgKi1saW51eC1tdXNsKikKLSsgICAgZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlX3BoZHI9eWVzCi0rICAgIDs7Ci0gZXNhYwotIAotIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkciA9IHh5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOTIzYmM5YS4uYjA4ZTNkYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01MjkxLDYgKzUyOTEsOSBAQCBBQ19DQUNIRV9DSEVDSyhfX3N0YWNrX2Noa19mYWlsIGluIHRhcmdldCBDIGxpYnJhcnksCi0gICAgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwLAotICAgICAgIFtnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8KLSAgICAgY2FzZSAiJHRhcmdldCIgaW4KLSsgICAgICAgKi0qLW11c2wqKQotKyAgICAgICAgIyBBbGwgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIHN0YWNrIHByb3RlY3RvcgotKyAgICAgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllczs7Ci0gICAgICAgICotKi1saW51eCogfCAqLSota2ZyZWVic2QqLWdudSB8ICotKi1rbmV0YnNkKi1nbnUpCi0gICAgICAgIyBnbGliYyAyLjQgYW5kIGxhdGVyIHByb3ZpZGVzIF9fc3RhY2tfY2hrX2ZhaWwgYW5kCi0gICAgICAgIyBlaXRoZXIgX19zdGFja19jaGtfZ3VhcmQsIG9yIFRMUyBhY2Nlc3MgdG8gc3RhY2sgZ3VhcmQgY2FuYXJ5LgotQEAgLTUzMTcsNiArNTMyMCw3IEBAIEFDX0NBQ0hFX0NIRUNLKF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2V0IEMgbGlicmFyeSwKLSAJICMgPGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAwOC0xMC9tc2cwMDEzMC5odG1sPikgYW5kIGZvciBub3cKLSAJICMgc2ltcGx5IGFzc2VydCB0aGF0IGdsaWJjIGRvZXMgcHJvdmlkZSB0aGlzLCB3aGljaCBpcyB0cnVlIGZvciBhbGwKLSAJICMgcmVhbGlzdGljYWxseSB1c2FibGUgR05VL0h1cmQgY29uZmlndXJhdGlvbnMuCi0rCSAjIEFsbCBzdXBwb3J0ZWQgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIGl0IGFzIHdlbGwKLSAJIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXM7OwotICAgICAgICAqLSotZGFyd2luKiB8ICotKi1mcmVlYnNkKikKLSAJIEFDX0NIRUNLX0ZVTkMoX19zdGFja19jaGtfZmFpbCxbZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllc10sCi1AQCAtNTM5MCw2ICs1Mzk0LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj1ubwotICAgICBmaQotICAgICA7OwotKyAgKi1saW51eC1tdXNsKikKLSsgICAgZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlX3BoZHI9eWVzCi0rICAgIDs7Ci0gZXNhYwotIEdDQ19UQVJHRVRfVEVNUExBVEUoW1RBUkdFVF9ETF9JVEVSQVRFX1BIRFJdKQotIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkciA9IHh5ZXM7IHRoZW4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU3LXVud2luZC1maXgtZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE5MzU4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gYzVjMzNiZjg4MWEyYWVhMzU1MzEwZGQ5MDg3M2VkMzliYzI3MmIzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGt0a2FjaG92IDxrdGthY2hvdkAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBXZWQsIDIyIEFwciAyMDE1IDE0OjIwOjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNTcvNTddIHVud2luZCBmaXggZm9yIG11c2wKLQotT24gYmVoYWxmIG9mIHN6YWJvbGNzLm5hZ3lAYXJtLmNvbQotCi0yMDE1LTA0LTIyICBHcmVnb3IgUmljaGFyZHMgIDxncmVnb3IucmljaGFyZHNAdXdhdGVybG9vLmNhPgotCSAgICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiB1bndpbmQtZHcyLWZkZS1kaXAuYyAoVVNFX1BUX0dOVV9FSF9GUkFNRSk6IERlZmluZSBpdCBvbgotCUxpbnV4IGlmIHRhcmdldCBwcm92aWRlcyBkbF9pdGVyYXRlX3BoZHIuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIyMjMyOCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gbGliZ2NjL3Vud2luZC1kdzItZmRlLWRpcC5jIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvdW53aW5kLWR3Mi1mZGUtZGlwLmMgYi9saWJnY2MvdW53aW5kLWR3Mi1mZGUtZGlwLmMKLWluZGV4IGUxZTU2NmIuLjEzN2RjZWQgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvdW53aW5kLWR3Mi1mZGUtZGlwLmMKLSsrKyBiL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwotQEAgLTU5LDYgKzU5LDEyIEBACi0gCi0gI2lmICFkZWZpbmVkKGluaGliaXRfbGliYykgJiYgZGVmaW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikgXAotICAgICAmJiBkZWZpbmVkKFRBUkdFVF9ETF9JVEVSQVRFX1BIRFIpIFwKLSsgICAgJiYgZGVmaW5lZChfX2xpbnV4X18pCi0rIyBkZWZpbmUgVVNFX1BUX0dOVV9FSF9GUkFNRQotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZChpbmhpYml0X2xpYmMpICYmIGRlZmluZWQoSEFWRV9MRF9FSF9GUkFNRV9IRFIpIFwKLSsgICAgJiYgZGVmaW5lZChUQVJHRVRfRExfSVRFUkFURV9QSERSKSBcCi0gICAgICYmIChkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQotICMgZGVmaW5lIEVsZlcgX19FbGZOCi0gIyBkZWZpbmUgVVNFX1BUX0dOVV9FSF9GUkFNRQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU4LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI5MWZkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyODlhZDI5NjlhNTk2NmM2MDNiZjY5MjhjZTQ0MmRiNzRjNGNiYjI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNCBNYXIgMjAxNiAxMToyMzoxNCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnY2MvZmluYWwuYzogLWZkZWJ1Zy1wcmVmaXgtbWFwIHN1cHBvcnQgdG8gcmVtYXAgc291cmNlcyB3aXRoCi0gcmVsYXRpdmUgcGF0aAotCi1QUiBvdGhlci83MDQyOAotKiBmaW5hbC5jIChyZW1hcF9kZWJ1Z19maWxlbmFtZSk6IFVzZSBscmVhbHBhdGggdG8gdHJhbnNsYXRlCi1yZWxhdGl2ZSBwYXRoIGJlZm9yZSByZW1hcHBpbmcKLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzA0MjgKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvZ2NjL2ZpbmFsLmMgYi9nY2MvZmluYWwuYwotaW5kZXggNTVjZjUwOS4uYzM1OTRjMiAxMDA2NDQKLS0tLSBhL2djYy9maW5hbC5jCi0rKysgYi9nY2MvZmluYWwuYwotQEAgLTE1NTQsMTYgKzE1NTQsMjUgQEAgcmVtYXBfZGVidWdfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHNpemVfdCBuYW1lX2xlbjsKLSAKLSsgIC8qIFN1cHBvcnQgdG8gcmVtYXAgZmlsZW5hbWUgd2l0aCByZWxhdGl2ZSBwYXRoICAqLwotKyAgY2hhciAqcmVhbHBhdGggPSBscmVhbHBhdGggKGZpbGVuYW1lKTsKLSsgIGlmIChyZWFscGF0aCA9PSBOVUxMKQotKyAgICByZXR1cm4gZmlsZW5hbWU7Ci0rCi0gICBmb3IgKG1hcCA9IGRlYnVnX3ByZWZpeF9tYXBzOyBtYXA7IG1hcCA9IG1hcC0+bmV4dCkKLS0gICAgaWYgKGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSsgICAgaWYgKGZpbGVuYW1lX25jbXAgKHJlYWxwYXRoLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSAgICAgICBicmVhazsKLSAgIGlmICghbWFwKQotLSAgICByZXR1cm4gZmlsZW5hbWU7Ci0tICBuYW1lID0gZmlsZW5hbWUgKyBtYXAtPm9sZF9sZW47Ci0rICAgIHsKLSsgICAgICBmcmVlIChyZWFscGF0aCk7Ci0rICAgICAgcmV0dXJuIGZpbGVuYW1lOwotKyAgICB9Ci0rICBuYW1lID0gcmVhbHBhdGggKyBtYXAtPm9sZF9sZW47Ci0gICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotICAgcyA9IChjaGFyICopIGFsbG9jYSAobmFtZV9sZW4gKyBtYXAtPm5ld19sZW4pOwotICAgbWVtY3B5IChzLCBtYXAtPm5ld19wcmVmaXgsIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMgKyBtYXAtPm5ld19sZW4sIG5hbWUsIG5hbWVfbGVuKTsKLSsgIGZyZWUgKHJlYWxwYXRoKTsKLSAgIHJldHVybiBnZ2Nfc3RyZHVwIChzKTsKLSB9Ci0gDAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU5LWxpYmdjYy11c2UtbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1YjcyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotTGluayBsaWJnY2MgdXNpbmcgTERGTEFHUywgbm90IGp1c3QgU0hMSUJfTERGTEFHUwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBnY2MtNS4zLjAub3JpZy9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotKysrIGdjYy01LjMuMC9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotQEAgLTMyLDcgKzMyLDcgQEAgU0hMSUJfSU5TVEFMTF9TT0xJTksgPSAkKExOX1MpICQoU0hMSUJfUwotIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKLSAKLSBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCi0tCSQoU0hMSUJfTERGTEFHUykgXAotKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAotIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKLSAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCi0gCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC9DVkUtMjAxNi02MTMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC9DVkUtMjAxNi02MTMxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODUyNGMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvQ1ZFLTIwMTYtNjEzMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1MSArMCwwIEBACi1Gcm9tIGIzZjZiMzIxNjVkM2Y0MzdiZDBhYzYyNjljM2M0OTliNjhlY2YwMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBsYXcgPGxhd0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDQgQXVnIDIwMTYgMTY6NTM6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGZvciBQUjcxNjk2IGluIExpYmliZXJ0eSBEZW1hbmdsZXIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotW0JaICM3MTY5Nl0gLS0gaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzE2OTYKLQotMjAxNi0wOC0wNCAgTWFyY2VsIELDtmhtZSAgPGJvZWhtZS5tYXJjZWxAZ21haWwuY29tPgotCi0JUFIgYysrLzcxNjk2Ci0JKiBjcGx1cy1kZW0uYzogUHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiB0aGVyZSBpcyBhIGN5Y2xlCi0JaW4gdGhlIHJlZmVyZW5jaW5nIG9mIHJlbWVtYmVyZWQgbWFuZ2xlZCB0eXBlcy4KLQkod29ya19zdHVmZik6IE5ldyBzdGFjayB0byBrZWVwIHRyYWNrIG9mIHRoZSByZW1lbWJlcmVkIG1hbmdsZWQKLQl0eXBlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLgotCShwdXNoX3Byb2Nlc3NlZF90eXBlKTogTmV3IG1ldGhvZCB0byBwdXNoIGN1cnJlbnRseSBwcm9jZXNzZWQKLQlyZW1lbWJlcmVkIHR5cGUgb250byB0aGUgc3RhY2suCi0JKHBvcF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcG9wIGN1cnJlbnRseSBwcm9jZXNzZWQKLQlyZW1lbWJlcmVkIHR5cGUgZnJvbSB0aGUgc3RhY2suCi0JKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogQ29weSB2YWx1ZXMgb2YgbmV3IHZhcmlhYmxlcy4KLQkoZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZik6IEZyZWUgc3RhY2sgbWVtb3J5LgotCShkZW1hbmdsZV9hcmdzKTogUHVzaC9Qb3AgY3VycmVudGx5IHByb2Nlc3NlZCByZW1lbWJlcmVkIHR5cGUuCi0JKGRvX3R5cGUpOiBEbyBub3QgZGVtYW5nbGUgYSBjeWNsaWMgcmVmZXJlbmNlIGFuZCBwdXNoL3BvcAotCXJlZmVyZW5jZWQgcmVtZW1iZXJlZCB0eXBlLgotCi1jaGVycnktcGlja2VkIGZyb20gY29tbWl0IG9mCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMzkxNDMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLUNWRTogQ1ZFLTIwMTYtNjEzMQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliaWJlcnR5L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrCi0gbGliaWJlcnR5L2NwbHVzLWRlbS5jICAgICAgICAgICAgICAgICB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0gbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZCB8IDE4ICsrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9DaGFuZ2VMb2cgYi9saWJpYmVydHkvQ2hhbmdlTG9nCi1pbmRleCA5ODU5YWQzLi43OTM5NDgwIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L0NoYW5nZUxvZwotKysrIGIvbGliaWJlcnR5L0NoYW5nZUxvZwotQEAgLTEsMyArMSwyMCBAQAotKzIwMTYtMDgtMDQgIE1hcmNlbCBCw7ZobWUgIDxib2VobWUubWFyY2VsQGdtYWlsLmNvbT4KLSsKLSsJUFIgYysrLzcxNjk2Ci0rCSogY3BsdXMtZGVtLmM6IFByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUgaXMgYSBjeWNsZQotKwlpbiB0aGUgcmVmZXJlbmNpbmcgb2YgcmVtZW1iZXJlZCBtYW5nbGVkIHR5cGVzLgotKwkod29ya19zdHVmZik6IE5ldyBzdGFjayB0byBrZWVwIHRyYWNrIG9mIHRoZSByZW1lbWJlcmVkIG1hbmdsZWQKLSsJdHlwZXMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4KLSsJKHB1c2hfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHB1c2ggY3VycmVudGx5IHByb2Nlc3NlZAotKwlyZW1lbWJlcmVkIHR5cGUgb250byB0aGUgc3RhY2suCi0rCShwb3BfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHBvcCBjdXJyZW50bHkgcHJvY2Vzc2VkCi0rCXJlbWVtYmVyZWQgdHlwZSBmcm9tIHRoZSBzdGFjay4KLSsJKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogQ29weSB2YWx1ZXMgb2YgbmV3IHZhcmlhYmxlcy4KLSsJKGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYpOiBGcmVlIHN0YWNrIG1lbW9yeS4KLSsJKGRlbWFuZ2xlX2FyZ3MpOiBQdXNoL1BvcCBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZS4KLSsJKGRvX3R5cGUpOiBEbyBub3QgZGVtYW5nbGUgYSBjeWNsaWMgcmVmZXJlbmNlIGFuZCBwdXNoL3BvcAotKwlyZWZlcmVuY2VkIHJlbWVtYmVyZWQgdHlwZS4KLSsKLSAyMDE2LTA2LTAzICBSZWxlYXNlIE1hbmFnZXIKLSAKLSAJKiBHQ0MgNS40LjAgcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NwbHVzLWRlbS5jIGIvbGliaWJlcnR5L2NwbHVzLWRlbS5jCi1pbmRleCA3NTE0ZTU3Li5mMjFlNjMwIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L2NwbHVzLWRlbS5jCi0rKysgYi9saWJpYmVydHkvY3BsdXMtZGVtLmMKLUBAIC0xNDQsNiArMTQ0LDkgQEAgc3RydWN0IHdvcmtfc3R1ZmYKLSAgIHN0cmluZyogcHJldmlvdXNfYXJndW1lbnQ7IC8qIFRoZSBsYXN0IGZ1bmN0aW9uIGFyZ3VtZW50IGRlbWFuZ2xlZC4gICovCi0gICBpbnQgbnJlcGVhdHM7ICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHByZXZpb3VzCi0gCQkJICAgYXJndW1lbnQuICAqLwotKyAgaW50ICpwcm9jdHlwZXZlYzsgICAgIC8qIEluZGljZXMgb2YgY3VycmVudGx5IHByb2Nlc3NlZCByZW1lbWJlcmVkIHR5cGV2ZWNzLiAgKi8KLSsgIGludCBwcm9jdHlwZXZlY19zaXplOwotKyAgaW50IG5wcm9jdHlwZXM7Ci0gfTsKLSAKLSAjZGVmaW5lIFBSSU5UX0FOU0lfUVVBTElGSUVSUyAod29yayAtPiBvcHRpb25zICYgRE1HTF9BTlNJKQotQEAgLTQzNSw2ICs0MzgsMTAgQEAgaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbiAoc3RydWN0IHdvcmtfc3R1ZmYgKiwKLSAKLSBzdGF0aWMgdm9pZCByZW1lbWJlcl90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBjb25zdCBjaGFyICosIGludCk7Ci0gCi0rc3RhdGljIHZvaWQgcHVzaF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKiwgaW50KTsKLSsKLStzdGF0aWMgdm9pZCBwb3BfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICopOwotKwotIHN0YXRpYyB2b2lkIHJlbWVtYmVyX0J0eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBjb25zdCBjaGFyICosIGludCwgaW50KTsKLSAKLSBzdGF0aWMgaW50IHJlZ2lzdGVyX0J0eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqKTsKLUBAIC0xMzAxLDYgKzEzMDgsMTAgQEAgd29ya19zdHVmZl9jb3B5X3RvX2Zyb20gKHN0cnVjdCB3b3JrX3N0dWZmICp0bywgc3RydWN0IHdvcmtfc3R1ZmYgKmZyb20pCi0gICAgICAgbWVtY3B5ICh0by0+YnR5cGV2ZWNbaV0sIGZyb20tPmJ0eXBldmVjW2ldLCBsZW4pOwotICAgICB9Ci0gCi0rICBpZiAoZnJvbS0+cHJvY3R5cGV2ZWMpCi0rICAgIHRvLT5wcm9jdHlwZXZlYyA9Ci0rICAgICAgWERVUFZFQyAoaW50LCBmcm9tLT5wcm9jdHlwZXZlYywgZnJvbS0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCi0gICBpZiAoZnJvbS0+bnRtcGxfYXJncykKLSAgICAgdG8tPnRtcGxfYXJndmVjID0gWE5FV1ZFQyAoY2hhciAqLCBmcm9tLT5udG1wbF9hcmdzKTsKLSAKLUBAIC0xMzI5LDExICsxMzQwLDE3IEBAIGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrKQotICAgLyogRGlzY2FyZCB0aGUgcmVtZW1iZXJlZCB0eXBlcywgaWYgYW55LiAgKi8KLSAKLSAgIGZvcmdldF90eXBlcyAod29yayk7Ci0tICBpZiAod29yayAtPiB0eXBldmVjICE9IE5VTEwpCi0rICBpZiAod29yay0+dHlwZXZlYyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgZnJlZSAoKGNoYXIgKikgd29yayAtPiB0eXBldmVjKTsKLS0gICAgICB3b3JrIC0+IHR5cGV2ZWMgPSBOVUxMOwotLSAgICAgIHdvcmsgLT4gdHlwZXZlY19zaXplID0gMDsKLSsgICAgICBmcmVlICgoY2hhciAqKSB3b3JrLT50eXBldmVjKTsKLSsgICAgICB3b3JrLT50eXBldmVjID0gTlVMTDsKLSsgICAgICB3b3JrLT50eXBldmVjX3NpemUgPSAwOwotKyAgICB9Ci0rICBpZiAod29yay0+cHJvY3R5cGV2ZWMgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGZyZWUgKHdvcmstPnByb2N0eXBldmVjKTsKLSsgICAgICB3b3JrLT5wcm9jdHlwZXZlYyA9IE5VTEw7Ci0rICAgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9IDA7Ci0gICAgIH0KLSAgIGlmICh3b3JrLT50bXBsX2FyZ3ZlYykKLSAgICAgewotQEAgLTM1NTIsNiArMzU2OSw4IEBAIHN0YXRpYyBpbnQKLSBkb190eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsIHN0cmluZyAqcmVzdWx0KQotIHsKLSAgIGludCBuOwotKyAgaW50IGk7Ci0rICBpbnQgaXNfcHJvY3R5cGV2ZWM7Ci0gICBpbnQgZG9uZTsKLSAgIGludCBzdWNjZXNzOwotICAgc3RyaW5nIGRlY2w7Ci1AQCAtMzU2NCw2ICszNTgzLDcgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSAKLSAgIGRvbmUgPSAwOwotICAgc3VjY2VzcyA9IDE7Ci0rICBpc19wcm9jdHlwZXZlYyA9IDA7Ci0gICB3aGlsZSAoc3VjY2VzcyAmJiAhZG9uZSkKLSAgICAgewotICAgICAgIGludCBtZW1iZXI7Ci1AQCAtMzYxNiw4ICszNjM2LDE1IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gCSAgICAgIHN1Y2Nlc3MgPSAwOwotIAkgICAgfQotIAkgIGVsc2UKLSsJICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrLT5ucHJvY3R5cGVzOyBpKyspCi0rCSAgICAgIGlmICh3b3JrIC0+IHByb2N0eXBldmVjIFtpXSA9PSBuKQotKwkgICAgICAgIHN1Y2Nlc3MgPSAwOwotKwotKwkgIGlmIChzdWNjZXNzKQotIAkgICAgewotLQkgICAgICByZW1lbWJlcmVkX3R5cGUgPSB3b3JrIC0+IHR5cGV2ZWNbbl07Ci0rCSAgICAgIGlzX3Byb2N0eXBldmVjID0gMTsKLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgbik7Ci0rCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmstPnR5cGV2ZWNbbl07Ci0gCSAgICAgIG1hbmdsZWQgPSAmcmVtZW1iZXJlZF90eXBlOwotIAkgICAgfQotIAkgIGJyZWFrOwotQEAgLTM4NDAsNiArMzg2Nyw5IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gICAgIHN0cmluZ19kZWxldGUgKHJlc3VsdCk7Ci0gICBzdHJpbmdfZGVsZXRlICgmZGVjbCk7Ci0gCi0rICBpZiAoaXNfcHJvY3R5cGV2ZWMpCi0rICAgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0rCi0gICBpZiAoc3VjY2VzcykKLSAgICAgLyogQXNzdW1lIGFuIGludGVncmFsIHR5cGUsIGlmIHdlJ3JlIG5vdCBzdXJlLiAgKi8KLSAgICAgcmV0dXJuIChpbnQpICgodGsgPT0gdGtfbm9uZSkgPyB0a19pbnRlZ3JhbCA6IHRrKTsKLUBAIC00MjUyLDYgKzQyODIsNDEgQEAgZG9fYXJnIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsIHN0cmluZyAqcmVzdWx0KQotIH0KLSAKLSBzdGF0aWMgdm9pZAotK3B1c2hfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBpbnQgdHlwZXZlY19pbmRleCkKLSt7Ci0rICBpZiAod29yay0+bnByb2N0eXBlcyA+PSB3b3JrLT5wcm9jdHlwZXZlY19zaXplKQotKyAgICB7Ci0rICAgICAgaWYgKCF3b3JrLT5wcm9jdHlwZXZlY19zaXplKQotKwl7Ci0rCSAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9IDQ7Ci0rCSAgd29yay0+cHJvY3R5cGV2ZWMgPSBYTkVXVkVDIChpbnQsIHdvcmstPnByb2N0eXBldmVjX3NpemUpOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKHdvcmstPnByb2N0eXBldmVjX3NpemUgPCAxNikKLSsJICAgIC8qIERvdWJsZSB3aGVuIHNtYWxsLiAgKi8KLSsJICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgKj0gMjsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIEdyb3cgc2xvd2VyIHdoZW4gbGFyZ2UuICAqLwotKwkgICAgICBpZiAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA+IChJTlRfTUFYIC8gMykgKiAyKQotKyAgICAgICAgICAgICAgICB4bWFsbG9jX2ZhaWxlZCAoSU5UX01BWCk7Ci0rICAgICAgICAgICAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gKHdvcmstPnByb2N0eXBldmVjX3NpemUgKiAzIC8gMik7Ci0rCSAgICB9Ci0rICAgICAgICAgIHdvcmstPnByb2N0eXBldmVjCi0rICAgICAgICAgICAgPSBYUkVTSVpFVkVDIChpbnQsIHdvcmstPnByb2N0eXBldmVjLCB3b3JrLT5wcm9jdHlwZXZlY19zaXplKTsKLSsJfQotKyAgICB9Ci0rICAgIHdvcmstPnByb2N0eXBldmVjIFt3b3JrLT5ucHJvY3R5cGVzKytdID0gdHlwZXZlY19pbmRleDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStwb3BfcHJvY2Vzc2VkX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrKQotK3sKLSsgIHdvcmstPm5wcm9jdHlwZXMtLTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSByZW1lbWJlcl90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqc3RhcnQsIGludCBsZW4pCi0gewotICAgY2hhciAqdGVtOwotQEAgLTQ1MTUsMTAgKzQ1ODAsMTMgQEAgZGVtYW5nbGVfYXJncyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLAotIAkJewotIAkJICBzdHJpbmdfYXBwZW5kIChkZWNscCwgIiwgIik7Ci0gCQl9Ci0rCSAgICAgIHB1c2hfcHJvY2Vzc2VkX3R5cGUgKHdvcmssIHQpOwotIAkgICAgICBpZiAoIWRvX2FyZyAod29yaywgJnRlbSwgJmFyZykpCi0gCQl7Ci0rCQkgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCQkgIHJldHVybiAoMCk7Ci0gCQl9Ci0rCSAgICAgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCSAgICAgIGlmIChQUklOVF9BUkdfVFlQRVMpCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmRzIChkZWNscCwgJmFyZyk7Ci1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZCBiL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLWluZGV4IDFkOGI3NzEuLmQ2OTBiMjMgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCi0rKysgYi9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCi1AQCAtNDQyOSwzICs0NDI5LDIxIEBAIF9fdnRfOTAwMDAwMDAwMDBjYWZlYmFiZQotIAotIF9aODA4MDAwMDAwMDAwMDAwMDAwMDAwMDAKLSBfWjgwODAwMDAwMDAwMDAwMDAwMDAwMDAwCi0rIwotKyMgVGVzdHMgd3JpdGUgYWNjZXNzIHZpb2xhdGlvbiBQUjcwOTI2Ci0rCi0rMF9fT3QybTAyUjVUMDAwMDUwMDAwMAotKzBfX090Mm0wMlI1VDAwMDA1MDAwMDAKLSsjCi0rCi0rMF9fR1Q1MDAwMDAwMDAwMF8KLSswX19HVDUwMDAwMDAwMDAwXwotKyMKLSsKLStfX3QybTA1QjUwMDAwMDAwMDAwMDAwMDAwMF8KLStfX3QybTA1QjUwMDAwMDAwMDAwMDAwMDAwMF8KLSsjCi0rIyBUZXN0cyBzdGFjayBvdmVyZmxvdyBQUjcxNjk2Ci0rCi0rX18xMCUwX19TNF8wVDBUMAotKyUwPD46OiUwKCUwPD4pCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy5pbmMKaW5kZXggNWM4MWEzMy4uZTU2OWUwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy5pbmMKQEAgLTMyLDEyICszMiw2IEBACiBTUkNfVVJJID0gIlwKICAgICAgICAgICAgJHtCQVNFVVJJfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11Y2xpYmMtY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKQEAgLTcxLDcgKzY1LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDEtc3NwX25vbnNoYXJlZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA0NC1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoIFwKQEAgLTgxLDYgKzc1LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwNDgtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNTRfYWxsX25vcGllLWFsbC1mbGFncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDU1LXVud2luZF9oLWdsaWJjMjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1Ni1MUkEtUFI3MDkwNC1yZWxheC10aGUtcmVzdHJpY3Rpb24tb24tc3VicmVnLXJlbG9hZC1mLnBhdGNoIFwKICAgICAgICAgICAgJHtCQUNLUE9SVFN9IFwKICIKIEJBQ0tQT1JUUyA9ICJcCkBAIC0xMjksOCArMTI0LDYgQEAKICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKICIKIAotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgIgotCiBFWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAogICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAogICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAyLXVjbGliYy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAyLXVjbGliYy1jb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDI4NGVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwMi11Y2xpYmMtY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gNGVmYzVhMjU4YzgxMjg3NTc0MzY0N2Q3NTZmNzVjOTNjNGQ1MTRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM4OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvNDZdIHVjbGliYy1jb25mCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoIHwgNCArKysrCi0gbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgICAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggYi9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLWluZGV4IDYwYjA0OTcuLjZkYzdlYWQgMTAwNzU1Ci0tLS0gYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLSsrKyBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotQEAgLTEwNiw2ICsxMDYsMTAgQEAgaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCAtYSAkSF9SRUFMX1RBUkdFVCA9IGk2ODYtcGMtbGludXgtZ251IF0KLSAgdGhlbgotICAgbWFrZSBhbGwtZ2RiIGFsbC1kZWphZ251IGFsbC1sZCB8fCBleGl0IDEKLSAgIG1ha2UgaW5zdGFsbC1nZGIgaW5zdGFsbC1kZWphZ251IGluc3RhbGwtbGQgfHwgZXhpdCAxCi0rZWxpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC11Y2xpYmMgXQotKyB0aGVuCi0rICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotKyAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLSBlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgXSA7IHRoZW4KLSAgIG1ha2UgYm9vdHN0cmFwIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsIHx8IGV4aXQgMQotZGlmZiAtLWdpdCBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLWluZGV4IGQzMTg5NTcuLmRmNTU5NTAgMTAwNzU1Ci0tLS0gYS9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotKysrIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLUBAIC02MDMsNyArNjAzLDcgQEAgaG9zdF9vcz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0gCi0gIyBUcmFuc2Zvcm0gbGludXgqIHRvICotKi1saW51eC1nbnUqLCB0byBzdXBwb3J0IG9sZCBjb25maWd1cmUgc2NyaXB0cy4KLSBjYXNlICRob3N0X29zIGluCi0tbGludXgtZ251KikgOzsKLStsaW51eC1nbnUqfGxpbnV4LXVjbGliYyopIDs7Ci0gbGludXgqKSBob3N0PWBlY2hvICRob3N0IHwgc2VkICdzL15cKC4qLS4qLWxpbnV4XClcKC4qXCkkL1wxLWdudVwyLydgCi0gZXNhYwotIAotQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGxpbnV4LWdudW9sZGxkKiB8IGxpbnV4LWdudWFvdXQqIHwgbGludXgtZ251Y29mZiopCi0gICA7OwotIAotICMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLS1saW51eC1nbnUqKQotK2xpbnV4KikKLSAgIHZlcnNpb25fdHlwZT1saW51eAotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICBuZWVkX3ZlcnNpb249bm8KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMDdmZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gYWQ1ZmQyODNmYzdlZjA0ZjY2YzdmYjAwMzgwNTM2NGVhM2JkMzRlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQwOjEyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvNDZdIGdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgfCA1ICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oICB8IDkgKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oICB8IDkgKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotaW5kZXggZWY2Y2U4Zi4uNDc0MDYzNiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLUBAIC0yNzMsNSArMjczLDEwIEBAIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgotICNpZmRlZiBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKLSAjZGVmaW5lIF9HTElCQ1hYX0xEQkxfQ09NUEFUKGRibCwgbGRibCkgXAotICAgZXh0ZXJuICJDIiB2b2lkIGxkYmwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChhbGlhcyAoI2RibCkpKQotKyNpZmRlZiBfX1VDTElCQ19fCi0rLy8gVGhpcyBpcyBiZWNhdXNlIF9fY19sb2NhbGUgaXMgb2YgdHlwZSBfX2N0eXBlX3RvdXBsb3dfdCogd2hpY2ggaXMgc2hvcnQgb24gdWNsaWJjLiBmb3IgZ2xpYmMgaXRzIGludCoKLStfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUHMsIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcyk7Ci0rI2Vsc2UKLSBfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUGksIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSk7Ci0rI2VuZGlmCi0gI2VuZGlmIC8vIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotaW5kZXggNzk0NDcxZS4uZDY1Zjk1NSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1AQCAtNDAsMTMgKzQwLDIyIEBACi0gCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSAKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgdHlwZWRlZiBfX2N0eXBlX3RvdXBsb3dfdCoJX19jX2xvY2FsZTsKLSsjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSAKLSAgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBhbmQgbG9uZyBkb3VibGUgdG8gc3RyaW5nIGFuZAotICAgLy8gcmV0dXJuIGxlbmd0aCBvZiBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi1pbmRleCA1OTFjNzkzLi41NWViMGU5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLUBAIC0zMyw2ICszMywxMSBAQAotIAotIC8vIEluZm9ybWF0aW9uIGFzIGdsZWFuZWQgZnJvbSAvdXNyL2luY2x1ZGUvY3R5cGUuaAotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCi0gewotIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi1AQCAtNDEsNyArNDYsMTEgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAgIHN0cnVjdCBjdHlwZV9iYXNlCi0gICB7Ci0gICAgIC8vIE5vbi1zdGFuZGFyZCB0eXBlZGVmcy4KLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KglfX3RvX3R5cGU7Ci0rI2Vsc2UKLSAgICAgdHlwZWRlZiBjb25zdCBpbnQqIAkJX190b190eXBlOwotKyNlbmRpZgotIAotICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBhcnRpY3VsYXIgc2l6ZQotICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBhbiBlbnVtLgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTI2MjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg2MiArMCwwIEBACi1Gcm9tIDY4YmQwODMzNTdlNzg2NzhhOWJhYWM3NjBiZWIyYTMxZjAwOTU0YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0MTozOSArMDQwMAotU3ViamVjdDogW1BBVENIIDA0LzQ2XSB1Y2xpYmMtbG9jYWxlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICA2MyArKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAxMTcgKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MgICAgICAgIHwgMzA4ICsrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgICAgICAgIHwgIDgwICsrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgMzAwICsrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjICAgICAgIHwgMTAwICsrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggICAgICAgIHwgMTE4ICsrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8IDY5MiArKysrKysrKysrKysrKysrKysrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8IDE2MCArKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgNDA2ICsrKysrKysrKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCAgIHwgIDY4ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzUgKysrCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmggICAgICAgfCAgIDIgKwotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhciAgICAgICAgICAgICAgICAgIHwgICAyICsKLSAxNiBmaWxlcyBjaGFuZ2VkLCAyNjg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00IGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotaW5kZXggYjBmODhjYi4uYTBlZTM2YiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLSsrKyBiL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLUBAIC0yMzU4LDYgKzIzNTgsOSBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTI1NDIsNiArMjU0NSw0MCBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvdGltZV9tZW1iZXJzLmNjCi0gICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotICAgICAgIDs7Ci0rICAgIHVjbGliYykKLSsgICAgICBBQ19NU0dfUkVTVUxUKHVjbGliYykKLSsKLSsgICAgICAjIERlY2xhcmUgaW50ZW50aW9uIHRvIHVzZSBnZXR0ZXh0LCBhbmQgYWRkIHN1cHBvcnQgZm9yIHNwZWNpZmljCi0rICAgICAgIyBsYW5ndWFnZXMuCi0rICAgICAgIyBGb3Igc29tZSByZWFzb24sIEFMTF9MSU5HVUFTIGhhcyB0byBiZSBiZWZvcmUgQU0tR05VLUdFVFRFWFQKLSsgICAgICBBTExfTElOR1VBUz0iZGUgZnIiCi0rCi0rICAgICAgIyBEb24ndCBjYWxsIEFNLUdOVS1HRVRURVhUIGhlcmUuIEluc3RlYWQsIGFzc3VtZSBnbGliYy4KLSsgICAgICBBQ19DSEVDS19QUk9HKGNoZWNrX21zZ2ZtdCwgbXNnZm10LCB5ZXMsIG5vKQotKyAgICAgIGlmIHRlc3QgeCIkY2hlY2tfbXNnZm10IiA9IHgieWVzIiAmJiB0ZXN0IHgiJGVuYWJsZV9ubHMiID0geCJ5ZXMiOyB0aGVuCi0rICAgICAgICBVU0VfTkxTPXllcwotKyAgICAgIGZpCi0rICAgICAgIyBFeHBvcnQgdGhlIGJ1aWxkIG9iamVjdHMuCi0rICAgICAgZm9yIGxpbmcgaW4gJEFMTF9MSU5HVUFTOyBkbyBcCi0rICAgICAgICBnbGliY3h4X01PRklMRVM9IiRnbGliY3h4X01PRklMRVMgJGxpbmcubW8iOyBcCi0rICAgICAgICBnbGliY3h4X1BPRklMRVM9IiRnbGliY3h4X1BPRklMRVMgJGxpbmcucG8iOyBcCi0rICAgICAgZG9uZQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfTU9GSUxFUykKLSsgICAgICBBQ19TVUJTVChnbGliY3h4X1BPRklMRVMpCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYWUzZTRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0wLDAgKzEsNjMgQEAKLSsvLyBQcm90b3R5cGVzIGZvciBHTElCQyB0aHJlYWQgbG9jYWxlIF9fLXByZWZpeGVkIGZ1bmN0aW9ucyAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLyBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0rI2luY2x1ZGUgPGNsb2NhbGU+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihubF9sYW5naW5mb19sKSBfX25sX2xhbmdpbmZvX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJjb2xsX2wpIF9fc3RyY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RyZnRpbWVfbCkgX19zdHJmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9kX2wpIF9fc3RydG9kX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2ZfbCkgX19zdHJ0b2ZfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvbGRfbCkgX19zdHJ0b2xkX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ4ZnJtX2wpIF9fc3RyeGZybV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YobmV3bG9jYWxlKSBfX25ld2xvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGZyZWVsb2NhbGUpIF9fZnJlZWxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGR1cGxvY2FsZSkgX19kdXBsb2NhbGU7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK2V4dGVybiAiQyIgX190eXBlb2YoaXN3Y3R5cGVfbCkgX19pc3djdHlwZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93bG93ZXJfbCkgX190b3dsb3dlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93dXBwZXJfbCkgX190b3d1cHBlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzY29sbF9sKSBfX3djc2NvbGxfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc2Z0aW1lX2wpIF9fd2NzZnRpbWVfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUwODFkYzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTAsMCArMSwxNjAgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxjZXJybm8+ICAvLyBGb3IgZXJybm8KLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0rI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cnRvbF9sKFMsIEUsIEIsIEwpICAgICAgc3RydG9sKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvdWxfbChTLCBFLCBCLCBMKSAgICAgc3RydG91bCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2xsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvbGwoKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bGxfbChTLCBFLCBCLCBMKSAgICBzdHJ0b3VsbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rI2RlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotKyNkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2Y7Ci0rCSAgZWxzZQotKwkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19sZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICBfX2NfbG9jYWxlIF9fb2xkKQotKyAgewotKyAgICBfX2Nsb2MgPSBfX25ld2xvY2FsZSgxIDw8IExDX0FMTCwgX19zLCBfX29sZCk7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgaWYgKCFfX2Nsb2MpCi0rICAgICAgewotKwkvLyBUaGlzIG5hbWVkIGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIE9TLgotKwlfX3Rocm93X3J1bnRpbWVfZXJyb3IoX19OKCJsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUgIgotKwkJCSAgICAgICJuYW1lIG5vdCB2YWxpZCIpKTsKLSsgICAgICB9Ci0rI2VuZGlmCi0rICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19kZXN0cm95X2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsKLSsgICAgaWYgKF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSsgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSsgIH0KLSsKLSsgIF9fY19sb2NhbGUKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLSt9IC8vIG5hbWVzcGFjZSBzdGQKLSsKLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0rICAgIHsKLSsgICAgICAiTENfQ1RZUEUiLAotKyAgICAgICJMQ19OVU1FUklDIiwKLSsgICAgICAiTENfVElNRSIsCi0rICAgICAgIkxDX0NPTExBVEUiLAotKyAgICAgICJMQ19NT05FVEFSWSIsCi0rICAgICAgIkxDX01FU1NBR0VTIiwKLSsjaWYgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgIT0gMAotKyAgICAgICJMQ19QQVBFUiIsCi0rICAgICAgIkxDX05BTUUiLAotKyAgICAgICJMQ19BRERSRVNTIiwKLSsgICAgICAiTENfVEVMRVBIT05FIiwKLSsgICAgICAiTENfTUVBU1VSRU1FTlQiLAotKyAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSsjZW5kaWYKLSsgICAgfTsKLSt9Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotK30gIC8vIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGEwN2MxZgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC0wLDAgKzEsMTE3IEBACi0rLy8gV3JhcHBlciBmb3IgdW5kZXJseWluZyBDLWxhbmd1YWdlIGxvY2FsaXphdGlvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjggIFN0YW5kYXJkIGxvY2FsZSBjYXRlZ29yaWVzLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZuZGVmIF9DX0xPQ0FMRV9ICi0rI2RlZmluZSBfQ19MT0NBTEVfSCAxCi0rCi0rI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotKwotKyNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4JCS8vIEZvciBjb2RlY3Z0Ci0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rI2VuZGlmCi0rI2RlZmluZSBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgMQotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBjYXRlZ29yaWVzCi0rI2VuZGlmCi0rLy8gI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyA2Ci0rI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAwCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotK30KLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICB0eXBlZGVmIF9fbG9jYWxlX3QJCV9fY19sb2NhbGU7Ci0rI2Vsc2UKLSsgIHR5cGVkZWYgaW50KgkJCV9fY19sb2NhbGU7Ci0rI2VuZGlmCi0rCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBfVHYgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiBzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHNwcmludGYgd2hpY2gsIGluIGdlbmVyYWwsIGNhbiBiZSBkYW5nZXJvdXMgYW5kIHNob3VsZAotKyAgLy8gYmUgYXZvaWRlZC4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9Udj4KLSsgICAgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYywgaW50IF9fcHJlYykKLSsgICAgewotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0rI2Vsc2UKLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fc2F2LCBfX29sZCk7Ci0rICAgICAgc3RkOjpzZXRsb2NhbGUoTENfQUxMLCAiQyIpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0rI2VuZGlmCi0rICAgICAgcmV0dXJuIF9fcmV0OwotKyAgICB9Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRhYTk2MgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYwotQEAgLTAsMCArMSwzMDggQEAKLSsvLyBzdGQ6OmNvZGVjdnQgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuNSAtIFRlbXBsYXRlIGNsYXNzIGNvZGVjdnQKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4gIC8vIEZvciBNQl9DVVJfTUFYCi0rI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBGb3IgTUJfTEVOX01BWAotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tLAotKwkgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCSBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwkgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0Ci0rICB7Ci0rICAgIHJlc3VsdCBfX3JldCA9IG9rOwotKyAgICBzdGF0ZV90eXBlIF9fdG1wX3N0YXRlKF9fc3RhdGUpOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKLSsjZW5kaWYKLSsKLSsgICAgLy8gd2NzbnJ0b21icyBpcyAqdmVyeSogZmFzdCBidXQgc3RvcHMgaWYgZW5jb3VudGVycyBOVUwgY2hhcmFjdGVyczoKLSsgICAgLy8gaW4gY2FzZSB3ZSBmYWxsIGJhY2sgdG8gd2NydG9tYiBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogd2NzbnJ0b21icyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQgPSB3bWVtY2hyKF9fZnJvbV9uZXh0LCBMJ1wwJywKLSsJCQkJCQkgICAgICBfX2Zyb21fZW5kIC0gX19mcm9tX25leHQpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwljb25zdCBzaXplX3QgX19jb252ID0gd2NzbnJ0b21icyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCQkgX190b19lbmQgLSBfX3RvX25leHQsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gd2NydG9tYi4KLSsJICAgIGZvciAoOyBfX2Zyb20gPCBfX2Zyb21fbmV4dDsgKytfX2Zyb20pCi0rCSAgICAgIF9fdG9fbmV4dCArPSB3Y3J0b21iKF9fdG9fbmV4dCwgKl9fZnJvbSwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBleHRlcm5fdHlwZSBfX2J1ZltNQl9MRU5fTUFYXTsKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgIGNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3J0b21iKF9fYnVmLCAqX19mcm9tX25leHQsICZfX3RtcF9zdGF0ZSk7Ci0rCSAgICBpZiAoX19jb252ID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3RvX2VuZCAtIF9fdG9fbmV4dCkpCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJbWVtY3B5KF9fdG9fbmV4dCwgX19idWYsIF9fY29udik7Ci0rCQlfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCQlfX3RvX25leHQgKz0gX19jb252OwotKwkJKytfX2Zyb21fbmV4dDsKLSsJICAgICAgfQotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBleHRlcm5fdHlwZSomIF9fZnJvbV9uZXh0LAotKwlpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwlpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIHN0b3JlIGEgTCdcMCcgYW5kIHRoZW4gY29udGludWUsIGluIGEgbG9vcC4KLSsgICAgLy8gTkI6IG1ic25ydG93Y3MgaXMgYSBHTlUgZXh0ZW5zaW9uCi0rICAgIGZvciAoX19mcm9tX25leHQgPSBfX2Zyb20sIF9fdG9fbmV4dCA9IF9fdG87Ci0rCSBfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX190b19uZXh0IDwgX190b19lbmQKLSsJICYmIF9fcmV0ID09IG9rOykKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tX25leHQsICdcMCcsCi0rCQkJCQkJCQkgIF9fZnJvbV9lbmQKLSsJCQkJCQkJCSAgLSBfX2Zyb21fbmV4dCkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbV9uZXh0LAotKwkJCQkgICBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yICg7OyArK19fdG9fbmV4dCwgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhfX3RvX25leHQsIF9fZnJvbSwgX19mcm9tX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb207Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCA9IGVycm9yOwotKwkgIH0KLSsJZWxzZSBpZiAoX19mcm9tX25leHQgJiYgX19mcm9tX25leHQgPCBfX2Zyb21fY2h1bmtfZW5kKQotKwkgIHsKLSsJICAgIC8vIEl0IGlzIHVuY2xlYXIgd2hhdCB0byByZXR1cm4gaW4gdGhpcyBjYXNlIChzZWUgRFIgMzgyKS4KLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgICBfX3JldCA9IHBhcnRpYWw7Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb21fY2h1bmtfZW5kOwotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICB9Ci0rCi0rCWlmIChfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX19yZXQgPT0gb2spCi0rCSAgewotKwkgICAgaWYgKF9fdG9fbmV4dCA8IF9fdG9fZW5kKQotKwkgICAgICB7Ci0rCQkvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkJX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkJKytfX2Zyb21fbmV4dDsKLSsJCSpfX3RvX25leHQrKyA9IEwnXDAnOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rICAgIC8vIFhYWCBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgZW5jb2RpbmcgaXMKLSsgICAgLy8gc3RhdGVsZXNzIGFuZCBpcyBlaXRoZXIgc2luZ2xlLWJ5dGUgb3IgdmFyaWFibGUtd2lkdGguCi0rICAgIGludCBfX3JldCA9IDA7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICBpZiAoTUJfQ1VSX01BWCA9PSAxKQotKyAgICAgIF9fcmV0ID0gMTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncy4KLSsgICAgaW50IF9fcmV0ID0gTUJfQ1VSX01BWDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2xlbmd0aChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAotKwkgICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0Ci0rICB7Ci0rICAgIGludCBfX3JldCA9IDA7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGFkdmFuY2UgcGFzdCBpdCBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsKLSsgICAgLy8gQSBkdW1teSBpbnRlcm5hbCBidWZmZXIgaXMgbmVlZGVkIGluIG9yZGVyIGZvciBtYnNucnRvY3dzIHRvIGNvbnNpZGVyCi0rICAgIC8vIGl0cyBmb3VydGggcGFyYW1ldGVyIChpdCB3b3VsZG4ndCB3aXRoIE5VTEwgYXMgZmlyc3QgcGFyYW1ldGVyKS4KLSsgICAgd2NoYXJfdCogX190byA9IHN0YXRpY19jYXN0PHdjaGFyX3QqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZih3Y2hhcl90KQotKwkJCQkJCQkgICAqIF9fbWF4KSk7Ci0rICAgIHdoaWxlIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tLCAnXDAnLAotKwkJCQkJCQkJICBfX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbSkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZW5kOwotKwotKwljb25zdCBleHRlcm5fdHlwZSogX190bXBfZnJvbSA9IF9fZnJvbTsKLSsJc2l6ZV90IF9fY29udiA9IG1ic25ydG93Y3MoX190bywgJl9fZnJvbSwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbSwKLSsJCQkJICAgX19tYXgsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gbWJydG93Yy4KLSsJICAgIGZvciAoX19mcm9tID0gX190bXBfZnJvbTs7IF9fZnJvbSArPSBfX2NvbnYpCi0rCSAgICAgIHsKLSsJCV9fY29udiA9IG1icnRvd2MoTlVMTCwgX19mcm9tLCBfX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJICAgIGJyZWFrOwotKwkgIH0KLSsJaWYgKCFfX2Zyb20pCi0rCSAgX19mcm9tID0gX19mcm9tX2NodW5rX2VuZDsKLSsKLSsJX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJX19tYXggLT0gX19jb252OwotKwotKwlpZiAoX19mcm9tIDwgX19lbmQgJiYgX19tYXgpCi0rCSAgewotKwkgICAgLy8gWFhYIFByb2JhYmx5IHdyb25nIGZvciBzdGF0ZWZ1bCBlbmNvZGluZ3MKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgICsrX19mcm9tOwotKwkgICAgKytfX3JldDsKLSsJICAgIC0tX19tYXg7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jMjY2NGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDgwIEBACi0rLy8gc3RkOjpjb2xsYXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi40LjEuMiAgY29sbGF0ZSB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCi0rICAvLyBiZSBwdXQgdGhlcmUgaW5zdGVhZCBvZiBoZXJlLgotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fY29tcGFyZShjb25zdCBjaGFyKiBfX29uZSwgY29uc3QgY2hhciogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3N0cmNvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8Y2hhcj46Ol9NX3RyYW5zZm9ybShjaGFyKiBfX3RvLCBjb25zdCBjaGFyKiBfX2Zyb20sCi0rCQkJCXNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fc3RyeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTx3Y2hhcl90Pjo6X01fY29tcGFyZShjb25zdCB3Y2hhcl90KiBfX29uZSwKLSsJCQkJIGNvbnN0IHdjaGFyX3QqIF9fdHdvKSBjb25zdAotKyAgICB7Ci0rICAgICAgaW50IF9fY21wID0gX193Y3Njb2xsX2woX19vbmUsIF9fdHdvLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsKLSsgICAgICByZXR1cm4gKF9fY21wID4+ICg4ICogc2l6ZW9mIChpbnQpIC0gMikpIHwgKF9fY21wICE9IDApOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHNpemVfdAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV90cmFuc2Zvcm0od2NoYXJfdCogX190bywgY29uc3Qgd2NoYXJfdCogX19mcm9tLAotKwkJCQkgICBzaXplX3QgX19uKSBjb25zdAotKyAgICB7IHJldHVybiBfX3djc3hmcm1fbChfX3RvLCBfX2Zyb20sIF9fbiwgX01fY19sb2NhbGVfY29sbGF0ZSk7IH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyOTRlM2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwMCBAQAotKy8vIHN0ZDo6Y3R5cGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuMS4yICBjdHlwZSB2aXJ0dWFsIGZ1bmN0aW9ucy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2RlZmluZSBfTElCQwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI3VuZGVmIF9MSUJDCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQotKyNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQotKyNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQotKyNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotKyAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotKyAgICB7Ci0rICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJewotKwkgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY3R5cGUpOwotKwkgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSwgX19zKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIHRoaXMtPl9NX3RvdXBwZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b3VwcGVyOwotKwkgIHRoaXMtPl9NX3RvbG93ZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b2xvd2VyOwotKwkgIHRoaXMtPl9NX3RhYmxlID0gdGhpcy0+X01fY19sb2NhbGVfY3R5cGUtPl9fY3R5cGVfYjsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01fY29udmVydF90b193bWFzayhjb25zdCBtYXNrIF9fbSkgY29uc3QKLSsgIHsKLSsgICAgX193bWFza190eXBlIF9fcmV0OwotKyAgICBzd2l0Y2ggKF9fbSkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBzcGFjZToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJzcGFjZSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwcmludDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwcmludCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBjbnRybDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJjbnRybCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB1cHBlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ1cHBlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBsb3dlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJsb3dlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBhbHBoYToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJhbHBoYSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJkaWdpdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwdW5jdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwdW5jdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB4ZGlnaXQ6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgieGRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFsbnVtOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFsbnVtIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGdyYXBoOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImdyYXBoIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwlfX3JldCA9IF9fd21hc2tfdHlwZSgpOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvdXBwZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd3VwcGVyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd3VwcGVyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvbG93ZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd2xvd2VyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd2xvd2VyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgYm9vbAotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotKyAgewotKyAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKyAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotKyAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKyAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLSsJICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJewotKwkgIF9fcmV0ID0gdHJ1ZTsKLSsJICBicmVhazsKLSsJfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMoY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgbWFzayogX192ZWMpIGNvbnN0Ci0rICB7Ci0rICAgIGZvciAoOyBfX2xvIDwgX19oaTsgKytfX3ZlYywgKytfX2xvKQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCW1hc2sgX19tID0gMDsKLSsJZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQotKwkgIGlmIChfX2lzd2N0eXBlX2woKl9fbG8sIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkgICAgX19tIHw9IF9NX2JpdFtfX2JpdGN1cl07Ci0rCSpfX3ZlYyA9IF9fbTsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiAhdGhpcy0+ZG9faXMoX19tLCAqX19sbykpCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19zY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiB0aGlzLT5kb19pcyhfX20sICpfX2xvKSAhPSAwKQotKyAgICAgICsrX19sbzsKLSsgICAgcmV0dXJuIF9fbG87Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjaGFyIF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9NX3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldOyB9Ci0rCi0rICBjb25zdCBjaGFyKgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgd2NoYXJfdCogX19kZXN0KSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKwkqX19kZXN0ID0gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9fbG8pXTsKLSsJKytfX2xvOwotKwkrK19fZGVzdDsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY2hhcgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KHdjaGFyX3QgX193YywgY2hhciBfX2RmYXVsdCkgY29uc3QKLSsgIHsKLSsgICAgaWYgKF9fd2MgPj0gMCAmJiBfX3djIDwgMTI4ICYmIF9NX25hcnJvd19vaykKLSsgICAgICByZXR1cm4gX01fbmFycm93W19fd2NdOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYihfX3djKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiAoX19jID09IEVPRiA/IF9fZGZhdWx0IDogc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGksIGNoYXIgX19kZmF1bHQsCi0rCSAgICBjaGFyKiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgaWYgKF9NX25hcnJvd19vaykKLSsgICAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rCXsKLSsJICBpZiAoKl9fbG8gPj0gMCAmJiAqX19sbyA8IDEyOCkKLSsJICAgICpfX2Rlc3QgPSBfTV9uYXJyb3dbKl9fbG9dOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAgICAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICAgIH0KLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsgICAgZWxzZQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGNvbnN0IGludCBfX2MgPSB3Y3RvYigqX19sbyk7Ci0rCSAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgdm9pZAotKyAgY3R5cGU8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfY3R5cGUoKQotKyAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIHdpbnRfdCBfX2k7Ci0rICAgIGZvciAoX19pID0gMDsgX19pIDwgMTI4OyArK19faSkKLSsgICAgICB7Ci0rCWNvbnN0IGludCBfX2MgPSB3Y3RvYihfX2kpOwotKwlpZiAoX19jID09IEVPRikKLSsJICBicmVhazsKLSsJZWxzZQotKwkgIF9NX25hcnJvd1tfX2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKTsKLSsgICAgICB9Ci0rICAgIGlmIChfX2kgPT0gMTI4KQotKyAgICAgIF9NX25hcnJvd19vayA9IHRydWU7Ci0rICAgIGVsc2UKLSsgICAgICBfTV9uYXJyb3dfb2sgPSBmYWxzZTsKLSsgICAgZm9yIChzaXplX3QgX19qID0gMDsKLSsJIF9faiA8IHNpemVvZihfTV93aWRlbikgLyBzaXplb2Yod2ludF90KTsgKytfX2opCi0rICAgICAgX01fd2lkZW5bX19qXSA9IGJ0b3djKF9faik7Ci0rCi0rICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8PSAxMTsgKytfX2spCi0rICAgICAgewotKwlfTV9iaXRbX19rXSA9IHN0YXRpY19jYXN0PG1hc2s+KF9JU2JpdChfX2spKTsKLSsJX01fd21hc2tbX19rXSA9IF9NX2NvbnZlcnRfdG9fd21hc2soX01fYml0W19fa10pOwotKyAgICAgIH0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICB9Ci0rI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTM1OTRkOQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTAwIEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGdldHRleHQgc3R1ZmYKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fZGNnZXR0ZXh0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkJICAgICBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KTsKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgX19kY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotKyNlbHNlCi0rI3VuZGVmIGdldHRleHQKLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gU3BlY2lhbGl6YXRpb25zLgotKyAgdGVtcGxhdGU8PgotKyAgICBzdHJpbmcKLSsgICAgbWVzc2FnZXM8Y2hhcj46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgc3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KGdldHRleHQoX19kZmF1bHQuY19zdHIoKSkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gc3RyaW5nKF9fbXNnKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbHNlCi0rICAgICAgY29uc3QgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9fZGZhdWx0LmNfc3RyKCkpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbmRpZgotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHdzdHJpbmcKLSsgICAgbWVzc2FnZXM8d2NoYXJfdD46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgd3N0cmluZyYgX19kZmF1bHQpIGNvbnN0Ci0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIF9NX2NvbnZlcnRfZnJvbV9jaGFyKF9fbXNnKTsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxzZQotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZW5kaWYKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE0MjQwNzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0wLDAgKzEsMTE4IEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKLStleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKLSsjZWxzZQotKyN1bmRlZiBfX3RleHRkb21haW4KLSsjdW5kZWYgX19iaW5kdGV4dGRvbWFpbgotKyNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0rI2VuZGlmCi0rCi0rICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfZ2V0X2NfbG9jYWxlKCkpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfU19nZXRfY19uYW1lKCkpCi0rICAgICB7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCXNpemVfdCBfX3JlZnMpCi0rICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYykpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfX3MpCi0rICAgICB7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKyAgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0rCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0rICAgIHsKLSsgICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7Ci0rICAgIH0KLSsKLSsgIC8vIFZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6fm1lc3NhZ2VzKCkKLSsgICAgewotKyAgICAgIGlmIChfTV9uYW1lX21lc3NhZ2VzICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdHlwZW5hbWUgbWVzc2FnZXM8X0NoYXJUPjo6Y2F0YWxvZwotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19vcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLAotKwkJCSAgICAgIGNvbnN0IGxvY2FsZSYpIGNvbnN0Ci0rICAgIHsKLSsgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSsgICAgICAvLyBiZSB1c2VkLgotKyAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdm9pZAotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19jbG9zZShjYXRhbG9nKSBjb25zdAotKyAgICB7IH0KLSsKLSsgICAvLyBtZXNzYWdlc19ieW5hbWUKLSsgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlc19ieW5hbWU8X0NoYXJUPjo6bWVzc2FnZXNfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgIDogbWVzc2FnZXM8X0NoYXJUPihfX3JlZnMpCi0rICAgICB7Ci0rICAgICAgIGlmICh0aGlzLT5fTV9uYW1lX21lc3NhZ2VzICE9IGxvY2FsZTo6ZmFjZXQ6Ol9TX2dldF9jX25hbWUoKSkKLSsJIGRlbGV0ZSBbXSB0aGlzLT5fTV9uYW1lX21lc3NhZ2VzOwotKyAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKLSsgICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgIHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJIHsKLSsJICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rCSAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcywgX19zKTsKLSsJIH0KLSsgICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWE1MjczMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNjkyIEBACi0rLy8gc3RkOjptb25leXB1bmN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi42LjMuMiAgbW9uZXlwdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBvcHRpbWl6ZSB0aGlzIGZvciB1Y2xpYmMKLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci0rICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVlCi0rICBtb25leV9iYXNlOjpwYXR0ZXJuCi0rICBtb25leV9iYXNlOjpfU19jb25zdHJ1Y3RfcGF0dGVybihjaGFyIF9fcHJlY2VkZXMsIGNoYXIgX19zcGFjZSwgY2hhciBfX3Bvc24pCi0rICB7Ci0rICAgIHBhdHRlcm4gX19yZXQ7Ci0rCi0rICAgIC8vIFRoaXMgaW5zYW5lbHkgY29tcGxpY2F0ZWQgcm91dGluZSBhdHRlbXB0cyB0byBjb25zdHJ1Y3QgYSB2YWxpZAotKyAgICAvLyBwYXR0ZXJuIGZvciB1c2Ugd2l0aCBtb255ZXB1bmN0LiBBIGNvdXBsZSBvZiBpbnZhcmlhbnRzOgotKwotKyAgICAvLyBpZiAoX19wcmVjZWRlcykgc3ltYm9sIC0+IHZhbHVlCi0rICAgIC8vIGVsc2UgdmFsdWUgLT4gc3ltYm9sCi0rCi0rICAgIC8vIGlmIChfX3NwYWNlKSBzcGFjZQotKyAgICAvLyBlbHNlIG5vbmUKLSsKLSsgICAgLy8gbm9uZSA9PSBuZXZlciBmaXJzdAotKyAgICAvLyBzcGFjZSBuZXZlciBmaXJzdCBvciBsYXN0Ci0rCi0rICAgIC8vIEFueSBlbGVnYW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGFyZSB3ZWxjb21lLgotKyAgICBzd2l0Y2ggKF9fcG9zbikKLSsgICAgICB7Ci0rICAgICAgY2FzZSAwOgotKyAgICAgIGNhc2UgMToKLSsJLy8gMSBUaGUgc2lnbiBwcmVjZWRlcyB0aGUgdmFsdWUgYW5kIHN5bWJvbC4KLSsJX19yZXQuZmllbGRbMF0gPSBzaWduOwotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24uCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24gYW5kIGVuZHMgd2l0aCBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMjoKLSsJLy8gMiBUaGUgc2lnbiBmb2xsb3dzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIGVpdGhlciBlbmRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZW5kcyB3aXRoIHNpZ24gdGhlbiBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMzoKLSsJLy8gMyBUaGUgc2lnbiBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgc3ltYm9sLgotKwlpZiAoX19wcmVjZWRlcykKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbM10gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgNDoKLSsJLy8gNCBUaGUgc2lnbiBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkgICAgX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc2lnbjsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsJOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsJCQkJCQkgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCB0cnVlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gdHJ1ZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCBmYWxzZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0gbW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX1RIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gZmFsc2UKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgbW9uZXlwdW5jdDxjaGFyLCBmYWxzZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkJCQkJCQljb25zdCBjaGFyKikKLSsjZWxzZQotKwkJCQkJCQljb25zdCBjaGFyKiBfX25hbWUpCi0rI2VuZGlmCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsKLSsJICBjb25zdCBjaGFyKiBfX2Nwb3NzaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NuZWdzaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NjdXJyID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwotKwkgIHdjaGFyX3QqIF9fd2NzX3BzID0gMDsKLSsJICB3Y2hhcl90KiBfX3djc19ucyA9IDA7Ci0rCSAgY29uc3QgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKwkgICAgewotKwkgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsJICAgICAgc2l6ZV90IF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICAgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOwotKwotKwkgICAgICAvLyBfSW50bCA9PSB0cnVlLgotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NjdXJyKTsKLSsJICAgICAgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgd2NoYXJfdCogX193Y3MgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djcywgJl9fY2N1cnIsIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX193Y3M7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsJICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsJICAgICAgX01fZGF0YSA9IDA7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19wczsKLSsJICAgICAgZGVsZXRlIF9fd2NzX25zOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX0ZSQUNfRElHSVRTLAotKwkJCQkJCSAgICAgIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICB2b2lkCi0rICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJICAgICAgIGNvbnN0IGNoYXIqKQotKyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgIHsKLSsgICAgaWYgKCFfTV9kYXRhKQotKyAgICAgIF9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIGZhbHNlPjsKLSsKLSsgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsgICAgICAgICAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7Ci0rI2VuZGlmCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rICAgICAgICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19DVVJSRU5DWV9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICB0cnkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsgICAgICAgICAgICAgIHNpemVfdCBfX2xlbjsKLSsgICAgICAgICAgICAgIF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKyAgICAgICAgICAgICAgaWYgKF9fbGVuKQotKyAgICAgICAgICAgICAgICB7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKyAgICAgICAgICAgICAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NuZWdzaWduKTsKLSsJICAgICAgaWYgKCFfX25wb3NuKQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiKCkiOwotKwkgICAgICBlbHNlIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX25zID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfbnMsICZfX2NuZWdzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX193Y3NfbnM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsgICAgICAgICAgY2F0Y2ggKC4uLikKLSsJICAgIHsKLSsJICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgICAgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ucG9zbik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZQotKyAgICAgICAgICAmJiB3Y3NjbXAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiwgTCIoKSIpICE9IDApCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fY3Vycl9zeW1ib2w7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ODNlYzFhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIHN0ZDo6bnVtcHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjMuMS4yICBudW1wdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19udW1fYmFzZTo6X1Nfb2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19vdXRbX19pXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX291dFtfX2ldOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKERFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChUSE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsKLSsJICAvLyBDaGVjayBmb3IgTlVMTCwgd2hpY2ggaW1wbGllcyBubyBncm91cGluZy4KLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSAnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gInRydWUiOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lX3NpemUgPSA0OwotKyAgICAgIC8vIF9NX2ZhbHNlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChOT1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWUgPSAiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDxjaGFyPjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PHdjaGFyX3Q+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsKLSsJICAvLyBVc2UgY3R5cGU6OndpZGVuIGNvZGUgd2l0aG91dCB0aGUgZmFjZXQuLi4KLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV0pOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9Ci0rCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal0pOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsKLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgZWxzZQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCX0KLSsKLSsgICAgICAvLyBOQjogVGhlcmUgaXMgbm8gd2F5IHRvIGV4dGFjdCB0aGlzIGluZm8gZnJvbSBwb3NpeCBsb2NhbGVzLgotKyAgICAgIC8vIF9NX3RydWVuYW1lID0gX19ubF9sYW5naW5mb19sKFlFU1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZSA9IEwidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9IEwiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDx3Y2hhcl90Pjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKyAjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMDcwN2Q3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDQwNiBAQAotKy8vIHN0ZDo6dGltZV9nZXQsIHN0ZDo6dGltZV9wdXQgaW1wbGVtZW50YXRpb24sIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjEuMiAtIHRpbWVfZ2V0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6Ci0rICAgIF9NX3B1dChjaGFyKiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3QgY2hhciogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3N0cmZ0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0rCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyNlbHNlCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdHJmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKyAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotKyAgICAgIGlmIChfX2xlbiA9PSAwKQotKwlfX3NbMF0gPSAnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPGNoYXI+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9ICJQTSI7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9ICJNb25kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSAiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9ICJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSAiVGh1cnNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSAiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gIlN1biI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTIgPSAiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9ICJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gIldlZCI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTUgPSAiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9ICJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gIlNhdCI7Ci0rCi0rCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSAiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSAiTWFyY2giOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSAiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gIkp1bmUiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSAiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9ICJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSAiU2VwdGVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSAiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSAiRGVjZW1iZXIiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9ICJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSAiTWFyIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9ICJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSAiSnVuIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9ICJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSAiU2VwIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9ICJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSAiRGVjIjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfRF9UX0ZNVCwKLSsJCQkJCQkJICAgICBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX19ubF9sYW5naW5mb19sKEFNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fbmxfbGFuZ2luZm9fbChQTV9TVFIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX19ubF9sYW5naW5mb19sKERBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBfX25sX2xhbmdpbmZvX2woREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX19ubF9sYW5naW5mb19sKERBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBfX25sX2xhbmdpbmZvX2woREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX19ubF9sYW5naW5mb19sKERBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gX19ubF9sYW5naW5mb19sKEFCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNywgX19jbG9jKTsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gX19ubF9sYW5naW5mb19sKE1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX25sX2xhbmdpbmZvX2woTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fbmxfbGFuZ2luZm9fbChNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gX19ubF9sYW5naW5mb19sKE1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX25sX2xhbmdpbmZvX2woTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fbmxfbGFuZ2luZm9fbChNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gX19ubF9sYW5naW5mb19sKE1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEyLCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMiwgX19jbG9jKTsKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46OgotKyAgICBfTV9wdXQod2NoYXJfdCogX19zLCBzaXplX3QgX19tYXhsZW4sIGNvbnN0IHdjaGFyX3QqIF9fZm9ybWF0LAotKwkgICBjb25zdCB0bSogX190bSkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fd2NzZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHdjc2Z0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9IEwnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPHdjaGFyX3Q+OwotKwotKyN3YXJuaW5nIHdpZGUgdGltZSBzdHVmZgotKy8vICAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gTCJBTSI7Ci0rCSAgX01fZGF0YS0+X01fcG0gPSBMIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBMIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gTCJTdW5kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBMIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IEwiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9IEwiV2VkbmVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gTCJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IEwiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gTCJTYXR1cmRheSI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IEwiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IEwiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IEwiVHVlIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IEwiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IEwiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IEwiRnJpIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IEwiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBMIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSBMIkZlYnJ1YXJ5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gTCJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IEwiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IEwiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IEwiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IEwiQXVndXN0IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gTCJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBMIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBMIk5vdmVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEyID0gTCJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gTCJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gTCJGZWIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gTCJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gTCJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gTCJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gTCJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gTCJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gTCJBdWciOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gTCJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gTCJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gTCJOb3YiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gTCJEZWMiOwotKwl9Ci0rI2lmIDAKLSsgICAgICBlbHNlCi0rCXsKLSsJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOwotKwotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90ICpfX3c7IH0gX191OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dFUkFfRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1BNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX191Ll9fdzsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX191Ll9fdzsKLSsJfQotKyNlbmRpZiAvLyAwCi0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmE4ZTg1OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtMCwwICsxLDY4IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3Qoc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY2FjaGVfdHlwZSogX19jYWNoZSwgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9fY2FjaGUpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgewotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0rICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+Ojp+X190aW1lcHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfdGltZXB1bmN0ICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1pbmRleCA0MTc5N2E5Li44YTU0ODFjIDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTE1ODMwLDYgKzE1ODMwLDkgQEAgZmkKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTE2MTA4LDYgKzE2MTExLDc4IEBAICRhc19lY2hvICJuZXdsaWIiID4mNjsgfQotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1Y2xpYmMiID4mNQotKyRhc19lY2hvICJ1Y2xpYmMiID4mNjsgfQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jaGVja19tc2dmbXQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9IiRjaGVja19tc2dmbXQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9InllcyIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCIgJiYgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9Im5vIgotK2ZpCi0rZmkKLStjaGVja19tc2dmbXQ9JGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10Ci0raWYgdGVzdCAtbiAiJGNoZWNrX21zZ2ZtdCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY2hlY2tfbXNnZm10IiA+JjUKLSskYXNfZWNobyAiJGNoZWNrX21zZ2ZtdCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rCi0rCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1pbmRleCA1NWEwYjUyLi43ZDhiYjE1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1AQCAtMTAxLDcgKzEwMSw5IEBAIHVzaW5nIHN0ZDo6d21lbWNtcDsKLSB1c2luZyBzdGQ6OndtZW1jcHk7Ci0gdXNpbmcgc3RkOjp3bWVtbW92ZTsKLSB1c2luZyBzdGQ6OndtZW1zZXQ7Ci0rI2lmIF9HTElCQ1hYX0hBVkVfV0NTRlRJTUUKLSB1c2luZyBzdGQ6Ondjc2Z0aW1lOwotKyNlbmRpZgotIAotICNpZiBfR0xJQkNYWF9VU0VfQzk5X1dDSEFSCi0gdXNpbmcgc3RkOjp3Y3N0b2xkOwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhciBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotaW5kZXggZGM0Y2VmMDIuLjI1NmQxMjYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIKLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotQEAgLTE3NSw3ICsxNzUsOSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotICAgdXNpbmcgOjp3Y3Njb2xsOwotICAgdXNpbmcgOjp3Y3NjcHk7Ci0gICB1c2luZyA6Ondjc2NzcG47Ci0rI2lmIF9HTElCQ1hYX0hBVkVfV0NTRlRJTUUKLSAgIHVzaW5nIDo6d2NzZnRpbWU7Ci0rI2VuZGlmCi0gICB1c2luZyA6Ondjc2xlbjsKLSAgIHVzaW5nIDo6d2NzbmNhdDsKLSAgIHVzaW5nIDo6d2NzbmNtcDsKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI3NTAxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi1Gcm9tIGMwMWMxNGU4ZTliZTM4MmVjZDQxMjFlZTcwZjUwMDNiNGNiMGY5MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0MjozNiArMDQwMAotU3ViamVjdDogW1BBVENIIDA1LzQ2XSB1Y2xpYmMtbG9jYWxlLW5vX194Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oICAgICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNCAtLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAgMSArCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgNyAtLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAgNyAtLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAgNyArLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxOCArKysrLS0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8ICA0IC0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgMyAtLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgIDMgLS0KLSAxMCBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotaW5kZXggMmFlM2U0YS4uZTc0ZmRkZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1AQCAtNjAsNCArNjAsNDkgQEAgZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3N4ZnJtX2wpIF9fd2NzeGZybV9sOwotIGV4dGVybiAiQyIgX190eXBlb2Yod2N0eXBlX2wpIF9fd2N0eXBlX2w7Ci0gI2VuZGlmCi0gCi0rIyBkZWZpbmUgX19ubF9sYW5naW5mb19sIG5sX2xhbmdpbmZvX2wKLSsjIGRlZmluZSBfX3N0cmNvbGxfbCBzdHJjb2xsX2wKLSsjIGRlZmluZSBfX3N0cmZ0aW1lX2wgc3RyZnRpbWVfbAotKyMgZGVmaW5lIF9fc3RydG9kX2wgc3RydG9kX2wKLSsjIGRlZmluZSBfX3N0cnRvZl9sIHN0cnRvZl9sCi0rIyBkZWZpbmUgX19zdHJ0b2xkX2wgc3RydG9sZF9sCi0rIyBkZWZpbmUgX19zdHJ4ZnJtX2wgc3RyeGZybV9sCi0rIyBkZWZpbmUgX19uZXdsb2NhbGUgbmV3bG9jYWxlCi0rIyBkZWZpbmUgX19mcmVlbG9jYWxlIGZyZWVsb2NhbGUKLSsjIGRlZmluZSBfX2R1cGxvY2FsZSBkdXBsb2NhbGUKLSsjIGRlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKLSsKLSsjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rIyAgZGVmaW5lIF9faXN3Y3R5cGVfbCBpc3djdHlwZV9sCi0rIyAgZGVmaW5lIF9fdG93bG93ZXJfbCB0b3dsb3dlcl9sCi0rIyAgZGVmaW5lIF9fdG93dXBwZXJfbCB0b3d1cHBlcl9sCi0rIyAgZGVmaW5lIF9fd2NzY29sbF9sIHdjc2NvbGxfbAotKyMgIGRlZmluZSBfX3djc2Z0aW1lX2wgd2NzZnRpbWVfbAotKyMgIGRlZmluZSBfX3djc3hmcm1fbCB3Y3N4ZnJtX2wKLSsjICBkZWZpbmUgX193Y3R5cGVfbCB3Y3R5cGVfbAotKyMgZW5kaWYKLSsKLSsjZWxzZQotKyMgZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICBubF9sYW5naW5mbygoTikpCi0rIyBkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLSsjIGRlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyMgd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotKyMgZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCi0rIyBkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyMgZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLSsvLyMgZGVmaW5lIF9fdXNlbG9jYWxlID8KLSsvLwotKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsjICBkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQotKyMgIGRlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICAgdG93bG93ZXIoKEMpKQotKyMgIGRlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICAgdG93dXBwZXIoKEMpKQotKyMgIGRlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQotKy8vIyAgZGVmaW5lIF9fd2NzZnRpbWVfbChTLCBNLCBGLCBULCBMKSAgd2NzZnRpbWUoKFMpLCAoTSksIChGKSwgKFQpKQotKyMgIGRlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rIyAgZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgICB3Y3R5cGUoKFMpKQotKyMgZW5kaWYKLSsKLSAjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotaW5kZXggNTA4MWRjMS4uMjE0MzBkMCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMzksMjAgKzM5LDYgQEAKLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotLSNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLS0jZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotLSN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0tI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotLSNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotLSNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICB0ZW1wbGF0ZTw+Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotaW5kZXggZGEwN2MxZi4uNGJjYTVmMSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAotIHsKLSAgIGV4dGVybiAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKLSB9Ci0rI2RlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLWluZGV4IGMyNjY0YTcuLmVjNWMzMjkgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1AQCAtMzYsMTMgKzM2LDYgQEAKLSAjaW5jbHVkZSA8bG9jYWxlPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLS0jZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLS0jZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0tI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotaW5kZXggNzI5NGUzYS4uN2IxMjg2MSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotQEAgLTM4LDEzICszOCw2IEBACi0gI3VuZGVmIF9MSUJDCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQotLSNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQotLSNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQotLSNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLWluZGV4IDEzNTk0ZDkuLmQ3NjkzYjQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLUBAIC0zOSwxMyArMzksMTAgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLWV4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLS0JCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotICN1bmRlZiBnZXR0ZXh0Ci0tI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBkY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotICNlbHNlCi0tI3VuZGVmIGdldHRleHQKLSAjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotaW5kZXggMTQyNDA3OC4uZDg5ZGEzMyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0zNiwxNSArMzYsMTEgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLS1leHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKLS1leHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKLS0jZWxzZQotLSN1bmRlZiBfX3RleHRkb21haW4KLS0jdW5kZWYgX19iaW5kdGV4dGRvbWFpbgotLSNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLS0jZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyN1bmRlZiB0ZXh0ZG9tYWluCi0rI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSB0ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQotICNlbmRpZgotIAotICAgLy8gTm9uLXZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLUBAIC03MCw3ICs2Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotICAgICBtZXNzYWdlczxfQ2hhclQ+OjpvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBjb25zdCBsb2NhbGUmIF9fbG9jLAotIAkJCSAgIGNvbnN0IGNoYXIqIF9fZGlyKSBjb25zdAotICAgICB7Ci0tICAgICAgX19iaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOwotKyAgICAgIGJpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0gICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7Ci0gICAgIH0KLSAKLUBAIC05MCw3ICs4Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotICAgICB7Ci0gICAgICAgLy8gTm8gZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSwgYXNzdW1lIHRoZSBjYXRhbG9nIGV4aXN0cyBhbmQgY2FuCi0gICAgICAgLy8gYmUgdXNlZC4KLS0gICAgICBfX3RleHRkb21haW4oX19zLmNfc3RyKCkpOwotKyAgICAgIHRleHRkb21haW4oX19zLmNfc3RyKCkpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggYWE1MjczMS4uMmU2ZjgwYSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTQzLDEwICs0Myw2IEBACi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIENvbnN0cnVjdCBhbmQgcmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJpbmF0aW9uIG9mOgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCA4ODNlYzFhLi4yYzcwNjQyIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTQxLDkgKzQxLDYgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi0gewotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1pbmRleCBlMDcwN2Q3Li5kODQ4ZWQ1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotQEAgLTQwLDkgKzQwLDYgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi0gewotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NWE0ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSBlN2E0NzYwZmI0MDAwOGNhZTMzZTZmYzdkYzRjZmVmNmMyZmQ1ZjkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDU6NTcgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi80Nl0gdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyB8ICA0ICsrLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICB8IDEzICsrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCAyZTZmODBhLi4zMWViYjlmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBzdGQKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0tIyBlbHNlCi0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotICMgZW5kaWYKLUBAIC01NTYsNyArNTU2LDcgQEAgbmFtZXNwYWNlIHN0ZAotICMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLS0jIGVsc2UKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0gIyBlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCAyYzcwNjQyLi5kNWM4OTYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTEyNywxMiArMTI3LDI1IEBAIG5hbWVzcGFjZSBzdGQKLSAJewotIAkgIC8vIE5hbWVkIGxvY2FsZS4KLSAJICAvLyBOQjogSW4gdGhlIEdOVSBtb2RlbCB3Y2hhcl90IGlzIGFsd2F5cyAzMiBiaXQgd2lkZS4KLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggdGhpcy4uLiBzaG91bGQgYmUgbnVtZXJpYwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSAJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotIAkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKLSAKLSAJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7Ci0rI2VuZGlmCi0gCi0gCSAgaWYgKF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPT0gTCdcMCcpCi0gCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3M2U1OTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQyICswLDAgQEAKLUZyb20gOGQ1M2EzOGEzMDM4MTA0ZTY4MzBlY2VhNWU0YmVhZGNlNTQ0NTdjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ2OjU4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvNDZdIHVjbGliYy1sb2NhbGUtdXBkYXRlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oICAgICAgfCAgMyArCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCA3NCArKysrKysrKysrLS0tLS0tLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCA0MiArKysrKystLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyB8IDUxICsrKysrKysrKysrLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggICAgICAgIHwgMTIgKystLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgMzQgKysrKysrLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgIDUgKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8IDE4ICsrKystLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCAgIHwgMTcgKysrLS0KLSA5IGZpbGVzIGNoYW5nZWQsIDE1OCBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotaW5kZXggZTc0ZmRkZi4uOTcxYTZiNCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1AQCAtMzEsNiArMzEsOSBAQAotIAotICNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgotICNpbmNsdWRlIDxjbG9jYWxlPgotKyNpbmNsdWRlIDxjc3RkbGliPgotKyNpbmNsdWRlIDxjc3RyaW5nPgotKyNpbmNsdWRlIDxjc3RkZGVmPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGNsZWFuIHRoaXMgdXAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLWluZGV4IDIxNDMwZDAuLjFiOWQ4ZTEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTM5LDIzICszOSwyMCBAQAotICNpbmNsdWRlIDxsYW5naW5mby5oPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLW5hbWVzcGFjZSBzdGQKLS17Ci0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIHRlbXBsYXRlPD4KLSAgICAgdm9pZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGZsb2F0JiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGZsb2F0IF9fZiA9IF9fc3RydG9mX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0tICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotLQkgICAgX192ID0gX19mOwotLQkgIGVsc2UKLS0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotLQl9Ci0rICAgICAgY2hhciogX19zYW5pdHk7Ci0rICAgICAgZXJybm8gPSAwOwotKyAgICAgIGZsb2F0IF9fZiA9IF9fc3RydG9mX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fZjsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTw+Ci1AQCAtNjMsMTYgKzYwLDEzIEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotIAkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotICAgICB7Ci0tICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0tCXsKLS0JICBjaGFyKiBfX3Nhbml0eTsKLS0JICBlcnJubyA9IDA7Ci0tCSAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0tICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotLQkgICAgX192ID0gX19kOwotLQkgIGVsc2UKLS0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotLQl9Ci0rICAgICAgY2hhciogX19zYW5pdHk7Ci0rICAgICAgZXJybm8gPSAwOwotKyAgICAgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwlfX3YgPSBfX2Q7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdGVtcGxhdGU8PgotQEAgLTgwLDE2ICs3NCwxMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgbG9uZyBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotIAkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotICAgICB7Ci0tICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0tCXsKLS0JICBjaGFyKiBfX3Nhbml0eTsKLS0JICBlcnJubyA9IDA7Ci0tCSAgbG9uZyBkb3VibGUgX19sZCA9IF9fc3RydG9sZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fbGQ7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgbG9uZyBkb3VibGUgX19sZCA9IF9fc3RydG9sZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwlfX3YgPSBfX2xkOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHZvaWQKLUBAIC0xMTAsMTcgKzEwMSwxOCBAQCBuYW1lc3BhY2Ugc3RkCi0gICB2b2lkCi0gICBsb2NhbGU6OmZhY2V0OjpfU19kZXN0cm95X2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSAgIHsKLS0gICAgaWYgKF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSsgICAgaWYgKF9fY2xvYyAmJiBfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCi0gICAgICAgX19mcmVlbG9jYWxlKF9fY2xvYyk7Ci0gICB9Ci0gCi0gICBfX2NfbG9jYWxlCi0gICBsb2NhbGU6OmZhY2V0OjpfU19jbG9uZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICB7IHJldHVybiBfX2R1cGxvY2FsZShfX2Nsb2MpOyB9Ci0tfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tbmFtZXNwYWNlIF9fZ251X2N4eAotLXsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi0rCi0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKF9fZ251X2N4eCkKLSsKLSAgIGNvbnN0IGNoYXIqIGNvbnN0IGNhdGVnb3J5X25hbWVzWzYgKyBfR0xJQkNYWF9OVU1fQ0FURUdPUklFU10gPQotICAgICB7Ci0gICAgICAgIkxDX0NUWVBFIiwKLUBAIC0xMzgsOSArMTMwLDExIEBAIG5hbWVzcGFjZSBfX2dudV9jeHgKLSAgICAgICAiTENfSURFTlRJRklDQVRJT04iCi0gI2VuZGlmCi0gICAgIH07Ci0tfQotIAotLW5hbWVzcGFjZSBzdGQKLS17Ci0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotKwotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICBjb25zdCBjaGFyKiBjb25zdCogY29uc3QgbG9jYWxlOjpfU19jYXRlZ29yaWVzID0gX19nbnVfY3h4OjpjYXRlZ29yeV9uYW1lczsKLS19ICAvLyBuYW1lc3BhY2Ugc3RkCi0rCi0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLWluZGV4IDRiY2E1ZjEuLjY0YTZkNDYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC0zOSwyMSArMzksMjMgQEAKLSAjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0gCi0gI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzdHJsZW4KLS0jaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnNucHJpbnRmIG9yIHN0ZDo6c3ByaW50ZgotKyNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6dnNucHJpbnRmIG9yIHN0ZDo6dnNwcmludGYKLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4JCS8vIEZvciBjb2RlY3Z0Ci0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IHRoaXMKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9JQ09OVgotICNpbmNsdWRlIDxpY29udi5oPgkJLy8gRm9yIGNvZGVjdnQgdXNpbmcgaWNvbnYsIGljb252X3QKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLS0jaW5jbHVkZSA8bGliaW50bC5oPiAJCS8vIEZvciBtZXNzYWdlcwotKyNpZmRlZiBIQVZFX0xJQklOVExfSAotKyNpbmNsdWRlIDxsaWJpbnRsLmg+CQkvLyBGb3IgbWVzc2FnZXMKLSAjZW5kaWYKLSsjaW5jbHVkZSA8Y3N0ZGFyZz4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyB3aGF0IGlzIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSBmb3IKLSsvLyBwc206IHVzZWQgaW4gb3MvZ251LWxpbnV4L2N0eXBlX25vbmlubGluZS5oCi0gI2VuZGlmCi0gI2RlZmluZSBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgMQotIAotQEAgLTc4LDIzICs4MCwyNSBAQCBuYW1lc3BhY2Ugc3RkCi0gI2Vsc2UKLSAgIHR5cGVkZWYgaW50KgkJCV9fY19sb2NhbGU7Ci0gI2VuZGlmCi0tCi0tICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBfVHYgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0tICAvLyBzdHJpbmcuICBJZiBzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0tICAvLyB0aGUgdW5zYWZlIHNwcmludGYgd2hpY2gsIGluIGdlbmVyYWwsIGNhbiBiZSBkYW5nZXJvdXMgYW5kIHNob3VsZAotKyAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgotKyAgLy8gc3RyaW5nLiAgSWYgdnNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLSsgIC8vIHRoZSB1bnNhZmUgdnNwcmludGYgd2hpY2gsIGluIGdlbmVyYWwsIGNhbiBiZSBkYW5nZXJvdXMgYW5kIHNob3VsZAotICAgLy8gYmUgYXZvaWRlZC4KLS0gIHRlbXBsYXRlPHR5cGVuYW1lIF9Udj4KLS0gICAgaW50Ci0tICAgIF9fY29udmVydF9mcm9tX3YoY2hhciogX19vdXQsCi0tCQkgICAgIGNvbnN0IGludCBfX3NpemUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSwKLS0JCSAgICAgY29uc3QgY2hhciogX19mbXQsCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0tCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYywgaW50IF9fcHJlYykKLSsgICAgaW5saW5lIGludAotKyAgICBfX2NvbnZlcnRfZnJvbV92KGNvbnN0IF9fY19sb2NhbGUmCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotKwlfX2Nsb2MgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKQotKyNlbmRpZgotKwkJICAgICAsCi0rCQkgICAgIGNoYXIqIF9fb3V0LAotKwkJICAgICBjb25zdCBpbnQgX19zaXplLAotKwkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwgLi4uKQotICAgICB7Ci0rICAgICAgdmFfbGlzdCBfX2FyZ3M7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCi0gICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19jbG9jKTsKLSAjZWxzZQotLQkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYykKLS0gICAgewotICMgaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gICAgICAgY2hhciogX19vbGQgPSBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotICAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19vbGQpICsgMV07Ci1AQCAtMTAzLDcgKzEwNyw5IEBAIG5hbWVzcGFjZSBzdGQKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0tICAgICAgY29uc3QgaW50IF9fcmV0ID0gc3RkOjpzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19wcmVjLCBfX3YpOwotKyAgICAgIHZhX3N0YXJ0KF9fYXJncywgX19mbXQpOwotKyAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6dnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX2FyZ3MpOwotKyAgICAgIHZhX2VuZChfX2FyZ3MpOwotIAotICNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotICAgICAgIF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19vbGQpOwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLWluZGV4IDdiMTI4NjEuLjEzZTAxMWQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0zMywxNiArMzMsMjAgQEAKLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIAotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAjZGVmaW5lIF9MSUJDCi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjdW5kZWYgX0xJQkMKLSsjZWxzZQotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi0gICAvLyB2YXJpb3VzIC9jb25maWcvb3MvKiBmaWxlcy4KLS0gIHRlbXBsYXRlPD4KLSAgICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotICAgICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpCi0gICAgIHsKLUBAIC01Nyw2ICs2MSw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjZW5kaWYKLSAJfQotICAgICB9Ci0rICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6fmN0eXBlX2J5bmFtZSgpCi0rICAgIHsgfQotIAotICNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotICAgY3R5cGU8d2NoYXJfdD46Ol9fd21hc2tfdHlwZQotQEAgLTEzOCwxNyArMTQ0LDMzIEBAIG5hbWVzcGFjZSBzdGQKLSAgIGN0eXBlPHdjaGFyX3Q+OjoKLSAgIGRvX2lzKG1hc2sgX19tLCB3Y2hhcl90IF9fYykgY29uc3QKLSAgIHsKLS0gICAgLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLS0gICAgLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rICAgIC8vIFRoZSBjYXNlIG9mIF9fbSA9PSBjdHlwZV9iYXNlOjpzcGFjZSBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LAotKyAgICAvLyBkdWUgdG8gaXRzIHVzZSBpbiBtYW55IGlzdHJlYW0gZnVuY3Rpb25zLiAgVGhlcmVmb3JlIHdlIGRlYWwgd2l0aAotKyAgICAvLyBpdCBmaXJzdCwgZXhwbG9pdGluZyB0aGUga25vd2xlZGdlIHRoYXQgb24gR05VIHN5c3RlbXMgX01fYml0WzVdCi0rICAgIC8vIGlzIHRoZSBtYXNrIGNvcnJlc3BvbmRpbmcgdG8gY3R5cGVfYmFzZTo6c3BhY2UuICBOQjogYW4gZW5jb2RpbmcKLSsgICAgLy8gY2hhbmdlIHdvdWxkIG5vdCBhZmZlY3QgY29ycmVjdG5lc3MhCi0rCi0gICAgIGJvb2wgX19yZXQgPSBmYWxzZTsKLS0gICAgY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLS0gICAgZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQotLSAgICAgIGlmIChfX20gJiBfTV9iaXRbX19iaXRjdXJdCi0tCSAgJiYgX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0tCXsKLS0JICBfX3JldCA9IHRydWU7Ci0tCSAgYnJlYWs7Ci0tCX0KLSsgICAgaWYgKF9fbSA9PSBfTV9iaXRbNV0pCi0rICAgICAgX19yZXQgPSBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1s1XSwgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICBlbHNlCi0rICAgICAgewotKwkvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKwkvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsJY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLSsJZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQotKwkgIGlmIChfX20gJiBfTV9iaXRbX19iaXRjdXJdKQotKwkgICAgewotKwkgICAgICBpZiAoX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0rCQl7Ci0rCQkgIF9fcmV0ID0gdHJ1ZTsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKF9fbSA9PSBfTV9iaXRbX19iaXRjdXJdKQotKwkJYnJlYWs7Ci0rCSAgICB9Ci0rICAgICAgfQotKwotICAgICByZXR1cm4gX19yZXQ7Ci0gICB9Ci0gCi1AQCAtMjkwLDQgKzMxMiw1IEBAIG5hbWVzcGFjZSBzdGQKLSAjZW5kaWYKLSAgIH0KLSAjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0tfQotKwotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotaW5kZXggZDg5ZGEzMy4uMDY3NjU3YSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC01MywxMiArNTMsMTYgQEAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSAgICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0gCQkJCXNpemVfdCBfX3JlZnMpCi0tICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYykpLAotLSAgICAgX01fbmFtZV9tZXNzYWdlcyhfX3MpCi0rICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKE5VTEwpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhOVUxMKQotICAgICAgewotLSAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKLS0gICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0ZDo6c3RybGVuKF9fcykgKyAxOwotKyAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW19fbGVuXTsKLSsgICAgICAgc3RkOjptZW1jcHkoX190bXAsIF9fcywgX19sZW4pOwotICAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX190bXA7Ci0rCi0rICAgICAgIC8vIExhc3QgdG8gYXZvaWQgbGVha2luZyBtZW1vcnkgaWYgbmV3IHRocm93cy4KLSsgICAgICAgX01fY19sb2NhbGVfbWVzc2FnZXMgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOwotICAgICAgfQotIAotICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IDMxZWJiOWYuLjc2NzliOWMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC0zMyw5ICszMywxNCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLUBAIC0yMDYsNyArMjExLDcgQEAgbmFtZXNwYWNlIHN0ZAotIAkgIH0KLSAJYnJlYWs7Ci0gICAgICAgZGVmYXVsdDoKLS0JOwotKwlfX3JldCA9IHBhdHRlcm4oKTsKLSAgICAgICB9Ci0gICAgIHJldHVybiBfX3JldDsKLSAgIH0KLUBAIC0zOTAsNyArMzk1LDkgQEAgbmFtZXNwYWNlIHN0ZAotIAkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0gCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0tCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgCSAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0gCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKLSAjZW5kaWYKLSAKLUBAIC00NzcsOCArNDg0LDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgICAgIGZyZWUoX19vbGQpOwotKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAJICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47Ci0gCSAgICB9Ci1AQCAtNDk4LDggKzUwNSw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICBmcmVlKF9fb2xkKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAl9Ci0gICAgIH0KLUBAIC01NDUsOCArNTUyLDExIEBAIG5hbWVzcGFjZSBzdGQKLSAJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSAjZWxzZQotIAkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotLQkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLS0JICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyAgICAgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSsgICAgICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSsgICAgICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKLSAjZW5kaWYKLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLUBAIC02MzMsOCArNjQzLDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgICAgIGZyZWUoX19vbGQpOwotKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAgICAgICAgICAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotIAkgICAgfQotQEAgLTY1Myw4ICs2NjMsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgZnJlZShfX29sZCk7Ci0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IGQ1Yzg5NjEuLjhhZTg5NjkgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMzMsOSArMzMsMTQgQEAKLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIAotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAjZGVmaW5lIF9MSUJDCi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjdW5kZWYgX0xJQkMKLSsjZWxzZQotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLWluZGV4IGQ4NDhlZDUuLmYyNGQ1M2UgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtNTMsMTEgKzUzLDE0IEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3N0cmZ0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0gCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotICNlbHNlCi0tICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSsgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdHJmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0tICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLSAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0gICAgICAgaWYgKF9fbGVuID09IDApCi1AQCAtMjA3LDExICsyMTAsMTQgQEAgbmFtZXNwYWNlIHN0ZAotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fd2NzZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSAJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0gI2Vsc2UKLS0gICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0gICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHdjc2Z0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLS0gICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICAgICBpZiAoX19sZW4gPT0gMCkKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLWluZGV4IGJhOGU4NTguLjE2NjVkZGUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotQEAgLTUwLDEyICs1MCwyMSBAQAotICAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAotIAkJCQkgICAgIHNpemVfdCBfX3JlZnMpCi0gICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShOVUxMKSwgX01fY19sb2NhbGVfdGltZXB1bmN0KE5VTEwpLAotLSAgICBfTV9uYW1lX3RpbWVwdW5jdChfX3MpCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KE5VTEwpCi0gICAgIHsKLS0gICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKLS0gICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6OnN0cmxlbihfX3MpICsgMTsKLSsgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW19fbGVuXTsKLSsgICAgICBzdGQ6Om1lbWNweShfX3RtcCwgX19zLCBfX2xlbik7Ci0gICAgICAgX01fbmFtZV90aW1lcHVuY3QgPSBfX3RtcDsKLS0gICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOwotKwotKyAgICAgIHRyeQotKwl7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY2xvYyk7IH0KLSsgICAgICBjYXRjaCguLi4pCi0rCXsKLSsJICBkZWxldGUgW10gX01fbmFtZV90aW1lcHVuY3Q7Ci0rCSAgX190aHJvd19leGNlcHRpb25fYWdhaW47Ci0rCX0KLSsKLSAgICAgfQotIAotICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDEtc3NwX25vbnNoYXJlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDQ1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDEtc3NwX25vbnNoYXJlZC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU1MWE1ZGI3YWNiNTZlMDg1YTEwMWYxYzIyMmQ1MWIyYzFiMDM5YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK0RhdGU6IFNhdCwgNyBOb3YgMjAxNSAxNDo1ODo0MCArMDAwMAorU3ViamVjdDogW1BBVENIIDQxLzQ2XSBzc3Bfbm9uc2hhcmVkCisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBDb25maWd1cmF0aW9uXQorCisgZ2NjL2djYy5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDI4MTI4MTkuLjlkZTk2ZWUgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTg2Myw3ICs4NjMsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgI2lmbmRlZiBMSU5LX1NTUF9TUEVDCisgI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorICNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCistCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0On0iCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorICNlbHNlCisgI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKyAJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaAppbmRleCBlZDZjZDY5Li42YjVkYTAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApAQCAtMzEsNyArMzEsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFJlamVjdGVkCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAogCiAgZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICB8IDQgKystLQogIGxpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgfCA2ICsrKy0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDU2LUxSQS1QUjcwOTA0LXJlbGF4LXRoZS1yZXN0cmljdGlvbi1vbi1zdWJyZWctcmVsb2FkLWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNTYtTFJBLVBSNzA5MDQtcmVsYXgtdGhlLXJlc3RyaWN0aW9uLW9uLXN1YnJlZy1yZWxvYWQtZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFmMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDU2LUxSQS1QUjcwOTA0LXJlbGF4LXRoZS1yZXN0cmljdGlvbi1vbi1zdWJyZWctcmVsb2FkLWYucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBhNTgyYjBhNTNkMWRjODYwNGEyMDEzNDhiOTljYThkZTQ4Nzg0ZTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogaml3YW5nIDxqaXdhbmdAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogVGh1LCAxMiBNYXkgMjAxNiAxNzowMDo1MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBbTFJBXSBQUjcwOTA0LCByZWxheCB0aGUgcmVzdHJpY3Rpb24gb24gc3VicmVnIHJlbG9hZCBmb3IKKyB3aWRlIG1vZGUKKworMjAxNi0wNS0xMiAgSmlvbmcgV2FuZyAgPGppb25nLndhbmdAYXJtLmNvbT4KKworZ2NjLworICBQUiBydGwtb3B0aW1pemF0aW9uLzcwOTA0CisgICogbHJhLWNvbnN0cmFpbnQuYyAocHJvY2Vzc19hZGRyX3JlZyk6IFJlbGF4IHRoZSByZXN0cmljdGlvbiBvbgorICBzdWJyZWcgcmVsb2FkIGZvciB3aWRlIG1vZGUuCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIzNjE4MSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGdjYy9scmEtY29uc3RyYWludHMuYyB8IDE2ICsrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2xyYS1jb25zdHJhaW50cy5jIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitpbmRleCBmOTZmZDQ1OGUyMy4uNzNmYjcyYTJlYTUgMTAwNjQ0CistLS0gYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKKysrKyBiL2djYy9scmEtY29uc3RyYWludHMuYworQEAgLTEzMjYsNyArMTMyNiwyMSBAQCBwcm9jZXNzX2FkZHJfcmVnIChydHggKmxvYywgYm9vbCBjaGVja19vbmx5X3AsIHJ0eF9pbnNuICoqYmVmb3JlLCBydHhfaW5zbiAqKmFmdAorIAorICAgc3VicmVnX3AgPSBHRVRfQ09ERSAoKmxvYykgPT0gU1VCUkVHOworICAgaWYgKHN1YnJlZ19wKQorLSAgICBsb2MgPSAmU1VCUkVHX1JFRyAoKmxvYyk7CisrICAgIHsKKysgICAgICByZWcgPSBTVUJSRUdfUkVHICgqbG9jKTsKKysgICAgICBtb2RlID0gR0VUX01PREUgKHJlZyk7CisrCisrICAgICAgLyogRm9yIG1vZGUgd2l0aCBzaXplIGJpZ2dlciB0aGFuIHB0cl9tb2RlLCB0aGVyZSB1bmxpa2VseSB0byBiZSAibW92IgorKwkgYmV0d2VlbiB0d28gcmVnaXN0ZXJzIHdpdGggZGlmZmVyZW50IGNsYXNzZXMsIGJ1dCB0aGVyZSBub3JtYWxseSB3aWxsCisrCSBiZSAibW92IiB3aGljaCB0cmFuc2ZlcnMgZWxlbWVudCBvZiB2ZWN0b3IgcmVnaXN0ZXIgaW50byB0aGUgZ2VuZXJhbAorKwkgcmVnaXN0ZXIsIGFuZCB0aGlzIG5vcm1hbGx5IHdpbGwgYmUgYSBzdWJyZWcgd2hpY2ggc2hvdWxkIGJlIHJlbG9hZGVkCisrCSBhcyBhIHdob2xlLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgbGlrZWx5IHRvIGJlIHRyaWdnZXJlZCB3aGVuCisrCSAtZm5vLXNwbGl0LXdpZGUtdHlwZXMgc3BlY2lmaWVkLiAgKi8KKysgICAgICBpZiAoaW5fY2xhc3NfcCAocmVnLCBjbCwgJm5ld19jbGFzcykKKysJICB8fCBHRVRfTU9ERV9TSVpFIChtb2RlKSA8PSBHRVRfTU9ERV9TSVpFIChwdHJfbW9kZSkpCisrICAgICAgIGxvYyA9ICZTVUJSRUdfUkVHICgqbG9jKTsKKysgICAgfQorKworICAgcmVnID0gKmxvYzsKKyAgIG1vZGUgPSBHRVRfTU9ERSAocmVnKTsKKyAgIGlmICghIFJFR19QIChyZWcpKQorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDczODI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMKQEAgLTAsMCArMSwxMjggQEAKK3JlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKKworIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCisKK1BWID0gIjcuMy4wIgorCisjIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQorCitCSU5WID0gIjcuMy4wIgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zOiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zL2JhY2twb3J0OiIKKworREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIiCitOQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSIKKworTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCisiCisKKyNSRUxFQVNFID0gIjctMjAxNzA1MDQiCitCQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKKyNTUkNSRVYgPSAiZjdjZjc5OGI3M2ZkMWEwNzA5OGY5YTQ5MGRlZWMxZTJhMzZlMGJlZCIKKyNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgorI0JBU0VVUkkgPz0gImh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS9nY2Mvc25hcHNob3RzLyR7UkVMRUFTRX0vZ2NjLSR7UkVMRUFTRX0udGFyLmJ6MiIKKworU1JDX1VSSSA9ICJcCisgICAgICAgICAgICR7QkFTRVVSSX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtYzk5LXNucHJpbnRmLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLURpc2FibGUtc2R0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWV4cG9ydC1DUFAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMy1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzQtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM5LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDAtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDQtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0NS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0OC1nY2MtRW5hYmxlLXN0YXRpYy1QSUUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoIFwKKyAgICAgICAgICAgJHtCQUNLUE9SVFN9IFwKKyIKK0JBQ0tQT1JUUyA9ICJcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTJkYTIxNjgwZjI3NjI0ZjNhODcwNTVjNGJhNWFmMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzJjYTZhZTA0NjM2YWRiYjQzMGU4NjVhMTQ1MWFkZjY5NzlhYjQ0Y2ExYzgzNzRmNjFmYmE2NTY0NWNlMTVjIgorCitTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9naXQiCitCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCisKKyMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCitGT1JUUkFOID0gIiIKK0pBVkEgPSAiIgorCitMVE8gPSAiLS1lbmFibGUtbHRvIgorCitFWFRSQV9PRUNPTkZfQkFTRSA9ICJcCisgICAgJHtMVE99IFwKKyAgICAtLWVuYWJsZS1saWJzc3AgXAorICAgIC0tZW5hYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgLS13aXRoLWxpbmtlci1oYXNoLXN0eWxlPSR7TElOS0VSX0hBU0hfU1RZTEV9IFwKKyAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAorICAgIC0td2l0aC1wcGw9bm8gXAorICAgIC0td2l0aC1jbG9vZz1ubyBcCisgICAgLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZSBcCisgICAgLS1lbmFibGUtY2hlYWRlcnM9Y19nbG9iYWwgXAorICAgIC0td2l0aG91dC1pc2wgXAorIgorCitFWFRSQV9PRUNPTkZfSU5JVElBTCA9ICJcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0tZGlzYWJsZS1saWJnb21wIFwKKyAgICAtLWRpc2FibGUtbGliaXRtIFwKKyAgICAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgLS1kaXNhYmxlLWx0byBcCisgICAgLS1kaXNhYmxlLXBsdWdpbiBcCisgICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCisgICAgLS13aXRob3V0LWlzbCBcCisgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllcyBcCisiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFmMWM3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMmZjZjFlMjNlZjRiMmE1YzkzNTI2ZjEyMjEyYWE4OTI1OTUyNjFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvNDddIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCAzMmEzODYzM2FkOC4uYjQ3NjA5NTIwODUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTc0NzIsNyArNzQ3Miw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDEyMzc3NDk5Mjk1Li4xNzZlYmI5MjFlZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzA2NSw3ICszMDY1LDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOC1jOTktc25wcmludGYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJkNTYyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOC1jOTktc25wcmludGYucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA3MzJmMTBlZWFkNjE4MzBhOGFlZTFiZjM4Y2NlODkyZGEyNWMzNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDk6MDMgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC80N10gYzk5LXNucHJpbnRmCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCitpbmRleCA0Mzk2OTg5MmFhMi4uMTIxNDg0NTc5MDkgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KKysrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbworQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2Ugc3RkCisgICB1c2luZyA6OnZzcHJpbnRmOworIH0gLy8gbmFtZXNwYWNlIHN0ZAorIAorLSNpZiBfR0xJQkNYWF9VU0VfQzk5X1NURElPCisrI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8gfHwgZGVmaW5lZChfX1VDTElCQ19fKQorIAorICN1bmRlZiBzbnByaW50ZgorICN1bmRlZiB2ZnNjYW5mCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDktZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDktZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxM2VkNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApAQCAtMCwwICsxLDE5MiBAQAorRnJvbSA0NzkxYTBhMGY0NTk1ZDBhMTg5NzRmNGU4NWE3NTlhMDc4OTk0M2RiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS80N10gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uOiBjb2Rlc291cmNlcnldCistLS0KKyBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKworIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKKyBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKworIGdjYy9pbmNwYXRoLmMgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCisgNyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CitpbmRleCBhNWMzYWVhYTMzNi4uZjAyZmU2NjM2N2UgMTAwNjQ0CistLS0gYS9nY2MvY29tbW9uLm9wdAorKysrIGIvZ2NjL2NvbW1vbi5vcHQKK0BAIC02NjIsNiArNjYyLDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgorIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCisgV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KKyAKKytXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKKytXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCisrCisgV3NoYWRvdworIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKKyBXYXJuIHdoZW4gb25lIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4gIFNhbWUgYXMgLVdzaGFkb3c9Z2xvYmFsLgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCitpbmRleCBiZjJhYTdiMmU3ZC4uYjEyMDM5ODdlMTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmluCisrKysgYi9nY2MvY29uZmlnLmluCitAQCAtMTk0LDYgKzE5NCwxMiBAQAorICNlbmRpZgorIAorIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KKysjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAorKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyNlbmRpZgorKworKworIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKKyAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCisgICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGM4MjNmZmU2MjkwLi40ODk4ZjA0ZmE2YiAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC05NDksNiArOTQ5LDcgQEAgd2l0aF9zeXN0ZW1femxpYgorIGVuYWJsZV9tYWludGFpbmVyX21vZGUKKyBlbmFibGVfbGlua19tdXRleAorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX3BsdWdpbgorIGVuYWJsZV9ob3N0X3NoYXJlZAorIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0CitAQCAtMTY5MSw2ICsxNjkyLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5CisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAorICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKKyAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0CitAQCAtMjkzNDcsNiArMjkzNTAsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgCisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGFjZmU5Nzk3Mzg5Li45ZGMxZGM3ZmM5NiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC02MTAxLDYgKzYxMDEsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKKyAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAorKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQorK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAorKyAgICAgICAgICAgWzFdLAorKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgQUNfU1VCU1Qoc3ViZGlycykKKyBBQ19TVUJTVChzcmNkaXIpCitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IDY4YTU1OGU5OTkyLi4wNjBjZDcxNjljNiAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0yOTgsNiArMjk4LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1XcGFja2VkICAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQgIC1XcGFkZGVkIEBnb2wKKyAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCisgLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCisrLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKKyAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAorIC1Xbm8tcHJhZ21hcyAgLVdyZWR1bmRhbnQtZGVjbHMgIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAorIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKK0BAIC01Mzk1LDYgKzUzOTYsMTQgQEAgbWFkZSB1cCBvZiBkYXRhIG9ubHkgYW5kIHRodXMgcmVxdWlyZXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQuICBCdXQsIGZvcgorIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjayB0byBiZQorIG1hZGUgZXhlY3V0YWJsZSBpbiBvcmRlciBmb3IgdGhlIHByb2dyYW0gdG8gd29yayBwcm9wZXJseS4KKyAKKytAaXRlbSAtV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAb3BpbmRleCBXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbQorK2RpcmVjdG9yaWVzIHN1Y2ggYXMgQGZpbGV7L3Vzci9pbmNsdWRlfSB3aGVuIGNyb3NzIGNvbXBpbGluZy4gIFRoaXMKKytvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaAorK2RpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QgaGVhZGVycyBhbmQgbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0Cisrc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgorKworIEBpdGVtIC1XZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXbm8tZmxvYXQtZXF1YWwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGM0ODE3OGYuLmY2M2Q1M2QgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEwMjksNiArMTAyOSw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKKyAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCisgICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVTfX0gXAorKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorICAgICAle3N0YXRpY3xuby1waWU6fSAle0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCisgICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIENIS1BfU1BFQyAiIFwKKyAgICAgJXtmb3BlbmFjY3xmb3Blbm1wfCU6Z3QoJXtmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiUqfSAxKTpcCitkaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKK2luZGV4IDk4ZmU1ZWM5YWIzLi5mOTBlNzRkYmQ3MyAxMDA2NDQKKy0tLSBhL2djYy9pbmNwYXRoLmMKKysrKyBiL2djYy9pbmNwYXRoLmMKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgImludGwuaCIKKyAjaW5jbHVkZSAiaW5jcGF0aC5oIgorICNpbmNsdWRlICJjcHBkZWZhdWx0LmgiCisrI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgorIAorIC8qIE1pY3Jvc29mdCBXaW5kb3dzIGRvZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgaW5vZGVzLgorICAgIFZNUyBoYXMgbm9uLW51bWVyaWMgaW5vZGVzLiAgKi8KK0BAIC0zODIsNiArMzgzLDI0IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCisgCX0KKyAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKKyAgICAgfQorKworKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKKysgICAgeworKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKKysKKysgICAgICAgZm9yIChwID0gaGVhZHNbUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKKysgICAgICAgICB7CisrICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQorKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKKysgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKKysgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKKysgICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTAtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMDZhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTAtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZTc0ZWY4NGFkNjA5YjNiNmE1YzM3ZDIwN2ZmYzNjNmU3MGQxZjAyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjAwOjM0ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvNDddIGdjYy1wb2lzb24tZGlyLWV4dGVuZAorCitBZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKK3plY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKKy91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAorYWJvcnRlZC4KKworSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKK3dhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2luY3BhdGguYyB8IDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCitpbmRleCBmOTBlNzRkYmQ3My4uYzU4M2VlNTA2MWQgMTAwNjQ0CistLS0gYS9nY2MvaW5jcGF0aC5jCisrKysgYi9nY2MvaW5jcGF0aC5jCitAQCAtMzkzLDcgKzM5Myw5IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCisgICAgICAgICAgeworICAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQorICAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQorLSAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKKyAgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCisgICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorICAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTEtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTEtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM5ZmYxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGE0MWQzYTUzYTRlMzEzYzIwODAyMzMwZDZiNWM3NTM1OGE0ZWQ4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAorU3ViamVjdDogW1BBVENIIDExLzQ3XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKKworQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KKworVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgorCitPdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6CisKKy0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KKworLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisKK0kgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgorCitCb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KKworU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBiNDc2MDk1MjA4NS4uNzJhOGJhOTRjNGUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTY3MzYsNiArNjczNiwzOCBAQCBmaQorIAorIAorIAorKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCisrIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKKysjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgorKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCisrIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCisrIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KKytpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisgIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCisgIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KKyBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMi02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMi02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2IzOTEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gM2FmOWZiYmQxNGU4MzI0MmFjMmFjYjU0YmJiNGJiNzI2ODQ1ZmQzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvNDddIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgorCitHQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQorbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cworY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KKworVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKK2FuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAorZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Citrbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCitwZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgorCitUaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAordGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCithbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQorZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbworYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCisKK1JQIDE1LzgvMTEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgfCAgNiArKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgfCAxMCArKystLS0tLS0tCisgZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgIDUgKystLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAoraW5kZXggZTQyMmM0NDJkYWUuLmNjODg1ZTI0NDU3IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorQEAgLTMyLDcgKzMyLDUgQEAKKyAjCisgY29tbWE9LAorIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQorLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAoraW5kZXggMTAwZjlkYTVlMTQuLjYwMWNkZjA4ZDA1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorQEAgLTE3LDEwICsxNyw2IEBACisgIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAorLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0CistTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCistTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKKy0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKysKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK2luZGV4IDI4MzBlZDBkODYxLi5kMDU3ZmFjZDJmZCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitAQCAtMjYsMTAgKzI2LDkgQEAKKyAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KKyAKKyBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKKy1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCisrTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KKyBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAorLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKKytNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCisgCisgcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCisgCSQoQ09NUElMRSkgJDwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMy1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEzLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQzOWJmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMy1vcHRpb25hbC1saWJzdGRjLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIDI2YTU4ZDA1ODQ0Mjc0OTE1ZDAxMWVkYmY5MzMwYzYxNTE2ODdiMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzQ3XSBvcHRpb25hbCBsaWJzdGRjCisKK2djYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKword2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKword2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKworb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKK2RyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgorCitBICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCitkbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgorCitSUCAyOS82LzEwCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKworIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAoraW5kZXggOWFkMmY2ZTFmY2MuLmM0ZWY3Nzk2MjgyIDEwMDY0NAorLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0CisrKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK0BAIC0xODQ4LDYgKzE4NDgsMTAgQEAgbm9zdGRpbmMrKworIEMrKyBPYmpDKysKKyBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCisgCisrbm9zdGRsaWIrKworK0RyaXZlcgorK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKKysKKyBvCisgQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCisgOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKK2RpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYworaW5kZXggZmZjYzg3Yzc5YzkuLjI4ZDhhOWNmNTMwIDEwMDY0NAorLS0tIGEvZ2NjL2NwL2crK3NwZWMuYworKysrIGIvZ2NjL2NwL2crK3NwZWMuYworQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAorICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKKyAJeworIAljYXNlIE9QVF9ub3N0ZGxpYjoKKysJY2FzZSBPUFRfbm9zdGRsaWJfXzoKKyAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKKyAJICBsaWJyYXJ5ID0gLTE7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IDA2MGNkNzE2OWM2Li44ZTJhZGMyNTY0NCAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0yMTEsNiArMjExLDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KKyAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKKyAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAorIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAorKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKKystZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAorKy1ub3N0ZGxpYisrIEBnb2wKKyAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKKyAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKKyAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2xpdGVyYWwtc3VmZml4ICAtV211bHRpcGxlLWluaGVyaXRhbmNlIEBnb2wKK0BAIC00OTYsNyArNDk5LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1zICAtc3RhdGljICAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAorIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAorIC1zdGF0aWMtbGlibXB4ICAtc3RhdGljLWxpYm1weHdyYXBwZXJzIEBnb2wKKy0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKKystc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKKyAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCisgLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQorIAorQEAgLTExNjA2LDYgKzExNjA5LDMzIEBAIGxpYnJhcnkgc3Vicm91dGluZXMuCisgY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisgCisrQGl0ZW0gLW5vc3RkbGliKysKKytAb3BpbmRleCBub3N0ZGxpYisrCisrRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCisrT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCisrCisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKKytAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcworK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCisrbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgorKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgorK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKKytmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCisrSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAorK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQorK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCisrVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQworK2xpYnJhcnkgc3Vicm91dGluZXMuCisrKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKworK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAorK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQorKworIEBpdGVtIC1waWUKKyBAb3BpbmRleCBwaWUKKyBQcm9kdWNlIGEgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCBpdC4KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDYzMTVhYTBkZDE2Li5hNWZhZmJlNTEwNyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTA0Niw2ICsxMDQ2LDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKKyAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCisgICAgICV7IW5vc3RkbGliOiV7IW5vZGVmYXVsdGxpYnM6JShsaW5rX3NzcCkgJShsaW5rX2djY19jX3NlcXVlbmNlKX19XAorKyAgICAleyFub3N0ZGxpYisrOn1cCisgICAgICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolRX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCisgI2VuZGlmCisgCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE0LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTJiNWZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE0LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDcxNmRlNWRiNjg1OWZkMWVhMjEwNzhjOTRhNDFmYWM3YTg4NWI3ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNDoyMCArMDQwMAorU3ViamVjdDogW1BBVENIIDE0LzQ3XSBnY2M6IGRpc2FibGUgTUFTS19SRUxBWF9QSUNfQ0FMTFMgYml0CisKK1RoZSBuZXcgZmVhdHVyZSBhZGRlZCBhZnRlciA0LjMuMworImh0dHA6Ly93d3cucHViYnMubmV0LzIwMDkwOS9nY2MvOTQwNDgtcGF0Y2gtYWRkLXN1cHBvcnQtZm9yLXJtaXBzamFsci5odG1sIgord2lsbCBjYXVzZSBjYzFwbHVzIGVhdCB1cCBhbGwgdGhlIHN5c3RlbSBtZW1vcnkgd2hlbiBidWlsZCB3ZWJraXQtZ3RrLgorVGhlIGZ1bmN0aW9uIG1pcHNfZ2V0X3BpY19jYWxsX3N5bWJvbCBrZWVwcyBvbiByZWN1cnNpdmVseSBjYWxsaW5nIGl0c2VsZi4KK0Rpc2FibGUgdGhpcyBmZWF0dXJlIHRvIHdhbGsgYXNpZGUgdGhlIGJ1Zy4KKworU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCA3IC0tLS0tLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA0ODk4ZjA0ZmE2Yi4uNjQwZTQ2NDM4MDUgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMjczMDMsMTMgKzI3MzAzLDYgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgZm9yIGV4cGxpY2l0IEpBTFIgcmVsb2NhdGlvbi4uLiAiID4mNjsKKyAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgICBmaQorICAgICBmaQorLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgorLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCistICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKKy0gICAgICBlbHNlCistICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKKy0gICAgICBmaQorLSAgICBmaQorICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjUKKyAkYXNfZWNobyAiJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggOWRjMWRjN2ZjOTYuLjlhMmRhZTU1YmEyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTQ2NDEsMTMgKzQ2NDEsNiBAQCB4OgorICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIEFDX01TR19SRVNVTFQoJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jKQorIAorICAgICBBQ19DQUNIRV9DSEVDSyhbbGlua2VyIGZvciAuZWhfZnJhbWUgcGVyc29uYWxpdHkgcmVsYXhhdGlvbl0sCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTUtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNjI5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTUtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDA0YTdhNjcyMzAxYmIwN2NhZWE2YTdjYWQ4Mzc4ZjYzZjFmZTMyMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAorU3ViamVjdDogW1BBVENIIDE1LzQ3XSBDT0xMRUNUX0dDQ19PUFRJT05TCisKK1RoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KK2ludm9rZSBjb2xsZWN0Mi4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggYTVmYWZiZTUxMDcuLjA1ODk2ZTE5OTI2IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC00NjU0LDYgKzQ2NTQsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCisgCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7CisgCisgICBmaXJzdF90aW1lID0gVFJVRTsKKysjaWZkZWYgSEFWRV9MRF9TWVNST09UCisrICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQorKyAgICB7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKKysgICAgICBmaXJzdF90aW1lID0gRkFMU0U7CisrICAgIH0KKysjZW5kaWYKKyAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCisgICAgIHsKKyAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNi1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNi1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTkxMjUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0Zyb20gNDcwNzFjYmQ0ZjEzZmY1YTQ5NzRmNzFmMzU5YTA0YWZjZmIxMjVkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvNDddIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KKyAke0J9CisKK1VzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAordGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCitvY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAord29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCit0bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKKworU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCisgZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCAyNDExNjcxY2VhMy4uN2I1OTBjOWJiZDMgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTUzMiw3ICs1MzIsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAorIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKKyAKKyB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAorLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACisrdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCisgVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDY0MGU0NjQzODA1Li5iNWFjMTU1MjU0MSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjE1MCw4ICsxMjE1MCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDlhMmRhZTU1YmEyLi5jYjE0NzlkMWVmNCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTIyLDggKzE5MjIsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAoraW5kZXggOWZjN2I1Y2E3MzQuLjA0YWJlY2ZlNjQ4IDEwMDY0NAorLS0tIGEvZ2NjL21rY29uZmlnLnNoCisrKysgYi9nY2MvbWtjb25maWcuc2gKK0BAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCisgICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgorIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCisgCWZvciBmaWxlIGluICIkQCI7IGRvCistCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKyAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKKyAJICAgIGVsc2UKKyAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKK0BAIC0xMDksNyArMTA5LDcgQEAgZXNhYworIAorICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KKyBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCistICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorIGZpCisgCisgIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE3LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE3LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyODMwYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA0ZmMzNWEyYmI3NjY2YTdkZTM1NTY4ZWI1ZDQ3ZjBjZTZhY2ViZTYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNy80N10gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCisKKyogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCit1c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCitkaXJlY3RvcnkuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAyICstCisgbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitpbmRleCA4MTIzOGZjYjc5Yy4uN2RlZDdhYmQ0NTYgMTAwNzU1CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorQEAgLTEyNzkyLDcgKzEyNzkyLDcgQEAgZXNhYworIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBhY19leHQ9JHthY19mY19zcmNleHQtZn0KKyBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworaW5kZXggMzdiMTJkMjk5OGYuLjYzYTQxNjZlZjYyIDEwMDY0NAorLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCisrKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKK0BAIC0yNDMsNyArMjQzLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKKyAKKyAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQorICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQorLUZDPSIkR0ZPUlRSQU4iCisrI0ZDPSIkR0ZPUlRSQU4iCisgQUNfUFJPR19GQyhnZm9ydHJhbikKKyAKKyAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE4LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE4LWNwcC1ob25vci1zeXNyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NTkwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAxYzhhMzMyNDY5Y2E0YmZlZmIxMGRmNzA3MjBlMGRjODNmZjlhNzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxOC80N10gY3BwOiBob25vciBzeXNyb290LgorCitDdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKK3ByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KK3JhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcworcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KKworVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgorCitUaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKKy1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCisKK1tZT0NUTyAjMjA3NF0KKworUlAgMjAxMi8wNC8xMworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCisgZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitpbmRleCA2YjM4M2UxZDg2ZC4uYzdjN2Q2YTU2ZWMgMTAwNjQ0CistLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCisrKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitAQCAtNjQsNSArNjQsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjKystY3BwLW91dHB1dCIsCisgICAgIiV7IU06JXshTU06JXshRTpcCistICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTJcCisrICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTJcCisgICAgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCAwNTg5NmUxOTkyNi4uYzczZDQwMjM5ODcgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEzNTEsNyArMTM1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9CisgCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAorICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAY3BwLW91dHB1dCIsCistICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKKysgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCisgICB7IkBhc3NlbWJsZXIiLAorICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE5LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTktTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDJhNDAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE5LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSAwYTNiM2NjNDVlYTdiYTgzYjQ2ZGY3NDY0YjQxYzM3N2UzOTY2ZDg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxOS80N10gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKKworTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKK3NvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KKy0tLQorIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCitpbmRleCBiOGJiNGQ2NTgyNS4uNWU0NWY0YjUxOTkgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmdjYworKysrIGIvZ2NjL2NvbmZpZy5nY2MKK0BAIC0yMDg0LDI5ICsyMDg0LDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCisgCQkJOzsKKyAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKKyAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgorIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzaXNhNjRyMiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJZXNhYworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIwLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTdiNGRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIwLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKQEAgLTAsMCArMSwyMzQgQEAKK0Zyb20gZDZjOTgzYjY4NWVlMDNlOWNmMjExODkxMDhkMzFlZDlmNzYwZmYzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjAvNDddIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCisgcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKKworVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKK3JlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKK1RoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKK0NoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCitTSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQorCitSZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQorIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQorIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTYgKysrKysrLS0tLS0tLS0tLQorIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQorIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQorIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCisgMTEgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAoraW5kZXggMmMzOWZiZTYwMWMuLjZkODhlMjFhYmUyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAorKysrIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAorQEAgLTIzLDggKzIzLDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjZGVmaW5lIEVYVFJBX1NQRUNTIFwKKyB7ICJlbGZfZHluYW1pY19saW5rZXIiLCBFTEZfRFlOQU1JQ19MSU5LRVIgfSwKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCSIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUglTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKKyAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKKyAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAoraW5kZXggYTA4Y2ZiMzQzNzcuLmZiYWM5YTlkOTk0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC02Miw4ICs2Miw4IEBACisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBhbmQgVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJLiAgKi8KKyAKKyAjdW5kZWYgIEdMSUJDX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICIvbGliL2xkLWxpbnV4LnNvLjMiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUICIvbGliL2xkLWxpbnV4LWFybWhmLnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4zIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYXJtaGYuc28uMyIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVAorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK2luZGV4IDNkNjIzNjdhZTY4Li5lOGExNjE5MTg0OSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAorQEAgLTYwLDcgKzYwLDcgQEAKKyAKKyAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAorICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAoraW5kZXggNTkxMzIxMjRkNmIuLjMzNmQxNTg2MjljIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitAQCAtMjAsNyArMjAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTiAiZWxmX2kzODYiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKK2luZGV4IGU2NWM0MDRmZjkxLi5jMzRkZWQ5ODQ4MSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKK0BAIC0yNyw5ICsyNyw5IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OWDMyICJlbGYzMl94ODZfNjQiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCitpbmRleCBiM2E5ZTg1ZTc3Zi4uMmU2ODNkMGM0MzAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbGludXguaAorQEAgLTgxLDEwICs4MSwxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cworICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKK2luZGV4IDQ0MTMyYjhlNDRkLi44MDUwNWFkOWY0OCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAorQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKKy0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCisgI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0CisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IDcxZTM1YjcwOWFkLi4zYjAwZWMwZmNmMCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitAQCAtNDEyLDE2ICs0MTIsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKKyAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgorLQorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKKyAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgorICNlbHNlCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCisgI2VuZGlmCisgCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorQEAgLTQyOSw4ICs0MjQsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKKyAgICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorIAorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCisrCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pIFwKKyAgICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK2luZGV4IGMzMDA4MzQyM2YyLi4xOTZiODI3MjVmOCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitAQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAorICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKKyAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitpbmRleCBjZTA4NDY1NmZjYS4uYmVkNjMwMGNiMmEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAorQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiAgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitpbmRleCA1NzNjZThhOWE0Yy4uNjc0OWY2YjVkOWMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK0BAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKKyAgICBkb25lLiAgKi8KKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI2lmZGVmIFNQQVJDX0JJX0FSQ0gKKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjEtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNTYyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjEtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gODBjMjQyNDdmZWQ1MmMxMjY5NzkxMDg4MDkwYmMwZmE4NTI4MDk4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvNDddIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCisKK1RoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQorYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6CisKK2hlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKKworVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQoraXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKK3dvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgorVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQorJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA3YjU5MGM5YmJkMy4uMjNjY2E3ZjBkNWEgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTM0NTksNyArMzQ1OSw3IEBAIGluc3RhbGwtcGx1Z2luOiBpbnN0YWxsZGlycyBsYW5nLmluc3RhbGwtcGx1Z2luIHMtaGVhZGVyLXZhcnMgaW5zdGFsbC1nZW5ndHlwZQorICMgV2Uga2VlcCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgZmlsZXMgaW4gY29uZmlnIG9yIGMtZmFtaWx5IGFuZCAuZGVmCisgIyBmaWxlcy4gQWxsIG90aGVyIGZpbGVzIGFyZSBmbGF0dGVuZWQgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LgorIAkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKHBsdWdpbl9pbmNsdWRlZGlyKQorLQloZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgOyBcCisrCWhlYWRlcnM9IiQoc29ydCAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSkiOyBcCisgCXNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2A7IFwKKyAJZm9yIGZpbGUgaW4gJCRoZWFkZXJzOyBkbyBcCisgCSAgaWYgWyAtZiAkJGZpbGUgXSA7IHRoZW4gXAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIyLURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIyLURpc2FibGUtc2R0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MWYxOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjItRGlzYWJsZS1zZHQucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gMzAyMWZlYzQ4NWY0NDQ3OGEzZDVmZmZiNGFkYWMxM2Q4MzFmY2RjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjIvNDddIERpc2FibGUgc2R0LgorCitXZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCitJdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQorc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCitidXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KKworUlAgMjAxMi84LzcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KKy0tLQorIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYjVhYzE1NTI1NDEuLjA4YjJmNjNjN2ZhIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI4OTY3LDEyICsyODk2NywxMiBAQCBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KKyBoYXZlX3N5c19zZHRfaD1ubworLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCistCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkKKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIworKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKysjCisrI2ZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGNiMTQ3OWQxZWY0Li4wNTgxZmU5NjNkYyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC01NzU0LDE1ICs1NzU0LDE1IEBAIGZpCisgQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCisgCisgIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgorLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKy1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorLWhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKKy0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorLWZpCistQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCisrI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKysjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKysjaGF2ZV9zeXNfc2R0X2g9bm8KKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorKyNmaQorKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKyAKKyAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KKyAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK2luZGV4IGZiN2UxMjZjMGIwLi5hMTgwNTdmZWI4OCAxMDA3NTUKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK0BAIC0yMTg1NiwxMSArMjE4NTYsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCisgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorIAorLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKysjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorIAorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKyAKKy0gIGZpCisrIyAgZmkKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitpbmRleCA4ZTk3MzUwM2JlMC4uYTQ2ZDI1ZTc0MGQgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitAQCAtMjMwLDcgKzIzMCw3IEBAIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NFU1NPUlNfT05MTgorIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NfT05MTgorIEdMSUJDWFhfQ0hFQ0tfUFRIUkVBRFNfTlVNX1BST0NFU1NPUlNfTlAKKyBHTElCQ1hYX0NIRUNLX1NZU0NUTF9IV19OQ1BVCistR0xJQkNYWF9DSEVDS19TRFRfSAorKyNHTElCQ1hYX0NIRUNLX1NEVF9ICisgCisgIyBDaGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCisgQUNfQ0hFQ0tfSEVBREVSUyhbZW5kaWFuLmggZXhlY2luZm8uaCBmbG9hdC5oIGZwLmggaWVlZWZwLmggaW50dHlwZXMuaCBcCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjMtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMy1saWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZGZiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjMtbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGU3OWE0ZjgxNjllODM2YzhkZWFiY2E1YTQ1ODg0Y2ZlMTFkMDc4NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDIzLzQ3XSBsaWJ0b29sCisKK2xpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKK3doZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KKworVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCitBcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAorZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KKworZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAordG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCisKK1JQIDIwMTIvOC8yNAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGx0bWFpbi5zaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjODVkNzAuLjAxMjFmYmE3MDdmIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKKyAKKyAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCisrICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgorKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCisrCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKyAgICAgIGZpCisgCisgICAgICAgb2xkbGlicz0KKyAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjQtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMWUxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjQtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDc0ZDhkYzQ4Y2IxODVlMzA0YzYwMDY3YjRkOGI1MDQ0N2VjMzI4ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAorU3ViamVjdDogW1BBVENIIDI0LzQ3XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCisKK1RoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCittZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAordGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKK1RoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKK2ZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KKworV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBmYmFjOWE5ZDk5NC4uNWE1MWE4YTcwOTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTg4LDEwICs4OCwxNCBAQAorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCisgICAiL2xpYi9sZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKKyAKKysvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KKysjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKKysjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgorKworIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCisgICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLworICN1bmRlZiAgTElOS19TUEVDCistI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKKysjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKKyAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKKyAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIzNDEzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIGFjNTBkYzMwMTBhNjYyMjBhZDQ4M2MwOWVmZTI3MGJiM2Y0Yzk0MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAorU3ViamVjdDogW1BBVENIIDI1LzQ3XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgorIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorCitVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KK3NvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDA4YjJmNjNjN2ZhLi42YmEzOTFlZDA2OCAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjEzMCwxMCArMTIxMzAsMjAgQEAgZG9uZQorIHRtYWtlX2ZpbGVfPQorIGZvciBmIGluICR7dG1ha2VfZmlsZX0KKyBkbworLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKy0JdGhlbgorLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorLQlmaQorKyAgY2FzZSAkZiBpbgorKyAgICAqL3QtbGludXg2NCApCisrICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgICAgKiApCisrICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgZXNhYworIGRvbmUKKyB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKKyAKK0BAIC0xMjE0NCw2ICsxMjE1NCwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAwNTgxZmU5NjNkYy4uODU1MWE0MTJkZjMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTkwMiwxMCArMTkwMiwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTE5MTYsNiArMTkyNiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI2LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTI0NzEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI2LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5ZmFiNDdkODY2Mjk4NmFkODg3ZDllZGRjMzlmY2JlMjVlNTc2MzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNi80N10gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKKyBob3N0IHBhdGgKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCAwMTIxZmJhNzA3Zi4uNTJiZGJkYjVmOWMgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKKysJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgorKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgZGlyPSIkbGliZGlyIgorIAkgICAgYWJzZGlyPSIkbGliZGlyIgorIAkgIGZpCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjctZXhwb3J0LUNQUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNy1leHBvcnQtQ1BQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWUxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjctZXhwb3J0LUNQUC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGZhNmE0NmZkZjczZGU3ZWFjZDI4OWMwODRiYmRlNjY0M2IyM2Y3M2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAorU3ViamVjdDogW1BBVENIIDI3LzQ3XSBleHBvcnQgQ1BQCisKK1RoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgorYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCitpbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6CisKK2NvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcworY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Citjb25maWd1cmU6MzY2NjogJD8gPSAwCitjb25maWd1cmU6MzY5ODogcmVzdWx0OiBubworY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCitjb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCitjb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCitjb25maWd1cmU6Mzg3NjogJD8gPSAwCisKK05vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQordXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKK2hlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCitpbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAorZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCisKK1RoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCitlbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCit0aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bworYXZvaWQgdGhlIHByb2JsZW0uCisKK1JQIDIyLzA4LzIwMTMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYjgyNGUwYTBjYTEuLmUzNGU5NTU1Mzg4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTQ5LDYgKzE0OSw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUFSPSIkKEFSX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVI7IFwKKyAJQVM9IiQoQVNfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUzsgXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyOC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwMzM0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyOC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMmMwNWI0MDcyZjk4MmRmODAwMmQ2MTMyNzgzN2UxOGE3MjRlOTM0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KK0RhdGU6IFdlZCwgNSBGZWIgMjAxNCAxNjo1MjozMSArMDIwMAorU3ViamVjdDogW1BBVENIIDI4LzQ3XSBFbmFibGUgU1BFICYgQWx0aVZlYyBnZW5lcmF0aW9uIG9uIHBvd2VwYypsaW51eCB0YXJnZXQKKworV2hlbiBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eCwgdGhlIHJlc3VsdGluZyBHQ0Mgd2lsbAorbm90IGJlIGFibGUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgU1BFIHRhcmdldHMgKGU1MDB2MS92MikuCitHQ0MgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXhzcGUgd2lsbCBub3QgYmUgYWJsZSB0bworZ2VuZXJhdGUgQWx0aVZlYyBpbnN0cnVjdGlvbnMgKGZvciBlNjUwMCkuCitUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWd1cmVkIGZpbGUgc3VjaCB0aGF0IFNQRSBvciBBbHRpVmVjIGNvZGUKK2NhbiBiZSBnZW5lcmF0ZWQgd2hlbiBnY2MgaXMgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXguCitUaGUgQUJJIGFuZCBzcGVjaWZmaWMgaW5zdHJ1Y3Rpb25zIGNhbiBiZSBzZWxlY3RlZCB0aHJvdWdoIHRoZQorIi1tYWJpPXNwZSBvciAtbWFiaT1hbHRpdmVjIiBhbmQgdGhlICItbXNwZSBvciAtbWFsdGl2ZWMiIHBhcmFtZXRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgorLS0tCisgZ2NjL2NvbmZpZy5nY2MgICAgICAgICAgICAgICB8IDkgKysrKysrKystCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaCB8IDMgLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCitpbmRleCA1ZTQ1ZjRiNTE5OS4uOWIzODFkZmQ5YWYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmdjYworKysrIGIvZ2NjL2NvbmZpZy5nY2MKK0BAIC0yNDE1LDcgKzI0MTUsMTQgQEAgcG93ZXJwYy0qLXJ0ZW1zKikKKyAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSByczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXJ0ZW1zIHJzNjAwMC90LXBwY2NvbW0iCisgCTs7CisgcG93ZXJwYyotKi1saW51eCopCistCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgorKwljYXNlICR7dGFyZ2V0fSBpbgorKwkgICAgcG93ZXJwYyotKi1saW51eCpzcGUqIHwgcG93ZXJwYyotKi1saW51eCphbHRpdmVjKikKKysJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgorKwkJOzsKKysJICAgICopCisrCQl0bV9maWxlPSIke3RtX2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggZ251LXVzZXIuaCBmcmVlYnNkLXNwZWMuaCByczYwMDAvc3lzdjQuaCByczYwMDAvbGludXhhbHRpdmVjLmggcnM2MDAwL2xpbnV4c3BlLmggcnM2MDAwL2U1MDAuaCIKKysJCTs7CisrCWVzYWMKKyAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgorIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcHBjY29tbSIKKyAJZXh0cmFfb2Jqcz0iJGV4dHJhX29ianMgcnM2MDAwLWxpbnV4Lm8iCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKK2luZGV4IDkyZWZhYmZlNjY0Li42ZDQ4NjQ1MWE3ZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKK0BAIC0yNyw2ICsyNywzIEBACisgI3VuZGVmCVRBUkdFVF9ERUZBVUxUCisgI2RlZmluZSBUQVJHRVRfREVGQVVMVCBNQVNLX1NUUklDVF9BTElHTgorICNlbmRpZgorLQorLSN1bmRlZiAgQVNNX0RFRkFVTFRfU1BFQworLSNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMgLW1zcGUgLW1lNTAwIgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI5LURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzA2YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI5LURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBlYzBmODQzYjg2YzBmNzZiYzVlYmIyMGZhZmJjNGFhZTFiZTRkYjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyOS80N10gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKKyBvcHRpb25zLgorCitIYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KK3N5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKK0FCSSwgYXMKK2xvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KKworV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCitub3JtYWwgbGliZGlyLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAoraW5kZXggYWIwNjRhYjZmMjIuLmY0YjFmOThiMjE2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorQEAgLTIxLDggKzIxLDggQEAKKyBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KKyBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCisgCistQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKy1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKysjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorIAorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgorKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMC1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMC1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjhiYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK0Zyb20gYmY1ODM2OTg5ZTBmZmMxYzFkZjEzNjlkZjA2ODc3ZTk2YzA4ZGY0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjI1OjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzAvNDddIEVuc3VyZSB0YXJnZXQgZ2NjIGhlYWRlcnMgY2FuIGJlIGluY2x1ZGVkCisKK1RoZXJlIGFyZSBhIGZldyBoZWFkZXJzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBPcGVuRW1iZWRkZWQKK2djYy1ydW50aW1lIHRhcmdldCAob21wLmgsIHNzcC8qLmgpLiBCZWluZyBpbnN0YWxsZWQgZnJvbSBhIHJlY2lwZQorYnVpbHQgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB0aGVzZSBhcmUgd2l0aGluIHRoZSB0YXJnZXQKK3N5c3Jvb3QgYW5kIG5vdCBjcm9zcy9uYXRpdmVzZGs7IHRodXMgdGhleSB3ZXJlbid0IGFibGUgdG8gYmUKK2ZvdW5kIGJ5IGdjYyB3aXRoIHRoZSBleGlzdGluZyBzZWFyY2ggcGF0aHMuIEFkZCBzdXBwb3J0IGZvcgorcGlja2luZyB1cCB0aGVzZSBoZWFkZXJzIHVuZGVyIHRoZSBzeXNyb290IHN1cHBsaWVkIG9uIHRoZSBnY2MKK2NvbW1hbmQgbGluZSBpbiBvcmRlciB0byByZXNvbHZlIHRoaXMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArKworIGdjYy9jcHBkZWZhdWx0LmMgfCA0ICsrKysKKyBnY2MvZGVmYXVsdHMuaCAgIHwgOSArKysrKysrKysKKyBnY2MvZ2NjLmMgICAgICAgIHwgNyAtLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCAyM2NjYTdmMGQ1YS4uOTVkMjFlZmZhZDMgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTYwOCw2ICs2MDgsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACisgCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCisgbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKytsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcworIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKyAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCitAQCAtMjc5MSw2ICsyNzkyLDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCisgCisgUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCisgICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAorKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAorICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKK2luZGV4IDEwYjk2ZWNhMGE3Li5jOGRhMDg4NDg3MiAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmMKKysrKyBiL2djYy9jcHBkZWZhdWx0LmMKK0BAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLworICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKysjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCitkaWZmIC0tZ2l0IGEvZ2NjL2RlZmF1bHRzLmggYi9nY2MvZGVmYXVsdHMuaAoraW5kZXggN2FkOTJkOTIwZjguLjM5ODQ4Y2M5YzBlIDEwMDY0NAorLS0tIGEvZ2NjL2RlZmF1bHRzLmgKKysrKyBiL2djYy9kZWZhdWx0cy5oCitAQCAtMTQ3NSw0ICsxNDc1LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgRFdBUkZfR05BVF9FTkNPRElOR1NfREVGQVVMVCBEV0FSRl9HTkFUX0VOQ09ESU5HU19HREIKKyAjZW5kaWYKKyAKKysvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KKysKKysjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQorKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKKysjZW5kaWYKKysjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgorKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCisrI2VuZGlmCisrCisgI2VuZGlmICAvKiAhIEdDQ19ERUZBVUxUU19IICovCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBjNzNkNDAyMzk4Ny4uYjI3MjQ1ZGJmNzcgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTE0NzIsMTMgKzE0NzIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OworIAorIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworIAorLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCistI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorLSNlbmRpZgorLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCistI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKy0jZW5kaWYKKy0KKyAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KKyAjdW5kZWYgTURfRVhFQ19QUkVGSVgKKyAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMxLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTg0MDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMxLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBjN2I0ZDk1N2VkZGE5NTVmYmU0MDVmZDUyOTU4NDY2MTQ1MjlmNTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMS80N10gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZworCitzaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KKworVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKK2h0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCisKK1JQCisyMDEyLzA5LzIyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQorIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK2luZGV4IGQ3MzE0MDZmZGJkLi4yZmFmYzcyZDJlNyAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCitAQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorIAorLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KKyBNX1NJWkUJCT0gLUROPSQoUEFUX04pCisgTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgoraW5kZXggZjZlZWFiMzEyZWEuLjNmMDZhODk0MDU4IDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KK0BAIC0zMzEsNyArMzMxLDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCisgUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCisgSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKKyBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKKy1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUyA9CisgTV9TSVpFID0gLUROPSQoUEFUX04pCisgTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMi1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg5MDVmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMi1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gM2JlNmI3NjZhNTg4MWIwYjE4N2MzYzNjNjgyNTBhOWU0ZjdjMGZhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMi80N10gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgorICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAorCitodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDUyYmRiZGI1ZjljLi44MmJjZWMzOWYwNSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaQorIAkgICAgZWxzZQorIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKKyAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgorLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisrCisgCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQljYXNlICRsaWJkaXIgaW4KKyAJCSAgW1xcL10qKQorLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICA7OworIAkJZXNhYworIAkgICAgICBmaQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMzLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzMtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI4ZGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMzLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA2ZWRjYWI5MDQ2Yjg2MmNiYjliNDY4OTJmYzM5MGNlNjk5NzY1MzljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzMy80N10gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZworIGJhc2VfbGliZGlyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IGM0NWZjMWQzNWQxLi5hN2FmZTE5NzI2NiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzQtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkODY2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzQtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYjE0MGQ2ODM5Y2ZiYTljYWM4OTJiYzczNmQ5ODQ1NDA1NTJkNmE1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzQvNDddIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggYTdhZmUxOTcyNjYuLjU4MGMyYzdlYTE1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTI0LDcgKzI0LDcgQEAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiAgQVNBTl9DQzFfU1BFQworICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM1LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmMxOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM1LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDYzNjE3ZjJkYTE1M2RiMTBmYTJmZTkzOGNjZTMxYmVlMDFkNDdmZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDM1LzQ3XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCisKKyogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCisgICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKKyAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KKyogRml4IGJhZCBSUEFUSCBpdXNzdWU6CisgIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCisgL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAorIFtycGF0aHNdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQoraW5kZXggNWU2MWE5MmEyNmIuLmU4YjYyN2Y5Y2VjIDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCisrKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KK0BAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorIAorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIAorIGlmIEVOQUJMRV9QTFVHSU4KKyBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCitpbmRleCA1NGJhYmIwMmE0OS4uZTUxZDg3ZmZkY2UgMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgorQEAgLTMwMyw4ICszMDMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIAorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKKyBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQorIEJVSUxUX1NPVVJDRVMgPSBjLWNvbXBpbGVyLW5hbWUuaCBjcC1jb21waWxlci1uYW1lLmgKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNi1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM2LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEwYjEwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNi1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMjEzIEBACitGcm9tIGNhMTQ4MjBhZTgzNGE2MmVmMmI4MGIyODNlOGY5MDA3MTQ2MzYyNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzYvNDddIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKKworQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKK3doZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgorYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCisKK1NhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCituYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cworbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAoraW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0CitiYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCisKK0luIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6CisKK2EpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCisgICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgorYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KKyAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1JQIDIwMTUvNy8yOAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQorIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggYzhkYTA4ODQ4NzIuLjQzZGM1OTdhMGMzIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYworKysrIGIvZ2NjL2NwcGRlZmF1bHQuYworQEAgLTM1LDYgKzM1LDMwIEBACisgIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgorICNlbmRpZgorIAorK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKKysjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisrc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKKysjZW5kaWYKKysKKyBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUworID0gSU5DTFVERV9ERUZBVUxUUzsKK0BAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgPSB7CisgI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCisgI2VuZGlmCisgI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLworLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKysgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KKy0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKysgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisgICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCistICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCistICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCisrICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLworLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKKysgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCisgICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCisgCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCisgI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQworQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgI2VuZGlmCisgI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisgICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisgICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KKy0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisrICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKyAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCistICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KKyAgIH07CitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKK2luZGV4IDE3YmJiMGVhZWY3Li5hOTM3ZWMxZDE4NyAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmgKKysrKyBiL2djYy9jcHBkZWZhdWx0LmgKK0BAIC0zMyw3ICszMyw4IEBACisgCisgc3RydWN0IGRlZmF1bHRfaW5jbHVkZQorIHsKKy0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrCisgICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisgCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCisgICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggYjI3MjQ1ZGJmNzcuLmUwMTVjNzdmMTVmIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNDcsNiArMjQ3LDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOworICNlbmRpZgorIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKKyAKKytzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOworKworIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KKyAKKyBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOworQEAgLTUxOCw2ICs1MjAsNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCisgICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KKyAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCisgICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCisrICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4CisgICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgorQEAgLTE0OTUsMTAgKzE0OTgsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKKyAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKKyAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAorICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyAKKyAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZworICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcworQEAgLTE1MDYsOSArMTUwOSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOworIAorIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCitAQCAtNTgyNiw2ICs1ODI5LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKKyAJICAgICAgfQorIAkgICAgYnJlYWs7CisgCisrICAgICAgICAgIGNhc2UgJ3InOgorKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKKysJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOworKyAgICAgICAgICAgIGJyZWFrOworKworIAkgIGNhc2UgJ1MnOgorIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKKyAJICAgIGlmICh2YWx1ZSAhPSAwKQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM3LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzg1YTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM3LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gMTZhMzI2YmNkMTI2YjM5NWIyOTAxOTA3MjkwNWJhZTdhNWQ0NzUwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzNy80N10gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAorIG11bHRpbGliLgorCitXZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KKzxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KK3doaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQorY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQordGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Citjby1leGlzdCBvbiB0YXJnZXQuCisKK1dlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yaworZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgorPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KK21pcHM2NC1wb2xrbWxsaWIzMi1saW51eAoraXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgorCitUaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKK2lzOgorCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK3doaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKK3dpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgorCitUaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKK2JpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKKworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitSUCAyMDE1LzcvMzEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggZTAxNWM3N2YxNWYuLjg0YWY1ZDVhMmUxIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNTMzLDcgKzI1MzMsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgCXsKKyAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKKy0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKysJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKyAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKKyAJfQorIAorQEAgLTI1NDUsNiArMjU0NSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCisgCSAgaWYgKCFza2lwX211bHRpX2RpcikKKyAJICAgIHsKKysJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCisrCSAgICAgICAgeworKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKKysJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKKysKKysJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKKysJCSAgICB9CisrCSAgICAgICAgICBlbHNlCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKKysJCSAgICB9CisrCisrCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KKysJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKKysJICAgICAgICAgICAgeworKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOworKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisrCSAgICAgICAgICAgICAgICBpZiAocmV0KQorKwkJICAgICAgICAgIGJyZWFrOworKwkgICAgICAgICAgICB9CisrCSAgICAgICAgfQorKworIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisgCSAgICAgIGlmIChyZXQpCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzgtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzgtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyNmQxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSA2ZTdmNTI2ZTcxYTc2YWFjM2Q0OWJhOGYxNzQyZmUxYjM1OWMxMDYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0Mjo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDM4LzQ3XSBGaXggdmFyaW91cyBfRk9SX0JVSUxEIGFuZCByZWxhdGVkIHZhcmlhYmxlcworCitXaGVuIGRvaW5nIGEgRk9SX0JVSUxEIHRoaW5nLCB5b3UgaGF2ZSB0byBvdmVycmlkZSBDRkxBR1Mgd2l0aAorQ0ZMQUdTX0ZPUl9CVUlMRC4gQW5kIGlmIHlvdSB1c2UgQysrLCB5b3UgYWxzbyBoYXZlIHRvIG92ZXJyaWRlCitDWFhGTEFHUyB3aXRoIENYWEZMQUdTX0ZPUl9CVUlMRC4KK1dpdGhvdXQgdGhpcywgd2hlbiBidWlsZGluZyBmb3IgbWluZ3csIHlvdSBlbmQgdXAgdHJ5aW5nIHRvIHVzZQordGhlIG1pbmd3IGhlYWRlcnMgZm9yIGEgaG9zdCBidWlsZC4KKworVGhlIHNhbWUgZ29lcyBmb3Igb3RoZXIgdmFyaWFibGVzIGFzIHdlbGwsIHN1Y2ggYXMgQ1BQRkxBR1MsCitDUFAsIGFuZCBHTVBJTkMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICB8IDYgKysrKysrCisgTWFrZWZpbGUudHBsICAgICB8IDUgKysrKysKKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBlMzRlOTU1NTM4OC4uYTAzNzQwZjNmOWQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE2OSw2ICsxNzAsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4Niw2ICsxOTAsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitAQCAtNzM0LDYgKzczOSw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKKyAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKKyAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCisrCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCisgCSJGTEVYPSQoRkxFWCkiIFwKKyAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAoraW5kZXggZDBmYTA3MDA1YmUuLjk1MzM3NmM2NThkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUudHBsCisrKysgYi9NYWtlZmlsZS50cGwKK0BAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNzEsNiArMTcyLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xODgsNiArMTkyLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggOTVkMjFlZmZhZDMuLmRiZTJiYWNkZTUwIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC03OTUsNyArNzk1LDcgQEAgQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKKyBCVUlMRF9OT19QSUVfRkxBRyA9IEBCVUlMRF9OT19QSUVfRkxBR0AKKyBCVUlMRF9MREZMQUdTICs9ICQoQlVJTERfTk9fUElFX0ZMQUcpCisgQlVJTERfQ1BQRkxBR1M9IC1JLiAtSSQoQEQpIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpLyQoQEQpIFwKKy0JCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTKQorKwkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1NfRk9SX0JVSUxEKQorIAorICMgQWN0dWFsIG5hbWUgdG8gdXNlIHdoZW4gaW5zdGFsbGluZyBhIG5hdGl2ZSBjb21waWxlci4KKyBHQ0NfSU5TVEFMTF9OQU1FIDo9ICQoc2hlbGwgZWNobyBnY2N8c2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJykKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNmJhMzkxZWQwNjguLjcyY2E2ZTVjNTM1IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTExNzg5LDcgKzExNzg5LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggODU1MWE0MTJkZjMuLjZlZWZiNjFkYzJiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE3MDgsNyArMTcwOCw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzktbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzktbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhZWNjZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOS1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDZkMDNkZGZiN2EwOTI5NDJiZTZiNThiMTgzMGY2OTg2ZDAxMmQ1ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMzkvNDddIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgorCitTaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKKyBnY2MvY29uZmlnL25pb3MyL2xpbnV4LmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbGludXguaCBiL2djYy9jb25maWcvbmlvczIvbGludXguaAoraW5kZXggNTE3N2ZhNjQxYTQuLjFiOGFjY2RhNmVlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKK0BAIC0zMCw2ICszMCw3IEBACisgI2RlZmluZSBDUFBfU1BFQyAiJXtwb3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtbmlvczIuc28uMSIKKysjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgICIvbGliL2xkLW11c2wtbmlvczIuc28uMSIKKyAKKyAjdW5kZWYgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgTElOS19TUEVDX0VORElBTiBcCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0MC1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQwLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0MS1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI2MGUzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0MS1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoCkBAIC0wLDAgKzEsMjg0IEBACitGcm9tIDRlYWRjOTliZGQwOTc0NzYxYmY0OGYwZmQzMjk5NGRkOWEzZmZjZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IE1hciAyMDE2IDAyOjI3OjQzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggNDEvNDddIGdjYy9saWJjcHA6IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXA9PG9sZD49PG5ldz4KKworU2ltaWxhciAtZmRlYnVnLXByZWZpeC1tYXAsIGFkZCBvcHRpb24gLWZmaWxlLXByZWZpeC1tYXAgdG8gbWFwIG9uZQorZGlyZWN0b3J5IG5hbWUgKG9sZCkgdG8gYW5vdGhlciAobmV3KSBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQKK19fYnVpbHRpbl9GSUxFICgpLgorCitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDI2OAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvYy1mYW1pbHkvYy1vcHRzLmMgICAgIHwgMTMgKysrKysrKworIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAgfCAgNCArKysKKyBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgIHwgIDEgKworIGdjYy9naW1wbGlmeS5jICAgICAgICAgICAgfCAgMiArKworIGxpYmNwcC9NYWtlZmlsZS5pbiAgICAgICAgfCAxMCArKystLS0KKyBsaWJjcHAvZmlsZS1tYXAuYyAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIHwgMzAgKysrKysrKysrKysrKysrKworIGxpYmNwcC9tYWNyby5jICAgICAgICAgICAgfCAgMiArKworIDggZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9maWxlLW1hcC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMuYyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYworaW5kZXggZWEwZTAxYjEwMWMuLmE3NDFjNzVhNzhmIDEwMDY0NAorLS0tIGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCisrKysgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKK0BAIC0zOSw2ICszOSwxNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJvcHRzLmgiCisgI2luY2x1ZGUgInBsdWdpbi5oIgkJLyogRm9yIFBMVUdJTl9JTkNMVURFX0ZJTEUgZXZlbnQuICAqLworICNpbmNsdWRlICJta2RlcHMuaCIKKysjaW5jbHVkZSAiZmlsZS1tYXAuaCIKKysjaW5jbHVkZSAiYy10YXJnZXQuaCIKKysjaW5jbHVkZSAidG0uaCIJCQkvKiBGb3IgQllURVNfQklHX0VORElBTiwKKysJCQkJICAgRE9MTEFSU19JTl9JREVOVElGSUVSUywKKysJCQkJICAgU1REQ18wX0lOX1NZU1RFTV9IRUFERVJTLAorKwkJCQkgICBUQVJHRVRfRkxUX0VWQUxfTUVUSE9EX05PTl9ERUZBVUxUIGFuZAorKwkJCQkgICBUQVJHRVRfT1BURi4gICovCisrI2luY2x1ZGUgInRtX3AuaCIJCS8qIEZvciBDX0NPTU1PTl9PVkVSUklERV9PUFRJT05TLiAgKi8KKyAjaW5jbHVkZSAiZHVtcGZpbGUuaCIKKyAKKyAjaWZuZGVmIERPTExBUlNfSU5fSURFTlRJRklFUlMKK0BAIC01MTcsNiArNTI1LDExIEBAIGNfY29tbW9uX2hhbmRsZV9vcHRpb24gKHNpemVfdCBzY29kZSwgY29uc3QgY2hhciAqYXJnLCBpbnQgdmFsdWUsCisgICAgICAgY3BwX29wdHMtPm5hcnJvd19jaGFyc2V0ID0gYXJnOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKKysgICAgICBpZiAoYWRkX2ZpbGVfcHJlZml4X21hcCAoYXJnKSA8IDApCisrICAgICAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBPUFRfZndpZGVfZXhlY19jaGFyc2V0XzoKKyAgICAgICBjcHBfb3B0cy0+d2lkZV9jaGFyc2V0ID0gYXJnOworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAoraW5kZXggYzRlZjc3OTYyODIuLjczMzMzZGZkNTdjIDEwMDY0NAorLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0CisrKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK0BAIC0xMzcyLDYgKzEzNzIsMTAgQEAgZmV4ZWMtY2hhcnNldD0KKyBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0TmVnYXRpdmUKKyAtZmV4ZWMtY2hhcnNldD08Y3NldD4JQ29udmVydCBhbGwgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cyB0byBjaGFyYWN0ZXIgc2V0IDxjc2V0Pi4KKyAKKytmZmlsZS1wcmVmaXgtbWFwPQorK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQorKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCisrCisgZmV4dGVuZGVkLWlkZW50aWZpZXJzCisgQyBPYmpDIEMrKyBPYmpDKysKKyBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzLgorZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYworaW5kZXggOThjNTE1NzZlYzIuLjc2MmY2OWFlODhlIDEwMDY0NAorLS0tIGEvZ2NjL2R3YXJmMm91dC5jCisrKysgYi9nY2MvZHdhcmYyb3V0LmMKK0BAIC0yMzQyMSw2ICsyMzQyMSw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCisgICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86CisgICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgorICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKKysgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKKyAJLyogSWdub3JlIHRoZXNlLiAgKi8KKyAJY29udGludWU7CisgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCitpbmRleCBmZDI3ZWIxNTIzZi4uNTU0MmIzNzlmMjggMTAwNjQ0CistLS0gYS9nY2MvZ2ltcGxpZnkuYworKysrIGIvZ2NjL2dpbXBsaWZ5LmMKK0BAIC01OCw2ICs1OCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2luY2x1ZGUgImdvbXAtY29uc3RhbnRzLmgiCisgI2luY2x1ZGUgInRyZWUtZHVtcC5oIgorICNpbmNsdWRlICJnaW1wbGUtd2Fsay5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorKworICNpbmNsdWRlICJsYW5naG9va3MtZGVmLmgiCS8qIEZJWE1FOiBmb3IgbGhkX3NldF9kZWNsX2Fzc2VtYmxlcl9uYW1lICovCisgI2luY2x1ZGUgImJ1aWx0aW5zLmgiCisgI2luY2x1ZGUgImFzYW4uaCIKK2RpZmYgLS1naXQgYS9saWJjcHAvTWFrZWZpbGUuaW4gYi9saWJjcHAvTWFrZWZpbGUuaW4KK2luZGV4IDBiZDM3ODdjMjVlLi5kM2I1Mjk1NmI1MiAxMDA2NDQKKy0tLSBhL2xpYmNwcC9NYWtlZmlsZS5pbgorKysrIGIvbGliY3BwL01ha2VmaWxlLmluCitAQCAtODQsMTIgKzg0LDEyIEBAIERFUE1PREUgPSAkKENYWERFUE1PREUpCisgCisgCisgbGliY3BwX2FfT0JKUyA9IGNoYXJzZXQubyBkaXJlY3RpdmVzLm8gZGlyZWN0aXZlcy1vbmx5Lm8gZXJyb3JzLm8gXAorLQlleHByLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIG1hY3JvLm8gXAorLQlta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCisrCWV4cHIubyBmaWxlLW1hcC5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBcCisrCW1hY3JvLm8gbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubworIAorIGxpYmNwcF9hX1NPVVJDRVMgPSBjaGFyc2V0LmMgZGlyZWN0aXZlcy5jIGRpcmVjdGl2ZXMtb25seS5jIGVycm9ycy5jIFwKKy0JZXhwci5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBtYWNyby5jIFwKKy0JbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYworKwlleHByLmMgZmlsZS1tYXAuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgXAorKwltYWNyby5jIG1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKKyAKKyBhbGw6IGxpYmNwcC5hICQoVVNFRF9DQVRBTE9HUykKKyAKK0BAIC0yNjMsNyArMjYzLDcgQEAgcG8vJChQQUNLQUdFKS5wb3Q6ICQobGliY3BwX2FfU09VUkNFUykKKyAKKyBUQUdTX1NPVVJDRVMgPSAkKGxpYmNwcF9hX1NPVVJDRVMpIGludGVybmFsLmggdWNuaWQuaCBcCisgICAgIGluY2x1ZGUvbGluZS1tYXAuaCBpbmNsdWRlL3N5bXRhYi5oIGluY2x1ZGUvY3BwLWlkLWRhdGEuaCBcCistICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaAorKyAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmggaW5jbHVkZS9maWxlLW1hcC5oCisgCisgVEFHUzogJChUQUdTX1NPVVJDRVMpCisgCWNkICQoc3JjZGlyKSAmJiBldGFncyAkKFRBR1NfU09VUkNFUykKK2RpZmYgLS1naXQgYS9saWJjcHAvZmlsZS1tYXAuYyBiL2xpYmNwcC9maWxlLW1hcC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjE4MDM1ZWY2YTcyCistLS0gL2Rldi9udWxsCisrKysgYi9saWJjcHAvZmlsZS1tYXAuYworQEAgLTAsMCArMSw5MiBAQAorKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXworKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKytUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKytsYXRlciB2ZXJzaW9uLgorKworK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKythbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KKysgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKKysgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorKworKy8qIFN0cnVjdHVyZSByZWNvcmRpbmcgdGhlIG1hcHBpbmcgZnJvbSBzb3VyY2UgZmlsZSBhbmQgZGlyZWN0b3J5CisrICAgbmFtZXMgYXQgY29tcGlsZSB0aW1lIHRvIF9fRklMRV9fICovCisrdHlwZWRlZiBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwCisreworKyAgY29uc3QgY2hhciAqb2xkX3ByZWZpeDsKKysgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXg7CisrICBzaXplX3Qgb2xkX2xlbjsKKysgIHNpemVfdCBuZXdfbGVuOworKyAgc3RydWN0IGZpbGVfcHJlZml4X21hcCAqbmV4dDsKKyt9IGZpbGVfcHJlZml4X21hcDsKKysKKysvKiBMaW5rZWQgbGlzdCBvZiBzdWNoIHN0cnVjdHVyZXMuICAqLworK3N0YXRpYyBmaWxlX3ByZWZpeF9tYXAgKmZpbGVfcHJlZml4X21hcHM7CisrCisrLyogUmVjb3JkIHByZWZpeCBtYXBwaW5nIG9mIF9fRklMRV9fLiAgQVJHIGlzIHRoZSBhcmd1bWVudCB0bworKyAgIC1mZmlsZS1wcmVmaXgtbWFwIGFuZCBtdXN0IGJlIG9mIHRoZSBmb3JtIE9MRD1ORVcuICAqLworK2ludAorK2FkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZykKKyt7CisrICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKKysgIGNvbnN0IGNoYXIgKnA7CisrCisrICBwID0gc3RyY2hyIChhcmcsICc9Jyk7CisrICBpZiAoIXApCisrICB7CisrICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7CisrICAgICAgcmV0dXJuIC0xOworKyAgfQorKyAgbWFwID0gWE5FVyAoZmlsZV9wcmVmaXhfbWFwKTsKKysgIG1hcC0+b2xkX3ByZWZpeCA9IHhzdHJuZHVwIChhcmcsIHAgLSBhcmcpOworKyAgbWFwLT5vbGRfbGVuID0gcCAtIGFyZzsKKysgIHArKzsKKysgIG1hcC0+bmV3X3ByZWZpeCA9IHhzdHJkdXAgKHApOworKyAgbWFwLT5uZXdfbGVuID0gc3RybGVuIChwKTsKKysgIG1hcC0+bmV4dCA9IGZpbGVfcHJlZml4X21hcHM7CisrICBmaWxlX3ByZWZpeF9tYXBzID0gbWFwOworKworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIFBlcmZvcm0gdXNlci1zcGVjaWZpZWQgbWFwcGluZyBvZiBfX0ZJTEVfXyBwcmVmaXhlcy4gIFJldHVybgorKyAgIHRoZSBuZXcgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGZpbGVuYW1lLiAgKi8KKysKKytjb25zdCBjaGFyICoKKytyZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKKysgIGNoYXIgKnM7CisrICBjb25zdCBjaGFyICpuYW1lOworKyAgc2l6ZV90IG5hbWVfbGVuOworKworKyAgZm9yIChtYXAgPSBmaWxlX3ByZWZpeF9tYXBzOyBtYXA7IG1hcCA9IG1hcC0+bmV4dCkKKysgICAgaWYgKGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKKysgICAgICBicmVhazsKKysgIGlmICghbWFwKQorKyAgICByZXR1cm4gZmlsZW5hbWU7CisrICBuYW1lID0gZmlsZW5hbWUgKyBtYXAtPm9sZF9sZW47CisrICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSkgKyAxOworKyAgcyA9IChjaGFyICopIGFsbG9jYSAobmFtZV9sZW4gKyBtYXAtPm5ld19sZW4pOworKyAgbWVtY3B5IChzLCBtYXAtPm5ld19wcmVmaXgsIG1hcC0+bmV3X2xlbik7CisrICBtZW1jcHkgKHMgKyBtYXAtPm5ld19sZW4sIG5hbWUsIG5hbWVfbGVuKTsKKysKKysgIHJldHVybiB4c3RyZHVwIChzKTsKKyt9CisrCisrCitkaWZmIC0tZ2l0IGEvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uODc1MDMxNTJkMjcKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKK0BAIC0wLDAgKzEsMzAgQEAKKysvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KKysgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKytGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisrbGF0ZXIgdmVyc2lvbi4KKysKKytUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKytidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKytHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKys8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCisrIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCisrIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCisrCisrI2lmbmRlZiBMSUJDUFBfRklMRV9NQVBfSAorKyNkZWZpbmUgTElCQ1BQX0ZJTEVfTUFQX0gKKysKKytjb25zdCBjaGFyICogcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworKworK2ludCBhZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpOworKworKyNlbmRpZiAvKiAhTElCQ1BQX0ZJTEVfTUFQX0ggICovCitkaWZmIC0tZ2l0IGEvbGliY3BwL21hY3JvLmMgYi9saWJjcHAvbWFjcm8uYworaW5kZXggZGUxOGMyMjEwY2YuLjI3NDhjNzBkNTIwIDEwMDY0NAorLS0tIGEvbGliY3BwL21hY3JvLmMKKysrKyBiL2xpYmNwcC9tYWNyby5jCitAQCAtMjYsNiArMjYsNyBAQCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSAiY3BwbGliLmgiCisgI2luY2x1ZGUgImludGVybmFsLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisgCisgdHlwZWRlZiBzdHJ1Y3QgbWFjcm9fYXJnIG1hY3JvX2FyZzsKKyAvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSB0b2tlbnMgb2YgYSBtYWNybyBhcmd1bWVudC4gIFRoZXNlCitAQCAtMzAxLDYgKzMwMiw3IEBAIF9jcHBfYnVpbHRpbl9tYWNyb190ZXh0IChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpub2RlLAorIAkgICAgaWYgKCFuYW1lKQorIAkgICAgICBhYm9ydCAoKTsKKyAJICB9CisrCW5hbWUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChuYW1lKTsKKyAJbGVuID0gc3RybGVuIChuYW1lKTsKKyAJYnVmID0gX2NwcF91bmFsaWduZWRfYWxsb2MgKHBmaWxlLCBsZW4gKiAyICsgMyk7CisgCXJlc3VsdCA9IGJ1ZjsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDItUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNDcxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDItUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gZGRkZGM3MzM1NTM5ZmI4YTZkMzBiZWJhMjE3ODE3NjJkZjE1OTE4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgTWFyIDIwMTYgMDU6Mzk6NTkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0Mi80N10gUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAKKworVGhlIG9lLWNvcmUgbWF5IHVzZSBleHRlcm5hbCB0b29sY2hhaW4gdG8gY29tcGlsZSwKK3doaWNoIG1heSBub3Qgc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcC4KKworU2luY2Ugd2UgdXNlIC1mZGVidWctcHJlZml4LW1hcCB0byBkbyB0aGUgc2FtZSB0aGluZywKK3NvIHdlIGNvdWxkIHJldXNlIGl0IHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2Mvb3B0cy1nbG9iYWwuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9vcHRzLWdsb2JhbC5jIGIvZ2NjL29wdHMtZ2xvYmFsLmMKK2luZGV4IDUwYmFkNzdjMzQ3Li4zMmIxZDI4NjcyMSAxMDA2NDQKKy0tLSBhL2djYy9vcHRzLWdsb2JhbC5jCisrKysgYi9nY2Mvb3B0cy1nbG9iYWwuYworQEAgLTMxLDYgKzMxLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjaW5jbHVkZSAibGFuZ2hvb2tzLmgiCisgI2luY2x1ZGUgImRiZ2NudC5oIgorICNpbmNsdWRlICJkZWJ1Zy5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorICNpbmNsdWRlICJvdXRwdXQuaCIKKyAjaW5jbHVkZSAicGx1Z2luLmgiCisgI2luY2x1ZGUgInRvcGxldi5oIgorQEAgLTM1Nyw2ICszNTgsOSBAQCBoYW5kbGVfY29tbW9uX2RlZmVycmVkX29wdGlvbnMgKHZvaWQpCisgCisgCWNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKKyAJICBhZGRfZGVidWdfcHJlZml4X21hcCAob3B0LT5hcmcpOworKworKwkgIC8qIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwICovCisrCSAgYWRkX2ZpbGVfcHJlZml4X21hcCAob3B0LT5hcmcpOworIAkgIGJyZWFrOworIAorIAljYXNlIE9QVF9mZHVtcF86CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDMtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YTVjODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDMtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDViYzk3YmUzODg0ODVhNWY4ZGQ4NWRiMzQzNzJhMTI5OWJmZmQyNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI0IE1hciAyMDE2IDExOjIzOjE0IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggNDMvNDddIGdjYy9maW5hbC5jOiAtZmRlYnVnLXByZWZpeC1tYXAgc3VwcG9ydCB0byByZW1hcAorIHNvdXJjZXMgd2l0aCByZWxhdGl2ZSBwYXRoCisKK1BSIG90aGVyLzcwNDI4CisqIGZpbmFsLmMgKHJlbWFwX2RlYnVnX2ZpbGVuYW1lKTogVXNlIGxyZWFscGF0aCB0byB0cmFuc2xhdGUKK3JlbGF0aXZlIHBhdGggYmVmb3JlIHJlbWFwcGluZworCitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDQyOAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvZmluYWwuYyB8IDE1ICsrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2ZpbmFsLmMgYi9nY2MvZmluYWwuYworaW5kZXggODIwMTYyYjJkMjguLmQ3NGNiOTAxYWJkIDEwMDY0NAorLS0tIGEvZ2NjL2ZpbmFsLmMKKysrKyBiL2djYy9maW5hbC5jCitAQCAtMTU1OSwxNiArMTU1OSwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisgICBjb25zdCBjaGFyICpuYW1lOworICAgc2l6ZV90IG5hbWVfbGVuOworIAorKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCisrICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOworKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCisrICAgIHJldHVybiBmaWxlbmFtZTsKKysKKyAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQorLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorICAgICAgIGJyZWFrOworICAgaWYgKCFtYXApCistICAgIHJldHVybiBmaWxlbmFtZTsKKy0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKKysgICAgeworKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKKysgICAgICByZXR1cm4gZmlsZW5hbWU7CisrICAgIH0KKysgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKKyAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7CisgICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7CisgICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKKyAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOworKyAgZnJlZSAocmVhbHBhdGgpOworICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOworIH0KKyAMCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDQtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDQtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5YWY5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApAQCAtMCwwICsxLDEyNCBAQAorRnJvbSA4NDdhZWM3NjQ1NDA2MzZlYzY1NGZkN2EwMTJlMjcxYWZhOGQ0ZTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCA0NC80N10gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCisKK211c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQordGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKK2FjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCitvbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKK2RlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90CitjaGFuZ2UgdGhlIGRlZmF1bHRzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGxpYmdjYy9NYWtlZmlsZS5pbiAgICAgICAgICAgfCAgMSArCisgbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCB8ICA1ICsrKystCisgbGliZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKworIGxpYmdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxMiArKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGxpYmdjYy9jb25maWd1cmUKKworZGlmZiAtLWdpdCBhL2xpYmdjYy9NYWtlZmlsZS5pbiBiL2xpYmdjYy9NYWtlZmlsZS5pbgoraW5kZXggYTFhMzkyZGU4OGQuLjJmZTY4ODlhMzQyIDEwMDY0NAorLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCisrKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KK0BAIC00OCw2ICs0OCw3IEBAIHVud2luZF9oZWFkZXIgPSBAdW53aW5kX2hlYWRlckAKKyBtZF91bndpbmRfaGVhZGVyID0gQG1kX3Vud2luZF9oZWFkZXJACisgc2ZwX21hY2hpbmVfaGVhZGVyID0gQHNmcF9tYWNoaW5lX2hlYWRlckAKKyB0aHJlYWRfaGVhZGVyID0gQHRocmVhZF9oZWFkZXJACisrd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKKyAKKyBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKKyByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKK2luZGV4IDRmNmQ0YzRhNGQyLi5jNTBkZDk0YTJkYSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKK0BAIC0xLDMgKzEsNiBAQAorIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKKyAKKy1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKKytpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKKytlbmRpZgorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYworZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggNDVjNDU5Nzg4YzMuLmUyZDE5YjE0NGI4CistLS0gYS9saWJnY2MvY29uZmlndXJlCisrKysgYi9saWJnY2MvY29uZmlndXJlCitAQCAtNjE4LDYgKzYxOCw3IEBAIGJ1aWxkX3ZlbmRvcgorIGJ1aWxkX2NwdQorIGJ1aWxkCisgd2l0aF9haXhfc29uYW1lCisrd2l0aF9sZGJsMTI4CisgZW5hYmxlX3Z0YWJsZV92ZXJpZnkKKyBlbmFibGVfc2hhcmVkCisgbGliZ2NjX3RvcGRpcgorQEAgLTY2Nyw2ICs2NjgsNyBAQCB3aXRoX2Nyb3NzX2hvc3QKKyB3aXRoX2xkCisgZW5hYmxlX3NoYXJlZAorIGVuYWJsZV92dGFibGVfdmVyaWZ5Cisrd2l0aF9sb25nX2RvdWJsZV8xMjgKKyB3aXRoX2FpeF9zb25hbWUKKyBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKKyB3aXRoX3NsaWJkaXIKK0BAIC0xMzI0LDYgKzEzMjYsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC10YXJnZXQtc3ViZGlyPVNVQkRJUiAgICAgIENvbmZpZ3VyaW5nIGluIGEgc3ViZGlyZWN0b3J5IGZvciB0YXJnZXQKKyAgIC0td2l0aC1jcm9zcy1ob3N0PUhPU1QgICAgICAgICAgIENvbmZpZ3VyaW5nIHdpdGggYSBjcm9zcyBjb21waWxlcgorICAgLS13aXRoLWxkICAgICAgICAgICAgICAgYXJyYW5nZSB0byB1c2UgdGhlIHNwZWNpZmllZCBsZCAoZnVsbCBwYXRobmFtZSkKKysgIC0td2l0aC1sb25nLWRvdWJsZS0xMjggIHVzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHQKKyAgIC0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBvbiBBSVgKK0BAIC0yMjA4LDYgKzIyMTEsMjEgQEAgZmkKKyAKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxvbmctZG91YmxlLTEyOCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCisrZWxzZQorKyAgY2FzZSAiJHtob3N0fSIgaW4KKysgcG93ZXIqLSotbXVzbCopCisrICAgd2l0aF9sZGJsMTI4PSJubyI7OworKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OworKyBlc2FjCisrCisrZmkKKysKKysKKysKKysKKyAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFpeC1zb25hbWUgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7d2l0aF9haXhfc29uYW1lK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAiJHtob3N0fToke2VuYWJsZV9zaGFyZWR9IiBpbgorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUuYWMgYi9saWJnY2MvY29uZmlndXJlLmFjCitpbmRleCBhZjE1MTQ3MzcwOS4uZGFkYTUyNDE2ZGEgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCisrKysgYi9saWJnY2MvY29uZmlndXJlLmFjCitAQCAtNzcsNiArNzcsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAorIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCisgQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCisgCisrQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAorK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCisrICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAorKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKKytbY2FzZSAiJHtob3N0fSIgaW4KKysgcG93ZXIqLSotbXVzbCopCisrICAgd2l0aF9sZGJsMTI4PSJubyI7OworKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OworKyBlc2FjCisrXSkKKytBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCisrCisgQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKKyBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAorICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FhMDM4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5MmJlYjg4M2FiNTdhMjNhMzViYTc2YzQ5NmJjMWY0Y2FiYjE2OTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDQ1LzQ3XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworaW5kZXggNzZiZTc3MTA5NjAuLmExZWUyZWUyNmVkIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKKysrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitAQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKKyAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCisgCisgU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorLQkkKFNITElCX0xERkxBR1MpIFwKKysJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKKyAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCisgCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAorIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZDIyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gOWI5NTFjOGY2YjBhYWZmN2MxNmRjNGRiNzJiNWU1NmVjNzM4MTBiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0Ny80N10gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCisKK211c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90CitzbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9naW5jbHVkZS9zdGRkZWYuaCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitpbmRleCA4NzJmNDUxY2FjOS4uN2U5MDkzODM4N2MgMTAwNjQ0CistLS0gYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKKysrKyBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAorQEAgLTEzNCw2ICsxMzQsNyBAQCBfVFlQRV93Y2hhcl90OworICNpZm5kZWYgX19faW50X3B0cmRpZmZfdF9oCisgI2lmbmRlZiBfR0NDX1BUUkRJRkZfVAorICNpZm5kZWYgX1BUUkRJRkZfVF9ERUNMQVJFRCAvKiBEcmFnb25GbHkgKi8KKysjaWZuZGVmIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNkZWZpbmUgX1BUUkRJRkZfVAorICNkZWZpbmUgX1RfUFRSRElGRl8KKyAjZGVmaW5lIF9UX1BUUkRJRkYKK0BAIC0xNDMsMTAgKzE0NCwxMiBAQCBfVFlQRV93Y2hhcl90OworICNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCisgI2RlZmluZSBfR0NDX1BUUkRJRkZfVAorICNkZWZpbmUgX1BUUkRJRkZfVF9ERUNMQVJFRAorKyNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2lmbmRlZiBfX1BUUkRJRkZfVFlQRV9fCisgI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50CisgI2VuZGlmCisgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKysjZW5kaWYgLyogX19ERUZJTkVEX3B0cmRpZmZfdCAqLworICNlbmRpZiAvKiBfUFRSRElGRl9UX0RFQ0xBUkVEICovCisgI2VuZGlmIC8qIF9HQ0NfUFRSRElGRl9UICovCisgI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLworQEAgLTE4NCw2ICsxODcsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNpZm5kZWYgX0dDQ19TSVpFX1QKKyAjaWZuZGVmIF9TSVpFVF8KKyAjaWZuZGVmIF9fc2l6ZV90CisrI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1NJWkVfVAorQEAgLTIwMCw2ICsyMDQsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNkZWZpbmUgX19faW50X3NpemVfdF9oCisgI2RlZmluZSBfR0NDX1NJWkVfVAorICNkZWZpbmUgX1NJWkVUXworKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2lmIChkZWZpbmVkIChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDUpKSBcCisgICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKKyAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQorQEAgLTIzNSw2ICsyNDAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZW5kaWYgLyogX1NJWkVfVCAqLworICNlbmRpZiAvKiBfX1NJWkVfVF9fICovCisgI2VuZGlmIC8qIF9fc2l6ZV90X18gKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLworICN1bmRlZglfX25lZWRfc2l6ZV90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfc2l6ZV90LiAgKi8KKyAKK0BAIC0yNjQsNiArMjcwLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2lmbmRlZiBfX19pbnRfd2NoYXJfdF9oCisgI2lmbmRlZiBfX0lOVF9XQ0hBUl9UX0gKKyAjaWZuZGVmIF9HQ0NfV0NIQVJfVAorKyNpZm5kZWYgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLworICNkZWZpbmUgX193Y2hhcl90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19XQ0hBUl9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9XQ0hBUl9UCitAQCAtMjc5LDYgKzI4Niw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNkZWZpbmUgX19JTlRfV0NIQVJfVF9ICisgI2RlZmluZSBfR0NDX1dDSEFSX1QKKyAjZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgCisgLyogT24gQlNELzM4NiAxLjEsIGF0IGxlYXN0LCBtYWNoaW5lL2Fuc2kuaCBkZWZpbmVzIF9CU0RfV0NIQVJfVF8KKyAgICBpbnN0ZWFkIG9mIF9XQ0hBUl9UXywgYW5kIF9CU0RfUlVORV9UXyAod2hpY2gsIHVubGlrZSB0aGUgb3RoZXIKK0BAIC0zNDQsNiArMzUyLDcgQEAgdHlwZWRlZiBfX1dDSEFSX1RZUEVfXyB3Y2hhcl90OworICNlbmRpZgorICNlbmRpZiAvKiBfX1dDSEFSX1RfXyAqLworICNlbmRpZiAvKiBfX3djaGFyX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfd2NoYXJfdCBtdXNsICovCisgI3VuZGVmCV9fbmVlZF93Y2hhcl90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfd2NoYXJfdC4gICovCisgCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTZlOTEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDQ0ZWY4MDY4OGI1NmJlZWE4NWMwMDcwODQwZGVhMWUyYTRlMzRhZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMyBKdW4gMjAxNyAxMjoxMjo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDQ5LzQ5XSBnY2M6IEVuYWJsZSBzdGF0aWMgUElFCisKK1N0YXRpYyBQSUUgc3VwcG9ydCBpbiBHQ0MKK3NlZQoraHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxNS0wNi9tc2cwMDAwOC5odG1sCisKK3N0YXJ0ZmlsZXMgYmVmb3JlIHBhdGNoOgorIC1zdGF0aWMgLT4gY3J0MS5vIGNydGkubyBjcnRiZWdpblQubworIC1zdGF0aWMgLVBJRSAtPiBjcnQxLm8gY3J0aS5vIGNydGJlZ2luVC5vCisgCithZnRlciBwYXRjaDoKKyAtc3RhdGljIC0+IGNydDEubyBjcnRpLm8gY3J0YmVnaW5ULm8KKyAtc3RhdGljIC1QSUUgLT4gcmNydDEubyBjcnRpLm8gY3J0YmVnaW5TLm8KKyAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCistLS0KKyBnY2MvY29uZmlnL2dudS11c2VyLmggfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2dudS11c2VyLmggYi9nY2MvY29uZmlnL2dudS11c2VyLmgKK2luZGV4IGRlNjA1YjAuLmIwMzViYmUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2dudS11c2VyLmgKKysrKyBiL2djYy9jb25maWcvZ251LXVzZXIuaAorQEAgLTUyLDExICs1MiwxMSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAjZGVmaW5lIEdOVV9VU0VSX1RBUkdFVF9TVEFSVEZJTEVfU1BFQyBcCisgICAiJXtzaGFyZWQ6OyBcCisgICAgICBwZ3xwfHByb2ZpbGU6Z2NydDEubyVzOyBcCistICAgICBzdGF0aWM6Y3J0MS5vJXM7IFwKKysgICAgIHN0YXRpYzogJXsiIFBJRV9TUEVDICI6IHJjcnQxLm8lczsgOmNydDEubyVzfTsgXAorICAgICAgIiBQSUVfU1BFQyAiOlNjcnQxLm8lczsgXAorICAgICAgOmNydDEubyVzfSBcCisgICAgY3J0aS5vJXMgXAorLSAgICV7c3RhdGljOmNydGJlZ2luVC5vJXM7IFwKKysgICAle3N0YXRpYzogJXsiIFBJRV9TUEVDICI6IGNydGJlZ2luUy5vJXM7IDpjcnRiZWdpblQubyVzfTsgXAorICAgICAgc2hhcmVkfCIgUElFX1NQRUMgIjpjcnRiZWdpblMubyVzOyBcCisgICAgICA6Y3J0YmVnaW4ubyVzfSBcCisgICAgJXtmdnRhYmxlLXZlcmlmeT1ub25lOiVzOyBcCisKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNTAtUklTQy1WLUhhbmRsZS1ub24tbGVnaXRpbWF0ZS1hZGRyZXNzLWluLXJpc2N2X2xlZ2l0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMTRkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNTAtUklTQy1WLUhhbmRsZS1ub24tbGVnaXRpbWF0ZS1hZGRyZXNzLWluLXJpc2N2X2xlZ2l0aS5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDE2MjEwZTYyNzBlMjAwY2Q0ODkyYTkwZWNlZjYwODkwNmJlM2ExMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXRvIENoZW5nIDxraXRvLmNoZW5nQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNCBNYXkgMjAxNyAwMjoxMToxMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBSSVNDLVY6IEhhbmRsZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGluCisgcmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlCisKK0dDQyBtYXkgZ2VuZXJhdGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBkdWUgdG8gd2UgYWxsb3cgc29tZQorbG9hZC9zdG9yZSB3aXRoIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgaW4gcGljLm1kLgorCisgIDIwMTctMDUtMTIgIEtpdG8gQ2hlbmcgIDxraXRvLmNoZW5nQGdtYWlsLmNvbT4KKworICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3YuYyAocmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlKTogSGFuZGxlCisgICAgICBub24tbGVnaXRpbWF0ZSBhZGRyZXNzLgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgIHwgIDUgKysrKysKKyBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMgfCAxNiArKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKK2luZGV4IGY3ZmVjNGJmY2Y4Li5kNTE5YmUxNjU5YSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYworKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCitAQCAtMTM4NSw2ICsxMzg1LDIyIEBAIHJpc2N2X2xlZ2l0aW1pemVfbW92ZSAoZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGRlc3QsIHJ0eCBzcmMpCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAKKysgIC8qIFJJU0MtViBHQ0MgbWF5IGdlbmVyYXRlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgZHVlIHRvIHdlIHByb3ZpZGUgc29tZQorKyAgICAgcGF0dGVybiBmb3Igb3B0aW1pemUgYWNjZXNzIFBJQyBsb2NhbCBzeW1ib2wgYW5kIGl0J3MgbWFrZSBHQ0MgZ2VuZXJhdGUKKysgICAgIHVucmVjb2duaXphYmxlIGluc3RydWN0aW9uIGR1cmluZyBvcHRtaXppbmcuICAqLworKworKyAgaWYgKE1FTV9QIChkZXN0KSAmJiAhcmlzY3ZfbGVnaXRpbWF0ZV9hZGRyZXNzX3AgKG1vZGUsIFhFWFAgKGRlc3QsIDApLAorKwkJCQkJCSAgIHJlbG9hZF9jb21wbGV0ZWQpKQorKyAgICB7CisrICAgICAgWEVYUCAoZGVzdCwgMCkgPSByaXNjdl9mb3JjZV9hZGRyZXNzIChYRVhQIChkZXN0LCAwKSwgbW9kZSk7CisrICAgIH0KKysKKysgIGlmIChNRU1fUCAoc3JjKSAmJiAhcmlzY3ZfbGVnaXRpbWF0ZV9hZGRyZXNzX3AgKG1vZGUsIFhFWFAgKHNyYywgMCksCisrCQkJCQkJICByZWxvYWRfY29tcGxldGVkKSkKKysgICAgeworKyAgICAgIFhFWFAgKHNyYywgMCkgPSByaXNjdl9mb3JjZV9hZGRyZXNzIChYRVhQIChzcmMsIDApLCBtb2RlKTsKKysgICAgfQorKworICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zL2ZpeC1zZWdtZW50YXRpb24tZmF1bHQtcHJlY29tcGlsZWQtaGRyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYWRlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zL2ZpeC1zZWdtZW50YXRpb24tZmF1bHQtcHJlY29tcGlsZWQtaGRyLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKKworUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKK3N0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMgCitDUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KK3Rob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KKworCitbWU9DVE8gIzExNzM4XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYworLS0tIGEvbGliY3BwL2xleC5jCisrKysgYi9saWJjcHAvbGV4LmMKK0BAIC0zMjI5LDExICszMjI5LDI3IEBACisgICAgIHNwZWxsX2lkZW50OgorICAgICBjYXNlIFNQRUxMX0lERU5UOgorICAgICAgIGlmIChmb3JzdHJpbmcpCistCXsKKy0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CistCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworLQl9CisrICAgICAgICB7CisrICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOworKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCisrICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOworKyAgICAgICAgICAgICAgaWYgKHN0cikKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKKysgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7CisrICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICAgIGVsc2UKKyAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKKyAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKaW5kZXggODU3YWE4Zi4uYWEzYjUzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKQEAgLTQzLDcgKzQzLDcgQEAKICAgICByZXR1cm4gIiIKIAogZGVmIGdldF9sb25nX2RvdWJsZV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVFJBTlNMQVRFRF9UQVJHRVRfQVJDSCcpIGluIFsgJ3Bvd2VycGMnLCAncG93ZXJwYzY0JyBdIGFuZCBkLmdldFZhcignVENMSUJDJykgaW4gWyAndWNsaWJjJywgJ2dsaWJjJyBdOgorICAgIGlmIGQuZ2V0VmFyKCdUUkFOU0xBVEVEX1RBUkdFVF9BUkNIJykgaW4gWyAncG93ZXJwYycsICdwb3dlcnBjNjQnIF0gYW5kIGQuZ2V0VmFyKCdUQ0xJQkMnKSBpbiBbICdnbGliYycgXToKICAgICAgICAgcmV0dXJuICItLXdpdGgtbG9uZy1kb3VibGUtMTI4IgogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiAiLS13aXRob3V0LWxvbmctZG91YmxlLTEyOCIKQEAgLTEwNSw2ICsxMDUsNyBAQAogQklOViA9ICIke1BWfSIKICNTID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9IgogUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKKwogQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgogCiB0YXJnZXRfaW5jbHVkZWRpciA/PSAiJHtpbmNsdWRlZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwppbmRleCAwMGVmODllLi5lMmNlMjM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCkBAIC0yMiw2ICsyMiw4IEBACiBHQ0NNVUxUSUxJQiA/PSAiLS1kaXNhYmxlLW11bHRpbGliIgogR0NDVEhSRUFEUyA/PSAicG9zaXgiCiAKK0dDQ1BJRSA/Pz0gIiIKKwogRVhUUkFfT0VDT05GID0gIlwKICAgICAke0BbJy0tZW5hYmxlLWNsb2NhbGU9Z2VuZXJpYycsICcnXVtkLmdldFZhcignVVNFX05MUycpICE9ICdubyddfSBcCiAgICAgLS13aXRoLWdudS1sZCBcCkBAIC0yOSw2ICszMSw3IEBACiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPSR7TEFOR1VBR0VTfSBcCiAgICAgLS1lbmFibGUtdGhyZWFkcz0ke0dDQ1RIUkVBRFN9IFwKICAgICAke0dDQ01VTFRJTElCfSBcCisgICAgJHtHQ0NQSUV9IFwKICAgICAtLWVuYWJsZS1jOTkgXAogICAgIC0tZW5hYmxlLWxvbmctbG9uZyBcCiAgICAgLS1lbmFibGUtc3ltdmVycz1nbnUgXApAQCAtNTMsOSArNTYsNyBAQAogIyBpbiB0aGUgY29uZmlnLmxvZyBmaWxlcyAod2hpY2ggbWlnaHQgbm90IGdldCBnZW5lcmF0ZWQgdW50aWwgZG9fY29tcGlsZQogIyBoZW5jZSBiZWluZyBtaXNzZWQgYnkgdGhlIGluc2FuZSBkb19jb25maWd1cmUgY2hlY2spLgogCi0jIEJ1aWxkIHVjbGliYyBjb21waWxlcnMgd2l0aG91dCBjeGFfYXRleGl0IHN1cHBvcnQKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGludXggPSAiIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCIKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjQgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0IC0td2l0aC10dW5lLTY0PW1pcHM2NCIKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ZWwgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0IC0td2l0aC10dW5lLTY0PW1pcHM2NCIKQEAgLTY2LDE0ICs2Nyw2IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNpc2E2NHI2ZWwgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0cjYiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNpc2E2NHI2ID0gIiAtLXdpdGgtYWJpPTY0IC0td2l0aC1hcmNoLTY0PW1pcHM2NHI2IgogCi0jIEFSTXY2KyBhZGRzIGF0b21pYyBpbnN0cnVjdGlvbnMgdGhhdCBhZmZlY3QgdGhlIEFCSSBpbiBsaWJyYXJpZXMgYnVpbHQKLSMgd2l0aCBUVU5FX0NDQVJHUyBpbiBnY2MtcnVudGltZS4gIE1ha2UgdGhlIGNvbXBpbGVyIGRlZmF1bHQgdG8gYQotIyBjb21wYXRpYmxlIGFyY2hpdGVjdHVyZS4gIGFybXY2IGFuZCBhcm12N2EgY292ZXIgdGhlIG1pbmltdW0gdHVuZQotIyBmZWF0dXJlcyB1c2VkIGluIE9FLgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12NiA9ICIgLS13aXRoLWFyY2g9YXJtdjYiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3YSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjd2ZSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSIKLQogRVhUUkFfT0VDT05GX0dDQ19GTE9BVCA/Pz0gIiIKIENQUEZMQUdTID0gIiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggZWMxZDI4MS4uNmQ3NzYyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCkBAIC02MCw2ICs2MCw3IEBACiAKIGRvX2NvbXBpbGUgKCkgewogCW9lX3J1bm1ha2UgYWxsLWhvc3QgY29uZmlndXJlLXRhcmdldC1saWJnY2MKKwkoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKIH0KIAogIyBIYXZpbmcgYW55dGhpbmcgYXV0byBkZXBlbmRpbmcgb24gZ2NjLWNyb3NzLXNkayBpcyBhIHJlYWxseSBiYWQgaWRlYS4uLgpAQCAtODAsNyArODEsNyBAQAogICAgICR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAogICAgICR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2Jpbi8qIFwKICAgICAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9saWIvKiBcCi0gICAgJHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vdXNyL2luY2x1ZGUvKiBcCisgICAgJHtwcmVmaXh9LyR7VEFSR0VUX1NZU30ke3RhcmdldF9pbmNsdWRlZGlyfS8qIFwKICIKIElOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCiAKQEAgLTk2LDcgKzk3LDcgQEAKIEJJTlJFTFBBVEggPSAiJHtAb3MucGF0aC5yZWxwYXRoKGQuZXhwYW5kKCIke2JpbmRpcn0iKSwgZC5leHBhbmQoIiR7bGliZXhlY2Rpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfSIpKX0iCiAKIGRvX2luc3RhbGwgKCkgewotCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oICkKKwkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaC1mb3JidWlsZCBpbnN0YWxsLXVud2luZF9oICkKIAlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtaG9zdAogCiAJIyBDbGVhbnVwIHNvbWUgb2YgdGhlICR7bGliZGlyfXssZXhlY30vZ2NjIHN0dWZmIC4uLgpAQCAtMTUzLDcgKzE1NCw3IEBACiBERVBFTkRTICs9ICJuYXRpdmVzZGstZ21wIG5hdGl2ZXNkay1tcGZyIG5hdGl2ZXNkay1saWJtcGMgJHtFTEZVVElMU30gbmF0aXZlc2RrLXpsaWIiCiBSREVQRU5EU18ke1BOfSArPSAibmF0aXZlc2RrLW1wZnIgbmF0aXZlc2RrLWxpYm1wYyAke0VMRlVUSUxTfSIKIAotU1lTVEVNSEVBREVSUyA9ICIvdXNyL2luY2x1ZGUiCitTWVNURU1IRUFERVJTID0gIiR7dGFyZ2V0X2luY2x1ZGVkaXJ9LyIKIFNZU1RFTUxJQlMgPSAiJHt0YXJnZXRfYmFzZV9saWJkaXJ9LyIKIFNZU1RFTUxJQlMxID0gIiR7dGFyZ2V0X2xpYmRpcn0vIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWwuaW5jCmluZGV4IDk1MDJjMmIuLjg5MmIxZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMKQEAgLTM1LDEwICszNSwxMSBAQAogCiBkb19jb21waWxlICgpIHsKICAgICBvZV9ydW5tYWtlIGFsbC1nY2MgY29uZmlndXJlLXRhcmdldC1saWJnY2MKKyAgICAoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKIH0KIAogZG9faW5zdGFsbCAoKSB7Ci0JKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2ggKQorCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oLWZvcmJ1aWxkIGluc3RhbGwtdW53aW5kX2gpCiAJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWdjYwogCiAJIyBXZSBkb24ndCByZWFsbHkgbmVlZCB0aGlzIChoZXJlIHNoYXJlcy8gY29udGFpbnMgbWFuLywgaW5mby8sIGxvY2FsZS8pLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKaW5kZXggNDU5ODVjMy4uMWUxODRhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCkBAIC01Nyw2ICs1Nyw3IEBACiAJZXhwb3J0IExERkxBR1NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfTERGTEFHU30iCiAKIAlvZV9ydW5tYWtlIGFsbC1ob3N0IGNvbmZpZ3VyZS10YXJnZXQtbGliZ2NjCisJKGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgZW5hYmxlLWV4ZWN1dGUtc3RhY2suYyB1bndpbmQuaCBtZC11bndpbmQtc3VwcG9ydC5oIHNmcC1tYWNoaW5lLmggZ3Roci1kZWZhdWx0LmgpCiAJIyBub3cgZ2VuZXJhdGUgc2NyaXB0IHRvIGRyaXZlIHRlc3RpbmcKIAllY2hvICIjIS91c3IvYmluL2VudiBzaCIgPiR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKIAlzZXQgPj4gJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwpAQCAtMTU1LDIyICsxNTYsMjQgQEAKIEJJTlJFTFBBVEggPSAiJHtAb3MucGF0aC5yZWxwYXRoKGQuZXhwYW5kKCIke1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9L2Jpbi8ke1RBUkdFVF9TWVN9IiksIGQuZXhwYW5kKCIke2xpYmV4ZWNkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0iKSl9IgogCiBkb19pbnN0YWxsICgpIHsKLQkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaCApCisJKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2gtZm9yYnVpbGQgaW5zdGFsbC11bndpbmRfaCApCiAJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWhvc3QKIAogCWluc3RhbGwgLWQgJHtEfSR7dGFyZ2V0X2Jhc2VfbGliZGlyfQogCWluc3RhbGwgLWQgJHtEfSR7dGFyZ2V0X2xpYmRpcn0KLSAgICAKKwogCSMgTGluayBnZm9ydHJhbiB0byBnNzcgdG8gc2F0aXNmeSBub3Qtc28tc21hcnQgY29uZmlndXJlIG9yIGhhcmQgY29kZWQgZzc3CiAJIyBnZm9ydHJhbiBpcyBmdWxseSBiYWNrd2FyZHMgY29tcGF0aWJsZS4gVGhpcyBpcyBhIHNhZmUgYW5kIHByYWN0aWNhbCBzb2x1dGlvbi4gCi0JbG4gLXNmICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1BSRUZJWH1nZm9ydHJhbiAke1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9L2Jpbi8ke1RBUkdFVF9QUkVGSVh9Zzc3IHx8IHRydWUKKwlpZiBbIC1uICIke0BkLmdldFZhcignRk9SVFJBTicpfSIgXTsgdGhlbgorCQlsbiAtc2YgJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfS9iaW4vJHtUQVJHRVRfUFJFRklYfWdmb3J0cmFuICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1BSRUZJWH1nNzcgfHwgdHJ1ZQorCQlmb3J0c3ltbGlua3M9Imc3NyBnZm9ydHJhbiIKKwlmaQogCi0JCiAJIyBJbnNlcnQgc3ltbGlua3MgaW50byBsaWJleGVjIHNvIHdoZW4gdG9vbHMgd2l0aG91dCBhIHByZWZpeCBhcmUgc2VhcmNoZWQgZm9yLCB0aGUgY29ycmVjdCBvbmVzIGFyZQogCSMgZm91bmQuIFRoZXNlIG5lZWQgdG8gYmUgcmVsYXRpdmUgcGF0aHMgc28gdGhleSB3b3JrIGluIGRpZmZlcmVudCBsb2NhdGlvbnMuCiAJZGVzdD0ke0R9JHtsaWJleGVjZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9LwogCWluc3RhbGwgLWQgJGRlc3QKLQlmb3IgdCBpbiBhciBhcyBsZCBubSBvYmpjb3B5IG9iamR1bXAgcmFubGliIHN0cmlwIGc3NyBnY2MgY3BwIGdmb3J0cmFuOyBkbworCWZvciB0IGluIGFyIGFzIGxkIGxkLmJmZCBsZC5nb2xkIG5tIG9iamNvcHkgb2JqZHVtcCByYW5saWIgc3RyaXAgZ2NjIGNwcCAkZm9ydHN5bWxpbmtzOyBkbwogCQlsbiAtc2YgJHtCSU5SRUxQQVRIfS8ke1RBUkdFVF9QUkVGSVh9JHQgJGRlc3QkdAogCQlsbiAtc2YgJHtCSU5SRUxQQVRIfS8ke1RBUkdFVF9QUkVGSVh9JHQgJHtkZXN0fSR7VEFSR0VUX1BSRUZJWH0kdAogCWRvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IDBkYzQwNWMuLmVlMDg1MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTM0LDcgKzM0LDYgQEAKIAogZG9fY29uZmlndXJlICgpIHsKIAlleHBvcnQgQ1hYPSIke0NYWH0gLW5vc3RkaW5jKysgLW5vc3RkbGliKysiCi0KIAlmb3IgZCBpbiBsaWJnY2MgJHtSVU5USU1FVEFSR0VUfTsgZG8KIAkJZWNobyAiQ29uZmlndXJpbmcgJGQiCiAJCXJtIC1yZiAke0J9LyR7VEFSR0VUX1NZU30vJGQvCkBAIC00Myw2ICs0Miw5IEBACiAJCWNobW9kIGEreCAke1N9LyRkL2NvbmZpZ3VyZQogCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtTfS8kZCIsICIke0J9LyR7VEFSR0VUX1NZU30vJGQiKX0KIAkJJHJlbHBhdGgvY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9CisJCWlmIFsgIiRkIiA9ICJsaWJnY2MiIF07IHRoZW4KKwkJCShjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQorCQlmaQogCWRvbmUKIH0KIEVYVFJBQ09ORkZVTkNTICs9ICJleHRyYWN0X3N0YXNoZWRfYnVpbGRkaXIiCkBAIC05OSw4ICsxMDEsOCBAQAogCiAJaWYgWyAiJHtUQ0xJQkN9IiAhPSAiZ2xpYmMiIF07IHRoZW4KIAkJY2FzZSAiJHtUQVJHRVRfT1N9IiBpbgotCQkJImxpbnV4LW11c2wiIHwgImxpbnV4LXVjbGliYyIgfCAibGludXgtKnNwZSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgiOzsKLQkJCSJsaW51eC1tdXNsZWFiaSIgfCAibGludXgtdWNsaWJjZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OworCQkJImxpbnV4LW11c2wiIHwgImxpbnV4LSpzcGUiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CisJCQkibGludXgtbXVzbGVhYmkiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4LWdudWVhYmkiOzsKIAkJCSopIGV4dHJhX3RhcmdldF9vcz0ibGludXgiOzsKIAkJZXNhYwogCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKaW5kZXggZjk3ODg1Yi4uMzE4M2IyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwpAQCAtOTcsNiArOTcsNyBAQAogRklMRVNfbGlidHNhbi1kZXYgKz0gIlwKICAgICAke2xpYmRpcn0vbGlidHNhbi5zbyBcCiAgICAgJHtsaWJkaXJ9L2xpYnRzYW4ubGEgXAorICAgICR7bGliZGlyfS9saWJ0c2FuXyoubyBcCiAiCiBGSUxFU19saWJ0c2FuLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYnRzYW4uYSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV81LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCmluZGV4IGVlZjQ0MzQuLmI2ZTMxZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCkBAIC05LDYgKzksMTQgQEAKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eHN0ZGJhc2UgPSAiIC0tZW5hYmxlLWNsb2NhbGU9Z251IgogCisjIEFSTXY2KyBhZGRzIGF0b21pYyBpbnN0cnVjdGlvbnMgdGhhdCBhZmZlY3QgdGhlIEFCSSBpbiBsaWJyYXJpZXMgYnVpbHQKKyMgd2l0aCBUVU5FX0NDQVJHUyBpbiBnY2MtcnVudGltZS4gIE1ha2UgdGhlIGNvbXBpbGVyIGRlZmF1bHQgdG8gYQorIyBjb21wYXRpYmxlIGFyY2hpdGVjdHVyZS4gIGFybXY2IGFuZCBhcm12N2EgY292ZXIgdGhlIG1pbmltdW0gdHVuZQorIyBmZWF0dXJlcyB1c2VkIGluIE9FLgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12NiA9ICIgLS13aXRoLWFyY2g9YXJtdjYiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3YSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjd2ZSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSIKKwogIyBsaWJjYzEgcmVxdXJlcyBnY2NfY3Zfb2JqZHVtcCB3aGVuIGNyb3NzIGJ1aWxkLCBidXQgZ2NjX2N2X29iamR1bXAgaXMKICMgc2V0IGluIHN1YmRpciBnY2MsIHNvIHN1YmRpciBsaWJjYzEgY2FuJ3QgdXNlIGl0LCBleHBvcnQgaXQgaGVyZSB0bwogIyBmaXggdGhlIHByb2JsZW0uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2MThkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXRhcmdldC5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGZhaWxzIHdpdGgKLSMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicwotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY183LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMjA4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNy4zLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2MtdGFyZ2V0LmluYworCisjIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgYXJtdjV0IGZhaWxzIHdpdGgKKyMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicworIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKaW5kZXggMzhkMTY0My4uMTUwMGZiNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCkBAIC01LDggKzUsOCBAQAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKIAlpZiBbICIke1RDTElCQ30iICE9ICJnbGliYyIgXTsgdGhlbgogCQljYXNlICIke1RBUkdFVF9PU30iIGluCi0JCQkibGludXgtbXVzbCIgfCAibGludXgtdWNsaWJjIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwotCQkJImxpbnV4LW11c2xlYWJpIiB8ICJsaW51eC11Y2xpYmNlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CisJCQkibGludXgtbXVzbCIgfCAibGludXgtKnNwZSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgiOzsKKwkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OwogCQkJKikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwogCQllc2FjCiAJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY183LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY181LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY183LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYwppbmRleCA0ODQ2ZGVjLi41ZjVkNGFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCkBAIC0zNyw3ICszNyw3IEBACiB9CiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1ERVBFTkRTID0gImdjYy1ydW50aW1lIgorREVQRU5EUyA9ICJnY2MtcnVudGltZSBnY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgogCkBAIC01NCw2ICs1NCw3IEBACiAgICAgJHtsaWJkaXJ9L2xpYmdmb3J0cmFuLmxhIFwKICAgICAke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9saWJnZm9ydHJhbmJlZ2luLiogXAogICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2xpYmNhZl9zaW5nbGUqIFwKKyAgICAke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9maW5jbHVkZS8gXAogIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJnZm9ydHJhbi5hIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItNy4xMi4xLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi03LjEyLjEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzQ3NTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi03LjEyLjEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMTkzNDUzMzQ3ZGRjZWQ3YWNiNmIxY2QyZWU4ZjJlNGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDYwNzY4MGI5NzNkM2VjOTJjMzBhZDAyOWYxYjdkYmRlMzg3Njg2OWU2YjNhMTE3ZDhhN2U5MDA4MTExMzE4NiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmEzMmNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC5pbmMKQEAgLTAsMCArMSwyMiBAQAorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisJCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYzNkMzVjZDk0OTA4NGJlNTNiOTJjYzFlMDM0ODVmODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZhMjRmZmU0OTE3ZTY3MDE0ZWY5MjczZWI4YjU0N2NiOTZhMTNlNWNhNzQ4OTViMDZkNjgzYjM5MWYzZjRlZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYwppbmRleCAyMzliMzc1Li45MTY0YTJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYwpAQCAtNSw3ICs1LDYgQEAKIAogTFRUTkdVU1QgPSAibHR0bmctdXN0IgogTFRUTkdVU1RfYWFyY2g2NCA9ICIiCi1MVFROR1VTVF9saWJjLXVjbGliYyA9ICIiCiBMVFROR1VTVF9taXBzYXJjaCA9ICIiCiBMVFROR1VTVF9zaDQgPSAiIgogTFRUTkdVU1RfbGliYy1tdXNsID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl83LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fNy4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzcuMTIuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCmluZGV4IGZjNmM5MmYuLjRmMDZkNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJjODFlMTcyMTZiNGU0NzFhMWNlMGJkZGI1MGYzNzRiMDcyMmEyY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDkxZGEwNDU4YjMzMzI0OWViOWMyZjRjMWYxZTUzZmE0YmMwODVjYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxOSBKYW4gMjAxNiAxODoxODo1MiAtMDgwMAogU3ViamVjdDogW1BBVENIIDAxLzEwXSBpbmNsdWRlIHN5cy90eXBlcy5oIGZvciBtb2RlX3QKQEAgLTE0LDcgKzE0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmggYi9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCi1pbmRleCA0YzE0YzIwNGJiLi5iZGFiMThmN2Y3IDEwMDY0NAoraW5kZXggM2NjMmJjNGJhYi4uZTZiMTliMDZiOSAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKICsrKyBiL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC0yNiw1ICsyNiw1IEBACiAgc3RydWN0IGVtaXRfb3BzOwogIHN0cnVjdCBidWZmZXI7CiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAppbmRleCA5YTkyMDFiLi44M2M0ZGRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMzE2ZDYwNGIzMTJiZWFkNzg1OTRmMDJlMTM1NTYzM2VkYTk1MDdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5Y2U2MWY5N2I3NzU4Nzk0ZjA2ODk0ZTkzNGZiYjI1NmZmNjIxNjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjoyNzo1NSArMDAwMAogU3ViamVjdDogW1BBVENIIDAyLzEwXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKQEAgLTExLDcgKzExLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCi1pbmRleCBhMDVmNTA3NjdhLi44ZDBmYTY0ZWE4IDEwMDY0NAoraW5kZXggMzk0NDk1NmI1ZC4uYWEzNTVlODM0NyAxMDA2NDQKIC0tLSBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KICsrKyBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KIEBAIC0zNSw3ICszNSw3IEBAIHRvb2xkaXIgPSAkKGxpYmRpcikvJCh0YXJnZXRfYWxpYXMpCkBAIC0yNCw1ICsyNCw1IEBACiAgaW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAogIAogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCmluZGV4IDc0YzAwMDYuLjZmNzk1NWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMjkxMmIxZDJlNWM4NTRhMTEyMTc2NjgyOTAzYjY5NmRhMzNlMDAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjYTBlZjA2YjczMjA5MTJkZjM1MGU3MzBlNjNmOWJhZmRhYTZlYTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MzA6MDkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMy8xMF0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCkBAIC0xNywxMCArMTcsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCAwZjIwZjE2ODE0Li43MjI1MzJiYjZjIDEwMDY0NAoraW5kZXggODA0MWQ4NGJlNy4uZjJkZjFiOTkwNyAxMDA2NDQKIC0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCiArKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotQEAgLTQ2LDYgKzQ2LDExIEBACitAQCAtNDcsNiArNDcsMTEgQEAKICAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKICAjZW5kaWYKICAKQEAgLTMzLDUgKzMzLDUgQEAKICAgICB3ZSdsbCBjbGVhciB0aGlzIGFuZCB1c2UgUFRSQUNFX1BFRUtVU0VSIGluc3RlYWQuICAqLwogIHN0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfcmVnc2V0cyA9IDE7CiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCmluZGV4IDg0N2YyNGYuLjM1N2RiMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gN2VmN2I3MDk4ODUzNzgyNzljNDI0ZWFiMDUxMGI5MzIzMzQwMGIyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGY2ZDcxMTE4Y2E5MTQwMDJmY2FkNzhkMmM4YTUxODIyM2QwNmJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgQXVnIDIwMTYgMTc6MzI6NTAgLTA3MDAKK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTg6MzI6MTQgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAwNC8xMF0gcHBjL3B0cmFjZTogRGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzIG9uICFHTElCQwogIHN5c3RlbXMKIApAQCAtMTMsNyArMTMsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotaW5kZXggMWQwMTNmMTg1Zi4uNjgwOThiM2RiOSAxMDA2NDQKK2luZGV4IDMzYTlmZWIxMmMuLjFhOTE0MWZhZWYgMTAwNjQ0CiAtLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwogKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKIEBAIC0yMSw3ICsyMSwxMyBAQApAQCAtMzEsNyArMzEsNyBAQAogICNpbmNsdWRlICJuYXQvcHBjLWxpbnV4LmgiCiAgI2luY2x1ZGUgImxpbnV4LXBwYy10ZGVzYy5oIgogZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCi1pbmRleCA4NWZiY2Q4NGJiLi5jYmVjOWM1M2IyIDEwMDY0NAoraW5kZXggNTgzN2VhMTc2Ny4uNzIzMzkyOTE5MiAxMDA2NDQKIC0tLSBhL2dkYi9uYXQvcHBjLWxpbnV4LmgKICsrKyBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKIEBAIC0xOCw3ICsxOCwxMyBAQApAQCAtNDksNSArNDksNSBAQAogIAogIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaAppbmRleCBkMGMxNWY2Li5jYjFiN2FiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY2NDllMmNjY2ZiMTFkZWMwNzZhYmIwMmVhZTBhZmFiOTU2MTQ4MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYwYWM2OGY2MDE4ODVlYTY0ODAyMjlhNWM4YTg5YTAyNTdkYTM3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KQEAgLTEzLDcgKzEzLDcgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKICBnZGIvY29uZmlndXJlLmhvc3QgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogIGdkYi9zaC1saW51eC10ZGVwLmMgICAgICAgICAgICAgICAgICB8IDUxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NCArKy0tCkBAIC0yNCwyNSArMjQsMjYgQEAKICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyAgICAgfCAgIDQgKwogIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgICAgICB8ICAgMyArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgICAgIHwgICA0ICsKLSAxMSBmaWxlcyBjaGFuZ2VkLCA2MTcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCisgMTEgZmlsZXMgY2hhbmdlZCwgNjE4IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCA3YjJkZjg2ODc4Li4xMGYxMjY2ZmUzIDEwMDY0NAoraW5kZXggOGJlNzNiYTQyMy4uZTI4N2ZmNmEyZSAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMTc1MCw2ICsxNzUwLDcgQEAgQUxMREVQRklMRVMgPSBcCi0gCXNjb3JlLXRkZXAuYyBcCi0gCXNlci1nbzMyLmMgc2VyLXBpcGUuYyBzZXItdGNwLmMgc2VyLW1pbmd3LmMgXAotIAlzaC10ZGVwLmMgc2g2NC10ZGVwLmMgc2huYnNkLXRkZXAuYyBzaG5ic2QtbmF0LmMgXAotKwlzaC1saW51eC10ZGVwLmMgc2gtbGludXgtbmF0LmMgXAorQEAgLTI2MzgsNiArMjYzOCw4IEBAIEFMTERFUEZJTEVTID0gXAorIAlzaC1uYnNkLXRkZXAuYyBcCisgCXNoLXRkZXAuYyBcCisgCXNoNjQtdGRlcC5jIFwKKysJc2gtbGludXgtdGRlcC5jIFwKKysJc2gtbGludXgtbmF0LmMgXAogIAlzb2wyLXRkZXAuYyBcCi0gCXNvbGliLXN2cjQuYyBcCi0gCXNwYXJjLWxpbnV4LW5hdC5jIHNwYXJjLWxpbnV4LXRkZXAuYyBcCisgCXNvbGliLWFpeC5jIFwKKyAJc29saWItc3B1LmMgXAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuaG9zdCBiL2dkYi9jb25maWd1cmUuaG9zdAotaW5kZXggZWYyNjVlYmUyOS4uMzIyYTFlMmM2NyAxMDA2NDQKK2luZGV4IGQ3NGZkMDQ5MzQuLmJlMTJkZTE0NDYgMTAwNjQ0CiAtLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKICsrKyBiL2dkYi9jb25maWd1cmUuaG9zdAotQEAgLTE0OSw2ICsxNDksNyBAQCBwb3dlcnBjKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKK0BAIC0xNTAsNiArMTUwLDcgQEAgcG93ZXJwYyotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7CiAgCiAgczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwogIApAQCAtNTEsNyArNTIsNyBAQAogIAkJCWdkYl9ob3N0PW5ic2QgOzsKICBzaCotKi1vcGVuYnNkKikJCWdkYl9ob3N0PW5ic2QgOzsKIGRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwotaW5kZXggMjQxOGQyNTAxMC4uYWM4ZWE5ZTJhNCAxMDA2NDQKK2luZGV4IGM1Yzc0NWQyMTguLjg0ZTUzOWFhZDMgMTAwNjQ0CiAtLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCiArKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCiBAQCAtMTgsMTQgKzE4LDM3IEBACkBAIC01OTksNyArNjAwLDcgQEAKICAKICAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKLWluZGV4IDY5NGY1Zjc0MmQuLjhkNTRkZjdhMWEgMTAwNjQ0CitpbmRleCAyYzJiMjY4NDdkLi4xNGY1MjgxZWQ0IDEwMDY0NAogLS0tIGEvZ2RiL3NoLXRkZXAuYwogKysrIGIvZ2RiL3NoLXRkZXAuYwogQEAgLTIxLDYgKzIxLDkgQEAKQEAgLTYyMCw3ICs2MjEsNyBAQAogICNpbmNsdWRlICJkb3VibGVzdC5oIgogICNpbmNsdWRlICJvc2FiaS5oIgogICNpbmNsdWRlICJyZWdncm91cHMuaCIKLUBAIC02NywyMyArNzEsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0geworQEAgLTY4LDIzICs3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7CiAgCiAgc3RhdGljIGNvbnN0IGNoYXIgKnNoX2FjdGl2ZV9jYWxsaW5nX2NvbnZlbnRpb24gPSBzaF9jY19nY2M7CiAgCkBAIC02NDQsNyArNjQ1LDcgQEAKICBzdGF0aWMgaW50CiAgc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCiAgewotQEAgLTEwNDMsNyArMTAzMCw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0xMDUyLDcgKzEwMzksNyBAQCBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICAgIHJldHVybiAwOwogICAgLyogT3RoZXJ3aXNlIGlmIHRoZSB0eXBlIG9mIHRoYXQgbWVtYmVyIGlzIGZsb2F0LCB0aGUgd2hvbGUgdHlwZSBpcwogICAgICAgdHJlYXRlZCBhcyBmbG9hdC4gICovCkBAIC02NTMsNyArNjU0LDcgQEAKICAgICAgcmV0dXJuIDE7CiAgICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCiAgICByZXR1cm4gMDsKLUBAIC0xMDkzLDcgKzEwODAsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0xMTAyLDcgKzEwODksNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKICAgICAgewpAQCAtNjYyLDcgKzY2Myw3IEBACiAgICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwogICAgICAgIHZhbCA9IHNoX2p1c3RpZnlfdmFsdWVfaW5fcmVnIChnZGJhcmNoLCBhcmdzW2FyZ251bV0sIGxlbik7CiAgCi1AQCAtMTgxOSw3ICsxODA2LDcgQEAgc2hfZHdhcmYyX2ZyYW1lX2luaXRfcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKK0BAIC0xODI4LDcgKzE4MTUsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAogICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOwogIH0KICAKQEAgLTY3MSw3ICs2NzIsNyBAQAogIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQogIHsKICAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci1AQCAtMTg0Niw3ICsxODMzLDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCitAQCAtMTg1NSw3ICsxODQyLDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCiAgICByZXR1cm4gY2FjaGU7CiAgfQogIApAQCAtNjgwLDcgKzY4MSw3IEBACiAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLUBAIC0xOTEzLDkgKzE5MDAsOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorQEAgLTE5MjIsOSArMTkwOSw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCiAgICByZXR1cm4gY2FjaGU7CiAgfQogIApAQCAtNjkzLDcgKzY5NCw3IEBACiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7CiAgICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0gc2hfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotQEAgLTE5MjksNyArMTkxNiw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAorQEAgLTE5MzgsNyArMTkyNSw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAogICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBGcm9iIHJlZ251bSBzbyB0aGF0IHdlIHB1bGwgdGhlIHZhbHVlIGZyb20KICAgICAgIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8KICAgIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKQpAQCAtNzAyLDcgKzcwMyw3IEBACiAgCiAgICBpZiAocmVnbnVtIDwgU0hfTlVNX1JFR1MgJiYgY2FjaGUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAhPSAtMSkKICAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5ICh0aGlzX2ZyYW1lLCByZWdudW0sCi1AQCAtMjIzOCw4ICsyMjI1LDggQEAgc2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMjQ3LDggKzIyMzQsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCiAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICB7CkBAIC03MTIsNyArNzEzLDcgQEAKICAKICAgIC8qIFNINSBpcyBoYW5kbGVkIGVudGlyZWx5IGluIHNoNjQtdGRlcC5jLiAgKi8KICAgIGlmIChpbmZvLmJmZF9hcmNoX2luZm8tPm1hY2ggPT0gYmZkX21hY2hfc2g1KQotQEAgLTIyNTUsNiArMjI0MiwxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorQEAgLTIyNjQsNiArMjI1MSwxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogICAgdGRlcCA9IFhDTkVXIChzdHJ1Y3QgZ2RiYXJjaF90ZGVwKTsKICAgIGdkYmFyY2ggPSBnZGJhcmNoX2FsbG9jICgmaW5mbywgdGRlcCk7CiAgCkBAIC03MzEsNyArNzMyLDcgQEAKICAgIHNldF9nZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7CiAgICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKICAgIHNldF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKLUBAIC0yNDA1LDEwICsyNDA0LDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCitAQCAtMjQxOCwxMCArMjQxNywxMSBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC03NDUsNyArNzQ2LDcgQEAKICAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9mcmFtZV91bndpbmQpOwogIAogZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmggYi9nZGIvc2gtdGRlcC5oCi1pbmRleCA2NjY5NjhmNzg3Li42MmM2NWI1NWVhIDEwMDY0NAoraW5kZXggZDE1ZWYwNTBlMC4uYzQ2NDJjZWZhNCAxMDA2NDQKIC0tLSBhL2dkYi9zaC10ZGVwLmgKICsrKyBiL2dkYi9zaC10ZGVwLmgKIEBAIC0yMSw2ICsyMSwxMiBAQApAQCAtODI4LDcgKzgyOSw3IEBACiAgICAgICB3aGVyZSBlYWNoIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBpcyBzdG9yZWQgaW5zaWRlIHRoZSBhc3NvY2lhdGVkCiAgICAgICBjb3JlIGZpbGUgc2VjdGlvbi4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1pbmRleCA2ZDlhZWY4MWJiLi41YjY2YjQyOWQxIDEwMDY0NAoraW5kZXggZTA3ZTU1NDNmMi4uZjVlNjBlMTAwMiAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCiBAQCAtMTE2LDYgKzExNiwxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7CkBAIC05MTcsNSArOTE4LDUgQEAKICBzdGF0aWMgaW50IGNvdW50ID0gMDsKICAKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKaW5kZXggNWVkOGU4MS4uOGIxMzk1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyYTZlMjhhZDVjMGNhZDE4OWEzNjk3ZDk2ZGUwMzFlNDcxMzA1MmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YzkyZWJkNWUxMTdlNGNmMTE4Yzk4NDE3MWUwNzAzZGZjZmI4Y2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MjU6MDMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCkBAIC0xOSwxMCArMTksMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmRlZiBiL01ha2VmaWxlLmRlZgotaW5kZXggZWE4NDUzZTg1MS4uMGZjNjZjNjk0YiAxMDA2NDQKK2luZGV4IDBkMTNmMDM3ZDAuLjhiY2Q4NmUxM2YgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5kZWYKICsrKyBiL01ha2VmaWxlLmRlZgotQEAgLTEwNCw3ICsxMDQsOCBAQCBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBsaWJpY29udjsKK0BAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7CiAgCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7CiAgCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07CiAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07CkBAIC0zMywxMCArMzMsMTAgQEAKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07CiAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBjYjAxMzZlOGY4Li41NWY5MDg1YzE2IDEwMDY0NAoraW5kZXggM2FjYjgzYjhkZS4uZTM0ODkwNzEyOCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmluCiArKysgYi9NYWtlZmlsZS5pbgotQEAgLTI1Mzg1LDcgKzI1Mzg1LDcgQEAgY29uZmlndXJlLXJlYWRsaW5lOgorQEAgLTI1NDcwLDcgKzI1NDcwLDcgQEAgY29uZmlndXJlLXJlYWRsaW5lOgogIAkgICQkcy8kJG1vZHVsZV9zcmNkaXIvY29uZmlndXJlIFwKICAJICAtLXNyY2Rpcj0kJHt0b3BkaXJ9LyQkbW9kdWxlX3NyY2RpciBcCiAgCSAgJChIT1NUX0NPTkZJR0FSR1MpIC0tYnVpbGQ9JHtidWlsZF9hbGlhc30gLS1ob3N0PSR7aG9zdF9hbGlhc30gXApAQCAtNDYsNSArNDYsNSBAQAogIEBlbmRpZiByZWFkbGluZQogIAogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCmluZGV4IGE0MmM5ZmQuLjMzYjRjMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkNzU0M2I0NDI1NWRhNGFlNzE0NDdkNGU0ZDYzZTBiNmFhNGVkOTA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMmEwYjhkODFlMWZkYTZiYTk4YWJkY2U4ZDZmMDlmOTU1NWViY2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAogU3ViamVjdDogW1BBVENIIDA3LzEwXSB1c2UgPGFzbS9zZ2lkZWZzLmg+CkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCA3MjI1MzJiYjZjLi41MWQ4ZmM4ZjY2IDEwMDY0NAoraW5kZXggZjJkZjFiOTkwNy4uZDI0NjY0Y2I1NiAxMDA2NDQKIC0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCiArKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYwogQEAgLTMxLDcgKzMxLDcgQEAKQEAgLTMwLDcgKzMwLDcgQEAKICsjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KICAjaW5jbHVkZSAibmF0L2dkYl9wdHJhY2UuaCIKICAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotIAorICNpbmNsdWRlICJpbmYtcHRyYWNlLmgiCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKaW5kZXggYWU5Y2I4Yy4uNGY2NGRlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGFhY2Q3NzE4NGRhMTMyODkwOGRhNDFjOWZkYjU1YWQ4ODFmYTBlOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQzZjI0MGIzOGVlZDdjZDA4ZjZjNTBlYTg5NjU3MmYxMzI3YjQzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozMTo0MCAtMDcwMAogU3ViamVjdDogW1BBVENIIDA4LzEwXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgpAQCAtMjAsMTAgKzIwLDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDVkNWVmYTBhZjQuLmUzNDIwYjQ5YTAgMTAwNjQ0CitpbmRleCA4YjI5MjQ1YzNkLi5mNDI0YWU5NzExIDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC01MDIyLDYgKzUwMjIsNiBAQCBsaW5fdGhyZWFkX2dldF90aHJlYWRfc2lnbmFscyAoc2lnc2V0X3QgKnNldCkKK0BAIC01MDIxLDYgKzUwMjEsNiBAQCBsaW5fdGhyZWFkX2dldF90aHJlYWRfc2lnbmFscyAoc2lnc2V0X3QgKnNldCkKICAgIC8qIE5QVEwgcmVzZXJ2ZXMgdGhlIGZpcnN0IHR3byBSVCBzaWduYWxzLCBidXQgZG9lcyBub3QgcHJvdmlkZSBhbnkKICAgICAgIHdheSBmb3IgdGhlIGRlYnVnZ2VyIHRvIHF1ZXJ5IHRoZSBzaWduYWwgbnVtYmVycyAtIGZvcnR1bmF0ZWx5CiAgICAgICB0aGV5IGRvbid0IGNoYW5nZS4gICovCkBAIC0zMywxMiArMzMsMTIgQEAKICsgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTiArIDEpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvbmF0L2xpbnV4LW5hdC5oIGIvZ2RiL25hdC9saW51eC1uYXQuaAotaW5kZXggMmI0ODVkYjE0MS4uZDA1OGFmY2RlOCAxMDA2NDQKK2luZGV4IDdkZDE4ZmVmZmYuLjM1MTM3YWIzNGYgMTAwNjQ0CiAtLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCiArKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1AQCAtODUsNCArODUsOCBAQCBleHRlcm4gZW51bSB0YXJnZXRfc3RvcF9yZWFzb24gbHdwX3N0b3BfcmVhc29uIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CitAQCAtOTAsNCArOTAsOCBAQCBleHRlcm4gdm9pZCBsaW51eF9zdG9wX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsd3ApOwogIAotIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CisgZXh0ZXJuIGludCBsd3BfaXNfc3RlcHBpbmcgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKICAKICsjaWZuZGVmIFdfU1RPUENPREUKICsjZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpCkBAIC00Niw1ICs0Niw1IEBACiArCiAgI2VuZGlmIC8qIExJTlVYX05BVF9IICovCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCmluZGV4IGVkNmUwYWUuLjBjMTAzZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGMzNWQ1ZDE4MjVlZDAxN2NjNThlYTkxMDExNDEyZTU0YzAwMmVlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2Y1NDAzNmI4OTEwNTQwNzJiM2U0M2VhOGRhYWE1N2FhMzY3YjJlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDkvMTBdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKQEAgLTksMjYgKzksMjIgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotaW5kZXggZjg0NGFiODg1My4uM2Y4OGRiNTJlMyAxMDA2NDQKK2luZGV4IDAxZGZkYzBiODkuLmY2YWViZWY0NjQgMTAwNjQ0CiAtLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCiArKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1AQCAtMTM4LDEwICsxMzgsMTAgQEAgQ1hYRkxBR1MgPSBAQ1hYRkxBR1NACi0gQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi0gCi0gIyBJTlRFUk5BTF9DRkxBR1MgaXMgdGhlIGFnZ3JlZ2F0ZSBvZiBhbGwgb3RoZXIgKkNGTEFHUyBtYWNyb3MuCi0tSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAgJHtDT01QSUxFUl9DRkxBR1N9ICR7R0xPQkFMX0NGTEFHU30gXAotK0lOVEVSTkFMX0NGTEFHU19CQVNFID0gICR7R0xPQkFMX0NGTEFHU30gXAorQEAgLTE0MCw3ICsxNDAsNyBAQCBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKKyBJTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICR7Q1hYRkxBR1N9ICR7R0xPQkFMX0NGTEFHU30gXAogIAkke1BST0ZJTEVfQ0ZMQUdTfSAke0lOQ0xVREVfQ0ZMQUdTfSAke0NQUEZMQUdTfQotIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCi0tSU5URVJOQUxfQ0ZMQUdTID0gICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKLStJTlRFUk5BTF9DRkxBR1MgPSAgJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKKyBJTlRFUk5BTF9XQVJOX0NGTEFHUyA9ICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCistSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAtREdEQlNFUlZFUgorK0lOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgJHtDT01QSUxFUl9DRkxBR1N9IC1ER0RCU0VSVkVSCiAgCiAgIyBMREZMQUdTIGlzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3Igc2V0dGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKICAjIHdoZW4gcnVubmluZyBtYWtlLgogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKaW5kZXggMTkzOGJlYi4uYzk1MDcxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzgxNmQzNDk3MjY2ZTU1YzFjOTIxZDdjYzFjOGJmODFjOGVkMGI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2VhZDBkZDE0MzUyMWIwYmE2OWM5ZTc1M2JjNGEyMzZmOTQ0NWFkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdApAQCAtMTUsNyArMTUsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oIGIvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAotaW5kZXggYzU1NmM1ZGIyMy4uMmE2MTA3ZmNmOCAxMDA2NDQKK2luZGV4IGQ1MzVhNmE0OGIuLjdjMzRkNWExYWEgMTAwNjQ0CiAtLS0gYS9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCiArKysgYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCiBAQCAtOTMsMjAgKzkzLDIwIEBAIHN0cnVjdCB0aW1ldmFsCkBAIC00Miw3ICs0Miw3IEBACiArICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKICAjIGVuZGlmCiAgX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKLSAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCisgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzcuMTIuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKaW5kZXggNWMxMmNhOC4uOWI0YzEyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCkBAIC0xMDcsNyArMTA3LDYgQEAKICAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1jdnNzZXJ2ZXIgXAogICAgICR7YmluZGlyfS9naXQtY3Zzc2VydmVyIFwKICAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1kaWZmdG9vbCBcCi0gICAgJHtsaWJleGVjZGlyfS9naXQtY29yZS9naXQtcmVsaW5rIFwKICAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1zZW5kLWVtYWlsIFwKICAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1zdm4gXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWluc3Rhd2ViIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmYwNzJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGdpdC5pbmMKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKLSAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjZhN2E3M2RiMDc2YmIwNTE0YjYwMjcyMDY2OWQ2ODVjIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYTFjZGQ3YzgyMGY5MmM0NGFiYjUwMDNiMzZkYzhjYjcyMDFiYTM4ZTg3NDQ4MDIzOTlmNTljOTcyODVjYTA0MyIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICJlNDI2OGE2YjUxNGNjZGI2MjRiNjQ1MGZmNTU4ODFhMyIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJlZTU2N2U3YjBmOTUzMzM4MTY3OTM3MTRiYjMxYzU0ZTI4OGNmODA0MWY3N2EwMDkyYjg1ZTYyYzljMjk3NGY5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlMzg4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjEzLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBnaXQuaW5jCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3Zfc25wcmludGZfcmV0dXJuc19ib2d1cz1ubyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPSR7YWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9eWVzfSBcCisgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRSArPSAiTk9fR0VUVEVYVD0xIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJkMmRjNTUwZjY2OTNiYTdlNWIxNjIxMmIyNzE0ZjU5ZiIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjE0OTcwMDE3NzJmNjMwZDQ5ODA5ZTk4MTY3MmVkZmUzZTNjZTFhMWQxOGU5MDVjZDUzOWM0ZDJmNGRiY2Q3NWEiCitTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzAzN2QxMWE0ZjRjZGQxOTQzNTg3MWMyNjdjYTQ4YjQiCitTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiZjliMzAyZWViMDhjZTA4OTM0ZTdhZmI0MjI4MGNlOTI5NDQxMWZiZjVmN2I2YWMzZmNjMjM2ZTgwMzFmMTBjNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL2NvbmZpZy1ndWVzcy11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy9jb25maWctZ3Vlc3MtdWNsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDk0MTE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL2NvbmZpZy1ndWVzcy11Y2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVBhdGNoIGNvdXJ0ZXN5IGdlbnRvby1wb3J0YWdlL3N5cy1kZXZlbC9nbnVjb25maWcvZmlsZXMvYXV0b21ha2UtMS44LjUtY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaC4KLQotdXBkYXRlZCB0byAyMDA1MDUxNiBieSBNYXJjaW4gJ0hydycgSnVzemtpZXdpY3ogKGJ5IGhhbmQpCi11cGRhdGVkIHRvIDIwMDgwMTIzIGJ5IE5pdGluIEEgS2FtYmxlIChieSBoYW5kKQotdXBkYXRlZCB0byAyMDExMTAwMSBieSBTYXVsIFdvbGQgKGJ5IGhhbmQpCi11cGRhdGVkIHRvIDIwMTIwODE4IGJ5IE1hcmNpbiAnSHJ3JyBKdXN6a2lld2ljeiAoYnkgaGFuZCkKLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyY2luIEp1c3praWV3aWN6IDxtYXJjaW4uanVzemtpZXdpY3pAbGluYXJvLm9yZz4KLQotLS0tCi0gY29uZmlnLmd1ZXNzIHwgICA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKLQotLS0tIGdpdC5vcmlnL2NvbmZpZy5ndWVzcwotKysrIGdpdC9jb25maWcuZ3Vlc3MKLUBAIC0xMzgsNiArMTM4LDE5IEBAIFVOQU1FX1JFTEVBU0U9YCh1bmFtZSAtcikgMj4vZGV2L251bGxgIHwKLSBVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgotIFVOQU1FX1ZFUlNJT049YCh1bmFtZSAtdikgMj4vZGV2L251bGxgIHx8IFVOQU1FX1ZFUlNJT049dW5rbm93bgotIAotKyMgRGV0ZWN0IHVjbGliYyBzeXN0ZW1zLgotKwotK0xJQkM9ImdudSIKLStpZiBbIC1mIC91c3IvaW5jbHVkZS9iaXRzL3VDbGliY19jb25maWcuaCBdCi0rdGhlbgotKwlMSUJDPXVjbGliYwotKwlpZiBbIC1uIGBncmVwICIjZGVmaW5lIF9fVUNMSUJDX0NPTkZJR19WRVJTSU9OX18iIC91c3IvaW5jbHVkZS9iaXRzL3VDbGliY19jb25maWcuaGAgXQotKwl0aGVuCi0rCQlVQ0xJQkNfU1VCVkVSPWBzZWQgLW4gIi8jZGVmaW5lIF9fVUNMSUJDX0NPTkZJR19WRVJTSU9OX18gL3MvLy9wIiAvdXNyL2luY2x1ZGUvYml0cy91Q2xpYmNfY29uZmlnLmhgCi0rCQlMSUJDPSRMSUJDJFVDTElCQ19TVUJWRVIKLSsJZmkKLStmaQotKwotICMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90IGV4Y2x1c2l2ZS4KLSAKLSBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCi1AQCAtODg2LDE1ICs4OTksMTUgQEAgRU9GCi0gCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gCWVzYWMKLSAJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBsZC5zby4xCi0tCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KLSsJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0iZ251bGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGFybSo6TGludXg6KjoqKQotIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0gCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLSAJICAgIHwgZ3JlcCAtcSBfX0FSTV9FQUJJX18KLSAJdGhlbgotLQkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWVsc2UKLSAJICAgIGlmIGVjaG8gX19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCi0gCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAotQEAgLTkwNiwxOSArOTE5LDE5IEBAIEVPRgotIAlmaQotIAlleGl0IDs7Ci0gICAgIGF2cjMyKjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgY3JpczpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgY3Jpc3YzMjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgZnJ2OkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBoZXhhZ29uOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBpKjg2OkxpbnV4Oio6KikKLSAJTElCQz1nbnUKLUBAIC05MzIsMTMgKzk0NSwxMyBAQCBFT0YKLSAJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotIAlleGl0IDs7Ci0gICAgIGlhNjQ6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIG0zMnIqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBtNjgqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBtaXBzOkxpbnV4Oio6KiB8IG1pcHM2NDpMaW51eDoqOiopCi0gCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLUBAIC05NTcsNTQgKzk3MCw1NCBAQCBFT0YKLSAJI2VuZGlmCi0gRU9GCi0gCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKLS0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLSsJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LSR7TElCQ30iOyBleGl0OyB9Ci0gCTs7Ci0gICAgIG9yMzI6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHBhZHJlOkxpbnV4Oio6KikKLS0JZWNobyBzcGFyYy11bmtub3duLWxpbnV4LWdudQotKwllY2hvIHNwYXJjLXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCi0tCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKLSAJIyBMb29rIGZvciBDUFUgbGV2ZWwKLSAJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KLS0JICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC1nbnUgOzsKLS0JICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKLS0JICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKLSsJICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7Ci0rCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtJHtMSUJDfSA7OwotKwkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKLSAJZXNhYwotIAlleGl0IDs7Ci0gICAgIHBwYzY0OkxpbnV4Oio6KikKLS0JZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcHBjOkxpbnV4Oio6KikKLS0JZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAotIAlleGl0IDs7Ci0gICAgIHNoNjQqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBzaCo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHRpbGUqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICB2YXg6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICB4ODZfNjQ6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHh0ZW5zYSo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCi0gCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy91Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy91Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZmUxMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvdWNsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25maWcuc3ViLm9yaWcJMjAwNC0wNS0xNCAxOTozODozNi4wMDAwMDAwMDAgLTA1MDAKLSsrKyBjb25maWcuc3ViCTIwMDQtMDUtMTQgMTk6Mzk6MTcuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMTE4LDcgKzExOCw3IEBACi0gIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KLSBtYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKLSBjYXNlICRtYXliZV9vcyBpbgotLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCi0rICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC11Y2xpYmMqIHwgZnJlZWJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKLSAgICAgb3M9LSRtYXliZV9vcwotICAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYAotICAgICA7OwotQEAgLTExMzUsNyArMTEzNSw4IEBACi0gCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAotIAkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiBcCi0gCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLS0JICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCi0rCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtdWNsaWJjKiBcCi0rCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKLSAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKLSAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCi0gCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfMjAxMjA4MTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYgppbmRleCAwZDA1ZTc5Li4zZDQyOGI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYgpAQCAtMTAsNyArMTAsNiBAQAogCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0ke1BWfS50YXIuYnoyIFwKLQkgICBmaWxlOi8vY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaCBcCiAJICAgZmlsZTovL211c2wtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKaW5kZXggZjFjNzc4OC4uNGZkZWQ2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgpAQCAtMTMsOCArMTMsOCBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NvbmZpZy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZ251LWNvbmZpZ2l6ZS5pbiIKLQogUyA9ICIke1dPUktESVJ9L2dpdCIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBDTEVBTkJST0tFTiA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTAwZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLVBWID0gIjEuNC4zIgotR09fQkFTRVZFUlNJT04gPSAiMS40IgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovLzAxNi1hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2dvLWNyb3NzLWJhY2twb3J0LWNtZC1saW5rLXN1cHBvcnQtbmV3LTM4Ni1hbWQ2NC1yZWwucGF0Y2ggXAotICAgICAgICBmaWxlOi8vc3lzbG9nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtY21kLWxkLXNldC1hbGlnbm1lbnQtZm9yLXRoZS0ucmVsLnBsdC1zZWN0aW9uLW9uLTMyLS5wYXRjaCBcCi0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5MTc3ODUyNWM4NjljZGRlMGFiNWExYmYyODNjZDgxIgotU1JDX1VSSVttZDVzdW1dID0gImRmYjYwNDUxMTExNWRkNDAyYTc3YTU1M2E1OTIzYTA0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5NDdmYzcwNWIwYjg0MWI1OTM4YzQ4YjIyZGMzM2U5NjQ3ZWMwNzUyYmFlNjZlNTAyNzhkZjRmMjNmNjQ5NTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC8wMDAxLWNtZC1sZC1zZXQtYWxpZ25tZW50LWZvci10aGUtLnJlbC5wbHQtc2VjdGlvbi1vbi0zMi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC8wMDAxLWNtZC1sZC1zZXQtYWxpZ25tZW50LWZvci10aGUtLnJlbC5wbHQtc2VjdGlvbi1vbi0zMi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYWRjMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvMDAwMS1jbWQtbGQtc2V0LWFsaWdubWVudC1mb3ItdGhlLS5yZWwucGx0LXNlY3Rpb24tb24tMzItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA4NTUxNDVkNWMwM2M0YjRmYWY2MDczNmMzOGQ3YTI5OWM2ODJhZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2hlbmdob3UgTWEgPG1pbnV4QGdvbGFuZy5vcmc+Ci1EYXRlOiBTYXQsIDcgRmViIDIwMTUgMTQ6MDY6MDIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21kL2xkOiBzZXQgYWxpZ25tZW50IGZvciB0aGUgLnJlbC5wbHQgc2VjdGlvbiBvbiAzMi1iaXQKLSBhcmNoaXRlY3R1cmVzCi0KLUZpeGVzICM5ODAyLgotCi1DaGFuZ2UtSWQ6IEkyMmM1MmEzN2JkYjIzYTE0Y2M0NjE1Yzk1MTk0MzFiYjE0Y2E4MWNhCi1SZXZpZXdlZC1vbjogaHR0cHM6Ly9nby1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS80MTcwCi1SZXZpZXdlZC1ieTogSWFuIExhbmNlIFRheWxvciA8aWFudEBnb2xhbmcub3JnPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gc3JjL2NtZC9sZC9lbGYuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9sZC9lbGYuYyBiL3NyYy9jbWQvbGQvZWxmLmMKLWluZGV4IDEyY2VkOTguLjk3ZWQ0YmQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xkL2VsZi5jCi0rKysgYi9zcmMvY21kL2xkL2VsZi5jCi1AQCAtMTM2Myw2ICsxMzYzLDcgQEAgYXNtYmVsZih2bG9uZyBzeW1vKQotIAkJCXNoLT50eXBlID0gU0hUX1JFTDsKLSAJCQlzaC0+ZmxhZ3MgPSBTSEZfQUxMT0M7Ci0gCQkJc2gtPmVudHNpemUgPSBFTEYzMlJFTFNJWkU7Ci0rCQkJc2gtPmFkZHJhbGlnbiA9IDQ7Ci0gCQkJc2gtPmxpbmsgPSBlbGZzaG5hbWUoIi5keW5zeW0iKS0+c2hudW07Ci0gCQkJc2hzeW0oc2gsIGxpbmtsb29rdXAoY3R4dCwgIi5yZWwucGx0IiwgMCkpOwotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC8wMTYtYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAxNi1hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmU0MTRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAxNi1hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRGVzY3JpcHRpb246IFVzZSBjb3JyZWN0IEVMRiBoZWFkZXIgZm9yIGFybWhmIGJpbmFyaWVzLgotQXV0aG9yOiBBZGFtIENvbnJhZCA8YWRjb25yYWRAdWJ1bnR1LmNvbT4KLUxhc3QtVXBkYXRlOiAyMDEzLTA3LTA4Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGdvL3NyYy9jbWQvbGQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvbGQvZWxmLmMJMjAxNS0wMi0yMCAxMDo0OTo1OC43NjM0NTE1ODYgLTA4MDAKLSsrKyBnby9zcmMvY21kL2xkL2VsZi5jCTIwMTUtMDItMjAgMTA6NDk6MjcuODk1NDc4NTIxIC0wODAwCi1AQCAtNTcsNyArNTcsMTEgQEAKLSAJY2FzZSAnNSc6Ci0gCQkvLyB3ZSB1c2UgRUFCSSBvbiBib3RoIGxpbnV4L2FybSBhbmQgZnJlZWJzZC9hcm0uCi0gCQlpZihIRUFEVFlQRSA9PSBIbGludXggfHwgSEVBRFRZUEUgPT0gSGZyZWVic2QpCi0tCQkJaGRyLmZsYWdzID0gMHg1MDAwMDAyOyAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkkKLSsjaWZkZWYgX19BUk1fUENTX1ZGUAotKwkJCWhkci5mbGFncyA9IDB4NTAwMDQwMjsgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBoYXJkLWZsb2F0IEFCSQotKyNlbHNlCi0rCQkJaGRyLmZsYWdzID0gMHg1MDAwMjAyOyAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQtZmxvYXQgQUJJCi0rI2VuZGlmCi0gCQkvLyBmYWxsdGhyb3VnaAotIAlkZWZhdWx0OgotIAkJaGRyLnBob2ZmID0gRUxGMzJIRFJTSVpFOwkvKiBNdXN0IGJlIGJlIEVMRjMySERSU0laRTogZmlyc3QgUEhkciBtdXN0IGZvbGxvdyBFTEYgaGVhZGVyICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC9nby1jcm9zcy1iYWNrcG9ydC1jbWQtbGluay1zdXBwb3J0LW5ldy0zODYtYW1kNjQtcmVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvZ28tY3Jvc3MtYmFja3BvcnQtY21kLWxpbmstc3VwcG9ydC1uZXctMzg2LWFtZDY0LXJlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjYTlkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC9nby1jcm9zcy1iYWNrcG9ydC1jbWQtbGluay1zdXBwb3J0LW5ldy0zODYtYW1kNjQtcmVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLUZyb20gZDZlZWZhZDQ0NTgzMWMxNjFmY2ExMzBmOWJkZjdiMzg0OGFhYzIzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyOSBNYXIgMjAxNiAyMToxNDozMyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnby1jcm9zczogYmFja3BvcnQgImNtZC9saW5rOiBzdXBwb3J0IG5ldyAzODYvYW1kNjQKLSByZWxvY2F0aW9ucyIKLQotTmV3ZXIgYmludXRpbHMgd29uJ3Qgc3VwcG9ydCBidWlsZGluZyBvbGRlciBnby0xLjQuMyBhcyBwZXI6Ci0KLWh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vaXNzdWVzLzEzMTE0Ci0KLVVwc3RyZWFtIGNvbW1pdCA5MTRkYjlmMDYwYjFmZDNlYjFmNzRkNDhmM2JkNDZhNzNkNGFlOWM3IChzZWUgc3ViaikKLXdhcyBpZGVudGlmaWVkIGFzIHRoZSBmaXggYW5kIG5vbWluYXRlZCBmb3IgMS40LjQgYnV0IHRoYXQgcmVsZWFzZQotbmV2ZXIgaGFwcGVuZWQuICBUaGUgcGF0aHMgaW4gMS40LjMgYXJlbid0IHRoZSBzYW1lIGFzIGdvMS42YmV0YTF+NjYyCi13aGVyZSB0aGlzIGNvbW1pdCBhcHBlYXJlZCwgYnV0IHRoZSBOZXRCU0QgZm9sa3MgaW5kaWNhdGVkIHdoYXQgYQotMS40LjMgYmFja3BvcnQgd291bGQgbG9vayBsaWtlIGhlcmU6IGh0dHBzOi8vZ25hdHMubmV0YnNkLm9yZy81MDc3NwotCi1UaGlzIGlzIGJhc2VkIG9uIHRoYXQsIGJ1dCB3aXRob3V0IHRoZSBCU0Qgd3JhcHBlciBpbmZyYXN0cnVjdHVyZQotbGF5ZXIgdGhhdCBtYWtlcyB0aGluZ3MgbG9vayBsaWtlIHBhdGNoZXMgb2YgcGF0Y2hlcy4KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBQYXJ0aWFsIF0KLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvNmwvYXNtLmMgYi9zcmMvY21kLzZsL2FzbS5jCi1pbmRleCAxOGI1YWEzMTE5ODEuLjJlOWQzMzlhZWY4NyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvNmwvYXNtLmMKLSsrKyBiL3NyYy9jbWQvNmwvYXNtLmMKLUBAIC0xMTgsNiArMTE4LDggQEAgYWRkZHlucmVsKExTeW0gKnMsIFJlbG9jICpyKQotIAkJcmV0dXJuOwotIAkKLSAJY2FzZSAyNTYgKyBSX1g4Nl82NF9HT1RQQ1JFTDoKLSsJY2FzZSAyNTYgKyBSX1g4Nl82NF9HT1RQQ1JFTFg6Ci0rCWNhc2UgMjU2ICsgUl9YODZfNjRfUkVYX0dPVFBDUkVMWDoKLSAJCWlmKHRhcmctPnR5cGUgIT0gU0RZTklNUE9SVCkgewotIAkJCS8vIGhhdmUgc3ltYm9sCi0gCQkJaWYoci0+b2ZmID49IDIgJiYgcy0+cFtyLT5vZmYtMl0gPT0gMHg4YikgewotZGlmZiAtLWdpdCBhL3NyYy9jbWQvOGwvYXNtLmMgYi9zcmMvY21kLzhsL2FzbS5jCi1pbmRleCA5OGMwNDI0MDM3NGYuLmNmZjI5NDg4ZThhZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvOGwvYXNtLmMKLSsrKyBiL3NyYy9jbWQvOGwvYXNtLmMKLUBAIC0xMTUsNiArMTE1LDcgQEAgYWRkZHlucmVsKExTeW0gKnMsIFJlbG9jICpyKQotIAkJcmV0dXJuOwkJCi0gCQotIAljYXNlIDI1NiArIFJfMzg2X0dPVDMyOgotKwljYXNlIDI1NiArIFJfMzg2X0dPVDMyWDoKLSAJCWlmKHRhcmctPnR5cGUgIT0gU0RZTklNUE9SVCkgewotIAkJCS8vIGhhdmUgc3ltYm9sCi0gCQkJaWYoci0+b2ZmID49IDIgJiYgcy0+cFtyLT5vZmYtMl0gPT0gMHg4YikgewotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGQvZWxmLmggYi9zcmMvY21kL2xkL2VsZi5oCi1pbmRleCBlODRkOTk2ZjI1OTYuLmJiZjJjZmFhM2NjMCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGQvZWxmLmgKLSsrKyBiL3NyYy9jbWQvbGQvZWxmLmgKLUBAIC00NzgsMzIgKzQ3OCw0NyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICogUmVsb2NhdGlvbiB0eXBlcy4KLSAgKi8KLSAKLS0jZGVmaW5lCVJfWDg2XzY0X05PTkUJMAkvKiBObyByZWxvY2F0aW9uLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfNjQJMQkvKiBBZGQgNjQgYml0IHN5bWJvbCB2YWx1ZS4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1BDMzIJMgkvKiBQQy1yZWxhdGl2ZSAzMiBiaXQgc2lnbmVkIHN5bSB2YWx1ZS4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0dPVDMyCTMJLyogUEMtcmVsYXRpdmUgMzIgYml0IEdPVCBvZmZzZXQuICovCi0tI2RlZmluZQlSX1g4Nl82NF9QTFQzMgk0CS8qIFBDLXJlbGF0aXZlIDMyIGJpdCBQTFQgb2Zmc2V0LiAqLwotLSNkZWZpbmUJUl9YODZfNjRfQ09QWQk1CS8qIENvcHkgZGF0YSBmcm9tIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSX1g4Nl82NF9HTE9CX0RBVCA2CS8qIFNldCBHT1QgZW50cnkgdG8gZGF0YSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfSk1QX1NMT1QgNwkvKiBTZXQgR09UIGVudHJ5IHRvIGNvZGUgYWRkcmVzcy4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1JFTEFUSVZFIDgJLyogQWRkIGxvYWQgYWRkcmVzcyBvZiBzaGFyZWQgb2JqZWN0LiAqLwotLSNkZWZpbmUJUl9YODZfNjRfR09UUENSRUwgOQkvKiBBZGQgMzIgYml0IHNpZ25lZCBwY3JlbCBvZmZzZXQgdG8gR09ULiAqLwotLSNkZWZpbmUJUl9YODZfNjRfMzIJMTAJLyogQWRkIDMyIGJpdCB6ZXJvIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfMzJTCTExCS8qIEFkZCAzMiBiaXQgc2lnbiBleHRlbmRlZCBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0XzE2CTEyCS8qIEFkZCAxNiBiaXQgemVybyBleHRlbmRlZCBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1BDMTYJMTMJLyogQWRkIDE2IGJpdCBzaWduZWQgZXh0ZW5kZWQgcGMgcmVsYXRpdmUgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF84CTE0CS8qIEFkZCA4IGJpdCB6ZXJvIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfUEM4CTE1CS8qIEFkZCA4IGJpdCBzaWduZWQgZXh0ZW5kZWQgcGMgcmVsYXRpdmUgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF9EVFBNT0Q2NCAxNgkvKiBJRCBvZiBtb2R1bGUgY29udGFpbmluZyBzeW1ib2wgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjY0IDE3CS8qIE9mZnNldCBpbiBUTFMgYmxvY2sgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1RQT0ZGNjQgMTgJLyogT2Zmc2V0IGluIHN0YXRpYyBUTFMgYmxvY2sgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1RMU0dECTE5CS8qIFBDIHJlbGF0aXZlIG9mZnNldCB0byBHRCBHT1QgZW50cnkgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1RMU0xECTIwCS8qIFBDIHJlbGF0aXZlIG9mZnNldCB0byBMRCBHT1QgZW50cnkgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjMyIDIxCS8qIE9mZnNldCBpbiBUTFMgYmxvY2sgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0dPVFRQT0ZGIDIyCS8qIFBDIHJlbGF0aXZlIG9mZnNldCB0byBJRSBHT1QgZW50cnkgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1RQT0ZGMzIgMjMJLyogT2Zmc2V0IGluIHN0YXRpYyBUTFMgYmxvY2sgKi8KLS0KLS0jZGVmaW5lCVJfWDg2XzY0X0NPVU5UCTI0CS8qIENvdW50IG9mIGRlZmluZWQgcmVsb2NhdGlvbiB0eXBlcy4gKi8KLSsjZGVmaW5lCVJfWDg2XzY0X05PTkUgICAgICAgICAgIDAKLSsjZGVmaW5lCVJfWDg2XzY0XzY0ICAgICAgICAgICAgIDEKLSsjZGVmaW5lCVJfWDg2XzY0X1BDMzIgICAgICAgICAgIDIKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVDMyICAgICAgICAgIDMKLSsjZGVmaW5lCVJfWDg2XzY0X1BMVDMyICAgICAgICAgIDQKLSsjZGVmaW5lCVJfWDg2XzY0X0NPUFkgICAgICAgICAgIDUKLSsjZGVmaW5lCVJfWDg2XzY0X0dMT0JfREFUICAgICAgIDYKLSsjZGVmaW5lCVJfWDg2XzY0X0pNUF9TTE9UICAgICAgIDcKLSsjZGVmaW5lCVJfWDg2XzY0X1JFTEFUSVZFICAgICAgIDgKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDUkVMICAgICAgIDkKLSsjZGVmaW5lCVJfWDg2XzY0XzMyICAgICAgICAgICAgIDEwCi0rI2RlZmluZQlSX1g4Nl82NF8zMlMgICAgICAgICAgICAxMQotKyNkZWZpbmUJUl9YODZfNjRfMTYgICAgICAgICAgICAgMTIKLSsjZGVmaW5lCVJfWDg2XzY0X1BDMTYgICAgICAgICAgIDEzCi0rI2RlZmluZQlSX1g4Nl82NF84ICAgICAgICAgICAgICAxNAotKyNkZWZpbmUJUl9YODZfNjRfUEM4ICAgICAgICAgICAgMTUKLSsjZGVmaW5lCVJfWDg2XzY0X0RUUE1PRDY0ICAgICAgIDE2Ci0rI2RlZmluZQlSX1g4Nl82NF9EVFBPRkY2NCAgICAgICAxNwotKyNkZWZpbmUJUl9YODZfNjRfVFBPRkY2NCAgICAgICAgMTgKLSsjZGVmaW5lCVJfWDg2XzY0X1RMU0dEICAgICAgICAgIDE5Ci0rI2RlZmluZQlSX1g4Nl82NF9UTFNMRCAgICAgICAgICAyMAotKyNkZWZpbmUJUl9YODZfNjRfRFRQT0ZGMzIgICAgICAgMjEKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFRQT0ZGICAgICAgIDIyCi0rI2RlZmluZQlSX1g4Nl82NF9UUE9GRjMyICAgICAgICAyMwotKyNkZWZpbmUJUl9YODZfNjRfUEM2NCAgICAgICAgICAgMjQKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVE9GRjY0ICAgICAgIDI1Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1RQQzMyICAgICAgICAyNgotKyNkZWZpbmUJUl9YODZfNjRfR09UNjQgICAgICAgICAgMjcKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDUkVMNjQgICAgIDI4Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1RQQzY0ICAgICAgICAyOQotKyNkZWZpbmUJUl9YODZfNjRfR09UUExUNjQgICAgICAgMzAKLSsjZGVmaW5lCVJfWDg2XzY0X1BMVE9GRjY0ICAgICAgIDMxCi0rI2RlZmluZQlSX1g4Nl82NF9TSVpFMzIgICAgICAgICAzMgotKyNkZWZpbmUJUl9YODZfNjRfU0laRTY0ICAgICAgICAgMzMKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDMzJfVExTREVDIDM0Ci0rI2RlZmluZQlSX1g4Nl82NF9UTFNERVNDX0NBTEwgICAzNQotKyNkZWZpbmUJUl9YODZfNjRfVExTREVTQyAgICAgICAgMzYKLSsjZGVmaW5lCVJfWDg2XzY0X0lSRUxBVElWRSAgICAgIDM3Ci0rI2RlZmluZQlSX1g4Nl82NF9QQzMyX0JORCAgICAgICA0MAotKyNkZWZpbmUJUl9YODZfNjRfR09UUENSRUxYICAgICAgNDEKLSsjZGVmaW5lCVJfWDg2XzY0X1JFWF9HT1RQQ1JFTFggIDQyCi0gCi0gCi0gI2RlZmluZQlSX0FMUEhBX05PTkUJCTAJLyogTm8gcmVsb2MgKi8KLUBAIC01ODEsMzkgKzU5Niw0MiBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gI2RlZmluZQlSX0FSTV9DT1VOVAkJMzgJLyogQ291bnQgb2YgZGVmaW5lZCByZWxvY2F0aW9uIHR5cGVzLiAqLwotIAotIAotLSNkZWZpbmUJUl8zODZfTk9ORQkwCS8qIE5vIHJlbG9jYXRpb24uICovCi0tI2RlZmluZQlSXzM4Nl8zMgkxCS8qIEFkZCBzeW1ib2wgdmFsdWUuICovCi0tI2RlZmluZQlSXzM4Nl9QQzMyCTIJLyogQWRkIFBDLXJlbGF0aXZlIHN5bWJvbCB2YWx1ZS4gKi8KLS0jZGVmaW5lCVJfMzg2X0dPVDMyCTMJLyogQWRkIFBDLXJlbGF0aXZlIEdPVCBvZmZzZXQuICovCi0tI2RlZmluZQlSXzM4Nl9QTFQzMgk0CS8qIEFkZCBQQy1yZWxhdGl2ZSBQTFQgb2Zmc2V0LiAqLwotLSNkZWZpbmUJUl8zODZfQ09QWQk1CS8qIENvcHkgZGF0YSBmcm9tIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSXzM4Nl9HTE9CX0RBVAk2CS8qIFNldCBHT1QgZW50cnkgdG8gZGF0YSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfSk1QX1NMT1QJNwkvKiBTZXQgR09UIGVudHJ5IHRvIGNvZGUgYWRkcmVzcy4gKi8KLS0jZGVmaW5lCVJfMzg2X1JFTEFUSVZFCTgJLyogQWRkIGxvYWQgYWRkcmVzcyBvZiBzaGFyZWQgb2JqZWN0LiAqLwotLSNkZWZpbmUJUl8zODZfR09UT0ZGCTkJLyogQWRkIEdPVC1yZWxhdGl2ZSBzeW1ib2wgYWRkcmVzcy4gKi8KLS0jZGVmaW5lCVJfMzg2X0dPVFBDCTEwCS8qIEFkZCBQQy1yZWxhdGl2ZSBHT1QgdGFibGUgYWRkcmVzcy4gKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19UUE9GRgkxNAkvKiBOZWdhdGl2ZSBvZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl8zODZfVExTX0lFCTE1CS8qIEFic29sdXRlIGFkZHJlc3Mgb2YgR09UIGZvciAtdmUgc3RhdGljIFRMUyAqLwotLSNkZWZpbmUJUl8zODZfVExTX0dPVElFCTE2CS8qIEdPVCBlbnRyeSBmb3IgbmVnYXRpdmUgc3RhdGljIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xFCTE3CS8qIE5lZ2F0aXZlIG9mZnNldCByZWxhdGl2ZSB0byBzdGF0aWMgVExTICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR0QJMTgJLyogMzIgYml0IG9mZnNldCB0byBHT1QgKGluZGV4LG9mZikgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETQkxOQkvKiAzMiBiaXQgb2Zmc2V0IHRvIEdPVCAoaW5kZXgsemVybykgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0dEXzMyCTI0CS8qIDMyIGJpdCBvZmZzZXQgdG8gR09UIChpbmRleCxvZmYpIHBhaXIgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRF9QVVNIIDI1CS8qIHB1c2hsIGluc3RydWN0aW9uIGZvciBTdW4gQUJJIEdEIHNlcXVlbmNlICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR0RfQ0FMTCAyNgkvKiBjYWxsIGluc3RydWN0aW9uIGZvciBTdW4gQUJJIEdEIHNlcXVlbmNlICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR0RfUE9QIDI3CS8qIHBvcGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgR0Qgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRE1fMzIgMjgJLyogMzIgYml0IG9mZnNldCB0byBHT1QgKGluZGV4LHplcm8pIHBhaXIgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRE1fUFVTSCAyOQkvKiBwdXNobCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBMRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV9DQUxMIDMwCS8qIGNhbGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgTEQgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRE1fUE9QIDMxCS8qIHBvcGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgTEQgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRE9fMzIgMzIJLyogMzIgYml0IG9mZnNldCBmcm9tIHN0YXJ0IG9mIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl8zODZfVExTX0lFXzMyCTMzCS8qIDMyIGJpdCBvZmZzZXQgdG8gR09UIHN0YXRpYyBUTFMgb2Zmc2V0IGVudHJ5ICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTEVfMzIJMzQJLyogMzIgYml0IG9mZnNldCB3aXRoaW4gc3RhdGljIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl8zODZfVExTX0RUUE1PRDMyIDM1CS8qIEdPVCBlbnRyeSBjb250YWluaW5nIFRMUyBpbmRleCAqLwotLSNkZWZpbmUJUl8zODZfVExTX0RUUE9GRjMyIDM2CS8qIEdPVCBlbnRyeSBjb250YWluaW5nIFRMUyBvZmZzZXQgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19UUE9GRjMyIDM3CS8qIEdPVCBlbnRyeSBvZiAtdmUgc3RhdGljIFRMUyBvZmZzZXQgKi8KLS0KLS0jZGVmaW5lCVJfMzg2X0NPVU5UCTM4CS8qIENvdW50IG9mIGRlZmluZWQgcmVsb2NhdGlvbiB0eXBlcy4gKi8KLSsjZGVmaW5lCVJfMzg2X05PTkUgICAgICAgICAgMAotKyNkZWZpbmUJUl8zODZfMzIgICAgICAgICAgICAxCi0rI2RlZmluZQlSXzM4Nl9QQzMyICAgICAgICAgIDIKLSsjZGVmaW5lCVJfMzg2X0dPVDMyICAgICAgICAgMwotKyNkZWZpbmUJUl8zODZfUExUMzIgICAgICAgICA0Ci0rI2RlZmluZQlSXzM4Nl9DT1BZICAgICAgICAgIDUKLSsjZGVmaW5lCVJfMzg2X0dMT0JfREFUICAgICAgNgotKyNkZWZpbmUJUl8zODZfSk1QX1NMT1QgICAgICA3Ci0rI2RlZmluZQlSXzM4Nl9SRUxBVElWRSAgICAgIDgKLSsjZGVmaW5lCVJfMzg2X0dPVE9GRiAgICAgICAgOQotKyNkZWZpbmUJUl8zODZfR09UUEMgICAgICAgICAxMAotKyNkZWZpbmUJUl8zODZfVExTX1RQT0ZGICAgICAxNAotKyNkZWZpbmUJUl8zODZfVExTX0lFICAgICAgICAxNQotKyNkZWZpbmUJUl8zODZfVExTX0dPVElFICAgICAxNgotKyNkZWZpbmUJUl8zODZfVExTX0xFICAgICAgICAxNwotKyNkZWZpbmUJUl8zODZfVExTX0dEICAgICAgICAxOAotKyNkZWZpbmUJUl8zODZfVExTX0xETSAgICAgICAxOQotKyNkZWZpbmUJUl8zODZfVExTX0dEXzMyICAgICAyNAotKyNkZWZpbmUJUl8zODZfVExTX0dEX1BVU0ggICAyNQotKyNkZWZpbmUJUl8zODZfVExTX0dEX0NBTEwgICAyNgotKyNkZWZpbmUJUl8zODZfVExTX0dEX1BPUCAgICAyNwotKyNkZWZpbmUJUl8zODZfVExTX0xETV8zMiAgICAyOAotKyNkZWZpbmUJUl8zODZfVExTX0xETV9QVVNIICAyOQotKyNkZWZpbmUJUl8zODZfVExTX0xETV9DQUxMICAzMAotKyNkZWZpbmUJUl8zODZfVExTX0xETV9QT1AgICAzMQotKyNkZWZpbmUJUl8zODZfVExTX0xET18zMiAgICAzMgotKyNkZWZpbmUJUl8zODZfVExTX0lFXzMyICAgICAzMwotKyNkZWZpbmUJUl8zODZfVExTX0xFXzMyICAgICAzNAotKyNkZWZpbmUJUl8zODZfVExTX0RUUE1PRDMyICAzNQotKyNkZWZpbmUJUl8zODZfVExTX0RUUE9GRjMyICAzNgotKyNkZWZpbmUJUl8zODZfVExTX1RQT0ZGMzIgICAzNwotKyNkZWZpbmUJUl8zODZfVExTX0dPVERFU0MgICAzOQotKyNkZWZpbmUJUl8zODZfVExTX0RFU0NfQ0FMTCA0MAotKyNkZWZpbmUJUl8zODZfVExTX0RFU0MgICAgICA0MQotKyNkZWZpbmUJUl8zODZfSVJFTEFUSVZFICAgICA0MgotKyNkZWZpbmUJUl8zODZfR09UMzJYICAgICAgICA0MwotIAotICNkZWZpbmUJUl9QUENfTk9ORQkJMAkvKiBObyByZWxvY2F0aW9uLiAqLwotICNkZWZpbmUJUl9QUENfQUREUjMyCQkxCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9sZC9sZGVsZi5jIGIvc3JjL2NtZC9sZC9sZGVsZi5jCi1pbmRleCBkZDVmYTBkMmE4MzkuLjJlMmZiZDE3Mzc3ZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGQvbGRlbGYuYwotKysrIGIvc3JjL2NtZC9sZC9sZGVsZi5jCi1AQCAtODg4LDEyICs4ODgsMTUgQEAgcmVsdHlwZShjaGFyICpwbiwgaW50IGVsZnR5cGUsIHVjaGFyICpzaXopCi0gCWNhc2UgUignNicsIFJfWDg2XzY0X1BDMzIpOgotIAljYXNlIFIoJzYnLCBSX1g4Nl82NF9QTFQzMik6Ci0gCWNhc2UgUignNicsIFJfWDg2XzY0X0dPVFBDUkVMKToKLSsJY2FzZSBSKCc2JywgUl9YODZfNjRfR09UUENSRUxYKToKLSsJY2FzZSBSKCc2JywgUl9YODZfNjRfUkVYX0dPVFBDUkVMWCk6Ci0gCWNhc2UgUignOCcsIFJfMzg2XzMyKToKLSAJY2FzZSBSKCc4JywgUl8zODZfUEMzMik6Ci0gCWNhc2UgUignOCcsIFJfMzg2X0dPVDMyKToKLSAJY2FzZSBSKCc4JywgUl8zODZfUExUMzIpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9HT1RPRkYpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9HT1RQQyk6Ci0rCWNhc2UgUignOCcsIFJfMzg2X0dPVDMyWCk6Ci0gCQkqc2l6ID0gNDsKLSAJCWJyZWFrOwotIAljYXNlIFIoJzYnLCBSX1g4Nl82NF82NCk6Ci0tLSAKLTIuNy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L3N5c2xvZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L3N5c2xvZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliZTA2Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC9zeXNsb2cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1BZGQgdGltZW91dHMgdG8gbG9nZ2VyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDE0LTEwLTAzIDExOjQ0OjM3LjcxMDQwMzIwMCAtMDcwMAotQEAgLTMzLDYgKzMzLDkgQEAKLSBjb25zdCBzZXZlcml0eU1hc2sgPSAweDA3Ci0gY29uc3QgZmFjaWxpdHlNYXNrID0gMHhmOAotIAotK3ZhciB3cml0ZVRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSt2YXIgY29ubmVjdFRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSsKLSBjb25zdCAoCi0gCS8vIFNldmVyaXR5LgotIAotQEAgLTEwMCw2ICsxMDMsNyBAQAotIHR5cGUgc2VydmVyQ29ubiBpbnRlcmZhY2UgewotIAl3cml0ZVN0cmluZyhwIFByaW9yaXR5LCBob3N0bmFtZSwgdGFnLCBzLCBubCBzdHJpbmcpIGVycm9yCi0gCWNsb3NlKCkgZXJyb3IKLSsJc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IKLSB9Ci0gCi0gdHlwZSBuZXRDb25uIHN0cnVjdCB7Ci1AQCAtMjczLDcgKzI3NywxMSBAQAotIAkJbmwgPSAiXG4iCi0gCX0KLSAKLS0JZXJyIDo9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSsJZXJyIDo9IHcuY29ubi5zZXRXcml0ZURlYWRsaW5lKHRpbWUuTm93KCkuQWRkKHdyaXRlVGltZW91dCkpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJcmV0dXJuIDAsIGVycgotKwl9Ci0rCWVyciA9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gMCwgZXJyCi0gCX0KLUBAIC0zMDUsNiArMzEzLDEwIEBACi0gCXJldHVybiBuLmNvbm4uQ2xvc2UoKQotIH0KLSAKLStmdW5jIChuICpuZXRDb25uKSBzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvciB7Ci0rCXJldHVybiBuLmNvbm4uU2V0V3JpdGVEZWFkbGluZSh0KQotK30KLSsKLSAvLyBOZXdMb2dnZXIgY3JlYXRlcyBhIGxvZy5Mb2dnZXIgd2hvc2Ugb3V0cHV0IGlzIHdyaXR0ZW4gdG8KLSAvLyB0aGUgc3lzdGVtIGxvZyBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwcmlvcml0eS4gVGhlIGxvZ0ZsYWcKLSAvLyBhcmd1bWVudCBpcyB0aGUgZmxhZyBzZXQgcGFzc2VkIHRocm91Z2ggdG8gbG9nLk5ldyB0byBjcmVhdGUKLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDE0LTEwLTAzIDExOjQ0OjM5LjAxMDQwMzE3NSAtMDcwMAotQEAgLTE5LDcgKzE5LDcgQEAKLSAJbG9nUGF0aHMgOj0gW11zdHJpbmd7Ii9kZXYvbG9nIiwgIi92YXIvcnVuL3N5c2xvZyJ9Ci0gCWZvciBfLCBuZXR3b3JrIDo9IHJhbmdlIGxvZ1R5cGVzIHsKLSAJCWZvciBfLCBwYXRoIDo9IHJhbmdlIGxvZ1BhdGhzIHsKLS0JCQljb25uLCBlcnIgOj0gbmV0LkRpYWwobmV0d29yaywgcGF0aCkKLSsJCQljb25uLCBlcnIgOj0gbmV0LkRpYWxUaW1lb3V0KG5ldHdvcmssIHBhdGgsIGNvbm5lY3RUaW1lb3V0KQotIAkJCWlmIGVyciAhPSBuaWwgewotIAkJCQljb250aW51ZQotIAkJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2OWMxZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLVBWID0gIjEuNi4zIgotR09fQkFTRVZFUlNJT04gPSAiMS42IgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5MTc3ODUyNWM4NjljZGRlMGFiNWExYmYyODNjZDgxIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgZmlsZTovL2FybWhmLWVsZi1oZWFkZXIucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9zeXNsb2cucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaCBcCi0gICAgICAgZmlsZTovL2dvdG9vbGRpci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYmYzZmNlNmNjYWFkZDMxMDE1OWM5ZTg3NDIyMGUyYTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjMyNmFlZWQ1Zjg2Y2YxOGYxNmQ2ZGM4MzE0MDU2MTRmODU1ZTJkNDE2YTkxZmQzZmRjMzM0Zjc3MjM0NWIwMCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlM2ExNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvYXJtaGYtZWxmLWhlYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUVuY29kZSBhcm0gRUFCSSAoIGhhcmQvc29mdCApIGNhbGxpbmcgY29udmVudGlvbiBpbiBFTEYgaGVhZGVyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi0rKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotQEAgLTgyNyw3ICs4MjcsMTMgQEAKLSAJLy8gMzItYml0IGFyY2hpdGVjdHVyZXMKLSAJY2FzZSAnNSc6Ci0gCQkvLyB3ZSB1c2UgRUFCSSBvbiBib3RoIGxpbnV4L2FybSBhbmQgZnJlZWJzZC9hcm0uCi0tCQlpZiBIRUFEVFlQRSA9PSBvYmouSGxpbnV4IHx8IEhFQURUWVBFID09IG9iai5IZnJlZWJzZCB7Ci0rCQlpZiBIRUFEVFlQRSA9PSBvYmouSGxpbnV4IHsKLSsJCQlpZiBDdHh0LkdvYXJtID09IDcgewotKwkJCQllaGRyLmZsYWdzID0gMHg1MDAwNDAyIC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgaGFyZCBmbG9hdAotKwkJCX0gZWxzZSB7Ci0rCQkJCWVoZHIuZmxhZ3MgPSAweDUwMDAyMDIgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBzb2Z0IGZsb2F0Ci0rCQkJfQotKwkJfSBlbHNlIGlmIEhFQURUWVBFID09IG9iai5IZnJlZWJzZCB7Ci0gCQkJLy8gV2Ugc2V0IGEgdmFsdWUgaGVyZSB0aGF0IG1ha2VzIG5vIGluZGljYXRpb24gb2Ygd2hpY2gKLSAJCQkvLyBmbG9hdCBBQkkgdGhlIG9iamVjdCB1c2VzLCBiZWNhdXNlIHRoaXMgaXMgaW5mb3JtYXRpb24KLSAJCQkvLyB1c2VkIGJ5IHRoZSBkeW5hbWljIGxpbmtlciB0byBjb21wYXJlIGV4ZWN1dGFibGVzIGFuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LWNjLWhhbmRsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LWNjLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODMzMjNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2ZpeC1jYy1oYW5kbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUFjY2VwdCBDQyB3aXRoIG11bHRpcGxlIHdvcmRzIGluIGl0cyBuYW1lCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2J1aWxkLmdvCTIwMTUtMDctMjkgMTQ6NDg6NDAuMzIzMTg1ODA3IC0wNzAwCi0rKysgZ28vc3JjL2NtZC9nby9idWlsZC5nbwkyMDE1LTA3LTMwIDA3OjM3OjQwLjUyOTgxODU4NiAtMDcwMAotQEAgLTI4MDUsMTIgKzI4MDUsMjQgQEAKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJDQyIsIGRlZmF1bHRDQywgb2JqZGlyKQotIH0KLSAKLSsvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLStmdW5jIChiICpidWlsZGVyKSBnY2NDbWRGb3JSZWFsKCkgW11zdHJpbmcgewotKwlyZXR1cm4gZW52TGlzdCgiQ0MiLCBkZWZhdWx0Q0MpCi0rfQotKwotIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpidWlsZGVyKSBneHhDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNYWCIsIGRlZmF1bHRDWFgsIG9iamRpcikKLSB9Ci0gCi0rLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotKy8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDWFgiLCBkZWZhdWx0Q1hYKQotK30KLSsKLSAvLyBjY29tcGlsZXJDbWQgcmV0dXJucyBhIGNvbW1hbmQgbGluZSBwcmVmaXggZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudAotIC8vIHZhcmlhYmxlIGFuZCB1c2luZyB0aGUgZGVmYXVsdCBjb21tYW5kIHdoZW4gdGhlIHZhcmlhYmxlIGlzIGVtcHR5LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGNjb21waWxlckNtZChlbnZ2YXIsIGRlZmNtZCwgb2JqZGlyIHN0cmluZykgW11zdHJpbmcgewotSW5kZXg6IGdvL3NyYy9jbWQvZ28vZW52LmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2Vudi5nbwkyMDE1LTA3LTI5IDE0OjQ4OjQwLjMyMzE4NTgwNyAtMDcwMAotKysrIGdvL3NyYy9jbWQvZ28vZW52LmdvCTIwMTUtMDctMzAgMDc6NDA6NTQuNDYxNjU1NzIxIC0wNzAwCi1AQCAtNTIsMTAgKzUyLDkgQEAKLSAKLSAJaWYgZ29vcyAhPSAicGxhbjkiIHsKLSAJCWNtZCA6PSBiLmdjY0NtZCgiLiIpCi0tCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNDIiwgY21kWzBdfSkKLSsJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBzdHJpbmdzLkpvaW4oYi5nY2NDbWRGb3JSZWFsKCksICIgIil9KQotIAkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJHT0dDQ0ZMQUdTIiwgc3RyaW5ncy5Kb2luKGNtZFszOl0sICIgIil9KQotLQkJY21kID0gYi5neHhDbWQoIi4iKQotLQkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDWFgiLCBjbWRbMF19KQotKwkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDWFgiLCBzdHJpbmdzLkpvaW4oYi5neHhDbWRGb3JSZWFsKCksICIgIil9KQotIAl9Ci0gCi0gCWlmIGJ1aWxkQ29udGV4dC5DZ29FbmFibGVkIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNjE1NmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1QdXQgUXVvdGVzIGFyb3VuZCBDQ19GT1JfVEFSR0VUIHNpbmNlIGl0IGNhbiBiZSBtdXRsaXBsZSB3b3JkcyBlLmcuIGluIE9FCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6Mjg6MTEuMzM0MDMxNjk2IC0wNzAwCi0rKysgZ28vc3JjL21ha2UuYmFzaAkyMDE1LTA3LTI5IDEzOjM2OjU1LjgxNDQ2NTYzMCAtMDcwMAotQEAgLTE1OCw3ICsxNTgsNyBAQAotIGZpCi0gCi0gZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLS1DQz0kQ0NfRk9SX1RBUkdFVCAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0rQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0gZWNobwotIAotIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2dvdG9vbGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2dvdG9vbGRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ2NzAyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9nb3Rvb2xkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1EZWZpbmUgdG9vbGRpciBpbiByZWxhdGlvbiB0byBHT1RPT0xESVIgZW52IHZhcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLSsrKyBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLUBAIC0xMzg4LDcgKzEzODgsNyBAQCBmdW5jIGluaXQoKSB7Ci0gfQotIAotIC8vIFRvb2xEaXIgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJ1aWxkIHRvb2xzLgotLXZhciBUb29sRGlyID0gZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQotK3ZhciBUb29sRGlyID0gZW52T3IoIkdPVE9PTERJUiIsIGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkpCi0gCi0gLy8gSXNMb2NhbEltcG9ydCByZXBvcnRzIHdoZXRoZXIgdGhlIGltcG9ydCBwYXRoIGlzCi0gLy8gYSBsb2NhbCBpbXBvcnQgcGF0aCwgbGlrZSAiLiIsICIuLiIsICIuL2ZvbyIsIG9yICIuLi9mb28iLgotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi1AQCAtMTMxMiw3ICsxMzEyLDcgQEAgZnVuYyAoYiAqYnVpbGRlcikgYnVpbGQoYSAqYWN0aW9uKSAoZXJyCi0gCQl9Ci0gCi0gCQljZ29FeGUgOj0gdG9vbCgiY2dvIikKLS0JCWlmIGEuY2dvICE9IG5pbCAmJiBhLmNnby50YXJnZXQgIT0gIiIgewotKwkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiAmJiBvcy5HZXRlbnYoIkdPVE9PTERJUiIpID09ICIiIHsKLSAJCQljZ29FeGUgPSBhLmNnby50YXJnZXQKLSAJCX0KLSAJCW91dEdvLCBvdXRPYmosIGVyciA6PSBiLmNnbyhhLnAsIGNnb0V4ZSwgb2JqLCBwY0NGTEFHUywgcGNMREZMQUdTLCBjZ29maWxlcywgZ2NjZmlsZXMsIGN4eGZpbGVzLCBhLnAuTUZpbGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmJhZTAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUFkZCBuZXcgb3B0aW9uIC0tdGFyZ2V0LW9ubHkgdG8gYnVpbGQgdGFyZ2V0IGNvbXBvbmVudHMKLVNlcGFyYXRlcyB0aGUgaG9zdCBhbmQgdGFyZ2V0IHBpZWNlcyBvZiBidWlsZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL21ha2UuYmFzaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL21ha2UuYmFzaAotKysrIGdvL3NyYy9tYWtlLmJhc2gKLUBAIC0xNDMsMTIgKzE0MywyMyBAQCBpZiBbICIkMSIgPSAiLS1uby1jbGVhbiIgXTsgdGhlbgotIAlidWlsZGFsbD0iIgotIAlzaGlmdAotIGZpCi0tLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLS0jIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotLW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKLS1lY2hvCi0gCi0taWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSE9TVE9TIiAhPSAiJEdPT1MiIF07IHRoZW4KLStkb19ob3N0X2J1aWxkPSJ5ZXMiCi0rZG9fdGFyZ2V0X2J1aWxkPSJ5ZXMiCi0raWYgWyAiJDEiID0gIi0tdGFyZ2V0LW9ubHkiIF07IHRoZW4KLSsJZG9faG9zdF9idWlsZD0ibm8iCi0rCXNoaWZ0Ci0rZWxpZiBbICIkMSIgPSAiLS1ob3N0LW9ubHkiIF07IHRoZW4KLSsJZG9fdGFyZ2V0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStmaQotKwotK2lmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLSsJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLSsJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotKwllY2hvCi0rCi0gCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKLSAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCi0gCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCi1AQCAtMTU3LDExICsxNjgsMjAgQEAgaWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSAotIAllY2hvCi0gZmkKLSAKLS1lY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotLWVjaG8KLStpZiBbICIkZG9fdGFyZ2V0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsgICAgR09fSU5TVEFMTD0iJHtHT19UQVJHRVRfSU5TVEFMTDotc3RkIGNtZH0iCi0rICAgIGVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0rICAgIGlmIFsgIiRHT0hPU1RPUyIgPSAiJEdPT1MiIC1hICIkR09IT1NUQVJDSCIgPSAiJEdPQVJDSCIgLWEgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJcm0gLXJmIC4vaG9zdC10b29scwotKwlta2RpciAuL2hvc3QtdG9vbHMKLSsJbXYgIiRHT1RPT0xESVIiLyogLi9ob3N0LXRvb2xzCi0rCUdPVE9PTERJUj0iJFBXRC9ob3N0LXRvb2xzIgotKyAgICBmaQotKyAgICBHT1RPT0xESVI9IiRHT1RPT0xESVIiIENDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgJHtHT19JTlNUQUxMfQotKyAgICBlY2hvCi0gCi0tcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAotKyAgICBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rZmkKLSAKLSBpZiBbICIkMSIgIT0gIi0tbm8tYmFubmVyIiBdOyB0aGVuCi0gCSIkR09UT09MRElSIi9kaXN0IGJhbm5lcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3lzbG9nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWJlMDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L3N5c2xvZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUFkZCB0aW1lb3V0cyB0byBsb2dnZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzcuNzEwNDAzMjAwIC0wNzAwCi1AQCAtMzMsNiArMzMsOSBAQAotIGNvbnN0IHNldmVyaXR5TWFzayA9IDB4MDcKLSBjb25zdCBmYWNpbGl0eU1hc2sgPSAweGY4Ci0gCi0rdmFyIHdyaXRlVGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotK3ZhciBjb25uZWN0VGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotKwotIGNvbnN0ICgKLSAJLy8gU2V2ZXJpdHkuCi0gCi1AQCAtMTAwLDYgKzEwMyw3IEBACi0gdHlwZSBzZXJ2ZXJDb25uIGludGVyZmFjZSB7Ci0gCXdyaXRlU3RyaW5nKHAgUHJpb3JpdHksIGhvc3RuYW1lLCB0YWcsIHMsIG5sIHN0cmluZykgZXJyb3IKLSAJY2xvc2UoKSBlcnJvcgotKwlzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvcgotIH0KLSAKLSB0eXBlIG5ldENvbm4gc3RydWN0IHsKLUBAIC0yNzMsNyArMjc3LDExIEBACi0gCQlubCA9ICJcbiIKLSAJfQotIAotLQllcnIgOj0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotKwllcnIgOj0gdy5jb25uLnNldFdyaXRlRGVhZGxpbmUodGltZS5Ob3coKS5BZGQod3JpdGVUaW1lb3V0KSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gMCwgZXJyCi0rCX0KLSsJZXJyID0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiAwLCBlcnIKLSAJfQotQEAgLTMwNSw2ICszMTMsMTAgQEAKLSAJcmV0dXJuIG4uY29ubi5DbG9zZSgpCi0gfQotIAotK2Z1bmMgKG4gKm5ldENvbm4pIHNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yIHsKLSsJcmV0dXJuIG4uY29ubi5TZXRXcml0ZURlYWRsaW5lKHQpCi0rfQotKwotIC8vIE5ld0xvZ2dlciBjcmVhdGVzIGEgbG9nLkxvZ2dlciB3aG9zZSBvdXRwdXQgaXMgd3JpdHRlbiB0bwotIC8vIHRoZSBzeXN0ZW0gbG9nIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5LiBUaGUgbG9nRmxhZwotIC8vIGFyZ3VtZW50IGlzIHRoZSBmbGFnIHNldCBwYXNzZWQgdGhyb3VnaCB0byBsb2cuTmV3IHRvIGNyZWF0ZQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzkuMDEwNDAzMTc1IC0wNzAwCi1AQCAtMTksNyArMTksNyBAQAotIAlsb2dQYXRocyA6PSBbXXN0cmluZ3siL2Rldi9sb2ciLCAiL3Zhci9ydW4vc3lzbG9nIn0KLSAJZm9yIF8sIG5ldHdvcmsgOj0gcmFuZ2UgbG9nVHlwZXMgewotIAkJZm9yIF8sIHBhdGggOj0gcmFuZ2UgbG9nUGF0aHMgewotLQkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbChuZXR3b3JrLCBwYXRoKQotKwkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbFRpbWVvdXQobmV0d29yaywgcGF0aCwgY29ubmVjdFRpbWVvdXQpCi0gCQkJaWYgZXJyICE9IG5pbCB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMzMDA0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGdvLWNvbW1vbi5pbmMKLQotUFYgPSAiMS43LjQiCi1HT19CQVNFVkVSU0lPTiA9ICIxLjciCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICBmaWxlOi8vYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBcCi0gICAgICAgZmlsZTovL3N5c2xvZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LWNjLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZ290b29sZGlyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OWMxMDc2NDI4YTVkM2I1YWQ3YWM2NTIzM2ZjY2EyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzE4OTExMWU5YmE2NTFhMmJiM2VlODY4YWE4ODFmYWIzNmIyZjJkYTM0MDllODA4ODVjYTc1OGE2YjYxNGNjIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvYXJtaGYtZWxmLWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUzYTE2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRW5jb2RlIGFybSBFQUJJICggaGFyZC9zb2Z0ICkgY2FsbGluZyBjb252ZW50aW9uIGluIEVMRiBoZWFkZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLSsrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi1AQCAtODI3LDcgKzgyNywxMyBAQAotIAkvLyAzMi1iaXQgYXJjaGl0ZWN0dXJlcwotIAljYXNlICc1JzoKLSAJCS8vIHdlIHVzZSBFQUJJIG9uIGJvdGggbGludXgvYXJtIGFuZCBmcmVlYnNkL2FybS4KLS0JCWlmIEhFQURUWVBFID09IG9iai5IbGludXggfHwgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSsJCWlmIEhFQURUWVBFID09IG9iai5IbGludXggewotKwkJCWlmIEN0eHQuR29hcm0gPT0gNyB7Ci0rCQkJCWVoZHIuZmxhZ3MgPSAweDUwMDA0MDIgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBoYXJkIGZsb2F0Ci0rCQkJfSBlbHNlIHsKLSsJCQkJZWhkci5mbGFncyA9IDB4NTAwMDIwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQgZmxvYXQKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSAJCQkvLyBXZSBzZXQgYSB2YWx1ZSBoZXJlIHRoYXQgbWFrZXMgbm8gaW5kaWNhdGlvbiBvZiB3aGljaAotIAkJCS8vIGZsb2F0IEFCSSB0aGUgb2JqZWN0IHVzZXMsIGJlY2F1c2UgdGhpcyBpcyBpbmZvcm1hdGlvbgotIAkJCS8vIHVzZWQgYnkgdGhlIGR5bmFtaWMgbGlua2VyIHRvIGNvbXBhcmUgZXhlY3V0YWJsZXMgYW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtY2MtaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtY2MtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2N2NhZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZml4LWNjLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotQWNjZXB0IENDIHdpdGggbXVsdGlwbGUgd29yZHMgaW4gaXRzIG5hbWUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi1AQCAtMjk5MSwxMiArMjk5MSwyNCBAQCBmdW5jIChiICpidWlsZGVyKSBnY2NDbWQob2JqZGlyIHN0cmluZykKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJDQyIsIGRlZmF1bHRDQywgb2JqZGlyKQotIH0KLSAKLSsvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLStmdW5jIChiICpidWlsZGVyKSBnY2NDbWRGb3JSZWFsKCkgW11zdHJpbmcgewotKwlyZXR1cm4gZW52TGlzdCgiQ0MiLCBkZWZhdWx0Q0MpCi0rfQotKwotIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpidWlsZGVyKSBneHhDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNYWCIsIGRlZmF1bHRDWFgsIG9iamRpcikKLSB9Ci0gCi0rLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotKy8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDWFgiLCBkZWZhdWx0Q1hYKQotK30KLSsKLSAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KLSBmdW5jIChiICpidWlsZGVyKSBnZm9ydHJhbkNtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiRkMiLCAiZ2ZvcnRyYW4iLCBvYmpkaXIpCi1JbmRleDogZ28vc3JjL2NtZC9nby9lbnYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vZW52LmdvCi0rKysgZ28vc3JjL2NtZC9nby9lbnYuZ28KLUBAIC01MSwxMCArNTEsOSBAQCBmdW5jIG1rRW52KCkgW11lbnZWYXIgewotIAotIAlpZiBnb29zICE9ICJwbGFuOSIgewotIAkJY21kIDo9IGIuZ2NjQ21kKCIuIikKLS0JCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBjbWRbMF19KQotKwkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIHN0cmluZ3MuSm9pbihiLmdjY0NtZEZvclJlYWwoKSwgIiAiKX0pCi0gCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkdPR0NDRkxBR1MiLCBzdHJpbmdzLkpvaW4oY21kWzM6XSwgIiAiKX0pCi0tCQljbWQgPSBiLmd4eENtZCgiLiIpCi0tCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIGNtZFswXX0pCi0rCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIHN0cmluZ3MuSm9pbihiLmd4eENtZEZvclJlYWwoKSwgIiAiKX0pCi0gCX0KLSAKLSAJaWYgYnVpbGRDb250ZXh0LkNnb0VuYWJsZWQgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2MTU2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVB1dCBRdW90ZXMgYXJvdW5kIENDX0ZPUl9UQVJHRVQgc2luY2UgaXQgY2FuIGJlIG11dGxpcGxlIHdvcmRzIGUuZy4gaW4gT0UKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzoyODoxMS4zMzQwMzE2OTYgLTA3MDAKLSsrKyBnby9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6MzY6NTUuODE0NDY1NjMwIC0wNzAwCi1AQCAtMTU4LDcgKzE1OCw3IEBACi0gZmkKLSAKLSBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLStDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLSBlY2hvCi0gCi0gcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZ290b29sZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZ290b29sZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDY3MDI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2dvdG9vbGRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURlZmluZSB0b29sZGlyIGluIHJlbGF0aW9uIHRvIEdPVE9PTERJUiBlbnYgdmFyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTEzODgsNyArMTM4OCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0xMzEyLDcgKzEzMTIsNyBAQCBmdW5jIChiICpidWlsZGVyKSBidWlsZChhICphY3Rpb24pIChlcnIKLSAJCX0KLSAKLSAJCWNnb0V4ZSA6PSB0b29sKCJjZ28iKQotLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiB7Ci0rCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgewotIAkJCWNnb0V4ZSA9IGEuY2dvLnRhcmdldAotIAkJfQotIAkJb3V0R28sIG91dE9iaiwgZXJyIDo9IGIuY2dvKGEucCwgY2dvRXhlLCBvYmosIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgY3h4ZmlsZXMsIGEucC5NRmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGQ5NWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIG5ldyBvcHRpb24gLS10YXJnZXQtb25seSB0byBidWlsZCB0YXJnZXQgY29tcG9uZW50cwotU2VwYXJhdGVzIHRoZSBob3N0IGFuZCB0YXJnZXQgcGllY2VzIG9mIGJ1aWxkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCi0rKysgZ28vc3JjL21ha2UuYmFzaAotQEAgLTE1NCwxMyArMTU0LDIyIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCi0gCWJ1aWxkYWxsPSIiCi0gCXNoaWZ0Ci0gZmkKLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotK2RvX2hvc3RfYnVpbGQ9InllcyIKLStkb190YXJnZXRfYnVpbGQ9InllcyIKLStpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgotKwlkb19ob3N0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgotKwlkb190YXJnZXRfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2ZpCi0gCi0tIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLS1tdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0tZWNobwotK2lmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLSsJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLSsJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotKwllY2hvCi0gCi0taWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSE9TVE9TIiAhPSAiJEdPT1MiIF07IHRoZW4KLSAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgotIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKLSAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KLUBAIC0xNjksMTEgKzE3OCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09ICi0gCWVjaG8KLSBmaQotIAotLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0tZWNobwotK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKLSsgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLSsgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwlybSAtcmYgLi9ob3N0LXRvb2xzCi0rCW1rZGlyIC4vaG9zdC10b29scwotKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKLSsJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCi0rICAgIGZpCi0rICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9Ci0rICAgIGVjaG8KLSAKLS1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rICAgIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLStmaQotIAotIGlmIFsgIiQxIiAhPSAiLS1uby1iYW5uZXIiIF07IHRoZW4KLSAJIiRHT1RPT0xESVIiL2Rpc3QgYmFubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zeXNsb2cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmUwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvc3lzbG9nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIHRpbWVvdXRzIHRvIGxvZ2dlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxNC0xMC0wMyAxMTo0NDozNy43MTA0MDMyMDAgLTA3MDAKLUBAIC0zMyw2ICszMyw5IEBACi0gY29uc3Qgc2V2ZXJpdHlNYXNrID0gMHgwNwotIGNvbnN0IGZhY2lsaXR5TWFzayA9IDB4ZjgKLSAKLSt2YXIgd3JpdGVUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rdmFyIGNvbm5lY3RUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rCi0gY29uc3QgKAotIAkvLyBTZXZlcml0eS4KLSAKLUBAIC0xMDAsNiArMTAzLDcgQEAKLSB0eXBlIHNlcnZlckNvbm4gaW50ZXJmYWNlIHsKLSAJd3JpdGVTdHJpbmcocCBQcmlvcml0eSwgaG9zdG5hbWUsIHRhZywgcywgbmwgc3RyaW5nKSBlcnJvcgotIAljbG9zZSgpIGVycm9yCi0rCXNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yCi0gfQotIAotIHR5cGUgbmV0Q29ubiBzdHJ1Y3QgewotQEAgLTI3Myw3ICsyNzcsMTEgQEAKLSAJCW5sID0gIlxuIgotIAl9Ci0gCi0tCWVyciA6PSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0rCWVyciA6PSB3LmNvbm4uc2V0V3JpdGVEZWFkbGluZSh0aW1lLk5vdygpLkFkZCh3cml0ZVRpbWVvdXQpKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiAwLCBlcnIKLSsJfQotKwllcnIgPSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIDAsIGVycgotIAl9Ci1AQCAtMzA1LDYgKzMxMywxMCBAQAotIAlyZXR1cm4gbi5jb25uLkNsb3NlKCkKLSB9Ci0gCi0rZnVuYyAobiAqbmV0Q29ubikgc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IgewotKwlyZXR1cm4gbi5jb25uLlNldFdyaXRlRGVhZGxpbmUodCkKLSt9Ci0rCi0gLy8gTmV3TG9nZ2VyIGNyZWF0ZXMgYSBsb2cuTG9nZ2VyIHdob3NlIG91dHB1dCBpcyB3cml0dGVuIHRvCi0gLy8gdGhlIHN5c3RlbSBsb2cgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkuIFRoZSBsb2dGbGFnCi0gLy8gYXJndW1lbnQgaXMgdGhlIGZsYWcgc2V0IHBhc3NlZCB0aHJvdWdoIHRvIGxvZy5OZXcgdG8gY3JlYXRlCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxNC0xMC0wMyAxMTo0NDozOS4wMTA0MDMxNzUgLTA3MDAKLUBAIC0xOSw3ICsxOSw3IEBACi0gCWxvZ1BhdGhzIDo9IFtdc3RyaW5neyIvZGV2L2xvZyIsICIvdmFyL3J1bi9zeXNsb2cifQotIAlmb3IgXywgbmV0d29yayA6PSByYW5nZSBsb2dUeXBlcyB7Ci0gCQlmb3IgXywgcGF0aCA6PSByYW5nZSBsb2dQYXRocyB7Ci0tCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsKG5ldHdvcmssIHBhdGgpCi0rCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsVGltZW91dChuZXR3b3JrLCBwYXRoLCBjb25uZWN0VGltZW91dCkKLSAJCQlpZiBlcnIgIT0gbmlsIHsKLSAJCQkJY29udGludWUKLSAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzM3NmEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1HT01JTk9SID0gIiIKLUdPX0JBU0VWRVJTSU9OID0gIjEuOCIKLVBWIC49ICIke0dPTUlOT1J9IgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVkNDk1MGVjYjdiMjZkMmM1ZTRlN2I0ZTBkZDc0NzA3IgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgZmlsZTovL2FybWhmLWVsZi1oZWFkZXIucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9zeXNsb2cucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaCBcCi0gICAgICAgZmlsZTovL2dvdG9vbGRpci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzc0Mzk2MGM5Njg3NjA0MzdiNmUzOTA5M2NmZTZmNjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDA2ODY1ZjU4N2I0NGJlNzA5MmYyMDZkNzNmYzFkZTI1MjYwMGI3OWIzY2FjYzU4N2I3NGI1ZWY1YzYyMzU5NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2FybWhmLWVsZi1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTA4ODM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1FbmNvZGUgYXJtIEVBQkkgKCBoYXJkL3NvZnQgKSBjYWxsaW5nIGNvbnZlbnRpb24gaW4gRUxGIGhlYWRlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLUBAIC05NTAsNyArOTUwLDEzIEBAIGZ1bmMgRWxmaW5pdChjdHh0ICpMaW5rKSB7Ci0gCWNhc2Ugc3lzLkFSTSwgc3lzLk1JUFM6Ci0gCQlpZiBTeXNBcmNoLkZhbWlseSA9PSBzeXMuQVJNIHsKLSAJCQkvLyB3ZSB1c2UgRUFCSSBvbiBsaW51eC9hcm0sIGZyZWVic2QvYXJtLCBuZXRic2QvYXJtLgotLQkJCWlmIEhlYWR0eXBlID09IG9iai5IbGludXggfHwgSGVhZHR5cGUgPT0gb2JqLkhmcmVlYnNkIHx8IEhlYWR0eXBlID09IG9iai5IbmV0YnNkIHsKLSsJCQlpZiBIZWFkdHlwZSA9PSBvYmouSGxpbnV4IHsKLSsJCQkJaWYgb2JqLkdPQVJNID09IDcgewotKwkJCQkJZWhkci5mbGFncyA9IDB4NTAwMDQwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIGhhcmQgZmxvYXQKLSsJCQkJfSBlbHNlIHsKLSsJCQkJCWVoZHIuZmxhZ3MgPSAweDUwMDAyMDIgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBzb2Z0IGZsb2F0Ci0rCQkJCX0KLSsJCQl9IGVsc2UgaWYgSGVhZHR5cGUgPT0gb2JqLkhmcmVlYnNkIHx8IEhlYWR0eXBlID09IG9iai5IbmV0YnNkIHsKLSAJCQkJLy8gV2Ugc2V0IGEgdmFsdWUgaGVyZSB0aGF0IG1ha2VzIG5vIGluZGljYXRpb24gb2Ygd2hpY2gKLSAJCQkJLy8gZmxvYXQgQUJJIHRoZSBvYmplY3QgdXNlcywgYmVjYXVzZSB0aGlzIGlzIGluZm9ybWF0aW9uCi0gCQkJCS8vIHVzZWQgYnkgdGhlIGR5bmFtaWMgbGlua2VyIHRvIGNvbXBhcmUgZXhlY3V0YWJsZXMgYW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtY2MtaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtY2MtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOWI4MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZml4LWNjLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotQWNjZXB0IENDIHdpdGggbXVsdGlwbGUgd29yZHMgaW4gaXRzIG5hbWUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi1AQCAtMzEwMCwxMiArMzEwMCwyNCBAQCBmdW5jIChiICpidWlsZGVyKSBnY2NDbWQob2JqZGlyIHN0cmluZykKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJDQyIsIGRlZmF1bHRDQywgb2JqZGlyKQotIH0KLSAKLSsvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLStmdW5jIChiICpidWlsZGVyKSBnY2NDbWRGb3JSZWFsKCkgW11zdHJpbmcgewotKwlyZXR1cm4gZW52TGlzdCgiQ0MiLCBkZWZhdWx0Q0MpCi0rfQotKwotIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpidWlsZGVyKSBneHhDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNYWCIsIGRlZmF1bHRDWFgsIG9iamRpcikKLSB9Ci0gCi0rLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotKy8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDWFgiLCBkZWZhdWx0Q1hYKQotK30KLSsKLSAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KLSBmdW5jIChiICpidWlsZGVyKSBnZm9ydHJhbkNtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiRkMiLCAiZ2ZvcnRyYW4iLCBvYmpkaXIpCi1JbmRleDogZ28vc3JjL2NtZC9nby9lbnYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vZW52LmdvCi0rKysgZ28vc3JjL2NtZC9nby9lbnYuZ28KLUBAIC02MywxMCArNjMsOSBAQCBmdW5jIG1rRW52KCkgW11lbnZWYXIgewotIAl9Ci0gCi0gCWNtZCA6PSBiLmdjY0NtZCgiLiIpCi0tCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBjbWRbMF19KQotKwllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNDIiwgc3RyaW5ncy5Kb2luKGIuZ2NjQ21kRm9yUmVhbCgpLCAiICIpfSkKLSAJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJHT0dDQ0ZMQUdTIiwgc3RyaW5ncy5Kb2luKGNtZFszOl0sICIgIil9KQotLQljbWQgPSBiLmd4eENtZCgiLiIpCi0tCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ1hYIiwgY21kWzBdfSkKLSsJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDWFgiLCBzdHJpbmdzLkpvaW4oYi5neHhDbWRGb3JSZWFsKCksICIgIil9KQotIAotIAlpZiBidWlsZENvbnRleHQuQ2dvRW5hYmxlZCB7Ci0gCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNHT19FTkFCTEVEIiwgIjEifSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNjE1NmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1QdXQgUXVvdGVzIGFyb3VuZCBDQ19GT1JfVEFSR0VUIHNpbmNlIGl0IGNhbiBiZSBtdXRsaXBsZSB3b3JkcyBlLmcuIGluIE9FCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6Mjg6MTEuMzM0MDMxNjk2IC0wNzAwCi0rKysgZ28vc3JjL21ha2UuYmFzaAkyMDE1LTA3LTI5IDEzOjM2OjU1LjgxNDQ2NTYzMCAtMDcwMAotQEAgLTE1OCw3ICsxNTgsNyBAQAotIGZpCi0gCi0gZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLS1DQz0kQ0NfRk9SX1RBUkdFVCAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0rQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0gZWNobwotIAotIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2dvdG9vbGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2dvdG9vbGRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ2NzAyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9nb3Rvb2xkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1EZWZpbmUgdG9vbGRpciBpbiByZWxhdGlvbiB0byBHT1RPT0xESVIgZW52IHZhcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLSsrKyBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLUBAIC0xMzg4LDcgKzEzODgsNyBAQCBmdW5jIGluaXQoKSB7Ci0gfQotIAotIC8vIFRvb2xEaXIgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJ1aWxkIHRvb2xzLgotLXZhciBUb29sRGlyID0gZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQotK3ZhciBUb29sRGlyID0gZW52T3IoIkdPVE9PTERJUiIsIGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkpCi0gCi0gLy8gSXNMb2NhbEltcG9ydCByZXBvcnRzIHdoZXRoZXIgdGhlIGltcG9ydCBwYXRoIGlzCi0gLy8gYSBsb2NhbCBpbXBvcnQgcGF0aCwgbGlrZSAiLiIsICIuLiIsICIuL2ZvbyIsIG9yICIuLi9mb28iLgotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi1AQCAtMTMxMiw3ICsxMzEyLDcgQEAgZnVuYyAoYiAqYnVpbGRlcikgYnVpbGQoYSAqYWN0aW9uKSAoZXJyCi0gCQl9Ci0gCi0gCQljZ29FeGUgOj0gdG9vbCgiY2dvIikKLS0JCWlmIGEuY2dvICE9IG5pbCAmJiBhLmNnby50YXJnZXQgIT0gIiIgewotKwkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiAmJiBvcy5HZXRlbnYoIkdPVE9PTERJUiIpID09ICIiIHsKLSAJCQljZ29FeGUgPSBhLmNnby50YXJnZXQKLSAJCX0KLSAJCW91dEdvLCBvdXRPYmosIGVyciA6PSBiLmNnbyhhLnAsIGNnb0V4ZSwgb2JqLCBwY0NGTEFHUywgcGNMREZMQUdTLCBjZ29maWxlcywgZ2NjZmlsZXMsIGN4eGZpbGVzLCBhLnAuTUZpbGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGRkOTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUFkZCBuZXcgb3B0aW9uIC0tdGFyZ2V0LW9ubHkgdG8gYnVpbGQgdGFyZ2V0IGNvbXBvbmVudHMKLVNlcGFyYXRlcyB0aGUgaG9zdCBhbmQgdGFyZ2V0IHBpZWNlcyBvZiBidWlsZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL21ha2UuYmFzaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL21ha2UuYmFzaAotKysrIGdvL3NyYy9tYWtlLmJhc2gKLUBAIC0xNTQsMTMgKzE1NCwyMiBAQCBpZiBbICIkMSIgPSAiLS1uby1jbGVhbiIgXTsgdGhlbgotIAlidWlsZGFsbD0iIgotIAlzaGlmdAotIGZpCi0tLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLStkb19ob3N0X2J1aWxkPSJ5ZXMiCi0rZG9fdGFyZ2V0X2J1aWxkPSJ5ZXMiCi0raWYgWyAiJDEiID0gIi0tdGFyZ2V0LW9ubHkiIF07IHRoZW4KLSsJZG9faG9zdF9idWlsZD0ibm8iCi0rCXNoaWZ0Ci0rZWxpZiBbICIkMSIgPSAiLS1ob3N0LW9ubHkiIF07IHRoZW4KLSsJZG9fdGFyZ2V0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStmaQotIAotLSMgRGVsYXkgbW92ZSBvZiBkaXN0IHRvb2wgdG8gbm93LCBiZWNhdXNlIGJvb3RzdHJhcCBtYXkgY2xlYXIgdG9vbCBkaXJlY3RvcnkuCi0tbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotLWVjaG8KLStpZiBbICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCi0rCS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCi0rCSMgRGVsYXkgbW92ZSBvZiBkaXN0IHRvb2wgdG8gbm93LCBiZWNhdXNlIGJvb3RzdHJhcCBtYXkgY2xlYXIgdG9vbCBkaXJlY3RvcnkuCi0rCW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKLSsJZWNobwotIAotLWlmIFsgIiRHT0hPU1RBUkNIIiAhPSAiJEdPQVJDSCIgLW8gIiRHT0hPU1RPUyIgIT0gIiRHT09TIiBdOyB0aGVuCi0gCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKLSAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCi0gCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCi1AQCAtMTY5LDExICsxNzgsMjAgQEAgaWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSAotIAllY2hvCi0gZmkKLSAKLS1lY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotLWVjaG8KLStpZiBbICIkZG9fdGFyZ2V0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsgICAgR09fSU5TVEFMTD0iJHtHT19UQVJHRVRfSU5TVEFMTDotc3RkIGNtZH0iCi0rICAgIGVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0rICAgIGlmIFsgIiRHT0hPU1RPUyIgPSAiJEdPT1MiIC1hICIkR09IT1NUQVJDSCIgPSAiJEdPQVJDSCIgLWEgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJcm0gLXJmIC4vaG9zdC10b29scwotKwlta2RpciAuL2hvc3QtdG9vbHMKLSsJbXYgIiRHT1RPT0xESVIiLyogLi9ob3N0LXRvb2xzCi0rCUdPVE9PTERJUj0iJFBXRC9ob3N0LXRvb2xzIgotKyAgICBmaQotKyAgICBHT1RPT0xESVI9IiRHT1RPT0xESVIiIENDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgJHtHT19JTlNUQUxMfQotKyAgICBlY2hvCi0gCi0tcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAotKyAgICBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rZmkKLSAKLSBpZiBbICIkMSIgIT0gIi0tbm8tYmFubmVyIiBdOyB0aGVuCi0gCSIkR09UT09MRElSIi9kaXN0IGJhbm5lcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3lzbG9nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWJlMDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L3N5c2xvZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUFkZCB0aW1lb3V0cyB0byBsb2dnZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzcuNzEwNDAzMjAwIC0wNzAwCi1AQCAtMzMsNiArMzMsOSBAQAotIGNvbnN0IHNldmVyaXR5TWFzayA9IDB4MDcKLSBjb25zdCBmYWNpbGl0eU1hc2sgPSAweGY4Ci0gCi0rdmFyIHdyaXRlVGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotK3ZhciBjb25uZWN0VGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotKwotIGNvbnN0ICgKLSAJLy8gU2V2ZXJpdHkuCi0gCi1AQCAtMTAwLDYgKzEwMyw3IEBACi0gdHlwZSBzZXJ2ZXJDb25uIGludGVyZmFjZSB7Ci0gCXdyaXRlU3RyaW5nKHAgUHJpb3JpdHksIGhvc3RuYW1lLCB0YWcsIHMsIG5sIHN0cmluZykgZXJyb3IKLSAJY2xvc2UoKSBlcnJvcgotKwlzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvcgotIH0KLSAKLSB0eXBlIG5ldENvbm4gc3RydWN0IHsKLUBAIC0yNzMsNyArMjc3LDExIEBACi0gCQlubCA9ICJcbiIKLSAJfQotIAotLQllcnIgOj0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotKwllcnIgOj0gdy5jb25uLnNldFdyaXRlRGVhZGxpbmUodGltZS5Ob3coKS5BZGQod3JpdGVUaW1lb3V0KSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gMCwgZXJyCi0rCX0KLSsJZXJyID0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiAwLCBlcnIKLSAJfQotQEAgLTMwNSw2ICszMTMsMTAgQEAKLSAJcmV0dXJuIG4uY29ubi5DbG9zZSgpCi0gfQotIAotK2Z1bmMgKG4gKm5ldENvbm4pIHNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yIHsKLSsJcmV0dXJuIG4uY29ubi5TZXRXcml0ZURlYWRsaW5lKHQpCi0rfQotKwotIC8vIE5ld0xvZ2dlciBjcmVhdGVzIGEgbG9nLkxvZ2dlciB3aG9zZSBvdXRwdXQgaXMgd3JpdHRlbiB0bwotIC8vIHRoZSBzeXN0ZW0gbG9nIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5LiBUaGUgbG9nRmxhZwotIC8vIGFyZ3VtZW50IGlzIHRoZSBmbGFnIHNldCBwYXNzZWQgdGhyb3VnaCB0byBsb2cuTmV3IHRvIGNyZWF0ZQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzkuMDEwNDAzMTc1IC0wNzAwCi1AQCAtMTksNyArMTksNyBAQAotIAlsb2dQYXRocyA6PSBbXXN0cmluZ3siL2Rldi9sb2ciLCAiL3Zhci9ydW4vc3lzbG9nIn0KLSAJZm9yIF8sIG5ldHdvcmsgOj0gcmFuZ2UgbG9nVHlwZXMgewotIAkJZm9yIF8sIHBhdGggOj0gcmFuZ2UgbG9nUGF0aHMgewotLQkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbChuZXR3b3JrLCBwYXRoKQotKwkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbFRpbWVvdXQobmV0d29yaywgcGF0aCwgY29ubmVjdFRpbWVvdXQpCi0gCQkJaWYgZXJyICE9IG5pbCB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjEyMjQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgZ28tY29tbW9uLmluYworCitHT19CQVNFVkVSU0lPTiA9ICIxLjkiCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgZmlsZTovLzAwMDEtbWFrZS5iYXNoLXF1b3RlLUNDX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMi1jbWQtZ28tZml4LUNDLWFuZC1DWFgtZW52aXJvbm1lbnQtdmFyaWFibGUtY29uc3RydWN0LnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDMtbWFrZS5iYXNoLWJldHRlci1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDQtY21kLWdvLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpci5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA1LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA3LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwOC1tYWtlLmJhc2gtYWRkLUdPSE9TVHh4LWluZGlyZWN0aW9uLWZvci1jcm9zcy1jYW5hZGlhLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDEwLW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vc2V0LWV4dGVybmFsLWxpbmtlci5wYXRjaCIKKworU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiZGEyZDQ0ZWEzODQwNzZlZmVjNDNlZTFmOGI3ZDQ1ZDIiCitTUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICJhNGFiMjI5MDI4ZWQxNjdiYTE5ODY4MjU3NTE0NjM2MDUyNjRlNDQ4NjgzNjJjYThlN2FjY2M4YmUwNTdlOTkzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDEtbWFrZS5iYXNoLXF1b3RlLUNDX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwMDk3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDEtbWFrZS5iYXNoLXF1b3RlLUNDX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBkMjQ3MzRhZDQ0MDA2NzkxZmQ0OGZjNDVlYTM0ZmU2MDhmZjY3MmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MDQ6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzddIG1ha2UuYmFzaDogcXVvdGUgQ0NfRk9SX1RBUkdFVAorCitGb3IgT0UgY3Jvc3MtYnVpbGRzLCAkQ0NfRk9SX1RBUkdFVCBoYXMgbW9yZSB0aGFuCitvbmUgd29yZCBhbmQgbmVlZHMgdG8gYmUgcXVvdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2UuYmFzaCBiL3NyYy9tYWtlLmJhc2gKK2luZGV4IDcxZTc1MzEuLmRjZjMyNTYgMTAwNzU1CistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTc1LDcgKzE3NSw3IEBAIGVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCisgCisgb2xkX2Jpbl9maWxlcz0kKGNkICRHT1JPT1QvYmluICYmIGVjaG8gKikKKyAKKy1DQz0kQ0NfRk9SX1RBUkdFVCAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCisrQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCisgCisgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbiBnbyBhbmQgZ29mbXQKKyAjIGFuZCAkR09PU18kR09BUkNIIChhIGRpcmVjdG9yeSB1c2VkIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMi1jbWQtZ28tZml4LUNDLWFuZC1DWFgtZW52aXJvbm1lbnQtdmFyaWFibGUtY29uc3RydWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMi1jbWQtZ28tZml4LUNDLWFuZC1DWFgtZW52aXJvbm1lbnQtdmFyaWFibGUtY29uc3RydWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZTQyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSBhNzE3MGQzMmExM2FlYWQ2MDhhYmQxODk5NmY2ZGFiMmUyYTYzMWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MDY6MzcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGNtZC9nbzogZml4IENDIGFuZCBDWFggZW52aXJvbm1lbnQgdmFyaWFibGUgY29uc3RydWN0aW9uCisKK0ZvciBPRSBjcm9zcy1idWlsZHMsIENDIGFuZCBDWFggaGF2ZSBtdWx0aXBsZSB3b3JkcywgYW5kCit3ZSBuZWVkIHRoZWlyIGNvbXBsZXRlIGRlZmluaXRpb25zIHdoZW4gc2V0dGluZyB1cCB0aGUKK2Vudmlyb25tZW50IGR1cmluZyBHbyBidWlsZHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICA0ICsrLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCAxMiArKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IDQzZDQzMzQuLjUyOWQyMWQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTc0LDEwICs3NCwxMCBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAJfQorIAorIAljbWQgOj0gYi5HY2NDbWQoIi4iKQorLQllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjbWRbMF19KQorKwllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBzdHJpbmdzLkpvaW4oYi5HY2NDbWRGb3JSZWFsKCksICIgIil9KQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJHT0dDQ0ZMQUdTIiwgVmFsdWU6IHN0cmluZ3MuSm9pbihjbWRbMzpdLCAiICIpfSkKKyAJY21kID0gYi5HeHhDbWQoIi4iKQorLQllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogY21kWzBdfSkKKysJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ1hYIiwgVmFsdWU6IHN0cmluZ3MuSm9pbihiLkd4eENtZEZvclJlYWwoKSwgIiAiKX0pCisgCisgCWlmIGNmZy5CdWlsZENvbnRleHQuQ2dvRW5hYmxlZCB7CisgCQllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDR09fRU5BQkxFRCIsIFZhbHVlOiAiMSJ9KQorZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworaW5kZXggN2Q2NjdmZi4uODVkZjBiMyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMzEyNywxMiArMzEyNywyNCBAQCBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgeworIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgY2ZnLkRlZmF1bHRDQywgb2JqZGlyKQorIH0KKyAKKysvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4CisrLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKytmdW5jIChiICpCdWlsZGVyKSBHY2NDbWRGb3JSZWFsKCkgW11zdHJpbmcgeworKwlyZXR1cm4gZW52TGlzdCgiQ0MiLCBjZmcuRGVmYXVsdENDKQorK30KKysKKyAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJDWFgiLCBjZmcuRGVmYXVsdENYWCwgb2JqZGlyKQorIH0KKyAKKysvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4CisrLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisrZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGNmZy5EZWZhdWx0Q1hYKQorK30KKysKKyAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KKyBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7CisgCXJldHVybiBiLmNjb21waWxlckNtZCgiRkMiLCAiZ2ZvcnRyYW4iLCBvYmpkaXIpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDMtbWFrZS5iYXNoLWJldHRlci1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkOWYyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDMtbWFrZS5iYXNoLWJldHRlci1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsOTIgQEAKK0Zyb20gMzFlODhmMDZhZjdhYjc4N2Q4ZmUwYzFjYTYyNTE5M2UxNzk5ZTE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDA4OjEyOjA0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBtYWtlLmJhc2g6IGJldHRlciBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCisKK0ZvcmUgT0UgY3Jvc3MtYnVpbGRzLCB0aGUgc2ltcGxlIGNoZWNrcyBpbiBtYWtlLmJhc2ggYXJlCitpbnN1ZmZpY2llbnQgZm9yIGRpc3Rpbmd1aXNoaW5nIGhvc3QgYW5kIHRhcmdldCBidWlsZAorZW52aXJvbm1lbnRzLCBzbyBhZGQgc29tZSBvcHRpb25zIGZvciB0ZWxsaW5nIHRoZQorc2NyaXB0IHdoaWNoIHBhcnRzIGFyZSBiZWluZyBidWlsdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL21ha2UuYmFzaCB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCBkY2YzMjU2Li45NTUzNjIzIDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE1NiwxMyArMTU2LDIyIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCisgCWJ1aWxkYWxsPSIiCisgCXNoaWZ0CisgZmkKKy0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAorK2RvX2hvc3RfYnVpbGQ9InllcyIKKytkb190YXJnZXRfYnVpbGQ9InllcyIKKytpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgorKwlkb19ob3N0X2J1aWxkPSJubyIKKysJc2hpZnQKKytlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgorKwlkb190YXJnZXRfYnVpbGQ9Im5vIgorKwlzaGlmdAorK2ZpCisgCistIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KKy1tdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0CistZWNobworK2lmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKysJLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKKysJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KKysJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAorKwllY2hvCisgCistaWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSE9TVE9TIiAhPSAiJEdPT1MiIF07IHRoZW4KKyAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgorIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKKyAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KK0BAIC0xNzEsMjQgKzE4MCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgorIAllY2hvCisgZmkKKyAKKy1lY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgorLQorLW9sZF9iaW5fZmlsZXM9JChjZCAkR09ST09UL2JpbiAmJiBlY2hvICopCistCistQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCistCistIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbiBnbyBhbmQgZ29mbXQKKy0jIGFuZCAkR09PU18kR09BUkNIIChhIGRpcmVjdG9yeSB1c2VkIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KKy0oY2QgJEdPUk9PVC9iaW4gJiYgZm9yIGYgaW4gKjsgZG8KKy0JaWYgISBleHByICIgJG9sZF9iaW5fZmlsZXMgZ28gZ29mbXQgJHtHT09TfV8ke0dPQVJDSH0gIiA6ICIuKiAkZiAiID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKy0JCWVjaG8gMT4mMiAiRVJST1I6IHVuZXhwZWN0ZWQgbmV3IGZpbGUgaW4gJEdPUk9PVC9iaW46ICRmIgorLQkJZXhpdCAxCistCWZpCistZG9uZSkKKy0KKy1lY2hvCistCistcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAorK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgorKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKKysgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKKysgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgorKwlybSAtcmYgLi9ob3N0LXRvb2xzCisrCW1rZGlyIC4vaG9zdC10b29scworKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKKysJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCisrICAgIGZpCisrICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9CisrICAgIGVjaG8KKysKKysgICAgcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAorK2ZpCisgCisgaWYgWyAiJDEiICE9ICItLW5vLWJhbm5lciIgXTsgdGhlbgorIAkiJEdPVE9PTERJUiIvZGlzdCBiYW5uZXIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNC1jbWQtZ28tYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNC1jbWQtZ28tYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MGIwNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA0LWNtZC1nby1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXIucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSAxMzY5MTc4YjQ5N2IxMjA4OGVjNGMyNzk0NjA2Y2M5ZjE0Y2MzMjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MTU6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzddIGNtZC9nbzogYWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlCisgZW52aXJvbm1lbnQKKworRm9yIE9FIGNyb3NzLWJ1aWxkcywgaG9zdC1zaWRlIHRvb2xzIHJlc2lkZSBpbiB0aGUgbmF0aXZlCitHT1JPT1QsIG5vdCB0aGUgdGFyZ2V0IEdPUk9PVC4gIEFsbG93IEdPVE9PTERJUiB0byBiZSBzZXQKK2luIHRoZSBlbnZpcm9ubWVudCB0byBhbGxvdyB0aGF0IHNwbGl0LCByYXRoZXIgdGhhbiBhbHdheXMKK2NvbXB1dGluZyBHT1RPT0xESVIgcmVsYXRpdmUgdG8gdGhlIEdPUk9PVCBzZXR0aW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gICAgfCA3ICsrKysrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCAyICstCisgc3JjL2dvL2J1aWxkL2J1aWxkLmdvICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCitpbmRleCBiM2FkMWNlLi5jMWRjOTc0IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC05MSw3ICs5MSwxMiBAQCBmdW5jIGluaXQoKSB7CisgCS8vIGFzIHRoZSB0b29sIGRpcmVjdG9yeSBkb2VzIG5vdCBtb3ZlIGJhc2VkIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAJLy8gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluIGdvL2J1aWxkLAorIAkvLyBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbiBydW50aW1lLkdPUk9PVCgpLgorLQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCXMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKQorKwlpZiBzID09ICIiIHsKKysJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJfSBlbHNlIHsKKysJCWJ1aWxkLlRvb2xEaXIgPSBzCisrCX0KKyB9CisgCisgZnVuYyBmaW5kR09ST09UKCkgc3RyaW5nIHsKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK2luZGV4IDg1ZGYwYjMuLjdiOWE2OWUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworQEAgLTEzMzcsNyArMTMzNyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVyciBlcnJvcikgeworIAkJfQorIAorIAkJdmFyIGNnb0V4ZSBzdHJpbmcKKy0JCWlmIGEuY2dvICE9IG5pbCAmJiBhLmNnby5UYXJnZXQgIT0gIiIgeworKwkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLlRhcmdldCAhPSAiIiAmJiBvcy5HZXRlbnYoIkdPVE9PTERJUiIpID09ICIiIHsKKyAJCQljZ29FeGUgPSBhLmNnby5UYXJnZXQKKyAJCX0gZWxzZSB7CisgCQkJY2dvRXhlID0gYmFzZS5Ub29sKCJjZ28iKQorZGlmZiAtLWdpdCBhL3NyYy9nby9idWlsZC9idWlsZC5nbyBiL3NyYy9nby9idWlsZC9idWlsZC5nbworaW5kZXggZmQ4OTg3MS4uZTE2MTQ1YiAxMDA2NDQKKy0tLSBhL3NyYy9nby9idWlsZC9idWlsZC5nbworKysrIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitAQCAtMTU4OCw3ICsxNTg4LDcgQEAgZnVuYyBpbml0KCkgeworIH0KKyAKKyAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KKy12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKyt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQorIAorIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcworIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNS1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDUtY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU5M2JjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDUtY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA0NGY5NjE5NzVkYWM2Y2Y0NjRhNzdiNWY2ZGQwYzQ3Y2MxOTJjNGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MTk6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzddIGNtZC9nbzogbWFrZSBHT1JPT1QgcHJlY2lvdXMgYnkgZGVmYXVsdAorCitGb3IgT0UgYnVpbGRzLCB3ZSBuZXZlciB3YW50IHBhY2thZ2VzIHRoYXQgaGF2ZQorYWxyZWFkeSBiZWVuIGluc3RhbGxlZCBpbnRvIHRoZSBidWlsZCByb290IHRvIGJlCittb2RpZmllZCwgc28gcHJldmVudCB0aGUgZ28gYnVpbGQgdG9vbCBmcm9tIGNoZWNraW5nCitpZiB0aGV5IHNob3VsZCBiZSByZWJ1aWx0LgorCitBbHNvIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycmlkZSB0aGlzCitiZWhhdmlvciwganVzdCBmb3IgYnVpbGRpbmcgdGhlIEdvIHJ1bnRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCitpbmRleCA2MGRlNjY2Li4yNjYwZDNmIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworQEAgLTE1MzAsNiArMTUzMCwxMyBAQCBmdW5jIGlzU3RhbGUocCAqUGFja2FnZSkgKGJvb2wsIHN0cmluZykgeworIAkJcmV0dXJuIHRydWUsICJidWlsZCBJRCBtaXNtYXRjaCIKKyAJfQorIAorKwkvLyBGb3IgT0UgYnVpbGRzLCBtYWtlIGFueXRoaW5nIGluIEdPUk9PVCBub24tc3RhbGUsCisrCS8vIHRvIHByZXZlbnQgYSBwYWNrYWdlIGJ1aWxkIGZyb20gb3ZlcndyaXRpbmcgdGhlCisrCS8vIGJ1aWxkIHJvb3QuCisrCWlmIHAuR29yb290ICYmIG9zLkdldGVudigiR09ST09UX09WRVJSSURFIikgIT0gIjEiIHsKKysJCXJldHVybiBmYWxzZSwgIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlcyBkbyBub3QgZ2V0IHJlYnVpbHQiCisrCX0KKysKKyAJLy8gUGFja2FnZSBpcyBzdGFsZSBpZiBhIGRlcGVuZGVuY3kgaXMuCisgCWZvciBfLCBwMSA6PSByYW5nZSBwLkludGVybmFsLkRlcHMgeworIAkJaWYgcDEuU3RhbGUgeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA2LW1ha2UuYmFzaC1hZGQtR09UT09MRElSX0JPT1RTVFJBUC1lbnZpcm9ubWVudC12YXJpYWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA2LW1ha2UuYmFzaC1hZGQtR09UT09MRElSX0JPT1RTVFJBUC1lbnZpcm9ubWVudC12YXJpYWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBmNTY0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGFhZTc0ZDEwNDVjYTAzMzA2YmE0MTU5MjA2ZWUzYmFjNzJiY2RmYmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODoyMzoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDYvN10gbWFrZS5iYXNoOiBhZGQgR09UT09MRElSX0JPT1RTVFJBUCBlbnZpcm9ubWVudCB2YXJpYWJsZQorCitGb3IgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBuZWVkIHRvIHVzZSB0aGUgbmF0aXZlCitHT1RPT0xESVIgZHVyaW5nIHRoZSBib290c3RyYXAgcGhhc2UsIHNvIHByb3ZpZGUgYSB3YXkKK3RvIHBhc3MgdGhhdCBzZXR0aW5nIGludG8gdGhlIGJ1aWxkIHNjcmlwdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggOTU1MzYyMy4uMmU2ZmIwNSAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNzIsMTAgKzE3MiwxMSBAQCBpZiBbICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisgCW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKKyAJZWNobworIAorKwlHT1RPT0xESVJfQk9PVFNUUkFQPSIke0dPVE9PTERJUl9CT09UU1RSQVA6LSRHT1RPT0xESVJ9IgorIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCisgCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAorIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgorLQlDQz0kQ0MgR09PUz0kR09IT1NUT1MgR09BUkNIPSRHT0hPU1RBUkNIIFwKKysJQ0M9JENDIEdPT1M9JEdPSE9TVE9TIEdPQVJDSD0kR09IT1NUQVJDSCBHT1RPT0xESVI9IiRHT1RPT0xESVJfQk9PVFNUUkFQIiBcCisgCQkiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKyAJZWNobworIGZpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDctbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDctbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDU5NzgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNy1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gZTk1N2MzNDU4ZDUzZTM3YmY0MTZmNTFkMmY4YmY1NGMxOTVlNTBmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDA4OjI3OjAyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNy83XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitTaGFyZWQgbGlicmFyeSBoYW5kbGluZyBpbiBPRSBkZXBlbmRzIG9uIHRoZSBpbmNsdXNpb24KK29mIGFuIHNvbmFtZSBoZWFkZXIsIHNvIHVwZGF0ZSB0aGUgZ28gbGlua2VyIHRvIGFkZCB0aGF0CitoZWFkZXIgZm9yIGJvdGggaW50ZXJuYWwgYW5kIGV4dGVybmFsIGxpbmtpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK2luZGV4IDAyMzQxMDUuLjBiOWUyZDAgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCitAQCAtMTEyNCwxMiArMTEyNCwxNCBAQCBmdW5jIChsICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCisgCQkJLy8gbm9uLWNsb3NlYWJsZTogYSBkbGNsb3NlIHdpbGwgZG8gbm90aGluZy4KKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIiwgIi1XbCwteixub2RlbGV0ZSIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJfQorIAljYXNlIEJ1aWxkbW9kZVNoYXJlZDoKKyAJCWlmIFVzZVJlbHJvKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJY2FzZSBCdWlsZG1vZGVQbHVnaW46CisgCQlpZiBIZWFkdHlwZSA9PSBvYmphYmkuSGRhcndpbiB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLWR5bmFtaWNsaWIiKQorQEAgLTExMzgsNiArMTE0MCw3IEBAIGZ1bmMgKGwgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQorIAkJCX0KKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQl9CisgCX0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwOC1tYWtlLmJhc2gtYWRkLUdPSE9TVHh4LWluZGlyZWN0aW9uLWZvci1jcm9zcy1jYW5hZGlhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwOC1tYWtlLmJhc2gtYWRkLUdPSE9TVHh4LWluZGlyZWN0aW9uLWZvci1jcm9zcy1jYW5hZGlhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NzdjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAwM2U2YzMzOWQ0ZmI3MTJmYmI4YzRjYTZlZjJmYzcxMDBkY2RiM2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFRodSwgMTQgU2VwIDIwMTcgMDU6Mzg6MTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA4LzhdIG1ha2UuYmFzaDogYWRkIEdPSE9TVHh4IGluZGlyZWN0aW9uIGZvciBjcm9zcy1jYW5hZGlhbgorIGJ1aWxkcworCitBZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBzcGVjaWZ5aW5nIHRoZSBob3N0IE9TL2FyY2gKK3RoYXQgd2UgYXJlIGJ1aWxkaW5nIHRoZSBjb21waWxlciBmb3IsIHNvIGl0IGNhbiBkaWZmZXIgZnJvbQordGhlIGJ1aWxkIGhvc3QgT1MvYXJjaC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCAyZTZmYjA1Li4wYmRhZGM2IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE3Myw2ICsxNzMsOCBAQCBpZiBbICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisgCWVjaG8KKyAKKyAJR09UT09MRElSX0JPT1RTVFJBUD0iJHtHT1RPT0xESVJfQk9PVFNUUkFQOi0kR09UT09MRElSfSIKKysJR09IT1NUT1M9IiR7R09IT1NUT1NfQ1JPU1M6LSRHT0hPU1RPU30iCisrCUdPSE9TVEFSQ0g9IiR7R09IT1NUQVJDSF9DUk9TUzotJEdPSE9TVEFSQ0h9IgorIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCisgCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAorIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA5LWNtZC1nby1idWlsZG1vZGUtcGllLWZvcmNlcy1leHRlcm5hbC1saW5raW5nLW1vZGUtb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA5LWNtZC1nby1idWlsZG1vZGUtcGllLWZvcmNlcy1leHRlcm5hbC1saW5raW5nLW1vZGUtb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1ZmNmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGFhZTQ0NTI3YzgwNjVkNTRmNmFjYWY4N2M4MmNiYTFhYzk2ZmFlNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJYW4gTGFuY2UgVGF5bG9yIDxpYW50QGdvbGFuZy5vcmc+CitEYXRlOiBGcmksIDE4IEF1ZyAyMDE3IDE3OjQ2OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yY2VzIGV4dGVybmFsIGxpbmtpbmcgbW9kZSBvbiBhbGwKKyBzeXN0ZW1zCisKK1RoZSBnbyB0b29sIGFzc3VtZWQgdGhhdCAtYnVpbGRtb2RlPXBpZSBpbXBsaWVkIGludGVybmFsIGxpbmtpbmcgb24KK2xpbnV4LWFtZDY0LiBIb3dldmVyLCB0aGF0IHdhcyBjaGFuZ2VkIGJ5IENMIDM2NDE3IGZvciBpc3N1ZSAjMTg5NjguCisKK0ZpeGVzICMyMTQ1MgorCitDaGFuZ2UtSWQ6IEk4ZWQxM2FlYTUyOTU5Y2M1YzUzMjIzZjRjNDFiYTM1MzI5NDQ1NTQ1CitSZXZpZXdlZC1vbjogaHR0cHM6Ly9nby1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS81NzIzMQorUnVuLVRyeUJvdDogSWFuIExhbmNlIFRheWxvciA8aWFudEBnb2xhbmcub3JnPgorVHJ5Qm90LVJlc3VsdDogR29ib3QgR29ib3QgPGdvYm90QGdvbGFuZy5vcmc+CitSZXZpZXdlZC1ieTogQXZlbGlubyA8dEBhdmVsaW5vLnh4eD4KK1Jldmlld2VkLWJ5OiBSb2IgUGlrZSA8ckBnb2xhbmcub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbyB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworaW5kZXggMjY2MGQzZi4uZDQwNzczYiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28KK0BAIC05NTQsMTEgKzk1NCwxMiBAQCBmdW5jIChwICpQYWNrYWdlKSBsb2FkKHN0ayAqSW1wb3J0U3RhY2ssIGJwICpidWlsZC5QYWNrYWdlLCBlcnIgZXJyb3IpICpQYWNrYWdlCisgCisgCWlmIGNmZy5CdWlsZENvbnRleHQuQ2dvRW5hYmxlZCAmJiBwLk5hbWUgPT0gIm1haW4iICYmICFwLkdvcm9vdCB7CisgCQkvLyBDdXJyZW50bHkgYnVpbGQgbW9kZXMgYy1zaGFyZWQsIHBpZSAob24gc3lzdGVtcyB0aGF0IGRvIG5vdAorLQkJLy8gc3VwcG9ydCBQSUUgd2l0aCBpbnRlcm5hbCBsaW5raW5nIG1vZGUpLCBwbHVnaW4sIGFuZAorLQkJLy8gLWxpbmtzaGFyZWQgZm9yY2UgZXh0ZXJuYWwgbGlua2luZyBtb2RlLCBhcyBvZiBjb3Vyc2UgZG9lcworKwkJLy8gc3VwcG9ydCBQSUUgd2l0aCBpbnRlcm5hbCBsaW5raW5nIG1vZGUgKGN1cnJlbnRseSBhbGwKKysJCS8vIHN5c3RlbXM6IGlzc3VlICMxODk2OCkpLCBwbHVnaW4sIGFuZCAtbGlua3NoYXJlZCBmb3JjZQorKwkJLy8gZXh0ZXJuYWwgbGlua2luZyBtb2RlLCBhcyBvZiBjb3Vyc2UgZG9lcworIAkJLy8gLWxkZmxhZ3M9LWxpbmttb2RlPWV4dGVybmFsLiBFeHRlcm5hbCBsaW5raW5nIG1vZGUgZm9yY2VzCisgCQkvLyBhbiBpbXBvcnQgb2YgcnVudGltZS9jZ28uCistCQlwaWVDZ28gOj0gY2ZnLkJ1aWxkQnVpbGRtb2RlID09ICJwaWUiICYmIChjZmcuQnVpbGRDb250ZXh0LkdPT1MgIT0gImxpbnV4IiB8fCBjZmcuQnVpbGRDb250ZXh0LkdPQVJDSCAhPSAiYW1kNjQiKQorKwkJcGllQ2dvIDo9IGNmZy5CdWlsZEJ1aWxkbW9kZSA9PSAicGllIgorIAkJbGlua21vZGVFeHRlcm5hbCA6PSBmYWxzZQorIAkJZm9yIGksIGEgOj0gcmFuZ2UgY2ZnLkJ1aWxkTGRmbGFncyB7CisgCQkJaWYgYSA9PSAiLWxpbmttb2RlPWV4dGVybmFsIiB7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDEwLW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDEwLW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmZDc4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDIxZDgzZGQ5NDk5ZTViZTMwZWVhMjhkZDcwMzRkMWVhMmEwMWM4MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogVHVlLCAxNCBOb3YgMjAxNyAwNzozODo0MiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEwLzEwXSBtYWtlLmJhc2g6IG92ZXJyaWRlIENDIHdoZW4gYnVpbGRpbmcgZGlzdCBhbmQKKyBnb19ib290c3RyYXAKKworRm9yIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcywgZGlzdCBhbmQgZ29fYm9vdHN0cmFwCitydW4gb24gdGhlIGJ1aWxkIGhvc3QsIHNvIENDIG5lZWRzIHRvIHBvaW50IHRvIHRoZQorYnVpbGQgaG9zdCdzIEMgY29tcGlsZXIuICBBZGQgYSBCVUlMRF9DQyBlbnZpcm9ubWVudAorZm9yIHRoaXMsIGZhbGxpbmcgYmFjayB0byAkQ0MgaWYgbm90IHByZXNlbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL21ha2UuYmFzaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggMGJkYWRjNi4uZjE5OTM0OSAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xMzEsNyArMTMxLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KKyAJZXhpdCAxCisgZmkKKyBybSAtZiBjbWQvZGlzdC9kaXN0CistR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9JHtCVUlMRF9DQzotJHtDQ319IEdPUk9PVD0iJEdPUk9PVF9CT09UU1RSQVAiIEdPT1M9IiIgR09BUkNIPSIiICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAorIAorICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KKyBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKK0BAIC0xNjcsNyArMTY3LDcgQEAgZWxpZiBbICIkMSIgPSAiLS1ob3N0LW9ubHkiIF07IHRoZW4KKyBmaQorIAorIGlmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKy0JLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKKysJQ0M9JHtCVUlMRF9DQzotJHtDQ319IC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCisgCSMgRGVsYXkgbW92ZSBvZiBkaXN0IHRvb2wgdG8gbm93LCBiZWNhdXNlIGJvb3RzdHJhcCBtYXkgY2xlYXIgdG9vbCBkaXJlY3RvcnkuCisgCW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKKyAJZWNobworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvc2V0LWV4dGVybmFsLWxpbmtlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmJkN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvc2V0LWV4dGVybmFsLWxpbmtlci5wYXRjaApAQCAtMCwwICsxLDExMSBAQAorQ2hhbmdlIHRoZSBkeW5hbWljIGxpbmtlciBoYXJkY29kaW5nIHRvIHVzZSBtdXNsIHdoZW4gbm90IHVzaW5nIGdsaWJjCit0aGlzIHNob3VsZCBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsIHRvIG11c2wgYmVpbmcgdGhlIHN5c3RlbSBDIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIEZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KK0BAIC02Nyw3ICs2Nyw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAlsZC5UaGVhcmNoLlRMU0lFdG9MRSA9IHRsc0lFdG9MRQorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLXg4Nl82NC5zby4xIgorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICIvbGliZXhlYy9sZC1lbGYuc28uMSIKKyAJbGQuVGhlYXJjaC5PcGVuYnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLnNvIgorIAlsZC5UaGVhcmNoLk5ldGJzZGR5bmxkID0gIi9saWJleGVjL2xkLmVsZl9zbyIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KKysrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworQEAgLTYzLDcgKzYzLDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDMyID0gbGQuQXBwZW5kMzJsCisgCWxkLlRoZWFyY2guQXBwZW5kNjQgPSBsZC5BcHBlbmQ2NGwKKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWIvbGQtbGludXguc28uMyIgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiCisgCWxkLlRoZWFyY2guRnJlZWJzZGR5bmxkID0gIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIKKyAJbGQuVGhlYXJjaC5PcGVuYnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLnNvIgorIAlsZC5UaGVhcmNoLk5ldGJzZGR5bmxkID0gIi9saWJleGVjL2xkLmVsZl9zbyIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDMyID0gbGQuQXBwZW5kMzJsCisgCWxkLlRoZWFyY2guQXBwZW5kNjQgPSBsZC5BcHBlbmQ2NGwKKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLWFhcmNoNjQuc28uMSIKKyAKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiWFhYIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICJYWFgiCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KKysrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KK0BAIC03Nyw3ICs3Nyw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJCWxkLlRoZWFyY2guQXBwZW5kNjQgPSBsZC5BcHBlbmQ2NGIKKyAJfQorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC5zby4xIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLW1pcHNsZS5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KKysrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworQEAgLTc1LDcgKzc1LDcgQEAgZnVuYyBJbml0KCkgeworIAkJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0YgorIAl9CisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQ2NC5zby4xIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYjY0L2xkLW11c2wtbWlwczY0bGUuc28uMSIKKyAKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiWFhYIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICJYWFgiCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK0BAIC03Nyw3ICs3Nyw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJfQorIAorIAkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWI2NC9sZDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIKKyAKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiWFhYIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICJYWFgiCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KK0BAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJbGQuVGhlYXJjaC5BcHBlbmQzMiA9IGxkLkFwcGVuZDMyYgorIAlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRiCisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQ2NC5zby4xIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLXMzOTB4LnNvLjEiCisgCisgCS8vIG5vdCByZWxldmFudCBmb3IgczM5MHgKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiWFhYIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitAQCAtNjMsNyArNjMsNyBAQCBmdW5jIEluaXQoKSB7CisgCWxkLlRoZWFyY2guQXBwZW5kMzIgPSBsZC5BcHBlbmQzMmwKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1saW51eC5zby4yIgorKwlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuc28iCisgCWxkLlRoZWFyY2guTmV0YnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tYm9vdHN0cmFwLW5hdGl2ZV8xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWJvb3RzdHJhcC1uYXRpdmVfMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDQxNDFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tYm9vdHN0cmFwLW5hdGl2ZV8xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUJPT1RTVFJBUCA9ICIxLjQiCi1yZXF1aXJlIGdvLW5hdGl2ZS5pbmMKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKaW5kZXggZjc0YjhiNy4uOWFmNjg3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwpAQCAtMTQsOSArMTQsMTMgQEAKIAogaW5oZXJpdCBnb2FyY2gKIAotU1JDX1VSSSA9ICJodHRwOi8vZ29sYW5nLm9yZy9kbC9nbyR7UFZ9LnNyYy50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvJHtQVn0uc3JjLnRhci5nejtuYW1lPW1haW4iCiBTID0gIiR7V09SS0RJUn0vZ28iCiBCID0gIiR7U30iCiAKIElOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgogU1NUQVRFX1NDQU5fQ01EID0gInRydWUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlCVUlMRF9DQz0ke0JVSUxEX0NDfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWZkYTZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTAsMCArMSw2MiBAQAoraW5oZXJpdCBjcm9zcy1jYW5hZGlhbgorCitERVBFTkRTID0gImdvLW5hdGl2ZSB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9Z28tY3Jvc3NzZGsgdmlydHVhbC9uYXRpdmVzZGstJHtIT1NUX1BSRUZJWH1nby1ydW50aW1lIFwKKyAgICAgICAgICAgdmlydHVhbC8ke0hPU1RfUFJFRklYfWdjYy1jcm9zc3NkayB2aXJ0dWFsL25hdGl2ZXNkay0ke0hPU1RfUFJFRklYfWxpYmMtZm9yLWdjYyBcCisgICAgICAgICAgIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9Y29tcGlsZXJsaWJzIgorUE4gPSAiZ28tY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSIKKworZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCitleHBvcnQgR09IT1NUT1NfQ1JPU1MgPSAiJHtIT1NUX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0hfQ1JPU1MgPSAiJHtIT1NUX0dPQVJDSH0iCitleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09UT09MRElSX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtIT1NUX1NZU30vZ28vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfSIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9Z2NjIgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nKysiCitDQyA9ICIke0hPU1RfUFJFRklYfWdjYyIKK2V4cG9ydCBDR09fQ0ZMQUdTID0gIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fTERGTEFHUyA9ICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IgorZXhwb3J0IEdPX0xERkxBR1MgPSAnLWxpbmttb2RlIGV4dGVybmFsIC1leHRsZCAke0hPU1RfUFJFRklYfWdjYyAtZXh0bGRmbGFncyAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtMREZMQUdTfSInCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKKwlta2RpciAke0dPQklOfQorCWNkIHNyYworCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5IC0tbm8tYmFubmVyCisJY2QgJHtCfQorfQorCisKK21ha2Vfd3JhcHBlcigpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisgICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisjIS9iaW4vc2gKK2hlcmU9XGBkaXJuYW1lIFwkMFxgCituYXRpdmVfZ29yb290PVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uLy4uL2xpYi8ke1RBUkdFVF9TWVN9L2dvXGAKK2V4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCit0ZXN0IC1uICJcJEdPQVJNIiB8fCBleHBvcnQgR09BUk09IiR7VEFSR0VUX0dPQVJNfSIKK3Rlc3QgLW4gIlwkR08zODYiIHx8IGV4cG9ydCBHTzM4Nj0iJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPVE9PTERJUj0iXCRuYXRpdmVfZ29yb290L3BrZy90b29sLyR7SE9TVF9HT1RVUExFfSIKK3Rlc3QgLW4gIlwkR09ST09UIiB8fCBleHBvcnQgR09ST09UPSJcJE9FQ09SRV9UQVJHRVRfU1lTUk9PVC8ke3RhcmdldF9saWJkaXJ9L2dvIgorXCRoZXJlLy4uLy4uL2xpYi8ke1RBUkdFVF9TWVN9L2dvL2Jpbi8kMSAiXCRAIgorRU5ECisgICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbAorCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnL3Rvb2wvJHtIT1NUX0dPVFVQTEV9ICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wvCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28vYmluCisJZm9yIGYgaW4gJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vKgorCWRvCisJCWJhc2U9YGJhc2VuYW1lICRmYAorCQlpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCisJCW1ha2Vfd3JhcHBlciAkYmFzZSAke1RBUkdFVF9QUkVGSVh9JGJhc2UKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYzk0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYwppbmRleCA5MzIwNmE1Li4zYWM3MjExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYwpAQCAtMSwxOCArMSw2MiBAQAogaW5oZXJpdCBjcm9zcwogCi1ERVBFTkRTICs9ICJnY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0iCitQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyIKK0RFUEVORFMgKz0gImdvLW5hdGl2ZSIKIAogUE4gPSAiZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0iCiAKLSMgSWdub3JlIGhvdyBUQVJHRVRfQVJDSCBpcyBjb21wdXRlZC4KLVRBUkdFVF9BUkNIW3ZhcmRlcHZhbHVlXSA9ICIke1RBUkdFVF9BUkNIfSIKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgorZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ28tY3Jvc3M6IgorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAotR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwKK2RvX2NvbXBpbGUoKSB7CisgICAgZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKyAgICBybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKKyAgICBta2RpciAke0dPQklOfQorICAgIGNkIHNyYworICAgIC4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisgICAgY2QgJHtCfQorfQogCi0jIHgzMiBBQkkgaXMgbm90IHN1cHBvcnRlZCBvbiBnbyBjb21waWxlciBzbyBmYXIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLSMgcHBjMzIgaXMgbm90IHN1cHBvcnRlZCBpbiBnbyBjb21waWxlcnMKLUNPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCisKK21ha2Vfd3JhcHBlcigpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisgICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisjIS9iaW4vYmFzaAoraGVyZT1cYGRpcm5hbWUgXCQwXGAKK2V4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUk09Ilwke0dPQVJNOi0ke1RBUkdFVF9HT0FSTX19IgorZXhwb3J0IEdPMzg2PSJcJHtHTzM4NjotJHtUQVJHRVRfR08zODZ9fSIKK1wkaGVyZS8uLi8uLi9saWIvJHtDUk9TU19UQVJHRVRfU1lTX0RJUn0vZ28vYmluLyQxICJcJEAiCitFTkQKKyAgICBjaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCisgICAgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCisgICAgKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCisgICAgICAgIFsgISAtZCAkZCBdIHx8IGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAorICAgIGRvbmUpCisgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjL3J1bnRpbWUvcHByb2YvdGVzdGRhdGEKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nby9iaW4KKyAgICBmb3IgZiBpbiAke0J9L2Jpbi8qCisgICAgZG8KKyAgICAgICAgYmFzZT1gYmFzZW5hbWUgJGZgCisgICAgICAgIGluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKyAgICAgICAgbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZWUwODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ28tY3Jvc3MuaW5jCi1yZXF1aXJlIGdvXyR7UFZ9LmJiCi0KLSMgR28gYmluYXJpZXMgYXJlIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSBzdHJpcCB0b29sLgotSU5ISUJJVF9TWVNST09UX1NUUklQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmVlMDg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGdvLWNyb3NzLmluYwotcmVxdWlyZSBnb18ke1BWfS5iYgotCi0jIEdvIGJpbmFyaWVzIGFyZSBub3QgdW5kZXJzdG9vZCBieSB0aGUgc3RyaXAgdG9vbC4KLUlOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI1YTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjkuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIGdvLWNyb3NzLmluYworcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3ZTRiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCkBAIC0wLDAgKzEsNTQgQEAKK2luaGVyaXQgY3Jvc3NzZGsKKworREVQRU5EUyA9ICJnby1uYXRpdmUgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMtY3Jvc3NzZGsiCitQTiA9ICJnby1jcm9zc3Nkay0ke1RBUkdFVF9BUkNIfSIKK1BST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIgorCitleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgorZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorZXhwb3J0IEdPX0lOU1RBTEwgPSAiY21kIgorQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKKwlta2RpciAke0dPQklOfQorCWNkIHNyYworCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJY2QgJHtCfQorfQorCittYWtlX3dyYXBwZXIoKSB7CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS8kMgorICAgIGNhdCA8PEVORCA+JHtEfSR7YmluZGlyfS8kMgorIyEvYmluL2Jhc2gKK2hlcmU9XGBkaXJuYW1lIFwkMFxgCitleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPT1M9IiR7VEFSR0VUX0dPT1N9IgorXCRoZXJlLy4uLy4uL2xpYi8ke0NST1NTX1RBUkdFVF9TWVNfRElSfS9nby9iaW4vJDEgIlwkQCIKK0VORAorICAgIGNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vYmluCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9ICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wvCisJZm9yIGYgaW4gJHtCfS9iaW4vKgorCWRvCisJCWJhc2U9YGJhc2VuYW1lICRmYAorCQlpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCisJCW1ha2Vfd3JhcHBlciAkYmFzZSAke1RBUkdFVF9QUkVGSVh9JGJhc2UKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTdjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3NzZGsuaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmZlYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJEZXBlbmRlbmN5IG1hbmFnZW1lbnQgdG9vbCBmb3IgR29sYW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9kZXAiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9MWJhZDMxNTY0Nzc1MWZhYjAwMDc4MTJmNzBkNDJjMGQiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCitTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKKworIyBQb2ludHMgdG8gMC4zLjAgdGFnCitTUkNSRVYgPSAiN2E5MWI3OTRiYmZiZjFmM2I4Yjc5ODIzNzk5MzE2NDUxMTI3ODAxYiIKKworaW5oZXJpdCBnbworCitHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9jbWQvZGVwIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKaW5kZXggYzIxZjhmZC4uOTVkYjFjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYwpAQCAtMSwxNiArMSwyOCBAQAorIyBVc2UgaW1tZWRpYXRlIGFzc2luZ21lbnQgaGVyZSB0byBnZXQgdGhlIG9yaWdpbmFsICgvdXNyL2xpYikKKyMgaW5zdGVhZCBvZiB0aGUgb25lIHJld3JpdHRlbiBieSBuYXRpdmUuYmJjbGFzcy4KK25vbnN0YWdpbmdfbGliZGlyIDo9ICIke2xpYmRpcn0iCisKIGluaGVyaXQgbmF0aXZlCiAKLUJPT1RTVFJBUCA/PSAiIgorU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvMS40LjMuc3JjLnRhci5nejtuYW1lPWJvb3RzdHJhcDtzdWJkaXI9Z28xLjQiCitTUkNfVVJJW2Jvb3RzdHJhcC5tZDVzdW1dID0gImRmYjYwNDUxMTExNWRkNDAyYTc3YTU1M2E1OTIzYTA0IgorU1JDX1VSSVtib290c3RyYXAuc2hhMjU2c3VtXSA9ICI5OTQ3ZmM3MDViMGI4NDFiNTkzOGM0OGIyMmRjMzNlOTY0N2VjMDc1MmJhZTY2ZTUwMjc4ZGY0ZjIzZjY0OTU5IgorCiBleHBvcnQgR09PUyA9ICIke0JVSUxEX0dPT1N9IgogZXhwb3J0IEdPQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyR7Qk9PVFNUUkFQfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbzEuNCIKK0NDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgorCiBleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKIAotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjZCAke1dPUktESVJ9L2dvMS40L2dvL3NyYworICAgIENHT19FTkFCTEVEPTAgR09ST09UPSR7V09SS0RJUn0vZ28xLjQvZ28gLi9tYWtlLmJhc2gKK30KIAogZG9fY29tcGlsZSgpIHsKIAlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBHT1JPT1RfRklOQUw9IiR7bm9uc3RhZ2luZ19saWJkaXJ9L2dvIgorCWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQPSIke1dPUktESVJ9L2dvMS40L2dvIgogCXJtIC1yZiAke0dPQklOfQogCW1rZGlyICR7R09CSU59CiAKQEAgLTE4LDcgKzMwLDcgQEAKIAlta2RpciAtcCAke1dPUktESVJ9L2J1aWxkLXRtcAogCiAJY2Qgc3JjCi0JQ0dPX0VOQUJMRUQ9MCAuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CiB9CiAKIG1ha2Vfd3JhcHBlcigpIHsKQEAgLTI2LDMxICszOCwyNSBAQAogCWNhdCA8PEVORCA+JHtEfSR7YmluZGlyfS8kMiQzCiAjIS9iaW4vYmFzaAogaGVyZT1cYGRpcm5hbWUgXCQwXGAKLWV4cG9ydCBHT1JPT1Q9IiR7R09ST09UOi1cYHJlYWRsaW5rIC1mIFwkaGVyZS8uLi9saWIvZ28kM1xgfSIKLVwkaGVyZS8uLi9saWIvZ28kMy9iaW4vJDEgIlwkQCIKK2V4cG9ydCBHT1JPT1Q9IiR7R09ST09UOi1cYHJlYWRsaW5rIC1mIFwkaGVyZS8uLi9saWIvZ29cYH0iCitcJGhlcmUvLi4vbGliL2dvL2Jpbi8kMSAiXCRAIgogRU5ECi0JY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMiQzCisJY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgogfQogCiBkb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfQotCWNwIC1hICR7Qn0vcGtnICR7RH0ke2xpYmRpcn0vZ28ke0JPT1RTVFJBUH0vCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9L3NyYworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbworCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnICR7RH0ke2xpYmRpcn0vZ28vCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYwogCShjZCAke1N9L3NyYzsgZm9yIGQgaW4gKjsgZG8gXAotCQlbIC1kICRkIF0gJiYgY3AgLWEgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS9zcmMvOyBcCisJCVsgLWQgJGQgXSAmJiBjcCAtYSAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKIAlkb25lKQotCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28ke0JPT1RTVFJBUH0vYmluCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjL3J1bnRpbWUvcHByb2YvdGVzdGRhdGEKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nby9iaW4KIAlmb3IgZiBpbiAke0J9L2Jpbi8qCiAJZG8KIAkJYmFzZT1gYmFzZW5hbWUgJGZgCi0JCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS9iaW4KLQkJbWFrZV93cmFwcGVyICRiYXNlICRiYXNlICR7Qk9PVFNUUkFQfQorCQlpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCisJCW1ha2Vfd3JhcHBlciAkYmFzZSAkYmFzZQogCWRvbmUKIH0KLQotZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlZGF0YVtub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2lwa1tub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2RlYltub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX3JwbVtub2V4ZWNdID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MmZjYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlICR7UE59LmluYwotcmVxdWlyZSBnby0ke1BWfS5pbmMKLURFUEVORFMgKz0gImdvLWJvb3RzdHJhcC1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJmM2MwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgJHtQTn0uaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlhZTg2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTAsMCArMSw5OCBAQAorREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyBnby1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayIKK1BST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCisKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgorZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgorZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gInN0ZCIKK2V4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7Q0N9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke0NYWH0iCitleHBvcnQgR09ST09UX09WRVJSSURFID0gIjEiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwk6Cit9CisKK2RvX2NvbmZpZ3VyZV9saWJjLW11c2woKSB7CisJcm0gLWYgJHtTfS9zcmMvcnVudGltZS9yYWNlLyouc3lzbworfQorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IENDPSIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKKwlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKKwlta2RpciAke0dPQklOfQorCWNkIHNyYworCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJY3AgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9L2dvX2Jvb3RzdHJhcCAke0J9CisJcm0gLXJmICR7Qn0vcGtnLyR7VEFSR0VUX0dPVFVQTEV9CisJLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCWlmIFsgLW4gIiR7R09fRFlOTElOS30iIF07IHRoZW4KKwkJY3AgJHtCfS9nb19ib290c3RyYXAgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9CisJCUdPX0ZMQUdTPSItYnVpbGRtb2RlPXNoYXJlZCIgR09fTERGTEFHUz0iLWV4dGxkZmxhZ3MgXCIke0xERkxBR1N9XCIiIC4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwlmaQorCWNkICR7Qn0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KKwlpZiBbICIke0JVSUxEX0dPVFVQTEV9IiAhPSAiJHtUQVJHRVRfR09UVVBMRX0iIF07IHRoZW4KKwkJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vcGtnLyR7QlVJTERfR09UVVBMRX0KKwkJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vcGtnL29iai8ke0JVSUxEX0dPVFVQTEV9CisJZmkKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbAorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3BrZy9vYmoKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvYm9vdHN0cmFwCisJZmluZCBzcmMgLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc3JjZGlyOyBkbworCQljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAkc3JjZGlyICR7RH0ke2xpYmRpcn0vZ28vc3JjLworCWRvbmUKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2dvL3NyYy9jbWQvZGlzdC9kaXN0Cit9CisKKyMgUmVtb3ZlIHRlc3QgYmluYXJpZXMgdGhhdCBjYW5ub3QgYmUgcmVsb2NhdGVkCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjL3J1bnRpbWUvcHByb2YvdGVzdGRhdGEKK30KKworIyBUaGVzZSB0ZXN0ZGF0YSBkaXJlY3RvcmllcyBhcmVuJ3QgbmVlZGVkIGZvciBidWlsZHMgYW5kIGNvbnRhaW4gYmluYXJpZXMKKyMgdGhhdCBjYW4gY2F1c2UgZXJyb3JzIGluIHN5c3Jvb3Rfc3RyaXAoKSwgc28ganVzdCByZW1vdmUgdGhlbS4KK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZCgpIHsKKwlmaW5kICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9nby9zcmMgLWRlcHRoIC10eXBlIGQgLW5hbWUgJ3Rlc3RkYXRhJyAtZXhlYyBybSAtcmYge30gXDsKK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9nby9zcmMgJHtsaWJkaXJ9L2dvL3BrZy9pbmNsdWRlIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyouc2hsaWJuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyouc2hsaWJuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyouc2hsaWJuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouc2hsaWJuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAorIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX0gXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLmEgXAorIgorIyBUaGUgdGVzdGRhdGEgZGlyZWN0b3JpZXMgaW4gdGhlIHNvdXJjZSB0cmVlIGluY2x1ZGUgc29tZSBiaW5hcmllcyBmb3IgdmFyaW91cworIyBhcmNoaXRlY3R1cmVzLCBzY3JpcHRzLCBhbmQgLmEgZmlsZXMKK0lOU0FORV9TS0lQXyR7UE59LWRldiA9ICJzdGF0aWNkZXYgbGRmbGFncyBmaWxlLXJkZXBzIGFyY2giCisKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNiNjhiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIGdvLSR7UFZ9LmluYworcmVxdWlyZSBnby1ydW50aW1lLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYzVkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKQEAgLTAsMCArMSw2MSBAQAoraW5oZXJpdCBnb2FyY2gKK0RFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28gZ28tbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsgZ28tbmF0aXZlIgorCitleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgorZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKK2V4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKK2V4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtDQ30iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtDWFh9IgorZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gImNtZCIKK2V4cG9ydCBHT19GTEFHUyA9ICItYSIKK0dPX0xERkxBR1MgPSAiIgorR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgorZXhwb3J0IEdPX0xERkxBR1MKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1MgPSAiIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IENDPSIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKKwlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKKwlta2RpciAke0dPQklOfQorCisJZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAorCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCisKKwljZCBzcmMKKwkuL21ha2UuYmFzaAorCWNkICR7Qn0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wKKwljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZy90b29sLyR7VEFSR0VUX0dPVFVQTEV9ICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wvCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYworCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc3JjL2NtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vYmluCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJZm9yIGYgaW4gJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vKjsgZG8KKwkJbmFtZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2Jpbi8KKwkJbG4gLXNmIC4uLyR7QkFTRUxJQn0vZ28vYmluLyRuYW1lICR7RH0ke2JpbmRpcn0vCisJZG9uZQorfQorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYiCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ28vYmluICR7bGliZGlyfS9nby9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke2JpbmRpcn0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwgYmFzaCIKK0lOU0FORV9TS0lQXyR7UE59ID0gImxkZmxhZ3MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU0MzdkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLWluaGVyaXQgZ29hcmNoCi1ERVBFTkRTICs9ICJnby1ib290c3RyYXAtbmF0aXZlIgotCi0jIGxpYmdjYyBpcyByZXF1aXJlZCBmb3IgdGhlIHRhcmdldCBzcGVjaWZpYyBsaWJyYXJpZXMgdG8gYnVpbGQKLSMgcHJvcGVybHksIGJ1dCBhcHBhcmVudGx5IG5vdCBmb3IgZ28tY3Jvc3MgYW5kLCBtb3JlIGltcG9ydGFudGx5LAotIyBhbHNvIGNhbid0IGJlIHVzZWQgdGhlcmUgYmVjYXVzZSBnby1jcm9zcyBjYW5ub3QgZGVwZW5kIG9uCi0jIHRoZSB0dW5lLXNwZWNpZmljIGxpYmdjYy4gT3RoZXJ3aXNlIGdvLWNyb3NzIGFsc28gd291bGQgaGF2ZQotIyB0byBiZSB0dW5lLXNwZWNpZmljLgotREVQRU5EUyArPSAiJHtAICdsaWJnY2MnIGlmIG5vdCBvZS51dGlscy5pbmhlcml0cyhkLCAnY3Jvc3MnKSBlbHNlICcnfSIKLQotIyBQcmV2ZW50IHJ1bnN0cmlwIGZyb20gcnVubmluZyBiZWNhdXNlIHlvdSBnZXQgZXJyb3JzIHdoZW4gdGhlIGhvc3QgYXJjaCAhPSB0YXJnZXQgYXJjaAotSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCi1JTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKLQotIyB4MzIgQUJJIGlzIG5vdCBzdXBwb3J0ZWQgb24gZ28gY29tcGlsZXIgc28gZmFyCi1DT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gIm51bGwiCi0jIHBwYzMyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZ28gY29tcGlsZXJzCi1DT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgotCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbzEuNCIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKLWV4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1jcm9zcygpIHsKLQlleHBvcnQgQ0dPX0VOQUJMRUQ9MAotfQotCi1kb19jb21waWxlKCkgewotCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0JZXhwb3J0IENDPSIke0BkLmdldFZhcignQlVJTERfQ0MnLCBUcnVlKS5zdHJpcCgpfSIKLQlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKLQlta2RpciAke0dPQklOfQotCi0JZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAotCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCi0KLQljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQotCSMgRW5zdXJlIGNnby5hIGlzIGJ1aWx0IHdpdGggdGhlIHRhcmdldCB0b29sY2hhaW4KLQlleHBvcnQgR09CSU49IiR7Qn0vdGFyZ2V0L2JpbiIKLQlybSAtcmYgJHtHT0JJTn0KLQlta2RpciAtcCAke0dPQklOfQotCUdPX0ZMQUdTPSItYSIgLi9tYWtlLmJhc2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCi0JY3AgLWEgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCi0JKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCi0JCVsgLWQgJGQgXSAmJiBjcCAtYSAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKLQlkb25lKQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWlmIFsgLWQgJHtCfS9iaW4vJHtHT09TfV8ke0dPQVJDSH0gXQotCXRoZW4KLQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYmluLyR7R09PU31fJHtHT0FSQ0h9LyogJHtEfSR7YmluZGlyfQotCWVsc2UKLQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYmluLyogJHtEfSR7YmluZGlyfQotCWZpCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCi0JY3AgLWEgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCi0JKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCi0JCVsgLWQgJGQgXSAmJiBjcCAtYSAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKLQlkb25lKQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWZvciBmIGluICR7Qn0vYmluL2dvKgotCWRvCi0JCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7YmluZGlyfQotCWRvbmUKLX0KLWRvX3BhY2thZ2VfcWFbbm9leGVjXSA9ICIxIgotCi1SREVQRU5EU18ke1BOfSArPSAicGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTkwMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgZ28uaW5jCi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotCi1CQkNMQVNTRVhURU5EID0gImNyb3NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhNmFiMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBnby0ke1BWfS5pbmMKLXJlcXVpcmUgZ28uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTFiMTMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby5pbmMKLVRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWFyY2g9bWlwczMycjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2N2UyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXRhcmdldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvYXJtX2FhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2FybV9hYXJjaDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTc4OGI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvYXJtX2FhcmNoNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ndWlsZTogYWRkIGFhcmNoNjQgcmVjb2duaXRpb24KLQotQXNzdW1lIGxpdHRsZS1lbmRpYW4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20KLQotLS0tIGEvbW9kdWxlL3N5c3RlbS9iYXNlL3RhcmdldC5zY20KLSsrKyBiL21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCi1AQCAtNzAsNiArNzAsOCBAQAotICAgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzcGFyYyIgInNwYXJjNjQiICJwb3dlcnBjIiAicG93ZXJwYzY0IiAic3B1IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIiAibWlwczY0IikpCi0gICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0rICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hYXJjaDY0IiBjcHUpCi0rICAgICAgICAgICAgIChlbmRpYW5uZXNzIGxpdHRsZSkpCi0gICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKmViIiBjcHUpCi0gICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0gICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKiIgY3B1KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fZW5kaWFubmVzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvYXJtX2VuZGlhbm5lc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNDMyOGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fZW5kaWFubmVzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVN1cHBvcnQgZm9ybSBBUk0gZW5kaWFubmVzcwotCi1GaXhlcyBZb2N0byBidWcjIDI3MjkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBndWlsZS0yLjAuNS9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd1aWxlLTIuMC41Lm9yaWcvbW9kdWxlL3N5c3RlbS9iYXNlL3RhcmdldC5zY20JMjAxMi0wMS0yNCAwMzowNjowNi4wMDAwMDAwMDAgLTA4MDAKLSsrKyBndWlsZS0yLjAuNS9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQkyMDEyLTA3LTEyIDEzOjA1OjQ0LjM3MjM2NDEwMyAtMDcwMAotQEAgLTcwLDcgKzcwLDkgQEAKLSAgICAgICAgICAgICAoKG1lbWJlciBjcHUgJygic3BhcmMiICJzcGFyYzY0IiAicG93ZXJwYyIgInBvd2VycGM2NCIgInNwdSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyIgIm1pcHM2NCIpKQotICAgICAgICAgICAgICAoZW5kaWFubmVzcyBiaWcpKQotLSAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeYXJtLiplbCIgY3B1KQotKyAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeYXJtLiplYiIgY3B1KQotKyAgICAgICAgICAgICAoZW5kaWFubmVzcyBiaWcpKQotKyAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeYXJtLioiIGNwdSkKLSAgICAgICAgICAgICAgKGVuZGlhbm5lc3MgbGl0dGxlKSkKLSAgICAgICAgICAgICAoZWxzZQotICAgICAgICAgICAgICAoZXJyb3IgInVua25vd24gQ1BVIGVuZGlhbm5lc3MiIGNwdSkpKSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YmY2MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMi1NYXJrLVVudXNlZC1tb2R1bGVzLWFyZS1yZW1vdmVkLWdjLXRlc3QtYXMtdW5yZXNvbHZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkZWJpYW4gcGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLUZyb20gZTUyYmZjZGJhY2E1ZGNlNDk4Njc4ZDhmNTEyMzgxZTNlMzlhNDA2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYiBCcm93bmluZyA8cmxiQGRlZmF1bHR2YWx1ZS5vcmc+Ci1EYXRlOiBTdW4sIDE4IE1hciAyMDEyIDExOjQwOjU1IC0wNTAwCi1TdWJqZWN0OiBNYXJrICJVbnVzZWQgbW9kdWxlcyBhcmUgcmVtb3ZlZCIgZ2MgdGVzdCBhcyB1bnJlc29sdmVkLgotCi1BcyBwZXIgZGlzY3Vzc2lvbiB3aXRoIHVwc3RyZWFtLCBtYXJrIHRoaXMgdGVzdCBhcyB1bnJlc29sdmVkIHNpbmNlIGl0Ci1tYXkgcHJvZHVjZSBmYWxzZSBuZWdhdGl2ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmVoYXZpb3IvdGltaW5nIG9mIHRoZQotZ2FyYmFnZSBjb2xsZWN0b3IuCi0tLS0KLSB0ZXN0LXN1aXRlL3Rlc3RzL2djLnRlc3QgfCAgIDExICsrKysrKy0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL2djLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL2djLnRlc3QKLWluZGV4IGE5Njk3NTIuLjhjOGUxM2UgMTAwNjQ0Ci0tLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL2djLnRlc3QKLSsrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAotQEAgLTg0LDExICs4NCwxMyBAQAotICAgICAgIDs7IG9uZSBnYyByb3VuZC4gbm90IHN1cmUgd2h5LgotIAotICAgICAgIChtYXliZS1nYy1mbGFraW5lc3MKLS0gICAgICAgKD0gKGxldCBscCAoKGkgMCkpCi0tICAgICAgICAgICAgKGlmIChndWFyZCkKLS0gICAgICAgICAgICAgICAgKGxwICgxKyBpKSkKLS0gICAgICAgICAgICAgICAgaSkpCi0tICAgICAgICAgIHRvdGFsKSkpKQotKyAgICAgICAob3IgKD0gKGxldCBscCAoKGkgMCkpCi0rICAgICAgICAgICAgICAgIChpZiAoZ3VhcmQpCi0rICAgICAgICAgICAgICAgICAgICAobHAgKDErIGkpKQotKyAgICAgICAgICAgICAgICAgICAgaSkpCi0rICAgICAgICAgICAgICB0b3RhbCkKLSsgICAgICAgICAgICh0aHJvdyAndW5yZXNvbHZlZCkpKSkpCi0rCi0gCi0gICAocGFzcy1pZiAiTGV4aWNhbCB2YXJzIGFyZSBjb2xsZWN0YWJsZSIKLSAgICAgKGxldCAoKGwgKGNvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNmYWYzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAzLU1hcmstbXV0ZXgtd2l0aC1vd25lci1ub3QtcmV0YWluZWQtdGhyZWFkcy10ZXN0LWFzLXUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotRnJvbSA4NDg1NDMwOTFkNTVkZGRiNTRhODU2MTIxNTU5NjQ1MDZkNzEyODUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIEJyb3duaW5nIDxybGJAZGVmYXVsdHZhbHVlLm9yZz4KLURhdGU6IFN1biwgMTggTWFyIDIwMTIgMTM6Mjg6MjQgLTA1MDAKLVN1YmplY3Q6IE1hcmsgIm11dGV4IHdpdGggb3duZXIgbm90IHJldGFpbmVkIiB0aHJlYWRzIHRlc3QgYXMgdW5yZXNvbHZlZC4KLQotQXMgcGVyIGRpc2N1c3Npb24gd2l0aCB1cHN0cmVhbSwgbWFyayB0aGlzIHRlc3QgYXMgdW5yZXNvbHZlZCBzaW5jZSBpdAotbWF5IHByb2R1Y2UgZmFsc2UgbmVnYXRpdmVzLCBkZXBlbmRpbmcgb24gdGhlIGJlaGF2aW9yL3RpbWluZyBvZiB0aGUKLWdhcmJhZ2UgY29sbGVjdG9yLgotLS0tCi0gdGVzdC1zdWl0ZS90ZXN0cy90aHJlYWRzLnRlc3QgfCAgICA2ICsrKystLQotIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS90ZXN0cy90aHJlYWRzLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdAotaW5kZXggODVhN2MzOC4uNTA4OTljYiAxMDA2NDQKLS0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvdGhyZWFkcy50ZXN0Ci0rKysgYi90ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdAotQEAgLTQxNCw4ICs0MTQsMTAgQEAKLSAKLSAgICAgICAgICAgICAoZ2MpIChnYykKLSAgICAgICAgICAgICAobGV0ICgobSAoZykpKQotLSAgICAgICAgICAgICAgKGFuZCAobXV0ZXg/IG0pCi0tICAgICAgICAgICAgICAgICAgIChlcT8gKG11dGV4LW93bmVyIG0pIChjdXJyZW50LXRocmVhZCkpKSkpKSkKLSsgICAgICAgICAgICAgIChvcgotKyAgICAgICAgICAgICAgIChhbmQgKG11dGV4PyBtKQotKyAgICAgICAgICAgICAgICAgICAgKGVxPyAobXV0ZXgtb3duZXIgbSkgKGN1cnJlbnQtdGhyZWFkKSkpCi0rICAgICAgICAgICAgICAgKHRocm93ICd1bnJlc29sdmVkKSkpKSkpCi0gCi0gICAgICAgOzsKLSAgICAgICA7OyBtdXRleCBsb2NrIGxldmVscwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTk3YmIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZ3VpbGVfMi4wLjZfZml4X3NlZF9lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGlzIGZpeGVzIHNlZCBpc3N1ZSB3aGVuIHByZWZpeCBoYXMgLyBpbiBpdCwgbGlrZSAvdXNyL2xvY2FsCi0KLWF1dG9yZWNvbmYgZXJyb3IgYXZvaWRlZDoKLXwgc2VkOiAtZSBleHByZXNzaW9uICMxLCBjaGFyIDk6IHVua25vd24gb3B0aW9uIHRvIGBzJwotfCBjb25maWd1cmUuYWM6Mzk6IGVycm9yOiBBQ19JTklUIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBwYWNrYWdlIGFuZCB2ZXJzaW9uIGFyZ3VtZW50cwotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotMjAxMi8wNS8wMQotCi1JbmRleDogZ3VpbGUtMi4wLjUvYnVpbGQtYXV4L2dpdC12ZXJzaW9uLWdlbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd1aWxlLTIuMC41Lm9yaWcvYnVpbGQtYXV4L2dpdC12ZXJzaW9uLWdlbgotKysrIGd1aWxlLTIuMC41L2J1aWxkLWF1eC9naXQtdmVyc2lvbi1nZW4KLUBAIC0xODcsNyArMTg3LDcgQEAgZWxzZQotICAgICB2PVVOS05PV04KLSBmaQotIAotLXY9YGVjaG8gIiR2IiB8c2VkICJzL14kcHJlZml4Ly8iYAotK3Y9YGVjaG8gIiR2IiB8c2VkICJzI14kcHJlZml4IyMiYAotIAotICMgVGVzdCB3aGV0aGVyIHRvIGFwcGVuZCB0aGUgIi1kaXJ0eSIgc3VmZml4IG9ubHkgaWYgdGhlIHZlcnNpb24KLSAjIHN0cmluZyB3ZSdyZSB1c2luZyBjYW1lIGZyb20gZ2l0LiAgSS5lLiwgc2tpcCB0aGUgdGVzdCBpZiBpdCdzICJVTktOT1dOIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1NYWtlZmlsZS5hbS1ob29rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1NYWtlZmlsZS5hbS1ob29rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTBiOWQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvbGliZ3VpbGUtTWFrZWZpbGUuYW0taG9vay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gOWM0ZTEyMGE3YTg3ZGIzNGQyMmE1MDg4M2E1YTUyNTE3MGI0ODBkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCA2IEphbiAyMDE1IDIzOjEwOjUxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmd1aWxlL01ha2VmaWxlLmFtOiBpbnN0YWxsLWRhdGEtaG9vayAtPiBpbnN0YWxsLWV4ZWMtaG9vawotCi1JdCBtYXkgaW5zdGFsbCBzdWNoIGEgZmlsZToKLS91c3IvbGliNjQvbGliZ3VpbGUtMi4wKi1nZGIuc2NtCi0KLVRoaXMgaXMgYmVjYXVzZSB3aGVuIHRoZXJlIGlzIG5vIGZpbGUgaW4gdGhlIGRpcmVjdG9yeToKLWZvciBmIGluIGxpYmd1aWxlLTIuMCo7IGRvCi0gICAgW3NuaXBdCi1kb25lCi0KLVRoZSBmIHdvdWxkIGJlIGxpYmd1aWxlLTIuMCogaXRzZWxmLCB1c2UgaW5zdGFsbC1leGVjLWhvb2sgd2lsbCBmaXggdGhlCi1wcm9ibGVtIHNpbmNlIGl0IGRlcGVuZHMgb24gaW5zdGFsbC1saWJMVExJQlJBUklFUy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliZ3VpbGUvTWFrZWZpbGUuYW0gfCAgICA0ICstLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJndWlsZS9NYWtlZmlsZS5hbSBiL2xpYmd1aWxlL01ha2VmaWxlLmFtCi1pbmRleCA1ZGVjZDk5Li41MjY0NWI3IDEwMDY0NAotLS0tIGEvbGliZ3VpbGUvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmd1aWxlL01ha2VmaWxlLmFtCi1AQCAtNDQ2LDEwICs0NDYsOCBAQCBFWFRSQV9saWJndWlsZV9AR1VJTEVfRUZGRUNUSVZFX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBfc2NtLmgJCVwKLSAjIyBkZWxldGUgZ3VpbGUtc25hcmYuYXdrIGZyb20gdGhlIGluc3RhbGxhdGlvbiBiaW5kaXIsIGluIGNhc2UgaXQncwotICMjIGxpbmdlcmluZyB0aGVyZSBkdWUgdG8gYW4gZWFybGllciBndWlsZSB2ZXJzaW9uIG5vdCBoYXZpbmcgYmVlbgotICMjIHdpcGVkIG91dC4KLS1pbnN0YWxsLWV4ZWMtaG9vazoKLStpbnN0YWxsLWV4ZWMtaG9vazogbGliZ3VpbGUtMi4wLWdkYi5zY20KLSAJcm0gLWYgJChERVNURElSKSQoYmluZGlyKS9ndWlsZS1zbmFyZi5hd2sKLS0KLS1pbnN0YWxsLWRhdGEtaG9vazogbGliZ3VpbGUtMi4wLWdkYi5zY20KLSAJQCQoTUtESVJfUCkgJChERVNURElSKSQobGliZGlyKQotICMjIFdlIHdhbnQgdG8gaW5zdGFsbCBsaWJndWlsZS0yLjAtZ2RiLnNjbSBhcyBTT01FVEhJTkctZ2RiLnNjbS4KLSAjIyBTT01FVEhJTkcgaXMgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgZmluYWwgbGlicmFyeS4gIFdlIHdhbnQgdG8gaWdub3JlCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvb3BlbnN1c2UvZ3VpbGUtNjRiaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNjliNWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3BlbnN1c2UgcGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLUluZGV4OiBndWlsZS0yLjAuMy9saWJndWlsZS9oYXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndWlsZS0yLjAuMy5vcmlnL2xpYmd1aWxlL2hhc2guYwkyMDExLTA3LTA2IDE1OjQ5OjU5LjAwMDAwMDAwMCAtMDcwMAotKysrIGd1aWxlLTIuMC4zL2xpYmd1aWxlL2hhc2guYwkyMDEyLTAxLTEzIDIxOjQ5OjQzLjMzMjg0NDg4NCAtMDgwMAotQEAgLTI3MCw3ICsyNzAsNyBAQCBzY21faGFzaGVyKFNDTSBvYmosIHVuc2lnbmVkIGxvbmcgbiwgc2l6Ci0gdW5zaWduZWQgbG9uZwotIHNjbV9paGFzaHEgKFNDTSBvYmosIHVuc2lnbmVkIGxvbmcgbikKLSB7Ci0tICByZXR1cm4gKFNDTV9VTlBBQ0sgKG9iaikgPj4gMSkgJSBuOwotKyAgcmV0dXJuICgodW5zaWduZWQgbG9uZykgU0NNX1VOUEFDSyAob2JqKSA+PiAxKSAlIG47Ci0gfQotIAotIAotQEAgLTMwNiw3ICszMDYsNyBAQCBzY21faWhhc2h2IChTQ00gb2JqLCB1bnNpZ25lZCBsb25nIG4pCi0gICBpZiAoU0NNX05VTVAob2JqKSkKLSAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSBzY21faGFzaGVyKG9iaiwgbiwgMTApOwotICAgZWxzZQotLSAgICByZXR1cm4gU0NNX1VOUEFDSyAob2JqKSAlIG47Ci0rICAgIHJldHVybiAodW5zaWduZWQgbG9uZykgU0NNX1VOUEFDSyAob2JqKSAlIG47Ci0gfQotIAotIAotSW5kZXg6IGd1aWxlLTIuMC4zL2xpYmd1aWxlL3N0cnVjdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjMub3JpZy9saWJndWlsZS9zdHJ1Y3QuYwkyMDExLTA3LTA2IDE1OjUwOjAwLjAwMDAwMDAwMCAtMDcwMAotKysrIGd1aWxlLTIuMC4zL2xpYmd1aWxlL3N0cnVjdC5jCTIwMTItMDEtMTMgMjE6NDk6NDMuMzMyODQ0ODg0IC0wODAwCi1AQCAtOTQyLDcgKzk0Miw3IEBAIHNjbV9zdHJ1Y3RfaWhhc2hxIChTQ00gb2JqLCB1bnNpZ25lZCBsb24KLSB7Ci0gICAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHRhYmxlIHNob3VsZCBiZSBhIHJlbGF0aXZlIHByaW1lIGl0J3Mgbm90Ci0gICAgICBuZWNlc3NhcnkgdG8gc2hpZnQgZG93biB0aGUgYWRkcmVzcy4gICovCi0tICByZXR1cm4gU0NNX1VOUEFDSyAob2JqKSAlIG47Ci0rICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIFNDTV9VTlBBQ0sgKG9iaikgJSBuOwotIH0KLSAKLSBTQ01fREVGSU5FIChzY21fc3RydWN0X3Z0YWJsZV9uYW1lLCAic3RydWN0LXZ0YWJsZS1uYW1lIiwgMSwgMCwgMCwgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy93b3JrYXJvdW5kLWljZS1zc2EtY29ycnVwdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMzNDgzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotbGliZ3VpbGUvdm0taS1zeXN0ZW0uYzogd29ya2Fyb3VuZCBpY2Ugc3NhIGNvcnJ1cHRpb24gd2hpbGUgY29tcGlsaW5nIHdpdGggb3B0aW9uIC1nIC1PCi0KLVdoaWxlIGNvbXBpbGluZyB3aXRoIG9wdGlvbiAtZyAtTywgdGhlcmUgd2FzIGEgc3NhIGNvcnJ1cHRpb246Ci0uLgotVW5hYmxlIHRvIGNvYWxlc2NlIHNzYV9uYW1lcyA0OCBhbmQgMzQ3NiB3aGljaCBhcmUgbWFya2VkIGFzIE1VU1QgQ09BTEVTQ0UuCi1zcF80OChhYikgYW5kICBzcF8zNDc2KGFiKQotZ3VpbGUtMi4wLjExL2xpYmd1aWxlL3ZtLWVuZ2luZS5jOiBJbiBmdW5jdGlvbiAndm1fZGVidWdfZW5naW5lJzoKLWd1aWxlLTIuMC4xMS9saWJndWlsZS92bS5jOjY3MzoxOTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IFNTQSBjb3JydXB0aW9uCi0gI2RlZmluZSBWTV9OQU1FICAgdm1fZGVidWdfZW5naW5lCi0gICAgICAgICAgICAgICAgICAgXgotZ3VpbGUtMi4wLjExL2xpYmd1aWxlL3ZtLWVuZ2luZS5jOjM5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnVk1fTkFNRScKLSBWTV9OQU1FIChTQ00gdm0sIFNDTSBwcm9ncmFtLCBTQ00gKmFyZ3YsIGludCBuYXJncykKLSBeCi1QbGVhc2Ugc3VibWl0IGEgZnVsbCBidWcgcmVwb3J0LAotd2l0aCBwcmVwcm9jZXNzZWQgc291cmNlIGlmIGFwcHJvcHJpYXRlLgotU2VlIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPiBmb3IgaW5zdHJ1Y3Rpb25zLgotLi4uCi0KLVR3ZWFrIGxpYmd1aWxlL3ZtLWktc3lzdGVtLmMgdG8gYWRkIGJvdW5kYXJ5IHZhbHVlIGNoZWNrIHRvIHdvcmthcm91bmQgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJndWlsZS92bS1pLXN5c3RlbS5jIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMgYi9saWJndWlsZS92bS1pLXN5c3RlbS5jCi0tLS0gYS9saWJndWlsZS92bS1pLXN5c3RlbS5jCi0rKysgYi9saWJndWlsZS92bS1pLXN5c3RlbS5jCi1AQCAtNjI1LDEwICs2MjUsMjIgQEAgVk1fREVGSU5FX0lOU1RSVUNUSU9OICg0NywgYmluZF9vcHRpb25hbHNfc2h1ZmZsZSwgImJpbmQtb3B0aW9uYWxzL3NodWZmbGUiLCA2LAotICAgLyogbm93IHNodWZmbGUgdXAsIGZyb20gd2FsayB0byBudG90YWwgKi8KLSAgIHsKLSAgICAgc2NtX3RfcHRyZGlmZiBuc2h1ZiA9IHNwIC0gd2FsayArIDEsIGk7Ci0tICAgIHNwID0gKGZwIC0gMSkgKyBudG90YWwgKyBuc2h1ZjsKLS0gICAgQ0hFQ0tfT1ZFUkZMT1cgKCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBuc2h1ZjsgaSsrKQotLSAgICAgIHNwWy1pXSA9IHdhbGtbbnNodWYtaS0xXTsKLSsgICAgLyogY2hlY2sgdGhlIHZhbHVlIG9mIG5zaHVmIHRvIHdvcmthcm91bmQgaWNlIHNzYSBjb3JydXB0aW9uICovCi0rICAgIC8qIHdoaWxlIGNvbXBpbGluZyB3aXRoIC1PIC1nICovCi0rICAgIGlmIChuc2h1ZiA+IDApCi0rICAgIHsKLSsgICAgICBzcCA9IChmcCAtIDEpICsgbnRvdGFsICsgbnNodWY7Ci0rICAgICAgQ0hFQ0tfT1ZFUkZMT1cgKCk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5zaHVmOyBpKyspCi0rICAgICAgICBzcFstaV0gPSB3YWxrW25zaHVmLWktMV07Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgc3AgPSAoZnAgLSAxKSArIG50b3RhbCArIG5zaHVmOwotKyAgICAgIENIRUNLX09WRVJGTE9XICgpOwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuc2h1ZjsgaSsrKQotKyAgICAgICAgc3BbLWldID0gd2Fsa1tuc2h1Zi1pLTFdOwotKyAgICB9Ci0gICB9Ci0gICAvKiBhbmQgZmlsbCBvcHRpb25hbHMgJiBrZXl3b3JkIGFyZ3Mgd2l0aCBTQ01fVU5ERUZJTkVEICovCi0gICB3aGlsZSAod2FsayA8PSAoZnAgLSAxKSArIG50b3RhbCkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9ndWlsZV8yLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2d1aWxlXzIuMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EwMWQwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2d1aWxlXzIuMC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1TVU1NQVJZID0gIkd1aWxlIGlzIHRoZSBHTlUgVWJpcXVpdG91cyBJbnRlbGxpZ2VudCBMYW5ndWFnZSBmb3IgRXh0ZW5zaW9ucyIKLURFU0NSSVBUSU9OID0gIkd1aWxlIGlzIHRoZSBHTlUgVWJpcXVpdG91cyBJbnRlbGxpZ2VudCBMYW5ndWFnZSBmb3IgRXh0ZW5zaW9ucyxcCi0gdGhlIG9mZmljaWFsIGV4dGVuc2lvbiBsYW5ndWFnZSBmb3IgdGhlIEdOVSBvcGVyYXRpbmcgc3lzdGVtLlwKLSBHdWlsZSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gaGVscCBwcm9ncmFtbWVycyBjcmVhdGUgZmxleGlibGUgYXBwbGljYXRpb25zLlwKLSBVc2luZyBHdWlsZSBpbiBhbiBhcHBsaWNhdGlvbiBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uJ3MgZnVuY3Rpb25hbGl0eSB0byBiZVwKLSBleHRlbmRlZCBieSB1c2VycyBvciBvdGhlciBwcm9ncmFtbWVycyB3aXRoIHBsdWctaW5zLCBtb2R1bGVzLCBvciBzY3JpcHRzLlwKLSBHdWlsZSBwcm92aWRlcyB3aGF0IG1pZ2h0IGJlIGRlc2NyaWJlZCBhcyAncHJhY3RpY2FsIHNvZnR3YXJlIGZyZWVkb20sJ1wKLSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHVzZXJzIHRvIGN1c3RvbWl6ZSBhbiBhcHBsaWNhdGlvbiB0byBtZWV0IHRoZWlyXAotIG5lZWRzIHdpdGhvdXQgZGlnZ2luZyBpbnRvIHRoZSBhcHBsaWNhdGlvbidzIGludGVybmFscy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWlsZS8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3VpbGUvZ3VpbGUtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FybV9lbmRpYW5uZXNzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FybV9hYXJjaDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNjQ5NzdjNzc1ZWZmZDE5MzkzMzY0YjMwMThmZDhjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlODQ0MjU2NjI1NmUxYmUxNGU1MWZjMTg4MzljZDc5OWI5NjZiYzViMTZjNmExZDdhN2MzNTE1NWE4NjE5ZDgyIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB0ZXhpbmZvCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotREVQRU5EUyA9ICJsaWJ1bmlzdHJpbmcgYmR3Z2MgZ21wIGxpYnRvb2wgbGliZmZpIG5jdXJzZXMgcmVhZGxpbmUiCi0jIGFkZCBndWlsZS1uYXRpdmUgb25seSB0byB0aGUgdGFyZ2V0IHJlY2lwZSdzIERFUEVORFMKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3VpbGUtbmF0aXZlIGxpYmF0b21pYy1vcHMiCi0KLSMgVGhlIGNvbW1lbnQgb2YgdGhlIHNjcmlwdCBndWlsZS1jb25maWcgc2FpZCBpdCBoYXMgYmVlbiBkZXByZWNhdGVkIGJ1dCB3ZSBzaG91bGQKLSMgYXQgbGVhc3QgYWRkIHRoZSByZXF1aXJlZCBkZXBlbmRlbmN5IHRvIG1ha2UgaXQgd29yayBzaW5jZSB3ZSBzdGlsbCBwcm92aWRlIHRoZSBzY3JpcHQuCi1SREVQRU5EU18ke1BOfSA9ICJwa2djb25maWciCi0KLVJERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjX2NsYXNzLXRhcmdldCA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS13aXRob3V0LWxpYmx0ZGwtcHJlZml4IC0td2l0aG91dC1saWJnbXAtcHJlZml4IC0td2l0aG91dC1saWJyZWFkbGluZS1wcmVmaXgnLCAnJ11bYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJyxkKV19IgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1saWJnbXAtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbGlibHRkbC1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiBndWlsZV9jdl91c2VfY3NxcnQ9bm8gIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURIQVZFX0dDX1NFVF9GSU5BTElaRVJfTk9USUZJRVIgXAotCSAgICAgICAgICAgICAgICAgICAgLURIQVZFX0dDX0dFVF9IRUFQX1VTQUdFX1NBRkUgXAotCSAgICAgICAgICAgICAgICAgICAgLURIQVZFX0dDX0dFVF9GUkVFX1NQQUNFX0RJVklTT1IgXAotCSAgICAgICAgICAgICAgICAgICAgLURIQVZFX0dDX1NFVF9GSU5BTElaRV9PTl9ERU1BTkQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlta2RpciAtcCBwbwotfQotCi1leHBvcnQgR1VJTEVfRk9SX0JVSUxEPSIke0JVSUxEX1NZU30tZ3VpbGUiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlpbnN0YWxsIC1tIDA3NTUgICR7RH0ke2JpbmRpcn0vZ3VpbGUgJHtEfSR7YmluZGlyfS8ke0hPU1RfU1lTfS1ndWlsZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3VpbGUgXAotCQlHVUlMRV9MT0FEX1BBVEg9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAgXAotCQlHVUlMRV9MT0FEX0NPTVBJTEVEX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2d1aWxlLzIuMC9jY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9LyR7SE9TVF9TWVN9LWd1aWxlIFwKLQkJR1VJTEVfTE9BRF9QQVRIPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ3VpbGUvMi4wIFwKLQkJR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIGNsZWFudXAgYnVpbGRwYXRocyBpbiBzY3JpcHRzCi0Jc2VkIC1pIC1lICdzOiR7U1RBR0lOR19ESVJfTkFUSVZFfTo6JyAke0R9JHtiaW5kaXJ9L2d1aWxlLWNvbmZpZwotCXNlZCAtaSAtZSAnczoke1NUQUdJTkdfRElSX0hPU1R9OjonICR7RH0ke2JpbmRpcn0vZ3VpbGUtc25hcmYKLQotCXNlZCAtaSAtZSAnczoke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2d1aWxlLTIuMC5wYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyA9ICJndWlsZV9jcm9zc19jb25maWciCi0KLWd1aWxlX2Nyb3NzX2NvbmZpZygpIHsKLQkjIHRoaXMgaXMgb25seSBmb3IgdGFyZ2V0IHJlY2lwZQotCWlmIFsgIiR7UE59IiA9ICJndWlsZSIgXQotCXRoZW4KLQkgICAgICAgICMgQ3JlYXRlIGd1aWxlLWNvbmZpZyByZXR1cm5pbmcgdGFyZ2V0IHZhbHVlcyBpbnN0ZWFkIG9mIG5hdGl2ZSB2YWx1ZXMKLQkgICAgICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30KLSAgICAgICAgCXByaW50ZiAnIyElcyBcXFxuLS1uby1hdXRvLWNvbXBpbGUgLWUgbWFpbiAtc1xuISNcbihkZWZpbmUgJSVndWlsZS1idWlsZC1pbmZvICVzKFxuJyAkKHdoaWNoICR7QlVJTERfU1lTfS1ndWlsZSkgIiciIFwKLQkJCT4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKLQkgICAgICAgIHNlZCAtbiAtZSAnczpeWyBcdF0qe1sgXHRdKiI6ICAoOicgXAotCQkJLWUgJ3M6IixbIFx0XSoiOiAuICI6JyBcCi0JCQktZSAnczoiICp9LCAqXFw6Iik6JyBcCi0JCQktZSAnczpeLipjYWNoZWRpci4qJDo6JyBcCi0JCQktZSAnL14gICgvcCcgXAotCQkJPCAke0J9L2xpYmd1aWxlL2xpYnBhdGguaCA+PiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcwotCSAgICAgICAgZWNobyAnKSknID4+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBjYXQgJHtCfS9tZXRhL2d1aWxlLWNvbmZpZyA+PiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcwotCSAgICAgICAgaW5zdGFsbCAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcyAke1NUQUdJTkdfQklORElSX0NST1NTfS9ndWlsZS1jb25maWcKLQlmaQotfQotCi0jIEd1aWxlIG5lZWRzIHRoZSBjb21waWxlZCBmaWxlcyB0byBiZSBuZXdlciB0aGFuIHRoZSBzb3VyY2UsIGFuZCBpdCB3b24ndAotIyBhdXRvLWNvbXBpbGUgaW50byB0aGUgcHJlZml4IGV2ZW4gaWYgaXQgY2FuIHdyaXRlIHRoZXJlLCBzbyB0b3VjaCB0aGVtIGhlcmUgYXMKLSMgc3lzcm9vdCBpcyBtYW5hZ2VkLgotU1NUQVRFUE9TVElOU1RGVU5DUyArPSAiZ3VpbGVfc3N0YXRlX3Bvc3RpbnN0IgotR1VJTEVTU1RBVEVESVIgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtUVU5FX1BLR0FSQ0h9LyR7UE59LyR7bGliZGlyfS9ndWlsZS8yLjAvY2NhY2hlIgotR1VJTEVTU1RBVEVESVJfY2xhc3MtbmF0aXZlID0gIiR7Q09NUE9ORU5UU19ESVJ9LyR7QlVJTERfQVJDSH0vJHtQTn0vJHtsaWJkaXJfbmF0aXZlfS9ndWlsZS8yLjAvY2NhY2hlIgotZ3VpbGVfc3N0YXRlX3Bvc3RpbnN0KCkgewotCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF0KLQl0aGVuCi0gICAgICAgICAgICAgICAgZmluZCAke0dVSUxFU1NUQVRFRElSfSAtdHlwZSBmIHwgeGFyZ3MgdG91Y2gKLQlmaQotfQotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ5MS8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIKaW5kZXggNGQyNTU0Mi4uYzAxNzI1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzMuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU2V0IG9mIGkyYyB0b29scyBmb3IgbGludXgiCitIT01FUEFHRSA9ICJodHRwczovL2kyYy53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0kyQ19Ub29scyIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sXzAuNTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiCmluZGV4IDU1MWJkZjAuLmVjZmYyZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiCkBAIC0xNiw3ICsxNiw3IEBACiAKIERFUEVORFMgPSAibGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ID0gImdldHRleHQtZGV2IGxpYnhtbC1wYXJzZXItcGVybCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIGdldHRleHQtbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCmluZGV4IGRmM2I2MDAuLjUzN2JlNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCkBAIC0xLDE0ICsxLDExIEBACi1Gcm9tIDk1MjJhYzhlNWQ1YjIwYTQ3MmYzZmZjMzU2ZDM4OGQzNmY3ZjU4MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdiMjRmOGJkOTVhZDRmN2QwMGM5M2NhMmFkOTk4YzE0YTAyNjZkYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBtYXJ4aW4gPG1saXNrYUBzdXNlLmN6PgogRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAwODo0MjoxMSArMDEwMAogU3ViamVjdDogW1BBVENIXSBBZGQgRkFMTFRIUlUgY29tbWVudCB0byBoYW5kbGUgR0NDNyB3YXJuaW5ncy4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy9jb21taXQvMDE0OTI0YmE4OTlmNjU5OTE3YmI2NDM5MmJiZmY3ZDNjODAzYWZjMl0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKICBqc29uX29iamVjdC5jICB8ICAxICsKICBqc29uX3Rva2VuZXIuYyB8ICAxICsKQEAgLTI4LDEwICsyNSwxMCBAQAogICAgICByZXR1cm4gMDsKICAgIH0KIGRpZmYgLS1naXQgYS9qc29uX3Rva2VuZXIuYyBiL2pzb25fdG9rZW5lci5jCi1pbmRleCA3ZmEzMmFlLi5iMzJkNjU3IDEwMDY0NAoraW5kZXggOWE3NjI5My4uYWU3YjFhZSAxMDA2NDQKIC0tLSBhL2pzb25fdG9rZW5lci5jCiArKysgYi9qc29uX3Rva2VuZXIuYwotQEAgLTMwNiw2ICszMDYsNyBAQCBzdHJ1Y3QganNvbl9vYmplY3QqIGpzb25fdG9rZW5lcl9wYXJzZV9leChzdHJ1Y3QganNvbl90b2tlbmVyICp0b2ssCitAQCAtMzA1LDYgKzMwNSw3IEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2V4KHN0cnVjdCBqc29uX3Rva2VuZXIgKnRvaywKICAgICAgICAgICAgICB0b2stPmVyciA9IGpzb25fdG9rZW5lcl9lcnJvcl9wYXJzZV91bmV4cGVjdGVkOwogICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgfQpAQCAtNzMsNSArNzAsNSBAQAogICAgICAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAwIDogcmV0dXJuIGM7CiAtLSAKLTIuMTQuMQorMi4xMi4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUxpbmstYWdhaW5zdC1saWJtLXdoZW4tbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZTlkNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDkzNTgyYWQ4NWVmNDhjMThhYzEyZjAwYTlhOWUxMjQ5ODliMWZjYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6IEZyaSwgMSBNYXkgMjAxNSAxMjo1MjoxOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBMaW5rIGFnYWluc3QgbGlibSB3aGVuIG5lZWRlZAotCi1JbiBjZXJ0YWluIEMgbGlicmFyaWVzIChlLmcgdUNsaWJjKSwgaXNuYW4oKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgYXJlCi1pbXBsZW1lbnRlZCBpbiBsaWJtLCBzbyBqc29uLWMgbmVlZHMgdG8gbGluayBhZ2FpbnN0IGl0LiBUaGlzIGNvbW1pdAotdGhlcmVmb3JlIGFkZHMgYW4gQUNfVFJZX0xJTksoKSB0ZXN0IHRvIGNoZWNrIHdoZXRoZXIgYSBwcm9ncmFtCi1jYWxsaW5nIGlzbmFuKCkgY2FuIGJlIHByb3Blcmx5IGxpbmtlZCB3aXRoIG5vIHNwZWNpYWwgZmxhZ3MuIElmIG5vdCwKLXdlIGFzc3VtZSBsaW5raW5nIGFnYWluc3QgbGlibSBpcyBuZWVkZWQuCi0KLVRoZSBqc29uLWMucGMuaW4gZmlsZSBpcyBhbHNvIGFkanVzdGVkIHNvIHRoYXQgaW4gdGhlIGNhc2Ugb2Ygc3RhdGljCi1saW5raW5nIGFnYWluc3QganNvbi1jLCAtbG0gaXMgYWxzbyB1c2VkLgotCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0ganNvbi1jLnBjLmluIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjNTBmODFiLi4zMGU3MTc0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MCw2ICs1MCwxMCBAQCBBQ19DSEVDS19ERUNMUyhbaXNpbmZdLCBbXSwgW10sIFtbI2luY2x1ZGUgPG1hdGguaD5dXSkKLSBBQ19DSEVDS19ERUNMUyhbX2lzbmFuXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxmbG9hdC5oPl1dKQotIEFDX0NIRUNLX0RFQ0xTKFtfZmluaXRlXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxmbG9hdC5oPl1dKQotIAotK2lmIHRlc3QgIiRhY19jdl9oYXZlX2RlY2xfaXNuYW4iID0gInllcyIgOyB0aGVuCi0rICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxtYXRoLmg+XSwgW2Zsb2F0IGYgPSAwLjA7IHJldHVybiBpc25hbihmKV0sIFtdLCBbTElCUz0iJExJQlMgLWxtIl0pCi0rZmkKLSsKLSAjY2hlY2sgaWYgLnNlY3Rpb24uZ251Lndhcm5pbmcgYWNjZXB0cyBsb25nIHN0cmluZ3MgKGZvciBfX3dhcm5fcmVmZXJlbmNlcykKLSBBQ19MQU5HX1BVU0goW0NdKQotIAotZGlmZiAtLWdpdCBhL2pzb24tYy5wYy5pbiBiL2pzb24tYy5wYy5pbgotaW5kZXggMDM3NzM5ZC4uMDViZmJjOCAxMDA2NDQKLS0tLSBhL2pzb24tYy5wYy5pbgotKysrIGIvanNvbi1jLnBjLmluCi1AQCAtNiw2ICs2LDcgQEAgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSBOYW1lOiBqc29uLWMKLSBEZXNjcmlwdGlvbjogSlNPTiBpbXBsZW1lbnRhdGlvbiBpbiBDCi0gVmVyc2lvbjogQFZFUlNJT05ACi0tUmVxdWlyZXM6IAotK1JlcXVpcmVzOgotK0xpYnMucHJpdmF0ZTogQExJQlNACi0gTGliczogIC1MJHtsaWJkaXJ9IC1sanNvbi1jCi0gQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vanNvbi1jCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5ZDkxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1qc29uX3Rva2VuZXItcmVxdWlyZXMtSU5GLWFuZC1OQU4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDliZTcxNzAwZWI1ODBjODE1Njg4NTg0YTY0NjIxYTM4ODY3YzNmZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW1lcyBNeWF0dCA8amFtZXMubXlhdHRAdGVzc2VsbGEuY29tPgotRGF0ZTogVGh1LCA1IEZlYiAyMDE1IDE1OjU3OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGpzb25fdG9rZW5lciByZXF1aXJlcyBJTkYgYW5kIE5BTgotCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGpzb25fdG9rZW5lci5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBqc29uLWMtMC4xMi9qc29uX3Rva2VuZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGpzb24tYy0wLjEyLm9yaWcvanNvbl90b2tlbmVyLmMKLSsrKyBqc29uLWMtMC4xMi9qc29uX3Rva2VuZXIuYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSAibWF0aF9jb21wYXQuaCIKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotQEAgLTM1MiwxMiArMzUzLDEwIEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2UKLSAKLSAgICAgY2FzZSBqc29uX3Rva2VuZXJfc3RhdGVfaW5mOiAvKiBha2Egc3RhcnRzIHdpdGggJ2knICovCi0gICAgICAgewotLQlpbnQgc2l6ZTsKLS0JaW50IHNpemVfaW5mOwotKwlzaXplX3Qgc2l6ZV9pbmY7Ci0gCWludCBpc19uZWdhdGl2ZSA9IDA7Ci0gCi0gCXByaW50YnVmX21lbWFwcGVuZF9mYXN0KHRvay0+cGIsICZjLCAxKTsKLS0Jc2l6ZSA9IGpzb25fbWluKHRvay0+c3RfcG9zKzEsIGpzb25fbnVsbF9zdHJfbGVuKTsKLSAJc2l6ZV9pbmYgPSBqc29uX21pbih0b2stPnN0X3BvcysxLCBqc29uX2luZl9zdHJfbGVuKTsKLSAJY2hhciAqaW5mYnVmID0gdG9rLT5wYi0+YnVmOwotIAlpZiAoKmluZmJ1ZiA9PSAnLScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDFjZjEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkMgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIEpTT04gZGF0YSIKK0RFU0NSSVBUSU9OID0gIkpTT04tQyBpbXBsZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9iamVjdCBtb2RlbCB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNvbnN0cnVjdCBKU09OIG9iamVjdHMgaW4gQy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy93aWtpIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZTU0YjYwZmJiYzM1MTIzYmExOTNmZWE4ZWUyMTZmMiIKKworU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjU1Zjc4NTNmN2Q4Y2Y2NjQ1NTRjZTNmYTcxYmYxYzdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMTM2NDUxYTc5MzJkODBiN2QxOTdiMTA0NDFlMjZlMzk0MjhkNjdiMTQ0M2VjNDNiYmJhODI0NzA1ZTExMjMiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpzb24tYy0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorIyBqc29uLWMgcmVsZWFzZXMgcGFnZSBpcyBmZXRjaGluZyB0aGUgbGlzdCBvZiByZWxlYXNlcyBpbiBzb21lIHdlaXJkIFhNTCBmb3JtYXQKKyMgZnJvbSBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzIGFuZCBwcm9jZXNzZXMgaXQgd2l0aCBqYXZhc2NyaXB0IDotLworI1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzL2luZGV4Lmh0bWwiCitSRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiA9ICIwLjEyLjEiCitSRUNJUEVfVVBTVFJFQU1fREFURSA9ICJKdW4gMDcsIDIwMTYiCitDSEVDS19EQVRFID0gIkFwciAxOSwgMjAxNyIKKworUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1yZHJhbmQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCisgICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MmMwOTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkMgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIEpTT04gZGF0YSIKLURFU0NSSVBUSU9OID0gIkpTT04tQyBpbXBsZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9iamVjdCBtb2RlbCB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNvbnN0cnVjdCBKU09OIG9iamVjdHMgaW4gQy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy93aWtpIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZTU0YjYwZmJiYzM1MTIzYmExOTNmZWE4ZWUyMTZmMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUxpbmstYWdhaW5zdC1saWJtLXdoZW4tbmVlZGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjYTRiYmI4ODFkZmM0MDE3ZTgwMjFiNWUwYThjNDkxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMGMwMWIyYjNmODJkY2I0MjYxNzUxZWI3MWYxYjA4NDQwNGZiN2Q2YTI4MmYwNjA3NGQzYzE3MDc4YjlmM2YiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpzb24tYy0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotIyBqc29uLWMgcmVsZWFzZXMgcGFnZSBpcyBmZXRjaGluZyB0aGUgbGlzdCBvZiByZWxlYXNlcyBpbiBzb21lIHdlaXJkIFhNTCBmb3JtYXQKLSMgZnJvbSBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzIGFuZCBwcm9jZXNzZXMgaXQgd2l0aCBqYXZhc2NyaXB0IDotLwotI1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzL2luZGV4Lmh0bWwiCi1SRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiA9ICIwLjEyIgotUkVDSVBFX1VQU1RSRUFNX0RBVEUgPSAiQXByIDExLCAyMDE0IgotQ0hFQ0tfREFURSA9ICJEZWMgMDQsIDIwMTUiCi0KLVJQUk9WSURFU18ke1BOfSA9ICJsaWJqc29uIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIENsZWFuIHVwIGF1dG9jb25mIGNydWZ0IHRoYXQgc2hvdWxkIG5vdCBiZSBpbiB0aGUgdGFyYmFsbAotICAgIHJtIC1mICR7U30vY29uZmlnLnN0YXR1cwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9rY29uZmlnLWZyb250ZW5kc18zLjEyLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNhMGU0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTIgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaW51eCBrZXJuZWwgc3R5bGUgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsgZm9yIG90aGVyIHByb2plY3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIGtjb25maWctZnJvbnRlbmRzIHByb2plY3QgYWltcyBhdCBjZW50cmFsaXNpbmcgXAotdGhlIGVmZm9ydCBvZiBrZWVwaW5nIGFuIHVwLXRvLWRhdGUsIG91dC1vZi10cmVlLCBwYWNrYWdpbmcgb2YgdGhlIFwKLWtjb25maWcgaW5mcmFzdHJ1Y3R1cmUsIHJlYWR5IGZvciB1c2UgYnkgdGhpcmQtcGFydHkgcHJvamVjdHMuIFwKLVRoZSBrY29uZmlnLWZyb250ZW5kcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBrY29uZmlnIHBhcnNlciwgYXMgd2VsbCBhcyBhbGwgXAotdGhlIGZyb250ZW5kcyIKLUhPTUVQQUdFID0gImh0dHA6Ly95bW9yaW4uaXMtYS1nZWVrLm9yZy9wcm9qZWN0cy9rY29uZmlnLWZyb250ZW5kcyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTliOGNmNjBmZjM5NzY3ZmYwNGI2NzFmY2E4MzAyNDA4IgotU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgKz0gIm5jdXJzZXMgZmxleCBiaXNvbiBncGVyZi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uIGJhc2giCi1TUkNfVVJJID0gImdpdDovL3ltb3Jpbi5pcy1hLWdlZWsub3JnL2tjb25maWctZnJvbnRlbmRzIgotCi1TUkNSRVYgPSAiNzVkMzViMTcyZmMwZjdiNjYyMGRkNjU5YWY0MWYyY2UwNGVkYzRlNiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgJHtTfS9zY3JpcHRzLy5hdXRvc3R1ZmYvbTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXMga2NvbmZpZy1jb25mICR7RH0ke2JpbmRpcn0vY29uZgotCWxuIC1zIGtjb25maWctbWNvbmYgJHtEfSR7YmluZGlyfS9tY29uZgotfQotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nY29uZiAtLWRpc2FibGUtcWNvbmYiCi0KLSMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5Ci0jIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLVNPTElCUyA9ICItJHtAZC5nZXRWYXIoJ1BWJylbOi0yXX0uc28iCi1GSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmtjb25maWctcGFyc2VyLnNvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMi1TZXQtbGlicmFyeS1pbnN0YWxsYXRpb24tcGF0aC1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDItU2V0LWxpYnJhcnktaW5zdGFsbGF0aW9uLXBhdGgtY29ycmVjdGx5LnBhdGNoCmluZGV4IGVjMWZkYzQuLmRjM2Q5NzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMi1TZXQtbGlicmFyeS1pbnN0YWxsYXRpb24tcGF0aC1jb3JyZWN0bHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAyLVNldC1saWJyYXJ5LWluc3RhbGxhdGlvbi1wYXRoLWNvcnJlY3RseS5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MjY6MDAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzJdIFNldCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBwYXRoIGNvcnJlY3RseQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliY29tcHMvcHVsbC8zMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgbGliY29tcHMvc3JjL0NNYWtlTGlzdHMudHh0IHwgMiArLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2gKaW5kZXggNzNhY2RhNi4uNzkxYTMyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoCkBAIC03LDcgKzcsNyBAQAogRm9yIHNvbWUgcmVhc29uIGNtYWtlIGlzIG5vdCBhYmxlIHRvIGZpbmQgaXQgd2hlbiBidWlsZGluZyBpbiBvcGVuZW1iZWRkZWQsCiBhbmQgaXQncyBidW5kbGVkIHdpdGggdGhlIHNvdXJjZSBjb2RlIGFueXdheS4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgY21ha2UvbW9kdWxlcy9GaW5kR3RrRG9jLmNtYWtlIHwgMiArLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKaW5kZXggOTU0YWRkNi4uMjgwZWRiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCkBAIC0xLDI4ICsxLDI5IEBACi1Gcm9tIDU5NThiMTUxYTRkYmI4OTExNGU5MGM5NzFhMzRiNzRmODczYjdiZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMwMTJhOTM3NDUyMjM3NTFjYzk3OWUzNzcwMjA3YTA5YTA3NWJlYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgNyBGZWIgMjAxNyAxMjoxNjowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBHZXQgcGFyYW1ldGVycyBmb3IgYm90aCBsaWJzb2x2IGFuZCBsaWJzb2x2ZXh0IChsaWJkbmYgaXMKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcwogIHVzaW5nIGJvdGgpCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZGVwZW5kcyBvbiB3aGV0aGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L3B1bGwvMTc3IGlzIGFjY2VwdGVkXQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgQ01ha2VMaXN0cy50eHQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiNTMxZGExLi5lNTEyZGEwIDEwMDY0NAoraW5kZXggOGIyYWI5YS4uZTJkMzNkNyAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTI4LDcgKzI4LDcgQEAgZmluZF9wYWNrYWdlIChQa2dDb25maWcgUkVRVUlSRUQpCitAQCAtMjksNyArMjksNyBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQogIEZJTkRfTElCUkFSWSAoUlBNREJfTElCUkFSWSBOQU1FUyBycG1kYikKIC1QS0dfQ0hFQ0tfTU9EVUxFUyAoTElCU09MViBSRVFVSVJFRCBsaWJzb2x2KQogK1BLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYgbGlic29sdmV4dCkKICBzZXQoTElCU09MVl9MSUJSQVJZICR7TElCU09MVl9MSUJSQVJJRVN9KQotIHBrZ19jaGVja19tb2R1bGVzIChDSEVDSyBSRVFVSVJFRCBjaGVjaykKLSBwa2dfY2hlY2tfbW9kdWxlcyAoUkVQTyBSRVFVSVJFRCBsaWJyZXBvKQorIGlmIChFTkFCTEVfUkhTTV9TVVBQT1JUKQorICAgICBwa2dfY2hlY2tfbW9kdWxlcyAoUkhTTSBSRVFVSVJFRCBsaWJyaHNtKQogLS0gCiAyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDItUHJlZml4LXN5c3Jvb3QtcGF0aC10by1pbnRyb3NwZWN0aW9uLXRvb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaAppbmRleCAzZDc3MmE1Li43ZWVjYzNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MTc6MTkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzRdIFByZWZpeCBzeXNyb290IHBhdGggdG8gaW50cm9zcGVjdGlvbiB0b29scyBwYXRoLgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBsaWJkbmYvQ01ha2VMaXN0cy50eHQgfCA0ICsrLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaAppbmRleCBkN2U1OWQ4Li44MTI2NDA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyMDowMSArMDIwMAogU3ViamVjdDogW1BBVENIIDMvNF0gU2V0IHRoZSBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgY29ycmVjdGx5LgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDQgKysrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKaW5kZXggOTMxOTU5Yi4uMWVhOTMxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCkBAIC0xLDI5ICsxLDMwIEBACi1Gcm9tIDZkMjcxOGI5MjU0NTNmOWE2OTE1MDAxZjQ4OTYwNmViOGU0MDg2YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU1Y2JlNmY0MGZlMDgzNjM4NWUxYTcyNDFlYzgxMWNiZTk5ZTU4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MjQ6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIFNldCBsaWJzb2x2IHZhcmlhYmxlcyB3aXRoIHBrZy1jb25maWcgKGNtYWtlJ3Mgb3duIG1vZHVsZQorU3ViamVjdDogW1BBVENIIDQvNV0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCiAgZG9lc24ndCB3b3JrIHByb3Blcmx5KS4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggOGVkYjYyNy4uYjUzMWRhMSAxMDA2NDQKK2luZGV4IGE3NWRmMDQuLjhiMmFiOWEgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yOCw3ICsyOCw4IEBAIGZpbmRfcGFja2FnZSAoUGtnQ29uZmlnIFJFUVVJUkVEKQorQEAgLTI5LDcgKzI5LDggQEAgZmluZF9wYWNrYWdlIChQa2dDb25maWcgUkVRVUlSRUQpCiAgU0VUIChDTUFLRV9NT0RVTEVfUEFUSCAke0NNQUtFX1NPVVJDRV9ESVJ9L2NtYWtlL21vZHVsZXMpCiAgUEtHX0NIRUNLX01PRFVMRVMoR0xJQiBnaW8tdW5peC0yLjA+PTIuNDQuMCBSRVFVSVJFRCkKICBGSU5EX0xJQlJBUlkgKFJQTURCX0xJQlJBUlkgTkFNRVMgcnBtZGIpCiAtZmluZF9wYWNrYWdlIChMaWJTb2x2IDAuNi4yMSBSRVFVSVJFRCBDT01QT05FTlRTIGV4dCkKICtQS0dfQ0hFQ0tfTU9EVUxFUyAoTElCU09MViBSRVFVSVJFRCBsaWJzb2x2KQogK3NldChMSUJTT0xWX0xJQlJBUlkgJHtMSUJTT0xWX0xJQlJBUklFU30pCi0gcGtnX2NoZWNrX21vZHVsZXMgKENIRUNLIFJFUVVJUkVEIGNoZWNrKQotIHBrZ19jaGVja19tb2R1bGVzIChSRVBPIFJFUVVJUkVEIGxpYnJlcG8pCi0gRklORF9QUk9HUkFNIChWQUxHUklORF9QUk9HUkFNIE5BTUVTIHZhbGdyaW5kIFBBVEggL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4pCisgaWYgKEVOQUJMRV9SSFNNX1NVUFBPUlQpCisgICAgIHBrZ19jaGVja19tb2R1bGVzIChSSFNNIFJFUVVJUkVEIGxpYnJoc20pCisgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgKCR7UkhTTV9JTkNMVURFX0RJUlN9KQogLS0gCiAyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuOS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDkzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBzaW1wbGlmaWVkIEMgYW5kIFB5dGhvbiBBUEkgdG8gbGlic29sdiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiMWIxOTk1MGU4MmQ4OGVlYzI4ZDAxYjRlN2MxZGE3MTJjOTQxMjAxZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCisKK2luaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQorCitFWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAorICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjI4NjExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIHNpbXBsaWZpZWQgQyBhbmQgUHl0aG9uIEFQSSB0byBsaWJzb2x2IgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBWID0gIjAuMi4zK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjM2NzU0NTYyOWNjMDFhOGU2MjI4OTBkODliZDEzZDA2MmNlNjBkN2IiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlic29sdiBsaWJjaGVjayBsaWJyZXBvIHJwbSBndGstZG9jIgotCi1pbmhlcml0IGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGNtYWtlIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURXSVRIX01BTj1PRkYgLURQWVRIT05fREVTSVJFRD0zIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctRFdJVEhfR0lSPU9OJywgJy1EV0lUSF9HSVI9T0ZGJywgZCl9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9HSVI9T0ZGIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAxLUNvcnJlY3RseS1zZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoCmluZGV4IDAxZmVhNDAuLjA4YTU4ZjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODowNDozNSArMDIwMAogU3ViamVjdDogW1BBVENIIDEvNF0gQ29ycmVjdGx5IHNldCB0aGUgbGlicmFyeSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5CiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvL3B1bGwvMTEwXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBsaWJyZXBvL0NNYWtlTGlzdHMudHh0IHwgMyArKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaAppbmRleCAwZDJmYWU0Li44OWNhNjBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODowNjoyNCArMDIwMAogU3ViamVjdDogW1BBVENIIDMvNF0gdGVzdHM6IGZpeCBhIHJhY2Ugd2hlbiBkZWxldGluZyB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIHRlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5IHwgMiArLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoCmluZGV4IDY2NjViMzEuLmY3ZDdhYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2gKQEAgLTQsNyArNCw3IEBACiBTdWJqZWN0OiBbUEFUQ0ggNC80XSBTZXQgZ3BnbWUgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZywgbm90IHdpdGggY21ha2UKICBtb2R1bGUgKHdoaWNoIGRvZXNuJ3Qgd29yayBwcm9wZXJseSkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2dwZ21lIHVwc3RyZWFtIGRvZXMgbm90IGhhdmUgcGtnLWNvbmZpZyBzdXBwb3J0IGFuZCBpcyBub3QgaW50ZXJlc3RlZCBpbiBpdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgQ01ha2VMaXN0cy50eHQgfCAzICsrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYzdkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBhNGJiYmNjY2U2ZWRjMWEyZDFiZDQ3NTUwNmUyOTc1ZmQ3Njk2Yzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE2OjMxOjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0eXBvOiBjb3JyZWN0IExST19TU0xWRVJJRllIT1NUIHdpdGgKKyBDVVJMT1BUX1NTTF9WRVJJRllIT1NUCisKK0luIGNvbW1pdCA1MWQzMmM2Y2Q4OGJhMDEzOWMzMjc5MzE4M2ZkNmEyMzZjMWVmNDU2CistLS0KK0F1dGhvcjogVG9tYXMgTWxjb2NoIDx0bWxjb2NoQHJlZGhhdC5jb20+CitEYXRlOiAgIE1vbiBNYXkgNSAxNDozMTozNSAyMDE0ICswMjAwCisKKyAgICBBZGQgTFJPX1NTTFZFUklGWVBFRVIgYW5kIExST19TU0xWRVJJRllIT1NUIG9wdGlvbnMgKFJoQnVnOiAxMDkzMDE0KQorLS0tCisKK0l0IGluY29ycmVjdGx5IHNldG9wdCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGZvciBMUk9fU1NMVkVSSUZZSE9TVC4KK1VzZSBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIHRvIGNvcnJlY3QuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYnJlcG8vaGFuZGxlLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJyZXBvL2hhbmRsZS5jIGIvbGlicmVwby9oYW5kbGUuYworaW5kZXggY2NlYTc5Yi4uZmYzOWRiNCAxMDA2NDQKKy0tLSBhL2xpYnJlcG8vaGFuZGxlLmMKKysrKyBiL2xpYnJlcG8vaGFuZGxlLmMKK0BAIC02MjksNyArNjI5LDcgQEAgbHJfaGFuZGxlX3NldG9wdChMckhhbmRsZSAqaGFuZGxlLAorIAorICAgICBjYXNlIExST19TU0xWRVJJRllIT1NUOgorICAgICAgICAgaGFuZGxlLT5zc2x2ZXJpZnlob3N0ID0gdmFfYXJnKGFyZywgbG9uZykgPyAyIDogMDsKKy0gICAgICAgIGNfcmMgPSBjdXJsX2Vhc3lfc2V0b3B0KGNfaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgaGFuZGxlLT5zc2x2ZXJpZnlob3N0KTsKKysgICAgICAgIGNfcmMgPSBjdXJsX2Vhc3lfc2V0b3B0KGNfaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgaGFuZGxlLT5zc2x2ZXJpZnlob3N0KTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExST19TU0xDTElFTlRDRVJUOgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIKaW5kZXggMmYxOTRmMS4uMzIzOGIxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYgpAQCAtNyw2ICs3LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRml4LXR5cG8tY29ycmVjdC1MUk9fU1NMVkVSSUZZSE9TVC13aXRoLUNVUkxPUFRfU1NMXy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUFYgPSAiMS43LjIwK2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wvbm9oYXJkY29kZXBhdGhzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wvbm9oYXJkY29kZXBhdGhzLnBhdGNoCmluZGV4IGIyMjM5ZmIuLmZjYmNlNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL25vaGFyZGNvZGVwYXRocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9ub2hhcmRjb2RlcGF0aHMucGF0Y2gKQEAgLTQsNiArNCw4IEBACiAKIFJQIDIwMTUvMi8zCiAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCiBJbmRleDogbGlidG9vbC0yLjQuNS9saWJ0b29saXplLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gbGlidG9vbC0yLjQuNS5vcmlnL2xpYnRvb2xpemUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sXzIuNC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKaW5kZXggMDZhYmIwNS4uYjAyNjIwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKQEAgLTE1LDYgKzE1LDcgQEAKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICAgICBzZWQgLWUgJ3NALS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH1AQGcnIFwKKyAgICAgICAgICAgIC1lICJzQCR7REVCVUdfUFJFRklYX01BUH1AQGciIFwKICAgICAgICAgICAgIC1lICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AQGcnIFwKICAgICAgICAgICAgIC1lICdzQCR7U1RBR0lOR19ESVJfTkFUSVZFfUBAZycgXAogICAgICAgICAgICAgLWUgJ3NAXlwoc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSJcKS4qQFwxJHtsaWJkaXJ9ICR7YmFzZV9saWJkaXJ9IkAnIFwKQEAgLTIyLDUgKzIzLDYgQEAKICAgICAgICAgICAgIC1lICdzQF5cKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aD0iXCkuKkBcMSR7bGliZGlyfSAke2Jhc2VfbGliZGlyfSJAJyBcCiAgICAgICAgICAgICAtZSAnc0BeXChwcmVkZXBfb2JqZWN0cz0iXCkuKkBcMSJAJyBcCiAgICAgICAgICAgICAtZSAnc0BeXChwb3N0ZGVwX29iamVjdHM9IlwpLipAXDEiQCcgXAorICAgICAgICAgICAgLWUgInNAJHtIT1NUVE9PTFNfRElSfS9AQGciIFwKICAgICAgICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbGlidG9vbAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNTE3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSAyODI5M2U0OGNmMWE1MjAwNGM2YTc4ZGU0NDg3MTg0NDFmOWUwNWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjEgTWF5IDIwMTYgMDA6MzM6MjAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGxsdm06IFRhcmdldExpYnJhcnlJbmZvOiBVbmRlZmluZSBsaWJjIGZ1bmN0aW9ucyBpZiB0aGV5CisgYXJlIG1hY3JvcworCittdXNsIGRlZmluZXMgc29tZSBmdW5jdGlvbnMgYXMgbWFjcm9zIGFuZCBub3QgaW5saW5lIGZ1bmN0aW9ucworaWYgdGhpcyBpcyB0aGUgY2FzZSB0aGVuIG1ha2Ugc3VyZSB0byB1bmRlZmluZSB0aGVtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZiB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgoraW5kZXggOWNiZTkxN2MxNDYuLmFmZjg0MTljZjU0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgorKysrIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZgorQEAgLTY1Niw2ICs2NTYsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm1vZGwiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmb3BlbikKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9wZW4iKQorIC8vLyBGSUxFICpmb3BlbjY0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpvcGVudHlwZSkKKysjaWZkZWYgZm9wZW42NAorKyN1bmRlZiBmb3BlbjY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcGVuNjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZvcGVuNjQiKQorIC8vLyBpbnQgZnByaW50ZihGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKK0BAIC02OTEsNiArNjk0LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrIikKKyAvLy8gaW50IGZzZWVrbyhGSUxFICpzdHJlYW0sIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbykKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWtvIikKKysjaWZkZWYgZnNlZWtvNjQKKysjdW5kZWYgZnNlZWtvNjQKKysjZW5kaWYKKyAvLy8gaW50IGZzZWVrbzY0KEZJTEUgKnN0cmVhbSwgb2ZmNjRfdCBvZmZzZXQsIGludCB3aGVuY2UpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbzY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla282NCIpCitAQCAtNzAxLDYgKzcwNyw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2V0cG9zIikKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnN0YXQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzdGF0IikKKyAvLy8gaW50IGZzdGF0NjQoaW50IGZpbGVkZXMsIHN0cnVjdCBzdGF0NjQgKmJ1ZikKKysjaWZkZWYgZnN0YXQ2NAorKyN1bmRlZiBmc3RhdDY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzdGF0NjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzdGF0NjQiKQorIC8vLyBpbnQgZnN0YXR2ZnMoaW50IGZpbGRlcywgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CitAQCAtNzE2LDYgKzcyNSw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbCIpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZ0ZWxsbykKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGxvIikKKyAvLy8gb2ZmNjRfdCBmdGVsbG82NChGSUxFICpzdHJlYW0pCisrI2lmZGVmIGZ0ZWxsbzY0CisrI3VuZGVmIGZ0ZWxsbzY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZ0ZWxsbzY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbG82NCIpCisgLy8vIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqZmlsZSk7CitAQCAtODM2LDYgKzg0OCw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJsb2dsIikKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxzdGF0IikKKyAvLy8gaW50IGxzdGF0NjQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQ2NCAqYnVmKTsKKysjaWZkZWYgbHN0YXQ2NAorKyN1bmRlZiBsc3RhdDY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGxzdGF0NjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxzdGF0NjQiKQorIC8vLyB2b2lkICptYWxsb2Moc2l6ZV90IHNpemUpOworQEAgLTEwNTUsNiArMTA3MCw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJzc2NhbmYiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChzdGF0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJzdGF0IikKKyAvLy8gaW50IHN0YXQ2NChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpOworKyNpZmRlZiBzdGF0NjQKKysjdW5kZWYgc3RhdDY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQ2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3RhdDY0IikKKyAvLy8gaW50IHN0YXR2ZnMoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7CitAQCAtMTE4NCw2ICsxMjAyLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRpbWVzIikKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwodG1wZmlsZSkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidG1wZmlsZSIpCisgLy8vIEZJTEUgKnRtcGZpbGU2NCh2b2lkKQorKyNpZmRlZiB0bXBmaWxlNjQKKysjdW5kZWYgdG1wZmlsZTY0CisrI2VuZGlmCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHRtcGZpbGU2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidG1wZmlsZTY0IikKKyAvLy8gaW50IHRvYXNjaWkoaW50IGMpOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyYmQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBkNzc2NDg3YmFjMTc2NTA3MDQ2MTQyNDhkMTlkMWU2YjM1Nzc1MDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CitEYXRlOiBGcmksIDE5IE1heSAyMDE3IDAwOjIyOjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsbHZtOiBhbGxvdyBlbnYgb3ZlcnJpZGUgb2YgZXhlIHBhdGgKKworV2hlbiB1c2luZyBhIG5hdGl2ZSBsbHZtLWNvbmZpZyBmcm9tIGluc2lkZSBhIHN5c3Jvb3QsIHdlIG5lZWQgbGx2bS1jb25maWcgdG8KK3JldHVybiB0aGUgbGlicmFyaWVzLCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBldGMuIGZyb20gaW5zaWRlIHRoZSBzeXNyb290IHJhdGhlcgordGhhbiBmcm9tIHRoZSBuYXRpdmUgc3lzcm9vdC4gVGh1cyBwcm92aWRlIGFuIGVudiBvdmVycmlkZSBmb3IgY2FsbGluZworbGx2bS1jb25maWcgZnJvbSBhIHRhcmdldCBzeXNyb290LgorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS2VsbHkgPG1rZWxseUB4ZXZvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwIGIvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCitpbmRleCAwOGIwOTZhZmIwNS4uZDhkNzc0Mjc0NGUgMTAwNjQ0CistLS0gYS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKKysrKyBiL3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAorQEAgLTIyNSw2ICsyMjUsMTMgQEAgVHlwaWNhbCBjb21wb25lbnRzOlxuXAorIAorIC8vLyBcYnJpZWYgQ29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlLgorIHN0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVQYXRoKGNvbnN0IGNoYXIgKkFyZ3YwKSB7CisrICAvLyBIYWNrIGZvciBZb2N0bzogd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgcm9vdCBwYXRoIHdoZW4gd2UgYXJlIHVzaW5nCisrICAvLyBsbHZtLWNvbmZpZyBmcm9tIHdpdGhpbiBhIHRhcmdldCBzeXNyb290LgorKyAgY29uc3QgY2hhciAqU3lzcm9vdCA9IHN0ZDo6Z2V0ZW52KCJZT0NUT19BTFRFUk5BVEVfRVhFX1BBVEgiKTsKKysgIGlmIChTeXNyb290ICE9IG51bGxwdHIpIHsKKysgICAgcmV0dXJuIFN5c3Jvb3Q7CisrICB9CisrCisgICAvLyBUaGlzIGp1c3QgbmVlZHMgdG8gYmUgc29tZSBzeW1ib2wgaW4gdGhlIGJpbmFyeTsgQysrIGRvZXNuJ3QKKyAgIC8vIGFsbG93IHRha2luZyB0aGUgYWRkcmVzcyBvZiA6Om1haW4gaG93ZXZlci4KKyAgIHZvaWQgKlAgPSAodm9pZCAqKShpbnRwdHJfdClHZXRFeGVjdXRhYmxlUGF0aDsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDZmYTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCkBAIC0wLDAgKzEsMTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sbHZtLm9yZyIKK0xJQ0VOU0UgPSAiTkNTQSIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT1lODI1ZTAxN2VkYzM1Y2ZkNThlMjYxMTZlNTI1MTc3MSIKKworREVQRU5EUyA9ICJsaWJmZmkgbGlieG1sMi1uYXRpdmUgemxpYiBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG5jdXJzZXMtdGVybWluZm8iCisKK2luaGVyaXQgcGVybG5hdGl2ZSBweXRob25uYXRpdmUgY21ha2UgcGtnY29uZmlnCisKK1BST1ZJREVTICs9ICJsbHZtJHtQVn0iCisKK0xMVk1fUkVMRUFTRSA9ICIke1BWfSIKK0xMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCisKK1NSQ1JFViA9ICI5YTVjMzMzMzg4Y2JiNTRhMGNlM2E2N2M0ZjUzOWY1ZTU5MGEwODliIgorUFYgPSAiNS4wIgorUEFUQ0hfVkVSU0lPTiA9ICIwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xsdm0tbWlycm9yL2xsdm0uZ2l0O2JyYW5jaD1yZWxlYXNlXzUwO3Byb3RvY29sPWh0dHAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworTExWTV9JTlNUQUxMX0RJUiA9ICIke1dPUktESVJ9L2xsdm0taW5zdGFsbCIKK2RlZiBnZXRfbGx2bV9hcmNoKGJiLCBkLCBhcmNoX3Zhcik6CisgICAgaW1wb3J0IHJlCisgICAgYSA9IGQuZ2V0VmFyKGFyY2hfdmFyKQorICAgIGlmICAgcmUubWF0Y2goJyhpLjg2fGF0aGxvbnx4ODYuNjQpJCcsIGEpOiAgICAgICAgIHJldHVybiAnWDg2JworICAgIGVsaWYgcmUubWF0Y2goJ2FybSQnLCBhKTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQVJNJworICAgIGVsaWYgcmUubWF0Y2goJ2FybWViJCcsIGEpOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQVJNJworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQUFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlJCcsIGEpOiAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0FBcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnw2NHwpKHI2fCkoZWx8KSQnLCBhKTogcmV0dXJuICdNaXBzJworICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6ICAgICAgICAgICAgIHJldHVybiAnUG93ZXJQQycKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJDYW5ub3QgbWFwICclcycgdG8gYSBzdXBwb3J0ZWQgTExWTSBhcmNoaXRlY3R1cmUiICUgYSkKKworZGVmIGdldF9sbHZtX3RhcmdldF9hcmNoKGJiLCBkKToKKyAgICByZXR1cm4gZ2V0X2xsdm1fYXJjaChiYiwgZCwgJ1RBUkdFVF9BUkNIJykKKyMKKyMgRGVmYXVsdCB0byBidWlsZCBhbGwgT0UtQ29yZSBzdXBwb3J0ZWQgdGFyZ2V0IGFyY2hlcyAodXNlciBvdmVycmlkYWJsZSkuCisjCitMTFZNX1RBUkdFVFMgPz0gIiR7QGdldF9sbHZtX3RhcmdldF9hcmNoKGJiLCBkKX0iCitMTFZNX1RBUkdFVFNfcHJlcGVuZF94ODYgPSAiQU1ER1BVOyIKK0xMVk1fVEFSR0VUU19wcmVwZW5kX3g4Ni02NCA9ICJBTURHUFU7IgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjR0ID0gImFybSIKKworRVhUUkFfT0VDTUFLRSArPSAiLURMTFZNX0VOQUJMRV9BU1NFUlRJT05TPU9GRiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fRU5BQkxFX0VYUEVOU0lWRV9DSEVDS1M9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9FTkFCTEVfUElDPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9CSU5ESU5HU19MSVNUPScnIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9MSU5LX0xMVk1fRFlMSUI9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0VOQUJMRV9GRkk9T04gXAorICAgICAgICAgICAgICAgICAgLURGRklfSU5DTFVERV9ESVI9JChwa2ctY29uZmlnIC0tdmFyaWFibGU9aW5jbHVkZWRpciBsaWJmZmkpIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9PUFRJTUlaRURfVEFCTEVHRU49T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ9IiR7TExWTV9UQVJHRVRTfSIgXAorICAgICAgICAgICAgICAgICAgLUcgTmluamEiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HOkJPT0w9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX1RBQkxFR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLXRibGdlbiR7UFZ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9DUk9TU0NPTVBJTElORzpCT09MPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9UQUJMRUdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS10YmxnZW4ke1BWfSBcCisgICAgICAgICAgICAgICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisjIEZpeCBwYXRocyBpbiBsbHZtLWNvbmZpZworCXNlZCAtaSAic3xzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSlcLnN0cigpfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoc3lzOjpwYXRoOjpwYXJlbnRfcGF0aChDdXJyZW50UGF0aCkpKS5zdHIoKXxnIiAke1N9L3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAorCXNlZCAtcmkgInMjLyhiaW58aW5jbHVkZXxsaWIpKC8/XCIpIy9cMS8ke0xMVk1fRElSfVwyI2ciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCisJc2VkIC1yaSAicyNsaWIvJHtMTFZNX0RJUn0jJHtiYXNlbGlifS8ke0xMVk1fRElSfSNnIiAke1N9L3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAorfQorCitkb19jb21waWxlKCkgeworCU5JTkpBX1NUQVRVUz0iWyVwXSAiIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJTklOSkFfU1RBVFVTPSJbJXBdICIgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfSBsbHZtLWNvbmZpZyBsbHZtLXRibGdlbgorfQorCitkb19pbnN0YWxsKCkgeworCU5JTkpBX1NUQVRVUz0iWyVwXSAiIERFU1RESVI9JHtMTFZNX0lOU1RBTExfRElSfSBuaW5qYSAtdiBpbnN0YWxsCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vYmluL2xsdm0tY29uZmlnICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGx2bS1jb25maWcKKworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke0xMVk1fRElSfQorCWNwIC1yICR7TExWTV9JTlNUQUxMX0RJUn0ke2JpbmRpcn0vKiAke0R9JHtiaW5kaXJ9LyR7TExWTV9ESVJ9LworCisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfQorCWNwIC1yICR7TExWTV9JTlNUQUxMX0RJUn0ke2luY2x1ZGVkaXJ9LyogJHtEfSR7aW5jbHVkZWRpcn0vJHtMTFZNX0RJUn0vCisKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0KKworCSMgVGhlIExMVk0gc291cmNlcyBoYXZlICIvbGliIiBlbWJlZGRlZCBhbmQgc28gd2UgY2Fubm90IGNvbXBsZXRlbHkgcmVseSBvbiB0aGUgJHtsaWJkaXJ9IHZhcmlhYmxlCisJaWYgWyAtZCAke0xMVk1fSU5TVEFMTF9ESVJ9JHtsaWJkaXJ9LyBdOyB0aGVuCisJCWNwIC1yICR7TExWTV9JTlNUQUxMX0RJUn0ke2xpYmRpcn0vKiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9LworCWVsaWYgWyAtZCAke0xMVk1fSU5TVEFMTF9ESVJ9JHtwcmVmaXh9L2xpYiBdOyB0aGVuCisJCWNwIC1yICR7TExWTV9JTlNUQUxMX0RJUn0ke3ByZWZpeH0vbGliLyogJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfS8KKwllbGlmIFsgLWQgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9saWI2NCBdOyB0aGVuCisJCWNwIC1yICR7TExWTV9JTlNUQUxMX0RJUn0ke3ByZWZpeH0vbGliNjQvKiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9LworCWZpCisKKwkjIFJlbW92ZSB1bm5lY2Vzc2FyeSBjbWFrZSBmaWxlcworCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2NtYWtlCisKKwlsbiAtcyAke0xMVk1fRElSfS9saWJMTFZNLSR7UFZ9JHtTT0xJQlNERVZ9ICR7RH0ke2xpYmRpcn0vbGliTExWTS0ke1BWfSR7U09MSUJTREVWfQorCisJIyBXZSdsbCBoYXZlIHRvIGRlbGV0ZSB0aGUgbGliTExWTS5zbyBkdWUgdG8gbXVsdGlwbGUgcmVhc29ucy4uLgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xpYkxMVk0uc28KKwlybSAtcmYgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfS9saWJMVE8uc28KK30KK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2Jpbi9sbHZtLXRibGdlbiAke0R9JHtiaW5kaXJ9L2xsdm0tdGJsZ2VuJHtQVn0KKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9iaW4vbGx2bS1jb25maWcgJHtEfSR7YmluZGlyfS9sbHZtLWNvbmZpZyR7UFZ9CisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vbGliL2xpYkxMVk0tJHtQVn0uc28gJHtEfSR7bGliZGlyfS9saWJMTFZNLSR7UFZ9LnNvCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS1idWdwb2ludHBhc3NlcyAke1BOfS1sbHZtaGVsbG8iCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tc3RhdGljZGV2ID0gIjEiCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiIgorRklMRVNfJHtQTn0tZGJnID0gIiBcCisgICAgJHtiaW5kaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1ZyBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1Zy9CdWdwb2ludFBhc3Nlcy5zbyBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1Zy9MTFZNSGVsbG8uc28gXAorICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS8uZGVidWcvbGliTFRPLnNvKiBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1Zy9sbHZtLWNvbmZpZyBcCisgICAgL3Vzci9zcmMvZGVidWcgXAorIgorCitGSUxFU18ke1BOfS1kZXYgPSAiIFwKKyAgICAke2JpbmRpcn0vJHtMTFZNX0RJUn0gXAorICAgICR7aW5jbHVkZWRpcn0vJHtMTFZNX0RJUn0gXAorICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS9sbHZtLWNvbmZpZyBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRldiArPSAiJHtQTn0tYnVncG9pbnRwYXNzZXMgJHtQTn0tbGx2bWhlbGxvIgorCitGSUxFU18ke1BOfS1idWdwb2ludHBhc3NlcyA9ICJcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9L0J1Z3BvaW50UGFzc2VzLnNvIFwKKyIKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xpYkxUTy5zby4qIFwKKyIKKworRklMRVNfJHtQTn0tbGx2bWhlbGxvID0gIlwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vTExWTUhlbGxvLnNvIFwKKyIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJebGlibGx2bSR7TExWTV9SRUxFQVNFfS0uKiQiCitOT0FVVE9QQUNLQUdFREVCVUcgPSAiMSIKKworSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJsbHZtJHtMTFZNX1JFTEVBU0V9LWxsdm0tJHtMTFZNX1JFTEVBU0V9LiR7UEFUQ0hfVkVSU0lPTn0gKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlibGx2bSR7TExWTV9SRUxFQVNFfS1sbHZtLSR7TExWTV9SRUxFQVNFfSArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJsbHZtJHtMTFZNX1JFTEVBU0V9LWxsdm0gKz0gImRldi1zbyIKKworcHl0aG9uIGxsdm1fcG9wdWxhdGVfcGFja2FnZXMoKSB7CisgICAgbGliZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZGlyfScsIGQpCisgICAgbGlibGx2bV9saWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9LyR7TExWTV9ESVJ9JywgZCkKKyAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJsbHZtX2xpYmRpcisnLy5kZWJ1ZycsICdebGliKC4qKVwuc28kJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMtZGJnJywgJ1NwbGl0IGRlYnVnIHBhY2thZ2UgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlKQorICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWJsbHZtJHtMTFZNX1JFTEVBU0V9LSVzJywgJ1NwbGl0IHBhY2thZ2UgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlLCBhbGxvd19saW5rcz1UcnVlLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJsbHZtX2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWJsbHZtJHtMTFZNX1JFTEVBU0V9LSVzLXN0YXRpY2RldicsICdTcGxpdCBzdGF0aWNkZXYgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUpCisgICAgaWYgc3BsaXRfcGFja2FnZXM6CisgICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiwgJyAnKycgJy5qb2luKHNwbGl0X3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiArICctZGJnJywgJyAnKycgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJysnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQorfQorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gImxsdm1fcG9wdWxhdGVfcGFja2FnZXMgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jCmluZGV4IDRhODM5MjkuLjIwMDI1OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJUcmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3NvciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbTQvbTQuaHRtbCIKIERFU0NSSVBUSU9OID0gIkdOVSBtNCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdHJhZGl0aW9uYWwgVW5peCBtYWNybyBwcm9jZXNzb3IuICBJdCBpcyBtb3N0bHkgU1ZSNCBcCiBjb21wYXRpYmxlIGFsdGhvdWdoIGl0IGhhcyBzb21lIGV4dGVuc2lvbnMgKGZvciBleGFtcGxlLCBoYW5kbGluZyBtb3JlIHRoYW4gOSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgdG8gbWFjcm9zKS4gXAogR05VIE00IGFsc28gaGFzIGJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgaW5jbHVkaW5nIGZpbGVzLCBydW5uaW5nIHNoZWxsIGNvbW1hbmRzLCBkb2luZyBhcml0aG1ldGljLCBldGMuIgpAQCAtNiw1ICs3LDQgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogRVhUUkFfT0VNQUtFICs9ICInaW5mb2Rpcj0ke2luZm9kaXJ9JyIKLUxERkxBR1NfcHJlcGVuZF9saWJjLXVjbGliYyA9ICIgLWxydCAiCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbTQvbTQtJHtQVn0udGFyLmd6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I2ZmFhOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMKQEAgLTAsMCArMSwzNDggQEAKKzB4ZmMsIDB4ZmEsIDB4YTMsIDB4OWMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODksIDB4MWQsIDB4YTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ODMsIDB4ZmMsIDB4MDAsCisweDc0LCAweDA5LCAweDhiLCAweDQ0LCAweDI0LCAweDA0LCAweGEzLCAweGE0LCAweDAyLCAweDAxLCAweDAwLCAweDhiLCAweDI1LCAweDgwLCAweDE0LCAweDAxLAorMHgwMCwgMHg2YSwgMHgwMCwgMHg5ZCwgMHgzMSwgMHhjMCwgMHhiZiwgMHhiOCwgMHgxNSwgMHgwMSwgMHgwMCwgMHhiOSwgMHg0NCwgMHg1OCwgMHgwMSwgMHgwMCwKKzB4MjksIDB4ZjksIDB4ZmMsIDB4ZjMsIDB4YWEsIDB4YmUsIDB4YmEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YmYsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4YjksCisweDcwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGE0LCAweDBmLCAweDAxLCAweDE1LCAweGI0LCAweDAyLCAweDAxLCAweDAwLCAweDBmLCAweDAxLCAweDFkLAorMHhhZSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhiOCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZSwgMHhkOCwgMHg4ZSwgMHhjMCwgMHg4ZSwgMHhlMCwgMHg4ZSwKKzB4ZTgsIDB4OGUsIDB4ZDAsIDB4NjgsIDB4OTAsIDB4MTQsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsIDB4YTQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsCisweGEwLCAweDAyLCAweDAxLCAweDAwLCAweGZmLCAweDM1LCAweDljLCAweDAyLCAweDAxLCAweDAwLCAweGU4LCAweGUzLCAweDA4LCAweDAwLCAweDAwLCAweDg5LAorMHhjNiwgMHg4MywgMHhjNCwgMHgxMCwgMHg2YSwgMHgwMCwgMHg5ZCwgMHgzMSwgMHhkYiwgMHhhMSwgMHhhYywgMHgxNCwgMHgwMSwgMHgwMCwgMHg4MywgMHhmOCwKKzB4MDEsIDB4NzQsIDB4MTMsIDB4MzEsIDB4YzAsIDB4MzEsIDB4YzksIDB4MzEsIDB4ZDIsIDB4MzEsIDB4ZmYsIDB4MzEsIDB4ZWQsIDB4NmEsIDB4MTAsIDB4YTEsCisweGE4LCAweDE0LCAweDAxLCAweDAwLCAweDUwLCAweGNiLCAweDg5LCAweGYwLCAweGJlLCAweDJhLCAweDAzLCAweDAxLCAweDAwLCAweGJmLCAweDAwLCAweDIwLAorMHgwMiwgMHgwMCwgMHhiOSwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmMywgMHhhNCwgMHg4OSwgMHhjNiwgMHgwZiwgMHgwMSwgMHgxNSwgMHgyYSwgMHgwMywKKzB4MDEsIDB4MDAsIDB4MzEsIDB4YzAsIDB4MGYsIDB4YmEsIDB4ZTgsIDB4MDUsIDB4MGYsIDB4MjIsIDB4ZTAsIDB4YmYsIDB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsCisweDMxLCAweGMwLCAweGI5LCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweGYzLCAweGFiLCAweGJmLCAweDAwLCAweDMwLCAweDAyLCAweDAwLCAweDhkLCAweDg3LAorMHgwNywgMHgxMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHhiZiwgMHgwMCwgMHg0MCwgMHgwMiwgMHgwMCwgMHg4ZCwgMHg4NywgMHgwNywgMHgxMCwgMHgwMCwKKzB4MDAsIDB4YjksIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4MDcsIDB4MDUsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4YzcsIDB4MDgsCisweDQ5LCAweDc1LCAweGYzLCAweGJmLCAweDAwLCAweDUwLCAweDAyLCAweDAwLCAweGI4LCAweDgzLCAweDAxLCAweDAwLCAweDAwLCAweGI5LCAweDAwLCAweDA4LAorMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHgwNSwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHg4MywgMHhjNywgMHgwOCwgMHg0OSwgMHg3NSwgMHhmMywgMHhiOCwKKzB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4MGYsIDB4MjIsIDB4ZDgsIDB4YjksIDB4ODAsIDB4MDAsIDB4MDAsIDB4YzAsIDB4MGYsIDB4MzIsIDB4MGYsIDB4YmEsCisweGU4LCAweDA4LCAweDBmLCAweDMwLCAweDZhLCAweDEwLCAweGExLCAweGE4LCAweDE0LCAweDAxLCAweDAwLCAweDUwLCAweDMxLCAweGMwLCAweDBmLCAweGJhLAorMHhlOCwgMHgxZiwgMHgwZiwgMHhiYSwgMHhlOCwgMHgwMCwgMHgwZiwgMHgyMiwgMHhjMCwgMHhjYiwgMHg1NSwgMHg4OSwgMHhlNSwgMHg1MywgMHg1NiwgMHg1NywKKzB4OGIsIDB4N2QsIDB4MDgsIDB4ODEsIDB4ZWYsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4OGIsIDB4NzUsIDB4MGMsIDB4NTYsIDB4ZTgsIDB4ZmMsIDB4MDAsCisweDAwLCAweDAwLCAweDY2LCAweDMxLCAweGRiLCAweDY2LCAweGI4LCAweDIwLCAweGU4LCAweDAwLCAweDAwLCAweDY2LCAweGJhLCAweDUwLCAweDQxLCAweDRkLAorMHg1MywgMHg2NiwgMHhiOSwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjZCwgMHgxNSwgMHg3MiwgMHgxOCwgMHg2NiwgMHgzZCwgMHg1MCwgMHg0MSwgMHg0ZCwKKzB4NTMsIDB4NzUsIDB4MTAsIDB4NjYsIDB4NGUsIDB4NjYsIDB4ODUsIDB4ZjYsIDB4NzQsIDB4MDksIDB4ODMsIDB4YzcsIDB4MTQsIDB4NjYsIDB4ODMsIDB4ZmIsCisweDAwLCAweDc1LCAweGQyLCAweDY2LCAweGU4LCAweDgyLCAweDAwLCAweDAwLCAweDAwLCAweDU4LCAweDI5LCAweGYwLCAweDVmLCAweDVlLCAweDViLCAweDg5LAorMHhlYywgMHg1ZCwgMHhjMywgMHg1MywgMHg1NiwgMHg1NywgMHhlOCwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmOSwgMHgzMSwgMHhjOSwgMHgzMSwgMHhkMiwKKzB4YjgsIDB4MDEsIDB4ZTgsIDB4Y2QsIDB4MTUsIDB4NzIsIDB4MjgsIDB4ODMsIDB4ZjksIDB4MDAsIDB4NzUsIDB4MDksIDB4ODMsIDB4ZmEsIDB4MDAsIDB4NzUsCisweDA0LCAweDg5LCAweGMxLCAweDg5LCAweGRhLCAweDY2LCAweDgxLCAweGUyLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGMxLCAweGUyLCAweDA2LAorMHg2NiwgMHg4OSwgMHhkMCwgMHg2NiwgMHg4MSwgMHhlMSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg2NiwgMHgwMSwgMHhjOCwgMHhlYiwgMHgwMywgMHg2NiwKKzB4MzEsIDB4YzAsIDB4NjYsIDB4ZTgsIDB4MzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4YzMsIDB4NTMsIDB4NTYsIDB4NTcsIDB4ZTgsCisweDZhLCAweDAwLCAweDAwLCAweDAwLCAweGI0LCAweDg4LCAweGNkLCAweDE1LCAweDY2LCAweDI1LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGU4LAorMHgxNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHhjMywgMHhlOCwgMHg1MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhjZCwgMHgxMiwgMHg4OSwKKzB4YzEsIDB4NjYsIDB4ZTgsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODksIDB4YzgsIDB4YzMsIDB4ZmEsIDB4MmUsIDB4NjcsIDB4MGYsIDB4MDEsCisweDE1LCAweGI0LCAweDAyLCAweDAwLCAweDAwLCAweDBmLCAweDIwLCAweGMwLCAweDY2LCAweDgzLCAweGM4LCAweDAxLCAweDBmLCAweDIyLCAweGMwLCAweDY2LAorMHhlYSwgMHgzNywgMHgwMiwgMHgwMSwgMHgwMCwgMHgxMCwgMHgwMCwgMHhiOCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZSwgMHhkOCwgMHg4ZSwgMHhjMCwKKzB4OGUsIDB4ZDAsIDB4ODEsIDB4YzQsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzEsIDB4YzAsIDB4OGUsIDB4ZTAsIDB4OGUsIDB4ZTgsIDB4NTgsIDB4MDUsCisweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDUwLCAweDJlLCAweDBmLCAweDAxLCAweDFkLCAweGFlLCAweDAyLCAweDAxLCAweDAwLCAweGMzLCAweDU4LCAweDJkLAorMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHg4MSwgMHhlYywgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHhlYSwgMHg3MiwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4MDgsIDB4MDAsIDB4MGYsIDB4MjAsIDB4YzAsIDB4NjYsIDB4ODMsIDB4ZTAsIDB4ZmUsIDB4MGYsIDB4MjIsIDB4YzAsIDB4NjYsIDB4ZWEsIDB4ODQsIDB4MDIsCisweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDhjLCAweGM4LCAweDhlLCAweGQ4LCAweDhlLCAweGMwLCAweDhlLCAweGQwLCAweDhlLCAweGUwLCAweDhlLCAweGU4LAorMHgyZSwgMHg2NywgMHgwZiwgMHgwMSwgMHgxZCwgMHhhOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhmYiwgMHg2NiwgMHhjMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDZmLCAweDAwLCAweDAwLCAweDEwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5YiwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKKzB4Y2YsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDEsIDB4OTMsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAorMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMiwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCisweGFmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweDU1LCAweDg5LCAweGMxLCAweDg5LCAweGU1LCAweGJhLAorMHhmZCwgMHgwMywgMHgwMCwgMHgwMCwgMHhlYywgMHhhOCwgMHgyMCwgMHg3NCwgMHhmYiwgMHhiYSwgMHhmOCwgMHgwMywgMHgwMCwgMHgwMCwgMHg4OCwgMHhjOCwKKzB4ZWUsIDB4YmEsIDB4ZmQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4ZWMsIDB4YTgsIDB4NDAsIDB4NzQsIDB4ZmIsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODMsIDB4ZjgsCisweDBhLCAweDg5LCAweGU1LCAweDUzLCAweDg5LCAweGMzLCAweDc1LCAweDBhLCAweGI4LCAweDBkLCAweDAwLCAweDAwLCAweDAwLCAweGU4LCAweGM4LCAweGZmLAorMHhmZiwgMHhmZiwgMHg4OSwgMHhkOCwgMHg1YiwgMHg1ZCwgMHhlYiwgMHhjMiwgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywKKzB4NDQsIDB4OGQsIDB4NWQsIDB4MGMsIDB4OGIsIDB4N2QsIDB4MDgsIDB4MGYsIDB4YmUsIDB4MDcsIDB4ODQsIDB4YzAsIDB4MGYsIDB4ODQsIDB4NjgsIDB4MDEsCisweDAwLCAweDAwLCAweDNjLCAweDI1LCAweDc0LCAweDBkLCAweGU4LCAweGMyLCAweGZmLCAweGZmLCAweGZmLCAweDg5LCAweDdkLCAweGJjLCAweGU5LCAweDRlLAorMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg0NywgMHgwMSwgMHg4OSwgMHg0NSwgMHhiYywgMHg4YSwgMHg0NywgMHgwMSwgMHgzYywgMHg3MywgMHg3NSwgMHgxYSwKKzB4ODksIDB4ZDgsIDB4ODMsIDB4YzMsIDB4MDQsIDB4OGIsIDB4MzAsIDB4MGYsIDB4YmUsIDB4MDYsIDB4ODQsIDB4YzAsIDB4MGYsIDB4ODQsIDB4MmYsIDB4MDEsCisweDAwLCAweDAwLCAweGU4LCAweDk2LCAweGZmLCAweGZmLCAweGZmLCAweDQ2LCAweGViLCAweGVkLCAweDNjLCAweDRjLCAweDc1LCAweDBkLCAweDhkLCAweDQ3LAorMHgwMiwgMHhiZSwgMHgzYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgzOCwgMHgzYywgMHg2YywgMHg3NSwgMHgwZCwgMHg4ZCwKKzB4NDcsIDB4MDIsIDB4YmUsIDB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NDUsIDB4YmMsIDB4ZWIsIDB4MjcsIDB4YmUsIDB4MWMsIDB4MDAsIDB4MDAsCisweDAwLCAweDNjLCAweDY4LCAweDc1LCAweDFlLCAweDgwLCAweDdmLCAweDAyLCAweDY4LCAweDc0LCAweDBkLCAweDhkLCAweDQ3LCAweDAyLCAweGJlLCAweDBjLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgwYiwgMHg4ZCwgMHg0NywgMHgwMywgMHhiZSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4ODksIDB4NDUsIDB4YmMsIDB4OGIsIDB4NDUsIDB4YmMsIDB4OGEsIDB4MDAsIDB4ODgsIDB4YzIsIDB4ODMsIDB4Y2EsIDB4MjAsIDB4ODAsIDB4ZmEsIDB4NzgsCisweDc1LCAweDViLCAweDhiLCAweDEzLCAweDgzLCAweGZlLCAweDFjLCAweDdlLCAweDBlLCAweDhiLCAweDRiLCAweDA0LCAweDg5LCAweDU1LCAweGIwLCAweDg5LAorMHg0ZCwgMHhiNCwgMHg4MywgMHhjMywgMHgwOCwgMHhlYiwgMHgwYiwgMHgzMSwgMHhjOSwgMHg4OSwgMHg1NSwgMHhiMCwgMHg4OSwgMHg0ZCwgMHhiNCwgMHg4MywKKzB4YzMsIDB4MDQsIDB4ODMsIDB4ZTAsIDB4MjAsIDB4OGQsIDB4N2QsIDB4YzgsIDB4ODgsIDB4NDUsIDB4YmIsIDB4ODksIDB4ZjEsIDB4OGIsIDB4NTUsIDB4YjQsCisweDhiLCAweDQ1LCAweGIwLCAweDBmLCAweGFkLCAweGQwLCAweGQzLCAweGVhLCAweGY2LCAweGMxLCAweDIwLCAweDc0LCAweDAyLCAweDg5LCAweGQwLCAweDgzLAorMHhlMCwgMHgwZiwgMHg4YSwgMHg1NSwgMHhiYiwgMHg0NywgMHgwYSwgMHg5MCwgMHgxNCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg4OCwgMHg1NywgMHhmZiwgMHg4MywKKzB4ZTksIDB4MDQsIDB4NzksIDB4ZDksIDB4YzEsIDB4ZWUsIDB4MDIsIDB4OGQsIDB4NzQsIDB4MzUsIDB4YzksIDB4ZWIsIDB4NjIsIDB4M2MsIDB4NjQsIDB4NzUsCisweDRhLCAweDhiLCAweDAzLCAweDgzLCAweGZlLCAweDFjLCAweDdlLCAweDA1LCAweDgzLCAweGMzLCAweDA4LCAweGViLCAweDAzLCAweDgzLCAweGMzLCAweDA0LAorMHg4ZCwgMHg0ZCwgMHhjOCwgMHg4NSwgMHhjMCwgMHg3OSwgMHgwOSwgMHhjNiwgMHg0NSwgMHhjOCwgMHgyZCwgMHg4ZCwgMHg0ZCwgMHhjOSwgMHhmNywgMHhkOCwKKzB4ODksIDB4Y2UsIDB4YmYsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTksIDB4NDYsIDB4ZjcsIDB4ZmYsIDB4ODMsIDB4YzIsIDB4MzAsIDB4ODUsIDB4YzAsCisweDg4LCAweDU2LCAweGZmLCAweDc1LCAweGYyLCAweDg5LCAweGYwLCAweDQ4LCAweDM5LCAweGMxLCAweDczLCAweDIzLCAweDBmLCAweGI2LCAweDM4LCAweDhhLAorMHgxMSwgMHg0MSwgMHg4OCwgMHgxMCwgMHg4OSwgMHhmYSwgMHg4OCwgMHg1MSwgMHhmZiwgMHhlYiwgMHhlYywgMHgzYywgMHg2MywgMHg3NSwgMHgwYSwgMHg4YiwKKzB4MDMsIDB4ODMsIDB4YzMsIDB4MDQsIDB4ODgsIDB4NDUsIDB4YzgsIDB4ZWIsIDB4MDMsIDB4ODgsIDB4NDUsIDB4YzgsIDB4OGQsIDB4NzUsIDB4YzksIDB4OGQsCisweDdkLCAweGM4LCAweDM5LCAweGY3LCAweDczLCAweDBiLCAweDBmLCAweGJlLCAweDA3LCAweDQ3LCAweGU4LCAweDZlLCAweGZlLCAweGZmLCAweGZmLCAweGViLAorMHhmMSwgMHg4YiwgMHg3ZCwgMHhiYywgMHg0NywgMHhlOSwgMHg4ZCwgMHhmZSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHg0NCwgMHg1YiwgMHg1ZSwgMHg1ZiwKKzB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzksIDB4ODksIDB4ZTUsIDB4NTYsIDB4NTMsIDB4MzEsIDB4ZGIsIDB4ODMsIDB4ZWMsIDB4MTAsIDB4MzksIDB4ZDMsCisweDc0LCAweDIzLCAweDBmLCAweGI2LCAweDM0LCAweDE4LCAweGY2LCAweGMzLCAweDAxLCAweDc0LCAweDAzLCAweGMxLCAweGU2LCAweDA4LCAweDAxLCAweGYxLAorMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NiwgMHgwYSwgMHg4OSwgMHhjZSwgMHhjMSwgMHhlZSwgMHgxMCwgMHgwMSwgMHhmMSwgMHgwZiwKKzB4YjcsIDB4YzksIDB4NDMsIDB4ZWIsIDB4ZDksIDB4ODgsIDB4NGQsIDB4ZjYsIDB4YzEsIDB4ZTksIDB4MDgsIDB4ODgsIDB4NGQsIDB4ZjcsIDB4MGYsIDB4YjcsCisweDQ1LCAweGY2LCAweDgzLCAweGM0LCAweDEwLCAweDViLCAweDVlLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDg5LAorMHhjMywgMHg1MSwgMHg4OSwgMHg1NSwgMHhmMCwgMHgzYiwgMHg1ZCwgMHhmMCwgMHg3MywgMHg1ZiwgMHg4MSwgMHgzYiwgMHg0YywgMHg0MiwgMHg0OSwgMHg0ZiwKKzB4NzQsIDB4MDUsIDB4ODMsIDB4YzMsIDB4MTAsIDB4ZWIsIDB4ZWUsIDB4ODMsIDB4N2IsIDB4MDQsIDB4MTgsIDB4NzUsIDB4ZjUsIDB4YmEsIDB4MTgsIDB4MDAsCisweDAwLCAweDAwLCAweDg5LCAweGQ4LCAweGU4LCAweDg5LCAweGZmLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDY2LCAweDg1LCAweGMwLCAweDc1LCAweGUyLAorMHg4ZCwgMHg3MywgMHgxOCwgMHg4YiwgMHg1MywgMHgwYywgMHg4OSwgMHhmMCwgMHhlOCwgMHg3NSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmNywgMHhkMCwgMHgwZiwKKzB4YjcsIDB4YzAsIDB4MzksIDB4NDMsIDB4MTAsIDB4NzUsIDB4Y2IsIDB4OGIsIDB4NGIsIDB4MGMsIDB4MzEsIDB4YzAsIDB4MDEsIDB4ZjEsIDB4MzksIDB4ZjEsCisweDc2LCAweDEwLCAweDg5LCAweGNmLCAweDhiLCAweDU2LCAweDA0LCAweDI5LCAweGY3LCAweDM5LCAweGZhLCAweDc3LCAweDA1LCAweDQwLCAweDAxLCAweGQ2LAorMHhlYiwgMHhlYywgMHgzOSwgMHg0MywgMHgxNCwgMHg3NSwgMHhhYiwgMHhlYiwgMHgwMiwgMHgzMSwgMHhkYiwgMHg1YSwgMHg4OSwgMHhkOCwgMHg1YiwgMHg1ZSwKKzB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4YmEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODksIDB4YzMsCisweDMxLCAweGMwLCAweDUxLCAweGU4LCAweDcxLCAweGZmLCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDE3LCAweGJhLCAweDAwLCAweDAwLCAweDEwLAorMHgwMCwgMHhiOCwgMHgwMCwgMHgwMCwgMHgwZiwgMHgwMCwgMHhlOCwgMHg1ZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4NSwgMHhjMCwgMHg3NSwgMHgwNCwgMHgzMSwKKzB4YzAsIDB4ZWIsIDB4MmYsIDB4OGIsIDB4NTAsIDB4MDQsIDB4MDEsIDB4YzIsIDB4ODMsIDB4M2EsIDB4MTEsIDB4NzUsIDB4MTYsIDB4OGIsIDB4NzIsIDB4MDgsCisweDg5LCAweGYyLCAweDg5LCAweGYwLCAweDgxLCAweGMyLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweGU4LCAweDNhLCAweGZmLCAweGZmLCAweGZmLCAweDg1LAorMHhjMCwgMHg3NCwgMHhkYywgMHg4OSwgMHg0MywgMHgyOCwgMHhjNywgMHg0MywgMHgyNCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiOCwgMHgwMSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4NWEsIDB4NWIsIDB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODMsIDB4ZWMsCisweDE0LCAweDg5LCAweDU1LCAweGU4LCAweDhiLCAweDc1LCAweDBjLCAweDhiLCAweDVkLCAweDA4LCAweDg5LCAweDc1LCAweGU0LCAweDg5LCAweDRkLCAweGVjLAorMHgwZiwgMHhiNiwgMHhiMCwgMHhlOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4OSwgMHg1ZCwgMHhlMCwgMHg4YiwgMHg3ZCwgMHgxMCwgMHg4MywgMHhmZSwgMHgxZiwKKzB4N2YsIDB4MzIsIDB4ODksIDB4ZjMsIDB4NmIsIDB4ZjYsIDB4MTQsIDB4MDEsIDB4YzYsIDB4NDMsIDB4ODksIDB4OTYsIDB4ZDAsIDB4MDIsIDB4MDAsIDB4MDAsCisweDg5LCAweDhlLCAweGQ0LCAweDAyLCAweDAwLCAweDAwLCAweDhiLCAweDU1LCAweGUwLCAweDhiLCAweDRkLCAweGU0LCAweDg5LCAweDk2LCAweGQ4LCAweDAyLAorMHgwMCwgMHgwMCwgMHg4OSwgMHg4ZSwgMHhkYywgMHgwMiwgMHgwMCwgMHgwMCwgMHg4OSwgMHhiZSwgMHhlMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4OCwgMHg5OCwKKzB4ZTgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NGYsIDB4NzUsIDB4NjUsIDB4OGIsIDB4NWQsIDB4ZTAsIDB4OGIsIDB4NzUsIDB4ZTQsIDB4MDMsIDB4NWQsIDB4ZTgsCisweDEzLCAweDc1LCAweGVjLCAweDg5LCAweGQ5LCAweDg5LCAweGYzLCAweGJlLCAweGZmLCAweGZmLCAweDNmLCAweDAwLCAweDgxLCAweGZiLCAweGZmLCAweDAzLAorMHgwMCwgMHgwMCwgMHg3NywgMHgxMywgMHgwZiwgMHhhYywgMHhkOSwgMHgwYSwgMHg4OSwgMHhjZSwgMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwKKzB4NzYsIDB4MDUsIDB4YmUsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4OGIsIDB4YjgsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OTcsIDB4MDAsCisweDA0LCAweDAwLCAweDAwLCAweDM5LCAweGYyLCAweDczLCAweDI1LCAweDhkLCAweDk2LCAweDAwLCAweGZjLCAweGZmLCAweGZmLCAweDg5LCAweDkwLCAweGUwLAorMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHhmYSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NywgMHgwYiwgMHg2NiwgMHg4MSwgMHhlZSwgMHgwMCwgMHgwNCwKKzB4NjYsIDB4ODksIDB4NzAsIDB4MDIsIDB4ZWIsIDB4MDYsIDB4NjYsIDB4YzcsIDB4NDAsIDB4MDIsIDB4MDAsIDB4ZmMsIDB4ODMsIDB4YzQsIDB4MTQsIDB4NWIsCisweDVlLCAweDVmLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweGVjLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LAorMHg4YiwgMHg1NSwgMHgwOCwgMHg2NiwgMHhlZCwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg1NSwgMHgwOCwgMHhlZCwgMHg1ZCwgMHhjMywKKzB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NTUsIDB4MGMsIDB4ZWUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsCisweDQ1LCAweDA4LCAweDhiLCAweDU1LCAweDBjLCAweDY2LCAweGVmLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDQ1LCAweDA4LCAweDhiLAorMHg1NSwgMHgwYywgMHhlZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjMCwgMHg4OSwgMHhlNSwgMHg4YiwgMHg1NSwgMHgwOCwgMHgzYiwgMHg0NSwgMHgwYywKKzB4NzQsIDB4MDksIDB4ODAsIDB4M2MsIDB4MDIsIDB4MDAsIDB4NzQsIDB4MDMsIDB4NDAsIDB4ZWIsIDB4ZjIsIDB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4ZDIsCisweDg5LCAweGU1LCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDRkLCAweDBjLCAweDNiLCAweDU1LCAweDEwLCAweDc0LCAweDA2LCAweDg4LCAweDBjLCAweDEwLAorMHg0MiwgMHhlYiwgMHhmNSwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhkMiwgMHg4OSwgMHhlNSwgMHg1MywgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg0ZCwKKzB4MGMsIDB4M2IsIDB4NTUsIDB4MTAsIDB4NzQsIDB4MDksIDB4OGEsIDB4MWMsIDB4MTEsIDB4ODgsIDB4MWMsIDB4MTAsIDB4NDIsIDB4ZWIsIDB4ZjIsIDB4NWIsCisweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGM5LCAweDg5LCAweGU1LCAweDNiLCAweDRkLCAweDEwLCAweDc0LCAweDE3LCAweDhiLCAweDQ1LCAweDA4LCAweDBmLAorMHhiNiwgMHgxMCwgMHg4YiwgMHg0NSwgMHgwYywgMHgwZiwgMHhiNiwgMHgwMCwgMHgzOCwgMHhjMiwgMHg3NCwgMHgwNCwgMHgyOSwgMHhkMCwgMHhlYiwgMHgwNSwKKzB4NDEsIDB4ZWIsIDB4ZTQsIDB4MzEsIDB4YzAsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4OGIsIDB4NDUsIDB4MDgsCisweDY4LCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDRkLCAweDEwLCAweDhkLCAweDk4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDUzLCAweGU4LAorMHg3MSwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwMSwgMHhjMywgMHg1ZSwgMHg4MSwgMHhmOSwgMHhmZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg4ZCwgMHg3MywKKzB4MDEsIDB4YzYsIDB4MDMsIDB4MjAsIDB4N2UsIDB4MDUsIDB4YjksIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTEsIDB4ZmYsIDB4NzUsIDB4MGMsIDB4ZTgsCisweDUxLCAweGZmLCAweGZmLCAweGZmLCAweDVhLCAweDU5LCAweDUwLCAweGZmLCAweDc1LCAweDBjLCAweDg5LCAweGM3LCAweDU2LCAweGU4LCAweDczLCAweGZmLAorMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgwYywgMHhjNiwgMHg0NCwgMHgzYiwgMHgwMSwgMHgwMCwgMHg4ZCwgMHg2NSwgMHhmNCwgMHg1YiwgMHg1ZSwgMHg1ZiwKKzB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MTAsIDB4OGIsIDB4NTUsIDB4MGMsIDB4ODksIDB4NDUsIDB4MGMsIDB4OGIsIDB4NDUsCisweDA4LCAweDg5LCAweDU1LCAweDEwLCAweDhiLCAweDQwLCAweDEwLCAweDg5LCAweDQ1LCAweDA4LCAweDVkLCAweGViLCAweDhhLCAweDU1LCAweDg5LCAweGU1LAorMHg1NywgMHg1NiwgMHg1MywgMHg4YiwgMHg1ZCwgMHgwOCwgMHg2OCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHgwMCwgMHhmZiwgMHg3MywgMHgxMCwKKzB4ZTgsIDB4MTgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4NDMsIDB4MTAsIDB4YzcsIDB4NDAsIDB4MGUsIDB4MTksIDB4MDEsIDB4MTAsIDB4MDAsIDB4YzcsCisweDAwLCAweDAwLCAweDE5LCAweDAwLCAweDAwLCAweGM3LCAweDQwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweGM2LCAweDgwLCAweGU4LCAweDAxLAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZCwgMHhiOCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg2NiwgMHhjNywgMHg0MCwgMHgwYSwgMHgwMCwgMHgwMCwgMHhjNywKKzB4NDAsIDB4MjAsIDB4M2YsIDB4YTMsIDB4MDAsIDB4MDgsIDB4ODksIDB4YjgsIDB4MjgsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NDMsIDB4MGMsIDB4NjgsCisweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDhkLCAweDQ4LCAweDI4LCAweDUxLCAweGU4LCAweGI4LCAweGZlLCAweGZmLCAweGZmLCAweDVhLCAweDVlLCAweDg5LAorMHhjNiwgMHg1MCwgMHg1MSwgMHg1NywgMHhlOCwgMHhkYywgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywgMHgxMCwgMHg4MywgMHhjMCwgMHg0MCwgMHhjNiwKKzB4ODQsIDB4MzAsIDB4YzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmEsIDB4NDAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsIDB4YWMsIDB4ZmUsIDB4ZmYsCisweGZmLCAweDgzLCAweGM0LCAweDI0LCAweDhiLCAweDQzLCAweDEwLCAweDgzLCAweGU4LCAweDgwLCAweDZhLCAweDIwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LAorMHg5OSwgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg1MywgMHgwYywgMHg4YiwgMHg0MywgMHgxMCwgMHgwNSwgMHgwMiwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwKKzB4NGEsIDB4MTQsIDB4NjYsIDB4OGIsIDB4NTIsIDB4MTYsIDB4NjYsIDB4ODksIDB4NDgsIDB4ZjYsIDB4NjYsIDB4ODksIDB4NTAsIDB4ZmEsIDB4NjYsIDB4YzcsCisweDgwLCAweDllLCAweGZlLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweGM3LCAweDQwLCAweGRlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweGM3LAorMHg4MCwgMHgwMCwgMHhmZSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg2NiwgMHhjNywgMHg0MCwgMHhmMCwgMHhmZiwgMHhmZiwgMHhjNiwgMHg0MCwgMHhmZCwKKzB4MDAsIDB4NmEsIDB4MDQsIDB4NjgsIDB4MjUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4ZTgsIDB4NjcsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4NDMsCisweDEwLCAweDY2LCAweGM3LCAweDgwLCAweDEwLCAweDAyLCAweDAwLCAweDAwLCAweDUwLCAweDAwLCAweDgzLCAweGM0LCAweDE4LCAweDhiLCAweDRiLCAweDBjLAorMHg2NiwgMHhjNywgMHg4MCwgMHgwNiwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMiwgMHhjNywgMHg4MCwgMHgxOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4YzcsIDB4ODAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTEsIDB4MjQsCisweDg1LCAweGQyLCAweDc0LCAweDBmLCAweDhiLCAweDQ5LCAweDIwLCAweDg5LCAweDkwLCAweDFjLCAweDAyLCAweDAwLCAweDAwLCAweDg5LCAweDg4LCAweDE4LAorMHgwMiwgMHgwMCwgMHgwMCwgMHhjNywgMHg0MywgMHgyYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg2NSwgMHhmNCwgMHg1YiwgMHg1ZSwgMHg1ZiwKKzB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODMsIDB4ZWMsIDB4NGMsIDB4YzcsIDB4NDUsIDB4YzgsIDB4MDAsIDB4MDAsCisweDAyLCAweDAwLCAweDhiLCAweDQ1LCAweDA4LCAweDg5LCAweDQ1LCAweGI4LCAweDhiLCAweDQ1LCAweDBjLCAweDg5LCAweDQ1LCAweGJjLCAweDhiLCAweDQ1LAorMHgxMCwgMHg4OSwgMHg0NSwgMHhjMCwgMHg4YiwgMHg0NSwgMHgxNCwgMHg4OSwgMHg0NSwgMHhjNCwgMHg4ZCwgMHg0NSwgMHhiOCwgMHg1MCwgMHhlOCwgMHg5YSwKKzB4ZmUsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4NDUsIDB4YjgsIDB4NTksIDB4M2QsIDB4MDIsIDB4YjAsIDB4YWQsIDB4MmIsIDB4NzUsIDB4MDksIDB4YzcsIDB4NDUsCisweGNjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGViLCAweDIxLCAweDMxLCAweGY2LCAweDNkLCAweDA3LCAweGIwLCAweDExLCAweDBhLCAweDc1LCAweDJjLAorMHg4YiwgMHg0NSwgMHhiYywgMHg4YiwgMHgxMCwgMHhlOCwgMHg1OCwgMHhmYiwgMHhmZiwgMHhmZiwgMHhmNywgMHhkMCwgMHg2NiwgMHg4NSwgMHhjMCwgMHg3NSwKKzB4MGUsIDB4YzcsIDB4NDUsIDB4ZDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4MGQsIDB4NTAsCisweDY4LCAweDJhLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGFlLCAweGY5LCAweGZmLCAweGZmLCAweDU4LCAweDVhLCAweDMxLCAweGRiLCAweDgxLCAweDdkLAorMHhiOCwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgwMywgMHg4YiwgMHg1ZCwgMHhiYywgMHg4YiwgMHg0NSwgMHhjMCwgMHg4NSwgMHhjMCwgMHg3NCwKKzB4MGEsIDB4ODEsIDB4MzgsIDB4MDcsIDB4YjAsIDB4MWYsIDB4MGUsIDB4NzUsIDB4MDIsIDB4ODksIDB4YzMsIDB4ODUsIDB4ZjYsIDB4MGYsIDB4ODUsIDB4Y2UsCisweDAwLCAweDAwLCAweDAwLCAweDg1LCAweGRiLCAweDBmLCAweDg0LCAweGM2LCAweDAwLCAweDAwLCAweDAwLCAweDY2LCAweDgzLCAweDdiLCAweDA4LCAweDAwLAorMHg3NCwgMHgwZiwgMHg4YiwgMHg1MywgMHgwNCwgMHg4OSwgMHhkOCwgMHhlOCwgMHhmNiwgMHhmYSwgMHhmZiwgMHhmZiwgMHhmNywgMHhkMCwgMHgwZiwgMHhiNywKKzB4ZjAsIDB4OGIsIDB4NGIsIDB4MDQsIDB4OGQsIDB4NDMsIDB4MGMsIDB4MDEsIDB4ZDksIDB4MzEsIDB4ZmYsIDB4ODksIDB4NGQsIDB4YjQsIDB4MzksIDB4NDUsCisweGI0LCAweDc2LCAweDFmLCAweDhiLCAweDA4LCAweDhiLCAweDUwLCAweDA0LCAweDgzLCAweGMxLCAweDAzLCAweDgzLCAweGMyLCAweDAzLCAweDgzLCAweGUxLAorMHhmYywgMHg4MywgMHhlMiwgMHhmYywgMHg4ZCwgMHg1NCwgMHgxMSwgMHgwYywgMHgwMSwgMHhkMCwgMHgzOSwgMHg0NSwgMHhiNCwgMHg3MiwgMHgwMywgMHg0NywKKzB4ZWIsIDB4ZGMsIDB4ODEsIDB4M2IsIDB4MDcsIDB4YjAsIDB4MWYsIDB4MGUsIDB4NzUsIDB4MWIsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTcsIDB4MGYsIDB4YjcsCisweDQzLCAweDBhLCAweDM5LCAweGY4LCAweDc1LCAweDBmLCAweGM3LCAweDQ1LCAweGQ0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDVkLCAweGMwLAorMHhlOSwgMHg5NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MCwgMHg2OCwgMHg0ZCwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHgwOCwgMHhmOSwgMHhmZiwgMHhmZiwKKzB4NTYsIDB4NjgsIDB4NjcsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZmQsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4NTcsIDB4NjgsIDB4NzksIDB4MTAsIDB4MDEsCisweDAwLCAweGU4LCAweGYyLCAweGY4LCAweGZmLCAweGZmLCAweDUzLCAweDY4LCAweDhiLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGU3LCAweGY4LCAweGZmLAorMHhmZiwgMHg4MywgMHhjNCwgMHgyMCwgMHhmZiwgMHg3MywgMHgwNCwgMHg2OCwgMHg5ZCwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhkNywgMHhmOCwgMHhmZiwKKzB4ZmYsIDB4ZmYsIDB4MzMsIDB4NjgsIDB4YWYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4Y2IsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4MGYsIDB4YjcsIDB4NDMsCisweDBhLCAweDUwLCAweDY4LCAweGMxLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGJjLCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDE4LCAweGViLAorMHgwNCwgMHg4NSwgMHhmNiwgMHg3NSwgMHgzNSwgMHg1MSwgMHg2OCwgMHhkMywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhhOCwgMHhmOCwgMHhmZiwgMHhmZiwKKzB4ZmYsIDB4NzUsIDB4YjgsIDB4NjgsIDB4ZWUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OWIsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NzUsIDB4YmMsCisweDY4LCAweGY3LCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDhlLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDc1LCAweGMwLCAweDY4LCAweDAwLCAweDExLAorMHgwMSwgMHgwMCwgMHhlOCwgMHg4MSwgMHhmOCwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgyMCwgMHhjNywgMHg0NSwgMHhkOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4YzcsIDB4NDUsIDB4ZGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4N2QsIDB4ZDQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4ZmMsIDB4MDAsCisweDAwLCAweDAwLCAweDhiLCAweDdkLCAweGMwLCAweDhkLCAweDU3LCAweDBjLCAweDAzLCAweDdmLCAweDA0LCAweDM5LCAweGQ3LCAweDc2LCAweDUxLCAweDhiLAorMHgzMiwgMHg4YiwgMHg1YSwgMHgwNCwgMHg4OSwgMHg1ZCwgMHhiNCwgMHg4MywgMHhjMywgMHgwMywgMHg4ZCwgMHg0ZSwgMHgwMywgMHg4MywgMHhlMywgMHhmYywKKzB4ODMsIDB4ZTEsIDB4ZmMsIDB4OGQsIDB4NDIsIDB4MGMsIDB4MDEsIDB4Y2IsIDB4MDEsIDB4YzMsIDB4MzksIDB4ZGYsIDB4NzIsIDB4MzIsIDB4ODMsIDB4N2EsCisweDA4LCAweDAxLCAweDc1LCAweDI4LCAweDg1LCAweGY2LCAweDc1LCAweDI0LCAweDg5LCAweDU1LCAweGIwLCAweDg5LCAweDRkLCAweGFjLCAweDUyLCAweDZhLAorMHgwMCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwgMHgyOSwgMHhmYywgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhjMCwKKzB4OGIsIDB4NTUsIDB4YjAsIDB4OGIsIDB4NGQsIDB4YWMsIDB4MGYsIDB4ODQsIDB4MWQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4ODksIDB4ZGEsIDB4ZWIsIDB4YWIsCisweDMxLCAweGQyLCAweDMxLCAweGZmLCAweDMxLCAweGY2LCAweDg1LCAweGQyLCAweDBmLCAweDk1LCAweGMzLCAweGY3LCAweGM2LCAweDAxLCAweDAwLCAweDAwLAorMHgwMCwgMHg3NSwgMHgzNCwgMHg4NCwgMHhkYiwgMHg3NCwgMHgzMCwgMHgzMSwgMHhmNiwgMHg4MywgMHg3YSwgMHgwNCwgMHgwYSwgMHg3NSwgMHgyOCwgMHg4OSwKKzB4NTUsIDB4YjQsIDB4NTAsIDB4NmEsIDB4MGEsIDB4NjgsIDB4MzUsIDB4MTEsIDB4MDEsIDB4MDAsIDB4NTcsIDB4ZTgsIDB4ZTIsIDB4ZmIsIDB4ZmYsIDB4ZmYsCisweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDU1LCAweGI0LCAweDg1LCAweGMwLCAweDc1LCAweDBkLCAweDhkLCAweDQ1LCAweGI4LCAweGU4LCAweDExLCAweGZhLAorMHhmZiwgMHhmZiwgMHg4YiwgMHg1NSwgMHhiNCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgwZiwgMHg4NCwgMHhkYiwgMHg3NCwgMHgwYiwgMHgzMSwKKzB4YzAsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MDAsIDB4MGYsIDB4OTQsIDB4YzAsIDB4ODksIDB4YzYsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MjUsIDB4ODQsIDB4ZGIsCisweDc0LCAweDIxLCAweDgzLCAweDdhLCAweDA0LCAweDAxLCAweDc1LCAweDFiLCAweDUwLCAweDZhLCAweDAxLCAweDY4LCAweDY2LCAweDEwLCAweDAxLCAweDAwLAorMHg1NywgMHhlOCwgMHg5YywgMHhmYiwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4NSwgMHhjMCwgMHgwZiwgMHg5NCwgMHhjMCwgMHgwZiwgMHhiNiwKKzB4YzAsIDB4ODksIDB4YzYsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTMsIDB4ODQsIDB4ZGIsIDB4NzQsIDB4MGYsIDB4NTcsIDB4NjgsIDB4MGEsIDB4MTEsIDB4MDEsCisweDAwLCAweGU4LCAweDcyLCAweGY3LCAweGZmLCAweGZmLCAweDVmLCAweDU4LCAweGViLCAweDA0LCAweDg1LCAweGY2LCAweDc1LCAweDEzLCAweDhkLCAweDQ1LAorMHhiOCwgMHhlOCwgMHhhZCwgMHhmOSwgMHhmZiwgMHhmZiwgMHg4NSwgMHhjMCwgMHg3NSwgMHgwNywgMHhjNywgMHg0NSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NTEsIDB4NjgsIDB4MjUsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4NGMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWIsIDB4ODMsIDB4N2QsIDB4ZGMsCisweDAwLCAweDVlLCAweDc0LCAweDBkLCAweDUwLCAweDY4LCAweDM0LCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDM5LCAweGY3LCAweGZmLCAweGZmLCAweDU4LAorMHg1YSwgMHg4MywgMHg3ZCwgMHhkOCwgMHgwMCwgMHg3NCwgMHgwZCwgMHg1MywgMHg2OCwgMHgzZiwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHgyNiwgMHhmNywKKzB4ZmYsIDB4ZmYsIDB4NWUsIDB4NWYsIDB4NTAsIDB4NjgsIDB4NjUsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MTksIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWEsCisweDgzLCAweDdkLCAweGRjLCAweDAwLCAweDU5LCAweDc1LCAweDMxLCAweDgzLCAweDdkLCAweGQ4LCAweDAwLCAweDBmLCAweDg0LCAweDE2LCAweDAxLCAweDAwLAorMHgwMCwgMHg1MCwgMHg1MCwgMHg2YSwgMHgyMCwgMHg2OCwgMHhjNCwgMHg1NSwgMHgwMSwgMHgwMCwgMHhlOCwgMHhiYiwgMHhmNCwgMHhmZiwgMHhmZiwgMHhiYiwKKzB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4YTMsIDB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4ODMsIDB4YzQsIDB4MTAsIDB4YzcsIDB4NDUsIDB4YjQsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweGU5LCAweGFhLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDQ1LCAweGUwLCAweDhkLCAweDU4LCAweDE4LCAweDhiLCAweDQ4LAorMHgwYywgMHgwMSwgMHhkOSwgMHg4OSwgMHg0ZCwgMHhiNCwgMHgzOSwgMHg1ZCwgMHhiNCwgMHg3NiwgMHhiYywgMHg4YiwgMHg1NSwgMHhiNCwgMHg4YiwgMHg0MywKKzB4MDQsIDB4MjksIDB4ZGEsIDB4MzksIDB4ZDAsIDB4NzcsIDB4YjAsIDB4ODMsIDB4M2IsIDB4MDEsIDB4NzUsIDB4NGYsIDB4ODMsIDB4ZTgsIDB4MDgsIDB4YjksCisweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDMxLCAweGQyLCAweDhkLCAweDczLCAweDA4LCAweGY3LCAweGYxLCAweDg5LCAweDQ1LCAweGIwLCAweDMxLCAweGZmLAorMHgzOSwgMHg3ZCwgMHhiMCwgMHg3ZSwgMHgyZiwgMHg4MywgMHhmZiwgMHgxZiwgMHg3ZiwgMHgyYSwgMHgzMSwgMHhjMCwgMHg4YiwgMHgxNiwgMHg4MywgMHg3ZSwKKzB4MTAsIDB4MDEsIDB4MGYsIDB4OTUsIDB4YzAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4NDAsIDB4OGIsIDB4NGUsIDB4MDQsIDB4NDcsIDB4NTAsIDB4OGIsIDB4NDUsCisweGM4LCAweGZmLCAweDc2LCAweDBjLCAweGZmLCAweDc2LCAweDA4LCAweDgzLCAweGM2LCAweDE0LCAweGU4LCAweDI5LCAweGY5LCAweGZmLCAweGZmLCAweDgzLAorMHhjNCwgMHgxMCwgMHhlYiwgMHhjYywgMHhjNywgMHg0NSwgMHhlNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg1YiwgMHgwNCwgMHhlYiwgMHg5NiwKKzB4OGIsIDB4NDMsIDB4MTQsIDB4OGIsIDB4NTMsIDB4MDQsIDB4OGIsIDB4NGIsIDB4MDgsIDB4OGIsIDB4NzMsIDB4MGMsIDB4OGIsIDB4N2IsIDB4MTAsIDB4ODMsCisweGY4LCAweDAxLCAweDc1LCAweDA3LCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweGVjLCAweDA0LCAweDgzLCAweGMzLAorMHgxNCwgMHg1MCwgMHg4YiwgMHg0NSwgMHhiMCwgMHg1NywgMHg1NiwgMHhlOCwgMHhlYywgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg0NSwgMHhiNCwgMHg4MywKKzB4YzQsIDB4MTAsIDB4OGIsIDB4NDUsIDB4YjQsIDB4M2IsIDB4MDUsIDB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4OGIsIDB4NDUsIDB4YzgsIDB4ODksIDB4NDUsCisweGIwLCAweDdjLCAweGJkLCAweGU4LCAweDNiLCAweGY0LCAweGZmLCAweGZmLCAweDhiLCAweDdkLCAweGIwLCAweDg5LCAweDg3LCAweGUwLCAweDAxLCAweDAwLAorMHgwMCwgMHg4YiwgMHg1ZCwgMHhjOCwgMHhlOCwgMHg3MywgMHhmNCwgMHhmZiwgMHhmZiwgMHg2NiwgMHg4OSwgMHg0MywgMHgwMiwgMHg4YiwgMHg0NSwgMHhjOCwKKzB4ODMsIDB4YjgsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NzUsIDB4MDcsIDB4NjYsIDB4ODMsIDB4NzgsIDB4MDIsIDB4MDAsIDB4NzQsIDB4MDcsCisweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweDdkLCAweGNjLCAweDAwLCAweDBmLCAweDg0LCAweGI5LCAweDAwLCAweDAwLAorMHgwMCwgMHg4YiwgMHg3NSwgMHhiYywgMHg4YiwgMHg1NSwgMHhjOCwgMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHg4YiwgMHgxZSwgMHg3NCwgMHg0ZCwgMHhmNiwKKzB4YzMsIDB4MDEsIDB4NzQsIDB4NDgsIDB4OGIsIDB4NDYsIDB4MDgsIDB4MDUsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4M2QsIDB4ZmYsIDB4ZmYsIDB4M2YsCisweDAwLCAweDc2LCAweDA1LCAweGI4LCAweGZmLCAweGZmLCAweDNmLCAweDAwLCAweDhiLCAweGJhLCAweGUwLCAweDAxLCAweDAwLCAweDAwLCAweDhkLCAweDhmLAorMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzOSwgMHhjMSwgMHg3MywgMHgyNCwgMHg4ZCwgMHg4OCwgMHgwMCwgMHhmYywgMHhmZiwgMHhmZiwgMHg4OSwgMHg4YSwKKzB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ODEsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NzcsIDB4MGEsIDB4NjYsIDB4MmQsIDB4MDAsIDB4MDQsCisweDY2LCAweDg5LCAweDQyLCAweDAyLCAweGViLCAweDA2LCAweDY2LCAweGM3LCAweDQyLCAweDAyLCAweDAwLCAweGZjLCAweDgwLCAweGUzLCAweDA0LCAweDc0LAorMHgwZiwgMHg1MCwgMHg2YSwgMHhmZiwgMHhmZiwgMHg3NiwgMHgxMCwgMHg1MiwgMHhlOCwgMHhhYSwgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwKKzB4ODMsIDB4N2QsIDB4ZTQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YmQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4ZjYsIDB4MDYsIDB4NDAsIDB4MGYsIDB4ODQsIDB4YjQsCisweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDVlLCAweDMwLCAweDhiLCAweDQ2LCAweDJjLCAweDAxLCAweGQ4LCAweDhiLCAweDdkLCAweGM4LCAweDg5LCAweDQ1LAorMHhiNCwgMHg4YiwgMHg3MywgMHhmYywgMHgzOSwgMHg1ZCwgMHhiNCwgMHgwZiwgMHg4NiwgMHg5YSwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4YiwgMHgxMywgMHg4YiwKKzB4NGIsIDB4MDQsIDB4NTAsIDB4ODksIDB4ZjgsIDB4ZmYsIDB4NzMsIDB4MTAsIDB4ZmYsIDB4NzMsIDB4MGMsIDB4ZmYsIDB4NzMsIDB4MDgsIDB4MDEsIDB4ZjMsCisweGU4LCAweGUzLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweGViLCAweGRhLCAweDgzLCAweDdkLCAweGQwLCAweDAwLCAweDBmLCAweDg0LAorMHhhYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg3NSwgMHhiYywgMHg4YiwgMHg0NiwgMHgwYywgMHg4NSwgMHhjMCwgMHg3NCwgMHgxMCwgMHg1MiwgMHg1MCwKKzB4ZmYsIDB4NzYsIDB4MDgsIDB4ZmYsIDB4NzUsIDB4YzgsIDB4ZTgsIDB4M2MsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NDYsCisweDE0LCAweDhiLCAweDVlLCAweDEwLCAweDg5LCAweDQ1LCAweGI0LCAweDgzLCAweDdkLCAweGI0LCAweDAwLCAweDBmLCAweDg0LCAweDQ2LCAweDAxLCAweDAwLAorMHgwMCwgMHg4MywgMHgzYiwgMHgwMSwgMHg3NSwgMHg2YiwgMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHg3NCwgMHg2NSwgMHg4YiwgMHg0NSwgMHhjOCwgMHhiOSwKKzB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NDUsIDB4YjAsIDB4OGIsIDB4NDMsIDB4MDQsIDB4ODMsIDB4ZTgsIDB4MDgsIDB4MzEsIDB4ZDIsIDB4ZjcsCisweGYxLCAweDg5LCAweDQ1LCAweGFjLCAweDhkLCAweDczLCAweDA4LCAweDMxLCAweGZmLCAweDM5LCAweDdkLCAweGFjLCAweDdlLCAweDNjLCAweDgzLCAweGZmLAorMHgxZiwgMHg3ZiwgMHgzNywgMHg4YiwgMHg0NiwgMHgxMCwgMHg4ZCwgMHg1MCwgMHhmZiwgMHhiOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhmYSwKKzB4MDMsIDB4NzcsIDB4MDcsIDB4MGYsIDB4YjYsIDB4ODIsIDB4MTAsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4OGIsIDB4MTYsIDB4OGIsCisweDRlLCAweDA0LCAweDQ3LCAweDUwLCAweDhiLCAweDQ1LCAweGIwLCAweGZmLCAweDc2LCAweDBjLCAweGZmLCAweDc2LCAweDA4LCAweDgzLCAweGM2LCAweDE0LAorMHhlOCwgMHg0MywgMHhmNywgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHhlYiwgMHhiZiwgMHhjNywgMHg0NSwgMHhlNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4OGIsIDB4NDMsIDB4MDQsIDB4MDEsIDB4YzMsIDB4MjksIDB4NDUsIDB4YjQsIDB4ZTksIDB4NzksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4N2QsCisweGQ0LCAweDAwLCAweDBmLCAweDg0LCAweGJmLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDU1LCAweGMwLCAweDhiLCAweDdhLCAweDA0LCAweDhkLCAweDQyLAorMHgwYywgMHgwMSwgMHhkNywgMHgzOSwgMHhjNywgMHgwZiwgMHg4NiwgMHhhYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHgxMCwgMHg4ZCwgMHg0OCwgMHgwYywKKzB4OGQsIDB4NWEsIDB4MDMsIDB4ODMsIDB4ZTMsIDB4ZmMsIDB4OGQsIDB4MzQsIDB4MTksIDB4OGIsIDB4NTgsIDB4MDQsIDB4ODksIDB4NzUsIDB4YjQsIDB4OGQsCisweDczLCAweDAzLCAweDgzLCAweGU2LCAweGZjLCAweDAzLCAweDc1LCAweGI0LCAweDg5LCAweDc1LCAweGIwLCAweDM5LCAweGY3LCAweDBmLCAweDgyLCAweDg0LAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHgzNSwgMHg3MCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg0MCwgMHgwOCwgMHg4OSwgMHg3NSwgMHhhYywgMHgzOSwKKzB4MDUsIDB4NzgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MzUsIDB4NzQsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NzUsIDB4MjcsIDB4M2IsIDB4NTUsIDB4YWMsCisweDc1LCAweDIyLCAweDUwLCAweDUyLCAweDU2LCAweDUxLCAweGU4LCAweDE3LCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg1LCAweGMwLAorMHg3NSwgMHgxMiwgMHg1MiwgMHg4ZCwgMHg0NSwgMHhiOCwgMHhmZiwgMHg3NSwgMHhiNCwgMHg1MywgMHg1MCwgMHhmZiwgMHgxNSwgMHg3YywgMHgxNCwgMHgwMSwKKzB4MDAsIDB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4ZWIsIDB4OGEsIDB4OGQsIDB4N2MsIDB4MGEsIDB4MGMsIDB4ODMsIDB4N2QsIDB4YjQsCisweDA3LCAweDBmLCAweDg1LCAweGRmLCAweGZiLCAweGZmLCAweGZmLCAweDg5LCAweDU1LCAweGI0LCAweDUwLCAweDZhLCAweDA3LCAweDY4LCAweDQwLCAweDExLAorMHgwMSwgMHgwMCwgMHg1NywgMHhlOCwgMHhkYSwgMHhmNywgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg1NSwgMHhiNCwgMHg4NSwgMHhjMCwKKzB4MGYsIDB4ODUsIDB4YzAsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4YzcsIDB4NDUsIDB4ZDgsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmUsIDB4MDEsIDB4MDAsCisweDAwLCAweDAwLCAweGU5LCAweGFmLCAweGZiLCAweGZmLCAweGZmLCAweGIwLCAweDgwLCAweGU2LCAweDcwLCAweDMxLCAweGMwLCAweGU2LCAweGYwLCAweGU2LAorMHhmMSwgMHhiMCwgMHgxMSwgMHhlNiwgMHgyMCwgMHhlNiwgMHhhMCwgMHhiMCwgMHgyMCwgMHhlNiwgMHgyMSwgMHhiMCwgMHgyOCwgMHhlNiwgMHhhMSwgMHhiMCwKKzB4MDQsIDB4ZTYsIDB4MjEsIDB4YjAsIDB4MDIsIDB4ZTYsIDB4YTEsIDB4YjAsIDB4MDEsIDB4ZTYsIDB4MjEsIDB4ZTYsIDB4YTEsIDB4YjAsIDB4ZmYsIDB4ZTYsCisweGExLCAweGIwLCAweGZiLCAweGU2LCAweDIxLCAweDhiLCAweDQ1LCAweGM4LCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLCAweDVkLCAweGMzLAorMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgzMCwgMHgzMSwgMHgzMiwgMHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgMHgzOCwgMHgzOSwgMHg0MSwgMHg0MiwKKzB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4MDAsIDB4NDgsIDB4NjQsIDB4NzIsIDB4NTMsIDB4MDAsIDB4NDIsIDB4NjEsIDB4NjQsIDB4MjAsIDB4NzUsIDB4NmUsCisweDY5LCAweDY2LCAweDZmLCAweDcyLCAweDZkLCAweDIwLCAweDYyLCAweDZmLCAweDZmLCAweDc0LCAweDIwLCAweDY4LCAweDY1LCAweDYxLCAweDY0LCAweDY1LAorMHg3MiwgMHgyMCwgMHg2MywgMHg2OCwgMHg2NSwgMHg2MywgMHg2YiwgMHg3MywgMHg3NSwgMHg2ZCwgMHgyMSwgMHgwYSwgMHgwMCwgMHg0MiwgMHg2MSwgMHg2NCwKKzB4MjAsIDB4NDUsIDB4NGMsIDB4NDYsIDB4MjAsIDB4NzAsIDB4NjEsIDB4NzIsIDB4NjEsIDB4NmQsIDB4NjUsIDB4NzQsIDB4NjUsIDB4NzIsIDB4MjAsIDB4NzQsCisweDYxLCAweDYyLCAweDZjLCAweDY1LCAweDIxLCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZiLCAweDczLAorMHg3NSwgMHg2ZCwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg2MywKKzB4NmYsIDB4NzUsIDB4NmUsIDB4NzQsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisweDIwLCAweDIwLCAweDIwLCAweDY4LCAweDY0LCAweDcyLCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLAorMHgyMCwgMHgyMCwgMHg2MiwgMHg1ZiwgMHg3MywgMHg2OSwgMHg3YSwgMHg2NSwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHg2MiwKKzB4NWYsIDB4NzMsIDB4NjksIDB4NjcsIDB4NmUsIDB4NjEsIDB4NzQsIDB4NzUsIDB4NzIsIDB4NjUsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsCisweDAwLCAweDIwLCAweDIwLCAweDYyLCAweDVmLCAweDcyLCAweDY1LCAweDYzLCAweDZmLCAweDcyLCAweDY0LCAweDczLCAweDIwLCAweDNkLCAweDIwLCAweDI1LAorMHg3OCwgMHgwYSwgMHgwMCwgMHg1NSwgMHg2ZSwgMHg2YiwgMHg2ZSwgMHg2ZiwgMHg3NywgMHg2ZSwgMHgyMCwgMHg2MiwgMHg2ZiwgMHg2ZiwgMHg3NCwgMHg2YywKKzB4NmYsIDB4NjEsIDB4NjQsIDB4NjUsIDB4NzIsIDB4MjAsIDB4NjMsIDB4NmMsIDB4NjEsIDB4NzMsIDB4NzMsIDB4MjEsIDB4MGEsIDB4MDAsIDB4NzQsIDB4NzksCisweDcwLCAweDY1LCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDY0LCAweDYxLCAweDc0LCAweDYxLCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLAorMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2ZCwgMHgzZCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHg1NSwgMHg2ZSwgMHg2YiwgMHg2ZSwgMHg2ZiwgMHg3NywKKzB4NmUsIDB4MjAsIDB4NjYsIDB4NjksIDB4NzIsIDB4NmQsIDB4NzcsIDB4NjEsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4M2EsCisweDIwLCAweDI1LCAweDczLCAweDBhLCAweDAwLCAweDQ2LCAweDY5LCAweDcyLCAweDZkLCAweDc3LCAweDYxLCAweDcyLCAweDY1LCAweDIwLCAweDc0LCAweDc5LAorMHg3MCwgMHg2NSwgMHgzYSwgMHgwMCwgMHgyMCwgMHg0YywgMHg2OSwgMHg2ZSwgMHg3NSwgMHg3OCwgMHg0MiwgMHg0OSwgMHg0ZiwgMHg1MywgMHgwMCwgMHgyMCwKKzB4NTAsIDB4NDMsIDB4NDIsIDB4NDksIDB4NGYsIDB4NTMsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAxLCAweDdhLCAweDUyLCAweDAwLCAweDAxLCAweDdjLCAweDA4LCAweDAxLCAweDFiLCAweDBjLCAweDA0LCAweDA0LCAweDg4LCAweDAxLCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhlMiwgMHhmMSwgMHhmZiwgMHhmZiwgMHgyMywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NWQsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAwLCAweDAwLCAweDAwLCAweGU1LCAweGYxLCAweGZmLCAweGZmLCAweDFiLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NSwgMHgwZCwgMHgwNSwgMHg0MSwgMHg4MywgMHgwMywgMHg1MSwgMHhjMywgMHg0MSwgMHhjNSwKKzB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4ZjEsIDB4ZmYsIDB4ZmYsCisweDhhLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweDg3LCAweDAzLAorMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMywgMHg3ZCwgMHgwMSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzYsIDB4ZjMsIDB4ZmYsIDB4ZmYsCisweDQ3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDQyLCAweDg2LCAweDAzLAorMHg4MywgMHgwNCwgMHg3ZCwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4YjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4N2EsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsCisweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLCAweDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAyLCAweDcwLCAweGMzLCAweDQxLAorMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4YTMsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4NjUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDcsIDB4MGQsCisweDA1LCAweDQzLCAweDg3LCAweDAzLCAweDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAyLCAweDU2LCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLAorMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgyOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhkYywgMHhmMywgMHhmZiwgMHhmZiwKKzB4Y2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsCisweDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAyLCAweGJmLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMSwgMHgwMCwgMHgwMCwgMHg3YywgMHhmNCwgMHhmZiwgMHhmZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDUsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAxLCAweDAwLCAweDAwLCAweDY1LCAweGY0LCAweGZmLCAweGZmLCAweDBhLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NGYsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MDksIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ1LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YywgMHgwMSwgMHgwMCwgMHgwMCwgMHgzOCwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDgsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGJjLCAweDAxLCAweDAwLCAweDAwLCAweDI0LCAweGY0LCAweGZmLCAweGZmLCAweDBkLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZGMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MTEsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ4LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgwMSwgMHgwMCwgMHgwMCwgMHhmZCwgMHhmMywgMHhmZiwgMHhmZiwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NTIsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAyLCAweDAwLCAweDAwLCAweGY1LCAweGYzLCAweGZmLCAweGZmLCAweDE4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1MiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZWQsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MWQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDQxLCAweDgzLCAweDAzLCAweDU1LCAweGMzLCAweDQxLCAweGM1LAorMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMiwgMHgwMCwgMHgwMCwgMHhlNiwgMHhmMywgMHhmZiwgMHhmZiwKKzB4MjUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NWYsIDB4YzUsIDB4MGMsCisweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAyLCAweDAwLCAweDAwLCAweGViLCAweGYzLCAweGZmLCAweGZmLAorMHg1YiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0MywgMHg4NywgMHgwMywKKzB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NTEsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGFjLCAweDAyLCAweDAwLCAweDAwLCAweDFhLCAweGY0LCAweGZmLCAweGZmLCAweDFiLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg1NiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4Y2MsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MTUsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MzUsIDB4MDEsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLCAweDg2LCAweDA0LCAweDgzLCAweDA1LAorMHgwMywgMHgyYiwgMHgwMSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MmMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ZjUsIDB4ZmYsIDB4ZmYsIDB4YWUsIDB4MDYsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweDg3LCAweDAzLCAweDg2LCAweDA0LCAweDgzLCAweDA1LAorMHgwMywgMHhhMSwgMHgwNiwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4MTAsIDB4MDEsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MTIsIDB4MDgsIDB4MDEsIDB4MDAsCisweGMwLCAweDU1LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHhhNSwgMHhhNSwgMHhhNSwgMHhhNSwgMHg3MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwKKzB4OGMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQyLCAweDRmLCAweDRmLCAweDU0LCAweDVmLCAweDQ5LCAweDRkLCAweDQxLAorMHg0NywgMHg0NSwgMHgzZCwgMHg2OCwgMHg2NSwgMHg2MSwgMHg2NCwgMHgyZSwgMHg1MywgMHgyMCwgMHg2MywgMHg2ZiwgMHg2ZSwgMHg3MywgMHg2ZiwgMHg2YywKKzB4NjUsIDB4M2QsIDB4NzQsIDB4NzQsIDB4NzksIDB4NTMsIDB4MzAsIDB4MjAsIDB4NjksIDB4NzAsIDB4M2QsIDB4NjQsIDB4NjgsIDB4NjMsIDB4NzAsIDB4MjAsCisweDcyLCAweDZmLCAweDZmLCAweDc0LCAweDNkLCAweDJmLCAweDY0LCAweDY1LCAweDc2LCAweDJmLCAweDZlLCAweDY2LCAweDczLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYgppbmRleCAyYmNjOGQ3Li4zMzBmYTdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCkBAIC0xNywyMSArMTcsMjggQEAKICAgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoICAgXAorICAgICAgICAgICBmaWxlOi8vY29udmVydC5iaW4uYyBcCiAiCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQvdXRpbC9ta2VsZkltYWdlIgogCi1DRkxBR1MgKz0gIi1mbm8tc3RhY2stcHJvdGVjdG9yIgogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlwKICAgICBIT1NUX0NDPScke0JVSUxEX0NDfScgXAogICAgIEhPU1RfQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKICAgICBIT1NUX0NQUEZMQUdTPScke0JVSUxEX0NQUEZMQUdTfScgXAorICAgIEkzODZfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAorICAgIElBNjRfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAogIgorRVhUUkFfT0VDT05GX2FwcGVuZF94ODYtNjQgPSAiIC0td2l0aC1pMzg2PSR7SE9TVF9TWVN9IgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAorZG9fY29uZmlndXJlX3ByZXBlbmQtY2xhc3MtbmF0aXZlKCkgeworCWNwICR7V09SS0RJUn0vY29udmVydC5iaW4uYyAke1N9L2xpbnV4LWkzODYvCit9CisKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UvZWxmMzItaTM4NgogCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL21rbGlicy1uYXRpdmVfMC4xLjQzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDMuYmIKaW5kZXggYjljNmM2Zi4uYTE2MTQ3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDMuYmIKQEAgLTQsNyArNCw2IEBACiBTRUNUSU9OID0gImRldmVsIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT05OGQzMTAzN2IxM2Q4OTZlMzM4OTA3MzhlZjAxYWY2NCIKLURFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MTEyM1QxNTIwMTFaL3Bvb2wvbWFpbi9tL21rbGlicy9ta2xpYnNfJHtQVn0udGFyLnh6IFwKIAlmaWxlOi8vYWNfaW5pdF9maXgucGF0Y2hcCkBAIC0yMCw2ICsxOSw2IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbS9ta2xpYnMvIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IG5hdGl2ZSBweXRob25uYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgbmF0aXZlCiAKIFMgPSAiJHtXT1JLRElSfS9ta2xpYnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgppbmRleCA3ODU4ODE5Li41MGFjZGIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKQEAgLTQsMTEgKzQsMTIgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL21tYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZhZTMyNzkyZTIwZjRkMjdhZGUxYzVhNzYyZDE2YjdkIgogCiBTUkNCUkFOQ0ggPz0gIm1hc3RlciIKLVNSQ1JFViA9ICIyY2I2Njk1ZThkZWMwMGQ4ODdiZGQ1MzA5ZDFiNTdkODM2ZmNkMjE0IgorU1JDUkVWID0gIjM3Yzg2ZTYwYzA0NDJmZWY1NzBiNzVjZDgxYWViMWRiNGQwY2JhZmQiCiAKIFBWID0gIjAuMSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvY2piL21tYy11dGlscy5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgppbmRleCA0ZmJjNTRmLi40OGJhMmVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKQEAgLTUsNyArNSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2NvbW1vbi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PWJhMDViMDc5MTJhNDRlYTJiZjgxY2U0MDkzODAwNDljIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIERFUEVORFMgPSAiemxpYiBsem8gZTJmc3Byb2dzIHV0aWwtbGludXgiCiAKQEAgLTMwLDYgKzMwLDExIEBACiAKIEVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdSQU5MSUI9JHtSQU5MSUJ9JyAnQVI9JHtBUn0nICdDRkxBR1M9JHtDRkxBR1N9ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3hhdHRyJywgJycsICctRFdJVEhPVVRfWEFUVFInLCBkKX0gLUkke1N9L2luY2x1ZGUnICdCVUlMRERJUj0ke1N9JyIKIAorQUxURVJOQVRJVkVfJHtQTn0gPSAiZmxhc2hfZXJhc2VhbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmxhc2hfZXJhc2VhbGxdID0gIiR7c2JpbmRpcn0vZmxhc2hfZXJhc2VhbGwiCisjIFVzZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBidXN5Ym94J3MgZmxhc2hfZXJhc2VhbGwgKGNyZWF0ZWQgd2hlbiBidWlsdCB3aXRoIENPTkZJR19GTEFTSF9FUkFTRUFMTCkKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2ZsYXNoX2VyYXNlYWxsXSA9ICIxMDAiCisKIGRvX2luc3RhbGwgKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvZGlzYWJsZS1oYXJkY29kZWQtY29uZmlncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDU1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvZGlzYWJsZS1oYXJkY29kZWQtY29uZmlncy5wYXRjaApAQCAtMCwwICsxLDIzIEBACitEaXNhYmxlZCByZWFkaW5nIGhvc3QgY29uZmlncy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtuYXRpdmVdCisKK1NpZ25lZC1vZmYtYnk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorCistLS0gbXRvb2xzLTQuMC4xOC9jb25maWcuYy5vcmlnCTIwMTctMDYtMTMgMTI6Mjc6MzguNjQ0MDAwMDAwICswMzAwCisrKysgbXRvb2xzLTQuMC4xOC9jb25maWcuYwkyMDE3LTA2LTEzIDEyOjI4OjQ3LjU3NjAwMDAwMCArMDMwMAorQEAgLTcwMSwxNCArNzAxLDYgQEAKKyAJbWVtY3B5KGRldmljZXMsIGNvbnN0X2RldmljZXMsCisgCSAgICAgICBucl9jb25zdF9kZXZpY2VzKnNpemVvZihzdHJ1Y3QgZGV2aWNlKSk7CisgCistICAgICh2b2lkKSAoKHBhcnNlKENPTkZfRklMRSwxKSB8CistCSAgICAgcGFyc2UoTE9DQUxfQ09ORl9GSUxFLDEpIHwKKy0JICAgICBwYXJzZShTWVNfQ09ORl9GSUxFLDEpKSB8fAorLQkgICAgKHBhcnNlKE9MRF9DT05GX0ZJTEUsMSkgfAorLQkgICAgIHBhcnNlKE9MRF9MT0NBTF9DT05GX0ZJTEUsMSkpKTsKKy0gICAgLyogdGhlIG9sZC1uYW1lIGNvbmZpZ3VyYXRpb24gZmlsZXMgb25seSBnZXQgZXhlY3V0ZWQgaWYgbm9uZSBvZiB0aGUKKy0gICAgICogbmV3LW5hbWUgY29uZmlnIGZpbGVzIHdlcmUgdXNlZCAqLworLQorICAgICBob21lZGlyID0gZ2V0X2hvbWVkaXIoKTsKKyAgICAgaWYgKCBob21lZGlyICl7CisgCXN0cm5jcHkoY29uZl9maWxlLCBob21lZGlyLCBNQVhQQVRITEVOICk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYgppbmRleCBiMGVmYzllLi5kY2QzMmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKQEAgLTMzLDEzICszMywxMiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Db250aW51ZS1ldmVuLWlmLWZzLXNpemUtaXMtbm90LWRpdmlzaWJsZS1ieS1zZWN0b3JzLnBhdGNoIFwKICAgICAgICAgICAgIgogCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoIgogCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQteCIKIAotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saWNvbnYgIgotCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEyLjAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMi4wMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI4MGI4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEyLjAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmFsLXB1cnBvc2UgeDg2IGFzc2VtYmxlciIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwOTA0NDg2ZjhmYmYxODYxY2Y0Mjc1MmUxYTM5ZWZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubmFzbS51cy9wdWIvbmFzbS9yZWxlYXNlYnVpbGRzLyR7UFZ9L25hc20tJHtQVn0udGFyLmJ6MiAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMTU4NDNjM2ZiN2RiMzlhZjgwNTcxZWUyN2VjNmZhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGIwODkxYzY3OGMwNjU0NDZjYTU5YmNlZTY0NzE5ZDAwOTZkNTRkNjg4NmU2ZTQ3MmFlZWUyZTE3MGFlMzI0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWlmIFsgLWYgJHtTfS9hY2xvY2FsLm00IF0gJiYgWyAhIC1mICR7U30vYWNpbmNsdWRlLm00IF07IHRoZW4KLQkJbXYgJHtTfS9hY2xvY2FsLm00ICR7U30vYWNpbmNsdWRlLm00Ci0JZmkKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuMQotCi0Jb2VfcnVubWFrZSAnSU5TVEFMTFJPT1Q9JHtEfScgaW5zdGFsbAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotREVQRU5EUyA9ICJncm9mZi1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMy4wMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjE4Y2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMy4wMS5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSB4ODYgYXNzZW1ibGVyIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTA5MDQ0ODZmOGZiZjE4NjFjZjQyNzUyZTFhMzllZmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyICIKKworU1JDX1VSSVttZDVzdW1dID0gIjFmN2Q0NjYyMDQwZDI0MzUxZGY3ZDY3MTllZDRmOTdhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4Zjk3YmFmMGE3Zjg5MjEyOGM2NDEzY2ZhOTNiNjlkYzU4MjVmYmJkMDZjNzA5MjhhZWEwMjg4MzVkMTk4ZmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJaWYgWyAtZiAke1N9L2FjbG9jYWwubTQgXSAmJiBbICEgLWYgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgorCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKKwlmaQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCisKKwlvZV9ydW5tYWtlICdJTlNUQUxMUk9PVD0ke0R9JyBpbnN0YWxsCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuNy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkM2IyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuNy4yLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCisKK0RFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgorCitTUkNSRVYgPSAiNzE3YjdiNGEzMWRiNjAyNzIwNzU4OGMwZmI4OWMzZWFkMzg0NzQ3YiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmUvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKK30KKworZG9fY29tcGlsZSgpIHsKKwkuL2NvbmZpZ3VyZS5weQorCW5pbmphCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzZhZTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2gKQEAgLTAsMCArMSwxMTIgQEAKK0Zyb20gZDQyYjIzZjRmYjVkNmJkNThlOTJlOTk1ZmU1YmVmYzc2ZWZiYWUwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxNTo0Nzo1OCArMDMwMAorU3ViamVjdDogW1BBVENIXSBTd2l0Y2ggYWxsIHNjcmlwdHMgdG8gdXNlIFB5dGhvbiAzLngKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG1ha2VQYWNrYWdlICAgICAgICAgIHwgMiArLQorIG9wa2ctY29tcGFyZS1pbmRleGVzIHwgMiArLQorIG9wa2ctZ3JhcGgtZGVwcyAgICAgIHwgMiArLQorIG9wa2ctbGlzdC1maWVsZHMgICAgIHwgMiArLQorIG9wa2ctbWFrZS1pbmRleCAgICAgIHwgMiArLQorIG9wa2ctc2hvdy1kZXBzICAgICAgIHwgMiArLQorIG9wa2ctdW5idWlsZCAgICAgICAgIHwgMiArLQorIG9wa2ctdXBkYXRlLWluZGV4ICAgIHwgMiArLQorIG9wa2cucHkgICAgICAgICAgICAgIHwgMiArLQorIDkgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFrZVBhY2thZ2UgYi9tYWtlUGFja2FnZQoraW5kZXggNGJkZmM1Ni4uMDIxMjRkZCAxMDA3NTUKKy0tLSBhL21ha2VQYWNrYWdlCisrKysgYi9tYWtlUGFja2FnZQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBUaGUgZ2VuZXJhbCBhbGdvcml0aG0gdGhpcyBwcm9ncmFtIGZvbGxvd3MgZ29lcyBsaWtlIHRoaXM6CisgIyAgIFJ1biB0YXIgdG8gZXh0cmFjdCBjb250cm9sIGZyb20gY29udHJvbC50YXIuZ3ogZnJvbSB0aGUgcGFja2FnZS4KK2RpZmYgLS1naXQgYS9vcGtnLWNvbXBhcmUtaW5kZXhlcyBiL29wa2ctY29tcGFyZS1pbmRleGVzCitpbmRleCBiNjBkMjBhLi44MGMxMjYzIDEwMDc1NQorLS0tIGEvb3BrZy1jb21wYXJlLWluZGV4ZXMKKysrKyBiL29wa2ctY29tcGFyZS1pbmRleGVzCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgCitkaWZmIC0tZ2l0IGEvb3BrZy1ncmFwaC1kZXBzIGIvb3BrZy1ncmFwaC1kZXBzCitpbmRleCA2NjUzZmQ1Li5mMWUzNzZhIDEwMDc1NQorLS0tIGEvb3BrZy1ncmFwaC1kZXBzCisrKysgYi9vcGtnLWdyYXBoLWRlcHMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAKK2RpZmYgLS1naXQgYS9vcGtnLWxpc3QtZmllbGRzIGIvb3BrZy1saXN0LWZpZWxkcworaW5kZXggYzE0YTkwZi4uMjRmNzk1NSAxMDA3NTUKKy0tLSBhL29wa2ctbGlzdC1maWVsZHMKKysrKyBiL29wa2ctbGlzdC1maWVsZHMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAKK2RpZmYgLS1naXQgYS9vcGtnLW1ha2UtaW5kZXggYi9vcGtnLW1ha2UtaW5kZXgKK2luZGV4IDNmNzU3ZjYuLjI5ODhmOWYgMTAwNzU1CistLS0gYS9vcGtnLW1ha2UtaW5kZXgKKysrKyBiL29wa2ctbWFrZS1pbmRleAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctc2hvdy1kZXBzIGIvb3BrZy1zaG93LWRlcHMKK2luZGV4IDE1M2YyMWUuLjRlMThiNGYgMTAwNzU1CistLS0gYS9vcGtnLXNob3ctZGVwcworKysrIGIvb3BrZy1zaG93LWRlcHMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAKK2RpZmYgLS1naXQgYS9vcGtnLXVuYnVpbGQgYi9vcGtnLXVuYnVpbGQKK2luZGV4IDRmMzZiZWMuLjU3NjQyYzkgMTAwNzU1CistLS0gYS9vcGtnLXVuYnVpbGQKKysrKyBiL29wa2ctdW5idWlsZAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctdXBkYXRlLWluZGV4IGIvb3BrZy11cGRhdGUtaW5kZXgKK2luZGV4IDM0MWMxYzIuLjdiZmY4YTEgMTAwNzU1CistLS0gYS9vcGtnLXVwZGF0ZS1pbmRleAorKysrIGIvb3BrZy11cGRhdGUtaW5kZXgKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIAorIGltcG9ydCBzeXMsIG9zCitkaWZmIC0tZ2l0IGEvb3BrZy5weSBiL29wa2cucHkKK2luZGV4IDJlY2FjOGEuLjdlNjRkZTQgMTAwNjQ0CistLS0gYS9vcGtnLnB5CisrKysgYi9vcGtnLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAgIENvcHlyaWdodCAoQykgMjAwMSBBbGV4YW5kZXIgUy4gR3V5IDxhN3JAYW5kZXJuLm9yZz4KKyAjICAgICAgICAgICAgICAgICAgICAgIEFuZGVybiBSZXNlYXJjaCBMYWJzCisgIworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDZjYzhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIKQEAgLTAsMCArMSw2MiBAQAorU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgorU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PTYzY2U5ZTZiY2M0NDUxODFjZDllNGJhZjRiNGNjYzM1IgorUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS8ke0JQTn0vc25hcHNob3QvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly90YXJfaWdub3JlX2Vycm9yLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTE5ZTA5Yzc5YmYxMTUyYWFjNjJlOGExMjBkNjc5ZmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y0YjA4OTEyZTI2YTNmNGY2ZjQyM2YzYjRlNzE1N2E3M2IxZjNhNzQ4M2ZjNTliMjE2ZDFhODBiNTBiMGMzOCIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKKyMgRm9yIG5hdGl2ZSBidWlsZHMgd2UgdXNlIHRoZSBob3N0IFB5dGhvbgorUFlUSE9OUkRFUFMgPSAicHl0aG9uMyBweXRob24zLXNoZWxsIHB5dGhvbjMtaW8gcHl0aG9uMy1tYXRoIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtZmNudGwgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy10ZXh0dXRpbHMgcHl0aG9uMy1zdHJpbmdvbGQiCitQWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgorCitQQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgorUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKKwlmaQorCisgICAgaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBncmVwIC1sWiAiL3Vzci9iaW4vZW52LipweXRob24iICR7RH0ke2JpbmRpcn0vKiB8IHhhcmdzIC0wIHJtCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCWlmIFsgLWUgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIgXTsgdGhlbgorCQlzZWQgLWkgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIC1lICdzLC91c3IvYmluLCR7YmluZGlyfSxnOyBzLC91c3IvbGliLCR7bm9uYXJjaF9saWJkaXJ9LGcnCisJZmkKK30KKworIyBUaGVzZSBhcmUgZW1wdHkgYW5kIHdpbGwgcHVsbCBweXRob24zLWRldiBpbnRvIGltYWdlcyB3aGVyZSBpdCB3b3VsZG4ndAorIyBoYXZlIGJlZW4gb3RoZXJ3aXNlLCBzbyBkb24ndCBnZW5lcmF0ZSB0aGVtLgorUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCisKK1BBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCitGSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCitSUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCisKK3BrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgeworCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCisJcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGVlYTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKLVNVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT0xNTkxNzQ5MWFkNmJmN2FjYzY2NmNhNWY3Y2MxZTA4MyIKLVBST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCi0KLVNSQ1JFViA9ICIxYTcwOGZkNzNkMTBjMmI3Njc3ZGQ0Y2M0ZTAxNzc0NmViYmI5MTY2IgotUFYgPSAiMC4zLjQrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyBcCi0iCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly90YXJfaWdub3JlX2Vycm9yLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotUFlUSE9OUkRFUFMgPSAicHl0aG9uIHB5dGhvbi1zaGVsbCBweXRob24taW8gcHl0aG9uLW1hdGggcHl0aG9uLWNyeXB0IHB5dGhvbi1sb2dnaW5nIHB5dGhvbi1mY250bCBweXRob24tc3VicHJvY2VzcyBweXRob24tcGlja2xlIHB5dGhvbi1jb21wcmVzc2lvbiBweXRob24tdGV4dHV0aWxzIHB5dGhvbi1zdHJpbmdvbGQiCi1QWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgotCi1QQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgotUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCi0JaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCi0JCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKLQlmaQotfQotCi1QQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgotRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotCi1wa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKLQlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcwotCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWFyY2gtY29uZmlnXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWFyY2gtY29uZmlnXzEuMC5iYgppbmRleCA2ODIxNDJhLi4wYzJkYmM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1hcmNoLWNvbmZpZ18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2ctYXJjaC1jb25maWdfMS4wLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBcmNoaXRlY3R1cmUtZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gZm9yIG9wa2ciCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCiBMSUNFTlNFID0gIk1JVCIKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiBQUiA9ICJyMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCmluZGV4IDhlNzQwMjYuLjQzMmMzZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZQpAQCAtOCw3ICs4LDcgQEAKIFR5cGU9b25lc2hvdAogRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9wb3N0aW5zdAogRXhlY1N0YXJ0PS1AQkFTRV9CSU5ESVJAL3NoIC1jICIgaWYgWyAkUE9TVElOU1RfTE9HR0lORyA9ICcxJyBdOyB0aGVuIEBCSU5ESVJAL29wa2cgY29uZmlndXJlID4gJExPR0ZJTEUgMj4mMTsgZWxzZSBAQklORElSQC9vcGtnIGNvbmZpZ3VyZTsgZmkiCi1FeGVjU3RhcnRQb3N0PUBCQVNFX0JJTkRJUkAvc3lzdGVtY3RsIGRpc2FibGUgb3BrZy1jb25maWd1cmUuc2VydmljZQorRXhlY1N0YXJ0UG9zdD1AQkFTRV9CSU5ESVJAL3N5c3RlbWN0bCAtLW5vLXJlbG9hZCBkaXNhYmxlIG9wa2ctY29uZmlndXJlLnNlcnZpY2UKIFN0YW5kYXJkT3V0cHV0PXN5c2xvZwogUmVtYWluQWZ0ZXJFeGl0PU5vCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL3N0YXR1cy1jb25mZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL3N0YXR1cy1jb25mZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjNDA1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9zdGF0dXMtY29uZmZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAwODZkNTA4M2RmZTAxMDIzNjhjYjdjOGNlODliMGMwNmI2NGNhNzczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTAgSmFuIDIwMTcgMTU6MjQ6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIG9wa2dfY21kOiBvbmx5IGxvb2sgYXQgY29uZmZpbGUgc3RhdHVzIGlmIHdlJ3JlIGdvaW5nIHRvCi0gb3V0cHV0IGl0Ci0KLVRoZSBsb29wIHRvIGNvbXBhcmUgdGhlIHJlY29yZGVkIGNvbmZmaWxlIGhhc2ggd2l0aCB0aGVpciBoYXNoIG9uIGRpc2sgaXMKLW91dHB1dHRlZCBhdCBsZXZlbCBJTkZPIGJ1dCB0aGUgbG9vcCB3YXMgZXhlY3V0ZWQgYXQgbGV2ZWwgTk9USUNFIGFuZCBoaWdoZXIuCi0KLVRoaXMgbWVhbnMgdGhhdCBpZiBhIGNvbmZmaWxlIGhhZCBiZWVuIGRlbGV0ZWQgdGhlIHN0YXR1cyBvcGVyYXRpb24gd291bGQKLXByb2R1Y2UgZXJyb3IgbWVzc2FnZXMgZm9yIG91dHB1dCBpdCBpc24ndCBkaXNwbGF5aW5nLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gbGlib3BrZy9vcGtnX2NtZC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX2NtZC5jIGIvbGlib3BrZy9vcGtnX2NtZC5jCi1pbmRleCBiYTU3YzZhLi4zNzQxNmZkIDEwMDY0NAotLS0tIGEvbGlib3BrZy9vcGtnX2NtZC5jCi0rKysgYi9saWJvcGtnL29wa2dfY21kLmMKLUBAIC02MzgsNyArNjM4LDcgQEAgc3RhdGljIGludCBvcGtnX2luZm9fc3RhdHVzX2NtZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGludCBpbnN0YWxsZWRfb25seSkKLSAKLSAgICAgICAgIHBrZ19mb3JtYXR0ZWRfaW5mbyhzdGRvdXQsIHBrZyk7Ci0gCi0tICAgICAgICBpZiAob3BrZ19jb25maWctPnZlcmJvc2l0eSA+PSBOT1RJQ0UpIHsKLSsgICAgICAgIGlmIChvcGtnX2NvbmZpZy0+dmVyYm9zaXR5ID49IElORk8pIHsKLSAgICAgICAgICAgICBjb25mZmlsZV9saXN0X2VsdF90ICppdGVyOwotICAgICAgICAgICAgIGZvciAoaXRlciA9IG52X3BhaXJfbGlzdF9maXJzdCgmcGtnLT5jb25mZmlsZXMpOyBpdGVyOwotICAgICAgICAgICAgICAgICAgaXRlciA9IG52X3BhaXJfbGlzdF9uZXh0KCZwa2ctPmNvbmZmaWxlcywgaXRlcikpIHsKLS0tIAotMi44LjEKLQotRnJvbSAyMjVlMzBlMGY5ZmE3Y2ZlYWEzZjg5ZTI3MTNlNTE0N2FiMzcxZGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTAgSmFuIDIwMTcgMTU6Mjg6NDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGNvbmZmaWxlOiBncmFjZWZ1bGx5IGhhbmRsZSBkZWxldGVkIGNvbmZmaWxlcyBpbgotIGNvbmZmaWxlX2hhc19iZWVuX21vZGlmaWVkCi0KLUhhbmRsZSBjb25mZmlsZXMgdGhhdCBkb24ndCBleGlzdCBncmFjZWZ1bGx5IHNvIHRoYXQgaW5zdGVhZCBvZiBzaG93aW5nIGFuIGVycm9yCi1tZXNzYWdlIGZyb20gZmlsZV9tZDVzdW1fYWxsb2MoKSBhIG5vdGljZSB0aGF0IHRoZSBmaWxlIGhhcyBiZWVuIGRlbGV0ZWQgaXMKLXNob3duIGluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJvcGtnL2NvbmZmaWxlLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9jb25mZmlsZS5jIGIvbGlib3BrZy9jb25mZmlsZS5jCi1pbmRleCBiMmYyNDY5Li43YjRiODdiIDEwMDY0NAotLS0tIGEvbGlib3BrZy9jb25mZmlsZS5jCi0rKysgYi9saWJvcGtnL2NvbmZmaWxlLmMKLUBAIC01MSw2ICs1MSwxMSBAQCBpbnQgY29uZmZpbGVfaGFzX2JlZW5fbW9kaWZpZWQoY29uZmZpbGVfdCAqIGNvbmZmaWxlKQotICAgICB9Ci0gCi0gICAgIHJvb3RfZmlsZW5hbWUgPSByb290X2ZpbGVuYW1lX2FsbG9jKGZpbGVuYW1lKTsKLSsgICAgaWYgKCFmaWxlX2V4aXN0cyhyb290X2ZpbGVuYW1lKSkgewotKyAgICAgICAgb3BrZ19tc2coSU5GTywgIkNvbmZmaWxlICVzIGRlbGV0ZWRcbiIsIGNvbmZmaWxlLT5uYW1lKTsKLSsgICAgICAgIGZyZWUocm9vdF9maWxlbmFtZSk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotIAotICAgICBtZDVzdW0gPSBmaWxlX21kNXN1bV9hbGxvYyhyb290X2ZpbGVuYW1lKTsKLSAKLS0tIAotMi44LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMWZkZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgotU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgotCi1ERVBFTkRTID0gImxpYmFyY2hpdmUiCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdGF0dXMtY29uZmZpbGUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmM1MmEwNjU0OTkwNTZhMTk2ZTBiNDVhMjdlMzkyZGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUwYjkwMGI1M2I2MmE5YjI4MGI2MDFhMTk2ZjAyZGE4MTA5MWVkYTJmMzQ3OGM1MDk1MTJhYTVhMWVjOTNiZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wa2ctY29uZmlndXJlLnNlcnZpY2UiCi0KLXRhcmdldF9sb2NhbHN0YXRlZGlyIDo9ICIke2xvY2Fsc3RhdGVkaXJ9IgotT1BLR0xJQkRJUiA9ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgotCi1QQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsZ3BnbWUgbGliZ3BnLWVycm9yLGdudXBnIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW3NzbC1jdXJsXSA9ICItLWVuYWJsZS1zc2wtY3VybCwtLWRpc2FibGUtc3NsLWN1cmwsY3VybCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LC0tZGlzYWJsZS1zaGEyNTYiCi1QQUNLQUdFQ09ORklHW3BhdGhmaW5kZXJdID0gIi0tZW5hYmxlLXBhdGhmaW5kZXIsLS1kaXNhYmxlLXBhdGhmaW5kZXIscGF0aGZpbmRlciIKLVBBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWxvY2Fsc3RhdGVkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtsb2NhbHN0YXRlZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0gLS1zeXNjb25mZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7c3lzY29uZmRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGtnCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCi0JZWNobyAib3B0aW9uIGxpc3RzX2RpciAke09QS0dMSUJESVJ9L29wa2cvbGlzdHMiID4+JHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQotCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5Ci0JaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQkJLWUgJ3MsQFNZU1RFTURfVU5JVERJUkAsJHtzeXN0ZW1kX3VuaXRkaXJ9LGcnIFwKLQkJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wa2ctY29uZmlndXJlLnNlcnZpY2UKLQlmaQotfQotCi1SREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVJSRVBMQUNFU18ke1BOfSA9ICJvcGtnLW5vZ3BnIG9wa2ctY29sbGF0ZXJhbCIKLVJDT05GTElDVFNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotUlBST1ZJREVTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKLQotUEFDS0FHRVMgPSsgImxpYm9wa2ciCi0KLUZJTEVTX2xpYm9wa2cgPSAiJHtsaWJkaXJ9Lyouc28uKiAke09QS0dMSUJESVJ9L29wa2cvIgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTUxMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIKQEAgLTAsMCArMSw3NSBAQAorU1VNTUFSWSA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciIKK1NVTU1BUllfbGlib3BrZyA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJ5IgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy9pc3N1ZXMvbGlzdCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29wa2cuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTIxO21kNT05MDQzNWE1MTljNmVhNjllZjIyZTRhODhiY2M1MmZhMCIKKworREVQRU5EUyA9ICJsaWJhcmNoaXZlIgorCitQRSA9ICIxIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL29wa2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2dfY29uZi1jcmVhdGUtb3BrZy5sb2NrLWluLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDIwMmQwOWVhMDkzMjk0MzA3MWI4NDI2MjZjYWIxM2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM0YmMyMWRlYTExMjYyMTEzZmE4NmI5MjhkMDk4MTI2MThiMzk2NmYzNTIzNTBjZjkxNmE2YWUwZDM0M2YzMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wa2ctY29uZmlndXJlLnNlcnZpY2UiCisKK3RhcmdldF9sb2NhbHN0YXRlZGlyIDo9ICIke2xvY2Fsc3RhdGVkaXJ9IgorT1BLR0xJQkRJUiA9ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgorCitQQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsZ3BnbWUgbGliZ3BnLWVycm9yLGdudXBnIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW3NzbC1jdXJsXSA9ICItLWVuYWJsZS1zc2wtY3VybCwtLWRpc2FibGUtc3NsLWN1cmwsY3VybCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LC0tZGlzYWJsZS1zaGEyNTYiCitQQUNLQUdFQ09ORklHW3BhdGhmaW5kZXJdID0gIi0tZW5hYmxlLXBhdGhmaW5kZXIsLS1kaXNhYmxlLXBhdGhmaW5kZXIscGF0aGZpbmRlciIKK1BBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWxvY2Fsc3RhdGVkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtsb2NhbHN0YXRlZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0gLS1zeXNjb25mZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7c3lzY29uZmRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGtnCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCisJZWNobyAib3B0aW9uIGxpc3RzX2RpciAke09QS0dMSUJESVJ9L29wa2cvbGlzdHMiID4+JHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKworCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5CisJaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQkJLWUgJ3MsQFNZU1RFTURfVU5JVERJUkAsJHtzeXN0ZW1kX3VuaXRkaXJ9LGcnIFwKKwkJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wa2ctY29uZmlndXJlLnNlcnZpY2UKKwlmaQorfQorCitSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKK1JSRVBMQUNFU18ke1BOfSA9ICJvcGtnLW5vZ3BnIG9wa2ctY29sbGF0ZXJhbCIKK1JDT05GTElDVFNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorUlBST1ZJREVTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKKworUEFDS0FHRVMgPSsgImxpYm9wa2ciCisKK0ZJTEVTX2xpYm9wa2cgPSAiJHtsaWJkaXJ9Lyouc28uKiAke09QS0dMSUJESVJ9L29wa2cvIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NzM0MmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiT3B0aW1pc2VkIElubmVyIExvb3AgUnVudGltZSBDb21waWxlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL21vZHVsZXMvb3JjLmh0bWwiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0MDBiZDlkMDllOGFmNTZiOWVjOTgyYjNkODU3OTdlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9vcmMvb3JjLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhlOWJlZjY3N2JhZTI4OWQzMzI0ZDgxYzMzN2E0NTA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkNTJmYTgwZWY4NDk4ODM1OWMzNDM0ZTFlZWEzMDJkMDc3YTA4OTg3YWJkZGU2OTA1Njc4ZWJjYWQ0ZmE2NDkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIm9yYy1leGFtcGxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcmMtLioiCi1GSUxFU19vcmMtZXhhbXBsZXMgPSAiJHtsaWJkaXJ9L29yYy8qIgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAzZjk5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjcuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTgzN2RjMjBkYWNiNWI2Njg5MzViYmRlZDEwY2JiNjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFlNTNlNThmYzgxNThlNTk4NmExZjFhNDlhNmQ5NzBjNWIxNjQ5Mzg0MWNmN2I5ZGUyYzJiZGU3Y2UzNmI5MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKK0ZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGlidG9vbC10YWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGlidG9vbC10YWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y2MDFhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitSZXBlY3QgTElCVE9PTEZMQUdTCisKK1RoaXMgYWRkIGEga25vYiB0aGF0IGNhbiBiZSBjb250cm9sbGVkIGZyb20gZW52IHRvIHNldCBnZW5lcmljIG9wdGlvbnMKK2ZvciBsaWJ0b29sCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4KKysrKyB1dWlkLTEuNi4yL01ha2VmaWxlLmluCitAQCAtNTYsNyArNTYsNyBAQCBSTSAgICAgICAgICA9IHJtIC1mCisgQ1AgICAgICAgICAgPSBjcAorIFJNRElSICAgICAgID0gcm1kaXIKKyBTSFRPT0wgICAgICA9ICQoUykvc2h0b29sCistTElCVE9PTCAgICAgPSBATElCVE9PTEAKKytMSUJUT09MICAgICA9IEBMSUJUT09MQCAkKExJQlRPT0xGTEFHUykKKyBUUlVFICAgICAgICA9IHRydWUKKyBQT0QyTUFOICAgICA9IHBvZDJtYW4KKyBQRVJMICAgICAgICA9IEBQRVJMQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiCmluZGV4IDg1YTFiY2YuLjVkOWNhNzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKQEAgLTI3LDYgKzI3LDcgQEAKIAkgICBmaWxlOi8vdXVpZC1ub3N0cmlwLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luc3RhbGwtcGMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sLXRhZy5wYXRjaCBcCiAJICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiNWRiMGQ0M2E5MDIyYTZlYmJiYzI1MzM3YWUyODk0MmYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFhNjE1MjI1YmFhNWY4YmI2ODY4MjQ0MjNmNTBlNDQyN2FjZDNmNzBkMzk0NzY1YmRmZjMyODAxZjBmZDViMCIKQEAgLTM3LDYgKzM4LDcgQEAKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kY2UgLS13aXRob3V0LWN4eCAtLXdpdGhvdXQtcGVybCAtLXdpdGhvdXQtcGVybC1jb21wYXQgLS13aXRob3V0LXBocCAtLXdpdGhvdXQtcGdzcWwiCiBFWFRSQV9PRUNPTkYgPSAiLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vb3NzcCIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAjIFRoaXMgcGFja2FnZSBoYXMgYSBjb21wbGV0ZWx5IGN1c3RvbSBhY2xvY2FsLm00LCB3aGljaCBzaG91bGQgYmUgYWNpbmNsdWRlLm00LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9hdm9pZGhvbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9hdm9pZGhvbGVzLnBhdGNoCmluZGV4IGEyNzM2ODguLjBiNDVjMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvYXZvaWRob2xlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2F2b2lkaG9sZXMucGF0Y2gKQEAgLTMxLDcgKzMxLDcgQEAKIFJQCiAyMDE3LzMvNwogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKIAogSW5kZXg6IHBhdGNoZWxmLTAuOS9zcmMvcGF0Y2hlbGYuY2MKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2ZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NGNiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2ZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK2NvbW1pdCAxY2MyMzRmZWE1NjAwMTkwZDg3MjMyOWFjYTYwZTIzNjVjZWZjMzllCitBdXRob3I6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorRGF0ZTogICBGcmkgSnVsIDIxIDEyOjMzOjUzIDIwMTcgKzAzMDAKKworZml4IGFkanVzdGluZyBzdGFydFBhZ2UKKworc3RhcnRQYWdlIGlzIGFkanVzdGVkIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIGV4ZWN1dGFibGVzLgorVGhpcyByZXN1bHRzIGluIGluY29ycmVjdCBhZGRyZXNzZXMgYXNzaWduZWQgdG8gSU5URVJQIGFuZCBMT0FECitwcm9ncmFtIGhlYWRlcnMsIHdoaWNoIGJyZWFrcyBwYXRjaGVkIGV4ZWN1dGFibGUuCisKK0FkanVzdGluZyBzdGFydFBhZ2UgdmFyaWFibGUgb25seSB3aGVuIHN0YXJ0T2Zmc2V0ID4gc3RhcnRQYWdlCitzaG91bGQgZml4IHRoaXMuCisKK1RoaXMgY2hhbmdlIGlzIHJlbGF0ZWQgdG8gdGhlIGlzc3VlIE5peE9TIzEwCisKK1NpZ25lZC1vZmYtYnk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorCitHaXRodWIgUFI6IGh0dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9wYXRjaGVsZi9wdWxsLzEyNworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitkaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNjIGIvc3JjL3BhdGNoZWxmLmNjCitpbmRleCBjYmQzNmMwLi5lOWQ3ZWE1IDEwMDY0NAorLS0tIGEvc3JjL3BhdGNoZWxmLmNjCisrKysgYi9zcmMvcGF0Y2hlbGYuY2MKK0BAIC03MjAsMTAgKzcyMCw4IEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46OnJld3JpdGVTZWN0aW9uc0xpYnJhcnkoKQorICAgICAgICBzaW5jZSBEWU4gZXhlY3V0YWJsZXMgdGVuZCB0byBzdGFydCBhdCB2aXJ0dWFsIGFkZHJlc3MgMCwgc28KKyAgICAgICAgcmV3cml0ZVNlY3Rpb25zRXhlY3V0YWJsZSgpIHdvbid0IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUKKyAgICAgICAgYW55IHZpcnR1YWwgYWRkcmVzcyBzcGFjZSB0byBncm93IGRvd253YXJkcyBpbnRvLiAqLworLSAgICBpZiAoaXNFeGVjdXRhYmxlKSB7CistICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPj0gc3RhcnRQYWdlKSB7CistICAgICAgICAgICAgZGVidWcoInNoaWZ0aW5nIG5ldyBQVF9MT0FEIHNlZ21lbnQgYnkgJWQgYnl0ZXMgdG8gd29yayBhcm91bmQgYSBMaW51eCBrZXJuZWwgYnVnXG4iLCBzdGFydE9mZnNldCAtIHN0YXJ0UGFnZSk7CistICAgICAgICB9CisrICAgIGlmIChpc0V4ZWN1dGFibGUgJiYgc3RhcnRPZmZzZXQgPiBzdGFydFBhZ2UpIHsKKysgICAgICAgIGRlYnVnKCJzaGlmdGluZyBuZXcgUFRfTE9BRCBzZWdtZW50IGJ5ICVkIGJ5dGVzIHRvIHdvcmsgYXJvdW5kIGEgTGludXgga2VybmVsIGJ1Z1xuIiwgc3RhcnRPZmZzZXQgLSBzdGFydFBhZ2UpOworICAgICAgICAgc3RhcnRQYWdlID0gc3RhcnRPZmZzZXQ7CisgICAgIH0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIKaW5kZXggMDFmMGU2Mi4uZDcwMzAzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIKQEAgLTMsNiArMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9oYW5kbGUtcmVhZC1vbmx5LWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0luY3JlYXNlLW1heFNpemUtdG8tNjRNQi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hdm9pZGhvbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoIFwKICIKIAogTElDRU5TRSA9ICJHUEx2MyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjIuMi5iYgppbmRleCA0NzZmYTZmLi45NjM1YTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4yLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiCkBAIC03LDkgKzcsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKIAotU1JDX1VSSSA9ICJodHRwOi8vZ2VudG9vLm9zdW9zbC5vcmcvZGlzdGZpbGVzL3BheC11dGlscy0ke1BWfS50YXIueHogXAotIgotCitTUkNfVVJJID0gImh0dHBzOi8vZGV2LmdlbnRvby5vcmcvfnZhcGllci9kaXN0L3BheC11dGlscy0ke1BWfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiYTU4MDQ2ODMxOGYwZmY0MmVkZjRhOGNkMzE0Y2M5NDIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y0YTdmOGRiNmI0NzQzYWRkZTc1ODJmYTQ4OTkyYWQwMTc3Njc5NmZjZGUwMzA2ODM3MzJmNTYyMjEzMzdkOSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMyODAzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAotVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCi1hbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL1VSSS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDdjM2RhMjlhNzk0ZjcyNzMwZTAxYWE1YTcxNWRhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzhlY2EwZDdmMzllNzRiYmMxNDcwNjI5M2U2NTNiNjk5MjM4ZWViMWE3NjkwY2M5YzEzNmZiOGMyNjQ0MTE1IgotCi1TID0gIiR7V09SS0RJUn0vVVJJLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotaW5oZXJpdCBjcGFuCi0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzOTljMTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43Mi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIG1hbmlwdWxhdGUgYW5kIGFjY2VzcyBVUkkgc3RyaW5ncyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgVVJJLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIFwKK1RoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgVVJJIGNsYXNzLiBVUkkgb2JqZWN0cyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgXAorYW5kIG1hbmlwdWxhdGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlc2Ugc3RyaW5ncy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9VUkkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ1M2U5NGZhZTY3MjgwMGY4M2JjMWJkN2EzOGI1M2YiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0UvRVQvRVRIRVIvVVJJLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImNkNTZkODFlZDQyOWVmYWE5N2U3ZjNmZjA4ODUxYjQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1ZjE0NDMxZDRiMzAwZGU0YmUxMTYzYjBiNTMzMmRlMmQ3ZmJkYTRmMDVmZjFlZDE5OGE4ZTkzMzBkNDBhMzIiCisKK1MgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgorCitpbmhlcml0IGNwYW4KKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorCWNwYW5fZG9fY29tcGlsZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgppbmRleCBkOWJiZjcxLi5jYzNhNjYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJYTUw6OlBhcnNlciAtIEEgcGVybCBtb2R1bGUgZm9yIHBhcnNpbmcgWE1MIGRvY3VtZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliZXhwYXQuZ2l0aHViLmlvLyIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI7ZW5kbGluZT02O21kNT1jODc2N2Q3NTE2MjI5ZjA3YjI2ZTQyZDFjZjhiNTFmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKaW5kZXggMmMwMTk3Ni4uMDQ3ODQyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIKQEAgLTIsNiArMiw3IEBACiBkb2N1bWVudHMgZm9yIHdvcmtpbmcgd2l0aCBYTUwgaW4gUGVybC4gIGxpYnhtbC1wZXJsIHNvZnR3YXJlIFwKIHdvcmtzIGluIGNvbWJpbmF0aW9uIHdpdGggWE1MOjpQYXJzZXIsIFBlcmxTQVgsIFhNTDo6RE9NLCBcCiBYTUw6Okdyb3ZlIGFuZCBvdGhlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L2xpYnhtbC1wZXJsLyIKIFNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBQZXJsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCBYTUwiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjQzYmIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgWE1MIgotREVTQ1JJUFRJT04gPSAiVGhlIFhNTDo6U2ltcGxlIFBlcmwgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIEFQSSBsYXllciBcCi1vbiB0b3Agb2YgYW4gdW5kZXJseWluZyBYTUwgcGFyc2luZyBtb2R1bGUgdG8gbWFpbnRhaW4gWE1MIGZpbGVzIFwKLShlc3BlY2lhbGx5IGNvbmZpZ3VyYXRpb24gZmlsZXMpLiBJdCBpcyBhIGJsdW50IHJld3JpdGUgb2YgWE1MOjpTaW1wbGUgXAotKGJ5IEdyYW50IE1jTGVhbikgdG8gdXNlIHRoZSBYTUw6OkxpYlhNTCBwYXJzZXIgZm9yIFhNTCBzdHJ1Y3R1cmVzLCBcCi13aGVyZSB0aGUgb3JpZ2luYWwgdXNlcyBwbGFpbiBQZXJsIG9yIFNBWCBwYXJzZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1hcmtvdi9YTUwtTGliWE1MLVNpbXBsZS0wLjkzL2xpYi9YTUwvTGliWE1ML1NpbXBsZS5wb2QiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmExMTg3ZmNlZGEwMGVlZTEwYjYyOTYxNDA3ZWE3YmUiCi1ERVBFTkRTICs9ICJsaWJ4bWwtcGFyc2VyLXBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9YTUwvWE1MLVNpbXBsZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwOTE0YWJkZGZjZTc0OTQ1M2VkODliNTQwMjlmMjY0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiOTQ1MGVmMjJlYTk2NDRhZTVkNmFkYTA4NmRjNDMwMGZhMTA1YmUwNTBhMjAzMGViZDRlZmQyOGMxOThlYjQ5IgotCi1TID0gIiR7V09SS0RJUn0vWE1MLVNpbXBsZS0ke1BWfSIKLQotRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNmMmVlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIFhNTCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUw6OlNpbXBsZSBQZXJsIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSBBUEkgbGF5ZXIgXAorb24gdG9wIG9mIGFuIHVuZGVybHlpbmcgWE1MIHBhcnNpbmcgbW9kdWxlIHRvIG1haW50YWluIFhNTCBmaWxlcyBcCisoZXNwZWNpYWxseSBjb25maWd1cmF0aW9uIGZpbGVzKS4gSXQgaXMgYSBibHVudCByZXdyaXRlIG9mIFhNTDo6U2ltcGxlIFwKKyhieSBHcmFudCBNY0xlYW4pIHRvIHVzZSB0aGUgWE1MOjpMaWJYTUwgcGFyc2VyIGZvciBYTUwgc3RydWN0dXJlcywgXAord2hlcmUgdGhlIG9yaWdpbmFsIHVzZXMgcGxhaW4gUGVybCBvciBTQVggcGFyc2Vycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35tYXJrb3YvWE1MLUxpYlhNTC1TaW1wbGUtMC45My9saWIvWE1ML0xpYlhNTC9TaW1wbGUucG9kIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIzNDc3ZTE4YTBkMDQzOTJjZGY0NGFlNzBlNDliNDk1IgorREVQRU5EUyArPSAibGlieG1sLXBhcnNlci1wZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1TaW1wbGUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWNkMmU4ZTM0MjExNjBjNDIyNzc1MjNkNWIyZjRkZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWExNDgxOWZkMTdjNzVmYmI5MGFkY2VjMDQ0NmNlYWIzNTZjYWIwY2NhZmY4NzBmMmUxNjU5MjA1ZGMyNDI0ZiIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TaW1wbGUtJHtQVn0iCisKK0VYVFJBX1BFUkxGTEFHUyA9ICItSSAke1BFUkxIT1NUTElCfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKaW5kZXggZTAxZDExZi4uNmM1NmE3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCkBAIC0zMiw2ICszMiw3IEBACiAJCS1EY2M9IiR7Q0N9IiBcCiAJCS1EY2ZsYWdzPSIke0NGTEFHU30iIFwKIAkJLURsZGZsYWdzPSIke0xERkxBR1N9IiBcCisJCS1EbGRkbGZsYWdzPSIke0xERkxBR1N9IC1zaGFyZWQiIFwKIAkJLURjZl9ieT0iT3BlbiBFbWJlZGRlZCIgXAogCQktRHByZWZpeD0ke3ByZWZpeH0gXAogCQktRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoCmluZGV4IDczOTFhYzUuLjE0YTA1ZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2gKQEAgLTEwLDcgKzEwLDcgQEAKIAogW1lPQ1RPICMxMDMzOF0KIAotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBbMV0gaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEwOTU4OS8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYKaW5kZXggYTYzYjk2OC4uYzU5NzcwMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmCkBAIC0xMyw2ICsxMyw3IEBACiAKIEJ1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNjg4ODQyCiBQYXRjaC1OYW1lOiBkZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vQ1BBTi9saWIvQ1BBTi9GaXJzdFRpbWUucG0gfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW5fZGVmaW5zdGFsbGRpcnMuZGlmZgppbmRleCA2YjUyOTUwLi41NzJmMTQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYKQEAgLTksNiArOSw3IEBACiBvcmRlcmluZywgYnV0IG5vdCBvdXJzLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vQ1BBTi9saWIvQ1BBTi9GaXJzdFRpbWUucG0gfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2RiX2ZpbGVfdmVyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZgppbmRleCAyODBiZjExLi4wODYxNjUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZgpAQCAtOCw2ICs4LDcgQEAKIFBhY2thZ2UgZGVwZW5kZW5jaWVzIGVuc3VyZSB0aGUgY29ycmVjdCBsaWJyYXJ5IGlzIGxpbmtlZCBhdCBydW4tdGltZS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2RiX2ZpbGVfdmVyLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9EQl9GaWxlL3ZlcnNpb24uYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYKaW5kZXggNjAxZWU0Yy4uYzJhYzRhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2RlcHJlY2F0ZS13aXRoLWFwdC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kZXByZWNhdGUtd2l0aC1hcHQuZGlmZgpAQCAtMTUsNiArMTUsNyBAQAogc2VwYXJhdGUgcGFja2FnZXMgaW5zdGVhZC4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2RlcHJlY2F0ZS13aXRoLWFwdC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxpYi9kZXByZWNhdGUucG0gfCAxNSArKysrKysrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2RvY19pbmZvLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZG9jX2luZm8uZGlmZgppbmRleCBmYmVhMmVlLi40NjYyZWNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZG9jX2luZm8uZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZG9jX2luZm8uZGlmZgpAQCAtNiw2ICs2LDcgQEAKIEluZGljYXRlIHRoYXQgdGhlIHVzZXIgbmVlZHMgdG8gaW5zdGFsbCB0aGUgcGVybC1kb2MgcGFja2FnZS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2RvY19pbmZvLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcG9kL3BlcmwucG9kIHwgMTIgKysrKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZW5jMnhzX2luYy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2VuYzJ4c19pbmMuZGlmZgppbmRleCBlMDc0YjIwLi5iM2JkNThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZW5jMnhzX2luYy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYKQEAgLTExLDYgKzExLDcgQEAKICAgaXNzdWVzIHdpdGggZm9sbG93ID0+IDEgKHNlZSAjNjAzNjg2IGFuZCBbcnQuY3Bhbi5vcmcgIzY0NTg1XSkKIAogUGF0Y2gtTmFtZTogZGViaWFuL2VuYzJ4c19pbmMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0VuY29kZS9iaW4vZW5jMnhzIHwgOCArKysrLS0tLQogIHQvcG9ydGluZy9jdXN0b21pemVkLnQgfCAzICsrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2Vycm5vX3Zlci5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2Vycm5vX3Zlci5kaWZmCmluZGV4IDNkMDkyMjkuLmE5NjVmYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lcnJub192ZXIuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXJybm9fdmVyLmRpZmYKQEAgLTExLDcgKzExLDcgQEAKIGNvbXBhdGlibGUsIGJ1dCBidWlsdCBvbiBhIGRpZmZlcmVudCBtYWNoaW5lLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZXJybm9fdmVyLmRpZmYKLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBleHQvRXJybm8vRXJybm9fcG0uUEwgfCA1IC0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2V4dHV0aWxzX3NldF9saWJwZXJsX3BhdGguZGlmZgppbmRleCBhZGI0YmQ5Li5lMDIzMDM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYKQEAgLTcsNiArNyw3IEBACiBDT1JFIGRpcmVjdG9yeSB0byBtYXRjaCBvdGhlciBzdGF0aWMgbGlicmFyaWVzLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMiArLQogIHBwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2Zha2Vyb290LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmFrZXJvb3QuZGlmZgppbmRleCBlYzQ2MWNmLi5iZGYzNGQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmFrZXJvb3QuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmFrZXJvb3QuZGlmZgpAQCAtMTEsNiArMTEsNyBAQAogcnVsZSB3aGVyZSB0aGUgTWFrZWZpbGUgaXMgY3JlYXRlZCwgYnV0IGlzIGZvciB0aGUgY2xlYW4vYmluYXJ5KiB0YXJnZXRzLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZmFrZXJvb3QuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBNYWtlZmlsZS5TSCB8IDcgKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmluZF9odG1sMnRleHQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmCmluZGV4IGQzMTllNzUuLjA4MjcwOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmCkBAIC0xNiw2ICsxNiw3IEBACiBbTWFpbnRhaW5lcidzIG5vdGU6IGh0bWwydGV4dCBpbiBEZWJpYW4gaXMgbm90IHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCiBhcyB0aGUgaHRtbDJ0ZXh0LnBsIHdoaWNoIGlzIGV4cGVjdGVkLCBidXQgc2hvdWxkIHByb3ZpZGUgc2ltaWxhcgogZnVuY3Rpb25hbGl0eV0uCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vQ1BBTi9saWIvQ1BBTi9EaXN0cmlidXRpb24ucG0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvZG9jdW1lbnRfbWFrZW1ha2VyX2NjZmxhZ3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmCmluZGV4IDYxYTkyNzEuLmYzZDkyNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmCkBAIC0xMCw2ICsxMCw3IEBACiBiaW5hcnkgaW50ZXJmYWNlIG9uIHNvbWUgcGxhdGZvcm1zLgogCiBQYXRjaC1OYW1lOiBmaXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvbWVtb2l6ZV9zdG9yYWJsZV9uc3RvcmUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmCmluZGV4IDUyNWY5NjIuLmQ5YjM2ZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmCkBAIC00Nyw2ICs0Nyw3IEBACiBCdWc6IGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Nzc3OTAKIEZvcndhcmRlZDogaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03Nzc5MAogUGF0Y2gtTmFtZTogZml4ZXMvbWVtb2l6ZV9zdG9yYWJsZV9uc3RvcmUuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL01lbW9pemUvTWVtb2l6ZS9TdG9yYWJsZS5wbSB8ICAyICstCiAgY3Bhbi9NZW1vaXplL3QvdGllX3N0b3JhYmxlLnQgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9uZXRfc210cF9kb2NzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmCmluZGV4IDNjMzE5NzIuLmFmY2Y3ZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9uZXRfc210cF9kb2NzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZgpAQCAtNyw2ICs3LDcgQEAKIEJ1ZzogaHR0cDovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTM2MDM4CiAKIFBhdGNoLU5hbWU6IGZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL2xpYm5ldC9saWIvTmV0L1NNVFAucG0gfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wZXJsLUNubi5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BlcmwtQ25uLmRpZmYKaW5kZXggYjU1NjRmZC4uOWJkZjQxYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BlcmwtQ25uLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BlcmwtQ25uLmRpZmYKQEAgLTEyLDYgKzEyLDcgQEAKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc4ODYzNgogT3JpZ2luOiB1cHN0cmVhbSwgaHR0cDovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXQvODlkODRmZjk2NQogUGF0Y2gtTmFtZTogZml4ZXMvcGVybC1Dbm4uZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3J1bi9zd2l0Y2hDLnQgfCAgNyArKysrKystCiAgdXRpbC5jICAgICAgICAgIHwgMTcgKysrKysrKystLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RfbWFuX3JlcHJvZHVjaWJsZV9kYXRlLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kX21hbl9yZXByb2R1Y2libGVfZGF0ZS5kaWZmCmluZGV4IDdjOWNhODYuLmQyMzU3M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RfbWFuX3JlcHJvZHVjaWJsZV9kYXRlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZgpAQCAtMTMsNiArMTMsNyBAQAogQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy83NTk0MDUKIE9yaWdpbjogdXBzdHJlYW0KIFBhdGNoLU5hbWU6IGZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSAgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KICBjcGFuL3BvZGxhdG9ycy90L2RldmlzZS1kYXRlLnQgfCAyOSArKysrKysrKysrKysrLS0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tZW1wdHktZGF0ZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYKaW5kZXggN2ViYmY5Yy4uOWRlMjliOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYKQEAgLTEwLDYgKzEwLDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD1lMGU5ZmNiNTNlOGZjOTU0YjJiMTk1NTM4NWVlYTE4YzI3Zjg2OWFmCiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODAyNTkKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9wb2RsYXRvcnMvbGliL1BvZC9NYW4ucG0gIHwgMiArLQogIGNwYW4vcG9kbGF0b3JzL3QvZGV2aXNlLWRhdGUudCB8IDYgKysrKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXBpcGUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tcGlwZS5kaWZmCmluZGV4IDFhNjAzNjEuLmQ4ODU4ZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tcGlwZS5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tcGlwZS5kaWZmCkBAIC0xNCw2ICsxNCw3IEBACiBPcmlnaW46IHVwc3RyZWFtLCBodHRwOi8vZ2l0LmV5cmllLm9yZy8/cD1wZXJsL3BvZGxhdG9ycy5naXQ7YT1jb21taXRkaWZmO2g9ZDk4ODcyZTQ2YzkzODYxYjdhYmExNDk0OWUxMjU4NzEyMDg3ZGM1NQogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzc3NDA1CiBQYXRjaC1OYW1lOiBmaXhlcy9wb2RtYW4tcGlwZS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vcG9kbGF0b3JzL2xpYi9Qb2QvTWFuLnBtICAgICB8IDE1ICsrKysrKysrKysrKysrKwogIGNwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMm1hbi5QTCB8ICA0ICsrKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLWRvY3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLWRvY3MuZGlmZgppbmRleCAwY2RmZWZmLi5iNmFlNDA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy1kb2NzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmCkBAIC0xMiw2ICsxMiw3IEBACiBPcmlnaW46IHVwc3RyZWFtLCBodHRwOi8vZ2l0LmV5cmllLm9yZy8/cD1wZXJsL3BvZGxhdG9ycy5naXQ7YT1jb21taXRkaWZmO2g9NTJkYjkzYmY4MGU0YTA2Zjg0OTdlNGViYWRlMDUwNmI2ZWUwZTcwZAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgwMjU5CiBQYXRjaC1OYW1lOiBmaXhlcy9wb2RtYW4tdXRjLWRvY3MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSAgICAgfCAgNiArKysrKy0KICBjcGFuL3BvZGxhdG9ycy9zY3JpcHRzL3BvZDJtYW4uUEwgfCAxMSArKysrKystLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLmRpZmYKaW5kZXggZmJkN2I5ZC4uM2ZiN2MyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy5kaWZmCkBAIC0xNCw2ICsxNCw3IEBACiBPcmlnaW46IHVwc3RyZWFtLCBodHRwOi8vZ2l0LmV5cmllLm9yZy8/cD1wZXJsL3BvZGxhdG9ycy5naXQ7YT1jb21taXRkaWZmO2g9OTEzZmJiMmJkMmNlMDcxZTIwMTI4NjI5MzAyYWUyODUyNTU0Y2FkNAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgwMjU5CiBQYXRjaC1OYW1lOiBmaXhlcy9wb2RtYW4tdXRjLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9wb2RsYXRvcnMvbGliL1BvZC9NYW4ucG0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcmVzcGVjdF91bWFzay5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZgppbmRleCBkMWI0OThiLi5jODY2M2Y1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcmVzcGVjdF91bWFzay5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYKQEAgLTcsNiArNyw3IEBACiBzaXRlIGRpcmVjdG9yaWVzLgogCiBQYXRjaC1OYW1lOiBmaXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1JbnN0YWxsL2xpYi9FeHRVdGlscy9JbnN0YWxsLnBtICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbSB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9pbnN0bW9kc2hfZG9jLmRpZmYKaW5kZXggYTYyYzc0Ni4uN2UxZmQ2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogRGViaWFuIHBvbGljeSBkb2Vzbid0IGluc3RhbGwgLnBhY2tsaXN0IGZpbGVzIGZvciBjb3JlIG9yIHZlbmRvci4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9iaW4vaW5zdG1vZHNoIHwgNCArKystCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xkX3J1bl9wYXRoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZgppbmRleCBkODBmODZjLi5mZjBiMjg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZgpAQCAtNCw2ICs0LDcgQEAKIFN1YmplY3Q6IFJlbW92ZSBzdGFuZGFyZCBsaWJzIGZyb20gTERfUlVOX1BBVEggYXMgcGVyIERlYmlhbiBwb2xpY3kuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSB8IDMgKysrCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmCmluZGV4IDU0ZWY5NjQuLmQ1MzQ3NDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJuZXRfY29uZmlnX3BhdGguZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYKQEAgLTUsNiArNSw3IEBACiAgd3JpdGFibGUuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9saWJuZXRfY29uZmlnX3BhdGguZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL2xpYm5ldC9saWIvTmV0L0NvbmZpZy5wbSB8IDcgKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlicGVybF9lbWJlZF9kb2MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmCmluZGV4IDc2YjgwNTQuLjBjZGMwZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmCkBAIC02LDYgKzYsNyBAQAogQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy8xODY3NzgKIAogUGF0Y2gtTmFtZTogZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgbGliL0V4dFV0aWxzL0VtYmVkLnBtIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbG9jYWxlLXJvYnVzdG5lc3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sb2NhbGUtcm9idXN0bmVzcy5kaWZmCmluZGV4IGZkNDcxZWQuLjdjZjEyNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sb2NhbGUtcm9idXN0bmVzcy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sb2NhbGUtcm9idXN0bmVzcy5kaWZmCkBAIC0xNCw2ICsxNCw3IEBACiBCdWc6IGh0dHBzOi8vcnQucGVybC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0xMjQzMTAKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc4MjA2OAogUGF0Y2gtTmFtZTogZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9ydW4vbG9jYWxlLnQgfCA3ICsrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21ha2VtYWtlci1wYXN0aHJ1LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyLXBhc3RocnUuZGlmZgppbmRleCBmYTBmOWRhLi41ZjA3MTgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyLXBhc3RocnUuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyLXBhc3RocnUuZGlmZgpAQCAtMTEsNiArMTEsNyBAQAogCiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83NTg0NzEKIFBhdGNoLU5hbWU6IGRlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21ha2VtYWtlcl9jdXN0b21pemVkLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyX2N1c3RvbWl6ZWQuZGlmZgppbmRleCBiMWI0Y2I5Li5kODcwYjYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyX2N1c3RvbWl6ZWQuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyX2N1c3RvbWl6ZWQuZGlmZgpAQCAtNCw2ICs0LDcgQEAKIFN1YmplY3Q6IFVwZGF0ZSB0L3BvcnRpbmcvY3VzdG9taXplZC5kYXQgZm9yIGZpbGVzIHBhdGNoZWQgaW4gRGViaWFuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvcG9ydGluZy9jdXN0b21pemVkLmRhdCB8IDggKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21vZF9wYXRocy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21vZF9wYXRocy5kaWZmCmluZGV4IGFlMTU5MDcuLjdlMjI0ODQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tb2RfcGF0aHMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbW9kX3BhdGhzLmRpZmYKQEAgLTE3LDYgKzE3LDcgQEAKIHZlcnNpb24gdGhhbiBpcyBpbmNsdWRlZCBpbiBjb3JlLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vbW9kX3BhdGhzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcGVybC5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbm9fcGFja2xpc3RfcGVybGxvY2FsLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbm9fcGFja2xpc3RfcGVybGxvY2FsLmRpZmYKaW5kZXggYjkxMWZkMi4uNzQ4NGJlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZgpAQCAtNCw2ICs0LDcgQEAKIFN1YmplY3Q6IERvbid0IGluc3RhbGwgLnBhY2tsaXN0IG9yIHBlcmxsb2NhbC5wb2QgZm9yIHBlcmwgb3IgdmVuZG9yCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbSB8IDM1ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wYXRjaGxldmVsLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGF0Y2hsZXZlbC5kaWZmCmluZGV4IDg2NTZiMDIuLjJkMDVhZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wYXRjaGxldmVsLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BhdGNobGV2ZWwuZGlmZgpAQCAtMTAsNiArMTAsNyBAQAogZnJvbSB0aGUgZGViaWFuL3BhdGNoZXMvIGRpcmVjdG9yeSB3aGVuIGJ1aWxkaW5nIHRoZSBwYWNrYWdlLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcGF0Y2hsZXZlbC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHBhdGNobGV2ZWwuaCB8IDMgKysrCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsNWRiLXgtdGVybWluYWwtZW11bGF0b3IucGF0Y2gKaW5kZXggNTMzOTUyYy4uNmYxNjI1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoCkBAIC0xMCw2ICsxMCw3IEBACiBGb3J3YXJkZWQ6IG5vdC1uZWVkZWQKIAogUGF0Y2gtTmFtZTogZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsaWIvcGVybDVkYi5wbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsaXZwLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybGl2cC5kaWZmCmluZGV4IDJjMWVhYjkuLjVjNzQxM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsaXZwLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BlcmxpdnAuZGlmZgpAQCAtMjEsNiArMjEsNyBAQAogU2lnbmVkLW9mZi1ieTogTmlrbyBUeW5pIDxudHluaUBkZWJpYW4ub3JnPgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcGVybGl2cC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHV0aWxzL3BlcmxpdnAuUEwgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZgppbmRleCA2MjcwYjg3Li40NzA3NTYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcG9kMm1hbi1jdXN0b21pemVkLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BvZDJtYW4tY3VzdG9taXplZC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogVXBkYXRlIHBvcnRpbmcvY3VzdG9taXplZC5kYXQgZm9yIHBvZDJtYW4gbW9kaWZpY2F0aW9ucwogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcG9kMm1hbi1jdXN0b21pemVkLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9wb3J0aW5nL2N1c3RvbWl6ZWQuZGF0IHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3ByZWZpeF9jaGFuZ2VzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZgppbmRleCBjNDFlZmJlLi5iNjgxYzNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZgpAQCAtOSw2ICs5LDcgQEAKIG1vZHVsZXMpLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fQW55LnBtICB8IDEyICsrKysrKy0tLS0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgIDMgKy0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BydW5lX2xpYnMuZGlmZgppbmRleCBkMTUzZTBlLi5hMmVkNTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYKQEAgLTEwLDcgKzEwLDcgQEAKIGFuZCBzb21lIG9mIHRoZSBvcmlnaW5hbCBsaXN0IG1heSBiZSBwcmVzZW50IG9uIGJ1aWxkZHMgKHNlZSBCdWcjMTI4MzU1KS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL3BydW5lX2xpYnMuZGlmZgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIENvbmZpZ3VyZSB8IDUgKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3JlZ2VuLXNraXAuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9yZWdlbi1za2lwLmRpZmYKaW5kZXggOGEzZmM5OS4uNWQ5YTdjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3JlZ2VuLXNraXAuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmCkBAIC04LDYgKzgsNyBAQAogdGhlIHJlZ2VuZXJhdGlvbiBjaGVjayBpcyBicm9rZW4gYmVjYXVzZSBsaWIvLmdpdGlnbm9yZSBpcyBtaXNzaW5nLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcmVnZW4tc2tpcC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHJlZ2VuL2xpYl9jbGVhbnVwLnBsIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYKaW5kZXggZWNmYzBiYy4uM2IzNzQ1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmCkBAIC0xMiw2ICsxMiw3IEBACiBTa2lwIHRoZSB0ZXN0IHVudGlsIHRoZSBjdWxwcml0IGlzIGZvdW5kLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvb3AvdGhyZWFkcy50IHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NraXAtdXBzdHJlYW0tZ2l0LXRlc3RzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZgppbmRleCA0Yzg3MTA0Li4yNzlmNGFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZgpAQCAtOSw2ICs5LDcgQEAKIFNraXAgdGhlIHRlc3RzIGFsdG9nZXRoZXIgZXZlbiBpZiB0aGUgLmdpdCBkaXJlY3RvcnkgZXhpc3RzLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3Rlc3QucGwgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc3F1ZWxjaC1sb2NhbGUtd2FybmluZ3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmCmluZGV4IGNiMzE0NTcuLjQ5NjRlNDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmCkBAIC0xNCw2ICsxNCw3IEBACiB0aGUgd2FybmluZyB3aWxsIGJlIHRyaWdnZXJlZCBub3JtYWxseSBhZ2FpbiBhdCB0aGF0IHBvaW50LgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vc3F1ZWxjaC1sb2NhbGUtd2FybmluZ3MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsb2NhbGUuYyAgICAgICAgICAgfCA1ICsrKystCiAgcG9kL3Blcmxsb2NhbGUucG9kIHwgOCArKysrKysrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3dyaXRhYmxlX3NpdGVfZGlycy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3dyaXRhYmxlX3NpdGVfZGlycy5kaWZmCmluZGV4IDUzYWRjMmYuLmFiMzczYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYKQEAgLTYsNiArNiw3IEBACiBQb2xpY3kgcmVxdWlyZXMgZ3JvdXAgd3JpdGFibGUgc2l0ZSBkaXJlY3RvcmllcwogCiBQYXRjaC1OYW1lOiBkZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9leHQtT0RCTV9GaWxlLXQtb2RibS50LWZpeC10aGUtcGF0aC1vZi1kYm10X2NvbW1vbi5wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZXh0LU9EQk1fRmlsZS10LW9kYm0udC1maXgtdGhlLXBhdGgtb2YtZGJtdF9jb21tb24ucC5wYXRjaAppbmRleCA2YjA1Yjg3Li5iODViNTBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9leHQtT0RCTV9GaWxlLXQtb2RibS50LWZpeC10aGUtcGF0aC1vZi1kYm10X2NvbW1vbi5wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2gKQEAgLTksNiArOSw4IEBACiBDYW4ndCBsb2NhdGUgLi4vLi4vdC9saWIvZGJtdF9jb21tb24ucGwgaW4gQElOQwogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBleHQvT0RCTV9GaWxlL3Qvb2RibS50IHwgICAgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCmluZGV4IGNmN2E4ZTEuLmI1NWQyMjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKQEAgLTEyNCwzMCArMTI0LDggQEAKICAgICAgICAgICAgIGNhdCAkaSA+PiBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CiAgICAgICAgIGRvbmUKIAotICAgICAgICAjIEZpeHVwcyBmb3IgdWNsaWJjCi0gICAgICAgIGlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtdWNsaWJjIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC11Y2xpYmNlYWJpIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzLFwoZF9jcnlwdF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX2Z1dGltZXM9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZmluaXRlbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoY3J5cHRfcl9wcm90bz1cKSdcdysnLFwxJzAnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX2dldG5ldGJ5bmFtZV9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRuZXRieW5hbWVfcl9wcm90bz1cKSdcdysnLFwxJzAnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX2dldG5ldGJ5YWRkcl9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRuZXRieWFkZHJfcl9wcm90bz1cKSdcdysnLFwxJzAnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX2dldG5ldGVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRuZXRlbnRfcl9wcm90bz1cKSdcdysnLFwxJzAnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3NvY2thdG1hcms9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc29ja2F0bWFya3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZWFjY2Vzcz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbF9zZXRzX2NudD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb2Jhc2U9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3Rkc3RkaW89XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicywtZnN0YWNrLXByb3RlY3RvciwtZm5vLXN0YWNrLXByb3RlY3RvcixnIiBcCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KLSAgICAgICAgZmkKICAgICAgICAgIyBGaXh1cHMgZm9yIG11c2wKLSAgICAgICAgaWYgWyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsZWFiaSIgXTsgdGhlbgorICAgICAgICBpZiBbICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2wiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2xlYWJpIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNseDMyIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzLFwoZF9saWJtX2xpYl92ZXJzaW9uPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKICAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKICAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsX3NldHNfY250PVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKQEAgLTE5Myw3ICsxNzEsNyBAQAogCQkJOzsKIAllc2FjCiAgICAgICAgICMgVGhlc2UgYXJlIHN0cmV3biBhbGwgb3ZlciB0aGUgc291cmNlIHRyZWUKLSAgICAgICAgZm9yIGZvbyBpbiBgZ3JlcCAtSSAtLWV4Y2x1ZGU9IioucGF0Y2giIC0tZXhjbHVkZT0iKi5kaWZmIiAtLWV4Y2x1ZGU9IioucG9kIiAtLWV4Y2x1ZGU9IlJFQURNRSoiIC1tMSAiL3Vzci9pbmNsdWRlLy4qXC5oIiAke1N9LyogLXIgLWxgICR7U30vdXRpbHMvaDJ4cy5QTCA7IGRvCisgICAgICAgIGZvciBmb28gaW4gYGdyZXAgLUkgLS1leGNsdWRlPSIqLnBhdGNoIiAtLWV4Y2x1ZGU9IiouZGlmZiIgLS1leGNsdWRlPSIqLnBvZCIgLS1leGNsdWRlPSJSRUFETUUqIiAtLWV4Y2x1ZGU9Ikdsb3NzYXJ5IiAtbTEgIi91c3IvaW5jbHVkZS8uKlwuaCIgJHtTfS8qIC1yIC1sYCAke1N9L3V0aWxzL2gyeHMuUEwgOyBkbwogICAgICAgICAgICAgZWNobyBGaXhpbmc6ICRmb28KICAgICAgICAgICAgIHNlZCAtZSAnc3xcKFsgIl4nXCcnSV1cK1wpL3Vzci9pbmNsdWRlL3xcMSR7U1RBR0lOR19JTkNESVJ9L3xnJyAtaSAkZm9vCiAgICAgICAgIGRvbmUKQEAgLTI0NSw2ICsyMjMsNyBAQAogcGVybF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewogICAgICAgICAjIEZpeCB1cCBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgogICAgICAgICBzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtERUJVR19QUkVGSVhfTUFQfSwsZyIgXAogICAgICAgICAgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKICAgICAgICAgICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCiAgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwNWFkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2gKQEAgLTAsMCArMSwyMjQgQEAKK0Zyb20gNGQ3YjRkN2M4ZTk5NjZjNTkzZjQ3MjM1NTYwNzIwNGM2YzgwZmVjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CitEYXRlOiBTdW4sIDQgSnVuIDIwMTcgMTk6MTk6NTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWluaW1hbCB0d2Vha3MgdG8gY29tcGlsZSB3aXRoIFZpc3VhbCBDIDIwMTUKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGdldG9wdF9sb25nLmMgICAgICAgICAgIHwgIDIgKysKKyBsaWJwa2djb25mL2JzZHN0dWJzLmMgICB8ICAxICsKKyBsaWJwa2djb25mL2xpYnBrZ2NvbmYuaCB8ICAyICstCisgbGlicGtnY29uZi9wYXRoLmMgICAgICAgfCAxMCArKysrKy0tLS0tCisgbGlicGtnY29uZi9wa2cuYyAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgbGlicGtnY29uZi9zdGRpbmMuaCAgICAgfCAgOSArKysrKysrLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0b3B0X2xvbmcuYyBiL2dldG9wdF9sb25nLmMKK2luZGV4IGFmZWI2OGQuLjVjZTliZmQgMTAwNjQ0CistLS0gYS9nZXRvcHRfbG9uZy5jCisrKysgYi9nZXRvcHRfbG9uZy5jCitAQCAtNjIsNyArNjIsOSBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2lmbmRlZiBfV0lOMzIKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2VuZGlmCisgCisgI2RlZmluZSBQS0dDT05GX0hBQ0tfTE9HSUNBTF9PUl9BTExfVkFMVUVTCisgCitkaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9ic2RzdHVicy5jIGIvbGlicGtnY29uZi9ic2RzdHVicy5jCitpbmRleCA4ZjcwZmYzLi4yYzAwMGFjIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9ic2RzdHVicy5jCisrKysgYi9saWJwa2djb25mL2JzZHN0dWJzLmMKK0BAIC0xNyw2ICsxNyw3IEBACisgICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAgKi8KKyAKKysjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKK2RpZmYgLS1naXQgYS9saWJwa2djb25mL2xpYnBrZ2NvbmYuaCBiL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oCitpbmRleCA0MDRiZjBjLi41NTFkODVkIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9saWJwa2djb25mLmgKKysrKyBiL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oCitAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgcGtnY29uZl9hdWRpdF9sb2dfZGVwZW5kZW5jeShwa2djb25mX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IHBrZ2NvbmZfcGtnX3QKKyAvKiBwYXRoLmMgKi8KKyB2b2lkIHBrZ2NvbmZfcGF0aF9hZGQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKyBzaXplX3QgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcik7Cistc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcik7Cisrc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcik7CisgYm9vbCBwa2djb25mX3BhdGhfbWF0Y2hfbGlzdChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCk7Cisgdm9pZCBwa2djb25mX3BhdGhfZnJlZShwa2djb25mX2xpc3RfdCAqZGlybGlzdCk7CisgYm9vbCBwa2djb25mX3BhdGhfcmVsb2NhdGUoY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKK2RpZmYgLS1naXQgYS9saWJwa2djb25mL3BhdGguYyBiL2xpYnBrZ2NvbmYvcGF0aC5jCitpbmRleCBkZGRiM2JmLi41OWUwMDNlIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9wYXRoLmMKKysrKyBiL2xpYnBrZ2NvbmYvcGF0aC5jCitAQCAtMjAsNyArMjAsNyBAQAorICMgaW5jbHVkZSA8c3lzL2N5Z3dpbi5oPgorICNlbmRpZgorIAorLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKysjaWYgZGVmaW5lZChIQVZFX1NZU19TVEFUX0gpICYmICEgZGVmaW5lZChfV0lOMzIpCisgIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorICMgZGVmaW5lIFBLR0NPTkZfQ0FDSEVfSU5PREVTCisgI2VuZGlmCitAQCAtMTU2LDEyICsxNTYsMTIgQEAgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKKyAvKgorICAqICFkb2MKKyAgKgorLSAqIC4uIGM6ZnVuY3Rpb246OiBzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QpCisrICogLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCkKKyAgKgorICAqICAgIEFkZHMgdGhlIHBhdGhzIHNwZWNpZmllZCBpbiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHBhdGggbGlzdC4gIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LAorICAqICAgIGFuIG9wdGlvbmFsIGRlZmF1bHQgc2V0IG9mIHBhdGhzIGlzIGFkZGVkLgorICAqCistICogICAgOnBhcmFtIGNoYXIqIGVudmlyb246IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBsb29rIHVwLgorKyAqICAgIDpwYXJhbSBjaGFyKiBlbnZ2YXJuYW1lOiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gbG9vayB1cC4KKyAgKiAgICA6cGFyYW0gY2hhciogZmFsbGJhY2s6IFRoZSBmYWxsYmFjayBwYXRocyB0byB1c2UgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQuCisgICogICAgOnBhcmFtIHBrZ2NvbmZfbGlzdF90KiBkaXJsaXN0OiBUaGUgcGF0aCBsaXN0IHRvIGFkZCB0aGUgcGF0aCBub2RlcyB0by4KKyAgKiAgICA6cGFyYW0gYm9vbCBmaWx0ZXI6IFdoZXRoZXIgdG8gcGVyZm9ybSBkdXBsaWNhdGUgZmlsdGVyaW5nLgorQEAgLTE2OSwxMSArMTY5LDExIEBAIHBrZ2NvbmZfcGF0aF9zcGxpdChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCisgICogICAgOnJ0eXBlOiBzaXplX3QKKyAgKi8KKyBzaXplX3QKKy1wa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCisrcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQorIHsKKyAJY29uc3QgY2hhciAqZGF0YTsKKyAKKy0JZGF0YSA9IGdldGVudihlbnZpcm9uKTsKKysJZGF0YSA9IGdldGVudihlbnZ2YXJuYW1lKTsKKyAJaWYgKGRhdGEgIT0gTlVMTCkKKyAJCXJldHVybiBwa2djb25mX3BhdGhfc3BsaXQoZGF0YSwgZGlybGlzdCwgZmlsdGVyKTsKKyAKK2RpZmYgLS1naXQgYS9saWJwa2djb25mL3BrZy5jIGIvbGlicGtnY29uZi9wa2cuYworaW5kZXggN2FlYmQ2MS4uNWRhY2FlMyAxMDA2NDQKKy0tLSBhL2xpYnBrZ2NvbmYvcGtnLmMKKysrKyBiL2xpYnBrZ2NvbmYvcGtnLmMKK0BAIC0zMCw2ICszMCw4IEBACisgIwlkZWZpbmUgUEtHX0NPTkZJR19SRUdfS0VZICJTb2Z0d2FyZVxccGtnY29uZmlnXFxQS0dfQ09ORklHX1BBVEgiCisgIwl1bmRlZiBQS0dfREVGQVVMVF9QQVRICisgIwlkZWZpbmUgUEtHX0RFRkFVTFRfUEFUSCAiLi4vbGliL3BrZ2NvbmZpZzsuLi9zaGFyZS9wa2djb25maWciCisrI2RlZmluZSBzdHJuY2FzZWNtcCBfc3RybmljbXAKKysjZGVmaW5lIHN0cmNhc2VjbXAgX3N0cmljbXAKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIFBLR19DT05GSUdfRVhUCQkiLnBjIgorQEAgLTEzNCwyMSArMTM2LDIxIEBAIHN0YXRpYyBpbnQgcGtnY29uZl9wa2dfcGFyc2VyX2tleXdvcmRfcGFpcl9jbXAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpwdHIpCisgc3RhdGljIHZvaWQKKyBwa2djb25mX3BrZ19wYXJzZXJfdHVwbGVfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCisgeworLQljaGFyICoqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOworKwljaGFyICoqZGVzdCA9IChjaGFyICoqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOworIAkqZGVzdCA9IHBrZ2NvbmZfdHVwbGVfcGFyc2UoY2xpZW50LCAmcGtnLT52YXJzLCB2YWx1ZSk7CisgfQorIAorIHN0YXRpYyB2b2lkCisgcGtnY29uZl9wa2dfcGFyc2VyX2ZyYWdtZW50X2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQorIHsKKy0JcGtnY29uZl9saXN0X3QgKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKKysJcGtnY29uZl9saXN0X3QgKmRlc3QgPSAocGtnY29uZl9saXN0X3QgKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKKyAJcGtnY29uZl9mcmFnbWVudF9wYXJzZShjbGllbnQsIGRlc3QsICZwa2ctPnZhcnMsIHZhbHVlKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKyBwa2djb25mX3BrZ19wYXJzZXJfZGVwZW5kZW5jeV9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKKyB7CistCXBrZ2NvbmZfbGlzdF90ICpkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7CisrCXBrZ2NvbmZfbGlzdF90ICpkZXN0ID0gKHBrZ2NvbmZfbGlzdF90ICopKChjaGFyICopIHBrZyArIG9mZnNldCk7CisgCXBrZ2NvbmZfZGVwZW5kZW5jeV9wYXJzZShjbGllbnQsIHBrZywgZGVzdCwgdmFsdWUpOworIH0KKyAKK0BAIC0yMzgsNyArMjQwLDcgQEAgcGtnY29uZl9wa2dfdmFsaWRhdGUoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBjb25zdCBwa2djb25mX3BrZ190ICpwa2cpCisgCisgCWZvciAoaSA9IDA7IGkgPCBQS0dDT05GX0FSUkFZX1NJWkUocGtnY29uZl9wa2dfdmFsaWRhdGlvbnMpOyBpKyspCisgCXsKKy0JCWNoYXIgKipwID0gKCh2b2lkICopIHBrZyArIHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zW2ldLm9mZnNldCk7CisrCQljaGFyICoqcCA9IChjaGFyICoqKSgoY2hhciAqKSBwa2cgKyBwa2djb25mX3BrZ192YWxpZGF0aW9uc1tpXS5vZmZzZXQpOworIAorIAkJaWYgKCpwICE9IE5VTEwpCisgCQkJY29udGludWU7CitAQCAtNTg3LDcgKzU4OSw3IEBAIHBrZ2NvbmZfc2Nhbl9hbGwocGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCB2b2lkICpkYXRhLCBwa2djb25mX3BrZ19pdGVyYXRpb25fZnVuCisgCisgI2lmZGVmIF9XSU4zMgorIHN0YXRpYyBwa2djb25mX3BrZ190ICoKKy1wa2djb25mX3BrZ19maW5kX2luX3JlZ2lzdHJ5X2tleShjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIEhLRVkgaGtleSwgY29uc3QgY2hhciAqbmFtZSkKKytwa2djb25mX3BrZ19maW5kX2luX3JlZ2lzdHJ5X2tleShwa2djb25mX2NsaWVudF90ICpjbGllbnQsIEhLRVkgaGtleSwgY29uc3QgY2hhciAqbmFtZSkKKyB7CisgCXBrZ2NvbmZfcGtnX3QgKnBrZyA9IE5VTEw7CisgCitAQCAtMTA0OCw4ICsxMDUwLDEyIEBAIHR5cGVkZWYgc3RydWN0IHsKKyAKKyBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVzW10gPSB7CisgCVtQS0dDT05GX0NNUF9BTlldID0geworLQkJLnJ1bGVjbXAgPSB7fSwKKy0JCS5kZXBjbXAgPSB7fSwKKysJCS5ydWxlY21wID0geworKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCisrICAgICAgICAgICAgICAgIH0sCisrCQkuZGVwY21wID0geworKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCisrICAgICAgICAgICAgICAgIH0sCisgCX0sCisgCVtQS0dDT05GX0NNUF9MRVNTX1RIQU5dID0geworIAkJLnJ1bGVjbXAgPSB7CitAQCAtMTEyMSw3ICsxMTI3LDkgQEAgc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF8KKyAJCQlbUEtHQ09ORl9DTVBfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX2VxLAorIAkJCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25lCisgCQl9LAorLQkJLmRlcGNtcCA9IHt9LAorKwkJLmRlcGNtcCA9IHsKKysJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAorKyAgICAgICAgICAgICAgICB9LAorIAl9LAorIAlbUEtHQ09ORl9DTVBfTk9UX0VRVUFMXSA9IHsKKyAJCS5ydWxlY21wID0geworQEAgLTExMzMsNyArMTE0MSw5IEBAIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfCisgCQkJW1BLR0NPTkZfQ01QX0VRVUFMXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9uZSwKKyAJCQlbUEtHQ09ORl9DTVBfTk9UX0VRVUFMXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9lcQorIAkJfSwKKy0JCS5kZXBjbXAgPSB7fSwKKysJCS5kZXBjbXAgPSB7CisrCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKKysgICAgICAgICAgICAgICAgfSwKKyAJfSwKKyB9OworIAorZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvc3RkaW5jLmggYi9saWJwa2djb25mL3N0ZGluYy5oCitpbmRleCA1OGNjNmM3Li5hYzdlNTNjIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9zdGRpbmMuaAorKysrIGIvbGlicGtnY29uZi9zdGRpbmMuaAorQEAgLTI0LDkgKzI0LDcgQEAKKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpZmRlZiBfV0lOMzIKK0BAIC0zNCw4ICszMiwxNSBAQAorICMgaW5jbHVkZSA8d2luZG93cy5oPgorICMgaW5jbHVkZSA8bWFsbG9jLmg+CisgIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkibnVsIgorKyMgaWZuZGVmIHNzaXplX3QKKysjICBpbmNsdWRlIDxCYXNlVHNkLmg+CisrIyAgZGVmaW5lIHNzaXplX3QgU1NJWkVfVAorKyMgZW5kaWYKKysjIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKKyAjZWxzZQorICMgZGVmaW5lIFBBVEhfREVWX05VTEwJIi9kZXYvbnVsbCIKKysjIGluY2x1ZGUgPGRpcmVudC5oPgorKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisgI2VuZGlmCisgCisgI2VuZGlmCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZWJlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gZWEyOGM1YjM0NDU3Y2Y3Njc2MTgxYjI4NGUyMmVhNWY3OWEzMGQ4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDE0OjQ3OjMxICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0ZGluYy5oOiBmaXggYnVpbGQgd2l0aCBtaW5ndworCitGaXhlcyB0aGlzIGJ1aWxkIGVycm9yIHdpdGggbWluZ3c6CisuLi4KK3wgY29tcGlsYXRpb24gdGVybWluYXRlZC4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9saWJwa2djb25mLmg6MTk6MCwKK3wgZnJvbSAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvYXVkaXQuYzoxNjoKK3wgLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL3N0ZGluYy5oOjM2OjEyOiBmYXRhbCBlcnJvcjogQmFzZVRzZC5oOiBObworc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCAjIGluY2x1ZGUgPEJhc2VUc2QuaD4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBsaWJwa2djb25mL3N0ZGluYy5oIHwgMTAgKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvc3RkaW5jLmggYi9saWJwa2djb25mL3N0ZGluYy5oCitpbmRleCBhYzdlNTNjLi5kOGVmY2Y1IDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9zdGRpbmMuaAorKysrIGIvbGlicGtnY29uZi9zdGRpbmMuaAorQEAgLTMzLDEwICszMywxOCBAQAorICMgaW5jbHVkZSA8bWFsbG9jLmg+CisgIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkibnVsIgorICMgaWZuZGVmIHNzaXplX3QKKysjIGlmbmRlZiBfX01JTkdXMzJfXworICMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KKysjIGVsc2UKKysjICBpbmNsdWRlIDxiYXNldHNkLmg+CisrIyBlbmRpZgorICMgIGRlZmluZSBzc2l6ZV90IFNTSVpFX1QKKyAjIGVuZGlmCistIyBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCisrIyBpZm5kZWYgX19NSU5HVzMyX18KKysjICBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCisrIyBlbHNlCisrIyBpbmNsdWRlIDxkaXJlbnQuaD4KKysjIGVuZGlmCisgI2Vsc2UKKyAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSIvZGV2L251bGwiCisgIyBpbmNsdWRlIDxkaXJlbnQuaD4KKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy1lc2RrLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy1lc2RrLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzliMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLWVzZGsuaW4KQEAgLTAsMCArMSwyNCBAQAorIyEgL2Jpbi9zaAorCisjIE9yaWduYWwgcGtnLWNvbmZpZy1uYXRpdmUgYWN0aW9uIHdoZW4gY2FsbGVkIGFzIHBrZy1jb25maWctbmF0aXZlCisjIE5PIENoYW5nZSBoZXJlCitpZiBbICJwa2ctY29uZmlnLW5hdGl2ZSIgPSAiYGJhc2VuYW1lICQwYCIgXSA7IHRoZW4KKwlQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCisJUEtHX0NPTkZJR19MSUJESVI9IkBMSUJESVJfTkFUSVZFQCIKKwl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCitlbHNlCisJIyBpbiB0aGlzIGNhc2UgY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBlc2RrCisJaWYgWyAiJE9FX1NLSVBfU0RLX0NIRUNLIiA9ICIxIiBdIDsgdGhlbgorCQlwYXJlbnRwaWQ9YHBzIC1vIHBwaWQ9IC1wICQkYAorCQlwYXJlbnRwaWRfaW5mbz1gcHMgLXdvIGNvbW09IC1vIGFyZ3M9IC1wICRwYXJlbnRwaWRgCisKKwkJIyBjaGVjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIGZyb20gIHRoZSBrZXJuZWwncyBtYWtlIG1lbnVjb25maWcKKwkJaWYgKCBlY2hvICRwYXJlbnRwaWRfaW5mbyB8IGdyZXAgLXEgY2hlY2stbHhkaWFsb2cgKSA7IHRoZW4KKwkJCVBLR19DT05GSUdfUEFUSD0iQFBBVEhfTkFUSVZFQCIKKwkJCVBLR19DT05GSUdfTElCRElSPSJATElCRElSX05BVElWRUAiCisJCQl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCisJCWZpCisJZmkKK2ZpCisKK3BrZy1jb25maWcucmVhbCAiJEAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLW5hdGl2ZS5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctbmF0aXZlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDMwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLW5hdGl2ZS5pbgpAQCAtMCwwICsxLDYgQEAKKyMhIC9iaW4vc2gKKworUEtHX0NPTkZJR19QQVRIPSJAUEFUSF9OQVRJVkVAIgordW5zZXQgUEtHX0NPTkZJR19TWVNST09UX0RJUgorCitwa2ctY29uZmlnICIkQCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctd3JhcHBlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctd3JhcHBlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42OTVmMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy13cmFwcGVyCkBAIC0wLDAgKzEsMTYgQEAKKyMhL2Jpbi9zaAorIyBwa2djb25mIHdyYXBwZXIgdG8gZGVhbCB3aXRoIHBrZy1jb25maWcvcGtnY29uZiBjb21wYXRpYmlsaXR5IGlzc3VlcworIworIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKyMgTGljZW5zZTogTUlUIChzZWUgQ09QWUlORy5NSVQgYXQgdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnkgZm9yIHRlcm1zKQorCitmb3IgYXJnOyBkbworICAgIGNhc2UgIiRhcmciIGluCisgICAgICAgIC0tdmFyaWFibGV8LS12YXJpYWJsZT0qKQorICAgICAgICAgICAgIyBwa2ctY29uZmlnIGRvZXNuJ3Qgc3lzcm9vdC1wcmVmaXggdXNlciB2YXJpYWJsZXMKKyAgICAgICAgICAgIHVuc2V0IFBLR19DT05GSUdfU1lTUk9PVF9ESVIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitleGVjIHBrZ2NvbmYgIiRAIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGEwZGQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS4zLjcuYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJwa2djb25mIHByb3ZpZGVzIGNvbXBpbGVyIGFuZCBsaW5rZXIgY29uZmlndXJhdGlvbiBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4iCitERVNDUklQVElPTiA9ICJwa2djb25mIGlzIGEgcHJvZ3JhbSB3aGljaCBoZWxwcyB0byBjb25maWd1cmUgY29tcGlsZXIgYW5kIGxpbmtlciBcCitmbGFncyBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4gSXQgaXMgc2ltaWxhciB0byBwa2ctY29uZmlnIGZyb20gXAorZnJlZWRlc2t0b3Aub3JnLCBwcm92aWRpbmcgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHdoaWxlIGFsc28gbWFpbnRhaW5pbmcgXAorY29tcGF0aWJpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwOi8vcGtnY29uZi5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wa2djb25mL3BrZ2NvbmYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK1BST1ZJREVTICs9ICJwa2djb25maWciCitSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyIKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKworIyBUaGUgcGtnY29uZiBsaWNlbnNlIHNlZW1zIHRvIGJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJTRC0yLUNsYXVzZSBvcgorIyBJU0MsIGJ1dCBoYXMgZGlmZmVyZW50IHdvcmRpbmcsIHNvIG5lZWRzIGl0cyBvd24gbmFtZS4KK0xJQ0VOU0UgPSAicGtnY29uZiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU0OGE5ZDFkYjEwY2MwYTg0ODEwYzMxM2EwZTkyNjZmIgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwczovL2Rpc3RmaWxlcy5kZXJlZmVyZW5jZWQub3JnL3BrZ2NvbmYvcGtnY29uZi0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBcCisgICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCisgICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYzM1YzM0ZDg0ZWViNmEwM2Q0ZDYxYjg1NTVkNjE5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmU3ZTQwOTAwYzc0Njc4OTNjNjVmODEwMjExYjFlNjhkYTNmOGQ1ZTcwZmRkYjg4M2ZjMjQ4MzljYWQwMzM5IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCisgICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgorICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCisgICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBrZy1jb25maWciCisKKyMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKKyMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQorIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCitSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKKworIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKK0ZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKKworcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7CisgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgorICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisgICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCisgICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCisgICBmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy8wMDAxLWdkYXRlLU1vdmUtd2FybmluZy1wcmFnbWEtb3V0c2lkZS1vZi1mdW5jdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy8wMDAxLWdkYXRlLU1vdmUtd2FybmluZy1wcmFnbWEtb3V0c2lkZS1vZi1mdW5jdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjODI5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWcvMDAwMS1nZGF0ZS1Nb3ZlLXdhcm5pbmctcHJhZ21hLW91dHNpZGUtb2YtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDk0NmQzNjI2NmQ4YTMwZjA0ZmUzNGQzMTgzYmY0OTI5MTQxOTM0ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBjb3lwdSA8Y295cHVAc2RmLm9yZz4KLURhdGU6IFdlZCwgMiBNYXIgMjAxNiAxOTozODo0OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBnZGF0ZTogTW92ZSB3YXJuaW5nIHByYWdtYSBvdXRzaWRlIG9mIGZ1bmN0aW9uCi0KLUNvbW1pdCAwODE3YWY0MGU4Yzc0YzcyMWMzMGY2ZWY0ODJiMWY1M2QxMjA0NGM3IGJyZWFrcyB0aGUgYnVpbGQgb24KLW9sZGVyIHZlcnNpb25zIG9mIEdDQywgd2hpY2ggZG9uJ3QgYWxsb3cgcHJhZ21hIGluc2lkZSBmdW5jdGlvbnMuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLzc2MTU1MAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ2xpYi9nbGliL2dkYXRlLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2xpYi9nbGliL2dkYXRlLmMgYi9nbGliL2dsaWIvZ2RhdGUuYwotaW5kZXggMTk3OGNmNy4uMjBlNmM0YSAxMDA2NDQKLS0tLSBhL2dsaWIvZ2xpYi9nZGF0ZS5jCi0rKysgYi9nbGliL2dsaWIvZ2RhdGUuYwotQEAgLTI0MzksNiArMjQzOSw5IEBAIHdpbjMyX3N0cmZ0aW1lX2hlbHBlciAoY29uc3QgR0RhdGUgICAgICpkLAotICAqCi0gICogUmV0dXJuczogbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiB0byB0aGUgYnVmZmVyLCBvciAwIHRoZSBidWZmZXIgd2FzIHRvbyBzbWFsbAotICAqLwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKLSsKLSBnc2l6ZSAgICAgCi0gZ19kYXRlX3N0cmZ0aW1lIChnY2hhciAgICAgICAqcywgCi0gICAgICAgICAgICAgICAgICBnc2l6ZSAgICAgICAgc2xlbiwgCi1AQCAtMjU0OSwzICsyNTUyLDUgQEAgZ19kYXRlX3N0cmZ0aW1lIChnY2hhciAgICAgICAqcywKLSAgIHJldHVybiByZXR2YWw7Ci0gI2VuZGlmCi0gfQotKwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy9wa2ctY29uZmlnLWVzZGsuaW4gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWcvcGtnLWNvbmZpZy1lc2RrLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzliMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWcvcGtnLWNvbmZpZy1lc2RrLmluCkBAIC0wLDAgKzEsMjQgQEAKKyMhIC9iaW4vc2gKKworIyBPcmlnbmFsIHBrZy1jb25maWctbmF0aXZlIGFjdGlvbiB3aGVuIGNhbGxlZCBhcyBwa2ctY29uZmlnLW5hdGl2ZQorIyBOTyBDaGFuZ2UgaGVyZQoraWYgWyAicGtnLWNvbmZpZy1uYXRpdmUiID0gImBiYXNlbmFtZSAkMGAiIF0gOyB0aGVuCisJUEtHX0NPTkZJR19QQVRIPSJAUEFUSF9OQVRJVkVAIgorCVBLR19DT05GSUdfTElCRElSPSJATElCRElSX05BVElWRUAiCisJdW5zZXQgUEtHX0NPTkZJR19TWVNST09UX0RJUgorZWxzZQorCSMgaW4gdGhpcyBjYXNlIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgZXNkaworCWlmIFsgIiRPRV9TS0lQX1NES19DSEVDSyIgPSAiMSIgXSA7IHRoZW4KKwkJcGFyZW50cGlkPWBwcyAtbyBwcGlkPSAtcCAkJGAKKwkJcGFyZW50cGlkX2luZm89YHBzIC13byBjb21tPSAtbyBhcmdzPSAtcCAkcGFyZW50cGlkYAorCisJCSMgY2hlY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBmcm9tICB0aGUga2VybmVsJ3MgbWFrZSBtZW51Y29uZmlnCisJCWlmICggZWNobyAkcGFyZW50cGlkX2luZm8gfCBncmVwIC1xIGNoZWNrLWx4ZGlhbG9nICkgOyB0aGVuCisJCQlQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCisJCQlQS0dfQ09ORklHX0xJQkRJUj0iQExJQkRJUl9OQVRJVkVAIgorCQkJdW5zZXQgUEtHX0NPTkZJR19TWVNST09UX0RJUgorCQlmaQorCWZpCitmaQorCitwa2ctY29uZmlnLnJlYWwgIiRAIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZ19naXQuYmIKaW5kZXggZGM0NDk5Mi4uNTJlZjJhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiCkBAIC04LDEzICs4LDEzIEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNSRVYgPSAiODcxNTJjMDViZTg4Y2E4YmU3MWEzYTU2M2YyNzViMzY4NmQzMmMyOCIKLVBWID0gIjAuMjkuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJlZGY4ZTZmMGVhNzdlZGUwNzNmMDdiZmYwZDJhZTFmYzdhMzgxMDNiIgorUFYgPSAiMC4yOS4yK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3BrZy1jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKICAgICAgICAgICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1nbGliLWNvbmZpZ3VyZS1saWJ0b29sLXVzYWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ2xpYi1nZXR0ZXh0Lm00LVVwZGF0ZS1BTV9HTElCX0dOVV9HRVRURVhULXRvLW1hdGNoLS5wYXRjaCBcCiAgICAgICAgICAgICIKIApAQCAtNTUsNCArNTUsMTkgQEAKICAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAogICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1uYXRpdmUuaW4gPiAke0J9L3BrZy1jb25maWctbmF0aXZlCiAgICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctbmF0aXZlICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIC1lICJzfEBMSUJESVJfTkFUSVZFQHwke1BLR19DT05GSUdfTElCRElSfXwiIFwKKyAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctZXNkay5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1lc2RrCisgICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctZXNkayAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctZXNkawogfQorCitwa2djb25maWdfc3N0YXRlX2ZpeHVwX2VzZGsgKCkgeworCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiAtYSAiJHtXSVRISU5fRVhUX1NES30iID0gIjEiIF0gOyB0aGVuCisJCXBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgorCQltdiAkcGtnY29uZmRpci9wa2ctY29uZmlnICRwa2djb25mZGlyL3BrZy1jb25maWcucmVhbAorCQlsbnIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1lc2RrICRwa2djb25mZGlyL3BrZy1jb25maWcKKwkJc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCisJZmkKK30KKworU1NUQVRFUE9TVFVOUEFDS0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBrZ2NvbmZpZ19zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCA0NTI5ZGJmLi41NzBlZjM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCkBAIC0zLDYgKzMsNyBAQAogIyBXb3VsZCBuZWVkIHRyYW5zZmlnLW5hdGl2ZSBmb3IgZG9jdW1lbnRhdGlvbiBpZiBpdCB3YXNuJ3QgZGlzYWJsZWQKIERFUEVORFMgPSAiZWxmdXRpbHMgYmludXRpbHMiCiBTVU1NQVJZID0gIkFuIEVMRiBwcmVsaW5raW5nIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC5jZ2kvcHJlbGluay1jcm9zcy9hYm91dC8iCiBERVNDUklQVElPTiA9ICJUaGUgcHJlbGluayBwYWNrYWdlIGNvbnRhaW5zIGEgdXRpbGl0eSB3aGljaCBtb2RpZmllcyBFTEYgc2hhcmVkIGxpYnJhcmllcyBcCiBhbmQgZXhlY3V0YWJsZXMsIHNvIHRoYXQgZmFyIGZld2VyIHJlbG9jYXRpb25zIG5lZWQgdG8gYmUgcmVzb2x2ZWQgYXQgXAogcnVudGltZSBhbmQgdGh1cyBwcm9ncmFtcyBjb21lIHVwIGZhc3Rlci4iCkBAIC0zMSw2ICszMiw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNyb24uZGFpbHkgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5kZWZhdWx0IFwKIAkgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ1cHN0cmVhbSBoYXMgbm8gdXNhYmxlIHRhZ3MiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogVEFSR0VUX09TX09SSUcgOj0gIiR7VEFSR0VUX09TfSIKIE9WRVJSSURFU19hcHBlbmQgPSAiOiR7VEFSR0VUX09TX09SSUd9IgpAQCAtMTUwLDEzICsxNTMsMTUgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tYWNyb3MucHJlbGluayAke0R9JHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnByZWxpbmsKIH0KIAotIyBJZiB3ZSdyZSB1c2luZyBpbWFnZS1wcmVsaW5rLCB3ZSB3YW50IHRvIHNraXAgdGhpcyBvbiB0aGUgaG9zdCBzaWRlCi0jIGJ1dCBzdGlsbCBkbyBpdCBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgb24gdGhlIHRhcmdldC4uLgorIyBJZiB3ZSBhZSBkb2luZyBhIGNyb3NzIGluc3RhbGwsIHdlIHdhbnQgdG8gYXZvaWQgcHJlbGlua2luZy4KKyMgUHJlbGlua2luZyBkdXJpbmcgYSBjcm9zcyBpbnN0YWxsIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBpbWFnZS1wcmVsaW5rCisjIGJiY2xhc3MuICBJZiB0aGUgdXNlciBkZXNpcmVzIHRoaXMgdG8gcnVuIG9uIHRoZSB0YXJnZXQgYXQgZmlyc3QgYm9vdAorIyB0aGV5IHdpbGwgbmVlZCB0byBjcmVhdGUgYSBjdXN0b20gYm9vdCBzY3JpcHQuCiBwa2dfcG9zdGluc3RfcHJlbGluaygpIHsKICMhL2Jpbi9zaAogCiBpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCi0gICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VSX0NMQVNTRVMnLCAnaW1hZ2UtcHJlbGluaycsICdleGl0IDAnLCAnZXhpdCAxJywgZCl9CisgIGV4aXQgMAogZmkKIAogcHJlbGluayAtYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNTU3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2gKQEAgLTAsMCArMSwyOTIgQEAKK0Zyb20gOWU0MDdlMGJlMDE2OTVlN2I5MjdmNTgyMGFkZTg3ZWU5NjAyYzI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNSBTZXAgMjAxNyAxNzowMDoxNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBVc2UgZXBvbGwgQVBJIG9uIExpbnV4CisKK0Fsc28gYSBjb3VwbGUgb2Ygb3RoZXIgbW9kaWZpY2F0aW9ucyBkdWUgdG8gZXBvbGwgaGF2aW5nCithIGRpZmZlcmVudCBhcHByb2FjaCB0byBob3cgdGhlIHdvcmtpbmcgc2V0IG9mIGZkcyBpcyBkZWZpbmVkCithbmQgdXNlZDoKKzEpIG9wZW5fY2xpZW50KCkgcmV0dXJucyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheSBvZiBjbGllbnRzCisyKSBjbG9zZV9jbGllbnQoKSBoYXMgYSBwcm90ZWN0aW9uIGFnYWluc3QgYmVpbmcgY2FsbGVkIHR3aWNlCit3aXRoIHRoZSBzYW1lIGNsaWVudCAod2hpY2ggd291bGQgbWVzcyB1cCB0aGUgYWN0aXZlX2NsaWVudHMKK2NvdW50ZXIpCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtTZWVicyBDQydkIGJ5IGVtYWlsXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIGVudW1zL2V4aXRfc3RhdHVzLmluIHwgICAzICsKKyBwc2V1ZG9fc2VydmVyLmMgICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZW51bXMvZXhpdF9zdGF0dXMuaW4gYi9lbnVtcy9leGl0X3N0YXR1cy5pbgoraW5kZXggNmJlNDRkMy4uODhmOTRjZCAxMDA2NDQKKy0tLSBhL2VudW1zL2V4aXRfc3RhdHVzLmluCisrKysgYi9lbnVtcy9leGl0X3N0YXR1cy5pbgorQEAgLTE4LDMgKzE4LDYgQEAgbGlzdGVuX2ZkLCAic2VydmVyIGxvb3AgaGFkIG5vIHZhbGlkIGxpc3RlbiBmZCIKKyBwc2V1ZG9fbG9hZGVkLCAic2VydmVyIGNvdWxkbid0IGdldCBvdXQgb2YgcHNldWRvIGVudmlyb25tZW50IgorIHBzZXVkb19wcmVmaXgsICJjb3VsZG4ndCBnZXQgdmFsaWQgcHNldWRvIHByZWZpeCIKKyBwc2V1ZG9faW52b2NhdGlvbiwgImludmFsaWQgc2VydmVyIGNvbW1hbmQgYXJndW1lbnRzIgorK2Vwb2xsX2NyZWF0ZSwgImVwb2xsX2NyZWF0ZSgpIGZhaWxlZCIKKytlcG9sbF9jdGwsICJlcG9sbF9jdGwoKSBmYWlsZWQiCisrCitkaWZmIC0tZ2l0IGEvcHNldWRvX3NlcnZlci5jIGIvcHNldWRvX3NlcnZlci5jCitpbmRleCBmZjE2ZWZkLi4xNGQzNGRlIDEwMDY0NAorLS0tIGEvcHNldWRvX3NlcnZlci5jCisrKysgYi9wc2V1ZG9fc2VydmVyLmMKK0BAIC00MCw2ICs0MCwxMiBAQAorICNpbmNsdWRlICJwc2V1ZG9fY2xpZW50LmgiCisgI2luY2x1ZGUgInBzZXVkb19kYi5oIgorIAorKy8vIFRoaXMgaGFzIHRvIGNvbWUgYWZ0ZXIgcHNldWRvIGluY2x1ZGVzLCBhcyB0aGF0J3Mgd2hlcmUgUFNFVURPX1BPUlQgZGVmaW5lcyBhcmUKKysjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKKysjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CisrI2VuZGlmCisrCisrCisgc3RhdGljIGludCBsaXN0ZW5fZmQgPSAtMTsKKyAKKyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtNTksNiArNjUsNyBAQCBzdGF0aWMgaW50IGFjdGl2ZV9jbGllbnRzID0gMCwgaGlnaGVzdF9jbGllbnQgPSAwLCBtYXhfY2xpZW50cyA9IDA7CisgCisgI2RlZmluZSBMT09QX0RFTEFZIDIKKyAjZGVmaW5lIERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUIDMwCisrI2RlZmluZSBFUE9MTF9NQVhfRVZFTlRTIDEwCisgaW50IHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOworIHN0YXRpYyBpbnQgZGllX3BlYWNlZnVsbHkgPSAwOworIHN0YXRpYyBpbnQgZGllX2ZvcmNlZnVsbHkgPSAwOworQEAgLTgwLDYgKzg3LDkgQEAgcXVpdF9ub3coaW50IHNpZ25hbCkgeworIHN0YXRpYyBpbnQgbWVzc2FnZXMgPSAwLCByZXNwb25zZXMgPSAwOworIHN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBtZXNzYWdlX3RpbWUgPSB7IC50dl9zZWMgPSAwIH07CisgCisrI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCisrc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKHZvaWQpOworKyNlbmRpZgorIHN0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKTsKKyAKKyAvKiBoZWxwZXIgZnVuY3Rpb24gdG8gbWFrZSBhIGRpcmVjdG9yeSwganVzdCBsaWtlIG1rZGlyIC1wLgorQEAgLTM2OSwxMiArMzc5LDE2IEBAIHBzZXVkb19zZXJ2ZXJfc3RhcnQoaW50IGRhZW1vbml6ZSkgeworIAkJCWtpbGwocHBpZCwgU0lHVVNSMSk7CisgCQl9CisgCX0KKysjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKKysJcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKCk7CisrI2Vsc2UKKyAJcHNldWRvX3NlcnZlcl9sb29wKCk7CisrI2VuZGlmCisgCXJldHVybiAwOworIH0KKyAKKyAvKiBtZXNzIHdpdGggaW50ZXJuYWwgdGFibGVzIGFzIG5lZWRlZCAqLworLXN0YXRpYyB2b2lkCisrc3RhdGljIHVuc2lnbmVkIGludAorIG9wZW5fY2xpZW50KGludCBmZCkgeworIAlwc2V1ZG9fY2xpZW50X3QgKm5ld19jbGllbnRzOworIAlpbnQgaTsKK0BAIC0zOTAsNyArNDA0LDcgQEAgb3Blbl9jbGllbnQoaW50IGZkKSB7CisgCQkJKythY3RpdmVfY2xpZW50czsKKyAJCQlpZiAoaSA+IGhpZ2hlc3RfY2xpZW50KQorIAkJCQloaWdoZXN0X2NsaWVudCA9IGk7CistCQkJcmV0dXJuOworKwkJCXJldHVybiBpOworIAkJfQorIAl9CisgCitAQCAtNDE0LDkgKzQyOCwxMSBAQCBvcGVuX2NsaWVudChpbnQgZmQpIHsKKyAKKyAJCW1heF9jbGllbnRzICs9IDE2OworIAkJKythY3RpdmVfY2xpZW50czsKKysJCXJldHVybiBtYXhfY2xpZW50cyAtIDE2OworIAl9IGVsc2UgeworIAkJcHNldWRvX2RpYWcoImVycm9yIGFsbG9jYXRpbmcgbmV3IGNsaWVudCwgZmQgJWRcbiIsIGZkKTsKKyAJCWNsb3NlKGZkKTsKKysJCXJldHVybiAwOworIAl9CisgfQorIAorQEAgLTQzMyw2ICs0NDksMTAgQEAgY2xvc2VfY2xpZW50KGludCBjbGllbnQpIHsKKyAJCQljbGllbnQsIGhpZ2hlc3RfY2xpZW50KTsKKyAJCXJldHVybjsKKyAJfQorKwlpZiAoY2xpZW50c1tjbGllbnRdLmZkID09IC0xKSB7CisrCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiY2xpZW50ICVkIGFscmVhZHkgY2xvc2VkXG4iLCBjbGllbnQpOworKwkJcmV0dXJuOworKwl9CisgCWNsb3NlKGNsaWVudHNbY2xpZW50XS5mZCk7CisgCWNsaWVudHNbY2xpZW50XS5mZCA9IC0xOworIAlmcmVlKGNsaWVudHNbY2xpZW50XS50YWcpOworQEAgLTU2Niw2ICs1ODYsMTcxIEBAIHNlcnZlX2NsaWVudChpbnQgaSkgeworIAl9CisgfQorIAorKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAorK3N0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCh2b2lkKQorK3sKKysJc3RydWN0IHNvY2thZGRyX3VuIGNsaWVudDsKKysJc29ja2xlbl90IGxlbjsKKysgICAgICAgIGludCBpOworKyAgICAgICAgaW50IHJjOworKyAgICAgICAgaW50IGZkOworKwlpbnQgdGltZW91dDsKKysJc3RydWN0IGVwb2xsX2V2ZW50IGV2LCBldmVudHNbRVBPTExfTUFYX0VWRU5UU107CisrCWludCBsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7CisrCisrCWNsaWVudHMgPSBtYWxsb2MoMTYgKiBzaXplb2YoKmNsaWVudHMpKTsKKysKKysJY2xpZW50c1swXS5mZCA9IGxpc3Rlbl9mZDsKKysJY2xpZW50c1swXS5waWQgPSBnZXRwaWQoKTsKKysKKysJZm9yIChpID0gMTsgaSA8IDE2OyArK2kpIHsKKysJCWNsaWVudHNbaV0uZmQgPSAtMTsKKysJCWNsaWVudHNbaV0ucGlkID0gMDsKKysJCWNsaWVudHNbaV0udGFnID0gTlVMTDsKKysJCWNsaWVudHNbaV0ucHJvZ3JhbSA9IE5VTEw7CisrCX0KKysKKysJYWN0aXZlX2NsaWVudHMgPSAxOworKwltYXhfY2xpZW50cyA9IDE2OworKwloaWdoZXN0X2NsaWVudCA9IDA7CisrCisrCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBzdGFydGVkLlxuIik7CisrCWlmIChsaXN0ZW5fZmQgPCAwKSB7CisrCQlwc2V1ZG9fZGlhZygiZ290IGludG8gbG9vcCB3aXRoIG5vIHZhbGlkIGxpc3RlbiBmZC5cbiIpOworKwkJZXhpdChQU0VVRE9fRVhJVF9MSVNURU5fRkQpOworKwl9CisrCisrCXRpbWVvdXQgPSBMT09QX0RFTEFZICogMTAwMDsKKysKKysJaW50IGVwb2xsZmQgPSBlcG9sbF9jcmVhdGUxKDApOworKwlpZiAoZXBvbGxmZCA9PSAtMSkgeworKwkJcHNldWRvX2RpYWcoImVwb2xsX2NyZWF0ZTEoKSBmYWlsZWQuXG4iKTsKKysJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1JFQVRFKTsKKysJfQorKwlldi5ldmVudHMgPSBFUE9MTElOOworKwlldi5kYXRhLnU2NCA9IDA7CisrCWlmIChlcG9sbF9jdGwoZXBvbGxmZCwgRVBPTExfQ1RMX0FERCwgY2xpZW50c1swXS5mZCwgJmV2KSA9PSAtMSkgeworKwkJcHNldWRvX2RpYWcoImVwb2xsX2N0bCgpIGZhaWxlZCB3aXRoIGxpc3RlbmluZyBzb2NrZXQuXG4iKTsKKysJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1RMKTsKKysJfQorKworKwlwZGJfbG9nX21zZyhTRVZFUklUWV9JTkZPLCBOVUxMLCBOVUxMLCBOVUxMLCAic2VydmVyIHN0YXJ0ZWQgKHBpZCAlZCkiLCBnZXRwaWQoKSk7CisrCisrICAgICAgICBmb3IgKDs7KSB7CisrCQlyYyA9IGVwb2xsX3dhaXQoZXBvbGxmZCwgZXZlbnRzLCBFUE9MTF9NQVhfRVZFTlRTLCB0aW1lb3V0KTsKKysJCWlmIChyYyA9PSAwIHx8IChyYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikpIHsKKysJCQkvKiBJZiB0aGVyZSdzIG5vIGNsaWVudHMsIHN0YXJ0IHRpbWluZyBvdXQuICBJZiB0aGVyZQorKwkJCSAqIGFyZSBhY3RpdmUgY2xpZW50cywgbmV2ZXIgdGltZSBvdXQuCisrCQkJICovCisrCQkJaWYgKGFjdGl2ZV9jbGllbnRzID09IDEpIHsKKysJCQkJbG9vcF90aW1lb3V0IC09IExPT1BfREVMQVk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXliZSBmbHVzaCBkYXRhYmFzZSB0byBkaXNrICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGJfbWF5YmVfYmFja3VwKCk7CisrCQkJCWlmIChsb29wX3RpbWVvdXQgPD0gMCkgeworKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIm5vIG1vcmUgY2xpZW50cywgZ290IGJvcmVkLlxuIik7CisrCQkJCQlkaWVfcGVhY2VmdWxseSA9IDE7CisrCQkJCX0gZWxzZSB7CisrCQkJCQkvKiBkaXNwbGF5IHRoaXMgaWYgbm90IGV4aXRpbmcgKi8KKysJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIgfCBQREJHRl9CRU5DSE1BUkssICIlZCBtZXNzYWdlcyBoYW5kbGVkIGluICUuNGYgc2Vjb25kcywgJWQgcmVzcG9uc2VzXG4iLAorKwkJCQkJCW1lc3NhZ2VzLAorKwkJCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKworKwkJCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcyk7CisrCQkJCX0KKysJCQl9CisrCQl9IGVsc2UgaWYgKHJjID4gMCkgeworKwkJCWxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKysJCQlmb3IgKGkgPSAwOyBpIDwgcmM7ICsraSkgeworKwkJCQlpZiAoY2xpZW50c1tldmVudHNbaV0uZGF0YS51NjRdLmZkID09IGxpc3Rlbl9mZCkgeworKwkJCQkJaWYgKCFkaWVfZm9yY2VmdWxseSkgeworKwkJCQkJCWxlbiA9IHNpemVvZihjbGllbnQpOworKwkJCQkJCWlmICgoZmQgPSBhY2NlcHQobGlzdGVuX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZjbGllbnQsICZsZW4pKSAhPSAtMSkgeworKwkJCQkJCS8qIERvbid0IGFsbG93IGNsaWVudHMgdG8gZW5kIHVwIG9uIGZkIDIsIGJlY2F1c2UgZ2xpYmMncworKwkJCQkJCSAqIG1hbGxvYyBkZWJ1ZyB1c2VzIHRoYXQgZmQgdW5jb25kaXRpb25hbGx5LgorKwkJCQkJCSAqLworKwkJCQkJCQlpZiAoZmQgPT0gMikgeworKwkJCQkJCQkJaW50IG5ld2ZkID0gZmNudGwoZmQsIEZfRFVQRkQsIDMpOworKwkJCQkJCQkJY2xvc2UoZmQpOworKwkJCQkJCQkJZmQgPSBuZXdmZDsKKysJCQkJCQkJfQorKwkJCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAibmV3IGNsaWVudCBmZCAlZFxuIiwgZmQpOworKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEEgbmV3IGNsaWVudCBpbXBsaWNpdGx5IGNhbmNlbHMgYW55CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcHJldmlvdXMgc2h1dGRvd24gcmVxdWVzdCwgb3IgYQorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNodXRkb3duIGZvciBsYWNrIG9mIGNsaWVudHMuCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllX3BlYWNlZnVsbHkgPSAwOworKworKwkJCQkJCQlldi5ldmVudHMgPSBFUE9MTElOOworKwkJCQkJCQlldi5kYXRhLnU2NCA9IG9wZW5fY2xpZW50KGZkKTsKKysJCQkJCQkJaWYgKGV2LmRhdGEudTY0ICE9IDAgJiYgZXBvbGxfY3RsKGVwb2xsZmQsIEVQT0xMX0NUTF9BREQsIGNsaWVudHNbZXYuZGF0YS51NjRdLmZkLCAmZXYpID09IC0xKSB7CisrCQkJCQkJCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3RsKCkgZmFpbGVkIHdpdGggYWNjZXB0ZWQgc29ja2V0LlxuIik7CisrCQkJCQkJCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NUTCk7CisrCQkJCQkJCX0KKysJCQkJCQl9IGVsc2UgaWYgKGVycm5vID09IEVNRklMRSkgeworKwkJCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiSGl0IG1heCBvcGVuIGZpbGVzLCBkcm9wcGluZyBhIGNsaWVudC5cbiIpOworKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluIHRoZW9yeSB0aGVyZSBpcyBhIHBvdGVudGlhbCByYWNlIGhlcmUgd2hlcmUgaWYgd2UgY2xvc2UgYSBjbGllbnQsIAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG1heSBoYXZlIHNlbnQgdXMgYSBmYXN0b3AgbWVzc2FnZSB3aGljaCB3ZSBkb24ndCBhY3QgdXBvbi4KKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB3ZSBkb24ndCBjbG9zZSBhIGZpbGVoYW5kbGUgd2UnbGwgbG9vcCBpbmRlZmluaXRlbHkgdGhvdWdodC4gCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBjbG9zZSBvbmUgcGVyIGxvb3AgaXRlcmF0aW9uIGluIHRoZSBpbnRlcmVzdHMgb2YgY2F1dGlvbiAqLworKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBoaWdoZXN0X2NsaWVudDsgKytqKSB7CisrCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudHNbal0uZmQgIT0gLTEpIHsKKysJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2NsaWVudChqKTsKKysJCQkJCQkJCQlicmVhazsKKysJCQkJCQkJCX0KKysJCQkJCQkJfQorKwkJCQkJCX0KKysJCQkJCX0KKysJCQkJfSBlbHNlIHsKKysJCQkJCXN0cnVjdCB0aW1ldmFsIHR2MSwgdHYyOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmM7CisrCQkJCQlnZXR0aW1lb2ZkYXkoJnR2MSwgTlVMTCk7CisrCQkJCQlyYyA9IHNlcnZlX2NsaWVudChldmVudHNbaV0uZGF0YS51NjQpOworKwkJCQkJZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOworKwkJCQkJKyttZXNzYWdlczsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytyZXNwb25zZXM7CisrCQkJCQltZXNzYWdlX3RpbWUudHZfc2VjICs9ICh0djIudHZfc2VjIC0gdHYxLnR2X3NlYyk7CisrCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyArPSAodHYyLnR2X3VzZWMgLSB0djEudHZfdXNlYyk7CisrCQkJCQlpZiAobWVzc2FnZV90aW1lLnR2X3VzZWMgPCAwKSB7CisrCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgKz0gMTAwMDAwMDsKKysJCQkJCQktLW1lc3NhZ2VfdGltZS50dl9zZWM7CisrCQkJCQl9IGVsc2Ugd2hpbGUgKG1lc3NhZ2VfdGltZS50dl91c2VjID4gMTAwMDAwMCkgeworKwkJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjIC09IDEwMDAwMDA7CisrCQkJCQkJKyttZXNzYWdlX3RpbWUudHZfc2VjOworKwkJCQkJfQorKwkJCQl9CisrCQkJCWlmIChkaWVfZm9yY2VmdWxseSkKKysJCQkJCWJyZWFrOworKwkJCX0KKysJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3AgY29tcGxldGUgWyVkIGNsaWVudHMgbGVmdF1cbiIsIGFjdGl2ZV9jbGllbnRzKTsKKysJCX0gZWxzZSB7CisrCQkJcHNldWRvX2RpYWcoImVwb2xsX3dhaXQgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysJCQlicmVhazsKKysJCX0KKysJCWlmIChkaWVfcGVhY2VmdWxseSB8fCBkaWVfZm9yY2VmdWxseSkgeworKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJxdWl0dGluZy5cbiIpOworKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIgfCBQREJHRl9CRU5DSE1BUkssICJzZXJ2ZXIgJWQgZXhpdGluZzogaGFuZGxlZCAlZCBtZXNzYWdlcyBpbiAlLjRmIHNlY29uZHNcbiIsCisrCQkJCWdldHBpZCgpLCBtZXNzYWdlcywKKysJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCisrCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wKTsKKysJCQlwZGJfbG9nX21zZyhTRVZFUklUWV9JTkZPLCBOVUxMLCBOVUxMLCBOVUxMLCAic2VydmVyICVkIGV4aXRpbmc6IGhhbmRsZWQgJWQgbWVzc2FnZXMgaW4gJS40ZiBzZWNvbmRzIiwKKysJCQkJZ2V0cGlkKCksIG1lc3NhZ2VzLAorKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKKysJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjApOworKwkJCS8qIGFuZCBhdCB0aGlzIHBvaW50LCB3ZSdsbCBzdGFydCByZWZ1c2luZyBjb25uZWN0aW9ucyAqLworKwkJCWNsb3NlKGNsaWVudHNbMF0uZmQpOworKwkJCS8qIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIGluc2VydCBhIGRlbGF5IGZvcgorKwkJCSAqIGRlYnVnZ2luZyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHN0YXJ0dXAuICovCisrCQkJLyogdXNsZWVwKDMwMDAwMCk7ICovCisrCQkJZXhpdCgwKTsKKysJCX0KKysJfQorKworK30KKysKKysjZW5kaWYKKysKKyAvKiBnZXQgY2xpZW50cywgaGFuZGxlIG1lc3NhZ2VzLCBzaHV0IGRvd24uCisgICogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGRvIGFueSB3b3JrLCBpdCBqdXN0IGNhbGxzIGEgdG9uIG9mIHRoaW5ncyB3aGljaAorICAqIGRvIHdvcmsuCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYXN0b3ByZXBseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNGMyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYXN0b3ByZXBseS5wYXRjaApAQCAtMCwwICsxLDc2IEBACitFbnN1cmUgRkFTVE9QIG1lc3NhZ2VzIGdldCBhbiBBQ0sgcmVwbHkgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBiZSBzdXJlIHRoZSBzZXJ2ZXIKK3JlY2lldmVkIHRoZW0uIFRoaXMgbWVhbnMgaWYgY29ubmVjdGlvbnMgYXJlIHRlcm1pbmF0ZWQsIGRhdGEgaXNuJ3QgbG9zdC4KKworUlAgMjAxNy85LzIyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK0luZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX2NsaWVudC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX2NsaWVudC5jCisrKysgcHNldWRvLTEuOC4yL3BzZXVkb19jbGllbnQuYworQEAgLTEzMzEsMjEgKzEzMzEsMTkgQEAgcHNldWRvX2NsaWVudF9yZXF1ZXN0KHBzZXVkb19tc2dfdCAqbXNnLAorIAkJICogaW5kaWNhdGluZyBhIHN1Y2Nlc3NmdWwgc2VuZC4KKyAJCSAqLworIAkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJzZW50IVxuIik7CistCQlpZiAobXNnLT50eXBlICE9IFBTRVVET19NU0dfRkFTVE9QKSB7CistCQkJcmVzcG9uc2UgPSBwc2V1ZG9fbXNnX3JlY2VpdmUoY29ubmVjdF9mZCk7CistCQkJaWYgKCFyZXNwb25zZSkgeworLQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZXhwZWN0ZWQgcmVzcG9uc2UgZGlkIG5vdCBvY2N1cjsgcmV0cnlpbmdcbiIpOworKwkJcmVzcG9uc2UgPSBwc2V1ZG9fbXNnX3JlY2VpdmUoY29ubmVjdF9mZCk7CisrCQlpZiAoIXJlc3BvbnNlKSB7CisrCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImV4cGVjdGVkIHJlc3BvbnNlIGRpZCBub3Qgb2NjdXI7IHJldHJ5aW5nXG4iKTsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHJlc3BvbnNlLT50eXBlICE9IFBTRVVET19NU0dfQUNLKSB7CisrCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJnb3Qgbm9uLWFjayByZXNwb25zZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOworKwkJCQlyZXR1cm4gMDsKKysJCQl9IGVsc2UgaWYgKG1zZy0+dHlwZSAhPSBQU0VVRE9fTVNHX0ZBU1RPUCkgeworKwkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgImdvdCByZXNwb25zZSB0eXBlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CisrCQkJCXJldHVybiByZXNwb25zZTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAocmVzcG9uc2UtPnR5cGUgIT0gUFNFVURPX01TR19BQ0spIHsKKy0JCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJnb3Qgbm9uLWFjayByZXNwb25zZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOworLQkJCQkJcmV0dXJuIDA7CistCQkJCX0gZWxzZSB7CistCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgImdvdCByZXNwb25zZSB0eXBlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CistCQkJCQlyZXR1cm4gcmVzcG9uc2U7CistCQkJCX0KKysJCQkJcmV0dXJuIDA7CisgCQkJfQorLQkJfSBlbHNlIHsKKy0JCQlyZXR1cm4gMDsKKyAJCX0KKyAJfQorIAlwc2V1ZG9fZGlhZygicHNldWRvOiBzZXJ2ZXIgY29ubmVjdGlvbiBwZXJzaXN0ZW50bHkgZmFpbGVkLCBhYm9ydGluZy5cbiIpOworSW5kZXg6IHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwc2V1ZG8tMS44LjIub3JpZy9wc2V1ZG9fc2VydmVyLmMKKysrKyBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCitAQCAtNDYzLDYgKzQ2MywxMSBAQCBjbG9zZV9jbGllbnQoaW50IGNsaWVudCkgeworIAkJCS0taGlnaGVzdF9jbGllbnQ7CisgfQorIAorK3N0YXRpYyBwc2V1ZG9fbXNnX3Qgc2VydmVyX2Zhc3RvcF9yZXBseSA9IHsgCisrICAgICAgICAudHlwZSA9IFBTRVVET19NU0dfQUNLLAorKyAgICAgICAgLm9wID0gT1BfTk9ORSwKKyt9OworKworIC8qIEFjdHVhbGx5IHByb2Nlc3MgYSByZXF1ZXN0LgorICAqLworIHN0YXRpYyBpbnQKK0BAIC01MTUsOCArNTIwLDE0IEBAIHNlcnZlX2NsaWVudChpbnQgaSkgeworIAkJICogcHNldWRvX3NlcnZlcl9yZXNwb25zZS4KKyAJCSAqLworIAkJaWYgKGluLT50eXBlICE9IFBTRVVET19NU0dfU0hVVERPV04pIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW4tPnR5cGUgPT0gUFNFVURPX01TR19GQVNUT1ApCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluLT50eXBlID09IFBTRVVET19NU0dfRkFTVE9QKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3Jlc3BvbnNlID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZvciBmYXN0b3BzIHdlIHJlcGx5IG5vdyB0byBzYXkgd2UgZ290IHRoZSBkYXRhICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJjID0gcHNldWRvX21zZ19zZW5kKGNsaWVudHNbaV0uZmQsICZzZXJ2ZXJfZmFzdG9wX3JlcGx5LCAwLCBOVUxMKSkgIT0gMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgImZhaWxlZCB0byBzZW5kIGZhc3RvcCBhY2sgdG8gY2xpZW50ICVkIFslZF06ICVkICglcylcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIChpbnQpIGNsaWVudHNbaV0ucGlkLCByYywgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICB9CisgCQkJLyogbW9zdCBtZXNzYWdlcyBkb24ndCBuZWVkIHRoZXNlLCBidXQgeGF0dHIgbWF5ICovCisgCQkJcmVzcG9uc2VfcGF0aCA9IDA7CisgCQkJcmVzcG9uc2VfcGF0aGxlbiA9IC0xOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODVhNDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorQ3VycmVudGx5IGlmIHdlIG1heCBvdXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZpbGVzLCBwc2V1ZG8gY2FuIGRlYWRsb2NrLCB1bmFibGUgdG8KK2FjY2VwdCBuZXcgY29ubmVjdGlvbnMgeWV0IHVuYWJsZSB0byBtb3ZlIGZvcndhcmQgYW5kIHVuYmxvY2sgdGhlIG90aGVyIHByb2Nlc3Nlcword2FpdGluZyBlaXRoZXIuCisKK1JhdGhlciB0aGFuIGhhbmcsIHdoZW4gdGhpcyBoYXBwZW5zLCBjbG9zZSBvdXQgaW5hY3RpdmUgY29ubmVjdGlvbnMsIGFsbG93aW5nIHVzCit0byBhY2NlcHQgdGhlIG5ldyBvbmVzLiBUaGUgZGlzY29ubmVjdGVkIGNsaWVudHMgd2lsbCBzaW1wbHkgcmVjb25uZWN0LiBUaGVyZSBpcworYSBzbWFsbCByaXNrIG9mIGRhdGEgbG9zcyBoZXJlIHNhZGx5IGJ1dCBpdHMgYmV0dGVyIHRoYW4gaGFuZ2luZy4KKworUlAKKzIwMTcvNC8yNQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbUGV0ZXIgaXMgYXdhcmUgb2YgdGhlIGlzc3VlXQorCitJbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19zZXJ2ZXIuYworKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKK0BAIC01ODEsNiArNTgxLDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJaW50IHJjOworIAlpbnQgZmQ7CisgCWludCBsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7CisrCWludCBoaXRtYXhmaWxlczsKKyAKKyAJY2xpZW50cyA9IG1hbGxvYygxNiAqIHNpemVvZigqY2xpZW50cykpOworIAorQEAgLTU5Nyw2ICs1OTgsNyBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAlhY3RpdmVfY2xpZW50cyA9IDE7CisgCW1heF9jbGllbnRzID0gMTY7CisgCWhpZ2hlc3RfY2xpZW50ID0gMDsKKysJaGl0bWF4ZmlsZXMgPSAwOworIAorIAlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3Agc3RhcnRlZC5cbiIpOworIAlpZiAobGlzdGVuX2ZkIDwgMCkgeworQEAgLTY2MywxMCArNjY1LDE1IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgLT0gMTAwMDAwMDsKKyAJCQkJCQkrK21lc3NhZ2VfdGltZS50dl9zZWM7CisgCQkJCQl9CisrCQkJCX0gZWxzZSBpZiAoaGl0bWF4ZmlsZXMpIHsKKysJCQkJCS8qIE9ubHkgY2xvc2Ugb25lIHBlciBsb29wIGl0ZXJhdGlvbiBpbiB0aGUgaW50ZXJlc3RzIG9mIGNhdXRpb24gKi8KKysJCQkJCWNsb3NlX2NsaWVudChpKTsKKysJCQkJCWhpdG1heGZpbGVzID0gMDsKKyAJCQkJfQorIAkJCQlpZiAoZGllX2ZvcmNlZnVsbHkpCisgCQkJCQlicmVhazsKKyAJCQl9CisrCQkJaGl0bWF4ZmlsZXMgPSAwOworIAkJCWlmICghZGllX2ZvcmNlZnVsbHkgJiYgCisgCQkJICAgIChGRF9JU1NFVChjbGllbnRzWzBdLmZkLCAmZXZlbnRzKSB8fAorIAkJCSAgICAgRkRfSVNTRVQoY2xpZW50c1swXS5mZCwgJnJlYWRzKSkpIHsKK0BAIC02ODgsNiArNjk4LDkgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWVfcGVhY2VmdWxseSA9IDA7CisrCQkJCX0gZWxzZSBpZiAoZXJybm8gPT0gRU1GSUxFKSB7CisrCQkJCQloaXRtYXhmaWxlcyA9IDE7CisrCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiSGl0IG1heCBvcGVuIGZpbGVzLCBkcm9wcGluZyBhIGNsaWVudC5cbiIpOworIAkJCQl9CisgCQkJfQorIAkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBjb21wbGV0ZSBbJWQgY2xpZW50cyBsZWZ0XVxuIiwgYWN0aXZlX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCmluZGV4IGI0MjdiOWEuLjczZWY1NzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjguMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIKQEAgLTcsNiArNyw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2I2YjY4ZGI4OTZmOTk2MzU1ODMzNGFmZjdmY2E2MWFkZGU0ZWMxMGYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmFzdG9wcmVwbHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdkNDFlNzIxODhmYmVhMWY2OTZjMzk5YzFhNDM1Njc1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZTU4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA0MTcwYjk4ZTBkNTg2NGVmNGRiMWM1NzA0YTZlOTQyOGMzYmU5ZmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSXJ5bmEgU2hjaGVyYmluYSA8aXNoY2hlcmJAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTg6MDE6NDMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQlVHOiBmaXggaW5maW5pdGUgbG9vcCB3aGVuIGNyZWF0aW5nIG5wLnBhZCBvbiBhbiBlbXB0eSBhcnJheQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcHVsbC85NTk5L2NvbW1pdHMvNmY5ZWEwYWJiZDMwNWQ1M2Y5MDE3ZGViYWIzYTNhNTkxZmUwZTI0OV0KK0NWRTogQ1ZFLTIwMTctMTI4NTIKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBudW1weS9saWIvYXJyYXlwYWQucHkgICAgICAgICAgICB8IDMgKysrCisgbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbnVtcHkvbGliL2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL2FycmF5cGFkLnB5CitpbmRleCAyZGFkOTljLi4yOTRhNjg5IDEwMDY0NAorLS0tIGEvbnVtcHkvbGliL2FycmF5cGFkLnB5CisrKysgYi9udW1weS9saWIvYXJyYXlwYWQucHkKK0BAIC0xNDA2LDYgKzE0MDYsOSBAQCBkZWYgcGFkKGFycmF5LCBwYWRfd2lkdGgsIG1vZGUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICBuZXdtYXQgPSBfYXBwZW5kX21pbihuZXdtYXQsIHBhZF9hZnRlciwgY2h1bmtfYWZ0ZXIsIGF4aXMpCisgCisgICAgIGVsaWYgbW9kZSA9PSAncmVmbGVjdCc6CisrICAgICAgICBpZiBuYXJyYXkuc2l6ZSA9PSAwOgorKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZXJlIGFyZW4ndCBhbnkgZWxlbWVudHMgdG8gcmVmbGVjdCBpbiBgYXJyYXlgIikKKysKKyAgICAgICAgIGZvciBheGlzLCAocGFkX2JlZm9yZSwgcGFkX2FmdGVyKSBpbiBlbnVtZXJhdGUocGFkX3dpZHRoKToKKyAgICAgICAgICAgICAjIFJlY3Vyc2l2ZSBwYWRkaW5nIGFsb25nIGFueSBheGlzIHdoZXJlIGBwYWRfYW10YCBpcyB0b28gbGFyZ2UKKyAgICAgICAgICAgICAjIGZvciBpbmRleGluZyB0cmlja3MuIFdlIGNhbiBvbmx5IHNhZmVseSBwYWQgdGhlIG9yaWdpbmFsIGF4aXMKK2RpZmYgLS1naXQgYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5CitpbmRleCAwNTZhYTQ1Li4wZjcxZDMyIDEwMDY0NAorLS0tIGEvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKKysrKyBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5CitAQCAtMTAxNCw2ICsxMDE0LDEwIEBAIGNsYXNzIFZhbHVlRXJyb3IxKFRlc3RDYXNlKToKKyAgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBhcnIsICgoLTIsIDMpLCAoMywgMikpLAorICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKKyAKKysgICAgZGVmIHRlc3RfY2hlY2tfZW1wdHlfYXJyYXkoc2VsZik6CisrICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgW10sIDQsIG1vZGU9J3JlZmxlY3QnKQorKyAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIG5wLm5kYXJyYXkoMCksIDQsIG1vZGU9J3JlZmxlY3QnKQorKworIAorIGNsYXNzIFZhbHVlRXJyb3IyKFRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfY2hlY2tfbmVnYXRpdmVfcGFkX2Ftb3VudChzZWxmKToKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCmluZGV4IDViMTM0ZWQuLmZmZDZjZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogIG51bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSB8IDUwICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5IGIvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5Ci1pbmRleCA5ZGQ0OGUyLi44MGUxOTdhIDEwMDY0NAotLS0tIGEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5Ci0rKysgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLUBAIC0yMDQsNTEgKzIwNCwxMyBAQCBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKK0luZGV4OiBudW1weS0xLjEzLjEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbnVtcHktMS4xMy4xLm9yaWcvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CisrKysgbnVtcHktMS4xMy4xL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorQEAgLTIxMSw1MSArMjExLDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICBkZWZhdWx0X3gxMV9saWJfZGlycyA9IFtdCiAgICAgIGRlZmF1bHRfeDExX2luY2x1ZGVfZGlycyA9IFtdCiAgZWxzZToKQEAgLTI5LDcgKzI5LDEwIEBACiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvb3B0L2xvY2FsL2luY2x1ZGUnLCAnL3N3L2luY2x1ZGUnLAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9pbmNsdWRlL3N1aXRlc3BhcnNlJ10KIC0gICAgZGVmYXVsdF9zcmNfZGlycyA9IFsnLicsICcvdXNyL2xvY2FsL3NyYycsICcvb3B0L3NyYycsICcvc3cvc3JjJ10KLS0KKysgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKKysgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQorKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCisgCiAtICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvdXNyL1gxMVI2L2xpYicsICcvdXNyL1gxMS9saWInLAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9saWInXSwgcGxhdGZvcm1fYml0cykKIC0gICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvdXNyL1gxMVI2L2luY2x1ZGUnLCAnL3Vzci9YMTEvaW5jbHVkZScsCkBAIC01MCw3ICs1Myw3IEBACiAtICAgICAgICAjIHRlc3RzIGFyZSBydW4gaW4gZGVidWcgbW9kZSBQeXRob24gMy4KIC0gICAgICAgIHRtcCA9IG9wZW4ob3MuZGV2bnVsbCwgJ3cnKQogLSAgICAgICAgcCA9IHNwLlBvcGVuKFsiZ2NjIiwgIi1wcmludC1tdWx0aWFyY2giXSwgc3Rkb3V0PXNwLlBJUEUsCi0tICAgICAgICAgICAgICAgIHN0ZGVycj10bXApCistICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXRtcCkKIC0gICAgZXhjZXB0IChPU0Vycm9yLCBEaXN0dXRpbHNFcnJvcik6CiAtICAgICAgICAjIE9TRXJyb3IgaWYgZ2NjIGlzIG5vdCBpbnN0YWxsZWQsIG9yIFNhbmRib3hWaW9sYXRpb24gKERpc3R1dGlsc0Vycm9yCiAtICAgICAgICAjIHN1YmNsYXNzKSBpZiBhbiBvbGQgc2V0dXB0b29scyBidWcgaXMgdHJpZ2dlcmVkIChzZWUgZ2gtMzE2MCkuCkBAIC02NCwxNSArNjcsOCBAQAogLSAgICBmaW5hbGx5OgogLSAgICAgICAgaWYgdG1wIGlzIG5vdCBOb25lOgogLSAgICAgICAgICAgIHRtcC5jbG9zZSgpCi0rICAgIGRlZmF1bHRfbGliX2RpcnMgPSBsaWJwYXRocyhbJy9kZWFkaXIvbGliJ10sIHBsYXRmb3JtX2JpdHMpCi0rICAgIGRlZmF1bHRfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KLSsgICAgZGVmYXVsdF9zcmNfZGlycyA9IFsnLicsICcvZGVhZGRpci9zcmMnXQotKwogKyAgICBkZWZhdWx0X3gxMV9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRkaXIvbGliJ10sIHBsYXRmb3JtX2JpdHMpCiArICAgIGRlZmF1bHRfeDExX2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCiAgCiAgaWYgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdsaWInKSBub3QgaW4gZGVmYXVsdF9saWJfZGlyczoKICAgICAgZGVmYXVsdF9saWJfZGlycy5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdsaWInKSkKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2Q3MGQzN2I3YzRhYTJhZjNmZTg3OWEwZDg1OGM1NGYyYWEzMmE3MjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2IwNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMTU0YjJjMTlmMzkyODE3YTkzNmFlYTAxOTBlMjc2ZjgyMjhjYjQ4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJFcmlrIE0uIEJyYXkiIDxlcmlrLmJyYXlAbHJpLmZyPgotRGF0ZTogTW9uLCAxMiBEZWMgMjAxNiAxMzowNzoxNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBCVUc6IHhsb2NhbGUuaCBpcyBub3QgYXZhaWxhYmxlIGluIG5ld2xpYi0tYWxsIHRoZSBkZWZpbmVzCi0gdXNlZCBoZXJlIGZyb20geGxvY2FsZS5oIGFyZSBpbnN0ZWFkIGZvdW5kIGluIGxvY2FsZS5oCi0KLUFkZGVkIGEgZmVhdHVyZSBjaGVjayBmb3IgeGxvY2FsZS5oLCB3aXRoIGZhbGxiYWNrIHRvIGxvY2FsZS5oIGlmIGl0IGlzCi1taXNzaW5nLgotLS0tCi0gbnVtcHkvY29yZS9zZXR1cF9jb21tb24ucHkgICAgICAgICAgfCAxICsKLSBudW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYyB8IDggKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1SUCAyMDE3LzkvNgotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvY29yZS9zZXR1cF9jb21tb24ucHkgYi9udW1weS9jb3JlL3NldHVwX2NvbW1vbi5weQotaW5kZXggYmE3NTIxZTMwNDMuLmExNzI5ZTY1NjU2IDEwMDY0NAotLS0tIGEvbnVtcHkvY29yZS9zZXR1cF9jb21tb24ucHkKLSsrKyBiL251bXB5L2NvcmUvc2V0dXBfY29tbW9uLnB5Ci1AQCAtMTEzLDYgKzExMyw3IEBAIGRlZiBjaGVja19hcGlfdmVyc2lvbihhcGl2ZXJzaW9uLCBjb2RlZ2VuX2Rpcik6Ci0gICAgICAgICAgICAgICAgICJ4bW1pbnRyaW4uaCIsICAjIFNTRQotICAgICAgICAgICAgICAgICAiZW1taW50cmluLmgiLCAgIyBTU0UyCi0gICAgICAgICAgICAgICAgICJmZWF0dXJlcy5oIiwgICMgZm9yIGdsaWJjIHZlcnNpb24gbGludXgKLSsgICAgICAgICAgICAgICAgInhsb2NhbGUuaCIgICMgc2VlIEdIIzgzNjcKLSBdCi0gCi0gIyBvcHRpb25hbCBnY2MgY29tcGlsZXIgYnVpbHRpbnMgYW5kIHRoZWlyIGNhbGwgYXJndW1lbnRzIGFuZCBvcHRpb25hbCBhCi1kaWZmIC0tZ2l0IGEvbnVtcHkvY29yZS9zcmMvbXVsdGlhcnJheS9udW1weW9zLmMgYi9udW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYwotaW5kZXggNDUwZWM0MGI2ZTAuLjg0NjE3ZWE3OGMzIDEwMDY0NAotLS0tIGEvbnVtcHkvY29yZS9zcmMvbXVsdGlhcnJheS9udW1weW9zLmMKLSsrKyBiL251bXB5L2NvcmUvc3JjL211bHRpYXJyYXkvbnVtcHlvcy5jCi1AQCAtMTUsNyArMTUsMTMgQEAKLSAKLSAjaWZkZWYgSEFWRV9TVFJUT0xEX0wKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHhsb2NhbGUuaD4KLSsjaWZkZWYgSEFWRV9YTE9DQUxFX0gKLSsgICAgLyoKLSsgICAgICogdGhlIGRlZmluZXMgZnJvbSB4bG9jYWxlLmggYXJlIGluY2x1ZGVkIGluIGxvY2FsZS5oIG9uIHNvbWUgc3l0ZW1zOwotKyAgICAgKiBzZWUgZ2gtODM2NwotKyAgICAgKi8KLSsgICAgI2luY2x1ZGUgPHhsb2NhbGUuaD4KLSsjZW5kaWYKLSAjZW5kaWYKLSAKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGM5NmQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjExLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9N2U1MWE1Njc3YjIyYjg2NWFiYmZiM2RmZjZmZmIyZDAiCi0KLVNSQ05BTUUgPSAibnVtcHkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9uLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaCBcCi0gICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9udW1weS9maWxlcy8iCi0KLUNPTkZJR0ZJTEVTVVJJID89ICIiCi0KLUNPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICB0cnVlCi0gICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LwotfQotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzYmQ3OTI3YzMxNGM0Mzc4MDI3MWJmMWFiNzk1ZWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0ZGIyZmJkNjRlMmU3YzY4ZTc0MGIxNDQwMmIyNWFmNTE0MThmYzQzYTU5ZDllNTQxNzJiMzhiOTA2YjBmNjkiCi0KLSMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tdW5pdHRlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpZmZsaWIgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXBwcmludCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcGlja2xlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbm9zZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZG9jdGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpc3R1dGlscyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbWlzYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbW1hcCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1udW1iZXJzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1weWRvYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcGtndXRpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZW1haWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jdHlwZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXRocmVhZGluZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZThmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMDAyYjA5Y2Q2NTRmY2FhMmRjYzg3NTM1YWNkOWE5NiIKKworU1JDTkFNRSA9ICJudW1weSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggXAorICAgICAgICAgICAke0NPTkZJR0ZJTEVTVVJJfSAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZDQ1OWU0YTI0ZjUwMzVmNzIwZGRhM2M1NzcxNmE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTAyMGVjMDZmMWU5Y2UxMTE1YTUwMTYxYTM4YmY4ZDRjMjUyNTM3OTkwMGY5Y2I0NzhjYzYxM2ExZTdjZDkzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3JlbGVhc2VzIgorCitDT05GSUdGSUxFU1VSSSA/PSAiIgorCitDT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYtNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYyA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGM2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9udW1weS0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzCisKKyMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCisjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCisgICAgdHJ1ZQorICAgIGNwICR7V09SS0RJUn0vKmNvbmZpZy5oICR7U30vYnVpbGQvJChscyAke1N9L2J1aWxkIHwgZ3JlcCBzcmMpL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS8KK30KKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9udW1weS9jb3JlL2xpYi8qLmEiCisKKyMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tdW5pdHRlc3QgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpZmZsaWIgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXBwcmludCBcCisgICAgICAgICAgICAgICAgICBweXRob24tcGlja2xlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbCBcCisgICAgICAgICAgICAgICAgICBweXRob24tbm9zZSBcCisgICAgICAgICAgICAgICAgICBweXRob24tZG9jdGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpc3R1dGlscyBcCisgICAgICAgICAgICAgICAgICBweXRob24tbWlzYyBcCisgICAgICAgICAgICAgICAgICBweXRob24tbW1hcCBcCisgICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1weWRvYyBcCisgICAgICAgICAgICAgICAgICBweXRob24tcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZW1haWwgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXN1YnByb2Nlc3MgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1jdHlwZXMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXRocmVhZGluZyBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmOTY2NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9N2U1MWE1Njc3YjIyYjg2NWFiYmZiM2RmZjZmZmIyZDAiCi0KLVNSQ05BTUUgPSAibnVtcHkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9uLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaCBcCi0gICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9udW1weS9maWxlcy8iCi0KLUNPTkZJR0ZJTEVTVVJJID89ICIiCi0KLUNPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLSMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCi0jIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICB0cnVlCi0gICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LwotfQotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzYmQ3OTI3YzMxNGM0Mzc4MDI3MWJmMWFiNzk1ZWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0ZGIyZmJkNjRlMmU3YzY4ZTc0MGIxNDQwMmIyNWFmNTE0MThmYzQzYTU5ZDllNTQxNzJiMzhiOTA2YjBmNjkiCi0KLSMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBwcmludCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBpY2tsZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbm9zZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRvY3Rlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW1pc2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGtndXRpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWVtYWlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY3R5cGVzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGV4dHV0aWxzIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTg3NGI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjEzLjEuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgorCitTUkNOQU1FID0gIm51bXB5IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCisgICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZDQ1OWU0YTI0ZjUwMzVmNzIwZGRhM2M1NzcxNmE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTAyMGVjMDZmMWU5Y2UxMTE1YTUwMTYxYTM4YmY4ZDRjMjUyNTM3OTkwMGY5Y2I0NzhjYzYxM2ExZTdjZDkzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3JlbGVhc2VzIgorCitDT05GSUdGSUxFU1VSSSA/PSAiIgorCitDT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYtNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYyA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGM2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9udW1weS0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCisjIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQorIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCisgICAgdHJ1ZQorICAgIGNwICR7V09SS0RJUn0vKmNvbmZpZy5oICR7U30vYnVpbGQvJChscyAke1N9L2J1aWxkIHwgZ3JlcCBzcmMpL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS8KK30KKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9udW1weS9jb3JlL2xpYi8qLmEiCisKKyMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBwcmludCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBpY2tsZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbm9zZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRvY3Rlc3QgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLW1pc2MgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tbWFwIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbnVtYmVycyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXB5ZG9jIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWVtYWlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY3R5cGVzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGV4dHV0aWxzIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTIuNy1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYwppbmRleCA3ZWQyNTRiLi41N2Q0ODM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYwpAQCAtMjgxLDcgKzI4MSw3IEBACiBGSUxFU18ke1BOfS16bGliPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3psaWIuc28gIgogCiBTVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXVkaW8gJHtQTn0tYnNkZGIgJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcGlsZXIgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29udGV4dGxpYiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1mY250bCAke1BOfS1nZGJtICR7UE59LWhvdHNob3QgJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcGxpc3RsaWIgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVzb3VyY2UgJHtQTn0tcm9ib3RwYXJzZXIgJHtQTn0tc2hlbGwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXN0cyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgJHtQTn0temxpYiAgIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICAiCiBBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCiAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwppbmRleCAxZTIwZjAwLi4wMjYwZTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwpAQCAtMSw2ICsxLDYgQEAKIAogIyBXQVJOSU5HOiBUaGlzIGZpbGUgaXMgQVVUTyBHRU5FUkFURUQ6IE1hbnVhbCBlZGl0cyB3aWxsIGJlIGxvc3QgbmV4dCB0aW1lIEkgcmVnZW5lcmF0ZSB0aGUgZmlsZS4KLSMgR2VuZXJhdG9yOiAnLi4vLi4vLi4vc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHknIFZlcnNpb24gMjAxNDAxMzEgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KKyMgR2VuZXJhdG9yOiAnc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHknIFZlcnNpb24gMjAxNDAxMzEgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KIAogIAogCkBAIC0zNCw3ICszNCw3IEBACiAKIFNVTU1BUllfJHtQTn0tY29tcHJlc3Npb249IlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCiBSREVQRU5EU18ke1BOfS1jb21wcmVzc2lvbj0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW1wb3J0bGliICR7UE59LXRocmVhZGluZyAke1BOfS1zaGVsbCIKLUZJTEVTXyR7UE59LWNvbXByZXNzaW9uPSIke2xpYmRpcn0vcHl0aG9uMy41L2d6aXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2d6aXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L3ppcGZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3ppcGZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RhcmZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RhcmZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2J6Mi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC96bGliLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy96bGliLiouc28gIgorRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9sem1hLnB5ICR7bGliZGlyfS9weXRob24zLjUvX2NvbXByZXNzaW9uLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXByZXNzaW9uLnB5ICIKIAogU1VNTUFSWV8ke1BOfS1jb3JlPSJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKIFJERVBFTkRTXyR7UE59LWNvcmU9IiR7UE59LWxhbmcgJHtQTn0tcmUgJHtQTn0tcmVwcmxpYiAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tbWF0aCIKQEAgLTY2LDcgKzY2LDcgQEAKIAogU1VNTUFSWV8ke1BOfS1kZXY9IlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgogUkRFUEVORFNfJHtQTn0tZGV2PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tZGV2PSIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7YmFzZV9saWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLm8gJHtkYXRhZGlyfS9hY2xvY2FsICR7ZGF0YWRpcn0vcGtnY29uZmlnICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL01ha2VmaWxlICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL01ha2VmaWxlL19fcHljYWNoZV9fICIKK0ZJTEVTXyR7UE59LWRldj0iJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2Jhc2VfbGliZGlyfS8qLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCAke2RhdGFkaXJ9L3BrZ2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlL19fcHljYWNoZV9fICIKIAogU1VNTUFSWV8ke1BOfS1kaWZmbGliPSJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiCiBSREVQRU5EU18ke1BOfS1kaWZmbGliPSIke1BOfS1sYW5nICR7UE59LXJlIgpAQCAtMjQxLDcgKzI0MSw3IEBACiBGSUxFU18ke1BOfS10ZXJtaW5hbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9wdHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B0eS4qICR7bGliZGlyfS9weXRob24zLjUvdHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90dHkuKiAiCiAKIFNVTU1BUllfJHtQTn0tdGVzdHM9IlB5dGhvbiB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXRlc3RzPSIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tdGVzdHM9IiR7UE59LWNvcmUgJHtQTn0tY29tcHJlc3Npb24iCiBGSUxFU18ke1BOfS10ZXN0cz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0ICR7bGliZGlyfS9weXRob24zLjUvdGVzdC9fX3B5Y2FjaGVfXyAiCiAKIFNVTU1BUllfJHtQTn0tdGV4dHV0aWxzPSJQeXRob24gb3B0aW9uIHBhcnNpbmcsIHRleHQgd3JhcHBpbmcgYW5kIENTViBzdXBwb3J0IgpAQCAtMjc3LDcgKzI3Nyw3IEBACiBGSUxFU18ke1BOfS14bWxycGM9IiR7bGliZGlyfS9weXRob24zLjUveG1scnBjbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L1NpbXBsZVhNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Eb2NYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL0RvY1hNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUveG1scnBjICR7bGliZGlyfS9weXRob24zLjUveG1scnBjL19fcHljYWNoZV9fICIKIAogU1VNTUFSWV8ke1BOfS1tb2R1bGVzPSJBbGwgUHl0aG9uIG1vZHVsZXMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWFzeW5jaW8gJHtQTn0tYXVkaW8gJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZW51bSAke1BOfS1mY250bCAke1BOfS1nZGJtICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlcHJsaWIgJHtQTn0tcmVzb3VyY2UgJHtQTn0tc2VsZWN0b3JzICR7UE59LXNoZWxsICR7UE59LXNpZ25hbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS10eXBpbmcgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgICIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgogQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luY18wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luY18wLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1NWU0Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmNfMC42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWFzeW5jLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLWxhbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCmluZGV4IGZlZGRmMjcuLjc3NzYwOGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCkBAIC0xMCw4ICsxMCw4IEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9HL0dpdFB5dGhvbi9HaXRQeXRob24tJHtQVn0udGFyLmd6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzdmODMzOWU2OGRlZGI2ZDdjNGUyNjM3MWE1ODhlZDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTk2ZjhlOTUzY2Y5ZmVlMGE3NTk5ZmM1ODc2Njc1OTEzMjg3NjBiNjM0MWEwMDgxZWYzMTFhOTQyZmM5NjIwNCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZjk0MjEyYjE5ZDI3MGE2MjViNjdiNGM4NGFjOWE0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YzAwY2JkMjU2ZTJiMWQwMzkzODFkNGY3ZDcxZmNiN2VlNWNjMTk2Y2ExMGMxMDFmZjcxOTFiZDgyYWI1ZDljIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9HaXRQeXRob24vIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0dpdFB5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdF8yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ5ZGJlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1naXQuaW5jCi0KLURFUEVORFMgPSAicHl0aG9uLWdpdGRiIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1naXRkYiBweXRob24tbGFuZyBweXRob24taW8gcHl0aG9uLXNoZWxsIHB5dGhvbi1tYXRoIHB5dGhvbi1yZSBweXRob24tc3VicHJvY2VzcyBweXRob24tc3RyaW5nb2xkIHB5dGhvbi11bml4YWRtaW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGJfMC42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGJfMC42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NzczOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiXzAuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKLQotREVQRU5EUyA9ICJweXRob24tYXN5bmMgcHl0aG9uLXNtbWFwIgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXNtbWFwIHB5dGhvbi1hc3luYyBweXRob24tbW1hcCBweXRob24tbGFuZyBweXRob24temxpYiBweXRob24taW8gcHl0aG9uLXNoZWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCmluZGV4IDEwMzY0ZGIuLjFjODNhZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKQEAgLTEsMTIgKzEsMTMgQEAKIFNVTU1BUlkgPSAiVGVtcGxhdGluZyBsaWJyYXJ5IGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1ha290ZW1wbGF0ZXMub3JnLyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYmIyMWZhMmQyZjdhNTM0Yzg4NGI5OTA0MzBhNjg2MyIKIAogU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL00vTWFrby9NYWtvLSR7UFZ9LnRhci5neiIKIAotU1JDX1VSSVttZDVzdW1dID0gImEyOGUyMmEzMzkwODAzMTZiMmFjYzM1MmI5ZWU2MzFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4NTU5ZWJkODcyYThlNzdmOTIwMDU4ODRiM2Q4OGZmYWU1NTI4MTJjZGYxN2RiNjc2OGU1YzNiZTVlYmJlMGQiCitTUkNfVVJJW21kNXN1bV0gPSAiNTgzNmNjOTk3YjFiNzczZWYzODliZjY2MjljMzBlNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGUwMmZkZTU3YmQ0YWJiNWVjNDAwMTgxZTRjMzE0ZjU2YWMzZTQ5YmE0ZmI4YjBkNTBiYmExOGNiMjdkMjVhZSIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbWFrby8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvTWFrby8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrb18xLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzAwNDRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbWFrby5pbmMKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi10aHJlYWRpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24taHRtbCBcCi0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgVGhlIHNhbWUgdXRpbGl0eSBpcyBwYWNrYWdlZCBpbiBweXRob24zLW1ha28sIHNvIGl0IHdvdWxkIGNvbmZsaWN0Ci1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L21ha28tcmVuZGVyCi0gICAgcm1kaXIgJHtEfSR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCmluZGV4IDU4MWEzN2EuLmIwNWFhZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMi43LW1hbmlmZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMKQEAgLTEsMTAgKzEsOSBAQAogCiAjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi8uLi8uLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDExMDIyMi4yIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+CisjIEdlbmVyYXRvcjogJy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTEwMjIyLjIgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KIAogIAogCi1SUFJPVklERVMrPSJweXRob24tMnRvMy1uYXRpdmUgcHl0aG9uLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24tYXVkaW8tbmF0aXZlIHB5dGhvbi1ic2RkYi1uYXRpdmUgcHl0aG9uLWNvZGVjcy1uYXRpdmUgcHl0aG9uLWNvbXBpbGUtbmF0aXZlIHB5dGhvbi1jb21waWxlci1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tY29udGV4dGxpYi1uYXRpdmUgcHl0aG9uLWNvcmUtbmF0aXZlIHB5dGhvbi1jcnlwdC1uYXRpdmUgcHl0aG9uLWN0eXBlcy1uYXRpdmUgcHl0aG9uLWN1cnNlcy1uYXRpdmUgcHl0aG9uLWRhdGV0aW1lLW5hdGl2ZSBweXRob24tZGItbmF0aXZlIHB5dGhvbi1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uLWRldi1uYXRpdmUgcHl0aG9uLWRpZmZsaWItbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24tZG9jdGVzdC1uYXRpdmUgcHl0aG9uLWVtYWlsLW5hdGl2ZSBweXRob24tZmNudGwtbmF0aXZlIHB5dGhvbi1nZGJtLW5hdGl2ZSBweXRob24taG90c2hvdC1uYXRpdmUgcHl0aG9uLWh0bWwtbmF0aXZlIHB5dGhvbi1pZGxlLW5hdGl2ZSBweXRob24taW1hZ2UtbmF0aXZlIHB5dGhvbi1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbi1pby1uYXRpdmUgcHl0aG9uLWpzb24tbmF0aXZlIHB5dGhvbi1sYW5nLW5hdGl2ZSBweXRob24tbG9nZ2luZy1uYXRpdmUgcHl0aG9uLW1haWxib3gtbmF0aXZlIHB5dGhvbi1tYXRoLW5hdGl2ZSBweXRob24tbWltZS1uYXRpdmUgcHl0aG9uLW1tYXAtbmF0aXZlIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbi1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbi1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbi1udW1iZXJzLW5hdGl2ZSBweXRob24tcGlja2xlLW5hdGl2ZSBweXRob24tcGtndXRpbC1uYXRpdmUgcHl0aG9uLXBsaXN0bGliLW5hdGl2ZSBweXRob24tcHByaW50LW5hdGl2ZSBweXRob24tcHJvZmlsZS1uYXRpdmUgcHl0aG9uLXB5ZG9jLW5hdGl2ZSBweXRob24tcmUtbmF0aXZlIHB5dGhvbi1yZWFkbGluZS1uYXRpdmUgcHl0aG9uLXJlc291cmNlLW5hdGl2ZSBweXRob24tcm9ib3RwYXJzZXItbmF0aXZlIHB5dGhvbi1zaGVsbC1uYXRpdmUgcHl0aG9uLXNtdHBkLW5hdGl2ZSBweXRob24tc3FsaXRlMy1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbi1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbi1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24tc3lzbG9nLW5hdGl2ZSBweXRob24tdGVybWluYWwtbmF0aXZlIHB5dGhvbi10ZXN0cy1uYXRpdmUgcHl0aG9uLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uLXRraW50ZXItbmF0aXZlIHB5dGhvbi11bml0dGVzdC1uYXRpdmUgcHl0aG9uLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uLXhtbC1uYXRpdmUgcHl0aG9uLXhtbHJwYy1uYXRpdmUgcHl0aG9uLXpsaWItbmF0aXZlICIKLQorUlBST1ZJREVTICs9ICJweXRob24tbW9kdWxlcy1uYXRpdmUgcHl0aG9uLTJ0bzMtbmF0aXZlIHB5dGhvbi1hcmdwYXJzZS1uYXRpdmUgcHl0aG9uLWF1ZGlvLW5hdGl2ZSBweXRob24tYnNkZGItbmF0aXZlIHB5dGhvbi1jb2RlY3MtbmF0aXZlIHB5dGhvbi1jb21waWxlLW5hdGl2ZSBweXRob24tY29tcGlsZXItbmF0aXZlIHB5dGhvbi1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uLWNvbnRleHRsaWItbmF0aXZlIHB5dGhvbi1jb3JlLW5hdGl2ZSBweXRob24tY3J5cHQtbmF0aXZlIHB5dGhvbi1jdHlwZXMtbmF0aXZlIHB5dGhvbi1jdXJzZXMtbmF0aXZlIHB5dGhvbi1kYXRldGltZS1uYXRpdmUgcHl0aG9uLWRiLW5hdGl2ZSBweXRob24tZGVidWdnZXItbmF0aXZlIHB5dGhvbi1kZXYtbmF0aXZlIHB5dGhvbi1kaWZmbGliLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLXN0YXRpY2Rldi1uYXRpdmUgcHl0aG9uLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbi1lbWFpbC1uYXRpdmUgcHl0aG9uLWZjbnRsLW5hdGl2ZSBweXRob24tZ2RibS1uYXRpdmUgcHl0aG9uLWhvdHNob3QtbmF0aXZlIHB5dGhvbi1odG1sLW5hdGl2ZSBweXRob24taWRsZS1uYXRpdmUgcHl0aG9uLWltYWdlLW5hdGl2ZSBweXRob24taW1wb3J0bGliLW5hdGl2ZSBweXRob24taW8tbmF0aXZlIHB5dGhvbi1qc29uLW5hdGl2ZSBweXRob24tbGFuZy1uYXRpdmUgcHl0aG9uLWxvZ2dpbmctbmF0aXZlIHB5dGhvbi1tYWlsYm94LW5hdGl2ZSBweXRob24tbWF0aC1uYXRpdmUgcHl0aG9uLW1pbWUtbmF0aXZlIHB5dGhvbi1tbWFwLW5hdGl2ZSBweXRob24tbXVsdGlwcm9jZXNzaW5nLW5hdGl2ZSBweXRob24tbmV0Y2xpZW50LW5hdGl2ZSBweXRob24tbmV0c2VydmVyLW5hdGl2ZSBweXRob24tbnVtYmVycy1uYXRpdmUgcHl0aG9uLXBpY2tsZS1uYXRpdmUgcHl0aG9uLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbi1wbGlzdGxpYi1uYXRpdmUgcHl0aG9uLXBwcmludC1uYXRpdmUgcHl0aG9uLXByb2ZpbGUtbmF0aXZlIHB5dGhvbi1weWRvYy1uYXRpdmUgcHl0aG9uLXJlLW5hdGl2ZSBweXRob24tcmVhZGxpbmUtbmF0aXZlIHB5dGhvbi1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uLXJvYm90cGFyc2VyLW5hdGl2ZSBweXRob24tc2hlbGwtbmF0aXZlIHB5dGhvbi1zbXRwZC1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbi1zcWxpdGUzLXRlc3RzLW5hdGl2ZSBweXRob24tc3RyaW5nb2xkLW5hdGl2ZSBweXRob24tc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uLXN5c2xvZy1uYXRpdmUgcHl0aG9uLXRlcm1pbmFsLW5hdGl2ZSBweXRob24tdGVzdHMtbmF0aXZlIHB5dGhvbi10ZXh0dXRpbHMtbmF0aXZlIHB5dGhvbi10aHJlYWRpbmctbmF0aXZlIHB5dGhvbi10a2ludGVyLW5hdGl2ZSBweXRob24tdW5pdHRlc3QtbmF0aXZlIHB5dGhvbi11bml4YWRtaW4tbmF0aXZlIHB5dGhvbi14bWwtbmF0aXZlIHB5dGhvbi14bWxycGMtbmF0aXZlIHB5dGhvbi16bGliLW5hdGl2ZSIKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKaW5kZXggMTBiZTNlOS4uZjFmNzMyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0zLjUtbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYwpAQCAtMSwxMCArMSwxMCBAQAogCiAjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi8uLi8uLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgorIyBHZW5lcmF0b3I6ICcuLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgogCiAgCiAKLVJQUk9WSURFUys9InB5dGhvbjMtMnRvMy1uYXRpdmUgcHl0aG9uMy1hcmdwYXJzZS1uYXRpdmUgcHl0aG9uMy1hc3luY2lvLW5hdGl2ZSBweXRob24zLWF1ZGlvLW5hdGl2ZSBweXRob24zLWNvZGVjcy1uYXRpdmUgcHl0aG9uMy1jb21waWxlLW5hdGl2ZSBweXRob24zLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24zLWNvcmUtbmF0aXZlIHB5dGhvbjMtY3J5cHQtbmF0aXZlIHB5dGhvbjMtY3R5cGVzLW5hdGl2ZSBweXRob24zLWN1cnNlcy1uYXRpdmUgcHl0aG9uMy1kYXRldGltZS1uYXRpdmUgcHl0aG9uMy1kYi1uYXRpdmUgcHl0aG9uMy1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uMy1kZXYtbmF0aXZlIHB5dGhvbjMtZGlmZmxpYi1uYXRpdmUgcHl0aG9uMy1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLXN0YXRpY2Rldi1uYXRpdmUgcHl0aG9uMy1kb2N0ZXN0LW5hdGl2ZSBweXRob24zLWVtYWlsLW5hdGl2ZSBweXRob24zLWVudW0tbmF0aXZlIHB5dGhvbjMtZmNudGwtbmF0aXZlIHB5dGhvbjMtZ2RibS1uYXRpdmUgcHl0aG9uMy1odG1sLW5hdGl2ZSBweXRob24zLWlkbGUtbmF0aXZlIHB5dGhvbjMtaW1hZ2UtbmF0aXZlIHB5dGhvbjMtaW1wb3J0bGliLW5hdGl2ZSBweXRob24zLWlvLW5hdGl2ZSBweXRob24zLWpzb24tbmF0aXZlIHB5dGhvbjMtbGFuZy1uYXRpdmUgcHl0aG9uMy1sb2dnaW5nLW5hdGl2ZSBweXRob24zLW1haWxib3gtbmF0aXZlIHB5dGhvbjMtbWF0aC1uYXRpdmUgcHl0aG9uMy1taW1lLW5hdGl2ZSBweXRob24zLW1tYXAtbmF0aXZlIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nLW5hdGl2ZSBweXRob24zLW5ldGNsaWVudC1uYXRpdmUgcHl0aG9uMy1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbjMtbnVtYmVycy1uYXRpdmUgcHl0aG9uMy1waWNrbGUtbmF0aXZlIHB5dGhvbjMtcGtndXRpbC1uYXRpdmUgcHl0aG9uMy1wcHJpbnQtbmF0aXZlIHB5dGhvbjMtcHJvZmlsZS1uYXRpdmUgcHl0aG9uMy1weWRvYy1uYXRpdmUgcHl0aG9uMy1yZS1uYXRpdmUgcHl0aG9uMy1yZWFkbGluZS1uYXRpdmUgcHl0aG9uMy1yZXBybGliLW5hdGl2ZSBweXRob24zLXJlc291cmNlLW5hdGl2ZSBweXRob24zLXNlbGVjdG9ycy1uYXRpdmUgcHl0aG9uMy1zaGVsbC1uYXRpdmUgcHl0aG9uMy1zaWduYWwtbmF0aXZlIHB5dGhvbjMtc210cGQtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy1uYXRpdmUgcHl0aG9uMy1zcWxpdGUzLXRlc3RzLW5hdGl2ZSBweXRob24zLXN0cmluZ29sZC1uYXRpdmUgcHl0aG9uMy1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24zLXN5c2xvZy1uYXRpdmUgcHl0aG9uMy10ZXJtaW5hbC1uYXRpdmUgcHl0aG9uMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy10ZXh0dXRpbHMtbmF0aXZlIHB5dGhvbjMtdGhyZWFkaW5nLW5hdGl2ZSBweXRob24zLXRraW50ZXItbmF0aXZlIHB5dGhvbjMtdHlwaW5nLW5hdGl2ZSBweXRob24zLXVuaXR0ZXN0LW5hdGl2ZSBweXRob24zLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uMy14bWwtbmF0aXZlIHB5dGhvbjMteG1scnBjLW5hdGl2ZSAiCitSUFJPVklERVMgKz0gInB5dGhvbjMtbW9kdWxlcy1uYXRpdmUgcHl0aG9uMy0ydG8zLW5hdGl2ZSBweXRob24zLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24zLWFzeW5jaW8tbmF0aXZlIHB5dGhvbjMtYXVkaW8tbmF0aXZlIHB5dGhvbjMtY29kZWNzLW5hdGl2ZSBweXRob24zLWNvbXBpbGUtbmF0aXZlIHB5dGhvbjMtY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbjMtY29yZS1uYXRpdmUgcHl0aG9uMy1jcnlwdC1uYXRpdmUgcHl0aG9uMy1jdHlwZXMtbmF0aXZlIHB5dGhvbjMtY3Vyc2VzLW5hdGl2ZSBweXRob24zLWRhdGV0aW1lLW5hdGl2ZSBweXRob24zLWRiLW5hdGl2ZSBweXRob24zLWRlYnVnZ2VyLW5hdGl2ZSBweXRob24zLWRldi1uYXRpdmUgcHl0aG9uMy1kaWZmbGliLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uMy1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24zLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbjMtZW1haWwtbmF0aXZlIHB5dGhvbjMtZW51bS1uYXRpdmUgcHl0aG9uMy1mY250bC1uYXRpdmUgcHl0aG9uMy1nZGJtLW5hdGl2ZSBweXRob24zLWh0bWwtbmF0aXZlIHB5dGhvbjMtaWRsZS1uYXRpdmUgcHl0aG9uMy1pbWFnZS1uYXRpdmUgcHl0aG9uMy1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbjMtaW8tbmF0aXZlIHB5dGhvbjMtanNvbi1uYXRpdmUgcHl0aG9uMy1sYW5nLW5hdGl2ZSBweXRob24zLWxvZ2dpbmctbmF0aXZlIHB5dGhvbjMtbWFpbGJveC1uYXRpdmUgcHl0aG9uMy1tYXRoLW5hdGl2ZSBweXRob24zLW1pbWUtbmF0aXZlIHB5dGhvbjMtbW1hcC1uYXRpdmUgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbjMtbmV0Y2xpZW50LW5hdGl2ZSBweXRob24zLW5ldHNlcnZlci1uYXRpdmUgcHl0aG9uMy1udW1iZXJzLW5hdGl2ZSBweXRob24zLXBpY2tsZS1uYXRpdmUgcHl0aG9uMy1wa2d1dGlsLW5hdGl2ZSBweXRob24zLXBwcmludC1uYXRpdmUgcHl0aG9uMy1wcm9maWxlLW5hdGl2ZSBweXRob24zLXB5ZG9jLW5hdGl2ZSBweXRob24zLXJlLW5hdGl2ZSBweXRob24zLXJlYWRsaW5lLW5hdGl2ZSBweXRob24zLXJlcHJsaWItbmF0aXZlIHB5dGhvbjMtcmVzb3VyY2UtbmF0aXZlIHB5dGhvbjMtc2VsZWN0b3JzLW5hdGl2ZSBweXRob24zLXNoZWxsLW5hdGl2ZSBweXRob24zLXNpZ25hbC1uYXRpdmUgcHl0aG9uMy1zbXRwZC1uYXRpdmUgcHl0aG9uMy1zcWxpdGUzLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtc3RyaW5nb2xkLW5hdGl2ZSBweXRob24zLXN1YnByb2Nlc3MtbmF0aXZlIHB5dGhvbjMtc3lzbG9nLW5hdGl2ZSBweXRob24zLXRlcm1pbmFsLW5hdGl2ZSBweXRob24zLXRlc3RzLW5hdGl2ZSBweXRob24zLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uMy10aHJlYWRpbmctbmF0aXZlIHB5dGhvbjMtdGtpbnRlci1uYXRpdmUgcHl0aG9uMy10eXBpbmctbmF0aXZlIHB5dGhvbjMtdW5pdHRlc3QtbmF0aXZlIHB5dGhvbjMtdW5peGFkbWluLW5hdGl2ZSBweXRob24zLXhtbC1uYXRpdmUgcHl0aG9uMy14bWxycGMtbmF0aXZlIgogCiAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgppbmRleCAzNzU3ZjNhLi45YjM1MDljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRXh0ZW5kcyBQeXRob24gdW5pdHRlc3QgdG8gbWFrZSB0ZXN0aW5nIGVhc2llciIKK0hPTUVQQUdFID0gImh0dHA6Ly9yZWFkdGhlZG9jcy5vcmcvZG9jcy9ub3NlLyIKIERFU0NSSVBUSU9OID0gIm5vc2UgZXh0ZW5kcyB0aGUgdGVzdCBsb2FkaW5nIGFuZCBydW5uaW5nIGZlYXR1cmVzIG9mIHVuaXR0ZXN0LCBcCiBtYWtpbmcgaXQgZWFzaWVyIHRvIHdyaXRlLCBmaW5kIGFuZCBydW4gdGVzdHMuIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzIxNzk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB1cmUgUHl0aG9uIEV4cGVjdCBsaWtlIE1vZHVsZSBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3BleHBlY3QucmVhZHRoZWRvY3Mub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYzdhNzI1MjUxODgwYWY4YzZhMTQ4MTgxNjY1Mzg1YiIKLQotU1JDTkFNRSA9ICJwZXhwZWN0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjM2OTQ0MTAwMDFhOTlkZmY4M2YwYjUwMGExY2ExYzk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkMTMyNDY1YTc1YjU3YWE4MTgzNDFjNjUyMTM5MmEwNmNjNjYwZmViMzk4OGQ3ZjEwNzRmMzliZDIzYzlhOTIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCi0KLVMgPSAiJHtXT1JLRElSfS9wZXhwZWN0LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBweXRob24taW8gXAotICAgIHB5dGhvbi10ZXJtaW5hbCBcCi0gICAgcHl0aG9uLXJlc291cmNlIFwKLSAgICBweXRob24tZmNudGwgXAotICAgIHB5dGhvbi1wdHlwcm9jZXNzIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkMjRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiUnVuIGEgc3VicHJvY2VzcyBpbiBhIHBzZXVkbyB0ZXJtaW5hbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9wdHlwcm9jZXNzLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2ZkY2Q1MWZhN2Q1ODA4ZGE0ZTc0MzQ2ZWUzOTQ0OTAiCi0KLVNSQ05BTUUgPSAicHR5cHJvY2VzcyIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGU1MzcxMjI5MTRjYzllYzljMWVhZGNkMzZlNzNhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNTMwY2U2M2E5Mjk1YmZhZTdiZDA2ZWRjMDJiNmFhOTM1NjE5ZjQ4NmYwZjFkYzA5NzJmNTE2MjY1ZWU4MWE2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wdHlwcm9jZXNzIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBweXRob24tY29yZSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNjMxOGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgbGliY3VybCIKLUhPTUVQQUdFID0gImh0dHA6Ly9weWN1cmwuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSsgfCBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O2JlZ2lubGluZT0xNjY7ZW5kbGluZT0xODI7bWQ1PWE4NGExY2FhNjViODlkNDU4NGI2OTNkMzY4MDA2MmZiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTEdQTDttZDU9MzU3OWE5ZmQwMjIxZDQ5YTIzN2FhYTMzNDkyZjk4OGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1NSVQ7bWQ1PWI3ZTQzNGFlYjIyOGVkNzMxYzAwYmNmMTc3ZTc5YjE5IgotCi1ERVBFTkRTID0gImN1cmwgJHtQWVRIT05fUE59IgotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWNvcmUgY3VybCIKLVNSQ05BTUUgPSAicHljdXJsIgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovLyR7U1JDTkFNRX0uc291cmNlZm9yZ2UubmV0L2Rvd25sb2FkLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6O25hbWU9YXJjaGl2ZSBcCi0gIGZpbGU6Ly9uby1zdGF0aWMtbGluay5wYXRjaCBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImJjYTdiZjQ3MzIwMDgyNTg4ZGI1NDRjZWQyYmE4NzE3IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGExZTBlYjU1NTczMzg4Mjc1YTFkNmMyNTM0Y2E0Y2ZjYTVkN2ZhNzcyYjk5YjUwNWMwOGZhMTQ5YjI3YWVkMCIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBFbnN1cmUgdGhlIGRvY3N0cmluZ3MgYXJlIGdlbmVyYXRlZCBhcyBtYWtlIGNsZWFuIHdpbGwgcmVtb3ZlIHRoZW0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgZG9jc3RyaW5ncwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vc2hhcmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwvbm8tc3RhdGljLWxpbmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsL25vLXN0YXRpYy1saW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTI3NzljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwvbm8tc3RhdGljLWxpbmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgcHljdXJsLTcuMTkuNS4yLW9yaWcvc2V0dXAucHkgcHljdXJsLTcuMTkuNS4yL3NldHVwLnB5Ci0tLS0gcHljdXJsLTcuMTkuNS4yLW9yaWcvc2V0dXAucHkJMjAxNS0xMS0wMiAxNTo0MjoyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBweWN1cmwtNy4xOS41LjIvc2V0dXAucHkJMjAxNS0xMS0wMiAxNzo1OTozNi4xMjE1MjcyNzMgKzAyMDAKLUBAIC0xNTQsNyArMTU0LDcgQEAKLSAgICAgICAgIG9wdGJ1ZiA9ICcnCi0gICAgICAgICBzc2xoaW50YnVmID0gJycKLSAgICAgICAgIGVycnRleHQgPSAnJwotLSAgICAgICAgZm9yIG9wdGlvbiBpbiBbIi0tbGlicyIsICItLXN0YXRpYy1saWJzIl06Ci0rICAgICAgICBmb3Igb3B0aW9uIGluIFsiLS1saWJzIl06Ci0gICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oKENVUkxfQ09ORklHLCBvcHRpb24pLAotICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsXzcuMjEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy4yMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjcwY2VhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy4yMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weWN1cmwuaW5jCi0KLWluaGVyaXQgZGlzdHV0aWxzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKaW5kZXggNDBmNDdkNC4uY2E1MjFhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwpAQCAtMywxNCArMywxNCBAQAogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTE0NjtlbmRsaW5lPTE0NjttZDU9M2U4ZGYwMjRkNmMxNDQyZDE4ZTg0YWNmOGZiYmM0NzUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT0xO2VuZGxpbmU9MTk7bWQ1PTlhMzM4OTdmMWJjYTExNjBkN2FhZDM4MzUxNTJlMTU4IgogCiBTUkNOQU1FID0gInNldHVwdG9vbHMiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0uemlwIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOGI2Nzg2OGMzNDMwZTk3ODgzM2ViZDBkMWI3NjY2OTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODMwM2ZiMjQzMDYzODVmMDliZjhiMGU1YTM4NWMxNTQ4ZTQyZThlZmMwODU1OGQ2NDA0OWJjMGQ1NWVhMDEyZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOWU2YzA0OTYxN2JhYzBmOWU5MDhhNDFhYjRhMjlhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGZlNWQ0MzJkOTIyZGY1OTVlOTE4NTc3YzUxNDU4ZDYzZjI0NTExNWQxNDFiMzA5YWMzMmVjZmNhMzI5ZGY1IgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zZXR1cHRvb2xzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNjQ3NGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLURFUEVORFMgKz0gInB5dGhvbiIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24tbmF0aXZlIgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24tc3RyaW5nb2xkIFwKLSAgcHl0aG9uLWVtYWlsIFwKLSAgcHl0aG9uLXNoZWxsIFwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbi1wa2d1dGlsIFwKLSAgcHl0aG9uLXBsaXN0bGliIFwKLSAgcHl0aG9uLW51bWJlcnMgXAotICBweXRob24taHRtbCBcCi0gIHB5dGhvbi1uZXRzZXJ2ZXIgXAotICBweXRob24tY3R5cGVzIFwKLSAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICBweXRob24tdW5pdHRlc3QgXAotICBweXRob24tY29tcGlsZSBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCi0gIHB5dGhvbi1kaXN0dXRpbHMgXAotICBweXRob24tY29tcHJlc3Npb24gXAotIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVmYWNjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYworCitQUk9WSURFUyA9ICJweXRob24tZGlzdHJpYnV0ZSIKKworREVQRU5EUyArPSAicHl0aG9uIgorREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gInB5dGhvbi1uYXRpdmUiCisKK2luaGVyaXQgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbi1zdHJpbmdvbGQgXAorICBweXRob24tZW1haWwgXAorICBweXRob24tc2hlbGwgXAorICBweXRob24tZGlzdHV0aWxzIFwKKyAgcHl0aG9uLWNvbXByZXNzaW9uIFwKKyAgcHl0aG9uLXBrZ3V0aWwgXAorICBweXRob24tcGxpc3RsaWIgXAorICBweXRob24tbnVtYmVycyBcCisgIHB5dGhvbi1odG1sIFwKKyAgcHl0aG9uLW5ldHNlcnZlciBcCisgIHB5dGhvbi1jdHlwZXMgXAorICBweXRob24tc3VicHJvY2VzcyBcCisgIHB5dGhvbi11bml0dGVzdCBcCisgIHB5dGhvbi1jb21waWxlIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKKyAgcHl0aG9uLWRpc3R1dGlscyBcCisgIHB5dGhvbi1jb21wcmVzc2lvbiBcCisiCisKK1JSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKK1JQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKK1JDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNTA0ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc2l4LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWlvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTE4ZGQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcF8wLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc21tYXAuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvZGVjcyBweXRob24tbW1hcCBweXRob24tbGFuZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAppbmRleCA1MGNjNTkxLi5mNTU2OGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45CiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBJbmRleDogUHl0aG9uLTIuNy4xMy9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBQeXRob24tMi43LjEzLm9yaWcvY29uZmlndXJlLmFjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZmNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIDcxNDQ3ZjA0OTc5YjI2N2Y4ODY2NTczYjY3YTQzNDBiMjcxOWQ3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDQgQXVnIDIwMTcgMTQ6MTA6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IHBhc3MgbWlzc2luZyBsaWJyYXJpZXMgdG8gRXh0ZW5zaW9uIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCisKK0luIHRoZSBmb2xsb3dpbmcgY29tbWl0OgorLi4uCitjb21taXQgZTcxMWNhZmFiMTNlZmM5YzFmZTZjNWNkNzU4MjY0MDE0NDVlYjU4NQorQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KK0RhdGU6ICAgV2VkIEp1biAxMSAxNjo0NDowNCAyMDA4ICswMDAwCisKKyAgICBNZXJnZWQgcmV2aXNpb25zIDY0MTA0LDY0MTE3IHZpYSBzdm5tZXJnZSBmcm9tCisgICAgc3ZuK3NzaDovL3B5dGhvbmRldkBzdm4ucHl0aG9uLm9yZy9weXRob24vdHJ1bmsKKy4uLgorKHNlZSBkaWZmIGluIHNldHVwLnB5KQorSXQgYXNzaWduZWQgbGlicmFyaWVzIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGFjY29yZGluZwordGhlIGhvc3RfcGxhdGZvcm0sIGJ1dCBub3QgcGFzcyBpdCB0byBFeHRlbnNpb24uCisKK0luIGdsaWJjLCB0aGUgZm9sbG93aW5nIGNvbW1pdCBjYXVzZWQgdHdvIGRlZmluaXRpb24gb2YKK3NlbV9nZXR2YWx1ZSBhcmUgZGlmZmVyZW50LgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9MDQyZTE1MjFjNzk0YTk0NWVkYzQzYjViZmE3ZTY5YWQ3MDQyMDUyNAorKHNlZSBkaWZmIGluIG5wdGwvc2VtX2dldHZhbHVlLmMgZm9yIGRldGFpbCkKK2BfX25ld19zZW1fZ2V0dmFsdWUnIGlzIHRoZSBsYXRlc3Qgc2VtX2dldHZhbHVlQEBHTElCQ18yLjEKK2FuZCBgX19vbGRfc2VtX2dldHZhbHVlJyBpcyB0byBjb21wYXQgdGhlIG9sZCB2ZXJzaW9uCitzZW1fZ2V0dmFsdWVAR0xJQkNfMi4wLgorCitUbyBidWlsZCBweXRob24gZm9yIGVtYmVkZGVkIExpbnV4IHN5c3RlbXM6CitodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMuMS95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbAorSWYgbm90IGV4cGxpY2l0bHkgbGluayB0byBsaWJyYXJ5IHB0aHJlYWQgKC1scHRocmVhZCksIGl0IHdpbGwKK2xvYWQgZ2xpYmMncyBzZW1fZ2V0dmFsdWUgcmFuZG9tbHkgYXQgcnVudGltZS4KKworU3VjaCBhcyBidWlsZCBweXRob24gb24gbGludXggeDg2XzY0IGhvc3QgYW5kIHJ1biB0aGUgcHl0aG9uCitvbiBsaW51eCB4ODZfMzIgdGFyZ2V0LiBJZiBub3QgbGluayBsaWJyYXJ5IHB0aHJlYWQsIGl0IGNhdXNlZAorbXVsdGlwcm9jZXNzaW5nIGJvdW5kZWQgc2VtYXBob3JlIGNvdWxkIG5vdCB3b3JrIGNvcnJlY3RseS4KKy4uLgorPj4+IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKz4+PiBwb29sX3NlbWEgPSBtdWx0aXByb2Nlc3NpbmcuQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQorPj4+IHBvb2xfc2VtYS5hY3F1aXJlKCkKK1RydWUKKz4+PiBwb29sX3NlbWEucmVsZWFzZSgpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CitWYWx1ZUVycm9yOiBzZW1hcGhvcmUgb3IgbG9jayByZWxlYXNlZCB0b28gbWFueSB0aW1lcworLi4uCisKK0FuZCB0aGUgc2VtYXBob3JlIGlzc3VlIGFsc28gY2F1c2VkIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpLnB1dCgpIGh1bmcuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTk5XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXR1cC5weSB8IDcgKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA1NDA1NGMyLi45NjQ2YmZjIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMTU4Niw4ICsxNTg2LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQorLQorLSAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGludXggYW5kIG90aGVyIHVuaWNlcworKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcpKToKKysgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKysgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3B0aHJlYWQnXQorKyAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXIgdW5pY2VzCisgICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCisgICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCisgCitAQCAtMTYxMCw2ICsxNjEyLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1tYWNyb3MuaXRlbXMoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19tdWx0aXByb2Nlc3NpbmcnKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNjUxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitUaGUgY29tcGlsZWQgLnB5YyBmaWxlcyBjb250YWluIHRpbWUgc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgY29tcGlsZSB0aW1lLgorVGhpcyBwcmV2ZW50cyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5LiBUaGlzIHBhdGNoIGFsbG93cyB0byBhY2hpZXZlIGJpbmFyeQorcmVwcm9kdWNpYmlsaXR5IGJ5IG92ZXJyaWRpbmcgdGhlIGJ1aWxkIHRpbWUgc3RhbXAgYnkgdGhlIHZhbHVlIAorZXhwb3J0ZWQgdmlhIFNPVVJDRV9EQVRFX0VQT0NILiAKKworUGF0Y2ggYnkgQmVybmhhcmQgTS4gV2llZGVtYW5uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworRnJpIEZlYiAyNCAxNzowODoyNSBVVEMgMjAxNyAtIGJ3aWVkZW1hbm5Ac3VzZS5jb20KKworLSBBZGQgcmVwcm9kdWNpYmxlLnBhdGNoIHRvIGFsbG93IHJlcHJvZHVjaWJsZSBidWlsZHMgb2YgdmFyaW91cworICBweXRob24gcGFja2FnZXMgbGlrZSBweXRob24tYW1xcAorICBVcHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk2CisKKworQEAgLTAsMCArMSwxNSBAQAorSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3B5X2NvbXBpbGUucHkKKysrKyBQeXRob24tMi43LjEzL0xpYi9weV9jb21waWxlLnB5CitAQCAtMTA4LDYgKzEwOCwxMCBAQCBkZWYgY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lCisgICAgICAgICAgICAgdGltZXN0YW1wID0gbG9uZyhvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKKyAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCisrICAgICAgICBzZGUgPSBvcy5lbnZpcm9uLmdldCgnU09VUkNFX0RBVEVfRVBPQ0gnKQorKyAgICAgICAgaWYgc2RlIGFuZCB0aW1lc3RhbXAgPiBpbnQoc2RlKToKKysgICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQoc2RlKQorKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGUsICh0aW1lc3RhbXAsIHRpbWVzdGFtcCkpCisgICAgICAgICBjb2Rlc3RyaW5nID0gZi5yZWFkKCkKKyAgICAgdHJ5OgorICAgICAgICAgY29kZW9iamVjdCA9IF9fYnVpbHRpbl9fLmNvbXBpbGUoY29kZXN0cmluZywgZGZpbGUgb3IgZmlsZSwnZXhlYycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKaW5kZXggMmM2NTc4Ni4uZmI0YTNiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaApAQCAtMiw2ICsyLDcgQEAKIGlmIGl0IGlzIG5vdCBmb3VuZCBjYXVzZXMgYW4gZXJyb3Igb24gY29uZmlndXJlLAogd2Ugc2hvdWxkIHVzZSBuY3Vyc2VzdyBmcm9tIHN5c3Jvb3QgaW5zdGVhZAogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjEzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNjM4OGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTdhNDY0NjkwN2FiOTA4M2M4MjYyODBiMTllMTAzMTA2IgotCi1ERVBFTkRTID0gInB5dGhvbjMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYTRhODkzYzYzM2M3ODhiZTliODA3OGI2YjMwNWQ1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MThjMGY1ZmI2NzdiZTBmMzRiNzgxZTA0MjQxYzQwNjdjYmQ5MzI3YjY2YmRkOGU3NjMyMDExMzBmNTE3NWJlIgotCi1TID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYTQ0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTQuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0zNWEyM2Q0MmI2MTU0NzA1ODM1NjMxMzI4NzJjOTdkNiIKKworREVQRU5EUyA9ICJweXRob24zIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9kb2N1dGlscy9kb2N1dGlscy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYzUzNzY4ZDYzZGIzODczYjdkNDUyODMzNTUzNDY5ZGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFlNjRlZjJlYmZiMjljYWUxZmFhMTMzYjM3MTAxNDM0OTZlY2EyMWM1MzBmM2Y3MTQyNGQ3NzY4Nzc2NDI3NCIKKworUyA9ICIke1dPUktESVJ9L2RvY3V0aWxzLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMmQ0NTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdC5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLWdpdGRiIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWdpdGRiIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1tYXRoIHB5dGhvbjMtcmUgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdW5peGFkbWluIHB5dGhvbjMtZW51bSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXVuaXR0ZXN0IHB5dGhvbjMtYXJncGFyc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYzJhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuNS5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uLWdpdC5pbmMKKworREVQRU5EUyA9ICJweXRob24zLWdpdGRiIgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWdpdGRiIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1tYXRoIHB5dGhvbjMtcmUgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdW5peGFkbWluIHB5dGhvbjMtZW51bSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXVuaXR0ZXN0IHB5dGhvbjMtYXJncGFyc2UgZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgyZTJjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLWZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi1maWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi1maWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0ke0RJU1RST19TUkNfVVJJfSBcCi1maWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLWZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTA2ZWZiYWNmY2RjN2MzYzkxOThhZWVmYWZkMTU5ZSIgIAotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMTBmNTYxMDBiOWI3NDI1OWViY2Q1ZDRiMjk1YTMyMzI0YjU4YjUxNzQwM2ExMGQxYTJhYTdjYjIyYmNhNDAiIAotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02YjYwMjU4MTMwZTRlZDEwZDMxMDE1MTdlYjViOTM4NSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSIKLQotaW5oZXJpdCBuYXRpdmUKLQotcmVxdWlyZSBweXRob24tbmF0aXZlLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgdW5pbmF0aXZlIG1heSBiZSB1c2VkIG9uIHByZSBnbGliYyAyLjI1IHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBnZXRlbnRyb3B5Ci1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCBhY19jdl9mdW5jX2dldGVudHJvcHk9bm8iCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotICBMSUI9JHtiYXNlbGlifSBcCi0gIEFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotJwotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi0Jc2VkIC1pIC1lICdzLCNkZWZpbmUgSEFWRV9HRVRSQU5ET00gMSwvXCogI3VuZGVmIEhBVkVfR0VUUkFORE9NIFwqLywnICR7Qn0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotCWRvbmUKLQotCSMgVGVzdHMgYXJlIGxhcmdlIGFuZCB3ZSBkb24ndCBuZWVkIHRoZW0gaW4gdGhlIG5hdGl2ZSBzeXNyb290Ci0Jcm0gJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Rlc3QgLXJmCi19Ci0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1taXNjLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNkOWM4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4zLmJiCkBAIC0wLDAgKzEsODQgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitQUiA9ICIke0lOQ19QUn0uMCIKK1BZVEhPTl9NQUpNSU4gPSAiMy41IgorRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKK2ZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCitmaWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCitmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCitmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKK2ZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAorZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjU3ZDFmOGJmYmFiZjRmMjUwMDI3M2ZiMDcwNmU2ZjIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlZmUyYWQ2NTc1ODU1NDIzYWI2MzBmNWI1MWE4ZWY2ZTU1NTZmNzc0NTg0YzA2YmVhYjQ5MjZmOTMwZGRiYjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ODBlZDk5YWE2MGQzNTBjNjVhNjU5MTQ0OTQyMDdlIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIgorCitpbmhlcml0IG5hdGl2ZQorCityZXF1aXJlIHB5dGhvbi1uYXRpdmUtJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKKworIyB1bmluYXRpdmUgbWF5IGJlIHVzZWQgb24gcHJlIGdsaWJjIDIuMjUgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGdldGVudHJvcHkKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIGFjX2N2X2Z1bmNfZ2V0ZW50cm9weT1ubyIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKyAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisnCisKKyMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKK1BZVEhPTkxTQk9QVFMgPSAiIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKKwlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59CisJZmkKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KKwlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQorCisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKwlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCisJCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCisJZG9uZQorCisJIyBUZXN0cyBhcmUgbGFyZ2UgYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QKKwlybSAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVzdCAtcmYKK30KKworUlBST1ZJREVTICs9ICJweXRob24zLW1pc2MtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCmluZGV4IDk5YmJhNDQuLjFlMmZmNzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKQEAgLTE3LDYgKzE3LDEwIEBACiAKIGluaGVyaXQgc2V0dXB0b29sczMKIAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbXYgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMzCit9CisKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCiAgIHB5dGhvbjMtdW5pdHRlc3QgXAogICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiCmluZGV4IDQ0NTZiOWIuLjliOTA3YTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiCkBAIC01Myw0ICs1Myw0IEBACiAgIHB5dGhvbjMteG1scnBjIFwKICIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYgppbmRleCBmOTAzMWIzLi45MjU4YmExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKQEAgLTE5LDYgKzE5LDggQEAKIAogaW5oZXJpdCBkaXN0dXRpbHMzIHBrZ2NvbmZpZwogCitDRkxBR1MgKz0gIi1mUElDIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAogZG9fY29uZmlndXJlKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy4yMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy4yMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDExMTkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljdXJsXzcuMjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXB5Y3VybDoiCi0KLXJlcXVpcmUgcHl0aG9uLXB5Y3VybC5pbmMKLQotaW5oZXJpdCBkaXN0dXRpbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZWRiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDIwNjM2MDc0NGNlZGZmMjBlYWUzYzhmY2ZkZTk5MzhmZGFlOTk1OTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDExOjQ3OjIxICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogRG9uJ3QgdXNlIGdub21lLWNvbW1vbiBtYWNyb3MKKworcmVtb3ZlIEdOT01FX0NPTVBJTEVfV0FSTklOR1MoKSBjYWxsOiBpdCdzIGZyb20gZ25vbWUtY29tbW9uIHdoaWNoCitpcyBkZXByZWNhdGVkLgorCitUaGlzIHBhdGNoIGNhbiBiZSByZW1vdmVkIHdoZW4gdXBncmFkaW5nIHRvIDMuMjUuMTogYXQgdGhhdCBwb2ludAorcHlnb2JqZWN0IG5lZWRzIGF1dG9jb25mLWFyY2hpdmUgaW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtBbHJlYWR5IGhhbmRsZWQgdXBzdHJlYW1dCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxZjE1YjNjLi41Y2IxNzBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMjEsOCArMjIxLDYgQEAgQUNfQVJHX1dJVEgoY29tbW9uLAorICAgICB3aXRoX2NvbW1vbj15ZXMpCisgQU1fQ09ORElUSU9OQUwoV0lUSF9DT01NT04sIHRlc3QgIiR3aXRoX2NvbW1vbiIgPSAieWVzIikKKyAKKy0jIGNvbXBpbGVyIHdhcm5pbmdzLCBlcnJvcnMsIHJlcXVpcmVkIGNmbGFncywgYW5kIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydAorLUdOT01FX0NPTVBJTEVfV0FSTklOR1MoW21heGltdW1dLCBbLVduby1lcnJvcj1taXNzaW5nLXByb3RvdHlwZXNdKQorIEFDX01TR19DSEVDS0lORyhmb3IgR25vbWUgY29kZSBjb3ZlcmFnZSBzdXBwb3J0KQorIG00X2lmZGVmKFtHTk9NRV9DT0RFX0NPVkVSQUdFXSwKKyAgICAgICAgICBbQUNfTVNHX1JFU1VMVCh5ZXMpCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzMDQ4ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzMy1iYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotREVQRU5EUyArPSAiZ25vbWUtY29tbW9uLW5hdGl2ZSBweXRob24zIGdsaWItMi4wIgotCi1TUkNOQU1FPSJweWdvYmplY3QiCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImVkNDExN2VkNWQ1NTRkMjVmZDc3MTg4MDdmYmY4MTlmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YjI5Y2ZiMDhlZmM4MGY3YTg2MzBhMjczNGRlYzY1YTk5YzFiNTlmMWU1NzcxYzY3MWQyZTRlZDhhNWNiZTciCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgotCi0jIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUwotIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCi1QQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMgcHl0aG9uMy1pbXBvcnRsaWIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMTBhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCisKK1NSQ05BTUU9InB5Z29iamVjdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2OWE4NDMzMTFkMGYwMzg1ZGZmMzc2ZTExYTJkODNkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjI4YTk1YWEwOTA5ZTEzZmIwODIzMGIxYjk4ZmM0OGFkZWYxMGIyMjA5MzJmNzZkNjJmNjgyMWIzZmRiZmZkIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCBbICdkaXJlY3RmYicsICd3YXlsYW5kJywgJ3gxMScgXSwgJ2NhaXJvJywgJycsIGQpfSIKKworIyBweXRob24zLXB5Y2Fpcm8gaXMgY2hlY2tlZCBvbiBjb25maWd1cmF0aW9uIC0+IERFUEVORFMKKyMgd2UgZG9uJ3QgbGluayBhZ2FpbnN0IHB5dGhvbjMtcHljYWlybyAtPiBSREVQRU5EUworUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIHB5dGhvbjMtcHljYWlybywgcHl0aG9uMy1weWNhaXJvIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zZXR1cHRvb2xzIHB5dGhvbjMtaW1wb3J0bGliIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlncGdtZV8wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z3BnbWVfMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTVmNjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlncGdtZV8wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIG1vZHVsZSBmb3Igd29ya2luZyB3aXRoIE9wZW5QR1AgbWVzc2FnZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvcHlncGdtZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTJkYzE1YTc2YWNmMDFlMTI2MTg4YzhkZTYzNGFlNGIzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9weWdwZ21lL3RydW5rLyR7UFZ9Lytkb3dubG9hZC9weWdwZ21lLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkMzgzNTVhZjczZjAzNTJjZGUzZDQxMGIyNWYzNGZkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmQ4ODdjNDA3MDE1Mjk2YThmZDNmNGI4NjdmZTBmY2NhMzE3OWRlOTdjY2RlOTA0NDk4NTNhM2RmYjgwMmUxIgotCi1TID0gIiR7V09SS0RJUn0vcHlncGdtZS0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLURFUEVORFMgPSAiZ3BnbWUgcHl0aG9uMyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzMyLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YWY2ZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzMyLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCi0KLURFUEVORFMgKz0gInB5dGhvbjMiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uMy1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotIyBUaGUgaW5zdGFsbGVyIHB1dHMgdGhlIHdyb25nIHBhdGggaW4gdGhlIHNldHVwdG9vbHMucHRoIGZpbGUuICBDb3JyZWN0IGl0LgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NldHVwdG9vbHMucHRoCi0gICAgbXYgJHtEfSR7YmluZGlyfS9lYXN5X2luc3RhbGwgJHtEfSR7YmluZGlyfS9lYXN5M19pbnN0YWxsCi0gICAgZWNobyAiLi8ke1NSQ05BTUV9LSR7UFZ9LXB5JHtQWVRIT05fQkFTRVZFUlNJT059LmVnZyIgPiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2V0dXB0b29scy5wdGgKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWRpc3R1dGlscyBcCi0gIHB5dGhvbjMtY29tcHJlc3Npb24gXAotIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKLSAgcHl0aG9uMy1jdHlwZXMgXAotICBweXRob24zLWRpc3R1dGlscyBcCi0gIHB5dGhvbjMtZW1haWwgXAotICBweXRob24zLWltcG9ydGxpYiBcCi0gIHB5dGhvbjMtbnVtYmVycyBcCi0gIHB5dGhvbjMtY29tcHJlc3Npb24gXAotICBweXRob24zLXNoZWxsIFwKLSAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgcHl0aG9uMy10ZXh0dXRpbHMgXAotICBweXRob24zLXBrZ3V0aWwgXAotICBweXRob24zLXRocmVhZGluZyBcCi0gIHB5dGhvbjMtbWlzYyBcCi0gIHB5dGhvbjMtdW5pdHRlc3QgXAotICBweXRob24zLXhtbCBcCi0iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YmNhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiCkBAIC0wLDAgKzEsMzMgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK0RFUEVORFMgKz0gInB5dGhvbjMiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uMy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayArPSAibmF0aXZlc2RrLXB5dGhvbjMiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbXYgJHtEfSR7YmluZGlyfS9lYXN5X2luc3RhbGwgJHtEfSR7YmluZGlyfS9lYXN5M19pbnN0YWxsCit9CisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCisgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCisiCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtY3R5cGVzIFwKKyAgcHl0aG9uMy1kaXN0dXRpbHMgXAorICBweXRob24zLWVtYWlsIFwKKyAgcHl0aG9uMy1pbXBvcnRsaWIgXAorICBweXRob24zLW51bWJlcnMgXAorICBweXRob24zLWNvbXByZXNzaW9uIFwKKyAgcHl0aG9uMy1zaGVsbCBcCisgIHB5dGhvbjMtc3VicHJvY2VzcyBcCisgIHB5dGhvbjMtdGV4dHV0aWxzIFwKKyAgcHl0aG9uMy1wa2d1dGlsIFwKKyAgcHl0aG9uMy10aHJlYWRpbmcgXAorICBweXRob24zLW1pc2MgXAorICBweXRob24zLXVuaXR0ZXN0IFwKKyAgcHl0aG9uMy14bWwgXAorIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwLWNyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkODIyMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVdlIGNyb3NzIGNvbXBpbGUgcHl0aG9uLiBUaGlzIHBhdGNoIHVzZXMgdG9vbHMgZnJvbSBob3N0L25hdGl2ZQotcHl0aG9uIGluc3RlYWQgb2YgaW4tdHJlZSB0b29scwotCi0tS2hlbQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KLQotLS0tCi0gTWFrZWZpbGUucHJlLmluIHwgICAyNSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1JbmRleDogUHl0aG9uLTMuNS4yL01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjUuMi5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0zLjUuMi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yMjAsNiArMjIwLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACi0gCi0gUFlUSE9OPQkJcHl0aG9uJChFWEUpCi0gQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCi0rSE9TVFBZVEhPTj0JJChCVUlMRFBZVEhPTikKLSAKLSBjcm9zc19jb21waWxpbmc9QGNyb3NzX2NvbXBpbGluZ0AKLSBQWVRIT05fRk9SX0JVSUxEPUBQWVRIT05fRk9SX0JVSUxEQAotQEAgLTI3OSw2ICsyODAsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBQYXJzZXIKLSBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKLStIT1NUUEdFTj0JJChQR0VOKSQoRVhFKQotIAotIFBTUkNTPQkJXAotIAkJUGFyc2VyL2FjY2VsZXIuYyBcCi1AQCAtNTA5LDcgKzUxMSw3IEBAIGJ1aWxkX2FsbF9nZW5lcmF0ZV9wcm9maWxlOgotIAotIHJ1bl9wcm9maWxlX3Rhc2s6Ci0gCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCi0tCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCi0rCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCi0gCi0gYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6Ci0gCSQoTExWTV9QUk9GX01FUkdFUikKLUBAIC03OTIsNyArNzk0LDcgQEAgJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKLSAJQCQoTUtESVJfUCkgSW5jbHVkZQotIAkjIEF2b2lkIGNvcHlpbmcgdGhlIGZpbGUgb250byBpdHNlbGYgZm9yIGFuIGluLXRyZWUgYnVpbGQKLSAJaWYgdGVzdCAiJChjcm9zc19jb21waWxpbmcpIiAhPSAieWVzIjsgdGhlbiBcCi0tCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKTsgXAotKwkJJChIT1NUUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOyBcCi0gCWVsc2UgXAotIAkJY3AgJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKEdSQU1NQVJfSCkudG1wOyBcCi0gCQltdiAkKEdSQU1NQVJfSCkudG1wICQoR1JBTU1BUl9IKTsgXAotQEAgLTk5MCw3ICs5OTIsNyBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRoCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCi0tVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKLStURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQotIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Ci0gVEVTVFRJTUVPVVQ9CTM2MDAKLSAKLUBAIC0xNDgxLDcgKzE0ODMsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKLSAJCWZpOyBcCi0gCWRvbmUKLSAJJChMTikgLWZzbiBpbmNsdWRlL3B5dGhvbiQoTERWRVJTSU9OKSAkKERFU1RESVIpJChwcmVmaXgpL0hlYWRlcnMKLS0Jc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKLSsJc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKLSAJJChMTikgLWZzbiAkKFZFUlNJT04pICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zL0N1cnJlbnQKLSAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50LyQoUFlUSE9ORlJBTUVXT1JLKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS8kKFBZVEhPTkZSQU1FV09SSykKLSAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50L0hlYWRlcnMgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvSGVhZGVycwotQEAgLTE1NDcsNyArMTU0OSw3IEBAIGNvbmZpZy5zdGF0dXM6CSQoc3JjZGlyKS9jb25maWd1cmUKLSAKLSAjIFJ1biByZWluZGVudCBvbiB0aGUgbGlicmFyeQotIHJlaW5kZW50OgotLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKLSsJJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCi0gCi0gIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAotICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cwotQEAgLTE2ODMsNyArMTY4NSw3IEBAIGZ1bm55OgotIAotICMgUGVyZm9ybSBzb21lIHZlcmlmaWNhdGlvbiBjaGVja3Mgb24gYW55IG1vZGlmaWVkIGZpbGVzLgotIHBhdGNoY2hlY2s6IGFsbAotLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0rCSQoUlVOU0hBUkVEKSAuLyQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQotIAotICMgRGVwZW5kZW5jaWVzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoCmluZGV4IGI3ZTBhYzYuLjhlYTNmMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwNDVjOTliNWYxZWI2ZTRlMGQ4YWQxZWY5ZjBiYTY1NzRmNzM4MTUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNGRmOTU5MzY1ZTJiNTRkNzUwM2VkZjBlNTUzNGZmMDk0Mjg0ZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDIzIE9jdCAyMDE1IDEyOjI1OjA5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCB1c2UgdGhlIHNoZWxsIHZlcnNpb24gb2YgcHl0aG9uLWNvbmZpZyB0aGF0IHdhcwpAQCAtMTQsMTMgKzE0LDEzIEBACiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggZDdmYzlhMC4uNDdlNjBiYyAxMDA2NDQKK2luZGV4IDIzNmYwMDUuLjVjNDMzN2YgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5wcmUuaW4KICsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTEyNzAsMTIgKzEyNzAsOSBAQCBweXRob24tY29uZmlnOiAkKHNyY2RpcikvTWlzYy9weXRob24tY29uZmlnLmluIE1pc2MvcHl0aG9uLWNvbmZpZy5zaAorQEAgLTEzNDgsMTIgKzEzNDgsOSBAQCBweXRob24tY29uZmlnOiAkKHNyY2RpcikvTWlzYy9weXRob24tY29uZmlnLmluIE1pc2MvcHl0aG9uLWNvbmZpZy5zaAogIAlzZWQgLWUgInMsQEVYRU5BTUVALCQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSksIiA8ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gPnB5dGhvbi1jb25maWcucHkKICAJIyBSZXBsYWNlIG1ha2VmaWxlIGNvbXBhdC4gdmFyaWFibGUgcmVmZXJlbmNlcyB3aXRoIHNoZWxsIHNjcmlwdCBjb21wYXQuIG9uZXM7ICQoVkFSKSAtPiAke1ZBUn0KLSAJc2VkIC1lICdzLFwkJChcKFtBLVphLXowLTlfXSpcKSksXCQkXHtcMVx9LGcnIDwgTWlzYy9weXRob24tY29uZmlnLnNoID5weXRob24tY29uZmlnCisgCUxDX0FMTD1DIHNlZCAtZSAncyxcJCQoXChbQS1aYS16MC05X10qXCkpLFwkJFx7XDFcfSxnJyA8IE1pc2MvcHl0aG9uLWNvbmZpZy5zaCA+cHl0aG9uLWNvbmZpZwogLQkjIE9uIERhcndpbiwgYWx3YXlzIHVzZSB0aGUgcHl0aG9uIHZlcnNpb24gb2YgdGhlIHNjcmlwdCwgdGhlIHNoZWxsCiAtCSMgdmVyc2lvbiBkb2Vzbid0IHVzZSB0aGUgY29tcGlsZXIgY3VzdG9taXphdGlvbnMgdGhhdCBhcmUgcHJvdmlkZWQKIC0JIyBpbiBweXRob24gKF9vc3hfc3VwcG9ydC5weSkuCkBAIC0zNCw1ICszNCw1IEBACiAgCiAgIyBJbnN0YWxsIHRoZSBpbmNsdWRlIGZpbGVzCiAtLSAKLTIuMS40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM5MmU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSBiY2RkYmY0MGM3ZjFiODAzMzYyNjhjZGRkYWNjMTczNjlmYjBjY2VhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGliaW4gRGFuZyA8bGliaW4uZGFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxMSBBcHIgMjAxNyAxNDoxMjoxNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBJc3N1ZSAjMjEyNzI6IFVzZSBfc3lzY29uZmlnZGF0YS5weSB0byBpbml0aWFsaXplCisgZGlzdHV0aWxzLnN5c2NvbmZpZworCitCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQKK2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvNDA5NDgyMjUxYjA2ZmU3NWM0ZWU1NmU4NWZmYmI0YjIzZDkzNDE1OQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIExpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IHwgMzUgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKK2luZGV4IDZkNWNmZDAuLjk5MjVkMjQgMTAwNjQ0CistLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKK0BAIC00MjQsMzggKzQyNCwxMSBAQCBfY29uZmlnX3ZhcnMgPSBOb25lCisgCisgZGVmIF9pbml0X3Bvc2l4KCk6CisgICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKKy0gICAgZyA9IHt9CistICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgorLSAgICB0cnk6CistICAgICAgICBmaWxlbmFtZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCistICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKKy0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgorLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKKy0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKKy0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCistCistICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKKy0KKy0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgcHljb25maWcuaDoKKy0gICAgdHJ5OgorLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQorLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmaWxlOgorLSAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUsIGcpCistICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKKy0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCistICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6CistICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgorLQorLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCistCistICAgICMgT24gQUlYLCB0aGVyZSBhcmUgd3JvbmcgcGF0aHMgdG8gdGhlIGxpbmtlciBzY3JpcHRzIGluIHRoZSBNYWtlZmlsZQorLSAgICAjIC0tIHRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgUHl0aG9uIHNvdXJjZSwgYnV0IHdoZW4gaW5zdGFsbGVkCistICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgorLSAgICBpZiBweXRob25fYnVpbGQ6CistICAgICAgICBnWydMRFNIQVJFRCddID0gZ1snQkxEU0hBUkVEJ10KKy0KKysgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIHRoZSBzeXNjb25maWcgbW9kdWxlCisrICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycworICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCistICAgIF9jb25maWdfdmFycyA9IGcKKysgICAgX2NvbmZpZ192YXJzID0ge30KKysgICAgX2NvbmZpZ192YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCisgCisgCisgZGVmIF9pbml0X250KCk6CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE4ZDc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSA2MjRjMDI5YWJjYzczYzcyNDAyMGNjZWE5YTJiNGI1YjVjMDBmMmE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMxIE1hciAyMDE3IDE1OjQyOjQ2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNyb3NzLWNvbXBpbGUgc3VwcG9ydAorCitXZSBjcm9zcyBjb21waWxlIHB5dGhvbi4gVGhpcyBwYXRjaCB1c2VzIHRvb2xzIGZyb20gaG9zdC9uYXRpdmUKK3B5dGhvbiBpbnN0ZWFkIG9mIGluLXRyZWUgdG9vbHMKKworLUtoZW0KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLnByZS5pbiB8IDE0ICsrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgoraW5kZXggYTg4YjdkNS4uN2NiOGJiMyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnByZS5pbgorKysrIGIvTWFrZWZpbGUucHJlLmluCitAQCAtMjIxLDYgKzIyMSw3IEBAIExJQk9CSlM9CUBMSUJPQkpTQAorIAorIFBZVEhPTj0JCXB5dGhvbiQoRVhFKQorIEJVSUxEUFlUSE9OPQlweXRob24kKEJVSUxERVhFKQorK0hPU1RQWVRIT049ICAgICQoQlVJTERQWVRIT04pCisgCisgUFlUSE9OX0ZPUl9HRU49QFBZVEhPTl9GT1JfR0VOQAorIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACitAQCAtMjgwLDYgKzI4MSw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFBhcnNlcgorIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQorK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCisgCisgUFNSQ1M9CQlcCisgCQlQYXJzZXIvYWNjZWxlci5jIFwKK0BAIC01MTAsNyArNTEyLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CisgCisgcnVuX3Byb2ZpbGVfdGFzazoKKyAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKKy0JJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKKysJJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKKyAKKyBidWlsZF9hbGxfbWVyZ2VfcHJvZmlsZToKKyAJJChMTFZNX1BST0ZfTUVSR0VSKQorQEAgLTc4Nyw3ICs3ODksNyBAQCAkKElPX09CSlMpOiAkKElPX0gpCisgCisgJChHUkFNTUFSX0gpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQorIAlAJChNS0RJUl9QKSBJbmNsdWRlCistCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCisrCSQoSE9TVFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQorICQoR1JBTU1BUl9DKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSCkKKyAJdG91Y2ggJChHUkFNTUFSX0MpCisgCitAQCAtOTc2LDcgKzk3OCw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQorLVRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCisrVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKKyBURVNUUlVOTkVSPQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorIFRFU1RUSU1FT1VUPQkzNjAwCisgCitAQCAtMTQ2OCw3ICsxNDcwLDcgQEAgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZToJJChMRExJQlJBUlkpCisgCQlmaTsgXAorIAlkb25lCisgCSQoTE4pIC1mc24gaW5jbHVkZS9weXRob24kKExEVkVSU0lPTikgJChERVNURElSKSQocHJlZml4KS9IZWFkZXJzCistCXNlZCAncy8lVkVSU0lPTiUvJyJgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLWMgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSknYCInL2cnIDwgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgPiAkKERFU1RESVIpJChwcmVmaXgpL1Jlc291cmNlcy9JbmZvLnBsaXN0CisrCXNlZCAncy8lVkVSU0lPTiUvJyJgJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgLWMgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSknYCInL2cnIDwgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgPiAkKERFU1RESVIpJChwcmVmaXgpL1Jlc291cmNlcy9JbmZvLnBsaXN0CisgCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50CisgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCisgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKK0BAIC0xNTM0LDcgKzE1MzYsNyBAQCBjb25maWcuc3RhdHVzOgkkKHNyY2RpcikvY29uZmlndXJlCisgCisgIyBSdW4gcmVpbmRlbnQgb24gdGhlIGxpYnJhcnkKKyByZWluZGVudDoKKy0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCisrCSQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgorIAorICMgUmVydW4gY29uZmlndXJlIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBhcyBpdCB3YXMgcnVuIGxhc3QgdGltZSwKKyAjIHByb3ZpZGVkIHRoZSBjb25maWcuc3RhdHVzIHNjcmlwdCBleGlzdHMKK0BAIC0xNjc0LDcgKzE2NzYsNyBAQCBmdW5ueToKKyAKKyAjIFBlcmZvcm0gc29tZSB2ZXJpZmljYXRpb24gY2hlY2tzIG9uIGFueSBtb2RpZmllZCBmaWxlcy4KKyBwYXRjaGNoZWNrOiBhbGwKKy0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorKwkkKFJVTlNIQVJFRCkgLi8kKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKKyAKKyAjIERlcGVuZGVuY2llcworIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMTdjNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA2MmRjZjM0OTg3YjY4MGU5NTg3M2ViOTQ3YjNmNGQ4MDIxOTljNjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1DNT04MXVrYXN6PTIwTGFuZ2E/PSA8bHVrYXN6QGxhbmdhLnBsPgorRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAwMDoxNDo1NSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggIzI5NTE5OiB3ZWFrcmVmIHNwZXdpbmcgZXhjZXB0aW9ucyBkdXJpbmcgaW50ZXJwCisgZmluYWxpemF0aW9uCisKK2NvbW1pdCA5Y2Q3ZTE3NjQwYTQ5NjM1ZDFjMWY4YzI5ODk1NzhhOGZjMmMxZGU2Citmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEx1a2FzeiBMYW5nYSA8bHVrYXN6QGxhbmdhLnBsPgorLS0tCisgTGliL3dlYWtyZWYucHkgfCA0ICsrLS0KKyBNaXNjL05FV1MgICAgICB8IDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvd2Vha3JlZi5weSBiL0xpYi93ZWFrcmVmLnB5CitpbmRleCBhYWViZDBjLi43ODdlMzNhIDEwMDY0NAorLS0tIGEvTGliL3dlYWtyZWYucHkKKysrKyBiL0xpYi93ZWFrcmVmLnB5CitAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnkoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgorICAgICAgICAgc2VsZiwgKmFyZ3MgPSBhcmdzCisgICAgICAgICBpZiBsZW4oYXJncykgPiAxOgorICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihhcmdzKSkKKy0gICAgICAgIGRlZiByZW1vdmUod3IsIHNlbGZyZWY9cmVmKHNlbGYpKToKKysgICAgICAgIGRlZiByZW1vdmUod3IsIHNlbGZyZWY9cmVmKHNlbGYpLCBfYXRvbWljX3JlbW92YWw9X3JlbW92ZV9kZWFkX3dlYWtyZWYpOgorICAgICAgICAgICAgIHNlbGYgPSBzZWxmcmVmKCkKKyAgICAgICAgICAgICBpZiBzZWxmIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pdGVyYXRpbmc6CitAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnkoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgorICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIyBBdG9taWMgcmVtb3ZhbCBpcyBuZWNlc3Nhcnkgc2luY2UgdGhpcyBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IHRoZSBHQworLSAgICAgICAgICAgICAgICAgICAgX3JlbW92ZV9kZWFkX3dlYWtyZWYoZCwgd3Iua2V5KQorKyAgICAgICAgICAgICAgICAgICAgX2F0b21pY19yZW1vdmFsKGQsIHdyLmtleSkKKyAgICAgICAgIHNlbGYuX3JlbW92ZSA9IHJlbW92ZQorICAgICAgICAgIyBBIGxpc3Qgb2Yga2V5cyB0byBiZSByZW1vdmVkCisgICAgICAgICBzZWxmLl9wZW5kaW5nX3JlbW92YWxzID0gW10KK2RpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKK2luZGV4IDQxY2ZkYmEuLjZkODlmNTIgMTAwNjQ0CistLS0gYS9NaXNjL05FV1MKKysrKyBiL01pc2MvTkVXUworQEAgLTU3MTksNiArNTcxOSw5IEBAIENvcmUgYW5kIEJ1aWx0aW5zCisgTGlicmFyeQorIC0tLS0tLS0KKyAKKystIElzc3VlICMyOTUxOTogRml4IHdlYWtyZWYgc3Bld2luZyBleGNlcHRpb25zIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bgorKyAgd2hlbiB1c2VkIHdpdGggYSByYXJlIGNvbWJpbmF0aW9uIG9mIG11bHRpcHJvY2Vzc2luZyBhbmQgY3VzdG9tIGNvZGVjcy4KKysKKyAtIElzc3VlICMyMDE1NDogRGVhZGxvY2sgaW4gYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkoKS4KKyAKKyAtIElzc3VlICMxNjExMzogUmVtb3ZlIHNoYTMgbW9kdWxlIGFnYWluLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzYWY2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIGE3ODRiNzBkNDdiYTIxMDRhZmJjZmQ4MDVlMmE2NmNkYzIxMDllYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDQgQXVnIDIwMTcgMTE6MTY6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IHBhc3MgbWlzc2luZyBsaWJyYXJpZXMgdG8gRXh0ZW5zaW9uIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCisKK0luIHRoZSBmb2xsb3dpbmcgY29tbWl0OgorLi4uCitjb21taXQgZTcxMWNhZmFiMTNlZmM5YzFmZTZjNWNkNzU4MjY0MDE0NDVlYjU4NQorQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KK0RhdGU6ICAgV2VkIEp1biAxMSAxNjo0NDowNCAyMDA4ICswMDAwCisKKyAgICBNZXJnZWQgcmV2aXNpb25zIDY0MTA0LDY0MTE3IHZpYSBzdm5tZXJnZSBmcm9tCisgICAgc3ZuK3NzaDovL3B5dGhvbmRldkBzdm4ucHl0aG9uLm9yZy9weXRob24vdHJ1bmsKKy4uLgorKHNlZSBkaWZmIGluIHNldHVwLnB5KQorSXQgYXNzaWduZWQgbGlicmFyaWVzIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGFjY29yZGluZwordGhlIGhvc3RfcGxhdGZvcm0sIGJ1dCBub3QgcGFzcyBpdCB0byBFeHRlbnNpb24uCisKK0luIGdsaWJjLCB0aGUgZm9sbG93aW5nIGNvbW1pdCBjYXVzZWQgdHdvIGRlZmluaXRpb24gb2YKK3NlbV9nZXR2YWx1ZSBhcmUgZGlmZmVyZW50LgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9MDQyZTE1MjFjNzk0YTk0NWVkYzQzYjViZmE3ZTY5YWQ3MDQyMDUyNAorKHNlZSBkaWZmIGluIG5wdGwvc2VtX2dldHZhbHVlLmMgZm9yIGRldGFpbCkKK2BfX25ld19zZW1fZ2V0dmFsdWUnIGlzIHRoZSBsYXRlc3Qgc2VtX2dldHZhbHVlQEBHTElCQ18yLjEKK2FuZCBgX19vbGRfc2VtX2dldHZhbHVlJyBpcyB0byBjb21wYXQgdGhlIG9sZCB2ZXJzaW9uCitzZW1fZ2V0dmFsdWVAR0xJQkNfMi4wLgorCitUbyBidWlsZCBweXRob24gZm9yIGVtYmVkZGVkIExpbnV4IHN5c3RlbXM6CitodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMuMS95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbAorSWYgbm90IGV4cGxpY2l0bHkgbGluayB0byBsaWJyYXJ5IHB0aHJlYWQgKC1scHRocmVhZCksIGl0IHdpbGwKK2xvYWQgZ2xpYmMncyBzZW1fZ2V0dmFsdWUgcmFuZG9tbHkgYXQgcnVudGltZS4KKworU3VjaCBhcyBidWlsZCBweXRob24gb24gbGludXggeDg2XzY0IGhvc3QgYW5kIHJ1biB0aGUgcHl0aG9uCitvbiBsaW51eCB4ODZfMzIgdGFyZ2V0LiBJZiBub3QgbGluayBsaWJyYXJ5IHB0aHJlYWQsIGl0IGNhdXNlZAorbXVsdGlwcm9jZXNzaW5nIGJvdW5kZWQgc2VtYXBob3JlIGNvdWxkIG5vdCB3b3JrIGNvcnJlY3RseS4KKy4uLgorPj4+IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKz4+PiBwb29sX3NlbWEgPSBtdWx0aXByb2Nlc3NpbmcuQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQorPj4+IHBvb2xfc2VtYS5hY3F1aXJlKCkKK1RydWUKKz4+PiBwb29sX3NlbWEucmVsZWFzZSgpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CitWYWx1ZUVycm9yOiBzZW1hcGhvcmUgb3IgbG9jayByZWxlYXNlZCB0b28gbWFueSB0aW1lcworLi4uCisKK0FuZCB0aGUgc2VtYXBob3JlIGlzc3VlIGFsc28gY2F1c2VkIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpLnB1dCgpIGh1bmcuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTk5XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXR1cC5weSB8IDcgKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA0ZjBmNTIyLi5kMDU3MDdkIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMTYwNiw4ICsxNjA2LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQorLQorLSAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGludXggYW5kIG90aGVyIHVuaWNlcworKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcpKToKKysgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKysgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3B0aHJlYWQnXQorKyAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXIgdW5pY2VzCisgICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCisgICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCisgCitAQCAtMTYyNiw2ICsxNjI4LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1saXN0KG1hY3Jvcy5pdGVtcygpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19tdWx0aXByb2Nlc3NpbmcnKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMWI3MjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLWZpeC1DVkUtMjAxNi0xMDAwMTEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLUZyb20gYWFiM2U4YzQzMmI5MDUwOGFjMTQ3NTUxMjhmNWE2ODdiZTJmZGY0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDIyIFNlcCAyMDE2IDE2OjM5OjQ5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IGZpeCBDVkUtMjAxNi0xMDAwMTEwCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUlnbm9yZSB0aGUgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2gKLWluZGljYXRlcyB0aGF0IHRoZSBzY3JpcHQgaXMgaW4gQ0dJIG1vZGUuCi0KLUlzc3VlICMyNzU2OCBSZXBvcnRlZCBhbmQgcGF0Y2ggY29udHJpYnV0ZWQgYnkgUsOpbWkgUmFtcGluLiBbIzI3NTY4XQotCi1CYWNrcG9ydCBwYXRjaCBmcm9tIGh0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL3Jldi9hMGFjNTJlZDhmNzkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDAwMTEwCi1TaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gRG9jL2hvd3RvL3VybGxpYjIucnN0ICAgICAgICAgIHwgIDUgKysrKysKLSBEb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QgfCAxNyArKysrKysrKysrKysrKysrLQotIExpYi90ZXN0L3Rlc3RfdXJsbGliLnB5ICAgICAgICB8IDE0ICsrKysrKysrKysrKystCi0gTGliL3VybGxpYi9yZXF1ZXN0LnB5ICAgICAgICAgIHwgIDYgKysrKysrCi0gTWlzYy9ORVdTICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0RvYy9ob3d0by91cmxsaWIyLnJzdCBiL0RvYy9ob3d0by91cmxsaWIyLnJzdAotaW5kZXggMjRhNDE1Ni4uZDJjNzk5MSAxMDA2NDQKLS0tLSBhL0RvYy9ob3d0by91cmxsaWIyLnJzdAotKysrIGIvRG9jL2hvd3RvL3VybGxpYjIucnN0Ci1AQCAtNTM4LDYgKzUzOCwxMSBAQCBzZXR0aW5nIHVwIGEgYEJhc2ljIEF1dGhlbnRpY2F0aW9uYF8gaGFuZGxlcjogOjoKLSAgICAgdGhyb3VnaCBhIHByb3h5LiAgSG93ZXZlciwgdGhpcyBjYW4gYmUgZW5hYmxlZCBieSBleHRlbmRpbmcgdXJsbGliLnJlcXVlc3QgYXMKLSAgICAgc2hvd24gaW4gdGhlIHJlY2lwZSBbI11fLgotIAotKy4uIG5vdGU6OgotKwotKyAgICBgYEhUVFBfUFJPWFlgYCB3aWxsIGJlIGlnbm9yZWQgaWYgYSB2YXJpYWJsZSBgYFJFUVVFU1RfTUVUSE9EYGAgaXMgc2V0OyBzZWUKLSsgICAgdGhlIGRvY3VtZW50YXRpb24gb24gOmZ1bmM6YH51cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzYC4KLSsKLSAKLSBTb2NrZXRzIGFuZCBMYXllcnMKLSA9PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKLWluZGV4IDEzMzg5MDYuLjEyOTFhZWIgMTAwNjQ0Ci0tLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKLSsrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAotQEAgLTE3Myw2ICsxNzMsMTYgQEAgVGhlIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLSAgICBJZiBib3RoIGxvd2VyY2FzZSBhbmQgdXBwZXJjYXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBleGlzdCAoYW5kIGRpc2FncmVlKSwKLSAgICBsb3dlcmNhc2UgaXMgcHJlZmVycmVkLgotIAotKyAgICAuLiBub3RlOjoKLSsKLSsgICAgICAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQsIHdoaWNoIHVzdWFsbHkKLSsgICAgICAgaW5kaWNhdGVzIHlvdXIgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gYSBDR0kgZW52aXJvbm1lbnQsIHRoZSBlbnZpcm9ubWVudAotKyAgICAgICB2YXJpYWJsZSBgYEhUVFBfUFJPWFlgYCAodXBwZXJjYXNlIGBgX1BST1hZYGApIHdpbGwgYmUgaWdub3JlZC4gVGhpcyBpcwotKyAgICAgICBiZWNhdXNlIHRoYXQgdmFyaWFibGUgY2FuIGJlIGluamVjdGVkIGJ5IGEgY2xpZW50IHVzaW5nIHRoZSAiUHJveHk6IiBIVFRQCi0rICAgICAgIGhlYWRlci4gSWYgeW91IG5lZWQgdG8gdXNlIGFuIEhUVFAgcHJveHkgaW4gYSBDR0kgZW52aXJvbm1lbnQsIGVpdGhlciB1c2UKLSsgICAgICAgYGBQcm94eUhhbmRsZXJgYCBleHBsaWNpdGx5LCBvciBtYWtlIHN1cmUgdGhlIHZhcmlhYmxlIG5hbWUgaXMgaW4KLSsgICAgICAgbG93ZXJjYXNlIChvciBhdCBsZWFzdCB0aGUgYGBfcHJveHlgYCBzdWZmaXgpLgotKwotIAotIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6Ci0gCi1AQCAtMjgwLDYgKzI5MCwxMSBAQCBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHByb3ZpZGVkOgotICAgIGxpc3Qgb2YgaG9zdG5hbWUgc3VmZml4ZXMsIG9wdGlvbmFsbHkgd2l0aCBgYDpwb3J0YGAgYXBwZW5kZWQsIGZvciBleGFtcGxlCi0gICAgYGBjZXJuLmNoLG5jc2EudWl1Yy5lZHUsc29tZS5ob3N0OjgwODBgYC4KLSAKLSsgICAgLi4gbm90ZTo6Ci0rCi0rICAgICAgIGBgSFRUUF9QUk9YWWBgIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQ7Ci0rICAgICAgIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiA6ZnVuYzpgfnVybGxpYi5yZXF1ZXN0LmdldHByb3hpZXNgLgotKwotIAotIC4uIGNsYXNzOjogSFRUUFBhc3N3b3JkTWdyKCkKLSAKLUBAIC0xMTM4LDcgKzExNTMsNyBAQCB0aGUgcmV0dXJuZWQgYnl0ZXMgb2JqZWN0IHRvIHN0cmluZyBvbmNlIGl0IGRldGVybWluZXMgb3IgZ3Vlc3NlcwotIHRoZSBhcHByb3ByaWF0ZSBlbmNvZGluZy4KLSAKLSBUaGUgZm9sbG93aW5nIFczQyBkb2N1bWVudCwgaHR0cHM6Ly93d3cudzMub3JnL0ludGVybmF0aW9uYWwvTy1jaGFyc2V0XCAsIGxpc3RzCi0tdGhlIHZhcmlvdXMgd2F5cyBpbiB3aGljaCBhIChYKUhUTUwgb3IgYSBYTUwgZG9jdW1lbnQgY291bGQgaGF2ZSBzcGVjaWZpZWQgaXRzCi0rdGhlIHZhcmlvdXMgd2F5cyBpbiB3aGljaCBhbiAoWClIVE1MIG9yIGFuIFhNTCBkb2N1bWVudCBjb3VsZCBoYXZlIHNwZWNpZmllZCBpdHMKLSBlbmNvZGluZyBpbmZvcm1hdGlvbi4KLSAKLSBBcyB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlIHVzZXMgKnV0Zi04KiBlbmNvZGluZyBhcyBzcGVjaWZpZWQgaW4gaXRzIG1ldGEgdGFnLCB3ZQotZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKLWluZGV4IDVkMDVmOGQuLjI0NzU5OGEgMTAwNjQ0Ci0tLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQotKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKLUBAIC0xLDQgKzEsNCBAQAotLSIiIlJlZ3Jlc3NzaW9uIHRlc3RzIGZvciB3aGF0IHdhcyBpbiBQeXRob24gMidzICJ1cmxsaWIiIG1vZHVsZSIiIgotKyIiIlJlZ3Jlc3Npb24gdGVzdHMgZm9yIHdoYXQgd2FzIGluIFB5dGhvbiAyJ3MgInVybGxpYiIgbW9kdWxlIiIiCi0gCi0gaW1wb3J0IHVybGxpYi5wYXJzZQotIGltcG9ydCB1cmxsaWIucmVxdWVzdAotQEAgLTIzMiw2ICsyMzIsMTggQEAgY2xhc3MgUHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBzZWxmLmFzc2VydFRydWUodXJsbGliLnJlcXVlc3QucHJveHlfYnlwYXNzX2Vudmlyb25tZW50KCdhbm90aGVyZG9tYWluLmNvbTo4ODg4JykpCi0gICAgICAgICBzZWxmLmFzc2VydFRydWUodXJsbGliLnJlcXVlc3QucHJveHlfYnlwYXNzX2Vudmlyb25tZW50KCduZXdkb21haW4uY29tOjEyMzQnKSkKLSAKLSsgICAgZGVmIHRlc3RfcHJveHlfY2dpX2lnbm9yZShzZWxmKToKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBzZWxmLmVudi5zZXQoJ0hUVFBfUFJPWFknLCAnaHR0cDovL3NvbWV3aGVyZTozMTI4JykKLSsgICAgICAgICAgICBwcm94aWVzID0gdXJsbGliLnJlcXVlc3QuZ2V0cHJveGllc19lbnZpcm9ubWVudCgpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL3NvbWV3aGVyZTozMTI4JywgcHJveGllc1snaHR0cCddKQotKyAgICAgICAgICAgIHNlbGYuZW52LnNldCgnUkVRVUVTVF9NRVRIT0QnLCAnR0VUJykKLSsgICAgICAgICAgICBwcm94aWVzID0gdXJsbGliLnJlcXVlc3QuZ2V0cHJveGllc19lbnZpcm9ubWVudCgpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaHR0cCcsIHByb3hpZXMpCi0rICAgICAgICBmaW5hbGx5OgotKyAgICAgICAgICAgIHNlbGYuZW52LnVuc2V0KCdSRVFVRVNUX01FVEhPRCcpCi0rICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoJ0hUVFBfUFJPWFknKQotKwotICAgICBkZWYgdGVzdF9wcm94eV9ieXBhc3NfZW52aXJvbm1lbnRfaG9zdF9tYXRjaChzZWxmKToKLSAgICAgICAgIGJ5cGFzcyA9IHVybGxpYi5yZXF1ZXN0LnByb3h5X2J5cGFzc19lbnZpcm9ubWVudAotICAgICAgICAgc2VsZi5lbnYuc2V0KCdOT19QUk9YWScsCi1kaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5Ci1pbmRleCAxNzMxZmUzLi4zYmUzMjdkIDEwMDY0NAotLS0tIGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5Ci0rKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKLUBAIC0yNDEyLDYgKzI0MTIsMTIgQEAgZGVmIGdldHByb3hpZXNfZW52aXJvbm1lbnQoKToKLSAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKLSAgICAgICAgIGlmIHZhbHVlIGFuZCBuYW1lWy02Ol0gPT0gJ19wcm94eSc6Ci0gICAgICAgICAgICAgcHJveGllc1tuYW1lWzotNl1dID0gdmFsdWUKLSsgICAgIyBDVkUtMjAxNi0xMDAwMTEwIC0gSWYgd2UgYXJlIHJ1bm5pbmcgYXMgQ0dJIHNjcmlwdCwgZm9yZ2V0IEhUVFBfUFJPWFkKLSsgICAgIyAobm9uLWFsbC1sb3dlcmNhc2UpIGFzIGl0IG1heSBiZSBzZXQgZnJvbSB0aGUgd2ViIHNlcnZlciBieSBhICJQcm94eToiCi0rICAgICMgaGVhZGVyIGZyb20gdGhlIGNsaWVudAotKyAgICAjIElmICJwcm94eSIgaXMgbG93ZXJjYXNlLCBpdCB3aWxsIHN0aWxsIGJlIHVzZWQgdGhhbmtzIHRvIHRoZSBuZXh0IGJsb2NrCi0rICAgIGlmICdSRVFVRVNUX01FVEhPRCcgaW4gb3MuZW52aXJvbjoKLSsgICAgICAgIHByb3hpZXMucG9wKCdodHRwJywgTm9uZSkKLSAgICAgZm9yIG5hbWUsIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKToKLSAgICAgICAgIGlmIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKLSAgICAgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCi1kaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCi1pbmRleCA0YWQyNTUxLi4yZmNjOTViIDEwMDY0NAotLS0tIGEvTWlzYy9ORVdTCi0rKysgYi9NaXNjL05FV1MKLUBAIC0zMjksNiArMzI5LDEwIEBAIExpYnJhcnkKLSAtIElzc3VlICMyNjY0NDogUmFpc2UgVmFsdWVFcnJvciByYXRoZXIgdGhhbiBTeXN0ZW1FcnJvciB3aGVuIGEgbmVnYXRpdmUKLSAgIGxlbmd0aCBpcyBwYXNzZWQgdG8gU1NMU29ja2V0LnJlY3YoKSBvciByZWFkKCkuCi0gCi0rLSBJc3N1ZSAjMjc1Njg6IFByZXZlbnQgSFRUUG94eSBhdHRhY2sgKENWRS0yMDE2LTEwMDAxMTApLiBJZ25vcmUgdGhlCi0rICBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaCBpbmRpY2F0ZXMKLSsgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KLSsKLSAtIElzc3VlICMyMzgwNDogRml4IFNTTCByZWN2KDApIGFuZCByZWFkKDApIG1ldGhvZHMgdG8gcmV0dXJuIHplcm8gYnl0ZXMKLSAgIGluc3RlYWQgb2YgdXAgdG8gMTAyNC4KLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmVjYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2gKQEAgLTAsMCArMSw5NyBAQAorVGhlIGNvbXBpbGVkIC5weWMgZmlsZXMgY29udGFpbiB0aW1lIHN0YW1wIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbXBpbGUgdGltZS4KK1RoaXMgcHJldmVudHMgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eS4gVGhpcyBwYXRjaCBhbGxvd3MgdG8gYWNoaWV2ZSBiaW5hcnkKK3JlcHJvZHVjaWJpbGl0eSBieSBvdmVycmlkaW5nIHRoZSBidWlsZCB0aW1lIHN0YW1wIGJ5IHRoZSB2YWx1ZSAKK2V4cG9ydGVkIHZpYSBTT1VSQ0VfREFURV9FUE9DSC4gCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworCitGcm9tIGFlYWI0ODg2MzBmZGIxYjU2YThkMGIwYzEzZmE4ODcwNmIyYWZlOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiQmVybmhhcmQgTS4gV2llZGVtYW5uIiA8YndpZWRlbWFubkBzdXNlLmRlPgorRGF0ZTogU2F0LCAyNSBGZWIgMjAxNyAwNjo0MjoyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBicG8tMjk3MDg6IHN1cHBvcnQgU09VUkNFX0RBVEVfRVBPQ0ggZW52IHZhciBpbiBweV9jb21waWxlCisKK3RvIGFsbG93IGZvciByZXByb2R1Y2libGUgYnVpbGRzIG9mIHB5dGhvbiBwYWNrYWdlcworCitTZWUgaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy8gZm9yIHdoeSB0aGlzIGlzIGdvb2QKK2FuZCBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnL3NwZWNzL3NvdXJjZS1kYXRlLWVwb2NoLworZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgdmFyaWFibGUuCisKK0JhY2tncm91bmQ6CitJbiBzb21lIGRpc3RyaWJ1dGlvbnMgbGlrZSBvcGVuU1VTRSwgYmluYXJ5IHJwbXMgY29udGFpbiBwcmVjb21waWxlZCAucHljIGZpbGVzLgorCitBbmQgcGFja2FnZXMgbGlrZSBhbXFwIG9yIHR3aXN0ZWQgZHluYW1pY2FsbHkgZ2VuZXJhdGUgLnB5IGZpbGVzIGF0IGJ1aWxkIHRpbWUKK3NvIHRob3NlIGhhdmUgdGhlIGN1cnJlbnQgdGltZSBhbmQgdGhhdCB0aW1lc3RhbXAgZ2V0cyBlbWJlZGRlZAoraW50byB0aGUgLnB5YyBmaWxlIGhlYWRlci4KK1doZW4gd2UgdGhlbiBhZGFwdCBmaWxlIHRpbWVzdGFtcHMgaW4gcnBtcyB0byBiZSBjb25zdGFudCwKK3RoZSB0aW1lc3RhbXAgaW4gdGhlIC5weWMgaGVhZGVyIHdpbGwgbm8gbW9yZSBtYXRjaAordGhlIC5weSB0aW1lc3RhbXAgaW4gdGhlIGZpbGVzeXN0ZW0uCitUaGUgc29mdHdhcmUgd2lsbCBzdGlsbCB3b3JrLCBidXQgaXQgd2lsbCBub3QgdXNlIHRoZSAucHljIGZpbGUgYXMgaXQgc2hvdWxkLgorLS0tCisgRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QgIHwgIDQgKysrKworIExpYi9weV9jb21waWxlLnB5ICAgICAgICAgICB8ICA0ICsrKysKKyBMaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkgfCAxOSArKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdCBiL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0CitpbmRleCAwYWY4ZmIxLi44NDFmM2U4IDEwMDY0NAorLS0tIGEvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKKysrKyBiL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0CitAQCAtNTMsNiArNTMsMTAgQEAgYnl0ZS1jb2RlIGNhY2hlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgc291cmNlIGNvZGUuCisgICAgOmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgb2YgYGAtMWBgIHNlbGVjdHMgdGhlIG9wdGltaXphdGlvbgorICAgIGxldmVsIG9mIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorIAorKyAgIElmIHRoZSBTT1VSQ0VfREFURV9FUE9DSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIHRoZSAucHkgZmlsZSBtdGltZQorKyAgIGFuZCB0aW1lc3RhbXAgZW50cnkgaW4gLnB5YyBmaWxlIGhlYWRlciwgd2lsbCBiZSBsaW1pdGVkIHRvIHRoaXMgdmFsdWUuCisrICAgU2VlIGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvc3BlY3Mvc291cmNlLWRhdGUtZXBvY2gvIGZvciBtb3JlIGluZm8uCisrCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICBDaGFuZ2VkIGRlZmF1bHQgdmFsdWUgb2YgKmNmaWxlKiB0byBiZSA6UEVQOmAzMTQ3YC1jb21wbGlhbnQuICBQcmV2aW91cworICAgICAgIGRlZmF1bHQgd2FzICpmaWxlKiArIGBgJ2MnYGAgKGBgJ28nYGAgaWYgb3B0aW1pemF0aW9uIHdhcyBlbmFibGVkKS4KK2RpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CitpbmRleCAxMWM1YjUwLi42MmRjZGM3IDEwMDY0NAorLS0tIGEvTGliL3B5X2NvbXBpbGUucHkKKysrKyBiL0xpYi9weV9jb21waWxlLnB5CitAQCAtMTM3LDYgKzEzNywxMCBAQCBkZWYgY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lLCBkb3JhaXNlPUZhbHNlLCBvcHRpbWl6ZT0tMSk6CisgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICBwYXNzCisgICAgIHNvdXJjZV9zdGF0cyA9IGxvYWRlci5wYXRoX3N0YXRzKGZpbGUpCisrICAgIHNkZSA9IG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpCisrICAgIGlmIHNkZSBhbmQgc291cmNlX3N0YXRzWydtdGltZSddID4gaW50KHNkZSk6CisrICAgICAgICBzb3VyY2Vfc3RhdHNbJ210aW1lJ10gPSBpbnQoc2RlKQorKyAgICAgICAgb3MudXRpbWUoZmlsZSwgKHNvdXJjZV9zdGF0c1snbXRpbWUnXSwgc291cmNlX3N0YXRzWydtdGltZSddKSkKKyAgICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY29kZV90b19ieXRlY29kZSgKKyAgICAgICAgICAgICBjb2RlLCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10sIHNvdXJjZV9zdGF0c1snc2l6ZSddKQorICAgICBtb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX2NhbGNfbW9kZShmaWxlKQorZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQoraW5kZXggNGE2Y2FhNS4uM2QwOTk2MyAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CitAQCAtOTgsNiArOTgsMjUgQEAgZGVmIHRlc3RfYmFkX2NvZGluZyhzZWxmKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoCisgICAgICAgICAgICAgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoYmFkX2NvZGluZykpKQorIAorKyAgICBkZWYgdGVzdF9zb3VyY2VfZGF0ZV9lcG9jaChzZWxmKToKKysgICAgICAgIHRlc3R0aW1lID0gMTIzNDU2Nzg5CisrICAgICAgICBvcmlnX3NkZSA9IG9zLmdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKQorKyAgICAgICAgb3MuZW52aXJvblsiU09VUkNFX0RBVEVfRVBPQ0giXSA9IHN0cih0ZXN0dGltZSkKKysgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLnNvdXJjZV9wYXRoLCBzZWxmLnB5Y19wYXRoKQorKyAgICAgICAgaWYgb3JpZ19zZGU6CisrICAgICAgICAgICAgb3MuZW52aXJvblsiU09VUkNFX0RBVEVfRVBPQ0giXSA9IG9yaWdfc2RlCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWyJTT1VSQ0VfREFURV9FUE9DSCJdCisrICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc2VsZi5weWNfcGF0aCkpCisrICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuY2FjaGVfcGF0aCkpCisrICAgICAgICBzdGF0aW5mbyA9IG9zLnN0YXQoc2VsZi5zb3VyY2VfcGF0aCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGluZm8uc3RfbXRpbWUsIHRlc3R0aW1lKQorKyAgICAgICAgZiA9IG9wZW4oc2VsZi5weWNfcGF0aCwgInJiIikKKysgICAgICAgIGYucmVhZCg0KQorKyAgICAgICAgdGltZWJ5dGVzID0gZi5yZWFkKDQpICMgcmVhZCB0aW1lc3RhbXAgZnJvbSBweWMgaGVhZGVyCisrICAgICAgICBmLmNsb3NlKCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZWJ5dGVzLCAodGVzdHRpbWUpLnRvX2J5dGVzKDQsICdsaXR0bGUnKSkKKysKKyAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPiAwLCAndGVzdCBkb2VzIG5vdCB3b3JrIHdpdGggLU8nKQorICAgICBkZWYgdGVzdF9kb3VibGVfZG90X25vX2Nsb2JiZXIoc2VsZik6CisgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjk2NgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaAppbmRleCAwZDkxNTJjLi45YjQwZThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaApAQCAtMSwyMSArMSw3IEBACi1UaGlzIHBhdGNoIHVwZGF0ZXMgcmFuZG9tLmMgdG8gbWF0Y2ggdXBzdHJlYW0gcHl0aG9uJ3MgY29kZSBhdCByZXZpc2lvbiAKLTgxMjVkOWE4MTUyYi4gVGhpcyBhZGRyZXNzZXMgdmFyaW91cyBpc3N1ZXMgYXJvdW5kIHByb2JsZW1zIHdpdGggZ2xpYmMgMi4yNCAKLWFuZCAyLjI1IHN1Y2ggdGhhdCBweXRob24gd291bGQgZmFpbCB0byBzdGFydCB3aXRoOgotCi1bcnB1cmRpZUBjZW50b3M3IH5dJCAvdG1wL3QyL3N5c3Jvb3RzL3g4Nl82NC1wb2t5c2RrLWxpbnV4L3Vzci9iaW4vcHl0aG9uMwotRmF0YWwgUHl0aG9uIGVycm9yOiBnZXRlbnRyb3B5KCkgZmFpbGVkCi1BYm9ydGVkCi0KLSh0YWtlbiBmcm9tIG91ciBidWlsZHRvb2xzLXRhcmJhbGwgYWxzbyBicmVha3MgZVNESykKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIFZpY3RvciBTdGlubmVyIDx2aWN0b3Iuc3Rpbm5lckBnbWFpbC5jb20+Ci0jIERhdGUgMTQ4Mzk1NzEzMyAtMzYwMAotIyBOb2RlIElEIDgxMjVkOWE4MTUyYjc5ZTcxMmNiMDljNzA5NGI5MTI5YjliY2VhODYKLSMgUGFyZW50ICAzMzc0NjE1NzRjOTAyODE2MzA3NTFiNjA5NWM0ZTFiYWYzODBjZjdkCi1Jc3N1ZSAjMjkxNTc6IFByZWZlciBnZXRyYW5kb20oKSBvdmVyIGdldGVudHJvcHkoKQorRnJvbSAwMzViYTVkYTNlNTNlNDVjNzEyYjM5ZmUxZjZmYjc0M2U2OTdjMDMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIFN0aW5uZXIgPHZpY3Rvci5zdGlubmVyQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgOSBKYW4gMjAxNyAxMToxODo1MyArMDEwMAorU3ViamVjdDogW1BBVENIXSBJc3N1ZSAjMjkxNTc6IFByZWZlciBnZXRyYW5kb20oKSBvdmVyIGdldGVudHJvcHkoKQogCiBDb3B5IGFuZCB0aGVuIGFkYXB0IFB5dGhvbi9yYW5kb20uYyBmcm9tIGRlZmF1bHQgYnJhbmNoLiBEaWZmZXJlbmNlIGJldHdlZW4gMy41CiBhbmQgZGVmYXVsdCBicmFuY2hlczoKQEAgLTI2LDEyICsxMiwxNyBAQAogKiBQeXRob24gMy41IGhhcyBubyBfUHlPU19VUmFuZG9tTm9uYmxvY2soKSBmdW5jdGlvbjogX1B5T1NfVVJhbmRvbSgpCiAgIHdvcmtzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9uIFB5dGhvbiAzLjUKIAotUlAgMjAxNy8xLzIyCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzJdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTMuNS4yL1B5dGhvbi9yYW5kb20uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjUuMi5vcmlnL1B5dGhvbi9yYW5kb20uYwotKysrIFB5dGhvbi0zLjUuMi9QeXRob24vcmFuZG9tLmMKKy0tLQorIFB5dGhvbi9yYW5kb20uYyB8IDQ5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOTQgaW5zZXJ0aW9ucygrKSwgMjAwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCitpbmRleCBkMjAzOTM5Li4zMWY2MWQwIDEwMDY0NAorLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKysgYi9QeXRob24vcmFuZG9tLmMKIEBAIC0xLDYgKzEsOSBAQAogICNpbmNsdWRlICJQeXRob24uaCIKICAjaWZkZWYgTVNfV0lORE9XUwpAQCAtNDIsNyArMzMsNyBAQAogICNlbHNlCiAgIyAgaW5jbHVkZSA8ZmNudGwuaD4KICAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKLUBAIC0zNiwxMCArMzksOSBAQCB3aW4zMl91cmFuZG9tX2luaXQoaW50IHJhaXNlKQorQEAgLTM3LDEwICs0MCw5IEBAIHdpbjMyX3VyYW5kb21faW5pdChpbnQgcmFpc2UpCiAgICAgIHJldHVybiAwOwogIAogIGVycm9yOgpAQCAtNTUsNyArNDYsNyBAQAogICAgICByZXR1cm4gLTE7CiAgfQogIAotQEAgLTUyLDggKzU0LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5XworQEAgLTUzLDggKzU1LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogIAogICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQogICAgICB7CkBAIC02Niw3ICs1Nyw3IEBACiAgICAgIH0KICAKICAgICAgd2hpbGUgKHNpemUgPiAwKQotQEAgLTYyLDExICs2NSw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV8KK0BAIC02MywxMSArNjYsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKICAgICAgICAgIHsKICAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwpAQCAtODAsNyArNzEsNyBAQAogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0KICAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKLUBAIC03NSw1NSArNzYsMjkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5XworQEAgLTc2LDU4ICs3NywyMyBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgICAgIHJldHVybiAwOwogIH0KICAKQEAgLTEyOSwxMyArMTIwLDE5IEBACiAgI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKICAjZGVmaW5lIFBZX0dFVFJBTkRPTSAxCiAgCistLyogQ2FsbCBnZXRyYW5kb20oKQogKy8qIENhbGwgZ2V0cmFuZG9tKCkgdG8gZ2V0IHJhbmRvbSBieXRlczoKICsKLSsgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKKyAgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKKy0gICAtIFJldHVybiAwIGlmIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCistICAgICBFUEVSTSkgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20KKy0gICAgIG5vdCBpbml0aWFsaXplZCB5ZXQpIGFuZCByYWlzZT0wLgogKyAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNKSwKICsgICAgIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlsZWQgd2l0aCBFQUdBSU4gKHN5c3RlbSB1cmFuZG9tIG5vdAogKyAgICAgaW5pdGlhbGl6ZWQgeWV0KS4KLSsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6CisgICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yOgorLSAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCistICAgICBleGNlcHRpb24sIG9yIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50IGVycm9yLiAqLwogKyAgICAgaWYgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIsIHJhaXNlIGlzIG5vbi16ZXJvIGFuZCB0aGUgUHl0aG9uIHNpZ25hbAogKyAgICAgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLCBvciBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudAogKyAgICAgZXJyb3IuCkBAIC0xNDQsMjYgKzE0MSwxNiBAQAogIHN0YXRpYyBpbnQKICBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICB7Ci0tICAgIC8qIElzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/Ci0tICAgICAqIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMgMTEuMyBvciBuZXdlciAqLwotKyAgICAvKiBJcyBnZXRyYW5kb20oKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZiBnZXRyYW5kb20oKQotKyAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKLSsgICAgICAgMTEuMyBvciBuZXdlciAqLwotICAgICBzdGF0aWMgaW50IGdldHJhbmRvbV93b3JrcyA9IDE7Ci0gCi0gICAgIC8qIGdldHJhbmRvbSgpIG9uIExpbnV4IHdpbGwgYmxvY2sgaWYgY2FsbGVkIGJlZm9yZSB0aGUga2VybmVsIGhhcwotQEAgLTEzMiw4NCArMTA3LDE2NSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpCitAQCAtMTQyLDE2ICsxMDgsMTkgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCiAgICAgICAqIEdSTkRfTk9OQkxPQ0sgZmxhZy4gKi8KICAgICAgY29uc3QgaW50IGZsYWdzID0gR1JORF9OT05CTE9DSzsKLS0gICAgaW50IG47CiArICAgIGNoYXIgKmRlc3Q7Ci0rICAgIGxvbmcgbjsKKyAgICAgbG9uZyBuOwogIAotLSAgICBpZiAoIWdldHJhbmRvbV93b3JrcykKLSsgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKKyAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgIHJldHVybiAwOwotKyAgICB9CisgICAgIH0KICAKICsgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICAgd2hpbGUgKDAgPCBzaXplKSB7CkBAIC0xNzQsMTEgKzE2MSw4IEBACiArICAgICAgICAgICByZXF1ZXN0ZWQuICovCiAgICAgICAgICBuID0gUHlfTUlOKHNpemUsIDEwMjQpOwogICNlbHNlCi0tICAgICAgICBuID0gc2l6ZTsKLSsgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgTE9OR19NQVgpOwotICNlbmRpZgotIAotICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgbiA9IFB5X01JTihzaXplLCBMT05HX01BWCk7CitAQCAtMTYxLDM0ICsxMzAsMzUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgI2lmZGVmIEhBVkVfR0VUUkFORE9NCiAgICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yMDksNTYgKzE5Myw0NSBAQAogICNlbmRpZgogIAogICAgICAgICAgaWYgKG4gPCAwKSB7Ci0tICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUykgeworLSAgICAgICAgICAgIC8qIEVOT1NZUzogZ2V0cmFuZG9tKCkgc3lzY2FsbCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgKGJ1dAorLSAgICAgICAgICAgICAqIG1heWJlIHN1cHBvcnRlZCBieSB0aGUgaG9zdCB3aGljaCBidWlsdCBQeXRob24pLiBFUEVSTToKKy0gICAgICAgICAgICAgKiBnZXRyYW5kb20oKSBzeXNjYWxsIGJsb2NrZWQgYnkgU0VDQ09NUCBvciBzb21ldGhpbmcgZWxzZS4gKi8KICsgICAgICAgICAgICAvKiBFTk9TWVM6IHRoZSBzeXNjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KICsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCiArICAgICAgICAgICAgICAgb3Igc29tZXRoaW5nIGVsc2UuICovCi0rICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgeworICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKICAgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgfQogKwogICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKLS0gICAgICAgICAgICAgICAgLyogSWYgd2UgZmFpbGVkIHdpdGggRUFHQUlOLCB0aGUgZW50cm9weSBwb29sIHdhcwotLSAgICAgICAgICAgICAgICAgKiB1bmluaXRpYWxpemVkLiBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiBmYWlsdXJlIHRvIGZhbGwKLS0gICAgICAgICAgICAgICAgICogYmFjayB0byByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLgotLSAgICAgICAgICAgICAgICAgKgotLSAgICAgICAgICAgICAgICAgKiBOb3RlOiBJbiB0aGlzIGNhc2UgdGhlIGRhdGEgcmVhZCB3aWxsIG5vdCBiZSByYW5kb20gc28KLS0gICAgICAgICAgICAgICAgICogc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLiBSZXRhaW5pbmcKLS0gICAgICAgICAgICAgICAgICogdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotKyAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotKyAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgotKyAgICAgICAgICAgICAgICAgICByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLgotKwotKyAgICAgICAgICAgICAgICAgICBOb3RlOiBJbiB0aGlzIGNhc2UgdGhlIGRhdGEgcmVhZCB3aWxsIG5vdCBiZSByYW5kb20gc28KLSsgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLiBSZXRhaW5pbmcKLSsgICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwotICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgLyogZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxzIHdpdGggRUFHQUlOIGlmIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gSW4gdGhpcyBjYXNlLCBmYWxsIGJhY2sgb24KK0BAIC0yMDIsMTY5ICsxNzIsMjI1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogICAgICAgICAgICAgIH0KICAKICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKIC0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0tICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKQorLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyYWlzZSkgewogLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7Ci0tICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiArICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgewogKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICB9CisgCiAtICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpICovCi0rCiArICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgCi0tICAgICAgICAgICAgaWYgKHJhaXNlKQotKyAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0tICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlIHsKIC0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0rICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICB9CiAgCkBAIC0yNjksMTIgKzI0MiwxOSBAQAogICAgICByZXR1cm4gMTsKICB9CiAtI2VuZGlmCi0rCisgCistc3RhdGljIHN0cnVjdCB7CistICAgIGludCBmZDsKKy0gICAgZGV2X3Qgc3RfZGV2OworLSAgICBpbm9fdCBzdF9pbm87CistfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKQogKyNkZWZpbmUgUFlfR0VURU5UUk9QWSAxCi0rCisgCiArLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKToKLSsKKyAKKy0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQorLSAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgogKyAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcwogKyAgIC0gUmV0dXJuIDAgaWYgZ2V0ZW50cm9weSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCiArICAgICBFUEVSTSkuCkBAIC0yODIsMjUgKzI2Miw0NyBAQAogKyAgICAgaWYgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIEVJTlRSLCByYWlzZSBpcyBub24temVybyBhbmQgdGhlIFB5dGhvbiBzaWduYWwKICsgICAgIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgb3IgaWYgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50CiArICAgICBlcnJvci4KLSsKKyAKKy0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KKy1zdGF0aWMgdm9pZAorLWRldl91cmFuZG9tX25vcmFpc2UodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiArICAgZ2V0ZW50cm9weSgpIGlzIHJldHJpZWQgaWYgaXQgZmFpbGVkIHdpdGggRUlOVFI6IGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLiAqLwogK3N0YXRpYyBpbnQKICtweV9nZXRlbnRyb3B5KGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0reworIHsKKy0gICAgaW50IGZkOworLSAgICBQeV9zc2l6ZV90IG47CiArICAgIC8qIElzIGdldGVudHJvcHkoKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZgogKyAgICAgICBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLiAqLwogKyAgICBzdGF0aWMgaW50IGdldGVudHJvcHlfd29ya3MgPSAxOwotKworIAorLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKKy0KKy0jaWZkZWYgUFlfR0VUUkFORE9NCistICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7CistICAgICAgICByZXR1cm47CiArICAgIGlmICghZ2V0ZW50cm9weV93b3JrcykgewogKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKKyAgICAgfQorLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCistICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLworLSNlbmRpZgorIAorLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKy0gICAgaWYgKGZkIDwgMCkgeworLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIG9wZW4gL2Rldi91cmFuZG9tIik7CistICAgIH0KICsgICAgd2hpbGUgKHNpemUgPiAwKSB7CiArICAgICAgICAvKiBnZXRlbnRyb3B5KCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAgdG8gMjU2IGJ5dGVzLiBDYWxsIGl0CiArICAgICAgICAgICBtdWx0aXBsZSB0aW1lcyBpZiBtb3JlIGJ5dGVzIGFyZSByZXF1ZXN0ZWQuICovCiArICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwogKyAgICAgICAgaW50IHJlczsKLSsKKyAKKy0gICAgd2hpbGUgKDAgPCBzaXplKQorLSAgICB7CistICAgICAgICBkbyB7CistICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKy0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKICsgICAgICAgIGlmIChyYWlzZSkgewogKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICsgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKQEAgLTMwOSw3ICszMTEsMTEgQEAKICsgICAgICAgIGVsc2UgewogKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwogKyAgICAgICAgfQotKworIAorLSAgICAgICAgaWYgKG4gPD0gMCkgeworLSAgICAgICAgICAgIC8qIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMCBieXRlcyAqLworLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7CistICAgICAgICAgICAgYnJlYWs7CiArICAgICAgICBpZiAocmVzIDwgMCkgewogKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwuCiArICAgICAgICAgICAgICAgRVBFUk06IHRoZSBzeXNjYWxsIGlzIGJsb2NrZWQgYnkgYSBzZWN1cml0eSBwb2xpY3kgKGV4OiBTRUNDT01QKQpAQCAtMzM0LDcxICszNDAsNDQgQEAKICsgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogKyAgICAgICAgICAgIH0KICsgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBidWZmZXIgKz0gbjsKKy0gICAgICAgIHNpemUgLT0gbjsKICsKICsgICAgICAgIGJ1ZmZlciArPSBsZW47CiArICAgICAgICBzaXplIC09IGxlbjsKLSsgICAgfQorICAgICB9CistICAgIGNsb3NlKGZkKTsKICsgICAgcmV0dXJuIDE7Ci0rfQorIH0KICsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikgKi8KKyAKKy0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQorLSAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgorIAorLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworK3N0YXRpYyBzdHJ1Y3QgeworKyAgICBpbnQgZmQ7CisrICAgIGRldl90IHN0X2RldjsKKysgICAgaW5vX3Qgc3RfaW5vOworK30gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKICsKLSAKLSBzdGF0aWMgc3RydWN0IHsKLSAgICAgaW50IGZkOwotQEAgLTIxNywxMjcgKzI3MywxMjMgQEAgc3RhdGljIHN0cnVjdCB7Ci0gICAgIGlub190IHN0X2lubzsKLSB9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07Ci0gCiArLyogUmVhZCByYW5kb20gYnl0ZXMgZnJvbSB0aGUgL2Rldi91cmFuZG9tIGRldmljZToKLSAKLS0vKiBSZWFkIHNpemUgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20gaW50byBidWZmZXIuCi0tICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi0tc3RhdGljIHZvaWQKLS1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotLXsKLS0gICAgaW50IGZkOwotLSAgICBQeV9zc2l6ZV90IG47CisrCiArICAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzCiArICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yCi0gCi0tICAgIGFzc2VydCAoMCA8IHNpemUpOworKwogKyAgIFBvc3NpYmxlIGNhdXNlcyBvZiBlcnJvcnM6Ci0gCi0tI2lmZGVmIFBZX0dFVFJBTkRPTQotLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkKLS0gICAgICAgIHJldHVybjsKLS0gICAgLyogZ2V0cmFuZG9tKCkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwsIGZhbGwgYmFjawotLSAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotLSNlbmRpZgorKwogKyAgIC0gb3BlbigpIGZhaWxlZCB3aXRoIEVOT0VOVCwgRU5YSU8sIEVOT0RFViwgRUFDQ0VTOiB0aGUgL2Rldi91cmFuZG9tIGRldmljZQogKyAgICAgd2FzIG5vdCBmb3VuZC4gRm9yIGV4YW1wbGUsIGl0IHdhcyByZW1vdmVkIG1hbnVhbGx5IG9yIG5vdCBleHBvc2VkIGluIGEKICsgICAgIGNocm9vdCBvciBjb250YWluZXIuCiArICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IKICsgICAtIGZzdGF0KCkgZmFpbGVkCiArICAgLSByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAKLSAKLS0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgIGlmIChmZCA8IDApCi0tICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKKysKICsgICByZWFkKCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCi0gCi0tICAgIHdoaWxlICgwIDwgc2l6ZSkKLS0gICAgewotLSAgICAgICAgZG8gewotLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0tICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0tICAgICAgICBpZiAobiA8PSAwKQotLSAgICAgICAgewotLSAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0tICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJlYWQgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iKTsKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS0gICAgICAgIGJ1ZmZlciArPSBuOwotLSAgICAgICAgc2l6ZSAtPSAoUHlfc3NpemVfdCluOwotLSAgICB9Ci0tICAgIGNsb3NlKGZkKTsKLS19CisrCiArICAgVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZGV2aWNlIGlzIGtlcHQgb3BlbiBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIHVzaW5nCiArICAgbWFueSBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gcnVuIGluIHBhcmFsbGVsIGZyb20gbXVsdGlwbGUgdGhyZWFkczoKICsgICBzZWUgdGhlIGlzc3VlICMxODc1Ni4KQEAgLTQwNiw5ICszODUsNyBAQAogKyAgIHN0X2RldiBhbmQgc3RfaW5vIGZpZWxkcyBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIChmcm9tIGZzdGF0KCkpIGFyZSBjYWNoZWQgdG8KICsgICBjaGVjayBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyByZXBsYWNlZCBieSBhIGRpZmZlcmVudCBmaWxlICh3aGljaCBpcwogKyAgIGxpa2VseSBhIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24pOiBzZWUgdGhlIGlzc3VlICMyMTIwNy4KLSAKLS0vKiBSZWFkIHNpemUgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20gaW50byBidWZmZXIuCi0tICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisrCiArICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIG9yIHJlcGxhY2VkLCBvcGVuIGEgbmV3IGZpbGUgZGVzY3JpcHRvcgogKyAgIGJ1dCBkb24ndCBjbG9zZSB0aGUgb2xkIGZpbGUgZGVzY3JpcHRvcjogaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZwogKyAgIGltcG9ydGFudCBmb3Igc29tZSB0aGlyZC1wYXJ0eSBjb2RlLiAqLwpAQCAtNDIyLDIyICszOTksMjQgQEAKIC0jaWZkZWYgUFlfR0VUUkFORE9NCiAtICAgIGludCByZXM7CiAtI2VuZGlmCi0gCistCiAtICAgIGlmIChzaXplIDw9IDApCiAtICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogIAogLSNpZmRlZiBQWV9HRVRSQU5ET00KIC0gICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7Ci0tICAgIGlmIChyZXMgPCAwKQorLSAgICBpZiAocmVzIDwgMCkgewogLSAgICAgICAgcmV0dXJuIC0xOwotLSAgICBpZiAocmVzID09IDEpCistICAgIH0KKy0gICAgaWYgKHJlcyA9PSAxKSB7CiAtICAgICAgICByZXR1cm4gMDsKLS0gICAgLyogZ2V0cmFuZG9tKCkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwsIGZhbGwgYmFjawotLSAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLworLSAgICB9CistICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKKy0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCiAtI2VuZGlmCi0tCisrICAgIGlmIChyYWlzZSkgeworKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKKyAKIC0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewogLSAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwogLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKQEAgLTUxNiw4ICs0OTUsOSBAQAogIAogLSAgICBkbyB7CiAtICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIGlmIChuID09IC0xKQorLSAgICAgICAgaWYgKG4gPT0gLTEpIHsKIC0gICAgICAgICAgICByZXR1cm4gLTE7CistICAgICAgICB9CiAtICAgICAgICBpZiAobiA9PSAwKSB7CiAtICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKIC0gICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLApAQCAtNTY2LDcgKzU0Niw3IEBACiAgICAgIHJldHVybiAwOwogIH0KICAKLUBAIC0zNDksOCArNDAxLDggQEAgZGV2X3VyYW5kb21fY2xvc2Uodm9pZCkKK0BAIC0zNzYsOCArNDAyLDggQEAgZGV2X3VyYW5kb21fY2xvc2Uodm9pZCkKICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKICAgICAgfQogIH0KQEAgLTU3Niw3ICs1NTYsNyBAQAogIAogIC8qIEZpbGwgYnVmZmVyIHdpdGggcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgYSBsaW5lYXIgY29uZ3J1ZW50CiAgICAgZ2VuZXJhdG9yIChMQ0cpOgotQEAgLTM3MywyOSArNDI1LDk4IEBAIGxjZ191cmFuZG9tKHVuc2lnbmVkIGludCB4MCwgdW5zaWduZWQgY2gKK0BAIC00MDAsMzEgKzQyNiwxMDAgQEAgbGNnX3VyYW5kb20odW5zaWduZWQgaW50IHgwLCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKQogICAgICB9CiAgfQogIApAQCAtNjYxLDcgKzY0MSw3IEBACiAgI2Vsc2UKIC0gICAgcmV0dXJuIGRldl91cmFuZG9tX3B5dGhvbigoY2hhciopYnVmZmVyLCBzaXplKTsKICsgICAgcmVzID0gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKLSAjZW5kaWYKKysjZW5kaWYKICsgICAgaWYgKHJlcyA8IDApIHsKICsgICAgICAgIHJldHVybiAtMTsKICsgICAgfQpAQCAtNjczLDkgKzY1Myw5IEBACiArI2VuZGlmCiArCiArICAgIHJldHVybiBkZXZfdXJhbmRvbShidWZmZXIsIHNpemUsIHJhaXNlKTsKLSsjZW5kaWYKLSt9Ci0rCisgI2VuZGlmCisgfQorIAogKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCiArICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogKyAgIGV4Y2VwdCBsb25nIGxpdmluZyBwcml2YXRlIGtleXMgZm9yIGFzeW1tZXRyaWMgZW5jcnlwdGlvbi4KQEAgLTY4NSwxMCArNjY1LDEyIEBACiArX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKICt7CiArICAgIHJldHVybiBweXVyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKLSB9Ci0gCisrfQorKwogIHZvaWQKLUBAIC00MzYsMTMgKzU1NywxNCBAQCBfUHlSYW5kb21fSW5pdCh2b2lkKQorIF9QeVJhbmRvbV9Jbml0KHZvaWQpCisgeworQEAgLTQ2MywxMyArNTU4LDE0IEBAIF9QeVJhbmRvbV9Jbml0KHZvaWQpCiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CkBAIC03MTAsNyArNjkyLDcgQEAKICAgICAgfQogIH0KICAKLUBAIC00NTQsOCArNTc2LDYgQEAgX1B5UmFuZG9tX0Zpbmkodm9pZCkKK0BAIC00ODEsOCArNTc3LDYgQEAgX1B5UmFuZG9tX0Zpbmkodm9pZCkKICAgICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENyeXB0UHJvdiwgMCk7CiAgICAgICAgICBoQ3J5cHRQcm92ID0gMDsKICAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZjdjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHoiCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTA2ZWZiYWNmY2RjN2MzYzkxOThhZWVmYWZkMTU5ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDEwZjU2MTAwYjliNzQyNTllYmNkNWQ0YjI5NWEzMjMyNGI1OGI1MTc0MDNhMTBkMWEyYWE3Y2IyMmJjYTQwIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02YjYwMjU4MTMwZTRlZDEwZDMxMDE1MTdlYjViOTM4NSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKLSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgotU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgotRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKLUVYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgotCi1leHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgotZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9CQVNFID0gIiR7Qn0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX1NSQyA9ICIke1N9IgotZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgotCi0jIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcwotZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLQlhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgqCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKLSAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKLSAgICAgICAgY2QgLQotCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbwotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZwotCi0JIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQotCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci0JCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKLQlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCi0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotfQotCi1yZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKLQotRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKLUZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCi1GSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl2ZW52IgotRklMRVNfJHtQTn0tcHl2ZW52ICs9ICIke2JpbmRpcn0vcHl2ZW52LSR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5dmVudiIKLQotIyBwYWNrYWdlIGxpYnB5dGhvbjMKLVBBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgotRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgotRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKLUlOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tYXJncGFyc2UiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZGYxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4zLmJiCkBAIC0wLDAgKzEsMjI3IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKKworREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHoiCitQUiA9ICIke0lOQ19QUn0uMCIKK1BZVEhPTl9NQUpNSU4gPSAiMy41IgorUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgorRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKK2ZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAorJHtESVNUUk9fU1JDX1VSSX0gXAorIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTdkMWY4YmZiYWJmNGYyNTAwMjczZmIwNzA2ZTZmMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWVmZTJhZDY1NzU4NTU0MjNhYjYzMGY1YjUxYThlZjZlNTU1NmY3NzQ1ODRjMDZiZWFiNDkyNmY5MzBkZGJiMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY4MGVkOTlhYTYwZDM1MGM2NWE2NTkxNDQ5NDIwN2UiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKK2V4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKKworIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisJYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKK30KKworcmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKKworIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKK1JQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgorUlJFQ09NTUVORFNfJHtQTn0tY29yZSA9ICIke1BOfS1yZWFkbGluZSIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCisKK0ZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKK0ZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCisKKyMgcGFja2FnZSBsaWJweXRob24zCitQQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKK0ZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKK0ZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzICR7UE59LWFyZ3BhcnNlIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCisKKyMgY2F0Y2ggbWFucGFnZQorUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKK0ZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgppbmRleCA0ZWY5OTUyLi43NTRjMDI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIKQEAgLTEsNSArMSw1IEBACiByZXF1aXJlIHB5dGhvbi5pbmMKLURFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiIKK0RFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiIKIFBSID0gIiR7SU5DX1BSfSIKIAogRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgpAQCAtMjcsNiArMjcsOCBAQAogICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAogICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCiAgIGZpbGU6Ly9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaCBcCisgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKKyAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgpAQCAtMzcsNiArMzksOSBAQAogCiBFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBhY19jdl9maWxlX19kZXZfcHRjPW5vIgogCitQQUNLQUdFQ09ORklHID8/PSAiYmRiIgorUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwsZGIiCisKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCiAgICAgICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQpAQCAtMTE2LDYgKzEyMSwxMCBAQAogCWZpCiAKIAlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCisKKyAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCisgICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCisgICAgZmkKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKQEAgLTE1Miw3ICsxNjEsOSBAQAogUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCiBGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgogUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMiCisKKyMgcHRlc3QKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMiCiAjaW5oZXJpdCBwdGVzdCBhZnRlciAicmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMiIHNvIFBBQ0tBR0VTIGRvZXNuJ3QgZ2V0IG92ZXJ3cml0dGVuCiBpbmhlcml0IHB0ZXN0CiAKQEAgLTE2MiwxMCArMTczLDIzIEBACiAJc2VkIC1lIHM6TElCRElSL3B5dGhvbi9wdGVzdDoke1BURVNUX1BBVEh9OmcgXAogCSAtZSBzOkxJQkRJUjoke2xpYmRpcn06ZyBcCiAJIC1pICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKKwlzZWQgLWkgXAorCQktZSAnczotLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCSAgICAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9L01ha2VmaWxlCiB9CiAKICMgY2F0Y2ggbWFucGFnZQogUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKIEZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKIAorIyBOYXN0eSBidXQgaWYgYmRiIGlzbid0IGVuYWJsZWQgdGhlIHBhY2thZ2Ugd29uJ3QgYmUgZ2VuZXJhdGVkCitSREVQRU5EU18ke1BOfS1tb2R1bGVzX3JlbW92ZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiZGInLCAnJywgJyR7UE59LWJzZGRiJywgZCl9IgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKaW5kZXggMjdkNTMxNS4uZDg2YjE1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKQEAgLTIwLDYgKzIwLDUgQEAKIAlpbnN0YWxsIHR1bmN0bCAke0R9JHtiaW5kaXJ9LwogfQogCi1STV9XT1JLX0VYQ0xVREVfSVRFTVMgKz0gInJlY2lwZS1zeXNyb290LW5hdGl2ZSIKIERFUEVORFMgKz0gInFlbXUtbmF0aXZlIgogYWRkdGFzayBhZGR0b19yZWNpcGVfc3lzcm9vdCBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290IGJlZm9yZSBkb19idWlsZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IDBlMTQxMWEuLjJhMWQxNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKQEAgLTI2LDcgKzI2LDYgQEAKICAgICAtLWRpc2FibGUtc3RyaXAgXAogICAgIC0tZGlzYWJsZS13ZXJyb3IgXAogICAgIC0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IFwKLSAgICAtLXdpdGgtc3lzdGVtLXBpeG1hbiBcCiAgICAgLS1leHRyYS1jZmxhZ3M9JyR7Q0ZMQUdTfScgXAogICAgICIKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXB5dGhvbj0ke1VTUkJJTlBBVEh9L3B5dGhvbjIuNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZGJhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoCkBAIC0wLDAgKzEsNzE5IEBACitGcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KK0RhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUworCitFeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAoraXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAordG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCitydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KK21ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCisKK1RoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCithbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgorCitUaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKK2NhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCittaWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCisKK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCitTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CistLS0KKyBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KKyBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCisgaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCisgaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKworIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCisgNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYworaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYworKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCitAQCAtMzQsNiArMzQsOCBAQAorICNpbmNsdWRlICJ0cG1fdGlzLmgiCisgI2luY2x1ZGUgInRwbV91dGlsLmgiCisgI2luY2x1ZGUgInRwbV9pb2N0bC5oIgorKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCisrI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKKyAKKyAjZGVmaW5lIERFQlVHX1RQTSAwCisgCitAQCAtNDksNiArNTEsNyBAQAorICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCisgCisgc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOworK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKKyAKKyAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KKyB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7CitAQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgeworICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKKyAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KKyAgICAgYm9vbCB0cG1fYnVzeTsKKysKKysgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOworKworKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7CisgfTsKKyAKKyB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7CitAQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgfQorICAgICB9CisrICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7CisrICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOworKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKKysgICAgfQorIH0KKyAKKyAvKgorQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCisgLyoKKyAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQorICAqLworLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCisrc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCisgeworICAgICBpbnQgcmMgPSAwOworLSAgICBwdG1faW5pdCBpbml0ID0geworLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKKy0gICAgfTsKKysgICAgcHRtX2luaXQgaW5pdDsKKysgICAgaWYgKGlzX3Jlc3VtZSkgeworKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7CisrICAgIH0KKyAKKyAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKKyAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKK0BAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOworIAorLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7CisrICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7CisgCisgICAgIHJldHVybiAwOworIH0KK0BAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAorICAgICByZXR1cm4gcmM7CisgfQorIAorK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCisreworKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOworKworKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7CisrCisrICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKKyt9CisrCisrc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CisrCisrICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKKysKKysgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOworK30KKysKKyBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCisgeworICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOworQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQorIHsKKyAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKKyAKKy0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLworKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCisgICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKKyAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7CisgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOworQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCisgICAgIHJldHVybiBmZDsKKyB9CisgCisrc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCisreworKyAgICBwdG1fY2FwIGNhcHM7CisrCisrICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7CisrICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKKysgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7CisrICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKKysgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOworKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7CisrICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAorKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKKysgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7CisrICAgIH0KKyt9CisrCisgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKKyB7CisgICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CitAQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCisgICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OworICAgICAgICAgfQorICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KKy0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKKysgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7CisgICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OworICAgICAgICAgfQorICAgICB9CitAQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCisgICAgICAgICB9CisgICAgIH0KKyAKKysgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOworIAorICAgICByZXR1cm4gMDsKKyAKK0BAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQorIAorICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7CisgICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7CisrCisrICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKKyB7CisrICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKKyB9CisgCisgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQorQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCisgICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOworIH0KKyAKKytzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCisreworKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7CisrICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OworKworKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOworKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCisrICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgeworKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKKysgICAgIH0KKysgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOworKworKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KKysgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOworK30KKysKKytzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCisreworKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7CisrICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OworKworKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOworK30KKysKKytzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7CisrICAgIC5uYW1lID0gImN1c2UtdHBtIiwKKysgICAgLnZlcnNpb25faWQgPSAxLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKKysgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAorKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCisrICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCisrICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCisrCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKKysKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCisrICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKKysgICAgfQorK307CisrCisgc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7CisgICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKKyAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKK2luZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0CistLS0gYS9ody90cG0vdHBtX3Rpcy5jCisrKysgYi9ody90cG0vdHBtX3Rpcy5jCitAQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCisgICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7CisgICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7CisgCisrICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7CisrCisgICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7CisgCisgICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAorQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCisgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKKyAKKyAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKKysKKysgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOworIH0KKyAKKyAvKgorQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQorICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOworIH0KKyAKKysKKysvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCisrCisrc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCisreworKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKKysgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKKysgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OworKworKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKKysgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKKysjaWZkZWYgREVCVUdfVElTCisrICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOworKyNlbmRpZgorKworKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOworKworKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCisrICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgorKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7CisrICAgICAgICAvKgorKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKKysgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7CisrICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCisrICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgeworKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLworKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKKysgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKKysgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKKysKKysgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKKysgICAgICAgd3JpdHRlbiB0byBkaXNrICovCisrICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgeworKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046CisrICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7CisrICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7CisrICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgorKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCisrICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOworKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OworKyAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLworKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKKysgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCisreworKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKKysgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKKysKKysgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OworKworKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKKysgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7CisrICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgorKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCisrICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOworKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OworKyAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKKysgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCisrICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKKysgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKKysgICAgICAgIGJyZWFrOworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAorKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOworKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0geworKyAgICAubmFtZSA9ICJsb2MiLAorKyAgICAudmVyc2lvbl9pZCA9IDEsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCisrICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgeworKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCisrICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCisrICAgIH0KKyt9OworKworIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0geworICAgICAubmFtZSA9ICJ0cG0iLAorLSAgICAudW5taWdyYXRhYmxlID0gMSwKKysgICAgLnZlcnNpb25faWQgPSAxLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKKysgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAorKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKKysgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAorKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7CisrICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAorKworKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKKysKKysgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQorKyAgICB9CisgfTsKKyAKKyBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7CitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKK2luZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0CistLS0gYS9ody90cG0vdHBtX3Rpcy5oCisrKysgYi9ody90cG0vdHBtX3Rpcy5oCitAQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7CisgCisgdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgeworICAgICBRRU1VQkggKmJoOworKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KKysKKyAgICAgdWludDMyX3Qgb2Zmc2V0OworICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOworIAorZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKK2luZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0CistLS0gYS9ody90cG0vdHBtX3V0aWwuYworKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKK0BAIC0yMiw2ICsyMiwxNyBAQAorICNpbmNsdWRlICJxZW11L29zZGVwLmgiCisgI2luY2x1ZGUgInRwbV91dGlsLmgiCisgI2luY2x1ZGUgInRwbV9pbnQuaCIKKysjaW5jbHVkZSAidHBtX2lvY3RsLmgiCisrI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCisrCisrI2RlZmluZSBERUJVR19UUE0gMAorKworKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCisrICAgIGlmIChERUJVR19UUE0pIHsgXAorKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCisrICAgIH0gXAorK30gd2hpbGUgKDApCisrCisgCisgLyoKKyAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKK0BAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCisgCisgICAgIHJldHVybiAxOworIH0KKysKKytzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCisreworKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOworKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7CisrICAgIHRzYi0+c2l6ZSA9IDA7CisrfQorKworKy8qCisrICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KKysgKgorKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCisrICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKKysgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icworKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgorKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCisrICovCisrc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCisreworKyAgICBwdG1fZ2V0c3RhdGUgcGdzOworKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOworKyAgICBwdG1fcmVzIHJlczsKKysgICAgc3NpemVfdCBuOworKyAgICBzaXplX3QgdG9fcmVhZDsKKysKKysgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOworKworKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKKysgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOworKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OworKworKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKKysgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgIH0KKysgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OworKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7CisrICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgorKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKKysgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgIH0KKysKKysgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKKysKKysgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7CisrICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7CisrICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOworKworKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KKysgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7CisrICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7CisrICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKKysgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOworKyAgICAgICAgfQorKworKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKKysgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKKysgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7CisrICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgICAgIH0KKysgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOworKyAgICB9CisrCisrICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCisrICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKKysKKysgICAgcmV0dXJuIDA7CisrCisrZXJyX2V4aXQ6CisrICAgIHJldHVybiAxOworK30KKysKKytpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCisreworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAorKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAorKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7CisrICAgICAgICBnb3RvIGVycl9leGl0OworKyAgICB9CisrCisrICAgIHJldHVybiAwOworKworKyBlcnJfZXhpdDoKKysgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKKysgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOworKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7CisrCisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCisreworKyAgICBwdG1fc2V0c3RhdGUgcHNzOworKworKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKKysgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOworKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOworKworKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKKysgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKKysgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrCisrLyoKKysgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KKysgKgorKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCisrICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCisrICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgorKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgorKyAqLworK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQorK3sKKysgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKKysgICAgc3NpemVfdCBuOworKyAgICBzaXplX3QgdG9fd3JpdGU7CisrCisrICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KKysgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KKysgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgeworKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7CisrICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7CisrICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7CisrICAgICAgICB9CisrCisrICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7CisrICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgeworKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgICAgICBnb3RvIGVycl9leGl0OworKyAgICAgICAgfQorKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOworKyAgICB9CisrCisrICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKKysgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgIH0KKysKKysgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAorKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOworKworKyAgICByZXR1cm4gMDsKKysKKytlcnJfZXhpdDoKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQorK3sKKysgICAgcHRtX3JlcyByZXM7CisrCisrICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKKysgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCisrICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCisrICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAorKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKKysgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCitpbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAorLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKKysrKyBiL2h3L3RwbS90cG1fdXRpbC5oCitAQCAtMjYsNCArMjYsMTEgQEAKKyAKKyBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOworIAorK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7CisrCisraW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOworKworICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCitpbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAorKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAorQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKKyAgICAgdWludDhfdCAgKmJ1ZmZlcjsKKyB9IFRQTVNpemVkQnVmZmVyOworIAorKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLworK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKKysgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOworKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7CisrCisrICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7CisrICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7CisrCisrICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKKysgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOworK30gVFBNQmxvYkJ1ZmZlcnM7CisrCisgc3RydWN0IFRQTURyaXZlck9wcyB7CisgICAgIGVudW0gVHBtVHlwZSB0eXBlOworICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YTc4M2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MTkgKzAsMCBAQAotRnJvbSA1ZTlkZDkwNjNmNTE0NDQ3ZWE0ZjU0MDQ2NzkzZjRmMDFjMjk3ZWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci1EYXRlOiBTYXQsIDMxIERlYyAyMDE2IDExOjIzOjMyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBBZGQgc3VwcG9ydCBmb3IgVk0gc3VzcGVuZC9yZXN1bWUgZm9yIFRQTSBUSVMKLQotRXh0ZW5kIHRoZSBUUE0gVElTIGNvZGUgdG8gc3VwcG9ydCBzdXNwZW5kL3Jlc3VtZS4gSW4gY2FzZSBhIGNvbW1hbmQKLWlzIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZXh0ZXJuYWwgVFBNIHdoZW4gc3VzcGVuZGluZywgd2FpdCBmb3IgdGhlIGNvbW1hbmQKLXRvIGNvbXBsZXRlIHRvIGNhdGNoIHRoZSByZXN1bHQuIEluIGNhc2UgdGhlIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuLAotcnVuIHRoZSBvbmUgZnVuY3Rpb24gdGhlIGJvdHRvbSBoYWxmIGlzIHN1cHBvc2VkIHRvIHJ1bi4gVGhpcyB0aGVuCi1tYWtlcyB0aGUgcmVzdW1lIG9wZXJhdGlvbiB3b3JrLgotCi1UaGUgcGFzc3Rocm91Z2ggYmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lIG9wZXJhdGlvbgotYW5kIGlzIHRoZXJlZm9yZSBibG9ja2VkIGZyb20gc3VzcGVuZC9yZXN1bWUgYW5kIG1pZ3JhdGlvbi4KLQotVGhlIENVU0UgVFBNJ3Mgc3VwcG9ydGVkIGNhcGFiaWxpdGllcyBhcmUgdGVzdGVkIGFuZCBpZiBzdWZmaWNpZW50Ci1jYXBhYmlsaXRpZXMgYXJlIGltcGxlbWVudGVkLCBzdXNwZW5kL3Jlc3VtZSwgc25hcHNob3R0aW5nIGFuZAotbWlncmF0aW9uIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIENVU0UgVFBNLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNi9tc2cwMDI1Mi5odG1sXQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jICAgICB8IDEzMCArKysrKysrKysrKysrKysrKysrKysrKy0tCi0gaHcvdHBtL3RwbV90aXMuYyAgICAgICAgICAgICB8IDEzNyArKysrKysrKysrKysrKysrKysrKysrKysrLQotIGh3L3RwbS90cG1fdGlzLmggICAgICAgICAgICAgfCAgIDIgKwotIGh3L3RwbS90cG1fdXRpbC5jICAgICAgICAgICAgfCAyMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGh3L3RwbS90cG1fdXRpbC5oICAgICAgICAgICAgfCAgIDcgKysKLSBpbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oIHwgIDEyICsrKwotIDYgZmlsZXMgY2hhbmdlZCwgNTAzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLWluZGV4IDQ0NzM5ZWJhZDIuLmJjODA3MmQwYmMgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLSsrKyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotQEAgLTM0LDYgKzM0LDggQEAKLSAjaW5jbHVkZSAidHBtX3Rpcy5oIgotICNpbmNsdWRlICJ0cG1fdXRpbC5oIgotICNpbmNsdWRlICJ0cG1faW9jdGwuaCIKLSsjaW5jbHVkZSAibWlncmF0aW9uL21pZ3JhdGlvbi5oIgotKyNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCi0gCi0gI2RlZmluZSBERUJVR19UUE0gMAotIAotQEAgLTQ5LDYgKzUxLDcgQEAKLSAjZGVmaW5lIFRZUEVfVFBNX0NVU0UgInRwbS1jdXNlIgotIAotIHN0YXRpYyBjb25zdCBUUE1Ecml2ZXJPcHMgdHBtX3Bhc3N0aHJvdWdoX2RyaXZlcjsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2U7Ci0gCi0gLyogZGF0YSBzdHJ1Y3R1cmVzICovCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNUGFzc3RocnVUaHJlYWRQYXJhbXMgewotQEAgLTc5LDYgKzgyLDEwIEBAIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIHsKLSAgICAgUWVtdU11dGV4IHN0YXRlX2xvY2s7Ci0gICAgIFFlbXVDb25kIGNtZF9jb21wbGV0ZTsgIC8qIHNpbmduYWxlZCBvbmNlIHRwbV9idXN5IGlzIGZhbHNlICovCi0gICAgIGJvb2wgdHBtX2J1c3k7Ci0rCi0rICAgIEVycm9yICptaWdyYXRpb25fYmxvY2tlcjsKLSsKLSsgICAgVFBNQmxvYkJ1ZmZlcnMgdHBtX2Jsb2JzOwotIH07Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSBUUE1QYXNzdGhydVN0YXRlOwotQEAgLTMwNiw2ICszMTMsMTAgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgIH0KLSAgICAgfQotKyAgICBpZiAodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcikgewotKyAgICAgICAgbWlncmF0ZV9kZWxfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgICAgIGVycm9yX2ZyZWUodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSB9Ci0gCi0gLyoKLUBAIC0zNjAsMTIgKzM3MSwxNCBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NoZWNrX2NhcHMoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotIC8qCi0gICogSW5pdGlhbGl6ZSB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0KLSAgKi8KLS1zdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3N0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcmVzdW1lKQotIHsKLSAgICAgaW50IHJjID0gMDsKLS0gICAgcHRtX2luaXQgaW5pdCA9IHsKLS0gICAgICAgIC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEUsCi0tICAgIH07Ci0rICAgIHB0bV9pbml0IGluaXQ7Ci0rICAgIGlmIChpc19yZXN1bWUpIHsKLSsgICAgICAgIGluaXQudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFOwotKyAgICB9Ci0gCi0gICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0gICAgICAgICBpZiAoaW9jdGwodHBtX3B0LT50cG1fZmQsIFBUTV9JTklULCAmaW5pdCkgPCAwKSB7Ci1AQCAtMzk0LDcgKzQwNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3N0YXJ0dXBfdHBtKFRQTUJhY2tlbmQgKnRiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fcHQtPnRwbV90aHJlYWRfcGFyYW1zKTsKLSAKLS0gICAgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQpOwotKyAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpOwotIAotICAgICByZXR1cm4gMDsKLSB9Ci1AQCAtNDY2LDYgKzQ3OSwzMiBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9yZXNldF90cG1fZXN0YWJsaXNoZWRfZmxhZyhUUE1CYWNrZW5kICp0YiwKLSAgICAgcmV0dXJuIHJjOwotIH0KLSAKLStzdGF0aWMgaW50IHRwbV9jdXNlX2dldF9zdGF0ZV9ibG9icyhUUE1CYWNrZW5kICp0YiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSsKLSsgICAgYXNzZXJ0KFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpOwotKwotKyAgICByZXR1cm4gdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnModHBtX3B0LT50cG1fZmQsIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icyk7Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIGlmICh0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgdHBtX2Jsb2JzKSkgewotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCB0cnVlKTsKLSt9Ci0rCi0gc3RhdGljIGJvb2wgdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yKFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLUBAIC00ODgsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2RlbGl2ZXJfcmVxdWVzdChUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0gCi0tICAgIC8qIFRQTSBjb25zaWRlcmVkIGJ1c3kgb25jZSBUUE0gUmVxdWVzdCBzY2hlZHVsZWQgZm9yIHByb2Nlc3NpbmcgKi8KLSsgICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSByZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHRwbV9wdC0+dHBtX2J1c3kgPSB0cnVlOwotICAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLUBAIC02MDEsNiArNjQwLDI1IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX29wZW5fc3lzZnNfY2FuY2VsKFRQTUJhY2tlbmQgKnRiKQotICAgICByZXR1cm4gZmQ7Ci0gfQotIAotK3N0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9ibG9ja19taWdyYXRpb24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgcHRtX2NhcCBjYXBzOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgY2FwcyA9IFBUTV9DQVBfR0VUX1NUQVRFQkxPQiB8IFBUTV9DQVBfU0VUX1NUQVRFQkxPQiB8Ci0rICAgICAgICAgICAgICAgUFRNX0NBUF9TVE9QOwotKyAgICAgICAgaWYgKCFUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTCh0cG1fcHQsIGNhcHMpKSB7Ci0rICAgICAgICAgICAgZXJyb3Jfc2V0ZygmdHBtX3B0LT5taWdyYXRpb25fYmxvY2tlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICJNaWdyYXRpb24gZGlzYWJsZWQ6IENVU0UgVFBNIGxhY2tzIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMiKTsKLSsgICAgICAgICAgICBtaWdyYXRlX2FkZF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgICAgZXJyb3Jfc2V0ZygmdHBtX3B0LT5taWdyYXRpb25fYmxvY2tlciwKLSsgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogUGFzc3Rocm91Z2ggVFBNIGRvZXMgbm90IHN1cHBvcnQgbWlncmF0aW9uIik7Ci0rICAgICAgICBtaWdyYXRlX2FkZF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTY0Miw3ICs3MDAsNyBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQotICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSAgICAgICAgIH0KLSAgICAgICAgIC8qIGluaXQgVFBNIGZvciBwcm9iaW5nICovCi0tICAgICAgICBpZiAodHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQpKSB7Ci0rICAgICAgICBpZiAodHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIGZhbHNlKSkgewotICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSAgICAgICAgIH0KLSAgICAgfQotQEAgLTY1OSw2ICs3MTcsNyBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIHRwbV9wYXNzdGhyb3VnaF9ibG9ja19taWdyYXRpb24odHBtX3B0KTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtNzY2LDEwICs4MjUsMTMgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2luc3RfaW5pdChPYmplY3QgKm9iaikKLSAKLSAgICAgcWVtdV9tdXRleF9pbml0KCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotICAgICBxZW11X2NvbmRfaW5pdCgmdHBtX3B0LT5jbWRfY29tcGxldGUpOwotKwotKyAgICB2bXN0YXRlX3JlZ2lzdGVyKE5VTEwsIC0xLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2luc3RfZmluYWxpemUoT2JqZWN0ICpvYmopCi0gewotKyAgICB2bXN0YXRlX3VucmVnaXN0ZXIoTlVMTCwgJnZtc3RhdGVfdHBtX2N1c2UsIG9iaik7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkKLUBAIC04MDIsNiArODY0LDYwIEBAIHN0YXRpYyBjb25zdCBjaGFyICp0cG1fcGFzc3Rocm91Z2hfY3VzZV9jcmVhdGVfZGVzYyh2b2lkKQotICAgICByZXR1cm4gIkNVU0UgVFBNIGJhY2tlbmQgZHJpdmVyIjsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX2N1c2VfcHJlX3NhdmUodm9pZCAqb3BhcXVlKQotK3sKLSsgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gb3BhcXVlOwotKyAgICBUUE1CYWNrZW5kICp0YiA9ICZ0cG1fcHQtPnBhcmVudDsKLSsKLSsgICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIC8qIHdhaXQgZm9yIFRQTSB0byBmaW5pc2ggcHJvY2Vzc2luZyAqLwotKyAgICAgaWYgKHRwbV9wdC0+dHBtX2J1c3kpIHsKLSsgICAgICAgIHFlbXVfY29uZF93YWl0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSwgJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgICB9Ci0rICAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogZ2V0IHRoZSBkZWNyeXB0ZWQgc3RhdGUgYmxvYnMgZnJvbSB0aGUgVFBNICovCi0rICAgIHRwbV9jdXNlX2dldF9zdGF0ZV9ibG9icyh0YiwgVFJVRSwgJnRwbV9wdC0+dHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uX2lkIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQotK3sKLSsgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gb3BhcXVlOwotKyAgICBUUE1CYWNrZW5kICp0YiA9ICZ0cG1fcHQtPnBhcmVudDsKLSsKLSsgICAgcmV0dXJuIHRwbV9jdXNlX3NldF9zdGF0ZV9ibG9icyh0YiwgJnRwbV9wdC0+dHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV9jdXNlID0gewotKyAgICAubmFtZSA9ICJjdXNlLXRwbSIsCi0rICAgIC52ZXJzaW9uX2lkID0gMSwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDAsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWRfb2xkID0gMCwKLSsgICAgLnByZV9zYXZlICA9IHRwbV9jdXNlX3ByZV9zYXZlLAotKyAgICAucG9zdF9sb2FkID0gdHBtX2N1c2VfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50X2ZsYWdzLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSwgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1ZCVUZGRVJfQUxMT0NfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnQuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMucGVybWFuZW50LnNpemUpLAotKwotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWxfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuc2l6ZSwgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1ZCVUZGRVJfQUxMT0NfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnZvbGF0aWwuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlX2ZsYWdzLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSwgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1ZCVUZGRVJfQUxMT0NfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGUuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMuc2F2ZXN0YXRlLnNpemUpLAotKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBUUE1Ecml2ZXJPcHMgdHBtX2N1c2VfZHJpdmVyID0gewotICAgICAudHlwZSAgICAgICAgICAgICAgICAgICAgID0gVFBNX1RZUEVfQ1VTRV9UUE0sCi0gICAgIC5vcHRzICAgICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfY21kbGluZV9vcHRzLAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdGlzLmMgYi9ody90cG0vdHBtX3Rpcy5jCi1pbmRleCAxNGQ5ZTgzZWEyLi45YjY2MGNmNzM3IDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV90aXMuYwotKysrIGIvaHcvdHBtL3RwbV90aXMuYwotQEAgLTM2OCw2ICszNjgsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfYmgodm9pZCAqb3BhcXVlKQotICAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOwotICAgICB1aW50OF90IGxvY3R5ID0gcy0+bG9jdHlfbnVtYmVyOwotIAotKyAgICB0aXMtPmJoX3NjaGVkdWxlZCA9IGZhbHNlOwotKwotICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotIAotICAgICB0cG1fdGlzX3N0c19zZXQoJnRpcy0+bG9jW2xvY3R5XSwKLUBAIC00MTUsNiArNDE3LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2NiKFRQTVN0YXRlICpzLCB1aW50OF90IGxvY3R5LAotICAgICBxZW11X211dGV4X3VubG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHFlbXVfYmhfc2NoZWR1bGUodGlzLT5iaCk7Ci0rCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gdHJ1ZTsKLSB9Ci0gCi0gLyoKLUBAIC0xMDMwLDkgKzEwMzQsMTQwIEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVzZXQoRGV2aWNlU3RhdGUgKmRldikKLSAgICAgdHBtX3Rpc19kb19zdGFydHVwX3RwbShzKTsKLSB9Ci0gCi0rCi0rLyogcGVyc2lzdGVudCBzdGF0ZSBoYW5kbGluZyAqLwotKwotK3N0YXRpYyB2b2lkIHRwbV90aXNfcHJlX3NhdmUodm9pZCAqb3BhcXVlKQotK3sKLSsgICAgVFBNU3RhdGUgKnMgPSBvcGFxdWU7Ci0rICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0rICAgIHVpbnQ4X3QgbG9jdHkgPSB0aXMtPmFjdGl2ZV9sb2N0eTsKLSsKLSsgICAgRFBSSU5URigidHBtX3Rpczogc3VzcGVuZDogbG9jdHkgPSAlZCA6IHJfb2Zmc2V0ID0gJWQsIHdfb2Zmc2V0ID0gJWRcbiIsCi0rICAgICAgICAgICAgbG9jdHksIHRpcy0+bG9jWzBdLnJfb2Zmc2V0LCB0aXMtPmxvY1swXS53X29mZnNldCk7Ci0rI2lmZGVmIERFQlVHX1RJUwotKyAgICB0cG1fdGlzX2R1bXBfc3RhdGUob3BhcXVlLCAwKTsKLSsjZW5kaWYKLSsKLSsgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogd2FpdCBmb3Igb3V0c3RhbmRpbmcgcmVxdWVzdCB0byBjb21wbGV0ZSAqLwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkgJiYKLSsgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgLyoKLSsgICAgICAgICAqIElmIHdlIGdldCBoZXJlIHdoZW4gdGhlIGJoIGlzIHNjaGVkdWxlZCBidXQgZGlkIG5vdCBydW4sCi0rICAgICAgICAgKiB3ZSB3b24ndCBnZXQgbm90aWZpZWQuLi4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKCF0aXMtPmJoX3NjaGVkdWxlZCkgewotKyAgICAgICAgICAgIC8qIGJhY2tlbmQgdGhyZWFkIHRvIG5vdGlmeSB1cyAqLwotKyAgICAgICAgICAgIHFlbXVfY29uZF93YWl0KCZzLT5jbWRfY29tcGxldGUsICZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUgPT0gVFBNX1RJU19TVEFURV9FWEVDVVRJT04pIHsKLSsgICAgICAgICAgICAvKiBib3R0b20gaGFsZiBkaWQgbm90IHJ1biAtIHJ1biBpdHMgZnVuY3Rpb24gKi8KLSsgICAgICAgICAgICBxZW11X211dGV4X3VubG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rICAgICAgICAgICAgdHBtX3Rpc19yZWNlaXZlX2JoKG9wYXF1ZSk7Ci0rICAgICAgICAgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBxZW11X211dGV4X3VubG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rCi0rICAgIC8qIGNvcHkgY3VycmVudCBhY3RpdmUgcmVhZCBvciB3cml0ZSBidWZmZXIgaW50byB0aGUgYnVmZmVyCi0rICAgICAgIHdyaXR0ZW4gdG8gZGlzayAqLwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLndfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPm9mZnNldCA9IHRpcy0+bG9jW2xvY3R5XS5yX29mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICAvKiBsZWFrIG5vdGhpbmcgKi8KLSsgICAgICAgICAgICBtZW1zZXQodGlzLT5idWYsIDB4MCwgc2l6ZW9mKHRpcy0+YnVmKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLStzdGF0aWMgaW50IHRwbV90aXNfcG9zdF9sb2FkKHZvaWQgKm9wYXF1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uX2lkIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQotK3sKLSsgICAgVFBNU3RhdGUgKnMgPSBvcGFxdWU7Ci0rICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0rCi0rICAgIHVpbnQ4X3QgbG9jdHkgPSB0aXMtPmFjdGl2ZV9sb2N0eTsKLSsKLSsgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpKSB7Ci0rICAgICAgICBzd2l0Y2ggKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSkgewotKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX1JFQ0VQVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX0NPTVBMRVRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgIHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0ID0gdGlzLT5vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiByZXN1bWUgOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV9sb2N0eSA9IHsKLSsgICAgLm5hbWUgPSAibG9jIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAuZmllbGRzICAgICAgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHN0YXRlLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihpbnRlLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihpbnRzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQ4KGFjY2VzcywgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihpZmFjZV9pZCwgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpLAotKyAgICB9Ci0rfTsKLSsKLSBzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX3RpcyA9IHsKLSAgICAgLm5hbWUgPSAidHBtIiwKLS0gICAgLnVubWlncmF0YWJsZSA9IDEsCi0rICAgIC52ZXJzaW9uX2lkID0gMSwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDAsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWRfb2xkID0gMCwKLSsgICAgLnByZV9zYXZlICA9IHRwbV90aXNfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fdGlzX3Bvc3RfbG9hZCwKLSsgICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIocy50aXMub2Zmc2V0LCBUUE1TdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX0JVRkZFUihzLnRpcy5idWYsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWN0aXZlX2xvY3R5LCBUUE1TdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQ4KHMudGlzLmFib3J0aW5nX2xvY3R5LCBUUE1TdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQ4KHMudGlzLm5leHRfbG9jdHksIFRQTVN0YXRlKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfU1RSVUNUX0FSUkFZKHMudGlzLmxvYywgVFBNU3RhdGUsIFRQTV9USVNfTlVNX0xPQ0FMSVRJRVMsIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bXN0YXRlX2xvY3R5LCBUUE1Mb2NhbGl0eSksCi0rCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotIH07Ci0gCi0gc3RhdGljIFByb3BlcnR5IHRwbV90aXNfcHJvcGVydGllc1tdID0gewotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdGlzLmggYi9ody90cG0vdHBtX3Rpcy5oCi1pbmRleCBhMWRmNDFmYTIxLi5iN2ZjMGVhMWE5IDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV90aXMuaAotKysrIGIvaHcvdHBtL3RwbV90aXMuaAotQEAgLTU0LDYgKzU0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVFBNTG9jYWxpdHkgewotIAotIHR5cGVkZWYgc3RydWN0IFRQTVRJU0VtdVN0YXRlIHsKLSAgICAgUUVNVUJIICpiaDsKLSsgICAgYm9vbCBiaF9zY2hlZHVsZWQ7IC8qIGJoIHNjaGVkdWxlZCBidXQgZGlkIG5vdCBydW4geWV0ICovCi0rCi0gICAgIHVpbnQzMl90IG9mZnNldDsKLSAgICAgdWludDhfdCBidWZbVFBNX1RJU19CVUZGRVJfTUFYXTsKLSAKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuYyBiL2h3L3RwbS90cG1fdXRpbC5jCi1pbmRleCA3YjM1NDI5NzI1Li5iNmZmNzRkOTQ2IDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmMKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5jCi1AQCAtMjIsNiArMjIsMTcgQEAKLSAjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgotICNpbmNsdWRlICJ0cG1fdXRpbC5oIgotICNpbmNsdWRlICJ0cG1faW50LmgiCi0rI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJxZW11L2Vycm9yLXJlcG9ydC5oIgotKwotKyNkZWZpbmUgREVCVUdfVFBNIDAKLSsKLSsjZGVmaW5lIERQUklOVEYoZm10LCAuLi4pIGRvIHsgXAotKyAgICBpZiAoREVCVUdfVFBNKSB7IFwKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCBmbXQsICMjIF9fVkFfQVJHU19fKTsgXAotKyAgICB9IFwKLSt9IHdoaWxlICgwKQotKwotIAotIC8qCi0gICogQSBiYXNpYyB0ZXN0IG9mIGEgVFBNIGRldmljZS4gV2UgZXhwZWN0IGEgd2VsbCBmb3JtYXR0ZWQgcmVzcG9uc2UgaGVhZGVyCi1AQCAtMTI1LDMgKzEzNiwyMTUgQEAgaW50IHRwbV91dGlsX3Rlc3RfdHBtZGV2KGludCB0cG1fZmQsIFRQTVZlcnNpb24gKnRwbV92ZXJzaW9uKQotIAotICAgICByZXR1cm4gMTsKLSB9Ci0rCi0rc3RhdGljIHZvaWQgdHBtX3NpemVkX2J1ZmZlcl9yZXNldChUUE1TaXplZEJ1ZmZlciAqdHNiKQotK3sKLSsgICAgZ19mcmVlKHRzYi0+YnVmZmVyKTsKLSsgICAgdHNiLT5idWZmZXIgPSBOVUxMOwotKyAgICB0c2ItPnNpemUgPSAwOwotK30KLSsKLSsvKgotKyAqIFRyYW5zZmVyIGEgVFBNIHN0YXRlIGJsb2IgZnJvbSB0aGUgVFBNIGludG8gYSBwcm92aWRlZCBidWZmZXIuCi0rICoKLSsgKiBAZmQ6IGZpbGUgZGVzY3JpcHRvciB0byB0YWxrIHRvIHRoZSBDVVNFIFRQTQotKyAqIEB0eXBlOiB0aGUgdHlwZSBvZiBibG9iIHRvIHRyYW5zZmVyCi0rICogQGRlY3J5cHRlZF9ibG9iOiB3aGV0aGVyIHdlIHJlcXVlc3QgdG8gcmVjZWl2ZSBkZWNyeXB0ZWQgYmxvYnMKLSsgKiBAdHNiOiB0aGUgVFBNU2l6ZUJ1ZmZlciB0byBmaWxsIHdpdGggdGhlIGJsb2IKLSsgKiBAZmxhZ3M6IHRoZSBmbGFncyB0byByZXR1cm4gdG8gdGhlIGNhbGxlcgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNU2l6ZWRCdWZmZXIgKnRzYiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmZsYWdzKQotK3sKLSsgICAgcHRtX2dldHN0YXRlIHBnczsKLSsgICAgdWludDE2X3Qgb2Zmc2V0ID0gMDsKLSsgICAgcHRtX3JlcyByZXM7Ci0rICAgIHNzaXplX3QgbjsKLSsgICAgc2l6ZV90IHRvX3JlYWQ7Ci0rCi0rICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQodHNiKTsKLSsKLSsgICAgcGdzLnUucmVxLnN0YXRlX2ZsYWdzID0gKGRlY3J5cHRlZF9ibG9iKSA/IFBUTV9TVEFURV9GTEFHX0RFQ1JZUFRFRCA6IDA7Ci0rICAgIHBncy51LnJlcS50eXBlID0gdHlwZTsKLSsgICAgcGdzLnUucmVxLm9mZnNldCA9IG9mZnNldDsKLSsKLSsgICAgaWYgKGlvY3RsKGZkLCBQVE1fR0VUX1NUQVRFQkxPQiwgJnBncykgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkNVU0UgVFBNIFBUTV9HRVRfU1RBVEVCTE9CIGlvY3RsIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rICAgIHJlcyA9IHBncy51LnJlc3AudHBtX3Jlc3VsdDsKLSsgICAgaWYgKHJlcyAhPSAwICYmIChyZXMgJiAweDgwMCkgPT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJHZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHJlcyk7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgICpmbGFncyA9IHBncy51LnJlc3Auc3RhdGVfZmxhZ3M7Ci0rCi0rICAgIHRzYi0+YnVmZmVyID0gZ19tYWxsb2MocGdzLnUucmVzcC50b3RsZW5ndGgpOwotKyAgICBtZW1jcHkodHNiLT5idWZmZXIsIHBncy51LnJlc3AuZGF0YSwgcGdzLnUucmVzcC5sZW5ndGgpOwotKyAgICB0c2ItPnNpemUgPSBwZ3MudS5yZXNwLmxlbmd0aDsKLSsKLSsgICAgLyogaWYgdGhlcmUgYXJlIGJ5dGVzIGxlZnQgdG8gZ2V0IHVzZSByZWFkKCkgaW50ZXJmYWNlICovCi0rICAgIHdoaWxlICh0c2ItPnNpemUgPCBwZ3MudS5yZXNwLnRvdGxlbmd0aCkgewotKyAgICAgICAgdG9fcmVhZCA9IHBncy51LnJlc3AudG90bGVuZ3RoIC0gdHNiLT5zaXplOwotKyAgICAgICAgaWYgKHVubGlrZWx5KHRvX3JlYWQgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fcmVhZCA9IFNTSVpFX01BWDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIG4gPSByZWFkKGZkLCAmdHNiLT5idWZmZXJbdHNiLT5zaXplXSwgdG9fcmVhZCk7Ci0rICAgICAgICBpZiAobiAhPSB0b19yZWFkKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJDb3VsZCBub3QgcmVhZCBzdGF0ZWJsb2IgKHR5cGUgJWQpIDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgICAgICB9Ci0rICAgICAgICB0c2ItPnNpemUgKz0gdG9fcmVhZDsKLSsgICAgfQotKwotKyAgICBEUFJJTlRGKCJ0cG1fdXRpbDogZ290IHN0YXRlIGJsb2IgdHlwZSAlZCwgJWQgYnl0ZXMsIGZsYWdzIDB4JTA4eCwgIgotKyAgICAgICAgICAgICJkZWNyeXB0ZWQ9JWRcbiIsIHR5cGUsIHRzYi0+c2l6ZSwgKmZsYWdzLCBkZWNyeXB0ZWRfYmxvYik7Ci0rCi0rICAgIHJldHVybiAwOwotKwotK2Vycl9leGl0OgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1BFUk1BTkVOVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudF9mbGFncykgfHwKLSsgICAgICAgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+dm9sYXRpbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfU0FWRVNUQVRFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlX2ZsYWdzKSkgewotKyAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSsKLSsgZXJyX2V4aXQ6Ci0rICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoJnRwbV9ibG9icy0+dm9sYXRpbCk7Ci0rICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoJnRwbV9ibG9icy0+cGVybWFuZW50KTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5zYXZlc3RhdGUpOwotKwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2RvX3NldF9zdGF0ZWJsb2JfaW9jdGwoaW50IGZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoKQotK3sKLSsgICAgcHRtX3NldHN0YXRlIHBzczsKLSsKLSsgICAgcHNzLnUucmVxLnN0YXRlX2ZsYWdzID0gZmxhZ3M7Ci0rICAgIHBzcy51LnJlcS50eXBlID0gdHlwZTsKLSsgICAgcHNzLnUucmVxLmxlbmd0aCA9IGxlbmd0aDsKLSsKLSsgICAgaWYgKGlvY3RsKGZkLCBQVE1fU0VUX1NUQVRFQkxPQiwgJnBzcykgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkNVU0UgVFBNIFBUTV9TRVRfU1RBVEVCTE9CIGlvY3RsIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAocHNzLnUucmVzcC50cG1fcmVzdWx0ICE9IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiU2V0dGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQgd2l0aCBhIFRQTSAiCi0rICAgICAgICAgICAgICAgICAgICAgImVycm9yIDB4JXgiLCB0eXBlLCBwc3MudS5yZXNwLnRwbV9yZXN1bHQpOwotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiB0byB0aGUgQ1VTRSBUUE0uCi0rICoKLSsgKiBAZmQ6IGZpbGUgZGVzY3JpcHRvciB0byB0YWxrIHRvIHRoZSBDVVNFIFRQTQotKyAqIEB0eXBlOiB0aGUgdHlwZSBvZiBUUE0gc3RhdGUgYmxvYiB0byB0cmFuc2ZlcgotKyAqIEB0c2I6IFRQTVNpemVCdWZmZXIgY29udGFpbmluZyB0aGUgVFBNIHN0YXRlIGJsb2IKLSsgKiBAZmxhZ3M6IEZsYWdzIGRlc2NyaWJpbmcgdGhlIChlbmNyeXB0aW9uKSBzdGF0ZSBvZiB0aGUgVFBNIHN0YXRlIGJsb2IKLSsgKi8KLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IoaW50IGZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykKLSt7Ci0rICAgIHVpbnQzMl90IG9mZnNldCA9IDA7Ci0rICAgIHNzaXplX3QgbjsKLSsgICAgc2l6ZV90IHRvX3dyaXRlOwotKwotKyAgICAvKiBpbml0aWF0ZSB0aGUgdHJhbnNmZXIgdG8gdGhlIENVU0UgVFBNICovCi0rICAgIGlmICh0cG1fdXRpbF9jdXNlX2RvX3NldF9zdGF0ZWJsb2JfaW9jdGwoZmQsIGZsYWdzLCB0eXBlLCAwKSkgewotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgLyogdXNlIHRoZSB3cml0ZSgpIGludGVyZmFjZSBmb3IgdHJhbnNmZXJyaW5nIHRoZSBzdGF0ZSBibG9iICovCi0rICAgIHdoaWxlIChvZmZzZXQgPCB0c2ItPnNpemUpIHsKLSsgICAgICAgIHRvX3dyaXRlID0gdHNiLT5zaXplIC0gb2Zmc2V0OwotKyAgICAgICAgaWYgKHVubGlrZWx5KHRvX3dyaXRlID4gU1NJWkVfTUFYKSkgewotKyAgICAgICAgICAgIHRvX3dyaXRlID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHdyaXRlKGZkLCAmdHNiLT5idWZmZXJbb2Zmc2V0XSwgdG9fd3JpdGUpOwotKyAgICAgICAgaWYgKG4gIT0gdG9fd3JpdGUpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIldyaXRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIG9mZnNldCArPSB0b193cml0ZTsKLSsgICAgfQotKwotKyAgICAvKiBpbmlkaWNhdGUgdGhhdCB0aGUgdHJhbnNmZXIgaXMgZmluaXNoZWQgKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBzZXQgdGhlIHN0YXRlIGJsb2IgdHlwZSAlZCwgJWQgYnl0ZXMsIGZsYWdzIDB4JTA4eFxuIiwKLSsgICAgICAgICAgICB0eXBlLCB0c2ItPnNpemUsIGZsYWdzKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIHB0bV9yZXMgcmVzOwotKwotKyAgICBpZiAoaW9jdGwodHBtX2ZkLCBQVE1fU1RPUCwgJnJlcykgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9wYXNzdGhyb3VnaDogQ291bGQgbm90IHN0b3AgIgotKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgQ1VTRSBUUE06ICVzICglaSkiLAotKyAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOwotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1BFUk1BTkVOVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnBlcm1hbmVudF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnZvbGF0aWxfZmxhZ3MpIHx8Ci0rICAgICAgICB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV91dGlsLmggYi9ody90cG0vdHBtX3V0aWwuaAotaW5kZXggZGY3NjI0NWU2ZS4uYzI0MDcxZDgxMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdXRpbC5oCi0rKysgYi9ody90cG0vdHBtX3V0aWwuaAotQEAgLTI2LDQgKzI2LDExIEBACi0gCi0gaW50IHRwbV91dGlsX3Rlc3RfdHBtZGV2KGludCB0cG1fZmQsIFRQTVZlcnNpb24gKnRwbV92ZXJzaW9uKTsKLSAKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKTsKLSsKLSAjZW5kaWYgLyogVFBNX1RQTV9VVElMX0ggKi8KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotaW5kZXggYjU4ZjUyZDM5Zi4uMzQwMzgyMWI5ZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmgKLSsrKyBiL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmgKLUBAIC02Miw2ICs2MiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1TaXplZEJ1ZmZlciB7Ci0gICAgIHVpbnQ4X3QgICpidWZmZXI7Ci0gfSBUUE1TaXplZEJ1ZmZlcjsKLSAKLSsvKiBibG9icyBmcm9tIHRoZSBUUE07IHBhcnQgb2YgVk0gc3RhdGUgd2hlbiBtaWdyYXRpbmcgKi8KLSt0eXBlZGVmIHN0cnVjdCBUUE1CbG9iQnVmZmVycyB7Ci0rICAgIHVpbnQzMl90IHBlcm1hbmVudF9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgcGVybWFuZW50OwotKwotKyAgICB1aW50MzJfdCB2b2xhdGlsX2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciB2b2xhdGlsOwotKwotKyAgICB1aW50MzJfdCBzYXZlc3RhdGVfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHNhdmVzdGF0ZTsKLSt9IFRQTUJsb2JCdWZmZXJzOwotKwotIHN0cnVjdCBUUE1Ecml2ZXJPcHMgewotICAgICBlbnVtIFRwbVR5cGUgdHlwZTsKLSAgICAgY29uc3QgUWVtdU9wdERlc2MgKm9wdHM7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDRiMzNlMjE4NjY0MTI2ODlmMThiN2FkNmRhZjBhNTRkOGY5NTlhNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk0N2U4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLUZyb20gMDRiMzNlMjE4NjY0MTI2ODlmMThiN2FkNmRhZjBhNTRkOGY5NTlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI4IEp1biAyMDE3IDEzOjQ0OjUyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgJ3N0cnVjdCB1Y29udGV4dCcgd2l0aCAndWNvbnRleHRfdCcgdHlwZQotCi1nbGliYyB1c2VkIHRvIGhhdmU6Ci0KLSAgIHR5cGVkZWYgc3RydWN0IHVjb250ZXh0IHsgLi4uIH0gdWNvbnRleHRfdDsKLQotZ2xpYmMgbm93IGhhczoKLQotICAgdHlwZWRlZiBzdHJ1Y3QgdWNvbnRleHRfdCB7IC4uLiB9IHVjb250ZXh0X3Q7Ci0KLShTZWUgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTcKLSBmb3IgZGV0YWlsIGFuZCByYXRpb25hbGUgZm9yIHRoZSBnbGliYyBjaGFuZ2UpCi0KLUhvd2V2ZXIsIFFFTVUgdXNlZCAic3RydWN0IHVjb250ZXh0IiBpbiBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgYQotcHJpdmF0ZSBuYW1lIGFuZCBjb21wYXRpYmlsaXR5IGNhbm5vdCBiZSBndWFyYW50ZWVkLiBTd2l0Y2ggdG8KLW9ubHkgdXNpbmcgdGhlIHN0YW5kYXJkaXplZCB0eXBlIG5hbWUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1NZXNzYWdlLWlkOiAyMDE3MDYyODIwNDQ1Mi40MTIzMC0xLXJhai5raGVtQGdtYWlsLmNvbQotQ2M6IEthbWlsIFJ5dGFyb3dza2kgPGthbWlsQG5ldGJzZC5vcmc+Ci1DYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4KLUNjOiBMYXVyZW50IFZpdmllciA8bGF1cmVudEB2aXZpZXIuZXU+Ci1DYzogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLVJldmlld2VkLWJ5OiBFcmljIEJsYWtlIDxlYmxha2VAcmVkaGF0LmNvbT4KLVtQTU06IFJld3JvdGUgY29tbWl0IG1lc3NhZ2UsIGJhc2VkIG1vc3RseSBvbiB0aGUgb25lIGZyb20KLSBOYXRoYW5pZWwgTWNDYWxsdW1dCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVJQIDIwMTcvOS82Ci0tLS0KLSBsaW51eC11c2VyL2hvc3QvYWFyY2g2NC9ob3N0ZGVwLmggfCAgMiArLQotIGxpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oICAgICB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L2kzODYvaG9zdGRlcC5oICAgIHwgIDIgKy0KLSBsaW51eC11c2VyL2hvc3QvcHBjNjQvaG9zdGRlcC5oICAgfCAgMiArLQotIGxpbnV4LXVzZXIvaG9zdC9zMzkweC9ob3N0ZGVwLmggICB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmggIHwgIDIgKy0KLSBsaW51eC11c2VyL3NpZ25hbC5jICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCi0gdGVzdHMvdGNnL3Rlc3QtaTM4Ni5jICAgICAgICAgICAgIHwgIDQgKystLQotIHVzZXItZXhlYy5jICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIDkgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvYWFyY2g2NC9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvYWFyY2g2NC9ob3N0ZGVwLmgKLWluZGV4IDY0Zjc1Y2UuLmE4ZDQxYTIgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QvYWFyY2g2NC9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgX191NjQgKnBjcmVnID0gJnVjLT51Y19tY29udGV4dC5wYzsKLSAKLSAgICAgaWYgKCpwY3JlZyA+ICh1aW50cHRyX3Qpc2FmZV9zeXNjYWxsX3N0YXJ0Ci1kaWZmIC0tZ2l0IGEvbGludXgtdXNlci9ob3N0L2FybS9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvYXJtL2hvc3RkZXAuaAotaW5kZXggNWMxYWU2MC4uOTI3NmZlNiAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oCi0rKysgYi9saW51eC11c2VyL2hvc3QvYXJtL2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmFybV9wYzsKLSAKLSAgICAgaWYgKCpwY3JlZyA+ICh1aW50cHRyX3Qpc2FmZV9zeXNjYWxsX3N0YXJ0Ci1kaWZmIC0tZ2l0IGEvbGludXgtdXNlci9ob3N0L2kzODYvaG9zdGRlcC5oIGIvbGludXgtdXNlci9ob3N0L2kzODYvaG9zdGRlcC5oCi1pbmRleCBkODM0YmQ4Li4wNzNiZTc0IDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L2kzODYvaG9zdGRlcC5oCi0rKysgYi9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmgKLUBAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBjaGFyIHNhZmVfc3lzY2FsbF9lbmRbXTsKLSAvKiBBZGp1c3QgdGhlIHNpZ25hbCBjb250ZXh0IHRvIHJld2luZCBvdXQgb2Ygc2FmZS1zeXNjYWxsIGlmIHdlJ3JlIGluIGl0ICovCi0gc3RhdGljIGlubGluZSB2b2lkIHJld2luZF9pZl9pbl9zYWZlX3N5c2NhbGwodm9pZCAqcHVjKQotIHsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIGdyZWdfdCAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19FSVBdOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvcHBjNjQvaG9zdGRlcC5oIGIvbGludXgtdXNlci9ob3N0L3BwYzY0L2hvc3RkZXAuaAotaW5kZXggMGIwZjVmNy4uOTg5NzlhZCAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmgKLUBAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBjaGFyIHNhZmVfc3lzY2FsbF9lbmRbXTsKLSAvKiBBZGp1c3QgdGhlIHNpZ25hbCBjb250ZXh0IHRvIHJld2luZCBvdXQgb2Ygc2FmZS1zeXNjYWxsIGlmIHdlJ3JlIGluIGl0ICovCi0gc3RhdGljIGlubGluZSB2b2lkIHJld2luZF9pZl9pbl9zYWZlX3N5c2NhbGwodm9pZCAqcHVjKQotIHsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVuc2lnbmVkIGxvbmcgKnBjcmVnID0gJnVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0gCi0gICAgIGlmICgqcGNyZWcgPiAodWludHB0cl90KXNhZmVfc3lzY2FsbF9zdGFydAotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC9zMzkweC9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvczM5MHgvaG9zdGRlcC5oCi1pbmRleCA2ZjlkYTljLi40ZjAxNzFmIDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LnBzdy5hZGRyOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QveDg2XzY0L2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC94ODZfNjQvaG9zdGRlcC5oCi1pbmRleCAzYjQyNTk2Li5hNGZlZmI1IDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC94ODZfNjQvaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBncmVnX3QgKnBjcmVnID0gJnVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUklQXTsKLSAKLSAgICAgaWYgKCpwY3JlZyA+ICh1aW50cHRyX3Qpc2FmZV9zeXNjYWxsX3N0YXJ0Ci1kaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zaWduYWwuYyBiL2xpbnV4LXVzZXIvc2lnbmFsLmMKLWluZGV4IGQ2OGJkMjYuLmNjMGMzZmMgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL3NpZ25hbC5jCi0rKysgYi9saW51eC11c2VyL3NpZ25hbC5jCi1AQCAtMzM0Niw3ICszMzQ2LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfcnRfZnJhbWUoaW50IHNpZywgc3RydWN0IHRhcmdldF9zaWdhY3Rpb24gKmthLAotICAgICAqCi0gICAgICogICBhMCA9IHNpZ25hbCBudW1iZXIKLSAgICAgKiAgIGExID0gcG9pbnRlciB0byBzaWdpbmZvX3QKLS0gICAgKiAgIGEyID0gcG9pbnRlciB0byBzdHJ1Y3QgdWNvbnRleHQKLSsgICAgKiAgIGEyID0gcG9pbnRlciB0byB1Y29udGV4dF90Ci0gICAgICoKLSAgICAgKiAkMjUgYW5kIFBDIHBvaW50IHRvIHRoZSBzaWduYWwgaGFuZGxlciwgJDI5IHBvaW50cyB0byB0aGUKLSAgICAgKiBzdHJ1Y3Qgc2lnZnJhbWUuCi1AQCAtMzc2NCw3ICszNzY0LDcgQEAgc3RydWN0IHRhcmdldF9zaWduYWxfZnJhbWUgewotIAotIHN0cnVjdCBydF9zaWduYWxfZnJhbWUgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgICB1aW50MzJfdCB0cmFtcFsyXTsKLSB9OwotIAotQEAgLTM5ODAsNyArMzk4MCw3IEBAIHN0cnVjdCBydF9zaWduYWxfZnJhbWUgewotICAgICBzaWdpbmZvX3QgKnBpbmZvOwotICAgICB2b2lkICpwdWM7Ci0gICAgIHNpZ2luZm9fdCBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rICAgIHVjb250ZXh0X3QgdWM7Ci0gICAgIHVpbnQxNl90IHJldGNvZGVbNF07ICAgICAgLyogVHJhbXBvbGluZSBjb2RlLiAqLwotIH07Ci0gCi1AQCAtNDUxNSw3ICs0NTE1LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfcnRfZnJhbWUoaW50IHNpZywgc3RydWN0IHRhcmdldF9zaWdhY3Rpb24gKmthLAotICAgICAgICAgdHN3YXBfc2lnaW5mbygmZnJhbWUtPmluZm8sIGluZm8pOwotICAgICB9Ci0gCi0tICAgIC8qZXJyIHw9IF9fY2xlYXJfdXNlcigmZnJhbWUtPnVjLCBvZmZzZXRvZihzdHJ1Y3QgdWNvbnRleHQsIHVjX21jb250ZXh0KSk7Ki8KLSsgICAgLyplcnIgfD0gX19jbGVhcl91c2VyKCZmcmFtZS0+dWMsIG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0KSk7Ki8KLSAgICAgX19wdXRfdXNlcigwLCAmZnJhbWUtPnVjLnR1Y19mbGFncyk7Ci0gICAgIF9fcHV0X3VzZXIoMCwgJmZyYW1lLT51Yy50dWNfbGluayk7Ci0gICAgIF9fcHV0X3VzZXIodGFyZ2V0X3NpZ2FsdHN0YWNrX3VzZWQuc3Nfc3AsCi1AQCAtNTAwNyw3ICs1MDA3LDcgQEAgZW51bSB7Ci0gCi0gc3RydWN0IHRhcmdldF91Y29udGV4dCB7Ci0gICAgIHRhcmdldF91bG9uZyB0dWNfZmxhZ3M7Ci0tICAgIHRhcmdldF91bG9uZyB0dWNfbGluazsgICAgLyogc3RydWN0IHVjb250ZXh0IF9fdXNlciAqICovCi0rICAgIHRhcmdldF91bG9uZyB0dWNfbGluazsgICAgLyogdWNvbnRleHRfdCBfX3VzZXIgKiAqLwotICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHR1Y19zdGFjazsKLSAjaWYgIWRlZmluZWQoVEFSR0VUX1BQQzY0KQotICAgICBpbnQzMl90IHR1Y19wYWRbN107Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGNnL3Rlc3QtaTM4Ni5jIGIvdGVzdHMvdGNnL3Rlc3QtaTM4Ni5jCi1pbmRleCAwZjdiOTQzLi45NTk5MjA0IDEwMDY0NAotLS0tIGEvdGVzdHMvdGNnL3Rlc3QtaTM4Ni5jCi0rKysgYi90ZXN0cy90Y2cvdGVzdC1pMzg2LmMKLUBAIC0xNzIwLDcgKzE3MjAsNyBAQCBpbnQgdGFiWzJdOwotIAotIHZvaWQgc2lnX2hhbmRsZXIoaW50IHNpZywgc2lnaW5mb190ICppbmZvLCB2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAKLSAgICAgcHJpbnRmKCJzaV9zaWdubz0lZCBzaV9lcnJubz0lZCBzaV9jb2RlPSVkIiwKLSAgICAgICAgICAgIGluZm8tPnNpX3NpZ25vLCBpbmZvLT5zaV9lcnJubywgaW5mby0+c2lfY29kZSk7Ci1AQCAtMTkxMiw3ICsxOTEyLDcgQEAgdm9pZCB0ZXN0X2V4Y2VwdGlvbnModm9pZCkKLSAvKiBzcGVjaWZpYyBwcmVjaXNlIHNpbmdsZSBzdGVwIHRlc3QgKi8KLSB2b2lkIHNpZ190cmFwX2hhbmRsZXIoaW50IHNpZywgc2lnaW5mb190ICppbmZvLCB2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgcHJpbnRmKCJFSVA9IiBGTVRMWCAiXG4iLCAobG9uZyl1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX0VJUF0pOwotIH0KLSAKLWRpZmYgLS1naXQgYS91c2VyLWV4ZWMuYyBiL3VzZXItZXhlYy5jCi1pbmRleCBhOGY5NWZhLi4yYTk3NWVhIDEwMDY0NAotLS0tIGEvdXNlci1leGVjLmMKLSsrKyBiL3VzZXItZXhlYy5jCi1AQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAjZWxpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQotICAgICBzdHJ1Y3Qgc2lnY29udGV4dCAqdWMgPSBwdWM7Ci0gI2Vsc2UKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2VuZGlmCi0gICAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0gICAgIGludCB0cmFwbm87Ci1AQCAtMjIyLDcgKzIyMiw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAjZWxpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQotICAgICBzdHJ1Y3Qgc2lnY29udGV4dCAqdWMgPSBwdWM7Ci0gI2Vsc2UKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2VuZGlmCi0gCi0gICAgIHBjID0gUENfc2lnKHVjKTsKLUBAIC0yODksNyArMjg5LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLSAgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2Vsc2UKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2VuZGlmCi0gICAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0gICAgIGludCBpc193cml0ZTsKLUBAIC0zMTYsNyArMzE2LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKLSB7Ci0gICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdWludDMyX3QgKnBjID0gdWMtPnVjX21jb250ZXh0LnNjX3BjOwotICAgICB1aW50MzJfdCBpbnNuID0gKnBjOwotICAgICBpbnQgaXNfd3JpdGUgPSAwOwotQEAgLTQxNCw3ICs0MTQsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gI2lmIGRlZmluZWQoX19OZXRCU0RfXykKLSAgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2Vsc2UKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gI2VuZGlmCi0gICAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0gICAgIGludCBpc193cml0ZTsKLUBAIC00NDEsNyArNDQxLDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywgdm9pZCAqcHVjKQotIHsKLSAgICAgc2lnaW5mb190ICppbmZvID0gcGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1aW50cHRyX3QgcGMgPSB1Yy0+dWNfbWNvbnRleHQucGM7Ci0gICAgIHVpbnQzMl90IGluc24gPSAqKHVpbnQzMl90ICopcGM7Ci0gICAgIGJvb2wgaXNfd3JpdGU7Ci1AQCAtNDc0LDcgKzQ3NCw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywgdm9pZCAqcHVjKQotIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywgdm9pZCAqcHVjKQotIHsKLSAgICAgc2lnaW5mb190ICppbmZvID0gcGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1bnNpZ25lZCBsb25nIGlwOwotICAgICBpbnQgaXNfd3JpdGUgPSAwOwotIAotQEAgLTUwNSw3ICs1MDUsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0gICAgIHVpbnQxNl90ICpwaW5zbjsKLSAgICAgaW50IGlzX3dyaXRlID0gMDsKLUBAIC01NTgsNyArNTU4LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHVjKQotIHsKLSAgICAgc2lnaW5mb190ICppbmZvID0gcGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBncmVnX3QgcGMgPSB1Yy0+dWNfbWNvbnRleHQucGM7Ci0gICAgIGludCBpc193cml0ZTsKLSAKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTA4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTYtOTkwOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmN2ExYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTA4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA3MTM5Y2NiYzkwNzQ0MTMzN2I0YjU5Y2RlMmM1YjVhNTRjYjViMmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0KLXZpcnRpby1ncHU6IGZpeCBpbmZvcm1hdGlvbiBsZWFrIGluIGNhcHNldCBnZXQgZGlzcGF0Y2gKLQotSW4gdmlyZ2xfY21kX2dldF9jYXBzZXQgZnVuY3Rpb24sIGl0IHVzZXMgZ19tYWxsb2MgdG8gYWxsb2NhdGUKLWEgcmVzcG9uc2Ugc3RydWN0IHRvIHRoZSBndWVzdC4gQXMgdGhlICdyZXNwJ3N0cnVjdCBoYXNuJ3QgYmVlbiBmdWxsCi1pbml0aWFsaXplZCBpdCB3aWxsIGxlYWQgdGhlICdyZXNwLT5wYWRkaW5nJyBmaWVsZCB0byB0aGUgZ3Vlc3QuCi1Vc2UgZ19tYWxsb2MwIHRvIGF2b2lkIHRoaXMuCi0KLVNpZ25lZC1vZmYtYnk6IExpIFFpYW5nIDxsaXFpYW5nNi1zQDM2MC5jbj4KLVJldmlld2VkLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KLU1lc3NhZ2UtaWQ6IDU4MTg4Y2FlLjRhNmVjMjBhLjNkMmQxLmFmZjJAbXguZ29vZ2xlLmNvbQotCi1bU29uYTogYmFja3BvcnRlZCBmcm9tIG1hc3RlciB0byB2Mi44LjAgYW5kIHJlc29sdmVkIGNvbmZsaWN0XQotCi1SZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6Ci1odHRwOi8vZ2l0LnFlbXUtcHJvamVjdC5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD04NWQ5ZDA0NDQ3MWY5M2M0OGM1YzM5NmY3ZTIxN2I0ZWYxMmY2OWY4Ci0KLUNWRTogQ1ZFLTIwMTYtOTkwOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUtM2QuYyBiL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS0zZC5jCi1pbmRleCAyM2YzOWRlLi5kOThiMTQwIDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMKLSsrKyBiL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS0zZC5jCi1AQCAtMzcxLDcgKzM3MSw3IEBAIHN0YXRpYyB2b2lkIHZpcmdsX2NtZF9nZXRfY2Fwc2V0KFZpcnRJT0dQVSAqZywKLSAKLSAgICAgdmlyZ2xfcmVuZGVyZXJfZ2V0X2NhcF9zZXQoZ2MuY2Fwc2V0X2lkLCAmbWF4X3ZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heF9zaXplKTsKLS0gICAgcmVzcCA9IGdfbWFsbG9jKHNpemVvZigqcmVzcCkgKyBtYXhfc2l6ZSk7Ci0rICAgIHJlc3AgPSBnX21hbGxvYzAoc2l6ZW9mKCpyZXNwKSArIG1heF9zaXplKTsKLSAKLSAgICAgcmVzcC0+aGRyLnR5cGUgPSBWSVJUSU9fR1BVX1JFU1BfT0tfQ0FQU0VUOwotICAgICB2aXJnbF9yZW5kZXJlcl9maWxsX2NhcHMoZ2MuY2Fwc2V0X2lkLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTYtOTkxMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwOWZmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBiOGUyMzkyNmM1NjhmMmU5NjNhZjM5MDI4YjcxYzQ3MmUzMDIzNzkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgUWlhbmcgPGxpcTNlYUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI4IE5vdiAyMDE2IDIxOjI5OjI1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZpcnRpby1ncHU6IGNhbGwgY2xlYW51cCBtYXBwaW5nIGZ1bmN0aW9uIGluIHJlc291cmNlIGRlc3Ryb3kKLQotSWYgdGhlIGd1ZXN0IGRlc3Ryb3kgdGhlIHJlc291cmNlIGJlZm9yZSBkZXRhY2ggYmFua2luZywgdGhlICdpb3YnCi1hbmQgJ2FkZHJzJyBmaWVsZCBpbiByZXNvdXJjZSBpcyBub3QgZnJlZWQgdGh1cyBsZWFkaW5nIG1lbW9yeQotbGVhayBpc3N1ZS4gVGhpcyBwYXRjaCBhdm9pZCB0aGlzLgotCi1DVkU6IENWRS0yMDE2LTk5MTIKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTGkgUWlhbmcgPGxpcTNlYUBnbWFpbC5jb20+Ci1SZXZpZXdlZC1ieTogTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+Ci1NZXNzYWdlLWlkOiAxNDgwMzg2NTY1LTEwMDc3LTEtZ2l0LXNlbmQtZW1haWwtbGlxM2VhQGdtYWlsLmNvbQotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIGh3L2Rpc3BsYXkvdmlydGlvLWdwdS5jIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUuYyBiL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS5jCi1pbmRleCBlZDJiNmQzLi42YTI2MjU4IDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMKLSsrKyBiL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS5jCi1AQCAtMjgsNiArMjgsOCBAQAotIHN0YXRpYyBzdHJ1Y3QgdmlydGlvX2dwdV9zaW1wbGVfcmVzb3VyY2UqCi0gdmlydGlvX2dwdV9maW5kX3Jlc291cmNlKFZpcnRJT0dQVSAqZywgdWludDMyX3QgcmVzb3VyY2VfaWQpOwotIAotK3N0YXRpYyB2b2lkIHZpcnRpb19ncHVfY2xlYW51cF9tYXBwaW5nKHN0cnVjdCB2aXJ0aW9fZ3B1X3NpbXBsZV9yZXNvdXJjZSAqcmVzKTsKLSsKLSAjaWZkZWYgQ09ORklHX1ZJUkdMCi0gI2luY2x1ZGUgPHZpcmdscmVuZGVyZXIuaD4KLSAjZGVmaW5lIFZJUkdMKF9nLCBfdmlyZ2wsIF9zaW1wbGUsIC4uLikgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMzY0LDYgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfcmVzb3VyY2VfZGVzdHJveShWaXJ0SU9HUFUgKmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2aXJ0aW9fZ3B1X3NpbXBsZV9yZXNvdXJjZSAqcmVzKQotIHsKLSAgICAgcGl4bWFuX2ltYWdlX3VucmVmKHJlcy0+aW1hZ2UpOwotKyAgICB2aXJ0aW9fZ3B1X2NsZWFudXBfbWFwcGluZyhyZXMpOwotICAgICBRVEFJTFFfUkVNT1ZFKCZnLT5yZXNsaXN0LCByZXMsIG5leHQpOwotICAgICBnLT5ob3N0bWVtIC09IHJlcy0+aG9zdG1lbTsKLSAgICAgZ19mcmVlKHJlcyk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjcyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UwYjFlZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjcyLnBhdGNoCkBAIC0wLDAgKzEsNTA0IEBACitGcm9tIDNkOTBjNjI1NDg2MzY5M2E2YjEzZDkxOGQyYjg2ODJlMDhiYmM2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTQ6Mjk6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gdmdhOiBzdG9wIHBhc3NpbmcgcG9pbnRlcnMgdG8gdmdhX2RyYXdfbGluZSogZnVuY3Rpb25zCisKK0luc3RlYWQgcGFzcyBhcm91bmQgdGhlIGFkZHJlc3MgKGFrYSBvZmZzZXQgaW50byB2Z2EgbWVtb3J5KS4KK0FkZCB2Z2FfcmVhZF8qIGhlbHBlciBmdW5jdGlvbnMgd2hpY2ggYXBwbHkgdmJlX3NpemVfbWFzayB0bwordGhlIGFkZHJlc3MsIHRvIG1ha2Ugc3VyZSB0aGUgYWRkcmVzcyBzdGF5cyB3aXRoaW4gdGhlIHZhbGlkCityYW5nZSwgc2ltaWxhciB0byB0aGUgY2lycnVzIGJsaXR0ZXIgZml4ZXMgKGNvbW1pdHMgZmZhZjg1Nzc3OAorYW5kIDAyNmFlZmZjYjQpLgorCitJbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuICBxZW11IGNyYXNoZXMgd2l0aAorYSBzZWdmYXVsdCwgd2hlbiBoaXR0aW5nIHRoZSBndWFyZCBwYWdlIGFmdGVyIHZnYSBtZW1vcnkKK2FsbG9jYXRpb24sIHdoaWxlIHJlYWRpbmcgdmdhIG1lbW9yeSBmb3IgZGlzcGxheSB1cGRhdGVzLgorCitGaXhlczogQ1ZFLTIwMTctMTM2NzIKK0NjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgorUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CitNZXNzYWdlLWlkOiAyMDE3MDgyODEyMjkwNi4xODk5My0xLWtyYXhlbEByZWRoYXQuY29tCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPTNkOTBjNjI1NDg2MzY5M2E2YjEzZDkxOGQyYjg2ODJlMDhiYmM2ODFdCisKK0NWRTogQ1ZFLTIwMTctMTM2NzIKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvZGlzcGxheS92Z2EtaGVscGVycy5oIHwgMjAyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgaHcvZGlzcGxheS92Z2EuYyAgICAgICAgIHwgICA1ICstCisgaHcvZGlzcGxheS92Z2FfaW50LmggICAgIHwgICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaCBiL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAoraW5kZXggOTRmNmRlMi4uNWE3NTJiMyAxMDA2NDQKKy0tLSBhL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAorKysrIGIvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCitAQCAtOTUsMjAgKzk1LDQ2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dseXBoOSh1aW50OF90ICpkLCBpbnQgbGluZXNpemUsCisgICAgIH0gd2hpbGUgKC0taCk7CisgfQorIAorK3N0YXRpYyBpbmxpbmUgdWludDhfdCB2Z2FfcmVhZF9ieXRlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCisreworKyAgICByZXR1cm4gdmdhLT52cmFtX3B0clthZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrXTsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50MTZfdCB2Z2FfcmVhZF93b3JkX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjE7CisrICAgIHVpbnQxNl90ICpwdHIgPSAodWludDE2X3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7CisrICAgIHJldHVybiBsZHV3X2xlX3AocHRyKTsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50MTZfdCB2Z2FfcmVhZF93b3JkX2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjE7CisrICAgIHVpbnQxNl90ICpwdHIgPSAodWludDE2X3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7CisrICAgIHJldHVybiBsZHV3X2JlX3AocHRyKTsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50MzJfdCB2Z2FfcmVhZF9kd29yZF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQorK3sKKysgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4zOworKyAgICB1aW50MzJfdCAqcHRyID0gKHVpbnQzMl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOworKyAgICByZXR1cm4gbGRsX2xlX3AocHRyKTsKKyt9CisrCisgLyoKKyAgKiA0IGNvbG9yIG1vZGUKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgKnBhbGV0dGUsIGRhdGEsIHY7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKy0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKyAgICAgd2lkdGggPj49IDM7CisgICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKy0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07CisrICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKKyAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKKyAgICAgICAgIHYgPSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAwKV07CisgICAgICAgICB2IHw9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDIpXSA8PCAyOworQEAgLTEyNCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlWyh2ID4+IDQpICYgMHhmXTsKKyAgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdOworICAgICAgICAgZCArPSAzMjsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKK0BAIC0xMzQsMTcgKzE2MCwxNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgLyoKKyAgKiA0IGNvbG9yIG1vZGUsIGR1cDIgaG9yaXpvbnRhbAorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90IHBsYW5lX21hc2ssICpwYWxldHRlLCBkYXRhLCB2OworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CistICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisgICAgIHdpZHRoID4+PSAzOworICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CistICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOworKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7CisgICAgICAgICB2ID0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMCldOworICAgICAgICAgdiB8PSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAyKV0gPDwgMjsKK0BAIC0xNjAsMjQgKzE4NiwyNCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgICAgICAgIFBVVF9QSVhFTDIoZCwgNiwgcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl0pOworICAgICAgICAgUFVUX1BJWEVMMihkLCA3LCBwYWxldHRlWyh2ID4+IDApICYgMHhmXSk7CisgICAgICAgICBkICs9IDY0OworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICB9CisgfQorIAorIC8qCisgICogMTYgY29sb3IgbW9kZQorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCBkYXRhLCB2LCAqcGFsZXR0ZTsKKyAgICAgaW50IHg7CisgCistICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOworLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7CisrICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKKysgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOworICAgICAgICAgdiA9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDApXTsKKyAgICAgICAgIHYgfD0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMSldIDw8IDE7CitAQCAtMTkyLDI0ICsyMTgsMjQgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl07CisgICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlWyh2ID4+IDApICYgMHhmXTsKKyAgICAgICAgIGQgKz0gMzI7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgIH0KKyB9CisgCisgLyoKKyAgKiAxNiBjb2xvciBtb2RlLCBkdXAyIGhvcml6b250YWwKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCBkYXRhLCB2LCAqcGFsZXR0ZTsKKyAgICAgaW50IHg7CisgCistICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOworLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7CisrICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKKysgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOworICAgICAgICAgdiA9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDApXTsKKyAgICAgICAgIHYgfD0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMSldIDw8IDE7CitAQCAtMjI0LDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAgICAgICAgUFVUX1BJWEVMMihkLCA2LCBwYWxldHRlWyh2ID4+IDQpICYgMHhmXSk7CisgICAgICAgICBQVVRfUElYRUwyKGQsIDcsIHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdKTsKKyAgICAgICAgIGQgKz0gNjQ7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgIH0KKyB9CisgCitAQCAtMjMzLDIxICsyNTksMjEgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICoKKyAgKiBYWFg6IGFkZCBwbGFuZV9tYXNrIHN1cHBvcnQgKG5ldmVyIHVzZWQgaW4gc3RhbmRhcmQgVkdBIG1vZGVzKQorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90ICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKyAgICAgd2lkdGggPj49IDM7CisgICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKy0gICAgICAgIFBVVF9QSVhFTDIoZCwgMCwgcGFsZXR0ZVtzWzBdXSk7CistICAgICAgICBQVVRfUElYRUwyKGQsIDEsIHBhbGV0dGVbc1sxXV0pOworLSAgICAgICAgUFVUX1BJWEVMMihkLCAyLCBwYWxldHRlW3NbMl1dKTsKKy0gICAgICAgIFBVVF9QSVhFTDIoZCwgMywgcGFsZXR0ZVtzWzNdXSk7CisrICAgICAgICBQVVRfUElYRUwyKGQsIDAsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKV0pOworKyAgICAgICAgUFVUX1BJWEVMMihkLCAxLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSldKTsKKysgICAgICAgIFBVVF9QSVhFTDIoZCwgMiwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpXSk7CisrICAgICAgICBQVVRfUElYRUwyKGQsIDMsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKV0pOworICAgICAgICAgZCArPSAzMjsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTYsNjMgKzI4Miw2MyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgKgorICAqIFhYWDogYWRkIHBsYW5lX21hc2sgc3VwcG9ydCAobmV2ZXIgdXNlZCBpbiBzdGFuZGFyZCBWR0EgbW9kZXMpCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTgoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOChWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90ICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKyAgICAgd2lkdGggPj49IDM7CisgICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKy0gICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHBhbGV0dGVbc1swXV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbMV0gPSBwYWxldHRlW3NbMV1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzJdID0gcGFsZXR0ZVtzWzJdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVszXSA9IHBhbGV0dGVbc1szXV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbNF0gPSBwYWxldHRlW3NbNF1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzVdID0gcGFsZXR0ZVtzWzVdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbc1s2XV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlW3NbN11dOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVsxXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbMl0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMildOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzNdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVs0XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA0KV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbNV0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNSldOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDYpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA3KV07CisgICAgICAgICBkICs9IDMyOworLSAgICAgICAgcyArPSA4OworKyAgICAgICAgYWRkciArPSA4OworICAgICB9CisgfQorIAorIC8qCisgICogMTUgYml0IGNvbG9yCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19sZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDcpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAyKSAmIDB4Zjg7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19iZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9iZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDcpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAyKSAmIDB4Zjg7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CitAQCAtMzIwLDM4ICszNDYsMzggQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDE2IGJpdCBjb2xvcgorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgdiA9IGxkdXdfbGVfcCgodm9pZCAqKXMpOworKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfbGUodmdhLCBhZGRyKTsKKyAgICAgICAgIHIgPSAodiA+PiA4KSAmIDB4Zjg7CisgICAgICAgICBnID0gKHYgPj4gMykgJiAweGZjOworICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKKyAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOworLSAgICAgICAgcyArPSAyOworKyAgICAgICAgYWRkciArPSAyOworICAgICAgICAgZCArPSA0OworICAgICB9IHdoaWxlICgtLXcgIT0gMCk7CisgfQorIAorLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgdiA9IGxkdXdfYmVfcCgodm9pZCAqKXMpOworKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfYmUodmdhLCBhZGRyKTsKKyAgICAgICAgIHIgPSAodiA+PiA4KSAmIDB4Zjg7CisgICAgICAgICBnID0gKHYgPj4gMykgJiAweGZjOworICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKKyAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOworLSAgICAgICAgcyArPSAyOworKyAgICAgICAgYWRkciArPSAyOworICAgICAgICAgZCArPSA0OworICAgICB9IHdoaWxlICgtLXcgIT0gMCk7CisgfQorQEAgLTM1OSwzNiArMzg1LDM2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgLyoKKyAgKiAyNCBiaXQgY29sb3IKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIGludCB3OworICAgICB1aW50MzJfdCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIGIgPSBzWzBdOworLSAgICAgICAgZyA9IHNbMV07CistICAgICAgICByID0gc1syXTsKKysgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOworKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKKyAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOworLSAgICAgICAgcyArPSAzOworKyAgICAgICAgYWRkciArPSAzOworICAgICAgICAgZCArPSA0OworICAgICB9IHdoaWxlICgtLXcgIT0gMCk7CisgfQorIAorLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgciA9IHNbMF07CistICAgICAgICBnID0gc1sxXTsKKy0gICAgICAgIGIgPSBzWzJdOworKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDM7CisrICAgICAgICBhZGRyICs9IDM7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CitAQCAtMzk2LDQ0ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDMyIGJpdCBjb2xvcgorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKy0jaWZuZGVmIEhPU1RfV09SRFNfQklHRU5ESUFOCistICAgIG1lbWNweShkLCBzLCB3aWR0aCAqIDQpOworLSNlbHNlCisgICAgIGludCB3OworICAgICB1aW50MzJfdCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIGIgPSBzWzBdOworLSAgICAgICAgZyA9IHNbMV07CistICAgICAgICByID0gc1syXTsKKysgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOworKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKKyAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICAgICAgZCArPSA0OworICAgICB9IHdoaWxlICgtLXcgIT0gMCk7CistI2VuZGlmCisgfQorIAorLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKy0jaWZkZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4KKy0gICAgbWVtY3B5KGQsIHMsIHdpZHRoICogNCk7CistI2Vsc2UKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgciA9IHNbMV07CistICAgICAgICBnID0gc1syXTsKKy0gICAgICAgIGIgPSBzWzNdOworKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKKysgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKy0jZW5kaWYKKyB9CitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKK2luZGV4IGFkN2E0NjUuLjZmYzhjODcgMTAwNjQ0CistLS0gYS9ody9kaXNwbGF5L3ZnYS5jCisrKysgYi9ody9kaXNwbGF5L3ZnYS5jCitAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCB2Z2FfbWVtX3dyaXRlYihWR0FDb21tb25TdGF0ZSAqcywgaHdhZGRyIGFkZHIsIHVpbnQzMl90IHZhbCkKKyB9CisgCisgdHlwZWRlZiB2b2lkIHZnYV9kcmF3X2xpbmVfZnVuYyhWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3JjYWRkciwgaW50IHdpZHRoKTsKKyAKKyAjaW5jbHVkZSAidmdhLWhlbHBlcnMuaCIKKyAKK0BAIC0xNjY2LDcgKzE2NjYsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19ncmFwaGljKFZHQUNvbW1vblN0YXRlICpzLCBpbnQgZnVsbF91cGRhdGUpCisgICAgICAgICAgICAgaWYgKHlfc3RhcnQgPCAwKQorICAgICAgICAgICAgICAgICB5X3N0YXJ0ID0geTsKKyAgICAgICAgICAgICBpZiAoIShpc19idWZmZXJfc2hhcmVkKHN1cmZhY2UpKSkgeworLSAgICAgICAgICAgICAgICB2Z2FfZHJhd19saW5lKHMsIGQsIHMtPnZyYW1fcHRyICsgYWRkciwgd2lkdGgpOworKyAgICAgICAgICAgICAgICB2Z2FfZHJhd19saW5lKHMsIGQsIGFkZHIsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgaWYgKHMtPmN1cnNvcl9kcmF3X2xpbmUpCisgICAgICAgICAgICAgICAgICAgICBzLT5jdXJzb3JfZHJhd19saW5lKHMsIGQsIHkpOworICAgICAgICAgICAgIH0KK0BAIC0yMTcwLDYgKzIxNzAsNyBAQCB2b2lkIHZnYV9jb21tb25faW5pdChWR0FDb21tb25TdGF0ZSAqcywgT2JqZWN0ICpvYmosIGJvb2wgZ2xvYmFsX3Ztc3RhdGUpCisgICAgIGlmICghcy0+dmJlX3NpemUpIHsKKyAgICAgICAgIHMtPnZiZV9zaXplID0gcy0+dnJhbV9zaXplOworICAgICB9CisrICAgIHMtPnZiZV9zaXplX21hc2sgPSBzLT52YmVfc2l6ZSAtIDE7CisgCisgICAgIHMtPmlzX3ZiZV92bXN0YXRlID0gMTsKKyAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X3JhbV9ub21pZ3JhdGUoJnMtPnZyYW0sIG9iaiwgInZnYS52cmFtIiwgcy0+dnJhbV9zaXplLAorZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhX2ludC5oIGIvaHcvZGlzcGxheS92Z2FfaW50LmgKK2luZGV4IGRkNmM5NTguLmFkMzRhMWYgMTAwNjQ0CistLS0gYS9ody9kaXNwbGF5L3ZnYV9pbnQuaAorKysrIGIvaHcvZGlzcGxheS92Z2FfaW50LmgKK0BAIC05NCw2ICs5NCw3IEBAIHR5cGVkZWYgc3RydWN0IFZHQUNvbW1vblN0YXRlIHsKKyAgICAgdWludDMyX3QgdnJhbV9zaXplOworICAgICB1aW50MzJfdCB2cmFtX3NpemVfbWI7IC8qIHByb3BlcnR5ICovCisgICAgIHVpbnQzMl90IHZiZV9zaXplOworKyAgICB1aW50MzJfdCB2YmVfc2l6ZV9tYXNrOworICAgICB1aW50MzJfdCBsYXRjaDsKKyAgICAgYm9vbCBoYXNfY2hhaW40X2FsaWFzOworICAgICBNZW1vcnlSZWdpb24gY2hhaW40X2FsaWFzOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMDY5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTQ6MzM6MDcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gdmdhOiBmaXggZGlzcGxheSB1cGRhdGUgcmVnaW9uIGNhbGN1bGF0aW9uIChzcGxpdCBzY3JlZW4pCisKK3ZnYSBkaXNwbGF5IHVwZGF0ZSBtaXMtY2FsY3VsYXRlZCB0aGUgcmVnaW9uIGZvciB0aGUgZGlydHkgYml0bWFwCitzbmFwc2hvdCBpbiBjYXNlIHNwbGl0IHNjcmVlbiBtb2RlIGlzIHVzZWQuICBUaGlzIGNhbiB0cmlnZ2VyIGFuCithc3NlcnQgaW4gY3B1X3BoeXNpY2FsX21lbW9yeV9zbmFwc2hvdF9nZXRfZGlydHkoKS4KKworSW1wYWN0OiAgRG9TIGZvciBwcml2aWxlZ2VkIGd1ZXN0IHVzZXJzLgorCitGaXhlczogQ1ZFLTIwMTctMTM2NzMKK0ZpeGVzOiBmZWM1ZThjOTJiZWNhZDIyM2RmOWQ5NzI3NzA1MjJmNjRhYWZkYjcyCitDYzogUCBKIFAgPHBwYW5kaXRAcmVkaGF0LmNvbT4KK1JlcG9ydGVkLWJ5OiBEYXZpZCBCdWNoYW5hbiA8ZEB2aWRidWNoYW5hbi5jby51az4KK1NpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorTWVzc2FnZS1pZDogMjAxNzA4MjgxMjMzMDcuMTUzOTItMS1rcmF4ZWxAcmVkaGF0LmNvbQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1lNjUyOTQxNTdkNGI2OTM5M2IzZjgxOWM5OWY0ZjY0NzQ1MmI0OGUzXQorCitDVkU6IENWRS0yMDE3LTEzNjczCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L2Rpc3BsYXkvdmdhLmMgfCAxMCArKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLmMgYi9ody9kaXNwbGF5L3ZnYS5jCitpbmRleCAzNDMzMTAyLi5hZDdhNDY1IDEwMDY0NAorLS0tIGEvaHcvZGlzcGxheS92Z2EuYworKysrIGIvaHcvZGlzcGxheS92Z2EuYworQEAgLTE2MjgsOSArMTYyOCwxNSBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19ncmFwaGljKFZHQUNvbW1vblN0YXRlICpzLCBpbnQgZnVsbF91cGRhdGUpCisgICAgIHkxID0gMDsKKyAKKyAgICAgaWYgKCFmdWxsX3VwZGF0ZSkgeworKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fc3RhcnQgPSBhZGRyMTsKKysgICAgICAgIHJhbV9hZGRyX3QgcmVnaW9uX2VuZCA9IGFkZHIxICsgbGluZV9vZmZzZXQgKiBoZWlnaHQ7CisgICAgICAgICB2Z2Ffc3luY19kaXJ0eV9iaXRtYXAocyk7CistICAgICAgICBzbmFwID0gbWVtb3J5X3JlZ2lvbl9zbmFwc2hvdF9hbmRfY2xlYXJfZGlydHkoJnMtPnZyYW0sIGFkZHIxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfb2Zmc2V0ICogaGVpZ2h0LAorKyAgICAgICAgaWYgKHMtPmxpbmVfY29tcGFyZSA8IGhlaWdodCkgeworKyAgICAgICAgICAgIC8qIHNwbGl0IHNjcmVlbiBtb2RlICovCisrICAgICAgICAgICAgcmVnaW9uX3N0YXJ0ID0gMDsKKysgICAgICAgIH0KKysgICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgcmVnaW9uX3N0YXJ0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbl9lbmQgLSByZWdpb25fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElSVFlfTUVNT1JZX1ZHQSk7CisgICAgIH0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM3MTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTJmNzNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM3MTEucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSAxMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMTozNTo1MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBzbGlycDogZml4IGNsZWFyaW5nIGlmcV9zbyBmcm9tIHBlbmRpbmcgcGFja2V0cworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGUgaWZfZmFzdHEgYW5kIGlmX2JhdGNocSBjb250YWluIG5vdCBvbmx5IHBhY2tldHMsIGJ1dCBxdWV1ZXMgb2YgcGFja2V0cworZm9yIHRoZSBzYW1lIHNvY2tldC4gV2hlbiBzb2ZyZWUgZnJlZXMgYSBzb2NrZXQsIGl0IHRodXMgaGFzIHRvIGNsZWFyIGlmcV9zbworZnJvbSBhbGwgdGhlIHBhY2tldHMgZnJvbSB0aGUgcXVldWVzLCBub3Qgb25seSB0aGUgZmlyc3QuCisKK1NpZ25lZC1vZmYtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK1Jldmlld2VkLWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8ZjRidWdAYW1zYXQub3JnPgorQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9MTIwMWQzMDg1MTlmMWU5MTU4NjZkNzU4M2Q1MTM2ZDAzY2MxZDM4NF0KKworQ1ZFOiBDVkUtMjAxNy0xMzcxMQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zb2NrZXQuYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NvY2tldC5jIGIvc2xpcnAvc29ja2V0LmMKK2luZGV4IGVjZWMwMjkuLmNiN2I1YjYgMTAwNjQ0CistLS0gYS9zbGlycC9zb2NrZXQuYworKysrIGIvc2xpcnAvc29ja2V0LmMKK0BAIC02MCwyOSArNjAsMzYgQEAgc29jcmVhdGUoU2xpcnAgKnNsaXJwKQorIH0KKyAKKyAvKgorKyAqIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNvIGZyb20gdGhlIGdpdmVuIG1lc3NhZ2UgcXVldWUuCisrICovCisrc3RhdGljIHZvaWQKKytzb3FmcmVlKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcXVlaGVhZCAqcWgpCisreworKyAgICBzdHJ1Y3QgbWJ1ZiAqaWZxOworKworKyAgICBmb3IgKGlmcSA9IChzdHJ1Y3QgbWJ1ZiAqKSBxaC0+cWhfbGluazsKKysgICAgICAgICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmcSAhPSBxaDsKKysgICAgICAgICAgICAgaWZxID0gaWZxLT5pZnFfbmV4dCkgeworKyAgICAgICAgaWYgKGlmcS0+aWZxX3NvID09IHNvKSB7CisrICAgICAgICAgICAgc3RydWN0IG1idWYgKmlmbTsKKysgICAgICAgICAgICBpZnEtPmlmcV9zbyA9IE5VTEw7CisrICAgICAgICAgICAgZm9yIChpZm0gPSBpZnEtPmlmc19uZXh0OyBpZm0gIT0gaWZxOyBpZm0gPSBpZm0tPmlmc19uZXh0KSB7CisrICAgICAgICAgICAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisrLyoKKyAgKiByZW1xdWUgYW5kIGZyZWUgYSBzb2NrZXQsIGNsb2JiZXIgY2FjaGUKKyAgKi8KKyB2b2lkCisgc29mcmVlKHN0cnVjdCBzb2NrZXQgKnNvKQorIHsKKyAgIFNsaXJwICpzbGlycCA9IHNvLT5zbGlycDsKKy0gIHN0cnVjdCBtYnVmICppZm07CisgCistICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfZmFzdHEucWhfbGluazsKKy0gICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmbSAhPSAmc2xpcnAtPmlmX2Zhc3RxOworLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7CistICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgeworLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKKy0gICAgfQorLSAgfQorLQorLSAgZm9yIChpZm0gPSAoc3RydWN0IG1idWYgKikgc2xpcnAtPmlmX2JhdGNocS5xaF9saW5rOworLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfYmF0Y2hxOworLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7CistICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgeworLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKKy0gICAgfQorLSAgfQorKyAgc29xZnJlZShzbywgJnNsaXJwLT5pZl9mYXN0cSk7CisrICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2JhdGNocSk7CisgCisgICBpZiAoc28tPnNvX2VtdT09RU1VX1JTSCAmJiBzby0+ZXh0cmEpIHsKKyAJc29mcmVlKHNvLT5leHRyYSk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTE0MTY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5YWQ4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTE0MTY3LnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gZWQ0Zjg2ZThiNmVmZjhlNjAwYzY5YWRlZTY4YzdjZDM0ZGQyY2NjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDEyOjAyOjU2ICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpYm9vdDogdmFsaWRhdGUgbXVsdGlib290IGhlYWRlciBhZGRyZXNzIHZhbHVlcworCitXaGlsZSBsb2FkaW5nIGtlcm5lbCB2aWEgbXVsdGlib290LXYxIGltYWdlLCAoZmxhZ3MgJiAweDAwMDEwMDAwKQoraW5kaWNhdGVzIHRoYXQgbXVsdGlib290IGhlYWRlciBjb250YWlucyB2YWxpZCBhZGRyZXNzZXMgdG8gbG9hZAordGhlIGtlcm5lbCBpbWFnZS4gVGhlc2UgYWRkcmVzc2VzIGFyZSB1c2VkIHRvIGNvbXB1dGUga2VybmVsCitzaXplIGFuZCBrZXJuZWwgdGV4dCBvZmZzZXQgaW4gdGhlIE9TIGltYWdlLiBWYWxpZGF0ZSB0aGVzZQorYWRkcmVzcyB2YWx1ZXMgdG8gYXZvaWQgYW4gT09CIGFjY2VzcyBpc3N1ZS4KKworVGhpcyBpcyBDVkUtMjAxNy0xNDE2Ny4KKworUmVwb3J0ZWQtYnk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29nbGUuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitNZXNzYWdlLUlkOiA8MjAxNzA5MDcwNjMyNTYuNzQxOC0xLXBwYW5kaXRAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWVkNGY4NmU4YjZlZmY4ZTYwMGM2OWFkZWU2OGM3Y2QzNGRkMmNjY2JdCisKK0NWRTogQ1ZFLTIwMTctMTQxNjcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvaTM4Ni9tdWx0aWJvb3QuYyB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9tdWx0aWJvb3QuYyBiL2h3L2kzODYvbXVsdGlib290LmMKK2luZGV4IDYwMDFmNGMuLmM3YjcwYzkgMTAwNjQ0CistLS0gYS9ody9pMzg2L211bHRpYm9vdC5jCisrKysgYi9ody9pMzg2L211bHRpYm9vdC5jCitAQCAtMjIxLDE1ICsyMjEsMzQgQEAgaW50IGxvYWRfbXVsdGlib290KEZXQ2ZnU3RhdGUgKmZ3X2NmZywKKyAgICAgICAgIHVpbnQzMl90IG1oX2hlYWRlcl9hZGRyID0gbGRsX3AoaGVhZGVyK2krMTIpOworICAgICAgICAgdWludDMyX3QgbWhfbG9hZF9lbmRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzIwKTsKKyAgICAgICAgIHVpbnQzMl90IG1oX2Jzc19lbmRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzI0KTsKKysKKyAgICAgICAgIG1oX2xvYWRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzE2KTsKKysgICAgICAgIGlmIChtaF9oZWFkZXJfYWRkciA8IG1oX2xvYWRfYWRkcikgeworKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2FkZHIgYWRkcmVzc1xuIik7CisrICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgIH0KKysKKyAgICAgICAgIHVpbnQzMl90IG1iX2tlcm5lbF90ZXh0X29mZnNldCA9IGkgLSAobWhfaGVhZGVyX2FkZHIgLSBtaF9sb2FkX2FkZHIpOworICAgICAgICAgdWludDMyX3QgbWJfbG9hZF9zaXplID0gMDsKKyAgICAgICAgIG1oX2VudHJ5X2FkZHIgPSBsZGxfcChoZWFkZXIraSsyOCk7CisgCisgICAgICAgICBpZiAobWhfbG9hZF9lbmRfYWRkcikgeworKyAgICAgICAgICAgIGlmIChtaF9ic3NfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2Jzc19lbmRfYWRkciBhZGRyZXNzXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBtaF9ic3NfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7CisrCisrICAgICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2xvYWRfZW5kX2FkZHIgYWRkcmVzc1xuIik7CisrICAgICAgICAgICAgICAgIGV4aXQoMSk7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIG1iX2xvYWRfc2l6ZSA9IG1oX2xvYWRfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7CisgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGlmIChrZXJuZWxfZmlsZV9zaXplIDwgbWJfa2VybmVsX3RleHRfb2Zmc2V0KSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBrZXJuZWxfZmlsZV9zaXplXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBrZXJuZWxfZmlsZV9zaXplIC0gbWJfa2VybmVsX3RleHRfb2Zmc2V0OworICAgICAgICAgICAgIG1iX2xvYWRfc2l6ZSA9IG1iX2tlcm5lbF9zaXplOworICAgICAgICAgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYWRkLXB0ZXN0LWluLW1ha2VmaWxlLXYxMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTYzOTgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYWRkLXB0ZXN0LWluLW1ha2VmaWxlLXYxMC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDQyMDFhNTc5MWZjNDc5OGE0NWE5YjlmODgxNjAyZDdiYWNiNzRlZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMTowNjo1NiAtMDcwMAorU3ViamVjdDogQWRkIHN1YnBhY2thZ2UgLXB0ZXN0IHdoaWNoIHJ1bnMgYWxsIHVuaXQgdGVzdCBjYXNlcyBmb3IgcWVtdS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKK2luZGV4IGYwOGI3NDEuLjNkMWIzZTkgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCisrKysgYi90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCitAQCAtOTI0LDQgKzkyNCwxMiBAQCBhbGw6ICQoUUVNVV9JT1RFU1RTX0hFTFBFUlMteSkKKyAtaW5jbHVkZSAkKHdpbGRjYXJkIHRlc3RzLyouZCkKKyAtaW5jbHVkZSAkKHdpbGRjYXJkIHRlc3RzL2xpYnFvcy8qLmQpCisgCisrYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrLXVuaXQteSkKKysKKytydW50ZXN0LVRFU1RTOgorKwlmb3IgZiBpbiAkKGNoZWNrLXVuaXQteSk7IGRvIFwKKysJCW5mPSQkKGVjaG8gJCRmIHwgc2VkICdzL3Rlc3RzXC8vXC5cLy9nJyk7IFwKKysJCSQkbmY7IFwKKysJZG9uZQorKworIGVuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZTM0NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYWRkLXB0ZXN0LWluLW1ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUFkZCBzdWJwYWNrYWdlIC1wdGVzdCB3aGljaCBydW5zIGFsbCB1bml0IHRlc3QgY2FzZXMgZm9yIHFlbXUuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSB8IDggKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotaW5kZXggMTRiZTQ5MS4uMGZjZTM3YSAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLUBAIC03NzYsMyArNzc2LDExIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQotIAotIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQotIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKLSsKLStidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2stdW5pdC15KQotKwotK3J1bnRlc3QtVEVTVFM6Ci0rCWZvciBmIGluICQoY2hlY2stdW5pdC15KTsgZG8gXAotKwkJbmY9JCQoZWNobyAkJGYgfCBzZWQgJ3MvdGVzdHNcLy9cLlwvL2cnKTsgXAotKwkJJCRuZjsgXAotKwlkb25lCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiYmM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYmVmOTNiYjgxNTg4YjUzMjNhNTJkMmUxODg2ZjJhNzdiNjRhOTc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IEZlYiAyMDEzIDExOjQzOjI4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMThdIGFwaWM6IGZpeHVwIGZhbGx0aHJvdWdoIHRvIFBJQworCitDb21taXQgMGUyMWUxMmJiMzExYzRjMTA5NWQwMjY5ZGMyZWY4MTE5NmNjYjYwYSBbRG9uJ3Qgcm91dGUgUElDCitpbnRlcnJ1cHRzIHRocm91Z2ggdGhlIGxvY2FsIEFQSUMgaWYgdGhlIGxvY2FsIEFQSUMgY29uZmlnIHNheXMgc28uXQorbWlzc2VkIGEgY2hlY2sgdG8gZW5zdXJlIHRoZSBsb2NhbCBBUElDIGlzIGVuYWJsZWQuIFNpbmNlIGlmIHRoZSBsb2NhbAorQVBJQyBpcyBkaXNhYmxlZCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBsb2NhbCBBUElDIGNvbmZpZyBzYXlzLgorCitJZiB0aGlzIGNoZWNrIGlzbid0IGRvbmUgYW5kIHRoZSBndWVzdCBoYXMgZGlzYWJsZWQgdGhlIGxvY2FsIEFQSUMgdGhlCitndWVzdCB3aWxsIHJlY2VpdmUgYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQsIHNpbWlsYXIgdG8gd2hhdCBpcyBzZWVuCitoZXJlOgorCitodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxMi0xMi9tc2cwMjMwNC5odG1sCisKK1RoZSBHUEYgaXMgY2F1c2VkIGJ5IGFuIGF0dGVtcHQgdG8gc2VydmljZSBpbnRlcnJ1cHQgMHhmZmZmZmZmZi4gVGhpcworY29tZXMgYWJvdXQgc2luY2UgY3B1X2dldF9waWNfaW50ZXJydXB0KCkgY2FsbHMgYXBpY19hY2NlcHRfcGljX2ludHIoKQorKHdpdGggdGhlIGxvY2FsIEFQSUMgZGlzYWJsZWQgYXBpY19nZXRfaW50ZXJydXB0KCkgcmV0dXJucyAtMSkuCithcGljX2FjY2VwdF9waWNfaW50cigpIHJldHVybnMgMCBhbmQgdGh1cyB0aGUgaW50ZXJydXB0IG51bWJlciB3aGljaAoraXMgcmV0dXJuZWQgZnJvbSBjcHVfZ2V0X3BpY19pbnRlcnJ1cHQoKSwgYW5kIHdoaWNoIGlzIGF0dGVtcHRlZCB0byBiZQorc2VydmljZWQsIGlzIC0xLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDEzLTA0L21zZzAwODc4Lmh0bWxdCitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvaW50Yy9hcGljLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCitpbmRleCA0NTg4N2Q5OS4uYzVhZTQwODcgMTAwNjQ0CistLS0gYS9ody9pbnRjL2FwaWMuYworKysrIGIvaHcvaW50Yy9hcGljLmMKK0BAIC01ODcsNyArNTg3LDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCisgICAgIEFQSUNDb21tb25TdGF0ZSAqcyA9IEFQSUNfQ09NTU9OKGRldik7CisgICAgIHVpbnQzMl90IGx2dDA7CisgCistICAgIGlmICghcykKKysgICAgaWYgKCFzIHx8ICEocy0+c3B1cmlvdXNfdmVjICYgQVBJQ19TVl9FTkFCTEUpKQorICAgICAgICAgcmV0dXJuIC0xOworIAorICAgICBsdnQwID0gcy0+bHZ0W0FQSUNfTFZUX0xJTlQwXTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jb25maWd1cmUtZml4LURhcndpbi10YXJnZXQtZGV0ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWNkYzFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci0KLUZyb20gOWFjMDk2ZDhlY2NmMmQ1NmVjZTY0NjMyMGMyODJjODM2OWY4MzM3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDI5IEp1bCAyMDE0IDE4OjM1OjU5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogZml4IERhcndpbiB0YXJnZXQgZGV0ZWN0aW9uCi0KLWZpeCBEYXJ3aW4gdGFyZ2V0IGRldGVjdGlvbiBmb3IgcWVtdQotY3Jvc3MtY29tcGlsYXRpb24uCi0KLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAyODNjNzFjLi4xYzY2YTExIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00NDQsNiArNDQ0LDggQEAgZWxpZiBjaGVja19kZWZpbmUgX19zdW5fXyA7IHRoZW4KLSAgIHRhcmdldG9zPSdTdW5PUycKLSBlbGlmIGNoZWNrX2RlZmluZSBfX0hBSUtVX18gOyB0aGVuCi0gICB0YXJnZXRvcz0nSGFpa3UnCi0rZWxpZiBjaGVja19kZWZpbmUgX19BUFBMRV9fIDsgdGhlbgotKyAgdGFyZ2V0b3M9J0RhcndpbicKLSBlbHNlCi0gICB0YXJnZXRvcz1gdW5hbWUgLXNgCi0gZmkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcHBjX2xvY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjcyMjQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcHBjX2xvY2tpbmcucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0kndmUgdHJhY2tlZCBkb3duIHdoYXQgSSB0aGluayBpcyBhIHByb2JsZW0gY2F1c2luZyBxZW11LXN5c3RlbS1wcGMKK3RvIGhhbmcgd2hpbHN0IGJvb3RpbmcgaW1hZ2VzLgorCitJIGJlbGlldmUgdGhlIGRlY3JlbWVudGVyIHRpbWVyIHN0b3BzIHJlY2VpdmluZyBpbnRlcnJ1cHRzIHNvCit0YXNrcyBpbiBvdXIgaW1hZ2VzIGhhbmcgaW5kZWZpbml0ZWx5IGFzIHRoZSB0aW1lciBzdG9wcGVkLiAKKworSXQgY2FuIGJlIHN1bW1lZCB1cCB3aXRoIHRoaXMgbGluZSBvZiBkZWJ1ZzoKKworcHBjX3NldF9pcnE6IDB4NTViNGUwZDU2MmYwIG5fSVJRIDggbGV2ZWwgMSA9PiBwZW5kaW5nIDAwMDAwMTAwcmVxIDAwMDAwMDA0CisKK0l0IHNob3VsZCBub3JtYWxseSByZWFkOgorCitwcGNfc2V0X2lycTogMHg1NWI0ZTBkNTYyZjAgbl9JUlEgOCBsZXZlbCAxID0+IHBlbmRpbmcgMDAwMDAxMDByZXEgMDAwMDAwMDIKKworVGhlIHF1ZXN0aW9uIGlzIHdoeSBDUFVfSU5URVJSVVBUX0VYSVRUQiBlbmRzIHVwIGJlaW5nIHNldCB3aGVuIHRoZQorbGluZXMgYWJvdmUgdGhpcyBsb2cgbWVzc2FnZSBjbGVhcmx5IHNldHMgQ1BVX0lOVEVSUlVQVF9IQVJEICh2aWEgCitjcHVfaW50ZXJydXB0KCkgKS4KKworSSBub3RlIGluIGNwdS5oOgorCisgICAgLyogdXBkYXRlcyBwcm90ZWN0ZWQgYnkgQlFMICovCisgICAgdWludDMyX3QgaW50ZXJydXB0X3JlcXVlc3Q7CisKKyhmb3Igc3RydWN0IENQVVN0YXRlKQorCitUaGUgcHBjIGNvZGUgZG9lcyAiY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCIiBpbiA1CitwbGFjZXMsIDMgaW4gZXhjcF9oZWxwZXIuYyBhbmQgMiBpbiBoZWxwZXJfcmVncy5oLiBJbiBhbGwgY2FzZXMsICAKK2dfYXNzZXJ0KHFlbXVfbXV0ZXhfaW90aHJlYWRfbG9ja2VkKCkpOyBmYWlscy4gSWYgSSBkbyBzb21ldGhpbmcgbGlrZToKKworaWYgKCFxZW11X211dGV4X2lvdGhyZWFkX2xvY2tlZCgpKSB7CisgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7CisgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Cit9IGVsc2UgeworICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKK30KKworaW4gdGhlc2UgY2FsbCBzaXRlcyB0aGVuIEkgY2FuIG5vIGxvbmdlciBsb2NrIHFlbXUgdXAgd2l0aCBteSB0ZXN0CitjYXNlLgorCitJIHN1c3BlY3QgdGhlIF9IQVJEIHNldHRpbmcgZ2V0cyBvdmVyd3JpdHRlbiB3aGljaCBzdG9wcyB0aGUgCitkZWNyZW1lbnRlciBpbnRlcnJ1cHRzIGJlaW5nIGRlbGl2ZXJlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW0lzc3VlIGRpc2N1c3NlZCBvbiBxZW11IG1haWxpbmcgbGlzdCAyMDE3LzExLzIwXQorUlAgMjAxNy8xMS8yMAorCitJbmRleDogcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcWVtdS0yLjEwLjEub3JpZy90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKKysrKyBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKK0BAIC0yMDcsNyArMjA3LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvd2VycGNfZXhjcChQb3dlclBDQworICAgICAgICAgICAgICAgICAgICAgICAgICJFbnRlcmluZyBjaGVja3N0b3Agc3RhdGVcbiIpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBjcy0+aGFsdGVkID0gMTsKKy0gICAgICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7CisrICAgICAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7CisrICAgICAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgICAgICB9CisgICAgICAgICBpZiAoZW52LT5tc3JfbWFzayAmIE1TUl9IVkIpIHsKKyAgICAgICAgICAgICAvKiBJU0Egc3BlY2lmaWVzIEhWLCBidXQgY2FuIGJlIGRlbGl2ZXJlZCB0byBndWVzdCB3aXRoIEhWIGNsZWFyCitAQCAtOTQwLDcgKzk0Miw5IEBAIHZvaWQgaGVscGVyX3N0b3JlX21zcihDUFVQUENTdGF0ZSAqZW52LAorIAorICAgICBpZiAoZXhjcCAhPSAwKSB7CisgICAgICAgICBDUFVTdGF0ZSAqY3MgPSBDUFUocHBjX2Vudl9nZXRfY3B1KGVudikpOworLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOworKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7CisrICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7CisrICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOworICAgICAgICAgcmFpc2VfZXhjZXB0aW9uKGVudiwgZXhjcCk7CisgICAgIH0KKyB9CitAQCAtOTk1LDcgKzk5OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkb19yZmkoQ1BVUFBDU3RhdGUgKmUKKyAgICAgLyogTm8gbmVlZCB0byByYWlzZSBhbiBleGNlcHRpb24gaGVyZSwKKyAgICAgICogYXMgcmZpIGlzIGFsd2F5cyB0aGUgbGFzdCBpbnNuIG9mIGEgVEIKKyAgICAgICovCistICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7CisrICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKKysgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAKKyAgICAgLyogUmVzZXQgdGhlIHJlc2VydmF0aW9uICovCisgICAgIGVudi0+cmVzZXJ2ZV9hZGRyID0gLTE7CitJbmRleDogcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcWVtdS0yLjEwLjEub3JpZy90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKKysrKyBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKK0BAIC0xMTQsMTEgKzExNCwxNSBAQCBzdGF0aWMgaW5saW5lIGludCBocmVnX3N0b3JlX21zcihDUFVQUENTCisgICAgIH0KKyAgICAgaWYgKCgodmFsdWUgPj4gTVNSX0lSKSAmIDEpICE9IG1zcl9pciB8fAorICAgICAgICAgKCh2YWx1ZSA+PiBNU1JfRFIpICYgMSkgIT0gbXNyX2RyKSB7CistICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7CisrICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKKysgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgIH0KKyAgICAgaWYgKChlbnYtPm1tdV9tb2RlbCAmIFBPV0VSUENfTU1VX0JPT0tFKSAmJgorICAgICAgICAgKCh2YWx1ZSA+PiBNU1JfR1MpICYgMSkgIT0gbXNyX2dzKSB7CistICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7CisrICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKKysgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgIH0KKyAgICAgaWYgKHVubGlrZWx5KChlbnYtPmZsYWdzICYgUE9XRVJQQ19GTEFHX1RHUFIpICYmCisgICAgICAgICAgICAgICAgICAoKHZhbHVlIF4gZW52LT5tc3IpICYgKDEgPDwgTVNSX1RHUFIpKSkpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2gKaW5kZXggMTczMzk0Zi4uZWI5OWQxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2gKQEAgLTEsMyArMSw1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKIEBAIC00NDY4LDEwICs0NDY4LDYgQEAgZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyMWU3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS90YXJnZXQtcHBjLWZpeC11c2VyLW1vZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1bUWVtdS1wcGNdIFtQQVRDSCAxLzFdIHRhcmdldC1wcGMsIHRjZzogZml4IHVzZXJtb2RlIHNlZ2ZhdWx0IHdpdGggcHRocmVhZAotCi1Gcm9tOiBTYW0gQm9icm9mZgotU3ViamVjdDogW1FlbXUtcHBjXSBbUEFUQ0ggMS8xXSB0YXJnZXQtcHBjLCB0Y2c6IGZpeCB1c2VybW9kZSBzZWdmYXVsdCB3aXRoIHB0aHJlYWRfY3JlYXRlKCkKLURhdGU6IE1vbiwgMzAgSmFuIDIwMTcgMTY6MDg6MDcgKzExMDAKLVByb2dyYW1zIHJ1biB1bmRlciBxZW11LXBwYzY0IG9uIGFuIHg4Nl82NCBob3N0IGN1cnJlbnRseSBzZWdmYXVsdAotaWYgdGhleSB1c2UgcHRocmVhZF9jcmVhdGUoKSBkdWUgdG8gdGhlIGFkanVzdG1lbnQgbWFkZSB0byB0aGUgTklQIGluCi1jb21taXQgYmQ2ZmVmZTcxY2VjNWEwYzdkMmJlNGFjOTYzMDdmMjVkYjU2YWJmOS4KLQotVGhpcyBwYXRjaCBjaGFuZ2VzIGNwdV9sb29wKCkgdG8gc2V0IHRoZSBOSVAgYmFjayB0byB0aGUKLXByZS1pbmNyZW1lbnRlZCB2YWx1ZSBiZWZvcmUgY2FsbGluZyBkb19zeXNjYWxsKCksIHdoaWNoIGNhdXNlcyB0aGUKLWNvcnJlY3QgYWRkcmVzcyB0byBiZSB1c2VkIGZvciB0aGUgbmV3IHRocmVhZCBhbmQgY29ycmVjdHMgdGhlIGZhdWx0LgotCi1TaWduZWQtb2ZmLWJ5OiBTYW0gQm9icm9mZiA8YWRkcmVzc0BoaWRkZW4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tCi0KLWxpbnV4LXVzZXIvbWFpbi5jIHwgNCArKystCi0xIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1pbmRleCAzMDA0OTU4MWVmLi5iNWRlZTAxNTQxIDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9tYWluLmMKLSsrKyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1AQCAtMTcxMiwxOCArMTcxMiwyMCBAQCB2b2lkIGNwdV9sb29wKENQVVBQQ1N0YXRlICplbnYpCi0gICAgICAgICAgICAgICogaW4gc3lzY2FsbHMuCi0gICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgZW52LT5jcmZbMF0gJj0gfjB4MTsKLSsgICAgICAgICAgICBlbnYtPm5pcCArPSA0OwotICAgICAgICAgICAgIHJldCA9IGRvX3N5c2NhbGwoZW52LCBlbnYtPmdwclswXSwgZW52LT5ncHJbM10sIGVudi0+Z3ByWzRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5ncHJbNV0sIGVudi0+Z3ByWzZdLCBlbnYtPmdwcls3XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+Z3ByWzhdLCAwLCAwKTsKLSAgICAgICAgICAgICBpZiAocmV0ID09IC1UQVJHRVRfRVJFU1RBUlRTWVMpIHsKLSsgICAgICAgICAgICAgICAgZW52LT5uaXAgLT0gNDsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGlmIChyZXQgPT0gKHRhcmdldF91bG9uZykoLVRBUkdFVF9RRU1VX0VTSUdSRVRVUk4pKSB7Ci0rICAgICAgICAgICAgICAgIGVudi0+bmlwIC09IDQ7Ci0gICAgICAgICAgICAgICAgIC8qIFJldHVybmluZyBmcm9tIGEgc3VjY2Vzc2Z1bCBzaWdyZXR1cm4gc3lzY2FsbC4KLSAgICAgICAgICAgICAgICAgICAgQXZvaWQgY29ycnVwdGluZyByZWdpc3RlciBzdGF0ZS4gICovCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBlbnYtPm5pcCArPSA0OwotICAgICAgICAgICAgIGlmIChyZXQgPiAodGFyZ2V0X3Vsb25nKSgtNTE1KSkgewotICAgICAgICAgICAgICAgICBlbnYtPmNyZlswXSB8PSAweDE7Ci0gICAgICAgICAgICAgICAgIHJldCA9IC1yZXQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTliNDkzOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYgpAQCAtMCwwICsxLDYzIEBACityZXF1aXJlIHFlbXUuaW5jCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKKworU1JDX1VSSSA9ICJodHRwOi8vd2lraS5xZW11LXByb2plY3Qub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19yb20uYmluIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ3JhYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dhY29tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2xpYmMtMi4yNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVByb3ZpZGUtc3VwcG9ydC1mb3ItdGhlLUNVU0UtVFBNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzExLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNjczLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNjcyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTY3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BwY19sb2NraW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgorCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jcHVzLmMtcWVtdV9jcHVfa2lja190aHJlYWRfZGVidWdnaW5nLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImNhNzM0NDFkZTczYTliNTJjNmM0OWM5NzE5MGQyMTg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOWYzOWUxMzA2ZTZkY2M1OTU0OTRlOTFjMTQ2NGQ0YjAzZjU1ZGRkMjA1MzE4M2UwZTFiNjlmN2Y3NzZkNDgiCisKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwltYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQorCisJY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNzAwMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1yZXF1aXJlIHFlbXUuaW5jCi0KLWluaGVyaXQgcHRlc3QKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wb3dlcnBjX3JvbS5iaW4gXAotICAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ3JhYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vd2Fjb20ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtZml4LURhcndpbi10YXJnZXQtZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9xZW11LWVubGFyZ2UtZW52LWVudHJ5LXNpemUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25vLXZhbGdyaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly90YXJnZXQtcHBjLWZpeC11c2VyLW1vZGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2dsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzA0YjMzZTIxODY2NDEyNjg5ZjE4YjdhZDZkYWYwYTU0ZDhmOTU5YTcucGF0Y2ggXAotIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi05OTA4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi05OTEyLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NwdXMuYy1xZW11X2NwdV9raWNrX3RocmVhZF9kZWJ1Z2dpbmcucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJID0rICJodHRwOi8vd2lraS5xZW11LXByb2plY3Qub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNzk0MGRjZTA2M2I2Y2U0NTBhMTJlNzE5YTZjOWM0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWZkNWQ3ZjY0OTkwN2I2YjYxN2I4MjI2OTJmNGM4MmU2MGNmMjliYzBmYzU4YmMyMDM2MjE5YjU5MWU1ZTYyIgotCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFByZXZlbnQgUUEgd2FybmluZ3MgYWJvdXQgaW5zdGFsbGVkICR7bG9jYWxzdGF0ZWRpcn0vcnVuCi0gICAgaWYgWyAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXTsgdGhlbiBybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW47IGZpCi0gICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3Bvd2VycGNfcm9tLmJpbiAke0R9JHtkYXRhZGlyfS9xZW11Ci19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JbWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KLQotCWNwICR7U30vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgppbmRleCBlNDBjZGFmLi5jOTgzZmJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlFFTVUgd3JhcHBlciBzY3JpcHQiCitIT01FUEFHRSA9ICJodHRwOi8vcWVtdS5vcmciCiBMSUNFTlNFID0gIk1JVCIKIAogUyA9ICIke1dPUktESVJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmODg5ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiTWFrZWZpbGUgZGVidWdnZXIgd2hpY2ggaXMgZ251bWFrZSBjb21wYXRpYmxlIgotREVTQ1JJUFRJT04gPSAicmVtYWtlIGlzIGEgcGF0Y2hlZCBhbmQgbW9kZXJuaXplZCB2ZXJzaW9uIG9mIEdOVSBtYWtlIFwKLXV0aWxpdHkgdGhhdCBhZGRzIGltcHJvdmVkIGVycm9yIHJlcG9ydGluZywgdGhlIGFiaWxpdHkgdG8gdHJhY2UgXAotZXhlY3V0aW9uIGluIGEgY29tcHJlaGVuc2libGUgd2F5LCBhbmQgYSBkZWJ1Z2dlci4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9iYXNoZGIuc291cmNlZm9yZ2UubmV0L3JlbWFrZS8iCi1TRUNUSU9OID0gImRldmVsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcm9ja3kvcmVtYWtlLmdpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJtYWtlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21ha2VdID0gIiR7YmluZGlyfS9tYWtlIgotQUxURVJOQVRJVkVfVEFSR0VUW21ha2VdID0gIiR7YmluZGlyfS9yZW1ha2UiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2UvdmVyc2lvbi1yZW1ha2UudGV4aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZS92ZXJzaW9uLXJlbWFrZS50ZXhpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTYzMjllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZS92ZXJzaW9uLXJlbWFrZS50ZXhpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXZlcnNpb24tcmVtYWtlLnRleGkgaXMgbm90IHRoZXJlIGJ1dCBpdCBpcyByZXF1aXJlZCBieSByZW1ha2UudGV4aSwKLWp1c3QgYWRkIGl0IGZvciBnZXR0aW5nIHRoZSAnbWFrZSByZW1ha2UuaW5mbycgd29ya3MuCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1kaWZmIC0tZ2l0IGEvZG9jL3ZlcnNpb24tcmVtYWtlLnRleGkgYi9kb2MvdmVyc2lvbi1yZW1ha2UudGV4aQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJhM2I3MmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2RvYy92ZXJzaW9uLXJlbWFrZS50ZXhpCi1AQCAtMCwwICsxLDQgQEAKLStAc2V0IFVQREFURUQgMTAgSnVuZSAyMDEyCi0rQHNldCBVUERBVEVELU1PTlRIIEp1bmUgMjAxMgotK0BzZXQgRURJVElPTiAzLjgyK2RiZy0wLjlnaXQKLStAc2V0IFZFUlNJT04gMy44MitkYmctMC45Z2l0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2VfNC4xK2RiZy0xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2VfNC4xK2RiZy0xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYWI3ZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlXzQuMStkYmctMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsb2IvQ09QWUlORy5MSUI7bWQ1PTRhNzcwYjY3ZTZiZTBmNjBkYTI0NGJlYjJkZTBmY2U0IgotcmVxdWlyZSByZW1ha2UuaW5jCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKylcK2RiZy4rKSIKLVNSQ19VUkkgKz0gImZpbGU6Ly92ZXJzaW9uLXJlbWFrZS50ZXhpLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gImNmNTQ2NDFkNTBhMDE2NWJiMTc2MjJiM2U5NzcwZjQyNmNjYmM1NjEiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTICs9ICJyZWFkbGluZSBndWlsZSIKLSMgTmVlZCB0byBhZGQgImdldHRleHQtbmF0aXZlIiBkZXBlbmRlbmN5IHRvIHJlbWFrZS1uYXRpdmUuCi0jIEJ5IGRlZmF1bHQgb25seSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIgaXMgYWRkZWQKLSMgd2hlbiBpbmhlcml0IGdldHRleHQuCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAiZ2V0dGV4dC1uYXRpdmUiCi1QUk9WSURFUyArPSAidmlydHVhbC9tYWtlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHJlbW92ZSB0aGUgZGVmYXVsdCBMSU5HVUFTIHNpbmNlIHdlIGFyZSBub3QgZ29pbmcgdG8gZ2VuZXJhdGUgbGFuZ3VhZ2VzCi0gICAgcm0gJHtTfS9wby9MSU5HVUFTCi0gICAgdG91Y2ggJHtTfS9wby9MSU5HVUFTCi0gICAgIyBjcmVhdGUgY29uZmlnLnJwYXRoIHdoaWNoIHJlcXVpcmVkIGJ5IGNvbmZpZ3VyZS5hYwotICAgICggY2QgJHtTfTsgYXV0b3BvaW50IHx8IHRvdWNoIGNvbmZpZy5ycGF0aCApCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCmluZGV4IGQ5OWRkZWIuLjFmNjFhY2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKQEAgLTQsNyArNCw3IEBACiBTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBoYXJkY29kZSAibGliL3JwbSIgYXMgdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvcgogIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgbWFjcm9zLgogCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzI2M10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCmluZGV4IDk1YzcwMTMuLmVkZjllYzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IE1vbiwgMjcgRmViIDIwMTcgMTQ6NDM6MjEgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbCBDIGxpYnJhcnkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwcm9ibGVtIGFscmVhZHkgc29sdmVkIGluIG1hc3RlciBicmFuY2hdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU0NGYwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaApAQCAtMCwwICsxLDg0IEBACitGcm9tIDcyMWE2NjBhNTA3ZDZkMDYyZTdhZWNhZmFkODg2YzY0Mzk3MGE1ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjUgTWF5IDIwMTcgMTg6MTU6MjcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIFNwbGl0IGJpbmFyeSBwYWNrYWdlIGJ1aWxkaW5nIGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbgorCitTbyB0aGF0IGl0IGNhbiBiZSBydW4gYXMgYSB0aHJlYWQgcG9vbCB0YXNrLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBidWlsZC9wYWNrLmMgfCAzMyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9wYWNrLmMgYi9idWlsZC9wYWNrLmMKK2luZGV4IDUxOGY0ZTkyYS4uY2NmZDYxNGNjIDEwMDY0NAorLS0tIGEvYnVpbGQvcGFjay5jCisrKysgYi9idWlsZC9wYWNrLmMKK0BAIC01NDYsMTggKzU0NiwxMyBAQCBzdGF0aWMgcnBtUkMgY2hlY2tQYWNrYWdlcyhjaGFyICpwa2djaGVjaykKKyAgICAgcmV0dXJuIFJQTVJDX09LOworIH0KKyAKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgY2hhcioqIGZpbGVuYW1lKQorIHsKKy0gICAgcnBtUkMgcmM7CistICAgIGNvbnN0IGNoYXIgKmVycm9yU3RyaW5nOworLSAgICBQYWNrYWdlIHBrZzsKKy0gICAgY2hhciAqcGtnbGlzdCA9IE5VTEw7CistCistICAgIGZvciAocGtnID0gc3BlYy0+cGFja2FnZXM7IHBrZyAhPSBOVUxMOyBwa2cgPSBwa2ctPm5leHQpIHsKKy0JY2hhciAqZm47CisrCWNvbnN0IGNoYXIgKmVycm9yU3RyaW5nOworKwlycG1SQyByYyA9IFJQTVJDX09LOworIAorIAlpZiAocGtnLT5maWxlTGlzdCA9PSBOVUxMKQorLQkgICAgY29udGludWU7CisrCSAgICByZXR1cm4gcmM7CisgCisgCWlmICgocmMgPSBwcm9jZXNzU2NyaXB0RmlsZXMoc3BlYywgcGtnKSkpCisgCSAgICByZXR1cm4gcmM7CitAQCAtNTg3LDcgKzU4Miw3IEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorIAkJICAgICBoZWFkZXJHZXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19OQU1FKSwgZXJyb3JTdHJpbmcpOworIAkJcmV0dXJuIFJQTVJDX0ZBSUw7CisgCSAgICB9CistCSAgICBmbiA9IHJwbUdldFBhdGgoIiV7X3JwbWRpcn0vIiwgYmluUnBtLCBOVUxMKTsKKysJICAgICpmaWxlbmFtZSA9IHJwbUdldFBhdGgoIiV7X3JwbWRpcn0vIiwgYmluUnBtLCBOVUxMKTsKKyAJICAgIGlmICgoYmluRGlyID0gc3RyY2hyKGJpblJwbSwgJy8nKSkgIT0gTlVMTCkgeworIAkJc3RydWN0IHN0YXQgc3Q7CisgCQljaGFyICpkbjsKK0BAIC02MDksMTQgKzYwNCwyOCBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyAJICAgIGZyZWUoYmluUnBtKTsKKyAJfQorIAorLQlyYyA9IHdyaXRlUlBNKHBrZywgTlVMTCwgZm4sIE5VTEwpOworKwlyYyA9IHdyaXRlUlBNKHBrZywgTlVMTCwgKmZpbGVuYW1lLCBOVUxMKTsKKyAJaWYgKHJjID09IFJQTVJDX09LKSB7CisgCSAgICAvKiBEbyBjaGVjayBlYWNoIHdyaXR0ZW4gcGFja2FnZSBpZiBlbmFibGVkICovCistCSAgICBjaGFyICpwa2djaGVjayA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkX3BrZ2NoZWNrfSAiLCBmbiwgTlVMTCk7CisrCSAgICBjaGFyICpwa2djaGVjayA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkX3BrZ2NoZWNrfSAiLCAqZmlsZW5hbWUsIE5VTEwpOworIAkgICAgaWYgKHBrZ2NoZWNrWzBdICE9ICcgJykgeworIAkJcmMgPSBjaGVja1BhY2thZ2VzKHBrZ2NoZWNrKTsKKyAJICAgIH0KKyAJICAgIGZyZWUocGtnY2hlY2spOworKwl9CisrCXJldHVybiByYzsKKyt9CisrCisrcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisreworKyAgICBycG1SQyByYzsKKysgICAgUGFja2FnZSBwa2c7CisrICAgIGNoYXIgKnBrZ2xpc3QgPSBOVUxMOworKworKyAgICBmb3IgKHBrZyA9IHNwZWMtPnBhY2thZ2VzOyBwa2cgIT0gTlVMTDsgcGtnID0gcGtnLT5uZXh0KSB7CisrCWNoYXIgKmZuID0gTlVMTDsKKysJcmMgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHBrZywgY29va2llLCBjaGVhdGluZywgJmZuKTsKKysJaWYgKHJjID09IFJQTVJDX09LKSB7CisgCSAgICByc3RyY2F0KCZwa2dsaXN0LCBmbik7CisgCSAgICByc3RyY2F0KCZwa2dsaXN0LCAiICIpOworIAl9CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTAwNDFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaApAQCAtMCwwICsxLDEyNyBAQAorRnJvbSA1MTMyMDBjZjc2NzU4ZGU0NjY4MzEyYzYyOGQ2MzYyYmRhYmZhZjRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI1IE1heSAyMDE3IDE5OjMwOjIwICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBSdW4gYmluYXJ5IHBhY2thZ2UgY3JlYXRpb24gdmlhIHRocmVhZCBwb29scy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgYnVpbGQvcGFjay5jIHwgODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgY29uZmlndXJlLmFjIHwgIDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL3BhY2suYyBiL2J1aWxkL3BhY2suYworaW5kZXggY2NmZDYxNGNjLi5lZDViOWFiNGUgMTAwNjQ0CistLS0gYS9idWlsZC9wYWNrLmMKKysrKyBiL2J1aWxkL3BhY2suYworQEAgLTYxNiwyNSArNjE2LDc4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCisgCXJldHVybiByYzsKKyB9CisgCistcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisrc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorIHsKKy0gICAgcnBtUkMgcmM7CisgICAgIFBhY2thZ2UgcGtnOworKyAgICBjaGFyICpmaWxlbmFtZTsKKysgICAgcnBtUkMgcmVzdWx0OworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICpuZXh0OworK307CisrCisrc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorK3sKKysgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBOVUxMOworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gTlVMTDsKKysgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqcHJldiA9IE5VTEw7CisrCisrICAgIGZvciAoUGFja2FnZSBwa2cgPSBzcGVjLT5wYWNrYWdlczsgcGtnICE9IE5VTEw7IHBrZyA9IHBrZy0+bmV4dCkgeworKyAgICAgICAgdGFzayA9IHJjYWxsb2MoMSwgc2l6ZW9mKCp0YXNrKSk7CisrICAgICAgICB0YXNrLT5wa2cgPSBwa2c7CisrICAgICAgICBpZiAocGtnID09IHNwZWMtPnBhY2thZ2VzKSB7CisrICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHBhY2thZ2UgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkIGFoZWFkIG9mIG90aGVycywgYXMgdGhleSBjb3B5CisrICAgICAgICAgICAgLy8gY2hhbmdlbG9nIGRhdGEgZnJvbSBpdCwgYW5kIHNvIG90aGVyd2lzZSBkYXRhIHJhY2VzIHdvdWxkIGhhcHBlbgorKyAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSk7CisrICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIkZpbmlzaGVkIGJpbmFyeSBwYWNrYWdlIGpvYiwgcmVzdWx0ICVkLCBmaWxlbmFtZSAlc1xuIiksIHRhc2stPnJlc3VsdCwgdGFzay0+ZmlsZW5hbWUpOworKyAgICAgICAgICAgIHRhc2tzID0gdGFzazsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChwcmV2ICE9IE5VTEwpIHsKKysgICAgICAgICAgICBwcmV2LT5uZXh0ID0gdGFzazsKKysgICAgICAgIH0KKysgICAgICAgIHByZXYgPSB0YXNrOworKyAgICB9CisrCisrICAgICNwcmFnbWEgb21wIHBhcmFsbGVsCisrICAgICNwcmFnbWEgb21wIHNpbmdsZQorKyAgICAvLyByZS1kZWNsYXJpbmcgdGFzayB2YXJpYWJsZSBpcyBuZWNlc3NhcnksIG9yIG9sZGVyIGdjYyB2ZXJzaW9ucyB3aWxsIHByb2R1Y2UgY29kZSB0aGF0IHNlZ2ZhdWx0cworKyAgICBmb3IgKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSB0YXNrczsgdGFzayAhPSBOVUxMOyB0YXNrID0gdGFzay0+bmV4dCkgeworKyAgICAgICAgaWYgKHRhc2sgIT0gdGFza3MpCisrICAgICAgICAjcHJhZ21hIG9tcCB0YXNrCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCB0YXNrLT5wa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpKTsKKysgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHRhc2tzOworK30KKysKKytzdGF0aWMgdm9pZCBmcmVlQmluYXJ5UGFja2FnZVRhc2tzKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHRhc2tzKQorK3sKKysgICAgd2hpbGUgKHRhc2tzICE9IE5VTEwpIHsKKysgICAgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIG5leHQgPSB0YXNrcy0+bmV4dDsKKysgICAgICAgIHJmcmVlKHRhc2tzLT5maWxlbmFtZSk7CisrICAgICAgICByZnJlZSh0YXNrcyk7CisrICAgICAgICB0YXNrcyA9IG5leHQ7CisrICAgIH0KKyt9CisrCisrcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisreworICAgICBjaGFyICpwa2dsaXN0ID0gTlVMTDsKKyAKKy0gICAgZm9yIChwa2cgPSBzcGVjLT5wYWNrYWdlczsgcGtnICE9IE5VTEw7IHBrZyA9IHBrZy0+bmV4dCkgeworLQljaGFyICpmbiA9IE5VTEw7CistCXJjID0gcGFja2FnZUJpbmFyeShzcGVjLCBwa2csIGNvb2tpZSwgY2hlYXRpbmcsICZmbik7CistCWlmIChyYyA9PSBSUE1SQ19PSykgeworLQkgICAgcnN0cmNhdCgmcGtnbGlzdCwgZm4pOworLQkgICAgcnN0cmNhdCgmcGtnbGlzdCwgIiAiKTsKKy0JfQorLQlmcmVlKGZuKTsKKy0JaWYgKHJjICE9IFJQTVJDX09LKSB7CistCSAgICBwa2dsaXN0ID0gX2ZyZWUocGtnbGlzdCk7CistCSAgICByZXR1cm4gcmM7CistCX0KKysgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBydW5CaW5hcnlQYWNrYWdlVGFza3Moc3BlYywgY29va2llLCBjaGVhdGluZyk7CisrCisrICAgIGZvciAoc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFzayA9IHRhc2tzOyB0YXNrICE9IE5VTEw7IHRhc2sgPSB0YXNrLT5uZXh0KSB7CisrICAgICAgICBpZiAodGFzay0+cmVzdWx0ID09IFJQTVJDX09LKSB7CisrICAgICAgICAgICAgcnN0cmNhdCgmcGtnbGlzdCwgdGFzay0+ZmlsZW5hbWUpOworKyAgICAgICAgICAgIHJzdHJjYXQoJnBrZ2xpc3QsICIgIik7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIF9mcmVlKHBrZ2xpc3QpOworKyAgICAgICAgICAgIGZyZWVCaW5hcnlQYWNrYWdlVGFza3ModGFza3MpOworKyAgICAgICAgICAgIHJldHVybiBSUE1SQ19GQUlMOworKyAgICAgICAgfQorICAgICB9CisrICAgIGZyZWVCaW5hcnlQYWNrYWdlVGFza3ModGFza3MpOworIAorICAgICAvKiBOb3cgY2hlY2sgdGhlIHBhY2thZ2Ugc2V0IGlmIGVuYWJsZWQgKi8KKyAgICAgaWYgKHBrZ2xpc3QgIT0gTlVMTCkgeworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTUwNmVjODE5Li41OWZhMGFjYWYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE3LDYgKzE3LDkgQEAgQUNfRElTQUJMRV9TVEFUSUMKKyAKKyBQS0dfUFJPR19QS0dfQ09ORklHCisgCisrQUNfT1BFTk1QCisrUlBNQ0ZMQUdTPSIkT1BFTk1QX0NGTEFHUyAkUlBNQ0ZMQUdTIgorKworIGRubCBDaGVja3MgZm9yIHByb2dyYW1zLgorIEFDX1BST0dfQ1hYCisgQUNfUFJPR19BV0sKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDMtcnBtc3RycG9vbC5jLW1ha2Utb3BlcmF0aW9ucy1vdmVyLXN0cmluZy1wb29scy10aHJlYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDMtcnBtc3RycG9vbC5jLW1ha2Utb3BlcmF0aW9ucy1vdmVyLXN0cmluZy1wb29scy10aHJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzQ4YWU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoCkBAIC0wLDAgKzEsMjA3IEBACitGcm9tIGM4MDg5MmYxN2U0NDMzMTIwNmM4MzE4ZDUzYjYzYmI2YTk5NTU0ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTM6NTg6MzAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIHJwbXN0cnBvb2wuYzogbWFrZSBvcGVyYXRpb25zIG92ZXIgc3RyaW5nIHBvb2xzCisgdGhyZWFkLXNhZmUKKworT3RoZXJ3aXNlIG11bHRpdGhyZWFkZWQgcnBtIGJ1aWxkaW5nIGV4cGxvZGVzIGluIHZhcmlvdXMgd2F5cyBkdWUKK3RvIGRhdGEgcmFjZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIHJwbWlvL3JwbXN0cnBvb2wuYyB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcnBtaW8vcnBtc3RycG9vbC5jIGIvcnBtaW8vcnBtc3RycG9vbC5jCitpbmRleCAzMGE1N2ViMTAuLjU4YmE5NWEwMiAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbXN0cnBvb2wuYworKysrIGIvcnBtaW8vcnBtc3RycG9vbC5jCitAQCAtMTEzLDYgKzExMyw4IEBAIHN0YXRpYyBwb29sSGFzaCBwb29sSGFzaENyZWF0ZShpbnQgbnVtQnVja2V0cykKKyAgICAgcmV0dXJuIGh0OworIH0KKyAKKytzdGF0aWMgY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHJOb0xvY2socnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKTsKKysKKyBzdGF0aWMgdm9pZCBwb29sSGFzaFJlc2l6ZShycG1zdHJQb29sIHBvb2wsIGludCBudW1CdWNrZXRzKQorIHsKKyAgICAgcG9vbEhhc2ggaHQgPSBwb29sLT5oYXNoOworQEAgLTEyMCw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBwb29sSGFzaFJlc2l6ZShycG1zdHJQb29sIHBvb2wsIGludCBudW1CdWNrZXRzKQorIAorICAgICBmb3IgKGludCBpPTA7IGk8aHQtPm51bUJ1Y2tldHM7IGkrKykgeworICAgICAgICAgaWYgKCFodC0+YnVja2V0c1tpXS5rZXlpZCkgY29udGludWU7CistICAgICAgICB1bnNpZ25lZCBpbnQga2V5SGFzaCA9IHJzdHJoYXNoKHJwbXN0clBvb2xTdHIocG9vbCwgaHQtPmJ1Y2tldHNbaV0ua2V5aWQpKTsKKysgICAgICAgIHVuc2lnbmVkIGludCBrZXlIYXNoID0gcnN0cmhhc2gocnBtc3RyUG9vbFN0ck5vTG9jayhwb29sLCBodC0+YnVja2V0c1tpXS5rZXlpZCkpOworICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaj0wOztqKyspIHsKKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGFzaCA9IGhhc2hidWNrZXQoa2V5SGFzaCwgaikgJSBudW1CdWNrZXRzOworICAgICAgICAgICAgIGlmICghYnVja2V0c1toYXNoXS5rZXlpZCkgeworQEAgLTE0OSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBwb29sSGFzaEFkZEhFbnRyeShycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKiBrZXksIHVuc2lnbmVkIGludCBrZQorICAgICAgICAgICAgIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkID0ga2V5aWQ7CisgICAgICAgICAgICAgaHQtPmtleUNvdW50Kys7CisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAocnBtc3RyUG9vbFN0cihwb29sLCBodC0+YnVja2V0c1toYXNoXS5rZXlpZCksIGtleSkpIHsKKysgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkKSwga2V5KSkgeworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTE5MSw3ICsxOTMsNyBAQCBzdGF0aWMgdm9pZCBwb29sSGFzaFByaW50U3RhdHMocnBtc3RyUG9vbCBwb29sKQorICAgICBpbnQgbWF4Y29sbGlzaW9ucyA9IDA7CisgCisgICAgIGZvciAoaT0wOyBpPGh0LT5udW1CdWNrZXRzOyBpKyspIHsKKy0gICAgICAgIHVuc2lnbmVkIGludCBrZXlIYXNoID0gcnN0cmhhc2gocnBtc3RyUG9vbFN0cihwb29sLCBodC0+YnVja2V0c1tpXS5rZXlpZCkpOworKyAgICAgICAgdW5zaWduZWQgaW50IGtleUhhc2ggPSByc3RyaGFzaChycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIGh0LT5idWNrZXRzW2ldLmtleWlkKSk7CisgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqPTA7O2orKykgeworICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoYXNoID0gaGFzaGJ1Y2tldChrZXlIYXNoLCBpKSAlIGh0LT5udW1CdWNrZXRzOworICAgICAgICAgICAgIGlmIChoYXNoPT1pKSB7CitAQCAtMjIxLDcgKzIyMyw3IEBAIHN0YXRpYyB2b2lkIHJwbXN0clBvb2xSZWhhc2gocnBtc3RyUG9vbCBwb29sKQorIAorICAgICBwb29sLT5oYXNoID0gcG9vbEhhc2hDcmVhdGUoc2l6ZWhpbnQpOworICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBwb29sLT5vZmZzX3NpemU7IGkrKykKKy0JcG9vbEhhc2hBZGRFbnRyeShwb29sLCBycG1zdHJQb29sU3RyKHBvb2wsIGkpLCBpKTsKKysJcG9vbEhhc2hBZGRFbnRyeShwb29sLCBycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIGkpLCBpKTsKKyB9CisgCisgcnBtc3RyUG9vbCBycG1zdHJQb29sQ3JlYXRlKHZvaWQpCitAQCAtMjQ1LDYgKzI0Nyw4IEBAIHJwbXN0clBvb2wgcnBtc3RyUG9vbENyZWF0ZSh2b2lkKQorIAorIHJwbXN0clBvb2wgcnBtc3RyUG9vbEZyZWUocnBtc3RyUG9vbCBwb29sKQorIHsKKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocG9vbCkgeworIAlpZiAocG9vbC0+bnJlZnMgPiAxKSB7CisgCSAgICBwb29sLT5ucmVmcy0tOworQEAgLTI2MCwxOCArMjY0LDI0IEBAIHJwbXN0clBvb2wgcnBtc3RyUG9vbEZyZWUocnBtc3RyUG9vbCBwb29sKQorIAkgICAgZnJlZShwb29sKTsKKyAJfQorICAgICB9CisrICAgIH0KKyAgICAgcmV0dXJuIE5VTEw7CisgfQorIAorIHJwbXN0clBvb2wgcnBtc3RyUG9vbExpbmsocnBtc3RyUG9vbCBwb29sKQorIHsKKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocG9vbCkKKyAJcG9vbC0+bnJlZnMrKzsKKysgICAgfQorICAgICByZXR1cm4gcG9vbDsKKyB9CisgCisgdm9pZCBycG1zdHJQb29sRnJlZXplKHJwbXN0clBvb2wgcG9vbCwgaW50IGtlZXBoYXNoKQorIHsKKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocG9vbCAmJiAhcG9vbC0+ZnJvemVuKSB7CisgCWlmICgha2VlcGhhc2gpIHsKKyAJICAgIHBvb2wtPmhhc2ggPSBwb29sSGFzaEZyZWUocG9vbC0+aGFzaCk7CitAQCAtMjgxLDE2ICsyOTEsMjAgQEAgdm9pZCBycG1zdHJQb29sRnJlZXplKHJwbXN0clBvb2wgcG9vbCwgaW50IGtlZXBoYXNoKQorIAkJCSAgICAgIHBvb2wtPm9mZnNfYWxsb2NlZCAqIHNpemVvZigqcG9vbC0+b2ZmcykpOworIAlwb29sLT5mcm96ZW4gPSAxOworICAgICB9CisrICAgIH0KKyB9CisgCisgdm9pZCBycG1zdHJQb29sVW5mcmVlemUocnBtc3RyUG9vbCBwb29sKQorIHsKKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocG9vbCkgeworIAlpZiAocG9vbC0+aGFzaCA9PSBOVUxMKSB7CisgCSAgICBycG1zdHJQb29sUmVoYXNoKHBvb2wpOworIAl9CisgCXBvb2wtPmZyb3plbiA9IDA7CisgICAgIH0KKysgICAgfQorIH0KKyAKKyBzdGF0aWMgcnBtc2lkIHJwbXN0clBvb2xQdXQocnBtc3RyUG9vbCBwb29sLCBjb25zdCBjaGFyICpzLCBzaXplX3Qgc2xlbiwgdW5zaWduZWQgaW50IGhhc2gpCitAQCAtMzUwLDcgKzM2NCw3IEBAIHN0YXRpYyBycG1zaWQgcnBtc3RyUG9vbEdldChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKiBrZXksIHNpemVfdCBrZXlsZW4sCisgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICB9CisgCistCXMgPSBycG1zdHJQb29sU3RyKHBvb2wsIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkKTsKKysJcyA9IHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQpOworIAkvKiBwb29sIHN0cmluZyBjb3VsZCBiZSBsb25nZXIgdGhhbiBrZXlsZW4sIHJlcXVpcmUgZXhhY3QgbWF0Y2hlICovCisgCWlmIChzdHJuY21wKHMsIGtleSwga2V5bGVuKSA9PSAwICYmIHNba2V5bGVuXSA9PSAnXDAnKQorIAkgICAgcmV0dXJuIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkOworQEAgLTM3MywyNyArMzg3LDMxIEBAIHN0YXRpYyBpbmxpbmUgcnBtc2lkIHN0cm4yaWQocnBtc3RyUG9vbCBwb29sLCBjb25zdCBjaGFyICpzLCBzaXplX3Qgc2xlbiwKKyBycG1zaWQgcnBtc3RyUG9vbElkbihycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzbGVuLCBpbnQgY3JlYXRlKQorIHsKKyAgICAgcnBtc2lkIHNpZCA9IDA7CistCisrICAgICNwcmFnbWEgb21wIGNyaXRpY2FsKHJwbXN0cnBvb2wpCisrICAgIHsKKyAgICAgaWYgKHMgIT0gTlVMTCkgeworIAl1bnNpZ25lZCBpbnQgaGFzaCA9IHJzdHJuaGFzaChzLCBzbGVuKTsKKyAJc2lkID0gc3RybjJpZChwb29sLCBzLCBzbGVuLCBoYXNoLCBjcmVhdGUpOworICAgICB9CisrICAgIH0KKyAgICAgcmV0dXJuIHNpZDsKKyB9CisgCisgcnBtc2lkIHJwbXN0clBvb2xJZChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIGludCBjcmVhdGUpCisgeworICAgICBycG1zaWQgc2lkID0gMDsKKy0KKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocyAhPSBOVUxMKSB7CisgCXNpemVfdCBzbGVuOworIAl1bnNpZ25lZCBpbnQgaGFzaCA9IHJzdHJsZW5oYXNoKHMsICZzbGVuKTsKKyAJc2lkID0gc3RybjJpZChwb29sLCBzLCBzbGVuLCBoYXNoLCBjcmVhdGUpOworICAgICB9CisrICAgIH0KKyAgICAgcmV0dXJuIHNpZDsKKyB9CisgCistY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHIocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorK3N0YXRpYyBjb25zdCBjaGFyICogcnBtc3RyUG9vbFN0ck5vTG9jayhycG1zdHJQb29sIHBvb2wsIHJwbXNpZCBzaWQpCisgeworICAgICBjb25zdCBjaGFyICpzID0gTlVMTDsKKyAgICAgaWYgKHBvb2wgJiYgc2lkID4gMCAmJiBzaWQgPD0gcG9vbC0+b2Zmc19zaXplKQorQEAgLTQwMSwxMiArNDE5LDI1IEBAIGNvbnN0IGNoYXIgKiBycG1zdHJQb29sU3RyKHJwbXN0clBvb2wgcG9vbCwgcnBtc2lkIHNpZCkKKyAgICAgcmV0dXJuIHM7CisgfQorIAorK2NvbnN0IGNoYXIgKiBycG1zdHJQb29sU3RyKHJwbXN0clBvb2wgcG9vbCwgcnBtc2lkIHNpZCkKKyt7CisrICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisrICAgIHMgPSBycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIHNpZCk7CisrICAgIH0KKysgICAgcmV0dXJuIHM7CisrfQorKworIHNpemVfdCBycG1zdHJQb29sU3RybGVuKHJwbXN0clBvb2wgcG9vbCwgcnBtc2lkIHNpZCkKKyB7CisgICAgIHNpemVfdCBzbGVuID0gMDsKKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocG9vbCAmJiBzaWQgPiAwICYmIHNpZCA8PSBwb29sLT5vZmZzX3NpemUpIHsKKyAJc2xlbiA9IHN0cmxlbihwb29sLT5vZmZzW3NpZF0pOworICAgICB9CisrICAgIH0KKyAgICAgcmV0dXJuIHNsZW47CisgfQorIAorQEAgLTQyMSw1ICs0NTIsMTIgQEAgaW50IHJwbXN0clBvb2xTdHJlcShycG1zdHJQb29sIHBvb2xBLCBycG1zaWQgc2lkQSwKKyAKKyBycG1zaWQgcnBtc3RyUG9vbE51bVN0cihycG1zdHJQb29sIHBvb2wpCisgeworLSAgICByZXR1cm4gKHBvb2wgIT0gTlVMTCkgPyBwb29sLT5vZmZzX3NpemUgOiAwOworKyAgICBycG1zaWQgaWQgPSAwOworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisrICAgIGlmIChwb29sKSB7CisrCWlkID0gcG9vbC0+b2Zmc19zaXplOworKyAgICB9CisrICAgIH0KKysgICAgcmV0dXJuIGlkOworIH0KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGE1NjUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCkBAIC0wLDAgKzEsMzM3IEBACitGcm9tIGVjMzA1Nzk1YTMwMmQyMjYzNDNlNjkwMzFmZjIwMjRkZmNkZTY5YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAxNzowODowOSArMDMwMAorU3ViamVjdDogW1BBVENIIDMvM10gYnVpbGQvcGFjay5jOiByZW1vdmUgc3RhdGljIGxvY2FsIHZhcmlhYmxlcyBmcm9tCisgYnVpbGRIb3N0KCkgYW5kIGdldEJ1aWxkVGltZSgpCisKK1RoZWlyIHVzZSBpcyBjYXVzaW5nIGRpZmZpY3VsdCB0byBkaWFnbm96ZSBkYXRhIHJhY2VzIHdoZW4gYnVpbGRpbmcgbXVsdGlwbGUKK3BhY2thZ2VzIGluIHBhcmFsbGVsLCBhbmQgaXMgYSBiYWQgaWRlYSBpbiBnZW5lcmFsLCBhcyBpdCBhbHNvIG1ha2VzIGl0IG1vcmUKK2RpZmZpY3VsdCB0byByZWFzb24gYWJvdXQgY29kZS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGJ1aWxkL2J1aWxkLmMgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBidWlsZC9wYWNrLmMgICAgICAgICAgICAgIHwgODQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBidWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIHwgIDggKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGQuYyBiL2J1aWxkL2J1aWxkLmMKK2luZGV4IDVmOTljOGRiNy4uMDlhMTMxMWM1IDEwMDY0NAorLS0tIGEvYnVpbGQvYnVpbGQuYworKysrIGIvYnVpbGQvYnVpbGQuYworQEAgLTYsNiArNiw4IEBACisgI2luY2x1ZGUgInN5c3RlbS5oIgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxuZXRkYi5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1sb2cuaD4KK0BAIC0xNiw2ICsxOCw1MCBAQAorIAorICNpbmNsdWRlICJkZWJ1Zy5oIgorIAorK3N0YXRpYyBycG1fdGltZV90IGdldEJ1aWxkVGltZSh2b2lkKQorK3sKKysgICAgcnBtX3RpbWVfdCBidWlsZFRpbWUgPSAwOworKyAgICBjaGFyICpzcmNkYXRlOworKyAgICB0aW1lX3QgZXBvY2g7CisrICAgIGNoYXIgKmVuZHB0cjsKKysKKysgICAgc3JjZGF0ZSA9IGdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKTsKKysgICAgaWYgKHNyY2RhdGUpIHsKKysgICAgICAgIGVycm5vID0gMDsKKysgICAgICAgIGVwb2NoID0gc3RydG9sKHNyY2RhdGUsICZlbmRwdHIsIDEwKTsKKysgICAgICAgIGlmIChzcmNkYXRlID09IGVuZHB0ciB8fCAqZW5kcHRyIHx8IGVycm5vICE9IDApCisrICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19FUlIsIF8oInVuYWJsZSB0byBwYXJzZSBTT1VSQ0VfREFURV9FUE9DSFxuIikpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGJ1aWxkVGltZSA9IChpbnQzMl90KSBlcG9jaDsKKysgICAgfSBlbHNlCisrICAgICAgICBidWlsZFRpbWUgPSAoaW50MzJfdCkgdGltZShOVUxMKTsKKysKKysgICAgcmV0dXJuIGJ1aWxkVGltZTsKKyt9CisrCisrc3RhdGljIGNoYXIgKiBidWlsZEhvc3Qodm9pZCkKKyt7CisrICAgIGNoYXIqIGhvc3RuYW1lOworKyAgICBzdHJ1Y3QgaG9zdGVudCAqaGJuOworKyAgICBjaGFyICpiaE1hY3JvOworKworKyAgICBiaE1hY3JvID0gcnBtRXhwYW5kKCIlez9fYnVpbGRob3N0fSIsIE5VTEwpOworKyAgICBpZiAoc3RyY21wKGJoTWFjcm8sICIiKSAhPSAwKSB7CisrICAgICAgICByYXNwcmludGYoJmhvc3RuYW1lLCAiJXMiLCBiaE1hY3JvKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGhvc3RuYW1lID0gcmNhbGxvYygxMDI0LCBzaXplb2YoKmhvc3RuYW1lKSk7CisrICAgICAgICAodm9pZCkgZ2V0aG9zdG5hbWUoaG9zdG5hbWUsIDEwMjQpOworKyAgICAgICAgaGJuID0gZ2V0aG9zdGJ5bmFtZShob3N0bmFtZSk7CisrICAgICAgICBpZiAoaGJuKQorKyAgICAgICAgICAgIHN0cmNweShob3N0bmFtZSwgaGJuLT5oX25hbWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfV0FSTklORywKKysgICAgICAgICAgICAgICAgICAgIF8oIkNvdWxkIG5vdCBjYW5vbmljYWxpemUgaG9zdG5hbWU6ICVzXG4iKSwgaG9zdG5hbWUpOworKyAgICB9CisrICAgIGZyZWUoYmhNYWNybyk7CisrICAgIHJldHVybihob3N0bmFtZSk7CisrfQorKworIC8qKgorICAqLworIHN0YXRpYyBycG1SQyBkb1JtU291cmNlKHJwbVNwZWMgc3BlYykKK0BAIC0yMDMsNiArMjQ5LDkgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCisgICAgIHJwbVJDIHJjID0gUlBNUkNfT0s7CisgICAgIGludCB0ZXN0ID0gKHdoYXQgJiBSUE1CVUlMRF9OT0JVSUxEKTsKKyAgICAgY2hhciAqY29va2llID0gYnVpbGRBcmdzLT5jb29raWUgPyB4c3RyZHVwKGJ1aWxkQXJncy0+Y29va2llKSA6IE5VTEw7CisrICAgIGNvbnN0IGNoYXIqIGhvc3QgPSBidWlsZEhvc3QoKTsKKysgICAgcnBtX3RpbWVfdCBidWlsZFRpbWUgPSBnZXRCdWlsZFRpbWUoKTsKKysKKyAKKyAgICAgaWYgKHJwbUV4cGFuZE51bWVyaWMoIiV7P3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21fY2hhbmdlbG9nfSIpICYmCisgCWdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKSA9PSBOVUxMKSB7CitAQCAtMjcxLDExICszMjAsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCisgCQlnb3RvIGV4aXQ7CisgCisgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFU09VUkNFKSAmJiAhdGVzdCkgJiYKKy0JICAgIChyYyA9IHBhY2thZ2VTb3VyY2VzKHNwZWMsICZjb29raWUpKSkKKysJICAgIChyYyA9IHBhY2thZ2VTb3VyY2VzKHNwZWMsICZjb29raWUsIGJ1aWxkVGltZSwgaG9zdCkpKQorIAkJcmV0dXJuIHJjOworIAorIAlpZiAoKCh3aGF0ICYgUlBNQlVJTERfUEFDS0FHRUJJTkFSWSkgJiYgIXRlc3QpICYmCistCSAgICAocmMgPSBwYWNrYWdlQmluYXJpZXMoc3BlYywgY29va2llLCAoZGlkQnVpbGQgPT0gMCkpKSkKKysJICAgIChyYyA9IHBhY2thZ2VCaW5hcmllcyhzcGVjLCBjb29raWUsIChkaWRCdWlsZCA9PSAwKSwgYnVpbGRUaW1lLCBob3N0KSkpCisgCQlnb3RvIGV4aXQ7CisgCQorIAlpZiAoKHdoYXQgJiBSUE1CVUlMRF9DTEVBTikgJiYKK0BAIC0yOTUsNiArMzQ0LDcgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCisgCSh2b2lkKSB1bmxpbmsoc3BlYy0+c3BlY0ZpbGUpOworIAorIGV4aXQ6CisrICAgIGZyZWUoaG9zdCk7CisgICAgIGZyZWUoY29va2llKTsKKyAgICAgc3BlYy0+cm9vdERpciA9IE5VTEw7CisgICAgIGlmIChyYyAhPSBSUE1SQ19PSyAmJiBycG1sb2dHZXROcmVjcygpID4gMCkgeworZGlmZiAtLWdpdCBhL2J1aWxkL3BhY2suYyBiL2J1aWxkL3BhY2suYworaW5kZXggZWQ1YjlhYjRlLi42MjQyNzA2NWEgMTAwNjQ0CistLS0gYS9idWlsZC9wYWNrLmMKKysrKyBiL2J1aWxkL3BhY2suYworQEAgLTYsOCArNiw2IEBACisgI2luY2x1ZGUgInN5c3RlbS5oIgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxuZXRkYi5oPgorLSNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4JCQkvKiBSUE1TSUdUQUcqLCBycG1SZWFkUGFja2FnZUZpbGUgKi8KK0BAIC0xNTEsNTcgKzE0OSw2IEBAIGV4aXQ6CisgICAgIHJldHVybiByYzsKKyB9CisgCistc3RhdGljIHJwbV90aW1lX3QgKiBnZXRCdWlsZFRpbWUodm9pZCkKKy17CistICAgIHN0YXRpYyBycG1fdGltZV90IGJ1aWxkVGltZVsxXTsKKy0gICAgY2hhciAqc3JjZGF0ZTsKKy0gICAgdGltZV90IGVwb2NoOworLSAgICBjaGFyICplbmRwdHI7CistCistICAgIGlmIChidWlsZFRpbWVbMF0gPT0gMCkgeworLSAgICAgICAgc3JjZGF0ZSA9IGdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKTsKKy0gICAgICAgIGlmIChzcmNkYXRlKSB7CistICAgICAgICAgICAgZXJybm8gPSAwOworLSAgICAgICAgICAgIGVwb2NoID0gc3RydG9sKHNyY2RhdGUsICZlbmRwdHIsIDEwKTsKKy0gICAgICAgICAgICBpZiAoc3JjZGF0ZSA9PSBlbmRwdHIgfHwgKmVuZHB0ciB8fCBlcnJubyAhPSAwKQorLSAgICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX0VSUiwgXygidW5hYmxlIHRvIHBhcnNlIFNPVVJDRV9EQVRFX0VQT0NIXG4iKSk7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBidWlsZFRpbWVbMF0gPSAoaW50MzJfdCkgZXBvY2g7CistICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICBidWlsZFRpbWVbMF0gPSAoaW50MzJfdCkgdGltZShOVUxMKTsKKy0gICAgfQorLQorLSAgICByZXR1cm4gYnVpbGRUaW1lOworLX0KKy0KKy1zdGF0aWMgY29uc3QgY2hhciAqIGJ1aWxkSG9zdCh2b2lkKQorLXsKKy0gICAgc3RhdGljIGNoYXIgaG9zdG5hbWVbMTAyNF07CistICAgIHN0YXRpYyBpbnQgb25lc2hvdCA9IDA7CistICAgIHN0cnVjdCBob3N0ZW50ICpoYm47CistICAgIGNoYXIgKmJoTWFjcm87CistCistICAgIGlmICghIG9uZXNob3QpIHsKKy0gICAgICAgIGJoTWFjcm8gPSBycG1FeHBhbmQoIiV7P19idWlsZGhvc3R9IiwgTlVMTCk7CistICAgICAgICBpZiAoc3RyY21wKGJoTWFjcm8sICIiKSAhPSAwICYmIHN0cmxlbihiaE1hY3JvKSA8IDEwMjQpIHsKKy0gICAgICAgICAgICBzdHJjcHkoaG9zdG5hbWUsIGJoTWFjcm8pOworLSAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBpZiAoc3RyY21wKGJoTWFjcm8sICIiKSAhPSAwKQorLSAgICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX1dBUk5JTkcsIF8oIlRoZSBfYnVpbGRob3N0IG1hY3JvIGlzIHRvbyBsb25nXG4iKSk7CistICAgICAgICAgICAgKHZvaWQpIGdldGhvc3RuYW1lKGhvc3RuYW1lLCBzaXplb2YoaG9zdG5hbWUpKTsKKy0gICAgICAgICAgICBoYm4gPSBnZXRob3N0YnluYW1lKGhvc3RuYW1lKTsKKy0gICAgICAgICAgICBpZiAoaGJuKQorLSAgICAgICAgICAgICAgICBzdHJjcHkoaG9zdG5hbWUsIGhibi0+aF9uYW1lKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfV0FSTklORywKKy0gICAgICAgICAgICAgICAgICAgICAgICBfKCJDb3VsZCBub3QgY2Fub25pY2FsaXplIGhvc3RuYW1lOiAlc1xuIiksIGhvc3RuYW1lKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGZyZWUoYmhNYWNybyk7CistICAgICAgICBvbmVzaG90ID0gMTsKKy0gICAgfQorLSAgICByZXR1cm4oaG9zdG5hbWUpOworLX0KKy0KKyBzdGF0aWMgcnBtUkMgcHJvY2Vzc1NjcmlwdEZpbGVzKHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2cpCisgeworICAgICBzdHJ1Y3QgVHJpZ2dlckZpbGVFbnRyeSAqcDsKK0BAIC0zMDgsNyArMjU1LDggQEAgc3RhdGljIGludCBoYXZlUmljaERlcChQYWNrYWdlIHBrZykKKyB9CisgCisgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKKy0JCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBjaGFyICoqY29va2llKQorKwkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUsCisrCQkgICAgICBycG1fdGltZV90IGJ1aWxkVGltZSwgY29uc3QgY2hhciogYnVpbGRIb3N0KQorIHsKKyAgICAgRkRfdCBmZCA9IE5VTEw7CisgICAgIGNoYXIgKiBycG1pb19mbGFncyA9IE5VTEw7CitAQCAtMzk3LDcgKzM0NSw3IEBAIHN0YXRpYyBycG1SQyB3cml0ZVJQTShQYWNrYWdlIHBrZywgdW5zaWduZWQgY2hhciAqKiBwa2dpZHAsCisgCisgICAgIC8qIENyZWF0ZSBhbmQgYWRkIHRoZSBjb29raWUgKi8KKyAgICAgaWYgKGNvb2tpZSkgeworLQlyYXNwcmludGYoY29va2llLCAiJXMgJWQiLCBidWlsZEhvc3QoKSwgKGludCkgKCpnZXRCdWlsZFRpbWUoKSkpOworKwlyYXNwcmludGYoY29va2llLCAiJXMgJWQiLCBidWlsZEhvc3QsIGJ1aWxkVGltZSk7CisgCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX0NPT0tJRSwgKmNvb2tpZSk7CisgICAgIH0KKyAgICAgCitAQCAtNTQ2LDcgKzQ5NCw3IEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorICAgICByZXR1cm4gUlBNUkNfT0s7CisgfQorIAorLXN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nLCBjaGFyKiogZmlsZW5hbWUpCisrc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIGNoYXIqKiBmaWxlbmFtZSwgcnBtX3RpbWVfdCBidWlsZFRpbWUsIGNvbnN0IGNoYXIqIGJ1aWxkSG9zdCkKKyB7CisgCWNvbnN0IGNoYXIgKmVycm9yU3RyaW5nOworIAlycG1SQyByYyA9IFJQTVJDX09LOworQEAgLTU2NSw4ICs1MTMsOCBAQCBzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaAorIAloZWFkZXJDb3B5VGFncyhzcGVjLT5wYWNrYWdlcy0+aGVhZGVyLCBwa2ctPmhlYWRlciwgY29weVRhZ3MpOworIAkKKyAJaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfUlBNVkVSU0lPTiwgVkVSU0lPTik7CistCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxESE9TVCwgYnVpbGRIb3N0KCkpOworLQloZWFkZXJQdXRVaW50MzIocGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMRFRJTUUsIGdldEJ1aWxkVGltZSgpLCAxKTsKKysJaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QpOworKwloZWFkZXJQdXRVaW50MzIocGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMRFRJTUUsICZidWlsZFRpbWUsIDEpOworIAorIAlpZiAoc3BlYy0+c291cmNlUGtnSWQgIT0gTlVMTCkgeworIAkgICAgaGVhZGVyUHV0QmluKHBrZy0+aGVhZGVyLCBSUE1UQUdfU09VUkNFUEtHSUQsIHNwZWMtPnNvdXJjZVBrZ0lkLDE2KTsKK0BAIC02MDQsNyArNTUyLDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKKyAJICAgIGZyZWUoYmluUnBtKTsKKyAJfQorIAorLQlyYyA9IHdyaXRlUlBNKHBrZywgTlVMTCwgKmZpbGVuYW1lLCBOVUxMKTsKKysJcmMgPSB3cml0ZVJQTShwa2csIE5VTEwsICpmaWxlbmFtZSwgTlVMTCwgYnVpbGRUaW1lLCBidWlsZEhvc3QpOworIAlpZiAocmMgPT0gUlBNUkNfT0spIHsKKyAJICAgIC8qIERvIGNoZWNrIGVhY2ggd3JpdHRlbiBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KKyAJICAgIGNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2t9ICIsICpmaWxlbmFtZSwgTlVMTCk7CitAQCAtNjI0LDcgKzU3Miw3IEBAIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEKKyAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqbmV4dDsKKyB9OworIAorLXN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IE5VTEw7CisgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSBOVUxMOworQEAgLTYzNiw3ICs1ODQsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYworICAgICAgICAgaWYgKHBrZyA9PSBzcGVjLT5wYWNrYWdlcykgeworICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBwYWNrYWdlIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBhaGVhZCBvZiBvdGhlcnMsIGFzIHRoZXkgY29weQorICAgICAgICAgICAgIC8vIGNoYW5nZWxvZyBkYXRhIGZyb20gaXQsIGFuZCBzbyBvdGhlcndpc2UgZGF0YSByYWNlcyB3b3VsZCBoYXBwZW4KKy0gICAgICAgICAgICB0YXNrLT5yZXN1bHQgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHBrZywgY29va2llLCBjaGVhdGluZywgJih0YXNrLT5maWxlbmFtZSkpOworKyAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSwgYnVpbGRUaW1lLCBidWlsZEhvc3QpOworICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKKyAgICAgICAgICAgICB0YXNrcyA9IHRhc2s7CisgICAgICAgICB9CitAQCAtNjUzLDcgKzYwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjCisgICAgICAgICBpZiAodGFzayAhPSB0YXNrcykKKyAgICAgICAgICNwcmFnbWEgb21wIHRhc2sKKyAgICAgICAgIHsKKy0gICAgICAgICAgICB0YXNrLT5yZXN1bHQgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHRhc2stPnBrZywgY29va2llLCBjaGVhdGluZywgJih0YXNrLT5maWxlbmFtZSkpOworKyAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgdGFzay0+cGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSwgYnVpbGRUaW1lLCBidWlsZEhvc3QpOworICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTY3MSwxMSArNjE5LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCisgICAgIH0KKyB9CisgCistcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisrcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBjaGFyICpwa2dsaXN0ID0gTlVMTDsKKyAKKy0gICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBydW5CaW5hcnlQYWNrYWdlVGFza3Moc3BlYywgY29va2llLCBjaGVhdGluZyk7CisrICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2tzID0gcnVuQmluYXJ5UGFja2FnZVRhc2tzKHNwZWMsIGNvb2tpZSwgY2hlYXRpbmcsIGJ1aWxkVGltZSwgYnVpbGRIb3N0KTsKKyAKKyAgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKKyAgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKK0BAIC03MDIsMjIgKzY1MCwyMiBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyAgICAgcmV0dXJuIFJQTVJDX09LOworIH0KKyAKKy1ycG1SQyBwYWNrYWdlU291cmNlcyhycG1TcGVjIHNwZWMsIGNoYXIgKipjb29raWUpCisrcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llLCBycG1fdGltZV90IGJ1aWxkVGltZSwgY2hhciogYnVpbGRIb3N0KQorIHsKKyAgICAgUGFja2FnZSBzb3VyY2VQa2cgPSBzcGVjLT5zb3VyY2VQYWNrYWdlOworICAgICBycG1SQyByYzsKKyAKKyAgICAgLyogQWRkIHNvbWUgY3J1ZnQgKi8KKyAgICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfUlBNVkVSU0lPTiwgVkVSU0lPTik7CistICAgIGhlYWRlclB1dFN0cmluZyhzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxESE9TVCwgYnVpbGRIb3N0KCkpOworLSAgICBoZWFkZXJQdXRVaW50MzIoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMRFRJTUUsIGdldEJ1aWxkVGltZSgpLCAxKTsKKysgICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QpOworKyAgICBoZWFkZXJQdXRVaW50MzIoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMRFRJTUUsICZidWlsZFRpbWUsIDEpOworIAorICAgICAvKiBYWFggdGhpcyBzaG91bGQgYmUgJV9zcnBtZGlyICovCisgICAgIHsJY2hhciAqZm4gPSBycG1HZXRQYXRoKCIle19zcmNycG1kaXJ9LyIsIHNwZWMtPnNvdXJjZVJwbU5hbWUsTlVMTCk7CisgCWNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2tfc3JwbX0gIiwgZm4sIE5VTEwpOworIAorIAlzcGVjLT5zb3VyY2VQa2dJZCA9IE5VTEw7CistCXJjID0gd3JpdGVSUE0oc291cmNlUGtnLCAmc3BlYy0+c291cmNlUGtnSWQsIGZuLCBjb29raWUpOworKwlyYyA9IHdyaXRlUlBNKHNvdXJjZVBrZywgJnNwZWMtPnNvdXJjZVBrZ0lkLCBmbiwgY29va2llLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgCisgCS8qIERvIGNoZWNrIFNSUE0gcGFja2FnZSBpZiBlbmFibGVkICovCisgCWlmIChyYyA9PSBSUE1SQ19PSyAmJiBwa2djaGVja1swXSAhPSAnICcpIHsKK2RpZmYgLS1naXQgYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAoraW5kZXggODM1MWE2YTM0Li43OTczMzdjYTcgMTAwNjQ0CistLS0gYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCisrKysgYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCitAQCAtNDA4LDE5ICs0MDgsMjMgQEAgcnBtUkMgcHJvY2Vzc1NvdXJjZUZpbGVzKHJwbVNwZWMgc3BlYywgcnBtQnVpbGRQa2dGbGFncyBwa2dGbGFncyk7CisgICogQHBhcmFtIHNwZWMJCXNwZWMgZmlsZSBjb250cm9sIHN0cnVjdHVyZQorICAqIEBwYXJhbSBjb29raWUJYnVpbGQgaWRlbnRpZmllciAiY29va2llIiBvciBOVUxMCisgICogQHBhcmFtIGNoZWF0aW5nCXdhcyBidWlsZCBzaG9ydGNpcmN1aXRlZD8KKysgKiBAcGFyYW0gYnVpbGRUaW1lCXRoZSBidWlsZCB0aW1lc3RhbXAgdGhhdCBnb2VzIGludG8gcGFja2FnZXMKKysgKiBAcGFyYW0gYnVpbGRIb3N0CXRoZSBob3N0bmFtZSB3aGVyZSB0aGUgYnVpbGQgaXMgaGFwcGVuaW5nCisgICogQHJldHVybgkJUlBNUkNfT0sgb24gc3VjY2VzcworICAqLworIFJQTV9HTlVDX0lOVEVSTkFMCistcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpOworK3JwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nLCBycG1fdGltZV90IGJ1aWxkVGltZSwgY2hhciogYnVpbGRIb3N0KTsKKyAKKyAvKiogXGluZ3JvdXAgcnBtYnVpbGQKKyAgKiBHZW5lcmF0ZSBzb3VyY2UgcGFja2FnZS4KKyAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCisgICogQHJldHZhbCBjb29raWUJYnVpbGQgaWRlbnRpZmllciAiY29va2llIiBvciBOVUxMCisrICogQHBhcmFtIGJ1aWxkVGltZQl0aGUgYnVpbGQgdGltZXN0YW1wIHRoYXQgZ29lcyBpbnRvIHBhY2thZ2VzCisrICogQHBhcmFtIGJ1aWxkSG9zdAl0aGUgaG9zdG5hbWUgd2hlcmUgdGhlIGJ1aWxkIGlzIGhhcHBlbmluZworICAqIEByZXR1cm4JCVJQTVJDX09LIG9uIHN1Y2Nlc3MKKyAgKi8KKyBSUE1fR05VQ19JTlRFUk5BTAorLXJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSk7CisrcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llLCBycG1fdGltZV90IGJ1aWxkVGltZSwgY2hhciogYnVpbGRIb3N0KTsKKyAKKyBSUE1fR05VQ19JTlRFUk5BTAorIGludCBhZGRMYW5nVGFnKHJwbVNwZWMgc3BlYywgSGVhZGVyIGgsIHJwbVRhZ1ZhbCB0YWcsCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtX2dpdC5iYgppbmRleCBiMGY1NzgwLi43ODY2MzE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKQEAgLTM4LDggKzM4LDEzIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAogICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUFYgPSAiNC4xMy45MCtnaXQke1NSQ1BWfSIKIFBFID0gIjEiCkBAIC00Nyw4ICs1Miw4IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQogZXhwb3J0IFBZVEhPTl9BQkkKQEAgLTY4LDYgKzczLDkgQEAKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCisKICMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgogIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKQEAgLTk5LDcgKzEwNyw4IEBACiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKKwlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3JvcwogCiAJc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9L2VudiAke1BZVEhPTl9QTn18JyBcCiAJICAgICR7RH0ke2xpYmRpcn0vcnBtL3B5dGhvbmRpc3RkZXBzLnB5CkBAIC0xMTksMyArMTI4LDExIEBACiBSUFJPVklERVNfJHtQTn0gKz0gInJwbS1idWlsZCIKIAogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIHB5dGhvbjMtY29yZSIKKworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJycG1fcGFja2FnZV9wcmVwcm9jZXNzIgorCisjIERvIG5vdCBzcGVjaWZ5IGEgc3lzcm9vdCB3aGVuIGNvbXBpbGluZyBvbiBhIHRhcmdldC4KK3JwbV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgeworCXNlZCAtaSAtZSAnczotLXN5c3Jvb3RbXiBdKjo6ZycgXAorCSAgICAke1BLR0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9DVkUtMjAxNy0xNDA2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE3LTE0MDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDBkMWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE3LTE0MDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUzICswLDAgQEAKLUZyb20gZDg2ZDI4M2ZjYjM1ZDE0NDJhMTIxYjkyMDMwODg0NTIzOTA4YTMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG5hZ2FjaGlrYSA8bmFnYWNoaWthQGIyZGQwM2M4LTM5ZDQtNGQ4Zi05OGZmLTgyM2ZlNjliMDgwZT4KLURhdGU6IFNhdCwgMjIgQXByIDIwMTcgMDc6Mjk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVyZ2UgcmV2aXNpb24ocykgNTgzMjMsNTgzMjQ6Ci0KLQlNZXJnZSBqc29uLTIuMC40LgotCi0JICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9yaS9qc29uL3JlbGVhc2VzL3RhZy92Mi4wLjQKLQkgICogaHR0cHM6Ly9naXRodWIuY29tL2Zsb3JpL2pzb24vYmxvYi8wOWZhYmViMDNlNzNlZDg4ZGM4Y2U4ZjE5ZDc2YWM1OWU1MWRhZTIwL0NIQU5HRVMubWQjMjAxNy0wMy0yMy0yMDQKLQlVc2UgYGFzc2VydF9yYWlzZWAgaW5zdGVhZCBvZiBgYXNzZXJ0X3JhaXNlc2AuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9jaS5ydWJ5LWxhbmcub3JnL3J1YnkvYnJhbmNoZXMvcnVieV8yXzRANTg0NDUgYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTQwNjQKLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXNhLmNvbT4KLQotLS0tCi0gZXh0L2pzb24vZmJ1ZmZlci9mYnVmZmVyLmggICAgICAgfCAgIDMgLS0tCi0gZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jICAgfCAgMTIgKysrKystLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCAgIHwgICAxIC0KLSBleHQvanNvbi9qc29uLmdlbXNwZWMgICAgICAgICAgICB8IEJpbiA1NDczIC0+IDU0NzQgYnl0ZXMKLSBleHQvanNvbi9saWIvanNvbi92ZXJzaW9uLnJiICAgICB8ICAgMiArLQotIGV4dC9qc29uL3BhcnNlci9wYXJzZXIuYyAgICAgICAgIHwgIDQ4ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIGV4dC9qc29uL3BhcnNlci9wYXJzZXIucmwgICAgICAgIHwgIDE0ICsrKysrKysrKy0tLQotIHRlc3QvanNvbi9qc29uX2VuY29kaW5nX3Rlc3QucmIgIHwgICAyICsrCi0gdGVzdC9qc29uL2pzb25fZ2VuZXJhdG9yX3Rlc3QucmIgfCAgIDAKLSB2ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQotIDEwIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQotIG1vZGUgY2hhbmdlIDEwMDc1NSA9PiAxMDA2NDQgdGVzdC9qc29uL2pzb25fZ2VuZXJhdG9yX3Rlc3QucmIKLQotSW5kZXg6IHJ1YnktMi40LjAvZXh0L2pzb24vZmJ1ZmZlci9mYnVmZmVyLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vZmJ1ZmZlci9mYnVmZmVyLmgKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2ZidWZmZXIvZmJ1ZmZlci5oCi1AQCAtMTIsOSArMTIsNiBAQAotICNkZWZpbmUgUkZMT0FUX1ZBTFVFKHZhbCkgKFJGTE9BVCh2YWwpLT52YWx1ZSkKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIFJBUlJBWV9QVFIKLS0jZGVmaW5lIFJBUlJBWV9QVFIoQVJSQVkpIFJBUlJBWShBUlJBWSktPnB0cgotLSNlbmRpZgotICNpZm5kZWYgUkFSUkFZX0xFTgotICNkZWZpbmUgUkFSUkFZX0xFTihBUlJBWSkgUkFSUkFZKEFSUkFZKS0+bGVuCi0gI2VuZGlmCi1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi0rKysgcnVieS0yLjQuMC9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKLUBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIGNoYXIgKmZzdHJuZHVwKGNvbnN0IGNoYXIgKnB0ciwgdQotICAgY2hhciAqcmVzdWx0OwotICAgaWYgKGxlbiA8PSAwKSByZXR1cm4gTlVMTDsKLSAgIHJlc3VsdCA9IEFMTE9DX04oY2hhciwgbGVuKTsKLS0gIG1lbWNjcHkocmVzdWx0LCBwdHIsIDAsIGxlbik7Ci0rICBtZW1jcHkocmVzdWx0LCBwdHIsIGxlbik7Ci0gICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLUBAIC0xMDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX2luZGVudF9zZXQoVkFMVUUgc2VsCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKLS0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7Ci0rICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+c3BhY2UpIHJ1YnlfeGZyZWUoc3RhdGUtPnNwYWNlKTsKLS0gICAgICAgIHN0YXRlLT5zcGFjZSA9IHN0cmR1cChSU1RSSU5HX1BUUihzcGFjZSkpOwotKyAgICAgICAgc3RhdGUtPnNwYWNlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2UpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPnNwYWNlX2xlbiA9IGxlbjsKLSAgICAgfQotICAgICByZXR1cm4gUW5pbDsKLUBAIC0xMTM2LDcgKzExMzYsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX3NwYWNlX2JlZm9yZV9zZXQoVkFMCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKLS0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5vYmplY3RfbmwpIHJ1YnlfeGZyZWUoc3RhdGUtPm9iamVjdF9ubCk7Ci0tICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKG9iamVjdF9ubCkpOwotKyAgICAgICAgc3RhdGUtPm9iamVjdF9ubCA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKG9iamVjdF9ubCksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+b2JqZWN0X25sX2xlbiA9IGxlbjsKLSAgICAgfQotICAgICByZXR1cm4gUW5pbDsKLUBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX2FycmF5X25sX3NldChWQUxVRSBzCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmFycmF5X25sKSBydWJ5X3hmcmVlKHN0YXRlLT5hcnJheV9ubCk7Ci0tICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIoYXJyYXlfbmwpKTsKLSsgICAgICAgIHN0YXRlLT5hcnJheV9ubCA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5hcnJheV9ubF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi0rKysgcnVieS0yLjQuMC9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKLUBAIC0xLDcgKzEsNiBAQAotICNpZm5kZWYgX0dFTkVSQVRPUl9IXwotICNkZWZpbmUgX0dFTkVSQVRPUl9IXwotIAotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotIAotSW5kZXg6IHJ1YnktMi40LjAvZXh0L2pzb24vbGliL2pzb24vdmVyc2lvbi5yYgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9saWIvanNvbi92ZXJzaW9uLnJiCi0rKysgcnVieS0yLjQuMC9leHQvanNvbi9saWIvanNvbi92ZXJzaW9uLnJiCi1AQCAtMSw3ICsxLDcgQEAKLSAjIGZyb3plbl9zdHJpbmdfbGl0ZXJhbDogZmFsc2UKLSBtb2R1bGUgSlNPTgotICAgIyBKU09OIHZlcnNpb24KLS0gIFZFUlNJT04gICAgICAgICA9ICcyLjAuMicKLSsgIFZFUlNJT04gICAgICAgICA9ICcyLjAuNCcKLSAgIFZFUlNJT05fQVJSQVkgICA9IFZFUlNJT04uc3BsaXQoL1wuLykubWFwIHsgfHh8IHgudG9faSB9ICMgOm5vZG9jOgotICAgVkVSU0lPTl9NQUpPUiAgID0gVkVSU0lPTl9BUlJBWVswXSAjIDpub2RvYzoKLSAgIFZFUlNJT05fTUlOT1IgICA9IFZFUlNJT05fQVJSQVlbMV0gIyA6bm9kb2M6Ci1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9wYXJzZXIvcGFyc2VyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vcGFyc2VyL3BhcnNlci5jCi0rKysgcnVieS0yLjQuMC9leHQvanNvbi9wYXJzZXIvcGFyc2VyLmMKLUBAIC0xNDM1LDEzICsxNDM1LDIxIEBAIHN0YXRpYyBWQUxVRSBqc29uX3N0cmluZ191bmVzY2FwZShWQUxVRQotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBRbmlsOwotKyAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgRVhDX0VOQ09ESU5HIGVQYXJzZXJFcnJvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiJXU6IGluY29tcGxldGUgdW5pY29kZSBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBVVEYzMiBjaCA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgKytwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcGUgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5JX1NVUl9ISUdIX1NUQVJUID09IChjaCAmIDB4RkMwMCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGUrKzsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNikgcmV0dXJuIFFuaWw7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZSA+IHN0cmluZ0VuZCAtIDYpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfRU5DT0RJTkcgZVBhcnNlckVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1OiBpbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVbMF0gPT0gJ1xcJyAmJiBwZVsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjMyIHN1ciA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgcGUgKyAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGKSA8PCAxMCkgfCAoKCgoY2ggPj4gNikgJiAweEYpICsgMSkgPDwgMTYpCi1AQCAtMTQ3MSw3ICsxNDc5LDcgQEAgc3RhdGljIFZBTFVFIGpzb25fc3RyaW5nX3VuZXNjYXBlKFZBTFVFCi0gfQotIAotIAotLSNsaW5lIDE0NzUgInBhcnNlci5jIgotKyNsaW5lIDE0ODMgInBhcnNlci5jIgotIGVudW0ge0pTT05fc3RyaW5nX3N0YXJ0ID0gMX07Ci0gZW51bSB7SlNPTl9zdHJpbmdfZmlyc3RfZmluYWwgPSA4fTsKLSBlbnVtIHtKU09OX3N0cmluZ19lcnJvciA9IDB9OwotQEAgLTE0NzksNyArMTQ4Nyw3IEBAIGVudW0ge0pTT05fc3RyaW5nX2Vycm9yID0gMH07Ci0gZW51bSB7SlNPTl9zdHJpbmdfZW5fbWFpbiA9IDF9OwotIAotIAotLSNsaW5lIDUwNCAicGFyc2VyLnJsIgotKyNsaW5lIDUxMiAicGFyc2VyLnJsIgotIAotIAotIHN0YXRpYyBpbnQKLUBAIC0xNTAxLDE1ICsxNTA5LDE1IEBAIHN0YXRpYyBjaGFyICpKU09OX3BhcnNlX3N0cmluZyhKU09OX1BhcnMKLSAKLSAgICAgKnJlc3VsdCA9IHJiX3N0cl9idWZfbmV3KDApOwotIAotLSNsaW5lIDE1MDUgInBhcnNlci5jIgotKyNsaW5lIDE1MTMgInBhcnNlci5jIgotIAl7Ci0gCWNzID0gSlNPTl9zdHJpbmdfc3RhcnQ7Ci0gCX0KLSAKLS0jbGluZSA1MjUgInBhcnNlci5ybCIKLSsjbGluZSA1MzMgInBhcnNlci5ybCIKLSAgICAganNvbi0+bWVtbyA9IHA7Ci0gCi0tI2xpbmUgMTUxMyAicGFyc2VyLmMiCi0rI2xpbmUgMTUyMSAicGFyc2VyLmMiCi0gCXsKLSAJaWYgKCBwID09IHBlICkKLSAJCWdvdG8gX3Rlc3RfZW9mOwotQEAgLTE1MzQsNyArMTU0Miw3IEBAIGNhc2UgMjoKLSAJCWdvdG8gc3QwOwotIAlnb3RvIHN0MjsKLSB0cjI6Ci0tI2xpbmUgNDkwICJwYXJzZXIucmwiCi0rI2xpbmUgNDk4ICJwYXJzZXIucmwiCi0gCXsKLSAgICAgICAgICpyZXN1bHQgPSBqc29uX3N0cmluZ191bmVzY2FwZSgqcmVzdWx0LCBqc29uLT5tZW1vICsgMSwgcCk7Ci0gICAgICAgICBpZiAoTklMX1AoKnJlc3VsdCkpIHsKLUBAIC0xNTQ1LDE0ICsxNTUzLDE0IEBAIHRyMjoKLSAgICAgICAgICAgICB7cCA9ICgoIHAgKyAxKSktMTt9Ci0gICAgICAgICB9Ci0gICAgIH0KLS0jbGluZSA1MDEgInBhcnNlci5ybCIKLSsjbGluZSA1MDkgInBhcnNlci5ybCIKLSAJeyBwLS07IHtwKys7IGNzID0gODsgZ290byBfb3V0O30gfQotIAlnb3RvIHN0ODsKLSBzdDg6Ci0gCWlmICggKytwID09IHBlICkKLSAJCWdvdG8gX3Rlc3RfZW9mODsKLSBjYXNlIDg6Ci0tI2xpbmUgMTU1NiAicGFyc2VyLmMiCi0rI2xpbmUgMTU2NCAicGFyc2VyLmMiCi0gCWdvdG8gc3QwOwotIHN0MzoKLSAJaWYgKCArK3AgPT0gcGUgKQotQEAgLTE2MjgsNyArMTYzNiw3IEBAIGNhc2UgNzoKLSAJX291dDoge30KLSAJfQotIAotLSNsaW5lIDUyNyAicGFyc2VyLnJsIgotKyNsaW5lIDUzNSAicGFyc2VyLnJsIgotIAotICAgICBpZiAoanNvbi0+Y3JlYXRlX2FkZGl0aW9ucyAmJiBSVEVTVChtYXRjaF9zdHJpbmcgPSBqc29uLT5tYXRjaF9zdHJpbmcpKSB7Ci0gICAgICAgICAgIFZBTFVFIGtsYXNzOwotQEAgLTE2NzUsNyArMTY4Myw3IEBAIHN0YXRpYyBWQUxVRSBjb252ZXJ0X2VuY29kaW5nKFZBTFVFIHNvdXIKLSAgICAgfQotICAgICBGT1JDRV9VVEY4KHNvdXJjZSk7Ci0gICB9IGVsc2UgewotLSAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCBOVUxMLCByYl91dGY4X2VuY29kaW5nKCkpOwotKyAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCByYl9lbmNfZ2V0KHNvdXJjZSksIHJiX3V0ZjhfZW5jb2RpbmcoKSk7Ci0gICB9Ci0gI2VuZGlmCi0gICAgIHJldHVybiBzb3VyY2U7Ci1AQCAtMTgwOCw3ICsxODE2LDcgQEAgc3RhdGljIFZBTFVFIGNQYXJzZXJfaW5pdGlhbGl6ZShpbnQgYXJnYwotIH0KLSAKLSAKLS0jbGluZSAxODEyICJwYXJzZXIuYyIKLSsjbGluZSAxODIwICJwYXJzZXIuYyIKLSBlbnVtIHtKU09OX3N0YXJ0ID0gMX07Ci0gZW51bSB7SlNPTl9maXJzdF9maW5hbCA9IDEwfTsKLSBlbnVtIHtKU09OX2Vycm9yID0gMH07Ci1AQCAtMTgxNiw3ICsxODI0LDcgQEAgZW51bSB7SlNPTl9lcnJvciA9IDB9OwotIGVudW0ge0pTT05fZW5fbWFpbiA9IDF9OwotIAotIAotLSNsaW5lIDcyMCAicGFyc2VyLnJsIgotKyNsaW5lIDcyOCAicGFyc2VyLnJsIgotIAotIAotIC8qCi1AQCAtMTgzMywxNiArMTg0MSwxNiBAQCBzdGF0aWMgVkFMVUUgY1BhcnNlcl9wYXJzZShWQUxVRSBzZWxmKQotICAgR0VUX1BBUlNFUjsKLSAKLSAKLS0jbGluZSAxODM3ICJwYXJzZXIuYyIKLSsjbGluZSAxODQ1ICJwYXJzZXIuYyIKLSAJewotIAljcyA9IEpTT05fc3RhcnQ7Ci0gCX0KLSAKLS0jbGluZSA3MzYgInBhcnNlci5ybCIKLSsjbGluZSA3NDQgInBhcnNlci5ybCIKLSAgIHAgPSBqc29uLT5zb3VyY2U7Ci0gICBwZSA9IHAgKyBqc29uLT5sZW47Ci0gCi0tI2xpbmUgMTg0NiAicGFyc2VyLmMiCi0rI2xpbmUgMTg1NCAicGFyc2VyLmMiCi0gCXsKLSAJaWYgKCBwID09IHBlICkKLSAJCWdvdG8gX3Rlc3RfZW9mOwotQEAgLTE4NzYsNyArMTg4NCw3IEBAIHN0MDoKLSBjcyA9IDA7Ci0gCWdvdG8gX291dDsKLSB0cjI6Ci0tI2xpbmUgNzEyICJwYXJzZXIucmwiCi0rI2xpbmUgNzIwICJwYXJzZXIucmwiCi0gCXsKLSAgICAgICAgIGNoYXIgKm5wID0gSlNPTl9wYXJzZV92YWx1ZShqc29uLCBwLCBwZSwgJnJlc3VsdCwgMCk7Ci0gICAgICAgICBpZiAobnAgPT0gTlVMTCkgeyBwLS07IHtwKys7IGNzID0gMTA7IGdvdG8gX291dDt9IH0gZWxzZSB7cCA9ICgoIG5wKSktMTt9Ci1AQCAtMTg4Niw3ICsxODk0LDcgQEAgc3QxMDoKLSAJaWYgKCArK3AgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2YxMDsKLSBjYXNlIDEwOgotLSNsaW5lIDE4OTAgInBhcnNlci5jIgotKyNsaW5lIDE4OTggInBhcnNlci5jIgotIAlzd2l0Y2goICgqcCkgKSB7Ci0gCQljYXNlIDEzOiBnb3RvIHN0MTA7Ci0gCQljYXNlIDMyOiBnb3RvIHN0MTA7Ci1AQCAtMTk3NSw3ICsxOTgzLDcgQEAgY2FzZSA5OgotIAlfb3V0OiB7fQotIAl9Ci0gCi0tI2xpbmUgNzM5ICJwYXJzZXIucmwiCi0rI2xpbmUgNzQ3ICJwYXJzZXIucmwiCi0gCi0gICBpZiAoY3MgPj0gSlNPTl9maXJzdF9maW5hbCAmJiBwID09IHBlKSB7Ci0gICAgIHJldHVybiByZXN1bHQ7Ci1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9wYXJzZXIvcGFyc2VyLnJsCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnVieS0yLjQuMC5vcmlnL2V4dC9qc29uL3BhcnNlci9wYXJzZXIucmwKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIucmwKLUBAIC00NDYsMTMgKzQ0NiwyMSBAQCBzdGF0aWMgVkFMVUUganNvbl9zdHJpbmdfdW5lc2NhcGUoVkFMVUUKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICAgICAgIGlmIChwZSA+IHN0cmluZ0VuZCAtIDQpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUW5pbDsKLSsgICAgICAgICAgICAgICAgICAgICAgcmJfZW5jX3JhaXNlKAotKyAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19FTkNPRElORyBlUGFyc2VyRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIiV1OiBpbmNvbXBsZXRlIHVuaWNvZGUgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZSBhdCAnJXMnIiwgX19MSU5FX18sIHAKLSsgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgVVRGMzIgY2ggPSB1bmVzY2FwZV91bmljb2RlKCh1bnNpZ25lZCBjaGFyICopICsrcGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHBlICs9IDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOSV9TVVJfSElHSF9TVEFSVCA9PSAoY2ggJiAweEZDMDApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlKys7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZSA+IHN0cmluZ0VuZCAtIDYpIHJldHVybiBRbmlsOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGUgPiBzdHJpbmdFbmQgLSA2KSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmJfZW5jX3JhaXNlKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX0VOQ09ESU5HIGVQYXJzZXJFcnJvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIldTogaW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciBhdCAnJXMnIiwgX19MSU5FX18sIHAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlWzBdID09ICdcXCcgJiYgcGVbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYzMiBzdXIgPSB1bmVzY2FwZV91bmljb2RlKCh1bnNpZ25lZCBjaGFyICopIHBlICsgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICgoKGNoICYgMHgzRikgPDwgMTApIHwgKCgoKGNoID4+IDYpICYgMHhGKSArIDEpIDw8IDE2KQotQEAgLTU3MCw3ICs1NzgsNyBAQCBzdGF0aWMgVkFMVUUgY29udmVydF9lbmNvZGluZyhWQUxVRSBzb3VyCi0gICAgIH0KLSAgICAgRk9SQ0VfVVRGOChzb3VyY2UpOwotICAgfSBlbHNlIHsKLS0gICAgc291cmNlID0gcmJfc3RyX2NvbnZfZW5jKHNvdXJjZSwgTlVMTCwgcmJfdXRmOF9lbmNvZGluZygpKTsKLSsgICAgc291cmNlID0gcmJfc3RyX2NvbnZfZW5jKHNvdXJjZSwgcmJfZW5jX2dldChzb3VyY2UpLCByYl91dGY4X2VuY29kaW5nKCkpOwotICAgfQotICNlbmRpZgotICAgICByZXR1cm4gc291cmNlOwotSW5kZXg6IHJ1YnktMi40LjAvdGVzdC9qc29uL2pzb25fZW5jb2RpbmdfdGVzdC5yYgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy90ZXN0L2pzb24vanNvbl9lbmNvZGluZ190ZXN0LnJiCi0rKysgcnVieS0yLjQuMC90ZXN0L2pzb24vanNvbl9lbmNvZGluZ190ZXN0LnJiCi1AQCAtNzksNiArNzksOCBAQCBjbGFzcyBKU09ORW5jb2RpbmdUZXN0IDwgVGVzdDo6VW5pdDo6VGVzCi0gICAgIGpzb24gPSAnWyJcdWQ4NDBcdWRjMDEiXScKLSAgICAgYXNzZXJ0X2VxdWFsIGpzb24sIGdlbmVyYXRlKHV0ZjgsIDphc2NpaV9vbmx5ID0+IHRydWUpCi0gICAgIGFzc2VydF9lcXVhbCB1dGY4LCBwYXJzZShqc29uKQotKyAgICBhc3NlcnRfcmFpc2UoSlNPTjo6UGFyc2VyRXJyb3IpIHsgcGFyc2UoJyJcdSInKSB9Ci0rICAgIGFzc2VydF9yYWlzZShKU09OOjpQYXJzZXJFcnJvcikgeyBwYXJzZSgnIlx1ZDgwMCInKSB9Ci0gICBlbmQKLSAKLSAgIGRlZiB0ZXN0X2NoYXJzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9leHRtay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoCmluZGV4IDhiNjg0NTAuLmE1YjIxODQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoCkBAIC0xLDMgKzEsNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBkaWZmIC1ydSBydWJ5LTEuOC43LXAyNDgub3JpZy9leHQvZXh0bWsucmIgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgogLS0tIHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYgkyMDA5LTEyLTI0IDAzOjAxOjU4LjAwMDAwMDAwMCAtMDYwMAogKysrIHJ1YnktMS44LjctcDI0OC9leHQvZXh0bWsucmIJMjAxMC0wMi0xMiAxNTo1NToyNy4zNzAwNjE1NTggLTA2MDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZTY5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gOGY3ODJmZDhlMTgxZDljZmU5Mzg3ZGVkNDNhNWNhOTY5MjI2NmI4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZsb3JpYW4gRnJhbmsgPGZsb3JpQHBpbmcuZGU+CitEYXRlOiBUaHUsIDIgTWFyIDIwMTcgMTI6MTI6MzMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFyYml0cmFyeSBoZWFwIGV4cG9zdXJlIHByb2JsZW0KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDA2NAorCitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBleHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMgfCAxMiArKysrKystLS0tLS0KKyBleHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmggfCAgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMgYi9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKK2luZGV4IGVmODViYjcuLmM4ODgxOGMgMTAwNjQ0CistLS0gYS9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKKysrKyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYworQEAgLTMwOCw3ICszMDgsNyBAQCBzdGF0aWMgY2hhciAqZnN0cm5kdXAoY29uc3QgY2hhciAqcHRyLCB1bnNpZ25lZCBsb25nIGxlbikgeworICAgY2hhciAqcmVzdWx0OworICAgaWYgKGxlbiA8PSAwKSByZXR1cm4gTlVMTDsKKyAgIHJlc3VsdCA9IEFMTE9DX04oY2hhciwgbGVuKTsKKy0gIG1lbWNjcHkocmVzdWx0LCBwdHIsIDAsIGxlbik7CisrICBtZW1jcHkocmVzdWx0LCBwdHIsIGxlbik7CisgICByZXR1cm4gcmVzdWx0OworIH0KKyAKK0BAIC0xMDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX2luZGVudF9zZXQoVkFMVUUgc2VsZiwgVkFMVUUgaW5kZW50KQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5pbmRlbnQpIHJ1YnlfeGZyZWUoc3RhdGUtPmluZGVudCk7CistICAgICAgICBzdGF0ZS0+aW5kZW50ID0gc3RyZHVwKFJTVFJJTkdfUFRSKGluZGVudCkpOworKyAgICAgICAgc3RhdGUtPmluZGVudCA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKGluZGVudCksIGxlbik7CisgICAgICAgICBzdGF0ZS0+aW5kZW50X2xlbiA9IGxlbjsKKyAgICAgfQorICAgICByZXR1cm4gUW5pbDsKK0BAIC0xMTAwLDcgKzExMDAsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX3NwYWNlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZSkKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGlmIChzdGF0ZS0+c3BhY2UpIHJ1YnlfeGZyZWUoc3RhdGUtPnNwYWNlKTsKKy0gICAgICAgIHN0YXRlLT5zcGFjZSA9IHN0cmR1cChSU1RSSU5HX1BUUihzcGFjZSkpOworKyAgICAgICAgc3RhdGUtPnNwYWNlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2UpLCBsZW4pOworICAgICAgICAgc3RhdGUtPnNwYWNlX2xlbiA9IGxlbjsKKyAgICAgfQorICAgICByZXR1cm4gUW5pbDsKK0BAIC0xMTM2LDcgKzExMzYsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX3NwYWNlX2JlZm9yZV9zZXQoVkFMVUUgc2VsZiwgVkFMVUUgc3BhY2VfYmVmb3JlKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZV9iZWZvcmUpIHJ1YnlfeGZyZWUoc3RhdGUtPnNwYWNlX2JlZm9yZSk7CistICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlX2JlZm9yZSkpOworKyAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZSA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKHNwYWNlX2JlZm9yZSksIGxlbik7CisgICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlX2xlbiA9IGxlbjsKKyAgICAgfQorICAgICByZXR1cm4gUW5pbDsKK0BAIC0xMTczLDcgKzExNzMsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX29iamVjdF9ubF9zZXQoVkFMVUUgc2VsZiwgVkFMVUUgb2JqZWN0X25sKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5vYmplY3RfbmwpIHJ1YnlfeGZyZWUoc3RhdGUtPm9iamVjdF9ubCk7CistICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKG9iamVjdF9ubCkpOworKyAgICAgICAgc3RhdGUtPm9iamVjdF9ubCA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKG9iamVjdF9ubCksIGxlbik7CisgICAgICAgICBzdGF0ZS0+b2JqZWN0X25sX2xlbiA9IGxlbjsKKyAgICAgfQorICAgICByZXR1cm4gUW5pbDsKK0BAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgVkFMVUUgY1N0YXRlX2FycmF5X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBhcnJheV9ubCkKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGlmIChzdGF0ZS0+YXJyYXlfbmwpIHJ1YnlfeGZyZWUoc3RhdGUtPmFycmF5X25sKTsKKy0gICAgICAgIHN0YXRlLT5hcnJheV9ubCA9IHN0cmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCkpOworKyAgICAgICAgc3RhdGUtPmFycmF5X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIoYXJyYXlfbmwpLCBsZW4pOworICAgICAgICAgc3RhdGUtPmFycmF5X25sX2xlbiA9IGxlbjsKKyAgICAgfQorICAgICByZXR1cm4gUW5pbDsKK2RpZmYgLS1naXQgYS9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmggYi9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKK2luZGV4IDkwMGI0ZDUuLmMzNjdhNjIgMTAwNjQ0CistLS0gYS9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKKysrKyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAorQEAgLTEsNyArMSw2IEBACisgI2lmbmRlZiBfR0VORVJBVE9SX0hfCisgI2RlZmluZSBfR0VORVJBVE9SX0hfCisgCistI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisgCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M1MmQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotcmVxdWlyZSBydWJ5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA2NC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdlOTQ4NWRjZGI4NmZmNTI2NjI3MjhkZTIwMDNlNjI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1MmZkMGJkMTVhOTBiNGExODIxMzQ0OGY0ODVkNGI1M2U5Zjc2NjJlMTUwODE5MGFhNWI3MDI0NDZiMjllM2QiCi0KLSMgaXQncyB1bmtub3duIHRvIGNvbmZpZ3VyZSBzY3JpcHQsIGJ1dCB0aGVuIHBhc3NlZCB0byBleHRjb25mLnJiCi0jIG1heWJlIGl0J3Mgbm90IHJlYWxseSBuZWVkZWQgYXMgd2UncmUgaGFyZGNvZGluZyB0aGUgcmVzdWx0IHdpdGgKLSMgMDAwMS1zb2NrZXQtZXh0Y29uZi1oYXJkY29kZS13aWRlLWdldGFkZHItaW5mby10ZXN0LW91dGNvLnBhdGNoCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tncG1dID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCi0gICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAtLWRpc2FibGUtZHRyYWNlIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgotCi1TVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCi1SREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKLQotU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKLVJERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyN2FjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4xLmJiCkBAIC0wLDAgKzEsNTMgQEAKK3JlcXVpcmUgcnVieS5pbmMKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4MmJjYTU2MmU0NzRkZDI1OTU2ZGQwMDE3ZDkyNjc3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMzBlMTBkNWNiNWU1M2IzYTAwNzgzMjZjNTczMTg4OGJiNTVlMzJjNGFiZmViMjdkOWU3ZjhlNWQwMDAyNTAiCisKKyMgaXQncyB1bmtub3duIHRvIGNvbmZpZ3VyZSBzY3JpcHQsIGJ1dCB0aGVuIHBhc3NlZCB0byBleHRjb25mLnJiCisjIG1heWJlIGl0J3Mgbm90IHJlYWxseSBuZWVkZWQgYXMgd2UncmUgaGFyZGNvZGluZyB0aGUgcmVzdWx0IHdpdGgKKyMgMDAwMS1zb2NrZXQtZXh0Y29uZi1oYXJkY29kZS13aWRlLWdldGFkZHItaW5mby10ZXN0LW91dGNvLnBhdGNoCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tncG1dID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtZHRyYWNlIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAorIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgorCitTVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCitSREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKKworU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKK1JERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQppbmRleCA4NWEwNDM5Li4xYjcxYTFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogW1NlcnZpY2VdCiBUeXBlPW9uZXNob3QKIEV4ZWNTdGFydD0jU0JJTkRJUiMvcnVuLXBvc3RpbnN0cwotRXhlY1N0YXJ0UG9zdD0jQkFTRV9CSU5ESVIjL3N5c3RlbWN0bCBkaXNhYmxlIHJ1bi1wb3N0aW5zdHMuc2VydmljZQorRXhlY1N0YXJ0UG9zdD0jQkFTRV9CSU5ESVIjL3N5c3RlbWN0bCAtLW5vLXJlbG9hZCBkaXNhYmxlIHJ1bi1wb3N0aW5zdHMuc2VydmljZQogUmVtYWluQWZ0ZXJFeGl0PU5vCiBUaW1lb3V0U2VjPTAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy00LjMtc3lzbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy00LjMtc3lzbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NTIxYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBodHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC90cmVlL3N5cy1mcy9zcXVhc2hmcy10b29scy9maWxlcy9zcXVhc2hmcy10b29scy00LjMtc3lzbWFjcm9zLnBhdGNoCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKworc3lzL3R5cGVzLmggbWlnaHQgbm90IGFsd2F5cyBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IvbWFrZWRldgorCistLS0gYS9zcXVhc2hmcy10b29scy9ta3NxdWFzaGZzLmMKKysrKyBiL3NxdWFzaGZzLXRvb2xzL21rc3F1YXNoZnMuYworQEAgLTU5LDYgKzU5LDcgQEAKKyAjZWxzZQorICNpbmNsdWRlIDxlbmRpYW4uaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2luZm8uaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNlbmRpZgorIAorICNpbmNsdWRlICJzcXVhc2hmc19mcy5oIgorLS0tIGEvc3F1YXNoZnMtdG9vbHMvdW5zcXVhc2hmcy5jCisrKysgYi9zcXVhc2hmcy10b29scy91bnNxdWFzaGZzLmMKK0BAIC0zOCw2ICszOCwxMCBAQAorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKysjaWZkZWYgbGludXgKKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorKyNlbmRpZgorKworIHN0cnVjdCBjYWNoZSAqZnJhZ21lbnRfY2FjaGUsICpkYXRhX2NhY2hlOworIHN0cnVjdCBxdWV1ZSAqdG9fcmVhZGVyLCAqdG9faW5mbGF0ZSwgKnRvX3dyaXRlciwgKmZyb21fd3JpdGVyOworIHB0aHJlYWRfdCAqdGhyZWFkLCAqaW5mbGF0b3JfdGhyZWFkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgppbmRleCAzM2VkMDlhLi4wZjk5MTcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMTMsOCArMTMsMTAgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wbG91Z2hlci9zcXVhc2hmcy10b29scy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9zZXZlbnppcC9sem1hNDY1LnRhci5iejI7bmFtZT1sem1hIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWtzcXVhc2hmcy5jLWdldC1pbmxpbmUtZnVuY3Rpb25zLXdvcmstd2l0aC1DOTkucGF0Y2g7c3RyaXBsZXZlbD0yIFwKKyAgICAgICAgICAgZmlsZTovL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2g7c3RyaXBsZXZlbD0yIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1jb21wYXQucGF0Y2ggXAogIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiBTUkNfVVJJW2x6bWEubWQ1c3VtXSA9ICIyOWQ1ZmZkMDNhNWEzZTUxYWVmNmE3NGU5ZWFmYjc1OSIKIFNSQ19VUklbbHptYS5zaGEyNTZzdW1dID0gImM5MzVmZDA0ZGQ4ZTBlOGM2ODhhMzA3OGYzNjc1ZDY5OTY3OWE5MGJlODFjMTI2ODY4MzdlMDg4MGFhMGZhMWUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDk2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gOWYzZmQzODhhZTdjNDY0MjBiY2NiYTQwNTQ2ODY5MGVkNDZkNjY5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IFNlcCAyMDE3IDIyOjUxOjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3NpZ2FjdGlvbjogQ2hlY2sgZm9yIG1pcHMgYW5kIGFscGhhIGJlZm9yZSB1c2luZworIHNhX3Jlc3RvcmVyCisKK2xvY2FsIHN0cnVjdHVyZSBkb2VzIG5vdCBkZWZpbmUgcmVzdG9yZXIgbWVtYmVyIGZvciBtaXBzIGFuZCBhbHBoYQoraW4gZGVmaW5pdGlvbiwgd2UgbmVlZCB0byBtYXRjaCB0aGF0IGFzc3VtcHRpb24gaGVyZSB3aGVyZSB0aGV5IGFyZQorYmVpbmcgc2V0CisKK0ZpeGVzCit8IC4uLy4uL3N0cmFjZS00LjE4L3Rlc3RzL3NpZ2FjdGlvbi5jOjE3NzozNjogZXJyb3I6ICdzdHJ1Y3Rfc2V0X3NhIHtha2Egc3RydWN0IHNldF9zYX0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3Jlc3RvcmVyJworfCAgIyBkZWZpbmUgU0FfUkVTVE9SRVJfQVJHUyAsIG5ld19hY3QtPnJlc3RvcmVyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgdGVzdHMvc2lnYWN0aW9uLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9zaWdhY3Rpb24uYyBiL3Rlc3RzL3NpZ2FjdGlvbi5jCitpbmRleCA3YjQ2OTQ0Li5mNDZjZGE3IDEwMDY0NAorLS0tIGEvdGVzdHMvc2lnYWN0aW9uLmMKKysrKyBiL3Rlc3RzL3NpZ2FjdGlvbi5jCitAQCAtMTcwLDcgKzE3MCw3IEBAIG1haW4odm9pZCkKKyAJc2lnZGVsc2V0KG1hc2subGliYywgU0lHSFVQKTsKKyAKKyAJbWVtY3B5KG5ld19hY3QtPm1hc2ssIG1hc2sub2xkLCBzaXplb2YobWFzay5vbGQpKTsKKy0jaWZkZWYgU0FfUkVTVE9SRVIKKysjaWYgZGVmaW5lZChTQV9SRVNUT1JFUikgJiYgIWRlZmluZWQoTUlQUykgJiYgIWRlZmluZWQoQUxQSEEpCisgCW5ld19hY3QtPmZsYWdzID0gU0FfUkVTVE9SRVI7CisgCW5ld19hY3QtPnJlc3RvcmVyID0gKHVuc2lnbmVkIGxvbmcpIDB4ZGVhZGZhY2VjYWZlZjAwZFVMTDsKKyAjIGRlZmluZSBTQV9SRVNUT1JFUl9GTVQgIiwgc2FfZmxhZ3M9U0FfUkVTVE9SRVIsIHNhX3Jlc3RvcmVyPSUjbHgiCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKaW5kZXggODc2YzJkOC4uOTdiY2M5MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaApAQCAtMSwxOSArMSwyMyBAQAotc3RyYWNlOiBBZGQgcHRlc3QKK0Zyb20gMDU3NGFlOTkyNjMwOGRjYmNhNzhiZDhjZDBmMGYxNDNmMTljYmNiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdhYnJpZWwgQmFyYnUgPGdhYnJpZWwuYmFyYnVAZW5lYS5jb20+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDEzIDE1OjI4OjMzICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggNC84XSBzdHJhY2U6IEFkZCBwdGVzdAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAogU2lnbmVkLW9mZi1ieTogR2FicmllbCBCYXJidSA8Z2FicmllbC5iYXJidUBlbmVhLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgICAgICB8ICAyICstCiAgdGVzdHMvTWFrZWZpbGUuYW0gfCAxOCArKysrKysrKysrKysrKysrKysKICAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjJiMDNjNi4uNDY0YTlkYyAxMDA2NDQKK2luZGV4IDYxZDY0MjUuLjYzODdjMjQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM5LDcgKzM5LDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKEMpIDE5OTktMjAxNyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKK0BAIC00MSw3ICs0MSw3IEBAIEFDX0NPUFlSSUdIVChbQ29weXJpZ2h0IChDKSAxOTk5LV1jb3B5cmlnaHRfeWVhclsgVGhlIHN0cmFjZSBkZXZlbG9wZXJzLl0pCiAgQUNfQ09ORklHX1NSQ0RJUihbc3RyYWNlLmNdKQogIEFDX0NPTkZJR19BVVhfRElSKFsuXSkKICBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQpAQCAtMjMsMTEgKzI3LDExIEBACiAgQU1fTUFJTlRBSU5FUl9NT0RFCiAgQUNfQ0FOT05JQ0FMX0hPU1QKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAzMTFkM2JiLi43MmY5MDIyIDEwMDY0NAoraW5kZXggNWFhN2Y4OS4uYTU1YTM1NSAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTk2MCwzICs5NjAsMjEgQEAgJChvYmplY3RzKTogc2Nuby5oCi0gQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaCAkKFRFU1RTOj0udG1wKQorQEAgLTM3OSwzICszNzksMjEgQEAgY2xlYW4tbG9jYWwtY2hlY2s6CisgQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaAogIAogIGluY2x1ZGUgLi4vc2Nuby5hbQogKwpAQCAtNDcsNCArNTEsNyBAQAogKwkJaW5zdGFsbCAkKHNyY2RpcikvJCRmaWxlICQoREVTVERJUikvJChURVNURElSKTsgXAogKwkJc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKICsJZG9uZQotKwlmb3IgaSBpbiBuZXQgbmV0LWZkIHNjbV9yaWdodHMtZmQgc2lnYWN0aW9uOyBkbyBzZWQgLWkgLWUgJ3MvJCRzcmNkaXIvLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRpLnRlc3Q7IGRvbmUKKysJZm9yIGkgaW4gbmV0IHNjbV9yaWdodHMtZmQgcnRfc2lnYWN0aW9uOyBkbyBzZWQgLWkgLWUgJ3MvJCRzcmNkaXIvLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRpLnRlc3Q7IGRvbmUKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAppbmRleCA5NGVlNTNjLi5mNmZmYThlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCkBAIC0xMiwyMCArMTIsMjAgQEAKIAogU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIC0tLQotIG1wZXJzLmF3ayAgICAgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy1tMzIvY2Fwcy5hd2sgICAgICAgfCAyICstCi0gdGVzdHMtbTMyL21hdGNoLmF3ayAgICAgIHwgMiArLQotIHRlc3RzLW0zMi9zaWdhY3Rpb24uYXdrICB8IDIgKy0KLSB0ZXN0cy1teDMyL2NhcHMuYXdrICAgICAgfCAyICstCi0gdGVzdHMtbXgzMi9tYXRjaC5hd2sgICAgIHwgMiArLQotIHRlc3RzLW14MzIvc2lnYWN0aW9uLmF3ayB8IDIgKy0KLSB0ZXN0cy9jYXBzLmF3ayAgICAgICAgICAgfCAyICstCi0gdGVzdHMvbWF0Y2guYXdrICAgICAgICAgIHwgMiArLQotIHRlc3RzL3NpZ2FjdGlvbi5hd2sgICAgICB8IDIgKy0KKyBtcGVycy5hd2sgICAgICAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMtbTMyL2NhcHMuYXdrICAgICAgICAgIHwgMiArLQorIHRlc3RzLW0zMi9tYXRjaC5hd2sgICAgICAgICB8IDIgKy0KKyB0ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3ayAgfCAyICstCisgdGVzdHMtbXgzMi9jYXBzLmF3ayAgICAgICAgIHwgMiArLQorIHRlc3RzLW14MzIvbWF0Y2guYXdrICAgICAgICB8IDIgKy0KKyB0ZXN0cy1teDMyL3J0X3NpZ2FjdGlvbi5hd2sgfCAyICstCisgdGVzdHMvY2Fwcy5hd2sgICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL21hdGNoLmF3ayAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy9ydF9zaWdhY3Rpb24uYXdrICAgICAgfCAyICstCiAgMTAgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tcGVycy5hd2sgYi9tcGVycy5hd2sKLWluZGV4IDk5MjQ4YzUuLmZmMTA1MjAgMTAwNjQ0CitpbmRleCBmZTU0NzYzLi5iNTIzOGE4IDEwMDY0NAogLS0tIGEvbXBlcnMuYXdrCiArKysgYi9tcGVycy5hd2sKIEBAIC0xLDQgKzEsNCBAQApAQCAtMzUsNyArMzUsNyBAQAogICMgQ29weXJpZ2h0IChjKSAyMDE1IEVsdmlyYSBLaGFiaXJvdmEgPGxpbmVwcmludGVyMEBnbWFpbC5jb20+CiAgIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+CiBkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL2NhcHMuYXdrIGIvdGVzdHMtbTMyL2NhcHMuYXdrCi1pbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAoraW5kZXggYzZlMzFlZi4uNWVmYzZjYyAxMDA2NDQKIC0tLSBhL3Rlc3RzLW0zMi9jYXBzLmF3awogKysrIGIvdGVzdHMtbTMyL2NhcHMuYXdrCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTU0LDE4ICs1NCwxOCBAQAogICMKICAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi1kaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3awotaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKLS0tLSBhL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCi0rKysgYi90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3aworZGlmZiAtLWdpdCBhL3Rlc3RzLW0zMi9ydF9zaWdhY3Rpb24uYXdrIGIvdGVzdHMtbTMyL3J0X3NpZ2FjdGlvbi5hd2sKK2luZGV4IDljM2E5ZWQuLjg0MTQyNDMgMTAwNjQ0CistLS0gYS90ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3aworKysrIGIvdGVzdHMtbTMyL3J0X3NpZ2FjdGlvbi5hd2sKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9nYXdrCiArIyEvdXNyL2Jpbi9nYXdrCiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAjIENvcHlyaWdodCAoYykgMjAxNiBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgogZGlmZiAtLWdpdCBhL3Rlc3RzLW14MzIvY2Fwcy5hd2sgYi90ZXN0cy1teDMyL2NhcHMuYXdrCi1pbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAoraW5kZXggYzZlMzFlZi4uNWVmYzZjYyAxMDA2NDQKIC0tLSBhL3Rlc3RzLW14MzIvY2Fwcy5hd2sKICsrKyBiL3Rlc3RzLW14MzIvY2Fwcy5hd2sKIEBAIC0xLDQgKzEsNCBAQApAQCAtODQsMTggKzg0LDE4IEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy1teDMyL3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy1teDMyL3NpZ2FjdGlvbi5hd2sKLWluZGV4IDVjNmI2ZDAuLjNlMTQ0NjQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy1teDMyL3NpZ2FjdGlvbi5hd2sKLSsrKyBiL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3aworZGlmZiAtLWdpdCBhL3Rlc3RzLW14MzIvcnRfc2lnYWN0aW9uLmF3ayBiL3Rlc3RzLW14MzIvcnRfc2lnYWN0aW9uLmF3aworaW5kZXggOWMzYTllZC4uODQxNDI0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzLW14MzIvcnRfc2lnYWN0aW9uLmF3aworKysrIGIvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vZ2F3awogKyMhL3Vzci9iaW4vZ2F3awogICMKICAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLSAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgIyBDb3B5cmlnaHQgKGMpIDIwMTYgRWx2aXJhIEtoYWJpcm92YSA8bGluZXByaW50ZXIwQGdtYWlsLmNvbT4KIGRpZmYgLS1naXQgYS90ZXN0cy9jYXBzLmF3ayBiL3Rlc3RzL2NhcHMuYXdrCi1pbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAoraW5kZXggYzZlMzFlZi4uNWVmYzZjYyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2NhcHMuYXdrCiArKysgYi90ZXN0cy9jYXBzLmF3awogQEAgLTEsNCArMSw0IEBACkBAIC0xMTQsMTMgKzExNCwxMyBAQAogICMKICAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi1kaWZmIC0tZ2l0IGEvdGVzdHMvc2lnYWN0aW9uLmF3ayBiL3Rlc3RzL3NpZ2FjdGlvbi5hd2sKLWluZGV4IDVjNmI2ZDAuLjNlMTQ0NjQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9zaWdhY3Rpb24uYXdrCi0rKysgYi90ZXN0cy9zaWdhY3Rpb24uYXdrCitkaWZmIC0tZ2l0IGEvdGVzdHMvcnRfc2lnYWN0aW9uLmF3ayBiL3Rlc3RzL3J0X3NpZ2FjdGlvbi5hd2sKK2luZGV4IDljM2E5ZWQuLjg0MTQyNDMgMTAwNjQ0CistLS0gYS90ZXN0cy9ydF9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy9ydF9zaWdhY3Rpb24uYXdrCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vZ2F3awogKyMhL3Vzci9iaW4vZ2F3awogICMKICAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLSAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgIyBDb3B5cmlnaHQgKGMpIDIwMTYgRWx2aXJhIEtoYWJpcm92YSA8bGluZXByaW50ZXIwQGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Y2QyYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2Uuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ODhhY2IzYWFhZjVkMTRhMmUxYTg1MmQxMzY2OGE3MCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc3RyYWNlL3N0cmFjZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjg3MzM2NmNhYzk4NzcwZWZjYmVkNmU3NDhkNWVmMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTg0ODdjYjUxNzhlYzEyNTk5ODZjYzlmNmUyYTg0NGY1MGU1ZDEyMDhjMTEyY2MyMjQzMWExZTRkOWFkZjBlZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmx1ZXRvb3RoCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi0KLVRFU1RESVIgPSAidGVzdHMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKLQlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0Jc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyAke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVRPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMjg5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xOC5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2Uuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMTMyYjRkMmFkZmNjYzYzZGE0MTM5YTYwOTM2NzcxMSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc3RyYWNlL3N0cmFjZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1NzliMzI2NmJiMDk2Y2ViYWVmYmUyY2RiMWEzYTc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YWQ4ODdjMWU2MjI2YmRiY2E4ZGEzMWQ1ODljYWRlYTRiZTA3NDRiMTQyZWI0N2I3NjgwODZjOTM3ZmNhMDgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJsdWV0b290aAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgZ3JlcCBnYXdrIHNlZCIKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubywke0JMVUVafSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitURVNURElSID0gInRlc3RzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCisJcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCXNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtZSAnL15ERUJfQ0hBTkdFTE9HVElNRS9kJyBcCisJICAgIC1lICcvXlJQTV9DSEFOR0VMT0dUSU1FL2QnIFwKKwkke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTk5YzJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaApAQCAtMCwwICsxLDEzNiBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityMTgwNDY5MSB8IGRhbmllbHNoIHwgMjAxNy0wOC0xMCAxMToxNDoxMyAtMDcwMCAoVGh1LCAxMCBBdWcgMjAxNykgfCAxOCBsaW5lcworCitGaXggQ1ZFLTIwMTctOTgwMC4KKworU2VlOiBodHRwczovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9zZWN1cml0eS9DVkUtMjAxNy0wODAwLWFkdmlzb3J5LnR4dAorCisqIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYworICAoc3ZuX2N0eXBlLmgpOiBJbmNsdWRlLgorICAoZmluZF90dW5uZWxfYWdlbnQpOiBQYXNzIGEgIi0tIiBlbmQtb2Ytb3B0aW9ucyBndWFyZCB0byBzc2guCisgICAgRXhwZWN0IHRoZSAnaG9zdGluZm8nIHBhcmFtZXRlciB0byBiZSBVUkktZGVjb2RlZC4KKyAgKGlzX3ZhbGlkX2hvc3RpbmZvKTogTmV3LgorICAocmFfc3ZuX29wZW4pOiBWYWxpZGF0ZSB0aGUgaG9zdG5hbWUgYmVmb3JlIHVzaW5nIGl0LgorCisqIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYworICAoc3ZuX2NvbmZpZ19lbnN1cmUpOiBVcGRhdGUgdGhlIGV4YW1wbGUgY29uZmlndXJhdGlvbiBsaWtld2lzZS4KKworUGF0Y2ggYnk6IHBoaWxpcAorUmV2aWV3IGJ5OiBkYW5pZWxzaAorICAgICAgICAgICBzdHNwCisgICAgICAgICAgIGFzdGllZ2VyIChlYXJsaWVyIHZlcnNpb24pCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmM/dmlldz1yZXZpc2lvbiZhbXA7c29ydGJ5PXJldiZhbXA7cmV2aXNpb249MTgwNDY5MQorCitDVkU6IENWRS0yMDE3LTk4MDAKKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CistLS0KK0luZGV4OiBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTApCisrKysgc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCShyZXZpc2lvbiAxODA0NjkxKQorQEAgLTE0NDgsMTIgKzE0NDgsMTIgQEAKKyAgICAgICAgICIjIyMgcGFzc2VkIHRvIHRoZSB0dW5uZWwgYWdlbnQgYXMgPHVzZXI+QDxob3N0bmFtZT4uKSAgSWYgdGhlIiAgICAgIE5MCisgICAgICAgICAiIyMjIGJ1aWx0LWluIHNzaCBzY2hlbWUgd2VyZSBub3QgcHJlZGVmaW5lZCwgaXQgY291bGQgYmUgZGVmaW5lZCIgICBOTAorICAgICAgICAgIiMjIyBhczoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKKy0gICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisrICAgICAgICAiIyBzc2ggPSAkU1ZOX1NTSCBzc2ggLXEgLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorICAgICAgICAgIiMjIyBJZiB5b3Ugd2FudGVkIHRvIGRlZmluZSBhIG5ldyAncnNoJyBzY2hlbWUsIHRvIGJlIHVzZWQgd2l0aCIgICAgTkwKKyAgICAgICAgICIjIyMgJ3N2bityc2g6JyBVUkxzLCB5b3UgY291bGQgZG8gc28gYXMgZm9sbG93czoiICAgICAgICAgICAgICAgICAgIE5MCistICAgICAgICAiIyByc2ggPSByc2giICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorKyAgICAgICAgIiMgcnNoID0gcnNoIC0tIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKKyAgICAgICAgICIjIyMgT3IsIGlmIHlvdSB3YW50ZWQgdG8gc3BlY2lmeSBhIGZ1bGwgcGF0aCBhbmQgYXJndW1lbnRzOiIgICAgICAgIE5MCistICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorKyAgICAgICAgIiMgcnNoID0gL3BhdGgvdG8vcnNoIC1sIG15dXNlcm5hbWUgLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKKyAgICAgICAgICIjIyMgT24gV2luZG93cywgaWYgeW91IGFyZSBzcGVjaWZ5aW5nIGEgZnVsbCBwYXRoIHRvIGEgY29tbWFuZCwiICAgIE5MCisgICAgICAgICAiIyMjIHVzZSBhIGZvcndhcmQgc2xhc2ggKC8pIG9yIGEgcGFpcmVkIGJhY2tzbGFzaCAoXFxcXCkgYXMgdGhlIiAgICBOTAorICAgICAgICAgIiMjIyBwYXRoIHNlcGFyYXRvci4gIEEgc2luZ2xlIGJhY2tzbGFzaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4iICAgICAgTkwKK0luZGV4OiBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTApCisrKysgc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCShyZXZpc2lvbiAxODA0NjkxKQorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAic3ZuX3Byb3BzLmgiCisgI2luY2x1ZGUgInN2bl9tZXJnZWluZm8uaCIKKyAjaW5jbHVkZSAic3ZuX3ZlcnNpb24uaCIKKysjaW5jbHVkZSAic3ZuX2N0eXBlLmgiCisgCisgI2luY2x1ZGUgInN2bl9wcml2YXRlX2NvbmZpZy5oIgorIAorQEAgLTM5OCw3ICszOTksNyBAQAorICAgICAgICAqIHZlcnNpb25zIGhhdmUgaXQgdG9vLiBJZiB0aGUgdXNlciBpcyB1c2luZyBzb21lIG90aGVyIHNzaAorICAgICAgICAqIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCBhY2NlcHQgaXQsIHRoZXkgY2FuIG92ZXJyaWRlIGl0CisgICAgICAgICogaW4gdGhlIFt0dW5uZWxzXSBzZWN0aW9uIG9mIHRoZSBjb25maWcuICovCistICAgICAgdmFsID0gIiRTVk5fU1NIIHNzaCAtcSI7CisrICAgICAgdmFsID0gIiRTVk5fU1NIIHNzaCAtcSAtLSI7CisgICAgIH0KKyAKKyAgIGlmICghdmFsIHx8ICEqdmFsKQorQEAgLTQ0Myw3ICs0NDQsNyBAQAorICAgZm9yIChuID0gMDsgY21kX2FyZ3Zbbl0gIT0gTlVMTDsgbisrKQorICAgICBhcmd2W25dID0gY21kX2FyZ3Zbbl07CisgCistICBhcmd2W24rK10gPSBzdm5fcGF0aF91cmlfZGVjb2RlKGhvc3RpbmZvLCBwb29sKTsKKysgIGFyZ3ZbbisrXSA9IGhvc3RpbmZvOworICAgYXJndltuKytdID0gInN2bnNlcnZlIjsKKyAgIGFyZ3ZbbisrXSA9ICItdCI7CisgICBhcmd2W25dID0gTlVMTDsKK0BAIC04MTEsNyArODEyLDMzIEBACisgfQorIAorIAorKy8qIEEgc2ltcGxlIHdoaXRlbGlzdCB0byBlbnN1cmUgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQ6CisrICogICB1c2VyQHNlcnZlcgorKyAqICAgWzo6MV06MjIKKysgKiAgIHNlcnZlci1uYW1lCisrICogICBzZXJ2ZXJfbmFtZQorKyAqICAgMTI3LjAuMC4xCisrICogd2l0aCBhbiBleHRyYSByZXN0cmljdGlvbiB0aGF0IGEgbGVhZGluZyAnLScgaXMgaW52YWxpZC4KKysgKi8KKytzdGF0aWMgc3ZuX2Jvb2xlYW5fdAorK2lzX3ZhbGlkX2hvc3RpbmZvKGNvbnN0IGNoYXIgKmhvc3RpbmZvKQorK3sKKysgIGNvbnN0IGNoYXIgKnAgPSBob3N0aW5mbzsKKyAKKysgIGlmIChwWzBdID09ICctJykKKysgICAgcmV0dXJuIEZBTFNFOworKworKyAgd2hpbGUgKCpwKQorKyAgICB7CisrICAgICAgaWYgKCFzdm5fY3R5cGVfaXNhbG51bSgqcCkgJiYgIXN0cmNocigiOi4tX1tdQCIsICpwKSkKKysgICAgICAgIHJldHVybiBGQUxTRTsKKysKKysgICAgICArK3A7CisrICAgIH0KKysKKysgIHJldHVybiBUUlVFOworK30KKysKKyBzdGF0aWMgc3ZuX2Vycm9yX3QgKnJhX3N2bl9vcGVuKHN2bl9yYV9zZXNzaW9uX3QgKnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqY29ycmVjdGVkX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVybCwKK0BAIC04NDQsOCArODcxLDE4IEBACisgICAgICAgICAgIHx8IChjYWxsYmFja3MtPmNoZWNrX3R1bm5lbF9mdW5jICYmIGNhbGxiYWNrcy0+b3Blbl90dW5uZWxfZnVuYworICAgICAgICAgICAgICAgJiYgIWNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMoY2FsbGJhY2tzLT50dW5uZWxfYmF0b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dW5uZWwpKSkpCistICAgIFNWTl9FUlIoZmluZF90dW5uZWxfYWdlbnQodHVubmVsLCB1cmkuaG9zdGluZm8sICZ0dW5uZWxfYXJndiwgY29uZmlnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9wb29sKSk7CisrICAgIHsKKysgICAgICBjb25zdCBjaGFyICpkZWNvZGVkX2hvc3RpbmZvOworKworKyAgICAgIGRlY29kZWRfaG9zdGluZm8gPSBzdm5fcGF0aF91cmlfZGVjb2RlKHVyaS5ob3N0aW5mbywgcmVzdWx0X3Bvb2wpOworKworKyAgICAgIGlmICghaXNfdmFsaWRfaG9zdGluZm8oZGVjb2RlZF9ob3N0aW5mbykpCisrICAgICAgICByZXR1cm4gc3ZuX2Vycm9yX2NyZWF0ZWYoU1ZOX0VSUl9CQURfVVJMLCBOVUxMLCBfKCJJbnZhbGlkIGhvc3QgJyVzJyIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5ob3N0aW5mbyk7CisrCisrICAgICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIGRlY29kZWRfaG9zdGluZm8sICZ0dW5uZWxfYXJndiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywgcmVzdWx0X3Bvb2wpKTsKKysgICAgfQorICAgZWxzZQorICAgICB0dW5uZWxfYXJndiA9IE5VTEw7CisgCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmYmE2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJzZXJmIgotTElDRU5TRSA9ICJBcGFjaGUtMiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGdldHRleHQKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmYubTQtUmVnZXgtbW9kaWZpZWQtdG8tYWxsb3ctRC1pbi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlmY2JhZTM1MmE1ZWZlNzNkNDZhODhjOTdjNmJiYTE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhNGZjNjhhZmYxZDE4ZGNiNGRkOWU0NjA2NDhkMjRkOWU5ODY1N2ZiZWQ0OTZjNTgyOTI5YzZiM2NlNTU1ZTUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgotCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmVkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNi5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZworCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk4MDAucGF0Y2g7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjI3ZTAwMzM4ZDRhOWY3ZjlhZWM5ZDRhM2Y4YjQxOGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGJjYmM1MWZiNjM0MDgyZjAwOTEyMWYyY2I2NDM1MGNlMzIxNDY2MTI3ODdmZmIwZjdjZWQzNTFhYWNhYWUxOSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2V4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCitDUFBGTEFHUyArPSAiLVAiCitCVUlMRF9DUFBGTEFHUyArPSAiLVAiCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2xpYnRvb2wKKwlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKKwlybSAtZiAke1N9L2FjbG9jYWwubTQKKwlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKK30KKworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0CisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCisjfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXhfNi4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXhfNi4wMy5iYgppbmRleCA2OWJjZTFmLi5mOGIxMDk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4XzYuMDMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eF82LjAzLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJNdWx0aS1wdXJwb3NlIGxpbnV4IGJvb3Rsb2FkZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vc3lzbGludXguenl0b3IuY29tLyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3lzbGludXgub3JnLyIKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zNTtlbmRsaW5lPTQxO21kNT01NThmMmM3MWNiMWZiOWJhNTExY2NkNDg1OGU0OGU4YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L2ZpbGVzLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTA0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L2ZpbGVzLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZDM3OTEyNmQ1NmQwYjZlOTM1YjJkOTdjYTcxNTc5ZTZjYzU0ZDFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDEzOjM3OjI3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBhcnNlLXV0aWw6IERvbid0IHVzZSB4bG9jYWxlLmgKKworZ2xpYmMgMi4yNiBubyBsb25nZXIgY29udGFpbnMgdGhlIG5vbi1zdGFuZGFyZCB4bG9jYWxlLmgKKyhodHRwOi8vc291cmNld2FyZS5vcmcvZ2xpYmMvd2lraS9SZWxlYXNlLzIuMjYjUmVtb3ZhbF9vZl8uMjd4bG9jYWxlLmguMjcpCisKK1RoaXMgY2hhbmdlIHNob3VsZG4ndCBicmVhayBhbnl0aGluZyBhcyB4bG9jYWxlLmggd2FzIGEgc3Vic2V0IG9mCitsb2NhbGUuaC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC9wdWxsLzM1XQorLS0tCisgc3JjL3BhcnNlLXV0aWwuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGFyc2UtdXRpbC5jIGIvc3JjL3BhcnNlLXV0aWwuYworaW5kZXggNTYzNWE2OC4uMWIyMTY5YyAxMDA2NDQKKy0tLSBhL3NyYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9wYXJzZS11dGlsLmMKK0BAIC0yMSw3ICsyMSw2IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHhsb2NhbGUuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgppbmRleCAxZDg4MDM2Li40ZGEwMDBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgpAQCAtMiw3ICsyLDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoIFwKKyIKIAogIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAogUFYgPSAiMjMxK2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggZTVlNDFmMS4uOWRiMjZkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuc2VydmljZSBcCiAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIERFUEVORFMgPSAidXRpbC1saW51eCBvcGVuc3NsIgogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKQEAgLTMwLDE2ICszMSwyMiBAQAogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgMyA1IC4gc3RvcCAyMCAwIDEgMiA2IC4iCiAKICMgbWFuZ2xpbmcgbmVlZGVkIGZvciBtYWtlCi1NQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsYCIKK01BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NiwgfCBzZWQgcyxhYXJjaDY0LGE2NCxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgogCi0jIFRoZXkgZG9uJ3QgYnVpbGQgb24gQVJNIGFuZCB3ZSBkb24ndCBuZWVkIHRoZW0gYWN0dWFsbHkuCi1DRkxBR1MgKz0gIi1EU0VSVklDRV9SdW5Db250cm9sPTAgLURTRVJWSUNFX0JyZWFrcG9pbnRzPTAgXAorTENMX1NUT1BfU0VSVklDRVMgPSAiLURTRVJWSUNFX1J1bkNvbnRyb2w9MCAtRFNFUlZJQ0VfQnJlYWtwb2ludHM9MCBcCiAgICAgLURTRVJWSUNFX01lbW9yeT0wIC1EU0VSVklDRV9SZWdpc3RlcnM9MCAtRFNFUlZJQ0VfTWVtb3J5TWFwPTAgXAotICAgIC1EU0VSVklDRV9TdGFja1RyYWNlPTAgLURTRVJWSUNFX1N5bWJvbHM9MCAtRFNFUlZJQ0VfTGluZU51bWJlcnM9MCBcCi0gICAgLURTRVJWSUNFX0V4cHJlc3Npb25zPTAiCisgICAgLURTRVJWSUNFX1N0YWNrVHJhY2U9MCAtRFNFUlZJQ0VfRXhwcmVzc2lvbnM9MCIKKworCisjIFRoZXNlIGZlYXR1cmVzIGRvbid0IGNvbXBpbGUgZm9yIHNldmVyYWwgY2FzZXMuCisjCitDRkxBR1NfYXBwZW5kX21pcHMgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9taXBzNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogCiBkb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0ke0R9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGNkMThmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCi0KLSMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCi1MSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSIKLQotREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCi0KLUJBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTkzYWVhODEwNzgzOWE3OWRmOGFjNzA5NTUyZWNiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMjY1NDA5NzgxZTRiM2VkY2M0ZWY4MjI1MzMwNzFiMzRjM2RjNjc5MGI4OTM5NjM4MDliOWZlMjIxYmVmZTA3IgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgotCi1WRVIgPSAiJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZwotCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29uZmlndXJlKCkgewotCWNkICR7U30KLQlnbnUtY29uZmlnaXplCi0JY2QgJHtCfQotCW9lX3J1bmNvbmYKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCi0JbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAotCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9Ci0Jc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAotCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KLQljZCAuLgotCWZvciBkaXIgaW4gY29tcGF0IGdlbmVyaWMgdW5peDsgZG8KLQkJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpcgotCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS8uLi8kZGlyLyouaCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpci8KLQlkb25lCi19Ci0KLVNZU1JPT1RfRElSUyArPSAiJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSIKLQotUEFDS0FHRVMgPSsgInRjbC1saWIiCi1GSUxFU190Y2wtbGliID0gIiR7bGliZGlyfS9saWJ0Y2w4LjYuc28uKiIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdGNsJHtWRVJ9ICR7bGliZGlyfS90Y2w4LjYgJHtsaWJkaXJ9L3RjbDgiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90Y2xDb25maWcuc2ggJHtsaWJkaXJ9L3RjbG9vQ29uZmlnLnNoIgotCi0jIGlzbid0IGdldHRpbmcgcGlja2VkIHVwIGJ5IHNobGlicyBjb2RlCi1SREVQRU5EU18ke1BOfSArPSAidGNsLWxpYiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZ2NjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSB0Y2x0ZXN0Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgJHtCfS90Y2x0ZXN0ICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgJHtTfS8uLi9saWJyYXJ5ICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgJHtTfS8uLi90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi0jIEZpeCBzb21lIHBhdGhzIHRoYXQgbWlnaHQgYmUgdXNlZCBieSBUY2wgZXh0ZW5zaW9ucwotQklOQ09ORklHX0dMT0IgPSAiKkNvbmZpZy5zaCIKLQotIyBGaXggdGhlIHBhdGggaW4gc3N0YXRlCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiKkNvbmZpZy5zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjNzNiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCkBAIC0wLDAgKzEsMTAxIEBACitTVU1NQVJZID0gIlRvb2wgQ29tbWFuZCBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly90Y2wuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC90Y2x0ayIKKworIyBodHRwOi8vd3d3LnRjbC50ay9zb2Z0d2FyZS90Y2x0ay9saWNlbnNlLmh0bWwKK0xJQ0VOU0UgPSAidGNsICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9jb21wYXQvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9saWJyYXJ5L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbWFjb3N4L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vdGVzdHMvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi93aW4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorIgorCitERVBFTkRTID0gInRjbC1uYXRpdmUgemxpYiIKKworQkFTRV9TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS90Y2wvJHtCUE59JHtQVn0tc3JjLnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL3RjbC1hZGQtc29uYW1lLnBhdGNoIgorU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAorICAgICAgICAgICBmaWxlOi8vZml4X25vbl9uYXRpdmVfYnVpbGRfaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub19wYWNrYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjU2NzNhYWY0NWI1ZGU1ZDhkZDgwYmIzZGFhZWI4ODM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjNmI4Zjg0ZTM3MzMyNDIzY2ZlNWJhZTUwMzQ0MGQ4ODQ1MGRhOGNjMTI0MzQ5NjI0OWZhYTUyNjgwMjZiYTUiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKK1ZFUiA9ICIke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1ycGF0aCAtLWxpYmRpcj0ke2xpYmRpcn0iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwllY2hvID4gJHtTfS8uLi9jb21wYXQvZml4c3RydG9kLmMKK30KKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1wcml2YXRlLWhlYWRlcnMKKwlsbiAtc2YgLi90Y2xzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3RjbHNoCisJbG4gLXNmIHRjbHNoOC42ICR7RH0ke2JpbmRpcn0vdGNsc2gke1ZFUn0KKwlzZWQgLWkgInM7LUwke0J9Oy1MJHtTVEFHSU5HX0xJQkRJUn07ZyIgdGNsQ29uZmlnLnNoCisJc2VkIC1pICJzOycke1dPUktESVJ9Oycke1NUQUdJTkdfSU5DRElSfTtnIiB0Y2xDb25maWcuc2gKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7bGliZGlyfQorCWZvciBkaXIgaW4gY29tcGF0IGdlbmVyaWMgdW5peDsgZG8KKwkJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpcgorCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS8uLi8kZGlyLyouaCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpci8KKwlkb25lCit9CisKK1NZU1JPT1RfRElSUyArPSAiJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSIKKworUEFDS0FHRVMgPSsgInRjbC1saWIiCitGSUxFU190Y2wtbGliID0gIiR7bGliZGlyfS9saWJ0Y2w4LjYuc28uKiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdGNsJHtWRVJ9ICR7bGliZGlyfS90Y2w4LjYgJHtsaWJkaXJ9L3RjbDgiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90Y2xDb25maWcuc2ggJHtsaWJkaXJ9L3RjbG9vQ29uZmlnLnNoIgorCisjIGlzbid0IGdldHRpbmcgcGlja2VkIHVwIGJ5IHNobGlicyBjb2RlCitSREVQRU5EU18ke1BOfSArPSAidGNsLWxpYiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZ2NjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSB0Y2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS90Y2x0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi9saWJyYXJ5ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQorfQorCisjIEZpeCBzb21lIHBhdGhzIHRoYXQgbWlnaHQgYmUgdXNlZCBieSBUY2wgZXh0ZW5zaW9ucworQklOQ09ORklHX0dMT0IgPSAiKkNvbmZpZy5zaCIKKworIyBGaXggdGhlIHBhdGggaW4gc3N0YXRlCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKkNvbmZpZy5zaCIKKworIyBDbGVhbnVwIGhvc3QgcGF0aCBmcm9tICR7bGliZGlyfS90Y2xDb25maWcuc2ggYW5kIHJlbW92ZSB0aGUKKyMgJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2ggZnJvbSB0YXJnZXQKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAidGNsX3BhY2thZ2VfcHJlcHJvY2VzcyIKK3RjbF9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7CisJc2VkIC1pIC1lICJzOyR7REVCVUdfUFJFRklYX01BUH07O2ciIFwKKwkgICAgICAgLWUgInM7LUwke1NUQUdJTkdfTElCRElSfTstTCR7bGliZGlyfTtnIiBcCisJICAgICAgIC1lICJzOyR7U1RBR0lOR19JTkNESVJ9OyR7aW5jbHVkZWRpcn07ZyIgXAorCSAgICAgICAtZSAiczstLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH07O2ciIFwKKwkgICAgICAgJHtQS0dEfSR7bGliZGlyfS90Y2xDb25maWcuc2gKKworCXJtIC1mICR7UEtHRH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKaW5kZXggNTJhYTE3ZS4uY2ViYzg2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCkBAIC0xNyw3ICsxNyw4IEBACiAjIE9ubHkgc3VidmVyc2lvbiB1cmwgbGVmdCBpbiBPRS1Db3JlLCB1c2UgYSBtaXJyb3IgdGFyYmFsbCBpbnN0ZWFkIHNpbmNlCiAjIHRoaXMgcmFyZWx5IGNoYW5nZXMuCiAjIHN2bjovL3N2bi5jb2RlLnNmLm5ldC9wL3VuZnMzL2NvZGU7bW9kdWxlPXRydW5rO3Jldj0ke01PRF9QVn07cHJvdG9jb2w9aHR0cAotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvdHJ1bmtfc3ZuLmNvZGUuc2YubmV0Xy5wLnVuZnMzLmNvZGVfNDk3Xy50YXIuZ3ogXAorIyByZW5hbWUgdGhlIHRhcmJhbGwgaW4gbWlycm9yIHRvIGF2b2lkIGNsYXNoIHdpdGggdXNlciBsb2NhbCBzdm4gdGFyYmFsbAorU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvdW5mczMtMC45LjIyLnI0OTcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3VuZnMzX3BhcmFsbGVsX2J1aWxkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2FsdGVybmF0ZV9ycGNfcG9ydHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4X3BpZF9yYWNlX3BhcmVudF93cml0ZXNfY2hpbGRfcGlkLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwppbmRleCBiMzM4ZWEwLi4xMjYxYzAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCkBAIC0yLDcgKzIsMTIgQEAKIERFU0NSSVBUSU9OID0gIlZhbGEgaXMgYSBDIy1saWtlIGxhbmd1YWdlIGRlZGljYXRlZCB0byBlYXNlIEdPYmplY3QgcHJvZ3JhbW1pbmcuIFwKIFZhbGEgY29tcGlsZXMgdG8gcGxhaW4gQyBhbmQgaGFzIG5vIHJ1bnRpbWUgZW52aXJvbm1lbnQgbm9yIHBlbmFsaXRpZXMgd2hhdHNvZXZlci4iCiBTRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlieHNsdC1uYXRpdmUgZ2xpYi0yLjAiCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBnbGliLTIuMCIKKworIyBBcHBlbmRpbmcgbGlieHNsdC1uYXRpdmUgdG8gZGVwZW5kZW5jaWVzIGhhcyBhbiBlZmZlY3QKKyMgb2YgcmVidWlsZGluZyB0aGUgbWFudWFsLCB3aGljaCBpcyB2ZXJ5IHNsb3cuIExldCdzIGRvIHRoaXMKKyMgb25seSB3aGVuIGFwaS1kb2N1bWVudGF0aW9uIGRpc3RybyBmZWF0dXJlIGlzIGVuYWJsZWQuCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXBpLWRvY3VtZW50YXRpb24nLCAnbGlieHNsdC1uYXRpdmUnLCAnJywgZCl9IgogCiAjIHZhbGEtbmF0aXZlIGNvbnRhaW5zIGEgbmF0aXZlIHZlcnNpb24gb2YgdmFwaWdlbiwgd2hpY2ggd2UgdXNlIGluc3RlYWQgb2YgdGhlIHRhcmdldCBvbmUKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdmFsYS1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM0LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM0LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYjQ5YWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTg1Njk4OWQ3NDlmYzVlNDcyYTM1OTJiOTZmOWNhNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIxN2JkMzM5NDE0NTYzZWJjNTFmNjRiMGI4Mzc5MTllYTc1NTJkOGE4ZmZhNzFjZGM4MzdkMjVjOTY5NmI4MyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTAwMGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNjMTkwMTQwOTNmMWEzZDk5NTM1NzI1M2I0NjMwODJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5ZjIzY2U3MTFjMWE3MmNlNjY0ZDEwOTQ2ZmJjNTk1M2YwMWIwYjdmMmEzNTYyZTdhMDFlMzYyZDg2ZGUwNTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtZml4LWJ1aWxkLWZvci1tdXNsLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtZml4LWJ1aWxkLWZvci1tdXNsLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNmZlZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLWZpeC1idWlsZC1mb3ItbXVzbC10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSAxYjFhMDI0ZWZkMThkNDQyOTRlMTg0ZTc5MmMxZTAzOWNhYjAyYmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgRmViIDIwMTYgMDk6MTQ6MTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIGZvciBtdXNsIHRhcmdldHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgfCAyIC0tCi0gY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jIHwgMiArLQotIGluY2x1ZGUvcHViX3Rvb2xfcmVkaXIuaCB8IDcgKysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5MzY2ZGM3Li42NzlmNTE0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDY2LDggKzEwNjYsNiBAQCBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgotIAk7OwotICAgICAgMi4wfDIuMXwqKQotIAlBQ19NU0dfUkVTVUxUKFt1bnN1cHBvcnRlZCB2ZXJzaW9uICR7R0xJQkNfVkVSU0lPTn1dKQotLQlBQ19NU0dfRVJST1IoW1ZhbGdyaW5kIHJlcXVpcmVzIGdsaWJjIHZlcnNpb24gMi4yIG9yIGxhdGVyLF0pCi0tCUFDX01TR19FUlJPUihbRGFyd2luIGxpYmMsIEJpb25pYyBsaWJjIG9yIFNvbGFyaXMgbGliY10pCi0gCTs7Ci0gZXNhYwotIAotZGlmZiAtLWdpdCBhL2NvcmVncmluZC92Z19wcmVsb2FkZWQuYyBiL2NvcmVncmluZC92Z19wcmVsb2FkZWQuYwotaW5kZXggMmVhN2E3YS4uZTQ5YzgzMiAxMDA2NDQKLS0tLSBhL2NvcmVncmluZC92Z19wcmVsb2FkZWQuYwotKysrIGIvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jCi1AQCAtNTYsNyArNTYsNyBAQAotIHZvaWQgVkdfTk9USUZZX09OX0xPQUQoZnJlZXJlcykoIHZvaWQgKTsKLSB2b2lkIFZHX05PVElGWV9PTl9MT0FEKGZyZWVyZXMpKCB2b2lkICkKLSB7Ci0tIyAgaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgXAotKyMgIGlmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19fKSBcCi0gICAgICAgJiYgIWRlZmluZWQoVkdQVl9hcm1fbGludXhfYW5kcm9pZCkgXAotICAgICAgICYmICFkZWZpbmVkKFZHUFZfeDg2X2xpbnV4X2FuZHJvaWQpIFwKLSAgICAgICAmJiAhZGVmaW5lZChWR1BWX21pcHMzMl9saW51eF9hbmRyb2lkKSBcCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9wdWJfdG9vbF9yZWRpci5oIGIvaW5jbHVkZS9wdWJfdG9vbF9yZWRpci5oCi1pbmRleCBiYWMwMGQ3Li5mYmIyZWYyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9wdWJfdG9vbF9yZWRpci5oCi0rKysgYi9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmgKLUBAIC0yNDIsOCArMjQyLDcgQEAKLSAvKiAtLS0gU29uYW1lIG9mIHRoZSBzdGFuZGFyZCBDIGxpYnJhcnkuIC0tLSAqLwotIAotICNpZiBkZWZpbmVkKFZHT19saW51eCkgfHwgZGVmaW5lZChWR09fc29sYXJpcykKLS0jICBkZWZpbmUgIFZHX1pfTElCQ19TT05BTUUgIGxpYmNaZHNvWmEgICAgICAgICAgICAgIC8vIGxpYmMuc28qCi0tCi0rIyAgZGVmaW5lICBWR19aX0xJQkNfU09OQU1FICBsaWJjWmRaYSAgICAgICAgICAgICAgICAvLyBsaWJjLioKLSAjZWxpZiBkZWZpbmVkKFZHT19kYXJ3aW4pICYmIChEQVJXSU5fVkVSUyA8PSBEQVJXSU5fMTBfNikKLSAjICBkZWZpbmUgIFZHX1pfTElCQ19TT05BTUUgIGxpYlN5c3RlbVpkWmFaZGR5bGliICAgIC8vIGxpYlN5c3RlbS4qLmR5bGliCi0gCi1AQCAtMjc0LDcgKzI3MywxMSBAQAotIC8qIC0tLSBTb25hbWUgb2YgdGhlIHB0aHJlYWRzIGxpYnJhcnkuIC0tLSAqLwotIAotICNpZiBkZWZpbmVkKFZHT19saW51eCkKLSsjIGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gIyAgZGVmaW5lICBWR19aX0xJQlBUSFJFQURfU09OQU1FICBsaWJwdGhyZWFkWmRzb1pkMCAgICAgLy8gbGlicHRocmVhZC5zby4wCi0rIyBlbHNlCi0rIyAgZGVmaW5lICBWR19aX0xJQlBUSFJFQURfU09OQU1FICBsaWJjWmRaYSAgICAgICAgICAgICAgLy8gbGliYy4qCi0rI2VuZGlmCi0gI2VsaWYgZGVmaW5lZChWR09fZGFyd2luKQotICMgIGRlZmluZSAgVkdfWl9MSUJQVEhSRUFEX1NPTkFNRSAgbGliU3lzdGVtWmRaYVpkZHlsaWIgIC8vIGxpYlN5c3RlbS4qLmR5bGliCi0gI2VsaWYgZGVmaW5lZChWR09fc29sYXJpcykKLS0tIAotMi43LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1ha2VmaWxlcy1Ecm9wLXNldHRpbmctbWNwdS10by1jb3J0ZXgtYTgtb24tYXJtLWFyY2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjFkYTdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1ha2VmaWxlcy1Ecm9wLXNldHRpbmctbWNwdS10by1jb3J0ZXgtYTgtb24tYXJtLWFyY2gucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gNzE1Y2YxMjIzODhmMzUyN2FmYTU2NDljZWJmOWYxNTIyYzI0MDY5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIwIEFwciAyMDE3IDEwOjExOjE2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2VmaWxlczogRHJvcCBzZXR0aW5nIC1tY3B1IHRvIGNvcnRleC1hOCBvbiBhcm0KKyBhcmNoaXRlY3R1cmUKKworV2UgY2FuIG5vdCBhc3N1bWUgdGhhdCBhbGwgYXJjaGVzIGFybXY3KyBhcmUgY29ydGV4LWE4IG9ubHkKK2l0IGZhaWxzIHRvIGJ1aWxkIGZvciBycGkgd2hpY2ggaXMgYXJtdjd2ZSBiYXNlZCAoY29ydGV4LWE4KSBjcHUKK2ltcGxlbWVudGF0aW9uLgorRml4ZXMKK3wgY2MxOiB3YXJuaW5nOiBzd2l0Y2ggLW1jcHU9Y29ydGV4LWE4IGNvbmZsaWN0cyB3aXRoIC1tYXJjaD1hcm12N3ZlIHN3aXRjaAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFsbC5hbSAgICAgICAgICAgIHwgIDYgKysrLS0tCisgaGVsZ3JpbmQvdGVzdHMvTWFrZWZpbGUuYW0gfCAgNiArKystLS0KKyBub25lL3Rlc3RzL2FybS9NYWtlZmlsZS5hbSB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbGwuYW0gYi9NYWtlZmlsZS5hbGwuYW0KK2luZGV4IDAyMDU5YTMuLmM3YzQ3MDAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbGwuYW0KKysrKyBiL01ha2VmaWxlLmFsbC5hbQorQEAgLTE5NywxMSArMTk3LDExIEBAIEFNX0NDQVNGTEFHU19QUEM2NExFX0xJTlVYICA9IEBGTEFHX002NEAgLWcKKyAKKyBBTV9GTEFHX00zMjY0X0FSTV9MSU5VWCAgID0gQEZMQUdfTTMyQAorIEFNX0NGTEFHU19BUk1fTElOVVggICAgICAgPSBARkxBR19NMzJAIFwKKy0JCQkgCSQoQU1fQ0ZMQUdTX0JBU0UpIC1tYXJtIC1tY3B1PWNvcnRleC1hOAorKwkJCSAJJChBTV9DRkxBR1NfQkFTRSkgLW1hcm0KKyBBTV9DRkxBR1NfUFNPX0FSTV9MSU5VWCAgID0gQEZMQUdfTTMyQCAkKEFNX0NGTEFHU19CQVNFKSBcCistCQkJCS1tYXJtIC1tY3B1PWNvcnRleC1hOCAkKEFNX0NGTEFHU19QU09fQkFTRSkKKysJCQkJLW1hcm0gJChBTV9DRkxBR1NfUFNPX0JBU0UpCisgQU1fQ0NBU0ZMQUdTX0FSTV9MSU5VWCAgICA9IEBGTEFHX00zMkAgXAorLQkJCQktbWFybSAtbWNwdT1jb3J0ZXgtYTggLWcKKysJCQkJLW1hcm0gLWcKKyAKKyBBTV9GTEFHX00zMjY0X0FSTTY0X0xJTlVYID0gQEZMQUdfTTY0QAorIEFNX0NGTEFHU19BUk02NF9MSU5VWCAgICAgPSBARkxBR19NNjRAICQoQU1fQ0ZMQUdTX0JBU0UpCitkaWZmIC0tZ2l0IGEvaGVsZ3JpbmQvdGVzdHMvTWFrZWZpbGUuYW0gYi9oZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZGY4MjE2OS4uMDdlYjY2YSAxMDA2NDQKKy0tLSBhL2hlbGdyaW5kL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9oZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTE4OSw5ICsxODksOSBAQCBpZiAhIFZHQ09ORl9QTEFURk9STVNfSU5DTFVERV9YODZfREFSV0lOCisgZW5kaWYKKyAKKyBpZiBWR0NPTkZfUExBVEZPUk1TX0lOQ0xVREVfQVJNX0xJTlVYCistYW5ub3RhdGVfaGJlZm9yZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLW1jcHU9Y29ydGV4LWE4CistdGMwN19oYmwxX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLW1jcHU9Y29ydGV4LWE4CistdGMwOF9oYmwyX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLW1jcHU9Y29ydGV4LWE4CisrYW5ub3RhdGVfaGJlZm9yZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKyt0YzA3X2hibDFfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKQorK3RjMDhfaGJsMl9DRkxBR1MgICAgICAgID0gJChBTV9DRkxBR1MpCisgZWxzZQorIGFubm90YXRlX2hiZWZvcmVfQ0ZMQUdTID0gJChBTV9DRkxBR1MpCisgdGMwN19oYmwxX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykKK2RpZmYgLS1naXQgYS9ub25lL3Rlc3RzL2FybS9NYWtlZmlsZS5hbSBiL25vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtCitpbmRleCAwMjRlYjZkLi5jY2VjYjkwIDEwMDY0NAorLS0tIGEvbm9uZS90ZXN0cy9hcm0vTWFrZWZpbGUuYW0KKysrKyBiL25vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtCitAQCAtNTIsMTAgKzUyLDEwIEBAIGFsbGV4ZWNfQ0ZMQUdTCQk9ICQoQU1fQ0ZMQUdTKSBARkxBR19XX05PX05PTk5VTExACisgIyBuZWVkIHNwZWNpYWwgaGVscGluZyB3LnIudCAtbWZwdSBhbmQgLW1mbG9hdC1hYmksIHRob3VnaC4KKyAjIEFsc28gZm9yY2UgLU8wIHNpbmNlIC1PIHRha2VzIGh1bmRyZWRzIG9mIE1CIG9mIG1lbW9yeSAKKyAjIGZvciB2NmludFRodW1iLmMuCistdjZpbnRBUk1fQ0ZMQUdTICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCAtbWFybQorLXY2aW50VGh1bWJfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWNwdT1jb3J0ZXgtYTggLW10aHVtYgorK3Y2aW50QVJNX0NGTEFHUyAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWFybQorK3Y2aW50VGh1bWJfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbXRodW1iCisgCistdjZtZWRpYV9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCAtbXRodW1iCisrdjZtZWRpYV9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tdGh1bWIKKyAKKyB2OGNyeXB0b19hX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1mcHU9Y3J5cHRvLW5lb24tZnAtYXJtdjggLW1hcm0KKyB2OGNyeXB0b190X0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1mcHU9Y3J5cHRvLW5lb24tZnAtYXJtdjggLW10aHVtYgorQEAgLTY1LDIzICs2NSwyMyBAQCB2OG1lbW9yeV9hX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgXAorIHY4bWVtb3J5X3RfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgCQkJLW1hcmNoPWFybXY4LWEgLW1mcHU9Y3J5cHRvLW5lb24tZnAtYXJtdjggLW10aHVtYgorIAorLXZmcF9DRkxBR1MgICAgICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWNwdT1jb3J0ZXgtYTggXAorK3ZmcF9DRkxBR1MgICAgICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgCQkJLW1mcHU9bmVvbiBcCisgCQkJLW10aHVtYgorIAorIAorLW5lb24xMjhfQ0ZMQUdTICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWNwdT1jb3J0ZXgtYTggXAorK25lb24xMjhfQ0ZMQUdTICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgCQkJLW1mcHU9bmVvbiBcCisgCQkJLW10aHVtYgorIAorLW5lb242NF9DRkxBR1MgICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWNwdT1jb3J0ZXgtYTggXAorK25lb242NF9DRkxBR1MgICAgID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgCQkJLW1mcHU9bmVvbiBcCisgCQkJLW10aHVtYgorIAorIGludGRpdl9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWFyY2g9YXJtdjd2ZSAtbWNwdT1jb3J0ZXgtYTE1IC1tdGh1bWIKKy1sZHJ0X0NGTEFHUwkgID0gJChBTV9DRkxBR1MpIC1nIC1tY3B1PWNvcnRleC1hOCAtbXRodW1iCistbGRydF9hcm1fQ0ZMQUdTCSAgPSAkKEFNX0NGTEFHUykgLWcgLW1jcHU9Y29ydGV4LWE4IC1tYXJtCisrbGRydF9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbXRodW1iCisrbGRydF9hcm1fQ0ZMQUdTCSAgPSAkKEFNX0NGTEFHUykgLWcgLW1hcm0KKyAKKy12Y3Z0X2ZpeGVkX2Zsb2F0X1ZGUF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLW1jcHU9Y29ydGV4LWE4IC1tZnB1PXZmcHYzCisrdmN2dF9maXhlZF9mbG9hdF9WRlBfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1tZnB1PXZmcHYzCisgCisgdmZwdjRfZm1hX0NGTEFHUyAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tYXJjaD1hcm12N3ZlIC1tY3B1PWNvcnRleC1hMTUgLW1mcHU9dmZwdjQgLW1hcm0KKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay1hcm02NC1EZWZpbmUtX19USFJPVy1pZi1ub3QtYWxyZWFkeS1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ4ZDdkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay1hcm02NC1EZWZpbmUtX19USFJPVy1pZi1ub3QtYWxyZWFkeS1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMzQwOWRjMzVjMTViYjE0YzhhNTI1MjM5ODA2MzIyNjQ4ZTA3OWFiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTc6MTI6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIG1lbWNoZWNrL2FybTY0OiBEZWZpbmUgX19USFJPVyBpZiBub3QgYWxyZWFkeSBkZWZpbmVkCisKK0hlbHBzIGNvbXBpbGluZyB3aXRoIG11c2wgd2hlcmUgX19USFJPVyBpcyBub3QgYXZhaWxhYmxlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBtZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lbWNoZWNrL3Rlc3RzL2FybTY0LWxpbnV4L3NjYWxhci5oIGIvbWVtY2hlY2svdGVzdHMvYXJtNjQtbGludXgvc2NhbGFyLmgKK2luZGV4IDkwMDg4MTYuLjhlZjA1MGYgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaAorKysrIGIvbWVtY2hlY2svdGVzdHMvYXJtNjQtbGludXgvc2NhbGFyLmgKK0BAIC0xMiw2ICsxMiwxMCBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKKysjaWZuZGVmIF9fVEhST1cKKysjZGVmaW5lIF9fVEhST1cKKysjZW5kaWYKKysKKyAvLyBTaW5jZSB3ZSB1c2UgdmtpX3VuaXN0ZC5oLCB3ZSBjYW4ndCBpbmNsdWRlIDx1bmlzdGQuaD4uICBTbyB3ZSBoYXZlIHRvCisgLy8gZGVjbGFyZSB0aGlzIG91cnNlbHZlcy4KKyBleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSBfX1RIUk9XOworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjE2YTFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA2MjlhYzQ5MmIxZDliYzcwOWQxNzMzN2ViOWIxYzI4NjAzZWNhMjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTE6MDE6MjUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVtY2hlY2svdGVzdHM6IFVzZSB1Y29udGV4dF90IGluc3RlYWQgb2Ygc3RydWN0IHVjb250ZXh0CisKK2dsaWJjIDIuMjYgZG9lcyBub3QgZXhwb3NlIHN0cnVjdCB1Y29udGV4dCBhbnltb3JlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxNzY5XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCitpbmRleCBmZmI0OWM2Li5hY2M0MTA5IDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCisrKysgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK0BAIC0xMSw3ICsxMSw3IEBACisgLy8gY2hlY2tzIHRoYXQgVmFsZ3JpbmQgbm90aWNlcyB0aGVpciBzdGFjayBjaGFuZ2VzIHByb3Blcmx5LgorIAorICNpZmRlZiBfX0dMSUJDX18KKy10eXBlZGVmICBzdHJ1Y3QgdWNvbnRleHQgIG15Y29udGV4dDsKKyt0eXBlZGVmIHVjb250ZXh0X3QgIG15Y29udGV4dDsKKyAKKyBteWNvbnRleHQgY3R4MSwgY3R4Miwgb2xkYzsKKyBpbnQgY291bnQ7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXNpZ3F1ZXVlLVJlbmFtZS1fc2lmaWVsZHMtdG8tX19zaV9maWVsZHMtb24tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzM2NjE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXNpZ3F1ZXVlLVJlbmFtZS1fc2lmaWVsZHMtdG8tX19zaV9maWVsZHMtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDY0YWQyNzQ0YWNmYjRmYTQwYjFjMTE0NjMzYTA1M2Y4NzEyNWEyMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMDo0NjozOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNl0gc2lncXVldWU6IFJlbmFtZSBfc2lmaWVsZHMgdG8gX19zaV9maWVsZHMgb24gbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG1lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc2lncXVldWUuYyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMKK2luZGV4IGQxOGJkNzIuLmFjYjdjYmEgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zaWdxdWV1ZS5jCisrKysgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zaWdxdWV1ZS5jCitAQCAtOCw2ICs4LDExIEBACisgI2luY2x1ZGUgPHN5c2NhbGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrLyogbXVzbCBsaWJjIGRlZmluZXMgc2lnaW5mb190IF9fc2lfZmllbGRzIGluc3RlYWQgb2YgX3NpZmllbGRzICovCisrI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2RlZmluZSBfc2lmaWVsZHMgX19zaV9maWVsZHMKKysjZW5kaWYKKysKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgeworICAgc2lnaW5mb190ICpzaTsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc3RyX3Rlc3Rlci5jLUxpbWl0LXJhd21lbWNoci10ZXN0LXRvLWdsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NWI4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc3RyX3Rlc3Rlci5jLUxpbWl0LXJhd21lbWNoci10ZXN0LXRvLWdsaWJjLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZGU2OTJlMzU5ODAxYTFmMDQ4OGM3NjI2N2U0ZjkwNGRkMmVmZTc1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAwOjM5OjA3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0cl90ZXN0ZXIuYzogTGltaXQgcmF3bWVtY2hyKCkgdGVzdCB0byBnbGliYworCityYXdtZW1jaHIoKSBpcyBhIEdOVSBleHRlbnRpb24gdGhlcmVmb3JlIG1hcmsgaXQgc28KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBtZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvc3RyX3Rlc3Rlci5jIGIvbWVtY2hlY2svdGVzdHMvc3RyX3Rlc3Rlci5jCitpbmRleCA5Zjc3OTBhLi40N2U0YjRhIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvc3RyX3Rlc3Rlci5jCisrKysgYi9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMKK0BAIC01MDQsNyArNTA0LDcgQEAgdGVzdF9zdHJjaHJudWwgKHZvaWQpCisgI2VuZGlmCisgCisgLy8gREREOiBiZXR0ZXIgZG9uZSBieSB0ZXN0aW5nIGZvciB0aGUgZnVuY3Rpb24uCistI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19zdW4pCisrI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19HTElCQ19fKQorIHN0YXRpYyB2b2lkCisgdGVzdF9yYXdtZW1jaHIgKHZvaWQpCisgeworQEAgLTE0NDIsNyArMTQ0Miw3IEBAIG1haW4gKHZvaWQpCisgICB0ZXN0X3N0cmNocm51bCAoKTsKKyAjIGVuZGlmCisgCistIyBpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKQorKyMgaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICAvKiByYXdtZW1jaHIuICAqLworICAgdGVzdF9yYXdtZW1jaHIgKCk7CisgIyBlbmRpZgorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOWYzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA4NjJiODA3MDc2ZDU3ZjJmNThlZDlkNTcyZGRhYzhiYjQwMjc3NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MDE6MTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIGNvbnRleHQgQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCitpbmRleCBhOTc4ZmMyLi5mZmI0OWM2IDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCisrKysgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK0BAIC0xMCw2ICsxMCw3IEBACisgLy8gVGhpcyB0ZXN0IGlzIGNoZWNraW5nIHRoZSBsaWJjIGNvbnRleHQgY2FsbHMgKHNldGNvbnRleHQsIGV0Yy4pIGFuZAorIC8vIGNoZWNrcyB0aGF0IFZhbGdyaW5kIG5vdGljZXMgdGhlaXIgc3RhY2sgY2hhbmdlcyBwcm9wZXJseS4KKyAKKysjaWZkZWYgX19HTElCQ19fCisgdHlwZWRlZiAgc3RydWN0IHVjb250ZXh0ICBteWNvbnRleHQ7CisgCisgbXljb250ZXh0IGN0eDEsIGN0eDIsIG9sZGM7CitAQCAtNTEsOSArNTIsMTEgQEAgaW50IGluaXRfY29udGV4dChteWNvbnRleHQgKnVjKQorIAorICAgICByZXR1cm4gcmV0OworIH0KKysjZW5kaWYKKyAKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgeworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgaW50IGMxID0gaW5pdF9jb250ZXh0KCZjdHgxKTsKKyAgICAgaW50IGMyID0gaW5pdF9jb250ZXh0KCZjdHgyKTsKKyAKK0BAIC02Niw2ICs2OSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgLy9mcmVlKGN0eDEudWNfc3RhY2suc3Nfc3ApOworICAgICBWQUxHUklORF9TVEFDS19ERVJFR0lTVEVSKGMyKTsKKyAgICAgLy9mcmVlKGN0eDIudWNfc3RhY2suc3Nfc3ApOworLQorKyNlbHNlCisrICAgIHByaW50ZigibGliYyBjb250ZXh0IGNhbGwgQVBJcyBlLmcuIGdldGNvbnRleHQoKSBhcmUgZGVwcmVjYXRlZCBieSBwb3NpeFxuIik7CisrI2VuZGlmCisgICAgIHJldHVybiAwOworIH0KKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItbWVtY2hlY2steDg2LURlZmluZS1fX1RIUk9XLWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MzM0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItbWVtY2hlY2steDg2LURlZmluZS1fX1RIUk9XLWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNjdkMTk5ZGJkY2JiM2ZlZmY1Zjg5MjhmODc3MjVmYzY0YzAzMDdkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTc6MzY6NDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIG1lbWNoZWNrL3g4NjogRGVmaW5lIF9fVEhST1cgaWYgbm90IGRlZmluZWQKKworbXVzbCBkb2VzIG5vdCBoYXZlIF9fVEhST1csIHRoZXJlZm9yZSBtYWtlIGl0IG51bGwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIG1lbWNoZWNrL3Rlc3RzL3g4Ni1saW51eC9zY2FsYXIuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lbWNoZWNrL3Rlc3RzL3g4Ni1saW51eC9zY2FsYXIuaCBiL21lbWNoZWNrL3Rlc3RzL3g4Ni1saW51eC9zY2FsYXIuaAoraW5kZXggZWYyOGIwMy4uNTJmNzQyZSAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL3g4Ni1saW51eC9zY2FsYXIuaAorKysrIGIvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oCitAQCAtMTEsNiArMTEsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCisrI2lmbmRlZiBfX1RIUk9XCisrI2RlZmluZSBfX1RIUk9XCisrI2VuZGlmCisrCisgLy8gU2luY2Ugd2UgdXNlIHZraV91bmlzdGQuaCwgd2UgY2FuJ3QgaW5jbHVkZSA8dW5pc3RkLmg+LiAgU28gd2UgaGF2ZSB0bworIC8vIGRlY2xhcmUgdGhpcyBvdXJzZWx2ZXMuCisgZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgX19USFJPVzsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMy1jb3JyZWN0LWluY2x1ZGUtZGlyZWN0aXZlLXBhdGgtZm9yLWNvbmZpZy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI5NjVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMy1jb3JyZWN0LWluY2x1ZGUtZGlyZWN0aXZlLXBhdGgtZm9yLWNvbmZpZy5oLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gZWNiZGVhN2JkOGIwODIwNWYxYmMzZjZiNzJkNGI0YTgwZjMxM2ZjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjAzOjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBjb3JyZWN0IGluY2x1ZGUgZGlyZWN0aXZlIHBhdGggZm9yIGNvbmZpZy5oCisKK3doZW4gYnVpbGRpbmcgb3V0IG9mIHNvdXJjZSB0cmVlLCBpdCBjYW4gbm90IGZpbmQKK3RoZSBnZW5lcmF0ZWQgY29uZmlnLmggb3RoZXJ3aXNlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc3lzY2FsbHMtMjAwNy5jICB8IDIgKy0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zeXNsb2ctc3lzY2FsbC5jIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzY2FsbHMtMjAwNy5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzY2FsbHMtMjAwNy5jCitpbmRleCBiNjFjNmQ1Li5jYzNmZDYyIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzY2FsbHMtMjAwNy5jCisrKysgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMKK0BAIC0xMCw3ICsxMCw3IEBACisgCisgI2RlZmluZSBfR05VX1NPVVJDRQorIAorLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKKysjaW5jbHVkZSAiY29uZmlnLmgiCisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNsb2ctc3lzY2FsbC5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzbG9nLXN5c2NhbGwuYworaW5kZXggMTE0MzcyMi4uMjFlNzU4YiAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMKK0BAIC02LDcgKzYsNyBAQAorICAqICAgIGtsb2djdGwoKS4KKyAgKi8KKyAKKy0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCisrI2luY2x1ZGUgImNvbmZpZy5oIgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpZiBkZWZpbmVkKEhBVkVfU1lTX0tMT0dfSCkKKyAjaW5jbHVkZSA8c3lzL2tsb2cuaD4KKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExMzQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gZDEwMzQ3NTg3NTg1OGFiOGEyZTZiNTNjZTE3OGJiMmY2Mzg4M2Q0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTc6Mzc6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHRlc3RzL3NlZ19vdmVycmlkZTogUmVwbGFjZSBfX21vZGlmeV9sZHQoKSB3aXRoIHN5c2NhbGwoKQorCitfX21vZGlmeV9sZHQoKSBpcyBzcGVjaWZpYyB0byBnbGliYywgcmVwbGFjaW5nIGl0IHdpdGggc3lzY2FsbCgpCittYWtlcyBpdCBtb3JlIHBvcnRhYmxlLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgbm9uZS90ZXN0cy94ODYtbGludXgvc2VnX292ZXJyaWRlLmMgfCAxNSArKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy94ODYtbGludXgvc2VnX292ZXJyaWRlLmMgYi9ub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYworaW5kZXggYjc2MTljOS4uYzg5ODc0YiAxMDA2NDQKKy0tLSBhL25vbmUvdGVzdHMveDg2LWxpbnV4L3NlZ19vdmVycmlkZS5jCisrKysgYi9ub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYworQEAgLTIsNiArMiw4IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzY2FsbC5oPgorIAorIC8qIFN0dWZmIGZyb20gV2luZS4gKi8KKyAKK0BAIC01MiwxNCArNTQsMTEgQEAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBpbnQgd2luZV9sZHRfZ2V0X2xpbWl0KCBjb25zdCBMRFRfRU5UUlkgKmVudCApCisgLyogb3VyIGNvcHkgb2YgdGhlIGxkdCAqLworIExEVF9FTlRSWSBsZHRfY29weVs4MTkyXTsKKyAKKy0vKiBTeXN0ZW0gY2FsbCB0byBzZXQgTERUIGVudHJ5LiAgKi8KKy0vL2V4dGVybiBpbnQgX19tb2RpZnlfbGR0IChpbnQsIHN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zICosIHNpemVfdCk7CistZXh0ZXJuIGludCBfX21vZGlmeV9sZHQgKGludCwgdm9pZCAqLCBzaXplX3QpOworLQorIHZvaWQgcHJpbnRfbGR0ICggdm9pZCApCisgeworICAgIGludCByZXM7CistICAgcmVzID0gX19tb2RpZnlfbGR0KCAwLCBsZHRfY29weSwgODE5MipzaXplb2YoTERUX0VOVFJZKSApOworKyAgIC8qIFN5c3RlbSBjYWxsIHRvIHNldCBMRFQgZW50cnkuICAqLworKyAgIHJlcyA9IHN5c2NhbGwoU1lTX21vZGlmeV9sZHQsIDAsIGxkdF9jb3B5LCA4MTkyKnNpemVvZihMRFRfRU5UUlkpICk7CisgICAgcHJpbnRmKCJnb3QgJWQgYnl0ZXNcbiIsIHJlcyApOyAgIAorICAgIHBlcnJvcigiZXJyb3IgaXMiKTsKKyB9CitAQCAtODMsOSArODIsNiBAQCBzdHJ1Y3QgbW9kaWZ5X2xkdF9sZHRfcworICAgdW5zaWduZWQgaW50IGVtcHR5OjI1OworIH07CisgCistLyogU3lzdGVtIGNhbGwgdG8gc2V0IExEVCBlbnRyeS4gICovCistLy9leHRlcm4gaW50IF9fbW9kaWZ5X2xkdCAoaW50LCBzdHJ1Y3QgbW9kaWZ5X2xkdF9sZHRfcyAqLCBzaXplX3QpOworLQorIHZvaWQgc2V0X2xkdDEgKCB2b2lkKiBiYXNlICkKKyB7CisgICBpbnQgc3RhdDsKK0BAIC0xMDIsNyArOTgsOCBAQCB2b2lkIHNldF9sZHQxICggdm9pZCogYmFzZSApCisgICBsZHRfZW50cnkucmVhZF9leGVjX29ubHkgPSAwOworICAgbGR0X2VudHJ5LmxpbWl0X2luX3BhZ2VzID0gMDsKKyAgIGxkdF9lbnRyeS5zZWdfbm90X3ByZXNlbnQgPSAwOworLSAgc3RhdCA9IF9fbW9kaWZ5X2xkdCAoMSwgJmxkdF9lbnRyeSwgc2l6ZW9mIChsZHRfZW50cnkpKTsKKysgIC8qIFN5c3RlbSBjYWxsIHRvIHNldCBMRFQgZW50cnkuICAqLworKyAgc3RhdCA9IHN5c2NhbGwoU1lTX21vZGlmeV9sZHQsIDEsICZsZHRfZW50cnksIHNpemVvZiAobGR0X2VudHJ5KSk7CisgICBwcmludGYoInN0YXQgPSAlZFxuIiwgc3RhdCk7CisgfQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAppbmRleCBlZDMxM2Q2Li4zOTAyMmQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMzhhZTIzM2I2ODkzYTRlZWM3ZjllZDZkOGFkMDIzOTJiY2E4ZWFlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzM5NDIxZTI1M2U2ZWJhM2ViNjQzODY1MTgyMmY4MGZhOWMwNTAyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxNSBEZWMgMjAxNSAxNTozMTo1MCArMDIwMAogU3ViamVjdDogW1BBVENIIDEvMl0gRml4IG91dCBvZiB0cmVlIGJ1aWxkcy4KQEAgLTEzLDIxICsxMywyMSBAQAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhhYjdmOWIuLjkzNjZkYzcgMTAwNjQ0CitpbmRleCAzODc0Mjk2ZmRlMGIuLjdhNWJhMmM4NTU3ZSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzc3LDQ0ICszNzcsNDQgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KK0BAIC0zNzMsNTAgKzM3Myw1MCBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgogIAkgICAgIDkuKikKICAJCSAgQUNfTVNHX1JFU1VMVChbRGFyd2luIDkueCAoJHtrZXJuZWx9KSAvIE1hYyBPUyBYIDEwLjUgTGVvcGFyZF0pCiAgCQkgIEFDX0RFRklORShbREFSV0lOX1ZFUlNdLCBEQVJXSU5fMTBfNSwgW0RhcndpbiAvIE1hYyBPUyBYIHZlcnNpb25dKQogLQkJICBERUZBVUxUX1NVUFA9ImRhcndpbjkuc3VwcCAke0RFRkFVTFRfU1VQUH0iCiAtCQkgIERFRkFVTFRfU1VQUD0iZGFyd2luOS1kcmQuc3VwcCAke0RFRkFVTFRfU1VQUH0iCi0rCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LnN1cHAgJHtERUZBVUxUX1NVUFB9IgotKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luOS1kcmQuc3VwcCAke0RFRkFVTFRfU1VQUH0iCisrIAkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luOS5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysgCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKICAJCSAgOzsKICAJICAgICAxMC4qKQogIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gMTAueCAoJHtrZXJuZWx9KSAvIE1hYyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkXSkKQEAgLTc3LDkgKzc3LDE3IEBACiArCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW4xNS5zdXBwICR7REVGQVVMVF9TVVBQfSIKICsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjEwLWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKICAJCSAgOzsKKyAJICAgICAxNi4qKQorIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gMTYueCAoJHtrZXJuZWx9KSAvIG1hY09TIDEwLjEyIFNpZXJyYV0pCisgCQkgIEFDX0RFRklORShbREFSV0lOX1ZFUlNdLCBEQVJXSU5fMTBfMTIsIFtEYXJ3aW4gLyBNYWMgT1MgWCB2ZXJzaW9uXSkKKy0JCSAgREVGQVVMVF9TVVBQPSJkYXJ3aW4xNi5zdXBwICR7REVGQVVMVF9TVVBQfSIKKy0JCSAgREVGQVVMVF9TVVBQPSJkYXJ3aW4xMC1kcmQuc3VwcCAke0RFRkFVTFRfU1VQUH0iCisrCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW4xNi5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjEwLWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKKyAJCSAgOzsKICAgICAgICAgICAgICAgKikgCiAgCQkgIEFDX01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkICgke2tlcm5lbH0pXSkKLUBAIC00MjYsMTMgKzQyNiwxMyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgorQEAgLTQyOCwxMyArNDI4LDEzIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCiAgICAgICBzb2xhcmlzMi4xMSopCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtvayAoJHtob3N0X29zfSldKQogICAgICAgICAgVkdDT05GX09TPSJzb2xhcmlzIgpAQCAtOTUsNyArMTAzLDcgQEAKICAgICAgICAgIDs7CiAgCiAgICAgICAqKSAKLUBAIC0xMDE1LDI5ICsxMDE1LDI5IEBAIEFDX01TR19DSEVDS0lORyhbdGhlIGdsaWJjIHZlcnNpb25dKQorQEAgLTk4MiwyOSArOTgyLDI5IEBAIEFDX01TR19DSEVDS0lORyhbdGhlIGdsaWJjIHZlcnNpb25dKQogIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCiAgICAgICAyLjIpCiAgCUFDX01TR19SRVNVTFQoJHtHTElCQ19WRVJTSU9OfSBmYW1pbHkpCkBAIC0xMzUsNyArMTQzLDcgQEAKICAJOzsKICAgICAgIDIuKikKICAJQUNfTVNHX1JFU1VMVCgke0dMSUJDX1ZFUlNJT059IGZhbWlseSkKLUBAIC0xMDQ2LDggKzEwNDYsOCBAQCBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgorQEAgLTEwMTMsOCArMTAxMyw4IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCiAgCUFDX0RFRklORShbR0xJQkNfTUFOREFUT1JZX0lOREVYX0FORF9TVFJMRU5fUkVESVJFQ1RdLCAxLAogIAkJICBbRGVmaW5lIHRvIDEgaWYgaW5kZXgoKSBhbmQgc3RybGVuKCkgaGF2ZSBiZWVuIG9wdGltaXplZCBoZWF2aWx5ICh4ODYgZ2xpYmMgPj0gMi4xMildKQogIAlERUZBVUxUX1NVUFA9ImdsaWJjLTIuWC5zdXBwICR7REVGQVVMVF9TVVBQfSIKQEAgLTE0Niw3ICsxNTQsNyBAQAogIAk7OwogICAgICAgZGFyd2luKQogIAlBQ19NU0dfUkVTVUxUKERhcndpbikKLUBAIC0xMDU3LDcgKzEwNTcsNyBAQCBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgorQEAgLTEwMjQsNyArMTAyNCw3IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCiAgICAgICBiaW9uaWMpCiAgCUFDX01TR19SRVNVTFQoQmlvbmljKQogIAlBQ19ERUZJTkUoW0JJT05JQ19MSUJDXSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSdyZSB1c2luZyBCaW9uaWNdKQpAQCAtMTU1LDcgKzE2Myw3IEBACiAgCTs7CiAgICAgICBzb2xhcmlzKQogIAlBQ19NU0dfUkVTVUxUKFNvbGFyaXMpCi1AQCAtMTA3OSwxMSArMTA3OSwxMSBAQCBpZiB0ZXN0ICIkVkdDT05GX09TIiAhPSAic29sYXJpcyI7IHRoZW4KK0BAIC0xMDUxLDExICsxMDUxLDExIEBAIGlmIHRlc3QgIiRWR0NPTkZfT1MiICE9ICJzb2xhcmlzIjsgdGhlbgogICAgICAjIGF0dGVtcHQgdG8gZGV0ZWN0IHdoZXRoZXIgc3VjaCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCBvbiB0aGUKICAgICAgIyBidWlsZCBtYWNoaW5lIChvciBldmVuIGlmIGFueSBYIGZhY2lsaXRpZXMgYXJlIHByZXNlbnQpOyBqdXN0CiAgICAgICMgYWRkIHRoZSBzdXBwcmVzc2lvbnMgYW50aWRpc2lycmVnYXJkbGVzcy4KQEAgLTE3MSw1ICsxNzksNSBAQAogIAogIAogLS0gCi0yLjYuMgorMi4xMy4yLjMuZzQ0Y2Q4NWMxNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2I3MDYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIGZiNzdmZWY0Zjg2NmRhYzdiY2M2ZDFhZTAyNWRhNjA1NjQ4NjlmODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTowNjoxMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNl0gcHRoX2F0Zm9yazEuYzogRGVmaW5lIGVycm9yKCkgQVBJIGZvciBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvcHRoX2F0Zm9yazEuYyBiL25vbmUvdGVzdHMvcHRoX2F0Zm9yazEuYworaW5kZXggMzQyMDFlZi4uYjdmNWYyZCAxMDA2NDQKKy0tLSBhL25vbmUvdGVzdHMvcHRoX2F0Zm9yazEuYworKysrIGIvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jCitAQCAtMTgsNyArMTgsNyBAQAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikKKysjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgIyBpbmNsdWRlIDxlcnJvci5oPgorICNlbmRpZgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0BAIC0yNyw3ICsyNyw3IEBACisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCistI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fc3VuKQorKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX3N1bikgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pKQorICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8qIHN0cmVycm9yICovCisgc3RhdGljIHZvaWQgZXJyb3IgKGludCBzdGF0dXMsIGludCBlcnJudW0sIGNoYXIqIG1zZykKKyB7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDUtdGMyMF92ZXJpZnl3cmFwLmMtRmFrZS1fX0dMSUJDX1BSRVJFUS13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDUtdGMyMF92ZXJpZnl3cmFwLmMtRmFrZS1fX0dMSUJDX1BSRVJFUS13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE3NjY0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGI0YjlmMDcyYzIyZjk2ODQ0ZTAyY2I5ZDY4ZjdmZjI0MDg2ODA4MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTowNzo1OSAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvNl0gdGMyMF92ZXJpZnl3cmFwLmM6IEZha2UgX19HTElCQ19QUkVSRVEgd2l0aCBtdXNsCisKK3NpbWlsYXIgdG8gc3VuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9oZWxncmluZC90ZXN0cy90YzIwX3ZlcmlmeXdyYXAuYyBiL2hlbGdyaW5kL3Rlc3RzL3RjMjBfdmVyaWZ5d3JhcC5jCitpbmRleCBjMTEwMDAwLi5hMzExYTQ5IDEwMDY0NAorLS0tIGEvaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMKKysrKyBiL2hlbGdyaW5kL3Rlc3RzL3RjMjBfdmVyaWZ5d3JhcC5jCitAQCAtMjAsNyArMjAsNyBAQAorIAorICNpZiAhZGVmaW5lZChfX0FQUExFX18pCisgCistI2lmIGRlZmluZWQoX19zdW5fXykKKysjaWYgZGVmaW5lZChfX3N1bl9fKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgLyogRmFrZSBfX0dMSUJDX1BSRVJFUSBvbiBTb2xhcmlzLiBQcmV0ZW5kIGdsaWJjID49IDIuNC4gKi8KKyAjIGRlZmluZSBfX0dMSUJDX1BSRVJFUQorICNlbHNlCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ODg2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGE2NTQ3ZmMxN2MxMjBkYmQ5NWI4NTJmNTBiMGM0YmRlZTRmZWRiOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMToyMDozMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDYvNl0gcHRoX2RldGFjaGVkMy5jOiBEZXJlZmVyZW5jZSBwdGhyZWFkX3QgYmVmb3JlIGFkZGluZworIG9mZnNldCB0byBpdAorCitGaXhlcworZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgX19wdGhyZWFkJworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworaW5kZXggYzAyZWVmMS4uMzVkNDNhNiAxMDA2NDQKKy0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKK0BAIC0yMSw3ICsyMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKKyAgIHB0aHJlYWRfZGV0YWNoKHRocmVhZCk7CisgCisgICAvKiBJbnZva2UgcHRocmVhZF9kZXRhY2goKSB3aXRoIGFuIGludmFsaWQgdGhyZWFkIElELiAqLworLSAgcHRocmVhZF9kZXRhY2godGhyZWFkICsgOCk7CisrICBwdGhyZWFkX2RldGFjaCgocHRocmVhZF90KikoJnRocmVhZCArIDgpKTsKKyAKKyAgIGZwcmludGYoc3RkZXJyLCAiRmluaXNoZWQuXG4iKTsKKyAKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbGluay1nei10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbGluay1nei10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjMyMjM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK1doZW4gY2hlY2tpbmcgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXByZXNzZWQgZGVidWcgc2VjdGlvbnMgd2UgbmVlZCB0bworYWN0dWFsbHkgbGluayBpbnN0ZWFkIG9mIGp1c3QgY29tcGlsZS4gIE90aGVyd2lzZSB0aGUgY29tcGlsZXIgdGhpbmtzIHRoYXQKK3RoZXkgYXJlIHN1cHBvcnRlZCwgYnV0IGdvbGQgZG9lcyBub3Qgc3VwcG9ydCAtZ3o9emxpYi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAocjE2NDU5KQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tIGEvY29uZmlndXJlLmFjfgkyMDE3LTA3LTExIDExOjUzOjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGIvY29uZmlndXJlLmFjCTIwMTctMDctMTEgMTg6MTY6MTMuNjc0MTMwNDgzICswMTAwCitAQCAtMjExOSw3ICsyMTE5LDcgQEAKKyBzYWZlX0NGTEFHUz0kQ0ZMQUdTCisgQ0ZMQUdTPSItZyAtZ3o9emxpYiIKKyAKKy1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWworK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCisgICByZXR1cm4gMDsKKyBdXSldLCBbCisgYWNfaGF2ZV9nel96bGliPXllcworQEAgLTIxMzksNyArMjEzOSw3IEBACisgc2FmZV9DRkxBR1M9JENGTEFHUworIENGTEFHUz0iLWcgLWd6PXpsaWItZ251IgorIAorLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCisrQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKKyAgIHJldHVybiAwOworIF1dKV0sIFsKKyBhY19oYXZlX2d6X3psaWJfZ251PXllcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcHBjLWhlYWRlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEyNTlkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcHBjLWhlYWRlcnMucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorQmFja3BvcnQgYSBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCB0ZXN0IGNvbXBpbGF0aW9uIGZvciBQUEMgd2hlcmUKK3N5c3RlbSBoZWFkZXJzIGRvbid0IGdldCBpbmNsdWRlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworcjE2NDUwIHwgbWp3IHwgMjAxNy0wNi0xNiAxMDozMzozNSArMDEwMCAoRnJpLCAxNiBKdW4gMjAxNykgfCA3IGxpbmVzCisKK3BwYzY0IGRvZXNuJ3QgY29tcGlsZSB0ZXN0X2lzYV8yXzA2X3BhcnR4LmMgd2l0aG91dCBWU1ggc3VwcG9ydAorCitUaGUgI2lmZGVmIEhBU19WU1ggZ3VhcmQgaXMgd3JvbmdseSBwbGFjZWQuIEl0IG1ha2VzIHRoZSBzdGFuZGFyZAoraW5jbHVkZSBoZWFkZXJzIG5vdCBiZSB1c2VkLiBDYXVzaW5nIGEgYnVpbGQgZmFpbHVyZS4gRml4IGJ5IG1vdmluZwordGhlICNpZmRlZiBIQVNfVlNYIGFmdGVyIHRoZSBzdGFuZGFyZCBpbmNsdWRlcy4KKworSW5kZXg6IG5vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NDkpCisrKysgYi9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NTApCitAQCAtMjAsMTcgKzIwLDE4IEBACisgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KKyAgKi8KKyAKKy0jaWZkZWYgSEFTX1ZTWAorLQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxtYWxsb2MuaD4KKy0jaW5jbHVkZSA8YWx0aXZlYy5oPgorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAvLyBnZXRvcHQKKyAKKysjaWZkZWYgSEFTX1ZTWAorKworKyNpbmNsdWRlIDxhbHRpdmVjLmg+CisrCisgI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisgdHlwZWRlZiB1aW50MzJfdCBIV29yZF90OworICNlbHNlCitJbmRleDogbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ0OSkKKysrKyBiL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ1MCkKK0BAIC0yMCwxMyArMjAsMTQgQEAKKyAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgorICAqLworIAorLSNpZmRlZiBIQVNfVlNYCistCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPG1hbGxvYy5oPgorKworKyNpZmRlZiBIQVNfVlNYCisrCisgI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKyAKKyAjaWZuZGVmIF9fcG93ZXJwYzY0X18KK0luZGV4OiBub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDQ5KQorKysrIGIvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDUwKQorQEAgLTIwLDE3ICsyMCwxOCBAQAorICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCisgICovCisgCistI2lmZGVmIEhBU19WU1gKKy0KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8bWFsbG9jLmg+CistI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZ2V0b3B0CisgCisrI2lmZGVmIEhBU19WU1gKKysKKysjaW5jbHVkZSA8YWx0aXZlYy5oPgorKworICNpZm5kZWYgX19wb3dlcnBjNjRfXworIHR5cGVkZWYgdWludDMyX3QgSFdvcmRfdDsKKyAjZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3J1bi1wdGVzdAppbmRleCBmOWE3MmVjLi40NDdkMzNjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3J1bi1wdGVzdApAQCAtMiwxMSArMiwyNCBAQAogCiAjIHJ1bi1wdGVzdCAtICdwdGVzdCcgdGVzdCBpbmZyYXN0cnVjdHVyZSBzaGVsbCBzY3JpcHQgdGhhdAogIyAgIHdyYXBzIHRoZSB2YWxncmluZCByZWdyZXNzaW9uIHNjcmlwdCB2Z19yZWd0ZXN0LiAKLSMgICBNdXN0IGJlIHJ1biBpbiB0aGUgL3Vzci9saWIvdmFsZ3JpbmQvcHRlc3QgZGlyZWN0b3J5LiAKICMKICMgRGF2ZSBMZXJuZXIgPGRhdmUubGVybmVyQHdpbmRyaXZlci5jb20+CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIFZBTEdSSU5ETElCPUBsaWJkaXJAL3ZhbGdyaW5kCi10ZXN0cy92Z19yZWd0ZXN0IC0tYWxsIFwKK0xPRz0iJHtWQUxHUklORExJQn0vcHRlc3QvdmFsZ3JpbmRfcHRlc3RfJChkYXRlICslWSVtJWQtJUglTSVTKS5sb2ciCisKK2NkICR7VkFMR1JJTkRMSUJ9L3B0ZXN0ICYmIC4vdGVzdHMvdmdfcmVndGVzdCAtLWFsbCBcCiAgICAgLS12YWxncmluZD0vdXNyL2Jpbi92YWxncmluZCAtLXZhbGdyaW5kLWxpYj0kVkFMR1JJTkRMSUIgXAotCS0teW9jdG8tcHRlc3QKKyAgICAtLXlvY3RvLXB0ZXN0IDI+JjF8dGVlICR7TE9HfQorCitwYXNzZWQ9YGdyZXAgUEFTUzogJHtMT0d9fHdjIC1sYAorZmFpbGVkPWBncmVwIEZBSUw6ICR7TE9HfXx3YyAtbGAKK3NraXBwZWQ9YGdyZXAgU0tJUDogJHtMT0d9fHdjIC1sYAorYWxsPSQoKHBhc3NlZCArIGZhaWxlZCArIHNraXBwZWQpKQorCisoIGVjaG8gIj09PSBUZXN0IFN1bW1hcnkgPT09IgorICBlY2hvICJUT1RBTDogJHthbGx9IgorICBlY2hvICJQQVNTRUQ6ICR7cGFzc2VkfSIKKyAgZWNobyAiRkFJTEVEOiAke2ZhaWxlZH0iCisgIGVjaG8gIlNLSVBQRUQ6ICR7c2tpcHBlZH0iCispIHwgdGVlIC1hIC8ke0xPR30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmOGNkM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJWYWxncmluZCBtZW1vcnkgZGVidWdnZXIgYW5kIGluc3RydW1lbnRhdGlvbiBmcmFtZXdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vdmFsZ3JpbmQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3ZhbGdyaW5kLm9yZy9zdXBwb3J0L2J1Z19yZXBvcnRzLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9wdWJfdG9vbF9iYXNpY3MuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI5O21kNT1lYmI4ZTY0MGVmNjMzZjk0MGM0MjU2ODZjODczZjlmYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3ZhbGdyaW5kLmg7YmVnaW5saW5lPTE7ZW5kbGluZT01NjttZDU9NGI1ZTI0OTA4ZTUzMDE2ZWE1NjFjNDVmNDIzNGEzMjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ET0NTO21kNT0yNGVhNGM3MDkyMjMzODQ5YjQzOTQ2OTkzMzNiNWM1NiIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSIKLURFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0gXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2Jvb3N0JywgJycsIGQpfSBcCi0gICAgICAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnZhbGdyaW5kLm9yZy9kb3dubG9hZHMvdmFsZ3JpbmQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhlZC1wZXJsLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQWRkZWQtc3VwcG9ydC1mb3ItUFBDLWluc3RydWN0aW9ucy1tZmF0YnUtbWZhdGJsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1Nb2RpZnktdmdfdGVzdC13cmFwcGVyLXRvLXN1cHBvcnQtUFRFU1QtZm9ybWF0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0cy10aGF0LWZhaWwtdG8tYnVpbGQtb24tc29tZS1QUEMzMi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlLWFwcHJvcHJpYXRlLW1hcmNoLW1jcHUtbWZwdS1mb3ItQVJNLXRlc3QtYXBwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uZW9uLWZvci10YXJnZXRzLXdoaWNoLWRvbi10LXN1cHBvcnQtaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdmFsZ3JpbmQtbWFrZS1sZC1YWFguc28tc3RybGVuLWludGVyY2VwdC1vcHRpb25hbC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtZm9yLW11c2wtdGFyZ2V0cy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNmViMDNjMGMxMGVhOTE3MDEzYTc2MjJlNDgzZDYxYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjdjYTQzOTViMjUyNzI0Nzc4MGYzNjE0OGIwODRmNTc0M2E2OGFiMGM4NTBjYjQzZTRhNWI0YjAxMmNmNzZhMSIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NHxhcm18YWFyY2g2NHxtaXBzfHBvd2VycGN8cG93ZXJwYzY0KS4qLWxpbnV4JwotCi0jIHZhbGdyaW5kIHN1cHBvcnRzIGFybXY3IGFuZCBhYm92ZQotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12NiA9ICdudWxsJwotCi0jIFgzMiBpc24ndCBzdXBwb3J0ZWQgYnkgdmFsZ3JpbmQgYXQgdGhpcyB0aW1lCi1DT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gJ251bGwnCi0KLSMgRGlzYWJsZSBmb3Igc29tZSBNSVBTIHZhcmlhbnRzCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaHI2ID0gJ251bGwnCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10bHMgLS13aXRob3V0LW1waWNjIgotRVhUUkFfT0VDT05GICs9ICIke0BbJy0tZW5hYmxlLW9ubHkzMmJpdCcsJy0tZW5hYmxlLW9ubHk2NGJpdCddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgotCi0jIHZhbGdyaW5kIGNoZWNrcyBob3N0X2NwdSAiYXJtdjcqKSIsIHNvIHdlIG5lZWQgdG8gb3Zlci1yaWRlIHRoZSBhdXRvdG9vbHMuYmJjbGFzcyBkZWZhdWx0IC0taG9zdCBvcHRpb24KLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAtLWhvc3Q9YXJtdjcke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9IgotCi1FWFRSQV9PRU1BS0UgPSAiLXciCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKLQotIyB2YWxncmluZCBsaWtlcyB0byBjb250cm9sIGl0cyBvd24gb3B0aW1pc2F0aW9uIGZsYWdzLiBJdCBnZW5lcmFsbHkgZGVmYXVsdHMKLSMgdG8gLU8yIGJ1dCB1c2VzIC1PMCBmb3Igc29tZSBzcGVjaWZpYyB0ZXN0IGFwcHMgZXRjLiBQYXNzaW5nIG91ciBvd24gZmxhZ3MKLSMgKHZpYSBDRkxBR1MpIG1lYW5zIHdlIGludGVyZmVyZSB3aXRoIHRoYXQuIE9ubHkgcGFzcyBERUJVR19GTEFHUyB0byBpdAotIyB3aGljaCBmaXhlcyBidWlsZCBwYXRoIGlzc3VlIGluIERXQVJGLgotU0VMRUNURURfT1BUSU1JWkFUSU9OID0gIiR7REVCVUdfRkxBR1N9IgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRF9fVUNMSUJDX18gIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9kZWZhdWx0LnN1cHAgJHtEfS8ke2xpYmRpcn0vdmFsZ3JpbmQvCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotCi0jIHZhbGdyaW5kIG5lZWRzIGRlYnVnIGluZm9ybWF0aW9uIGZvciBsZC5zbyBhdCBydW50aW1lIGluIG9yZGVyIHRvCi0jIHJlZGlyZWN0IGZ1bmN0aW9ucyBsaWtlIHN0cmxlbi4KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1RDTElCQ30tZGJnIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHNlZCBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKLQotIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgotIyBTa2lwIGZpbGUgZGVwZW5kZW5jeSBjaGVjawotU0tJUF9GSUxFREVQU18ke1BOfS1wdGVzdCA9ICcxJwotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgY2hlY2sKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBjaG1vZCAreCAke0J9L3Rlc3RzL3ZnX3JlZ3Rlc3QKLQotICAgICMgVGhlIHRlc3QgYXBwbGljYXRpb24gYmluYXJpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC4KLSAgICAjIEdyYWIgdGhlbSBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0gICAgIwotICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdHMgcmVxdWlyZSBzY3JpcHRzIGFuZCBkYXRhIGZpbGVzIHRoYXQgYXJlIG5vdAotICAgICMgY29waWVkIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGV5IG11c3QgYmUgY29waWVkIGZyb20gdGhlCi0gICAgIyBzb3VyY2UgZGlyZWN0b3J5LiAKLSAgICBzYXZlZF9kaXI9JFBXRAotICAgIGZvciBwYXJlbnRfZGlyIGluICR7U30gJHtCfSA7IGRvCi0gICAgICAgIGNkICRwYXJlbnRfZGlyCi0KLSAgICAgICAgIyBleGNsdWRlIHNoZWxsIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKLSAgICAgICAgcm0gLXJmIG5vbmUvdGVzdHMvc2hlbGwqIDI+L2Rldi9udWxsCi0KLSAgICAgICAgc3ViZGlycz0idGVzdHMgY2FjaGVncmluZC90ZXN0cyBjYWxsZ3JpbmQvdGVzdHMgZHJkL3Rlc3RzIGhlbGdyaW5kL3Rlc3RzIG1hc3NpZi90ZXN0cyBtZW1jaGVjay90ZXN0cyBub25lL3Rlc3RzIgotCi0gICAgICAgICMgR2V0IHRoZSB2ZyB0ZXN0IHNjcmlwdHMsIGZpbHRlcnMsIGFuZCBleHBlY3RlZCBmaWxlcwotICAgICAgICBmb3IgZGlyIGluICRzdWJkaXJzIDsgZG8KLSAgICAgICAgICAgIGZpbmQgJGRpciB8IGNwaW8gLXB2ZHUgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgZG9uZQotICAgICAgICBjZCAkc2F2ZWRfZGlyCi0gICAgZG9uZQotCi0gICAgIyBjbGVhbiBvdXQgYnVpbGQgYXJ0aWZhY3RzIGJlZm9yZSBidWlsZGluZyB0aGUgcnBtCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfSBcCi0gICAgICAgICBcKCAtbmFtZSAiTWFrZWZpbGUqIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLm8iIFwKLSAgICAgICAgLW8gLW5hbWUgIiouYyIgXAotICAgICAgICAtbyAtbmFtZSAiKi5TIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLmgiIFwpIFwKLSAgICAgICAgLWV4ZWMgcm0ge30gXDsKLQotICAgICMgbmVlZGVkIGJ5IG1hc3NpZiB0ZXN0cwotICAgIGNwICR7Qn0vbWFzc2lmL21zX3ByaW50ICR7RH0ke1BURVNUX1BBVEh9L21hc3NpZi9tc19wcmludAotCi0gICAgIyBoYW5kbGUgbXVsdGlsaWIKLSAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjViNDEyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiCkBAIC0wLDAgKzEsMTUzIEBACitTVU1NQVJZID0gIlZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlciBhbmQgaW5zdHJ1bWVudGF0aW9uIGZyYW1ld29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly92YWxncmluZC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vdmFsZ3JpbmQub3JnL3N1cHBvcnQvYnVnX3JlcG9ydHMuaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3B1Yl90b29sX2Jhc2ljcy5oO2JlZ2lubGluZT02O2VuZGxpbmU9Mjk7bWQ1PWQ0ZGUwNDA3MjM5MzgxNDYzY2YwMWRkMjc2ZDdjMjJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdmFsZ3JpbmQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTU2O21kNT1hZDNiMzE3ZjMyODZiNmI3MDQ1NzVkOWVmZTZjYTVkZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkRPQ1M7bWQ1PTI0ZWE0YzcwOTIyMzM4NDliNDM5NDY5OTMzM2I1YzU2IgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgorREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcke1gxMURFUEVORFN9JywgJycsIGQpfSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnYm9vc3QnLCAnJywgZCl9IFwKKyAgICAgICAgIgorCitTUkNfVVJJID0gImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi92YWxncmluZC92YWxncmluZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeGVkLXBlcmwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9BZGRlZC1zdXBwb3J0LWZvci1QUEMtaW5zdHJ1Y3Rpb25zLW1mYXRidS1tZmF0YmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcmVtb3ZlLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LU1vZGlmeS12Z190ZXN0LXdyYXBwZXItdG8tc3VwcG9ydC1QVEVTVC1mb3JtYXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3RzLXRoYXQtZmFpbC10by1idWlsZC1vbi1zb21lLVBQQzMyLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtYXBwcm9wcmlhdGUtbWFyY2gtbWNwdS1tZnB1LWZvci1BUk0tdGVzdC1hcHBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLW5lb24tZm9yLXRhcmdldHMtd2hpY2gtZG9uLXQtc3VwcG9ydC1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92YWxncmluZC1tYWtlLWxkLVhYWC5zby1zdHJsZW4taW50ZXJjZXB0LW9wdGlvbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0cl90ZXN0ZXIuYy1MaW1pdC1yYXdtZW1jaHItdGVzdC10by1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpZ3F1ZXVlLVJlbmFtZS1fc2lmaWVsZHMtdG8tX19zaV9maWVsZHMtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1jaGVjay1hcm02NC1EZWZpbmUtX19USFJPVy1pZi1ub3QtYWxyZWFkeS1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWVtY2hlY2steDg2LURlZmluZS1fX1RIUk9XLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rLWd6LXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BwYy1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjgxN2RkMDhmMWU4YTY2MzM2YjlmZjIwNjQwMGE1MzY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjY4MGVmMDNmMDBjZDVlOTcwYmJkY2Q0ZTU3ZmIxZjZkZjdkMmUyYzA3MTYzNWVmMmJlNzQ3OTAxOTBjM2IiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2YWxncmluZC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NHxhcm18YWFyY2g2NHxtaXBzfHBvd2VycGN8cG93ZXJwYzY0KS4qLWxpbnV4JworCisjIHZhbGdyaW5kIHN1cHBvcnRzIGFybXY3IGFuZCBhYm92ZQorQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12NiA9ICdudWxsJworCisjIFgzMiBpc24ndCBzdXBwb3J0ZWQgYnkgdmFsZ3JpbmQgYXQgdGhpcyB0aW1lCitDT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfbGludXgtbXVzbHgzMiA9ICdudWxsJworCisjIERpc2FibGUgZm9yIHNvbWUgTUlQUyB2YXJpYW50cworQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2hyNiA9ICdudWxsJworCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGxzIC0td2l0aG91dC1tcGljYyIKK0VYVFJBX09FQ09ORiArPSAiJHtAWyctLWVuYWJsZS1vbmx5MzJiaXQnLCctLWVuYWJsZS1vbmx5NjRiaXQnXVtkLmdldFZhcignU0lURUlORk9fQklUUycpICE9ICczMiddfSIKKworIyB2YWxncmluZCBjaGVja3MgaG9zdF9jcHUgImFybXY3KikiLCBzbyB3ZSBuZWVkIHRvIG92ZXItcmlkZSB0aGUgYXV0b3Rvb2xzLmJiY2xhc3MgZGVmYXVsdCAtLWhvc3Qgb3B0aW9uCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgLS1ob3N0PWFybXY3JHtIT1NUX1ZFTkRPUn0tJHtIT1NUX09TfSIKK1RBUkdFVF9DQ19BUkNIX3JlbW92ZV9hcm0gPSAiJHtAZ2V0X21jcHUoZCl9IgorCitFWFRSQV9PRU1BS0UgPSAiLXciCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKKworIyB2YWxncmluZCBsaWtlcyB0byBjb250cm9sIGl0cyBvd24gb3B0aW1pc2F0aW9uIGZsYWdzLiBJdCBnZW5lcmFsbHkgZGVmYXVsdHMKKyMgdG8gLU8yIGJ1dCB1c2VzIC1PMCBmb3Igc29tZSBzcGVjaWZpYyB0ZXN0IGFwcHMgZXRjLiBQYXNzaW5nIG91ciBvd24gZmxhZ3MKKyMgKHZpYSBDRkxBR1MpIG1lYW5zIHdlIGludGVyZmVyZSB3aXRoIHRoYXQuIE9ubHkgcGFzcyBERUJVR19GTEFHUyB0byBpdAorIyB3aGljaCBmaXhlcyBidWlsZCBwYXRoIGlzc3VlIGluIERXQVJGLgorU0VMRUNURURfT1BUSU1JWkFUSU9OID0gIiR7REVCVUdfRkxBR1N9IgorCitkZWYgZ2V0X21jcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgcmV0dXJuICIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBybSAtcmYgJHtTfS9jb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9kZWZhdWx0LnN1cHAgJHtEfS8ke2xpYmRpcn0vdmFsZ3JpbmQvCit9CisKK1RVTkUgPSAiJHtAc3RyaXBfbWNwdShkKX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorCisjIHZhbGdyaW5kIG5lZWRzIGRlYnVnIGluZm9ybWF0aW9uIGZvciBsZC5zbyBhdCBydW50aW1lIGluIG9yZGVyIHRvCisjIHJlZGlyZWN0IGZ1bmN0aW9ucyBsaWtlIHN0cmxlbi4KK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1RDTElCQ30tZGJnIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHNlZCBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKKworIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgorIyBTa2lwIGZpbGUgZGVwZW5kZW5jeSBjaGVjaworU0tJUF9GSUxFREVQU18ke1BOfS1wdGVzdCA9ICcxJworCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgY2hlY2sKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBjaG1vZCAreCAke0J9L3Rlc3RzL3ZnX3JlZ3Rlc3QKKworICAgICMgVGhlIHRlc3QgYXBwbGljYXRpb24gYmluYXJpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC4KKyAgICAjIEdyYWIgdGhlbSBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgIworICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdHMgcmVxdWlyZSBzY3JpcHRzIGFuZCBkYXRhIGZpbGVzIHRoYXQgYXJlIG5vdAorICAgICMgY29waWVkIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGV5IG11c3QgYmUgY29waWVkIGZyb20gdGhlCisgICAgIyBzb3VyY2UgZGlyZWN0b3J5LiAKKyAgICBzYXZlZF9kaXI9JFBXRAorICAgIGZvciBwYXJlbnRfZGlyIGluICR7U30gJHtCfSA7IGRvCisgICAgICAgIGNkICRwYXJlbnRfZGlyCisKKyAgICAgICAgIyBleGNsdWRlIHNoZWxsIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKKyAgICAgICAgcm0gLXJmIG5vbmUvdGVzdHMvc2hlbGwqIDI+L2Rldi9udWxsCisKKyAgICAgICAgc3ViZGlycz0idGVzdHMgY2FjaGVncmluZC90ZXN0cyBjYWxsZ3JpbmQvdGVzdHMgZHJkL3Rlc3RzIGhlbGdyaW5kL3Rlc3RzIG1hc3NpZi90ZXN0cyBtZW1jaGVjay90ZXN0cyBub25lL3Rlc3RzIgorCisgICAgICAgICMgR2V0IHRoZSB2ZyB0ZXN0IHNjcmlwdHMsIGZpbHRlcnMsIGFuZCBleHBlY3RlZCBmaWxlcworICAgICAgICBmb3IgZGlyIGluICRzdWJkaXJzIDsgZG8KKyAgICAgICAgICAgIGZpbmQgJGRpciB8IGNwaW8gLXB2ZHUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgZG9uZQorICAgICAgICBjZCAkc2F2ZWRfZGlyCisgICAgZG9uZQorCisgICAgIyBjbGVhbiBvdXQgYnVpbGQgYXJ0aWZhY3RzIGJlZm9yZSBidWlsZGluZyB0aGUgcnBtCisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfSBcCisgICAgICAgICBcKCAtbmFtZSAiTWFrZWZpbGUqIiBcCisgICAgICAgIC1vIC1uYW1lICIqLm8iIFwKKyAgICAgICAgLW8gLW5hbWUgIiouYyIgXAorICAgICAgICAtbyAtbmFtZSAiKi5TIiBcCisgICAgICAgIC1vIC1uYW1lICIqLmgiIFwpIFwKKyAgICAgICAgLWV4ZWMgcm0ge30gXDsKKworICAgICMgbmVlZGVkIGJ5IG1hc3NpZiB0ZXN0cworICAgIGNwICR7Qn0vbWFzc2lmL21zX3ByaW50ICR7RH0ke1BURVNUX1BBVEh9L21hc3NpZi9tc19wcmludAorCisgICAgIyBoYW5kbGUgbXVsdGlsaWIKKyAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE1MDUxNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE1MDUxNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMyNmViZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNTA1MTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCi1PUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKLVBvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAotQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAotc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCi1BQ1BJIHRhYmxlcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi0KLUxJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nZW5lcmF0ZS91bml4L3JlYWRtZS50eHQ7bWQ1PTIwNDQwN2UxOTdjMWEwMTE1NGE0OGY2YzYyODBjM2FhIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1ERVBFTkRTID0gImJpc29uIGZsZXgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vbm8td2Vycm9yLnBhdGNoIFwKLSAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoIFwKLSAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmJjNGE3Y2NjODJkZTlkZjlmYTk2NGY3ODRlY2IyOWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjEyMDRlYzU2ZDcxYmM5YmZhMmVlMmFkZTRjNjZmN2U4NTQxNzcyYWM3MmVmOGNjYzIwYjNmMzM5Y2M5NjM3NCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgotCi1TID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgyLSR7UFZ9IgotCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyAnT1BUX0NGTEFHUz0tV2FsbCciCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2lhc2wgJHtEfSR7YmluZGlyfS9pYXNsCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGliaW4gJHtEfSR7YmluZGlyfS9hY3BpYmluCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlleGVjICR7RH0ke2JpbmRpcn0vYWNwaWV4ZWMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWhlbHAgJHtEfSR7YmluZGlyfS9hY3BpaGVscAotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpbmFtZXMgJHtEfSR7YmluZGlyfS9hY3BpbmFtZXMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXNyYyAke0R9JHtiaW5kaXJ9L2FjcGlzcmMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXh0cmFjdCAke0R9JHtiaW5kaXJ9L2FjcGl4dHJhY3QKLX0KLQotIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKLVBST1ZJREVTID0gImlhc2wiCi1SUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCi1SUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKLQotTkFUSVZFX0lOU1RBTExfV09SS1MgPSAiMSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ODUwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJBQ1BJQ0EgdG9vbHMgZm9yIHRoZSBkZXZlbG9wbWVudCBhbmQgZGVidWcgb2YgQUNQSSB0YWJsZXMiCitERVNDUklQVElPTiA9ICJUaGUgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlIChBQ1BJQ0EpIHByb2plY3QgcHJvdmlkZXMgYW4gXAorT1MtaW5kZXBlbmRlbnQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBcCitQb3dlciBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoQUNQSSkuIEFDUElDQSBjb2RlIGNvbnRhaW5zIHRob3NlIHBvcnRpb25zIG9mIFwKK0FDUEkgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBob3N0IE9TIGFzIGEga2VybmVsLXJlc2lkZW50IFwKK3N1YnN5c3RlbSwgYW5kIGEgc21hbGwgc2V0IG9mIHRvb2xzIHRvIGFzc2lzdCBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgXAorQUNQSSB0YWJsZXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFjcGljYS5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorCitMSUNFTlNFID0gIkJTRCB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ2VuZXJhdGUvdW5peC9yZWFkbWUudHh0O21kNT0yMDQ0MDdlMTk3YzFhMDExNTRhNDhmNmM2MjgwYzNhYSIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworREVQRU5EUyA9ICJiaXNvbiBmbGV4IgorCitTUkNfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovL25vLXdlcnJvci5wYXRjaCBcCisgICAgZmlsZTovL3JlbmFtZS15eV9zY2FuX3N0cmluZy1tYW51YWxseS5wYXRjaCBcCisgICAgZmlsZTovL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaDtzdHJpcGxldmVsPTIgXAorICAgIGZpbGU6Ly8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIFwKKyAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDhlZjQzMTRmYjRmZmRkMGM5NmYxNGRjZjIwNTQ0ZTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjJkODFlODQxMDdhYzlhMDJiZTg2ZWE0M2NiZWE3YWZhOGZkNGI0MTUwMjcwYmM4OGMyZDRjOWZlYTBiOGFhZCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgorCitTID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgyLSR7UFZ9IgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWNwaXh0cmFjdCIKKworRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgJ09QVF9DRkxBR1M9LVdhbGwnIgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9pYXNsICR7RH0ke2JpbmRpcn0vaWFzbAorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpYmluICR7RH0ke2JpbmRpcn0vYWNwaWJpbgorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpZXhlYyAke0R9JHtiaW5kaXJ9L2FjcGlleGVjCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGloZWxwICR7RH0ke2JpbmRpcn0vYWNwaWhlbHAKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaW5hbWVzICR7RH0ke2JpbmRpcn0vYWNwaW5hbWVzCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlzcmMgJHtEfSR7YmluZGlyfS9hY3Bpc3JjCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGl4dHJhY3QgJHtEfSR7YmluZGlyfS9hY3BpeHRyYWN0Cit9CisKKyMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0CitQUk9WSURFUyA9ICJpYXNsIgorUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgorUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgorUkNPTkZMSUdIVFNfJHtQTn0gKz0gImlhc2wiCisKK05BVElWRV9JTlNUQUxMX1dPUktTID0gIjEiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHMvYWFwaXRzLWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzVkNmIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzYgKzAsMCBAQAotRnJvbTogQWwgU3RvbmUgPGFoczNAYWhzMy5uZXQ+Ci1EYXRlOiBNb24sIDcgQXByIDIwMTQgMTk6MDk6MzcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeHVwIGFhcGl0cyBidWlsZAotCi1Gcm9tIGh0dHA6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvYWwuc3RvbmUvYWNwaWNhLXRvb2xzLmdpdAotVXBzdHJlYW0tc3RhdHVzOiBVbmtub3duCi0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0ZXhlYy5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0ZXhlYy5jCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdGV4ZWMuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0ZXhlYy5jCTIwMTMtMDctMjUgMTM6NDQ6MjMuMDIzODk0NDQxIC0wNjAwCi1AQCAtNjM5LDYgKzYzOSw3IEBACi0gfQotIAotIAotKyNpZiBBQ1BJX01BQ0hJTkVfV0lEVEggPT0gMzIKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqCi0gICogRlVOQ1RJT046ICAgIEF0QnVpbGRMb2NhbFJTRFQKLUBAIC03NTcsOCArNzU4LDkgQEAKLSAgICAgICAgIExvY2FsUlNEVC0+SGVhZGVyLkNoZWNrc3VtID0gKFVJTlQ4KX5Mb2NhbFJTRFQtPkhlYWRlci5DaGVja3N1bTsKLSAgICAgfQotIH0KLSsjZW5kaWYKLSAKLSAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqCi0gICogRlVOQ1RJT046ICAgIEF0QnVpbGRMb2NhbFhTRFQKLUBAIC0xNDI0LDcgKzE0MjYsNyBAQAotICAgICAgICAgQUNQSV9XQVJOSU5HICgoQUVfSU5GTywKLSAgICAgICAgICAgICAiUmVxdWVzdCBvbiBbJTQuNHNdIGlzIGJleW9uZCByZWdpb24gbGltaXQgUmVxLSVYKyVYLCBCYXNlPSVYLCBMZW4tJVhcbiIsCi0gICAgICAgICAgICAgKFJlZ2lvbk9iamVjdC0+UmVnaW9uLk5vZGUpLT5OYW1lLkFzY2lpLCAoVUlOVDMyKSBBZGRyZXNzLAotLSAgICAgICAgICAgIEJ5dGVXaWR0aCwgKFVJTlQzMikgQnVmZmVyQWRkcmVzcywgTGVuZ3RoKSk7Ci0rICAgICAgICAgICAgQnl0ZVdpZHRoLCAoVUlOVDMyKSBCdWZmZXJBZGRyZXNzLCAoVUlOVDMyKSBMZW5ndGgpKTsKLSAKLSAgICAgICAgIHJldHVybiAoQUVfQU1MX1JFR0lPTl9MSU1JVCk7Ci0gICAgIH0KLUBAIC0xNzkyLDcgKzE3OTYsOSBAQAotICAgICAgICAgICAgIFBhdGgsIE9iai5JbnRlZ2VyLlZhbHVlLCBWYWx1ZSk7Ci0gI2Vsc2UKLSAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogVmFsdWUgb2YgJXMgaXMgMHglbGx4IGluc3RlYWQgb2YgZXhwZWN0ZWQgMHglbGx4XG4iLAotLSAgICAgICAgICAgIFBhdGgsIE9iai5JbnRlZ2VyLlZhbHVlLCBWYWx1ZSk7Ci0rICAgICAgICAgICAgUGF0aCwKLSsJICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBPYmouSW50ZWdlci5WYWx1ZSwKLSsJICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBWYWx1ZSk7Ci0gI2VuZGlmCi0gICAgICAgICBTdGF0dXMgPSBBRV9FUlJPUjsKLSAgICAgfQotQEAgLTE4NzEsNyArMTg3Nyw3IEBACi0gICAgIHsKLSAgICAgICAgIFRlc3RFcnJvcnMrKzsKLSAgICAgICAgIHByaW50ZiAoIlRlc3QgRXJyb3I6IGNhbm5vdCBhbGxvY2F0ZSBidWZmZXIgb2YgJWQgYnl0ZXNcbiIsCi0tICAgICAgICAgICAgUmVzdWx0cy5MZW5ndGgpOwotKyAgICAgICAgICAgICAgICAoaW50KSBSZXN1bHRzLkxlbmd0aCk7Ci0gICAgICAgICByZXR1cm4gKEFFX05PX01FTU9SWSk7Ci0gICAgIH0KLSAgICAgUmVzdWx0cy5Qb2ludGVyID0gT2JqZWN0OwotQEAgLTE5NTIsNyArMTk1Niw4IEBACi0gICAgIHsKLSAgICAgICAgIHByaW50ZiAoIkF0Q2hlY2tCdWZmZXI6IHVuZXhwZWN0ZWQgbGVuZ3RoICVkIG9mIEJ1ZmZlciB2cyIKLSAgICAgICAgICAgICAiIGNhbGN1bGF0ZWQgJWQgYnl0ZXNcbiIsCi0tICAgICAgICAgICAgUmVzdWx0cy5MZW5ndGgsIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQoc2l6ZW9mIChBQ1BJX09CSkVDVCkgKyBMZW5ndGgpKTsKLSsgICAgICAgICAgICAoaW50KVJlc3VsdHMuTGVuZ3RoLAotKwkgICAgKGludCkoQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRChzaXplb2YgKEFDUElfT0JKRUNUKSArIExlbmd0aCkpKTsKLSAgICAgfQotIAotICAgICAvKiBJbml0aWFsaXplIHRoZSByZXR1cm4gYnVmZmVyIHN0cnVjdHVyZSAqLwotQEAgLTE5NjEsNyArMTk2OCw3IEBACi0gICAgIHsKLSAgICAgICAgIFRlc3RFcnJvcnMrKzsKLSAgICAgICAgIHByaW50ZiAoIlRlc3QgRXJyb3I6IGNhbm5vdCBhbGxvY2F0ZSBidWZmZXIgb2YgJWQgYnl0ZXNcbiIsCi0tICAgICAgICAgICAgUmVzdWx0cy5MZW5ndGgpOwotKyAgICAgICAgICAgIChpbnQpIFJlc3VsdHMuTGVuZ3RoKTsKLSAgICAgICAgIHJldHVybiAoQUVfTk9fTUVNT1JZKTsKLSAgICAgfQotICAgICBSZXN1bHRzLlBvaW50ZXIgPSBPYmplY3Q7Ci1kaWZmIC11ck4gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdGluaXQuYyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdGluaXQuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRpbml0LmMJMjAxMy0wMS0xNyAxMjo0ODoyOC4wMDAwMDAwMDAgLTA3MDAKLSsrKyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdGluaXQuYwkyMDEzLTA3LTI1IDEzOjIwOjE5LjcwNjcwNTk2MCAtMDYwMAotQEAgLTMwMjQsNyArMzAyNCw3IEBACi0gICAgICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldFN5c3RlbUluZm8oKSByZXR1cm5lZCIKLSAgICAgICAgICAgICAgICAgIiBMZW5ndGggJWQsIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgICAgICBPdXRCdWZmZXIuTGVuZ3RoLCBzaXplb2YgKEluZm8pKTsKLSsgICAgICAgICAgICAgICAgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgKGludCkgc2l6ZW9mIChJbmZvKSk7Ci0gICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICB9Ci0gCi1AQCAtMzA0Niw3ICszMDQ2LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoSW5mbykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEluZm8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAKLUBAIC0zMDY2LDcgKzMwNjYsNyBAQAotICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRTeXN0ZW1JbmZvKCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgICIgTGVuZ3RoICVkLCBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICAgICAgT3V0QnVmZmVyLkxlbmd0aCwgc2l6ZW9mIChJbmZvKSk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIChpbnQpIHNpemVvZiAoSW5mbykpOwotICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZiAoT3V0QnVmZmVyLlBvaW50ZXIgIT0gJkluZm8pCi1AQCAtMzE0OSw3ICszMTQ5LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoSW5mbykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEluZm8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKE91dEJ1ZmZlci5Qb2ludGVyICE9ICZJbmZvKQotQEAgLTMyMTQsNyArMzIxNCw3IEBACi0gICAgICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldFN5c3RlbUluZm8oKSByZXR1cm5lZCIKLSAgICAgICAgICAgICAgICAgIiBMZW5ndGggJWQsIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgICAgICBPdXRCdWZmZXIuTGVuZ3RoLCBzaXplb2YgKEFDUElfU1lTVEVNX0lORk8pKTsKLSsgICAgICAgICAgICAgICAgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgKGludCkgc2l6ZW9mIChBQ1BJX1NZU1RFTV9JTkZPKSk7Ci0gICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi1kaWZmIC11ck4gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdG1haW4uYyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdG1haW4uYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRtYWluLmMJMjAxMy0wMS0xNyAxMjo0ODoyOC4wMDAwMDAwMDAgLTA3MDAKLSsrKyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdG1haW4uYwkyMDEzLTA3LTI1IDEzOjE4OjIyLjA4MzMyMzk0OCAtMDYwMAotQEAgLTMxNSw3ICszMTUsNyBAQAotICAgICB7Ci0gICAgICAgICBwcmludGYgKCJBQ1BJQ0EgQVBJIFRTIGVycjogdGVzdCBudW0gJWxkIG9mIHRlc3QgY2FzZSAlbGQiCi0gICAgICAgICAgICAgIiBpcyBub3QgaW1wbGVtZW50ZWRcbiIsCi0tICAgICAgICAgICAgdGVzdF9udW0sIHRlc3RfY2FzZSk7Ci0rICAgICAgICAgICAgKGxvbmcgaW50KSB0ZXN0X251bSwgKGxvbmcgaW50KSB0ZXN0X2Nhc2UpOwotICAgICAgICAgcmV0dXJuIChBdFJldE5vdEltcGwpOwotICAgICB9Ci0gCi1AQCAtNDMwLDcgKzQzMiw3IEBACi0gICAgIGlmICh0ZXN0X2Nhc2UgPCAxIHx8IHRlc3RfY2FzZSA+IEFUX1RFU1RfQ0FTRV9OVU0pCi0gICAgIHsKLSAgICAgICAgIHByaW50ZiAoIkFDUElDQSBBUEkgVFMgZXJyOiB0ZXN0IGNhc2UgJWxkIGlzIG91dCBvZiByYW5nZSAxIC0gJWRcbiIsCi0tICAgICAgICAgICAgdGVzdF9jYXNlLCBBVF9URVNUX0NBU0VfTlVNKTsKLSsgICAgICAgICAgICAobG9uZyBpbnQpIHRlc3RfY2FzZSwgKGludCkgQVRfVEVTVF9DQVNFX05VTSk7Ci0gICAgICAgICByZXR1cm4gKEF0UmV0QmFkUGFyYW0pOwotICAgICB9Ci0gCi1AQCAtNDM4LDcgKzQ0MCw3IEBACi0gICAgIGlmICh0ZXN0X251bSA8IDAgfHwgdGVzdF9udW0gPiBBdFRlc3RDYXNlW3Rlc3RfY2FzZV0uVGVzdHNOdW0pCi0gICAgIHsKLSAgICAgICAgIHByaW50ZiAoIkFDUElDQSBBUEkgVFMgZXJyOiB0ZXN0IG51bSAlbGQgaXMgb3V0IG9mIHJhbmdlIDAgLSAlZFxuIiwKLS0gICAgICAgICAgICB0ZXN0X251bSwgQXRUZXN0Q2FzZVt0ZXN0X2Nhc2VdLlRlc3RzTnVtKTsKLSsgICAgICAgICAgICAobG9uZyBpbnQpIHRlc3RfbnVtLCBBdFRlc3RDYXNlW3Rlc3RfY2FzZV0uVGVzdHNOdW0pOwotICAgICAgICAgcmV0dXJuIChBdFJldEJhZFBhcmFtKTsKLSAgICAgfQotCi1kaWZmIC11ck4gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdG5hbWVzcGFjZS5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMJMjAxMy0wMS0xNyAxMjo0ODoyOC4wMDAwMDAwMDAgLTA3MDAKLSsrKyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdG5hbWVzcGFjZS5jCTIwMTMtMDctMjUgMTM6MjQ6MTUuMzY2NDY2NzA3IC0wNjAwCi1AQCAtMjUzNSw3ICsyNTM1LDggQEAKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFkZHJlc3Mgb2YgJXMgKDB4JWxsWCkgIT0gKDB4JWxsWClcbiIsCi0gICAgICAgICAgICAgICAgICAgICBQYXRoTmFtZXNbMiAqIGkgKyAxXSwKLS0gICAgICAgICAgICAgICAgICAgIEluZm8tPkFkZHJlc3MsIEV4cGVjdGVkSW5mb1tpXS5BZGRyZXNzKTsKLSsgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBJbmZvLT5BZGRyZXNzLAotKwkJICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBFeHBlY3RlZEluZm9baV0uQWRkcmVzcyk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBZGRyZXNzIG9mICVzICgweCVYKSAhPSAoMHglWClcbiIsCi1AQCAtMjkwOCw3ICsyOTA5LDggQEAKLSAgICAgICAgIFRlc3RFcnJvcnMrKzsKLSAgICAgICAgIHByaW50ZiAoIkF0R2V0TmV4dE9iamVjdFR5cGVDb21tb246IGRpZmZlcmVudCBudW1iZXJzIG9mIGVudGl0aWVzIgotICAgICAgICAgICAgICJpbiBUeXBlc05hbWVzICglZCkgYW5kIExldmVsVHlwZXMwMDAwICglZClcbiIsCi0tICAgICAgICAgICAgVHlwZXNDb3VudCwgc2l6ZW9mIChMZXZlbFR5cGVzMDAwMCkgLyBzaXplb2YgKEFDUElfT0JKRUNUX1RZUEUpKTsKLSsgICAgICAgICAgICBUeXBlc0NvdW50LAotKwkgICAgKGludCkgKHNpemVvZiAoTGV2ZWxUeXBlczAwMDApIC8gc2l6ZW9mIChBQ1BJX09CSkVDVF9UWVBFKSkpOwotICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgIH0KLSAKLUBAIC00MTkyLDcgKzQxOTQsOSBAQAotICAgICAgICAgICAgIFBhdGhuYW1lLCBPYmouSW50ZWdlci5WYWx1ZSwgVmFsdWUpOwotICNlbHNlCi0gICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IFZhbHVlIG9mICVzIGlzIDB4JWxseCBpbnN0ZWFkIG9mIGV4cGVjdGVkIDB4JWxseFxuIiwKLS0gICAgICAgICAgICBQYXRobmFtZSwgT2JqLkludGVnZXIuVmFsdWUsIFZhbHVlKTsKLSsgICAgICAgICAgICBQYXRobmFtZSwKLSsJICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBPYmouSW50ZWdlci5WYWx1ZSwKLSsJICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBWYWx1ZSk7Ci0gI2VuZGlmCi0gICAgICAgICBTdGF0dXMgPSBBRV9FUlJPUjsKLSAgICAgfQotQEAgLTUxOTksNyArNTIwMyw3IEBACi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaU9zQWxsb2NhdGUoJWQpIHJldHVybmVkIE5VTExcbiIsCi0tICAgICAgICAgICAgICAgICAgICBPdXROYW1lLkxlbmd0aCk7Ci0rICAgICAgICAgICAgICAgICAgICAoaW50KSBPdXROYW1lLkxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0b3N4ZmN0cmwuYyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdG9zeGZjdHJsLmMKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0b3N4ZmN0cmwuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0b3N4ZmN0cmwuYwkyMDEzLTA3LTI1IDEzOjMwOjAwLjM3NTQ5Mjc1MSAtMDYwMAotQEAgLTczNywxMyArNzM3LDE1IEBACi0gI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSA2NAotICNpZmRlZiAgICBfTVNDX1ZFUgotICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IHVuZXhwZWN0ZWQgV2lkdGggJWQgb2YgUmVnIDB4JUk2NHhcbiIsCi0rICAgICAgICAgICAgV2lkdGgsIEFkZHJlc3MpOwotICNlbHNlCi0gICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogdW5leHBlY3RlZCBXaWR0aCAlZCBvZiBSZWcgMHglbGx4XG4iLAotKyAgICAgICAgICAgIFdpZHRoLCAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgQWRkcmVzcyk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiB1bmV4cGVjdGVkIFdpZHRoICVkIG9mIFJlZyAweCV4XG4iLAotLSNlbmRpZgotICAgICAgICAgICAgIFdpZHRoLCBBZGRyZXNzKTsKLSsjZW5kaWYKLSAgICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgIH0KLSAKLUBAIC03NjQsMTUgKzc2NiwxOSBAQAotICNpZmRlZiAgICBfTVNDX1ZFUgotICAgICAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogaW50ZXJzZWN0aW9uIFJlZ3MgKDB4JUk2NHg6IDB4JXgpIgotICAgICAgICAgICAgICAgICAgICAgIiBhbmQgKDB4JUk2NHg6IDB4JXgpXG4iLAotKyAgICAgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBBZGRyZXNzLCBXaWR0aCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IGludGVyc2VjdGlvbiBSZWdzICgweCVsbHg6IDB4JXgpIgotICAgICAgICAgICAgICAgICAgICAgIiBhbmQgKDB4JWxseDogMHgleClcbiIsCi0rICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgUmVnLT5BZGRyZXNzLAotKwkJICAgIFJlZy0+V2lkdGgsCi0rCQkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIEFkZHJlc3MsIFdpZHRoKTsKLSAjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogaW50ZXJzZWN0aW9uIFJlZ3MgKDB4JXg6IDB4JXgpIgotICAgICAgICAgICAgICAgICAgICAgIiBhbmQgKDB4JXg6IDB4JXgpXG4iLAotLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBBZGRyZXNzLCBXaWR0aCk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotQEAgLTc4NiwxMyArNzkyLDE1IEBACi0gI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSA2NAotICNpZmRlZiAgICBfTVNDX1ZFUgotICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBubyBtZW1vcnkgZm9yIFJlZyAoMHglSTY0eDogMHgleClcbiIsCi0rICAgICAgICAgICAgICAgIFJlZy0+QWRkcmVzcywgUmVnLT5XaWR0aCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogbm8gbWVtb3J5IGZvciBSZWcgKDB4JWxseDogMHgleClcbiIsCi0rICAgICAgICAgICAgICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgpOwotICNlbmRpZgotICNlbHNlCi0gICAgICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IG5vIG1lbW9yeSBmb3IgUmVnICgweCV4OiAweCV4KVxuIiwKLS0jZW5kaWYKLSAgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwotICAgICAgICAgfQotICAgICAgICAgUmVnLT5UeXBlID0gVHlwZTsKLUBAIC05MzIsMTQgKzk0MCwxOSBAQAotICNpZiBBQ1BJX01BQ0hJTkVfV0lEVEggPT0gNjQKLSAjaWZkZWYgICAgX01TQ19WRVIKLSAgICAgICAgICAgICBwcmludGYoIiUuMnUgKCVzIEFkZHJlc3MgMHglSTY0eDogV2lkdGggJS4ydSkgci93IGNvdW50czogJXUvJXVcbiIsCi0rICAgICAgICAgICAgICAgIGksIChSZWctPlR5cGUgPT0gRU1VTF9SRUdfU1lTKT8gIlNZUyI6ICJJTyIsCi0rICAgICAgICAgICAgICAgIFJlZy0+QWRkcmVzcywgUmVnLT5XaWR0aCwgUmVnLT5SZWFkQ291bnQsIFJlZy0+V3JpdGVDb3VudCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIiUuMnUgKCVzIEFkZHJlc3MgMHglbGx4OiBXaWR0aCAlLjJ1KSByL3cgY291bnRzOiAldS8ldVxuIiwKLSsgICAgICAgICAgICAgICAgaSwgKFJlZy0+VHlwZSA9PSBFTVVMX1JFR19TWVMpPyAiU1lTIjogIklPIiwKLSsgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFJlZy0+QWRkcmVzcywKLSsJCVJlZy0+V2lkdGgsIFJlZy0+UmVhZENvdW50LCBSZWctPldyaXRlQ291bnQpOwotICNlbmRpZgotICNlbHNlCi0gICAgICAgICAgICAgcHJpbnRmKCIlLjJ1ICglcyBBZGRyZXNzIDB4JS40eDogV2lkdGggJS4ydSkgci93IGNvdW50czogJXUvJXVcbiIsCi0tI2VuZGlmCi0gICAgICAgICAgICAgICAgIGksIChSZWctPlR5cGUgPT0gRU1VTF9SRUdfU1lTKT8gIlNZUyI6ICJJTyIsCi0gICAgICAgICAgICAgICAgIFJlZy0+QWRkcmVzcywgUmVnLT5XaWR0aCwgUmVnLT5SZWFkQ291bnQsIFJlZy0+V3JpdGVDb3VudCk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgUmVnID0gUmVnLT5OZXh0OwotICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgIH0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0cmVzb3VyY2UuYyBhY3BpY2EtdW5peDItMjAxMzA2MjYtYWFwaXRzL3Rlc3RzL2FhcGl0cy9hdHJlc291cmNlLmMKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0cmVzb3VyY2UuYwkyMDEzLTAxLTE3IDEyOjQ4OjI5LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0cmVzb3VyY2UuYwkyMDEzLTA3LTI1IDEzOjI1OjQ5LjQyMzU2NTk0NyAtMDYwMAotQEAgLTE3NCw3ICsxNzQsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0Q3VycmVudFJlc291cmNlcyglcykgcmV0dXJuZWQgTGVuZ3RoICVkLCIKLSAgICAgICAgICAgICAiIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgIFBhdGhuYW1lLCBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSsgICAgICAgICAgICBQYXRobmFtZSwgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgUlQwMDAwX0RFVjBfQ1JTX0xFTik7Ci0gICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgfQotIAotQEAgLTQ5MCw3ICs0OTAsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0Q3VycmVudFJlc291cmNlcyglcykgcmV0dXJuZWQgTGVuZ3RoICVkLCIKLSAgICAgICAgICAgICAiIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgIFBhdGhuYW1lLCBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSsgICAgICAgICAgICBQYXRobmFtZSwgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgUlQwMDAwX0RFVjBfQ1JTX0xFTik7Ci0gICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgfQotIAotQEAgLTY4OSw3ICs2ODksNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQXBpIEVycm9yOiBSZXNvdXJjZS0+TGVuZ3RoICglZCkgIT0gJWRcbiIsCi0gICAgICAgICAgICAgQ3VycmVudFJlc291cmNlLT5MZW5ndGgsCi0tICAgICAgICAgICAgQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRCAoQUNQSV9SU19TSVpFIChBQ1BJX1JFU09VUkNFX0lSUSkpKTsKLSsgICAgICAgICAgICAoaW50KSAoQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRCAoQUNQSV9SU19TSVpFIChBQ1BJX1JFU09VUkNFX0lSUSkpKSk7Ci0gICAgIH0KLSAKLSAgICAgaWYgKEN1cnJlbnRSZXNvdXJjZS0+RGF0YS5JcnEuVHJpZ2dlcmluZyAhPSAwKSAvKiBMZXZlbC1UcmlnZ2VyZWQgKi8KLUBAIC05ODEsNyArOTgxLDcgQEAKLSAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldFBvc3NpYmxlUmVzb3VyY2VzKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotKyAgICAgICAgICAgIFBhdGhuYW1lLCAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0gCi1AQCAtMTkyMyw3ICsxOTIzLDcgQEAKLSAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldElycVJvdXRpbmdUYWJsZSglcykgcmV0dXJuZWQgTGVuZ3RoICVkLCIKLSAgICAgICAgICAgICAiIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgIFBhdGhuYW1lLCBPdXRCdWZmZXIuTGVuZ3RoLCAweEE0OCk7Ci0rICAgICAgICAgICAgUGF0aG5hbWUsIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIDB4QTQ4KTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL01ha2VmaWxlIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL01ha2VmaWxlCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9NYWtlZmlsZQkyMDEzLTAxLTE3IDEyOjQ4OjI5LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL01ha2VmaWxlCTIwMTMtMDctMjUgMTU6MTc6MDkuMzA5MjM2NDIyIC0wNjAwCi1AQCAtMTk0LDcgKzE5NCw3IEBACi0gQ0ZMQUdTKz0gLVdhbGwgLWcgLURfTElOVVggLUROREVCVUcgLURfQ09OU09MRSAtREFDUElfQVBJVFMgLURBQ1BJX0VYRUNfQVBQIC1EX01VTFRJX1RIUkVBREVEIC1Xc3RyaWN0LXByb3RvdHlwZXMgLUkuLi8uLi9zb3VyY2UvaW5jbHVkZQotCi0gCi0tYWNwaWV4ZWMgOiAkKHBhdHN1YnN0ICUuYywlLm8sICQoU1JDUykpCi0rJChQUk9HKSA6ICQocGF0c3Vic3QgJS5jLCUubywgJChTUkNTKSkKLSAJJChDQykgJChMREZMQUdTKSAkKHBhdHN1YnN0ICUuYywlLm8sICQoU1JDUykpIC1vICQoUFJPRykKLSAKLSBDTEVBTkZJTEVTPSAkKFBST0cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHMvYWFwaXRzLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzL2FhcGl0cy1tYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5ZTk5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHMvYWFwaXRzLW1ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbTogQWwgU3RvbmUgPGFoczNAYWhzMy5uZXQ+Ci1EYXRlOiBNb24sIDcgQXByIDIwMTQgMTk6MDk6MzcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeHVwIGFhcGl0cyBidWlsZAotCi1Gcm9tIGh0dHA6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvYWwuc3RvbmUvYWNwaWNhLXRvb2xzLmdpdAotVXBzdHJlYW0tc3RhdHVzOiBVbmtub3duCi0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxNDAzMjUvdGVzdHMvYWFwaXRzL01ha2VmaWxlIGFjcGljYS11bml4Mi0yMDE0MDMyNS90ZXN0cy9hYXBpdHMvTWFrZWZpbGUKLS0tLSBhY3BpY2EtdW5peDItMjAxNDAzMjUvdGVzdHMvYWFwaXRzL01ha2VmaWxlCTIwMTQtMDQtMDUgMTQ6MjM6MTQuNjgzNjM2Nzk0IC0wNjAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTQwMzI1LWFhcGl0cy90ZXN0cy9hYXBpdHMvTWFrZWZpbGUJMjAxNC0wNC0wNSAxNToxMDo1Ny44NzkxODQ1OTggLTA2MDAKLUBAIC0xNiw2ICsxNiw3IEBACi0gCWF0b3N4ZndyYXAuYyBcCi0gCW9zdW5peHhmLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tbW9uL2FoaWRzLmMgXAotKwkuLi8uLi9zb3VyY2UvY29tbW9uL2FodXVpZHMuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21tb24vY21mc2l6ZS5jIFwKLSAJLi4vLi4vc291cmNlL2NvbW1vbi9nZXRvcHQuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL2hhcmR3YXJlL2h3dGltZXIuYyBcCi1AQCAtMTc0LDYgKzE3NSw3IEBACi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGV4Y2VwLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXRmaWxlaW8uYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGdsb2JhbC5jIFwKLSsJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0aGV4LmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXRpZHMuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGluaXQuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGxvY2suYyBcCi1AQCAtMTg5LDYgKzE5MSw3IEBACi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHN0YXRlLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXRzdHJpbmcuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHRyYWNrLmMgXAotKwkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR1dWlkLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR4ZmFjZS5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0eGZlcnJvci5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0eGZpbml0LmMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzXzIwMTQwODI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzXzIwMTQwODI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWFjMTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0c18yMDE0MDgyOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGVzdCBzdWl0ZSB1c2VkIHRvIHZhbGlkYXRlIEFDUElDQSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCi0KLUxJQ0VOU0UgPSAiSW50ZWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXN0cy9hYXBpdHMvYXRleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTU7bWQ1PWU5MmJjZGZjZDAxZDExN2QxYmRhM2U4MTRiYjIwMzBhIgotCi1ERVBFTkRTID0gImJpc29uIGZsZXgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpdGVzdHMtdW5peC0ke1BWfS50YXIuZ3o7bmFtZT1hY3BpdGVzdHMgXAotICAgICAgICAgICBodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4Mi0ke1BWfS50YXIuZ3o7bmFtZT1hY3BpY2EgXAotICAgICAgICAgICBmaWxlOi8vYWFwaXRzLWxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FhcGl0cy1tYWtlZmlsZS5wYXRjaCBcCi0iCi1TUkNfVVJJW2FjcGl0ZXN0cy5tZDVzdW1dID0gImRiOWQ2ZmRhYThlM2ViMTAxZDcwMGVlNWJhNDkzOGVkIgotU1JDX1VSSVthY3BpdGVzdHMuc2hhMjU2c3VtXSA9ICJlNTc2Yzc0YmYxYmYxYzlmNzM0OGJmOTQxOWUwNWM4YWNmZWNlNzEwNWFiY2RjMDUyZTY2NjcwYzdhZjJjZjAwIgotU1JDX1VSSVthY3BpY2EubWQ1c3VtXSA9ICI2ZjA1ZjBkMTAxNjZhMWIxZmY2MTA3ZjNkMWNkZjFlNSIKLVNSQ19VUklbYWNwaWNhLnNoYTI1NnN1bV0gPSAiMDFkODg2NzY1NmM1YmE0MWRlYzMwN2M0MzgzY2U2NzYxOTZhZDQyODFhYzJjOWRlYzlmNWJlNWZhYzZkODg4ZSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgotCi1TID0gIiR7V09SS0RJUn0vYWNwaXRlc3RzLXVuaXgtJHtQVn0iCi0KLUVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdPUFRfQ0ZMQUdTPS1XYWxsJyIKLQotIyBUaGUgTWFrZWZpbGVzIGV4cGVjdCBhIHNwZWNpZmljIGxheW91dAotZG9fY29tcGlsZSgpIHsKLSAgICBjcCAtYWYgJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0vc291cmNlICR7U30KLSAgICBjZCB0ZXN0cy9hYXBpdHMKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbTA3NTUgdGVzdHMvYWFwaXRzL2Jpbi9hYXBpdHMgJHtEfSR7YmluZGlyfQotfQotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY3NDIwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBkMjIyNDFlZmMwNzA4Yzk3OTlmMTdhMjBlYWJiNTJhNDhkNmQ2ZWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMiBKYW4gMjAxOCAxMjozNTozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBMaW51eDogYWRkIHN1cHBvcnQgZm9yIFgzMiBBQkkgY29tcGlsYXRpb24KKworWDMyIGZvbGxvd3MgSUxQMzIgbW9kZWwuIENoZWNrIGZvciBJTFAzMiBhcyB3ZWxsIHdoZW4gY2hlY2tpbmcgZm9yCit4ODZfNjQgdG8gZW5zdXJlIHRoZSBkZWZpbmVzIGFyZSBjb3JyZWN0IGZvciBYMzIgQUJJLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2FjcGljYS9hY3BpY2EvcHVsbC8zNDhdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBzb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmggYi9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmgKK2luZGV4IDc1YjFkODIuLjZiOGZmNzMgMTAwNjQ0CistLS0gYS9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmgKKysrKyBiL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAorQEAgLTMxNSw3ICszMTUsNyBAQAorICNkZWZpbmUgQUNQSV9GTFVTSF9DUFVfQ0FDSEUoKQorICNkZWZpbmUgQUNQSV9DQVNUX1BUSFJFQURfVChQdGhyZWFkKSAoKEFDUElfVEhSRUFEX0lEKSAoUHRocmVhZCkpCisgCistI2lmIGRlZmluZWQoX19pYTY0X18pICAgIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHxcCisrI2lmIGRlZmluZWQoX19pYTY0X18pICAgIHx8IChkZWZpbmVkKF9feDg2XzY0X18pICYmICFkZWZpbmVkKF9fSUxQMzJfXykpIHx8XAorICAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHxcCisgICAgIGRlZmluZWQoX19zMzkweF9fKQorICNkZWZpbmUgQUNQSV9NQUNISU5FX1dJRFRIICAgICAgICAgIDY0CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaAppbmRleCA2OTQ0YmI3Li41NjEwZWQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSAzM2E1Nzk3OTczOGU1YWIxMzk1MGVjMWMwZTcyOThlNDFlZjUwOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyMyBGZWIgMjAxNyAxODoxMDo0NyArMDEwMAorRnJvbSA2OTE3MWMyMmYzODcyZWNiNGMxYWIyNzk4NWU5M2NhNDQwODQ1OTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IE1vbiwgNSBKdW4gMjAxNyAxMzoyNjozOCArMDkwMAogU3ViamVjdDogW1BBVENIXSBhc2xmaWxlcy5jOiBtYW5pcHVsYXRlIGZkcyBpbnN0ZWFkIG9mIEZJTEUKIAogQ29weWluZyB3aGF0IHN0ZG91dC9zdGRlcnIgcG9pbnQgdG8gaXMgbm90IHBvcnRhYmxlIGFuZCBmYWlscyB3aXRoCkBAIC0xMiw2MCArMTIsNjEgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIHNvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIHwgMjAgKysrKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIGIvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKLWluZGV4IDk0N2U0NjUuLjdhMzUyYjQgMTAwNjQ0Ci0tLS0gYS9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotKysrIGIvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKLUBAIC00NCw2ICs0NCwxMSBAQAorUmViYXNlIG9uIGFjcGljYSAyMDE3MDMwMworCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorLS0tCisgYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIHwgMTQgKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYyBiL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYworaW5kZXggODA5MDkwYy4uOTc4OThiMSAxMDA2NDQKKy0tLSBhL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYworKysrIGIvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCitAQCAtNDQsNiArNDQsMTAgQEAKICAjaW5jbHVkZSAiYXNsY29tcGlsZXIuaCIKICAjaW5jbHVkZSAiYWNhcHBzLmgiCi0gCisgI2luY2x1ZGUgImR0Y29tcGlsZXIuaCIKICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiArI2luY2x1ZGUgPGZjbnRsLmg+CiArI2luY2x1ZGUgPHVuaXN0ZC5oPgotKworIAogICNkZWZpbmUgX0NPTVBPTkVOVCAgICAgICAgICBBQ1BJX0NPTVBJTEVSCiAgICAgICAgICBBQ1BJX01PRFVMRV9OQU1FICAgICgiYXNsZmlsZXMiKQotIAotQEAgLTU2OSw2ICs1NzQsOCBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAorQEAgLTYwNyw2ICs2MTEsOCBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAogIAogICAgICBpZiAoR2JsX0RlYnVnRmxhZykKICAgICAgewotKyAgICAgICAgaW50IGZkOworKwlpbnQgZmQ7CiArCiAgICAgICAgICBGaWxlbmFtZSA9IEZsR2VuZXJhdGVGaWxlbmFtZSAoRmlsZW5hbWVQcmVmaXgsIEZJTEVfU1VGRklYX0RFQlVHKTsKICAgICAgICAgIGlmICghRmlsZW5hbWUpCiAgICAgICAgICB7Ci1AQCAtNTgyLDIwICs1ODksMTUgQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKLSAgICAgICAgIC8qIFRCRDogaGlkZSB0aGlzIGJlaGluZCBhIEZsUmVvcGVuRmlsZSBmdW5jdGlvbiAqLworQEAgLTYxOCwxMCArNjI0LDEwIEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCisgICAgICAgICAvKiBPcGVuIHRoZSBkZWJ1ZyBmaWxlIGFzIFNUREVSUiwgdGV4dCBtb2RlICovCiAgCiAgICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5GaWxlbmFtZSA9IEZpbGVuYW1lOwogLSAgICAgICAgR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uSGFuZGxlID0KIC0gICAgICAgICAgICBmcmVvcGVuIChGaWxlbmFtZSwgIncrdCIsIHN0ZGVycik7Ci0tCisgCiAtICAgICAgICBpZiAoIUdibF9GaWxlc1tBU0xfRklMRV9ERUJVR19PVVRQVVRdLkhhbmRsZSkKICsgICAgICAgIGZkID0gb3BlbihGaWxlbmFtZSwgT19DUkVBVHxPX1RSVU5DLCBTX0lSVVNSfFNfSVdVU1J8U19JUkdSUHxTX0lXR1JQfFNfSVJPVEh8U19JV09USCk7CiArICAgICAgICBpZiAoZmQgPCAwIHx8CiArICAgICAgICAgICAgZHVwMihmZCwgZmlsZW5vKHN0ZGVycikpKQogICAgICAgICAgewotLSAgICAgICAgICAgIC8qCi0tICAgICAgICAgICAgICogQSBwcm9ibGVtIHdpdGggZnJlb3BlbiBpcyB0aGF0IG9uIGVycm9yLAotLSAgICAgICAgICAgICAqIHdlIG5vIGxvbmdlciBoYXZlIHN0ZGVyci4KLS0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBHYmxfRGVidWdGbGFnID0gRkFMU0U7Ci0tICAgICAgICAgICAgbWVtY3B5IChzdGRlcnIsIHN0ZG91dCwgc2l6ZW9mIChGSUxFKSk7Ci0gICAgICAgICAgICAgRmxGaWxlRXJyb3IgKEFTTF9GSUxFX0RFQlVHX09VVFBVVCwgQVNMX01TR19ERUJVR19GSUxFTkFNRSk7Ci0gICAgICAgICAgICAgQXNsQWJvcnQgKCk7CisgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgKiBBIHByb2JsZW0gd2l0aCBmcmVvcGVuIGlzIHRoYXQgb24gZXJyb3IsIHdlIG5vIGxvbmdlcgorQEAgLTYzNSw2ICs2NDEsOCBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAorICAgICAgICAgICAgIGV4aXQgKDEpOwogICAgICAgICAgfQotKyAgICAgICAgR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uSGFuZGxlID0gc3RkZXJyOwogIAorKyAgICAgICAgR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uSGFuZGxlID0gc3RkZXJyOworKwogICAgICAgICAgQXNsQ29tcGlsZXJTaWdub24gKEFTTF9GSUxFX0RFQlVHX09VVFBVVCk7CiAgICAgICAgICBBc2xDb21waWxlckZpbGVIZWFkZXIgKEFTTF9GSUxFX0RFQlVHX09VVFBVVCk7CisgICAgIH0KIC0tIAotMi4xLjQKKzEuOS4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaAppbmRleCA1ZDI4ZjQ3Li5hNmU3YjU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAogRGVzY3JpcHRpb246IHJlbW92ZSAtV2Vycm9yIGZsYWcKIEZvcndhcmRlZDogbm90LW5lZWRlZAogQXV0aG9yOiBGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGdlbmVyYXRlL3VuaXgvaWFzbC9NYWtlZmlsZSB8ICAgMTIgKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FzY2lpZG9jL2FzY2lpZG9jXzguNi45LmJiCmluZGV4IDFjZDE0NTQuLjM4MTY0ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYgpAQCAtMTQsNyArMTQsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvYXNjaWlkb2MvZmlsZXMvIgogCi1pbmhlcml0IGRpc3R1dGlscyBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAogZXhwb3J0IERFU1RESVIgPSAiJHtEfSIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoCmluZGV4IDUzYWUyOGIuLjdmZGVjYzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvMDAwMS1yZW1vdmUtZ2xpYmMtYXNzdW1wdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDdmODExZDljNGViYzk0NDRlNjEzZTI1MWMzMWQ2YmY1MzdhMjRkYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNjozNTozMCAtMDcwMAorRnJvbSBmNDQ2Njg2OTE2ZTUwM2RmYjlmYjkyODI1MmQxYjcyYTA3NTczYjI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMDM6NDI6NTYgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGdsaWJjIGFzc3VtcHRpb24KIAogZ2xpYmMgdGltZS5oIGhlYWRlciBoYXMgYW4gdW5kb2N1bWVudGVkIF9faXNsZWFwIG1hY3JvCkBAIC05LDkgKzksMTEgQEAKIG9uIGFueSBvdGhlciBsaWJjLCBzdG9wIHVzaW5nIGl0IGFuZCBqdXN0IGRlZmluZSB0aGUgbWFjcm8gaW4KIGxvY2FsbHkgIGluc3RlYWQuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2xpc3RzLmRlYmlhbi5vcmcvZGViaWFuLWFjY2Vzc2liaWxpdHkvMjAxNy8wNy9tc2cwMDA0NC5odG1sIF0KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQogIHBhcnNldGltZS55IHwgMTEgKysrKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQpAQCAtNTMsNSArNTUsNSBAQAogIAkJCXsKICAJCQkgICAgeXllcnJvcigiRXJyb3IgaW4gZGF5IG9mIG1vbnRoIik7CiAtLSAKLTIuMS40CisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCmluZGV4IDkwNDg5OWYuLjliNTM3ZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJEZWxheWVkIGpvYiBleGVjdXRpb24gYW5kIGJhdGNoIHByb2Nlc3NpbmciCitIT01FUEFHRSA9ICJodHRwOi8vYmxvZy5jYWxoYXJpei5jb20vIgogREVTQ1JJUFRJT04gPSAiQXQgYWxsb3dzIGZvciBjb21tYW5kcyB0byBiZSBydW4gYXQgYSBwYXJ0aWN1bGFyIHRpbWUuICBCYXRjaCB3aWxsIGV4ZWN1dGUgY29tbWFuZHMgd2hlbiBcCiB0aGUgc3lzdGVtIGxvYWQgbGV2ZWxzIGRyb3AgdG8gYSBwYXJ0aWN1bGFyIGxldmVsLiIKIFNFQ1RJT04gPSAiYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwppbmRleCAzZTljNjYyLi5mNGUxZjdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC0yNSw5ICsyNSwxNCBAQAogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgogCitERVBFTkRTX2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1sb2NhbGUiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtZnItZnIgbG9jYWxlLWJhc2UtZGUtZGUiCisKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tcHRlc3QiCiBVU0VSQUREX1BBUkFNXyR7UE59LXB0ZXN0ID0gIi0tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIHRlc3QiCiAKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJoZWFkZXJzZGlyPSR7aW5jbHVkZWRpcn0vJHtQTn0iCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAlpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgogCQljYXQgJHtTfS9hY2xvY2FsLm00ID4gJHtTfS9hY2luY2x1ZGUubTQKQEAgLTQ2LDE2ICs1MSwzMiBAQAogCWZpCiB9CiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCSMgQ2xlYW4gaG9zdCBwYXRoIGluIGJhc2hidWcKKwkjIENsZWFuIGJ1aWxkaG9zdCByZWZlcmVuY2VzIGluIGJhc2hidWcKIAlzZWQgLWkgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZyIgXAotCQktZSAicywtSSR7V09SS0RJUn0vXFMqICwsZyIgJHtEfSR7YmluZGlyfS9iYXNoYnVnCisJCS1lICJzLC1JJHtXT1JLRElSfS9cUyogLCxnIiBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJJHtEfSR7YmluZGlyfS9iYXNoYnVnCisKKwkjIENsZWFuIGJ1aWxkaG9zdCByZWZlcmVuY2VzIGluIGJhc2gucGMKKwlzZWQgLWkgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZyIgXAorCSAgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvYmFzaC5wYworCisJIyBDbGVhbiBidWlsZGhvc3QgcmVmZXJlbmNlcyBpbiBNYWtlZmlsZS5pbmMKKwlzZWQgLWkgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZyIgXAorCQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCQkke0R9JHtsaWJkaXJ9L2Jhc2gvTWFrZWZpbGUuaW5jCiB9CiAKIGRvX2luc3RhbGxfcHRlc3QgKCkgewogCW1ha2UgSU5TVEFMTF9URVNUX0RJUj0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBpbnN0YWxsLXRlc3QKIAljcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CiAgICAgICAgIHNlZCAtaSAtZSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZyIgXAotCSAgICAtZSAicywke1N9LCxnIiAtZSAicywke0J9LCxnIiAtZSAicywke1NUQUdJTkdfRElSX05BVElWRX0sLGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgInMsJHtTfSwsZyIgLWUgInMsJHtCfSwsZyIgLWUgInMsJHtTVEFHSU5HX0RJUl9OQVRJVkV9LCxnIiBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogfQogCiBwa2dfcG9zdGluc3RfJHtQTn0gKCkgewpAQCAtNjksMyArOTAsOSBAQAogUEFDS0FHRVMgKz0gIiR7UE59LWJhc2hidWciCiBGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vYmFzaCAke2Jhc2VfYmluZGlyfS9iYXNoLmJhc2giCiBGSUxFU18ke1BOfS1iYXNoYnVnID0gIiR7YmluZGlyfS9iYXNoYnVnIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tbG9hZGFibGUiCitSREVQRU5EU18ke1BOfS1sb2FkYWJsZSArPSAiJHtQTn0iCitGSUxFU18ke1BOfS1sb2FkYWJsZSArPSAiJHtsaWJkaXJ9L2Jhc2gvKiIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2ggL2Jpbi9iYXNoJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL0NWRS0yMDE2LTk0MDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9DVkUtMjAxNi05NDAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGM5Mjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL0NWRS0yMDE2LTk0MDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIGZhNzQxNzcxZWQ0N2IzMDU0N2JlNjNiNWI1ZGJmYjUxOTc3YWNhMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGV0IFJhbWV5IDxjaGV0LnJhbWV5QGNhc2UuZWR1PgotRGF0ZTogRnJpLCAyMCBKYW4gMjAxNyAxMTo0NzozMSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBCYXNoLTQuNCBwYXRjaCA2Ci0KLUJ1Zy1SZWZlcmVuY2UtVVJMOgotaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE2LTExL21zZzAwMTE2Lmh0bWwKLQotUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgotaHR0cHM6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA2Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoKLU91dC1vZi1yYW5nZSBuZWdhdGl2ZSBvZmZzZXRzIHRvIHBvcGQgY2FuIGNhdXNlIHRoZSBzaGVsbCB0byBjcmFzaCBhdHRlbXB0aW5nCi10byBmcmVlIGFuIGludmFsaWQgbWVtb3J5IGJsb2NrLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTk0MDEKLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJ1aWx0aW5zL3B1c2hkLmRlZiB8IDcgKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2J1aWx0aW5zL3B1c2hkLmRlZiBiL2J1aWx0aW5zL3B1c2hkLmRlZgotaW5kZXggOWM2NTQ4Zi4uOGExM2JhZSAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL3B1c2hkLmRlZgotKysrIGIvYnVpbHRpbnMvcHVzaGQuZGVmCi1AQCAtMzU5LDcgKzM1OSw3IEBAIHBvcGRfYnVpbHRpbiAobGlzdCkKLSAJYnJlYWs7Ci0gICAgIH0KLSAKLS0gIGlmICh3aGljaCA+IGRpcmVjdG9yeV9saXN0X29mZnNldCB8fCAoZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0ID09IDAgJiYgd2hpY2ggPT0gMCkpCi0rICBpZiAod2hpY2ggPiBkaXJlY3RvcnlfbGlzdF9vZmZzZXQgfHwgKHdoaWNoIDwgLWRpcmVjdG9yeV9saXN0X29mZnNldCkgfHwgKGRpcmVjdG9yeV9saXN0X29mZnNldCA9PSAwICYmIHdoaWNoID09IDApKQotICAgICB7Ci0gICAgICAgcHVzaGRfZXJyb3IgKGRpcmVjdG9yeV9saXN0X29mZnNldCwgd2hpY2hfd29yZCA/IHdoaWNoX3dvcmQgOiAiIik7Ci0gICAgICAgcmV0dXJuIChFWEVDVVRJT05fRkFJTFVSRSk7Ci1AQCAtMzgxLDYgKzM4MSwxMSBAQCBwb3BkX2J1aWx0aW4gKGxpc3QpCi0gCSByZW1vdmUgdGhhdCBkaXJlY3RvcnkgZnJvbSB0aGUgbGlzdCBhbmQgc2hpZnQgdGhlIHJlbWFpbmRlcgotIAkgb2YgdGhlIGxpc3QgaW50byBwbGFjZS4gKi8KLSAgICAgICBpID0gKGRpcmVjdGlvbiA9PSAnKycpID8gZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0IC0gd2hpY2ggOiB3aGljaDsKLSsgICAgICBpZiAoaSA8IDAgfHwgaSA+IGRpcmVjdG9yeV9saXN0X29mZnNldCkKLSsJewotKwkgIHB1c2hkX2Vycm9yIChkaXJlY3RvcnlfbGlzdF9vZmZzZXQsIHdoaWNoX3dvcmQgPyB3aGljaF93b3JkIDogIiIpOwotKwkgIHJldHVybiAoRVhFQ1VUSU9OX0ZBSUxVUkUpOwotKwl9Ci0gICAgICAgZnJlZSAocHVzaGRfZGlyZWN0b3J5X2xpc3RbaV0pOwotICAgICAgIGRpcmVjdG9yeV9saXN0X29mZnNldC0tOwotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaAppbmRleCA3ZjA5OWFlLi45YWMyNDYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2gKQEAgLTEsMTUgKzEsNyBAQAotRnJvbSAyYzMwZGZmOGVhOGIxN2FkNWJhOTg4MWUzNWFkMWViYTljNTE1ZjEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkMWNkNGMzMWVhMGVkNzQwNmEzYWQ0YmRhYTIxMWY1ODEwNjNmNjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNiBOb3YgMjAxNSAyMjowOTowNyAtMDUwMAotU3ViamVjdDogW1BBVENIXSBmaXggcnVuLWNvcHJvYy9ydW4taGVyZWRvYy9ydW4tZXhlY3NjcmlwdC9ydW4tdGVzdC8gZmFpbGVkCi0KLUZBSUw6IHJ1bi1jb3Byb2MKLXVwZGF0ZSB0ZXN0IGNhc2U6dGVzdHMvY29wcm9jLnJpZ2h0LCB0ZXN0cy9jb3Byb2MudGVzdHMKLWdpdDovL2dpdC5zdi5nbnUub3JnL2Jhc2guZ2l0IGJhc2gtNC40LXRlc3RpbmcKLQotRkFJTDogcnVuLWhlcmVkb2MKLXVwZGF0ZSB0ZXN0IGNhc2U6IHRlc3RzL2hlcmVkb2MucmlnaHQgdGVzdHMvaGVyZWRvYzMuc3ViCi1naXQ6Ly9naXQuc3YuZ251Lm9yZy9iYXNoLmdpdCBiYXNoLTQuNC10ZXN0aW5nCitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDEwOjIxOjIxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBmaXggcnVuLWV4ZWNzY3JpcHQvcnVuLXRlc3QvIGZhaWxlZAogCiBGQUlMOiBydW4tZXhlY3NjcmlwdDoKIHRoZSB0ZXN0IHN1aXRlIHNob3VsZCBub3QgYmUgcnVuIGFzIHJvb3QKQEAgLTIxLDE0OSArMTMsMzMgQEAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gdGVzdHMvY29wcm9jLnJpZ2h0ICAgfCAgNSArLS0tLQotIHRlc3RzL2NvcHJvYy50ZXN0cyAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gdGVzdHMvaGVyZWRvYy5yaWdodCAgfCAgNSArKy0tLQotIHRlc3RzL2hlcmVkb2MzLnN1YiAgIHwgIDMgKystCi0gdGVzdHMvcnVuLWV4ZWNzY3JpcHQgfCAgMyArKy0KLSB0ZXN0cy9ydW4tdGVzdCAgICAgICB8ICAzICsrLQotIDYgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisgdGVzdHMvcnVuLWV4ZWNzY3JpcHQgfCAzICsrLQorIHRlc3RzL3J1bi10ZXN0ICAgICAgIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2NvcHJvYy5yaWdodCBiL3Rlc3RzL2NvcHJvYy5yaWdodAotaW5kZXggNmQ5ZGVhYS4uOTRiMDAxYyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2NvcHJvYy5yaWdodAotKysrIGIvdGVzdHMvY29wcm9jLnJpZ2h0Ci1AQCAtMSwxMSArMSw4IEBACi0tODQ1NzUKLSA2MyA2MAotIGEgYiBjCi0tODQ1NzcKLSA2MyA2MAotIGZsb3AKLS0uL2NvcHJvYy50ZXN0czogbGluZSAyMjogODQ1NzcgVGVybWluYXRlZCAgICAgICAgICAgICAgY29wcm9jIFJFRkxFQ1QgeyBjYXQgLTsgfQotLTg0NTc5Ci0rY29wcm9jLnRlc3RzOiBSRUZMRUNUOiBzdGF0dXMgMTQzCi0gNjMgNjAKLSBGT08KLSA2MyA2MAotZGlmZiAtLWdpdCBhL3Rlc3RzL2NvcHJvYy50ZXN0cyBiL3Rlc3RzL2NvcHJvYy50ZXN0cwotaW5kZXggOGJlMzU2My4uZDM0N2ViNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2NvcHJvYy50ZXN0cwotKysrIGIvdGVzdHMvY29wcm9jLnRlc3RzCi1AQCAtMSw2ICsxLDEzIEBACi0rOiAke1RNUERJUjo9L3RtcH0KLStUTVBPVVQ9JHtUTVBESVJ9L2NvcHJvYy13YWl0LSRCQVNIUElECi0rCi0gY29wcm9jIHsgZWNobyBhIGIgYzsgc2xlZXAgMjsgfQotIAotLWVjaG8gJENPUFJPQ19QSUQKLStjYXNlICRDT1BST0NfUElEIGluCi0rWzAtOV0qKQk7OwotKyopCWVjaG8gQ09QUk9DX1BJRCBub3QgaW50ZWdlciA7OwotK2VzYWMKLSsKLSBlY2hvICR7Q09QUk9DW0BdfQotIAotIHJlYWQgTElORSA8JiR7Q09QUk9DWzBdfQotQEAgLTEwLDcgKzE3LDExIEBAIHdhaXQgJENPUFJPQ19QSUQKLSAKLSBjb3Byb2MgUkVGTEVDVCB7IGNhdCAtIDsgfQotIAotLWVjaG8gJFJFRkxFQ1RfUElECi0rY2FzZSAkUkVGTEVDVF9QSUQgaW4KLStbMC05XSopCTs7Ci0rKikJZWNobyBSRUZMRUNUX1BJRCBub3QgaW50ZWdlciA7OwotK2VzYWMKLSsKLSBlY2hvICR7UkVGTEVDVFtAXX0KLSAKLSBlY2hvIGZsb3AgPiYke1JFRkxFQ1RbMV19Ci1AQCAtMTgsMTIgKzI5LDIxIEBAIHJlYWQgTElORSA8JiR7UkVGTEVDVFswXX0KLSAKLSBlY2hvICRMSU5FCi0gCi0ta2lsbCAkUkVGTEVDVF9QSUQKLS13YWl0ICRSRUZMRUNUX1BJRAotK3sgc2xlZXAgMTsga2lsbCAkUkVGTEVDVF9QSUQ7IH0gJgotK3dhaXQgJFJFRkxFQ1RfUElEID4kVE1QT1VUIDI+JjEgfHwgZWNobyAiY29wcm9jLnRlc3RzOiBSRUZMRUNUOiBzdGF0dXMgJD8iCi0rZ3JlcCAnVGVybWluYXRlZC4qY29wcm9jLipSRUZMRUNUJyA8ICRUTVBPVVQgPi9kZXYvbnVsbCAyPiYxIHx8IHsKLSsJZWNobyAiY29wcm9jLnRlc3RzOiB3YWl0IGZvciBSRUZMRUNUIGZhaWxlZCIgPiYyCi0rfQotK3JtIC1mICRUTVBPVVQKLStleGVjIDI+JjEKLSAKLSBjb3Byb2MgeGNhc2UgLW4gLXUKLSAKLS1lY2hvICRDT1BST0NfUElECi0rY2FzZSAkQ09QUk9DX1BJRCBpbgotK1swLTldKikJOzsKLSsqKQllY2hvIENPUFJPQ19QSUQgbm90IGludGVnZXIgOzsKLStlc2FjCi0rCi0gZWNobyAke0NPUFJPQ1tAXX0KLSAKLSBlY2hvIGZvbyA+JiR7Q09QUk9DWzFdfQotZGlmZiAtLWdpdCBhL3Rlc3RzL2hlcmVkb2MucmlnaHQgYi90ZXN0cy9oZXJlZG9jLnJpZ2h0Ci1pbmRleCA2YWJhYTFmLi44ZGY5MWM1IDEwMDY0NAotLS0tIGEvdGVzdHMvaGVyZWRvYy5yaWdodAotKysrIGIvdGVzdHMvaGVyZWRvYy5yaWdodAotQEAgLTc2LDE1ICs3NiwxNCBAQCBFTkRFTkQKLSBlbmQgRU5ERU5ECi0gaGVsbG8KLSBlbmQgaGVsbG8KLS14IHN0YXIgeAotIGVuZCB4KngKLSBoZWxsb0VORAotIGVuZCBoZWxsb0VORAotIGhlbGxvCi0gXEVORAotIGVuZCBoZWxsbzxOTD5cRU5ECi0tLi9oZXJlZG9jMy5zdWI6IGxpbmUgNzQ6IHdhcm5pbmc6IGhlcmUtZG9jdW1lbnQgYXQgbGluZSA3MiBkZWxpbWl0ZWQgYnkgZW5kLW9mLWZpbGUgKHdhbnRlZCBgRU9GJykKLS0uL2hlcmVkb2MzLnN1YjogbGluZSA3NTogc3ludGF4IGVycm9yOiB1bmV4cGVjdGVkIGVuZCBvZiBmaWxlCi0rLi9oZXJlZG9jMy5zdWI6IGxpbmUgNzU6IHdhcm5pbmc6IGhlcmUtZG9jdW1lbnQgYXQgbGluZSA3MyBkZWxpbWl0ZWQgYnkgZW5kLW9mLWZpbGUgKHdhbnRlZCBgRU9GJykKLSsuL2hlcmVkb2MzLnN1YjogbGluZSA3Njogc3ludGF4IGVycm9yOiB1bmV4cGVjdGVkIGVuZCBvZiBmaWxlCi0gY29tc3ViIGhlcmUtc3RyaW5nCi0gLi9oZXJlZG9jLnRlc3RzOiBsaW5lIDEwNTogd2FybmluZzogaGVyZS1kb2N1bWVudCBhdCBsaW5lIDEwMyBkZWxpbWl0ZWQgYnkgZW5kLW9mLWZpbGUgKHdhbnRlZCBgRU9GJykKLSBoaQotZGlmZiAtLWdpdCBhL3Rlc3RzL2hlcmVkb2MzLnN1YiBiL3Rlc3RzL2hlcmVkb2MzLnN1YgotaW5kZXggNzNhMTExZS4uOWQzZDg0NiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2hlcmVkb2MzLnN1YgotKysrIGIvdGVzdHMvaGVyZWRvYzMuc3ViCi1AQCAtNDksOSArNDksMTAgQEAgaGVsbG8KLSAgICAgRU5EICAgIAotIGVjaG8gZW5kIGhlbGxvCi0gCi0tY2F0IDw8eCp4ICYgdG91Y2ggJ3gqeCcKLStjYXQgPDx4KnggPi9kZXYvbnVsbCAmIHRvdWNoICd4KngnCi0geCBzdGFyIHgKLSB4KngKLSt3YWl0ICQhCi0gZWNobyBlbmQgJ3gqeCcKLSBybSAneCp4JwotIAogZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bi1leGVjc2NyaXB0IGIvdGVzdHMvcnVuLWV4ZWNzY3JpcHQKLWluZGV4IGY5N2FiMjEuLjBkMDBhMWIgMTAwNjQ0CitpbmRleCBkZTc4NjQ0Li4zODM5N2MxIDEwMDY0NAogLS0tIGEvdGVzdHMvcnVuLWV4ZWNzY3JpcHQKICsrKyBiL3Rlc3RzL3J1bi1leGVjc2NyaXB0CiBAQCAtNSw1ICs1LDYgQEAgZWNobyAid2FybmluZzogXGAvdG1wL2Jhc2gtbm90dGhlcmUnIG5vdCBiZWluZyBmb3VuZCBvciBcYC8nIGJlaW5nIGEgZGlyZWN0b3J5IgogIGVjaG8gIndhcm5pbmc6IHByb2R1Y2UgZGlmZiBvdXRwdXQsIHBsZWFzZSBkbyBub3QgY29uc2lkZXIgdGhpcyBhIHRlc3QgZmFpbHVyZSIgPiYyCiAgZWNobyAid2FybmluZzogaWYgZGlmZiBvdXRwdXQgZGlmZmVyaW5nIG9ubHkgaW4gdGhlIGxvY2F0aW9uIG9mIHRoZSBiYXNoIiA+JjIKICBlY2hvICJ3YXJuaW5nOiBiaW5hcnkgYXBwZWFycywgcGxlYXNlIGRvIG5vdCBjb25zaWRlciB0aGlzIGEgdGVzdCBmYWlsdXJlIiA+JjIKLS0ke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+IC90bXAveHggMj4mMQotK3JtIC1mIC90bXAveHgKLStzdSAtYyAiJHtUSElTX1NIfSAuL2V4ZWNzY3JpcHQgPiAvdG1wL3h4IDI+JjEiIHRlc3QKLSBkaWZmIC90bXAveHggZXhlYy5yaWdodCAmJiBybSAtZiAvdG1wL3h4CistJHtUSElTX1NIfSAuL2V4ZWNzY3JpcHQgPiAke0JBU0hfVFNUT1VUfSAyPiYxCisrcm0gLWYgJHtCQVNIX1RTVE9VVH0KKytzdSAtYyAiJHtUSElTX1NIfSAuL2V4ZWNzY3JpcHQgPiAke0JBU0hfVFNUT1VUfSAyPiYxIiB0ZXN0CisgZGlmZiAke0JBU0hfVFNUT1VUfSBleGVjLnJpZ2h0ICYmIHJtIC1mICR7QkFTSF9UU1RPVVR9CiBkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLXRlc3QgYi90ZXN0cy9ydW4tdGVzdAotaW5kZXggYjI0ODJjMy4uMmU4ZjA0OSAxMDA2NDQKK2luZGV4IGQ2ODc5MWMuLmQ2MzE3ZDIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9ydW4tdGVzdAogKysrIGIvdGVzdHMvcnVuLXRlc3QKIEBAIC0xLDQgKzEsNSBAQAogIHVuc2V0IEdST1VQUyBVSUQgMj4vZGV2L251bGwKICAKLS0ke1RISVNfU0h9IC4vdGVzdC50ZXN0cyA+L3RtcC94eCAyPiYxCi0rcm0gLWYgL3RtcC94eAotK3N1IC1jICIke1RISVNfU0h9IC4vdGVzdC50ZXN0cyA+L3RtcC94eCAyPiYxIiB0ZXN0Ci0gZGlmZiAvdG1wL3h4IHRlc3QucmlnaHQgJiYgcm0gLWYgL3RtcC94eAorLSR7VEhJU19TSH0gLi90ZXN0LnRlc3RzID4ke0JBU0hfVFNUT1VUfSAyPiYxCisrcm0gLWYgJHtCQVNIX1RTVE9VVH0KKytzdSAtYyAiJHtUSElTX1NIfSAuL3Rlc3QudGVzdHMgPiAke0JBU0hfVFNUT1VUfSAyPiYxIiB0ZXN0CisgZGlmZiAke0JBU0hfVFNUT1VUfSB0ZXN0LnJpZ2h0ICYmIHJtIC1mICR7QkFTSF9UU1RPVVR9CiAtLSAKLTEuOS4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhMzQwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWludGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotRnJvbSBhMDBkMzE2MWZkN2I2YTY5OGJkZDJlZDVmMGFjNWZhYWM1ODBlZTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMyBBdWcgMjAxNiAyMzoxMzowMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBmaXggcnVuLWludGwgZmFpbGVkCi0KLTEuIEZpbHRlciBleHRyYSB3aGl0ZSBzcGFjZSBvZiBpbnRsLnJpZ2h0Ci0KLSAgIER1ZSB0byB0aGUgZXh0cmEgd2hpdGUgc3BhY2Ugb2YgaW50bC5yaWdodCwgd2hlbiB0aGUgcmVzdWx0IG9mCi0gICBzdWItdGVzdCB1bmljb2RlMi5zdWIgb2YgaW50bC50ZXN0cyBjb21wYXJlZCB0byBpdCwgdGhlIHRlc3QKLSAgIGZhaWxlZC4KLQotICAgU28gd2UgbmVlZCB0byBmaWx0ZXIgdGhlIGV4dHJhIHdoaXRlIHNwYWNlIG9mIGludGwucmlnaHQuCi0KLSAgIEltcG9ydCB0aGlzIHBhdGNoIGZvciBpbnRsLnJpZ2h0IGZyb20gYmFzaCBkZXZlbCBicmFuY2g6Ci0KLQlodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9iYXNoLmdpdC9sb2cvP2g9ZGV2ZWwKLQotICAgY29tbWl0IGlzOgotCi0JODVlYzA3NzhmOWQ3NzhlMTgyMGZiOGMwZTNlOTk2ZjJkMTEwM2I0NQotCi0yLiBDaGFuZ2UgaW50bC5yaWdodCBjb3JyZXNwb25kIHRvIHRoZSB1bmljb2RlMy5zdWIncyBvdXRwdXQKLQotICAgSW4gc3ViLXRlc3QgdW5pY29kZTMuc3ViIG9mIGludGwudGVzdHMsIHRoZSBwYXlsb2FkIHZhbHVlIGlzOgotCi0JcGF5bG9hZD0kJ1wwNjVcMjQ3XDEwMFwwNjNcMjMxXDA1M1wzMDZcMTIzXDA3MFwyMzdcMjQyXDM1MlwyNjMnCi0KLSAgIEl0IHVzZWQgcXVvdGVkIHN0cmluZyBleHBhbnNpb24oZXNjYXBlZCBvY3RhbCkgdG8gYXNzaWduIEFTQ0lJCi0gICBjaGFyYWN0ZXJzIHRvIHZhcmlhYmxlcy4gU28gd2hlbiB0aGUgdGVzdCBydW4gdGhlIGZvbGxvd2luZzoKLQotCXByaW50ZiAlcSAiJHBheWxvYWQiCi0KLSAgIEl0IHByb2R1Y2VkOgotCi0JJCc1XDI0N0AzXDIzMStcMzA2UzhcMjM3XDI0MlwzNTJcMjYzJwotCi0gICBXaGVuIGNvbXBhcmVkIHRvIHRoZSBpbnRsLnJpZ2h0KGNvbnRhaW4gdGhlIGNvbnZlcnRlZCBjaGFyYWN0ZXIpLCBpdCBmYWlsZWQuCi0KLSAgIEltcG9ydCBwYXJ0cyBvZiBwYXRjaCBmb3IgaW50bC5yaWdodCBmcm9tIGJhc2ggZGV2ZWwgYnJhbmNoOgotCi0JaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvYmFzaC5naXQvbG9nLz9oPWRldmVsCi0KLSAgIGNvbW1pdCBpczoKLQotCTc0YjhjYmI0MTM5OGI0NDUzZDhiYTA0ZDBjZGQxYjI1ZjlkY2I5ZTMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdHMvaW50bC5yaWdodCB8IDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGwucmlnaHQgYi90ZXN0cy9pbnRsLnJpZ2h0Ci1pbmRleCBhY2YxMDhhLi4xZWZkZmJlIDEwMDY0NAotLS0tIGEvdGVzdHMvaW50bC5yaWdodAotKysrIGIvdGVzdHMvaW50bC5yaWdodAotQEAgLTE4LDM0ICsxOCwzNCBAQCBhw6liCi0gMS4wMDAwCi0gMSwwMDAwCi0gUGFzc2VkIGFsbCAxMzc4IFVuaWNvZGUgdGVzdHMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzU3IDI3NyAyNzcgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzNTcgMjc3IDI3NyAwMTIKLSAwMDAwMDA0Ci0tMDAwMDAwMCAgIDM1NyAyNzcgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMzU3IDI3NyAyNzcgMDEyCi0gMDAwMDAwNAotLTAwMDAwMDAgICAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDAxMgotIDAwMDAwMDEKLS0wMDAwMDAwICAgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAwMTIKLSAwMDAwMDAxCi0tMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMDEyCi0gMDAwMDAwMQotLTAwMDAwMDAgICAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDAxMgotIDAwMDAwMDEKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMzAzIDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzMDMgMjc3IDAxMgotIDAwMDAwMDMKLS0wMDAwMDAwICAgMTAxIDA0MCAzMDIgMjQzIDA0MCAzMDUgMjIyIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAxMDEgMDQwIDMwMiAyNDMgMDQwIDMwNSAyMjIgMDEyCi0gMDAwMDAxMAotIC4vdW5pY29kZTMuc3ViOiBsaW5lIDI6IDWnQDOZK8ZTOJ+i6rM6IGNvbW1hbmQgbm90IGZvdW5kCi0tNadAM5krxlM4n6LqswotKyQnNVwyNDdAM1wyMzErXDMwNlM4XDIzN1wyNDJcMzUyXDI2MycKLSArIDogJCc1XDI0N0AzXDIzMStcMzA2UzhcMjM3XDI0MlwzNTJcMjYzJwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC90ZXN0LW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3Rlc3Qtb3V0cHV0LnBhdGNoCmluZGV4IDJiMDliN2QuLjBmZmNjMjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3Rlc3Qtb3V0cHV0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3Rlc3Qtb3V0cHV0LnBhdGNoCkBAIC0xLDI1ICsxLDQyIEBACi1BZGQgRkFJTC9QQVNTIG91dHB1dCB0byB0ZXN0IG91dHB1dC4KK0Zyb20gMjhlYjA2MDQ3ZWJkMmRlYWE4YzdjZDJiZjY2NTVlZjZhNDY5ZGMxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTA6MDE6NTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBGQUlML1BBU1Mgb3V0cHV0IHRvIHRlc3Qgb3V0cHV0LgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCiBTaWduZWQtb2ZmLWJ5OiBCasO2cm4gU3RlbmJlcmcgPGJqc3RAZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUmViYXNlIHRvIDQuNAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi1kaWZmIC11TnIgYS90ZXN0cy9ydW4tYWxsIGIvdGVzdHMvcnVuLWFsbAotLS0tIGEvdGVzdHMvcnVuLWFsbAkxOTk5LTEwLTA4IDE3OjA3OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGIvdGVzdHMvcnVuLWFsbAkyMDEyLTEwLTI3IDIxOjA0OjE4LjY2MzMzMTg4NyArMDIwMAotQEAgLTIyLDcgKzIyLDE1IEBACisgdGVzdHMvcnVuLWFsbCB8IDExICsrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bi1hbGwgYi90ZXN0cy9ydW4tYWxsCitpbmRleCAyODgyZmUwLi5lMjFkMDI2IDEwMDY0NAorLS0tIGEvdGVzdHMvcnVuLWFsbAorKysrIGIvdGVzdHMvcnVuLWFsbAorQEAgLTMzLDcgKzMzLDE2IEBAIGRvCiAgCWNhc2UgJHggaW4KICAJJDB8cnVuLW1pbmltYWx8cnVuLWdwcm9mKQk7OwogIAkqLm9yaWd8Kn4pIDs7Ci0tCSopCWVjaG8gJHggOyBzaCAkeCA7OwotKyAgICAqKSAgZWNobyAkeAotKyAgICAgICAgIG91dHB1dD1gc2ggJHhgCi0rICAgICAgICAgaWYgWyAtbiAiJG91dHB1dCIgXTsgdGhlbgotKyAgICAgICAgICAgICBlY2hvICIkb3V0cHV0IgotKyAgICAgICAgICAgICBlY2hvICJGQUlMOiAkeCIKLSsgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICR4IgotKyAgICAgICAgIGZpCi0rICAgICAgICAgOzsKKy0JKikJZWNobyAkeCA7IHNoICR4IDsgcm0gLWYgJHtCQVNIX1RTVE9VVH0gOzsKKysJKikJZWNobyAkeAorKwkJb3V0cHV0PWBzaCAkeGAKKysJCWlmIFsgLW4gIiRvdXRwdXQiIF07IHRoZW4KKysJCQllY2hvICIkb3V0cHV0IgorKwkJCWVjaG8gIkZBSUw6ICR4IgorKwkJZWxzZQorKwkJCWVjaG8gIlBBU1M6ICR4IgorKwkJZmkKKysJCXJtIC1mICR7QkFTSF9UU1RPVVR9CisrCQk7OwogIAllc2FjCiAgZG9uZQogIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY0OGZhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjMuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1yZXF1aXJlIGJhc2guaW5jCi0KLSMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDMxIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzIgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDMzO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzMyBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzQ7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM0IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzUgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM2O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzNiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM3IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzODthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzggXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM5O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzOSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQwIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0MiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0NDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQ2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0NzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDcgXAotICAgICAgICAgICBmaWxlOi8vZXhlY3V0ZV9jbWQucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1idWlsdGlucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhlbHAtZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWludGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtOTQwMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNoLW1lbWxlYWstYnVnLWZpeC1mb3ItYnVpbHRpbi1jb21tYW5kLXJlYWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImEyN2IzZWU5YmU4M2JkM2JhNDQ4YzBmZjUyYjI4NDQ3IgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMzE3ODgxMDE5YmJmMjI2MmZiODE0YjdkZDhlNDA2MzJkMTNjMzYwOGQyZjIzNzgwMGE4ODI4ZmJiOGE2NDBkZCIKLQotU1JDX1VSSVtwYXRjaDAzMS5tZDVzdW1dID0gIjIzNmRmMWFjMTEzMGEwMzNlZDBkYmUyZDIxMTVmMjhmIgotU1JDX1VSSVtwYXRjaDAzMS5zaGEyNTZzdW1dID0gImNkNTI5ZjU5ZGQwZjJmZGQ0OWQ2MTlmZTM0NjkxZGE2ZjBhZmZlZGY4N2NjMzdjZDQ2MGE5ZjNmZTgxMmE2MWQiCi1TUkNfVVJJW3BhdGNoMDMyLm1kNXN1bV0gPSAiMjM2MGY3ZTc5Y2ZiMjg1MjZmODAwMjEwMjVlYTU5MDkiCi1TUkNfVVJJW3BhdGNoMDMyLnNoYTI1NnN1bV0gPSAiODg5MzU3ZDI5YTYwMDViMmMzMzA4Y2E1YjYyODZjYjIyM2I1ZTljMDgzMjE5ZTVkYjMxNTYyODJkZDU1NGY0YSIKLVNSQ19VUklbcGF0Y2gwMzMubWQ1c3VtXSA9ICJiNTUxYzRlZTdiODcxMzc1OWU0MTQzNDk5ZDBiYmQ0OCIKLVNSQ19VUklbcGF0Y2gwMzMuc2hhMjU2c3VtXSA9ICJmYjJhNzc4N2ExM2ZiZTAyN2E3MzM1YWNhNmViM2MyMWNkYmQ4MTNlOWVkYzIyMTI3NGI2YTlkODY5MmVhYTE2IgotU1JDX1VSSVtwYXRjaDAzNC5tZDVzdW1dID0gImM5YTU2ZmJlMDM0OGUwNWE4ODZkZmY5N2YyODcyYjc0IgotU1JDX1VSSVtwYXRjaDAzNC5zaGEyNTZzdW1dID0gImYxNjk0ZjA0ZjExMGRlZmUxMzMwYTg1MWNjMjc2OGU3ZTU3ZGRkMmRmZGIwZTNlMzUwY2EwZTNjMjE0ZmY4ODkiCi1TUkNfVVJJW3BhdGNoMDM1Lm1kNXN1bV0gPSAiZTU2NGU4YWI0NGVkMWNhM2E0ZTMxNWE5ZjZjYWJkYzkiCi1TUkNfVVJJW3BhdGNoMDM1LnNoYTI1NnN1bV0gPSAiMzcwZDg1ZTUxNzgwMDM2ZjIzODZkYzE4YzVlZmU5OTZlYmE4ZTY1MmZjMTk3M2YwZjRmMmFiNTVhOTkzYzFlMyIKLVNSQ19VUklbcGF0Y2gwMzYubWQ1c3VtXSA9ICJiMDBmZjY2YzQxYTdjMGYwNmUxOTEyMDA5ODE5ODBiMCIKLVNSQ19VUklbcGF0Y2gwMzYuc2hhMjU2c3VtXSA9ICJhYzVmODI0NDViMzZlZmRiNTQzZGJmYWU2NGFmZWQ2M2Y1ODZkNzU3NGI4MzNlOWFhOWNkNTE3MGJjNWZkMjdjIgotU1JDX1VSSVtwYXRjaDAzNy5tZDVzdW1dID0gImJlMmE3YjA1ZjZhZTU2MDMxM2YzYzlkNWY3MTI3YmRhIgotU1JDX1VSSVtwYXRjaDAzNy5zaGEyNTZzdW1dID0gIjMzZjE3MGRkNzQwMGFiMzQxOGQ3NDljNTVjNjM5MWIxZDE2MWVmMmRlN2FjZWQxODczNDUxYjNhM2ZjYTU4MTMiCi1TUkNfVVJJW3BhdGNoMDM4Lm1kNXN1bV0gPSAiNjFlMDUyMjgzMGIyNGZiZThjMGQxYjAxMGYxMzI0NzAiCi1TUkNfVVJJW3BhdGNoMDM4LnNoYTI1NnN1bV0gPSAiYWRiZWFhNTAwY2E3YTgyNTM1ZjBlODhkNjczNjYxOTYzZjhhNWZjZGM3YWQ2MzQ0NWU2OGJmNWI0OTc4NjM2NyIKLVNSQ19VUklbcGF0Y2gwMzkubWQ1c3VtXSA9ICJhNDc3NTQ4N2FiZTk1ODUzNjc1MWM4Y2U1M2NkZjZmOSIKLVNSQ19VUklbcGF0Y2gwMzkuc2hhMjU2c3VtXSA9ICJhYjk0ZGNlZDIyMTU1NDEwOTc2OTFmNjBjM2ViMzIzY2MyOGVmMjU0OTQ2M2U2YTUzMzRiYmNjMWU2MWU3NGVjIgotU1JDX1VSSVtwYXRjaDA0MC5tZDVzdW1dID0gIjgwZDM1ODdjNTg4NTRlMjI2MDU1ZWYwOTlmZmViNTM1IgotU1JDX1VSSVtwYXRjaDA0MC5zaGEyNTZzdW1dID0gIjg0YmIzOTZiOTI2Mjk5MmNhNTQyNGZlYWI2ZWQzZWMzOWYxOTNlZjVjNzZkZmU0YTYyYjU1MWJkOGRkOWQ3NmIiCi1TUkNfVVJJW3BhdGNoMDQxLm1kNXN1bV0gPSAiMjBiZjYzZWVmN2NiNDQxYzBiMWNjNDllZjMxOTFkMDMiCi1TUkNfVVJJW3BhdGNoMDQxLnNoYTI1NnN1bV0gPSAiNGVjNDMyOTY2ZTQxOTg1MjRhN2UwY2Q2ODVmZTIyMmU5NjA0Mzc2OWM5NjEzZTY2NzQyYWM0NzVkYjEzMmMxYSIKLVNSQ19VUklbcGF0Y2gwNDIubWQ1c3VtXSA9ICI3MDc5MDY0NmFlNjFlMjA3Yzk5NWU0NDkzMTM5MGU1MCIKLVNSQ19VUklbcGF0Y2gwNDIuc2hhMjU2c3VtXSA9ICJhYzIxOTMyMmRiMjc5MWRhODdhNDk2ZWU2ZThlNTU0NDg0NjQ5NGJkYWFlYTI2MjYyNzBjMmY3M2MxMDQ0OTE5IgotU1JDX1VSSVtwYXRjaDA0My5tZDVzdW1dID0gIjg1NWE0Njk1NWNiMjUxNTM0ZTgwYjQ3MzJiNzQ4ZTM3IgotU1JDX1VSSVtwYXRjaDA0My5zaGEyNTZzdW1dID0gIjQ3YThhM2MwMDViNDZlMjU4MjFmNGQ4ZjVjY2IwNGMxZDY1M2IxYzgyOWNiNDA1NjhkNTUzZGM0NGY3YTYxODAiCi1TUkNfVVJJW3BhdGNoMDQ0Lm1kNXN1bV0gPSAiMjk2MjNkMzI4MmZjYmIzN2UxMTU4MTM2NTA5YjViYjgiCi1TUkNfVVJJW3BhdGNoMDQ0LnNoYTI1NnN1bV0gPSAiOTMzODgyMDYzMGJmNjczNzNiNDRkOGVhNjg0MDlmNjUxNjJlYTdhNDdiOWIyOWFjZTA2YTBhZWQxMjU2N2Y5OSIKLVNSQ19VUklbcGF0Y2gwNDUubWQ1c3VtXSA9ICI0NDczMjQ0Y2E1YWJmZDRiMDE4ZWEyNmRjNzNlNzQxMiIKLVNSQ19VUklbcGF0Y2gwNDUuc2hhMjU2c3VtXSA9ICJiYTZlYzM5NzhlOWVhYTFlYjNmYWJkYWYzY2M2ZmRmOGM0NjA2YWMxYzU5OWZhYWViNGUyZDY5ODY0MTUwMDIzIgotU1JDX1VSSVtwYXRjaDA0Ni5tZDVzdW1dID0gIjdlNWZiMDk5OTFjMDc3MDc2Yjg2ZTBlMDU3Nzk4OTEzIgotU1JDX1VSSVtwYXRjaDA0Ni5zaGEyNTZzdW1dID0gImIzYjQ1NmE2YjY5MGNkMjkzMzUzZjE3ZTIyZDkyYTIwMmIzYzhiY2U1ODdhZTVmMjY2N2MyMGM5YWI2ZjY4OGYiCi1TUkNfVVJJW3BhdGNoMDQ3Lm1kNXN1bV0gPSAiODQ4MzE1M2JhZDFhNmY1MmNhZGMzYmQ5YThkZjc4MzUiCi1TUkNfVVJJW3BhdGNoMDQ3LnNoYTI1NnN1bV0gPSAiYzY5MjQ4ZGU3ZTc4YmE2YjkyZjExOGZlMWVmNDdiYzg2NDc5ZDUwNDBmZTBiMWY5MDhhY2UxYzllM2M2N2M0YSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0NGQwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgpAQCAtMCwwICsxLDU5IEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAxIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAzO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMyBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDQ7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA2O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA3IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwODthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDggXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA5O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEwIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTEgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDEyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMiBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiMTQ4ODg4YTdjOTVhYzIzNzA1NTU5YjZmNDc3ZGZlMjUiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJkODZiMzM5MmMxMjAyZThmZjVhNDIzYjMwMmU2Mjg0ZGI3ZjhmNDM1ZWE5ZjM5YjViMWIyMGZkM2FjMzZkZmNiIgorCitTUkNfVVJJW3BhdGNoMDAxLm1kNXN1bV0gPSAiODE3ZDAxYTZjMGFmNmY3OTMwOGE4YjdiNjQ5ZTUzZDgiCitTUkNfVVJJW3BhdGNoMDAxLnNoYTI1NnN1bV0gPSAiM2UyOGQ5MTUzMTc1MmRmOWE4Y2IxNjdhZDA3Y2M1NDJhYmFmOTQ0ZGU5MzUzZmU4YzZhNTM1YzlmMWYxN2YwZiIKK1NSQ19VUklbcGF0Y2gwMDIubWQ1c3VtXSA9ICI3NjVlMTRjZmYxMmM3Mjg0MDA5NzcyZThlMjRmMmZlMCIKK1NSQ19VUklbcGF0Y2gwMDIuc2hhMjU2c3VtXSA9ICI3MDIwYTAxODNlMTdhNzIzM2U2NjViOTc5Yzc4YzE4NGVhMzY5Y2ZhZjNlOGI0YjExZjU1NDdlY2I3YzEzYzUzIgorU1JDX1VSSVtwYXRjaDAwMy5tZDVzdW1dID0gIjQ5ZTdkYTkzYmYwN2Y1MTBhMmViNmJiNDNhYzNlNWEyIgorU1JDX1VSSVtwYXRjaDAwMy5zaGEyNTZzdW1dID0gIjUxZGY1YTkxOTJmZGVmZTBkZGNhNGJkZjI5MDkzMmY3NGJlMDNmZmQwNTAzYTNkMTEyZTQxOTk5MDVlNzE4YjIiCitTUkNfVVJJW3BhdGNoMDA0Lm1kNXN1bV0gPSAiNDU1N2Q2NzRhYjU4MzFhNWZhOTgwNTJhYjE5ZWRhZjQiCitTUkNfVVJJW3BhdGNoMDA0LnNoYTI1NnN1bV0gPSAiYWQwODBhMzBhNGFjNmMxMjczMzczNjE3ZjI5NjI4Y2MzMjBhMzVjOGNkMDY5MTM4OTQ3OTQyOTNkYzUyYzhiMyIKK1NSQ19VUklbcGF0Y2gwMDUubWQ1c3VtXSA9ICJjY2U5NmRkNzdjZGQxZDI5M2JlZWMxMDg0OGY2Y2JiNSIKK1NSQ19VUklbcGF0Y2gwMDUuc2hhMjU2c3VtXSA9ICIyMjFlNGI3MjViNzcwYWQwYmI2OTI0ZGYzZjhkMDRmODllZWNhNDU1OGY2ZTRjNzc3ZGZhOTNlOTY3MDkwNTI5IgorU1JDX1VSSVtwYXRjaDAwNi5tZDVzdW1dID0gImQzMzc5ZjhkOGFiY2U1YzZlZTMzOGY5MzFhZDAwOGQ1IgorU1JDX1VSSVtwYXRjaDAwNi5zaGEyNTZzdW1dID0gIjZhOGUyZTJhNjE4MGQwZjFjZTM5ZGNkNjUxNjIyZmI2ZDJmZDA1ZGI3YzQ1OWY2NGFlNDJkNjY3ZjFlMzQ0YjgiCitTUkNfVVJJW3BhdGNoMDA3Lm1kNXN1bV0gPSAiZWMzOGM3NmNhNDM5Y2E3ZjljMTc4ZTliYWVkZTg0ZmMiCitTUkNfVVJJW3BhdGNoMDA3LnNoYTI1NnN1bV0gPSAiZGUxY2NjMDdiN2JmYzllMjUyNDNhZDg1NGYzYmJiNWQzZWJmOTE1NWIwNDc3ZGYxNmFhZjAwYTdiMGQ1ZWRhZiIKK1NSQ19VUklbcGF0Y2gwMDgubWQ1c3VtXSA9ICJlMGJhMThjMWUzYjk0ZjkwNWRhOWI1YmY5ZDM4YjU4YiIKK1NSQ19VUklbcGF0Y2gwMDguc2hhMjU2c3VtXSA9ICI4NjE0NDcwMDQ2NTkzMzYzNmQ3Yjk0NWU4OWI3N2RmOTVkMzYyMDAzNDcyNWJlMTYxY2EwY2E1YTQyZTIzOWJhIgorU1JDX1VSSVtwYXRjaDAwOS5tZDVzdW1dID0gImU5NTJkNGY0NGU2MTIwNDg5MzBjNTU5ZDkwZWI5OWJiIgorU1JDX1VSSVtwYXRjaDAwOS5zaGEyNTZzdW1dID0gIjBiNmJkZDFhMThhMGQyMGUzMzBjYzNiYzcxZTA0ODg2NGU0YTEzNjUyZTI5ZGMwZWJmMzkxOGJlYTcyOTM0M2MiCitTUkNfVVJJW3BhdGNoMDEwLm1kNXN1bV0gPSAiNTdiNWIzNTk1NWQ2OGY5YTA5ZGJlZjZiODZkMmM3ODIiCitTUkNfVVJJW3BhdGNoMDEwLnNoYTI1NnN1bV0gPSAiODQ2NWM2ZjJjNTZhZmU1NTk0MDIyNjViMzlkOWU5NDM2ODk1NDkzMGY5YWE3ZjNkZmE2ZDM2ZGQ2Njg2OGUwNiIKK1NSQ19VUklbcGF0Y2gwMTEubWQ1c3VtXSA9ICJjYzg5NmUxZmE2OTZiOTNkZWQ1NjhlNTU3ZTIzOTJkNSIKK1NSQ19VUklbcGF0Y2gwMTEuc2hhMjU2c3VtXSA9ICJkZDU2NDI2ZWY3ZDcyOTVlMTEwN2MwYjNkMDZjMTkyZWI5Mjk4ZjQwMjNjMjAyY2EyYmE2MjY2YzYxM2QxNzBkIgorU1JDX1VSSVtwYXRjaDAxMi5tZDVzdW1dID0gImZhNDdmYmZhNTZmYjdlOWU1MzY3ZjE5YTlkZjVmYzllIgorU1JDX1VSSVtwYXRjaDAxMi5zaGEyNTZzdW1dID0gImZhYzI3MWQyYmY2MzcyYzk5MDNlM2IzNTNjYjllZGEwNDRkN2ZlMzZiNWFhYjUyZjIxZjNmMjFjZDZhMjA2M2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRiMDcxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQmVya2VsZXkgTEFMUiBZYWNjIHBhcnNlciBnZW5lcmF0b3IiCi1ERVNDUklQVElPTiA9ICJBIHBhcnNlciBnZW5lcmF0b3IgdXRpbGl0eSB0aGF0IHJlYWRzIGEgZ3JhbW1hciBzcGVjaWZpY2F0aW9uIGZyb20gYSBmaWxlIGFuZCBnZW5lcmF0ZXMgYW4gTFIoMSkgXAotcGFyc2VyIGZvciBpdC4gIFRoZSBwYXJzZXJzIGNvbnNpc3Qgb2YgYSBzZXQgb2YgTEFMUigxKSBwYXJzaW5nIHRhYmxlcyBhbmQgYSBkcml2ZXIgcm91dGluZSB3cml0dGVuIGluIHRoZSBDIFwKLXByb2dyYW1taW5nIGxhbmd1YWdlLiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIlBEIgotCi1TUkNfVVJJID0gImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2J5YWNjL2J5YWNjLSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9ieWFjYy1vcGVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnlhY2MtZG8tbm90LXJlb3JkZXItQ0MtYW5kLUNGTEFHUy5wYXRjaCIKLQotRVhUUkFfT0VDT05GICs9ICItLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9J3MsXixiLCciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb25maWd1cmUoKSB7Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQotCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9Ci0Jb2VfcnVuY29uZgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE2MTIwMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNjEyMDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWY4YWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE2MTIwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCi0jIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6Ci0jICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKLSMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9NzQ1MzNkMzJmZmQzOGJjYTRjYmYxZjEzMDVmOGJjNjAiCi1yZXF1aXJlIGJ5YWNjLmluYwotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0OGVmMzg0NDdmMmNjODY0YzcwZWY4NjRiMjZjZjgxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGRjNThjZmNkYjcwOGVlYTdiYTAyMmRiMjliNDFkMmQzOTJmMjA3Mjc0OTFiOTU2OTU0MzY2ZjJmMjExN2YwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDItMS4wLjYvTWFrZWZpbGUuYW0KaW5kZXggMDVkMzg5Zi4uZGNmNjQ1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L01ha2VmaWxlLmFtCkBAIC00OCw3ICs0OCw4IEBACiAJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUzIGRlY29tcHJlc3MiOyBmaQogCiBpbnN0YWxsLXB0ZXN0OgotCWNwICQoc3JjZGlyKS9NYWtlZmlsZQkJJChERVNURElSKS8KKwlzZWQgIC1uICcvXnJ1bnRlc3Q6LywvXmluc3RhbGwtcHRlc3Q6L3svXmluc3RhbGwtcHRlc3Q6LyFwfScgXAorICAgICAgICAgICAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICAgICA+ICQoREVTVERJUikvTWFrZWZpbGUKIAljcCAkKHNyY2Rpcikvc2FtcGxlMS5yZWYJJChERVNURElSKS8KIAljcCAkKHNyY2Rpcikvc2FtcGxlMi5yZWYJJChERVNURElSKS8KIAljcCAkKHNyY2Rpcikvc2FtcGxlMy5yZWYJJChERVNURElSKS8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiCmluZGV4IDA1MTJhNzUuLmRlNjY4ZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgpAQCAtMzQsNyArMzQsNiBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tYmluZGlyPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BOfSIKIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLWYgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogCXNlZCAtaSAtZSAic3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8IiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKaW5kZXggYzNmYTQ1OS4uYWM0ZDIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQW4gSW50ZXJuZXQgcHJpbnRpbmcgc3lzdGVtIGZvciBVbml4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKIERFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgZGJ1cy1nbGliIHpsaWIgbGlidXNiIgpAQCAtNzksMTMgKzgwLDYgQEAKIAlmaQogfQogCi1weXRob24gZG9fcGFja2FnZV9hcHBlbmQoKSB7Ci0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICAjIENoYW5nZSBwZXJtaXNzaW9ucyBiYWNrIHRoZSB3YXkgdGhleSB3ZXJlLCB0aGV5IHByb2JhYmx5IGhhZCBhIHJlYXNvbi4uLgotICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCi0gICAgc3VicHJvY2Vzcy5jYWxsKCdjaG1vZCAwNTExICVzL2luc3RhbGwvY3Vwcy92YXIvcnVuL2N1cHMvY2VydHMnICUgd29ya2Rpciwgc2hlbGw9VHJ1ZSkKLX0KLQogUEFDS0FHRVMgPSsgIiR7UE59LWxpYiAke1BOfS1saWJpbWFnZSIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAncHJvY3BzJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNzRjMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDM2ZjZiZGE2MjAyYWUzZTI4MGFjMDBjNzEwYjVjYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU4OWJiN2Q1ZDFkYzNhYTA5MTVkN2NmMmI4MDg1NzFlZjJlMTUzMGNkMWE2ZWJlNzZhZThmOWY0OTk0ZTRmNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5NGI2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjZlNWEwYTU3NGE2OWZlMWQwMTA3OWIyOTMxZmM0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTZkNGRiNzI2NTFjMzM1NDY5YWU1ZjM3YjBkYTcyYWM5Zjk3ZDczZTMwODM4ZDc4NzA2NWY1NTlkZWE5OGNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy41LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1yZXBsYWNpbmctZ2V0b3B0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1yZXBsYWNpbmctZ2V0b3B0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MWY4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42LzAwMDEtZXhwbGljaXRseS1kaXNhYmxlLXJlcGxhY2luZy1nZXRvcHQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorU3ViamVjdDogZXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQKKworRXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQgdG8gYXZvaWQgY29tcGlsYXRpb24gZXJyb3IgbGlrZSBiZWxvdy4KKworICB4c3RydG9sLWVycm9yLmM6ODQ6MjY6IGVycm9yOiBpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IHJwbF9vcHRpb24nCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2dldG9wdC5tNCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nZXRvcHQubTQgYi9tNC9nZXRvcHQubTQKK2luZGV4IDNlYmM3YjcuLjg5MzQ0MjYgMTAwNjQ0CistLS0gYS9tNC9nZXRvcHQubTQKKysrKyBiL200L2dldG9wdC5tNAorQEAgLTIyLDggKzIyLDggQEAgQUNfREVGVU4oW2dsX0ZVTkNfR0VUT1BUX1BPU0lYXSwKKyAgICAgZmkKKyAgIF0pCisgICBpZiB0ZXN0ICRSRVBMQUNFX0dFVE9QVCA9IDE7IHRoZW4KKy0gICAgZG5sIEFycmFuZ2UgZm9yIGdldG9wdC5oIHRvIGJlIGNyZWF0ZWQuCistICAgIGdsX0dFVE9QVF9TVUJTVElUVVRFX0hFQURFUgorKyAgICBkbmwgRXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQKKysgICAgOgorICAgZmkKKyBdKQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42L3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYwppbmRleCAyNDMzNDFhLi43YzViZTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRpZmZ1dGlscyBjb250YWlucyB0b29scyB1c2VkIGZvciBmaW5kaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2RpZmZ1dGlscy9kaWZmdXRpbHMuaHRtbCIKIERFU0NSSVBUSU9OID0gIkRpZmZ1dGlscyBjb250YWlucyB0aGUgR05VIGRpZmYsIGRpZmYzLCBcCiBzZGlmZiwgYW5kIGNtcCB1dGlsaXRpZXMuIFRoZXNlIHByb2dyYW1zIGFyZSB1c3VhbGx5IFwKIHVzZWQgZm9yIGNyZWF0aW5nIHBhdGNoIGZpbGVzLiIKQEAgLTYsMTMgKzcsNiBAQAogCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dAogCi0jIGRpZmZ1dGlscyBhc3N1bWVzIG5vbi1nbGliYyBjb21waWxhdGlvbiB3aXRoIHVjbGliYyBhbmQKLSMgdGhpcyBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbnMgb2YKLSMgc3RhbmRhcmQgZnVuY3Rpb25hbGl0eS4gIHJlZ2V4LmMgYWN0dWFsbHkgYnJlYWtzIGNvbXBpbGF0aW9uCi0jIGJlY2F1c2UgaXQgdXNlcyBfX21lbXBjcHksIHRoZXJlIGFyZSBvdGhlciB0aGluZ3MgKFRCRDoKLSMgc2VlIGRpZmZ1dGlscy5tayBpbiBidWlsZHJvb3QpCi1FWFRSQV9PRUNPTkZfbGliYy11Y2xpYmMgPSAiLS13aXRob3V0LWluY2x1ZGVkLXJlZ2V4IgotCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJkaWZmIGNtcCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzU4NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLXJlcXVpcmUgZGlmZnV0aWxzLmluYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgTmVlZCB0byByZW1vdmUgZ2V0dGV4dCBtYWNyb3Mgd2l0aCB3ZWlyZCBtaXggb2YgdmVyc2lvbnMKLQlmb3IgaSBpbiBjb2Rlc2V0Lm00IGdldHRleHRfZ2wubTQgaW50bG1hY29zeC5tNCBpbnR0eXBlcy1wcmkubTQgbGliLWxkX2dsLm00IGxpYi1wcmVmaXhfZ2wubTQgcG9fZ2wubTQgc3NpemVfdC5tNCB3Y2hhcl90Lm00IHdpbnRfdC5tNDsgZG8KLQkJcm0gLWYgJHtTfS9tNC8kaQotCWRvbmUKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjU2OTM1NDY5N2ZmMWNmYzlhOWRlMzc4MTM2MTAxNWZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZDM5OGNjZDViOWZhY2E2YjBhYjIxOWEwMzY0NTNmNjJhNjAyYTU2MjAzYWM2NTliNDNlODg5YmVjMzU1MzMiCi0KLWluaGVyaXQgcHRlc3QKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQljcCAtciAke1N9L3Rlc3RzICR0LwotCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KLQlzZWQgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAotCSAgICAtZSAnc3xiYXNofHNofCcgXAotCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKLQkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAotCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKLQkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAotCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhZGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKQEAgLTAsMCArMSwzOSBAQAorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworcmVxdWlyZSBkaWZmdXRpbHMuaW5jCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9kaWZmdXRpbHMvZGlmZnV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLWdsaWJjID0gIiBmaWxlOi8vMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtcmVwbGFjaW5nLWdldG9wdC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjA3Y2YyODY2NzJjZWQyNmZiYTU0Y2QwMzEzYmRjMDcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MjFlOGJkZDRiNTczOTE4YzgxNDVmN2FlNjE4MTdkMWJlOWRlYjRjOGQyMzI4YTY1Y2VhOGUxMWQ3ODNiZDYiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9QUl9QUk9HUkFNPSR7YmluZGlyfS9wciAtLXdpdGhvdXQtbGlic2lnc2Vndi1wcmVmaXgiCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKKwljcCAtciAke1N9L3Rlc3RzICR0LworCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KKwlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAorCSAgICAtZSAnc3xiYXNofHNofCcgXAorCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKKwkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAorCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKKwkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAorCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U2YmRlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGluZS1vcmllbnRlZCB0ZXh0IGVkaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lZC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGM3MDUxYWVmOTIxOWRjNzIzN2YyMDZjNWM0MTc5YTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWQuaDtlbmRsaW5lPTIwO21kNT00ZTM2YjdhNDBlMTM3ZjQyYWVlNzE4MTY1NTkwZDEyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xNzttZDU9YzViOGY3OGYxMTVkZjE4N2FmNzY4NjhhMmFlYWQxNmEiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCi1iaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCi0KLSMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyR7QlB9LnRhci5seiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0dOVV9NSVJST1J9L2VkLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmNGE1NGZhN2YzNjY0NzlmMDM2NTRiOGFmNjQ1ZmQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmYjk3ZWI4ZjJhMmI1YTcxYTliOTdlMzg3MmFkY2U5NTNhYTFiODk1OGUwNGM1YjdiZjExZDU1NmYzMjU1MmEiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1pbmhlcml0IHRleGluZm8KLQotZG9fY29uZmlndXJlKCkgewotCSR7U30vY29uZmlndXJlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLQlpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLQkJcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkMDNiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiTGluZS1vcmllbnRlZCB0ZXh0IGVkaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lZC8iCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGM3MDUxYWVmOTIxOWRjNzIzN2YyMDZjNWM0MTc5YTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWQuaDtlbmRsaW5lPTIwO21kNT00ZTM2YjdhNDBlMTM3ZjQyYWVlNzE4MTY1NTkwZDEyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xNzttZDU9YzViOGY3OGYxMTVkZjE4N2FmNzY4NjhhMmFlYWQxNmEiCisKK1NFQ1RJT04gPSAiYmFzZSIKKworIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCitiaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCisKKyMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8ke0JQfS50YXIubHoiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNzNkMDQ3NzhiMmE1MWY3YzNjYmZjZDIwMDE4NzZiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTc5NjJiYTkzMGQ3MGQwMmZjNzFkNmJlNWM1ZjIzNDZiMTY5OTJhNDU1YWI5YzQzYmU3MDYxZGVjOTgxMGRiIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworaW5oZXJpdCB0ZXhpbmZvCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkke1N9L2NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisJaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisJCXJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWZlOWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhmMTA3MjY3OTg4OGM5MzM1ZTQ5YjE3ZWZiNzk4YjRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmMmZkOTY5MmYzMTU5ZDNhYjFlNDFlNmY5YjdkOGRiMmE0NjkzZjFjYjIyMzQ4Yzg4YmE4OWY3MGYwZTY1MDMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhZjJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCi1ERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhjNGE0ZDg1YzMzZjU3M2M0OWZmNmQ4MWVjMDk0ZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWJkODJlYmUzZDQxZGUxYjdiMGQ4ZjRmYjE4YThlODQ2NmZiYTkzNGM5NTJiYzVjNTAwMjgzNmZmYThiYjYwNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCi0gICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKaW5kZXggYmZlZGY4Ny4uYWQzNjQyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jCkBAIC0xMywxMSArMTMsNCBAQAogQUxURVJOQVRJVkVfJHtQTn0gPSAiZmluZCB4YXJncyIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAotIyBkaWZmdXRpbHMgYXNzdW1lcyBub24tZ2xpYmMgY29tcGlsYXRpb24gd2l0aCB1Y2xpYmMgYW5kCi0jIHRoaXMgY2F1c2VzIGl0IHRvIGdlbmVyYXRlIGl0cyBvd24gaW1wbGVtZW50YXRpb25zIG9mCi0jIHN0YW5kYXJkIGZ1bmN0aW9uYWxpdHkuICByZWdleC5jIGFjdHVhbGx5IGJyZWFrcyBjb21waWxhdGlvbgotIyBiZWNhdXNlIGl0IHVzZXMgX19tZW1wY3B5LCB0aGVyZSBhcmUgb3RoZXIgdGhpbmdzIChUQkQ6Ci0jIHNlZSBkaWZmdXRpbHMubWsgaW4gYnVpbGRyb290KQotRVhUUkFfT0VDT05GX2xpYmMtdWNsaWJjID0gIi0td2l0aG91dC1pbmNsdWRlZC1yZWdleCIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKaW5kZXggM2Y0MzllNy4uNzQyYzlhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJPcGVuUHJpbnRpbmcgcHJpbnRlciBzdXBwb3J0IC0gZmlsdGVycyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL29wZW5wcmludGluZy9zdGFydCIKIERFU0NSSVBUSU9OID0gIkZvb21hdGljIGlzIGEgcHJpbnRlciBkYXRhYmFzZSBkZXNpZ25lZCB0byBtYWtlIGl0IGVhc2llciB0byBzZXQgdXAgXAogY29tbW9uIHByaW50ZXJzIGZvciB1c2Ugd2l0aCBVTklYLWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMuXAogSXQgcHJvdmlkZXMgdGhlICJnbHVlIiBiZXR3ZWVuIGEgcHJpbnQgc3Bvb2xlciAobGlrZSBDVVBTIG9yIGxwcikgYW5kIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKaW5kZXggZGRhMzhlZi4uOTk1ZDM3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKQEAgLTQxLDkgKzQxLDkgQEAKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZm9yIGkgaW4gYGdyZXAgLXZFICJAfF4kfCN8R3QtZHVtbXkiICR7U30vdGVzdC9NYWtldGVzdHMgfGF3ayAtRjogJ3twcmludCAkMX0nYCBNYWtldGVzdHM7IFwKKwlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0cyBpbmNsaWIuYXdrOyBcCiAJICBkbyBjcCAke1N9L3Rlc3QvJGkqICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IFwKIAlkb25lCiB9CiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIxOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NGFiZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gNGJlZjFhMWQzMmUyOWI2ODg1NTYxNjAyMGRiZmY1NzRiOWNkYTA4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmluIFdhdHRzIDxSb2Jpbi5XYXR0c0BhcnRpZmV4LmNvbT4KLURhdGU6IFRodSwgMjkgRGVjIDIwMTYgMTU6NTc6NDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzQ1MzogQXZvaWQgZGl2aWRlIGJ5IDAgaW4gc2NhbiBjb252ZXJzaW9uIGNvZGUuCi0KLUFyaXRobWV0aWMgb3ZlcmZsb3cgZHVlIHRvIGV4dHJlbWUgdmFsdWVzIGluIHRoZSBzY2FuIGNvbnZlcnNpb24KLWNvZGUgY2FuIGNhdXNlIGEgZGl2aXNpb24gYnkgMC4KLQotQXZvaWQgdGhpcyB3aXRoIGEgc2ltcGxlIGV4dHJhIGNoZWNrLgotCi0gIGR4X29sZD1jZjgxNGQ4MQotICBlbmRwLT54X25leHQ9YjBlODU5YjkKLSAgYWxwLT54X25leHQ9ODA2OWE3M2EKLQotbGVhZHMgdG8gZHhfZGVuID0gMAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjE5Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9neGZpbGwuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNlL2d4ZmlsbC5jIGIvYmFzZS9neGZpbGwuYwotaW5kZXggOTkxOTZjMC4uMmY4MWJiMCAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3hmaWxsLmMKLSsrKyBiL2Jhc2UvZ3hmaWxsLmMKLUBAIC0xNzQxLDcgKzE3NDEsNyBAQCBpbnRlcnNlY3QoYWN0aXZlX2xpbmUgKmVuZHAsIGFjdGl2ZV9saW5lICphbHAsIGZpeGVkIHksIGZpeGVkIHkxLCBmaXhlZCAqcF95X25ldwotICAgICBmaXhlZCBkeF9vbGQgPSBhbHAtPnhfY3VycmVudCAtIGVuZHAtPnhfY3VycmVudDsKLSAgICAgZml4ZWQgZHhfZGVuID0gZHhfb2xkICsgZW5kcC0+eF9uZXh0IC0gYWxwLT54X25leHQ7Ci0gCi0tICAgIGlmIChkeF9kZW4gPD0gZHhfb2xkKQotKyAgICBpZiAoZHhfZGVuIDw9IGR4X29sZCB8fCBkeF9kZW4gPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLyogSW50ZXJzZWN0aW9uIGlzbid0IHBvc3NpYmxlLiAqLwotICAgICBkeSA9IHkxIC0geTsKLSAgICAgaWZfZGVidWczKCdGJywgIltGXWNyb3NzOiBkeT0lZywgZHhfb2xkPSVnLCBkeF9uZXc9JWdcbiIsCi1AQCAtMTc1MCw3ICsxNzUwLDcgQEAgaW50ZXJzZWN0KGFjdGl2ZV9saW5lICplbmRwLCBhY3RpdmVfbGluZSAqYWxwLCBmaXhlZCB5LCBmaXhlZCB5MSwgZml4ZWQgKnBfeV9uZXcKLSAgICAgLyogRG8gdGhlIGNvbXB1dGF0aW9uIGluIHNpbmdsZSBwcmVjaXNpb24gKi8KLSAgICAgLyogaWYgdGhlIHZhbHVlcyBhcmUgc21hbGwgZW5vdWdoLiAqLwotICAgICB5X25ldyA9Ci0tICAgICAgICAoKGR5IHwgZHhfb2xkKSA8IDFMIDw8IChzaXplX29mKGZpeGVkKSAqIDQgLSAxKSA/Ci0rICAgICAgICAoKCh1Zml4ZWQpKGR5IHwgZHhfb2xkKSkgPCAoMUwgPDwgKHNpemVfb2YoZml4ZWQpICogNCAtIDEpKSA/Ci0gICAgICAgICAgZHkgKiBkeF9vbGQgLyBkeF9kZW4gOgotICAgICAgICAgIChJTkNSX0VYUFIobXFfY3Jvc3MpLCBmaXhlZF9tdWx0X3F1byhkeSwgZHhfb2xkLCBkeF9kZW4pKSkKLSAgICAgICAgICsgeTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTEwMjIwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTFlOGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIGRhZjg1NzAxZGFiMDVmMTdlOTI0YTQ4YTgxZWRjOTE5NWI0YTA0ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTY6NTQ6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGNyYXNoIHdpdGggYmFkIGRhdGEgc3VwcGxpZWQgdG8gbWFrZWltYWdlZGV2aWNlCi0KLUJ1ZyAjNjk3NDUwICJOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZ3hfZGV2aWNlX2ZpbmFsaXplKCkiCi0KLVRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCB0aGUgY29kZSB0byBmaW5hbGlzZSBhIGRldmljZSB1bmNvbmRpdGlvbmFsbHkKLWZyZWVzIHRoZSBpY2Nfc3RydWN0IG1lbWJlciBvZiB0aGUgZGV2aWNlIHN0cnVjdHVyZS4gSG93ZXZlciB0aGlzCi1wYXJ0aWN1bGFyICh3ZWlyZCkgZGV2aWNlIGlzIG5vdCBzZXR1cCBhcyBhIG5vcm1hbCBkZXZpY2UsIHByb2JhYmx5Ci1iZWNhdXNlIGl0cyB2ZXJ5LCB2ZXJ5IGFuY2llbnQuIEl0cyBwb3NzaWJsZSBmb3IgdGhlIGluaXRpYWxpc2F0aW9uCi1vZiB0aGUgZGV2aWNlIHRvIGFib3J0IHdpdGggYW4gZXJyb3IgYmVmb3JlIGNhbGxpbmcgZ3NfbWFrZV9tZW1fZGV2aWNlKCkKLXdoaWNoIGlzIHdoZXJlIHRoZSBpY2Nfc3RydWN0IG1lbWJlciBnZXRzIGFsbG9jYXRlZCAob3Igc2V0IHRvIE5VTEwpLgotCi1JZiB0aGF0IGhhcHBlbnMsIHRoZW4gdGhlIGNsZWFudXAgY29kZSB0cmllcyB0byBmcmVlIHRoZSBkZXZpY2UsIHdoaWNoCi1jYWxscyBmaW5hbGl6ZSgpIHdoaWNoIHRyaWVzIHRvIGZyZWUgYSBnYXJiYWdlIHBvaW50ZXIuCi0KLVNldHRpbmcgdGhlIGRldmljZSBtZW1vcnkgdG8gMHgwMCBhZnRlciB3ZSBhbGxvY2F0ZSBpdCBtZWFucyB0aGF0IHRoZQotaWNjX3N0cnVjdCBtZW1iZXIgd2lsbCBiZSBOVUxMPCBhbmQgb3VyIG1lbW9yeSBtYW5hZ2VyIGFsbG93cyBmb3IgdGhhdAotaGFwcGlseSBlbm91Z2gsIHdoaWNoIGF2b2lkcyB0aGUgcHJvYmxlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDIyMAotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvZ3NkZXZtZW0uYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL2dzZGV2bWVtLmMgYi9iYXNlL2dzZGV2bWVtLmMKLWluZGV4IDk3YjljZjQuLmZlNzViY2MgMTAwNjQ0Ci0tLS0gYS9iYXNlL2dzZGV2bWVtLmMKLSsrKyBiL2Jhc2UvZ3NkZXZtZW0uYwotQEAgLTIyNSw2ICsyMjUsMTggQEAgZ3NfbWFrZXdvcmRpbWFnZWRldmljZShneF9kZXZpY2UgKiogcG5ld19kZXYsIGNvbnN0IGdzX21hdHJpeCAqIHBtYXQsCi0gCi0gICAgIGlmIChwbmV3ID09IDApCi0gICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3JfVk1lcnJvcik7Ci0rCi0rICAgIC8qIEJ1ZyAjNjk3NDUwICJOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZ3hfZGV2aWNlX2ZpbmFsaXplKCkiCi0rICAgICAqIElmIHdlIGhhdmUgaW5jb3JyZWN0IGRhdGEgcGFzc2VkIHRvIGdzX2luaXRpYWxpc2Vfd29yZGltYWdlZGV2aWNlKCkgdGhlbiB0aGUKLSsgICAgICogaW5pdGlhbGlzYXRpb24gd2lsbCBmYWlsLCBjcnVjaWFsbHkgaXQgd2lsbCBmYWlsICpiZWZvcmUqIGl0IGNhbGxzCi0rICAgICAqIGdzX21ha2VfbWVtX2RldmljZSgpIHdoaWNoIGluaXRpYWxpc2VzIHRoZSBkZXZpY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUKLSsgICAgICogaWNjX3N0cnVjdCBtZW1iZXIgd2lsbCBiZSB1bmluaXRpYWxzZWQsIGJ1dCB0aGUgZGV2aWNlIGZpbmFsaXNlIG1ldGhvZAotKyAgICAgKiB3aWxsIHVuY29uZGl0aW9uYWxseSBmcmVlIHRoYXQgbWVtb3J5LiBTaW5jZSBpdHMgYSBnYXJiYWdlIHBvaW50ZXIsIGJhZCB0aGluZ3MgaGFwcGVuLgotKyAgICAgKiBBcHBhcmVudGx5IHdlIGRvIHN0aWxsIG5lZWQgbWFrZWltYWdlZGV2aWNlIHRvIGJlIGF2YWlsYWJsZSBmcm9tCi0rICAgICAqIFBvc3RTY3JpcHQsIHNvIGluIGhlcmUganVzdCB6ZXJvIHRoZSBkZXZpY2UgbWVtb3J5LCB3aGljaCBtZWFucyB0aGF0Ci0rICAgICAqIHRoZSBmaW5hbGlzZSByb3V0aW5lIHdvbid0IGhhdmUgYSBwcm9ibGVtLgotKyAgICAgKi8KLSsgICAgbWVtc2V0KHBuZXcsIDB4MDAsIHN0X2RldmljZV9tZW1vcnkuc3NpemUpOwotICAgICBjb2RlID0gZ3NfaW5pdGlhbGl6ZV93b3JkaW1hZ2VkZXZpY2UocG5ldywgcG1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycywgbnVtX2NvbG9ycywgd29yZF9vcmllbnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfZGV2aWNlLCBtZW0pOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjhmMjA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNmY3NDljMGM0NGU3YjllMDk3MzdiOWYyOWVkZjI5OTI1YTM0ZjBjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDUgT2N0IDIwMTYgMDk6NTk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzE3OTogUmVmZXJlbmNlIGNvdW50IGRldmljZSBpY2MgcHJvZmlsZQotCi13aGVuIGNvcHlpbmcgYSBkZXZpY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc4Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9nc2RldmljZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL2dzZGV2aWNlLmMgYi9iYXNlL2dzZGV2aWNlLmMKLWluZGV4IDc3ODEwNmYuLmFlYTk4NmEgMTAwNjQ0Ci0tLS0gYS9iYXNlL2dzZGV2aWNlLmMKLSsrKyBiL2Jhc2UvZ3NkZXZpY2UuYwotQEAgLTYxNCw2ICs2MTQsNyBAQCBneF9kZXZpY2VfaW5pdChneF9kZXZpY2UgKiBkZXYsIGNvbnN0IGd4X2RldmljZSAqIHByb3RvLCBnc19tZW1vcnlfdCAqIG1lbSwKLSAgICAgZGV2LT5tZW1vcnkgPSBtZW07Ci0gICAgIGRldi0+cmV0YWluZWQgPSAhaW50ZXJuYWw7Ci0gICAgIHJjX2luaXQoZGV2LCBtZW0sIChpbnRlcm5hbCA/IDAgOiAxKSk7Ci0rICAgIHJjX2luY3JlbWVudChkZXYtPmljY19zdHJ1Y3QpOwotIH0KLSAKLSB2b2lkCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTMwZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA4NzVhMDA5NWYzNzYyNmE3MjFjN2ZmNTdkNjA2YTBmOTVhZjAzOTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDUgT2N0IDIwMTYgMTA6MTA6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRFNDIHBhcnNlciAtIHZhbGlkYXRlIHBhcmFtZXRlcnMKLQotQnVnICM2OTcxOTAgIi5pbml0aWFsaXplX2RzY19wYXJzZXIgZG9lc24ndCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVyIGlzIGEgZGljdCB0eXBlIGJlZm9yZSB1c2luZyBpdC4iCi0KLVJlZ2FyZGxlc3Mgb2YgYW55IHNlY3VyaXR5IGltcGxpY2F0aW9ucywgaXRzIHNpbXBseSB3cm9uZyBmb3IgYSBQb3N0U2NyaXB0Ci1vcGVyYXRvciBub3QgdG8gdmFsaWRhdGUgaXRzIHBhcmFtZXRlcihzKS4KLQotTm8gZGlmZmVyZW5jZXMgZXhwZWN0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtNzk3OQotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBzaS96ZHNjcGFycy5jIHwgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wc2kvemRzY3BhcnMuYyBiL3BzaS96ZHNjcGFycy5jCi1pbmRleCBjMDVlMTU0Li45YjRiNjA1IDEwMDY0NAotLS0tIGEvcHNpL3pkc2NwYXJzLmMKLSsrKyBiL3BzaS96ZHNjcGFycy5jCi1AQCAtMTUwLDExICsxNTAsMTYgQEAgemluaXRpYWxpemVfZHNjX3BhcnNlcihpX2N0eF90ICppX2N0eF9wKQotICAgICByZWYgbG9jYWxfcmVmOwotICAgICBpbnQgY29kZTsKLSAgICAgb3NfcHRyIGNvbnN0IG9wID0gb3NwOwotLSAgICBkaWN0ICogY29uc3QgcGRpY3QgPSBvcC0+dmFsdWUucGRpY3Q7Ci0tICAgIGdzX21lbW9yeV90ICogY29uc3QgbWVtID0gKGdzX21lbW9yeV90ICopZGljdF9tZW1vcnkocGRpY3QpOwotLSAgICBkc2NfZGF0YV90ICogY29uc3QgZGF0YSA9Ci0tICAgICAgICBnc19hbGxvY19zdHJ1Y3QobWVtLCBkc2NfZGF0YV90LCAmc3RfZHNjX2RhdGFfdCwgIkRTQyBwYXJzZXIgaW5pdCIpOwotKyAgICBkaWN0ICpwZGljdDsKLSsgICAgZ3NfbWVtb3J5X3QgKm1lbTsKLSsgICAgZHNjX2RhdGFfdCAqZGF0YTsKLSAKLSsgICAgY2hlY2tfcmVhZF90eXBlKCpvcCwgdF9kaWN0aW9uYXJ5KTsKLSsKLSsgICAgcGRpY3QgPSBvcC0+dmFsdWUucGRpY3Q7Ci0rICAgIG1lbSA9IChnc19tZW1vcnlfdCAqKWRpY3RfbWVtb3J5KHBkaWN0KTsKLSsKLSsgICAgZGF0YSA9IGdzX2FsbG9jX3N0cnVjdChtZW0sIGRzY19kYXRhX3QsICZzdF9kc2NfZGF0YV90LCAiRFNDIHBhcnNlciBpbml0Iik7Ci0gICAgIGlmICghZGF0YSkKLSAgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9WTWVycm9yKTsKLSAgICAgZGF0YS0+ZG9jdW1lbnRfbGV2ZWwgPSAwOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi04NjAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi04NjAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTg1NjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtODYwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZjVjNzU1NWMzMDM5M2U2NGVjMWY1YWIwZGZhZTViNTViM2IzZmM3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBTYXQsIDggT2N0IDIwMTYgMTY6MTA6MjcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzIwMzogY2hlY2sgZm9yIHN1ZmZpY2llbnQgcGFyYW1zIGluIC5zZXRoYWxmdG9uZTUKLQotYW5kIHBhcmFtIHR5cGVzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtODYwMgotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBzaS96aHQyLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BzaS96aHQyLmMgYi9wc2kvemh0Mi5jCi1pbmRleCBmYjRhMjY0Li5kZmEyN2E0IDEwMDY0NAotLS0tIGEvcHNpL3podDIuYwotKysrIGIvcHNpL3podDIuYwotQEAgLTgyLDE0ICs4MiwyMiBAQCB6c2V0aGFsZnRvbmU1KGlfY3R4X3QgKmlfY3R4X3ApCi0gICAgIGdzX21lbW9yeV90ICptZW07Ci0gICAgIHVpbnQgZWRlcHRoID0gcmVmX3N0YWNrX2NvdW50KCZlX3N0YWNrKTsKLSAgICAgaW50IG5wb3AgPSAyOwotLSAgICBpbnQgZGljdF9lbnVtID0gZGljdF9maXJzdChvcCk7Ci0rICAgIGludCBkaWN0X2VudW07Ci0gICAgIHJlZiBydmFsdWVbMl07Ci0gICAgIGludCBjbmFtZSwgY29sb3JhbnRfbnVtYmVyOwotICAgICBieXRlICogcG5hbWU7Ci0gICAgIHVpbnQgbmFtZV9zaXplOwotICAgICBpbnQgaGFsZnRvbmV0eXBlLCB0eXBlID0gMDsKLSAgICAgZ3NfZ3N0YXRlICpwZ3MgPSBpZ3M7Ci0tICAgIGludCBzcGFjZV9pbmRleCA9IHJfc3BhY2VfaW5kZXgob3AgLSAxKTsKLSsgICAgaW50IHNwYWNlX2luZGV4OwotKwotKyAgICBpZiAocmVmX3N0YWNrX2NvdW50KCZvX3N0YWNrKSA8IDIpCi0rICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3Jfc3RhY2t1bmRlcmZsb3cpOwotKyAgICBjaGVja190eXBlKCpvcCwgdF9kaWN0aW9uYXJ5KTsKLSsgICAgY2hlY2tfdHlwZSgqKG9wIC0gMSksIHRfZGljdGlvbmFyeSk7Ci0rCi0rICAgIGRpY3RfZW51bSA9IGRpY3RfZmlyc3Qob3ApOwotKyAgICBzcGFjZV9pbmRleCA9IHJfc3BhY2VfaW5kZXgob3AgLSAxKTsKLSAKLSAgICAgbWVtID0gKGdzX21lbW9yeV90ICopIGlkbWVtb3J5LT5zcGFjZXNfaW5kZXhlZFtzcGFjZV9pbmRleF07Ci0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2gKaW5kZXggZDA4ODZjOS4uZTQwNjA4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzk3NS5wYXRjaApAQCAtMSw2ICsxLDcgQEAKLUZyb20gNWU1N2U0ODMyOThkYWU4YjhkNGVjOWFhYjM3YTUyNjczNmFjMmU5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNoYWlsZXNoIE1pc3RyeSA8c2hhaWxlc2gubWlzdHJ5QGhvdG1haWwuY28udWs+Ci1EYXRlOiBXZWQsIDI2IEFwciAyMDE3IDIyOjEyOjE0ICswMTAwCitGcm9tIGIzOWJlMTAxOWI0YWNjMWFhNTBjNjAyNjQ2M2M1NDMzMzJlOTVhMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjoxODoxNCArMDMwMAorCiBTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTc2OTM6IFByZXZlbnQgU0VHViBkdWUgdG8gaW50ZWdlciBvdmVyZmxvdy4KIAogV2hpbGUgYnVpbGRpbmcgYSBIdWZmbWFuIHRhYmxlLCB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgd2VyZSBzdXNjZXB0aWJsZQpAQCAtMTIsMTUgKzEzLDE3IEBACiBDVkU6IENWRS0yMDE3LTc5NzUKIAogU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBqYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jIGIvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jCi1pbmRleCA1MTFlNDYxLi5iNDE4OWExIDEwMDY0NAorQ29udGVudHMgb2YgdGhpcyBwYXRjaCB3ZXJlIGV4dHJhY3RlZCBmcm9tIGEgbGFyZ2VyIHBhdGNoIHdoaWNoIGFkZHJlc3NlZAordHdvIENWRSdzLiAgVGhlIGNvbnRleHQgKGxvY2F0aW9uIG9mIHspIHdhcyBhbHNvIG1vZGlmaWVkIHRvIGFwcGx5IHRvCitnaG9zdHNjcmlwdCA5LjIxLgorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKwogLS0tIGEvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jCiArKysgYi9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKLUBAIC00MjEsOCArNDIxLDggQEAgamJpZzJfYnVpbGRfaHVmZm1hbl90YWJsZShKYmlnMkN0eCAqY3R4LCBjb25zdCBKYmlnMkh1ZmZtYW5QYXJhbXMgKnBhcmFtcykKK0BAIC00MjEsOCArNDIxLDggQEAgamJpZzJfYnVpbGRfaHVmZm1hbl90YWJsZShKYmlnMkN0eCAqY3R4LAogIAogICAgICAgICAgICAgIGlmIChQUkVGTEVOID09IENVUkxFTikgewogICAgICAgICAgICAgICAgICBpbnQgUkFOR0VMRU4gPSBsaW5lc1tDVVJURU1QXS5SQU5HRUxFTjsKQEAgLTMxLDYgKzM0LDQgQEAKICAgICAgICAgICAgICAgICAgYnl0ZSBlZmxhZ3MgPSAwOwogIAogICAgICAgICAgICAgICAgICBpZiAoZW5kX2ogPiBtYXhfaikgewotLS0gCi0yLjEwLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDc5NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorUmVtb3ZlIGhhcmRjb2RlIHBhdGggcmVmZXIgdG8gaG9zdCB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvZGV2aWNlcy9kZXZzLm1hayBiL2RldmljZXMvZGV2cy5tYWsKK2luZGV4IDMwNzBkMmUuLmRmNjYzZjAgMTAwNjQ0CistLS0gYS9kZXZpY2VzL2RldnMubWFrCisrKysgYi9kZXZpY2VzL2RldnMubWFrCitAQCAtNTQ2LDcgKzU0Niw3IEBAICQoREVWT0JKKWdkZXZ4YWx0LiQoT0JKKSA6ICQoREVWU1JDKWdkZXZ4YWx0LmMgJChHREVWWCkgJChtYXRoX19oKSAkKG1lbW9yeV9faClcCisgIyMjIE5PTiBQT1JUQUJMRSwgT05MWSBVTklYIFdJVEggR0NDIFNVUFBPUlQKKyAKKyAkKERFVk9CSilYMTEuc28gOiAkKHgxMWFsdF8pICQoeDExXykgJChERVZTX01BSykgJChNQUtFRElSUykKKy0JJChDQ0xEKSAkKExERkxBR1MpIC1zaGFyZWQgLW8gJChERVZPQkopWDExLnNvICQoeDExYWx0XykgJCh4MTFfKSAtTC91c3IvWDExUjYvbGliIC1sWHQgLWxTTSAtbElDRSAtbFhleHQgLWxYMTEgJChYTElCRElSUykKKysJJChDQ0xEKSAkKExERkxBR1MpIC1zaGFyZWQgLW8gJChERVZPQkopWDExLnNvICQoeDExYWx0XykgJCh4MTFfKSAtbFh0IC1sU00gLWxJQ0UgLWxYZXh0IC1sWDExICQoWExJQkRJUlMpCisgCisgIyMjIyMjIC0tLS0tLS0tLS0tLS0tLSBNZW1vcnktYnVmZmVyZWQgcHJpbnRlciBkZXZpY2VzIC0tLS0tLS0tLS0tLS0tLSAjIyMjIyMKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MDkxOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1KdXN0IHVzZSBjb21tYW5kcyBwcm92aWRlZCBieSBnaG9zdHNjcmlwdC1uYXRpdmUsIHByZXZlbnRpbmcgcmVjb21waWxlIHRoZW0gd2hlbgotY29tcGlsZSBnaG9zdHNjcmlwdC4KLVdheSB0byBlbmFibGUgY3Jvc3MgY29tcGlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEthbmcgS2FpIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0KLVJlYmFzZSB0byA5LjE5Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYXNlL3VuaXgtYXV4Lm1hayB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNlL3VuaXgtYXV4Lm1hayBiL2Jhc2UvdW5peC1hdXgubWFrCi1pbmRleCAwMTEwNjY3Li5lMmViMWExIDEwMDY0NAotLS0tIGEvYmFzZS91bml4LWF1eC5tYWsKLSsrKyBiL2Jhc2UvdW5peC1hdXgubWFrCi1AQCAtNzEsNDQgKzcxLDQ0IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi5jICQoc3RkaW9fX2gpICQodGltZV9faCkgJChBSylcCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBdXhpbGlhcnkgcHJvZ3JhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKLSAKLS0kKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKLS0KLSsjJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIE9uIHRoZSBSUy82MDAwIChhdCBsZWFzdCksIGNvbXBpbGluZyBnZW5hcmNoLmMgd2l0aCBnY2Mgd2l0aCAtTwotICMgcHJvZHVjZXMgYSBidWdneSBleGVjdXRhYmxlLgotLSQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCi0tCi0tJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKLS0KLS0kKEdFTkRFVl9YRSk6ICQoR0xTUkMpZ2VuZGV2LmMgJChBSykgJChHRU5ERVZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKLS0KLS0kKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCi0tCi0rIyQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkRFVl9YRSk6ICQoR0xTUkMpZ2VuZGV2LmMgJChBSykgJChHRU5ERVZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5Ci0gIyB3aGljaCBtZWFucyB0aGF0IHRoZSBta3JvbWZzIGJ1aWxkIGNhbid0IGZpbmQgdGhlIHpsaWIgc291cmNlIGl0IG5lZWRzLgotICMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KLS1NS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCi0tICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAotLSAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotLQotLSQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKLS0KLSsjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKLSsjCi0gIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKLS1NS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCi0tICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLS0gJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0tICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCi0tCi0tJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQotLQotLSQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCi0rI01LUk9NRlNfT0JKU18xPSQoQVVYKWdzY2RlZnMuJChPQkopIFwKLSsjICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLSsjICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAotKyMgJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikKLSsjCi0rIyQoTUtST01GU19YRSlfMTogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18xKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKLSAKLSAjIFF1ZXJ5IHRoZSBlbnZpcm9ubWVudCB0byBjb25zdHJ1Y3QgZ2NvbmZpZ18uaC4KLSAjIFRoZXNlIGFyZSBhbGwgZGVmaW5lZCBjb25kaXRpb25hbGx5IChleGNlcHQgdGhlIEphc1BFUiBvbmUpLCBzbyB0aGF0Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKaW5kZXggOGZhMmM0MC4uM2VjMzk1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIDIwMTUgMDA6NDA6MjIgLTA4MDAgIFN1YmplY3Q6IFtQQVRDSF0gY29udHJpYi5tYWs6IGZpeCBmb3IgcGFyYWxsZWwgYnVpbGQKIAogU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjb250cmliL2NvbnRyaWIubWFrIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZjNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK2dob3N0c2NyaXB0LW5hdGl2ZTpmaXggZGlzYWJsZS1zeXN0ZW0tbGlidGlmZgorCitNb2RpZnkgY29uZmlndXJlIHRvIGFkZCB0aGUgY2hlY2sgdG8gbWFrZSBzdXJlCitnaG9zdHNjcmlwIGNvdWxkIHdvcmsgd2hpbGUgc3lzdGVtLWxpYnRpZmYgaXMKK2Rpc2FibGVkLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZWQgdG8gYXBwbHkgdG8gZ2hvc3RzY3JpcHQgOS4yMS4KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworCisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTI1OSw2ICsxMjU5LDcgQEAgY2FzZSAieCR3aXRoX3N5c3RlbV9saWJ0aWZmIiBpbgorIGVzYWMKKyAKKyBpZiB0ZXN0IHgiJFNIQVJFX0xJQlRJRkYiID0geCIwIiA7IHRoZW4KKysgICAgaWYgdGVzdCAtZSAkTElCVElGRkRJUi9jb25maWd1cmU7IHRoZW4KKyAgICAgICBlY2hvICJSdW5uaW5nIGxpYnRpZmYgY29uZmlndXJlIHNjcmlwdC4uLiIKKyAgICAgICBvbGRkaXI9YHB3ZGAKKyAgICAgICBpZiAhIHRlc3QgLWQgIiRMSUJUSUZGQ09ORkRJUiIgOyB0aGVuCitAQCAtMTI3Miw2ICsxMjczLDEwIEBAIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgorICAgICAgIGNkICIkb2xkZGlyIgorICAgICAgIGVjaG8KKyAgICAgICBlY2hvICJDb250aW51aW5nIHdpdGggR2hvc3RzY3JpcHQgY29uZmlndXJhdGlvbi4uLiIKKysgICAgZWxzZQorKyAgICAgIEFDX01TR19OT1RJQ0UoW0NvdWxkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgbGlidGlmZi4KKytEaXNhYmxpbmcgdGlmZiBvdXRwdXQgZGV2aWNlcy5dKQorKyAgICBmaQorIGZpCisgCisgQUNfU1VCU1QoU0hBUkVfTElCVElGRikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjNmQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0p1c3QgdXNlIGNvbW1hbmRzIHByb3ZpZGVkIGJ5IGdob3N0c2NyaXB0LW5hdGl2ZSwgcHJldmVudGluZyByZWNvbXBpbGUgdGhlbSB3aGVuCitjb21waWxlIGdob3N0c2NyaXB0LgorV2F5IHRvIGVuYWJsZSBjcm9zcyBjb21waWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDkuMTkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDkuMjEKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvYmFzZS91bml4LWF1eC5tYWsKKysrKyBiL2Jhc2UvdW5peC1hdXgubWFrCitAQCAtNjYsNDUgKzY2LDQ1IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi4KKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEF1eGlsaWFyeSBwcm9ncmFtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIworIAorLSQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQorLQorKyMkKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChFQ0hPR1NfWEUpICQoR0xTUkMpZWNob2dzLmMgJChBVVhFWFRSQUxJQlMpCisrIworICMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCisgIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCistJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKKy0KKy0kKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQorLQorLSQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQorLQorLSQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKKy0KKysjJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCisrIworICMgVG8gZ2V0IEdTIHRvIHVzZSB0aGUgc3lzdGVtIHpsaWIsIHlvdSByZW1vdmUvaGlkZSB0aGUgZ3MvemxpYiBkaXJlY3RvcnkKKyAjIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG1rcm9tZnMgYnVpbGQgY2FuJ3QgZmluZCB0aGUgemxpYiBzb3VyY2UgaXQgbmVlZHMuCisgIyBTbyBpdCdzIHNwbGl0IGludG8gdHdvIHRhcmdldHMsIG9uZSB1c2luZyB0aGUgemxpYiBzb3VyY2UgZGlyZWN0bHkuLi4uLgorLU1LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKy0gJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCistICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopICQoQVVYKW1lbWVudG8uJChPQkopCistCistJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzAgJChNS1JPTUZTX09CSlNfMCkgJChBVVhFWFRSQUxJQlMpCistCisrI01LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKysjICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAorKyMgJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKKysjCisrIyQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKKysjCisgIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKKy1NS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCistICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKy0gJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCistICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCistCistJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCistCistJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKKy0KKysjTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAorKyMgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorKyMgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCisrIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQorKyMKKysjJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOT1BUQVVYKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCisrIworICMgUXVlcnkgdGhlIGVudmlyb25tZW50IHRvIGNvbnN0cnVjdCBnY29uZmlnXy5oLgorICMgVGhlc2UgYXJlIGFsbCBkZWZpbmVkIGNvbmRpdGlvbmFsbHkgKGV4Y2VwdCB0aGUgSmFzUEVSIG9uZSksIHNvIHRoYXQKKyAjIHRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZ3MgZnJvbSB0aGUgY29uZmlndXJlIHNjcmlwdC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNTgxMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1naG9zdHNjcmlwdC1uYXRpdmU6Zml4IGRpc2FibGUtc3lzdGVtLWxpYnRpZmYKLQotTW9kaWZ5IGNvbmZpZ3VyZSB0byBhZGQgdGhlIGNoZWNrIHRvIG1ha2Ugc3VyZQotZ2hvc3RzY3JpcCBjb3VsZCB3b3JrIHdoaWxlIHN5c3RlbS1saWJ0aWZmIGlzCi1kaXNhYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNTUsNiArMTA1NSw3IEBAIERpc2FibGluZyB0aWZmIG91dHB1dCBkZXZpY2VzLl0pCi0gZXNhYwotIAotIGlmIHRlc3QgJFNIQVJFX0xJQlRJRkYgLWVxIDA7IHRoZW4KLSsgICAgaWYgdGVzdCAtZSAkTElCVElGRkRJUi9jb25maWd1cmU7IHRoZW4KLSAgICAgICBlY2hvCi0gICAgICAgZWNobyAiUnVubmluZyBsaWJ0aWZmIGNvbmZpZ3VyZSBzY3JpcHQuLi4iCi0gICAgICAgb2xkZGlyPWBwd2RgCi1AQCAtMTA2OSw2ICsxMDcwLDEwIEBAIGlmIHRlc3QgJFNIQVJFX0xJQlRJRkYgLWVxIDA7IHRoZW4KLSAgICAgICBjZCAiJG9sZGRpciIKLSAgICAgICBlY2hvCi0gICAgICAgZWNobyAiQ29udGludWluZyB3aXRoIEdob3N0c2NyaXB0IGNvbmZpZ3VyYXRpb24uLi4iCi0rICAgIGVsc2UKLSsgICAgICBBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBsb2NhbCBjb3B5IG9mIGxpYnRpZmYuCi0rRGlzYWJsaW5nIHRpZmYgb3V0cHV0IGRldmljZXMuXSkKLSsgICAgZmkKLSBmaQotIAotIEFDX1NVQlNUKFNIQVJFX0xJQlRJRkYpCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2VhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorZ2hvc3RzY3JpcHQ6IGFsbG93IGRpcmVjdG9yaWVzIHRvIGJlIGNyZWF0ZWQgbW9yZSB0aGFuIG9uY2UKKworV2hlbiBkb2luZyBwYXJhbGxlbCBidWlsZHMsIHdlIG1pZ2h0IHRyeSB0byBjcmVhdGUgZGlyZWN0b3JpZXMKK21vcmUgdGhhbiBvbmNlLiAgVGhpcyBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKy0tLSBhL2Jhc2UvdW5peC1lbmQubWFrCisrKysgYi9iYXNlL3VuaXgtZW5kLm1haworQEAgLTE3LDE1ICsxNywxNCBAQAorIFVOSVhfRU5EX01BSz0kKEdMU1JDKXVuaXgtZW5kLm1hayAkKFRPUF9NQUtFRklMRVMpCisgIyBEZWZpbmUgdGhlIHJ1bGUgZm9yIGJ1aWxkaW5nIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLgorIGRpcmVjdG9yaWVzOiAkKFVOSVhfRU5EX01BSykKKy0JQGlmIHRlc3QgIiQoQklORElSKSIgICAgIT0gIiIgLWEgISAtZCAkKEJJTkRJUik7ICAgICAgICB0aGVuIG1rZGlyICQoQklORElSKTsgICAgICAgIGZpCistCUBpZiB0ZXN0ICIkKEdMR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChHTEdFTkRJUik7ICAgICAgdGhlbiBta2RpciAkKEdMR0VORElSKTsgICAgICBmaQorLQlAaWYgdGVzdCAiJChHTE9CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoR0xPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgJChHTE9CSkRJUik7ICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoREVWR0VORElSKSIgIT0gIiIgLWEgISAtZCAkKERFVkdFTkRJUik7ICAgICB0aGVuIG1rZGlyICQoREVWR0VORElSKTsgICAgIGZpCistCUBpZiB0ZXN0ICIkKERFVk9CSkRJUikiICE9ICIiIC1hICEgLWQgJChERVZPQkpESVIpOyAgICAgdGhlbiBta2RpciAkKERFVk9CSkRJUik7ICAgICBmaQorLQlAaWYgdGVzdCAiJChBVVhESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQVVYRElSKTsgICAgICAgIHRoZW4gbWtkaXIgJChBVVhESVIpOyAgICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoUFNHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTR0VORElSKTsgICAgICB0aGVuIG1rZGlyICQoUFNHRU5ESVIpOyAgICAgIGZpCistCUBpZiB0ZXN0ICIkKFBTR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChQU0dFTkRJUikvY3VwczsgdGhlbiBta2RpciAkKFBTR0VORElSKS9jdXBzOyBmaQorLQlAaWYgdGVzdCAiJChQU09CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoUFNPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgJChQU09CSkRJUik7ICAgICAgZmkKKysJQGlmIHRlc3QgIiQoQklORElSKSIgICAgIT0gIiIgLWEgISAtZCAkKEJJTkRJUik7ICAgICAgICB0aGVuIG1rZGlyIC1wICQoQklORElSKTsgICAgICAgIGZpCisrCUBpZiB0ZXN0ICIkKEdMR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChHTEdFTkRJUik7ICAgICAgdGhlbiBta2RpciAtcCAkKEdMR0VORElSKTsgICAgICBmaQorKwlAaWYgdGVzdCAiJChHTE9CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoR0xPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgLXAgJChHTE9CSkRJUik7ICAgICAgZmkKKysJQGlmIHRlc3QgIiQoREVWR0VORElSKSIgIT0gIiIgLWEgISAtZCAkKERFVkdFTkRJUik7ICAgICB0aGVuIG1rZGlyIC1wICQoREVWR0VORElSKTsgICAgIGZpCisrCUBpZiB0ZXN0ICIkKERFVk9CSkRJUikiICE9ICIiIC1hICEgLWQgJChERVZPQkpESVIpOyAgICAgdGhlbiBta2RpciAtcCAkKERFVk9CSkRJUik7ICAgICBmaQorKwlAaWYgdGVzdCAiJChBVVhESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQVVYRElSKTsgICAgICAgIHRoZW4gbWtkaXIgLXAgJChBVVhESVIpOyAgICAgICAgZmkKKysJQGlmIHRlc3QgIiQoUFNHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTR0VORElSKS9jdXBzOyB0aGVuIG1rZGlyIC1wICQoUFNHRU5ESVIpL2N1cHM7IGZpCisrCUBpZiB0ZXN0ICIkKFBTT0JKRElSKSIgICE9ICIiIC1hICEgLWQgJChQU09CSkRJUik7ICAgICAgdGhlbiBta2RpciAtcCAkKFBTT0JKRElSKTsgICAgICBmaQorIAorIAorIGdzOiAuZ3NzdWJ0YXJnZXQgJChVTklYX0VORF9NQUspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiODQ5ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wbmdfbWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotZ2hvc3RzY3JpcHQ6IGFkZCBkZXBlbmRlbmN5IGZvciBwbmdsaWJjb25mLmgKLQotV2hlbiB1c2luZyBwYXJhbGxlbCBtYWtlIGpvYnMsIHdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0Ci1wbmdsaWJjb25mLmggaXMgY3JlYXRlZCBiZWZvcmUgd2UgdHJ5IHRvIHJlZmVyZW5jZSBpdCwKLXNvIGFkZCBhIHJ1bGUgdG8gcG5nLm1hay4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotUmViYXNlIHRvIDkuMTkKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvcG5nLm1hayB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL3BuZy5tYWsgYi9iYXNlL3BuZy5tYWsKLWluZGV4IGZlNWM2ZTIuLjhhYmI1M2EgMTAwNjQ0Ci0tLS0gYS9iYXNlL3BuZy5tYWsKLSsrKyBiL2Jhc2UvcG5nLm1hawotQEAgLTc0LDYgKzc0LDggQEAgcG5nLmNsZWFuLW5vdC1jb25maWctY2xlYW4gOgotIAotIHBuZ2xpYmNvbmZfaD0kKFBOR0dFTkRJUikkKEQpcG5nbGliY29uZi5oCi0gCi0rJChNQUtFRElSUykgOiAkKHBuZ2xpYmNvbmZfaCkKLSsKLSBwbmcuY29uZmlnLWNsZWFuIDoKLSAJJChSTV8pICQocG5nbGliY29uZl9oKQotIAkkKFJNXykgJChQTkdHRU4pbHBnKi5kZXYKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ5NzAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAotYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCi1kb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCi1cCi1GdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCi1vbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKLWRvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgotCi1ERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MjAvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vcG5nX21hay5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSIKLQotU1JDX1VSSSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vYmphcmNoLmggXAotICAgICAgICAgICBmaWxlOi8vY3Vwcy1uby1nY3J5cHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIwNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDIxOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDIyMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy01OTUxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTg2MDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzk3NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNzk3OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MjE2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzM5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExNzE0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5M2M1OTg3Y2QzYWIzNDExMDhiZTFlYmJhYWRjMjRmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDliNjRiNDZlY2Y4OTA2ZGI1NGE5NGVjZjgzYWI5NzUzNGViZjk0NmY3NzBkM2MzZjI4M2NiNDY5Y2I2ZTE0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKLQotIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAotIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKLQotIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MwotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgotQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgb2JqCi0JbWtkaXIgLXAgc29vYmoKLQlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KLQkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAotCWZpCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKLQlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgotCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCi0JCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0JCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQotCQlkb25lCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLX0KLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgewotICAgIG1rZGlyIC1wIG9iagotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0gICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQotICAgIGRvbmUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5ODVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpAQCAtMCwwICsxLDEzNyBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTIxLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIwNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy01OTUxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc5NzUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTIxNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NjExLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTczOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTgzNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMTcxNC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZjIxMzI4MTc2MWQyNzUwZmNmMjc0NzZjNDA0ZDE3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmJjZWFkYmM0ZGRkZWI2ZjJlZWM5YzhiMTYyM2Q5NDVkMzU1Y2ExMWI4YjRkZjAzNTMzMmIyMTdkNThjZTg1IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAorICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKKworIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAorIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKKworIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAorIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MworIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgorQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJbWtkaXIgLXAgb2JqCisJbWtkaXIgLXAgc29vYmoKKwlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KKwkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAorCWZpCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKKwlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgorCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCisJCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQorICAgIGRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgZ2hvc3RzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydHMgImFyYyIKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYXJjKS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9maWxlcy9oZWxsb3dvcmxkLmdvIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9maWxlcy9oZWxsb3dvcmxkLmdvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjUzYzQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZmlsZXMvaGVsbG93b3JsZC5nbworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8vIFlvdSBjYW4gZWRpdCB0aGlzIGNvZGUhCi0vLyBDbGljayBoZXJlIGFuZCBzdGFydCB0eXBpbmcuCi0vLyB0YWtlbiBmcm9tIGh0dHBzOi8vZ29sYW5nLm9yZy8KLXBhY2thZ2UgbWFpbgotCi1pbXBvcnQgImZtdCIKLQotZnVuYyBtYWluKCkgewotCWZtdC5QcmludGxuKCJIZWxsbywg5LiW55WMIikKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28tZXhhbXBsZXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1leGFtcGxlcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MzI2ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1leGFtcGxlcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgcmVjaXBlIHRoYXQgY3Jvc3MtY29tcGlsZXMgYSBHbyBwcm9ncmFtLiIKLVNFQ1RJT04gPSAiZXhhbXBsZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dvbGFuZy5vcmcvIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWluaGVyaXQgZ28KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCmluZGV4IDkzMGM1N2QuLjIyMmZjOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgpAQCAtMSwxMyArMSwxOSBAQAotcmVxdWlyZSBnby1leGFtcGxlcy5pbmMKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSByZWNpcGUgdGhhdCBjcm9zcy1jb21waWxlcyBhIEdvIHByb2dyYW0uIgorU0VDVElPTiA9ICJleGFtcGxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ29sYW5nLm9yZy8iCiAKLVNSQ19VUkkgKz0gIiBcCi0gIGZpbGU6Ly9oZWxsb3dvcmxkLmdvIFwKLSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKLWRvX2NvbXBpbGUoKSB7Ci0JZ28gYnVpbGQgaGVsbG93b3JsZC5nbwotfQorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiNDY2OTVkODFkMWZhZTkwNWEyNzBmYjdkYjhhNGQxMWEzMzQ1NjJmZSIKIAotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9oZWxsb3dvcmxkICR7RH0ke2JpbmRpcn0vaGVsbG93b3JsZAorR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2V4YW1wbGUiCitHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9oZWxsbyIKKworaW5oZXJpdCBnbworCisjIFRoaXMgaXMganVzdCB0byBtYWtlIGNsZWFyIHdoZXJlIHRoaXMgZXhhbXBsZSBpcworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbXYgJHtEfSR7YmluZGlyfS9oZWxsbyAke0R9JHtiaW5kaXJ9LyR7QlBOfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MDAzZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBncGVyZi5pbmMKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzFmMWRiMzJmYjY1OThkNmE5M2U2ZTg4Nzk2YTg2MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY3MTEyYTIwNDQwN2U2MmRiYzMxMDY2NDdjZjgzOWVkNTQ0ZjNjZjVkMGYwNTIzYWFhMjUwODYyM2FhZDYzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyODIwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBncGVyZi5pbmMKKworCitTUkNfVVJJW21kNXN1bV0gPSAiOWUyNTFjMGE2MThhZDA4MjRiNTExMTdkNWQ5ZGI4N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg4NTQ2Yjk0NWJiYTRiNzBiNmEzYTYxNmU4MGI0YWI0NjZlM2YzMzAyNGEzNTJmYzIxOTgxMTJjZGJiM2FlMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5NDBkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MDA2ZDljODE0Mjc3YzFiZmM0Y2EyMmFmOTRiNTllZSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmEwN2MxNjE2YWRlYjljMzI2MmJlNTE3N2QxMGFkNGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJjODFkYjUwNTZlM2U4YzU5OTVmMGJiNWQwZDBlMWNhZDFmNmY0NWMzYjJmYzc3YjZlODE0MzVhZWQ0OGFiNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9tNC9pbml0Lm00Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCi0JCXJtZGlyICR7RH0ke2JpbmRpcn0vCi0JZmkKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViNmI5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MDA2ZDljODE0Mjc3YzFiZmM0Y2EyMmFmOTRiNTllZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmVjYTdiM2U3YzdmNGFhYjJiNDJlY2JmYzUxM2IwNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI2MjVjN2FiM2JiM2VlNzU3YjM5MjZhNWNmYThkOWUxYzM5OTFhZDI0NzA3YTgzZGRlOGE1ZWYyYmY3YTA3ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgorCisjIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAorYWNwYXRocyA9ICItSSAuL200IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9tNC9pbml0Lm00Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCisJCXJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZDVhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDVmNzEyNjIxODI5ZWQ4MWE3NTgwNzc0MzEyMjZhODZkZjM3ZmJjM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjowNTo1MCArMDMwMAorU3ViamVjdDogW1BBVENIXSBnemlwOiBwb3J0IHpkaWZmLCB6bGVzcyB0byBCdXN5Ym94CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgRGVueXMgWmFnb3J1aSAoQnVnIzI2MDg4KS4KKyogdGVzdHMvemRpZmY6IENoZWNrIHRoYXQgZGlmZiB1c2VzIFBPU0lYLWZvcm1hdCBvdXRwdXQuCisqIHpsZXNzLmluIChsZXNzX3ZlcnNpb24pOiBEb24ndCBleGl0IG1lcmVseSBiZWNhdXNlICdsZXNzIC1WJworZmFpbHM7IGluc3RlYWQsIGFzc3VtZSAnbGVzcycgaXMgY29tcGF0aWJsZSB3aXRoIGFuIG9sZCB2ZXJzaW9uIG9mCit0aGUgb3JpZ2luYWwgJ2xlc3MnLiAgQnVzeWJveCAnbGVzcyAtVicgZmFpbHMsIGJ1dCBhcHBhcmVudGx5IGl0cworJ2xlc3MnIHdvcmtzIGFueXdheSBzb21laG93LgorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorLS0tCisgdGVzdHMvemRpZmYgfCA0ICsrKy0KKyB6bGVzcy5pbiAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3pkaWZmIGIvdGVzdHMvemRpZmYKK2luZGV4IDBiYjdjN2QuLjljZDRmZDQgMTAwNzU1CistLS0gYS90ZXN0cy96ZGlmZgorKysrIGIvdGVzdHMvemRpZmYKK0BAIC0yMiw3ICsyMiw2IEBACisgCisgZWNobyBhID4gYSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KKyBlY2hvIGIgPiBiIHx8IGZyYW1ld29ya19mYWlsdXJlXworLWd6aXAgYSBiIHx8IGZyYW1ld29ya19mYWlsdXJlXworIAorIGNhdCA8PEVPRiA+IGV4cAorIDFjMQorQEAgLTMxLDcgKzMwLDEwIEBAIGNhdCA8PEVPRiA+IGV4cAorID4gYgorIEVPRgorIAorK2RpZmYgYSBiIHwgZGlmZiBleHAgLSB8fCBza2lwXyAiZGlmZiBvdXRwdXQgZm9ybWF0IGlzIGluY29tcGF0aWJsZSB3aXRoIFBPU0lYIgorKworIGZhaWw9MAorK2d6aXAgYSBiIHx8IGZhaWw9MQorIHpkaWZmIGEuZ3ogYi5neiA+IG91dCAyPiYxCisgdGVzdCAkPyA9IDEgfHwgZmFpbD0xCisgCitkaWZmIC0tZ2l0IGEvemxlc3MuaW4gYi96bGVzcy5pbgoraW5kZXggZTYzNGFmNi4uOTc1OWFlNiAxMDA2NDQKKy0tLSBhL3psZXNzLmluCisrKysgYi96bGVzcy5pbgorQEAgLTQ3LDcgKzQ3LDcgQEAgaWYgdGVzdCAiJHtMRVNTTUVUQUNIQVJTK3NldH0iICE9IHNldDsgdGhlbgorICAgZXhwb3J0IExFU1NNRVRBQ0hBUlMKKyBmaQorIAorLWxlc3NfdmVyc2lvbj1gbGVzcyAtVmAgfHwgZXhpdAorK2xlc3NfdmVyc2lvbj1gbGVzcyAtViAyPi9kZXYvbnVsbGAKKyBjYXNlICRsZXNzX3ZlcnNpb24gaW4KKyBsZXNzJyAnNDVbMS05XSogfCBcCisgbGVzcycgJzRbNi05XVswLTldKiB8IFwKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y3YzY0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSw2IEBACisjIS9iaW4vc2gKKworY2Qgc3JjL3Rlc3RzCisKK21ha2UgY2hlY2sKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiCmluZGV4IDExYmU4NDYuLmQwOTMyMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKQEAgLTIsNyArMiw5IEBACiAKIExJQ0VOU0UgPSAiR1BMdjMrIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCkBAIC0xMiw2ICsxNCwyNiBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAoraW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKKwljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cworCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKKyAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCisgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQorfQorCiBTUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwMDkyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCi1ERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKLWFuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgotTElDRU5TRV93aXBlciA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTkxMGE4YTQyYzk2MmQyMzg2MTljNzVmZGI3OGJkYjI0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCi0KLQotUEFDS0FHRVMgPSsgIndpcGVyIgotCi1GSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCi0KLVJERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGZlMGE3MWRiMDJmN2ZmYzYwMmQxNGE2OWY3NjZjZmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWFmYWQ4ODkxZWNiZTY0NGMyODNmN2Q3MjUxNTc2NjBlYmY4YmQ1YjRkOWQ2NzIzMmFmZDQ1ZjgzZDJkNWQ5MSIKLQotRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCi0JY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWZkYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaGRwYXJtLyIKK0RFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAorYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyIgorTElDRU5TRV8ke1BOfSA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCitMSUNFTlNFX3dpcGVyID0gIkdQTHYyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9NDk1ZDAzZTUwZGM2Yzg5ZDZhMzAxMDdhYjBkZjViMDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKKworCitQQUNLQUdFUyA9KyAid2lwZXIiCisKK0ZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKKworUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIHN0YXQiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTA1MzlkMGJmM2NjMjQ3MTgxNTk0NTgxZWRiZmI1MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzQyOWNkNDIzZTI3MWZhNTY1YmY1ODQ1OThmZDc1MWRkMmU3NzNiYjcxOTlhNTkyYjA2YjVhNjFjZWM0ZmI2IgorCitFWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJworCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKKwljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1NjI3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACithcnBpbmc6IGZpeCBhcnBpbmcgaGFuZyBpZiBTSUdBTFJNIGlzIGJsb2NrZWQKKworVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkgY2FuIHByZXZlbnQKK3JlY3Zmcm9tKCkgZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlIGluaGVyaXRlZCBwcm9jbWFzayBpcworYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0IGlzIHJlY2VpdmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1JlcG9ydGVkLWJ5OiBSdWkgUHJpb3IgPHJwcmlvckBkY2MuZmMudXAucHQ+CitSSC1CdWd6aWxsYTogIzEwODU5NzEKK1NpZ25lZC1vZmYtYnk6IEphbiBTeW5hY2VrIDxqc3luYWNla0ByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvYXJwaW5nLmMub3JpZyBiL2FycGluZy5jCitpbmRleCAzNTQwOGMxLi4yMDk4MTU5IDEwMDY0NAorLS0tIGEvYXJwaW5nLmMub3JpZworKysrIGIvYXJwaW5nLmMKK0BAIC0xMjE1LDE2ICsxMjE1LDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJc29ja2xlbl90IGFsZW4gPSBzaXplb2YoZnJvbSk7CisgCQlpbnQgY2M7CisgCisrCQlzaWdlbXB0eXNldCgmc3NldCk7CisrCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOworKwkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOworKwkJLyogVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkKKysJCSAqIGNhbiBwcmV2ZW50IHJlY3Zmcm9tIGZyb20gYmxvY2tpbmcgZm9yZXZlciBpbiBjYXNlIHRoZQorKwkJICogaW5oZXJpdGVkIHByb2NtYXNrIGlzIGJsb2NraW5nIFNJR0FMUk0gYW5kIG5vIHBhY2tldAorKwkJICogaXMgcmVjZWl2ZWQuICovCisrCQlzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsICZvc3NldCk7CisrCisgCQlpZiAoKGNjID0gcmVjdmZyb20ocywgcGFja2V0LCBzaXplb2YocGFja2V0KSwgMCwKKyAJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmYWxlbikpIDwgMCkgeworIAkJCXBlcnJvcigiYXJwaW5nOiByZWN2ZnJvbSIpOworIAkJCWNvbnRpbnVlOworIAkJfQorIAorLQkJc2lnZW1wdHlzZXQoJnNzZXQpOworLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdBTFJNKTsKKy0JCXNpZ2FkZHNldCgmc3NldCwgU0lHSU5UKTsKKy0JCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsICZvc3NldCk7CisrCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzc2V0LCBOVUxMKTsKKyAJCXJlY3ZfcGFjayhwYWNrZXQsIGNjLCAoc3RydWN0IHNvY2thZGRyX2xsICopJmZyb20pOworIAkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZvc3NldCwgTlVMTCk7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgppbmRleCAwZDRkZDFiLi40NmRlNmZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNTEyMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCkBAIC0yMCw2ICsyMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9uc2dtbHMtcGF0aC1maXgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiOGFhYTczOTVmMjdkZmY5ZjU3YWUwMTZkNGJjNzUzY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMS1hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYy1tYWtlLV9mc29iai1mdW5jdGlvbnMtbW9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDEtYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMtbWFrZS1fZnNvYmotZnVuY3Rpb25zLW1vci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxMWE3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMS1hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYy1tYWtlLV9mc29iai1mdW5jdGlvbnMtbW9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLUZyb20gOTA4ODFkMjRkM2Y2ZDVmYjIwN2U5N2RmM2I5MWJiZWE4NTk4ZTg0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBNYXR1c2thIDxtYXJ0aW5AbWF0dXNrYS5vcmc+Ci1EYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDE2OjQ3OjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBhcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYzogbWFrZSAqX2Zzb2JqIGZ1bmN0aW9ucyBtb3JlCi0gcmVhZGFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkCi0KLVNpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyB8IDEyMSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLWluZGV4IDE3YzIzYjAuLmQ3ODZiYzIgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1AQCAtMzM2LDYgKzMzNiw4IEBAIHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgewotIAotICNkZWZpbmUgSEZTX0JMT0NLUyhzKQkoKHMpID4+IDEyKQotIAotK3N0YXRpYyB2b2lkCWZzb2JqX2Vycm9yKGludCAqLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKiwgaW50LCBjb25zdCBjaGFyICosCi0rCQkgICAgY29uc3QgY2hhciAqKTsKLSBzdGF0aWMgaW50CWNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yX3N0cmluZywgaW50IGZsYWdzKTsKLSBzdGF0aWMgaW50CWNoZWNrX3N5bWxpbmtzKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7Ci0gc3RhdGljIGludAljcmVhdGVfZmlsZXN5c3RlbV9vYmplY3Qoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKTsKLUBAIC0yMDA1LDggKzIwMDcsOSBAQCByZXN0b3JlX2VudHJ5KHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCi0gCi0gCWlmIChlbikgewotIAkJLyogRXZlcnl0aGluZyBmYWlsZWQ7IGdpdmUgdXAgaGVyZS4gKi8KLS0JCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlbiwgIkNhbid0IGNyZWF0ZSAnJXMnIiwKLS0JCSAgICBhLT5uYW1lKTsKLSsJCWlmICgoJmEtPmFyY2hpdmUpLT5lcnJvciA9PSBOVUxMKQotKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlbiwgIkNhbid0IGNyZWF0ZSAnJXMnIiwKLSsJCQkgICAgYS0+bmFtZSk7Ci0gCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKLSAJfQotIAotQEAgLTIzODgsNiArMjM5MSwxNyBAQCBjdXJyZW50X2ZpeHVwKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEsIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQotIAlyZXR1cm4gKGEtPmN1cnJlbnRfZml4dXApOwotIH0KLSAKLSsvKiBFcnJvciBoZWxwZXIgZm9yIG5ldyAqX2Zzb2JqIGZ1bmN0aW9ucyAqLwotK3N0YXRpYyB2b2lkCi0rZnNvYmpfZXJyb3IoaW50ICphX2Vubywgc3RydWN0IGFyY2hpdmVfc3RyaW5nICphX2VzdHIsCi0rICAgIGludCBlcnIsIGNvbnN0IGNoYXIgKmVycnN0ciwgY29uc3QgY2hhciAqcGF0aCkKLSt7Ci0rCWlmIChhX2VubykKLSsJCSphX2VubyA9IGVycjsKLSsJaWYgKGFfZXN0cikKLSsJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoYV9lc3RyLCBlcnJzdHIsIHBhdGgpOwotK30KLSsKLSAvKgotICAqIFRPRE86IFNvbWVkYXksIGludGVncmF0ZSB0aGlzIHdpdGggdGhlIGRlZXAgZGlyIHN1cHBvcnQ7IHRoZXkgYm90aAotICAqIHNjYW4gdGhlIHBhdGggYW5kIGJvdGggY2FuIGJlIG9wdGltaXplZCBieSBjb21wYXJpbmcgYWdhaW5zdCBvdGhlcgotQEAgLTI0MDAsNyArMjQxNCw3IEBAIGN1cnJlbnRfZml4dXAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSwgY29uc3QgY2hhciAqcGF0aG5hbWUpCi0gICogQVJDSElWRV9PSyBpZiB0aGVyZSBhcmUgbm9uZSwgb3RoZXJ3aXNlIHB1dHMgYW4gZXJyb3IgaW4gZXJybXNnLgotICAqLwotIHN0YXRpYyBpbnQKLS1jaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcl9zdHJpbmcsIGludCBmbGFncykKLStjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwgaW50IGZsYWdzKQotIHsKLSAjaWYgIWRlZmluZWQoSEFWRV9MU1RBVCkKLSAJLyogUGxhdGZvcm0gZG9lc24ndCBoYXZlIGxzdGF0LCBzbyB3ZSBjYW4ndCBsb29rIGZvciBzeW1saW5rcy4gKi8KLUBAIC0yNDc0LDE5ICsyNDg4LDIwIEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJaWYgKGVycm5vID09IEVOT0VOVCkgewotIAkJCQlicmVhazsKLSAJCQl9IGVsc2UgewotLQkJCQkvKiBUcmVhdCBhbnkgb3RoZXIgZXJyb3IgYXMgZmF0YWwgLSBiZXN0IHRvIGJlIHBhcmFub2lkIGhlcmUKLS0JCQkJICogTm90ZTogVGhpcyBlZmZlY3RpdmVseSBkaXNhYmxlcyBkZWVwIGRpcmVjdG9yeQotLQkJCQkgKiBzdXBwb3J0IHdoZW4gc2VjdXJpdHkgY2hlY2tzIGFyZSBlbmFibGVkLgotLQkJCQkgKiBPdGhlcndpc2UsIHZlcnkgbG9uZyBwYXRobmFtZXMgdGhhdCB0cmlnZ2VyCi0tCQkJCSAqIGFuIGVycm9yIGhlcmUgY291bGQgZXZhZGUgdGhlIHNhbmRib3guCi0tCQkJCSAqIFRPRE86IFdlIGNvdWxkIGRvIGJldHRlciwgYnV0IGl0IHdvdWxkIHByb2JhYmx5Ci0tCQkJCSAqIHJlcXVpcmUgbWVyZ2luZyB0aGUgc3ltbGluayBjaGVja3Mgd2l0aCB0aGUKLS0JCQkJICogZGVlcC1kaXJlY3RvcnkgZWRpdGluZy4gKi8KLS0JCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IGVycm5vOwotLQkJCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCSJDb3VsZCBub3Qgc3RhdCAlcyIsCi0tCQkJCQkJCXBhdGgpOwotKwkJCQkvKgotKwkJCQkgKiBUcmVhdCBhbnkgb3RoZXIgZXJyb3IgYXMgZmF0YWwgLSBiZXN0IHRvIGJlCi0rCQkJCSAqIHBhcmFub2lkIGhlcmUuCi0rCQkJCSAqIE5vdGU6IFRoaXMgZWZmZWN0aXZlbHkgZGlzYWJsZXMgZGVlcAotKwkJCQkgKiBkaXJlY3Rvcnkgc3VwcG9ydCB3aGVuIHNlY3VyaXR5IGNoZWNrcyBhcmUKLSsJCQkJICogZW5hYmxlZC4gT3RoZXJ3aXNlLCB2ZXJ5IGxvbmcgcGF0aG5hbWVzIHRoYXQKLSsJCQkJICogdHJpZ2dlciBhbiBlcnJvciBoZXJlIGNvdWxkIGV2YWRlIHRoZQotKwkJCQkgKiBzYW5kYm94LgotKwkJCQkgKiBUT0RPOiBXZSBjb3VsZCBkbyBiZXR0ZXIsIGJ1dCBpdCB3b3VsZAotKwkJCQkgKiBwcm9iYWJseSByZXF1aXJlIG1lcmdpbmcgdGhlIHN5bWxpbmsgY2hlY2tzCi0rCQkJCSAqIHdpdGggdGhlIGRlZXAtZGlyZWN0b3J5IGVkaXRpbmcuCi0rCQkJCSAqLwotKwkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBlcnJubywKLSsJCQkJICAgICJDb3VsZCBub3Qgc3RhdCAlcyIsIHBhdGgpOwotIAkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJYnJlYWs7Ci0gCQkJfQotQEAgLTI0OTQsMTEgKzI1MDksOCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCWlmICghbGFzdCkgewotIAkJCQlpZiAoY2hkaXIoaGVhZCkgIT0gMCkgewotIAkJCQkJdGFpbFswXSA9IGM7Ci0tCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gZXJybm87Ci0tCQkJCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCQkJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkJIkNvdWxkIG5vdCBjaGRpciAlcyIsCi0tCQkJCQkJCQlwYXRoKTsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIGVycm5vLAotKwkJCQkJICAgICJDb3VsZCBub3QgY2hkaXIgJXMiLCBwYXRoKTsKLSAJCQkJCXJlcyA9IChBUkNISVZFX0ZBVEFMKTsKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci1AQCAtMjUxNCwxMSArMjUyNiw5IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJCSAqLwotIAkJCQlpZiAodW5saW5rKGhlYWQpKSB7Ci0gCQkJCQl0YWlsWzBdID0gYzsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBlcnJubzsKLS0JCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCQkiQ291bGQgbm90IHJlbW92ZSBzeW1saW5rICVzIiwKLS0JCQkJCQkJCXBhdGgpOwotKwkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCi0rCQkJCQkgICAgIkNvdWxkIG5vdCByZW1vdmUgc3ltbGluayAlcyIsCi0rCQkJCQkgICAgcGF0aCk7Ci0gCQkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci1AQCAtMjUyOSwxMyArMjUzOSwxNCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCQkgKiBzeW1saW5rIHdpdGggYW5vdGhlciBzeW1saW5rLgotIAkJCQkgKi8KLSAJCQkJdGFpbFswXSA9IGM7Ci0tCQkJCS8qIEZJWE1FOiAgbm90IHN1cmUgaG93IGltcG9ydGFudCB0aGlzIGlzIHRvIHJlc3RvcmUKLSsJCQkJLyoKLSsJCQkJICogRklYTUU6ICBub3Qgc3VyZSBob3cgaW1wb3J0YW50IHRoaXMgaXMgdG8KLSsJCQkJICogcmVzdG9yZQotKwkJCQkgKi8KLSsJCQkJLyoKLSAJCQkJaWYgKCFTX0lTTE5LKHBhdGgpKSB7Ci0tCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gMDsKLS0JCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCQkiUmVtb3Zpbmcgc3ltbGluayAlcyIsCi0tCQkJCQkJCQlwYXRoKTsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCQkgICAgIlJlbW92aW5nIHN5bWxpbmsgJXMiLCBwYXRoKTsKLSAJCQkJfQotIAkJCQkqLwotIAkJCQkvKiBTeW1saW5rIGdvbmUuICBObyBtb3JlIHByb2JsZW0hICovCi1AQCAtMjU0NSwyMiArMjU1NiwxNyBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCQkvKiBVc2VyIGFza2VkIHVzIHRvIHJlbW92ZSBwcm9ibGVtcy4gKi8KLSAJCQkJaWYgKHVubGluayhoZWFkKSAhPSAwKSB7Ci0gCQkJCQl0YWlsWzBdID0gYzsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSAwOwotLQkJCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJCSJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nIHN5bWxpbmsgJXMiLAotLQkJCQkJCQkJcGF0aCk7Ci0rCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCAwLAotKwkJCQkJICAgICJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nICIKLSsJCQkJCSAgICAic3ltbGluayAlcyIsIHBhdGgpOwotIAkJCQkJcmVzID0gQVJDSElWRV9GQUlMRUQ7Ci0gCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCQl0YWlsWzBdID0gYzsKLSAJCQl9IGVsc2UgewotIAkJCQl0YWlsWzBdID0gYzsKLS0JCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IDA7Ci0tCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggc3ltbGluayAlcyIsCi0tCQkJCQkJCXBhdGgpOwotKwkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCAwLAotKwkJCQkgICAgIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggc3ltbGluayAlcyIsIHBhdGgpOwotIAkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJYnJlYWs7Ci0gCQkJfQotQEAgLTI1NzcsMTAgKzI1ODMsOCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAlpZiAocmVzdG9yZV9wd2QgPj0gMCkgewotIAkJciA9IGZjaGRpcihyZXN0b3JlX3B3ZCk7Ci0gCQlpZiAociAhPSAwKSB7Ci0tCQkJaWYoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gZXJybm87Ci0tCQkJaWYoZXJyb3Jfc3RyaW5nKQotLQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkiY2hkaXIoKSBmYWlsdXJlIik7Ci0rCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCi0rCQkJICAgICJjaGRpcigpIGZhaWx1cmUiLCAiIik7Ci0gCQl9Ci0gCQljbG9zZShyZXN0b3JlX3B3ZCk7Ci0gCQlyZXN0b3JlX3B3ZCA9IC0xOwotQEAgLTI2ODgsMTcgKzI2OTIsMTYgQEAgY2xlYW51cF9wYXRobmFtZV93aW4oc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKLSAgKiBpcyBzZXQpIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLgotICAqLwotIHN0YXRpYyBpbnQKLS1jbGVhbnVwX3BhdGhuYW1lX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yX3N0cmluZywgaW50IGZsYWdzKQotK2NsZWFudXBfcGF0aG5hbWVfZnNvYmooY2hhciAqcGF0aCwgaW50ICphX2Vubywgc3RydWN0IGFyY2hpdmVfc3RyaW5nICphX2VzdHIsCi0rICAgIGludCBmbGFncykKLSB7Ci0gCWNoYXIgKmRlc3QsICpzcmM7Ci0gCWNoYXIgc2VwYXJhdG9yID0gJ1wwJzsKLSAKLSAJZGVzdCA9IHNyYyA9IHBhdGg7Ci0gCWlmICgqc3JjID09ICdcMCcpIHsKLS0JCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBBUkNISVZFX0VSUk5PX01JU0M7Ci0tCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJICAgIGFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCSAgICAiSW52YWxpZCBlbXB0eSBwYXRobmFtZSIpOwotKwkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJICAgICJJbnZhbGlkIGVtcHR5ICIsICJwYXRobmFtZSIpOwotIAkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0gCX0KLSAKLUBAIC0yNzA4LDEwICsyNzExLDggQEAgY2xlYW51cF9wYXRobmFtZV9mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnIKLSAJLyogU2tpcCBsZWFkaW5nICcvJy4gKi8KLSAJaWYgKCpzcmMgPT0gJy8nKSB7Ci0gCQlpZiAoZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUykgewotLQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBBUkNISVZFX0VSUk5PX01JU0M7Ci0tCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkgICAgYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCSAgICAiUGF0aCBpcyBhYnNvbHV0ZSIpOwotKwkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIEFSQ0hJVkVfRVJSTk9fTUlTQywKLSsJCQkgICAgIlBhdGggaXMgIiwgImFic29sdXRlIik7Ci0gCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0gCQl9Ci0gCi1AQCAtMjczOCwxMSArMjczOSwxMSBAQCBjbGVhbnVwX3BhdGhuYW1lX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycgotIAkJCX0gZWxzZSBpZiAoc3JjWzFdID09ICcuJykgewotIAkJCQlpZiAoc3JjWzJdID09ICcvJyB8fCBzcmNbMl0gPT0gJ1wwJykgewotIAkJCQkJLyogQ29uZGl0aW9uYWxseSB3YXJuIGFib3V0ICcuLicgKi8KLS0JCQkJCWlmIChmbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9ET1RET1QpIHsKLS0JCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gQVJDSElWRV9FUlJOT19NSVNDOwotLQkJCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJICAgIGFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkgICAgIlBhdGggY29udGFpbnMgJy4uJyIpOwotKwkJCQkJaWYgKGZsYWdzCi0rCQkJCQkgICAgJiBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PRE9URE9UKSB7Ci0rCQkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwKLSsJCQkJCQkgICAgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJCQkJCSAgICAiUGF0aCBjb250YWlucyAiLCAiJy4uJyIpOwotIAkJCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwotIAkJCQkJfQotIAkJCQl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy8wMDAyLUZpeC1leHRyYWN0aW5nLWhhcmRsaW5rcy1vdmVyLXN5bWxpbmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NDE4NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotRnJvbSBlY2UyODEwMzg4NWEwNzlhMTI5YTIzYzUwMDEyNTJhMTY0ODUxN2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIE1hdHVza2EgPG1hcnRpbkBtYXR1c2thLm9yZz4KLURhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTY6NTU6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBleHRyYWN0aW5nIGhhcmRsaW5rcyBvdmVyIHN5bWxpbmtzCi0KLUNsb3NlcyAjODIxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHRhci90ZXN0L3Rlc3Rfc3ltbGlua19kaXIuYyAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1pbmRleCBkNzg2YmMyLi44MGIwM2NkIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotQEAgLTI1NjMsNiArMjU2Myw0OSBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwgaW50Ci0gCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCQl0YWlsWzBdID0gYzsKLSsJCQl9IGVsc2UgaWYgKChmbGFncyAmCi0rCQkJICAgIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfU1lNTElOS1MpID09IDApIHsKLSsJCQkJLyoKLSsJCQkJICogV2UgYXJlIG5vdCB0aGUgbGFzdCBlbGVtZW50IGFuZCB3ZSB3YW50IHRvCi0rCQkJCSAqIGZvbGxvdyBzeW1saW5rcyBpZiB0aGV5IGFyZSBhIGRpcmVjdG9yeS4KLSsJCQkJICogCi0rCQkJCSAqIFRoaXMgaXMgbmVlZGVkIHRvIGV4dHJhY3QgaGFyZGxpbmtzIG92ZXIKLSsJCQkJICogc3ltbGlua3MuCi0rCQkJCSAqLwotKwkJCQlyID0gc3RhdChoZWFkLCAmc3QpOwotKwkJCQlpZiAociAhPSAwKSB7Ci0rCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCWlmIChlcnJubyA9PSBFTk9FTlQpIHsKLSsJCQkJCQlicmVhazsKLSsJCQkJCX0gZWxzZSB7Ci0rCQkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwKLSsJCQkJCQkgICAgZXJybm8sCi0rCQkJCQkJICAgICJDb3VsZCBub3Qgc3RhdCAlcyIsIHBhdGgpOwotKwkJCQkJCXJlcyA9IChBUkNISVZFX0ZBSUxFRCk7Ci0rCQkJCQkJYnJlYWs7Ci0rCQkJCQl9Ci0rCQkJCX0gZWxzZSBpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgewotKwkJCQkJaWYgKGNoZGlyKGhlYWQpICE9IDApIHsKLSsJCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLAotKwkJCQkJCSAgICBlcnJubywKLSsJCQkJCQkgICAgIkNvdWxkIG5vdCBjaGRpciAlcyIsIHBhdGgpOwotKwkJCQkJCXJlcyA9IChBUkNISVZFX0ZBVEFMKTsKLSsJCQkJCQlicmVhazsKLSsJCQkJCX0KLSsJCQkJCS8qCi0rCQkJCQkgKiBPdXIgdmlldyBpcyBub3cgZnJvbSBpbnNpZGUKLSsJCQkJCSAqIHRoaXMgZGlyOgotKwkJCQkJICovCi0rCQkJCQloZWFkID0gdGFpbCArIDE7Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCQkgICAgIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggIgotKwkJCQkJICAgICJzeW1saW5rICVzIiwgcGF0aCk7Ci0rCQkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSsJCQkJCWJyZWFrOwotKwkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJdGFpbFswXSA9IGM7Ci0gCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi1kaWZmIC0tZ2l0IGEvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jIGIvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jCi1pbmRleCAyNWJkOGIxLi44NTJlMDBiIDEwMDY0NAotLS0tIGEvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jCi0rKysgYi90YXIvdGVzdC90ZXN0X3N5bWxpbmtfZGlyLmMKLUBAIC00NywxMSArNDcsMTggQEAgREVGSU5FX1RFU1QodGVzdF9zeW1saW5rX2RpcikKLSAJYXNzZXJ0TWFrZURpcigic291cmNlL2RpcjMiLCAwNzU1KTsKLSAJYXNzZXJ0TWFrZURpcigic291cmNlL2RpcjMvZDMiLCAwNzU1KTsKLSAJYXNzZXJ0TWFrZUZpbGUoInNvdXJjZS9kaXIzL2YzIiwgMDc1NSwgImFiY2RlIik7Ci0rCWFzc2VydE1ha2VEaXIoInNvdXJjZS9kaXI0IiwgMDc1NSk7Ci0rCWFzc2VydE1ha2VGaWxlKCJzb3VyY2UvZGlyNC9maWxlMyIsIDA3NTUsICJhYmNkZWYiKTsKLSsJYXNzZXJ0TWFrZUhhcmRsaW5rKCJzb3VyY2UvZGlyNC9maWxlNCIsICJzb3VyY2UvZGlyNC9maWxlMyIpOwotIAotIAlhc3NlcnRFcXVhbEludCgwLAotIAkgICAgc3lzdGVtZigiJXMgLWNmIHRlc3QudGFyIC1DIHNvdXJjZSBkaXIgZGlyMiBkaXIzIGZpbGUgZmlsZTIiLAotIAkJdGVzdHByb2cpKTsKLSAKLSsJLyogU2Vjb25kIGFyY2hpdmUgd2l0aCBoYXJkbGlua3MgKi8KLSsJYXNzZXJ0RXF1YWxJbnQoMCwKLSsJICAgIHN5c3RlbWYoIiVzIC1jZiB0ZXN0Mi50YXIgLUMgc291cmNlIGRpcjQiLCB0ZXN0cHJvZykpOwotKwotIAkvKgotIAkgKiBFeHRyYWN0IHdpdGggLXggYW5kIHdpdGhvdXQgLVAuCi0gCSAqLwotQEAgLTExOCw5ICsxMjUsMTUgQEAgREVGSU5FX1RFU1QodGVzdF9zeW1saW5rX2RpcikKLSAJCWFzc2VydE1ha2VTeW1saW5rKCJkZXN0Mi9maWxlMiIsICJyZWFsX2ZpbGUyIik7Ci0gCWFzc2VydEVxdWFsSW50KDAsIHN5c3RlbWYoIiVzIC14UGYgdGVzdC50YXIgLUMgZGVzdDIiLCB0ZXN0cHJvZykpOwotIAotLQkvKiBkZXN0Mi9kaXIgc3ltbGluayBzaG91bGQgYmUgZm9sbG93ZWQgKi8KLSsJLyogImRpcjQiIGlzIGEgc3ltbGluayB0byBleGlzdGluZyAicmVhbF9kaXIiICovCi0rCWlmIChjYW5TeW1saW5rKCkpCi0rCQlhc3NlcnRNYWtlU3ltbGluaygiZGVzdDIvZGlyNCIsICJyZWFsX2RpciIpOwotKwlhc3NlcnRFcXVhbEludCgwLCBzeXN0ZW1mKCIlcyAteFBmIHRlc3QyLnRhciAtQyBkZXN0MiIsIHRlc3Rwcm9nKSk7Ci0rCi0rCS8qIGRlc3QyL2RpciBhbmQgZGVzdDIvZGlyNCBzeW1saW5rcyBzaG91bGQgYmUgZm9sbG93ZWQgKi8KLSAJaWYgKGNhblN5bWxpbmsoKSkgewotIAkJYXNzZXJ0SXNTeW1saW5rKCJkZXN0Mi9kaXIiLCAicmVhbF9kaXIiKTsKLSsJCWFzc2VydElzU3ltbGluaygiZGVzdDIvZGlyNCIsICJyZWFsX2RpciIpOwotIAkJYXNzZXJ0SXNEaXIoImRlc3QyL3JlYWxfZGlyIiwgLTEpOwotIAl9Ci0gCi1AQCAtMTQxLDQgKzE1NCw3IEBAIERFRklORV9URVNUKHRlc3Rfc3ltbGlua19kaXIpCi0gCS8qIGRlc3QyL2ZpbGUyIHN5bWxpbmsgc2hvdWxkIGJlIHJlbW92ZWQgKi8KLSAJZmFpbHVyZSgiU3ltbGluayB0byBub24tZXhpc3RpbmcgZmlsZSBzaG91bGQgYmUgcmVtb3ZlZCIpOwotIAlhc3NlcnRJc1JlZygiZGVzdDIvZmlsZTIiLCAtMSk7Ci0rCi0rCS8qIGRlc3QyL2RpcjQvZmlsZTMgYW5kIGRlc3QyL2RpcjQvZmlsZTQgc2hvdWxkIGJlIGhhcmQgbGlua3MgKi8KLSsJYXNzZXJ0SXNIYXJkbGluaygiZGVzdDIvZGlyNC9maWxlMyIsICJkZXN0Mi9kaXI0L2ZpbGU0Iik7Ci0gfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFmOGYzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLUZyb20gZDYyNzE3MDlkMmRlYjk4MDgwNGY5MmU3NWY5YjVjYjYwMGRjNDJlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjQgT2N0IDIwMTYgMTI6NTQ6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIG5vbi1yZWN1cnNpdmUgZXh0cmFjdCBhbmQgbGlzdAotCi1Tb21ldGltZXMgaXQgbWFrZXMgc2Vuc2UgdG8gZXh0cmFjdCBvciBsaXN0IGEgZGlyZWN0b3J5IGNvbnRhaW5lZCBpbgotYW4gYXJjaGl2ZSB3aXRob3V0IGFsc28gZG9pbmcgdGhlIHNhbWUgZm9yIHRoZSBjb250ZW50IG9mIHRoZQotZGlyZWN0b3J5LCBpLmUuIGFsbG93aW5nIC1uICg9IC0tbm8tcmVjdXJzaW9uKSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZQoteCBhbmQgdCBtb2Rlcy4KLQotYnNkdGFyIHVzZXMgdGhlIG1hdGNoIGZ1bmN0aW9uYWxpdHkgaW4gbGliYXJjaGl2ZSB0byB0cmFjayBpbmNsdWRlCi1tYXRjaGVzLiBBIG5ldyBsaWJhcmNoaXZlIEFQSSBjYWxsCi1hcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoKSBnZXRzIGludHJvZHVjZWQgdG8KLWluZmx1ZW5jZSB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IsIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXMgYmVmb3JlLgotCi1Ob24tcmVjdXJzaXZlIG1hdGNoaW5nIGNhbiBiZSBhY2hpZXZlZCBieSBhbmNob3JpbmcgdGhlIHBhdGggbWF0Y2ggYXQKLWJvdGggc3RhcnQgYW5kIGVuZC4gQXNraW5nIGZvciBhIGRpcmVjdG9yeSB3aGljaCBpdHNlbGYgaXNuJ3QgaW4gdGhlCi1hcmNoaXZlIHdoZW4gaW4gbm9uLXJlY3Vyc2l2ZSBtb2RlIGlzIGFuIGVycm9yIGFuZCBoYW5kbGVkIGJ5IHRoZQotZXhpc3RpbmcgbWVjaGFuaXNtIGZvciB0cmFja2luZyB1bnVzZWQgaW5jbHVzaW9uIGVudHJpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvODEyXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZS5oICAgICAgIHwgIDIgKysKLSBsaWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIHRhci9ic2R0YXIuMSAgICAgICAgICAgICAgIHwgIDMgKy0tCi0gdGFyL2JzZHRhci5jICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmUuaCBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1pbmRleCBmZjQwMWU5Li4zOGQ4NzQ2IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1AQCAtMTA4NSw2ICsxMDg1LDggQEAgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCi0gICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKLSAJCSAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKTsKLSsvKiBDb250cm9sIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgd2hlbiBkaXJlY3RvcnkgaXMgaW5jbHVkZWQuIERlZmF1bHQgb24uICovCi0rX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKiwgaW50IF9lbmFibGVkKTsKLSAvKiBBZGQgZXhjbHVzaW9uIHBhdGhuYW1lIHBhdHRlcm4uICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybihzdHJ1Y3QgYXJjaGl2ZSAqLCBjb25zdCBjaGFyICopOwotIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm5fdyhzdHJ1Y3QgYXJjaGl2ZSAqLAotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLWluZGV4IDA3MTljYmQuLjZkMDNhNjUgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLUBAIC05Myw2ICs5Myw5IEBAIHN0cnVjdCBhcmNoaXZlX21hdGNoIHsKLSAJLyogZXhjbHVzaW9uL2luY2x1c2lvbiBzZXQgZmxhZy4gKi8KLSAJaW50CQkJIHNldGZsYWc7Ci0gCi0rCS8qIFJlY3Vyc2l2ZWx5IGluY2x1ZGUgZGlyZWN0b3J5IGNvbnRlbnQ/ICovCi0rCWludAkJCSByZWN1cnNpdmVfaW5jbHVkZTsKLSsKLSAJLyoKLSAJICogTWF0Y2hpbmcgZmlsZW5hbWUgcGF0dGVybnMuCi0gCSAqLwotQEAgLTIyMyw2ICsyMjYsNyBAQCBhcmNoaXZlX21hdGNoX25ldyh2b2lkKQotIAkJcmV0dXJuIChOVUxMKTsKLSAJYS0+YXJjaGl2ZS5tYWdpYyA9IEFSQ0hJVkVfTUFUQ0hfTUFHSUM7Ci0gCWEtPmFyY2hpdmUuc3RhdGUgPSBBUkNISVZFX1NUQVRFX05FVzsKLSsJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSAxOwotIAltYXRjaF9saXN0X2luaXQoJihhLT5pbmNsdXNpb25zKSk7Ci0gCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmV4Y2x1c2lvbnMpKTsKLSAJX19hcmNoaXZlX3JiX3RyZWVfaW5pdCgmKGEtPmV4Y2x1c2lvbl90cmVlKSwgJnJiX29wc19tYnMpOwotQEAgLTQ3MSw2ICs0NzUsMjggQEAgYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICpfYSwKLSB9Ci0gCi0gLyoKLSsgKiBXaGVuIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZW5hYmxlZCwKLSsgKiBhbiBpbmNsdXNpb24gcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBkaXJlY3Rvcnkgd2lsbCBhbHNvCi0rICogaW5jbHVkZSBldmVyeXRoaW5nIGJlbmVhdGggdGhhdCBkaXJlY3RvcnkuIEVuYWJsZWQgYnkgZGVmYXVsdC4KLSsgKgotKyAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggR05VIHRhciwgZXhjbHVzaW9uIHBhdHRlcm5zIGFsd2F5cwotKyAqIG1hdGNoIGlmIGEgc3Vic2V0IG9mIHRoZSBmdWxsIHBhdGNoIG1hdGNoZXMgKGkuZS4sIHRoZXkgYXJlCi0rICogYXJlIG5vdCByb290ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCkgYW5kIHRodXMgdGhlcmUKLSsgKiBpcyBubyBjb3JyZXNwb25kaW5nIG5vbi1yZWN1cnNpdmUgZXhjbHVzaW9uIG1vZGUuCi0rICovCi0raW50Ci0rYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICpfYSwgaW50IF9lbmFibGVkKQotK3sKLSsJc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmE7Ci0rCi0rCWFyY2hpdmVfY2hlY2tfbWFnaWMoX2EsIEFSQ0hJVkVfTUFUQ0hfTUFHSUMsCi0rCSAgICBBUkNISVZFX1NUQVRFX05FVywgImFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSIpOwotKwlhID0gKHN0cnVjdCBhcmNoaXZlX21hdGNoICopX2E7Ci0rCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gX2VuYWJsZWQ7Ci0rCXJldHVybiAoQVJDSElWRV9PSyk7Ci0rfQotKwotKy8qCi0gICogVXRpbHR5IGZ1bmN0aW9ucyB0byBnZXQgc3RhdGlzdGljIGluZm9ybWF0aW9uIGZvciBpbmNsdXNpb24gcGF0dGVybnMuCi0gICovCi0gaW50Ci1AQCAtNzgxLDcgKzgwNyw5IEBAIHN0YXRpYyBpbnQKLSBtYXRjaF9wYXRoX2luY2x1c2lvbihzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYSwgc3RydWN0IG1hdGNoICptLAotICAgICBpbnQgbWJzLCBjb25zdCB2b2lkICpwbikKLSB7Ci0tCWludCBmbGFnID0gUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQ7Ci0rCWludCBmbGFnID0gYS0+cmVjdXJzaXZlX2luY2x1ZGUgPwotKwkJUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQgOiAvKiBQcmVmaXggbWF0Y2ggaXMgZ29vZCBlbm91Z2guICovCi0rCQkwOyAvKiBGdWxsIG1hdGNoIHJlcXVpcmVkLiAqLwotIAlpbnQgcjsKLSAKLSAJaWYgKG1icykgewotZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuMSBiL3Rhci9ic2R0YXIuMQotaW5kZXggOWVhZGFhZi4uZjVkNjQ1NyAxMDA2NDQKLS0tLSBhL3Rhci9ic2R0YXIuMQotKysrIGIvdGFyL2JzZHRhci4xCi1AQCAtMzQ2LDggKzM0Niw3IEBAIEluIGV4dHJhY3Qgb3IgbGlzdCBtb2RlcywgdGhpcyBvcHRpb24gaXMgaWdub3JlZC4KLSBEbyBub3QgZXh0cmFjdCBtb2RpZmljYXRpb24gdGltZS4KLSBCeSBkZWZhdWx0LCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgaXMgc2V0IHRvIHRoZSB0aW1lIHN0b3JlZCBpbiB0aGUgYXJjaGl2ZS4KLSAuSXQgRmwgbiAsIEZsIEZsIG5vcmVjdXJzZSAsIEZsIEZsIG5vLXJlY3Vyc2lvbgotLShjLCByLCB1IG1vZGVzIG9ubHkpCi0tRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgotK0RvIG5vdCByZWN1cnNpdmVseSBhcmNoaXZlIChjLCByLCB1KSwgZXh0cmFjdCAoeCkgb3IgbGlzdCAodCkgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgotIC5JdCBGbCBGbCBuZXdlciBBciBkYXRlCi0gKGMsIHIsIHUgbW9kZXMgb25seSkKLSBPbmx5IGluY2x1ZGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIG5ld2VyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLgotZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuYyBiL3Rhci9ic2R0YXIuYwotaW5kZXggOTNiZjYwYS4uMDAxZDVlZCAxMDA2NDQKLS0tLSBhL3Rhci9ic2R0YXIuYwotKysrIGIvdGFyL2JzZHRhci5jCi1AQCAtNzM4LDggKzczOCw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWJyZWFrOwotIAkJfQotIAl9Ci0tCWlmIChic2R0YXItPm9wdGlvbl9ub19zdWJkaXJzKQotLQkJb25seV9tb2RlKGJzZHRhciwgIi1uIiwgImNydSIpOwotIAlpZiAoYnNkdGFyLT5vcHRpb25fc3Rkb3V0KQotIAkJb25seV9tb2RlKGJzZHRhciwgIi1PIiwgInh0Iik7Ci0gCWlmIChic2R0YXItPm9wdGlvbl91bmxpbmtfZmlyc3QpCi1AQCAtNzg4LDYgKzc4NiwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCW9ubHlfbW9kZShic2R0YXIsIGJ1ZmYsICJjcnUiKTsKLSAJfQotIAotKwkvKgotKwkgKiBXaGVuIGNyZWF0aW5nIGFuIGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeSB0cmVlLCB0aGUgZGlyZWN0b3J5Ci0rCSAqIHdhbGtpbmcgY29kZSB3aWxsIGFscmVhZHkgYXZvaWQgZW50ZXJpbmcgZGlyZWN0b3JpZXMgd2hlbgotKwkgKiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IGlzIGRpc2FibGVkLCB0aGVyZWZvcmUKLSsJICogY2hhbmdpbmcgdGhlIG1hdGNoaW5nIGJlaGF2aW9yIGhhcyBubyBlZmZlY3QgZm9yIGNyZWF0aW9uIG1vZGVzLgotKwkgKiBJdCBpcyByZWxldmFudCBmb3IgZXh0cmFjdGlvbiBvciBsaXN0aW5nLgotKwkgKi8KLSsJYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KGJzZHRhci0+bWF0Y2hpbmcsCi0rCQkJCQkJICAgICAgIWJzZHRhci0+b3B0aW9uX25vX3N1YmRpcnMpOwotKwotIAkvKiBGaWxlbmFtZSAiLSIgaW1wbGllcyBzdGRpby4gKi8KLSAJaWYgKHN0cmNtcChic2R0YXItPmZpbGVuYW1lLCAiLSIpID09IDApCi0gCQlic2R0YXItPmZpbGVuYW1lID0gTlVMTDsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODVmZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorbGliYXJjaGl2ZS0zLjMuMjogRml4IENWRS0yMDE3LTE0MTY2CisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkzNQorCithcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyOiBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBpbiB4bWxfZGF0YQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbW1pdC9mYTc0MzhhMGZmNDAzM2U0NzQxYzgwNzM5NGE5YWY2MjA3OTQwZDcxXQorQ1ZFOiBDVkUtMjAxNy0xNDE2NgorQnVnOiA5MzUKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYworaW5kZXggN2EyMmJlYi4uOTNlZWFjYyAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYworQEAgLTEwNDAsNiArMTA0MCw5IEBAIGF0b2wxMChjb25zdCBjaGFyICpwLCBzaXplX3QgY2hhcl9jbnQpCisgCXVpbnQ2NF90IGw7CisgCWludCBkaWdpdDsKKyAKKysJaWYgKGNoYXJfY250ID09IDApCisrCQlyZXR1cm4gKDApOworKworIAlsID0gMDsKKyAJZGlnaXQgPSAqcCAtICcwJzsKKyAJd2hpbGUgKGRpZ2l0ID49IDAgJiYgZGlnaXQgPCAxMCAgJiYgY2hhcl9jbnQtLSA+IDApIHsKK0BAIC0xMDU0LDcgKzEwNTcsMTAgQEAgYXRvbDgoY29uc3QgY2hhciAqcCwgc2l6ZV90IGNoYXJfY250KQorIHsKKyAJaW50NjRfdCBsOworIAlpbnQgZGlnaXQ7CistICAgICAgICAKKysKKysJaWYgKGNoYXJfY250ID09IDApCisrCQlyZXR1cm4gKDApOworKworIAlsID0gMDsKKyAJd2hpbGUgKGNoYXJfY250LS0gPiAwKSB7CisgCQlpZiAoKnAgPj0gJzAnICYmICpwIDw9ICc3JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlMTU0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNTU2MjU0NWI1NTYyZjZkMTJhNGVmOTkxZmFlMTU4YmY0Y2NmOTJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdAYmVjLmRlPgorRGF0ZTogU2F0LCA5IFNlcCAyMDE3IDE3OjQ3OjMyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGEgcmVhZCBvZmYtYnktb25lIGVycm9yIGZvciBVVEYxNiBuYW1lcyBpbiBSQVIKKyBhcmNoaXZlcy4KKworUmVwb3J0ZWQtQnk6IE9TUy1GdXp6IGlzc3VlIDU3MworCitDVkU6IENWRS0yMDE3LTE0NTAyCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCitpbmRleCBjYmIxNGMzLi43NTFkZTY5IDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCitAQCAtMTQ5Niw3ICsxNDk2LDExIEBAIHJlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwKKyAgICAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7CisgICAgICAgfQorICAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOworLSAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOworKyAgICAgIC8qCisrICAgICAgICogRG8gbm90IGluY3JlbWVudCBmaWxlbmFtZV9zaXplIGhlcmUgYXMgdGhlIGNvbXB1dGF0aW9ucyBiZWxvdworKyAgICAgICAqIGFkZCB0aGUgc3BhY2UgZm9yIHRoZSB0ZXJtaW5hdGluZyBOVUwgZXhwbGljaXRseS4KKysgICAgICAgKi8KKysgICAgICBmaWxlbmFtZVtmaWxlbmFtZV9zaXplXSA9ICdcMCc7CisgCisgICAgICAgLyogRGVjb2RlZCB1bmljb2RlIGZvcm0gaXMgVVRGLTE2QkUsIHNvIHdlIGhhdmUgdG8gdXBkYXRlIGEgc3RyaW5nCisgICAgICAgICogY29udmVyc2lvbiBvYmplY3QgZm9yIGl0LiAqLworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzMjU0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzkyOS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitsaWJhcmNoaXZlLTMuMy4yOiBGaXggYnVnOTI5CisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkyOQorCithcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3BpbzogaGVhZGVyX25ld2MoKTogQXZvaWQgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGNvcnJ1cHQKK2NwaW8gYXJjaGl2ZQorCitBIGNwaW8gIm5ld2MiIGFyY2hpdmUgd2l0aCBhIG5hbWVsZW5ndGggb2YgIkZGRkZGRkZGIiwgaWYgcmVhZCBvbiBhCitzeXN0ZW0gd2l0aCBhIDMyLWJpdCBzaXplX3QsIHdvdWxkIHJlc3VsdCBpbiBuYW1lbGVuZ3RoICsgbmFtZV9wYWQKK292ZXJmbG93aW5nIDMyIGJpdHMgYW5kIGxpYmFyY2hpdmUgYXR0ZW1wdGluZyB0byBjb3B5IDJeMzItMSBieXRlcworZnJvbSBhIDItYnl0ZSBidWZmZXIsIHdpdGggYXBwcm9wcmlhdGVseSBoaWxhcmlvdXMgcmVzdWx0cy4KKworQ2hlY2sgZm9yIHRoaXMgb3ZlcmZsb3cgYW5kIGZhaWw7IHRoZXJlJ3Mgbm8gbGVnaXRpbWF0ZSByZWFzb24gZm9yIGEKK2NwaW8gYXJjaGl2ZSB0byBjb250YWluIGEgZmlsZSB3aXRoIGEgbmFtZSBvdmVyIDQgYmlsbGlvbiBjaGFyYWN0ZXJzCitpbiBsZW5ndGguCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2JhYzQ2NTllMGI5NzA5OTBlN2UzZjNhM2QyMzkyOTRlOTYzMTE2MzBdCitCdWc6IDkyOQorU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKK2luZGV4IGFkOWY3ODIuLjFmYWE2NGQgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYworQEAgLTYzMyw2ICs2MzMsMTMgQEAgaGVhZGVyX25ld2Moc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGNwaW8gKmNwaW8sCisgCS8qIFBhZCBuYW1lIHRvIDIgbW9yZSB0aGFuIGEgbXVsdGlwbGUgb2YgNC4gKi8KKyAJKm5hbWVfcGFkID0gKDIgLSAqbmFtZWxlbmd0aCkgJiAzOworIAorKwkvKiBNYWtlIHN1cmUgdGhhdCB0aGUgcGFkZGVkIG5hbWUgbGVuZ3RoIGZpdHMgaW50byBzaXplX3QuICovCisrCWlmICgoc2l6ZV90KSgqbmFtZWxlbmd0aCArICpuYW1lX3BhZCkgPCAqbmFtZWxlbmd0aCkgeworKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisrCQkgICAgImNwaW8gYXJjaGl2ZSBoYXMgaW52YWxpZCBuYW1lbGVuZ3RoIik7CisrCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworKwl9CisrCisgCS8qCisgCSAqIE5vdGU6IGVudHJ5X2J5dGVzX3JlbWFpbmluZyBpcyBhdCBsZWFzdCA2NCBiaXRzIGFuZAorIAkgKiB0aGVyZWZvcmUgZ3VhcmFudGVlZCB0byBiZSBiaWcgZW5vdWdoIGZvciBhIDMzLWJpdCBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3YmU1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApAQCAtMCwwICsxLDE1MyBAQAorRnJvbSA0N2Y3NTY2ZjY4MjljMmIxNGUyMWJiYmJhNjk5OTE2ZGU0OTk4YzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyNCBPY3QgMjAxNiAxMjo1NDo0OCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMV0gbm9uLXJlY3Vyc2l2ZSBleHRyYWN0IGFuZCBsaXN0CisKK1NvbWV0aW1lcyBpdCBtYWtlcyBzZW5zZSB0byBleHRyYWN0IG9yIGxpc3QgYSBkaXJlY3RvcnkgY29udGFpbmVkIGluCithbiBhcmNoaXZlIHdpdGhvdXQgYWxzbyBkb2luZyB0aGUgc2FtZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlCitkaXJlY3RvcnksIGkuZS4gYWxsb3dpbmcgLW4gKD0gLS1uby1yZWN1cnNpb24pIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCit4IGFuZCB0IG1vZGVzLgorCitic2R0YXIgdXNlcyB0aGUgbWF0Y2ggZnVuY3Rpb25hbGl0eSBpbiBsaWJhcmNoaXZlIHRvIHRyYWNrIGluY2x1ZGUKK21hdGNoZXMuIEEgbmV3IGxpYmFyY2hpdmUgQVBJIGNhbGwKK2FyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSgpIGdldHMgaW50cm9kdWNlZCB0bworaW5mbHVlbmNlIHRoZSBtYXRjaGluZyBiZWhhdmlvciwgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBhcyBiZWZvcmUuCisKK05vbi1yZWN1cnNpdmUgbWF0Y2hpbmcgY2FuIGJlIGFjaGlldmVkIGJ5IGFuY2hvcmluZyB0aGUgcGF0aCBtYXRjaCBhdAorYm90aCBzdGFydCBhbmQgZW5kLiBBc2tpbmcgZm9yIGEgZGlyZWN0b3J5IHdoaWNoIGl0c2VsZiBpc24ndCBpbiB0aGUKK2FyY2hpdmUgd2hlbiBpbiBub24tcmVjdXJzaXZlIG1vZGUgaXMgYW4gZXJyb3IgYW5kIGhhbmRsZWQgYnkgdGhlCitleGlzdGluZyBtZWNoYW5pc20gZm9yIHRyYWNraW5nIHVudXNlZCBpbmNsdXNpb24gZW50cmllcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC84MTJdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKworLS0tCisgbGliYXJjaGl2ZS9hcmNoaXZlLmggICAgICAgfCAgMiArKworIGxpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgdGFyL2JzZHRhci4xICAgICAgICAgICAgICAgfCAgMyArLS0KKyB0YXIvYnNkdGFyLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oIGIvbGliYXJjaGl2ZS9hcmNoaXZlLmgKK2luZGV4IDMyNzEwMjAxLi41OWZiNGFhNiAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmUuaAorQEAgLTEwOTMsNiArMTA5Myw4IEBAIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqLAorICAqLworIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCisgCQkgICAgc3RydWN0IGFyY2hpdmVfZW50cnkgKik7CisrLyogQ29udHJvbCByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IHdoZW4gZGlyZWN0b3J5IGlzIGluY2x1ZGVkLiBEZWZhdWx0IG9uLiAqLworK19fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICosIGludCBfZW5hYmxlZCk7CisgLyogQWRkIGV4Y2x1c2lvbiBwYXRobmFtZSBwYXR0ZXJuLiAqLworIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm4oc3RydWN0IGFyY2hpdmUgKiwgY29uc3QgY2hhciAqKTsKKyBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZV9wYXR0ZXJuX3coc3RydWN0IGFyY2hpdmUgKiwKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCitpbmRleCBiZTcyMDY2ZS4uYmI2YTM0MDcgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKK0BAIC05Myw2ICs5Myw5IEBAIHN0cnVjdCBhcmNoaXZlX21hdGNoIHsKKyAJLyogZXhjbHVzaW9uL2luY2x1c2lvbiBzZXQgZmxhZy4gKi8KKyAJaW50CQkJIHNldGZsYWc7CisgCisrCS8qIFJlY3Vyc2l2ZWx5IGluY2x1ZGUgZGlyZWN0b3J5IGNvbnRlbnQ/ICovCisrCWludAkJCSByZWN1cnNpdmVfaW5jbHVkZTsKKysKKyAJLyoKKyAJICogTWF0Y2hpbmcgZmlsZW5hbWUgcGF0dGVybnMuCisgCSAqLworQEAgLTIyMyw2ICsyMjYsNyBAQCBhcmNoaXZlX21hdGNoX25ldyh2b2lkKQorIAkJcmV0dXJuIChOVUxMKTsKKyAJYS0+YXJjaGl2ZS5tYWdpYyA9IEFSQ0hJVkVfTUFUQ0hfTUFHSUM7CisgCWEtPmFyY2hpdmUuc3RhdGUgPSBBUkNISVZFX1NUQVRFX05FVzsKKysJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSAxOworIAltYXRjaF9saXN0X2luaXQoJihhLT5pbmNsdXNpb25zKSk7CisgCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmV4Y2x1c2lvbnMpKTsKKyAJX19hcmNoaXZlX3JiX3RyZWVfaW5pdCgmKGEtPmV4Y2x1c2lvbl90cmVlKSwgJnJiX29wc19tYnMpOworQEAgLTQ3MSw2ICs0NzUsMjggQEAgYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICpfYSwKKyB9CisgCisgLyoKKysgKiBXaGVuIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZW5hYmxlZCwKKysgKiBhbiBpbmNsdXNpb24gcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBkaXJlY3Rvcnkgd2lsbCBhbHNvCisrICogaW5jbHVkZSBldmVyeXRoaW5nIGJlbmVhdGggdGhhdCBkaXJlY3RvcnkuIEVuYWJsZWQgYnkgZGVmYXVsdC4KKysgKgorKyAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggR05VIHRhciwgZXhjbHVzaW9uIHBhdHRlcm5zIGFsd2F5cworKyAqIG1hdGNoIGlmIGEgc3Vic2V0IG9mIHRoZSBmdWxsIHBhdGNoIG1hdGNoZXMgKGkuZS4sIHRoZXkgYXJlCisrICogYXJlIG5vdCByb290ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCkgYW5kIHRodXMgdGhlcmUKKysgKiBpcyBubyBjb3JyZXNwb25kaW5nIG5vbi1yZWN1cnNpdmUgZXhjbHVzaW9uIG1vZGUuCisrICovCisraW50CisrYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICpfYSwgaW50IF9lbmFibGVkKQorK3sKKysJc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmE7CisrCisrCWFyY2hpdmVfY2hlY2tfbWFnaWMoX2EsIEFSQ0hJVkVfTUFUQ0hfTUFHSUMsCisrCSAgICBBUkNISVZFX1NUQVRFX05FVywgImFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSIpOworKwlhID0gKHN0cnVjdCBhcmNoaXZlX21hdGNoICopX2E7CisrCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gX2VuYWJsZWQ7CisrCXJldHVybiAoQVJDSElWRV9PSyk7CisrfQorKworKy8qCisgICogVXRpbGl0eSBmdW5jdGlvbnMgdG8gZ2V0IHN0YXRpc3RpYyBpbmZvcm1hdGlvbiBmb3IgaW5jbHVzaW9uIHBhdHRlcm5zLgorICAqLworIGludAorQEAgLTc4MSw3ICs4MDcsOSBAQCBzdGF0aWMgaW50CisgbWF0Y2hfcGF0aF9pbmNsdXNpb24oc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmEsIHN0cnVjdCBtYXRjaCAqbSwKKyAgICAgaW50IG1icywgY29uc3Qgdm9pZCAqcG4pCisgeworLQlpbnQgZmxhZyA9IFBBVEhNQVRDSF9OT19BTkNIT1JfRU5EOworKwlpbnQgZmxhZyA9IGEtPnJlY3Vyc2l2ZV9pbmNsdWRlID8KKysJCVBBVEhNQVRDSF9OT19BTkNIT1JfRU5EIDogLyogUHJlZml4IG1hdGNoIGlzIGdvb2QgZW5vdWdoLiAqLworKwkJMDsgLyogRnVsbCBtYXRjaCByZXF1aXJlZC4gKi8KKyAJaW50IHI7CisgCisgCWlmIChtYnMpIHsKK2RpZmYgLS1naXQgYS90YXIvYnNkdGFyLjEgYi90YXIvYnNkdGFyLjEKK2luZGV4IDEzMmUxMTQ1Li4xZGQyYTg0NyAxMDA2NDQKKy0tLSBhL3Rhci9ic2R0YXIuMQorKysrIGIvdGFyL2JzZHRhci4xCitAQCAtMzg2LDggKzM4Niw3IEBAIGFuZCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBjLCByLCBhbmQgdSBtb2RlcyBvciBpZgorIC5ObQorIGlzIHJ1biBpbiB4IG1vZGUgYXMgcm9vdC4KKyAuSXQgRmwgbiAsIEZsIEZsIG5vcmVjdXJzZSAsIEZsIEZsIG5vLXJlY3Vyc2lvbgorLShjLCByLCB1IG1vZGVzIG9ubHkpCistRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgorK0RvIG5vdCByZWN1cnNpdmVseSBhcmNoaXZlIChjLCByLCB1KSwgZXh0cmFjdCAoeCkgb3IgbGlzdCAodCkgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgorIC5JdCBGbCBGbCBuZXdlciBBciBkYXRlCisgKGMsIHIsIHUgbW9kZXMgb25seSkKKyBPbmx5IGluY2x1ZGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIG5ld2VyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLgorZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuYyBiL3Rhci9ic2R0YXIuYworaW5kZXggMTFkZWRiZjkuLmQwMTRjYzNlIDEwMDY0NAorLS0tIGEvdGFyL2JzZHRhci5jCisrKysgYi90YXIvYnNkdGFyLmMKK0BAIC03OTQsOCArNzk0LDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJYnJlYWs7CisgCQl9CisgCX0KKy0JaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX05PX1NVQkRJUlMpCistCQlvbmx5X21vZGUoYnNkdGFyLCAiLW4iLCAiY3J1Iik7CisgCWlmIChic2R0YXItPmZsYWdzICYgT1BURkxBR19TVERPVVQpCisgCQlvbmx5X21vZGUoYnNkdGFyLCAiLU8iLCAieHQiKTsKKyAJaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX1VOTElOS19GSVJTVCkKK0BAIC04NDUsNiArODQzLDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJb25seV9tb2RlKGJzZHRhciwgYnVmZiwgImNydSIpOworIAl9CisgCisrCS8qCisrCSAqIFdoZW4gY3JlYXRpbmcgYW4gYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUsIHRoZSBkaXJlY3RvcnkKKysJICogd2Fsa2luZyBjb2RlIHdpbGwgYWxyZWFkeSBhdm9pZCBlbnRlcmluZyBkaXJlY3RvcmllcyB3aGVuCisrCSAqIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZGlzYWJsZWQsIHRoZXJlZm9yZQorKwkgKiBjaGFuZ2luZyB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IgaGFzIG5vIGVmZmVjdCBmb3IgY3JlYXRpb24gbW9kZXMuCisrCSAqIEl0IGlzIHJlbGV2YW50IGZvciBleHRyYWN0aW9uIG9yIGxpc3RpbmcuCisrCSAqLworKwlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoYnNkdGFyLT5tYXRjaGluZywKKysJCQkJCQkgICAgICAhKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX05PX1NVQkRJUlMpKTsKKysKKyAJLyogRmlsZW5hbWUgIi0iIGltcGxpZXMgc3RkaW8uICovCisgCWlmIChzdHJjbXAoYnNkdGFyLT5maWxlbmFtZSwgIi0iKSA9PSAwKQorIAkJYnNkdGFyLT5maWxlbmFtZSA9IE5VTEw7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk1OWEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgotREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQ5OWFjYTAwNmJjMzQ2OTc0YmI3NDVhMzUzMzY0MjUiCi0KLURFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIiCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0JbGlieG1sMiBcCi0JJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hZGVjIC0td2l0aC1sem1hLC0td2l0aG91dC1sem1hZGVjIC0td2l0aG91dC1sem1hLHh6LCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKLVBBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLWFyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jLW1ha2UtX2Zzb2JqLWZ1bmN0aW9ucy1tb3IucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAyLUZpeC1leHRyYWN0aW5nLWhhcmRsaW5rcy1vdmVyLXN5bWxpbmtzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWVjMDBiN2RjYWY5NjlkZDJhNTcxMmY4NWYyM2M3NjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkxYzE5NGVlMTMyZDFmMGY3YTQyNTQxZjA5MWRiODExYmMyZTU2ZjcxMDdlOTEyMWJlMmJjOGMwNGYxMDYwZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLQotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bwotCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAotCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi0KLVBBQ0tBR0VTID0rICJic2R0YXIiCi1GSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLVBBQ0tBR0VTID0rICJic2RjcGlvIgotRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCi1BTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhY2EyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKK0RFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgorCitERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIHh6IGx6byIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKwlsaWJ4bWwyIFwKKwkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCitERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHosIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKK1BBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgorUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2J1ZzkyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDUwMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ1ODNiZDZiMmViZjdlMGU4OTYzZDkwODc5ZWIxYjI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMmRiZDY5NTQ3OTJiMmMwNTRjY2Y4ZWM0YjMzMGE1NGI4NTkwNGE4MGNlZjQ3N2ExYzc0NjQzZGRhZmEwY2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0NQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KKwkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKKwljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgorCitQQUNLQUdFUyA9KyAiYnNkdGFyIgorRklMRVNfYnNkdGFyID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK0FMVEVSTkFUSVZFX2JzZHRhciA9ICJ0YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCitBTFRFUk5BVElWRV9UQVJHRVRbdGFyXSA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitQQUNLQUdFUyA9KyAiYnNkY3BpbyIKK0ZJTEVTX2JzZGNwaW8gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0FMVEVSTkFUSVZFX2JzZGNwaW8gPSAiY3BpbyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgorQUxURVJOQVRJVkVfVEFSR0VUW2NwaW9dID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKaW5kZXggNWFkYzdkOS4uMmQ1ZmFhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaApAQCAtMSwxODEgKzEsNjk0IEBACi1Gcm9tIDgyZjk4ZGNiYzQyOWJiZTg5YTk4MzdjNTMzY2JjYmMwMmU3N2M3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1EYXRlOiBUdWUsIDI4IEp1biAyMDE2IDEyOjQzOjMxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlkbjogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorRnJvbSA3MTQ4YWRmMzRkYWUzMDM0NWMyZTRkOWQ0Mzc4MzhhNDViYTZmNmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT91dGY4P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgorRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDExOjA2OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtV2Zvcm1hdCB3YXJuaW5ncwogCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzogSW4gZnVuY3Rpb24gJ21haW4nOgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTcyOjc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotfCAgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE4Nzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotfCAgICAgIF5+fn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIwMjo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKLXwgICAgIF5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMjA6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyNDU6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyODE6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzY0OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0NDI6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0OTg6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjUyNzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLXwgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU1MTo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLSBzcmMvaWRuLmMgfCAyNyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisgZXhhbXBsZXMvZXhhbXBsZS5jICAgICB8ICA2ICsrKy0tLQorIGV4YW1wbGVzL2V4YW1wbGUzLmMgICAgfCAgNCArKy0tCisgZXhhbXBsZXMvZXhhbXBsZTQuYyAgICB8ICA0ICsrLS0KKyBleGFtcGxlcy9leGFtcGxlNS5jICAgIHwgIDIgKy0KKyBzcmMvaWRuLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy90c3RfaWRuYS5jICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHRlc3RzL3RzdF9pZG5hMi5jICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9pZG5hMy5jICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9uZmtjLmMgICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9wcjI5LmMgICAgICAgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0cy90c3RfcHVueWNvZGUuYyAgIHwgMTMgKysrKysrKy0tLS0tLQorIHRlc3RzL3RzdF9zdHJlcnJvci5jICAgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQorIHRlc3RzL3RzdF9zdHJpbmdwcmVwLmMgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0cy90c3RfdGxkLmMgICAgICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyB0ZXN0cy91dGlscy5jICAgICAgICAgIHwgIDYgKysrLS0tCisgMTUgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKLWluZGV4IGJlMWM3ZDEuLjY4ZTQyOTEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWRuLmMKLSsrKyBiL3NyYy9pZG4uYwotQEAgLTE3MCw3ICsxNzAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgIChhcmdzX2luZm8uaWRuYV90b191bmljb2RlX2dpdmVuID8gMSA6IDApICsKLSAgICAgICAoYXJnc19pbmZvLm5ma2NfZ2l2ZW4gPyAxIDogMCkgIT0gMSkKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlLmMgYi9leGFtcGxlcy9leGFtcGxlLmMKK2luZGV4IDZlOTE3ODMuLjI0ZjY0ZTAgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlLmMKKysrKyBiL2V4YW1wbGVzL2V4YW1wbGUuYworQEAgLTU1LDcgKzU1LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkJlZm9yZSBsb2NhbGUydXRmOCAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKKyAKKyAgIHAgPSBzdHJpbmdwcmVwX2xvY2FsZV90b191dGY4IChidWYpOworQEAgLTY5LDcgKzY5LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkJlZm9yZSBzdHJpbmdwcmVwIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOworKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgcmMgPSBzdHJpbmdwcmVwIChidWYsIEJVRlNJWiwgMCwgc3RyaW5ncHJlcF9uYW1lcHJlcCk7CitAQCAtNzksNyArNzksNyBAQCBtYWluICh2b2lkKQogICAgICB7Ci0tICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotKyAgICAgIGVycm9yICgwLCAwLCAiJXMiLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKLSAgICAgICB1c2FnZSAoRVhJVF9GQUlMVVJFKTsKKyAgICAgICBwcmludGYgKCJBZnRlciBzdHJpbmdwcmVwIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgICAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0JcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysJcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgICAgIHByaW50ZiAoIlxuIik7CiAgICAgIH0KICAKLUBAIC0xODUsNyArMTg1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGlmICghYXJnc19pbmZvLnF1aWV0X2dpdmVuCi0gICAgICAgJiYgYXJnc19pbmZvLmlucHV0c19udW0gPT0gMAotICAgICAgICYmIGlzYXR0eSAoZmlsZW5vIChzdGRpbikpKQotLSAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotKyAgICBmcHJpbnRmIChzdGRlcnIsICIlcyIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotIAkJICAgICAgICJ0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZSBjaGFyYWN0ZXIuXG4iKSk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTMuYyBiL2V4YW1wbGVzL2V4YW1wbGUzLmMKK2luZGV4IGZjMTFjMWMuLmZmYjkwNDIgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlMy5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlMy5jCitAQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQogIAotICAgZG8KLUBAIC0xOTcsNyArMTk3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoZmVvZiAoc3RkaW4pKQotIAkgICAgYnJlYWs7CisgICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKICAKLS0JICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiaW5wdXQgZXJyb3IiKSk7Ci0rCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIF8oImlucHV0IGVycm9yIikpOworICAgcmMgPSBpZG5hX3RvX2FzY2lpX2x6IChidWYsICZwLCAwKTsKK0BAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgZnJlZSAocCk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTQuYyBiL2V4YW1wbGVzL2V4YW1wbGU0LmMKK2luZGV4IDFiMzE5YzkuLmEzMzE1YTEgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlNC5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlNC5jCitAQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCistICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICByYyA9IGlkbmFfdG9fdW5pY29kZV9semx6IChidWYsICZwLCAwKTsKK0BAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgZnJlZSAocCk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTUuYyBiL2V4YW1wbGVzL2V4YW1wbGU1LmMKK2luZGV4IGRmNTU3OTguLjI5ZDQwYjkgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlNS5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlNS5jCitAQCAtNjgsNyArNjgsNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCistICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICBwID0gc3RyaW5ncHJlcF9sb2NhbGVfdG9fdXRmOCAoYnVmKTsKK2RpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKK2luZGV4IGJlMWM3ZDEuLjEzZWIzYzkgMTAwNjQ0CistLS0gYS9zcmMvaWRuLmMKKysrKyBiL3NyYy9pZG4uYworQEAgLTQxOSw3ICs0MTksNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBzaXplX3QgaTsKKyAJICAgICAgZm9yIChpID0gMDsgcFtpXTsgaSsrKQorIAkJZnByaW50ZiAoc3RkZXJyLCAib3V0cHV0WyVsdV0gPSBVKyUwNHhcbiIsCistCQkJICh1bnNpZ25lZCBsb25nKSBpLCBwW2ldKTsKKysJCQkgKHVuc2lnbmVkIGxvbmcpIGksICh1bnNpZ25lZCkgcFtpXSk7CisgCSAgICB9CisgCisgCSAgZnByaW50ZiAoc3Rkb3V0LCAiJXNcbiIsIHApOworZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hLmMgYi90ZXN0cy90c3RfaWRuYS5jCitpbmRleCA0MTU3NjRlLi40YWMwNDZmIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X2lkbmEuYworKysrIGIvdGVzdHMvdHN0X2lkbmEuYworQEAgLTIyMCwxMyArMjIwLDE0IEBAIGRvaXQgKHZvaWQpCisgICBjaGFyIGxhYmVsWzEwMF07CisgICB1aW50MzJfdCAqdWNzNGxhYmVsID0gTlVMTDsKKyAgIHVpbnQzMl90IHRtcFsxMDBdOworLSAgc2l6ZV90IGxlbiwgbGVuMiwgaTsKKysgIHNpemVfdCBsZW4sIGxlbjI7CisgICBpbnQgcmM7CisrICB1bnNpZ25lZCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoZGVidWcpCistCXByaW50ZiAoIklETkEgZW50cnkgJWxkOiAlc1xuIiwgaSwgaWRuYVtpXS5uYW1lKTsKKysJcHJpbnRmICgiSUROQSBlbnRyeSAldTogJXNcbiIsIGksIGlkbmFbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMjM3LDcgKzIzOCw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSBpZG5hX3RvX2FzY2lpXzRpIChpZG5hW2ldLmluLCBpZG5hW2ldLmlubGVuLCBsYWJlbCwgaWRuYVtpXS5mbGFncyk7CisgICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG9hc2NpaXJjKQorIAl7CistCSAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTI1Niw3ICsyNTcsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChzdHJsZW4gKGlkbmFbaV0ub3V0KSAhPSBzdHJsZW4gKGxhYmVsKSB8fAorIAkgICAgICBzdHJjYXNlY21wIChpZG5hW2ldLm91dCwgbGFiZWwpICE9IDApCisgCSAgICB7CistCSAgICAgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CisgCSAgICB9CitAQCAtMjczLDggKzI3NCw4IEBAIGRvaXQgKHZvaWQpCisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CistCSAgcHJpbnRmICgiaW46ICVzICglbGQ9PSVsZClcbiIsIGlkbmFbaV0ub3V0LCBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKKy0JCSAgbGVuKTsKKysJICBwcmludGYgKCJpbjogJXMgKCVkPT0lZClcbiIsIGlkbmFbaV0ub3V0LCAoaW50KSBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKKysJCSAgKGludCkgbGVuKTsKKyAJICB1Y3M0cHJpbnQgKHVjczRsYWJlbCwgbGVuKTsKICAJfQogIAotICAgICAgIGlmIChzdHJsZW4gKGxpbmUpID4gMCkKLUBAIC0yMTUsNyArMjE1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCitAQCAtMjgyLDIwICsyODMsMjAgQEAgZG9pdCAodm9pZCkKKyAgICAgICByYyA9IGlkbmFfdG9fdW5pY29kZV80NGkgKHVjczRsYWJlbCwgbGVuLCB0bXAsICZsZW4yLCBpZG5hW2ldLmZsYWdzKTsKKyAgICAgICBpZiAoZGVidWcpCisgCXsKKy0JICBwcmludGYgKCJleHBlY3RlZCBvdXQgKCVsZCk6XG4iLAorKwkgIHByaW50ZiAoImV4cGVjdGVkIG91dCAoJWx1KTpcbiIsCisgCQkgIHJjID09IElETkFfU1VDQ0VTUyA/IGlkbmFbaV0uaW5sZW4gOiBsZW4pOworIAkgIGlmIChyYyA9PSBJRE5BX1NVQ0NFU1MpCisgCSAgICB1Y3M0cHJpbnQgKGlkbmFbaV0uaW4sIGlkbmFbaV0uaW5sZW4pOworIAkgIGVsc2UKKyAJICAgIHVjczRwcmludCAodWNzNGxhYmVsLCBsZW4pOworIAorLQkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWxkKTpcbiIsIGxlbjIpOworKwkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWQpOlxuIiwgKGludCkgbGVuMik7CisgCSAgdWNzNHByaW50ICh0bXAsIGxlbjIpOworIAl9CisgCisgICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG91bmljb2RlcmMpCisgCXsKKy0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMzA5LDExICszMTAsMTEgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAoZGVidWcpCiAgCSAgICB7Ci0gCSAgICAgIGZyZWUgKHApOwotLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgICBpZiAocmMgPT0gSUROQV9TVUNDRVNTKQorLQkJcHJpbnRmICgibGVuPSVsZCBsZW4yPSVsZFxuIiwgbGVuMiwgaWRuYVtpXS5pbmxlbik7CisrCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuMiwgKGludCkgaWRuYVtpXS5pbmxlbik7CisgCSAgICAgIGVsc2UKKy0JCXByaW50ZiAoImxlbj0lbGQgbGVuMj0lbGRcbiIsIGxlbiwgbGVuMik7CisrCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuLCAoaW50KSBsZW4yKTsKICAJICAgIH0KKy0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMi5jIGIvdGVzdHMvdHN0X2lkbmEyLmMKK2luZGV4IDY1YjNhNGQuLjM4OTMyY2EgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfaWRuYTIuYworKysrIGIvdGVzdHMvdHN0X2lkbmEyLmMKK0BAIC00NjEsMTQgKzQ2MSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlkbmEgaWRuYVtdID0geworIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGNoYXIgKm91dDsKKyAgIGludCByYzsKICAKLUBAIC0yNDAsNyArMjQwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChpZG5hKSAvIHNpemVvZiAoaWRuYVswXSk7IGkrKykKKyAgICAgeworICAgICAgIGlmIChkZWJ1ZykKKy0JcHJpbnRmICgiSUROQTIgZW50cnkgJWxkXG4iLCBpKTsKKysJcHJpbnRmICgiSUROQTIgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIGlmIChkZWJ1ZykKKyAJeworQEAgLTQ4Nyw3ICs0ODcsNyBAQCBkb2l0ICh2b2lkKQorIAkJCSAgICAgSUROQV9VU0VfU1REM19BU0NJSV9SVUxFUyk7CisgICAgICAgaWYgKHJjICE9IElETkFfU1VDQ0VTUyAmJiBzdHJsZW4gKGlkbmFbaV0ub3V0KSA+IDApCisgCXsKKy0JICBmYWlsICgiSUROQTIgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiSUROQTIgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGNvbnRpbnVlOworIAl9CisgCitAQCAtNTA0LDcgKzUwNCw3IEBAIGRvaXQgKHZvaWQpCisgCSAgaWYgKHN0cmxlbiAoaWRuYVtpXS5vdXQpICE9IHN0cmxlbiAob3V0KSB8fAorIAkgICAgICBzdHJjYXNlY21wIChpZG5hW2ldLm91dCwgb3V0KSAhPSAwKQogIAkgICAgewotIAkgICAgICBmcmVlIChyKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKy0JICAgICAgZmFpbCAoIklETkEyIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgiSUROQTIgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOwogIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMy5jIGIvdGVzdHMvdHN0X2lkbmEzLmMKK2luZGV4IGExODkzNzguLmY2NTYyOGMgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfaWRuYTMuYworKysrIGIvdGVzdHMvdHN0X2lkbmEzLmMKK0BAIC01OSwxMyArNTksMTMgQEAgZG9pdCAodm9pZCkKKyB7CisgICBpbnQgcmM7CisgICBjaGFyICpvdXQgPSBOVUxMOworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOwogIAotQEAgLTI3Nyw3ICsyNzcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsICZsZW4pOwotIAkgIGZyZWUgKHApOwotIAkgIGlmICghcSkKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGlkbmEpIC8gc2l6ZW9mIChpZG5hWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgcmMgPSBpZG5hX3RvX3VuaWNvZGVfOHo4eiAoaWRuYVtpXS5pbiwgJm91dCwgMCk7CisgICAgICAgaWYgKHJjICE9IElETkFfU1VDQ0VTUykKKy0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkICVkXG4iLCBpLCByYyk7CisrCWZhaWwgKCJJRE5BM1sldV0gZmFpbGVkICVkXG4iLCBpLCByYyk7CiAgCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLUBAIC0zMzYsNyArMzM2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKLSAJICBmcmVlIChxKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgICAgICAgaWYgKGRlYnVnICYmIHJjID09IElETkFfU1VDQ0VTUykKKyAJeworQEAgLTc1LDkgKzc1LDkgQEAgZG9pdCAodm9pZCkKKyAJfQogIAotIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKLUBAIC0zNjAsNyArMzYwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBxID0gc3RyaW5ncHJlcF91dGY4X3RvX3VjczQgKHAsIC0xLCBOVUxMKTsKLSAJICBmcmVlIChwKTsKLSAJICBpZiAoIXEpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgICAgICAgaWYgKHN0cmNtcCAob3V0LCBpZG5hW2ldLm91dCkgIT0gMCkKKy0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkXG4iLCBpKTsKKysJZmFpbCAoIklETkEzWyV1XSBmYWlsZWRcbiIsIGkpOworICAgICAgIGVsc2UgaWYgKGRlYnVnKQorLQlwcmludGYgKCJJRE5BM1slbGRdIHN1Y2Nlc3NcbiIsIGkpOworKwlwcmludGYgKCJJRE5BM1sldV0gc3VjY2Vzc1xuIiwgaSk7CiAgCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLUBAIC00MzgsNyArNDM4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCisgICAgICAgaWYgKG91dCkKKyAJaWRuX2ZyZWUgKG91dCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X25ma2MuYyBiL3Rlc3RzL3RzdF9uZmtjLmMKK2luZGV4IGQxNTBmZWMuLmY1YWY5YzYgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfbmZrYy5jCisrKysgYi90ZXN0cy90c3RfbmZrYy5jCitAQCAtNjgsMTggKzY4LDE4IEBAIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKyAgIGNoYXIgKm91dDsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKG5ma2MpIC8gc2l6ZW9mIChuZmtjWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJORktDIGVudHJ5ICVsZFxuIiwgaSk7CisrCXByaW50ZiAoIk5GS0MgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIG91dCA9IHN0cmluZ3ByZXBfdXRmOF9uZmtjX25vcm1hbGl6ZSAobmZrY1tpXS5pbiwKKyAJCQkJCSAgICAoc3NpemVfdCkgc3RybGVuIChuZmtjW2ldLmluKSk7CisgICAgICAgaWYgKG91dCA9PSBOVUxMKQorIAl7CistCSAgZmFpbCAoIk5GS0MgZW50cnkgJWxkIGZhaWxlZCBmYXRhbGx5XG4iLCBpKTsKKysJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWQgZmF0YWxseVxuIiwgaSk7CisgCSAgY29udGludWU7CisgCX0KKyAKK0BAIC0xMTQsNyArMTE0LDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICBpZiAoc3RybGVuIChuZmtjW2ldLm91dCkgIT0gc3RybGVuIChvdXQpIHx8CisgCSAgbWVtY21wIChuZmtjW2ldLm91dCwgb3V0LCBzdHJsZW4gKG91dCkpICE9IDApCisgCXsKKy0JICBmYWlsICgiTkZLQyBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9wcjI5LmMgYi90ZXN0cy90c3RfcHIyOS5jCitpbmRleCAzZGM1NDY2Li4xMWQwZWRlIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3ByMjkuYworKysrIGIvdGVzdHMvdHN0X3ByMjkuYworQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0diB0dltdID0geworIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGludCByYzsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHR2KSAvIHNpemVvZiAodHZbMF0pOyBpKyspCitAQCAtMTAwLDcgKzEwMCw3IEBAIGRvaXQgKHZvaWQpCisgCXsKKyAJICB1aW50MzJfdCAqcCwgKnE7CisgCistCSAgcHJpbnRmICgiUFIyOSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCB0dltpXS5uYW1lKTsKKysJICBwcmludGYgKCJQUjI5IGVudHJ5ICV1OiAlc1xuIiwgaSwgdHZbaV0ubmFtZSk7CisgCisgCSAgcHJpbnRmICgiaW46XG4iKTsKKyAJICB1Y3M0cHJpbnQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7CitAQCAtMTIwLDcgKzEyMCw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSBwcjI5XzQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7CisgICAgICAgaWYgKHJjICE9IHR2W2ldLnJjKQorIAl7CistCSAgZmFpbCAoIlBSMjkgZW50cnkgJWxkIGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKKysJICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTEyOSw3ICsxMjksNyBAQCBkb2l0ICh2b2lkKQorICAgICAgIHJjID0gcHIyOV80eiAodHZbaV0uaW4pOworICAgICAgIGlmIChyYyAhPSB0dltpXS5yYykKKyAJeworLQkgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7CisrCSAgZmFpbCAoIlBSMjkgZW50cnkgJXUgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0xNDIsNyArMTQyLDcgQEAgZG9pdCAodm9pZCkKKyAJcCA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4ICh0dltpXS5pbiwgKHNzaXplX3QpIHR2W2ldLmlubGVuLAorIAkJCQkgICAgICZpdGVtc19yZWFkLCAmaXRlbXNfd3JpdHRlbik7CisgCWlmIChwID09IE5VTEwpCistCSAgZmFpbCAoIkZBSUw6IHN0cmluZ3ByZXBfdWNzNF90b191dGY4KHR2WyVsZF0pID09IE5VTExcbiIsIGkpOworKwkgIGZhaWwgKCJGQUlMOiBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCh0dlsldV0pID09IE5VTExcbiIsIGkpOworIAlpZiAoZGVidWcpCisgCSAgaGV4cHJpbnQgKHAsIHN0cmxlbiAocCkpOworIAorQEAgLTE1MCw3ICsxNTAsNyBAQCBkb2l0ICh2b2lkKQorIAlmcmVlIChwKTsKKyAJaWYgKHJjICE9IHR2W2ldLnJjKQorIAkgIHsKKy0JICAgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCisrCSAgICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCisgCQkgIGksIHR2W2ldLnJjLCByYyk7CisgCSAgICBpZiAoZGVidWcpCisgCSAgICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKK2RpZmYgLS1naXQgYS90ZXN0cy90c3RfcHVueWNvZGUuYyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCitpbmRleCA0OTNiOGEyLi45OTc3NDRhIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3B1bnljb2RlLmMKKysrKyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCitAQCAtMTczLDcgKzE3Myw4IEBAIGRvaXQgKHZvaWQpCisgICBjaGFyICpwOworICAgdWludDMyX3QgKnE7CisgICBpbnQgcmM7CistICBzaXplX3QgaSwgb3V0bGVuOworKyAgc2l6ZV90IG91dGxlbjsKKysgIHVuc2lnbmVkIGk7CisgCisgICBwID0gbWFsbG9jIChzaXplb2YgKCpwKSAqIEJVRlNJWik7CisgICBpZiAocCA9PSBOVUxMKQorQEAgLTE4Niw3ICsxODcsNyBAQCBkb2l0ICh2b2lkKQorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAocHVueWNvZGUpIC8gc2l6ZW9mIChwdW55Y29kZVswXSk7IGkrKykKKyAgICAgeworICAgICAgIGlmIChkZWJ1ZykKKy0JcHJpbnRmICgiUFVOWUNPREUgZW50cnkgJWxkOiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7CisrCXByaW50ZiAoIlBVTllDT0RFIGVudHJ5ICV1OiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMTk5LDcgKzIwMCw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgIE5VTEwsICZvdXRsZW4sIHApOworICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTIyMSw3ICsyMjIsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChzdHJsZW4gKHB1bnljb2RlW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAorIAkgICAgICBtZW1jbXAgKHB1bnljb2RlW2ldLm91dCwgcCwgc3RybGVuIChwKSkgIT0gMCkKICAJICAgIHsKLSAJICAgICAgZnJlZSAocCk7Ci0tCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CistCSAgICAgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgicHVueWNvZGUoKSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CiAgCSAgICB9Ci0gCi1AQCAtNDk0LDcgKzQ5NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgciA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4IChxLCAtMSwgTlVMTCwgTlVMTCk7Ci0gCSAgZnJlZSAocSk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAotIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKLUBAIC01MjMsNyArNTIzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChwKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KLSAKLUBAIC01MzcsNyArNTM3LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91dGY4X25ma2Nfbm9ybWFsaXplIChwLCAtMSk7Ci0gCSAgZnJlZSAocCk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0rCQkgICBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotIAotIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtMjQxLDcgKzI0Miw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgICZvdXRsZW4sIHEsIE5VTEwpOworICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisrCSAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0yNjIsNyArMjYzLDcgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAocHVueWNvZGVbaV0uaW5sZW4gIT0gb3V0bGVuIHx8CisgCSAgICAgIG1lbWNtcCAocHVueWNvZGVbaV0uaW4sIHEsIG91dGxlbikgIT0gMCkKICAJICAgIHsKLUBAIC01NDcsNyArNTQ4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChyKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KKy0JICAgICAgZmFpbCAoInB1bnljb2RlX2RlY29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgicHVueWNvZGVfZGVjb2RlKCkgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJlcnJvci5jIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKK2luZGV4IDcxZmZmNTkuLjczMGY1ZTQgMTAwNjQ0CistLS0gYS90ZXN0cy90c3Rfc3RyZXJyb3IuYworKysrIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKK0BAIC0xMTAsNyArMTEwLDcgQEAgZG9pdCAodm9pZCkKKyAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBhbGwgZXJyb3IgY29kZXMuICovCiAgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTEyNiwxMyArMTI2LDEzIEBAIGRvaXQgKHZvaWQpCisgCSAgICBicmVhazsKKyAJICB9CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJpZG5hICVsZDogJXNcbiIsIGksIHApOworKwkgIHByaW50ZiAoImlkbmEgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE0MSwxMyArMTQxLDEzIEBAIGRvaXQgKHZvaWQpCisgCWlmIChwID09IGxhc3RfcCkKKyAJICBicmVhazsKKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoInByMjkgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgicHIyOSAldTogJXNcbiIsIGksIHApOworIAlsYXN0X3AgPSBwOworICAgICAgIH0KKyAgIH0KKyAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTU2LDEzICsxNTYsMTMgQEAgZG9pdCAodm9pZCkKKyAJaWYgKHAgPT0gbGFzdF9wKQorIAkgIGJyZWFrOworIAlpZiAoZGVidWcpCistCSAgcHJpbnRmICgicHVueWNvZGUgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgicHVueWNvZGUgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE4MywxMyArMTgzLDEzIEBAIGRvaXQgKHZvaWQpCisgCSAgICBicmVhazsKKyAJICB9CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJzdHJpbmdwcmVwICVsZDogJXNcbiIsIGksIHApOworKwkgIHByaW50ZiAoInN0cmluZ3ByZXAgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE5OCw3ICsxOTgsNyBAQCBkb2l0ICh2b2lkKQorIAlpZiAocCA9PSBsYXN0X3ApCisgCSAgYnJlYWs7CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJ0bGQgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgidGxkICV1OiAlc1xuIiwgaSwgcCk7CisgCWxhc3RfcCA9IHA7CisgICAgICAgfQorICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJpbmdwcmVwLmMgYi90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCitpbmRleCAxNDljZTZmLi43YzlhYjA2IDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYworKysrIGIvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYworQEAgLTIwNSw3ICsyMDUsNyBAQCBkb2l0ICh2b2lkKQorIHsKKyAgIGNoYXIgKnA7CisgICBpbnQgcmM7CistICBzaXplX3QgaTsKKysgIHVuc2lnbmVkIGk7CisgCisgICBpZiAoIXN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiAoU1RSSU5HUFJFUF9WRVJTSU9OKSkKKyAgICAgZmFpbCAoInN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiBmYWlsZWQgKGhlYWRlciAlcyBydW50aW1lICVzKVxuIiwKK0BAIC0yMjQsNyArMjI0LDcgQEAgZG9pdCAodm9pZCkKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHN0cnByZXApIC8gc2l6ZW9mIChzdHJwcmVwWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJTVFJJTkdQUkVQIGVudHJ5ICVsZFxuIiwgaSk7CisrCXByaW50ZiAoIlNUUklOR1BSRVAgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIGlmIChkZWJ1ZykKKyAJeworQEAgLTI0NywxMiArMjQ3LDEyIEBAIGRvaXQgKHZvaWQpCisgCSAgY29udGludWU7CisgCWVsc2UgaWYgKGwgPT0gTlVMTCkKKyAJICB7CistCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICVsZFxuIiwgaSk7CisrCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICV1XG4iLCBpKTsKKyAJICAgIGNvbnRpbnVlOworIAkgIH0KKyAJZWxzZSBpZiAoc3RyY21wIChzdHJwcmVwW2ldLmluLCB4KSAhPSAwKQorIAkgIHsKKy0JICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJWxkXG4iLCBpKTsKKysJICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJXVcbiIsIGkpOworIAkgICAgaWYgKGRlYnVnKQorIAkgICAgICB7CisgCQlwdXRzICgiZXhwZWN0ZWQ6Iik7CitAQCAtMjc0LDcgKzI3NCw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgICAgICJOYW1lcHJlcCIsIHN0cnByZXBbaV0uZmxhZ3MpOworICAgICAgIGlmIChyYyAhPSBzdHJwcmVwW2ldLnJjKQorIAl7CistCSAgZmFpbCAoInN0cmluZ3ByZXAoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBpZiAocmMgPT0gU1RSSU5HUFJFUF9PSykKK0BAIC0zMDIsNyArMzAyLDcgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAoc3RybGVuIChzdHJwcmVwW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAorIAkgICAgICBtZW1jbXAgKHN0cnByZXBbaV0ub3V0LCBwLCBzdHJsZW4gKHApKSAhPSAwKQorIAkgICAgeworLQkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIChsb25nKSBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF90bGQuYyBiL3Rlc3RzL3RzdF90bGQuYworaW5kZXggMmY4ZTEyZS4uZDAzOGM3OSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF90bGQuYworKysrIGIvdGVzdHMvdHN0X3RsZC5jCitAQCAtODAsNyArODAsNyBAQCBjb25zdCBUbGRfdGFibGUgKiBteV90bGRfdGFibGVzW10gPQorIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGNvbnN0IFRsZF90YWJsZSAqdGxkdGFibGU7CisgICBjaGFyICpvdXQ7CisgICBzaXplX3QgZXJycG9zOworQEAgLTIwNiw3ICsyMDYsNyBAQCBkb2l0ICh2b2lkKQorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAodGxkKSAvIHNpemVvZiAodGxkWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJUTEQgZW50cnkgJWxkOiAlc1xuIiwgaSwgdGxkW2ldLm5hbWUpOworKwlwcmludGYgKCJUTEQgZW50cnkgJXU6ICVzXG4iLCBpLCB0bGRbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMjE3LDcgKzIxNyw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgdGxkdGFibGUgPSB0bGRfZGVmYXVsdF90YWJsZSAodGxkW2ldLnRsZCwgTlVMTCk7CisgICAgICAgaWYgKHRsZHRhYmxlID09IE5VTEwpCisgCXsKKy0JICBmYWlsICgiVExEIGVudHJ5ICVsZCB0bGRfZ2V0X3RhYmxlICglcylcbiIsIGksIHRsZFtpXS50bGQpOworKwkgIGZhaWwgKCJUTEQgZW50cnkgJXUgdGxkX2dldF90YWJsZSAoJXMpXG4iLCBpLCB0bGRbaV0udGxkKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjI2LDcgKzIyNiw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSB0bGRfY2hlY2tfNHQgKHRsZFtpXS5pbiwgdGxkW2ldLmlubGVuLCAmZXJycG9zLCB0bGR0YWJsZSk7CisgICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjM3LDcgKzIzNyw3IEBAIGRvaXQgKHZvaWQpCisgCisgICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgZmFpbCAoIlRMRCBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorQEAgLTI0NSwxMiArMjQ1LDEyIEBAIGRvaXQgKHZvaWQpCisgCXsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJyZXR1cm5lZCBlcnJwb3MgJWxkIGV4cGVjdGVkIGVycnBvcyAlbGRcbiIsCistCQkgICAgZXJycG9zLCB0bGRbaV0uZXJycG9zKTsKKysJCSAgICAobG9uZykgZXJycG9zLCAobG9uZykgdGxkW2ldLmVycnBvcyk7CisgCisgCSAgaWYgKHRsZFtpXS5lcnJwb3MgIT0gZXJycG9zKQorIAkgICAgeworLQkgICAgICBmYWlsICgiVExEIGVudHJ5ICVsZCBmYWlsZWQgYmVjYXVzZSBlcnJwb3MgJWxkICE9ICVsZFxuIiwgaSwKKy0JCSAgICB0bGRbaV0uZXJycG9zLCBlcnJwb3MpOworKwkgICAgICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZCBiZWNhdXNlIGVycnBvcyAlbGQgIT0gJWxkXG4iLCBpLAorKwkJICAgIChsb25nKSB0bGRbaV0uZXJycG9zLCAobG9uZykgZXJycG9zKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorQEAgLTI2MiwxMiArMjYyLDEyIEBAIGRvaXQgKHZvaWQpCisgCXJjID0gdGxkX2NoZWNrXzh6ICh0bGRbaV0uZXhhbXBsZSwgJmVycnBvcywgTlVMTCk7CisgCWlmIChyYyAhPSB0bGRbaV0ucmMpCisgCSAgeworLQkgICAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICAgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgIGlmIChkZWJ1ZykKKyAJICAgICAgcHJpbnRmICgiRVJST1JcbiIpOworIAkgIH0KKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoIlRMRCBlbnRyeSAlbGQgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKKysJICBwcmludGYgKCJUTEQgZW50cnkgJXUgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKKyAgICAgICB9CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbHMuYyBiL3Rlc3RzL3V0aWxzLmMKK2luZGV4IDcxN2VlMDEuLjU1NzdkYzMgMTAwNjQ0CistLS0gYS90ZXN0cy91dGlscy5jCisrKysgYi90ZXN0cy91dGlscy5jCitAQCAtNDksNyArNDksNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorIHsKKyAgIHNpemVfdCBpOworIAorLSAgcHJpbnRmICgiIChsZW5ndGggJWxkIGJ5dGVzKTpcblx0IiwgbGVuKTsKKysgIHByaW50ZiAoIiAobGVuZ3RoICVsZCBieXRlcyk6XG5cdCIsIChsb25nKSBsZW4pOworICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICB7CisgICAgICAgaWYgKCgoc3RyW2ldICYgMHhGRikgPj0gJ0EnICYmIChzdHJbaV0gJiAweEZGKSA8PSAnWicpIHx8CitAQCAtNTgsNyArNTgsNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorIAkgIHx8IChzdHJbaV0gJiAweEZGKSA9PSAnICcgfHwgKHN0cltpXSAmIDB4RkYpID09ICcuJykKKyAJcHJpbnRmICgiJWMiLCAoc3RyW2ldICYgMHhGRikpOworICAgICAgIGVsc2UKKy0JcHJpbnRmICgiXFx4JTAyWCIsIChzdHJbaV0gJiAweEZGKSk7CisrCXByaW50ZiAoIlxceCUwMlgiLCAodW5zaWduZWQpIChzdHJbaV0gJiAweEZGKSk7CisgICAgICAgaWYgKChpICsgMSkgJSAxNiA9PSAwICYmIChpICsgMSkgPCBsZW4pCisgCXByaW50ZiAoIidcblx0JyIpOworICAgICB9CitAQCAtNzMsNyArNzMsNyBAQCBoZXhwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorICAgcHJpbnRmICgiXHQ7OyAiKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICAgeworLSAgICAgIHByaW50ZiAoIiUwMnggIiwgKHN0cltpXSAmIDB4RkYpKTsKKysgICAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgKHN0cltpXSAmIDB4RkYpKTsKKyAgICAgICBpZiAoKGkgKyAxKSAlIDggPT0gMCkKKyAJcHJpbnRmICgiICIpOworICAgICAgIGlmICgoaSArIDEpICUgMTYgPT0gMCAmJiBpICsgMSA8IGxlbikKIC0tIAotMi44LjEKKzEuOS4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZGM3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMTgxIEBACitGcm9tIDgyZjk4ZGNiYzQyOWJiZTg5YTk4MzdjNTMzY2JjYmMwMmU3N2M3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+CitEYXRlOiBUdWUsIDI4IEp1biAyMDE2IDEyOjQzOjMxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGlkbjogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzogSW4gZnVuY3Rpb24gJ21haW4nOgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTcyOjc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworfCAgICAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE4Nzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgorfCAgICAgIF5+fn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIwMjo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKK3wgICAgIF5+fn5+Cit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMjA6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyNDU6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyODE6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzY0OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0NDI6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0OTg6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjUyNzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKK3wgICAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU1MTo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgIF4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9pZG4uYyB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYworaW5kZXggYmUxYzdkMS4uNjhlNDI5MSAxMDA2NDQKKy0tLSBhL3NyYy9pZG4uYworKysrIGIvc3JjL2lkbi5jCitAQCAtMTcwLDcgKzE3MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICAgKGFyZ3NfaW5mby5pZG5hX3RvX3VuaWNvZGVfZ2l2ZW4gPyAxIDogMCkgKworICAgICAgIChhcmdzX2luZm8ubmZrY19naXZlbiA/IDEgOiAwKSAhPSAxKQorICAgICB7CistICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworKyAgICAgIGVycm9yICgwLCAwLCAiJXMiLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKKyAgICAgICB1c2FnZSAoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorQEAgLTE4NSw3ICsxODUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgaWYgKCFhcmdzX2luZm8ucXVpZXRfZ2l2ZW4KKyAgICAgICAmJiBhcmdzX2luZm8uaW5wdXRzX251bSA9PSAwCisgICAgICAgJiYgaXNhdHR5IChmaWxlbm8gKHN0ZGluKSkpCistICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCisrICAgIGZwcmludGYgKHN0ZGVyciwgIiVzIiwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCisgCQkgICAgICAgInRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lIGNoYXJhY3Rlci5cbiIpKTsKKyAKKyAgIGRvCitAQCAtMTk3LDcgKzE5Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKGZlb2YgKHN0ZGluKSkKKyAJICAgIGJyZWFrOworIAorLQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKKysJICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgXygiaW5wdXQgZXJyb3IiKSk7CisgCX0KKyAKKyAgICAgICBpZiAoc3RybGVuIChsaW5lKSA+IDApCitAQCAtMjE1LDcgKzIxNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKCFxKQorIAkgICAgeworIAkgICAgICBmcmVlIChwKTsKKy0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAJICAgIH0KKyAKK0BAIC0yNDAsNyArMjQwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHIpOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgfQorIAorQEAgLTI3Nyw3ICsyNzcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsICZsZW4pOworIAkgIGZyZWUgKHApOworIAkgIGlmICghcSkKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAKKyAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQorQEAgLTMzNiw3ICszMzYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOworIAkgIGZyZWUgKHEpOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAKKyAJICBwID0gc3RyaW5ncHJlcF91dGY4X3RvX2xvY2FsZSAocik7CitAQCAtMzYwLDcgKzM2MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgTlVMTCk7CisgCSAgZnJlZSAocCk7CisgCSAgaWYgKCFxKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAorIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtNDM4LDcgKzQzOCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKCFxKQorIAkgICAgeworIAkgICAgICBmcmVlIChwKTsKKy0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAJICAgIH0KKyAKK0BAIC00OTQsNyArNDk0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKKyAJICBmcmVlIChxKTsKKyAJICBpZiAoIXIpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCisgCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOworQEAgLTUyMyw3ICs1MjMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBpZiAoIXEpCisgCQl7CisgCQkgIGZyZWUgKHApOworLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkJfQorIAorQEAgLTUzNyw3ICs1MzcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3V0ZjhfbmZrY19ub3JtYWxpemUgKHAsIC0xKTsKKyAJICBmcmVlIChwKTsKKyAJICBpZiAoIXIpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOworKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKysJCSAgIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7CisgCisgCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKKyAJICAgIHsKK0BAIC01NDcsNyArNTQ4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICAgICAgaWYgKCFxKQorIAkJeworIAkJICBmcmVlIChyKTsKKy0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAJCX0KKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ2YTZlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMzQgQEAKK0Zyb20gMjMwOTMwYjNiYzNlNDMxYjgxOWViNDU0MjBjYjQyNDc1ZDgzY2E5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/dXRmOD9xP1RpbT0yMFI9QzM9QkNoc2VuPz0gPHRpbS5ydWVoc2VuQGdteC5kZT4KK0RhdGU6IFdlZCwgMSBGZWIgMjAxNyAxMDo0NDozNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcGRhdGUgaW50cHJvcHMuaCBmb3IgZ2NjLTcgY29tcGF0aWJpbGl0eQorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBnbC9pbnRwcm9wcy5oICAgICAgICAgIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBsaWIvZ2x0ZXN0cy9pbnRwcm9wcy5oIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2wvaW50cHJvcHMuaCBiL2dsL2ludHByb3BzLmgKK2luZGV4IGUxZmNlNWMuLmViMDZiNjkgMTAwNjQ0CistLS0gYS9nbC9pbnRwcm9wcy5oCisrKysgYi9nbC9pbnRwcm9wcy5oCitAQCAtMSwxOCArMSwxOCBAQAorIC8qIGludHByb3BzLmggLS0gcHJvcGVydGllcyBvZiBpbnRlZ2VyIHR5cGVzCisgCistICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAvKiBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LiAgKi8KK0BAIC00NywxMiArNDcsMTYgQEAKKyAKKyAvKiBNaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBmb3IgaW50ZWdlciB0eXBlcyBhbmQgZXhwcmVzc2lvbnMuICAqLworIAorKy8qIFRoZSB3aWR0aCBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULgorKyAgIFBhZGRpbmcgYml0cyBhcmUgbm90IHN1cHBvcnRlZDsgdGhpcyBpcyBjaGVja2VkIGF0IGNvbXBpbGUtdGltZSBiZWxvdy4gICovCisrI2RlZmluZSBUWVBFX1dJRFRIKHQpIChzaXplb2YgKHQpICogQ0hBUl9CSVQpCisrCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgaW50ZWdlciB0eXBlIFQuICAqLworICNkZWZpbmUgVFlQRV9NSU5JTVVNKHQpICgodCkgfiBUWVBFX01BWElNVU0gKHQpKQorICNkZWZpbmUgVFlQRV9NQVhJTVVNKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICgodCkgKCEgVFlQRV9TSUdORUQgKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICA/ICh0KSAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgOiAoKCgodCkgMSA8PCAoc2l6ZW9mICh0KSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkpKQorKyAgICAgICAgOiAoKCgodCkgMSA8PCAoVFlQRV9XSURUSCAodCkgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisgCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiBFLAorICAgIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KK0BAIC02NSw3ICs2OSwxMyBAQAorICAgID8gX0dMX1NJR05FRF9JTlRfTUFYSU1VTSAoZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6IF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQgKGUsIDEpKQorICNkZWZpbmUgX0dMX1NJR05FRF9JTlRfTUFYSU1VTShlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKHNpemVvZiAoKGUpICsgMCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpCisrICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChUWVBFX1dJRFRIICgoZSkgKyAwKSAtIDIpKSAtIDEpICogMiArIDEpCisrCisrLyogV29yayBhcm91bmQgT3BlblZNUyBpbmNvbXBhdGliaWxpdHkgd2l0aCBDOTkuICAqLworKyNpZiAhZGVmaW5lZCBMTE9OR19NQVggJiYgZGVmaW5lZCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01BWCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01JTiBfX0lOVDY0X01JTgorKyNlbmRpZgorIAorIC8qIFRoaXMgaW5jbHVkZSBmaWxlIGFzc3VtZXMgdGhhdCBzaWduZWQgdHlwZXMgYXJlIHR3bydzIGNvbXBsZW1lbnQgd2l0aG91dAorICAgIHBhZGRpbmcgYml0czsgdGhlIGFib3ZlIG1hY3JvcyBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBvdGhlcndpc2UuCitAQCAtODQsMTAgKzk0LDE1IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGludCkgPT0gTE9OR19NQVgpOworIHZlcmlmeSAoVFlQRV9NSU5JTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NSU4pOworIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNlbmRpZgorKy8qIFNpbWlsYXJseSwgc2FuaXR5LWNoZWNrIG9uZSBJU08vSUVDIFRTIDE4NjYxLTE6MjAxNCBtYWNybyBpZiBkZWZpbmVkLiAgKi8KKysjaWZkZWYgVUlOVF9XSURUSAorK3ZlcmlmeSAoVFlQRV9XSURUSCAodW5zaWduZWQgaW50KSA9PSBVSU5UX1dJRFRIKTsKKysjZW5kaWYKKyAKKyAvKiBEb2VzIHRoZSBfX3R5cGVvZl9fIGtleXdvcmQgd29yaz8gIFRoaXMgY291bGQgYmUgZG9uZSBieQorICAgICdjb25maWd1cmUnLCBidXQgZm9yIG5vdyBpdCdzIGVhc2llciB0byBkbyBpdCBieSBoYW5kLiAgKi8KKy0jaWYgKDIgPD0gX19HTlVDX18gfHwgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18gXAorKyNpZiAoMiA8PSBfX0dOVUNfXyBcCisrICAgICB8fCAoMTIxMCA8PSBfX0lCTUNfXyAmJiBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXykgXAorICAgICAgfHwgKDB4NTExMCA8PSBfX1NVTlBST19DICYmICFfX1NURENfXykpCisgIyBkZWZpbmUgX0dMX0hBVkVfX19UWVBFT0ZfXyAxCisgI2Vsc2UKK0BAIC0xMTYsOCArMTMxLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgc2lnbmVkLCB0aGlzIG1hY3JvIG1heSBvdmVyZXN0aW1hdGUgdGhlIHRydWUgYm91bmQgYnkgb25lIGJ5dGUgd2hlbgorICAgIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZXMgb2Ygc2l6ZSAyLCA0LCAxNiwgLi4uIGJ5dGVzLiAgKi8KKyAjZGVmaW5lIElOVF9TVFJMRU5fQk9VTkQodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoc2l6ZW9mICh0KSAqIENIQVJfQklUICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgICAgICAgIFwKKysgIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKFRZUEVfV0lEVEggKHQpIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSBcCisgICAgKyBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpCisgCisgLyogQm91bmQgb24gYnVmZmVyIHNpemUgbmVlZGVkIHRvIHJlcHJlc2VudCBhbiBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULAorQEAgLTIyMiwyMCArMjM2LDIzIEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICAgID8gKGEpIDwgKG1pbikgPj4gKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogKG1heCkgPj4gKGIpIDwgKGEpKQorIAorLS8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG51bGwuICAqLworLSNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTCAoNyA8PSBfX0dOVUNfXykKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBub24tbnVsbC4gICovCisrI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cgKDUgPD0gX19HTlVDX18pCisrCisrLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKEEsIEIsIEMpIHdvcmtzLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QICg3IDw9IF9fR05VQ19fKQorIAorIC8qIFRoZSBfR0wqX09WRVJGTE9XIG1hY3JvcyBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyB0aGUKKyAgICAqX1JBTkdFX09WRVJGTE9XIG1hY3JvcywgZXhjZXB0IHRoYXQgdGhleSBkbyBub3QgYXNzdW1lIHRoYXQgb3BlcmFuZHMKKyAgICAoZS5nLiwgQSBhbmQgQikgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIE1JTiBhbmQgTUFYLiAgSW5zdGVhZCwgdGhleSBhc3N1bWUKKyAgICB0aGF0IHRoZSByZXN1bHQgKGUuZy4sIEEgKyBCKSBoYXMgdGhhdCB0eXBlLiAgKi8KKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorLSMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX3N1Yl9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX211bF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkgKikgMCkKKysjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKKysjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX3N1Yl9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX211bF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSkgMCkKKyAjZWxzZQorICMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtaW4pIDwgMCA/IElOVF9BRERfUkFOR0VfT1ZFUkZMT1cgKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMTUsNyArMzMyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfQUREX09WRVJGTE9XKQorICNkZWZpbmUgSU5UX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIpIFwKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9TVUJUUkFDVF9PVkVSRkxPVykKKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgSU5UX1NVQlRSQUNUX09WRVJGTE9XICgwLCBhKQorICNlbHNlCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBcCitAQCAtMzQ5LDEwICszNjYsNiBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjZGVmaW5lIElOVF9NVUxUSVBMWV9XUkFQVihhLCBiLCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCAqLCBfX2J1aWx0aW5fbXVsX292ZXJmbG93LCBJTlRfTVVMVElQTFlfT1ZFUkZMT1cpCisgCistI2lmbmRlZiBfX2hhc19idWlsdGluCistIyBkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCistI2VuZGlmCistCisgLyogTm9uemVybyBpZiB0aGlzIGNvbXBpbGVyIGhhcyBHQ0MgYnVnIDY4MTkzIG9yIENsYW5nIGJ1ZyAyNTM5MC4gIFNlZToKKyAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02ODE5MworICAgIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTAKK0BAIC0zNjksNyArMzgyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgdGhlIG9wZXJhdGlvbi4gIEJVSUxUSU4gaXMgdGhlIGJ1aWx0aW4gb3BlcmF0aW9uLCBhbmQgT1ZFUkZMT1cgdGhlCisgICAgb3ZlcmZsb3cgcHJlZGljYXRlLiAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCBvdmVyZmxvd3MuICBTZWUgYWJvdmUKKyAgICBmb3IgcmVzdHJpY3Rpb25zLiAgKi8KKy0jaWYgNSA8PSBfX0dOVUNfXyB8fCBfX2hhc19idWlsdGluIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgYnVpbHRpbiAoYSwgYiwgcikKKyAjZWxpZiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dMX19HRU5FUklDX0JPR1VTCisgIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIFwKK0BAIC00MTIsNyArNDI1LDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgIyBlbHNlCisgIyAgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFZfTE9OR0lTSChhLCBiLCByLCBvcCwgb3ZlcmZsb3cpIFwKKyAgICAgX0dMX0lOVF9PUF9DQUxDIChhLCBiLCByLCBvcCwgb3ZlcmZsb3csIHVuc2lnbmVkIGxvbmcgaW50LCBcCistICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkpCisrICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkKKyAjIGVuZGlmCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEvbGliL2dsdGVzdHMvaW50cHJvcHMuaCBiL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKK2luZGV4IGUxZmNlNWMuLmViMDZiNjkgMTAwNjQ0CistLS0gYS9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oCisrKysgYi9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oCitAQCAtMSwxOCArMSwxOCBAQAorIC8qIGludHByb3BzLmggLS0gcHJvcGVydGllcyBvZiBpbnRlZ2VyIHR5cGVzCisgCistICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAvKiBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LiAgKi8KK0BAIC00NywxMiArNDcsMTYgQEAKKyAKKyAvKiBNaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBmb3IgaW50ZWdlciB0eXBlcyBhbmQgZXhwcmVzc2lvbnMuICAqLworIAorKy8qIFRoZSB3aWR0aCBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULgorKyAgIFBhZGRpbmcgYml0cyBhcmUgbm90IHN1cHBvcnRlZDsgdGhpcyBpcyBjaGVja2VkIGF0IGNvbXBpbGUtdGltZSBiZWxvdy4gICovCisrI2RlZmluZSBUWVBFX1dJRFRIKHQpIChzaXplb2YgKHQpICogQ0hBUl9CSVQpCisrCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgaW50ZWdlciB0eXBlIFQuICAqLworICNkZWZpbmUgVFlQRV9NSU5JTVVNKHQpICgodCkgfiBUWVBFX01BWElNVU0gKHQpKQorICNkZWZpbmUgVFlQRV9NQVhJTVVNKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICgodCkgKCEgVFlQRV9TSUdORUQgKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICA/ICh0KSAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgOiAoKCgodCkgMSA8PCAoc2l6ZW9mICh0KSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkpKQorKyAgICAgICAgOiAoKCgodCkgMSA8PCAoVFlQRV9XSURUSCAodCkgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisgCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiBFLAorICAgIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KK0BAIC02NSw3ICs2OSwxMyBAQAorICAgID8gX0dMX1NJR05FRF9JTlRfTUFYSU1VTSAoZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6IF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQgKGUsIDEpKQorICNkZWZpbmUgX0dMX1NJR05FRF9JTlRfTUFYSU1VTShlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKHNpemVvZiAoKGUpICsgMCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpCisrICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChUWVBFX1dJRFRIICgoZSkgKyAwKSAtIDIpKSAtIDEpICogMiArIDEpCisrCisrLyogV29yayBhcm91bmQgT3BlblZNUyBpbmNvbXBhdGliaWxpdHkgd2l0aCBDOTkuICAqLworKyNpZiAhZGVmaW5lZCBMTE9OR19NQVggJiYgZGVmaW5lZCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01BWCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01JTiBfX0lOVDY0X01JTgorKyNlbmRpZgorIAorIC8qIFRoaXMgaW5jbHVkZSBmaWxlIGFzc3VtZXMgdGhhdCBzaWduZWQgdHlwZXMgYXJlIHR3bydzIGNvbXBsZW1lbnQgd2l0aG91dAorICAgIHBhZGRpbmcgYml0czsgdGhlIGFib3ZlIG1hY3JvcyBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBvdGhlcndpc2UuCitAQCAtODQsMTAgKzk0LDE1IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGludCkgPT0gTE9OR19NQVgpOworIHZlcmlmeSAoVFlQRV9NSU5JTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NSU4pOworIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNlbmRpZgorKy8qIFNpbWlsYXJseSwgc2FuaXR5LWNoZWNrIG9uZSBJU08vSUVDIFRTIDE4NjYxLTE6MjAxNCBtYWNybyBpZiBkZWZpbmVkLiAgKi8KKysjaWZkZWYgVUlOVF9XSURUSAorK3ZlcmlmeSAoVFlQRV9XSURUSCAodW5zaWduZWQgaW50KSA9PSBVSU5UX1dJRFRIKTsKKysjZW5kaWYKKyAKKyAvKiBEb2VzIHRoZSBfX3R5cGVvZl9fIGtleXdvcmQgd29yaz8gIFRoaXMgY291bGQgYmUgZG9uZSBieQorICAgICdjb25maWd1cmUnLCBidXQgZm9yIG5vdyBpdCdzIGVhc2llciB0byBkbyBpdCBieSBoYW5kLiAgKi8KKy0jaWYgKDIgPD0gX19HTlVDX18gfHwgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18gXAorKyNpZiAoMiA8PSBfX0dOVUNfXyBcCisrICAgICB8fCAoMTIxMCA8PSBfX0lCTUNfXyAmJiBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXykgXAorICAgICAgfHwgKDB4NTExMCA8PSBfX1NVTlBST19DICYmICFfX1NURENfXykpCisgIyBkZWZpbmUgX0dMX0hBVkVfX19UWVBFT0ZfXyAxCisgI2Vsc2UKK0BAIC0xMTYsOCArMTMxLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgc2lnbmVkLCB0aGlzIG1hY3JvIG1heSBvdmVyZXN0aW1hdGUgdGhlIHRydWUgYm91bmQgYnkgb25lIGJ5dGUgd2hlbgorICAgIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZXMgb2Ygc2l6ZSAyLCA0LCAxNiwgLi4uIGJ5dGVzLiAgKi8KKyAjZGVmaW5lIElOVF9TVFJMRU5fQk9VTkQodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoc2l6ZW9mICh0KSAqIENIQVJfQklUICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgICAgICAgIFwKKysgIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKFRZUEVfV0lEVEggKHQpIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSBcCisgICAgKyBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpCisgCisgLyogQm91bmQgb24gYnVmZmVyIHNpemUgbmVlZGVkIHRvIHJlcHJlc2VudCBhbiBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULAorQEAgLTIyMiwyMCArMjM2LDIzIEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICAgID8gKGEpIDwgKG1pbikgPj4gKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogKG1heCkgPj4gKGIpIDwgKGEpKQorIAorLS8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG51bGwuICAqLworLSNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTCAoNyA8PSBfX0dOVUNfXykKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBub24tbnVsbC4gICovCisrI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cgKDUgPD0gX19HTlVDX18pCisrCisrLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKEEsIEIsIEMpIHdvcmtzLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QICg3IDw9IF9fR05VQ19fKQorIAorIC8qIFRoZSBfR0wqX09WRVJGTE9XIG1hY3JvcyBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyB0aGUKKyAgICAqX1JBTkdFX09WRVJGTE9XIG1hY3JvcywgZXhjZXB0IHRoYXQgdGhleSBkbyBub3QgYXNzdW1lIHRoYXQgb3BlcmFuZHMKKyAgICAoZS5nLiwgQSBhbmQgQikgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIE1JTiBhbmQgTUFYLiAgSW5zdGVhZCwgdGhleSBhc3N1bWUKKyAgICB0aGF0IHRoZSByZXN1bHQgKGUuZy4sIEEgKyBCKSBoYXMgdGhhdCB0eXBlLiAgKi8KKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorLSMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX3N1Yl9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX211bF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkgKikgMCkKKysjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKKysjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX3N1Yl9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX211bF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSkgMCkKKyAjZWxzZQorICMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtaW4pIDwgMCA/IElOVF9BRERfUkFOR0VfT1ZFUkZMT1cgKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMTUsNyArMzMyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfQUREX09WRVJGTE9XKQorICNkZWZpbmUgSU5UX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIpIFwKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9TVUJUUkFDVF9PVkVSRkxPVykKKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgSU5UX1NVQlRSQUNUX09WRVJGTE9XICgwLCBhKQorICNlbHNlCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBcCitAQCAtMzQ5LDEwICszNjYsNiBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjZGVmaW5lIElOVF9NVUxUSVBMWV9XUkFQVihhLCBiLCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCAqLCBfX2J1aWx0aW5fbXVsX292ZXJmbG93LCBJTlRfTVVMVElQTFlfT1ZFUkZMT1cpCisgCistI2lmbmRlZiBfX2hhc19idWlsdGluCistIyBkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCistI2VuZGlmCistCisgLyogTm9uemVybyBpZiB0aGlzIGNvbXBpbGVyIGhhcyBHQ0MgYnVnIDY4MTkzIG9yIENsYW5nIGJ1ZyAyNTM5MC4gIFNlZToKKyAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02ODE5MworICAgIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTAKK0BAIC0zNjksNyArMzgyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgdGhlIG9wZXJhdGlvbi4gIEJVSUxUSU4gaXMgdGhlIGJ1aWx0aW4gb3BlcmF0aW9uLCBhbmQgT1ZFUkZMT1cgdGhlCisgICAgb3ZlcmZsb3cgcHJlZGljYXRlLiAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCBvdmVyZmxvd3MuICBTZWUgYWJvdmUKKyAgICBmb3IgcmVzdHJpY3Rpb25zLiAgKi8KKy0jaWYgNSA8PSBfX0dOVUNfXyB8fCBfX2hhc19idWlsdGluIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgYnVpbHRpbiAoYSwgYiwgcikKKyAjZWxpZiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dMX19HRU5FUklDX0JPR1VTCisgIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIFwKK0BAIC00MTIsNyArNDI1LDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgIyBlbHNlCisgIyAgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFZfTE9OR0lTSChhLCBiLCByLCBvcCwgb3ZlcmZsb3cpIFwKKyAgICAgX0dMX0lOVF9PUF9DQUxDIChhLCBiLCByLCBvcCwgb3ZlcmZsb3csIHVuc2lnbmVkIGxvbmcgaW50LCBcCistICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkpCisrICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkKKyAjIGVuZGlmCisgI2VuZGlmCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKaW5kZXggZDNkMGY1NS4uOWU4YmRiYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgICAgZmlsZTovL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gImE5YWE3ZTAwMzY2NWRlOWM4MmJkM2Y5ZmM2Y2NmMzA4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibW5sL2xpYm1ubF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDY0N2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIDUwOGEwZmY2OTBkZmViYzE3YzRmNTVhNWY4MTgyNGVkNTQ5YmVkNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOToxMzozMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBzeXMvY2RlZnMuaCBleHBsaWNpdGx5CisKK2dsaWJjIGluY2x1ZGVzIHRoaXMgaGVhZGVyIGluZGlyZWN0bHkgYnV0IG5vdCBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3JwY3N2Yy9uaXMuaCAgICB8IDEgKworIHNyYy9ycGNzdmMvbmlzbGliLmggfCAxICsKKyBzcmMvcnBjc3ZjL3lwY2xudC5oIHwgMSArCisgc3JjL3JwY3N2Yy95cHVwZC5oICB8IDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pcy5oIGIvc3JjL3JwY3N2Yy9uaXMuaAoraW5kZXggOTMzYzRkOS4uODhjYmNhMCAxMDA2NDQKKy0tLSBhL3NyYy9ycGNzdmMvbmlzLmgKKysrKyBiL3NyYy9ycGNzdmMvbmlzLmgKK0BAIC0zMiw2ICszMiw3IEBACisgI2lmbmRlZiBfUlBDU1ZDX05JU19ICisgI2RlZmluZSBfUlBDU1ZDX05JU19IIDEKKyAKKysjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgI2luY2x1ZGUgPHJwYy9ycGMuaD4KKyAjaW5jbHVkZSA8cnBjc3ZjL25pc190YWdzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy9uaXNsaWIuaCBiL3NyYy9ycGNzdmMvbmlzbGliLmgKK2luZGV4IGE1OWMxOWIuLmE1M2ZhYjMgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL25pc2xpYi5oCisrKysgYi9zcmMvcnBjc3ZjL25pc2xpYi5oCitAQCAtMTksNiArMTksNyBAQAorICNpZm5kZWYJX19SUENTVkNfTklTTElCX0hfXworICNkZWZpbmUJX19SUENTVkNfTklTTElCX0hfXworIAorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKyBfX0JFR0lOX0RFQ0xTCitkaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy95cGNsbnQuaCBiL3NyYy9ycGNzdmMveXBjbG50LmgKK2luZGV4IGZlNDNmZDQuLmE2ODZiNjEgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL3lwY2xudC5oCisrKysgYi9zcmMvcnBjc3ZjL3lwY2xudC5oCitAQCAtMjAsNiArMjAsNyBAQAorICNpZm5kZWYJX19SUENTVkNfWVBDTE5UX0hfXworICNkZWZpbmUJX19SUENTVkNfWVBDTE5UX0hfXworIAorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKyAvKiBTb21lIGRlZmluZXMgKi8KK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL3lwdXBkLmggYi9zcmMvcnBjc3ZjL3lwdXBkLmgKK2luZGV4IGQwN2ZkNGQuLjJjNTczMDEgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL3lwdXBkLmgKKysrKyBiL3NyYy9ycGNzdmMveXB1cGQuaAorQEAgLTMzLDYgKzMzLDcgQEAKKyAjaWZuZGVmIF9fUlBDU1ZDX1lQVVBEX0hfXworICNkZWZpbmUgX19SUENTVkNfWVBVUERfSF9fCisgCisrI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorICNpbmNsdWRlIDxycGMvcnBjLmg+CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YWU1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGQ3MWNiZWIzYjc2ZTU0Nzc4YTRkNWVlYzZkMzg3Y2NlNjUzNTM3Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA5IEp1biAyMDE3IDA5OjQ5OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pc19jYWxsLmM6IEluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdCBkZWZpbml0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL25pc3BsdXMvbmlzX2NhbGwuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL25pc3BsdXMvbmlzX2NhbGwuYyBiL3NyYy9uaXNwbHVzL25pc19jYWxsLmMKK2luZGV4IDFhMmI5MGMuLjFkYzk4MmQgMTAwNjQ0CistLS0gYS9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCisrKysgYi9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNsdWRlIDxycGMvYXV0aC5oPgorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZkYTRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA2MDI4MjUxNGVhMDFhZjAwNGQ3ZjllNjZkZDM5MjkyMjNiN2QyZTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTggQXByIDIwMTcgMDk6MTY6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIERlZmluZSBnbGliYyBzcGVjaWZpYyBtYWNyb3MKKworQ2hlY2sgYW5kIGRlZmluZQorcmF3bWVtY2hyLCBfX2FzcHJpbnRmLCBfX21lbXBjcHksIF9fc3RydG9rX3IKK19fYWx3YXlzX2lubGluZSwgVEVNUF9GQUlMVVJFX1JFVFJZCisKK2lmIG5vdCBleGlzdGluZy4gSGVscHMgY29tcGlsaW5nIHdpdGggbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMvbmlzLmggYi9zcmMvcnBjc3ZjL25pcy5oCitpbmRleCA4OGNiY2EwLi4yM2ZjMjBjIDEwMDY0NAorLS0tIGEvc3JjL3JwY3N2Yy9uaXMuaAorKysrIGIvc3JjL3JwY3N2Yy9uaXMuaAorQEAgLTU3LDYgKzU3LDM0IEBAIF9fQkVHSU5fREVDTFMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a3VrdWtAc3VzZS5kZT4KKyAgKi8KKyAKKysjaWZuZGVmIHJhd21lbWNocgorKyNkZWZpbmUgcmF3bWVtY2hyKHMsYykgbWVtY2hyKChzKSwoc2l6ZV90KS0xLChjKSkKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fYXNwcmludGYKKysjZGVmaW5lIF9fYXNwcmludGYgYXNwcmludGYKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fbWVtcGNweQorKyNkZWZpbmUgX19tZW1wY3B5IG1lbXBjcHkKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fc3RydG9rX3IKKysjZGVmaW5lIF9fc3RydG9rX3Igc3RydG9rX3IKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fYWx3YXlzX2lubGluZQorKyNkZWZpbmUgX19hbHdheXNfaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKKysjZW5kaWYKKysKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cCkgKHsgXAorK3R5cGVvZiAoZXhwKSBfcmM7IFwKKysgZG8geyBcCisrICBfcmMgPSAoZXhwKTsgXAorKyB9IHdoaWxlIChfcmMgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOyBcCisrIF9yYzsgfSkKKysjZW5kaWYKKyAKKyAjaWZuZGVmIF9fbmlzX29iamVjdF9oCisgI2RlZmluZSBfX25pc19vYmplY3RfaAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTM5MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IGNvbnRhaW5pbmcgTklTIGZ1bmN0aW9ucyB1c2luZyBUSS1SUEMgKElQdjYgZW5hYmxlZCkiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgY29udGFpbnMgdGhlIHB1YmxpYyBjbGllbnQgaW50ZXJmYWNlIGZvciBOSVMoWVApIGFuZCBOSVMrXAorICAgICAgICAgICAgICAgaXQgd2FzIHBhcnQgb2YgZ2xpYmMgYW5kIG5vdyBpcyBzdGFuZGFsb25lIHBhY2thZ2VzLiBpdCBhbHNvIHN1cHBvcnRzIElQdjYiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc2wiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImxpYnRpcnBjIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBic2QtaGVhZGVycyIKKworUFYgPSAiMS4wLjUrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICJkZmEyZjMxMzUyNGFmZjkyNDNjNGQ4Y2UxYmFjZTczNzg2NDc4MzU2IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc2wgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7bGliZGlyfS9uc2wgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vbnNsIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwltdiAke0R9JHtsaWJkaXJ9L25zbC9wa2djb25maWcgJHtEfSR7bGliZGlyfQorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L25zbC8qLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7aW5jbHVkZWRpcn0vbnNsICR7bGliZGlyfS9uc2wvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25zbC8qLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNGU1Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDFjNGM5MzVjYjczYWMxY2NiOTY5M2RmMWE1MWJhMjE4YTIyZThjYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIFNlcCAyMDE3IDExOjE1OjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcG9fcnBtZGIuYzogaW5jcmVhc2UgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L3B1bGwvMjMwXQorCitXZSBlbmNvdW50ZXJlZCAnY29ycnVwdCBycG0nIGlzc3VlcyB3aGVuIGluc3RhbGxpbmcgZXh0cmVtZSBiaWcgUlBNCitwYWNrYWdlcyBsaWtlIHRoZSBrZXJuZWwtZGV2c3JjIHBhY2thZ2Ugb2YgWW9jdG8gcHJvamVjdC4KKworSXQgY2FuIGJlIGZpeGVkIGJ5IGluY3JlYXNpbmcgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUgcGVyIHRlc3QuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KKy0tLQorIGV4dC9yZXBvX3JwbWRiLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L3JlcG9fcnBtZGIuYyBiL2V4dC9yZXBvX3JwbWRiLmMKK2luZGV4IGM3MDAwYTkuLjcwMDA4MzUgMTAwNjQ0CistLS0gYS9leHQvcmVwb19ycG1kYi5jCisrKysgYi9leHQvcmVwb19ycG1kYi5jCitAQCAtMTcwLDggKzE3MCw4IEBACisgI2RlZmluZSBNQVhfU0lHX0NOVAkJMHgxMDAwMDAKKyAjZGVmaW5lIE1BWF9TSUdfRFNJWkUJCTB4MTAwMDAwCisgCistI2RlZmluZSBNQVhfSERSX0NOVAkJMHgxMDAwMDAKKy0jZGVmaW5lIE1BWF9IRFJfRFNJWkUJCTB4MjAwMDAwMAorKyNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MjAwMDAwCisrI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDQwMDAwMDAKKyAKKyB0eXBlZGVmIHN0cnVjdCBycG1oZWFkIHsKKyAgIGludCBjbnQ7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJkNjNhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKLQotREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiYTMyZjgyODZkM2RlZWM2ZmFhYWJjNzk3NjJhNDc2MGU5YWYwYTA3IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliU29sdi5jbWFrZSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzhmN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIgcnBtIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBvX3JwbWRiLmMtaW5jcmVhc2UtTUFYX0hEUl9DTlQtYW5kLU1BWF9IRFJfRFNJWkUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNSRVYgPSAiYjhhOWRkZDg4ZWI0ZTBhYjM1MWViNTVhNTMxODZiNWRjNWFjMDgyNSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1ETElCPSR7YmFzZWxpYn0gLURNVUxUSV9TRU1BTlRJQ1M9T04gLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04gLURFTkFCTEVfQ09NUExFWF9ERVBTPU9OIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRMaWJTb2x2LmNtYWtlIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLUFkZC1taXNzaW5nLXJ3bG9ja191bmxvY2tzLWluLXhwcnRfcmVnaXN0ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2MTNiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIG1pc3Npbmcgcndsb2NrX3VubG9ja3MgaW4geHBydF9yZWdpc3RlcgotCi1JdCBsb29rcyBsaWtlIGluIGIyYzk0MzBmNDZjNGFjODQ4OTU3ZmI4YWRhYWMxNzZhM2Y2YWMwM2Ygd2hlbiBzdmNfcnVuCi1zd2l0Y2hlZCB0byBwb2xsLCBhbiBlYXJseSByZXR1cm4gd2FzIGFkZGVkLCBidXQgdGhlIHJ3bG9jayB3YXMgbm90Ci11bmxvY2tlZC4KLQotSSBvYnNlcnZlZCB0aGF0IHJwY2JpbmQgYnVpbHQgYWdhaW5zdCBsaWJ0aXJwYy0xLjAuMSB3b3VsZCBoYW5kbGUgb25seQotb25lIHJlcXVlc3QgYmVmb3JlIGhhbmdpbmcsIGFuZCB0cmFja2VkIGl0IGRvd24gdG8gYSBtaXNzaW5nCi1yd2xvY2tfdW5sb2NrIGhlcmUuCi0KLUZpeGVzOiBiMmM5NDMwZjQ2YzQgKCdVc2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgaW4gc3ZjX3J1bigpJykKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEZvcm5leSA8bWZvcm5leUBtZm9ybmV5Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvc3ZjLmMgfCA3ICsrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3N2Yy5jIGIvc3JjL3N2Yy5jCi1pbmRleCA5YzQxNDQ1Li5iNTk0NjdiIDEwMDY0NAotLS0tIGEvc3JjL3N2Yy5jCi0rKysgYi9zcmMvc3ZjLmMKLUBAIC05OSw3ICs5OSw3IEBAIHhwcnRfcmVnaXN0ZXIgKHhwcnQpCi0gICAgIHsKLSAgICAgICBfX3N2Y194cG9ydHMgPSAoU1ZDWFBSVCAqKikgY2FsbG9jIChfcnBjX2R0YWJsZXNpemUoKSwgc2l6ZW9mIChTVkNYUFJUICopKTsKLSAgICAgICBpZiAoX19zdmNfeHBvcnRzID09IE5VTEwpCi0tCXJldHVybjsKLSsgICAgICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgfQotICAgaWYgKHNvY2sgPCBfcnBjX2R0YWJsZXNpemUoKSkKLSAgICAgewotQEAgLTEyMCwxNCArMTIwLDE0IEBAIHhwcnRfcmVnaXN0ZXIgKHhwcnQpCi0gICAgICAgICAgICAgc3ZjX3BvbGxmZFtpXS5mZCA9IHNvY2s7Ci0gICAgICAgICAgICAgc3ZjX3BvbGxmZFtpXS5ldmVudHMgPSAoUE9MTElOIHwgUE9MTFBSSSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9MTFJETk9STSB8IFBPTExSREJBTkQpOwotLSAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgICAgICAgfQotIAotICAgICAgIG5ld19zdmNfcG9sbGZkID0gKHN0cnVjdCBwb2xsZmQgKikgcmVhbGxvYyAoc3ZjX3BvbGxmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IHBvbGxmZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKHN2Y19tYXhfcG9sbGZkICsgMSkpOwotICAgICAgIGlmIChuZXdfc3ZjX3BvbGxmZCA9PSBOVUxMKSAvKiBPdXQgb2YgbWVtb3J5ICovCi0tICAgICAgICByZXR1cm47Ci0rICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgICBzdmNfcG9sbGZkID0gbmV3X3N2Y19wb2xsZmQ7Ci0gICAgICAgKytzdmNfbWF4X3BvbGxmZDsKLSAKLUBAIC0xMzUsNiArMTM1LDcgQEAgeHBydF9yZWdpc3RlciAoeHBydCkKLSAgICAgICBzdmNfcG9sbGZkW3N2Y19tYXhfcG9sbGZkIC0gMV0uZXZlbnRzID0gKFBPTExJTiB8IFBPTExQUkkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9MTFJETk9STSB8IFBPTExSREJBTkQpOwotICAgICB9Ci0rdW5sb2NrOgotICAgcndsb2NrX3VubG9jayAoJnN2Y19mZF9sb2NrKTsKLSB9Ci0gCi0tLSAKLTIuNS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZTk4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjgwZDNiNTczYzFkYWRlMmIyOWIyMmY4YWNjM2I5ZTJjN2RkZWZkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIwIE1heSAyMDE3IDEzOjM2OjQzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdAorCitGaXhlcworfCAuLi8uLi9saWJ0aXJwYy0xLjAuMS9zcmMveGRyX3NpemVvZi5jOjkzOjEzOiBlcnJvcjogJ3VpbnRwdHJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ19faW50cHRyX3QnPworfCAgIGlmIChsZW4gPCAodWludHB0cl90KXhkcnMtPnhfYmFzZSkgeworfCAgICAgICAgICAgICAgXn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3hkcl9zaXplb2YuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3hkcl9zaXplb2YuYyBiL3NyYy94ZHJfc2l6ZW9mLmMKK2luZGV4IGQyM2ZiZDEuLjc5ZDY3MDcgMTAwNjQ0CistLS0gYS9zcmMveGRyX3NpemVvZi5jCisrKysgYi9zcmMveGRyX3NpemVvZi5jCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlIDxycGMveGRyLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgInVuLW5hbWVzcGFjZS5oIgorIAorIC8qIEFSR1NVU0VEICovCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjRkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDIwYmFkYzNlMzYwODk1M2ZiNWIzNmJiMmUxNmZhNTFiZDczMWFlYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOTozNTozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSByZXBsYWNlIF9fYnplcm8oKSB3aXRoIG1lbXNldCgpIEFQSQorCittZW1zZXQgaXMgYXZhaWxhYmxlIGFjcm9zcyBhbGwgbGliYyBpbXBsZW1lbnRhdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9kZXNfaW1wbC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rlc19pbXBsLmMgYi9zcmMvZGVzX2ltcGwuYworaW5kZXggOWRiY2NhZi4uMTViZWMyYSAxMDA2NDQKKy0tLSBhL3NyYy9kZXNfaW1wbC5jCisrKysgYi9zcmMvZGVzX2ltcGwuYworQEAgLTU4OCw3ICs1ODgsNyBAQCBfZGVzX2NyeXB0IChjaGFyICpidWYsIHVuc2lnbmVkIGxlbiwgc3RydWN0IGRlc3BhcmFtcyAqZGVzcCkKKyAgICAgfQorICAgdGluMCA9IHRpbjEgPSB0b3V0MCA9IHRvdXQxID0geG9yMCA9IHhvcjEgPSAwOworICAgdGJ1ZlswXSA9IHRidWZbMV0gPSAwOworLSAgX19iemVybyAoc2NoZWR1bGUsIHNpemVvZiAoc2NoZWR1bGUpKTsKKysgIG1lbXNldCAoc2NoZWR1bGUsIDAsIHNpemVvZiAoc2NoZWR1bGUpKTsKKyAKKyAgIHJldHVybiAoMSk7CisgfQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjc2YmEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorQWRkIGtleV9zZWNyZXRrZXlfaXNfc2V0IHRvIGV4cG9ydGVkIHN5bWJvbHMgbWFwCisKK2tleV9zZWNyZXRfaXNfc2V0IGlzIGEgdHlwbyBpbiBsaWJ0aXJwYyBtYXAKK1BhdGNoIHRha2VuIGZyb20KKworaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9saWJ0aXJwYy9kaXNjdXNzaW9uLzYzNzMyMS90aHJlYWQvZmQ3M2Q0MzEvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbGlidGlycGMtMS4wLjEvc3JjL2xpYnRpcnBjLm1hcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnRpcnBjLTEuMC4xLm9yaWcvc3JjL2xpYnRpcnBjLm1hcAorKysrIGxpYnRpcnBjLTEuMC4xL3NyYy9saWJ0aXJwYy5tYXAKK0BAIC0yOTgsNyArMjk4LDcgQEAgVElSUENfMC4zLjIgeworICAgICBrZXlfZ2VuZGVzOworICAgICBrZXlfZ2V0X2NvbnY7CisgICAgIGtleV9zZXRzZWNyZXQ7CistICAgIGtleV9zZWNyZXRfaXNfc2V0OworKyAgICBrZXlfc2VjcmV0a2V5X2lzX3NldDsKKyAgICAga2V5X3NldG5ldDsKKyAgICAgbmV0bmFtZTJob3N0OworICAgICBuZXRuYW1lMnVzZXI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNzg1ZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9saWJ0aXJwYy0wLjIuMS1mb3J0aWZ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRml4IGEgcG9zc2libGUgb3ZlcmZsb3cgKHJlcG9ydGVkIGJ5IF9GT1JUSUZZX1NPVVJDRT0yKQotCi1Qb3J0ZWQgZnJvbSBHZW50b28KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBsaWJ0aXJwYy0wLjIuMS9zcmMvZ2V0cnBjcG9ydC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidGlycGMtMC4yLjEub3JpZy9zcmMvZ2V0cnBjcG9ydC5jCi0rKysgbGlidGlycGMtMC4yLjEvc3JjL2dldHJwY3BvcnQuYwotQEAgLTU0LDExICs1NCwxMSBAQCBnZXRycGNwb3J0KGhvc3QsIHByb2dudW0sIHZlcnNudW0sIHByb3RvCi0gCi0gCWlmICgoaHAgPSBnZXRob3N0YnluYW1lKGhvc3QpKSA9PSBOVUxMKQotIAkJcmV0dXJuICgwKTsKLSsJaWYgKGhwLT5oX2xlbmd0aCAhPSBzaXplb2YoYWRkci5zaW5fYWRkci5zX2FkZHIpKQotKwkJcmV0dXJuICgwKTsKLSAJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOwotIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotIAlhZGRyLnNpbl9wb3J0ID0gIDA7Ci0tCWlmIChocC0+aF9sZW5ndGggPiBzaXplb2YoYWRkcikpCi0tCSAgaHAtPmhfbGVuZ3RoID0gc2l6ZW9mKGFkZHIpOwotIAltZW1jcHkoJmFkZHIuc2luX2FkZHIuc19hZGRyLCBocC0+aF9hZGRyLCAoc2l6ZV90KWhwLT5oX2xlbmd0aCk7Ci0gCS8qIEluY29uc2lzdGVudCBpbnRlcmZhY2VzIG5lZWQgY2FzdHMhIDotKCAqLwotIAlyZXR1cm4gKHBtYXBfZ2V0cG9ydCgmYWRkciwgKHVfbG9uZylwcm9nbnVtLCAodV9sb25nKXZlcnNudW0sIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9yZW1vdmUtZGVzLWZ1bmN0aW9uYWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyZTkzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi11Y2xpYmMgYW5kIG11c2wgZG9lcyBub3QgcHJvdmlkZSBkZXMgZnVuY3Rpb25hbGl0eS4gTGV0cyBkaXNhYmxlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3VjbGliYyBhbmQgbXVzbCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvTWFrZWZpbGUuYW0gbGlidGlycGMtMS4wLjEvc3JjL01ha2VmaWxlLmFtCi0tLS0gbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvTWFrZWZpbGUuYW0JMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvTWFrZWZpbGUuYW0JMjAxNS0xMi0yMSAxNTo1NjoxNy4wOTQ3MDI0MjkgKzAyMDAKLUBAIC0yMiw5ICsyMiw4IEBACi0gICAgICAgICBwbWFwX3Byb3QuYyBwbWFwX3Byb3QyLmMgcG1hcF9ybXQuYyBycGNfcHJvdC5jIHJwY19jb21tb25kYXRhLmMgXAotICAgICAgICAgcnBjX2NhbGxtc2cuYyBycGNfZ2VuZXJpYy5jIHJwY19zb2MuYyBycGNiX2NsbnQuYyBycGNiX3Byb3QuYyBcCi0gICAgICAgICBycGNiX3N0X3hkci5jIHN2Yy5jIHN2Y19hdXRoLmMgc3ZjX2RnLmMgc3ZjX2F1dGhfdW5peC5jIHN2Y19hdXRoX25vbmUuYyBcCi0tCXN2Y19hdXRoX2Rlcy5jIFwKLSAgICAgICAgIHN2Y19nZW5lcmljLmMgc3ZjX3Jhdy5jIHN2Y19ydW4uYyBzdmNfc2ltcGxlLmMgc3ZjX3ZjLmMgZ2V0cGVlcmVpZC5jIFwKLS0gICAgICAgIGF1dGhfdGltZS5jIGF1dGhfZGVzLmMgYXV0aGRlc19wcm90LmMgZGVidWcuYwotKyAgICAgICAgZGVidWcuYwotIAotICMjIFhEUgotIGxpYnRpcnBjX2xhX1NPVVJDRVMgKz0geGRyLmMgeGRyX3JlYy5jIHhkcl9hcnJheS5jIHhkcl9mbG9hdC5jIHhkcl9tZW0uYyB4ZHJfcmVmZXJlbmNlLmMgeGRyX3N0ZGlvLmMgeGRyX3NpemVvZi5jCi1AQCAtNDEsOCArNDAsOCBAQAotICAgICBsaWJ0aXJwY19sYV9DRkxBR1MgPSAtREhBVkVfUlBDU0VDX0dTUyAkKEdTU0FQSV9DRkxBR1MpCi0gZW5kaWYKLSAKLS1saWJ0aXJwY19sYV9TT1VSQ0VTICs9IGtleV9jYWxsLmMga2V5X3Byb3RfeGRyLmMgZ2V0cHVibGlja2V5LmMKLS1saWJ0aXJwY19sYV9TT1VSQ0VTICs9IG5ldG5hbWUuYyBuZXRuYW1lci5jIHJwY2RuYW1lLmMgcnRpbWUuYwotKyNsaWJ0aXJwY19sYV9TT1VSQ0VTICs9IGtleV9jYWxsLmMga2V5X3Byb3RfeGRyLmMgZ2V0cHVibGlja2V5LmMKLSsjbGlidGlycGNfbGFfU09VUkNFUyArPSBuZXRuYW1lLmMgbmV0bmFtZXIuYyBycGNkbmFtZS5jIHJ0aW1lLmMKLSAKLSBDTEVBTkZJTEVTCSAgICAgICA9IGNzY29wZS4qICp+Ci0gRElTVENMRUFORklMRVMJICAgICAgID0gTWFrZWZpbGUuaW4KLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvcnBjX3NvYy5jIGxpYnRpcnBjLTEuMC4xL3NyYy9ycGNfc29jLmMKLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9ycGNfc29jLmMJMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvcnBjX3NvYy5jCTIwMTUtMTItMjEgMTU6NTY6MTcuMDk1NzAyNDE2ICswMjAwCi1AQCAtNjEsNyArNjEsNiBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHJwY3N2Yy9uaXMuaD4KLSAKLSAjaW5jbHVkZSAicnBjX2NvbS5oIgotIAotQEAgLTUyMiw4NiArNTIxLDYgQEAKLSB9Ci0gCi0gLyoKLS0gKiBDcmVhdGUgdGhlIGNsaWVudCBkZXMgYXV0aGVudGljYXRpb24gb2JqZWN0LiBPYnNvbGV0ZWQgYnkKLS0gKiBhdXRoZGVzX3NlY2NyZWF0ZSgpLgotLSAqLwotLUFVVEggKgotLWF1dGhkZXNfY3JlYXRlKHNlcnZlcm5hbWUsIHdpbmRvdywgc3luY2FkZHIsIGNrZXkpCi0tCWNoYXIgKnNlcnZlcm5hbWU7CQkvKiBuZXR3b3JrIG5hbWUgb2Ygc2VydmVyICovCi0tCXVfaW50IHdpbmRvdzsJCQkvKiB0aW1lIHRvIGxpdmUgKi8KLS0Jc3RydWN0IHNvY2thZGRyICpzeW5jYWRkcjsJLyogb3B0aW9uYWwgaG9zdGFkZHIgdG8gc3luYyB3aXRoICovCi0tCWRlc19ibG9jayAqY2tleTsJCS8qIG9wdGlvbmFsIGNvbnZlcnNhdGlvbiBrZXkgdG8gdXNlICovCi0tewotLQlBVVRIICpuYXV0aDsKLS0JY2hhciBob3N0bmFtZVtOSV9NQVhIT1NUXTsKLS0KLS0JaWYgKHN5bmNhZGRyKSB7Ci0tCQkvKgotLQkJICogQ2hhbmdlIGFkZHIgdG8gaG9zdG5hbWUsIGJlY2F1c2UgdGhhdCBpcyB0aGUgd2F5Ci0tCQkgKiBuZXcgaW50ZXJmYWNlIHRha2VzIGl0LgotLQkJICovCi0tCSAgICAgICAgc3dpdGNoIChzeW5jYWRkci0+c2FfZmFtaWx5KSB7Ci0tCQljYXNlIEFGX0lORVQ6Ci0tCQkgIGlmIChnZXRuYW1laW5mbyhzeW5jYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbiksIGhvc3RuYW1lLAotLQkJCQkgIHNpemVvZiBob3N0bmFtZSwgTlVMTCwgMCwgMCkgIT0gMCkKLS0JCSAgICBnb3RvIGZhbGxiYWNrOwotLQkJICBicmVhazsKLS0JCWNhc2UgQUZfSU5FVDY6Ci0tCQkgIGlmIChnZXRuYW1laW5mbyhzeW5jYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpLCBob3N0bmFtZSwKLS0JCQkJICBzaXplb2YgaG9zdG5hbWUsIE5VTEwsIDAsIDApICE9IDApCi0tCQkgICAgZ290byBmYWxsYmFjazsKLS0JCSAgYnJlYWs7Ci0tCQlkZWZhdWx0OgotLQkJICBnb3RvIGZhbGxiYWNrOwotLQkJfQotLQkJbmF1dGggPSBhdXRoZGVzX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCB3aW5kb3csIGhvc3RuYW1lLCBja2V5KTsKLS0JCXJldHVybiAobmF1dGgpOwotLQl9Ci0tZmFsbGJhY2s6Ci0tCXJldHVybiBhdXRoZGVzX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCB3aW5kb3csIE5VTEwsIGNrZXkpOwotLX0KLS0KLS0vKgotLSAqIENyZWF0ZSB0aGUgY2xpZW50IGRlcyBhdXRoZW50aWNhdGlvbiBvYmplY3QuIE9ic29sZXRlZCBieQotLSAqIGF1dGhkZXNfcGtfc2VjY3JlYXRlKCkuCi0tICovCi0tZXh0ZXJuIEFVVEggKmF1dGhkZXNfcGtfc2VjY3JlYXRlKGNvbnN0IGNoYXIgKiwgbmV0b2JqICosIHVfaW50LCBjb25zdCBjaGFyICosCi0tICAgICAgICBjb25zdCBkZXNfYmxvY2sgKiwgbmlzX3NlcnZlciAqKTsKLS0KLS1BVVRIICoKLS1hdXRoZGVzX3BrX2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIHN5bmNhZGRyLCBja2V5KQotLQljaGFyICpzZXJ2ZXJuYW1lOwkJLyogbmV0d29yayBuYW1lIG9mIHNlcnZlciAqLwotLQluZXRvYmogKnBrZXk7CQkJLyogcHVibGljIGtleSAqLwotLQl1X2ludCB3aW5kb3c7CQkJLyogdGltZSB0byBsaXZlICovCi0tCXN0cnVjdCBzb2NrYWRkciAqc3luY2FkZHI7CS8qIG9wdGlvbmFsIGhvc3RhZGRyIHRvIHN5bmMgd2l0aCAqLwotLQlkZXNfYmxvY2sgKmNrZXk7CQkvKiBvcHRpb25hbCBjb252ZXJzYXRpb24ga2V5IHRvIHVzZSAqLwotLXsKLS0JQVVUSCAqbmF1dGg7Ci0tCWNoYXIgaG9zdG5hbWVbTklfTUFYSE9TVF07Ci0tCi0tCWlmIChzeW5jYWRkcikgewotLQkJLyoKLS0JCSAqIENoYW5nZSBhZGRyIHRvIGhvc3RuYW1lLCBiZWNhdXNlIHRoYXQgaXMgdGhlIHdheQotLQkJICogbmV3IGludGVyZmFjZSB0YWtlcyBpdC4KLS0JCSAqLwotLQkgICAgICAgIHN3aXRjaCAoc3luY2FkZHItPnNhX2ZhbWlseSkgewotLQkJY2FzZSBBRl9JTkVUOgotLQkJICBpZiAoZ2V0bmFtZWluZm8oc3luY2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pLCBob3N0bmFtZSwKLS0JCQkJICBzaXplb2YgaG9zdG5hbWUsIE5VTEwsIDAsIDApICE9IDApCi0tCQkgICAgZ290byBmYWxsYmFjazsKLS0JCSAgYnJlYWs7Ci0tCQlkZWZhdWx0OgotLQkJICBnb3RvIGZhbGxiYWNrOwotLQkJfQotLQkJbmF1dGggPSBhdXRoZGVzX3BrX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIGhvc3RuYW1lLCBja2V5LCBOVUxMKTsKLS0JCXJldHVybiAobmF1dGgpOwotLQl9Ci0tZmFsbGJhY2s6Ci0tCXJldHVybiBhdXRoZGVzX3BrX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIE5VTEwsIGNrZXksIE5VTEwpOwotLX0KLS0KLS0KLS0vKgotICAqIENyZWF0ZSBhIGNsaWVudCBoYW5kbGUgZm9yIGEgdW5peCBjb25uZWN0aW9uLiBPYnNvbGV0ZWQgYnkgY2xudF92Y19jcmVhdGUoKQotICAqLwotIENMSUVOVCAqCi1kaWZmIC1OYXVyIGxpYnRpcnBjLTEuMC4xLW9yaWcvc3JjL3N2Y19hdXRoLmMgbGlidGlycGMtMS4wLjEvc3JjL3N2Y19hdXRoLmMKLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9zdmNfYXV0aC5jCTIwMTUtMTAtMzAgMTc6MTU6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgbGlidGlycGMtMS4wLjEvc3JjL3N2Y19hdXRoLmMJMjAxNS0xMi0yMSAxNTo1NjoxNy4wOTU3MDI0MTYgKzAyMDAKLUBAIC0xMTQsOSArMTE0LDYgQEAKLSAJY2FzZSBBVVRIX1NIT1JUOgotIAkJZHVtbXkgPSBfc3ZjYXV0aF9zaG9ydChycXN0LCBtc2cpOwotIAkJcmV0dXJuIChkdW1teSk7Ci0tCWNhc2UgQVVUSF9ERVM6Ci0tCQlkdW1teSA9IF9zdmNhdXRoX2RlcyhycXN0LCBtc2cpOwotLQkJcmV0dXJuIChkdW1teSk7Ci0gI2lmZGVmIEhBVkVfUlBDU0VDX0dTUwotIAljYXNlIFJQQ1NFQ19HU1M6Ci0gCQlkdW1teSA9IF9zdmNhdXRoX2dzcyhycXN0LCBtc2csIG5vX2Rpc3BhdGNoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzIxZDQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejI7bmFtZT1saWJ0aXJwYyBcCi0gICAgICAgICAgICR7R0VOVE9PX01JUlJPUn0vJHtCUE59LWdsaWJjLW5mcy50YXIueHo7bmFtZT1nbGliYy1uZnMgXAotICAgICAgICAgICBmaWxlOi8vbGlidGlycGMtMC4yLjEtZm9ydGlmeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1taXNzaW5nLXJ3bG9ja191bmxvY2tzLWluLXhwcnRfcmVnaXN0ZXIucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGZpbGU6Ly9yZW1vdmUtZGVzLWZ1bmN0aW9uYWxpdHkucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Vc2UtbmV0YnNkLXF1ZXVlLmgucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW2xpYnRpcnBjLm1kNXN1bV0gPSAiMzZjZTFjMGZmODA4NjNiYjA4MzlkNTRhYTBiOTQwMTQiCi1TUkNfVVJJW2xpYnRpcnBjLnNoYTI1NnN1bV0gPSAiNTE1Njk3NGYzMWJlN2NjYmM4YWIxZGUzN2M0NzM5YWY2ZDlkNDJjODdiMWQ1Y2FmNDgzNWRkYTc1ZmNiYjg5ZSIKLVNSQ19VUklbZ2xpYmMtbmZzLm1kNXN1bV0gPSAiNWFlNTAwYjlkMGI2YjcyY2I4NzViYzA0OTQ0Yjk0NDUiCi1TUkNfVVJJW2dsaWJjLW5mcy5zaGEyNTZzdW1dID0gIjI2NzdjZmVkZjYyNmYzZjVhOGY2ZTUwN2FlZDViYjhmNzlhNzQ1M2I1ODlkNjg0ZGJiYzA4NmU3NTUxNzBkODMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdzc2FwaSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBjcCAtciAke1N9Ly4uL3RpcnBjICR7U30KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NzE4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MjtuYW1lPWxpYnRpcnBjIFwKKyAgICAgICAgICAgJHtHRU5UT09fTUlSUk9SfS8ke0JQTn0tZ2xpYmMtbmZzLnRhci54ejtuYW1lPWdsaWJjLW5mcyBcCisgICAgICAgICAgIGZpbGU6Ly9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1VzZS1uZXRic2QtcXVldWUuaC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbGlidGlycGMubWQ1c3VtXSA9ICJkNWEzN2YxZGNjZWM0ODRmOWNhYmUyYjk3ZTU0ZTlhNiIKK1NSQ19VUklbbGlidGlycGMuc2hhMjU2c3VtXSA9ICI3MjNjNWNlOTI3MDZjYmI2MDFhOGRiMDkxMTBkZjFiNGI2OTM5MTY0MzE1OGYyMGZmNTg3ZTIwZTdjNWY5MGY1IgorU1JDX1VSSVtnbGliYy1uZnMubWQ1c3VtXSA9ICI1YWU1MDBiOWQwYjZiNzJjYjg3NWJjMDQ5NDRiOTQ0NSIKK1NSQ19VUklbZ2xpYmMtbmZzLnNoYTI1NnN1bV0gPSAiMjY3N2NmZWRmNjI2ZjNmNWE4ZjZlNTA3YWVkNWJiOGY3OWE3NDUzYjU4OWQ2ODRkYmJjMDg2ZTc1NTE3MGQ4MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgICAgIGNwIC1yICR7V09SS0RJUn0vdGlycGMgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2gKaW5kZXggMmU5MzFhMi4uMDRjYjU4OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2OGYyOWFiNDkwY2Y5ODdhYTM0YjVmNGNhZjE3ODRiNThhMDIxMzA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MTdjYmZmNjZjOGJkYmY0NTViYzNiN2MxYTg1YTRmOTkwZDBmOWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE3IEZlYiAyMDE1IDIxOjA4OjA3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFjdCBhcyB0aGUgIm12IiBjb21tYW5kIHdoZW4gcm90YXRlIGxvZwpAQCAtMTAsMTQgKzEwLDE0IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gbG9ncm90YXRlLmMgfCAgIDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorIGxvZ3JvdGF0ZS5jIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xvZ3JvdGF0ZS5jIGIvbG9ncm90YXRlLmMKLWluZGV4IGQzZGViNmEuLmNmOGJmMmMgMTAwNjQ0CitpbmRleCA0YWQ1OGQ0Li5iYTA1ODg0IDEwMDY0NAogLS0tIGEvbG9ncm90YXRlLmMKICsrKyBiL2xvZ3JvdGF0ZS5jCi1AQCAtMTE1Nyw2ICsxMTU3LDUzIEBAIGludCBmaW5kTmVlZFJvdGF0aW5nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIGludCBmb3JjZSkKK0BAIC0xMzE1LDYgKzEzMTUsNTQgQEAgc3RhdGljIGludCBmaW5kTmVlZFJvdGF0aW5nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIGludCBmb3JjZSkKICAgICAgcmV0dXJuIDA7CiAgfQogIApAQCAtNjgsMTAgKzY4LDExIEBACiArICAgIHJldHVybiAxOwogK30KICsKLSBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCi0gCQkgICAgICAgc3RydWN0IGxvZ05hbWVzICpyb3ROYW1lcykKKysKKyBzdGF0aWMgaW50IHByZXJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLAorIAkJCSAgICAgIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsIHN0cnVjdCBsb2dOYW1lcyAqcm90TmFtZXMpCiAgewotQEAgLTE1MjMsMTUgKzE1NzAsMTUgQEAgaW50IHByZXJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLCBzdHJ1Y3QgbG9nU3RhdGUgKnN0YXRlLAorQEAgLTE2NzQsMTUgKzE3MjIsMTUgQEAgc3RhdGljIGludCBwcmVyb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwKICAJCX0KICAKICAJICAgIG1lc3NhZ2UoTUVTU19ERUJVRywKQEAgLTkwLDcgKzkxLDcgQEAKICAJCQkgICAgb2xkTmFtZSwgbmV3TmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKICAJCSAgICBoYXNFcnJvcnMgPSAxOwogIAkJfQotQEAgLTE2NjksMjEgKzE3MTYsMjEgQEAgaW50IHJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLCBzdHJ1Y3QgbG9nU3RhdGUgKnN0YXRlLAorQEAgLTE3NjcsMjEgKzE4MTUsMjEgQEAgc3RhdGljIGludCByb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwKICAJCQkJcmV0dXJuIDE7CiAgCQkJfQogIApAQCAtMTE1LDE5ICsxMTYsMTkgQEAKIC0JCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIHJlbmFtZSAlcyB0byAlczogJXNcbiIsCiArCQkJbXZGaWxlKGxvZy0+ZmlsZXNbbG9nTnVtXSwgcm90TmFtZXMtPmZpbmFsTmFtZSwgbG9nLCBwcmV2X2FjbCkpIHsKICsJCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIG1vdmUgJXMgdG8gJXM6ICVzXG4iLAotIAkJCQkJbG9nLT5maWxlc1tsb2dOdW1dLCB0bXBGaWxlbmFtZSwKKyAJCQkJCWxvZy0+ZmlsZXNbbG9nTnVtXSwgcm90TmFtZXMtPmZpbmFsTmFtZSwKICAJCQkJCXN0cmVycm9yKGVycm5vKSk7CiAgCQkJCQloYXNFcnJvcnMgPSAxOwotQEAgLTIwNjMsNyArMjExMCw3IEBAIGludCByb3RhdGVMb2dTZXQoc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGZvcmNlKQorQEAgLTIxNzAsNyArMjIxOCw3IEBAIHN0YXRpYyBpbnQgcm90YXRlTG9nU2V0KHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBmb3JjZSkKICAgICAgcmV0dXJuIGhhc0Vycm9yczsKICB9CiAgCi0tc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCistc3RhdGljIGludCB3cml0ZVN0YXRlKGNvbnN0IGNoYXIgKnN0YXRlRmlsZW5hbWUpCiArc3RhdGljIGludCB3cml0ZVN0YXRlKHN0cnVjdCBsb2dJbmZvICpsb2csIGNoYXIgKnN0YXRlRmlsZW5hbWUpCiAgewogIAlzdHJ1Y3QgbG9nU3RhdGUgKnA7CiAgCUZJTEUgKmY7Ci1AQCAtMjIyNyw3ICsyMjc0LDcgQEAgc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCitAQCAtMjMyMiw3ICsyMzcwLDcgQEAgc3RhdGljIGludCB3cml0ZVN0YXRlKGNvbnN0IGNoYXIgKnN0YXRlRmlsZW5hbWUpCiAgCQlmY2xvc2UoZik7CiAgCiAgCWlmIChlcnJvciA9PSAwKSB7CkBAIC0xMzYsNyArMTM3LDcgQEAKICAJCQl1bmxpbmsodG1wRmlsZW5hbWUpOwogIAkJCWVycm9yID0gMTsKICAJCQltZXNzYWdlKE1FU1NfRVJST1IsICJlcnJvciByZW5hbWluZyB0ZW1wIHN0YXRlIGZpbGUgJXNcbiIsCi1AQCAtMjUyNSw3ICsyNTcyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQorQEAgLTI2NDgsNyArMjY5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICAJCXJjIHw9IHJvdGF0ZUxvZ1NldChsb2csIGZvcmNlKTsKICAKICAJaWYgKCFkZWJ1ZykKQEAgLTE0NSwzICsxNDYsNiBAQAogIAogIAlyZXR1cm4gKHJjICE9IDApOwogIH0KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvdXBkYXRlLXRoZS1tYW51YWwucGF0Y2gKaW5kZXggNTBkMDM3ZC4uNzI1NTY3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTBiMGZlMzBlOWM0OTIzNDk5NGEyMGE4NmFhY2ZhZjgwZTY5MDA4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmYyMmU4ODA1ZGY2OTM0NGY2ZjIwY2VhMzkwZTgyOWEyMmZhNzQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNyBGZWIgMjAxNSAyMToxNDozNyAtMDgwMAogU3ViamVjdDogW1BBVENIXSBVcGRhdGUgdGhlIG1hbnVhbApAQCAtOSwxNCArOSwxNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQotIGxvZ3JvdGF0ZS44IHwgICAxMCArKysrLS0tLS0tCisgbG9ncm90YXRlLjguaW4gfCAxMCArKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2xvZ3JvdGF0ZS44IGIvbG9ncm90YXRlLjgKLWluZGV4IGU0ZTVmNDguLjg0NDA3ZDAgMTAwNjQ0Ci0tLS0gYS9sb2dyb3RhdGUuOAotKysrIGIvbG9ncm90YXRlLjgKLUBAIC00MDUsMTIgKzQwNSwxMCBAQCBEbyBub3Qgcm90YXRlIHRoZSBsb2cgaWYgaXQgaXMgZW1wdHkgKHRoaXMgb3ZlcnJpZGVzIHRoZSBcZkJpZmVtcHR5XGZSIG9wdGlvbikuCitkaWZmIC0tZ2l0IGEvbG9ncm90YXRlLjguaW4gYi9sb2dyb3RhdGUuOC5pbgoraW5kZXggOTUxZTQwNi4uNTgxYmY0OCAxMDA2NDQKKy0tLSBhL2xvZ3JvdGF0ZS44LmluCisrKysgYi9sb2dyb3RhdGUuOC5pbgorQEAgLTQ0NSwxMiArNDQ1LDEwIEBAIERvIG5vdCByb3RhdGUgdGhlIGxvZyBpZiBpdCBpcyBlbXB0eSAodGhpcyBvdmVycmlkZXMgdGhlIFxmQmlmZW1wdHlcZlIgb3B0aW9uKS4KICAKICAuVFAKICBcZkJvbGRkaXIgXGZJZGlyZWN0b3J5XGZSCkBAIC0zNCw1ICszNCw1IEBACiAgCiAgLlRQCiAtLSAKLTEuNy45LjUKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwYjIwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTU2MGM1N2ZhYzg3YzQ1YjJmYzE3NDA2Y2RmNzkyODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmU2YTQwMWNhYzkwMjRkYjIyODgyOTdlM2JlMWE4YWI2MGU3NDAxYmE4ZTkxMjI1MjE4YWFmNGEyN2U4MmEwNyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKKworIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgorIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMRlM9IFwKKyAgICBPU19OQU1FPScke09TX05BTUV9JyBcCisgICAgJ0NDPSR7Q0N9JyBcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKKyIKKworIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCisjIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cworIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KK09TX05BTUUgPSAiTGludXgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICAke0JQTn0uc2VydmljZSBcCisgICAgJHtCUE59LnRpbWVyIFwKKyIKKworTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVMgPz0gImRhaWx5IgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1kgPz0gIjEyaCIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLE9uQ2FsZW5kYXI9LiokLE9uQ2FsZW5kYXI9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU30sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIHNlZCAtaSAtZSAncyxBY2N1cmFjeVNlYz0uKiQsQWNjdXJhY3lTZWM9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX0sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkzOGQ5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IGxvZ3JvdGF0ZSAzLjguOCBhZGRzIGF1dG90b29scy9hdXRvbWFrZSBzdXBwb3J0LCB1cGRhdGUgcmVjaXBlIHRvIHVzZSBpdC4KLSMgVE9ETzogRG9jdW1lbnQgY29yZXV0aWxzIGRlcGVuZGVuY3kuIFdoeSBub3QgUkRFUEVORFM/IFdoeSBub3QgYnVzeWJveD8KLQotREVQRU5EUz0iY29yZXV0aWxzIHBvcHQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4ODEwNjY5ZjEzYjg3MzQ4NDU5ZTYxMWQzMWFiNzYwIgotCi0jIFdoZW4gdXBkYXRpbmcgbG9ncm90YXRlIHRvIGxhdGVzdCB1cHN0cmVhbSwgU1JDX1VSSSBzaG91bGQgcG9pbnQgdG8KLSMgYSBwcm9wZXIgcmVsZWFzZSB0YXJiYWxsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMKLSMgYW5kIHdlIGhhdmUgdG8gdGFrZSB0aGUgc25hcHNob3QgZm9yIG5vdyBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2gKLSMgdGFyYmFsbCBhdmFpbGFibGUgZm9yIDMuOS4xLgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LXIzLTktMSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L2FyY2hpdmUvcjMtOS0xLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODU3MmI3YzJjZjlhZGUwOWE4YThlMTAwOTg1MDBmYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJmOGU0NzhjNDI4ZTc3NDRmZWZhNDY1MTE4ZjgyOTZlN2U3NzFjOTgxZmI2ZGZmYjc1Mjc4NTZhMGVhMzYxNyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgotCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAotCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKLQotIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgotIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBMRlM9IFwKLSAgICBPU19OQU1FPScke09TX05BTUV9JyBcCi0gICAgJ0NDPSR7Q0N9JyBcCi0gICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCi0gICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKLSIKLQotIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCi0jIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cwotIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KLU9TX05BTUUgPSAiTGludXgiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgcm0gLWYgJHtCfS8uZGVwZW5kCi19Ci0KLWRvX2luc3RhbGwoKXsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke0R9IE1BTkRJUj0ke21hbmRpcn0KLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCBleGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgotICAgIGluc3RhbGwgLXAgLW0gNzU1IGV4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCmluZGV4IGNlZGYzOWUuLjA3ODU2MTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICAgICBmaWxlOi8vbHNiX3BpZG9mcHJvYyBcCiAgICAgICAgICAgIGZpbGU6Ly9sc2Jfc3RhcnRfZGFlbW9uIFwKICAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgpAQCAtOTAsMTEgKzkxLDEzIEBACiAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1mdW5jdGlvbnMgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiCiAKICAgICAgICAjIGNyZWF0ZSBsaW5rcyBmb3IgTFNCIHRlc3QKLSAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0iIF0gOyB0aGVuCi0gICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICBpZiBbIC1lICR7c2JpbmRpcn0vY2hrY29uZmlnIF07IHRoZW4KKyAgICAgICAgICAgICAgIGlmIFsgIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfSIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvaW5zdGFsbF9pbml0ZAorICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvcmVtb3ZlX2luaXRkCiAgICAgICAgZmkKLSAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCi0gICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvcmVtb3ZlX2luaXRkCiAKICAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKaW5kZXggYTc1NmQwNC4uOWM1OGQ5MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaApAQCAtMSwyNiArMSwzMiBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorRnJvbSA1NzQ2OGM1ZjRlMzY0YmRhZDU1NjYwNGRjYTA5MDQ2ZTFhZmNhOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IE1vbiwgNSBKdW4gMjAxNyAxNjoyNjo0NyArMDkwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CiAKLUluZGV4OiBpbml0c2NyaXB0cy05LjQzL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGluaXRzY3JpcHRzLTkuNDMub3JpZy9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBpbml0c2NyaXB0cy05LjQzL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotQEAgLTEzLDYgKzEzLDcgQEAgdW1hc2sgMDIyCi0gUEFUSD0iL3NiaW46L3Vzci9zYmluOi9iaW46L3Vzci9iaW4iCi0gZXhwb3J0IFBBVEgKLSAKLSsKLSBpZiBbICRQUElEIC1uZSAxIC1hIC16ICIkU1lTVEVNQ1RMX1NLSVBfUkVESVJFQ1QiIF0gJiYgXAotIAkJKCAvYmluL21vdW50cG9pbnQgLXEgL2Nncm91cC9zeXN0ZW1kIHx8IC9iaW4vbW91bnRwb2ludCAtcSAvc3lzL2ZzL2Nncm91cC9zeXN0ZW1kICkgOyB0aGVuCi0gICAgICAgICBjYXNlICIkMCIgaW4KLUBAIC01NCw3ICs1NSw3IEBAIHN5c3RlbWN0bF9yZWRpcmVjdCAoKSB7CitSZWJhc2Ugb24gOS43MgorCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK2luZGV4IDBmNjI3ZjEuLmE2YWEwOTIgMTAwNjQ0CistLS0gYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKysrIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK0BAIC01OSw3ICs1OSw3IEBAIHN5c3RlbWN0bF9yZWRpcmVjdCAoKSB7CiAgWyAteiAiJHtDT0xVTU5TOi19IiBdICYmIENPTFVNTlM9ODAKICAKICBpZiBbIC16ICIke0NPTlNPTEVUWVBFOi19IiBdOyB0aGVuCi0tICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCi0rICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiAtYSAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCi0gICAgIENPTlNPTEVUWVBFPSIkKC9zYmluL2NvbnNvbGV0eXBlIDwgL2Rldi9zdGRlcnIgMj4vZGV2L251bGwpIgotICAgZWxzZQotICAgICBDT05TT0xFVFlQRT0ic2VyaWFsIgorLSAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCisrICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIC1hIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KKyAgICAgICAgIENPTlNPTEVUWVBFPSIkKC9zYmluL2NvbnNvbGV0eXBlIDwgL2Rldi9zdGRlcnIgMj4vZGV2L251bGwpIgorICAgICBlbHNlCisgICAgICAgICBDT05TT0xFVFlQRT0ic2VyaWFsIgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS42OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwOGZmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXNWIGluaXQgc2NyaXB0cyB3aGljaCBhcmUgb25seSB1c2VkIGluIGFuIExTQiBpbWFnZSIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmY0ZThiNDk3ODBhYjE4N2Q1MWJkMjZhYWEwMjJjNiIKLQotUz0iJHtXT1JLRElSfS9pbml0c2NyaXB0cy0ke1BWfSIKLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5iejIvNmE1MWE1YWYzOGUwMTQ0NWY1Mzk4OWVkMDcyN2MzZTEvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAiIAotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmE1MWE1YWYzOGUwMTQ0NWY1Mzk4OWVkMDcyN2MzZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExYzZlOWRiYWEzN2E2NzY1MThmNDgwM2I1MDFlMTA3YzA1OGJiMTRlZjdhOGRiMjRjNTJiNzdmYmNiYTUzMSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImZ1bmN0aW9ucyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmdW5jdGlvbnNdID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucyIKLQotIyBTaW5jZSB3ZSBhcmUgb25seSB0YWtpbmcgdGhlIHBhdGNoZWQgdmVyc2lvbiBvZiBmdW5jdGlvbnMsIG5vIG5lZWQgdG8KLSMgY29uZmlndXJlIG9yIGNvbXBpbGUgYW55dGhpbmcgc28gZG8gbm90IGV4ZWN1dGUgdGhlc2UKLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiIAotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiIAotCi1kb19pbnN0YWxsKCl7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vcmMuZC9pbml0LmQvZnVuY3Rpb25zICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNzRhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgorUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCitSQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCisKK1M9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCitTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuZ3ovc2hhNTEyL2I2ZWQzOGY5NTc2ZTkyMjdjMmVjZjA0N2UyZDYwZTFlODcyZjQwZDUxZDEzODYxYjBjOTFkZGRiMjgyZjEwZjdlNmI3OTcwNmE0ZDE0MzVkN2E1N2ExNGEwYjczYTFiNzE1NDFjZmU0NGMwMGU4ZTAzZWY5NmIwOGRlMTllYzMyL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIiAKKworU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCisKKyMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCisjIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKKworZG9faW5zdGFsbCgpeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCmluZGV4IGVhMTI1MDIuLjM2ZjUyZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBdXRvbWF0ZXMgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSB0ZXN0cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJHUEx2MiIKIFBSID0gInIzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2ZpbGVzL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvZmlsZXMvbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2QyMzIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2ZpbGVzL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorUmVtb3ZlIGhvc3QgaW5mb3JtYXRpb24gZnJvbSB2ZXJzaW9uLmgKKworbWFrZSBsc29mIG5vdCBpbmNsdWRlIGhvc3QgaW5mb3JtYXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgZGlhbGVjdHMvbGludXgvTWFrZWZpbGUgfCAgIDUwICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaWFsZWN0cy9saW51eC9NYWtlZmlsZSBiL2RpYWxlY3RzL2xpbnV4L01ha2VmaWxlCitpbmRleCAyYmVhMTA4Li43OTIxNDJiIDEwMDY0NAorLS0tIGEvZGlhbGVjdHMvbGludXgvTWFrZWZpbGUKKysrKyBiL2RpYWxlY3RzL2xpbnV4L01ha2VmaWxlCitAQCAtNzYsNDggKzc2LDE2IEBAIHZlcnNpb24uaDoJRlJDCisgCUBlY2hvIENvbnN0cnVjdGluZyB2ZXJzaW9uLmgKKyAJQHJtIC1mIHZlcnNpb24uaAorIAlAZWNobyAnI2RlZmluZQlMU09GX0JMRENNVAkiJHtMU09GX0JMRENNVH0iJyA+IHZlcnNpb24uaDsKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQwkJIiR7Q0N9IicgPj4gdmVyc2lvbi5oCistCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NWCSIke0NDVn0iJyA+PiB2ZXJzaW9uLmgKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ0RBVEUJIidgZGF0ZWAnIicgPj4gdmVyc2lvbi5oCistCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NGTEFHUwkiJ2BlY2hvICR7Q0ZMQUdTfSB8IHNlZCAncy9cXFxcKC9cXCgvZycgfCBzZWQgJ3MvXFxcXCkvXFwpL2cnIHwgc2VkICdzLyIvXFxcXCIvZydgJyInID4+IHZlcnNpb24uaAorKwlAZWNobyAnI2RlZmluZQlMU09GX0NDCQkiIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NWCSIiJyA+PiB2ZXJzaW9uLmgKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ0RBVEUJIiInID4+IHZlcnNpb24uaAorKwlAZWNobyAnI2RlZmluZQlMU09GX0NDRkxBR1MJIiInID4+IHZlcnNpb24uaAorIAlAZWNobyAnI2RlZmluZQlMU09GX0NJTkZPCSIke0NJTkZPfSInID4+IHZlcnNpb24uaAorLQlAaWYgWyAiWCR7TFNPRl9IT1NUfSIgPSAiWCIgXTsgdGhlbiBcCistCSAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIidgdW5hbWUgLW5gJyInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfSE9TVH0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIiR7TFNPRl9IT1NUfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpIFwKKy0JZmkKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9MREZMQUdTCSIke0NGR0x9IicgPj4gdmVyc2lvbi5oCistCUBpZiBbICJYJHtMU09GX0xPR05BTUV9IiA9ICJYIiBdOyB0aGVuIFwKKy0JICBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiJHtMT0dOQU1FfSInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfTE9HTkFNRX0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0xPR05BTUUJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0xPR05BTUUJIiR7TFNPRl9MT0dOQU1FfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpOyBcCistCWZpCistCUBpZiBbICJYJHtMU09GX1NZU0lORk99IiA9ICJYIiBdOyB0aGVuIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSInYHVuYW1lIC1hYCciJyA+PiB2ZXJzaW9uLmg7IFwKKy0JZWxzZSBcCistCSAgaWYgWyAiJHtMU09GX1NZU0lORk99IiA9ICJub25lIiBdOyB0aGVuIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSIiJyA+PiB2ZXJzaW9uLmg7IFwKKy0JICBlbHNlIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSIke0xTT0ZfU1lTSU5GT30iJyA+PiB2ZXJzaW9uLmg7IFwKKy0JICBmaSBcCistCWZpCistCUBpZiBbICJYJHtMU09GX1VTRVJ9IiA9ICJYIiBdOyB0aGVuIFwKKy0JICBlY2hvICcjZGVmaW5lCUxTT0ZfVVNFUgkiJHtVU0VSfSInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfVVNFUn0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1VTRVIJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1VTRVIJIiR7TFNPRl9VU0VSfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpIFwKKy0JZmkKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9IT1NUCSIiJyA+PiB2ZXJzaW9uLmg7CisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfTERGTEFHUwkiIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiIicgPj4gdmVyc2lvbi5oOworKwlAZWNobyAnI2RlZmluZQlMU09GX1NZU0lORk8JIiInID4+IHZlcnNpb24uaDsKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9VU0VSCSIiJyA+PiB2ZXJzaW9uLmg7CisgCUBzZWQgJy9WTi9zLy5kcyBWTiBcKC4qXCkvI2RlZmluZQlMU09GX1ZFUlNJT04JIlwxIi8nIDwgdmVyc2lvbiA+PiB2ZXJzaW9uLmgKKyAKKyBGUkM6CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKaW5kZXggMjkyNDViMS4uMTQ1NDZkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiCkBAIC0xMSw3ICsxMSw5IEBACiAjIGh0dHBzOi8vcGVvcGxlLmZyZWVic2Qub3JnL35hYmUvICkuIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcgc2VlbXMgdG8gYmUKICMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBhbHRlcm5hdGl2ZS4KIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggXAorICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjFiOWNkMzRmM2ZiODY4NTZhMTI1YWJiZjJiZTNhMzg2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxYWMyZmM1ZmRjOTQ0NzkzYmFmNDFhMTQwMDJiNmRlYjVhMjkwOTZiMzg3NzQ0ZTI4ZjhjMzBhMzYwYTM3MTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaAppbmRleCAwNjg0YmVlLi45ODY1MDIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKQEAgLTksNiArOSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIG00L2x0cC1udW1hLm00IHwgMTAgKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaAppbmRleCBiZjExNzZmLi41Y2YxZTA1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoCkBAIC04LDYgKzgsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY29uZmlndXJlLmFjIHwgOSArKysrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCAyZGU5MzYzLi5jZjc0NDYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIERpc2FibGUgdGVzdHMgc3BlY2lmaWNhbGx5IG5vdCBidWlsZGluZyBfeWV0XyBvbiBtdXNsIGJhc2VkIHN5c3RlbXMKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKICB0ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgNSArKysrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2gKaW5kZXggOGRhYjFlZC4uYjkzOTBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCkBAIC03LDYgKzcsNyBAQAogZXh0ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBmdHMgQVBJcwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYyAgICAgICAgfCAzICsrKwogIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyB8IDMgKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1maXgtUEFUSF9NQVgtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODc0Yjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzMjY0NGJkZTRkMzNiNjc3NjE0NTM0ZWMzNzAzMGU1Nzg4M2I4ZTE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOSBGZWIgMjAxNyAxNjo0MToxMiArMDgwMAotU3ViamVjdDogW1BBVENIIDEvM10gZml4IFBBVEhfTUFYIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wKLQotZml4IFBBVEhfTUFYIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wuCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGluY2x1ZGUvdHN0X3Rlc3QuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS90c3RfdGVzdC5oIGIvaW5jbHVkZS90c3RfdGVzdC5oCi1pbmRleCA3ZmYzM2IyLi45Nzc5YzBlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS90c3RfdGVzdC5oCi0rKysgYi9pbmNsdWRlL3RzdF90ZXN0LmgKLUBAIC0xOSw2ICsxOSw5IEBACi0gI2RlZmluZSBUU1RfVEVTVF9IX18KLSAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lmbmRlZiBfX0dMSUJDX18KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgInRzdF9jb21tb24uaCIKLSAjaW5jbHVkZSAidHN0X3Jlc19mbGFncy5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaAppbmRleCA4ZDBlNzM5Li4yZjRjYTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKQEAgLTEsMzAgKzEsMzEgQEAKLUZyb20gYTI2MzliZDBmMGQzZjlmMzA0OWVlMzNlNjcxMGZlZDA2MjI1ZjU0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDFhMjc1NzA0NTdmYjZlMWQ2YmFmZTgxYmZhMGYzNTA3YjEzN2UzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMTg6MjA6NTggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBfX1dPUkRTSVpFIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gZml4IF9fV09SRFNJWkUgdW5kZWNsYXJlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbAogCiBmaXggX19XT1JEU0laRSB1bmRlY2xhcmVkIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsLgogCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8xNzddCisKIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGluY2x1ZGUvb2xkL3Rlc3QuaCB8IDMgKysrCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vbGQvdGVzdC5oIGIvaW5jbHVkZS9vbGQvdGVzdC5oCi1pbmRleCBkNDkyNTYwLi4yNjNlOTJlIDEwMDY0NAoraW5kZXggYjM2NzY0ZDgzLi5jYzZmMWI1NTEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL29sZC90ZXN0LmgKICsrKyBiL2luY2x1ZGUvb2xkL3Rlc3QuaAotQEAgLTU4LDYgKzU4LDkgQEAKLSAjaW5jbHVkZSAidHN0X2Nsb25lLmgiCi0gI2luY2x1ZGUgIm9sZF9kZXZpY2UuaCIKLSAjaW5jbHVkZSAib2xkX3RtcGRpci5oIgorQEAgLTQ0LDYgKzQ0LDkgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KICsjaWZuZGVmIF9fR0xJQkNfXwogKyNpbmNsdWRlIDxiaXRzL3JlZy5oPgogKyNlbmRpZgogIAotIC8qCi0gICogRW5zdXJlIHRoYXQgTlVNU0lHUyBpcyBkZWZpbmVkLgorICNpbmNsdWRlICJ1c2N0ZXN0LmgiCisgCiAtLSAKLTIuNy40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAppbmRleCA0MWYyNjIzLi5lMzI1Y2U0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaApAQCAtOCw2ICs4LDcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jICAgICB8ICA5ICsrKystCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRjcHUvZ2V0Y3B1MDEuYyAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaAppbmRleCA2ODg2YzU1Li5kZDdkMjgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2gKQEAgLTEsMTggKzEsMTkgQEAKLUZyb20gMmQ3ZWE2N2U4ZWFhNDFjYmQ2ODE2ZjdhYjY1NDI1NGI0MGI1MzBhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmY1ZGQyOTMyMjAwZTAxOTlhMzhmMzAyOGQzYmVmMjI1M2YzMmUzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMTc6MTc6MzcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IG1zZ2J1ZicgZXJyb3IgYnVpbGRpbmcgd2l0aCBtdXNsCiAKIFdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsIHRoZSBmaWxlICJzeXMvbXNnLmgiIGFscmVhZHkgY29udGFpbiAnc3RydWN0IG1zZ2J1ZicKIAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL3B1bGwvMTc3XQorCiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9tc2dyY3YvbXNncmN2MDguYyB8IDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvbXNncmN2L21zZ3JjdjA4LmMKLWluZGV4IGE3NTdjMGQuLmUwMjMxMTQgMTAwNjQ0CitpbmRleCBhNzU3YzBkMTguLmUwMjMxMTRkMiAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9tc2dyY3YvbXNncmN2MDguYwogQEAgLTQ3LDExICs0NywxMyBAQCBjb25zdCBjaGFyICpUQ0lEID0gIm1zZ3JjdjA4IjsKQEAgLTMxLDUgKzMyLDUgQEAKICBzdGF0aWMgdm9pZCBtc3IoaW50IG1zcWlkKQogIHsKIC0tIAotMi43LjQKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAppbmRleCA1YjBjNDQ0Li5iOWZjZTg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKQEAgLTEwLDYgKzEwLDggQEAKIGl0cyBub3QgYSBnZW5lcmFsbHkgYXZhaWxhYmxlIHR5cGVkZWYKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmggfCA4ICsrKysrKy0tCiAgdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oICAgICAgICAgICAgICAgIHwgOSArKysrKysrLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAppbmRleCA0YWMxNGRjLi4yNWY2YmE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KICB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWZpeC1mYWNjZXNzYXQwMS5jLWJ1aWxkLWZhaWxzLXdpdGgtc2VjdXJpdHktZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMi1maXgtZmFjY2Vzc2F0MDEuYy1idWlsZC1mYWlscy13aXRoLXNlY3VyaXR5LWZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjAwYmQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWZpeC1mYWNjZXNzYXQwMS5jLWJ1aWxkLWZhaWxzLXdpdGgtc2VjdXJpdHktZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDMyZjU2MzAwOGY5NTk3NWQyNmQxYzRmY2IyNjZjNzJjNTZmOTM0YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAwMToyMTo1NSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBmaXggZmFjY2Vzc2F0MDEuYyBidWlsZCBmYWlscyB3aXRoIHNlY3VyaXR5IGZsYWdzCi0KLVdoZW4gdGhlIGRpc3RybyBpcyBwb2t5LWxzYiwgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3I6Ci0KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLy4uLy4uLy4uL2luY2x1ZGUvb2xkL3Rlc3QuaDo0NzowLAotfCAgICAgICAgICAgICAgICAgIGZyb20gZmFjY2Vzc2F0MDEuYzo0NDoKLXwgZmFjY2Vzc2F0MDEuYzogSW4gZnVuY3Rpb24gJ3NldHVwJzoKLXwgLi4vLi4vLi4vLi4vaW5jbHVkZS9vbGQvb2xkX3NhZmVfZmlsZV9vcHMuaDo1NToyNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgICAgICAgICAgICAocGF0aCksIChmbXQpLCAjIyBfX1ZBX0FSR1NfXykKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBmYWNjZXNzYXQwMS5jOjEzMjoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ1NBRkVfRklMRV9QUklOVEYnCi18ICAgU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgdGVzdGZpbGUpOwotfCAgIF5+fn5+fn5+fn5+fn5+fn4KLXwgLi4vLi4vLi4vLi4vaW5jbHVkZS9vbGQvb2xkX3NhZmVfZmlsZV9vcHMuaDo1NToyNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgICAgICAgICAgICAocGF0aCksIChmbXQpLCAjIyBfX1ZBX0FSR1NfXykKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBmYWNjZXNzYXQwMS5jOjEzMzoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ1NBRkVfRklMRV9QUklOVEYnCi18ICAgU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsIHRlc3RmaWxlMik7Ci18ICAgXn5+fn5+fn5+fn5+fn5+fgotCi1UaGlzIGlzIGJlY2F1c2UgaW4gbWFjcm8gIlNBRkVfRklMRV9QUklOVEYiLCBpdHMgdGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIGEKLWZvcm1hdCBhcmd1bWVudHMsIGJ1dCBpbiBmaWxlIGZhY2Nlc3NhdDAxLmMsIGl0IHBhc3NlZCB0aGUgc2FtZSBhcmd1bWVudCB0bwotbWFjcm8gIlNBRkVfRklMRV9QUklOVEYiLCBzbyBpdCByZXN1bHRzIGluIHRoZSBmYWlscy4gSXQgc2hvdWxkIHBhc3MgdGhlIGZvcm1hdAotc3RyaW5nIHRvIHRoZSB0aGlyZCBhcmd1bWVudC4KLQotVGhlIHNhbWUgZm9yIGZpbGUgZmNobW9kYXQwMS5jLgotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jIHwgNCArKy0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY2htb2RhdC9mY2htb2RhdDAxLmMgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mYWNjZXNzYXQvZmFjY2Vzc2F0MDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmFjY2Vzc2F0L2ZhY2Nlc3NhdDAxLmMKLWluZGV4IDYyMmRmZDMuLjFjYTkwZTkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jCi1AQCAtMTI5LDggKzEyOSw4IEBAIHZvaWQgc2V0dXAodm9pZCkKLSAJZmRzWzBdID0gU0FGRV9PUEVOKGNsZWFudXAsIHBhdGhuYW1lLCBPX0RJUkVDVE9SWSk7Ci0gCWZkc1sxXSA9IGZkc1s0XSA9IGZkc1swXTsKLSAKLS0JU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgdGVzdGZpbGUpOwotLQlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlMiwgdGVzdGZpbGUyKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgImZhY2Nlc3NhdHRlc3RmaWxlJWQudHh0Iik7Ci0rCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUyLCAiJXMvZmFjY2Vzc2F0dGVzdGZpbGUlZC50eHQiKTsKLSAKLSAJZmRzWzJdID0gU0FGRV9PUEVOKGNsZWFudXAsIHRlc3RmaWxlMywgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY2htb2RhdC9mY2htb2RhdDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYwotaW5kZXggNmJmNjZkOC4uODlkMDcyYSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNobW9kYXQvZmNobW9kYXQwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYwotQEAgLTEyNyw4ICsxMjcsOCBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCWZkc1swXSA9IFNBRkVfT1BFTihjbGVhbnVwLCBwYXRobmFtZSwgT19ESVJFQ1RPUlkpOwotIAlmZHNbMV0gPSBmZHNbNF0gPSBmZHNbMF07Ci0gCi0tCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUsIHRlc3RmaWxlKTsKLS0JU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsIHRlc3RmaWxlMik7Ci0rCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUsICJmY2htb2RhdHRlc3QlZC50eHQiKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsICIlcy9mY2htb2RhdHRlc3QlZC50eHQiKTsKLSAKLSAJZmRzWzJdID0gU0FGRV9PUEVOKGNsZWFudXAsIHRlc3RmaWxlMywgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7Ci0gCWZkc1szXSA9IDEwMDsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoCmluZGV4IDUxOThmZTkuLmE3OTc2M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2gKQEAgLTYsNiArNiw3IEBACiBtYWxsb2NvcHQgaXMgbm90IGF2YWlsYWJsZSBvbiBub24gZ2xpYmMgaW1wbGVtZW50YXRpb25zCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHV0aWxzL2JlbmNobWFyay9lYml6enktMC4zL2ViaXp6eS5jIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIwLWdldGRlbnRzLWRlZmluZS1nZXRkZW50cy1nZXRkZW50czY0LW9ubHktZm9yLWdsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKaW5kZXggMGU0ZTQ1OC4uNzA2MGE2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKQEAgLTcsNiArNyw4IEBACiBmdW5jdGlvbnMgd2l0aCBzYW1lIG5hbWUsIGl0IGVycm9ycyBvdXQuCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oIHwgNiArKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IGM4Y2JlNTguLjNlNzljOWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTEwLDYgKzEwLDggQEAKIGVycm9yOiAnTVJFTUFQX01BWU1PVkUnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgfCA0ICsrKy0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIHwgMiArKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjMtcHRyYWNlLVVzZS1pbnQtaW5zdGVhZC1vZi1lbnVtLV9fcHRyYWNlX3JlcXVlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaAppbmRleCA0NjgwYzAzLi41MjlmNGVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaApAQCAtNiw2ICs2LDggQEAKIF9fcHRyYWNlX3JlcXVlc3QgaXMgb25seSBhdmFpbGFibGUgd2l0aCBnbGliYwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcHRyYWNlL3B0cmFjZTAzLmMgICAgICAgICAgIHwgNCArKysrCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9wdHJhY2Uvc3Bhd25fcHRyYWNlX2NoaWxkLmggfCA0ICsrKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCmluZGV4IDAzYzY3YTUuLjAzYWE0NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiAnU0FfTk9NQVNLJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnYWN0aW9uL3J0X3NpZ2FjdGlvbjAxLmMgICAgIHwgMSArCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdhY3Rpb24vcnRfc2lnYWN0aW9uMDIuYyAgICAgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKaW5kZXggYWFkM2NiMC4uYWZjYmE2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9jaGFyJwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjYtY3Jhc2gwMS1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAppbmRleCA1OGI4ZWQ0Li5mNjVmYWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiAnU0FfTk9NQVNLJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMvbWlzYy9jcmFzaC9jcmFzaDAxLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaAppbmRleCBmNzVlMzNiLi5hZGY2ZjI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKQEAgLTcsNiArNyw4IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaAppbmRleCBiMjZhYTEzLi5jNzMwZDQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2gKQEAgLTgsNiArOCw4IEBACiBzaWdoYW5kbGVyX3QgbWFrZXMgaXQgd29yayBvbiBtdXNsIHRvbwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGluY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaCAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUgfCAzICsrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2gKaW5kZXggYzVmYWM5Yi4uZWZhNmQwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCkBAIC04LDYgKzgsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsaWIvdHN0X3Jlcy5jIHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoCmluZGV4IDU5Y2FlZmUuLmMyZWY4OTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1BZGQgcGVyaW9kaWMgb3V0cHV0IGZvciBsb25nIHRpbWUgdGVzdC4KK0Zyb20gNWE3N2UyYmRjMDgzZjRmODQyYThiYTdjMmRiMWE3YWM2ZTVmMDY2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIE1heSAyMDE3IDIxOjI2OjA1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwZXJpb2RpYyBvdXRwdXQgZm9yIGxvbmcgdGltZSB0ZXN0LgogCiBUaGlzIGlzIG5lZWRlZCBpbiBjb250ZXh0IG9mIGhhdmluZyBzY3JpcHRzIHJ1bm5pbmcgbHRwIHRlc3RzIGFuZAogd2FpdGluZyB3aXRoIGEgdGltZW91dCBmb3IgdGhlIG91dHB1dCBvZiB0aGUgdGVzdHMuCkBAIC02LDIwICs5LDI2IEBACiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgPHR1ZG9yLmZsb3JlYUBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1kaWZmIC1ydU4gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoCi0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAkyMDEzLTExLTA4IDE1OjU0OjA5LjUxNTA0OTA4MSArMDEwMAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gJMjAxMy0xMS0wOCAyMjozMjoxNS41ODczNzA0MDYgKzAxMDAKLUBAIC0zNyw3ICszNyw4IEBACitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgLi4uL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2ggICAgICB8IDExICsrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gKK2luZGV4IGFmMWE3MDguLjA4NGU2MjggMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gKK0BAIC0zNyw3ICszNyw4IEBAIGlmIFsgIngkKGdyZXAgLXcgbWVtb3J5IC9wcm9jL2Nncm91cHMgfCBjdXQgLWY0KSIgIT0gIngxIiBdOyB0aGVuCiAgICAgICAgICBleGl0IDAKICBmaQogIAotLVJVTl9USU1FPSQoKCA2MCAqIDYwICkpCistUlVOX1RJTUU9JCgoIDE1ICogNjAgKSkKICtPTkVfTUlOVVRFPTYwCi0rUlVOX1RJTUU9NjAKKytSVU5fVElNRT0xNQogIAogIGNsZWFudXAoKQogIHsKLUBAIC02Miw3ICs2Myw3IEBACitAQCAtNjIsNyArNjMsNyBAQCBkb19tb3VudCgpCiAgIyAkMSAtIE51bWJlciBvZiBjZ3JvdXBzCiAgIyAkMiAtIEFsbG9jYXRlZCBob3cgbXVjaCBtZW1vcnkgaW4gb25lIHByb2Nlc3M/IGluIE1CCiAgIyAkMyAtIFRoZSBpbnRlcnZhbCB0byB0b3VjaCBtZW1vcnkgaW4gYSBwcm9jZXNzCkBAIC0yOCwxNiArMzcsMTkgQEAKICBydW5fc3RyZXNzKCkKICB7CiAgCWRvX21vdW50OwotQEAgLTgxLDcgKzgyLDExIEBACitAQCAtODEsNyArODIsMTEgQEAgcnVuX3N0cmVzcygpCiAgCQlldmFsIC9iaW4va2lsbCAtcyBTSUdVU1IxIFwkcGlkJGkgMj4gL2Rldi9udWxsCiAgCWRvbmUKICAKIC0Jc2xlZXAgJDQKICsJZm9yIGkgaW4gJChzZXEgMCAkKCgkNC0xKSkpCiArCWRvCi0rCQlldmFsIGVjaG8gIlN0YXJ0ZWQgJGkgbWluIGFnby4gU3RpbGwgYWxpdmUuLi4gIiAKKysJCWV2YWwgZWNobyAiU3RhcnRlZCAkaSBtaW4gYWdvLiBTdGlsbCBhbGl2ZS4uLiAiCiArCQlzbGVlcCAkT05FX01JTlVURQogKwlkb25lCiAgCiAgCWZvciBpIGluICQoc2VxIDAgJCgoJDEtMSkpKQogIAlkbworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODczOGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSBhOWQ1NTk1ZDJmYTJhYjI1MmYxY2FiZjYzZjRiNjVjM2VmYmFmZWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMTU6Mjc6MDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHRwOiBmaXggUEFHRV9TSVpFIHJlZGVmaW5pdGlvbiBhbmQgT19DUkVBVCB1bmRlY2xlYXIgd2hlbgorIGJ1aWxkIHdpdGggbXVzbAorCitlcnJvciAxOgorCit8c3RhY2tfY2xhc2guYzo1MDoyMjogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgb3IgJygnIGJlZm9yZSBudW1lcmljIGNvbnN0YW50Cit8IHN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRTsKKworVGhpcyBpcyBiZWNhdXNlIHRoZSBtdXNsIGxpYmMgYWxyZWFkeSBjb250YWluIFBBR0VfU0laRSBkZWZpbml0aW9uIGluIGxpbWl0cy5jLAord2UgY2FuIGNoZWNrIGl0IGhlcmU6CisKKyAgICBodHRwczovL2dpdC5tdXNsLWxpYmMub3JnL2NnaXQvbXVzbC90cmVlL2luY2x1ZGUvbGltaXRzLmgjbjQzCisKK2Vycm9yIDI6CisKK3xjazAxLmM6MTU3OjIyOiBlcnJvcjogJ09fQ1JFQVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTX0lSRUFEJz8KK3wgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19SRFdSLCAwNjQ0KTsKK3wgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgIFNfSVJFQUQKKworVGhpcyBpcyBiZWNhdXNlIHRoZSBtdXNsIGxpYmMgcHV0IHRob3NlIGluIGZjbnRsLmgsIHNvIHdlIHNob3VsZCBpbmNsdWRlIHRoYXQKK2ZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8xOTQgXQorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyB8ICAxICsKKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyB8ICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYyBiL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYworaW5kZXggMmVmMWE4Mi4uN2M0NTk5MSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYworKysrIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCitAQCAtNDcsNyArNDcsNyBAQAorICNpbmNsdWRlICJ0c3RfdGVzdC5oIgorICNpbmNsdWRlICJ0c3Rfc2FmZV9zdGRpby5oIgorIAorLXN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRTsKKytzdGF0aWMgdW5zaWduZWQgbG9uZyBQQUdFX1NJWkVfdHN0OworIHN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfTUFTSzsKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBHQVBfUEFHRVMgPSAyNTY7Cisgc3RhdGljIHVuc2lnbmVkIGxvbmcgVEhSRVNIT0xEOworQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBleGhhdXN0X3N0YWNrX2ludG9fc2lnc2Vndih2b2lkKQorIAlleGhhdXN0X3N0YWNrX2ludG9fc2lnc2VndigpOworIH0KKyAKKy0jZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFCisrI2RlZmluZSBNQVBQRURfTEVOIFBBR0VfU0laRV90c3QKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYXBwZWRfYWRkcjsKKyAKKyB2b2lkIHNlZ3ZfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKmRhdGEgTFRQX0FUVFJJQlVURV9VTlVTRUQpCitAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgZG9fY2hpbGQodm9pZCkKKyAJc3RhY2tfdCBzaWduYWxfc3RhY2s7CisgCXN0cnVjdCBzaWdhY3Rpb24gc2Vndl9zaWcgPSB7LnNhX3NpZ2FjdGlvbiA9IHNlZ3ZfaGFuZGxlciwgLnNhX2ZsYWdzID0gU0FfT05TVEFDS3xTQV9TSUdJTkZPfTsKKyAJdm9pZCAqbWFwOworLQl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRTsKKysJdW5zaWduZWQgbG9uZyBnYXAgPSBHQVBfUEFHRVMgKiBQQUdFX1NJWkVfdHN0OworIAlzdHJ1Y3QgcmxpbWl0IHJsaW1pdDsKKyAKKyAJcmxpbWl0LnJsaW1fY3VyID0gcmxpbWl0LnJsaW1fbWF4ID0gUkxJTV9JTkZJTklUWTsKK0BAIC0yMDAsOCArMjAwLDggQEAgdm9pZCBzZXR1cCh2b2lkKQorIHsKKyAJY2hhciBidWZbNDA5Nl0sICpwOworIAorLQlQQUdFX1NJWkUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CistCVBBR0VfTUFTSyA9IH4oUEFHRV9TSVpFIC0gMSk7CisrCVBBR0VfU0laRV90c3QgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CisrCVBBR0VfTUFTSyA9IH4oUEFHRV9TSVpFX3RzdCAtIDEpOworIAorIAlidWZbNDA5NV0gPSAnXDAnOworIAlTQUZFX0ZJTEVfU0NBTkYoIi9wcm9jL2NtZGxpbmUiLCAiJTQwOTVbXlxuXSIsIGJ1Zik7CitAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgc2V0dXAodm9pZCkKKyAJCXRzdF9yZXMoVElORk8sICJzdGFja19ndWFyZF9nYXAgPSAlbGQiLCBHQVBfUEFHRVMpOworIAl9CisgCistCVRIUkVTSE9MRCA9IChHQVBfUEFHRVMgLSAxKSAqIFBBR0VfU0laRTsKKysJVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFX3RzdDsKKyAKKyAJeworIAkJdm9sYXRpbGUgaW50ICphID0gYWxsb2NhKDEyOCk7CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYworaW5kZXggM2UxN2JlNC4uMDZkODllMyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYworQEAgLTY5LDYgKzY5LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAidGVzdC5oIgorIAorIHZvaWQgc2V0dXAodm9pZCk7CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYworaW5kZXggNDE0ZGY2OC4uOWRkZjcyOSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYworQEAgLTc1LDYgKzc1LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgInRlc3QuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YzBhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAyZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDEyOjU3OjU4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbW1hbmRzL2dkYjAxOiByZXBsYWNlIHN0ZGluIHdpdGggL2Rldi9udWxsCisKK0lmIHRoaXMgdGVzdGNhc2UgcnVucyBhcyBiYWNrZ3JvdW5kIHByb2Nlc3MsIGdkYiBjYW4gcmVjZWl2ZQorU0lHVFRPVSBhbmQgdGhlbiB0ZXN0Y2FzZSBnZXRzIHN0dWNrLgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC8yZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKK2luZGV4IDA3YWUzNmYuLmUzYTViNTEgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCisrKysgYi90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCitAQCAtMjksNyArMjksNyBAQCBUU1RfTkVFRFNfQ01EUz0iZ2RiIC9iaW4vY2F0IgorIAorIHNpbXBsZV90ZXN0KCkKKyB7CistCWdkYiAvYmluL2NhdCAtZXggInJ1biAvZXRjL3Bhc3N3ZCIgLWV4IHF1aXQKKysJZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdCA8IC9kZXYvbnVsbAorIAlSQz0kPworIAlpZiBbICRSQyAtZXEgMCBdIDsgdGhlbgorIAkJdHN0X3JlcyBUUEFTUyAiZ2RiIGF0dGFjaGVkIHRvIHByb2Nlc3MgYW5kIGNvbXBsZXRlZCBydW4iCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWZjbnRsLWZpeC10aGUtdGltZS1kZWYtdG8tdXNlLXRpbWVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWZjbnRsLWZpeC10aGUtdGltZS1kZWYtdG8tdXNlLXRpbWVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBjMWRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOS1mY250bC1maXgtdGhlLXRpbWUtZGVmLXRvLXVzZS10aW1lX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDdiY2UzZDIyMzQ5NDgwM2NiMzI4OTdjYWJlNjYxMTkwNzZlNTNkODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjIzOjUxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBmY250bDogZml4IHRoZSB0aW1lKCkgZGVmIHRvIHVzZSB0aW1lX3QKLQotVGhpcyBmaXhlcyB0aGUgYnVpbGQgb24gWDMyLCB3aGVyZSBsb25nIGlzIDMyLWJpdCByYXRoZXIgdGhhbiA2NC1iaXQuCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwxNC5jCi1pbmRleCBjNjFlYjI0Li45OWUzODY3IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwxNC5jCi1AQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgZG9jaGlsZCh2b2lkKQotIAotIHZvaWQgcnVuX3Rlc3QoaW50IGZpbGVfZmxhZywgaW50IGZpbGVfbW9kZSwgaW50IHNlZWssIGludCBzdGFydCwgaW50IGVuZCkKLSB7Ci0tCWV4dGVybiBsb25nIHRpbWUoKTsKLSsJZXh0ZXJuIHRpbWVfdCB0aW1lKCk7Ci0gCi0gCWZhaWwgPSAwOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzAxMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzAxMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWYxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwMTE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHAuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvcnVuX2ZyZWV6ZXIuc2g7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ODZhNjFkMmMwNDJkNTk4MzZmZmIzNTNhMjE0NTY0OTggXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvbWVtb3J5X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvY3B1X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvQ09QWUlORzttZDU9MjE2ZTQzYjcyZWZiZTRlZDkwMTdjYzE5YzRjNjhiMDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvcmVhbHRpbWUvQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAotICAgIGZpbGU6Ly90b29scy9wb3VuZGVyMjEvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgIGZpbGU6Ly91dGlscy9iZW5jaG1hcmsva2VybmJlbmNoLTAuNDIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgIGZpbGU6Ly91dGlscy9mZnNiLTYuMC1yYzIvQ09QWUlORzttZDU9YzQ2MDgyMTY3YTMxNGQ3ODVkMDEyYTI0NDc0OGQ4MDMgXAotIgotCi1ERVBFTkRTID0gImF0dHIgbGliYWlvIGxpYmNhcCBhY2wgb3BlbnNzbCB6aXAtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQkM9bXVzbCAiCi1DRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1DRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLVNSQ1JFViA9ICIyYzg0NTdiMDc2OWZjMDI2ZTRlMTc3MmY0YzJhNmRhMGJlNjNhNjMxIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQtX0dOVV9TT1VSQ0UtdG8tcGVjX2xpc3RlbmVyLmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtUEFUSF9NQVgtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZml4LWZhY2Nlc3NhdDAxLmMtYnVpbGQtZmFpbHMtd2l0aC1zZWN1cml0eS1mbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWdldGRlbnRzLWRlZmluZS1nZXRkZW50cy1nZXRkZW50czY0LW9ubHktZm9yLWdsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtcHRyYWNlLVVzZS1pbnQtaW5zdGVhZC1vZi1lbnVtLV9fcHRyYWNlX3JlcXVlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtY3Jhc2gwMS1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1zaG1hdDEtQ292ZXItR05VLXNwZWNpZmljLWNvZGUtdW5kZXItX19VU0VfR05VLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtZml4LXRlc3RfcHJvY19raWxsLWhhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktZmNudGwtZml4LXRoZS10aW1lLWRlZi10by11c2UtdGltZV90LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLSMgVGhlIG1ha2VmaWxlcyBtYWtlIGV4Y2Vzc2l2ZSB1c2Ugb2YgbWFrZSAtQyBhbmQgc2V2ZXJhbCBpbmNsdWRlIHRlc3RjYXNlcy5tawotIyB3aGljaCB0cmlnZ2VycyBhIGJ1aWxkIG9mIHRoZSBzeXNjYWxsIGhlYWRlci4gVG8gcmVwcm9kdWNlLCBidWlsZCBsdHAsCi0jIHRoZW4gZGVsZXRlIHRoZSBoZWFkZXIsIHRoZW4gIm1ha2UgLWogWFgiIGFuZCB3YXRjaCByZWdlbi5zaCBydW4gbXVsdGlwbGUKLSMgdGltZXMuIEl0cyBlYXNpZXIgdG8gZ2VuZXJhdGUgdGhpcyBvbmNlIGhlcmUgaW5zdGVhZC4KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0JKCBtYWtlIC1DICR7Qn0vdGVzdGNhc2VzL2tlcm5lbCBpbmNsdWRlL2xpbnV4X3N5c2NhbGxfbnVtYmVycy5oICkKLX0KLQotZG9faW5zdGFsbCgpewotICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKLQotICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCi0gICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQotICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKLSAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCi0gICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KLSAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCi0gICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKLQotICAgICMgSW4gb2UtY29yZSwgd2UgZG9lc24ndCBzdXBwb3J0IGtzaCBhbmQgY3NoIG5vdywgc28gcmVtb3ZlIGluLmNzaCBhbmQgaW4ua3NoLgotICAgIHJtICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9maWxlMDEvaW4uY3NoCi0gICAgcm0gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL2ZpbGUwMS9pbi5rc2gKLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAicGVybCBlMmZzcHJvZ3MtbWtlMmZzIHB5dGhvbi1jb3JlIGxpYmFpbyBiYXNoIGdhd2sgZXhwZWN0IGxkZCB1bnppcCBnemlwIGNwaW8gY3JvbmllIGxvZ3JvdGF0ZSB3aGljaCBhdCIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIvb3B0L2x0cC9saWIvbGlibWVtLmEgL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSIKLQotRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiIKLQotIyBBdm9pZCBnZW5lcmF0ZWQgYmluYXJpZXMgc3RyaXBwaW5nLiBPdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWxzCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgotIyBIb3dldmVyLCB0ZXN0X2FyY2hfc3RyaXBwZWQgaXMgYWxyZWFkeSBzdHJpcHBlZCwgc28uLi4KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIgotCi0jIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKLSMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCi0jIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAotIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKLVNLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTNjYmZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdG9vbHMvcG91bmRlcjIxL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvZmZzYi02LjAtcmMyL0NPUFlJTkc7bWQ1PWM0NjA4MjE2N2EzMTRkNzg1ZDAxMmEyNDQ3NDhkODAzIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitTUkNSRVYgPSAiMTg5MTZhMmU2ZDhjOTk3YjdiMjlkY2ZhOTU1MGQ1YTE1YjIyZWQyMiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKK2V4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKKworUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlICIKKyMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAorRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKKworICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKKyAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcworfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYWNsIFwKKyAgICBhdCBcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24tY29yZSBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIvb3B0L2x0cC9saWIvbGlibWVtLmEgL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSIKKworRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiIKKworIyBBdm9pZCBnZW5lcmF0ZWQgYmluYXJpZXMgc3RyaXBwaW5nLiBPdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWxzCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKK0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgorIyBIb3dldmVyLCB0ZXN0X2FyY2hfc3RyaXBwZWQgaXMgYWxyZWFkeSBzdHJpcHBlZCwgc28uLi4KK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIgorCisjIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKKyMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCisjIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAorIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKK1NLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWRjOGNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3NvciBiYXNlZCBvbiB0aGUgTFpNQSBhbGdvcml0aG0iCi1IT01FUEFHRSA9ICJodHRwOi8vbHppcC5ub25nbnUub3JnL2x6aXAuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzZkNmUzMDBmZmQ4ZmI5ZDE4YmQ5YjEzNmE5YmJhMTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVjb2Rlci5jYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT1kYjA5ZmUzZjk1NzNmOTRkMDA3NmY3ZjA3OTU5ZTZlMSIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2x6aXAvbHppcC0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODM4NTY3NDYwY2U0YTEwMTQzZGU0YmNjYzY0ZmUxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2Y5ODgyYTEwNGFiMDU1MzJmNDY3YTdiOGY0ZGRiYjg5OGZhMmYxZThkOWQ0Njg1NTZkNmMyZDA0ZGIxNGRkIgotCi1DT05GSUdVUkVPUFRTID0gIlwKLSAgICAnLS1zcmNkaXI9JHtTfScgXAotICAgICctLXByZWZpeD0ke3ByZWZpeH0nIFwKLSAgICAnLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fScgXAotICAgICctLWJpbmRpcj0ke2JpbmRpcn0nIFwKLSAgICAnLS1kYXRhZGlyPSR7ZGF0YWRpcn0nIFwKLSAgICAnLS1pbmZvZGlyPSR7aW5mb2Rpcn0nIFwKLSAgICAnLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKLSAgICAnQ1hYPSR7Q1hYfScgXAotICAgICdDUFBGTEFHUz0ke0NQUEZMQUdTfScgXAotICAgICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgXAotICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKLSIKLUVYVFJBX09FTUFLRSA9ICIiCi0KLUIgPSAiJHtTfS9vYmoiCi1kb19jb25maWd1cmUgKCkgewotICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0gICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLSAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5YjM2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTkuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJMb3NzbGVzcyBkYXRhIGNvbXByZXNzb3IgYmFzZWQgb24gdGhlIExaTUEgYWxnb3JpdGhtIgorSE9NRVBBR0UgPSAiaHR0cDovL2x6aXAubm9uZ251Lm9yZy9semlwLmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlY29kZXIuY2M7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ZGIwOWZlM2Y5NTczZjk0ZDAwNzZmN2YwNzk1OWU2ZTEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9semlwL2x6aXAtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGRkODc5MGQ3NTI4NDQwZDAzNGZjNzEzYTg2ODBiZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZhZGM0ZjU2YmUxYmMwZDNhZTE1NWVjNDUyN2JkMDAzMTMzYmRjNzAzYTc1M2IyY2M2ODNmNjEwZTY0NmJhOSIKKworQ09ORklHVVJFT1BUUyA9ICJcCisgICAgJy0tc3JjZGlyPSR7U30nIFwKKyAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCisgICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKKyAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCisgICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCisgICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCisgICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCisgICAgJ0NYWD0ke0NYWH0nIFwKKyAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKKyAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKKyAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCisiCitFWFRSQV9PRU1BS0UgPSAiIgorCitCID0gIiR7U30vb2JqIgorZG9fY29uZmlndXJlICgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Cit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisgICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisgICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZDcxMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIm1haWx4IGlzIHRoZSB0cmFkaXRpb25hbCBjb21tYW5kLWxpbmUtbW9kZSBtYWlsIHVzZXIgYWdlbnQiCi0KLURFU0NSSVBUSU9OID0gIk1haWx4IGlzIGRlcml2ZWQgZnJvbSBCZXJrZWxleSBNYWlsIGFuZCBpcyBpbnRlbmRlZCBwcm92aWRlIHRoZSBcCi1mdW5jdGlvbmFsaXR5IG9mIHRoZSBQT1NJWCBtYWlseCBjb21tYW5kIHdpdGggYWRkaXRpb25hbCBzdXBwb3J0IFwKLWZvciBNSU1FLCBJTUFQLCBQT1AzLCBTTVRQLCBhbmQgUy9NSU1FLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2hlaXJsb29tLnNvdXJjZWZvcmdlLm5ldC9tYWlseC5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCAmIE1QTC0xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDIwMmEwYTYyOTEwY2Y5NGY3YWY4YTM0MzZhMmEyZGQiCi0KLURFUEVORFMgPSAib3BlbnNzbCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUub3JpZy50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1vdXRvZi1JbnRyb2R1Y2UtZXhwYW5kYWRkci1mbGFnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjlhNjAzM2VmMTQxMjgyNGQwMmViOWQ5MjEzY2IxZjIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwMTViYTQyMDkxMzU4NjdmMzdhMDI0NWQyMjIzNWEzOTJiOGJiZWQ5NTY5MTMyODZiODg3YzJlMmE5YTQyMWFkIgotCi0jIGZvciB0aGlzIHBhY2thZ2Ugd2UncmUgbW9zdGx5IGludGVyZXN0ZWQgaW4gdHJhY2tpbmcgZGViaWFuIHBhdGNoZXMsCi0jIGFuZCBub3QgaW4gdGhlIHVwc3RyZWFtIHZlcnNpb24gd2hlcmUgYWxsIGRldmVsb3BtZW50IGhhcyBlZmZlY3RpdmVseSBzdG9wcGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2gvaGVpcmxvb20tbWFpbHgvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KChcZCtcLiopKyktKChcZCtcLiopKykpXC4oZGlmZnxkZWJpYW5cLnRhcilcLihnenx4eikiCi0KLVMgPSAiJHtXT1JLRElSfS9oZWlybG9vbS1tYWlseC0xMi41IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLURfQlNEX1NPVVJDRSAtRERFQklBTiAtSSR7U30vRVhUIgotCi0jICJTVFJJUD10cnVlIiBtZWFucyB0aGF0ICd0cnVlJyBjb21tYW5kIHdpbGwgYmUgdXNlZCB0byAnc3RyaXAnIGZpbGVzIHdoaWNoIHdpbGwgYWNoaWV2ZSB0aGUgZWZmZWN0IG9mIG5vdCBzdHJpcHBpbmcgdGhlbQotIyBtYWlseCdzIE1ha2VmaWxlIGRvZXNuJ3QgYWxsb3cgYSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gYXZvaWQgc3RyaXBwaW5nCi1FWFRSQV9PRU1BS0UgPSAiU0VORE1BSUw9JHtzYmluZGlyfS9zZW5kbWFpbCBJUHY2PS1ESEFWRV9JUHY2X0ZVTkNTIFBSRUZJWD0vdXNyIFVDQklOU1RBTEw9L3Vzci9iaW4vaW5zdGFsbCBTVFJJUD10cnVlIgotCi0jIFRoZSBtYWtlY29uZmlnIGNhbid0IHJ1biBwYXJhbGxlbGx5LCBvdGhlcndpc2UgdGhlIGNoZWNraW5nIHJlc3VsdHMKLSMgbWlnaHQgYmUgaW5jb3JyZWN0IGFuZCBsZWFkIHRvIGVycm9yczoKLSMgZmlvLmM6NTY6MTc6IGZhdGFsIGVycm9yOiBzc2wuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotIyAjaW5jbHVkZSA8c3NsLmg+Ci1QQVJBTExFTF9NQUtFID0gIiIKLQotIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4OC8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWZjMjFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjA5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9OGYyYTNkNDMwNTdkNDU4ZTUwNjY3MTQ5ODA1NjdhNjAiCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZTNjN2IxMmE1ZmVjZGE5YTcxN2E0YmNjMGFlM2E2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmFjMzI0Y2VmY2UwZmJmYWUwZGY2YzA2ZWYzZjZkNmFiNTIyN2I5YWFkMmE5NGY4NjU3YTBlMzkwMWY5MTg1IgotCi1SREVQRU5EU18ke1BOfSA9ICJtYW4iCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi0jIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi1GSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDc3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQwODMwMGVkMDlkMWFkNTkzODA3MDE1OGIyMWRhMWQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2ZGI5MWEyNGU2OGM3Yzc2NWI3YjhlNjBmMTU5MWVkMTA0OWJjMmRjMzE0M2RiNzc5ZWFlNDgzOGI4OWQxOTUiCisKK1JERVBFTkRTXyR7UE59ID0gIm1hbiIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKKyMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZworRklMRVNfJHtQTn0tZG9jID0gIiIKK0ZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NGQ0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gNGQ0NmExMDg2MjliZWI2NmEyOTM2NzJkYjdiNDRmODYzYjY1OThiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBEaWNrZXkgPGRpY2tleUBoaXMuY29tPgorRGF0ZTogRnJpLCAxNCBBcHIgMjAxNyAxNDowNjoxMyArMDMwMAorU3ViamVjdDogW1BBVENIXSBUaWNrZXQgIzM2OTc6ICh0dHlfaW5pdCk6IHVuaWZ5IGN1cnNlcyBpbml0aWFsaXphdGlvbgorCisuLi5mb3IgdmFyaW91cyBjdXJzZXMgaW1wbGVtZW50YXRpb25zLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9NaWRuaWdodENvbW1hbmRlci9tYy5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliL3R0eS90dHktbmN1cnNlcy5jIHwgMjYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYyBiL2xpYi90dHkvdHR5LW5jdXJzZXMuYworaW5kZXggYTdhMTFmMy4uOGU2OWIzOSAxMDA2NDQKKy0tLSBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYworKysrIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCitAQCAtMTc5LDYgKzE3OSw4IEBAIG1jX3R0eV9ub3JtYWxpemVfbGluZXNfY2hhciAoY29uc3QgY2hhciAqY2gpCisgdm9pZAorIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQorIHsKKysgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKKysKKyAgICAgaW5pdHNjciAoKTsKKyAKKyAjaWZkZWYgSEFWRV9FU0NERUxBWQorQEAgLTE5NCwyNSArMTk2LDE1IEBAIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQorICAgICBFU0NERUxBWSA9IDIwMDsKKyAjZW5kaWYgLyogSEFWRV9FU0NERUxBWSAqLworIAorLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKysgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKKyAgICAgLyogdXNlIEN0cmwtZyB0byBnZW5lcmF0ZSBTSUdJTlQgKi8KKy0gICAgY3VyX3Rlcm0tPk50dHliLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgICAvKiBeZyAqLworKyAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCisgICAgIC8qIGRpc2FibGUgU0lHUVVJVCB0byBhbGxvdyB1c2UgQ3RybC1cIGtleSAqLworLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOworLSAgICB0Y3NldGF0dHIgKGN1cl90ZXJtLT5GaWxlZGVzLCBUQ1NBTk9XLCAmY3VyX3Rlcm0tPk50dHliKTsKKy0jZWxzZQorLSAgICAvKiBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb24gKGJzZCBjdXJzZXMsIC4uLikgKi8KKy0gICAgeworLSAgICAgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKKy0KKy0gICAgICAgIHRjZ2V0YXR0ciAoU1RESU5fRklMRU5PLCAmbW9kZSk7CistICAgICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLworLSAgICAgICAgbW9kZS5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAvKiBeZyAqLworLSAgICAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCistICAgICAgICBtb2RlLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKKy0gICAgICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7CistICAgIH0KKy0jZW5kaWYgLyogTkNVUlNFU19WRVJTSU9OICovCisrICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOworKyAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm1vZGUpOworKworKyAgICAvKiBjdXJzZXMgcmVtZW1iZXJzIHRoZSAiaW4tcHJvZ3JhbSIgbW9kZXMgYWZ0ZXIgdGhpcyBjYWxsICovCisrICAgIGRlZl9wcm9nX21vZGUgKCk7CisgCisgICAgIHR0eV9zdGFydF9pbnRlcnJ1cHRfa2V5ICgpOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2YzZjczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzU2ZjBjOWFiZDYzYzRjYWEzNjM2YmJhM2EwOGJmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjU5MWUxMGRjYmVhOTUyMzM0MzRkYTQwY2RhZDQ2NjNkMzYwMjI5YWRmODk4MjY1NzZjMzE5NjY3YzEwM2NiIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jCi0jIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbiwjISR7YmluZGlyfS9lbnYgcHl0aG9uLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCi19Ci0KLVBBQ0tBR0VTID0rICIke0JQTn0taGVscGVycy1wZXJsICR7QlBOfS1oZWxwZXJzLXB5dGhvbiAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCi1SREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcHl0aG9uID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQeXRob24tYmFzZWQgaGVscGVyIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0taGVscGVycy1weXRob24gPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWMxNTQxIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcHl0aG9uID0gInB5dGhvbiIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycyA9ICJNaWRuaWdodCBDb21tYW5kZXIgc2hlbGwgaGVscGVyIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0taGVscGVycyA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKiAke2xpYmV4ZWNkaXJ9L21jL2V4dC5kLyoiCi0KLVNVTU1BUllfJHtCUE59LWZpc2ggPSAiTWlkbmlnaHQgQ29tbWFuZGVyIEZpc2ggc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1maXNoID0gIiR7bGliZXhlY2Rpcn0vbWMvZmlzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhMTU2YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIGlzIGFuIG5jdXJzZXMgYmFzZWQgZmlsZSBtYW5hZ2VyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzBiYmFmZTM2MGU3M2Y5ODQwYmQ3OTgxNjIxZjljMiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0RFUEVORFMgPSAibmN1cnNlcyBnbGliLTIuMCB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mbyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWMtcmVwbGFjZS1wZXJsLXctd2l0aC11c2Utd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWY0MjNmNWI2ZjgwYTFhNWE1ZmM1M2I4MzI0Y2FiNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDBkZGRmYWU3MTQ5ZmFjOTAzZjc0ZWY1NWNmY2IyYTE5OGUwZjcwMDQzNDZjN2JkZWQ0MzY2OWQ2MWJhNDM2ZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworIworIyBCb3RoIFNhbWJhIChzbWIpIGFuZCBzZnRwIHJlcXVpcmUgcGFja2FnZSBkZWxpdmVyZWQgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZAorIworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS12ZnMtc21iLC0tZGlzYWJsZS12ZnMtc21iLHNhbWJhLCIKK1BBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtdmZzLXNmdHAsLS1kaXNhYmxlLXZmcy1zZnRwLGxpYnNzaDIsIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNjcmVlbj1uY3Vyc2VzIC0td2l0aG91dC1ncG0tbW91c2UgLS13aXRob3V0LXgiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKKyAgICAgICAgCisgICAgICAgIHJtICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvczMrICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWMxNTQxCit9CisKK1BBQ0tBR0VTID0rICIke0JQTn0taGVscGVycy1wZXJsICR7QlBOfS1oZWxwZXJzICR7QlBOfS1maXNoIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFBlcmwtYmFzZWQgaGVscGVyIHNjcmlwdHMiCitGSUxFU18ke0JQTn0taGVscGVycy1wZXJsID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYXB0KyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWIgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViZCAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZHBrZysgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvbWFpbGZzICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9wYXRjaGZzIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9ycG1zKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWxpYiBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdXppcCIKK1JERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAicGVybCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycyA9ICJNaWRuaWdodCBDb21tYW5kZXIgc2hlbGwgaGVscGVyIHNjcmlwdHMiCitGSUxFU18ke0JQTn0taGVscGVycyA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKiAke2xpYmV4ZWNkaXJ9L21jL2V4dC5kLyoiCisKK1NVTU1BUllfJHtCUE59LWZpc2ggPSAiTWlkbmlnaHQgQ29tbWFuZGVyIEZpc2ggc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1maXNoID0gIiR7bGliZXhlY2Rpcn0vbWMvZmlzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1Vc2UtQ0MtdG8tY2hlY2stZm9yLWltcGxpY2l0LWZhbGx0aHJvdWdoLXdhcm5pbmctc3VwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLVVzZS1DQy10by1jaGVjay1mb3ItaW1wbGljaXQtZmFsbHRocm91Z2gtd2FybmluZy1zdXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiN2I4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1Vc2UtQ0MtdG8tY2hlY2stZm9yLWltcGxpY2l0LWZhbGx0aHJvdWdoLXdhcm5pbmctc3VwLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTEyOWVlNmQ4MGYzYjJjZGEwZDgyN2MzNWZhODFhNTE3Y2Y2ZDUwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEzIE9jdCAyMDE3IDEwOjI3OjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBDQyB0byBjaGVjayBmb3IgaW1wbGljaXQtZmFsbHRocm91Z2ggd2FybmluZyBzdXBwb3J0CisKK1RoaXMgd2FybmluZyBpdCBuZXcgaW4gZ2NjNyBhbmQgaW4gY3Jvc3MgY29tcGlsZSBjYXNlCitpdHMgcG9zc2libGUgdGhhdCBidWlsZCBob3N0IGdjYyBpcyB2ZXJzaW9uIDcrIGJ1dCB0aGUKK2Nyb3NzIGNvbXBpbGUgdXNlZCBmb3IgY29tcGlsaW5nIG1kYWRtIGlzIDwgdmVyc2lvbiA3CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggZDIwN2VlNC4uOTcxZjI1NSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTQ4LDcgKzQ4LDcgQEAgaWZkZWYgV0FSTl9VTlVTRUQKKyBDV0ZMQUdTICs9IC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1PMworIGVuZGlmCisgCistRkFMTFRIUk9VR0ggOj0gJChzaGVsbCBnY2MgLXYgLS1oZWxwIDI+JjEgfCBncmVwICJpbXBsaWNpdC1mYWxsdGhyb3VnaCIgfCB3YyAtbCkKKytGQUxMVEhST1VHSCA6PSAkKHNoZWxsICR7Q0N9IC12IC0taGVscCAyPiYxIHwgZ3JlcCAiaW1wbGljaXQtZmFsbHRocm91Z2giIHwgd2MgLWwpCisgaWZuZXEgIiQoRkFMTFRIUk9VR0gpIiAgIjAiCisgQ1dGTEFHUyArPSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTAKKyBlbmRpZgorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLW1kYWRtLUFkZC1XaW1wbGljaXQtZmFsbHRocm91Z2gtMC1pbi1NYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1BZGQtV2ltcGxpY2l0LWZhbGx0aHJvdWdoLTAtaW4tTWFrZWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxNTE3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1BZGQtV2ltcGxpY2l0LWZhbGx0aHJvdWdoLTAtaW4tTWFrZWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBhYTA5YWYwZmUyZWMwNzM3ZmEwNGZmZDAwOTU3NTMyNjg0ZTI1N2I5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDE3IE1hciAyMDE3IDE5OjU1OjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBtZGFkbTogQWRkIFdpbXBsaWNpdC1mYWxsdGhyb3VnaD0wIGluIE1ha2VmaWxlCisKK1RoZXJlIGFyZSBtYW55IGVycm9ycyBsaWtlICdlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCcuCitCdXQgdGhlIGxvZ2ljIGlzIHJpZ2h0LiBTbyBhZGQgdGhlIGZsYWcgV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTAKK3RvIGRpc2FibGUgdGhlIGVycm9yIG1lc3NhZ2VzLiBUaGUgbWV0aG9kIEkgdXNlIGlzIGZyb20KK2h0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MvV2FybmluZy1PcHRpb25zLmh0bWwKKyNpbmRleC1XaW1wbGljaXQtZmFsbHRocm91Z2gtMzc1CisKK1NpZ25lZC1vZmYtYnk6IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisgTWFrZWZpbGUgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMGYzMDdlYy4uZTFhNzA1OCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTQ4LDYgKzQ4LDExIEBAIGlmZGVmIFdBUk5fVU5VU0VECisgQ1dGTEFHUyArPSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtTzMKKyBlbmRpZgorIAorK0ZBTExUSFJPVUdIIDo9ICQoc2hlbGwgZ2NjIC12IC0taGVscCAyPiYxIHwgZ3JlcCAiaW1wbGljaXQtZmFsbHRocm91Z2giIHwgd2MgLWwpCisraWZuZXEgIiQoRkFMTFRIUk9VR0gpIiAgIjAiCisrQ1dGTEFHUyArPSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTAKKytlbmRpZgorKworIGlmZGVmIERFQklBTgorIENQUEZMQUdTICs9IC1EREVCSUFOCisgZW5kaWYKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMi1tZGFkbS1TcGVjaWZ5LWVub3VnaC1sZW5ndGgtd2hlbi13cml0ZS10by1idWZmZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDItbWRhZG0tU3BlY2lmeS1lbm91Z2gtbGVuZ3RoLXdoZW4td3JpdGUtdG8tYnVmZmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiY2UwNTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDItbWRhZG0tU3BlY2lmeS1lbm91Z2gtbGVuZ3RoLXdoZW4td3JpdGUtdG8tYnVmZmVyLnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gYmI0ZGYyNzMwNDFiYTIwNjAwOGJkYjBhZGE3NWNjZDk3YzI5ZjYyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAxOTo1NTo0MyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNV0gbWRhZG06IFNwZWNpZnkgZW5vdWdoIGxlbmd0aCB3aGVuIHdyaXRlIHRvIGJ1ZmZlcgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJbiBEZXRhaWwuYyB0aGUgYnVmZmVyIHBhdGggaW4gZnVuY3Rpb24gRGV0YWlsIGlzIGRlZmluZWQgYXMgcGF0aFsyMDBdLAoraW4gZmFjdCB0aGUgbWF4IGxlbnRoIG9mIGNvbnRlbnQgd2hpY2ggbmVlZHMgdG8gd3JpdGUgdG8gdGhlIGJ1ZmZlciBpcworMjg3LiBCZWNhdXNlIHRoZSBsZW5ndGggb2YgZG5hbWUgb2Ygc3RydWN0IGRpcmVudCBpcyAyNTUuCitEdXJpbmcgYnVpbGRpbmcgaXQgcmVwb3J0cyBlcnJvcjoKK2Vycm9yOiDigJglc+KAmSBkaXJlY3RpdmUgd3JpdGluZyB1cCB0byAyNTUgYnl0ZXMgaW50byBhIHJlZ2lvbiBvZiBzaXplIDE4OQorWy1XZXJyb3I9Zm9ybWF0LW92ZXJmbG93PV0KKworSW4gZnVuY3Rpb24gZXhhbWluZV9zdXBlcjAgdGhlcmUgaXMgYSBidWZmZXIgbmIgd2l0aCBsZW5ndGggNS4KK0J1dCBpdCBuZWVkIHRvIHNob3cgYSBpbnQgdHlwZSBhcmd1bWVudC4gVGhlIGxlbmdodCBvZiBtYXgKK251bWJlciBvZiBpbnQgaXMgMTAuIFNvIHRoZSBidWZmZXIgbGVuZ3RoIHNob3VsZCBiZSAxMS4KKworSW4gaHVtYW5fc2l6ZSBmdW5jdGlvbiB0aGUgbGVuZ3RoIG9mIGJ1ZiBpcyAzMC4gRHVyaW5nIGJ1aWxkaW5nCit0aGVyZSBpcyBhIGVycm9yOgorb3V0cHV0IGJldHdlZW4gMjAgYW5kIDQ3IGJ5dGVzIGludG8gYSBkZXN0aW5hdGlvbiBvZiBzaXplIDMwLgorQ2hhbmdlIHRoZSBsZW5ndGggdG8gNDcuCisKK1NpZ25lZC1vZmYtYnk6IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisgRGV0YWlsLmMgfCAyICstCisgc3VwZXIwLmMgfCAyICstCisgdXRpbC5jICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9EZXRhaWwuYyBiL0RldGFpbC5jCitpbmRleCA1MDliMGQ0Li5jYjMzNzk0IDEwMDY0NAorLS0tIGEvRGV0YWlsLmMKKysrKyBiL0RldGFpbC5jCitAQCAtNTc1LDcgKzU3NSw3IEBAIFRoaXMgaXMgcHJldHR5IGJvcmluZworIAkJCXByaW50ZigiICBNZW1iZXIgQXJyYXlzIDoiKTsKKyAKKyAJCQl3aGlsZSAoZGlyICYmIChkZSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworLQkJCQljaGFyIHBhdGhbMjAwXTsKKysJCQkJY2hhciBwYXRoWzI4N107CisgCQkJCWNoYXIgdmJ1ZlsxMDI0XTsKKyAJCQkJaW50IG5sZW4gPSBzdHJsZW4oc3JhLT5zeXNfbmFtZSk7CisgCQkJCWRldl90IGRldmlkOworZGlmZiAtLWdpdCBhL3N1cGVyMC5jIGIvc3VwZXIwLmMKK2luZGV4IDkzOGNmZDkuLmY1YjQ1MDcgMTAwNjQ0CistLS0gYS9zdXBlcjAuYworKysrIGIvc3VwZXIwLmMKK0BAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHZvaWQgZXhhbWluZV9zdXBlcjAoc3RydWN0IHN1cGVydHlwZSAqc3QsIGNoYXIgKmhvbWVob3N0KQorIAkgICAgIGQrKykgeworIAkJbWRwX2Rpc2tfdCAqZHA7CisgCQljaGFyICpkdjsKKy0JCWNoYXIgbmJbNV07CisrCQljaGFyIG5iWzExXTsKKyAJCWludCB3b25seSwgZmFpbGZhc3Q7CisgCQlpZiAoZD49MCkgZHAgPSAmc2ItPmRpc2tzW2RdOworIAkJZWxzZSBkcCA9ICZzYi0+dGhpc19kaXNrOworZGlmZiAtLWdpdCBhL3V0aWwuYyBiL3V0aWwuYworaW5kZXggZjEwMDk3Mi4uMzJiZDkwOSAxMDA2NDQKKy0tLSBhL3V0aWwuYworKysrIGIvdXRpbC5jCitAQCAtODExLDcgKzgxMSw3IEBAIHVuc2lnbmVkIGxvbmcgY2FsY19jc3VtKHZvaWQgKnN1cGVyLCBpbnQgYnl0ZXMpCisgI2lmbmRlZiBNREFTU0VNQkxFCisgY2hhciAqaHVtYW5fc2l6ZShsb25nIGxvbmcgYnl0ZXMpCisgeworLQlzdGF0aWMgY2hhciBidWZbMzBdOworKwlzdGF0aWMgY2hhciBidWZbNDddOworIAorIAkvKiBXZSBjb252ZXJ0IGJ5dGVzIHRvIGVpdGhlciBjZW50aS1Ne2VnYSxpYml9Ynl0ZXMgb3IKKyAJICogY2VudGktR3tpZ2ksaWJpfWJ5dGVzLCB3aXRoIGFwcHJvcHJpYXRlIHJvdW5kaW5nLAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAzLVJlcGxhY2Utc25wcmludGYtd2l0aC1zdHJuY3B5LWF0LXNvbWUtcGxhY2VzLXRvLWF2b2kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDMtUmVwbGFjZS1zbnByaW50Zi13aXRoLXN0cm5jcHktYXQtc29tZS1wbGFjZXMtdG8tYXZvaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2VjODRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAzLVJlcGxhY2Utc25wcmludGYtd2l0aC1zdHJuY3B5LWF0LXNvbWUtcGxhY2VzLXRvLWF2b2kucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSBiYzg3YWYxMzE0MzI1YjAwYzZhYzAwMmE2MGEyYjBmMGNhYTgxZTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitEYXRlOiBTYXQsIDE4IE1hciAyMDE3IDEwOjMzOjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBSZXBsYWNlIHNucHJpbnRmIHdpdGggc3RybmNweSBhdCBzb21lIHBsYWNlcyB0byBhdm9pZAorIHRydW5jYXRpb24KKworSW4gZ2NjNyB0aGVyZSBhcmUgc29tZSBidWlsZGluZyBlcnJvcnMgbGlrZToKK2RpcmVjdGl2ZSBvdXRwdXQgbWF5IGJlIHRydW5jYXRlZCB3cml0aW5nIHVwIHRvIDMxIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAyNAorc25wcmludGYoc3RyLCBNUEJfU0lHX0xFTiwgJXMsIG1wYi0+c2lnKTsKKworSXQganVzdCBuZWVkIHRvIGNvcHkgb25lIHN0cmluZyB0byB0YXJnZXQuIFNvIHVzZSBzdHJuY3B5IHRvIHJlcGxhY2UgaXQuCisKK0ZvciB0aGlzIGxpbmUgY29kZTogc25wcmludGYoc3RyLCBNUEJfU0lHX0xFTiwgJXMsIG1wYi0+c2lnKTsKK0JlY2F1c2UgbXBiLT5zaWcgaGFzIHRoZSBjb250ZW50IG9mIHZlcnNpb24gYWZ0ZXIgbWFnaWMsIHNvCitpdCdzIGJldHRlciB0byB1c2Ugc3RybmNweSB0byByZXBsYWNlIHNucHJpbnRmIHRvby4KKworU2lnbmVkLW9mZi1ieTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZXMgU29yZW5zZW4gPEplcy5Tb3JlbnNlbkBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyBzdXBlci1pbnRlbC5jIHwgOSArKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3VwZXItaW50ZWwuYyBiL3N1cGVyLWludGVsLmMKK2luZGV4IDU3YzdlNzUuLjU0OTkwOTggMTAwNjQ0CistLS0gYS9zdXBlci1pbnRlbC5jCisrKysgYi9zdXBlci1pbnRlbC5jCitAQCAtMTgxMSw3ICsxODExLDggQEAgc3RhdGljIHZvaWQgZXhhbWluZV9zdXBlcl9pbXNtKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBjaGFyICpob21laG9zdCkKKyAJX191MzIgcmVzZXJ2ZWQgPSBpbXNtX3Jlc2VydmVkX3NlY3RvcnMoc3VwZXIsIHN1cGVyLT5kaXNrcyk7CisgCXN0cnVjdCBkbCAqZGw7CisgCistCXNucHJpbnRmKHN0ciwgTVBCX1NJR19MRU4sICIlcyIsIG1wYi0+c2lnKTsKKysJc3RybmNweShzdHIsIChjaGFyICopbXBiLT5zaWcsIE1QQl9TSUdfTEVOKTsKKysJc3RyW01QQl9TSUdfTEVOLTFdID0gJ1wwJzsKKyAJcHJpbnRmKCIgICAgICAgICAgTWFnaWMgOiAlc1xuIiwgc3RyKTsKKyAJc25wcmludGYoc3RyLCBzdHJsZW4oTVBCX1ZFUlNJT05fUkFJRDApLCAiJXMiLCBnZXRfaW1zbV92ZXJzaW9uKG1wYikpOworIAlwcmludGYoIiAgICAgICAgVmVyc2lvbiA6ICVzXG4iLCBnZXRfaW1zbV92ZXJzaW9uKG1wYikpOworQEAgLTcxNDIsMTQgKzcxNDMsMTYgQEAgc3RhdGljIGludCB1cGRhdGVfc3ViYXJyYXlfaW1zbShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgY2hhciAqc3ViYXJyYXksCisgCisgCQkJdS0+dHlwZSA9IHVwZGF0ZV9yZW5hbWVfYXJyYXk7CisgCQkJdS0+ZGV2X2lkeCA9IHZvbDsKKy0JCQlzbnByaW50ZigoY2hhciAqKSB1LT5uYW1lLCBNQVhfUkFJRF9TRVJJQUxfTEVOLCAiJXMiLCBuYW1lKTsKKysJCQlzdHJuY3B5KChjaGFyICopIHUtPm5hbWUsIG5hbWUsIE1BWF9SQUlEX1NFUklBTF9MRU4pOworKwkJCXUtPm5hbWVbTUFYX1JBSURfU0VSSUFMX0xFTi0xXSA9ICdcMCc7CisgCQkJYXBwZW5kX21ldGFkYXRhX3VwZGF0ZShzdCwgdSwgc2l6ZW9mKCp1KSk7CisgCQl9IGVsc2UgeworIAkJCXN0cnVjdCBpbXNtX2RldiAqZGV2OworIAkJCWludCBpOworIAorIAkJCWRldiA9IGdldF9pbXNtX2RldihzdXBlciwgdm9sKTsKKy0JCQlzbnByaW50ZigoY2hhciAqKSBkZXYtPnZvbHVtZSwgTUFYX1JBSURfU0VSSUFMX0xFTiwgIiVzIiwgbmFtZSk7CisrCQkJc3RybmNweSgoY2hhciAqKSBkZXYtPnZvbHVtZSwgbmFtZSwgTUFYX1JBSURfU0VSSUFMX0xFTik7CisrCQkJZGV2LT52b2x1bWVbTUFYX1JBSURfU0VSSUFMX0xFTi0xXSA9ICdcMCc7CisgCQkJZm9yIChpID0gMDsgaSA8IG1wYi0+bnVtX3JhaWRfZGV2czsgaSsrKSB7CisgCQkJCWRldiA9IGdldF9pbXNtX2RldihzdXBlciwgaSk7CisgCQkJCWhhbmRsZV9taXNzaW5nKHN1cGVyLCBkZXYpOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA0LW1kYWRtLUZvcmNlZC10eXBlLWNvbnZlcnNpb24tdG8tYXZvaWQtdHJ1bmNhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNC1tZGFkbS1Gb3JjZWQtdHlwZS1jb252ZXJzaW9uLXRvLWF2b2lkLXRydW5jYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRmZGU0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNC1tZGFkbS1Gb3JjZWQtdHlwZS1jb252ZXJzaW9uLXRvLWF2b2lkLXRydW5jYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZGE4ODkwMzJlMmQ5OTc1MWVkOWZlNjAwMTYxNDZlOWFlODExNGNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitEYXRlOiBTYXQsIDE4IE1hciAyMDE3IDEwOjMzOjQ1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBtZGFkbTogRm9yY2VkIHR5cGUgY29udmVyc2lvbiB0byBhdm9pZCB0cnVuY2F0aW9uCisKK0djYyByZXBvcnRzIGl0IG5lZWRzIDE5IGJ5dGVzIHRvIHJpZ2h0IHRvIGRpc2stPnNlcmlhbC4gQmVjYXVzZSB0aGUKK3R5cGUgb2YgYXJndW1lbnQgaSBpcyBpbnQuIEJ1dCB0aGUgbWVhbmluZyBvZiBpIGlzIGZhaWxlZCBkaXNrCitudW1iZXIuIFNvIGl0IGRvZXNuJ3QgbmVlZCB0byB1c2UgMTkgYnl0ZXMuICBKdXN0IGFkZCBhIHR5cGUKK2NvbnZlcnNpb24gdG8gYXZvaWQgdGhpcyBidWlsZGluZyBlcnJvcgorCitTaWduZWQtb2ZmLWJ5OiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplcyBTb3JlbnNlbiA8SmVzLlNvcmVuc2VuQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorIHN1cGVyLWludGVsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zdXBlci1pbnRlbC5jIGIvc3VwZXItaW50ZWwuYworaW5kZXggNTQ5OTA5OC4uNGU0NjZmZiAxMDA2NDQKKy0tLSBhL3N1cGVyLWludGVsLmMKKysrKyBiL3N1cGVyLWludGVsLmMKK0BAIC01MjI4LDcgKzUyMjgsNyBAQCBzdGF0aWMgaW50IGluaXRfc3VwZXJfaW1zbV92b2x1bWUoc3RydWN0IHN1cGVydHlwZSAqc3QsIG1kdV9hcnJheV9pbmZvX3QgKmluZm8sCisgCQkJZGlzay0+c3RhdHVzID0gQ09ORklHVVJFRF9ESVNLIHwgRkFJTEVEX0RJU0s7CisgCQkJZGlzay0+c2NzaV9pZCA9IF9fY3B1X3RvX2xlMzIofihfX3UzMikwKTsKKyAJCQlzbnByaW50ZigoY2hhciAqKSBkaXNrLT5zZXJpYWwsIE1BWF9SQUlEX1NFUklBTF9MRU4sCistCQkJCSAibWlzc2luZzolZCIsIGkpOworKwkJCQkgIm1pc3Npbmc6JWQiLCAoX191OClpKTsKKyAJCX0KKyAJCWZpbmRfbWlzc2luZyhzdXBlcik7CisgCX0gZWxzZSB7CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDUtQWRkLWEtY29tbWVudC10by1pbmRpY2F0ZS12YWxpZC1mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNS1BZGQtYS1jb21tZW50LXRvLWluZGljYXRlLXZhbGlkLWZhbGx0aHJvdWdoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOWQzYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDUtQWRkLWEtY29tbWVudC10by1pbmRpY2F0ZS12YWxpZC1mYWxsdGhyb3VnaC5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSAwOTAxNDIzM2JmMTA5MDBmN2JkODM5MGIzYjY0ZmY4MmJjYTQ1MjIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgQXByIDIwMTcgMTI6MDQ6MTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIEFkZCBhIGNvbW1lbnQgdG8gaW5kaWNhdGUgdmFsaWQgZmFsbHRocm91Z2gKKworZ2NjNyB3YXJucyBhYm91dCBjb2RlIHdpdGggZmFsbHRocm91Z2hzLCB0aGlzIHBhdGNoIGFkZHMKK3RoZSBjb21tZW50IHRvIGluZGljYXRlIGEgdmFsaWQgZmFsbHRocm91Z2gsIGhlbHBzIGdjYzcKK2NvbXBpbGVyIHdhcm5pbmdzCisKK1RoaXMgd29ya3MgaW4gY3Jvc3MgYW5kIG5hdGl2ZSBjb21waWxhdGlvbiBjYXNlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBHcm93LmMgICAgICAgIHwgNCArKysrCisgYml0bWFwLmMgICAgICB8IDggKysrKysrKysKKyBtZGFkbS5jICAgICAgIHwgMiArKworIHN1cGVyLWludGVsLmMgfCAxICsKKyB1dGlsLmMgICAgICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Hcm93LmMgYi9Hcm93LmMKK2luZGV4IDQ1NWM1ZjkuLjI3YzczYjEgMTAwNzU1CistLS0gYS9Hcm93LmMKKysrKyBiL0dyb3cuYworQEAgLTEyNTcsNiArMTI1Nyw3IEBAIGNoYXIgKmFuYWx5c2VfY2hhbmdlKGNoYXIgKmRldm5hbWUsIHN0cnVjdCBtZGluZm8gKmluZm8sIHN0cnVjdCByZXNoYXBlICpyZSkKKyAJCXN3aXRjaCAoaW5mby0+bmV3X2xldmVsKSB7CisgCQljYXNlIDQ6CisgCQkJZGVsdGFfcGFyaXR5ID0gMTsKKysJCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSAwOgorIAkJCXJlLT5sZXZlbCA9IDQ7CisgCQkJcmUtPmJlZm9yZS5sYXlvdXQgPSAwOworQEAgLTEyODQsMTAgKzEyODUsMTIgQEAgY2hhciAqYW5hbHlzZV9jaGFuZ2UoY2hhciAqZGV2bmFtZSwgc3RydWN0IG1kaW5mbyAqaW5mbywgc3RydWN0IHJlc2hhcGUgKnJlKQorIAorIAljYXNlIDQ6CisgCQlpbmZvLT5hcnJheS5sYXlvdXQgPSBBTEdPUklUSE1fUEFSSVRZX047CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAljYXNlIDU6CisgCQlzd2l0Y2ggKGluZm8tPm5ld19sZXZlbCkgeworIAkJY2FzZSAwOgorIAkJCWRlbHRhX3Bhcml0eSA9IC0xOworKwkJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDQ6CisgCQkJcmUtPmxldmVsID0gaW5mby0+YXJyYXkubGV2ZWw7CisgCQkJcmUtPmJlZm9yZS5kYXRhX2Rpc2tzID0gaW5mby0+YXJyYXkucmFpZF9kaXNrcyAtIDE7CitAQCAtMTM0Myw2ICsxMzQ2LDcgQEAgY2hhciAqYW5hbHlzZV9jaGFuZ2UoY2hhciAqZGV2bmFtZSwgc3RydWN0IG1kaW5mbyAqaW5mbywgc3RydWN0IHJlc2hhcGUgKnJlKQorIAkJY2FzZSA0OgorIAkJY2FzZSA1OgorIAkJCWRlbHRhX3Bhcml0eSA9IC0xOworKwkJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDY6CisgCQkJcmUtPmxldmVsID0gNjsKKyAJCQlyZS0+YmVmb3JlLmRhdGFfZGlza3MgPSBpbmZvLT5hcnJheS5yYWlkX2Rpc2tzIC0gMjsKK2RpZmYgLS1naXQgYS9iaXRtYXAuYyBiL2JpdG1hcC5jCitpbmRleCBjY2VkZmQzLi5hNmZmMDkxIDEwMDY0NAorLS0tIGEvYml0bWFwLmMKKysrKyBiL2JpdG1hcC5jCitAQCAtODIsMTMgKzgyLDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNvdW50X2RpcnR5X2JpdHNfYnl0ZShjaGFyIGJ5dGUsIGludCBudW1fYml0cykKKyAKKyAJc3dpdGNoIChudW1fYml0cykgeyAvKiBmYWxsIHRocm91Z2guLi4gKi8KKyAJCWNhc2UgODoJaWYgKGJ5dGUgJiAxMjgpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNzoJaWYgKGJ5dGUgJiAgNjQpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNjoJaWYgKGJ5dGUgJiAgMzIpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNToJaWYgKGJ5dGUgJiAgMTYpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNDoJaWYgKGJ5dGUgJiAgIDgpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgMzogaWYgKGJ5dGUgJiAgIDQpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgMjoJaWYgKGJ5dGUgJiAgIDIpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgMToJaWYgKGJ5dGUgJiAgIDEpIG51bSsrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWRlZmF1bHQ6IGJyZWFrOworIAl9CisgCitkaWZmIC0tZ2l0IGEvbWRhZG0uYyBiL21kYWRtLmMKK2luZGV4IGMzYTI2NWIuLjJkMDZkM2IgMTAwNjQ0CistLS0gYS9tZGFkbS5jCisrKysgYi9tZGFkbS5jCitAQCAtMTQ4LDYgKzE0OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJICAgIG1vZGUgPT0gQ1JFQVRFIHx8IG1vZGUgPT0gR1JPVyB8fAorIAkJCSAgICBtb2RlID09IElOQ1JFTUVOVEFMIHx8IG1vZGUgPT0gTUFOQUdFKQorIAkJCQlicmVhazsgLyogYiBtZWFucyBiaXRtYXAgKi8KKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIEJyaWVmOgorIAkJCWMuYnJpZWYgPSAxOworIAkJCWNvbnRpbnVlOworQEAgLTgyOCw2ICs4MjksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAorIAkJY2FzZSBPKElOQ1JFTUVOVEFMLE5vRGVncmFkZWQpOgorIAkJCXByX2VycigiLS1uby1kZWdyYWRlZCBpcyBkZXByZWNhdGVkIGluIEluY3JlbWVudGFsIG1vZGVcbiIpOworKwkJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIE8oQVNTRU1CTEUsTm9EZWdyYWRlZCk6IC8qIC0tbm8tZGVncmFkZWQgKi8KKyAJCQljLnJ1bnN0b3AgPSAtMTsgLyogLS1zdG9wIGlzbid0IGFsbG93ZWQgZm9yIC0tYXNzZW1ibGUsCisgCQkJCQkgKiBzbyB3ZSBvdmVybG9hZCBzbGlnaHRseSAqLworZGlmZiAtLWdpdCBhL3N1cGVyLWludGVsLmMgYi9zdXBlci1pbnRlbC5jCitpbmRleCA0ZTQ2NmZmLi4wMGEyOTI1IDEwMDY0NAorLS0tIGEvc3VwZXItaW50ZWwuYworKysrIGIvc3VwZXItaW50ZWwuYworQEAgLTMyNzEsNiArMzI3MSw3IEBAIHN0YXRpYyB2b2lkIGdldGluZm9fc3VwZXJfaW1zbV92b2x1bWUoc3RydWN0IHN1cGVydHlwZSAqc3QsIHN0cnVjdCBtZGluZm8gKmluZm8sCisgCQkJCQkJPDwgU0VDVF9QRVJfTUJfU0hJRlQ7CisgCQkJfQorIAkJfQorKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgTUlHUl9WRVJJRlk6CisgCQkJLyogd2UgY291bGQgZW11bGF0ZSB0aGUgY2hlY2twb2ludGluZyBvZgorIAkJCSAqICdzeW5jX2FjdGlvbj1jaGVjaycgbWlncmF0aW9ucywgYnV0IGZvciBub3cKK2RpZmYgLS1naXQgYS91dGlsLmMgYi91dGlsLmMKK2luZGV4IDMyYmQ5MDkuLmYyYTRkMTkgMTAwNjQ0CistLS0gYS91dGlsLmMKKysrKyBiL3V0aWwuYworQEAgLTMzNSw2ICszMzUsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgcGFyc2Vfc2l6ZShjaGFyICpzaXplKQorIAkJc3dpdGNoICgqYykgeworIAkJY2FzZSAnSyc6CisgCQkJYysrOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWRlZmF1bHQ6CisgCQkJcyAqPSAyOworIAkJCWJyZWFrOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYgppbmRleCA2MjYxNGYwLi5kYzA5OGYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYgpAQCAtMTYsNiArMTYsMTIgQEAKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kYWRtLmgtVW5kZWZpbmUtZHByaW50Zi1iZWZvcmUtcmVkZWZpbmluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbnRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWRhZG0tQWRkLVdpbXBsaWNpdC1mYWxsdGhyb3VnaC0wLWluLU1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWRhZG0tU3BlY2lmeS1lbm91Z2gtbGVuZ3RoLXdoZW4td3JpdGUtdG8tYnVmZmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtUmVwbGFjZS1zbnByaW50Zi13aXRoLXN0cm5jcHktYXQtc29tZS1wbGFjZXMtdG8tYXZvaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW1kYWRtLUZvcmNlZC10eXBlLWNvbnZlcnNpb24tdG8tYXZvaWQtdHJ1bmNhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1hLWNvbW1lbnQtdG8taW5kaWNhdGUtdmFsaWQtZmFsbHRocm91Z2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0MtdG8tY2hlY2stZm9yLWltcGxpY2l0LWZhbGx0aHJvdWdoLXdhcm5pbmctc3VwLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjJjYjRmZWZmZWE5MTY3YmE3MWI1ZjM0NmEwYzBhNDBkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkNmFlN2YyNGNlZDNhMGZhN2I1NjEzYjMyZjRhNTg5YmI0ODgxZTM5NDZhNWEyYzM3MjQwNTYyNTRhZGEzYTkiCkBAIC01MCw3ICs1Niw3IEBACiB9CiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLWEgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKIAljcCAke1N9L3Rlc3QgJHtEfSR7UFRFU1RfUEFUSH0KIAlzZWQgLWUgJ3Mhc2xlZXAgMC4qIXNsZWVwIDEhZzsgcyEvdmFyL3RtcCEvIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKIAlsbiAtcyAke2Jhc2Vfc2JpbmRpcn0vbWRhZG0gJHtEfSR7UFRFU1RfUEFUSH0vbWRhZG0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEzMWE4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiVGV4dC1iYXNlZCBtb2RlbSBjb250cm9sIGFuZCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLyIKK0RFU0NSSVBUSU9OID0gIk1pbmljb20gaXMgYSB0ZXh0LWJhc2VkIG1vZGVtIGNvbnRyb2wgYW5kIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtIGZvciBVbml4LWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmljb252IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjA0NzdhYmM1Njc0MDRkZWJjYTBhMmExY2I2YjY0NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWluaWNvbS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTI7bWQ1PWE1ODgzOGNiNzA5ZjBkYjUxN2Y0ZTQyNzMwYzQ5ZTgxIgorCitTUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9sYXRlc3RmaWxlLzMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2FsbG93LnRvLmRpc2FibGUubG9ja2Rldi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1taW5pY29tLWgtdi1yZXR1cm4tdmFsdWUtaXMtbm90LTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtaXNzdXMtc3VyZmFjZWQtZHVlLXRvLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjkwMjFjYjhjNTQ0NWY2ZTZlNzRiMmFjYzM5OTYyZDYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMmY4MzZiN2E2NzdlYjBjYjFkY2E4ZDcwMzAyYjczNzI5YzNkMzBkZjI2ZDU4MzY4ZDcxMmU1Y2NhMDQxZjEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy8/Z3JvdXBfaWQ9MzAwMTgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xvY2tkZXZdID0gIi0tZW5hYmxlLWxvY2tkZXYsLS1kaXNhYmxlLWxvY2tkZXYsbG9ja2RldiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKwlmb3IgZCBpbiBkb2MgZXh0cmFzIG1hbiBsaWIgc3JjOyBkbyBtYWtlIC1DICRkIERFU1RESVI9JHtEfSBpbnN0YWxsOyBkb25lCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzExODY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlRleHQtYmFzZWQgbW9kZW0gY29udHJvbCBhbmQgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0iCi1ERVNDUklQVElPTiA9ICJNaW5pY29tIGlzIGEgdGV4dC1iYXNlZCBtb2RlbSBjb250cm9sIGFuZCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSBmb3IgVW5peC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9saWJpY29udiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDIwNDc3YWJjNTY3NDA0ZGViY2EwYTJhMWNiNmI2NDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21pbmljb20uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTEyO21kNT1hNTg4MzhjYjcwOWYwZGI1MTdmNGU0MjczMGM0OWU4MSIKLQotU1JDX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy9kb3dubG9hZC5waHAvbGF0ZXN0ZmlsZS8zLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy50by5kaXNhYmxlLmxvY2tkZXYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbWluaWNvbS1oLXYtcmV0dXJuLXZhbHVlLWlzLW5vdC0wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWlzc3VzLXN1cmZhY2VkLWR1ZS10by1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MDQ0Y2EzZTI5MTI2OGMzMzI5NGYxNzFkNDI2ZGMyZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YWMzYTY2M2I4MmY0ZjVkZjY0MTE0YjQ3OTJiOTkyNmI1MzZjODVmNTlkZTBmMmQyYjMyMWM3NjI2YTkwNGY0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvP2dyb3VwX2lkPTMwMDE4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsb2NrZGV2XSA9ICItLWVuYWJsZS1sb2NrZGV2LC0tZGlzYWJsZS1sb2NrZGV2LGxvY2tkZXYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLWRvX2luc3RhbGwoKSB7Ci0JZm9yIGQgaW4gZG9jIGV4dHJhcyBtYW4gbGliIHNyYzsgZG8gbWFrZSAtQyAkZCBERVNURElSPSR7RH0gaW5zdGFsbDsgZG9uZQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCmluZGV4IDQ1ZDdiZjQuLjU2NTdmZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCkBAIC0zNyw5ICszNyw3IEBACiAKIGluaGVyaXQgZ2V0dGV4dAogCi1kb19wYXRjaFtkZXBlbmRzXSA9ICJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saW50bCAiCitkb19wYXRjaFtkZXBlbmRzXSArPSAicXVpbHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKICMgVGhlIE1ha2VmaWxlIGlzIGxhbWUsIG5vIHBhcmFsbGVsIGJ1aWxkCiBQQVJBTExFTF9NQUtFID0gIiIKQEAgLTgzLDIwICs4MSwxMiBAQAogCiBkb19jb21waWxlKCkgewogCSMgbmV0LXRvb2xzIHVzZSBDT1BUUy9MT1BUUyB0byBhbGxvdyBhZGRpbmcgY3VzdG9tIG9wdGlvbnMKLQlleHBvcnQgQ09QVFM9IiRDRkxBR1MiCi0JZXhwb3J0IExPUFRTPSIkTERGTEFHUyIKLQl1bnNldCBDRkxBR1MKLQl1bnNldCBMREZMQUdTCi0KLQlvZV9ydW5tYWtlCisJb2VfcnVubWFrZSBDT1BUUz0iJENGTEFHUyIgTE9QVFM9IiRMREZMQUdTIgogfQogCiBkb19pbnN0YWxsKCkgewotCWV4cG9ydCBDT1BUUz0iJENGTEFHUyIKLQlleHBvcnQgTE9QVFM9IiRMREZMQUdTIgotCXVuc2V0IENGTEFHUwotCXVuc2V0IExERkxBR1MKLQlvZV9ydW5tYWtlICdCQVNFRElSPSR7RH0nIGluc3RhbGwKKwkjIFdlIGRvbid0IG5lZWQgQ09QVFMgb3IgTE9QVFMsIGJ1dCBsZXQncyBiZSBjb25zaXN0ZW50LgorCW9lX3J1bm1ha2UgQ09QVFM9IiRDRkxBR1MiIExPUFRTPSIkTERGTEFHUyIgJ0JBU0VESVI9JHtEfScgaW5zdGFsbAogCiAJaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIvYmluIiBdOyB0aGVuCiAJCW1rZGlyIC1wICR7RH0vJHtiYXNlX2JpbmRpcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4yMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzZjZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciB0ZXh0IG1vZGUgdXNlciBpbnRlcmZhY2VzIgotCi1ERVNDUklQVElPTiA9ICJOZXd0IGlzIGEgcHJvZ3JhbW1pbmcgbGlicmFyeSBmb3IgY29sb3IgdGV4dCBtb2RlLCB3aWRnZXQgYmFzZWQgdXNlciBcCi1pbnRlcmZhY2VzLiAgTmV3dCBjYW4gYmUgdXNlZCB0byBhZGQgc3RhY2tlZCB3aW5kb3dzLCBlbnRyeSB3aWRnZXRzLCBcCi1jaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBsYWJlbHMsIHBsYWluIHRleHQgZmllbGRzLCBzY3JvbGxiYXJzLCBcCi1ldGMuLCB0byB0ZXh0IG1vZGUgdXNlciBpbnRlcmZhY2VzLiAgVGhpcyBwYWNrYWdlIGFsc28gY29udGFpbnMgdGhlIFwKLXNoYXJlZCBsaWJyYXJ5IG5lZWRlZCBieSBwcm9ncmFtcyBidWlsdCB3aXRoIG5ld3QsIGFzIHdlbGwgYXMgYSBcCi0vdXNyL2Jpbi9kaWFsb2cgcmVwbGFjZW1lbnQgY2FsbGVkIHdoaXB0YWlsLiAgTmV3dCBpcyBiYXNlZCBvbiB0aGUgXAotc2xhbmcgbGlicmFyeS4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9uZXd0LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotIyBzbGFuZyBuZWVkcyB0byBiZSA+PSAyLjIKLURFUEVORFMgPSAic2xhbmcgcG9wdCIKLQotU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbmV3dC9uZXd0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfU0hBUkVERElSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzX2FyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLUFkZC10aW5mby1saWJyYXJ5LXRvLXRoZS1saW5raW5nLWxpYnJhcmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGllLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGV0ZWN0LWdvbGQtYXMtR05VLWxpbmtlci10b28ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTRhYTBmNzk0M2VkZDM5YzUyNDgxYTg3ZjY4ZjQxMmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhjMGRiNTZjMjE5OTZhZjZhN2NiYWI5OTQ5MWI3NzRjNmMwOWNlZjkxY2Q5YjAzOTAzYzg0NjM0YmZmMmU4MCIKLQotUyA9ICIke1dPUktESVJ9L25ld3QtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtdGNsIC0td2l0aG91dC1weXRob24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1leHBvcnQgQ1BQRkxBR1MKLQotUEFDS0FHRVNfcHJlcGVuZCA9ICJ3aGlwdGFpbCAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNoIGF1dG9nZW4uc2gKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgTWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBybSAtZiAke0J9Ly5kZXBlbmQKLX0KLQotRklMRVNfd2hpcHRhaWwgPSAiJHtiaW5kaXJ9L3doaXB0YWlsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Y2U3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciB0ZXh0IG1vZGUgdXNlciBpbnRlcmZhY2VzIgorCitERVNDUklQVElPTiA9ICJOZXd0IGlzIGEgcHJvZ3JhbW1pbmcgbGlicmFyeSBmb3IgY29sb3IgdGV4dCBtb2RlLCB3aWRnZXQgYmFzZWQgdXNlciBcCitpbnRlcmZhY2VzLiAgTmV3dCBjYW4gYmUgdXNlZCB0byBhZGQgc3RhY2tlZCB3aW5kb3dzLCBlbnRyeSB3aWRnZXRzLCBcCitjaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBsYWJlbHMsIHBsYWluIHRleHQgZmllbGRzLCBzY3JvbGxiYXJzLCBcCitldGMuLCB0byB0ZXh0IG1vZGUgdXNlciBpbnRlcmZhY2VzLiAgVGhpcyBwYWNrYWdlIGFsc28gY29udGFpbnMgdGhlIFwKK3NoYXJlZCBsaWJyYXJ5IG5lZWRlZCBieSBwcm9ncmFtcyBidWlsdCB3aXRoIG5ld3QsIGFzIHdlbGwgYXMgYSBcCisvdXNyL2Jpbi9kaWFsb2cgcmVwbGFjZW1lbnQgY2FsbGVkIHdoaXB0YWlsLiAgTmV3dCBpcyBiYXNlZCBvbiB0aGUgXAorc2xhbmcgbGlicmFyeS4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9uZXd0LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworIyBzbGFuZyBuZWVkcyB0byBiZSA+PSAyLjIKK0RFUEVORFMgPSAic2xhbmcgcG9wdCIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbmV3dC9uZXd0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfU0hBUkVERElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzX2FyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLUFkZC10aW5mby1saWJyYXJ5LXRvLXRoZS1saW5raW5nLWxpYnJhcmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGllLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGV0ZWN0LWdvbGQtYXMtR05VLWxpbmtlci10b28ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzBiMjg4ZjgyMTIzNDU5M2E4ZTc5MjBlNDM1YjI1OWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ2NmJhNmJlZmZjM2Y3ODZkNGNjZmVlOWQyYjQzZDkzNDg0NjgwZWY4ZGI5Mzk3YTRmYjcwYjVhZGJiNmRiYyIKKworUyA9ICIke1dPUktESVJ9L25ld3QtJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtdGNsIC0td2l0aG91dC1weXRob24iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitDTEVBTkJST0tFTiA9ICIxIgorCitleHBvcnQgQ1BQRkxBR1MKKworUEFDS0FHRVNfcHJlcGVuZCA9ICJ3aGlwdGFpbCAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNoIGF1dG9nZW4uc2gKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgTWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBybSAtZiAke0J9Ly5kZXBlbmQKK30KKworRklMRVNfd2hpcHRhaWwgPSAiJHtiaW5kaXJ9L3doaXB0YWlsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCmluZGV4IGQ4OTc1ZjIuLmZkZWRlNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgpAQCAtODYsNyArODYsNiBAQAogICAgIG1jLWZpc2ggXAogICAgIG1jLWhlbHBlcnMgXAogICAgIG1jLWhlbHBlcnMtcGVybCBcCi0gICAgbWMtaGVscGVycy1weXRob24gXAogICAgIG1rdGVtcCBcCiAgICAgbmN1cnNlcyBcCiAgICAgbmV0LXRvb2xzIFwKQEAgLTExMCw3ICsxMDksNiBAQAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLWRldi11dGlscyA9ICJcCi0gICAgYnlhY2MgXAogICAgIGRpZmZ1dGlscyBcCiAgICAgbTQgXAogICAgIG1ha2UgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKaW5kZXggYTE1NmJjYi4uNWJhYWYzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCkBAIC02Niw3ICs2Niw2IEBACiAgICAgbWMtZmlzaCBcCiAgICAgbWMtaGVscGVycyBcCiAgICAgbWMtaGVscGVycy1wZXJsIFwKLSAgICBtYy1oZWxwZXJzLXB5dGhvbiBcCiAgICAgbWRhZG0gXAogICAgIG1pbmljb20gXAogICAgIG5lb24gXApAQCAtMTU0LDcgKzE1Myw2IEBACiAgICAgbG9jYWxlZGVmIFwKICAgICBsc2IgXAogICAgIG00IFwKLSAgICBtYWlseCBcCiAgICAgbWFrZSBcCiAgICAgbWFuIFwKICAgICBtYW4tcGFnZXMgXApAQCAtMTc4LDcgKzE3Niw2IEBACiAgICAgbmN1cnNlcyBcCiAgICAgemxpYiBcCiAgICAgbnNwciBcCi0gICAgbGlicG5nMTIgXAogICAgIG5zcyBcCiAiCiAKQEAgLTIwMywzMSArMjAwLDYgQEAKICAgICBweXRob24tbWlzYyBcCiAiCiAKLVFUNFBLR1MgPSAiIFwKLSAgICBsaWJxdGNvcmU0IFwKLSAgICBsaWJxdGd1aTQgXAotICAgIGxpYnF0c3FsNCBcCi0gICAgbGlicXRzdmc0IFwKLSAgICBsaWJxdHhtbDQgXAotICAgIGxpYnF0bmV0d29yazQgXAotICAgIHF0NC1wbHVnaW4tc3FsZHJpdmVyLXNxbGl0ZSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wiLCAibGlicXRvcGVuZ2w0IiwgIiIsIGQpfSBcCi0gICAgIgotUVQ0UEtHU19taXBzNjQgPSAiIgotUVQ0UEtHU19taXBzNjRuMzIgPSAiIgotCi1kZWYgZ2V0X2xpYnF0NChkKToKLSAgICBpZiAnbGludXhzdGRiYXNlJyBpbiBkLmdldFZhcignRElTVFJPT1ZFUlJJREVTJywgRmFsc2UpIG9yICIiOgotICAgICAgICBpZiAncXQ0JyBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJywgRmFsc2UpIG9yICIiOgotICAgICAgICAgICAgcmV0dXJuIGQuZ2V0VmFyKCdRVDRQS0dTJywgRmFsc2UpCi0KLSAgICAgICAgYmIud2FybignVGhlIG1ldGEtcXQ0IGxheWVyIHNob3VsZCBiZSBhZGRlZCwgdGhpcyBsYXllciBwcm92aWRlcyBRdCA0LnggJyBcCi0gICAgICAgICAgICAgICAgJ2xpYnJhcmllcy4gSXRzIGludGVuZGVkIHVzZSBpcyBmb3IgcGFzc2luZyBMU0IgdGVzdHMgYXMgUXQ0IGlzICcgXAotICAgICAgICAgICAgICAgICdhIHJlcXVpcmVtZW50IGZvciBMU0IuJykKLSAgICByZXR1cm4gJycKLSMgV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIHJlYnVpbGQgZXZlcnkgdGltZSB5b3UgY2hhbmdlIHlvdXIgbGF5ZXIgY29uZmlnCi1nZXRfbGlicXQ0W3ZhcmRlcHNleGNsdWRlXSArPSAiQkJGSUxFX0NPTExFQ1RJT05TIgotCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wID0gIkxTQiBEZXNrdG9wIgogREVTQ1JJUFRJT05fcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAogICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIERlc2t0b3Agc3BlY2lmaWNhdGlvbiIKQEAgLTI0OCw3ICsyMjAsNiBAQAogICAgIGd0aysgXAogICAgIGF0ayBcCiAgICAgbGliYXNvdW5kIFwKLSAgICAke0BnZXRfbGlicXQ0KGQpfSBcCiAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1ydW50aW1lLWFkZCA9ICJcCkBAIC0yNjcsMTAgKzIzOCw0IEBACiAgICAgZ2xpYmMtbG9jYWxlZGF0YS1wb3NpeCBcCiAgICAgZ2xpYmMtZXh0cmEtbnNzIFwKICAgICBnbGliYy1wY3Byb2ZpbGUgXAotICAgIGxpYmNsYXNzLWlzYS1wZXJsIFwKLSAgICBsaWJlbnYtcGVybCBcCi0gICAgbGliZHVtcHZhbHVlLXBlcmwgXAotICAgIGxpYmZpbGUtY2hlY2t0cmVlLXBlcmwgXAotICAgIGxpYmkxOG4tY29sbGF0ZS1wZXJsIFwKLSAgICBsaWJwb2QtcGxhaW5lci1wZXJsIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS91c2UtdXRtcHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vdXNlLXV0bXB4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDA0YmJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS91c2UtdXRtcHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotdXRtcCgpIG1heSBub3QgYmUgY29uZmlndXJlZCBpbiBhbmQgdXNlIHBvc2l4IGNvbXBsaWFudCB1dG1weCBhbHdheXMKLVVUTVAgaXMgU1ZJRCBsZWdhY3ksIFVUTVBYIGlzIG1hbmRhdGVkIGJ5IFBPU0lYCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbGlicGFtL3BhbV9tb2R1dGlsX2dldGxvZ2luLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9saWJwYW0vcGFtX21vZHV0aWxfZ2V0bG9naW4uYwotKysrIExpbnV4LVBBTS0xLjIuMS9saWJwYW0vcGFtX21vZHV0aWxfZ2V0bG9naW4uYwotQEAgLTEwLDggKzEwLDcgQEAKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDx1dG1wLmg+Ci0tCi0rI2luY2x1ZGUgPHV0bXB4Lmg+Ci0gI2RlZmluZSBfUEFNTU9EVVRJTF9HRVRMT0dJTiAiX3BhbW1vZHV0aWxfZ2V0bG9naW4iCi0gCi0gY29uc3QgY2hhciAqCi1AQCAtMjIsNyArMjEsNyBAQCBwYW1fbW9kdXRpbF9nZXRsb2dpbihwYW1faGFuZGxlX3QgKnBhbWgpCi0gICAgIGNvbnN0IHZvaWQgKnZvaWRfY3Vycl90dHk7Ci0gICAgIGNvbnN0IGNoYXIgKmN1cnJfdHR5OwotICAgICBjaGFyICpjdXJyX3VzZXI7Ci0tICAgIHN0cnVjdCB1dG1wICp1dCwgbGluZTsKLSsgICAgc3RydWN0IHV0bXB4ICp1dCwgbGluZTsKLSAKLSAgICAgc3RhdHVzID0gcGFtX2dldF9kYXRhKHBhbWgsIF9QQU1NT0RVVElMX0dFVExPR0lOLCAmbG9nbmFtZSk7Ci0gICAgIGlmIChzdGF0dXMgPT0gUEFNX1NVQ0NFU1MpIHsKLUBAIC00OCwxMCArNDcsMTAgQEAgcGFtX21vZHV0aWxfZ2V0bG9naW4ocGFtX2hhbmRsZV90ICpwYW1oKQotICAgICB9Ci0gICAgIGxvZ25hbWUgPSBOVUxMOwotIAotLSAgICBzZXR1dGVudCgpOwotKyAgICBzZXR1dHhlbnQoKTsKLSAgICAgc3RybmNweShsaW5lLnV0X2xpbmUsIGN1cnJfdHR5LCBzaXplb2YobGluZS51dF9saW5lKSk7Ci0gCi0tICAgIGlmICgodXQgPSBnZXR1dGxpbmUoJmxpbmUpKSA9PSBOVUxMKSB7Ci0rICAgIGlmICgodXQgPSBnZXR1dHhsaW5lKCZsaW5lKSkgPT0gTlVMTCkgewotIAlnb3RvIGNsZWFuX3VwX2FuZF9nb19ob21lOwotICAgICB9Ci0gCi1AQCAtNzQsNyArNzMsNyBAQCBwYW1fbW9kdXRpbF9nZXRsb2dpbihwYW1faGFuZGxlX3QgKnBhbWgpCi0gCi0gY2xlYW5fdXBfYW5kX2dvX2hvbWU6Ci0gCi0tICAgIGVuZHV0ZW50KCk7Ci0rICAgIGVuZHV0eGVudCgpOwotIAotICAgICByZXR1cm4gbG9nbmFtZTsKLSB9Ci1JbmRleDogTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2lzc3VlL3BhbV9pc3N1ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbW9kdWxlcy9wYW1faXNzdWUvcGFtX2lzc3VlLmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1faXNzdWUvcGFtX2lzc3VlLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLS0jaW5jbHVkZSA8dXRtcC5oPgotKyNpbmNsdWRlIDx1dG1weC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN5c2xvZy5oPgotIAotQEAgLTI0NiwxMyArMjQ2LDEzIEBAIHJlYWRfaXNzdWVfcXVvdGVkKHBhbV9oYW5kbGVfdCAqcGFtaCwgRkkKLSAJICAgICAgY2FzZSAnVSc6Ci0gCQl7Ci0gCQkgICAgdW5zaWduZWQgaW50IHVzZXJzID0gMDsKLS0JCSAgICBzdHJ1Y3QgdXRtcCAqdXQ7Ci0tCQkgICAgc2V0dXRlbnQoKTsKLS0JCSAgICB3aGlsZSAoKHV0ID0gZ2V0dXRlbnQoKSkpIHsKLSsJCSAgICBzdHJ1Y3QgdXRtcHggKnV0OwotKwkJICAgIHNldHV0eGVudCgpOwotKwkJICAgIHdoaWxlICgodXQgPSBnZXR1dHhlbnQoKSkpIHsKLSAJCQlpZiAodXQtPnV0X3R5cGUgPT0gVVNFUl9QUk9DRVNTKQotIAkJCSAgICArK3VzZXJzOwotIAkJICAgIH0KLS0JCSAgICBlbmR1dGVudCgpOwotKwkJICAgIGVuZHV0eGVudCgpOwotIAkJICAgIGlmIChjID09ICdVJykKLSAJCQlzbnByaW50ZiAoYnVmLCBzaXplb2YgYnVmLCAiJXUgJXMiLCB1c2VycywKLSAJCQkgICAgICAgICAgKHVzZXJzID09IDEpID8gInVzZXIiIDogInVzZXJzIik7Ci1JbmRleDogTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2xhc3Rsb2cvcGFtX2xhc3Rsb2cuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL21vZHVsZXMvcGFtX2xhc3Rsb2cvcGFtX2xhc3Rsb2cuYwotKysrIExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9sYXN0bG9nL3BhbV9sYXN0bG9nLmMKLUBAIC0xNSw4ICsxNSw5IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2lmZGVmIEhBVkVfVVRNUF9ICi0gIyBpbmNsdWRlIDx1dG1wLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPGxhc3Rsb2cuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9VVE1QWF9ICi0rIyBpbmNsdWRlIDx1dG1weC5oPgotICNlbmRpZgotICNpbmNsdWRlIDxwd2QuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1AQCAtMjcsNiArMjgsMTIgQEAKLSAjaW5jbHVkZSA8c3lzbG9nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotKyNpZm5kZWYgSEFWRV9VVE1QX0gKLSsjZGVmaW5lIFVUX0xJTkVTSVpFIDMyCi0rI2RlZmluZSBVVF9IT1NUU0laRSAzMgotKyNkZWZpbmUgVVRfTkFNRVNJWkUgMjU2Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQoaHB1eCkgfHwgZGVmaW5lZChzdW5vcykgfHwgZGVmaW5lZChzb2xhcmlzKQotICMgaWZuZGVmIF9QQVRIX0xBU1RMT0cKLSAjICBkZWZpbmUgX1BBVEhfTEFTVExPRyAiL3Vzci9hZG0vbGFzdGxvZyIKLUBAIC0zOCw3ICs0NSw3IEBACi0gIyAgZGVmaW5lIFVUX0xJTkVTSVpFIDEyCi0gIyBlbmRpZiAvKiBVVF9MSU5FU0laRSAqLwotICNlbmRpZgotLSNpZiBkZWZpbmVkKGhwdXgpCi0rI2lmIGRlZmluZWQoaHB1eCkgfHwgIWRlZmluZWQgSEFWRV9VVE1QX0gKLSBzdHJ1Y3QgbGFzdGxvZyB7Ci0gICAgIHRpbWVfdCAgbGxfdGltZTsKLSAgICAgY2hhciAgICBsbF9saW5lW1VUX0xJTkVTSVpFXTsKLUBAIC00NDcsOCArNDU0LDggQEAgbGFzdF9sb2dpbl9mYWlsZWQocGFtX2hhbmRsZV90ICpwYW1oLCBpbgotIHsKLSAgICAgaW50IHJldHZhbDsKLSAgICAgaW50IGZkOwotLSAgICBzdHJ1Y3QgdXRtcCB1dDsKLS0gICAgc3RydWN0IHV0bXAgdXR1c2VyOwotKyAgICBzdHJ1Y3QgdXRtcHggdXQ7Ci0rICAgIHN0cnVjdCB1dG1weCB1dHVzZXI7Ci0gICAgIGludCBmYWlsZWQgPSAwOwotICAgICBjaGFyIHRoZV90aW1lWzI1Nl07Ci0gICAgIGNoYXIgKmRhdGUgPSBOVUxMOwotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9saW1pdHMvcGFtX2xpbWl0cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbW9kdWxlcy9wYW1fbGltaXRzL3BhbV9saW1pdHMuYwotKysrIExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9saW1pdHMvcGFtX2xpbWl0cy5jCi1AQCAtMzMsNyArMzMsNyBAQAotICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGdsb2IuaD4KLS0jaW5jbHVkZSA8dXRtcC5oPgotKyNpbmNsdWRlIDx1dG1weC5oPgotICNpZm5kZWYgVVRfVVNFUiAgLyogc29tZSBzeXN0ZW1zIGhhdmUgdXRfbmFtZSBpbnN0ZWFkIG9mIHV0X3VzZXIgKi8KLSAjZGVmaW5lIFVUX1VTRVIgdXRfdXNlcgotICNlbmRpZgotQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgaW50Ci0gY2hlY2tfbG9naW5zIChwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsaW1pdCwgaW50IGN0cmwsCi0gICAgICAgICAgICAgICBzdHJ1Y3QgcGFtX2xpbWl0X3MgKnBsKQotIHsKLS0gICAgc3RydWN0IHV0bXAgKnV0OwotKyAgICBzdHJ1Y3QgdXRtcHggKnV0OwotICAgICBpbnQgY291bnQ7Ci0gCi0gICAgIGlmIChjdHJsICYgUEFNX0RFQlVHX0FSRykgewotQEAgLTI0Miw3ICsyNDIsNyBAQCBjaGVja19sb2dpbnMgKHBhbV9oYW5kbGVfdCAqcGFtaCwgY29uc3QKLSAgICAgICAgIHJldHVybiBMT0dJTl9FUlI7Ci0gICAgIH0KLSAKLS0gICAgc2V0dXRlbnQoKTsKLSsgICAgc2V0dXR4ZW50KCk7Ci0gCi0gICAgIC8qIEJlY2F1c2UgdGhlcmUgaXMgbm8gZGVmaW5pdGlvbiBhYm91dCB3aGVuIGFuIGFwcGxpY2F0aW9uCi0gICAgICAgIGFjdHVhbGx5IGFkZHMgYSB1dG1wIGVudHJ5LCBzb21lIGFwcGxpY2F0aW9ucyBiaXphcnJlbHkgZG8gdGhlCi1AQCAtMjYwLDcgKzI2MCw3IEBAIGNoZWNrX2xvZ2lucyAocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdAotIAljb3VudCA9IDE7Ci0gICAgIH0KLSAKLS0gICAgd2hpbGUoKHV0ID0gZ2V0dXRlbnQoKSkpIHsKLSsgICAgd2hpbGUoKHV0ID0gZ2V0dXR4ZW50KCkpKSB7Ci0gI2lmZGVmIFVTRVJfUFJPQ0VTUwotICAgICAgICAgaWYgKHV0LT51dF90eXBlICE9IFVTRVJfUFJPQ0VTUykgewotICAgICAgICAgICAgIGNvbnRpbnVlOwotQEAgLTI5Niw3ICsyOTYsNyBAQCBjaGVja19sb2dpbnMgKHBhbV9oYW5kbGVfdCAqcGFtaCwgY29uc3QKLSAJICAgIGJyZWFrOwotIAl9Ci0gICAgIH0KLS0gICAgZW5kdXRlbnQoKTsKLSsgICAgZW5kdXR4ZW50KCk7Ci0gICAgIGlmIChjb3VudCA+IGxpbWl0KSB7Ci0gCWlmIChuYW1lKSB7Ci0gCSAgICBwYW1fc3lzbG9nKHBhbWgsIExPR19XQVJOSU5HLAotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV90aW1lc3RhbXAvcGFtX3RpbWVzdGFtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbW9kdWxlcy9wYW1fdGltZXN0YW1wL3BhbV90aW1lc3RhbXAuYwotKysrIExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV90aW1lc3RhbXAvcGFtX3RpbWVzdGFtcC5jCi1AQCAtNTYsNyArNTYsNyBAQAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDx1dG1wLmg+Ci0rI2luY2x1ZGUgPHV0bXB4Lmg+Ci0gI2luY2x1ZGUgPHN5c2xvZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlICJobWFjc2hhMS5oIgotQEAgLTE5NywxNSArMTk3LDE1IEBAIHRpbWVzdGFtcF9nb29kKHRpbWVfdCB0aGVuLCB0aW1lX3Qgbm93LAotIHN0YXRpYyBpbnQKLSBjaGVja19sb2dpbl90aW1lKGNvbnN0IGNoYXIgKnJ1c2VyLCB0aW1lX3QgdGltZXN0YW1wKQotIHsKLS0Jc3RydWN0IHV0bXAgdXRidWYsICp1dDsKLSsJc3RydWN0IHV0bXB4IHV0YnVmLCAqdXQ7Ci0gCXRpbWVfdCBvbGRlc3RfbG9naW4gPSAwOwotIAotLQlzZXR1dGVudCgpOwotKwlzZXR1dHhlbnQoKTsKLSAJd2hpbGUoCi0gI2lmZGVmIEhBVkVfR0VUVVRFTlRfUgotLQkgICAgICAhZ2V0dXRlbnRfcigmdXRidWYsICZ1dCkKLSsJICAgICAgIWdldHV0eGVudF9yKCZ1dGJ1ZiwgJnV0KQotICNlbHNlCi0tCSAgICAgICh1dCA9IGdldHV0ZW50KCkpICE9IE5VTEwKLSsJICAgICAgKHV0ID0gZ2V0dXR4ZW50KCkpICE9IE5VTEwKLSAjZW5kaWYKLSAJICAgICAgKSB7Ci0gCQlpZiAodXQtPnV0X3R5cGUgIT0gVVNFUl9QUk9DRVNTKSB7Ci1AQCAtMjE4LDcgKzIxOCw3IEBAIGNoZWNrX2xvZ2luX3RpbWUoY29uc3QgY2hhciAqcnVzZXIsIHRpbWUKLSAJCQlvbGRlc3RfbG9naW4gPSB1dC0+dXRfdHYudHZfc2VjOwotIAkJfQotIAl9Ci0tCWVuZHV0ZW50KCk7Ci0rCWVuZHV0eGVudCgpOwotIAlpZihvbGRlc3RfbG9naW4gPT0gMCB8fCB0aW1lc3RhbXAgPCBvbGRlc3RfbG9naW4pIHsKLSAJCXJldHVybiBQQU1fQVVUSF9FUlI7Ci0gCX0KLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYwotKysrIExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYwotQEAgLTEzLDcgKzEzLDYgQEAKLSAjaW5jbHVkZSA8cHdkLmg+Ci0gI2luY2x1ZGUgPHNoYWRvdy5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLS0jaW5jbHVkZSA8dXRtcC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgppbmRleCBkZjU2ZDI3Li44Zjc3NTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCkBAIC0yOCw4ICsyOCw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZGE0YjIyODliN2NmYjE5NTgzZDU0ZTllYWFlZjFjM2EiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQxYWVkMWVmNTIyZjY2ZWQ2NzI3MTllY2YyMjA1ZWM1MTNmZDAwNzVlZDgwY2RhOGUwODZhNWIxYTAxZDFiYiIKIAotU1JDX1VSSV9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGZpbGU6Ly91c2UtdXRtcHgucGF0Y2giCi0KIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWRlZmluaW5nLW1pc3NpbmctZnVuY2l0b25hbGl0eS5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3BhdGhzX2hlYWRlci5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI4YjE0ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDZlODJhZjU0NzE0MzkyZGNkZjc0YThhZWRhYWU3ZGU3ZDBhZjEwODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMTY6Mzc6MjQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gTW92ZSBweXRob24gaGVscGVyIHNjcmlwdHMgKHVzZWQgb25seSBpbiB0ZXN0cykgdG8gUHl0aG9uIDMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL2dwdC1oZWFkZXItbW92ZSB8IDIgKy0KKyB0ZXN0cy9tc2Rvcy1vdmVybGFwICAgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2dwdC1oZWFkZXItbW92ZSBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQoraW5kZXggMDVjZGM2NS4uM2NiY2I3ZSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQorKysrIGIvdGVzdHMvZ3B0LWhlYWRlci1tb3ZlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIG9wZW4gaW1nIGZpbGUsIHN1YnRyYWN0IDMzIGZyb20gYWx0bGJhIGFkZHJlc3MsIGFuZCBtb3ZlIHRoZSBsYXN0IDMzIHNlY3RvcnMKKyAjIGJhY2sgYnkgMzMgc2VjdG9ycworZGlmZiAtLWdpdCBhL3Rlc3RzL21zZG9zLW92ZXJsYXAgYi90ZXN0cy9tc2Rvcy1vdmVybGFwCitpbmRleCA1YmRkZmIwLi4zZGU3ZDJlIDEwMDc1NQorLS0tIGEvdGVzdHMvbXNkb3Mtb3ZlcmxhcAorKysrIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgICAgIFdyaXRlIGFuIG92ZXJsYXBwaW5nIHBhcnRpdGlvbiB0byBhIG1zZG9zIGRpc2sKKyAKK0BAIC0xNCw3ICsxNCw3IEBAIEJBRF9FTlRSWSA9ICgweDcyLCAweGY1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorIE9GRlNFVCA9IDB4MWI4CisgCisgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CistICAgIHByaW50ICIlczogPGltYWdlIG9yIGRldmljZT4iCisrICAgIHByaW50KCIlczogPGltYWdlIG9yIGRldmljZT4iKQorICAgICBzeXMuZXhpdCgxKQorIAorIGRhdGEgPSAiIi5qb2luKGNocihjKSBmb3IgYyBpbiBCQURfRU5UUlkpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUyMmUxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaApAQCAtMCwwICsxLDIyNCBAQAorRnJvbSBkNmUxNWE2MGU4NGMxNTExNTIzYWE4MTI3MmI3ZGI3YTZlYzQ0MWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNiBTZXAgMjAxNyAwODowNDo1OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQ6IFVzZSByZWFkIG9ubHkgd2hlbiBwcm9iaW5nIGRldmljZXMgb24gbGludXgKKyAoIzEyNDUxNDQpCisKK1doZW4gYSBkZXZpY2UgaXMgb3BlbmVkIGZvciBSVyBjbG9zaW5nIGl0IGNhbiB0cmlnZ2VyIG90aGVyIGFjdGlvbnMsCitsaWtlIHVkZXYgc2Nhbm5pbmcgaXQgZm9yIHBhcnRpdGlvbiBjaGFuZ2VzLiBVc2UgcmVhZCBvbmx5IGZvciB0aGUKK2luaXRfKiBtZXRob2RzIGFuZCBSVyBmb3IgYWN0dWFsIGNoYW5nZXMgdG8gdGhlIGRldmljZS4KKworVGhpcyBhZGRzIF9kZXZpY2Vfb3BlbiB3aGljaCB0YWtlcyBtb2RlIGZsYWdzIGFzIGFuIGFyZ3VtZW50IGFuZCB0dXJucworbGludXhfb3BlbiBpbnRvIGEgd3JhcHBlciBmb3IgaXQgd2l0aCBSV19NT0RFLgorCitfZGV2aWNlX29wZW5fcm8gaXMgYWRkZWQgdG8gb3BlbiB0aGUgZGV2aWNlIHdpdGggUkRfTU9ERSBhbmQgaW5jcmVtZW50Cit0aGUgb3Blbl9jb3VudGVyLiBUaGlzIGlzIHVzZWQgaW4gdGhlIGluaXRfKiBmdW5jdGlvbnMuCisKK19kZXZpY2VfY2xvc2UgaXMgYSB3cmFwcGVyIGFyb3VuZCBsaW51eF9jbG9zZSB0aGF0IGRlY3JlbWVudHMgdGhlCitvcGVuX2NvdW50ZXIgYW5kIGlzIHVzZWQgaW4gdGhlIGluaXRfKiBmdW5jdGlvbnMuCisKK0FsbCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBzZWxmLWNvbnRhaW5lZCB3aXRoIG5vIGV4dGVybmFsIEFQSSBjaGFuZ2VzLgorVGhlIG9ubHkgdmlzaWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IgaXMgdGhhdCB3aGVuIGEgbmV3IFBlZERldmljZSBpcworY3JlYXRlZCB0aGUgZGV2aWNlIGlzIG9wZW5lZCBpbiBST19NT0RFIGluc3RlYWQgb2YgUldfTU9ERS4KKworUmVzb2x2ZXM6IHJoYnojMTI0NTE0NAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0F1dGhvcjogQnJpYW4gQy4gTGFuZSA8YmNsQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYworaW5kZXggZjYxMjYxNy4uMGEwNmE1NCAxMDA2NDQKKy0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKKysrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKK0BAIC0yOTQsNyArMjk0LDkgQEAgc3RydWN0IGJsa2Rldl9pb2N0bF9wYXJhbSB7Cisgc3RhdGljIGNoYXIqIF9kZXZpY2VfZ2V0X3BhcnRfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYsIGludCBudW0pOworIHN0YXRpYyBpbnQgX3BhcnRpdGlvbl9pc19tb3VudGVkX2J5X3BhdGggKGNvbnN0IGNoYXIqIHBhdGgpOworIHN0YXRpYyB1bnNpZ25lZCBpbnQgX2RldmljZV9nZXRfcGFydGl0aW9uX3JhbmdlKFBlZERldmljZSBjb25zdCogZGV2KTsKKy0KKytzdGF0aWMgaW50IF9kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncyk7Cisrc3RhdGljIGludCBfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KTsKKytzdGF0aWMgaW50IF9kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KTsKKyAKKyBzdGF0aWMgaW50CisgX3JlYWRfZmQgKGludCBmZCwgY2hhciAqKmJ1ZikKK0BAIC05MTMsNyArOTE1LDcgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQorICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKy0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQorKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCisgICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBIRElPX0dFVF9JREVOVElUWSwgJmhkaSkpIHsKK0BAIC05ODIsMTEgKzk4NCwxMSBAQCBpbml0X2lkZSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OworIAorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgICAgICByZXR1cm4gMTsKKyAKKyBlcnJvcl9jbG9zZV9kZXY6CistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyBlcnJvcjoKKyAgICAgICAgIHJldHVybiAwOworIH0KK0BAIC0xMTE5LDcgKzExMjEsNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQorICAgICAgICAgY2hhciogdmVuZG9yOworICAgICAgICAgY2hhciogcHJvZHVjdDsKKyAKKy0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQorKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCisgICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBTQ1NJX0lPQ1RMX0dFVF9JRExVTiwgJmlkbHVuKSA8IDApIHsKK0BAIC0xMTMzLDcgKzExMzUsNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQorICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OworICAgICAgICAgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7CistICAgICAgICAgICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICAgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgfQorIAorQEAgLTExNTUsMTEgKzExNTcsMTEgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7CisgCistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgICAgIHJldHVybiAxOworIAorIGVycm9yX2Nsb3NlX2RldjoKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIGVycm9yOgorICAgICAgICAgcmV0dXJuIDA7CisgfQorQEAgLTExNzEsNyArMTE3Myw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCisgCisgICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCisrICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKyAgICAgICAgIGRldi0+c2VjdG9yX3NpemUgPSBQRURfU0VDVE9SX1NJWkVfREVGQVVMVDsKK0BAIC0xMTk4LDcgKzEyMDAsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIAorICAgICAgICAgZGV2LT5iaW9zX2dlb20uY3lsaW5kZXJzID0gZGV2LT5sZW5ndGggLyA0IC8gMzI7CisgICAgICAgICBkZXYtPmJpb3NfZ2VvbS5oZWFkcyA9IDQ7CitAQCAtMTIwOSw3ICsxMjExLDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIHJldHVybiAxOworIAorIGVycm9yX2Nsb3NlX2RldjoKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIGVycm9yOgorICAgICAgICAgcmV0dXJuIDA7CisgfQorQEAgLTEyMjUsNyArMTIyNyw3IEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCisgICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCisrICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKyAgICAgICAgIExpbnV4U3BlY2lmaWMqIGFyY2hfc3BlY2lmaWMgPSBMSU5VWF9TUEVDSUZJQyAoZGV2KTsKK0BAIC0xMjY1LDExICsxMjY3LDExIEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCisgCisgICAgICAgICBkZXYtPm1vZGVsID0gc3RyZHVwIChtb2RlbF9uYW1lKTsKKyAKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworICAgICAgICAgcmV0dXJuIDE7CisgCisgZXJyb3JfY2xvc2VfZGV2OgorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgZXJyb3I6CisgICAgICAgICByZXR1cm4gMDsKKyB9CitAQCAtMTI4NCw3ICsxMjg2LDcgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKKyAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCistICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKKysgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorICAgICAgICAgcGVkX2V4Y2VwdGlvbl9mZXRjaF9hbGwgKCk7CitAQCAtMTMzMiwxMSArMTMzNCwxMSBAQCBpbml0X2dlbmVyaWMgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQorIAorICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7CisgCistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgICAgIHJldHVybiAxOworIAorIGVycm9yX2Nsb3NlX2RldjoKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIGVycm9yOgorICAgICAgICAgcmV0dXJuIDA7CisgfQorQEAgLTE2MjMsMTIgKzE2MjUsMjcgQEAgcmV0cnk6CisgfQorIAorIHN0YXRpYyBpbnQKKytfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KQorK3sKKysgICAgaW50IHJjID0gX2RldmljZV9vcGVuIChkZXYsIFJEX01PREUpOworKyAgICBpZiAocmMpCisrICAgICAgICBkZXYtPm9wZW5fY291bnQrKzsKKysgICAgcmV0dXJuIHJjOworK30KKysKKytzdGF0aWMgaW50CisgbGludXhfb3BlbiAoUGVkRGV2aWNlKiBkZXYpCisgeworKyAgICByZXR1cm4gX2RldmljZV9vcGVuIChkZXYsIFJXX01PREUpOworK30KKysKKytzdGF0aWMgaW50CisrX2RldmljZV9vcGVuIChQZWREZXZpY2UqIGRldiwgaW50IGZsYWdzKQorK3sKKyAgICAgICAgIExpbnV4U3BlY2lmaWMqICBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7CisgCisgcmV0cnk6CistICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgUldfTU9ERSk7CisrICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgZmxhZ3MpOworIAorICAgICAgICAgaWYgKGFyY2hfc3BlY2lmaWMtPmZkID09IC0xKSB7CisgICAgICAgICAgICAgICAgIGNoYXIqICAgcndfZXJyb3JfbXNnID0gc3RyZXJyb3IgKGVycm5vKTsKK0BAIC0xNjk3LDYgKzE3MTQsMTUgQEAgbGludXhfcmVmcmVzaF9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICByZXR1cm4gMTsKKyB9CisgCisrc3RhdGljIGludAorK19kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KQorK3sKKysgICAgaW50IHJjID0gbGludXhfY2xvc2UgKGRldik7CisrICAgIGlmIChkZXYtPm9wZW5fY291bnQgPiAwKQorKyAgICAgICAgZGV2LT5vcGVuX2NvdW50LS07CisrICAgIHJldHVybiByYzsKKyt9CisrCisgI2lmIFNJWkVPRl9PRkZfVCA8IDgKKyAKKyAjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDIwKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKaW5kZXggOWNlMmRmZS4uYWIzMDEwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCkBAIC0xNCwxNiArMTQsMTcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItbGlicGFydGVkX2ZzX3Jlc2l6ZS1saW5rLWFnYWluc3QtbGlidXVpZC1leHBsaWNpdGx5LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggXAogCSAgIGZpbGU6Ly9wYXJ0ZWQtMy4yLXN5c21hY3Jvcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJwYXJ0ZWQtVXNlLXJlYWQtb25seS13aGVuLXByb2JpbmctZGV2aWNlcy1vbi1saW51LnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjAyNDdiNmE3YjMxNGY4ZWRlYjYxODE1OWZhOTVmOWNiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1OGI1ODljMjIyOTdjYWNkZjQzN2YzYmFmZjZmMDRiMzMzMDg3NTIxYWIyNzRmN2FiNjc3Y2I4YzZiYjc4ZTQiCiAKIEVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGV2aWNlLW1hcHBlciIKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbGljb252ICIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdGV4aW5mbyBwdGVzdAogCkBAIC00Niw0ICs0Nyw0IEBACiAJc2VkIC1lICdzfCAuLi9wYXJ0ZWR8fCcgLWkgJHQvdGVzdHMvKi5zaAogfQogCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24iCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzZmODVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBlNjdiYjNkZWJlNTgyZjBlNzc3NzBiNzE0YmQwMTJiYjEwODJmYzQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgQXByIDIwMTcgMTE6MzI6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgY29tbWVudCBmb3IgZmFsbHRocm91Z2gKKworRml4ZXMgd2FybmluZ3Mgd2l0aCBnY2M3IGUuZy4KKworLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6IEluIGZ1bmN0aW9uICd0YXJfb3B0aW9ucyc6CisuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzo3MjU6NzogZXJyb3I6IHRoaXMgc3RhdGVtZW50IG1heSBmYWxsIHRocm91Z2ggWy1XZXJyb3I9aW1wbGljaXQtZmFsbHRocm91Z2g9XQorICAgIGlmIChvcHRfYWRkICgid3JpdGVfb3B0PW5vZGlyIikgPCAwKQorICAgICAgIF4KKy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOjczMDoyOiBub3RlOiBoZXJlCisgIGNhc2UgJ08nOgorICBefn5+CitjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9vcHRpb25zLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9vcHRpb25zLmMgYi9zcmMvb3B0aW9ucy5jCitpbmRleCBjNjYzYjRlLi5iODA4MTlhIDEwMDY0NAorLS0tIGEvc3JjL29wdGlvbnMuYworKysrIGIvc3JjL29wdGlvbnMuYworQEAgLTcyNCw2ICs3MjQsNyBAQCB0YXJfb3B0aW9ucyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAljYXNlICdvJzoKKyAJICBpZiAob3B0X2FkZCAoIndyaXRlX29wdD1ub2RpciIpIDwgMCkKKyAJICAgIHRhcl91c2FnZSAoKTsKKysJICAvKiBmYWxsdGhydSAqLworIAljYXNlICdPJzoKKyAJICBPZmxhZyA9IDE7CisgCSAgYnJlYWs7CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgppbmRleCA5YjRlMTdiLi42ZGY5YTgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKQEAgLTE1LDEwICsxNSwxMSBAQAogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgogCiBTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmJ6Mi9mYmQ5MDIzYjU5MGI0NWFjM2FkZTk1ODcwNzAyYTBkNi8ke0JQfS50YXIuYnoyIFwKLQlmaWxlOi8vZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIFwKLQlmaWxlOi8vcGF4LTMuNF9maXhfZm9yX3gzMi5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGF4LTMuNF9maXhfZm9yX3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS11c2Utc3RydG9sbC1pbnN0ZWFkLW9mLXN0cnRvcS5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgppbmRleCBjOGZjZGU0Li40Mjc2MTNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlBlcmwgbW9kdWxlcyB1c2VmdWwgZm9yIG1hbmlwdWxhdGluZyBkYXRlIGFuZCB0aW1lIGluZm9ybWF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9UaW1lRGF0ZSIKIFNFQ1RJT04gPSAibGlicyIKICMgWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4KIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5ZTcxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3Igc3VwcG9ydGluZyBzaW1wbGUgZ2VuZXJpYyBuYW1lc3BhY2VzIgotREVTQ1JJUFRJT04gPSAiWE1MOjpOYW1lc3BhY2VTdXBwb3J0IG9mZmVycyBhIHNpbXBsZSB3YXkgdG8gcHJvY2VzcyBuYW1lc3BhY2UtYmFzZWQgWE1MIG5hbWVzLiBcCi0gICAgICAgICAgICAgICAgSXQgYWxzbyBoZWxwcyBtYWludGFpbiBhIHByZWZpeC10by1uYW1lc3BhY2UgVVJJIG1hcCwgYW5kIHByb3ZpZGVzIGEgbnVtYmVyIG9mIFwKLSAgICAgICAgICAgICAgICBiYXNpYyBjaGVja3MuICIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLVBSID0gInIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MjI7ZW5kbGluZT0yMjttZDU9M2IyYjU2NGRhZThiOWFmOWU4ODk2ZTg1YzA3ZGNiZTUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjIyY2NhNzYxNjFjZDk1NmQ3MjQyODZkMzZiNjA3ZGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmQ4MTUxZjBhM2YxMDIzMTNkNzZiNjRiZmQxYzJkOWVkNDZiZmU2M2ExNmYwMzhlN2Q4NjBmZGEyODdiNzRlYSIKLQotCi1TID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EPSJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OThhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHN1cHBvcnRpbmcgc2ltcGxlIGdlbmVyaWMgbmFtZXNwYWNlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly92ZWlsbGFyZC5jb20vWE1MLyIKK0RFU0NSSVBUSU9OID0gIlhNTDo6TmFtZXNwYWNlU3VwcG9ydCBvZmZlcnMgYSBzaW1wbGUgd2F5IHRvIHByb2Nlc3MgbmFtZXNwYWNlLWJhc2VkIFhNTCBuYW1lcy4gXAorICAgICAgICAgICAgICAgIEl0IGFsc28gaGVscHMgbWFpbnRhaW4gYSBwcmVmaXgtdG8tbmFtZXNwYWNlIFVSSSBtYXAsIGFuZCBwcm92aWRlcyBhIG51bWJlciBvZiBcCisgICAgICAgICAgICAgICAgYmFzaWMgY2hlY2tzLiAiCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitQUiA9ICJyMyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTIyO2VuZGxpbmU9MjI7bWQ1PTljYTFhNGE5NDE0OTZlN2ZlZWRhYzcyYzRmYjhiMTM3IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1AvUEUvUEVSSUdSSU4vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImE4OTE2YzZkMDk1YmNmMDczZTExMDhhZjAyZTc4Yzk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3ZTk5NTg1OWY4ZGQwNDEzYWEzZjIyZDM1MGM0YTYyZGE2NTJlODU0MjY3YWEwNTg2YWU1NDRhZTJiYWU1ZWYiCisKKworUyA9ICIke1dPUktESVJ9L1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORD0ibmF0aXZlIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGEzMzcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNlIGNsYXNzIFNBWCBEcml2ZXJzIGFuZCBGaWx0ZXJzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaGFzIGEgdmVyeSBzaW1wbGUgdGFzayAtIHRvIGJlIGEgYmFzZSBjbGFzcyBmb3IgXAotUGVybFNBWCBkcml2ZXJzIGFuZCBmaWx0ZXJzLiBJdCdzIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIHBhc3MgXAotdGhlIGlucHV0IGRpcmVjdGx5IHRvIHRoZSBvdXRwdXQgdW5jaGFuZ2VkLiBJdCBjYW4gYmUgdXNlZnVsIHRvIFwKLXVzZSB0aGlzIG1vZHVsZSBhcyBhIGJhc2UgY2xhc3Mgc28geW91IGRvbid0IGhhdmUgdG8sIGZvciBleGFtcGxlLCBcCi1pbXBsZW1lbnQgdGhlIGNoYXJhY3RlcnMoKSBjYWxsYmFjay4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1SREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kaXN0LmluaTtlbmRsaW5lPTU7bWQ1PThmOWM5YTU1MzQwYWVmYWVlNmU5NzA0Yzg4NDY2NDQ2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0cvR1IvR1JBTlRNL1hNTC1TQVgtQmFzZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzOGM4YzMyNDdkZmQwODA3MTI1OTYxMThkNzBkYmUzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjYyNzAzMThiMTVmODhiODQyN2U1ODUxOThhYmJjMTliYzJlNmNjYjM2ZGM0YzBhNGYyZDk4MDczMzAyMTllIgotCi1TID0gIiR7V09SS0RJUn0vWE1MLVNBWC1CYXNlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkM2E1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkJhc2UgY2xhc3MgU0FYIERyaXZlcnMgYW5kIEZpbHRlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLVNBWC1CYXNlLyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGhhcyBhIHZlcnkgc2ltcGxlIHRhc2sgLSB0byBiZSBhIGJhc2UgY2xhc3MgZm9yIFwKK1BlcmxTQVggZHJpdmVycyBhbmQgZmlsdGVycy4gSXQncyBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBwYXNzIFwKK3RoZSBpbnB1dCBkaXJlY3RseSB0byB0aGUgb3V0cHV0IHVuY2hhbmdlZC4gSXQgY2FuIGJlIHVzZWZ1bCB0byBcCit1c2UgdGhpcyBtb2R1bGUgYXMgYSBiYXNlIGNsYXNzIHNvIHlvdSBkb24ndCBoYXZlIHRvLCBmb3IgZXhhbXBsZSwgXAoraW1wbGVtZW50IHRoZSBjaGFyYWN0ZXJzKCkgY2FsbGJhY2suIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGlzdC5pbmk7ZW5kbGluZT01O21kNT04ZjljOWE1NTM0MGFlZmFlZTZlOTcwNGM4ODQ2NjQ0NiIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dSL0dSQU5UTS9YTUwtU0FYLUJhc2UtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWMzNDdhMTQwNjVkZDdhZWM3ZDlmYjE4MWIyZDc5NDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjZjYjM1NWJhNGVmNDdjMTBjYTczOGJkMzU5OTk3MjM2NDQzODZhYzg1M2FiYmViNTEzMjg0MWY1ZThhMmFkMCIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCmluZGV4IDQ1ZDM5NjYuLmFkMzFiOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciB1c2luZyBhbmQgYnVpbGRpbmcgUGVybCBTQVgyIFhNTCBwcm9jZXNzb3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1hNTC1TQVgvIgogREVTQ1JJUFRJT04gPSAiWE1MOjpTQVggY29uc2lzdHMgb2Ygc2V2ZXJhbCBmcmFtZXdvcmsgY2xhc3NlcyBmb3IgdXNpbmcgYW5kIFwKIGJ1aWxkaW5nIFBlcmwgU0FYMiBYTUwgcGFyc2VycywgZmlsdGVycywgYW5kIGRyaXZlcnMuICBJdCBpcyBkZXNpZ25lZCBcIAogYXJvdW5kIHRoZSBuZWVkIHRvIGJlIGFibGUgdG8gInBsdWcgaW4iIGRpZmZlcmVudCBTQVggcGFyc2VycyB0byBhbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwppbmRleCAyMmIyZTg1Li42NmE3ODRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgcHJvY2Vzc2VzIG9uIHlvdXIgc3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3BzbWlzYy5zZi5uZXQvIgogREVTQ1JJUFRJT04gPSAiVGhlIHBzbWlzYyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyBmb3IgbWFuYWdpbmcgcHJvY2Vzc2VzIG9uIHlvdXIgXAogc3lzdGVtOiBwc3RyZWUsIGtpbGxhbGwgYW5kIGZ1c2VyLiAgVGhlIHBzdHJlZSBjb21tYW5kIGRpc3BsYXlzIGEgdHJlZSBcCiBzdHJ1Y3R1cmUgb2YgYWxsIG9mIHRoZSBydW5uaW5nIHByb2Nlc3NlcyBvbiB5b3VyIHN5c3RlbS4gIFRoZSBraWxsYWxsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL211c2wtc3VucnBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvbXVzbC1zdW5ycGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYmM2MzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvbXVzbC1zdW5ycGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1UaGUgbXVzbCBpbXBsZW1lbnRhdGlvbiBvZiBnZXRhZGRyaW5mbyBhbmQgZ2V0c2VydmJ5bmFtZSBkb2VzIG5vdAotYWxpYXNlcy4gQXMgYSB3b3JrYXJvdW5kIHdlIHVzZSAic3VucHJjIiBpbnN0ZWFkIG9mICJwb3J0bWFwcGVyIgotCi1wb3J0ZWQgZnJvbSBhbHBpbmUgbGludXgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogcnBjYmluZC0wLjIuMi9zcmMvcnBjYmluZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnBjYmluZC0wLjIuMi5vcmlnL3NyYy9ycGNiaW5kLmMKLSsrKyBycGNiaW5kLTAuMi4yL3NyYy9ycGNiaW5kLmMKLUBAIC00OTEsNyArNDkxLDcgQEAgaW5pdF90cmFuc3BvcnQoc3RydWN0IG5ldGNvbmZpZyAqbmNvbmYpCi0gCQkJaWYgKChhaWNvZGUgPSBnZXRhZGRyaW5mbyhob3N0c1tuaG9zdHNiYWtdLAotIAkJCSAgICBzZXJ2bmFtZSwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgewotIAkJCSAgaWYgKChhaWNvZGUgPSBnZXRhZGRyaW5mbyhob3N0c1tuaG9zdHNiYWtdLAotLQkJCQkJCSAgICAicG9ydG1hcHBlciIsICZoaW50cywgJnJlcykpICE9IDApIHsKLSsJCQkJCQkgICAgInN1bnJwYyIsICZoaW50cywgJnJlcykpICE9IDApIHsKLSAJCQkJc3lzbG9nKExPR19FUlIsCi0gCQkJCSAgICAiY2Fubm90IGdldCBsb2NhbCBhZGRyZXNzIGZvciAlczogJXMiLAotIAkJCQkgICAgbmNvbmYtPm5jX25ldGlkLCBnYWlfc3RyZXJyb3IoYWljb2RlKSk7Ci1AQCAtNTY0LDcgKzU2NCw3IEBAIGluaXRfdHJhbnNwb3J0KHN0cnVjdCBuZXRjb25maWcgKm5jb25mKQotIAkJaWYgKChzdHJjbXAobmNvbmYtPm5jX25ldGlkLCAibG9jYWwiKSAhPSAwKSAmJgotIAkJICAgIChzdHJjbXAobmNvbmYtPm5jX25ldGlkLCAidW5peCIpICE9IDApKSB7Ci0gCQkJaWYgKChhaWNvZGUgPSBnZXRhZGRyaW5mbyhOVUxMLCBzZXJ2bmFtZSwgJmhpbnRzLCAmcmVzKSkhPSAwKSB7Ci0tCQkJICBpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKE5VTEwsICJwb3J0bWFwcGVyIiwgJmhpbnRzLCAmcmVzKSkhPSAwKSB7Ci0rCQkJICBpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKE5VTEwsICJzdW5ycGMiLCAmaGludHMsICZyZXMpKSE9IDApIHsKLSAJCQkgIHByaW50ZigiY2Fubm90IGdldCBsb2NhbCBhZGRyZXNzIGZvciAlczogJXMiLCAgbmNvbmYtPm5jX25ldGlkLCBnYWlfc3RyZXJyb3IoYWljb2RlKSk7Ci0gCQkJICBzeXNsb2coTE9HX0VSUiwKLSAJCQkJICAgICJjYW5ub3QgZ2V0IGxvY2FsIGFkZHJlc3MgZm9yICVzOiAlcyIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRmYzk3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotbXVzbCBkb2VzIG5vdCBwcm92aWRlIHRoaXMgaGVhZGVyIGFuZCBoZXJlIGlzIHJlYXNvbmluZwotaHR0cDovL3dpa2kubXVzbC1saWJjLm9yZy93aWtpL0ZBUSNROl93aHlfaXNfc3lzLjJGcXVldWUuaF9ub3RfaW5jbHVkZWRfLjNGCi0KLVNvIGluY2x1ZGUgaXQgb25seSB3aGVuIF9fR0xJQkNfXyBpcyBkZWZpbmVkIHdoaWNoIGlzIHRydWUgZm9yIHVjbGliYyBhbmQgZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogcnBjYmluZC0wLjIuMi9zcmMvdXRpbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnBjYmluZC0wLjIuMi5vcmlnL3NyYy91dGlsLmMKLSsrKyBycGNiaW5kLTAuMi4yL3NyYy91dGlsLmMKLUBAIC00MSw3ICs0MSw5IEBACi0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2lmZGVmIF9fR0xJQkNfXwotICNpbmNsdWRlIDxzeXMvcXVldWUuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSAjaW5jbHVkZSA8aWZhZGRycy5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgppbmRleCAxYTEyMDU1Li42MGU0NmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgpAQCAtMTIsMTkgKzEyLDExIEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3JwY2JpbmQvcnBjYmluZC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL2luaXQuZCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoIFwKLSAgICAgICAgICAgJHtVQ0xJQkNQQVRDSEVTfSBcCi0gICAgICAgICAgICR7TVVTTFBBVENIRVN9IFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNvY2tldCBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ycGNiaW5kLXBhaXItYWxsLXN2Y19nZXRhcmdzLWNhbGxzLXdpdGgtc3ZjX2ZyZWVhcmdzLnBhdGNoIFwKICAgICAgICAgICAiCi1NVVNMUEFUQ0hFU19saWJjLW11c2wgPSAiZmlsZTovL211c2wtc3VucnBjLnBhdGNoIgotCi1VQ0xJQkNQQVRDSEVTID89ICIiCi1NVVNMUEFUQ0hFUyA/PSAiIgotCiBTUkNfVVJJW21kNXN1bV0gPSAiY2YxMGNkNDFlZDgyMjhmYzU0YzMxNjE5MWMxZjA3ZmUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc0YTlhNTMwZGM3YzExZTBkOTA1YWE1OWJjYjA4NDdjMDA5MzEzZjAyZTk4ZDNkNzk4YWE5NTY4ZjQxNGM2NiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkYjEyYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gNGIyNThjNWE5MDc4ZjhkZjYwNjg0YWI3NTM2Y2UzYThmZjIwN2UwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgT2N0IDIwMTcgMTA6MDM6NTcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY29uZmlndXJlIGZhaWxlZCB3aGlsZSBidWlsZCBkaXIgY29udGFpbnMgInllcyIKKworV2hpbGUgdGhlIG5hbWUgb2YgYnVpbGQgZGlyIGNvbnRhaW5zICJ5ZXMiLCB0aGUgQUNfRUdSRVBfQ1BQCit0ZXN0IGFsd2F5cyByZXR1cm4gdHJ1ZS4KKworV2UgcmFyZWx5IHVzZSAieWVzOyIgdG8gbmFtZSBidWlsZCBkaXIsIHNvIHMveWVzL3llczsvZworY291bGQgZml4IHRoZSBpc3N1ZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmlhbiBLYW5nIDxqaWFuLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxMjk5NmNkLi40NzY1YWY2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMjgsNyArMTI4LDcgQEAgZmkKKyAKKyAKKyBBQ19DSEVDS0lORyhmb3IgVWx0cml4KQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZiBkZWZpbmVkKHVsdHJpeCkgfHwgZGVmaW5lZChfX3VsdHJpeCkKKyAgICB5ZXM7CisgI2VuZGlmCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGRubCBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1IChLYXZlaCBSLiBHaGF6aSk6CisgZG5sIEJCTiBidXR0ZXJmbHkgaXMgbm90IFBPU0lYLCBidXQgYSBNQUNIIEJTRCBzeXN0ZW0uCisgZG5sIERvIG5vdCBkZWZpbmUgUE9TSVggYW5kIFRFUk1JTy4KKyBBQ19DSEVDS0lORyhmb3IgYnV0dGVyZmx5KQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZiBkZWZpbmVkKGJ1dHRlcmZseSkKKyAgIHllczsKKyAjZW5kaWYKK0BAIC0xNTYsNyArMTU2LDcgQEAgaWYgdGVzdCAtbiAiJFVMVFJJWCI7IHRoZW4KKyAgIHRlc3QgLXogIiRHQ0MiICYmIENDPSIkQ0MgLVlCU0QiCisgZmkKKyBBQ19DSEVDS0lORyhmb3IgUE9TSVguMSkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIG1haW4gKCkgeworQEAgLTE3MywxNCArMTczLDE0IEBAIEFDX1RSWV9DT01QSUxFKAorICNpbmNsdWRlIDxmY250bC5oPl0sIFtpbnQgeCA9IFNJR0NITEQgfCBGTkRFTEFZO10sICwgQUNfREVGSU5FKFNZU1YpKQorIAorIEFDX0NIRUNLSU5HKGZvciBzZXF1ZW50L3B0eCkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWZkZWYgX1NFUVVFTlRfCisgICB5ZXM7CisgI2VuZGlmCisgXSwgTElCUz0iJExJQlMgLWxzb2NrZXQgLWxpbmV0IjtzZXFwdHg9MSkKKyAKKyBBQ19DSEVDS0lORyhTVlI0KQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgW21haW4gKCkgeworICNpZiBkZWZpbmVkKFNWUjQpIHx8IGRlZmluZWQoX19TVlI0KQorICAgeWVzOworQEAgLTIwMCw5ICsyMDAsOSBAQCBmaQorIEFDX0NIRUNLX0hFQURFUlMoW3N0cm9wdHMuaCBzdHJpbmcuaCBzdHJpbmdzLmhdKQorIAorIEFDX0NIRUNLSU5HKGZvciBTb2xhcmlzIDIueCkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWYgZGVmaW5lZChTVlI0KSAmJiBkZWZpbmVkKHN1bikKKy0gIHllcworKyAgeWVzOworICNlbmRpZgorIF0sIExJQlM9IiRMSUJTIC1sc29ja2V0IC1sbnNsIC1sa3N0YXQiKQorIAorQEAgLTY5Nyw3ICs2OTcsNyBAQCBlbHNlCisgcGRpcj0nL2RldicKKyBmaQorIGRubCBTQ08gdXNlcyBwdHlwJWQKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWZkZWYgTV9VTklYCisgICAgeWVzOworICNlbmRpZgorQEAgLTg4MCw3ICs4ODAsNyBAQCBmaQorICkKKyAKKyBpZiB0ZXN0IC16ICIkbG9hZCIgOyB0aGVuCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmIGRlZmluZWQoTmVYVCkgfHwgZGVmaW5lZChhcG9sbG8pIHx8IGRlZmluZWQobGludXgpCisgICB5ZXM7CisgI2VuZGlmCitAQCAtMTExMiw3ICsxMTEyLDcgQEAgQUNfQ0hFQ0tJTkcoc3lzbG9nIGluIGxpYmJzZC5hKQorIEFDX1RSWV9MSU5LKCwgW2Nsb3NlbG9nKCk7XSwgQUNfTk9URSgtIGZvdW5kLiksIFtMSUJTPSIkb2xkbGlicyIKKyBBQ19OT1RFKC0gYmFkIG5ld3M6IHN5c2xvZyBtaXNzaW5nLikgQUNfREVGSU5FKE5PU1lTTE9HKV0pXSkKKyAKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWZkZWYgTV9VTklYCisgICAgeWVzOworICNlbmRpZgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGNhZjVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoaXMgZml4ZXMgdGhlIHBhcmFsbGVsIG1ha2UgaW5zdGFsbCBmYWlsdXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBzY3JlZW4tNC4wLjMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzY3JlZW4tNC4wLjMub3JpZy9NYWtlZmlsZS5pbgotKysrIHNjcmVlbi00LjAuMy9NYWtlZmlsZS5pbgotQEAgLTcwLDcgKzcwLDcgQEAgc2NyZWVuOiAkKE9GSUxFUykKLSAuYy5vOgotIAkkKENDKSAtYyAtSS4gLUkkKHNyY2RpcikgJChNX0NGTEFHUykgJChERUZTKSAkKE9QVElPTlMpICQoQ0ZMQUdTKSAkPAotIAotLWluc3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4KLStpbnN0YWxsX2JpbjogLnZlcnNpb24gc2NyZWVuIGluc3RhbGxkaXJzCi0gCS1pZiBbIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pIF0gJiYgWyAhIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZCBdOyBcCi0gCQl0aGVuIG12ICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZDsgZmkKLSAJJChJTlNUQUxMX1BST0dSQU0pIHNjcmVlbiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmMxYTVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCi1ERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCi10aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKLXByb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIFwKLSAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOGM1ZGEyZjQyZjhhMThmYTRkYWRhMjQxOWQxNTQ5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5N2RiMjExNGRkOTYzYjAxNmNkNGRlZDM0ODMxOTU1ZGNiZTMyNTFlNWVlZTQ1YWMyNjA2ZTY3ZTlmMDk3YjJkIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IFwKLSAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc2NyZWVuLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc2NyZWVuCi0JZmkKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlncmVwIC1xICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAke2JpbmRpcn0vc2NyZWVuID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KLQotcGtnX3Bvc3RybV8ke1BOfSAoKSB7Ci0JcHJpbnRmICIkKGdyZXAgLXYgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscylcbiIgPiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNkODNhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgorREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAordGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCitwcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgorCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCisKK0RFUEVORFMgPSAibmN1cnNlcyBcCisgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEzMmM4OTNhYWJmYWYyMDIwMDc0NzkwMjE1YzhjYWNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiYTlhZjY2Y2I2MjYxNTVkNmFiY2U0NzAzZjQ1Y2NlMGUzMGE1MTE0YTM2OGJkNjM4N2M5NjZjYmJiYjdjNjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgppbmRleCA1YWE3ZDhhLi5lMzFiZWMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCkBAIC00NCwzICs0NCw0IEBACiAJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQogfQogCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zZWQnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDNlMWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA5NTRlM2QyZTcxMTNlOWFjMDY2MzJhZWUzYzY5YjhkODE4Y2M4OTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+CitEYXRlOiBGcmksIDMxIE1hciAyMDE3IDE2OjI1OjA2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWZmZXIgb3ZlcmZsb3cgaWYgTlVMTCBsaW5lIGlzIHByZXNlbnQgaW4gZGIuCisKK0lmIHB0ci0+bGluZSA9PSBOVUxMIGZvciBhbiBlbnRyeSwgdGhlIGZpcnN0IGN5Y2xlIHdpbGwgZXhpdCwKK2J1dCB0aGUgc2Vjb25kIG9uZSB3aWxsIGhhcHBpbHkgd3JpdGUgcGFzdCBlbnRyaWVzIGJ1ZmZlci4KK1dlIGFjdHVhbGx5IGRvIG5vdCB3YW50IHRvIGV4aXQgdGhlIGZpcnN0IGN5Y2xlIHByZW1hdHVyZWx5CitvbiBwdHItPmxpbmUgPT0gTlVMTC4KK1NpZ25lZC1vZmYtYnk6IFRvbWFzIE1yYXogPHRtcmF6QGZlZG9yYXByb2plY3Qub3JnPgorCitDVkU6IENWRS0yMDE3LTEyNDI0CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvY29tbW9uaW8uYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2NvbW1vbmlvLmMgYi9saWIvY29tbW9uaW8uYworaW5kZXggYjEwZGEwNi4uMzFlZGJhYSAxMDA2NDQKKy0tLSBhL2xpYi9jb21tb25pby5jCisrKysgYi9saWIvY29tbW9uaW8uYworQEAgLTc1MSwxNiArNzUxLDE2IEBAIGNvbW1vbmlvX3NvcnQgKHN0cnVjdCBjb21tb25pb19kYiAqZGIsIGludCAoKmNtcCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkKKyAJZm9yIChwdHIgPSBkYi0+aGVhZDsKKyAJICAgICAgICAoTlVMTCAhPSBwdHIpCisgI2lmIEtFRVBfTklTX0FUX0VORAorLQkgICAgICYmIChOVUxMICE9IHB0ci0+bGluZSkKKy0JICAgICAmJiAoICAgKCcrJyAhPSBwdHItPmxpbmVbMF0pCistCSAgICAgICAgICYmICgnLScgIT0gcHRyLT5saW5lWzBdKSkKKysJICAgICAmJiAoKE5VTEwgPT0gcHRyLT5saW5lKQorKwkgICAgICAgICB8fCAoKCcrJyAhPSBwdHItPmxpbmVbMF0pCisrCSAgICAgICAgICAgICAmJiAoJy0nICE9IHB0ci0+bGluZVswXSkpKQorICNlbmRpZgorIAkgICAgIDsKKyAJICAgICBwdHIgPSBwdHItPm5leHQpIHsKKyAJCW4rKzsKKyAJfQorICNpZiBLRUVQX05JU19BVF9FTkQKKy0JaWYgKChOVUxMICE9IHB0cikgJiYgKE5VTEwgIT0gcHRyLT5saW5lKSkgeworKwlpZiAoTlVMTCAhPSBwdHIpIHsKKyAJCW5pcyA9IHB0cjsKKyAJfQorICNlbmRpZgorLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwppbmRleCA3MGZmNjhlLi5jYzE4OTY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZXJhZGQtY29weS1leHRlbmRlZC1hdHRyaWJ1dGVzLW9mLWhvbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQgXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKICAgICAgICAgICAgIgogCkBAIC01OSw3ICs2MCw2IEBACiBOU0NET1BUID0gIiIKIE5TQ0RPUFRfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1uc2NkIgogTlNDRE9QVF9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LW5zY2QiCi1OU0NET1BUX2xpYmMtdWNsaWJjID0gIiAtLXdpdGhvdXQtbnNjZCIKIE5TQ0RPUFRfbGliYy1nbGliYyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtc3Bhd24nLCAnLS13aXRoLW5zY2QnLCAnLS13aXRob3V0LW5zY2QnLCBkKX0iCiAgICAgICAgICAgCiBQQU1fUExVR0lOUyA9ICJsaWJwYW0tcnVudGltZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZjQ3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCittYWtlIC1DIHRlc3QgcnVudGVzdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVybWluZm9fZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNmQxNWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsMTQ4IEBACitEbyBub3QgdXNlIHRoZSBKRF9URVJNQ0FQIG1hY3JvIHNpbmNlIHdlIGNhbm5vdCBnZXQgdGhlIHRlcm1pbmZvIGZyb20KK25jdXJzZXMgcGtnLWNvbmZpZywgYnV0IGZpeCB0aGUgbWFjcm8gdG8gbm90IHJlZmVyZW5jZSBob3N0IGRpcmVjdG9yaWVzLgorQWxzbyBhZGQgc3JjL3Rlc3QvTWFrZWZpbGUuaW4gc28gdGhhdCB3ZSBjYW4gdXNlIC1sdGVybWNhcCBpZiB3ZSB3YW50IHRvLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKy0tLSBhL2F1dG9jb25mL2FjbG9jYWwubTQKKysrKyBiL2F1dG9jb25mL2FjbG9jYWwubTQKK0BAIC01MDYsMTQgKzUwNiwxMCBAQCB0aGVuCisgZWxzZQorICAgIE1JU0NfVEVSTUlORk9fRElSUz0iIgorIGZpCistSkRfVGVybWluZm9fRGlycz0iJE1JU0NfVEVSTUlORk9fRElSUyBcCistICAgICAgICAgICAgICAgICAgL3Vzci9saWIvdGVybWluZm8gXAorLSAgICAgICAgICAgICAgICAgIC91c3Ivc2hhcmUvdGVybWluZm8gXAorLSAgICAgICAgICAgICAgICAgIC91c3Ivc2hhcmUvbGliL3Rlcm1pbmZvIFwKKy0JCSAgL3Vzci9sb2NhbC9saWIvdGVybWluZm8iCisrCisgVEVSTUNBUD0tbHRlcm1jYXAKKyAKKy1mb3IgdGVybWluZm9fZGlyIGluICRKRF9UZXJtaW5mb19EaXJzCisrZm9yIHRlcm1pbmZvX2RpciBpbiAkTUlTQ19URVJNSU5GT19ESVJTCisgZG8KKyAgICBpZiB0ZXN0IC1kICR0ZXJtaW5mb19kaXIKKyAgICB0aGVuCistLS0gYS9hdXRvY29uZi9jb25maWd1cmUuYWMKKysrKyBiL2F1dG9jb25mL2NvbmZpZ3VyZS5hYworQEAgLTI0OSw3ICsyNDksMTQgQEAgQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyBKRF9DSEVDS19MT05HX0xPTkcKKyBKRF9MQVJHRV9GSUxFX1NVUFBPUlQKKyAKKy1KRF9URVJNQ0FQCisrZG5sIERvIG5vdCB1c2UgSkRfVEVSTUNBUCwgc2luY2Ugd2UgY2Fubm90IGdldCB0ZXJtaW5mbyBmcm9tIG5jdXJzZXMqLWNvbmZpZyBhbnltb3JlLgorK2RubCBTZXQgVEVSTUNBUD0tbHRlcm1jYXAgYW5kIEFDX0RFRklORShVU0VfVEVSTUNBUCwxLFtEZWZpbmUgdG8gdXNlIHRlcm1jYXBdKQorK2RubCB0byB1c2UgbGlidGVybWNhcC4KKytURVJNQ0FQPSIiCisrTUlTQ19URVJNSU5GT19ESVJTPSIiCisrQUNfU1VCU1QoVEVSTUNBUClkbmwKKytBQ19TVUJTVChNSVNDX1RFUk1JTkZPX0RJUlMpZG5sCisrCisgSkRfR0NDX1dBUk5JTkdTCisgCisgSkRfU0VUX09CSl9TUkNfRElSKHNyYykKK0BAIC0zNjQsNyArMzcxLDcgQEAgQUNfQ09ORklHX0hFQURFUihzcmMvc3lzY29uZi5oOnNyYy9jb25maQorIGRubCBBQ19DT05GSUdfU1VCRElSUyhkZW1vKQorIAorIEFDX09VVFBVVChNYWtlZmlsZTphdXRvY29uZi9NYWtlZmlsZS5pbiBcCistICBzcmMvTWFrZWZpbGUgc2xzaC9NYWtlZmlsZSBtb2R1bGVzL01ha2VmaWxlIGRlbW8vTWFrZWZpbGUgXAorKyAgc3JjL01ha2VmaWxlIHNyYy90ZXN0L01ha2VmaWxlIHNsc2gvTWFrZWZpbGUgbW9kdWxlcy9NYWtlZmlsZSBkZW1vL01ha2VmaWxlIFwKKyAgIHNsYW5nLnBjOmF1dG9jb25mL3NsYW5ncGMuaW4gXAorICkKKyAKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy90ZXN0L01ha2VmaWxlLmluCitAQCAtMCwwICsxLDkwIEBACisrIyAtKi0gbWFrZSAtKi0KKytURVNUX1NDUklQVFNfU0xDID0gYXJndiBzeW50YXggc2NpcmN1aXQgZXFzIHNzY2FuZiBsb29wcyBhcml0aCBhcnJheSBzdHJvcHMgXAorKyAgYnN0cmluZyBwYWNrIHN0ZGlvIGFzc29jIHNlbGZsb2FkIHN0cnVjdCBuc3BhY2UgcGF0aCBpZmV2YWwgYW55dHlwZSBhcnJtdWx0IFwKKysgIHRpbWUgdXRmOCBleGNlcHQgYnVncyBsaXN0IHJlZ2V4cCBtZXRob2QgZGVyZWYgbmFuaW5mIG92ZXJmbG93IHNvcnQgXAorKyAgbG9uZ2xvbmcgc2lnbmFsIGRvbGxhciByZXEgZG9jZnVuIGRlYnVnIHF1YWxpZiBjb21wYXJlIGJyZWFrIG11bHRsaW5lIFwKKysgIHN0YWNrIG1pc2MgcG9zaXhpbyBwb3NkaXIgcHJvYyBtYXRoCisrCisrVEVTVF9TQ1JJUFRTX05PX1NMQyA9IGF1dG9sb2FkIG5zcGFjZTIgcHJlcAorKworK1RFU1RfU0NSSVBUUyA9ICQoVEVTVF9TQ1JJUFRTX1NMQykgJChURVNUX1NDUklQVFNfTk9fU0xDKQorKworK1RFU1RfUEdNID0gc2x0ZXN0CisrTUVNQ0hFQ0sgPSB2YWxncmluZCAtLXRvb2w9bWVtY2hlY2sgLS1sZWFrLWNoZWNrPXllcyAtLWxlYWstcmVzb2x1dGlvbj1tZWQgLS1udW0tY2FsbGVycz0yMAorK1JVTl9URVNUX1BHTSA9IC4vJChURVNUX1BHTSkKKytTTEFOR0lOQyA9IC4uCisrU0xBTkdMSUIgPSAuLi8kKEFSQ0gpb2JqcworK09USEVSX0xJQlMgPSAtbG0gQFRFUk1DQVBACisrT1RIRVJfQ0ZMQUdTID0KKysKKytydW50ZXN0czogJChURVNUX1BHTSkgY2xlYW50bXAKKysJQHRlc3RzPSIiOyBcCisrCWZvciB0ZXN0IGluICQoVEVTVF9TQ1JJUFRTKTsgXAorKwlkbyBcCisrCSAgIHRlc3RzPSIkJHRlc3RzICQkdGVzdC5zbCI7IFwKKysJZG9uZTsgXAorKwlmb3IgdGVzdCBpbiAkKFRFU1RfU0NSSVBUU19TTEMpOyBcCisrCWRvIFwKKysJICAgdGVzdHM9IiQkdGVzdHMgJCR0ZXN0LnNsYyI7IFwKKysJZG9uZTsgXAorKwlNQUtFUlVOTklORz0xIC4vcnVudGVzdHMuc2ggJCR0ZXN0cworKyMJQHRvdWNoICQoVEVTVF9QR00pLmMKKysKKyt1cGRhdGU6ICQoVEVTVF9QR00pIGNsZWFudG1wCisrCUB0ZXN0cz0iIjsgXAorKwlmb3IgWCBpbiAkKFRFU1RfU0NSSVBUUyk7IFwKKysJZG8gXAorKwkgIGlmIFsgISAtZSBsYXN0cnVuLyQkWC5zbCBdIHx8IFsgJCRYLnNsIC1udCBsYXN0cnVuLyQkWC5zbCBdIDsgXAorKwkgIHRoZW4gXAorKwkgICB0ZXN0cz0iJCR0ZXN0cyAkJFguc2wiOyBcCisrCSAgZmkgXAorKwlkb25lOyBcCisrCWZvciBYIGluICQoVEVTVF9TQ1JJUFRTX1NMQyk7IFwKKysJZG8gXAorKwkgIGlmIFsgISAtZSBsYXN0cnVuLyQkWC5zbGMgXSB8fCBbICQkWC5zbCAtbnQgbGFzdHJ1bi8kJFguc2xjIF0gOyBcCisrCSAgdGhlbiBcCisrCSAgIHRlc3RzPSIkJHRlc3RzICQkWC5zbGMiOyBcCisrCSAgZmkgXAorKwlkb25lOyBcCisrCWlmIHRlc3QgLW4gIiQkdGVzdHMiOyBcCisrCXRoZW4gXAorKwkgIE1BS0VSVU5OSU5HPTEgLi9ydW50ZXN0cy5zaCAkJHRlc3RzOyBcCisrCWZpCisrIwlAdG91Y2ggJChURVNUX1BHTSkuYworKworK21lbWNoZWNrX3J1bnRlc3RzOiAkKFRFU1RfUEdNKSBjbGVhbnRtcAorKwlAZWNobyAiIgorKwlAZWNobyAiUnVubmluZyB0ZXN0czoiCisrCUBlY2hvICIiCisrCS1AZm9yIFggaW4gJChURVNUX1NDUklQVFMpOyBcCisrCWRvIFwKKysJICAgJChNRU1DSEVDSykgLS1sb2ctZmlsZT1sb2cuJCR7WH0gJChSVU5fVEVTVF9QR00pICQkWC5zbDsgXAorKwkgICBncmVwIEVSUk9SIGxvZy4kJHtYfTsgZ3JlcCAnbG9zdDogW14wXScgbG9nLiQke1h9OyBcCisrCSAgICQoTUVNQ0hFQ0spIC0tbG9nLWZpbGU9bG9nLiQke1h9X3UgJChSVU5fVEVTVF9QR00pIC11dGY4ICQkWC5zbDsgXAorKwkgICBncmVwIEVSUk9SIGxvZy4kJHtYfV91OyBncmVwICdsb3N0OiBbXjBdJyBsb2cuJCR7WH1fdTsgXAorKwlkb25lCisrIwl0b3VjaCAkKFRFU1RfUEdNKS5jCisrCisrbWVtY2hlY2tfcnVudGVzdHNfc2xjOiAkKFRFU1RfUEdNKSBjbGVhbnRtcAorKwlAZWNobyAiIgorKwlAZWNobyAiUnVubmluZyB0ZXN0czoiCisrCUBlY2hvICIiCisrCS1AZm9yIFggaW4gJChURVNUX1NDUklQVFNfU0xDKTsgXAorKwlkbyBcCisrCSAgICQoTUVNQ0hFQ0spIC0tbG9nLWZpbGU9bG9nLiQke1h9X2MgJChSVU5fVEVTVF9QR00pICQkWC5zbGM7IFwKKysJICAgJChNRU1DSEVDSykgLS1sb2ctZmlsZT1sb2cuJCR7WH1fdWMgJChSVU5fVEVTVF9QR00pIC11dGY4ICQkWC5zbGM7IFwKKysJZG9uZQorKyMJdG91Y2ggJChURVNUX1BHTSkuYworKworK21lbWNoZWNrOiBtZW1jaGVja19ydW50ZXN0cyBtZW1jaGVja19ydW50ZXN0c19zbGMKKysKKyskKFRFU1RfUEdNKTogJChURVNUX1BHTSkuYyBhc3NvYy5jIGxpc3QuYyAkKFNMQU5HTElCKS9saWJzbGFuZy5hCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKE9USEVSX0NGTEFHUykgJChMREZMQUdTKSAkKFRFU1RfUEdNKS5jIC1vICQoVEVTVF9QR00pIC1JJChTTEFOR0lOQykgLUwkKFNMQU5HTElCKSAtbHNsYW5nICQoT1RIRVJfTElCUykKKytjbGVhbnRtcDoKKysJLS9iaW4vcm0gLXJmIHRtcGZpbGUqLiogdG1wZGlyKi4qCisrY2xlYW46IGNsZWFudG1wCisrCS0vYmluL3JtIC1mICp+ICoubyAqLmxvZyBsb2cucGlkKiAqLnNsYyBsb2cuKiAqLmxvZy0qCisrZGlzdGNsZWFuOiBjbGVhbgorKwkvYmluL3JtIC1mICQoVEVTVF9QR00pICQoVEVTVF9QR00pLmdjZGEgJChURVNUX1BHTSkuZ2NubworKy5QSE9OWTogY2xlYW4gbWVtY2hlY2sgcnVudGVzdHMgbWVtY2hlY2tfcnVudGVzdHNfc2xjIG1lbWNoZWNrX3J1bnRlc3RzIGNsZWFudG1wCisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlc3QtYWRkLW91dHB1dC1pbi10aGUtZm9ybWF0LXJlc3VsdC10ZXN0bmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YTliYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlc3QtYWRkLW91dHB1dC1pbi10aGUtZm9ybWF0LXJlc3VsdC10ZXN0bmFtZS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDM4Njg4ZWUyNzU0NDE1Y2YyYTE5MzVkYWZiODI3ODg2MWI3MzE1ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVmYW4gU3Ryb2dpbiA8c3N0cm9naW5AY2lzY28uY29tPgorRGF0ZTogVGh1LCAyIE1hciAyMDE3IDAwOjI2OjMxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IGFkZCBvdXRwdXQgaW4gdGhlIGZvcm1hdCAicmVzdWx0OiB0ZXN0bmFtZSIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogU3RlZmFuIFN0cm9naW4gPHNzdHJvZ2luQGNpc2NvLmNvbT4KKy0tLQorIHNyYy90ZXN0L3J1bnRlc3RzLnNoIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3J1bnRlc3RzLnNoIGIvc3JjL3Rlc3QvcnVudGVzdHMuc2gKK2luZGV4IGEzZWFhZDAuLjY0ZjA3MDUgMTAwNzU1CistLS0gYS9zcmMvdGVzdC9ydW50ZXN0cy5zaAorKysrIGIvc3JjL3Rlc3QvcnVudGVzdHMuc2gKK0BAIC0zNCw4ICszNCwxMCBAQCBkbworICAgICB0aGVuCisgCW5fZmFpbGVkPWBleHByICR7bl9mYWlsZWR9ICsgMWAKKyAJdGVzdHNfZmFpbGVkPSIkdGVzdHNfZmFpbGVkICR0ZXN0ZmlsZSIKKysJZWNobyAiRkFJTDogJHRlc3RmaWxlIgorICAgICBlbHNlCisgICAgICAgICB0b3VjaCBsYXN0cnVuLyR0ZXN0ZmlsZQorKwllY2hvICJQQVNTOiAkdGVzdGZpbGUiCisgICAgIGZpCisgZG9uZQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYgppbmRleCBjNzFkODA0Li4wNTg1YzE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYgpAQCAtMTcsNiArMTcsOSBAQAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYzUyMzUzMTMwNDJlZDBlNzFlYzcwOGY3Yjg1ZWMyNDEiCkBAIC0yNSw3ICsyOCw3IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8iCiBQUkVNSVJST1JTX2FwcGVuZCA9ICJcbiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nLy4qIGh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvb2xkLyBcbiIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKIENMRUFOQlJPS0VOID0gIjEiCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtb25pZyIKQEAgLTQ5LDYgKzUyLDI3IEBACiAgICAgY2QgJHtCfQogfQogCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYworCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbworCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJZG9uZQorCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAorCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKworCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKKworCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKK30KKwogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKIAogUEFSQUxMRUxfTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKaW5kZXggMDY5N2M3My4uOGFjOGU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIGZpbGUgc3RhdHVzIGRpc3BsYXkgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvIgogREVTQ1JJUFRJT04gPSAiRGlzcGxheXMgYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZSB0aGF0IHRoZSBzdGF0KCkgY2FsbCBwcm92aWRlcyBhbmQgYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZXN5c3RlbSB0aGF0IHN0YXRmcygpIHByb3ZpZGVzLiIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiR1BMdjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy9maWxlcy90ZXhpbmZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3MvZmlsZXMvdGV4aW5mby5wYXRjaAppbmRleCA1YWM1OTUxLi5mMjNhMWY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy9maWxlcy90ZXhpbmZvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2gKQEAgLTEsMyArMSw0IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLSBhL2RvYy9zdHJlc3MudGV4aQogKysrIGIvZG9jL3N0cmVzcy50ZXhpCiBAQCAtNjIsNDcgKzYyLDQ3IEBACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggZDQyYTA0YS4uODBlYzBhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwpAQCAtNCw3ICs0LDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT1mNjAwYTQ3YzJhMmNkZGU1ODk5ZTQ0OTYwNzgxMGVkMSBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9NjUyZmI0MzM0YzEzYjUxMTU5N2Q3OTQwZWY4YjMzMjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9Y2ZlNDExMTJmOTZjMTlhMDc0OTM0ZDEyOGY0NWM2OTMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKQEAgLTI3LDYgKzI3LDEyIEBACiAKICMgbWtzaWduYW1lL21rc2lnbGlzdCBhcmUgdXNlZCBvbiBidWlsZCBob3N0IHRvIGdlbmVyYXRlIHNvdXJjZSBmaWxlcwogZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSBzdWRvX3VzYWdlLmgKKwlzZWQgLWkgIFwKKwkgICAgLWUgJ3MsLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3MsLS1idWlsZD0ke0JVSUxEX1NZU30sLGcnIFwKKwkgICAgLWUgJ3MsLS1ob3N0PSR7SE9TVF9TWVN9LCxnJyBcCisJICAgICR7Qn0vc3JjL3N1ZG9fdXNhZ2UuaAogCW9lX3J1bm1ha2UgU1NQX0NGTEFHUz0iIiBTU1BfTERGTEFHUz0iIiBDQz0iJEJVSUxEX0NDIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIENQUEZMQUdTPSIkQlVJTERfQ1BQRkxBR1MgLUkke1N9L2luY2x1ZGUgLUkke1N9IC1JJHtCfSIgIC1DIGxpYi91dGlsIG1rc2lnbmFtZSBta3NpZ2xpc3QKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE5cDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTlwMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2NTljMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTlwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgc3Vkby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMWE2MDkwZWQxZDA5NDZmYTIyY2JhMTllODZhYWZlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzdlMThlNjdjMmFkNTllY2FjZmE0Yjc3MDcxOThiMDlmY2Y4NDkxNDYyMTU4NWE5YmM2NzBkY2MzMWE1MmUwIgotCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCi0gICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgotCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYyNGIzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwM2RhOGU3MTFjYWNhNmZkOTNlNTc3NTFiZmI3NGFkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDQyYWUxMDU5ZTkzNWY3OTVjNjllYTk3YjNkZTA5ZmU5NDEwYTU4YTc0YjVkNWU2ODM2ZWI1MDY3YTQ0NWQ5IgorCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCisgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwlmaQorCisJY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KKwljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKworCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0MzFhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gY2I3MmIzZTE3MmMyMzhiNGI1YWU1OTM1ZGM2YmU1NGY1MDM0ZmNmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMwIEp1biAyMDE3IDE4OjIwOjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBmaXggcHJvYmxlbXMgdGhhdCBjYXVzZXMgYSBzZWdtZW50YXRpb24gZmF1bHQgdW5kZXIgc29tZQorIGNvbmRpdGlvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgbm8gdXBzdHJlYW0gXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisga3N5bV9tb2QuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9rc3ltX21vZC5jIGIva3N5bV9tb2QuYworaW5kZXggNmUyNmRhMS4uYTNkYWE3ZCAxMDA2NDQKKy0tLSBhL2tzeW1fbW9kLmMKKysrKyBiL2tzeW1fbW9kLmMKK0BAIC0xODYsNyArMTg2LDYgQEAgZXh0ZXJuIGludCBJbml0TXN5bXMoKQorIAkJZWxzZQorIAkJCVN5c2xvZyhMT0dfRVJSLCAiRXJyb3IgbG9hZGluZyBrZXJuZWwgc3ltYm9scyAiIFwKKyAJCQkgICAgICAgIi0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CistCQlmY2xvc2Uoa3N5bXMpOworIAkJcmV0dXJuKDApOworIAl9CisgCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYmRlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGIyMmYyNDQ3MzJjZDBmNDc1YWYyZjgyZmM3ZWVjZWM0OWY5MDYyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDAwOjAxOjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBNYWtlIHdheSBmb3IgcmVzcGVjdGluZyBmbGFncyBmcm9tIGVudmlyb25tZW50CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA1YWYxNjg5Li5hZjY5OWQyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTcsMTQgKzE3LDEyIEBACisgIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgIyAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorIAorLUNDPSBnY2MKKyAjU0tGTEFHUz0gLWcgLURTWVNWIC1XYWxsCisgI0xERkxBR1M9IC1nCistU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCisrU0tGTEFHUyA9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtRFNZU1YgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKKyAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQorICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKKy1MREZMQUdTPSAtcworIAorICMgTG9vayB3aGVyZSB5b3VyIGluc3RhbGwgcHJvZ3JhbSBpcy4KKyBJTlNUQUxMID0gL3Vzci9iaW4vaW5zdGFsbAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwppbmRleCA3OGI4ZDdhLi4xYTUzN2ZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwpAQCAtMTEsMTEgKzExLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rbG9nZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTk7bWQ1PTdlODdlZDBhZTYxNDJkZTA3OWJjZTczOGMxMGM4OTlkIFwKICAgICAgICAgICAgICAgICAgICAiCiAKLWluaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmluZm9kcm9tLm9yZy9wcm9qZWN0cy9zeXNrbG9nZC9kb3dubG9hZC9zeXNrbG9nZC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9zeXNrbG9nZCBcCiAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2dkLnNlcnZpY2UgXApAQCAtMzAsMTEgKzMyLDEwIEBACiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKIAogSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mLiR7QlBOfSIKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgorUkNPTkZMSUNUU18ke1BOfS1zeXNsb2cgPSAicnN5c2xvZyBidXN5Ym94LXN5c2xvZyBzeXNsb2ctbmciCiAKLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1DRkxBR1NfYXBwZW5kID0gIiAtRFNZU1YiCitDRkxBR1MgKz0gIi1EU1lTViAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UiCiAKIGRvX2luc3RhbGwgKCkgewogCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKQEAgLTU3LDIxICs1OCw2IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c2tsb2dkLmNvbmYnLCAnJywgZCl9IgogCi0jIHN5c2tsb2dkIHBhY2thZ2UgaGFzIG5vIGludGVybmFsIHN5c3RlbWQgc3VwcG9ydCwgc28gd2Ugd2VpZ2ggYnVzeWJveCdzCi0jIHN5c2tsb2dkIHV0aWxpdHkgb3ZlciBpdCBpbiBjYXNlIG9mIHN5c3RlbWQKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnMTAnLCcxMDAnLGQpfSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic3lzbG9nZCBrbG9nZCBzeXNsb2ctY29uZiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0Jywnc3lzbG9nLWluaXQnLCcnLGQpfSIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gInN5c2xvZ2QuOCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2dkLjhdID0gIiR7bWFuZGlyfS9tYW44L3N5c2xvZ2QuOCIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZ2RdID0gIiR7YmFzZV9zYmluZGlyfS9zeXNsb2dkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tsb2dkXSA9ICIke2Jhc2Vfc2JpbmRpcn0va2xvZ2QiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nLWluaXRdID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2ctY29uZl0gPSAiJHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZiIKLQogcGtnX3ByZXJtXyR7UE59ICgpIHsKIAlpZiB0ZXN0ICJ4JEQiID0gIngiOyB0aGVuCiAJaWYgdGVzdCAiJDEiID0gInVwZ3JhZGUiIC1vICIkMSIgPSAicmVtb3ZlIjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCmluZGV4IGJiNTYyOWQuLjBiYzdlMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKQEAgLTE3LDggKzE3LDEwIEBACiAjIGF1dG90b29scy1icm9rZW5zZXAgYXMgdGhpcyBwYWNrYWdlIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBzeXN0ZW1kCiAKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXNlbnNvcnMiCi1FWFRSQV9PRU1BS0UgKz0gJ0xGTEFHUz0iIicKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xtLXNlbnNvcnNdID0gIi0tZW5hYmxlLXNlbnNvcnMsLS1kaXNhYmxlLXNlbnNvcnMsbG1zZW5zb3JzLGxtc2Vuc29ycy1saWJzZW5zb3JzIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdHJpcHBpbmciCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic3lzc3RhdC5zZXJ2aWNlIgpAQCAtMzIsMTAgKzM0LDE2IEBACiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKIAogCSMgZG9uJ3QgaW5zdGFsbCAvdmFyL2xvZy9zYSB3aGVuIHBvcHVsYXRpbmcgcm9vdGZzLiBEbyBpdCB0aHJvdWdoIHZvbGF0aWxlCi0KIAlybSAtcmYgJHtEfS92YXIKLQlpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfc3lzc3RhdCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9zeXNzdGF0ICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJZmkKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL3NhIC0gLSAtIC0iIFwKKwkJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc3lzc3RhdC5jb25mCisJZmkKIAogCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNzdGF0LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KQEAgLTU1LDQgKzYzLDMgQEAKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc2EiCiAKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saW50bCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZmMzYzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImYxNmFlOGVkZDQ2MmY1MTk5ZWUwMzNmN2MwZTJjMTk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlMTAwODY1NjU3NWU3MDQ4NmI0NTZlNzk3NzVlOThkM2I4NzMyZDdlMmNiNDA4NTU5MjA5YmQwMzE4ZTA4MDciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJhZjkzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhmNGE1ZDBkZTI5ZjEwNTYxNTNlMjVlN2E5YzUxOGQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMzhlZmFhMGNhODVlZTU0ODRkMDQ2YmQ0MjcwMTI5NzkyNjRmZWYxN2YwN2ZkNzg1NTg2MGU1OTI4MTk0ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCA1ZmRiYmNlLi4xZWZmZWYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlNlY3VyaXR5IHRvb2wgdGhhdCBpcyBhIHdyYXBwZXIgZm9yIFRDUCBkYWVtb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zb2Z0cGFub3JhbWEub3JnL05ldC9OZXR3b3JrX3NlY3VyaXR5L1RDUF93cmFwcGVycy8iCiBERVNDUklQVElPTiA9ICJUb29scyBmb3IgbW9uaXRvcmluZyBhbmQgZmlsdGVyaW5nIGluY29taW5nIHJlcXVlc3RzIGZvciB0Y3AgXAogICAgICAgICAgICAgICAgc2VydmljZXMuIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCkBAIC03Myw3ICs3NCw2IEBACiAgICAgICAgICAgICAgICAgJ0VYVFJBX0NGTEFHUz0ke0NGTEFHU30gLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiAtREhBVkVfV0VBS1NZTVMgLURfUkVFTlRSQU5UIC1ESU5FVDY9MSAtRHNzX2ZhbWlseT1fX3NzX2ZhbWlseSAtRHNzX2xlbj1fX3NzX2xlbiciCiAKIEVYVFJBX09FTUFLRV9ORVRHUk9VUCA9ICItRE5FVEdST1VQIC1EVVNFX0dFVERPTUFJTiIKLUVYVFJBX09FTUFLRV9ORVRHUk9VUF9saWJjLXVjbGliYyA9ICItRFVTRV9HRVRET01BSU4iCiBFWFRSQV9PRU1BS0VfTkVUR1JPVVBfbGliYy1tdXNsID0gIi1EVVNFX0dFVERPTUFJTiIKIAogRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiICdMSUJTPSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkKaW5kZXggOGI3MDMzZS4uZTM2OWY3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L3RlbXBsYXRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS90ZW1wbGF0ZS5weQpAQCAtMSw0ICsxLDQgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24yLjcKKyMhIC91c3IvYmluL2VudiBweXRob24zCiAKICMgdGVtcGxhdGUucHkgKGFuZCBvdGhlciBmaWxlbmFtZXMpCiAjIEJ5IE1heCBFbGlhc2VyIChtYXguZWxpYXNlckBpbnRlbC5jb20pCkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgdGhpc19iaW5hcnkgKyAiIGlzIG5vdCBvbmUgb2YgIiArICcsICcuam9pbiAodmFsaWRfYmluYXJpZXMpCiAKIGlmICItLXZlcnNpb24iIGluIHN5cy5hcmd2OgotICAgIHByaW50IHZlcnNpb25fc3RyCisgICAgcHJpbnQodmVyc2lvbl9zdHIpCiAgICAgc3lzLmV4aXQgKDApCiAKICMgRm9yIGRlYnVnZ2luZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiCmluZGV4IGQ4MjczMWUuLmY1OGRmOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKQEAgLTc5LDQgKzc5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCiAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCiAKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAxLUZpeC1NYWtlZmlsZS1xdW90aW5nLWJ1Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDlmYTA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2gKQEAgLTAsMCArMSwxNzQgQEAKK0Zyb20gYjUyMGQyMGI4MTIyYTc4M2Y5OWYwODg3NThiNzhkOTI4ZjcwZWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjQ1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBNYWtlZmlsZSBxdW90aW5nIGJ1ZworCitQcm9ibGVtIHdpdGggSU5TVEFMTEFSR1MgcmVwb3J0ZWQgYnkgWmVmcmFtIGluOgoraHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjAuaHRtbAorRml4IHNpbWlsYXIgcHJvYmxlbXMgdG9vLgorKiBNYWtlZmlsZSAoWklDX0lOU1RBTEwsIFZBTElEQVRFX0VOViwgQ0MsIGluc3RhbGwpCisoSU5TVEFMTCwgdmVyc2lvbiwgSU5TVEFMTEFSR1MsIHJpZ2h0X3Bvc2l4LCBwb3NpeF9yaWdodCkKKyhjaGVja19wdWJsaWMpOiBVc2UgYXBvc3Ryb3BoZXMgdG8gcHJldmVudCB1bmRlc2lyYWJsZQoraW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgYnkgdGhlIHNoZWxsLiAgV2Ugc3RpbGwgZG8gbm90IHN1cHBvcnQKK2RpcmVjdG9yeSBuYW1lcyBjb250YWluaW5nIGFwb3N0cm9waGVzIG9yIG5ld2xpbmVzLCBidXQgdGhpcyBpcworZ29vZCBlbm91Z2guCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCisqIE5FV1M6IE1lbnRpb24gdGhpcy4KKy0tLQorIE1ha2VmaWxlIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5FV1MgICAgIHwgIDggKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYzkyZWRjMC4uOTc2NDljYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTMxMyw3ICszMTMsNyBAQCBaRkxBR1M9CisgCisgIyBIb3cgdG8gdXNlIHppYyB0byBpbnN0YWxsIHR6IGJpbmFyeSBmaWxlcy4KKyAKKy1aSUNfSU5TVEFMTD0JJChaSUMpIC1kICQoREVTVERJUikkKFRaRElSKSAkKExFQVBTRUNPTkRTKQorK1pJQ19JTlNUQUxMPQkkKFpJQykgLWQgJyQoREVTVERJUikkKFRaRElSKScgJChMRUFQU0VDT05EUykKKyAKKyAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29tcGxpYW50ICdhd2snIG9uIHlvdXIgc3lzdGVtLgorIEFXSz0JCWF3aworQEAgLTM0MSw4ICszNDEsOCBAQCBTR01MX0NBVEFMT0dfRklMRVM9IFwKKyBWQUxJREFURSA9IG5zZ21scworIFZBTElEQVRFX0ZMQUdTID0gLXMgLUIgLXdhbGwgLXduby11bnVzZWQtcGFyYW0KKyBWQUxJREFURV9FTlYgPSBcCistICBTR01MX0NBVEFMT0dfRklMRVM9JChTR01MX0NBVEFMT0dfRklMRVMpIFwKKy0gIFNHTUxfU0VBUkNIX1BBVEg9JChTR01MX1NFQVJDSF9QQVRIKSBcCisrICBTR01MX0NBVEFMT0dfRklMRVM9JyQoU0dNTF9DQVRBTE9HX0ZJTEVTKScgXAorKyAgU0dNTF9TRUFSQ0hfUEFUSD0nJChTR01MX1NFQVJDSF9QQVRIKScgXAorICAgU1BfQ0hBUlNFVF9GSVhFRD1ZRVMgXAorICAgU1BfRU5DT0RJTkc9VVRGLTgKKyAKK0BAIC0zOTYsNyArMzk2LDcgQEAgR1pJUEZMQUdTPQktOW4KKyAjTUFLRT0JCW1ha2UKKyAKKyBjYz0JCWNjCistQ0M9CQkkKGNjKSAtRFRaRElSPVwiJChUWkRJUilcIgorK0NDPQkJJChjYykgLURUWkRJUj0nIiQoVFpESVIpIicKKyAKKyBBUj0JCWFyCisgCitAQCAtNDczLDI5ICs0NzMsMjkgQEAgYWxsOgkJdHpzZWxlY3QgeWVhcmlzdHlwZSB6aWMgemR1bXAgbGlidHouYSAkKFRBQkRBVEEpCisgQUxMOgkJYWxsIGRhdGUgJChFTkNISUxBREEpCisgCisgaW5zdGFsbDoJYWxsICQoREFUQSkgJChSRURPKSAkKE1BTlMpCistCQlta2RpciAtcCAkKERFU1RESVIpJChFVENESVIpICQoREVTVERJUikkKFRaRElSKSBcCistCQkJJChERVNURElSKSQoTElCRElSKSBcCistCQkJJChERVNURElSKSQoTUFORElSKS9tYW4zICQoREVTVERJUikkKE1BTkRJUikvbWFuNSBcCistCQkJJChERVNURElSKSQoTUFORElSKS9tYW44CisrCQlta2RpciAtcCAnJChERVNURElSKSQoRVRDRElSKScgJyQoREVTVERJUikkKFRaRElSKScgXAorKwkJCSckKERFU1RESVIpJChMSUJESVIpJyBcCisrCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuMycgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNScgXAorKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjgnCisgCQkkKFpJQ19JTlNUQUxMKSAtbCAkKExPQ0FMVElNRSkgLXAgJChQT1NJWFJVTEVTKQorLQkJY3AgLWYgJChUQUJEQVRBKSAkKERFU1RESVIpJChUWkRJUikvLgorLQkJY3AgdHpzZWxlY3QgemljIHpkdW1wICQoREVTVERJUikkKEVUQ0RJUikvLgorLQkJY3AgbGlidHouYSAkKERFU1RESVIpJChMSUJESVIpLy4KKy0JCSQoUkFOTElCKSAkKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEKKy0JCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjMvLgorLQkJY3AgLWYgdHpmaWxlLjUgJChERVNURElSKSQoTUFORElSKS9tYW41Ly4KKy0JCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvLgorKwkJY3AgLWYgJChUQUJEQVRBKSAnJChERVNURElSKSQoVFpESVIpLy4nCisrCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJyQoREVTVERJUikkKEVUQ0RJUikvLicKKysJCWNwIGxpYnR6LmEgJyQoREVTVERJUikkKExJQkRJUikvLicKKysJCSQoUkFOTElCKSAnJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hJworKwkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICckKERFU1RESVIpJChNQU5ESVIpL21hbjMvLicKKysJCWNwIC1mIHR6ZmlsZS41ICckKERFU1RESVIpJChNQU5ESVIpL21hbjUvLicKKysJCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAnJChERVNURElSKSQoTUFORElSKS9tYW44Ly4nCisgCisgSU5TVEFMTDoJQUxMIGluc3RhbGwgZGF0ZS4xCistCQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuMQorLQkJY3AgZGF0ZSAkKERFU1RESVIpJChCSU5ESVIpLy4KKy0JCWNwIC1mIGRhdGUuMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvLgorKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEJJTkRJUiknICckKERFU1RESVIpJChNQU5ESVIpL21hbjEnCisrCQljcCBkYXRlICckKERFU1RESVIpJChCSU5ESVIpLy4nCisrCQljcCAtZiBkYXRlLjEgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uJworIAorIHZlcnNpb246CSQoVkVSU0lPTl9ERVBTKQorIAkJeyAodHlwZSBnaXQpID4vZGV2L251bGwgMj4mMSAmJiBcCisgCQkgIFY9YGdpdCBkZXNjcmliZSAtLW1hdGNoICdbMC05XVswLTldWzAtOV1bMC05XVthLXpdKicgXAorIAkJCQktLWFiYnJldj03IC0tZGlydHlgIHx8IFwKKy0JCSAgVj0kKFZFUlNJT04pOyB9ICYmIFwKKysJCSAgVj0nJChWRVJTSU9OKSc7IH0gJiYgXAorIAkJcHJpbnRmICclc1xuJyAiJCRWIiA+JEAub3V0CisgCQltdiAkQC5vdXQgJEAKKyAKK0BAIC01MjksMTIgKzUyOSwxMiBAQCBsZWFwc2Vjb25kczoJJChMRUFQX0RFUFMpCisgIyBBcmd1bWVudHMgdG8gcGFzcyB0byBzdWJtYWtlcyBvZiBpbnN0YWxsX2RhdGEuCisgIyBUaGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGxhdGVyIHN1Ym1ha2UgYXJndW1lbnRzLgorIElOU1RBTExBUkdTID0gXAorLSBCQUNLV0FSRD0kKEJBQ0tXQVJEKSBcCistIERFU1RESVI9JChERVNURElSKSBcCisrIEJBQ0tXQVJEPSckKEJBQ0tXQVJEKScgXAorKyBERVNURElSPSckKERFU1RESVIpJyBcCisgIExFQVBTRUNPTkRTPSckKExFQVBTRUNPTkRTKScgXAorICBQQUNLUkFUREFUQT0nJChQQUNLUkFUREFUQSknIFwKKy0gVFpESVI9JChUWkRJUikgXAorLSBZRUFSSVNUWVBFPSQoWUVBUklTVFlQRSkgXAorKyBUWkRJUj0nJChUWkRJUiknIFwKKysgWUVBUklTVFlQRT0nJChZRUFSSVNUWVBFKScgXAorICBaSUM9JyQoWklDKScKKyAKKyAjICdtYWtlIGluc3RhbGxfZGF0YScgaW5zdGFsbHMgb25lIHNldCBvZiB0eiBiaW5hcnkgZmlsZXMuCitAQCAtNTU4LDE2ICs1NTgsMTYgQEAgcmlnaHRfb25seToKKyAjIFlvdSBtdXN0IHJlcGxhY2UgYWxsIG9mICQoVFpESVIpIHRvIHN3aXRjaCBmcm9tIG5vdCB1c2luZyBsZWFwIHNlY29uZHMKKyAjIHRvIHVzaW5nIHRoZW0sIG9yIHZpY2UgdmVyc2EuCisgcmlnaHRfcG9zaXg6CXJpZ2h0X29ubHkKKy0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktbGVhcHMKKy0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1sZWFwcyB8fCBcCistCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQorLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5CisrCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycKKysJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycgfHwgXAorKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQorKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKKyAKKyBwb3NpeF9yaWdodDoJcG9zaXhfb25seQorLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1wb3NpeAorLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLXBvc2l4IHx8IFwKKy0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5CistCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKKysJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JworKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JyB8fCBcCisrCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5CisrCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQorIAorICMgVGhpcyBvYnNvbGVzY2VudCBydWxlIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAjIHR6IHJlbGVhc2VzIDIwMTRnIHRocm91Z2ggMjAxNWcuICBJdCBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5LgorQEAgLTc2NCw3ICs3NjQsNyBAQCBzZXQtdGltZXN0YW1wcy5vdXQ6ICQoRU5DSElMQURBKQorIAorIGNoZWNrX3B1YmxpYzoKKyAJCSQoTUFLRSkgbWFpbnRhaW5lci1jbGVhbgorLQkJJChNQUtFKSAiQ0ZMQUdTPSQoR0NDX0RFQlVHX0ZMQUdTKSIgQUxMCisrCQkkKE1BS0UpIENGTEFHUz0nJChHQ0NfREVCVUdfRkxBR1MpJyBBTEwKKyAJCW1rZGlyIC1wIHB1YmxpYy5kaXIKKyAJCWZvciBpIGluICQoVERBVEEpIHR6ZGF0YS56aTsgZG8gXAorIAkJICAkKHppYykgLXYgLWQgcHVibGljLmRpciAkJGkgMj4mMSB8fCBleGl0OyBcCitkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKK2luZGV4IGJkMmJlYzIuLjc1YWIwOTUgMTAwNjQ0CistLS0gYS9ORVdTCisrKysgYi9ORVdTCitAQCAtMSw1ICsxLDEzIEBACisgTmV3cyBmb3IgdGhlIHR6IGRhdGFiYXNlCisgCisrVW5yZWxlYXNlZCwgZXhwZXJpbWVudGFsIGNoYW5nZXMKKysKKysgIENoYW5nZXMgdG8gYnVpbGQgcHJvY2VkdXJlCisrCisrICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KKysgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCisrCisrCisgUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKKyAKKyAgIEJyaWVmbHk6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YWZlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGUyMzFkYTRmYjJiZWIxN2M2MGI0YjFhNWMyNzYzNjZkNmE2ZTQzM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxNzo1ODozNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IHpkdW1wIHRvIEM5MCArIHNucHJpbnRmCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgSm9uIFNrZWV0IGluOgoraHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjIuaHRtbAorKiBORVdTOiBNZW50aW9uIHRoaXMuCisqIHpkdW1wLmMgKG15X3NucHJpbnRmKTogTmV3IG1hY3JvIG9yIGZ1bmN0aW9uLiAgSWYgYSBtYWNybywgaXQgaXMKK2p1c3Qgc25wcmludGYuICBJZiBhIGZ1bmN0aW9uLCBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgb2xkIHNucHJpbnRmCitzdGF0aWMgZnVuY3Rpb24sIHdpdGggYW4gQVRUUklCVVRFX0ZPUk1BVCB0byBwYWNpZnkgbW9kZXJuIEdDQy4KK0FsbCB1c2VzIG9mIHNucHJpbnRmIGNoYW5nZWQgdG8gdXNlIG15X3NucHJpbnRmLiAgVGhpcyB3YXksCitpbnN0YWxsZXJzIGRvbuKAmXQgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBpZiB0aGV5IGFyZSB1c2luZworYSBwcmUtQzk5IGNvbXBpbGVyIHdpdGggYSBsaWJyYXJ5IHRoYXQgaGFzIHNucHJpbnRmLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgTkVXUyAgICB8ICA0ICsrKysKKyB6ZHVtcC5jIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKK2luZGV4IDc1YWIwOTUuLmRlYTA4YjggMTAwNjQ0CistLS0gYS9ORVdTCisrKysgYi9ORVdTCitAQCAtNyw2ICs3LDEwIEBAIFVucmVsZWFzZWQsIGV4cGVyaW1lbnRhbCBjaGFuZ2VzCisgICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KKyAgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCisgCisrICAgIEJ1aWxkZXJzIG5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkgLURIQVZFX1NOUFJJTlRGIG9uIHBsYXRmb3JtcworKyAgICB0aGF0IGhhdmUgc25wcmludGYgYW5kIHVzZSBwcmUtQzk5IGNvbXBpbGVycy4gIChQcm9ibGVtIHJlcG9ydGVkCisrICAgIGJ5IEpvbiBTa2VldC4pCisrCisgCisgUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKKyAKK2RpZmYgLS1naXQgYS96ZHVtcC5jIGIvemR1bXAuYworaW5kZXggOGUzYmYzZS4uZDRlNjA4NCAxMDA2NDQKKy0tLSBhL3pkdW1wLmMKKysrKyBiL3pkdW1wLmMKK0BAIC03OTUsMTIgKzc5NSwxNCBAQCBzaG93KHRpbWV6b25lX3QgdHosIGNoYXIgKnpvbmUsIHRpbWVfdCB0LCBib29sIHYpCisgCQlhYmJyb2soYWJicih0bXApLCB6b25lKTsKKyB9CisgCistI2lmICFIQVZFX1NOUFJJTlRGCisrI2lmIEhBVkVfU05QUklOVEYKKysjIGRlZmluZSBteV9zbnByaW50ZiBzbnByaW50ZgorKyNlbHNlCisgIyBpbmNsdWRlIDxzdGRhcmcuaD4KKyAKKyAvKiBBIHN1YnN0aXR1dGUgZm9yIHNucHJpbnRmIHRoYXQgaXMgZ29vZCBlbm91Z2ggZm9yIHpkdW1wLiAgKi8KKy1zdGF0aWMgaW50Cistc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQorK3N0YXRpYyBpbnQgQVRUUklCVVRFX0ZPUk1BVCgocHJpbnRmLCAzLCA0KSkKKytteV9zbnByaW50ZihjaGFyICpzLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqZm9ybWF0LCAuLi4pCisgeworICAgaW50IG47CisgICB2YV9saXN0IGFyZ3M7CitAQCAtODM5LDEwICs4NDEsMTAgQEAgZm9ybWF0X2xvY2FsX3RpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSkKKyB7CisgICBpbnQgc3MgPSB0bS0+dG1fc2VjLCBtbSA9IHRtLT50bV9taW4sIGhoID0gdG0tPnRtX2hvdXI7CisgICByZXR1cm4gKHNzCistCSAgPyBzbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCisgCSAgOiBtbQorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQorLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7CisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQiLCBoaCwgbW0pCisrCSAgOiBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkIiwgaGgpKTsKKyB9CisgCisgLyogU3RvcmUgaW50byBCVUYsIG9mIHNpemUgU0laRSwgYSBmb3JtYXR0ZWQgVVRDIG9mZnNldCBmb3IgdGhlCitAQCAtODc3LDEwICs4NzksMTAgQEAgZm9ybWF0X3V0Y19vZmZzZXQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSwgdGltZV90IHQpCisgICBtbSA9IG9mZiAvIDYwICUgNjA7CisgICBoaCA9IG9mZiAvIDYwIC8gNjA7CisgICByZXR1cm4gKHNzIHx8IDEwMCA8PSBoaAorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQlMDJkIiwgc2lnbiwgaGgsIG1tLCBzcykKKysJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCisgCSAgOiBtbQorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQiLCBzaWduLCBoaCwgbW0pCistCSAgOiBzbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkIiwgc2lnbiwgaGgpKTsKKysJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQorKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7CisgfQorIAorIC8qIFN0b3JlIGludG8gQlVGIChvZiBzaXplIFNJWkUpIGEgcXVvdGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBQLgorQEAgLTk4MywxNSArOTg1LDE2IEBAIGlzdHJmdGltZShjaGFyICpidWYsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICp0aW1lX2ZtdCwKKyAJICAgIGZvciAoYWJwID0gYWI7IGlzX2FscGhhKCphYnApOyBhYnArKykKKyAJICAgICAgY29udGludWU7CisgCSAgICBsZW4gPSAoISphYnAgJiYgKmFiCistCQkgICA/IHNucHJpbnRmKGIsIHMsICIlcyIsIGFiKQorKwkJICAgPyBteV9zbnByaW50ZihiLCBzLCAiJXMiLCBhYikKKyAJCSAgIDogZm9ybWF0X3F1b3RlZF9zdHJpbmcoYiwgcywgYWIpKTsKKyAJICAgIGlmIChzIDw9IGxlbikKKyAJICAgICAgcmV0dXJuIGZhbHNlOworIAkgICAgYiArPSBsZW4sIHMgLT0gbGVuOworIAkgIH0KKy0JICBmb3JtYXR0ZWRfbGVuID0gKHRtLT50bV9pc2RzdAorLQkJCSAgID8gc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKKy0JCQkgICA6IDApOworKwkgIGZvcm1hdHRlZF9sZW4KKysJICAgID0gKHRtLT50bV9pc2RzdAorKwkgICAgICAgPyBteV9zbnByaW50ZihiLCBzLCAmIlx0XHQlZCJbc2hvd19hYmJyXSwgdG0tPnRtX2lzZHN0KQorKwkgICAgICAgOiAwKTsKKyAJfQorIAlicmVhazsKKyAgICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxN2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMTdiLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVkMmM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxN2IuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCi0jCi1TVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lZjFhMzUyYjkwMWVlN2I3NWE3NWRmODE3MWQ2YWNhNyIKLQotU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAotICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImFmYWYxNWRlYjEzNzU5ZThiNTQzZDg2MzUwMzg1YjE2IgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI0ZDE3MzViYjU0ZTIyYjhkNzQ0M2Q0ZDFmMWExM2QwMDdhZTExYmU3OWEzNWU1MWY4ZTgzMjJmYjhlMjkyZDQwIgotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI1MGRjMGRjNTBjNjg2NDRjMWY3MDgwNGYyZTdhMTYyNSIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiZjgyNDJhNTIyZWEzNDk2YjBjZTRmZjRmMmU3NWEwNDkxNzhkYTIxMDAxYTA4YjhlNjY2ZDhjYmUwN2QxODA4NiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Yy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlOWI3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImU2ZTBkNGIyY2UzZmE2OTA2ZjMwMzE1N2JlZDI2MTJlIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIzMWZhN2ZjMGY5NGE2ZmYyZDZiYzg3OGMwYTM1ZThhYjhiNWFhMGU4YjAxNDQ1YTFkNGE4ZjE0Nzc3ZDBlNjY1IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJjNDEyYjE1MzFhZGVmMWJlN2E2NDVhYjczNGY4NmFjYyIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMjgyNWMzZTRiN2VmNTIwZjI0ZDM5M2JjYzAyOTQyZjk3NjJmZmQzZTdmYzliMjM4NTA3ODllZDhmMjI5MzNmNiIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTdiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTdiLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWU4OTc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE3Yi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWYxYTM1MmI5MDFlZTdiNzVhNzVkZjgxNzFkNmFjYTciCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjUwZGMwZGM1MGM2ODY0NGMxZjcwODA0ZjJlN2ExNjI1IgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICJmODI0MmE1MjJlYTM0OTZiMGNlNGZmNGYyZTc1YTA0OTE3OGRhMjEwMDFhMDhiOGU2NjZkOGNiZTA3ZDE4MDg2IgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNWVjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGMuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiYzQxMmIxNTMxYWRlZjFiZTdhNjQ1YWI3MzRmODZhY2MiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjI4MjVjM2U0YjdlZjUyMGYyNGQzOTNiY2MwMjk0MmY5NzYyZmZkM2U3ZmM5YjIzODUwNzg5ZWQ4ZjIyOTMzZjYiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFua29rICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCmluZGV4IGQ0ZWU0ODcuLjEwNWQwNDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCkBAIC0yMCw2ICsyMCw3IEBACiAJZmlsZTovLzE4LWN2ZS0yMDE0LTk5MTMtdW56aXAtYnVmZmVyLW92ZXJmbG93LnBhdGNoIFwKIAlmaWxlOi8vMTktY3ZlLTIwMTYtOTg0NC16aXBpbmZvLWJ1ZmZlci1vdmVyZmxvdy5wYXRjaCBcCiAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjYyYjQ5MDQwNzQ4OTUyMWRiODYzYjUyM2E3Zjg2Mzc1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzNmQ5Njk5MTY0NmQwNDQ5ZWQwYWE5NTJlNGZiZTIxYjQ3NmNlOTk0YWJjMjc2ZTQ5ZDMwZTY4NjcwOGJkMzciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKaW5kZXggOTY1OWYyNy4uM2QwYjcyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgpAQCAtMjEsOCArMjEsNyBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvd2F0Y2hkb2cvZmlsZXMvd2F0Y2hkb2cvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3dhdGNoZG9nLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzCi1pbmhlcml0IHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMgIgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMgIgpAQCAtMzcsMTIgKzM2LDE4IEBACiBJTklUU0NSSVBUX05BTUVfJHtQTn0ta2VlcGFsaXZlID0gIndkX2tlZXBhbGl2ZSIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWtlZXBhbGl2ZSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgogCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1EICR7U30vcmVkaGF0L3dhdGNoZG9nLmluaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93YXRjaGRvZy5zaAotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS93ZF9rZWVwYWxpdmUuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2Rfa2VlcGFsaXZlCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2F0Y2hkb2cuc2VydmljZSB3ZF9rZWVwYWxpdmUuc2VydmljZSIKIAotICAgICMgd2F0Y2hkb2cuY29uZiBpcyBwcm92aWRlZCBieSB0aGUgd2F0Y2hkb2ctY29uZmlnIHJlY2lwZQotICAgIHJtICR7RH0ke3N5c2NvbmZkaXJ9L3dhdGNoZG9nLmNvbmYKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisJaW5zdGFsbCAtRCAke1N9L3JlZGhhdC93YXRjaGRvZy5pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hkb2cuc2gKKwlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vd2Rfa2VlcGFsaXZlLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3dkX2tlZXBhbGl2ZQorCisJIyB3YXRjaGRvZy5jb25mIGlzIHByb3ZpZGVkIGJ5IHRoZSB3YXRjaGRvZy1jb25maWcgcmVjaXBlCisJcm0gJHtEfSR7c3lzY29uZmRpcn0vd2F0Y2hkb2cuY29uZgogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0ta2VlcGFsaXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCmluZGV4IDUwMDc0OTguLjM0ZjhkMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIkJhc2ljIGRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIgotCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgogREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCiBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAogVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoCmluZGV4IGM0NGM1YTEuLjg1MmE0M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLUNWRS0yMDEzLTQzNDIucGF0Y2gKQEAgLTExLDYgKzExLDcgQEAKIAogQ1ZFOiBDVkUtMjAxMy00MzQyCiBTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAtLS0KICB4aW5ldGQvYnVpbHRpbnMuYyB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiCmluZGV4IDZiZmFhYmUuLjFiZWI1NDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgpAQCAtMjQsNiArMjQsNyBAQAogICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVVzZS1IQVZFX1NZU19SRVNPVVJDRV9ILXRvLWd1YXJkLXN5cy1yZXNvdS5wYXRjaCBcCiAgICAgICBmaWxlOi8veGluZXRkLnNlcnZpY2UgXAogICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ1JFViA9ICI2OGJiOWFiOWU5ZjIxNGFkOGEyMzIyZjI4YWMxZDY3MzNlNzBiYzI0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgppbmRleCAwODc0MjNhLi5kZTc3OWU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKQEAgLTExLDYgKzExLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3Yjc0NTUxZTYzZjhlZTZhYWI2ZmJjODY2NzZjMGQzNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMGU4YmIxZjliN2ViMGIwMTI4NTQ5NWEyNjk5ZGYzYTRiNzY2Nzg0YzE3NjVhOGYxYWVlZGY2M2MwODA2MzY5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIyLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjIuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxZmVmMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdub21lLWRlc2t0b3AzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZTA4NzYyYzZiYjAxYzRkMjkxYjNkMjJjN2FkYjFhNjUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZTdlYTg3ZGM0NTA3MDJiZGU2MjAwMzNmOWUyY2U4MDc4NTk3MjdkMDA3Mzk2ZDg2YjA5ZjJiODIzOTdmY2MyIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtZGlzdHJpYnV0b3ItbmFtZT0ke0RJU1RST30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOmhlbHA6OmcgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDdkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCisJICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCisJICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMwMjIxYWVjNmEwODkzNWU2ODU0ZWFhOWRlOTQ1MWVmIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZmVmNTE2NzYzMTBkOWYzN2UxOGM5YjJkNzc4MjU0MjMyZWIxN2NjY2Q5ODhjMmQxZWNmNDJjN2IyOTYzYTE1NCIKKworRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IC0tZW5hYmxlLWRlYnVnPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczpoZWxwOjpnICR7U30vTWFrZWZpbGUuYW0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjZDM5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGFhMjE3NmJlMzJlZWQyNTc4ZGE4MmYzNGQzMTE0OGY5MzRjMTFjMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxNzowMzo0NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBib29rbWFya3M6IENoZWNrIGZvciByZXR1cm4gdmFsdWUgb2YgZnJlYWQoKQorCitGaXhlcyBiZWxvdyBjb21waWxlciBlcnJvcgoraWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mICdmcmVhZCcsIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCitpbmRleCBmZjAyMzliLi44NjMzY2U0IDEwMDY0NAorLS0tIGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMKKysrKyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCitAQCAtMjE3LDcgKzIxNyw4IEBAIGVwaHlfYm9va21hcmtfaW5pdCAoRXBoeUJvb2ttYXJrICpzZWxmKQorICAgYnl0ZXMgPSBnX21hbGxvYyAobnVtX2J5dGVzKTsKKyAKKyAgIGZwID0gZm9wZW4gKCIvZGV2L3VyYW5kb20iLCAiciIpOworLSAgZnJlYWQgKGJ5dGVzLCBzaXplb2YgKGd1aW50OCksIG51bV9ieXRlcywgZnApOworKyAgaWYgKGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKSAhPSBudW1fYnl0ZXMpCisrICAgIGdfd2FybmluZygiVW5hYmxlIHRvIHJlYWQgZGF0YSBmcm9tIC9kZXYvdXJhbmRvbVxuIik7CisgCisgICBzZWxmLT5pZCA9IGdfbWFsbG9jMCAoSURfTEVOICsgMSk7CisgICBmb3IgKGdzaXplIGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCmluZGV4IGYzMWFiY2UuLjQ0NTBlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgpAQCAtNSw3ICs1LDggQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKIAotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KICMgZGVwZW5kcyBvbiBndGsrMywgYnV0IGFsc28geDExIHRocm91Z2ggZ3RrKy14MTEKQEAgLTIzLDE2ICsyNCwzIEBACiAKICMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI5LwogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgb24geDg2LTY0IHRoZSBpbnRyb3NwZWN0aW9uIGJpbmFyeSBnb2VzIGludG8gCi0jIGFuIGluZmluaXRlIGxvb3AgdW5kZXIgcWVtdSBkdXJpbmcgY29tcGlsYXRpb24sIAotIyBwcmludGluZyB0aGUgZm9sbG93aW5nOgotIyAKLSMgZ2NyeXB0LU1lc3NhZ2U6IHNlbGVjdCgpIGVycm9yOiBCYWQgYWRkcmVzcwotIwotIyBnY3J5cHQtTWVzc2FnZTogc2VsZWN0KCkgZXJyb3I6IEJhZCBhZGRyZXNzCi0jCi0jIGdjcnlwdC1NZXNzYWdlOiBzZWxlY3QoKSBlcnJvcjogQmFkIGFkZHJlc3MKLSMKLSMgVGhpcyB3aWxsIGJlIGludmVzdGlnYXRlZCBsYXRlci4KLUVYVFJBX09FQ09ORl9hcHBlbmRfeDg2LTY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAtLWRpc2FibGUtZ3RrLWRvYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEyMTQxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMTA0OWZiZDg4N2U1MmY5NGFmZWIwM2ZjNzk0MmMwMWMxNDNlYmRmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDkgSnVuIDIwMTcgMTI6MDE6MjUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gcXVlcnlsb2FkZXJzOiBNYWtlIG91dHB1dCBtb3JlIHJlcHJvZHVjaWJsZQorCitSZXByb2R1Y2libGUgYnVpbGRzIGFyZSBnb29kOiBTb3J0IHRoZSBvdXRwdXQgYnkgbW9kdWxlIG5hbWUgc28gdGhhdAorc2FtZSBpbnB1dCBhbHdheXMgbGVhZHMgdG8gc2FtZSBvdXRwdXQuCisKK1RoaXMgc2hvdWxkIGFsc28gbWFrZSBnZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgb3V0cHV0IGFuZAorZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciByZXByb2R1Y2libGUuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM1OTIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBnZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jIHwgMTIgKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYworaW5kZXggMzk1Njc0YS4uNGFjOWIyOCAxMDA2NDQKKy0tLSBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKKysrKyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKK0BAIC0zNDYsNiArMzQ2LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAjaWZkZWYgVVNFX0dNT0RVTEUKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aDsKKyAgICAgICAgICAgICAgICAgR0RpciAqZGlyOworKyAgICAgICAgICAgICAgICBHTGlzdCAqbCwgKm1vZHVsZXMgPSBOVUxMOworIAorICAgICAgICAgICAgICAgICBwYXRoID0gZ19nZXRlbnYgKCJHREtfUElYQlVGX01PRFVMRURJUiIpOworICNpZmRlZiBHX09TX1dJTjMyCitAQCAtMzY1LDEyICszNjYsMTkgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGVuID0gc3RybGVuIChkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBTT0VYVF9MRU4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAgKGRlbnQgKyBsZW4gLSBTT0VYVF9MRU4sIFNPRVhUKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgPSBnX2xpc3RfcHJlcGVuZCAobW9kdWxlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3N0cmR1cCAoZGVudCkpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgZ19kaXJfY2xvc2UgKGRpcik7CisgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9zb3J0IChtb2R1bGVzLCAoR0NvbXBhcmVGdW5jKXN0cmNtcCk7CisrICAgICAgICAgICAgICAgIGZvciAobCA9IG1vZHVsZXM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKysKKysgICAgICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobW9kdWxlcywgZ19mcmVlKTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChjb250ZW50cywgIiMgZHluYW1pYyBsb2FkaW5nIG9mIG1vZHVsZXMgbm90IHN1cHBvcnRlZFxuIik7CisgI2VuZGlmCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhNmQxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDE3M2ZkNWMxMWE1ZDIwMzBkMDkyMDEwOTA2MzY0NzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FjZTA2MTcwMjkxYTFmMjE3NzE1NTI3NjhiYWNlMDcyZWNkZWE5YmQ0YTAyZjc2NTg5MzliOWEzMTRjNDBmYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcGl4YnVmY2FjaGUgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGxpYl9wYWNrYWdlCi0KLUxJQlYgPSAiMi4xMC4wIgotCi1HREtfUElYQlVGX0xPQURFUlMgPz0gInBuZyBqcGVnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19saW51eHN0ZGJhc2UgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLQotUEFDS0FHRUNPTkZJR1twbmddID0gIi0td2l0aC1saWJwbmcsLS13aXRob3V0LWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0td2l0aC1saWJqcGVnLC0td2l0aG91dC1saWJqcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0td2l0aC1saWJ0aWZmLC0td2l0aG91dC1saWJ0aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItLXdpdGgtbGliamFzcGVyLC0td2l0aG91dC1saWJqYXNwZXIsamFzcGVyIgotCi0jIFVzZSBHSU8gdG8gc25pZmYgaW1hZ2UgZm9ybWF0IGluc3RlYWQgb2YgdHJ5aW5nIGFsbCBsb2FkZXJzCi1QQUNLQUdFQ09ORklHW2dpby1zbmlmZl0gPSAiLS1lbmFibGUtZ2lvLXNuaWZmaW5nLC0tZGlzYWJsZS1naW8tc25pZmZpbmcsLHNoYXJlZC1taW1lLWluZm8iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgxMSwtLXdpdGhvdXQteDExLHZpcnR1YWwvbGlieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teGxpYiIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfZ2RrLXBpeGJ1Zi1wdGVzdCIsICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzM1OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi44LmJiCkBAIC0wLDAgKzEsMTAyIEBACitTVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImUwYWFhMDA2MWViMTI2NjdiMzJiMjc0NzIyMzBiOTYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNjhlNTI4M2NkYzBiZjliZGE5OWMzZTZhMWQ1MmFkMDdhMDMzNjRmYTE4NmI2YzI2Y2ZjODZmY2QzOTZhMTkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitMSUJWID0gIjIuMTAuMCIKKworR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCisKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtbGlicG5nLC0td2l0aG91dC1saWJwbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLXdpdGgtbGlianBlZywtLXdpdGhvdXQtbGlianBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtbGlidGlmZiwtLXdpdGhvdXQtbGlidGlmZix0aWZmIgorUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLS13aXRoLWxpYmphc3BlciwtLXdpdGhvdXQtbGliamFzcGVyLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14MTEsLS13aXRob3V0LXgxMSx2aXJ0dWFsL2xpYngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCisKKyMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCitSREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgorCitGSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgorQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisgICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCSR7aW5jbHVkZWRpcn0vKiBcCisJJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKKyIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgorUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCisKKyAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCisKKyAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQorICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKKworICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAorICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgorICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU18lcy1wdGVzdCIgJSBkLmdldFZhcignUE4nKSwgIiAiICsgcGFja2FnZXMpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQorCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgorCW12ICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCisJCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1MzkzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA4MzRiYzg2MTkyMWZlMDM2MWYyZDZhNWI1NzE2ZmM5N2E5NTE5NDc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFRodSwgNiBKdWwgMjAxNyAxMzoxMzo0NSArMDMwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IFJlbW92ZSBnbm9tZS1jb21tb24gbWFjcm8gY2FsbHMKKworZ25vbWUtY29tbW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHRoZXNlIGFyZW4ndCBkb2luZyBtdWNoIGZvciB1cy4KKworVXBzdHJlYW1hYmxlIGZpeCB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHVzaW5nIGF1dG9jb25mLWFyY2hpdmU6CitUcnlpbmcgdG8gYXZvaWQgdGhhdCBkZXBlbmRlbmN5IGZvciBub3cuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDMgLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDdhZGNmMGUuLmJiNzY1OWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxLDkgKzcxLDYgQEAgQUNfU1VCU1QoR05PTUVfREFURSkKKyBBQ19TVUJTVChHTk9NRV9EQVRFX0NPTU1FTlRfU1RBUlQpCisgQUNfU1VCU1QoR05PTUVfREFURV9DT01NRU5UX0VORCkKKyAKKy1HTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKKy1HTk9NRV9NQUlOVEFJTkVSX01PREVfREVGSU5FUworLQorIEFDX0FSR19FTkFCTEUoZGVwcmVjYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRlcHJlY2F0aW9uLWZsYWdzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlICpfRElTQUJMRV9ERVBSRUNBVEVEIGZsYWdzIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwsCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjIyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzJjNmNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjIyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZDcyMjJkNTMwNWYzZGIwMjJlY2EzMWQ4MTA4ZTAyZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjUxZDdlYmY3YTZjMzU5YmUxNGMzZGQ3YTAyMjIxM2U5MzE0ODQ2NTM4MTVlYjEwYjAxMzFiZWY0Yzg5NzllMWMiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCi1GSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgotCi1SUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMWMyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImdub21lLWRlc2t0b3AiCisKK2luaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFmN2M2YTI0M2RmN2EzMzVhMDEwYmRjMDViMzRjYTkzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGZhMWRlNjZhNmE3NTk2M2JmZmM3OWIwMWE2MDQzNGM3MTIzN2Q0NGM1MWJlY2EwOWMwZjcxNGEwMzJkNzg1ZSIKKworU1JDX1VSSSArPSAiZmlsZTovL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAorIgorCitERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnY29uZiB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyIKKworUEFDS0FHRVMgPSsgImxpYmdub21lLWRlc2t0b3AzIgorRklMRVNfbGliZ25vbWUtZGVza3RvcDMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wKi9wbnAuaWRzICR7ZGF0YWRpcn0vZ25vbWUvKnhtbCIKKworUlJFQ09NTUVORFNfbGliZ25vbWUtZGVza3RvcDMgKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YWM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGQyYjlhZDhhODBiZjkzMjBmZTM1YzlhZWU4ZjUyZTU1ZWJkNDBlMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxNDo1NTo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgQUNfQ0FOT05JQ0FMX0hPU1QKKworVGhpcyB3b24ndCB3b3JrIHdoZW4gYnVpbGRpbmcgYWxsYXJjaCAoYW5kIGlzIG9ubHkgdXNlZCB0byBmaW5kIG91dCBpZgordGFyZ2V0IGlzIHdpbmRvd3MpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQ4NTViN2EuLjY5MDhmNTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMsNyArMyw2IEBAIEFDX1BSRVJFUSgyLjUzKQorIAorIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjI0LjBdLAorICAgICAgICAgW2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWFkd2FpdGEtaWNvbi10aGVtZV0pCistQUNfQ0FOT05JQ0FMX0hPU1QKKyBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCisgQUNfQ09ORklHX1NSQ0RJUihbaW5kZXgudGhlbWUuaW5dKQorIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMzhlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIDhkY2Q3M2I0NWE2NjBkYmRjNTYwNjc2ODM1YmE0NmY0OTUzMzRmMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTMgSnVuIDIwMTcgMTg6MTA6MDYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUnVuIGluc3RhbGxhdGlvbiBjb21tYW5kcyBhcyBzaGVsbCBqb2JzCisKK1RoaXMgZ3JlYXRseSBzcGVlZHMgdXAgaW5zdGFsbGF0aW9uIHRpbWUgb24gbXVsdGktY29yZSBzeXN0ZW1zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL2Z1bGxjb2xvci9NYWtlZmlsZS5hbSB8IDMgKystCisgc3JjL3NwaW5uZXIvTWFrZWZpbGUuYW0gICB8IDUgKysrLS0KKyBzcmMvc3ltYm9saWMvTWFrZWZpbGUuYW0gIHwgNyArKysrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZnVsbGNvbG9yL01ha2VmaWxlLmFtIGIvc3JjL2Z1bGxjb2xvci9NYWtlZmlsZS5hbQoraW5kZXggMWM5NDBhNS4uMzk5OGVlNiAxMDA2NDQKKy0tLSBhL3NyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0KK0BAIC05LDkgKzksMTAgQEAgaW5zdGFsbC1kYXRhLWxvY2FsOgorIAkJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZSAmJiBmaW5kIC4gLW5hbWUgIioucG5nImA7IGRvIFwKKyAJCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJCSQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKy0JCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkZmlsZTsgXAorKwkJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlICYgXAorIAkJZG9uZTsgXAorIAlkb25lOworKwl3YWl0CisgCisgIyMgRklYTUUgd2Ugc2hvdWxkIGFkZCBhIHdheSB0byByZW1vdmUgbGlua3MgZ2VuZXJhdGVkIGJ5IGljb24gbWFwcGluZworIHVuaW5zdGFsbC1sb2NhbDoKK2RpZmYgLS1naXQgYS9zcmMvc3Bpbm5lci9NYWtlZmlsZS5hbSBiL3NyYy9zcGlubmVyL01ha2VmaWxlLmFtCitpbmRleCA4NmY0ZDdjLi4zZmFlOGMxIDEwMDY0NAorLS0tIGEvc3JjL3NwaW5uZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9zcGlubmVyL01ha2VmaWxlLmFtCitAQCAtMjQsMTMgKzI0LDE0IEBAIGluc3RhbGwtZGF0YS1sb2NhbDoKKyAJICAgICAgZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZTsgZmluZCAuIC1uYW1lICIqLnBuZyJgOyBkbyBcCisgCQkgICAgICBjb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJICAgICAgJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJICAgICAgJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGZpbGU7IFwKKysJCSAgICAgICQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlICYgXAorIAkgICAgICBkb25lOyBcCisgCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS11cC10by0zMjsgZmluZCAuIC1uYW1lICIqLnN2ZyJgOyBkbyBcCisgCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUtdXAtdG8tMzIvJCRjb250ZXh0OyBcCistCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzIvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS11cC10by0zMi8kJGZpbGU7IFwKKysJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS11cC10by0zMi8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLXVwLXRvLTMyLyQkZmlsZSAmIFwKKyAJZG9uZQorKwl3YWl0CisgCisgdW5pbnN0YWxsLWxvY2FsOgorIAkgICAgICBmb3IgZmlsZSBpbiBgY2QgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzI7IGZpbmQgLiAtbmFtZSAiKi5zdmciYDsgZG8gXAorZGlmZiAtLWdpdCBhL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbSBiL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbQoraW5kZXggMjRhYWM5Yi4uNjFiYTA3MSAxMDA2NDQKKy0tLSBhL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3N5bWJvbGljL01ha2VmaWxlLmFtCitAQCAtMjUsMTggKzI1LDE5IEBAIGluc3RhbGwtZGF0YS1sb2NhbDoKKyAJCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemU7IGZpbmQgLiAtbmFtZSAiKi5wbmciYDsgZG8gXAorIAkJCWNvbnRleHQ9ImBkaXJuYW1lICQkZmlsZWAiOyBcCisgCQkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlOyBcCisrCQkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGZpbGUgJiBcCisgCQlkb25lOyBcCisgCWRvbmUKKyAJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlOyBmaW5kIC4gLW5hbWUgIiouc3ZnImA7IGRvIFwKKyAJCWNvbnRleHQ9ImBkaXJuYW1lICQkZmlsZWAiOyBcCisgCQkkKG1rZGlyX3ApICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS8kJGNvbnRleHQ7IFwKKy0JCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLyQkZmlsZTsgXAorKwkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUvJCRmaWxlICYgXAorIAkJZm9yIHNpemUgaW4gJChzeW1ib2xpY19lbmNvZGVfc2l6ZXMpOyBkbyBcCisgCQkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJCSQoR1RLX0VOQ09ERV9TWU1CT0xJQ19TVkcpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLyQkZmlsZSAkJHNpemUgLW8gJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKysJCQkkKEdUS19FTkNPREVfU1lNQk9MSUNfU1ZHKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJCRzaXplIC1vICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRjb250ZXh0ICYgXAorIAkJZG9uZSBcCisgCWRvbmUKKysJd2FpdAorIAorIHVuaW5zdGFsbC1sb2NhbDoKKyAJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlOyBmaW5kIC4gLW5hbWUgIiouc3ZnImA7IGRvIFwKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNiYzFlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2RlNTFkN2RmY2JjZmEzYjhjZGMzZTVmMGRmOGM3OTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzE4YmY2ZTI2MDg3ZDk4MTlhOTYyYzc3Mjg4YjI5MWVmYWIyNWQwNDE5YjczZDkwOWRkNzcxNzE2YTQ1ZGNiNyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6Ci0gICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgotCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKLQkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKLX0KLQotUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKLQotUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLQotRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKLUZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCi0gICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKLUZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCi0gICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzQwNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNC4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2NjYWMwZDYwMGZmYzkzNmQyYWRmYjgwZTkyNDViYzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NmNzlmZjNiZDM0MDI1NDczN2NlNGQyOGI4N2YwY2NlZTRiMzM1OGNkM2NkNWNkMTFkYzdiNDJmNDFiMjcyYSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6CisgICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgorCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKKwkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKK30KKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCisgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCmluZGV4IDllOWY3MTQuLjkyZmQxMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgpAQCAtMSw1ICsxLDYgQEAKIFNVTU1BUlkgPSAiR05PTUUgY29uZmlndXJhdGlvbiBzeXN0ZW0iCiBTRUNUSU9OID0gIngxMS9nbm9tZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHJvamVjdHMuZ25vbWUub3JnL2djb25mLyIKIExJQ0VOU0UgPSAiTEdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgogCkBAIC0yMiw5ICsyMyw4IEBACiAKICMgRGlzYWJsZSBQb2xpY3lLaXQgYnkgZGVmYXVsdAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLSMgV2UgcmVhbGx5IGRvbid0IHdhbnQgUG9saWN5S2l0IGZvciBuYXRpdmUgb3IgdWNsaWJjCisjIFdlIHJlYWxseSBkb24ndCB3YW50IFBvbGljeUtpdCBmb3IgbmF0aXZlCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2xpYmMtdWNsaWJjID0gIiIKIAogUEFDS0FHRUNPTkZJR1twb2xpY3lraXRdID0gIi0tZW5hYmxlLWRlZmF1bHRzLXNlcnZpY2UsLS1kaXNhYmxlLWRlZmF1bHRzLXNlcnZpY2UscG9sa2l0IgogUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWc9eWVzLCAtLWVuYWJsZS1kZWJ1Zz1taW5pbXVtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjNjYzk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGhlbWVzLXN0YW5kYXJkXzMuMjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKzIgc3RhbmRhcmQgdGhlbWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ25vbWUtdGhlbWVzLXN0YW5kYXJkLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGd0aysiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0NjI0ZGJjZWNhYjdhZGQzMjY3MmFiYWUwMzAzMTRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNDUxNmNkNTliODczYzE4N2MxODk3YzI1YmFjM2I5Y2UyZDMwYTQ3MmYxZmQ3YWU5ZDcxMDVkOTNlMTdkYTUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrMy1lbmdpbmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIE9ubHkgYnVpbGRpbmcgQWR3YWl0YSwgcmVtb3ZlIGhpZ2hjb250cmFzdCBmaWxlcwotICAgICAgICBybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS90aGVtZXMvSGlnaENvbnRyYXN0IFwKLSAgICAgICAgICAgICAgICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMKLX0KLQotIyBUaGVyZSBjb3VsZCBiZSBnbm9tZS10aGVtZS1oaWdoY29udHJhc3QgYXMgd2VsbCBidXQgdGhhdCByZXF1aXJlcwotIyBndGsrMyBhbmQgaW5jbHVkZXMgbG90cyBvZiBpY29ucyAoaXMgYWxzbyBicm9rZW4gd2l0aCBCICE9IFMpLgotUEFDS0FHRVMgKz0gImdub21lLXRoZW1lLWFkd2FpdGEgXAotICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGJnIFwKLSAgICAgICAgICAgICBnbm9tZS10aGVtZS1hZHdhaXRhLWRldsKgXAotICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGFyayBcCi0gICAgICAgICAgICAgIgotCi1GSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhID0gIiR7cHJlZml4fS9zaGFyZS90aGVtZXMvQWR3YWl0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLnNvIgotRklMRVNfZ25vbWUtdGhlbWUtYWR3YWl0YS1kZXYgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2VuZ2luZXMvbGliYWR3YWl0YS5sYSIKLUZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEtZGJnID0gIiR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzLy5kZWJ1Zy9saWJhZHdhaXRhLnNvIgotCi1GSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhLWRhcmsiCi1SREVQRU5EU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZWUyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjMuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHVEsrMiBzdGFuZGFyZCB0aGVtZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbm9tZS10aGVtZXMtc3RhbmRhcmQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZSIKKworTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgorCitERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjUxYzM2MmIxNTdiNjQwNzMwM2Q0NGY5M2MzMWVlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjFkYzg3YzUyMjYxY2ZkNWI5NGQ2NWU4ZmZkOTIzZGRlYjVkMzk0NDU2MmY4NDk0MmVlZWIxOTdhYjhhYjU2YSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGszLWVuZ2luZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgT25seSBidWlsZGluZyBBZHdhaXRhLCByZW1vdmUgaGlnaGNvbnRyYXN0IGZpbGVzCisgICAgICAgIHJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9IaWdoQ29udHJhc3QgXAorICAgICAgICAgICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucworCisJIyBUaGUgbGlidG9vbCBhcmNoaXZlIGZpbGUgaXMgdW5uZWVkZWQgd2l0aCBzaGFyZWQgbGlicyBvbiBtb2Rlcm4gTGludXgKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzL2xpYmFkd2FpdGEubGEKK30KKworIyBUaGVyZSBjb3VsZCBiZSBnbm9tZS10aGVtZS1oaWdoY29udHJhc3QgYXMgd2VsbCBidXQgdGhhdCByZXF1aXJlcworIyBndGsrMyBhbmQgaW5jbHVkZXMgbG90cyBvZiBpY29ucyAoaXMgYWxzbyBicm9rZW4gd2l0aCBCICE9IFMpLgorUEFDS0FHRVMgKz0gImdub21lLXRoZW1lLWFkd2FpdGEgXAorICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGFyayBcCisgICAgICAgICAgICAgIgorCitGSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhID0gIiR7cHJlZml4fS9zaGFyZS90aGVtZXMvQWR3YWl0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLnNvIgorCitGSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhLWRhcmsiCitSREVQRU5EU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSIKKworIyBnbm9tZS10aGVtZXMtc3RhbmRhcmQgaXMgZW1wdHkgYW5kIGRvZXNuJ3QgZXhpc3QKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5ZmM1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41MC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS41MC8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWFmOGQ3MjRmMjVkMGM5Y2ZiZTZkZjQxYjc3ZTVkYzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM2NTk3YzY2NmY1NDNjNzBlZjNkN2M4OTNhYjA1Mjk2OGFmYWU2MjBlZmRjMDgwYzM2NjU3ZjQyMjYzMzdjNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24tZGF0YScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItLWVuYWJsZS1kb2N0b29sLC0tZGlzYWJsZS1kb2N0b29sLHB5dGhvbjMtbWFrbywiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKLX0KLQotIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQgCi0jIHRvIGJ1aWxkIGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIGFsbCBvdGhlciBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLX0KLQotIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgotCi0jIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQotIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLSMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCi0jIHRlc3RzdWl0ZXMuCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKLQotIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKLSMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKLSAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAotICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCi19Ci0KLSMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKLSMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCi1weXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7Ci0gICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmU3MWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpAQCAtMCwwICsxLDE4OCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjUyLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNDE1NzA3Mzk5MWY5ZWViMGVkOTUzMzUxYjY1ZWI2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWQwYzM4ZDUyZmUxYWE2ZmM0ZGVmMGM4NjhmZTQ4MWNiODdiNTMyZmM2OTQ3NTZiMjZkNmNmYWIyOWZhZmY0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworREVQRU5EU19hcHBlbmQgPSAiIGxpYmZmaSB6bGliIGdsaWItMi4wIHB5dGhvbjMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCisjIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCisjIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KKyMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgorIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKKyMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQorICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKKyAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgorICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCcubGlicycsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKKyMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0CitleHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKKworJHFlbXVfYmluYXJ5ICJcJEAiCitpZiBbIFwkPyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAiSWYgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2UgaXMgYWJvdXQgbWlzc2luZyAuc28gbGlicmFyaWVzLCB0aGVuIHNldHRpbmcgdXAgR0lSX0VYVFJBX0xJQlNfUEFUSCBpbiB0aGUgcmVjaXBlIHNob3VsZCBoZWxwLiIKKyAgICBlY2hvICIodHlwaWNhbGx5IGxpa2UgdGhpczogR0lSX0VYVFJBX0xJQlNfUEFUSD1cIiQiIntCfS9zb21ldGhpbmcvLmxpYnNcIiApIgorICAgIGV4aXQgMQorZmkKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1zY2FubmVyIGl0c2VsZiwgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcworICAgICAgICAjIGZvciBnbGliLWJhc2VkIHBhY2thZ2VzLiBUaGlzIHdyYXBwZXIgY2FsbHMgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIHRoZSBzY2FubmVyLCBhbmQgdGVsbHMgaXQgdG8gdXNlCisgICAgICAgICMgYSBxZW11IHdyYXBwZXIgZm9yIHJ1bm5pbmcgdHJhbnNpZW50IHRhcmdldCBiaW5hcmllcyBwcm9kdWNlZCBieSB0aGUgc2Nhbm5lciwgYW5kIGFuIGluY2x1ZGUgZGlyZWN0b3J5IAorICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCisjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCitleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworZy1pci1zY2FubmVyIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKKyMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCisjIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAorIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCit9CisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCisjIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgorIyB0ZXN0c3VpdGVzLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCisKKyMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11CisjIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0CisgICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYworfQorCisjIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCisjIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgorcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgeworICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKwlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQorCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAorCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0CisJZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWNobW9kIDc1NSAkZGVzdAorfQorCisjIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKK2dpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCmluZGV4IDI3ZGE4NDQuLjBhMzU3ZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMTAsNyArMTAsMTEgQEAKIAogTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ3RrLWltbW9kdWxlcy1jYWNoZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyBndGstaW1tb2R1bGVzLWNhY2hlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmVyc2lvbnMgPj0gMy45MCBhcmUgZGV2ZWxvcG1lbnQgdmVyc2lvbnMsIG90aGVyd2lzZSBsaWtlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW15cZFwuXSg/UDxwdmVyPjNcLihbMS04XT9bMDI0NjhdKSsoXC5cZCspKylcLnRhciIKKwogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKICMgVGhpcyBzaG91bGQgYmUgaW4gYXV0b3Rvb2xzLmJiY2xhc3MsIGJ1dCB1bnRpbCBzb21ldGhpbmcgZWxzZXMgdXNlcyBpdCBwdXR0aW5nCkBAIC0zNCw3ICszOCw2IEBACiAgICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIiwgIi0tZGlzYWJsZS1ndGstZG9jIiwgZCl9IFwKICAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dkay8ubGlicyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKaW5kZXggZWFmNmFlYy4uOWNkZWUwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTk0Miw4ICs5NDIsOCBAQAogKwlnZGtnZWFycwogK2VuZGlmCiArCi0gaWYgVVNFX1gxMQotIG5vaW5zdF9QUk9HUkFNUyArPSB0ZXN0ZXJyb3JzCisgaWYgVVNFX1dBWUxBTkQKKyBub2luc3RfUFJPR1JBTVMgKz0gdGVzdGZvcmVpZ24KICBlbmRpZgogZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKIGluZGV4IDBiM2E1MTkuLjA3YjA5NmYgMTAwNjQ0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTU0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIGd0ayszLmluYworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYzU3ZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNGZiMzlhODI5ZTQ0MjViM2ZhMDVhZGJlN2Y1MmZlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzI1NGE4OGRmNWMxN2U5NjA5Y2VlOWU4NDhjM2QwMTA0NTEyNzA3ZWRhZDRjM2I0ZjI1NmIxMzFmOGQzYWYxIgotCi1TID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyZDgyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjgzNDE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJOYXRpdmUgaWNvbiB1dGlscyBmb3IgR1RLKyIKLURFU0NSSVBUSU9OID0gImd0ay11cGRhdGUtaWNvbi1jYWNoZSBhbmQgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgYnVpbHQgZnJvbSBHVEsrIG5hdGl2ZWx5LCBmb3IgYnVpbGQgdGltZSBhbmQgb24taG9zdCBwb3N0aW5zdCBzY3JpcHQgZXhlY3V0aW9uLiIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgZ2RrLXBpeGJ1Zi1uYXRpdmUgbGlicnN2Zy1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgZmlsZTovL1JlbW92ZS1HZGstZGVwZW5kZW5jeS1mcm9tLWd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImI0ZmIzOWE4MjllNDQyNWIzZmEwNWFkYmU3ZjUyZmVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MjU0YTg4ZGY1YzE3ZTk2MDljZWU5ZTg0OGMzZDAxMDQ1MTI3MDdlZGFkNGMzYjRmMjU2YjEzMWY4ZDNhZjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgotCi1TID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcgbmF0aXZlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMTgwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitBbGxvdyB0aGUgdGVzdHMgdG8gYmUgZXhwbGljaXRseSBkaXNhYmxlZCB0byBhdm9pZCBmbG9hdGluZyBkZXBlbmRuZWN5Citpc3N1ZXMuIFRoaXMgaXMgbm90IHJlYWxseSBhbiBpc3N1ZSB3aXRoIFJTUyBidXQgaXMgb24gcHJldmlvdXMgcmVsZWFzZXMuCisKK1JQIDIwMTcvNi8yNworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrLWRvYy0xLjI1Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3RrLWRvYy0xLjI1L2NvbmZpZ3VyZS5hYworQEAgLTE2MSw2ICsxNjEsMTEgQEAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgCWZpCisgZmkKKyAKKytBQ19BUkdfRU5BQkxFKFt0ZXN0c10sCisrCUFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS10ZXN0c10sCisrCVtlbmFibGUgdGVzdHMgKGRlZmF1bHQ9eWVzKV0pLCwKKysJW2VuYWJsZV90ZXN0cz0ieWVzIl0pCisrCisgZG5sIGlmIGdsaWIgaXMgYXZhaWxhYmxlIHdlIGNhbiBlbmFibGUgdGhlIHRlc3RzCisgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAorIAlbCWdsaWJfcHJlZml4PSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgorQEAgLTE3MSw2ICsxNzYsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPgorIAkJYnVpbGRfdGVzdHM9Im5vIgorIAldCisgKQorK2lmIHRlc3QgIngkZW5hYmxlX3Rlc3RzIiAhPSAieHllcyI7IHRoZW4KKysJZ3RrX2RvY191c2VfbGlidG9vbD0ibm8iCisrCWJ1aWxkX3Rlc3RzPSJubyIKKytmaQorKworIEFNX0NPTkRJVElPTkFMKEdUS19ET0NfVVNFX0xJQlRPT0wsIHRlc3QgLW4gIiRMSUJUT09MIiAtYSB4JGd0a19kb2NfdXNlX2xpYnRvb2wgPSB4eWVzICkKKyBkbmwgdGhpcyBlbmFibGUgdGhlIHJ1bGUgaW4gdGVzdC9NYWtlZmlsZS5hbQorIEFNX0NPTkRJVElPTkFMKEJVSUxEX1RFU1RTLCB0ZXN0IHgkYnVpbGRfdGVzdHMgPSB4eWVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKaW5kZXggN2RlMzZhZTkuLmUwZWI5OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgpAQCAtMTYsNiArMTYsNyBAQAogIyBob3BlZnVsbHkgbm8gb25lIG1pbmRzIGJlY2F1c2UgaXRzIHNjcmlwdHMgYXJlIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQKICMgYW5kIHNob3VsZG4ndCBiZSB1c2VkIG9uIHRhcmdldHMuCiBQQUNLQUdFQ09ORklHW3dvcmtpbmctc2NyaXB0c10gPSAiLS13aXRoLWhpZ2hsaWdodD1zb3VyY2UtaGlnaGxpZ2h0LC0td2l0aC1oaWdobGlnaHQ9bm8sbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIHNvdXJjZS1oaWdobGlnaHQtbmF0aXZlIHBlcmwtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGdsaWItMi4wIgogCiAjIFdlIGNhbm5vdCB1c2UgaG9zdCBwZXJsLCBiZWNhdXNlIGl0IG1heSBiZSB0b28gb2xkIGZvciBndGstZG9jCiBFWFRSQU5BVElWRVBBVEggKz0gInBlcmwtbmF0aXZlIgpAQCAtMjMsNiArMjQsNyBAQAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODY5YmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiSlNPTi1HTGliIGltcGxlbWVudHMgYSBmdWxsIEpTT04gcGFyc2VyIHVzaW5nIEdMaWIgYW5kIEdPYmplY3QiCi1ERVNDUklQVElPTiA9ICJVc2UgSlNPTi1HTGliIGl0IGlzIHBvc3NpYmxlIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZSB2YWxpZCBKU09OXAotIGRhdGEgc3RydWN0dXJlcywgdXNpbmcgYSBET00tbGlrZSBBUEkuIEpTT04tR0xpYiBhbHNvIG9mZmVycyBHT2JqZWN0IFwKLWludGVncmF0aW9uLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBHT2JqZWN0IFwKLWluc3RhbmNlcyB0byBhbmQgZnJvbSBKU09OIGRhdGEgdHlwZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0pzb25HbGliIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMxZGFlZmI4ZDBmYjU5NjEyYWYwYzA3MmM4YWFiYjU4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZWExMjhhYjUyYTgyNGZjZDA2ZTU0NDhmYmIyYmQ4ZDlhMTM3NDBkNTFjNjZkNDQ1ODI4ZWRiYTcxMzIxYTYyMSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4gLS13aXRoLXhtbC1jYXRhbG9nPSR7U1RBR0lOR19FVENESVJfTkFUSVZFfS94bWwvY2F0YWxvZy54bWwsIC0tZGlzYWJsZS1tYW4sIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNWQzODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKK0RFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCisgZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAoraW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAoraW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmYzMWU3ZDA1OTRkZjQ0MzE4ZTEyZmFjZGEzZDA4NmUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZDU1YTkwMzdkMzllN2ExMGYwZGI2NDMwOWY1ZjAyNjVmYTMyZWM5NjJiZjg1MDY2MDg3YjgzYTI4MDdmNDBhIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCmluZGV4IGFlMGYxYzcuLmFkNjc5MjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJHT2JqZWN0IHdyYXBwZXIgZm9yIGxpYnVkZXYiCi0KK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGliZ3VkZXYiCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5MTZjMTBjNTFlYzYxMTMxZTI0NGMzOTM2YmJiMmUwYyIKIFNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNiMWVmOTlkNGE4OTg0YzM1MDQ0MTAzZDhkZGZjM2NjNTJjODAwMzVjMzZhYmFiMmJjYzVlMzUzMmUwNjNmOTYiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlibm90aWZ5L2xpYm5vdGlmeV8wLjcuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlibm90aWZ5L2xpYm5vdGlmeV8wLjcuNy5iYgppbmRleCAyYWIyZjFmLi42YzI5OWJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYm5vdGlmeS9saWJub3RpZnlfMC43LjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJub3RpZnkvbGlibm90aWZ5XzAuNy43LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzZW5kaW5nIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhIG5vdGlmaWNhdGlvbiBkYWVtb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZyIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTI0M2M4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImY0NzRmZTM3MTc3YTJiZjgwNTA3ODdkZjIwNDYwOTVjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDQ4YmNmNmIwM2ZhOThmMDdkZjEwMzMyZmI0OWQ4YzAxMDc4NmRkY2E2YWIzNGNiYmEyMTc2ODRmNTMzZmYyZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyIKLQotUElYQlVGX1BBQ0tBR0VTID0gImxpYnJzdmctZ3RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMGRjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciByZW5kZXJpbmcgU1ZHIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlicnN2Zy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcnN2Zy5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MjQ7bWQ1PTIwYjQxMTNjNDkwOWJiZjBkNjdlMDA2Nzc4MzAyYmM2IgorCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAiY2Fpcm8gZ2RrLXBpeGJ1ZiBnbGliLTIuMCBsaWJjcm9jbyBsaWJ4bWwyIHBhbmdvIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlYWE1YzhhOGJiZTI2MDBhYjUxOTRjMGQzYjFiNjIxYiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJmYzhjNDg4Yzg5YzFlNzIxMmM0NzhiZWI5NWM0MWI0NDcwMTYzNjEyNWEzZTZkYWI0MTE4N2YxNDg1YjU2NGMiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvbGlicnN2Zy50aHVtYm5haWxlciIKKworUElYQlVGX1BBQ0tBR0VTID0gImxpYnJzdmctZ3RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYwppbmRleCA4ZTFlMmUxLi4yMGUwZDJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYwpAQCAtMzAsNiArMzAsNyBAQAogUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQ9eWVzLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKIFBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCiBQQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKIAogI2NoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cyAKIHJlcXVpcmUgY2Fpcm8tZnB1LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDJhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAwNDI0MjFlOWUzZDI2NmFkMGJiNzgwNTEzMjA0MWVmNTFhZDMyMzRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWRyaWFuIEpvaG5zb24gPGFqb2huc29uQHJlZG5lb24uY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAyMjo1MjozNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjYWlybzogRml4IENWRS0yMDE3LTk4MTQKKworVGhlIGJ1ZyBoYXBwZW5zIGJlY2F1c2UgaW4gc29tZSBzY2VuYXJpb3MgdGhlIHZhcmlhYmxlIHNpemUgY2FuCitoYXZlIGEgdmFsdWUgb2YgMCBhdCBsaW5lIDEyODguIEFuZCBtYWxsb2MoMCkgaXMgbm90IHJldHVybmluZworTlVMTCBhcyBzb21lIHBlb3BsZSBjb3VsZCBleHBlY3Q6CisKKyAgICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDczMTU3L3plcm8tc2l6ZS1tYWxsb2MKKworbWFsbG9jKDApIHJldHVybnMgdGhlIHNtYWxsZXN0IGNodW5rIHBvc3NpYmxlLiBTbyB0aGUgbGluZSAxMjkwCit3aXRoIHRoZSByZXR1cm4gaXMgbm90IGV4ZWN1dGUuIEFuZCB0aGUgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoCithbiBpbnZhbGlkIG1hcC4KKworU2luY2UgdGhlIHNpemUgaXMgMCB0aGUgdmFyaWFibGUgbWFwIGlzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHkKK2F0IGxvYWRfdHJ1dHlwZV90YWJsZS4gU28sIGxhdGVyIHdoZW4gdGhlIHZhcmlhYmxlIG1hcCBpcyBhY2Nlc3NlZAorcHJldmlvdXMgdmFsdWVzIGZyb20gYSBmcmVlZCBjaHVuayBhcmUgdXNlZC4gVGhpcyBjb3VsZCBhbGxvd3MgYW4KK2F0dGFja2VyIHRvIGNvbnRyb2wgdGhlIHZhcmlhYmxlIG1hcC4KKworVGhpcyBwYXRjaCBoYXZlIG5vdCBtZXJnZSBpbiB1cHN0cmVhbSBub3cuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU0N10KK0NWRTogQ1ZFLTIwMTctOTgxNAorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYyBiL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYworaW5kZXggZTM0NDlhMC4uZjc3ZDExYyAxMDA2NDQKKy0tLSBhL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYworKysrIGIvc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jCitAQCAtMTI4NSw3ICsxMjg1LDcgQEAgX2NhaXJvX3RydWV0eXBlX3JldmVyc2VfY21hcCAoY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqc2NhbGVkX2ZvbnQsCisgCXJldHVybiBDQUlST19JTlRfU1RBVFVTX1VOU1VQUE9SVEVEOworIAorICAgICBzaXplID0gYmUxNl90b19jcHUgKG1hcC0+bGVuZ3RoKTsKKy0gICAgbWFwID0gbWFsbG9jIChzaXplKTsKKysgICAgbWFwID0gX2NhaXJvX21hbGxvYyAoc2l6ZSk7CisgICAgIGlmICh1bmxpa2VseSAobWFwID09IE5VTEwpKQorIAlyZXR1cm4gX2NhaXJvX2Vycm9yIChDQUlST19TVEFUVVNfTk9fTUVNT1JZKTsKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWFhZDJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYKQEAgLTAsMCArMSwyMiBAQAorQ2Fpcm86IEZpeCBEZW5pYWwtb2YtU2VydmljZSBBdHRhY2sgZHVlIHRvIExvZ2ljYWwgUHJvYmxlbSBpbiBQcm9ncmFtCisKK2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc2MworCitDVkU6IENWRS0yMDE3LTc0NzUKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CisKK0luZGV4OiBjYWlyby0xLjE1LjQvc3JjL2NhaXJvLWZ0LWZvbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhaXJvLTEuMTUuNC5vcmlnL3NyYy9jYWlyby1mdC1mb250LmMKKysrKyBjYWlyby0xLjE1LjQvc3JjL2NhaXJvLWZ0LWZvbnQuYworQEAgLTExNDksNyArMTE0OSw3IEBAIF9nZXRfYml0bWFwX3N1cmZhY2UgKEZUX0JpdG1hcAkJICAgICAqYmkKKyAgICAgd2lkdGggPSBiaXRtYXAtPndpZHRoOworICAgICBoZWlnaHQgPSBiaXRtYXAtPnJvd3M7CisgCistICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKSB7CisrICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwIHx8IGJpdG1hcC0+YnVmZmVyID09IE5VTEwpIHsKKyAJKnN1cmZhY2UgPSAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV90ICopCisgCSAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSAoTlVMTCwgZm9ybWF0LCAwLCAwLCAwKTsKKyAJcmV0dXJuICgqc3VyZmFjZSktPmJhc2Uuc3RhdHVzOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZGRkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKQEAgLTAsMCArMSw0NiBAQAorcmVxdWlyZSBjYWlyby5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCisKK1NSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NmY1ZjRkMGI0NDM5ZmMzNzkyZmQzNDUyYjdiMTJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlODc4Nzg2NThmMmM5OTUxYTE0ZmM2NDExNGQ0OTU4YzBlNjVhYzQ3NTMwYjhhYzMwNzhiMmNlNDFiNjZhMDkiCisKK1BBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgorCitTVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKK0RFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKK3ZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCitvZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKK3dpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCitvcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAorZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAorRXh0ZW5zaW9uLiIKKworU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgorREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKKworU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgorREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCitDYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKK3RvIHJlcGxheSByZW5kZXJpbmcuIgorCitERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgorRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgorRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKK0ZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNjNzRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotcmVxdWlyZSBjYWlyby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlZjBkYjJlYWNiMjcxYzc0ZjhhM2ZkODc4MjJhYTk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxZjJkOThhZTlhNDExMTU2NGY2ZGU0ZTAxM2Q2MzljZjc3MTU1YmFmMjU1NjU4MjI5NWEwZjAwYTliYzVlMjAiCi0KLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgotCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKLQotU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgotREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKLQotU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgotREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCi1DYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKLXRvIHJlcGxheSByZW5kZXJpbmcuIgotCi1ERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgotRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgotRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZhMWNmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBjbHV0dGVyLTEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIwNjVlOWNhNTNkMWY2YmMxZWMyNmFlYjI3MzM4YmI3IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjc1MTRlNzgyNGIzZmViNDcyMzE2NDA4NGIzNmQ2Y2UxYWU0MWNiM2E5ODk3ZTlmMWE1NmM4MzM0OTkzY2UwNiIKLVNSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4taW5zdGFsbGVkLXRlc3RzLXdpdGgtdGFwLW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtY2x1dHRlci50eXBlcy1hcy1pdC1pcy1idWlsZC1jb25maWd1cmF0aW9uLXNwLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGIwNTAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMi5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGNsdXR0ZXItMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTAzNDgyY2JhY2Y3MzVlY2E4Yzk5NmYyMTBhMjFlZTUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlNzIzMzMxNDk4MzA1NWU5MDE4Zjk0ZjU2ODgyZTI5ZTdmYzM0ZDhkMzVkZTAzMDc4OWZkY2Q5YjJkMGUyZTU2IgorU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtZXhhbXBsZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1pbnN0YWxsZWQtdGVzdHMtd2l0aC10YXAtb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1jbHV0dGVyLnR5cGVzLWFzLWl0LWlzLWJ1aWxkLWNvbmZpZ3VyYXRpb24tc3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKaW5kZXggNGM4Nzc5OC4uMjZhZTkxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKQEAgLTE1LDMgKzE1LDcgQEAKIEZJTEVTXyR7UE59ICAgICAgICAgICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9saWIqLnNvIgogRklMRVNfJHtQTn0tZGV2ICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCiBGSUxFU18ke1BOfS1leGFtcGxlcyAgPSAiJHtiaW5kaXJ9L3ZpZGVvLXBsYXllciAke2JpbmRpcn0vdmlkZW8tc2luayIKKworIyBOZWVkcyB0byBiZSBkaXNhYmxlIGR1ZSB0byBhIGRlcGVuZGVuY3kgb24gZ3N0cmVhbWVyLXBsdWdpbnMgaW50cm9zcGVjdGlvbiBmaWxlcworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjQgPSAiIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uICIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE3N2M5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBjbHV0dGVyLWdzdC0zLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NsdXR0ZXItZ3N0L2NsdXR0ZXItZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OTViYWFjYmExOTRlODE0YzExMGVhM2JkZjI1ZGRiZjQiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg4ZWVhMmRkNWZjNDM1N2I1YjE4ZjFkZmVlZDU2YzYyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZjFmYzU3ZmIzMmVhN2UzZDkyMzRiNThkYjM1ZWI5ZWYzMDI4Y2YwYjI2NmQ4NTIzNWY5NTllZGMwZmUzZGZkNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1ZTBhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI0LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBjbHV0dGVyLWdzdC0zLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NsdXR0ZXItZ3N0L2NsdXR0ZXItZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OTViYWFjYmExOTRlODE0YzExMGVhM2JkZjI1ZGRiZjQiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjNlMTQ1ZTI0YmIzYzM0MGVlZWRkYWZkMThlZmU1NDdkIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTlmMWM4N2Q4ZjRjNDcwNjJlOTUyZmI4MDA4NzA0Zjg5NDJjZjJkNmYyOTA2ODhmM2Y3ZDEzZTgzNTc4Y2M2YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40Ljc1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njk2M2Q0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIGxpYnBjaWFjY2VzcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2IwNTg5MTIyZWM0YjhkNWRmYjllNDMwYTIxZjBiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDVhNTAwZWVmNDEyY2MyODdkMTIyNjhlZWQ3OWQ1NzFlMjYyZDQ5NTdhMmVjOTI1ODA3M2YzMDU5ODUwNTRmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbWFucGFnZXMKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2Fpcm8tdGVzdHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3VuaXQgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vbWFwLWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1ldG5hdml2LWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLXRlc3QtcHJvZ3JhbXMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAotICAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCi0gICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1SUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCi1GSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgotRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKLUZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKLUZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgotRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCi1GSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKLUZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qIgotRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Y2I3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgorCitTUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjIzODAwOTUzZWQ3NTY0OTg4ODcyZTFlOGM2MWZkZTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTUyNjY5ZGE2MGVhZDYyNTQ4YTM1YmM0MzBhYWZiNmMyZDhkZDIxZWM5ZGJhM2E5MGY5NmVmZjVmZTM2ZDYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcworCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCisgICAgICAgICAgICAgICAgIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKKyAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKK0ZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCitGSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgorRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgorRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCitGSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKK0ZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgorRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCitGSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWQ3MTcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnLzAwMDEtQXZvaWQtY29uZmxpY3RzLXdpdGgtaW50ZWdlci13aWR0aC1tYWNyb3MtZnJvbS1UUy0xOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gMjBjZGRjODI0YzY1MDFjMjA4MmNhYzQxYjE2MmMzNGNkNWZjYzUzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDExIERlYyAyMDE2IDE0OjMyOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGNvbmZsaWN0cyB3aXRoIGludGVnZXIgd2lkdGggbWFjcm9zIGZyb20gVFMKLSAxODY2MS0xOjIwMTQKLQotZ2xpYmMgMi4yNSsgaGFzIG5vdyBkZWZpbmVkIHRoZXNlIG1hY3JvcyBpbiA8bGltaXRzLmg+Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD01YjE3ZmQwZGE2MmJmOTIzY2I2MWQxYmI3YjA4Y2YyZTFmMWY5YzFhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBmb250Y29uZmlnL2ZvbnRjb25maWcuaCB8IDIgKy0KLSBzcmMvZmNvYmpzLmggICAgICAgICAgICB8IDIgKy0KLSBzcmMvZmNvYmpzaGFzaC5ncGVyZiAgICB8IDIgKy0KLSBzcmMvZmNvYmpzaGFzaC5oICAgICAgICB8IDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGZvbnRjb25maWctMi4xMi4xL2ZvbnRjb25maWcvZm9udGNvbmZpZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjEyLjEub3JpZy9mb250Y29uZmlnL2ZvbnRjb25maWcuaAotKysrIGZvbnRjb25maWctMi4xMi4xL2ZvbnRjb25maWcvZm9udGNvbmZpZy5oCi1AQCAtMTI4LDcgKzEyOCw4IEBAIHR5cGVkZWYgaW50CQlGY0Jvb2w7Ci0gI2RlZmluZSBGQ19VU0VSX0NBQ0hFX0ZJTEUJICAgICIuZm9udHMuY2FjaGUtIiBGQ19DQUNIRV9WRVJTSU9OCi0gCi0gLyogQWRqdXN0IG91dGxpbmUgcmFzdGVyaXplciAqLwotLSNkZWZpbmUgRkNfQ0hBUl9XSURUSAkgICAgImNoYXJ3aWR0aCIJLyogSW50ICovCi0rI2RlZmluZSBGQ19DSEFSV0lEVEgJICAgICJjaGFyd2lkdGgiCS8qIEludCAqLwotKyNkZWZpbmUgRkNfQ0hBUl9XSURUSAkgICAgRkNfQ0hBUldJRFRICi0gI2RlZmluZSBGQ19DSEFSX0hFSUdIVAkgICAgImNoYXJoZWlnaHQiLyogSW50ICovCi0gI2RlZmluZSBGQ19NQVRSSVgJICAgICJtYXRyaXgiICAgIC8qIEZjTWF0cml4ICovCi0gCi1JbmRleDogZm9udGNvbmZpZy0yLjEyLjEvc3JjL2Zjb2Jqcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjEyLjEub3JpZy9zcmMvZmNvYmpzLmgKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzLmgKLUBAIC01MSw3ICs1MSw3IEBAIEZDX09CSkVDVCAoRFBJLAkJCUZjVHlwZURvdWJsZSwJTlVMTCkKLSBGQ19PQkpFQ1QgKFJHQkEsCQlGY1R5cGVJbnRlZ2VyLAlOVUxMKQotIEZDX09CSkVDVCAoU0NBTEUsCQlGY1R5cGVEb3VibGUsCU5VTEwpCi0gRkNfT0JKRUNUIChNSU5TUEFDRSwJCUZjVHlwZUJvb2wsCU5VTEwpCi0tRkNfT0JKRUNUIChDSEFSX1dJRFRILAkJRmNUeXBlSW50ZWdlciwJTlVMTCkKLStGQ19PQkpFQ1QgKENIQVJXSURUSCwJCUZjVHlwZUludGVnZXIsCU5VTEwpCi0gRkNfT0JKRUNUIChDSEFSX0hFSUdIVCwJCUZjVHlwZUludGVnZXIsCU5VTEwpCi0gRkNfT0JKRUNUIChNQVRSSVgsCQlGY1R5cGVNYXRyaXgsCU5VTEwpCi0gRkNfT0JKRUNUIChDSEFSU0VULAkJRmNUeXBlQ2hhclNldCwJRmNDb21wYXJlQ2hhclNldCkKLUluZGV4OiBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5ncGVyZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZvbnRjb25maWctMi4xMi4xLm9yaWcvc3JjL2Zjb2Jqc2hhc2guZ3BlcmYKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5ncGVyZgotQEAgLTQ0LDcgKzQ0LDcgQEAgaW50IGlkOwotICJyZ2JhIixGQ19SR0JBX09CSkVDVAotICJzY2FsZSIsRkNfU0NBTEVfT0JKRUNUCi0gIm1pbnNwYWNlIixGQ19NSU5TUEFDRV9PQkpFQ1QKLS0iY2hhcndpZHRoIixGQ19DSEFSX1dJRFRIX09CSkVDVAotKyJjaGFyd2lkdGgiLEZDX0NIQVJXSURUSF9PQkpFQ1QKLSAiY2hhcmhlaWdodCIsRkNfQ0hBUl9IRUlHSFRfT0JKRUNUCi0gIm1hdHJpeCIsRkNfTUFUUklYX09CSkVDVAotICJjaGFyc2V0IixGQ19DSEFSU0VUX09CSkVDVAotSW5kZXg6IGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianNoYXNoLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmb250Y29uZmlnLTIuMTIuMS5vcmlnL3NyYy9mY29ianNoYXNoLmgKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5oCi1AQCAtMjg0LDcgKzI4NCw3IEBAIEZjT2JqZWN0VHlwZUxvb2t1cCAocmVnaXN0ZXIgY29uc3QgY2hhcgotICAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQzLEZDX0NIQVJTRVRfT0JKRUNUfSwKLSAgICAgICB7LTF9LAotICNsaW5lIDQ3ICJmY29ianNoYXNoLmdwZXJmIgotLSAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQ1LEZDX0NIQVJfV0lEVEhfT0JKRUNUfSwKLSsgICAgICB7KGludCkobG9uZykmKChzdHJ1Y3QgRmNPYmplY3RUeXBlTmFtZVBvb2xfdCAqKTApLT5GY09iamVjdFR5cGVOYW1lUG9vbF9zdHI0NSxGQ19DSEFSV0lEVEhfT0JKRUNUfSwKLSAjbGluZSA0OCAiZmNvYmpzaGFzaC5ncGVyZiIKLSAgICAgICB7KGludCkobG9uZykmKChzdHJ1Y3QgRmNPYmplY3RUeXBlTmFtZVBvb2xfdCAqKTApLT5GY09iamVjdFR5cGVOYW1lUG9vbF9zdHI0NixGQ19DSEFSX0hFSUdIVF9PQkpFQ1R9LAotICNsaW5lIDU1ICJmY29ianNoYXNoLmdwZXJmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIwNjZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBmb250IGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZvbnRjb25maWcgaXMgYSBmb250IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YXRpb24gbGlicmFyeSwgd2hpY2ggXAotZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBYIFdpbmRvdyBTeXN0ZW0uIEl0IGlzIGRlc2lnbmVkIHRvIGxvY2F0ZSBcCi1mb250cyB3aXRoaW4gdGhlIHN5c3RlbSBhbmQgc2VsZWN0IHRoZW0gYWNjb3JkaW5nIHRvIHJlcXVpcmVtZW50cyBcCi1zcGVjaWZpZWQgYnkgYXBwbGljYXRpb25zLiBcCi1Gb250Y29uZmlnIGlzIG5vdCBhIHJhc3Rlcml6YXRpb24gbGlicmFyeSwgbm9yIGRvZXMgaXQgaW1wb3NlIGEgXAotcGFydGljdWxhciByYXN0ZXJpemF0aW9uIGxpYnJhcnkgb24gdGhlIGFwcGxpY2F0aW9uLiBUaGUgWC1zcGVjaWZpYyBcCi1saWJyYXJ5ICdYZnQnIHVzZXMgZm9udGNvbmZpZyBhbG9uZyB3aXRoIGZyZWV0eXBlIHRvIHNwZWNpZnkgYW5kIFwKLXJhc3Rlcml6ZSBmb250cy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZm9udGNvbmZpZy5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWZvbnRjb25maWciCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlICYgTUlUICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03YTA0NDllOWJjNTM3MDQwMmE5NGMwMDIwNGJlY2EzZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNmcmVldHlwZS5jO2VuZGxpbmU9NDU7bWQ1PTVkOTUxM2UzMTk2YTFmYmZkZmE5NDA1MWMwOWRmYzg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2NhY2hlLmM7YmVnaW5saW5lPTEzNjA7ZW5kbGluZT0xMzc1O21kNT0wMzI2Y2ZlYjRhNzMzM2RkNGRkMjVmYmJjNGI5ZjI3ZiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImV4cGF0IGZyZWV0eXBlIHpsaWIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNlNTVlNTI1YzM3MTQ3ZWVlMTRjYzJkZTZjYzA5ZjZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5ZjQyZDAzOTQ5Zjk0OGEzYTRmNzYyMjg3ZGJjMTZlNTNhOTI3YzkxYTA3ZWU2NDIwN2ViZDkwYTllNWUyOTIiCi0KLVBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgotRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi0jIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKLVJQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1ERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcwotCi1GT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgotCi0jIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKLSMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCi1GT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNThiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCitkb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKK2ZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKK3NwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKK0ZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCitwYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKK2xpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAorcmFzdGVyaXplIGZvbnRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2NztlbmRsaW5lPTEzODI7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNGZiMDFmYzNmNDE3NjBjNDFjNjllMzdjYzc4NGI2NTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ1YTZhNjYzZjRjNGEwMGUxOTY1MjM5MDI2MjY2NTRkZDBjNGE3ODY4NmNiYzZlNDcyZjMzOGU1MGZkZjgwNiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODAKKyAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgorfQorCitQQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKK0ZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKKworIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCitSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcmVsYXRpdmVfc3ltbGlua3MKKworRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKKworIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCisjIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQorRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDRmODM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjMyMzAxMTBlMGNhYjc3N2UwZGY3NjMxODM3YWMzNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2EzYmIyYzRlMTVmZmI0MzNmMjAzMmY1MGE1YjVhOTI1NTgyMDY4MjJlMjJiZmU4Y2JlMzM5YWY0YWE4MmY4OCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlODhlODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjQxM2FjM2VhZjUwOGFkYTAxOWM2Mzk1OWVhODFhOTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNjNjAzZWQ4NGMzYzI0OTVmOWM5MzMxZmU2YmJhM2JiMGVlNjVlMDZlYzMzMWUwYTBmYjUyMTU4MjkxYjQwYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKaW5kZXggOTVjMzNmNC4uOWUwOWNkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpAQCAtOCw2ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgppbmRleCAxYzkzY2EwLi5mMmFiNzU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpAQCAtMjQsNiArMjQsNyBAQAogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKIFBBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKIAorQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgogIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKICMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KICMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzQ3NzNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAotIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2IzZjQ0NWQwYTU4NDg1YTMxYzE4YzAzY2U5YjRlM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODVhMjdmYWI2MzlhMWQ2NTE3MzdkY2I2YjY5ZTQxMDFlM2ZkMDk1MjJmZGZkY2I3OTNkZjgxMGI1Y2IzMTViZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGgtY2Fpcm8gXAotICAgIC0td2l0aC1mb250Y29uZmlnIFwKLSAgICAtLXdpdGgtZnJlZXR5cGUgXAotICAgIC0td2l0aC1nbGliIFwKLSAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgotCi1GSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgotRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjVlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDFhYTQ0NmUxZTY1NzE3MzExYzE1ZDlhYzBjZjMxZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NlYzQ5MzBmZjBiYjJkMGM0MGFlZTIwMzA3NTQ0Nzk1NGI2NGE4YzI2OTUyMDI0MTNjYzVlNDI4YzkwNzEzMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtY2Fpcm8gXAorICAgIC0td2l0aC1mb250Y29uZmlnIFwKKyAgICAtLXdpdGgtZnJlZXR5cGUgXAorICAgIC0td2l0aC1nbGliIFwKKyAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgorCitGSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgorRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJiby9maXgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvL2ZpeC1taXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQxMjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvL2ZpeC1taXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRml4IGEgcmVncmVzc2lvbiB0aGF0IGNhdXNlcyB0aGUgTUlQUyBjb2RlIGZyb20gYnVpbGRpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gN2JmYjIyYWYxMjNhYzEwNzk4YTlhNGM5ZWM3YjIzZTUwNjVkYjM1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERSQyA8aW5mb3JtYXRpb25AbGlianBlZy10dXJiby5vcmc+Ci1EYXRlOiBNb24sIDI2IFNlcCAyMDE2IDE3OjU5OjE0IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBicm9rZW4gTUlQUyBidWlsZAotCi1SZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgOTA1NWZiNDA4ZGNiNTg1Y2U5MzkyZDM5NWUxNjYzMGQ1MTAwMjE1MgotCi1GaXhlcyAjMTA0Ci0tLS0KLSBDaGFuZ2VMb2cubWQgICAgICB8IDMgKysrCi0gc2ltZC9qc2ltZF9taXBzLmMgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZy5tZCBiL0NoYW5nZUxvZy5tZAotaW5kZXggZTJiOWRmMy4uNzFkZGNhYSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZy5tZAotKysrIGIvQ2hhbmdlTG9nLm1kCi1AQCAtNiw2ICs2LDkgQEAKLSAxLiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSAxLjUuMVs3XSB0aGF0IHByZXZlbnRlZCBsaWJqcGVnLXR1cmJvIGZyb20KLSBidWlsZGluZyB3aXRoIEFuZHJvaWQgTkRLIHBsYXRmb3JtcyBwcmlvciB0byBhbmRyb2lkLTIxICg1LjApLgotIAotKzIuIEZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IDEuNS4xWzFdIHRoYXQgcHJldmVudGVkIHRoZSBNSVBTIERTUFIyIFNJTUQKLStjb2RlIGluIGxpYmpwZWctdHVyYm8gZnJvbSBidWlsZGluZy4KLSsKLSAKLSAxLjUuMQotID09PT09Ci1kaWZmIC0tZ2l0IGEvc2ltZC9qc2ltZF9taXBzLmMgYi9zaW1kL2pzaW1kX21pcHMuYwotaW5kZXggNjNiODExNS4uMDJlOTBjZCAxMDA2NDQKLS0tLSBhL3NpbWQvanNpbWRfbWlwcy5jCi0rKysgYi9zaW1kL2pzaW1kX21pcHMuYwotQEAgLTYzLDYgKzYzLDggQEAgcGFyc2VfcHJvY19jcHVpbmZvKGNvbnN0IGNoYXIqIHNlYXJjaF9zdHJpbmcpCi0gTE9DQUwodm9pZCkKLSBpbml0X3NpbWQgKHZvaWQpCi0gewotKyAgY2hhciAqZW52ID0gTlVMTDsKLSsKLSAgIGlmIChzaW1kX3N1cHBvcnQgIT0gfjBVKQotICAgICByZXR1cm47Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTJlZWFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9MDViYWI3YzdhZDg5OWQ4NWJmYmE2MGRhMWExMjcxZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YjkwYjZkMmI0MTE5ZjllNTgwN2NkMjczZjUyNWQyYWYgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LW1pcHMucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiNTVkZWIxMzliMGNhYzNjODIwMGI3NWQ0ODVmYzEzZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDE0MjlkM2QyNTMwMTc0MzNmNjZlM2Q0NzJiOGM3ZDk5ODQ5MWQyZjQxY2FhNzMwNmI4ZDlhNmYyYTJjNjY2YyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1zaW1kIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODY0NmQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9MDViYWI3YzdhZDg5OWQ4NWJmYmE2MGRhMWExMjcxZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YjkwYjZkMmI0MTE5ZjllNTgwN2NkMjczZjUyNWQyYWYgXAorIgorREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjQ5MjNlMjk3YTdlYWEyNTVmMDg1MTEwMTdhODgxOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDk4OTQzYjI3MDM4ODcyN2FlNjFkZTgyYWRlYzczY2Y5ZjBkYmIyNDBiM2JjOGIxNzI1OTVlYmY0MDViNTI4IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNjhmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJEZW1vIGFwcGxpY2F0aW9uIHRvIHNob3djYXNlIDNEIGdyYXBoaWNzIHVzaW5nIGttcyBhbmQgZ2JtIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmUvIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImdyYXBoaWNzIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIGxpYmRybSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8va21zY3ViZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PThiMzA5ZDRlZTY3YjczMTVmZjczODEyNzBkZDYzMWZiIgorCitTUkNSRVYgPSAiMGQ4ZGU0Y2UzYTAzZjM2YWYxODE3ZjliMDU4NmQxMzJhZDJjNWQyZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyOTcyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0FkZCBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBFR0xfQ0FTVAorCitUaGUgRUdMIEFQSSB1cGRhdGUgZnJvbSBkMTExMDRmIGludHJvZHVjZWQgYSBkZXBlbmRlbmN5IG9uIHRoZQorRUdMX0NBU1QoKSBtYWNybywgcHJvdmlkZWQgYnkgYW4gdXBkYXRlZCBlZ2xwbGF0Zm9ybS5oLiBHaXZlbiB0aGF0IHdlCitkb24ndCBwcm92aWRlIGVnbHBsYXRmb3JtLmgsIGFkZCBhIGZhbGxiYWNrIGRlZmluaXRpb24gZm9yIGlmIHdlJ3JlCitidWlsZGluZyBhZ2FpbnN0IE1lc2EgMTcuMC54IG9yIHNpbWlsYXIuCisKK2h0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM5MjYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9jb21taXQvZWJlM2E1M2RiMWMwYmIzNGUxY2E5NjNiOTVkMWYyMjIxMTVmOTNmOF0KKworU2lnbmVkLW9mZi1ieTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgorCitJbmRleDogbGliZXBveHktMS40LjMvc3JjL2dlbl9kaXNwYXRjaC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmVwb3h5LTEuNC4zLm9yaWcvc3JjL2dlbl9kaXNwYXRjaC5weQkyMDE3LTA2LTA2IDA0OjI0OjEzLjAwMDAwMDAwMCAtMDUwMAorKysrIGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0xMS0wNiAxMjo0NTo0My41OTQ5NjY0NzMgLTA2MDAKK0BAIC00OTEsNiArNDkxLDE1IEBACisgICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgImVwb3h5L2dsLmgiJykKKyAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldCA9PSAiZWdsIjoKKyAgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgIkVHTC9lZ2xwbGF0Zm9ybS5oIicpCisrICAgICAgICAgICAgICAgICMgQWNjb3VudCBmb3Igb2xkZXIgZWdscGxhdGZvcm0uaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKKysgICAgICAgICAgICAgICAgIyB0aGUgRUdMX0NBU1QgbWFjcm8uCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpZm5kZWYgRUdMX0NBU1QnKQorKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWYgZGVmaW5lZChfX2NwbHVzcGx1cyknKQorKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKScpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbHNlJykKKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKScpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICMgQWRkIHNvbWUgcmlkaWN1bG91cyBpbnR0eXBlcy5oIHJlZGVmaW5pdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgICAgICAjIGZyb20ga2hycGxhdGZvcm0uaCBhbmQgbm90IGluY2x1ZGVkIGluIHRoZSBYTUwuICBXZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlOWY2OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdjEuNC8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDhkOGNiZjJiZWI2NDk3NWQ0MjRmY2M1MTY3YTJhMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVhOTA2YjE0YTkyMWJjMmI0ODhjZmVhYTIxYTAwNDg2ZmU5MjYzMGU0YTlkZDM0NmU0ZWNhYmVhZTUyYWI0MSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MgdmlydHVhbC9lZ2wiCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgsIC0tZGlzYWJsZS1nbHgsIHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzIzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZjRjM2NlMGZiMTE0M2JkYzRlNDNmODU2OTVhOWJlZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjgwOGEwNmM5Njg1YTYyZmNhMzRiNjgwYWJiOGJjN2ZiMmZkYTA3NDQ3OGUzMjliMDYzYzFmODcyYjgyNmY2IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwgLS1kaXNhYmxlLWVnbCwgdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUtZ2x4LCAtLWRpc2FibGUtZ2x4LCB2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJmYWtla2V5L2xpYmZha2VrZXlfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJmYWtla2V5L2xpYmZha2VrZXlfZ2l0LmJiCmluZGV4IGM2MGRkZWEuLjRiODAzZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZmFrZWtleS9saWJmYWtla2V5X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmZha2VrZXkvbGliZmFrZWtleV9naXQuYmIKQEAgLTEwLDggKzEwLDggQEAKIERFUEVORFMgPSAibGlieHRzdCIKIFNFQ1RJT04gPSAieDExL3dtIgogCi1TUkNSRVYgPSAiZTMyN2ZmMDQ5Yjg1MDNhZjJkYWRmZmE4NDM3MGEwODYwYjlmYjY4MiIKLVBWID0gIjAuMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI3YWQ4ODU5MTJlZmIyMTMxZTgwOTE0ZTk2NGQ1ZTYzNWIwZDA3YjQwIgorUFYgPSAiMC4zK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLTEuMi4xNS8wMDAxLWJ1aWxkLVBhc3MtdGFnLUNDLWV4cGxpY3RseS13aGVuLXVzaW5nLWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtMS4yLjE1LzAwMDEtYnVpbGQtUGFzcy10YWctQ0MtZXhwbGljdGx5LXdoZW4tdXNpbmctbGlidG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzhjMGZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLTEuMi4xNS8wMDAxLWJ1aWxkLVBhc3MtdGFnLUNDLWV4cGxpY3RseS13aGVuLXVzaW5nLWxpYnRvb2wucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSA0NGU0YmI0Y2ZiODEwMjRjOGY1ZmQyZTE3OWU4YTMyYzQyNzU2YTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjMgSnVsIDIwMTcgMTY6NTI6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFBhc3MgLS10YWc9Q0MgZXhwbGljdGx5IHdoZW4gdXNpbmcgbGlidG9vbAorCitEbyBub3QgZGVwZW5kIHNvbGVseSBvbiBsaWJ0b29sIGhldXJpc3RpY3Mgd2hpY2ggZmFpbAoraW4gT0UgY2FzZSB3aGVuIGJ1aWxkaW5nIHdpdGggZXh0ZXJuYWwgY29tcGlsZXIgYW5kCitoYXJkZW5pbmcgZmxhZ3MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgICAgICAgfCA0ICsrLS0KKyBidWlsZC1zY3JpcHRzL21ha2VkZXAuc2ggfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBhYjUxMDM1Li43NDNjZTMwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNzIsMTAgKzcyLDEwIEBAIGRlcGVuZDoKKyBpbmNsdWRlICQoZGVwZW5kKQorIAorICQob2JqZWN0cykvJChUQVJHRVQpOiAkKE9CSkVDVFMpCistCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLW8gJEAgJF4gJChMREZMQUdTKSAkKEVYVFJBX0xERkxBR1MpICQoTFRfTERGTEFHUykKKysJJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9bGluayAkKENDKSAtbyAkQCAkXiAkKExERkxBR1MpICQoRVhUUkFfTERGTEFHUykgJChMVF9MREZMQUdTKQorIAorICQob2JqZWN0cykvJChTRExNQUlOX1RBUkdFVCk6ICQoU0RMTUFJTl9PQkpFQ1RTKQorLQkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpIC1vICRAICReICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAkKExUX0xERkxBR1MpICQoU0RMTUFJTl9MREZMQUdTKQorKwkkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpIC1vICRAICReICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAkKExUX0xERkxBR1MpICQoU0RMTUFJTl9MREZMQUdTKQorIAorIAorIGluc3RhbGw6IGFsbCBpbnN0YWxsLWJpbiBpbnN0YWxsLWhkcnMgaW5zdGFsbC1saWIgaW5zdGFsbC1kYXRhIGluc3RhbGwtbWFuCitkaWZmIC0tZ2l0IGEvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoIGIvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoCitpbmRleCAzYjM4NjNiLi5kYmEyOGYyIDEwMDc1NQorLS0tIGEvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoCisrKysgYi9idWlsZC1zY3JpcHRzL21ha2VkZXAuc2gKK0BAIC01MSwxOSArNTEsMTkgQEAgZG8gIGVjaG8gIkdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGZvciAkc3JjIgorICAgICBjYXNlICRleHQgaW4KKyAgICAgICAgIGMpIGNhdCA+PiR7b3V0cHV0fS5uZXcgPDxfX0VPRl9fCisgCistCVwkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKKyAgICAgICAgIGNjKSBjYXQgPj4ke291dHB1dH0ubmV3IDw8X19FT0ZfXworIAorLQlcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorKwlcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorIAorIF9fRU9GX18KKyAgICAgICAgIDs7CisgICAgICAgICBtKSBjYXQgPj4ke291dHB1dH0ubmV3IDw8X19FT0ZfXworIAorLQlcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorKwlcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorIAorIF9fRU9GX18KKyAgICAgICAgIDs7CitAQCAtNzUsNyArNzUsNyBAQCBfX0VPRl9fCisgICAgICAgICA7OworICAgICAgICAgUykgY2F0ID4+JHtvdXRwdXR9Lm5ldyA8PF9fRU9GX18KKyAKKy0JXCQoTElCVE9PTCkgIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbF8xLjIuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGxfMS4yLjE1LmJiCmluZGV4IGM4MDJhNmYuLjM2ODBlYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbF8xLjIuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsXzEuMi4xNS5iYgpAQCAtMTcsNiArMTcsNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2xpYnNkbC0xLjIuMTUteGRhdGEzMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1QYXNzLXRhZy1DQy1leHBsaWN0bHktd2hlbi11c2luZy1saWJ0b29sLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlNETC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKQEAgLTUzLDYgKzU0LDEwIEBACiBQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLCAtLWRpc2FibGUtdmlkZW8tb3BlbmdsLCB2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS12aWRlby14MTEgLS1kaXNhYmxlLXgxMS1zaGFyZWQsIC0tZGlzYWJsZS12aWRlby14MTEsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCiAKKyMgVGhlIGZvbGxvd2luZyB0d28gb3B0aW9ucyBzaG91bGQgb25seSBlbmFibGVkIHdpdGggbWluZ3cgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzdGRpby1yZWRpcmVjdF0gPSAiLS1lbmFibGUtc3RkaW8tcmVkaXJlY3QsLS1kaXNhYmxlLXN0ZGlvLXJlZGlyZWN0IgorUEFDS0FHRUNPTkZJR1tkaXJlY3R4XSA9ICItLWVuYWJsZS1kaXJlY3R4LC0tZGlzYWJsZS1kaXJlY3R4IgorCiBFWFRSQV9BVVRPUkVDT05GICs9ICItLWluY2x1ZGU9YWNpbmNsdWRlIC0tZXhjbHVkZT1hdXRvaGVhZGVyIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi1QQVRILnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5OWMyMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDBhZjMwNjAyNTAyMDM1MTU1OTI5ZGQyYTE0NDgyYjgyYTk3NDdjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyMyBGZWIgMjAxNyAxNToyMzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IFVzZSB3YXlsYW5kLXNjYW5uZXIgaW4gUEFUSAotCi1wa2ctY29uZmlnIHdpbGwgZ2l2ZSB1cyB0aGUgd3Jvbmcgd2F5bGFuZC1zY2FubmVyIGxvY2F0aW9uLgotVXNlIHRoZSBvbmUgaW4gcGF0aCBpbnN0ZWFkOiBpdCB3aWxsIGJlIGZyb20gbmF0aXZlIHN5c3Jvb3QuCi0KLVRoaXMgaXMgYSB3b3JrYXJvdW5kIGFuZCBzaG91bGQgYmUgZml4ZWQgdXBzdHJlYW06IHByZWZlcmFibHkKLXdpdGggdGhlIHNhbWUgZml4IGFzIGFsbCB0aGUgb3RoZXIgd2F5bGFuZC1zY2FubmVyIHVzZXJzCi0oc2VlIFlPQ1RPICMxMTEwMCkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA1ICstLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2NGVkZGYyLi41NTM2ZjM1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNzMsMTAgKzI3Myw3IEBAIGlmIHRlc3QgIiRlbmFibGVfd2F5bGFuZCIgPSAieWVzIjsgdGhlbgotICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF0sIFt3YXlsYW5kLWNsaWVudCA+PSB3YXlsYW5kX2FwaV92ZXJzaW9uXSwKLSAgICAgICAgIFtVU0VfV0FZTEFORD0ieWVzIl0sIFs6XSkKLSAgICAgaWYgdGVzdCAiJFVTRV9XQVlMQU5EIiA9ICJ5ZXMiOyB0aGVuCi0tCi0tICAgICAgICBXQVlMQU5EX1BSRUZJWD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggd2F5bGFuZC1jbGllbnRgCi0tICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCwKLS0gICAgICAgICAgICAgICAgICAgICBbJHtXQVlMQU5EX1BSRUZJWH0vYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdKQotKyAgICAgICAgQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSkKLSAKLSAgICAgICAgIEFDX0RFRklORShbSEFWRV9WQV9XQVlMQU5EXSwgWzFdLAotICAgICAgICAgICAgICAgICAgIFtEZWZpbmVkIHRvIDEgaWYgVkEvV2F5bGFuZCBBUEkgaXMgYnVpbHRdKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtd2F5bGFuZC1Eb24tdC1jb21taXQtYW5kLXNoaXAtZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLXdheWxhbmQtRG9uLXQtY29tbWl0LWFuZC1zaGlwLWdlbmVyYXRlZC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ5N2UyMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtd2F5bGFuZC1Eb24tdC1jb21taXQtYW5kLXNoaXAtZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzM5ICswLDAgQEAKLUZyb20gNTk5M2E3NzEwY2M4ZmQ5YTM5MmQ1MDE1YmU1MTA5OTg3YTQyYjQ5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE2OjEwOjA5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdheWxhbmQ6IERvbid0IGNvbW1pdCBhbmQgc2hpcCBnZW5lcmF0ZWQgZmlsZXMKLQotSSBiZWxpZXZlIHNoaXBwaW5nIHdheWxhbmQtZHJtLWNsaWVudC1wcm90b2NvbC5oIGlzIHdyb25nOiBUaGUgaGVhZGVyCi1zaG91bGQgYWx3YXlzIGJlIGdlbmVyYXRlZCBieSB0aGUgd2F5bGFuZC1zY2FubmVyIHRoYXQgbWF0Y2hlcyB0aGUKLXJ1bnRpbWUgd2F5bGFuZCB2ZXJzaW9uLiBDdXJyZW50bHkgd2hlbiBzb21lb25lIGNsb25lcyB0aGUgcmVwbyBhbmQKLWJ1aWxkcywgdGhlIHNoaXBwZWQgdmVyc2lvbiBpcyB1c2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhL3B1bGwvMzNdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gdmEvd2F5bGFuZC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAgNSArLQotIHZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmggfCAyOTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyOTEgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmgKLQotZGlmZiAtLWdpdCBhL3ZhL3dheWxhbmQvTWFrZWZpbGUuYW0gYi92YS93YXlsYW5kL01ha2VmaWxlLmFtCi1pbmRleCA0ZjgyNjJjLi40YWI4ZDA3IDEwMDY0NAotLS0tIGEvdmEvd2F5bGFuZC9NYWtlZmlsZS5hbQotKysrIGIvdmEvd2F5bGFuZC9NYWtlZmlsZS5hbQotQEAgLTUzLDcgKzUzLDcgQEAgcHJvdG9jb2xfc291cmNlX2ggPSBcCi0gbm9pbnN0X0xUTElCUkFSSUVTCQk9IGxpYnZhX3dheWxhbmQubGEKLSBsaWJ2YV93YXlsYW5kaW5jbHVkZWRpcgkJPSAke2luY2x1ZGVkaXJ9L3ZhCi0gbGlidmFfd2F5bGFuZGluY2x1ZGVfSEVBREVSUwk9ICQoc291cmNlX2gpCi0tbGlidmFfd2F5bGFuZF9sYV9TT1VSQ0VTCT0gJChzb3VyY2VfYykgJChwcm90b2NvbF9zb3VyY2VfaCkKLStsaWJ2YV93YXlsYW5kX2xhX1NPVVJDRVMJPSAkKHNvdXJjZV9jKQotIG5vaW5zdF9IRUFERVJTCQkJPSAkKHNvdXJjZV9oX3ByaXYpCi0gCi0gIyBXYXlsYW5kIHByb3RvY29sCi1AQCAtNjUsNSArNjUsOCBAQCBFWFRSQV9ESVNUID0gXAotIAl3YXlsYW5kLWRybS54bWwgICAgICAgICBcCi0gCSQoTlVMTCkKLSAKLStCVUlMVF9TT1VSQ0VTID0gJChwcm90b2NvbF9zb3VyY2VfaCkKLStDTEVBTkZJTEVTID0gJChCVUlMVF9TT1VSQ0VTKQotKwotICMgRXh0cmEgY2xlYW4gZmlsZXMgc28gdGhhdCBtYWludGFpbmVyLWNsZWFuIHJlbW92ZXMgKmV2ZXJ5dGhpbmcqCi0gTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbgotZGlmZiAtLWdpdCBhL3ZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmggYi92YS93YXlsYW5kL3dheWxhbmQtZHJtLWNsaWVudC1wcm90b2NvbC5oCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGRhMjY3ZTguLjAwMDAwMDAKLS0tLSBhL3ZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDI5MCArMCwwIEBACi0tLyogR2VuZXJhdGVkIGJ5IHdheWxhbmQtc2Nhbm5lciAxLjExLjkwICovCi0tCi0tI2lmbmRlZiBEUk1fQ0xJRU5UX1BST1RPQ09MX0gKLS0jZGVmaW5lIERSTV9DTElFTlRfUFJPVE9DT0xfSAotLQotLSNpbmNsdWRlIDxzdGRpbnQuaD4KLS0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0tI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LmgiCi0tCi0tI2lmZGVmICBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZgotLQotLS8qKgotLSAqIEBwYWdlIHBhZ2VfZHJtIFRoZSBkcm0gcHJvdG9jb2wKLS0gKiBAc2VjdGlvbiBwYWdlX2lmYWNlc19kcm0gSW50ZXJmYWNlcwotLSAqIC0gQHN1YnBhZ2UgcGFnZV9pZmFjZV93bF9kcm0gLSAKLS0gKiBAc2VjdGlvbiBwYWdlX2NvcHlyaWdodF9kcm0gQ29weXJpZ2h0Ci0tICogPHByZT4KLS0gKgotLSAqIENvcHlyaWdodCDCqSAyMDA4LTIwMTEgS3Jpc3RpYW4gSMO4Z3NiZXJnCi0tICogQ29weXJpZ2h0IMKpIDIwMTAtMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotLSAqCi0tICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcwotLSAqIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKLS0gKiB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdFxuIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgotLSAqIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgotLSAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgotLSAqIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKLS0gKiBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywKLS0gKiB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubwotLSAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0tICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLS0gKiB3YXJyYW50eS4KLS0gKgotLSAqIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTCi0tICogU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLS0gKiBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKLS0gKiBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLS0gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLS0gKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLAotLSAqIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCi0tICogVEhJUyBTT0ZUV0FSRS4KLS0gKiA8L3ByZT4KLS0gKi8KLS1zdHJ1Y3Qgd2xfYnVmZmVyOwotLXN0cnVjdCB3bF9kcm07Ci0tCi0tLyoqCi0tICogQHBhZ2UgcGFnZV9pZmFjZV93bF9kcm0gd2xfZHJtCi0tICogQHNlY3Rpb24gcGFnZV9pZmFjZV93bF9kcm1fYXBpIEFQSQotLSAqIFNlZSBAcmVmIGlmYWNlX3dsX2RybS4KLS0gKi8KLS0vKioKLS0gKiBAZGVmZ3JvdXAgaWZhY2Vfd2xfZHJtIFRoZSB3bF9kcm0gaW50ZXJmYWNlCi0tICovCi0tZXh0ZXJuIGNvbnN0IHN0cnVjdCB3bF9pbnRlcmZhY2Ugd2xfZHJtX2ludGVyZmFjZTsKLS0KLS0jaWZuZGVmIFdMX0RSTV9FUlJPUl9FTlVNCi0tI2RlZmluZSBXTF9EUk1fRVJST1JfRU5VTQotLWVudW0gd2xfZHJtX2Vycm9yIHsKLS0JV0xfRFJNX0VSUk9SX0FVVEhFTlRJQ0FURV9GQUlMID0gMCwKLS0JV0xfRFJNX0VSUk9SX0lOVkFMSURfRk9STUFUID0gMSwKLS0JV0xfRFJNX0VSUk9SX0lOVkFMSURfTkFNRSA9IDIsCi0tfTsKLS0jZW5kaWYgLyogV0xfRFJNX0VSUk9SX0VOVU0gKi8KLS0KLS0jaWZuZGVmIFdMX0RSTV9GT1JNQVRfRU5VTQotLSNkZWZpbmUgV0xfRFJNX0ZPUk1BVF9FTlVNCi0tZW51bSB3bF9kcm1fZm9ybWF0IHsKLS0JV0xfRFJNX0ZPUk1BVF9DOCA9IDB4MjAyMDM4NDMsCi0tCVdMX0RSTV9GT1JNQVRfUkdCMzMyID0gMHgzODQyNDc1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1IyMzMgPSAweDM4NTI0NzQyLAotLQlXTF9EUk1fRk9STUFUX1hSR0I0NDQ0ID0gMHgzMjMxNTI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9YQkdSNDQ0NCA9IDB4MzIzMTQyNTgsCi0tCVdMX0RSTV9GT1JNQVRfUkdCWDQ0NDQgPSAweDMyMzE1ODUyLAotLQlXTF9EUk1fRk9STUFUX0JHUlg0NDQ0ID0gMHgzMjMxNTg0MiwKLS0JV0xfRFJNX0ZPUk1BVF9BUkdCNDQ0NCA9IDB4MzIzMTUyNDEsCi0tCVdMX0RSTV9GT1JNQVRfQUJHUjQ0NDQgPSAweDMyMzE0MjQxLAotLQlXTF9EUk1fRk9STUFUX1JHQkE0NDQ0ID0gMHgzMjMxNDE1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JBNDQ0NCA9IDB4MzIzMTQxNDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjE1NTUgPSAweDM1MzE1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1IxNTU1ID0gMHgzNTMxNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYNTU1MSA9IDB4MzUzMTU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDU1NTEgPSAweDM1MzE1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0IxNTU1ID0gMHgzNTMxNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSMTU1NSA9IDB4MzUzMTQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTU1NTEgPSAweDM1MzE0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkE1NTUxID0gMHgzNTMxNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9SR0I1NjUgPSAweDM2MzE0NzUyLAotLQlXTF9EUk1fRk9STUFUX0JHUjU2NSA9IDB4MzYzMTQ3NDIsCi0tCVdMX0RSTV9GT1JNQVRfUkdCODg4ID0gMHgzNDMyNDc1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1I4ODggPSAweDM0MzI0NzQyLAotLQlXTF9EUk1fRk9STUFUX1hSR0I4ODg4ID0gMHgzNDMyNTI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9YQkdSODg4OCA9IDB4MzQzMjQyNTgsCi0tCVdMX0RSTV9GT1JNQVRfUkdCWDg4ODggPSAweDM0MzI1ODUyLAotLQlXTF9EUk1fRk9STUFUX0JHUlg4ODg4ID0gMHgzNDMyNTg0MiwKLS0JV0xfRFJNX0ZPUk1BVF9BUkdCODg4OCA9IDB4MzQzMjUyNDEsCi0tCVdMX0RSTV9GT1JNQVRfQUJHUjg4ODggPSAweDM0MzI0MjQxLAotLQlXTF9EUk1fRk9STUFUX1JHQkE4ODg4ID0gMHgzNDMyNDE1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JBODg4OCA9IDB4MzQzMjQxNDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjIxMDEwMTAgPSAweDMwMzM1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1IyMTAxMDEwID0gMHgzMDMzNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYMTAxMDEwMiA9IDB4MzAzMzU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDEwMTAxMDIgPSAweDMwMzM1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0IyMTAxMDEwID0gMHgzMDMzNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMCA9IDB4MzAzMzQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTEwMTAxMDIgPSAweDMwMzM0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkExMDEwMTAyID0gMHgzMDMzNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVlWID0gMHg1NjU5NTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVllVID0gMHg1NTU5NTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9VWVZZID0gMHg1OTU2NTk1NSwKLS0JV0xfRFJNX0ZPUk1BVF9WWVVZID0gMHg1OTU1NTk1NiwKLS0JV0xfRFJNX0ZPUk1BVF9BWVVWID0gMHg1NjU1NTk0MSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjEyID0gMHgzMjMxNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjIxID0gMHgzMTMyNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjE2ID0gMHgzNjMxNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjYxID0gMHgzMTM2NTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0MTAgPSAweDM5NTY1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQxMCA9IDB4Mzk1NTU2NTksCi0tCVdMX0RSTV9GT1JNQVRfWVVWNDExID0gMHgzMTMxNTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVlU0MTEgPSAweDMxMzE1NjU5LAotLQlXTF9EUk1fRk9STUFUX1lVVjQyMCA9IDB4MzIzMTU1NTksCi0tCVdMX0RSTV9GT1JNQVRfWVZVNDIwID0gMHgzMjMxNTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0MjIgPSAweDM2MzE1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQyMiA9IDB4MzYzMTU2NTksCi0tCVdMX0RSTV9GT1JNQVRfWVVWNDQ0ID0gMHgzNDMyNTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVlU0NDQgPSAweDM0MzI1NjU5LAotLX07Ci0tI2VuZGlmIC8qIFdMX0RSTV9GT1JNQVRfRU5VTSAqLwotLQotLSNpZm5kZWYgV0xfRFJNX0NBUEFCSUxJVFlfRU5VTQotLSNkZWZpbmUgV0xfRFJNX0NBUEFCSUxJVFlfRU5VTQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqIHdsX2RybSBjYXBhYmlsaXR5IGJpdG1hc2sKLS0gKgotLSAqIEJpdG1hc2sgb2YgY2FwYWJpbGl0aWVzLgotLSAqLwotLWVudW0gd2xfZHJtX2NhcGFiaWxpdHkgewotLQkvKioKLS0JICogd2xfZHJtIHByaW1lIGF2YWlsYWJsZQotLQkgKi8KLS0JV0xfRFJNX0NBUEFCSUxJVFlfUFJJTUUgPSAxLAotLX07Ci0tI2VuZGlmIC8qIFdMX0RSTV9DQVBBQklMSVRZX0VOVU0gKi8KLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKiBAc3RydWN0IHdsX2RybV9saXN0ZW5lcgotLSAqLwotLXN0cnVjdCB3bF9kcm1fbGlzdGVuZXIgewotLQkvKioKLS0JICovCi0tCXZvaWQgKCpkZXZpY2UpKHZvaWQgKmRhdGEsCi0tCQkgICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwotLQkvKioKLS0JICovCi0tCXZvaWQgKCpmb3JtYXQpKHZvaWQgKmRhdGEsCi0tCQkgICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJICAgICAgIHVpbnQzMl90IGZvcm1hdCk7Ci0tCS8qKgotLQkgKi8KLS0Jdm9pZCAoKmF1dGhlbnRpY2F0ZWQpKHZvaWQgKmRhdGEsCi0tCQkJICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtKTsKLS0JLyoqCi0tCSAqLwotLQl2b2lkICgqY2FwYWJpbGl0aWVzKSh2b2lkICpkYXRhLAotLQkJCSAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJCSAgICAgdWludDMyX3QgdmFsdWUpOwotLX07Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgd2xfZHJtX2lmYWNlCi0tICovCi0tc3RhdGljIGlubGluZSBpbnQKLS13bF9kcm1fYWRkX2xpc3RlbmVyKHN0cnVjdCB3bF9kcm0gKndsX2RybSwKLS0JCSAgICBjb25zdCBzdHJ1Y3Qgd2xfZHJtX2xpc3RlbmVyICpsaXN0ZW5lciwgdm9pZCAqZGF0YSkKLS17Ci0tCXJldHVybiB3bF9wcm94eV9hZGRfbGlzdGVuZXIoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJCSAgICAgKHZvaWQgKCoqKSh2b2lkKSkgbGlzdGVuZXIsIGRhdGEpOwotLX0KLS0KLS0jZGVmaW5lIFdMX0RSTV9BVVRIRU5USUNBVEUgMAotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9CVUZGRVIgMQotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9QTEFOQVJfQlVGRkVSIDIKLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSIDMKLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9BVVRIRU5USUNBVEVfU0lOQ0VfVkVSU0lPTiAxCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tI2RlZmluZSBXTF9EUk1fQ1JFQVRFX0JVRkZFUl9TSU5DRV9WRVJTSU9OIDEKLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUExBTkFSX0JVRkZFUl9TSU5DRV9WRVJTSU9OIDEKLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSX1NJTkNFX1ZFUlNJT04gMgotLQotLS8qKiBAaW5ncm91cCBpZmFjZV93bF9kcm0gKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS13bF9kcm1fc2V0X3VzZXJfZGF0YShzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHZvaWQgKnVzZXJfZGF0YSkKLS17Ci0tCXdsX3Byb3h5X3NldF91c2VyX2RhdGEoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sIHVzZXJfZGF0YSk7Ci0tfQotLQotLS8qKiBAaW5ncm91cCBpZmFjZV93bF9kcm0gKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQgKgotLXdsX2RybV9nZXRfdXNlcl9kYXRhKHN0cnVjdCB3bF9kcm0gKndsX2RybSkKLS17Ci0tCXJldHVybiB3bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtKTsKLS19Ci0tCi0tc3RhdGljIGlubGluZSB1aW50MzJfdAotLXdsX2RybV9nZXRfdmVyc2lvbihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0pCi0tewotLQlyZXR1cm4gd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0pOwotLX0KLS0KLS0vKiogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0td2xfZHJtX2Rlc3Ryb3koc3RydWN0IHdsX2RybSAqd2xfZHJtKQotLXsKLS0Jd2xfcHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSk7Ci0tfQotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotLXdsX2RybV9hdXRoZW50aWNhdGUoc3RydWN0IHdsX2RybSAqd2xfZHJtLCB1aW50MzJfdCBpZCkKLS17Ci0tCXdsX3Byb3h5X21hcnNoYWwoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJIFdMX0RSTV9BVVRIRU5USUNBVEUsIGlkKTsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2xfYnVmZmVyICoKLS13bF9kcm1fY3JlYXRlX2J1ZmZlcihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHVpbnQzMl90IG5hbWUsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IGZvcm1hdCkKLS17Ci0tCXN0cnVjdCB3bF9wcm94eSAqaWQ7Ci0tCi0tCWlkID0gd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3Rvcigoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwKLS0JCQkgV0xfRFJNX0NSRUFURV9CVUZGRVIsICZ3bF9idWZmZXJfaW50ZXJmYWNlLCBOVUxMLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIGZvcm1hdCk7Ci0tCi0tCXJldHVybiAoc3RydWN0IHdsX2J1ZmZlciAqKSBpZDsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2xfYnVmZmVyICoKLS13bF9kcm1fY3JlYXRlX3BsYW5hcl9idWZmZXIoc3RydWN0IHdsX2RybSAqd2xfZHJtLCB1aW50MzJfdCBuYW1lLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IG9mZnNldDAsIGludDMyX3Qgc3RyaWRlMCwgaW50MzJfdCBvZmZzZXQxLCBpbnQzMl90IHN0cmlkZTEsIGludDMyX3Qgb2Zmc2V0MiwgaW50MzJfdCBzdHJpZGUyKQotLXsKLS0Jc3RydWN0IHdsX3Byb3h5ICppZDsKLS0KLS0JaWQgPSB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yKChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtLAotLQkJCSBXTF9EUk1fQ1JFQVRFX1BMQU5BUl9CVUZGRVIsICZ3bF9idWZmZXJfaW50ZXJmYWNlLCBOVUxMLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG9mZnNldDAsIHN0cmlkZTAsIG9mZnNldDEsIHN0cmlkZTEsIG9mZnNldDIsIHN0cmlkZTIpOwotLQotLQlyZXR1cm4gKHN0cnVjdCB3bF9idWZmZXIgKikgaWQ7Ci0tfQotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLXN0YXRpYyBpbmxpbmUgc3RydWN0IHdsX2J1ZmZlciAqCi0td2xfZHJtX2NyZWF0ZV9wcmltZV9idWZmZXIoc3RydWN0IHdsX2RybSAqd2xfZHJtLCBpbnQzMl90IG5hbWUsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qgb2Zmc2V0MCwgaW50MzJfdCBzdHJpZGUwLCBpbnQzMl90IG9mZnNldDEsIGludDMyX3Qgc3RyaWRlMSwgaW50MzJfdCBvZmZzZXQyLCBpbnQzMl90IHN0cmlkZTIpCi0tewotLQlzdHJ1Y3Qgd2xfcHJveHkgKmlkOwotLQotLQlpZCA9IHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3IoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSLCAmd2xfYnVmZmVyX2ludGVyZmFjZSwgTlVMTCwgbmFtZSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBvZmZzZXQwLCBzdHJpZGUwLCBvZmZzZXQxLCBzdHJpZGUxLCBvZmZzZXQyLCBzdHJpZGUyKTsKLS0KLS0JcmV0dXJuIChzdHJ1Y3Qgd2xfYnVmZmVyICopIGlkOwotLX0KLS0KLS0jaWZkZWYgIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLQotLSNlbmRpZgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDgyYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzLmdpdDticmFuY2g9djEuOC1icmFuY2giCitTUkNSRVYgPSAiMDExYzcwOWI5OGI1MmRiM2IxMGFlYjM2MWRmZWE5ZGE0MzkzMDM2NCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzBiOTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS43LWJyYW5jaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13YXlsYW5kLURvbi10LWNvbW1pdC1hbmQtc2hpcC1nZW5lcmF0ZWQtZmlsZXMucGF0Y2giCi1TUkNSRVYgPSAiZGJmOWY3ZTMzMzQ5YzNjZWU4ZDEzMWU5M2E2YTRmOTEyNTU2MzVjYiIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImxpYnZhLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImxpYmRybSB2aXJ0dWFsL21lc2EgdmlydHVhbC9saWJnbGVzMSB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZHVtbXktZHJpdmVyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS10cGkgJHtQTn0tZ2x4ICR7UE59LWVnbCAke1BOfS13YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfS10cGkgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgotUkRFUEVORFNfJHtQTn0tZWdsID0rICIke1BOfS14MTEiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RyaS8uZGVidWciCi0KLUZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCi1GSUxFU18ke1BOfS10cGkgPSsgIiR7bGliZGlyfS9saWJ2YS10cGkqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWVnbCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWVnbCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWVkYTg0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS44LWJyYW5jaCAiCitTUkNSRVYgPSAiNDU3NDcwOTg3Y2M5ZGY1OTc2Y2U4YzcyZmZkNGJmYmQ5YmFhZjBmOSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tdHBpICR7UE59LWdseCAke1BOfS1lZ2wgJHtQTn0td2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0tdHBpID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKK1JERVBFTkRTXyR7UE59LWVnbCA9KyAiJHtQTn0teDExIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kcmkvLmRlYnVnIgorCitGSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tdHBpID0rICIke2xpYmRpcn0vbGlidmEtdHBpKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS1lZ2wgPSsgIiR7bGliZGlyfS9saWJ2YS1lZ2wqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxZTg2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSAzNDIzMTFkYmIxOTA3MzViN2IzMmFiMjBmODFjMWQ4ZGJjZmU3MTdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBPY3QgMjAxNyAxNTo0MDo0MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS52dWxrYW4uYW06IGV4cGxpY3RseSBhZGQgbGliIGV4cGF0IHRvIGludGVsCisgbGlidnVsa2FuJ3MgbGliIGRlcGVuZHMKKworV2hpbGUgYnVpbHQgd2l0aCAiLWZ2aXNpYmlsaXR5PWRlZmF1bHQiCisuLi4KK3xpNTg2LW9lLWxpbnV4LWdjYyAuLi4gLWZ2aXNpYmlsaXR5PWRlZmF1bHQgLi4uIC1vIGNvbW1vbi8ubGlicy9jb21tb25fbGliaW50ZWxfY29tbW9uX2xhLWdlbl9kZWNvZGVyLm8KKy4uLgorCitJdCB0cmlnZ2VyZWQgdGhlIGZhaWx1cmUKKy4uLgorfGk1ODYtb2UtbGludXgtZysrICAuLi4gY29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hIC4uLiAtbyB2dWxrYW4vLmxpYnMvbGlidnVsa2FuX2ludGVsLnNvCit8Y29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hKGNvbW1vbl9saWJpbnRlbF9jb21tb25fbGEtZ2VuX2RlY29kZXIubyk6Cit8SW4gZnVuY3Rpb24gYHN0YXJ0X2VsZW1lbnQnOgorfC91c3Ivc3JjL2RlYnVnL21lc2EvMl8xNy4xLjctcjAvbWVzYS0xNy4xLjcvc3JjL2ludGVsL2NvbW1vbi9nZW5fZGVjb2Rlci5jOjM3MToKK3VuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhNTF9HZXRDdXJyZW50TGluZU51bWJlcicKKy4uLgorCitleHBsaWN0bHkgYWRkIEVYUEFUX0xJQlMgdG8gaW50ZWwncyBWVUxLQU5fTElCX0RFUFMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21lc2EtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KK2luZGV4IDI3MWIwYTUuLjhmYmUyYzggMTAwNjQ0CistLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCisrKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitAQCAtMTQ0LDYgKzE0NCw3IEBAIFZVTEtBTl9MSUJfREVQUyA9IFwKKyAJJChMSUJEUk1fTElCUykgXAorIAkkKFBUSFJFQURfTElCUykgXAorIAkkKERMT1BFTl9MSUJTKSBcCisrCSQoRVhQQVRfTElCUykgXAorIAktbG0KKyAKKyBpZiBIQVZFX1BMQVRGT1JNX1gxMQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAppbmRleCBlNDk2OTViLi5lYjZmZjRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJmNjhmY2FhZjQ5NjRlN2ZlZWIzODNmNWMyNjg1MTk2NWNkYTAzN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM5MDhmMGMxM2FjODFhM2E1MjE0MGYxMjlhMTNiMmJjOTk3ZmY0ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxNToyMDo0OSArMDIwMAogU3ViamVjdDogW1BBVENIXSBTaW1wbGlmeSB3YXlsYW5kLXNjYW5uZXIgbG9va3VwCkBAIC0xNSwyMyArMTUsMjMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU1NmUzNWEuLmE5MjAwNWEgMTAwNjQ0CitpbmRleCAyYzdlNjM2ZmFjLi5kMmIyMzUwNzM5IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMDIwLDEyICsyMDIwLDcgQEAgaWYgdGVzdCAieCR3aXRoX2VnbF9wbGF0Zm9ybXMiICE9ICJ4IiAtYSAieCRlbmFibGVfZWdsIiAhPSB4eWVzOyB0aGVuCi0gICAgIEFDX01TR19FUlJPUihbY2Fubm90IGJ1aWxkIGVnbCBzdGF0ZSB0cmFja2VyIHdpdGhvdXQgRUdMIGxpYnJhcnldKQorQEAgLTIxNzQsMTIgKzIxNzQsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfcGxhdGZvcm1zIiAhPSB4YXV0bzsgdGhlbgorICAgICB3aXRoX2VnbF9wbGF0Zm9ybXM9JHdpdGhfcGxhdGZvcm1zCiAgZmkKICAKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sCiAtICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAsCiAtICAgICAgICBXQVlMQU5EX1NDQU5ORVI9JycpCiAtaWYgdGVzdCAieCRXQVlMQU5EX1NDQU5ORVIiID0geDsgdGhlbgotLSAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQorLSAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCBbOl0pCiAtZmkKICtBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQogIAogICMgRG8gcGVyLUVHTCBwbGF0Zm9ybSBzZXR1cHMgYW5kIGNoZWNrcwogIGVnbF9wbGF0Zm9ybXM9YElGUz0nLCAnOyBlY2hvICR3aXRoX2VnbF9wbGF0Zm9ybXNgCiAtLSAKLTIuMS40CisyLjEzLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyN2EzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5ODYxNDM3ZTU4ZmRkMGRlMDExOTNhMTAyNjA4ZDM0ZTU5NTI5NTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0b3BoIEhhYWcgPGhhYWdjaCttZXNhZGV2QGZyaWNrZWwuY2x1Yj4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6MzQ6MTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGFjOiBmaXggYnVpbGQgYWZ0ZXIgTExWTSA1LjAgU1ZOIHIzMDA3MTgKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwordjI6IHByZXZpb3VzbHkgZ2V0V2l0aERlcmVmZXJlbmNlYWJsZUJ5dGVzKCkgZXhpc3RzLCBidXQgYWRkQXR0cigpIGRvZXNuJ3QgdGFrZSB0aGF0IHR5cGUKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhhYWcgPGhhYWdjaCttZXNhZGV2QGZyaWNrZWwuY2x1Yj4KK1Jldmlld2VkLWJ5OiBOaWNvbGFpIEjDpGhubGUgPG5pY29sYWkuaGFlaG5sZUBhbWQuY29tPgorVGVzdGVkLWFuZC1yZXZpZXdlZC1ieTogTWlrZSBMb3RoaWFuIDxtaWtlQGZpcmVidXJuLmNvLnVrPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBzcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAgYi9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAKK2luZGV4IGQ5ZWE0YjEuLjExZmE4MDkgMTAwNjQ0CistLS0gYS9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAKKysrKyBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAorQEAgLTQ0LDkgKzQ0LDEzIEBAIHR5cGVkZWYgQXR0cmlidXRlU2V0IEF0dHJpYnV0ZUxpc3Q7Cisgdm9pZCBhY19hZGRfYXR0cl9kZXJlZmVyZW5jZWFibGUoTExWTVZhbHVlUmVmIHZhbCwgdWludDY0X3QgYnl0ZXMpCisgeworICAgIGxsdm06OkFyZ3VtZW50ICpBID0gbGx2bTo6dW53cmFwPGxsdm06OkFyZ3VtZW50Pih2YWwpOworKyNpZiBIQVZFX0xMVk0gPCAweDA1MDAKKyAgICBsbHZtOjpBdHRyQnVpbGRlciBCOworICAgIEIuYWRkRGVyZWZlcmVuY2VhYmxlQXR0cihieXRlcyk7CisgICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGVMaXN0OjpnZXQoQS0+Z2V0Q29udGV4dCgpLCBBLT5nZXRBcmdObygpICsgMSwgIEIpKTsKKysjZWxzZQorKyAgIEEtPmFkZEF0dHIobGx2bTo6QXR0cmlidXRlOjpnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoQS0+Z2V0Q29udGV4dCgpLCBieXRlcykpOworKyNlbmRpZgorIH0KKyAKKyBib29sIGFjX2lzX3NncHJfcGFyYW0oTExWTVZhbHVlUmVmIGFyZykKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1M2M0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMWY3ZDc1MjE5M2YwMmQxNWQ1OTIzY2VlOTkyZThmNDZkNGM2ZGYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDEzOjUxOjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWx3YXlzIGNoZWNrIGZvciBleHBhdAorCitleHBhdCB3YXMgbm90IGNoZWNrZWQgaWYgZHJpIHdhcyBub3QgYnVpbHQgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCitpbiB2dWxrYW4gZHJpdmVyOiBiYWNrcG9ydCBhIGZpeCAoYSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCit0aGF0IHNob3VsZCBlbmQgdXAgaW4gMTcuMykuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNSArKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmZDM0NmM4YWEyLi42NjJmYWVjZWZhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNzc3LDYgKzE3NzcsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2RyaV9kcml2ZXJzIiA9IHhubzsgdGhlbgorICAgICB3aXRoX2RyaV9kcml2ZXJzPScnCisgZmkKKyAKKysjIENoZWNrIGZvciBleHBhdAorK1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwsCisrICAgIFtQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXQyMV0pXQorKykKKysKKyBkbmwgSWYgJHdpdGhfZHJpX2RyaXZlcnMgaXMgeWVzLCBkcml2ZXJzIHdpbGwgYmUgYWRkZWQgdGhyb3VnaAorIGRubCBwbGF0Zm9ybSBjaGVja3MuIFNldCBERUZJTkVTIGFuZCBMSUJfREVQUworIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCitAQCAtMTgxMCwxNSArMTgxNiw2IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCisgICAgICAgICB3aXRoX2RyaV9kcml2ZXJzPSJpOTE1IGk5NjUgbm91dmVhdSByMjAwIHJhZGVvbiBzd3Jhc3QiCisgICAgIGZpCisgCistICAgICMgQ2hlY2sgZm9yIGV4cGF0CistICAgIFBLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0sIFtdLAorLSAgICAgICAgIyBleHBhdCB2ZXJzaW9uIDIuMCBhbmQgZWFybGllciBkbyBub3QgcHJvdmlkZSBleHBhdC5wYworLSAgICAgICAgW0FDX0NIRUNLX0hFQURFUihbZXhwYXQuaF0sW10sCistICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGhlYWRlcnMgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCistICAgICAgICAgQUNfQ0hFQ0tfTElCKFtleHBhdF0sW1hNTF9QYXJzZXJDcmVhdGVdLFtdLAorLSAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGxpYnJhcnkgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCistICAgICAgICAgRVhQQVRfTElCUz0iLWxleHBhdCJdKQorLQorICAgICAjIHB1dCBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJzIHRvZ2V0aGVyCisgICAgIERSSV9MSUJfREVQUz0iJERSSV9MSUJfREVQUyAkU0VMSU5VWF9MSUJTICRMSUJEUk1fTElCUyAkRVhQQVRfTElCUyAtbG0gJFBUSFJFQURfTElCUyAkRExPUEVOX0xJQlMiCisgZmkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5Yjg2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZDg3NTA3NzY0MDRiMTAzMWQ3NjI5NjZkMGY1NTFkMTNkMmZlMDVhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE4OjU4OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHdpbnN5cy9zdmdhL2RybTogSW5jbHVkZSBzeXMvdHlwZXMuaAorCit2bXdfc2NyZWVuLmggdXNlcyBkZXZfdCB3aGljaCBpcyBkZWZpbmVzIGluIHN5cy90eXBlcy5oCit0aGlzIGhlYWRlciBpcyByZXF1aXJlZCB0byBiZSBpbmNsdWRlZCBmb3IgZ2V0dGluZyBkZXZfdAorZGVmaW5pdGlvbi4gVGhpcyBpc3N1ZSBoYXBwZW5zIG9uIG11c2wgQyBsaWJyYXJ5LCBpdCBpcyBoaWRkZW4KK29uIGdsaWJjIHNpbmNlIHN5cy90eXBlcy5oIGlzIGluY2x1ZGVkIHRocm91Z2ggYW5vdGhlcgorc3lzdGVtIGhlYWRlcnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKK2luZGV4IDBlZjhlODQuLjJlZGE5N2UgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCisrKysgYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCitAQCAtNDEsNiArNDEsNyBAQAorICNpbmNsdWRlICJzdmdhX3dpbnN5cy5oIgorICNpbmNsdWRlICJwaXBlYnVmZmVyL3BiX2J1ZmZlcl9mZW5jZWQuaCIKKyAjaW5jbHVkZSA8b3Mvb3NfdGhyZWFkLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNkZWZpbmUgVk1XX0dNUl9QT09MX1NJWkUgKDE2KjEwMjQqMTAyNCkKKyAjZGVmaW5lIFZNV19RVUVSWV9QT09MX1NJWkUgKDgxOTIpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4Y2FlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGEwMmEwZGZkYTI3MTJkMzBhZDYyYjhmMDQyMWVjN2I4MjQ0YmEyY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/TWljaGVsPTIwRD1DMz1BNG56ZXI/PSA8bWljaGVsLmRhZW56ZXJAYW1kLmNvbT4KK0RhdGU6IFdlZCwgMTAgTWF5IDIwMTcgMTc6MjY6MDcgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGdhbGxpdm06IEZpeCBidWlsZCBhZ2FpbnN0IExMVk0gU1ZOID49IHIzMDI1ODkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZGVyZWdpc3RlckVIRnJhbWVzIGRvZXNuJ3QgdGFrZSBhbnkgcGFyYW1ldGVycyBhbnltb3JlLgorCitSZXZpZXdlZC1ieTogVmVkcmFuIE1pbGV0acSHIDx2ZWRyYW5AbWlsZXRpYy5uZXQ+CitSZXZpZXdlZC1ieTogTWFyZWsgT2zFocOhayA8bWFyZWsub2xzYWtAYW1kLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcCBiL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcAoraW5kZXggMmEzODhjYi4uMGU0YTUzMSAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcAorKysrIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCitAQCAtMzQyLDE0ICszNDIsMjAgQEAgY2xhc3MgRGVsZWdhdGluZ0pJVE1lbW9yeU1hbmFnZXIgOiBwdWJsaWMgQmFzZU1lbW9yeU1hbmFnZXIgeworICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgeworICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKEFkZHIsIExvYWRBZGRyLCBTaXplKTsKKyAgICAgICB9CistICAgICAgdmlydHVhbCB2b2lkIGRlcmVnaXN0ZXJFSEZyYW1lcyh1aW50OF90ICpBZGRyLCB1aW50NjRfdCBMb2FkQWRkciwgc2l6ZV90IFNpemUpIHsKKy0gICAgICAgICBtZ3IoKS0+ZGVyZWdpc3RlckVIRnJhbWVzKEFkZHIsIExvYWRBZGRyLCBTaXplKTsKKy0gICAgICB9CisgI2Vsc2UKKyAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFSEZyYW1lcyhsbHZtOjpTdHJpbmdSZWYgU2VjdGlvbkRhdGEpIHsKKyAgICAgICAgICBtZ3IoKS0+cmVnaXN0ZXJFSEZyYW1lcyhTZWN0aW9uRGF0YSk7CisgICAgICAgfQorICNlbmRpZgorKyNpZiBIQVZFX0xMVk0gPj0gMHgwNTAwCisrICAgICAgdmlydHVhbCB2b2lkIGRlcmVnaXN0ZXJFSEZyYW1lcygpIHsKKysgICAgICAgICBtZ3IoKS0+ZGVyZWdpc3RlckVIRnJhbWVzKCk7CisrICAgICAgfQorKyNlbGlmIEhBVkVfTExWTSA+PSAweDAzMDQKKysgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgeworKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOworKyAgICAgIH0KKysjZW5kaWYKKyAgICAgICB2aXJ0dWFsIHZvaWQgKmdldFBvaW50ZXJUb05hbWVkRnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcgJk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQWJvcnRPbkZhaWx1cmU9dHJ1ZSkgeworICAgICAgICAgIHJldHVybiBtZ3IoKS0+Z2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihOYW1lLCBBYm9ydE9uRmFpbHVyZSk7CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMDE0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDAwYmNkNTk5MzEwZGM3ZmNlNGZlMzM2ZmZkODU5MDI0MjkwNTFhMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJZ29yIEduYXRlbmtvIDxpLmduYXRlbmtvLmJyYWluQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjAgTWFyIDIwMTYgMTM6Mjc6MDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGhhcmR3YXJlIGdsb2F0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KK1NpZ25lZC1vZmYtYnk6IElnb3IgR25hdGVua28gPGkuZ25hdGVua28uYnJhaW5AZ21haWwuY29tPgorLS0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYyB8IDcgKysrKysrKworIHNyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMgfCA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCitpbmRleCA0ZjYxZGU4Li4zYjBlYzc3IDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYworQEAgLTQxMSw2ICs0MTEsMTMgQEAgbGx2bXBpcGVfaXNfZm9ybWF0X3N1cHBvcnRlZCggc3RydWN0IHBpcGVfc2NyZWVuICpfc2NyZWVuLAorICAgIGlmICghZm9ybWF0X2Rlc2MpCisgICAgICAgcmV0dXJuIEZBTFNFOworIAorKyAgIGlmICgoYmluZCAmIFBJUEVfQklORF9SRU5ERVJfVEFSR0VUKSAmJgorKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjlHOUI5RTVfRkxPQVQgJiYKKysgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCAmJgorKyAgICAgICB1dGlsX2Zvcm1hdF9pc19mbG9hdChmb3JtYXQpKSB7CisrICAgICAgcmV0dXJuIEZBTFNFOworKyAgIH0KKysKKyAgICBhc3NlcnQodGFyZ2V0ID09IFBJUEVfQlVGRkVSIHx8CisgICAgICAgICAgIHRhcmdldCA9PSBQSVBFX1RFWFRVUkVfMUQgfHwKKyAgICAgICAgICAgdGFyZ2V0ID09IFBJUEVfVEVYVFVSRV8xRF9BUlJBWSB8fAorZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCitpbmRleCAwMzE2MDJiLi5jMjc5MTIwIDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYworQEAgLTM1OCw2ICszNTgsMTMgQEAgc29mdHBpcGVfaXNfZm9ybWF0X3N1cHBvcnRlZCggc3RydWN0IHBpcGVfc2NyZWVuICpzY3JlZW4sCisgICAgaWYgKCFmb3JtYXRfZGVzYykKKyAgICAgICByZXR1cm4gRkFMU0U7CisgCisrICAgaWYgKChiaW5kICYgUElQRV9CSU5EX1JFTkRFUl9UQVJHRVQpICYmCisrICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SOUc5QjlFNV9GTE9BVCAmJgorKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUICYmCisrICAgICAgIHV0aWxfZm9ybWF0X2lzX2Zsb2F0KGZvcm1hdCkpIHsKKysgICAgICByZXR1cm4gRkFMU0U7CisrICAgfQorKworICAgIGlmIChzYW1wbGVfY291bnQgPiAxKQorICAgICAgIHJldHVybiBGQUxTRTsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTMzYTFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorV2hlbiBidWlsZGluZyBsbHZtIGZyb20gZ2l0IG9yIHN2biBpdCBlbWJlZHMgdGhlIHN2bi9naXQgcmV2aXNpb24gaW50byBpbnRlcm5hbCB2ZXJzaW9uIHN0cmluZworCiskIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3JlaTctNjQtYmVjLWxpbnV4L21lc2EvMl8xNy4xLjUtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9sbHZtNS4wL2xsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCis1LjAuMGdpdC05YTVjMzMzMzg4YworCitXZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMgZG9pbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbWVzYS0xNy4xLjUvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWVzYS0xNy4xLjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKK0BAIC05NjcsNyArOTY3LDcgQEAgc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncygpIHsKKyAKKyBsbHZtX3NldF9lbnZpcm9ubWVudF92YXJpYWJsZXMoKSB7CisgICAgIGlmIHRlc3QgIngkTExWTV9DT05GSUciICE9IHhubzsgdGhlbgorLSAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgZWdyZXAgLW8gJ15bWzAtOS5dXSsnYAorKyAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAorICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAorICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAorICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKK0BAIC0yNTYwLDcgKzI1NjAsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtIiA9IHh5ZXM7IHRoZW4KKyAgICAgZG5sIChTZWUgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02ODIzKQorICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtX3NoYXJlZF9saWJzIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbmAKKysgICAgICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9ufGN1dCAtYzEtNWAKKyAgICAgICAgIEFTX0lGKFt0ZXN0IC1mICIkTExWTV9MSUJESVIvbGliJExMVk1fU09fTkFNRS4kSU1QX0xJQl9FWFQiXSwgW2xsdm1faGF2ZV9vbmVfc289eWVzXSkKKyAKKyAgICAgICAgIGlmIHRlc3QgIngkbGx2bV9oYXZlX29uZV9zbyIgPSB4eWVzOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWVlNWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApAQCAtMCwwICsxLDM3IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBjNzg5NzlmZDk1YTFjNGY3MzJmN2U2ZWRmMGYzMmM1MjRlNTk1NWI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTc6MTA6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbTogY3JlYXRlIHRhcmdldCBkaXJlY3RvcmllcyB3aGVuCisgcmVxdWlyZWQKKworSW4gb3V0LW9mLXRyZWUgYnVpbGRzIHNyYy9pbnRlbC92dWxrYW4gd29uJ3QgZXhpc3QsIHNvIGFsd2F5cyBjcmVhdGUgaXQgYmVmb3JlCit3cml0aW5nIGludG8gaXQuCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CistLS0KKyBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0gYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitpbmRleCAzODU3YTVkYzYyLi4yNmU5Y2Q0MTBjIDEwMDY0NAorLS0tIGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorKysrIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorQEAgLTQ0LDExICs0NCwxMyBAQCBFWFRSQV9ESVNUICs9IFwKKyAJdnVsa2FuL1RPRE8KKyAKKyB2dWxrYW4vZGV2X2ljZC5qc29uIDogdnVsa2FuL2Rldl9pY2QuanNvbi5pbgorKwkkKE1LRElSX0dFTikKKyAJJChBTV9WX0dFTikgJChTRUQpIFwKKyAJCS1lICJzI0BidWlsZF9saWJkaXJAIyR7YWJzX3RvcF9idWlsZGRpcn0vJHtMSUJfRElSfSMiIFwKKyAJCTwgJChzcmNkaXIpL3Z1bGthbi9kZXZfaWNkLmpzb24uaW4gPiAkQAorIAorIHZ1bGthbi9pbnRlbF9pY2QuQGhvc3RfY3B1QC5qc29uIDogdnVsa2FuL2ludGVsX2ljZC5qc29uLmluCisrCSQoTUtESVJfR0VOKQorIAkkKEFNX1ZfR0VOKSAkKFNFRCkgXAorIAkJLWUgInMjQGluc3RhbGxfbGliZGlyQCMke2xpYmRpcn0jIiBcCisgCQk8ICQoc3JjZGlyKS92dWxrYW4vaW50ZWxfaWNkLmpzb24uaW4gPiAkQAorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9saWJnbHVfOS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbGliZ2x1XzkuMC4wLmJiCmluZGV4IDhiOTQ2MTMuLmVlYjg5OGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9saWJnbHVfOS4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2xpYmdsdV85LjAuMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogUEUgPSAiMiIKIFBSID0gIjAiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVkZXNrdG9wLm9yZy9wdWIvbWVzYS9nbHUvZ2x1LSR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9nbHUvZ2x1LSR7UFZ9LnRhci5iejIiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZTkyNDkxMzJmZjQ5Mjc1NDYxY2Y5MjAzOTA4MzAzMCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjdhZDBkMzc5YTcyMmZjYmQzMDNhYTU2NTBjNmQ3ZDU1NDRmZGU4MzE5NmI0MmE3M2QxMTkzNTY4YTRkZjEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfOC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgppbmRleCBlNDNiOWVmLi5iYWUzYjE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgpAQCAtOSw3ICs5LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy94ZGVtb3MvZ2x4Z2VhcnMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT05MTQyMjU3ODU0NTBlZmY2NDRhODZjODcxZDNhZTAwZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMveGRlbW9zL2dseGRlbW8uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTg7bWQ1PWIwMWQ1YWIxYWVlOTRkMzViN2VmYWEyZWY0OGUxYTA2IgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5mcmVlZGVza3RvcC5vcmcvcHViL21lc2EvZGVtb3MvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvZGVtb3MvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNhLWRlbW9zLUFkZC1taXNzaW5nLWRhdGEtZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtQWxsb3ctdG8tZGlzYWJsZS1kZW1vcy13aGljaC1yZXF1aXJlLUdMRVctLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLURFTU9TX0RBVEFfRElSLXRvLWxvY2F0ZS1kYXRhLWZpbGVzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2MDRmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIG1lc2FfJHtQVn0uYmIKLQotU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9tZXNhOiIKLQotUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL21lc2EiCi0KLVMgPSAiJHtXT1JLRElSfS9tZXNhLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJpICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMyNjdlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgbWVzYV8ke1BWfS5iYgorCitTVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9tZXNhIgorCitTID0gIiR7V09SS0RJUn0vbWVzYS0ke1BWfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCmluZGV4IDI1Y2JmNjMuLjRmMzFlZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTEwLDQ3ICsxMCw2NCBAQAogQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgogU0VDVElPTiA9ICJ4MTEiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT04OTlmYmU3ZTQyZDQ5NGM3YzhjMTU5YzcwMDE2OTNkNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT03MjVmOTkxYTFjYzMyMmFhN2EwY2QzYTIwMTY2MjFjNCIKIAogUEUgPSAiMiIKIAotREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KK0RFUEVORFMgPSAiZXhwYXQgbWFrZWRlcGVuZC1uYXRpdmUgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGxpYnhtbDItbmF0aXZlIHpsaWIgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUiCitFWFRSQU5BVElWRVBBVEggKz0gImNocnBhdGgtbmF0aXZlIgogUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wgdmlydHVhbC9tZXNhIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIHZ1bGthbiIKIAotZXhwb3J0IExMVk1fQ09ORklHID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xsdm0tY29uZmlnIgotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZC1nbGFwaSIKK1BMQVRGT1JNUyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICd4MTEgd2F5bGFuZCcsIGQpfSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAnZHJtJywgJycsIGQpfSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImdibSBlZ2wgZ2xlcyBkcmkgXAotCQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSBcCi0JCSIKK2V4cG9ydCBMTFZNX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS1jb25maWcke01FU0FfTExWTV9SRUxFQVNFfSIKK2V4cG9ydCBZT0NUT19BTFRFUk5BVEVfRVhFX1BBVEggPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9L2xsdm0tY29uZmlnIgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZC1nbGFwaSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5jbCBcCisgICAgICAgICAgICAgICAgLS13aXRoLWxsdm0tcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9L2xsdm0ke01FU0FfTExWTV9SRUxFQVNFfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLXBsYXRmb3Jtcz0nJHtQTEFURk9STVN9JyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB2dWxrYW4nLCAnZHJpMycsICcnLCBkKX0gXAorCQkgICAiCisKKyMgImdibSIgcmVxdWlyZXMgImRyaSIsICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0iCiAKIFgxMV9ERVBTID0gInhmODZkcmlwcm90byBnbHByb3RvIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHhmODZ2bSBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyIKKyMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICIsLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgbGliZHJtIgogCiBEUklEUklWRVJTID0gInN3cmFzdCIKIERSSURSSVZFUlNfYXBwZW5kX3g4NiA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCiBEUklEUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgorIyAiZHJpIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSAtLXdpdGgtZHJpLWRyaXZlcnM9JHtEUklEUklWRVJTfSwgLS1kaXNhYmxlLWRyaSwgZHJpMnByb3RvIGxpYmRybSIKIFBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywgLS1kaXNhYmxlLWRyaTMsIGRyaTNwcm90byBwcmVzZW50cHJvdG8gbGlieHNobWZlbmNlIgogCiAjIFZ1bGthbiBkcml2ZXJzIG5lZWQgZHJpMyBlbmFibGVkCiAjIHJhZGVvbiBjb3VsZCBiZSBlbmFibGVkIGFzIHdlbGwgYnV0IHJlcXVpcmVzIGdhbGxpdW0tbGx2bSB3aXRoIGxsdm0gPj0gMy45Ci1QQUNLQUdFQ09ORklHW3Z1bGthbl0gPSAiLS13aXRoLXZ1bGthbi1kcml2ZXJzPWludGVsLCAtLXdpdGhvdXQtdnVsa2FuLWRyaXZlcnMiCitWVUxLQU5fRFJJVkVSUyA9ICIiCitWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2ID0gIixpbnRlbCIKK1ZVTEtBTl9EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLGludGVsIgorUEFDS0FHRUNPTkZJR1t2dWxrYW5dID0gIi0td2l0aC12dWxrYW4tZHJpdmVycz0ke1ZVTEtBTl9EUklWRVJTfSwgLS13aXRob3V0LXZ1bGthbi1kcml2ZXJzIgogCitQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtb3BlbmdsLCAtLWRpc2FibGUtb3BlbmdsIgorCisjICJnbGVzIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1tnbGVzXSA9ICItLWVuYWJsZS1nbGVzMSAtLWVuYWJsZS1nbGVzMiwgLS1kaXNhYmxlLWdsZXMxIC0tZGlzYWJsZS1nbGVzMiIKIAotRUdMX1BMQVRGT1JNUyAgPSAiZHJtIgotRUdMX1BMQVRGT1JNUyAuPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnLHgxMScsICcnLCBkKX0iCi1FR0xfUExBVEZPUk1TIC49IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3dheWxhbmQnLCAnLHdheWxhbmQnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLXdpdGgtZWdsLXBsYXRmb3Jtcz0ke0VHTF9QTEFURk9STVN9LCAtLWRpc2FibGUtZWdsIgorIyAiZWdsIiByZXF1aXJlcyAiZHJpIiwgIm9wZW5nbCIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsIC0tZGlzYWJsZS1lZ2wiCiAKIFBBQ0tBR0VDT05GSUdbZXRuYXZpdl0gPSAiIgogUEFDS0FHRUNPTkZJR1tpbXhdID0gIiIKQEAgLTY1LDkgKzgyLDkgQEAKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKICMga2VlcCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzIHNlcGFyYXRlLCBiZWNhdXNlIHdoZW4gb25seSBvbmUgb2YgZ2FsbGl1bSB2ZXJzaW9ucyBpcyBlbmFibGVkLCBvdGhlciAyIHdlcmUgYWRkaW5nIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMKLVBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLXdpdGgtZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzIgotTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjMuMyIKLVBBQ0tBR0VDT05GSUdbZ2FsbGl1bS1sbHZtXSA9ICItLWVuYWJsZS1nYWxsaXVtLWxsdm0gLS1lbmFibGUtbGx2bS1zaGFyZWQtbGlicywgLS1kaXNhYmxlLWdhbGxpdW0tbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IFwKK1BBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLWVuYWJsZS10ZXh0dXJlLWZsb2F0IC0td2l0aC1nYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMiCitNRVNBX0xMVk1fUkVMRUFTRSA/PSAiNS4wIgorUEFDS0FHRUNPTkZJR1tnYWxsaXVtLWxsdm1dID0gIi0tZW5hYmxlLWxsdm0gLS1lbmFibGUtbGx2bS1zaGFyZWQtbGlicywgLS1kaXNhYmxlLWxsdm0sIGxsdm0ke01FU0FfTExWTV9SRUxFQVNFfSBsbHZtLW5hdGl2ZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAJ2VsZnV0aWxzJyBpZiAke0dBTExJVU1EUklWRVJTX0xMVk0zM19FTkFCTEVEfSBlbHNlICcnfSIKIGV4cG9ydCBXQU5UX0xMVk1fUkVMRUFTRSA9ICIke01FU0FfTExWTV9SRUxFQVNFfSIKIFBBQ0tBR0VDT05GSUdbeGFdICA9ICItLWVuYWJsZS14YSwgLS1kaXNhYmxlLXhhIgpAQCAtNzUsOSArOTIsMTMgQEAKIE9TTUVTQSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtJywgJ2dhbGxpdW0tb3NtZXNhJywgJ29zbWVzYScsIGQpfSIKIFBBQ0tBR0VDT05GSUdbb3NtZXNhXSA9ICItLWVuYWJsZS0ke09TTUVTQX0sLS1kaXNhYmxlLSR7T1NNRVNBfSIKIAorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKKwogIyBsbHZtcGlwZSBpcyBzbG93IGlmIGNvbXBpbGVkIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIgKGUuZy4gLU8yKQogRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKIAorQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCisKICMgTXVsdGlwbGUgdmlydHVhbC9nbCBwcm92aWRlcnMgYmVpbmcgYnVpbHQgYnJlYWtzIHN0YWdpbmcKIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgogCkBAIC0xMDYsOSArMTI3LDEwIEBACiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9lZ2wvKi5sYQogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vZ2FsbGl1bS1waXBlLyoubGEKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2dibS8qLmxhCi0gICAgCisKICAgICAjIGl0IHdhcyBwYWNrYWdlZCBpbiBsaWJkcmljb3JlOS4xLjMtMSBhbmQgcHJldmVudGluZyB1cGdyYWRlcyB3aGVuIGRlYmlhbi5iYmNsYXNzIHdhcyB1c2VkIAogICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2RyaXJjCisgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9L2RyaS8qX2RyaS5zbyB8fCB0cnVlCiB9CiAKICMgRm9yIHRoZSBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIE9wZW5HTCBpbnRlcmZhY2VzLCBpbmplY3QgdmFyaWFibGVzIHNvIHRoYXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4OWU4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZWRlc2t0b3Aub3JnL3B1Yi9tZXNhL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjgwOGU5MmI4OTNkNDEyZmJkNjUxMGUxZDE2ZjVjNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGYxOTFmOTA5ZTAxZTY1ZGUzOGQ1YmRlYTVmYjA1N2YyMTY0OWEzYWVkMjA5NDhiZTAyMzQ4ZTc3YTY4OWQ0IgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5Y2ZjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Z1bGthbi1ta2Rpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQwYmI0MjhhMjYzYmQyOGNiZjY0NzhkYWU0NWIyMDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlmNDcyYTg3NGIxMTIyNDA0ZmEwYmQxM2UyZDZiZjg3ZWIzYjlhZDljMjFkMmYzOTg3MmE5NmQ4M2Q5ZTVmNSIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzNDUxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNSRVYgPSAiZWEwZDFmNTc1YzIxNGMwOWJhM2RmMTI2NDRhOTYwZTg2ZTAzMTc2NiIKLVBWID0gIjEwLjUuNCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQvbWVzYS9tZXNhO2JyYW5jaD0xMC41IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTICs9ICJweXRob24tbWFrby1uYXRpdmUiCi0KLWluaGVyaXQgcHl0aG9ubmF0aXZlCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjU5YTgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCi1ERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCi13aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCi10aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCi1iZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCi1jb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKLSIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjE3YzI2NzIwZjVhODYyYTEyZjdlMTc0NWUyZjFkOTY2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYWJiYThiNWNlNzI4NTIwYzNhMGYxNTM1ZWFiMTllYWMzYzE0YWVlZjdmYWE1YWRlZDkwMDE3Y2VhYzI3MTFkMyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCi0KLUVYVFJBX0FVVE9SRUNPTkYgPSAiIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLQkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCi0JICAgICAgICAiCi0KLUxFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCi1MSUJWID0gIjEuOC4wIgotCi0jIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCi0JZmkKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWMzZDJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCitERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCit3aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCit0aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCitiZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCitjb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKKyIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUwN2M2NzQ2ZmJmNTNmYzlkNDhjNTc3ZjFlMjY1ZGUzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiY2ExNTJiNzM4M2ExZTlmN2ZkNzRhZTk2MDIzZGM2NzcwZGM1MDQzNDE0NzkzYmZlNzY4ZmYwNmI2NzU5ZTU3MyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCisKK0VYVFJBX0FVVE9SRUNPTkYgPSAiIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKwkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCisJICAgICAgICAiCisKK0xFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCitMSUJWID0gIjEuOC4wIgorCisjIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCisJZmkKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCisKK1JQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCisgICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLUNNYWtlLWRlZmluZS1HQk1fQk9fTUFQLW9ubHktd2hlbi1zeW1ib2wtaXMtZm91bmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjM0MjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gNDc2OTdhZWUwNWExMTI0MjJhY2YyMDM5ODIwODVlN2IzZTZjMDViMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9EYW5pZWw9MjBEPUMzPUFEYXo/PSA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFRodSwgNCBNYXkgMjAxNyAwMDo1NzozOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvNF0gQ01ha2U6IGRlZmluZSBHQk1fQk9fTUFQIG9ubHkgd2hlbiBzeW1ib2wgaXMgZm91bmQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotZ2JtX2JvX21hcCgpIGFuZCBfdW5tYXAoKSBoYXZlIGJlZW4gYWRkZWQgcmVjZW50bHkgdG8gTWVzYSwKLWFuZCB0aGlzIHVwZGF0ZSBtYXkgbm90IGhhdmUgcmVhY2hlZCBhbGwgaW1wbGVtZW50YXRpb25zIG9mCi1HQk0sIHN1Y2ggYXMgdGhlIG9uZSBwcm92aWRlZCBieSBNYWxpIHI2LCB3aGVyZSBzYWlkCi1kZWZpbml0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIGhlYWRlciBmaWxlIGJ1dCBub3QgaW4gdGhlCi1saWJyYXJ5IGl0c2VsZi4gVGhpcyBsZWFkcyB0byBlcnJvcnMgbGlrZSB0aGUgZm9sbG93aW5nIHdoZW4KLWxpbmtpbmc6Ci0gIC4uLy4uLy4uLy4uL2xpYi9saWJwaWdsaXR1dGlsX2dsLnNvLjA6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdibV9ib191bm1hcCcKLSAgLi4vLi4vLi4vLi4vbGliL2xpYnBpZ2xpdHV0aWxfZ2wuc28uMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2JtX2JvX21hcCcKLSAgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0gIG1ha2VbMl06ICoqKiBbYmluL3BvaW50LXNwcml0ZV0gRXJyb3IgMQotCi1JbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGhlYWRlciBmaWxlLCBhY3R1YWxseSB0cnkgdG8gbGluawotdXNpbmcgdGhhdCBzeW1ib2wgdG8gZGV0ZXJtaW5lIGlmIFBJR0xJVF9IQVNfR0JNX0JPX01BUAotc2hvdWxkIGJlIGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwaWdsaXRAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgRMOtYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1SZXZpZXdlZC1ieTogSmFuIFZlc2VseSA8amFuLnZlc2VseUBydXRnZXJzLmVkdT4KLVJldmlld2VkLWJ5OiBEeWxhbiBCYWtlciA8ZHlsYW5AcG53YmFrZXJzLmNvbT4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBhNGZmOTllLi5jYzI2ZmE4IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTQxLDggKzE0MSw5IEBAIElGKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkxpbnV4IikKLSAJaWYoR0JNX0ZPVU5EKQotIAkJc2V0KFBJR0xJVF9IQVNfR0JNIFRydWUpCi0gCQlhZGRfZGVmaW5pdGlvbnMoLURQSUdMSVRfSEFTX0dCTSkKLS0JCWlmIChHQk1fVkVSU0lPTiBWRVJTSU9OX0VRVUFMICIxMi4xIiBPUiBHQk1fVkVSU0lPTiBWRVJTSU9OX0dSRUFURVIgIjEyLjEiKQotLQkJCXNldChQSUdMSVRfSEFTX0dCTV9CT19NQVAgVHJ1ZSkKLSsJCXNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVN9ICR7R0JNX0xJQlJBUklFU30pCi0rCQlDSEVDS19GVU5DVElPTl9FWElTVFMoZ2JtX2JvX21hcCBQSUdMSVRfSEFTX0dCTV9CT19NQVApCi0rCQlpZiAoUElHTElUX0hBU19HQk1fQk9fTUFQKQotIAkJCWFkZF9kZWZpbml0aW9ucygtRFBJR0xJVF9IQVNfR0JNX0JPX01BUCkKLSAJCWVuZGlmKCkKLSAJZW5kaWYoR0JNX0ZPVU5EKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDItdXRpbC1lZ2wtSG9ub3VyLVN1cmZhY2VsZXNzLU1FU0EtaW4tZ2V0X2RlZmF1bHRfZGlzcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNhYTFiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBhNjYwOGYyMThiNTAyM2NlZjM2YjNkZTVlYzNjNWYwMGIwMjExZDFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIERpYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDE3IE1heSAyMDE3IDE4OjAwOjE1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSB1dGlsL2VnbDogSG9ub3VyIFN1cmZhY2VsZXNzIE1FU0EgaW4gZ2V0X2RlZmF1bHRfZGlzcGxheQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgRUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MgZXh0ZW5zaW9uIHdhcyBpbnRyb2R1Y2VkIG5vdCB0b28gbG9uZwotYWdvLiBBZGQgc3VwcG9ydCBmb3IgaXQgb3VyIGhlbHBlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCwgc2luY2UgZ2l0IDdiNzQ2MDIuCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgotLS0tCi0gdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWwvcGlnbGl0LXV0aWwtZWdsLmMgYi90ZXN0cy91dGlsL3BpZ2xpdC11dGlsLWVnbC5jCi1pbmRleCAxMDZjNzM1Li4zODlmZTEyIDEwMDY0NAotLS0tIGEvdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYwotKysrIGIvdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYwotQEAgLTg1LDYgKzg1LDcgQEAgcGlnbGl0X2VnbF9nZXRfZGVmYXVsdF9kaXNwbGF5KEVHTGVudW0gcGxhdGZvcm0pCi0gCXN0YXRpYyBib29sIGhhc194MTEgPSBmYWxzZTsKLSAJc3RhdGljIGJvb2wgaGFzX3dheWxhbmQgPSBmYWxzZTsKLSAJc3RhdGljIGJvb2wgaGFzX2dibSA9IGZhbHNlOwotKwlzdGF0aWMgYm9vbCBoYXNfc3VyZmFjZWxlc3NfbWVzYSA9IGZhbHNlOwotIAotIAlzdGF0aWMgRUdMRGlzcGxheSAoKnBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQpKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwbGF5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLSAKLUBAIC05OSw2ICsxMDAsNyBAQCBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSkKLSAJCWhhc194MTEgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX3gxMSIpOwotIAkJaGFzX3dheWxhbmQgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX3dheWxhbmQiKTsKLSAJCWhhc19nYm0gPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX2dibSIpOwotKwkJaGFzX3N1cmZhY2VsZXNzX21lc2EgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfTUVTQV9wbGF0Zm9ybV9zdXJmYWNlbGVzcyIpOwotIAotIAkJcGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9ICh2b2lkKikgZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpOwotIAl9Ci1AQCAtMTIzLDYgKzEyNSwxMSBAQCBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSkKLSAJCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0gCQl9Ci0gCQlicmVhazsKLSsJY2FzZSBFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQToKLSsJCWlmICghaGFzX3N1cmZhY2VsZXNzX21lc2EpIHsKLSsJCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0rCQl9Ci0rCQlicmVhazsKLSAJZGVmYXVsdDoKLSAJCWZwcmludGYoc3RkZXJyLCAiJXM6IHVucmVjb2duaXplZCBwbGF0Zm9ybSAlI3hcbiIsIF9fZnVuY19fLCBwbGF0Zm9ybSk7Ci0gCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAzLWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLURvbi10LXVzZS1lZ2xHZXRQbGF0Zm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMy1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Eb24tdC11c2UtZWdsR2V0UGxhdGZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjI0ZGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAzLWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLURvbi10LXVzZS1lZ2xHZXRQbGF0Zm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGMwZGM0MzBiOGY1ZGVlYWNkYjExY2QxODgxOTVlMTZmNTEyYWYyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgRGlheiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFdlZCwgMTcgTWF5IDIwMTcgMTg6MDA6MTYgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIGVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzOiBEb24ndCB1c2UKLSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgZGlyZWN0bHkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlIGVudHJ5IHBvaW50IGlzIG5vdCBndWFyYW50ZWVkIHRvIGV4aXN0LCBzbyB1c2UgdGhlCi1waWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoKSBoZWxwZXIgd2hpY2ggZG9lcyB0aGUgY29ycmVjdCB0aGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCwgc2luY2UgZ2l0IDdiNzQ2MDIuCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgotLS0tCi0gLi4uL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYyAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jIGIvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYwotaW5kZXggM2JiZDZhYS4uODFhMzkxOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLSsrKyBiL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLUBAIC0zMSw3ICszMSw3IEBAIHRlc3Rfc2V0dXAoRUdMRGlzcGxheSAqZHB5KQotIAotIAlwaWdsaXRfcmVxdWlyZV9lZ2xfZXh0ZW5zaW9uKEVHTF9OT19ESVNQTEFZLCAiRUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MiKTsKLSAKLS0JKmRweSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQSwgTlVMTCwgTlVMTCk7Ci0rCSpkcHkgPSBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMX1BMQVRGT1JNX1NVUkZBQ0VMRVNTX01FU0EpOwotIAlpZiAoKmRweSA9PSBFR0xfTk9fRElTUExBWSkgewotIAkJcHJpbnRmKCJmYWlsZWQgdG8gZ2V0IEVHTERpc3BsYXlcbiIpOwotIAkJcGlnbGl0X3JlcG9ydF9yZXN1bHQoUElHTElUX1NLSVApOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwNC1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Vc2UtRVhULWZ1bmN0aW9ucy1mb3ItLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDQtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtVXNlLUVYVC1mdW5jdGlvbnMtZm9yLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk1MmFmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwNC1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Vc2UtRVhULWZ1bmN0aW9ucy1mb3ItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA1N2RlMWZmNjc1OGVjNWVhNGE1MjYzN2YyMzNlM2UzMTUwMDg2MjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIERpYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDE3IE1heSAyMDE3IDE4OjAwOjE3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBlZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzczogVXNlIEVYVCBmdW5jdGlvbnMgZm9yCi0gc3VyZmFjZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlc2UgRVhUIHN5bWJvbHMgYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3Qgc2luY2UgdGhleSByZXF1aXJlCi1FR0xfRVhUX3BsYXRmb3JtX2Jhc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQsIHNpbmNlIGdpdCA3Yjc0NjAyLgotCi1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgRMOtYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1SZXZpZXdlZC1ieTogRW1pbCBWZWxpa292IDxlbWlsLnZlbGlrb3ZAY29sbGFib3JhLmNvbT4KLS0tLQotIC4uLi9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYyBiL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLWluZGV4IDgxYTM5MTkuLjI2NGVkNzEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jCi0rKysgYi90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jCi1AQCAtMjQsNiArMjQsMjQgQEAKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwuaCIKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwtZWdsLmgiCi0gCi0rLyogRXh0ZW5zaW9uIGZ1bmN0aW9uIHBvaW50ZXJzLgotKyAqCi0rICogVXNlIHByZWZpeCAncGVnbCcgKHBpZ2xpdCBlZ2wpIGluc3RlYWQgb2YgJ2VnbCcgdG8gYXZvaWQgY29sbGlzaW9ucyB3aXRoCi0rICogcHJvdG90eXBlcyBpbiBlZ2xleHQuaC4gKi8KLStFR0xTdXJmYWNlICgqcGVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZUVYVCkoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcgY29uZmlnLAotKwkgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVfcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLStFR0xTdXJmYWNlICgqcGVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZUVYVCkoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcgY29uZmlnLAotKwkgICAgTmF0aXZlV2luZG93VHlwZSBuYXRpdmVfd2luZG93LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLSsKLStzdGF0aWMgdm9pZAotK2luaXRfZWdsX2V4dGVuc2lvbl9mdW5jcyh2b2lkKQotK3sKLSsJcGVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZUVYVCA9ICh2b2lkKikKLSsJCWVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2VFWFQiKTsKLSsJcGVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZUVYVCA9ICh2b2lkKikKLSsJCWVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2VFWFQiKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSB0ZXN0X3NldHVwKEVHTERpc3BsYXkgKmRweSkKLSB7Ci1AQCAtNzIsNyArOTAsNyBAQCB0ZXN0X2NyZWF0ZV93aW5kb3codm9pZCAqdGVzdF9kYXRhKQotIAotIAl0ZXN0X3NldHVwKCZkcHkpOwotIAotLQlzdXJmID0gZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0rCXN1cmYgPSBwZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlRVhUKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0gCQkJCQkgICAgICAvKm5hdGl2ZV93aW5kb3cqLyBOVUxMLAotIAkJCQkJICAgICAgLyphdHRyaWJfbGlzdCovIE5VTEwpOwotIAlpZiAoc3VyZikgewotQEAgLTEwMyw3ICsxMjEsNyBAQCB0ZXN0X2NyZWF0ZV9waXhtYXAodm9pZCAqdGVzdF9kYXRhKQotIAotIAl0ZXN0X3NldHVwKCZkcHkpOwotIAotLQlzdXJmID0gZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0rCXN1cmYgPSBwZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlRVhUKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0gCQkJCQkgICAgICAvKm5hdGl2ZV93aW5kb3cqLyBOVUxMLAotIAkJCQkJICAgICAgLyphdHRyaWJfbGlzdCovIE5VTEwpOwotIAlpZiAoc3VyZikgewotQEAgLTIwNSw2ICsyMjMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KFBJR0xJVF9GQUlMKTsKLSAJfQotIAotKwlpbml0X2VnbF9leHRlbnNpb25fZnVuY3MoKTsKLSAJcmVzdWx0ID0gcGlnbGl0X3J1bl9zZWxlY3RlZF9zdWJ0ZXN0cyhzdWJ0ZXN0cywgc2VsZWN0ZWRfbmFtZXMsCi0gCQkJCQkgICAgICBudW1fc2VsZWN0ZWQsIHJlc3VsdCk7Ci0gCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KHJlc3VsdCk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCmluZGV4IDJlYTU3NzkuLmQyNzRhOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtNSwxNCArNSwxMSBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9waWdsaXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1pbnN0YWxsLWJhc2gtY29tcGxldGlvbnMtaW4tdGhlLXJpZ2h0LXBsYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtVXNlLUZFX1VQV0FSRC1vbmx5LWlmLWl0cy1kZWZpbmVkLWluLWZlbnYuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlLWRlZmluZS1HQk1fQk9fTUFQLW9ubHktd2hlbi1zeW1ib2wtaXMtZm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtRG9uLXQtdXNlLWVnbEdldFBsYXRmby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLVVzZS1FWFQtZnVuY3Rpb25zLWZvci0ucGF0Y2ggXAogICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAotIyBGcm9tIDIwMTctMDItMDYKLVNSQ1JFViA9ICJjYTU4ZWVjMGI5NjU2NTVjN2ViYTU5MmE2MzRjYmY0YWFkZmJjNjc1IgorIyBGcm9tIDIwMTctMDctMDMKK1NSQ1JFViA9ICJjOGY0ZmQ5ZWViMjk4YTJlZjA4NTU5MjdmMjI2MzRmNzk0ZWYzZWZmIgogIyAod2hlbiBQViBnb2VzIGFib3ZlIDEuMCByZW1vdmUgdGhlIHRyYWlsaW5nIHIpCiBQViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzEuMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzEuMDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MjEyZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18xLjA0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJlcmF0aW9uKHRtKSBGb250cyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaWJlcmF0aW9uKHRtKSBGb250cyBpcyBhIGZvbnQgZmFtaWx5IG9yaWdpbmFsbHkgXAotY3JlYXRlZCBieSBBc2NlbmRlcihjKSB3aGljaCBhaW1zIGF0IG1ldHJpYyBjb21wYXRpYmlsaXR5IHdpdGggXAotQXJpYWwsIFRpbWVzIE5ldyBSb21hbiwgQ291cmllciBOZXcuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL2xpYmVyYXRpb24tZm9udHMvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vIgotCi1SRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICIyLnggZGVwZW5kcyBvbiBmb250Zm9yZ2UgcGFja2FnZSwgd2hpY2ggaXMgbm90IHlldCBwcm92aWRlZCBpbiBvZS1jb3JlIgotCi1TRUNUSU9OID0gIngxMS9mb250cyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLVBSID0gInI0IgotUEUgPSAiMSIKLQotaW5oZXJpdCBhbGxhcmNoIGZvbnRjYWNoZQotCi1GT05UX1BBQ0tBR0VTID0gIiR7UE59IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9saWJlcmF0aW9uLWZvbnRzL2xpYmVyYXRpb24tZm9udHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzMwLWxpYmVyYXRpb24tYWxpYXNlcy5jb25mIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDg0Njc5N2VmMGZjNzBiMGNiYWVkZTI1MTQ2NzdjNTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUwZDA5NTdjODViNzU4NTYxYTNkNGFlZjRlYmNkMmMzOTk1OWU1MzI4NDI5ZDk2YWUxMDYyNDlkODM1MzFhMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYvCi0JZm9yIGkgaW4gKi50dGY7IGRvCi0JCWluc3RhbGwgLW0gMDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9Ci0JZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9mb250cy9jb25mLmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvY29uZi5kLwotCi0JaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2RvYy8ke0JQTn0vCi0JaW5zdGFsbCAtbSAwNjQ0IExpY2Vuc2UudHh0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMi4wMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18yLjAwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyZGE0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMi4wMC4xLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiTGliZXJhdGlvbih0bSkgRm9udHMiCitERVNDUklQVElPTiA9ICJUaGUgTGliZXJhdGlvbih0bSkgRm9udHMgaXMgYSBmb250IGZhbWlseSBvcmlnaW5hbGx5IFwKK2NyZWF0ZWQgYnkgQXNjZW5kZXIoYykgd2hpY2ggYWltcyBhdCBtZXRyaWMgY29tcGF0aWJpbGl0eSB3aXRoIFwKK0FyaWFsLCBUaW1lcyBOZXcgUm9tYW4sIENvdXJpZXIgTmV3LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9saWJlcmF0aW9uLWZvbnRzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tLyIKKworU0VDVElPTiA9ICJ4MTEvZm9udHMiCitMSUNFTlNFID0gIk9GTC0xLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOTZkYjk3MGE5YTQ2YzUzNjkxNDJiOTlmNTMwMzY2YiIKK1BFID0gIjEiCisKK2luaGVyaXQgYWxsYXJjaCBmb250Y2FjaGUKKworRk9OVF9QQUNLQUdFUyA9ICIke1BOfSIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbGliZXJhdGlvbi1mb250cy9saWJlcmF0aW9uLWZvbnRzLXR0Zi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJlcmF0aW9uLWZvbnRzLXR0Zi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjVjNzgxNzIzYTBkOWVkNjE4ODk2MGRlZmJhOGU5MWNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4OTAyNzhhNmNkMTc4NzNjNTdkOWNkNzg1YzJkMjMwZDlhYmRlYTgzN2U5NjUxNjAxOWM1ODg1ZGQyNzE1MDQiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZm9udHMvdHRmLworCWZvciBpIGluICoudHRmOyBkbworCQlpbnN0YWxsIC1tIDA2NDQgJGkgJHtEfSR7cHJlZml4fS9zaGFyZS9mb250cy90dGYvJHtpfQorCWRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvY29uZi5kLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzMwLWxpYmVyYXRpb24tYWxpYXNlcy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2NvbmYuZC8KKworCWluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS9zaGFyZS9kb2MvJHtCUE59LworCWluc3RhbGwgLW0gMDY0NCBMSUNFTlNFICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk2YTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjUyYzhkMDZmNWQ2NDk4YWZkNjZkZjk4M2RhMzQ4YTZiMTEyZjEzMTQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMyYzhmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSA1NTc3MGZiMDdjNDJmZTQxMGNmOGQwOWY4ZjU5NzZiYWJjODliOWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgNCBKdWwgMjAxNyAxNzoxMzo0NSArMDMwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBkZW1vcyB3aXRoIHF1ZXN0aW9uYWJseSBsaWNlbnNlZCBkYXRhCisKK1NvbWUgb2YgdGhlIG1vZGVscyBkb24ndCBoYXZlIG9wZW4gc291cmNlIGNvbXBhdGlibGUgbGljZW5zZXM6Citkb24ndCBidWlsZCBkZW1vcyB1c2luZyB0aG9zZS4gQWxzbyBkb24ndCBidWlsZCBkZW1vcyB0aGF0IG5lZWQKK3Jlc291cmNlcyB0aGF0IGFyZSBub3QgaW5jbHVkZWQuCisKK3NzYW86CitzY2VuZXJlbmRlcmluZzoKKwlTaWJlbmlrIG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisKK2RlZmVycmVkOgorZGVmZXJyZWRtdWx0aXNhbXBsaW5nOgorZGVmZXJyZWRzaGFkb3dzOgorCWFybW9yIG1vZGVsLCBDQy1CWS0zLjAKKwordnVsa2Fuc2NlbmU6CitpbWd1aToKK3NoYWRvd21hcHBpbmc6CisJdnVsa2Fuc2NlbmUgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKworaW5kaXJlY3RkcmF3OgorCXBsYW50IG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisKK2hkcjoKK3BicmlibDoKK3BicnRleHR1cmU6CisJUmVxdWlyZSBleHRlcm5hbCBWdWxrYW4gQXNzZXQgUGFjaworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAxMyAtLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNDk1OGZmZi4uMGY5ZDNlNCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE1MCwxNyArMTUwLDExIEBAIHNldChFWEFNUExFUworIAljb21wdXRlcGFydGljbGVzCisgCWNvbXB1dGVzaGFkZXIKKyAJZGVidWdtYXJrZXIKKy0JZGVmZXJyZWQKKy0JZGVmZXJyZWRtdWx0aXNhbXBsaW5nCistCWRlZmVycmVkc2hhZG93cworIAlkaXNwbGFjZW1lbnQKKyAJZGlzdGFuY2VmaWVsZGZvbnRzCisgCWR5bmFtaWN1bmlmb3JtYnVmZmVyCisgCWdlYXJzCisgCWdlb21ldHJ5c2hhZGVyCistCWhkcgorLQlpbWd1aQorLQlpbmRpcmVjdGRyYXcJCisgCWluc3RhbmNpbmcKKyAJbWVzaAorIAltdWx0aXNhbXBsaW5nCitAQCAtMTcwLDIwICsxNjQsMTQgQEAgc2V0KEVYQU1QTEVTCisgCXBhcmFsbGF4bWFwcGluZworIAlwYXJ0aWNsZWZpcmUKKyAJcGJyYmFzaWMKKy0JcGJyaWJsCistCXBicnRleHR1cmUKKyAJcGlwZWxpbmVzCisgCXB1c2hjb25zdGFudHMKKyAJcmFkaWFsYmx1cgorIAlyYXl0cmFjaW5nCistCXNjZW5lcmVuZGVyaW5nCisgCXNjcmVlbnNob3QKKy0Jc2hhZG93bWFwcGluZworLQlzaGFkb3dtYXBwaW5nb21uaQorIAlza2VsZXRhbGFuaW1hdGlvbgorIAlzcGVjaWFsaXphdGlvbmNvbnN0YW50cworIAlzcGhlcmljYWxlbnZtYXBwaW5nCistCXNzYW8KKyAJc3VicGFzc2VzCisgCXRlcnJhaW50ZXNzZWxsYXRpb24KKyAJdGVzc2VsbGF0aW9uCitAQCAtMTk2LDcgKzE4NCw2IEBAIHNldChFWEFNUExFUworIAl0ZXh0dXJlc3BhcnNlcmVzaWRlbmN5CisgCXRyaWFuZ2xlCisgCXZpZXdwb3J0YXJyYXkKKy0JdnVsa2Fuc2NlbmUKKyApCisgCisgYnVpbGRFeGFtcGxlcygpCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODFiMzQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGIwNDk1ZWZiNmMzZWEzYTUzMGZjYmFkZGFjODZkYTU3ZWNjZTVhNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxMCBKdWwgMjAxNyAxMzoxMToxMiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24geDg2CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3zCoGZ1bmNfY29tbW9uLmlubDoxOTM6NTE6IGVycm9yOiB3cm9uZyBudW1iZXIgb2YgdGVtcGxhdGUgYXJndW1lbnRzCit8wqAoNSwgc2hvdWxkIGJlIDYpIHN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisKK1RoZSBmaXggaXMgYmFja3BvcnRlZCBmcm9tIHRoZSB1cHN0cmVhbSBnbG0gcHJvamVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4vaXNzdWVzLzM1Nl0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBleHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sIGIvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCitpbmRleCBjYWZhZWQ1Li4yZGQ5NGUxIDEwMDY0NAorLS0tIGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCisrKysgYi9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKK0BAIC0xOTAsMTIgKzE5MCwxMiBAQCBuYW1lc3BhY2UgZGV0YWlsCisgCisgIwlpZiBHTE1fQVJDSCA9PSBHTE1fQVJDSF9YODYKKyAJdGVtcGxhdGU8bGVuZ3RoX3QgTCwgdHlwZW5hbWUgVCwgcHJlY2lzaW9uIFAsIHRlbXBsYXRlPGxlbmd0aF90LCB0eXBlbmFtZSwgcHJlY2lzaW9uPiBjbGFzcyB2ZWNUeXBlLCBib29sIEFsaWduZWQ+CistCXN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisrCXN0cnVjdCBjb21wdXRlX3NpZ248TCwgVCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisgCXsKKyAJCUdMTV9GVU5DX1FVQUxJRklFUiBzdGF0aWMgdmVjVHlwZTxMLCBULCBQPiBjYWxsKHZlY1R5cGU8TCwgVCwgUD4gY29uc3QgJiB4KQorIAkJeworIAkJCVQgY29uc3QgU2hpZnQoc3RhdGljX2Nhc3Q8VD4oc2l6ZW9mKFQpICogOCAtIDEpKTsKKy0JCQl2ZWNUeXBlPEwsIFQsIFA+IGNvbnN0IHkodmVjVHlwZTx0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlLCBQPigteCkgPj4gdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZShTaGlmdCkpOworKwkJCXZlY1R5cGU8TCwgVCwgUD4gY29uc3QgeSh2ZWNUeXBlPEwsIHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUsIFA+KC14KSA+PiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlKFNoaWZ0KSk7CisgCisgCQkJcmV0dXJuICh4ID4+IFNoaWZ0KSB8IHk7CisgCQl9CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRkZWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gZWRjYTY2NzY4NDc2NGNmY2MwNDYwZTQ0OGU4MzRmYWRmNjIzYTg4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDMgSnVsIDIwMTcgMTQ6NDk6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBpbnN0YWxsaW5nIGRlbW9zLCBzdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcworCitUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBjcm9zcy1jb21waWxlIHNpdHVhdGlvbiB3aGVyZSB0ZXN0aW5nCitoYXBwZW5zIG9uIHRhcmdldC4KKworLURSRVNPVVJDRV9JTlNUQUxMX0RJUj08cGF0aD4gZGVjaWRlcyB3aGVyZSBkYXRhIGlzIGluc3RhbGxlZCAoYW5kCit3aGVyZSB0aGUgYmluYXJpZXMgd2lsbCBsb2FkIHRoZSBkYXRhIGZyb20pOiBpZiBpdCdzIGxlZnQgZW1wdHksCit0aGVuIG5vdGhpbmcgd2lsbCBiZSBpbnN0YWxsZWQgYW5kIGJpbmFyaWVzIHdpbGwgbG9hZCB0aGUgZGF0YSBmcm9tCitDTUFLRV9TT1VSQ0VfRElSLgorCitCaW5hcmllcyBhcmUgbm93IGNvcnJlY3RseSBidWlsdCBpbiBDTUFLRV9CSU5BUllfRElSLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuL3B1bGwvMzUyXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKystCisgYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAgfCAgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI5ODg2YmMuLjQ5NThmZmYgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNiw2ICsxNiw4IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoYmFzZSkKKyBPUFRJT04oVVNFX0QyRF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIERpcmVjdCB0byBEaXNwbGF5IHN3YXBjaGFpbiIgT0ZGKQorIE9QVElPTihVU0VfV0FZTEFORF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIFdheWxhbmQgc3dhcGNoYWluIiBPRkYpCisgCisrc2V0KFJFU09VUkNFX0lOU1RBTExfRElSICIiIENBQ0hFIFBBVEggIlBhdGggdG8gaW5zdGFsbCByZXNvdXJjZXMgdG8gKGxlYXZlIGVtcHR5IGZvciBydW5uaW5nIHVuaW5zdGFsbGVkKSIpCisrCisgIyBVc2UgRmluZFZ1bGthbiBtb2R1bGUgYWRkZWQgd2l0aCBDTUFLRSAzLjcKKyBpZiAoTk9UIENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuNy4wKQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgbW9kdWxlIHRvIGZpbmQgVnVsa2FuIikKK0BAIC0xMDgsNiArMTEwLDEwIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZSBFWEFNUExFX05BTUUpCisgCQlhZGRfZXhlY3V0YWJsZSgke0VYQU1QTEVfTkFNRX0gJHtNQUlOX0NQUH0gJHtTT1VSQ0V9ICR7U0hBREVSU30pCisgCQl0YXJnZXRfbGlua19saWJyYXJpZXMoJHtFWEFNUExFX05BTUV9ICR7VnVsa2FuX0xJQlJBUll9ICR7QVNTSU1QX0xJQlJBUklFU30gJHtXQVlMQU5EX0NMSUVOVF9MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCisgCWVuZGlmKFdJTjMyKQorKworKwlpZihSRVNPVVJDRV9JTlNUQUxMX0RJUikKKysJCWluc3RhbGwoVEFSR0VUUyAke0VYQU1QTEVfTkFNRX0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisrCWVuZGlmKCkKKyBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGUpCisgCisgIyBCdWlsZCBhbGwgZXhhbXBsZXMKK0BAIC0xMTcsNiArMTIzLDEzIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZXMpCisgCWVuZGZvcmVhY2goRVhBTVBMRSkKKyBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGVzKQorIAorK2lmKFJFU09VUkNFX0lOU1RBTExfRElSKQorKwlhZGRfZGVmaW5pdGlvbnMoLURWS19FWEFNUExFX0RBVEFfRElSPVwiJHtSRVNPVVJDRV9JTlNUQUxMX0RJUn0vXCIpCisrCWluc3RhbGwoRElSRUNUT1JZIGRhdGEvIERFU1RJTkFUSU9OICR7UkVTT1VSQ0VfSU5TVEFMTF9ESVJ9LykKKytlbHNlKCkKKysJYWRkX2RlZmluaXRpb25zKC1EVktfRVhBTVBMRV9EQVRBX0RJUj1cIiR7Q01BS0VfU09VUkNFX0RJUn0vZGF0YS9cIikKKytlbmRpZigpCisrCisgIyBDb21waWxlciBzcGVjaWZpYyBzdHVmZgorIElGKE1TVkMpCisgCVNFVChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAvRUhzYyIpCitAQCAtMTI4LDcgKzE0MSw3IEBAIEVMU0UoV0lOMzIpCisgCWxpbmtfbGlicmFyaWVzKCR7WENCX0xJQlJBUklFU30gJHtWdWxrYW5fTElCUkFSWX0pCisgRU5ESUYoV0lOMzIpCisgCistc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9iaW4vIikKKytzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2Jpbi8iKQorIAorIHNldChFWEFNUExFUyAKKyAJYmxvb20KK2RpZmYgLS1naXQgYS9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcCBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCitpbmRleCA2NDczNjhhLi5hMGYyOGE1IDEwMDY0NAorLS0tIGEvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAKKysrKyBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCitAQCAtODQsNyArODQsNyBAQCBjb25zdCBzdGQ6OnN0cmluZyBWdWxrYW5FeGFtcGxlQmFzZTo6Z2V0QXNzZXRQYXRoKCkKKyAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAJcmV0dXJuICIiOworICNlbHNlCistCXJldHVybiAiLi8uLi9kYXRhLyI7CisrCXJldHVybiBWS19FWEFNUExFX0RBVEFfRElSOworICNlbmRpZgorIH0KKyAjZW5kaWYKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiODk0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIkNvbGxlY3Rpb24gb2YgVnVsa2FuIGV4YW1wbGVzIgorTElDRU5TRSA9ICJNSVQiCitERVBFTkRTID0gInpsaWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWRjZjQ3MzcyM2ZhYWJmMTdiYWE5YjVmMjIwNzU5OWQwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaWFuZ2xlL3RyaWFuZ2xlLmNwcDtlbmRsaW5lPTEyO21kNT1iY2NkMWJmOWNhZGQ5ZTEwMDg2Y2Y3ODcyMTU3ZTRmYSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIFwKKyIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorU1JDUkVWID0gIjE4ZGYwMGM3YjQ2NzdiMDg4OTQ4NmUxNjk3Nzg1N2FhOTg3OTQ3ZTIiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAndnVsa2FuJworCitpbmhlcml0IGNtYWtlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworREVQRU5EUyA9ICJ2dWxrYW4gYXNzaW1wIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBSZW1vdmUgYXNzZXRzIHRoYXQgaGF2ZSB1bmNlcnRhaW4gbGljZW5zZXMKKyAgICBybSAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvbW9kZWxzL2FybW9yLyogXAorICAgICAgICR7RH0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcy9tb2RlbHMvc2liZW5pay8qIFwKKyAgICAgICAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvbW9kZWxzL3Z1bGthbnNjZW5lKiBcCisgICAgICAgJHtEfSR7ZGF0YWRpcn0vdnVsa2FuLWRlbW9zL21vZGVscy9wbGFudHMuZGFlIFwKKyAgICAgICAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvdGV4dHVyZXMvdGV4dHVyZWFycmF5X3BsYW50cyoKKworICAgIG12ICR7RH0ke2JpbmRpcn0vc2NyZWVuc2hvdCAke0R9JHtiaW5kaXJ9L3Z1bGthbi1zY3JlZW5zaG90Cit9CisKK0VYVFJBX09FQ01BS0UgPSAiLURSRVNPVVJDRV9JTlNUQUxMX0RJUj0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcyIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworIyBDYW4gb25seSBwaWNrIG9uZSBvZiBbd2F5bGFuZCx4Y2JdCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJ3hjYicgLGQpfSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURVU0VfV0FZTEFORF9XU0k9T04sIC1EVVNFX1dBWUxBTkRfV1NJPU9GRiwgd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeGNiXSA9ICIsLGxpYnhjYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk0OTIyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vMDAwMS1Vc2UtZ2V0ZW52LWlmLXNlY3VyZV9nZXRlbnYtZG9lcy1ub3QtZXhpc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDIwNTI1YWRkMWRmOGUxZmIxM2ZlZjkwYWMwNjhmOTgyZGVmOGI5NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA4IE1hciAyMDE3IDEzOjIzOjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBnZXRlbnYoKSBpZiBzZWN1cmVfZ2V0ZW52KCkgZG9lcyBub3QgZXhpc3QKLQotbXVzbCBkb2VzIG5vdCBpbXBsZW1lbnQgc2VjdXJlIHZlcnNpb246IGRlZmF1bHQgdG8gZ2V0ZW52KCkgaW4gdGhhdAotY2FzZS4KLQotaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy9pc3N1ZXMvMTUzOAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBsb2FkZXIvbG9hZGVyLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sb2FkZXIvbG9hZGVyLmMgYi9sb2FkZXIvbG9hZGVyLmMKLWluZGV4IDI0NzU4ZjQuLmJmZjc5YzEgMTAwNjQ0Ci0tLS0gYS9sb2FkZXIvbG9hZGVyLmMKLSsrKyBiL2xvYWRlci9sb2FkZXIuYwotQEAgLTU0LDYgKzU0LDEwIEBACi0gI2VuZGlmCi0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fc2VjdXJlX2dldGVudikKLSsjZGVmaW5lIF9fc2VjdXJlX2dldGVudiBnZXRlbnYKLSsjZW5kaWYKLSsKLSBzdHJ1Y3QgbG9hZGVyX3N0cnVjdCBsb2FkZXIgPSB7MH07Ci0gLy8gVExTIGZvciBpbnN0YW5jZSBmb3IgYWxsb2MvZnJlZSBjYWxsYmFja3MKLSBUSFJFQURfTE9DQUxfREVDTCBzdHJ1Y3QgbG9hZGVyX2luc3RhbmNlICp0bHNfaW5zdGFuY2U7Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuMzkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuMzkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkMWM0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjM5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgotREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKLXRoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAotcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCi10aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05OWM2NDdjYTNkNGY2YTRiOWQ4NjI4Zjc1N2FhZDE1NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2FkZXIvbG9hZGVyLmM7ZW5kbGluZT0yNTttZDU9YTg3Y2Q1NDQyMjkxYzIzZDFmY2U0ZWVjZTRjZmRlOWQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzLmdpdDticmFuY2g9c2RrLTEuMC4zOSBcCi0gICAgICAgICAgIGZpbGU6Ly9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaCBcCi0iCi1TUkNSRVYgPSAiOWMyMWVkMGZiMjc1NTg5YzNhZjYxMThhZWM5ZWY0ZjFkMTU0NGRjMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotCi1pbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlMzliYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgorREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKK3RoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAorcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCit0aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05OWM2NDdjYTNkNGY2YTRiOWQ4NjI4Zjc1N2FhZDE1NiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2FkZXIvbG9hZGVyLmM7ZW5kbGluZT0yNTttZDU9YTg3Y2Q1NDQyMjkxYzIzZDFmY2U0ZWVjZTRjZmRlOWQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzLmdpdDticmFuY2g9c2RrLTEuMC41MSBcCisgICAgICAgICAgIGZpbGU6Ly9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBcCisiCitTUkNSRVYgPSAiOGQwMjFlNGQ1YTlmOTE0MzZmNDQ2MmRmMWRhZmIyMjI5MDhlMjk2ZCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0VYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Njc1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDVlODg2NGM1YjdhMmUyNThlZWEwNDFiMGVmNjZkYWM3ZmNhYjliN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDA5OjQ3OjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggcmFjZSBpbiAoYXV0b3Rvb2xzKSBpbnN0YWxsCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK2V4ZWMvZGF0YSBkaXN0aW5jdGlvbiBpcyBkb25lIGJhc2VkIG9uIGluc3RhbGwgZGlyIHNvIGNvbXBhdCBzY3JpcHRzCittdXN0IGJlIG1vdmVkIGluIGV4ZWMgaG9vay4KKworVGhpcyBzaG91bGQgZml4IHRoaXMgb2NjYXNpb25hbCBmYWlsdXJlOgorfMKgaW5zdGFsbDogY2Fubm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZgorfMKg4oCYL3Vzci9iaW4vbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdOKAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKy0tLQorIHRvb2xzL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQoraW5kZXggMmM4NjYwYi4uN2VlOGI5MCAxMDA2NDQKKy0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCisrKysgYi90b29scy9NYWtlZmlsZS5hbQorQEAgLTYzLDcgKzYzLDcgQEAgZW5kaWYKKyAKKyBFWFRSQV9ESVNUID0gbWFrZS1wdHJhY2NlbC1ncmFwaHMuc2ggaW5zdGFsbC1jb21wYXQtc2NyaXB0cy5zaCAkKGJpbl9TQ1JJUFRTKQorIAorLWluc3RhbGwtZGF0YS1ob29rOgorK2luc3RhbGwtZXhlYy1ob29rOgorIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1saXN0LWRldmljZXMuY29tcGF0IGxpYmlucHV0LWxpc3QtZGV2aWNlcykKKyAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbXYgbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdCBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMpCisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0L3RvdWNocGFkLXNlcmlhbC1zeW5hcHRpY3MtbmVlZC10by1mYWtlLW5ldy10b3VjaGVzLW9uLVRSSVBMRVRBUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyYjQ5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotVGhpcyBpcyBhIHdvcmthcm91bmQgdXBzdHJlYW0gc3VnZ2VzdHMgZm9yIHVzZSB3aXRoIGtlcm5lbCA0LjEuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdGVtcG9yYXJ5IHdvcmstYXJvdW5kXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi0KLUZyb206IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci1EYXRlOiBNb24gQXVnIDMgMTg6MjM6MTIgUERUIDIwMTUKLVN1YmplY3Q6IFtQQVRDSCB2MyBsaWJpbnB1dF0gdG91Y2hwYWQ6IHNlcmlhbCBzeW5hcHRpY3MgbmVlZCB0byBmYWtlIG5ldyB0b3VjaGVzIG9uIFRSSVBMRVRBUAotCi1PbiB0aGUgNC4xIGtlcm5lbHMgc3luYXB0aWNzIHByZXRlbmRzIHRvIGhhdmUgMyBzbG90cyAodGhlIHNlcmlhbCBmdyBvbmx5IGRvZXMKLTIpLiBUaGlzIHdhcyBhZGRlZCB0byBhdm9pZCBjdXJzb3IganVtcHMgYnV0IGhhcyBzaW5jZSBiZWVuIHJldmVydGVkIGZvciA0LjIKLShrZXJuZWwgY29tbWl0IGRiZjNjMzcwODYsIDQuMS4zIGlzIHN0aWxsIGJ1Z2d5KS4gSW4gc29tZSBjYXNlcyBhIFRSSVBMRVRBUAotbWF5IGJlIHRyaWdnZXJlZCB3aXRob3V0IHNsb3QgMiBldmVyIGFjdGl2YXRpbmcuCi0KLVdoaWxlIHRoZXJlIGFyZSBzdGlsbCB0aG9zZSBrZXJuZWxzIG91dCB0aGVyZSwgd29yayBhcm91bmQgdGhpcyBidWcgYnkgb3BlbmluZwotYSBuZXcgdG91Y2ggcG9pbnQgd2hlcmUgbm9uZSBleGlzdHMgaWYgdGhlIGZha2UgZmluZ2VyIGNvdW50IGV4Y2VlZHMgdGhlIHNsb3QKLWNvdW50LgotCi1SZXBvcnRlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyA8amFuLnN0ZWZmZW5zIGF0IGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlciBhdCB3aG8tdC5uZXQ+Ci1UZXN0ZWQtYnk6IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgPGphbi5zdGVmZmVucyBhdCBnbWFpbC5jb20+Ci1SZXZpZXdlZC1ieTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGUgYXQgcmVkaGF0LmNvbT4KLS0tLQotQ2hhbmdlcyB0byB2MjoKLS0gc3BsaXQgb3V0IHRoZSBoYW5kbGluZyBpbnN0ZWFkIG9mIGhhdmluZyBhIHRtcCBzdGF0ZSB2YXJpYWJsZSwgc2VlIEhhbnMnCi0gIGNvbW1lbnRzIGZyb20gdjIKLQotTWFpbmx5IHNlbmRpbmcgdGhpcyB0byB0aGUgbGlzdCBhZ2FpbiBzbyBJIGhhdmUgYSBsaW5rIHRvIHBvaW50IHBlb3BsZSB0by4KLUlmIHlvdSdyZSBvbiA0LjEueCBhZGQgdGhpcyBwYXRjaCB0byB5b3VyIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLgotCi0gc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZXZkZXYtbXQtdG91Y2hwYWQuYyBiL3NyYy9ldmRldi1tdC10b3VjaHBhZC5jCi1pbmRleCBhNjgzZDlhLi41ZWYwM2Q1IDEwMDY0NAotLS0tIGEvc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMKLSsrKyBiL3NyYy9ldmRldi1tdC10b3VjaHBhZC5jCi1AQCAtMzY5LDEzICszNjksMjMgQEAgdHBfcmVzdG9yZV9zeW5hcHRpY3NfdG91Y2hlcyhzdHJ1Y3QgdHBfZGlzcGF0Y2ggKnRwLAotIAlmb3IgKGkgPSAwOyBpIDwgdHAtPm51bV9zbG90czsgaSsrKSB7Ci0gCQlzdHJ1Y3QgdHBfdG91Y2ggKnQgPSB0cF9nZXRfdG91Y2godHAsIGkpOwotIAotLQkJaWYgKHQtPnN0YXRlICE9IFRPVUNIX0VORCkKLSsJCXN3aXRjaCh0LT5zdGF0ZSkgewotKwkJY2FzZSBUT1VDSF9IT1ZFUklORzoKLSsJCWNhc2UgVE9VQ0hfQkVHSU46Ci0rCQljYXNlIFRPVUNIX1VQREFURToKLSAJCQljb250aW51ZTsKLS0KLS0JCS8qIG5ldyB0b3VjaCwgbW92ZSBpdCB0aHJvdWdoIGJlZ2luIHRvIHVwZGF0ZSBpbW1lZGlhdGVseSAqLwotLQkJdHBfbmV3X3RvdWNoKHRwLCB0LCB0aW1lKTsKLS0JCXRwX2JlZ2luX3RvdWNoKHRwLCB0LCB0aW1lKTsKLS0JCXQtPnN0YXRlID0gVE9VQ0hfVVBEQVRFOwotKwkJY2FzZSBUT1VDSF9OT05FOgotKwkJCS8qIG5ldyB0b3VjaCwgbW92ZSBpdCB0aHJvdWdoIHRvIGJlZ2luIGltbWVkaWF0ZWx5ICovCi0rCQkJdHBfbmV3X3RvdWNoKHRwLCB0LCB0aW1lKTsKLSsJCQl0cF9iZWdpbl90b3VjaCh0cCwgdCwgdGltZSk7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIFRPVUNIX0VORDoKLSsJCQkvKiB0b3VjaCBqdXN0IGVuZGVkICx3ZSBuZWVkIG5lZWQgdG8gcmVzdG9yZSBpdCB0byB1cGRhdGUgKi8KLSsJCQl0cF9uZXdfdG91Y2godHAsIHQsIHRpbWUpOwotKwkJCXRwX2JlZ2luX3RvdWNoKHRwLCB0LCB0aW1lKTsKLSsJCQl0LT5zdGF0ZSA9IFRPVUNIX1VQREFURTsKLSsJCQlicmVhazsKLSsJCX0KLSAJfQotIH0KLSAKLS0tIAotMi40LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODcxNGYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCi0KLURFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3RvdWNocGFkLXNlcmlhbC1zeW5hcHRpY3MtbmVlZC10by1mYWtlLW5ldy10b3VjaGVzLW9uLVRSSVBMRVRBUC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiN2UyODIzNDRmOGVkN2VjNWNmODdjYTlmYzIyNjc0ZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQ4MTZmMTNlZWU2M2JjY2EwZTljM2JiNjUyYzUyYWI1NWYzOWJlNGQxYjkwYjU0ZTRiZmQxZGM5MmVmNTVhOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi0tZW5hYmxlLWxpYndhY29tLC0tZGlzYWJsZS1saWJ3YWNvbSxsaWJ3YWNvbSIKLVBBQ0tBR0VDT05GSUdbZ3VpXSA9ICItLWVuYWJsZS1ldmVudC1ndWksLS1kaXNhYmxlLWV2ZW50LWd1aSxjYWlybyBndGsrMyIKLQotVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXVkZXYtZGlyPSR7VURFVkRJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxYmFiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyNDdmMGJiNjcwNTJmZmIyNzJjNTBjM2NiOWM1OTk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzNTkwYTkwMzdlNTYxYTU3OTFjOGJkM2IzNGJmZDMwZmFkNWNhY2Q4Y2JlZmMwZDc1ZmFmZTNhNDFkMDcxNDciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItLWVuYWJsZS1saWJ3YWNvbSwtLWRpc2FibGUtbGlid2Fjb20sbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLS1lbmFibGUtZGVidWctZ3VpLC0tZGlzYWJsZS1kZWJ1Zy1ndWksY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC11ZGV2LWRpcj0ke1VERVZESVJ9IC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjllOWYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODRhNzg0NmMyYjZhNmEzZTI2NWZjOWJlMzY0NTNlNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTcxOWM1MWQ3MzU0ODY0OTgzMTcxYzUwODNlOTNhNzJhYzk5MjI5ZTJiNDYwYzRiYjEwNTEzZGUwODgzOWMwYSIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQyZjBkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCi1hdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCi1jb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCi1wcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKLXdheWxhbmQtcHJvdG9jb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOWFjZmM5NTU2ZjdjZmVkYzQ0ZDk3YWY2MGRhNjZhNWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM1ZjJhOTM3ZDMxOGYxZmVjYjk3YjU0MDc0Y2EyMTE0ODZlMzhhZjk0Mzg2OGRkMGZhODJlYTM4ZDA5MWMxZiIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE4ODAxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotTXVsdGktcGxhbmUgc3ViLXNhbXBsZWQgdGV4dHVyZXMgaGF2ZSBwYXJ0aWFsIHdpZHRoL2hlaWdodCwgZS5nLgotWVVWNDIwL0k0MjAgaGFzIGEgZnVsbC1zaXplIFkgcGxhbmUsIGZvbGxvd2VkIGJ5IGEgaGFsZi13aWR0aC9oZWlnaHQgVQotcGxhbmUsIGFuZCBhIGhhbGYtd2lkdGgvaGVpZ2h0IFYgcGxhbmUuCi0KLXp3cF9saW51eF9kbWFidWZfdjEgYWxsb3dzIGNsaWVudHMgdG8gcGFzcyBhbiBleHBsaWNpdCBwaXRjaCBmb3IgZWFjaAotcGxhbmUsIGJ1dCBmb3Igd2xfc2htIHRoaXMgbXVzdCBiZSBpbmZlcnJlZC4gZ2wtcmVuZGVyZXIgd2FzIGNvcnJlY3RseQotYWNjb3VudGluZyBmb3IgdGhlIHdpZHRoIGFuZCBoZWlnaHQgd2hlbiBzdWJzYW1wbGluZywgYnV0IHRoZSBwaXRjaCB3YXMKLWJlaW5nIHRha2VuIGFzIHRoZSBwaXRjaCBmb3IgdGhlIGZpcnN0IHBsYW5lLgotCi1UaGlzIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlbWVudHMgZm9yIEdTdHJlYW1lcidzIHdheWxhbmRzaW5rLCBpbgotcGFydGljdWxhciwgYXMgd2VsbCBhcyBvdGhlciBjbGllbnRzLiBGaXggdGhlIFNITSB1cGxvYWQgcGF0aCB0bwotY29ycmVjdGx5IHNldCB0aGUgcGl0Y2ggZm9yIGVhY2ggcGxhbmUsIGFjY29yZGluZyB0byBzdWJzYW1wbGluZy4KLQotVGVzdGVkIHdpdGg6Ci0gICQgZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgd2F5bGFuZHNpbmsKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE4MDc2Ny9dCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgotRml4ZXM6IGZkZWVmZTQyNDE4ICgiZ2wtcmVuZGVyZXI6IGFkZCBzdXBwb3J0IG9mIFdMX1NITV9GT1JNQVRfWVVWNDIwIikKLVJlcG9ydGVkLWJ5OiBGYWJpZW4gTGFob3VkZXJlIDxmYWJpZW4ubGFob3VkZXJlQGNvbGxhYm9yYS5jby51az4KLUJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNjMKLQotLS0tCi0gbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYwotaW5kZXggMjQ0Y2UzMDkuLjQwYmYwYmI2IDEwMDY0NAotLS0tIGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKLSsrKyBiL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCi1AQCAtMTI4NSwxNCArMTI4NSwxMyBAQCBnbF9yZW5kZXJlcl9mbHVzaF9kYW1hZ2Uoc3RydWN0IHdlc3Rvbl9zdXJmYWNlICpzdXJmYWNlKQotIAkJZ290byBkb25lOwotIAl9Ci0gCi0tCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2gpOwotLQotIAlpZiAoZ3MtPm5lZWRzX2Z1bGxfdXBsb2FkKSB7Ci0gCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMU19FWFQsIDApOwotIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTX0VYVCwgMCk7Ci0gCQl3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhidWZmZXItPnNobV9idWZmZXIpOwotIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgewotIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKLSsJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOwotIAkJCWdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotIAkJCQkgICAgIGdzLT5nbF9mb3JtYXRbal0sCi0gCQkJCSAgICAgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0sCi1AQCAtMTMxNyw2ICsxMzE2LDcgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKLSAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIHIueTEpOwotIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgewotIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKLSsJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOwotIAkJCWdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotIAkJCQkJci54MSAvIGdzLT5oc3ViW2pdLAotIAkJCQkJci55MSAvIGdzLT52c3ViW2pdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKaW5kZXggMDYzNDk0Yy4uNTRiMDdiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCkBAIC0xMiw3ICsxMiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIxNWYzODk0NTk0MmJmMmE5MWZlMjY4NzE0NWZiNGM3ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGU0NDZhYzI3ZjExODE5NmYxNjA5ZGFiODliYjNjYjNlODE2NTJkOTgxNDE0YWQ4NjBlNzMzYjM1NTM2NWQ4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCmluZGV4IGI4NzFkODkuLjczM2ViY2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKQEAgLTExLDYgKzExLDcgQEAKIFBWID0gIjAuMS4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfTticmFuY2g9bWFzdGVyIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMC5iYgppbmRleCA0ZTkzNTU4Li5hMDZhYTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4wLmJiCkBAIC0xMyw2ICsxMywxMCBAQAogCiBQRSA9ICIxIgogCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIHNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgJHtEfSR7YmluZGlyfS94MTFwZXJmY29tcAorfQorCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L1gxMS94MTFwZXJmY29tcC8qIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZjBiMjRlNGQ4YmViNjIyYTQxOWU4NDMxZTFjMDNjZDciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOTgzNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNvbXBpbGUgWEtCIGtleWJvYXJkIGRlc2NyaXB0aW9uIgotCi1ERVNDUklQVElPTiA9ICJUaGUgeGtiY29tcCBrZXltYXAgY29tcGlsZXIgY29udmVydHMgYSBkZXNjcmlwdGlvbiBvZiBhbiBcCi1YS0Iga2V5bWFwIGludG8gb25lIG9mIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMuIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIFwKLXhrYmNvbXAgaXMgdG8gY3JlYXRlIGEgY29tcGlsZWQga2V5bWFwIGZpbGUgKC54a20gZXh0ZW5zaW9uKSB3aGljaCBjYW4gXAotYmUgcmVhZCBkaXJlY3RseSBieSBYS0ItY2FwYWJsZSBYIHNlcnZlcnMgb3IgdXRpbGl0aWVzLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDg0MzZlNGY0NDc2OTY0ZTJlMmRkN2U3ZTQxZTA3NmEiCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotCi1ERVBFTkRTICs9ICJsaWJ4a2JmaWxlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE0ZDgzNTNkYWY2Y2IwYTljNDczNzliNzQxM2M0MmM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzMDRkYzllMGQ0YWMxMDgzMWE5ZWY1ZDU0MTk3MjIzNzVkZGJjM2VhYzNmZjQ0MTMwOTRkNTdiYzFmMTkyM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkYzMyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCisKK0RFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKK1hLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoreGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCitiZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKKworUFIgPSAiJHtJTkNfUFJ9LjAiCisKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2MyMmIyMzJiYzc4YTMwMzM3MTk4M2UxYjQ4Nzk0YWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM2OWM4NzQ4YzAzYzVhZDlhZmRjOGRmZjlkYjExOTk0ZGQ4NzFiNjE0YzY1Zjg5NDA1MTZkYTZiZjYxY2U2YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGIxMjcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmQzZmExMThlNGFiYWRiODgwNGRjNmEwOTliYjRhYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRjYjA3MzUwYWVkNTliMjk5NmE5MmExYjRmZjY0ZDFjMGIwYzg2YTNmMGRkY2ExNWIyYjFjOGM4YmIxMzYyOCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzZWExNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0MDAzMTM5NjE0YjI1Y2M3NmM5YTRjYWQwNTlkZjg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4OWY3ZDU5MWM5ZWYwODQ2M2Q0OTY2ZTYxZjdjNmVhNDMzZjVmY2JiOWY1MzcwZmI2MjFkYTYzOWE4NGM3ZTAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCmluZGV4IGY4NmRlNmYuLjEzOGRmZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgpAQCAtMjQsNyArMjQsNyBAQAogCiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBkcm0gbGlicGNpYWNjZXNzIHBpeG1hbiIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInh2bWMgc25hIHVkZXYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZHJpIGRyaTEgZHJpMicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAieHZtYyB1eGEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpIgogUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxLHhmODZkcmlwcm90byIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1QcmV2ZW50cy1vbWFwZmItZnJvbS1mcm9tLWNyYXNoaW5nLXdoZW4tcGl4ZWxjbG9jay1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKaW5kZXggYzRjZjE2ZS4uYWMxOTIxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKQEAgLTYsNiArNiw4IEBACiAKIER1ZSB0byBhIExpbnV4IGRlc2lnbiBidWcgaXQgaXMgZWFzeSB0byBnZXQgYSBwaXhlbGNsb2NrIHNldCB0byB6ZXJvCiB3aGVuIGNoYW5naW5nIGRpc3BsYXlzIGF0IHJ1bnRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgc3JjL29tYXBmYi1vdXRwdXQuYyB8IDkgKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyZmMwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAxLUluY2x1ZGUtY29uZmlnLmgtYmVmb3JlLWFueXRoaW5nLWVsc2UtaW4tLmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotRnJvbSBiMTQ2OTZhNTU3OTZlNzM5NjI0YmJkYTRmNzcyNDI3MDMyZWZmZjJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVsaWVuIENyaXN0YXUgPGpjcmlzdGF1QGRlYmlhbi5vcmc+Ci1EYXRlOiBTdW4sIDI2IEFwciAyMDE1IDE1OjIwOjU3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBJbmNsdWRlIGNvbmZpZy5oIGJlZm9yZSBhbnl0aGluZyBlbHNlIGluICouYwotCi1EZWJpYW4gYnVnIzc0OTAwOCA8aHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzQ5MDA4PgotCi1SZXBvcnRlZC1ieTogTWljaGFlbCBUYXV0c2NobmlnIDxtdEBkZWJpYW4ub3JnPgotU2lnbmVkLW9mZi1ieTogSnVsaWVuIENyaXN0YXUgPGpjcmlzdGF1QGRlYmlhbi5vcmc+Ci1SZXZpZXdlZC1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvY29tbW9uX2NhcGFiaWxpdHkuYyAgfCAzICsrKwotIHNyYy9jb21tb25faW5pdC5jICAgICAgICB8IDMgKysrCi0gc3JjL2NvbW1vbl9pbnRlcmZhY2UuYyAgIHwgMyArKysKLSBzcmMvY29tbW9uX2lvLmMgICAgICAgICAgfCAzICsrKwotIHNyYy9jb21tb25faXRlcmF0b3IuYyAgICB8IDMgKysrCi0gc3JjL2NvbW1vbl9tYXAuYyAgICAgICAgIHwgMyArKysKLSBzcmMvY29tbW9uX3ZnYWFyYl9zdHViLmMgfCAzICsrKwotIHNyYy9saW51eF9kZXZtZW0uYyAgICAgICB8IDUgKysrLS0KLSBzcmMvb3BlbmJzZF9wY2kuYyAgICAgICAgfCAzICsrKwotIHNyYy9zb2x4X2RldmZzLmMgICAgICAgICB8IDMgKysrCi0gc3JjL3g4Nl9wY2kuYyAgICAgICAgICAgIHwgNCArKystCi0gMTEgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25fY2FwYWJpbGl0eS5jIGIvc3JjL2NvbW1vbl9jYXBhYmlsaXR5LmMKLWluZGV4IDQ4ODc0M2QuLjE1ZDM5NWQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX2NhcGFiaWxpdHkuYwotKysrIGIvc3JjL2NvbW1vbl9jYXBhYmlsaXR5LmMKLUBAIC0zMSw2ICszMSw5IEBACi0gICoKLSAgKiBcYXV0aG9yIElhbiBSb21hbmljayA8aWRyQHVzLmlibS5jb20+Ci0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW5pdC5jIGIvc3JjL2NvbW1vbl9pbml0LmMKLWluZGV4IGIxYzBjM2UuLmY3YjU5YmQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX2luaXQuYwotKysrIGIvc3JjL2NvbW1vbl9pbml0LmMKLUBAIC0yOCw2ICsyOCw5IEBACi0gICoKLSAgKiBcYXV0aG9yIElhbiBSb21hbmljayA8aWRyQHVzLmlibS5jb20+Ci0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW50ZXJmYWNlLmMgYi9zcmMvY29tbW9uX2ludGVyZmFjZS5jCi1pbmRleCA1OTc3OGNmLi5jYjk1ZTkwIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbl9pbnRlcmZhY2UuYwotKysrIGIvc3JjL2NvbW1vbl9pbnRlcmZhY2UuYwotQEAgLTI4LDYgKzI4LDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW8uYyBiL3NyYy9jb21tb25faW8uYwotaW5kZXggZjVjOWU0NS4uZTk1ODZhZCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25faW8uYwotKysrIGIvc3JjL2NvbW1vbl9pby5jCi1AQCAtMjIsNiArMjIsOSBAQAotICAqIEF1dGhvcjoKLSAgKglBZGFtIEphY2tzb24gPGFqYXhAcmVkaGF0LmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faXRlcmF0b3IuYyBiL3NyYy9jb21tb25faXRlcmF0b3IuYwotaW5kZXggY2NmNjU2ZC4uMmJlYjE4MCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25faXRlcmF0b3IuYwotKysrIGIvc3JjL2NvbW1vbl9pdGVyYXRvci5jCi1AQCAtMjgsNiArMjgsOSBAQAotICAqCi0gICogXGF1dGhvciBJYW4gUm9tYW5pY2sgPGlkckB1cy5pYm0uY29tPgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9tYXAuYyBiL3NyYy9jb21tb25fbWFwLmMKLWluZGV4IDg3NTcxNTEuLmYxODU0YmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX21hcC5jCi0rKysgYi9zcmMvY29tbW9uX21hcC5jCi1AQCAtMjEsNiArMjEsOSBAQAotICAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSAgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYyBiL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYwotaW5kZXggOTM5NDI3My4uYzE3MDhmNiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYwotKysrIGIvc3JjL2NvbW1vbl92Z2FhcmJfc3R1Yi5jCi1AQCAtMjMsNiArMjMsOSBAQAotICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgKgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJwY2lhY2Nlc3MuaCIKLWRpZmYgLS1naXQgYS9zcmMvbGludXhfZGV2bWVtLmMgYi9zcmMvbGludXhfZGV2bWVtLmMKLWluZGV4IDEwZTNiZGUuLjBkMDU2N2MgMTAwNjQ0Ci0tLS0gYS9zcmMvbGludXhfZGV2bWVtLmMKLSsrKyBiL3NyYy9saW51eF9kZXZtZW0uYwotQEAgLTMyLDggKzMyLDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLS0KLS0jZGVmaW5lIF9HTlVfU09VUkNFCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9zcmMvb3BlbmJzZF9wY2kuYyBiL3NyYy9vcGVuYnNkX3BjaS5jCi1pbmRleCA0ZDFiNWNkLi5iOGNlMzE4IDEwMDY0NAotLS0tIGEvc3JjL29wZW5ic2RfcGNpLmMKLSsrKyBiL3NyYy9vcGVuYnNkX3BjaS5jCi1AQCAtMTMsNiArMTMsOSBAQAotICAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9zb2x4X2RldmZzLmMgYi9zcmMvc29seF9kZXZmcy5jCi1pbmRleCBmNTcyMzkzLi5jZjk2NDY3IDEwMDY0NAotLS0tIGEvc3JjL3NvbHhfZGV2ZnMuYwotKysrIGIvc3JjL3NvbHhfZGV2ZnMuYwotQEAgLTI1LDYgKzI1LDkgQEAKLSAvKgotICAqIFNvbGFyaXMgZGV2ZnMgaW50ZXJmYWNlcwotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5ncy5oPgotZGlmZiAtLWdpdCBhL3NyYy94ODZfcGNpLmMgYi9zcmMveDg2X3BjaS5jCi1pbmRleCA0OWMxY2FiLi4zMmRhYTA0IDEwMDY0NAotLS0tIGEvc3JjL3g4Nl9wY2kuYwotKysrIGIvc3JjL3g4Nl9wY2kuYwotQEAgLTE4LDggKzE4LDEwIEBACi0gICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKLSAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotLSNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMi1GaXgtcXVvdGluZy1pc3N1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkNjlhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA3NjVlMGEzOGNiOGM0MGY4ODY1YWY1Y2IzNTZmZmU2MDM5ZmZiMDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLURhdGU6IFN1biwgMjIgTWFyIDIwMTUgMjE6Mzg6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIEZpeCBxdW90aW5nIGlzc3VlLgotCi1tNCBoYXMgJ1tdJyBhcyBxdW90aW5nIGNoYXJhY3RlcnMsIHNvIGlmIHdlIHdhbnQgJ1tdJyB0bwotZW5kIHVwIGluIHRoZSBjb25maWd1cmUgc2NyaXB0LCB3ZSBuZWVkIHRvIHF1b3RlIHRoZW0gYWdhaW4uCi0KLVJlcG9ydGVkIGJ5IEdyZWcgVHJveGVsIDxnZHRAaXIuYmJuLmNvbT4uCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1SZXZpZXdlZC1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU2N2U5ZTEuLjg4ODMzMGIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTc2LDcgKzc2LDcgQEAgY2FzZSAkaG9zdF9vcyBpbgotIAkJOzsKLSAJKm5ldGJzZCopCi0gCQljYXNlICRob3N0IGluCi0tCQkqaVszLTldODYqKQotKwkJKmlbWzMtOV1dODYqKQotIAkJCVBDSUFDQ0VTU19MSUJTPSIkUENJQUNDRVNTX0xJQlMgLWxpMzg2IgotIAkJCTs7Ci0gCQkqeDg2XzY0KnwqYW1kNjQqKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MTNjOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMy1saW51eF9zeXNmcy5jLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2YmQyZjdmOTJlYWU3MTM2NjNmNGUxM2Y2ZTJjYjIzNTI2NjA3YjhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IEZyaSwgMSBNYXkgMjAxNSAxNjozNjo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDMvNF0gbGludXhfc3lzZnMuYzogSW5jbHVkZSA8bGltaXRzLmg+IGZvciBQQVRIX01BWAotCi1GaXhlcyBjb21waWxhdGlvbiB3aXRoIG11c2wgbGliYy4KLQotVGVzdGVkLWJ5OiBCZXJuZCBLdWhscyA8YmVybmQua3VobHNAdC1vbmxpbmUuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotUmV2aWV3ZWQtYnk6IEFsYW4gQ29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAb3JhY2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsYW4gQ29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAb3JhY2xlLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gc3JjL2xpbnV4X3N5c2ZzLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saW51eF9zeXNmcy5jIGIvc3JjL2xpbnV4X3N5c2ZzLmMKLWluZGV4IDUwZDk0Y2YuLjNmOTVlNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvbGludXhfc3lzZnMuYwotKysrIGIvc3JjL2xpbnV4X3N5c2ZzLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhNmE2MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgotCi1ERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKLVBDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtcXVvdGluZy1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1saW51eF9zeXNmcy5jLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LURvbi10LWluY2x1ZGUtc3lzLWlvLmgtb24tYXJtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFjZTc4YWVjNzk5YjFjZjZkZmFlYTU1ZDM4NzllZDlmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3Zjg2NDY1NDU2MWU0YWM4NjI5YTBlZjljOGYwN2ZiYzFmODU5MmQxYjZjNDE4NDMxNTkzZTliYTJjZjJmY2YiCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNiNjgyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgorCitERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKK1BDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDgxMGFiMTdlMjRjMTQxOGRlZGY3MjA3ZmIyODQxZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUyYzU0ZTliM2MzMTFiNDM0N2NiNTBhZWE4NTY2ZmE0OGVhYjI3NDM0NmVhOGEwNmY3ZjE1ZGUzMjQwYjk5OSIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTE0YzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdGhhdCBwcm92aWRlcyB3ZWFrIGFsaWFzZXMgZm9yIHB0aHJlYWQgZnVuY3Rpb25zIgotREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMgXAotbm90IHByb3ZpZGVkIGluIGxpYmMgb3Igb3RoZXJ3aXNlIGF2YWlsYWJsZSBieSBkZWZhdWx0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1YQ0IiCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZWRjMWZlYTAzZDk1OWYwYzJkNzQzZmU1Y2E3NDZhZCIKLQotI0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlieHNsdC1uYXRpdmUiCi0jIERFUEVORFMgKz0gInhzbHRwcm9jLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJwdGhyZWFkLXN0dWJzLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOGZhMzFiNDJlMTNmODdlOGY1YTdhMmI3MzFkYjdlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWI2ZDU0ZTNjYzZmM2JhMjgwNjFkYTgxYWY2NGI5YTkyYjdiNzU3MzE5MDk4MTcyNDg4YTY2MGUzZDg3Mjk5IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTk4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0aGF0IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgd2VhayBhbGlhc2VzIGZvciBwdGhyZWFkIGZ1bmN0aW9ucyBcCitub3QgcHJvdmlkZWQgaW4gbGliYyBvciBvdGhlcndpc2UgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PVhDQiIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlZGMxZmVhMDNkOTU5ZjBjMmQ3NDNmZTVjYTc0NmFkIgorCisjREVQRU5EUyA9ICJ4Y2ItcHJvdG8geHByb3RvIGxpYnhhdSBsaWJ4c2x0LW5hdGl2ZSIKKyMgREVQRU5EUyArPSAieHNsdHByb2MtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L2xpYnB0aHJlYWQtc3R1YnMtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4YzE1NDQ4NTRhOTRkYjBlNTE0OTljYzNhZmQ3OTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDA1OTExYTMxNjVkM2IxODMyMWNjMDY3ZmRkMmYwMjNmMDY0MzZlMzkxYzZhMjhkZmY2MThhNzhkMmU3MzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNzYxZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgbGlieDExLmluYwotCi1ERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAotdGhpcyB2ZXJzaW9uLiIKLQotU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5kaWZmIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUlBST1ZJREVTXyR7UE59LWRldiA9ICJsaWJ4MTEtZGV2IgotUlBST1ZJREVTXyR7UE59LWxvY2FsZSA9ICJsaWJ4MTEtbG9jYWxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ1NDIyNzA4MmYzYWEyYzU5NmYwYjNhM2ZiYjkxNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdjNzQ4YmUzYWExNmVjMmNiZDgxZWRjODQ3ZTliNmVlMDNmODgxNDNhYjI3MGZiNTlmNThhMDQ0ZDM0ZTQ0MSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGxvY2FsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NWY5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgbGlieDExLmluYworCitERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAordGhpcyB2ZXJzaW9uLiIKKworU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5kaWZmIFwKKyAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBcCisgICAgICAgICAgICIKKworUlBST1ZJREVTXyR7UE59LWRldiA9ICJsaWJ4MTEtZGV2IgorUlBST1ZJREVTXyR7UE59LWxvY2FsZSA9ICJsaWJ4MTEtbG9jYWxlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGY2MThkYjcwYzQwNTRjYTY3Y2VlMGNjMTU2YTQyNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQzODkwZGIyYmEyMjViYThjNTVjYTYzYzY0MDljMWViYjA3OGEyODA2ZGU1OWZiMTYzNDI3NjhhZTYzNDM1ZCIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGxvY2FsZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5Nzg4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gNTIzNWE3ZjM2OTJhNGMzYzkwZGQ0YWMxYmUzYzY3MDM4ODkwNGJiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRhdHUgRnJpc2sgPHRhdHUuZnJpc2tAZ2UuY29tPgorRGF0ZTogVHVlLCAxNCBNYXIgMjAxNyAxNDo0MToyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggaGFuZ2luZyBpc3N1ZSBpbiBfWFJlcGx5CisKK0Fzc3VtZSBldmVudCBxdWV1ZSBpcyBlbXB0eSBpZiBhbm90aGVyIHRocmVhZCBpcyBibG9ja2luZyB3YWl0aW5nIGZvciBldmVudC4KKworSWYgb25lIHRocmVhZCB3YXMgYmxvY2tpbmcgd2FpdGluZyBmb3IgYW4gZXZlbnQgYW5kIGFub3RoZXIgdGhyZWFkIHNlbnQgYQorcmVwbHkgdG8gdGhlIFggc2VydmVyLCBib3RoIHRocmVhZHMgZ290IGJsb2NrZWQgdW50aWwgYW4gZXZlbnQgd2FzCityZWNlaXZlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNzE0NTgvXQorCitUaGlzIHBhdGNoIG5lZWRzIHRvIGJlIHJlbW92ZWQgb25jZSB0aGUgY29ycmVzcG9uZGluZyBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgdXBzdHJlYW0uCisKK2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNzE0NTgvCisKK1NpZ25lZC1vZmYtYnk6IFRhdHUgRnJpc2sgPHRhdHUuZnJpc2tAZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogSm9zZSBBbGFyY29uIDxqb3NlLmFsYXJjb25AZ2UuY29tPgorLS0tCisgc3JjL3hjYl9pby5jIHwgMTkgKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3hjYl9pby5jIGIvc3JjL3hjYl9pby5jCitpbmRleCA1OTg3MzI5Li5jNjRlYjA0IDEwMDY0NAorLS0tIGEvc3JjL3hjYl9pby5jCisrKysgYi9zcmMveGNiX2lvLmMKK0BAIC02MDksMjIgKzYwOSwxNyBAQCBTdGF0dXMgX1hSZXBseShEaXNwbGF5ICpkcHksIHhSZXBseSAqcmVwLCBpbnQgZXh0cmEsIEJvb2wgZGlzY2FyZCkKKyAJCSAqIGxldHRpbmcgYW55b25lIGVsc2UgcHJvY2VzcyB0aGlzIHNlcXVlbmNlIG51bWJlciwgd2UKKyAJCSAqIG5lZWQgdG8gcHJvY2VzcyBhbnkgZXZlbnRzIHRoYXQgc2hvdWxkIGhhdmUgY29tZQorIAkJICogZWFybGllci4gKi8KKy0KKyAJCWlmKGRweS0+eGNiLT5ldmVudF9vd25lciA9PSBYbGliT3duc0V2ZW50UXVldWUpCisgCQl7CisgCQkJeGNiX2dlbmVyaWNfcmVwbHlfdCAqZXZlbnQ7CistCQkJLyogSWYgc29tZSB0aHJlYWQgaXMgYWxyZWFkeSB3YWl0aW5nIGZvciBldmVudHMsCistCQkJICogaXQgd2lsbCBnZXQgdGhlIGZpcnN0IG9uZS4gVGhhdCB0aHJlYWQgbXVzdAorLQkJCSAqIHByb2Nlc3MgdGhhdCBldmVudCBiZWZvcmUgd2UgY2FuIGNvbnRpbnVlLiAqLworLQkJCS8qIEZJWE1FOiBUaGF0IGV2ZW50IG1pZ2h0IGJlIGFmdGVyIHRoaXMgcmVwbHksCistCQkJICogYW5kIG1pZ2h0IG5ldmVyIGV2ZW4gY29tZS0tb3IgdGhlcmUgbWlnaHQgYmUKKy0JCQkgKiBtdWx0aXBsZSB0aHJlYWRzIHRyeWluZyB0byBnZXQgZXZlbnRzLiAqLworLQkJCXdoaWxlKGRweS0+eGNiLT5ldmVudF93YWl0ZXIpCistCQkJeyAvKiBuZWVkIGJyYWNlcyBhcm91bmQgQ29uZGl0aW9uV2FpdCAqLworLQkJCQlDb25kaXRpb25XYWl0KGRweSwgZHB5LT54Y2ItPmV2ZW50X25vdGlmeSk7CisrCisrCQkJLyogQXNzdW1lIGV2ZW50IHF1ZXVlIGlzIGVtcHR5IGlmIGFub3RoZXIgdGhyZWFkIGlzIGJsb2NraW5nCisrCQkJICogd2FpdGluZyBmb3IgZXZlbnQuICovCisrCQkJaWYoIWRweS0+eGNiLT5ldmVudF93YWl0ZXIpCisrCQkJeworKwkJCQl3aGlsZSgoZXZlbnQgPSBwb2xsX2Zvcl9yZXNwb25zZShkcHkpKSkKKysJCQkJCWhhbmRsZV9yZXNwb25zZShkcHksIGV2ZW50LCBUcnVlKTsKKyAJCQl9CistCQkJd2hpbGUoKGV2ZW50ID0gcG9sbF9mb3JfZXZlbnQoZHB5KSkpCistCQkJCWhhbmRsZV9yZXNwb25zZShkcHksIGV2ZW50LCBUcnVlKTsKKyAJCX0KKyAKKyAJCXJlcS0+cmVwbHlfd2FpdGVyID0gMDsKKy0tIAorMi4xMC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYTk1ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGxpYngxMS5pbmMKLWluaGVyaXQgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ1NDIyNzA4MmYzYWEyYzU5NmYwYjNhM2ZiYjkxNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdjNzQ4YmUzYWExNmVjMmNiZDgxZWRjODQ3ZTliNmVlMDNmODgxNDNhYjI3MGZiNTlmNThhMDQ0ZDM0ZTQ0MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3YmYyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgbGlieDExLmluYworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggXAorICAgICAgICAgICAiCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBzZWQgLWkgLWUgIi9YMTFfQ0ZMQUdTL2QiICR7Qn0vc3JjL3V0aWwvTWFrZWZpbGUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjBmNjE4ZGI3MGM0MDU0Y2E2N2NlZTBjYzE1NmE0MjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkMzg5MGRiMmJhMjI1YmE4YzU1Y2E2M2M2NDA5YzFlYmIwNzhhMjgwNmRlNTlmYjE2MzQyNzY4YWU2MzQzNWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgppbmRleCA0NTVlODY5Li43YzdmYTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKQEAgLTE2LDYgKzE2LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9saWIvbGliWENhbGlicmF0ZSBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgteGNiLnBhdGNoIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dC8wMDAxLWxpYlh0LXV0aWwtZG9uLXQtbGluay1tYWtlc3Rycy13aXRoLXRhcmdldC1jZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE2OTFhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYjBjMGU2ZDkwYmQ5OWE2OTk3MDFjOTU0MjY0MGFkYjIxOGY1ZDUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogTW9uLCAxMCBKdWwgMjAxNyAxNjo1MToxMyArMDMwMAorU3ViamVjdDogW1BBVENIXSBsaWJYdDogdXRpbDogZG9uJ3QgbGluayBtYWtlc3RycyB3aXRoIHRhcmdldCBjZmxhZ3MKKworVGhlIGxpbmU6IEFNX0NGTEFHUyA9ICQoWFRfQ0ZMQUdTKQoraW4gdXRpbC9NYWtlZmlsZS5hbSBpcyB3cm9uZyBiZWNhdXNlIGl0IGFkZHMgdGFyZ2V0IGNmbGFncyB0byB0aGUKK2NvbXBpbGF0aW9uIG9mIG1ha2VzdHJzLCB3aGljaCBpcyBidWlsdCBmb3IgdGhlIGJ1aWxkIG1hY2hpbmUsIHdoaWNoCitsZWFkcyB0byBidWlsZCBmYWlsdXJlcyB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyB1dGlsL01ha2VmaWxlLmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3V0aWwvTWFrZWZpbGUuYW0gYi91dGlsL01ha2VmaWxlLmFtCitpbmRleCA4MDBiMzViLi5mMmRkMWY5IDEwMDY0NAorLS0tIGEvdXRpbC9NYWtlZmlsZS5hbQorKysrIGIvdXRpbC9NYWtlZmlsZS5hbQorQEAgLTExLDcgKzExLDYgQEAgRVhUUkFfRElTVCA9IFwKKyAJU3RyRGVmcy5odCBcCisgCXN0cmluZy5saXN0CisgCistQU1fQ0ZMQUdTID0gJChYVF9DRkxBR1MpCisgbWFrZXN0cnNfU09VUkNFUyA9IG1ha2VzdHJzLmMKKyAKKyAKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRfMS4xLjUuYmIKaW5kZXggYzFlZDBiYi4uMTgwZDAwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCkBAIC0yMyw3ICsyMyw5IEBACiAKIFhPUkdfUE4gPSAibGliWHQiCiAKLVNSQ19VUkkgKz0gICJmaWxlOi8vbGlieHRfZml4X2Zvcl94MzIucGF0Y2giCitTUkNfVVJJICs9ICAiZmlsZTovL2xpYnh0X2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMDkwNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgotCi1ERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCi1XaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKLWZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAotV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAotc3lzdGVtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMWY2ODg4NjMzOTExNmFlMzg3NzA1MjIwNGM5YjliODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFiZmM3MjU1M2M0ZTNlZjFjZDZmMTNlZWMwNDg4Y2Y5NDA0OThiNjEyYWI4YTBiMzYyZTcwOTBjOTRiYzEzNCIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIHZpcnR1YWwvZ2V0dGV4dCB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFhNTFhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZjk0OThlODk1NDkwN2QwYTQ3ZjBmN2IzZDIxZTFlZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGMxNzA0OWZhZTEyOWZjMTQ4NzU2NTZkYTlhYTMwOTllMzAzMWQ2Y2UwZWUxZDc3YWFlMTkwZmQ5ZWRjZWM1IgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgppbmRleCBiODhkMTU3Li4zYTk4OTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKQEAgLTE3LDMgKzE3LDUgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAogICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggMTY1MGM3OS4uODYzZDgwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIE9QRU5HTF9QS0dDT05GSUdTID0gImRyaSBnbHggZ2xhbW9yIGRyaTMgeHNobWZlbmNlIgogUEFDS0FHRUNPTkZJRyA/Pz0gImRyaTIgdWRldiAke1hPUkdfQ1JZUFRPfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnJHtPUEVOR0xfUEtHQ09ORklHU30nLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDZkZjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1yZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL211c2wtYXJtLWluYi1vdXRiLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtc2Nhbm5lci1hbmQtcHJvdG9jb2xzLWxvY2F0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1vZGVzZXR0aW5nLUZpeC0xNi1iaXQtZGVwdGgtYnBwLW1vZGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTMucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNhYThlZTdiMjk1MGFiYmY3MzQzNDdkMTM3NTI5ZmI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5YWUyY2YzOWQzZjZjNGE5MTIwMWQ4ZGFkNTQ5ZDFkNzc0YjM0MjAwNzNjNWE3MGQzOTAwNDBhYTk2NWE3ZmIiCi0KLSMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KLSMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCi0KLVJSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZWY2YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiCkBAIC0wLDAgKzEsMzUgQEAKK3JlcXVpcmUgeHNlcnZlci14b3JnLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKKworIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgorIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KKworUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKaW5kZXggNTE4MzlkZC4uMjY2N2RkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCkBAIC04LDYgKzgsNyBAQAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Rlc3QteHZpZGVvIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgppbmRleCA5NTdjYjcwLi43NzA1NzVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJHZW5lcmF0ZXMgdHJhY2VzIG9mIEkvTyB0cmFmZmljIG9uIGJsb2NrIGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vYnJpY2sua2VybmVsLmRrL3NuYXBzLyIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1saW51eF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LWxpbnV4XzEuOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1saW51eF8xLjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbGludXhfMS45LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LXRlc3RzXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDAwNTI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBjcnlwdG9kZXYuaW5jCi0KLVNVTU1BUlkgPSAiQSB0ZXN0IHN1aXRlIGZvciAvZGV2L2NyeXB0byBkZXZpY2UgZHJpdmVyIgotCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1TUkNfVVJJICs9ICIgXAotZmlsZTovLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaCBcCi0iCi0KLUVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IiBQUkVGSVg9IiR7RH0iJwotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UgdGVzdHByb2dzCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsX3Rlc3RzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS90ZXN0c19jcnlwdG9kZXYvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFmYjNkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgY3J5cHRvZGV2LmluYworCitTVU1NQVJZID0gIkEgdGVzdCBzdWl0ZSBmb3IgL2Rldi9jcnlwdG8gZGV2aWNlIGRyaXZlciIKKworREVQRU5EUyArPSAib3BlbnNzbDEwIgorCitTUkNfVVJJICs9ICIgXAorZmlsZTovLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaCBcCisiCisKK0VYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IiBQUkVGSVg9IiR7RH0iJworCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UgdGVzdHByb2dzCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsX3Rlc3RzCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA0YWUwYTJiLi41MDM2NmU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtMywxNCArMywxMCBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNfVVJJID0gImh0dHA6Ly9ud2wuY2MvcHViL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzA2ZDZiNTYwYzZlNDVkYzMxN2RhZTQ3Yzc0NzA2ZmE0M2Y0YTMxZDgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkanVzdC10by1hbm90aGVyLWNoYW5nZS1pbi10aGUtdXNlci1wYWdlLUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9rZXJuZWwtNC0xMC1jaGFuZ2VzLnBhdGNoIgorU1JDX1VSSSA9ICJodHRwOi8vbndsLmNjL3B1Yi9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4LSR7UFZ9LnRhci5neiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjAyNjQ0Y2M0Y2QwMjMwMWUwYjUwM2EzMzJlYjJmMGI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3ZmFiZGU5ZmI2N2IyODZhOTZjNGY0NWI1OTRiMGVjY2QwZjc2MWI0OTU3MDVjMThmMmFlOTQ2MWI4MzEzNzYiCitTUkNfVVJJW21kNXN1bV0gPSAiY2I0ZTBlZDllNTkzNzcxNmM3YzhhN2JlODQ4OTViNmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0YzBiNDliMzBlMjY3ZDc3NmY3OTQ1NWQwOWM3MGNjOWMxMmM4NmVlZTQwMGEwZDBhMGNkMWQ4ZTQ2Nzk1MCIKIAogUyA9ICIke1dPUktESVJ9L2NyeXB0b2Rldi1saW51eC0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjc1Mjc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkanVzdC10by1hbm90aGVyLWNoYW5nZS1pbi10aGUtdXNlci1wYWdlLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gZjEyNmU0ODM3ZTYzMzRkMDQ2NDU0MDk5NWRmNzQyNmZlZGY2YjE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgV2Vpc2VyIDxtaWNoYWVsLndlaXNlckBnbXguZGU+Ci1EYXRlOiBGcmksIDExIE5vdiAyMDE2IDE4OjA5OjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkanVzdCB0byBhbm90aGVyIGNoYW5nZSBpbiB0aGUgdXNlciBwYWdlIEFQSQotCi00LjkuMCB3aWxsIHJlcGxhY2UgdGhlIHdyaXRlIGFuZCBmb3JjZSBmbGFncyBvZiBnZXRfdXNlcl9wYWdlc19yZW1vdGUoKQotd2l0aCBhIGd1cF9mbGFncyBwYXJhbWV0ZXJbMV0uIERpc3Rpbmd1aXNoIHRoZSB0d28gQVBJcyBiYXNlZCBvbiBrZXJuZWwKLXZlcnNpb24gd2UncmUgY29tcGlsaW5nIGZvci4KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvOWJlYWUxZWE4OTMwNWE5NjY3Y2VhYWI2ZDBiZjQ2YTA0NWFkNzFlNwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTY2h1bHR6IDxkLnNjaHVsdHpAcGh5dGVjLmRlPgotLS0tCi0gemMuYyB8IDggKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS96Yy5jIGIvemMuYwotaW5kZXggYTk3YjQ5Zi4uZTc2NmVlMyAxMDA2NDQKLS0tLSBhL3pjLmMKLSsrKyBiL3pjLmMKLUBAIC02NSw3ICs2NSwxMyBAQCBpbnQgX19nZXRfdXNlcmJ1Zih1aW50OF90IF9fdXNlciAqYWRkciwgdWludDMyX3QgbGVuLCBpbnQgd3JpdGUsCi0gCXJldCA9IGdldF91c2VyX3BhZ2VzKAotICNlbmRpZgotIAkJCXRhc2ssIG1tLAotLQkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA5LCAwKSkKLSsJCQl3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotKyNlbHNlCi0rCQkJd3JpdGUsIDAsCi0rI2VuZGlmCi0rCQkJcGcsIE5VTEwpOwotIAl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwotIAlpZiAocmV0ICE9IHBnY291bnQpCi0gCQlyZXR1cm4gLUVJTlZBTDsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLURpc2FibGUtaW5zdGFsbGluZy1oZWFkZXItZmlsZS1wcm92aWRlZC1ieS1hbm90aGVyLXAucGF0Y2gKaW5kZXggYTU4MGZjNi4uODg1YjU4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoCkBAIC03LDIyICs3LDE4IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIHNwZWNpZmljIF0KIC0tLQotIE1ha2VmaWxlIHwgMiAtLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorIE1ha2VmaWxlIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGQ2NmVmMjYuLjhlOTdjNmEgMTAwNjQ0CitpbmRleCA1YTA4MGUwLi5iZjAyMzk2IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMjMsOCArMjMsNiBAQCBpbnN0YWxsOiBtb2R1bGVzX2luc3RhbGwKK0BAIC0zMyw3ICszMyw2IEBAIGluc3RhbGw6IG1vZHVsZXNfaW5zdGFsbAogIAogIG1vZHVsZXNfaW5zdGFsbDoKLSAJbWFrZSAtQyAkKEtFUk5FTF9ESVIpIFNVQkRJUlM9YHB3ZGAgbW9kdWxlc19pbnN0YWxsCi0tCUBlY2hvICJJbnN0YWxsaW5nIGNyeXB0b2Rldi5oIGluICQoUFJFRklYKS91c3IvaW5jbHVkZS9jcnlwdG8gLi4uIgotLQlAaW5zdGFsbCAtRCBjcnlwdG8vY3J5cHRvZGV2LmggJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0by9jcnlwdG9kZXYuaAorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgbW9kdWxlc19pbnN0YWxsCistCWluc3RhbGwgLW0gNjQ0IC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKERFU1RESVIpLyQoaW5jbHVkZWRpcikvY3J5cHRvL2NyeXB0b2Rldi5oCiAgCiAgY2xlYW46Ci0gCW1ha2UgLUMgJChLRVJORUxfRElSKSBTVUJESVJTPWBwd2RgIGNsZWFuCi0tLSAKLTEuOS4xCi0KKyAJJChNQUtFKSAkKEtFUk5FTF9NQUtFX09QVFMpIGNsZWFuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDZkNmI1NjBjNmU0NWRjMzE3ZGFlNDdjNzQ3MDZmYTQzZjRhMzFkOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjU1NmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBmMTRiNDcwNmIwZDA0OTg4ZTdlNWJjOGM0ZDJhZWZlZjlmMDI5ZDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBXZWlzZXIgPG1pY2hhZWwud2Vpc2VyQGdteC5kZT4KLURhdGU6IEZyaSwgNSBBdWcgMjAxNiAxODo0Mzo1NSArMDIwMAotU3ViamVjdDogW1BBVENIXSBBZGp1c3QgdG8gcmVjZW50IHVzZXIgcGFnZSBBUEkgY2hhbmdlcwotCi00LjYuMCBiYXNpY2FsbHkgcmVuYW1lZCBnZXRfdXNlcl9wYWdlcygpIHRvIGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpIGFuZAotaW50cm9kdWNlZCBhIG5ldyBnZXRfdXNlcl9wYWdlcygpIHRoYXQgYWx3YXlzIHdvcmtzIG9uIHRoZSBjdXJyZW50Ci10YXNrLlsxXSBEaXN0aW5ndWlzaCB0aGUgdHdvIEFQSXMgYmFzZWQgb24ga2VybmVsIHZlcnNpb24gd2UncmUKLWNvbXBpbGluZyBmb3IuCi0KLUFsc28sIHRoZXJlIHNlZW1zIHRvIGhhdmUgYmVlbiBhIG1hc3NpdmUgY2xlYW5zaW5nIG9mCi1wYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgaW4gZmF2b3VyIG9mIHB1dF9wYWdlKHBhZ2UpWzJdIHdoaWNoIHdhcyBhbgotYWxpYXMgZm9yIHB1dF9wYWdlKHBhZ2UpWzNdIHNpbmNlIDIuNi4wLiBCZWZvcmUgdGhhdCBiZWdpbm5pbmcgd2l0aAotMi40LjAgYm90aCBwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgYW5kIHB1dF9wYWdlKHBhZ2UpIGhhdmUgYmVlbiBhbGlhc2VzCi1mb3IgX19mcmVlX3BhZ2UocGFnZSkuIFNvIHVzaW5nIHB1dF9wYWdlKCkgaW5zdGVhZCBvZgotcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpIHdpbGwgcHJvZHVjZSBpZGVudGljYWwgY29kZSBmb3IgYW55dGhpbmcgYWZ0ZXIKLTIuNC4wLgotCi1bMV0gaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTYvMi8xMC81NTUKLVsyXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1mc2RldmVsL21zZzk1OTIzLmh0bWwKLVszXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1mc2RldmVsL21zZzk1OTIyLmh0bWwKLS0tLQotIHpjLmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gbWFzdGVyIGZvciA0Ljgga2VybmVsc10KLQotSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvemMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy96Yy5jCi0rKysgY3J5cHRvZGV2LWxpbnV4LTEuOC96Yy5jCi1AQCAtNTksNyArNTksMTIgQEAgaW50IF9fZ2V0X3VzZXJidWYodWludDhfdCBfX3VzZXIgKmFkZHIsCi0gCX0KLSAKLSAJZG93bl9yZWFkKCZtbS0+bW1hcF9zZW0pOwotLQlyZXQgPSBnZXRfdXNlcl9wYWdlcyh0YXNrLCBtbSwKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA2LCAwKSkKLSsJcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKAotKyNlbHNlCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzKAotKyNlbmRpZgotKwkJCXRhc2ssIG1tLAotIAkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0gCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0gCWlmIChyZXQgIT0gcGdjb3VudCkKLUBAIC0xMTksNyArMTI0LDcgQEAgdm9pZCByZWxlYXNlX3VzZXJfcGFnZXMoc3RydWN0IGNzZXNzaW9uCi0gCQllbHNlCi0gCQkJc2VzLT5yZWFkb25seV9wYWdlcy0tOwotIAotLQkJcGFnZV9jYWNoZV9yZWxlYXNlKHNlcy0+cGFnZXNbaV0pOwotKwkJcHV0X3BhZ2Uoc2VzLT5wYWdlc1tpXSk7Ci0gCX0KLSAJc2VzLT51c2VkX3BhZ2VzID0gMDsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjBlYWI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLUZyb20gY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgV2Vpc2VyIDxtaWNoYWVsLndlaXNlckBnbXguZGU+Ci1EYXRlOiBGcmksIDUgQXVnIDIwMTYgMTc6MjY6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBza2NpcGhlciBpbiBhZGRpdGlvbiB0byBhYmxrY2lwaGVyIEFQSQotCi1UaGUgYWJsa2NpcGhlciBBUEkgaXMgYmVpbmcgcGhhc2VkIG91dFsxXS4gVGhlIHVuaWZpZWQgc2tjaXBoZXIgQVBJCi1zZWVtcyB0byBoYXZlIG1hZGUgaXRzIGVudHJ5IHdpdGggNC4zLlszLCA0XSBCeSB3aGF0IGNhbiBiZSBzZWVuIGZyb20KLW1pZ3JhdGlvbiBwYXRjaGVzWzEuZmYuXSwgaXQncyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuCi0KLUFsc28sIGRlYWxsb2NhdG9ycyBzdWNoIGFzIGNyeXB0b19mcmVlX3NrY2lwaGVyKCkgYXJlIE5VTEwtc2FmZSBub3dbMl0uCi0KLUFkZCBhIG5ldyBoZWFkZXIgY2lwaGVyYXBpLmggdG8gYWlkIG1pZ3JhdGlvbiBmcm9tIGFibGtjaXBoZXIgdG8gc2tjaXBoZXIgYW5kCi1yZXRhaW4gc3VwcG9ydCBmb3Igb2xkIGtlcm5lbHMuIE1ha2UgaXQgZGVjaWRlIHdoaWNoIEFQSSB0byB1c2UgYW5kIHByb3ZpZGUKLWFwcHJvcHJpYXRlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0eXBlIGRlZmluaXRpb25zLiBTaW5jZSB0aGUgYWJsa2NpcGhlciBhbmQKLXNrY2lwaGVyIEFQSXMgYXJlIHNvIHNpbWlsYXIsIHRob3NlIGFyZSBtYWlubHkgZGVmaW5lcyBmb3IgY29ycmVzcG9uZGluZwotcHNldWRvLWZ1bmN0aW9ucyBpbiBuYW1lc3BhY2UgY3J5cHRvZGV2XyBkZXJpdmVkIGRpcmVjdGx5IGZyb20gdGhlaXIgQVBJCi1jb3VudGVycGFydHMuCi0KLUNvbXBpbGVzIGFuZCB3b3JrcyAoaS5lLiBjaGVja3MgcGFzcykgd2l0aCBEZWJpYW4gdGVzdGluZyA0LjYuNCBrZXJuZWwKLWFzIHdlbGwgYXMgNC44LXJjMisgTGludXMgZ2l0IHRyZWUgYXMgb2YgdG9kYXkuIChCb3RoIHJlcXVpcmUgYSBmaXggZm9yCi1jaGFuZ2VkIHBhZ2UgYWNjZXNzIEFQSVs1XS4pCi0KLVsxXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1jcnlwdG8vbXNnMTgxMzMuaHRtbAotWzJdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxODE1NC5odG1sLCBsaW5lIDEyMAotWzNdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxNjM3My5odG1sCi1bNF0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtY3J5cHRvL21zZzE2Mjk0Lmh0bWwKLVs1XSBodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC9wdWxsLzE0Ci0tLS0KLSBjaXBoZXJhcGkuaCB8IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGNyeXB0bGliLmMgIHwgNDAgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGNyeXB0bGliLmggIHwgIDYgKysrKy0tCi0gaW9jdGwuYyAgICAgfCAgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY2lwaGVyYXBpLmgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBtYXN0ZXIgZm9yIDQuOCBrZXJuZWxzXQotCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jaXBoZXJhcGkuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGNyeXB0b2Rldi1saW51eC0xLjgvY2lwaGVyYXBpLmgKLUBAIC0wLDAgKzEsNjAgQEAKLSsjaWZuZGVmIENJUEhFUkFQSV9ICi0rIyBkZWZpbmUgQ0lQSEVSQVBJX0gKLSsKLSsjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotKwotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkpCi0rIyBpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSsKLSt0eXBlZGVmIHN0cnVjdCBhYmxrY2lwaGVyX2FsZyBjcnlwdG9kZXZfYmxrY2lwaGVyX2FsZ190OwotK3R5cGVkZWYgc3RydWN0IGNyeXB0b19hYmxrY2lwaGVyIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0IGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90OwotKwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYWxsb2NfYmxrY2lwaGVyIGNyeXB0b19hbGxvY19hYmxrY2lwaGVyCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxnIGNyeXB0b19hYmxrY2lwaGVyX2FsZwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZSBjcnlwdG9fYWJsa2NpcGhlcl9ibG9ja3NpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9pdnNpemUgY3J5cHRvX2FibGtjaXBoZXJfaXZzaXplCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxpZ25tYXNrIGNyeXB0b19hYmxrY2lwaGVyX2FsaWdubWFzawotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3NldGtleSBjcnlwdG9fYWJsa2NpcGhlcl9zZXRrZXkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlcihjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90ICpjKSB7Ci0rCWlmIChjKQotKwkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihjKTsKLSt9Ci0rCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jIGFibGtjaXBoZXJfcmVxdWVzdF9hbGxvYwotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sgYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjawotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdCAqcikgewotKwlpZiAocikKLSsJCWFibGtjaXBoZXJfcmVxdWVzdF9mcmVlKHIpOwotK30KLSsKLSsjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0IGFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0IGNyeXB0b19hYmxrY2lwaGVyX2VuY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9kZWNyeXB0IGNyeXB0b19hYmxrY2lwaGVyX2RlY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90Zm0gY3J5cHRvX2FibGtjaXBoZXJfdGZtCi0rI2Vsc2UKLSsjaW5jbHVkZSA8Y3J5cHRvL3NrY2lwaGVyLmg+Ci0rCi0rdHlwZWRlZiBzdHJ1Y3Qgc2tjaXBoZXJfYWxnIGNyeXB0b2Rldl9ibGtjaXBoZXJfYWxnX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdDsKLSsKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2FsbG9jX2Jsa2NpcGhlciBjcnlwdG9fYWxsb2Nfc2tjaXBoZXIKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGcgY3J5cHRvX3NrY2lwaGVyX2FsZwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZSBjcnlwdG9fc2tjaXBoZXJfYmxvY2tzaXplCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfaXZzaXplIGNyeXB0b19za2NpcGhlcl9pdnNpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGlnbm1hc2sgY3J5cHRvX3NrY2lwaGVyX2FsaWdubWFzawotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3NldGtleSBjcnlwdG9fc2tjaXBoZXJfc2V0a2V5Ci0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlciBjcnlwdG9fZnJlZV9za2NpcGhlcgotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9hbGxvYyBza2NpcGhlcl9yZXF1ZXN0X2FsbG9jCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayBza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjawotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9mcmVlIHNrY2lwaGVyX3JlcXVlc3RfZnJlZQotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQgc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0IGNyeXB0b19za2NpcGhlcl9lbmNyeXB0Ci0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZGVjcnlwdCBjcnlwdG9fc2tjaXBoZXJfZGVjcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3RmbSBjcnlwdG9fc2tjaXBoZXJfdGZtCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL2NyeXB0bGliLmMKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmMKLUBAIC0yMyw3ICsyMyw2IEBACi0gICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNBLgotICAqLwotIAotLSNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgotICNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotQEAgLTM3LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+Ci0gI2luY2x1ZGUgPGNyeXB0by9hdXRoZW5jLmg+Ci0gI2luY2x1ZGUgImNyeXB0b2Rldl9pbnQuaCIKLSsjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0gCi0gCi0gc3RydWN0IGNyeXB0b2Rldl9yZXN1bHQgewotQEAgLTEzMywxNSArMTMzLDE1IEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KLSAJaW50IHJldDsKLSAKLSAJaWYgKGFlYWQgPT0gMCkgewotLQkJc3RydWN0IGFibGtjaXBoZXJfYWxnICphbGc7Ci0rCQljcnlwdG9kZXZfYmxrY2lwaGVyX2FsZ190ICphbGc7Ci0gCi0tCQlvdXQtPmFzeW5jLnMgPSBjcnlwdG9fYWxsb2NfYWJsa2NpcGhlcihhbGdfbmFtZSwgMCwgMCk7Ci0rCQlvdXQtPmFzeW5jLnMgPSBjcnlwdG9kZXZfY3J5cHRvX2FsbG9jX2Jsa2NpcGhlcihhbGdfbmFtZSwgMCwgMCk7Ci0gCQlpZiAodW5saWtlbHkoSVNfRVJSKG91dC0+YXN5bmMucykpKSB7Ci0gCQkJZGRlYnVnKDEsICJGYWlsZWQgdG8gbG9hZCBjaXBoZXIgJXMiLCBhbGdfbmFtZSk7Ci0gCQkJCXJldHVybiAtRUlOVkFMOwotIAkJfQotIAotLQkJYWxnID0gY3J5cHRvX2FibGtjaXBoZXJfYWxnKG91dC0+YXN5bmMucyk7Ci0rCQlhbGcgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGcob3V0LT5hc3luYy5zKTsKLSAJCWlmIChhbGcgIT0gTlVMTCkgewotIAkJCS8qIFdhcyBjb3JyZWN0IGtleSBsZW5ndGggc3VwcGxpZWQ/ICovCi0gCQkJaWYgKGFsZy0+bWF4X2tleXNpemUgPiAwICYmCi1AQCAtMTU0LDExICsxNTQsMTEgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAkJCX0KLSAJCX0KLSAKLS0JCW91dC0+YmxvY2tzaXplID0gY3J5cHRvX2FibGtjaXBoZXJfYmxvY2tzaXplKG91dC0+YXN5bmMucyk7Ci0tCQlvdXQtPml2c2l6ZSA9IGNyeXB0b19hYmxrY2lwaGVyX2l2c2l6ZShvdXQtPmFzeW5jLnMpOwotLQkJb3V0LT5hbGlnbm1hc2sgPSBjcnlwdG9fYWJsa2NpcGhlcl9hbGlnbm1hc2sob3V0LT5hc3luYy5zKTsKLSsJCW91dC0+YmxvY2tzaXplID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplKG91dC0+YXN5bmMucyk7Ci0rCQlvdXQtPml2c2l6ZSA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2l2c2l6ZShvdXQtPmFzeW5jLnMpOwotKwkJb3V0LT5hbGlnbm1hc2sgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGlnbm1hc2sob3V0LT5hc3luYy5zKTsKLSAKLS0JCXJldCA9IGNyeXB0b19hYmxrY2lwaGVyX3NldGtleShvdXQtPmFzeW5jLnMsIGtleXAsIGtleWxlbik7Ci0rCQlyZXQgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9zZXRrZXkob3V0LT5hc3luYy5zLCBrZXlwLCBrZXlsZW4pOwotIAl9IGVsc2UgewotIAkJb3V0LT5hc3luYy5hcyA9IGNyeXB0b19hbGxvY19hZWFkKGFsZ19uYW1lLCAwLCAwKTsKLSAJCWlmICh1bmxpa2VseShJU19FUlIob3V0LT5hc3luYy5hcykpKSB7Ci1AQCAtMTkxLDE0ICsxOTEsMTQgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAlpbml0X2NvbXBsZXRpb24oJm91dC0+YXN5bmMucmVzdWx0LT5jb21wbGV0aW9uKTsKLSAKLSAJaWYgKGFlYWQgPT0gMCkgewotLQkJb3V0LT5hc3luYy5yZXF1ZXN0ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jKG91dC0+YXN5bmMucywgR0ZQX0tFUk5FTCk7Ci0rCQlvdXQtPmFzeW5jLnJlcXVlc3QgPSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2Mob3V0LT5hc3luYy5zLCBHRlBfS0VSTkVMKTsKLSAJCWlmICh1bmxpa2VseSghb3V0LT5hc3luYy5yZXF1ZXN0KSkgewotIAkJCWRlcnIoMSwgImVycm9yIGFsbG9jYXRpbmcgYXN5bmMgY3J5cHRvIHJlcXVlc3QiKTsKLSAJCQlyZXQgPSAtRU5PTUVNOwotIAkJCWdvdG8gZXJyb3I7Ci0gCQl9Ci0gCi0tCQlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKG91dC0+YXN5bmMucmVxdWVzdCwKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sob3V0LT5hc3luYy5yZXF1ZXN0LAotIAkJCQkJQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tMT0csCi0gCQkJCQljcnlwdG9kZXZfY29tcGxldGUsIG91dC0+YXN5bmMucmVzdWx0KTsKLSAJfSBlbHNlIHsKLUBAIC0yMTgsMTAgKzIxOCw4IEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KLSAJcmV0dXJuIDA7Ci0gZXJyb3I6Ci0gCWlmIChhZWFkID09IDApIHsKLS0JCWlmIChvdXQtPmFzeW5jLnJlcXVlc3QpCi0tCQkJYWJsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUob3V0LT5hc3luYy5yZXF1ZXN0KTsKLS0JCWlmIChvdXQtPmFzeW5jLnMpCi0tCQkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihvdXQtPmFzeW5jLnMpOwotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUob3V0LT5hc3luYy5yZXF1ZXN0KTsKLSsJCWNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIob3V0LT5hc3luYy5zKTsKLSAJfSBlbHNlIHsKLSAJCWlmIChvdXQtPmFzeW5jLmFyZXF1ZXN0KQotIAkJCWFlYWRfcmVxdWVzdF9mcmVlKG91dC0+YXN5bmMuYXJlcXVlc3QpOwotQEAgLTIzNywxMCArMjM1LDggQEAgdm9pZCBjcnlwdG9kZXZfY2lwaGVyX2RlaW5pdChzdHJ1Y3QgY2lwaAotIHsKLSAJaWYgKGNkYXRhLT5pbml0KSB7Ci0gCQlpZiAoY2RhdGEtPmFlYWQgPT0gMCkgewotLQkJCWlmIChjZGF0YS0+YXN5bmMucmVxdWVzdCkKLS0JCQkJYWJsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotLQkJCWlmIChjZGF0YS0+YXN5bmMucykKLS0JCQkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihjZGF0YS0+YXN5bmMucyk7Ci0rCQkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotKwkJCWNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIoY2RhdGEtPmFzeW5jLnMpOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0KQotIAkJCQlhZWFkX3JlcXVlc3RfZnJlZShjZGF0YS0+YXN5bmMuYXJlcXVlc3QpOwotQEAgLTI4OSwxMCArMjg1LDEwIEBAIHNzaXplX3QgY3J5cHRvZGV2X2NpcGhlcl9lbmNyeXB0KHN0cnVjdAotIAlyZWluaXRfY29tcGxldGlvbigmY2RhdGEtPmFzeW5jLnJlc3VsdC0+Y29tcGxldGlvbik7Ci0gCi0gCWlmIChjZGF0YS0+YWVhZCA9PSAwKSB7Ci0tCQlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0LAotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKLSAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCi0gCQkJbGVuLCBjZGF0YS0+YXN5bmMuaXYpOwotLQkJcmV0ID0gY3J5cHRvX2FibGtjaXBoZXJfZW5jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0rCQlyZXQgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKLSAJfSBlbHNlIHsKLSAJCWFlYWRfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0LAotIAkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzcmMsIGRzdCwKLUBAIC0zMTEsMTAgKzMwNywxMCBAQCBzc2l6ZV90IGNyeXB0b2Rldl9jaXBoZXJfZGVjcnlwdChzdHJ1Y3QKLSAKLSAJcmVpbml0X2NvbXBsZXRpb24oJmNkYXRhLT5hc3luYy5yZXN1bHQtPmNvbXBsZXRpb24pOwotIAlpZiAoY2RhdGEtPmFlYWQgPT0gMCkgewotLQkJYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QsCi0gCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYywgZHN0LAotIAkJCWxlbiwgY2RhdGEtPmFzeW5jLml2KTsKLS0JCXJldCA9IGNyeXB0b19hYmxrY2lwaGVyX2RlY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotKwkJcmV0ID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZGVjcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0gCX0gZWxzZSB7Ci0gCQlhZWFkX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5hcmVxdWVzdCwKLSAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL2NyeXB0bGliLmgKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmgKLUBAIC0zLDYgKzMsOCBAQAotIAotICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Ci0gCi0rI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotKwotIHN0cnVjdCBjaXBoZXJfZGF0YSB7Ci0gCWludCBpbml0OyAvKiAwIHVuaW5pdGlhbGl6ZWQgKi8KLSAJaW50IGJsb2Nrc2l6ZTsKLUBAIC0xMiw4ICsxNCw4IEBAIHN0cnVjdCBjaXBoZXJfZGF0YSB7Ci0gCWludCBhbGlnbm1hc2s7Ci0gCXN0cnVjdCB7Ci0gCQkvKiBibG9jayBjaXBoZXJzICovCi0tCQlzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnM7Ci0tCQlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXF1ZXN0OwotKwkJY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdCAqczsKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90ICpyZXF1ZXN0OwotIAotIAkJLyogQUVBRCBjaXBoZXJzICovCi0gCQlzdHJ1Y3QgY3J5cHRvX2FlYWQgKmFzOwotSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvaW9jdGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy9pb2N0bC5jCi0rKysgY3J5cHRvZGV2LWxpbnV4LTEuOC9pb2N0bC5jCi1AQCAtMzQsNyArMzQsNiBAQAotICAqLwotIAotICNpbmNsdWRlIDxjcnlwdG8vaGFzaC5oPgotLSNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgotICNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotQEAgLTUzLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSAiY3J5cHRvZGV2X2ludC5oIgotICNpbmNsdWRlICJ6Yy5oIgotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotIAotIE1PRFVMRV9BVVRIT1IoIk5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QGdudXRscy5vcmc+Iik7Ci0gTU9EVUxFX0RFU0NSSVBUSU9OKCJDcnlwdG9EZXYgZHJpdmVyIik7Ci1AQCAtNzY1LDcgKzc2NSw3IEBAIHN0YXRpYyBpbnQgZ2V0X3Nlc3Npb25faW5mbyhzdHJ1Y3QgZmNyeXAKLSAKLSAJaWYgKHNlc19wdHItPmNkYXRhLmluaXQpIHsKLSAJCWlmIChzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApCi0tCQkJdGZtID0gY3J5cHRvX2FibGtjaXBoZXJfdGZtKHNlc19wdHItPmNkYXRhLmFzeW5jLnMpOwotKwkJCXRmbSA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3RmbShzZXNfcHRyLT5jZGF0YS5hc3luYy5zKTsKLSAJCWVsc2UKLSAJCQl0Zm0gPSBjcnlwdG9fYWVhZF90Zm0oc2VzX3B0ci0+Y2RhdGEuYXN5bmMuYXMpOwotIAkJdGZtX2luZm9fdG9fYWxnX2luZm8oJnNpb3AtPmNpcGhlcl9pbmZvLCB0Zm0pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzL2tlcm5lbC00LTEwLWNoYW5nZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMva2VybmVsLTQtMTAtY2hhbmdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNkNjA4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMva2VybmVsLTQtMTAtY2hhbmdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMmIyOWJlOGFjNDE0MTRlZDE5Y2I0ZjVkNTYyNmQ5YmQwZDdiMTFhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTI6MTE6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRqdXN0IHRvIEFQSSBjaGFuZ2VzIGluIGtlcm5lbCA+PTQuMTAKLQotVGhlcmUgYXJlIG1hbnkgY2hhbmdlcyByZWxhdGVkIHRvIGdldF91c2VyX3BhZ2VzIGFuZCB0aGUgY29kZSBpcyByZXdyaXR0ZW4KLWZvciBjbGFyaXR5LgotCi1TaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgotLS0tCi0gemMuYyB8IDI4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS96Yy5jIGIvemMuYwotaW5kZXggZTc2NmVlMy4uMmY0ZWE5OSAxMDA2NDQKLS0tLSBhL3pjLmMKLSsrKyBiL3pjLmMKLUBAIC01OSwxOSArNTksMjUgQEAgaW50IF9fZ2V0X3VzZXJidWYodWludDhfdCBfX3VzZXIgKmFkZHIsIHVpbnQzMl90IGxlbiwgaW50IHdyaXRlLAotIAl9Ci0gCi0gCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKLS0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA2LCAwKSkKLS0JcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgNiwgMCkpCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzKHRhc2ssIG1tLAotKwkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0gI2Vsc2UKLS0JcmV0ID0gZ2V0X3VzZXJfcGFnZXMoCi0tI2VuZGlmCi0tCQkJdGFzaywgbW0sCi0tCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwKLS0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA5LCAwKSkKLS0JCQl3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotLSNlbHNlCi0tCQkJd3JpdGUsIDAsCi0tI2VuZGlmCi0rIyAgaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDksIDApKQotKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUodGFzaywgbW0sCi0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKLSsjICBlbHNlCi0rIyAgICBpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgMTAsIDApKQotKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUodGFzaywgbW0sCi0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUgPyBGT0xMX1dSSVRFIDogMCwKLSAJCQlwZywgTlVMTCk7Ci0rIyAgICBlbHNlCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzX3JlbW90ZSh0YXNrLCBtbSwKLSsJCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LCB3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotKwkJCXBnLCBOVUxMLCBOVUxMKTsKLSsjICAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjZW5kaWYKLSAJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKLSAJaWYgKHJldCAhPSBwZ2NvdW50KQotIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCmluZGV4IDBjNDA5YjAuLmQ3NTk5NDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJEZXZpY2UgVHJlZSBDb21waWxlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2aWNldHJlZS5vcmcvIgogREVTQ1JJUFRJT04gPSAiVGhlIERldmljZSBUcmVlIENvbXBpbGVyIGlzIGEgdG9vbCB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIE9wZW4tRmlybXdhcmUtbGlrZSBkZXZpY2UgdHJlZSB1c2VkIGJ5IFBvd2VyUEMga2VybmVscy4iCiBTRUNUSU9OID0gImJvb3Rsb2FkZXIiCiBMSUNFTlNFID0gIkdQTHYyIHwgQlNEIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNzJhZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZHRjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCi0KLVNSQ1JFViA9ICJlYzAyYjM0YzA1YmUwNGYyNDlmZmFhY2E0YjY2NmY1MjQ2ODc3ZGVhIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRiN2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGR0Yy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgorCitTUkNSRVYgPSAiNTU4Y2Q4MWJkZDQzMjc2OWI1OWJmZjAxMjQwYzQ0ZjgyY2ZiMWE5ZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCA1ZTY1NDY5Li4zYTM5OTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtNCw3ICs0LDcgQEAKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiYmQ3NDQ3Y2Q2Mjc0ZDc2NGExMjlkY2RjMjQ2Y2RiZmQ4YzQ3Yjk5MSIKK1NSQ1JFViA9ICJiNDZiMWM0ZjA5NzNiZjFlYjA5Y2YxMTkxZjVmNGU2OWJjZDA0NzVkIgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKaW5kZXggYmRmZTAyNC4uYzY4OWJlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8va2R1bXAgXAogICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKICIKIAogUFIgPSAicjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjJmODVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGVhN2JlNmQ3MWI4NTg4MGU4ZThhMmM4YTRmNDlhNjk2YzVmMzFhZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAxMToxODo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIFBJRSBkdXJpbmcgbGluaworCitXZSBoYXZlIGV4cGxjaXRseSBkaXNhYmxlZCBQSUUgZHVyaW5nIGNvbXBpbGUgc28gd2UKK2p1c3QgbmVlZCB0byBtYXRjaCBpdCB3aXRoIGxpbmtlciBmbGFncworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHB1cmdhdG9yeS9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9NYWtlZmlsZSBiL3B1cmdhdG9yeS9NYWtlZmlsZQoraW5kZXggNTY0YmRiNy4uYTA4ZTQxZiAxMDA2NDQKKy0tLSBhL3B1cmdhdG9yeS9NYWtlZmlsZQorKysrIGIvcHVyZ2F0b3J5L01ha2VmaWxlCitAQCAtNTksNyArNTksNyBAQCAkKFBVUkdBVE9SWSk6IENQUEZMQUdTPSQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKSBcCisgCQkJLUlpbmNsdWRlIFwKKyAJCQktSSQoc2hlbGwgJChDQykgLXByaW50LWZpbGUtbmFtZT1pbmNsdWRlKQorICQoUFVSR0FUT1JZKTogTERGTEFHUz0kKCQoQVJDSClfUFVSR0FUT1JZX0VYVFJBX0NGTEFHUylcCistCQkJLVdsLC0tbm8tdW5kZWZpbmVkIC1ub3N0YXJ0ZmlsZXMgLW5vc3RkbGliIFwKKysJCQktV2wsLS1uby11bmRlZmluZWQgLW5vLXBpZSAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiBcCisgCQkJLW5vZGVmYXVsdGxpYnMgLWUgcHVyZ2F0b3J5X3N0YXJ0IC1XbCwtciBcCisgCQkJLVdsLC1NYXA9JChQVVJHQVRPUllfTUFQKQorIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlOTRkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAzYmI3M2U1ZTU2NDliNDU1ZTE1ZDVjYTNhN2FkMWE5MGM0OTYwOTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMTE6NTQ6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtNjQ6IERpc2FibGUgUElDCisKK0ZpeAorfCBjYzE6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiBjb2RlIG1vZGVsICdsYXJnZScgd2l0aCAtZlBJQworfCBtYWtlOiAqKiogW01ha2VmaWxlOjExODogcHVyZ2F0b3J5L2FyY2gvYXJtNjQvZW50cnkub10gRXJyb3IgMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCitpbmRleCA2MzZhYmVhLi44MDA2OGNhIDEwMDY0NAorLS0tIGEvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKKysrKyBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCitAQCAtMSw2ICsxLDcgQEAKKyAKKyBhcm02NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gXAorIAktbWNtb2RlbD1sYXJnZSBcCisrCS1mbm8tUElDIFwKKyAJLWZuby1zdGFjay1wcm90ZWN0b3IgXAorIAktZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIFwKKyAJLVd1bmRlZiBcCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTY1YTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuc2VydmljZQpAQCAtMCwwICsxLDEyIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVJlYm9vdCBhbmQgZHVtcCB2bWNvcmUgdmlhIGtleGVjCitEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCisKK1tTZXJ2aWNlXQorVHlwZT1vbmVzaG90CitSZW1haW5BZnRlckV4aXQ9eWVzCitFeGVjU3RhcnQ9QExJQkVYRUNESVJAL2tkdW1wLWhlbHBlciBzdGFydAorRXhlY1N0b3A9QExJQkVYRUNESVJAL2tkdW1wLWhlbHBlciBzdG9wCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYgppbmRleCA5MGQ1OTg1Li4wZjYzOThmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCkBAIC0xOSwzMCArMTksNDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2tleGVjLXgzMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaCBcCiAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiMmIyYzVlNmIyOWQ0NjdkNmU5OWQ1ODdmYjZiN2NmNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiM2U2OTUxOWQyYWNjZWQyNTY4NDNiMWU4ZjFlY2ZhMDBkOWI1NGZhMDc0NDllZDc4ZjA1YjkxOTNmMjM5MzcwIgogCitTRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgorCiBQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgogCiBGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKIEZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZAoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCiBJTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCiBJTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAorICAgICAgICBmaQorCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IGJhODBmYzUuLjdmYjEwYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtMTQsMTUgKzE0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIgogaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBwa2djb25maWcgbWFucGFnZXMKIAotU1JDUkVWID0gIjY1YTg4NWRmNWY2ZjE1MjIyYjQ0ZmQ2OTVjNWVhY2ExN2U4MzdhMTQiCitTUkNSRVYgPSAiZWY0MjU3YjU5YzQzMDdiOGM2MjdkODlmM2M3ZjFmZWVkYjMyNTgyZiIKICMgTG9va291dCBmb3IgUFYgYnVtcCB0b28gd2hlbiBTUkNSRVYgaXMgY2hhbmdlZAotUFYgPSAiMjMrZ2l0JHtTUkNQVn0iCitQViA9ICIyNCtnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rbW9kL2ttb2QuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2RlcG1vZC1zZWFyY2guY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtT19DTE9FWEVDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9rY21kbGluZV9xdW90ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YmRlYzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gNGE2ZjkyYTEwNjgwZTdlMzY4MDdmNWUyYWU4ZTQ5N2U4ZDczYTA0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbWVzIE1pbm9yIDxqYW1lcy5taW5vckBuaS5jb20+Ci1EYXRlOiBGcmksIDIwIEphbiAyMDE3IDE3OjE1OjUwIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmttb2Q6IEZpeCBoYW5kbGluZyBvZiBxdW90ZXMgaW4ga2VybmVsIGNvbW1hbmQgbGluZQotCi1JZiBhIG1vZHVsZSBwYXJhbWV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSBjb250YWlucyBxdW90ZXMsIGFueQotc3BhY2VzIGluc2lkZSB0aG9zZSBxdW90ZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCi1wYXJhbWV0ZXIuCi0KLVNpZ25lZC1vZmYtYnk6IEphbWVzIE1pbm9yIDxqYW1lcy5taW5vckBuaS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIGxpYmttb2QvbGlia21vZC1jb25maWcuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmttb2QvbGlia21vZC1jb25maWcuYyBiL2xpYmttb2QvbGlia21vZC1jb25maWcuYwotaW5kZXggNTdmYmUzNy4uZWE0MGQxOSAxMDA2NDQKLS0tLSBhL2xpYmttb2QvbGlia21vZC1jb25maWcuYwotKysrIGIvbGlia21vZC9saWJrbW9kLWNvbmZpZy5jCi1AQCAtNDk3LDYgKzQ5Nyw3IEBAIHN0YXRpYyBpbnQga21vZF9jb25maWdfcGFyc2Vfa2NtZGxpbmUoc3RydWN0IGttb2RfY29uZmlnICpjb25maWcpCi0gCWNoYXIgYnVmW0tDTURfTElORV9TSVpFXTsKLSAJaW50IGZkLCBlcnI7Ci0gCWNoYXIgKnAsICptb2RuYW1lLCAgKnBhcmFtID0gTlVMTCwgKnZhbHVlID0gTlVMTCwgaXNfbW9kdWxlID0gMTsKLSsJYm9vbCBpc19xdW90ZWQgPSBmYWxzZTsKLSAKLSAJZmQgPSBvcGVuKCIvcHJvYy9jbWRsaW5lIiwgT19SRE9OTFl8T19DTE9FWEVDKTsKLSAJaWYgKGZkIDwgMCkgewotQEAgLTUxNCw2ICs1MTUsMTIgQEAgc3RhdGljIGludCBrbW9kX2NvbmZpZ19wYXJzZV9rY21kbGluZShzdHJ1Y3Qga21vZF9jb25maWcgKmNvbmZpZykKLSAJfQotIAotIAlmb3IgKHAgPSBidWYsIG1vZG5hbWUgPSBidWY7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsgcCsrKSB7Ci0rCQlpZiAoKnAgPT0gJyInKSB7Ci0rCQkJaXNfcXVvdGVkID0gIWlzX3F1b3RlZDsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsJCWlmIChpc19xdW90ZWQpCi0rCQkJY29udGludWU7Ci0gCQlzd2l0Y2ggKCpwKSB7Ci0gCQljYXNlICcgJzoKLSAJCQkqcCA9ICdcMCc7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAppbmRleCBhZjE5YjM3Li43MTQ3ZmRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtbWFrZWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCkBAIC0xLDMgKzEsNyBAQAorCitTaWduZWQtb2ZmLWJ5OiBKYWNrIE1pdGNoZWxsIDxqYWNrLm1pdGNoZWxsQGRiYnJvYWRjYXN0LmNvLnVrPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmlnIGIvTWFrZWZpbGUKIGluZGV4IDE2YTIzNjkuLmZhNzk3YTIgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5vcmlnCkBAIC01LDggKzksOCBAQAogQEAgLTEsMTAgKzEsMTEgQEAKIC0jIEZJWE1FOiBVc2UgYXV0b2NvbmYgPwogLUhBU19HVEtfR1VJID0gMQotKyMgVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotKyMgU2lnbmVkLW9mZi1ieTogSmFjayBNaXRjaGVsbCA8amFjay5taXRjaGVsbEBkYmJyb2FkY2FzdC5jby51az4KKysjCisrIwogIAogIERFU1RESVIgPQogIFNCSU5ESVIgPSAvdXNyL3NiaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgppbmRleCBmZjYwZDMwLi45MDU0YjMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCkBAIC0xODQsNiArMTg0LDggQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZmlybXdhcmUvbGludXgtZmlybXdhcmUuZ2l0IgogCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhbGxhcmNoCkBAIC0yMTYsNyArMjE4LDYgQEAKIAogCSMgZml4dXAgd2wxMnh4IGxvY2F0aW9uLCBhZnRlciAyLjYuMzcgdGhlIGtlcm5lbCBzZWFyY2hlcyBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgaXQKIAkoIGNkICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIDsgbG4gLXNmIHRpLWNvbm5lY3Rpdml0eS8qIC4gKQotCiB9CiAKIApAQCAtMjQ3LDcgKzI0OCw3IEBACiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDUwLTQgJHtQTn0taXdsd2lmaS02MDUwLTUgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2MCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAogICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCkBAIC02MTksNiArNjIwLDcgQEAKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2MCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjYwLSoudWNvZGUiCiBGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NS0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktbWlzYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0qLnVjb2RlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MjYyNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1ZTdmNmI5YjJmZTFiNmNjN2JjNTZhM2EwYmZjMDkwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjOTVkOWYwNDliZDA4NWU1YzM0NmQyYzc3ZjA2M2I4NDI1ZjE5MTQ2MGZjZDNhZTlmZTdlOTRlMDQ3N2RjNGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBkMGFiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmM0NTQxNTdlMmQwMjRkNDAxYTYwOTA1ZDY0ODFjNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQ1YzNiZWNkNGQwOGNlNDExYzE0NjI4YTk0OWQwOGUyNDMzZDhjZGVjYTkyMDM2YzcwMTM5ODBlOTM4NThhYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IDcwMDQyNjEuLmMxYjViNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICBjZCAke0J9CiAgICAgICAgIGZpbmQgLiAtdHlwZSBkIC1uYW1lICcuZ2l0KicgLXBydW5lIC1vIC1wYXRoICcuZGVidWcnIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludDAgfCBjcGlvIC0tbnVsbCAtcGRsdSAka2VybmVsZGlyCiAgICAgICAgIGNkICR7U30KLSAgICAgICAgZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQwIHwgY3BpbyAtLW51bGwgLXBkbHUgJGtlcm5lbGRpcgorCWZpbmQgLiAtdHlwZSBkIC1uYW1lICcuZ2l0KicgLXBydW5lIC1vIC10eXBlIGQgLW5hbWUgJy5rZXJuZWwtbWV0YScgLXBydW5lIC1vIC10eXBlIGYgLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICRrZXJuZWxkaXIKIAogICAgICAgICAjIEV4cGxpY2l0bHkgc2V0IEtCVUlMRF9PVVRQVVQgdG8gZW5zdXJlIHRoYXQgdGhlIGltYWdlIGRpcmVjdG9yeSBpcyBjbGVhbmVkIGFuZCBub3QKICAgICAgICAgIyBUaGUgbWFpbiBidWlsZCBhcnRpZmFjdHMuIFdlIGNsZWFuIHRoZSBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3JzIG9uIG1pc21hdGNoZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCmluZGV4IDAxNzRjODAuLmYxOTEyNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwpAQCAtMSw5MSArMSwzIEBACi0jIFN1cHBvcnQgZm9yIGRldmljZSB0cmVlIGdlbmVyYXRpb24KLUZJTEVTX2tlcm5lbC1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUqIgotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgZC5hcHBlbmRWYXIoIlBBQ0tBR0VTIiwgIiBrZXJuZWwtZGV2aWNldHJlZSIpCi19Ci0KLW5vcm1hbGl6ZV9kdGIgKCkgewotCURUQj0iJDEiCi0JaWYgZWNobyAke0RUQn0gfCBncmVwIC1xICcvZHRzLyc7IHRoZW4KLQkJYmJ3YXJuICIke0RUQn0gY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgdGhlIGR0cyBmaWxlLCBidXQgb25seSB0aGUgZHRiIG5hbWUgc2hvdWxkIGJlIHVzZWQuIgotCQlEVEI9YGJhc2VuYW1lICR7RFRCfSB8IHNlZCAncyxcLmR0cyQsLmR0YixnJ2AKLQlmaQotCWVjaG8gIiR7RFRCfSIKLX0KLQotZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICgpIHsKLQlEVEI9IiQxIgotCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8ke0RUQn0iCi0JaWYgWyAhIC1lICIke0RUQl9QQVRIfSIgXTsgdGhlbgotCQlEVEJfUEFUSD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC8ke0RUQn0iCi0JZmkKLQllY2hvICIke0RUQl9QQVRIfSIKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlvZV9ydW5tYWtlICR7RFRCfQotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCi0JCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0JCWRvbmUKLQlkb25lCi19Ci0KLWRvX2RlcGxveV9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQliYXNlX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX05BTUU9YGVjaG8gJHtiYXNlX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCi0JCQlpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9Ci0JCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0JCWRvbmUKLQlkb25lCi19Ci0KLXBrZ19wb3N0aW5zdF9rZXJuZWwtZGV2aWNldHJlZSAoKSB7Ci0JY2QgLyR7S0VSTkVMX0lNQUdFREVTVH0KLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9OyBkbwotCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9Ci0JCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJdXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgLyR7S0VSTkVMX0lNQUdFREVTVH0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9ICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBkZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfSAke0tFUk5FTF9QUklPUklUWX0gfHwgdHJ1ZQotCQlkb25lCi0JZG9uZQotfQotCi1wa2dfcG9zdHJtX2tlcm5lbC1kZXZpY2V0cmVlICgpIHsKLQljZCAvJHtLRVJORUxfSU1BR0VERVNUfQotCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9FWFQ9JHtEVEIjIyoufQotCQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCi0JCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBkZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfSAke0tFUk5FTF9QUklPUklUWX0gfHwgdHJ1ZQotCQlkb25lCi0JZG9uZQorcHl0aG9uKCkgeworICAgIGJiLndhcm4oIllvdSBhcmUgdXNpbmcgdGhlIGxpbnV4LWR0Yi5pbmMgd2hpY2ggaXMgZGVwcmVjYXRlZC4gWW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFzIHRoZSBEZXZpY2UgVHJlZSBzdXBwb3J0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuIEtFUk5FTF9ERVZJQ0VUUkVFIGlzIHNldC4iKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgppbmRleCA5OTRhYzc0Li5lMWM3Zjc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgpAQCAtMTMsMTAgKzEzLDE0IEBACiBQQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLWltYWdlLS4qIgogUEFDS0FHRVNfRFlOQU1JQyArPSAiXmtlcm5lbC1maXJtd2FyZS0uKiIKIAotUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGVzIgorUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGVzIGtlcm5lbC12bWxpbnV4IgogRklMRVNfa2VybmVsLW1vZHVsZXMgPSAiIgogQUxMT1dfRU1QVFlfa2VybmVsLW1vZHVsZXMgPSAiMSIKIERFU0NSSVBUSU9OX2tlcm5lbC1tb2R1bGVzID0gIktlcm5lbCBtb2R1bGVzIG1ldGEgcGFja2FnZSIKK0ZJTEVTX2tlcm5lbC12bWxpbnV4ID0gIiIKK0FMTE9XX0VNUFRZX2tlcm5lbC12bWxpbnV4ID0gIjEiCitERVNDUklQVElPTl9rZXJuZWwtdm1saW51eCA9ICJLZXJuZWwgdm1saW51eCBtZXRhIHBhY2thZ2UiCisKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCmluZGV4IGJmNjdmODEuLjU4NTJiNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKQEAgLTI4LDcgKzI4LDcgQEAKIFNSQ1JFVl9tYWNoaW5lID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiBTUkNSRVZfbWV0YSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjExLXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTItcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgyNDY4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjhjYzYyYWMzZjI2YmQ2ZGRlNjhhZDJkODYwMjZhMjUyZmU3YWRkNDQiCi1TUkNSRVZfbWV0YSA/PSAiOWY5YzlhNjZlZjM0NTIzNDM1ODZhZGYxNTAxMzc5NjdlOTU1ZDcxYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMS40MyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCmluZGV4IGY5M2Q5NTMuLmZkMzFiZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogfQogCiBTUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICI0MGVlNDhhYzA5OWMwNGY2MGQyYzEzMjAzMWQ5NjI1YTRlMGM0YzllIgorU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEwO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWIwMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgpAQCAtMCwwICsxLDM4IEBACitLQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjMzYWExYTRlYTQ0Mzk5ZjEyZGZiMjYxNDZlYTA2ZGI1Y2QwMmNhNjkiCitTUkNSRVZfbWV0YSA/PSAiMTlkODE1ZDVhMzRiZmFhZDk1ZDg3Y2MwOTdjZWYxOGI1OTRkYWFjOCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCmluZGV4IDI1ZDg4ODMuLjk3NTM4ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIKQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiMWU2OTFkYjdhZjY0MmZmZjAyMjJhMWYxZDFlOTA0M2MxNzI2OTlkNSIKLVNSQ1JFVl9tZXRhID89ICI4MDRkMmIzMTY0ZWMyNWVkNTE5ZmQ2OTVkZTlhYTA5MDg0NjBjOTJlIgorU1JDUkVWX21hY2hpbmUgPz0gImQ1ZWZlZWViOTI4YTAxMTFmYzE4N2ZkMWU4ZDAzZDJlNGUzNWQ0YTAiCitTUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgppbmRleCA2NzM0ZGMwLi41YzAxNmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKIH0KIAotU1JDUkVWX21hY2hpbmUgPz0gIjA4MTdhN2IzYTg1M2QxYmRkM2I4N2EyNjU0ZWQyZWU2MmY2MjQ4MDYiCi1TUkNSRVZfbWV0YSA/PSAiNmFjYWU2ZjcyMDBhZjE3YjNjMmJlNWVjYWIyY2ZmZGM1OWEwMmIzNSIKK1NSQ1JFVl9tYWNoaW5lID89ICI5MGQxZmZhMzZjYmQzNjcyMjYzOGM5N2MxYmI0NmE1ODc0ZGJlMjhlIgorU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuOTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzN2VmYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xLjQzIgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tZXRhID89ICI5ZjljOWE2NmVmMzQ1MjM0MzU4NmFkZjE1MDEzNzk2N2U5NTVkNzFhIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgppbmRleCAzMTM5NmFiLi5iMjIzNDk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCkBAIC0xMCwxNCArMTAsMTQgQEAKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCiBTUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICI0MGVlNDhhYzA5OWMwNGY2MGQyYzEzMjAzMWQ5NjI1YTRlMGM0YzllIgorU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEwO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NiQpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKIAogIyBGdW5jdGlvbmFsaXR5IGZsYWdzCiBLRVJORUxfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjJlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKQEAgLTAsMCArMSwyNSBAQAorS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21ldGEgPz0gIjE5ZDgxNWQ1YTM0YmZhYWQ5NWQ4N2NjMDk3Y2VmMThiNTk0ZGFhYzgiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMi5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgppbmRleCA1MGI5YTU2Li44YTk4MTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgpAQCAtNCwyMCArNCwyMCBAQAogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuODciCitMSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tZXRhID89ICI4MDRkMmIzMTY0ZWMyNWVkNTE5ZmQ2OTVkZTlhYTA5MDg0NjBjOTJlIgorU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NiQpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKIAogIyBGdW5jdGlvbmFsaXR5IGZsYWdzCiBLRVJORUxfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgppbmRleCBlMGM1MjM2Li40ZDQ2ODAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgpAQCAtNCwyMCArNCwyMCBAQAogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCiAKIEtNRVRBID0gImtlcm5lbC1tZXRhIgogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKLVNSQ1JFVl9tYWNoaW5lID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21ldGEgPz0gIjZhY2FlNmY3MjAwYWYxN2IzYzJiZTVlY2FiMmNmZmRjNTlhMDJiMzUiCitTUkNSRVZfbWFjaGluZSA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tZXRhID89ICIwNzc0ZWFjZWEyYTdkM2ExNTA1OTQ1MzNiOGM4MGQwYzBiZmRmZGVkIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgogCiAjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKIEtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggNjM3NTA2YS4uOWMxZjYxYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwpAQCAtMzMsNyArMzMsOCBAQAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZAogIyBLTUFDSElORSA9ICJVTkRFRklORUQiCiAKLUxJTlVYX0tFUk5FTF9UWVBFID89ICJzdGFuZGFyZCIKKyMgVGhlIGRpc3RybyBvciBsb2NhbC5jb25mIHNob3VsZCBzZXQgdGhpcywgYnV0IGlmIG5vYm9keSBjYXJlcy4uLgorTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKIAogIyBLTUVUQSA/PSAiIgogS0JSQU5DSCA/PSAibWFzdGVyIgpAQCAtNDgsMTIgKzQ5LDExIEBACiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPz0gIjAiCiBLTUVUQV9BVURJVCA/PSAieWVzIgogCi1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvLSR7TElOVVhfS0VSTkVMX1RZUEV9IgorTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCiAKICMgUGljayB1cCBzaGFyZWQgZnVuY3Rpb25zCiBpbmhlcml0IGtlcm5lbAogaW5oZXJpdCBrZXJuZWwteW9jdG8KLXJlcXVpcmUgbGludXgtZHRiLmluYwogCiBCID0gIiR7V09SS0RJUn0vbGludXgtJHtQQUNLQUdFX0FSQ0h9LSR7TElOVVhfS0VSTkVMX1RZUEV9LWJ1aWxkIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNmJjMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjY0MmU5Yjk1Zjk3ZjhlMDBlZjgxOWJiZmIyZjI4MWMxMDc5YmZiYjEiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjc4MjEzM2Q4MTY2YWM3MWVmMWZmYWJhNThiN2NmODFlYzllNTMyYTEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNTRkNDU3NWQwZGYxODA1ZTEyN2M1ZmE1OTIwMWNkOTc4ODQ5ZmIzZiIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjU4OTA2ZjI3MzdjNjQ0ZTY3YTdjOTc1NGI3ZTM2NjMwMDA1YTAwMTEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjAzZjBjMDI5M2FiZmU1MjI2YzJmZGQyMjMyODQ3Njg1NGZhMDEyN2YiCi1TUkNSRVZfbWFjaGluZSA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tZXRhID89ICI5ZjljOWE2NmVmMzQ1MjM0MzU4NmFkZjE1MDEzNzk2N2U5NTVkNzFhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMS5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMS40MyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgppbmRleCA3ZmNjNzUzLi4xZmUzY2NhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIFNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCiBTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI4YmIxMzVlNzEwMzdjNDYxNzViYmNjN2FjZjM4NzMwOWIyZTE3MTMzIgogU1JDUkVWX21hY2hpbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWV0YSA/PSAiNDBlZTQ4YWMwOTljMDRmNjBkMmMxMzIwMzFkOTYyNWE0ZTBjNGM5ZSIKK1NSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMGI4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCkBAIC0wLDAgKzEsNDQgQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI2ZTVhOTlkYjNhNDk1ZTAyMzA0MWEzMGQ0MzI2MjA0Nzc5NWU2NDVhIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjQzZGM0N2Y5MDAwN2Q1NGM3MDg2Y2MwM2IyOGU5NDZlMzAxMzVmMWMiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNDAxNDYwNTU2NzdhNjk3MzBiMmMzNmRhMWM4YzFiNGU5YmFlN2JiMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI2OWYwYzk2ZDhlNDdiMGRjY2ZiMzc0ODA5ZDcyOWYwMDQyYzc3ODY4IgorU1JDUkVWX21hY2hpbmUgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWV0YSA/PSAiMTlkODE1ZDVhMzRiZmFhZDk1ZDg3Y2MwOTdjZWYxOGI1OTRkYWFjOCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIKaW5kZXggZDMwMGU2OS4uOTdjMTZkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgpAQCAtMTEsMjAgKzExLDIwIEBACiBLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI4NDBlMmMwMmRkZTk4ZWU5YzU4NGNhY2RkNWJiMDgxMmU5ZGNkMDE2IgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjI3YTU0N2ZlNzdiMDVhZTYzYzNiOTczYTAyOWMzOTMzZWY2MmMxNjQiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI3ZTMzM2MyMjNiNTY4NzA0Y2MzMzAzYjJlOTIyZmY4NWEyYThmN2VmIgotU1JDUkVWX21hY2hpbmUgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWV0YSA/PSAiODA0ZDJiMzE2NGVjMjVlZDUxOWZkNjk1ZGU5YWEwOTA4NDYwYzkyZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQwMGMwZjM5Yjk1NGNkOGZmZmRmNTNlNmVjOTc4NTJiNzNmZWE3YWYiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiZmIwM2E5NDcyMzY3YjZjMTc3NzI5YWM2MzEzMjZhYWZkNWQxN2M5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjI2YjhiYTE4NmE2ZDM5NzI4ZmMxNTEwYmQyMjY0MTEwYzc1ODQyZjUiCitTUkNSRVZfbWFjaGluZSA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgppbmRleCBkYmU0MGEzLi5hNWExNjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiCkBAIC0xMSwyMCArMTEsMjAgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjhjYWEzNWE3NDc1M2Q0NTE3ODcyMDkzM2YwM2Q4ZDUxNTBhOGZmMTciCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiZmMyYTNiOWY5MzI3NzlmZGYwNTM2NzVhNWE3M2U4Zjk5MTc1MDdhNSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImFlZTYzOTc4MDA1YzA0ZWE4NTMwOTk3NjRhY2FhMDgxMzBlNjU1NTQiCi1TUkNSRVZfbWFjaGluZSA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tZXRhID89ICI2YWNhZTZmNzIwMGFmMTdiM2MyYmU1ZWNhYjJjZmZkYzU5YTAyYjM1IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMzNjllYjdlMDdjODM5ZmE3M2E4YzFlODVhYmEzN2EwN2JmMTRjMSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJjYWI5ZTA1OTQ0Nzg3OGY1MzgzZjkxYTA1ZGIxMjgxM2Y2OWNiZmMxIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzJlNWVmODNiNjEyZDUwZjUwZmFmZWVkOTkzMGRiZWEzMDJmYmU4YyIKK1NSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC45LjQ5IgorTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdlYTVjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgotREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgotCi1MSUNFTlNFID0gIk1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAotIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMTc2ZTdmNjllMTI4MTEyZDVmMjlmZWZlYzM5YzZjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTZlZTQ2ZTU3NTBhYjU3YTI1ODY2M2U3MzkxNWQyOTAxYjdjZDRmYzUzYjA2ZWIzZjdhMGQ3YjEwMTJmYTU2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4MWRhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwY2VjMjc0NWFjMzE2NjQ5NzkxYzQzZjQxNmQ3MWVhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjQ5ZmVlNWJlYmE2NTc3MzFmNWQ2YTg0YzUyOTZjNjUxN2Y1NDRiZmJlNzU3MWJkMWZkN2FmMjM3MjYxMzdjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MDYzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBhYjA3NTc0ZWY5MGZhNTEwZjI5M2MzNzg5N2Q1NzcwNjZhODhmZTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIEx5bmNoIDxuYXRoYW5fbHluY2hAbWVudG9yLmNvbT4KK0RhdGU6IFR1ZSwgMjUgQXByIDIwMTcgMTY6MjY6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQlVJTERfUlVOVElNRV9CVUdfT04gdnMgZ2NjNworCitBdm9pZCB1c2luZyBMVFRuZydzIEJVSUxEX1JVTlRJTUVfQlVHX09OIG1hY3JvLCBhcyBpdCBhcHBlYXJzIHRvIHJ1bgoraW50byBhIHNpbWlsYXIgcHJvYmxlbSBhcyBMaW51eCBleHBlcmllbmNlZCB3aXRoIGlsb2cyLgorCitTZWU6CitodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0Lz9pZD00NzRjOTAxNTZjOGRjYzJmYTgxNWU2NzE2Y2M5Mzk0ZDc5MzBjYjljCitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03Mjc4NQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IE5hdGhhbiBMeW5jaCA8bmF0aGFuX2x5bmNoQG1lbnRvci5jb20+CistLS0KKyBsaWIvYWxpZ24uaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvYWxpZ24uaCBiL2xpYi9hbGlnbi5oCitpbmRleCA1YjkxYWU4NzQxMGIuLjVlMTM0Y2Q0ODVmZSAxMDA2NDQKKy0tLSBhL2xpYi9hbGlnbi5oCisrKysgYi9saWIvYWxpZ24uaAorQEAgLTQ4LDcgKzQ4LDcgQEAKKyAgKi8KKyAjZGVmaW5lIG9mZnNldF9hbGlnbihhbGlnbl9kcmlmdCwgYWxpZ25tZW50KQkJCQkgICAgICAgXAorIAkoewkJCQkJCQkJICAgICAgIFwKKy0JCUJVSUxEX1JVTlRJTUVfQlVHX09OKChhbGlnbm1lbnQpID09IDAJCQkgICAgICAgXAorKwkJQlVHX09OKChhbGlnbm1lbnQpID09IDAJCQkJCSAgICAgICBcCisgCQkJCSAgIHx8ICgoYWxpZ25tZW50KSAmICgoYWxpZ25tZW50KSAtIDEpKSk7ICAgICAgXAorIAkJKCgoYWxpZ25tZW50KSAtIChhbGlnbl9kcmlmdCkpICYgKChhbGlnbm1lbnQpIC0gMSkpOwkgICAgICAgXAorIAl9KQorQEAgLTYzLDcgKzYzLDcgQEAKKyAgKi8KKyAjZGVmaW5lIG9mZnNldF9hbGlnbl9mbG9vcihhbGlnbl9kcmlmdCwgYWxpZ25tZW50KQkJCSAgICAgICBcCisgCSh7CQkJCQkJCQkgICAgICAgXAorLQkJQlVJTERfUlVOVElNRV9CVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCSAgICAgICBcCisrCQlCVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCQkJICAgICAgIFwKKyAJCQkJICAgfHwgKChhbGlnbm1lbnQpICYgKChhbGlnbm1lbnQpIC0gMSkpKTsgICAgICBcCisgCQkoKChhbGlnbl9kcmlmdCkgLSAoYWxpZ25tZW50KSkgJiAoKGFsaWdubWVudCkgLSAxKSk7CSAgICAgICBcCisgCX0pCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaAppbmRleCA2YTkxZjMyLi5lNDExMjQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoCkBAIC0xMCw3ICsxMCw3IEBACiBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgYnVpbGQgZG8gbm90IGZhaWwgd2hlbiBDT05GSUdfVFJBQ0VQT0lOVFMgaXMgbm90CiBhdmFpbGFibGUsIGFsbG93aW5nIGl0IHRvIGJlIGtlcHQgYmVpbmcgcHVsbGVkIGJ5IGRlZmF1bHQuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CiAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmZmNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCi1ERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYyODQ0NjMzYTA4NzUzYmQ5NmFiMzIyYTZjN2Y5ZjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQiCi0KLWluaGVyaXQgbW9kdWxlCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtKS4qLWxpbnV4JwotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWExNmJjYTUyMjMzY2MyYmRmZjU3MmIxMTIwYTg4ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIwNzhmZTMyNTRjYTY1OTY5ZGI0YjcyZTU5MDQyY2Q3OTdkYmYyNzQwODQ4ZjhmODIzODQ4NzdhZTQ2MGQ1NCIKLQotZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCi0KLUVYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKLQlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKLX0KLQotcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKLSAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkOTc0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjUuYmIKQEAgLTAsMCArMSwzNCBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgorREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2Mjg0NDYzM2EwODc1M2JkOTZhYjMyMmE2YzdmOWY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIgorCitpbmhlcml0IG1vZHVsZQorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybSkuKi1saW51eCcKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImFmOTdhYWFmODYxMzNmZDc4M2JiOTkzN2RjM2I0ZDU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmNGU4MmNlYjFjM2MxODc1ZWMxZmU4OWZiYTA4Mjk0ZWQ3ZmVlYzIxNjEzMzlhNWE3MWEwNjZiMjdmYzNlMjIiCisKK2V4cG9ydCBJTlNUQUxMX01PRF9ESVI9Imtlcm5lbC9sdHRuZy1tb2R1bGVzIgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5FTERJUj0nJHtTVEFHSU5HX0tFUk5FTF9ESVJ9JyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBEZWxldGUgZW1wdHkgZGlyZWN0b3JpZXMgdG8gYXZvaWQgUUEgZmFpbHVyZXMgaWYgbm8gbW9kdWxlcyB3ZXJlIGJ1aWx0CisJZmluZCAke0R9LyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gLWRlcHRoIC10eXBlIGQgLWVtcHR5IC1leGVjIHJtZGlyIHt9IFw7Cit9CisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihkLmdldFZhcignRCcpLCBkLmdldFZhcignbm9uYXJjaF9iYXNlX2xpYmRpcicpWzE6XSwgJ21vZHVsZXMnKSk6CisgICAgICAgIGJiLndhcm4oIiVzOiBubyBtb2R1bGVzIHdlcmUgY3JlYXRlZDsgdGhpcyBtYXkgYmUgZHVlIHRvIENPTkZJR19UUkFDRVBPSU5UUyBub3QgYmVpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iICUgZC5nZXRWYXIoJ1BOJykpCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZjNhZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotU0VDVElPTiA9ICJkZXZlbCIKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBDb250cm9sIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IHRyYWNlIHRvb2xraXQgaXMgYSBzdWl0ZSBvZiB0b29scyBkZXNpZ25lZCBcCi10byBleHRyYWN0IHByb2dyYW0gZXhlY3V0aW9uIGRldGFpbHMgZnJvbSB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSBcCi1hbmQgaW50ZXJwcmV0IHRoZW0uIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWQ3ZmM0NDk2YWFjZjM3ZDkwZGY5MGI5MGIwY2FjMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKLQotREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBiYXNoIGdhd2sgJHtQTn0gYmFiZWx0cmFjZSBwcm9jcHMiCi0jIGJhYmVsc3RhdHMucGwgd2FudHMgZ2V0b3B0LWxvbmcKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyIKLQotUFlUSE9OX09QVElPTiA9ICJhbV9jdl9weXRob25fcHlleGVjZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgICBQWVRIT05fSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBcCi0iCi1QQUNLQUdFQ09ORklHID8/PSAibHR0bmctdXN0IgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbi1iaW5kaW5ncyAke1BZVEhPTl9PUFRJT059LCxweXRob24zIHN3aWctbmF0aXZlIgotUEFDS0FHRUNPTkZJR1tsdHRuZy11c3RdID0gIi0td2l0aC1sdHRuZy11c3QsIC0td2l0aG91dC1sdHRuZy11c3QsIGx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwZjQ3YWJmYTIxNGIxNjc1ODAzNTgzODg0Mjg3NzBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjNzI0NTZiY2VlZjk2MWZhZDFkMDg2MWYwNzQ3OGRiMTZiNzY1OWVmYTY5MDk5YmEzNjY0NWRhODljYTJjYzUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvKiAke2RhdGFkaXJ9L3htbC9sdHRuZyBcCi0gICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotCi0jIFNpbmNlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAke2xpYmRpcn0vbHR0bmcvbGliZXhlYyB3ZSBtYXRjaCAKLSMgdGhlIGxpYmV4ZWMgaW5zYW5lIHRlc3Qgc28gc2tpcCBpdC4KLSMgUHl0aG9uIG1vZHVsZSBuZWVkcyB0byBrZWVwIF9sdHRuZy5zbwotSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggOyBkbwotICAgICAgICBpbnN0YWxsIC1EICIke0J9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCi0gICAgZG9uZQotCi0gICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtRCAiJHtTfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgotICAgIGRvbmUKLQotICAgICMgUHJldmVudCAnbWFrZSBjaGVjaycgZnJvbSByZWN1cnNpbmcgaW50byBub24tdGVzdCBzdWJkaXJlY3Rvcmllcy4KLSAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSAuKiFTVUJESVJTID0gdGVzdHMhJyAiJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUiCi0KLSAgICAjIFdlIGRvbid0IG5lZWQgdGhlc2UKLSAgICBzZWQgLWkgLWUgJy9kaXN0X25vaW5zdF9TQ1JJUFRTID0gLywvXiQvZCcgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgotCi0gICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy91dGlscwotICAgIHNlZCAtaSAtZSAncyFhbV9fYXBwZW5kXzEgPSAuIHV0aWxzIWFtX19hcHBlbmRfMSA9IC4gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCi0KLSAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCi0gICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgotICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCi0gICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAotICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKLSAgICAgICAgdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAotICAgICAgICAgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgotICAgIGRvbmUKLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvcmVncmVzc2lvbi90b29scwotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IHRvb2xzICFTVUJESVJTID0gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZSIKLQotICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAotICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAotICAgICAgICAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKLSAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCi0gICAgICAgIHt9ICsKLQotICAgICMgVGhlc2Ugb2JqZWN0cyB0cmlnZ2VyIFtycGF0aHNdIFFBIGNoZWNrczsgdGhlIHRlc3QgaGFybmVzcwotICAgICMgc2tpcHMgdGhlIGFzc29jaWF0ZWQgdGVzdHMgaWYgdGhleSdyZSBtaXNzaW5nLCBzbyBkZWxldGUKLSAgICAjIHRoZW0uCi0gICAgb2Jqcz0iIgotICAgIG9ianM9IiRvYmpzIHJlZ3Jlc3Npb24vdXN0L3VzdC1kbC9saWJiYXIuc28iCi0gICAgb2Jqcz0iJG9ianMgcmVncmVzc2lvbi91c3QvdXN0LWRsL2xpYmZvby5zbyIKLSAgICBmb3Igb2JqIGluICRvYmpzIDsgZG8KLSAgICAgICAgcm0gLWYgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyR7b2JqfSIKLSAgICBkb25lCi0KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCi0KLSAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgotICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgOyBkbwotICAgICAgICBleGVkaXI9IiR7RH0ke1BURVNUX1BBVEh9L3NyYy9iaW4vJHtwcm9nfSIKLSAgICAgICAgaW5zdGFsbCAtZCAiJGV4ZWRpciIKLSAgICAgICAgY2FzZSAiJHByb2ciIGluCi0gICAgICAgICAgICBsdHRuZy1jb25zdW1lcmQpCi0gICAgICAgICAgICAgICAgbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJGV4ZWRpciIKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgICBsbiAtcyAiJHtiaW5kaXJ9LyRwcm9nIiAiJGV4ZWRpciIKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgZG9uZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkyYzIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTAsMCArMSwxMjIgQEAKK1NFQ1RJT04gPSAiZGV2ZWwiCitTVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgQ29udHJvbCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCB0cmFjZSB0b29sa2l0IGlzIGEgc3VpdGUgb2YgdG9vbHMgZGVzaWduZWQgXAordG8gZXh0cmFjdCBwcm9ncmFtIGV4ZWN1dGlvbiBkZXRhaWxzIGZyb20gdGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gXAorYW5kIGludGVycHJldCB0aGVtLiIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDFkN2ZjNDQ5NmFhY2YzN2Q5MGRmOTBiOTBiMGNhYzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MGYwZDcxNTAwZTZhNTdmZDI0ZDgyNWYzMzI0MmI5Y2EiCisKK0RFUEVORFMgPSAibGlidXJjdSBwb3B0IGxpYnhtbDIgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCBnYXdrICR7UE59IGJhYmVsdHJhY2UgcHJvY3BzIgorIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0tZW5hYmxlLWttb2QsIC0tZGlzYWJsZS1rbW9kLCBrbW9kIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gImx0dG5nLXVzdCIKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNTEyMjRlYjk5MWFlZTA3Zjg3MjFmZjE4NzdkMGI5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzgzOWViNmZjNmM2NTIxMjVmMDhhY2ZkOTM2OTcwMWMyNTE2ZWIwNWNjMjA4NDE2MGU3ZWZjN2EzZmI3MzFjIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpciBtYW5wYWdlcworCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHJhY2luZyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyogJHtkYXRhZGlyfS94bWwvbHR0bmcgXAorICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKKworIyBTaW5jZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGludG8gJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMgd2UgbWF0Y2ggCisjIHRoZSBsaWJleGVjIGluc2FuZSB0ZXN0IHNvIHNraXAgaXQuCisjIFB5dGhvbiBtb2R1bGUgbmVlZHMgdG8ga2VlcCBfbHR0bmcuc28KK0lOU0FORV9TS0lQXyR7UE59ID0gImxpYmV4ZWMgZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmV4ZWMiCisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGZvciBmIGluIE1ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3V0aWxzL3V0aWxzLnNoIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciA7IGRvCisgICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisKKyAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgorCisgICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCisgICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKKworICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKKyAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKyAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKyAgICBkb25lCisKKyAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKyAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisgICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorICAgICAgICB7fSArCisKKyAgICAjIFRoZXNlIG9iamVjdHMgdHJpZ2dlciBbcnBhdGhzXSBRQSBjaGVja3M7IHRoZSB0ZXN0IGhhcm5lc3MKKyAgICAjIHNraXBzIHRoZSBhc3NvY2lhdGVkIHRlc3RzIGlmIHRoZXkncmUgbWlzc2luZywgc28gZGVsZXRlCisgICAgIyB0aGVtLgorICAgIG9ianM9IiIKKyAgICBvYmpzPSIkb2JqcyByZWdyZXNzaW9uL3VzdC91c3QtZGwvbGliYmFyLnNvIgorICAgIG9ianM9IiRvYmpzIHJlZ3Jlc3Npb24vdXN0L3VzdC1kbC9saWJmb28uc28iCisgICAgZm9yIG9iaiBpbiAkb2JqcyA7IGRvCisgICAgICAgIHJtIC1mICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8ke29ian0iCisgICAgZG9uZQorCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICB0b3VjaCAtciAiJHtCfS9NYWtlZmlsZSIge30gKworCisgICAgIyBTdWJzdGl0dXRlIGxpbmtzIHRvIGluc3RhbGxlZCBiaW5hcmllcy4KKyAgICBmb3IgcHJvZyBpbiBsdHRuZyBsdHRuZy1yZWxheWQgbHR0bmctc2Vzc2lvbmQgbHR0bmctY29uc3VtZXJkIDsgZG8KKyAgICAgICAgZXhlZGlyPSIke0R9JHtQVEVTVF9QQVRIfS9zcmMvYmluLyR7cHJvZ30iCisgICAgICAgIGluc3RhbGwgLWQgIiRleGVkaXIiCisgICAgICAgIGNhc2UgIiRwcm9nIiBpbgorICAgICAgICAgICAgbHR0bmctY29uc3VtZXJkKQorICAgICAgICAgICAgICAgIGxuIC1zICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8kcHJvZyIgIiRleGVkaXIiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgbG4gLXMgIiR7YmluZGlyfS8kcHJvZyIgIiRleGVkaXIiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg4YjVlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCi1ERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcwotCi1ERVBFTkRTID0gImxpYnVyY3UgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59LWJpbiA9ICJweXRob24zLWNvcmUiCi0KLSMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFmdGVyIHJlbmFtZQotUlBST1ZJREVTXyR7UE59ID0gImx0dG5nMi11c3QiCi1SUkVQTEFDRVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJDT05GTElDVFNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLQotUEUgPSAiMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy11c3QvbHR0bmctdXN0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzdmMzM3OGJhMzdhMzY4MDE0MjBiY2U4N2I3MDJlOWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ1NDFhODYzZjQyZGZjNjg1Y2EwNTAyNDAyN2E0NDJjNzBkMDM1OTRjMTU0YTQzZTYyYmMxMDliMWVhNWRhZiIKLQotQ1ZFX1BST0RVQ1QgPSAidXN0IgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKLSAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9sdHRuZy1nZW4tdHAKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RhNGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4xLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIG1hbnBhZ2VzCisKK0RFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCitSUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgorCitQRSA9ICIyIgorCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YTU2MzZmYzNkOWFhMzcwZjY1YjI1YTgwMmE3OWU2ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODkxZDI2N2NkYmJiZDExY2YzNDc1MWY2NmMyMWM0YTdmZGMwZWVjM2MxYjUzYmUyYzQwZGNhMDczYjdkYWE0IgorCitDVkVfUFJPRFVDVCA9ICJ1c3QiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAorICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2x0dG5nLWdlbi10cAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IDk2ZWY0M2QuLjRiMDE2NTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKQEAgLTI3LDYgKzI3LDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIFwKICIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm9wcm9maWxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3Byb2ZpbGUvZmlsZXMvb3Byb2ZpbGUvIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLnBhdGNoIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggMWJhZDZmNC4uYjc5Yjk3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMjYsNyArMjYsNyBAQAogICAgIHZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIFwKICAgICAke01MUFJFRklYfWVsZnV0aWxzIFwKICAgICAke01MUFJFRklYfWJpbnV0aWxzIFwKLSAgICBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgeHogXAorICAgIGJpc29uIGZsZXggeHogXAogICAgIHhtbHRvLW5hdGl2ZSBcCiAgICAgYXNjaWlkb2MtbmF0aXZlIFwKICIKQEAgLTM1LDEwICszNSw5IEBACiAKIFBST1ZJREVTID0gInZpcnR1YWwvcGVyZiIKIAotaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaAoraW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaCBweXRob25uYXRpdmUKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFB5dGhvbiBiaW5kaW5ncwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfQogaW5oZXJpdCBweXRob24tZGlyCiBleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKIApAQCAtNDgsOCArNDcsNyBAQAogZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFBlcmwgYmluZGluZwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncGVybG5hdGl2ZScsICcnLCBkKX0KLWluaGVyaXQgY3Bhbi1iYXNlCitpbmhlcml0IHBlcmxuYXRpdmUgY3Bhbi1iYXNlCiAjIEVudiB2YXIgd2hpY2ggdGVsbHMgcGVybCBpZiBpdCBzaG91bGQgdXNlIGhvc3QgKG5vKSBvciB0YXJnZXQgKHllcykgc2V0dGluZ3MKIGV4cG9ydCBQRVJMQ09ORklHVEFSR0VUID0gIiR7QGlzX3RhcmdldChkKX0iCiBleHBvcnQgUEVSTF9JTkMgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9DT1JFIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCmluZGV4IDFmMmRmYjguLjRkN2EzZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIKQEAgLTE3LDExICsxNyw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCiAKLSMgd2UgbmVlZCB0byBleHBsaWNpdGx5IGxpbmsgd2l0aCBsaWJpbnRsIGluIHVDbGliYyBzeXN0ZW1zCi1FWFRSQV9MREZMQUdTID89ICIiCi1FWFRSQV9MREZMQUdTX2xpYmMtdWNsaWJjID0gIi1saW50bCIKLUxERkxBR1MgKz0gIiR7RVhUUkFfTERGTEFHU30iCi0KICMgd2UgZG8gbm90IHdhbnQgbGlibmN1cnNlc3cgaWYgd2UgY2FuCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICAjIGNvbmZpZ3VyZS5hYyBjaGVja3MgZm9yIGRlbHdpbigpIGluICJuY3Vyc2VzdyBuY3Vyc2VzIiBzbyBsZXQncyBkcm9wIGZpcnN0IG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjIyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MzEwNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTZkY2EzMjViMzAxNDQ0MGY0NTdhOTJkYjE4ZmZlMzQyYTM1ODg4ZGIzZjA3NTY2OTRhOTliOTY1Mjc5NjM2NyIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjk1MTQwNjVkYzc1MjEwNTI0MGU1NTY3YzEzNzA4YWY0IgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTI3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtcG9sa2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJiNDRhZTFkOGNkODk5NDE3Mjk0YTljNDUwOWQ3ODcwIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDU0ZWViZTJhZmI2ZmUzYzA2YWM4YzQ2YmMwNDVjNDJmNjc1ZDRmZDY0ZTZmMTZjYmM2MDJkNWM3Y2UyN2JlYyIKKworQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkLWF1eCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3MiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWd0aywtLWRpc2FibGUtZ3RrLGd0ayszIgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwtLWRpc2FibGUtcG9sa2l0LHBvbGtpdCBkYnVzIgorCitTT0xJQlMgPSAiLnNvIgorRklMRVNfU09MSUJTREVWID0gIiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLW5hdGl2ZV9naXQuYmIKaW5kZXggYzNkYTc3Yy4uMTljYzFjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC1uYXRpdmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAtbmF0aXZlX2dpdC5iYgpAQCAtMyw1ICszLDQgQEAKIAogaW5oZXJpdCBuYXRpdmUKIAotUk1fV09SS19FWENMVURFX0lURU1TICs9ICJyZWNpcGUtc3lzcm9vdC1uYXRpdmUiCiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjExNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDNlMTNhMDA2ZmUzZGZmOTQ4OTI2OTI3NDA5M2JmODY4NTMyMDM2ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDUgU2VwIDIwMTcgMTY6MDI6NTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RhcHJ1bi9zdGFwYnBmOiBkb24ndCBzdXBwb3J0IGluc3RhbGxpbmcgYSBub24tcm9vdAorCitTaW5jZSB3ZSBhcmUgaW4gYSBrbm93biBlbnZpcm9ubWVudCBhbmQgaW5zdGFsbGluZyBhcyByb290IGFuZAorZXhwZWN0IHRvIGJlIHJ1bm5pbmcgYXMgcm9vdCwgZG9uJ3QgY3JlYXRlIHRoZSBncm91cCBvciBjaG1vZAordGhlIGJpbmFyaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0VtYmVkZGVkXQorU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorLS0tCisgc3RhcGJwZi9NYWtlZmlsZS5hbSB8IDE0ICsrKysrKystLS0tLS0tCisgc3RhcHJ1bi9NYWtlZmlsZS5hbSB8IDEyICsrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zdGFwYnBmL01ha2VmaWxlLmFtIGIvc3RhcGJwZi9NYWtlZmlsZS5hbQoraW5kZXggNDIxYjA0NGVmLi5mN2RhZWIyYjIgMTAwNjQ0CistLS0gYS9zdGFwYnBmL01ha2VmaWxlLmFtCisrKysgYi9zdGFwYnBmL01ha2VmaWxlLmFtCitAQCAtMzksMTEgKzM5LDExIEBAIGdpdF92ZXJzaW9uLnN0YW1wIC4uL2dpdF92ZXJzaW9uLmg6CisgCisgIyBXaHkgdGhlICJpZCAtdSIgY29uZGl0aW9uPyAgVGhpcyB3YXksIGFuIHVucHJpdmlsZWdlZCB1c2VyIGNhbiBydW4KKyAjIG1ha2UgaW5zdGFsbCwgYW5kIGhhdmUgInN1ZG8gc3RhcCAuLi4uIiBvciAic3VkbyBzdGFwYnBmIC4uLi4iIHdvcmsgbGF0ZXIuCistaW5zdGFsbC1leGVjLWhvb2s6CistCWlmIFsgYGlkIC11YCAtZXEgMCBdOyB0aGVuIFwKKy0JCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorLQkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCBcCistCQkmJiBjaGdycCBzdGFwdXNyICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiIFwKKy0JCSYmIGNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiOyBcCistCWZpCisrI2luc3RhbGwtZXhlYy1ob29rOgorKyMJaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgXAorKyMJCSYmIGNoZ3JwIHN0YXB1c3IgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcGJwZiIgXAorKyMJCSYmIGNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiOyBcCisrIwlmaQorIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3RhcHJ1bi9NYWtlZmlsZS5hbSBiL3N0YXBydW4vTWFrZWZpbGUuYW0KK2luZGV4IDQwNzNhYTAxYy4uMjkyNWUzNGMzIDEwMDY0NAorLS0tIGEvc3RhcHJ1bi9NYWtlZmlsZS5hbQorKysrIGIvc3RhcHJ1bi9NYWtlZmlsZS5hbQorQEAgLTcyLDkgKzcyLDkgQEAgZ2l0X3ZlcnNpb24uc3RhbXAgLi4vZ2l0X3ZlcnNpb24uaDoKKyAKKyAjIFdoeSB0aGUgImlkIC11IiBjb25kaXRpb24/ICBUaGlzIHdheSwgYW4gdW5wcml2aWxlZ2VkIHVzZXIgY2FuIHJ1bgorICMgbWFrZSBpbnN0YWxsLCBhbmQgaGF2ZSAic3VkbyBzdGFwIC4uLi4iIG9yICJzdWRvIHN0YXBydW4gLi4uLiIgd29yayBsYXRlci4KKy1pbnN0YWxsLWV4ZWMtaG9vazoKKy0JaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorLQkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtZyAxNTYgLXIgc3RhcHVzciAyPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBzdGFwdXNyOyBcCistCQlnZXRlbnQgZ3JvdXAgc3RhcHVzciA+L2Rldi9udWxsICYmIGNoZ3JwIHN0YXB1c3IgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcHJ1biI7IFwKKy0JCWNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBydW4iOyBcCistCWZpCisrI2luc3RhbGwtZXhlYy1ob29rOgorKyMJaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgJiYgY2hncnAgc3RhcHVzciAiJChERVNURElSKSQoYmluZGlyKS9zdGFwcnVuIjsgXAorKyMJCWNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBydW4iOyBcCisrIwlmaQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgppbmRleCBiM2ZkOTczLi40NzViMjA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU2NyaXB0LWRpcmVjdGVkIGR5bmFtaWMgdHJhY2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMgdG9vbCBmb3IgTGludXgiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3N5c3RlbXRhcC8iCiAKIHJlcXVpcmUgc3lzdGVtdGFwX2dpdC5pbmMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCmluZGV4IGE2YWVkZDMuLjNkYzY4OGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsNiArMSw2IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1TUkNSRVYgPSAiYjhlYTM1MGRjMTNhZGI2MTkwZDkwNDRhNWI4MDExMGE0YzQ0MTI3MCIKK1NSQ1JFViA9ICI0NWQwZTdhMDlhMTVhMjEwNzhkMGViZjJkYjUxNzVlZDllODcwMTRlIgogUFYgPSAiMy4xIgogCiBTUkNfVVJJID0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9zeXN0ZW10YXAuZ2l0IFwKQEAgLTEyLDcgKzEyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxldC1jb25maWd1cmUtd3JpdGUtYS1weXRob24tbG9jYXRpb24taW50by10aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkcnVuLXJlbW92ZS1xdW90ZXMtYXJvdW5kLUktaW5jbHVkZS1saW5lLnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaCBcCisgICAgICAgICAgICIKIAogIyBzeXN0ZW10YXAgZG9lc24ndCBzdXBwb3J0IG1pcHMKIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NCkuKi1saW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQva2VybmVsc2hhcmtfZ2l0LmJiCmluZGV4IDU2MzE4MmMuLjlhNWU4MDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYgpAQCAtMTUsNyArMTUsNyBAQAogRVhUUkFfT0VNQUtFID0gIlwKICAgICAncHJlZml4PSR7cHJlZml4fScgXAogICAgICdiaW5kaXJfcmVsYXRpdmU9JHtAb2UucGF0aC5yZWxhdGl2ZShwcmVmaXgsIGJpbmRpcil9JyBcCi0gICAgJ2xpYmRpcj0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgbGliZGlyKX0nIFwKKyAgICAnbGliZGlyPSR7bGliZGlyfScgXAogICAgIE5PX1BZVEhPTj0xIFwKICAgICBndWkgXAogIgpAQCAtMjgsNSArMjgsNiBAQAogICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbF9ndWkKICAgICBybSAke0R9JHtiaW5kaXJ9L3RyYWNlLWNtZAogICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3RyYWNlLWNtZAorICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC90cmFjZS1jbWQuYmFzaAogICAgIHJtZGlyICR7RH0ke2xpYmRpcn0KIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKaW5kZXggM2FkMDZmYS4uMDAyZWU2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKQEAgLTEsNSArMSw1IEBACi1TUkNSRVYgPSAiOWJlNWQ3NDgwNTgzMGEyOTE2MTVmMmYzNGEyN2M5MDNmNmEzN2IxZSIKLVBWID0gIjIuNiIKK1NSQ1JFViA9ICIwMjE3MTBlMTA3M2ZlMjAzMzQxYjQyN2NkMWE0YmFjNTc3ZWM4OTljIgorUFYgPSAiMi42LjEiCiAKIGluaGVyaXQgcGtnY29uZmlnCiAKQEAgLTcsNiArNyw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Jvc3RlZHQvdHJhY2UtY21kLmdpdDticmFuY2g9dHJhY2UtY21kLXN0YWJsZS12Mi42IFwKICAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NjMwODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDk0ODhmOTJjMWQwYzc5MzFjM2UxNzk1MGQxZjllZWEyYWViM2UyYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTU6NTY6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsaW1pdHMuaCBzbyB0aGF0IFBBVEhfTUFYIGlzIGRlZmluZWQgKGFuIGlzc3VlIG9uCisgbXVzbCkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0cmFjZS1saXN0ZW4uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdHJhY2UtbGlzdGVuLmMgYi90cmFjZS1saXN0ZW4uYworaW5kZXggMTdmZjlkOC4uODM4ZDZiYyAxMDA2NDQKKy0tLSBhL3RyYWNlLWxpc3Rlbi5jCisrKysgYi90cmFjZS1saXN0ZW4uYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ0cmFjZS1sb2NhbC5oIgorICNpbmNsdWRlICJ0cmFjZS1tc2cuaCIKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKaW5kZXggZGQ5YThhMC4uMjdjN2MxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKQEAgLTEsMTEgKzEsMTIgQEAKIFNVTU1BUlkgPSAiVXNlciBpbnRlcmZhY2UgdG8gRnRyYWNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5rZXJuZWwub3JnLyIKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKIAogcmVxdWlyZSB0cmFjZS1jbWQuaW5jCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyYWNlLWNtZC5jO2JlZ2lubGluZT02O2VuZGxpbmU9ODttZDU9MmMyMmM5NjVhNjQ5ZGRkNzk3M2Q3OTEzYzU2MzRhNWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1lZGIxOTVmZTUzOGU0NTUyYzFmNmNhMGZkN2JmNGYwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZS1pbnB1dC5jO2JlZ2lubGluZT01O2VuZGxpbmU9ODttZDU9M2VjODJmNDNiYmUwY2ZiNTk1MWZmNDE0ZWY0ZDQ0ZDAgXAogIgogCkBAIC0xNyw3ICsxOCw3IEBACiAgICAgJ2ltZ19pbnN0YWxsPSR7ZGF0YWRpcn0va2VybmVsc2hhcmsvaHRtbC9pbWFnZXMnIFwKICAgICBcCiAgICAgJ2JpbmRpcl9yZWxhdGl2ZT0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgYmluZGlyKX0nIFwKLSAgICAnbGliZGlyPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBsaWJkaXIpfScgXAorICAgICdsaWJkaXI9JHtsaWJkaXJ9JyBcCiAgICAgXAogICAgIE5PX1BZVEhPTj0xIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9saWJwbmcvbGlicG5nMTJfMS4yLjU3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L2xpYnBuZy9saWJwbmcxMl8xLjIuNTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzRmNWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L2xpYnBuZy9saWJwbmcxMl8xLjIuNTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5N2I4YTkxOTk0YTNlMjdhZTZhYTc5YmYwMjY3N2Q5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2JlZ2lubGluZT0xOTtlbmRsaW5lPTEwOTttZDU9MTY2NDA2Mzk3NzE4OTI1YjY2MGYwMDMzZjc1NThlZjciCi1ERVBFTkRTID0gInpsaWIiCi0KLVBOID0gImxpYnBuZzEyIgotUyA9ICIke1dPUktESVJ9L2xpYnBuZy0ke1BWfSIKLQotU1JDX1VSSSA9ICIke0dFTlRPT19NSVJST1J9L2xpYnBuZy0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDcwNTJlNWU4YWY5N2I4MmIxN2I2NGZiMWIzNjc3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjQ2MjBlMTFmYTI4M2ZlZGFmYjQ3NDQyN2M4ZTk2YmYxNDk1MTFhMTgwNGJkYzQ3MzUwOTYzYWU1Y2Y1NGQ4IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJwbmcvZmlsZXMvbGlicG5nMTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYnBuZzEyLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLUJJTkNPTkZJR19HTE9CID0gIiR7UE59LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFRoZSBmb2xsb3cgbGluayBmaWxlcyBsaW5rIHRvIGNvcnJlc3BvbmRpbmcgcG5nMTIqLmggYW5kIGxpYnBuZzEyKiBmaWxlcwotCSMgVGhleSBjb25mbGljdCB3aXRoIGhpZ2hlciB2ZXJpc29uLCBzbyBkcm9wIHRoZW0KLQlybSAke0R9LyR7aW5jbHVkZWRpcn0vcG5nLmgKLQlybSAke0R9LyR7aW5jbHVkZWRpcn0vcG5nY29uZi5oCi0KLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcubGEKLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcuc28KLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcuYSB8fCB0cnVlCi0Jcm0gJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnL2xpYnBuZy5wYwotCi0Jcm0gJHtEfS8ke2JpbmRpcn0vbGlicG5nLWNvbmZpZwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliY2xhc3MtaXNhLXBlcmxfMC4zNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmNsYXNzLWlzYS1wZXJsXzAuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Mzg0MWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliY2xhc3MtaXNhLXBlcmxfMC4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHJlcG9ydGluZyB0aGUgc2VhcmNoIHBhdGggZm9yIGEgY2xhc3MncyBJU0EgdHJlZSIKLURFU0NSSVBUSU9OID0gIlN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyAobGlrZSBGb29kOjpGaXNoOjpGaXNoc3RpY2spIHRoYXQgaXMgZGVyaXZlZCwgXAotdmlhIGl0cyBASVNBLCBmcm9tIG9uZSBvciBtb3JlIHN1cGVyY2xhc3NlcyAoYXMgRm9vZDo6RmlzaDo6RmlzaHN0aWNrIGlzIGZyb20gRm9vZDo6RmlzaCxcCi1MaWZlOjpGdW5ndXMsIGFuZCBDaGVtaWNhbHMpLCBhbmQgc29tZSBvZiB0aG9zZSBzdXBlcmNsYXNzZXMgbWF5IHRoZW1zZWx2ZXMgZWFjaCBiZVwKLWRlcml2ZWQsIHZpYSBpdHMgQElTQSwgZnJvbSBvbmUgb3IgbW9yZSBzdXBlcmNsYXNzZXMgKGFzIGFib3ZlKS5cCi1cCi1XaGVuLCB0aGVuLCB5b3UgY2FsbCBhIG1ldGhvZCBpbiB0aGF0IGNsYXNzICgkZmlzaHN0aWNrLT5jYWxvcmllcyksIFBlcmwgZmlyc3Qgc2VhcmNoZXNcCi10aGVyZSBmb3IgdGhhdCBtZXRob2QsIGJ1dCBpZiBpdCdzIG5vdCB0aGVyZSwgaXQgZ29lcyBzZWFyY2hpbmcgaW4gaXRzIHN1cGVyY2xhc3NlcywgYW5kXAotc28gb24sIGluIGEgZGVwdGgtZmlyc3QgKG9yIG1heWJlICJoZWlnaHQtZmlyc3QiIGlzIHRoZSB3b3JkKSBzZWFyY2guIEluIHRoZSBhYm92ZSBleGFtcGxlLFwKLWl0J2QgZmlyc3QgbG9vayBpbiBGb29kOjpGaXNoLCB0aGVuIEZvb2QsIHRoZW4gTWF0dGVyLCB0aGVuIExpZmU6OkZ1bmd1cywgdGhlbiBMaWZlLCB0aGVuXAotQ2hlbWljYWxzLlwKLVwKLVRoaXMgbGlicmFyeSwgQ2xhc3M6OklTQSwgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHRoYXQgbGlzdCAtLSB0aGUgbGlzdFwKLShpbiBvcmRlcikgb2YgbmFtZXMgb2YgY2xhc3NlcyBQZXJsIHdvdWxkIHNlYXJjaCB0byBmaW5kIGEgbWV0aG9kLCB3aXRoIG5vIGR1cGxpY2F0ZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvQ2xhc3MtSVNBLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTA3O2VuZGxpbmU9MTExO21kNT02YTVjNjg0MmE2M2NmZTRkYWIxZjY2ZTIzNTBlNGQyNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NNL1NNVUVMTEVSL0NsYXNzLUlTQS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYTJhZDIwM2M4ZGM4N2Q2YzlkZTE2MjE1ZDAwYWY0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODE2ZjM0ZTlhMzhlODQ5YTEwZGY3NTYwMzBkY2NmOWZlMDYxYTE5NmMxMWFjM2ZhYWZkNzExM2M5MjliOTY0IgotCi1TID0gIiR7V09SS0RJUn0vQ2xhc3MtSVNBLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJkdW1wdmFsdWUtcGVybF8xLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZHVtcHZhbHVlLXBlcmxfMS4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3NDYxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJkdW1wdmFsdWUtcGVybF8xLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcHJvdmlkZXMgc2NyZWVuIGR1bXAgb2YgUGVybCBkYXRhIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9EdW1wdmFsdWUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjczNmJlYzVhZGExZmM1ZTM5YjJhOGU3ZTA2YmJjYmIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9EdW1wdmFsdWUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmVkZTlmNjkzZDRhOWM0NTU1NTQxY2IxYTFjYzIwMDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVhNzQ2MDZiNTQ1Zjc2OWE3ODdlYzJhZTIyOTU0OWEyYWQwYThlM2NkNGIxNGVmZjJjZTM4NDE4MzZiM2JkYiIKLQotUyA9ICIke1dPUktESVJ9L0R1bXB2YWx1ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZW52LXBlcmxfMS4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmVudi1wZXJsXzEuMDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkOGUxMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZW52LXBlcmxfMS4wNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdGhhdCBpbXBvcnRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzY2FsYXJzIG9yIGFycmF5cyIKLURFU0NSSVBUSU9OID0gIlBlcmwgbWFpbnRhaW5zIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBhIHNwZWNpYWwgaGFzaCBuYW1lZCAlRU5WLiBcCi1Gb3Igd2hlbiB0aGlzIGFjY2VzcyBtZXRob2QgaXMgaW5jb252ZW5pZW50LCB0aGUgUGVybCBtb2R1bGUgRW52IGFsbG93cyBlbnZpcm9ubWVudCBcCi12YXJpYWJsZXMgdG8gYmUgdHJlYXRlZCBhcyBzY2FsYXIgb3IgYXJyYXkgdmFyaWFibGVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZmxvcmEvRW52LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YzFjYmYxOGRiNTZiMzM0MGQ5MWNiOTQ3OTQzYmQzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0YvRkwvRkxPUkEvRW52LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkYmE1YzA2OTBlNjY5NzJjOTZmZWUxMTJjZjVmMjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NGEzZDQxMmRmMjQ2YWZkYzMxYTIxOTljYmQ4YWU5MTUxNjdhM2Y0Njg0ZjdiNzAxNGNlMTIwMDI1MWViYjAiCi0KLVMgPSAiJHtXT1JLRElSfS9FbnYtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmZpbGUtY2hlY2t0cmVlLXBlcmxfNC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmZpbGUtY2hlY2t0cmVlLXBlcmxfNC40MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UzN2M3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJmaWxlLWNoZWNrdHJlZS1wZXJsXzQuNDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRoYXQgcnVuIG1hbnkgZmlsZXRlc3QgY2hlY2tzIG9uIGEgdHJlZSIKLURFU0NSSVBUSU9OID0gIlRoZSB2YWxpZGF0ZSgpIHJvdXRpbmUgdGFrZXMgYSBzaW5nbGUgbXVsdGlsaW5lIHN0cmluZyBjb25zaXN0aW5nIFwKLW9mIGRpcmVjdGl2ZXMsIGVhY2ggY29udGFpbmluZyBhIGZpbGVuYW1lIHBsdXMgYSBmaWxlIHRlc3QgdG8gdHJ5IG9uIGl0LiAoVGhlIGZpbGUgXAotdGVzdCBtYXkgYWxzbyBiZSBhICJjZCIsIGNhdXNpbmcgc3Vic2VxdWVudCByZWxhdGl2ZSBmaWxlbmFtZXMgdG8gYmUgaW50ZXJwcmV0ZWQgXAotcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuKSBBZnRlciB0aGUgZmlsZSB0ZXN0IHlvdSBtYXkgcHV0IHx8IGRpZSB0byBtYWtlIGl0IGEgXAotZmF0YWwgZXJyb3IgaWYgdGhlIGZpbGUgdGVzdCBmYWlscy4gVGhlIGRlZmF1bHQgaXMgfHwgd2Fybi4gVGhlIGZpbGUgdGVzdCBtYXkgXAotb3B0aW9uYWxseSBoYXZlIGEgIiEnIHByZXBlbmRlZCB0byB0ZXN0IGZvciB0aGUgb3Bwb3NpdGUgY29uZGl0aW9uLiBJZiB5b3UgZG8gYSBcCi1jZCBhbmQgdGhlbiBsaXN0IHNvbWUgcmVsYXRpdmUgZmlsZW5hbWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5kZW50IHRoZW0gc2xpZ2h0bHkgZm9yIFwKLXJlYWRhYmlsaXR5LiBJZiB5b3Ugc3VwcGx5IHlvdXIgb3duIGRpZSgpIG9yIHdhcm4oKSBtZXNzYWdlLCB5b3UgY2FuIHVzZSAkZmlsZSB0byBcCi1pbnRlcnBvbGF0ZSB0aGUgZmlsZW5hbWUuIFwKLVwKLUZpbGV0ZXN0cyBtYXkgYmUgYnVuY2hlZDogIi1yd3giIHRlc3RzIGZvciBhbGwgb2YgLXIsIC13LCBhbmQgLXguIE9ubHkgdGhlIGZpcnN0IGZhaWxlZCBcCi10ZXN0IG9mIHRoZSBidW5jaCB3aWxsIHByb2R1Y2UgYSB3YXJuaW5nLiBcCi1cCi1UaGUgcm91dGluZSByZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgaXNzdWVkLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZmxvcmEvRmlsZS1DaGVja1RyZWUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzZmY2FjYzVkZjgwZTAzNzA2MDMwMGE3ZjRiOTNiZjkiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9GaWxlLUNoZWNrVHJlZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTljODJhYTdlNWI3Zjc1MmI0ZGExNGE2YzhhZDc0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzk5YWI2YmI1YWY0NjY0ODMyNzE1OTc0YjVhMTllMzI4MDcxZGM5MjAyYWI3MmU1ZDVhNTk0ZWJkNDZhNzI5IgotCi1TID0gIiR7V09SS0RJUn0vRmlsZS1DaGVja1RyZWUtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmkxOG4tY29sbGF0ZS1wZXJsXzEuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJpMThuLWNvbGxhdGUtcGVybF8xLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTgzOWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmkxOG4tY29sbGF0ZS1wZXJsXzEuMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRoYXQgY29tcGFyZSA4LWJpdCBzY2FsYXIgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgeW91IHdpdGggb2JqZWN0cyB0aGF0IHdpbGwgY29sbGF0ZSBhY2NvcmRpbmcgdG8gXAoteW91ciBuYXRpb25hbCBjaGFyYWN0ZXIgc2V0LCBwcm92aWRlZCB0aGF0IHRoZSBQT1NJWCBzZXRsb2NhbGUoKSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgXAotb24geW91ciBzeXN0ZW0uIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9JMThOLUNvbGxhdGUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmY2ZDYyOTE0NGE2ZWMxZWE4YzMwMGY3NTc2MDE4NGYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9JMThOLUNvbGxhdGUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzJkZGI2ZDFjNTljZmRmMzFhYTNiMDQ3OTliODZhZjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTE3NDUwNmJjOTAzZWRhODk2OTAzOTRlM2Y0NTU1OGFiN2UwMTMxMTQyMjc4OTZkODU2OWQ2MTY0NjQ4ZmUzNyIKLQotUyA9ICIke1dPUktESVJ9L0kxOE4tQ29sbGF0ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGlicG9kLXBsYWluZXItcGVybF8xLjA0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGlicG9kLXBsYWluZXItcGVybF8xLjA0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2U1OGYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYnBvZC1wbGFpbmVyLXBlcmxfMS4wNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBleHRlbnNpb24gZm9yIGNvbnZlcnRpbmcgUG9kIHRvIG9sZC1zdHlsZSBQb2QiCi1ERVNDUklQVElPTiA9ICJQb2Q6OlBsYWluZXIgdXNlcyBQb2Q6OlBhcnNlciB3aGljaCB0YWtlcyBQb2Qgd2l0aCB0aGUgKG5ldykgJ0M8PCAuLiA+PicgXAotY29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgb2xkKGVyKSBzdHlsZSB3aXRoIGp1c3QgJ0M8Pic7ICc8JyBhbmQgJz4nIGFyZSByZXBsYWNlZCBieSBcCi0nRTxsdD4nIGFuZCAnRTxndD4nLiBcCi1cCi1UaGlzIGNhbiBiZSB1c2VkIHRvIHByZS1wcm9jZXNzIFBvZCBiZWZvcmUgdXNpbmcgdG9vbHMgd2hpY2ggZG8gbm90IHJlY29nbmlzZSB0aGUgbmV3IHN0eWxlIFBvZHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvUG9kLVBsYWluZXIvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNzttZDU9MjI3Y2Y4Mzk3MGZjNjEyNjQ4NDU4MjVkOWQyYmY2ZjgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUi9STS9STUJBUktFUi9Qb2QtUGxhaW5lci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTAyZWFjZDFhNDA4OTRiOWRmZWE1NWZjMmNkNWU3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmJmYmY3ZDFkNDg3MWU1YTgzYmFiMjEzN2UyMmQwODkwNzgyMDY4MTUxOTBlYjFkNWMxMjYwYTM0OTk0NTZmIgotCi1TID0gIiR7V09SS0RJUn0vUG9kLVBsYWluZXItJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkYWY0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1wYXJzZXItbmVlZHMtbGltaXRzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDAwNWFjOWQyZmEwMDA5MTJjOGZiODI1NzAyMGEwNDcxYjFjNjE3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHdXN0YXZvIFphY2FyaWFzIDxndXN0YXZvQHphY2FyaWFzLmNvbS5hcj4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTk6NDY6MzQgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gdWNtOiBwYXJzZXIgbmVlZHMgbGltaXRzLmgKLQotSXQncyB1c2luZyBQQVRIX01BWCB3aGljaCBpcyBkZWZpbmVkIHRoZXJlLCBvdGhlcndpc2UgdGhlIGJ1aWxkIGZhaWxzIG9uCi1tdXNsIGxpYmMuCi0KLVNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gWmFjYXJpYXMgPGd1c3Rhdm9AemFjYXJpYXMuY29tLmFyPgotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAxLjEuNF0KLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gc3JjL3VjbS9wYXJzZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VjbS9wYXJzZXIuYyBiL3NyYy91Y20vcGFyc2VyLmMKLWluZGV4IGM5ODM3M2E5Li5mNTIwYWJjNSAxMDA2NDQKLS0tLSBhL3NyYy91Y20vcGFyc2VyLmMKLSsrKyBiL3NyYy91Y20vcGFyc2VyLmMKLUBAIC0zMiw2ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgInVjbV9sb2NhbC5oIgotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gLyoqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWluaW5nIHRoZSBVQ00gZGlyZWN0b3J5ICovCi0gI2RlZmluZSBBTFNBX0NPTkZJR19VQ01fVkFSICJBTFNBX0NPTkZJR19VQ00iCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTFhMDM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0xMWZmODlhOGE3YTRhNjkwYTVjNzhlZmZlODE1OTU0NSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVjbS1wYXJzZXItbmVlZHMtbGltaXRzLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImVlZmU1OTkyNTY3YmEwMGQ2MTEwYTU0MDY1N2FhZjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxMjgyNTAyMTg0YzU5MmMxYTAwOGUyNTZjMjJlZDBiYTU3MjhjYTY1ZTA1MjczY2ViNDgwYzcwZjUxNTk2OWMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1yZXF1aXJlIGFsc2EtZnB1LmluYwotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLXdpdGgtdmVyc2lvbmVkPW5vICIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKLQotIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQotIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCi1SREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZGVhZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjI5ZmEzZTY5MTIyZDNjZjNlOGYwZTAxYTBjYjFkMTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxYmI4NzBjMTRkMWM3YzI2OTIxMzI4NWVlZWQ4NzRmYTNkMjgxMTIwNzdkYjA2MWEzYWY4MDEwZDA4ODViNzYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCityZXF1aXJlIGFsc2EtZnB1LmluYworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgbGliYXNvdW5kIGFsc2EtY29uZiBhbHNhLWRvYyIKK0ZJTEVTX2xpYmFzb3VuZCA9ICIke2xpYmRpcn0vbGliYXNvdW5kLnNvLioiCitGSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgorCitSREVQRU5EU19saWJhc291bmQgPSAiYWxzYS1jb25mIgorCisjIGFsc2EtbGliIGdldHMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbHNhLWxpYi1kZXYgZGVwZW5kZW5jaWVzLCBidXQgdGhlCisjIGFsc2EtbGliIHBhY2thZ2UgZG9lc24ndCBleGlzdC4gbGliYXNvdW5kIGlzIHRoZSByZWFsIGxpYnJhcnkgcGFja2FnZS4KK1JERVBFTkRTXyR7UE59LWRldiA9ICJsaWJhc291bmQiCisKKyMgdXBncmFkZSBwYXRoCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorCitSUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjY4NmEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLSMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCi0jCi0jIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCi0jIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KLSMKLSMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50Ci0jIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKLSMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAotICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCi0iCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2OWY5ZjNlMmRlM2M5N2ZjNzFkNDk2ZTkxZTI3MWZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWE0ZDFlMDgyYzM2NTI4YTg5NmEyNTgxZTVlYjYyZDRkYzI2ODMyMzhlMzUzMDUwZDBkNjI0ZTY1ZjkwMWYxIgotCi1ERVBFTkRTICs9ICJhbHNhLWxpYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgICAgIHNhbXBsZXJhdGUgXAotICAgICAgICBzcGVleGRzcCBcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KLSMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKLSMKLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KLSMKLSMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCi0jIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAotIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCi0jIHRoZSBzeW1saW5rcykuCi0jCi0jIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCi0jIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCi0jIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgotCi0jIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQotIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgotIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKLSMgUHVsc2VBdWRpbyBwbHVnaW4uCi1GSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Y3OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCkBAIC0wLDAgKzEsMTAzIEBACitTVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKKyMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCisjCisjIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCisjIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KKyMKKyMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50CisjIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKKyMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAorICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAorICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCisiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZTUxMTMwYTc0NDRiNzliMmRkM2MyNWUyODQyMDc1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzBkMWMzYmRhZWIwNThmMmEwMzYwN2EzM2I5ZTE2ZWU1MzY5YmZkMzBhOTZiYzA5YmQyYzY5YjRkZGQxYThhIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgorUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgorCisjIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KKyMgYWxsIGJ1aWx0IHBsdWdpbnMuCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKKworCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCisJZmkKK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQorICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCisgICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQorfQorCisjIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KKyMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKKyMKKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KKyMKKyMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCisjIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAorIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCisjIHRoZSBzeW1saW5rcykuCisjCisjIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCisjIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCisjIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgorCisjIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQorIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgorIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKKyMgUHVsc2VBdWRpbyBwbHVnaW4uCitGSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisiCisKK1JERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzc0YTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgotCi0jIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KLSMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgotIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKLSMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3Ci0jIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgotUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgotCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJiZjk0ZDNlMzQxMGRjYzc0YmIwZGFlMTBkNDZhOTc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyNzIxN2E1NGVlYTBmOWE0OTcwMGEyZjIzOWEyZDRmNTM4NGFhMDk0ZDY4ZGYwNGE4ZWI4MDEzMmViNjE2N2MiCi0KLSMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKLSMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKLSMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KLSMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5Ci1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCi0KLSMgbGF6eSBoYWNrLiBuZWVkcyBwcm9wZXIgZml4aW5nIGluIGdldHRleHQubTQsIHNlZQotIyBodHRwOi8vYnVncy5vcGVuZW1iZWRkZWQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4Ci0jIHBsZWFzZSBjbG9zZSBidWcgYW5kIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBwcm9wZXJseSBmaXhlZAotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLW5scyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKLQotIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscwotIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgotCi1BTFNBX1VUSUxTX1BLR1MgPSAiXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAotICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgotRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQiCi1GSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCi1GSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKLUZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgotRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKLUZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kICovKi91ZGV2L3J1bGVzLmQgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgotRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20iCi0KLVNVTU1BUllfYWxzYS11dGlscy1hbHNhYmF0ICAgICAgPSAiQ29tbWFuZC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlciIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdHBsZyAgICAgPSAiQ29udmVydHMgdG9wb2xvZ3kgdGV4dCBmaWxlcyBpbnRvIGJpbmFyeSBmb3JtYXQgZm9yIGtlcm5lbCIKLVNVTU1BUllfYWxzYS11dGlscy1hcGxheSAgICAgICAgPSAiUGxheSAoYW5kIHJlY29yZCkgc291bmQgZmlsZXMgdXNpbmcgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hbWl4ZXIgICAgICAgPSAiQ29tbWFuZC1saW5lIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FtaXhlciAgICA9ICJuY3Vyc2VzLWJhc2VkIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ICA9ICJBTFNBIHN1cnJvdW5kIHNwZWFrZXIgdGVzdCB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLW1pZGkgICAgICAgICA9ICJNaXNjZWxsYW5lb3VzIE1JREkgdXRpbGl0aWVzIGZvciBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFjb25uZWN0ICAgICA9ICJBTFNBIHNlcXVlbmNlciBjb25uZWN0aW9uIG1hbmFnZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgID0gIk5ldHdvcmsgY2xpZW50L3NlcnZlciBmb3IgQUxTQSBzZXF1ZW5jZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgID0gIkFMU0EgdXRpbGl0eSBmb3Igc2V0dGluZy9zaG93aW5nIElFQzk1OCAoUy9QRElGKSBzdGF0dXMgYml0cyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhY3RsICAgICAgPSAiU2F2ZXMvcmVzdG9yZXMgQUxTQS1zZXR0aW5ncyBpbiAvZXRjL2Fzb3VuZC5zdGF0ZSIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxZHVtcCAgICAgPSAiU2hvd3MgdGhlIGV2ZW50cyByZWNlaXZlZCBhdCBhbiBBTFNBIHNlcXVlbmNlciBwb3J0IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2Fsb29wICAgICA9ICJBTFNBIFBDTSBsb29wYmFjayB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F1Y20gICAgICA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIiCi0KLVJSRUNPTU1FTkRTX2Fsc2EtdXRpbHMtYWxzYWN0bCA9ICJhbHNhLXN0YXRlcyIKLQotQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCi0JIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKLQlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VkZXYnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFRoaXMgaXMgd2hlcmUgYWxzYS11dGlscyB3aWxsIGluc3RhbGwgaXRzIHJ1bGVzIGlmIHdlIGRvbid0IHRlbGwgaXQgYW55dGhpbmcgZWxzZS4KLQkJcm0gLXJmICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYKLQkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhmNGI4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIKQEAgLTAsMCArMSwxMDkgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgorREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgorCitQQUNLQUdFQ09ORklHID8/PSAidWRldiIKKworIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCisjIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKKyMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCisjIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dworIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KK1BBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKKworUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMWUzOTM0Y2E1YmQyMmE4MGMyNzI4OWQxYjBhZGNkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzgzMTA0NGRlOTJjNWJmMzNiZjMzNjVhM2YzNmU0OTM5N2Y0MTkxZTkzNGRmNDYwYWUxY2ExNTEzOGM5ZDlkIgorCisjIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCisjIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCisjIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCisjIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcworCisjIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCisjIGlwayBkZXBlbmRzIG9uIHRoZW0uCisKK0FMU0FfVVRJTFNfUEtHUyA9ICJcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCisgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCitSREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgorRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCitGSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgorRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCitGSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgorRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgorRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCitGSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgorRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKKworU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKK1NVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKKworUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgorCitBTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KKwkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgorCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgorCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmODIyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGYzNGM1NjcwNDViZWE1YTdkZWQ5YmNmYThlNzg1Y2ZkMjRjYzdkZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTaGl2cmFqIFBhdGlsIDxzaGl2cmFqLnBhdGlsQGltZ3RlYy5jb20+CitEYXRlOiBUdWUsIDQgQXByIDIwMTcgMTg6NTY6MDEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQgZml4IGZvciBtaXBzCisKK1NpZ25lZC1vZmYtYnk6IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJvbmFsZCBTLiBCdWx0amUgPHJzYnVsdGplQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jIHwgMyArKy0KKyBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKK2luZGV4IDMzMWNmYWMxMTUuLmU5ODc2OThkNjYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKKysrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYworQEAgLTE4LDcgKzE4LDggQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKyAjaW5jbHVkZSAibGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21pcHMuaCIKKyAKKyAjaWYgSEFWRV9NU0EKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKK2luZGV4IDZhM2IyODE1ZmQuLjk2M2M2NGM4NjEgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKKysrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworQEAgLTE4LDcgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKKyAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCisgI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKKyAKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiYWExOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMTI0ZWIyMDJlNzA2Nzg1Mzk1NDRmNjI2OGVmYzk4MTMxZjE5ZmE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQorID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9ybWRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AuaXZyCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU0CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L3JtZGVjLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcm1kZWMuYyBiL2xpYmF2Zm9ybWF0L3JtZGVjLmMKK2luZGV4IDE3OGVhZWEuLmQ2ZDdkOWMgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9ybWRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9ybWRlYy5jCitAQCAtMTIyMyw4ICsxMjIzLDExIEBAIHN0YXRpYyBpbnQgaXZyX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKKyAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnJXMnXG4iLCBrZXksIHZhbCk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gNCkgeworICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICIlcyA9ICcweCIsIGtleSk7CistICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKQorKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykgeworKyAgICAgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJVgiLCBhdmlvX3I4KHBiKSk7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICInXG4iKTsKKyAgICAgICAgIH0gZWxzZSBpZiAobGVuID09IDQgJiYgdHlwZSA9PSAzICYmICFzdHJuY21wKGtleSwgIlN0cmVhbUNvdW50IiwgdGxlbikpIHsKKyAgICAgICAgICAgICBuYl9zdHJlYW1zID0gdmFsdWUgPSBhdmlvX3JiMzIocGIpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDBkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDRmMDVlMmUyZGMxYTg5ZjM4Y2Q5ZjA5NjBhNjU2MTA4M2Q3MTRmMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNTozMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tdmRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AubXYKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbXZkZWMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tdmRlYy5jIGIvbGliYXZmb3JtYXQvbXZkZWMuYworaW5kZXggMGUxMmM4Yy4uZjdhYTRjYiAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L212ZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L212ZGVjLmMKK0BAIC0zNDIsNiArMzQyLDggQEAgc3RhdGljIGludCBtdl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQorICAgICAgICAgICAgIHVpbnQzMl90IHBvcyAgID0gYXZpb19yYjMyKHBiKTsKKyAgICAgICAgICAgICB1aW50MzJfdCBhc2l6ZSA9IGF2aW9fcmIzMihwYik7CisgICAgICAgICAgICAgdWludDMyX3QgdnNpemUgPSBhdmlvX3JiMzIocGIpOworKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgICBhdmlvX3NraXAocGIsIDgpOworICAgICAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShhc3QsIHBvcywgdGltZXN0YW1wLCBhc2l6ZSwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7CisgICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KHZzdCwgcG9zICsgYXNpemUsIGksIHZzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODhiMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSA5NmYyNGQxYmVlN2ZlN2JhYzA4ZTJiN2M3NGRiMWEwNDZjOWRjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89CisgPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JsMjogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AucmwyCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU2CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L3JsMi5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybDIuYyBiL2xpYmF2Zm9ybWF0L3JsMi5jCitpbmRleCAwYmVjOGYxLi5lYjE2ODJkIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvcmwyLmMKKysrKyBiL2xpYmF2Zm9ybWF0L3JsMi5jCitAQCAtMTcwLDEyICsxNzAsMjEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHJsMl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCisgICAgIH0KKyAKKyAgICAgLyoqIHJlYWQgb2Zmc2V0IGFuZCBzaXplIHRhYmxlcyAqLworLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQorKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgIGNodW5rX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpOworLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQorKyAgICB9CisrICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKKysgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgY2h1bmtfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKTsKKy0gICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykKKysgICAgfQorKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgIGF1ZGlvX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpICYgMHhGRkZGOworKyAgICB9CisgCisgICAgIC8qKiBidWlsZCB0aGUgc2FtcGxlIGluZGV4ICovCisgICAgIGZvcihpPTA7aTxmcmFtZV9jb3VudDtpKyspeworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMDFkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDdmOWVjNTU5M2UwNDgyNzI0OWU3YWViNDY2ZGEwNmE5OGEwZDczMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KKyA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTI6Mzc6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvYXNmZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5hc2YKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvYXNmZGVjX2YuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitpbmRleCBiZTA5YTkyLi5mM2FjYmFlIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworKysrIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworQEAgLTc0OSwxMyArNzQ5LDE1IEBAIHN0YXRpYyBpbnQgYXNmX3JlYWRfbWFya2VyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCBzaXplKQorICAgICBjb3VudCA9IGF2aW9fcmwzMihwYik7ICAgIC8vIG1hcmtlcnMgY291bnQKKyAgICAgYXZpb19ybDE2KHBiKTsgICAgICAgICAgICAvLyByZXNlcnZlZCAyIGJ5dGVzCisgICAgIG5hbWVfbGVuID0gYXZpb19ybDE2KHBiKTsgLy8gbmFtZSBsZW5ndGgKKy0gICAgZm9yIChpID0gMDsgaSA8IG5hbWVfbGVuOyBpKyspCistICAgICAgICBhdmlvX3I4KHBiKTsgLy8gc2tpcCB0aGUgbmFtZQorKyAgICBhdmlvX3NraXAocGIsIG5hbWVfbGVuKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgIGludDY0X3QgcHJlc190aW1lOworICAgICAgICAgaW50IG5hbWVfbGVuOworIAorKyAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrCisgICAgICAgICBhdmlvX3JsNjQocGIpOyAgICAgICAgICAgICAvLyBvZmZzZXQsIDggYnl0ZXMKKyAgICAgICAgIHByZXNfdGltZSA9IGF2aW9fcmw2NChwYik7IC8vIHByZXNlbnRhdGlvbiB0aW1lCisgICAgICAgICBwcmVzX3RpbWUgLT0gYXNmLT5oZHIucHJlcm9sbCAqIDEwMDAwOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ODAzY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaApAQCAtMCwwICsxLDk0IEBACitGcm9tIDdlYzQxNDg5MmRkY2FkODgzMTM4NDg0OTRiNmZjNWY0MzdjOWNhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogU2F0LCAyNiBBdWcgMjAxNyAwMToyNjo1OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9obHM6IEZpeCBEb1MgZHVlIHRvIGluZmluaXRlIGxvb3AKKworRml4ZXM6IGxvb3AubTN1CisKK1RoZSBkZWZhdWx0IG1heCBpdGVyYXRpb24gY291bnQgb2YgMTAwMCBpcyBhcmJpdHJhcnkgYW5kIGlkZWFzIGZvciBhIGJldHRlciBzb2x1dGlvbiBhcmUgd2VsY29tZQorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorCitQcmV2aW91cyB2ZXJzaW9uIHJldmlld2VkLWJ5OiBTdGV2ZW4gTGl1IDxsaW5naml1amlhbmtlQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTgKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgZG9jL2RlbXV4ZXJzLnRleGkgfCAxOCArKysrKysrKysrKysrKysrKysKKyBsaWJhdmZvcm1hdC9obHMuYyB8ICA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2RvYy9kZW11eGVycy50ZXhpIGIvZG9jL2RlbXV4ZXJzLnRleGkKK2luZGV4IDI5YTIzZDQuLjczZGMwZmUgMTAwNjQ0CistLS0gYS9kb2MvZGVtdXhlcnMudGV4aQorKysrIGIvZG9jL2RlbXV4ZXJzLnRleGkKK0BAIC0zMDAsNiArMzAwLDI0IEBAIHVzZWQgdG8gZW5kIHRoZSBvdXRwdXQgdmlkZW8gYXQgdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgaW5wdXQgZmlsZSwKKyB3aGljaCBpbiB0aGlzIGNhc2UgaXMgQGZpbGV7aW5wdXQubXA0fSBhcyB0aGUgR0lGIGluIHRoaXMgZXhhbXBsZSBsb29wcworIGluZmluaXRlbHkuCisgCisrQHNlY3Rpb24gaGxzCisrCisrSExTIGRlbXV4ZXIKKysKKytJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKysKKytAdGFibGUgQG9wdGlvbgorK0BpdGVtIGxpdmVfc3RhcnRfaW5kZXgKKytzZWdtZW50IGluZGV4IHRvIHN0YXJ0IGxpdmUgc3RyZWFtcyBhdCAobmVnYXRpdmUgdmFsdWVzIGFyZSBmcm9tIHRoZSBlbmQpLgorKworK0BpdGVtIGFsbG93ZWRfZXh0ZW5zaW9ucworKycsJyBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBobHMgaXMgYWxsb3dlZCB0byBhY2Nlc3MuCisrCisrQGl0ZW0gbWF4X3JlbG9hZAorK01heGltdW0gbnVtYmVyIG9mIHRpbWVzIGEgaW5zdWZmaWNpZW50IGxpc3QgaXMgYXR0ZW1wdGVkIHRvIGJlIHJlbG9hZGVkLgorK0RlZmF1bHQgdmFsdWUgaXMgMTAwMC4KKytAZW5kIHRhYmxlCisrCisgQHNlY3Rpb24gaW1hZ2UyCisgCisgSW1hZ2UgZmlsZSBkZW11eGVyLgorZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2hscy5jIGIvbGliYXZmb3JtYXQvaGxzLmMKK2luZGV4IDAxNzMxYmQuLjA5OTUzNDUgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9obHMuYworKysrIGIvbGliYXZmb3JtYXQvaGxzLmMKK0BAIC0yMDUsNiArMjA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSExTQ29udGV4dCB7CisgICAgIEFWRGljdGlvbmFyeSAqYXZpb19vcHRzOworICAgICBpbnQgc3RyaWN0X3N0ZF9jb21wbGlhbmNlOworICAgICBjaGFyICphbGxvd2VkX2V4dGVuc2lvbnM7CisrICAgIGludCBtYXhfcmVsb2FkOworIH0gSExTQ29udGV4dDsKKyAKKyBzdGF0aWMgaW50IHJlYWRfY2hvbXBfbGluZShBVklPQ29udGV4dCAqcywgY2hhciAqYnVmLCBpbnQgbWF4bGVuKQorQEAgLTEyNjMsNiArMTI2NCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9kYXRhKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCisgICAgIEhMU0NvbnRleHQgKmMgPSB2LT5wYXJlbnQtPnByaXZfZGF0YTsKKyAgICAgaW50IHJldCwgaTsKKyAgICAgaW50IGp1c3Rfb3BlbmVkID0gMDsKKysgICAgaW50IHJlbG9hZF9jb3VudCA9IDA7CisgCisgcmVzdGFydDoKKyAgICAgaWYgKCF2LT5uZWVkZWQpCitAQCAtMTI5NCw2ICsxMjk2LDkgQEAgcmVzdGFydDoKKyAgICAgICAgIHJlbG9hZF9pbnRlcnZhbCA9IGRlZmF1bHRfcmVsb2FkX2ludGVydmFsKHYpOworIAorIHJlbG9hZDoKKysgICAgICAgIHJlbG9hZF9jb3VudCsrOworKyAgICAgICAgaWYgKHJlbG9hZF9jb3VudCA+IGMtPm1heF9yZWxvYWQpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworICAgICAgICAgaWYgKCF2LT5maW5pc2hlZCAmJgorICAgICAgICAgICAgIGF2X2dldHRpbWVfcmVsYXRpdmUoKSAtIHYtPmxhc3RfbG9hZF90aW1lID49IHJlbG9hZF9pbnRlcnZhbCkgeworICAgICAgICAgICAgIGlmICgocmV0ID0gcGFyc2VfcGxheWxpc3QoYywgdi0+dXJsLCB2LCBOVUxMKSkgPCAwKSB7CitAQCAtMjE1MCw2ICsyMTU1LDggQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGhsc19vcHRpb25zW10gPSB7CisgICAgICAgICBPRkZTRVQoYWxsb3dlZF9leHRlbnNpb25zKSwgQVZfT1BUX1RZUEVfU1RSSU5HLAorICAgICAgICAgey5zdHIgPSAiM2dwLGFhYyxhdmksZmxhYyxta3YsbTN1OCxtNGEsbTRzLG00dixtcGcsbW92LG1wMixtcDMsbXA0LG1wZWcsbXBlZ3RzLG9nZyxvZ3Ysb2dhLHRzLHZvYix3YXYifSwKKyAgICAgICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKKysgICAgeyJtYXhfcmVsb2FkIiwgIk1heGltdW0gbnVtYmVyIG9mIHRpbWVzIGEgaW5zdWZmaWNpZW50IGxpc3QgaXMgYXR0ZW1wdGVkIHRvIGJlIHJlbG9hZGVkIiwKKysgICAgICAgIE9GRlNFVChtYXhfcmVsb2FkKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDEwMDB9LCAwLCBJTlRfTUFYLCBGTEFHU30sCisgICAgIHtOVUxMfQorIH07CisgCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmZGUwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gN2U4MGI2M2VjZDI1OWQ2OWQzODM2MjNlNzViMzE4YmYyYmQ0OTFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQorID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9jaW5lZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5jaW5lCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L2NpbmVkZWMuYyB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2luZWRlYy5jIGIvbGliYXZmb3JtYXQvY2luZWRlYy5jCitpbmRleCA3NjNiOTNiLi5kZTM0ZmI5IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvY2luZWRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKK0BAIC0yNjcsOCArMjY3LDEyIEBAIHN0YXRpYyBpbnQgY2luZV9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQorIAorICAgICAvKiBwYXJzZSBpbWFnZSBvZmZzZXRzICovCisgICAgIGF2aW9fc2VlayhwYiwgb2ZmSW1hZ2VPZmZzZXRzLCBTRUVLX1NFVCk7CistICAgIGZvciAoaSA9IDA7IGkgPCBzdC0+ZHVyYXRpb247IGkrKykKKysgICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKysKKyAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShzdCwgYXZpb19ybDY0KHBiKSwgaSwgMCwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIDA7CisgfQorLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjg0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDlkMDBmYjlkNzBlZThjMGNjNzAwMmI4OTMxOGM1YmUwMGYxYmJkYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTI4PUU2PTk5PTkzPUU5PUJCPTkxPTI5Pz0KKyA8dG9ueS5zaEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBUdWUsIDI5IEF1ZyAyMDE3IDIzOjU5OjIxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L214ZmRlYzogRml4IFNpZ24gZXJyb3IgaW4gbXhmX3JlYWRfcHJpbWVyX3BhY2soKQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczogMjAxNzA4MjlCLm14ZgorCitDby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQxNjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbXhmZGVjLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitpbmRleCA2YWRiNzdkLi45MTczMWE3IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitAQCAtNTAwLDcgKzUwMCw3IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfcHJpbWVyX3BhY2sodm9pZCAqYXJnLCBBVklPQ29udGV4dCAqcGIsIGludCB0YWcsIGludCBzaXplLCBVCisgICAgICAgICBhdnByaXZfcmVxdWVzdF9zYW1wbGUocGIsICJQcmltZXIgcGFjayBpdGVtIGxlbmd0aCAlZCIsIGl0ZW1fbGVuKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKKyAgICAgfQorLSAgICBpZiAoaXRlbV9udW0gPiA2NTUzNikgeworKyAgICBpZiAoaXRlbV9udW0gPiA2NTUzNiB8fCBpdGVtX251bSA8IDApIHsKKyAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfRVJST1IsICJpdGVtX251bSAlZCBpcyB0b28gbGFyZ2VcbiIsIGl0ZW1fbnVtKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICB9CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2MDEyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gOTAwZjM5NjkyY2EwMzM3YTk4YTdjZjA0N2U0ZTI2MTEwNzE4MTBjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQorIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbXhmZGVjOiBGaXggRG9TIGlzc3VlcyBpbgorIG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRml4ZXM6IDIwMTcwODI5QS5teGYKKworQ28tQXV0aG9yOiDlvKDmtKrkuq4o5pyb5YidKSIgPHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MTcwCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L214ZmRlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZGVjLmMgYi9saWJhdmZvcm1hdC9teGZkZWMuYworaW5kZXggZjhkMGY5ZS4uNmFkYjc3ZCAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9teGZkZWMuYworQEAgLTg5OSw2ICs4OTksOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZworICAgICBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzID0gYXZpb19yYjMyKHBiKTsKKyAKKyAgICAgbGVuZ3RoID0gYXZpb19yYjMyKHBiKTsKKysgICAgaWYoc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcyAmJiBsZW5ndGggPCAxMSkKKysgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworIAorICAgICBpZiAoIShzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllcz1hdl9jYWxsb2Moc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcywgc2l6ZW9mKCpzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllcykpKSB8fAorICAgICAgICAgIShzZWdtZW50LT5mbGFnX2VudHJpZXMgICAgICAgICAgPSBhdl9jYWxsb2Moc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcywgc2l6ZW9mKCpzZWdtZW50LT5mbGFnX2VudHJpZXMpKSkgfHwKK0BAIC05MDksNiArOTExLDggQEAgc3RhdGljIGludCBteGZfcmVhZF9pbmRleF9lbnRyeV9hcnJheShBVklPQ29udGV4dCAqcGIsIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWcKKyAgICAgfQorIAorICAgICBmb3IgKGkgPSAwOyBpIDwgc2VnbWVudC0+bmJfaW5kZXhfZW50cmllczsgaSsrKSB7CisrICAgICAgICBpZihhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgc2VnbWVudC0+dGVtcG9yYWxfb2Zmc2V0X2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKKyAgICAgICAgIGF2aW9fcjgocGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBLZXlGcmFtZU9mZnNldCAqLworICAgICAgICAgc2VnbWVudC0+ZmxhZ19lbnRyaWVzW2ldID0gYXZpb19yOChwYik7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhZTIwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gYzI0YmNiNTUzNjUwYjkxZTllZmYxNWVmNmU1NGNhNzNkZTI0NTNiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQorIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbnN2ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjayBpbgorIG5zdnNfZmlsZV9vZmZzZXQgbG9vcC4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRml4ZXM6IDIwMTcwODI5Lm5zdgorCitDby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQxNzEKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbnN2ZGVjLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYworaW5kZXggYzZkZGI2Ny4uZDhjZTY1NiAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L25zdmRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYworQEAgLTMzNSw4ICszMzUsMTEgQEAgc3RhdGljIGludCBuc3ZfcGFyc2VfTlNWZl9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQorICAgICAgICAgaWYgKCFuc3YtPm5zdnNfZmlsZV9vZmZzZXQpCisgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAKKy0gICAgICAgIGZvcihpPTA7aTx0YWJsZV9lbnRyaWVzX3VzZWQ7aSsrKQorKyAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspIHsKKysgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgbnN2LT5uc3ZzX2ZpbGVfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKSArIHNpemU7CisrICAgICAgICB9CisgCisgICAgICAgICBpZih0YWJsZV9lbnRyaWVzID4gdGFibGVfZW50cmllc191c2VkICYmCisgICAgICAgICAgICBhdmlvX3JsMzIocGIpID09IE1LVEFHKCdUJywnTycsJ0MnLCcyJykpIHsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTAyMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5Y2I0ZWI3NzI4MzljNWUxZGUyODU1ZDEyNmJmNzRmZjE2ZDEzMzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK0RhdGU6IFR1ZSwgNSBTZXAgMjAxNyAwMDoxNjoyOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tb3Y6IEZpeCBEb1MgaW4gcmVhZF90ZnJhKCkKKworRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKK05vIHRlc3RjYXNlCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MjIyCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L21vdi5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92LmMgYi9saWJhdmZvcm1hdC9tb3YuYworaW5kZXggOTk0ZTljNi4uMjUxOTcwNyAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L21vdi5jCisrKysgYi9saWJhdmZvcm1hdC9tb3YuYworQEAgLTYwOTQsNiArNjA5NCwxMyBAQCBzdGF0aWMgaW50IHJlYWRfdGZyYShNT1ZDb250ZXh0ICptb3YsIEFWSU9Db250ZXh0ICpmKQorICAgICB9CisgICAgIGZvciAoaSA9IDA7IGkgPCBpbmRleC0+aXRlbV9jb3VudDsgaSsrKSB7CisgICAgICAgICBpbnQ2NF90IHRpbWUsIG9mZnNldDsKKysKKysgICAgICAgIGlmIChhdmlvX2Zlb2YoZikpIHsKKysgICAgICAgICAgICBpbmRleC0+aXRlbV9jb3VudCA9IDA7CisrICAgICAgICAgICAgYXZfZnJlZXAoJmluZGV4LT5pdGVtcyk7CisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICB9CisrCisgICAgICAgICBpZiAodmVyc2lvbiA9PSAxKSB7CisgICAgICAgICAgICAgdGltZSAgID0gYXZpb19yYjY0KGYpOworICAgICAgICAgICAgIG9mZnNldCA9IGF2aW9fcmI2NChmKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWZlZjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBhZmM5YzY4M2VkOWRiMDFlZGIzNTdiYzhjMTllZGFkNDI4MmIzYTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK0RhdGU6IFR1ZSwgNSBTZXAgMjAxNyAwMDoxNjoyOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9hc2ZkZWM6IEZpeCBEb1MgaW4gYXNmX2J1aWxkX3NpbXBsZV9pbmRleCgpCisKK0ZpeGVzOiBNaXNzaW5nIEVPRiBjaGVjayBpbiBsb29wCitObyB0ZXN0Y2FzZQorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDIyMworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9hc2ZkZWNfZi5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitpbmRleCBmM2FjYmFlLi5jYzY0OGI5IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworKysrIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworQEAgLTE2MTAsNiArMTYxMCwxMSBAQCBzdGF0aWMgaW50IGFzZl9idWlsZF9zaW1wbGVfaW5kZXgoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgc3RyZWFtX2luZGV4KQorICAgICAgICAgICAgIGludDY0X3QgcG9zICAgICAgID0gcy0+aW50ZXJuYWwtPmRhdGFfb2Zmc2V0ICsgcy0+cGFja2V0X3NpemUgKiAoaW50NjRfdClwa3RudW07CisgICAgICAgICAgICAgaW50NjRfdCBpbmRleF9wdHMgPSBGRk1BWChhdl9yZXNjYWxlKGl0aW1lLCBpLCAxMDAwMCkgLSBhc2YtPmhkci5wcmVyb2xsLCAwKTsKKyAKKysgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHMtPnBiKSkgeworKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgaWYgKHBvcyAhPSBsYXN0X3BvcykgeworICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAicGt0bnVtOiVkLCBwa3RjdDolZCAgcHRzOiAlIlBSSWQ2NCJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwa3RudW0sIHBrdGN0LCBpbmRleF9wdHMpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNjg0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitTdWJqZWN0OiBbUEFUQ0hdIGZmcHJvYmU6IEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aCBjb2xvciBwcmltYXJpZXMKKworRm91bmQtYnk6IEFELWxhYiBvZiB2ZW51c3RlY2gKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQyMjUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgZmZwcm9iZS5jIHwgMTUgKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mZnByb2JlLmMgYi9mZnByb2JlLmMKK2luZGV4IGEyMTlmYzEuLmRmMjJiMzAgMTAwNjQ0CistLS0gYS9mZnByb2JlLmMKKysrKyBiL2ZmcHJvYmUuYworQEAgLTE4OTksNiArMTg5OSwxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9wa3Rfc2lkZV9kYXRhKFdyaXRlckNvbnRleHQgKncsCisgICAgIHdyaXRlcl9wcmludF9zZWN0aW9uX2Zvb3Rlcih3KTsKKyB9CisgCisrc3RhdGljIHZvaWQgcHJpbnRfcHJpbWFyaWVzKFdyaXRlckNvbnRleHQgKncsIGVudW0gQVZDb2xvclByaW1hcmllcyBjb2xvcl9wcmltYXJpZXMpCisreworKyAgICBjb25zdCBjaGFyICp2YWwgPSBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShjb2xvcl9wcmltYXJpZXMpOworKyAgICBpZiAoIXZhbCB8fCBjb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKSB7CisrCXByaW50X3N0cl9vcHQoImNvbG9yX3ByaW1hcmllcyIsICJ1bmtub3duIik7CisrICAgIH0gZWxzZSB7CisrCXByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgdmFsKTsKKysgICAgfQorK30KKysKKyBzdGF0aWMgdm9pZCBjbGVhcl9sb2coaW50IG5lZWRfbG9jaykKKyB7CisgICAgIGludCBpOworQEAgLTI0MjAsMTAgKzI0MzAsNyBAQCBzdGF0aWMgaW50IHNob3dfc3RyZWFtKFdyaXRlckNvbnRleHQgKncsIEFWRm9ybWF0Q29udGV4dCAqZm10X2N0eCwgaW50IHN0cmVhbV9pZAorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHByaW50X3N0cl9vcHQoImNvbG9yX3RyYW5zZmVyIiwgYXZfY29sb3JfdHJhbnNmZXJfbmFtZShwYXItPmNvbG9yX3RyYykpOworIAorLSAgICAgICAgaWYgKHBhci0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKKy0gICAgICAgICAgICBwcmludF9zdHIoImNvbG9yX3ByaW1hcmllcyIsIGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKHBhci0+Y29sb3JfcHJpbWFyaWVzKSk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKKysgICAgICAgIHByaW50X3ByaW1hcmllcyh3LCBwYXItPmNvbG9yX3ByaW1hcmllcyk7CisgCisgICAgICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lGSUVEKQorICAgICAgICAgICAgIHByaW50X3N0cigiY2hyb21hX2xvY2F0aW9uIiwgYXZfY2hyb21hX2xvY2F0aW9uX25hbWUocGFyLT5jaHJvbWFfbG9jYXRpb24pKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxNmY4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjM5ZmQ3MTAyNGFjNzZiYTM1ZjA0Mzk3MDIxYWY1NjA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlMzhmZjE0ZjA4MGM5OGI1OGNmNTk2NzU3MzUwMWI4Y2I1ODZlM2ExNzNiNTkxZjM4MDdkOGYwNjYwZGFmN2EiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeHYnLCAnJywgZCl9IgotCi0jIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKLVBBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKLVBBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKLVBBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKLVBBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKLVBBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKLVBBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKLVBBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKLVBBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKLQotIyBmZWF0dXJlcyB0byBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCi1QQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgotUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2Nocm9lZGluZ2VyXSA9ICItLWVuYWJsZS1saWJzY2hyb2VkaW5nZXIsLS1kaXNhYmxlLWxpYnNjaHJvZWRpbmdlcixzY2hyb2VkaW5nZXIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTFncmFiLC0tZGlzYWJsZS14MTFncmFiLHZpcnR1YWwvbGlieDExIGxpYnhmaXhlcyBsaWJ4ZXh0IHhwcm90byB2aXJ0dWFsL2xpYnNkbCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCi0gICAgXAotICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAotICAgIFwKLSAgICAtLWxkPSIke0NDTER9IiBcCi0gICAgLS1jYz0iJHtDQ30iIFwKLSAgICAtLWN4eD0iJHtDWFh9IiBcCi0gICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKLSAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKLSAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAotICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKLSAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAotICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAotICAgICR7RVhUUkFfRkZDT05GfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCi0gICAgLS1jcHU9JHtAY3B1KGQpfSBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZWJlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgpAQCAtMCwwICsxLDE2NSBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNzAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNzEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDNkYzY2ZWJlNjcxODAyODNiOTJkMDI5ZjY5MGQwZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmE5MDAyY2RjNmI1MzNiNTk3Mjg4MjcxODZjMDQ0YWQwMmJhNjQ4NDFmMWI3Y2Q2YzIxNzc5ODc1NDUzYTFlIgorCisjIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCisjIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKK1BST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgorCitERVBFTkRTID0gImFsc2EtbGliIHpsaWIgbGlib2dnIHlhc20tbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIFwKKyAgICAgICAgICAgICAgICAgICBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYnLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCitQQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgorUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2Nocm9lZGluZ2VyXSA9ICItLWVuYWJsZS1saWJzY2hyb2VkaW5nZXIsLS1kaXNhYmxlLWxpYnNjaHJvZWRpbmdlcixzY2hyb2VkaW5nZXIiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci8wMDAxLWd0ay1wbGF5LURpc2FibGUtdmlzdWFsaXphdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhODgxMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNmNmNDJjNDY4ZTkzYjBhYWExNzE5NjFlMDU5YmMzZTJmYjkxNTg4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI4IEFwciAyMDE3IDE0OjM1OjE5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGd0ay1wbGF5OiBEaXNhYmxlIHZpc3VhbGl6YXRpb25zCi0KLVRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBbWU9DVE8gIzExNDEwXSAoYXVkaW8gcGxheWJhY2sgaXMgYnJva2VuIGluCi1tZWRpYXBsYXllciBpZiB2YWFwaSBpcyB1c2VkKS4gSXQgZGlzYWJsZXMgdmlzdWFsaXphdGlvbnMgYW5kIG1ha2VzCi1zdXJlIHdlIGNsZWFyIHRoZSB3aW5kb3cgKG90aGVyd2lzZSBub3RoaW5nIGRvZXMgdGhhdCBhbmQgcmVzdWx0IGlzCi12ZXJ5IHVnbHkpLgotCi1UaGlzIHBhdGNoIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gMTE0MTAgaXMgZml4ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbYnVnIHdvcmthcm91bmRdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gZ3RrL2d0ay1wbGF5LmMgfCAxMyArKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKLWluZGV4IDhhZTBmZWEuLjYzYjliYjAgMTAwNjQ0Ci0tLS0gYS9ndGsvZ3RrLXBsYXkuYwotKysrIGIvZ3RrL2d0ay1wbGF5LmMKLUBAIC0xNDAxLDYgKzE0MDEsMTUgQEAgZ2V0X2NoaWxkX3Bvc2l0aW9uIChHdGtPdmVybGF5ICogb3ZlcmxheSwgR3RrV2lkZ2V0ICogd2lkZ2V0LAotICAgcmV0dXJuIFRSVUU7Ci0gfQotIAotKy8qIEhhY2sgdG8gbWFrZSBzdXJlIHNvbWV0aGluZyBnZXRzIGRyYXduIGlmIHZpc3VhbGl6YXRpb25zIGFyZSBkaXNhYmxlZCAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2RyYXdfY2IgKEd0a1dpZGdldCAqd2lkZ2V0LCBjYWlyb190ICpjciwgZ3BvaW50ZXIgZGF0YSkKLSt7Ci0rICBjYWlyb19zZXRfc291cmNlX3JnYiAoY3IsIDAsIDAsIDApOwotKyAgY2Fpcm9fcGFpbnQgKGNyKTsKLSsgIHJldHVybiBGQUxTRTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotIHsKLUBAIC0xNDMxLDYgKzE0NDAsOCBAQCBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotICAgICBwbGF5LT52aWRlb19hcmVhID0gZ3RrX2RyYXdpbmdfYXJlYV9uZXcgKCk7Ci0gICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPnZpZGVvX2FyZWEsICJyZWFsaXplIiwKLSAgICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2FyZWFfcmVhbGl6ZV9jYiksIHBsYXkpOwotKyAgICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LT52aWRlb19hcmVhLCAiZHJhdyIsCi0rICAgICAgICBHX0NBTExCQUNLIChkcmF3X2NiKSwgTlVMTCk7Ci0gICB9Ci0gICBndGtfd2lkZ2V0X3NldF9ldmVudHMgKHBsYXktPnZpZGVvX2FyZWEsIEdES19FWFBPU1VSRV9NQVNLCi0gICAgICAgfCBHREtfTEVBVkVfTk9USUZZX01BU0sKLUBAIC0xNzUzLDcgKzE3NjQsNyBAQCBndGtfcGxheV9jb25zdHJ1Y3RvciAoR1R5cGUgdHlwZSwgZ3VpbnQgbl9jb25zdHJ1Y3RfcGFyYW1zLAotIAotICAgLyogZW5hYmxlIHZpc3VhbGl6YXRpb24gKGJ5IGRlZmF1bHQgcGxheWJpbiB1c2VzIGdvb20pICovCi0gICAvKiBpZiB2aXN1YWxpemF0aW9uIGlzIGVuYWJsZWQgdGhlbiB1c2UgdGhlIGZpcnN0IGVsZW1lbnQgKi8KLS0gIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoc2VsZi0+cGxheWVyLCBUUlVFKTsKLSsgIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoc2VsZi0+cGxheWVyLCBGQUxTRSk7Ci0gCi0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoc2VsZiksICJzaG93IiwgR19DQUxMQkFDSyAoc2hvd19jYiksIE5VTEwpOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyZDQ2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLUZyb20gZDY0YzdlZGI2NmY0YTY0ZmY0OWM0MzA2Y2Y3N2ZkMjY5YjcwNzlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE2IE1hciAyMDE1IDEzOjQ1OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBlcnJvciBzaWduYWwgZW1pc3Npb24gZm9yIG1pc3NpbmcgcGx1Z2lucwotCi1BZGQgYSBtaXNzaW5nIHBsdWdpbnMgZXJyb3Igc2lnbmFsIHRvIGdzdC1wbGF5ZXIuIE5vdGUgdGhhdCB0aGlzIGVycm9yCi1kb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoZSBwbGF5YmFjayBoYXMgY29tcGxldGVseSBmYWlsZWQsIGJ1dCBpbgotcHJhY3RpY2UgdGhlIHVzZXIgZXhwZXJpZW5jZSB3aWxsIGJlIGJhZCAodGhpbmssIGUuZy4gb2YgYSBtcDQgZmlsZQotd2hlcmUgSC4yNjQgY29kZWMgaXMgbWlzc2luZzogQUFDIHBsYXliYWNrIHN0aWxsIHdvcmtzLi4uKS4KLQotVXNlIHRoZSBzaWduYWwgaW4gZ3RrLXBsYXkgdG8gc2hvdyBhIGluZm9iYXIgaWYgcGx1Z2lucyBhcmUgbWlzc2luZy4KLQotU3VibWl0dGVkIHVwc3RyZWFtIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIvcHVsbC8xMQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSBndGsvZ3RrLXBsYXkuYyAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyB8IDIyICsrKysrKysrKysrKysrKysrKysKLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCB8ICAzICsrLQotIDQgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBhYjc0Yy4uNmNkYjRlYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTMsNyArNTMsNyBAQCBBQ19TVUJTVChMVF9BR0UpCi0gUEtHX1BST0dfUEtHX0NPTkZJRwotIAotIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtnbGliLTIuMCBnb2JqZWN0LTIuMF0pCi0tUEtHX0NIRUNLX01PRFVMRVMoR1NUUkVBTUVSLCBbZ3N0cmVhbWVyLTEuMCA+PSAxLjQgZ3N0cmVhbWVyLXZpZGVvLTEuMCA+PSAxLjRdKQotK1BLR19DSEVDS19NT0RVTEVTKEdTVFJFQU1FUiwgW2dzdHJlYW1lci0xLjAgPj0gMS40IGdzdHJlYW1lci12aWRlby0xLjAgPj0gMS40IGdzdHJlYW1lci1wYnV0aWxzLTEuMF0pCi0gCi0gR0xJQl9QUkVGSVg9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCBnbGliLTIuMGAiCi0gQUNfU1VCU1QoR0xJQl9QUkVGSVgpCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggYjkyNzczYi4uZTJiNjA1YSAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTMwLDYgKzMwLDggQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIEd0a1dpZGdldCAqcHJldl9idXR0b24sICpuZXh0X2J1dHRvbjsKLSAgIEd0a1dpZGdldCAqc2Vla2JhcjsKLSAgIEd0a1dpZGdldCAqdmlkZW9fYXJlYTsKLSsgIEd0a1dpZGdldCAqaW5mb19sYWJlbDsKLSsgIEd0a1dpZGdldCAqaW5mb19iYXI7Ci0gICBHdGtXaWRnZXQgKnZvbHVtZV9idXR0b247Ci0gICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKLSAgIGdib29sZWFuIHBsYXlpbmc7Ci1AQCAtMTQxLDYgKzE0MywxMyBAQCBwbGF5X3BhdXNlX2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgR3RrUGxheSAqIHBsYXkpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rY2xlYXJfbWlzc2luZ19wbHVnaW5zIChHdGtQbGF5ICogcGxheSkKLSt7Ci0rICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCksICIiKTsKLSsgIGd0a193aWRnZXRfaGlkZSAocGxheS0+aW5mb19iYXIpOwotK30KLSsKLStzdGF0aWMgdm9pZAotIHNraXBfcHJldl9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotIHsKLSAgIEdMaXN0ICpwcmV2OwotQEAgLTE1NSw2ICsxNjQsNyBAQCBza2lwX3ByZXZfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+bmV4dF9idXR0b24sIFRSVUUpOwotICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIHByZXYtPmRhdGEpOwotKyAgY2xlYXJfbWlzc2luZ19wbHVnaW5zIChwbGF5KTsKLSAgIGdzdF9wbGF5ZXJfcGxheSAocGxheS0+cGxheWVyKTsKLSAgIHNldF90aXRsZSAocGxheSwgcHJldi0+ZGF0YSk7Ci0gICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPnByZXZfYnV0dG9uLCBnX2xpc3RfcHJldmlvdXMgKHByZXYpICE9IE5VTEwpOwotQEAgLTE3NSw2ICsxODUsNyBAQCBza2lwX25leHRfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+cHJldl9idXR0b24sIFRSVUUpOwotICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIG5leHQtPmRhdGEpOwotKyAgY2xlYXJfbWlzc2luZ19wbHVnaW5zIChwbGF5KTsKLSAgIGdzdF9wbGF5ZXJfcGxheSAocGxheS0+cGxheWVyKTsKLSAgIHNldF90aXRsZSAocGxheSwgbmV4dC0+ZGF0YSk7Ci0gICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPm5leHRfYnV0dG9uLCBnX2xpc3RfbmV4dCAobmV4dCkgIT0gTlVMTCk7Ci1AQCAtMTkzLDEwICsyMDQsMTYgQEAgdm9sdW1lX2NoYW5nZWRfY2IgKEd0a1NjYWxlQnV0dG9uICogYnV0dG9uLCBnZG91YmxlIHZhbHVlLCBHdGtQbGF5ICogcGxheSkKLSAgIGdzdF9wbGF5ZXJfc2V0X3ZvbHVtZSAocGxheS0+cGxheWVyLCB2YWx1ZSk7Ci0gfQotIAotK3ZvaWQKLStpbmZvX2Jhcl9yZXNwb25zZV9jYiAoR3RrSW5mb0JhciAqIGJhciwgZ2ludCByZXNwb25zZSwgR3RrUGxheSAqIHBsYXkpCi0rewotKyAgZ3RrX3dpZGdldF9oaWRlIChHVEtfV0lER0VUIChiYXIpKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotIHsKLS0gIEd0a1dpZGdldCAqY29udHJvbHMsICptYWluX2hib3gsICptYWluX3Zib3g7Ci0rICBHdGtXaWRnZXQgKmNvbnRyb2xzLCAqbWFpbl9oYm94LCAqbWFpbl92Ym94LCAqaW5mb19iYXIsICpjb250ZW50X2FyZWE7Ci0gCi0gICBwbGF5LT53aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZFTCk7Ci0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAocGxheS0+d2luZG93KSwgImRlbGV0ZS1ldmVudCIsCi1AQCAtMjA4LDYgKzIyNSwyMCBAQCBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotICAgZ19zaWduYWxfY29ubmVjdCAocGxheS0+dmlkZW9fYXJlYSwgInJlYWxpemUiLAotICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2FyZWFfcmVhbGl6ZV9jYiksIHBsYXkpOwotIAotKyAgcGxheS0+aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3ICgpOwotKyAgZ3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUgKEdUS19JTkZPX0JBUiAocGxheS0+aW5mb19iYXIpLAotKyAgICAgIEdUS19NRVNTQUdFX1dBUk5JTkcpOwotKyAgLy9ndGtfaW5mb19iYXJfc2V0X3Nob3dfY2xvc2VfYnV0dG9uIChHVEtfSU5GT19CQVIgKHBsYXktPmluZm9fYmFyKSwKLSsgIC8vICAgIFRSVUUpOwotKyAgZ3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwgKHBsYXktPmluZm9fYmFyLCBUUlVFKTsKLSsgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPmluZm9fYmFyLCAicmVzcG9uc2UiLAotKyAgICAgIEdfQ0FMTEJBQ0sgKGluZm9fYmFyX3Jlc3BvbnNlX2NiKSwgcGxheSk7Ci0rCi0rICBjb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYSAoR1RLX0lORk9fQkFSIChwbGF5LT5pbmZvX2JhcikpOwotKyAgcGxheS0+aW5mb19sYWJlbCA9IGd0a19sYWJlbF9uZXcgKCIiKTsKLSsgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChjb250ZW50X2FyZWEpLCBwbGF5LT5pbmZvX2xhYmVsKTsKLSsgIGd0a193aWRnZXRfc2hvdyAocGxheS0+aW5mb19sYWJlbCk7Ci0rCi0gICAvKiBVbmlmaWVkIHBsYXkvcGF1c2UgYnV0dG9uICovCi0gICBwbGF5LT5wbGF5X3BhdXNlX2J1dHRvbiA9Ci0gICAgICAgZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUgKCJtZWRpYS1wbGF5YmFjay1wYXVzZSIsCi1AQCAtMjU4LDYgKzI4OSw3IEBAIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gCi0gICBtYWluX3Zib3ggPSBndGtfYm94X25ldyAoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKLSAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAobWFpbl92Ym94KSwgbWFpbl9oYm94LCBUUlVFLCBUUlVFLCAwKTsKLSsgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAobWFpbl92Ym94KSwgcGxheS0+aW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKG1haW5fdmJveCksIGNvbnRyb2xzLCBGQUxTRSwgRkFMU0UsIDApOwotICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHBsYXktPndpbmRvdyksIG1haW5fdmJveCk7Ci0gCi1AQCAtMzIyLDYgKzM1NCw3IEBAIGVvc19jYiAoR3N0UGxheWVyICogdW51c2VkLCBHdGtQbGF5ICogcGxheSkKLSAgICAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPm5leHRfYnV0dG9uLCBnX2xpc3RfbmV4dCAobmV4dCkgIT0gTlVMTCk7Ci0gCi0gICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIG5leHQtPmRhdGEpOwotKyAgICAgIGNsZWFyX21pc3NpbmdfcGx1Z2lucyAocGxheSk7Ci0gICAgICAgZ3N0X3BsYXllcl9wbGF5IChwbGF5LT5wbGF5ZXIpOwotICAgICAgIHNldF90aXRsZSAocGxheSwgbmV4dC0+ZGF0YSk7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMzMwLDYgKzM2MywyNCBAQCBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCi0gICB9Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rZXJyb3JfY2IgKEdzdFBsYXllciAqIHBsYXllciwgR0Vycm9yICogZXJyLCBHdGtQbGF5ICogcGxheSkKLSt7Ci0rICBjaGFyICptZXNzYWdlOwotKwotKyAgaWYgKGdfZXJyb3JfbWF0Y2hlcyAoZXJyLCBnc3RfcGxheWVyX2Vycm9yX3F1YXJrICgpLAotKyAgICAgIEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4pKSB7Ci0rICAgIC8vIGFkZCBtZXNzYWdlIHRvIGVuZCBvZiBhbnkgZXhpc3RpbmcgbWVzc2FnZTogdGhlcmUgbWF5IGJlCi0rICAgIC8vIG11bHRpcGxlIG1pc3NpbmcgcGx1Z2lucy4KLSsgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzJXMuICIsCi0rICAgICAgICBndGtfbGFiZWxfZ2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCkpLCBlcnItPm1lc3NhZ2UpOwotKyAgICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCksIG1lc3NhZ2UpOwotKyAgICBnX2ZyZWUgKG1lc3NhZ2UpOwotKwotKyAgICBndGtfd2lkZ2V0X3Nob3cgKHBsYXktPmluZm9fYmFyKTsKLSsgIH0KLSt9Ci0rCi0gaW50Ci0gbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQotIHsKLUBAIC00MjIsNiArNDczLDcgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQotICAgZ19zaWduYWxfY29ubmVjdCAocGxheS5wbGF5ZXIsICJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLAotICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9jYiksICZwbGF5KTsKLSAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXkucGxheWVyLCAiZW5kLW9mLXN0cmVhbSIsIEdfQ0FMTEJBQ0sgKGVvc19jYiksICZwbGF5KTsKLSsgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXkucGxheWVyLCAiZXJyb3IiLCBHX0NBTExCQUNLIChlcnJvcl9jYiksICZwbGF5KTsKLSAKLSAgIC8qIFdlIGhhdmUgZmlsZShzKSB0aGF0IG5lZWQgcGxheWluZy4gKi8KLSAgIHNldF90aXRsZSAoJnBsYXksIGdfbGlzdF9maXJzdCAocGxheS51cmlzKS0+ZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYwotaW5kZXggYmQ2ODJkOS4uNzhlN2JhMSAxMDA2NDQKLS0tLSBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi0rKysgYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYwotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSsjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+Ci0gCi0gR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3BsYXllcl9kZWJ1Zyk7Ci0gI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3BsYXllcl9kZWJ1ZwotQEAgLTIzOCw2ICsyMzksNyBAQCBnc3RfcGxheWVyX2NsYXNzX2luaXQgKEdzdFBsYXllckNsYXNzICoga2xhc3MpCi0gICAgICAgZ19zaWduYWxfbmV3ICgidmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKLSAgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKLSAgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMiwgR19UWVBFX0lOVCwgR19UWVBFX0lOVCk7Ci0rCi0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtNjE5LDYgKzYyMSwyMSBAQCBlcnJvcl9jYiAoR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCi0gICBnX211dGV4X3VubG9jayAoJnNlbGYtPnByaXYtPmxvY2spOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2VsZW1lbnRfY2IgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7Ci0rCi0rICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UgKG1zZykpIHsKLSsgICAgZ2NoYXIgKmRlc2M7Ci0rCi0rICAgIGRlc2MgPSBnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24gKG1zZyk7Ci0rICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLAotKyAgICAgICAgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTiwgIk1pc3NpbmcgcGx1Z2luICclcyciLCBkZXNjKSk7Ci0rICAgIGdfZnJlZSAoZGVzYyk7Ci0rICB9Ci0rfQotKwotIHN0YXRpYyBnYm9vbGVhbgotIGVvc19kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotIHsKLUBAIC0xMDU5LDYgKzEwNzYsOCBAQCBnc3RfcGxheWVyX21haW4gKGdwb2ludGVyIGRhdGEpCi0gICAgICAgTlVMTCwgTlVMTCk7Ci0gICBnX3NvdXJjZV9hdHRhY2ggKGJ1c19zb3VyY2UsIHNlbGYtPnByaXYtPmNvbnRleHQpOwotIAotKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplbGVtZW50IiwKLSsgICAgICBHX0NBTExCQUNLIChlbGVtZW50X2NiKSwgc2VsZik7Ci0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmVycm9yIiwgR19DQUxMQkFDSyAoZXJyb3JfY2IpLAotICAgICAgIHNlbGYpOwotICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplb3MiLCBHX0NBTExCQUNLIChlb3NfY2IpLCBzZWxmKTsKLUBAIC0xNTYwLDYgKzE1NzksNyBAQCBnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICh2b2lkKQotICAgc3RhdGljIGdzaXplIGlkID0gMDsKLSAgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHZhbHVlc1tdID0gewotICAgICB7Q19FTlVNIChHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCksICJHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCIsICJmYWlsZWQifSwKLSsgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTiksICJHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOIiwgIm1pc3NpbmctcGx1Z2luIn0sCi0gICAgIHswLCBOVUxMLCBOVUxMfQotICAgfTsKLSAKLUBAIC0xNTc3LDYgKzE1OTcsOCBAQCBnc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lIChHc3RQbGF5ZXJFcnJvciBlcnJvcikKLSAgIHN3aXRjaCAoZXJyb3IpIHsKLSAgICAgY2FzZSBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRDoKLSAgICAgICByZXR1cm4gImZhaWxlZCI7Ci0rICAgIGNhc2UgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTjoKLSsgICAgICByZXR1cm4gIm1pc3NpbmctcGx1Z2luIjsKLSAgIH0KLSAKLSAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotZGlmZiAtLWdpdCBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLWluZGV4IGM0Mzg1MTMuLjM1ZmI1YmIgMTAwNjQ0Ci0tLS0gYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaAotKysrIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLUBAIC00NCw3ICs0NCw4IEBAIEdUeXBlICAgICAgICBnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICAgICAgICAgICAgICAgICh2b2lkKTsKLSAjZGVmaW5lICAgICAgR1NUX1RZUEVfUExBWUVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAoKSkKLSAKLSB0eXBlZGVmIGVudW0gewotLSAgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQgPSAwCi0rICBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCA9IDAsCi0rICBHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOCi0gfSBHc3RQbGF5ZXJFcnJvcjsKLSAKLSBjb25zdCBnY2hhciAqZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAgICAgICAgICAgICAgICAoR3N0UGxheWVyRXJyb3IgZXJyb3IpOwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4M2M0MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0ZpeC1wYXVzZS1wbGF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLUZpeCBwYXVzZS9wbGF5Ci0KLVRoZSBjdXJyZW50IHBsYXllciBzdGF0ZSBpcyBub3cgbm90aWZpZWQgdmlhIHRoZSBzdGF0ZS1jaGFuZ2VkIHNpZ25hbCwKLWFuZCBpbiB0aGUgR1RLIFVJIGl0IHdhcyBvbmx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgZGVzaXJlZCBzdGF0ZS4KLQotVGhpcyBpcyBhIGJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCA3Mzg0NzljN2EwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0tLS0KLSBndGsvZ3RrLXBsYXkuYyAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCi0gbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgfCAxMiAtLS0tLS0tLS0tLS0KLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCB8ICAyIC0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggNmU3YTA5OC4uZTJiNjA1YSAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTM0LDYgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIEd0a1dpZGdldCAqaW5mb19iYXI7Ci0gICBHdGtXaWRnZXQgKnZvbHVtZV9idXR0b247Ci0gICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKLSsgIGdib29sZWFuIHBsYXlpbmc7Ci0gfSBHdGtQbGF5OwotIAotIC8qIENvbXBhdCBzdHVicyAqLwotQEAgLTExOCwxMiArMTE5LDEzIEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSB7Ci0gICBHdGtXaWRnZXQgKmltYWdlOwotIAotLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgewotKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKLSAgICAgZ3N0X3BsYXllcl9wYXVzZSAocGxheS0+cGxheWVyKTsKLSAgICAgaW1hZ2UgPQotICAgICAgICAgZ3RrX2ltYWdlX25ld19mcm9tX2ljb25fbmFtZSAoIm1lZGlhLXBsYXliYWNrLXN0YXJ0IiwKLSAgICAgICAgIEdUS19JQ09OX1NJWkVfQlVUVE9OKTsKLSAgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UgKEdUS19CVVRUT04gKHBsYXktPnBsYXlfcGF1c2VfYnV0dG9uKSwgaW1hZ2UpOwotKyAgICBwbGF5LT5wbGF5aW5nID0gRkFMU0U7Ci0gICB9IGVsc2UgewotICAgICBnY2hhciAqdGl0bGU7Ci0gCi1AQCAtMTM2LDYgKzEzOCw3IEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAgICAgdGl0bGUgPSBnc3RfcGxheWVyX2dldF91cmkgKHBsYXktPnBsYXllcik7Ci0gICAgIHNldF90aXRsZSAocGxheSwgdGl0bGUpOwotICAgICBnX2ZyZWUgKHRpdGxlKTsKLSsgICAgcGxheS0+cGxheWluZyA9IFRSVUU7Ci0gICB9Ci0gfQotIAotQEAgLTMzNSw3ICszMzgsNyBAQCB2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCi0gc3RhdGljIHZvaWQKLSBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCi0gewotLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgewotKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKLSAgICAgR0xpc3QgKm5leHQgPSBOVUxMOwotICAgICBnY2hhciAqdXJpOwotIAotQEAgLTQ1Miw2ICs0NTUsNyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqIGFyZ3YpCi0gICB9Ci0gCi0gICBwbGF5LnBsYXllciA9IGdzdF9wbGF5ZXJfbmV3ICgpOwotKyAgcGxheS5wbGF5aW5nID0gVFJVRTsKLSAKLSAgIGdfb2JqZWN0X3NldCAocGxheS5wbGF5ZXIsICJkaXNwYXRjaC10by1tYWluLWNvbnRleHQiLCBUUlVFLCBOVUxMKTsKLSAKLWRpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1pbmRleCAwNjliMjg0Li43OGU3YmExIDEwMDY0NAotLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKLSsrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1AQCAtMTQyMiwxOCArMTQyMiw2IEBAIGdzdF9wbGF5ZXJfc2V0X3VyaSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWwpCi0gICBnX29iamVjdF9zZXQgKHNlbGYsICJ1cmkiLCB2YWwsIE5VTEwpOwotIH0KLSAKLS1nYm9vbGVhbgotLWdzdF9wbGF5ZXJfaXNfcGxheWluZyAoR3N0UGxheWVyICogc2VsZikKLS17Ci0tICBnYm9vbGVhbiB2YWw7Ci0tCi0tICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKLS0KLS0gIGdfb2JqZWN0X2dldCAoc2VsZiwgImlzLXBsYXlpbmciLCAmdmFsLCBOVUxMKTsKLS0KLS0gIHJldHVybiB2YWw7Ci0tfQotLQotIEdzdENsb2NrVGltZQotIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQotIHsKLWRpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCi1pbmRleCA2OTMzZGQ3Li4zNWZiNWJiIDEwMDY0NAotLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLSsrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCi1AQCAtOTMsOCArOTMsNiBAQCBnY2hhciAqICAgICAgZ3N0X3BsYXllcl9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKLSB2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgKiB1cmkpOwotIAotLWdib29sZWFuICAgICBnc3RfcGxheWVyX2lzX3BsYXlpbmcgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotLQotIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9kdXJhdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZmlsZWNob29zZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZmlsZWNob29zZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZjFiMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2ZpbGVjaG9vc2VyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNDNkNGIxOWFiNjExZDg0NDE1NmUyNmM0ODQwY2M1NGRkYjczYWUwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDI2IEZlYiAyMDE1IDE3OjE3OjA1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGd0ay1wbGF5OiBzaG93IGEgZmlsZSBjaG9vc2VyIGlmIG5vIFVSSXMgd2VyZSBwYXNzZWQKLQotLS0tCi0gZ3RrL2d0ay1wbGF5LmMgfCAgIDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKLWluZGV4IGYwMTUwNzcuLjk3NjZhNzIgMTAwNjQ0Ci0tLS0gYS9ndGsvZ3RrLXBsYXkuYwotKysrIGIvZ3RrL2d0ay1wbGF5LmMKLUBAIC0zMTksOCArMzE5LDMyIEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiogYXJndikKLSAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcGxheWxpc3RzIGFuZCBzdHVmZgotICAgLyogUGFyc2UgdGhlIGxpc3Qgb2YgdGhlIGZpbGUgbmFtZXMgd2UgaGF2ZSB0byBwbGF5LiAqLwotICAgaWYgKCFmaWxlX25hbWVzKSB7Ci0tICAgIGdfcHJpbnQgKCJVc2FnZTogJXMgRklMRShzKXxVUkkocylcbiIsIEFQUF9OQU1FKTsKLS0gICAgcmV0dXJuIDE7Ci0rICAgIEd0a1dpZGdldCAqY2hvb3NlcjsKLSsgICAgaW50IHJlczsKLSsKLSsgICAgY2hvb3NlciA9IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldyAoIlNlbGVjdCBmaWxlcyB0byBwbGF5IiwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRklMRV9DSE9PU0VSX0FDVElPTl9PUEVOLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfQ2FuY2VsIiwgR1RLX1JFU1BPTlNFX0NBTkNFTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX09wZW4iLCBHVEtfUkVTUE9OU0VfQUNDRVBULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKyAgICBnX29iamVjdF9zZXQgKGNob29zZXIsCi0rICAgICAgICAgICAgICAgICAgImxvY2FsLW9ubHkiLCBGQUxTRSwKLSsgICAgICAgICAgICAgICAgICAic2VsZWN0LW11bHRpcGxlIiwgVFJVRSwKLSsgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsKLSsgICAgcmVzID0gZ3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGNob29zZXIpKTsKLSsgICAgaWYgKHJlcyA9PSBHVEtfUkVTUE9OU0VfQUNDRVBUKSB7Ci0rICAgICAgR1NMaXN0ICpsOwotKwotKyAgICAgIGwgPSBndGtfZmlsZV9jaG9vc2VyX2dldF91cmlzIChHVEtfRklMRV9DSE9PU0VSIChjaG9vc2VyKSk7Ci0rICAgICAgd2hpbGUgKGwpIHsKLSsgICAgICAgIHBsYXkudXJpcyA9IGdfbGlzdF9hcHBlbmQgKHBsYXkudXJpcywgbC0+ZGF0YSk7Ci0rICAgICAgICBsID0gZ19zbGlzdF9kZWxldGVfbGluayAobCwgbCk7Ci0rICAgICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGd0a193aWRnZXRfZGVzdHJveSAoY2hvb3Nlcik7Ci0gICB9IGVsc2UgewotICAgICBndWludCBpOwotIAotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgppbmRleCBjYjEyYTQ2Li40ZmU4ZmRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKQEAgLTUsMTQgKzUsMTEgQEAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Nkcm9lZ2UvZ3N0LXBsYXllci5naXQgXAotICAgICAgICAgICBmaWxlOi8vZmlsZWNob29zZXIucGF0Y2g7YXBwbHk9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtcGF1c2UtcGxheS5wYXRjaDthcHBseT0wIFwKLSAgICAgICAgICAgZmlsZTovL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaDthcHBseT0wIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9nc3QtcGxheWVyLmRlc2t0b3AiCiAKIFNSQ1JFViA9ICJlZTNjMjI2YzgyNzY3YTA4OTc0M2U0ZTA2MDU4NzQzZTY3ZjczY2RiIgogUFYgPSAiMC4wLjErZ2l0JHtTUkNQVn0iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXItdmFhcGkvdmFhcGl2aWRlb2J1ZmZlcnBvb2wtY3JlYXRlLWFsbG9jYXRvci1pZi1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2NmFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtjb21taXQgNTlhNzMxYmU2YiBpbiAnMS4xMCcgYnJhbmNoXQotCi0KLUZyb20gMDJhNjAwMmMzYTgwYjNhNTMwMWMwOTQzYjFhMTUxOGJiZGY0MzlmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9WPUMzPUFEY3Rvcj0yME1hbnVlbD0yMEo9QzM9QTFxdWV6PTIwTGVhbD89Ci0gPHZqYXF1ZXpAaWdhbGlhLmNvbT4KLURhdGU6IEZyaSwgMjEgQXByIDIwMTcgMTk6MDc6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmFhcGl2aWRlb2J1ZmZlcnBvb2w6IGNyZWF0ZSBhbGxvY2F0b3IgaWYgbmVlZGVkCi0KLUJhY2twb3J0IHRvIGJyYW5jaCAxLjEwCi0KLVNvbWV0aW1lcyBhIHZpZGVvIGRlY29kZXIgY291bGQgc2V0IGRpZmZlcmVudCBidWZmZXIgcG9vbAotY29uZmlndXJhdGlvbnMsIGJlY2F1c2UgdGhlaXIgZnJhbWUgc2l6ZSBjaGFuZ2VzLiBJbiB0aGlzIGNhc2Ugd2UKLWRpZCBub3QgcmVjb25maWd1cmUgdGhlIGFsbG9jYXRvci4KLQotVGhpcyBwYXRjaCBlbmFibGVzIHRoaXMgdXNlIGNhc2UsIGNyZWF0aW5nIGEgbmV3IGFsbG9jYXRvciBpbnNpZGUKLXRoZSBWQUFQSSBidWZmZXIgcG9vbCBpZiB0aGUgY2FwcyBjaGFuZ2VkLCBpZiBpdCBpcyBub3QgZG1hYnVmLWJhc2VkLgotSWYgc28sIGl0IGlzIGp1c3QgcmVjb25maWd1cmVkLCBzaW5jZSBpdCBkb2Vzbid0IGhhdmUgYSBzdXJmYWNlIHBvb2wuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE1NzcKLS0tLQotIGdzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jIGIvZ3N0L3ZhYXBpL2dzdHZhYXBpdmlkZW9idWZmZXJwb29sLmMKLWluZGV4IGEzYjkyMjNmLi45YTUwNjE0YiAxMDA2NDQKLS0tLSBhL2dzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jCi0rKysgYi9nc3QvdmFhcGkvZ3N0dmFhcGl2aWRlb2J1ZmZlcnBvb2wuYwotQEAgLTE1OSw2ICsxNTksMjcgQEAgZ3N0X3ZhYXBpX3ZpZGVvX2J1ZmZlcl9wb29sX3NldF9jb25maWcgKEdzdEJ1ZmZlclBvb2wgKiBwb29sLAotICAgICBnc3Rfb2JqZWN0X3JlcGxhY2UgKChHc3RPYmplY3QgKiopICYgcHJpdi0+YWxsb2NhdG9yLCBOVUxMKTsKLSAgIHByaXYtPnZpZGVvX2luZm8gPSBuZXdfdmlwOwotIAotKyAgewotKyAgICBndWludCBzdXJmYWNlX2FsbG9jX2ZsYWdzOwotKyAgICBnYm9vbGVhbiB2aW5mb19jaGFuZ2VkID0gRkFMU0U7Ci0rCi0rICAgIGlmIChhbGxvY2F0b3IpIHsKLSsgICAgICBjb25zdCBHc3RWaWRlb0luZm8gKmFsbG9jX3ZpbmZvID0KLSsgICAgICAgICAgZ3N0X2FsbG9jYXRvcl9nZXRfdmFhcGlfdmlkZW9faW5mbyAoYWxsb2NhdG9yLCAmc3VyZmFjZV9hbGxvY19mbGFncyk7Ci0rICAgICAgdmluZm9fY2hhbmdlZCA9IGdzdF92aWRlb19pbmZvX2NoYW5nZWQgKGFsbG9jX3ZpbmZvLCAmbmV3X3ZpcCk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHZpbmZvX2NoYW5nZWQgJiYgYWxsb2NhdG9yICYmIHByaXYtPnVzZV9kbWFidWZfbWVtb3J5KSB7Ci0rICAgICAgZ3N0X2FsbG9jYXRvcl9zZXRfdmFhcGlfdmlkZW9faW5mbyAoYWxsb2NhdG9yLCAmbmV3X3ZpcCwKLSsgICAgICAgICAgc3VyZmFjZV9hbGxvY19mbGFncyk7Ci0rICAgIH0gZWxzZSBpZiAoIXByaXYtPnVzZV9kbWFidWZfbWVtb3J5ICYmICh2aW5mb19jaGFuZ2VkIHx8ICFhbGxvY2F0b3IpKSB7Ci0rICAgICAgLyogbGV0J3MgZGVzdHJveSB0aGUgb3RoZXIgYWxsb2NhdG9yIGFuZCBjcmVhdGUgYSBuZXcgb25lICovCi0rICAgICAgYWxsb2NhdG9yID0gZ3N0X3ZhYXBpX3ZpZGVvX2FsbG9jYXRvcl9uZXcgKHByaXYtPmRpc3BsYXksICZuZXdfdmlwLAotKyAgICAgICAgICBzdXJmYWNlX2FsbG9jX2ZsYWdzKTsKLSsgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9hbGxvY2F0b3IgKGNvbmZpZywgYWxsb2NhdG9yLCBOVUxMKTsKLSsgICAgfQotKyAgfQotKwotICAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2hhc19vcHRpb24gKGNvbmZpZywKLSAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WQUFQSV9WSURFT19NRVRBKSkKLSAgICAgZ290byBlcnJvcl9ub192YWFwaV92aWRlb19tZXRhX29wdGlvbjsKLS0tIAotMi4xMS4wCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgwZDA3MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhYWM1OTAyZDNjOWNiMzVjNzcxZTc2MGQwZTQ4NzYyMmFhMmUxMTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6Mzg6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBjaGVjayBmb3IgYXJtdjd2ZSB2YXJpYW50CisKK09FIHBhc3NlcyAtbWNwdSBhbmQgLW1hcmNoIHZpYSBjbWRsaW5lIGFuZCBpZgorcGFja2FnZSB0cmllcyB0byBkZXRlY3Qgb25lIG9mIGl0IG93biB0aGVuIGl0CitzaG91bGQgYmUgY29tcGF0aWJsZSBvdGhlcndpc2UsIG5ld2VyIGdjYzcrIHdpbGwKK2Vycm9yIG91dAorCitDaGVjayBmb3IgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIG1hY3JvIHRvIGRldGVybWluZQorYXJtdjd2ZSBhcmNoaXRlY3R1cmUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQoraW5kZXggNGE1ZTQ3Ny4uNzI3ODE4ZSAxMDA3NTUKKy0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKKysrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKK0BAIC00Mjk1LDYgKzQyOTUsNyBAQCBlbGlmIGVuYWJsZWQgYXJtOyB0aGVuCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZaOyAgICAgICB0aGVuIGVjaG8gYXJtdjZ6CisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZaSzsgICAgICB0aGVuIGVjaG8gYXJtdjZ6aworICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2VDI7ICAgICAgdGhlbiBlY2hvIGFybXY2dDIKKysgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggRVhUX0lESVY7IHRoZW4gZWNobyBhcm12N3ZlCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDc7ICAgICAgICB0aGVuIGVjaG8gYXJtdjcKKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggN0EgIDdfQTsgIHRoZW4gZWNobyBhcm12Ny1hCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDdTOyAgICAgICB0aGVuIGVjaG8gYXJtdjctYQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYmZjODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBiNTIyNmMwOTZhMGI3MDQ5ODc0ODU4ZTk0YTU5ZDQzZTEwYmEzZmQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMTA6MjI6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaGV2Y3ByZWRfbXNhLmM6IEZpeCBidWlsZCBieSBJbmNsdWRpbmcgbGliYXZjb2RlYy9oZXZjZGVjLmgKKworc3JjL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYzoxOTEzOjMyOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ0hFVkNDb250ZXh0JzsgZGlkIHlvdSBtZWFuICdIRVZDUHJlZENvbnRleHQnPworIHZvaWQgZmZfaW50cmFfcHJlZF84XzE2eDE2X21zYShIRVZDQ29udGV4dCAqcywgaW50IHgwLCBpbnQgeTAsIGludCBjX2lkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEVWQ1ByZWRDb250ZXh0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCitpbmRleCA2YTNiMjgxLi45NjNjNjRjIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworQEAgLTE4LDcgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKKyAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCisgI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkODFkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1saWJhdi5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCi0gICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMmJkZDlmZGU2Y2EzZmY3ZWZmZmI5M2RmMTIxZjRmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2EwZmVjYTc1ZTNkNDgzMTVlMDdmMjBlYzM3Y2Y2MjYwZWQxZTlkZGU1OGRmMzU1ZmViZDUwMTYyNDYyNjhiIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNWJiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODc4OGFlY2MwMzJhMjg3MjI3YjRiZDIzOWQxYjk5OGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJiNzM1YjliYjIxOGI2NTJhZTQwNzFlYTZmNmJlOGVhYWU1NWU5ZDMyMzNhZWMyZjM2Yjg4MmEyNzU0MmRiMyIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZS5iYgppbmRleCBjNTQyYjEzLi4wMTZlMTc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1tZXRhLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiCkBAIC0zNyw3ICszNyw3IEBACiAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS12aWRlb3NjYWxlIFwKICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXZpZGVvY29udmVydCBcCiAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1hdXRvZGV0ZWN0IFwKLSAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLXNvdXBodHRwc3JjIgorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2Qtc291cCIKIAogUlJFQ09NTUVORFNfZ3N0cmVhbWVyMS4wLW1ldGEteDExLWJhc2UgPSAiXAogICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UteGltYWdlc2luayBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYwppbmRleCAwNTU2MmIxLi41ZDkyMzUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKQEAgLTI5LDEwICsyOSwxNyBAQAogICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQogfQogCitkZWxldGVfcGtnX200X2ZpbGUoKSB7CisgICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKKyAgICAjIGlmIHRoZXNlIGV4aXN0CisJcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKKwlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKK30KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKKwogc2V0X29teF9jb3JlX25hbWUoKSB7CiAJc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCiB9Ci0KIGRvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZlZWZhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZWRiMjMwZjFjNDdkMGNmNGI1NzVkNzBkZmY2NmZmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTA3MjkyNWNmMjYyZjBmZDUyOGZhYjc4ZjBkZTUyNzM0ZTQ2YTVhODhhYTgwMmZhZTUxYzY3YzA5YzgxYWEyIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZDQ1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTEgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGExNDA0YTIwYjcyZTRhYjZlODI2NTAwMjE4ZWMzMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIyMjM5OGY0NWEwMjdlOTc3ZDJiNTMwOTYyNWVjOTFjZGNhZjBkYTg3NTFjYmM3ZjU5NmQ2MzlhNDViYTI5OCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKaW5kZXggMGNjZmM4OS4uN2JlMTVkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMjAsNyArMjAsNyBAQAogICAgICR7R1NUUkVBTUVSX09SQ30gXAogICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiIHZ1bGthbicsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCiAgICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyBuZW9uIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCiAiCkBAIC00MCw5ICs0MCw3IEBACiBQQUNLQUdFQ09ORklHW2ZsdWlkc3ludGhdICAgICAgPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgogUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWdsZXMyLC0tZGlzYWJsZS1nbGVzMix2aXJ0dWFsL2xpYmdsZXMyIgogUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWd0azMsLS1kaXNhYmxlLWd0azMsZ3RrKzMiCi0jIGVuc3VyZSBPcGVuU1NMIGlzIHVzZWQgZm9yIEhMUyBBRVMgZGVzY3JpcHRpb24gaW5zdGVhZCBvZiBuZXR0bGUKLSMgKE9wZW5TU0wgaXMgYSBzaGFyZWQgZGVwZW5kZW5jeSB3aXRoIGR0bHMpCi1QQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW9wZW5zc2wsLS1kaXNhYmxlLWhscyxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWhscyAtLXdpdGgtaGxzLWNyeXB0bz1uZXR0bGUsLS1kaXNhYmxlLWhscyxuZXR0bGUiCiBQQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgogUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKIFBBQ0tBR0VDT05GSUdbbGlic3NoMl0gICAgICAgICA9ICItLWVuYWJsZS1saWJzc2gyLC0tZGlzYWJsZS1saWJzc2gyLGxpYnNzaDIiCkBAIC02NiwxOSArNjQsMTUgQEAKIFBBQ0tBR0VDT05GSUdbdXZjaDI2NF0gICAgICAgICA9ICItLWVuYWJsZS11dmNoMjY0LC0tZGlzYWJsZS11dmNoMjY0LGxpYnVzYjEgbGliZ3VkZXYiCiBQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLS1lbmFibGUtdm9hYWNlbmMsLS1kaXNhYmxlLXZvYWFjZW5jLHZvLWFhY2VuYyIKIFBBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItLWVuYWJsZS12b2FtcndiZW5jLC0tZGlzYWJsZS12b2FtcndiZW5jLHZvLWFtcndiZW5jIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKIFBBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItLWVuYWJsZS13ZWJwLC0tZGlzYWJsZS13ZWJwLGxpYndlYnAiCiAKLSMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vdCBiZWVuIHBvcnRlZCB0byAxLjAgKHlldCk6Ci0jICAgYXBleHNpbmsgbGluc3lzIG5hcyB0aW1pZGl0eSBzZGwgeHZpZCB3aW5pbmV0Ci0jICAgc25kaW8gY2R4YXBhcnNlIGRjY3AgZmFjZW92ZXJsYXkgaGR2cGFyc2UgdHRhIG12ZSBudXZkZW11eAotIyAgIHBhdGNoZGV0ZWN0IHNkaSB2aWRlb21lYXN1cmUKLQogIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6Ci0jICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhCisjICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhIGlxYQogIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZGFhbGEgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhIGxpYmRlMjY1Ci0jICAgbHYyIG1pbWljIG1wZWcyZW5jIG1wbGV4IG11c2VwYWNrIG52ZW5jIG9mYSBvcGVuaDI2NCBvcGVuc2xlcyBwdnIgc291bmR0b3VjaCBzcGFuZHNwCi0jICAgc3BjIHRlbGV0ZXh0ZGVjIHRpbnlhbHNhIHZkcGF1IHZ1bGthbiB3YXNhcGkgeDI2NSB6YmFyCisjICAgbHYyIG1wZWcyZW5jIG1wbGV4IG1zZGsgbXVzZXBhY2sgbnZlbmMgb2ZhIG9wZW5oMjY0IG9wZW5zbGVzIHNvdW5kdG91Y2ggc3BhbmRzcAorIyAgIHNwYyB0ZWxldGV4dGRlYyB0aW55YWxzYSB2ZHBhdSB3YXNhcGkgeDI2NSB6YmFyIHdlYnJ0Y2RzcAogCiAjIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgogIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgpAQCAtOTQsNyArODgsNiBAQAogICAgIC0tZW5hYmxlLXZjZCBcCiAgICAgLS1kaXNhYmxlLWFjbSBcCiAgICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hcGV4c2luayBcCiAgICAgLS1kaXNhYmxlLWFwcGxlX21lZGlhIFwKICAgICAtLWRpc2FibGUtYXZjIFwKICAgICAtLWRpc2FibGUtYnMyYiBcCkBAIC0xMDcsNDMgKzEwMCwzNCBAQAogICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKICAgICAtLWRpc2FibGUtZ21lIFwKICAgICAtLWRpc2FibGUtZ3NtIFwKKyAgICAtLWRpc2FibGUtaXFhIFwKICAgICAtLWRpc2FibGUta2F0ZSBcCiAgICAgLS1kaXNhYmxlLWxhZHNwYSBcCiAgICAgLS1kaXNhYmxlLWxpYmRlMjY1IFwKLSAgICAtLWRpc2FibGUtbGlidmlzdWFsIFwKLSAgICAtLWRpc2FibGUtbGluc3lzIFwKICAgICAtLWRpc2FibGUtbHYyIFwKLSAgICAtLWRpc2FibGUtbWltaWMgXAogICAgIC0tZGlzYWJsZS1tcGVnMmVuYyBcCiAgICAgLS1kaXNhYmxlLW1wbGV4IFwKKyAgICAtLWRpc2FibGUtbXNkayBcCiAgICAgLS1kaXNhYmxlLW11c2VwYWNrIFwKLSAgICAtLWRpc2FibGUtbmFzIFwKICAgICAtLWRpc2FibGUtbnZlbmMgXAogICAgIC0tZGlzYWJsZS1vZmEgXAogICAgIC0tZGlzYWJsZS1vcGVuZXhyIFwKICAgICAtLWRpc2FibGUtb3BlbmgyNjQgXAogICAgIC0tZGlzYWJsZS1vcGVubmkyIFwKICAgICAtLWRpc2FibGUtb3BlbnNsZXMgXAotICAgIC0tZGlzYWJsZS1wdnIgXAogICAgIC0tZGlzYWJsZS1xdCBcCi0gICAgLS1kaXNhYmxlLXNkbCBcCi0gICAgLS1kaXNhYmxlLXNkbHRlc3QgXAotICAgIC0tZGlzYWJsZS1zbmRpbyBcCiAgICAgLS1kaXNhYmxlLXNvdW5kdG91Y2ggXAogICAgIC0tZGlzYWJsZS1zcGFuZHNwIFwKICAgICAtLWRpc2FibGUtc3BjIFwKICAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAotICAgIC0tZGlzYWJsZS10aW1pZGl0eSBcCiAgICAgLS1kaXNhYmxlLXRpbnlhbHNhIFwKICAgICAtLWRpc2FibGUtdmRwYXUgXAotICAgIC0tZGlzYWJsZS12dWxrYW4gXAogICAgIC0tZGlzYWJsZS13YXNhcGkgXAorICAgIC0tZGlzYWJsZS13ZWJydGNkc3AgXAogICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCi0gICAgLS1kaXNhYmxlLXdpbmluZXQgXAogICAgIC0tZGlzYWJsZS13aW5rcyBcCiAgICAgLS1kaXNhYmxlLXdpbnNjcmVlbmNhcCBcCiAgICAgLS1kaXNhYmxlLXgyNjUgXAotICAgIC0tZGlzYWJsZS14dmlkIFwKICAgICAtLWRpc2FibGUtemJhciBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKICIKQEAgLTE1NywzICsxNDEsNyBAQAogRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCiBGSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKIEZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDQzZjFlZTAuLjhkOTlkYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGNmZjZmYmY1NTVhMDcyNDA4YzIxZGExZTgxODIwOWM5ZDM4MTRkZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc1OTJlNzkzYjM5MDYzNTVkNzZjYTlhNTlmOGZlYTI3NDllYTJhNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMjcgT2N0IDIwMTUgMTQ6MzY6NTggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGhhcmRjb2RlIGxpYnRvb2wgbmFtZSB3aGVuIHJ1bm5pbmcKQEAgLTcsMTcgKzcsMzQgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCi0tLS0KLSBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQotIGdzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0gfCAyICstCi0gZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKIAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1AQCAtMTcxLDcgKzE3MSw3IEBAIEdzdEdMLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUMKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gfCAyICstCisgZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAyICstCisgZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSAgfCAyICstCisgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSAgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitpbmRleCBlNTBkMDc3Li42MjNmMDkyIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitAQCAtMzcsNyArMzcsNyBAQCBHc3RCYWRBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGJhZGFsbG9jYQorIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisgCQktLWxpYnJhcnk9bGliZ3N0YmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKy0JCS0tbGlidG9vbD0iJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wiIFwKKysJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAorIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItYmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQCBcCisgCQktLW91dHB1dCAkQCBcCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCitpbmRleCAyYWU0NzczLi5kZmE3YTdkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK0BAIC0xNzgsNyArMTc4LDcgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTI2LDExICs0MywxMSBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLUBAIC00NSw3ICs0NSw3IEBAIEdzdEluc2VydEJpbi1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU4KK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQoraW5kZXggMWY4ZWEzMC4uNGI5OGVmNiAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KK0BAIC00NSw3ICs0NSw3IEBAIEdzdEluc2VydEJpbi1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RpbnNlcnRiaW4tQEdTCiAgCQktLWxpYnJhcnk9bGliZ3N0aW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzksMTEgKzU2LDExIEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAgXAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEub3JpZy9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi1AQCAtNzksNyArNzksNyBAQCBHc3RNcGVndHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KK2luZGV4IGFlZWEzMmUuLjkyOWQ5Y2MgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCitAQCAtNzksNyArNzksNyBAQCBHc3RNcGVndHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0bXBlZ3RzLUBHU1RfQVBJXwogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AYCBcCiAgCQktLWxpYnJhcnk9bGliZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtNTIsMyArNjksNiBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQCBcCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKaW5kZXggODZhNDQ5NS4uNDhkOTNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKQEAgLTEsMzQgKzEsMzggQEAKLUZyb20gYzI3MTUwM2Q3ZTIzMzQyOGFjMDMyM2M1MWQ2NTE3MTEzZTI2YmVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2M4ZjY4YzU0MjgzODBiOTMwNTc5ZGM5ZWYyN2M4NTMyNjQ0NDhmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEgRGVjIDIwMTYgMDA6Mjc6MTMgLTA4MDAKK0RhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTU6MDY6MTEgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gUHJlcGVuZCBQS0dfQ09ORklHX1NZU1JPT1RfRElSIHRvIHBrZy1jb25maWcgb3V0cHV0CiAKIEluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQogcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAogaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gSWYgYnVpbGQgaG9zdCBoYXMgd2F5bGFuZCBpbnN0YWxsZWQKLXRoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0Cit0aGUgYnVpbGQgd2lsbCBzdWNjZWVkIGJ1dCBpZiB5b3UgZG9udCBoYXZlIHdheWxhbmQtcHJvdG9jb2xzIGluc3RhbGxlZCBvbiBidWlsZAoraG9zdCB0aGVuIGl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gYnVpbGQgaG9zdAogCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKK1RoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UKK2luIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgd2lsbCBiZSBlbXB0eQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9jb25maWd1cmUuYWMKLUBAIC0yMjMzLDcgKzIyMzMsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzCi0gICAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkRfUFJPVE9DT0xTLCB3YXlsYW5kLXByb3RvY29scyA+PSAxLjQsIFsKLSAgICAgICBpZiB0ZXN0ICJ4JHdheWxhbmRfc2Nhbm5lciIgIT0gIngiOyB0aGVuCi0gICAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKLS0gICAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotKyAgICAgICAgQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSAgICAgICBlbHNlCi0gICAgICAgICBBQ19NU0dfUkVTVUxUKFt3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luXSkKLSAgICAgICAgIEhBVkVfV0FZTEFORD0ibm8iCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlMzA3YmU2Li44M2NkZWIwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMjcyLDcgKzIyNzIsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzaW5rXSwgd2F5bGFuZCAsIFsKKyAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIGxpYmRybSA+PSAyLjQuNTUgd2F5bGFuZC1wcm90b2NvbHMgPj0gMS40LCBbCisgICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KKyAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKKy0gICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKKysgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQorICAgICBlbHNlCisgICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCisgICAgICAgSEFWRV9XQVlMQU5EPSJubyIKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAppbmRleCA5ZmM5MWQ4Li4yMjM1YTU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaApAQCAtMSwyNCArMSwyOSBAQAotRnJvbSBhOTNjYTYzZDAxZTdjZDFlNDBiNWJlNTc2OTkyZjc3ZmFjMzY0YmQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NjIyY2EzYjYxNjAzZGMzMTZhMGYxZmJlZGUzZjlhYTM1M2E1ZTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIxIE1hciAyMDE2IDE4OjIxOjE3ICswMjAwCitEYXRlOiBGcmksIDEyIE1heSAyMDE3IDE2OjQ3OjEyICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lci1nbC5wYy5pbjogZG9uJ3QgYXBwZW5kIEdMX0NGTEFHUyB0byBDRkxBR1MKIAogRGVwZW5kZW5jaWVzJyBpbmNsdWRlIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgYWRkZWQgaW4gdGhpcyB3YXk7CiBpdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBjcm9zcy1jb21waWxpbmcgaW4gc3lzcm9vdCBlbnZpcm9ubWVudHMuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAgcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEub3JpZy9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi1AQCAtMTAsNCArMTAsNCBAQCBWZXJzaW9uOiBAVkVSU0lPTkAKK2RpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgoraW5kZXggOGU3YTMwMy4uZDE2N2JlMSAxMDA2NDQKKy0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KKysrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KK0BAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAogIFJlcXVpcmVzOiBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKICAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05AIEBHTF9MSUJTQAorIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKIC1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtbXNzZGVtdXgtaW1wcm92ZWQtbGl2ZS1wbGF5YmFjay1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tc3NkZW11eC1pbXByb3ZlZC1saXZlLXBsYXliYWNrLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MzJjMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tc3NkZW11eC1pbXByb3ZlZC1saXZlLXBsYXliYWNrLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MjkgKzAsMCBAQAotRnJvbSA3MzcyMWFkNGU5ZTJkMzJlMWM4YjZhM2I0YWFhOTg0MDE1MzBlNThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLURhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTQ6NDM6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbXNzZGVtdXg6IGltcHJvdmVkIGxpdmUgcGxheWJhY2sgc3VwcG9ydAotCi1XaGVuIGEgTVNTIHNlcnZlciBob3N0cyBhIGxpdmUgc3RyZWFtIHRoZSBmcmFnbWVudHMgbGlzdGVkIGluIHRoZQotbWFuaWZlc3QgdXN1YWxseSBkb24ndCBoYXZlIGFjY3VyYXRlIHRpbWVzdGFtcHMgYW5kIGR1cmF0aW9uLCBleGNlcHQKLWZvciB0aGUgZmlyc3QgZnJhZ21lbnQsIHdoaWNoIGFkZGl0aW9uYWxseSBzdG9yZXMgdGltaW5nIGluZm9ybWF0aW9uCi1mb3IgdGhlIGZldyB1cGNvbWluZyBmcmFnbWVudHMuIEluIHRoaXMgc2NlbmFyaW8gaXQgaXMgdXNlbGVzcyB0bwotcGVyaW9kaWNhbGx5IGZldGNoIGFuZCB1cGRhdGUgdGhlIG1hbmlmZXN0IGFuZCB0aGUgZnJhZ21lbnRzIGxpc3QgY2FuCi1iZSBpbmNyZW1lbnRhbGx5IGJ1aWx0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0L2N1cnJlbnQgZnJhZ21lbnQuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUwMzYKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8ICAgMiArCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jICAgICAgICAgICAgIHwgIDYwICsrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuYyAgICB8IDI2NiArKysrKysrKysrKysrKysrKysrKysrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCAgICB8ICA4NCArKysrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyAgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKy0KLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmggICAgICAgICAgfCAgIDcgKwotIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYyB8ICAyNyArKy0KLSBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmggfCAgMTQgKysKLSA4IGZpbGVzIGNoYW5nZWQsIDYwNiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbSBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0KLWluZGV4IDRmYWY5ZGY5Zi4uYTVlMWFkNmFlIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQotQEAgLTEzLDggKzEzLDEwIEBAIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9MSUJBREQgPSBcCi0gbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0xERkxBR1MgPSAke0dTVF9QTFVHSU5fTERGTEFHU30KLSBsaWJnc3RzbW9vdGhzdHJlYW1pbmdfbGFfU09VUkNFUyA9IGdzdHNtb290aHN0cmVhbWluZy1wbHVnaW4uYyBcCi0gCWdzdG1zc2RlbXV4LmMgXAotKwlnc3Rtc3NmcmFnbWVudHBhcnNlci5jIFwKLSAJZ3N0bXNzbWFuaWZlc3QuYwotIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIAotIG5vaW5zdF9IRUFERVJTID0gZ3N0bXNzZGVtdXguaCBcCi0rCWdzdG1zc2ZyYWdtZW50cGFyc2VyLmggXAotIAlnc3Rtc3NtYW5pZmVzdC5oCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1pbmRleCAxMmZiNDA0OTcuLjEyMGQ5YzIyYiAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1AQCAtMTM1LDExICsxMzUsMTggQEAgZ3N0X21zc19kZW11eF9zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwotIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0RXZlbnQgKiBzZWVrKTsKLSBzdGF0aWMgZ2ludDY0Ci0gZ3N0X21zc19kZW11eF9nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwotK3N0YXRpYyBnaW50NjQKLStnc3RfbXNzX2RlbXV4X3N0cmVhbV9nZXRfZnJhZ21lbnRfd2FpdGluZ190aW1lIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKLSsgICAgc3RyZWFtKTsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKTsKLSBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0gICAgIGdpbnQ2NCAqIHN0YXJ0LCBnaW50NjQgKiBzdG9wKTsKLStzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbXNzX2RlbXV4X2RhdGFfcmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSsgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKTsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfbXNzX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwotIAotIHN0YXRpYyB2b2lkCi0gZ3N0X21zc19kZW11eF9jbGFzc19pbml0IChHc3RNc3NEZW11eENsYXNzICoga2xhc3MpCi1AQCAtMTkyLDEwICsxOTksMTUgQEAgZ3N0X21zc19kZW11eF9jbGFzc19pbml0IChHc3RNc3NEZW11eENsYXNzICoga2xhc3MpCi0gICAgICAgZ3N0X21zc19kZW11eF9zdHJlYW1fc2VsZWN0X2JpdHJhdGU7Ci0gICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gPQotICAgICAgIGdzdF9tc3NfZGVtdXhfc3RyZWFtX3VwZGF0ZV9mcmFnbWVudF9pbmZvOwotKyAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+c3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgPQotKyAgICAgIGdzdF9tc3NfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWU7Ci0gICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT51cGRhdGVfbWFuaWZlc3RfZGF0YSA9Ci0gICAgICAgZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YTsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPmdldF9saXZlX3NlZWtfcmFuZ2UgPQotICAgICAgIGdzdF9tc3NfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZTsKLSsgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPmRhdGFfcmVjZWl2ZWQgPSBnc3RfbXNzX2RlbXV4X2RhdGFfcmVjZWl2ZWQ7Ci0rICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZSA9Ci0rICAgICAgZ3N0X21zc19kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZTsKLSAKLSAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChtc3NkZW11eF9kZWJ1ZywgIm1zc2RlbXV4IiwgMCwgIm1zc2RlbXV4IHBsdWdpbiIpOwotIH0KLUBAIC02NTAsNiArNjYyLDEzIEBAIGdzdF9tc3NfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQotICAgcmV0dXJuIGludGVydmFsOwotIH0KLSAKLStzdGF0aWMgZ2ludDY0Ci0rZ3N0X21zc19kZW11eF9zdHJlYW1fZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKLSt7Ci0rICAvKiBXYWl0IGEgc2Vjb25kIGZvciBsaXZlIHN0cmVhbXMgc28gd2UgZG9uJ3QgdHJ5IHByZW1hdHVyZSBmcmFnbWVudHMgZG93bmxvYWRpbmcgKi8KLSsgIHJldHVybiBHU1RfU0VDT05EOwotK30KLSsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKQotQEAgLTY3MCwzICs2ODksNDQgQEAgZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsIGdpbnQ2NCAqIHN0YXJ0LAotIAotICAgcmV0dXJuIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAobXNzZGVtdXgtPm1hbmlmZXN0LCBzdGFydCwgc3RvcCk7Ci0gfQotKwotK3N0YXRpYyBHc3RGbG93UmV0dXJuCi0rZ3N0X21zc19kZW11eF9kYXRhX3JlY2VpdmVkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0rICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSt7Ci0rICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKLSsgIEdzdE1zc0RlbXV4U3RyZWFtICptc3NzdHJlYW0gPSAoR3N0TXNzRGVtdXhTdHJlYW0gKikgc3RyZWFtOwotKyAgZ3NpemUgYXZhaWxhYmxlOwotKwotKyAgaWYgKCFnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1zc2RlbXV4LT5tYW5pZmVzdCkpIHsKLSsgICAgcmV0dXJuIEdTVF9BREFQVElWRV9ERU1VWF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGF0YV9yZWNlaXZlZCAoZGVtdXgsCi0rICAgICAgICBzdHJlYW0sIGJ1ZmZlcik7Ci0rICB9Ci0rCi0rICBpZiAoZ3N0X21zc19zdHJlYW1fZnJhZ21lbnRfcGFyc2luZ19uZWVkZWQgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtKSkgewotKyAgICBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl9wdXNoIChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSwgYnVmZmVyKTsKLSsgICAgYXZhaWxhYmxlID0KLSsgICAgICAgIGdzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX2F2YWlsYWJsZSAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0pOwotKyAgICAvLyBGSVhNRTogdHJ5IHRvIHJlZHVjZSB0aGlzIG1pbmltYWwgc2l6ZS4KLSsgICAgaWYgKGF2YWlsYWJsZSA8IDQwOTYpIHsKLSsgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgR1NUX0xPR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiZW5vdWdoIGRhdGEsIHBhcnNpbmcgZnJhZ21lbnQuIik7Ci0rICAgICAgYnVmZmVyID0KLSsgICAgICAgICAgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfdGFrZV9idWZmZXIgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLAotKyAgICAgICAgICBhdmFpbGFibGUpOwotKyAgICAgIGdzdF9tc3Nfc3RyZWFtX3BhcnNlX2ZyYWdtZW50IChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSwgYnVmZmVyKTsKLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuIEdTVF9BREFQVElWRV9ERU1VWF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGF0YV9yZWNlaXZlZCAoZGVtdXgsIHN0cmVhbSwKLSsgICAgICBidWZmZXIpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfbXNzX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCi0rewotKyAgR3N0TXNzRGVtdXggKm1zc2RlbXV4ID0gR1NUX01TU19ERU1VWF9DQVNUIChkZW11eCk7Ci0rCi0rICByZXR1cm4gKCFnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1zc2RlbXV4LT5tYW5pZmVzdCkpOwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmI1NTRkNGYzMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5jCi1AQCAtMCwwICsxLDI2NiBAQAotKy8qCi0rICogTWljcm9zb2Z0IFNtb290aC1TdHJlYW1pbmcgZnJhZ21lbnQgcGFyc2luZyBsaWJyYXJ5Ci0rICoKLSsgKiBnc3Rtc3NmcmFnbWVudHBhcnNlci5oCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTAotKyAqIENvcHlyaWdodCAoQykgMjAxNiBNZXRyb2xvZ2ljYWwKLSsgKiAgIEF1dGhvcjogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IChDT1BZSU5HKTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaW5jbHVkZSAiZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCIKLSsjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLStHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChtc3NkZW11eF9kZWJ1Zyk7Ci0rI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXNzZGVtdXhfZGVidWcKLSsKLSt2b2lkCi0rZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfaW5pdCAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIpCi0rewotKyAgcGFyc2VyLT5zdGF0dXMgPSBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfSU5JVDsKLSsgIHBhcnNlci0+dGZyZi5lbnRyaWVzX2NvdW50ID0gMDsKLSt9Ci0rCi0rdm9pZAotK2dzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2NsZWFyIChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlcikKLSt7Ci0rICBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCA9IDA7Ci0rICBpZiAocGFyc2VyLT50ZnJmLmVudHJpZXMpIHsKLSsgICAgZ19mcmVlIChwYXJzZXItPnRmcmYuZW50cmllcyk7Ci0rICAgIHBhcnNlci0+dGZyZi5lbnRyaWVzID0gMDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rX3BhcnNlX3RmcmZfYm94IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0Qnl0ZVJlYWRlciAqIHJlYWRlcikKLSt7Ci0rICBndWludDggdmVyc2lvbjsKLSsgIGd1aW50MzIgZmxhZ3MgPSAwOwotKyAgZ3VpbnQ4IGZyYWdtZW50X2NvdW50ID0gMDsKLSsgIGd1aW50OCBpbmRleCA9IDA7Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDggKHJlYWRlciwgJnZlcnNpb24pKSB7Ci0rICAgIEdTVF9FUlJPUiAoIkVycm9yIGdldHRpbmcgYm94J3MgdmVyc2lvbiBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDI0X2JlIChyZWFkZXIsICZmbGFncykpIHsKLSsgICAgR1NUX0VSUk9SICgiRXJyb3IgZ2V0dGluZyBib3gncyBmbGFncyBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4IChyZWFkZXIsICZmcmFnbWVudF9jb3VudCk7Ci0rICBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCA9IGZyYWdtZW50X2NvdW50OwotKyAgcGFyc2VyLT50ZnJmLmVudHJpZXMgPQotKyAgICAgIGdfbWFsbG9jIChzaXplb2YgKEdzdFRmcmZCb3hFbnRyeSkgKiBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCk7Ci0rICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBmcmFnbWVudF9jb3VudDsgaW5kZXgrKykgewotKyAgICBndWludDY0IGFic29sdXRlX3RpbWUgPSAwOwotKyAgICBndWludDY0IGFic29sdXRlX2R1cmF0aW9uID0gMDsKLSsgICAgaWYgKHZlcnNpb24gJiAweDAxKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX3RpbWUpOwotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDY0X2JlIChyZWFkZXIsICZhYnNvbHV0ZV9kdXJhdGlvbik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgZ3VpbnQzMiB0aW1lID0gMDsKLSsgICAgICBndWludDMyIGR1cmF0aW9uID0gMDsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAocmVhZGVyLCAmdGltZSk7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUgKHJlYWRlciwgJmR1cmF0aW9uKTsKLSsgICAgICB0aW1lID0gfnRpbWU7Ci0rICAgICAgZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICAgICAgYWJzb2x1dGVfdGltZSA9IH50aW1lOwotKyAgICAgIGFic29sdXRlX2R1cmF0aW9uID0gfmR1cmF0aW9uOwotKyAgICB9Ci0rICAgIHBhcnNlci0+dGZyZi5lbnRyaWVzW2luZGV4XS50aW1lID0gYWJzb2x1dGVfdGltZTsKLSsgICAgcGFyc2VyLT50ZnJmLmVudHJpZXNbaW5kZXhdLmR1cmF0aW9uID0gYWJzb2x1dGVfZHVyYXRpb247Ci0rICB9Ci0rCi0rICBHU1RfTE9HICgidGZyZiBib3ggcGFyc2VkIik7Ci0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rX3BhcnNlX3RmeGRfYm94IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0Qnl0ZVJlYWRlciAqIHJlYWRlcikKLSt7Ci0rICBndWludDggdmVyc2lvbjsKLSsgIGd1aW50MzIgZmxhZ3MgPSAwOwotKyAgZ3VpbnQ2NCBhYnNvbHV0ZV90aW1lID0gMDsKLSsgIGd1aW50NjQgYWJzb2x1dGVfZHVyYXRpb24gPSAwOwotKwotKyAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4IChyZWFkZXIsICZ2ZXJzaW9uKSkgewotKyAgICBHU1RfRVJST1IgKCJFcnJvciBnZXR0aW5nIGJveCdzIHZlcnNpb24gZmllbGQiKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKwotKyAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQyNF9iZSAocmVhZGVyLCAmZmxhZ3MpKSB7Ci0rICAgIEdTVF9FUlJPUiAoIkVycm9yIGdldHRpbmcgYm94J3MgZmxhZ3MgZmllbGQiKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKwotKyAgaWYgKHZlcnNpb24gJiAweDAxKSB7Ci0rICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDY0X2JlIChyZWFkZXIsICZhYnNvbHV0ZV90aW1lKTsKLSsgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX2R1cmF0aW9uKTsKLSsgIH0gZWxzZSB7Ci0rICAgIGd1aW50MzIgdGltZSA9IDA7Ci0rICAgIGd1aW50MzIgZHVyYXRpb24gPSAwOwotKyAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAocmVhZGVyLCAmdGltZSk7Ci0rICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlIChyZWFkZXIsICZkdXJhdGlvbik7Ci0rICAgIHRpbWUgPSB+dGltZTsKLSsgICAgZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICAgIGFic29sdXRlX3RpbWUgPSB+dGltZTsKLSsgICAgYWJzb2x1dGVfZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICB9Ci0rCi0rICBwYXJzZXItPnRmeGQudGltZSA9IGFic29sdXRlX3RpbWU7Ci0rICBwYXJzZXItPnRmeGQuZHVyYXRpb24gPSBhYnNvbHV0ZV9kdXJhdGlvbjsKLSsgIEdTVF9MT0cgKCJ0ZnhkIGJveCBwYXJzZWQiKTsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2FkZF9idWZmZXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyLAotKyAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi0rewotKyAgR3N0Qnl0ZVJlYWRlciByZWFkZXI7Ci0rICBHc3RNYXBJbmZvIGluZm87Ci0rICBndWludDMyIHNpemU7Ci0rICBndWludDMyIGZvdXJjYzsKLSsgIGNvbnN0IGd1aW50OCAqdXVpZDsKLSsgIGdib29sZWFuIGVycm9yID0gRkFMU0U7Ci0rICBnYm9vbGVhbiBtZGF0X2JveF9mb3VuZCA9IEZBTFNFOwotKwotKyAgc3RhdGljIGNvbnN0IGd1aW50OCB0ZnJmX3V1aWRbXSA9IHsKLSsgICAgMHhkNCwgMHg4MCwgMHg3ZSwgMHhmMiwgMHhjYSwgMHgzOSwgMHg0NiwgMHg5NSwKLSsgICAgMHg4ZSwgMHg1NCwgMHgyNiwgMHhjYiwgMHg5ZSwgMHg0NiwgMHhhNywgMHg5ZgotKyAgfTsKLSsKLSsgIHN0YXRpYyBjb25zdCBndWludDggdGZ4ZF91dWlkW10gPSB7Ci0rICAgIDB4NmQsIDB4MWQsIDB4OWIsIDB4MDUsIDB4NDIsIDB4ZDUsIDB4NDQsIDB4ZTYsCi0rICAgIDB4ODAsIDB4ZTIsIDB4MTQsIDB4MWQsIDB4YWYsIDB4ZjcsIDB4NTcsIDB4YjIKLSsgIH07Ci0rCi0rICBzdGF0aWMgY29uc3QgZ3VpbnQ4IHBpZmZfdXVpZFtdID0gewotKyAgICAweGEyLCAweDM5LCAweDRmLCAweDUyLCAweDVhLCAweDliLCAweDRmLCAweDE0LAotKyAgICAweGEyLCAweDQ0LCAweDZjLCAweDQyLCAweDdjLCAweDY0LCAweDhkLCAweGY0Ci0rICB9OwotKwotKyAgaWYgKCFnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKSkgewotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBnc3RfYnl0ZV9yZWFkZXJfaW5pdCAoJnJlYWRlciwgaW5mby5kYXRhLCBpbmZvLnNpemUpOwotKyAgR1NUX1RSQUNFICgiVG90YWwgYnVmZmVyIHNpemU6ICV1IiwgZ3N0X2J5dGVfcmVhZGVyX2dldF9zaXplICgmcmVhZGVyKSk7Ci0rCi0rICBzaXplID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01PT0YpIHsKLSsgICAgR1NUX1RSQUNFICgibW9vZiBib3ggZm91bmQiKTsKLSsgICAgc2l6ZSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgIGlmIChmb3VyY2MgPT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTUZIRCkgewotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9za2lwX3VuY2hlY2tlZCAoJnJlYWRlciwgc2l6ZSAtIDgpOwotKwotKyAgICAgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgaWYgKGZvdXJjYyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19UUkFGKSB7Ci0rICAgICAgICBzaXplID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RGSEQpIHsKLSsgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX3NraXBfdW5jaGVja2VkICgmcmVhZGVyLCBzaXplIC0gOCk7Ci0rCi0rICAgICAgICAgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgICAgICBmb3VyY2MgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9sZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgICAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSVU4pIHsKLSsgICAgICAgICAgICBHU1RfVFJBQ0UgKCJ0cnVuIGJveCBmb3VuZCwgc2l6ZTogJSIgR19HVUlOVDMyX0ZPUk1BVCwgc2l6ZSk7Ci0rICAgICAgICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfc2tpcCAoJnJlYWRlciwgc2l6ZSAtIDgpKSB7Ci0rICAgICAgICAgICAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBza2lwIHRydW4gYm94LCBlbm91Z2ggZGF0YT8iKTsKLSsgICAgICAgICAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICAgICAgICAgIGdvdG8gYmVhY2g7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0rICB3aGlsZSAoIW1kYXRfYm94X2ZvdW5kKSB7Ci0rICAgIEdTVF9UUkFDRSAoInJlbWFpbmluZyBkYXRhOiAldSIsIGdzdF9ieXRlX3JlYWRlcl9nZXRfcmVtYWluaW5nICgmcmVhZGVyKSk7Ci0rICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUgKCZyZWFkZXIsICZzaXplKSkgewotKyAgICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGdldCBib3ggc2l6ZSwgZW5vdWdoIGRhdGE/Iik7Ci0rICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIEdTVF9UUkFDRSAoImJveCBzaXplOiAlIiBHX0dVSU5UMzJfRk9STUFULCBzaXplKTsKLSsgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9sZSAoJnJlYWRlciwgJmZvdXJjYykpIHsKLSsgICAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBnZXQgZm91cmNjLCBlbm91Z2ggZGF0YT8iKTsKLSsgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGZvdXJjYyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19NREFUKSB7Ci0rICAgICAgR1NUX0xPRyAoIm1kYXQgYm94IGZvdW5kIik7Ci0rICAgICAgbWRhdF9ib3hfZm91bmQgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGlmIChmb3VyY2MgIT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVVVJRCkgewotKyAgICAgIEdTVF9FUlJPUiAoImludmFsaWQgVVVJRCBmb3VyY2M6ICUiIEdTVF9GT1VSQ0NfRk9STUFULAotKyAgICAgICAgICBHU1RfRk9VUkNDX0FSR1MgKGZvdXJjYykpOwotKyAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9wZWVrX2RhdGEgKCZyZWFkZXIsIDE2LCAmdXVpZCkpIHsKLSsgICAgICBHU1RfRVJST1IgKCJub3QgZW5vdWdoIGRhdGEgaW4gVVVJRCBib3giKTsKLSsgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKG1lbWNtcCAodXVpZCwgcGlmZl91dWlkLCAxNikgPT0gMCkgewotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9za2lwX3VuY2hlY2tlZCAoJnJlYWRlciwgc2l6ZSAtIDgpOwotKyAgICAgIEdTVF9MT0cgKCJwaWZmIGJveCBkZXRlY3RlZCIpOwotKyAgICB9Ci0rCi0rICAgIGlmIChtZW1jbXAgKHV1aWQsIHRmcmZfdXVpZCwgMTYpID09IDApIHsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2RhdGEgKCZyZWFkZXIsIDE2LCAmdXVpZCk7Ci0rICAgICAgaWYgKCFfcGFyc2VfdGZyZl9ib3ggKHBhcnNlciwgJnJlYWRlcikpIHsKLSsgICAgICAgIEdTVF9FUlJPUiAoInR4cmYgYm94IHBhcnNpbmcgZXJyb3IiKTsKLSsgICAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAobWVtY21wICh1dWlkLCB0ZnhkX3V1aWQsIDE2KSA9PSAwKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF9kYXRhICgmcmVhZGVyLCAxNiwgJnV1aWQpOwotKyAgICAgIGlmICghX3BhcnNlX3RmeGRfYm94IChwYXJzZXIsICZyZWFkZXIpKSB7Ci0rICAgICAgICBHU1RfRVJST1IgKCJ0ZnJmIGJveCBwYXJzaW5nIGVycm9yIik7Ci0rICAgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLStiZWFjaDoKLSsKLSsgIGlmICghZXJyb3IpCi0rICAgIHBhcnNlci0+c3RhdHVzID0gR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0ZJTklTSEVEOwotKwotKyAgR1NUX0xPRyAoIkZyYWdtZW50IHBhcnNpbmcgc3VjY2Vzc2Z1bDogJXMiLCBlcnJvciA/ICJubyIgOiAieWVzIik7Ci0rICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZpbmZvKTsKLSsgIHJldHVybiAhZXJyb3I7Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uY2Y0NzExODY1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmgKLUBAIC0wLDAgKzEsODQgQEAKLSsvKgotKyAqIE1pY3Jvc29mdCBTbW9vdGgtU3RyZWFtaW5nIGZyYWdtZW50IHBhcnNpbmcgbGlicmFyeQotKyAqCi0rICogZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCi0rICogICBBdXRob3I6IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeSAoQ09QWUlORyk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0rICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rICovCi0rCi0rI2lmbmRlZiBfX0dTVF9NU1NfRlJBR01FTlRfUEFSU0VSX0hfXwotKyNkZWZpbmUgX19HU1RfTVNTX0ZSQUdNRU5UX1BBUlNFUl9IX18KLSsKLSsjaW5jbHVkZSA8Z3N0L2dzdC5oPgotKwotK0dfQkVHSU5fREVDTFMKLSsKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01PT0YgR1NUX01BS0VfRk9VUkNDKCdtJywnbycsJ28nLCdmJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01GSEQgR1NUX01BS0VfRk9VUkNDKCdtJywnZicsJ2gnLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSQUYgR1NUX01BS0VfRk9VUkNDKCd0JywncicsJ2EnLCdmJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RGSEQgR1NUX01BS0VfRk9VUkNDKCd0JywnZicsJ2gnLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSVU4gR1NUX01BS0VfRk9VUkNDKCd0JywncicsJ3UnLCduJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1VVSUQgR1NUX01BS0VfRk9VUkNDKCd1JywndScsJ2knLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01EQVQgR1NUX01BS0VfRk9VUkNDKCdtJywnZCcsJ2EnLCd0JykKLSsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0VGZ4ZEJveAotK3sKLSsgIGd1aW50OCB2ZXJzaW9uOwotKyAgZ3VpbnQzMiBmbGFnczsKLSsKLSsgIGd1aW50NjQgdGltZTsKLSsgIGd1aW50NjQgZHVyYXRpb247Ci0rfSBHc3RUZnhkQm94OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RUZnJmQm94RW50cnkKLSt7Ci0rICBndWludDY0IHRpbWU7Ci0rICBndWludDY0IGR1cmF0aW9uOwotK30gR3N0VGZyZkJveEVudHJ5OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RUZnJmQm94Ci0rewotKyAgZ3VpbnQ4IHZlcnNpb247Ci0rICBndWludDMyIGZsYWdzOwotKwotKyAgZ2ludCBlbnRyaWVzX2NvdW50OwotKyAgR3N0VGZyZkJveEVudHJ5ICplbnRyaWVzOwotK30gR3N0VGZyZkJveDsKLSsKLSt0eXBlZGVmIGVudW0gX0dzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzCi0rewotKyAgR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0lOSVQsCi0rICBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfRklOSVNIRUQKLSt9IEdzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzOwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RNc3NGcmFnbWVudFBhcnNlcgotK3sKLSsgIEdzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzIHN0YXR1czsKLSsgIEdzdFRmeGRCb3ggdGZ4ZDsKLSsgIEdzdFRmcmZCb3ggdGZyZjsKLSt9IEdzdE1zc0ZyYWdtZW50UGFyc2VyOwotKwotK3ZvaWQgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfaW5pdCAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIpOwotK3ZvaWQgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyKTsKLStnYm9vbGVhbiBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9hZGRfYnVmZmVyIChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0QnVmZmVyICogYnVmKTsKLSsKLStHX0VORF9ERUNMUwotKwotKyNlbmRpZiAvKiBfX0dTVF9NU1NfRlJBR01FTlRfUEFSU0VSX0hfXyAqLwotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotaW5kZXggMTQ0YmJiNDJkLi5lMTAzMWJhNTUgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotQEAgLTEsNSArMSw3IEBACi0gLyogR1N0cmVhbWVyCi0gICogQ29weXJpZ2h0IChDKSAyMDEyIFNtYXJ0IFRWIEFsbGlhbmNlCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCi0gICogIEF1dGhvcjogVGhpYWdvIFNvdXNhIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY29tPiwgQ29sbGFib3JhIEx0ZC4KLSAgKgotICAqIGdzdG1zc21hbmlmZXN0LmM6Ci1AQCAtMzEsNiArMzMsNyBAQAotICNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuaD4KLSAKLSAjaW5jbHVkZSAiZ3N0bXNzbWFuaWZlc3QuaCIKLSsjaW5jbHVkZSAiZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCIKLSAKLSBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChtc3NkZW11eF9kZWJ1Zyk7Ci0gI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXNzZGVtdXhfZGVidWcKLUBAIC03NCwxMiArNzcsMTcgQEAgc3RydWN0IF9Hc3RNc3NTdHJlYW0KLSAgIGdib29sZWFuIGFjdGl2ZTsgICAgICAgICAgICAgIC8qIGlmIHRoZSBzdHJlYW0gaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgKi8KLSAgIGdpbnQgc2VsZWN0ZWRRdWFsaXR5SW5kZXg7Ci0gCi0rICBnYm9vbGVhbiBoYXNfbGl2ZV9mcmFnbWVudHM7Ci0rICBHc3RBZGFwdGVyICpsaXZlX2FkYXB0ZXI7Ci0rCi0gICBHTGlzdCAqZnJhZ21lbnRzOwotICAgR0xpc3QgKnF1YWxpdGllczsKLSAKLSAgIGdjaGFyICp1cmw7Ci0gICBnY2hhciAqbGFuZzsKLSAKLSsgIEdzdE1zc0ZyYWdtZW50UGFyc2VyIGZyYWdtZW50X3BhcnNlcjsKLSsKLSAgIGd1aW50IGZyYWdtZW50X3JlcGV0aXRpb25faW5kZXg7Ci0gICBHTGlzdCAqY3VycmVudF9mcmFnbWVudDsKLSAgIEdMaXN0ICpjdXJyZW50X3F1YWxpdHk7Ci1AQCAtOTYsNiArMTA0LDcgQEAgc3RydWN0IF9Hc3RNc3NNYW5pZmVzdAotIAotICAgZ2Jvb2xlYW4gaXNfbGl2ZTsKLSAgIGdpbnQ2NCBkdnJfd2luZG93OwotKyAgZ3VpbnQ2NCBsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50OwotIAotICAgR1N0cmluZyAqcHJvdGVjdGlvbl9zeXN0ZW1faWQ7Ci0gICBnY2hhciAqcHJvdGVjdGlvbl9kYXRhOwotQEAgLTIzNSw3ICsyNDQsOCBAQCBjb21wYXJlX2JpdHJhdGUgKEdzdE1zc1N0cmVhbVF1YWxpdHkgKiBhLCBHc3RNc3NTdHJlYW1RdWFsaXR5ICogYikKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1fZ3N0X21zc19zdHJlYW1faW5pdCAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCB4bWxOb2RlUHRyIG5vZGUpCi0rX2dzdF9tc3Nfc3RyZWFtX2luaXQgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwKLSsgICAgeG1sTm9kZVB0ciBub2RlKQotIHsKLSAgIHhtbE5vZGVQdHIgaXRlcjsKLSAgIEdzdE1zc0ZyYWdtZW50TGlzdEJ1aWxkZXIgYnVpbGRlcjsKLUBAIC0yNDgsOSArMjU4LDIxIEBAIF9nc3RfbXNzX3N0cmVhbV9pbml0IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIHhtbE5vZGVQdHIgbm9kZSkKLSAgIHN0cmVhbS0+dXJsID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopIE1TU19QUk9QX1VSTCk7Ci0gICBzdHJlYW0tPmxhbmcgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobm9kZSwgKHhtbENoYXIgKikgTVNTX1BST1BfTEFOR1VBR0UpOwotIAotKyAgLyogZm9yIGxpdmUgcGxheWJhY2sgZWFjaCBmcmFnbWVudCB1c3VhbGx5IGhhcyB0aW1pbmcKLSsgICAqIGluZm9ybWF0aW9uIGZvciB0aGUgZmV3IG5leHQgbG9vay1haGVhZCBmcmFnbWVudHMgc28gdGhlCi0rICAgKiBwbGF5bGlzdCBjYW4gYmUgYnVpbHQgaW5jcmVtZW50YWxseSBmcm9tIHRoZSBmaXJzdCBmcmFnbWVudAotKyAgICogb2YgdGhlIG1hbmlmZXN0LgotKyAgICovCi0rCi0rICBHU1RfREVCVUcgKCJMaXZlIHN0cmVhbTogJXMsIGxvb2stYWhlYWQgZnJhZ21lbnRzOiAlIiBHX0dVSU5UNjRfRk9STUFULAotKyAgICAgIG1hbmlmZXN0LT5pc19saXZlID8gInllcyIgOiAibm8iLCBtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudCk7Ci0rICBzdHJlYW0tPmhhc19saXZlX2ZyYWdtZW50cyA9IG1hbmlmZXN0LT5pc19saXZlCi0rICAgICAgJiYgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQ7Ci0rCi0gICBmb3IgKGl0ZXIgPSBub2RlLT5jaGlsZHJlbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpIHsKLSAgICAgaWYgKG5vZGVfaGFzX3R5cGUgKGl0ZXIsIE1TU19OT0RFX1NUUkVBTV9GUkFHTUVOVCkpIHsKLS0gICAgICBnc3RfbXNzX2ZyYWdtZW50X2xpc3RfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCBpdGVyKTsKLSsgICAgICBpZiAoIXN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzIHx8ICFidWlsZGVyLmZyYWdtZW50cykKLSsgICAgICAgIGdzdF9tc3NfZnJhZ21lbnRfbGlzdF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsIGl0ZXIpOwotICAgICB9IGVsc2UgaWYgKG5vZGVfaGFzX3R5cGUgKGl0ZXIsIE1TU19OT0RFX1NUUkVBTV9RVUFMSVRZKSkgewotICAgICAgIEdzdE1zc1N0cmVhbVF1YWxpdHkgKnF1YWxpdHkgPSBnc3RfbXNzX3N0cmVhbV9xdWFsaXR5X25ldyAoaXRlcik7Ci0gICAgICAgc3RyZWFtLT5xdWFsaXRpZXMgPSBnX2xpc3RfcHJlcGVuZCAoc3RyZWFtLT5xdWFsaXRpZXMsIHF1YWxpdHkpOwotQEAgLTI1OSwxNyArMjgxLDI0IEBAIF9nc3RfbXNzX3N0cmVhbV9pbml0IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIHhtbE5vZGVQdHIgbm9kZSkKLSAgICAgfQotICAgfQotIAotLSAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfcmV2ZXJzZSAoYnVpbGRlci5mcmFnbWVudHMpOwotKyAgaWYgKHN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzKSB7Ci0rICAgIHN0cmVhbS0+bGl2ZV9hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOwotKyAgfQotKwotKyAgaWYgKGJ1aWxkZXIuZnJhZ21lbnRzKSB7Ci0rICAgIHN0cmVhbS0+ZnJhZ21lbnRzID0gZ19saXN0X3JldmVyc2UgKGJ1aWxkZXIuZnJhZ21lbnRzKTsKLSsgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gc3RyZWFtLT5mcmFnbWVudHM7Ci0rICB9Ci0gCi0gICAvKiBvcmRlciB0aGVtIGZyb20gc21hbGxlciB0byBiaWdnZXIgYmFzZWQgb24gYml0cmF0ZXMgKi8KLSAgIHN0cmVhbS0+cXVhbGl0aWVzID0KLSAgICAgICBnX2xpc3Rfc29ydCAoc3RyZWFtLT5xdWFsaXRpZXMsIChHQ29tcGFyZUZ1bmMpIGNvbXBhcmVfYml0cmF0ZSk7Ci0tCi0tICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBzdHJlYW0tPmZyYWdtZW50czsKLSAgIHN0cmVhbS0+Y3VycmVudF9xdWFsaXR5ID0gc3RyZWFtLT5xdWFsaXRpZXM7Ci0gCi0gICBzdHJlYW0tPnJlZ2V4X2JpdHJhdGUgPSBnX3JlZ2V4X25ldyAoIlxce1tCYl1pdHJhdGVcXH0iLCAwLCAwLCBOVUxMKTsKLSAgIHN0cmVhbS0+cmVnZXhfcG9zaXRpb24gPSBnX3JlZ2V4X25ldyAoIlxce3N0YXJ0WyBfXXRpbWVcXH0iLCAwLCAwLCBOVUxMKTsKLSsKLSsgIGdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2luaXQgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0gfQotIAotIAotQEAgLTMxNSw2ICszNDQsNyBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgIHhtbE5vZGVQdHIgbm9kZWl0ZXI7Ci0gICBnY2hhciAqbGl2ZV9zdHI7Ci0gICBHc3RNYXBJbmZvIG1hcGluZm87Ci0rICBnY2hhciAqbG9va19haGVhZF9mcmFnbWVudF9jb3VudF9zdHI7Ci0gCi0gICBpZiAoIWdzdF9idWZmZXJfbWFwIChkYXRhLCAmbWFwaW5mbywgR1NUX01BUF9SRUFEKSkgewotICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMzUsNiArMzY1LDcgQEAgZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCi0gICAvKiB0aGUgZW50aXJlIGZpbGUgaXMgYWx3YXlzIGF2YWlsYWJsZSBmb3Igbm9uLWxpdmUgc3RyZWFtcyAqLwotICAgaWYgKCFtYW5pZmVzdC0+aXNfbGl2ZSkgewotICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0rICAgIG1hbmlmZXN0LT5sb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50ID0gMDsKLSAgIH0gZWxzZSB7Ci0gICAgIC8qIGlmIDAsIG9yIG5vbi1leGlzdGVudCwgdGhlIGxlbmd0aCBpcyBpbmZpbml0ZSAqLwotICAgICBnY2hhciAqZHZyX3dpbmRvd19zdHIgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAocm9vdCwKLUBAIC0zNDYsNiArMzc3LDE3IEBAIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQotICAgICAgICAgbWFuaWZlc3QtPmR2cl93aW5kb3cgPSAwOwotICAgICAgIH0KLSAgICAgfQotKwotKyAgICBsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50X3N0ciA9Ci0rICAgICAgICAoZ2NoYXIgKikgeG1sR2V0UHJvcCAocm9vdCwgKHhtbENoYXIgKikgIkxvb2tBaGVhZEZyYWdtZW50Q291bnQiKTsKLSsgICAgaWYgKGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyKSB7Ci0rICAgICAgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPQotKyAgICAgICAgICBnX2FzY2lpX3N0cnRvdWxsIChsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50X3N0ciwgTlVMTCwgMTApOwotKyAgICAgIHhtbEZyZWUgKGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyKTsKLSsgICAgICBpZiAobWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPD0gMCkgewotKyAgICAgICAgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPSAwOwotKyAgICAgIH0KLSsgICAgfQotICAgfQotIAotICAgZm9yIChub2RlaXRlciA9IHJvb3QtPmNoaWxkcmVuOyBub2RlaXRlcjsgbm9kZWl0ZXIgPSBub2RlaXRlci0+bmV4dCkgewotQEAgLTM1NCw3ICszOTYsNyBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgICAgICBHc3RNc3NTdHJlYW0gKnN0cmVhbSA9IGdfbmV3MCAoR3N0TXNzU3RyZWFtLCAxKTsKLSAKLSAgICAgICBtYW5pZmVzdC0+c3RyZWFtcyA9IGdfc2xpc3RfYXBwZW5kIChtYW5pZmVzdC0+c3RyZWFtcywgc3RyZWFtKTsKLS0gICAgICBfZ3N0X21zc19zdHJlYW1faW5pdCAoc3RyZWFtLCBub2RlaXRlcik7Ci0rICAgICAgX2dzdF9tc3Nfc3RyZWFtX2luaXQgKG1hbmlmZXN0LCBzdHJlYW0sIG5vZGVpdGVyKTsKLSAgICAgfQotIAotICAgICBpZiAobm9kZWl0ZXItPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERQotQEAgLTM3MSw2ICs0MTMsMTEgQEAgZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCi0gc3RhdGljIHZvaWQKLSBnc3RfbXNzX3N0cmVhbV9mcmVlIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0gewotKyAgaWYgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKSB7Ci0rICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzdHJlYW0tPmxpdmVfYWRhcHRlcik7Ci0rICAgIGdfb2JqZWN0X3VucmVmIChzdHJlYW0tPmxpdmVfYWRhcHRlcik7Ci0rICB9Ci0rCi0gICBnX2xpc3RfZnJlZV9mdWxsIChzdHJlYW0tPmZyYWdtZW50cywgZ19mcmVlKTsKLSAgIGdfbGlzdF9mcmVlX2Z1bGwgKHN0cmVhbS0+cXVhbGl0aWVzLAotICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X21zc19zdHJlYW1fcXVhbGl0eV9mcmVlKTsKLUBAIC0zNzksNiArNDI2LDcgQEAgZ3N0X21zc19zdHJlYW1fZnJlZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotICAgZ19yZWdleF91bnJlZiAoc3RyZWFtLT5yZWdleF9wb3NpdGlvbik7Ci0gICBnX3JlZ2V4X3VucmVmIChzdHJlYW0tPnJlZ2V4X2JpdHJhdGUpOwotICAgZ19mcmVlIChzdHJlYW0pOwotKyAgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0gfQotIAotIHZvaWQKLUBAIC0xMDc5LDYgKzExMjcsOSBAQCBHc3RGbG93UmV0dXJuCi0gZ3N0X21zc19zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotIHsKLSAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudDsKLSsgIGNvbnN0IGdjaGFyICpzdHJlYW1fdHlwZV9uYW1lID0KLSsgICAgICBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKGdzdF9tc3Nfc3RyZWFtX2dldF90eXBlIChzdHJlYW0pKTsKLSsKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0tPmFjdGl2ZSwgR1NUX0ZMT1dfRVJST1IpOwotIAotICAgaWYgKHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9PSBOVUxMKQotQEAgLTEwODYsMTQgKzExMzcsMjAgQEAgZ3N0X21zc19zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotIAotICAgZnJhZ21lbnQgPSBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGE7Ci0gICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXgrKzsKLS0gIGlmIChzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPCBmcmFnbWVudC0+cmVwZXRpdGlvbnMpIHsKLS0gICAgcmV0dXJuIEdTVF9GTE9XX09LOwotLSAgfQotKyAgaWYgKHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA8IGZyYWdtZW50LT5yZXBldGl0aW9ucykKLSsgICAgZ290byBiZWFjaDsKLSAKLSAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9IDA7Ci0gICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBnX2xpc3RfbmV4dCAoc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50KTsKLSsKLSsgIEdTVF9ERUJVRyAoIkFkdmFuY2VkIHRvIGZyYWdtZW50ICMlZCBvbiAlcyBzdHJlYW0iLCBmcmFnbWVudC0+bnVtYmVyLAotKyAgICAgIHN0cmVhbV90eXBlX25hbWUpOwotICAgaWYgKHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9PSBOVUxMKQotICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOwotKwotK2JlYWNoOgotKyAgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0rICBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9pbml0ICgmc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIpOwotICAgcmV0dXJuIEdTVF9GTE9XX09LOwotIH0KLSAKLUBAIC0xMTczLDYgKzEyMzAsMTEgQEAgZ3N0X21zc19zdHJlYW1fc2VlayAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLAotICAgR1NUX0RFQlVHICgiU3RyZWFtICVzIHNlZWtpbmcgdG8gJSIgR19HVUlOVDY0X0ZPUk1BVCwgc3RyZWFtLT51cmwsIHRpbWUpOwotICAgZm9yIChpdGVyID0gc3RyZWFtLT5mcmFnbWVudHM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKLSAgICAgZnJhZ21lbnQgPSBpdGVyLT5kYXRhOwotKyAgICBpZiAoc3RyZWFtLT5oYXNfbGl2ZV9mcmFnbWVudHMpIHsKLSsgICAgICBpZiAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+cmVwZXRpdGlvbnMgKiBmcmFnbWVudC0+ZHVyYXRpb24gPiB0aW1lKQotKyAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gaXRlcjsKLSsgICAgICBicmVhazsKLSsgICAgfQotICAgICBpZiAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+cmVwZXRpdGlvbnMgKiBmcmFnbWVudC0+ZHVyYXRpb24gPiB0aW1lKSB7Ci0gICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gaXRlcjsKLSAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPQotQEAgLTEyNTYsOSArMTMxOCwxNCBAQCBzdGF0aWMgdm9pZAotIGdzdF9tc3Nfc3RyZWFtX3JlbG9hZF9mcmFnbWVudHMgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgeG1sTm9kZVB0ciBzdHJlYW1JbmRleCkKLSB7Ci0gICB4bWxOb2RlUHRyIGl0ZXI7Ci0tICBndWludDY0IGN1cnJlbnRfZ3N0X3RpbWUgPSBnc3RfbXNzX3N0cmVhbV9nZXRfZnJhZ21lbnRfZ3N0X3RpbWVzdGFtcCAoc3RyZWFtKTsKLSsgIGd1aW50NjQgY3VycmVudF9nc3RfdGltZTsKLSAgIEdzdE1zc0ZyYWdtZW50TGlzdEJ1aWxkZXIgYnVpbGRlcjsKLSAKLSsgIGlmIChzdHJlYW0tPmhhc19saXZlX2ZyYWdtZW50cykKLSsgICAgcmV0dXJuOwotKwotKyAgY3VycmVudF9nc3RfdGltZSA9IGdzdF9tc3Nfc3RyZWFtX2dldF9mcmFnbWVudF9nc3RfdGltZXN0YW1wIChzdHJlYW0pOwotKwotICAgZ3N0X21zc19mcmFnbWVudF9saXN0X2J1aWxkZXJfaW5pdCAoJmJ1aWxkZXIpOwotIAotICAgR1NUX0RFQlVHICgiQ3VycmVudCBwb3NpdGlvbjogJSIgR1NUX1RJTUVfRk9STUFULAotQEAgLTE1MTQsMyArMTU4MSw3NCBAQCBnc3RfbXNzX21hbmlmZXN0X2dldF9saXZlX3NlZWtfcmFuZ2UgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIGdpbnQ2NCAqIHN0YXJ0LAotIAotICAgcmV0dXJuIHJldDsKLSB9Ci0rCi0rdm9pZAotK2dzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX3B1c2ggKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKQotK3sKLSsgIGdzdF9hZGFwdGVyX3B1c2ggKHN0cmVhbS0+bGl2ZV9hZGFwdGVyLCBidWZmZXIpOwotK30KLSsKLStnc2l6ZQotK2dzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX2F2YWlsYWJsZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotK3sKLSsgIHJldHVybiBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKTsKLSt9Ci0rCi0rR3N0QnVmZmVyICoKLStnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl90YWtlX2J1ZmZlciAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnc2l6ZSBuYnl0ZXMpCi0rewotKyAgcmV0dXJuIGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyIChzdHJlYW0tPmxpdmVfYWRhcHRlciwgbmJ5dGVzKTsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3RfbXNzX3N0cmVhbV9mcmFnbWVudF9wYXJzaW5nX25lZWRlZCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotK3sKLSsgIHJldHVybiBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci5zdGF0dXMgPT0gR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0lOSVQ7Ci0rfQotKwotK3ZvaWQKLStnc3RfbXNzX3N0cmVhbV9wYXJzZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBHc3RCdWZmZXIgKiBidWZmZXIpCi0rewotKyAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmN1cnJlbnRfZnJhZ21lbnQgPSBOVUxMOwotKyAgY29uc3QgZ2NoYXIgKnN0cmVhbV90eXBlX25hbWU7Ci0rICBndWludDggaW5kZXg7Ci0rCi0rICBpZiAoIXN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoIWdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2FkZF9idWZmZXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlciwgYnVmZmVyKSkKLSsgICAgcmV0dXJuOwotKwotKyAgY3VycmVudF9mcmFnbWVudCA9IHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudC0+ZGF0YTsKLSsgIGN1cnJlbnRfZnJhZ21lbnQtPnRpbWUgPSBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci50ZnhkLnRpbWU7Ci0rICBjdXJyZW50X2ZyYWdtZW50LT5kdXJhdGlvbiA9IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmeGQuZHVyYXRpb247Ci0rCi0rICBzdHJlYW1fdHlwZV9uYW1lID0KLSsgICAgICBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKGdzdF9tc3Nfc3RyZWFtX2dldF90eXBlIChzdHJlYW0pKTsKLSsKLSsgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmcmYuZW50cmllc19jb3VudDsgaW5kZXgrKykgewotKyAgICBHTGlzdCAqbCA9IGdfbGlzdF9sYXN0IChzdHJlYW0tPmZyYWdtZW50cyk7Ci0rICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpsYXN0OwotKyAgICBHc3RNc3NTdHJlYW1GcmFnbWVudCAqZnJhZ21lbnQ7Ci0rCi0rICAgIGlmIChsID09IE5VTEwpCi0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGxhc3QgPSAoR3N0TXNzU3RyZWFtRnJhZ21lbnQgKikgbC0+ZGF0YTsKLSsKLSsgICAgaWYgKGxhc3QtPnRpbWUgPT0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzW2luZGV4XS50aW1lKQotKyAgICAgIGNvbnRpbnVlOwotKwotKyAgICBmcmFnbWVudCA9IGdfbmV3IChHc3RNc3NTdHJlYW1GcmFnbWVudCwgMSk7Ci0rICAgIGZyYWdtZW50LT5udW1iZXIgPSBsYXN0LT5udW1iZXIgKyAxOwotKyAgICBmcmFnbWVudC0+cmVwZXRpdGlvbnMgPSAxOwotKyAgICBmcmFnbWVudC0+dGltZSA9IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmcmYuZW50cmllc1tpbmRleF0udGltZTsKLSsgICAgZnJhZ21lbnQtPmR1cmF0aW9uID0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzW2luZGV4XS5kdXJhdGlvbjsKLSsKLSsgICAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfYXBwZW5kIChzdHJlYW0tPmZyYWdtZW50cywgZnJhZ21lbnQpOwotKyAgICBHU1RfTE9HICgiQWRkaW5nIGZyYWdtZW50IG51bWJlcjogJXUgdG8gJXMgc3RyZWFtLCB0aW1lOiAlIiBHX0dVSU5UNjRfRk9STUFUCi0rICAgICAgICAiLCBkdXJhdGlvbjogJSIgR19HVUlOVDY0X0ZPUk1BVCAiLCByZXBldGl0aW9uczogJXUiLAotKyAgICAgICAgZnJhZ21lbnQtPm51bWJlciwgc3RyZWFtX3R5cGVfbmFtZSwKLSsgICAgICAgIGZyYWdtZW50LT50aW1lLCBmcmFnbWVudC0+ZHVyYXRpb24sIGZyYWdtZW50LT5yZXBldGl0aW9ucyk7Ci0rICB9Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotaW5kZXggNmI3YjFmOTcxLi4wM2IwNjZhZTUgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0gI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgotIAotIEdfQkVHSU5fREVDTFMKLSAKLUBAIC03Myw1ICs3NCwxMSBAQCBjb25zdCBnY2hhciAqIGdzdF9tc3Nfc3RyZWFtX2dldF9sYW5nIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwotIAotIGNvbnN0IGdjaGFyICogZ3N0X21zc19zdHJlYW1fdHlwZV9uYW1lIChHc3RNc3NTdHJlYW1UeXBlIHN0cmVhbXR5cGUpOwotIAotK3ZvaWQgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfcHVzaChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0rZ3NpemUgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfYXZhaWxhYmxlKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0rR3N0QnVmZmVyICogZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfdGFrZV9idWZmZXIoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnc2l6ZSBuYnl0ZXMpOwotK2dib29sZWFuIGdzdF9tc3Nfc3RyZWFtX2ZyYWdtZW50X3BhcnNpbmdfbmVlZGVkKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0rdm9pZCBnc3RfbXNzX3N0cmVhbV9wYXJzZV9mcmFnbWVudChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0rCi0gR19FTkRfREVDTFMKLSAjZW5kaWYgLyogX19HU1RfTVNTX01BTklGRVNUX0hfXyAqLwotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwotaW5kZXggNjM0ZTRmMzg4Li5kZGNhNzI2YjYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmMKLSsrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwotQEAgLTI5MSw2ICsyOTEsOSBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfd2FpdF91bnRpbCAoR3N0Q2xvY2sgKiBjbG9jaywgR0NvbmQgKiBjb25kLCBHTXV0ZXggKiBtdXRleCwKLSAgICAgR3N0Q2xvY2tUaW1lIGVuZF90aW1lKTsKLSBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FkYXB0aXZlX2RlbXV4X2Nsb2NrX2NhbGxiYWNrIChHc3RDbG9jayAqIGNsb2NrLAotICAgICBHc3RDbG9ja1RpbWUgdGltZSwgR3N0Q2xvY2tJRCBpZCwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfYWRhcHRpdmVfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGVfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eAotKyAgICAqIGRlbXV4KTsKLSAKLSAvKiB3ZSBjYW4ndCB1c2UgR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSBiZWNhdXNlIHdlIG5lZWQgdGhlIGtsYXNzIGluIHRoZSBfaW5pdAotICAqIG1ldGhvZCB0byBnZXQgdG8gdGhlIHBhZHRlbXBsYXRlcyAqLwotQEAgLTQxMiw2ICs0MTUsOSBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfY2xhc3NfaW5pdCAoR3N0QWRhcHRpdmVEZW11eENsYXNzICoga2xhc3MpCi0gICBrbGFzcy0+ZGF0YV9yZWNlaXZlZCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZGF0YV9yZWNlaXZlZF9kZWZhdWx0OwotICAga2xhc3MtPmZpbmlzaF9mcmFnbWVudCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZmluaXNoX2ZyYWdtZW50X2RlZmF1bHQ7Ci0gICBrbGFzcy0+dXBkYXRlX21hbmlmZXN0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kZWZhdWx0OwotKyAga2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlID0KLSsgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGVfZGVmYXVsdDsKLSsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC02ODYsNyArNjkyLDkgQEAgZ3N0X2FkYXB0aXZlX2RlbXV4X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgICAgICAgICAgIGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzayA9IEZBTFNFOwotICAgICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7Ci0gICAgICAgICAgICAgLyogVGFzayB0byBwZXJpb2RpY2FsbHkgdXBkYXRlIHRoZSBtYW5pZmVzdCAqLwotLSAgICAgICAgICAgIGdzdF90YXNrX3N0YXJ0IChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSsgICAgICAgICAgICBpZiAoZGVtdXhfY2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChkZW11eCkpIHsKLSsgICAgICAgICAgICAgIGdzdF90YXNrX3N0YXJ0IChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIC8qIG5vIHN0cmVhbXMgKi8KLUBAIC0yMTI1LDYgKzIxMzMsMTMgQEAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kYXRhX3JlY2VpdmVkX2RlZmF1bHQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgIHJldHVybiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3B1c2hfYnVmZmVyIChzdHJlYW0sIGJ1ZmZlcik7Ci0gfQotIAotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9hZGFwdGl2ZV9kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZV9kZWZhdWx0IChHc3RBZGFwdGl2ZURlbXV4Ci0rICAgICogZGVtdXgpCi0rewotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gX3NyY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSB7Ci1AQCAtMzMzOCw3ICszMzUzLDE1IEBAIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfbG9vcCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKLSAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkVPUywgY2hlY2tpbmcgdG8gc3RvcCBkb3dubG9hZCBsb29wIik7Ci0gICAgICAgLyogd2UgcHVzaCB0aGUgRU9TIGFmdGVyIHJlbGVhc2luZyB0aGUgb2JqZWN0IGxvY2sgKi8KLSAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewotLSAgICAgICAgaWYgKGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fd2FpdF9tYW5pZmVzdF91cGRhdGUgKGRlbXV4LCBzdHJlYW0pKSB7Ci0rICAgICAgICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmRlbXV4X2NsYXNzID0KLSsgICAgICAgICAgICBHU1RfQURBUFRJVkVfREVNVVhfR0VUX0NMQVNTIChkZW11eCk7Ci0rCi0rICAgICAgICAvKiB0aGlzIG1pZ2h0IGJlIGEgZnJhZ21lbnQgZG93bmxvYWQgZXJyb3IsIHJlZnJlc2ggdGhlIG1hbmlmZXN0LCBqdXN0IGluIGNhc2UgKi8KLSsgICAgICAgIGlmICghZGVtdXhfY2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChkZW11eCkpIHsKLSsgICAgICAgICAgcmV0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoZGVtdXgpOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0gZWxzZSBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV93YWl0X21hbmlmZXN0X3VwZGF0ZSAoZGVtdXgsCi0rICAgICAgICAgICAgICAgIHN0cmVhbSkpIHsKLSAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaCBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAotaW5kZXggNzgwZjRkOTNmLi45YTFhMWI3ZDEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmgKLSsrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAotQEAgLTQ1OSw2ICs0NTksMjAgQEAgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4Q2xhc3MKLSAgICAqIHNlbGVjdGVkIHBlcmlvZC4KLSAgICAqLwotICAgR3N0Q2xvY2tUaW1lICgqZ2V0X3BlcmlvZF9zdGFydF90aW1lKSAoR3N0QWRhcHRpdmVEZW11eCAqZGVtdXgpOwotKwotKyAgLyoqCi0rICAgKiByZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZToKLSsgICAqIEBkZW11eDogI0dzdEFkYXB0aXZlRGVtdXgKLSsgICAqCi0rICAgKiBTb21lIGFkYXB0aXZlIHN0cmVhbWluZyBwcm90b2NvbHMgYWxsb3cgdGhlIGNsaWVudCB0byBkb3dubG9hZAotKyAgICogdGhlIHBsYXlsaXN0IG9uY2UgYW5kIGJ1aWxkIHVwIHRoZSBmcmFnbWVudCBsaXN0IGJhc2VkIG9uIHRoZQotKyAgICogY3VycmVudCBmcmFnbWVudCBtZXRhZGF0YS4gRm9yIHRob3NlIHByb3RvY29scyB0aGUgZGVtdXhlcgotKyAgICogZG9lc24ndCBuZWVkIHRvIHBlcmlvZGljYWxseSByZWZyZXNoIHRoZSBwbGF5bGlzdC4gVGhpcyB2ZnVuYwotKyAgICogaXMgcmVsZXZhbnQgb25seSBmb3IgbGl2ZSBwbGF5YmFjayBzY2VuYXJpb3MuCi0rICAgKgotKyAgICogUmV0dXJuOiAlVFJVRSBpZiB0aGUgcGxheWxpc3QgbmVlZHMgdG8gYmUgcmVmcmVzaGVkIHBlcmlvZGljYWxseSBieSB0aGUgZGVtdXhlci4KLSsgICAqLwotKyAgZ2Jvb2xlYW4gKCpyZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZSkgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7Ci0gfTsKLSAKLSBHVHlwZSAgICBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3R5cGUgKHZvaWQpOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctaW1wbGVtZW50LWFkYXB0aXZlZGVtdXgtcy1nZXRfbGl2ZV9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctaW1wbGVtZW50LWFkYXB0aXZlZGVtdXgtcy1nZXRfbGl2ZV9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmQyOWUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtc21vb3Roc3RyZWFtaW5nLWltcGxlbWVudC1hZGFwdGl2ZWRlbXV4LXMtZ2V0X2xpdmVfcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1Gcm9tIGU5MTc4ZmEwODIxMTZkNGJmNzMzYjE4NGE4YjY5NTExMTJjMTc5MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Ci1EYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDE3OjE4OjM2ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNtb290aHN0cmVhbWluZzogaW1wbGVtZW50IGFkYXB0aXZlZGVtdXgncwotIGdldF9saXZlX3NlZWtfcmFuZ2UoKQotCi1BbGxvd3Mgc2Vla2luZyB0aHJvdWdoIHRoZSBhdmFpbGFibGUgZnJhZ21lbnRzIHRoYXQgYXJlIHN0aWxsIGF2YWlsYWJsZQotb24gdGhlIHNlcnZlciBhcyBzcGVjaWZpZWQgYnkgdGhlIERWUldpbmRvd0xlbmd0aCBhdHRyaWJ1dGUgaW4gdGhlCi1tYW5pZmVzdC4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDE3OAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jICAgIHwgMTMgKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1pbmRleCA5ZDBhZWNlMmIuLmI2NmUxOTUxNCAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1AQCAtMTM4LDYgKzEzOCw4IEBAIGdzdF9tc3NfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0rICAgIGdpbnQ2NCAqIHN0YXJ0LCBnaW50NjQgKiBzdG9wKTsKLSAKLSBzdGF0aWMgdm9pZAotIGdzdF9tc3NfZGVtdXhfY2xhc3NfaW5pdCAoR3N0TXNzRGVtdXhDbGFzcyAqIGtsYXNzKQotQEAgLTE5Miw2ICsxOTQsOCBAQCBnc3RfbXNzX2RlbXV4X2NsYXNzX2luaXQgKEdzdE1zc0RlbXV4Q2xhc3MgKiBrbGFzcykKLSAgICAgICBnc3RfbXNzX2RlbXV4X3N0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbzsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPnVwZGF0ZV9tYW5pZmVzdF9kYXRhID0KLSAgICAgICBnc3RfbXNzX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kYXRhOwotKyAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+Z2V0X2xpdmVfc2Vla19yYW5nZSA9Ci0rICAgICAgZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlOwotIAotICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG1zc2RlbXV4X2RlYnVnLCAibXNzZGVtdXgiLCAwLCAibXNzZGVtdXggcGx1Z2luIik7Ci0gfQotQEAgLTY1OSwzICs2NjMsMTIgQEAgZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgZ3N0X21zc19tYW5pZmVzdF9yZWxvYWRfZnJhZ21lbnRzIChtc3NkZW11eC0+bWFuaWZlc3QsIGJ1ZmZlcik7Ci0gICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9tc3NfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBnaW50NjQgKiBzdGFydCwKLSsgICAgZ2ludDY0ICogc3RvcCkKLSt7Ci0rICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKLSsKLSsgIHJldHVybiBnc3RfbXNzX21hbmlmZXN0X2dldF9saXZlX3NlZWtfcmFuZ2UgKG1zc2RlbXV4LT5tYW5pZmVzdCwgc3RhcnQsIHN0b3ApOwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLWluZGV4IDFiNzJlOGRlMS4uMzE3YjNjZWY5IDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLUBAIC00Miw2ICs0Miw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKG1zc2RlbXV4X2RlYnVnKTsKLSAKLSAjZGVmaW5lIE1TU19QUk9QX0JJVFJBVEUgICAgICAgICAgICAgICJCaXRyYXRlIgotICNkZWZpbmUgTVNTX1BST1BfRFVSQVRJT04gICAgICAgICAgICAgImQiCi0rI2RlZmluZSBNU1NfUFJPUF9EVlJfV0lORE9XX0xFTkdUSCAgICAiRFZSV2luZG93TGVuZ3RoIgotICNkZWZpbmUgTVNTX1BST1BfTEFOR1VBR0UgICAgICAgICAgICAgIkxhbmd1YWdlIgotICNkZWZpbmUgTVNTX1BST1BfTlVNQkVSICAgICAgICAgICAgICAgIm4iCi0gI2RlZmluZSBNU1NfUFJPUF9SRVBFVElUSU9OUyAgICAgICAgICAiciIKLUBAIC05NCw2ICs5NSw3IEBAIHN0cnVjdCBfR3N0TXNzTWFuaWZlc3QKLSAgIHhtbE5vZGVQdHIgeG1scm9vdG5vZGU7Ci0gCi0gICBnYm9vbGVhbiBpc19saXZlOwotKyAgZ2ludDY0IGR2cl93aW5kb3c7Ci0gCi0gICBHU3RyaW5nICpwcm90ZWN0aW9uX3N5c3RlbV9pZDsKLSAgIGdjaGFyICpwcm90ZWN0aW9uX2RhdGE7Ci1AQCAtMzMwLDYgKzMzMiwyMiBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgICAgeG1sRnJlZSAobGl2ZV9zdHIpOwotICAgfQotIAotKyAgLyogdGhlIGVudGlyZSBmaWxlIGlzIGFsd2F5cyBhdmFpbGFibGUgZm9yIG5vbi1saXZlIHN0cmVhbXMgKi8KLSsgIGlmICghbWFuaWZlc3QtPmlzX2xpdmUpIHsKLSsgICAgbWFuaWZlc3QtPmR2cl93aW5kb3cgPSAwOwotKyAgfSBlbHNlIHsKLSsgICAgLyogaWYgMCwgb3Igbm9uLWV4aXN0ZW50LCB0aGUgbGVuZ3RoIGlzIGluZmluaXRlICovCi0rICAgIGdjaGFyICpkdnJfd2luZG93X3N0ciA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChyb290LAotKyAgICAgICAgKHhtbENoYXIgKikgTVNTX1BST1BfRFZSX1dJTkRPV19MRU5HVEgpOwotKyAgICBpZiAoZHZyX3dpbmRvd19zdHIpIHsKLSsgICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IGdfYXNjaWlfc3RydG91bGwgKGR2cl93aW5kb3dfc3RyLCBOVUxMLCAxMCk7Ci0rICAgICAgeG1sRnJlZSAoZHZyX3dpbmRvd19zdHIpOwotKyAgICAgIGlmIChtYW5pZmVzdC0+ZHZyX3dpbmRvdyA8PSAwKSB7Ci0rICAgICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0gICBmb3IgKG5vZGVpdGVyID0gcm9vdC0+Y2hpbGRyZW47IG5vZGVpdGVyOyBub2RlaXRlciA9IG5vZGVpdGVyLT5uZXh0KSB7Ci0gICAgIGlmIChub2RlaXRlci0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFCi0gICAgICAgICAmJiAoc3RyY21wICgoY29uc3QgY2hhciAqKSBub2RlaXRlci0+bmFtZSwgIlN0cmVhbUluZGV4IikgPT0gMCkpIHsKLUBAIC0xNDA2LDMgKzE0MjQsNjkgQEAgZ3N0X21zc19zdHJlYW1fZ2V0X2xhbmcgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSkKLSB7Ci0gICByZXR1cm4gc3RyZWFtLT5sYW5nOwotIH0KLSsKLStzdGF0aWMgR3N0Q2xvY2tUaW1lCi0rZ3N0X21zc19tYW5pZmVzdF9nZXRfZHZyX3dpbmRvd19sZW5ndGhfY2xvY2tfdGltZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKLSt7Ci0rICBnaW50NjQgdGltZXNjYWxlOwotKwotKyAgLyogdGhlIGVudGlyZSBmaWxlIGlzIGFsd2F5cyBhdmFpbGFibGUgZm9yIG5vbi1saXZlIHN0cmVhbXMgKi8KLSsgIGlmIChtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9PSAwKQotKyAgICByZXR1cm4gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsKLSsgIHRpbWVzY2FsZSA9IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3RpbWVzY2FsZSAobWFuaWZlc3QpOwotKyAgcmV0dXJuIChHc3RDbG9ja1RpbWUpIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAobWFuaWZlc3QtPmR2cl93aW5kb3csCi0rICAgICAgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X21zc19zdHJlYW1fZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnaW50NjQgKiBzdGFydCwKLSsgICAgZ2ludDY0ICogc3RvcCkKLSt7Ci0rICBHTGlzdCAqbDsKLSsgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudDsKLSsgIGd1aW50NjQgdGltZXNjYWxlID0gZ3N0X21zc19zdHJlYW1fZ2V0X3RpbWVzY2FsZSAoc3RyZWFtKTsKLSsKLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0tPmFjdGl2ZSwgRkFMU0UpOwotKwotKyAgLyogWFhYOiBhc3N1bWVzIGFsbCB0aGUgZGF0YSBpbiB0aGUgc3RyZWFtIGlzIHN0aWxsIGF2YWlsYWJsZSAqLwotKyAgbCA9IGdfbGlzdF9maXJzdCAoc3RyZWFtLT5mcmFnbWVudHMpOwotKyAgZnJhZ21lbnQgPSAoR3N0TXNzU3RyZWFtRnJhZ21lbnQgKikgbC0+ZGF0YTsKLSsgICpzdGFydCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAoZnJhZ21lbnQtPnRpbWUsIEdTVF9TRUNPTkQsIHRpbWVzY2FsZSk7Ci0rCi0rICBsID0gZ19saXN0X2xhc3QgKHN0cmVhbS0+ZnJhZ21lbnRzKTsKLSsgIGZyYWdtZW50ID0gKEdzdE1zc1N0cmVhbUZyYWdtZW50ICopIGwtPmRhdGE7Ci0rICAqc3RvcCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+ZHVyYXRpb24gKgotKyAgICAgIGZyYWdtZW50LT5yZXBldGl0aW9ucywgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKLSsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2ludDY0ICogc3RhcnQsCi0rICAgIGdpbnQ2NCAqIHN0b3ApCi0rewotKyAgR1NMaXN0ICppdGVyOwotKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0rCi0rICBmb3IgKGl0ZXIgPSBtYW5pZmVzdC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfc2xpc3RfbmV4dCAoaXRlcikpIHsKLSsgICAgR3N0TXNzU3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwotKwotKyAgICBpZiAoc3RyZWFtLT5hY3RpdmUpIHsKLSsgICAgICAvKiBGSVhNRTogYm91bmQgdGhpcyBjb3JyZWN0bHkgZm9yIG11bHRpcGxlIHN0cmVhbXMgKi8KLSsgICAgICBpZiAoIShyZXQgPSBnc3RfbXNzX3N0cmVhbV9nZXRfbGl2ZV9zZWVrX3JhbmdlIChzdHJlYW0sIHN0YXJ0LCBzdG9wKSkpCi0rICAgICAgICBicmVhazsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKHJldCAmJiBnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1hbmlmZXN0KSkgewotKyAgICBHc3RDbG9ja1RpbWUgZHZyX3dpbmRvdyA9Ci0rICAgICAgICBnc3RfbXNzX21hbmlmZXN0X2dldF9kdnJfd2luZG93X2xlbmd0aF9jbG9ja190aW1lIChtYW5pZmVzdCk7Ci0rCi0rICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHZyX3dpbmRvdykgJiYgKnN0b3AgLSAqc3RhcnQgPiBkdnJfd2luZG93KSB7Ci0rICAgICAgKnN0YXJ0ID0gKnN0b3AgLSBkdnJfd2luZG93OwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmggYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLWluZGV4IGFmNzQxOWMyMy4uNmI3YjFmOTcxIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLUBAIC01NCw2ICs1NCw3IEBAIHZvaWQgZ3N0X21zc19tYW5pZmVzdF9yZWxvYWRfZnJhZ21lbnRzIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBHc3RCdWZmZXIgKiBkCi0gR3N0Q2xvY2tUaW1lIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X21pbl9mcmFnbWVudF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci0gY29uc3QgZ2NoYXIgKiBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX3N5c3RlbV9pZCAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci0gY29uc3QgZ2NoYXIgKiBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX2RhdGEgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwotK2dib29sZWFuIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2ludDY0ICogc3RhcnQsIGdpbnQ2NCAqIHN0b3ApOwotIAotIEdzdE1zc1N0cmVhbVR5cGUgZ3N0X21zc19zdHJlYW1fZ2V0X3R5cGUgKEdzdE1zc1N0cmVhbSAqc3RyZWFtKTsKLSBHc3RDYXBzICogZ3N0X21zc19zdHJlYW1fZ2V0X2NhcHMgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNTEwNDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctdXNlLXRoZS1kdXJhdGlvbi1mcm9tLXRoZS1saXN0LW9mLWZyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSAwZmJlZThmMzc0MjdiODgzMzkxOTRiMjJiYTlhYTIxMDc3MmE4NjEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotRGF0ZTogVGh1LCAxMCBOb3YgMjAxNiAxNzoyMDoyNyArMTEwMAotU3ViamVjdDogW1BBVENIXSBzbW9vdGhzdHJlYW1pbmc6IHVzZSB0aGUgZHVyYXRpb24gZnJvbSB0aGUgbGlzdCBvZiBmcmFnbWVudHMKLSBpZiBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZlc3QKLQotUHJvdmlkZXMgYSBtb3JlIGFjY3VyYXRlIGR1cmF0aW9uIGZvciBsaXZlIHN0cmVhbXMgdGhhdCBtYXkgYmUgbWludXRlcwotb3IgaG91cnMgaW4gZnJvbnQgb2YgdGhlIGVhcmxpZXN0IGZyYWdtZW50LgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0MTc4Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1pbmRleCAzMTdiM2NlZjkuLjE0NGJiYjQyZCAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1AQCAtODg4LDYgKzg4OCw3IEBAIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2R1cmF0aW9uIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KQotICAgZ2NoYXIgKmR1cmF0aW9uOwotICAgZ3VpbnQ2NCBkdXIgPSAtMTsKLSAKLSsgIC8qIHRyeSB0aGUgcHJvcGVydHkgKi8KLSAgIGR1cmF0aW9uID0KLSAgICAgICAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobWFuaWZlc3QtPnhtbHJvb3Rub2RlLAotICAgICAgICh4bWxDaGFyICopIE1TU19QUk9QX1NUUkVBTV9EVVJBVElPTik7Ci1AQCAtODk1LDYgKzg5NiwyOSBAQCBnc3RfbXNzX21hbmlmZXN0X2dldF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKLSAgICAgZHVyID0gZ19hc2NpaV9zdHJ0b3VsbCAoZHVyYXRpb24sIE5VTEwsIDEwKTsKLSAgICAgeG1sRnJlZSAoZHVyYXRpb24pOwotICAgfQotKyAgLyogZWxzZSB1c2UgdGhlIGZyYWdtZW50IGxpc3QgKi8KLSsgIGlmIChkdXIgPD0gMCkgewotKyAgICBndWludDY0IG1heF9kdXIgPSAwOwotKyAgICBHU0xpc3QgKml0ZXI7Ci0rCi0rICAgIGZvciAoaXRlciA9IG1hbmlmZXN0LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19zbGlzdF9uZXh0IChpdGVyKSkgewotKyAgICAgIEdzdE1zc1N0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKLSsKLSsgICAgICBpZiAoc3RyZWFtLT5hY3RpdmUpIHsKLSsgICAgICAgIGlmIChzdHJlYW0tPmZyYWdtZW50cykgewotKyAgICAgICAgICBHTGlzdCAqbCA9IGdfbGlzdF9sYXN0IChzdHJlYW0tPmZyYWdtZW50cyk7Ci0rICAgICAgICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudCA9IChHc3RNc3NTdHJlYW1GcmFnbWVudCAqKSBsLT5kYXRhOwotKyAgICAgICAgICBndWludDY0IGZyYWdfZHVyID0KLSsgICAgICAgICAgICAgIGZyYWdtZW50LT50aW1lICsgZnJhZ21lbnQtPmR1cmF0aW9uICogZnJhZ21lbnQtPnJlcGV0aXRpb25zOwotKyAgICAgICAgICBtYXhfZHVyID0gTUFYIChmcmFnX2R1ciwgbWF4X2R1cik7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGlmIChtYXhfZHVyICE9IDApCi0rICAgICAgZHVyID0gbWF4X2R1cjsKLSsgIH0KLSsKLSAgIHJldHVybiBkdXI7Ci0gfQotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWE2MmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSAxNTIzYWI0NjJjMWJmMTkwNTU5NjBjZWQyNTVmNDg3MmI2Y2Y5ZjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowMDo0MiArMDMwMAorU3ViamVjdDogW1BBVENIIDEvMl0gdmtkaXNwbGF5OiBVc2UgaWZkZWYgZm9yIHBsYXRmb3JtIHNwZWNpZmljIGRlZmluZXMKKworVktfS0hSXypfU1VSRkFDRV9FWFRFTlNJT05fTkFNRSBhcmUgb25seSBhdmFpbGFibGUgd2hlbiBjb3JyZXNwb25kaW5nCitXU0kgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NTM5XQorLS0tCisgZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMgYi9leHQvdnVsa2FuL3ZrZGlzcGxheS5jCitpbmRleCA1NTAxMzRjZDguLmFkZTVkNDU4MyAxMDA2NDQKKy0tLSBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKKysrKyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKK0BAIC00NDgsMTEgKzQ0OCwxNSBAQCBnc3RfdnVsa2FuX2Rpc3BsYXlfdHlwZV90b19leHRlbnNpb25fc3RyaW5nIChHc3RWdWxrYW5EaXNwbGF5VHlwZSB0eXBlKQorICAgaWYgKHR5cGUgPT0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSkKKyAgICAgcmV0dXJuIE5VTEw7CisgCisrI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisgICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikKKyAgICAgcmV0dXJuIFZLX0tIUl9YQ0JfU1VSRkFDRV9FWFRFTlNJT05fTkFNRTsKKysjZW5kaWYKKyAKKysjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19XQVlMQU5ECisgICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1dBWUxBTkQpCisgICAgIHJldHVybiBWS19LSFJfV0FZTEFORF9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjE0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBjMjNlMWRjMjJkZWI0OTU1NjFjZmZiODc3ZWRiMjc0NmI3NDBhMWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowNzowNSArMDMwMAorU3ViamVjdDogW1BBVENIIDIvMl0gdnVsa2FuOiBVc2UgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uIG9mIHZrY29uZmlnLmgKKworQnVpbGQgZmFpbHMgaW4gZXh0L3Z1bGthbi94Y2IgYW5kIGV4dC92dWxrYW4vd2F5bGFuZCB3aGVuOgorKiBidWlsZGluZyBmcm9tIHRhcmJhbGwKKyogYnVpbGRpbmcgb3V0LW9mLXRyZWUKKyogT25seSBvbmUgV1NJIGludGVncmF0aW9uICh4Y2Igb3Igd2F5bGFuZCkgaXMgZW5hYmxlZCBieSBjb25maWd1cmUuYWMKK1RoaXMgaXMgYmVjYXVzZSB2a2NvbmZpZy5oIGZyb20gc291cmNlIGRpcmVjdG9yeSBnZXRzIHVzZWQgaW5zdGVhZAorb2YgdGhlIGdlbmVyYXRlZCBvbmUuCisKK0FkZCB0aGUgY29ycmVjdCBidWlsZCBkaXJlY3RvcnkgdG8gIi1JIi4gVXNlIGFuZ2xlIGJyYWNrZXQKK2luY2x1ZGUgaW4gdmthcGkuaCBzbyB0aGF0IGl0IGFjdHVhbGx5IGxvb2tzIGluIHRoZSBpbmNsdWRlIHNlYXJjaAorcGF0aCBpbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIHNhbWUgKHNvdXJjZSB0cmVlKSBkaXJlY3RvcnkuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDUzOV0KKy0tLQorIGV4dC92dWxrYW4vdmthcGkuaCAgICAgICAgICAgICB8IDIgKy0KKyBleHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gfCAxICsKKyBleHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbSAgICAgfCAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2FwaS5oIGIvZXh0L3Z1bGthbi92a2FwaS5oCitpbmRleCBlOWMyM2FhOTIuLmEzN2MyOWQwZiAxMDA2NDQKKy0tLSBhL2V4dC92dWxrYW4vdmthcGkuaAorKysrIGIvZXh0L3Z1bGthbi92a2FwaS5oCitAQCAtMjMsNyArMjMsNyBAQAorIAorICNkZWZpbmUgVktfUFJPVE9UWVBFUworIAorLSNpbmNsdWRlICJ2a2NvbmZpZy5oIgorKyNpbmNsdWRlIDx2a2NvbmZpZy5oPgorICNpbmNsdWRlICJ2a19md2QuaCIKKyAjaW5jbHVkZSAidmttYWNyb3MuaCIKKyAKK2RpZmYgLS1naXQgYS9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KK2luZGV4IGY5MmQ4NWUyYy4uMTBjZmI3MGU2IDEwMDY0NAorLS0tIGEvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtCisrKysgYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KK0BAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAorIAorIGxpYmdzdHZ1bGthbl93YXlsYW5kX2xhX0NGTEFHUyA9IFwKKyAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKysJLUkkKHRvcF9idWlsZGRpcikvZXh0L3Z1bGthbiBcCisgCS1JJCh0b3Bfc3JjZGlyKS9leHQvdnVsa2FuIFwKKyAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCitkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQoraW5kZXggN2RlYmNmZjllLi5iNTEwMzU1MWIgMTAwNjQ0CistLS0gYS9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQorKysrIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KK0BAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAorIAorIGxpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTID0gXAorIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorKwktSSQodG9wX2J1aWxkZGlyKS9leHQvdnVsa2FuIFwKKyAJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAorIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisgCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzgyYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0FkZCAtbHZjaG9zdGlmIHRvIGxpbmsgd2hlbiB1c2luZyAtbEVHTCBvbiBycGkKKworVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGxpYkVHTCBmcm9tIHVzZXJsYW5kIHVzZXMgc3lib2xzCitmcm9tIHRoaXMgbGlicmFyeS4KKworbGliL2xpYkVHTC5zby4xLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisgIDE1NTI6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorCitUaGVzZSBzeW1ib2xzIGFyZSBwcm92aWRlZCBieSBsaWJ2Y2hvc3RpZiBhcyBzZWVuIGJlbG93CisKK2xpYi9saWJ2Y2hvc3RpZi5zbworICAgMjUyOiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKyAgIDgwOTogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisKK1dpdGggdGhpcyBleHBsaWNpdCBsaW5rLCBwbHVnaW5zIGZhaWwgZHVyaW5nIHJ1bnRpbWUKKworKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9teC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCisoZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b3BlbmdsLnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuNC9jb25maWd1cmUuYWMKK0BAIC03ODUsNyArNzg1LDcgQEAgY2FzZSAkaG9zdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9HTEVTMj15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0xfUlBJPXllcworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjb3MgLWx2Y2hpcV9hcm0iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNob3N0aWYgLWx2Y29zIC1sdmNoaXFfYXJtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0ZMQUdTPSIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORShVU0VfRUdMX1JQSSwgWzFdLCBbVXNlIFJQaSBwbGF0Zm9ybV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmI0MDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3R0YS9jcmMzMi5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT0yN2RiMjY5YzU3NWQxZTUzMTdmZmZjYTJkMzNiM2I1MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2ZpbHRlcnMuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9OGEwODI3MDY1NmYyZjhhZDdiYjM2NTViODMxMzhlNWEiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXNtb290aHN0cmVhbWluZy1pbXBsZW1lbnQtYWRhcHRpdmVkZW11eC1zLWdldF9saXZlX3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLW1zc2RlbXV4LWltcHJvdmVkLWxpdmUtcGxheWJhY2stc3VwcG9ydC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjc1NzEwM2U1N2EwOTZhMWEwNWIzYWI4NWI4MzgxYWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjNkZGFlNTA2YjNhMjIzYjk0ODY5YTBkM2VlYTNlOWExMmU4NDdmOTRkMmQwZTBiOTcxMDJjZTEzZWNkNjk2NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICJXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMjFkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKQEAgLTAsMCArMSwyNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAorICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjU2ODNmMGVhOTFmOWUxZTA2MTNiMGY2ZjcyOTk4MGE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMmM3ZWRkZTRmNTlkNzRlYjQxNGUwNzAxYzU1MTMxZjU2MmU1YzYwNWEzY2U5YjA5MTc1NGYxMDZjMDllMzciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCisKK0VYVFJBX09FQ09ORiArPSAiV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDFlM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDU0MGUwMmM5MmM3NWUwOGI5MDMyNjg2M2RjNzg3ZmE1Y2FkZjlkYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgotRGF0ZTogRnJpLCAxMyBNYXIgMjAxNSAxODowNDozMSArMDgwMAotU3ViamVjdDogW1BBVENIXSBlbmNvZGViaW46IE5lZWQgbW9yZSBidWZmZXJzIGluIG91dHB1dCBxdWV1ZSBmb3IgYmV0dGVyCi0gcGVyZm9ybWFuY2UKLQotTmVlZCBtb3JlIGJ1ZmZlcnMgaW4gb3V0cHV0IHF1ZXVlIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxOTFdCi0KLVNpZ25lZC1vZmYtYnk6IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnc3QvZW5jb2RpbmcvZ3N0ZW5jb2RlYmluLmMgfCAgICAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYyBiL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYwotaW5kZXggNjcyOGU1OC4uMzJkYWFlNCAxMDA2NDQKLS0tLSBhL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYwotKysrIGIvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCi1AQCAtMTIyOCw4ICsxMjI4LDcgQEAgX2NyZWF0ZV9zdHJlYW1fZ3JvdXAgKEdzdEVuY29kZUJpbiAqIGViaW4sIEdzdEVuY29kaW5nUHJvZmlsZSAqIHNwcm9mLAotICAgICogV2Ugb25seSB1c2UgYSAxYnVmZmVyIGxvbmcgcXVldWUgaGVyZSwgdGhlIGFjdHVhbCBxdWV1ZWluZyB3aWxsIGJlIGRvbmUKLSAgICAqIGluIHRoZSBpbnB1dCBxdWV1ZSAqLwotICAgbGFzdCA9IHNncm91cC0+b3V0cXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJxdWV1ZSIsIE5VTEwpOwotLSAgZ19vYmplY3Rfc2V0IChzZ3JvdXAtPm91dHF1ZXVlLCAibWF4LXNpemUtYnVmZmVycyIsIChndWludDMyKSAxLAotLSAgICAgICJtYXgtc2l6ZS1ieXRlcyIsIChndWludDMyKSAwLCAibWF4LXNpemUtdGltZSIsIChndWludDY0KSAwLAotKyAgZ19vYmplY3Rfc2V0IChzZ3JvdXAtPm91dHF1ZXVlLCAibWF4LXNpemUtdGltZSIsIChndWludDY0KSAwLAotICAgICAgICJzaWxlbnQiLCBUUlVFLCBOVUxMKTsKLSAKLSAgIGdzdF9iaW5fYWRkIChHU1RfQklOIChlYmluKSwgc2dyb3VwLT5vdXRxdWV1ZSk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjODE2NzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzU0Y2U5MzQ1NzI3MTc1ZmY2NmQxN2I2N2ZmNTFmNTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCi0gICAgZmlsZTovL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZiNDZmOGZhYzAxZWI3NzNkNTU2ZTNlZmMzNjllODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZkMjQ1YjZiM2Q0Y2I3MzNmODFlYmIwMjEwNzRjNTI1ZWNlODNkYjBjMTBlOTMyNzk0YjMzOWI4ZDkzNWViNyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGUwYjhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAorICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNzdmNTM3OWM0Y2E2Nzc2MTZiNDE1ZTNiM2ZmOTU1NzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA2N2RjZTNhZmUxOTdhOTUzNmZlYTAxMDdjNzcyMTNmYWI1MzZkZmY0YTIxM2IwN2ZjNjAzNzhkNTUxMDY3NSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ODgxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDU0NTY0NmNjY2JhMjQzMjM2ZTEwMzYyZmU3MzI1Zjg5YmU1N2RhMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CitEYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDExOjI4OjM3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHY0bDI6IEZpeCA0SyBjb2xvcmltZXRyeQorCitTaW5jZSAxLjYsIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiBmb3IgQlQyMDIwIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSBCVDcwOQordG8gQlQyMDIwXzEyLiBJdCdzIHRoZSBzYW1lIGZ1bmN0aW9uLCBidXQgd2l0aCBtb3JlIHByZWNpc2lvbi4gQXMgYSBzaWRlCitlZmZlY3QsIHRoZSBWNEwyIGNvbG9ycHNhY2UgZGlkbid0IG1hdGNoIEdTdHJlYW1lciBjb2xvcnNwYWNlLiBXaGVuCitHU3RyZWFtZXIgZW5kZWQgdXAgbWFraW5nIGEgZ3Vlc3MsIGl0IHdvdWxkIG5vdCBtYXRjaCBhbnl0aGluZyBzdXBwb3J0ZWQKK2J5IFY0TDIgYW55bW9yZS4gVGhpcyB0aGlzIGJ5IHVzaW5nIEJUMjAyMF8xMiBmb3IgQlQyMDIwIGNvbG9yc3BhY2UgYW5kCitCVDIwMjAgdHJhbnNmZXIgZnVuY3Rpb24gaW4gcmVwbGFjZW1lbnQgb2YgQlQ3MDkgd2hlbmV2ZXIgYSA0SworcmVzb2x1dGlvbiBpcyBkZXRlY3RlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogTmljb2xhcyBEZWNoZXNuZSA8bmljb2xhcy5kZWNoZXNuZUBsaW5hcm8ub3JnPgorCistLS0KKyBzeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgfCA3ICsrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCitpbmRleCA2MTI0NDQ1NWYuLmFhZTJjNTVlNyAxMDA2NDQKKy0tLSBhL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYworKysrIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCitAQCAtMTk2MCw3ICsxOTYwLDcgQEAgZ3N0X3Y0bDJfb2JqZWN0X2dldF9jb2xvcnNwYWNlIChzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdCwKKyAgICAgY2FzZSBWNEwyX0NPTE9SU1BBQ0VfQlQyMDIwOgorICAgICAgIGNpbmZvLT5yYW5nZSA9IEdTVF9WSURFT19DT0xPUl9SQU5HRV8xNl8yMzU7CisgICAgICAgY2luZm8tPm1hdHJpeCA9IEdTVF9WSURFT19DT0xPUl9NQVRSSVhfQlQyMDIwOworLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKKysgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOworICAgICAgIGNpbmZvLT5wcmltYXJpZXMgPSBHU1RfVklERU9fQ09MT1JfUFJJTUFSSUVTX0JUMjAyMDsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBWNEwyX0NPTE9SU1BBQ0VfU01QVEUyNDBNOgorQEAgLTIwNjIsNyArMjA2MiwxMCBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAorIAorICAgc3dpdGNoICh0cmFuc2ZlcikgeworICAgICBjYXNlIFY0TDJfWEZFUl9GVU5DXzcwOToKKy0gICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQ3MDk7CisrICAgICAgaWYgKGZtdC0+Zm10LnBpeC5oZWlnaHQgPiAyMTYwKQorKyAgICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUMjAyMF8xMjsKKysgICAgICBlbHNlCisrICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQ3MDk7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfU1JHQjoKKyAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfU1JHQjsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDJvYmplY3QtQWxzby1hZGQtdmlkZW9tZXRhLWlmLXRoZXJlLWlzLXBhZGRpbmctdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyb2JqZWN0LUFsc28tYWRkLXZpZGVvbWV0YS1pZi10aGVyZS1pcy1wYWRkaW5nLXRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTlhMjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDJvYmplY3QtQWxzby1hZGQtdmlkZW9tZXRhLWlmLXRoZXJlLWlzLXBhZGRpbmctdG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDIyYmUwMjYxMmFkYzc1N2Y2YTQzY2VmYzZlZTY1ZWNhZWY2OGYwZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBUaHUsIDIzIE1hciAyMDE3IDIyOjEzOjA1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHY0bDJvYmplY3Q6IEFsc28gYWRkIHZpZGVvbWV0YSBpZiB0aGVyZSBpcyBwYWRkaW5nIHRvIHRoZQotIHJpZ2h0IGFuZCBib3R0b20KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDQ3OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxLjEwLjVdCi0KLVNpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLS0tLQotIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi1pbmRleCA5MWM4ZmYwLi5lZDQ2NTRlIDEwMDY0NAotLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi0rKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLUBAIC0zMDcwLDkgKzMwNzAsMTAgQEAgc3RvcmVfaW5mbzoKLSAgIEdTVF9ERUJVR19PQkpFQ1QgKHY0bDJvYmplY3QtPmVsZW1lbnQsICJHb3Qgc2l6ZWltYWdlICUiIEdfR1NJWkVfRk9STUFULAotICAgICAgIGluZm8tPnNpemUpOwotIAotLSAgLyogdG8gYXZvaWQgY29waWVzIHdlIG5lZWQgdmlkZW8gbWV0YSBpZiB0b3Agb3IgbGVmdCBwYWRkaW5nICovCi0rICAvKiB0byBhdm9pZCBjb3BpZXMgd2UgbmVlZCB2aWRlbyBtZXRhIGlmIHRoZXJlIGlzIHBhZGRpbmcgKi8KLSAgIHY0bDJvYmplY3QtPm5lZWRfdmlkZW9fbWV0YSA9Ci0tICAgICAgKChhbGlnbi0+cGFkZGluZ190b3AgKyBhbGlnbi0+cGFkZGluZ19sZWZ0KSAhPSAwKTsKLSsgICAgICAoKGFsaWduLT5wYWRkaW5nX3RvcCArIGFsaWduLT5wYWRkaW5nX2xlZnQgKyBhbGlnbi0+cGFkZGluZ19yaWdodCArCi0rICAgICAgICAgIGFsaWduLT5wYWRkaW5nX2JvdHRvbSkgIT0gMCk7Ci0gCi0gICAvKiAuLi4gb3IgaWYgc3RyaWRlIGlzIG5vbiAic3RhbmRhcmQiICovCi0gICBpZiAoIXN0YW5kYXJkX3N0cmlkZSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NDQ3YmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdjRsMm9iamVjdC1BbHNvLWFkZC12aWRlb21ldGEtaWYtdGhlcmUtaXMtcGFkZGluZy10by5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiY2MwY2MxM2NkYjA3ZDQyMzc2MDBiNjg4NmI4MWYzMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE4NmM2MTQzNGE4YzQ0NjY1MzY1YmQwYjM1NTdhMDQwOTM3ZDFmNDRiZjY5Y2FlZTRlOWVhODE2Y2U3NGQ3ZSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTU5M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDI1NDIxN2Q5ODA1NDg0NTMyZTA4ZmYxYzNhYTI5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTkxZWU3MjA4YWIzMDI4OWEzMDY1OGE4MmI3NmJmODcxNjljOTI3NTcyZDliNzk0ZjNhNDFlZDQ4ZTFlZTk2IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKKworUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgorUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKaW5kZXggNzA4YWQ3YS4uNjBhYTk2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCkBAIC0xOCw3ICsxOCw2IEBACiBQQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCiBQQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCiBQQUNLQUdFQ09ORklHW2xhbWVdICAgICA9ICItLWVuYWJsZS1sYW1lLC0tZGlzYWJsZS1sYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW21hZF0gICAgICA9ICItLWVuYWJsZS1tYWQsLS1kaXNhYmxlLW1hZCxsaWJtYWQiCiBQQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCiBQQUNLQUdFQ09ORklHW21wZzEyM10gICA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCiBQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMmNhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYzY4ZDA1MDljOTk4MGIwYjcwYTRiODM2ZmY3M2ZmZjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM4NmM3N2NhODQ1OWNiYTQzMWVkMGI2M2RhNzgwYzcwNjJjN2NjNDgwNTVkMjIyMDI0ZDhlYWYxOThmZmE1OSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTU2Yzg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjYzOTAyMTkwNWEzMmNmMzAxM2NhNWJhYzFiNjk0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxY2MzOTQyYmJmM2VhODdkYTNlMzU0MzdkNGUwMTRlOTkxYjEwM2RiMjJhNjE3NGY2MmE5OGM4OWMzZjVmNDY2IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKaW5kZXggM2Y2ZDRjMy4uYzQwZDM5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTQ5LDMgKzQ5LDYgQEAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgorCisjIHFlbXUtbWlwczY0OiBlcnJvciB3aGlsZSBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXM6IC4uLi9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmd0aHJlYWQtMi4wLnNvLjA6IEVMRiBmaWxlIGRhdGEgZW5jb2Rpbmcgbm90IGxpdHRsZS1lbmRpYW4KK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFiOTMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYwpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKK1JERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCisKK1BOUkVBTCA9ICJnc3QtcHl0aG9uIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgZ3N0cHl0aG9ucGx1Z2luIGhhcmRjb2RlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnB5dGhvbiBmcm9tIHRoZSBidWlsZAorICAgICMgd29ya3NwYWNlIGFuZCB0aGVuIGZhaWxzIGF0IHJ1bnRpbWUuIFdlIGNhbiBvdmVycmlkZSBpdCB1c2luZworICAgICMgLS13aXRoLWxpYnB5dGhvbi1kaXI9JHtsaWJkaXJ9LCBidXQgaXQgc3RpbGwgZmFpbHMgYmVjYXVzZSBpdCBsb29rcyBmb3IgYQorICAgICMgc3ltbGlua2VkIGxpYnJhcnkgZW5kaW5nIGluIC5zbyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWxseSBsaWJyYXJ5IHdpdGgKKyAgICAjIExJQk5BTUUuc28uTUFKT1IuTUlOT1IuIEFsdGhvdWdoIHdlIGNvdWxkIHBhdGNoIHRoZSBjb2RlIHRvIHVzZSB0aGUgcGF0aAorICAgICMgd2Ugd2FudCwgaXQgd2lsbCBicmVhayBhZ2FpbiBpZiB0aGUgbGlicmFyeSB2ZXJzaW9uIGV2ZXIgY2hhbmdlcy4gV2UgbmVlZAorICAgICMgdG8gdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IG9mIGhhbmRsaW5nIHRoaXMgYW5kIHBvc3NpYmx5IGNvbnN1bHQKKyAgICAjIHVwc3RyZWFtLgorICAgICMKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmRjMDViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZGE1YzlmYTQyMjkwYmMzMDA2NjYxYzg2OWUwNzZmZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRjYzMyYWQ0NmE2NTNlMWFlMmYyN2FjMmExNjA3OGIwMDA3NWM5MTA2YjI3ODRhMWE4ZDFmMzFjNTA2OWU0NyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKaW5kZXggNzE5MWY5OC4uNjgxNzNjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwpAQCAtMzYsMyArMzYsNSBAQAogCiBkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgogCisjIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWE5YTUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjU4N2ZhNjM5M2UwOWJjMjZmODg0NTEwNTk2ZTMwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZjZlMTJmZDRlMzU2OGVlMTkwZGMyNGU1N2U0YzNhODc4OTcxYzNhM2ZiNjkwNGE5Njc0NDA0ZmFjMjU2ZGU2IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDI2Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMjI3NTdjYWIxODNmNWI5NzAwODZlOTEwMWM2MGE5OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJhOTI2NGU4YWU2ZTQ0MDI5MzMyOGU3NTllNDA0NTZmMTYxYWE2NjA3N2IzMTQzZGQwNzU4MTEzNjE5MGIzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwppbmRleCBlZjA3MzRiLi5hYmZjYzY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jCkBAIC0yMiwxMiArMjIsMjEgQEAKIAogUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgogCisjIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAorIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCisjIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgorUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgorCiBQQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB4MTEnLCAnZ2x4JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSx1ZGV2IGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCx2aXJ0dWFsL21lc2EiCitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsdmlydHVhbC9saWJnbCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhyYW5kciBsaWJ4cmVuZGVyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YzY2ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC12YWFwaS5pbmMKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMThhZjE3ZjkwNjYzNzU3MGI2MWRkN2JlOWI1NTgxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwM2U2OTA2MjE1OTRkOWY5NDk1ZDg2YzdkYWM4Yjg1OTBiM2ExNTA0NjI3NzBlZDA3MGRjNzZmNjZhNzBkZTc1IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vdmFhcGl2aWRlb2J1ZmZlcnBvb2wtY3JlYXRlLWFsbG9jYXRvci1pZi1uZWVkZWQucGF0Y2giCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmQ5Zjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCitTUkNfVVJJW21kNXN1bV0gPSAiYmVhMDE1ZjMzNjk2YTE1YWQ5NTc1ZmI3MWFmODYyZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjNjNzE0ZTA0NzRiM2M3YWU2ZmY4ODg0YWViZjg1MDNhMWJjM2RlZDMzNWZhMmQyYjJhYzMxNzg4NDY2MTYzYSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmluZGV4IDcyZDdjZTYuLjMyOTE5MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTI1LDEwICsyNSwxMCBAQAogUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKIFBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWRpc2FibGUtZG9jYm9vayBcCiAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzJmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBhMGNiNDFiYTcyOTEzZWRhMDYwNDlkMjY2ZWM0M2VhOGY1MmI1YmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorRGF0ZTogRnJpLCAxMSBBdWcgMjAxNyAyMToyMTozNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBzd2l0Y2hlcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpYmR3IGFuZAorIGxpYnVud2luZAorCitbT3JpZ2luYWwgcGF0Y2ggbW9kaWZpZWQgdG8gYmUgYXBwbGljYWJsZSB0byAxLjEyLjJdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MTkzXQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CistLS0KKyBjb25maWd1cmUuYWMgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNmIyOTIzLi4zMmRkODI3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04MjEsMTUgKzgyMSw0MSBAQCBmaQorIEFNX0NPTkRJVElPTkFMKEhBVkVfR1RLLCB0ZXN0ICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIikKKyAKKyBkbmwgbGlidW53aW5kIGlzIG9wdGlvbmFsbHkgdXNlZCBieSB0aGUgbGVha3MgdHJhY2VyCistUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBsaWJ1bndpbmQsIEhBVkVfVU5XSU5EPXllcywgSEFWRV9VTldJTkQ9bm8pCistaWYgdGVzdCAieCRIQVZFX1VOV0lORCIgPSAieHllcyI7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQorK0FDX0FSR19XSVRIKFt1bndpbmRdLFtBU19IRUxQX1NUUklORyhbLS13aXRoLXVud2luZD15ZXN8bm98YXV0b10sW3VzZSBsaWJ1bndpbmRdKV0sCisrICAgICAgICAgICAgW10sIFt3aXRoX3Vud2luZD1hdXRvXSkKKytpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgIT0gInhubyIgXTsgdGhlbgorKyAgUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBbbGlidW53aW5kXSwKKysgICAgICBbCisrICAgICAgICBIQVZFX1VOV0lORD15ZXMKKysgICAgICAgIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQorKyAgICAgIF0sCisrICAgICAgWworKyAgICAgICAgSEFWRV9VTldJTkQ9bm8KKysgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF91bndpbmR9IiA9ICJ4eWVzIiBdOyB0aGVuCisrICAgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgbGlidW53aW5kXSkKKysgICAgICAgIGZpCisrICAgICAgXSkKKytlbHNlCisrICBIQVZFX1VOV0lORD1ubworIGZpCisgCisgZG5sIGxpYmR3IGlzIG9wdGlvbmFsbHkgdXNlZCB0byBhZGQgc291cmNlIGxpbmVzIGFuZCBudW1iZXJzIHRvIGJhY2t0cmFjZXMKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhEVywgbGliZHcsIEhBVkVfRFc9eWVzLCBIQVZFX0RXPW5vKQorLWlmIHRlc3QgIngkSEFWRV9EVyIgPSAieHllcyI7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKKytBQ19BUkdfV0lUSChbZHddLFtBU19IRUxQX1NUUklORyhbLS13aXRoLWR3PXllc3xub3xhdXRvXSxbdXNlIGxpYmR3XSldLAorKyAgICAgICAgICAgIFtdLCBbd2l0aF9kdz1hdXRvXSkKKytpZiBbIHRlc3QgIngke3dpdGhfZHd9IiAhPSAieG5vIiBdOyB0aGVuCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhEVywgW2xpYmR3XSwKKysgICAgICBbCisrICAgICAgICBIQVZFX0RXPXllcworKyAgICAgICAgQUNfREVGSU5FKEhBVkVfRFcsIDEsIFtsaWJkdyBhdmFpbGFibGVdKQorKyAgICAgIF0sCisrICAgICAgWworKyAgICAgICAgSEFWRV9EVz1ubworKyAgICAgICAgaWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgPSAieHllcyIgXTsgdGhlbgorKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYmR3XSkKKysgICAgICAgIGZpCisrICAgICAgXSkKKytlbHNlCisrICBIQVZFX0RXPW5vCisgZmkKKyAKKyBkbmwgQ2hlY2sgZm9yIGJhY2t0cmFjZSgpIGZyb20gbGliYworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9kZXRlcm1pbmlzdGljLXVud2luZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzllNmNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTWFrZSB0aGUgZGV0ZWN0aW9uIG9mIGxpYnVud2luZCBkZXRlcm1pbmlzdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGFjODhmYjIuLjE4MmMxOWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgyOSwzICs4MjgsMCBAQCBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCi0tZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotLVBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kLCBIQVZFX1VOV0lORD15ZXMsIEhBVkVfVU5XSU5EPW5vKQotLQotQEAgLTgzOSwzICs4MzYsNyBAQCBBQ19DSEVDS19GVU5DKGJhY2t0cmFjZSwgWwotLWlmIHRlc3QgIngkSEFWRV9VTldJTkQiID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLS1maQotK2RubCBsaWJ1bndpbmQgaXMgb3B0aW9uYWxseSB1c2VkIGJ5IHRoZSBsZWFrcyB0cmFjZXIKLStBQ19BUkdfV0lUSChbdW53aW5kXSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11bndpbmRdLFt1c2UgbGlidW53aW5kXSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF91bndpbmQ9eWVzXSkKLStBU19JRihbdGVzdCAiJHdpdGhfdW53aW5kIiA9IHllc10sCi0rICAgICAgW1BLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kKQotKyAgICAgICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSldCi0rKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY3OTkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9kZXRlcm1pbmlzdGljLXVud2luZC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiN2M5MWE5N2U0YTJkYzgxZWFmZDU5ZDBhMmY4YjBkNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTBjMmY1YWY1MGE2Y2M2YzBhM2YzZWQ0M2JkZDhiNWUyYmZmMDBiYWNmYjc2NmQ0YmUxMzllYzA2ZDhiNTIxOCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDQxYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjQ3NDg4NjA2MjE2MDdmZmQ5NjI0NGZiNzljODZjMjM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZGUzZjM5YTJlYTk4NGY5ZTA3Y2UwOTI1MDI4NWNlOTFmNmUzNjE5ZDE4Njg4OWY3NWI1MTU0ZWNmOTk0YmEiCisKK1MgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL0NWRS0yMDE3LTEzNzEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9DVkUtMjAxNy0xMzcxMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWVjNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9DVkUtMjAxNy0xMzcxMi5wYXRjaApAQCAtMCwwICsxLDMwOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2xhbWUuY3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvbGFtZS9sYW1lL2xpYm1wM2xhbWUvaWQzdGFnLmM/cjE9MS43OSZyMj0xLjgwXQorCitCYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTM3MTIgZm9yIGxhbWUuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCistLS0gYS9saWJtcDNsYW1lL2lkM3RhZy5jCTIwMTcvMDgvMjIgMTk6NDQ6MDUJMS43OQorKysrIGIvbGlibXAzbGFtZS9pZDN0YWcuYwkyMDE3LzA4LzI4IDE1OjM5OjUxCTEuODAKK0BAIC0xOTQsNyArMTk0LDExIEBACisgfQorICNlbmRpZgorIAorLQorK3N0YXRpYyBpbnQKKytpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwobGFtZV90IGdmcCkKKyt7CisrICAgIHJldHVybiAoZ2ZwICYmIGdmcC0+aW50ZXJuYWxfZmxhZ3MpID8gMCA6IDE7CisrfQorIAorIHN0YXRpYyBpbnQKKyBpZDN2Ml9hZGRfdWNzMl9sbmcobGFtZV90IGdmcCwgdWludDMyX3QgZnJhbWVfaWQsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICpkZXNjLCB1bnNpZ25lZCBzaG9ydCBjb25zdCAqdGV4dCk7CitAQCAtMjM4LDggKzI0Miw3IEBACisgc3RhdGljIHZvaWQKKyBpZDN2MkFkZEF1ZGlvRHVyYXRpb24obGFtZV90IGdmcCwgZG91YmxlIG1zKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwICE9IDAgPyBnZnAtPmludGVybmFsX2ZsYWdzIDogMDsKKy0gICAgU2Vzc2lvbkNvbmZpZ190IGNvbnN0ICpjb25zdCBjZmcgPSAmZ2ZjLT5jZmc7CisrICAgIFNlc3Npb25Db25maWdfdCBjb25zdCAqY29uc3QgY2ZnID0gJmdmcC0+aW50ZXJuYWxfZmxhZ3MtPmNmZzsgLyogY2FsbGVyIGNoZWNrZWQgcG9pbnRlcnMgKi8KKyAgICAgY2hhciAgICBidWZmZXJbMTAyNF07CisgICAgIGRvdWJsZSBjb25zdCBtYXhfdWxvbmcgPSBNQVhfVV8zMl9OVU07CisgICAgIHVuc2lnbmVkIGxvbmcgcGxheWxlbmd0aF9tczsKK0BAIC0yODAsNyArMjgzLDEyIEBACisgdm9pZAorIGlkM3RhZ19pbml0KGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBmcmVlX2lkM3RhZyhnZmMpOworICAgICBtZW1zZXQoJmdmYy0+dGFnX3NwZWMsIDAsIHNpemVvZiBnZmMtPnRhZ19zcGVjKTsKKyAgICAgZ2ZjLT50YWdfc3BlYy5nZW5yZV9pZDN2MSA9IEdFTlJFX05VTV9VTktOT1dOOworQEAgLTI5Myw3ICszMDEsMTIgQEAKKyB2b2lkCisgaWQzdGFnX2FkZF92MihsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IEFERF9WMl9GTEFHOworIH0KK0BAIC0zMDEsNyArMzE0LDEyIEBACisgdm9pZAorIGlkM3RhZ192MV9vbmx5KGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzICY9IH4oQUREX1YyX0ZMQUcgfCBWMl9PTkxZX0ZMQUcpOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFYxX09OTFlfRkxBRzsKKyB9CitAQCAtMzA5LDcgKzMyNywxMiBAQAorIHZvaWQKKyBpZDN0YWdfdjJfb25seShsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFYyX09OTFlfRkxBRzsKKyB9CitAQCAtMzE3LDcgKzM0MCwxMiBAQAorIHZvaWQKKyBpZDN0YWdfc3BhY2VfdjEobGFtZV90IGdmcCkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgJj0gflYyX09OTFlfRkxBRzsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyB8PSBTUEFDRV9WMV9GTEFHOworIH0KK0BAIC0zMzEsNyArMzU5LDEyIEBACisgdm9pZAorIGlkM3RhZ19zZXRfcGFkKGxhbWVfdCBnZnAsIHNpemVfdCBuKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFBBRF9WMl9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IEFERF9WMl9GTEFHOworQEAgLTU4MywyMiArNjE2LDI5IEBACisgaW50CisgaWQzdGFnX3NldF9hbGJ1bWFydChsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICppbWFnZSwgc2l6ZV90IHNpemUpCisgeworLSAgICBpbnQgICAgIG1pbWV0eXBlID0gMDsKKy0gICAgdW5zaWduZWQgY2hhciBjb25zdCAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICopIGltYWdlOworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworLQorLSAgICAvKiBkZXRlcm1pbmUgTUlNRSB0eXBlIGZyb20gdGhlIGFjdHVhbCBpbWFnZSBkYXRhICovCistICAgIGlmICgyIDwgc2l6ZSAmJiBkYXRhWzBdID09IDB4RkYgJiYgZGF0YVsxXSA9PSAweEQ4KSB7CistICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0pQRUc7CistICAgIH0KKy0gICAgZWxzZSBpZiAoNCA8IHNpemUgJiYgZGF0YVswXSA9PSAweDg5ICYmIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgJmRhdGFbMV0sICJQTkciLCAzKSA9PSAwKSB7CistICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX1BORzsKKy0gICAgfQorLSAgICBlbHNlIGlmICg0IDwgc2l6ZSAmJiBzdHJuY21wKChjb25zdCBjaGFyICopIGRhdGEsICJHSUY4IiwgNCkgPT0gMCkgeworLSAgICAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9HSUY7CisrICAgIGludCAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9OT05FOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworICAgICB9CistICAgIGVsc2UgeworLSAgICAgICAgcmV0dXJuIC0xOworKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKworKyAgICBpZiAoaW1hZ2UgIT0gMCkgeworKyAgICAgICAgdW5zaWduZWQgY2hhciBjb25zdCAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICopIGltYWdlOworKyAgICAgICAgLyogZGV0ZXJtaW5lIE1JTUUgdHlwZSBmcm9tIHRoZSBhY3R1YWwgaW1hZ2UgZGF0YSAqLworKyAgICAgICAgaWYgKDIgPCBzaXplICYmIGRhdGFbMF0gPT0gMHhGRiAmJiBkYXRhWzFdID09IDB4RDgpIHsKKysgICAgICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0pQRUc7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmICg0IDwgc2l6ZSAmJiBkYXRhWzBdID09IDB4ODkgJiYgc3RybmNtcCgoY29uc3QgY2hhciAqKSAmZGF0YVsxXSwgIlBORyIsIDMpID09IDApIHsKKysgICAgICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX1BORzsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYgKDQgPCBzaXplICYmIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgZGF0YSwgIkdJRjgiLCA0KSA9PSAwKSB7CisrICAgICAgICAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9HSUY7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKGdmYy0+dGFnX3NwZWMuYWxidW1hcnQgIT0gMCkgeworICAgICAgICAgZnJlZShnZmMtPnRhZ19zcGVjLmFsYnVtYXJ0KTsKK0BAIC02MDYsNyArNjQ2LDcgQEAKKyAgICAgICAgIGdmYy0+dGFnX3NwZWMuYWxidW1hcnRfc2l6ZSA9IDA7CisgICAgICAgICBnZmMtPnRhZ19zcGVjLmFsYnVtYXJ0X21pbWV0eXBlID0gTUlNRVRZUEVfTk9ORTsKKyAgICAgfQorLSAgICBpZiAoc2l6ZSA8IDEpIHsKKysgICAgaWYgKHNpemUgPCAxIHx8IG1pbWV0eXBlID09IE1JTUVUWVBFX05PTkUpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgICAgIGdmYy0+dGFnX3NwZWMuYWxidW1hcnQgPSBsYW1lX2NhbGxvYyh1bnNpZ25lZCBjaGFyLCBzaXplKTsKK0BAIC05NTksNiArOTk5LDkgQEAKKyAgICAgaWYgKGZyYW1lX2lkID09IDApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmICh0ZXh0ID09IDApIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMTAwOCw2ICsxMDUxLDkgQEAKKyAgICAgaWYgKGZyYW1lX2lkID09IDApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmICh0ZXh0ID09IDApIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMTAzNyw2ICsxMDgzLDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2NvbW1lbnRfbGF0aW4xKGxhbWVfdCBnZnAsIGNoYXIgY29uc3QgKmxhbmcsIGNoYXIgY29uc3QgKmRlc2MsIGNoYXIgY29uc3QgKnRleHQpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIHJldHVybiBpZDN2Ml9hZGRfbGF0aW4xKGdmcCwgSURfQ09NTUVOVCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEwNDQsNiArMTA5Myw5IEBACisgaW50CisgaWQzdGFnX3NldF9jb21tZW50X3V0ZjE2KGxhbWVfdCBnZnAsIGNoYXIgY29uc3QgKmxhbmcsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICpkZXNjLCB1bnNpZ25lZCBzaG9ydCBjb25zdCAqdGV4dCkKKyB7CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgcmV0dXJuIGlkM3YyX2FkZF91Y3MyKGdmcCwgSURfQ09NTUVOVCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEwNTQsNiArMTEwNiw5IEBACisgaW50CisgaWQzdGFnX3NldF9jb21tZW50X3VjczIobGFtZV90IGdmcCwgY2hhciBjb25zdCAqbGFuZywgdW5zaWduZWQgc2hvcnQgY29uc3QgKmRlc2MsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICp0ZXh0KQorIHsKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICByZXR1cm4gaWQzdGFnX3NldF9jb21tZW50X3V0ZjE2KGdmcCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEyNDQsOSArMTI5OSw5IEBACisgaW50CisgaWQzdGFnX3NldF9nZW5yZShsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICpnZW5yZSkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcCAhPSAwID8gZ2ZwLT5pbnRlcm5hbF9mbGFncyA6IDA7CisgICAgIGludCAgICAgcmV0ID0gMDsKKy0gICAgaWYgKGdlbnJlICYmICpnZW5yZSkgeworKyAgICBpZiAoZ2ZjICYmIGdlbnJlICYmICpnZW5yZSkgeworICAgICAgICAgaW50IGNvbnN0IG51bSA9IGxvb2t1cEdlbnJlKGdlbnJlKTsKKyAgICAgICAgIGlmIChudW0gPT0gLTEpIHJldHVybiBudW07CisgICAgICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IENIQU5HRURfRkxBRzsKK0BAIC0xNTM5LDYgKzE1OTQsOSBAQAorIGludAorIGlkM3RhZ19zZXRfZmllbGR2YWx1ZShsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICpmaWVsZHZhbHVlKQorIHsKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICBpZiAoZmllbGR2YWx1ZSAmJiAqZmllbGR2YWx1ZSkgeworICAgICAgICAgaWYgKHN0cmxlbihmaWVsZHZhbHVlKSA8IDUgfHwgZmllbGR2YWx1ZVs0XSAhPSAnPScpIHsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CitAQCAtMTU1MSw2ICsxNjA5LDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2ZpZWxkdmFsdWVfdXRmMTYobGFtZV90IGdmcCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKmZpZWxkdmFsdWUpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmIChmaWVsZHZhbHVlICYmICpmaWVsZHZhbHVlKSB7CisgICAgICAgICBzaXplX3QgZHggPSBoYXNVY3MyQnl0ZU9yZGVyTWFya2VyKGZpZWxkdmFsdWVbMF0pOworICAgICAgICAgdW5zaWduZWQgc2hvcnQgY29uc3Qgc2VwYXJhdG9yID0gZnJvbUxhdGluMUNoYXIoZmllbGR2YWx1ZSwgJz0nKTsKK0BAIC0xNTgxLDIwICsxNjQyLDIxIEBACisgaW50CisgaWQzdGFnX3NldF9maWVsZHZhbHVlX3VjczIobGFtZV90IGdmcCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKmZpZWxkdmFsdWUpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIHJldHVybiBpZDN0YWdfc2V0X2ZpZWxkdmFsdWVfdXRmMTYoZ2ZwLCBmaWVsZHZhbHVlKTsKKyB9CisgCisgc2l6ZV90CisgbGFtZV9nZXRfaWQzdjJfdGFnKGxhbWVfdCBnZnAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmM7CistICAgIGlmIChnZnAgPT0gMCkgeworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CistICAgIGlmIChnZmMgPT0gMCkgeworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKyAgICAgaWYgKHRlc3RfdGFnX3NwZWNfZmxhZ3MoZ2ZjLCBWMV9PTkxZX0ZMQUcpKSB7CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorQEAgLTE3MzYsNyArMTc5OCwxMiBAQAorIGludAorIGlkM3RhZ193cml0ZV92MihsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICNpZiAwCisgICAgIGRlYnVnX3RhZ19zcGVjX2ZsYWdzKGdmYywgIndyaXRlIHYyIik7CisgI2VuZGlmCitAQCAtMTgzNywxMCArMTkwNCwxNSBAQAorIGludAorIGlkM3RhZ193cml0ZV92MShsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqY29uc3QgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyogZ2ZjID0gMDsKKyAgICAgc2l6ZV90ICBpLCBuLCBtOworICAgICB1bnNpZ25lZCBjaGFyIHRhZ1sxMjhdOworIAorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrCisgICAgIG0gPSBzaXplb2YodGFnKTsKKyAgICAgbiA9IGxhbWVfZ2V0X2lkM3YxX3RhZyhnZnAsIHRhZywgbSk7CisgICAgIGlmIChuID4gbSkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgppbmRleCAwNDc3NjExLi5lNTMyMWJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgpAQCAtMTQsNyArMTQsOSBAQAogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggIgorICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MTIucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NDgzNWIzMTNkNGE4YjY4ZjUzNDk4MTZkMzNlMDdjZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDM0NmI0MTU4ZTRhZjNiZDlmMmUxOTRiYjIzZWI0NzNjNzVmYjczNzcwMTE1MjMzNTMxOTZiMTliOWEyM2ZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWcvMDAwMS1GaXgtZ3BlcmYtMy4xLWluY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnLzAwMDEtRml4LWdwZXJmLTMuMS1pbmNvbXBhdGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRmNDlmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnLzAwMDEtRml4LWdwZXJmLTMuMS1pbmNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5MWZjZjY2YjkxODJjNzVjZDJiOTZkODg5OTFkNWExYzYzMDdkNGI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIgQXVnIDIwMTcgMTY6Mjc6NTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGdwZXJmIDMuMSBpbmNvbXBhdGliaWxpdHkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb21wYXQuaCAgICB8IDIgKy0KKyBmcmFtZXR5cGUuaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbXBhdC5oIGIvY29tcGF0LmgKK2luZGV4IDhhZjcxZWMuLmIzZDgwZDkgMTAwNjQ0CistLS0gYS9jb21wYXQuaAorKysrIGIvY29tcGF0LmgKK0BAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBpZDNfY29tcGF0IHsKKyB9OworIAorIHN0cnVjdCBpZDNfY29tcGF0IGNvbnN0ICppZDNfY29tcGF0X2xvb2t1cChyZWdpc3RlciBjaGFyIGNvbnN0ICosCistCQkJCQkgICByZWdpc3RlciB1bnNpZ25lZCBpbnQpOworKwkJCQkJICAgcmVnaXN0ZXIgc2l6ZV90KTsKKyAKKyBpbnQgaWQzX2NvbXBhdF9maXh1cChzdHJ1Y3QgaWQzX3RhZyAqKTsKKyAKK2RpZmYgLS1naXQgYS9mcmFtZXR5cGUuaCBiL2ZyYW1ldHlwZS5oCitpbmRleCBkZDA2NGIyLi5iNWI3NTkzIDEwMDY0NAorLS0tIGEvZnJhbWV0eXBlLmgKKysrKyBiL2ZyYW1ldHlwZS5oCitAQCAtMzcsNiArMzcsNiBAQCBleHRlcm4gc3RydWN0IGlkM19mcmFtZXR5cGUgY29uc3QgaWQzX2ZyYW1ldHlwZV91bmtub3duOworIGV4dGVybiBzdHJ1Y3QgaWQzX2ZyYW1ldHlwZSBjb25zdCBpZDNfZnJhbWV0eXBlX29ic29sZXRlOworIAorIHN0cnVjdCBpZDNfZnJhbWV0eXBlIGNvbnN0ICppZDNfZnJhbWV0eXBlX2xvb2t1cChyZWdpc3RlciBjaGFyIGNvbnN0ICosCistCQkJCQkJIHJlZ2lzdGVyIHVuc2lnbmVkIGludCk7CisrCQkJCQkJIHJlZ2lzdGVyIHNpemVfdCk7CisgCisgIyBlbmRpZgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWdfMC4xNS4xYi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnXzAuMTUuMWIuYmIKaW5kZXggMDVhOGE0Ny4uZjYxMzlkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWdfMC4xNS4xYi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGliaWQzdGFnL2xpYmlkM3RhZ18wLjE1LjFiLmJiCkBAIC05LDEwICs5LDEzIEBACiBERVBFTkRTID0gInpsaWIgZ3BlcmYtbmF0aXZlIgogUFIgPSAicjciCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLm1hcnMub3JnL3B1Yi9tcGVnL2xpYmlkM3RhZy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbWFkL2xpYmlkM3RhZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vYWRkcGtnY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1ncGVyZi0zLjEtaW5jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL21hZC9maWxlcy9saWJpZDN0YWcvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3Byb2plY3RzL21hZC9maWxlcy9saWJpZDN0YWcvKD9QPHB2ZXI+LiopLyQiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNTgwOGFkOTk3YmEzMmM0OTg4MDM4MjIwNzg3NDhjMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2RhNGY2ZTc5OTcyNzhmOGEzZmVmNGM2YTM3MmQzNDJmNzA1MDUxZDFlZWI2YTQ2YTg2YjAzNjEwZTI2MTUxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2IyOTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiUE5HIGltYWdlIGZvcm1hdCBkZWNvZGluZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJwbmcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTGlicG5nIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjdkODgzNzQxMDg2M2Y5ODIxYmJkNjA2NTM2ZjAzMjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PWFiZmEwNDk3ZmViMzkzYjU4NDJkM2Q4MmMxMDA5NTIwIgotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gIiR7R0VOVE9PX01JUlJPUn0vbGlicG5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyNTM1NGY4NmMzOTIzMThkMzFhZWRjYTcxMDE5MzcyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4ZDNlYzlkZTZiNWRiNzQwZmVmYWM3MDJjMzdmZmNmOTZhZTQ2Y2IxN2MxOGMxNTQ0NjM1YTM4NTJmNzhmN2EiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NmVhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjIxZTRlMWY3OTU4MTBiNWVhNDkxYjMzM2JjNmVhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWYzMDBjNDE5YTQ1YzUzYThkMmRhYTBiN2QxNjdhNjYiCitERVBFTkRTID0gInpsaWIiCisKK0xJQlYgPSAiMTYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjFiMzRlYWI0NDAyNjNlMzJjZmEzOWQxOTQxM2ZhZDU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMmE2MDJkZTA0OTE2YjJiNWNlNmY5MDE4MjljYWY0MTk1MTllNmExNmNjOWNkN2MxYzkxMTg3ZDNlZThiNDEiCisKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTEvQ1ZFLTIwMTctODM2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxL0NWRS0yMDE3LTgzNjIucGF0Y2gKaW5kZXggNzcxZWM5Mi4uOWVlN2U0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTEvQ1ZFLTIwMTctODM2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMS9DVkUtMjAxNy04MzYyLnBhdGNoCkBAIC0xNCwyMCArMTQsMTcgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9lcmlrZC9saWJzbmRmaWxlL2NvbW1pdC9lZjFkYmIyZGYxYzBlNzQxNDg2NjQ2ZGU0MGJkNjM4YTljNGNkODA4XQogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotCi1yZW1vdmVkIGh1bmsgIzIgYXMgaXQgd2FzIG9ubHkgY29zbWVudGljIGFuZCBjYXVzZWQgYSBtZXJnZSBjb25mbGljdC4KLXNpZ25lZi1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAtLS0KICBzcmMvZmxhYy5jIHwgMTEgKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlic25kZmlsZS0xLjAuMjcvc3JjL2ZsYWMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnNuZGZpbGUtMS4wLjI3Lm9yaWcvc3JjL2ZsYWMuYwotKysrIGxpYnNuZGZpbGUtMS4wLjI3L3NyYy9mbGFjLmMKK2RpZmYgLS1naXQgYS9zcmMvZmxhYy5jIGIvc3JjL2ZsYWMuYworaW5kZXggNWE0ZjhjMi4uZTRmOWFhYSAxMDA2NDQKKy0tLSBhL3NyYy9mbGFjLmMKKysrKyBiL3NyYy9mbGFjLmMKIEBAIC0xNjksNiArMTY5LDE0IEBAIGZsYWNfYnVmZmVyX2NvcHkgKFNGX1BSSVZBVEUgKnBzZikKLSAJY29uc3QgRkxBQ19faW50MzIqIGNvbnN0ICpidWZmZXIgPSBwZmxhYy0+d2J1ZmZlciA7Ci0gCXVuc2lnbmVkIGkgPSAwLCBqLCBvZmZzZXQgOworIAljb25zdCBpbnQzMl90KiBjb25zdCAqYnVmZmVyID0gcGZsYWMtPndidWZmZXIgOworIAl1bnNpZ25lZCBpID0gMCwgaiwgb2Zmc2V0LCBjaGFubmVscywgbGVuIDsKICAKICsJaWYgKHBzZi0+c2YuY2hhbm5lbHMgIT0gKGludCkgZnJhbWUtPmhlYWRlci5jaGFubmVscykKICsJewlwc2ZfbG9nX3ByaW50ZiAocHNmLCAiRXJyb3I6IEZMQUMgZnJhbWUgY2hhbmdlZCBmcm9tICVkIHRvICVkIGNoYW5uZWxzXG4iCkBAIC00MCw3ICszNywxNSBAQAogIAkvKgogIAkqKglmcmFtZS0+aGVhZGVyLmJsb2Nrc2l6ZSBpcyB2YXJpYWJsZSBhbmQgd2UncmUgdXNpbmcgYSBjb25zdGFudCBibG9ja3NpemUKICAJKioJb2YgRkxBQ19fTUFYX0JMT0NLX1NJWkUuCi1AQCAtNDEwLDcgKzQxOCw3IEBAIHNmX2ZsYWNfbWV0YV9jYWxsYmFjayAoY29uc3QgRkxBQ19fU3RyZWEKK0BAIC0yMDIsNyArMjEwLDYgQEAgZmxhY19idWZmZXJfY29weSAoU0ZfUFJJVkFURSAqcHNmKQorIAkJcmV0dXJuIDAgOworIAkJfSA7CisgCistCisgCWxlbiA9IFNGX01JTiAocGZsYWMtPmxlbiwgZnJhbWUtPmhlYWRlci5ibG9ja3NpemUpIDsKKyAKKyAJaWYgKHBmbGFjLT5yZW1haW4gJSBjaGFubmVscyAhPSAwKQorQEAgLTQzNiw3ICs0NDMsNyBAQCBzZl9mbGFjX21ldGFfY2FsbGJhY2sgKGNvbnN0IEZMQUNfX1N0cmVhbURlY29kZXIgKiBVTlVTRUQgKGRlY29kZXIpLCBjb25zdCBGTEFDXwogIAl7CWNhc2UgRkxBQ19fTUVUQURBVEFfVFlQRV9TVFJFQU1JTkZPIDoKICAJCQlpZiAocHNmLT5zZi5jaGFubmVscyA+IDAgJiYgcHNmLT5zZi5jaGFubmVscyAhPSAoaW50KSBtZXRhZGF0YS0+ZGF0YS5zdHJlYW1faW5mby5jaGFubmVscykKICAJCQl7CXBzZl9sb2dfcHJpbnRmIChwc2YsICJFcnJvcjogRkxBQyBzdHJlYW0gY2hhbmdlZCBmcm9tICVkIHRvICVkIGNoYW5uZWxzXG4iCkBAIC00OSwzICs1NCw2IEBACiAgCQkJCQkJCQkJcHNmLT5zZi5jaGFubmVscywgbWV0YWRhdGEtPmRhdGEuc3RyZWFtX2luZm8uY2hhbm5lbHMpIDsKICAJCQkJcHNmLT5lcnJvciA9IFNGRV9GTEFDX0NIQU5ORUxfQ09VTlRfQ0hBTkdFRCA7CiAgCQkJCXJldHVybiA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZkZjRlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkF1ZGlvIGZvcm1hdCBDb252ZXJzaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZSIKLUFVVEhPUiA9ICJFcmlrIGRlIENhc3RybyBMb3BvIgotREVQRU5EUyA9ICJmbGFjIGxpYm9nZyBsaWJ2b3JiaXMgc3FsaXRlMyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZS9maWxlcy9saWJzbmRmaWxlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODkyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjEtODM2NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkMWQ5N2M2MDc3ZjAzYjVkOTg0ZDc5NTZmZmVkYjdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzOTE5NTJmMjdmNGE5MmNlYjJiNGMwNjQ5M2FjMTA3ODk2ZWQ2Yzc2YmU5YTYxM2E0NzMxZjA3NmQzMGZhYzAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3N2ZlOTMyMDI3MzZiNDdjMDcwMzU5MTBmNDc5NzRhIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJzbmRmaWxlIgotCi1TID0gIiR7V09SS0RJUn0vbGlic25kZmlsZS0ke1BWfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1kb19jb25maWd1cmVfcHJlcGVuZF9hcm0oKSB7Ci0JZXhwb3J0IGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTEKLQlleHBvcnQgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MWFjODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJBdWRpbyBmb3JtYXQgQ29udmVyc2lvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUiCitBVVRIT1IgPSAiRXJpayBkZSBDYXN0cm8gTG9wbyIKK0RFUEVORFMgPSAiZmxhYyBsaWJvZ2cgbGlidm9yYmlzIHNxbGl0ZTMiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUvZmlsZXMvbGlic25kZmlsZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNjg5Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYxLTgzNjUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctODM2Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NDZiNWY5OGNlODlhYzYwY2RiMDYwZmNkMzk4MjQ3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmYzMzkyOWYwNDJmYTMzM2FlZDFlODkyM2FhNjI4YzNlZTllMWViODU1MTI2ODZjNTUwOTJkMWU1YTlkZmE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzdmZTkzMjAyNzM2YjQ3YzA3MDM1OTEwZjQ3OTc0YSIKKworQ1ZFX1BST0RVQ1QgPSAibGlic25kZmlsZSIKKworUyA9ICIke1dPUktESVJ9L2xpYnNuZGZpbGUtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgZCl9IgorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcKKworZG9fY29uZmlndXJlX3ByZXBlbmRfYXJtKCkgeworCWV4cG9ydCBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT0xCisJZXhwb3J0IGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0Cit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMDkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAwOTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwOWJiN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAwOTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDc4N2MwZWU5MDY0MzBiNzcyZjMzY2E1MGI5N2I4YjVjYTA3MGZhZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTY6NDA6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmY3AuYzogZml4IHVpbnQzMiB1bmRlcmZsb3cvb3ZlcmZsb3cgdGhhdCBjYW4KLSBjYXVzZSBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdy4gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjEwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAwOTMKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLS0tLQotIENoYW5nZUxvZyAgICAgIHwgNyArKysrKysrCi0gdG9vbHMvdGlmZmNwLmMgfCA2ICsrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvdG9vbHMvdGlmZmNwLmMKLSsrKyB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcC5jCi1AQCAtMTE2Myw3ICsxMTYzLDcgQEAgYmFkOgotIAotIHN0YXRpYyB2b2lkCi0gY3BTdHJpcFRvVGlsZSh1aW50OCogb3V0LCB1aW50OCogaW4sCi0tICAgIHVpbnQzMiByb3dzLCB1aW50MzIgY29scywgaW50IG91dHNrZXcsIGludCBpbnNrZXcpCi0rICAgIHVpbnQzMiByb3dzLCB1aW50MzIgY29scywgaW50IG91dHNrZXcsIGludDY0IGluc2tldykKLSB7Ci0gCXdoaWxlIChyb3dzLS0gPiAwKSB7Ci0gCQl1aW50MzIgaiA9IGNvbHM7Ci1AQCAtMTMyMCw3ICsxMzIwLDcgQEAgREVDTEFSRXJlYWRGdW5jKHJlYWRDb250aWdUaWxlc0ludG9CdWZmZQotIAl0ZGF0YV90IHRpbGVidWY7Ci0gCXVpbnQzMiBpbWFnZXcgPSBUSUZGU2NhbmxpbmVTaXplKGluKTsKLSAJdWludDMyIHRpbGV3ICA9IFRJRkZUaWxlUm93U2l6ZShpbik7Ci0tCWludCBpc2tldyA9IGltYWdldyAtIHRpbGV3OwotKwlpbnQ2NCBpc2tldyA9IChpbnQ2NClpbWFnZXcgLSAoaW50NjQpdGlsZXc7Ci0gCXVpbnQ4KiBidWZwID0gKHVpbnQ4KikgYnVmOwotIAl1aW50MzIgdHcsIHRsOwotIAl1aW50MzIgcm93OwotQEAgLTEzNDgsNyArMTM0OCw3IEBAIERFQ0xBUkVyZWFkRnVuYyhyZWFkQ29udGlnVGlsZXNJbnRvQnVmZmUKLSAJCQkJc3RhdHVzID0gMDsKLSAJCQkJZ290byBkb25lOwotIAkJCX0KLS0JCQlpZiAoY29sYiArIHRpbGV3ID4gaW1hZ2V3KSB7Ci0rCQkJaWYgKGNvbGIgPiBpc2tldykgewotIAkJCQl1aW50MzIgd2lkdGggPSBpbWFnZXcgLSBjb2xiOwotIAkJCQl1aW50MzIgb3NrZXcgPSB0aWxldyAtIHdpZHRoOwotIAkJCQljcFN0cmlwVG9UaWxlKGJ1ZnAgKyBjb2xiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFjOTBjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gMTg1NTQwN2M0ZTVhMjdhZGUwMDZiMjZjMmRlYzhhMzE3NDVjMzU2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMTo1Njo1NiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX3JlYWQuYywgbGlidGlmZi90aWZmaW9wLmg6IGZpeCB1aW50MzIgb3ZlcmZsb3cKLSBpbiBUSUZGUmVhZEVuY29kZWRTdHJpcCgpIHRoYXQgY2F1c2VkIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVyby4gUmVwb3J0ZWQKLSBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTk2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI2NgotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX3JlYWQuYyB8IDIgKy0KLSBsaWJ0aWZmL3RpZmZpb3AuaCAgfCA0ICsrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNi0xMi0wMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKyAgICAgICAqIGxpYnRpZmYvdGlmX3JlYWQuYywgbGlidGlmZi90aWZmaW9wLmg6IGZpeCB1aW50MzIgb3ZlcmZsb3cgaW4KLSsgICAgICAgVElGRlJlYWRFbmNvZGVkU3RyaXAoKSB0aGF0IGNhdXNlZCBhbiBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8uCi0rICAgICAgIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uCi0rICAgICAgIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTYKLSsKLSAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9yZWFkLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotQEAgLTM0Niw3ICszNDYsNyBAQCBUSUZGUmVhZEVuY29kZWRTdHJpcChUSUZGKiB0aWYsIHVpbnQzMiBzCi0gCXJvd3NwZXJzdHJpcD10ZC0+dGRfcm93c3BlcnN0cmlwOwotIAlpZiAocm93c3BlcnN0cmlwPnRkLT50ZF9pbWFnZWxlbmd0aCkKLSAJCXJvd3NwZXJzdHJpcD10ZC0+dGRfaW1hZ2VsZW5ndGg7Ci0tCXN0cmlwc3BlcnBsYW5lPSgodGQtPnRkX2ltYWdlbGVuZ3RoK3Jvd3NwZXJzdHJpcC0xKS9yb3dzcGVyc3RyaXApOwotKwlzdHJpcHNwZXJwbGFuZT0gVElGRmhvd21hbnlfMzJfbWF4dWludF9jb21wYXQodGQtPnRkX2ltYWdlbGVuZ3RoLCByb3dzcGVyc3RyaXApOwotIAlzdHJpcGlucGxhbmU9KHN0cmlwJXN0cmlwc3BlcnBsYW5lKTsKLSAJcGxhbmU9KHVpbnQxNikoc3RyaXAvc3RyaXBzcGVycGxhbmUpOwotIAlyb3dzPXRkLT50ZF9pbWFnZWxlbmd0aC1zdHJpcGlucGxhbmUqcm93c3BlcnN0cmlwOwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZmaW9wLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZmaW9wLmgKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmZmlvcC5oCi1AQCAtMjUwLDYgKzI1MCwxMCBAQCBzdHJ1Y3QgdGlmZiB7Ci0gI2RlZmluZSBUSUZGaG93bWFueV8zMih4LCB5KSAoKCh1aW50MzIpeCA8ICgweGZmZmZmZmZmIC0gKHVpbnQzMikoeS0xKSkpID8gXAotIAkJCSAgICgoKCh1aW50MzIpKHgpKSsoKCh1aW50MzIpKHkpKS0xKSkvKCh1aW50MzIpKHkpKSkgOiBcCi0gCQkJICAgMFUpCi0rLyogVmFyaWFudCBvZiBUSUZGaG93bWFueV8zMigpIHRoYXQgZG9lc24ndCByZXR1cm4gMCBpZiB4IGNsb3NlIHRvIE1BWFVJTlQuICovCi0rLyogQ2F1dGlvbjogVElGRmhvd21hbnlfMzJfbWF4dWludF9jb21wYXQoeCx5KSp5IG1pZ2h0IG92ZXJmbG93ICovCi0rI2RlZmluZSBUSUZGaG93bWFueV8zMl9tYXh1aW50X2NvbXBhdCh4LCB5KSBcCi0rCQkJICAgKCgodWludDMyKSh4KSAvICh1aW50MzIpKHkpKSArICgoKCh1aW50MzIpKHgpICUgKHVpbnQzMikoeSkpICE9IDApID8gMSA6IDApKQotICNkZWZpbmUgVElGRmhvd21hbnk4XzMyKHgpICgoKHgpJjB4MDcpPygodWludDMyKSh4KT4+MykrMToodWludDMyKSh4KT4+MykKLSAjZGVmaW5lIFRJRkZyb3VuZHVwXzMyKHgsIHkpIChUSUZGaG93bWFueV8zMih4LHkpKih5KSkKLSAjZGVmaW5lIFRJRkZob3dtYW55XzY0KHgsIHkpICgoKCh1aW50NjQpKHgpKSsoKCh1aW50NjQpKHkpKS0xKSkvKCh1aW50NjQpKHkpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YzU3OTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGY4MjAzYzdhYjFkYmQ3YjVjNTkxNTg1NzZiZWM3ZGE5MDE5MWY0MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTE6MTU6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBtYWtlIE9KUEVHRGVjb2RlKCkgZWFybHkgZXhpdCBpbiBjYXNlCi0gb2YgZmFpbHVyZSBpbiBPSlBFR1ByZURlY29kZSgpLiBUaGlzIHdpbGwgYXZvaWQgYSBkaXZpZGUgYnkgemVybywgYW5kCi0gcG90ZW50aWFsIG90aGVyIGlzc3Vlcy4gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjExCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI2NwotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgfCA3ICsrKysrKysKLSBsaWJ0aWZmL3RpZl9vanBlZy5jIHwgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA3MzM5YzFhLi42NmZiY2RjIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rIAotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IG1ha2UgT0pQRUdEZWNvZGUoKSBlYXJseSBleGl0IGluIGNhc2Ugb2YgZmFpbHVyZSBpbgotKwlPSlBFR1ByZURlY29kZSgpLiBUaGlzIHdpbGwgYXZvaWQgYSBkaXZpZGUgYnkgemVybywgYW5kIHBvdGVudGlhbCBvdGhlciBpc3N1ZXMuCi0rCVJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTEKLSsKLSAyMDE2LTEyLTAyIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfcmVhZC5jLCBsaWJ0aWZmL3RpZmZpb3AuaDogZml4IHVpbnQzMiBvdmVyZmxvdyBpbgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX29qcGVnLmMgYi9saWJ0aWZmL3RpZl9vanBlZy5jCi1pbmRleCAxY2NjM2Y5Li5mMTllOGZkIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfb2pwZWcuYwotKysrIGIvbGlidGlmZi90aWZfb2pwZWcuYwotQEAgLTI0NCw2ICsyNDQsNyBAQCB0eXBlZGVmIGVudW0gewotIAotIHR5cGVkZWYgc3RydWN0IHsKLSAJVElGRiogdGlmOwotKyAgICAgICAgaW50IGRlY29kZXJfb2s7Ci0gCSNpZm5kZWYgTElCSlBFR19FTkNBUF9FWFRFUk5BTAotIAlKTVBfQlVGIGV4aXRfam1wYnVmOwotIAkjZW5kaWYKLUBAIC03MjIsNiArNzIzLDcgQEAgT0pQRUdQcmVEZWNvZGUoVElGRiogdGlmLCB1aW50MTYgcykKLSAJCX0KLSAJCXNwLT53cml0ZV9jdXJzdHJpbGUrKzsKLSAJfQotKwlzcC0+ZGVjb2Rlcl9vayA9IDE7Ci0gCXJldHVybigxKTsKLSB9Ci0gCi1AQCAtNzg0LDggKzc4NiwxNCBAQCBPSlBFR1ByZURlY29kZVNraXBTY2FubGluZXMoVElGRiogdGlmKQotIHN0YXRpYyBpbnQKLSBPSlBFR0RlY29kZShUSUZGKiB0aWYsIHVpbnQ4KiBidWYsIHRtc2l6ZV90IGNjLCB1aW50MTYgcykKLSB7Ci0rICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBtb2R1bGVbXT0iT0pQRUdEZWNvZGUiOwotIAlPSlBFR1N0YXRlKiBzcD0oT0pQRUdTdGF0ZSopdGlmLT50aWZfZGF0YTsKLSAJKHZvaWQpczsKLSsgICAgICAgIGlmKCAhc3AtPmRlY29kZXJfb2sgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLG1vZHVsZSwiQ2Fubm90IGRlY29kZTogZGVjb2RlciBub3QgY29ycmVjdGx5IGluaXRpYWxpemVkIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCWlmIChzcC0+bGlianBlZ19qcGVnX3F1ZXJ5X3N0eWxlPT0wKQotIAl7Ci0gCQlpZiAoT0pQRUdEZWNvZGVSYXcodGlmLGJ1ZixjYyk9PTApCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjk4MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDUzOTdhNDE3ZTYxMjU4YzY5MjA5OTA0ZTY1MmExZjQwOWVjM2I5ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMjI6MTM6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmY3AuYzogYXZvaWQgdWludDMyIHVuZGVyZmxvdyBpbiBjcERlY29kZWRTdHJpcHMKLSB0aGF0IGNhbiBjYXVzZSB2YXJpb3VzIGlzc3Vlcywgc3VjaCBhcyBidWZmZXIgb3ZlcmZsb3dzIGluIHRoZSBsaWJyYXJ5LgotIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjY4Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi0tLS0KLSBDaGFuZ2VMb2cgICAgICB8IDcgKysrKysrKwotIHRvb2xzL3RpZmZjcC5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL3Rvb2xzL3RpZmZjcC5jCi0rKysgdGlmZi00LjAuNy90b29scy90aWZmY3AuYwotQEAgLTk4NSw3ICs5ODUsNyBAQCBERUNMQVJFY3BGdW5jKGNwRGVjb2RlZFN0cmlwcykKLSAJCXRzdHJpcF90IHMsIG5zID0gVElGRk51bWJlck9mU3RyaXBzKGluKTsKLSAJCXVpbnQzMiByb3cgPSAwOwotIAkJX1RJRkZtZW1zZXQoYnVmLCAwLCBzdHJpcHNpemUpOwotLQkJZm9yIChzID0gMDsgcyA8IG5zOyBzKyspIHsKLSsJCWZvciAocyA9IDA7IHMgPCBucyAmJiByb3cgPCBpbWFnZWxlbmd0aDsgcysrKSB7Ci0gCQkJdHNpemVfdCBjYyA9IChyb3cgKyByb3dzcGVyc3RyaXAgPiBpbWFnZWxlbmd0aCkgPwotIAkJCSAgICBUSUZGVlN0cmlwU2l6ZShpbiwgaW1hZ2VsZW5ndGggLSByb3cpIDogc3RyaXBzaXplOwotIAkJCWlmIChUSUZGUmVhZEVuY29kZWRTdHJpcChpbiwgcywgYnVmLCBjYykgPCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWY0YTE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLUZyb20gMTBmNzJkZDIzMjg0OWQwMTQyYTA2ODhiY2M5YWE3MTAyNWYxMjBhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMzowNTo1MSArMDAwMAotU3ViamVjdDogW1BBVENIIDIvNF0gKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4Ci0gaGVhcC1iYXNlZCBidWZmZXIgb3ZlcmZsb3cgb24gZ2VuZXJhdGlvbiBvZiBQaXhhckxvZyAvIExVViBjb21wcmVzc2VkIGZpbGVzLAotIHdpdGggQ29sb3JNYXAsIFRyYW5zZmVyRnVuY3Rpb24gYXR0YWNoZWQgYW5kIG5hc3R5IHBsYXlzIHdpdGggYml0c3BlcnNhbXBsZS4KLSBUaGUgZml4IGZvciBMVVYgaGFzIG5vdCBiZWVuIHRlc3RlZCwgYnV0IHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBraW5kIG9mIGlzc3VlCi0gb2YgUGl4YXJMb2cuIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTYtMTAyNjkKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2x1di5jICAgICAgfCAxOCArKysrKysrKysrKysrKy0tLS0KLSBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDJlOTEzYjYuLjBhMmMyYTcgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsNCArMSwxNCBAQAotIDIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4IGhlYXAtYmFzZWQgYnVmZmVyCi0rCW92ZXJmbG93IG9uIGdlbmVyYXRpb24gb2YgUGl4YXJMb2cgLyBMVVYgY29tcHJlc3NlZCBmaWxlcywgd2l0aAotKwlDb2xvck1hcCwgVHJhbnNmZXJGdW5jdGlvbiBhdHRhY2hlZCBhbmQgbmFzdHkgcGxheXMgd2l0aCBiaXRzcGVyc2FtcGxlLgotKwlUaGUgZml4IGZvciBMVVYgaGFzIG5vdCBiZWVuIHRlc3RlZCwgYnV0IHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBraW5kCi0rCW9mIGlzc3VlIG9mIFBpeGFyTG9nLgotKwlSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA0Ci0rCi0rMjAxNi0xMi0wMyBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotICAKLSAJKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBtYWtlIE9KUEVHRGVjb2RlKCkgZWFybHkgZXhpdCBpbiBjYXNlIG9mIGZhaWx1cmUgaW4KLSAJT0pQRUdQcmVEZWNvZGUoKS4gVGhpcyB3aWxsIGF2b2lkIGEgZGl2aWRlIGJ5IHplcm8sIGFuZCBwb3RlbnRpYWwgb3RoZXIgaXNzdWVzLgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2x1di5jIGIvbGlidGlmZi90aWZfbHV2LmMKLWluZGV4IGY2OGE5YjEuLmU2NzgzZGIgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9sdXYuYwotKysrIGIvbGlidGlmZi90aWZfbHV2LmMKLUBAIC0xNTgsNiArMTU4LDcgQEAKLSB0eXBlZGVmIHN0cnVjdCBsb2dMdXZTdGF0ZSBMb2dMdXZTdGF0ZTsKLSAKLSBzdHJ1Y3QgbG9nTHV2U3RhdGUgewotKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9zdGF0ZTsgIC8qIDEgaWYgZW5jb2RlciBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgKi8KLSAJaW50ICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhZm10OyAgIC8qIHVzZXIgZGF0YSBmb3JtYXQgKi8KLSAJaW50ICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21ldGg7ICAgIC8qIGVuY29kaW5nIG1ldGhvZCAqLwotIAlpbnQgICAgICAgICAgICAgICAgICAgICBwaXhlbF9zaXplOyAgICAgLyogYnl0ZXMgcGVyIHBpeGVsICovCi1AQCAtMTU1Miw2ICsxNTUzLDcgQEAgTG9nTHV2U2V0dXBFbmNvZGUoVElGRiogdGlmKQotIAkJICAgIHRkLT50ZF9waG90b21ldHJpYywgIm11c3QgYmUgZWl0aGVyIExvZ0xVViBvciBMb2dMIik7Ci0gCQlicmVhazsKLSAJfQotKwlzcC0+ZW5jb2Rlcl9zdGF0ZSA9IDE7Ci0gCXJldHVybiAoMSk7Ci0gbm90c3VwcG9ydGVkOgotIAlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAotQEAgLTE1NjMsMTkgKzE1NjUsMjcgQEAgbm90c3VwcG9ydGVkOgotIHN0YXRpYyB2b2lkCi0gTG9nTHV2Q2xvc2UoVElGRiogdGlmKQotIHsKLSsgICAgICAgIExvZ0x1dlN0YXRlKiBzcCA9IChMb2dMdXZTdGF0ZSopIHRpZi0+dGlmX2RhdGE7Ci0gCVRJRkZEaXJlY3RvcnkgKnRkID0gJnRpZi0+dGlmX2RpcjsKLSAKLSsJYXNzZXJ0KHNwICE9IDApOwotIAkvKgotIAkgKiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsd2F5cyB3YW50IHRvIHdyaXRlIG91dCB0aGUgc2FtZQotIAkgKiBiaXRzcGVyc2FtcGxlIGFuZCBzYW1wbGVmb3JtYXQgZm9yIG91ciBUSUZGIGZpbGUsCi0gCSAqIHJlZ2FyZGxlc3Mgb2YgdGhlIGRhdGEgZm9ybWF0IGJlaW5nIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotIAkgKiBTaW5jZSB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkIGFmdGVyIHRhZ3MgaGF2ZSBiZWVuIHNldCBidXQKLSAJICogYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIHJlY29yZGVkIGluIHRoZSBmaWxlLCB3ZSByZXNldCB0aGVtIGhlcmUuCi0rICAgICAgICAgKiBOb3RlOiB0aGlzIGlzIHJlYWxseSBhIG5hc3R5IGFwcHJvYWNoLiBTZWUgUGl4YXJMb2dDbG9zZQotIAkgKi8KLS0JdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCA9Ci0tCSAgICAodGQtPnRkX3Bob3RvbWV0cmljID09IFBIT1RPTUVUUklDX0xPR0wpID8gMSA6IDM7Ci0tCXRkLT50ZF9iaXRzcGVyc2FtcGxlID0gMTY7Ci0tCXRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfSU5UOwotKyAgICAgICAgaWYoIHNwLT5lbmNvZGVyX3N0YXRlICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAvKiBTZWUgUGl4YXJMb2dDbG9zZS4gTWlnaHQgYXZvaWQgaXNzdWVzIHdpdGggdGFncyB3aG9zZSBzaXplIGRlcGVuZHMKLSsgICAgICAgICAgICAgKiBvbiB0aG9zZSBiZWxvdywgYnV0IG5vdCBjb21wbGV0ZWx5IHN1cmUgdGhpcyBpcyBlbm91Z2guICovCi0rICAgICAgICAgICAgdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCA9Ci0rICAgICAgICAgICAgICAgICh0ZC0+dGRfcGhvdG9tZXRyaWMgPT0gUEhPVE9NRVRSSUNfTE9HTCkgPyAxIDogMzsKLSsgICAgICAgICAgICB0ZC0+dGRfYml0c3BlcnNhbXBsZSA9IDE2OwotKyAgICAgICAgICAgIHRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfSU5UOwotKyAgICAgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX3BpeGFybG9nLmMgYi9saWJ0aWZmL3RpZl9waXhhcmxvZy5jCi1pbmRleCBkMTI0NmMzLi5hYTk5YmM5IDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfcGl4YXJsb2cuYwotKysrIGIvbGlidGlmZi90aWZfcGl4YXJsb2cuYwotQEAgLTEyMzMsOCArMTIzMywxMCBAQCBQaXhhckxvZ1Bvc3RFbmNvZGUoVElGRiogdGlmKQotIHN0YXRpYyB2b2lkCi0gUGl4YXJMb2dDbG9zZShUSUZGKiB0aWYpCi0gewotKyAgICAgICAgUGl4YXJMb2dTdGF0ZSogc3AgPSAoUGl4YXJMb2dTdGF0ZSopIHRpZi0+dGlmX2RhdGE7Ci0gCVRJRkZEaXJlY3RvcnkgKnRkID0gJnRpZi0+dGlmX2RpcjsKLSAKLSsJYXNzZXJ0KHNwICE9IDApOwotIAkvKiBJbiBhIHJlYWxseSBzbmVha3kgKGFuZCByZWFsbHkgaW5jb3JyZWN0LCBhbmQgdW50cnV0aGZ1bCwgYW5kCi0gCSAqIHRyb3VibGVzb21lLCBhbmQgZXJyb3ItcHJvbmUpIG1hbmV1dmVyIHRoYXQgY29tcGxldGVseSBnb2VzIGFnYWluc3QKLSAJICogdGhlIHNwaXJpdCBvZiBUSUZGLCBhbmQgYnJlYWtzIFRJRkYsIG9uIGNsb3NlLCB3ZSBjb3ZlcnRseQotQEAgLTEyNDMsOCArMTI0NSwxOSBAQCBQaXhhckxvZ0Nsb3NlKFRJRkYqIHRpZikKLSAJICogcmVhZGVycyB0aGF0IGRvbid0IGtub3cgYWJvdXQgUGl4YXJMb2csIG9yIGhvdyB0byBzZXQKLSAJICogdGhlIFBJWEFSTE9HREFURk1UIHBzZXVkby10YWcuCi0gCSAqLwotLQl0ZC0+dGRfYml0c3BlcnNhbXBsZSA9IDg7Ci0tCXRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfVUlOVDsKLSsKLSsgICAgICAgIGlmIChzcC0+c3RhdGUmUExTVEFURV9JTklUKSB7Ci0rICAgICAgICAgICAgLyogV2UgdGVzdCB0aGUgc3RhdGUgdG8gYXZvaWQgYW4gaXNzdWUgc3VjaCBhcyBpbgotKyAgICAgICAgICAgICAqIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDQKLSsgICAgICAgICAgICAgKiBXaGF0IGFwcGVuZHMgaW4gdGhhdCBjYXNlIGlzIHRoYXQgdGhlIGJpdHNwZXJzYW1wbGUgaXMgMSBhbmQKLSsgICAgICAgICAgICAgKiBhIFRyYW5zZmVyRnVuY3Rpb24gaXMgc2V0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhbnNmZXJGdW5jdGlvbgotKyAgICAgICAgICAgICAqIGRlcGVuZHMgb24gMTw8Yml0c3BlcnNhbXBsZS4gU28gaWYgd2UgaW5jcmVhc2UgaXQsIGFuIGFjY2VzcwotKyAgICAgICAgICAgICAqIG91dCBvZiB0aGUgYnVmZmVyIHdpbGwgaGFwcGVuIGF0IGRpcmVjdG9yeSBmbHVzaGluZy4KLSsgICAgICAgICAgICAgKiBBbm90aGVyIG9wdGlvbiB3b3VsZCBiZSB0byBjbGVhciB0aG9zZSB0YXJncy4gCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgdGQtPnRkX2JpdHNwZXJzYW1wbGUgPSA4OwotKyAgICAgICAgICAgIHRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfVUlOVDsKLSsgICAgICAgIH0KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhZDZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIDZlNzA0MmM2MWUzMDBjZjk5NzFjNjQ1Yzc5ZDA1ZGU5NzRiMjQzMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTE6MDI6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdICogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkKLSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCgpIHRvIGluc3RhbmNpYXRlIGNvbXB1dGUgbnRyaXBzIGFzCi0gVElGRmhvd21hbnlfMzIodGQtPnRkX2ltYWdlbGVuZ3RoLCByb3dzcGVyc3RyaXApLCBpbnN0ZWFkIG9mIGEgbG9naWMgYmFzZWQgb24KLSB0aGUgdG90YWwgc2l6ZSBvZiBkYXRhLiBXaGljaCBpcyBmYXVsdHkgaXMgdGhlIHRvdGFsIHNpemUgb2YgZGF0YSBpcyBub3QKLSBzdWZmaWNpZW50IHRvIGZpbGwgdGhlIHdob2xlIGltYWdlLCBhbmQgdGh1cyByZXN1bHRzIGluIHJlYWRpbmcgb3V0c2lkZSBvZgotIHRoZSBTdHJpcEJ5Q291bnRzL1N0cmlwT2Zmc2V0cyBhcnJheXMgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lKCkuIFJlcG9ydGVkCi0gYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOC4KLQotKiBsaWJ0aWZmL3RpZl9zdHJpcC5jOiByZXZlcnQgdGhlIGNoYW5nZSBpbiBUSUZGTnVtYmVyT2ZTdHJpcHMoKSBkb25lCi1mb3IgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NyAvIENWRS0yMDE2LTkyNzMgc2luY2UKLXRoZSBhYm92ZSBjaGFuZ2UgaXMgYSBiZXR0ZXIgZml4IHRoYXQgbWFrZXMgaXQgdW5uZWNlc3NhcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI3MAotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcnJlYWQuYyB8IDIyICsrKysrKysrKystLS0tLS0tLS0tLS0KLSBsaWJ0aWZmL3RpZl9zdHJpcC5jICAgfCAgOSAtLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAwYTJjMmE3Li42ZTMwZTQxIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsMjAgQEAKLSAyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoKSB0bwotKwlpbnN0YW5jaWF0ZSBjb21wdXRlIG50cmlwcyBhcyBUSUZGaG93bWFueV8zMih0ZC0+dGRfaW1hZ2VsZW5ndGgsIHJvd3NwZXJzdHJpcCksCi0rCWluc3RlYWQgb2YgYSBsb2dpYyBiYXNlZCBvbiB0aGUgdG90YWwgc2l6ZSBvZiBkYXRhLiBXaGljaCBpcyBmYXVsdHkgaXMKLSsJdGhlIHRvdGFsIHNpemUgb2YgZGF0YSBpcyBub3Qgc3VmZmljaWVudCB0byBmaWxsIHRoZSB3aG9sZSBpbWFnZSwgYW5kIHRodXMKLSsJcmVzdWx0cyBpbiByZWFkaW5nIG91dHNpZGUgb2YgdGhlIFN0cmlwQnlDb3VudHMvU3RyaXBPZmZzZXRzIGFycmF5cyB3aGVuCi0rCXVzaW5nIFRJRkZSZWFkU2NhbmxpbmUoKS4KLSsJUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOC4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9zdHJpcC5jOiByZXZlcnQgdGhlIGNoYW5nZSBpbiBUSUZGTnVtYmVyT2ZTdHJpcHMoKSBkb25lCi0rCWZvciBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3IC8gQ1ZFLTIwMTYtOTI3MyBzaW5jZQotKwl0aGUgYWJvdmUgY2hhbmdlIGlzIGEgYmV0dGVyIGZpeCB0aGF0IG1ha2VzIGl0IHVubmVjZXNzYXJ5LgotKwotKzIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4IGhlYXAtYmFzZWQgYnVmZmVyCi0gCW92ZXJmbG93IG9uIGdlbmVyYXRpb24gb2YgUGl4YXJMb2cgLyBMVVYgY29tcHJlc3NlZCBmaWxlcywgd2l0aAotIAlDb2xvck1hcCwgVHJhbnNmZXJGdW5jdGlvbiBhdHRhY2hlZCBhbmQgbmFzdHkgcGxheXMgd2l0aCBiaXRzcGVyc2FtcGxlLgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotaW5kZXggM2VlYzc5Yy4uNTcwZDBjMyAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotKysrIGIvbGlidGlmZi90aWZfZGlycmVhZC5jCi1AQCAtNTUwMiw4ICs1NTAyLDcgQEAgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoVElGRiogdGlmKQotIAl1aW50NjQgcm93YmxvY2tieXRlczsKLSAJdWludDY0IHN0cmlwYnl0ZXM7Ci0gCXVpbnQzMiBzdHJpcDsKLS0JdWludDY0IG5zdHJpcHM2NDsKLS0JdWludDMyIG5zdHJpcHMzMjsKLSsJdWludDMyIG5zdHJpcHM7Ci0gCXVpbnQzMiByb3dzcGVyc3RyaXA7Ci0gCXVpbnQ2NCogbmV3Y291bnRzOwotIAl1aW50NjQqIG5ld29mZnNldHM7Ci1AQCAtNTUzNCwxOCArNTUzMywxNyBAQCBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcChUSUZGKiB0aWYpCi0gCSAgICByZXR1cm47Ci0gCi0gCS8qCi0tCSAqIG5ldmVyIGluY3JlYXNlIHRoZSBudW1iZXIgb2Ygc3RyaXBzIGluIGFuIGltYWdlCi0rCSAqIG5ldmVyIGluY3JlYXNlIHRoZSBudW1iZXIgb2Ygcm93cyBwZXIgc3RyaXAKLSAJICovCi0gCWlmIChyb3dzcGVyc3RyaXAgPj0gdGQtPnRkX3Jvd3NwZXJzdHJpcCkKLSAJCXJldHVybjsKLS0JbnN0cmlwczY0ID0gVElGRmhvd21hbnlfNjQoYnl0ZWNvdW50LCBzdHJpcGJ5dGVzKTsKLS0JaWYgKChuc3RyaXBzNjQ9PTApfHwobnN0cmlwczY0PjB4RkZGRkZGRkYpKSAvKiBzb21ldGhpbmcgaXMgd29ua3ksIGRvIG5vdGhpbmcuICovCi0tCSAgICByZXR1cm47Ci0tCW5zdHJpcHMzMiA9ICh1aW50MzIpbnN0cmlwczY0OwotKyAgICAgICAgbnN0cmlwcyA9IFRJRkZob3dtYW55XzMyKHRkLT50ZF9pbWFnZWxlbmd0aCwgcm93c3BlcnN0cmlwKTsKLSsgICAgICAgIGlmKCBuc3RyaXBzID09IDAgKQotKyAgICAgICAgICAgIHJldHVybjsKLSAKLS0JbmV3Y291bnRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzMzIsIHNpemVvZiAodWludDY0KSwKLSsJbmV3Y291bnRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzLCBzaXplb2YgKHVpbnQ2NCksCi0gCQkJCSJmb3IgY2hvcHBlZCBcIlN0cmlwQnl0ZUNvdW50c1wiIGFycmF5Iik7Ci0tCW5ld29mZnNldHMgPSAodWludDY0KikgX1RJRkZDaGVja01hbGxvYyh0aWYsIG5zdHJpcHMzMiwgc2l6ZW9mICh1aW50NjQpLAotKwluZXdvZmZzZXRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzLCBzaXplb2YgKHVpbnQ2NCksCi0gCQkJCSJmb3IgY2hvcHBlZCBcIlN0cmlwT2Zmc2V0c1wiIGFycmF5Iik7Ci0gCWlmIChuZXdjb3VudHMgPT0gTlVMTCB8fCBuZXdvZmZzZXRzID09IE5VTEwpIHsKLSAJCS8qCi1AQCAtNTU2MiwxOCArNTU2MCwxOCBAQCBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcChUSUZGKiB0aWYpCi0gCSAqIEZpbGwgdGhlIHN0cmlwIGluZm9ybWF0aW9uIGFycmF5cyB3aXRoIG5ldyBieXRlY291bnRzIGFuZCBvZmZzZXRzCi0gCSAqIHRoYXQgcmVmbGVjdCB0aGUgYnJva2VuLXVwIGZvcm1hdC4KLSAJICovCi0tCWZvciAoc3RyaXAgPSAwOyBzdHJpcCA8IG5zdHJpcHMzMjsgc3RyaXArKykgewotKwlmb3IgKHN0cmlwID0gMDsgc3RyaXAgPCBuc3RyaXBzOyBzdHJpcCsrKSB7Ci0gCQlpZiAoc3RyaXBieXRlcyA+IGJ5dGVjb3VudCkKLSAJCQlzdHJpcGJ5dGVzID0gYnl0ZWNvdW50OwotIAkJbmV3Y291bnRzW3N0cmlwXSA9IHN0cmlwYnl0ZXM7Ci0tCQluZXdvZmZzZXRzW3N0cmlwXSA9IG9mZnNldDsKLSsJCW5ld29mZnNldHNbc3RyaXBdID0gc3RyaXBieXRlcyA/IG9mZnNldCA6IDA7Ci0gCQlvZmZzZXQgKz0gc3RyaXBieXRlczsKLSAJCWJ5dGVjb3VudCAtPSBzdHJpcGJ5dGVzOwotIAl9Ci0gCS8qCi0gCSAqIFJlcGxhY2Ugb2xkIHNpbmdsZSBzdHJpcCBpbmZvIHdpdGggbXVsdGktc3RyaXAgaW5mby4KLSAJICovCi0tCXRkLT50ZF9zdHJpcHNwZXJpbWFnZSA9IHRkLT50ZF9uc3RyaXBzID0gbnN0cmlwczMyOwotKwl0ZC0+dGRfc3RyaXBzcGVyaW1hZ2UgPSB0ZC0+dGRfbnN0cmlwcyA9IG5zdHJpcHM7Ci0gCVRJRkZTZXRGaWVsZCh0aWYsIFRJRkZUQUdfUk9XU1BFUlNUUklQLCByb3dzcGVyc3RyaXApOwotIAotIAlfVElGRmZyZWUodGQtPnRkX3N0cmlwYnl0ZWNvdW50KTsKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9zdHJpcC5jIGIvbGlidGlmZi90aWZfc3RyaXAuYwotaW5kZXggNGM0NmVjZi4uMTY3NmU0NyAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX3N0cmlwLmMKLSsrKyBiL2xpYnRpZmYvdGlmX3N0cmlwLmMKLUBAIC02MywxNSArNjMsNiBAQCBUSUZGTnVtYmVyT2ZTdHJpcHMoVElGRiogdGlmKQotIAlUSUZGRGlyZWN0b3J5ICp0ZCA9ICZ0aWYtPnRpZl9kaXI7Ci0gCXVpbnQzMiBuc3RyaXBzOwotIAotLSAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIGFscmVhZHkgY29tcHV0ZWQgYW5kIHN0b3JlIGluIHRkX25zdHJpcHMsIHRoZW4gcmV0dXJuIGl0LAotLSAgICAgICBzaW5jZSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCBtaWdodCBoYXZlIGFsdGVyZWQgYW5kIHJlc2l6ZWQgdGhlCi0tICAgICAgIHNpbmNlIHRoZSB0ZF9zdHJpcGJ5dGVjb3VudCBhbmQgdGRfc3RyaXBvZmZzZXQgYXJyYXlzIHRvIHRoZSBuZXcgdmFsdWUKLS0gICAgICAgYWZ0ZXIgdGhlIGluaXRpYWwgYWZmZWN0YXRpb24gb2YgdGRfbnN0cmlwcyA9IFRJRkZOdW1iZXJPZlN0cmlwcygpIGluCi0tICAgICAgIHRpZl9kaXJyZWFkLmMgfmxpbmUgMzYxMi4KLS0gICAgICAgU2VlIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODcgKi8KLS0gICAgaWYoIHRkLT50ZF9uc3RyaXBzICkKLS0gICAgICAgIHJldHVybiB0ZC0+dGRfbnN0cmlwczsKLS0KLSAJbnN0cmlwcyA9ICh0ZC0+dGRfcm93c3BlcnN0cmlwID09ICh1aW50MzIpIC0xID8gMSA6Ci0gCSAgICAgVElGRmhvd21hbnlfMzIodGQtPnRkX2ltYWdlbGVuZ3RoLCB0ZC0+dGRfcm93c3BlcnN0cmlwKSk7Ci0gCWlmICh0ZC0+dGRfcGxhbmFyY29uZmlnID09IFBMQU5BUkNPTkZJR19TRVBBUkFURSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlNWJjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gOTY1N2JiZTNjZGNlNGFhYTkwZTA3ZDUwYzFjNzBhZTUyZGEwYmE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFNhdCwgMyBEZWMgMjAxNiAxMTozNTo1NiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIHRvb2xzL3RpZmZjcm9wLmM6IGZpeCByZWFkQ29udGlnU3RyaXBzSW50b0J1ZmZlcigpIGluIC1pCi0gKGlnbm9yZSkgbW9kZSBzbyB0aGF0IHRoZSBvdXRwdXQgYnVmZmVyIGlzIGNvcnJlY3RseSBpbmNyZW1lbnRlZCB0byBhdm9pZAotIHdyaXRlIG91dHNpZGUgYm91bmRzLiBSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDI3MQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gQ2hhbmdlTG9nICAgICAgICB8IDcgKysrKysrKwotIHRvb2xzL3RpZmZjcm9wLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNyb3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy90b29scy90aWZmY3JvcC5jCi0rKysgdGlmZi00LjAuNy90b29scy90aWZmY3JvcC5jCi1AQCAtMzY5OCw3ICszNjk4LDcgQEAgc3RhdGljIGludCByZWFkQ29udGlnU3RyaXBzSW50b0J1ZmZlciAoVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgc3RyaXAsICh1bnNpZ25lZCBsb25nKXJvd3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIGJ1ZnAgKz0gYnl0ZXNfcmVhZDsKLSsgICAgICAgICAgICAgICAgYnVmcCArPSBzdHJpcHNpemU7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICByZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEwNjg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKaW5kZXggZWQ5YzBmNS4uYjBkYjk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCAyMCArKysrKysrKysrKysrKysrLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCAwMjQwZjBiLi40MmVhZWI3IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKIEBAIC0xLDMgKzEsMTEgQEAKICsyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgogKwpAQCAtMzQsMTEgKzM0LDExIEBACiAgMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICAKICAJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0yMDQ3LDcgKzIwNDcsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4KFRJRkYqCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK2luZGV4IDI5NjdkYTUuLjhkNjY4NmIgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCitAQCAtMjExMSw3ICsyMTExLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpCiAgewogIAl1aW50NjQgbTsKICAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKQEAgLTUwLDcgKzUwLDcgQEAKICAJbT12YWx1ZTsKICAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKICAJCVRJRkZTd2FiTG9uZzgoJm0pOwotQEAgLTIwNjAsNyArMjA2MywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzhBcnJheShUCitAQCAtMjEyNCw3ICsyMTI3LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpCiAgewogIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7CiAgCWFzc2VydChzaXplb2YodWludDY0KT09OCk7CkBAIC02Miw3ICs2Miw3IEBACiAgCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCiAgCQlUSUZGU3dhYkFycmF5T2ZMb25nOCh2YWx1ZSxjb3VudCk7CiAgCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9MT05HOCxjb3VudCxjb3VudCo4LHZhbHVlKSk7Ci1AQCAtMjA3Miw3ICsyMDc4LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzgoVElGRioKK0BAIC0yMTM2LDcgKzIxNDIsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHUKICB7CiAgCWludDY0IG07CiAgCWFzc2VydChzaXplb2YoaW50NjQpPT04KTsKQEAgLTc0LDcgKzc0LDcgQEAKICAJbT12YWx1ZTsKICAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKICAJCVRJRkZTd2FiTG9uZzgoKHVpbnQ2NCopKCZtKSk7Ci1AQCAtMjA4NSw3ICsyMDk0LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzhBcnJheSgKK0BAIC0yMTQ5LDcgKzIxNTgsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGQKICB7CiAgCWFzc2VydChjb3VudDwweDIwMDAwMDAwKTsKICAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwpAQCAtODYsMyArODYsNiBAQAogIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQogIAkJVElGRlN3YWJBcnJheU9mTG9uZzgoKHVpbnQ2NCopdmFsdWUsY291bnQpOwogIAlyZXR1cm4oVElGRldyaXRlRGlyZWN0b3J5VGFnRGF0YSh0aWYsbmRpcixkaXIsdGFnLFRJRkZfU0xPTkc4LGNvdW50LGNvdW50KjgsdmFsdWUpKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBmZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSA1MzE3Y2UyMTU5MzZjZTYxMTg0NjU1N2JiMTA0YjQ5ZDNiNGM4MzQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTM6MjE6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdAorIGZpbmRpbmcgdGhlIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjay4gRml4ZXMKKyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI3IFJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9mOTFjYTgzYTIxYTZhNTgzMDUwZTVhNTc1NWNlMTQ0MWIyYmYxZDdlXQorCitDVkU6IENWRS0yMDE3LTEzNzI2CisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgICAgICAgfCA3ICsrKysrKysKKyBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgNyArKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDY5ODBkYTguLjNlMjk5ZDkgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTctMDgtMjMgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisrCisrCSogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gcmVsYXRlZCB0byBub3QgZmluZGluZyB0aGUKKysJU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLgorKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI3CisrCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisrCisgMjAxNy0wNy0xNSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKyAKKyAJKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluICJSYXciCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK2luZGV4IDhkNjY4NmIuLjE0MDkwYWUgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCitAQCAtODIxLDcgKzgyMSwxMiBAQCBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoVElGRiogdGlmLCBpbnQgaXNpbWFnZSwgaW50IGltYWdlZG9uZSwgdWludDY0KiBwZGlyb2ZmKQorIAkJCVRJRkZEaXJFbnRyeSogbmI7CisgCQkJZm9yIChuYT0wLCBuYj1kaXI7IDsgbmErKywgbmIrKykKKyAJCQl7CistCQkJCWFzc2VydChuYTxuZGlyKTsKKysJCQkJaWYoIG5hID09IG5kaXIgKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLG1vZHVsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBmaW5kIFN1YklGRCB0YWciKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkJaWYgKG5iLT50ZGlyX3RhZz09VElGRlRBR19TVUJJRkQpCisgCQkJCQlicmVhazsKKyAJCQl9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyOGMyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gYTVlODI0NWNjNjc2NDZmN2I0NDhiNGNhMjkyNThlYWFjNDE4MTAyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjMzOjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdAorIGZpdHRpbmcgb24gdWludDMyIHdoZW4gc2VsZWN0aW5nIHRoZSB2YWx1ZSBvZiBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluCisgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLiBGaXhlcworIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjggUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKworU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2I2YWYxMzdiZjllZjg1MmYxYTQ4YTUwYTVhZmI4OGY5ZTlkYTAxY2NdCisKK0NWRTogQ1ZFLTIwMTctMTM3MjcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KKyBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgIDkgKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCAzZTI5OWQ5Li44ZjVlZmU5IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDcgKzEsMTUgQEAKKyAyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgorIAorKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHRvIHRhZyB2YWx1ZSBub3QgZml0dGluZworKwlvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjaworKwkoaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLgorKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI4CisrCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisrCisrMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKyAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQorLQlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCisrCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4gVElGRldyaXRlRGlyZWN0b3J5U2VjKCkpCisgCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKKyAJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKyAKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYworaW5kZXggMTQwOTBhZS4uZjBhNGJhYSAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK0BAIC0xOTQ5LDcgKzE5NDksMTQgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpcikKKyAJCWZvciAocD0wOyBwIDwgdGlmLT50aWZfZGlyLnRkX25zdWJpZmQ7IHArKykKKyAJCXsKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGEgIT0gMCk7CistCQkJYXNzZXJ0KCpwYSA8PSAweEZGRkZGRkZGVUwpOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGhhcHBlbiBpZiBhbiBjbGFzc2ljVElGRiBoYXMgYSBTdWJJRkQgb2YgdHlwZSBMT05HOCAod2hpY2ggaXMgaWxsZWdhbCkgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBpZiggKnBhID4gMHhGRkZGRkZGRlVMKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJJbGxlZ2FsIHZhbHVlIGZvciBTdWJJRkQgdGFnIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShvKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkqcGIrKz0odWludDMyKSgqcGErKyk7CisgCQl9CisgCQluPVRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRJZmRBcnJheSh0aWYsbmRpcixkaXIsVElGRlRBR19TVUJJRkQsdGlmLT50aWZfZGlyLnRkX25zdWJpZmQsbyk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTkyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjgwNDQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDQ4NzgwYjRmY2M0MjVjZGRjNGVmOGZmZGY1MzZmOTZhMGQxYjMxM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE2OjM4OjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotYXZvaWQgVW5kZWZpbmVkQmVoYXZpb3JTYW5pdGl6ZXIgd2FybmluZy4KLVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy03NTkyCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTQ6MjU6MTAuMTQzOTI2MDI1ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNToyMDoyMS4yOTE4MzkyMzAgKzA1MzAKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotKwlhdm9pZCBVbmRlZmluZWRCZWhhdmlvclNhbml0aXplciB3YXJuaW5nLgotKwlQYXRjaCBieSBOaWNvbGFzIFBlbmEuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTgKLSsKLSAyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoKSB0bwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZ2V0aW1hZ2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9nZXRpbWFnZS5jCTIwMTYtMTEtMTggMDg6MTc6NDUuMDAwMDAwMDAwICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9nZXRpbWFnZS5jCTIwMTctMDQtMjQgMTU6MTc6NDYuNjcxODQzMjgzICswNTMwCi1AQCAtMTMwNSw3ICsxMzA1LDcgQEAKLSAgICAgd2hpbGUgKGgtLSA+IDApIHsKLSAJZm9yICh4ID0gdzsgeC0tID4gMDspCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgKmNwKysgPSBCV21hcFsqcHBdWzBdICYgKCoocHArMSkgPDwgMjQgfCB+QTEpOwotKyAgICAgICAgICAgICpjcCsrID0gQldtYXBbKnBwXVswXSAmICgodWludDMyKSoocHArMSkgPDwgMjQgfCB+QTEpOwotICAgICAgICAgICAgIHBwICs9IHNhbXBsZXNwZXJwaXhlbDsKLSAgICAgICAgIH0KLSAJY3AgKz0gdG9za2V3OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MGRmY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLUZyb20gZDYwMzMyMDU3Yjk1NzVhZGE0ZjI2NDQ4OTU4MmIxM2UzMDEzN2JlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTk6MDI6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZmZpb3AuaCwgdGlmX3VuaXguYywgdGlmX3dpbjMyLmMsIHRpZl92bXMuYzogYWRkCi0gX1RJRkZjYWxsb2MoKQotCi0qIGxpYnRpZmYvdGlmX3JlYWQuYzogVElGRlJlYWRCdWZmZXJTZXR1cCgpOiB1c2UgX1RJRkZjYWxsb2MoKSB0byB6ZXJvCi1pbml0aWFsaXplIHRpZl9yYXdkYXRhLgotRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5MwotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxOTowMzoyMC41ODQxNTU0NTIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI2IDEyOjA5OjQxLjk4Njg2Njg5NiArMDUzMAotQEAgLTQ0LDYgKzQ0LDE0IEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmZmlvcC5oLCB0aWZfdW5peC5jLCB0aWZfd2luMzIuYyA6IGFkZCBfVElGRmNhbGxvYygpCi0rCi0rCSogbGlidGlmZi90aWZfcmVhZC5jOiBUSUZGUmVhZEJ1ZmZlclNldHVwKCk6IHVzZSBfVElGRmNhbGxvYygpIHRvIHplcm8KLSsJaW5pdGlhbGl6ZSB0aWZfcmF3ZGF0YS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MQotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi0gCWF2b2lkIFVuZGVmaW5lZEJlaGF2aW9yU2FuaXRpemVyIHdhcm5pbmcuCi0gCVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9yZWFkLmMJMjAxNy0wNC0yNSAxOTowMzoyMC41ODQxNTU0NTIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwkyMDE3LTA0LTI2IDEyOjExOjQyLjgxNDg2MzcyOSArMDUzMAotQEAgLTk4Niw3ICs5ODYsOSBAQAotIAkJCQkgIkludmFsaWQgYnVmZmVyIHNpemUiKTsKLSAJCSAgICByZXR1cm4gKDApOwotIAkJfQotLQkJdGlmLT50aWZfcmF3ZGF0YSA9ICh1aW50OCopIF9USUZGbWFsbG9jKHRpZi0+dGlmX3Jhd2RhdGFzaXplKTsKLSsgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB0byB6ZXJvIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBpbiBjYXNlIG9mICovCi0rICAgICAgICAgICAgICAgIC8qIHNob3J0IHJlYWRzIChodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUxKSAqLwotKyAgICAgICAgICAgICAgICB0aWYtPnRpZl9yYXdkYXRhID0gKHVpbnQ4KikgX1RJRkZjYWxsb2MoMSwgdGlmLT50aWZfcmF3ZGF0YXNpemUpOwotIAkJdGlmLT50aWZfZmxhZ3MgfD0gVElGRl9NWUJVRkZFUjsKLSAJfQotIAlpZiAodGlmLT50aWZfcmF3ZGF0YSA9PSBOVUxMKSB7Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl91bml4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfdW5peC5jCTIwMTUtMDgtMjkgMDM6NDY6MjIuNzA3ODE3MDQxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl91bml4LmMJMjAxNy0wNC0yNiAxMjoxMzowNy40NDI4NjE1MTAgKzA1MzAKLUBAIC0zMTYsNiArMzE2LDE0IEBACi0gCXJldHVybiAobWFsbG9jKChzaXplX3QpIHMpKTsKLSB9Ci0gCi0rdm9pZCogX1RJRkZjYWxsb2ModG1zaXplX3Qgbm1lbWIsIHRtc2l6ZV90IHNpeikKLSt7Ci0rICAgIGlmKCBubWVtYiA9PSAwIHx8IHNpeiA9PSAwICkKLSsgICAgICAgIHJldHVybiAoKHZvaWQgKikgTlVMTCk7Ci0rCi0rICAgIHJldHVybiBjYWxsb2MoKHNpemVfdCkgbm1lbWIsIChzaXplX3Qpc2l6KTsKLSt9Ci0rCi0gdm9pZAotIF9USUZGZnJlZSh2b2lkKiBwKQotIHsKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3dpbjMyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfd2luMzIuYwkyMDE1LTA4LTI5IDAzOjQ2OjIyLjczMDU3MDE2OSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfd2luMzIuYwkyMDE3LTA0LTI2IDEyOjE0OjEyLjkxODg1OTc5NCArMDUzMAotQEAgLTM2MCw2ICszNjAsMTQgQEAKLSAJcmV0dXJuIChtYWxsb2MoKHNpemVfdCkgcykpOwotIH0KLSAKLSt2b2lkKiBfVElGRmNhbGxvYyh0bXNpemVfdCBubWVtYiwgdG1zaXplX3Qgc2l6KQotK3sKLSsgICAgaWYoIG5tZW1iID09IDAgfHwgc2l6ID09IDAgKQotKyAgICAgICAgcmV0dXJuICgodm9pZCAqKSBOVUxMKTsKLSsKLSsgICAgcmV0dXJuIGNhbGxvYygoc2l6ZV90KSBubWVtYiwgKHNpemVfdClzaXopOwotK30KLSsKLSB2b2lkCi0gX1RJRkZmcmVlKHZvaWQqIHApCi0gewotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZmaW8uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZmZpby5oCTIwMTYtMDEtMjQgMjE6MDk6NTEuODk0NDQyMDQyICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZmZpby5oCTIwMTctMDQtMjYgMTI6MTU6NTUuMDM0ODU3MTE3ICswNTMwCi1AQCAtMjkzLDYgKzI5Myw3IEBACi0gICovCi0gCi0gZXh0ZXJuIHZvaWQqIF9USUZGbWFsbG9jKHRtc2l6ZV90IHMpOwotK2V4dGVybiB2b2lkKiBfVElGRmNhbGxvYyh0bXNpemVfdCBubWVtYiwgdG1zaXplX3Qgc2l6KTsKLSBleHRlcm4gdm9pZCogX1RJRkZyZWFsbG9jKHZvaWQqIHAsIHRtc2l6ZV90IHMpOwotIGV4dGVybiB2b2lkIF9USUZGbWVtc2V0KHZvaWQqIHAsIGludCB2LCB0bXNpemVfdCBjKTsKLSBleHRlcm4gdm9pZCBfVElGRm1lbWNweSh2b2lkKiBkLCBjb25zdCB2b2lkKiBzLCB0bXNpemVfdCBjKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzdlNDYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1yb20gODI4M2U0ZDFiN2U1MzM0MDY4NGQxMjkzMjg4MGNiY2JhZjIzYThjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTc6NDM6MjUgKzAwMDAKLQotKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotICB3aGVuIHJlYWQgZmFpbHMuCi0gIFBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLSAgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5NCAjcGF0Y2gxCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE2OjEzOjE1LjAwMDAwMDAwMCArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTY6NTA6MjYuNDY1ODk3NjQ2ICswNTMwCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0rCXdoZW4gcmVhZCBmYWlscy4KLSsJUGF0Y2ggYnkgTmljb2zDoXMgUGXDsWEuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTkKLSsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfb2pwZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9vanBlZy5jCTIwMTctMDQtMjQgMTY6MDI6MjkuODE3OTczMDUxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9vanBlZy5jCTIwMTctMDQtMjQgMTY6NTI6MjcuMzQ5ODk0NDc3ICswNTMwCi1AQCAtMTkxOCw3ICsxOTE4LDEwIEBACi0gCQkJCXJiW3NpemVvZih1aW50MzIpKzUrbl09b1tuXTsKLSAJCQlwPSh1aW50MzIpVElGRlJlYWRGaWxlKHRpZiwmKHJiW3NpemVvZih1aW50MzIpKzIxXSkscSk7Ci0gCQkJaWYgKHAhPXEpCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKHJiKTsKLSAJCQkJcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQlzcC0+YWN0YWJsZVttXT1yYjsKLSAJCQlzcC0+c29zX3RkYVttXT0oc3AtPnNvc190ZGFbbV18bSk7Ci0gCQl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NC1wMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhMTljNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAyZWEzMmY3MzcyYjY1YzI0YjI4MTZmMTFjMDRiZjU5YjUwOTBkMDViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogVGh1LCAxMiBKYW4gMjAxNyAxOToyMzoyMCArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbgotIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNEY1RhYmxlIGFuZAotIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk0ICNwYXRjaDIKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTY6NTA6MjYuNDY1ODk3NjQ2ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNjo1NjoyMC42ODU4ODgzNjAgKzA1MzAKLUBAIC0xLDYgKzEsNyBAQAotIDIwMTctMDEtMTIgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLS0JKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsCi0rCU9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNEY1RhYmxlIGFuZCBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotIAl3aGVuIHJlYWQgZmFpbHMuCi0gCVBhdGNoIGJ5IE5pY29sw6FzIFBlw7FhLgotIAlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9vanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjo1MjoyNy4zNDk4OTQ0NzcgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjo1OToyMC4wMDE4ODM2NjAgKzA1MzAKLUBAIC0xNzkwLDcgKzE3OTAsMTAgQEAKLSAJCQlUSUZGU2Vla0ZpbGUodGlmLHNwLT5xdGFibGVfb2Zmc2V0W21dLFNFRUtfU0VUKTsgCi0gCQkJcD0odWludDMyKVRJRkZSZWFkRmlsZSh0aWYsJm9iW3NpemVvZih1aW50MzIpKzVdLDY0KTsKLSAJCQlpZiAocCE9NjQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKG9iKTsKLSAJCQkJcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQlzcC0+cXRhYmxlW21dPW9iOwotIAkJCXNwLT5zb2ZfdHFbbV09bTsKLSAJCX0KLUBAIC0xODU0LDcgKzE4NTcsMTAgQEAKLSAJCQkJcmJbc2l6ZW9mKHVpbnQzMikrNStuXT1vW25dOwotIAkJCXA9KHVpbnQzMilUSUZGUmVhZEZpbGUodGlmLCYocmJbc2l6ZW9mKHVpbnQzMikrMjFdKSxxKTsKLSAJCQlpZiAocCE9cSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVElGRmZyZWUocmIpOwotIAkJCQlyZXR1cm4oMCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCXNwLT5kY3RhYmxlW21dPXJiOwotIAkJCXNwLT5zb3NfdGRhW21dPShtPDw0KTsKLSAJCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTFhMzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1jb21taXQgNjE4ZDQ5MDA5MGJmZDEwZTYxM2FjNTc0ZWNmZjMxYTI5MzkwNGI0NAotQXV0aG9yOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTEgMTI6MTU6MDEgMjAxNyArMDAwMAotCi0gICAgKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IGF2b2lkIGludGVnZXIgZGl2aXNpb24gYnkgemVybwotICAgICAgaW4gSlBFR1NldHVwRW5jb2RlKCkgd2hlbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNhbXBsaW5nIGlzIHNldCB0byAwLgotICAgICAgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5NQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE3OjMxOjQwLjAxMzgzMjgwNyArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTg6MDM6MzQuNzY5NzgyNjE2ICswNTMwCi1AQCAtOCw2ICs4LDEyIEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2pwZWcuYzogYXZvaWQgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIGluCi0rCUpQRUdTZXR1cEVuY29kZSgpIHdoZW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBzYW1wbGluZyBpcyBzZXQgdG8gMC4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MwotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi0gCWF2b2lkIFVuZGVmaW5lZEJlaGF2aW9yU2FuaXRpemVyIHdhcm5pbmcuCi0gCVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2pwZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9qcGVnLmMJMjAxNi0wMS0yNCAyMTowOTo1MS43ODE2NDE2MjUgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2pwZWcuYwkyMDE3LTA0LTI0IDE4OjA1OjU5Ljc3Nzc3ODgxNSArMDUzMAotQEAgLTE2MjYsNiArMTYyNiwxMyBAQAotIAljYXNlIFBIT1RPTUVUUklDX1lDQkNSOgotIAkJc3AtPmhfc2FtcGxpbmcgPSB0ZC0+dGRfeWNiY3JzdWJzYW1wbGluZ1swXTsKLSAJCXNwLT52X3NhbXBsaW5nID0gdGQtPnRkX3ljYmNyc3Vic2FtcGxpbmdbMV07Ci0rICAgICAgICAgICAgICAgIGlmKCBzcC0+aF9zYW1wbGluZyA9PSAwIHx8IHNwLT52X3NhbXBsaW5nID09IDAgKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZyBob3Jpem9udGFsL3ZlcnRpY2FsIHNhbXBsaW5nIHZhbHVlIik7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSAJCS8qCi0gCQkgKiBBIFJlZmVyZW5jZUJsYWNrV2hpdGUgZmllbGQgKm11c3QqIGJlIHByZXNlbnQgc2luY2UgdGhlCi0gCQkgKiBkZWZhdWx0IHZhbHVlIGlzIGluYXBwcm9wcmlhdGUgZm9yIFlDYkNyLiAgRmlsbCBpbiB0aGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQ1YzNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotRnJvbSAzMTQ0ZTU3NzcwYzFlNGQyNjUyMGQ4YWJlZTc1MGY4YWM4Yjc1NDkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNjowOTowMiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2Rpci5jLCB0aWZfZGlycmVhZC5jLCB0aWZfZGlyd3JpdGUuYzogaW1wbGVtZW50Ci0gdmFyaW91cyBjbGFtcGluZ3Mgb2YgZG91YmxlIHRvIG90aGVyIGRhdGEgdHlwZXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91cgotIGlmIHRoZSBvdXRwdXQgcmFuZ2UgaXNuJ3QgYmlnIGVub3VnaCB0byBob2xkIHRoZSBpbnB1dCB2YWx1ZS4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0MgotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDYKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk2Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTU6NTM6NDAuMjk0NTkyODEyICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxNjowMjowMy4yMzg2MDA2NDEgKzA1MzAKLUBAIC02LDYgKzYsMTYgQEAKLSAJUGF0Y2ggYnkgTmljb2zDoXMgUGXDsWEuCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTkKLSAKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfZGlyLmMsIHRpZl9kaXJyZWFkLmMsIHRpZl9kaXJ3cml0ZS5jOiBpbXBsZW1lbnQgdmFyaW91cyBjbGFtcGluZ3MKLSsJb2YgZG91YmxlIHRvIG90aGVyIGRhdGEgdHlwZXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBpZiB0aGUgb3V0cHV0IHJhbmdlCi0rCWlzbid0IGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgaW5wdXQgdmFsdWUuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDMKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0MgotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ2Ci0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDcKLSsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfanBlZy5jOiBhdm9pZCBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gaW4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2Rpci5jCTIwMTYtMTAtMzAgMDQ6MzM6MTguODU2NTk4MDcyICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXIuYwkyMDE3LTA0LTI1IDE2OjAyOjAzLjIzODYwMDY0MSArMDUzMAotQEAgLTMxLDYgKzMxLDcgQEAKLSAgKiAoYW5kIGFsc28gc29tZSBtaXNjZWxsYW5lb3VzIHN0dWZmKQotICAqLwotICNpbmNsdWRlICJ0aWZmaW9wLmgiCi0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0gCi0gLyoKLSAgKiBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgY29kZS4uLgotQEAgLTE1NCw2ICsxNTUsMTUgQEAKLSAJcmV0dXJuICgwKTsKLSB9Ci0gCi0rc3RhdGljIGZsb2F0IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IEZMVF9NQVggKQotKyAgICAgICAgcmV0dXJuIEZMVF9NQVg7Ci0rICAgIGlmKCB2YWwgPCAtRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gLUZMVF9NQVg7Ci0rICAgIHJldHVybiAoZmxvYXQpdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gX1RJRkZWU2V0RmllbGQoVElGRiogdGlmLCB1aW50MzIgdGFnLCB2YV9saXN0IGFwKQotIHsKLUBAIC0zMTIsMTMgKzMyMiwxMyBAQAotICAgICAgICAgZGJsdmFsID0gdmFfYXJnKGFwLCBkb3VibGUpOwotICAgICAgICAgaWYoIGRibHZhbCA8IDAgKQotICAgICAgICAgICAgIGdvdG8gYmFkdmFsdWVkb3VibGU7Ci0tCQl0ZC0+dGRfeHJlc29sdXRpb24gPSAoZmxvYXQpIGRibHZhbDsKLSsJCXRkLT50ZF94cmVzb2x1dGlvbiA9IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRibHZhbCApOwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19ZUkVTT0xVVElPTjoKLSAgICAgICAgIGRibHZhbCA9IHZhX2FyZyhhcCwgZG91YmxlKTsKLSAgICAgICAgIGlmKCBkYmx2YWwgPCAwICkKLSAgICAgICAgICAgICBnb3RvIGJhZHZhbHVlZG91YmxlOwotLQkJdGQtPnRkX3lyZXNvbHV0aW9uID0gKGZsb2F0KSBkYmx2YWw7Ci0rCQl0ZC0+dGRfeXJlc29sdXRpb24gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KCBkYmx2YWwgKTsKLSAJCWJyZWFrOwotIAljYXNlIFRJRkZUQUdfUExBTkFSQ09ORklHOgotIAkJdiA9ICh1aW50MTYpIHZhX2FyZyhhcCwgdWludDE2X3ZhcCk7Ci1AQCAtMzI3LDEwICszMzcsMTAgQEAKLSAJCXRkLT50ZF9wbGFuYXJjb25maWcgPSAodWludDE2KSB2OwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19YUE9TSVRJT046Ci0tCQl0ZC0+dGRfeHBvc2l0aW9uID0gKGZsb2F0KSB2YV9hcmcoYXAsIGRvdWJsZSk7Ci0rCQl0ZC0+dGRfeHBvc2l0aW9uID0gVElGRkNsYW1wRG91YmxlVG9GbG9hdCggdmFfYXJnKGFwLCBkb3VibGUpICk7Ci0gCQlicmVhazsKLSAJY2FzZSBUSUZGVEFHX1lQT1NJVElPTjoKLS0JCXRkLT50ZF95cG9zaXRpb24gPSAoZmxvYXQpIHZhX2FyZyhhcCwgZG91YmxlKTsKLSsJCXRkLT50ZF95cG9zaXRpb24gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KCB2YV9hcmcoYXAsIGRvdWJsZSkgKTsKLSAJCWJyZWFrOwotIAljYXNlIFRJRkZUQUdfUkVTT0xVVElPTlVOSVQ6Ci0gCQl2ID0gKHVpbnQxNikgdmFfYXJnKGFwLCB1aW50MTZfdmFwKTsKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMJMjAxNy0wNC0yNSAxNTo1Mzo0MC4xMzQ1OTI4MTAgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcnJlYWQuYwkyMDE3LTA0LTI1IDE2OjAyOjAzLjI0MjYwMDY0MSArMDUzMAotQEAgLTQwLDYgKzQwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSAidGlmZmlvcC5oIgotKyNpbmNsdWRlIDxmbG9hdC5oPgotIAotICNkZWZpbmUgSUdOT1JFIDAgICAgICAgICAgLyogdGFnIHBsYWNlaG9sZGVyIHVzZWQgYmVsb3cgKi8KLSAjZGVmaW5lIEZBSUxFRF9GSUkgICAgKCh1aW50MzIpIC0xKQotQEAgLTI0MDYsNyArMjQwNywxNCBAQAotIAkJCQltYT0oZG91YmxlKilvcmlnZGF0YTsKLSAJCQkJbWI9ZGF0YTsKLSAJCQkJZm9yIChuPTA7IG48Y291bnQ7IG4rKykKLS0JCQkJCSptYisrPShmbG9hdCkoKm1hKyspOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSAqbWErKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggdmFsID4gRkxUX01BWCApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IEZMVF9NQVg7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggdmFsIDwgLUZMVF9NQVggKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAtRkxUX01BWDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbWIrKz0oZmxvYXQpdmFsOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCX0KLSAJCQlicmVhazsKLSAJfQotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCTIwMTYtMTAtMzAgMDQ6MzM6MTguODc2ODU0NTAxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCTIwMTctMDQtMjUgMTY6MDc6NDguNjcwNjA2MDE4ICswNTMwCi1AQCAtMzAsNiArMzAsNyBAQAotICAqIERpcmVjdG9yeSBXcml0ZSBTdXBwb3J0IFJvdXRpbmVzLgotICAqLwotICNpbmNsdWRlICJ0aWZmaW9wLmgiCi0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0gCi0gI2lmZGVmIEhBVkVfSUVFRUZQCi0gI2RlZmluZSBUSUZGQ3Z0TmF0aXZlVG9JRUVFRmxvYXQodGlmLCBuLCBmcCkKLUBAIC05MzksNiArOTQwLDY5IEBACi0gCXJldHVybigwKTsKLSB9Ci0gCi0rc3RhdGljIGZsb2F0IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IEZMVF9NQVggKQotKyAgICAgICAgcmV0dXJuIEZMVF9NQVg7Ci0rICAgIGlmKCB2YWwgPCAtRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gLUZMVF9NQVg7Ci0rICAgIHJldHVybiAoZmxvYXQpdmFsOwotK30KLSsKLStzdGF0aWMgaW50OCBUSUZGQ2xhbXBEb3VibGVUb0ludDgoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IDEyNyApCi0rICAgICAgICByZXR1cm4gMTI3OwotKyAgICBpZiggdmFsIDwgLTEyOCB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAtMTI4OwotKyAgICByZXR1cm4gKGludDgpdmFsOwotK30KLSsKLStzdGF0aWMgaW50MTYgVElGRkNsYW1wRG91YmxlVG9JbnQxNiggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsID4gMzI3NjcgKQotKyAgICAgICAgcmV0dXJuIDMyNzY3OwotKyAgICBpZiggdmFsIDwgLTMyNzY4IHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIC0zMjc2ODsKLSsgICAgcmV0dXJuIChpbnQxNil2YWw7Ci0rfQotKwotK3N0YXRpYyBpbnQzMiBUSUZGQ2xhbXBEb3VibGVUb0ludDMyKCBkb3VibGUgdmFsICkKLSt7Ci0rICAgIGlmKCB2YWwgPiAweDdGRkZGRkZGICkKLSsgICAgICAgIHJldHVybiAweDdGRkZGRkZGOwotKyAgICBpZiggdmFsIDwgLTB4N0ZGRkZGRkYtMSB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAtMHg3RkZGRkZGRi0xOwotKyAgICByZXR1cm4gKGludDMyKXZhbDsKLSt9Ci0rCi0rc3RhdGljIHVpbnQ4IFRJRkZDbGFtcERvdWJsZVRvVUludDgoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA8IDAgKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmKCB2YWwgPiAyNTUgfHwgdmFsICE9IHZhbCApCi0rICAgICAgICByZXR1cm4gMjU1OwotKyAgICByZXR1cm4gKHVpbnQ4KXZhbDsKLSt9Ci0rCi0rc3RhdGljIHVpbnQxNiBUSUZGQ2xhbXBEb3VibGVUb1VJbnQxNiggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsIDwgMCApCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYoIHZhbCA+IDY1NTM1IHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIDY1NTM1OwotKyAgICByZXR1cm4gKHVpbnQxNil2YWw7Ci0rfQotKwotK3N0YXRpYyB1aW50MzIgVElGRkNsYW1wRG91YmxlVG9VSW50MzIoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA8IDAgKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmKCB2YWwgPiAweEZGRkZGRkZGVSB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAweEZGRkZGRkZGVTsKLSsgICAgcmV0dXJuICh1aW50MzIpdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gVElGRldyaXRlRGlyZWN0b3J5VGFnU2FtcGxlZm9ybWF0QXJyYXkoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyLCB1aW50MTYgdGFnLCB1aW50MzIgY291bnQsIGRvdWJsZSogdmFsdWUpCi0gewotQEAgLTk1OSw3ICsxMDIzLDcgQEAKLSAJCQlpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTMyKQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKGZsb2F0Kiljb252KVtpXSA9IChmbG9hdCl2YWx1ZVtpXTsKLSsJCQkJCSgoZmxvYXQqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9GbG9hdCh2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnRmxvYXRBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LChmbG9hdCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UKLUBAIC05NzEsMTkgKzEwMzUsMTkgQEAKLSAJCQlpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTgpCi0gCQkJewotIAkJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLS0JCQkJCSgoaW50OCopY29udilbaV0gPSAoaW50OCl2YWx1ZVtpXTsKLSsJCQkJCSgoaW50OCopY29udilbaV0gPSBUSUZGQ2xhbXBEb3VibGVUb0ludDgodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ1NieXRlQXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwoaW50OCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UgaWYgKHRpZi0+dGlmX2Rpci50ZF9iaXRzcGVyc2FtcGxlPD0xNikKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKChpbnQxNiopY29udilbaV0gPSAoaW50MTYpdmFsdWVbaV07Ci0rCQkJCQkoKGludDE2Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvSW50MTYodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ1NzaG9ydEFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKGludDE2Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKGludDMyKiljb252KVtpXSA9IChpbnQzMil2YWx1ZVtpXTsKLSsJCQkJCSgoaW50MzIqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9JbnQzMih2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnU2xvbmdBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LChpbnQzMiopY29udik7Ci0gCQkJfQotIAkJCWJyZWFrOwotQEAgLTk5MSwxOSArMTA1NSwxOSBAQAotIAkJCWlmICh0aWYtPnRpZl9kaXIudGRfYml0c3BlcnNhbXBsZTw9OCkKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50OCopY29udilbaV0gPSAodWludDgpdmFsdWVbaV07Ci0rCQkJCQkoKHVpbnQ4Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDgodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ0J5dGVBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LCh1aW50OCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UgaWYgKHRpZi0+dGlmX2Rpci50ZF9iaXRzcGVyc2FtcGxlPD0xNikKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50MTYqKWNvbnYpW2ldID0gKHVpbnQxNil2YWx1ZVtpXTsKLSsJCQkJCSgodWludDE2Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDE2KHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTaG9ydEFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKHVpbnQxNiopY29udik7Ci0gCQkJfQotIAkJCWVsc2UKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50MzIqKWNvbnYpW2ldID0gKHVpbnQzMil2YWx1ZVtpXTsKLSsJCQkJCSgodWludDMyKiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDMyKHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdMb25nQXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwodWludDMyKiljb252KTsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci1AQCAtMjA5NCwxNSArMjE1OCwyNSBAQAotIHN0YXRpYyBpbnQKLSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkUmF0aW9uYWwoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyLCB1aW50MTYgdGFnLCBkb3VibGUgdmFsdWUpCi0gewotKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgbW9kdWxlW10gPSAiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFJhdGlvbmFsIjsKLSAJdWludDMyIG1bMl07Ci0tCWFzc2VydCh2YWx1ZT49MC4wKTsKLSAJYXNzZXJ0KHNpemVvZih1aW50MzIpPT00KTsKLS0JaWYgKHZhbHVlPD0wLjApCi0rCWlmICh2YWx1ZTwwKQotKwl7Ci0rICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJOZWdhdGl2ZSB2YWx1ZSBpcyBpbGxlZ2FsIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rCX0KLSsgICAgICAgIGVsc2UgaWYoIHZhbHVlICE9IHZhbHVlICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsIk5vdC1hLW51bWJlciB2YWx1ZSBpcyBpbGxlZ2FsIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICh2YWx1ZT09MC4wKQotIAl7Ci0gCQltWzBdPTA7Ci0gCQltWzFdPTE7Ci0tCX0KLS0JZWxzZSBpZiAodmFsdWU9PShkb3VibGUpKHVpbnQzMil2YWx1ZSkKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKHZhbHVlIDw9IDB4RkZGRkZGRkZVICYmIHZhbHVlPT0oZG91YmxlKSh1aW50MzIpdmFsdWUpCi0gCXsKLSAJCW1bMF09KHVpbnQzMil2YWx1ZTsKLSAJCW1bMV09MTsKLUBAIC0yMTQzLDcgKzIyMTcsNyBAQAotIAl9Ci0gCWZvciAobmE9dmFsdWUsIG5iPW0sIG5jPTA7IG5jPGNvdW50OyBuYSsrLCBuYis9MiwgbmMrKykKLSAJewotLQkJaWYgKCpuYTw9MC4wKQotKyAgICAgICAgICAgICAgICBpZiAoKm5hPD0wLjAgfHwgKm5hICE9ICpuYSkKLSAJCXsKLSAJCQluYlswXT0wOwotIAkJCW5iWzFdPTE7Ci1AQCAtMjE1Myw3ICsyMjI3LDggQEAKLSAJCQluYlswXT0odWludDMyKSgqbmEpOwotIAkJCW5iWzFdPTE7Ci0gCQl9Ci0tCQllbHNlIGlmICgqbmE8MS4wKQotKwkJZWxzZSBpZiAoKm5hID49IDAgJiYgKm5hIDw9IChmbG9hdCkweEZGRkZGRkZGVSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAqbmE9PShmbG9hdCkodWludDMyKSgqbmEpKQotIAkJewotIAkJCW5iWzBdPSh1aW50MzIpKChkb3VibGUpKCpuYSkqMHhGRkZGRkZGRik7Ci0gCQkJbmJbMV09MHhGRkZGRkZGRjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDA4MmJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tIDNjZmQ2MmQ3N2MyYTdlMTQ3YTA1YmQ2Nzg1MjRjMzQ1ZmE5YzJiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDEzOjI4OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlycmVhZC5jOiBhdm9pZCBkaXZpc2lvbiBieSBmbG9hdGluZyBwb2ludCAwCi0gaW4gVElGRlJlYWREaXJFbnRyeUNoZWNrZWRSYXRpb25hbCgpIGFuZCBUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFNyYXRpb25hbCgpLAotIGFuZCByZXR1cm4gMCBpbiB0aGF0IGNhc2UgKGluc3RlYWQgb2YgaW5maW5pdHkgYXMgYmVmb3JlIHByZXN1bWFibHkpCi0gQXBwYXJlbnRseSBzb21lIHNhbml0aXplcnMgZG8gbm90IGxpa2UgdGhvc2UgZGl2aXNpb25zIGJ5IHplcm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5OAotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxNjoxNDo1OS44NTg2MTI3MzAgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE4OjExOjM2LjA0ODEwNzEyNyArMDUzMAotQEAgLTEsMyArMSw0IEBACi0rCi0gMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsCi1AQCAtOCw2ICs5LDE0IEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2RpcnJlYWQuYzogYXZvaWQgZGl2aXNpb24gYnkgZmxvYXRpbmcgcG9pbnQgMCBpbgotKwlUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFJhdGlvbmFsKCkgYW5kIFRJRkZSZWFkRGlyRW50cnlDaGVja2VkU3JhdGlvbmFsKCksCi0rCWFuZCByZXR1cm4gMCBpbiB0aGF0IGNhc2UgKGluc3RlYWQgb2YgaW5maW5pdHkgYXMgYmVmb3JlIHByZXN1bWFibHkpCi0rCUFwcGFyZW50bHkgc29tZSBzYW5pdGl6ZXJzIGRvIG5vdCBsaWtlIHRob3NlIGRpdmlzaW9ucyBieSB6ZXJvLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ0Ci0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2Rpci5jLCB0aWZfZGlycmVhZC5jLCB0aWZfZGlyd3JpdGUuYzogaW1wbGVtZW50IHZhcmlvdXMgY2xhbXBpbmdzCi0gCW9mIGRvdWJsZSB0byBvdGhlciBkYXRhIHR5cGVzIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgaWYgdGhlIG91dHB1dCByYW5nZQotIAlpc24ndCBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGlucHV0IHZhbHVlLgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwkyMDE3LTA0LTI1IDE2OjE0OjU5Ljg1ODYxMjczMCArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCTIwMTctMDQtMjUgMTg6MTY6MjEuODM2MTExNTc2ICswNTMwCi1AQCAtMjg4MCw3ICsyODgwLDEwIEBACi0gCQltLmwgPSBkaXJlbnRyeS0+dGRpcl9vZmZzZXQudG9mZl9sb25nODsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiQXJyYXlPZkxvbmcobS5pLDIpOwotLQlpZiAobS5pWzBdPT0wKQotKyAgICAgICAgLyogTm90IGNvbXBsZXRlbHkgc3VyZSB3aGF0IHdlIHNob3VsZCBkbyB3aGVuIG0uaVsxXT09MCwgYnV0IHNvbWUgKi8KLSsgICAgICAgIC8qIHNhbml0aXplcnMgZG8gbm90IGxpa2UgZGl2aXNpb24gYnkgMC4wOiAqLwotKyAgICAgICAgLyogaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NCAqLwotKwlpZiAobS5pWzBdPT0wIHx8IG0uaVsxXT09MCkKLSAJCSp2YWx1ZT0wLjA7Ci0gCWVsc2UKLSAJCSp2YWx1ZT0oZG91YmxlKW0uaVswXS8oZG91YmxlKW0uaVsxXTsKLUBAIC0yOTA4LDcgKzI5MTEsMTAgQEAKLSAJCW0ubD1kaXJlbnRyeS0+dGRpcl9vZmZzZXQudG9mZl9sb25nODsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiQXJyYXlPZkxvbmcobS5pLDIpOwotLQlpZiAoKGludDMyKW0uaVswXT09MCkKLSsgICAgICAgIC8qIE5vdCBjb21wbGV0ZWx5IHN1cmUgd2hhdCB3ZSBzaG91bGQgZG8gd2hlbiBtLmlbMV09PTAsIGJ1dCBzb21lICovCi0rICAgICAgICAvKiBzYW5pdGl6ZXJzIGRvIG5vdCBsaWtlIGRpdmlzaW9uIGJ5IDAuMDogKi8KLSsgICAgICAgIC8qIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDQgKi8KLSsJaWYgKChpbnQzMiltLmlbMF09PTAgfHwgbS5pWzFdPT0wKQotIAkJKnZhbHVlPTAuMDsKLSAJZWxzZQotIAkJKnZhbHVlPShkb3VibGUpKChpbnQzMiltLmlbMF0pLyhkb3VibGUpbS5pWzFdOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc2MDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiM2M2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMGE3NmE4Yzc2NWM3YjgzMjdjNTk2NDYyODRmYTc4YzNjMjdlNTQ5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTY6MTM6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4KLSBKUEVHU2V0dXBFbmNvZGUoKSB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGNhdXNlZCBieSBpbnZhbGlkIHNoaWZ0Ci0gZXhwb25lbnQuIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTc2MDEKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTg6MjE6MzIuODU2MTE2NDE3ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODozNTozMS45MDQxMjk0NzcgKzA1MzAKLUBAIC0xLDQgKzEsMyBAQAotLQotIDIwMTctMDEtMTIgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzUVRhYmxlLAotQEAgLTksNiArOCwxMiBAQAotIAotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSsJKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4gSlBFR1NldHVwRW5jb2RlKCkgdG8gYXZvaWQKLSsJdW5kZWZpbmVkIGJlaGF2aW91ciBjYXVzZWQgYnkgaW52YWxpZCBzaGlmdCBleHBvbmVudC4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0OAotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IGF2b2lkIGRpdmlzaW9uIGJ5IGZsb2F0aW5nIHBvaW50IDAgaW4KLSAJVElGRlJlYWREaXJFbnRyeUNoZWNrZWRSYXRpb25hbCgpIGFuZCBUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFNyYXRpb25hbCgpLAotIAlhbmQgcmV0dXJuIDAgaW4gdGhhdCBjYXNlIChpbnN0ZWFkIG9mIGluZmluaXR5IGFzIGJlZm9yZSBwcmVzdW1hYmx5KQotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2pwZWcuYwkyMDE3LTA0LTI1IDE4OjIxOjMyLjc0NDExNjQxNSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCTIwMTctMDQtMjUgMTg6Mzg6MDIuMjAwMTMxODE3ICswNTMwCi1AQCAtMTYzMiw3ICsxNjMyLDEzIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZyBob3Jpem9udGFsL3ZlcnRpY2FsIHNhbXBsaW5nIHZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgICAgICAgICAgIH0KLS0KLSsgICAgICAgICAgICAgICAgaWYoIHRkLT50ZF9iaXRzcGVyc2FtcGxlID4gMTYgKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCaXRzUGVyU2FtcGxlICVkIG5vdCBhbGxvd2VkIGZvciBKUEVHIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+dGRfYml0c3BlcnNhbXBsZSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwotKyAgICAgICAgICAgICAgICB9Ci0gCQkvKgotIAkJICogQSBSZWZlcmVuY2VCbGFja1doaXRlIGZpZWxkICptdXN0KiBiZSBwcmVzZW50IHNpbmNlIHRoZQotIAkJICogZGVmYXVsdCB2YWx1ZSBpcyBpbmFwcHJvcHJpYXRlIGZvciBZQ2JDci4gIEZpbGwgaW4gdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkOTdlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSA2NmU3YmQ1OTUyMDk5Njc0MGU0ZGY1NDk1YTgzMGI0MmZhZTQ4YmM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNjozMzozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX3JlYWQuYzogYXZvaWQgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvdXIgb24KLSBzaWduZWQgaW50ZWdlciBhZGRpdGlvbiBpbiBUSUZGUmVhZFJhd1N0cmlwMSgpIGluIGlzTWFwcGVkKCkgY2FzZS4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NjAyCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTg6NDI6MDcuNjU2MTM1NjM4ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODo1NDozNi44MTIxNDcyOTkgKzA1MzAKLUBAIC04LDYgKzgsMTIgQEAKLSAKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfcmVhZC5jOiBhdm9pZCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW91ciBvbiBzaWduZWQgaW50ZWdlcgotKwlhZGRpdGlvbiBpbiBUSUZGUmVhZFJhd1N0cmlwMSgpIGluIGlzTWFwcGVkKCkgY2FzZS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MAotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4gSlBFR1NldHVwRW5jb2RlKCkgdG8gYXZvaWQKLSAJdW5kZWZpbmVkIGJlaGF2aW91ciBjYXVzZWQgYnkgaW52YWxpZCBzaGlmdCBleHBvbmVudC4KLSAJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0OAotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX3JlYWQuYwkyMDE3LTA0LTI1IDE4OjQyOjA3LjEzMjEzNTYyOSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCTIwMTctMDQtMjUgMTg6NTg6MjUuMjcyMTUwODU1ICswNTMwCi1AQCAtNDIwLDE2ICs0MjAsMjYgQEAKLSAJCQlyZXR1cm4gKCh0bXNpemVfdCkoLTEpKTsKLSAJCX0KLSAJfSBlbHNlIHsKLS0JCXRtc2l6ZV90IG1hLG1iOwotKwkJdG1zaXplX3QgbWE7Ci0gCQl0bXNpemVfdCBuOwotLQkJbWE9KHRtc2l6ZV90KXRkLT50ZF9zdHJpcG9mZnNldFtzdHJpcF07Ci0tCQltYj1tYStzaXplOwotLQkJaWYgKCh0ZC0+dGRfc3RyaXBvZmZzZXRbc3RyaXBdID4gKHVpbnQ2NClUSUZGX1RNU0laRV9UX01BWCl8fChtYT50aWYtPnRpZl9zaXplKSkKLS0JCQluPTA7Ci0tCQllbHNlIGlmICgobWI8bWEpfHwobWI8c2l6ZSl8fChtYj50aWYtPnRpZl9zaXplKSkKLS0JCQluPXRpZi0+dGlmX3NpemUtbWE7Ci0tCQllbHNlCi0tCQkJbj1zaXplOwotKyAgICAgICAgICAgICAgICBpZiAoKHRkLT50ZF9zdHJpcG9mZnNldFtzdHJpcF0gPiAodWludDY0KVRJRkZfVE1TSVpFX1RfTUFYKXx8Ci0rICAgICAgICAgICAgICAgICAgICAgKChtYT0odG1zaXplX3QpdGQtPnRkX3N0cmlwb2Zmc2V0W3N0cmlwXSk+dGlmLT50aWZfc2l6ZSkpCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIG49MDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBlbHNlIGlmKCBtYSA+IFRJRkZfVE1TSVpFX1RfTUFYIC0gc2l6ZSApCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIG49MDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIHRtc2l6ZV90IG1iPW1hK3NpemU7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAobWI+dGlmLT50aWZfc2l6ZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbj10aWYtPnRpZl9zaXplLW1hOwotKyAgICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuPXNpemU7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSAJCWlmIChuIT1zaXplKSB7Ci0gI2lmIGRlZmluZWQoX19XSU4zMl9fKSAmJiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX01JTkdXMzJfXykpCi0gCQkJVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIG1vZHVsZSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCmluZGV4IDk0ZjMzOTAuLjMzOTIyODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaApAQCAtMzIsMzggKzMyLDM4IEBACiAgbGlidGlmZi90aWZfZGlycmVhZC5jIHwgICA0ICsrCiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKQogCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IGVlOGQ5ZDAuLjU3MzkyOTIgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZwogQEAgLTEsMyArMSwyMyBAQAogKzIwMTctMDYtMDEgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CiArCi0rICAgICAgICogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCi0rICAgICAgIGFuZCB1c2UgaXQgaW4gVElGRlJlYWREaXJlY3RvcnkoKSBzbyBhcyB0byBpZ25vcmUgZmllbGRzIHdob3NlIHRhZyBpcyBhCi0rICAgICAgIGNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCi0rICAgICAgIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29kZWMgaXMgZW5hYmxlZCBvciBub3QsIGFuZAotKyAgICAgICB0aHVzIGNhbiBhdm9pZCBzdGFjayBiYXNlZCBidWZmZXIgb3ZlcmZsb3dzIGluIGEgbnVtYmVyIG9mIFRJRkYgdXRpbGl0aWVzCi0rICAgICAgIHN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KLSsgICAgICAgUGF0Y2ggZGVyaXZlZCBmcm9tIDAwNjMtSGFuZGxlLXByb3Blcmx5LUNPREVDLXNwZWNpZmljLXRhZ3MucGF0Y2gKLSsgICAgICAgKGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODApIGJ5IFJhcGhhw6tsIEhlcnR6b2cuCi0rICAgICAgIEZpeGVzOgotKyAgICAgICBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjQgKENWRS0yMDE1LTc1NTQpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjEgKENWRS0yMDE2LTUzMTgpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMworKwkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAorKwlhbmQgdXNlIGl0IGluIFRJRkZSZWFkRGlyZWN0b3J5KCkgc28gYXMgdG8gaWdub3JlIGZpZWxkcyB3aG9zZSB0YWcgaXMgYQorKwljb2RlYy1zcGVjaWZpZWQgdGFnIGJ1dCB0aGlzIGNvZGVjIGlzIG5vdCBlbmFibGVkLiBUaGlzIGF2b2lkcyBUSUZGR2V0RmllbGQoKQorKwl0byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKKysJdGh1cyBjYW4gYXZvaWQgc3RhY2sgYmFzZWQgYnVmZmVyIG92ZXJmbG93cyBpbiBhIG51bWJlciBvZiBUSUZGIHV0aWxpdGllcworKwlzdWNoIGFzIHRpZmZzcGxpdCwgdGlmZmNtcCwgdGh1bWJuYWlsLCBldGMuCisrCVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCisrCShodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwKSBieSBSYXBoYcOrbCBIZXJ0em9nLgorKwlGaXhlczoKKysJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjUgKENWRS0yMDE2LTEwMDk1KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTYxIChDVkUtMjAxNi01MzE4KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDk5IChDVkUtMjAxNC04MTI4KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzMKICsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisgMjAxNy0wNS0yMSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KICAKLSAJKiB0b29scy90aWZmY3AuYzogZXJyb3Igb3V0IGNsZWFubHkgaW4gY3BDb250aWcyU2VwYXJhdGVCeVJvdyBhbmQKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2Rpci5oCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXIuaAorIAkqIGNvbmZpZ3VyZS5hYzogbGlidGlmZiA0LjAuOCByZWxlYXNlZC4KK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXIuaCBiL2xpYnRpZmYvdGlmX2Rpci5oCitpbmRleCBlMTJiNDRiLi41MjA2YmU0IDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfZGlyLmgKKysrKyBiL2xpYnRpZmYvdGlmX2Rpci5oCiBAQCAtMjkxLDYgKzI5MSw3IEBAIHN0cnVjdCBfVElGRkZpZWxkIHsKICBleHRlcm4gaW50IF9USUZGTWVyZ2VGaWVsZHMoVElGRiosIGNvbnN0IFRJRkZGaWVsZFtdLCB1aW50MzIpOwogIGV4dGVybiBjb25zdCBUSUZGRmllbGQqIF9USUZGRmluZE9yUmVnaXN0ZXJGaWVsZChUSUZGICosIHVpbnQzMiwgVElGRkRhdGFUeXBlKTsKQEAgLTcyLDExICs3MiwxMSBAQAogIAogICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogIH0KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcmluZm8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcmluZm8uYwotQEAgLTk1Niw2ICs5NTYsMTA5IEBAIFRJRkZNZXJnZUZpZWxkSW5mbyhUSUZGKiB0aWYsIGNvbnN0IFRJRkYKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJpbmZvLmMgYi9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKK2luZGV4IDBjOGVmNDIuLjk3YzBkZjAgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYworQEAgLTk1Niw2ICs5NTYsMTA5IEBAIFRJRkZNZXJnZUZpZWxkSW5mbyhUSUZGKiB0aWYsIGNvbnN0IFRJRkZGaWVsZEluZm8gaW5mb1tdLCB1aW50MzIgbikKICAJcmV0dXJuIDA7CiAgfQogIApAQCAtMTg2LDExICsxODYsMTEgQEAKICAvKiB2aW06IHNldCB0cz04IHN0cz04IHN3PTggbm9ldDogKi8KICAKICAvKgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi1AQCAtMzU2Niw2ICszNTY2LDEwIEBAIFRJRkZSZWFkRGlyZWN0b3J5KFRJRkYqIHRpZikKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKK2luZGV4IDFkNGYwYjkuLmYxZGMzZDcgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYworQEAgLTM1ODAsNiArMzU4MCwxMCBAQCBUSUZGUmVhZERpcmVjdG9yeShUSUZGKiB0aWYpCiAgCQkJCQkJCWdvdG8gYmFkOwogIAkJCQkJCWRwLT50ZGlyX3RhZz1JR05PUkU7CiAgCQkJCQkJYnJlYWs7CkBAIC0yMDEsMyArMjAxLDYgQEAKICAJCQkJfQogIAkJCX0KICAJCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzYucGF0Y2gKaW5kZXggMjA0OTQ5Yi4uZmM5OTM2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCkBAIC0xOCwxMCArMTgsMTAgQEAKICBsaWJ0aWZmL3RpZl9qYmlnLmMgfCAxICsKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDU3MzkyOTIuLjAyNDBmMGIgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZwogQEAgLTEsMyArMSw5IEBACiArMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICsKQEAgLTMxLDEyICszMSwxMiBAQAogKwogIDIwMTctMDYtMDEgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CiAgCi0gICAgICAgICogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qYmlnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfamJpZy5jCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qYmlnLmMKLUBAIC05NCw2ICs5NCw3IEBAIHN0YXRpYyBpbnQgSkJJR0RlY29kZShUSUZGKiB0aWYsIHVpbnQ4KgorIAkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2piaWcuYyBiL2xpYnRpZmYvdGlmX2piaWcuYworaW5kZXggNWY1Zjc1ZS4uYzc1ZjMxZCAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2piaWcuYworKysrIGIvbGlidGlmZi90aWZfamJpZy5jCitAQCAtOTQsNiArOTQsNyBAQCBzdGF0aWMgaW50IEpCSUdEZWNvZGUoVElGRiogdGlmLCB1aW50OCogYnVmZmVyLCB0bXNpemVfdCBzaXplLCB1aW50MTYgcykKICAJCQkgICAgIGpiZ19zdHJlcnJvcihkZWNvZGVTdGF0dXMpCiAgI2VuZGlmCiAgCQkJICAgICApOwpAQCAtNDQsMyArNDQsNiBAQAogIAkJcmV0dXJuIDA7CiAgCX0KICAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjYzMzUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL2xpYnRpZmYtQ1ZFLTIwMTctNTIyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLUZyb20gYTI0ZGYxZTkzODMzZGZlYWE2OWJmNGQ1MTA1MThkYzQ2ODRkYjY0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjUgSmFuIDIwMTcgMTc6MDc6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlidGlmZjogZml4IENWRS0yMDE3LTUyMjUKLQotdG9vbHMvdGlmZmNwLmM6IGVycm9yIG91dCBjbGVhbmx5IGluIGNwQ29udGlnMlNlcGFyYXRlQnlSb3cKLWFuZCBjcFNlcGFyYXRlMkNvbnRpZ0J5Um93IGlmIEJpdHNQZXJTYW1wbGUgIT0gOCB0byBhdm9pZCBoZWFwIGJhc2VkCi1vdmVyZmxvdy4gRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NiBhbmQKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy01MjI1Ci1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICB8ICA3ICsrKysrKysKLSB0b29scy90aWZmY3AuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggOWI5ZDM5Ny4uN2U4Mjc5NSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIHRvb2xzL3RpZmZjcC5jOiBlcnJvciBvdXQgY2xlYW5seSBpbiBjcENvbnRpZzJTZXBhcmF0ZUJ5Um93IGFuZAotKwljcFNlcGFyYXRlMkNvbnRpZ0J5Um93IGlmIEJpdHNQZXJTYW1wbGUgIT0gOCB0byBhdm9pZCBoZWFwIGJhc2VkIG92ZXJmbG93LgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU2IGFuZAotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU3Ci0rCi0gMjAxNi0xMS0xOSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KLSAKLSAJKiBsaWJ0aWZmIDQuMC43IHJlbGVhc2VkLgotZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmZjcC5jIGIvdG9vbHMvdGlmZmNwLmMKLWluZGV4IDMzOGEzZDEuLjJlODQ1NzcgMTAwNjQ0Ci0tLS0gYS90b29scy90aWZmY3AuYwotKysrIGIvdG9vbHMvdGlmZmNwLmMKLUBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljCWNvcHlGdW5jIHBpY2tDb3B5RnVuYyhUSUZGKiwgVElGRiosIHVpbnQxNiwgdWludDE2KTsKLSBzdGF0aWMgaW50Ci0gdGlmZmNwKFRJRkYqIGluLCBUSUZGKiBvdXQpCi0gewotLQl1aW50MTYgYml0c3BlcnNhbXBsZSwgc2FtcGxlc3BlcnBpeGVsID0gMTsKLSsJdWludDE2IGJpdHNwZXJzYW1wbGUgPSAxLCBzYW1wbGVzcGVycGl4ZWwgPSAxOwotIAl1aW50MTYgaW5wdXRfY29tcHJlc3Npb24sIGlucHV0X3Bob3RvbWV0cmljID0gUEhPVE9NRVRSSUNfTUlOSVNCTEFDSzsKLSAJY29weUZ1bmMgY2Y7Ci0gCXVpbnQzMiB3aWR0aCwgbGVuZ3RoOwotQEAgLTEwNjgsNiArMTA2OCwxNiBAQCBERUNMQVJFY3BGdW5jKGNwQ29udGlnMlNlcGFyYXRlQnlSb3cpCi0gCXJlZ2lzdGVyIHVpbnQzMiBuOwotIAl1aW50MzIgcm93OwotIAl0c2FtcGxlX3QgczsKLSsgICAgICAgIHVpbnQxNiBicHMgPSAwOwotKwotKyAgICAgICAgKHZvaWQpIFRJRkZHZXRGaWVsZChpbiwgVElGRlRBR19CSVRTUEVSU0FNUExFLCAmYnBzKTsKLSsgICAgICAgIGlmKCBicHMgIT0gOCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgVElGRkVycm9yKFRJRkZGaWxlTmFtZShpbiksCi0rICAgICAgICAgICAgICAgICAgICAgICJFcnJvciwgY2FuIG9ubHkgaGFuZGxlIEJpdHNQZXJTYW1wbGU9OCBpbiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICJjcENvbnRpZzJTZXBhcmF0ZUJ5Um93Iik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCi0gCWluYnVmID0gX1RJRkZtYWxsb2Moc2NhbmxpbmVzaXplaW4pOwotIAlvdXRidWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVvdXQpOwotQEAgLTExMjEsNiArMTEzMSwxNiBAQCBERUNMQVJFY3BGdW5jKGNwU2VwYXJhdGUyQ29udGlnQnlSb3cpCi0gCXJlZ2lzdGVyIHVpbnQzMiBuOwotIAl1aW50MzIgcm93OwotIAl0c2FtcGxlX3QgczsKLSsgICAgICAgIHVpbnQxNiBicHMgPSAwOwotKwotKyAgICAgICAgKHZvaWQpIFRJRkZHZXRGaWVsZChpbiwgVElGRlRBR19CSVRTUEVSU0FNUExFLCAmYnBzKTsKLSsgICAgICAgIGlmKCBicHMgIT0gOCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgVElGRkVycm9yKFRJRkZGaWxlTmFtZShpbiksCi0rICAgICAgICAgICAgICAgICAgICAgICJFcnJvciwgY2FuIG9ubHkgaGFuZGxlIEJpdHNQZXJTYW1wbGU9OCBpbiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICJjcFNlcGFyYXRlMkNvbnRpZ0J5Um93Iik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCi0gCWluYnVmID0gX1RJRkZtYWxsb2Moc2NhbmxpbmVzaXplaW4pOwotIAlvdXRidWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVvdXQpOwotQEAgLTE3NjMsNyArMTc4Myw3IEBAIHBpY2tDb3B5RnVuYyhUSUZGKiBpbiwgVElGRiogb3V0LCB1aW50MTYgYml0c3BlcnNhbXBsZSwgdWludDE2IHNhbXBsZXNwZXJwaXhlbCkKLSAJdWludDMyIHcsIGwsIHR3LCB0bDsKLSAJaW50IGJ5Y2h1bms7Ci0gCi0tCSh2b2lkKSBUSUZGR2V0RmllbGQoaW4sIFRJRkZUQUdfUExBTkFSQ09ORklHLCAmc2hvcnR2KTsKLSsJKHZvaWQpIFRJRkZHZXRGaWVsZERlZmF1bHRlZChpbiwgVElGRlRBR19QTEFOQVJDT05GSUcsICZzaG9ydHYpOwotIAlpZiAoc2hvcnR2ICE9IGNvbmZpZyAmJiBiaXRzcGVyc2FtcGxlICE9IDggJiYgc2FtcGxlc3BlcnBpeGVsID4gMSkgewotIAkJZnByaW50ZihzdGRlcnIsCi0gCQkgICAgIiVzOiBDYW5ub3QgaGFuZGxlIGRpZmZlcmVudCBwbGFuYXIgY29uZmlndXJhdGlvbiB3LyBiaXRzL3NhbXBsZSAhPSA4XG4iLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY2ZTg1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKLQotQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTkxNDcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTkzNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDY4OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMTMzNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDA5My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI3MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTkyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5NC1wMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTk1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NjAxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc2MDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5My5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc3YWU5MjhkMmM2YjdmYjQ2YTIxYzNhMjkzMjUxNTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmNDNhMmNmYjk1ODllNWNlY2FhNjZlMTZiZjg3ZjgxNGM5NDVmMjJkZjdiYTYwMGQ2M2FhYzQ2MzJjNGYwMTkiCi0KLSMgZXhjbHVkZSBiZXRhcwotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1pbmhlcml0IGF1dG90b29scwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJheF9jdl9jaGVja19nbF9saWJnbD1ubyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiY3h4IGpwZWcgemxpYiBsem1hIFwKLSAgICAgICAgICAgICAgICAgIHN0cmlwLWNob3BwaW5nIGV4dHJhc2FtcGxlLWFzLWFscGhhIGNoZWNrLXljYmNyLXN1YnNhbXBsaW5nIgotCi1QQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtY3h4LC0tZGlzYWJsZS1jeHgsLCIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnLCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliLCIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiwiCi0KLSMgQ29udmVydCBzaW5nbGUtc3RyaXAgdW5jb21wcmVzc2VkIGltYWdlcyB0byBtdWx0aXBsZSBzdHJpcHMgb2Ygc3BlY2lmaWVkCi0jIHNpemUgKGRlZmF1bHQ6IDgxOTIpIHRvIHJlZHVjZSBtZW1vcnkgdXNhZ2UKLVBBQ0tBR0VDT05GSUdbc3RyaXAtY2hvcHBpbmddID0gIi0tZW5hYmxlLXN0cmlwLWNob3BwaW5nLC0tZGlzYWJsZS1zdHJpcC1jaG9wcGluZywsIgotCi0jIFRyZWF0IGEgZm91cnRoIHNhbXBsZSB3aXRoIG5vIEVYVFJBU0FNUExFXyB2YWx1ZSBhcyBiZWluZyBBU1NPQ0FMUEhBCi1QQUNLQUdFQ09ORklHW2V4dHJhc2FtcGxlLWFzLWFscGhhXSA9ICItLWVuYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwtLWRpc2FibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLCIKLQotIyBDb250cm9sIHBpY2tpbmcgdXAgWUNiQ3Igc3Vic2FtcGxlIGluZm8uIERpc2FibGUgdG8gc3VwcG9ydCBmaWxlcyBsYWNraW5nCi0jIHRoZSB0YWcKLVBBQ0tBR0VDT05GSUdbY2hlY2steWNiY3Itc3Vic2FtcGxpbmddID0gIi0tZW5hYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLC0tZGlzYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywsIgotCi0jIFN1cHBvcnQgYSBtZWNoYW5pc20gYWxsb3dpbmcgcmVhZGluZyBsYXJnZSBzdHJpcHMgKHVzdWFsbHkgb25lIHN0cmlwIGZpbGVzKQotIyBpbiBjaHVua3Mgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lLiBFeHBlcmltZW50YWwgNC4wKyBmZWF0dXJlCi1QQUNLQUdFQ09ORklHW2NodW5reS1zdHJpcC1yZWFkXSA9ICItLWVuYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwtLWRpc2FibGUtY2h1bmt5LXN0cmlwLXJlYWQsLCIKLQotUEFDS0FHRVMgPSsgInRpZmZ4eCB0aWZmLXV0aWxzIgotRklMRVNfdGlmZnh4ID0gIiR7bGliZGlyfS9saWJ0aWZmeHguc28uKiIKLUZJTEVTX3RpZmYtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5MWJhYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKKworQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI3LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYTdkMWMxMzE4NDE2ZGRmMzZkNWY2ZmE0NjAwMDY5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWQ3YTVhOGNjZDkyMDU5OTEzZjI0Njg3N2RiOTVhMjkxOGU2YzA0ZmI5ZDQzZmQ3NGU1YzMzOTBkYWMyOTEwIgorCisjIGV4Y2x1ZGUgYmV0YXMKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInRpZmYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCisgICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKKworUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgorCisjIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAorIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCitQQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKKworIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQorUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCisKKyMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZworIyB0aGUgdGFnCitQQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKKworIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKKyMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQorUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCisKK1BBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKK0ZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCitGSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy8wMDAxLWNoZWNrLWZvci1hdmFpbGFibGUtYXJtLW9wdGltaXphdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMS1jaGVjay1mb3ItYXZhaWxhYmxlLWFybS1vcHRpbWl6YXRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZjY4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMS1jaGVjay1mb3ItYXZhaWxhYmxlLWFybS1vcHRpbWl6YXRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK0Zyb20gY2JjZmY1OGVkNjcwYzhlZGMwYmUxMDA0Mzg0Y2JlMGZkMDdkOGQyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTg6NDk6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGNoZWNrIGZvciBhdmFpbGFibGUgYXJtIG9wdGltaXphdGlvbnMKKworVGFrZW4gRnJvbQoraHR0cDovL3NvdXJjZXMuZGViaWFuLm5ldC9zcmMvbXBlZzJkZWMvMC41LjEtNy9kZWJpYW4vcGF0Y2hlcy82NV9hcm0tdGVzdC13aXRoLWNvbXBpbGVyLnBhdGNoLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEyICsrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGFjZGNiMWUuLjJjMGE3MjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU5LDcgKzU5LDcgQEAgZWxpZiB0ZXN0IHgiJEdDQyIgPSB4InllcyI7IHRoZW4KKyAgICAgQUNfVFJZX0NGTEFHUyhbJFRSWV9DRkxBR1MgJENGTEFHU10sW09QVF9DRkxBR1M9IiRUUllfQ0ZMQUdTIl0pCisgCisgICAgIGRubCBhcmNoLXNwZWNpZmljIGZsYWdzCistICAgIGFybV9jb25kaXRpb25hbD1mYWxzZQorKyAgICBidWlsZF9hcm1fb3B0PWZhbHNlCisgICAgIGNhc2UgIiRob3N0IiBpbgorICAgICBpPzg2LSogfCBrPy0qIHwgeDg2XzY0LSogfCBhbWQ2NC0qKQorIAlBQ19ERUZJTkUoW0FSQ0hfWDg2XSwsW3g4NiBhcmNoaXRlY3R1cmVdKQorQEAgLTEwMiw4ICsxMDIsMTIgQEAgZWxpZiB0ZXN0IHgiJEdDQyIgPSB4InllcyI7IHRoZW4KKyAgICAgYWxwaGEqKQorIAlBQ19ERUZJTkUoW0FSQ0hfQUxQSEFdLCxbYWxwaGEgYXJjaGl0ZWN0dXJlXSk7OworICAgICBhcm0qKQorLQlhcm1fY29uZGl0aW9uYWw9OgorLQlBQ19ERUZJTkUoW0FSQ0hfQVJNXSwsW0FSTSBhcmNoaXRlY3R1cmVdKTs7CisrCUFDX0xBTkcoQykKKysJQUNfQ09NUElMRV9JRkVMU0UoCisrCQlbQUNfTEFOR19TT1VSQ0UoW1sKKysJCQl2b2lkIGZvbyh2b2lkKSB7IF9fYXNtX18gdm9sYXRpbGUoInBsZCBbcjFdIik7IH1dXSldLAorKwkJYnVpbGRfYXJtX29wdD10cnVlOyBBQ19ERUZJTkUoW0FSQ0hfQVJNXSwsW0FSTSBhcmNoaXRlY3R1cmVdKSwKKysJCWJ1aWxkX2FybV9vcHQ9ZmFsc2UpOzsKKyAgICAgZXNhYworIGVsaWYgdGVzdCB4IiRDQyIgPSB4InRlbmRyYWNjIjsgdGhlbgorICAgICBkbmwgVGVuRFJBIHBvcnRhYmlsaXR5IGNoZWNraW5nIGNvbXBpbGVyCitAQCAtMTIzLDcgKzEyNyw3IEBAIGVsc2UKKyAgICAgZXNhYworIGZpCisgCistQU1fQ09ORElUSU9OQUwoQVJDSF9BUk0sICR7YXJtX2NvbmRpdGlvbmFsfSkKKytBTV9DT05ESVRJT05BTChBUkNIX0FSTSwgdGVzdCB4JGJ1aWxkX2FybV9vcHQgPSB4dHJ1ZSkKKyAKKyBkbmwgQ2hlY2tzIGZvciBsaWJ0b29sIC0gdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgd2Ugc2V0IGNmbGFncworIEFDX0xJQlRPT0xfV0lOMzJfRExMCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMi1TZXQtdmlzaWJpbGl0eS1vZi1nbG9iYWwtc3ltYm9scy11c2VkLWluLUFSTS1zcGVjaWZpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzLzAwMDItU2V0LXZpc2liaWxpdHktb2YtZ2xvYmFsLXN5bWJvbHMtdXNlZC1pbi1BUk0tc3BlY2lmaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAxNjkyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzLzAwMDItU2V0LXZpc2liaWxpdHktb2YtZ2xvYmFsLXN5bWJvbHMtdXNlZC1pbi1BUk0tc3BlY2lmaS5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIGY5ZDlkYzkyZDc1Zjg5MTBlM2NkNWZkY2JlYTcyZTUwNWNkZjM0OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDE5OjAzOjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBTZXQgdmlzaWJpbGl0eSBvZiBnbG9iYWwgc3ltYm9scyB1c2VkIGluIEFSTSBzcGVjaWZpYworIGFzc2VtYmx5IGZpbGUgdG8gaW50ZXJuYWwKKworVGFrZW4gZnJvbQoraHR0cDovL3NvdXJjZXMuZGViaWFuLm5ldC9zcmMvbXBlZzJkZWMvMC41LjEtNy9kZWJpYW4vcGF0Y2hlcy82MF9hcm0tcHJpdmF0ZS1zeW1ib2xzLnBhdGNoLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMgfCAxMiArKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXBlZzIvbW90aW9uX2NvbXBfYXJtX3MuUyBiL2xpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMKK2luZGV4IGY2YzNkN2QuLmM5MjFmN2MgMTAwNjQ0CistLS0gYS9saWJtcGVnMi9tb3Rpb25fY29tcF9hcm1fcy5TCisrKysgYi9saWJtcGVnMi9tb3Rpb25fY29tcF9hcm1fcy5TCitAQCAtMjMsNyArMjMsOCBAQAorIAorIEAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAkuYWxpZ24KKy0JLmdsb2JhbCBNQ19wdXRfb18xNl9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF9vXzE2X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X29fMTZfYXJtCisgTUNfcHV0X29fMTZfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCitAQCAtODMsNyArODQsOCBAQCBNQ19wdXRfb18xNl9hcm1fYWxpZ25fanQ6CisgCisgQCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCS5hbGlnbgorLQkuZ2xvYmFsIE1DX3B1dF9vXzhfYXJtCisrCS5nbG9iYWwgICBNQ19wdXRfb184X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X29fOF9hcm0KKyBNQ19wdXRfb184X2FybToKKyAJQEAgdm9pZCBmdW5jKHVpbnQ4X3QgKiBkZXN0LCBjb25zdCB1aW50OF90ICogcmVmLCBpbnQgc3RyaWRlLCBpbnQgaGVpZ2h0KQorIAlwbGQgW3IxXQorQEAgLTE1Miw3ICsxNTQsOCBAQCBNQ19wdXRfb184X2FybV9hbGlnbl9qdDoKKyAuZW5kbQorIAorIAkuYWxpZ24KKy0JLmdsb2JhbCBNQ19wdXRfeF8xNl9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF94XzE2X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X3hfMTZfYXJtCisgTUNfcHV0X3hfMTZfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCitAQCAtMjQ0LDcgKzI0Nyw4IEBAIE1DX3B1dF94XzE2X2FybV9hbGlnbl9qdDoKKyAKKyBAIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAJLmFsaWduCistCS5nbG9iYWwgTUNfcHV0X3hfOF9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF94XzhfYXJtCisrCS5pbnRlcm5hbCBNQ19wdXRfeF84X2FybQorIE1DX3B1dF94XzhfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvYWx0aXZlY19oX25lZWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMTNhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvYWx0aXZlY19oX25lZWRlZC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitBZGQgbmV3IG1ldGhvZCB0byBqdWRnZSB3aGV0aGVyIDxhbHRpdmVjLmg+IGlzIG5lZWRlZAorCitUaGUgb3JpZ2luYWwgbG9naWMgd2lsbCB1c2UgInR5cGVkZWYgdmVjdG9yIGludCB0OyIgdG8ganVkZ2UKK3doZXRoZXIgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkLiBhbHRpdmVjLmggY29udGFpbnMgdGhlIGZvbGxvd2luZworc3RhdGVtZW50OgorCisgI2lmICFkZWZpbmVkKF9fQVBQTEVfQUxUSVZFQ19fKQorICNkZWZpbmUgdmVjdG9yIF9fdmVjdG9yCisgI2RlZmluZSBwaXhlbCBfX3BpeGVsCisgI2RlZmluZSBib29sIAorICNlbmRpZgorCitJbiBnY2MtNC4zLjMsIF9fQVBQTEVfQUxUSVZFQ19fIGlzIG5vdCBkZWZpbmVkIGJ5IGNvbXBpbGVyLCBuZWl0aGVyCithcyB2ZWN0b3IsIHBpeGVsLCBhbmQgYm9vbC4gSW4gb3JkZXIgdG8gbWFrZSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7IgorcGFzcyB0aGUgY29tcGlsYXRpb24sIHdlIG5lZWQgdG8gaW5jbHVkZSBhbHRpdmVjLmguCisKK0hvd2V2ZXIgaW4gZ2NjLTQuNS4wLCBfX0FQUExFX0FMVElWRUNfXyBpcyBkZWZpbmVkIGJ5IGNvbXBpbGVyLAorc28gYXMgdmVjdG9yLCBwaXhlbCwgYW5kIGJvb2wuIFdlIGNvdWxkIG5vdCBqdWRnZSB3aGV0aGVyCithbHRpdmVjLmggaXMgbmVlZGVkIGJ5ICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiLgorSGVyZSB3ZSBpbmNsdWRlIGFub3RoZXIgc3RhdGVtZW50ICJpbnQgdG1wID0gX19DUjZfRVE7IiwgaW4KK3doaWNoIF9fQ1I2X0VRIGlzIGRlZmluZWQgaW4gYWx0aXZlYy5oLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KKworZGlmZiAtcnVOIGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCistLS0gYS9jb25maWd1cmUuYWMJMjAxMC0wOS0xNCAyMDo1NTo0Mi4zOTk2ODc2NjMgKzA4MDAKKysrKyBiL2NvbmZpZ3VyZS5hYwkyMDEwLTA5LTE0IDIwOjU2OjQzLjQwMzIwNDY0OCArMDgwMAorQEAgLTc5LDExICs3OSwxMSBAQAorIAkJIENGTEFHUz0iJE9QVF9DRkxBR1MgJFRSWV9DRkxBR1MgJENGTEFHUyIKKyAJCSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIDxhbHRpdmVjLmg+IGlzIG5lZWRlZF0pCisgCQkgQUNfVFJZX0NPTVBJTEUoW10sCistCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OworKwkJICAgIFt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROworIAkJICAgICB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorIAkJICAgIFtoYXZlX2FsdGl2ZWM9eWVzOyBBQ19NU0dfUkVTVUxUKG5vKV0sCisgCQkgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8YWx0aXZlYy5oPl0sCistCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorKwkJCVt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorIAkJCVtBQ19ERUZJTkUoW0hBVkVfQUxUSVZFQ19IXSwsCisgCQkJICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFsdGl2ZWMuaD4gaGVhZGVyLl0pCisgCQkJIGhhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQoeWVzKV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWMtMC40LjEvYWx0aXZlY19oX25lZWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlYy0wLjQuMS9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGM1NjQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlYy0wLjQuMS9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotQWRkIG5ldyBtZXRob2QgdG8ganVkZ2Ugd2hldGhlciA8YWx0aXZlYy5oPiBpcyBuZWVkZWQKLQotVGhlIG9yaWdpbmFsIGxvZ2ljIHdpbGwgdXNlICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiIHRvIGp1ZGdlCi13aGV0aGVyIDxhbHRpdmVjLmg+IGlzIG5lZWRlZC4gYWx0aXZlYy5oIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKLXN0YXRlbWVudDoKLQotICNpZiAhZGVmaW5lZChfX0FQUExFX0FMVElWRUNfXykKLSAjZGVmaW5lIHZlY3RvciBfX3ZlY3RvcgotICNkZWZpbmUgcGl4ZWwgX19waXhlbAotICNkZWZpbmUgYm9vbCAKLSAjZW5kaWYKLQotSW4gZ2NjLTQuMy4zLCBfX0FQUExFX0FMVElWRUNfXyBpcyBub3QgZGVmaW5lZCBieSBjb21waWxlciwgbmVpdGhlcgotYXMgdmVjdG9yLCBwaXhlbCwgYW5kIGJvb2wuIEluIG9yZGVyIHRvIG1ha2UgInR5cGVkZWYgdmVjdG9yIGludCB0OyIKLXBhc3MgdGhlIGNvbXBpbGF0aW9uLCB3ZSBuZWVkIHRvIGluY2x1ZGUgYWx0aXZlYy5oLgotCi1Ib3dldmVyIGluIGdjYy00LjUuMCwgX19BUFBMRV9BTFRJVkVDX18gaXMgZGVmaW5lZCBieSBjb21waWxlciwKLXNvIGFzIHZlY3RvciwgcGl4ZWwsIGFuZCBib29sLiBXZSBjb3VsZCBub3QganVkZ2Ugd2hldGhlcgotYWx0aXZlYy5oIGlzIG5lZWRlZCBieSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7Ii4KLUhlcmUgd2UgaW5jbHVkZSBhbm90aGVyIHN0YXRlbWVudCAiaW50IHRtcCA9IF9fQ1I2X0VROyIsIGluCi13aGljaCBfX0NSNl9FUSBpcyBkZWZpbmVkIGluIGFsdGl2ZWMuaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+Ci0KLWRpZmYgLXJ1TiBtcGVnMmRlYy0wLjQuMS1vcmlnL2NvbmZpZ3VyZS5pbiBtcGVnMmRlYy0wLjQuMS9jb25maWd1cmUuaW4KLS0tLSBtcGVnMmRlYy0wLjQuMS1vcmlnL2NvbmZpZ3VyZS5pbgkyMDEwLTA5LTE0IDIwOjU1OjQyLjM5OTY4NzY2MyArMDgwMAotKysrIG1wZWcyZGVjLTAuNC4xL2NvbmZpZ3VyZS5pbgkyMDEwLTA5LTE0IDIwOjU2OjQzLjQwMzIwNDY0OCArMDgwMAotQEAgLTc1LDExICs3NSwxMSBAQAotIAkJIENGTEFHUz0iJE9QVF9DRkxBR1MgJFRSWV9DRkxBR1MgJENGTEFHUyIKLSAJCSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIDxhbHRpdmVjLmg+IGlzIG5lZWRlZF0pCi0gCQkgQUNfVFJZX0NPTVBJTEUoW10sCi0tCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OwotKwkJICAgIFt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROwotIAkJICAgICB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotIAkJICAgIFtoYXZlX2FsdGl2ZWM9eWVzOyBBQ19NU0dfUkVTVUxUKG5vKV0sCi0gCQkgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8YWx0aXZlYy5oPl0sCi0tCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotKwkJCVt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotIAkJCVtBQ19ERUZJTkUoW0hBVkVfQUxUSVZFQ19IXSwsCi0gCQkJICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFsdGl2ZWMuaD4gaGVhZGVyLl0pCi0gCQkJIGhhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQoeWVzKV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNzY1ZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGFuZCB0ZXN0IHByb2dyYW0gZm9yIGRlY29kaW5nIE1QRUctMiBhbmQgTVBFRy0xIHZpZGVvIHN0cmVhbXMiCi1IT01FUEFHRSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9tcGVnMi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PWVhZDYyNjAyZDQ2MzgzMjlkM2I1Yjg2YTU1ODAzMTU0IgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2ZpbGVzL21wZWcyZGVjLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzYzMWIwYTRiY2ZkZDBkNzhjMGJiMDA4MzA4MGIwZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc0YTc2MDY4ZjhlYzM2ZDRiYjU5YTAzYmYxMTU3YmU0NDExOGNhMDIyNTIxODBlOGIzNThiMGI1ZTNlZGVlZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvZG93bmxvYWRzLmh0bWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zZGwiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh2IgotCi1QQUNLQUdFUyA9ICJtcGVnMmRlYy1kYmcgbXBlZzJkZWMgbXBlZzJkZWMtZG9jIGxpYm1wZWcyIGxpYm1wZWcyLWRldiBsaWJtcGVnMmNvbnZlcnQgbGlibXBlZzJjb252ZXJ0LWRldiBsaWJtcGVnMi1zdGF0aWNkZXYgbGlibXBlZzJjb252ZXJ0LXN0YXRpY2RldiIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19saWJtcGVnMiA9ICIke2xpYmRpcn0vbGlibXBlZzIuc28uKiIKLUZJTEVTX2xpYm1wZWcyY29udmVydCA9ICIke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LnNvLioiCi1GSUxFU19saWJtcGVnMi1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzIubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibXBlZzIucGMgXAotICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzIuaCIKLUZJTEVTX2xpYm1wZWcyLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXBlZzIuYSIKLUZJTEVTX2xpYm1wZWcyY29udmVydC1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyY29udmVydC5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzJjb252ZXJ0LmgiCi1GSUxFU19saWJtcGVnMmNvbnZlcnQtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzExYzJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNS4xLmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBhbmQgdGVzdCBwcm9ncmFtIGZvciBkZWNvZGluZyBNUEVHLTIgYW5kIE1QRUctMSB2aWRlbyBzdHJlYW1zIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYm1wZWcyLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbXBlZzIuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT03NzY2ZjRmY2I1OGYwZjg0MTNjNDlhNzQ2ZjJhYjg5YiIKKworU1JDX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2ZpbGVzL2xpYm1wZWcyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2stZm9yLWF2YWlsYWJsZS1hcm0tb3B0aW1pemF0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVNldC12aXNpYmlsaXR5LW9mLWdsb2JhbC1zeW1ib2xzLXVzZWQtaW4tQVJNLXNwZWNpZmkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9saWJtcGVnMi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjBmOTJjNzQ1NGU1ODM3OWI0YTVhMzc4NDg1YmJkOGVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlZTIyZTg5M2NiNWZjMmIyYjZlYmQ2MGI4ODQ3OGFiODU1NmNiM2I5M2Y5YTBkN2NlOGYzYjYxODUxODcxZDQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2Rvd25sb2Fkcy5odG1sIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc2RsIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4diIKKworUEFDS0FHRVMgPSAibXBlZzJkZWMtZGJnIG1wZWcyZGVjIG1wZWcyZGVjLWRvYyBsaWJtcGVnMiBsaWJtcGVnMi1kZXYgbGlibXBlZzJjb252ZXJ0IGxpYm1wZWcyY29udmVydC1kZXYgbGlibXBlZzItc3RhdGljZGV2IGxpYm1wZWcyY29udmVydC1zdGF0aWNkZXYiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorRklMRVNfbGlibXBlZzIgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLnNvLioiCitGSUxFU19saWJtcGVnMmNvbnZlcnQgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5zby4qIgorRklMRVNfbGlibXBlZzItZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm1wZWcyLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzJhcmNoLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L21wZWcyZGVjL21wZWcyLmgiCitGSUxFU19saWJtcGVnMi1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLmEiCitGSUxFU19saWJtcGVnMmNvbnZlcnQtZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydGFyY2gubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyY29udmVydC5wYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzJjb252ZXJ0LmgiCitGSUxFU19saWJtcGVnMmNvbnZlcnQtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhNzAzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjIzLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIkF1ZGlvIGRlY29kZXIgZm9yIE1QRUctMSBMYXllciAxLzIvMyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIG9mIG1wZzEyMyBpcyBhbiBNUEVHLTEgTGF5ZXIgMS8yLzMgZGVjb2RpbmcgbGlicmFyeSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3RoZXIgcHJvZ3JhbXMuIFwKLW1wZzEyMyBhbHNvIGNvbWVzIHdpdGggYSBjb21tYW5kLWxpbmUgdG9vbCB3aGljaCBjYW4gcGxheWJhY2sgdXNpbmcgQUxTQSwgUHVsc2VBdWRpbywgT1NTLCBhbmQgc2V2ZXJhbCBvdGhlciBBUElzLCBcCi1hbmQgYWxzbyBjYW4gd3JpdGUgdGhlIGRlY29kZWQgYXVkaW8gdG8gV0FWLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tcGcxMjMuZGUvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbXBnMTIzL2J1Z3MvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU4Njc1MzYzOGQzY2YyNTEyNTI4Yjk5MDc5YmM0ZjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBnMTIzLmRlL2Rvd25sb2FkLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGRlMDQ1MTIzYTJhZDFlMzg1YTBhODJjMGVmOTI2OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTIzMDNjOGVjYjY1NTkzZTM5ODE1YzBhMmYyZjJkOTFmNzA4YzQzYjg1YTU1ZmRkMTkzNGM4MmU2NzdjZjhlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KLSMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKLSMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgotUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCi1QQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKLVBBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgotCi0jIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6Ci0jIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKLUFVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKLSAgICAtLXdpdGgtbW9kdWxlLXN1ZmZpeD0uc28gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKLSIKLQotIyBUaGUgeDg2IGFzc2VtYmxlciBvcHRpbWlzYXRpb25zIGNvbnRhaW5zIHRleHQgcmVsb2NhdGlvbnMgYW5kIHRoZXJlIGFyZSBubwotIyB1cHN0cmVhbSBwbGFucyB0byBmaXggdGhlbTogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLzE2OC8KLUlOU0FORV9TS0lQXyR7UE59X2FwcGVuZF94ODYgPSAiIHRleHRyZWwiCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JwotI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCi0jLi4uCi0jfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg2MTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MzMzNmJlZjc4ZjY3YzJlNjZjNGY2YzI4OGNhMWViMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjA0NThjOWI4Nzc5OWJjMmM5YmY5NDU1Mjc5Y2M0ZDMwNWUyNDVkYjQzYjUxYTM5ZWYyN2FmZTAyNWM1YThlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKKyMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgorUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgorCisjIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6CisjIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYjU2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIHBhdGNod29yayBTYXQgRmViICA0IDEyOjE5OjAxIDIwMTcKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAorU3ViamVjdDogW3B1bHNlYXVkaW8tZGlzY3Vzc10gaW9jaGFubmVsOiBkb24ndCB1c2UgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGluCisgdW5pb24KK0Zyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK1gtUGF0Y2h3b3JrLUlkOiAxMzY4ODUKK01lc3NhZ2UtSWQ6IDwyMDE3MDIwNDEyMTkwMS4xNzQyOC0xLXRhbnVrQGlraS5maT4KK1RvOiBwdWxzZWF1ZGlvLWRpc2N1c3NAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitEYXRlOiBTYXQsICA0IEZlYiAyMDE3IDE0OjE5OjAxICswMjAwCisKK0NsYW5nIGRpZG4ndCBsaWtlIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXk6CisKK3B1bHNlY29yZS9pb2NoYW5uZWwuYzozNTg6MTc6IGVycm9yOiBmaWVsZHMgbXVzdCBoYXZlIGEgY29uc3RhbnQgc2l6ZToKKyd2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gc3RydWN0dXJlJyBleHRlbnNpb24gd2lsbCBuZXZlciBiZSBzdXBwb3J0ZWQKKyAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpXTsKKyAgICAgICAgICAgICAgICBeCisKK0NvbW1pdCA0NTFkMWQ2NzYyIGludHJvZHVjZWQgdGhlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbiBvcmRlciB0byBoYXZlCit0aGUgY29ycmVjdCB2YWx1ZSBpbiBtc2dfY29udHJvbGxlbi4gVGhpcyBwYXRjaCByZXZlcnRzIHRoYXQgY29tbWl0IGFuZAordXNlcyBhIGRpZmZlcmVudCB3YXkgdG8gYWNoaWV2ZSB0aGUgc2FtZSBnb2FsLgorCitCdWdMaW5rOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1OAorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKK2luZGV4IDhhY2UyOTdmZi4uODk3MzM3NTIyIDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYworKysrIGIvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYworQEAgLTM1NSw3ICszNTUsNyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCisgICAgIHN0cnVjdCBpb3ZlYyBpb3Y7CisgICAgIHVuaW9uIHsKKyAgICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKKy0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07CisrICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIE1BWF9BTkNJTF9EQVRBX0ZEUyldOworICAgICB9IGNtc2c7CisgCisgICAgIHBhX2Fzc2VydChpbyk7CitAQCAtMzgyLDcgKzM4MiwxMyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCisgICAgIG1oLm1zZ19pb3YgPSAmaW92OworICAgICBtaC5tc2dfaW92bGVuID0gMTsKKyAgICAgbWgubXNnX2NvbnRyb2wgPSAmY21zZzsKKy0gICAgbWgubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZyk7CisrCisrICAgIC8qIElmIHdlIGZvbGxvd2VkIHRoZSBleGFtcGxlIG9uIHRoZSBjbXNnIG1hbiBwYWdlLCB3ZSdkIHVzZQorKyAgICAgKiBzaXplb2YoY21zZy5kYXRhKSBoZXJlLCBidXQgaWYgbmZkIDwgTUFYX0FOQ0lMX0RBVEFfRkRTLCB0aGVuIHRoZSBkYXRhCisrICAgICAqIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbiBuZWVkZWQsIGFuZCB0aGUga2VybmVsIGRvZXNuJ3QgbGlrZSBpdCBpZiB3ZSBzZXQKKysgICAgICogbXNnX2NvbnRyb2xsZW4gdG8gYSBsYXJnZXIgdGhhbiBuZWNlc3NhcnkgdmFsdWUuIFRoZSBjb21taXQgbWVzc2FnZSBmb3IKKysgICAgICogY29tbWl0IDQ1MWQxZDY3NjIgY29udGFpbnMgYSBsb25nZXIgZXhwbGFuYXRpb24uICovCisrICAgIG1oLm1zZ19jb250cm9sbGVuID0gQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCk7CisgCisgICAgIGlmICgociA9IHNlbmRtc2coaW8tPm9mZCwgJm1oLCBNU0dfTk9TSUdOQUwpKSA+PSAwKSB7CisgICAgICAgICBpby0+d3JpdGFibGUgPSBpby0+aHVuZ3VwID0gZmFsc2U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIKaW5kZXggZjNhODU3My4uOWEzNGFmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgpAQCAtMyw2ICszLDcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhZHNwLU1ha2UtaXQtY29tcGlsZS1vbi1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdWxzZWF1ZGlvLWRpc2N1c3MtaW9jaGFubmVsLWRvbi10LXVzZS12YXJpYWJsZS1sZW5ndGgtYXJyYXktaW4tdW5pb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI0OTUwZDI3OTliZjU1YWI5MWY2YjdmOTkwYjdmMDk3MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zYmMvc2JjXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zYmMvc2JjXzEuMy5iYgppbmRleCAyZDdmMzFiLi4yYmI4OTVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc2JjL3NiY18xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NiYy9zYmNfMS4zLmJiCkBAIC0yLDggKzIsMTIgQEAKIERFU0NSSVBUSU9OID0gIkJsdWV0b290aCBsb3ctY29tcGxleGl0eSwgc3ViYmFuZCBjb2RlYyAoU0JDKSBsaWJyYXJ5LiIKIEhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmJsdWV6Lm9yZyIKIFNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1leGFtcGxlcyA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NiY2VuYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTA4ZTdhNzBiMTI3ZjQxMDBmZjJjZDdkNjI5MTQ3ZDhkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NiYy9zYmMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0wZjU3ZDBkZjIyYjBkNDA3NDZiZGQyOTgwNWE0MzYxYiIKIAogREVQRU5EUyA9ICJsaWJzbmRmaWxlMSIKQEAgLTE0LDMgKzE4LDYgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjEwMjJjZjU3NmYxNDE5MDI0MWU3MDcxNzUzZmRhY2RjZTVkMWRlYTg5ZmZkNzA0MTEwZmM1MGJlNjg5MzA5IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSsgIiR7UE59LWV4YW1wbGVzIgorRklMRVNfJHtQTn0tZXhhbXBsZXMgKz0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjM2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4yLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJTcGVlY2ggQXVkaW8gQ29kZWMiCitERVNDUklQVElPTiA9ICJTcGVleCBpcyBhbiBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIHBhdGVudC1mcmVlIGF1ZGlvIGNvbXByZXNzaW9uIGZvcm1hdCBkZXNpZ25lZCBmb3Igc3BlZWNoLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3NwZWV4L3NwZWV4Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zNDttZDU9ZWY4YzhlYTRmNzE5OGQ3MWNmMzUwOWM2ZWQwNWVhNTAiCitERVBFTkRTID0gImxpYm9nZyBzcGVleGRzcCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4LSR7UFZ9LnRhci5neiIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInNwZWV4LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGFiN2JiMjU4OTExMGRmYWYwZWQ3ZmE3NzU3ZGM0OWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWFhZThhZjBhYzc0MmRjN2Q1NDJjOTQzOWFjNzJmMWYzODVjZTgzODM5MmRjODQ5Y2FlNDUzNmFmOTIxMDA5NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1lbmFibGUtZml4ZWQtcG9pbnQgLS1kaXNhYmxlLWZsb2F0LWFwaSAtLWRpc2FibGUtdmJyJywgJycsIGQpfSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4ycmMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMnJjMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkMjNkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4ycmMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTcGVlY2ggQXVkaW8gQ29kZWMiCi1ERVNDUklQVElPTiA9ICJTcGVleCBpcyBhbiBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIHBhdGVudC1mcmVlIGF1ZGlvIGNvbXByZXNzaW9uIGZvcm1hdCBkZXNpZ25lZCBmb3Igc3BlZWNoLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3NwZWV4L3NwZWV4Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zNDttZDU9ZWY4YzhlYTRmNzE5OGQ3MWNmMzUwOWM2ZWQwNWVhNTAiCi1ERVBFTkRTID0gImxpYm9nZyBzcGVleGRzcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnVzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZhZTdkYjNiYWIwMWUxZDRiODZiYWNmYThjYTMzZTgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYTI3YzcyNDdmZjE1Yzg1MjFjMmFlMGVhMjE5ODdjOWU5NzEwYThmMmQzNDQ4ZThiNzlkYTk4MDZiY2U4OTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0tZW5hYmxlLWZpeGVkLXBvaW50IC0tZGlzYWJsZS1mbG9hdC1hcGkgLS1kaXNhYmxlLXZicicsICcnLCBkKX0gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgppbmRleCA2OWY1MmMyLi5jNTQ3NmM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICAgICBmaWxlOi8vZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaCBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUkNSRVYgPSAiMmI3NDFmODFlNTFmOTJkMDUzZDg3YTQ5ZjU5ZmYxMDI2NTUzYTBmNiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCmluZGV4IDkzZTVhNGUuLjUzMTU3MWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKQEAgLTQsMyArNCw4IEBACiAKIElNQUdFX0ZFQVRVUkVTICs9ICJwdGVzdC1wa2dzIgogCisjIFRoaXMgaW1hZ2UgaXMgc3VmZmljaWVudGx5IGxhcmdlICh+M0dCKSB0aGF0IGl0IGNhbid0IGFjdHVhbGx5IGZpdCBpbiBhIGxpdmUKKyMgaW1hZ2UgKHdoaWNoIGhhcyBhIDRHQiBsaW1pdCksIHNvIG51bGxpZnkgdGhlIG92ZXJoZWFkIGZhY3RvciAoMS4zeCBvdXQgb2YgdGhlCisjIGJveCkgYW5kIGV4cGxpY2l0bHkgYWRkIGp1c3QgNTAwTUIuCitJTUFHRV9PVkVSSEVBRF9GQUNUT1IgPSAiMS4wIgorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjUyNDI4OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKaW5kZXggOTlkYWQxMS4uYjg5Nzk1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKQEAgLTgsNyArOCw1IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZQogCi1JTUFHRV9JTlNUQUxMICs9ICJwYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by1nYW1lcyIKLQogVE9PTENIQUlOX0hPU1RfVEFTS19hcHBlbmQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCiBUT09MQ0hBSU5fSE9TVF9UQVNLX3JlbW92ZV90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWE3YjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJNYXRjaGJveCBXaW5kb3cgTWFuYWdlciBEZXNrdG9wIgotSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZGVza3RvcC5jO2VuZGxpbmU9MjA7bWQ1PTM2YzliZjI5NWU2MDA3ZjM0MjMwOTVmNDA1YWY1YTJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7ZW5kbGluZT0xOTttZDU9MjA0NDI0NGY5N2ExOTVjMjViN2RjNjAyYWM3ZTlhMDAiCi0KLURFUEVORFMgPSAiZ25vbWUtY29tbW9uLW5hdGl2ZSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgotU0VDVElPTiA9ICJ4MTEvd20iCi0KLSMgU1JDUkVWIHRhZ2dlZCAyLjEKLVNSQ1JFViA9ICJjODQ3MzUxOWEwZjM3NDg4YjhiM2U4MzllMjc1YjAwMGNkZGUwYjgwIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0tMiBcCi0gICAgICAgICAgIGZpbGU6Ly92Zm9sZGVycy8qIFwKLSAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92Zm9sZGVycy8qICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwY2RmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIk1hdGNoYm94IFdpbmRvdyBNYW5hZ2VyIERlc2t0b3AiCitIT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kZXNrdG9wLmM7ZW5kbGluZT0yMDttZDU9MzZjOWJmMjk1ZTYwMDdmMzQyMzA5NWY0MDVhZjVhMmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztlbmRsaW5lPTE5O21kNT0yMDQ0MjQ0Zjk3YTE5NWMyNWI3ZGM2MDJhYzdlOWEwMCIKKworREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgorU0VDVElPTiA9ICJ4MTEvd20iCisKKyMgU1JDUkVWIHRhZ2dlZCAyLjIKK1NSQ1JFViA9ICI2YmM2N2QwOWRhNDE0N2U1NTUyZmUzMDAxMWEwNWEyYzU5ZDJmNzc3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0tMiBcCisgICAgICAgICAgIGZpbGU6Ly92Zm9sZGVycy8qIFwKKyAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92Zm9sZGVycy8qICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCmluZGV4IDZmYjFiNjcuLjk3Y2NlZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCkBAIC0xOSw3ICsxOSw2IEBACiAgICAgIgogCiBORVRXT1JLX01BTkFHRVIgPz0gImNvbm5tYW4tZ25vbWUiCi1ORVRXT1JLX01BTkFHRVJfbGliYy11Y2xpYmMgPSAiIgogCiBTVU1NQVJZXyR7UE59LWJhc2UgPSAiU2F0byBkZXNrdG9wIC0gYmFzZSBwYWNrYWdlcyIKIFJERVBFTkRTXyR7UE59LWJhc2UgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MGEzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzMzc3OTllNDAzNTBiM2RiMjQ0MWNjOThmNjVlYzM2YTc0ZGZiMzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjEgQXByIDIwMTcgMTI6MTg6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIC1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93PSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQKKword2UgbmVlZCB0aGlzIHdhcm5pbmcgdG8gYmUgc3VwcHJlc3NlZCB3aXRoIGdjYzcrCitob3dldmVyIG9sZGVyIGNvbXBpbGVycyBkb250IHN1cHBvcnQgaXQgc28gd2UgbmVlZAorYSB3YXkgdG8gZGlzYmxlIGl0IG9ubHkgaWYgY29tcGlsZXIgc3VwcG9ydHMgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDNhMzhjOTUuLmJiOTAzNWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQyLDcgKzQyLDcgQEAgZmkKKyBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgIEFDX01TR19DSEVDS0lORyhbZm9yIHVzYWJsZSBnY2Mgd2FybmluZyBmbGFnc10pCisgICBnY2N3YXJuaW5nZmxhZ3M9CistICBmb3IgZmxhZyBpbiAtV2FsbCAtV2Vycm9yIC1zdGQ9Yzg5IC1wZWRhbnRpYzsgZG8KKysgIGZvciBmbGFnIGluIC1XYWxsIC1XZXJyb3IgLXN0ZD1jODkgLXBlZGFudGljIC1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93PTsgZG8KKyAgICAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCisgICAgIENGTEFHUz0iJENGTEFHUyRnY2N3YXJuaW5nZmxhZ3MgJGZsYWcgJEdUS19DRkxBR1MiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IGEyNWMwMDcuLmRlY2QyYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC0xNCw3ICsxNCw5IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIFNSQ1JFViA9ICI4ZGZlNWNlYzMxZTc4NGU0ZWNlMjk1NWVjYzhjYzM1ZWU3ZThmYmIzIgogUEUgPSAiMSIKIFBWID0gIjAuMCtnaXQke1NSQ1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAppbmRleCA5M2E2OWMwLi4wZjZlZWVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoCkBAIC05LDYgKzksOCBAQAogdGhyb3VnaCB0aGUgdXNlIG9mIHFlbXUgdGFyZ2V0IGVtdWxhdGlvbi4KIAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgfCA2IC0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjRhZWUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKLQotTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCi0JCSAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjE4YzJjZmEwMGNhZGZkMGI0ZDhkYjIxY2FiMDExZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzZkODBjYzdlYjVkMzJmODA2MzA0MWZhMTFhMWE2ZjE3YTI5NzY1YzJmNjljNmJjODYyY2Q0N2MyZDUzOWI4IgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotIyBkZXBlbmRzIG9uIGxpYnh0Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAotCQkiCi0KLSMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKLSMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1Mz1PTiIKLQotIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjBmZjhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCkBAIC0wLDAgKzEsMTIxIEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKKworTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisJCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCisJCSAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMWE1NDg1OTUxMzVlZTc1YWQzYmYyZTE4YWM4MzExMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzkxMmNjMmY0MGYxMmU0NTJiZTFjYTRiYWJkYmRhYWMwZWM0ZjgyOGQ0NDEyNTdhNmIwNmMyOTYzYmJhYzNjIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworIyBkZXBlbmRzIG9uIGxpYnh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKK1BBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgorUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorCQktRFBPUlQ9R1RLIFwKKwkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKKwkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAorICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAorCQkiCisKKyMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgorCisjIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYworRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKKyMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1Mz1PTiIKKworIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgorIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcworIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCitTRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCitTRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKKyMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgorIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgorCisjIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAorIyBTZWdtZW50YXRpb24gZmF1bHQKK0dJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCitHSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg2NzZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1TVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGNvbXBhbmlvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiYXByIGV4cGF0IGdkYm0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTE5ZTBhMThlMDNmN2MwMjMwNzA1NjhjMTRiMDc3YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHVfdmVyc2lvbi5oO2VuZGxpbmU9MTc7bWQ1PTgwNjY4NWE4NGU3MWYxMGM4MDE0NGM0OGViMzVkZjQyIgotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODY2ODI1YzA0ZGE4MjdjNmU1ZjUzZGFmZjU1NjlmNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc2YTEyYTU5YmMyODZkNjM0YTIxZDdiZTA4NDFjYzc0Mjg5ZWE5MDc3YWExYWY0NmJlMTlkMWE2ZTg0NGMxOSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwgCi0JCS0td2l0aG91dC1vZGJjIFwKLQkJLS13aXRob3V0LXBnc3FsIFwKLQkJLS13aXRoLWRibT1nZGJtIFwKLQkJLS13aXRoLWdkYm09JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0JCS0td2l0aG91dC1zcWxpdGUyIFwKLQkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCi0KLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCi0KLVBSID0gInIxIgotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0JaWYgWyAiJHtDTEFTU09WRVJSSURFfSIgPSAiY2xhc3MtdGFyZ2V0IiBdOyB0aGVuCi0JCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlmaQotfQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotCW1rZGlyICR7Qn0vYnVpbGQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotfQotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0Jc2VkIC1pICJzI0xJQlRPT0w9XCQoU0hFTEwpIFwkKGFwcl9idWlsZGRpcikjTElCVE9PTD1cJChTSEVMTCkgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotCSMgc29tZXRpbWVzIHRoZXJlIGlzbid0IFNIRUxMCi0Jc2VkIC1pICJzI0xJQlRPT0w9XCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7U30vYnVpbGQvcnVsZXMubWsKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0Jc2VkIC1pICJzI1woYXByX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1woYXByX2J1aWxkZXJzXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1wodG9wX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1woTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpXCkuKiNcMS9saWJ0b29sIyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBVX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBVX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2FwdS0xLWNvbmZpZwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiY3J5cHRvIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKLVBBQ0tBR0VDT05GSUdbY3J5cHRvXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aC1jcnlwdG8sLS13aXRob3V0LWNyeXB0byxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1zcWxpdGUzLHNxbGl0ZTMiCi0KLSNmaWxlcyAke2xpYmRpcn0vYXByLXV0aWwtMS8qLnNvIGFyZSBub3Qgc3ltbGlua3MgYnV0IGxvYWRhYmxlIG1vZHVsZXMgdGh1cyB0aGV5IGFyZSBwYWNrYWdlZCBpbiAke1BOfQotRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlN9ICR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU0RFVn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHJ1dGlsLmV4cCAke2xpYmRpcn0vYXByLXV0aWwtMS8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS8qLmEiCi0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCi0KLWluaGVyaXQgcHRlc3QKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSBnbGliYy1nY29udi1pc284ODU5LTIgZ2xpYmMtZ2NvbnYtdXRmLTciCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtCfS90ZXN0Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCW1rZGlyICR0Ci0JZm9yIGkgaW4gdGVzdGFsbCBkYXRhOyBkbyBcCi0JICBjcCAtciAke0J9L3Rlc3QvJGkgJHQ7IFwKLQlkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDhkMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgpAQCAtMCwwICsxLDk1IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGNvbXBhbmlvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiYXByIGV4cGF0IGdkYm0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU4YWEwYjFlZmUwYzEyZjIzZDRiMDA3ZGRiOWE1ZGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHVfdmVyc2lvbi5oO2VuZGxpbmU9MTc7bWQ1PTgwNjY4NWE4NGU3MWYxMGM4MDE0NGM0OGViMzVkZjQyIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2IwM2RiZmY2MDcyOGE0ZjRjMzNmNWQ5MjllOGIzNWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDgzZWY0ZDU5ZTZhYzlhMzZjN2QzZmQ4N2FkN2I5ZGI3YWQ4YWUyOWMwNmI5ZGQ4ZmYyMmRkYTFjYzQxNjM4OSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwgCisJCS0td2l0aG91dC1vZGJjIFwKKwkJLS13aXRob3V0LXBnc3FsIFwKKwkJLS13aXRoLWRibT1nZGJtIFwKKwkJLS13aXRoLWdkYm09JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisJCS0td2l0aG91dC1zcWxpdGUyIFwKKwkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCisKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCisKK1BSID0gInIxIgorCitPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJaWYgWyAiJHtDTEFTU09WRVJSSURFfSIgPSAiY2xhc3MtdGFyZ2V0IiBdOyB0aGVuCisJCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlmaQorfQorZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworCW1rZGlyICR7Qn0vYnVpbGQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5taworfQorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJc2VkIC1pICJzI0xJQlRPT0w9XCQoU0hFTEwpIFwkKGFwcl9idWlsZGRpcikjTElCVE9PTD1cJChTSEVMTCkgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5taworCSMgc29tZXRpbWVzIHRoZXJlIGlzbid0IFNIRUxMCisJc2VkIC1pICJzI0xJQlRPT0w9XCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7U30vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJc2VkIC1pICJzI1woYXByX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woYXByX2J1aWxkZXJzXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1wodG9wX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpXCkuKiNcMS9saWJ0b29sIyIgJHtCfS9idWlsZC9ydWxlcy5taworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2FwdS0xLWNvbmZpZworfQorCitQQUNLQUdFQ09ORklHID8/PSAiY3J5cHRvIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRvXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aC1jcnlwdG8sLS13aXRob3V0LWNyeXB0byxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1zcWxpdGUzLHNxbGl0ZTMiCisKKyNmaWxlcyAke2xpYmRpcn0vYXByLXV0aWwtMS8qLnNvIGFyZSBub3Qgc3ltbGlua3MgYnV0IGxvYWRhYmxlIG1vZHVsZXMgdGh1cyB0aGV5IGFyZSBwYWNrYWdlZCBpbiAke1BOfQorRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlN9ICR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHJ1dGlsLmV4cCAke2xpYmRpcn0vYXByLXV0aWwtMS8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS8qLmEiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSBnbGliYy1nY29udi1pc284ODU5LTIgZ2xpYmMtZ2NvbnYtdXRmLTciCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJY2QgJHtCfS90ZXN0CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCW1rZGlyICR0CisJZm9yIGkgaW4gdGVzdGFsbCBkYXRhOyBkbyBcCisJICBjcCAtciAke0J9L3Rlc3QvJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKaW5kZXggMTIzNzE0Mi4uYzVlOTJhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApAQCAtMjcsNiArMjcsOCBAQAogQ2hhbmdlIHRoZSBhYm92ZSBjb3JyZXNwb25kaW5nbHkuCiAKIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY29uZmlndXJlLmluIHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTJiNTYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZTk3NjlmMzM0OWZlMTFmYzBhNWUxYjIyNGMyMzZhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDAzZWQyOWMyMmE3MTUyYmU0NWI4ZTUwNDMxMDYzNzM2ZGY5ZTFkYWExZGRmOTNmNmE1NDdiYTdhMjhmNjdhIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLSMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCi0KLSMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCi0jCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCi0KLSMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKLSMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLUNDQUNIRSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKLQkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50Ci0JIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgotCWV4cG9ydCBHUkVQPSJncmVwIgotCi0JY2QgJHtTfQotCS4vYnVpbGRjb25mCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi0KLSNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KLSN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgotCWluc3RhbGwgLWQgJGQvCi0JY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCi0Jc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCi0JY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCi0JY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLwotCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7U30vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAtcCAkdC8ubGlicwotCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LwotCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLwotCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCi0JY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCi0JY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCi19Ci0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlZWQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGZkNGNkMjE2ODI4YzhjYWU1ZGU1YTEyZjM4NDRjOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2Fwcl9saWIuaDtlbmRsaW5lPTE3O21kNT1lZTQyZmE3NTc1ZGM0MDU4MGE5ZTAxYzFiNzVmYWU5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhbnVwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTgxYTg1MTk2N2M3OWI1Y2U5YmZiYzkwOWU0YmY3MzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDkxMDljZWEzNzdiYWIwMDI4YmJhMTlhOTJiNWIwZTg5NjAzZGY5ZWFiMDVjMGY3ZGJkNGRkODNkNDhkY2ViZCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCisjIEFkZGVkIHRvIGZpeCBzb21lIGlzc3VlcyB3aXRoIGNtYWtlLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYm13Y2FyaXQvbWV0YS1yb3MvaXNzdWVzLzY4I2lzc3VlY29tbWVudC0xOTg5NjkyOAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFwcl9jdl9tdXRleF9yZWN1cnNpdmU9eWVzIgorCisjIEFsc28gc3VwcHJlc3MgdHJ5aW5nIHRvIHVzZSBzY3RwLgorIworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyBhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vIgorCisjIE90aGVyd2lzZSBsaWJ0b29sIGZhaWxzIHRvIGNvbXBpbGUgYXByLXV0aWxzCisjIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6ICAgZXJyb3I6IHNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnCitDQ0FDSEUgPSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCisJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudAorCSMgaW5zdGFsbCBwYXRocyBmb3IgZ3JlcC4KKwlleHBvcnQgR1JFUD0iZ3JlcCIKKworCWNkICR7U30KKwkuL2J1aWxkY29uZgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHIuZXhwICR7ZGF0YWRpcn0vYnVpbGQtMS8qIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCisjZm9yIHNvbWUgcmVhc29uLCBidWlsZC9saWJ0b29sLm00IGhhbmRsZWQgYnkgYnVpbGRjb25mIHN0aWxsIGJlIG92ZXJ3cml0dGVuCisjd2hlbiBhdXRvY29uZiwgc28gaGFuZGxlIGl0IGFnYWluLgorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvbGlidG9vbC5tNAorCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGFwci5oCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAke0R9JHtkYXRhZGlyfS9idWlsZC0xL2Fwcl9ydWxlcy5taworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisJICAgICAgIC1lICdzLEFQUl9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCisJICAgICAgIC1lICdzLEFQUl9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHItMS1jb25maWcKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImFwcl9ydWxlcy5tayBsaWJ0b29sIgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImFwcl9zeXNyb290X3ByZXByb2Nlc3MiCisKK2Fwcl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCWQ9JHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9hcHIKKwlpbnN0YWxsIC1kICRkLworCWNwICR7U30vYnVpbGQvYXByX3J1bGVzLm1rICRkLworCXNlZCAtaSBzLGFwcl9idWlsZGRpcj0uKixhcHJfYnVpbGRkaXI9LGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsYXByX2J1aWxkZXJzPS4qLGFwcl9idWlsZGVycz0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxMSUJUT09MPS4qLExJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLFwkXChhcHJfYnVpbGRlcnNcKSwke1NUQUdJTkdfREFUQURJUn0vYXByLyxnICRkL2Fwcl9ydWxlcy5taworCWNwICR7U30vYnVpbGQvbWtkaXIuc2ggJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX2V4cG9ydHMuYXdrICRkLworCWNwICR7U30vYnVpbGQvbWFrZV92YXJfZXhwb3J0LmF3ayAkZC8KKwljcCAke1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9idWlsZC0xL2xpYnRvb2wKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwljZCAke1N9L3Rlc3QKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbWtkaXIgLXAgJHQvLmxpYnMKKwljcCAtciAke1N9L3Rlc3QvZGF0YSAkdC8KKwljcCAtciAke1N9L3Rlc3QvLmxpYnMvKi5zbyAkdC8ubGlicy8KKwljcCAke1N9L3Rlc3QvcHJvY19jaGlsZCAkdC8KKwljcCAke1N9L3Rlc3QvcmVhZGNoaWxkICR0LworCWNwICR7U30vdGVzdC9zb2NrY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2twZXJmICR0LworCWNwICR7U30vdGVzdC90ZXN0YWxsICR0LworCWNwICR7U30vdGVzdC90cnlyZWFkICR0LworfQorCitleHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL2Jhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIKaW5kZXggYmQwY2ZkZi4uMjFiYmNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FyZ3Atc3RhbmRhbG9uZS9hcmdwLXN0YW5kYWxvbmVfMS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcmdwLXN0YW5kYWxvbmUvYXJncC1zdGFuZGFsb25lXzEuMy5iYgpAQCAtMTksNiArMTksOSBAQAogCiBDRkxBR1MgKz0gIi1mUElDIC1VX19PUFRJTUlaRV9fIgogCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKKwogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1EIC1tIDA2NDQgJHtCfS9saWJhcmdwLmEgJHtEfSR7bGliZGlyfS9saWJhcmdwLmEKIAlpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9hcmdwLmggJHtEfSR7aW5jbHVkZWRpcn0vYXJncC5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbC9nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGwvZ2NjNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmZkMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGwvZ2NjNy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDgwODlmYTAyMTIyZmVkMGE2Mzk0ZWJhMTRiYmVkY2IxZDE4ZTIzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLZXZpbiBBdGtpbnNvbiA8a2V2aW5hQGdudS5vcmc+CitEYXRlOiBUaHUsIDI5IERlYyAyMDE2IDAwOjUwOjMxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIENvbXBpbGUgRml4ZXMgZm9yIEdDQyA3LgorCitDbG9zZXMgIzUxOS4KKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIG1vZHVsZXMvZmlsdGVyL3RleC5jcHAgfCAyICstCisgcHJvZy9jaGVja19mdW5zLmNwcCAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvZmlsdGVyL3RleC5jcHAgYi9tb2R1bGVzL2ZpbHRlci90ZXguY3BwCitpbmRleCBhOTc5NTM5Li4xOWFiNjNjIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9maWx0ZXIvdGV4LmNwcAorKysrIGIvbW9kdWxlcy9maWx0ZXIvdGV4LmNwcAorQEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgeworIAorICAgICBpZiAoYyA9PSAneycpIHsKKyAKKy0gICAgICBpZiAodG9wLmluX3doYXQgPT0gUGFybSB8fCB0b3AuaW5fd2hhdCA9PSBPcHQgfHwgdG9wLmRvX2NoZWNrID09ICdcMCcpCisrICAgICAgaWYgKHRvcC5pbl93aGF0ID09IFBhcm0gfHwgdG9wLmluX3doYXQgPT0gT3B0IHx8ICp0b3AuZG9fY2hlY2sgPT0gJ1wwJykKKyAJcHVzaF9jb21tYW5kKFBhcm0pOworIAorICAgICAgIHRvcC5pbl93aGF0ID0gUGFybTsKK2RpZmYgLS1naXQgYS9wcm9nL2NoZWNrX2Z1bnMuY3BwIGIvcHJvZy9jaGVja19mdW5zLmNwcAoraW5kZXggZGI1NGYzZC4uODllZTA5ZCAxMDA2NDQKKy0tLSBhL3Byb2cvY2hlY2tfZnVucy5jcHAKKysrKyBiL3Byb2cvY2hlY2tfZnVucy5jcHAKK0BAIC02NDcsNyArNjQ3LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdHJ1bmNhdGUoRklMRSAqIG91dCwgY29uc3QgY2hhciAqIHdvcmQsIGludCB3aWR0aCkgeworICAgICB9CisgICB9CisgICBpZiAoaSA9PSB3aWR0aC0xKSB7CistICAgIGlmICh3b3JkID09ICdcMCcpCisrICAgIGlmICgqd29yZCA9PSAnXDAnKQorICAgICAgIHB1dChvdXQsJyAnKTsKKyAgICAgZWxzZSBpZiAod29yZFtsZW5dID09ICdcMCcpCisgICAgICAgcHV0KG91dCwgd29yZCwgbGVuKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsXzAuNjAuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKaW5kZXggNWEyMzc1NC4uMTlhNzE1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKQEAgLTYsNyArNiw5IEBACiAKIFBSID0gInIxIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZ2NjNy5wYXRjaCBcCisgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImU2NmE5YzlhZjZhNjBkYzQ2MTM0ZmRhY2Y2Y2U5N2Q3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1MjU4M2E4M2E2MzYzMzcwMWM1ZjcxZGIzZGM0MGFhYjg3YjdmNzZiMjk3MjNhZWIyNzk0MWVmZjQyZGY2ZTEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZWRiNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFhNjJhZWQyMWI4ZTAzZGM0NGFiODFhZTQ5ZDg5M2NhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YmRlZGJlYjg3M2ViMjI5ZWIwOGM4OGUxMWQwNzcxM2VjMjVhZTE3NTI1MTY0OGFkMWE5ZGE2YzIxMTEzYzEiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBUaGUgYXQtc3BpMi1jb3JlIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgotCi1GSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKLUZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMGU0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OTM4OGZiYzRkYzdmMjczOTQ1NTZkZDM4OWFlYjU5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRjOTBhYzRmNzRiOGZmZTk2YTkzNjNjMjUyMDhhNDQzYjM4MWJhY2VjZmVmZWE2ZGU1NDlmMjBlZDY5NTdkIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKKworRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCitGSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzI4NDllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2RhNWZlNjJhNjUzZTQ5ZGFkMWM0N2Y5YTQ2ZmVlNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDE1ZWEzYWYyMTMxODMwODc5OGUwOThiZThiM2ExN2IyZjBjZjJmZTE2Y2VjZGU1YWQ4NDBjZjRlMGYyYzgwYSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14ZXZpZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4N2FlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MWQwYTQ3MWU2OTMyOTI5MzRhNzNmMjg4ZWJmZjM1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTkwZDA2NGI5MzdhYWNmZTc5YTk2MjMyYWM3ZTYzZDI4ZDcxNmU4NWJkOWZmNDMzM2Y4NjUzMDVhOTU5YjViIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM4MGY5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImM3ZjJhZGNmNzVlNDA1ODcyNzE3NGNkZTk3MGU5MTI5IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDM0OWY1Y2E0OTc0YzljNzZhNDk2M2U1YjI1NDcyMDUyM2IwYzc4NjcyY2JjMGUxYTM0NzVkYmQ5YjNkNDRiNiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2xpYnRlc3QgXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjMxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNzQ3YTgwMDg5ZGZhM2MwYmJjZjIxYWRmZmY5OTY4YiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiMmRhYTlhODA4YzczYTdhNzlkMjk4M2YzMzNlMGJhNzRiZTQyZmM1MWUzYmExZmFmMjU1MWE2MzY0ODdhNDkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoCmluZGV4IGNkNDUxMGMuLmU2NDk5MGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaApAQCAtMSw2ICsxLDkgQEAKK0Zyb20gMzExNTg5ZmVkZjE5NjE2ODM4MmQ4ZjBkYjMwM2FiMzI4YmNmOWQ4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWF5IDIwMTYgMTU6MTY6MDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWNsLmluYywgcnVuLXB0ZXN0OiBpbXByb3ZlIHB0ZXN0IGZ1bmN0aW9uYWxpdHkgb24gbGltaXRlZAorCiBjb21taXQgYzQ1YmFlODQ4MTdhNzBmZWY2YzJiNjYxYTA3YTQ5MmEwZDIzYWU4NQotQXV0aG9yOiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1EYXRlOiAgIFdlZCBNYXkgMTEgMTU6MTY6MDYgMjAxNiAtMDUwMAogCiAgICAgRml4IHBlcm1pc3Npb25zIG9uIHRlbXBvcmFyeSBkaXJlY3RvcnkKIApAQCAtMTAsNiArMTMsMTMgQEAKIAogICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KIAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1jNjc3MmE5NTg4MDBkZTA2NDQ4MjYzNGY3N2MyMGEwZmFhZmM1YWY2IF0KKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKIGRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0CiBpbmRleCA0MjYxNWY1Li4wOThiNTJhIDEwMDY0NAogLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKQEAgLTIyLDMgKzMyLDYgQEAKICAJJCBta2RpciBkCiAgCSQgY2QgZAogIAkkIHVtYXNrIDAyNworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgppbmRleCAzMDZjN2I1Li44ZjNkYzQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKQEAgLTQzLDYgKzQzLDExIEBACiAJdGFyIC1jIC0tZXhjbHVkZT1uZnMgdGVzdC8gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCiAJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZQogCWNwICR7U30vaW5jbHVkZS9idWlsZGRlZnMgJHtTfS9pbmNsdWRlL2J1aWxkbWFjcm9zICR7U30vaW5jbHVkZS9idWlsZHJ1bGVzICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvCisJIyBSZW1vdmUgYW55IGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtZSAiczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnIiBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlL2J1aWxkZGVmcwogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhY2wgYmFzaCBjb3JldXRpbHMgcGVybCBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgcGVybC1tb2R1bGUtcG9zaXggc2hhZG93IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwppbmRleCBlOGI1ZDA1Li4yNGVmNWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtMzIsNiArMzIsMTIgQEAKIAkgIGRvIGNwICR7U30vaW5jbHVkZS8kaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLzsgXAogCWRvbmUKIAlzZWQgLWUgJ3N8OyBAZWNob3w7IGVjaG98JyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L01ha2VmaWxlCisgICAgCisJIyBSZW1vdmUgYW55IGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtZSAiczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnIiBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlL2J1aWxkZGVmcwogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhdHRyIGNvcmV1dGlscyBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgcGVybC1tb2R1bGUtcG9zaXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNkNjUwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDM3YTI3YjZmZDA5ZWNiMzcwOTdiODVlNWRiNzRlNGY3N2I4MGZlMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAyMjoyMDozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2Ugc3RkaW50IHR5cGVzIGNvbnNpc3RlbnRseQorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBpbmNsdWRlL2F0dHJpYnV0ZXMuaCB8IDYgKysrKy0tCisgbWFuL21hbjMvYXR0cl9saXN0LjMgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK0luZGV4OiBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0dHItMi40LjQ3Lm9yaWcvaW5jbHVkZS9hdHRyaWJ1dGVzLmgKKysrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAorQEAgLTIyLDYgKzIyLDcgQEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgLyoKKyAgKglBbiBhbG1vc3QtSVJJWC1jb21wYXRpYmxlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgQVBJCisgICoJKHRoZSBJUklYIGF0dHJpYnV0ZSAibGlzdCIgb3BlcmF0aW9uIGlzIG1pc3NpbmcsIGFkZGVkIEFUVFJfU0VDVVJFKS4KK0BAIC02OSw3ICs3MCw3IEBAIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0IHsKKyAgKiBhbF9vZmZzZXRbaV0gZW50cnkgcG9pbnRzIHRvLgorICAqLworIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2VudCB7CS8qIGRhdGEgZnJvbSBhdHRyX2xpc3QoKSAqLworLQl1X2ludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KKysJdWludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KKyAJY2hhcgkJYV9uYW1lWzFdOwkvKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgKi8KKyB9IGF0dHJsaXN0X2VudF90OworIAorQEAgLTkwLDcgKzkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcgorICAqIG9wZXJhdGlvbiBvbiBhIGN1cnNvciBpcyB0byBiemVybygpIGl0LgorICAqLworIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2N1cnNvciB7CistCXVfaW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KKysJdWludDMyX3QJb3BhcXVlWzRdOwkvKiBhbiBvcGFxdWUgY29va2llICovCisgfSBhdHRybGlzdF9jdXJzb3JfdDsKKyAKKyAvKgorSW5kZXg6IGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXR0ci0yLjQuNDcub3JpZy9tYW4vbWFuMy9hdHRyX2xpc3QuMworKysrIGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCitAQCAtNzIsOSArNzIsOSBAQCBUaGUgY29udGVudHMgb2YgYW4gXGY0YXR0cmxpc3RfdFxmUCBzdHJ1CisgLm5mCisgLmZ0IDQKKyAudGEgOW4gMjJuCistX19pbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLworLV9faW50MzJfdCBhbF9tb3JlOyAvXCgqKiBUL0Y6IG1vcmUgYXR0cnMgKGRvIHN5c2NhbGwgYWdhaW4pIFwoKiovCistX19pbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCisraW50MzJfdCBhbF9jb3VudDsgL1woKiogbnVtYmVyIG9mIGVudHJpZXMgaW4gYXR0cmxpc3QgXCgqKi8KKytpbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KKytpbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCisgLmZ0IDEKKyAuZmkKKyAuUkUKK0BAIC0xMTMsNyArMTEzLDcgQEAgaW5jbHVkZSB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CisgLm5mCisgLmZ0IDQKKyAudGEgOW4gMjJuCistdV9pbnQzMl90IGFfdmFsdWVsZW47IC9cKCoqIG51bWJlciBieXRlcyBpbiB2YWx1ZSBvZiBhdHRyIFwoKiovCisrdWludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KKyBjaGFyIGFfbmFtZVtdOyAvXCgqKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgXCgqKi8KKyAuZnQgMQorIC5maQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgppbmRleCA1NTZjOGU0Li5mYzg4YmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgpAQCAtNCw2ICs0LDkgQEAKICMgZnV0dXJlIHJlbGVhc2VzIG9mIGF0dHIsIHJlbW92ZSB0aGlzIHdoZW4gdXBkYXRpbmcgdGhlIHJlY2lwZS4KIFNSQ19VUkkgKz0gImZpbGU6Ly9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NGY1OGRlYzAwYjYwZjJkYzhmZDFjOTcwOTI5MWNjNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCmluZGV4IGM1ODdiM2MuLmU2ZjRjNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwpAQCAtNDcsNiArNDcsMyBAQAogRklMRVNfbGliJHtCUE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotIyBPbmx5IGFwcGVuZCBsZGZsYWdzIGZvciB0YXJnZXQgcmVjaXBlIGFuZCBpZiBVU0VfTkxTIGlzIGVuYWJsZWQKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjX2NsYXNzLXRhcmdldCA9ICIke0BbJycsICcgLWxpbnRsICddWyhkLmdldFZhcignVVNFX05MUycpID09ICd5ZXMnKV19IgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAiJHtAWycnLCAnIC0tZGlzYWJsZS1nZXR0ZXh0ICddWyhkLmdldFZhcignVVNFX05MUycpID09ICdubycpXX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhYjgzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaApAQCAtMCwwICsxLDI0MCBAQAorRnJvbSA2MDQ3Yzg1MjJiOTEyMzVhZDFlODM1ZjQ0ZjVlMzY0NzJkOWQ0OWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YW5kcmVhcy5ncnVlbmJhY2hlckBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIyIEFwciAyMDE1IDExOjQ2OjU5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZW1vdmUgdGhlIGF0dHIuNSBtYW4gcGFnZSAobW92ZWQgdG8gbWFuLXBhZ2VzKQorCitDb21taXQgZGNlOWI0NDQ4YzdmMmIyMmJkMjA2Y2QwNjhmYjA1Y2IyZjMyNTViOSBmcm9tCitodHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdAorCitUaGUgYXR0ci41IHBhZ2UgaXMgcGFydCBvZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHN5c3RlbSBjYWxsIGRvY3VtZW50YXRpb24sCit3aGljaCBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBtYW4tcGFnZXMgcGFja2FnZS4gTW92ZSB0aGUgYXR0ci41IHBhZ2UgdGhlcmUKK2FzIHdlbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworW01BOiB1cGRhdGVkIHRvIGFwcGx5IGRpcmVjdGx5IHRvIHYyLjQuNDddCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWFuL01ha2VmaWxlICAgICAgfCAgIDIgKy0KKyBtYW4vbWFuNS9NYWtlZmlsZSB8ICAzNSAtLS0tLS0tLS0tLS0tCisgbWFuL21hbjUvYXR0ci41ICAgfCAxNTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTg5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9NYWtlZmlsZQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9hdHRyLjUKKworZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZSBiL21hbi9NYWtlZmlsZQoraW5kZXggNzU1ZGFlZC4uOTMwMWYwOSAxMDA2NDQKKy0tLSBhL21hbi9NYWtlZmlsZQorKysrIGIvbWFuL01ha2VmaWxlCitAQCAtMTksNyArMTksNyBAQAorIFRPUERJUiA9IC4uCisgaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKyAKKy1TVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKKytTVUJESVJTID0gbWFuMSBtYW4zCisgCisgZGVmYXVsdCA6ICQoU1VCRElSUykKKyAKK2RpZmYgLS1naXQgYS9tYW4vbWFuNS9NYWtlZmlsZSBiL21hbi9tYW41L01ha2VmaWxlCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDZiNzBkM2QuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW41L01ha2VmaWxlCisrKysgL2Rldi9udWxsCitAQCAtMSwzNSArMCwwIEBACistIworLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAyIFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCistIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CistIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistIworLQorLVRPUERJUiA9IC4uLy4uCistaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKy0KKy1NQU5fU0VDVElPTgk9IDUKKy0KKy1NQU5fUEFHRVMJPSAkKHNoZWxsIGVjaG8gKi4kKE1BTl9TRUNUSU9OKSkKKy1NQU5fREVTVAk9ICQoUEtHX01BTl9ESVIpL21hbiQoTUFOX1NFQ1RJT04pCistTFNSQ0ZJTEVTCT0gJChNQU5fUEFHRVMpCistCistZGVmYXVsdCA6ICQoTUFOX1BBR0VTKQorLQorLWluY2x1ZGUgJChCVUlMRFJVTEVTKQorLQorLWluc3RhbGwgOiBkZWZhdWx0CistCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoTUFOX0RFU1QpCistCSQoSU5TVEFMTF9NQU4pCistaW5zdGFsbC1kZXYgaW5zdGFsbC1saWI6CitkaWZmIC0tZ2l0IGEvbWFuL21hbjUvYXR0ci41IGIvbWFuL21hbjUvYXR0ci41CitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGEwMjc1N2QuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW41L2F0dHIuNQorKysrIC9kZXYvbnVsbAorQEAgLTEsMTUzICswLDAgQEAKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBtYW51YWwgcGFnZQorLS5cIgorLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDIsIDIwMDcgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgorLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQsIDIwMDcgU2lsaWNvbiBHcmFwaGljcywgSW5jLgorLS5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBBVFRSIDUKKy0uU0ggTkFNRQorLWF0dHIgLSBFeHRlbmRlZCBhdHRyaWJ1dGVzCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHBlcm1hbmVudGx5IHdpdGgKKy1maWxlcyBhbmQgZGlyZWN0b3JpZXMsIHNpbWlsYXIgdG8gdGhlIGVudmlyb25tZW50IHN0cmluZ3MgYXNzb2NpYXRlZAorLXdpdGggYSBwcm9jZXNzLgorLUFuIGF0dHJpYnV0ZSBtYXkgYmUgZGVmaW5lZCBvciB1bmRlZmluZWQuCistSWYgaXQgaXMgZGVmaW5lZCwgaXRzIHZhbHVlIG1heSBiZSBlbXB0eSBvciBub24tZW1wdHkuCistLlBQCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlCistYXNzb2NpYXRlZCB3aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1UaGV5IGFyZSBvZnRlbiB1c2VkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5CistdG8gYSBmaWxlc3lzdGVtIFwtIGZvciBleGFtcGxlLCBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMKKy1BY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgbWF5IGJlIGltcGxlbWVudGVkIHVzaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCistLlBQCistVXNlcnMgd2l0aCBzZWFyY2ggYWNjZXNzIHRvIGEgZmlsZSBvciBkaXJlY3RvcnkgbWF5IHJldHJpZXZlIGEgbGlzdCBvZgorLWF0dHJpYnV0ZSBuYW1lcyBkZWZpbmVkIGZvciB0aGF0IGZpbGUgb3IgZGlyZWN0b3J5LgorLS5QUAorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2VkIGFzIGF0b21pYyBvYmplY3RzLgorLVJlYWRpbmcgcmV0cmlldmVzIHRoZSB3aG9sZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgYW5kIHN0b3JlcyBpdCBpbiBhIGJ1ZmZlci4KKy1Xcml0aW5nIHJlcGxhY2VzIGFueSBwcmV2aW91cyB2YWx1ZSB3aXRoIHRoZSBuZXcgdmFsdWUuCistLlBQCistU3BhY2UgY29uc3VtZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaXMgY291bnRlZCB0b3dhcmRzIHRoZSBkaXNrIHF1b3RhcworLW9mIHRoZSBmaWxlIG93bmVyIGFuZCBmaWxlIGdyb3VwLgorLS5QUAorLUN1cnJlbnRseSwgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBpbXBsZW1lbnRlZCBvbiBMaW51eCBieSB0aGUKKy1leHQyLCBleHQzLCBleHQ0LCBYRlMsIEpGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbXMuCistLlNIIEVYVEVOREVEIEFUVFJJQlVURSBOQU1FU1BBQ0VTCistQXR0cmlidXRlIG5hbWVzIGFyZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5ncy4KKy1UaGUgYXR0cmlidXRlIG5hbWUgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgZnVsbHkgcXVhbGlmaWVkCistLklSIG5hbWVzcGFjZS5hdHRyaWJ1dGUKKy1mb3JtLCBlZy4KKy0uSVIgdXNlci5taW1lX3R5cGUgLAorLS5JUiB0cnVzdGVkLm1kNXN1bSAsCistLklSIHN5c3RlbS5wb3NpeF9hY2xfYWNjZXNzICwKKy1vcgorLS5JUiBzZWN1cml0eS5zZWxpbnV4IC4KKy0uUFAKKy1UaGUgbmFtZXNwYWNlIG1lY2hhbmlzbSBpcyB1c2VkIHRvIGRlZmluZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBleHRlbmRlZAorLWF0dHJpYnV0ZXMuCistVGhlc2UgZGlmZmVyZW50IGNsYXNzZXMgZXhpc3QgZm9yIHNldmVyYWwgcmVhc29ucywgZS5nLiB0aGUgcGVybWlzc2lvbnMKKy1hbmQgY2FwYWJpbGl0aWVzIHJlcXVpcmVkIGZvciBtYW5pcHVsYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBvbmUKKy1uYW1lc3BhY2UgbWF5IGRpZmZlciB0byBhbm90aGVyLgorLS5QUAorLUN1cnJlbnRseSB0aGUKKy0uSVIgc2VjdXJpdHkgLAorLS5JUiBzeXN0ZW0gLAorLS5JUiB0cnVzdGVkICwKKy1hbmQKKy0uSVIgdXNlcgorLWV4dGVuZGVkIGF0dHJpYnV0ZSBjbGFzc2VzIGFyZSBkZWZpbmVkIGFzIGRlc2NyaWJlZCBiZWxvdy4gQWRkaXRpb25hbAorLWNsYXNzZXMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCistLlNTIEV4dGVuZGVkIHNlY3VyaXR5IGF0dHJpYnV0ZXMKKy1UaGUgc2VjdXJpdHkgYXR0cmlidXRlIG5hbWVzcGFjZSBpcyB1c2VkIGJ5IGtlcm5lbCBzZWN1cml0eSBtb2R1bGVzLAorLXN1Y2ggYXMgU2VjdXJpdHkgRW5oYW5jZWQgTGludXguICAKKy1SZWFkIGFuZCB3cml0ZSBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gc2VjdXJpdHkgYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlCistcG9saWN5IGltcGxlbWVudGVkIGZvciBlYWNoIHNlY3VyaXR5IGF0dHJpYnV0ZSBieSB0aGUgc2VjdXJpdHkgbW9kdWxlLgorLVdoZW4gbm8gc2VjdXJpdHkgbW9kdWxlIGlzIGxvYWRlZCwgYWxsIHByb2Nlc3NlcyBoYXZlIHJlYWQgYWNjZXNzIHRvCistZXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcywgYW5kIHdyaXRlIGFjY2VzcyBpcyBsaW1pdGVkIHRvIHByb2Nlc3NlcworLXRoYXQgaGF2ZSB0aGUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5LgorLS5TUyBFeHRlbmRlZCBzeXN0ZW0gYXR0cmlidXRlcworLUV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzIGFyZSB1c2VkIGJ5IHRoZSBrZXJuZWwgdG8gc3RvcmUgc3lzdGVtCistb2JqZWN0cyBzdWNoIGFzIEFjY2VzcyBDb250cm9sIExpc3RzIGFuZCBDYXBhYmlsaXRpZXMuICBSZWFkIGFuZCB3cml0ZQorLWFjY2VzcyBwZXJtaXNzaW9ucyB0byBzeXN0ZW0gYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlIHBvbGljeSBpbXBsZW1lbnRlZAorLWZvciBlYWNoIHN5c3RlbSBhdHRyaWJ1dGUgaW1wbGVtZW50ZWQgYnkgZmlsZXN5c3RlbXMgaW4gdGhlIGtlcm5lbC4KKy0uU1MgVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzCistVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSB2aXNpYmxlIGFuZCBhY2Nlc3NpYmxlIG9ubHkgdG8gcHJvY2Vzc2VzIHRoYXQKKy1oYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkgKHRoZSBzdXBlciB1c2VyIHVzdWFsbHkgaGFzIHRoaXMKKy1jYXBhYmlsaXR5KS4KKy1BdHRyaWJ1dGVzIGluIHRoaXMgY2xhc3MgYXJlIHVzZWQgdG8gaW1wbGVtZW50IG1lY2hhbmlzbXMgaW4gdXNlcgorLXNwYWNlIChpLmUuLCBvdXRzaWRlIHRoZSBrZXJuZWwpIHdoaWNoIGtlZXAgaW5mb3JtYXRpb24gaW4gZXh0ZW5kZWQgYXR0cmlidXRlcworLXRvIHdoaWNoIG9yZGluYXJ5IHByb2Nlc3NlcyBzaG91bGQgbm90IGhhdmUgYWNjZXNzLgorLS5TUyBFeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMKKy1FeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgbWF5IGJlIGFzc2lnbmVkIHRvIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmb3IKKy1zdG9yaW5nIGFyYml0cmFyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIG1pbWUgdHlwZSwKKy1jaGFyYWN0ZXIgc2V0IG9yIGVuY29kaW5nIG9mIGEgZmlsZS4gVGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgdXNlcgorLWF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgYnkgdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzLgorLS5QUAorLVRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUKKy1pbnRlcnByZXRlZCBkaWZmZXJlbnRseSBmcm9tIHRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiBzcGVjaWFsIGZpbGVzCistYW5kIHN5bWJvbGljIGxpbmtzLiBGb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhlIGZpbGUKKy1wZXJtaXNzaW9uIGJpdHMgZGVmaW5lIGFjY2VzcyB0byB0aGUgZmlsZSdzIGNvbnRlbnRzLCB3aGlsZSBmb3IgZGV2aWNlIHNwZWNpYWwKKy1maWxlcyB0aGV5IGRlZmluZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBkZXNjcmliZWQgYnkgdGhlIHNwZWNpYWwgZmlsZS4KKy1UaGUgZmlsZSBwZXJtaXNzaW9ucyBvZiBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHVzZWQgaW4gYWNjZXNzCistY2hlY2tzLiBUaGVzZSBkaWZmZXJlbmNlcyB3b3VsZCBhbGxvdyB1c2VycyB0byBjb25zdW1lIGZpbGVzeXN0ZW0gcmVzb3VyY2VzIGluCistYSB3YXkgbm90IGNvbnRyb2xsYWJsZSBieSBkaXNrIHF1b3RhcyBmb3IgZ3JvdXAgb3Igd29ybGQgd3JpdGFibGUgc3BlY2lhbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCistLlBQCistRm9yIHRoaXMgcmVhc29uLCBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGFuZCBhY2Nlc3MgdG8gZXh0ZW5kZWQgdXNlciBhdHRyaWJ1dGVzIGlzIHJlc3RyaWN0ZWQgdG8gdGhlCistb3duZXIgYW5kIHRvIHVzZXJzIHdpdGggYXBwcm9wcmlhdGUgY2FwYWJpbGl0aWVzIGZvciBkaXJlY3RvcmllcyB3aXRoIHRoZQorLXN0aWNreSBiaXQgc2V0IChzZWUgdGhlCistLkJSIGNobW9kICgxKQorLW1hbnVhbCBwYWdlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBTdGlja3kgRGlyZWN0b3JpZXMpLgorLS5TSCBGSUxFU1lTVEVNIERJRkZFUkVOQ0VTCistVGhlIGtlcm5lbCBhbmQgdGhlIGZpbGVzeXN0ZW0gbWF5IHBsYWNlIGxpbWl0cyBvbiB0aGUgbWF4aW11bSBudW1iZXIKKy1hbmQgc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUuCistU29tZSBmaWxlIHN5c3RlbXMsIHN1Y2ggYXMgZXh0Mi8zIGFuZCByZWlzZXJmcywgcmVxdWlyZSB0aGUgZmlsZXN5c3RlbQorLXRvIGJlIG1vdW50ZWQgd2l0aCB0aGUKKy0uQiB1c2VyX3hhdHRyCistbW91bnQgb3B0aW9uIGluIG9yZGVyIGZvciBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZC4KKy0uUFAKKy1JbiB0aGUgY3VycmVudCBleHQyLCBleHQzIGFuZCBleHQ0IGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLCBlYWNoCistZXh0ZW5kZWQgYXR0cmlidXRlIG11c3QgZml0IG9uIGEgc2luZ2xlIGZpbGVzeXN0ZW0gYmxvY2sgKDEwMjQsIDIwNDgKKy1vciA0MDk2IGJ5dGVzLCBkZXBlbmRpbmcgb24gdGhlIGJsb2NrIHNpemUgc3BlY2lmaWVkIHdoZW4gdGhlCistZmlsZXN5c3RlbSB3YXMgY3JlYXRlZCkuCistLlBQCistSW4gdGhlIFhGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIHRoZXJlIGlzIG5vCistcHJhY3RpY2FsIGxpbWl0IG9uIHRoZSBudW1iZXIgb3Igc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzCistYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSwgYW5kIHRoZSBhbGdvcml0aG1zIHVzZWQgdG8gc3RvcmUgZXh0ZW5kZWQKKy1hdHRyaWJ1dGUgaW5mb3JtYXRpb24gb24gZGlzayBhcmUgc2NhbGFibGUuCistLlBQCistSW4gdGhlIEpGUyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLCBuYW1lcyBjYW4gYmUgdXAgdG8gMjU1IGJ5dGVzIGFuZAorLXZhbHVlcyB1cCB0byA2NSw1MzUgYnl0ZXMuCistLlNIIEFERElUSU9OQUwgTk9URVMKKy1TaW5jZSB0aGUgZmlsZXN5c3RlbXMgb24gd2hpY2ggZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgc3RvcmVkIG1pZ2h0IGFsc28KKy1iZSB1c2VkIG9uIGFyY2hpdGVjdHVyZXMgd2l0aCBhIGRpZmZlcmVudCBieXRlIG9yZGVyIGFuZCBtYWNoaW5lIHdvcmQKKy1zaXplLCBjYXJlIHNob3VsZCBiZSB0YWtlbiB0byBzdG9yZSBhdHRyaWJ1dGUgdmFsdWVzIGluIGFuIGFyY2hpdGVjdHVyZQorLWluZGVwZW5kZW50IGZvcm1hdC4KKy0uU0ggQVVUSE9SUworLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCistLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+CistYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCistLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCistLlNIIFNFRSBBTFNPCistZ2V0ZmF0dHIoMSksCistc2V0ZmF0dHIoMSkuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDRjNWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoCkBAIC0wLDAgKzEsNjY2IEBACitGcm9tIGI5NzI2MDBhMjZmM2E5MzBlNTNlMmZjZTI2MjUyNjZhNWQyOTgxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMjM6NTM6MTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSB0aGUgc2VjdGlvbiAyIG1hbiBwYWdlcworCitDb21taXQgOGQxMjYzYmNhOTU3MjJkNjZhNmY4ZTgzNDUwZjQ5ZDA5NTZlYTUzNCBmcm9tIHVwc3RyZWFtCitodHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdC8KKworVGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMgaGF2ZSBsb25nIHNpbmNlIGJlZW4gYWRkZWQgdG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlCit3aGljaCBkb2N1bWVudHMgYWxsIHN5c3RlbSBjYWxsczsgdGhleSB3ZXJlIGRpc2FibGVkIGluIGF0dHIgYnkgZGVmYXVsdCBzaW5jZQorSmFudWFyeSAyMDE0LiAgR2V0IHJpZCBvZiB0aGVtIGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworW01BOiBtb2RpZmllZCB0byBhcHBseSBkaXJlY3RseSB0byB2Mi40LjQ3XQorU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1hbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KKyBtYW4vbWFuMi9NYWtlZmlsZSAgICAgIHwgIDM1IC0tLS0tLS0tLS0tCisgbWFuL21hbjIvZ2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL2xpc3R4YXR0ci4yICAgfCAxNTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL3NldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1OTEgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL01ha2VmaWxlCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2dldHhhdHRyLjIKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvbGlzdHhhdHRyLjIKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvcmVtb3ZleGF0dHIuMgorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9zZXR4YXR0ci4yCisKK2RpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUgYi9tYW4vTWFrZWZpbGUKK2luZGV4IDk1MzU0MjYuLjc1NWRhZWQgMTAwNjQ0CistLS0gYS9tYW4vTWFrZWZpbGUKKysrKyBiL21hbi9NYWtlZmlsZQorQEAgLTE5LDcgKzE5LDcgQEAKKyBUT1BESVIgPSAuLgorIGluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCisgCistU1VCRElSUyA9IG1hbjEgbWFuMiBtYW4zIG1hbjUKKytTVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKKyAKKyBkZWZhdWx0IDogJChTVUJESVJTKQorIAorZGlmZiAtLWdpdCBhL21hbi9tYW4yL01ha2VmaWxlIGIvbWFuL21hbjIvTWFrZWZpbGUKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZDc3MzA5ZC4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjIvTWFrZWZpbGUKKysrKyAvZGV2L251bGwKK0BAIC0xLDM1ICswLDAgQEAKKy0jCistIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLSMgQ29weXJpZ2h0IChDKSAyMDA5ICBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5Ac3VzZS5kZT4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLSMKKy0KKy1UT1BESVIgPSAuLi8uLgorLWluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCistCistTUFOX1NFQ1RJT04JPSAyCistCistTUFOX1BBR0VTCT0gJChzaGVsbCBlY2hvICouJChNQU5fU0VDVElPTikpCistTUFOX0RFU1QJPSAkKFBLR19NQU5fRElSKS9tYW4kKE1BTl9TRUNUSU9OKQorLUxTUkNGSUxFUwk9ICQoTUFOX1BBR0VTKQorLQorLWRlZmF1bHQgaW5zdGFsbCA6ICQoTUFOX1BBR0VTKQorLQorLWluY2x1ZGUgJChCVUlMRFJVTEVTKQorLQorLWluc3RhbGwtZGV2IDogZGVmYXVsdAorLQkkKElOU1RBTEwpIC1tIDc1NSAtZCAkKE1BTl9ERVNUKQorLQkkKElOU1RBTExfTUFOKQorLWluc3RhbGwtbGliOgorZGlmZiAtLWdpdCBhL21hbi9tYW4yL2dldHhhdHRyLjIgYi9tYW4vbWFuMi9nZXR4YXR0ci4yCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDQwNWFkODkuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW4yL2dldHhhdHRyLjIKKysrKyAvZGV2L251bGwKK0BAIC0xLDE0MyArMCwwIEBACistLlwiCistLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcworLS5cIgorLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQorLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCistLlwiCistLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKy0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKy0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKy0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistLlwiCistLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgorLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKKy0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZworLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgorLS5cIgorLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistLlwiCistLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQorLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistLlwiCistLlRIIEdFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKKy0uU0ggTkFNRQorLWdldHhhdHRyLCBsZ2V0eGF0dHIsIGZnZXR4YXR0ciBcLSByZXRyaWV2ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKKy0uU0ggU1lOT1BTSVMKKy0uZmFtIEMKKy0ubmYKKy0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKy0uc3AKKy0uQkkgInNzaXplX3QgZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBsZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBmZ2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5maQorLS5mYW0gVAorLS5TSCBERVNDUklQVElPTgorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCistLklSIG5hbWUgOlxjCistLkkgdmFsdWUKKy1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiBnZXR4YXR0cgorLXJldHJpZXZlcyB0aGUKKy0uSSB2YWx1ZQorLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQorLS5JIG5hbWUKKy1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgorLS5JIHBhdGgKKy1pbiB0aGUgZmlsZXN5c3RlbS4KKy1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUKKy0uSSB2YWx1ZQorLWlzIHJldHVybmVkLgorLS5QUAorLS5CIGxnZXR4YXR0cgorLWlzIGlkZW50aWNhbCB0byAKKy0uQlIgZ2V0eGF0dHIgLAorLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaW5rIGl0c2VsZiBpcworLWludGVycm9nYXRlZCwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgorLS5QUAorLS5CIGZnZXR4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBnZXR4YXR0ciAsCistb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKKy0uSSBmaWxlZGVzCistKGFzIHJldHVybmVkIGJ5CistLkJSIG9wZW4gKDIpKQorLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BbiBleHRlbmRlZCBhdHRyaWJ1dGUKKy0uSSBuYW1lCistaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KKy1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy1UaGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKKy1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgorLS5QUAorLUFuIGVtcHR5IGJ1ZmZlciBvZgorLS5JIHNpemUKKy16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKKy1uYW1lZCBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIGEKKy1idWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aAorLXRoZSBleHRlbmRlZCBhdHRyaWJ1dGUuCistLlBQCistVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBhbGxvdyBndWVzc2luZyBvZiBpbml0aWFsIGJ1ZmZlcgorLXNpemVzLCBhbmQgdG8gZW5sYXJnZSBidWZmZXJzIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKKy10aGF0IHRoZSBidWZmZXIgcHJvdmlkZWQgd2FzIHRvbyBzbWFsbC4KKy0uU0ggUkVUVVJOIFZBTFVFCistT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKKy1leHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHByb2Nlc3MgaGFzIG5vIGFjY2VzcyB0bworLXRoaXMgYXR0cmlidXRlLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT0FUVFIuCistLlBQCistSWYgdGhlCistLkkgc2l6ZQorLW9mIHRoZQorLS5JIHZhbHVlCistYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRVJBTkdFLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBzZXR4YXR0ciAoMiksCistLkJSIGxpc3R4YXR0ciAoMiksCistLkJSIHJlbW92ZXhhdHRyICgyKSwKKy1hbmQKKy0uQlIgYXR0ciAoNSkuCitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvbGlzdHhhdHRyLjIgYi9tYW4vbWFuMi9saXN0eGF0dHIuMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCA4YjQzNzFjLi4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9saXN0eGF0dHIuMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMTU4ICswLDAgQEAKKy0uXCIKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCistLlwiCistLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCistLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKKy0uXCIKKy0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0uXCIKKy0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCistLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQorLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCistLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCistLlwiCistLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0uXCIKKy0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCistLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCistLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0uXCIKKy0uVEggTElTVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKKy0uU0ggTkFNRQorLWxpc3R4YXR0ciwgbGxpc3R4YXR0ciwgZmxpc3R4YXR0ciBcLSBsaXN0IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcworLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAic3NpemVfdCBsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKKy0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBsbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCistLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKKy0uQkkgInNzaXplX3QgZmxpc3R4YXR0ciAoaW50ICIgZmlsZWRlcyAiLAorLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZQorLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCistVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKKy13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCistLkJSIGF0dHIgKDUpLgorLS5QUAorLS5CIGxpc3R4YXR0cgorLXJldHJpZXZlcyB0aGUKKy0uSSBsaXN0Cistb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KKy0uSSBwYXRoCistaW4gdGhlIGZpbGVzeXN0ZW0uCistVGhlIGxpc3QgaXMgdGhlIHNldCBvZiAoTlVMTC10ZXJtaW5hdGVkKSBuYW1lcywgb25lIGFmdGVyIHRoZSBvdGhlci4KKy1OYW1lcyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHdoaWNoIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QKKy1oYXZlIGFjY2VzcyBtYXkgYmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0LgorLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZSBuYW1lCistLkkgbGlzdAorLWlzIHJldHVybmVkLgorLS5QUAorLS5CIGxsaXN0eGF0dHIKKy1pcyBpZGVudGljYWwgdG8KKy0uQlIgbGlzdHhhdHRyICwKKy1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGlzdCBvZiBuYW1lcyBvZgorLWV4dGVuZGVkIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rIGl0c2VsZiBpcyByZXRyaWV2ZWQsCistbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgorLS5JIGxpc3QKKy1pcyBhIGNhbGxlci1hbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUKKy0uSVIgc2l6ZSAuCistLlBQCistLkIgZmxpc3R4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBsaXN0eGF0dHIgLAorLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5CistLkkgZmlsZWRlcworLShhcyByZXR1cm5lZCBieQorLS5CUiBvcGVuICgyKSkKKy1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKKy0uSVIgcGF0aCAuCistLlBQCistQSBzaW5nbGUgZXh0ZW5kZWQgYXR0cmlidXRlCistLkkgbmFtZQorLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCistVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAorLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCistLlBQCistQW4gZW1wdHkgYnVmZmVyIG9mCistLkkgc2l6ZQorLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQorLWxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUKKy1zaXplIG9mIGEgYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSBsaXN0IG9mIG5hbWVzLgorLS5TSCBFWEFNUExFUworLVRoZQorLS5JIGxpc3QKKy1vZiBuYW1lcyBpcyByZXR1cm5lZCBhcyBhbiB1bm9yZGVyZWQgYXJyYXkgb2YgTlVMTC10ZXJtaW5hdGVkIGNoYXJhY3RlcgorLXN0cmluZ3MgKGF0dHJpYnV0ZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGJ5IE5VTEwgY2hhcmFjdGVycyksIGxpa2UgdGhpczoKKy0uZmFtIEMKKy0uUlMKKy0ubmYKKy11c2VyLm5hbWUxXFwwc3lzdGVtLm5hbWUxXFwwdXNlci5uYW1lMlxcMAorLS5maQorLS5SRQorLS5mYW0gVAorLS5QCistRmlsZXN5c3RlbXMgbGlrZSBleHQyLCBleHQzIGFuZCBYRlMgd2hpY2ggaW1wbGVtZW50IFBPU0lYIEFDTHMgdXNpbmcKKy1leHRlbmRlZCBhdHRyaWJ1dGVzLCBtaWdodCByZXR1cm4gYQorLS5JIGxpc3QKKy1saWtlIHRoaXM6CistLmZhbSBDCistLlJTCistLm5mCistc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3NcXDBzeXN0ZW0ucG9zaXhfYWNsX2RlZmF1bHRcXDAKKy0uZmkKKy0uUkUKKy0uZmFtIFQKKy0uU0ggUkVUVVJOIFZBTFVFCistT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKKy1leHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBsaXN0LgorLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKKy0uSSBlcnJubworLWlzIHNldCBhcHByb3ByaWF0ZWx5LgorLS5QUAorLUlmIHRoZQorLS5JIHNpemUKKy1vZiB0aGUKKy0uSSBsaXN0CistYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRVJBTkdFLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBnZXR4YXR0ciAoMiksCistLkJSIHNldHhhdHRyICgyKSwKKy0uQlIgcmVtb3ZleGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KK2RpZmYgLS1naXQgYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yIGIvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAyYzdkOTM0Li4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCisrKysgL2Rldi9udWxsCitAQCAtMSwxMTEgKzAsMCBAQAorLS5cIgorLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKKy0uXCIKKy0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKKy0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBSRU1PVkVYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCistLlNIIE5BTUUKKy1yZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIgXC0gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZQorLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAiaW50IHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKKy0uQkkgImludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOworLS5CSSAiaW50IGZyZW1vdmV4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKKy0uSVIgbmFtZSA6XGMKKy12YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiByZW1vdmV4YXR0cgorLXJlbW92ZXMgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5CistLkkgbmFtZQorLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCistLkkgcGF0aAorLWluIHRoZSBmaWxlc3lzdGVtLgorLS5QUAorLS5CIGxyZW1vdmV4YXR0cgorLWlzIGlkZW50aWNhbCB0byAKKy0uQlIgcmVtb3ZleGF0dHIgLAorLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKKy1yZW1vdmVkIGZyb20gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCistLlBQCistLkIgZnJlbW92ZXhhdHRyCistaXMgaWRlbnRpY2FsIHRvCistLkJSIHJlbW92ZXhhdHRyICwKKy1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQorLS5JIGZpbGVkZXMKKy0oYXMgcmV0dXJuZWQgYnkKKy0uQlIgb3BlbiAoMikpCistaW4gcGxhY2Ugb2YKKy0uSVIgcGF0aCAuCistLlBQCistQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KKy1UaGUKKy0uSSBuYW1lCistaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAorLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCistLlNIIFJFVFVSTiBWQUxVRQorLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9BVFRSLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBzZXR4YXR0ciAoMiksCistLkJSIGdldHhhdHRyICgyKSwKKy0uQlIgbGlzdHhhdHRyICgyKSwKKy1hbmQKKy0uQlIgYXR0ciAoNSkuCitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvc2V0eGF0dHIuMiBiL21hbi9tYW4yL3NldHhhdHRyLjIKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYjIwZGM5Zi4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjIvc2V0eGF0dHIuMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMTQzICswLDAgQEAKKy0uXCIKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCistLlwiCistLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCistLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKKy0uXCIKKy0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0uXCIKKy0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCistLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQorLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCistLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCistLlwiCistLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0uXCIKKy0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCistLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCistLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0uXCIKKy0uVEggU0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgorLS5TSCBOQU1FCistc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyIFwtIHNldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKKy0uU0ggU1lOT1BTSVMKKy0uZmFtIEMKKy0ubmYKKy0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKy0uc3AKKy0uQkkgImludCBzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5CSSAiaW50IGxzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5CSSAiaW50IGZzZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5maQorLS5mYW0gVAorLS5TSCBERVNDUklQVElPTgorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCistLklSIG5hbWUgOlxjCistLkkgdmFsdWUKKy1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiBzZXR4YXR0cgorLXNldHMgdGhlCistLkkgdmFsdWUKKy1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKKy0uSSBuYW1lCistYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KKy0uSSBwYXRoCistaW4gdGhlIGZpbGVzeXN0ZW0uCistVGhlCistLkkgc2l6ZQorLW9mIHRoZQorLS5JIHZhbHVlCistbXVzdCBiZSBzcGVjaWZpZWQuCistLlBQCistLkIgbHNldHhhdHRyCistaXMgaWRlbnRpY2FsIHRvIAorLS5CUiBzZXR4YXR0ciAsCistZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcworLXNldCBvbiB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KKy0uUFAKKy0uQiBmc2V0eGF0dHIKKy1pcyBpZGVudGljYWwgdG8KKy0uQlIgc2V0eGF0dHIgLAorLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5CistLkkgZmlsZWRlcworLShhcyByZXR1cm5lZCBieQorLS5CUiBvcGVuICgyKSkKKy1pbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgorLVRoZQorLS5JIG5hbWUKKy1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy1UaGUKKy0uSSB2YWx1ZQorLW9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCistYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KKy0uUFAKKy1UaGUKKy0uSSBmbGFncworLXBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZWZpbmUgdGhlIHNlbWFudGljcyBvZiB0aGUgb3BlcmF0aW9uLgorLVhBVFRSX0NSRUFURSBzcGVjaWZpZXMgYSBwdXJlIGNyZWF0ZSwgd2hpY2ggZmFpbHMgaWYgdGhlIG5hbWVkCistYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LgorLVhBVFRSX1JFUExBQ0Ugc3BlY2lmaWVzIGEgcHVyZSByZXBsYWNlIG9wZXJhdGlvbiwgd2hpY2ggZmFpbHMgaWYgdGhlCistbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCistQnkgZGVmYXVsdCAobm8gZmxhZ3MpLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZgorLW5lZWQgYmUsIG9yIHdpbGwgc2ltcGx5IHJlcGxhY2UgdGhlIHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLgorLS5TSCBSRVRVUk4gVkFMVUUKKy1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgorLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKKy0uSSBlcnJubworLWlzIHNldCBhcHByb3ByaWF0ZWx5LgorLS5QUAorLUlmIFhBVFRSX0NSRUFURSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVFWElTVC4KKy1JZiBYQVRUUl9SRVBMQUNFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRU5PQVRUUi4KKy0uUFAKKy1JZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgcmVtYWluaW5nIHRvIHN0b3JlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gZWl0aGVyIEVOT1NQQywgb3IgRURRVU9UIGlmIHF1b3RhIGVuZm9yY2VtZW50IHdhcyB0aGUgY2F1c2UuCistLlBQCistSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT1RTVVAuCistLlBQCistVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKKy0uQlIgc3RhdCAoMikKKy1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCistLlNIIEFVVEhPUlMKKy1BbmRyZWFzIEdydWVuYmFjaGVyLAorLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgorLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAorLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgorLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCistLlNIIFNFRSBBTFNPCistLkJSIGdldGZhdHRyICgxKSwKKy0uQlIgc2V0ZmF0dHIgKDEpLAorLS5CUiBvcGVuICgyKSwKKy0uQlIgc3RhdCAoMiksCistLkJSIGdldHhhdHRyICgyKSwKKy0uQlIgbGlzdHhhdHRyICgyKSwKKy0uQlIgcmVtb3ZleGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDIyODU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKLUhPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTUzMDAwMTBiZDQwMzRkZTEyYzNmYzRmMTcxNjkyZTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjBiOTU0MGM2NTUzMjgyNWVjYTAzMGYxMjQxNzMxMzgzZjg5YjJiNjVlODBmMzQ5MmM1ZGQyZjA0MzhjOTVjZiIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgY29tcGF0ZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KLQllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgotCi0JIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4Ci0JbG9jYWwgaQotCWZvciBpIGluIG1vdW50IHVtb3VudDsgZG8KLQkJcm0gJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyRpCi0JZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTE5YjNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjgxMTc0OTJiZGM5NDA4NDM4ZTYwNDE2ODNhNDIzY2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFiYTg5MmQzZjQyN2Q0YTY4NmRlMzI2NzNmMzU0MDFiYzk0N2E3ODAxZjY4NDEyNzEyMGNkYjEzNjQxNDQxZSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgY29tcGF0ZGlyCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KKwllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgorCisJIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4CisJbG9jYWwgaQorCWZvciBpIGluIG1vdW50IHVtb3VudCByZmtpbGw7IGRvCisJCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQorCWRvbmUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKK1BBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTBmNWZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyB0byBnZW5lcmF0ZSBibG9jayBtYXAgKEFLQSBibWFwKSBhbmQgZmxhc2ggaW1hZ2VzIHVzaW5nIGJtYXAiCi1ERVNDUklQVElPTiA9ICJCbWFwLXRvb2xzIC0gdG9vbHMgdG8gZ2VuZXJhdGUgYmxvY2sgbWFwIChBS0EgYm1hcCkgYW5kIGZsYXNoIGltYWdlcyB1c2luZyBcCi1ibWFwLiBCbWFwdG9vbCBpcyBhIGdlbmVyaWMgdG9vbCBmb3IgY3JlYXRpbmcgdGhlIGJsb2NrIG1hcCAoYm1hcCkgZm9yIGEgZmlsZSwgXAotYW5kIGNvcHlpbmcgZmlsZXMgdXNpbmcgdGhlIGJsb2NrIG1hcC4gVGhlIGlkZWEgaXMgdGhhdCBsYXJnZSBmaWxlIGNvbnRhaW5pbmcgXAotdW51c2VkIGJsb2NrcywgbGlrZSByYXcgc3lzdGVtIGltYWdlIGZpbGVzLCBjYW4gYmUgY29waWVkIG9yIGZsYXNoZWQgYSBsb3QgXAotZmFzdGVyIHdpdGggYm1hcHRvb2wgdGhhbiB3aXRoIHRyYWRpdGlvbmFsIHRvb2xzIGxpa2UgImRkIiBvciAiY3AiLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kZWRla2luZC9ibWFwLXRvb2xzLmdpdCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW5mcmFkZWFkLm9yZy9wdWIvJHtCUE59LyR7QlBOfS0ke1BWfS50Z3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTJjZGFkMWNiNGRmYTBjY2E3MTc2YzhlMjI3NTI2MTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2M2YzdmN2RjMGEzN2UyYTMyZGViMTI3MzA4ZTI0ZTZjNGI4MGJmYjU0ZjM4MDNjMzA4ZWZhYjAyYmYyZDQzNCIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNvcmUgcHl0aG9uLWNvbXByZXNzaW9uIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBzZWQgLWkgLWUgJ3N8XiMhLiovdXNyL2Jpbi9lbnYgcHl0aG9ufCMhIC91c3IvYmluL2VudiBuYXRpdmVweXRob258JyAke0R9JHtiaW5kaXJ9L2JtYXB0b29sCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYjZlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlRvb2xzIHRvIGdlbmVyYXRlIGJsb2NrIG1hcCAoQUtBIGJtYXApIGFuZCBmbGFzaCBpbWFnZXMgdXNpbmcgYm1hcCIKK0RFU0NSSVBUSU9OID0gIkJtYXAtdG9vbHMgLSB0b29scyB0byBnZW5lcmF0ZSBibG9jayBtYXAgKEFLQSBibWFwKSBhbmQgZmxhc2ggaW1hZ2VzIHVzaW5nIFwKK2JtYXAuIEJtYXB0b29sIGlzIGEgZ2VuZXJpYyB0b29sIGZvciBjcmVhdGluZyB0aGUgYmxvY2sgbWFwIChibWFwKSBmb3IgYSBmaWxlLCBcCithbmQgY29weWluZyBmaWxlcyB1c2luZyB0aGUgYmxvY2sgbWFwLiBUaGUgaWRlYSBpcyB0aGF0IGxhcmdlIGZpbGUgY29udGFpbmluZyBcCit1bnVzZWQgYmxvY2tzLCBsaWtlIHJhdyBzeXN0ZW0gaW1hZ2UgZmlsZXMsIGNhbiBiZSBjb3BpZWQgb3IgZmxhc2hlZCBhIGxvdCBcCitmYXN0ZXIgd2l0aCBibWFwdG9vbCB0aGFuIHdpdGggdHJhZGl0aW9uYWwgdG9vbHMgbGlrZSAiZGQiIG9yICJjcCIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2JtYXAtdG9vbHMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC9ibWFwLXRvb2xzLmdpdCIKK1NSQ1JFViA9ICI5ZGFkNzI0MTA0ZGYyNjU0NDIyMjY5NzJhMWUzMTA4MTNmOWZmY2JhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLW1tYXAgcHl0aG9uMy1zZXR1cHRvb2xzIgorCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKK2luaGVyaXQgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42My4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjMuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42My4wLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0MGE4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42My4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWM4MzdlY2Q5OTBiYjAyMmQwN2U3YWFiMzJiMDk4NDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmVhZTI1MjlmNzU5ZjZiM2JmM2Y0OTY5YTE5YzJlOWQ2ZjBjNTAzZWRjYjJkZTRhNjFkMTQyODUxOWZjYjNiMCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVBSID0gInIxIgotCi1TID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3YjFhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQorIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAorIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCisjIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKKyMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKK0xJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitCT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgorQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgorQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjkzZWVjY2UyYWJlZDlkMjQ0MmM5Njc2OTE0NzA5MzQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiY2M1Y2FhY2U5N2JhYTk0ODkzMWQ3MTJlYTVmMzcwMzhkYmIxYzVkODliNDNhZDRkZWY0ZWQ3Y2I2ODMzMzIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgorCitTID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IDRmZjcwZTMuLjQxZmM5MGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtMzgsNyArMzgsNyBAQAogQk9PU1RfTElCU19yZW1vdmVfbWlwczE2ZSA9ICJ3YXZlIgogCiAjIG9wdGlvbmFsIGxpYnJhcmllcwotUEFDS0FHRUNPTkZJRyA/Pz0gImxvY2FsZSIKK1BBQ0tBR0VDT05GSUcgPz89ICJsb2NhbGUgcHl0aG9uIgogUEFDS0FHRUNPTkZJR1tsb2NhbGVdID0gIiwsaWN1IgogUEFDS0FHRUNPTkZJR1tncmFwaF9wYXJhbGxlbF0gPSAiLCwsYm9vc3QtbXBpIG1waWNoIgogUEFDS0FHRUNPTkZJR1ttcGldID0gIiwsbXBpY2giCkBAIC0xNjksNyArMTY5LDcgQEAKIEJKQU1fT1BUU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gJyAtc05PX0JaSVAyPTEnCiAKICMgQWRqdXN0IHRoZSBidWlsZCBmb3IgeDMyCi1CSkFNX09QVFNfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYWJpPXgzMiBhZGRyZXNzLW1vZGVsPTY0IgorQkpBTV9PUFRTX2FwcGVuZF94ODYteDMyID0gIiBhYmk9eDMyIGFkZHJlc3MtbW9kZWw9NjQiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKIAljcCAtZiAke1N9L2Jvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAgJHtTfS9ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXgtZ251ZWFiaS5ocHAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1XaGVuLXVzaW5nLXNvZnQtZmxvYXQtb24tQVJNLXdlLXNob3VsZC1ub3QtZXhwZWN0LXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWZkNWNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDlhYjA5MTQyMDdlNmQwZTZiNzVjZTEyMTQ3YzU0Yjk2NDc4ZmViNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjEgRmViIDIwMTcgMTI6NTA6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gV2hlbiB1c2luZyBzb2Z0LWZsb2F0LCBvbiBBUk0gd2Ugc2hvdWxkIG5vdCBleHBlY3QgdGhlIEZFXyoKLSBzeW1ib2xzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcCBiL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCi1pbmRleCBmNTMzNDhhLi44NjI1MmQ3IDEwMDY0NAotLS0tIGEvYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKLSsrKyBiL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCi1AQCAtNDk4LDcgKzQ5OCw3IEBAIGVudW0gbWFza3MgewotIAotICAgICBCT09TVF9GUEVfQUxMICAgICAgID0gTUNXX0VNLAotIAotLSNlbGlmIGRlZmluZWQoQk9PU1RfTk9fRkVOVl9IKSB8fCBkZWZpbmVkKEJPT1NUX0NMQU5HKSAvKiAqKiogKi8KLSsjZWxpZiBkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkgfHwgZGVmaW5lZChCT09TVF9DTEFORykgfHwgZGVmaW5lZChfX0FSTV9QQ1MpIC8qICoqKiAqLwotICAgICBCT09TVF9GUEVfQUxMICAgICAgID0gQk9PU1RfRlBFX09GRiwKLSAKLSAjZWxzZSAvKiAqKiogKi8KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWNvcnJlY3QtZXJyb3Itd2hpY2gtYXBwZWFyZWQtd2hlbi1jb21waWxpbmctbm9uLWMtY28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjAwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMDJmYTVjZWUxYjhkMDMyMTc4NzExM2UyZGMxMGIxNjJjNjU3ZjMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBSYW1leSA8cmFtZXlAcnJzZC5jb20+CitEYXRlOiBXZWQsIDEgRmViIDIwMTcgMTY6NDM6NTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ycmVjdCBlcnJvciB3aGljaCBhcHBlYXJlZCB3aGVuIGNvbXBpbGluZyBub24gYysrIGNvbXBsaWFudAorIGNvZGUgZm9yIGFycmF5cworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtleHBlY3RlZCB0byBiZSByZWxlYXNlZCBpbiB2MS42NV0KKworLS0tCisgYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAgYi9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAoraW5kZXggNjE3MDhiMy4uNjEyZDFhNiAxMDA2NDQKKy0tLSBhL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCisrKysgYi9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAorQEAgLTIzLDYgKzIzLDggQEAgbmFtZXNwYWNlIHN0ZHsKKyB9IC8vIG5hbWVzcGFjZSBzdGQKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8Ym9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheV93cmFwcGVyLmhwcD4KKysKKyAjaWZuZGVmIEJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQorIAorICNpbmNsdWRlIDxhcnJheT4KKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDA0LVVzZS1hdG9taWMtYnktZGVmYXVsdC13aGVuLUJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNzgyNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gYzIzNGNjNTU3ZjYwNzI5ZTA3MWQ2ZGE1OTc0N2MxYTkyODk1NTVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIERpbW92IDxwZGltb3ZAcGRpbW92LmNvbT4KLURhdGU6IFN1biwgMjggQXVnIDIwMTYgMjE6Mjg6MjEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIFVzZSA8YXRvbWljPiBieSBkZWZhdWx0IHdoZW4gQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQyBpcwotIG5vdCBkZWZpbmVkCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2Jvb3N0b3JnL3NtYXJ0X3B0ci9jb21taXQvMjBmZWRjZmYyY2EzMTQzNTAzZWM0ZTg3NmQ0Nzc0NWFiMGVjN2IwY10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KLSBib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgICAgfCAzICsrKwotIGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCB8IDMgKysrCi0gYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAgICAgICAgIHwgMyArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCi1pbmRleCA4YWVmZDQ0Li42ZTRmNzFhIDEwMDY0NAotLS0tIGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCi0rKysgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAKLUBAIC03Myw2ICs3Myw5IEBACi0gI2VsaWYgZGVmaW5lZCggQk9PU1RfRElTQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIEJPT1NUX1NQX0VOQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIEJPT1NUX0RJU0FCTEVfV0lOMzIgKQotICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfbnQuaHBwPgotIAotKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKLSsjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N0ZF9hdG9taWMuaHBwPgotKwotICNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX2kzODZfXyApIHx8IGRlZmluZWQoIF9feDg2XzY0X18gKSApICYmICFkZWZpbmVkKCBfX1BBVEhTQ0FMRV9fICkKLSAjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwPgotIAotZGlmZiAtLWdpdCBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotaW5kZXggMDk5NWNhOC4uODNlZGUyMyAxMDA2NDQKLS0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotKysrIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCi1AQCAtNDQsNiArNDQsOSBAQAotICNlbGlmIGRlZmluZWQoIEJPT1NUX1NQX0hBU19DTEFOR19DMTFfQVRPTUlDUyApCi0gIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jbGFuZy5ocHA+Ci0gCi0rI2VsaWYgIWRlZmluZWQoIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgKQotKyMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3RkX2F0b21pYy5ocHA+Ci0rCi0gI2VsaWYgZGVmaW5lZCggX19TTkNfXyApCi0gIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcD4KLSAKLWRpZmYgLS1naXQgYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCi1pbmRleCAxOWY5M2Q3Li4wYjYxOGRmIDEwMDY0NAotLS0tIGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAKLSsrKyBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCi1AQCAtNDMsNiArNDMsOSBAQAotICNlbGlmIGRlZmluZWQoIEJPT1NUX1NQX1VTRV9QVEhSRUFEUyApCi0gIyAgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHA+Ci0gCi0rI2VsaWYgIWRlZmluZWQoIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgKQotKyMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3RkX2F0b21pYy5ocHA+Ci0rCi0gI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZCggX19hcm1fXyApICYmICFkZWZpbmVkKCBfX3RodW1iX18gKQotICMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHA+Ci0gCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9weTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvcHkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjFmZjE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9weTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotQmFja3BvcnQgZml4ZXMgZnJvbSB1cHN0cmVhbSAoYXMgb2YgYm9vc3Qgc3VwZXItbW9kdWxlIGNvbW1pdCAwZDUyYjkpIHRvIGltcHJvdmUKLXRoZSBidWlsZGluZyBvZiB0aGUgQm9vc3QgUHl0aG9uIG1vZHVsZSB3aXRoIFB5dGhvbiAzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvYnVpbGQvSmFtZmlsZSBiL2J1aWxkL0phbWZpbGUKLWluZGV4IDMxM2ZkYWIuLmYxNGRjMTEgMTAwNjQ0Ci0tLS0gYS9saWJzL3B5dGhvbi9idWlsZC9KYW1maWxlCi0rKysgYi9saWJzL3B5dGhvbi9idWlsZC9KYW1maWxlCi1AQCAtNiw2ICs2LDcgQEAgaW1wb3J0IG9zIDsKLSBpbXBvcnQgaW5kaXJlY3QgOwotIGltcG9ydCBtb2R1bGVzIDsKLSBpbXBvcnQgZmVhdHVyZSA7Ci0raW1wb3J0IHByb3BlcnR5IDsKLSAKLSBpbXBvcnQgcHl0aG9uIDsKLSAKLUBAIC0zMCwyMSArMzEsOCBAQCBlbHNlCi0gICAgICAgICA7Ci0gfQotIAotLXJ1bGUgZmluZC1weTMtdmVyc2lvbgotLXsKLS0gICAgbG9jYWwgdmVyc2lvbnMgPSBbIGZlYXR1cmUudmFsdWVzIHB5dGhvbiBdIDsKLS0gICAgbG9jYWwgcHkzdmVyIDsKLS0gICAgZm9yIGxvY2FsIHYgaW4gJCh2ZXJzaW9ucykKLS0gICAgewotLSAgICAgICAgaWYgJCh2KSA+PSAzLjAKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBweTN2ZXIgPSAkKHYpIDsKLS0gICAgICAgIH0KLS0gICAgfQotLSAgICByZXR1cm4gJChweTN2ZXIpIDsKLS19Ci0tCi0tcHkzLXZlcnNpb24gPSBbIGZpbmQtcHkzLXZlcnNpb24gXSA7Ci0rcHkyLXZlcnNpb24gPSBbIHB5LXZlcnNpb24gMiBdIDsKLStweTMtdmVyc2lvbiA9IFsgcHktdmVyc2lvbiAzIF0gOwotIAotIHByb2plY3QgYm9vc3QvcHl0aG9uCi0gICA6IHNvdXJjZS1sb2NhdGlvbiAuLi9zcmMKLUBAIC01MiwxMSArNDAsMTcgQEAgcHJvamVjdCBib29zdC9weXRob24KLSAKLSBydWxlIGNvbmQgKCB0ZXN0ID8gOiB5ZXMgKiA6IG5vICogKSB7IGlmICQodGVzdCkgeyByZXR1cm4gJCh5ZXMpIDsgfSBlbHNlIHsgcmV0dXJuICQobm8pIDsgfSB9Ci0gcnVsZSB1bmxlc3MgKCB0ZXN0ID8gOiB5ZXMgKiA6IG5vICogKSB7IGlmICEgJCh0ZXN0KSB7IHJldHVybiAkKHllcykgOyB9IGVsc2UgeyByZXR1cm4gJChubykgOyB9IH0KLStsb2NhbCBydWxlIGVxICggYSA6IGIgKSB7IGlmICQoYSkgPSAkKGIpIHsgcmV0dXJuIDEgOyB9IH0KLSAKLS1ydWxlIGxpYl9ib29zdF9weXRob24gKCBpcy1weTMgPyApCi0tewotK2xpYl9ib29zdF9weXRob24oMikgPSBib29zdF9weXRob24gOwotK2xpYl9ib29zdF9weXRob24oMykgPSBib29zdF9weXRob24zIDsKLSAKLS0gICAgbGliIFsgY29uZCAkKGlzLXB5MykgOiBib29zdF9weXRob24zIDogYm9vc3RfcHl0aG9uIF0KLStsaWJfYm9vc3RfcHl0aG9uKCQocHkyLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigyKSkgOwotK2xpYl9ib29zdF9weXRob24oJChweTMtdmVyc2lvbikpID0gJChsaWJfYm9vc3RfcHl0aG9uKDMpKSA7Ci0rCi0rcnVsZSBsaWJfYm9vc3RfcHl0aG9uICggdmVyc2lvbiApCi0rewotKyAgICBsaWIgJChsaWJfYm9vc3RfcHl0aG9uKCQodmVyc2lvbikpKQotICAgICAgICAgOiAjIHNvdXJjZXMKLSAgICAgICAgIG51bWVyaWMuY3BwCi0gICAgICAgICBsaXN0LmNwcAotQEAgLTExMiwxMSArMTA2LDEzIEBAIHJ1bGUgbGliX2Jvb3N0X3B5dGhvbiAoIGlzLXB5MyA/ICkKLSAgICAgICAgICAgICA8ZGVwZW5kZW5jeT5jb25maWctd2FybmluZwotIAotICAgICAgICAgICAgIDxweXRob24tZGVidWdnaW5nPm9uOjxkZWZpbmU+Qk9PU1RfREVCVUdfUFlUSE9OCi0tICAgICAgICAgICAgWyBjb25kICQoaXMtcHkzKSA6IDxweXRob24+JChweTMtdmVyc2lvbikgXQotKyAgICAgICAgICAgIDxweXRob24+JCh2ZXJzaW9uKQotIAotICAgICAgICAgICAgIC08dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS50YWcKLSAgICAgICAgICAgICA8dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS5weXRob24tdGFnCi0gCi0rICAgICAgICAgICAgPGNvbmRpdGlvbmFsPkBweXRob24ucmVxdWlyZS1weQotKwotICAgICAgICAgOiAgICMgZGVmYXVsdCBidWlsZAotICAgICAgICAgICAgIDxsaW5rPnNoYXJlZAotICAgICAgICAgOiAgICMgdXNhZ2UgcmVxdWlyZW1lbnRzCi1AQCAtMTI1LDUxICsxMjEsNjggQEAgcnVsZSBsaWJfYm9vc3RfcHl0aG9uICggaXMtcHkzID8gKQotICAgICAgICAgOwotIH0KLSAKLS1ydWxlIGxpYl9ib29zdF9udW1weSAoIGlzLXB5MyA/ICkKLStsaWJfYm9vc3RfbnVtcHkoMikgPSBib29zdF9udW1weSA7Ci0rbGliX2Jvb3N0X251bXB5KDMpID0gYm9vc3RfbnVtcHkzIDsKLSsKLStsaWJfYm9vc3RfbnVtcHkoJChweTItdmVyc2lvbikpID0gJChsaWJfYm9vc3RfcHl0aG9uKDIpKSA7Ci0rbGliX2Jvb3N0X251bXB5KCQocHkzLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigzKSkgOwotKwotK3J1bGUgbGliX2Jvb3N0X251bXB5ICggdmVyc2lvbiApCi0gewotICAgICBudW1weS1pbmNsdWRlID0gWyBweXRob24ubnVtcHktaW5jbHVkZSBdIDsKLS0gICAgbGliIFsgY29uZCAkKGlzLXB5MykgOiBib29zdF9udW1weTMgOiBib29zdF9udW1weSBdCi0rICAgIGxpYiAkKGxpYl9ib29zdF9udW1weSgkKHZlcnNpb24pKSkKLSAgICAgICAgIDogIyBzb3VyY2VzCi0gICAgICAgICBudW1weS9kdHlwZS5jcHAKLSAgICAgICAgIG51bXB5L21hdHJpeC5jcHAKLSAgICAgICAgIG51bXB5L25kYXJyYXkuY3BwCi0tCW51bXB5L251bXB5LmNwcAotLQludW1weS9zY2FsYXJzLmNwcAotLQludW1weS91ZnVuYy5jcHAKLSsgICAgICAgIG51bXB5L251bXB5LmNwcAotKyAgICAgICAgbnVtcHkvc2NhbGFycy5jcHAKLSsgICAgICAgIG51bXB5L3VmdW5jLmNwcAotICAgICAgICAgOiAgICMgcmVxdWlyZW1lbnRzCi0rICAgICAgICAgICAgPGxpbms+c3RhdGljOjxkZWZpbmU+Qk9PU1RfTlVNUFlfU1RBVElDX0xJQiAKLSsgICAgICAgICAgICA8ZGVmaW5lPkJPT1NUX05VTVBZX1NPVVJDRQotICAgICAgICAgICAgIFsgY29uZCBbIHB5dGhvbi5udW1weSBdIDogPGxpYnJhcnk+L3B5dGhvbi8vcHl0aG9uX2Zvcl9leHRlbnNpb25zIF0KLSAgICAgICAgICAgICBbIHVubGVzcyBbIHB5dGhvbi5udW1weSBdIDogPGJ1aWxkPm5vIF0KLS0JICAgIDxpbmNsdWRlPiQobnVtcHktaW5jbHVkZSkKLS0JICAgIDxsaWJyYXJ5PmJvb3N0X3B5dGhvbgotKyAgICAgICAgICAgIDxpbmNsdWRlPiQobnVtcHktaW5jbHVkZSkKLSsgICAgICAgICAgICA8bGlicmFyeT4kKGxpYl9ib29zdF9weXRob24oJCh2ZXJzaW9uKSkpCi0gICAgICAgICAgICAgPHB5dGhvbi1kZWJ1Z2dpbmc+b246PGRlZmluZT5CT09TVF9ERUJVR19QWVRIT04KLS0gICAgICAgICAgICBbIGNvbmQgJChpcy1weTMpIDogPHB5dGhvbj4kKHB5My12ZXJzaW9uKSBdCi0rICAgICAgICAgICAgPHB5dGhvbj4kKHZlcnNpb24pCi0gCi0gICAgICAgICAgICAgLTx0YWc+QCQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpJSQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpLnRhZwotICAgICAgICAgICAgIDx0YWc+QCQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpJSQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpLnB5dGhvbi10YWcKLSAKLSsgICAgICAgICAgICA8Y29uZGl0aW9uYWw+QHB5dGhvbi5yZXF1aXJlLXB5Ci0rCi0gICAgICAgICA6ICAgIyBkZWZhdWx0IGJ1aWxkCi0gICAgICAgICAgICAgPGxpbms+c2hhcmVkCi0gICAgICAgICA6ICAgIyB1c2FnZSByZXF1aXJlbWVudHMKLSsJCQk8bGluaz5zdGF0aWM6PGRlZmluZT5CT09TVF9OVU1QWV9TVEFUSUNfTElCCi0gICAgICAgICAgICAgPHB5dGhvbi1kZWJ1Z2dpbmc+b246PGRlZmluZT5CT09TVF9ERUJVR19QWVRIT04KLSAgICAgICAgIDsKLSB9Ci0gCi0tbGlicmFyaWVzID0gYm9vc3RfcHl0aG9uIDsKLS1saWJyYXJpZXMzID0gYm9vc3RfcHl0aG9uMyA7Ci0taWYgWyBweXRob24ubnVtcHkgXQotLXsKLS0gICAgbGlicmFyaWVzICs9IGJvb3N0X251bXB5IDsKLS0gICAgbGlicmFyaWVzMyArPSBib29zdF9udW1weTMgOwotLX0KLS0KLS1saWJfYm9vc3RfcHl0aG9uIDsKLS1saWJfYm9vc3RfbnVtcHkgOwotK2xpYnJhcmllcyA9IDsKLSAKLS1pZiAkKHB5My12ZXJzaW9uKQotK2ZvciBsb2NhbCBOIGluIDIgMwotIHsKLS0gICAgbGliX2Jvb3N0X3B5dGhvbiB5ZXMgOwotLSAgICBsaWJfYm9vc3RfbnVtcHkgeWVzIDsKLS0gICAgbGlicmFyaWVzICs9ICQobGlicmFyaWVzMykgOwotKyAgICBpZiAkKHB5JChOKS12ZXJzaW9uKQotKyAgICB7Ci0rICAgICAgICBsaWJfYm9vc3RfcHl0aG9uICQocHkkKE4pLXZlcnNpb24pIDsKLSsgICAgICAgIGxpYnJhcmllcyArPSAkKGxpYl9ib29zdF9weXRob24oJChweSQoTiktdmVyc2lvbikpKSA7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICBhbGlhcyAkKGxpYl9ib29zdF9weXRob24oJChOKSkpIDsKLSsgICAgfQotKyAgICBpZiAkKHB5JChOKS12ZXJzaW9uKSAmJiBbIHB5dGhvbi5udW1weSBdCi0rICAgIHsKLSsgICAgICAgIGxpYl9ib29zdF9udW1weSAkKHB5JChOKS12ZXJzaW9uKSA7Ci0rICAgICAgICBsaWJyYXJpZXMgKz0gJChsaWJfYm9vc3RfbnVtcHkoJChweSQoTiktdmVyc2lvbikpKSA7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICBhbGlhcyAkKGxpYl9ib29zdF9udW1weSgkKE4pKSkgOwotKyAgICB9Ci0gfQotIAotIGJvb3N0LWluc3RhbGwgJChsaWJyYXJpZXMpIDsKLWRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcHl0aG9uLmphbSBiL3NyYy90b29scy9weXRob24uamFtCi1pbmRleCBjYzEzMzg1Li5iZjMwMGI4IDEwMDY0NAotLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL3B5dGhvbi5qYW0KLSsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9weXRob24uamFtCi1AQCAtMzQsNiArMzQsNyBAQCBpbXBvcnQgcGF0aCA7Ci0gaW1wb3J0IGZlYXR1cmUgOwotIGltcG9ydCBzZXQgOwotIGltcG9ydCBidWlsdGluIDsKLStpbXBvcnQgcHJvcGVydHktc2V0IDsKLSAKLSAKLSAjIE1ha2UgdGhpcyBtb2R1bGUgYSBwcm9qZWN0LgotQEAgLTYwLDYgKzYxLDEwIEBAIGxpYiBydCA7Ci0gIyBpbnN0YWxsZWQgaW4gdGhlIGRldmVsb3BtZW50IHN5c3RlbSdzIGRlZmF1bHQgcGF0aHMuCi0gZmVhdHVyZS5mZWF0dXJlIHB5dGhvbnBhdGggOiA6IGZyZWUgb3B0aW9uYWwgcGF0aCA7Ci0gCi0rIyBUaGUgYmVzdCBjb25maWd1cmVkIHZlcnNpb24gb2YgUHl0aG9uIDIgYW5kIDMuCi0rcHkyLXZlcnNpb24gPSA7Ci0rcHkzLXZlcnNpb24gPSA7Ci0rCi0gIyBJbml0aWFsaXplcyB0aGUgUHl0aG9uIHRvb2xzZXQuIE5vdGUgdGhhdCBhbGwgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwuCi0gIwotICMgLSB2ZXJzaW9uIC0tIHRoZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB1c2UuIFNob3VsZCBiZSBpbiBNYWpvci5NaW5vciBmb3JtYXQsCi1AQCAtODYxLDYgKzg2NiwxMSBAQCBsb2NhbCBydWxlIGNvbmZpZ3VyZSAoIHZlcnNpb24gPyA6IGNtZC1vci1wcmVmaXggPyA6IGluY2x1ZGVzICogOiBsaWJyYXJpZXMgPyA6Ci0gICAgICAgICBpZiAhICQodmVyc2lvbikgaW4gWyBmZWF0dXJlLnZhbHVlcyBweXRob24gXQotICAgICAgICAgewotICAgICAgICAgICAgIGZlYXR1cmUuZXh0ZW5kIHB5dGhvbiA6ICQodmVyc2lvbikgOwotKyAgICAgICAgICAgIHB5JChtYWpvci1taW5vclsxXSktdmVyc2lvbiA/PSAkKHZlcnNpb24pIDsKLSsgICAgICAgICAgICBpZiAkKHB5JChtYWpvci1taW5vclsxXSktdmVyc2lvbikgPCAkKHZlcnNpb24pCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICBweSQobWFqb3ItbWlub3JbMV0pLXZlcnNpb24gPSAkKHZlcnNpb24pIDsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICB0YXJnZXQtcmVxdWlyZW1lbnRzICs9IDxweXRob24+JCh2ZXJzaW9uOkU9ZGVmYXVsdCkgOwotICAgICB9Ci1AQCAtOTE2LDYgKzkyNiw5IEBAIGxvY2FsIHJ1bGUgY29uZmlndXJlICggdmVyc2lvbiA/IDogY21kLW9yLXByZWZpeCA/IDogaW5jbHVkZXMgKiA6IGxpYnJhcmllcyA/IDoKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICAjIEluIGNhc2Ugd2UgYWRkZWQgZHVwbGljYXRlIHJlcXVpcmVtZW50cyBmcm9tIHdoYXQgdGhlIHVzZXIgc3BlY2lmaWVkLgotKyAgICB0YXJnZXQtcmVxdWlyZW1lbnRzID0gWyBzZXF1ZW5jZS51bmlxdWUgJCh0YXJnZXQtcmVxdWlyZW1lbnRzKSBdIDsKLSsKLSAgICAgIyBHbG9iYWwsIGJ1dCBjb25kaXRpb25hbCwgcmVxdWlyZW1lbnRzIHRvIGdpdmUgYWNjZXNzIHRvIHRoZSBpbnRlcnByZXRlcgotICAgICAjIGZvciBnZW5lcmFsIHV0aWxpdGllcywgbGlrZSBvdGhlciB0b29sc2V0cywgdGhhdCBydW4gUHl0aG9uIHNjcmlwdHMuCi0gICAgIHRvb2xzZXQuYWRkLXJlcXVpcmVtZW50cwotQEAgLTkzNCwxOSArOTQ3LDYgQEAgbG9jYWwgcnVsZSBjb25maWd1cmUgKCB2ZXJzaW9uID8gOiBjbWQtb3ItcHJlZml4ID8gOiBpbmNsdWRlcyAqIDogbGlicmFyaWVzID8gOgotICAgICAgICAgdG9vbHNldC5hZGQtcmVxdWlyZW1lbnRzIDx0YXJnZXQtb3M+JCh0YXJnZXQtb3MpOjxweXRob24+JCh2ZXJzaW9uOkU9ZGVmYXVsdCkgOwotICAgICB9Ci0gCi0tICAgICMgV2UgYWxzbyBzZXQgYSBkZWZhdWx0IHJlcXVpcmVtZW50IHRoYXQgYXNzaWducyB0aGUgZmlyc3QgcHl0aG9uIGNvbmZpZ3VyZWQKLS0gICAgIyBmb3IgYSBwYXJ0aWN1bGFyIHRhcmdldCBPUyBhcyB0aGUgZGVmYXVsdC4gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IHdlIGNhbgotLSAgICAjIHNlbGVjdCBhIHB5dGhvbiBpbnRlcnByZXRlciB3aXRoIG9ubHkga25vd2xlZGdlIG9mIHRoZSB0YXJnZXQgT1MuIEFuZCBoZW5jZQotLSAgICAjIGNhbiBjb25maWd1cmUgZGlmZmVyZW50IFB5dGhvbnMgYmFzZWQgb24gdGhlIHRhcmdldCBPUyBvbmx5LgotLSAgICBsb2NhbCB0b29sc2V0LXJlcXVpcmVtZW50cyA9IFsgdG9vbHNldC5yZXF1aXJlbWVudHMgXSA7Ci0tICAgIGxvY2FsIHRvb2xzZXQtdGFyZ2V0LW9zLXJlcXVpcmVtZW50cwotLSAgICAgICAgPSBbIHByb3BlcnR5LmV2YWx1YXRlLWNvbmRpdGlvbmFscy1pbi1jb250ZXh0Ci0tICAgICAgICAgICAgWyAkKHRvb2xzZXQtcmVxdWlyZW1lbnRzKS5yYXcgXSA6IDx0YXJnZXQtb3M+JCh0YXJnZXQtb3MpIF0gOwotLSAgICBpZiAhIDxweXRob24+IGluICQodG9vbHNldC10YXJnZXQtb3MtcmVxdWlyZW1lbnRzOkcpCi0tICAgIHsKLS0gICAgICAgIHRvb2xzZXQuYWRkLXJlcXVpcmVtZW50cyA8dGFyZ2V0LW9zPiQodGFyZ2V0LW9zKTo8cHl0aG9uPiQodmVyc2lvbjpFPWRlZmF1bHQpIDsKLS0gICAgfQotLQotICAgICAjIFJlZ2lzdGVyIHRoZSByaWdodCBzdWZmaXggZm9yIGV4dGVuc2lvbnMuCi0gICAgIHJlZ2lzdGVyLWV4dGVuc2lvbi1zdWZmaXggJChleHRlbnNpb24tc3VmZml4KSA6ICQodGFyZ2V0LXJlcXVpcmVtZW50cykgOwotIAotQEAgLTEwMzgsNiArMTAzOCwyMiBAQCBsb2NhbCBydWxlIGNvbmZpZ3VyZSAoIHZlcnNpb24gPyA6IGNtZC1vci1wcmVmaXggPyA6IGluY2x1ZGVzICogOiBsaWJyYXJpZXMgPyA6Ci0gICAgICAgICAgICAgOiAkKHVzYWdlLXJlcXVpcmVtZW50cykKLSAgICAgICAgICAgICA7Ci0gICAgIH0KLSsgICAgCi0rfQotKwotKyMgQ29uZGl0aW9uYWwgcnVsZSBzcGVjaWZpY2F0aW9uIHRoYXQgd2lsbCBwcmV2ZW50IGJ1aWxkaW5nIG9mIGEgdGFyZ2V0Ci0rIyBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBweXRob24gY29uZmlndXJhdGlvbiBhdmFpbGFibGUgd2l0aCB0aGUgZ2l2ZW4KLSsjIHJlcXVpcmVkIHByb3BlcnRpZXMuCi0rcnVsZSByZXF1aXJlLXB5ICggcHJvcGVydGllcyAqICkKLSt7Ci0rICAgIGxvY2FsIHB5LWV4dC10YXJnZXQgPSBbICQoLnByb2plY3QpLmZpbmQgcHl0aG9uX2Zvcl9leHRlbnNpb25zIF0gOwotKyAgICBsb2NhbCBwcm9wZXJ0eS1zZXQgPSBbIHByb3BlcnR5LXNldC5jcmVhdGUgJChwcm9wZXJ0aWVzKSBdIDsKLSsgICAgcHJvcGVydHktc2V0ID0gWyAkKHByb3BlcnR5LXNldCkuZXhwYW5kIF0gOwotKyAgICBsb2NhbCBweS1leHQtYWx0ZXJuYXRpdmUgPSBbICQocHktZXh0LXRhcmdldCkuc2VsZWN0LWFsdGVybmF0aXZlcyAkKHByb3BlcnR5LXNldCkgXSA7Ci0rICAgIGlmICEgJChweS1leHQtYWx0ZXJuYXRpdmUpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiA8YnVpbGQ+bm8gOwotKyAgICB9Ci0gfQotIAotIAotQEAgLTEyOTgsNSArMTMxNCwxMSBAQCBydWxlIG51bXB5LXRlc3QgKCBuYW1lIDogc291cmNlcyAqIDogcmVxdWlyZW1lbnRzICogKQotICAgICAgICAgOiAkKG5hbWUpIF0gOwotIH0KLSAKLStydWxlIHB5LXZlcnNpb24gKCBuICkKLSt7Ci0rICAgIHJldHVybiAkKHB5JChuKS12ZXJzaW9uKSA7Ci0rfQotKwotIElNUE9SVCAkKF9fbmFtZV9fKSA6IGJwbC10ZXN0IDogOiBicGwtdGVzdCA7Ci0gSU1QT1JUICQoX19uYW1lX18pIDogbnVtcHktdGVzdCA6IDogbnVtcHktdGVzdCA7Ci0rSU1QT1JUICQoX19uYW1lX18pIDogcHktdmVyc2lvbiA6IDogcHktdmVyc2lvbiA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42My4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwNzY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42My4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKLXJlcXVpcmUgYm9vc3QuaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1Vc2UtYXRvbWljLWJ5LWRlZmF1bHQtd2hlbi1CT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDLnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBcCi0gICAgZmlsZTovL3B5My5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42NC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWMyMGUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworcmVxdWlyZSBib29zdC5pbmMKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9hcm0taW50cmluc2ljcy5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggXAorICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUFwcGx5LWJvb3N0LTEuNjIuMC1uby1mb3JjZWQtZmxhZ3MucGF0Y2gucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTYxMTMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjExMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODJhY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjExMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCi1TU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAotVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCi1TRUNUSU9OID0gIm1pc2MiCi1MSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWU3MzU4Yjk1NDFjY2YzMDI5ZTk3MDVlZDhkZTU3OTY4IgotCi0jIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCi1ERVBFTkRTID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCi0jIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscwotUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCi0KLVNSQ1JFViA9ICI2MWI3MGExMDA3ZGMyNjlkNTY4ODFhMGQ0ODBmYzg0MWRhYWNjNzdjIgotCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdDRVJUU0RJUj0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcycgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgY2xlYW4KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzIFwKLSAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy91cGRhdGUuZAotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDA2NDQgc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjggJHtEfSR7bWFuZGlyfS9tYW44LwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgIHsKLSAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICMgd2lsbCBiZSBpZ25vcmVkIgotICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggISB3aWxsIHJlbW92ZSBjZXJ0aWZpY2F0ZSBvbiBuZXh0IHVwZGF0ZSIKLSAgICAgICAgZWNobyAiIyIKLSAgICAgICAgZmluZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgLXR5cGUgZiAtbmFtZSAnKi5jcnQnIHwgXAotICAgICAgICAgICAgc2VkICdzLF4ke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvLCwnCi0gICAgfSA+JHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzLmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sJyBcCi0gICAgICAgICAgIC1lICdzLC91c3Ivc2hhcmUvLCR7ZGF0YWRpcn0vLCcgXAotICAgICAgICAgICAtZSAncywvdXNyL2xvY2FsLCR7cHJlZml4fS9sb2NhbCwnIFwKLSAgICAgICAgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyBcCi0gICAgICAgICR7RH0ke21hbmRpcn0vbWFuOC91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjgKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBTWVNST09UPSIkRCIgJEQke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKLX0KLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mIgotCi0jIFBvc3RpbnN0cyBkb24ndCBzZWVtIHRvIGJlIHJ1biBmb3IgbmF0aXZlc2RrIHBhY2thZ2VzIHdoZW4gcG9wdWxhdGluZyBTREtzLgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQiCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotICAgIFNZU1JPT1Q9IiR7RH0ke1NES1BBVEhOQVRJVkV9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgU1lTUk9PVD0iJHtEfSR7YmFzZV9wcmVmaXh9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTlmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCitTU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAorVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCitTRUNUSU9OID0gIm1pc2MiCitMSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWU3MzU4Yjk1NDFjY2YzMDI5ZTk3MDVlZDhkZTU3OTY4IgorCisjIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCitERVBFTkRTID0gIiIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCisjIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscworUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCisKK1NSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgorCitTUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIvZXRjIgorCitpbmhlcml0IGFsbGFyY2gKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAnQ0VSVFNESVI9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMnIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlIGNsZWFuCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIFwKKyAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNjQ0IHNiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44ICR7RH0ke21hbmRpcn0vbWFuOC8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICB7CisgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAjIHdpbGwgYmUgaWdub3JlZCIKKyAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICEgd2lsbCByZW1vdmUgY2VydGlmaWNhdGUgb24gbmV4dCB1cGRhdGUiCisgICAgICAgIGVjaG8gIiMiCisgICAgICAgIGZpbmQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIC10eXBlIGYgLW5hbWUgJyouY3J0JyB8IFwKKyAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJworICAgIH0gPiR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgc2VkIC1pIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLCcgXAorICAgICAgICAgICAtZSAncywvdXNyL3NoYXJlLywke2RhdGFkaXJ9LywnIFwKKyAgICAgICAgICAgLWUgJ3MsL3Vzci9sb2NhbCwke3ByZWZpeH0vbG9jYWwsJyBcCisgICAgICAgICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgXAorICAgICAgICAke0R9JHttYW5kaXJ9L21hbjgvdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44Cit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgU1lTUk9PVD0iJEQiICREJHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCit9CisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZiIKKworIyBQb3N0aW5zdHMgZG9uJ3Qgc2VlbSB0byBiZSBydW4gZm9yIG5hdGl2ZXNkayBwYWNrYWdlcyB3aGVuIHBvcHVsYXRpbmcgU0RLcy4KK0NPTkZGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICBTWVNST09UPSIke0R9JHtTREtQQVRITkFUSVZFfSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIFNZU1JPT1Q9IiR7RH0ke2Jhc2VfcHJlZml4fSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZmYxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBjOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNzowNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBmaWxlOiBvdXRwdXQgdGhlIGNvcnJlY3QgYnVmZmVyIHRvIHRoZSB1c2VyCisKK1JlZ3Jlc3Npb24gYnJvdWdodCBieSA3YzMxMmY4NGVhOTMwZDggKEFwcmlsIDIwMTcpCisKK0NWRTogQ1ZFLTIwMTctMTAwMDA5OQorCitCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qy5odG1sCisKK0NyZWRpdCB0byBPU1MtRnV6eiBmb3IgdGhlIGRpc2NvdmVyeQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC9jOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2ZpbGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCitpbmRleCBiZDQyNmVhYzIuLjY2NmNiZTc1YiAxMDA2NDQKKy0tLSBhL2xpYi9maWxlLmMKKysrKyBiL2xpYi9maWxlLmMKK0BAIC00OTksMTEgKzQ5OSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgZmlsZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCisgICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCisgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCisgICAgICAgICAgICAgIHRtLT50bV9taW4sCisgICAgICAgICAgICAgIHRtLT50bV9zZWMpOworLSAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOworKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBoZWFkZXIsIDApOworICAgICBpZighcmVzdWx0KQorICAgICAgIC8qIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QgdHJhbnNmZXIgKi8KKyAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7CisgICAgIHJldHVybiByZXN1bHQ7CisgICB9CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKaW5kZXggNTA4ZGY4Yy4uZjc0ZjFkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIC4uLiBhbmQgdGhlcmVieSBhdm9pZCB0ZWxsaW5nIHNlbmQoKSB0byBzZW5kIG9mZiBtb3JlIGJ5dGVzIHRoYW4gdGhlCiBzaXplIG9mIHRoZSBidWZmZXIhCiAKLUNWRS0yMDE3LTEwMDAxMDAKK0NWRTogQ1ZFLTIwMTctMTAwMDEwMAogCiBCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qi5odG1sCiBSZXBvcnRlZC1ieTogRXZlbiBSb3VhdWx0CkBAIC0xNiwxNyArMTYsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTgKIAotQ1ZFOiBDVkUtMjAxNy0xMDAwMTAwCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQorU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CiAtLS0KLSBsaWIvdGZ0cC5jIHwgNyArKysrKystCisgbGliL3RmdHAuYyB8ICAgIDcgKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGN1cmwtNy41My4xL2xpYi90ZnRwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXJsLTcuNTMuMS5vcmlnL2xpYi90ZnRwLmMKLSsrKyBjdXJsLTcuNTMuMS9saWIvdGZ0cC5jCitkaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKK2luZGV4IDAyYmQ4NDIuLmY2ZjRiY2UgMTAwNjQ0CistLS0gYS9saWIvdGZ0cC5jCisrKysgYi9saWIvdGZ0cC5jCiBAQCAtNSw3ICs1LDcgQEAKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffApAQCAtMzYsNyArMzQsNyBAQAogICAqCiAgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1AQCAtNDkwLDYgKzQ5MCwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhCitAQCAtNDkxLDYgKzQ5MSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgdGZ0cF9ldmVudF90IGV2ZW50KQogICAgICBpZihyZXN1bHQpCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAKQEAgLTQ4LDMgKzQ2LDYgQEAKICAgICAgc25wcmludGYoKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhKzIsCiAgICAgICAgICAgICAgIHN0YXRlLT5ibGtzaXplLAogICAgICAgICAgICAgICAiJXMlYyVzJWMiLCBmaWxlbmFtZSwgJ1wwJywgIG1vZGUsICdcMCcpOworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaAppbmRleCA5ZWVmNWUyLi5jMzAwZmZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCkBAIC02LDE1ICs2LDE3IEBACiAKIEFkZGVkIHRlc3QgMTI4OSB0byB2ZXJpZnkuCiAKLUNWRS0yMDE3LTEwMDAxMDEKK0NWRTogQ1ZFLTIwMTctMTAwMDEwMQogCiBCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5QS5odG1sCiBSZXBvcnRlZC1ieTogQnJpYW4gQ2FycGVudGVyCiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTAwMDEwMQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CitodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC80NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3CiAKK1JlYmFzZSB0aGUgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgY2hhbmdlcyBmb3IgY3VybCA3LjU0LjEuCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL3Rvb2xfdXJsZ2xvYi5jICAgICAgfCAgNSArKysrLQogIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKy0KQEAgLTIyLDExICsyNCwxMSBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZGF0YS90ZXN0MTI4OQogCi1JbmRleDogY3VybC03LjUzLjEvc3JjL3Rvb2xfdXJsZ2xvYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3VybC03LjUzLjEub3JpZy9zcmMvdG9vbF91cmxnbG9iLmMKLSsrKyBjdXJsLTcuNTMuMS9zcmMvdG9vbF91cmxnbG9iLmMKLUBAIC0yNjksNyArMjY5LDEwIEBAIHN0YXRpYyBDVVJMY29kZSBnbG9iX3JhbmdlKFVSTEdsb2IgKmdsb2IKK2RpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKK2luZGV4IDZiMWVjZTAuLmQ1NmRjZDkgMTAwNjQ0CistLS0gYS9zcmMvdG9vbF91cmxnbG9iLmMKKysrKyBiL3NyYy90b29sX3VybGdsb2IuYworQEAgLTI3Myw3ICsyNzMsMTAgQEAgc3RhdGljIENVUkxjb2RlIGdsb2JfcmFuZ2UoVVJMR2xvYiAqZ2xvYiwgY2hhciAqKnBhdHRlcm5wLAogICAgICAgICAgfQogICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgbWF4X24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7CkBAIC0zOCwyMiArNDAsMjQgQEAKICAgICAgICAgICAgcGF0dGVybiA9IGVuZHArMTsKICAgICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgICBzdGVwX24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci1JbmRleDogY3VybC03LjUzLjEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXJsLTcuNTMuMS5vcmlnL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgY3VybC03LjUzLjEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLUBAIC0xMzEsNiArMTMxLDcgQEAgdGVzdDEyNDQgdGVzdDEyNDUgdGVzdDEyNDYgdGVzdDEyNDcgdGVzdAotIHRlc3QxMjUyIHRlc3QxMjUzIHRlc3QxMjU0IHRlc3QxMjU1IHRlc3QxMjU2IHRlc3QxMjU3IHRlc3QxMjU4IHRlc3QxMjU5IFwKK2RpZmYgLS1naXQgYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCitpbmRleCAxNTUzMjBhLi43YWRiZWU2IDEwMDY0NAorLS0tIGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKKysrKyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCitAQCAtMTMyLDcgKzEzMiw3IEBAIHRlc3QxMjUyIHRlc3QxMjUzIHRlc3QxMjU0IHRlc3QxMjU1IHRlc3QxMjU2IHRlc3QxMjU3IHRlc3QxMjU4IHRlc3QxMjU5IFwKKyB0ZXN0MTI2MCB0ZXN0MTI2MSB0ZXN0MTI2MiBcCiAgXAotIHRlc3QxMjgwIHRlc3QxMjgxIHRlc3QxMjgyIHRlc3QxMjgzIHRlc3QxMjg0IHRlc3QxMjg1IHRlc3QxMjg2IFwKLSt0ZXN0MTI4OSBcCisgdGVzdDEyODAgdGVzdDEyODEgdGVzdDEyODIgdGVzdDEyODMgdGVzdDEyODQgdGVzdDEyODUgdGVzdDEyODYgdGVzdDEyODcgXAorLXRlc3QxMjg4IFwKKyt0ZXN0MTI4OCB0ZXN0MTI4OSBcCiAgXAogIHRlc3QxMzAwIHRlc3QxMzAxIHRlc3QxMzAyIHRlc3QxMzAzIHRlc3QxMzA0IHRlc3QxMzA1IHRlc3QxMzA2IHRlc3QxMzA3IFwKICB0ZXN0MTMwOCB0ZXN0MTMwOSB0ZXN0MTMxMCB0ZXN0MTMxMSB0ZXN0MTMxMiB0ZXN0MTMxMyB0ZXN0MTMxNCB0ZXN0MTMxNSBcCi1JbmRleDogY3VybC03LjUzLjEvdGVzdHMvZGF0YS90ZXN0MTI4OQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyODkgYi90ZXN0cy9kYXRhL3Rlc3QxMjg5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDY3OWNjMAogLS0tIC9kZXYvbnVsbAotKysrIGN1cmwtNy41My4xL3Rlc3RzL2RhdGEvdGVzdDEyODkKKysrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyODkKIEBAIC0wLDAgKzEsMzUgQEAKICs8dGVzdGNhc2U+CiArPGluZm8+CkBAIC05MCwzICs5NCw2IEBACiArPC9lcnJvcmNvZGU+CiArPC92ZXJpZnk+CiArPC90ZXN0Y2FzZT4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3OThiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMjU0LnBhdGNoCkBAIC0wLDAgKzEsMTM4IEBACitGcm9tIDFiMmViYTZmOTc0NWMwNjRmNzI4M2UwYWRhOGY0NmRmOWQ5ZDZlNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDAwOjI2OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZUUDogemVybyB0ZXJtaW5hdGUgdGhlIGVudHJ5IHBhdGggZXZlbiBvbiBiYWQgaW5wdXQKKworLi4uIGEgc2luZ2xlIGRvdWJsZSBxdW90ZSBjb3VsZCBsZWF2ZSB0aGUgZW50cnkgcGF0aCBidWZmZXIgd2l0aG91dCBhIHplcm8KK3Rlcm1pbmF0aW5nIGJ5dGUuIENWRS0yMDE3LTEwMDAyNTQKKworVGVzdCAxMTUyIGFkZGVkIHRvIHZlcmlmeS4KKworUmVwb3J0ZWQtYnk6IE1heCBEeW1vbmQKK0J1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzEwMDQuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTEwMDAyNTQKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9mdHAuYyAgICAgICAgICAgICAgIHwgIDcgKysrKy0tCisgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgfCAgMiArKworIHRlc3RzL2RhdGEvdGVzdDExNTIgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZGF0YS90ZXN0MTE1MgorCitkaWZmIC0tZ2l0IGEvbGliL2Z0cC5jIGIvbGliL2Z0cC5jCitpbmRleCA1ZWRlYzM3Li40OTNkYmY5IDEwMDY0NAorLS0tIGEvbGliL2Z0cC5jCisrKysgYi9saWIvZnRwLmMKK0BAIC0yODI2LDYgKzI4MjYsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorICAgICAgICAgY29uc3Qgc2l6ZV90IGJ1Zl9zaXplID0gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplOworICAgICAgICAgY2hhciAqZGlyOworICAgICAgICAgY2hhciAqc3RvcmU7CisrICAgICAgICBib29sIGVudHJ5X2V4dHJhY3RlZCA9IEZBTFNFOworIAorICAgICAgICAgZGlyID0gbWFsbG9jKG5yZWFkICsgMSk7CisgICAgICAgICBpZighZGlyKQorQEAgLTI4NTcsNyArMjg1OCw3IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHBhdGggKi8KKy0gICAgICAgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KKysgICAgICAgICAgICAgICAgZW50cnlfZXh0cmFjdGVkID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIGdldCBvdXQgb2YgdGhpcyBsb29wICovCisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorQEAgLTI4NjYsNyArMjg2Nyw5IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCisgICAgICAgICAgICAgc3RvcmUrKzsKKyAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgfQorLQorKyAgICAgICAgICAqc3RvcmUgPSAnXDAnOyAvKiB6ZXJvIHRlcm1pbmF0ZSAqLworKyAgICAgICAgfQorKyAgICAgICAgaWYoZW50cnlfZXh0cmFjdGVkKSB7CisgICAgICAgICAgIC8qIElmIHRoZSBwYXRoIG5hbWUgZG9lcyBub3QgbG9vayBsaWtlIGFuIGFic29sdXRlIHBhdGggKGkuZS46IGl0CisgICAgICAgICAgICAgIGRvZXMgbm90IHN0YXJ0IHdpdGggYSAnLycpLCB3ZSBwcm9iYWJseSBuZWVkIHNvbWUgc2VydmVyLWRlcGVuZGVudAorICAgICAgICAgICAgICBhZGp1c3RtZW50cy4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBjb25uZWN0aW5nIHRvCitkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworaW5kZXggN2FkYmVlNi4uNTI4NDY1NCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCisrKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworQEAgLTEyMSw2ICsxMjEsOCBAQCB0ZXN0MTEyMCB0ZXN0MTEyMSB0ZXN0MTEyMiB0ZXN0MTEyMyB0ZXN0MTEyNCB0ZXN0MTEyNSB0ZXN0MTEyNiB0ZXN0MTEyNyBcCisgdGVzdDExMjggdGVzdDExMjkgdGVzdDExMzAgdGVzdDExMzEgdGVzdDExMzIgdGVzdDExMzMgdGVzdDExMzQgdGVzdDExMzUgXAorIHRlc3QxMTM2IHRlc3QxMTM3IHRlc3QxMTM4IHRlc3QxMTM5IHRlc3QxMTQwIHRlc3QxMTQxIHRlc3QxMTQyIHRlc3QxMTQzIFwKKyB0ZXN0MTE0NCB0ZXN0MTE0NSB0ZXN0MTE0NiBcCisrdGVzdDExNTIgXAorK1wKKyB0ZXN0MTIwMCB0ZXN0MTIwMSB0ZXN0MTIwMiB0ZXN0MTIwMyB0ZXN0MTIwNCB0ZXN0MTIwNSB0ZXN0MTIwNiB0ZXN0MTIwNyBcCisgdGVzdDEyMDggdGVzdDEyMDkgdGVzdDEyMTAgdGVzdDEyMTEgdGVzdDEyMTIgdGVzdDEyMTMgdGVzdDEyMTQgdGVzdDEyMTUgXAorIHRlc3QxMjE2IHRlc3QxMjE3IHRlc3QxMjE4IHRlc3QxMjE5IFwKK2RpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTUyIGIvdGVzdHMvZGF0YS90ZXN0MTE1MgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhOGMwYTcKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKK0BAIC0wLDAgKzEsNjEgQEAKKys8dGVzdGNhc2U+CisrPGluZm8+CisrPGtleXdvcmRzPgorK0ZUUAorK1BBU1YKKytMSVNUCisrPC9rZXl3b3Jkcz4KKys8L2luZm8+CisrIworKyMgU2VydmVyLXNpZGUKKys8cmVwbHk+CisrPHNlcnZlcmNtZD4KKytSRVBMWSBQV0QgMjU3ICJqdXN0IG9uZQorKzwvc2VydmVyY21kPgorKworKyMgV2hlbiBkb2luZyBMSVNULCB3ZSBnZXQgdGhlIGRlZmF1bHQgbGlzdCBvdXRwdXQgaGFyZC1jb2RlZCBpbiB0aGUgdGVzdAorKyMgRlRQIHNlcnZlcgorKzxkYXRhIG1vZGU9InRleHQiPgorK3RvdGFsIDIwCisrZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgorK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCisrZHJ3eHIteHIteCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgIDIgIDE5OTYgY3VybC1yZWxlYXNlcworKy1yLS1yLS1yLS0gICAxIDAgICAgICAgIDEgICAgICAgICAgICAgMzUgSnVsIDE2ICAxOTk2IFJFQURNRQorK2xyd3hyd3hyd3ggICAxIDAgICAgICAgIDEgICAgICAgICAgICAgIDcgRGVjICA5ICAxOTk5IGJpbiAtPiB1c3IvYmluCisrZHIteHIteHIteCAgIDIgMCAgICAgICAgMSAgICAgICAgICAgIDUxMiBPY3QgIDEgIDE5OTcgZGV2CisrZHJ3eHJ3eHJ3eCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgMjkgMTY6MDQgZG93bmxvYWQuaHRtbAorK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgTm92IDMwICAxOTk1IGV0YworK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0IDMwIDE0OjMzIHB1YgorK2RyLXhyLXhyLXggICA1IDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IHVzcgorKzwvZGF0YT4KKys8L3JlcGx5PgorKworKyMKKysjIENsaWVudC1zaWRlCisrPGNsaWVudD4KKys8c2VydmVyPgorK2Z0cAorKzwvc2VydmVyPgorKyA8bmFtZT4KKytGVFAgd2l0aCB1bmV2ZW4gcXVvdGUgaW4gUFdEIHJlc3BvbnNlCisrIDwvbmFtZT4KKysgPGNvbW1hbmQ+CisrZnRwOi8vJUhPU1RJUDolRlRQUE9SVC90ZXN0LTExNTIvCisrPC9jb21tYW5kPgorKzwvY2xpZW50PgorKworKyMKKysjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorKzx2ZXJpZnk+CisrPHByb3RvY29sPgorK1VTRVIgYW5vbnltb3VzCisrUEFTUyBmdHBAZXhhbXBsZS5jb20KKytQV0QKKytDV0QgdGVzdC0xMTUyCisrRVBTVgorK1RZUEUgQQorK0xJU1QKKytRVUlUCisrPC9wcm90b2NvbD4KKys8L3ZlcmlmeT4KKys8L3Rlc3RjYXNlPgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OGJiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxZmU5MmZkM2RkNjRjNzIyOGY2ZmY0MWUzZmMxNmM0ZjIzOTI0NzFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMDg6Mjg6MjUgLTA3MDAKK1N1YmplY3Q6IG1raGVscC5wbDogc3VwcG9ydCByZXByb2R1Y2libGUgYnVpbGQKKworRG8gbm90IGdlbmVyYXRlIGxpbmUgd2l0aCB0aGUgY3VycmVudCBkYXRlLCBzdWNoIGFzOgorCisqIEdlbmVyYXRpb24gdGltZTogVHVlIE9jdC0yNCAxODowMTo0MSAyMDE3CisKK1RoaXMgd2lsbCBpbXByb3ZlIHJlcHJvZHVjaWJpbGl0eS4gVGhlIGdlbmVyYXRlZCBzdHJpbmcgaXMgb25seQorcGFydCBvZiBhIGNvbW1lbnQsIHNvIHRoZXJlIHNob3VsZCBiZSBubyBhZHZlcnNlIGNvbnNlcXVlbmNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL3B1bGwvMjAyNiBdCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9zcmMvbWtoZWxwLnBsIGIvc3JjL21raGVscC5wbAoraW5kZXggMjcwZGFhMi4uNzU3ZjAyNCAxMDA3NTUKKy0tLSBhL3NyYy9ta2hlbHAucGwKKysrKyBiL3NyYy9ta2hlbHAucGwKK0BAIC0xMDIsMTEgKzEwMiw5IEBAIHdoaWxlKDxSRUFEPikgeworIH0KKyBjbG9zZShSRUFEKTsKKyAKKy0kbm93ID0gbG9jYWx0aW1lOworIHByaW50IDw8SEVBRAorIC8qCisgICogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwLnBsIHNjcmlwdCBpbnN0ZWFkIQorLSAqIEdlbmVyYXRpb24gdGltZTogJG5vdworICAqLworICNpZmRlZiBVU0VfTUFOVUFMCisgI2luY2x1ZGUgInRvb2xfaHVnZWhlbHAuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41My4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjUzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTFmODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjUzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT04O21kNT0zYTM0OTQyZjRhZTNmYmYxYTMwMzE2MDcxNGU2NjRhYyIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKLSIKLQotIyBjdXJsIGxpa2VzIHRvIHNldCAtZzAgaW4gQ0ZMQUdTLCBzbyB3ZSBzdG9wIGl0Ci0jIGZyb20gbXVja2luZyBhcm91bmQgd2l0aCBkZWJ1ZyBvcHRpb25zCi0jCi1TUkNfVVJJICs9ICIgZmlsZTovL2NvbmZpZ3VyZV9hYy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIFwKLSAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjFmMDNhMTQyMjM2ODQwYzFhNzdjMDM1ZmE0YzU0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzcyMDdjMDZkNzVlOTEzNmE5NDRhMmUwNTI4MzM3Y2U3NmYxNWI5ZWM5YWU0YmIzMGQ3MDNiNTliZjUzMGU4IgotCi1DVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLQotUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKLVBBQ0tBR0VDT05GSUdbaW1hcF0gPSAiLS1lbmFibGUtaW1hcCwtLWRpc2FibGUtaW1hcCwiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbiwtLXdpdGhvdXQtbGliaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCi1QQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgotUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKLVBBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCi0gICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKLSAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXAotICAgIC0td2l0aG91dC1saWJwc2wgXAotICAgIC0td2l0aG91dC1uZ2h0dHAyIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjU0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmMDUzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiCkBAIC0wLDAgKzEsODcgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBcCisiCisKKyMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAorIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucworIworU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjZlYjcyMmY1MTJlN2EyNDg1NWZmMDg0ZjU0ZmU1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGZjNGRmMmQwMDFlZTBjNDRlYzA3MTE4NmU3NzAwNDYyNDkyNjNjNDkxZmNhZTQ4ZGYwZTFhM2NhOGYyNWEwIgorCitDVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKKworIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQorUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCitQQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCitQQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgorUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKK1BBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCitQQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKK1BBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCitQQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMjhkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMzJlNTk0M2EzYzQ2MzdkMzllNGQ2NWI1NDRkY2I5OWUyODAyMTBlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIzIEp1bCAyMDE3IDEwOjU0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIGV4cGxpY2l0IHRhZyBvcHRpb25zIHRvIGxpYnRvb2wgaW52b2NhdGlvbgorCitUaGlzIGhlbHBzIGNyb3NzIGNvbXBpbGUgd2hlbiB0YWcgaW5mZXJlbmNlIHZpYSBoZXVyaXN0aWNzCitmYWlsIGJlY2F1c2UgQ0MgdmFyaWFibGUgaXMgaGF2aW5nIC1mUElFIC1waWUgYW5kIGxpYnRvb2wKK3NtYXJ0bHkgcmVtb3ZlcyBpdCB3aGVuIGJ1aWxkaW5nIGxpYnJhcmllcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRpc3QvY29uZmlndXJlLmFjIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Rpc3QvY29uZmlndXJlLmFjIGIvZGlzdC9jb25maWd1cmUuYWMKK2luZGV4IDY4OWYzYjguLjljMTRiZGIgMTAwNjQ0CistLS0gYS9kaXN0L2NvbmZpZ3VyZS5hYworKysrIGIvZGlzdC9jb25maWd1cmUuYWMKK0BAIC0zNjYsMTIgKzM2NiwxMiBAQCBMSUJUT09MPSIuL2xpYnRvb2wiCisgCisgSU5TVEFMTEVSPSJcJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBjcCAtcCIKKyAKKy1NQUtFRklMRV9DQz0iXCQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJHtNQUtFRklMRV9DQ30iCistTUFLRUZJTEVfU09MSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30gLWF2b2lkLXZlcnNpb24iCistTUFLRUZJTEVfQ0NMSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30iCistTUFLRUZJTEVfQ1hYPSJcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NYWH0iCistTUFLRUZJTEVfWFNPTElOSz0iXCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJHtNQUtFRklMRV9DWFhMSU5LfSAtYXZvaWQtdmVyc2lvbiIKKy1NQUtFRklMRV9DWFhMSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NYWExJTkt9IgorK01BS0VGSUxFX0NDPSJcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NDfSIKKytNQUtFRklMRV9TT0xJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ0NMSU5LfSAtYXZvaWQtdmVyc2lvbiIKKytNQUtFRklMRV9DQ0xJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ0NMSU5LfSIKKytNQUtFRklMRV9DWFg9IlwkKExJQlRPT0wpIC0tdGFnPUNYWCAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NYWH0iCisrTUFLRUZJTEVfWFNPTElOSz0iXCQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ1hYTElOS30gLWF2b2lkLXZlcnNpb24iCisrTUFLRUZJTEVfQ1hYTElOSz0iXCQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ1hYTElOS30iCisgCisgCisgY2FzZSAiJGhvc3Rfb3MiIGluCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvc2VxdWVuY2UtdHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9zZXF1ZW5jZS10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZmUzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvc2VxdWVuY2UtdHlwZS5wYXRjaApAQCAtMCwwICsxLDU5IEBACitjb25maWd1cmUgd2FudHMgdG8gdXNlIGhvc3Qtc3BlY2lmaWMgdHlwZXMgdG8gZ2V0IGEgNjQtYml0IGludGVnZXIgaW4gZGIuaAoraW5zdGVhZCBvZiB1c2luZyBhbiBhbGlhcyBzdWNoIGFzIGludDY0X3QuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGhlYWRlciBkaWZmZXJzCitpbiBtdWx0aWxpYiBlbnZpcm9ubWVudHMgZm9yIG5vIGdvb2QgcmVhc29uLCBzbyByZXBsYWNlIHRoZSB0eXBlIHdpdGggdGhlIGFsaWFzCitpbiBzdGRpbnQuaC4KKworVGhpcyB0aGVuIGJyZWFrcyB0aGUgb3Zlcmx5IGNvbXBsaWNhdGVkIHR5cGUgY2hlY2sgYnV0IGFzIHdlIGtub3cgdGhhdCBpbnQ2NF90CitleGlzdHMgYW5kIHdvcmtzLCB3ZSBjYW4ganVzdCBkZWxldGUgdGhhdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0gYS9kaXN0L2FjbG9jYWwvc2VxdWVuY2UubTR+CTIwMTMtMDktMDkgMTY6MzU6MDIuMDAwMDAwMDAwICswMTAwCisrKysgYi9kaXN0L2FjbG9jYWwvc2VxdWVuY2UubTQJMjAxNy0xMS0wMSAxMzoyMTo0NS40NzIyOTU5NzEgKzAwMDAKK0BAIC0yNCArMjQgQEAKKy0JCWRiX2N2X3NlcV90eXBlPSJsb25nIgorKwkJZGJfY3Zfc2VxX3R5cGU9ImludDY0X3QiCitAQCAtMzEgKzMxIEBACistCQlkYl9jdl9zZXFfdHlwZT0ibG9uZyBsb25nIgorKwkJZGJfY3Zfc2VxX3R5cGU9ImludDY0X3QiCitAQCAtNDEsMzggKzQxIEBACistCSMgVGVzdCB0byBzZWUgaWYgd2UgY2FuIGRlY2xhcmUgdmFyaWFibGVzIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplCistCSMgYW5kIGZvcm1hdCB0aGVtLiAgSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCBhbGwgd2UgZ2V0IGlzIGEgbGluaworLQkjIHRlc3QsIHdoaWNoIHdvbid0IHRlc3QgZm9yIHRoZSBhcHByb3ByaWF0ZSBwcmludGYgZm9ybWF0IHN0cmluZ3MuCistCWlmIHRlc3QgIiRkYl9jdl9idWlsZF9zZXF1ZW5jZSIgPSAieWVzIjsgdGhlbgorLQkJQUNfVFJZX1JVTihbCistCQltYWluKCkgeworLQkJCSRkYl9jdl9zZXFfdHlwZSBsOworLQkJCXVuc2lnbmVkICRkYl9jdl9zZXFfdHlwZSB1OworLQkJCWNoYXIgYnVmQDw6QDEwMEA6PkA7CistCistCQkJYnVmQDw6QDBAOj5AID0gJ2EnOworLQkJCWwgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV9mbXQsIGwpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiOTIyMzM3MjAzNjg1NDc3NTgwNyIpKQorLQkJCQlyZXR1cm4gKDEpOworLQkJCXUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTDsKKy0JCQkodm9pZClzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAkZGJfY3Zfc2VxX3VmbXQsIHUpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQlyZXR1cm4gKDApOworLQkJfV0sLCBbZGJfY3ZfYnVpbGRfc2VxdWVuY2U9Im5vIl0sCistCQlBQ19UUllfTElOSygsWworLQkJCSRkYl9jdl9zZXFfdHlwZSBsOworLQkJCXVuc2lnbmVkICRkYl9jdl9zZXFfdHlwZSB1OworLQkJCWNoYXIgYnVmQDw6QDEwMEA6PkA7CistCistCQkJYnVmQDw6QDBAOj5AID0gJ2EnOworLQkJCWwgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV9mbXQsIGwpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiOTIyMzM3MjAzNjg1NDc3NTgwNyIpKQorLQkJCQlyZXR1cm4gKDEpOworLQkJCXUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTDsKKy0JCQkodm9pZClzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAkZGJfY3Zfc2VxX3VmbXQsIHUpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQlyZXR1cm4gKDApOworLQkJXSwsIFtkYl9jdl9idWlsZF9zZXF1ZW5jZT0ibm8iXSkpCistCWZpCisrCWRiX2N2X2J1aWxkX3NlcXVlbmNlPSJ5ZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCAyNjA2NWJiLi5mYjRiZWZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTIyLDE0ICsyMiwyMCBAQAogU1JDX1VSSSArPSAiZmlsZTovL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdG9taWMtUmVuYW1lLWxvY2FsLV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UtdG8tYXZvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NlcXVlbmNlLXR5cGUucGF0Y2ggXAogICAgICAgICAgICAiCisjIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiBvZmZpY2lhbCBsYXRlc3QgNi54IHZlcnNpb25zOworIyBsZXQncyB0cmFjayB3aGF0IGRlYmlhbiBpcyB1c2luZy4KK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC9kYjUuMy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJkYjVcLjNfKD9QPHB2ZXI+LispXC5vcmlnIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjk5NDU0NTY0ZDViNDQ3OTc1MDU2NzAzMWQ2NmZlMjQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhOTkyZDc0MDcwOTg5MmU4MWY5ZDkzZjA2ZGFmMzA1Y2Y3M2ZiODFiNTQ1YWZlNzI0NzgwNDMxNzJjMzYyOCIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWQxMTU4ZTMxNDM3ZjRmODdjZGQ0YWIyYjg2MTM5NTUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlcgoraW5oZXJpdCBhdXRvdG9vbHMKIAogIyBQdXQgdmlydHVhbC9kYiBpbiBhbnkgYXBwcm9wcmlhdGUgcHJvdmlkZXIgb2YgYQogIyByZWxhdGlvbmFsIGRhdGFiYXNlLCB1c2UgaXQgYXMgYSBkZXBlbmRlbmN5IGluCkBAIC03MiwyMiArNzgsMzIgQEAKIE1VVEVYX2FybSA9ICIke0FSTV9NVVRFWH0iCiBNVVRFWF9hcm1lYiA9ICIke0FSTV9NVVRFWH0iCiBFWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IFNUUklQPXRydWUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgorRVhUUkFfT0VNQUtFICs9ICJMSUJUT09MPScuLyR7SE9TVF9TWVN9LWxpYnRvb2wnIgogCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAgLUkgJHtTfS9kaXN0L2FjbG9jYWwgLUkke1N9L2Rpc3QvYWNsb2NhbF9qYXZhIgogQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vZGlzdCIKIAogIyBDYW5jZWwgdGhlIHNpdGUgc3R1ZmYgLSBpdCdzIHNldCBmb3IgZGIzIGFuZCBkZXN0cm95cyB0aGUKICMgY29uZmlndXJlLgogQ09ORklHX1NJVEUgPSAiIgotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7Qn0KLQlnbnUtY29uZmlnaXplIC0tZm9yY2UgJHtBVVRPVE9PTFNfU0NSSVBUX1BBVEh9Ci0Jb2VfcnVuY29uZgorCitvZV9ydW5jb25mX3ByZXBlbmQoKSB7CisJLiAke1N9L2Rpc3QvUkVMRUFTRQorCSMgRWRpdCB2ZXJzaW9uIGluZm9ybWF0aW9uIHdlIGNvdWxkbid0IHByZS1jb21wdXRlLgorCXNlZCAtaSAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9GQU1JTFlfXy8kREJfVkVSU0lPTl9GQU1JTFkvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9SRUxFQVNFX18vJERCX1ZFUlNJT05fUkVMRUFTRS9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX01BSk9SX18vJERCX1ZFUlNJT05fTUFKT1IvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9NSU5PUl9fLyREQl9WRVJTSU9OX01JTk9SL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fUEFUQ0hfXy8kREJfVkVSU0lPTl9QQVRDSC9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX1NUUklOR19fLyREQl9WRVJTSU9OX1NUUklORy9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX0ZVTExfU1RSSU5HX18vJERCX1ZFUlNJT05fRlVMTF9TVFJJTkcvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9VTklRVUVfTkFNRV9fLyREQl9WRVJTSU9OX1VOSVFVRV9OQU1FL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fXy8kREJfVkVSU0lPTi9nIiAke1N9L2Rpc3QvY29uZmlndXJlCiB9CiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKICAgICAjIFN0b3AgbGlidG9vbCBhZGRpbmcgUlBBVEhzCi0gICAgc2VkIC1pIC1lICdzfGhhcmRjb2RlX2ludG9fbGlicz15ZXN8aGFyZGNvZGVfaW50b19saWJzPW5vfCcgJHtCfS9saWJ0b29sCisgICAgc2VkIC1pIC1lICdzfGhhcmRjb2RlX2ludG9fbGlicz15ZXN8aGFyZGNvZGVfaW50b19saWJzPW5vfCcgJHtCfS8ke0hPU1RfU1lTfS1saWJ0b29sCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtOTcsOCArMTEzLDYgQEAKIAlsbiAtcyBkYjUxL2RiLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2RiLmgKIAlsbiAtcyBkYjUxL2RiX2N4eC5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYl9jeHguaAogCi0gICAgICAgIG9lX211bHRpbGliX2hlYWRlciBkYjUxL2RiLmgKLQogCSMgVGhlIGRvY3MgZW5kIHVwIGluIC91c3IvZG9jcyAtIG5vdCByaWdodC4KIAlpZiB0ZXN0IC1kICIke0R9LyR7cHJlZml4fS9kb2NzIgogCXRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1N2Q0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTcwNDAyVDIxMTczMlovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKKworU1JDX1VSSVttZDVzdW1dID0gImVlNWZjZWNhYWIwNzFiZDBjOTNlOGEwY2VlNjVkNmM0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NDQ2Y2Q0YzBkMzA5ZmQzMWEwNjgyYzVjMmYwN2Y3NjEzZmI4NjdmNzY5NDE0YjljYzUxZjE1NWFkNzMxNzIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCisgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKKyMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KKyMKK1BBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCitGSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKK0FMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYzYzZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjExMThUMDMzMDE5Wi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NDA4M2ZjNjYxNjQ3NDY4ODBkZmZkMzBkNjJkMDU0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzM5NWMwYmRjZmU4OWRlMzA4MjhiMWQyNWNjNTU0OWRlZDUyMjVhNmQzNjI1ZmJjYjJjYzA4ODFlZjVmMDI2IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbwotICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCi0gICAgICAgIGRvbmUKLSAgICBmaQotfQotCi0jIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCi0jCi1QQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgotRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgotQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKaW5kZXggNjUyMzZmYi4uYjk0NjFiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKQEAgLTEsMzAgKzEsNDEgQEAKLUFkZCBpbnN0YWxsLXB0ZXN0IHJ1bGVzLgorRnJvbSA0ZTRiNzBhNGEzZGNmMWZkYmVlOWU2OGJlZDNiNjJmNDJiMTk3YTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXAgUHVpZ2RlbW9udCA8am9zZXAucHVpZ2RlbW9udEBlbmVhLmNvbT4KK0RhdGU6IFN1biwgNCBNYXkgMjAxNCAxNjowMjowNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgaW5zdGFsbC1wdGVzdCBydWxlcy4KIAogU2lnbmVkLW9mZi1ieTogSm9zZXAgUHVpZ2RlbW9udCA8am9zZXAucHVpZ2RlbW9udEBlbmVhLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotZGlmZiAtdXIgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQkyMDExLTA4LTE2IDEwOjEzOjEwLjAwMDAwMDAwMCArMDIwMAotKysrIGIvTWFrZWZpbGUuYW0JMjAxMy0wNC0xMiAxODowMjoxNi40NzM3MTU4NzMgKzAyMDAKLUBAIC0zMSwzICszMSw4IEBACi0gCWQ9YGRhdGUgJyslZC8lbS8lWSdgOyBcCi0gCXNlZCAnc3wvXCpARElTVF9EQVRFQFwqL3wiJyIkJGQiJyJ8JyAkKHNyY2Rpcikvc3JjL3ZlcnNpb24uYyA+IFwKLSAJCSQoZGlzdGRpcikvc3JjL3ZlcnNpb24uYworLS0tCisgTWFrZWZpbGUuYW0gICAgICAgfCAgNSArKysrKworIHRlc3RzL01ha2VmaWxlLmFtIHwgMTIgKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0Y2RjNzM0Li4yNGI5OWYwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNDUsMyArNDUsOCBAQCBDaGFuZ2VMb2c6CisgICAgICAgICAgICAgICAgIGF3ayAtZiAkKHRvcF9zcmNkaXIpL2dpdDJjaGcuYXdrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIC12IGFwcGVuZD0kKHRvcF9zcmNkaXIpLyQocHJldl9jaGFuZ2VfbG9nKSA+IENoYW5nZUxvZzsgXAorICAgICAgICAgZmkKICsKICtpbnN0YWxsLXB0ZXN0OgogKwlAZm9yIHN1YmRpciBpbiAkKFNVQkRJUlMpOyBkbyBcCiArCQkkKE1BS0UpIC1DICQkc3ViZGlyIERFU1RESVI9JChERVNURElSKS8kJHN1YmRpciAkQDsgXAogKwlkb25lCi1kaWZmIC11ciBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCTIwMTEtMTEtMTEgMTk6Mzk6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTA0LTEyIDE4OjMwOjU3LjA2NjMwMTAzNyArMDIwMAotQEAgLTEzMiw0ICsxMzIsMTQgQEAKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAzZGJiNTgwLi4yMmZmYzQ0IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTMwLDQgKzEzMCwxNCBAQCBkdGZldGNoX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCiAgZHRkZWxfTERBREQgPSAuLi9zcmMvbGliZ2RibS5sYSAuLi9jb21wYXQvbGliZ2RibV9jb21wYXQubGEKICBkX2NyZWF0X2NlX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCiAgCistCiArYnVpbGR0ZXN0czogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCi0gCisrCiAraW5zdGFsbC1wdGVzdDogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCiArCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikKICsJQGZvciBmaWxlIGluICReOyBkbyBcCkBAIC0zNCwzICs0NSw2IEBACiArCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZSAkKERFU1RESVIpIDsgXAogKwkJZmkgXAogKwlkb25lCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODAwNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXkvdmFsdWUgZGF0YWJhc2UgbGlicmFyeSB3aXRoIGV4dGVuc2libGUgaGFzaGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGJtLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDFkYTFiOWZlNDJlNjQyY2JiMmMyNGQ1ZTBjNGQyNCIKLQotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RibS9nZGJtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjljZTk2ZmY0Yzk5ZTc0Mjk1ZWExOTA0MDkzMWM4ZmI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5N2IyMTY2ZWU4NjdmZDZjYTVjMDIyZWZlZTgwNzAyZDZmMzBkZDY2YWYwZTAzZWQwOTIyODVjM2FmOWJjZWEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAotCi0jIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgotCi0jIFN0b3AgcHJlc2VuY2Ugb2YgZGJtL25iZG0gb24gdGhlIGhvc3QgY29udGFtaW5hdGluZyBidWlsZHMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9saWJfbmRibV9tYWluPW5vIGFjX2N2X2xpYl9kYm1fbWFpbj1ubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBDcmVhdGUgYSBzeW1saW5rIHRvIG5kYm0uaCBhbmQgZ2RibS5oIGluIGluY2x1ZGUvZ2RibSB0byBsZXQgb3RoZXIgcGFja2FnZXMgdG8gZmluZAotICAgICMgdGhlc2UgaGVhZGVycwotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZ2RibQotICAgIGxuIC1zZiAuLi9uZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vbmRibS5oCi0gICAgbG4gLXNmIC4uL2dkYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9nZGJtLmgKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImRpZmZ1dGlscyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIGJ1aWxkdGVzdHMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbXBhdCBcCi0gICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1jb21wYXQgPSAiJHtsaWJkaXJ9L2xpYmdkYm1fY29tcGF0JHtTT0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJlMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCisKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTI5ZGNkYTJhOGRlM2ZkMjM2N2JkYmY2Njc2OTM3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDI1MmNiZDdkNzkzZjdiMTJiY2NlYWRkZGE5OGQyNTdjMTRmNGQxODkwZDg1MWMzODZjMzcyMDcwMDBhMjUzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKKworIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCitFWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKKworIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKKyAgICAjIHRoZXNlIGhlYWRlcnMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KKyAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAorICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAorICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCisgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCmluZGV4IDVlNjUwNzUuLmIwMDg3MTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCkBAIC0yNSw4ICsyNSwxMSBAQAogUEFDS0FHRVMgPSsgImxpYmdtcHh4IgogRklMRVNfbGliZ21weHggPSAiJHtsaWJkaXJ9L2xpYmdtcHh4JHtTT0xJQlN9IgogCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgJHtEfSR7aW5jbHVkZWRpcn0vZ21wLmgKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCisgICAgICAgIC1lICJzfCR7REVCVUdfUFJFRklYX01BUH18fGciIFwKKyAgICAgICAgICR7Qn0vZ21wLmgKIH0KIAogU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOWMwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gNTlhM2M3NmQ0MDE2ZmZjNjE1ZjFjNDUxODRmNGM2ODIwMDYxZDY5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMToxNDoxMiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gVXNlIHBrZy1jb25maWcgdG8gZmluZCBwdGggaW5zdGVhZCBvZiBwdGgtY29uZmlnLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorW25vdCBzdWJtaXR0ZWQgYnV0IHRoZXkndmUgYmVlbiBjbGVhciB0aGV5IGRvbid0IHdhbnQgYSBwa2ctY29uZmlnCitkZXBlbmRlbmN5XQorCitSUCAyMDE0LzUvMjIKKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1JlYmFzZSB0byAyLjEuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2dudXBnLXB0aC5tNCB8IDUzICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nbnVwZy1wdGgubTQgYi9tNC9nbnVwZy1wdGgubTQKK2luZGV4IDZkYzllMGUuLjU4OTI1MzEgMTAwNjQ0CistLS0gYS9tNC9nbnVwZy1wdGgubTQKKysrKyBiL200L2dudXBnLXB0aC5tNAorQEAgLTE3LDMzICsxNyw5IEBAIGRubCBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAjIFRha2VuIGFuZCBtb2RpZmllZCBmcm9tIHRoZSBtNCBtYWNyb3Mgd2hpY2ggY29tZSB3aXRoIFB0aC4KKyBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAorICAgWworLSAgICBfcHRoX3ZlcnNpb249YCRQVEhfQ09ORklHIC0tdmVyc2lvbiB8IGF3ayAnTlI9PTEge3ByaW50IFskXTN9J2AKKyAgICAgX3JlcV92ZXJzaW9uPSJpZmVsc2UoWyQxXSwsMS4yLjAsJDEpIgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhQVEgsIFtwdGggPj0gJF9yZXFfdmVyc2lvbl0sIFtoYXZlX3B0aD15ZXNdLCBbaGF2ZV9wdGg9bm9dKQorIAorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIFBUSCAtIHZlcnNpb24gPj0gJF9yZXFfdmVyc2lvbikKKy0gICAgZm9yIF92YXIgaW4gX3B0aF92ZXJzaW9uIF9yZXFfdmVyc2lvbjsgZG8KKy0gICAgICAgIGV2YWwgIl92YWw9XCJcJCR7X3Zhcn1cIiIKKy0gICAgICAgIF9tYWpvcj1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wxLydgCistICAgICAgICBfbWlub3I9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMi8nYAorLSAgICAgICAgX3J0eXBlPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDMvJ2AKKy0gICAgICAgIF9taWNybz1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1w0LydgCistICAgICAgICBjYXNlICRfcnR5cGUgaW4KKy0gICAgICAgICAgICAiYSIgKSBfcnR5cGU9MCA7OworLSAgICAgICAgICAgICJiIiApIF9ydHlwZT0xIDs7CistICAgICAgICAgICAgIi4iICkgX3J0eXBlPTIgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIF9oZXg9YGVjaG8gZHVtbXkgfCBhd2sgJ3sgcHJpbnRmKCIlZCUwMmQlMWQlMDJkIiwgbWFqb3IsIG1pbm9yLCBydHlwZSwgbWljcm8pOyB9JyBcCistICAgICAgICAgICAgICAibWFqb3I9JF9tYWpvciIgIm1pbm9yPSRfbWlub3IiICJydHlwZT0kX3J0eXBlIiAibWljcm89JF9taWNybyJgCistICAgICAgICBldmFsICIke192YXJ9X2hleD1cIlwkX2hleFwiIgorLSAgICBkb25lCistICAgIGhhdmVfcHRoPW5vCistICAgIGlmIHRlc3QgIi4kX3B0aF92ZXJzaW9uX2hleCIgIT0gLjsgdGhlbgorLSAgICAgICAgaWYgdGVzdCAiLiRfcmVxX3ZlcnNpb25faGV4IiAhPSAuOyB0aGVuCistICAgICAgICAgICAgaWYgdGVzdCAkX3B0aF92ZXJzaW9uX2hleCAtZ2UgJF9yZXFfdmVyc2lvbl9oZXg7IHRoZW4KKy0gICAgICAgICAgICAgICAgaGF2ZV9wdGg9eWVzCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCisgICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuCisgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgUFRIIGluc3RhbGxhdGlvbiBpcyBzYW5lXSkKK0BAIC01MSw5ICsyNyw5IEBAIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCisgICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2NmbGFncz0kQ0ZMQUdTCisgICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2xkZmxhZ3M9JExERkxBR1MKKyAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfbGlicz0kTElCUworLSAgICAgICAgIENGTEFHUz0iJENGTEFHUyBgJFBUSF9DT05GSUcgLS1jZmxhZ3NgIgorLSAgICAgICAgIExERkxBR1M9IiRMREZMQUdTIGAkUFRIX0NPTkZJRyAtLWxkZmxhZ3NgIgorLSAgICAgICAgIExJQlM9IiRMSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgorKyAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIX0NGTEFHUyIKKysgICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAkUFRIX0xERkxBR1MiCisrICAgICAgICAgTElCUz0iJExJQlMgJFBUSF9MSUJTIgorICAgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxwdGguaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyBwdGhfaW5pdCAoKTtdXSldLAorQEAgLTgwLDI2ICs1NiwxMyBAQCBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAorICMgUFRIX0NMRkFHUyBhbmQgUFRIX0xJQlMgYXJlIEFTX1NVQlNULgorICMKKyBBQ19ERUZVTihbR05VUEdfUEFUSF9QVEhdLAorLVsgQUNfQVJHX1dJVEgocHRoLXByZWZpeCwKKy0gICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1wdGgtcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBHTlUgUHRoIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSksCistICAgICBwdGhfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBwdGhfY29uZmlnX3ByZWZpeD0iIikKKy0gIGlmIHRlc3QgeCRwdGhfY29uZmlnX3ByZWZpeCAhPSB4IDsgdGhlbgorLSAgICAgUFRIX0NPTkZJRz0iJHB0aF9jb25maWdfcHJlZml4L2Jpbi9wdGgtY29uZmlnIgorLSAgZmkKKy0gIEFDX1BBVEhfUFJPRyhQVEhfQ09ORklHLCBwdGgtY29uZmlnLCBubykKKytbCisgICB0bXA9aWZlbHNlKFskMV0sICwxLjMuNywkMSkKKy0gIGlmIHRlc3QgIiRQVEhfQ09ORklHIiAhPSAibm8iOyB0aGVuCistICAgIEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKCR0bXApCistICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuICAgICAgCistICAgICAgIFBUSF9DRkxBR1M9YCRQVEhfQ09ORklHIC0tY2ZsYWdzYAorLSAgICAgICBQVEhfTElCUz1gJFBUSF9DT05GSUcgLS1sZGZsYWdzYAorLSAgICAgICBQVEhfTElCUz0iJFBUSF9MSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgorLSAgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCisrICBHTlVQR19QVEhfVkVSU0lPTl9DSEVDSygkdG1wKQorKyAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4KKysgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCisgICAgICAgICAgICAgICAgIFtEZWZpbmVkIGlmIHRoZSBHTlUgUHRoIGlzIGF2YWlsYWJsZV0pCistICAgIGZpCisgICBmaQorICAgQUNfU1VCU1QoUFRIX0NGTEFHUykKKyAgIEFDX1NVQlNUKFBUSF9MSUJTKQorIF0pCistCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkODZlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSA1M2MyYWVjMmUxM2Y0ZTJkMDliZTcxNDg4NjljODYyZjA3ZGZkZDRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMToxNjozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gdXNlIHBrZ2NvbmZpZyBpbnN0ZWFkIG9mIG5wdGggY29uZmlnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3BlbmVtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK1JlYmFzZSB0byAyLjEuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L25wdGgubTQgfCAzNCArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9ucHRoLm00IGIvbTQvbnB0aC5tNAoraW5kZXggMTdjMjY0NC4uMTVhOTMxYiAxMDA2NDQKKy0tLSBhL200L25wdGgubTQKKysrKyBiL200L25wdGgubTQKK0BAIC0xNywxMCArMTcsMTAgQEAgQUNfREVGVU4oW19BTV9QQVRIX05QVEhfQ09ORklHXSwKKyAgIGlmIHRlc3QgIngkbnB0aF9jb25maWdfcHJlZml4IiAhPSB4IDsgdGhlbgorICAgICAgIE5QVEhfQ09ORklHPSIkbnB0aF9jb25maWdfcHJlZml4L2Jpbi9ucHRoLWNvbmZpZyIKKyAgIGZpCistICBBQ19QQVRIX1BST0coTlBUSF9DT05GSUcsIG5wdGgtY29uZmlnLCBubykKKysgIEFDX1BBVEhfUFJPRyhQS0dDT05GSUcsIHBrZy1jb25maWcsIG5vKQorIAorLSAgaWYgdGVzdCAiJE5QVEhfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICBucHRoX3ZlcnNpb249YCROUFRIX0NPTkZJRyAtLXZlcnNpb25gCisrICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgorKyAgICBucHRoX3ZlcnNpb249YCRQS0dDT05GSUcgLS1tb2R2ZXJzaW9uIG5wdGhgCisgICBmaQorICAgbnB0aF92ZXJzaW9uX21ham9yPWBlY2hvICRucHRoX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKK0BAIC00NSw3ICs0NSw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAorIAorICAgQUNfTVNHX0NIRUNLSU5HKGZvciBOUFRIIC0gdmVyc2lvbiA+PSAkbWluX25wdGhfdmVyc2lvbikKKyAgIG9rPW5vCistICBpZiB0ZXN0ICIkTlBUSF9DT05GSUciICE9ICJubyIgOyB0aGVuCisrICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgorICAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ucHRoX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCisgICAgIHJlcV9taW5vcj1gZWNobyAkbWluX25wdGhfdmVyc2lvbiB8IFwKK0BAIC02NiwyOCArNjYsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9OUFRIXSwKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRucHRoX3ZlcnNpb24pXSkKKy0gIGVsc2UKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKy0gIGZpCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IE5QVEgsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCistICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorLSAgICAgaWYgdGVzdCAiJHJlcV9ucHRoX2FwaSIgLWd0IDAgOyB0aGVuCistICAgICAgICB0bXA9YCROUFRIX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKy0gICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtOUFRIIEFQSSB2ZXJzaW9uXSkKKy0gICAgICAgICAgIGlmIHRlc3QgIiRyZXFfbnB0aF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCistICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW29rYXldKQorLSAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICBvaz1ubworLSAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtkb2VzIG5vdCBtYXRjaC4gd2FudD0kcmVxX25wdGhfYXBpIGdvdD0kdG1wXSkKKy0gICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgZmkKKy0gIGZpCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBOUFRIX0NGTEFHUz1gJE5QVEhfQ09ORklHIC0tY2ZsYWdzYAorLSAgICBOUFRIX0xJQlM9YCROUFRIX0NPTkZJRyAtLWxpYnNgCisrICAgIE5QVEhfQ0ZMQUdTPWAkUEtHQ09ORklHIC0tY2ZsYWdzIG5wdGhgCisrICAgIE5QVEhfTElCUz1gJFBLR0NPTkZJRyAtLWxpYnMgbnB0aGAKKysgICAgQUNfTVNHX1dBUk4oW1tHT1QgSEVSRSAtICROUFRIX0xJQlMgXV0pCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIG5wdGhfY29uZmlnX2hvc3Q9YCROUFRIX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorICAgICBpZiB0ZXN0IHgiJG5wdGhfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgorQEAgLTEwMyw2ICs4NCw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAorICAgICAgIGZpCisgICAgIGZpCisgICBlbHNlCisrICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgIE5QVEhfQ0ZMQUdTPSIiCisgICAgIE5QVEhfTElCUz0iIgorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNzk4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gOWMzODU4ZmZkYTYyNDZiZjllMWU2YWVlYjkyMDUzMmE1NmIxOTQwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTE6MTg6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGRpcm1uZ3IgdXNlcyBsaWJncGcgZXJyb3IKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK1JlYmFzZSB0byAyLjEuMjMKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZGlybW5nci9NYWtlZmlsZS5hbSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZGlybW5nci9NYWtlZmlsZS5hbSBiL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KK2luZGV4IGI0MDQxNjUuLmQzZjkxNmUgMTAwNjQ0CistLS0gYS9kaXJtbmdyL01ha2VmaWxlLmFtCisrKysgYi9kaXJtbmdyL01ha2VmaWxlLmFtCitAQCAtODIsNyArODIsOCBAQCBlbmRpZgorIGRpcm1uZ3JfTERBREQgPSAkKGxpYmNvbW1vbnB0aCkgXAorICAgICAgICAgJChETlNMSUJTKSAkKExJQkFTU1VBTl9MSUJTKSBcCisgCSQoTElCR0NSWVBUX0xJQlMpICQoS1NCQV9MSUJTKSAkKE5QVEhfTElCUykgXAorLQkkKE5UQlRMU19MSUJTKSAkKExJQkdOVVRMU19MSUJTKSAkKExJQklOVEwpICQoTElCSUNPTlYpCisrCSQoTlRCVExTX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCSU5UTCkgJChMSUJJQ09OVikgXAorKwkkKEdQR19FUlJPUl9MSUJTKQorIGlmIFVTRV9MREFQCisgZGlybW5ncl9MREFERCArPSAkKGxkYXBsaWJzKQorIGVuZGlmCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDg1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA5MTRhZTRhM2Y3NTI5ZmIwNjk0NjdiZjBkZWQ1N2RkMjRlZTJlNzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDExOjIzOjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBhdXRvZ2VuLnNoOiBmaXggZmluZC12ZXJzaW9uIGZvciBiZXRhIGNoZWNraW5nCisKK2ZpbmQtdmVyc2lvbiBhbHdheXMgYXNzdW1lcyB0aGF0IGdudXBnIGlzIGJldGEgaWYgYXV0b2dlbi5zaCBpcyBydW4KK291dCBvZiBnaXQtcmVwby4gVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHVzZXJzIHdob20ganVzdCB0YWtlIHJlbGVhc2UKK3RhcmJhbGwgYW5kIHJlLXJ1biBhdXRvY29uZiBpbiB0aGVpciBsb2NhbCBidWlsZCBkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDIuMS4yMworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0b2dlbi5zaCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAoraW5kZXggZTViYTViZi4uMDVlMGUxMSAxMDA3NTUKKy0tLSBhL2F1dG9nZW4uc2gKKysrKyBiL2F1dG9nZW4uc2gKK0BAIC0yNDUsNyArMjQ1LDYgQEAgaWYgWyAiJG15aG9zdCIgPSAiZmluZC12ZXJzaW9uIiBdOyB0aGVuCisgICAgICAgcnZkPSQoKDB4JChlY2hvICR7cmV2fSB8IGRkIGJzPTEgY291bnQ9NCAyPi9kZXYvbnVsbCkpKQorICAgICBlbHNlCisgICAgICAgaW5naXQ9bm8KKy0gICAgICBiZXRhPXllcworICAgICAgIHRtcD0iLXVua25vd24iCisgICAgICAgcmV2PSIwMDAwMDAwIgorICAgICAgIHJ2ZD0iMCIKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI0MWJjMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA3MTdmOTk0YmUyNDY2ZDM3OGU2NjExYTQ3MzljNjA2ZGI2ZDBkYzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDI1IE9jdCAyMDE1IDIyOjQ0OjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9nZW4uc2g6IGZpeCBmaW5kLXZlcnNpb24gZm9yIGJldGEgY2hlY2tpbmcKLQotZmluZC12ZXJzaW9uIGFsd2F5cyBhc3N1bWVzIHRoYXQgZ251cGcgaXMgYmV0YSBpZiBhdXRvZ2VuLnNoIGlzIHJ1bgotb3V0IG9mIGdpdC1yZXBvLiBUaGlzIGRvZXNuJ3Qgd29yayBmb3IgdXNlcnMgd2hvbSBqdXN0IHRha2UgcmVsZWFzZQotdGFyYmFsbCBhbmQgcmUtcnVuIGF1dG9jb25mIGluIHRoZWlyIGxvY2FsIGJ1aWxkIGRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gYXV0b2dlbi5zaCB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAotaW5kZXggN2VmZmQ1Ni4uZDY3MzQzMiAxMDA3NTUKLS0tLSBhL2F1dG9nZW4uc2gKLSsrKyBiL2F1dG9nZW4uc2gKLUBAIC0yMjgsNyArMjI4LDYgQEAgaWYgWyAiJG15aG9zdCIgPSAiZmluZC12ZXJzaW9uIiBdOyB0aGVuCi0gICAgICAgcnZkPSQoKDB4JChlY2hvICR7cmV2fSB8IGhlYWQgLWMgNCkpKQotICAgICBlbHNlCi0gICAgICAgaW5naXQ9bm8KLS0gICAgICBiZXRhPXllcwotICAgICAgIHRtcD0iLXVua25vd24iCi0gICAgICAgcmV2PSIwMDAwMDAwIgotICAgICAgIHJ2ZD0iMCIKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2Rpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FmMTk1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotSW5kZXg6IGdudXBnLTIuMS4wL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVwZy0yLjEuMC5vcmlnL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KLSsrKyBnbnVwZy0yLjEuMC9kaXJtbmdyL01ha2VmaWxlLmFtCi1AQCAtNzgsNyArNzgsOCBAQCBlbmRpZgotIGRpcm1uZ3JfTERBREQgPSAkKGxpYmNvbW1vbnRsc25wdGgpICQobGliY29tbW9ucHRoKSBcCi0gICAgICAgICAkKEROU0xJQlMpICQoTElCQVNTVUFOX0xJQlMpIFwKLSAJJChMSUJHQ1JZUFRfTElCUykgJChLU0JBX0xJQlMpICQoTlBUSF9MSUJTKSBcCi0tCSQoTlRCVExTX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCSU5UTCkgJChMSUJJQ09OVikKLSsJJChOVEJUTFNfTElCUykgJChMSUJHTlVUTFNfTElCUykgJChMSUJJTlRMKSAkKExJQklDT05WKSBcCi0rCSQoR1BHX0VSUk9SX0xJQlMpCi0gaWYgVVNFX0xEQVAKLSBkaXJtbmdyX0xEQUREICs9ICQobGRhcGxpYnMpCi0gZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTU4NjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Vc2UgcGtnLWNvbmZpZyB0byBmaW5kIHB0aCBpbnN0ZWFkIG9mIHB0aC1jb25maWcuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi1bbm90IHN1Ym1pdHRlZCBidXQgdGhleSd2ZSBiZWVuIGNsZWFyIHRoZXkgZG9uJ3Qgd2FudCBhIHBrZy1jb25maWcgZGVwZW5kZW5jeV0KLQotUlAgMjAxNC81LzIyCi0KLUluZGV4OiBnbnVwZy0yLjEuMC9tNC9nbnVwZy1wdGgubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVwZy0yLjEuMC5vcmlnL200L2dudXBnLXB0aC5tNAotKysrIGdudXBnLTIuMS4wL200L2dudXBnLXB0aC5tNAotQEAgLTE3LDMzICsxNyw5IEBAIGRubCBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQotICMgVGFrZW4gYW5kIG1vZGlmaWVkIGZyb20gdGhlIG00IG1hY3JvcyB3aGljaCBjb21lIHdpdGggUHRoLgotIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCi0gICBbCi0tICAgIF9wdGhfdmVyc2lvbj1gJFBUSF9DT05GSUcgLS12ZXJzaW9uIHwgYXdrICdOUj09MSB7cHJpbnQgWyRdM30nYAotICAgICBfcmVxX3ZlcnNpb249ImlmZWxzZShbJDFdLCwxLjIuMCwkMSkiCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFBUSCwgW3B0aCA+PSAkX3JlcV92ZXJzaW9uXSwgW2hhdmVfcHRoPXllc10sIFtoYXZlX3B0aD1ub10pCi0gCi0tICAgIEFDX01TR19DSEVDS0lORyhmb3IgUFRIIC0gdmVyc2lvbiA+PSAkX3JlcV92ZXJzaW9uKQotLSAgICBmb3IgX3ZhciBpbiBfcHRoX3ZlcnNpb24gX3JlcV92ZXJzaW9uOyBkbwotLSAgICAgICAgZXZhbCAiX3ZhbD1cIlwkJHtfdmFyfVwiIgotLSAgICAgICAgX21ham9yPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDEvJ2AKLS0gICAgICAgIF9taW5vcj1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wyLydgCi0tICAgICAgICBfcnR5cGU9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMy8nYAotLSAgICAgICAgX21pY3JvPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDQvJ2AKLS0gICAgICAgIGNhc2UgJF9ydHlwZSBpbgotLSAgICAgICAgICAgICJhIiApIF9ydHlwZT0wIDs7Ci0tICAgICAgICAgICAgImIiICkgX3J0eXBlPTEgOzsKLS0gICAgICAgICAgICAiLiIgKSBfcnR5cGU9MiA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgX2hleD1gZWNobyBkdW1teSB8IGF3ayAneyBwcmludGYoIiVkJTAyZCUxZCUwMmQiLCBtYWpvciwgbWlub3IsIHJ0eXBlLCBtaWNybyk7IH0nIFwKLS0gICAgICAgICAgICAgICJtYWpvcj0kX21ham9yIiAibWlub3I9JF9taW5vciIgInJ0eXBlPSRfcnR5cGUiICJtaWNybz0kX21pY3JvImAKLS0gICAgICAgIGV2YWwgIiR7X3Zhcn1faGV4PVwiXCRfaGV4XCIiCi0tICAgIGRvbmUKLS0gICAgaGF2ZV9wdGg9bm8KLS0gICAgaWYgdGVzdCAiLiRfcHRoX3ZlcnNpb25faGV4IiAhPSAuOyB0aGVuCi0tICAgICAgICBpZiB0ZXN0ICIuJF9yZXFfdmVyc2lvbl9oZXgiICE9IC47IHRoZW4KLS0gICAgICAgICAgICBpZiB0ZXN0ICRfcHRoX3ZlcnNpb25faGV4IC1nZSAkX3JlcV92ZXJzaW9uX2hleDsgdGhlbgotLSAgICAgICAgICAgICAgICBoYXZlX3B0aD15ZXMKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLSAgICAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4KLSAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBQVEggaW5zdGFsbGF0aW9uIGlzIHNhbmVdKQotQEAgLTUxLDkgKzI3LDkgQEAgQUNfREVGVU4oW0dOVVBHX1BUSF9WRVJTSU9OX0NIRUNLXSwKLSAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfY2ZsYWdzPSRDRkxBR1MKLSAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfbGRmbGFncz0kTERGTEFHUwotICAgICAgICAgIF9nbnVwZ19wdGhfc2F2ZV9saWJzPSRMSUJTCi0tICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIGAkUFRIX0NPTkZJRyAtLWNmbGFnc2AiCi0tICAgICAgICAgTERGTEFHUz0iJExERkxBR1MgYCRQVEhfQ09ORklHIC0tbGRmbGFnc2AiCi0tICAgICAgICAgTElCUz0iJExJQlMgYCRQVEhfQ09ORklHIC0tbGlicyAtLWFsbGAiCi0rICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRQVEhfQ0ZMQUdTIgotKyAgICAgICAgIExERkxBR1M9IiRMREZMQUdTICRQVEhfTERGTEFHUyIKLSsgICAgICAgICBMSUJTPSIkTElCUyAkUFRIX0xJQlMiCi0gICAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHB0aC5oPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbIHB0aF9pbml0ICgpO11dKV0sCi1AQCAtODAsMjYgKzU2LDEzIEBAIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCi0gIyBQVEhfQ0xGQUdTIGFuZCBQVEhfTElCUyBhcmUgQVNfU1VCU1QuCi0gIwotIEFDX0RFRlVOKFtHTlVQR19QQVRIX1BUSF0sCi0tWyBBQ19BUkdfV0lUSChwdGgtcHJlZml4LAotLSAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLXB0aC1wcmVmaXg9UEZYXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIEdOVSBQdGggaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKLS0gICAgIHB0aF9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIHB0aF9jb25maWdfcHJlZml4PSIiKQotLSAgaWYgdGVzdCB4JHB0aF9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCi0tICAgICBQVEhfQ09ORklHPSIkcHRoX2NvbmZpZ19wcmVmaXgvYmluL3B0aC1jb25maWciCi0tICBmaQotLSAgQUNfUEFUSF9QUk9HKFBUSF9DT05GSUcsIHB0aC1jb25maWcsIG5vKQotK1sKLSAgIHRtcD1pZmVsc2UoWyQxXSwgLDEuMy43LCQxKQotLSAgaWYgdGVzdCAiJFBUSF9DT05GSUciICE9ICJubyI7IHRoZW4KLS0gICAgR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0soJHRtcCkKLS0gICAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4gICAgICAKLS0gICAgICAgUFRIX0NGTEFHUz1gJFBUSF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgICAgIFBUSF9MSUJTPWAkUFRIX0NPTkZJRyAtLWxkZmxhZ3NgCi0tICAgICAgIFBUSF9MSUJTPSIkUFRIX0xJQlMgYCRQVEhfQ09ORklHIC0tbGlicyAtLWFsbGAiCi0tICAgICAgIEFDX0RFRklORShIQVZFX1BUSCwgMSwKLSsgIEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKCR0bXApCi0rICBpZiB0ZXN0ICRoYXZlX3B0aCA9IHllczsgdGhlbgotKyAgICAgIEFDX0RFRklORShIQVZFX1BUSCwgMSwKLSAgICAgICAgICAgICAgICAgW0RlZmluZWQgaWYgdGhlIEdOVSBQdGggaXMgYXZhaWxhYmxlXSkKLS0gICAgZmkKLSAgIGZpCi0gICBBQ19TVUJTVChQVEhfQ0ZMQUdTKQotICAgQUNfU1VCU1QoUFRIX0xJQlMpCi0gXSkKLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy91c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmRiZjFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy91c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29wZW5lbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi0KLUluZGV4OiBnbnVwZy0yLjEuMC9tNC9ucHRoLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251cGctMi4xLjAub3JpZy9tNC9ucHRoLm00Ci0rKysgZ251cGctMi4xLjAvbTQvbnB0aC5tNAotQEAgLTE3LDEwICsxNywxMCBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTlBUSF9DT05GSUddLAotICAgaWYgdGVzdCAieCRucHRoX2NvbmZpZ19wcmVmaXgiICE9IHggOyB0aGVuCi0gICAgICAgTlBUSF9DT05GSUc9IiRucHRoX2NvbmZpZ19wcmVmaXgvYmluL25wdGgtY29uZmlnIgotICAgZmkKLS0gIEFDX1BBVEhfUFJPRyhOUFRIX0NPTkZJRywgbnB0aC1jb25maWcsIG5vKQotKyAgQUNfUEFUSF9QUk9HKFBLR0NPTkZJRywgcGtnLWNvbmZpZywgbm8pCi0gCi0tICBpZiB0ZXN0ICIkTlBUSF9DT05GSUciICE9ICJubyIgOyB0aGVuCi0tICAgIG5wdGhfdmVyc2lvbj1gJE5QVEhfQ09ORklHIC0tdmVyc2lvbmAKLSsgIGlmIHRlc3QgIiRQS0dDT05GSUciICE9ICJubyIgOyB0aGVuCi0rICAgIG5wdGhfdmVyc2lvbj1gJFBLR0NPTkZJRyAtLW1vZHZlcnNpb24gbnB0aGAKLSAgIGZpCi0gICBucHRoX3ZlcnNpb25fbWFqb3I9YGVjaG8gJG5wdGhfdmVyc2lvbiB8IFwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMS8nYAotQEAgLTQ1LDcgKzQ1LDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTlBUSF0sCi0gCi0gICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIE5QVEggLSB2ZXJzaW9uID49ICRtaW5fbnB0aF92ZXJzaW9uKQotICAgb2s9bm8KLS0gIGlmIHRlc3QgIiROUFRIX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLSsgIGlmIHRlc3QgIiRQS0dDT05GSUciICE9ICJubyIgOyB0aGVuCi0gICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX25wdGhfdmVyc2lvbiB8IFwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKLSAgICAgcmVxX21pbm9yPWBlY2hvICRtaW5fbnB0aF92ZXJzaW9uIHwgXAotQEAgLTY2LDI4ICs2Niw5IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAotICAgZmkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoW3llcyAoJG5wdGhfdmVyc2lvbildKQotLSAgZWxzZQotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgTlBUSCwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLS0gICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0tICAgICBpZiB0ZXN0ICIkcmVxX25wdGhfYXBpIiAtZ3QgMCA7IHRoZW4KLS0gICAgICAgIHRtcD1gJE5QVEhfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotLSAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0tICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW05QVEggQVBJIHZlcnNpb25dKQotLSAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ucHRoX2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLS0gICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbb2theV0pCi0tICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgIG9rPW5vCi0tICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW2RvZXMgbm90IG1hdGNoLiB3YW50PSRyZXFfbnB0aF9hcGkgZ290PSR0bXBdKQotLSAgICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgICBmaQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIE5QVEhfQ0ZMQUdTPWAkTlBUSF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgIE5QVEhfTElCUz1gJE5QVEhfQ09ORklHIC0tbGlic2AKLSsgICAgTlBUSF9DRkxBR1M9YCRQS0dDT05GSUcgLS1jZmxhZ3MgbnB0aGAKLSsgICAgTlBUSF9MSUJTPWAkUEtHQ09ORklHIC0tbGlicyBucHRoYAotKyAgICBBQ19NU0dfV0FSTihbW0dPVCBIRVJFIC0gJE5QVEhfTElCUyBdXSkKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgbnB0aF9jb25maWdfaG9zdD1gJE5QVEhfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCi0gICAgIGlmIHRlc3QgeCIkbnB0aF9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCi1AQCAtMTAzLDYgKzg0LDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTlBUSF0sCi0gICAgICAgZmkKLSAgICAgZmkKLSAgIGVsc2UKLSsgICAgQUNfTVNHX1JFU1VMVChubykKLSAgICAgTlBUSF9DRkxBR1M9IiIKLSAgICAgTlBUSF9MSUJTPSIiCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2MTFhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgotCi1ERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzY3ZjkwOGIwYjM1YzdlYmM2MjE0NGYzNjI3NTdlMWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA0YzZmYWI3ZTU1NjJjZTRiOTE1YjIyMDIwZTM0ZDRjMWEyNTY4NDc2OTBjZjE0OTg0MjI2NGZjN2NlZjk5NCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIC0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gImdudXRscyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzZkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCisKK0RFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZworCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4OWYxNjk0OWZhZTJkMDAzZDM4N2Y0OWU5ZGE0Yjc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0NTE0YTBiZTBmN2ExZmYyNjMxOTMzMzAwMTllYjRiNTNjODJmMGY1ZTIzMGFmM2MxNGRmMzcxMjcxYTQ1ZTYiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKaW5kZXggMWVjYWQxZi4uMjliNWRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYwpAQCAtNDYsNyArNDYsNiBAQAogIgogCiBMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHVhcmdwIC1wdGhyZWFkIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAlmb3IgZGlyIGluIC4gbGliOyBkbwpAQCAtNTksNSArNTgsMyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKIEZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCiBGSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL2NvcnJlY3RfcnBsX2dldHRpbWVvZmRheV9zaWduYXR1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YjAyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gODFiMGYwNGMxNGY2NzNiOTk3NzhkMmU3ZDhlODU0NjFlMGJmMjAxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZhbGVudGluIFBvcGEgPHZhbGVudGluLnBvcGFAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNSBBcHIgMjAxNCAxMzo1ODo1NSArMDMwMAotU3ViamVjdDogW1BBVENIIDEvM10gQ29ycmVjdCBycGxfZ2V0dGltZW9mZGF5IHNpZ25hdHVyZQotCi1DdXJyZW50bHkgd2UgZmFpbCBvbiB1Y2xpYmMgbGlrZSBiZWxvdwotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3Byb2Nmcy5oOjMyOjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0Lmg6MjYsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmg6MzkyLAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2wvc2lnbmFsLmg6NTIsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi9nbC9zeXMvc2VsZWN0Lmg6NTgsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmg6MjIwLAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2wvc3lzL3R5cGVzLmg6MjgsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi9saWIvaW5jbHVkZXMvZ251dGxzL2dudXRscy5oOjQ2LAotfCAgICAgICAgICAgICAgICAgIGZyb20gZXgtY3h4LmNwcDozOgotfCAuLi8uLi9nbC9zeXMvdGltZS5oOjM5Njo2NjogZXJyb3I6IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9uICd2b2lkKiByZXN0cmljdCcKLXwgLi4vLi4vZ2wvc3lzL3RpbWUuaDozOTY6NTA6IGVycm9yOiAncmVzdHJpY3QnIGhhcyBhIHByZXZpb3VzIGRlY2xhcmF0aW9uIGFzICd0aW1ldmFsKiByZXN0cmljdCcKLXwgbWFrZVs0XTogKioqIFtleC1jeHgub10gRXJyb3IgMQotfCBtYWtlWzRdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotCi1HQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCi1zaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCi10aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yawotCi1UaGlzIG9ubHkgaGFwcGVucyBvZiB1Y2xpYmMgc2luY2UgdGhpcyBjb2RlIGlzIG5vdCBleGNlcmNpc2VkIHdpdGgKLWVnbGliYyBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHNhbWUgaXNzdWUgdGhlcmUgdG9vCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBnbC9zeXNfdGltZS5pbi5oIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9zeXNfdGltZS5pbi5oIGIvZ2wvc3lzX3RpbWUuaW4uaAotaW5kZXggNWE4Y2FmMy4uMmRjNTcxOCAxMDA2NDQKLS0tLSBhL2dsL3N5c190aW1lLmluLmgKLSsrKyBiL2dsL3N5c190aW1lLmluLmgKLUBAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKLSAjICAgZGVmaW5lIGdldHRpbWVvZmRheSBycGxfZ2V0dGltZW9mZGF5Ci0gIyAgZW5kaWYKLSBfR0xfRlVOQ0RFQ0xfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSBfR0xfQ1hYQUxJQVNfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOwotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwotICMgZWxzZQotICMgIGlmICFASEFWRV9HRVRUSU1FT0ZEQVlACi0gX0dMX0ZVTkNERUNMX1NZUyAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCi0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQotICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0gIyAgZW5kaWYKLSAvKiBOZWVkIHRvIGNhc3QsIGJlY2F1c2Ugb24gZ2xpYmMgc3lzdGVtcywgYnkgZGVmYXVsdCwgdGhlIHNlY29uZCBhcmd1bWVudCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV6b25lICouICAqLwotIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7Ci0gIyBlbmRpZgotIF9HTF9DWFhBTElBU1dBUk4gKGdldHRpbWVvZmRheSk7Ci0gIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAppbmRleCAwZTFiN2M4Li5hZTE0MWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaApAQCAtMSw3ICsxLDkgQEAKLUZyb20gY2VlODBhZjFmZTkzZjViNzY3NjVhZmVlYmZjYzNiOTAyNzY4ZjVkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI2IE1heSAyMDE1IDIxOjQxOjI0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSB6bGliCitGcm9tIDE4MDgxMDY4YTk3YzAwMDE1YWFiYzVmYTMyMTY2NDk1MTQ1OGVhMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCA5IEp1biAyMDE3IDE1OjIwOjMxICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZyb20gY2VlODBhZjFmZTkzZjViNzY3NjVhZmVlYmZjYzNiOTAyNzY4ZjVkNiBNb24gU2VwIDE3CisgMDA6MDA6MDAgMjAwMSBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPiBEYXRlOiBUdWUsIDI2IE1heQorIDIwMTUgMjE6NDE6MjQgLTA3MDAgU3ViamVjdDogW1BBVENIXSB1c2UgcGtnLWNvbmZpZyB0byBsb2NhdGUgemxpYgogCiBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHNvbWV0aW1lcyBmaW5kIGhvc3QgbGlicyBhbmQgaXMgdGhlcmVmb3JlIG5vdAogcm9idXN0IHdoZW4gY3Jvc3MtY29tcGlsaW5nLiBSZW1vdmUgaXQgZm9yIHpsaWIgYW5kIHVzZSBQS0dfQ0hFQ0tfTU9EVUxFUwpAQCAtMTgsMTUgKzIwLDE5IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKK1JlYmFzZSBvbiBnbnV0bHMgMy41LjEzCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CiAtLS0KLSBjb25maWd1cmUuYWMgfCAyNCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgMjUgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxYjU2MWQ1Li4wYzc4N2RjIDEwMDY0NAoraW5kZXggYzY1MjY4ZS4uZjZhMThhYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTA4LDI1ICs1MDgsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKK0BAIC03MzUsMjggKzczNSwyMSBAQCBBQ19BUkdfV0lUSCh6bGliLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXpsaWJdLAogIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRlIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydF0pCiAgaWYgdGVzdCB4JGFjX3psaWIgIT0geG5vOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoeWVzKQpAQCAtNDksNiArNTUsNyBAQAogLSAgICBlbHNlCiAtICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKIC0gICAgZmkKKy0gICAgTElCWl9QQz0iIgogKyAgUEtHX0NIRUNLX01PRFVMRVMoWkxJQiwgemxpYikKICsgIEhBVkVfTElCWj15ZXMKICsgIEFDX0RFRklORShbSEFWRV9MSUJaXSwgWzFdLCBbemxpYiBpcyBlbmFibGVkXSkKQEAgLTU3LDExICs2NCwxMiBAQAogKyAgQUNfU1VCU1QoTFRMSUJaKQogKyAgaWYgdGVzdCAieCRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSIgPSB4OyB0aGVuCiArICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSJSZXF1aXJlcy5wcml2YXRlOiB6bGliIgotKyAgZWxzZQorICAgZWxzZQorLSAgICBMSUJaX1BDPSRMSUJaCiArICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSIkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUsIHpsaWIiCiAgICBmaQogIGZpCi0gQUNfU1VCU1QoR05VVExTX1JFUVVJUkVTX1BSSVZBVEUpCisgQUNfU1VCU1QoTElCWl9QQykKIC0tIAogMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDdkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBnbnV0bHMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmQ0MWFkODY1NzI5MzNjMjM3OWI0Y2MzMjFhMDk1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY1NDgwYWQxOThkYWQ1YmM3OGUwNzVmNGE0MGM0YTMxNWExYjIwNzI2NjY5MTlkMmQwNWEwOGFlYzEzMDk2IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Zjg0ZGJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb3JyZWN0X3JwbF9nZXR0aW1lb2ZkYXlfc2lnbmF0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwYWIyNWViNmExNTA5MzQ1ZGQwODViYzIxYTM4Nzk1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmIxMGYwYzRlZjE4ZjRlNjRhZDhjZWY1ZGJhZjE0YmU3MzJmNTA5NWE0MWNmMzY2YjRlY2I0MDUwMzgyOTUxIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYzdmMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBBU04uMSBhbmQgREVSIG1hbmlwdWxhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0YXNuMS8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2VuZGxpbmU9ODttZDU9YzM4MDNhM2U4Y2E1YWI1ZWIxZTU5MTJmYWE0MDUzNTEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGRpbnQubTQtcmVpbnRyb2R1Y2UtR05VTElCX09WRVJSSURFU19XSU5UX1QtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA3OTAucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjRmYWZmZGY2Mzk2OWQwZTRlNmRmNDNiOTY3OWU4ZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgxYTRkOWEwZDI1OWYyMTI1NzEzZjJlNTc2NmM1ODA5ZjE1MWIzYTEzOTJmZDkxMzkwZjc4MGI0YjhmNWEwMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTc1NzFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjVjNzI0YmQxZjczYWFmNGEzMTE4MzNlMWNkMjk3YjIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NTNkYTJlNjIxMjU3ZjMzZjViMDUxY2MxMTRkNDE3ZTUyMDZhMDgxOGZlMGIxZWNmZDYxNTNmNzA5MzQ3NTMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjY1NWZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA0ZDcxNGMwOTdlNDk3YjYzZDJlOGIyMmE4MzRjNjcxMDQ1ZTIxNWU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDkgTWFyIDIwMTcgMjE6MzQ6NTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotaW5kZXggZTMyZmQxMi4uNWVjZjZmYiAxMDA2NDQKLS0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTEwMiw2ICsxMDIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0gCWZvciBQWVRIT04gaW4gJChQWVRIT05TKTsgZG8gXAotIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAotIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAotKyAgICAgICAgICAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAotIAkgIC0tcmVjb3JkIGZpbGVzLnR4dCBcCi0gCSAgLS12ZXJib3NlIDsgXAotIAkgIGNhdCBmaWxlcy50eHQgPj4gaW5zdGFsbF9maWxlcy50eHQgOyBcCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkNTViOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA4YzMxN2Y2MTg2YmQzYTlhMWM4MGI0ZDFlODcyYjNkYjk1OTM0YmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE2OjQwOjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCi0gb3V0cHV0Ci0KLVRoZSBsb2dpYyB3YXMgbm90IHdvcmtpbmcgaW4gbXVsdGlsaWIgc2V0dXBzIHdoaWNoIHVzZSBvdGhlcgotZGlyZWN0b3J5IG5hbWVzIHRoYW4gcGxhaW4gL2xpYiBvciAvdXNyL2xpYi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZ3BnbWUtY29uZmlnLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLWNvbmZpZy5pbiBiL3NyYy9ncGdtZS1jb25maWcuaW4KLWluZGV4IGE0ZDE1MmUuLjgzNDI4NjUgMTAwNjQ0Ci0tLS0gYS9zcmMvZ3BnbWUtY29uZmlnLmluCi0rKysgYi9zcmMvZ3BnbWUtY29uZmlnLmluCi1AQCAtMTU0LDcgKzE1NCw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgICAgICAgICAgZm9yIGkgaW4gJGxpYnMgJHRtcF9sICRhc3N1YW5fbGlicyAkZ3BnX2Vycm9yX2xpYnMgJHRtcF94OyBkbwotICAgICAgICAgICAgICAgc2tpcD1ubwotICAgICAgICAgICAgICAgY2FzZSAkaSBpbgotLSAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWJ8LUwvbGliKQotKyAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWIqfC1ML2xpYiopCi0gICAgICAgICAgICAgICAgICAgICAgIHNraXA9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAgICAgICAgLUwqfC1sKikKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGE0M2VlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzAzIEBACitGcm9tIDhhZTE0OTAzNWM5N2QyN2NkMmM2MjQ3MDRkMTY1MTgwNmM1MzU3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIHBrZ2NvbmZpZworCitVcGRhdGUgZ3BnbWUgdG8gdXNlIHBrZ2NvbmZpZyBpbnN0ZWFkIG9mIC1jb25maWcgZmlsZXMgc2luY2UgaXRzCitzaW1wbGVyIGFuZCBsZXNzIGVycm9yIHByb25lIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gbm90IGludGVyZXN0ZWQgaW4gcGtnLWNvbmZpZyBzdXBwb3J0XQorUlAgMjAxNS80LzE3CisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitSZWJhc2UgdG8gMS45LjAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCAgIDEgKworIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgIHwgICA0ICstCisgc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4gfCAgMTUgKysrKysrKworIHNyYy9ncGdtZS5tNCAgICAgICAgICAgIHwgMTE0ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9ncGdtZS5wYy5pbiAgICAgICAgIHwgIDE1ICsrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBkYWM2Y2UuLjZhOWU1MDcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg2Niw2ICs4NjYsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCisgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYworICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKKyBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKKytBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLnBjIHNyYy9ncGdtZS1wdGhyZWFkLnBjKQorIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9NYWtlZmlsZSBsYW5nL2NwcC9zcmMvTWFrZWZpbGUpCisgQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL3NyYy9HcGdtZXBwQ29uZmlnLXczMi5jbWFrZS5pbikKKyBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWcuY21ha2UuaW4pCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBjZTZmMWQ0Li41ZjM4ZmVlIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0xOSwxMiArMTksMTQgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KKyAKKyBFWFRSQV9ESVNUID0gZ3BnbWUtY29uZmlnLmluIGdwZ21lLm00IGxpYmdwZ21lLnZlcnMgQ2hhbmdlTG9nLTIwMTEgXAorLQkgICAgIGdwZ21lLmguaW4gdmVyc2lvbmluZm8ucmMuaW4gZ3BnbWUuZGVmCisrCSAgICAgZ3BnbWUuaC5pbiB2ZXJzaW9uaW5mby5yYy5pbiBncGdtZS5kZWYgZ3BnbWUucGMuaW4gZ3BnbWUtcHRocmVhZC5wYy5pbgorIAorIGJpbl9TQ1JJUFRTID0gZ3BnbWUtY29uZmlnCisgbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCisgbTRkYXRhX0RBVEEgPSBncGdtZS5tNAorIG5vZGlzdF9pbmNsdWRlX0hFQURFUlMgPSBncGdtZS5oCisrcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZworK3BrZ2NvbmZpZ19EQVRBID0gZ3BnbWUucGMgZ3BnbWUtcHRocmVhZC5wYworIAorIGJpbl9QUk9HUkFNUyA9IGdwZ21lLXRvb2wKKyAKK2RpZmYgLS1naXQgYS9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbiBiL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDc0YmJmNgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KK0BAIC0wLDAgKzEsMTUgQEAKKytwcmVmaXg9QHByZWZpeEAKKytleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACisrbGliZGlyPUBsaWJkaXJACisraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKysKKysjIEFQSSBpbmZvCisrYXBpX3ZlcnNpb249QEdQR01FX0NPTkZJR19BUElfVkVSU0lPTkAKKytob3N0PUBHUEdNRV9DT05GSUdfSE9TVEAKKysKKytOYW1lOiBncGdtZQorK0Rlc2NyaXB0aW9uOiBHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIEMgbGFuZ3VhZ2UgbGlicmFyeSB0aGF0IGFsbG93cyB0byBhZGRzdXBwb3J0IGZvciBjcnlwdG9ncmFwaHkgdG8gYSBwcm9ncmFtIChkZXByZWNhdGVkKQorK1ZlcnNpb246IEBWRVJTSU9OQAorK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3BnbWUgLWxwdGhyZWFkCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgorZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS5tNCBiL3NyYy9ncGdtZS5tNAoraW5kZXggNmMyYmU0NC4uZDhhNzVjYiAxMDA2NDQKKy0tLSBhL3NyYy9ncGdtZS5tNAorKysrIGIvc3JjL2dwZ21lLm00CitAQCAtNzksNyArNzksNyBAQCBkbmwgY29uZmlnIHNjcmlwdCBkb2VzIG5vdCBtYXRjaCB0aGUgaG9zdCBzcGVjaWZpY2F0aW9uIHRoZSBzY3JpcHQKKyBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhcm4gdmFyaWFibGUuCisgZG5sCisgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorLVsgQUNfUkVRVUlSRShbX0FNX1BBVEhfR1BHTUVfQ09ORklHXSlkbmwKKytbCisgICB0bXA9aWZlbHNlKFskMV0sICwxOjAuNC4yLCQxKQorICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgcmVxX2dwZ21lX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKK0BAIC04OSwzNiArODksMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorICAgICAgbWluX2dwZ21lX3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEdNRSAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgZWxzZQorLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUUsIFtncGdtZSA+PSAkbWluX2dwZ21lX3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMTI3LDE5ICsxMDMsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorICAgICAgZmkKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBHUEdNRV9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1jZmxhZ3NgCistICAgIEdQR01FX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1saWJzYAorLSAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKKyAgIGVsc2UKKy0gICAgR1BHTUVfQ0ZMQUdTPSIiCistICAgIEdQR01FX0xJQlM9IiIKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCistICBBQ19TVUJTVChHUEdNRV9DRkxBR1MpCistICBBQ19TVUJTVChHUEdNRV9MSUJTKQorIF0pCisgCisgZG5sIEFNX1BBVEhfR1BHTUVfUFRIUkVBRChbTUlOSU1VTS1WRVJTSU9OLAorQEAgLTE0OCw3ICsxMTYsNyBAQCBkbmwgVGVzdCBmb3IgbGliZ3BnbWUgYW5kIGRlZmluZSBHUEdNRV9QVEhSRUFEX0NGTEFHUworIGRubCAgYW5kIEdQR01FX1BUSFJFQURfTElCUy4KKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKKy1bIEFDX1JFUVVJUkUoW19BTV9QQVRIX0dQR01FX0NPTkZJR10pZG5sCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjQuMiwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHJlcV9ncGdtZV9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtMTU4LDM4ICsxMjYsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCisgICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKKyAgIGZpCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIHB0aHJlYWQgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKKy0gIG9rPW5vCistICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICBpZiBgJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIDI+IC9kZXYvbnVsbGAgOyB0aGVuCistICAgICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorLSAgICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICAgIGVsc2UKKy0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUVfUFRIUkVBRCwgW2dwZ21lLXB0aHJlYWQgPj0gJG1pbl9ncGdtZV92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IEdQR01FLCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KKyAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJEdQR01FX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKysgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBncGdtZS1wdGhyZWFkIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMTk4LDE5ICsxNDAsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCisgICAgICBmaQorICAgZmkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPWAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgLS1jZmxhZ3NgCistICAgIEdQR01FX1BUSFJFQURfTElCUz1gJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIC0tbGlic2AKKy0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCisgICBlbHNlCistICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPSIiCistICAgIEdQR01FX1BUSFJFQURfTElCUz0iIgorLSAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKEdQR01FX1BUSFJFQURfQ0ZMQUdTKQorLSAgQUNfU1VCU1QoR1BHTUVfUFRIUkVBRF9MSUJTKQorIF0pCisgCisgCitAQCAtMjI5LDM2ICsxNjMsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfR0xJQl0sCisgICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKKyAgIGZpCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKy0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKKy0gICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRV9HTElCLCBbZ3BnbWUgPj0gJG1pbl9ncGdtZV92ZXJzaW9uIGdsaWItMi4wXSwgW29rPXllc10sIFtvaz1ub10pICAKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMjY3LDE3ICsxNzcsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9HTElCXSwKKyAgICAgIGZpCisgICBmaQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgR1BHTUVfR0xJQl9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tY2ZsYWdzYAorLSAgICBHUEdNRV9HTElCX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tbGlic2AKKy0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCisgICBlbHNlCistICAgIEdQR01FX0dMSUJfQ0ZMQUdTPSIiCistICAgIEdQR01FX0dMSUJfTElCUz0iIgorLSAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKEdQR01FX0dMSUJfQ0ZMQUdTKQorLSAgQUNfU1VCU1QoR1BHTUVfR0xJQl9MSUJTKQorIF0pCitkaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLnBjLmluIGIvc3JjL2dwZ21lLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjY5NTM5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2dwZ21lLnBjLmluCitAQCAtMCwwICsxLDE1IEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2xpYmRpcj1AbGliZGlyQAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrCisrIyBBUEkgaW5mbworK2FwaV92ZXJzaW9uPUBHUEdNRV9DT05GSUdfQVBJX1ZFUlNJT05ACisraG9zdD1AR1BHTUVfQ09ORklHX0hPU1RACisrCisrTmFtZTogZ3BnbWUKKytEZXNjcmlwdGlvbjogR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBDIGxhbmd1YWdlIGxpYnJhcnkgdGhhdCBhbGxvd3MgdG8gYWRkc3VwcG9ydCBmb3IgY3J5cHRvZ3JhcGh5IHRvIGEgcHJvZ3JhbS4KKytWZXJzaW9uOiBAVkVSU0lPTkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGdwZ21lCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjhjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gZmIxNjVjOWJkOTZhY2E4YzllZTNlNDUwOWM5YjZlMzVkMjM4YWQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDI6NDcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZC4KKworZ3BnLWVycm9yLWNvbmZpZyB3YXMgbW9kaWZpZWQgYnkgT0UgdG8gYWx3YXlzIHJldHVybiBhbiBlcnJvci4gIFNvIHdlIHdhbnQKK3RvIGZpbmQgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHJldHJpZXZlIHdoYXRldmVyIGl0IGlzIHdlIG5lZWQuICBJdCB0dXJucworb3V0IHRoYXQgdGhlIHN5c3RlbSBpcyBqdXN0IHRyeWluZyB0byBmaW5kIHRoZSBwYXRoIHRvIHRoZSBncGctZXJyb3IuaCwgd2hpY2gKK3dlIGNhbiBwdWxsIGluIGZyb20gdGhlIFNUQUdJTkdfSU5DIGVudmlyb25tZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NoYW5nZXMgYXJlIHNwZWNpZmljIHRvIE9FXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjkuMAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vc2V0dXAucHkuaW4gYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgoraW5kZXggYmY0ZWZhMy4uN2MzNDQ4NyAxMDA3NTUKKy0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCisrKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgorQEAgLTI0LDcgKzI0LDYgQEAgaW1wb3J0IGdsb2IKKyBpbXBvcnQgc3VicHJvY2VzcworIAorICMgT3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGdwZyBiaW5kaW5ncy4KKy1ncGdfZXJyb3JfY29uZmlnID0gWyJncGctZXJyb3ItY29uZmlnIl0KKyBncGdtZV9jb25maWdfZmxhZ3MgPSBbIi0tdGhyZWFkPXB0aHJlYWQiXQorIGdwZ21lX2NvbmZpZyA9IFsiZ3BnbWUtY29uZmlnIl0gKyBncGdtZV9jb25maWdfZmxhZ3MKKyBncGdtZV9oID0gIiIKK0BAIC01MiwxMyArNTEsNiBAQCBlbHNlOgorICAgICBkZXZudWxsID0gb3Blbihvcy5kZXZudWxsLCAidyIpCisgCisgdHJ5OgorLSAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnX2Vycm9yX2NvbmZpZyArIFsnLS12ZXJzaW9uJ10sCistICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZGV2bnVsbCkKKy1leGNlcHQ6CistICAgIHN5cy5leGl0KCJDb3VsZCBub3QgZmluZCBncGctZXJyb3ItY29uZmlnLiAgIiArCistICAgICAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB0aGUgbGliZ3BnLWVycm9yIGRldmVsb3BtZW50IHBhY2thZ2UuIikKKy0KKy10cnk6CisgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdtZV9jb25maWcgKyBbJy0tdmVyc2lvbiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCisgZXhjZXB0OgorQEAgLTgxLDEyICs3Myw5IEBAIGlmIG5vdCAobWFqb3IgPiAxIG9yIChtYWpvciA9PSAxIGFuZCBtaW5vciA+PSA3KSk6CisgaWYgbm90IGdwZ21lX2g6CisgICAgIGdwZ21lX2ggPSBvcy5wYXRoLmpvaW4oZ2V0Y29uZmlnKCJwcmVmaXgiKVswXSwgImluY2x1ZGUiLCAiZ3BnbWUuaCIpCisgCistZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCistZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQorK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKKyBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgorLSAgICBncGdfZXJyb3JfaCA9IFwKKy0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQorKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKKyAKKyBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzgzMzExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA2MjMzMmVlYzc1MmRkNzkwZjRkZDA3MWRmYjBkYmU4NmJlMzc3MjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjA1OjM0IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworUmViYXNlIHRvIDEuOS4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCBkOTFlYWQ5Li42N2Y3Y2RjIDEwMDY0NAorLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtMTA2LDYgKzEwNiw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbDoKKyAJICBjZCBweXRob24kJHtWRVJTSU9OfS1ncGcgOyBcCisgCSAgJCRQWVRIT04gc2V0dXAucHkgaW5zdGFsbCBcCisgCSAgLS1wcmVmaXggJChERVNURElSKSQocHJlZml4KSBcCisrCSAgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJHtweXRob25kaXJ9IFwKKyAJICAtLXJlY29yZCBmaWxlcy50eHQgXAorIAkgIC0tdmVyYm9zZSA7IFwKKyAJICBjYXQgZmlsZXMudHh0ID4+IC4uL2luc3RhbGxfZmlsZXMudHh0IDsgXAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzA3MTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGNjYmYwMjhlZWE4ODE1ZDNiMTZkNmMzNGI1MjcyNTNhNmIxMDhlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAorU3ViamVjdDogW1BBVENIIDQvNV0gcHl0aG9uIGltcG9ydAorCitEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKK3N5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoZnJvbSBhdXRvY29uZi1hcmNoaXZlIDg4M2EyYWJkKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworUmViYXNlIHRvIDEuOS4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2F4X3B5dGhvbl9kZXZlbC5tNCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL200L2F4X3B5dGhvbl9kZXZlbC5tNCBiL200L2F4X3B5dGhvbl9kZXZlbC5tNAoraW5kZXggYjk5MGQ1Yi4uMzE4YjA4OSAxMDA2NDQKKy0tLSBhL200L2F4X3B5dGhvbl9kZXZlbC5tNAorKysrIGIvbTQvYXhfcHl0aG9uX2RldmVsLm00CitAQCAtMTM3LDcgKzEzNyw3IEBAIHZhcmlhYmxlIHRvIGNvbmZpZ3VyZS4gU2VlIGBgY29uZmlndXJlIC0taGVscCcnIGZvciByZWZlcmVuY2UuCisgCSMKKyAJQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIGRpc3R1dGlscyBQeXRob24gcGFja2FnZV0pCisgCWFjX2Rpc3R1dGlsc19yZXN1bHQ9YCRQWVRIT04gLWMgImltcG9ydCBkaXN0dXRpbHMiIDI+JjFgCistCWlmIHRlc3QgLXogIiRhY19kaXN0dXRpbHNfcmVzdWx0IjsgdGhlbgorKwlpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuCisgCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorIAllbHNlCisgCQlBQ19NU0dfUkVTVUxUKFtub10pCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNmNjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMDY0YWU0NDQxZTJjMTEzMjk3NDhhMTgxNTc5ODhmOWU5NTNmOTc1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNjo0MDoyNyArMDMwMAorU3ViamVjdDogW1BBVENIIDUvNV0gZ3BnbWUtY29uZmlnOiBza2lwIGFsbCAvbGliKiBvciAvdXNyL2xpYiogZGlyZWN0b3JpZXMgaW4KKyBvdXRwdXQKKworVGhlIGxvZ2ljIHdhcyBub3Qgd29ya2luZyBpbiBtdWx0aWxpYiBzZXR1cHMgd2hpY2ggdXNlIG90aGVyCitkaXJlY3RvcnkgbmFtZXMgdGhhbiBwbGFpbiAvbGliIG9yIC91c3IvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9ncGdtZS1jb25maWcuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZ3BnbWUtY29uZmlnLmluIGIvc3JjL2dwZ21lLWNvbmZpZy5pbgoraW5kZXggYTRkMTUyZS4uODM0Mjg2NSAxMDA2NDQKKy0tLSBhL3NyYy9ncGdtZS1jb25maWcuaW4KKysrKyBiL3NyYy9ncGdtZS1jb25maWcuaW4KK0BAIC0xNTQsNyArMTU0LDcgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgICAgICAgICBmb3IgaSBpbiAkbGlicyAkdG1wX2wgJGFzc3Vhbl9saWJzICRncGdfZXJyb3JfbGlicyAkdG1wX3g7IGRvCisgICAgICAgICAgICAgICBza2lwPW5vCisgICAgICAgICAgICAgICBjYXNlICRpIGluCistICAgICAgICAgICAgICAgICAgLUwvdXNyL2xpYnwtTC9saWIpCisrICAgICAgICAgICAgICAgICAgLUwvdXNyL2xpYip8LUwvbGliKikKKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQxY2FiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLVVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKLXNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtVcHN0cmVhbSBub3QgaW50ZXJlc3RlZCBpbiBwa2ctY29uZmlnIHN1cHBvcnRdCi1SUCAyMDE1LzQvMTcKLQotUmViYXNlIHRvIDEuOC4wCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICB8ICAgMSArCi0gc3JjL01ha2VmaWxlLmFtICAgICAgICAgfCAgIDQgKy0KLSBzcmMvZ3BnbWUtcHRocmVhZC5wYy5pbiB8ICAxNSArKysrKysrCi0gc3JjL2dwZ21lLm00ICAgICAgICAgICAgfCAxMTQgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2dwZ21lLnBjLmluICAgICAgICAgfCAgMTUgKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUucGMuaW4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGE2N2I0OC4uZTQwMmRkMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODc1LDYgKzg3NSw3IEBAIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSBzcmMvTWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgc3JjL3ZlcnNpb25pbmZvLnJjCi0gICAgICAgICAgICAgICAgIHNyYy9ncGdtZS5oKQotIEFDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUtY29uZmlnLCBjaG1vZCAreCBzcmMvZ3BnbWUtY29uZmlnKQotK0FDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUucGMgc3JjL2dwZ21lLXB0aHJlYWQucGMpCi0gQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL01ha2VmaWxlIGxhbmcvY3BwL3NyYy9NYWtlZmlsZSkKLSBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWctdzMyLmNtYWtlLmluKQotIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9zcmMvR3BnbWVwcENvbmZpZy5jbWFrZS5pbikKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGNlNmYxZDQuLjVmMzhmZWUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTE5LDEyICsxOSwxNCBAQAotICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgotIAotIEVYVFJBX0RJU1QgPSBncGdtZS1jb25maWcuaW4gZ3BnbWUubTQgbGliZ3BnbWUudmVycyBDaGFuZ2VMb2ctMjAxMSBcCi0tCSAgICAgZ3BnbWUuaC5pbiB2ZXJzaW9uaW5mby5yYy5pbiBncGdtZS5kZWYKLSsJICAgICBncGdtZS5oLmluIHZlcnNpb25pbmZvLnJjLmluIGdwZ21lLmRlZiBncGdtZS5wYy5pbiBncGdtZS1wdGhyZWFkLnBjLmluCi0gCi0gYmluX1NDUklQVFMgPSBncGdtZS1jb25maWcKLSBtNGRhdGFkaXIgPSAkKGRhdGFkaXIpL2FjbG9jYWwKLSBtNGRhdGFfREFUQSA9IGdwZ21lLm00Ci0gbm9kaXN0X2luY2x1ZGVfSEVBREVSUyA9IGdwZ21lLmgKLStwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCi0rcGtnY29uZmlnX0RBVEEgPSBncGdtZS5wYyBncGdtZS1wdGhyZWFkLnBjCi0gCi0gYmluX1BST0dSQU1TID0gZ3BnbWUtdG9vbAotIAotZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ODBhNDhlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgotQEAgLTAsMCArMSwxNSBAQAotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLStsaWJkaXI9QGxpYmRpckAKLStpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotKwotKyMgQVBJIGluZm8KLSthcGlfdmVyc2lvbj1AR1BHTUVfQ09ORklHX0FQSV9WRVJTSU9OQAotK2hvc3Q9QEdQR01FX0NPTkZJR19IT1NUQAotKwotK05hbWU6IGdwZ21lCi0rRGVzY3JpcHRpb246IEdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgQyBsYW5ndWFnZSBsaWJyYXJ5IHRoYXQgYWxsb3dzIHRvIGFkZHN1cHBvcnQgZm9yIGNyeXB0b2dyYXBoeSB0byBhIHByb2dyYW0gKGRlcHJlY2F0ZWQpCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxncGdtZSAtbHB0aHJlYWQKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCi1kaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLm00IGIvc3JjL2dwZ21lLm00Ci1pbmRleCA2YzJiZTQ0Li5kOGE3NWNiIDEwMDY0NAotLS0tIGEvc3JjL2dwZ21lLm00Ci0rKysgYi9zcmMvZ3BnbWUubTQKLUBAIC03OSw3ICs3OSw3IEBAIGRubCBjb25maWcgc2NyaXB0IGRvZXMgbm90IG1hdGNoIHRoZSBob3N0IHNwZWNpZmljYXRpb24gdGhlIHNjcmlwdAotIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KLSBkbmwKLSBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0tWyBBQ19SRVFVSVJFKFtfQU1fUEFUSF9HUEdNRV9DT05GSUddKWRubAotK1sKLSAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MC40LjIsJDEpCi0gICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCi0gICAgICByZXFfZ3BnbWVfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTg5LDM2ICs4OSwxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0gICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKLSAgIGZpCi0gCi0tICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCi0tICBvaz1ubwotLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCi0tICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgIG9rPXllcwotLSAgICBlbHNlCi0tICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRSwgW2dwZ21lID49ICRtaW5fZ3BnbWVfdmVyc2lvbl0sIFtvaz15ZXNdLCBbb2s9bm9dKQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLSAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBHUEdNRSwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0gICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRHUEdNRV9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCi0rICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gZ3BnbWUgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0xMjcsMTkgKzEwMywxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0gICAgICBmaQotICAgZmkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIEdQR01FX0NGTEFHUz1gJEdQR01FX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgR1BHTUVfTElCUz1gJEdQR01FX0NPTkZJRyAtLWxpYnNgCi0tICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQotICAgICBfQU1fUEFUSF9HUEdNRV9DT05GSUdfSE9TVF9DSEVDSwotICAgZWxzZQotLSAgICBHUEdNRV9DRkxBR1M9IiIKLS0gICAgR1BHTUVfTElCUz0iIgotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLS0gIEFDX1NVQlNUKEdQR01FX0NGTEFHUykKLS0gIEFDX1NVQlNUKEdQR01FX0xJQlMpCi0gXSkKLSAKLSBkbmwgQU1fUEFUSF9HUEdNRV9QVEhSRUFEKFtNSU5JTVVNLVZFUlNJT04sCi1AQCAtMTQ4LDcgKzExNiw3IEBAIGRubCBUZXN0IGZvciBsaWJncGdtZSBhbmQgZGVmaW5lIEdQR01FX1BUSFJFQURfQ0ZMQUdTCi0gZG5sICBhbmQgR1BHTUVfUFRIUkVBRF9MSUJTLgotIGRubAotIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX1BUSFJFQURdLAotLVsgQUNfUkVRVUlSRShbX0FNX1BBVEhfR1BHTUVfQ09ORklHXSlkbmwKLStbCi0gICB0bXA9aWZlbHNlKFskMV0sICwxOjAuNC4yLCQxKQotICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotICAgICAgcmVxX2dwZ21lX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC0xNTgsMzggKzEyNiwxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKLSAgICAgIG1pbl9ncGdtZV92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHTUUgcHRocmVhZCAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCi0tICAgIGlmIGAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgMj4gL2Rldi9udWxsYCA7IHRoZW4KLS0gICAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCi0tICAgICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotLSAgICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgb2s9eWVzCi0tICAgICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgotLSAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRV9QVEhSRUFELCBbZ3BnbWUtcHRocmVhZCA+PSAkbWluX2dwZ21lX3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0gICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgotICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lLXB0aHJlYWQgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0xOTgsMTkgKzE0MCwxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKLSAgICAgIGZpCi0gICBmaQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLS0gICAgR1BHTUVfUFRIUkVBRF9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS10aHJlYWQ9cHRocmVhZCAtLWNmbGFnc2AKLS0gICAgR1BHTUVfUFRIUkVBRF9MSUJTPWAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgLS1saWJzYAotLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKLSAgIGVsc2UKLS0gICAgR1BHTUVfUFRIUkVBRF9DRkxBR1M9IiIKLS0gICAgR1BHTUVfUFRIUkVBRF9MSUJTPSIiCi0tICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCi0gICBmaQotLSAgQUNfU1VCU1QoR1BHTUVfUFRIUkVBRF9DRkxBR1MpCi0tICBBQ19TVUJTVChHUEdNRV9QVEhSRUFEX0xJQlMpCi0gXSkKLSAKLSAKLUBAIC0yMjksMzYgKzE2MywxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9HTElCXSwKLSAgICAgIG1pbl9ncGdtZV92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHTUUgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKLS0gIG9rPW5vCi0tICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCi0tICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKLS0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAotLSAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgb2s9eWVzCi0tICAgIGVsc2UKLS0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICBmaQotLSAgZmkKLSsgIFBLR19DSEVDS19NT0RVTEVTKEdQR01FX0dMSUIsIFtncGdtZSA+PSAkbWluX2dwZ21lX3ZlcnNpb24gZ2xpYi0yLjBdLCBbb2s9eWVzXSwgW29rPW5vXSkgIAotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLSAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBHUEdNRSwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0gICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRHUEdNRV9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCi0rICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gZ3BnbWUgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0yNjcsMTcgKzE3Nyw5IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX0dMSUJdLAotICAgICAgZmkKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBHUEdNRV9HTElCX0NGTEFHUz1gJEdQR01FX0NPTkZJRyAtLWdsaWIgLS1jZmxhZ3NgCi0tICAgIEdQR01FX0dMSUJfTElCUz1gJEdQR01FX0NPTkZJRyAtLWdsaWIgLS1saWJzYAotLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKLSAgIGVsc2UKLS0gICAgR1BHTUVfR0xJQl9DRkxBR1M9IiIKLS0gICAgR1BHTUVfR0xJQl9MSUJTPSIiCi0tICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCi0gICBmaQotLSAgQUNfU1VCU1QoR1BHTUVfR0xJQl9DRkxBR1MpCi0tICBBQ19TVUJTVChHUEdNRV9HTElCX0xJQlMpCi0gXSkKLWRpZmYgLS1naXQgYS9zcmMvZ3BnbWUucGMuaW4gYi9zcmMvZ3BnbWUucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iNjk1MzlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZ3BnbWUucGMuaW4KLUBAIC0wLDAgKzEsMTUgQEAKLStwcmVmaXg9QHByZWZpeEAKLStleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0rbGliZGlyPUBsaWJkaXJACi0raW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSsKLSsjIEFQSSBpbmZvCi0rYXBpX3ZlcnNpb249QEdQR01FX0NPTkZJR19BUElfVkVSU0lPTkAKLStob3N0PUBHUEdNRV9DT05GSUdfSE9TVEAKLSsKLStOYW1lOiBncGdtZQotK0Rlc2NyaXB0aW9uOiBHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIEMgbGFuZ3VhZ2UgbGlicmFyeSB0aGF0IGFsbG93cyB0byBhZGRzdXBwb3J0IGZvciBjcnlwdG9ncmFwaHkgdG8gYSBwcm9ncmFtLgotK1ZlcnNpb246IEBWRVJTSU9OQAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3BnbWUKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3B5dGhvbi1pbXBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWltcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFiNzdhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWltcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURvbid0IGNoZWNrIGZvciBvdXRwdXQgb24gc3RkZXJyIHRvIGtub3cgaWYgYW4gaW1wb3J0IHdvcmtlZCwgaG9zdCBpbnB1dHJjIGFuZAotc3lzcm9vdCByZWFkbGluZSBjYW4gY2F1c2Ugd2FybmluZ3Mgb24gc3RkZXJyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChmcm9tIGF1dG9jb25mLWFyY2hpdmUgODgzYTJhYmQpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbTQvYXhfcHl0aG9uX2RldmVsLm00IGIvbTQvYXhfcHl0aG9uX2RldmVsLm00Ci1pbmRleCBiOTkwZDViLi4zMThiMDg5IDEwMDY0NAotLS0tIGEvbTQvYXhfcHl0aG9uX2RldmVsLm00Ci0rKysgYi9tNC9heF9weXRob25fZGV2ZWwubTQKLUBAIC0xMzcsNyArMTM3LDcgQEAgdmFyaWFibGUgdG8gY29uZmlndXJlLiBTZWUgYGBjb25maWd1cmUgLS1oZWxwJycgZm9yIHJlZmVyZW5jZS4KLSAJIwotIAlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgZGlzdHV0aWxzIFB5dGhvbiBwYWNrYWdlXSkKLSAJYWNfZGlzdHV0aWxzX3Jlc3VsdD1gJFBZVEhPTiAtYyAiaW1wb3J0IGRpc3R1dGlscyIgMj4mMWAKLS0JaWYgdGVzdCAteiAiJGFjX2Rpc3R1dGlsc19yZXN1bHQiOyB0aGVuCi0rCWlmIHRlc3QgJD8gLWVxIDA7IHRoZW4KLSAJCUFDX01TR19SRVNVTFQoW3llc10pCi0gCWVsc2UKLSAJCUFDX01TR19SRVNVTFQoW25vXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9weXRob24tbGFuZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzJlNDI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9weXRob24tbGFuZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1ncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCi0KLWdwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuICBTbyB3ZSB3YW50Ci10byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdCBpcyB3ZSBuZWVkLiAgSXQgdHVybnMKLW91dCB0aGF0IHRoZSBzeXN0ZW0gaXMganVzdCB0cnlpbmcgdG8gZmluZCB0aGUgcGF0aCB0byB0aGUgZ3BnLWVycm9yLmgsIHdoaWNoCi13ZSBjYW4gcHVsbCBpbiBmcm9tIHRoZSBTVEFHSU5HX0lOQyBlbnZpcm9ubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ3BnbWUtMS44LjAvbGFuZy9weXRob24vc2V0dXAucHkuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncGdtZS0xLjguMC5vcmlnL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi0rKysgZ3BnbWUtMS44LjAvbGFuZy9weXRob24vc2V0dXAucHkuaW4KLUBAIC0yNCw3ICsyNCw2IEBAIGltcG9ydCBnbG9iCi0gaW1wb3J0IHN1YnByb2Nlc3MKLSAKLSAjIE91dC1vZi10cmVlIGJ1aWxkIG9mIHRoZSBncGcgYmluZGluZ3MuCi0tZ3BnX2Vycm9yX2NvbmZpZyA9IFsiZ3BnLWVycm9yLWNvbmZpZyJdCi0gZ3BnbWVfY29uZmlnX2ZsYWdzID0gWyItLXRocmVhZD1wdGhyZWFkIl0KLSBncGdtZV9jb25maWcgPSBbImdwZ21lLWNvbmZpZyJdICsgZ3BnbWVfY29uZmlnX2ZsYWdzCi0gZ3BnbWVfaCA9ICIiCi1AQCAtNTIsMTMgKzUxLDYgQEAgZWxzZToKLSAgICAgZGV2bnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKQotIAotIHRyeToKLS0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ19lcnJvcl9jb25maWcgKyBbJy0tdmVyc2lvbiddLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCi0tZXhjZXB0OgotLSAgICBzeXMuZXhpdCgiQ291bGQgbm90IGZpbmQgZ3BnLWVycm9yLWNvbmZpZy4gICIgKwotLSAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCi0tCi0tdHJ5OgotICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotIGV4Y2VwdDoKLUBAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWluCi0gaWYgbm90IGdwZ21lX2g6Ci0gICAgIGdwZ21lX2ggPSBvcy5wYXRoLmpvaW4oZ2V0Y29uZmlnKCJwcmVmaXgiKVswXSwgImluY2x1ZGUiLCAiZ3BnbWUuaCIpCi0gCi0tZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCi0tZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQotK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKLSBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgotLSAgICBncGdfZXJyb3JfaCA9IFwKLS0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQotKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKLSAKLSBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRkZjZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKLURFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT0wZjcwNTk2NjVjNGI3ODk3ZjRmNGQwY2I5M2FhOWY5OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWltcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcyMmE0MTUzOTA0YjliNWRjMTU0ODVhMjJkMjkyNjNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5NjA5NzI1N2MyY2UyMmU3NDc3NDFmOGZmM2Q3ZTI0ZjZlMjYyMzFmYTE5OGE0MWIyYTA3MmU2MmQxZTVkMzMiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1YzM0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjkuMC5iYgpAQCAtMCwwICsxLDc3IEBACitTVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKK0RFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT05ZDE1N2QwOGE2OTA1OTM0NGU2ZjgyYWJkMmQyNTc4MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTAwYmI4ZWYwNGQxZDA1ZDVhMGYxOWUxNDM4NTRjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjI5ZmVkYjhiZmFkNzc1ZTcwZWFmYWM1YjA1OTA2MjE2ODNiMmQ5ODY5ZGI5OTQ1NjhlNjQwMWY0MDM0Y2ViIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IicKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnICR7UFlUSE9OX0lOSEVSSVR9CisKK2V4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jcHAiCitQQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKKworRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCitGSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKKyIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQvcHl0aG9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKaW5kZXggZmU0ODEwMS4uYTFlZjllYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwpAQCAtMTUsOCArMTUsNiBAQAogU1BEWF9TID0gIiR7V09SS0RJUn0vaWN1IgogU1RBR0lOR19JQ1VfRElSX05BVElWRSA9ICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9LyR7QlBOfS8ke1BWfSIKIAotQ1BQRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRFVfVElNRVpPTkU9MCIKLQogQklOQ09ORklHID0gIiR7YmluZGlyfS9pY3UtY29uZmlnIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTllZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGZjODNjZDgzMjcyNWQzOTY4MDExZjExODYzN2I5ZjVkMjEyZTg3MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE2OjUxOjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZWQgcmVkdW5kYW50IFVWZWN0b3IgZW50cnkgY2xlYW4gdXAgZnVuY3Rpb24gY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDk1MgorCitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBpMThuL3pvbmVtZXRhLmNwcCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pMThuL3pvbmVtZXRhLmNwcCBiL2kxOG4vem9uZW1ldGEuY3BwCitpbmRleCA4NGE5NjU3Li5lMTYzYjAwIDEwMDY0NAorLS0tIGEvaTE4bi96b25lbWV0YS5jcHAKKysrKyBiL2kxOG4vem9uZW1ldGEuY3BwCitAQCAtNjkwLDcgKzY5MCw2IEBAIFpvbmVNZXRhOjpjcmVhdGVNZXRhem9uZU1hcHBpbmdzKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnR6aWQpIHsKKyAgICAgICAgICAgICAgICAgICAgIG16TWFwcGluZ3MgPSBuZXcgVVZlY3RvcihkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeSwgTlVMTCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtek1hcHBpbmdzOworLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZU9sc29uVG9NZXRhTWFwcGluZ0VudHJ5KGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB1cHJ2X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgfQorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoCmluZGV4IDZlNDA2NTkuLmU3NThhNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2gKQEAgLTgsMTQgKzgsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSB0b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorIHRvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwIGIvdG9vbHMvcGtnZGF0YS9wa2dkYXRhLmNwcAoraW5kZXggNjAxNjdkZC4uNTA2ZGQzMiAxMDA2NDQKIC0tLSBhL3Rvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAKICsrKyBiL3Rvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAKLUBAIC0xMDE5LDcgKzEwMTksNyBAQCBub3JtYWxfc3ltbGlua19tb2RlOgorQEAgLTEwODQsNyArMTA4NCw3IEBAIG5vcm1hbF9zeW1saW5rX21vZGU6CiAgCiAgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxMaWJyYXJ5KGNvbnN0IGNoYXIgKmluc3RhbGxEaXIsIGNvbnN0IGNoYXIgKnRhcmdldERpciwgVUJvb2wgbm9WZXJzaW9uKSB7CiAgICAgIGludDMyX3QgcmVzdWx0ID0gMDsKQEAgLTI0LDYgKzI2LDI0IEBACiAgCiAgICAgIHNwcmludGYoY21kLCAiY2QgJXMgJiYgJXMgJXMgJXMlcyVzIiwKICAgICAgICAgICAgICB0YXJnZXREaXIsCitAQCAtMTE1Miw3ICsxMTUyLDcgQEAgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxMaWJyYXJ5KGNvbnN0IGNoYXIgKmluc3RhbGxEaXIsIGNvbnN0IGNoYXIgKnRhcmdldERpciwKKyAKKyBzdGF0aWMgaW50MzJfdCBwa2dfaW5zdGFsbENvbW1vbk1vZGUoY29uc3QgY2hhciAqaW5zdGFsbERpciwgY29uc3QgY2hhciAqZmlsZU5hbWUpIHsKKyAgICAgaW50MzJfdCByZXN1bHQgPSAwOworLSAgICBjaGFyIGNtZFtTTUFMTF9CVUZGRVJfTUFYX1NJWkVdID0gIiI7CisrICAgIGNoYXIgY21kW0xBUkdFX0JVRkZFUl9NQVhfU0laRV0gPSAiIjsKKyAKKyAgICAgaWYgKCFUX0ZpbGVTdHJlYW1fZmlsZV9leGlzdHMoaW5zdGFsbERpcikpIHsKKyAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworQEAgLTExODQsNyArMTE4NCw3IEBAIHN0YXRpYyBpbnQzMl90IHBrZ19pbnN0YWxsQ29tbW9uTW9kZShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICpmaWxlTmFtCisgI2VuZGlmCisgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxGaWxlTW9kZShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICpzcmNEaXIsIGNvbnN0IGNoYXIgKmZpbGVMaXN0TmFtZSkgeworICAgICBpbnQzMl90IHJlc3VsdCA9IDA7CistICAgIGNoYXIgY21kW1NNQUxMX0JVRkZFUl9NQVhfU0laRV0gPSAiIjsKKysgICAgY2hhciBjbWRbTEFSR0VfQlVGRkVSX01BWF9TSVpFXSA9ICIiOworIAorICAgICBpZiAoIVRfRmlsZVN0cmVhbV9maWxlX2V4aXN0cyhpbnN0YWxsRGlyKSkgeworICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAtLSAKLTEuNy4xMC40CisxLjkuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc2ODRhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTFiM2I3NWMxNzc3Y2Q0OWFkNWM2YTI0Y2QzMzhjZmM5IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYWMyMTJiMzJiN2VjN2FiMDA3YTEyZGZmMWYzYWVhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjBhNDQxMDE1M2E5YjIwZGUwZTIwYzdkOGI2NjA0OWE3MmFlZjI0NGI1MzY4M2QwZDc1MjEzNzE2ODNkYTBjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiMWJlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIKQEAgLTAsMCArMSwzMCBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWZlOWUxZjJjNTAwNDY2ZDhmMThkZjJjZDA2OGU0Yjc0IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0OTUyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NDkyM2ZhOWZhYjViMmI4M2YyMzVmYjcyNTIzZGUzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTMyZmRhZjkzNzk0MjlkMDA0MDA1MjE3ZjEwZTAwYjdkMjMxOWQwZmVhMjJiZGZkZGVmODk5MWM0NWI3NWZlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MzZhMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTQ0ODQ3NWQwODc3NTZiNzgzOTFiOGM1M2M1YjgzYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMWY0ZjNjZWE4ZmUwOWY1YjUzNzg0NTIyMzAzYTBlMWU3ZDA4Mzk2NGVjYWYxYzc1YjE0NDFkNGQ5ZWM2YWVlIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzZDUzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjliYTE3M2I2OWQ0MzYwMDAzNDE0ZjIzODM3NTk3YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczMzVlMDMwMWNkNzdjZDRlZTAxOWJmNWQzNzA5YWE3OTMwOWQ0OWRkNjZlODViYTM1MGNhZjY3ZTAwYjAwY2QiCisKKyMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKKyMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMwYzFiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCi1TRUNUSU9OID0gIm9wdGlvbmFsIgotUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgotTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCi0JCSAgICIKLQotU1JDX1VSSSA9ICJcCi0JaHR0cDovL3d3dy5pdm1haXNvZnQuY29tL19iaW4vYXRvbWljX29wcy9saWJhdG9taWNfb3BzLSR7UFZ9LnRhci5neiBcCi0JZmlsZTovLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2ggXAotCSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyNmQ4MDRiYWFlMTJjMzcyOTY3YTZkMTgzZTI1YWYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmMjEwYTYwMGRkMWJlY2JmNzkzNmRkMjkxNGNmNWY1ZDMzNTYwNDY5MDQ4NDhkY2ZkMjdkMGM4YjEyYjZmOGYiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJhdG9taWNfb3BzLSR7UFZ9IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgdGhvc2UgY29udGFpbiBvbmx5IGRvY3MsIG5vdCBuZWNlc3NhcnkgZm9yIG5vdy4KLQlpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7ZG9jZGlyfQotCW12ICR7RH0ke2RhdGFkaXJ9L2xpYmF0b21pY19vcHMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2M2Q4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCitTRUNUSU9OID0gIm9wdGlvbmFsIgorUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCisJCSAgICIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI3M2M2MGM1ZWYxZWQzNzAxMTE1NDllZTVhYWI2ZDQwMjBiYTcwZWQ0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaAppbmRleCA4M2NlN2M4Li42MGRhMTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2gKQEAgLTE1LDE3ICsxNSwxNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggZTRkNmU0YS4uYzcwMWQ5NCAxMDA2NDQKK2luZGV4IDI4MTkyYzAuLmEyMjc4N2QgMTAwNjQ0CiAtLS0gYS9tYW4vTWFrZWZpbGUuYW0KICsrKyBiL21hbi9NYWtlZmlsZS5hbQotQEAgLTI5LDcgKzI5LDYgQEAgZGlzdF9tYW5fTUFOUyA9IFwKLSAJZmxvcGVuLjMgXAotIAlmbXRjaGVjay4zIFwKLSAJZnBhcnNlbG4uMyBcCitAQCAtMTY4LDcgKzE2OCw2IEBAIGRpc3RfbWFuX01BTlMgPSBcCisgCWZtdGNoZWNrLjNic2QgXAorIAlmcGFyc2Vsbi4zYnNkIFwKKyAJZnB1cmdlLjNic2QgXAogLQlmdW5vcGVuLjNic2QgXAotIAlnZXRic2l6ZS4zIFwKLSAJZ2V0bW9kZS4zIFwKLSAJZ2V0cGVlcmVpZC4zIFwKKyAJZ2V0YnNpemUuM2JzZCBcCisgCWdldG1vZGUuM2JzZCBcCisgCWdldHBlZXJlaWQuM2JzZCBcCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCiBpbmRleCBhZDgzZGJmLi4xMzIyNWEzIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCkBAIC0zOSw3ICszOSw3IEBACiAgCWdldHBlZXJlaWQuYyBcCiAgCWhhc2gvbWQ1LmMgXAogZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUuYW0gYi90ZXN0L01ha2VmaWxlLmFtCi1pbmRleCBhNzVjOGZmLi5lM2ExZDQxIDEwMDY0NAoraW5kZXggZDg2NTM5YS4uYjMyZWQyZSAxMDA2NDQKIC0tLSBhL3Rlc3QvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3QvTWFrZWZpbGUuYW0KIEBAIC0zNiw3ICszNiw2IEBAIGNoZWNrX1BST0dSQU1TID0gXApAQCAtNTAsNiArNTAsMyBAQAogIAlmcGFyc2VsbiBcCiAgCWZwdXJnZSBcCiAgCW1kNSBcCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAzLUZpeC1idWlsZC1icmVha3MtZHVlLXRvLW1pc3NpbmctYS5vdXQuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDMtRml4LWJ1aWxkLWJyZWFrcy1kdWUtdG8tbWlzc2luZy1hLm91dC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzZkOTQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDMtRml4LWJ1aWxkLWJyZWFrcy1kdWUtdG8tbWlzc2luZy1hLm91dC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLUZyb20gYTFiOTNjMjUzMTE4MzRmMmY0MTFlOWJmZTJlNjE2ODk5YmEyMTIyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDYgTm92IDIwMTYgMTA6MjM6NTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCBidWlsZCBicmVha3MgZHVlIHRvIG1pc3NpbmcgYS5vdXQuaAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGluY2x1ZGUvYnNkL25saXN0LmggICAgICAgICAgICAgICAgICAgICB8ICAxIC0KLSBpbmNsdWRlL2JzZC9ubGlzdC5oID0+IHNyYy9sb2NhbC1hb3V0LmggfCA0NyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBzcmMvbmxpc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLSBjb3B5IGluY2x1ZGUvYnNkL25saXN0LmggPT4gc3JjL2xvY2FsLWFvdXQuaCAoNjMlKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvbmxpc3QuaCBiL2luY2x1ZGUvYnNkL25saXN0LmgKLWluZGV4IDAzODlhYjcuLjljN2UzZDggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9ubGlzdC5oCi0rKysgYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1AQCAtMjgsNyArMjgsNiBAQAotICNkZWZpbmUgTElCQlNEX05MSVNUX0gKLSAKLSAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tI2luY2x1ZGUgPGEub3V0Lmg+Ci0gCi0gLyogX19CRUdJTl9ERUNMUyAqLwotICNpZmRlZiBfX2NwbHVzcGx1cwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9zcmMvbG9jYWwtYW91dC5oCi1zaW1pbGFyaXR5IGluZGV4IDYzJQotY29weSBmcm9tIGluY2x1ZGUvYnNkL25saXN0LmgKLWNvcHkgdG8gc3JjL2xvY2FsLWFvdXQuaAotaW5kZXggMDM4OWFiNy4uMmFkYjkzZSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL25saXN0LmgKLSsrKyBiL3NyYy9sb2NhbC1hb3V0LmgKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICogQ29weXJpZ2h0IMKpIDIwMDkgR3VpbGxlbSBKb3ZlciA8Z3VpbGxlbUBoYWRyb25zLm9yZz4KLSsgKiBDb3B5cmlnaHQgwqkgMjAxNiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1AQCAtMjQsMjAgKzI0LDM3IEBACi0gICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICovCi0gCi0tI2lmbmRlZiBMSUJCU0RfTkxJU1RfSAotLSNkZWZpbmUgTElCQlNEX05MSVNUX0gKLSsjaWZuZGVmIExJQkJTRF9MT0NBTF9BT1VUX0gKLSsjZGVmaW5lIExJQkJTRF9MT0NBTF9BT1VUX0gKLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tI2luY2x1ZGUgPGEub3V0Lmg+Ci0rI2RlZmluZSBOX1VOREYgIDAKLSsjZGVmaW5lIE5fQUJTICAgMgotKyNkZWZpbmUgTl9URVhUICA0Ci0rI2RlZmluZSBOX0RBVEEgIDYKLSsjZGVmaW5lIE5fQlNTICAgOAotKyNkZWZpbmUgTl9GTiAgICAxNQotKyNkZWZpbmUgTl9FWFQgICAxCi0rI2RlZmluZSBOX1RZUEUgIDAzNgotKyNkZWZpbmUgTl9TVEFCICAwMzQwCi0rI2RlZmluZSBOX0lORFIgIDB4YQotKyNkZWZpbmUgTl9TRVRBICAweDE0ICAgIC8qIEFic29sdXRlIHNldCBlbGVtZW50IHN5bWJvbC4gICovCi0rI2RlZmluZSBOX1NFVFQgIDB4MTYgICAgLyogVGV4dCBzZXQgZWxlbWVudCBzeW1ib2wuICAqLwotKyNkZWZpbmUgTl9TRVREICAweDE4ICAgIC8qIERhdGEgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KLSsjZGVmaW5lIE5fU0VUQiAgMHgxQSAgICAvKiBCc3Mgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KLSsjZGVmaW5lIE5fU0VUViAgMHgxQyAgICAvKiBQb2ludGVyIHRvIHNldCB2ZWN0b3IgaW4gZGF0YSBhcmVhLiAgKi8KLSAKLS0vKiBfX0JFR0lOX0RFQ0xTICovCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tZXh0ZXJuIGludCBubGlzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IG5saXN0ICpsaXN0KTsKLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0tLyogX19FTkRfREVDTFMgKi8KLStzdHJ1Y3Qgbmxpc3QKLSt7Ci0rICB1bmlvbgotKyAgICB7Ci0rICAgICAgY2hhciAqbl9uYW1lOwotKyAgICAgIHN0cnVjdCBubGlzdCAqbl9uZXh0OwotKyAgICAgIGxvbmcgbl9zdHJ4OwotKyAgICB9IG5fdW47Ci0rICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsKLSsgIGNoYXIgbl9vdGhlcjsKLSsgIHNob3J0IG5fZGVzYzsKLSsgIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsKLSt9OwotIAotLSNlbmRpZgotKyNlbmRpZiAvKiBMSUJCU0RfTE9DQUxfQU9VVF9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL25saXN0LmMgYi9zcmMvbmxpc3QuYwotaW5kZXggMGNmZmU1NS4uNjI1ZDMxMCAxMDA2NDQKLS0tLSBhL3NyYy9ubGlzdC5jCi0rKysgYi9zcmMvbmxpc3QuYwotQEAgLTQwLDcgKzQwLDExIEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylubGlzdC5jCTguMSAoQmVya2VsZXkpIDYvNC85MyI7Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2lmZGVmIF9fR0xJQkNfXwotICNpbmNsdWRlIDxhLm91dC5oPgotKyNlbHNlCi0rI2RlZmluZSBfX05PX0FfT1VUX1NVUFBPUlQKLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotQEAgLTQ4LDEyICs1MiwxNyBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpbmxpc3QuYwk4LjEgKEJlcmtlbGV5KSA2LzQvOTMiOwotICNpZiAhZGVmaW5lZChfX05PX0FfT1VUX1NVUFBPUlQpCi0gI2RlZmluZSBfTkxJU1RfRE9fQU9VVAotICNlbmRpZgotKwotICNkZWZpbmUgX05MSVNUX0RPX0VMRgotIAotICNpZmRlZiBfTkxJU1RfRE9fRUxGCi0gI2luY2x1ZGUgImxvY2FsLWVsZi5oIgotICNlbmRpZgotIAotKyNpZmRlZiBfTkxJU1RfRE9fRUxGCi0rI2luY2x1ZGUgImxvY2FsLWFvdXQuaCIKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIFNJWkVfVF9NQVggMHhmZmZmZmZmZlUKLSAKLSAjaWZkZWYgX05MSVNUX0RPX0FPVVQKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NWVlMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIkxpYnJhcnkgb2YgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBCU0Qgc3lzdGVtcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB1c2VmdWwgZnVuY3Rpb25zIGNvbW1vbmx5IGZvdW5kIG9uIEJTRCBzeXN0ZW1zLCBcCi0gICAgICAgICAgICAgICBhbmQgbGFja2luZyBvbiBvdGhlcnMgbGlrZSBHTlUgc3lzdGVtcywgdGh1cyBtYWtpbmcgaXQgZWFzaWVyIHRvIHBvcnQgXAotICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCi0gICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCi0jIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKLSMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydAotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKLSMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91Ci0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKLSMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQmVlcndhcmUKLSMgTGljZW5zZTogRXhwYXQKLSMgTGljZW5zZTogSVNDCi0jIExpY2Vuc2U6IElTQy1PcmlnaW5hbAotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCi0jIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYjljODlkODYxOTE1Yjg2NjU1Yjk2ZTVlMzJmYTJhYSIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsICA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1GaXgtYnVpbGQtYnJlYWtzLWR1ZS10by1taXNzaW5nLWEub3V0LmgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTkzNWMxYmI2Y2M5OGE0YTQzY2IxZGEyMjc5NTQ5M2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM0YjYzNGY0ZGZkODY1YjY0ODI2NTBiOGY1MjJjNzBhZTY1YzQ2MzUyOWRlOGJlOTA3YjUzYzg5YzNhMzRhOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyNTQzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCkBAIC0wLDAgKzEsNTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiTGlicmFyeSBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIEJTRCBzeXN0ZW1zIgorREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHVzZWZ1bCBmdW5jdGlvbnMgY29tbW9ubHkgZm91bmQgb24gQlNEIHN5c3RlbXMsIFwKKyAgICAgICAgICAgICAgIGFuZCBsYWNraW5nIG9uIG90aGVycyBsaWtlIEdOVSBzeXN0ZW1zLCB0aHVzIG1ha2luZyBpdCBlYXNpZXIgdG8gcG9ydCBcCisgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKKyAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgorCitIT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKKyMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgorIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0CisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLU5ldEJTRAorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtYXV0aG9yCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS12ZXJiYXRpbQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUGV0ZXItV2VtbQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUmVnZW50cworIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtQ2hyaXN0b3BoZXItRy1EZW1ldHJpb3UKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLU5pZWxzLVByb3ZvcworIyBMaWNlbnNlOiBCU0QtNS1jbGF1c2UtUGV0ZXItV2VtbQorIyBMaWNlbnNlOiBCZWVyd2FyZQorIyBMaWNlbnNlOiBFeHBhdAorIyBMaWNlbnNlOiBJU0MKKyMgTGljZW5zZTogSVNDLU9yaWdpbmFsCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4KKyMgTGljZW5zZTogcHVibGljLWRvbWFpbi1Db2xpbi1QbHVtYgorTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UgJiBJU0MgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4ZmM0ZTY2YmU0NTI2NzE1ZGFiMDljNWZiYTVlOWU4IgorU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgID0gIiBcCisgICAgZmlsZTovLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGFiN2JlYzYzOWFmMTdkMGFhY2I1MDIyMmI0NzkxMTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY3ZmJmOWRmMWY0OWFmMTFmN2Y2ODY2OTEwNTdjOGMwYTc2MTNhZTVhODcwNTc3YmVmOTE1NWRlMzlmOTY4NyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1ncGVyZi0zLjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMGVmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYTA1ZWJhNjhjNDIyMjJmMDI0NjVkN2JhMzc2MDE1OTI2NDMzYzUzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAxMzozNzo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBncGVyZiAzLjEKKworVGhlIGdlbmVyYXRlZCBncGVyZiBmaWxlIHJlZmVycyB0byBzaXplX3Qgd2hpY2ggbmVlZHMgdG8gYmUKK3Byb3ZpZGVkIGJ5IHN0ZGRlZi5oIGluY2x1ZGUuIEFsc28sIGFkanVzdCB0aGUgbWFrZWZpbGUKK3RvIG1hdGNoIHRoZSBkZWNsYXJhdGlvbiBpbiB0aGUgZ3BlcmYgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgbGliY2FwL01ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNhcC9NYWtlZmlsZSBiL2xpYmNhcC9NYWtlZmlsZQoraW5kZXggZDE4OTc3Ny4uMWE1NzIwNiAxMDA2NDQKKy0tLSBhL2xpYmNhcC9NYWtlZmlsZQorKysrIGIvbGliY2FwL01ha2VmaWxlCitAQCAtMjIsNyArMjIsNyBAQCBhbGw6ICQoTUlOTElCTkFNRSkgJChTVEFMSUJOQU1FKSBsaWJjYXAucGMKKyAKKyBpZmVxICgkKEJVSUxEX0dQRVJGKSx5ZXMpCisgVVNFX0dQRVJGX09VVFBVVCA9ICQoR1BFUkZfT1VUUFVUKQorLUlOQ0xVREVfR1BFUkZfT1VUUFVUID0gLWluY2x1ZGUgJChHUEVSRl9PVVRQVVQpCisrSU5DTFVERV9HUEVSRl9PVVRQVVQgPSAtaW5jbHVkZSBzdGRkZWYuaCAtaW5jbHVkZSAkKEdQRVJGX09VVFBVVCkKKyBlbmRpZgorIAorIGxpYmNhcC5wYzogbGliY2FwLnBjLmluCitAQCAtNDEsNyArNDEsNyBAQCBjYXBfbmFtZXMuaDogX21ha2VuYW1lcworIAkuL19tYWtlbmFtZXMgPiBjYXBfbmFtZXMuaAorIAorICQoR1BFUkZfT1VUUFVUKTogY2FwX25hbWVzLmxpc3QuaAorLQlwZXJsIC1lICdwcmludCAic3RydWN0IF9fY2FwX3Rva2VuX3MgeyBjb25zdCBjaGFyICpuYW1lOyBpbnQgaW5kZXg7IH07XG4le1xuY29uc3Qgc3RydWN0IF9fY2FwX3Rva2VuX3MgKl9fY2FwX2xvb2t1cF9uYW1lKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTtcbiV9XG4lJVxuIjsgd2hpbGUgKCQkbCA9IDw+KSB7ICQkbCA9fiBzL1tce1wiXS8vZzsgJCRsID1+IHMvXH0uKi8vIDsgcHJpbnQgJCRsOyB9JyA8ICQ8IHwgZ3BlcmYgLS1pZ25vcmUtY2FzZSAtLWxhbmd1YWdlPUFOU0ktQyAtLXJlYWRvbmx5IC0tbnVsbC1zdHJpbmdzIC0tZ2xvYmFsLXRhYmxlIC0taGFzaC1mdW5jdGlvbi1uYW1lPV9fY2FwX2hhc2hfbmFtZSAtLWxvb2t1cC1mdW5jdGlvbi1uYW1lPSJfX2NhcF9sb29rdXBfbmFtZSIgLWMgLXQgLW0yMCAkKElOREVOVCkgPiAkQAorKwlwZXJsIC1lICdwcmludCAic3RydWN0IF9fY2FwX3Rva2VuX3MgeyBjb25zdCBjaGFyICpuYW1lOyBpbnQgaW5kZXg7IH07XG4le1xuY29uc3Qgc3RydWN0IF9fY2FwX3Rva2VuX3MgKl9fY2FwX2xvb2t1cF9uYW1lKGNvbnN0IGNoYXIgKiwgcmVnaXN0ZXIgc2l6ZV90KTtcbiV9XG4lJVxuIjsgd2hpbGUgKCQkbCA9IDw+KSB7ICQkbCA9fiBzL1tce1wiXS8vZzsgJCRsID1+IHMvXH0uKi8vIDsgcHJpbnQgJCRsOyB9JyA8ICQ8IHwgZ3BlcmYgLS1pZ25vcmUtY2FzZSAtLWxhbmd1YWdlPUFOU0ktQyAtLXJlYWRvbmx5IC0tbnVsbC1zdHJpbmdzIC0tZ2xvYmFsLXRhYmxlIC0taGFzaC1mdW5jdGlvbi1uYW1lPV9fY2FwX2hhc2hfbmFtZSAtLWxvb2t1cC1mdW5jdGlvbi1uYW1lPSJfX2NhcF9sb29rdXBfbmFtZSIgLWMgLXQgLW0yMCAkKElOREVOVCkgPiAkQAorIAorIGNhcF9uYW1lcy5saXN0Lmg6IE1ha2VmaWxlICQoS0VSTkVMX0hFQURFUlMpL2xpbnV4L2NhcGFiaWxpdHkuaAorIAlAZWNobyAiPT4gbWFraW5nICRAIGZyb20gJChLRVJORUxfSEVBREVSUykvbGludXgvY2FwYWJpbGl0eS5oIgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjUuYmIKaW5kZXggMDU4N2U3Ny4uZDYxOWEyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCkBAIC05LDcgKzksOCBAQAogCiBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnN1cmUtdGhlLVhBVFRSX05BTUVfQ0FQUy1pcy1kZWZpbmVkLXdoZW4taXQtaXMtdXNlLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjY2NjZiODM5ZTVkNDZjMmFkMzNmYzhhYTJjZWI1Zjc3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5M2M4YWM1MWU5ODNlZTY3ODIwNTU3MWVmMjcyNDM5ZDgzYWZlNjJkZDhlNDI0ZWExNGFkOTc5MGJjMzUxNjIiCiAKQEAgLTIyLDkgKzIzLDYgQEAKIAkjIG9uIHdoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggPz0KIAlzZWQgLWUgJ3MsOj0sPz0sZycgLWkgTWFrZS5SdWxlcwogCXNlZCAtZSAncyxeQlVJTERfQ0ZMQUdTID89ICQoLipDRkxBR1MpLEJVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUyksJyAtaSBNYWtlLlJ1bGVzCi0KLQkjIGRpc2FibGUgZ3BlcmYgZGV0ZWN0aW9uCi0Jc2VkIC1lICcvc2hlbGwgZ3BlcmYvY2lmZXEgKCx5ZXMpJyAtaSBsaWJjYXAvTWFrZWZpbGUKIH0KIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKQEAgLTM3LDYgKzM1LDcgQEAKICAgbGliPSR7QG9zLnBhdGguYmFzZW5hbWUoJyR7bGliZGlyfScpfSBcCiAgIFJBSVNFX1NFVEZDQVA9bm8gXAogICBEWU5BTUlDPXllcyBcCisgIEJVSUxEX0dQRVJGPXllcyBcCiAiCiAKIEVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGY3OTIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkNhc2NhZGluZyBTdHlsZSBTaGVldCAoQ1NTKSBwYXJzaW5nIGFuZCBtYW5pcHVsYXRpb24gdG9vbGtpdCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NyLXJnYi5jO2VuZGxpbmU9MjI7bWQ1PTMxZDVmMDk0NGQ1NTZjODU4OWQwNGVhNjA1NWZjYzY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NyLXRlc3QtdXRpbHMuYztlbmRsaW5lPTIxO21kNT0yMzgyYzI3OTM0Y2FlMWQzNzkyZmNiMTdhNjE0MmM0ZSIKLQotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDIgemxpYiIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9jcm9jby0wLjYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgYmluY29uZmlnLWRpc2FibGVkCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRhYmMxOTExZGZiZmE4NWY4ZTY4NTljYTQ3ODYzMTY4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMTMyYjUyOGE5NDg1ODZiMGRmYTA1ZDdlOWUwNTk5MDFiY2E1YTNiZTY3NWI2MDcxYTkwYTkwYjgxYWU1YTA1NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYWY3NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQ2FzY2FkaW5nIFN0eWxlIFNoZWV0IChDU1MpIHBhcnNpbmcgYW5kIG1hbmlwdWxhdGlvbiB0b29sa2l0IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3ItcmdiLmM7ZW5kbGluZT0yMjttZDU9MzFkNWYwOTQ0ZDU1NmM4NTg5ZDA0ZWE2MDU1ZmNjNjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY3ItdGVzdC11dGlscy5jO2VuZGxpbmU9MjE7bWQ1PTIzODJjMjc5MzRjYWUxZDM3OTJmY2IxN2E2MTQyYzRlIgorCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMiB6bGliIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2Nyb2NvLTAuNi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBiaW5jb25maWctZGlzYWJsZWQKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjg0NTU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ0Y2U5ZjA2MWY4Zjk1NGJlYTdhZGJhMGNiNzY4YTUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjZWM3ZTlkNjZiMWQzNjkyZjEwYjNiMjBhYTk3ZmIyNWU4NzRhNzg0YzU1NTJhN2IxNjk4MDkxZmVmNWE2ODgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NDBkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjcuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGYxY2ZhZWU4ZDc1ZWEzZmJiZmViOTlhOTg3MzA5NTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFlNTllMzdhMmYwZDM5N2ZmZDdlODNiNzNhZjBlNjM4ZGI4M2I4ZGQwODkwMmVmMGY2NTFhMjFjYzFkZDQyMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODBiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGaXggbWlzc2luZyB0ZXN0IGRpcmVjdG9yeSBjcmVhdGlvbi4KKworR0NDIHVzZWQgaW4gT0UtY29yZSBoYXMgImRlcGVuZGVuY3kgdHJhY2tpbmciIGRpc2FibGVkIGFuZAorbGliZXZlbnQgaGFzIHByb2JsZW0gd2l0aCB0aGlzLgorRHVlIHRvIHJlbW92ZWQgbWFrZWZpbGUuYW0vaW4gZmlsZXMgaW4gdGVzdC9zYW1wbGUvaW5jbHVkZQorZGlyZWN0b3JpZXMsIG91dHB1dCBkaXJlY3RvcmllcyBhcmUgbm90IGNyZWF0ZWQgaW4KK2NvbmZpZ3VyYXRpb24gc3RlcC4gQ29tcGlsYXRpb24gc3RlcCB3aWxsIGZhaWxzLCB3aGVuCit0cnlpbmcgdG8gd3JpdGUgdG8gbm9uLWV4aXN0aW5nIGRpcmVjdG9yeS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPdGhlcl0KK1dvcmthcm91bmQgc3BlY2lmaWMgdG8gb3VyIGJ1aWxkIHN5c3RlbS4KKworU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJldmVudC0yLjEuOC1zdGFibGUvdGVzdC9pbmNsdWRlLmFtIGIvbGliZXZlbnQtMi4xLjgtc3RhYmxlL3Rlc3QvaW5jbHVkZS5hbQoraW5kZXggZWVhMjQ5Zi4uZDMyM2RmZiAxMDA2NDQKKy0tLSBhL3Rlc3QvaW5jbHVkZS5hbQorKysrIGIvdGVzdC9pbmNsdWRlLmFtCitAQCAtMTYxLDYgKzE2MSw3IEBAIHRlc3RfYmVuY2hfaHR0cGNsaWVudF9MREFERCA9ICQoTElCRVZFTlRfR0NfU0VDVElPTlMpIGxpYmV2ZW50X2NvcmUubGEKKyB0ZXN0L3JlZ3Jlc3MuZ2VuLmMgdGVzdC9yZWdyZXNzLmdlbi5oOiB0ZXN0L3JwY2dlbi1hdHRlbXB0ZWQKKyAKKyB0ZXN0L3JwY2dlbi1hdHRlbXB0ZWQ6IHRlc3QvcmVncmVzcy5ycGMgZXZlbnRfcnBjZ2VuLnB5IHRlc3QvcnBjZ2VuX3dyYXBwZXIuc2gKKysJQCQoTUtESVJfUCkgdGVzdAorIAkkKEFNX1ZfR0VOKWRhdGUgLXUgPiAkQAorIAkkKEFNX1ZfYXQpaWYgJChzcmNkaXIpL3Rlc3QvcnBjZ2VuX3dyYXBwZXIuc2ggJChzcmNkaXIpL3Rlc3Q7IHRoZW4gXAorIAkgICB0cnVlOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4wLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4YTMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBhc3luY2hyb25vdXMgZXZlbnQgbm90aWZpY2F0aW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGliZXZlbnQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD01MDg4NCZhdGlkPTQ2MTMyMiIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00NWM1MzE2ZmY2ODRiY2ZlMmY5Zjg2ZDhiMTI3OTU1OSIKLQotU1JDX1VSSSA9ICIgXAotICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9sZXZlbnQvJHtCUH0tc3RhYmxlLnRhci5neiBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNGM1NmY5ODZhYTk4NTY3N2NhMWRiODk2MzBhMmUxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWMyYzQ5ZjBhZGFkYWNmZGJlNjMzMmEzNzJjMzhjZjljOGI3ODk1YmI3M2RhYmVhYTUzY2RjYzFkNGUxZmEzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYmV2ZW50Lm9yZy8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0tc3RhYmxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgTmVlZGVkIGZvciBEZWJpYW4gcGFja2FnaW5nCi1MRUFEX1NPTkFNRSA9ICJsaWJldmVudC0yLjAuc28iCi0KLWluaGVyaXQgcHRlc3QKLQotREVQRU5EUyA9ICJ6bGliIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZm9yIGZpbGUgaW4gJHtCfS90ZXN0Ly5saWJzL3JlZ3Jlc3MgJHtCfS90ZXN0Ly5saWJzL3Rlc3QqCi0JZG8KLQkJaW5zdGFsbCAtbSAwNzU1ICRmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3MGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIkFuIGFzeW5jaHJvbm91cyBldmVudCBub3RpZmljYXRpb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJldmVudC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZXZlbnQvbGliZXZlbnQvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE3ZjIwNTc0YzBiMTU0ZDEyMjM2ZDVmYmU5NjRmNTQ5IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJHtQVn0tc3RhYmxlLyR7QlB9LXN0YWJsZS50YXIuZ3ogXAorICAgIGZpbGU6Ly9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImYzZWVhZWQwMTg1NDI5NjNiN2QyNDE2ZWYxMTM1ZWNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2NWNjNWE4YmI0NmNlNDE5OWE0N2U5YjJjOWUxY2FlM2IxMzdlODM1NmZmZGFkNmQ5NGQzYjkwNjliNzFkYzIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGliZXZlbnQub3JnLyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfS1zdGFibGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBOZWVkZWQgZm9yIERlYmlhbiBwYWNrYWdpbmcKK0xFQURfU09OQU1FID0gImxpYmV2ZW50LTIuMS5zbyIKKworaW5oZXJpdCBwdGVzdAorCitERVBFTkRTID0gInpsaWIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlmb3IgZmlsZSBpbiAke0J9L3Rlc3QvLmxpYnMvcmVncmVzcyAke0J9L3Rlc3QvLmxpYnMvdGVzdCoKKwlkbworCQlpbnN0YWxsIC1tIDA3NTUgJGZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtbGliZmZpLVN1cHBvcnQtbXVzbC14MzItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWxpYmZmaS1TdXBwb3J0LW11c2wteDMyLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMTY3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWxpYmZmaS1TdXBwb3J0LW11c2wteDMyLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNjljMzkwNmM4NWM3OTE3MTZiZjY1MGFhMzZkOTM2MWQyMmFjZjNmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDE2OjMyOjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmZmaTogU3VwcG9ydCBtdXNsIHgzMiBidWlsZAorCitTdXBwb3J0IGxpYmZmaSBidWlsZCB3aXRoIHRhcmdldCBtdXNsLXgzMi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhN2JmNWVlLi44ZWJlOTljIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNzcsNyArMTc3LDcgQEAgY2FzZSAiJGhvc3QiIGluCisgCVRBUkdFVERJUj14ODYKKyAJaWYgdGVzdCAkYWNfY3Zfc2l6ZW9mX3NpemVfdCA9IDQ7IHRoZW4KKyAJICBjYXNlICIkaG9zdCIgaW4KKy0JICAgICotZ251eDMyKQorKwkgICAgKi1nbnV4MzIgfCAqLW11c2x4MzIpCisgCSAgICAgIFRBUkdFVD1YODZfNjQKKyAJICAgICAgOzsKKyAJICAgICopCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKaW5kZXggNDNlZWU4ZS4uYTBiMWZjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgogREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKIGNvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCiB0aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKQEAgLTEzLDEzICsxNCwxNCBAQAogICAgICAgICAgICBmaWxlOi8vbm90LXdpbjMyLnBhdGNoIFwKIAkgICBmaWxlOi8vMDAwMS1taXBzLVVzZS1jb21waWxlci1pbnRlcm5hbC1kZWZpbmUtZm9yLWxpbnV4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlwcy1maXgtTUlQUy1zb2Z0ZmxvYXQtYnVpbGQtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJmZmktU3VwcG9ydC1tdXNsLXgzMi1idWlsZC5wYXRjaCBcCiAJICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODNiODk1ODc2MDdlM2ViNjVjNzBkMzYxZjEzYmFiNDMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA2ZWJiOGUxZDlhMjJkMTllMzhkNjNmZGI4Mzk1NDI1M2YzOWJlZGM1ZDQ2MjMyYTA1NjQ1Njg1NzIyY2EzNyIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYnVpbGRkaXIiCi0KK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKQEAgLTI5LDMgKzMxLDQgQEAKIE1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCmluZGV4IGFjYTU5ZTEuLjFkZGRkZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKQEAgLTMyLDYgKzMyLDcgQEAKICAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0teG1sLWZpbGUuaAogICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS12ZXJzaW9uLmgKICAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0tZXh0cmEuaAorICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtCiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliZm0tZXh0cmEucGMKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLnNvKgogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGliZm0tZXh0cmEuYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtQWRkLWFuZC11c2UtcGtnLWNvbmZpZy1mb3ItbGliZ2NyeXB0LWluc3RlYWQtb2YtY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDFjM2RlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2gKQEAgLTAsMCArMSwxODMgQEAKK0Zyb20gNzJiOWU5MDQwZDU4YzE1ZjAzMDJiZDhhYmRhMjgxNzlmMDRlMWM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDo0MzoxOCArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gQWRkIGFuZCB1c2UgcGtnLWNvbmZpZyBmb3IgbGliZ2NyeXB0IGluc3RlYWQgb2YgLWNvbmZpZworIHNjcmlwdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBoYXZlIGluZGljYXRlZCB0aGV5IGRvbid0IHdhbnQgYQorcGtnLWNvbmZpZyBkZXBlbmRlbmN5XQorCitSUCAyMDE0LzUvMjIKKworUmViYXNlIHRvIDEuOC4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAgMSArCisgc3JjL2xpYmdjcnlwdC5tNCAgICB8IDcxICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2xpYmdjcnlwdC5wYy5pbiB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGliZ2NyeXB0LnBjLmluCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGJiZTgxMDQuLjNkMmRlNzMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI2MDcsNiArMjYwNyw3IEBAIHJhbmRvbS9NYWtlZmlsZQorIGRvYy9NYWtlZmlsZQorIHNyYy9NYWtlZmlsZQorIHNyYy9nY3J5cHQuaAorK3NyYy9saWJnY3J5cHQucGMKKyBzcmMvbGliZ2NyeXB0LWNvbmZpZworIHNyYy92ZXJzaW9uaW5mby5yYworIHRlc3RzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5tNCBiL3NyYy9saWJnY3J5cHQubTQKK2luZGV4IGM2N2NmZWMuLjRlYTVmMmMgMTAwNjQ0CistLS0gYS9zcmMvbGliZ2NyeXB0Lm00CisrKysgYi9zcmMvbGliZ2NyeXB0Lm00CitAQCAtMjksMzAgKzI5LDYgQEAgZG5sIGlzIGFkZGVkIHRvIHRoZSBncGdfY29uZmlnX3NjcmlwdF93YXJuIHZhcmlhYmxlLgorIGRubAorIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCistICBBQ19BUkdfV0lUSChsaWJnY3J5cHQtcHJlZml4LAorLSAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliZ2NyeXB0LXByZWZpeD1QRlhdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmaXggd2hlcmUgTElCR0NSWVBUIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSksCistICAgICBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iIikKKy0gIGlmIHRlc3QgeCIke0xJQkdDUllQVF9DT05GSUd9IiA9IHggOyB0aGVuCistICAgICBpZiB0ZXN0IHgiJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0iICE9IHggOyB0aGVuCistICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke2xpYmdjcnlwdF9jb25maWdfcHJlZml4fS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKKy0gICAgIGVsc2UKKy0gICAgICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgICAvKikKKy0gICAgICAgICAgIGlmIHRlc3QgLXggIiR7U1lTUk9PVH0vYmluL2xpYmdjcnlwdC1jb25maWciIDsgdGhlbgorLSAgICAgICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIgorLSAgICAgICAgICAgZmkKKy0gICAgICAgICAgIDs7CistICAgICAgICAgJycpCistICAgICAgICAgICA7OworLSAgICAgICAgICAqKQorLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgZXNhYworLSAgICAgZmkKKy0gIGZpCistCistICBBQ19QQVRIX1BST0coTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCisgICB0bXA9aWZlbHNlKFskMV0sICwxOjEuMi4wLCQxKQorICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgcmVxX2xpYmdjcnlwdF9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtNjIsNDggKzM4LDEzIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICBtaW5fbGliZ2NyeXB0X3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBMSUJHQ1JZUFQgLSB2ZXJzaW9uID49ICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJExJQkdDUllQVF9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCistICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIHJlcV9taWNybz1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgIGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAorLSAgICBtYWpvcj1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKy0gICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wyLydgCistICAgIG1pY3JvPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMy8nYAorLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorLSAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzICgkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uKV0pCistICBlbHNlCistICAgIEFDX01TR19SRVNVTFQobm8pCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoTElCR0NSWVBULCBbbGliZ2NyeXB0ID49ICRtaW5fbGliZ2NyeXB0X3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKKysKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgbGliZ2NyeXB0LCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZQorICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJExJQkdDUllQVF9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gbGliZ2NyeXB0YAorICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0xJQkdDUllQVCBBUEkgdmVyc2lvbl0pCisgICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmdjcnlwdF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCitAQCAtMTE2LDEwICs1Nyw4IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICBmaQorICAgZmkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHIC0tY2ZsYWdzYAorLSAgICBMSUJHQ1JZUFRfTElCUz1gJExJQkdDUllQVF9DT05GSUcgLS1saWJzYAorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorLSAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRMSUJHQ1JZUFRfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCisrICAgIGxpYmdjcnlwdF9jb25maWdfaG9zdD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1ob3N0IGxpYmdjcnlwdGAKKyAgICAgaWYgdGVzdCB4IiRsaWJnY3J5cHRfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgorICAgICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KKyAgIEFDX01TR19XQVJOKFtbCitAQCAtMTM0LDggKzczLDYgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKKyAgICAgICBmaQorICAgICBmaQorICAgZWxzZQorLSAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCistICAgIExJQkdDUllQVF9MSUJTPSIiCisgICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCisgICBmaQorICAgQUNfU1VCU1QoTElCR0NSWVBUX0NGTEFHUykKK2RpZmYgLS1naXQgYS9zcmMvbGliZ2NyeXB0LnBjLmluIGIvc3JjL2xpYmdjcnlwdC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjJmYzhmNTMKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9saWJnY3J5cHQucGMuaW4KK0BAIC0wLDAgKzEsMzMgQEAKKysjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIHBrZy1jb25maWcgbWV0YWRhdGEgZmlsZS4KKysjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKysjIEF1dGhvcjogU2ltb24gSm9zZWZzc29uCisrIworKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdGhlIGF1dGhvciBnaXZlcworKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisrIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKysjCisrIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrIyBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0IGV2ZW4gdGhlCisrIyBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKysKKytwcmVmaXg9QHByZWZpeEAKKytleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACisrbGliZGlyPUBsaWJkaXJACisraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKysKKysjIEFQSSBpbmZvCisrYXBpX3ZlcnNpb249QExJQkdDUllQVF9DT05GSUdfQVBJX1ZFUlNJT05ACisraG9zdD1ATElCR0NSWVBUX0NPTkZJR19IT1NUQAorKworKyMgTWlzYyBpbmZvcm1hdGlvbi4KKytzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX0NJUEhFUlNACisrYXN5bW1ldHJpY19jaXBoZXJzPUBMSUJHQ1JZUFRfUFVCS0VZX0NJUEhFUlNACisrZGlnZXN0cz1ATElCR0NSWVBUX0RJR0VTVFNACisrCisrTmFtZTogbGliZ2NyeXB0CisrRGVzY3JpcHRpb246IEdOVSBjcnlwdG8gbGlicmFyeQorK1VSTDogaHR0cDovL3d3dy5nbnVwZy5vcmcKKytWZXJzaW9uOiBAVkVSU0lPTkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGdjcnlwdAorK0xpYnMucHJpdmF0ZTogLUwke2xpYmRpcn0gLWxncGctZXJyb3IKKytDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNGRmZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLWVjYy1TdG9yZS1FZERTQS1zZXNzaW9uLWtleS1pbi1zZWN1cmUtbWVtb3J5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotQ1ZFOiBDVkUtMjAxNy05NTI2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDRhMTc2OGQ2ODNmNjU3MmFkODZkODMzNTA4YzcwZTZiM2RjMWVmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKbyBWYW4gQnVsY2sgPGpvLnZhbmJ1bGNrQGNzLmt1bGV1dmVuLmJlPgotRGF0ZTogVGh1LCAxOSBKYW4gMjAxNyAxNzowMDoxNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBlY2M6IFN0b3JlIEVkRFNBIHNlc3Npb24ga2V5IGluIHNlY3VyZSBtZW1vcnkuCi0KLSogY2lwaGVyL2VjYy1lZGRzYS5jIChfZ2NyeV9lY2NfZWRkc2Ffc2lnbik6IHVzZSBtcGlfc25ldyB0byBhbGxvY2F0ZQotc2Vzc2lvbiBrZXkuCi0tLQotCi1BbiBhdHRhY2tlciB3aG8gbGVhcm5zIHRoZSBFZERTQSBzZXNzaW9uIGtleSBmcm9tIHNpZGUtY2hhbm5lbAotb2JzZXJ2YXRpb24gZHVyaW5nIHRoZSBzaWduaW5nIHByb2Nlc3MsIGNhbiBlYXNpbHkgcmV2b3ZlciB0aGUgbG9uZy0KLXRlcm0gc2VjcmV0IGtleS4gU3RvcmluZyB0aGUgc2Vzc2lvbiBrZXkgaW4gc2VjdXJlIG1lbW9yeSBlbnN1cmVzIHRoYXQKLWNvbnN0YW50IHRpbWUgcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZCBpbiB0aGUgTVBJIGxpYnJhcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEpvIFZhbiBCdWxjayA8am8udmFuYnVsY2tAY3Mua3VsZXV2ZW4uYmU+Ci0tLS0KLSBjaXBoZXIvZWNjLWVkZHNhLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvZWNjLWVkZHNhLmMgYi9jaXBoZXIvZWNjLWVkZHNhLmMKLWluZGV4IGY5MWY4NDg5Li44MTNlMDMwZCAxMDA2NDQKLS0tLSBhL2NpcGhlci9lY2MtZWRkc2EuYwotKysrIGIvY2lwaGVyL2VjYy1lZGRzYS5jCi1AQCAtNjAzLDcgKzYwMyw3IEBAIF9nY3J5X2VjY19lZGRzYV9zaWduIChnY3J5X21waV90IGlucHV0LCBFQ0Nfc2VjcmV0X2tleSAqc2tleSwKLSAgIGEgPSBtcGlfc25ldyAoMCk7Ci0gICB4ID0gbXBpX25ldyAoMCk7Ci0gICB5ID0gbXBpX25ldyAoMCk7Ci0tICByID0gbXBpX25ldyAoMCk7Ci0rICByID0gbXBpX3NuZXcgKDApOwotICAgY3R4ID0gX2djcnlfbXBpX2VjX3BfaW50ZXJuYWxfbmV3IChza2V5LT5FLm1vZGVsLCBza2V5LT5FLmRpYWxlY3QsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXktPkUucCwgc2tleS0+RS5hLCBza2V5LT5FLmIpOwotICAgYiA9IChjdHgtPm5iaXRzKzcpLzg7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMi1saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NTU0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDk3NTcwZWYyNzFlYTFmYjdiNWNhOTAzZWVjODhmNjg0MDdiMGVjNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDEwOjQ0OjQxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBsaWJnY3J5cHQ6IGZpeCBidWlsZGluZyBlcnJvciB3aXRoICctTzInIGluIHN5c3Jvb3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworQ2hhcmFjdGVycyBsaWtlICctTzInIG9yICctT2Zhc3QnIHdpbGwgYmUgcmVwbGFjZWQgYnkgJy1PMScgd2hlbgorY29tcGlsaW5nIGNpcGhlci4KK0lmIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgbGliZ2NyeXB0IGFuZCBzeXNyb290IGNvbnRhaW5zIHN1Y2gKK2NoYXJhY3RlcnMsIHdlIHdvdWxkCitnZXQgY29tcGlsZSBlcnJvcnMgYmVjYXVzZSB0aGUgc3lzcm9vdCBwYXRoIGhhcyBiZWVuIG1vZGlmaWVkLgorCitGaXggdGhpcyBieSBhZGRpbmcgYmxhbmsgc3BhY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9yaWdpbmFsIG1hdGNoaW5nCitwYXR0ZXJuIGluIHRoZQorc2VkIGNvbW1hbmQuCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDEuOC4wCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjaXBoZXIvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jaXBoZXIvTWFrZWZpbGUuYW0gYi9jaXBoZXIvTWFrZWZpbGUuYW0KK2luZGV4IDk1YzQ1MTAuLmJkNTJlYzcgMTAwNjQ0CistLS0gYS9jaXBoZXIvTWFrZWZpbGUuYW0KKysrKyBiL2NpcGhlci9NYWtlZmlsZS5hbQorQEAgLTExNiw3ICsxMTYsNyBAQCBnb3N0LXMtYm94OiBnb3N0LXMtYm94LmMKKyAKKyAKKyBpZiBFTkFCTEVfT19GTEFHX01VTkdJTkcKKy1vX2ZsYWdfbXVuZ2luZyA9IHNlZCAtZSAncy8tT1woWzItOXNdWzItOXNdKlwpLy1PMS8nIC1lICdzLy1PZmFzdC8tTzEvZycKKytvX2ZsYWdfbXVuZ2luZyA9IHNlZCAtZSAncy8gLU9cKFsyLTlzXVsyLTlzXSpcKSAvIC1PMSAvJyAtZSAncy8gLU9mYXN0IC8gLU8xIC9nJworIGVsc2UKKyBvX2ZsYWdfbXVuZ2luZyA9IGNhdAorIGVuZGlmCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSA3Y2M3MDJjN2I1YTFjY2MyYjAwOTFmM2VmZmExMzkxYjZjMzAzMGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDo0NjoyOCArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNF0gdGVzdHMvYmVuY2gtc2xvcGUuYzogd29ya2Fyb3VuZCBJQ0UgZmFpbHVyZSBvbiBtaXBzIHdpdGgKKyAnLU8gLWcnCisKK0hpdCBhIElDRSBhbmQgY291bGQgcmVkdWNlIGl0IHRvIHRoZSBmb2xsb3dpbmcgbWluaW1hbCBleGFtcGxlOgorCisxLiBPbmx5IHRoZSBzaXplIG9mIGFycmF5IGFzc2lnbmVkIHdpdGggMiBjYXVzZWQgdGhlIGlzc3VlOgorJCBjYXQgPiBtaXBnY2MtdGVzdC5jIDw8IEVORAorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgICAgICBjaGFyICpwU3RyQXJyeVtBUlJBWV9TSVpFX01BWF0gPSB7ImhlbGxvIn07CisgICAgICAgIGludCBpID0gMDsKKworICAgICAgICB3aGlsZShwU3RyQXJyeVtpXSAmJiBpPEFSUkFZX1NJWkVfTUFYKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcFN0ckFycnlbaV0pOworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworfQorCitFTkQKKworMi4gT25seSAtTzEgYW5kIC1nIG9uIG1pcHMgY2F1c2VkIHRoZSBpc3N1ZToKKyQgbWlwcy1wb2t5LWxpbnV4LWdjYyAtTzEgLWcgLW8gbWlwZ2NjLXRlc3QgbWlwZ2NjLXRlc3QuYworbWlwZ2NjLXRlc3QuYzogSW4gZnVuY3Rpb24gJ21haW4nOgorbWlwZ2NjLXRlc3QuYzoxODoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiwKK2F0IGR3YXJmMm91dC5jOjIwODEwCisgfQorIF4KK1BsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCit3aXRoIHByZXByb2Nlc3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuCitTZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0cnVjdGlvbnMKKworMy4gVGhlIHF1aWNrIHdvcmtyb3VuZCBpcyB0cnlpbmcgdG8gZW5sYXJnZSB0aGUgc2l6ZSBvZiBhcnJheSB3aXRoCitsYXJnZXIKK3RoYW4gMi4KKworNC4gRmlsZSBhIGJ1ZyB0byBHTlUsIGJ1dCBpdCBjb3VsZCBub3QgYmUgcmVwcm9kdWNlZCBvbiB0aGVyZQorZW52aXJvbm1lbnQuCitodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYwNjQzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1JlYmFzZSB0byAxLjguMAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvYmVuY2gtc2xvcGUuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9iZW5jaC1zbG9wZS5jIGIvdGVzdHMvYmVuY2gtc2xvcGUuYworaW5kZXggNzVlNmU0My4uNGU3MDg0MiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JlbmNoLXNsb3BlLmMKKysrKyBiL3Rlc3RzL2JlbmNoLXNsb3BlLmMKK0BAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMgc3RydWN0IGJlbmNoX29wcyBoYXNoX29wcyA9IHsKKyB9OworIAorIAorLXN0YXRpYyBzdHJ1Y3QgYmVuY2hfaGFzaF9tb2RlIGhhc2hfbW9kZXNbXSA9IHsKKytzdGF0aWMgc3RydWN0IGJlbmNoX2hhc2hfbW9kZSBoYXNoX21vZGVzWzNdID0geworICAgeyIiLCAmaGFzaF9vcHN9LAorICAgezB9LAorIH07CitAQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIHN0cnVjdCBiZW5jaF9vcHMgbWFjX29wcyA9IHsKKyB9OworIAorIAorLXN0YXRpYyBzdHJ1Y3QgYmVuY2hfbWFjX21vZGUgbWFjX21vZGVzW10gPSB7Cisrc3RhdGljIHN0cnVjdCBiZW5jaF9tYWNfbW9kZSBtYWNfbW9kZXNbM10gPSB7CisgICB7IiIsICZtYWNfb3BzfSwKKyAgIHswfSwKKyB9OworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyMmRmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZTIwZGJkYjBiOGYwYWY4NDBlZjkwYjI5OWM0ZTIyNzdjNTJkZGY4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTIgSnVuIDIwMTYgMDQ6NDQ6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIHRlc3RzL01ha2VmaWxlLmFtOiBmaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0bworIGBwdGhyZWFkX2NyZWF0ZScKKworQWRkIG1pc3NpbmcgJy1scHRocmVhZCcgdG8gQ0ZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDE3NDRlYTcuLjA0Y2Y0MjUgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC02NCw0ICs2NCw0IEBAIEVYVFJBX0RJU1QgPSBSRUFETUUgcnNhLTE2ay5rZXkgY2F2c190ZXN0cy5zaCBjYXZzX2RyaXZlci5wbCBcCisgCisgTERBREQgPSAkKHN0YW5kYXJkX2xkYWRkKSAkKEdQR19FUlJPUl9MSUJTKQorIHRfbG9ja19MREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX01UX0xJQlMpCistdF9sb2NrX0NGTEFHUyA9ICQoR1BHX0VSUk9SX01UX0NGTEFHUykKKyt0X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKSAtbHB0aHJlYWQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmZGQ3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaApAQCAtMCwwICsxLDE1OCBAQAorRnJvbSBlZjU3MGUzZDI3NzNjMTIxMjZlN2QzZmNkYzRkYjllZjgwYTVlMjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDE4OjEzOjI4ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIGVjYzogQWRkIGlucHV0IHZhbGlkYXRpb24gZm9yIFgyNTUxOS4KKworKiBjaXBoZXIvZWNjLmMgKGVjY19kZWNyeXB0X3Jhdyk6IEFkZCBpbnB1dCB2YWxpZGF0aW9uLgorKiBtcGkvZWMuYyAoZWNfcF9pbml0KTogVXNlIHNjcmF0Y2ggYnVmZmVyIGZvciBiYWQgcG9pbnRzLgorKF9nY3J5X21waV9lY19iYWRfcG9pbnQpOiBOZXcuCisKKy0tCisKK0ZvbGxvd2luZyBpcyB0aGUgcGFwZXIgZGVzY3JpYmluZyB0aGUgYXR0YWNrOgorCisgICAgTWF5IHRoZSBGb3VydGggQmUgV2l0aCBZb3U6IEEgTWljcm9hcmNoaXRlY3R1cmFsIFNpZGUgQ2hhbm5lbCBBdHRhY2sKKyAgICBvbiBSZWFsLVdvcmxkIEFwcGxpY2F0aW9ucyBvZiBDdXJ2ZTI1NTE5CisgICAgYnkgRGFuaWVsIEdlbmtpbiwgTHVrZSBWYWxlbnRhLCBhbmQgWXV2YWwgWWFyb20KKworSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIGRvIG91dHB1dCBjaGVja2luZyBhbmQgaXQgcmVzdWx0cyBhbgorZXJyb3IgZm9yIHRob3NlIGJhZCBwb2ludHMuICBIb3dldmVyLCB3aGVuIGF0dGFja2VkLCB0aGUgY29tcHV0YXRpb24KK3dpbGwgZG9uZSB3aXRoIGxlYWsgb2YgcHJpdmF0ZSBrZXksIGV2ZW4gaXQgd2lsbCByZXN1bHRzIGVycm9ycy4gIFRvCittaXRpZ2F0ZSBsZWFrLCB3ZSBhZGRlZCBpbnB1dCB2YWxpZGF0aW9uLgorCitOb3RlIHRoYXQgd2Ugb25seSBsaXN0IGJhZCBwb2ludHMgd2l0aCBNU0I9MC4gIEJ5IFgyNTUxOSwgTVNCIGlzCithbHdheXMgY2xlYXJlZC4KKworSW4gZnV0dXJlLCB3ZSBzaG91bGQgaW1wbGVtZW50IGNvbnN0YW50LXRpbWUgZmllbGQgY29tcHV0YXRpb24uICBUaGVuLAordGhpcyBpbnB1dCB2YWxpZGF0aW9uIGNvdWxkIGJlIHJlbW92ZWQsIGlmIHBlcmZvcm1hbmNlIGlzIGltcG9ydGFudAorYW5kIHdlIGFyZSBzdXJlIGZvciBubyBsZWFrLgorCitDVkUtaWQ6IENWRS0yMDE3LTAzNzkKK1NpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTAzNzkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNpcGhlci9lY2MuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCisgbXBpL2VjLmMgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgc3JjL21waS5oICAgIHwgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NpcGhlci9lY2MuYyBiL2NpcGhlci9lY2MuYworaW5kZXggZTI1YmYwOS4uNGUzZTViMSAxMDA2NDQKKy0tLSBhL2NpcGhlci9lY2MuYworKysrIGIvY2lwaGVyL2VjYy5jCitAQCAtMTYyOCw5ICsxNjI4LDIyIEBAIGVjY19kZWNyeXB0X3JhdyAoZ2NyeV9zZXhwX3QgKnJfcGxhaW4sIGdjcnlfc2V4cF90IHNfZGF0YSwgZ2NyeV9zZXhwX3Qga2V5cGFybXMpCisgICBpZiAoREJHX0NJUEhFUikKKyAgICAgbG9nX3ByaW50cG50ICgiZWNjX2RlY3J5cHQgICAga0ciLCAma0csIE5VTEwpOworIAorLSAgaWYgKCEoZmxhZ3MgJiBQVUJLRVlfRkxBR19ESkJfVFdFQUspCisrICBpZiAoKGZsYWdzICYgUFVCS0VZX0ZMQUdfREpCX1RXRUFLKSkKKysgICAgeworICAgICAgIC8qIEZvciBYMjU1MTksIGJ5IGl0cyBkZWZpbml0aW9uLCB2YWxpZGF0aW9uIHNob3VsZCBub3QgYmUgZG9uZS4gICovCistICAgICAgJiYgIV9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoJmtHLCBlYykpCisrICAgICAgLyogKEluc3RlYWQsIHdlIGRvIG91dHB1dCBjaGVjay4pCisrICAgICAgICoKKysgICAgICAgKiBIb3dldmVyLCB0byBtaXRpZ2F0ZSBzZWNyZXQga2V5IGxlYWsgZnJvbSBvdXIgaW1wbGVtZW50YXRpb24sCisrICAgICAgICogd2UgYWxzbyBkbyBpbnB1dCB2YWxpZGF0aW9uIGhlcmUuICBGb3IgY29uc3RhbnQtdGltZQorKyAgICAgICAqIGltcGxlbWVudGF0aW9uLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgaW5wdXQgdmFsaWRhdGlvbi4KKysgICAgICAgKi8KKysgICAgICBpZiAoX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoJmtHLCBlYykpCisrICAgICAgICB7CisrICAgICAgICAgIHJjID0gR1BHX0VSUl9JTlZfREFUQTsKKysgICAgICAgICAgZ290byBsZWF2ZTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoIV9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoJmtHLCBlYykpCisgICAgIHsKKyAgICAgICByYyA9IEdQR19FUlJfSU5WX0RBVEE7CisgICAgICAgZ290byBsZWF2ZTsKK2RpZmYgLS1naXQgYS9tcGkvZWMuYyBiL21waS9lYy5jCitpbmRleCBhMGY3MzU3Li40YzE2NjAzIDEwMDY0NAorLS0tIGEvbXBpL2VjLmMKKysrKyBiL21waS9lYy5jCitAQCAtMzk2LDYgKzM5NiwyOSBAQCBlY19nZXRfdHdvX2ludl9wIChtcGlfZWNfdCBlYykKKyB9CisgCisgCisrc3RhdGljIGNvbnN0IGNoYXIgKmN1cnZlMjU1MTlfYmFkX3BvaW50c1tdID0geworKyAgIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCisrICAiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxIiwKKysgICIweDAwYjg0OTVmMTYwNTYyODZmZGIxMzI5Y2ViOGQwOWRhNmFjNDlmZjFmYWUzNTYxNmFlYjg0MTNiN2M3YWViZTAiLAorKyAgIjB4NTcxMTlmZDBkZDRlMjJkODg2OGUxYzU4YzQ1YzQ0MDQ1YmVmODM5YzU1YjFkMGIxMjQ4YzUwYTNiYzk1OWM1ZiIsCisrICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVjIiwKKysgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWQiLAorKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZSIsCisrICBOVUxMCisrfTsKKysKKytzdGF0aWMgZ2NyeV9tcGlfdAorK3NjYW52YWwgKGNvbnN0IGNoYXIgKnN0cmluZykKKyt7CisrICBncGdfZXJyX2NvZGVfdCByYzsKKysgIGdjcnlfbXBpX3QgdmFsOworKworKyAgcmMgPSBfZ2NyeV9tcGlfc2NhbiAoJnZhbCwgR0NSWU1QSV9GTVRfSEVYLCBzdHJpbmcsIDAsIE5VTEwpOworKyAgaWYgKHJjKQorKyAgICBsb2dfZmF0YWwgKCJzY2FubmluZyBFQ0MgcGFyYW1ldGVyIGZhaWxlZDogJXNcbiIsIGdwZ19zdHJlcnJvciAocmMpKTsKKysgIHJldHVybiB2YWw7CisrfQorKworIAorIC8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZWQgYSBjb250ZXh0IGZvciBlbGxpcHRpYyBjdXJ2ZSBiYXNlZCBvbiB0aGUKKyAgICBmaWVsZCBHRihwKS4gIFAgaXMgdGhlIHByaW1lIHNwZWNpZnlpbmcgdGhpcyBmaWVsZCwgQSBpcyB0aGUgZmlyc3QKK0BAIC00MzQsOSArNDU3LDE3IEBAIGVjX3BfaW5pdCAobXBpX2VjX3QgY3R4LCBlbnVtIGdjcnlfbXBpX2VjX21vZGVscyBtb2RlbCwKKyAKKyAgIF9nY3J5X21waV9lY19nZXRfcmVzZXQgKGN0eCk7CisgCistICAvKiBBbGxvY2F0ZSBzY3JhdGNoIHZhcmlhYmxlcy4gICovCistICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKTsgaSsrKQorLSAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IG1waV9hbGxvY19saWtlIChjdHgtPnApOworKyAgaWYgKG1vZGVsID09IE1QSV9FQ19NT05UR09NRVJZKQorKyAgICB7CisrICAgICAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCkgJiYgY3VydmUyNTUxOV9iYWRfcG9pbnRzW2ldOyBpKyspCisrICAgICAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IHNjYW52YWwgKGN1cnZlMjU1MTlfYmFkX3BvaW50c1tpXSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIC8qIEFsbG9jYXRlIHNjcmF0Y2ggdmFyaWFibGVzLiAgKi8KKysgICAgICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKTsgaSsrKQorKyAgICAgICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBtcGlfYWxsb2NfbGlrZSAoY3R4LT5wKTsKKysgICAgfQorIAorICAgLyogUHJlcGFyZSBmb3IgZmFzdCByZWR1Y3Rpb24uICAqLworICAgLyogRklYTUU6IG5lZWQgYSB0ZXN0IGZvciBOSVNUIHZhbHVlcy4gIEhvd2V2ZXIgaXQgZG9lcyBub3QgZ2FpbiB1cworQEAgLTE1NzIsMyArMTYwMywxNyBAQCBfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCkKKyAKKyAgIHJldHVybiByZXM7CisgfQorKworKworK2ludAorK19nY3J5X21waV9lY19iYWRfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCkKKyt7CisrICBpbnQgaTsKKysgIGdjcnlfbXBpX3QgeF9iYWQ7CisrCisrICBmb3IgKGkgPSAwOyAoeF9iYWQgPSBjdHgtPnQuc2NyYXRjaFtpXSk7IGkrKykKKysgICAgaWYgKCFtcGlfY21wIChwb2ludC0+eCwgeF9iYWQpKQorKyAgICAgIHJldHVybiAxOworKworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9tcGkuaCBiL3NyYy9tcGkuaAoraW5kZXggYjUzODViNS4uYWViYTdmOCAxMDA2NDQKKy0tLSBhL3NyYy9tcGkuaAorKysrIGIvc3JjL21waS5oCitAQCAtMjk2LDYgKzI5Niw3IEBAIHZvaWQgX2djcnlfbXBpX2VjX211bF9wb2ludCAobXBpX3BvaW50X3QgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9tcGlfdCBzY2FsYXIsIG1waV9wb2ludF90IHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBpX2VjX3QgY3R4KTsKKyBpbnQgIF9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KTsKKytpbnQgX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KTsKKyAKKyBnY3J5X21waV90IF9nY3J5X21waV9lY19lYzJvcyAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgZWN0eCk7CisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWI5ZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA0YTdhYTMwYWU5ZjNjZTc5OGRkODg2YzJmMmQ0MTY0YzQzMDI3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgorRGF0ZTogU2F0LCAyOSBKdWwgMjAxNyAxNDozNDoyMyArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGRpbmcgQUFyY2gzMiBDRSBpbXBsZW1lbnRhdGlvbnMgd2hlbiB0YXJnZXQgaXMgQVJNdjYKKyBhcmNoCisKKyogY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TOiBTZWxlY3QgQVJNdjggYXJjaGl0ZWN1cmUuCisqIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgorKiBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgorKiBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCisqIGNvbmZpZ3VyZS5hYyAoZ2NyeV9jdl9nY2NfaW5saW5lX2FzbV9hYXJjaDMyX2NyeXB0byk6IERpdHRvLgorLS0KKworUmFzcGJpYW4gZGlzdHJpYnV0aW9uIGRlZmF1bHRzIHRvIEFSTXY2IGFyY2hpdGVjdHVyZSB0aHVzICdyYml0JworaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aXRoIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuIFBhdGNoCithZGRzIGV4cGxpY2l0IGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gZm9yIEFSTXY4IHRvIGVuYWJsZSAncmJpdCcKK3VzYWdlIHdpdGggQVJNdjgvQUFyY2gzMi1DRSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbnMgb2YgU0hBLAorR0hBU0ggYW5kIEFFUy4KKworUmVwb3J0ZWQtYnk6IENocmlzIEhvcnJ5IDx6ZXJiZXlAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgfCAxICsKKyBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TICAgfCAxICsKKyBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgICAgICAgfCAxICsKKyBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyAgICAgfCAxICsKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBiNjFhNzg3MS4uMWRlNjZhMTYgMTAwNjQ0CistLS0gYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKKysrKyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBmMzc1ZjY3My4uNWM4ZmEzYzAgMTAwNjQ0CistLS0gYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCitAQCAtMjQsNiArMjQsNyBAQAorICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCisgCisgLnN5bnRheCB1bmlmaWVkCisrLmFyY2ggYXJtdjgtYQorIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKKyAuYXJtCisgCitkaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBiMGJjNWZmZS4uYmYyYjIzM2IgMTAwNjQ0CistLS0gYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKKysrKyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEExKQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKK2luZGV4IDIwNDFhMjM3Li4yYjE3YWIxYiAxMDA2NDQKKy0tLSBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEEyNTYpCisgCisgLnN5bnRheCB1bmlmaWVkCisrLmFyY2ggYXJtdjgtYQorIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKKyAuYXJtCisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyN2ZhYTdmNC4uNjZlN2NkNjcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2MTksNiArMTYxOSw3IEBAIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIEdDQyBpbmxpbmUgYXNzZW1ibGVyIHN1cHBvcnRzIEFBcmNoMzIgQ3J5cHRvIEV4dGVuc2lvbiBpCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgW1tfX2FzbV9fKAorICAgICAgICAgICAgICAgICAiLnN5bnRheCB1bmlmaWVkXG5cdCIKKysgICAgICAgICAgICAgICAgIi5hcmNoIGFybXY4LWFcblx0IgorICAgICAgICAgICAgICAgICAiLmFybVxuXHQiCisgICAgICAgICAgICAgICAgICIuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4XG5cdCIKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTctNzUyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTctNzUyNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg0ZmE5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL0NWRS0yMDE3LTc1MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NTUgKzAsMCBAQAotRmx1c2grcmVsb2FkIHNpZGUtY2hhbm5lbCBhdHRhY2sgb24gUlNBIHNlY3JldCBrZXlzIGR1YmJlZCAiU2xpZGluZyByaWdodAotaW50byBkaXNhc3RlciIuCi0KLUNWRTogQ1ZFLTIwMTctNzUyNgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxMmVlNDAwYzM5ZTBlYmI1ZmI4MTljMzkyNmQ0NTljMjc4ZmM5OWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTc6Mzg6MDUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIG1waTogU2ltcGxpZnkgbXBpX3Bvd20uCi0KLSogbXBpL21waS1wb3cuYyAoX2djcnlfbXBpX3Bvd20pOiBTaW1wbGlmeSB0aGUgbG9vcC4KLQotLS0KLQotVGhpcyBmaXggaXMgbm90IGEgc29sdXRpb24gZm9yIHRoZSBwcm9ibGVtIHJlcG9ydGVkICh5ZXQpLiAgVGhlCi1wcm9ibGVtIGlzIHRoYXQgdGhlIGN1cnJlbnQgYWxnb3JpdGhtIG9mIF9nY3J5X21waV9wb3dtIGRlcGVuZHMgb24KLWV4cG9uZW50IGFuZCBzb21lIGluZm9ybWF0aW9uIGxlYWtzIGlzIHBvc3NpYmxlLgotCi1SZXBvcnRlZC1ieTogQW5kcmVhcyBaYW5rbCA8YW5kcmVhcy56YW5rbEBhaXNlYy5mcmF1bmhvZmVyLmRlPgotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0KLShiYWNrcG9ydCBmcm9tIG1hc3RlciBjb21taXQ6Ci03MTk0NjhlNTMxMzNkM2JkZjEyMTU2YzViZmRlYTJiZjE1ZjlmNmYxKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gbXBpL21waS1wb3cuYyB8IDEwNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbXBpL21waS1wb3cuYyBiL21waS9tcGktcG93LmMKLWluZGV4IGE3ODBlYmQxLi43YjNkYzMxOCAxMDA2NDQKLS0tLSBhL21waS9tcGktcG93LmMKLSsrKyBiL21waS9tcGktcG93LmMKLUBAIC02MDksMTIgKzYwOSw4IEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICBpZiAoZSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICBqICs9IGM7Ci0tICAgICAgICAgIGktLTsKLS0gICAgICAgICAgaWYgKCBpIDwgMCApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgYyA9IDA7Ci0tICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICB9Ci0rICAgICAgICAgIGlmICggLS1pIDwgMCApCi0rICAgICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAgIGUgPSBlcFtpXTsKLSAgICAgICAgICAgYyA9IEJJVFNfUEVSX01QSV9MSU1COwotQEAgLTYyOSwzOCArNjI1LDMzIEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICAgICAgYyAtPSBjMDsKLSAgICAgICAgICAgaiArPSBjMDsKLSAKLSsgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSk7Ci0gICAgICAgICAgIGlmIChjID49IFcpCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSk7Ci0tICAgICAgICAgICAgICBlID0gKGUgPDwgVyk7Ci0tICAgICAgICAgICAgICBjIC09IFc7Ci0tICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGMwID0gMDsKLSAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIGktLTsKLS0gICAgICAgICAgICAgIGlmICggaSA8IDAgKQotKyAgICAgICAgICAgICAgaWYgKCAtLWkgPCAwICkKLSAgICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgIGUgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBjKSk7Ci0tICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBjKSk7Ci0rICAgICAgICAgICAgICAgICAgaiArPSBjIC0gVzsKLSsgICAgICAgICAgICAgICAgICBnb3RvIGxhc3Rfc3RlcDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgYzAgPSBjOwotKyAgICAgICAgICAgICAgICAgIGUgPSBlcFtpXTsKLSsgICAgICAgICAgICAgICAgICBjID0gQklUU19QRVJfTVBJX0xJTUI7Ci0rICAgICAgICAgICAgICAgICAgZTAgfD0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gKFcgLSBjMCkpKTsKLSAgICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgYzAgPSBjOwotLSAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSkKLS0gICAgICAgICAgICAgICAgfCAoZXBbaV0gPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gVyArIGMwKSk7Ci0tICAgICAgICAgICAgICBlID0gKGVwW2ldIDw8IChXIC0gYzApKTsKLS0gICAgICAgICAgICAgIGMgPSBCSVRTX1BFUl9NUElfTElNQiAtIFcgKyBjMDsKLSAgICAgICAgICAgICB9Ci0gCi0rICAgICAgICAgIGUgPSBlIDw8IChXIC0gYzApOwotKyAgICAgICAgICBjIC09IChXIC0gYzApOwotKwotKyAgICAgICAgbGFzdF9zdGVwOgotICAgICAgICAgICBjb3VudF90cmFpbGluZ196ZXJvcyAoYzAsIGUwKTsKLSAgICAgICAgICAgZTAgPSAoZTAgPj4gYzApID4+IDE7Ci0gCi0tICAgICAgICAgIGZvciAoaiArPSBXIC0gYzA7IGo7IGotLSkKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotLSAgICAgICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLS0gICAgICAgICAgICB9Ci0tCi0gICAgICAgICAgIC8qCi0gICAgICAgICAgICAqICBiYXNlX3UgPD0gcHJlY29tcFtlMF0KLSAgICAgICAgICAgICogIGJhc2VfdV9zaXplIDw9IHByZWNvbXBfc2l6ZVtlMF0KLUBAIC02NzcsMjUgKzY2OCwyMyBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotIAotICAgICAgICAgICAgICAgbXBpX3NldF9jb25kICgmdywgJnUsIGsgPT0gZTApOwotLSAgICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gZTApKSApOwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKCBwcmVjb21wX3NpemVba10gJiAoKG1waV9zaXplX3QpMCAtIChrID09IGUwKSkgKTsKLSAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwgYmFzZV91LCBiYXNlX3Vfc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgIHRwID0gcnA7IHJwID0geHA7IHhwID0gdHA7Ci0tICAgICAgICAgIHJzaXplID0geHNpemU7Ci0rICAgICAgICAgIGZvciAoaiArPSBXIC0gYzA7IGogPj0gMDsgai0tKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGogPT0gMCA/IGJhc2VfdSA6IHJwLCBqID09IDAgPyBiYXNlX3Vfc2l6ZSA6IHJzaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0rICAgICAgICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotKyAgICAgICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLSsgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgIGogPSBjMDsKLSsgICAgICAgICAgaWYgKCBpIDwgMCApCi0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gCi0tICAgIGlmIChjICE9IDApCi0tICAgICAgewotLSAgICAgICAgaiArPSBjOwotLSAgICAgICAgY291bnRfdHJhaWxpbmdfemVyb3MgKGMsIGUpOwotLSAgICAgICAgZSA9IChlID4+IGMpOwotLSAgICAgICAgaiAtPSBjOwotLSAgICAgIH0KLS0KLSAgICAgd2hpbGUgKGotLSkKLSAgICAgICB7Ci0gICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci1AQCAtNzAzLDQwICs2OTIsNiBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICByc2l6ZSA9IHhzaXplOwotICAgICAgIH0KLSAKLS0gICAgaWYgKGUgIT0gMCkKLS0gICAgICB7Ci0tICAgICAgICAvKgotLSAgICAgICAgICogYmFzZV91IDw9IHByZWNvbXBbKGU+PjEpXQotLSAgICAgICAgICogYmFzZV91X3NpemUgPD0gcHJlY29tcF9zaXplWyhlPj4xKV0KLS0gICAgICAgICAqLwotLSAgICAgICAgYmFzZV91X3NpemUgPSAwOwotLSAgICAgICAgZm9yIChrID0gMDsgayA8ICgxPDwgKFcgLSAxKSk7IGsrKykKLS0gICAgICAgICAgewotLSAgICAgICAgICAgIHN0cnVjdCBnY3J5X21waSB3LCB1OwotLSAgICAgICAgICAgIHcuYWxsb2NlZCA9IHcubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgIHcuc2lnbiA9IHUuc2lnbiA9IDA7Ci0tICAgICAgICAgICAgdy5mbGFncyA9IHUuZmxhZ3MgPSAwOwotLSAgICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLS0gICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotLQotLSAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBrID09IChlPj4xKSk7Ci0tICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gKGU+PjEpKSkgKTsKLS0gICAgICAgICAgfQotLQotLSAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLCBiYXNlX3UsIGJhc2VfdV9zaXplLAotLSAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotLSAgICAgICAgcnNpemUgPSB4c2l6ZTsKLS0KLS0gICAgICAgIGZvciAoOyBjOyBjLS0pCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLS0gICAgICAgICAgICByc2l6ZSA9IHhzaXplOwotLSAgICAgICAgICB9Ci0tICAgICAgfQotLQotICAgICAvKiBXZSBzaGlmdGVkIE1PRCwgdGhlIG1vZHVsbyByZWR1Y3Rpb24gYXJndW1lbnQsIGxlZnQKLSAgICAgICAgTU9EX1NISUZUX0NOVCBzdGVwcy4gIEFkanVzdCB0aGUgcmVzdWx0IGJ5IHJlZHVjaW5nIGl0IHdpdGggdGhlCi0gICAgICAgIG9yaWdpbmFsIE1PRC4KLS0tIAotMi4xMS4wCi0KLQotRnJvbSBhNGIyNzVjNGQ1Mzc4ODM3ZTgyMGZkYzg0ZjRhZGE4NzZmOWM4Y2NkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBTYXQsIDI0IEp1biAyMDE3IDIwOjQ2OjIwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBTYW1lIGNvbXB1dGF0aW9uIGZvciBzcXVhcmUgYW5kIG11bHRpcGx5LgotCi0qIG1waS9tcGktcG93LmMgKF9nY3J5X21waV9wb3dtKTogQ29tcGFyZSBtc2l6ZSBmb3IgbWF4X3Vfc2l6ZS4gIE1vdmUKLXRoZSBhc3NpZ25tZW50IHRvIGJhc2VfdSBpbnRvIHRoZSBsb29wLiAgQ29weSBjb250ZW50IHJlZmVyZWQgYnkgUlAgdG8KLUJBU0VfVSBleGNlcHQgdGhlIGxhc3Qgb2YgdGhlIGxvb3AuCi0KLS0tCi0KLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotKGJhY2twb3J0IGZyb20gbWFzdGVyIGNvbW1pdDoKLTc4MTMwODI4ZTlhMTQwYTlkZTRkYWZhZGJjODQ0ZGJiNjRjYjcwOWEpCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBtcGkvbXBpLXBvdy5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tcGkvbXBpLXBvdy5jIGIvbXBpL21waS1wb3cuYwotaW5kZXggN2IzZGMzMTguLjNjYmE2OTAzIDEwMDY0NAotLS0tIGEvbXBpL21waS1wb3cuYwotKysrIGIvbXBpL21waS1wb3cuYwotQEAgLTU3Myw2ICs1NzMsOCBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICBNUE5fQ09QWSAocHJlY29tcFtpXSwgcnAsIHJzaXplKTsKLSAgICAgICB9Ci0gCi0rICAgIGlmIChtc2l6ZSA+IG1heF91X3NpemUpCi0rICAgICAgbWF4X3Vfc2l6ZSA9IG1zaXplOwotICAgICBiYXNlX3UgPSBtcGlfYWxsb2NfbGltYl9zcGFjZSAobWF4X3Vfc2l6ZSwgZXNlYyk7Ci0gICAgIE1QTl9aRVJPIChiYXNlX3UsIG1heF91X3NpemUpOwotIAotQEAgLTYxOSw2ICs2MjEsMTAgQEAgX2djcnlfbXBpX3Bvd20gKGdjcnlfbXBpX3QgcmVzLAotICAgICAgICAgewotICAgICAgICAgICBpbnQgYzA7Ci0gICAgICAgICAgIG1waV9saW1iX3QgZTA7Ci0rICAgICAgICAgIHN0cnVjdCBnY3J5X21waSB3LCB1OwotKyAgICAgICAgICB3LnNpZ24gPSB1LnNpZ24gPSAwOwotKyAgICAgICAgICB3LmZsYWdzID0gdS5mbGFncyA9IDA7Ci0rICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLSAKLSAgICAgICAgICAgY291bnRfbGVhZGluZ196ZXJvcyAoYzAsIGUpOwotICAgICAgICAgICBlID0gKGUgPDwgYzApOwotQEAgLTY1MiwyOSArNjU4LDMxIEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICAgICAgY291bnRfdHJhaWxpbmdfemVyb3MgKGMwLCBlMCk7Ci0gICAgICAgICAgIGUwID0gKGUwID4+IGMwKSA+PiAxOwotIAotLSAgICAgICAgICAvKgotLSAgICAgICAgICAgKiAgYmFzZV91IDw9IHByZWNvbXBbZTBdCi0tICAgICAgICAgICAqICBiYXNlX3Vfc2l6ZSA8PSBwcmVjb21wX3NpemVbZTBdCi0tICAgICAgICAgICAqLwotLSAgICAgICAgICBiYXNlX3Vfc2l6ZSA9IDA7Ci0tICAgICAgICAgIGZvciAoayA9IDA7IGsgPCAoMTw8IChXIC0gMSkpOyBrKyspCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgc3RydWN0IGdjcnlfbXBpIHcsIHU7Ci0tICAgICAgICAgICAgICB3LmFsbG9jZWQgPSB3Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLS0gICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgICAgdy5zaWduID0gdS5zaWduID0gMDsKLS0gICAgICAgICAgICAgIHcuZmxhZ3MgPSB1LmZsYWdzID0gMDsKLS0gICAgICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLS0gICAgICAgICAgICAgIHUuZCA9IHByZWNvbXBba107Ci0tCi0tICAgICAgICAgICAgICBtcGlfc2V0X2NvbmQgKCZ3LCAmdSwgayA9PSBlMCk7Ci0tICAgICAgICAgICAgICBiYXNlX3Vfc2l6ZSB8PSAoIHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gZTApKSApOwotLSAgICAgICAgICAgIH0KLS0KLSAgICAgICAgICAgZm9yIChqICs9IFcgLSBjMDsgaiA+PSAwOyBqLS0pCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLAotLSAgICAgICAgICAgICAgICAgICAgICAgaiA9PSAwID8gYmFzZV91IDogcnAsIGogPT0gMCA/IGJhc2VfdV9zaXplIDogcnNpemUsCi0rCi0rICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICogIGJhc2VfdSA8PSBwcmVjb21wW2UwXQotKyAgICAgICAgICAgICAgICogIGJhc2VfdV9zaXplIDw9IHByZWNvbXBfc2l6ZVtlMF0KLSsgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgPSAwOwotKyAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8ICgxPDwgKFcgLSAxKSk7IGsrKykKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIHcuYWxsb2NlZCA9IHcubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotKyAgICAgICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotKyAgICAgICAgICAgICAgICAgIHUuZCA9IHByZWNvbXBba107Ci0rCi0rICAgICAgICAgICAgICAgICAgbXBpX3NldF9jb25kICgmdywgJnUsIGsgPT0gZTApOwotKyAgICAgICAgICAgICAgICAgIGJhc2VfdV9zaXplIHw9ICggcHJlY29tcF9zaXplW2tdICYgKDBVTCAtIChrID09IGUwKSkgKTsKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgdy5hbGxvY2VkID0gdy5ubGltYnMgPSByc2l6ZTsKLSsgICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcnNpemU7Ci0rICAgICAgICAgICAgICB1LmQgPSBycDsKLSsgICAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBqICE9IDApOwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgXj0gKChiYXNlX3Vfc2l6ZSBeIHJzaXplKSAgJiAoMFVMIC0gKGogIT0gMCkpKTsKLSsKLSsgICAgICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwgYmFzZV91LCBiYXNlX3Vfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotICAgICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLSAgICAgICAgICAgICAgIHJzaXplID0geHNpemU7Ci0tLSAKLTIuMTEuMAotCi0KLUZyb20gMTI5YzE5NjBlNTU2MDNlYzNmNmZkMWNkOWNkNTFiMjJlOWE5YTdlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMTo0ODo0NCArMDkwMAotU3ViamVjdDogW1BBVENIIDMvNV0gcnNhOiBBZGQgZXhwb25lbnQgYmxpbmRpbmcuCi0KLSogY2lwaGVyL3JzYS5jIChzZWNyZXQpOiBCbGluZCBzZWNyZXQgRCB3aXRoIHJhbmRvbWl6ZWQgbm9uY2UgUiBmb3IKLW1waV9wb3dtIGNvbXB1dGF0aW9uLgotCi0tLQotCi1Dby1hdXRob3JlZC1ieTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotCi1UaGUgcGFwZXIgZGVzY3JpYmluZyBhdHRhY2s6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTcvNjI3Ci0KLVNsaWRpbmcgcmlnaHQgaW50byBkaXNhc3RlcjogTGVmdC10by1yaWdodCBzbGlkaW5nIHdpbmRvd3MgbGVhawotYnkgRGFuaWVsIEouIEJlcm5zdGVpbiBhbmQgSm9hY2hpbSBCcmVpdG5lciBhbmQgRGFuaWVsIEdlbmtpbiBhbmQKLUxlb24gR3Jvb3QgQnJ1aW5kZXJpbmsgYW5kIE5hZGlhIEhlbmluZ2VyIGFuZCBUYW5qYSBMYW5nZSBhbmQKLUNocmlzdGluZSB2YW4gVnJlZGVuZGFhbCBhbmQgWXV2YWwgWWFyb20KLQotICBJdCBpcyB3ZWxsIGtub3duIHRoYXQgY29uc3RhbnQtdGltZSBpbXBsZW1lbnRhdGlvbnMgb2YgbW9kdWxhcgotICBleHBvbmVudGlhdGlvbiBjYW5ub3QgdXNlIHNsaWRpbmcgd2luZG93cy4gSG93ZXZlciwgc29mdHdhcmUKLSAgbGlicmFyaWVzIHN1Y2ggYXMgTGliZ2NyeXB0LCB1c2VkIGJ5IEdudVBHLCBjb250aW51ZSB0byB1c2Ugc2xpZGluZwotICB3aW5kb3dzLiBJdCBpcyB3aWRlbHkgYmVsaWV2ZWQgdGhhdCwgZXZlbiBpZiB0aGUgY29tcGxldGUgcGF0dGVybiBvZgotICBzcXVhcmluZ3MgYW5kIG11bHRpcGxpY2F0aW9ucyBpcyBvYnNlcnZlZCB0aHJvdWdoIGEgc2lkZS1jaGFubmVsCi0gIGF0dGFjaywgdGhlIG51bWJlciBvZiBleHBvbmVudCBiaXRzIGxlYWtlZCBpcyBub3Qgc3VmZmljaWVudCB0bwotICBjYXJyeSBvdXQgYSBmdWxsIGtleS1yZWNvdmVyeSBhdHRhY2sgYWdhaW5zdCBSU0EuIFNwZWNpZmljYWxseSwKLSAgNC1iaXQgc2xpZGluZyB3aW5kb3dzIGxlYWsgb25seSA0MCUgb2YgdGhlIGJpdHMsIGFuZCA1LWJpdCBzbGlkaW5nCi0gIHdpbmRvd3MgbGVhayBvbmx5IDMzJSBvZiB0aGUgYml0cy4KLQotICBJbiB0aGlzIHBhcGVyIHdlIGRlbW9uc3RyYXRlIGEgY29tcGxldGUgYnJlYWsgb2YgUlNBLTEwMjQgYXMKLSAgaW1wbGVtZW50ZWQgaW4gTGliZ2NyeXB0LiBPdXIgYXR0YWNrIG1ha2VzIGVzc2VudGlhbCB1c2Ugb2YgdGhlIGZhY3QKLSAgdGhhdCBMaWJnY3J5cHQgdXNlcyB0aGUgbGVmdC10by1yaWdodCBtZXRob2QgZm9yIGNvbXB1dGluZyB0aGUKLSAgc2xpZGluZy13aW5kb3cgZXhwYW5zaW9uLiBXZSBzaG93IGZvciB0aGUgZmlyc3QgdGltZSB0aGF0IHRoZQotICBkaXJlY3Rpb24gb2YgdGhlIGVuY29kaW5nIG1hdHRlcnM6IHRoZSBwYXR0ZXJuIG9mIHNxdWFyaW5ncyBhbmQKLSAgbXVsdGlwbGljYXRpb25zIGluIGxlZnQtdG8tcmlnaHQgc2xpZGluZyB3aW5kb3dzIGxlYWtzIHNpZ25pZmljYW50bHkKLSAgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBleHBvbmVudCBiaXRzIHRoYW4gZm9yIHJpZ2h0LXRvLWxlZnQuIFdlIHNob3cKLSAgaG93IHRvIGluY29ycG9yYXRlIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbnRvIHRoZQotICBIZW5pbmdlci1TaGFjaGFtIGFsZ29yaXRobSBmb3IgcGFydGlhbCBrZXkgcmVjb25zdHJ1Y3Rpb24sIGFuZCB1c2UKLSAgaXQgdG8gb2J0YWluIHZlcnkgZWZmaWNpZW50IGZ1bGwga2V5IHJlY292ZXJ5IGZvciBSU0EtMTAyNC4gV2UgYWxzbwotICBwcm92aWRlIHN0cm9uZyBldmlkZW5jZSB0aGF0IHRoZSBzYW1lIGF0dGFjayB3b3JrcyBmb3IgUlNBLTIwNDggd2l0aAotICBvbmx5IG1vZGVyYXRlbHkgbW9yZSBjb21wdXRhdGlvbi4KLQotRXhwb25lbnQgYmxpbmRpbmcgaXMgYSBraW5kIG9mIHdvcmthcm91bmQgdG8gYWRkIG5vaXNlLiAgU2lnbmFsIChsZWFrKQotaXMgc3RpbGwgdGhlcmUgZm9yIG5vbi1jb25zdGFudC10aW1lIGltcGxlbWVudGF0aW9uLgotCi0oYmFja3BvcnRlZCBmcm9tIG1hc3RlciBjb21taXQ6Ci04NzI1Yzk5ZmZhNDE3NzhmMzgyY2E5NzIzMzE4M2JjZDY4N2JiMGNlKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY2lwaGVyL3JzYS5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggYjZjNzM3NDEuLjI1ZTI5YjVjIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDIxLDE1ICsxMDIxLDMzIEBAIHNlY3JldCAoZ2NyeV9tcGlfdCBvdXRwdXQsIGdjcnlfbXBpX3QgaW5wdXQsIFJTQV9zZWNyZXRfa2V5ICpza2V5ICkKLSAgICAgICBnY3J5X21waV90IG0xID0gbXBpX2FsbG9jX3NlY3VyZSggbXBpX2dldF9ubGltYnMoc2tleS0+bikrMSApOwotICAgICAgIGdjcnlfbXBpX3QgbTIgPSBtcGlfYWxsb2Nfc2VjdXJlKCBtcGlfZ2V0X25saW1icyhza2V5LT5uKSsxICk7Ci0gICAgICAgZ2NyeV9tcGlfdCBoICA9IG1waV9hbGxvY19zZWN1cmUoIG1waV9nZXRfbmxpbWJzKHNrZXktPm4pKzEgKTsKLS0KLS0gICAgICAvKiBtMSA9IGMgXiAoZCBtb2QgKHAtMSkpIG1vZCBwICovCi0rICAgICAgZ2NyeV9tcGlfdCBEX2JsaW5kID0gbXBpX2FsbG9jX3NlY3VyZSAoIG1waV9nZXRfbmxpbWJzKHNrZXktPm4pICsgMSApOwotKyAgICAgIGdjcnlfbXBpX3QgcjsKLSsgICAgICB1bnNpZ25lZCBpbnQgcl9uYml0czsKLSsKLSsgICAgICByX25iaXRzID0gbXBpX2dldF9uYml0cyAoc2tleS0+cCkgLyA0OwotKyAgICAgIGlmIChyX25iaXRzIDwgOTYpCi0rICAgICAgICByX25iaXRzID0gOTY7Ci0rICAgICAgciA9IG1waV9hbGxvY19zZWN1cmUgKChyX25iaXRzICsgQklUU19QRVJfTVBJX0xJTUItMSkvQklUU19QRVJfTVBJX0xJTUIpOwotKwotKyAgICAgIC8qIGRfYmxpbmQgPSAoZCBtb2QgKHAtMSkpICsgKHAtMSkgKiByICovCi0rICAgICAgLyogbTEgPSBjIF4gZF9ibGluZCBtb2QgcCAqLwotKyAgICAgIF9nY3J5X21waV9yYW5kb21pemUgKHIsIHJfbmJpdHMsIEdDUllfV0VBS19SQU5ET00pOwotKyAgICAgIG1waV9zZXRfaGlnaGJpdCAociwgcl9uYml0cyAtIDEpOwotICAgICAgIG1waV9zdWJfdWkoIGgsIHNrZXktPnAsIDEgICk7Ci0tICAgICAgbXBpX2ZkaXZfciggaCwgc2tleS0+ZCwgaCApOwotLSAgICAgIG1waV9wb3dtKCBtMSwgaW5wdXQsIGgsIHNrZXktPnAgKTsKLS0gICAgICAvKiBtMiA9IGMgXiAoZCBtb2QgKHEtMSkpIG1vZCBxICovCi0rICAgICAgbXBpX211bCAoIERfYmxpbmQsIGgsIHIgKTsKLSsgICAgICBtcGlfZmRpdl9yICggaCwgc2tleS0+ZCwgaCApOwotKyAgICAgIG1waV9hZGQgKCBEX2JsaW5kLCBEX2JsaW5kLCBoICk7Ci0rICAgICAgbXBpX3Bvd20oIG0xLCBpbnB1dCwgRF9ibGluZCwgc2tleS0+cCApOwotKyAgICAgIC8qIGRfYmxpbmQgPSAoZCBtb2QgKHEtMSkpICsgKHEtMSkgKiByICovCi0rICAgICAgLyogbTIgPSBjIF4gZF9ibGluZCBtb2QgcSAqLwotKyAgICAgIF9nY3J5X21waV9yYW5kb21pemUgKHIsIHJfbmJpdHMsIEdDUllfV0VBS19SQU5ET00pOwotKyAgICAgIG1waV9zZXRfaGlnaGJpdCAociwgcl9uYml0cyAtIDEpOwotICAgICAgIG1waV9zdWJfdWkoIGgsIHNrZXktPnEsIDEgICk7Ci0tICAgICAgbXBpX2ZkaXZfciggaCwgc2tleS0+ZCwgaCApOwotLSAgICAgIG1waV9wb3dtKCBtMiwgaW5wdXQsIGgsIHNrZXktPnEgKTsKLSsgICAgICBtcGlfbXVsICggRF9ibGluZCwgaCwgciApOwotKyAgICAgIG1waV9mZGl2X3IgKCBoLCBza2V5LT5kLCBoICk7Ci0rICAgICAgbXBpX2FkZCAoIERfYmxpbmQsIERfYmxpbmQsIGggKTsKLSsgICAgICBtcGlfcG93bSggbTIsIGlucHV0LCBEX2JsaW5kLCBza2V5LT5xICk7Ci0gICAgICAgLyogaCA9IHUgKiAoIG0yIC0gbTEgKSBtb2QgcSAqLwotICAgICAgIG1waV9zdWIoIGgsIG0yLCBtMSApOwotICAgICAgIGlmICggbXBpX2hhc19zaWduICggaCApICkKLS0tIAotMi4xMS4wCi0KLQotRnJvbSA4ZTFhNjI4OWI3ZDExYThiZjZjOTRhZmZhMDZjOTc5NGU3MjE2ZTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBUaHUsIDI5IEp1biAyMDE3IDEyOjM2OjI3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSByc2E6IEZpeCBleHBvbmVudCBibGluZGluZy4KLQotKiBjaXBoZXIvcnNhLmMgKHNlY3JldCk6IEZyZWUgRF9CTElORC4KLQotLS0KLQotRml4ZXMtY29tbWl0OiBhOWY2MTJkZWY4MDFjODE0NWQ1NTFkOTk1NDc1ZTVkNTFhNGM5ODhjCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBjaXBoZXIvcnNhLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggMjVlMjliNWMuLjMzZjkyZWJkIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDU3LDYgKzEwNTcsNyBAQCBzZWNyZXQgKGdjcnlfbXBpX3Qgb3V0cHV0LCBnY3J5X21waV90IGlucHV0LCBSU0Ffc2VjcmV0X2tleSAqc2tleSApCi0gICAgICAgbXBpX211bCAoIGgsIGgsIHNrZXktPnAgKTsKLSAgICAgICBtcGlfYWRkICggb3V0cHV0LCBtMSwgaCApOwotIAotKyAgICAgIG1waV9mcmVlICggRF9ibGluZCApOwotICAgICAgIG1waV9mcmVlICggaCApOwotICAgICAgIG1waV9mcmVlICggbTEgKTsKLSAgICAgICBtcGlfZnJlZSAoIG0yICk7Ci0tLSAKLTIuMTEuMAotCi0KLUZyb20gNGU1NDk3NzUyMTcyZWRjNDQ0MDI5YWY2NDVmMjhjYjg4Y2U5MzkwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMjo0MDoxOSArMDkwMAotU3ViamVjdDogW1BBVENIIDUvNV0gcnNhOiBNb3JlIGZpeC4KLQotKiBjaXBoZXIvcnNhLmMgKHNlY3JldCk6IEZyZWUgUi4KLQotLS0KLQotRml4ZXMtY29tbWl0OiBhOWY2MTJkZWY4MDFjODE0NWQ1NTFkOTk1NDc1ZTVkNTFhNGM5ODhjCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBjaXBoZXIvcnNhLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggMzNmOTJlYmQuLjhkOGQxNTdiIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDU3LDYgKzEwNTcsNyBAQCBzZWNyZXQgKGdjcnlfbXBpX3Qgb3V0cHV0LCBnY3J5X21waV90IGlucHV0LCBSU0Ffc2VjcmV0X2tleSAqc2tleSApCi0gICAgICAgbXBpX211bCAoIGgsIGgsIHNrZXktPnAgKTsKLSAgICAgICBtcGlfYWRkICggb3V0cHV0LCBtMSwgaCApOwotIAotKyAgICAgIG1waV9mcmVlICggciApOwotICAgICAgIG1waV9mcmVlICggRF9ibGluZCApOwotICAgICAgIG1waV9mcmVlICggaCApOwotICAgICAgIG1waV9mcmVlICggbTEgKTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NTg5ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotQWRkIGFuZCB1c2UgcGtnLWNvbmZpZyBmb3IgbGliZ2NyeXB0IGluc3RlYWQgb2YgLWNvbmZpZyBzY3JpcHRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbdXBzdHJlYW0gaGF2ZSBpbmRpY2F0ZWQgdGhleSBkb24ndCB3YW50IGEgcGtnLWNvbmZpZyBkZXBlbmRlbmN5XQotCi1SUCAyMDE0LzUvMjIKLQotUmViYXNlIHRvIDEuNy4wCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKwotIHNyYy9saWJnY3J5cHQubTQgICAgfCA3MSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9saWJnY3J5cHQucGMuaW4gfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpYmdjcnlwdC5wYy5pbgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmNjgzZTIxLi41NjZlMWM4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMzE0LDYgKzIzMTQsNyBAQCByYW5kb20vTWFrZWZpbGUKLSBkb2MvTWFrZWZpbGUKLSBzcmMvTWFrZWZpbGUKLSBzcmMvZ2NyeXB0LmgKLStzcmMvbGliZ2NyeXB0LnBjCi0gc3JjL2xpYmdjcnlwdC1jb25maWcKLSBzcmMvdmVyc2lvbmluZm8ucmMKLSB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3NyYy9saWJnY3J5cHQubTQgYi9zcmMvbGliZ2NyeXB0Lm00Ci1pbmRleCBjNjdjZmVjLi40ZWE1ZjJjIDEwMDY0NAotLS0tIGEvc3JjL2xpYmdjcnlwdC5tNAotKysrIGIvc3JjL2xpYmdjcnlwdC5tNAotQEAgLTI5LDMwICsyOSw2IEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KLSBkbmwKLSBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotIFsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotLSAgQUNfQVJHX1dJVEgobGliZ2NyeXB0LXByZWZpeCwKLS0gICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLWxpYmdjcnlwdC1wcmVmaXg9UEZYXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIExJQkdDUllQVCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAotLSAgICAgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiIpCi0tICBpZiB0ZXN0IHgiJHtMSUJHQ1JZUFRfQ09ORklHfSIgPSB4IDsgdGhlbgotLSAgICAgaWYgdGVzdCB4IiR7bGliZ2NyeXB0X2NvbmZpZ19wcmVmaXh9IiAhPSB4IDsgdGhlbgotLSAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0vYmluL2xpYmdjcnlwdC1jb25maWciCi0tICAgICBlbHNlCi0tICAgICAgIGNhc2UgIiR7U1lTUk9PVH0iIGluCi0tICAgICAgICAgLyopCi0tICAgICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIiA7IHRoZW4KLS0gICAgICAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtTWVNST09UfS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKLS0gICAgICAgICAgIGZpCi0tICAgICAgICAgICA7OwotLSAgICAgICAgICcnKQotLSAgICAgICAgICAgOzsKLS0gICAgICAgICAgKikKLS0gICAgICAgICAgIEFDX01TR19XQVJOKFtJZ25vcmluZyBcJFNZU1JPT1QgYXMgaXQgaXMgbm90IGFuIGFic29sdXRlIHBhdGguXSkKLS0gICAgICAgICAgIDs7Ci0tICAgICAgIGVzYWMKLS0gICAgIGZpCi0tICBmaQotLQotLSAgQUNfUEFUSF9QUk9HKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQotICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjIuMCwkMSkKLSAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHJlcV9saWJnY3J5cHRfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTYyLDQ4ICszOCwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgbWluX2xpYmdjcnlwdF92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgTElCR0NSWVBUIC0gdmVyc2lvbiA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAotLSAgICBsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb249YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKLS0gICAgbWFqb3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCi0tICAgIG1pbm9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMi8nYAotLSAgICBtaWNybz1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDMvJ2AKLS0gICAgaWYgdGVzdCAiJG1ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICBvaz15ZXMKLS0gICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJG1ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICBmaQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIEFDX01TR19SRVNVTFQoW3llcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbildKQotLSAgZWxzZQotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotLSAgZmkKLSsgIFBLR19DSEVDS19NT0RVTEVTKExJQkdDUllQVCwgW2xpYmdjcnlwdCA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCi0rCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IGxpYmdjcnlwdCwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUKLSAgICAgIGlmIHRlc3QgIiRyZXFfbGliZ2NyeXB0X2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRMSUJHQ1JZUFRfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGxpYmdjcnlwdGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJHQ1JZUFQgQVBJIHZlcnNpb25dKQotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTExNiwxMCArNTcsOCBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgZmkKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHIC0tbGlic2AKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLS0gICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkTElCR0NSWVBUX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAotKyAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9aG9zdCBsaWJnY3J5cHRgCi0gICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KLSAgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCi0gICBBQ19NU0dfV0FSTihbWwotQEAgLTEzNCw4ICs3Myw2IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCi0gICAgICAgZmkKLSAgICAgZmkKLSAgIGVsc2UKLS0gICAgTElCR0NSWVBUX0NGTEFHUz0iIgotLSAgICBMSUJHQ1JZUFRfTElCUz0iIgotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLSAgIEFDX1NVQlNUKExJQkdDUllQVF9DRkxBR1MpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5wYy5pbiBiL3NyYy9saWJnY3J5cHQucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yZmM4ZjUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvbGliZ2NyeXB0LnBjLmluCi1AQCAtMCwwICsxLDMzIEBACi0rIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBwa2ctY29uZmlnIG1ldGFkYXRhIGZpbGUuCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0rIyBBdXRob3I6IFNpbW9uIEpvc2Vmc3NvbgotKyMKLSsjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKLSsjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rIwotKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQotKyMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0rCi0rcHJlZml4PUBwcmVmaXhACi0rZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotK2xpYmRpcj1AbGliZGlyQAotK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0rCi0rIyBBUEkgaW5mbwotK2FwaV92ZXJzaW9uPUBMSUJHQ1JZUFRfQ09ORklHX0FQSV9WRVJTSU9OQAotK2hvc3Q9QExJQkdDUllQVF9DT05GSUdfSE9TVEAKLSsKLSsjIE1pc2MgaW5mb3JtYXRpb24uCi0rc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9DSVBIRVJTQAotK2FzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX1BVQktFWV9DSVBIRVJTQAotK2RpZ2VzdHM9QExJQkdDUllQVF9ESUdFU1RTQAotKwotK05hbWU6IGxpYmdjcnlwdAotK0Rlc2NyaXB0aW9uOiBHTlUgY3J5cHRvIGxpYnJhcnkKLStVUkw6IGh0dHA6Ly93d3cuZ251cGcub3JnCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxnY3J5cHQKLStMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyZTYyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC1JQ0UtZmFpbHVyZS1vbi1taXBzLXdpdGgtb3B0aW9uLU8tYW5kLWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi10ZXN0cy9iZW5jaC1zbG9wZS5jOiB3b3JrYXJvdW5kIElDRSBmYWlsdXJlIG9uIG1pcHMgd2l0aCAnLU8gLWcnCi0KLUhpdCBhIElDRSBhbmQgY291bGQgcmVkdWNlIGl0IHRvIHRoZSBmb2xsb3dpbmcgbWluaW1hbCBleGFtcGxlOgotCi0xLiBPbmx5IHRoZSBzaXplIG9mIGFycmF5IGFzc2lnbmVkIHdpdGggMiBjYXVzZWQgdGhlIGlzc3VlOgotJCBjYXQgPiBtaXBnY2MtdGVzdC5jIDw8IEVORAotCi1pbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgICAgICBjaGFyICpwU3RyQXJyeVtBUlJBWV9TSVpFX01BWF0gPSB7ImhlbGxvIn07Ci0gICAgICAgIGludCBpID0gMDsKLQotICAgICAgICB3aGlsZShwU3RyQXJyeVtpXSAmJiBpPEFSUkFZX1NJWkVfTUFYKQotICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcFN0ckFycnlbaV0pOwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotfQotCi1FTkQKLQotMi4gT25seSAtTzEgYW5kIC1nIG9uIG1pcHMgY2F1c2VkIHRoZSBpc3N1ZToKLSQgbWlwcy1wb2t5LWxpbnV4LWdjYyAtTzEgLWcgLW8gbWlwZ2NjLXRlc3QgbWlwZ2NjLXRlc3QuYwotbWlwZ2NjLXRlc3QuYzogSW4gZnVuY3Rpb24gJ21haW4nOgotbWlwZ2NjLXRlc3QuYzoxODoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiwgYXQgZHdhcmYyb3V0LmM6MjA4MTAKLSB9Ci0gXgotUGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKLXdpdGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KLVNlZSA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4gZm9yIGluc3RydWN0aW9ucwotCi0zLiBUaGUgcXVpY2sgd29ya3JvdW5kIGlzIHRyeWluZyB0byBlbmxhcmdlIHRoZSBzaXplIG9mIGFycmF5IHdpdGggbGFyZ2VyCi10aGFuIDIuCi0KLTQuIEZpbGUgYSBidWcgdG8gR05VLCBidXQgaXQgY291bGQgbm90IGJlIHJlcHJvZHVjZWQgb24gdGhlcmUgZW52aXJvbm1lbnQuCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYwNjQzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RzL2JlbmNoLXNsb3BlLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYmVuY2gtc2xvcGUuYyBiL3Rlc3RzL2JlbmNoLXNsb3BlLmMKLWluZGV4IGJkMDUwNjQuLjI4YzI0MzggMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iZW5jaC1zbG9wZS5jCi0rKysgYi90ZXN0cy9iZW5jaC1zbG9wZS5jCi1AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgc3RhdGljIHN0cnVjdCBiZW5jaF9vcHMgaGFzaF9vcHMgPSB7Ci0gfTsKLSAKLSAKLS1zdGF0aWMgc3RydWN0IGJlbmNoX2hhc2hfbW9kZSBoYXNoX21vZGVzW10gPSB7Ci0rc3RhdGljIHN0cnVjdCBiZW5jaF9oYXNoX21vZGUgaGFzaF9tb2Rlc1szXSA9IHsKLSAgIHsiIiwgJmhhc2hfb3BzfSwKLSAgIHswfSwKLSB9OwotQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmVuY2hfb3BzIG1hY19vcHMgPSB7Ci0gfTsKLSAKLSAKLS1zdGF0aWMgc3RydWN0IGJlbmNoX21hY19tb2RlIG1hY19tb2Rlc1tdID0gewotK3N0YXRpYyBzdHJ1Y3QgYmVuY2hfbWFjX21vZGUgbWFjX21vZGVzWzNdID0gewotICAgeyIiLCAmbWFjX29wc30sCi0gICB7MH0sCi0gfTsKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZGU4YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBjYzBlMmI0MDNkMzM4OTI5NjM1MTNhM2JhOThlNGFlNWEwNWE0ZDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAwNDo0NDoyOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9NYWtlZmlsZS5hbTogZml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHB0aHJlYWRfY3JlYXRlJwotCi1BZGQgbWlzc2luZyAnLWxwdGhyZWFkJyB0byBDRkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZDQ2MmYzMC4uYmVmNmRkNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTYyLDQgKzYyLDQgQEAgRVhUUkFfRElTVCA9IFJFQURNRSByc2EtMTZrLmtleSBjYXZzX3Rlc3RzLnNoIGNhdnNfZHJpdmVyLnBsIFwKLSAKLSBMREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX0xJQlMpCi0gdF9sb2NrX0xEQUREID0gJChzdGFuZGFyZF9sZGFkZCkgJChHUEdfRVJST1JfTVRfTElCUykKLS10X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKQotK3RfbG9ja19DRkxBR1MgPSAkKEdQR19FUlJPUl9NVF9DRkxBR1MpIC1scHRocmVhZAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTU0MDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWxpYmdjcnlwdDogZml4IGJ1aWxkaW5nIGVycm9yIHdpdGggJy1PMicgaW4gc3lzcm9vdCBwYXRoCi0KLUNoYXJhY3RlcnMgbGlrZSAnLU8yJyBvciAnLU9mYXN0JyB3aWxsIGJlIHJlcGxhY2VkIGJ5ICctTzEnIHdoZW4gY29tcGlsaW5nIGNpcGhlci4KLUlmIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgbGliZ2NyeXB0IGFuZCBzeXNyb290IGNvbnRhaW5zIHN1Y2ggY2hhcmFjdGVycywgd2Ugd291bGQKLWdldCBjb21waWxlIGVycm9ycyBiZWNhdXNlIHRoZSBzeXNyb290IHBhdGggaGFzIGJlZW4gbW9kaWZpZWQuCi0KLUZpeCB0aGlzIGJ5IGFkZGluZyBibGFuayBzcGFjZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgb3JpZ2luYWwgbWF0Y2hpbmcgcGF0dGVybiBpbiB0aGUKLXNlZCBjb21tYW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjaXBoZXIvTWFrZWZpbGUuYW0gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvTWFrZWZpbGUuYW0gYi9jaXBoZXIvTWFrZWZpbGUuYW0KLWluZGV4IDc2Y2RjOTYuLjlhODk3OTIgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvTWFrZWZpbGUuYW0KLSsrKyBiL2NpcGhlci9NYWtlZmlsZS5hbQotQEAgLTY5LDcgKzY5LDcgQEAgcmZjMjI2OC5jIFwKLSBjYW1lbGxpYS5jIGNhbWVsbGlhLmggY2FtZWxsaWEtZ2x1ZS5jCi0gCi0gaWYgRU5BQkxFX09fRkxBR19NVU5HSU5HCi0tb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvLU9cKFsyLTlzXVsyLTlzXSpcKS8tTzEvJyAtZSAncy8tT2Zhc3QvLU8xL2cnCi0rb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvIC1PXChbMi05c11bMi05c10qXCkgLyAtTzEgLycgLWUgJ3MvIC1PZmFzdCAvIC1PMSAvZycKLSBlbHNlCi0gb19mbGFnX211bmdpbmcgPSBjYXQKLSBlbmRpZgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwMzU3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLVNFQ1RJT04gPSAibGlicyIKLQotIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzUyNi5wYXRjaCBcCi0iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgotUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotfQotCi0jIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLwotfQotCi1QQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgotRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTBhMWZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGxpYmdjcnlwdC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVhYzZkMTE5OTk2NTBlOGExNDkzNjc0YzFiZGJjN2Y4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjMGFlYzc3MTRkNzVkODEyYjY2NWJkNTEwZDY2MDMxYjFiMmNlOGZhODU1Y2MyYzAyMjM4Yzk1NGVhMzY5ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOTgyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKK0hPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKK1NFQ1RJT04gPSAibGlicyIKKworIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTBjZTQzNTJmOWVhNmY1NjBiZGM2YzU2NDRhZTkzYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmU0NzBiN2YyZDNhNzAzZTg3NDdmMDVhOGMxOWQ5ZTEwZTI2ZWJmMmQ1ZjNkNzFmZjc1YTQwZjUwNGUxMmVlIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjYXBhYmlsaXRpZXMiCitQQUNLQUdFQ09ORklHW2NhcGFiaWxpdGllc10gPSAiLS13aXRoLWNhcGFiaWxpdGllcywtLXdpdGhvdXQtY2FwYWJpbGl0aWVzLGxpYmNhcCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGlzIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgb25lIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Cit9CisKKyMgbGliZ2NyeXB0LnBjIGlzIGFkZGVkIGxvY2FsbHkgYW5kIHRodXMgaW5zdGFsbGVkIGhlcmUKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL2xpYmdjcnlwdC5wYyAke0R9LyR7bGliZGlyfS9wa2djb25maWcvCit9CisKK1BBQ0tBR0VTID0rICJkdW1wc2V4cC1kZXYiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2htYWMyNTYiCitGSUxFU19kdW1wc2V4cC1kZXYgKz0gIiR7YmluZGlyfS9kdW1wc2V4cCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MGRiMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2VuZGxpbmU9MjM7bWQ1PTY0YWY5ODQ2YmFhZjg1Mjc5M2ZkM2E1YWYzOTNhY2JmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7ZW5kbGluZT0yMDttZDU9ODcyYjIzODlmZTliYWU3ZmZiODBkMmI5MTIyNWFmYmMiCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTc0NTY3MDlkYmJjYmI2OTM1NDMxN2ZmZTNlMzQ3Y2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM0YmNiYzkwMTE2OTMyZTNhY2QzN2IzNzgxMmQ4NjUzYjFiMTg5YzE5MDQ5ODU4OThlODYwYWY4MThhZWU2OSIKLVBSID0gInIxIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dAotQ1BQRkxBR1MgKz0gIi1QIgotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCVRBUkdFVF9GSUxFPWxpbnV4LWdudQotCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KLQkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKLQkJVEFSR0VUX0ZJTEU9Ci0JZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KLQkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9Ci0JZmkKLQotCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KLQkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni1wYy1saW51eC1nbnUgOzsKLQkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKLQkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OwotCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXBjLWxpbnV4LWdudSA7OwotCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsgCi0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJlMmQ1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJTbWFsbCBsaWJyYXJ5IHRoYXQgZGVmaW5lcyBjb21tb24gZXJyb3IgdmFsdWVzIGZvciBhbGwgR251UEcgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGliZ3BnLWVycm9yLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnLWVycm9yLmguaW47ZW5kbGluZT0yMzttZDU9YmVhZTFlNDRkOGQ1YzI2NWQxOTQ3NjAyNzYwMzNhN2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2luaXQuYztlbmRsaW5lPTIwO21kNT04NzJiMjM4OWZlOWJhZTdmZmI4MGQyYjkxMjI1YWZiYyIKKworCitTRUNUSU9OID0gImxpYnMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MjE3ZWYzZTc2YTcyNzVhMmEzYjU2OWExMmRkYzk4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjkzYWFjNmZlY2I3ZGEyYjkyODcxYmI5ZWUzMzAzMmJlNmE4N2IxNzRmNTRhYmY4ZGRmMDkxMWEyMmQyOWQyIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dAorQ1BQRkxBR1MgKz0gIi1QIgorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCVRBUkdFVF9GSUxFPWxpbnV4LWdudQorCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KKwkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KKwkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9CisJZmkKKworCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKwkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni1wYy1saW51eC1nbnUgOzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXBjLWxpbnV4LWdudSA7OworCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsgCisJZXNhYworCisJaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCisJCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAorCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQorCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udi0xLjE0L2FkZC1yZWxvY2F0YWJsZS1tb2R1bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZjM3N2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwMDggKzAsMCBAQAotVGhpcyBwYXRjaCBpcyBuZWVkZWQgdG8gc29sdmUgaXNzdWVzIGxpa2UKLXwgaWNvbnYubzogSW4gZnVuY3Rpb24gYG1haW4nOgotfCAvaG9tZS9qYW1lcy9zdHVmZi9iZWFnbGUvdG1wLWVnbGliYy93b3JrL2FybXY3YS12ZnAtbmVvbi1vZS1saW51eC1nbnVlYWJpL2xpYmljb252LTEuMTQtcjAvbGliaWNvbnYtMS4xNC9zcmMvLi9pY29udi5jOjg2MTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcmVsb2NhdGUnCi18IC4uL3NyY2xpYi9saWJpY3J0LmEocHJvZ3JlbG9jLm8pOiBJbiBmdW5jdGlvbiBgcHJlcGFyZV9yZWxvY2F0ZSc6Ci18IC9ob21lL2phbWVzL3N0dWZmL2JlYWdsZS90bXAtZWdsaWJjL3dvcmsvYXJtdjdhLXZmcC1uZW9uLW9lLWxpbnV4LWdudWVhYmkvbGliaWNvbnYtMS4xNC1yMC9saWJpY29udi0xLjE0L3NyY2xpYi9wcm9ncmVsb2MuYzoyOTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNvbXB1dGVfY3Vycl9wcmVmaXgnCi18IC9ob21lL2phbWVzL3N0dWZmL2JlYWdsZS90bXAtZWdsaWJjL3dvcmsvYXJtdjdhLXZmcC1uZW9uLW9lLWxpbnV4LWdudWVhYmkvbGliaWNvbnYtMS4xNC1yMC9saWJpY29udi0xLjE0L3NyY2xpYi9wcm9ncmVsb2MuYzozMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldF9yZWxvY2F0aW9uX3ByZWZpeCcKLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLXwgbWFrZVsxXTogKioqIFtpbnN0YWxsXSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L2FyZy1ub25udWxsLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L2FyZy1ub25udWxsLmgJMjAxMi0wMS0wOCAwMjowNzozOS45MzA0ODQ0MzggLTA4MDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsvKiBBIEMgbWFjcm8gZm9yIGRlY2xhcmluZyB0aGF0IHNwZWNpZmljIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBOVUxMLgotKyAgIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBfR0xfQVJHX05PTk5VTEwoKG4sLi4uLG0pKSB0ZWxscyB0aGUgY29tcGlsZXIgYW5kIHN0YXRpYyBhbmFseXplciB0b29scwotKyAgIHRoYXQgdGhlIHZhbHVlcyBwYXNzZWQgYXMgYXJndW1lbnRzIG4sIC4uLiwgbSBtdXN0IGJlIG5vbi1OVUxMIHBvaW50ZXJzLgotKyAgIG4gPSAxIHN0YW5kcyBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LCBuID0gMiBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCBldGMuICAqLwotKyNpZm5kZWYgX0dMX0FSR19OT05OVUxMCi0rIyBpZiAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA+PSAzKSB8fCBfX0dOVUNfXyA+IDMKLSsjICBkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fIHBhcmFtcykpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9HTF9BUkdfTk9OTlVMTChwYXJhbXMpCi0rIyBlbmRpZgotKyNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9jKytkZWZzLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvYysrZGVmcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9jKytkZWZzLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9jKytkZWZzLmgJMjAxMi0wMS0wOCAwMjowNzozOS45NDI0ODQ0MzggLTA4MDAKLUBAIC0wLDAgKzEsMjcxIEBACi0rLyogQysrIGNvbXBhdGlibGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gbWFjcm9zLgotKyAgIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIF9HTF9DWFhERUZTX0gKLSsjZGVmaW5lIF9HTF9DWFhERUZTX0gKLSsKLSsvKiBUaGUgdGhyZWUgbW9zdCBmcmVxdWVudCB1c2UgY2FzZXMgb2YgdGhlc2UgbWFjcm9zIGFyZToKLSsKLSsgICAqIEZvciBwcm92aWRpbmcgYSBzdWJzdGl0dXRlIGZvciBhIGZ1bmN0aW9uIHRoYXQgaXMgbWlzc2luZyBvbiBzb21lCi0rICAgICBwbGF0Zm9ybXMsIGJ1dCBpcyBkZWNsYXJlZCBhbmQgd29ya3MgZmluZSBvbiB0aGUgcGxhdGZvcm1zIG9uIHdoaWNoCi0rICAgICBpdCBleGlzdHM6Ci0rCi0rICAgICAgICNpZiBAR05VTElCX0ZPT0AKLSsgICAgICAgIyBpZiAhQEhBVkVfRk9PQAotKyAgICAgICBfR0xfRlVOQ0RFQ0xfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICBfR0xfQ1hYQUxJQVNXQVJOIChmb28pOwotKyAgICAgICAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0rICAgICAgIC4uLgotKyAgICAgICAjZW5kaWYKLSsKLSsgICAqIEZvciBwcm92aWRpbmcgYSByZXBsYWNlbWVudCBmb3IgYSBmdW5jdGlvbiB0aGF0IGV4aXN0cyBvbiBhbGwgcGxhdGZvcm1zLAotKyAgICAgYnV0IGlzIGJyb2tlbi9pbnN1ZmZpY2llbnQgYW5kIG5lZWRzIHRvIGJlIHJlcGxhY2VkIG9uIHNvbWUgcGxhdGZvcm1zOgotKwotKyAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0rICAgICAgICMgaWYgQFJFUExBQ0VfRk9PQAotKyAgICAgICAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotKyAgICAgICAjICAgdW5kZWYgZm9vCi0rICAgICAgICMgICBkZWZpbmUgZm9vIHJwbF9mb28KLSsgICAgICAgIyAgZW5kaWYKLSsgICAgICAgX0dMX0ZVTkNERUNMX1JQTCAoZm9vLCAuLi4pOwotKyAgICAgICBfR0xfQ1hYQUxJQVNfUlBMIChmb28sIC4uLik7Ci0rICAgICAgICMgZWxzZQotKyAgICAgICBfR0xfQ1hYQUxJQVNfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLSsgICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotKyAgICAgICAuLi4KLSsgICAgICAgI2VuZGlmCi0rCi0rICAgKiBGb3IgcHJvdmlkaW5nIGEgcmVwbGFjZW1lbnQgZm9yIGEgZnVuY3Rpb24gdGhhdCBleGlzdHMgb24gc29tZSBwbGF0Zm9ybXMKLSsgICAgIGJ1dCBpcyBicm9rZW4vaW5zdWZmaWNpZW50IGFuZCBuZWVkcyB0byBiZSByZXBsYWNlZCBvbiBzb21lIG9mIHRoZW0gYW5kCi0rICAgICBpcyBhZGRpdGlvbmFsbHkgZWl0aGVyIG1pc3Npbmcgb3IgdW5kZWNsYXJlZCBvbiBzb21lIG90aGVyIHBsYXRmb3JtczoKLSsKLSsgICAgICAgI2lmIEBHTlVMSUJfRk9PQAotKyAgICAgICAjIGlmIEBSRVBMQUNFX0ZPT0AKLSsgICAgICAgIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLSsgICAgICAgIyAgIHVuZGVmIGZvbwotKyAgICAgICAjICAgZGVmaW5lIGZvbyBycGxfZm9vCi0rICAgICAgICMgIGVuZGlmCi0rICAgICAgIF9HTF9GVU5DREVDTF9SUEwgKGZvbywgLi4uKTsKLSsgICAgICAgX0dMX0NYWEFMSUFTX1JQTCAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVsc2UKLSsgICAgICAgIyAgaWYgIUBIQVZFX0ZPT0AgICBvciAgIGlmICFASEFWRV9ERUNMX0ZPT0AKLSsgICAgICAgX0dMX0ZVTkNERUNMX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICAjICBlbmRpZgotKyAgICAgICBfR0xfQ1hYQUxJQVNfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLSsgICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotKyAgICAgICAuLi4KLSsgICAgICAgI2VuZGlmCi0rKi8KLSsKLSsvKiBfR0xfRVhURVJOX0MgZGVjbGFyYXRpb247Ci0rICAgcGVyZm9ybXMgdGhlIGRlY2xhcmF0aW9uIHdpdGggQyBsaW5rYWdlLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cwotKyMgZGVmaW5lIF9HTF9FWFRFUk5fQyBleHRlcm4gIkMiCi0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJuCi0rI2VuZGlmCi0rCi0rLyogX0dMX0ZVTkNERUNMX1JQTCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyk7Ci0rICAgZGVjbGFyZXMgYSByZXBsYWNlbWVudCBmdW5jdGlvbiwgbmFtZWQgcnBsX2Z1bmMsIHdpdGggdGhlIGdpdmVuIHByb3RvdHlwZSwKLSsgICBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLCBhbmQgYXR0cmlidXRlcy4KLSsgICBFeGFtcGxlOgotKyAgICAgX0dMX0ZVTkNERUNMX1JQTCAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotKyAqLwotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1JQTChmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0ZVTkNERUNMX1JQTF8xIChycGxfIyNmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKQotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1JQTF8xKHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0VYVEVSTl9DIHJldHR5cGUgcnBsX2Z1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotKwotKy8qIF9HTF9GVU5DREVDTF9TWVMgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotKyAgIGRlY2xhcmVzIHRoZSBzeXN0ZW0gZnVuY3Rpb24sIG5hbWVkIGZ1bmMsIHdpdGggdGhlIGdpdmVuIHByb3RvdHlwZSwKLSsgICBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLCBhbmQgYXR0cmlidXRlcy4KLSsgICBFeGFtcGxlOgotKyAgICAgX0dMX0ZVTkNERUNMX1NZUyAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotKyAqLwotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0VYVEVSTl9DIHJldHR5cGUgZnVuYyBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0rCi0rLyogX0dMX0NYWEFMSUFTX1JQTCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZGVjbGFyZXMgYSBDKysgYWxpYXMgY2FsbGVkIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMKLSsgICB0aGF0IHJlZGlyZWN0cyB0byBycGxfZnVuYywgaWYgR05VTElCX05BTUVTUEFDRSBpcyBkZWZpbmVkLgotKyAgIEV4YW1wbGU6Ci0rICAgICBfR0xfQ1hYQUxJQVNfUlBMIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pKTsKLSsgKi8KLSsjZGVmaW5lIF9HTF9DWFhBTElBU19SUEwoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgIF9HTF9DWFhBTElBU19SUExfMSAoZnVuYywgcnBsXyMjZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycykKLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9IDo6cnBsX2Z1bmM7ICAgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xIChmdW5jLCBycGxfZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1JQTF8xIChmdW5jLCBycGxfZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gcnBsX2Z1bmMgbWF5IGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQKLSsgICBkZWNsYXJhdGlvbi4gIEEgY2FzdCBpcyB1c2VkIHRvIHNpbGVuY2UgdGhlICJpbnZhbGlkIGNvbnZlcnNpb24iIGVycm9yCi0rICAgdGhhdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHJldHR5cGUgKCpjb25zdCBmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICByZWludGVycHJldF9jYXN0PHJldHR5cGUoKilwYXJhbWV0ZXJzPig6OnJwbF9mdW5jKTsgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF9DQVNUXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZW5kaWYKLSsKLSsvKiBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBkZWNsYXJlcyBhIEMrKyBhbGlhcyBjYWxsZWQgR05VTElCX05BTUVTUEFDRTo6ZnVuYwotKyAgIHRoYXQgcmVkaXJlY3RzIHRvIHRoZSBzeXN0ZW0gcHJvdmlkZWQgZnVuY3Rpb24gZnVuYywgaWYgR05VTElCX05BTUVTUEFDRQotKyAgIGlzIGRlZmluZWQuCi0rICAgRXhhbXBsZToKLSsgICAgIF9HTF9DWFhBTElBU19TWVMgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikpOwotKyAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyAgLyogSWYgd2Ugd2VyZSB0byB3cml0ZQotKyAgICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9IDo6ZnVuYzsKLSsgICAgIGxpa2UgYWJvdmUgaW4gX0dMX0NYWEFMSUFTX1JQTF8xLCB0aGUgY29tcGlsZXIgY291bGQgb3B0aW1pemUgY2FsbHMKLSsgICAgIGJldHRlciAocmVtb3ZlIGFuIGluZGlyZWN0aW9uIHRocm91Z2ggYSAnc3RhdGljJyBwb2ludGVyIHZhcmlhYmxlKSwKLSsgICAgIGJ1dCB0aGVuIHRoZSBfR0xfQ1hYQUxJQVNXQVJOIG1hY3JvIGJlbG93IHdvdWxkIGNhdXNlIGEgd2FybmluZyBub3Qgb25seQotKyAgICAgZm9yIHVzZXMgb2YgOjpmdW5jIGJ1dCBhbHNvIGZvciB1c2VzIG9mIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMuICAqLwotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHN0YXRpYyByZXR0eXBlICgqZnVuYykgcGFyYW1ldGVycyA9IDo6ZnVuYzsgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTX1NZU19DQVNUIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBpcyBsaWtlICBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBleGNlcHQgdGhhdCB0aGUgQyBmdW5jdGlvbiBmdW5jIG1heSBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGRlY2xhcmF0aW9uLgotKyAgIEEgY2FzdCBpcyB1c2VkIHRvIHNpbGVuY2UgdGhlICJpbnZhbGlkIGNvbnZlcnNpb24iIGVycm9yIHRoYXQgd291bGQKLSsgICBvdGhlcndpc2Ugb2NjdXIuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHN0YXRpYyByZXR0eXBlICgqZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgXAotKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oOjpmdW5jKTsgXAotKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTX1NZU19DQVNUMiAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycywgcmV0dHlwZTIsIHBhcmFtZXRlcnMyKTsKLSsgICBpcyBsaWtlICBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBleGNlcHQgdGhhdCB0aGUgQyBmdW5jdGlvbiBpcyBwaWNrZWQgYW1vbmcgYSBzZXQgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMsCi0rICAgbmFtZWx5IHRoZSBvbmUgd2l0aCByZXR0eXBlMiBhbmQgcGFyYW1ldGVyczIuICBUd28gY29uc2VjdXRpdmUgY2FzdHMKLSsgICBhcmUgdXNlZCB0byBzaWxlbmNlIHRoZSAiY2Fubm90IGZpbmQgYSBtYXRjaCIgYW5kICJpbnZhbGlkIGNvbnZlcnNpb24iCi0rICAgZXJyb3JzIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsgIC8qIFRoZSBvdXRlciBjYXN0IG11c3QgYmUgYSByZWludGVycHJldF9jYXN0LgotKyAgICAgVGhlIGlubmVyIGNhc3Q6IFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYSBzZXQgb2Ygb3ZlcmxvYWRlZAotKyAgICAgZnVuY3Rpb25zLCBpdCB3b3JrcyBhcyBhIHN0YXRpY19jYXN0PD4sIGNob29zaW5nIHRoZSBkZXNpZ25hdGVkIHZhcmlhbnQuCi0rICAgICBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGFzIGEgc2luZ2xlIHZhcmlhbnQsIGl0IHdvcmtzIGFzIGEKLSsgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Pi4gVGhlIHBhcmVudGhlc2l6ZWQgY2FzdCBzeW50YXggd29ya3MgYm90aCB3YXlzLiAgKi8KLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QyKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzLHJldHR5cGUyLHBhcmFtZXRlcnMyKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICByZWludGVycHJldF9jYXN0PHJldHR5cGUoKilwYXJhbWV0ZXJzPiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAocmV0dHlwZTIoKilwYXJhbWV0ZXJzMikoOjpmdW5jKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QyKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzLHJldHR5cGUyLHBhcmFtZXRlcnMyKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTV0FSTiAoZnVuYyk7Ci0rICAgY2F1c2VzIGEgd2FybmluZyB0byBiZSBlbWl0dGVkIHdoZW4gOjpmdW5jIGlzIHVzZWQgYnV0IG5vdCB3aGVuCi0rICAgR05VTElCX05BTUVTUEFDRTo6ZnVuYyBpcyB1c2VkLiAgZnVuYyBtdXN0IGJlIGRlZmluZWQgd2l0aG91dCBvdmVybG9hZGVkCi0rICAgdmFyaWFudHMuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4oZnVuYykgXAotKyAgIF9HTF9DWFhBTElBU1dBUk5fMSAoZnVuYywgR05VTElCX05BTUVTUEFDRSkKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzEoZnVuYyxuYW1lc3BhY2UpIFwKLSsgICBfR0xfQ1hYQUxJQVNXQVJOXzIgKGZ1bmMsIG5hbWVzcGFjZSkKLSsvKiBUbyB3b3JrIGFyb3VuZCBHQ0MgYnVnIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzODgxPiwKLSsgICB3ZSBlbmFibGUgdGhlIHdhcm5pbmcgb25seSB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgKi8KLSsjIGlmICFfX09QVElNSVpFX18KLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgIF9HTF9XQVJOX09OX1VTRSAoZnVuYywgXAotKyAgICAgICAgICAgICAgICAgICAgICJUaGUgc3ltYm9sIDo6IiAjZnVuYyAiIHJlZmVycyB0byB0aGUgc3lzdGVtIGZ1bmN0aW9uLiAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAiVXNlICIgI25hbWVzcGFjZSAiOjoiICNmdW5jICIgaW5zdGVhZC4iKQotKyMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgICBleHRlcm4gX190eXBlb2ZfXyAoZnVuYykgZnVuYwotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzIoZnVuYyxuYW1lc3BhY2UpIFwKLSsgICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rIyBlbmRpZgotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTihmdW5jKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTV0FSTjEgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotKyAgIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgZW1pdHRlZCB3aGVuIHRoZSBnaXZlbiBvdmVybG9hZGVkIHZhcmlhbnQgb2YgOjpmdW5jCi0rICAgaXMgdXNlZCBidXQgbm90IHdoZW4gR05VTElCX05BTUVTUEFDRTo6ZnVuYyBpcyB1c2VkLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgIF9HTF9DWFhBTElBU1dBUk4xXzEgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHTlVMSUJfTkFNRVNQQUNFKQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0rICAgX0dMX0NYWEFMSUFTV0FSTjFfMiAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgbmFtZXNwYWNlKQotKy8qIFRvIHdvcmsgYXJvdW5kIEdDQyBidWcgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM4ODE+LAotKyAgIHdlIGVuYWJsZSB0aGUgd2FybmluZyBvbmx5IHdoZW4gbm90IG9wdGltaXppbmcuICAqLwotKyMgaWYgIV9fT1BUSU1JWkVfXwotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgICBfR0xfV0FSTl9PTl9VU0VfQ1hYIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3ltYm9sIDo6IiAjZnVuYyAiIHJlZmVycyB0byB0aGUgc3lzdGVtIGZ1bmN0aW9uLiAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAiICNuYW1lc3BhY2UgIjo6IiAjZnVuYyAiIGluc3RlYWQuIikKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0rICAgICBleHRlcm4gX190eXBlb2ZfXyAoZnVuYykgZnVuYwotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjIGVuZGlmCi0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfR0xfQ1hYREVGU19IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaCBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAkyMDExLTA4LTA3IDA2OjIyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMjYgKzAsMCBAQAotLS8qIEEgQyBtYWNybyBmb3IgZGVjbGFyaW5nIHRoYXQgc3BlY2lmaWMgYXJndW1lbnRzIG11c3Qgbm90IGJlIE5VTEwuCi0tICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLS8qIF9HTF9BUkdfTk9OTlVMTCgobiwuLi4sbSkpIHRlbGxzIHRoZSBjb21waWxlciBhbmQgc3RhdGljIGFuYWx5emVyIHRvb2xzCi0tICAgdGhhdCB0aGUgdmFsdWVzIHBhc3NlZCBhcyBhcmd1bWVudHMgbiwgLi4uLCBtIG11c3QgYmUgbm9uLU5VTEwgcG9pbnRlcnMuCi0tICAgbiA9IDEgc3RhbmRzIGZvciB0aGUgZmlyc3QgYXJndW1lbnQsIG4gPSAyIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IGV0Yy4gICovCi0tI2lmbmRlZiBfR0xfQVJHX05PTk5VTEwKLS0jIGlmIChfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDMpIHx8IF9fR05VQ19fID4gMwotLSMgIGRlZmluZSBfR0xfQVJHX05PTk5VTEwocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gcGFyYW1zKSkKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykKLS0jIGVuZGlmCi0tI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaAkyMDExLTA4LTA3IDA2OjIyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwyNzEgKzAsMCBAQAotLS8qIEMrKyBjb21wYXRpYmxlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG1hY3Jvcy4KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0tICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tI2lmbmRlZiBfR0xfQ1hYREVGU19ICi0tI2RlZmluZSBfR0xfQ1hYREVGU19ICi0tCi0tLyogVGhlIHRocmVlIG1vc3QgZnJlcXVlbnQgdXNlIGNhc2VzIG9mIHRoZXNlIG1hY3JvcyBhcmU6Ci0tCi0tICAgKiBGb3IgcHJvdmlkaW5nIGEgc3Vic3RpdHV0ZSBmb3IgYSBmdW5jdGlvbiB0aGF0IGlzIG1pc3Npbmcgb24gc29tZQotLSAgICAgcGxhdGZvcm1zLCBidXQgaXMgZGVjbGFyZWQgYW5kIHdvcmtzIGZpbmUgb24gdGhlIHBsYXRmb3JtcyBvbiB3aGljaAotLSAgICAgaXQgZXhpc3RzOgotLQotLSAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0tICAgICAgICMgaWYgIUBIQVZFX0ZPT0AKLS0gICAgICAgX0dMX0ZVTkNERUNMX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU19TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLS0gICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotLSAgICAgICAuLi4KLS0gICAgICAgI2VuZGlmCi0tCi0tICAgKiBGb3IgcHJvdmlkaW5nIGEgcmVwbGFjZW1lbnQgZm9yIGEgZnVuY3Rpb24gdGhhdCBleGlzdHMgb24gYWxsIHBsYXRmb3JtcywKLS0gICAgIGJ1dCBpcyBicm9rZW4vaW5zdWZmaWNpZW50IGFuZCBuZWVkcyB0byBiZSByZXBsYWNlZCBvbiBzb21lIHBsYXRmb3JtczoKLS0KLS0gICAgICAgI2lmIEBHTlVMSUJfRk9PQAotLSAgICAgICAjIGlmIEBSRVBMQUNFX0ZPT0AKLS0gICAgICAgIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLS0gICAgICAgIyAgIHVuZGVmIGZvbwotLSAgICAgICAjICAgZGVmaW5lIGZvbyBycGxfZm9vCi0tICAgICAgICMgIGVuZGlmCi0tICAgICAgIF9HTF9GVU5DREVDTF9SUEwgKGZvbywgLi4uKTsKLS0gICAgICAgX0dMX0NYWEFMSUFTX1JQTCAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVsc2UKLS0gICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0tICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLS0gICAgICAgLi4uCi0tICAgICAgICNlbmRpZgotLQotLSAgICogRm9yIHByb3ZpZGluZyBhIHJlcGxhY2VtZW50IGZvciBhIGZ1bmN0aW9uIHRoYXQgZXhpc3RzIG9uIHNvbWUgcGxhdGZvcm1zCi0tICAgICBidXQgaXMgYnJva2VuL2luc3VmZmljaWVudCBhbmQgbmVlZHMgdG8gYmUgcmVwbGFjZWQgb24gc29tZSBvZiB0aGVtIGFuZAotLSAgICAgaXMgYWRkaXRpb25hbGx5IGVpdGhlciBtaXNzaW5nIG9yIHVuZGVjbGFyZWQgb24gc29tZSBvdGhlciBwbGF0Zm9ybXM6Ci0tCi0tICAgICAgICNpZiBAR05VTElCX0ZPT0AKLS0gICAgICAgIyBpZiBAUkVQTEFDRV9GT09ACi0tICAgICAgICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tICAgICAgICMgICB1bmRlZiBmb28KLS0gICAgICAgIyAgIGRlZmluZSBmb28gcnBsX2ZvbwotLSAgICAgICAjICBlbmRpZgotLSAgICAgICBfR0xfRlVOQ0RFQ0xfUlBMIChmb28sIC4uLik7Ci0tICAgICAgIF9HTF9DWFhBTElBU19SUEwgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbHNlCi0tICAgICAgICMgIGlmICFASEFWRV9GT09AICAgb3IgICBpZiAhQEhBVkVfREVDTF9GT09ACi0tICAgICAgIF9HTF9GVU5DREVDTF9TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgIyAgZW5kaWYKLS0gICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0tICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLS0gICAgICAgLi4uCi0tICAgICAgICNlbmRpZgotLSovCi0tCi0tLyogX0dMX0VYVEVSTl9DIGRlY2xhcmF0aW9uOwotLSAgIHBlcmZvcm1zIHRoZSBkZWNsYXJhdGlvbiB3aXRoIEMgbGlua2FnZS4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMKLS0jIGRlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJuICJDIgotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0VYVEVSTl9DIGV4dGVybgotLSNlbmRpZgotLQotLS8qIF9HTF9GVU5DREVDTF9SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotLSAgIGRlY2xhcmVzIGEgcmVwbGFjZW1lbnQgZnVuY3Rpb24sIG5hbWVkIHJwbF9mdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0tICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0tICAgRXhhbXBsZToKLS0gICAgIF9HTF9GVU5DREVDTF9SUEwgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLS0gKi8KLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9SUEwoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9GVU5DREVDTF9SUExfMSAocnBsXyMjZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykKLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9SUExfMShycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9FWFRFUk5fQyByZXR0eXBlIHJwbF9mdW5jIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMKLS0KLS0vKiBfR0xfRlVOQ0RFQ0xfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLS0gICBkZWNsYXJlcyB0aGUgc3lzdGVtIGZ1bmN0aW9uLCBuYW1lZCBmdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0tICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0tICAgRXhhbXBsZToKLS0gICAgIF9HTF9GVU5DREVDTF9TWVMgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLS0gKi8KLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9FWFRFUk5fQyByZXR0eXBlIGZ1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotLQotLS8qIF9HTF9DWFhBTElBU19SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGRlY2xhcmVzIGEgQysrIGFsaWFzIGNhbGxlZCBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jCi0tICAgdGhhdCByZWRpcmVjdHMgdG8gcnBsX2Z1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UgaXMgZGVmaW5lZC4KLS0gICBFeGFtcGxlOgotLSAgICAgX0dMX0NYWEFMSUFTX1JQTCAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKSk7Ci0tICovCi0tI2RlZmluZSBfR0xfQ1hYQUxJQVNfUlBMKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICBfR0xfQ1hYQUxJQVNfUlBMXzEgKGZ1bmMsIHJwbF8jI2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OnJwbF9mdW5jOyAgICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGlzIGxpa2UgIF9HTF9DWFhBTElBU19SUExfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGV4Y2VwdCB0aGF0IHRoZSBDIGZ1bmN0aW9uIHJwbF9mdW5jIG1heSBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50Ci0tICAgZGVjbGFyYXRpb24uICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvcgotLSAgIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oOjpycGxfZnVuYyk7ICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2VuZGlmCi0tCi0tLyogX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZGVjbGFyZXMgYSBDKysgYWxpYXMgY2FsbGVkIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMKLS0gICB0aGF0IHJlZGlyZWN0cyB0byB0aGUgc3lzdGVtIHByb3ZpZGVkIGZ1bmN0aW9uIGZ1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UKLS0gICBpcyBkZWZpbmVkLgotLSAgIEV4YW1wbGU6Ci0tICAgICBfR0xfQ1hYQUxJQVNfU1lTIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pKTsKLS0gKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0gIC8qIElmIHdlIHdlcmUgdG8gd3JpdGUKLS0gICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7Ci0tICAgICBsaWtlIGFib3ZlIGluIF9HTF9DWFhBTElBU19SUExfMSwgdGhlIGNvbXBpbGVyIGNvdWxkIG9wdGltaXplIGNhbGxzCi0tICAgICBiZXR0ZXIgKHJlbW92ZSBhbiBpbmRpcmVjdGlvbiB0aHJvdWdoIGEgJ3N0YXRpYycgcG9pbnRlciB2YXJpYWJsZSksCi0tICAgICBidXQgdGhlbiB0aGUgX0dMX0NYWEFMSUFTV0FSTiBtYWNybyBiZWxvdyB3b3VsZCBjYXVzZSBhIHdhcm5pbmcgbm90IG9ubHkKLS0gICAgIGZvciB1c2VzIG9mIDo6ZnVuYyBidXQgYWxzbyBmb3IgdXNlcyBvZiBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jLiAgKi8KLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7ICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gZnVuYyBtYXkgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBkZWNsYXJhdGlvbi4KLS0gICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvciB0aGF0IHdvdWxkCi0tICAgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cmV0dHlwZSgqKXBhcmFtZXRlcnM+KDo6ZnVuYyk7IFwKLS0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVDIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMsIHJldHR5cGUyLCBwYXJhbWV0ZXJzMik7Ci0tICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gaXMgcGlja2VkIGFtb25nIGEgc2V0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLAotLSAgIG5hbWVseSB0aGUgb25lIHdpdGggcmV0dHlwZTIgYW5kIHBhcmFtZXRlcnMyLiAgVHdvIGNvbnNlY3V0aXZlIGNhc3RzCi0tICAgYXJlIHVzZWQgdG8gc2lsZW5jZSB0aGUgImNhbm5vdCBmaW5kIGEgbWF0Y2giIGFuZCAiaW52YWxpZCBjb252ZXJzaW9uIgotLSAgIGVycm9ycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBvY2N1ci4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tICAvKiBUaGUgb3V0ZXIgY2FzdCBtdXN0IGJlIGEgcmVpbnRlcnByZXRfY2FzdC4KLS0gICAgIFRoZSBpbm5lciBjYXN0OiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGFzIGEgc2V0IG9mIG92ZXJsb2FkZWQKLS0gICAgIGZ1bmN0aW9ucywgaXQgd29ya3MgYXMgYSBzdGF0aWNfY2FzdDw+LCBjaG9vc2luZyB0aGUgZGVzaWduYXRlZCB2YXJpYW50LgotLSAgICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBhcyBhIHNpbmdsZSB2YXJpYW50LCBpdCB3b3JrcyBhcyBhCi0tICAgICByZWludGVycHJldF9jYXN0PD4uIFRoZSBwYXJlbnRoZXNpemVkIGNhc3Qgc3ludGF4IHdvcmtzIGJvdGggd2F5cy4gICovCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgc3RhdGljIHJldHR5cGUgKCpmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgKHJldHR5cGUyKCopcGFyYW1ldGVyczIpKDo6ZnVuYykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU1dBUk4gKGZ1bmMpOwotLSAgIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgZW1pdHRlZCB3aGVuIDo6ZnVuYyBpcyB1c2VkIGJ1dCBub3Qgd2hlbgotLSAgIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gIGZ1bmMgbXVzdCBiZSBkZWZpbmVkIHdpdGhvdXQgb3ZlcmxvYWRlZAotLSAgIHZhcmlhbnRzLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOKGZ1bmMpIFwKLS0gICBfR0xfQ1hYQUxJQVNXQVJOXzEgKGZ1bmMsIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8xKGZ1bmMsbmFtZXNwYWNlKSBcCi0tICAgX0dMX0NYWEFMSUFTV0FSTl8yIChmdW5jLCBuYW1lc3BhY2UpCi0tLyogVG8gd29yayBhcm91bmQgR0NDIGJ1ZyA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzg4MT4sCi0tICAgd2UgZW5hYmxlIHRoZSB3YXJuaW5nIG9ubHkgd2hlbiBub3Qgb3B0aW1pemluZy4gICovCi0tIyBpZiAhX19PUFRJTUlaRV9fCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGZ1bmMsIFwKLS0gICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0tICAgICAgICAgICAgICAgICAgICAgIlVzZSAiICNuYW1lc3BhY2UgIjo6IiAjZnVuYyAiIGluc3RlYWQuIikKLS0jIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotLSAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0tICAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSMgZW5kaWYKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4oZnVuYykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU1dBUk4xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLS0gICBjYXVzZXMgYSB3YXJuaW5nIHRvIGJlIGVtaXR0ZWQgd2hlbiB0aGUgZ2l2ZW4gb3ZlcmxvYWRlZCB2YXJpYW50IG9mIDo6ZnVuYwotLSAgIGlzIHVzZWQgYnV0IG5vdCB3aGVuIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gICBfR0xfQ1hYQUxJQVNXQVJOMV8xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgR05VTElCX05BTUVTUEFDRSkKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8xKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotLSAgIF9HTF9DWFhBTElBU1dBUk4xXzIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIG5hbWVzcGFjZSkKLS0vKiBUbyB3b3JrIGFyb3VuZCBHQ0MgYnVnIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzODgxPiwKLS0gICB3ZSBlbmFibGUgdGhlIHdhcm5pbmcgb25seSB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgKi8KLS0jIGlmICFfX09QVElNSVpFX18KLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICAgX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgIiAjbmFtZXNwYWNlICI6OiIgI2Z1bmMgIiBpbnN0ZWFkLiIpCi0tIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotLSMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotLSAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tIyBlbmRpZgotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0jZW5kaWYgLyogX0dMX0NYWERFRlNfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwxMCArMCwwIEBACi0tI2lmbmRlZiBfTm9yZXR1cm4KLS0jIGlmICgzIDw9IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18pIFwKLS0gICAgICB8fCAweDUxMTAgPD0gX19TVU5QUk9fQykKLS0jICBkZWZpbmUgX05vcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKQotLSMgZWxpZiAxMjAwIDw9IF9NU0NfVkVSCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3JldHVybikKLS0jIGVsc2UKLS0jICBkZWZpbmUgX05vcmV0dXJuCi0tIyBlbmRpZgotLSNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDEwOSArMCwwIEBACi0tLyogQSBDIG1hY3JvIGZvciBlbWl0dGluZyB3YXJuaW5ncyBpZiBhIGZ1bmN0aW9uIGlzIHVzZWQuCi0tICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLS8qIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJsaXRlcmFsIHN0cmluZyIpIGlzc3VlcyBhIGRlY2xhcmF0aW9uCi0tICAgZm9yIEZVTkNUSU9OIHdoaWNoIHdpbGwgdGhlbiB0cmlnZ2VyIGEgY29tcGlsZXIgd2FybmluZyBjb250YWluaW5nCi0tICAgdGhlIHRleHQgb2YgImxpdGVyYWwgc3RyaW5nIiBhbnl3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCwgaWYKLS0gICBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyLiAgSWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcwotLSAgIGZlYXR1cmUsIHRoZSBtYWNybyBleHBhbmRzIHRvIGFuIHVudXNlZCBleHRlcm4gZGVjbGFyYXRpb24uCi0tCi0tICAgVGhpcyBtYWNybyBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgYSBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbAotLSAgIHBvcnRhYmlsaXR5IHRyYXAsIHdpdGggdGhlIGludGVudCB0aGF0ICJsaXRlcmFsIHN0cmluZyIgaW5jbHVkZQotLSAgIGluc3RydWN0aW9ucyBvbiB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgdXNlZAotLSAgIGluc3RlYWQuICBIb3dldmVyLCBvbmUgb2YgdGhlIHJlYXNvbnMgdGhhdCBhIGZ1bmN0aW9uIGlzIGEKLS0gICBwb3J0YWJpbGl0eSB0cmFwIGlzIGlmIGl0IGhhcyB0aGUgd3Jvbmcgc2lnbmF0dXJlLiAgRGVjbGFyaW5nCi0tICAgRlVOQ1RJT04gd2l0aCBhIGRpZmZlcmVudCBzaWduYXR1cmUgaW4gQyBpcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBzbwotLSAgIHRoaXMgbWFjcm8gbXVzdCB1c2UgdGhlIHNhbWUgdHlwZSBhcyBhbnkgZXhpc3RpbmcgZGVjbGFyYXRpb24gc28KLS0gICB0aGF0IHByb2dyYW1zIHRoYXQgYXZvaWQgdGhlIHByb2JsZW1hdGljIEZVTkNUSU9OIGRvIG5vdCBmYWlsIHRvCi0tICAgY29tcGlsZSBtZXJlbHkgYmVjYXVzZSB0aGV5IGluY2x1ZGVkIGEgaGVhZGVyIHRoYXQgcG9pc29uZWQgdGhlCi0tICAgZnVuY3Rpb24uICBCdXQgdGhpcyBpbXBsaWVzIHRoYXQgX0dMX1dBUk5fT05fVVNFIGlzIG9ubHkgc2FmZSB0bwotLSAgIHVzZSBpZiBGVU5DVElPTiBpcyBrbm93biB0byBhbHJlYWR5IGhhdmUgYSBkZWNsYXJhdGlvbi4gIFVzZSBvZgotLSAgIHRoaXMgbWFjcm8gaW1wbGllcyB0aGF0IHRoZXJlIG11c3Qgbm90IGJlIGFueSBvdGhlciBtYWNybyBoaWRpbmcKLS0gICB0aGUgZGVjbGFyYXRpb24gb2YgRlVOQ1RJT047IGJ1dCB1bmRlZmluaW5nIEZVTkNUSU9OIGZpcnN0IGlzIHBhcnQKLS0gICBvZiB0aGUgcG9pc29uaW5nIHByb2Nlc3MgYW55d2F5IChhbHRob3VnaCBmb3Igc3ltYm9scyB0aGF0IGFyZQotLSAgIHByb3ZpZGVkIG9ubHkgdmlhIGEgbWFjcm8sIHRoZSByZXN1bHQgaXMgYSBjb21waWxhdGlvbiBlcnJvciByYXRoZXIKLS0gICB0aGFuIGEgd2FybmluZyBjb250YWluaW5nICJsaXRlcmFsIHN0cmluZyIpLiAgQWxzbyBub3RlIHRoYXQgaW4KLS0gICBDKyssIGl0IGlzIG9ubHkgc2FmZSB0byB1c2UgaWYgRlVOQ1RJT04gaGFzIG5vIG92ZXJsb2Fkcy4KLS0KLS0gICBGb3IgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gcG9pc29uICdnZXRsaW5lJyBieToKLS0gICAtIGFkZGluZyBhIGNhbGwgdG8gZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWyNpbmNsdWRlIDxzdGRpby5oPl1dLAotLSAgICAgW2dldGxpbmVdKSBpbiBjb25maWd1cmUuYWMsIHdoaWNoIHBvdGVudGlhbGx5IGRlZmluZXMKLS0gICAgIEhBVkVfUkFXX0RFQ0xfR0VUTElORQotLSAgIC0gYWRkaW5nIHRoaXMgY29kZSB0byBhIGhlYWRlciB0aGF0IHdyYXBzIHRoZSBzeXN0ZW0gPHN0ZGlvLmg+OgotLSAgICAgI3VuZGVmIGdldGxpbmUKLS0gICAgICNpZiBIQVZFX1JBV19ERUNMX0dFVExJTkUKLS0gICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0bGluZSwgImdldGxpbmUgaXMgcmVxdWlyZWQgYnkgUE9TSVggMjAwOCwgYnV0IgotLSAgICAgICAibm90IHVuaXZlcnNhbGx5IHByZXNlbnQ7IHVzZSB0aGUgZ251bGliIG1vZHVsZSBnZXRsaW5lIik7Ci0tICAgICAjZW5kaWYKLS0KLS0gICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlyZWN0bHkgcG9pc29uIGdsb2JhbCB2YXJpYWJsZXMuICBCdXQgaXQgaXMKLS0gICBwb3NzaWJsZSB0byB3cml0ZSBhIHdyYXBwZXIgYWNjZXNzb3IgZnVuY3Rpb24sIGFuZCBwb2lzb24gdGhhdAotLSAgIChsZXNzIGNvbW1vbiB1c2FnZSwgbGlrZSAmZW52aXJvbiwgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGVycm9yCi0tICAgcmF0aGVyIHRoYW4gaXNzdWUgdGhlIG5pY2Ugd2FybmluZywgYnV0IHRoZSBlbmQgcmVzdWx0IG9mIGluZm9ybWluZwotLSAgIHRoZSBkZXZlbG9wZXIgYWJvdXQgdGhlaXIgcG9ydGFiaWxpdHkgcHJvYmxlbSBpcyBzdGlsbCBhY2hpZXZlZCk6Ci0tICAgI2lmIEhBVkVfUkFXX0RFQ0xfRU5WSVJPTgotLSAgIHN0YXRpYyBpbmxpbmUgY2hhciAqKipycGxfZW52aXJvbiAodm9pZCkgeyByZXR1cm4gJmVudmlyb247IH0KLS0gICBfR0xfV0FSTl9PTl9VU0UgKHJwbF9lbnZpcm9uLCAiZW52aXJvbiBpcyBub3QgYWx3YXlzIHByb3Blcmx5IGRlY2xhcmVkIik7Ci0tICAgIyB1bmRlZiBlbnZpcm9uCi0tICAgIyBkZWZpbmUgZW52aXJvbiAoKnJwbF9lbnZpcm9uICgpKQotLSAgICNlbmRpZgotLSAgICovCi0tI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0UKLS0KLS0jIGlmIDQgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gNCAmJiAzIDw9IF9fR05VQ19NSU5PUl9fKQotLS8qIEEgY29tcGlsZXIgYXR0cmlidXRlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgNC4zLjAgYW5kIGxhdGVyLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0tZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1lc3NhZ2UpKSkKLS0jIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0tLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0tZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbgotLSMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotLV9HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tLyogX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuY3Rpb24sIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsICJzdHJpbmciKQotLSAgIGlzIGxpa2UgX0dMX1dBUk5fT05fVVNFIChmdW5jdGlvbiwgInN0cmluZyIpLCBleGNlcHQgdGhhdCB0aGUgZnVuY3Rpb24gaXMKLS0gICBkZWNsYXJlZCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsCi0tICAgYW5kIGF0dHJpYnV0ZXMuCi0tICAgVGhpcyB2YXJpYW50IGlzIHVzZWZ1bCBmb3Igb3ZlcmxvYWRlZCBmdW5jdGlvbnMgaW4gQysrLiBfR0xfV0FSTl9PTl9VU0UgZG9lcwotLSAgIG5vdCB3b3JrIGluIHRoaXMgY2FzZS4gICovCi0tI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0VfQ1hYCi0tIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0tZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyBcCi0tICAgICBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1zZykpKQotLSMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLS0vKiBWZXJpZnkgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZnVuY3Rpb24uICAqLwotLSMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0VfQ1hYKGZ1bmN0aW9uLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxtc2cpIFwKLS1leHRlcm4gcmV0dHlwZSBmdW5jdGlvbiBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0tIyBlbHNlIC8qIFVuc3VwcG9ydGVkLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0tX0dMX1dBUk5fRVhURVJOX0MgaW50IF9nbF93YXJuX29uX3VzZQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBfR0xfV0FSTl9FWFRFUk5fQyBkZWNsYXJhdGlvbjsKLS0gICBwZXJmb3JtcyB0aGUgZGVjbGFyYXRpb24gd2l0aCBDIGxpbmthZ2UuICAqLwotLSNpZm5kZWYgX0dMX1dBUk5fRVhURVJOX0MKLS0jIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKLS0jICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuICJDIgotLSMgZWxzZQotLSMgIGRlZmluZSBfR0xfV0FSTl9FWFRFUk5fQyBleHRlcm4KLS0jIGVuZGlmCi0tI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3dhcm4tb24tdXNlLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvd2Fybi1vbi11c2UuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvd2Fybi1vbi11c2UuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgJMjAxMi0wMS0wOCAwMjowNzozOS45NTA0ODQ0MzkgLTA4MDAKLUBAIC0wLDAgKzEsMTA5IEBACi0rLyogQSBDIG1hY3JvIGZvciBlbWl0dGluZyB3YXJuaW5ncyBpZiBhIGZ1bmN0aW9uIGlzIHVzZWQuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJsaXRlcmFsIHN0cmluZyIpIGlzc3VlcyBhIGRlY2xhcmF0aW9uCi0rICAgZm9yIEZVTkNUSU9OIHdoaWNoIHdpbGwgdGhlbiB0cmlnZ2VyIGEgY29tcGlsZXIgd2FybmluZyBjb250YWluaW5nCi0rICAgdGhlIHRleHQgb2YgImxpdGVyYWwgc3RyaW5nIiBhbnl3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCwgaWYKLSsgICBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyLiAgSWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcwotKyAgIGZlYXR1cmUsIHRoZSBtYWNybyBleHBhbmRzIHRvIGFuIHVudXNlZCBleHRlcm4gZGVjbGFyYXRpb24uCi0rCi0rICAgVGhpcyBtYWNybyBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgYSBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbAotKyAgIHBvcnRhYmlsaXR5IHRyYXAsIHdpdGggdGhlIGludGVudCB0aGF0ICJsaXRlcmFsIHN0cmluZyIgaW5jbHVkZQotKyAgIGluc3RydWN0aW9ucyBvbiB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgdXNlZAotKyAgIGluc3RlYWQuICBIb3dldmVyLCBvbmUgb2YgdGhlIHJlYXNvbnMgdGhhdCBhIGZ1bmN0aW9uIGlzIGEKLSsgICBwb3J0YWJpbGl0eSB0cmFwIGlzIGlmIGl0IGhhcyB0aGUgd3Jvbmcgc2lnbmF0dXJlLiAgRGVjbGFyaW5nCi0rICAgRlVOQ1RJT04gd2l0aCBhIGRpZmZlcmVudCBzaWduYXR1cmUgaW4gQyBpcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBzbwotKyAgIHRoaXMgbWFjcm8gbXVzdCB1c2UgdGhlIHNhbWUgdHlwZSBhcyBhbnkgZXhpc3RpbmcgZGVjbGFyYXRpb24gc28KLSsgICB0aGF0IHByb2dyYW1zIHRoYXQgYXZvaWQgdGhlIHByb2JsZW1hdGljIEZVTkNUSU9OIGRvIG5vdCBmYWlsIHRvCi0rICAgY29tcGlsZSBtZXJlbHkgYmVjYXVzZSB0aGV5IGluY2x1ZGVkIGEgaGVhZGVyIHRoYXQgcG9pc29uZWQgdGhlCi0rICAgZnVuY3Rpb24uICBCdXQgdGhpcyBpbXBsaWVzIHRoYXQgX0dMX1dBUk5fT05fVVNFIGlzIG9ubHkgc2FmZSB0bwotKyAgIHVzZSBpZiBGVU5DVElPTiBpcyBrbm93biB0byBhbHJlYWR5IGhhdmUgYSBkZWNsYXJhdGlvbi4gIFVzZSBvZgotKyAgIHRoaXMgbWFjcm8gaW1wbGllcyB0aGF0IHRoZXJlIG11c3Qgbm90IGJlIGFueSBvdGhlciBtYWNybyBoaWRpbmcKLSsgICB0aGUgZGVjbGFyYXRpb24gb2YgRlVOQ1RJT047IGJ1dCB1bmRlZmluaW5nIEZVTkNUSU9OIGZpcnN0IGlzIHBhcnQKLSsgICBvZiB0aGUgcG9pc29uaW5nIHByb2Nlc3MgYW55d2F5IChhbHRob3VnaCBmb3Igc3ltYm9scyB0aGF0IGFyZQotKyAgIHByb3ZpZGVkIG9ubHkgdmlhIGEgbWFjcm8sIHRoZSByZXN1bHQgaXMgYSBjb21waWxhdGlvbiBlcnJvciByYXRoZXIKLSsgICB0aGFuIGEgd2FybmluZyBjb250YWluaW5nICJsaXRlcmFsIHN0cmluZyIpLiAgQWxzbyBub3RlIHRoYXQgaW4KLSsgICBDKyssIGl0IGlzIG9ubHkgc2FmZSB0byB1c2UgaWYgRlVOQ1RJT04gaGFzIG5vIG92ZXJsb2Fkcy4KLSsKLSsgICBGb3IgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gcG9pc29uICdnZXRsaW5lJyBieToKLSsgICAtIGFkZGluZyBhIGNhbGwgdG8gZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWyNpbmNsdWRlIDxzdGRpby5oPl1dLAotKyAgICAgW2dldGxpbmVdKSBpbiBjb25maWd1cmUuYWMsIHdoaWNoIHBvdGVudGlhbGx5IGRlZmluZXMKLSsgICAgIEhBVkVfUkFXX0RFQ0xfR0VUTElORQotKyAgIC0gYWRkaW5nIHRoaXMgY29kZSB0byBhIGhlYWRlciB0aGF0IHdyYXBzIHRoZSBzeXN0ZW0gPHN0ZGlvLmg+OgotKyAgICAgI3VuZGVmIGdldGxpbmUKLSsgICAgICNpZiBIQVZFX1JBV19ERUNMX0dFVExJTkUKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0bGluZSwgImdldGxpbmUgaXMgcmVxdWlyZWQgYnkgUE9TSVggMjAwOCwgYnV0IgotKyAgICAgICAibm90IHVuaXZlcnNhbGx5IHByZXNlbnQ7IHVzZSB0aGUgZ251bGliIG1vZHVsZSBnZXRsaW5lIik7Ci0rICAgICAjZW5kaWYKLSsKLSsgICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlyZWN0bHkgcG9pc29uIGdsb2JhbCB2YXJpYWJsZXMuICBCdXQgaXQgaXMKLSsgICBwb3NzaWJsZSB0byB3cml0ZSBhIHdyYXBwZXIgYWNjZXNzb3IgZnVuY3Rpb24sIGFuZCBwb2lzb24gdGhhdAotKyAgIChsZXNzIGNvbW1vbiB1c2FnZSwgbGlrZSAmZW52aXJvbiwgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGVycm9yCi0rICAgcmF0aGVyIHRoYW4gaXNzdWUgdGhlIG5pY2Ugd2FybmluZywgYnV0IHRoZSBlbmQgcmVzdWx0IG9mIGluZm9ybWluZwotKyAgIHRoZSBkZXZlbG9wZXIgYWJvdXQgdGhlaXIgcG9ydGFiaWxpdHkgcHJvYmxlbSBpcyBzdGlsbCBhY2hpZXZlZCk6Ci0rICAgI2lmIEhBVkVfUkFXX0RFQ0xfRU5WSVJPTgotKyAgIHN0YXRpYyBpbmxpbmUgY2hhciAqKipycGxfZW52aXJvbiAodm9pZCkgeyByZXR1cm4gJmVudmlyb247IH0KLSsgICBfR0xfV0FSTl9PTl9VU0UgKHJwbF9lbnZpcm9uLCAiZW52aXJvbiBpcyBub3QgYWx3YXlzIHByb3Blcmx5IGRlY2xhcmVkIik7Ci0rICAgIyB1bmRlZiBlbnZpcm9uCi0rICAgIyBkZWZpbmUgZW52aXJvbiAoKnJwbF9lbnZpcm9uICgpKQotKyAgICNlbmRpZgotKyAgICovCi0rI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0UKLSsKLSsjIGlmIDQgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gNCAmJiAzIDw9IF9fR05VQ19NSU5PUl9fKQotKy8qIEEgY29tcGlsZXIgYXR0cmlidXRlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgNC4zLjAgYW5kIGxhdGVyLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0rZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1lc3NhZ2UpKSkKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0rZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbgotKyMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotK19HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuY3Rpb24sIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsICJzdHJpbmciKQotKyAgIGlzIGxpa2UgX0dMX1dBUk5fT05fVVNFIChmdW5jdGlvbiwgInN0cmluZyIpLCBleGNlcHQgdGhhdCB0aGUgZnVuY3Rpb24gaXMKLSsgICBkZWNsYXJlZCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsCi0rICAgYW5kIGF0dHJpYnV0ZXMuCi0rICAgVGhpcyB2YXJpYW50IGlzIHVzZWZ1bCBmb3Igb3ZlcmxvYWRlZCBmdW5jdGlvbnMgaW4gQysrLiBfR0xfV0FSTl9PTl9VU0UgZG9lcwotKyAgIG5vdCB3b3JrIGluIHRoaXMgY2FzZS4gICovCi0rI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0VfQ1hYCi0rIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0rZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyBcCi0rICAgICBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1zZykpKQotKyMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLSsvKiBWZXJpZnkgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZnVuY3Rpb24uICAqLwotKyMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0VfQ1hYKGZ1bmN0aW9uLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxtc2cpIFwKLStleHRlcm4gcmV0dHlwZSBmdW5jdGlvbiBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0rIyBlbHNlIC8qIFVuc3VwcG9ydGVkLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0rX0dMX1dBUk5fRVhURVJOX0MgaW50IF9nbF93YXJuX29uX3VzZQotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBfR0xfV0FSTl9FWFRFUk5fQyBkZWNsYXJhdGlvbjsKLSsgICBwZXJmb3JtcyB0aGUgZGVjbGFyYXRpb24gd2l0aCBDIGxpbmthZ2UuICAqLwotKyNpZm5kZWYgX0dMX1dBUk5fRVhURVJOX0MKLSsjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKLSsjICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuICJDIgotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfV0FSTl9FWFRFUk5fQyBleHRlcm4KLSsjIGVuZGlmCi0rI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2FsbG9jYXRvci5oIGxpYmljb252LTEuMTQvc3JjbGliL2FsbG9jYXRvci5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9hbGxvY2F0b3IuaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2FsbG9jYXRvci5oCTIwMTItMDEtMDggMDI6MDc6NDAuMDUwNDg0NDQ0IC0wODAwCi1AQCAtNDUsMTEgKzQ1LDEwIEBAIHN0cnVjdCBhbGxvY2F0b3IKLSAgIC8qIENhbGwgRlJFRSB0byBmcmVlIG1lbW9yeSwgbGlrZSAnZnJlZScuICAqLwotICAgdm9pZCAoKmZyZWUpICh2b2lkICopOwotIAotLSAgLyogSWYgbm9ubnVsbCwgY2FsbCBESUUgKFNJWkUpIGlmIE1BTExPQyAoU0laRSkgb3IgUkVBTExPQyAoLi4uLAotLSAgICAgU0laRSkgZmFpbHMuICBESUUgc2hvdWxkIG5vdCByZXR1cm4uICBTSVpFIHNob3VsZCBlcXVhbCBTSVpFX01BWAotLSAgICAgaWYgc2l6ZV90IG92ZXJmbG93IHdhcyBkZXRlY3RlZCB3aGlsZSBjYWxjdWxhdGluZyBzaXplcyB0byBiZQotLSAgICAgcGFzc2VkIHRvIE1BTExPQyBvciBSRUFMTE9DLiAgKi8KLS0gIHZvaWQgKCpkaWUpIChzaXplX3QpOwotKyAgLyogSWYgbm9ubnVsbCwgY2FsbCBESUUgaWYgTUFMTE9DIG9yIFJFQUxMT0MgZmFpbHMuICBESUUgc2hvdWxkIG5vdAotKyAgICAgcmV0dXJuLiAgRElFIGNhbiBiZSB1c2VkIGJ5IGNvZGUgdGhhdCBkZXRlY3RzIG1lbW9yeSBvdmVyZmxvdwotKyAgICAgd2hpbGUgY2FsY3VsYXRpbmcgc2l6ZXMgdG8gYmUgcGFzc2VkIHRvIE1BTExPQyBvciBSRUFMTE9DLiAgKi8KLSsgIHZvaWQgKCpkaWUpICh2b2lkKTsKLSB9OwotIAotIC8qIEFuIGFsbG9jYXRvciB1c2luZyB0aGUgc3RkbGliIGZ1bmN0aW9ucyBhbmQgYSBudWxsIERJRSBmdW5jdGlvbi4gICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvY2Fub25pY2FsaXplLWxncGwuYwotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvY2Fub25pY2FsaXplLWxncGwuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMJMjAxMi0wMS0wOCAwMjowNzo0MC4wOTQ0ODQ0NDYgLTA4MDAKLUBAIC0xMjUsNyArMTI1LDcgQEAgX19yZWFscGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqcmVzbwotICNlbHNlCi0gICBwYXRoX21heCA9IHBhdGhjb25mIChuYW1lLCBfUENfUEFUSF9NQVgpOwotICAgaWYgKHBhdGhfbWF4IDw9IDApCi0tICAgIHBhdGhfbWF4ID0gODE5MjsKLSsgICAgcGF0aF9tYXggPSAxMDI0OwotICNlbmRpZgotIAotICAgaWYgKHJlc29sdmVkID09IE5VTEwpCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2NhcmVhZGxpbmthdC5jIGxpYmljb252LTEuMTQvc3JjbGliL2NhcmVhZGxpbmthdC5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9jYXJlYWRsaW5rYXQuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2NhcmVhZGxpbmthdC5jCTIwMTItMDEtMDggMDI6MDc6NDAuMTAyNDg0NDQ1IC0wODAwCi1AQCAtMTMzLDcgKzEzMyw2IEBAIGNhcmVhZGxpbmthdCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlbmEKLSAgICAgICAgICAgaWYgKGJ1ZiA9PSBzdGFja19idWYpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgY2hhciAqYiA9IChjaGFyICopIGFsbG9jLT5hbGxvY2F0ZSAobGlua19zaXplKTsKLS0gICAgICAgICAgICAgIGJ1Zl9zaXplID0gbGlua19zaXplOwotICAgICAgICAgICAgICAgaWYgKCEgYikKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICBtZW1jcHkgKGIsIGJ1ZiwgbGlua19zaXplKTsKLUBAIC0xNTcsMTEgKzE1Niw2IEBAIGNhcmVhZGxpbmthdCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlbmEKLSAgICAgICAgIGJ1Zl9zaXplICo9IDI7Ci0gICAgICAgZWxzZSBpZiAoYnVmX3NpemUgPCBidWZfc2l6ZV9tYXgpCi0gICAgICAgICBidWZfc2l6ZSA9IGJ1Zl9zaXplX21heDsKLS0gICAgICBlbHNlIGlmIChidWZfc2l6ZV9tYXggPCBTSVpFX01BWCkKLS0gICAgICAgIHsKLS0gICAgICAgICAgZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tICAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgICAgfQotICAgICAgIGVsc2UKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGJ1ZiA9IChjaGFyICopIGFsbG9jLT5hbGxvY2F0ZSAoYnVmX3NpemUpOwotQEAgLTE2OSw3ICsxNjMsNyBAQCBjYXJlYWRsaW5rYXQgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZW5hCi0gICB3aGlsZSAoYnVmKTsKLSAKLSAgIGlmIChhbGxvYy0+ZGllKQotLSAgICBhbGxvYy0+ZGllIChidWZfc2l6ZSk7Ci0rICAgIGFsbG9jLT5kaWUgKCk7Ci0gICBlcnJubyA9IEVOT01FTTsKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJybm8uaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9lcnJuby5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9lcnJuby5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJybm8uaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjEyMjQ4NDQ0NiAtMDgwMAotQEAgLTE2LDcgKzE2LDcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9FUlJOT19ICi0rI2lmbmRlZiBfR0xfRVJSTk9fSAotIAotICNpZiBfX0dOVUNfXyA+PSAzCi0gQFBSQUdNQV9TWVNURU1fSEVBREVSQAotQEAgLTI2LDggKzI2LDggQEAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI0BJTkNMVURFX05FWFRAIEBORVhUX0VSUk5PX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfRVJSTk9fSAotLSNkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0gKLSsjaWZuZGVmIF9HTF9FUlJOT19ICi0rI2RlZmluZSBfR0xfRVJSTk9fSAotIAotIAotIC8qIE9uIG5hdGl2ZSBXaW5kb3dzIHBsYXRmb3JtcywgbWFueSBtYWNyb3MgYXJlIG5vdCBkZWZpbmVkLiAgKi8KLUBAIC0xNDcsMTYgKzE0Nyw2IEBACi0gIyAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX0VOT1RTVVAgMQotICMgZW5kaWYKLSAKLS0jIGlmbmRlZiBFTkVUUkVTRVQKLS0jICBkZWZpbmUgRU5FVFJFU0VUIDIwMTEKLS0jICBkZWZpbmUgR05VTElCX2RlZmluZWRfRU5FVFJFU0VUIDEKLS0jIGVuZGlmCi0tCi0tIyBpZm5kZWYgRUNPTk5BQk9SVEVECi0tIyAgZGVmaW5lIEVDT05OQUJPUlRFRCAyMDEyCi0tIyAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX0VDT05OQUJPUlRFRCAxCi0tIyBlbmRpZgotLQotICMgaWZuZGVmIEVTVEFMRQotICMgIGRlZmluZSBFU1RBTEUgICAgMjAwOQotICMgIGRlZmluZSBHTlVMSUJfZGVmaW5lZF9FU1RBTEUgMQotQEAgLTE3Myw1ICsxNjMsNSBAQAotICMgZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0ggKi8KLSsjZW5kaWYgLyogX0dMX0VSUk5PX0ggKi8KLSsjZW5kaWYgLyogX0dMX0VSUk5PX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJyb3IuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9lcnJvci5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9lcnJvci5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJyb3IuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjEzNDQ4NDQ0OCAtMDgwMAotQEAgLTk3LDE1ICs5NywxMSBAQCBleHRlcm4gdm9pZCBfX2Vycm9yX2F0X2xpbmUgKGludCBzdGF0dXMsCi0gLyogVGhlIGdudWxpYiBvdmVycmlkZSBvZiBmY250bCBpcyBub3QgbmVlZGVkIGluIHRoaXMgZmlsZS4gICovCi0gIyB1bmRlZiBmY250bAotIAotLSMgaWYgIUhBVkVfREVDTF9TVFJFUlJPUl9SCi0rIyBpZiAhSEFWRV9ERUNMX1NUUkVSUk9SX1IgJiYgU1RSRVJST1JfUl9DSEFSX1AKLSAjICBpZm5kZWYgSEFWRV9ERUNMX1NUUkVSUk9SX1IKLSAidGhpcyBjb25maWd1cmUtdGltZSBkZWNsYXJhdGlvbiB0ZXN0IHdhcyBub3QgcnVuIgotICMgIGVuZGlmCi0tIyAgaWYgU1RSRVJST1JfUl9DSEFSX1AKLSBjaGFyICpzdHJlcnJvcl9yICgpOwotLSMgIGVsc2UKLS1pbnQgc3RyZXJyb3JfciAoKTsKLS0jICBlbmRpZgotICMgZW5kaWYKLSAKLSAvKiBUaGUgY2FsbGluZyBwcm9ncmFtIHNob3VsZCBkZWZpbmUgcHJvZ3JhbV9uYW1lIGFuZCBzZXQgaXQgdG8gdGhlCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2ZjbnRsLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvZmNudGwuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZmNudGwuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2ZjbnRsLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4xNTQ0ODQ0NDkgLTA4MDAKLUBAIC00MCw3ICs0MCw3IEBACi0gI2Vsc2UKLSAvKiBOb3JtYWwgaW52b2NhdGlvbiBjb252ZW50aW9uLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9ICi0rI2lmbmRlZiBfR0xfRkNOVExfSAotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBPbiBzb21lIHN5c3RlbXMgb3RoZXIgdGhhbiBnbGliYywgPHN5cy9zdGF0Lmg+IGlzIGEgcHJlcmVxdWlzaXRlIG9mCi1AQCAtNTUsOCArNTUsOCBAQAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfRkNOVExfSEAKLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfRkNOVExfSAotKyNpZm5kZWYgX0dMX0ZDTlRMX0gKLSsjZGVmaW5lIF9HTF9GQ05UTF9ICi0gCi0gI2lmbmRlZiBfX0dMSUJDX18gLyogQXZvaWQgbmFtZXNwYWNlIHBvbGx1dGlvbiBvbiBnbGliYyBzeXN0ZW1zLiAgKi8KLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotQEAgLTMyMCw2ICszMjAsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKG9wZW5hdCwgIm9wZW5hdCBpcyBub3QKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0ZDTlRMX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0ZDTlRMX0ggKi8KLSsjZW5kaWYgLyogX0dMX0ZDTlRMX0ggKi8KLSsjZW5kaWYgLyogX0dMX0ZDTlRMX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvaW50cHJvcHMuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9pbnRwcm9wcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9pbnRwcm9wcy5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvaW50cHJvcHMuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjE3NDQ4NDQ1MCAtMDgwMAotQEAgLTIyLDEzICsyMiwxNCBAQAotIAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLS0vKiBSZXR1cm4gYW4gaW50ZWdlciB2YWx1ZSwgY29udmVydGVkIHRvIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGludGVnZXIKLS0gICBleHByZXNzaW9uIEUgYWZ0ZXIgaW50ZWdlciB0eXBlIHByb21vdGlvbi4gIFYgaXMgdGhlIHVuY29udmVydGVkIHZhbHVlLiAgKi8KLS0jZGVmaW5lIF9HTF9JTlRfQ09OVkVSVChlLCB2KSAoMCAqIChlKSArICh2KSkKLSsvKiBSZXR1cm4gYSBpbnRlZ2VyIHZhbHVlLCBjb252ZXJ0ZWQgdG8gdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW50ZWdlcgotKyAgIGV4cHJlc3Npb24gRSBhZnRlciBpbnRlZ2VyIHR5cGUgcHJvbW90aW9uLiAgViBpcyB0aGUgdW5jb252ZXJ0ZWQgdmFsdWUuCi0rICAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KLSsjZGVmaW5lIF9HTF9JTlRfQ09OVkVSVChlLCB2KSAoKGUpIC0gKGUpICsgKHYpKQotIAotIC8qIEFjdCBsaWtlIF9HTF9JTlRfQ09OVkVSVCAoRSwgLVYpIGJ1dCB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBJUklYIDYuNSBjYzsgc2VlCi0gICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctZ251bGliLzIwMTEtMDUvbXNnMDA0MDYuaHRtbD4uICAqLwotLSNkZWZpbmUgX0dMX0lOVF9ORUdBVEVfQ09OVkVSVChlLCB2KSAoMCAqIChlKSAtICh2KSkKLSsjZGVmaW5lIF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQoZSwgdikgKChlKSAtIChlKSAtICh2KSkKLSAKLSAvKiBUaGUgZXh0cmEgY2FzdHMgaW4gdGhlIGZvbGxvd2luZyBtYWNyb3Mgd29yayBhcm91bmQgY29tcGlsZXIgYnVncywKLSAgICBlLmcuLCBpbiBDcmF5IEMgNS4wLjMuMC4gICovCi1AQCAtNTIsNyArNTMsNyBAQAotICNkZWZpbmUgVFlQRV9TSUdORUQodCkgKCEgKCh0KSAwIDwgKHQpIC0xKSkKLSAKLSAvKiBSZXR1cm4gMSBpZiB0aGUgaW50ZWdlciBleHByZXNzaW9uIEUsIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLCBoYXMKLS0gICBhIHNpZ25lZCB0eXBlLiAgKi8KLSsgICBhIHNpZ25lZCB0eXBlLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KLSAjZGVmaW5lIF9HTF9JTlRfU0lHTkVEKGUpIChfR0xfSU5UX05FR0FURV9DT05WRVJUIChlLCAxKSA8IDApCi0gCi0gCi1AQCAtMzEwLDEwICszMTEsMTMgQEAKLSAvKiBSZXR1cm4gMSBpZiB0aGUgZXhwcmVzc2lvbiBBIDxvcD4gQiB3b3VsZCBvdmVyZmxvdywKLSAgICB3aGVyZSBPUF9SRVNVTFRfT1ZFUkZMT1cgKEEsIEIsIE1JTiwgTUFYKSBkb2VzIHRoZSBhY3R1YWwgdGVzdCwKLSAgICBhc3N1bWluZyBNSU4gYW5kIE1BWCBhcmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZm9yIHRoZSByZXN1bHQgdHlwZS4KLS0gICBBcmd1bWVudHMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLiAgKi8KLSsKLSsgICBUaGlzIG1hY3JvIGFzc3VtZXMgdGhhdCBBIHwgQiBpcyBhIHZhbGlkIGludGVnZXIgaWYgYm90aCBBIGFuZCBCIGFyZSwKLSsgICB3aGljaCBpcyB0cnVlIG9mIGFsbCBrbm93biBwcmFjdGljYWwgaG9zdHMuICBJZiB0aGlzIGlzIGEgcHJvYmxlbQotKyAgIGZvciB5b3UsIHBsZWFzZSBsZXQgdXMga25vdyBob3cgdG8gZml4IGl0IGZvciB5b3VyIGhvc3QuICAqLwotICNkZWZpbmUgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyhhLCBiLCBvcF9yZXN1bHRfb3ZlcmZsb3cpICAgICAgICBcCi0gICBvcF9yZXN1bHRfb3ZlcmZsb3cgKGEsIGIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgX0dMX0lOVF9NSU5JTVVNICgwICogKGIpICsgKGEpKSwgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX01BWElNVU0gKDAgKiAoYikgKyAoYSkpKQotKyAgICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX01JTklNVU0gKChhKSB8IChiKSksICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgIF9HTF9JTlRfTUFYSU1VTSAoKGEpIHwgKGIpKSkKLSAKLSAjZW5kaWYgLyogX0dMX0lOVFBST1BTX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvTWFrZWZpbGUuZ251bGliIGxpYmljb252LTEuMTQvc3JjbGliL01ha2VmaWxlLmdudWxpYgotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvTWFrZWZpbGUuZ251bGliCTIwMTItMDEtMDggMDI6MDU6MTguNzU0NDc3NjA2IC0wODAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvTWFrZWZpbGUuZ251bGliCTIwMTItMDEtMDggMDI6MDc6NDMuMTM4NDg0NTkyIC0wODAwCi1AQCAtOSw3ICs5LDcgQEAKLSAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0gIwotICMgR2VuZXJhdGVkIGJ5IGdudWxpYi10b29sLgotLSMgUmVwcm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbG9jYWwtZGlyPWdudWxpYi1sb2NhbCAtLWxpYj1saWJpY3J0IC0tc291cmNlLWJhc2U9c3JjbGliIC0tbTQtYmFzZT1zcmNtNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLW1ha2VmaWxlLW5hbWU9TWFrZWZpbGUuZ251bGliIC0tbm8tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGJpbmFyeS1pbyBlcnJvciBnZXR0ZXh0IGdldHRleHQtaCBsaWJpY29udi1taXNjIG1ic3RhdGUgbWVtbW92ZSBwcm9nbmFtZSByZWxvY2F0YWJsZS1wcm9nIHNhZmUtcmVhZCBzaWdwaXBlIHN0ZGlvIHN0ZGxpYiBzdHJlcnJvciB1bmlzdGQgdW5pd2lkdGgvd2lkdGggdW5sb2NrZWQtaW8geGFsbG9jCi0rIyBSZXByb2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1sb2NhbC1kaXI9Z251bGliLWxvY2FsIC0tbGliPWxpYmljcnQgLS1zb3VyY2UtYmFzZT1zcmNsaWIgLS1tNC1iYXNlPXNyY200IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tbWFrZWZpbGUtbmFtZT1NYWtlZmlsZS5nbnVsaWIgLS1uby1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYmluYXJ5LWlvIGVycm9yIGdldHRleHQgZ2V0dGV4dC1oIGxpYmljb252LW1pc2MgbWJzdGF0ZSBtZW1tb3ZlIHByb2duYW1lIHJlbG9jYXRhYmxlIHJlbG9jYXRhYmxlLXByb2cgc2FmZS1yZWFkIHNpZ3BpcGUgc3RkaW8gc3RkbGliIHN0cmVycm9yIHVuaXN0ZCB1bml3aWR0aC93aWR0aCB1bmxvY2tlZC1pbyB4YWxsb2MKLSAKLSAKLSBNT1NUTFlDTEVBTkZJTEVTICs9IGNvcmUgKi5zdGFja2R1bXAKLUBAIC02MCwxMiArNjAsNjAgQEAgRVhUUkFfRElTVCArPSBhcmVhZGxpbmsuaAotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgYXJlYWRsaW5rCi0gCi0rIyMgYmVnaW4gZ251bGliIG1vZHVsZSBhcmctbm9ubnVsbAotKwotKyMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotKyMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotKyMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLSsjICdhbGwnIGRlZmluZWQgYWJvdmUuCi0rCi0rQlVJTFRfU09VUkNFUyArPSBhcmctbm9ubnVsbC5oCi0rIyBUaGUgYXJnLW5vbm51bGwuaCB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byBnZW5lcmF0ZWQgLmggZmlsZXMgaXMgdGhlIHNhbWUgYXMKLSsjIGJ1aWxkLWF1eC9hcmctbm9ubnVsbC5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLSthcmctbm9ubnVsbC5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oCi0rCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0rCXNlZCAtbiAtZSAnL0dMX0FSR19OT05OVUxMLywkJHAnIFwKLSsJICA8ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2FyZy1ub25udWxsLmggXAotKwkgID4gJEAtdCAmJiBcCi0rCW12ICRALXQgJEAKLStNT1NUTFlDTEVBTkZJTEVTICs9IGFyZy1ub25udWxsLmggYXJnLW5vbm51bGwuaC10Ci0rCi0rQVJHX05PTk5VTExfSD1hcmctbm9ubnVsbC5oCi0rCi0rRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oCi0rCi0rIyMgZW5kICAgZ251bGliIG1vZHVsZSBhcmctbm9ubnVsbAotKwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYmluYXJ5LWlvCi0gCi0gbGliaWNydF9hX1NPVVJDRVMgKz0gYmluYXJ5LWlvLmgKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGJpbmFyeS1pbwotIAotKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYysrZGVmcwotKwotKyMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotKyMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotKyMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLSsjICdhbGwnIGRlZmluZWQgYWJvdmUuCi0rCi0rQlVJTFRfU09VUkNFUyArPSBjKytkZWZzLmgKLSsjIFRoZSBjKytkZWZzLmggdGhhdCBnZXRzIGluc2VydGVkIGludG8gZ2VuZXJhdGVkIC5oIGZpbGVzIGlzIHRoZSBzYW1lIGFzCi0rIyBidWlsZC1hdXgvYysrZGVmcy5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLStjKytkZWZzLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2MrK2RlZnMuaAotKwkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotKwlzZWQgLW4gLWUgJy9fR0xfQ1hYREVGUy8sJCRwJyBcCi0rCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9jKytkZWZzLmggXAotKwkgID4gJEAtdCAmJiBcCi0rCW12ICRALXQgJEAKLStNT1NUTFlDTEVBTkZJTEVTICs9IGMrK2RlZnMuaCBjKytkZWZzLmgtdAotKwotK0NYWERFRlNfSD1jKytkZWZzLmgKLSsKLStFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2MrK2RlZnMuaAotKwotKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgYysrZGVmcwotKwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgY2Fub25pY2FsaXplLWxncGwKLSAKLSAKLUBAIC0xMDAsOCArMTQ4LDcgQEAgaWYgR0xfR0VORVJBVEVfRVJSTk9fSAotIGVycm5vLmg6IGVycm5vLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJyAmJiBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX0VSUk5PX0gnJ0B8JChORVhUX0VSUk5PX0gpfGcnIFwKLUBAIC0xNDIsMTUgKzE4OSwxNCBAQCBCVUlMVF9TT1VSQ0VTICs9IGZjbnRsLmgKLSBmY250bC5oOiBmY250bC5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJzsgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9GQ05UTF9IJydAfCQoTkVYVF9GQ05UTF9IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQ05UTCcnQC8kKEdOVUxJQl9GQ05UTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTk9OQkxPQ0tJTkcnJ0AvJChHTlVMSUJfTk9OQkxPQ0tJTkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09QRU4nJ0AvJChHTlVMSUJfT1BFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfT1BFTkFUJydALyQoR05VTElCX09QRU5BVCkvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkNOVEwnJ0B8JChHTlVMSUJfRkNOVEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX05PTkJMT0NLSU5HJydAfCQoR05VTElCX05PTkJMT0NLSU5HKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9PUEVOJydAfCQoR05VTElCX09QRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX09QRU5BVCcnQHwkKEdOVUxJQl9PUEVOQVQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9GQ05UTCcnQHwkKEhBVkVfRkNOVEwpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9PUEVOQVQnJ0B8JChIQVZFX09QRU5BVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydSRVBMQUNFX0ZDTlRMJydAfCQoUkVQTEFDRV9GQ05UTCl8ZycgXAotQEAgLTI5Nyw3ICszNDMsNyBAQCBFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2NvCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSByZWxvY2F0YWJsZS1wcm9nLXdyYXBwZXIKLSAKLSAKLS1FWFRSQV9ESVNUICs9IGFsbG9jYXRvci5jIGFsbG9jYXRvci5oIGFyZWFkbGluay5jIGFyZWFkbGluay5oIGMtY3R5cGUuYyBjLWN0eXBlLmggY2Fub25pY2FsaXplLWxncGwuYyBjYXJlYWRsaW5rYXQuYyBjYXJlYWRsaW5rYXQuaCBtYWxsb2NhLmMgbWFsbG9jYS5oIHByb2duYW1lLmMgcHJvZ25hbWUuaCBwcm9ncmVsb2MuYyByZWFkbGluay5jIHJlbG9jYXRhYmxlLmMgcmVsb2NhdGFibGUuaCByZWxvY3dyYXBwZXIuYyBzZXRlbnYuYwotK0VYVFJBX0RJU1QgKz0gYWxsb2NhdG9yLmMgYWxsb2NhdG9yLmggYXJlYWRsaW5rLmMgYXJlYWRsaW5rLmggYy1jdHlwZS5jIGMtY3R5cGUuaCBjYW5vbmljYWxpemUtbGdwbC5jIGNhcmVhZGxpbmthdC5jIGNhcmVhZGxpbmthdC5oIG1hbGxvY2EuYyBtYWxsb2NhLmggcHJvZ25hbWUuYyBwcm9nbmFtZS5oIHByb2dyZWxvYy5jIHJlYWRsaW5rLmMgcmVsb2NhdGFibGUuYyByZWxvY2F0YWJsZS5oIHJlbG9jd3JhcHBlci5jIHNldGVudi5jIHN0cmVycm9yLmMKLSAKLSBFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2luc3RhbGwtcmVsb2MKLSAKLUBAIC0zMDUsOSArMzUxLDEwIEBAIEVYVFJBX0RJU1QgKz0gJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvaW4KLSAKLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNhZmUtcmVhZAotIAotLWxpYmljcnRfYV9TT1VSQ0VTICs9IHNhZmUtcmVhZC5jCi0gCi0tRVhUUkFfRElTVCArPSBzYWZlLXJlYWQuaAotK0VYVFJBX0RJU1QgKz0gc2FmZS1yZWFkLmMgc2FmZS1yZWFkLmgKLSsKLStFWFRSQV9saWJpY3J0X2FfU09VUkNFUyArPSBzYWZlLXJlYWQuYwotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2FmZS1yZWFkCi0gCi1AQCAtMzIwLDI0ICszNjcsMjAgQEAgQlVJTFRfU09VUkNFUyArPSBzaWduYWwuaAotIHNpZ25hbC5oOiBzaWduYWwuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TSUdOQUxfSCcnQHwkKE5FWFRfU0lHTkFMX0gpfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnR05VTElCX1BUSFJFQURfU0lHTUFTSycnQHwkKEdOVUxJQl9QVEhSRUFEX1NJR01BU0spfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NJR05BTF9IX1NJR1BJUEUnJ0AvJChHTlVMSUJfU0lHTkFMX0hfU0lHUElQRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU0lHUFJPQ01BU0snJ0AvJChHTlVMSUJfU0lHUFJPQ01BU0spL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NJR0FDVElPTicnQC8kKEdOVUxJQl9TSUdBQ1RJT04pL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NJR05BTF9IX1NJR1BJUEUnJ0B8JChHTlVMSUJfU0lHTkFMX0hfU0lHUElQRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU0lHUFJPQ01BU0snJ0B8JChHTlVMSUJfU0lHUFJPQ01BU0spfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NJR0FDVElPTicnQHwkKEdOVUxJQl9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lORycnQHwkKEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcpfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSEFWRV9QVEhSRUFEX1NJR01BU0snJ0B8JChIQVZFX1BUSFJFQURfU0lHTUFTSyl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NJR1NFVF9UJydAfCQoSEFWRV9TSUdTRVRfVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NJR0lORk9fVCcnQHwkKEhBVkVfU0lHSU5GT19UKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfU0lHQUNUSU9OJydAfCQoSEFWRV9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTicnQHwkKEhBVkVfU1RSVUNUX1NJR0FDVElPTl9TQV9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9UWVBFX1ZPTEFUSUxFX1NJR19BVE9NSUNfVCcnQHwkKEhBVkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1QpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TSUdIQU5ETEVSX1QnJ0B8JChIQVZFX1NJR0hBTkRMRVJfVCl8ZycgXAotLQkgICAgICAtZSAnc3xAJydSRVBMQUNFX1BUSFJFQURfU0lHTUFTSycnQHwkKFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLKXxnJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTC9yICQoQ1hYREVGU19IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX0FSR19OT05OVUxML3IgJChBUkdfTk9OTlVMTF9IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFL3IgJChXQVJOX09OX1VTRV9IKScgXAotQEAgLTM2OCw4NyArNDExLDYgQEAgRVhUUkFfbGliaWNydF9hX1NPVVJDRVMgKz0gc2lncHJvY21hc2suYwotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2lncHJvY21hc2sKLSAKLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuCi0tCi0tIyBCZWNhdXNlIHRoaXMgTWFrZWZpbGUgc25pcHBldCBkZWZpbmVzIGEgdmFyaWFibGUgdXNlZCBieSBvdGhlcgotLSMgZ251bGliIE1ha2VmaWxlIHNuaXBwZXRzLCBpdCBtdXN0IGJlIHByZXNlbnQgaW4gYWxsIE1ha2VmaWxlLmFtIHRoYXQKLS0jIG5lZWQgaXQuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgYXBwbGljYWJpbGl0eSAnYWxsJyBkZWZpbmVkIGFib3ZlLgotLQotLV9OT1JFVFVSTl9IPSQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0KLS1FWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuCi0tCi0tIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzbmlwcGV0L2FyZy1ub25udWxsCi0tCi0tIyBUaGUgQlVJTFRfU09VUkNFUyBjcmVhdGVkIGJ5IHRoaXMgTWFrZWZpbGUgc25pcHBldCBhcmUgbm90IHVzZWQgdmlhICNpbmNsdWRlCi0tIyBzdGF0ZW1lbnRzIGJ1dCB0aHJvdWdoIGRpcmVjdCBmaWxlIHJlZmVyZW5jZS4gVGhlcmVmb3JlIHRoaXMgc25pcHBldCBtdXN0IGJlCi0tIyBwcmVzZW50IGluIGFsbCBNYWtlZmlsZS5hbSB0aGF0IG5lZWQgaXQuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgYXBwbGljYWJpbGl0eQotLSMgJ2FsbCcgZGVmaW5lZCBhYm92ZS4KLS0KLS1CVUlMVF9TT1VSQ0VTICs9IGFyZy1ub25udWxsLmgKLS0jIFRoZSBhcmctbm9ubnVsbC5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotLSMgYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dAotLSMgb2ZmLgotLWFyZy1ub25udWxsLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAotLQkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotLQlzZWQgLW4gLWUgJy9HTF9BUkdfTk9OTlVMTC8sJCRwJyBcCi0tCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IGFyZy1ub25udWxsLmggYXJnLW5vbm51bGwuaC10Ci0tCi0tQVJHX05PTk5VTExfSD1hcmctbm9ubnVsbC5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvYXJnLW5vbm51bGwKLS0KLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvYysrZGVmcwotLQotLSMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotLSMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotLSMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLS0jICdhbGwnIGRlZmluZWQgYWJvdmUuCi0tCi0tQlVJTFRfU09VUkNFUyArPSBjKytkZWZzLmgKLS0jIFRoZSBjKytkZWZzLmggdGhhdCBnZXRzIGluc2VydGVkIGludG8gZ2VuZXJhdGVkIC5oIGZpbGVzIGlzIHRoZSBzYW1lIGFzCi0tIyBidWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQgb2ZmLgotLWMrK2RlZnMuaDogJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgKLS0JJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLS0Jc2VkIC1uIC1lICcvX0dMX0NYWERFRlMvLCQkcCcgXAotLQkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IGMrK2RlZnMuaCBjKytkZWZzLmgtdAotLQotLUNYWERFRlNfSD1jKytkZWZzLmgKLS0KLS1FWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzbmlwcGV0L2MrK2RlZnMKLS0KLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2UKLS0KLS1CVUlMVF9TT1VSQ0VTICs9IHdhcm4tb24tdXNlLmgKLS0jIFRoZSB3YXJuLW9uLXVzZS5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotLSMgYnVpbGQtYXV4L3NuaXBwZXQvd2Fybi1vbi11c2UuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dAotLSMgb2ZmLgotLXdhcm4tb24tdXNlLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvd2Fybi1vbi11c2UuaAotLQkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotLQlzZWQgLW4gLWUgJy9eLmlmbmRlZi8sJCRwJyBcCi0tCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IHdhcm4tb24tdXNlLmggd2Fybi1vbi11c2UuaC10Ci0tCi0tV0FSTl9PTl9VU0VfSD13YXJuLW9uLXVzZS5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2UKLS0KLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHN0YXQKLSAKLSAKLUBAIC00OTEsOCArNDUzLDcgQEAgaWYgR0xfR0VORVJBVEVfU1REREVGX0gKLSBzdGRkZWYuaDogc3RkZGVmLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJyAmJiBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1NURERFRl9IJydAfCQoTkVYVF9TVERERUZfSCl8ZycgXAotQEAgLTUyMSw4ICs0ODIsNyBAQCBpZiBHTF9HRU5FUkFURV9TVERJTlRfSAotIHN0ZGludC5oOiBzdGRpbnQuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nOyBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0hBVkVfU1RESU5UX0gnJ0AvJChIQVZFX1NURElOVF9IKS9nJyBcCi0rCSAgc2VkIC1lICdzL0AnJ0hBVkVfU1RESU5UX0gnJ0AvJChIQVZFX1NURElOVF9IKS9nJyBcCi0gCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi1AQCAtNTcwLDYzICs1MzAsNjIgQEAgQlVJTFRfU09VUkNFUyArPSBzdGRpby5oCi0gc3RkaW8uaDogc3RkaW8uaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVERJT19IJydAfCQoTkVYVF9TVERJT19IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9EUFJJTlRGJydALyQoR05VTElCX0RQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDTE9TRScnQC8kKEdOVUxJQl9GQ0xPU0UpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZGTFVTSCcnQC8kKEdOVUxJQl9GRkxVU0gpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZHRVRDJydALyQoR05VTElCX0ZHRVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GR0VUUycnQC8kKEdOVUxJQl9GR0VUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRk9QRU4nJ0AvJChHTlVMSUJfRk9QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZQUklOVEYnJ0AvJChHTlVMSUJfRlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9GUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUFVSR0UnJ0AvJChHTlVMSUJfRlBVUkdFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUFVUQycnQC8kKEdOVUxJQl9GUFVUQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBVVFMnJ0AvJChHTlVMSUJfRlBVVFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZSRUFEJydALyQoR05VTElCX0ZSRUFEKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUkVPUEVOJydALyQoR05VTElCX0ZSRU9QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTQ0FORicnQC8kKEdOVUxJQl9GU0NBTkYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTRUVLJydALyQoR05VTElCX0ZTRUVLKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU0VFS08nJ0AvJChHTlVMSUJfRlNFRUtPKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GVEVMTCcnQC8kKEdOVUxJQl9GVEVMTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlRFTExPJydALyQoR05VTElCX0ZURUxMTykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRldSSVRFJydALyQoR05VTElCX0ZXUklURSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUQycnQC8kKEdOVUxJQl9HRVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRDSEFSJydALyQoR05VTElCX0dFVENIQVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVERFTElNJydALyQoR05VTElCX0dFVERFTElNKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMSU5FJydALyQoR05VTElCX0dFVExJTkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVFMnJ0AvJChHTlVMSUJfR0VUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfT0JTVEFDS19QUklOVEYnJ0AvJChHTlVMSUJfT0JTVEFDS19QUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYJydALyQoR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QRVJST1InJ0AvJChHTlVMSUJfUEVSUk9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QT1BFTicnQC8kKEdOVUxJQl9QT1BFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJJTlRGJydALyQoR05VTElCX1BSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJJTlRGX1BPU0lYJydALyQoR05VTElCX1BSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFVUQycnQC8kKEdOVUxJQl9QVVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QVVRDSEFSJydALyQoR05VTElCX1BVVENIQVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BVVFMnJ0AvJChHTlVMSUJfUFVUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVNT1ZFJydALyQoR05VTElCX1JFTU9WRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVOQU1FJydALyQoR05VTElCX1JFTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVOQU1FQVQnJ0AvJChHTlVMSUJfUkVOQU1FQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NDQU5GJydALyQoR05VTElCX1NDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TTlBSSU5URicnQC8kKEdOVUxJQl9TTlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1BSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9TUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HJydALyQoR05VTElCX1NURElPX0hfTk9OQkxPQ0tJTkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NURElPX0hfU0lHUElQRScnQC8kKEdOVUxJQl9TVERJT19IX1NJR1BJUEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1RNUEZJTEUnJ0AvJChHTlVMSUJfVE1QRklMRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkFTUFJJTlRGJydALyQoR05VTElCX1ZBU1BSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkRQUklOVEYnJ0AvJChHTlVMSUJfVkRQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZGUFJJTlRGJydALyQoR05VTElCX1ZGUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WRlBSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9WRlBSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkZTQ0FORicnQC8kKEdOVUxJQl9WRlNDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WU0NBTkYnJ0AvJChHTlVMSUJfVlNDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WUFJJTlRGJydALyQoR05VTElCX1ZQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfVlBSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlNOUFJJTlRGJydALyQoR05VTElCX1ZTTlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlNQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfVlNQUklOVEZfUE9TSVgpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0RQUklOVEYnJ0B8JChHTlVMSUJfRFBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkNMT1NFJydAfCQoR05VTElCX0ZDTE9TRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkZMVVNIJydAfCQoR05VTElCX0ZGTFVTSCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkdFVEMnJ0B8JChHTlVMSUJfRkdFVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZHRVRTJydAfCQoR05VTElCX0ZHRVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GT1BFTicnQHwkKEdOVUxJQl9GT1BFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlBSSU5URicnQHwkKEdOVUxJQl9GUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX0ZQUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZQVVJHRScnQHwkKEdOVUxJQl9GUFVSR0UpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZQVVRDJydAfCQoR05VTElCX0ZQVVRDKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFVUUycnQHwkKEdOVUxJQl9GUFVUUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlJFQUQnJ0B8JChHTlVMSUJfRlJFQUQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZSRU9QRU4nJ0B8JChHTlVMSUJfRlJFT1BFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNDQU5GJydAfCQoR05VTElCX0ZTQ0FORil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNFRUsnJ0B8JChHTlVMSUJfRlNFRUspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZTRUVLTycnQHwkKEdOVUxJQl9GU0VFS08pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZURUxMJydAfCQoR05VTElCX0ZURUxMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GVEVMTE8nJ0B8JChHTlVMSUJfRlRFTExPKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GV1JJVEUnJ0B8JChHTlVMSUJfRldSSVRFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRDJydAfCQoR05VTElCX0dFVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVENIQVInJ0B8JChHTlVMSUJfR0VUQ0hBUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUREVMSU0nJ0B8JChHTlVMSUJfR0VUREVMSU0pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVExJTkUnJ0B8JChHTlVMSUJfR0VUTElORSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUUycnQHwkKEdOVUxJQl9HRVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9PQlNUQUNLX1BSSU5URicnQHwkKEdOVUxJQl9PQlNUQUNLX1BSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfT0JTVEFDS19QUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfT0JTVEFDS19QUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BFUlJPUicnQHwkKEdOVUxJQl9QRVJST1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BPUEVOJydAfCQoR05VTElCX1BPUEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QUklOVEYnJ0B8JChHTlVMSUJfUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVVRDJydAfCQoR05VTElCX1BVVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BVVENIQVInJ0B8JChHTlVMSUJfUFVUQ0hBUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFVUUycnQHwkKEdOVUxJQl9QVVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU1PVkUnJ0B8JChHTlVMSUJfUkVNT1ZFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU5BTUUnJ0B8JChHTlVMSUJfUkVOQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU5BTUVBVCcnQHwkKEdOVUxJQl9SRU5BTUVBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU0NBTkYnJ0B8JChHTlVMSUJfU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NOUFJJTlRGJydAfCQoR05VTElCX1NOUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX1NQUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NURElPX0hfTk9OQkxPQ0tJTkcnJ0B8JChHTlVMSUJfU1RESU9fSF9OT05CTE9DS0lORyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RESU9fSF9TSUdQSVBFJydAfCQoR05VTElCX1NURElPX0hfU0lHUElQRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVE1QRklMRScnQHwkKEdOVUxJQl9UTVBGSUxFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WQVNQUklOVEYnJ0B8JChHTlVMSUJfVkFTUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WRFBSSU5URicnQHwkKEdOVUxJQl9WRFBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVkZQUklOVEYnJ0B8JChHTlVMSUJfVkZQUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZGUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX1ZGUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WRlNDQU5GJydAfCQoR05VTElCX1ZGU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZTQ0FORicnQHwkKEdOVUxJQl9WU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZQUklOVEYnJ0B8JChHTlVMSUJfVlBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVlBSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9WUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WU05QUklOVEYnJ0B8JChHTlVMSUJfVlNOUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WU1BSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9WU1BSSU5URl9QT1NJWCl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS9zdGRpby5pbi5oIHwgXAotIAkgIHNlZCAtZSAnc3xAJydIQVZFX0RFQ0xfRlBVUkdFJydAfCQoSEFWRV9ERUNMX0ZQVVJHRSl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0RFQ0xfRlNFRUtPJydAfCQoSEFWRV9ERUNMX0ZTRUVLTyl8ZycgXAotQEAgLTY5MSw0MyArNjUwLDQxIEBAIEJVSUxUX1NPVVJDRVMgKz0gc3RkbGliLmgKLSAKLSAjIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBpbiBvcmRlciB0byBjcmVhdGUgPHN0ZGxpYi5oPiB3aGVuIHRoZSBzeXN0ZW0KLSAjIGRvZXNuJ3QgaGF2ZSBvbmUgdGhhdCB3b3JrcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlci4KLS1zdGRsaWIuaDogc3RkbGliLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpIFwKLS0gICQoX05PUkVUVVJOX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotK3N0ZGxpYi5oOiBzdGRsaWIuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVERMSUJfSCcnQHwkKE5FWFRfU1RETElCX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX19FWElUJydALyQoR05VTElCX19FWElUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9BVE9MTCcnQC8kKEdOVUxJQl9BVE9MTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0FMTE9DX1BPU0lYJydALyQoR05VTElCX0NBTExPQ19QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRScnQC8kKEdOVUxJQl9DQU5PTklDQUxJWkVfRklMRV9OQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMT0FEQVZHJydALyQoR05VTElCX0dFVExPQURBVkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVFNVQk9QVCcnQC8kKEdOVUxJQl9HRVRTVUJPUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dSQU5UUFQnJ0AvJChHTlVMSUJfR1JBTlRQVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUFMTE9DX1BPU0lYJydALyQoR05VTElCX01BTExPQ19QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJUT1dDJydALyQoR05VTElCX01CVE9XQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtEVEVNUCcnQC8kKEdOVUxJQl9NS0RURU1QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS09TVEVNUCcnQC8kKEdOVUxJQl9NS09TVEVNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtPU1RFTVBTJydALyQoR05VTElCX01LT1NURU1QUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtTVEVNUCcnQC8kKEdOVUxJQl9NS1NURU1QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS1NURU1QUycnQC8kKEdOVUxJQl9NS1NURU1QUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFRTTkFNRScnQC8kKEdOVUxJQl9QVFNOQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QVVRFTlYnJ0AvJChHTlVMSUJfUFVURU5WKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SQU5ET01fUicnQC8kKEdOVUxJQl9SQU5ET01fUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVBTExPQ19QT1NJWCcnQC8kKEdOVUxJQl9SRUFMTE9DX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SRUFMUEFUSCcnQC8kKEdOVUxJQl9SRUFMUEFUSCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUlBNQVRDSCcnQC8kKEdOVUxJQl9SUE1BVENIKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TRVRFTlYnJ0AvJChHTlVMSUJfU0VURU5WKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0QnJ0AvJChHTlVMSUJfU1RSVE9EKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0xMJydALyQoR05VTElCX1NUUlRPTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlRPVUxMJydALyQoR05VTElCX1NUUlRPVUxMKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TWVNURU1fUE9TSVgnJ0AvJChHTlVMSUJfU1lTVEVNX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTkxPQ0tQVCcnQC8kKEdOVUxJQl9VTkxPQ0tQVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVU5TRVRFTlYnJ0AvJChHTlVMSUJfVU5TRVRFTlYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1dDVE9NQicnQC8kKEdOVUxJQl9XQ1RPTUIpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX19FWElUJydAfCQoR05VTElCX19FWElUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9BVE9MTCcnQHwkKEdOVUxJQl9BVE9MTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0FMTE9DX1BPU0lYJydAfCQoR05VTElCX0NBTExPQ19QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRScnQHwkKEdOVUxJQl9DQU5PTklDQUxJWkVfRklMRV9OQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRMT0FEQVZHJydAfCQoR05VTElCX0dFVExPQURBVkcpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVFNVQk9QVCcnQHwkKEdOVUxJQl9HRVRTVUJPUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dSQU5UUFQnJ0B8JChHTlVMSUJfR1JBTlRQVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUFMTE9DX1BPU0lYJydAfCQoR05VTElCX01BTExPQ19QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJUT1dDJydAfCQoR05VTElCX01CVE9XQyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtEVEVNUCcnQHwkKEdOVUxJQl9NS0RURU1QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS09TVEVNUCcnQHwkKEdOVUxJQl9NS09TVEVNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtPU1RFTVBTJydAfCQoR05VTElCX01LT1NURU1QUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtTVEVNUCcnQHwkKEdOVUxJQl9NS1NURU1QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS1NURU1QUycnQHwkKEdOVUxJQl9NS1NURU1QUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFRTTkFNRScnQHwkKEdOVUxJQl9QVFNOQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVVRFTlYnJ0B8JChHTlVMSUJfUFVURU5WKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SQU5ET01fUicnQHwkKEdOVUxJQl9SQU5ET01fUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVBTExPQ19QT1NJWCcnQHwkKEdOVUxJQl9SRUFMTE9DX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRUFMUEFUSCcnQHwkKEdOVUxJQl9SRUFMUEFUSCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUlBNQVRDSCcnQHwkKEdOVUxJQl9SUE1BVENIKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TRVRFTlYnJ0B8JChHTlVMSUJfU0VURU5WKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJUT0QnJ0B8JChHTlVMSUJfU1RSVE9EKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJUT0xMJydAfCQoR05VTElCX1NUUlRPTEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlRPVUxMJydAfCQoR05VTElCX1NUUlRPVUxMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TWVNURU1fUE9TSVgnJ0B8JChHTlVMSUJfU1lTVEVNX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTkxPQ0tQVCcnQHwkKEdOVUxJQl9VTkxPQ0tQVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVU5TRVRFTlYnJ0B8JChHTlVMSUJfVU5TRVRFTlYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1dDVE9NQicnQHwkKEdOVUxJQl9XQ1RPTUIpfGcnIFwKLSAJICAgICAgPCAkKHNyY2Rpcikvc3RkbGliLmluLmggfCBcCi0gCSAgc2VkIC1lICdzfEAnJ0hBVkVfX0VYSVQnJ0B8JChIQVZFX19FWElUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfQVRPTEwnJ0B8JChIQVZFX0FUT0xMKXxnJyBcCi1AQCAtNzY2LDcgKzcyMyw2IEBAIHN0ZGxpYi5oOiBzdGRsaWIuaW4uaCAkKHRvcF9idWlsZGRpcikvY28KLSAJICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9VTlNFVEVOVicnQHwkKFJFUExBQ0VfVU5TRVRFTlYpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9XQ1RPTUInJ0B8JChSRVBMQUNFX1dDVE9NQil8ZycgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwvciAkKENYWERFRlNfSCknIFwKLS0JICAgICAgLWUgJy9kZWZpbml0aW9uIG9mIF9Ob3JldHVybi9yICQoX05PUkVUVVJOX0gpJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbiBvZiBfR0xfQVJHX05PTk5VTEwvciAkKEFSR19OT05OVUxMX0gpJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbiBvZiBfR0xfV0FSTl9PTl9VU0UvciAkKFdBUk5fT05fVVNFX0gpJzsgXAotIAl9ID4gJEAtdCAmJiBcCi1AQCAtNzkzLDE1ICs3NDksNiBAQCBFWFRSQV9saWJpY3J0X2FfU09VUkNFUyArPSBzdHJlcnJvci5jCi0gCi0gIyMgZW5kICAgZ251bGliIG1vZHVsZSBzdHJlcnJvcgotIAotLSMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc3RyZXJyb3Itb3ZlcnJpZGUKLS0KLS0KLS1FWFRSQV9ESVNUICs9IHN0cmVycm9yLW92ZXJyaWRlLmMgc3RyZXJyb3Itb3ZlcnJpZGUuaAotLQotLUVYVFJBX2xpYmljcnRfYV9TT1VSQ0VTICs9IHN0cmVycm9yLW92ZXJyaWRlLmMKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHN0cmVycm9yLW92ZXJyaWRlCi0tCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzdHJpbmcKLSAKLSBCVUlMVF9TT1VSQ0VTICs9IHN0cmluZy5oCi1AQCAtODExLDUyICs3NTgsNDcgQEAgQlVJTFRfU09VUkNFUyArPSBzdHJpbmcuaAotIHN0cmluZy5oOiBzdHJpbmcuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVFJJTkdfSCcnQHwkKE5FWFRfU1RSSU5HX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZGU0wnJ0AvJChHTlVMSUJfRkZTTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkZTTEwnJ0AvJChHTlVMSUJfRkZTTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU0xFTicnQC8kKEdOVUxJQl9NQlNMRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU05MRU4nJ0AvJChHTlVMSUJfTUJTTkxFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ0hSJydALyQoR05VTElCX01CU0NIUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTUkNIUicnQC8kKEdOVUxJQl9NQlNSQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNTVFInJ0AvJChHTlVMSUJfTUJTU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNDQVNFQ01QJydALyQoR05VTElCX01CU0NBU0VDTVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU05DQVNFQ01QJydALyQoR05VTElCX01CU05DQVNFQ01QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNQQ0FTRUNNUCcnQC8kKEdOVUxJQl9NQlNQQ0FTRUNNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ0FTRVNUUicnQC8kKEdOVUxJQl9NQlNDQVNFU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNDU1BOJydALyQoR05VTElCX01CU0NTUE4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1BCUksnJ0AvJChHTlVMSUJfTUJTUEJSSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTU1BOJydALyQoR05VTElCX01CU1NQTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTU0VQJydALyQoR05VTElCX01CU1NFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTVE9LX1InJ0AvJChHTlVMSUJfTUJTVE9LX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTUNIUicnQC8kKEdOVUxJQl9NRU1DSFIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTU1FTScnQC8kKEdOVUxJQl9NRU1NRU0pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTVBDUFknJ0AvJChHTlVMSUJfTUVNUENQWSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUVNUkNIUicnQC8kKEdOVUxJQl9NRU1SQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SQVdNRU1DSFInJ0AvJChHTlVMSUJfUkFXTUVNQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFBDUFknJ0AvJChHTlVMSUJfU1RQQ1BZKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFBOQ1BZJydALyQoR05VTElCX1NUUE5DUFkpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkNIUk5VTCcnQC8kKEdOVUxJQl9TVFJDSFJOVUwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkRVUCcnQC8kKEdOVUxJQl9TVFJEVVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUk5DQVQnJ0AvJChHTlVMSUJfU1RSTkNBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSTkRVUCcnQC8kKEdOVUxJQl9TVFJORFVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJOTEVOJydALyQoR05VTElCX1NUUk5MRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlBCUksnJ0AvJChHTlVMSUJfU1RSUEJSSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU0VQJydALyQoR05VTElCX1NUUlNFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU1RSJydALyQoR05VTElCX1NUUlNUUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSQ0FTRVNUUicnQC8kKEdOVUxJQl9TVFJDQVNFU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0tfUicnQC8kKEdOVUxJQl9TVFJUT0tfUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSRVJST1InJ0AvJChHTlVMSUJfU1RSRVJST1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkVSUk9SX1InJ0AvJChHTlVMSUJfU1RSRVJST1JfUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU0lHTkFMJydALyQoR05VTElCX1NUUlNJR05BTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSVkVSU0NNUCcnQC8kKEdOVUxJQl9TVFJWRVJTQ01QKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNMRU4nJ0B8JChHTlVMSUJfTUJTTEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNOTEVOJydAfCQoR05VTElCX01CU05MRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NIUicnQHwkKEdOVUxJQl9NQlNDSFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1JDSFInJ0B8JChHTlVMSUJfTUJTUkNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTU1RSJydAfCQoR05VTElCX01CU1NUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTQ0FTRUNNUCcnQHwkKEdOVUxJQl9NQlNDQVNFQ01QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNOQ0FTRUNNUCcnQHwkKEdOVUxJQl9NQlNOQ0FTRUNNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTUENBU0VDTVAnJ0B8JChHTlVMSUJfTUJTUENBU0VDTVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NBU0VTVFInJ0B8JChHTlVMSUJfTUJTQ0FTRVNUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTQ1NQTicnQHwkKEdOVUxJQl9NQlNDU1BOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNQQlJLJydAfCQoR05VTElCX01CU1BCUkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1NQTicnQHwkKEdOVUxJQl9NQlNTUE4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1NFUCcnQHwkKEdOVUxJQl9NQlNTRVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1RPS19SJydAfCQoR05VTElCX01CU1RPS19SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1DSFInJ0B8JChHTlVMSUJfTUVNQ0hSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1NRU0nJ0B8JChHTlVMSUJfTUVNTUVNKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1QQ1BZJydAfCQoR05VTElCX01FTVBDUFkpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01FTVJDSFInJ0B8JChHTlVMSUJfTUVNUkNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkFXTUVNQ0hSJydAfCQoR05VTElCX1JBV01FTUNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RQQ1BZJydAfCQoR05VTElCX1NUUENQWSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RQTkNQWScnQHwkKEdOVUxJQl9TVFBOQ1BZKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJDSFJOVUwnJ0B8JChHTlVMSUJfU1RSQ0hSTlVMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJEVVAnJ0B8JChHTlVMSUJfU1RSRFVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJOQ0FUJydAfCQoR05VTElCX1NUUk5DQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUk5EVVAnJ0B8JChHTlVMSUJfU1RSTkRVUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSTkxFTicnQHwkKEdOVUxJQl9TVFJOTEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJQQlJLJydAfCQoR05VTElCX1NUUlBCUkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNFUCcnQHwkKEdOVUxJQl9TVFJTRVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNUUicnQHwkKEdOVUxJQl9TVFJTVFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUkNBU0VTVFInJ0B8JChHTlVMSUJfU1RSQ0FTRVNUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSVE9LX1InJ0B8JChHTlVMSUJfU1RSVE9LX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUkVSUk9SJydAfCQoR05VTElCX1NUUkVSUk9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJFUlJPUl9SJydAfCQoR05VTElCX1NUUkVSUk9SX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNJR05BTCcnQHwkKEdOVUxJQl9TVFJTSUdOQUwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlZFUlNDTVAnJ0B8JChHTlVMSUJfU1RSVkVSU0NNUCl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS9zdHJpbmcuaW4uaCB8IFwKLS0JICBzZWQgLWUgJ3N8QCcnSEFWRV9GRlNMJydAfCQoSEFWRV9GRlNMKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0hBVkVfRkZTTEwnJ0B8JChIQVZFX0ZGU0xMKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0hBVkVfTUJTTEVOJydAfCQoSEFWRV9NQlNMRU4pfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSEFWRV9NQlNMRU4nJ0B8JChIQVZFX01CU0xFTil8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX01FTUNIUicnQHwkKEhBVkVfTUVNQ0hSKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfREVDTF9NRU1NRU0nJ0B8JChIQVZFX0RFQ0xfTUVNTUVNKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfTUVNUENQWScnQHwkKEhBVkVfTUVNUENQWSl8ZycgXAotQEAgLTkxMiwyMyArODU0LDIyIEBAIHN5cy9zdGF0Lmg6IHN5c19zdGF0LmluLmggJCh0b3BfYnVpbGRkaXIKLSAJJChBTV9WX2F0KSQoTUtESVJfUCkgc3lzCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLyc7IFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU1lTX1NUQVRfSCcnQHwkKE5FWFRfU1lTX1NUQVRfSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkNITU9EQVQnJ0AvJChHTlVMSUJfRkNITU9EQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTVEFUQVQnJ0AvJChHTlVMSUJfRlNUQVRBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlVUSU1FTlMnJ0AvJChHTlVMSUJfRlVUSU1FTlMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xDSE1PRCcnQC8kKEdOVUxJQl9MQ0hNT0QpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xTVEFUJydALyQoR05VTElCX0xTVEFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS0RJUkFUJydALyQoR05VTElCX01LRElSQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LRklGTycnQC8kKEdOVUxJQl9NS0ZJRk8pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LRklGT0FUJydALyQoR05VTElCX01LRklGT0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS05PRCcnQC8kKEdOVUxJQl9NS05PRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtOT0RBVCcnQC8kKEdOVUxJQl9NS05PREFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVEFUJydALyQoR05VTElCX1NUQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VUSU1FTlNBVCcnQC8kKEdOVUxJQl9VVElNRU5TQVQpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSE1PREFUJydAfCQoR05VTElCX0ZDSE1PREFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GU1RBVEFUJydAfCQoR05VTElCX0ZTVEFUQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZVVElNRU5TJydAfCQoR05VTElCX0ZVVElNRU5TKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MQ0hNT0QnJ0B8JChHTlVMSUJfTENITU9EKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MU1RBVCcnQHwkKEdOVUxJQl9MU1RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtESVJBVCcnQHwkKEdOVUxJQl9NS0RJUkFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS0ZJRk8nJ0B8JChHTlVMSUJfTUtGSUZPKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS0ZJRk9BVCcnQHwkKEdOVUxJQl9NS0ZJRk9BVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtOT0QnJ0B8JChHTlVMSUJfTUtOT0QpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LTk9EQVQnJ0B8JChHTlVMSUJfTUtOT0RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RBVCcnQHwkKEdOVUxJQl9TVEFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VVElNRU5TQVQnJ0B8JChHTlVMSUJfVVRJTUVOU0FUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRkNITU9EQVQnJ0B8JChIQVZFX0ZDSE1PREFUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRlNUQVRBVCcnQHwkKEhBVkVfRlNUQVRBVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0ZVVElNRU5TJydAfCQoSEFWRV9GVVRJTUVOUyl8ZycgXAotQEAgLTk3MSwxNiArOTEyLDE1IEBAIEJVSUxUX1NPVVJDRVMgKz0gdGltZS5oCi0gdGltZS5oOiB0aW1lLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfVElNRV9IJydAfCQoTkVYVF9USU1FX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LVElNRScnQC8kKEdOVUxJQl9NS1RJTUUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX05BTk9TTEVFUCcnQC8kKEdOVUxJQl9OQU5PU0xFRVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlBUSU1FJydALyQoR05VTElCX1NUUlBUSU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9USU1FR00nJ0AvJChHTlVMSUJfVElNRUdNKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9USU1FX1InJ0AvJChHTlVMSUJfVElNRV9SKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS1RJTUUnJ0B8JChHTlVMSUJfTUtUSU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9OQU5PU0xFRVAnJ0B8JChHTlVMSUJfTkFOT1NMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJQVElNRScnQHwkKEdOVUxJQl9TVFJQVElNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVElNRUdNJydAfCQoR05VTElCX1RJTUVHTSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVElNRV9SJydAfCQoR05VTElCX1RJTUVfUil8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0RFQ0xfTE9DQUxUSU1FX1InJ0B8JChIQVZFX0RFQ0xfTE9DQUxUSU1FX1IpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9OQU5PU0xFRVAnJ0B8JChIQVZFX05BTk9TTEVFUCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NUUlBUSU1FJydAfCQoSEFWRV9TVFJQVElNRSl8ZycgXAotQEAgLTEwMTMsNTYgKzk1Myw1NSBAQCBCVUlMVF9TT1VSQ0VTICs9IHVuaXN0ZC5oCi0gdW5pc3RkLmg6IHVuaXN0ZC5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJzsgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydIQVZFX1VOSVNURF9IJydAfCQoSEFWRV9VTklTVERfSCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydIQVZFX1VOSVNURF9IJydAfCQoSEFWRV9VTklTVERfSCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1VOSVNURF9IJydAfCQoTkVYVF9VTklTVERfSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0hPV04nJ0AvJChHTlVMSUJfQ0hPV04pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0NMT1NFJydALyQoR05VTElCX0NMT1NFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9EVVAyJydALyQoR05VTElCX0RVUDIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0RVUDMnJ0AvJChHTlVMSUJfRFVQMykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRU5WSVJPTicnQC8kKEdOVUxJQl9FTlZJUk9OKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9FVUlEQUNDRVNTJydALyQoR05VTElCX0VVSURBQ0NFU1MpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZBQ0NFU1NBVCcnQC8kKEdOVUxJQl9GQUNDRVNTQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDSERJUicnQC8kKEdOVUxJQl9GQ0hESVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDSE9XTkFUJydALyQoR05VTElCX0ZDSE9XTkFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU1lOQycnQC8kKEdOVUxJQl9GU1lOQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlRSVU5DQVRFJydALyQoR05VTElCX0ZUUlVOQ0FURSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUQ1dEJydALyQoR05VTElCX0dFVENXRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VURE9NQUlOTkFNRScnQC8kKEdOVUxJQl9HRVRET01BSU5OQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVREVEFCTEVTSVpFJydALyQoR05VTElCX0dFVERUQUJMRVNJWkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVEdST1VQUycnQC8kKEdOVUxJQl9HRVRHUk9VUFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVEhPU1ROQU1FJydALyQoR05VTElCX0dFVEhPU1ROQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMT0dJTicnQC8kKEdOVUxJQl9HRVRMT0dJTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUTE9HSU5fUicnQC8kKEdOVUxJQl9HRVRMT0dJTl9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRQQUdFU0laRScnQC8kKEdOVUxJQl9HRVRQQUdFU0laRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUVVNFUlNIRUxMJydALyQoR05VTElCX0dFVFVTRVJTSEVMTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR1JPVVBfTUVNQkVSJydALyQoR05VTElCX0dST1VQX01FTUJFUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTENIT1dOJydALyQoR05VTElCX0xDSE9XTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTElOSycnQC8kKEdOVUxJQl9MSU5LKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MSU5LQVQnJ0AvJChHTlVMSUJfTElOS0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MU0VFSycnQC8kKEdOVUxJQl9MU0VFSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUElQRScnQC8kKEdOVUxJQl9QSVBFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QSVBFMicnQC8kKEdOVUxJQl9QSVBFMikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJFQUQnJ0AvJChHTlVMSUJfUFJFQUQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BXUklURScnQC8kKEdOVUxJQl9QV1JJVEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQUQnJ0AvJChHTlVMSUJfUkVBRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVBRExJTksnJ0AvJChHTlVMSUJfUkVBRExJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQURMSU5LQVQnJ0AvJChHTlVMSUJfUkVBRExJTktBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUk1ESVInJ0AvJChHTlVMSUJfUk1ESVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NMRUVQJydALyQoR05VTElCX1NMRUVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TWU1MSU5LJydALyQoR05VTElCX1NZTUxJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NZTUxJTktBVCcnQC8kKEdOVUxJQl9TWU1MSU5LQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1RUWU5BTUVfUicnQC8kKEdOVUxJQl9UVFlOQU1FX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOSVNURF9IX0dFVE9QVCcnQC8kKEdOVUxJQl9VTklTVERfSF9HRVRPUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HJydALyQoR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTklTVERfSF9TSUdQSVBFJydALyQoR05VTElCX1VOSVNURF9IX1NJR1BJUEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOTElOSycnQC8kKEdOVUxJQl9VTkxJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOTElOS0FUJydALyQoR05VTElCX1VOTElOS0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VU0xFRVAnJ0AvJChHTlVMSUJfVVNMRUVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9XUklURScnQC8kKEdOVUxJQl9XUklURSkvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0hPV04nJ0B8JChHTlVMSUJfQ0hPV04pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0NMT1NFJydAfCQoR05VTElCX0NMT1NFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9EVVAyJydAfCQoR05VTElCX0RVUDIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0RVUDMnJ0B8JChHTlVMSUJfRFVQMyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRU5WSVJPTicnQHwkKEdOVUxJQl9FTlZJUk9OKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9FVUlEQUNDRVNTJydAfCQoR05VTElCX0VVSURBQ0NFU1MpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZBQ0NFU1NBVCcnQHwkKEdOVUxJQl9GQUNDRVNTQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSERJUicnQHwkKEdOVUxJQl9GQ0hESVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSE9XTkFUJydAfCQoR05VTElCX0ZDSE9XTkFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GU1lOQycnQHwkKEdOVUxJQl9GU1lOQyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlRSVU5DQVRFJydAfCQoR05VTElCX0ZUUlVOQ0FURSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUQ1dEJydAfCQoR05VTElCX0dFVENXRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VURE9NQUlOTkFNRScnQHwkKEdOVUxJQl9HRVRET01BSU5OQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVREVEFCTEVTSVpFJydAfCQoR05VTElCX0dFVERUQUJMRVNJWkUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVEdST1VQUycnQHwkKEdOVUxJQl9HRVRHUk9VUFMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVEhPU1ROQU1FJydAfCQoR05VTElCX0dFVEhPU1ROQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRMT0dJTicnQHwkKEdOVUxJQl9HRVRMT0dJTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUTE9HSU5fUicnQHwkKEdOVUxJQl9HRVRMT0dJTl9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRQQUdFU0laRScnQHwkKEdOVUxJQl9HRVRQQUdFU0laRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUVVNFUlNIRUxMJydAfCQoR05VTElCX0dFVFVTRVJTSEVMTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR1JPVVBfTUVNQkVSJydAfCQoR05VTElCX0dST1VQX01FTUJFUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTENIT1dOJydAfCQoR05VTElCX0xDSE9XTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTElOSycnQHwkKEdOVUxJQl9MSU5LKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MSU5LQVQnJ0B8JChHTlVMSUJfTElOS0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MU0VFSycnQHwkKEdOVUxJQl9MU0VFSyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUElQRScnQHwkKEdOVUxJQl9QSVBFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QSVBFMicnQHwkKEdOVUxJQl9QSVBFMil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFJFQUQnJ0B8JChHTlVMSUJfUFJFQUQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BXUklURScnQHwkKEdOVUxJQl9QV1JJVEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQUQnJ0B8JChHTlVMSUJfUkVBRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVBRExJTksnJ0B8JChHTlVMSUJfUkVBRExJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQURMSU5LQVQnJ0B8JChHTlVMSUJfUkVBRExJTktBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUk1ESVInJ0B8JChHTlVMSUJfUk1ESVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NMRUVQJydAfCQoR05VTElCX1NMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TWU1MSU5LJydAfCQoR05VTElCX1NZTUxJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NZTUxJTktBVCcnQHwkKEdOVUxJQl9TWU1MSU5LQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1RUWU5BTUVfUicnQHwkKEdOVUxJQl9UVFlOQU1FX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOSVNURF9IX0dFVE9QVCcnQHwkKEdOVUxJQl9VTklTVERfSF9HRVRPUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HJydAfCQoR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTklTVERfSF9TSUdQSVBFJydAfCQoR05VTElCX1VOSVNURF9IX1NJR1BJUEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOTElOSycnQHwkKEdOVUxJQl9VTkxJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOTElOS0FUJydAfCQoR05VTElCX1VOTElOS0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VU0xFRVAnJ0B8JChHTlVMSUJfVVNMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9XUklURScnQHwkKEdOVUxJQl9XUklURSl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS91bmlzdGQuaW4uaCB8IFwKLSAJICBzZWQgLWUgJ3N8QCcnSEFWRV9DSE9XTicnQHwkKEhBVkVfQ0hPV04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9EVVAyJydAfCQoSEFWRV9EVVAyKXxnJyBcCi1AQCAtMTE5OCw2ICsxMTM3LDI1IEBAIEVYVFJBX0RJU1QgKz0gdmVyaWZ5LmgKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHZlcmlmeQotIAotKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgd2Fybi1vbi11c2UKLSsKLStCVUlMVF9TT1VSQ0VTICs9IHdhcm4tb24tdXNlLmgKLSsjIFRoZSB3YXJuLW9uLXVzZS5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotKyMgYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQgb2ZmLgotK3dhcm4tb24tdXNlLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgKLSsJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSsJc2VkIC1uIC1lICcvXi5pZm5kZWYvLCQkcCcgXAotKwkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvd2Fybi1vbi11c2UuaCBcCi0rCSAgPiAkQC10ICYmIFwKLSsJbXYgJEAtdCAkQAotK01PU1RMWUNMRUFORklMRVMgKz0gd2Fybi1vbi11c2UuaCB3YXJuLW9uLXVzZS5oLXQKLSsKLStXQVJOX09OX1VTRV9IPXdhcm4tb24tdXNlLmgKLSsKLStFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgKLSsKLSsjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHdhcm4tb24tdXNlCi0rCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSB4YWxsb2MKLSAKLSBsaWJpY3J0X2FfU09VUkNFUyArPSB4YWxsb2MuaCB4bWFsbG9jLmMgeHN0cmR1cC5jCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3BhdGhtYXguaCBsaWJpY29udi0xLjE0L3NyY2xpYi9wYXRobWF4LmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3BhdGhtYXguaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3BhdGhtYXguaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjIxODQ4NDQ1MSAtMDgwMAotQEAgLTE5LDI3ICsxOSw2IEBACi0gI2lmbmRlZiBfUEFUSE1BWF9ICi0gIyBkZWZpbmUgX1BBVEhNQVhfSAotIAotLS8qIFBPU0lYOjIwMDggZGVmaW5lcyBQQVRIX01BWCB0byBiZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBmaWxlbmFtZSwKLS0gICBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTCBieXRlLgotLSAgIDxodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9iYXNlZGVmcy9saW1pdHMuaC5odG1sPgotLSAgIFBBVEhfTUFYIGlzIG5vdCBkZWZpbmVkIG9uIHN5c3RlbXMgd2hpY2ggaGF2ZSBubyBsaW1pdCBvbiBmaWxlbmFtZSBsZW5ndGgsCi0tICAgc3VjaCBhcyBHTlUvSHVyZC4KLS0KLS0gICBUaGlzIGZpbGUgZG9lcyAqbm90KiBkZWZpbmUgUEFUSF9NQVggYWx3YXlzLiAgUHJvZ3JhbXMgdGhhdCB1c2UgdGhpcyBmaWxlCi0tICAgY2FuIGhhbmRsZSB0aGUgR05VL0h1cmQgY2FzZSBpbiBzZXZlcmFsIHdheXM6Ci0tICAgICAtIEVpdGhlciB3aXRoIGEgcGFja2FnZS13aWRlIGhhbmRsaW5nLCBvciB3aXRoIGEgcGVyLWZpbGUgaGFuZGxpbmcsCi0tICAgICAtIEVpdGhlciB0aHJvdWdoIGEKLS0gICAgICAgICAjaWZkZWYgUEFUSF9NQVgKLS0gICAgICAgb3IgdGhyb3VnaCBhIGZhbGxiYWNrIGxpa2UKLS0gICAgICAgICAjaWZuZGVmIFBBVEhfTUFYCi0tICAgICAgICAgIyBkZWZpbmUgUEFUSF9NQVggODE5MgotLSAgICAgICAgICNlbmRpZgotLSAgICAgICBvciB0aHJvdWdoIGEgZmFsbGJhY2sgbGlrZQotLSAgICAgICAgICNpZm5kZWYgUEFUSF9NQVgKLS0gICAgICAgICAjIGRlZmluZSBQQVRIX01BWCBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpCi0tICAgICAgICAgI2VuZGlmCi0tICovCi0tCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjIGluY2x1ZGUgPGxpbWl0cy5oPgotQEAgLTQ4LDYgKzI3LDExIEBACi0gIyAgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTYKLSAjIGVuZGlmCi0gCi0rIyBpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIF9QQ19QQVRIX01BWCAmJiBkZWZpbmVkIEhBVkVfUEFUSENPTkYKLSsjICBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCBcCi0rICAgICAgICAgICAgICAgICAgICA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCi0rIyBlbmRpZgotKwotIC8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCi0gIyBpZiBkZWZpbmVkIEhBVkVfU1lTX1BBUkFNX0ggJiYgIWRlZmluZWQgUEFUSF9NQVggJiYgIWRlZmluZWQgTUFYUEFUSExFTgotICMgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotQEAgLTU3LDEzICs0MSw4IEBACi0gIyAgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSAjIGVuZGlmCi0gCi0tIyBpZmRlZiBfX2hwdXgKLS0vKiBPbiBIUC1VWCwgUEFUSF9NQVggZGVzaWduYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBmaWxlbmFtZSwKLS0gICAqbm90KiBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTCBieXRlLCBhbmQgaXMgc2V0IHRvIDEwMjMuCi0tICAgQWRkaXRpb25hbGx5LCB3aGVuIF9YT1BFTl9TT1VSQ0UgaXMgZGVmaW5lZCB0byA1MDAgb3IgbW9yZSwgUEFUSF9NQVggaXMKLS0gICBub3QgZGVmaW5lZCBhdCBhbGwgYW55IG1vcmUuICAqLwotLSMgIHVuZGVmIFBBVEhfTUFYCi0tIyAgZGVmaW5lIFBBVEhfTUFYIDEwMjQKLSsjIGlmbmRlZiBQQVRIX01BWAotKyMgIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKLSAjIGVuZGlmCi0gCi0gI2VuZGlmIC8qIF9QQVRITUFYX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvcmVsb2N3cmFwcGVyLmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvcmVsb2N3cmFwcGVyLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3JlbG9jd3JhcHBlci5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvcmVsb2N3cmFwcGVyLmMJMjAxMi0wMS0wOCAwMjowNzo0MC4yODI0ODQ0NTUgLTA4MDAKLUBAIC0yOSw2ICsyOSw3IEBACi0gICAgIC0+IHJlbG9jYXRhYmxlCi0gICAgIC0+IHNldGVudgotICAgICAgICAtPiBtYWxsb2NhCi0rICAgIC0+IHN0cmVycm9yCi0gICAgIC0+IGMtY3R5cGUKLSAKLSAgICBNYWNyb3MgdGhhdCBuZWVkIHRvIGJlIHNldCB3aGlsZSBjb21waWxpbmcgdGhpcyBmaWxlOgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zYWZlLXJlYWQuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zYWZlLXJlYWQuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc2FmZS1yZWFkLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zYWZlLXJlYWQuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjI5ODQ4NDQ1NSAtMDgwMAotQEAgLTE0LDE5ICsxNCw2IEBACi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0tLyogU29tZSBzeXN0ZW0gY2FsbHMgbWF5IGJlIGludGVycnVwdGVkIGFuZCBmYWlsIHdpdGggZXJybm8gPSBFSU5UUiBpbiB0aGUKLS0gICBmb2xsb3dpbmcgc2l0dWF0aW9uczoKLS0gICAgIC0gVGhlIHByb2Nlc3MgaXMgc3RvcHBlZCBhbmQgcmVzdGFydGVkIChzaWduYWwgU0lHU1RPUCBhbmQgU0lHQ09OVCwgdXNlcgotLSAgICAgICB0eXBlcyBDdHJsLVopIG9uIHNvbWUgcGxhdGZvcm1zOiBNYWNPUyBYLgotLSAgICAgLSBUaGUgcHJvY2VzcyByZWNlaXZlcyBhIHNpZ25hbCBmb3Igd2hpY2ggYSBzaWduYWwgaGFuZGxlciB3YXMgaW5zdGFsbGVkCi0tICAgICAgIHdpdGggc2lnYWN0aW9uKCkgd2l0aCBhbiBzYV9mbGFncyBmaWVsZCB0aGF0IGRvZXMgbm90IGNvbnRhaW4KLS0gICAgICAgU0FfUkVTVEFSVC4KLS0gICAgIC0gVGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWwgZm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIgd2FzIGluc3RhbGxlZAotLSAgICAgICB3aXRoIHNpZ25hbCgpIGFuZCBmb3Igd2hpY2ggbm8gY2FsbCB0byBzaWdpbnRlcnJ1cHQoc2lnLDApIHdhcyBkb25lLAotLSAgICAgICBvbiBzb21lIHBsYXRmb3JtczogQUlYLCBIUC1VWCwgSVJJWCwgT1NGLzEsIFNvbGFyaXMuCi0tCi0tICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCByZWFkKCkgdGhhdCBoYW5kbGVzIEVJTlRSLiAgKi8KLS0KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3NpZ25hbC5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3NpZ25hbC5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zaWduYWwuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3NpZ25hbC5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMzE0NDg0NDU2IC0wODAwCi1AQCAtMjAsNDkgKzIwLDIxIEBACi0gI2VuZGlmCi0gQFBSQUdNQV9DT0xVTU5TQAotIAotLSNpZiBkZWZpbmVkIF9fbmVlZF9zaWdfYXRvbWljX3QgfHwgZGVmaW5lZCBfX25lZWRfc2lnc2V0X3QgfHwgZGVmaW5lZCBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU0lHTkFMX0ggfHwgKGRlZmluZWQgX1NJR05BTF9IICYmICFkZWZpbmVkIF9fU0laRU9GX1BUSFJFQURfTVVURVhfVCkKLS0vKiBTcGVjaWFsIGludm9jYXRpb24gY29udmVudGlvbjoKLS0gICAtIEluc2lkZSBnbGliYyBoZWFkZXIgZmlsZXMuCi0tICAgLSBPbiBnbGliYyBzeXN0ZW1zIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBuZXN0ZWQgaW5jbHVkZXMKLS0gICAgIDxzaWduYWwuaD4gLT4gPHVjb250ZXh0Lmg+IC0+IDxzaWduYWwuaD4uCi0tICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHlldCBkZWNsYXJlZCwgdGhlcmVmb3JlIHdlIGNhbm5vdAotLSAgICAgcHJvdmlkZSB0aGUgQysrIGFsaWFzZXMuCi0tICAgLSBPbiBnbGliYyBzeXN0ZW1zIHdpdGggR0NDIDQuMyB3ZSBoYXZlIGEgc2VxdWVuY2Ugb2YgbmVzdGVkIGluY2x1ZGVzCi0tICAgICA8Y3NpZ25hbD4gLT4gPC91c3IvaW5jbHVkZS9zaWduYWwuaD4gLT4gPHN5cy91Y29udGV4dC5oPiAtPiA8c2lnbmFsLmg+LgotLSAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHlldCBkZWNsYXJlZCwgdGhlcmVmb3JlCi0tICAgICB3ZSBjYW5ub3QgcHJvdmlkZSB0aGUgQysrIGFsaWFzZXMuICAqLwotKyNpZiBkZWZpbmVkIF9fbmVlZF9zaWdfYXRvbWljX3QgfHwgZGVmaW5lZCBfX25lZWRfc2lnc2V0X3QKLSsvKiBTcGVjaWFsIGludm9jYXRpb24gY29udmVudGlvbiBpbnNpZGUgZ2xpYmMgaGVhZGVyIGZpbGVzLiAgKi8KLSAKLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1NJR05BTF9IQAotIAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0gKLS0KLS0jZGVmaW5lIF9HTF9BTFJFQURZX0lOQ0xVRElOR19TSUdOQUxfSAotLQotLS8qIERlZmluZSBwaWRfdCwgdWlkX3QuCi0tICAgQWxzbywgbWluZ3cgZGVmaW5lcyBzaWdzZXRfdCBub3QgaW4gPHNpZ25hbC5oPiwgYnV0IGluIDxzeXMvdHlwZXMuaD4uCi0tICAgT24gU29sYXJpcyAxMCwgPHNpZ25hbC5oPiBpbmNsdWRlcyA8c3lzL3R5cGVzLmg+LCB3aGljaCBldmVudHVhbGx5IGluY2x1ZGVzCi0tICAgdXM7IHNvIGluY2x1ZGUgPHN5cy90eXBlcy5oPiBub3csIGJlZm9yZSB0aGUgc2Vjb25kIGluY2x1c2lvbiBndWFyZC4gICovCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpZm5kZWYgX0dMX1NJR05BTF9ICi0gCi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNASU5DTFVERV9ORVhUQCBATkVYVF9TSUdOQUxfSEAKLSAKLS0jdW5kZWYgX0dMX0FMUkVBRFlfSU5DTFVESU5HX1NJR05BTF9ICi0tCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TSUdOQUxfSAotLQotLS8qIE1hY09TIFggMTAuMywgRnJlZUJTRCA2LjQsIE9wZW5CU0QgMy44LCBPU0YvMSA0LjAsIFNvbGFyaXMgMi42IGRlY2xhcmUKLS0gICBwdGhyZWFkX3NpZ21hc2sgaW4gPHB0aHJlYWQuaD4sIG5vdCBpbiA8c2lnbmFsLmg+LgotLSAgIEJ1dCBhdm9pZCBuYW1lc3BhY2UgcG9sbHV0aW9uIG9uIGdsaWJjIHN5c3RlbXMuKi8KLS0jaWYgKEBHTlVMSUJfUFRIUkVBRF9TSUdNQVNLQCB8fCBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLKSBcCi0tICAgICYmICgoZGVmaW5lZCBfX0FQUExFX18gJiYgZGVmaW5lZCBfX01BQ0hfXykgfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXyB8fCBkZWZpbmVkIF9fT3BlbkJTRF9fIHx8IGRlZmluZWQgX19vc2ZfXyB8fCBkZWZpbmVkIF9fc3VuKSBcCi0tICAgICYmICEgZGVmaW5lZCBfX0dMSUJDX18KLS0jIGluY2x1ZGUgPHB0aHJlYWQuaD4KLS0jZW5kaWYKLSsjaWZuZGVmIF9HTF9TSUdOQUxfSAotKyNkZWZpbmUgX0dMX1NJR05BTF9ICi0gCi0gLyogVGhlIGRlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwgZXRjLiBhcmUgY29waWVkIGhlcmUuICAqLwotIAotQEAgLTcwLDYgKzQyLDEwIEBACi0gCi0gLyogVGhlIGRlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFIGlzIGNvcGllZCBoZXJlLiAgKi8KLSAKLSsvKiBEZWZpbmUgcGlkX3QsIHVpZF90LgotKyAgIEFsc28sIG1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0gLyogT24gQUlYLCBzaWdfYXRvbWljX3QgYWxyZWFkeSBpbmNsdWRlcyB2b2xhdGlsZS4gIEM5OSByZXF1aXJlcyB0aGF0Ci0gICAgJ3ZvbGF0aWxlIHNpZ19hdG9taWNfdCcgaWdub3JlIHRoZSBleHRyYSBtb2RpZmllciwgYnV0IEM4OSBkaWQgbm90LgotICAgIEhlbmNlLCByZWRlZmluZSB0aGlzIHRvIGEgbm9uLXZvbGF0aWxlIHR5cGUgYXMgbmVlZGVkLiAgKi8KLUBAIC0xMjQsMzQgKzEwMCw2IEBAIHR5cGVkZWYgdm9pZCAoKnNpZ2hhbmRsZXJfdCkgKGludCk7Ci0gI2VuZGlmCi0gCi0gCi0tI2lmIEBHTlVMSUJfUFRIUkVBRF9TSUdNQVNLQAotLSMgaWYgQFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLQAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHB0aHJlYWRfc2lnbWFzawotLSMgICBkZWZpbmUgcHRocmVhZF9zaWdtYXNrIHJwbF9wdGhyZWFkX3NpZ21hc2sKLS0jICBlbmRpZgotLV9HTF9GVU5DREVDTF9SUEwgKHB0aHJlYWRfc2lnbWFzaywgaW50LAotLSAgICAgICAgICAgICAgICAgIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqbmV3X21hc2ssIHNpZ3NldF90ICpvbGRfbWFzaykpOwotLV9HTF9DWFhBTElBU19SUEwgKHB0aHJlYWRfc2lnbWFzaywgaW50LAotLSAgICAgICAgICAgICAgICAgIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqbmV3X21hc2ssIHNpZ3NldF90ICpvbGRfbWFzaykpOwotLSMgZWxzZQotLSMgIGlmICFASEFWRV9QVEhSRUFEX1NJR01BU0tACi0tX0dMX0ZVTkNERUNMX1NZUyAocHRocmVhZF9zaWdtYXNrLCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKGludCBob3csIGNvbnN0IHNpZ3NldF90ICpuZXdfbWFzaywgc2lnc2V0X3QgKm9sZF9tYXNrKSk7Ci0tIyAgZW5kaWYKLS1fR0xfQ1hYQUxJQVNfU1lTIChwdGhyZWFkX3NpZ21hc2ssIGludCwKLS0gICAgICAgICAgICAgICAgICAoaW50IGhvdywgY29uc3Qgc2lnc2V0X3QgKm5ld19tYXNrLCBzaWdzZXRfdCAqb2xkX21hc2spKTsKLS0jIGVuZGlmCi0tX0dMX0NYWEFMSUFTV0FSTiAocHRocmVhZF9zaWdtYXNrKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBwdGhyZWFkX3NpZ21hc2sKLS0jIGlmIEhBVkVfUkFXX0RFQ0xfUFRIUkVBRF9TSUdNQVNLCi0tX0dMX1dBUk5fT05fVVNFIChwdGhyZWFkX3NpZ21hc2ssICJwdGhyZWFkX3NpZ21hc2sgaXMgbm90IHBvcnRhYmxlIC0gIgotLSAgICAgICAgICAgICAgICAgInVzZSBnbnVsaWIgbW9kdWxlIHB0aHJlYWRfc2lnbWFzayBmb3IgcG9ydGFiaWxpdHkiKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0gI2lmIEBHTlVMSUJfU0lHUFJPQ01BU0tACi0gIyBpZiAhQEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkdACi0gCi1AQCAtNDIzLDYgKzM3MSw2IEBAIF9HTF9XQVJOX09OX1VTRSAoc2lnYWN0aW9uLCAic2lnYWN0aW9uIGkKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NJR05BTF9IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TSUdOQUxfSCAqLwotKyNlbmRpZiAvKiBfR0xfU0lHTkFMX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NJR05BTF9IICovCi0gI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0YXQuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGF0LmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0YXQuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3N0YXQuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjMzMDQ4NDQ1NyAtMDgwMAotQEAgLTM4LDcgKzM4LDYgQEAgb3JpZ19zdGF0IChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImRvc25hbWUuaCIKLS0jaW5jbHVkZSAidmVyaWZ5LmgiCi0gCi0gLyogU3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgTkFNRSBpbnRvIFNULiAgV29yayBhcm91bmQgYnVncyB3aXRoCi0gICAgdHJhaWxpbmcgc2xhc2hlcy4gIE1pbmd3IGhhcyBvdGhlciBidWdzIChzdWNoIGFzIHN0X2lubyBhbHdheXMKLUBAIC02NCwxMiArNjMsNiBAQCBycGxfc3RhdCAoY2hhciBjb25zdCAqbmFtZSwgc3RydWN0IHN0YXQKLSAgICAgfQotICNlbmRpZiAvKiBSRVBMQUNFX0ZVTkNfU1RBVF9GSUxFICovCi0gI2lmIFJFUExBQ0VfRlVOQ19TVEFUX0RJUgotLSAgLyogVGhlIG9ubHkga25vd24gc3lzdGVtcyB3aGVyZSBSRVBMQUNFX0ZVTkNfU1RBVF9ESVIgaXMgbmVlZGVkIGFsc28KLS0gICAgIGhhdmUgYSBjb25zdGFudCBQQVRIX01BWC4gICovCi0tIyBpZm5kZWYgUEFUSF9NQVgKLS0jICBlcnJvciAiUGxlYXNlIHBvcnQgdGhpcyByZXBsYWNlbWVudCB0byB5b3VyIHBsYXRmb3JtIgotLSMgZW5kaWYKLS0KLSAgIGlmIChyZXN1bHQgPT0gLTEgJiYgZXJybm8gPT0gRU5PRU5UKQotICAgICB7Ci0gICAgICAgLyogRHVlIHRvIG1pbmd3J3Mgb2RkaXRpZXMsIHRoZXJlIGFyZSBzb21lIGRpcmVjdG9yaWVzIChsaWtlCi1AQCAtODQsNyArNzcsNiBAQCBycGxfc3RhdCAoY2hhciBjb25zdCAqbmFtZSwgc3RydWN0IHN0YXQKLSAgICAgICBjaGFyIGZpeGVkX25hbWVbUEFUSF9NQVggKyAxXSA9IHswfTsKLSAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKTsKLSAgICAgICBib29sIGNoZWNrX2RpciA9IGZhbHNlOwotLSAgICAgIHZlcmlmeSAoUEFUSF9NQVggPD0gNDA5Nik7Ci0gICAgICAgaWYgKFBBVEhfTUFYIDw9IGxlbikKLSAgICAgICAgIGVycm5vID0gRU5BTUVUT09MT05HOwotICAgICAgIGVsc2UgaWYgKGxlbikKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkZGVmLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkZGVmLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGRlZi5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkZGVmLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4zNDY0ODQ0NTggLTA4MDAKLUBAIC0zOCw5ICszOCw5IEBACi0gICAgcmVtZW1iZXIgaWYgc3BlY2lhbCBpbnZvY2F0aW9uIGhhcyBldmVyIGJlZW4gdXNlZCB0byBvYnRhaW4gd2ludF90LAotICAgIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBjbGVhbiB1cCBOVUxMIHlldCBhZ2Fpbi4gICovCi0gCi0tIyBpZiAhKGRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9IICYmIGRlZmluZWQgX0dMX1NURERFRl9XSU5UX1QpCi0rIyBpZiAhKGRlZmluZWQgX0dMX1NURERFRl9IICYmIGRlZmluZWQgX0dMX1NURERFRl9XSU5UX1QpCi0gIyAgaWZkZWYgX19uZWVkX3dpbnRfdAotLSMgICB1bmRlZiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0gKLSsjICAgdW5kZWYgX0dMX1NURERFRl9ICi0gIyAgIGRlZmluZSBfR0xfU1REREVGX1dJTlRfVAotICMgIGVuZGlmCi0gIyAgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1REREVGX0hACi1AQCAtNDksMTQgKzQ5LDE0IEBACi0gI2Vsc2UKLSAvKiBOb3JtYWwgaW52b2NhdGlvbiBjb252ZW50aW9uLiAgKi8KLSAKLS0jIGlmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0gKLSsjIGlmbmRlZiBfR0xfU1REREVGX0gKLSAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gCi0gIyAgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1REREVGX0hACi0gCi0tIyAgaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSAotLSMgICBkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9ICi0rIyAgaWZuZGVmIF9HTF9TVERERUZfSAotKyMgICBkZWZpbmUgX0dMX1NURERFRl9ICi0gCi0gLyogT24gTmV0QlNEIDUuMCwgdGhlIGRlZmluaXRpb24gb2YgTlVMTCBsYWNrcyBwcm9wZXIgcGFyZW50aGVzZXMuICAqLwotICNpZiBAUkVQTEFDRV9OVUxMQAotQEAgLTgyLDYgKzgyLDYgQEAKLSAjIGRlZmluZSB3Y2hhcl90IGludAotICNlbmRpZgotIAotLSMgIGVuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSCAqLwotLSMgZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NURERFRl9IICovCi0rIyAgZW5kaWYgLyogX0dMX1NURERFRl9IICovCi0rIyBlbmRpZiAvKiBfR0xfU1REREVGX0ggKi8KLSAjZW5kaWYgLyogX19uZWVkX1hYWCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRpbnQuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpbnQuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkaW50LmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpbnQuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjM1ODQ4NDQ1OCAtMDgwMAotQEAgLTIxLDcgKzIxLDcgQEAKLSAgKiA8aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL3N1c3YzeGJkL3N0ZGludC5oLmh0bWw+Ci0gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0gKLSsjaWZuZGVmIF9HTF9TVERJTlRfSAotIAotICNpZiBfX0dOVUNfXyA+PSAzCi0gQFBSQUdNQV9TWVNURU1fSEVBREVSQAotQEAgLTUyLDEzICs1MiwxMyBAQAotICAgLyogT3RoZXIgc3lzdGVtcyBtYXkgaGF2ZSBhbiBpbmNvbXBsZXRlIG9yIGJ1Z2d5IDxzdGRpbnQuaD4uCi0gICAgICBJbmNsdWRlIGl0IGJlZm9yZSA8aW50dHlwZXMuaD4sIHNpbmNlIGFueSAiI2luY2x1ZGUgPHN0ZGludC5oPiIKLSAgICAgIGluIDxpbnR0eXBlcy5oPiB3b3VsZCByZWluY2x1ZGUgdXMsIHNraXBwaW5nIG91ciBjb250ZW50cyBiZWNhdXNlCi0tICAgICBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggaXMgZGVmaW5lZC4KLSsgICAgIF9HTF9TVERJTlRfSCBpcyBkZWZpbmVkLgotICAgICAgVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICMgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RESU5UX0hACi0gI2VuZGlmCi0gCi0tI2lmICEgZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggJiYgISBkZWZpbmVkIF9HTF9KVVNUX0lOQ0xVREVfU1lTVEVNX1NURElOVF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0gKLSsjaWYgISBkZWZpbmVkIF9HTF9TVERJTlRfSCAmJiAhIGRlZmluZWQgX0dMX0pVU1RfSU5DTFVERV9TWVNURU1fU1RESU5UX0gKLSsjZGVmaW5lIF9HTF9TVERJTlRfSAotIAotIC8qIDxzeXMvdHlwZXMuaD4gZGVmaW5lcyBzb21lIG9mIHRoZSBzdGRpbnQuaCB0eXBlcyBhcyB3ZWxsLCBvbiBnbGliYywKLSAgICBJUklYIDYuNSwgYW5kIE9wZW5CU0QgMy44ICh2aWEgPG1hY2hpbmUvdHlwZXMuaD4pLgotQEAgLTI3MCwzNiArMjcwLDI2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgZ2xfdWludHB0cl90OwotIC8qIE5vdGU6IFRoZXNlIHR5cGVzIGFyZSBjb21waWxlciBkZXBlbmRlbnQuIEl0IG1heSBiZSB1bndpc2UgdG8gdXNlIHRoZW0gaW4KLSAgICBwdWJsaWMgaGVhZGVyIGZpbGVzLiAqLwotIAotLS8qIElmIHRoZSBzeXN0ZW0gZGVmaW5lcyBJTlRNQVhfTUFYLCBhc3N1bWUgdGhhdCBpbnRtYXhfdCB3b3JrcywgYW5kCi0tICAgc2ltaWxhcmx5IGZvciBVSU5UTUFYX01BWCBhbmQgdWludG1heF90LiAgVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aAotLSAgIGFzc3VtaW5nIG9uZSB0eXBlIHdoZXJlIGFub3RoZXIgaXMgdXNlZCBieSB0aGUgc3lzdGVtLiAgKi8KLS0KLS0jaWZuZGVmIElOVE1BWF9NQVgKLS0jIHVuZGVmIElOVE1BWF9DCi0tIyB1bmRlZiBpbnRtYXhfdAotLSMgaWYgQEhBVkVfTE9OR19MT05HX0lOVEAgJiYgTE9OR19NQVggPj4gMzAgPT0gMQotKyN1bmRlZiBpbnRtYXhfdAotKyNpZiBASEFWRV9MT05HX0xPTkdfSU5UQCAmJiBMT05HX01BWCA+PiAzMCA9PSAxCi0gdHlwZWRlZiBsb25nIGxvbmcgaW50IGdsX2ludG1heF90OwotLSMgIGRlZmluZSBpbnRtYXhfdCBnbF9pbnRtYXhfdAotLSMgZWxpZiBkZWZpbmVkIEdMX0lOVDY0X1QKLS0jICBkZWZpbmUgaW50bWF4X3QgaW50NjRfdAotLSMgZWxzZQotKyMgZGVmaW5lIGludG1heF90IGdsX2ludG1heF90Ci0rI2VsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0rIyBkZWZpbmUgaW50bWF4X3QgaW50NjRfdAotKyNlbHNlCi0gdHlwZWRlZiBsb25nIGludCBnbF9pbnRtYXhfdDsKLS0jICBkZWZpbmUgaW50bWF4X3QgZ2xfaW50bWF4X3QKLS0jIGVuZGlmCi0rIyBkZWZpbmUgaW50bWF4X3QgZ2xfaW50bWF4X3QKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIFVJTlRNQVhfTUFYCi0tIyB1bmRlZiBVSU5UTUFYX0MKLS0jIHVuZGVmIHVpbnRtYXhfdAotLSMgaWYgQEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVEAgJiYgVUxPTkdfTUFYID4+IDMxID09IDEKLSsjdW5kZWYgdWludG1heF90Ci0rI2lmIEBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlRAICYmIFVMT05HX01BWCA+PiAzMSA9PSAxCi0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGdsX3VpbnRtYXhfdDsKLS0jICBkZWZpbmUgdWludG1heF90IGdsX3VpbnRtYXhfdAotLSMgZWxpZiBkZWZpbmVkIEdMX1VJTlQ2NF9UCi0tIyAgZGVmaW5lIHVpbnRtYXhfdCB1aW50NjRfdAotLSMgZWxzZQotKyMgZGVmaW5lIHVpbnRtYXhfdCBnbF91aW50bWF4X3QKLSsjZWxpZiBkZWZpbmVkIEdMX1VJTlQ2NF9UCi0rIyBkZWZpbmUgdWludG1heF90IHVpbnQ2NF90Ci0rI2Vsc2UKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IGdsX3VpbnRtYXhfdDsKLS0jICBkZWZpbmUgdWludG1heF90IGdsX3VpbnRtYXhfdAotLSMgZW5kaWYKLSsjIGRlZmluZSB1aW50bWF4X3QgZ2xfdWludG1heF90Ci0gI2VuZGlmCi0gCi0gLyogVmVyaWZ5IHRoYXQgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCBoYXZlIHRoZSBzYW1lIHNpemUuICBUb28gbXVjaCBjb2RlCi1AQCAtNDQxLDIzICs0MzEsMjEgQEAgdHlwZWRlZiBpbnQgX3ZlcmlmeV9pbnRtYXhfc2l6ZVtzaXplb2YgKAotIAotIC8qIDcuMTguMi41LiBMaW1pdHMgb2YgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcyAqLwotIAotLSNpZm5kZWYgSU5UTUFYX01BWAotLSMgdW5kZWYgSU5UTUFYX01JTgotLSMgaWZkZWYgSU5UNjRfTUFYCi0tIyAgZGVmaW5lIElOVE1BWF9NSU4gIElOVDY0X01JTgotLSMgIGRlZmluZSBJTlRNQVhfTUFYICBJTlQ2NF9NQVgKLS0jIGVsc2UKLS0jICBkZWZpbmUgSU5UTUFYX01JTiAgSU5UMzJfTUlOCi0tIyAgZGVmaW5lIElOVE1BWF9NQVggIElOVDMyX01BWAotLSMgZW5kaWYKLSsjdW5kZWYgSU5UTUFYX01JTgotKyN1bmRlZiBJTlRNQVhfTUFYCi0rI2lmZGVmIElOVDY0X01BWAotKyMgZGVmaW5lIElOVE1BWF9NSU4gIElOVDY0X01JTgotKyMgZGVmaW5lIElOVE1BWF9NQVggIElOVDY0X01BWAotKyNlbHNlCi0rIyBkZWZpbmUgSU5UTUFYX01JTiAgSU5UMzJfTUlOCi0rIyBkZWZpbmUgSU5UTUFYX01BWCAgSU5UMzJfTUFYCi0gI2VuZGlmCi0gCi0tI2lmbmRlZiBVSU5UTUFYX01BWAotLSMgaWZkZWYgVUlOVDY0X01BWAotLSMgIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDY0X01BWAotLSMgZWxzZQotLSMgIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDMyX01BWAotLSMgZW5kaWYKLSsjdW5kZWYgVUlOVE1BWF9NQVgKLSsjaWZkZWYgVUlOVDY0X01BWAotKyMgZGVmaW5lIFVJTlRNQVhfTUFYICBVSU5UNjRfTUFYCi0rI2Vsc2UKLSsjIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDMyX01BWAotICNlbmRpZgotIAotIC8qIDcuMTguMy4gTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMgKi8KLUBAIC01ODAsMjcgKzU2OCwyNSBAQCB0eXBlZGVmIGludCBfdmVyaWZ5X2ludG1heF9zaXplW3NpemVvZiAoCi0gCi0gLyogNy4xOC40LjIuIE1hY3JvcyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMgKi8KLSAKLS0jaWZuZGVmIElOVE1BWF9DCi0tIyBpZiBASEFWRV9MT05HX0xPTkdfSU5UQCAmJiBMT05HX01BWCA+PiAzMCA9PSAxCi0tIyAgZGVmaW5lIElOVE1BWF9DKHgpICAgeCMjTEwKLS0jIGVsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0tIyAgZGVmaW5lIElOVE1BWF9DKHgpICAgSU5UNjRfQyh4KQotLSMgZWxzZQotLSMgIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0wKLS0jIGVuZGlmCi0rI3VuZGVmIElOVE1BWF9DCi0rI2lmIEBIQVZFX0xPTkdfTE9OR19JTlRAICYmIExPTkdfTUFYID4+IDMwID09IDEKLSsjIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0xMCi0rI2VsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0rIyBkZWZpbmUgSU5UTUFYX0MoeCkgICBJTlQ2NF9DKHgpCi0rI2Vsc2UKLSsjIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0wKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIFVJTlRNQVhfQwotLSMgaWYgQEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVEAgJiYgVUxPTkdfTUFYID4+IDMxID09IDEKLS0jICBkZWZpbmUgVUlOVE1BWF9DKHgpICB4IyNVTEwKLS0jIGVsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotLSMgIGRlZmluZSBVSU5UTUFYX0MoeCkgIFVJTlQ2NF9DKHgpCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUwKLS0jIGVuZGlmCi0rI3VuZGVmIFVJTlRNQVhfQwotKyNpZiBASEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UQCAmJiBVTE9OR19NQVggPj4gMzEgPT0gMQotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUxMCi0rI2VsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgVUlOVDY0X0MoeCkKLSsjZWxzZQotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUwKLSAjZW5kaWYKLSAKLSAjZW5kaWYgLyogIWRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfX1NURENfQ09OU1RBTlRfTUFDUk9TICovCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERJTlRfSCAqLwotLSNlbmRpZiAvKiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggJiYgIWRlZmluZWQgX0dMX0pVU1RfSU5DTFVERV9TWVNURU1fU1RESU5UX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURElOVF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkIF9HTF9TVERJTlRfSCAmJiAhZGVmaW5lZCBfR0xfSlVTVF9JTkNMVURFX1NZU1RFTV9TVERJTlRfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRpby5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3N0ZGlvLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGlvLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpby5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMzc4NDg0NDU5IC0wODAwCi1AQCAtMzUsNyArMzUsNyBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSAotKyNpZm5kZWYgX0dMX1NURElPX0gKLSAKLSAjZGVmaW5lIF9HTF9BTFJFQURZX0lOQ0xVRElOR19TVERJT19ICi0gCi1AQCAtNDQsOCArNDQsOCBAQAotIAotICN1bmRlZiBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU1RESU9fSAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURElPX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVERJT19ICi0rI2lmbmRlZiBfR0xfU1RESU9fSAotKyNkZWZpbmUgX0dMX1NURElPX0gKLSAKLSAvKiBHZXQgdmFfbGlzdC4gIE5lZWRlZCBvbiBtYW55IHN5c3RlbXMsIGluY2x1ZGluZyBnbGliYyAyLjguICAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLUBAIC00NjEsNiArNDYxLDI1IEBAIF9HTF9GVU5DREVDTF9TWVMgKGZzZWVrbywgaW50LCAoRklMRSAqZnAKLSBfR0xfQ1hYQUxJQVNfU1lTIChmc2Vla28sIGludCwgKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTV0FSTiAoZnNlZWtvKTsKLSsjIGlmIChAUkVQTEFDRV9GU0VFS09AIHx8ICFASEFWRV9GU0VFS09AKSAmJiAhQEdOVUxJQl9GU0VFS0AKLSsgICAvKiBQcm92aWRlIGFuIGZzZWVrIGZ1bmN0aW9uIHRoYXQgaXMgY29uc2lzdGVudCB3aXRoIGZzZWVrby4gICovCi0rICAgLyogSW4gb3JkZXIgdG8gYXZvaWQgdGhhdCBmc2VlayBnZXRzIGRlZmluZWQgYXMgYSBtYWNybyBoZXJlLCB0aGUKLSsgICAgICBkZXZlbG9wZXIgY2FuIHJlcXVlc3QgdGhlICdmc2VlaycgbW9kdWxlLiAgKi8KLSsjICBpZiAhR05VTElCX2RlZmluZWRfZnNlZWtfZnVuY3Rpb24KLSsjICAgdW5kZWYgZnNlZWsKLSsjICAgZGVmaW5lIGZzZWVrIHJwbF9mc2VlawotK3N0YXRpYyBpbmxpbmUgaW50IF9HTF9BUkdfTk9OTlVMTCAoKDEpKQotK3JwbF9mc2VlayAoRklMRSAqZnAsIGxvbmcgb2Zmc2V0LCBpbnQgd2hlbmNlKQotK3sKLSsjICAgaWYgQFJFUExBQ0VfRlNFRUtPQAotKyAgcmV0dXJuIHJwbF9mc2Vla28gKGZwLCBvZmZzZXQsIHdoZW5jZSk7Ci0rIyAgIGVsc2UKLSsgIHJldHVybiBmc2Vla28gKGZwLCBvZmZzZXQsIHdoZW5jZSk7Ci0rIyAgIGVuZGlmCi0rfQotKyMgICBkZWZpbmUgR05VTElCX2RlZmluZWRfZnNlZWtfZnVuY3Rpb24gMQotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSAjIGRlZmluZSBfR0xfRlNFRUtfV0FSTiAvKiBDYXRlZ29yeSAxLCBhYm92ZS4gICovCi0gIyB1bmRlZiBmc2VlawotQEAgLTUyMCw2ICs1MzksMjUgQEAgX0dMX0ZVTkNERUNMX1NZUyAoZnRlbGxvLCBvZmZfdCwgKEZJTEUgKgotIF9HTF9DWFhBTElBU19TWVMgKGZ0ZWxsbywgb2ZmX3QsIChGSUxFICpmcCkpOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNXQVJOIChmdGVsbG8pOwotKyMgaWYgKEBSRVBMQUNFX0ZURUxMT0AgfHwgIUBIQVZFX0ZURUxMT0ApICYmICFAR05VTElCX0ZURUxMQAotKyAgIC8qIFByb3ZpZGUgYW4gZnRlbGwgZnVuY3Rpb24gdGhhdCBpcyBjb25zaXN0ZW50IHdpdGggZnRlbGxvLiAgKi8KLSsgICAvKiBJbiBvcmRlciB0byBhdm9pZCB0aGF0IGZ0ZWxsIGdldHMgZGVmaW5lZCBhcyBhIG1hY3JvIGhlcmUsIHRoZQotKyAgICAgIGRldmVsb3BlciBjYW4gcmVxdWVzdCB0aGUgJ2Z0ZWxsJyBtb2R1bGUuICAqLwotKyMgIGlmICFHTlVMSUJfZGVmaW5lZF9mdGVsbF9mdW5jdGlvbgotKyMgICB1bmRlZiBmdGVsbAotKyMgICBkZWZpbmUgZnRlbGwgcnBsX2Z0ZWxsCi0rc3RhdGljIGlubGluZSBsb25nIF9HTF9BUkdfTk9OTlVMTCAoKDEpKQotK3JwbF9mdGVsbCAoRklMRSAqZikKLSt7Ci0rIyAgIGlmIEBSRVBMQUNFX0ZURUxMT0AKLSsgIHJldHVybiBycGxfZnRlbGxvIChmKTsKLSsjICAgZWxzZQotKyAgcmV0dXJuIGZ0ZWxsbyAoZik7Ci0rIyAgIGVuZGlmCi0rfQotKyMgICBkZWZpbmUgR05VTElCX2RlZmluZWRfZnRlbGxfZnVuY3Rpb24gMQotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSAjIGRlZmluZSBfR0xfRlRFTExfV0FSTiAvKiBDYXRlZ29yeSAxLCBhYm92ZS4gICovCi0gIyB1bmRlZiBmdGVsbAotQEAgLTEzMDcsNiArMTM0NSw2IEBAIF9HTF9XQVJOX09OX1VTRSAodnNwcmludGYsICJ2c3ByaW50ZiBpcwotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RESU9fSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RESU9fSCAqLwotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRsaWIuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRsaWIuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkbGliLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRsaWIuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjM5MDQ4NDQ1OSAtMDgwMAotQEAgLTI4LDEzICsyOCwxMyBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0gKLSsjaWZuZGVmIF9HTF9TVERMSUJfSAotIAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RETElCX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVERMSUJfSAotKyNpZm5kZWYgX0dMX1NURExJQl9ICi0rI2RlZmluZSBfR0xfU1RETElCX0gKLSAKLSAvKiBOZXRCU0QgNS4wIG1pcy1kZWZpbmVzIE5VTEwuICAqLwotICNpbmNsdWRlIDxzdGRkZWYuaD4KLUBAIC04OSw3ICs4OSwxMSBAQCBzdHJ1Y3QgcmFuZG9tX2RhdGEKLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLS8qIFRoZSBkZWZpbml0aW9uIG9mIF9Ob3JldHVybiBpcyBjb3BpZWQgaGVyZS4gICovCi0rI2lmIDMgPD0gX19HTlVDX18gfHwgX19HTlVDX18gPT0gMiAmJiA4IDw9IF9fR05VQ19NSU5PUl9fCi0rIyBkZWZpbmUgX0dMX0FUVFJJQlVURV9OT1JFVFVSTiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfTk9SRVRVUk4KLSsjZW5kaWYKLSAKLSAvKiBUaGUgZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTCBldGMuIGFyZSBjb3BpZWQgaGVyZS4gICovCi0gCi1AQCAtMTE2LDcgKzEyMCw3IEBAIHN0cnVjdCByYW5kb21fZGF0YQotIC8qIFRlcm1pbmF0ZSB0aGUgY3VycmVudCBwcm9jZXNzIHdpdGggdGhlIGdpdmVuIHJldHVybiBjb2RlLCB3aXRob3V0IHJ1bm5pbmcKLSAgICB0aGUgJ2F0ZXhpdCcgaGFuZGxlcnMuICAqLwotICMgaWYgIUBIQVZFX19FWElUQAotLV9HTF9GVU5DREVDTF9TWVMgKF9FeGl0LCBfTm9yZXR1cm4gdm9pZCwgKGludCBzdGF0dXMpKTsKLStfR0xfRlVOQ0RFQ0xfU1lTIChfRXhpdCwgdm9pZCwgKGludCBzdGF0dXMpIF9HTF9BVFRSSUJVVEVfTk9SRVRVUk4pOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNfU1lTIChfRXhpdCwgdm9pZCwgKGludCBzdGF0dXMpKTsKLSBfR0xfQ1hYQUxJQVNXQVJOIChfRXhpdCk7Ci1AQCAtNzU3LDYgKzc2MSw2IEBAIF9HTF9DWFhBTElBU1dBUk4gKHdjdG9tYik7Ci0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERMSUJfSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURExJQl9IICovCi0rI2VuZGlmIC8qIF9HTF9TVERMSUJfSCAqLwotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci5jIGxpYmljb252LTEuMTQvc3JjbGliL3N0cmVycm9yLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmVycm9yLmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci5jCTIwMTItMDEtMDggMDI6MDc6NDAuNDA2NDg0NDYxIC0wODAwCi1AQCAtMTcsNTQgKzE3LDM0MCBAQAotIAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLS0vKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWYgUkVQTEFDRV9TVFJFUlJPUgotKwotKyMgaW5jbHVkZSA8ZXJybm8uaD4KLSsjIGluY2x1ZGUgPHN0ZGlvLmg+Ci0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FU09DSyAvKiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMgKi8KLSsjICBpZiBIQVZFX1dJTlNPQ0syX0gKLSsjICAgaW5jbHVkZSA8d2luc29jazIuaD4KLSsjICBlbmRpZgotKyMgZW5kaWYKLSAKLS0jaW5jbHVkZSAiaW50cHJvcHMuaCIKLS0jaW5jbHVkZSAic3RyZXJyb3Itb3ZlcnJpZGUuaCIKLS0jaW5jbHVkZSAidmVyaWZ5LmgiCi0rIyBpbmNsdWRlICJpbnRwcm9wcy5oIgotIAotIC8qIFVzZSB0aGUgc3lzdGVtIGZ1bmN0aW9ucywgbm90IHRoZSBnbnVsaWIgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZS4gICovCi0tI3VuZGVmIHNwcmludGYKLSsjIHVuZGVmIHNwcmludGYKLSsKLSsjIHVuZGVmIHN0cmVycm9yCi0rIyBpZiAhIEhBVkVfREVDTF9TVFJFUlJPUgotKyMgIGRlZmluZSBzdHJlcnJvcihuKSBOVUxMCi0rIyBlbmRpZgotIAotIGNoYXIgKgotLXN0cmVycm9yIChpbnQgbikKLS0jdW5kZWYgc3RyZXJyb3IKLStycGxfc3RyZXJyb3IgKGludCBuKQotIHsKLS0gIHN0YXRpYyBjaGFyIGJ1ZltTVEFDS0JVRl9MRU5dOwotLSAgc2l6ZV90IGxlbjsKLSsgIGNoYXIgY29uc3QgKm1zZyA9IE5VTEw7Ci0rICAvKiBUaGVzZSBlcnJvciBtZXNzYWdlcyBhcmUgdGFrZW4gZnJvbSBnbGliYy9zeXNkZXBzL2dudS9lcnJsaXN0LmMuICAqLwotKyAgc3dpdGNoIChuKQotKyAgICB7Ci0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FVFhUQlNZCi0rICAgIGNhc2UgRVRYVEJTWToKLSsgICAgICBtc2cgPSAiVGV4dCBmaWxlIGJ1c3kiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VTT0NLIC8qIG5hdGl2ZSBXaW5kb3dzIHBsYXRmb3JtcyAqLwotKyAgICAvKiBFV09VTERCTE9DSyBpcyB0aGUgc2FtZSBhcyBFQUdBSU4uICAqLwotKyAgICBjYXNlIEVJTlBST0dSRVNTOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gbm93IGluIHByb2dyZXNzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUxSRUFEWToKLSsgICAgICBtc2cgPSAiT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVOT1RTT0NLOgotKyAgICAgIG1zZyA9ICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVERVNUQUREUlJFUToKLSsgICAgICBtc2cgPSAiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU1TR1NJWkU6Ci0rICAgICAgbXNnID0gIk1lc3NhZ2UgdG9vIGxvbmciOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9UT1RZUEU6Ci0rICAgICAgbXNnID0gIlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5PUFJPVE9PUFQ6Ci0rICAgICAgbXNnID0gIlByb3RvY29sIG5vdCBhdmFpbGFibGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9UT05PU1VQUE9SVDoKLSsgICAgICBtc2cgPSAiUHJvdG9jb2wgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNPQ0tUTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFT1BOT1RTVVBQOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVBGTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUFGTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUREUklOVVNFOgotKyAgICAgIG1zZyA9ICJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUREUk5PVEFWQUlMOgotKyAgICAgIG1zZyA9ICJDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTkVURE9XTjoKLSsgICAgICBtc2cgPSAiTmV0d29yayBpcyBkb3duIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTkVUVU5SRUFDSDoKLSsgICAgICBtc2cgPSAiTmV0d29yayBpcyB1bnJlYWNoYWJsZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5FVFJFU0VUOgotKyAgICAgIG1zZyA9ICJOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBvbiByZXNldCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5BQk9SVEVEOgotKyAgICAgIG1zZyA9ICJTb2Z0d2FyZSBjYXVzZWQgY29ubmVjdGlvbiBhYm9ydCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5SRVNFVDoKLSsgICAgICBtc2cgPSAiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTk9CVUZTOgotKyAgICAgIG1zZyA9ICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFSVNDT05OOgotKyAgICAgIG1zZyA9ICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVOT1RDT05OOgotKyAgICAgIG1zZyA9ICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5lY3RlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNIVVRET1dOOgotKyAgICAgIG1zZyA9ICJDYW5ub3Qgc2VuZCBhZnRlciB0cmFuc3BvcnQgZW5kcG9pbnQgc2h1dGRvd24iOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVUT09NQU5ZUkVGUzoKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVRJTUVET1VUOgotKyAgICAgIG1zZyA9ICJDb25uZWN0aW9uIHRpbWVkIG91dCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5SRUZVU0VEOgotKyAgICAgIG1zZyA9ICJDb25uZWN0aW9uIHJlZnVzZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVMT09QOgotKyAgICAgIG1zZyA9ICJUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVIT1NURE9XTjoKLSsgICAgICBtc2cgPSAiSG9zdCBpcyBkb3duIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFSE9TVFVOUkVBQ0g6Ci0rICAgICAgbXNnID0gIk5vIHJvdXRlIHRvIGhvc3QiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9DTElNOgotKyAgICAgIG1zZyA9ICJUb28gbWFueSBwcm9jZXNzZXMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVVU0VSUzoKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgdXNlcnMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVEUVVPVDoKLSsgICAgICBtc2cgPSAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNUQUxFOgotKyAgICAgIG1zZyA9ICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVSRU1PVEU6Ci0rICAgICAgbXNnID0gIk9iamVjdCBpcyByZW1vdGUiOwotKyAgICAgIGJyZWFrOwotKyMgIGlmIEhBVkVfV0lOU09DSzJfSAotKyAgICAvKiBXU0FfSU5WQUxJRF9IQU5ETEUgbWFwcyB0byBFQkFERiAqLwotKyAgICAvKiBXU0FfTk9UX0VOT1VHSF9NRU1PUlkgbWFwcyB0byBFTk9NRU0gKi8KLSsgICAgLyogV1NBX0lOVkFMSURfUEFSQU1FVEVSIG1hcHMgdG8gRUlOVkFMICovCi0rICAgIGNhc2UgV1NBX09QRVJBVElPTl9BQk9SVEVEOgotKyAgICAgIG1zZyA9ICJPdmVybGFwcGVkIG9wZXJhdGlvbiBhYm9ydGVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FfSU9fSU5DT01QTEVURToKLSsgICAgICBtc2cgPSAiT3ZlcmxhcHBlZCBJL08gZXZlbnQgb2JqZWN0IG5vdCBpbiBzaWduYWxlZCBzdGF0ZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBX0lPX1BFTkRJTkc6Ci0rICAgICAgbXNnID0gIk92ZXJsYXBwZWQgb3BlcmF0aW9ucyB3aWxsIGNvbXBsZXRlIGxhdGVyIjsKLSsgICAgICBicmVhazsKLSsgICAgLyogV1NBRUlOVFIgbWFwcyB0byBFSU5UUiAqLwotKyAgICAvKiBXU0FFQkFERiBtYXBzIHRvIEVCQURGICovCi0rICAgIC8qIFdTQUVBQ0NFUyBtYXBzIHRvIEVBQ0NFUyAqLwotKyAgICAvKiBXU0FFRkFVTFQgbWFwcyB0byBFRkFVTFQgKi8KLSsgICAgLyogV1NBRUlOVkFMIG1hcHMgdG8gRUlOVkFMICovCi0rICAgIC8qIFdTQUVNRklMRSBtYXBzIHRvIEVNRklMRSAqLwotKyAgICAvKiBXU0FFV09VTERCTE9DSyBtYXBzIHRvIEVXT1VMREJMT0NLICovCi0rICAgIC8qIFdTQUVJTlBST0dSRVNTIGlzIEVJTlBST0dSRVNTICovCi0rICAgIC8qIFdTQUVBTFJFQURZIGlzIEVBTFJFQURZICovCi0rICAgIC8qIFdTQUVOT1RTT0NLIGlzIEVOT1RTT0NLICovCi0rICAgIC8qIFdTQUVERVNUQUREUlJFUSBpcyBFREVTVEFERFJSRVEgKi8KLSsgICAgLyogV1NBRU1TR1NJWkUgaXMgRU1TR1NJWkUgKi8KLSsgICAgLyogV1NBRVBST1RPVFlQRSBpcyBFUFJPVE9UWVBFICovCi0rICAgIC8qIFdTQUVOT1BST1RPT1BUIGlzIEVOT1BST1RPT1BUICovCi0rICAgIC8qIFdTQUVQUk9UT05PU1VQUE9SVCBpcyBFUFJPVE9OT1NVUFBPUlQgKi8KLSsgICAgLyogV1NBRVNPQ0tUTk9TVVBQT1JUIGlzIEVTT0NLVE5PU1VQUE9SVCAqLwotKyAgICAvKiBXU0FFT1BOT1RTVVBQIGlzIEVPUE5PVFNVUFAgKi8KLSsgICAgLyogV1NBRVBGTk9TVVBQT1JUIGlzIEVQRk5PU1VQUE9SVCAqLwotKyAgICAvKiBXU0FFQUZOT1NVUFBPUlQgaXMgRUFGTk9TVVBQT1JUICovCi0rICAgIC8qIFdTQUVBRERSSU5VU0UgaXMgRUFERFJJTlVTRSAqLwotKyAgICAvKiBXU0FFQUREUk5PVEFWQUlMIGlzIEVBRERSTk9UQVZBSUwgKi8KLSsgICAgLyogV1NBRU5FVERPV04gaXMgRU5FVERPV04gKi8KLSsgICAgLyogV1NBRU5FVFVOUkVBQ0ggaXMgRU5FVFVOUkVBQ0ggKi8KLSsgICAgLyogV1NBRU5FVFJFU0VUIGlzIEVORVRSRVNFVCAqLwotKyAgICAvKiBXU0FFQ09OTkFCT1JURUQgaXMgRUNPTk5BQk9SVEVEICovCi0rICAgIC8qIFdTQUVDT05OUkVTRVQgaXMgRUNPTk5SRVNFVCAqLwotKyAgICAvKiBXU0FFTk9CVUZTIGlzIEVOT0JVRlMgKi8KLSsgICAgLyogV1NBRUlTQ09OTiBpcyBFSVNDT05OICovCi0rICAgIC8qIFdTQUVOT1RDT05OIGlzIEVOT1RDT05OICovCi0rICAgIC8qIFdTQUVTSFVURE9XTiBpcyBFU0hVVERPV04gKi8KLSsgICAgLyogV1NBRVRPT01BTllSRUZTIGlzIEVUT09NQU5ZUkVGUyAqLwotKyAgICAvKiBXU0FFVElNRURPVVQgaXMgRVRJTUVET1VUICovCi0rICAgIC8qIFdTQUVDT05OUkVGVVNFRCBpcyBFQ09OTlJFRlVTRUQgKi8KLSsgICAgLyogV1NBRUxPT1AgaXMgRUxPT1AgKi8KLSsgICAgLyogV1NBRU5BTUVUT09MT05HIG1hcHMgdG8gRU5BTUVUT09MT05HICovCi0rICAgIC8qIFdTQUVIT1NURE9XTiBpcyBFSE9TVERPV04gKi8KLSsgICAgLyogV1NBRUhPU1RVTlJFQUNIIGlzIEVIT1NUVU5SRUFDSCAqLwotKyAgICAvKiBXU0FFTk9URU1QVFkgbWFwcyB0byBFTk9URU1QVFkgKi8KLSsgICAgLyogV1NBRVBST0NMSU0gaXMgRVBST0NMSU0gKi8KLSsgICAgLyogV1NBRVVTRVJTIGlzIEVVU0VSUyAqLwotKyAgICAvKiBXU0FFRFFVT1QgaXMgRURRVU9UICovCi0rICAgIC8qIFdTQUVTVEFMRSBpcyBFU1RBTEUgKi8KLSsgICAgLyogV1NBRVJFTU9URSBpcyBFUkVNT1RFICovCi0rICAgIGNhc2UgV1NBU1lTTk9UUkVBRFk6Ci0rICAgICAgbXNnID0gIk5ldHdvcmsgc3Vic3lzdGVtIGlzIHVuYXZhaWxhYmxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FWRVJOT1RTVVBQT1JURUQ6Ci0rICAgICAgbXNnID0gIldpbnNvY2suZGxsIHZlcnNpb24gb3V0IG9mIHJhbmdlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FOT1RJTklUSUFMSVNFRDoKLSsgICAgICBtc2cgPSAiU3VjY2Vzc2Z1bCBXU0FTdGFydHVwIG5vdCB5ZXQgcGVyZm9ybWVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFRElTQ09OOgotKyAgICAgIG1zZyA9ICJHcmFjZWZ1bCBzaHV0ZG93biBpbiBwcm9ncmVzcyI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRU5PTU9SRTogY2FzZSBXU0FfRV9OT19NT1JFOgotKyAgICAgIG1zZyA9ICJObyBtb3JlIHJlc3VsdHMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVDQU5DRUxMRUQ6IGNhc2UgV1NBX0VfQ0FOQ0VMTEVEOgotKyAgICAgIG1zZyA9ICJDYWxsIHdhcyBjYW5jZWxlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRUlOVkFMSURQUk9DVEFCTEU6Ci0rICAgICAgbXNnID0gIlByb2NlZHVyZSBjYWxsIHRhYmxlIGlzIGludmFsaWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVJTlZBTElEUFJPVklERVI6Ci0rICAgICAgbXNnID0gIlNlcnZpY2UgcHJvdmlkZXIgaXMgaW52YWxpZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRVBST1ZJREVSRkFJTEVESU5JVDoKLSsgICAgICBtc2cgPSAiU2VydmljZSBwcm92aWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBU1lTQ0FMTEZBSUxVUkU6Ci0rICAgICAgbXNnID0gIlN5c3RlbSBjYWxsIGZhaWx1cmUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQVNFUlZJQ0VfTk9UX0ZPVU5EOgotKyAgICAgIG1zZyA9ICJTZXJ2aWNlIG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBVFlQRV9OT1RfRk9VTkQ6Ci0rICAgICAgbXNnID0gIkNsYXNzIHR5cGUgbm90IGZvdW5kIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFUkVGVVNFRDoKLSsgICAgICBtc2cgPSAiRGF0YWJhc2UgcXVlcnkgd2FzIHJlZnVzZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUhPU1RfTk9UX0ZPVU5EOgotKyAgICAgIG1zZyA9ICJIb3N0IG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBVFJZX0FHQUlOOgotKyAgICAgIG1zZyA9ICJOb25hdXRob3JpdGF0aXZlIGhvc3Qgbm90IGZvdW5kIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FOT19SRUNPVkVSWToKLSsgICAgICBtc2cgPSAiTm9ucmVjb3ZlcmFibGUgZXJyb3IiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQU5PX0RBVEE6Ci0rICAgICAgbXNnID0gIlZhbGlkIG5hbWUsIG5vIGRhdGEgcmVjb3JkIG9mIHJlcXVlc3RlZCB0eXBlIjsKLSsgICAgICBicmVhazsKLSsgICAgLyogV1NBX1FPU18qIG9taXR0ZWQgKi8KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VOT01TRwotKyAgICBjYXNlIEVOT01TRzoKLSsgICAgICBtc2cgPSAiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VJRFJNCi0rICAgIGNhc2UgRUlEUk06Ci0rICAgICAgbXNnID0gIklkZW50aWZpZXIgcmVtb3ZlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU5PTElOSwotKyAgICBjYXNlIEVOT0xJTks6Ci0rICAgICAgbXNnID0gIkxpbmsgaGFzIGJlZW4gc2V2ZXJlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRVBST1RPCi0rICAgIGNhc2UgRVBST1RPOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCBlcnJvciI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU1VTFRJSE9QCi0rICAgIGNhc2UgRU1VTFRJSE9QOgotKyAgICAgIG1zZyA9ICJNdWx0aWhvcCBhdHRlbXB0ZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VCQURNU0cKLSsgICAgY2FzZSBFQkFETVNHOgotKyAgICAgIG1zZyA9ICJCYWQgbWVzc2FnZSI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU9WRVJGTE9XCi0rICAgIGNhc2UgRU9WRVJGTE9XOgotKyAgICAgIG1zZyA9ICJWYWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQCi0rICAgIGNhc2UgRU5PVFNVUDoKLSsgICAgICBtc2cgPSAiTm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRVNUQUxFCi0rICAgIGNhc2UgRVNUQUxFOgotKyAgICAgIG1zZyA9ICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VEUVVPVAotKyAgICBjYXNlIEVEUVVPVDoKLSsgICAgICBtc2cgPSAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRUNBTkNFTEVECi0rICAgIGNhc2UgRUNBTkNFTEVEOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gY2FuY2VsZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsgICAgfQotIAotLSAgLyogQ2FzdCBhd2F5IGNvbnN0LCBkdWUgdG8gdGhlIGhpc3RvcmljYWwgc2lnbmF0dXJlIG9mIHN0cmVycm9yOwotLSAgICAgY2FsbGVycyBzaG91bGQgbm90IGJlIG1vZGlmeWluZyB0aGUgc3RyaW5nLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm1zZyA9IHN0cmVycm9yX292ZXJyaWRlIChuKTsKLSAgIGlmIChtc2cpCi0gICAgIHJldHVybiAoY2hhciAqKSBtc2c7Ci0gCi0tICBtc2cgPSBzdHJlcnJvciAobik7Ci0rICB7Ci0rICAgIGNoYXIgKnJlc3VsdCA9IHN0cmVycm9yIChuKTsKLSAKLS0gIC8qIE91ciBzdHJlcnJvcl9yIGltcGxlbWVudGF0aW9uIG1pZ2h0IHVzZSB0aGUgc3lzdGVtJ3Mgc3RyZXJyb3IKLS0gICAgIGJ1ZmZlciwgc28gYWxsIG90aGVyIGNsaWVudHMgb2Ygc3RyZXJyb3IgaGF2ZSB0byBzZWUgdGhlIGVycm9yCi0tICAgICBjb3BpZWQgaW50byBhIGJ1ZmZlciB0aGF0IHdlIG1hbmFnZS4gIFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLAotLSAgICAgZXZlbiBpZiB0aGUgc3lzdGVtIHN0cmVycm9yIGlzLCBidXQgcG9ydGFibGUgcHJvZ3JhbXMgc2hvdWxkbid0Ci0tICAgICBiZSB1c2luZyBzdHJlcnJvciBpZiB0aGV5IGNhcmUgYWJvdXQgdGhyZWFkLXNhZmV0eS4gICovCi0tICBpZiAoIW1zZyB8fCAhKm1zZykKLS0gICAgewotLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGZtdFtdID0gIlVua25vd24gZXJyb3IgJWQiOwotLSAgICAgIHZlcmlmeSAoc2l6ZW9mIGJ1ZiA+PSBzaXplb2YgKGZtdCkgKyBJTlRfU1RSTEVOX0JPVU5EIChuKSk7Ci0tICAgICAgc3ByaW50ZiAoYnVmLCBmbXQsIG4pOwotLSAgICAgIGVycm5vID0gRUlOVkFMOwotLSAgICAgIHJldHVybiBidWY7Ci0tICAgIH0KLSsgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHJlc3VsdFswXSA9PSAnXDAnKQotKyAgICAgIHsKLSsgICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGZtdFtdID0gIlVua25vd24gZXJyb3IgKCVkKSI7Ci0rICAgICAgICBzdGF0aWMgY2hhciBtc2dfYnVmW3NpemVvZiBmbXQgKyBJTlRfU1RSTEVOX0JPVU5EIChuKV07Ci0rICAgICAgICBzcHJpbnRmIChtc2dfYnVmLCBmbXQsIG4pOwotKyAgICAgICAgcmV0dXJuIG1zZ19idWY7Ci0rICAgICAgfQotIAotLSAgLyogRml4IFNUQUNLQlVGX0xFTiBpZiB0aGlzIGV2ZXIgYWJvcnRzLiAgKi8KLS0gIGxlbiA9IHN0cmxlbiAobXNnKTsKLS0gIGlmIChzaXplb2YgYnVmIDw9IGxlbikKLS0gICAgYWJvcnQgKCk7Ci0tCi0tICByZXR1cm4gbWVtY3B5IChidWYsIG1zZywgbGVuICsgMSk7Ci0rICAgIHJldHVybiByZXN1bHQ7Ci0rICB9Ci0gfQotKwotKyNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jIGxpYmljb252LTEuMTQvc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwyNzkgKzAsMCBAQAotLS8qIHN0cmVycm9yLW92ZXJyaWRlLmMgLS0tIFBPU0lYIGNvbXBhdGlibGUgc3lzdGVtIGVycm9yIHJvdXRpbmUKLS0KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tLyogV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMTAuICAqLwotLQotLSNpbmNsdWRlIDxjb25maWcuaD4KLS0KLS0jaW5jbHVkZSAic3RyZXJyb3Itb3ZlcnJpZGUuaCIKLS0KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVNPQ0sgLyogbmF0aXZlIFdpbmRvd3MgcGxhdGZvcm1zICovCi0tIyBpZiBIQVZFX1dJTlNPQ0syX0gKLS0jICBpbmNsdWRlIDx3aW5zb2NrMi5oPgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBJZiBFUlJOVU0gbWFwcyB0byBhbiBlcnJubyB2YWx1ZSBkZWZpbmVkIGJ5IGdudWxpYiwgcmV0dXJuIGEgc3RyaW5nCi0tICAgZGVzY3JpYmluZyB0aGUgZXJyb3IuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwotLWNvbnN0IGNoYXIgKgotLXN0cmVycm9yX292ZXJyaWRlIChpbnQgZXJybnVtKQotLXsKLS0gIC8qIFRoZXNlIGVycm9yIG1lc3NhZ2VzIGFyZSB0YWtlbiBmcm9tIGdsaWJjL3N5c2RlcHMvZ251L2Vycmxpc3QuYy4gICovCi0tICBzd2l0Y2ggKGVycm51bSkKLS0gICAgewotLSNpZiBSRVBMQUNFX1NUUkVSUk9SXzAKLS0gICAgY2FzZSAwOgotLSAgICAgIHJldHVybiAiU3VjY2VzcyI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VUWFRCU1kKLS0gICAgY2FzZSBFVFhUQlNZOgotLSAgICAgIHJldHVybiAiVGV4dCBmaWxlIGJ1c3kiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FU09DSyAvKiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMgKi8KLS0gICAgICAvKiBFV09VTERCTE9DSyBpcyB0aGUgc2FtZSBhcyBFQUdBSU4uICAqLwotLSAgICBjYXNlIEVJTlBST0dSRVNTOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIG5vdyBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgRUFMUkVBRFk6Ci0tICAgICAgcmV0dXJuICJPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgRU5PVFNPQ0s6Ci0tICAgICAgcmV0dXJuICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiOwotLSAgICBjYXNlIEVERVNUQUREUlJFUToKLS0gICAgICByZXR1cm4gIkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiOwotLSAgICBjYXNlIEVNU0dTSVpFOgotLSAgICAgIHJldHVybiAiTWVzc2FnZSB0b28gbG9uZyI7Ci0tICAgIGNhc2UgRVBST1RPVFlQRToKLS0gICAgICByZXR1cm4gIlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCI7Ci0tICAgIGNhc2UgRU5PUFJPVE9PUFQ6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCBub3QgYXZhaWxhYmxlIjsKLS0gICAgY2FzZSBFUFJPVE9OT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFU09DS1ROT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFT1BOT1RTVVBQOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiOwotLSAgICBjYXNlIEVQRk5PU1VQUE9SVDoKLS0gICAgICByZXR1cm4gIlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFQUZOT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIjsKLS0gICAgY2FzZSBFQUREUklOVVNFOgotLSAgICAgIHJldHVybiAiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSI7Ci0tICAgIGNhc2UgRUFERFJOT1RBVkFJTDoKLS0gICAgICByZXR1cm4gIkNhbm5vdCBhc3NpZ24gcmVxdWVzdGVkIGFkZHJlc3MiOwotLSAgICBjYXNlIEVORVRET1dOOgotLSAgICAgIHJldHVybiAiTmV0d29yayBpcyBkb3duIjsKLS0gICAgY2FzZSBFTkVUVU5SRUFDSDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgaXMgdW5yZWFjaGFibGUiOwotLSAgICBjYXNlIEVORVRSRVNFVDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgZHJvcHBlZCBjb25uZWN0aW9uIG9uIHJlc2V0IjsKLS0gICAgY2FzZSBFQ09OTkFCT1JURUQ6Ci0tICAgICAgcmV0dXJuICJTb2Z0d2FyZSBjYXVzZWQgY29ubmVjdGlvbiBhYm9ydCI7Ci0tICAgIGNhc2UgRUNPTk5SRVNFVDoKLS0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciI7Ci0tICAgIGNhc2UgRU5PQlVGUzoKLS0gICAgICByZXR1cm4gIk5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUiOwotLSAgICBjYXNlIEVJU0NPTk46Ci0tICAgICAgcmV0dXJuICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiOwotLSAgICBjYXNlIEVOT1RDT05OOgotLSAgICAgIHJldHVybiAiVHJhbnNwb3J0IGVuZHBvaW50IGlzIG5vdCBjb25uZWN0ZWQiOwotLSAgICBjYXNlIEVTSFVURE9XTjoKLS0gICAgICByZXR1cm4gIkNhbm5vdCBzZW5kIGFmdGVyIHRyYW5zcG9ydCBlbmRwb2ludCBzaHV0ZG93biI7Ci0tICAgIGNhc2UgRVRPT01BTllSRUZTOgotLSAgICAgIHJldHVybiAiVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSI7Ci0tICAgIGNhc2UgRVRJTUVET1VUOgotLSAgICAgIHJldHVybiAiQ29ubmVjdGlvbiB0aW1lZCBvdXQiOwotLSAgICBjYXNlIEVDT05OUkVGVVNFRDoKLS0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gcmVmdXNlZCI7Ci0tICAgIGNhc2UgRUxPT1A6Ci0tICAgICAgcmV0dXJuICJUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MiOwotLSAgICBjYXNlIEVIT1NURE9XTjoKLS0gICAgICByZXR1cm4gIkhvc3QgaXMgZG93biI7Ci0tICAgIGNhc2UgRUhPU1RVTlJFQUNIOgotLSAgICAgIHJldHVybiAiTm8gcm91dGUgdG8gaG9zdCI7Ci0tICAgIGNhc2UgRVBST0NMSU06Ci0tICAgICAgcmV0dXJuICJUb28gbWFueSBwcm9jZXNzZXMiOwotLSAgICBjYXNlIEVVU0VSUzoKLS0gICAgICByZXR1cm4gIlRvbyBtYW55IHVzZXJzIjsKLS0gICAgY2FzZSBFRFFVT1Q6Ci0tICAgICAgcmV0dXJuICJEaXNrIHF1b3RhIGV4Y2VlZGVkIjsKLS0gICAgY2FzZSBFU1RBTEU6Ci0tICAgICAgcmV0dXJuICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotLSAgICBjYXNlIEVSRU1PVEU6Ci0tICAgICAgcmV0dXJuICJPYmplY3QgaXMgcmVtb3RlIjsKLS0jIGlmIEhBVkVfV0lOU09DSzJfSAotLSAgICAgIC8qIFdTQV9JTlZBTElEX0hBTkRMRSBtYXBzIHRvIEVCQURGICovCi0tICAgICAgLyogV1NBX05PVF9FTk9VR0hfTUVNT1JZIG1hcHMgdG8gRU5PTUVNICovCi0tICAgICAgLyogV1NBX0lOVkFMSURfUEFSQU1FVEVSIG1hcHMgdG8gRUlOVkFMICovCi0tICAgIGNhc2UgV1NBX09QRVJBVElPTl9BQk9SVEVEOgotLSAgICAgIHJldHVybiAiT3ZlcmxhcHBlZCBvcGVyYXRpb24gYWJvcnRlZCI7Ci0tICAgIGNhc2UgV1NBX0lPX0lOQ09NUExFVEU6Ci0tICAgICAgcmV0dXJuICJPdmVybGFwcGVkIEkvTyBldmVudCBvYmplY3Qgbm90IGluIHNpZ25hbGVkIHN0YXRlIjsKLS0gICAgY2FzZSBXU0FfSU9fUEVORElORzoKLS0gICAgICByZXR1cm4gIk92ZXJsYXBwZWQgb3BlcmF0aW9ucyB3aWxsIGNvbXBsZXRlIGxhdGVyIjsKLS0gICAgICAvKiBXU0FFSU5UUiBtYXBzIHRvIEVJTlRSICovCi0tICAgICAgLyogV1NBRUJBREYgbWFwcyB0byBFQkFERiAqLwotLSAgICAgIC8qIFdTQUVBQ0NFUyBtYXBzIHRvIEVBQ0NFUyAqLwotLSAgICAgIC8qIFdTQUVGQVVMVCBtYXBzIHRvIEVGQVVMVCAqLwotLSAgICAgIC8qIFdTQUVJTlZBTCBtYXBzIHRvIEVJTlZBTCAqLwotLSAgICAgIC8qIFdTQUVNRklMRSBtYXBzIHRvIEVNRklMRSAqLwotLSAgICAgIC8qIFdTQUVXT1VMREJMT0NLIG1hcHMgdG8gRVdPVUxEQkxPQ0sgKi8KLS0gICAgICAvKiBXU0FFSU5QUk9HUkVTUyBpcyBFSU5QUk9HUkVTUyAqLwotLSAgICAgIC8qIFdTQUVBTFJFQURZIGlzIEVBTFJFQURZICovCi0tICAgICAgLyogV1NBRU5PVFNPQ0sgaXMgRU5PVFNPQ0sgKi8KLS0gICAgICAvKiBXU0FFREVTVEFERFJSRVEgaXMgRURFU1RBRERSUkVRICovCi0tICAgICAgLyogV1NBRU1TR1NJWkUgaXMgRU1TR1NJWkUgKi8KLS0gICAgICAvKiBXU0FFUFJPVE9UWVBFIGlzIEVQUk9UT1RZUEUgKi8KLS0gICAgICAvKiBXU0FFTk9QUk9UT09QVCBpcyBFTk9QUk9UT09QVCAqLwotLSAgICAgIC8qIFdTQUVQUk9UT05PU1VQUE9SVCBpcyBFUFJPVE9OT1NVUFBPUlQgKi8KLS0gICAgICAvKiBXU0FFU09DS1ROT1NVUFBPUlQgaXMgRVNPQ0tUTk9TVVBQT1JUICovCi0tICAgICAgLyogV1NBRU9QTk9UU1VQUCBpcyBFT1BOT1RTVVBQICovCi0tICAgICAgLyogV1NBRVBGTk9TVVBQT1JUIGlzIEVQRk5PU1VQUE9SVCAqLwotLSAgICAgIC8qIFdTQUVBRk5PU1VQUE9SVCBpcyBFQUZOT1NVUFBPUlQgKi8KLS0gICAgICAvKiBXU0FFQUREUklOVVNFIGlzIEVBRERSSU5VU0UgKi8KLS0gICAgICAvKiBXU0FFQUREUk5PVEFWQUlMIGlzIEVBRERSTk9UQVZBSUwgKi8KLS0gICAgICAvKiBXU0FFTkVURE9XTiBpcyBFTkVURE9XTiAqLwotLSAgICAgIC8qIFdTQUVORVRVTlJFQUNIIGlzIEVORVRVTlJFQUNIICovCi0tICAgICAgLyogV1NBRU5FVFJFU0VUIGlzIEVORVRSRVNFVCAqLwotLSAgICAgIC8qIFdTQUVDT05OQUJPUlRFRCBpcyBFQ09OTkFCT1JURUQgKi8KLS0gICAgICAvKiBXU0FFQ09OTlJFU0VUIGlzIEVDT05OUkVTRVQgKi8KLS0gICAgICAvKiBXU0FFTk9CVUZTIGlzIEVOT0JVRlMgKi8KLS0gICAgICAvKiBXU0FFSVNDT05OIGlzIEVJU0NPTk4gKi8KLS0gICAgICAvKiBXU0FFTk9UQ09OTiBpcyBFTk9UQ09OTiAqLwotLSAgICAgIC8qIFdTQUVTSFVURE9XTiBpcyBFU0hVVERPV04gKi8KLS0gICAgICAvKiBXU0FFVE9PTUFOWVJFRlMgaXMgRVRPT01BTllSRUZTICovCi0tICAgICAgLyogV1NBRVRJTUVET1VUIGlzIEVUSU1FRE9VVCAqLwotLSAgICAgIC8qIFdTQUVDT05OUkVGVVNFRCBpcyBFQ09OTlJFRlVTRUQgKi8KLS0gICAgICAvKiBXU0FFTE9PUCBpcyBFTE9PUCAqLwotLSAgICAgIC8qIFdTQUVOQU1FVE9PTE9ORyBtYXBzIHRvIEVOQU1FVE9PTE9ORyAqLwotLSAgICAgIC8qIFdTQUVIT1NURE9XTiBpcyBFSE9TVERPV04gKi8KLS0gICAgICAvKiBXU0FFSE9TVFVOUkVBQ0ggaXMgRUhPU1RVTlJFQUNIICovCi0tICAgICAgLyogV1NBRU5PVEVNUFRZIG1hcHMgdG8gRU5PVEVNUFRZICovCi0tICAgICAgLyogV1NBRVBST0NMSU0gaXMgRVBST0NMSU0gKi8KLS0gICAgICAvKiBXU0FFVVNFUlMgaXMgRVVTRVJTICovCi0tICAgICAgLyogV1NBRURRVU9UIGlzIEVEUVVPVCAqLwotLSAgICAgIC8qIFdTQUVTVEFMRSBpcyBFU1RBTEUgKi8KLS0gICAgICAvKiBXU0FFUkVNT1RFIGlzIEVSRU1PVEUgKi8KLS0gICAgY2FzZSBXU0FTWVNOT1RSRUFEWToKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgc3Vic3lzdGVtIGlzIHVuYXZhaWxhYmxlIjsKLS0gICAgY2FzZSBXU0FWRVJOT1RTVVBQT1JURUQ6Ci0tICAgICAgcmV0dXJuICJXaW5zb2NrLmRsbCB2ZXJzaW9uIG91dCBvZiByYW5nZSI7Ci0tICAgIGNhc2UgV1NBTk9USU5JVElBTElTRUQ6Ci0tICAgICAgcmV0dXJuICJTdWNjZXNzZnVsIFdTQVN0YXJ0dXAgbm90IHlldCBwZXJmb3JtZWQiOwotLSAgICBjYXNlIFdTQUVESVNDT046Ci0tICAgICAgcmV0dXJuICJHcmFjZWZ1bCBzaHV0ZG93biBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgV1NBRU5PTU9SRTogY2FzZSBXU0FfRV9OT19NT1JFOgotLSAgICAgIHJldHVybiAiTm8gbW9yZSByZXN1bHRzIjsKLS0gICAgY2FzZSBXU0FFQ0FOQ0VMTEVEOiBjYXNlIFdTQV9FX0NBTkNFTExFRDoKLS0gICAgICByZXR1cm4gIkNhbGwgd2FzIGNhbmNlbGVkIjsKLS0gICAgY2FzZSBXU0FFSU5WQUxJRFBST0NUQUJMRToKLS0gICAgICByZXR1cm4gIlByb2NlZHVyZSBjYWxsIHRhYmxlIGlzIGludmFsaWQiOwotLSAgICBjYXNlIFdTQUVJTlZBTElEUFJPVklERVI6Ci0tICAgICAgcmV0dXJuICJTZXJ2aWNlIHByb3ZpZGVyIGlzIGludmFsaWQiOwotLSAgICBjYXNlIFdTQUVQUk9WSURFUkZBSUxFRElOSVQ6Ci0tICAgICAgcmV0dXJuICJTZXJ2aWNlIHByb3ZpZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIjsKLS0gICAgY2FzZSBXU0FTWVNDQUxMRkFJTFVSRToKLS0gICAgICByZXR1cm4gIlN5c3RlbSBjYWxsIGZhaWx1cmUiOwotLSAgICBjYXNlIFdTQVNFUlZJQ0VfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiU2VydmljZSBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQVRZUEVfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiQ2xhc3MgdHlwZSBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQUVSRUZVU0VEOgotLSAgICAgIHJldHVybiAiRGF0YWJhc2UgcXVlcnkgd2FzIHJlZnVzZWQiOwotLSAgICBjYXNlIFdTQUhPU1RfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiSG9zdCBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQVRSWV9BR0FJTjoKLS0gICAgICByZXR1cm4gIk5vbmF1dGhvcml0YXRpdmUgaG9zdCBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQU5PX1JFQ09WRVJZOgotLSAgICAgIHJldHVybiAiTm9ucmVjb3ZlcmFibGUgZXJyb3IiOwotLSAgICBjYXNlIFdTQU5PX0RBVEE6Ci0tICAgICAgcmV0dXJuICJWYWxpZCBuYW1lLCBubyBkYXRhIHJlY29yZCBvZiByZXF1ZXN0ZWQgdHlwZSI7Ci0tICAgICAgLyogV1NBX1FPU18qIG9taXR0ZWQgKi8KLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT01TRwotLSAgICBjYXNlIEVOT01TRzoKLS0gICAgICByZXR1cm4gIk5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUlEUk0KLS0gICAgY2FzZSBFSURSTToKLS0gICAgICByZXR1cm4gIklkZW50aWZpZXIgcmVtb3ZlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT0xJTksKLS0gICAgY2FzZSBFTk9MSU5LOgotLSAgICAgIHJldHVybiAiTGluayBoYXMgYmVlbiBzZXZlcmVkIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVBST1RPCi0tICAgIGNhc2UgRVBST1RPOgotLSAgICAgIHJldHVybiAiUHJvdG9jb2wgZXJyb3IiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTVVMVElIT1AKLS0gICAgY2FzZSBFTVVMVElIT1A6Ci0tICAgICAgcmV0dXJuICJNdWx0aWhvcCBhdHRlbXB0ZWQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FQkFETVNHCi0tICAgIGNhc2UgRUJBRE1TRzoKLS0gICAgICByZXR1cm4gIkJhZCBtZXNzYWdlIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRU9WRVJGTE9XCi0tICAgIGNhc2UgRU9WRVJGTE9XOgotLSAgICAgIHJldHVybiAiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT1RTVVAKLS0gICAgY2FzZSBFTk9UU1VQOgotLSAgICAgIHJldHVybiAiTm90IHN1cHBvcnRlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VORVRSRVNFVAotLSAgICBjYXNlIEVORVRSRVNFVDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgZHJvcHBlZCBjb25uZWN0aW9uIG9uIHJlc2V0IjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUNPTk5BQk9SVEVECi0tICAgIGNhc2UgRUNPTk5BQk9SVEVEOgotLSAgICAgIHJldHVybiAiU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FU1RBTEUKLS0gICAgY2FzZSBFU1RBTEU6Ci0tICAgICAgcmV0dXJuICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FRFFVT1QKLS0gICAgY2FzZSBFRFFVT1Q6Ci0tICAgICAgcmV0dXJuICJEaXNrIHF1b3RhIGV4Y2VlZGVkIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUNBTkNFTEVECi0tICAgIGNhc2UgRUNBTkNFTEVEOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIGNhbmNlbGVkIjsKLS0jZW5kaWYKLS0KLS0gICAgZGVmYXVsdDoKLS0gICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotLX0KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsNTIgKzAsMCBAQAotLS8qIHN0cmVycm9yLW92ZXJyaWRlLmggLS0tIFBPU0lYIGNvbXBhdGlibGUgc3lzdGVtIGVycm9yIHJvdXRpbmUKLS0KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tI2lmbmRlZiBfR0xfU1RSRVJST1JfT1ZFUlJJREVfSAotLSMgZGVmaW5lIF9HTF9TVFJFUlJPUl9PVkVSUklERV9ICi0tCi0tIyBpbmNsdWRlIDxlcnJuby5oPgotLSMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0tCi0tLyogUmVhc29uYWJsZSBidWZmZXIgc2l6ZSB0aGF0IHNob3VsZCBuZXZlciB0cmlnZ2VyIEVSQU5HRTsgaWYgdGhpcwotLSAgIHByb3ZlcyB0b28gc21hbGwsIHdlIGludGVudGlvbmFsbHkgYWJvcnQoKSwgdG8gcmVtaW5kIHVzIHRvIGZpeAotLSAgIHRoaXMgdmFsdWUuICAqLwotLSMgZGVmaW5lIFNUQUNLQlVGX0xFTiAyNTYKLS0KLS0vKiBJZiBFUlJOVU0gbWFwcyB0byBhbiBlcnJubyB2YWx1ZSBkZWZpbmVkIGJ5IGdudWxpYiwgcmV0dXJuIGEgc3RyaW5nCi0tICAgZGVzY3JpYmluZyB0aGUgZXJyb3IuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwotLSMgaWYgUkVQTEFDRV9TVFJFUlJPUl8wIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VUWFRCU1kgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVNPQ0sgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRU5PTVNHIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VJRFJNIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VOT0xJTksgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVBST1RPIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VNVUxUSUhPUCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQkFETVNHIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VPVkVSRkxPVyBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VORVRSRVNFVCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQ09OTkFCT1JURUQgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVNUQUxFIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VEUVVPVCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQ0FOQ0VMRUQKLS1leHRlcm4gY29uc3QgY2hhciAqc3RyZXJyb3Jfb3ZlcnJpZGUgKGludCBlcnJudW0pOwotLSMgZWxzZQotLSMgIGRlZmluZSBzdHJlcnJvcl9vdmVycmlkZShpZ25vcmVkKSBOVUxMCi0tIyBlbmRpZgotLQotLSNlbmRpZiAvKiBfR0xfU1RSRVJST1JfT1ZFUlJJREVfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJpbmcuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJpbmcuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyaW5nLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJpbmcuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQxODQ4NDQ2MSAtMDgwMAotQEAgLTE2LDcgKzE2LDcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TVFJJTkdfSAotKyNpZm5kZWYgX0dMX1NUUklOR19ICi0gCi0gI2lmIF9fR05VQ19fID49IDMKLSBAUFJBR01BX1NZU1RFTV9IRUFERVJACi1AQCAtMjYsOCArMjYsOCBAQAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RSSU5HX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVFJJTkdfSAotKyNpZm5kZWYgX0dMX1NUUklOR19ICi0rI2RlZmluZSBfR0xfU1RSSU5HX0gKLSAKLSAvKiBOZXRCU0QgNS4wIG1pcy1kZWZpbmVzIE5VTEwuICAqLwotICNpbmNsdWRlIDxzdGRkZWYuaD4KLUBAIC01OSwzNiArNTksNiBAQAotIC8qIFRoZSBkZWZpbml0aW9uIG9mIF9HTF9XQVJOX09OX1VTRSBpcyBjb3BpZWQgaGVyZS4gICovCi0gCi0gCi0tLyogRmluZCB0aGUgaW5kZXggb2YgdGhlIGxlYXN0LXNpZ25pZmljYW50IHNldCBiaXQuICAqLwotLSNpZiBAR05VTElCX0ZGU0xACi0tIyBpZiAhQEhBVkVfRkZTTEAKLS1fR0xfRlVOQ0RFQ0xfU1lTIChmZnNsLCBpbnQsIChsb25nIGludCBpKSk7Ci0tIyBlbmRpZgotLV9HTF9DWFhBTElBU19TWVMgKGZmc2wsIGludCwgKGxvbmcgaW50IGkpKTsKLS1fR0xfQ1hYQUxJQVNXQVJOIChmZnNsKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBmZnNsCi0tIyBpZiBIQVZFX1JBV19ERUNMX0ZGU0wKLS1fR0xfV0FSTl9PTl9VU0UgKGZmc2wsICJmZnNsIGlzIG5vdCBwb3J0YWJsZSAtIHVzZSB0aGUgZmZzbCBtb2R1bGUiKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0tLyogRmluZCB0aGUgaW5kZXggb2YgdGhlIGxlYXN0LXNpZ25pZmljYW50IHNldCBiaXQuICAqLwotLSNpZiBAR05VTElCX0ZGU0xMQAotLSMgaWYgIUBIQVZFX0ZGU0xMQAotLV9HTF9GVU5DREVDTF9TWVMgKGZmc2xsLCBpbnQsIChsb25nIGxvbmcgaW50IGkpKTsKLS0jIGVuZGlmCi0tX0dMX0NYWEFMSUFTX1NZUyAoZmZzbGwsIGludCwgKGxvbmcgbG9uZyBpbnQgaSkpOwotLV9HTF9DWFhBTElBU1dBUk4gKGZmc2xsKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBmZnNsbAotLSMgaWYgSEFWRV9SQVdfREVDTF9GRlNMTAotLV9HTF9XQVJOX09OX1VTRSAoZmZzbGwsICJmZnNsbCBpcyBub3QgcG9ydGFibGUgLSB1c2UgdGhlIGZmc2xsIG1vZHVsZSIpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0KLSAvKiBSZXR1cm4gdGhlIGZpcnN0IGluc3RhbmNlIG9mIEMgd2l0aGluIE4gYnl0ZXMgb2YgUywgb3IgTlVMTC4gICovCi0gI2lmIEBHTlVMSUJfTUVNQ0hSQAotICMgaWYgQFJFUExBQ0VfTUVNQ0hSQAotQEAgLTEwMDcsNSArOTc3LDUgQEAgX0dMX1dBUk5fT05fVVNFIChzdHJ2ZXJzY21wLCAic3RydmVyc2NtcAotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NUUklOR19IICovCi0rI2VuZGlmIC8qIF9HTF9TVFJJTkdfSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RSSU5HX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3lzX3N0YXQuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zeXNfc3RhdC5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zeXNfc3RhdC5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3lzX3N0YXQuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQzMDQ4NDQ2MSAtMDgwMAotQEAgLTM0LDcgKzM0LDcgQEAKLSAjZWxzZQotIC8qIE5vcm1hbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24uICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0gKLSsjaWZuZGVmIF9HTF9TWVNfU1RBVF9ICi0gCi0gLyogR2V0IG5saW5rX3QuICAqLwotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC00NSw4ICs0NSw4IEBACi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNASU5DTFVERV9ORVhUQCBATkVYVF9TWVNfU1RBVF9IQAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9ICi0rI2lmbmRlZiBfR0xfU1lTX1NUQVRfSAotKyNkZWZpbmUgX0dMX1NZU19TVEFUX0gKLSAKLSAvKiBUaGUgZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTCBldGMuIGFyZSBjb3BpZWQgaGVyZS4gICovCi0gCi1AQCAtNjUzLDYgKzY1Myw2IEBAIF9HTF9XQVJOX09OX1VTRSAodXRpbWVuc2F0LCAidXRpbWVuc2F0IGkKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NZU19TVEFUX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NZU19TVEFUX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdGltZS5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3RpbWUuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdGltZS5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvdGltZS5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuNDM4NDg0NDYyIC0wODAwCi1AQCAtMjgsMTMgKzI4LDEzIEBACi0gICAgd2l0aG91dCBhZGRpbmcgb3VyIG93biBkZWNsYXJhdGlvbnMuICAqLwotICNpZiAoZGVmaW5lZCBfX25lZWRfdGltZV90IHx8IGRlZmluZWQgX19uZWVkX2Nsb2NrX3QgXAotICAgICAgfHwgZGVmaW5lZCBfX25lZWRfdGltZXNwZWMgXAotLSAgICAgfHwgZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVElNRV9IKQotKyAgICAgfHwgZGVmaW5lZCBfR0xfVElNRV9IKQotIAotICMgQElOQ0xVREVfTkVYVEAgQE5FWFRfVElNRV9IQAotIAotICNlbHNlCi0gCi0tIyBkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1RJTUVfSAotKyMgZGVmaW5lIF9HTF9USU1FX0gKLSAKLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1RJTUVfSEAKLSAKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdW5pc3RkLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvdW5pc3RkLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3VuaXN0ZC5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvdW5pc3RkLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC40NTA0ODQ0NjIgLTA4MDAKLUBAIC0zNiw3ICszNiw3IEBACi0gIyBkZWZpbmUgX0dMX1dJTlNPQ0syX0hfV0lUTkVTUwotIAotIC8qIE5vcm1hbCBpbnZvY2F0aW9uLiAgKi8KLS0jZWxpZiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0gKLSsjZWxpZiAhZGVmaW5lZCBfR0xfVU5JU1REX0gKLSAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI2lmIEBIQVZFX1VOSVNURF9IQAotQEAgLTUxLDggKzUxLDggQEAKLSAjIHVuZGVmIF9HTF9JTkNMVURJTkdfV0lOU09DSzJfSAotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0ggJiYgIWRlZmluZWQgX0dMX0lOQ0xVRElOR19XSU5TT0NLMl9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0gKLSsjaWYgIWRlZmluZWQgX0dMX1VOSVNURF9IICYmICFkZWZpbmVkIF9HTF9JTkNMVURJTkdfV0lOU09DSzJfSAotKyNkZWZpbmUgX0dMX1VOSVNURF9ICi0gCi0gLyogTmV0QlNEIDUuMCBtaXMtZGVmaW5lcyBOVUxMLiAgQWxzbyBnZXQgc2l6ZV90LiAgKi8KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtMTE3LDc3ICsxMTcsNzggQEAKLSAvKiBUaGUgZGVmaW5pdGlvbiBvZiBfR0xfV0FSTl9PTl9VU0UgaXMgY29waWVkIGhlcmUuICAqLwotIAotIAotLS8qIEhpZGUgc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSA8d2luc29jazIuaD4uICAqLwotLQotLSNpZiBAR05VTElCX0dFVEhPU1ROQU1FQCAmJiBAVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9IQAotLSMgaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NZU19TT0NLRVRfSAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHNvY2tldAotLSMgICBkZWZpbmUgc29ja2V0ICAgICAgICAgICAgICBzb2NrZXRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgY29ubmVjdAotLSMgICBkZWZpbmUgY29ubmVjdCAgICAgICAgICAgICBjb25uZWN0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGFjY2VwdAotLSMgICBkZWZpbmUgYWNjZXB0ICAgICAgICAgICAgICBhY2NlcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgYmluZAotLSMgICBkZWZpbmUgYmluZCAgICAgICAgICAgICAgICBiaW5kX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHBlZXJuYW1lCi0tIyAgIGRlZmluZSBnZXRwZWVybmFtZSAgICAgICAgIGdldHBlZXJuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHNvY2tuYW1lCi0tIyAgIGRlZmluZSBnZXRzb2NrbmFtZSAgICAgICAgIGdldHNvY2tuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHNvY2tvcHQKLS0jICAgZGVmaW5lIGdldHNvY2tvcHQgICAgICAgICAgZ2V0c29ja29wdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBsaXN0ZW4KLS0jICAgZGVmaW5lIGxpc3RlbiAgICAgICAgICAgICAgbGlzdGVuX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIHJlY3YKLS0jICAgZGVmaW5lIHJlY3YgICAgICAgICAgICAgICAgcmVjdl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBzZW5kCi0tIyAgIGRlZmluZSBzZW5kICAgICAgICAgICAgICAgIHNlbmRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgcmVjdmZyb20KLS0jICAgZGVmaW5lIHJlY3Zmcm9tICAgICAgICAgICAgcmVjdmZyb21fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2VuZHRvCi0tIyAgIGRlZmluZSBzZW5kdG8gICAgICAgICAgICAgIHNlbmR0b191c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBzZXRzb2Nrb3B0Ci0tIyAgIGRlZmluZSBzZXRzb2Nrb3B0ICAgICAgICAgIHNldHNvY2tvcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2h1dGRvd24KLS0jICAgZGVmaW5lIHNodXRkb3duICAgICAgICAgICAgc2h1dGRvd25fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICBlbHNlCi0tICAgIF9HTF9XQVJOX09OX1VTRSAoc29ja2V0LAotLSAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoY29ubmVjdCwKLS0gICAgICAgICAgICAgICAgICAgICAiY29ubmVjdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChhY2NlcHQsCi0tICAgICAgICAgICAgICAgICAgICAgImFjY2VwdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChiaW5kLAotLSAgICAgICAgICAgICAgICAgICAgICJiaW5kKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHBlZXJuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICJnZXRwZWVybmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChnZXRzb2NrbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja25hbWUoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja29wdCwKLS0gICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja29wdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChsaXN0ZW4sCi0tICAgICAgICAgICAgICAgICAgICAgImxpc3RlbigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChyZWN2LAotLSAgICAgICAgICAgICAgICAgICAgICJyZWN2KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmQsCi0tICAgICAgICAgICAgICAgICAgICAgInNlbmQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdmZyb20sCi0tICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmR0bywKLS0gICAgICAgICAgICAgICAgICAgICAic2VuZHRvKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNldHNvY2tvcHQsCi0tICAgICAgICAgICAgICAgICAgICAgInNldHNvY2tvcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoc2h1dGRvd24sCi0tICAgICAgICAgICAgICAgICAgICAgInNodXRkb3duKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyNpZiBAR05VTElCX0dFVEhPU1ROQU1FQAotKy8qIEdldCBhbGwgcG9zc2libGUgZGVjbGFyYXRpb25zIG9mIGdldGhvc3RuYW1lKCkuICAqLwotKyMgaWYgQFVOSVNURF9IX0hBVkVfV0lOU09DSzJfSEAKLSsjICBpZiAhZGVmaW5lZCBfR0xfU1lTX1NPQ0tFVF9ICi0rIyAgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0rIyAgICB1bmRlZiBzb2NrZXQKLSsjICAgIGRlZmluZSBzb2NrZXQgICAgICAgICAgICAgIHNvY2tldF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgY29ubmVjdAotKyMgICAgZGVmaW5lIGNvbm5lY3QgICAgICAgICAgICAgY29ubmVjdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgYWNjZXB0Ci0rIyAgICBkZWZpbmUgYWNjZXB0ICAgICAgICAgICAgICBhY2NlcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGJpbmQKLSsjICAgIGRlZmluZSBiaW5kICAgICAgICAgICAgICAgIGJpbmRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGdldHBlZXJuYW1lCi0rIyAgICBkZWZpbmUgZ2V0cGVlcm5hbWUgICAgICAgICBnZXRwZWVybmFtZV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgZ2V0c29ja25hbWUKLSsjICAgIGRlZmluZSBnZXRzb2NrbmFtZSAgICAgICAgIGdldHNvY2tuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBnZXRzb2Nrb3B0Ci0rIyAgICBkZWZpbmUgZ2V0c29ja29wdCAgICAgICAgICBnZXRzb2Nrb3B0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBsaXN0ZW4KLSsjICAgIGRlZmluZSBsaXN0ZW4gICAgICAgICAgICAgIGxpc3Rlbl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgcmVjdgotKyMgICAgZGVmaW5lIHJlY3YgICAgICAgICAgICAgICAgcmVjdl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2VuZAotKyMgICAgZGVmaW5lIHNlbmQgICAgICAgICAgICAgICAgc2VuZF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgcmVjdmZyb20KLSsjICAgIGRlZmluZSByZWN2ZnJvbSAgICAgICAgICAgIHJlY3Zmcm9tX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBzZW5kdG8KLSsjICAgIGRlZmluZSBzZW5kdG8gICAgICAgICAgICAgIHNlbmR0b191c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2V0c29ja29wdAotKyMgICAgZGVmaW5lIHNldHNvY2tvcHQgICAgICAgICAgc2V0c29ja29wdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2h1dGRvd24KLSsjICAgIGRlZmluZSBzaHV0ZG93biAgICAgICAgICAgIHNodXRkb3duX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgIGVsc2UKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoc29ja2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAic29ja2V0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChjb25uZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoYWNjZXB0LAotKyAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChiaW5kLAotKyAgICAgICAgICAgICAgICAgICAgICAiYmluZCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0cGVlcm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZXRwZWVybmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrbmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja29wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGxpc3RlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgImxpc3RlbigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdiwKLSsgICAgICAgICAgICAgICAgICAgICAgInJlY3YoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmQsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZW5kKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChyZWN2ZnJvbSwKLSsgICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZW5kdG8sCi0rICAgICAgICAgICAgICAgICAgICAgICJzZW5kdG8oKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHNldHNvY2tvcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZXRzb2Nrb3B0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzaHV0ZG93biwKLSsgICAgICAgICAgICAgICAgICAgICAgInNodXRkb3duKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyMgICBlbmRpZgotICMgIGVuZGlmCi0tIyBlbmRpZgotLSMgaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NZU19TRUxFQ1RfSAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHNlbGVjdAotLSMgICBkZWZpbmUgc2VsZWN0ICAgICAgICAgICAgICBzZWxlY3RfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc2VsZWN0X2gKLS0jICBlbHNlCi0tICAgIF9HTF9XQVJOX09OX1VTRSAoc2VsZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICJzZWxlY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc2VsZWN0Lmg+Iik7Ci0rIyAgaWYgIWRlZmluZWQgX0dMX1NZU19TRUxFQ1RfSAotKyMgICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotKyMgICAgdW5kZWYgc2VsZWN0Ci0rIyAgICBkZWZpbmUgc2VsZWN0ICAgICAgICAgICAgICBzZWxlY3RfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc2VsZWN0X2gKLSsjICAgZWxzZQotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZWxlY3QsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZWxlY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc2VsZWN0Lmg+Iik7Ci0rIyAgIGVuZGlmCi0gIyAgZW5kaWYKLSAjIGVuZGlmCi0gI2VuZGlmCi1AQCAtMTA2MSw3ICsxMDYyLDYgQEAgX0dMX1dBUk5fT05fVVNFIChwaXBlMiwgInBpcGUyIGlzIHVucG9ydAotICAgIHNwZWNpZmljYXRpb24gPGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9zdXN2M3hzaC9wcmVhZC5odG1sPi4gICovCi0gIyBpZiBAUkVQTEFDRV9QUkVBREAKLSAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBwcmVhZAotICMgICBkZWZpbmUgcHJlYWQgcnBsX3ByZWFkCi0gIyAgZW5kaWYKLSBfR0xfRlVOQ0RFQ0xfUlBMIChwcmVhZCwgc3NpemVfdCwKLUBAIC0xMDk2LDcgKzEwOTYsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKHByZWFkLCAicHJlYWQgaXMgdW5wb3J0Ci0gICAgPGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9zdXN2M3hzaC9wd3JpdGUuaHRtbD4uICAqLwotICMgaWYgQFJFUExBQ0VfUFdSSVRFQAotICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHB3cml0ZQotICMgICBkZWZpbmUgcHdyaXRlIHJwbF9wd3JpdGUKLSAjICBlbmRpZgotIF9HTF9GVU5DREVDTF9SUEwgKHB3cml0ZSwgc3NpemVfdCwKLUBAIC0xNDE3LDUgKzE0MTYsNSBAQCBfR0xfQ1hYQUxJQVNXQVJOICh3cml0ZSk7Ci0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9VTklTVERfSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0ggKi8KLSsjZW5kaWYgLyogX0dMX1VOSVNURF9IICovCi0rI2VuZGlmIC8qIF9HTF9VTklTVERfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi92ZXJpZnkuaCBsaWJpY29udi0xLjE0L3NyY2xpYi92ZXJpZnkuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdmVyaWZ5LmgJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi92ZXJpZnkuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQ5NDQ4NDQ2NCAtMDgwMAotQEAgLTE2NCwxMyArMTY0LDEwIEBACi0gICAgICghIXNpemVvZiAoX0dMX1ZFUklGWV9UWVBFIChSLCBESUFHTk9TVElDKSkpCi0gCi0gIyBpZmRlZiBfX2NwbHVzcGx1cwotLSMgIGlmICFHTlVMSUJfZGVmaW5lZF9zdHJ1Y3RfX2dsX3ZlcmlmeV90eXBlCi0gdGVtcGxhdGUgPGludCB3PgotICAgc3RydWN0IF9nbF92ZXJpZnlfdHlwZSB7Ci0gICAgIHVuc2lnbmVkIGludCBfZ2xfdmVyaWZ5X2Vycm9yX2lmX25lZ2F0aXZlOiB3OwotICAgfTsKLS0jICAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX3N0cnVjdF9fZ2xfdmVyaWZ5X3R5cGUgMQotLSMgIGVuZGlmCi0gIyAgZGVmaW5lIF9HTF9WRVJJRllfVFlQRShSLCBESUFHTk9TVElDKSBcCi0gICAgIF9nbF92ZXJpZnlfdHlwZTwoUikgPyAxIDogLTE+Ci0gIyBlbGlmIGRlZmluZWQgX0dMX0hBVkVfX1NUQVRJQ19BU1NFUlQKLUBAIC0yMDksNyArMjA2LDcgQEAgdGVtcGxhdGUgPGludCB3PgotICMgIGVuZGlmCi0gIyBlbmRpZgotIAotLS8qIEBhc3NlcnQuaCBvbWl0IHN0YXJ0QCAgKi8KLSsjIGlmZGVmIF9HTF9WRVJJRllfSAotIAotIC8qIEVhY2ggb2YgdGhlc2UgbWFjcm9zIHZlcmlmaWVzIHRoYXQgaXRzIGFyZ3VtZW50IFIgaXMgbm9uemVyby4gIFRvCi0gICAgYmUgcG9ydGFibGUsIFIgc2hvdWxkIGJlIGFuIGludGVnZXIgY29uc3RhbnQgZXhwcmVzc2lvbi4gIFVubGlrZQotQEAgLTIyMSwyMyArMjE4LDE1IEBAIHRlbXBsYXRlIDxpbnQgdz4KLSAgICBjb250ZXh0cywgZS5nLiwgdGhlIHRvcCBsZXZlbC4gICovCi0gCi0gLyogVmVyaWZ5IHJlcXVpcmVtZW50IFIgYXQgY29tcGlsZS10aW1lLCBhcyBhbiBpbnRlZ2VyIGNvbnN0YW50IGV4cHJlc3Npb24uCi0tICAgUmV0dXJuIDEuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdmVyaWZ5X2V4cHIgKFIsIDEpLgotLQotLSAgIHZlcmlmeV90cnVlIGlzIG9ic29sZXNjZW50OyBwbGVhc2UgdXNlIHZlcmlmeV9leHByIGluc3RlYWQuICAqLwotLQotLSMgZGVmaW5lIHZlcmlmeV90cnVlKFIpIF9HTF9WRVJJRllfVFJVRSAoUiwgInZlcmlmeV90cnVlICgiICNSICIpIikKLSsgICBSZXR1cm4gMS4gICovCi0gCi0tLyogVmVyaWZ5IHJlcXVpcmVtZW50IFIgYXQgY29tcGlsZS10aW1lLiAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKLS0gICBleHByZXNzaW9uIEUuICAqLwotLQotLSMgZGVmaW5lIHZlcmlmeV9leHByKFIsIEUpIFwKLS0gICAgKF9HTF9WRVJJRllfVFJVRSAoUiwgInZlcmlmeV9leHByICgiICNSICIsICIgI0UgIikiKSA/IChFKSA6IChFKSkKLSsjICBkZWZpbmUgdmVyaWZ5X3RydWUoUikgX0dMX1ZFUklGWV9UUlVFIChSLCAidmVyaWZ5X3RydWUgKCIgI1IgIikiKQotIAotIC8qIFZlcmlmeSByZXF1aXJlbWVudCBSIGF0IGNvbXBpbGUtdGltZSwgYXMgYSBkZWNsYXJhdGlvbiB3aXRob3V0IGEKLSAgICB0cmFpbGluZyAnOycuICAqLwotIAotLSMgZGVmaW5lIHZlcmlmeShSKSBfR0xfVkVSSUZZIChSLCAidmVyaWZ5ICgiICNSICIpIikKLSsjICBkZWZpbmUgdmVyaWZ5KFIpIF9HTF9WRVJJRlkgKFIsICJ2ZXJpZnkgKCIgI1IgIikiKQotIAotLS8qIEBhc3NlcnQuaCBvbWl0IGVuZEAgICovCi0rIyBlbmRpZgotIAotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Nhbm9uaWNhbGl6ZS5tNCBsaWJpY29udi0xLjE0L3NyY200L2Nhbm9uaWNhbGl6ZS5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9jYW5vbmljYWxpemUubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2Nhbm9uaWNhbGl6ZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjU2NjQ4NDQ2OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBjYW5vbmljYWxpemUubTQgc2VyaWFsIDIzCi0rIyBjYW5vbmljYWxpemUubTQgc2VyaWFsIDIxCi0gCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMy0yMDA3LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi1AQCAtMTAsNiArMTAsOCBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gIyBub3QgcHJvdmlkZSBvciBmaXggcmVhbHBhdGguCi0gQUNfREVGVU4oW2dsX0ZVTkNfQ0FOT05JQ0FMSVpFX0ZJTEVOQU1FX01PREVdLAotIFsKLSsgIEFDX0xJQk9CSihbY2Fub25pY2FsaXplXSkKLSsKLSAgIEFDX1JFUVVJUkUoW2dsX1VTRV9TWVNURU1fRVhURU5TSU9OU10pCi0gICBBQ19DSEVDS19GVU5DU19PTkNFKFtjYW5vbmljYWxpemVfZmlsZV9uYW1lXSkKLSAgIEFDX1JFUVVJUkUoW2dsX0RPVUJMRV9TTEFTSF9ST09UXSkKLUBAIC0yOCwxNCArMzAsMTYgQEAgQUNfREVGVU4oW2dsX0NBTk9OSUNBTElaRV9MR1BMXSwKLSAgIEFDX1JFUVVJUkUoW2dsX0NBTk9OSUNBTElaRV9MR1BMX1NFUEFSQVRFXSkKLSAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfY2Fub25pY2FsaXplX2ZpbGVfbmFtZSA9IG5vOyB0aGVuCi0gICAgIEhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRT0wCi0rICAgIEFDX0xJQk9CSihbY2Fub25pY2FsaXplLWxncGxdKQotICAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX3JlYWxwYXRoID0gbm87IHRoZW4KLSAgICAgICBIQVZFX1JFQUxQQVRIPTAKLSAgICAgZWxpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19yZWFscGF0aF93b3JrcyIgIT0geWVzOyB0aGVuCi0gICAgICAgUkVQTEFDRV9SRUFMUEFUSD0xCi0gICAgIGZpCi0gICBlbGlmIHRlc3QgIiRnbF9jdl9mdW5jX3JlYWxwYXRoX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLS0gICAgUkVQTEFDRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FPTEKLSsgICAgQUNfTElCT0JKKFtjYW5vbmljYWxpemUtbGdwbF0pCi0gICAgIFJFUExBQ0VfUkVBTFBBVEg9MQotKyAgICBSRVBMQUNFX0NBTk9OSUNBTElaRV9GSUxFX05BTUU9MQotICAgZmkKLSBdKQotIAotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm5vX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJub19oLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm5vX2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2Vycm5vX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC41OTA0ODQ0NjkgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgZXJybm9faC5tNCBzZXJpYWwgMTAKLSsjIGVycm5vX2gubTQgc2VyaWFsIDkKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMzQsMTIgKzM0LDYgQEAgYm9vYm9vCi0gI2lmICFkZWZpbmVkIEVOT1RTVVAKLSBib29ib28KLSAjZW5kaWYKLS0jaWYgIWRlZmluZWQgRU5FVFJFU0VUCi0tYm9vYm9vCi0tI2VuZGlmCi0tI2lmICFkZWZpbmVkIEVDT05OQUJPUlRFRAotLWJvb2JvbwotLSNlbmRpZgotICNpZiAhZGVmaW5lZCBFU1RBTEUKLSBib29ib28KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9lcnJvci5tNCBsaWJpY29udi0xLjE0L3NyY200L2Vycm9yLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm9yLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJvci5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjU5ODQ4NDQ3MCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tI3NlcmlhbCAxNAotKyNzZXJpYWwgMTMKLSAKLSAjIENvcHlyaWdodCAoQykgMTk5Ni0xOTk4LCAyMDAxLTIwMDQsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi1AQCAtOCw4ICs4LDE2IEBACi0gCi0gQUNfREVGVU4oW2dsX0VSUk9SXSwKLSBbCi0tICBkbmwgV2UgZG9uJ3QgdXNlIEFDX0ZVTkNfRVJST1JfQVRfTElORSBhbnkgbW9yZSwgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIKLS0gIGRubCBtYWludGFpbmVkIGluIEF1dG9jb25mIGFuZCBiZWNhdXNlIGl0IGludm9rZXMgQUNfTElCT0JKLgotKyAgQUNfRlVOQ19FUlJPUl9BVF9MSU5FCi0rICBkbmwgTm90ZTogQUNfRlVOQ19FUlJPUl9BVF9MSU5FIGRvZXMgQUNfTElCU09VUkNFUyhbZXJyb3IuaCwgZXJyb3IuY10pLgotKyAgZ2xfUFJFUkVRX0VSUk9SCi0rXSkKLSsKLSsjIFJlZGVmaW5lIEFDX0ZVTkNfRVJST1JfQVRfTElORSwgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBpbgotKyMgQXV0b2NvbmYuCi0rQUNfREVGVU4oW0FDX0ZVTkNfRVJST1JfQVRfTElORV0sCi0rWwotKyAgQUNfTElCU09VUkNFUyhbZXJyb3IuaCwgZXJyb3IuY10pZG5sCi0gICBBQ19DQUNIRV9DSEVDSyhbZm9yIGVycm9yX2F0X2xpbmVdLCBbYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmVdLAotICAgICBbQUNfTElOS19JRkVMU0UoCi0gICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi1AQCAtMTcsNiArMjUsOSBAQCBBQ19ERUZVTihbZ2xfRVJST1JdLAotICAgICAgICAgICBbW2Vycm9yX2F0X2xpbmUgKDAsIDAsICIiLCAwLCAiYW4gZXJyb3Igb2NjdXJyZWQiKTtdXSldLAotICAgICAgICBbYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9eWVzXSwKLSAgICAgICAgW2FjX2N2X2xpYl9lcnJvcl9hdF9saW5lPW5vXSldKQotKyAgaWYgdGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUgPSBubzsgdGhlbgotKyAgICBBQ19MSUJPQkooW2Vycm9yXSkKLSsgIGZpCi0gXSkKLSAKLSAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL2Vycm9yLmMuCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZXh0ZW5zaW9ucy5tNCBsaWJpY29udi0xLjE0L3NyY200L2V4dGVuc2lvbnMubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZXh0ZW5zaW9ucy5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvZXh0ZW5zaW9ucy5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjYwNjQ4NDQ3MSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzZXJpYWwgMTAgIC0qLSBBdXRvY29uZiAtKi0KLSsjIHNlcmlhbCA5ICAtKi0gQXV0b2NvbmYgLSotCi0gIyBFbmFibGUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgbm9ybWFsbHkgZGlzYWJsZSB0aGVtLgotIAotICMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1AQCAtNjcsMTAgKzY3LDYgQEAgQUNfQkVGT1JFKFskMF0sIFtBQ19SVU5fSUZFTFNFXSlkbmwKLSAjaWZuZGVmIF9BTExfU09VUkNFCi0gIyB1bmRlZiBfQUxMX1NPVVJDRQotICNlbmRpZgotLS8qIEVuYWJsZSBnZW5lcmFsIGV4dGVuc2lvbnMgb24gTWFjT1MgWC4gICovCi0tI2lmbmRlZiBfREFSV0lOX0NfU09VUkNFCi0tIyB1bmRlZiBfREFSV0lOX0NfU09VUkNFCi0tI2VuZGlmCi0gLyogRW5hYmxlIEdOVSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBoYXZlIHRoZW0uICAqLwotICNpZm5kZWYgX0dOVV9TT1VSQ0UKLSAjIHVuZGVmIF9HTlVfU09VUkNFCi1AQCAtOTksNyArOTUsNiBAQCBBQ19CRUZPUkUoWyQwXSwgW0FDX1JVTl9JRkVMU0VdKWRubAotICAgdGVzdCAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18gPSB5ZXMgJiYKLSAgICAgQUNfREVGSU5FKFtfX0VYVEVOU0lPTlNfX10pCi0gICBBQ19ERUZJTkUoW19BTExfU09VUkNFXSkKLS0gIEFDX0RFRklORShbX0RBUldJTl9DX1NPVVJDRV0pCi0gICBBQ19ERUZJTkUoW19HTlVfU09VUkNFXSkKLSAgIEFDX0RFRklORShbX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTXSkKLSAgIEFDX0RFRklORShbX1RBTkRFTV9TT1VSQ0VdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jYWNoZS5tNCBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jYWNoZS5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY2FjaGUubTQJMjAxMS0wOC0wNyAwNjo0MjoxMS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jYWNoZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQzLjE1NDQ4NDU5MyAtMDgwMAotQEAgLTE1LDcgKzE1LDcgQEAKLSAKLSAKLSAjIFNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm0gb2YgYSBjb21tYW5kLWxpbmUgaW52b2NhdGlvbjoKLS0jICAgZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxvY2FsLWRpcj1nbnVsaWItbG9jYWwgLS1saWI9bGliaWNydCAtLXNvdXJjZS1iYXNlPXNyY2xpYiAtLW00LWJhc2U9c3JjbTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1tYWtlZmlsZS1uYW1lPU1ha2VmaWxlLmdudWxpYiAtLW5vLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBiaW5hcnktaW8gZXJyb3IgZ2V0dGV4dCBnZXR0ZXh0LWggbGliaWNvbnYtbWlzYyBtYnN0YXRlIG1lbW1vdmUgcHJvZ25hbWUgcmVsb2NhdGFibGUtcHJvZyBzYWZlLXJlYWQgc2lncGlwZSBzdGRpbyBzdGRsaWIgc3RyZXJyb3IgdW5pc3RkIHVuaXdpZHRoL3dpZHRoIHVubG9ja2VkLWlvIHhhbGxvYwotKyMgICBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbG9jYWwtZGlyPWdudWxpYi1sb2NhbCAtLWxpYj1saWJpY3J0IC0tc291cmNlLWJhc2U9c3JjbGliIC0tbTQtYmFzZT1zcmNtNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLW1ha2VmaWxlLW5hbWU9TWFrZWZpbGUuZ251bGliIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGJpbmFyeS1pbyBlcnJvciBnZXR0ZXh0IGdldHRleHQtaCBsaWJpY29udi1taXNjIG1ic3RhdGUgbWVtbW92ZSBwcm9nbmFtZSByZWxvY2F0YWJsZSByZWxvY2F0YWJsZS1wcm9nIHNhZmUtcmVhZCBzaWdwaXBlIHN0ZGlvIHN0ZGxpYiBzdHJlcnJvciB1bmlzdGQgdW5pd2lkdGgvd2lkdGggdW5sb2NrZWQtaW8geGFsbG9jCi0gCi0gIyBTcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtIG9mIGEgZmV3IGdudWxpYi10b29sLm00IG1hY3JvIGludm9jYXRpb25zOgotIGdsX0xPQ0FMX0RJUihbZ251bGliLWxvY2FsXSkKLUBAIC0yOCw2ICsyOCw3IEBAIGdsX01PRFVMRVMoWwotICAgbWJzdGF0ZQotICAgbWVtbW92ZQotICAgcHJvZ25hbWUKLSsgIHJlbG9jYXRhYmxlCi0gICByZWxvY2F0YWJsZS1wcm9nCi0gICBzYWZlLXJlYWQKLSAgIHNpZ3BpcGUKLUBAIC00OSw1ICs1MCw0IEBAIGdsX0xJQihbbGliaWNydF0pCi0gZ2xfTUFLRUZJTEVfTkFNRShbTWFrZWZpbGUuZ251bGliXSkKLSBnbF9NQUNST19QUkVGSVgoW2dsXSkKLSBnbF9QT19ET01BSU4oW10pCi0tZ2xfV0lUTkVTU19DX0RPTUFJTihbXSkKLSBnbF9WQ19GSUxFUyhbZmFsc2VdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21tb24ubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tbW9uLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21tb24ubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jb21tb24ubTQJMjAxMi0wMS0wOCAwMjowNzo0MC42MzQ0ODQ0NzEgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgZ251bGliLWNvbW1vbi5tNCBzZXJpYWwgMjkKLSsjIGdudWxpYi1jb21tb24ubTQgc2VyaWFsIDI0Ci0gZG5sIENvcHlyaWdodCAoQykgMjAwNy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTEyLDE5ICsxMiw2IEBAIEFDX0RFRlVOKFtnbF9DT01NT05dLCBbCi0gICBBQ19SRVFVSVJFKFtnbF9DT01NT05fQk9EWV0pCi0gXSkKLSBBQ19ERUZVTihbZ2xfQ09NTU9OX0JPRFldLCBbCi0tICBBSF9WRVJCQVRJTShbX05vcmV0dXJuXSwKLS1bLyogVGhlIF9Ob3JldHVybiBrZXl3b3JkIG9mIGRyYWZ0IEMxWC4gICovCi0tI2lmbmRlZiBfTm9yZXR1cm4KLS0jIGlmICgzIDw9IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18pIFwKLS0gICAgICB8fCAweDUxMTAgPD0gX19TVU5QUk9fQykKLS0jICBkZWZpbmUgX05vcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKQotLSMgZWxpZiAxMjAwIDw9IF9NU0NfVkVSCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3JldHVybikKLS0jIGVsc2UKLS0jICBkZWZpbmUgX05vcmV0dXJuCi0tIyBlbmRpZgotLSNlbmRpZgotLV0pCi0gICBBSF9WRVJCQVRJTShbaXNvYzk5X2lubGluZV0sCi0gWy8qIFdvcmsgYXJvdW5kIGEgYnVnIGluIEFwcGxlIEdDQyA0LjAuMSBidWlsZCA1NDY1OiBJbiBDOTkgbW9kZSwgaXQgc3VwcG9ydHMKLSAgICB0aGUgSVNPIEMgOTkgc2VtYW50aWNzIG9mICdleHRlcm4gaW5saW5lJyAodW5saWtlIHRoZSBHTlUgQyBzZW1hbnRpY3Mgb2YKLUBAIC00NywyMCArMzQsNiBAQCBBQ19ERUZVTihbZ2xfQ09NTU9OX0JPRFldLCBbCi0gLyogVGhlIG5hbWUgX1VOVVNFRF9QQVJBTUVURVJfIGlzIGFuIGVhcmxpZXIgc3BlbGxpbmcsIGFsdGhvdWdoIHRoZSBuYW1lCi0gICAgaXMgYSBtaXNub21lciBvdXRzaWRlIG9mIHBhcmFtZXRlciBsaXN0cy4gICovCi0gI2RlZmluZSBfVU5VU0VEX1BBUkFNRVRFUl8gX0dMX1VOVVNFRAotLQotLS8qIFRoZSBfX3B1cmVfXyBhdHRyaWJ1dGUgd2FzIGFkZGVkIGluIGdjYyAyLjk2LiAgKi8KLS0jaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk2KQotLSMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfUFVSRSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0FUVFJJQlVURV9QVVJFIC8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0tLyogVGhlIF9fY29uc3RfXyBhdHRyaWJ1dGUgd2FzIGFkZGVkIGluIGdjYyAyLjk1LiAgKi8KLS0jaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk1KQotLSMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfQ09OU1QgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpCi0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQVRUUklCVVRFX0NPTlNUIC8qIGVtcHR5ICovCi0tI2VuZGlmCi0gXSkKLSAgIGRubCBQcmVwYXJhdGlvbiBmb3IgcnVubmluZyB0ZXN0IHByb2dyYW1zOgotICAgZG5sIFRlbGwgZ2xpYmMgdG8gd3JpdGUgZGlhZ25vc3RpY3MgZnJvbSAtRF9GT1JUSUZZX1NPVVJDRT0yIHRvIHN0ZGVyciwgbm90Ci1AQCAtNzQsNDkgKzQ3LDE2IEBAIEFDX0RFRlVOKFtnbF9DT01NT05fQk9EWV0sIFsKLSAjIGV4cGFuZHMgdG8gYSBDIHByZXByb2Nlc3NvciBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIDEgb3IgMCwgZGVwZW5kaW5nCi0gIyB3aGV0aGVyIGEgZ251bGliIG1vZHVsZSB0aGF0IGhhcyBiZWVuIHJlcXVlc3RlZCBzaGFsbCBiZSBjb25zaWRlcmVkIHByZXNlbnQKLSAjIG9yIG5vdC4KLS1tNF9kZWZpbmUoW2dsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OXSwgWzFdKQotK0FDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0sIFsxXSkKLSAKLSAjIGdsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFKFttb2R1bGVuYW1lXSkKLSAjIHNldHMgdGhlIHNoZWxsIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiB0aGUgZ2l2ZW4gbW9kdWxlIHRvCi0gIyBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCB3aWxsIGV2YWx1YXRlIHRvIDEuCi0gQUNfREVGVU4oW2dsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFXSwKLSBbCi0tICBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVgoCi0tICAgIFtHTlVMSUJfW11tNF90cmFuc2xpdChbWyQxXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldLAotLSAgICBbZ2xfTU9EVUxFX0lORElDQVRPUl9DT05ESVRJT05dKQotLV0pCi0tCi0tIyBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVgoW3ZhcmlhYmxlXSkKLS0jIG1vZGlmaWVzIHRoZSBzaGVsbCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTi4KLS0jIFRoZSBzaGVsbCB2YXJpYWJsZSdzIHZhbHVlIGlzIGEgQyBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcwotLSMgdG8gMCBvciAxLgotLUFDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVhdLAotLVsKLS0gIG00X2lmKG00X2RlZm4oW2dsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OXSksIFsxXSwKLS0gICAgWwotLSAgICAgZG5sIFNpbXBsaWZ5IHRoZSBleHByZXNzaW9uIFZBTFVFIHx8IDEgdG8gMS4KLS0gICAgICQxPTEKLS0gICAgXSwKLS0gICAgW2dsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFX0FVWF9PUihbJDFdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0pXSkKLS1dKQotLQotLSMgZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYX09SKFt2YXJpYWJsZV0sIFtjb25kaXRpb25dKQotLSMgbW9kaWZpZXMgdGhlIHNoZWxsIHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIGdpdmVuIGNvbmRpdGlvbi4gIFRoZSBzaGVsbAotLSMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gMCBvciAxLgotLUFDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVhfT1JdLAotLVsKLS0gIGRubCBTaW1wbGlmeSB0aGUgZXhwcmVzc2lvbiAxIHx8IENPTkRJVElPTiB0byAxLgotLSAgaWYgdGVzdCAiJFtdJDEiICE9IDE7IHRoZW4KLS0gICAgZG5sIFNpbXBsaWZ5IHRoZSBleHByZXNzaW9uIDAgfHwgQ09ORElUSU9OIHRvIENPTkRJVElPTi4KLS0gICAgaWYgdGVzdCAiJFtdJDEiID0gMDsgdGhlbgotLSAgICAgICQxPSQyCi0tICAgIGVsc2UKLS0gICAgICAkMT0iKCRbXSQxIHx8ICQyKSIKLS0gICAgZmkKLS0gIGZpCi0rICBHTlVMSUJfW11tNF90cmFuc2xpdChbWyQxXV0sCi0rICAgIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pPWdsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OCi0gXSkKLSAKLSAjIGdsX01PRFVMRV9JTkRJQ0FUT1IoW21vZHVsZW5hbWVdKQotQEAgLTIxMSwzNSArMTUxLDYgQEAgbTRfaWZuZGVmKFtBU19WQVJfSUZdLAotIFttNF9kZWZpbmUoW0FTX1ZBUl9JRl0sCi0gW0FTX0lGKFt0ZXN0IHgiQVNfVkFSX0dFVChbJDFdKSIgPSB4IiIkMl0sIFskM10sIFskNF0pXSldKQotIAotLSMgZ2xfUFJPR19BUl9SQU5MSUIKLS0jIERldGVybWluZXMgdGhlIHZhbHVlcyBmb3IgQVIsIEFSRkxBR1MsIFJBTkxJQiB0aGF0IGZpdCB3aXRoIHRoZSBjb21waWxlci4KLS1BQ19ERUZVTihbZ2xfUFJPR19BUl9SQU5MSUJdLAotLVsKLS0gIGRubCBNaW5peCAzIGNvbWVzIHdpdGggdHdvIHRvb2xjaGFpbnM6IFRoZSBBbXN0ZXJkYW0gQ29tcGlsZXIgS2l0IGNvbXBpbGVyCi0tICBkbmwgYXMgImNjIiwgYW5kIEdDQyBhcyAiZ2NjIi4gVGhleSBoYXZlIGRpZmZlcmVudCBvYmplY3QgZmlsZSBmb3JtYXRzIGFuZAotLSAgZG5sIGxpYnJhcnkgZm9ybWF0cy4gSW4gcGFydGljdWxhciwgdGhlIEdOVSBiaW51dGlscyBwcm9ncmFtcyBhciwgcmFubGliCi0tICBkbmwgcHJvZHVjZSBsaWJyYXJpZXMgdGhhdCB3b3JrIG9ubHkgd2l0aCBnY2MsIG5vdCB3aXRoIGNjLgotLSAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0tICBBQ19FR1JFUF9DUFAoW0Ftc3RlcmRhbV0sCi0tICAgIFsKLS0jaWZkZWYgX19BQ0tfXwotLUFtc3RlcmRhbQotLSNlbmRpZgotLSAgICBdLAotLSAgICBbQVI9J2NjIC1jLmEnCi0tICAgICBBUkZMQUdTPSctbycKLS0gICAgIFJBTkxJQj0nOicKLS0gICAgXSwKLS0gICAgW2RubCBVc2UgdGhlIEF1dG9tYWtlLWRvY3VtZW50ZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIEFSIGFuZCBBUkZMQUdTLgotLSAgICAgQVI9J2FyJwotLSAgICAgQVJGTEFHUz0nY3J1JwotLSAgICAgZG5sIFVzZSB0aGUgcmFubGliIHByb2dyYW0gaWYgaXQgaXMgYXZhaWxhYmxlLgotLSAgICAgQUNfUFJPR19SQU5MSUIKLS0gICAgXSkKLS0gIEFDX1NVQlNUKFtBUl0pCi0tICBBQ19TVUJTVChbQVJGTEFHU10pCi0tXSkKLS0KLSAjIEFDX1BST0dfTUtESVJfUAotICMgaXMgYSBiYWNrcG9ydCBvZiBhdXRvY29uZi0yLjYwJ3MgQUNfUFJPR19NS0RJUl9QLCB3aXRoIGEgZml4Ci0gIyBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIGF1dG9tYWtlLTEuOS42IGZyb20gYXV0b2NvbmYtMi42Mi4KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY29tcC5tNCBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jb21wLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21wLm00CTIwMTEtMDgtMDcgMDY6NDI6MTIuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tcC5tNAkyMDEyLTAxLTA4IDAyOjA3OjQzLjkyMjQ4NDYzMCAtMDgwMAotQEAgLTI1LDEyICsyNSwxNCBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgbTRfcGF0dGVybl9hbGxvdyhbXmdsX0VTJF0pZG5sIGEgdmFsaWQgbG9jYWxlIG5hbWUKLSAgIG00X3BhdHRlcm5fYWxsb3coW15nbF9MSUJPQkpTJF0pZG5sIGEgdmFyaWFibGUKLSAgIG00X3BhdHRlcm5fYWxsb3coW15nbF9MVExJQk9CSlMkXSlkbmwgYSB2YXJpYWJsZQotLSAgQUNfUkVRVUlSRShbZ2xfUFJPR19BUl9SQU5MSUJdKQotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19SQU5MSUJdKQotICAgQUNfUkVRVUlSRShbQU1fUFJPR19DQ19DX09dKQotICAgIyBDb2RlIGZyb20gbW9kdWxlIGFsbG9jYS1vcHQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgYWxsb2NhdG9yOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGFyZWFkbGluazoKLSsgICMgQ29kZSBmcm9tIG1vZHVsZSBhcmctbm9ubnVsbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBiaW5hcnktaW86Ci0rICAjIENvZGUgZnJvbSBtb2R1bGUgYysrZGVmczoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBjYW5vbmljYWxpemUtbGdwbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBjYXJlYWRsaW5rYXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgZG9zbmFtZToKLUBAIC00Niw3ICs0OCw2IEBAIEFDX0RFRlVOKFtnbF9FQVJMWV0sCi0gICAjIENvZGUgZnJvbSBtb2R1bGUgaGF2ZWxpYjoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBpbmNsdWRlX25leHQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgaW50cHJvcHM6Ci0tICAjIENvZGUgZnJvbSBtb2R1bGUgbGFyZ2VmaWxlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGxpYmljb252LW1pc2M6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgbHN0YXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgbWFsbG9jYToKLUBAIC02NCwxMCArNjUsNiBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIHNpZ25hbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzaWdwaXBlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHNpZ3Byb2NtYXNrOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvYXJnLW5vbm51bGw6Ci0tICAjIENvZGUgZnJvbSBtb2R1bGUgc25pcHBldC9jKytkZWZzOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2U6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3NpemVfdDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdGF0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGJvb2w6Ci1AQCAtNzcsNyArNzQsNiBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGxpYjoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcnJvcjoKLS0gICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcnJvci1vdmVycmlkZToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJpbmc6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3lzX3N0YXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdGltZToKLUBAIC04Nyw2ICs4Myw3IEBAIEFDX0RFRlVOKFtnbF9FQVJMWV0sCi0gICAjIENvZGUgZnJvbSBtb2R1bGUgdW5pd2lkdGgvd2lkdGg6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdW5sb2NrZWQtaW86Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdmVyaWZ5OgotKyAgIyBDb2RlIGZyb20gbW9kdWxlIHdhcm4tb24tdXNlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHhhbGxvYzoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSB4cmVhZGxpbms6Ci0gXSkKLUBAIC0xMDksOSArMTA2LDYgQEAgQUNfREVGVU4oW2dsX0lOSVRdLAotICAgZ2xfc291cmNlX2Jhc2U9J3NyY2xpYicKLSBnbF9GVU5DX0FMTE9DQQotIGdsX0NBTk9OSUNBTElaRV9MR1BMCi0taWYgdGVzdCAkSEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW2Nhbm9uaWNhbGl6ZS1sZ3BsXSkKLS1maQotIGdsX01PRFVMRV9JTkRJQ0FUT1IoW2Nhbm9uaWNhbGl6ZS1sZ3BsXSkKLSBnbF9TVERMSUJfTU9EVUxFX0lORElDQVRPUihbY2Fub25pY2FsaXplX2ZpbGVfbmFtZV0pCi0gZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3JlYWxwYXRoXSkKLUBAIC0xMjEsMTAgKzExNSw2IEBAIGdsX0VOVklST04KLSBnbF9VTklTVERfTU9EVUxFX0lORElDQVRPUihbZW52aXJvbl0pCi0gZ2xfSEVBREVSX0VSUk5PX0gKLSBnbF9FUlJPUgotLWlmIHRlc3QgJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lID0gbm87IHRoZW4KLS0gIEFDX0xJQk9CSihbZXJyb3JdKQotLSAgZ2xfUFJFUkVRX0VSUk9SCi0tZmkKLSBtNF9pZmRlZihbQU1fWEdFVFRFWFRfT1BUSU9OXSwKLSAgIFtBTV9dW1hHRVRURVhUX09QVElPTihbLS1mbGFnPWVycm9yOjM6Yy1mb3JtYXRdKQotICAgIEFNX11bWEdFVFRFWFRfT1BUSU9OKFstLWZsYWc9ZXJyb3JfYXRfbGluZTo1OmMtZm9ybWF0XSldKQotQEAgLTEzNCw0MyArMTI0LDI2IEBAIEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oWzAuMTguMV0pCi0gQUNfU1VCU1QoW0xJQklOVExdKQotIEFDX1NVQlNUKFtMVExJQklOVExdKQotIGdsX0ZVTkNfTFNUQVQKLS1pZiB0ZXN0ICRSRVBMQUNFX0xTVEFUID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtsc3RhdF0pCi0tICBnbF9QUkVSRVFfTFNUQVQKLS1maQotIGdsX1NZU19TVEFUX01PRFVMRV9JTkRJQ0FUT1IoW2xzdGF0XSkKLSBnbF9NQUxMT0NBCi0gQUNfVFlQRV9NQlNUQVRFX1QKLSBnbF9GVU5DX01FTU1PVkUKLS1pZiB0ZXN0ICRhY19jdl9mdW5jX21lbW1vdmUgPSBubzsgdGhlbgotLSAgQUNfTElCT0JKKFttZW1tb3ZlXSkKLS0gIGdsX1BSRVJFUV9NRU1NT1ZFCi0tZmkKLSBnbF9NVUxUSUFSQ0gKLSBnbF9QQVRITUFYCi0gQUNfQ0hFQ0tfREVDTFMoW3Byb2dyYW1faW52b2NhdGlvbl9uYW1lXSwgW10sIFtdLCBbI2luY2x1ZGUgPGVycm5vLmg+XSkKLSBBQ19DSEVDS19ERUNMUyhbcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWVdLCBbXSwgW10sIFsjaW5jbHVkZSA8ZXJybm8uaD5dKQotIGdsX0ZVTkNfUkVBRAotLWlmIHRlc3QgJFJFUExBQ0VfUkVBRCA9IDE7IHRoZW4KLS0gIEFDX0xJQk9CSihbcmVhZF0pCi0tZmkKLSBnbF9VTklTVERfTU9EVUxFX0lORElDQVRPUihbcmVhZF0pCi0gZ2xfRlVOQ19SRUFETElOSwotLWlmIHRlc3QgJEhBVkVfUkVBRExJTksgPSAwIHx8IHRlc3QgJFJFUExBQ0VfUkVBRExJTksgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW3JlYWRsaW5rXSkKLS0gIGdsX1BSRVJFUV9SRUFETElOSwotLWZpCi0gZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW3JlYWRsaW5rXSkKLSBnbF9SRUxPQ0FUQUJMRShbJGdsX3NvdXJjZV9iYXNlXSkKLS1pZiB0ZXN0ICRSRUxPQ0FUQUJMRSA9IHllczsgdGhlbgotLSAgQUNfTElCT0JKKFtwcm9ncmVsb2NdKQotLWZpCi0gZ2xfRlVOQ19SRUFETElOS19TRVBBUkFURQotIGdsX0NBTk9OSUNBTElaRV9MR1BMX1NFUEFSQVRFCi0gZ2xfTUFMTE9DQQotLWdsX1JFTE9DQVRBQkxFX0xJQlJBUlkKLStnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX1NFUEFSQVRFCi0gZ2xfRlVOQ19TRVRFTlZfU0VQQVJBVEUKLS1nbF9QUkVSRVFfU0FGRV9SRUFECi0rZ2xfRlVOQ19TVFJFUlJPUl9TRVBBUkFURQotK2dsX1NBRkVfUkVBRAotIGdsX1NJR05BTF9ICi0gZ2xfU0lHTkFMX1NJR1BJUEUKLSBkbmwgRGVmaW5lIHRoZSBDIG1hY3JvIEdOVUxJQl9TSUdQSVBFIHRvIDEuCi1AQCAtMTg2LDE3ICsxNTksOSBAQCBkbmwgRGVmaW5lIHRoZSBzdWJzdGl0dXRlZCB2YXJpYWJsZSBHTlVMCi0gQUNfUkVRVUlSRShbZ2xfVU5JU1REX0hfREVGQVVMVFNdKQotIEdOVUxJQl9VTklTVERfSF9TSUdQSVBFPTEKLSBnbF9TSUdOQUxCTE9DS0lORwotLWlmIHRlc3QgJEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcgPSAwOyB0aGVuCi0tICBBQ19MSUJPQkooW3NpZ3Byb2NtYXNrXSkKLS0gIGdsX1BSRVJFUV9TSUdQUk9DTUFTSwotLWZpCi0gZ2xfU0lHTkFMX01PRFVMRV9JTkRJQ0FUT1IoW3NpZ3Byb2NtYXNrXSkKLSBndF9UWVBFX1NTSVpFX1QKLSBnbF9GVU5DX1NUQVQKLS1pZiB0ZXN0ICRSRVBMQUNFX1NUQVQgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW3N0YXRdKQotLSAgZ2xfUFJFUkVRX1NUQVQKLS1maQotIGdsX1NZU19TVEFUX01PRFVMRV9JTkRJQ0FUT1IoW3N0YXRdKQotIEFNX1NUREJPT0xfSAotIGdsX1NURERFRl9ICi1AQCAtMjA0LDE3ICsxNjksNyBAQCBnbF9TVERJTlRfSAotIGdsX1NURElPX0gKLSBnbF9TVERMSUJfSAotIGdsX0ZVTkNfU1RSRVJST1IKLS1pZiB0ZXN0ICRSRVBMQUNFX1NUUkVSUk9SID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtzdHJlcnJvcl0pCi0tZmkKLS1nbF9NT0RVTEVfSU5ESUNBVE9SKFtzdHJlcnJvcl0pCi0gZ2xfU1RSSU5HX01PRFVMRV9JTkRJQ0FUT1IoW3N0cmVycm9yXSkKLS1BQ19SRVFVSVJFKFtnbF9IRUFERVJfRVJSTk9fSF0pCi0tQUNfUkVRVUlSRShbZ2xfRlVOQ19TVFJFUlJPUl8wXSkKLS1pZiB0ZXN0IC1uICIkRVJSTk9fSCIgfHwgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUl8wID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtzdHJlcnJvci1vdmVycmlkZV0pCi0tICBnbF9QUkVSRVFfU1lTX0hfV0lOU09DSzIKLS1maQotIGdsX0hFQURFUl9TVFJJTkdfSAotIGdsX0hFQURFUl9TWVNfU1RBVF9ICi0gQUNfUFJPR19NS0RJUl9QCi1AQCAtMzY0LDE0ICszMTksMTMgQEAgQUNfREVGVU4oW2dsdGVzdHNfTElCU09VUkNFU10sIFsKLSAjIFRoaXMgbWFjcm8gcmVjb3JkcyB0aGUgbGlzdCBvZiBmaWxlcyB3aGljaCBoYXZlIGJlZW4gaW5zdGFsbGVkIGJ5Ci0gIyBnbnVsaWItdG9vbCBhbmQgbWF5IGJlIHJlbW92ZWQgYnkgZnV0dXJlIGdudWxpYi10b29sIGludm9jYXRpb25zLgotIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0rICBidWlsZC1hdXgvYXJnLW5vbm51bGwuaAotKyAgYnVpbGQtYXV4L2MrK2RlZnMuaAotICAgYnVpbGQtYXV4L2NvbmZpZy5saWJwYXRoCi0gICBidWlsZC1hdXgvY29uZmlnLnJwYXRoCi0gICBidWlsZC1hdXgvaW5zdGFsbC1yZWxvYwotICAgYnVpbGQtYXV4L3JlbG9jLWxkZmxhZ3MKLS0gIGJ1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCi0tICBidWlsZC1hdXgvc25pcHBldC9hcmctbm9ubnVsbC5oCi0tICBidWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgKLS0gIGJ1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgKLSsgIGJ1aWxkLWF1eC93YXJuLW9uLXVzZS5oCi0gICBkb2MvcmVsb2NhdGFibGUudGV4aQotICAgbGliL2FsbG9jYS5pbi5oCi0gICBsaWIvYWxsb2NhdG9yLmMKLUBAIC00MTksOCArMzczLDYgQEAgQUNfREVGVU4oW2dsX0ZJTEVfTElTVF0sIFsKLSAgIGxpYi9zdGRpby5pbi5oCi0gICBsaWIvc3RkbGliLmluLmgKLSAgIGxpYi9zdHJlcS5oCi0tICBsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuYwotLSAgbGliL3N0cmVycm9yLW92ZXJyaWRlLmgKLSAgIGxpYi9zdHJlcnJvci5jCi0gICBsaWIvc3RyaW5nLmluLmgKLSAgIGxpYi9zeXNfc3RhdC5pbi5oCi1AQCAtNDYzLDcgKzQxNSw2IEBAIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0gICBtNC9pbnRtYXgubTQKLSAgIG00L2ludHR5cGVzLXByaS5tNAotICAgbTQvaW50dHlwZXNfaC5tNAotLSAgbTQvbGFyZ2VmaWxlLm00Ci0gICBtNC9sY21lc3NhZ2UubTQKLSAgIG00L2xpYi1sZC5tNAotICAgbTQvbGliLWxpbmsubTQKLUBAIC01MDIsNyArNDUzLDYgQEAgQUNfREVGVU4oW2dsX0ZJTEVfTElTVF0sIFsKLSAgIG00L3N0ZGxpYl9oLm00Ci0gICBtNC9zdHJlcnJvci5tNAotICAgbTQvc3RyaW5nX2gubTQKLS0gIG00L3N5c19zb2NrZXRfaC5tNAotICAgbTQvc3lzX3N0YXRfaC5tNAotICAgbTQvdGhyZWFkbGliLm00Ci0gICBtNC90aW1lX2gubTQKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9pbmNsdWRlX25leHQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9pbmNsdWRlX25leHQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvaW5jbHVkZV9uZXh0Lm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9pbmNsdWRlX25leHQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC42NTA0ODQ0NzIgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgaW5jbHVkZV9uZXh0Lm00IHNlcmlhbCAyMAotKyMgaW5jbHVkZV9uZXh0Lm00IHNlcmlhbCAxOAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNzUsMTMgKzE3NSwxMSBAQCBBQ19ERUZVTihbZ2xfTkVYVF9IRUFERVJTX0lOVEVSTkFMXSwKLSAgICAgW0FDX0NIRUNLX0hFQURFUlNfT05DRShbJDFdKQotICAgICBdKQotIAotLWRubCBGSVhNRTogZ2xfbmV4dF9oZWFkZXIgYW5kIGdsX2hlYWRlcl9leGlzdHMgbXVzdCBiZSB1c2VkIHVucXVvdGVkCi0tZG5sIHVudGlsIHdlIGNhbiBhc3N1bWUgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSAgIG00X2ZvcmVhY2hfdyhbZ2xfSEVBREVSX05BTUVdLCBbJDFdLAotICAgICBbQVNfVkFSX1BVU0hERUYoW2dsX25leHRfaGVhZGVyXSwKLSAgICAgICAgICAgICAgICAgICAgIFtnbF9jdl9uZXh0X11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pKQotICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KLS0gICAgICAgQVNfVkFSX1NFVChnbF9uZXh0X2hlYWRlciwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSsgICAgICAgQVNfVkFSX1NFVChbZ2xfbmV4dF9oZWFkZXJdLCBbJzwnZ2xfSEVBREVSX05BTUUnPiddKQotICAgICAgZWxzZQotICAgICAgICBBQ19DQUNIRV9DSEVDSygKLSAgICAgICAgICBbYWJzb2x1dGUgbmFtZSBvZiA8XW00X2RlZm4oW2dsX0hFQURFUl9OQU1FXSlbPl0sCi1AQCAtMjEwLDcgKzIwOCw3IEBAIGRubCB1bnRpbCB3ZSBjYW4gYXNzdW1lIGF1dG9jb25mIDIuNjQgb3IKLSAgICAgICAgICAgICAgICBkbmwgZXZhbCBpcyBuZWNlc3NhcnkgdG8gZXhwYW5kIGdsX2Fic25hbWVfY3BwLgotICAgICAgICAgICAgICAgIGRubCBVbHRyaXggYW5kIFB5cmFtaWQgc2ggcmVmdXNlIHRvIHJlZGlyZWN0IG91dHB1dCBvZiBldmFsLAotICAgICAgICAgICAgICAgIGRubCBzbyB1c2Ugc3Vic2hlbGwuCi0tICAgICAgICAgICAgICAgQVNfVkFSX1NFVChnbF9uZXh0X2hlYWRlciwKLSsgICAgICAgICAgICAgICBBU19WQVJfU0VUKFtnbF9uZXh0X2hlYWRlcl0sCi0gICAgICAgICAgICAgICAgICBbJyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JkFTX01FU1NBR0VfTE9HX0ZEIHwKLSAgICAgICAgICAgICAgICAgICBzZWQgLW4gJ1wjL11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pWyN7Ci0gICAgICAgICAgICAgICAgICAgICBzIy4qIlwoLiovXW00X2RlZm4oW2dsX0hFQURFUl9OQU1FXSlbXCkiLiojXDEjCi1AQCAtMjIwLDIwICsyMTgsMjAgQEAgZG5sIHVudGlsIHdlIGNhbiBhc3N1bWUgYXV0b2NvbmYgMi42NCBvcgotICAgICAgICAgICAgICAgICAgIH0nYCciJ10pCi0gICAgICAgICAgIG00X2lmKFskMl0sIFtjaGVja10sCi0gICAgICAgICAgICAgW2Vsc2UKLS0gICAgICAgICAgICAgICBBU19WQVJfU0VUKGdsX25leHRfaGVhZGVyLCBbJzwnZ2xfSEVBREVSX05BTUUnPiddKQotKyAgICAgICAgICAgICAgIEFTX1ZBUl9TRVQoW2dsX25leHRfaGVhZGVyXSwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICBdKQotICAgICAgICAgIF0pCi0gICAgICBmaQotICAgICAgQUNfU1VCU1QoCi0gICAgICAgIEFTX1RSX0NQUChbTkVYVF9dbTRfZGVmbihbZ2xfSEVBREVSX05BTUVdKSksCi0tICAgICAgIFtBU19WQVJfR0VUKGdsX25leHRfaGVhZGVyKV0pCi0rICAgICAgIFtBU19WQVJfR0VUKFtnbF9uZXh0X2hlYWRlcl0pXSkKLSAgICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0gYnVnZ3k7IHRoZW4KLSAgICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlX25leHQnCi0gICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J2dsX0hFQURFUl9OQU1FJz4nCi0gICAgICBlbHNlCi0gICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZScKLS0gICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9QVNfVkFSX0dFVChnbF9uZXh0X2hlYWRlcikKLSsgICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9QVNfVkFSX0dFVChbZ2xfbmV4dF9oZWFkZXJdKQotICAgICAgZmkKLSAgICAgIEFDX1NVQlNUKAotICAgICAgICBBU19UUl9DUFAoW05FWFRfQVNfRklSU1RfRElSRUNUSVZFX11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pKSwKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9sYXJnZWZpbGUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9sYXJnZWZpbGUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbGFyZ2VmaWxlLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9sYXJnZWZpbGUubTQJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDEwNCArMCwwIEBACi0tIyBFbmFibGUgbGFyZ2UgZmlsZXMgb24gc3lzdGVtcyB3aGVyZSB0aGlzIGlzIG5vdCB0aGUgZGVmYXVsdC4KLS0KLS0jIENvcHlyaWdodCAxOTkyLTE5OTYsIDE5OTgtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotLQotLSMgVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiB3b3JrcyBhcm91bmQgYSBwcm9ibGVtIGluIGF1dG9jb25mIDw9IDIuNjg7Ci0tIyBBQ19TWVNfTEFSR0VGSUxFIGRvZXMgbm90IGNvbmZpZ3VyZSBmb3IgbGFyZ2UgaW5vZGVzIG9uIE1hYyBPUyBYIDEwLjUuCi0tbTRfdmVyc2lvbl9wcmVyZXEoWzIuNjldLCBbXSAsWwotLQotLSMgX0FDX1NZU19MQVJHRUZJTEVfVEVTVF9JTkNMVURFUwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbX0FDX1NZU19MQVJHRUZJTEVfVEVTVF9JTkNMVURFU10sCi0tW0AlOkBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0gLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0tICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLS0gICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotLSAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0tQCU6QGRlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0tICBpbnQgb2ZmX3RfaXNfbGFyZ2VbWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0tCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0tCQkgICAgICA/IDEgOiAtMV1dO1tdZG5sCi0tXSkKLS0KLS0KLS0jIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFKEMtTUFDUk8sIFZBTFVFLAotLSMJCQkJQ0FDSEUtVkFSLAotLSMJCQkJREVTQ1JJUFRJT04sCi0tIwkJCQlQUk9MT0dVRSwgW0ZVTkNUSU9OLUJPRFldKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW19BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFXSwKLS1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkMSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzXSwgWyQzXSwKLS1bd2hpbGUgOjsgZG8KLS0gIG00X2lmdmFsKFskNl0sIFtBQ19MSU5LX0lGRUxTRV0sIFtBQ19DT01QSUxFX0lGRUxTRV0pKAotLSAgICBbQUNfTEFOR19QUk9HUkFNKFskNV0sIFskNl0pXSwKLS0gICAgWyQzPW5vOyBicmVha10pCi0tICBtNF9pZnZhbChbJDZdLCBbQUNfTElOS19JRkVMU0VdLCBbQUNfQ09NUElMRV9JRkVMU0VdKSgKLS0gICAgW0FDX0xBTkdfUFJPR1JBTShbQCU6QGRlZmluZSAkMSAkMgotLSQ1XSwgWyQ2XSldLAotLSAgICBbJDM9JDI7IGJyZWFrXSkKLS0gICQzPXVua25vd24KLS0gIGJyZWFrCi0tZG9uZV0pCi0tY2FzZSAkJDMgaW4gIygKLS0gIG5vIHwgdW5rbm93bikgOzsKLS0gICopIEFDX0RFRklORV9VTlFVT1RFRChbJDFdLCBbJCQzXSwgWyQ0XSk7OwotLWVzYWMKLS1ybSAtcmYgY29uZnRlc3QqW11kbmwKLS1dKSMgX0FDX1NZU19MQVJHRUZJTEVfTUFDUk9fVkFMVUUKLS0KLS0KLS0jIEFDX1NZU19MQVJHRUZJTEUKLS0jIC0tLS0tLS0tLS0tLS0tLS0KLS0jIEJ5IGRlZmF1bHQsIG1hbnkgaG9zdHMgd29uJ3QgbGV0IHByb2dyYW1zIGFjY2VzcyBsYXJnZSBmaWxlczsKLS0jIG9uZSBtdXN0IHVzZSBzcGVjaWFsIGNvbXBpbGVyIG9wdGlvbnMgdG8gZ2V0IGxhcmdlLWZpbGUgYWNjZXNzIHRvIHdvcmsuCi0tIyBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoaXMgYnJhaW4gZGFtYWdlIHBsZWFzZSBzZWU6Ci0tIyBodHRwOi8vd3d3LnVuaXgtc3lzdGVtcy5vcmcvdmVyc2lvbjIvd2hhdHNuZXcvbGZzMjBtYXIuaHRtbAotLUFDX0RFRlVOKFtBQ19TWVNfTEFSR0VGSUxFXSwKLS1bQUNfQVJHX0VOQUJMRShsYXJnZWZpbGUsCi0tCSAgICAgICBbICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzXSkKLS1pZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm87IHRoZW4KLS0KLS0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlc10sCi0tICAgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MsCi0tICAgIFthY19jdl9zeXNfbGFyZ2VmaWxlX0NDPW5vCi0tICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgYWNfc2F2ZV9DQz0kQ0MKLS0gICAgICAgd2hpbGUgOjsgZG8KLS0JICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQsCi0tCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCi0tCSBBQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oW19BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVNdKV0pCi0tCSBBQ19DT01QSUxFX0lGRUxTRShbXSwgW2JyZWFrXSkKLS0JIENDPSIkQ0MgLW4zMiIKLS0JIEFDX0NPTVBJTEVfSUZFTFNFKFtdLCBbYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz0nIC1uMzInOyBicmVha10pCi0tCSBicmVhawotLSAgICAgICBkb25lCi0tICAgICAgIENDPSRhY19zYXZlX0NDCi0tICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgZmldKQotLSAgaWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiICE9IG5vOyB0aGVuCi0tICAgIENDPSRDQyRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDCi0tICBmaQotLQotLSAgX0FDX1NZU19MQVJHRUZJTEVfTUFDUk9fVkFMVUUoX0ZJTEVfT0ZGU0VUX0JJVFMsIDY0LAotLSAgICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cywKLS0gICAgW051bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQsIG9uIGhvc3RzIHdoZXJlIHRoaXMgaXMgc2V0dGFibGUuXSwKLS0gICAgW19BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVNdKQotLSAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCi0tICAgIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFKF9MQVJHRV9GSUxFUywgMSwKLS0gICAgICBhY19jdl9zeXNfbGFyZ2VfZmlsZXMsCi0tICAgICAgW0RlZmluZSBmb3IgbGFyZ2UgZmlsZXMsIG9uIEFJWC1zdHlsZSBob3N0cy5dLAotLSAgICAgIFtfQUNfU1lTX0xBUkdFRklMRV9URVNUX0lOQ0xVREVTXSkKLS0gIGZpCi0tCi0tICBBSF9WRVJCQVRJTShbX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFXSwKLS1bLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9TIFguICAqLwotLSNpZm5kZWYgX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFCi0tIyBkZWZpbmUgX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFIDEKLS0jZW5kaWZdKQotLWZpCi0tXSkjIEFDX1NZU19MQVJHRUZJTEUKLS0KLS1dKSMgbTRfdmVyc2lvbl9wcmVyZXEgMi42OQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2xzdGF0Lm00IGxpYmljb252LTEuMTQvc3JjbTQvbHN0YXQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbHN0YXQubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2xzdGF0Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuNzIyNDg0NDc2IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNlcmlhbCAyMwotKyMgc2VyaWFsIDIxCi0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMSwgMjAwMy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLUBAIC0xNSwyOCArMTUsMjQgQEAgQUNfREVGVU4oW2dsX0ZVTkNfTFNUQVRdLAotICAgZG5sICIjZGVmaW5lIGxzdGF0IHN0YXQiLCBhbmQgbHN0YXQuYyBpcyBhIG5vLW9wLgotICAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbbHN0YXRdKQotICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19sc3RhdCA9IHllczsgdGhlbgotLSAgICBBQ19SRVFVSVJFKFtnbF9GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LXSkKLS0gICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rID0gbm87IHRoZW4KLSsgICAgQUNfUkVRVUlSRShbQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOS10pCi0rICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IG5vOyB0aGVuCi0rICAgICAgZG5sIE5vdGU6IEFDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTksgZG9lcyBBQ19MSUJPQkooW2xzdGF0XSkuCi0gICAgICAgUkVQTEFDRV9MU1RBVD0xCi0gICAgIGZpCi0rICAgICMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvbHN0YXQuYy4KLSsgICAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotICAgZWxzZQotICAgICBIQVZFX0xTVEFUPTAKLSAgIGZpCi0gXSkKLSAKLS0jIFByZXJlcXVpc2l0ZXMgb2YgbGliL2xzdGF0LmMuCi0tQUNfREVGVU4oW2dsX1BSRVJFUV9MU1RBVF0sCi0rIyBSZWRlZmluZSBBQ19GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LLCBiZWNhdXNlIGl0IGlzIG5vIGxvbmdlcgotKyMgbWFpbnRhaW5lZCBpbiBBdXRvY29uZi4KLStBQ19ERUZVTihbQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOS10sCi0gWwotLSAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotLSAgOgotLV0pCi0tCi0tQUNfREVGVU4oW2dsX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdLAotLVsKLS0gIGRubCBXZSBkb24ndCB1c2UgQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSyBhbnkgbW9yZSwgYmVjYXVzZSBpdAotLSAgZG5sIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIGluIEF1dG9jb25mIGFuZCBiZWNhdXNlIGl0IGludm9rZXMgQUNfTElCT0JKLgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2hdLAotLSAgICBbZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rXSwKLSsgICAgW2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGlua10sCi0gICAgIFtybSAtZiBjb25mdGVzdC5zeW0gY29uZnRlc3QuZmlsZQotICAgICAgZWNobyA+Y29uZnRlc3QuZmlsZQotICAgICAgaWYgdGVzdCAiJGFzX2xuX3MiID0gImxuIC1zIiAmJiBsbiAtcyBjb25mdGVzdC5maWxlIGNvbmZ0ZXN0LnN5bTsgdGhlbgotQEAgLTQ5LDIyICs0NSwyNSBAQCBBQ19ERUZVTihbZ2xfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfCi0gICAgICAgICAgICAgICAgICBoYXZlIHRvIGNvbXBpbGUgYW5kIHVzZSB0aGUgbHN0YXQgd3JhcHBlci4gICovCi0gICAgICAgICAgICAgICByZXR1cm4gbHN0YXQgKCJjb25mdGVzdC5zeW0vIiwgJnNidWYpID09IDA7Ci0gICAgICAgICAgICAgXV0pXSwKLS0gICAgICAgICBbZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXllc10sCi0tICAgICAgICAgW2dsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ub10sCi0rICAgICAgICAgW2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXNdLAotKyAgICAgICAgIFthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm9dLAotICAgICAgICAgIFsjIFdoZW4gY3Jvc3MtY29tcGlsaW5nLCBiZSBwZXNzaW1pc3RpYyBzbyB3ZSB3aWxsIGVuZCB1cCB1c2luZyB0aGUKLSAgICAgICAgICAgIyByZXBsYWNlbWVudCB2ZXJzaW9uIG9mIGxzdGF0IHRoYXQgY2hlY2tzIGZvciB0cmFpbGluZyBzbGFzaGVzIGFuZAotICAgICAgICAgICAjIGNhbGxzIGxzdGF0IGEgc2Vjb25kIHRpbWUgd2hlbiBuZWNlc3NhcnkuCi0tICAgICAgICAgIGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubwotKyAgICAgICAgICBhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KLSAgICAgICAgICBdKQotICAgICAgZWxzZQotICAgICAgICAjIElmIHRoZSAnbG4gLXMnIGNvbW1hbmQgZmFpbGVkLCB0aGVuIHdlIHByb2JhYmx5IGRvbid0IGV2ZW4KLSAgICAgICAgIyBoYXZlIGFuIGxzdGF0IGZ1bmN0aW9uLgotLSAgICAgICBnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KLSsgICAgICAgYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vCi0gICAgICBmaQotICAgICAgcm0gLWYgY29uZnRlc3Quc3ltIGNvbmZ0ZXN0LmZpbGUKLSAgICAgXSkKLS0gIHRlc3QgJGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgotKyAgdGVzdCAkYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rID0geWVzICYmCi0gICAgIEFDX0RFRklORV9VTlFVT1RFRChbTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdLCBbMV0sCi0gICAgICAgW0RlZmluZSB0byAxIGlmIGBsc3RhdCcgZGVyZWZlcmVuY2VzIGEgc3ltbGluayBzcGVjaWZpZWQKLSAgICAgICAgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLl0pCi0rICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPSB4bm87IHRoZW4KLSsgICAgQUNfTElCT0JKKFtsc3RhdF0pCi0rICBmaQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbWVtbW92ZS5tNCBsaWJpY29udi0xLjE0L3NyY200L21lbW1vdmUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbWVtbW92ZS5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvbWVtbW92ZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjczODQ4NDQ3NyAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBtZW1tb3ZlLm00IHNlcmlhbCA0Ci0rIyBtZW1tb3ZlLm00IHNlcmlhbCAzCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMiwgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTYsNyArNiwxMCBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gCi0gQUNfREVGVU4oW2dsX0ZVTkNfTUVNTU9WRV0sCi0gWwotLSAgQUNfQ0hFQ0tfRlVOQ1MoW21lbW1vdmVdKQotKyAgQUNfUkVQTEFDRV9GVU5DUyhbbWVtbW92ZV0pCi0rICBpZiB0ZXN0ICRhY19jdl9mdW5jX21lbW1vdmUgPSBubzsgdGhlbgotKyAgICBnbF9QUkVSRVFfTUVNTU9WRQotKyAgZmkKLSBdKQotIAotICMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvbWVtbW92ZS5jLgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BhdGhtYXgubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9wYXRobWF4Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BhdGhtYXgubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3BhdGhtYXgubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43NTg0ODQ0NzggLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcGF0aG1heC5tNCBzZXJpYWwgOQotKyMgcGF0aG1heC5tNCBzZXJpYWwgOAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwNS0yMDA2LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIGRubCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1AQCAtOCw1ICs4LDYgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIEFDX0RFRlVOKFtnbF9QQVRITUFYXSwKLSBbCi0gICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBsaWIvcGF0aG1heC5oLgotKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbcGF0aGNvbmZdKQotICAgQUNfQ0hFQ0tfSEVBREVSU19PTkNFKFtzeXMvcGFyYW0uaF0pCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9wby5tNCBsaWJpY29udi0xLjE0L3NyY200L3BvLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BvLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9wby5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc2NjQ4NDQ3NyAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBwby5tNCBzZXJpYWwgMTdhCi0rIyBwby5tNCBzZXJpYWwgMTcgKGdldHRleHQtMC4xOCkKLSBkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTE4LDggKzExOCw3IEBAIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KLSAgICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklMRVMiCi0gICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgotLSAgICAgICAgICBndF90YWI9YHByaW50ZiAnXHQnYAotLSAgICAgICAgICBjYXQgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiIgfCBzZWQgLWUgIi9eIy9kIiAtZSAiL15bICR7Z3RfdGFifV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxcXFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIKLSsgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAJXSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgotICAgICAgICAgICBQT01BS0VGSUxFREVQUz0iUE9URklMRVMuaW4iCi0gICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCi0gICAgICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KLUBAIC0yNTUsNyArMjU0LDYgQEAgRU9UCi0gICBmaQotIAotICAgIyBBIHNlZCBzY3JpcHQgdGhhdCBleHRyYWN0cyB0aGUgdmFsdWUgb2YgVkFSSUFCTEUgZnJvbSBhIE1ha2VmaWxlLgotLSAgdGFiPWBwcmludGYgJ1x0J2AKLSAgIHNlZF94X3ZhcmlhYmxlPScKLSAjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0geAotQEAgLTI2Myw5ICsyNjEsOSBAQCBzL1AvUC8KLSB4Ci0gdGEKLSAjIFllcyBpdCB3YXMgZW1wdHkuIExvb2sgaWYgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbi4KLS0vXlsnIiR7dGFifSInIF0qVkFSSUFCTEVbJyIke3RhYn0iJyBdKj0vewotKy9eWwkgXSpWQVJJQUJMRVsJIF0qPS97Ci0gICAjIFNlZW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0tICBzL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9Ly8KLSsgIHMvXlsJIF0qVkFSSUFCTEVbCSBdKj0vLwotICAgYmEKLSB9Ci0gYmQKLUBAIC00MDcsMTUgKzQwNSwxNCBAQCBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBmaQotIAotICAgc2VkIC1lICJzfEBQT1RGSUxFU19ERVBTQHwkUE9URklMRVNfREVQU3xnIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QFBST1BFUlRJRVNGSUxFU0B8JFBST1BFUlRJRVNGSUxFU3xnIiAtZSAic3xAQ0xBU1NGSUxFU0B8JENMQVNTRklMRVN8ZyIgLWUgInN8QFFNRklMRVNAfCRRTUZJTEVTfGciIC1lICJzfEBNU0dGSUxFU0B8JE1TR0ZJTEVTfGciIC1lICJzfEBSRVNPVVJDRVNETExGSUxFU0B8JFJFU09VUkNFU0RMTEZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBKQVZBQ0FUQUxPR1NAfCRKQVZBQ0FUQUxPR1N8ZyIgLWUgInN8QFFUQ0FUQUxPR1NAfCRRVENBVEFMT0dTfGciIC1lICJzfEBUQ0xDQVRBTE9HU0B8JFRDTENBVEFMT0dTfGciIC1lICJzfEBDU0hBUlBDQVRBTE9HU0B8JENTSEFSUENBVEFMT0dTfGciIC1lICdzLF4jZGlzdGRpcjosZGlzdGRpcjosJyA8ICIkYWNfZmlsZSIgPiAiJGFjX2ZpbGUudG1wIgotLSAgdGFiPWBwcmludGYgJ1x0J2AKLSAgIGlmIGdyZXAgLWwgJ0BUQ0xDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCi0gICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSAgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotICAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgotICRmcm9iYmVkbGFuZy5tc2c6ICRsYW5nLnBvCi0tJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCi0tJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotKwlAZWNobyAiXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotIEVPRgotICAgICBkb25lCi0gICBmaQotQEAgLTQyNSw4ICs0MjIsOCBAQCBFT0YKLSAgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKLSAgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLSAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsOiAkbGFuZy5wbwotLSR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCi0tJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSBFT0YKLSAgICAgZG9uZQotICAgZmkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkbGluay5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlYWRsaW5rLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlYWRsaW5rLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWFkbGluay5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc5MDQ4NDQ3OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWFkbGluay5tNCBzZXJpYWwgMTEKLSsjIHJlYWRsaW5rLm00IHNlcmlhbCAxMAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xMCw2ICsxMCw4IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1JFQURMSU5LXSwKLSAgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3JlYWRsaW5rXSkKLSAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfcmVhZGxpbmsgPSBubzsgdGhlbgotICAgICBIQVZFX1JFQURMSU5LPTAKLSsgICAgQUNfTElCT0JKKFtyZWFkbGlua10pCi0rICAgIGdsX1BSRVJFUV9SRUFETElOSwotICAgZWxzZQotICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciByZWFkbGluayBzaWduYXR1cmUgaXMgY29ycmVjdF0sCi0gICAgICAgW2dsX2N2X2RlY2xfcmVhZGxpbmtfd29ya3NdLAotQEAgLTM4LDggKzQwLDEwIEBAIEFDX0RFRlVOKFtnbF9GVU5DX1JFQURMSU5LXSwKLSAgICAgICBBQ19ERUZJTkUoW1JFQURMSU5LX1RSQUlMSU5HX1NMQVNIX0JVR10sIFsxXSwgW0RlZmluZSB0byAxIGlmIHJlYWRsaW5rCi0gICAgICAgICBmYWlscyB0byByZWNvZ25pemUgYSB0cmFpbGluZyBzbGFzaC5dKQotICAgICAgIFJFUExBQ0VfUkVBRExJTks9MQotKyAgICAgIEFDX0xJQk9CSihbcmVhZGxpbmtdKQotICAgICBlbGlmIHRlc3QgIiRnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBSRVBMQUNFX1JFQURMSU5LPTEKLSsgICAgICBBQ19MSUJPQkooW3JlYWRsaW5rXSkKLSAgICAgZmkKLSAgIGZpCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkLm00IGxpYmljb252LTEuMTQvc3JjbTQvcmVhZC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWFkLm00CTIwMTItMDEtMDggMDI6MDc6NDAuNzgyNDg0NDc4IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHJlYWQubTQgc2VyaWFsIDIKLSsjIHJlYWQubTQgc2VyaWFsIDEKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTE0LDYgKzE0LDcgQEAgQUNfREVGVU4oW2dsX0ZVTkNfUkVBRF0sCi0gICAgIGdsX05PTkJMT0NLSU5HX0lPCi0gICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfbm9uYmxvY2tpbmcgIT0geWVzOyB0aGVuCi0gICAgICAgUkVQTEFDRV9SRUFEPTEKLSsgICAgICBBQ19MSUJPQkooW3JlYWRdKQotICAgICBmaQotICAgXSkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS1saWIubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc5ODQ4NDQ4MCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWxvY2F0YWJsZS1saWIubTQgc2VyaWFsIDYKLSsjIHJlbG9jYXRhYmxlLWxpYi5tNCBzZXJpYWwgNQotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUtMjAwNywgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTEwLDYgKzEwLDkgQEAgZG5sIFN1cHBvcnQgZm9yIHJlbG9jYXRhYmxlIGxpYnJhcmllcy4KLSBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV0sCi0gWwotICAgQUNfUkVRVUlSRShbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9CT0RZXSkKLSsgIGlmIHRlc3QgJFJFTE9DQVRBQkxFID0geWVzOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbcmVsb2NhdGFibGVdKQotKyAgZmkKLSBdKQotIEFDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX0JPRFldLAotIFsKLUBAIC0yOSw2ICszMiwxMyBAQCBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9CT0RZXSwKLSAgIGZpCi0gXSkKLSAKLStkbmwgTGlrZSBnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZLCBleGNlcHQgcHJlcGFyZSBmb3Igc2VwYXJhdGUgY29tcGlsYXRpb24KLStkbmwgKG5vIEFDX0xJQk9CSikuCi0rQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfU0VQQVJBVEVdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfQk9EWV0pCi0rXSkKLSsKLSBkbmwgU3VwcG9ydCBmb3IgcmVsb2NhdGFibGUgcGFja2FnZXMgZm9yIHdoaWNoIGl0IGlzIGEgbm9wLgotIEFDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV9OT1BdLAotIFsKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlbG9jYXRhYmxlLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWxvY2F0YWJsZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjgwMjQ4NDQ3OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWxvY2F0YWJsZS5tNCBzZXJpYWwgMTcKLSsjIHJlbG9jYXRhYmxlLm00IHNlcmlhbCAxNgotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUtMjAwNywgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTE0LDYgKzE0LDkgQEAgQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFXSwKLSBbCi0gICBBQ19SRVFVSVJFKFtnbF9SRUxPQ0FUQUJMRV9CT0RZXSkKLSAgIGdsX1JFTE9DQVRBQkxFX0xJQlJBUlkKLSsgIGlmIHRlc3QgJFJFTE9DQVRBQkxFID0geWVzOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbcHJvZ3JlbG9jXSkKLSsgIGZpCi0gICA6ICR7UkVMT0NBVEFCTEVfQ09ORklHX0hfRElSPSckKHRvcF9idWlsZGRpciknfQotICAgUkVMT0NBVEFCTEVfU1JDX0RJUj0iXCQodG9wX3NyY2RpcikvJGdsX3NvdXJjZV9iYXNlIgotICAgUkVMT0NBVEFCTEVfQlVJTERfRElSPSJcJCh0b3BfYnVpbGRkaXIpLyRnbF9zb3VyY2VfYmFzZSIKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zYWZlLXJlYWQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zYWZlLXJlYWQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2FmZS1yZWFkLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zYWZlLXJlYWQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44MTA0ODQ0ODAgLTA4MDAKLUBAIC0xLDEwICsxLDE3IEBACi0tIyBzYWZlLXJlYWQubTQgc2VyaWFsIDYKLSsjIHNhZmUtcmVhZC5tNCBzZXJpYWwgNQotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwNS0yMDA2LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIGRubCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0gZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLStBQ19ERUZVTihbZ2xfU0FGRV9SRUFEXSwKLStbCi0rICBBQ19MSUJPQkooW3NhZmUtcmVhZF0pCi0rCi0rICBnbF9QUkVSRVFfU0FGRV9SRUFECi0rXSkKLSsKLSAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3NhZmUtcmVhZC5jLgotIEFDX0RFRlVOKFtnbF9QUkVSRVFfU0FGRV9SRUFEXSwKLSBbCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2V0ZW52Lm00IGxpYmljb252LTEuMTQvc3JjbTQvc2V0ZW52Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NldGVudi5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc2V0ZW52Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuODE4NDg0NDgxIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNldGVudi5tNCBzZXJpYWwgMjQKLSsjIHNldGVudi5tNCBzZXJpYWwgMjIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDQsIDIwMDYtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0zOCw2ICszOCw5IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1NFVEVOVl0sCi0gICAgICAgUkVQTEFDRV9TRVRFTlY9MQotICAgICBmaQotICAgZmkKLSsgIGlmIHRlc3QgJEhBVkVfU0VURU5WJFJFUExBQ0VfU0VURU5WICE9IDEwOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbc2V0ZW52XSkKLSsgIGZpCi0gXSkKLSAKLSAjIExpa2UgZ2xfRlVOQ19TRVRFTlYsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbgotQEAgLTYyLDkgKzY1LDkgQEAgQUNfREVGVU4oW2dsX0ZVTkNfVU5TRVRFTlZdLAotICAgZmkKLSAgIEFDX0NIRUNLX0ZVTkNTKFt1bnNldGVudl0pCi0gICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Vuc2V0ZW52ID0gbm87IHRoZW4KLS0gICAgSEFWRV9VTlNFVEVOVj0wCi0rICAgIEFDX0xJQk9CSihbdW5zZXRlbnZdKQotKyAgICBnbF9QUkVSRVFfVU5TRVRFTlYKLSAgIGVsc2UKLS0gICAgSEFWRV9VTlNFVEVOVj0xCi0gICAgIGRubCBTb21lIEJTRHMgcmV0dXJuIHZvaWQsIGZhaWxpbmcgdG8gZG8gZXJyb3IgY2hlY2tpbmcuCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdW5zZXRlbnYoKSByZXR1cm4gdHlwZV0sIFtndF9jdl9mdW5jX3Vuc2V0ZW52X3JldF0sCi0gICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAotQEAgLTkwLDYgKzkzLDcgQEAgaW50IHVuc2V0ZW52KCk7Ci0gICAgICAgQUNfREVGSU5FKFtWT0lEX1VOU0VURU5WXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgdW5zZXRlbnYgcmV0dXJucyB2b2lkCi0gICAgICAgIGluc3RlYWQgb2YgaW50Ll0pCi0gICAgICAgUkVQTEFDRV9VTlNFVEVOVj0xCi0rICAgICAgQUNfTElCT0JKKFt1bnNldGVudl0pCi0gICAgIGZpCi0gCi0gICAgIGRubCBTb2xhcmlzIDEwIHVuc2V0ZW52IGRvZXMgbm90IHJlbW92ZSBhbGwgY29waWVzIG9mIGEgbmFtZS4KLUBAIC0xMjIsNiArMTI2LDcgQEAgaW50IHVuc2V0ZW52KCk7Ci0gICAgICAgW2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3M9Imd1ZXNzaW5nIG5vIl0pXSkKLSAgICAgaWYgdGVzdCAiJGdsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3MiICE9IHllczsgdGhlbgotICAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQotKyAgICAgIEFDX0xJQk9CSihbdW5zZXRlbnZdKQotICAgICBmaQotICAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NpZ25hbGJsb2NraW5nLm00IGxpYmljb252LTEuMTQvc3JjbTQvc2lnbmFsYmxvY2tpbmcubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2lnbmFsYmxvY2tpbmcubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3NpZ25hbGJsb2NraW5nLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODM0NDg0NDgyIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNpZ25hbGJsb2NraW5nLm00IHNlcmlhbCAxMgotKyMgc2lnbmFsYmxvY2tpbmcubTQgc2VyaWFsIDEwCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTIsMTQgKzEyLDMxIEBAIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG8KLSBBQ19ERUZVTihbZ2xfU0lHTkFMQkxPQ0tJTkddLAotIFsKLSAgIEFDX1JFUVVJUkUoW2dsX1NJR05BTF9IX0RFRkFVTFRTXSkKLS0gIEFDX1JFUVVJUkUoW2dsX0NIRUNLX1RZUEVfU0lHU0VUX1RdKQotLSAgaWYgdGVzdCAkZ2xfY3ZfdHlwZV9zaWdzZXRfdCA9IHllczsgdGhlbgotKyAgc2lnbmFsc19ub3RfcG9zaXg9Ci0rICBBQ19FR1JFUF9IRUFERVIoW3NpZ3NldF90XSwgW3NpZ25hbC5oXSwgLCBbc2lnbmFsc19ub3RfcG9zaXg9MV0pCi0rICBpZiB0ZXN0IC16ICIkc2lnbmFsc19ub3RfcG9zaXgiOyB0aGVuCi0gICAgIEFDX0NIRUNLX0ZVTkMoW3NpZ3Byb2NtYXNrXSwgW2dsX2N2X2Z1bmNfc2lncHJvY21hc2s9MV0pCi0gICBmaQotICAgaWYgdGVzdCAteiAiJGdsX2N2X2Z1bmNfc2lncHJvY21hc2siOyB0aGVuCi0gICAgIEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkc9MAotKyAgICBBQ19MSUJPQkooW3NpZ3Byb2NtYXNrXSkKLSsgICAgZ2xfUFJFUkVRX1NJR1BST0NNQVNLCi0gICBmaQotIF0pCi0gCi0tIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zaWdwcm9jbWFzay5jLgotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU0lHUFJPQ01BU0tdLCBbOl0pCi0rIyBQcmVyZXF1aXNpdGVzIG9mIHRoZSBwYXJ0IG9mIGxpYi9zaWduYWwuaW4uaCBhbmQgb2YgbGliL3NpZ3Byb2NtYXNrLmMuCi0rQUNfREVGVU4oW2dsX1BSRVJFUV9TSUdQUk9DTUFTS10sCi0rWwotKyAgQUNfUkVRVUlSRShbZ2xfU0lHTkFMX0hfREVGQVVMVFNdKQotKyAgQUNfQ0hFQ0tfVFlQRVMoW3NpZ3NldF90XSwKLSsgICAgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9eWVzXSwgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9bm9dLAotKyAgICBbI2luY2x1ZGUgPHNpZ25hbC5oPgotKy8qIE1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSkKLSsgIGlmIHRlc3QgJGdsX2N2X3R5cGVfc2lnc2V0X3QgIT0geWVzOyB0aGVuCi0rICAgIEhBVkVfU0lHU0VUX1Q9MAotKyAgZmkKLSsgIGRubCBIQVZFX1NJR1NFVF9UIGlzIDEgaWYgdGhlIHN5c3RlbSBsYWNrcyB0aGUgc2lncHJvY21hc2sgZnVuY3Rpb24gYnV0IGhhcwotKyAgZG5sIHRoZSBzaWdzZXRfdCB0eXBlLgotKyAgQUNfU1VCU1QoW0hBVkVfU0lHU0VUX1RdKQotK10pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2lnbmFsX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zaWduYWxfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zaWduYWxfaC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc2lnbmFsX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44MjY0ODQ0ODAgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2lnbmFsX2gubTQgc2VyaWFsIDE2Ci0rIyBzaWduYWxfaC5tNCBzZXJpYWwgMTIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtNyw3ICs3LDYgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF0sCi0gWwotICAgQUNfUkVRVUlSRShbZ2xfU0lHTkFMX0hfREVGQVVMVFNdKQotLSAgQUNfUkVRVUlSRShbZ2xfQ0hFQ0tfVFlQRV9TSUdTRVRfVF0pCi0gICBnbF9ORVhUX0hFQURFUlMoW3NpZ25hbC5oXSkKLSAKLSAjIEFJWCBkZWNsYXJlcyBzaWdfYXRvbWljX3QgdG8gYWxyZWFkeSBpbmNsdWRlIHZvbGF0aWxlLCBhbmQgQzg5IGNvbXBpbGVycwotQEAgLTI4LDI1ICsyNywxMCBAQCBBQ19ERUZVTihbZ2xfU0lHTkFMX0hdLAotICAgZG5sIENoZWNrIGZvciBkZWNsYXJhdGlvbnMgb2YgYW55dGhpbmcgd2Ugd2FudCB0byBwb2lzb24gaWYgdGhlCi0gICBkbmwgY29ycmVzcG9uZGluZyBnbnVsaWIgbW9kdWxlIGlzIG5vdCBpbiB1c2UuCi0gICBnbF9XQVJOX09OX1VTRV9QUkVQQVJFKFtbI2luY2x1ZGUgPHNpZ25hbC5oPgotLSAgICBdXSwgW3B0aHJlYWRfc2lnbWFzayBzaWdhY3Rpb24KLS0gICAgc2lnYWRkc2V0IHNpZ2RlbHNldCBzaWdlbXB0eXNldCBzaWdmaWxsc2V0IHNpZ2lzbWVtYmVyCi0rICAgIF1dLCBbc2lnYWN0aW9uIHNpZ2FkZHNldCBzaWdkZWxzZXQgc2lnZW1wdHlzZXQgc2lnZmlsbHNldCBzaWdpc21lbWJlcgotICAgICBzaWdwZW5kaW5nIHNpZ3Byb2NtYXNrXSkKLSBdKQotIAotLUFDX0RFRlVOKFtnbF9DSEVDS19UWVBFX1NJR1NFVF9UXSwKLS1bCi0tICBBQ19DSEVDS19UWVBFUyhbc2lnc2V0X3RdLAotLSAgICBbZ2xfY3ZfdHlwZV9zaWdzZXRfdD15ZXNdLCBbZ2xfY3ZfdHlwZV9zaWdzZXRfdD1ub10sCi0tICAgIFtbCi0tICAgICAgI2luY2x1ZGUgPHNpZ25hbC5oPgotLSAgICAgIC8qIE1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLS0gICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tICAgIF1dKQotLSAgaWYgdGVzdCAkZ2xfY3ZfdHlwZV9zaWdzZXRfdCAhPSB5ZXM7IHRoZW4KLS0gICAgSEFWRV9TSUdTRVRfVD0wCi0tICBmaQotLV0pCi0tCi0gQUNfREVGVU4oW2dsX1NJR05BTF9NT0RVTEVfSU5ESUNBVE9SXSwKLSBbCi0gICBkbmwgVXNlIEFDX1JFUVVJUkUgaGVyZSwgc28gdGhhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgZXhwYW5kZWQgb25jZSBvbmx5LgotQEAgLTU4LDEzICs0MiwxMSBAQCBBQ19ERUZVTihbZ2xfU0lHTkFMX01PRFVMRV9JTkRJQ0FUT1JdLAotIAotIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF9ERUZBVUxUU10sCi0gWwotLSAgR05VTElCX1BUSFJFQURfU0lHTUFTSz0wOyAgICBBQ19TVUJTVChbR05VTElCX1BUSFJFQURfU0lHTUFTS10pCi0gICBHTlVMSUJfU0lHTkFMX0hfU0lHUElQRT0wOyAgIEFDX1NVQlNUKFtHTlVMSUJfU0lHTkFMX0hfU0lHUElQRV0pCi0gICBHTlVMSUJfU0lHUFJPQ01BU0s9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfU0lHUFJPQ01BU0tdKQotICAgR05VTElCX1NJR0FDVElPTj0wOyAgICAgICAgICBBQ19TVUJTVChbR05VTElCX1NJR0FDVElPTl0pCi0gICBkbmwgQXNzdW1lIHByb3BlciBHTlUgYmVoYXZpb3IgdW5sZXNzIGFub3RoZXIgbW9kdWxlIHNheXMgb3RoZXJ3aXNlLgotICAgSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lORz0xOyBBQ19TVUJTVChbSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lOR10pCi0tICBIQVZFX1BUSFJFQURfU0lHTUFTSz0xOyAgICAgIEFDX1NVQlNUKFtIQVZFX1BUSFJFQURfU0lHTUFTS10pCi0gICBIQVZFX1NJR1NFVF9UPTE7ICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1NJR1NFVF9UXSkKLSAgIEhBVkVfU0lHSU5GT19UPTE7ICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHSU5GT19UXSkKLSAgIEhBVkVfU0lHQUNUSU9OPTE7ICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHQUNUSU9OXSkKLUBAIC03Myw1ICs1NSw0IEBAIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF9ERUZBVUxUU10sCi0gICBIQVZFX1RZUEVfVk9MQVRJTEVfU0lHX0FUT01JQ19UPTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1RZUEVfVk9MQVRJTEVfU0lHX0FUT01JQ19UXSkKLSAgIEhBVkVfU0lHSEFORExFUl9UPTE7ICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHSEFORExFUl9UXSkKLS0gIFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLPTA7ICAgQUNfU1VCU1QoW1JFUExBQ0VfUFRIUkVBRF9TSUdNQVNLXSkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0YXQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zdGF0Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0YXQubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N0YXQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44NTQ0ODQ0ODMgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDgKLSsjIHNlcmlhbCA3Ci0gCi0gIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi1AQCAtNTgsMTEgKzU4LDkgQEAgQUNfREVGVU4oW2dsX0ZVTkNfU1RBVF0sCi0gICAgICAgQUNfREVGSU5FKFtSRVBMQUNFX0ZVTkNfU1RBVF9GSUxFXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgc3RhdCBuZWVkcwotICAgICAgICAgaGVscCB3aGVuIHBhc3NlZCBhIGZpbGUgbmFtZSB3aXRoIGEgdHJhaWxpbmcgc2xhc2hdKTs7Ci0gICBlc2FjCi0tXSkKLS0KLS0jIFByZXJlcXVpc2l0ZXMgb2YgbGliL3N0YXQuYy4KLS1BQ19ERUZVTihbZ2xfUFJFUkVRX1NUQVRdLAotLVsKLS0gIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLS0gIDoKLSsgIGlmIHRlc3QgJFJFUExBQ0VfU1RBVCA9IDE7IHRoZW4KLSsgICAgQUNfTElCT0JKKFtzdGF0XSkKLSsgICAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGliL3N0YXQuYy4KLSsgICAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotKyAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0cmVycm9yLm00IGxpYmljb252LTEuMTQvc3JjbTQvc3RyZXJyb3IubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3RyZXJyb3IubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N0cmVycm9yLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODkwNDg0NDg0IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHN0cmVycm9yLm00IHNlcmlhbCAxNgotKyMgc3RyZXJyb3IubTQgc2VyaWFsIDkKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA3LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtNiw3MyArNiw2MyBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gCi0gQUNfREVGVU4oW2dsX0ZVTkNfU1RSRVJST1JdLAotIFsKLSsgIEFDX1JFUVVJUkUoW2dsX0ZVTkNfU1RSRVJST1JfU0VQQVJBVEVdKQotKyAgaWYgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUiA9IDE7IHRoZW4KLSsgICAgQUNfTElCT0JKKFtzdHJlcnJvcl0pCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChbUkVQTEFDRV9TVFJFUlJPUl0sIFskUkVQTEFDRV9TVFJFUlJPUl0sCi0rICAgICAgW0RlZmluZSB0aGlzIHRvIDEgaWYgc3RyZXJyb3IgaXMgYnJva2VuLl0pCi0rICBmaQotK10pCi0rCi0rIyBMaWtlIGdsX0ZVTkNfU1RSRVJST1IsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbiAobm8gQUNfTElCT0JKKS4KLStBQ19ERUZVTihbZ2xfRlVOQ19TVFJFUlJPUl9TRVBBUkFURV0sCi0rWwotICAgQUNfUkVRVUlSRShbZ2xfSEVBREVSX1NUUklOR19IX0RFRkFVTFRTXSkKLSAgIEFDX1JFUVVJUkUoW2dsX0hFQURFUl9FUlJOT19IXSkKLS0gIEFDX1JFUVVJUkUoW2dsX0ZVTkNfU1RSRVJST1JfMF0pCi0tICBtNF9pZmRlZihbZ2xfRlVOQ19TVFJFUlJPUl9SX1dPUktTXSwgWwotLSAgICBBQ19SRVFVSVJFKFtnbF9GVU5DX1NUUkVSUk9SX1JfV09SS1NdKQotLSAgXSkKLS0gIGlmIHRlc3QgIiRFUlJOT19IOiRSRVBMQUNFX1NUUkVSUk9SXzAiID0gOjA7IHRoZW4KLSsgIGlmIHRlc3QgLXogIiRFUlJOT19IIjsgdGhlbgotICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgc3RyZXJyb3IgZnVuY3Rpb25dLAotICAgICAgW2dsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcl0sCi0gICAgICBbQUNfUlVOX0lGRUxTRSgKLSAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0gICAgICAgICAgICBbWyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAgICAgICAgICAgIF1dLAotLSAgICAgICAgICAgW1tpZiAoISpzdHJlcnJvciAoLTIpKSByZXR1cm4gMTtdXSldLAotKyAgICAgICAgICAgW1tyZXR1cm4gISpzdHJlcnJvciAoLTIpO11dKV0sCi0gICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPXllc10sCi0gICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPW5vXSwKLS0gICAgICAgIFtkbmwgQmUgcGVzc2ltaXN0aWMgb24gY3Jvc3MtY29tcGlsZXMgZm9yIG5vdy4KLS0gICAgICAgICBnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9Imd1ZXNzaW5nIG5vIl0pCi0rICAgICAgICBbZG5sIEFzc3VtZSBjcm9zc2J1aWxkIHdvcmtzIGlmIGl0IGNvbXBpbGVzLgotKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotKyAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKLSsgICAgICAgICAgICAgIFtbI2luY2x1ZGUgPHN0cmluZy5oPgotKyAgICAgICAgICAgICAgXV0sCi0rICAgICAgICAgICAgICBbW3JldHVybiAhKnN0cmVycm9yICgtMik7XV0pXSwKLSsgICAgICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9eWVzXSwKLSsgICAgICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9bm9dKQotKyAgICAgIF0pCi0gICAgIF0pCi0tICAgIGlmIHRlc3QgIiRnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3IiICE9IHllczsgdGhlbgotKyAgICBpZiB0ZXN0ICRnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3IgPSBubzsgdGhlbgotICAgICAgIGRubCBUaGUgc3lzdGVtJ3Mgc3RyZXJyb3IoKSBmYWlscyB0byByZXR1cm4gYSBzdHJpbmcgZm9yIG91dC1vZi1yYW5nZQotICAgICAgIGRubCBpbnRlZ2Vycy4gUmVwbGFjZSBpdC4KLSAgICAgICBSRVBMQUNFX1NUUkVSUk9SPTEKLSAgICAgZmkKLS0gICAgbTRfaWZkZWYoW2dsX0ZVTkNfU1RSRVJST1JfUl9XT1JLU10sIFsKLS0gICAgICBkbmwgSWYgdGhlIHN5c3RlbSdzIHN0cmVycm9yX3Igb3IgX194cGdfc3RyZXJyb3JfciBjbG9iYmVycyBzdHJlcnJvcidzCi0tICAgICAgZG5sIGJ1ZmZlciwgd2UgbXVzdCByZXBsYWNlIHN0cmVycm9yLgotLSAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX3N0cmVycm9yX3Jfd29ya3MiIGluCi0tICAgICAgICAqbm8pIFJFUExBQ0VfU1RSRVJST1I9MSA7OwotLSAgICAgIGVzYWMKLS0gICAgXSkKLSAgIGVsc2UKLSAgICAgZG5sIFRoZSBzeXN0ZW0ncyBzdHJlcnJvcigpIGNhbm5vdCBrbm93IGFib3V0IHRoZSBuZXcgZXJybm8gdmFsdWVzIHdlIGFkZAotLSAgICBkbmwgdG8gPGVycm5vLmg+LCBvciBhbnkgZml4IGZvciBzdHJlcnJvcigwKS4gUmVwbGFjZSBpdC4KLSsgICAgZG5sIHRvIDxlcnJuby5oPi4gUmVwbGFjZSBpdC4KLSAgICAgUkVQTEFDRV9TVFJFUlJPUj0xCi0gICBmaQotKyAgaWYgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUiA9IDE7IHRoZW4KLSsgICAgZ2xfUFJFUkVRX1NUUkVSUk9SCi0rICBmaQotIF0pCi0gCi0tZG5sIERldGVjdCBpZiBzdHJlcnJvcigwKSBwYXNzZXMgKHRoYXQgaXMsIGRvZXMgbm90IHNldCBlcnJubywgYW5kIGRvZXMgbm90Ci0tZG5sIHJldHVybiBhIHN0cmluZyB0aGF0IG1hdGNoZXMgc3RyZXJyb3IoLTEpKS4KLS1BQ19ERUZVTihbZ2xfRlVOQ19TVFJFUlJPUl8wXSwKLS1bCi0tICBSRVBMQUNFX1NUUkVSUk9SXzA9MAotLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgc3RyZXJyb3IoMCkgc3VjY2VlZHNdLAotLSAgIFtnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3NdLAotLSAgIFtBQ19SVU5fSUZFTFNFKAotLSAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0tICAgICAgICAgW1sjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tICAgICAgICAgICAjaW5jbHVkZSA8ZXJybm8uaD4KLS0gICAgICAgICBdXSwKLS0gICAgICAgICBbW2ludCByZXN1bHQgPSAwOwotLSAgICAgICAgICAgY2hhciAqc3RyOwotLSAgICAgICAgICAgZXJybm8gPSAwOwotLSAgICAgICAgICAgc3RyID0gc3RyZXJyb3IgKDApOwotLSAgICAgICAgICAgaWYgKCEqc3RyKSByZXN1bHQgfD0gMTsKLS0gICAgICAgICAgIGlmIChlcnJubykgcmVzdWx0IHw9IDI7Ci0tICAgICAgICAgICBpZiAoc3Ryc3RyIChzdHIsICJua25vd24iKSB8fCBzdHJzdHIgKHN0ciwgIm5kZWZpbmVkIikpCi0tICAgICAgICAgICAgIHJlc3VsdCB8PSA0OwotLSAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtdXSldLAotLSAgICAgIFtnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3M9eWVzXSwKLS0gICAgICBbZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzPW5vXSwKLS0gICAgICBbZG5sIEJlIHBlc3NpbWlzdGljIG9uIGNyb3NzLWNvbXBpbGVzIGZvciBub3cuCi0tICAgICAgIGdsX2N2X2Z1bmNfc3RyZXJyb3JfMF93b3Jrcz0iZ3Vlc3Npbmcgbm8iXSkKLS0gIF0pCi0tICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLS0gICAgUkVQTEFDRV9TVFJFUlJPUl8wPTEKLS0gICAgQUNfREVGSU5FKFtSRVBMQUNFX1NUUkVSUk9SXzBdLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiBzdHJlcnJvcigwKQotLSAgICAgIGRvZXMgbm90IHJldHVybiBhIG1lc3NhZ2UgaW1wbHlpbmcgc3VjY2Vzcy5dKQotKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvc3RyZXJyb3IuYy4KLStBQ19ERUZVTihbZ2xfUFJFUkVRX1NUUkVSUk9SXSwgWwotKyAgQUNfQ0hFQ0tfREVDTFMoW3N0cmVycm9yXSkKLSsgIEFDX0NIRUNLX0hFQURFUlNfT05DRShbc3lzL3NvY2tldC5oXSkKLSsgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2ggIT0geWVzOyB0aGVuCi0rICAgIGRubCBXZSBjYW5ub3QgdXNlIEFDX0NIRUNLX0hFQURFUlNfT05DRSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZQotKyAgICBkbmwgdGhlIGNoZWNrIGZvciB0aG9zZSBoZWFkZXJzIHVuY29uZGl0aW9uYWw7IHlldCBjeWd3aW4gcmVwb3J0cwotKyAgICBkbmwgdGhhdCB0aGUgaGVhZGVycyBhcmUgcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIChzaW5jZSBvbgotKyAgICBkbmwgY3lnd2luLCBhbGwgc29ja2V0IGluZm9ybWF0aW9uIHNob3VsZCBjb21lIGZyb20gc3lzL3NvY2tldC5oKS4KLSsgICAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jazIuaF0pCi0gICBmaQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3RyaW5nX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zdHJpbmdfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zdHJpbmdfaC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc3RyaW5nX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44OTQ0ODQ0ODUgLTA4MDAKLUBAIC01LDcgKzUsNyBAQAotICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLSAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCAyMQotKyMgc2VyaWFsIDIwCi0gCi0gIyBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LgotIAotQEAgLTI3LDkgKzI3LDkgQEAgQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9CT0RZXSwKLSAgIGRubCBndWFyYW50ZWVkIGJ5IEM4OS4KLSAgIGdsX1dBUk5fT05fVVNFX1BSRVBBUkUoW1sjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gICAgIF1dLAotLSAgICBbZmZzbCBmZnNsbCBtZW1tZW0gbWVtcGNweSBtZW1yY2hyIHJhd21lbWNociBzdHBjcHkgc3RwbmNweSBzdHJjaHJudWwKLS0gICAgIHN0cmR1cCBzdHJuY2F0IHN0cm5kdXAgc3RybmxlbiBzdHJwYnJrIHN0cnNlcCBzdHJjYXNlc3RyIHN0cnRva19yCi0tICAgICBzdHJlcnJvcl9yIHN0cnNpZ25hbCBzdHJ2ZXJzY21wXSkKLSsgICAgW21lbW1lbSBtZW1wY3B5IG1lbXJjaHIgcmF3bWVtY2hyIHN0cGNweSBzdHBuY3B5IHN0cmNocm51bCBzdHJkdXAKLSsgICAgIHN0cm5jYXQgc3RybmR1cCBzdHJubGVuIHN0cnBicmsgc3Ryc2VwIHN0cmNhc2VzdHIgc3RydG9rX3Igc3RyZXJyb3JfcgotKyAgICAgc3Ryc2lnbmFsIHN0cnZlcnNjbXBdKQotIF0pCi0gCi0gQUNfREVGVU4oW2dsX1NUUklOR19NT0RVTEVfSU5ESUNBVE9SXSwKLUBAIC00Myw4ICs0Myw2IEBAIEFDX0RFRlVOKFtnbF9TVFJJTkdfTU9EVUxFX0lORElDQVRPUl0sCi0gCi0gQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9ERUZBVUxUU10sCi0gWwotLSAgR05VTElCX0ZGU0w9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfRkZTTF0pCi0tICBHTlVMSUJfRkZTTEw9MDsgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9GRlNMTF0pCi0gICBHTlVMSUJfTUVNQ0hSPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9NRU1DSFJdKQotICAgR05VTElCX01FTU1FTT0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfTUVNTUVNXSkKLSAgIEdOVUxJQl9NRU1QQ1BZPTA7ICAgICBBQ19TVUJTVChbR05VTElCX01FTVBDUFldKQotQEAgLTgyLDggKzgwLDYgQEAgQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9ERUZBVUxUU10sCi0gICBHTlVMSUJfU1RSVkVSU0NNUD0wOyAgQUNfU1VCU1QoW0dOVUxJQl9TVFJWRVJTQ01QXSkKLSAgIEhBVkVfTUJTTEVOPTA7ICAgICAgICBBQ19TVUJTVChbSEFWRV9NQlNMRU5dKQotICAgZG5sIEFzc3VtZSBwcm9wZXIgR05VIGJlaGF2aW9yIHVubGVzcyBhbm90aGVyIG1vZHVsZSBzYXlzIG90aGVyd2lzZS4KLS0gIEhBVkVfRkZTTD0xOyAgICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX0ZGU0xdKQotLSAgSEFWRV9GRlNMTD0xOyAgICAgICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfRkZTTExdKQotICAgSEFWRV9NRU1DSFI9MTsgICAgICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfTUVNQ0hSXSkKLSAgIEhBVkVfREVDTF9NRU1NRU09MTsgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX0RFQ0xfTUVNTUVNXSkKLSAgIEhBVkVfTUVNUENQWT0xOyAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX01FTVBDUFldKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N5c19zb2NrZXRfaC5tNCBsaWJpY29udi0xLjE0L3NyY200L3N5c19zb2NrZXRfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zeXNfc29ja2V0X2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N5c19zb2NrZXRfaC5tNAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMTc3ICswLDAgQEAKLS0jIHN5c19zb2NrZXRfaC5tNCBzZXJpYWwgMjIKLS1kbmwgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0tZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLS0KLS1kbmwgRnJvbSBTaW1vbiBKb3NlZnNzb24uCi0tCi0tQUNfREVGVU4oW2dsX0hFQURFUl9TWVNfU09DS0VUXSwKLS1bCi0tICBBQ19SRVFVSVJFKFtnbF9TWVNfU09DS0VUX0hfREVGQVVMVFNdKQotLSAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotLSAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotLQotLSAgZG5sIE9uIE9TRi8xLCB0aGUgZnVuY3Rpb25zIHJlY3YoKSwgc2VuZCgpLCByZWN2ZnJvbSgpLCBzZW5kdG8oKSBoYXZlCi0tICBkbmwgb2xkLXN0eWxlIGRlY2xhcmF0aW9ucyAod2l0aCByZXR1cm4gdHlwZSAnaW50JyBpbnN0ZWFkIG9mICdzc2l6ZV90JykKLS0gIGRubCB1bmxlc3MgX1BPU0lYX1BJSV9TT0NLRVQgaXMgZGVmaW5lZC4KLS0gIGNhc2UgIiRob3N0X29zIiBpbgotLSAgICBvc2YqKQotLSAgICAgIEFDX0RFRklORShbX1BPU0lYX1BJSV9TT0NLRVRdLCBbMV0sCi0tICAgICAgICBbRGVmaW5lIHRvIDEgaW4gb3JkZXIgdG8gZ2V0IHRoZSBQT1NJWCBjb21wYXRpYmxlIGRlY2xhcmF0aW9ucwotLSAgICAgICAgIG9mIHNvY2tldCBmdW5jdGlvbnMuXSkKLS0gICAgICA7OwotLSAgZXNhYwotLQotLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgPHN5cy9zb2NrZXQuaD4gaXMgc2VsZi1jb250YWluZWRdLAotLSAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkXSwKLS0gICAgWwotLSAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl1dLCBbW11dKV0sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkPXllc10sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkPW5vXSkKLS0gICAgXSkKLS0gIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2VsZmNvbnRhaW5lZCA9IHllczsgdGhlbgotLSAgICBkbmwgSWYgdGhlIHNodXRkb3duIGZ1bmN0aW9uIGV4aXN0cywgPHN5cy9zb2NrZXQuaD4gc2hvdWxkIGRlZmluZQotLSAgICBkbmwgU0hVVF9SRCwgU0hVVF9XUiwgU0hVVF9SRFdSLgotLSAgICBBQ19DSEVDS19GVU5DUyhbc2h1dGRvd25dKQotLSAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX3NodXRkb3duID0geWVzOyB0aGVuCi0tICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgPHN5cy9zb2NrZXQuaD4gZGVmaW5lcyB0aGUgU0hVVF8qIG1hY3Jvc10sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0XSwKLS0gICAgICAgIFsKLS0gICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0tICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XV0sCi0tICAgICAgICAgICAgICAgW1tpbnQgYVtdID0geyBTSFVUX1JELCBTSFVUX1dSLCBTSFVUX1JEV1IgfTtdXSldLAotLSAgICAgICAgICAgIFtnbF9jdl9oZWFkZXJfc3lzX3NvY2tldF9oX3NodXQ9eWVzXSwKLS0gICAgICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0PW5vXSkKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0ID0gbm87IHRoZW4KLS0gICAgICAgIFNZU19TT0NLRVRfSD0nc3lzL3NvY2tldC5oJwotLSAgICAgIGZpCi0tICAgIGZpCi0tICBmaQotLSAgIyBXZSBuZWVkIHRvIGNoZWNrIGZvciB3czJ0Y3BpcC5oIG5vdy4KLS0gIGdsX1BSRVJFUV9TWVNfSF9TT0NLRVQKLS0gIEFDX0NIRUNLX1RZUEVTKFtzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSwgc2FfZmFtaWx5X3RdLCwsWwotLSAgLyogc3lzL3R5cGVzLmggaXMgbm90IG5lZWRlZCBhY2NvcmRpbmcgdG8gUE9TSVgsIGJ1dCB0aGUKLS0gICAgIHN5cy9zb2NrZXQuaCBpbiBpMzg2LXVua25vd24tZnJlZWJzZDQuMTAgYW5kCi0tICAgICBwb3dlcnBjLWFwcGxlLWRhcndpbjUuNSByZXF1aXJlZCBpdC4gKi8KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICi0tI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jZW5kaWYKLS0jaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICi0tI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0tI2VuZGlmCi0tXSkKLS0gIGlmIHRlc3QgJGFjX2N2X3R5cGVfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UgPSBubzsgdGhlbgotLSAgICBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFPTAKLS0gIGZpCi0tICBpZiB0ZXN0ICRhY19jdl90eXBlX3NhX2ZhbWlseV90ID0gbm87IHRoZW4KLS0gICAgSEFWRV9TQV9GQU1JTFlfVD0wCi0tICBmaQotLSAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZSAhPSBubzsgdGhlbgotLSAgICBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZS5zc19mYW1pbHldLAotLSAgICAgIFtdLAotLSAgICAgIFtIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX1NTX0ZBTUlMWT0wXSwKLS0gICAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSAgICAgICAjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKLS0gICAgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0gICAgICAgI2VuZGlmCi0tICAgICAgICNpZmRlZiBIQVZFX1dTMlRDUElQX0gKLS0gICAgICAgI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0tICAgICAgICNlbmRpZgotLSAgICAgIF0pCi0tICBmaQotLSAgaWYgdGVzdCAkSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRSA9IDAgfHwgdGVzdCAkSEFWRV9TQV9GQU1JTFlfVCA9IDAgXAotLSAgICAgfHwgdGVzdCAkSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFkgPSAwOyB0aGVuCi0tICAgIFNZU19TT0NLRVRfSD0nc3lzL3NvY2tldC5oJwotLSAgZmkKLS0gIGdsX1BSRVJFUV9TWVNfSF9XSU5TT0NLMgotLQotLSAgZG5sIENoZWNrIGZvciBkZWNsYXJhdGlvbnMgb2YgYW55dGhpbmcgd2Ugd2FudCB0byBwb2lzb24gaWYgdGhlCi0tICBkbmwgY29ycmVzcG9uZGluZyBnbnVsaWIgbW9kdWxlIGlzIG5vdCBpbiB1c2UuCi0tICBnbF9XQVJOX09OX1VTRV9QUkVQQVJFKFtbCi0tLyogU29tZSBzeXN0ZW1zIHJlcXVpcmUgcHJlcmVxdWlzaXRlIGhlYWRlcnMuICAqLwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSAgICBdXSwgW3NvY2tldCBjb25uZWN0IGFjY2VwdCBiaW5kIGdldHBlZXJuYW1lIGdldHNvY2tuYW1lIGdldHNvY2tvcHQKLS0gICAgbGlzdGVuIHJlY3Ygc2VuZCByZWN2ZnJvbSBzZW5kdG8gc2V0c29ja29wdCBzaHV0ZG93biBhY2NlcHQ0XSkKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU1lTX0hfU09DS0VUXSwKLS1bCi0tICBkbmwgQ2hlY2sgcHJlcmVxdWlzaXRlcyBvZiB0aGUgPHN5cy9zb2NrZXQuaD4gcmVwbGFjZW1lbnQuCi0tICBBQ19SRVFVSVJFKFtnbF9DSEVDS19TT0NLRVRfSEVBREVSU10pCi0tICBnbF9DSEVDS19ORVhUX0hFQURFUlMoW3N5cy9zb2NrZXQuaF0pCi0tICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvY2tldF9oID0geWVzOyB0aGVuCi0tICAgIEhBVkVfU1lTX1NPQ0tFVF9IPTEKLS0gICAgSEFWRV9XUzJUQ1BJUF9IPTAKLS0gIGVsc2UKLS0gICAgSEFWRV9TWVNfU09DS0VUX0g9MAotLSAgICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCA9IHllczsgdGhlbgotLSAgICAgIEhBVkVfV1MyVENQSVBfSD0xCi0tICAgIGVsc2UKLS0gICAgICBIQVZFX1dTMlRDUElQX0g9MAotLSAgICBmaQotLSAgZmkKLS0gIEFDX1NVQlNUKFtIQVZFX1NZU19TT0NLRVRfSF0pCi0tICBBQ19TVUJTVChbSEFWRV9XUzJUQ1BJUF9IXSkKLS1dKQotLQotLSMgQ29tbW9uIHByZXJlcXVpc2l0ZXMgb2YgdGhlIDxzeXMvc29ja2V0Lmg+IHJlcGxhY2VtZW50IGFuZCBvZiB0aGUKLS0jIDxzeXMvc2VsZWN0Lmg+IHJlcGxhY2VtZW50LgotLSMgU2V0cyBhbmQgc3Vic3RpdHV0ZXMgSEFWRV9XSU5TT0NLMl9ILgotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU1lTX0hfV0lOU09DSzJdLAotLVsKLS0gIG00X2lmZGVmKFtnbF9VTklTVERfSF9ERUZBVUxUU10sIFtBQ19SRVFVSVJFKFtnbF9VTklTVERfSF9ERUZBVUxUU10pXSkKLS0gIG00X2lmZGVmKFtnbF9TWVNfSU9DVExfSF9ERUZBVUxUU10sIFtBQ19SRVFVSVJFKFtnbF9TWVNfSU9DVExfSF9ERUZBVUxUU10pXSkKLS0gIEFDX0NIRUNLX0hFQURFUlNfT05DRShbc3lzL3NvY2tldC5oXSkKLS0gIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2ggIT0geWVzOyB0aGVuCi0tICAgIGRubCBXZSBjYW5ub3QgdXNlIEFDX0NIRUNLX0hFQURFUlNfT05DRSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZQotLSAgICBkbmwgdGhlIGNoZWNrIGZvciB0aG9zZSBoZWFkZXJzIHVuY29uZGl0aW9uYWw7IHlldCBjeWd3aW4gcmVwb3J0cwotLSAgICBkbmwgdGhhdCB0aGUgaGVhZGVycyBhcmUgcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIChzaW5jZSBvbgotLSAgICBkbmwgY3lnd2luLCBhbGwgc29ja2V0IGluZm9ybWF0aW9uIHNob3VsZCBjb21lIGZyb20gc3lzL3NvY2tldC5oKS4KLS0gICAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jazIuaF0pCi0tICBmaQotLSAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiA9IHllczsgdGhlbgotLSAgICBIQVZFX1dJTlNPQ0syX0g9MQotLSAgICBVTklTVERfSF9IQVZFX1dJTlNPQ0syX0g9MQotLSAgICBTWVNfSU9DVExfSF9IQVZFX1dJTlNPQ0syX0g9MQotLSAgZWxzZQotLSAgICBIQVZFX1dJTlNPQ0syX0g9MAotLSAgZmkKLS0gIEFDX1NVQlNUKFtIQVZFX1dJTlNPQ0syX0hdKQotLV0pCi0tCi0tQUNfREVGVU4oW2dsX1NZU19TT0NLRVRfTU9EVUxFX0lORElDQVRPUl0sCi0tWwotLSAgZG5sIFVzZSBBQ19SRVFVSVJFIGhlcmUsIHNvIHRoYXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGV4cGFuZGVkIG9uY2Ugb25seS4KLS0gIEFDX1JFUVVJUkUoW2dsX1NZU19TT0NLRVRfSF9ERUZBVUxUU10pCi0tICBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRShbJDFdKQotLSAgZG5sIERlZmluZSBpdCBhbHNvIGFzIGEgQyBtYWNybywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSB1bml0IHRlc3RzLgotLSAgZ2xfTU9EVUxFX0lORElDQVRPUl9GT1JfVEVTVFMoWyQxXSkKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9TWVNfU09DS0VUX0hfREVGQVVMVFNdLAotLVsKLS0gIEdOVUxJQl9TT0NLRVQ9MDsgICAgICBBQ19TVUJTVChbR05VTElCX1NPQ0tFVF0pCi0tICBHTlVMSUJfQ09OTkVDVD0wOyAgICAgQUNfU1VCU1QoW0dOVUxJQl9DT05ORUNUXSkKLS0gIEdOVUxJQl9BQ0NFUFQ9MDsgICAgICBBQ19TVUJTVChbR05VTElCX0FDQ0VQVF0pCi0tICBHTlVMSUJfQklORD0wOyAgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9CSU5EXSkKLS0gIEdOVUxJQl9HRVRQRUVSTkFNRT0wOyBBQ19TVUJTVChbR05VTElCX0dFVFBFRVJOQU1FXSkKLS0gIEdOVUxJQl9HRVRTT0NLTkFNRT0wOyBBQ19TVUJTVChbR05VTElCX0dFVFNPQ0tOQU1FXSkKLS0gIEdOVUxJQl9HRVRTT0NLT1BUPTA7ICBBQ19TVUJTVChbR05VTElCX0dFVFNPQ0tPUFRdKQotLSAgR05VTElCX0xJU1RFTj0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfTElTVEVOXSkKLS0gIEdOVUxJQl9SRUNWPTA7ICAgICAgICBBQ19TVUJTVChbR05VTElCX1JFQ1ZdKQotLSAgR05VTElCX1NFTkQ9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfU0VORF0pCi0tICBHTlVMSUJfUkVDVkZST009MDsgICAgQUNfU1VCU1QoW0dOVUxJQl9SRUNWRlJPTV0pCi0tICBHTlVMSUJfU0VORFRPPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9TRU5EVE9dKQotLSAgR05VTElCX1NFVFNPQ0tPUFQ9MDsgIEFDX1NVQlNUKFtHTlVMSUJfU0VUU09DS09QVF0pCi0tICBHTlVMSUJfU0hVVERPV049MDsgICAgQUNfU1VCU1QoW0dOVUxJQl9TSFVURE9XTl0pCi0tICBHTlVMSUJfQUNDRVBUND0wOyAgICAgQUNfU1VCU1QoW0dOVUxJQl9BQ0NFUFQ0XSkKLS0gIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0U9MTsgQUNfU1VCU1QoW0hBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VdKQotLSAgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFk9MTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFldKQotLSAgSEFWRV9TQV9GQU1JTFlfVD0xOyAgIEFDX1NVQlNUKFtIQVZFX1NBX0ZBTUlMWV9UXSkKLS0gIEhBVkVfQUNDRVBUND0xOyAgICAgICBBQ19TVUJTVChbSEFWRV9BQ0NFUFQ0XSkKLS1dKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3dhcm4tb24tdXNlLm00IGxpYmljb252LTEuMTQvc3JjbTQvd2Fybi1vbi11c2UubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvd2Fybi1vbi11c2UubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3dhcm4tb24tdXNlLm00CTIwMTItMDEtMDggMDI6MDc6NDAuOTM0NDg0NDg3IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHdhcm4tb24tdXNlLm00IHNlcmlhbCA0Ci0rIyB3YXJuLW9uLXVzZS5tNCBzZXJpYWwgMgotIGRubCBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0yNyw4ICsyNyw2IEBAIEFDX0RFRlVOKFtnbF9XQVJOX09OX1VTRV9QUkVQQVJFXSwKLSAgICAgW0FIX1RFTVBMQVRFKFtIQVZFX1JBV19ERUNMX11BU19UUl9DUFAobTRfZGVmbihbZ2xfZGVjbF0pKSwKLSAgICAgICBbRGVmaW5lIHRvIDEgaWYgXW00X2RlZm4oW2dsX2RlY2xdKVsgaXMgZGVjbGFyZWQgZXZlbiBhZnRlcgotICAgICAgICB1bmRlZmluaW5nIG1hY3Jvcy5dKV0pZG5sCi0tZG5sIEZJWE1FOiBnbF9TeW1ib2wgbXVzdCBiZSB1c2VkIHVucXVvdGVkIHVudGlsIHdlIGNhbiBhc3N1bWUKLS1kbmwgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSAgIGZvciBnbF9mdW5jIGluIG00X2ZsYXR0ZW4oWyQyXSk7IGRvCi0gICAgIEFTX1ZBUl9QVVNIREVGKFtnbF9TeW1ib2xdLCBbZ2xfY3ZfaGF2ZV9yYXdfZGVjbF8kZ2xfZnVuY10pZG5sCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNyb10sCi1AQCAtMzcsOCArMzUsOCBAQCBkbmwgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSBbQCU6QHVuZGVmICRnbF9mdW5jCi0gICAodm9pZCkgJGdsX2Z1bmM7XSldLAotICAgICAgICAgW0FTX1ZBUl9TRVQoZ2xfU3ltYm9sLCBbeWVzXSldLCBbQVNfVkFSX1NFVChnbF9TeW1ib2wsIFtub10pXSldKQotLSAgICBBU19WQVJfSUYoZ2xfU3ltYm9sLCBbeWVzXSwKLS0gICAgICBbQUNfREVGSU5FX1VOUVVPVEVEKEFTX1RSX0NQUChbSEFWRV9SQVdfREVDTF8kZ2xfZnVuY10pLCBbMV0pCi0rICAgICBBU19WQVJfSUYoZ2xfU3ltYm9sLCBbeWVzXSwKLSsgICAgICAgW0FDX0RFRklORV9VTlFVT1RFRChBU19UUl9DUFAoW0hBVkVfUkFXX0RFQ0xfJGdsX2Z1bmNdKSwgWzFdKQotICAgICAgICBkbmwgc2hvcnRjdXQgLSBpZiB0aGUgcmF3IGRlY2xhcmF0aW9uIGV4aXN0cywgdGhlbiBzZXQgYSBjYWNoZQotICAgICAgICBkbmwgdmFyaWFibGUgdG8gYWxsb3cgc2tpcHBpbmcgYW55IGxhdGVyIEFDX0NIRUNLX0RFQ0wgZWZmb3J0cwotICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXNdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYXV0b2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnYtMS4xNC9hdXRvY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzNGNlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnYtMS4xNC9hdXRvY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUl0IGFkZHMgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBuZWVkZWQKLWZvciBhdXRvY29uZiAyLjY1IHRvIHJlY29uZmlndXJlIGxpYmljb252IGFuZCBkZWxldGUgdGhlIG00IG1hY3JvcwotZGlyZWN0b3J5LiBJdHMgaW1wb3J0ZWQgZnJvbSBPRS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBsaWJpY29udi0xLjEzLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWNvbnYtMS4xMy4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliaWNvbnYtMS4xMy4xL2NvbmZpZ3VyZS5hYwotQEAgLTIzLDcgKzIzLDcgQEAgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0gQU1fSU5JVF9BVVRPTUFLRShbbGliaWNvbnZdLCBbMS4xMy4xXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmggbGliL2NvbmZpZy5oXSkKLSBBQ19QUk9HX01BS0VfU0VUCi0tCi0rQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotIGRubCAgICAgICAgICAgY2hlY2tzIGZvciBiYXNpYyBwcm9ncmFtcwotIAotIEFDX1BST0dfQ0MKLUluZGV4OiBsaWJpY29udi0xLjEzLjEvbGliY2hhcnNldC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJpY29udi0xLjEzLjEub3JpZy9saWJjaGFyc2V0L2NvbmZpZ3VyZS5hYwotKysrIGxpYmljb252LTEuMTMuMS9saWJjaGFyc2V0L2NvbmZpZ3VyZS5hYwotQEAgLTE2LDE3ICsxNiwxNyBAQCBkbmwgYWxvbmcgd2l0aCB0aGUgR05VIENIQVJTRVQgTGlicmFyeTsKLSBkbmwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LAotIGRubCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gCi0tQUNfUFJFUkVRKFsyLjEzXSkKLStBQ19QUkVSRVEoMi42MSkKLStBQ19JTklUKFtsaWJjaGFyc2V0XSxbMS40XSApCi0rQUNfQ09ORklHX1NSQ0RJUihbbGliL2xvY2FsY2hhcnNldC5jXSkKLSAKLS1QQUNLQUdFPWxpYmNoYXJzZXQKLS1WRVJTSU9OPTEuNAotLQotLUFDX0lOSVQoW2xpYi9sb2NhbGNoYXJzZXQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0gQUNfQ09ORklHX0hFQURFUihbY29uZmlnLmhdKQotIEFDX1BST0dfTUFLRV9TRVQKLS1BQ19TVUJTVChbUEFDS0FHRV0pCi0tQUNfU1VCU1QoW1ZFUlNJT05dKQotK2RubCBBQ19TVUJTVChQQUNLQUdFKQotK2RubCBBQ19TVUJTVChWRVJTSU9OKQotKwotK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkKLSAKLSBkbmwgICAgICAgICAgIGNoZWNrcyBmb3IgYmFzaWMgcHJvZ3JhbXMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udl8xLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252XzEuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZDUxMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252XzEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkNoYXJhY3RlciBlbmNvZGluZyBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJHTlUgbGliaWNvbnYgLSBsaWJpY29udiBpcyBmb3IgeW91IGlmIHlvdXIgYXBwbGljYXRpb24gbmVlZHMgdG8gc3VwcG9ydCBcCi1tdWx0aXBsZSBjaGFyYWN0ZXIgZW5jb2RpbmdzLCBidXQgdGhhdCBzdXBwb3J0IGxhY2tzIGZyb20geW91ciBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252IgotU0VDVElPTiA9ICJsaWJzIgotTk9URVMgPSAiTmVlZHMgdG8gYmUgc3RyaXBwZWQgZG93biB0bzogYXNjaWkgaXNvODg1OS0xIGV1Y2pwIGlzby0yMDIyanAgZ2IgdXRmOCIKLVBST1ZJREVTID0gInZpcnR1YWwvbGliaWNvbnYiCi1QUiA9ICJyMSIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmNoYXJzZXQvQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYXV0b2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM0NTA5YjE2MjNjZWM0NDlkZmViNzNkN2NlOWM2YzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzJiMjRkZWQxN2Q2ODcxOTNjMzM2NmQwZWJlN2NkZTFlNmIxOGYwZGY4YzU1NDM4YWM5NWJlMzllOGEzMDYxMyIKLQotUyA9ICIke1dPUktESVJ9L2xpYmljb252LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIlRBUkdFVF9PUyIpICE9ICJsaW51eCI6Ci0gICAgICAgIHJldHVybgotICAgIGlmIGQuZ2V0VmFyKCJUQ0xJQkMiKSA9PSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgibGliaWNvbnYgaXMgcHJvdmlkZWQgZm9yIHVzZSB3aXRoIHVDbGliYyBvbmx5IC0gZ2xpYmMgYWxyZWFkeSBwcm92aWRlcyBpY29udiIpCi19Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1yZWxvY2F0YWJsZSIKLQotTEVBRF9TT05BTUUgPSAibGliaWNvbnYuc28iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L200L2xpYnRvb2wubTQgJHtTfS9tNC9sdG9wdGlvbnMubTQgJHtTfS9tNC9sdHN1Z2FyLm00ICR7U30vbTQvbHR2ZXJzaW9uLm00ICR7U30vbTQvbHR+b2Jzb2xldGUubTQgJHtTfS9saWJjaGFyc2V0L200L2xpYnRvb2wubTQgJHtTfS9saWJjaGFyc2V0L200L2x0b3B0aW9ucy5tNCAke1N9L2xpYmNoYXJzZXQvbTQvbHRzdWdhci5tNCAke1N9L2xpYmNoYXJzZXQvbTQvbHR2ZXJzaW9uLm00ICR7U30vbGliY2hhcnNldC9tNC9sdH5vYnNvbGV0ZS5tNAotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLSAgICAgICAgIyBmb3JjaWJseSByZW1vdmUgUlBBVEggZnJvbSBsaWJ0b29sCi0gICAgICAgIHNlZCAtaSAnc3xeaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0uKnxoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIifGcnICpsaWJ0b29sCi0gICAgICAgIHNlZCAtaSAnc3xecnVucGF0aF92YXI9TERfUlVOX1BBVEh8cnVucGF0aF92YXI9X05PX1JQQVRIX3xnJyAqbGlidG9vbAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaWNvbnYuc28KLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhM2JmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorbGlicGNyZTItMTAuMjM6IEZpeCBDVkUtMjAxNy03MTg2CisKK0EgZnV6eiBvbiBsaWJwY3JlMSB0aHJvdWdoIHRoZSBwY3JldGVzdCB1dGlsaXR5IHJldmVhbGVkIGFuIGludmFsaWQgcmVhZCBpbiB0aGUKK2xpYnJhcnkuIEZvciB3aG8gaXMgaW50ZXJlc3RlZCBpbiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcsIHdpbGwKK2ZvbGxvdyBhIGZlZWRiYWNrIGZyb20gdXBzdHJlYW06CisKK1RoaXMgd2FzIGEgZ2VudWluZSBidWcgaW4gdGhlIDMyLWJpdCBsaWJyYXJ5LiBUaGFua3MgZm9yIGZpbmRpbmcgaXQuIFRoZSBjcmFzaAord2FzIGNhdXNlZCBieSB0cnlpbmcgdG8gZmluZCBhIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSB2YWx1ZSBncmVhdGVyIHRoYW4KKzB4MTBmZmZmLCB0aGUgVW5pY29kZSBtYXhpbXVtLCB3aGVuIHJ1bm5pbmcgaW4gbm9uLVVURiBtb2RlICh3aGVyZSBjaGFyYWN0ZXIKK3ZhbHVlcyBjYW4gYmUgdXAgdG8gMHhmZmZmZmZmZikuCisKK1RoZSBjb21wbGV0ZSBBU2FuIG91dHB1dDoKKworIyBwY3JldGVzdCAtMzIgLWQgJEZJTEUKKz09MTQ3ODg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIG9uIHVua25vd24gYWRkcmVzcyAweDdmMWJiZmZlZDRkZiAocGMgMHg3ZjFiYmVlM2ZlNmIgYnAgMHg3ZmZmOGI1MGQ4YzAgc3AgMHg3ZmZmOGI1MGQzYTAgVDApCis9PTE0Nzg4PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KKyAgICAjMCAweDdmMWJiZWUzZmU2YSBpbiBtYXRjaCAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTgKKyAgICAjMSAweDdmMWJiZWUwOTIyNiBpbiBwY3JlMzJfZXhlYyAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjY5MzY6OAorICAgICMyIDB4NTI3ZDZjIGluIG1haW4gL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JldGVzdC5jOjUyMTg6OQorICAgICMzIDB4N2YxYmJkZGQ2NzhmIGluIF9fbGliY19zdGFydF9tYWluIC90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjIzLXIzL3dvcmsvZ2xpYmMtMi4yMy9jc3UvLi4vY3N1L2xpYmMtc3RhcnQuYzoyODkKKyAgICAjNCAweDQxYjQzOCBpbiBfaW5pdCAoL3Vzci9iaW4vcGNyZXRlc3QrMHg0MWI0MzgpCisKK0FkZHJlc3NTYW5pdGl6ZXIgY2FuIG5vdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mby4KK1NVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1YgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4IGluIG1hdGNoCis9PTE0Nzg4PT1BQk9SVElORworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl91Y2QuYz92aWV3PXBhdGNoJnIxPTMxNiZyMj02NzAmc29ydGJ5PWRhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaD92aWV3PXBhdGNoJnIxPTYwMCZyMj02NzAmc29ydGJ5PWRhdGVdCitDVkU6IENWRS0yMDE3LTcxODYKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLSB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTUvMDcvMTcgMTU6NDQ6NTEgMzE2CisrKysgdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAorQEAgLTQxLDYgKzQxLDIwIEBACisgCisgY29uc3QgY2hhciAqUFJJVih1bmljb2RlX3ZlcnNpb24pID0gIjguMC4wIjsKKyAKKysvKiBJZiB0aGUgMzItYml0IGxpYnJhcnkgaXMgcnVuIGluIG5vbi0zMi1iaXQgbW9kZSwgY2hhcmFjdGVyIHZhbHVlcworK2dyZWF0ZXIgdGhhbiAweDEwZmZmZiBtYXkgYmUgZW5jb3VudGVyZWQuIEZvciB0aGVzZSB3ZSBzZXQgdXAgYQorK3NwZWNpYWwgcmVjb3JkLiAqLworKworKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKKytjb25zdCB1Y2RfcmVjb3JkIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXSA9IHt7CisrICB1Y3BfQ29tbW9uLCAgICAvKiBzY3JpcHQgKi8KKysgIHVjcF9DbiwgICAgICAgIC8qIHR5cGUgdW5hc3NpZ25lZCAqLworKyAgdWNwX2diT3RoZXIsICAgLyogZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgKi8KKysgIDAsICAgICAgICAgICAgIC8qIGNhc2Ugc2V0ICovCisrICAwLCAgICAgICAgICAgICAvKiBvdGhlciBjYXNlICovCisrICB9fTsKKysjZW5kaWYKKysKKyAvKiBXaGVuIHJlY29tcGlsaW5nIHRhYmxlcyB3aXRoIGEgbmV3IFVuaWNvZGUgdmVyc2lvbiwgcGxlYXNlIGNoZWNrIHRoZQorIHR5cGVzIGluIHRoaXMgc3RydWN0dXJlIGRlZmluaXRpb24gZnJvbSBwY3JlMl9pbnRlcm5hbC5oICh0aGUgYWN0dWFsCisgZmllbGQgbmFtZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgorLS0tIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTYvMTEvMTkgMTI6NDY6MjQgNjAwCisrKysgdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKK0BAIC0xNzc0LDEwICsxNzc0LDE3IEBACisgLyogVUNEIGFjY2VzcyBtYWNyb3MgKi8KKyAKKyAjZGVmaW5lIFVDRF9CTE9DS19TSVpFIDEyOAorLSNkZWZpbmUgR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAorKyNkZWZpbmUgUkVBTF9HRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCisgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW1BSSVYodWNkX3N0YWdlMSlbKGludCkoY2gpIC8gVUNEX0JMT0NLX1NJWkVdICogXAorICAgICAgICAgVUNEX0JMT0NLX1NJWkUgKyAoaW50KShjaCkgJSBVQ0RfQkxPQ0tfU0laRV0pCisgCisrI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgorKyNkZWZpbmUgR0VUX1VDRChjaCkgKChjaCA+IE1BWF9VVEZfQ09ERV9QT0lOVCk/IFwKKysgIFBSSVYoZHVtbXlfdWNkX3JlY29yZCkgOiBSRUFMX0dFVF9VQ0QoY2gpKQorKyNlbHNlCisrI2RlZmluZSBHRVRfVUNEKGNoKSBSRUFMX0dFVF9VQ0QoY2gpCisrI2VuZGlmCisrCisgI2RlZmluZSBVQ0RfQ0hBUlRZUEUoY2gpICAgIEdFVF9VQ0QoY2gpLT5jaGFydHlwZQorICNkZWZpbmUgVUNEX1NDUklQVChjaCkgICAgICBHRVRfVUNEKGNoKS0+c2NyaXB0CisgI2RlZmluZSBVQ0RfQ0FURUdPUlkoY2gpICAgIFBSSVYodWNwX2dlbnR5cGUpW1VDRF9DSEFSVFlQRShjaCldCitAQCAtMTgzNCw2ICsxODQxLDkgQEAKKyAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dCBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0XykKKyAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHQgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dF8pCisgI2RlZmluZSBfcGNyZTJfZGVmYXVsdF90YWJsZXMgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X3RhYmxlc18pCisrI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgorKyNkZWZpbmUgX3BjcmUyX2R1bW15X3VjZF9yZWNvcmQgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZHVtbXlfdWNkX3JlY29yZF8pCisrI2VuZGlmCisgI2RlZmluZSBfcGNyZTJfaHNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9oc3BhY2VfbGlzdF8pCisgI2RlZmluZSBfcGNyZTJfdnNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl92c3BhY2VfbGlzdF8pCisgI2RlZmluZSBfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHMgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0c18pCitAQCAtMTg1OCw2ICsxODY4LDkgQEAKKyBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHZzcGFjZV9saXN0KVtdOworIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX2Nhc2VsZXNzX3NldHMpW107CisgZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVih1Y2RfcmVjb3JkcylbXTsKKysjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCisrZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdOworKyNlbmRpZgorIGV4dGVybiBjb25zdCB1aW50OF90ICAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMSlbXTsKKyBleHRlcm4gY29uc3QgdWludDE2X3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW107CisgZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y3BfZ2J0YWJsZSlbXTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZmFmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK2xpYnBjcmUyLTEwLjIzOiBGaXggQ1ZFLTIwMTctODc4NgorCitUaGUgcGNyZTJ0ZXN0LmMgaW4gUENSRTIgMTAuMjMgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gY2F1c2UgYSBkZW5pYWwgb2YKK3NlcnZpY2UgKGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93KSBvciBwb3NzaWJseSBoYXZlIHVuc3BlY2lmaWVkIG90aGVyIGltcGFjdAordmlhIGEgY3JhZnRlZCByZWd1bGFyIGV4cHJlc3Npb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdmNzLnBjcmUub3JnL3BjcmUyL2NvZGUvdHJ1bmsvc3JjL3BjcmUydGVzdC5jP3IxPTY5MiZyMj02OTcmdmlldz1wYXRjaF0KK0NWRTogQ1ZFLTIwMTctODc4NgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworLS0tIHRydW5rL3NyYy9wY3JlMnRlc3QuYyAgMjAxNy8wMy8yMSAxNjoxODo1NCA2OTIKKysrKyB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTg6MzY6MTMgNjk3CitAQCAtMTAxNyw5ICsxMDE3LDkgQEAKKyAgIGlmICh0ZXN0X21vZGUgPT0gUENSRThfTU9ERSkgXAorICAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfOChhLEcoYiw4KSxHKEcoYiw4KSxfc2l6ZSkpOyBcCisgICBlbHNlIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpIFwKKy0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKTsgXAorKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMTYoYSxHKGIsMTYpLEcoRyhiLDE2KSxfc2l6ZS8yKSk7IFwKKyAgIGVsc2UgXAorLSAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCisrICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8zMihhLEcoYiwzMiksRyhHKGIsMzIpLF9zaXplLzQpKQorIAorICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCisgICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKK0BAIC0xMzk5LDYgKzEzOTksOSBAQAorIAorIC8qIC0tLS0tIENvbW1vbiBtYWNyb3MgZm9yIHR3by1tb2RlIGNhc2VzIC0tLS0tICovCisgCisrI2RlZmluZSBCWVRFT05FIChCSVRPTkUvOCkKKysjZGVmaW5lIEJZVEVUV08gKEJJVFRXTy84KQorKworICNkZWZpbmUgQ0FTVEZMRCh0LGEsYikgXAorICAgKCh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpPyAodCkoRyhhLEJJVE9ORSktPmIpIDogXAorICAgICAodCkoRyhhLEJJVFRXTyktPmIpKQorQEAgLTE0ODEsOSArMTQ4NCw5IEBACisgCisgI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAorICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAorLSAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUpKTsgXAorKyAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUvQllURU9ORSkpOyBcCisgICBlbHNlIFwKKy0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplKSkKKysgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplL0JZVEVUV08pKQorIAorICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCisgICBpZiAodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKSBcCitAQCAtMTkwNCw3ICsxOTA3LDcgQEAKKyAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCisgICBhID0gcGNyZTJfZGZhX21hdGNoXzE2KEcoYiwxNiksKFBDUkUyX1NQVFIxNiljLGQsZSxmLEcoZywxNiksaCxpLGopCisgI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAorLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKQorKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpCisgI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8xNihHKGIsMTYpKQorICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzE2KEcoYiwxNikpCisgI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzE2KEcoYSwxNiksYikKK0BAIC0yMDAwLDcgKzIwMDMsNyBAQAorICNkZWZpbmUgUENSRTJfREZBX01BVENIKGEsYixjLGQsZSxmLGcsaCxpLGopIFwKKyAgIGEgPSBwY3JlMl9kZmFfbWF0Y2hfMzIoRyhiLDMyKSwoUENSRTJfU1BUUjMyKWMsZCxlLGYsRyhnLDMyKSxoLGksaikKKyAjZGVmaW5lIFBDUkUyX0dFVF9FUlJPUl9NRVNTQUdFKHIsYSxiKSBcCistICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCisrICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKKyAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgYSA9IHBjcmUyX2dldF9vdmVjdG9yX2NvdW50XzMyKEcoYiwzMikpCisgI2RlZmluZSBQQ1JFMl9HRVRfU1RBUlRDSEFSKGEsYikgYSA9IHBjcmUyX2dldF9zdGFydGNoYXJfMzIoRyhiLDMyKSkKKyAjZGVmaW5lIFBDUkUyX0pJVF9DT01QSUxFKHIsYSxiKSByID0gcGNyZTJfaml0X2NvbXBpbGVfMzIoRyhhLDMyKSxiKQorQEAgLTI4ODksNyArMjg5Miw3IEBACisgICB7CisgICBpZiAocGJ1ZmZlcjMyICE9IE5VTEwpIGZyZWUocGJ1ZmZlcjMyKTsKKyAgIHBidWZmZXIzMl9zaXplID0gNCpsZW4gKyA0OworLSAgaWYgKHBidWZmZXIzMl9zaXplIDwgMjU2KSBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKKysgIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDUxMikgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7CisgICBwYnVmZmVyMzIgPSAodWludDMyX3QgKiltYWxsb2MocGJ1ZmZlcjMyX3NpemUpOworICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQorICAgICB7CitAQCAtNzYwMCw3ICs3NjAzLDggQEAKKyAgIGludCBlcnJjb2RlOworICAgY2hhciAqZW5kcHRyOworIAorLS8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuICovCisrLyogRW5zdXJlIHRoZSByZWxldmFudCBub24tOC1iaXQgYnVmZmVyIGlzIGF2YWlsYWJsZS4gRW5zdXJlIHRoYXQgaXQgaXMgYXQgCisrbGVhc3QgMTI4IGNvZGUgdW5pdHMsIGJlY2F1c2UgaXQgaXMgdXNlZCBmb3IgcmV0cmlldmluZyBlcnJvciBtZXNzYWdlcy4gKi8KKyAKKyAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8xNgorICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMTZfTU9ERSkKK0BAIC03NjIwLDcgKzc2MjQsNyBAQAorICNpZmRlZiBTVVBQT1JUX1BDUkUyXzMyCisgICBpZiAodGVzdF9tb2RlID09IFBDUkUzMl9NT0RFKQorICAgICB7CistICAgIHBidWZmZXIzMl9zaXplID0gMjU2OworKyAgICBwYnVmZmVyMzJfc2l6ZSA9IDUxMjsKKyAgICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKKyAgICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQorICAgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZjgxYzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCi1uZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKLWxpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKLWRlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAotIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKLW5vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWFiOTYzM2VmZDM4ZDZmNzk5Mzk4ZGYyYzI0OGI1YWVjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMGMwMjUxNzkzOGVlMmIwZDM1MGQ1M2VkZjQ1MDY2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmI0NDYxOWY0YWM2YzUwYWQ3NGMyODY1ZmQ1NjgwNzU3MTM5MjQ5NmZhZTFjOWFkN2E3MDk5M2QwMThmNDE2IgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlMiIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgotCi1QUk9WSURFUyArPSAicGNyZTIiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCi0gICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKLSAgICAtLXdpdGgtbGluay1zaXplPTIgXAotICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCi0iCi0KLSMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCi0jIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCi1CVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgotCi1QQUNLQUdFUyA9KyAicGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCi0KLVNVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKLVNVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCi0KLUZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgotRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKLUZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgotRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTJiMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIKQEAgLTAsMCArMSw2MCBAQAorREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAorbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCitsaWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCitkZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKKyB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCitub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zZGUzNGRmNDllMWZlM2MzYjU5YTA4ZGZmMjE0NDg4YiIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImIyY2QwMGNhN2UyNDA0OTA0MDA5OWIwYTQ2YmIzNjQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzc5YjkxODc3MWYwMmQzMzk2OGJkMzRhNzQ5YWQ3NDg3ZmExMDE0YWViNzg3ZmFkMjlkZDM5MmI3OGM1NmUiCisKK0NWRV9QUk9EVUNUID0gInBjcmUyIgorCitTID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlMiIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKKyAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgorQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCitDWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCisKK2V4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCisKK1BBQ0tBR0VTID0rICJwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKKworU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCitGSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgorRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCitGSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNmFiMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIFBDUkUgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgcmVndWxhciBcCi1leHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgUGVybCA1LiBQQ1JFIFwKLWhhcyBpdHMgb3duIG5hdGl2ZSBBUEksIGFzIHdlbGwgYXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb3JyZXNwb25kIFwKLXRvIHRoZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gQVBJLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9NjBkYTMyZDg0ZDA2N2Y1M2UyMjA3MWM0ZWNiNDM4NGQiCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5jc3guY2FtLmFjLnVrL3B1Yi9zb2Z0d2FyZS9wcm9ncmFtbWluZy9wY3JlL3BjcmUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWE4NDJiZjdkY2VjZDY2MzQyMTkzMzZlMjE2N2QxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGUyN2EyOWVhZDQyNjdlM2RlODExMWZjYWE1OWIxMzJkMDUzM2NkZmRiZGRkZjRiMDYwNDI3OWFjYmNmNGY0IgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1QQUNLQUdFQ09ORklHW3BjcmU4XSA9ICItLWVuYWJsZS1wY3JlOCwtLWRpc2FibGUtcGNyZTgiCi1QQUNLQUdFQ09ORklHW3BjcmUxNl0gPSAiLS1lbmFibGUtcGNyZTE2LC0tZGlzYWJsZS1wY3JlMTYiCi1QQUNLQUdFQ09ORklHW3BjcmUzMl0gPSAiLS1lbmFibGUtcGNyZTMyLC0tZGlzYWJsZS1wY3JlMzIiCi1QQUNLQUdFQ09ORklHW3BjcmV0ZXN0LXJlYWRsaW5lXSA9ICItLWVuYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSwtLWRpc2FibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUscmVhZGxpbmUsIgotUEFDS0FHRUNPTkZJR1t1bmljb2RlLXByb3BlcnRpZXNdID0gIi0tZW5hYmxlLXVuaWNvZGUtcHJvcGVydGllcywtLWRpc2FibGUtdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0tZW5hYmxlLXV0ZiBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotIgotCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfSIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgotCi1QQUNLQUdFUyA9KyAibGlicGNyZWNwcCBsaWJwY3JlcG9zaXggcGNyZWdyZXAgcGNyZWdyZXAtZG9jIHBjcmV0ZXN0IHBjcmV0ZXN0LWRvYyIKLQotU1VNTUFSWV9saWJwY3JlY3BwID0gIiR7U1VNTUFSWX0gLSBDKysgd3JhcHBlciBmdW5jdGlvbnMiCi1TVU1NQVJZX2xpYnBjcmVwb3NpeCA9ICIke1NVTU1BUll9IC0gQyB3cmFwcGVyIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgUE9TSVggcmVnZXggQVBJIgotU1VNTUFSWV9wY3JlZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmVncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JldGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmV0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlY3BwID0gIiR7bGliZGlyfS9saWJwY3JlY3BwLnNvLioiCi1GSUxFU19saWJwY3JlcG9zaXggPSAiJHtsaWJkaXJ9L2xpYnBjcmVwb3NpeC5zby4qIgotRklMRVNfcGNyZWdyZXAgPSAiJHtiaW5kaXJ9L3BjcmVncmVwIgotRklMRVNfcGNyZWdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmVncmVwLjEiCi1GSUxFU19wY3JldGVzdCA9ICIke2JpbmRpcn0vcGNyZXRlc3QiCi1GSUxFU19wY3JldGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZXRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQljcCAke1dPUktESVJ9L01ha2VmaWxlICR0Ci0JY3AgLXIgJHtTfS90ZXN0ZGF0YSAkdAotCWZvciBpIGluIHBjcmVfc3RyaW5ncGllY2VfdW5pdHRlc3QgcGNyZWdyZXAgcGNyZXRlc3Q7IFwKLQkgIGRvIGNwICR7Qn0vLmxpYnMvJGkgJHQ7IFwKLQlkb25lCi0JZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAotCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWFlZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCkBAIC0wLDAgKzEsODMgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTYwZGEzMmQ4NGQwNjdmNTNlMjIwNzFjNGVjYjQzODRkIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzE2MGQyMjcyM2IxNjcwNDQ3MzQxYjA4YzU4OTgxYzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTYyYzdlYWM1YWU3YzBlNzI4NmRiNjFmZjgyOTEyZTFjMGI3YTBjMTM3MDY2MTZlOTRhN2RkNzI5MzIxYjUzMCIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKKworUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgorUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgorUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgorUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKK1BBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLWVuYWJsZS11dGYgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCitDRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKK0NYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKKworZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKKworUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCisKK1NVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgorU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKK1NVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKK1NVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgorRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKK0ZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKK0ZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgorRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgorRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAorCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKKwlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCisJICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCisJZG9uZQorCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKKwkgIGRvIGNwICR7U30vJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgppbmRleCA2MmE2YTEzLi40YzM5ZjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTQuYmIKQEAgLTMxLDYgKzMxLDcgQEAKICAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAogICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKICIKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCiAKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZjI5NGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41Ni4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDY1MDgzZjc0YjdiYjAzNTk1OWRkYjA1OTkzMTM5ODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDgyMTZiNzFkZTgyNDdiYzZmMjc0ZWMwNTRjMDg1NDdiMmUwNDM2OWMxZjhhZGQ3MTNlOTM1MGM4ZWY4MWZlNSIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY5NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41OC4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImViMzNhZGI0NTljMjI4M2VmYzVjN2QwOWNjZGJiY2ZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0MjMwMGNhMWIxYmY4YTNiYmYyZjc4ODIwMzI4N2ZmODYyNTQyZDRmYzA0OGYxOWE5MmEwNjhhMjdkMTdiNzIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKaW5kZXggYzhmZjgzNi4uZWQzMmQxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYwpAQCAtMiwyMyArMiwxOCBAQAogREVTQ1JJUFRJT04gPSAiYSBwb3J0YWJsZSBhbmQgZWZmaWNpZW50IEMgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIChBUEkpIHRvIGRldGVybWluZSB0aGUgY2FsbC1jaGFpbiBvZiBhIHByb2dyYW0iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvbGlidW53aW5kIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zZmNlZDExZDZkZjcxOWI0NzUwNTgzN2E1MWMxNmFlNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTM7bWQ1PTNmY2VkMTFkNmRmNzE5YjQ3NTA1ODM3YTUxYzE2YWU1IgogREVQRU5EUyArPSAibGliYXRvbWljLW9wcyIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbWluaWRlYnVnaW5mbywtLWRpc2FibGUtbWluaWRlYnVnaW5mbyx4eiIKLVBBQ0tBR0VDT05GSUdbbGF0ZXhkb2NzXSA9ICItLWVuYWJsZS1kb2N1bWVudGFpdG9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgbGF0ZXgybWFuLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbGF0ZXhkb2NzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgbGF0ZXgybWFuLW5hdGl2ZSIKIAogRVhUUkFfT0VDT05GX2FybSA9ICItLWVuYWJsZS1kZWJ1Zy1mcmFtZSIKIEVYVFJBX09FQ09ORl9hYXJjaDY0ID0gIi0tZW5hYmxlLWRlYnVnLWZyYW1lIgogCi1DRkxBR1MgKz0gIiR7QVRPTUlDT1BTfSIKLUFUT01JQ09QU19hcm12NSA9ICItREFPX1VTRV9QVEhSRUFEX0RFRlM9MSIKLUFUT01JQ09QU19hcm12NCA9ICItREFPX1VTRV9QVEhSRUFEX0RFRlM9MSIKLUFUT01JQ09QUyA/PSAiIgotCiBTRUNVUklUWV9MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sc3NwX25vbnNoYXJlZCAtbHNzcCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL2ZpeC1taXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMjIyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApAQCAtMCwwICsxLDEzNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA1ZjM1NGNiN2I5Yzg0ZGFlMDA2ZjBlYmQ4YWQ3YTc4ZDdlMmFhZDBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2ZSBXYXRzb24gPGRhdmVqd2F0c29uQGZiLmNvbT4KK0RhdGU6IFdlZCwgMjUgSmFuIDIwMTcgMTY6MTg6MDIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlwcy90aWxlZ3g6IEFkZCBtaXNzaW5nIHVud2luZF9pLmggaGVhZGVyIGZpbGUKKworcmVwb3J0ZWQtYnk6IEpvaG4gS25pZ2h0IDxKb2huLktuaWdodEBiZWxraW4uY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggNWQ4NzQ3NTUuLjdkZTRjNDI1IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0yODAsNyArMjgwLDcgQEAgbGlidW53aW5kX2hwcGFfbGFfU09VUkNFU19ocHBhID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19ocHBhX2NvbW1vbikJXAorIAlocHBhL0dyZXN1bWUuYyBocHBhL0dzdGVwLmMKKyAKKyAjIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgZ28gaW5mbyBsaWJ1bndpbmQgYW5kIGxpYnVud2luZC1taXBzOgorLW5vaW5zdF9IRUFERVJTICs9IG1pcHMvaW5pdC5oIG1pcHMvb2Zmc2V0cy5oCisrbm9pbnN0X0hFQURFUlMgKz0gbWlwcy9pbml0LmggbWlwcy9vZmZzZXRzLmggbWlwcy91bndpbmRfaS5oCisgbGlidW53aW5kX2xhX1NPVVJDRVNfbWlwc19jb21tb24gPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2NvbW1vbikJICAgIFwKKyAJbWlwcy9pc19mcHJlZy5jIG1pcHMvcmVnbmFtZS5jCisgCitAQCAtMjk5LDcgKzI5OSw3IEBAIGxpYnVud2luZF9taXBzX2xhX1NPVVJDRVNfbWlwcyA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfbWlwc19jb21tb24pCSAgICBcCisgCW1pcHMvR2lzX3NpZ25hbF9mcmFtZS5jIG1pcHMvR3JlZ3MuYyBtaXBzL0dyZXN1bWUuYyBtaXBzL0dzdGVwLmMKKyAKKyAjIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgZ28gaW5mbyBsaWJ1bndpbmQgYW5kIGxpYnVud2luZC10aWxlZ3g6Cistbm9pbnN0X0hFQURFUlMgKz0gdGlsZWd4L2luaXQuaCB0aWxlZ3gvb2Zmc2V0cy5oCisrbm9pbnN0X0hFQURFUlMgKz0gdGlsZWd4L2luaXQuaCB0aWxlZ3gvb2Zmc2V0cy5oIHRpbGVneC91bndpbmRfaS5oCisgbGlidW53aW5kX2xhX1NPVVJDRVNfdGlsZWd4X2NvbW1vbiA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfY29tbW9uKQkgICAgXAorIAl0aWxlZ3gvaXNfZnByZWcuYyB0aWxlZ3gvcmVnbmFtZS5jCisgCitkaWZmIC0tZ2l0IGEvc3JjL21pcHMvdW53aW5kX2kuaCBiL3NyYy9taXBzL3Vud2luZF9pLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zMzgyZGNmCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvbWlwcy91bndpbmRfaS5oCitAQCAtMCwwICsxLDQzIEBACisrLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQorKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKKysKKytUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCisrCisrUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisrYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisrIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKytkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKytwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisrCisrVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKytpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKysKKytUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKytFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKytNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKytMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisrT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisrV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLworKworKyNpZm5kZWYgdW53aW5kX2lfaAorKyNkZWZpbmUgdW53aW5kX2lfaAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaW5jbHVkZSA8bGlidW53aW5kLW1pcHMuaD4KKysKKysjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKKysKKysjZGVmaW5lIG1pcHNfbG9jayAgICAgICAgICAgICAgICAgICAgICAgVU5XX09CSihsb2NrKQorKyNkZWZpbmUgbWlwc19sb2NhbF9yZXN1bWUgICAgICAgICAgICAgICBVTldfT0JKKGxvY2FsX3Jlc3VtZSkKKysjZGVmaW5lIG1pcHNfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICAgICAgVU5XX09CSihsb2NhbF9hZGRyX3NwYWNlX2luaXQpCisrCisrZXh0ZXJuIGludCBtaXBzX2xvY2FsX3Jlc3VtZSAodW53X2FkZHJfc3BhY2VfdCBhcywgdW53X2N1cnNvcl90ICpjdXJzb3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworKworK2V4dGVybiB2b2lkIG1pcHNfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICh2b2lkKTsKKysKKysjZW5kaWYgLyogdW53aW5kX2lfaCAqLworZGlmZiAtLWdpdCBhL3NyYy90aWxlZ3gvdW53aW5kX2kuaCBiL3NyYy90aWxlZ3gvdW53aW5kX2kuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhYzdiZTMKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy90aWxlZ3gvdW53aW5kX2kuaAorQEAgLTAsMCArMSw0NCBAQAorKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKKysgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5CisrCisrVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgorKworK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisrZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisrcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisrdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKworK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisrCisrVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisrRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisrTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKytOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisrTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KKysKKysjaWZuZGVmIHVud2luZF9pX2gKKysjZGVmaW5lIHVud2luZF9pX2gKKysKKysjaW5jbHVkZSA8bWVtb3J5Lmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworKyNpbmNsdWRlIDxsaWJ1bndpbmQtdGlsZWd4Lmg+CisrCisrI2luY2x1ZGUgImxpYnVud2luZF9pLmgiCisrCisrI2RlZmluZSB0aWxlZ3hfbG9jYWxfcmVzdW1lICAgICAgICAgICAgVU5XX09CSihsb2NhbF9yZXN1bWUpCisrI2RlZmluZSB0aWxlZ3hfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICAgVU5XX09CSihsb2NhbF9hZGRyX3NwYWNlX2luaXQpCisrCisrZXh0ZXJuIGludCB0aWxlZ3hfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW53X2N1cnNvcl90ICpjdXJzb3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworKworK2V4dGVybiB2b2lkIHRpbGVneF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpOworKworKyNlbmRpZiAvKiB1bndpbmRfaV9oICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzMTJmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGxpYnVud2luZC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImVlZmNiNWQ3Zjc4ZmRjOGYxZWQxNzJhMjZlYTQyMDJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTM4ZmZiZGM4OGJkNjk0ZDEwMDgxODY1ODcxY2QyYmZiYjAyYWQ4ZWY5ZTE2MDZhZWUxOGQ2NTUzMmI5OTIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbGlidW53aW5kL2xpYnVud2luZC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MzdjNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBsaWJ1bndpbmQuaW5jCi0KLVBWID0gIjEuMStnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gImJjODY5OGZkN2VkMTNhNjI5YThlYzNjYjJhODliZDc0ZjlkOGI1YzAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvbGlidW53aW5kLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgc2VlIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5OTg3Ci1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1LzAwMDEtU3VwcG9ydC1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdS8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI5NjIzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1LzAwMDEtU3VwcG9ydC1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLUZyb20gZjM3YzViNTYzNzZkOWJiNTA2ZGE2OGJiMTFkMGQ3NDYzZTZlNTYzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAxOjUyOjI2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgZm9yIE5JT1MyIGFyY2hpdGVjdHVyZQotCi1BZGQgc3VwcG9ydCBmb3IgdGhlIEFsdGVyYSBOSU9TMiBDUFUgYXJjaGlyZWN0dXJlLiBUaGUgYXRvbWljIG9wZXJhdGlvbnMKLWFyZSBoYW5kbGVkIGJ5IHRoZSBHQ0MuIFRoZSBtZW1vcnkgYmFycmllcnMgb24gdGhpcyBzeXN0ZW1zIGFyZSBlbnRpcmVseQotdHJpdmlhbCB0b28sIHNpbmNlIHRoZSBDUFUgZG9lcyBub3Qgc3VwcG9ydCBTTVAgYXQgYWxsLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0Lmx0dG5nLm9yZy8/cD11c2Vyc3BhY2UtcmN1LmdpdDthPWNvbW1pdDtoPTg1OTA1MGIzMDg4YWEzZjBjYjU5ZDdmNTFjZTI0YjlhMGYxOGZhYTUgXQotCi0tLS0KLSBMSUNFTlNFICAgICAgICAgICAgICB8ICAxICsKLSBSRUFETUUubWQgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICB8ICAxICsKLSB1cmN1L2FyY2gvbmlvczIuaCAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB1cmN1L3VhdG9taWMvbmlvczIuaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVyY3UvYXJjaC9uaW9zMi5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVyY3UvdWF0b21pYy9uaW9zMi5oCi0KLWRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQotaW5kZXggMzE0NzA5NC4uYTA2ZmRjYyAxMDA2NDQKLS0tLSBhL0xJQ0VOU0UKLSsrKyBiL0xJQ0VOU0UKLUBAIC00NSw2ICs0NSw3IEBAIGNvbXBpbGVyLmgKLSBhcmNoL3MzOTAuaAotIHVhdG9taWMvYWxwaGEuaAotIHVhdG9taWMvbWlwcy5oCi0rdWF0b21pYy9uaW9zMi5oCi0gdWF0b21pYy9zMzkwLmgKLSBzeXN0ZW0uaAotIAotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggZjZiMjkwZi4uNmZlOWMxZSAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtNDMsNiArNDMsNyBAQCBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgYXJjaGl0ZWN0dXJlcyBhcmUgc3VwcG9ydGVkOgotICAgLSBTMzkwLCBTMzkweAotICAgLSBBUk0gMzIvNjQKLSAgIC0gTUlQUwotKyAgLSBOSU9TMgotICAgLSBBbHBoYQotICAgLSBpYTY0Ci0gICAtIFNwYXJjdjkgMzIvNjQKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVlYmVkNTYuLjgwMTRlMWQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzNiw2ICsxMzYsNyBAQCBBU19DQVNFKFskaG9zdF9jcHVdLAotIAlbYXJtKl0sIFtBUkNIVFlQRT0iYXJtIl0sCi0gCVthYXJjaDY0Kl0sIFtBUkNIVFlQRT0iYWFyY2g2NCJdLAotIAlbbWlwcypdLCBbQVJDSFRZUEU9Im1pcHMiXSwKLSsJW25pb3MyKl0sIFtBUkNIVFlQRT0ibmlvczIiXSwKLSAJW3RpbGUqXSwgW0FSQ0hUWVBFPSJ0aWxlIl0sCi0gCVtocHBhKl0sIFtBUkNIVFlQRT0iaHBwYSJdLAotIAlbQVJDSFRZUEU9InVua25vd24iXQotZGlmZiAtLWdpdCBhL3VyY3UvYXJjaC9uaW9zMi5oIGIvdXJjdS9hcmNoL25pb3MyLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iNGYzZTUwCi0tLS0gL2Rldi9udWxsCi0rKysgYi91cmN1L2FyY2gvbmlvczIuaAotQEAgLTAsMCArMSw0MCBAQAotKyNpZm5kZWYgX1VSQ1VfQVJDSF9OSU9TMl9ICi0rI2RlZmluZSBfVVJDVV9BUkNIX05JT1MyX0gKLSsKLSsvKgotKyAqIGFyY2hfbmlvczIuaDogdHJpdmlhbCBkZWZpbml0aW9ucyBmb3IgdGhlIE5JT1MyIGFyY2hpdGVjdHVyZS4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotKyAqLwotKwotKyNpbmNsdWRlIDx1cmN1L2NvbXBpbGVyLmg+Ci0rI2luY2x1ZGUgPHVyY3UvY29uZmlnLmg+Ci0rI2luY2x1ZGUgPHVyY3Uvc3lzY2FsbC1jb21wYXQuaD4KLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIGNtbV9tYigpCWNtbV9iYXJyaWVyKCkKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHVyY3UvYXJjaC9nZW5lcmljLmg+Ci0rCi0rI2VuZGlmIC8qIF9VUkNVX0FSQ0hfTklPUzJfSCAqLwotZGlmZiAtLWdpdCBhL3VyY3UvdWF0b21pYy9uaW9zMi5oIGIvdXJjdS91YXRvbWljL25pb3MyLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41YjNjMzAzCi0tLS0gL2Rldi9udWxsCi0rKysgYi91cmN1L3VhdG9taWMvbmlvczIuaAotQEAgLTAsMCArMSwzMiBAQAotKyNpZm5kZWYgX1VSQ1VfVUFUT01JQ19BUkNIX05JT1MyX0gKLSsjZGVmaW5lIF9VUkNVX1VBVE9NSUNfQVJDSF9OSU9TMl9ICi0rCi0rLyoKLSsgKiBBdG9taWMgZXhjaGFuZ2Ugb3BlcmF0aW9ucyBmb3IgdGhlIE5JT1MyIGFyY2hpdGVjdHVyZS4gTGV0IEdDQyBkbyBpdC4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgotKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0rICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0rICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKLSsgKiBJTiBUSEUgU09GVFdBUkUuCi0rICovCi0rCi0rI2luY2x1ZGUgPHVyY3UvY29tcGlsZXIuaD4KLSsjaW5jbHVkZSA8dXJjdS9zeXN0ZW0uaD4KLSsjaW5jbHVkZSA8dXJjdS91YXRvbWljL2dlbmVyaWMuaD4KLSsKLSsjZW5kaWYgLyogX1VSQ1VfVUFUT01JQ19BUkNIX05JT1MyX0ggKi8KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjYjIwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2OWRhYjg1YjY5MjljMzc4MzM4Yjk1MDRhZGM2YWVhNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2I1OGE3YmE1MTUxMTk4MDg3ZjAyNWRjOGQxOWQ4OTE4ZTljNmQ1Njc3MmYwMzk2OTZjMTExZDlhYWQzMTkwIgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ4NmUwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VyY3UuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTMyO21kNT00ZGUwZDY4ZDNhOTk3NjQzNzE1MDM2ZDIyMDlhZTFkOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkyMDk3MGUzNWExYTIwNjZjODM1M2VhYmZlYWI4NzMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiY2UzMmU2YTZjOTY3ZmVmNmQzN2FkYWFkZjMzZGYxOTg3OGQ2OTY3M2Y5ZWY5ZDNmMjQ3MGUwYzZlZDQwMDYiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotQ0ZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURfR05VX1NPVVJDRSIKLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCmluZGV4IGQyN2M3MDYuLjViMTFiYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCkBAIC04LDcgKzgsNyBAQAogU0VDVElPTiA9ICJsaWJzIgogREVQRU5EUyA9ICJsaWJ4bWwyIgogCi1TUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhzbHQvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8veG1sc29mdC5vcmcvc291cmNlcy9saWJ4c2x0LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWdfZml4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDQ5NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSBkNDc2OGQ5ZTI5YjgwNTA5NmE4NmFhMTNjMGQzMGVlODIxNWFmNGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTI6MDc6MDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvTWFrZWZpbGU6IGRvbid0IHVzZSBMSUJESVIgYXMgdmFyaWFibGUKKworTElCRElSIG1heSBiZSBvdmVycmlkZW4gd2l0aCBhIGVudmlyb25tZW50IHZhcmlhYmxlOiBJbiB0aGlzIGNhc2UgbWFrZQorY2xlYW4gYnJlYWtzLiBVc2UgYW5vdGhlciB2YXJpYWJsZSBuYW1lLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgdGVzdHMvTWFrZWZpbGUgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDk3ZmE3ODIuLjUxZGQwMzggMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0zMiw3ICszMiw3IEBAIERFU1RESVIgPz0KKyBQUkVGSVggID89IC91c3IvbG9jYWwKKyBCSU5ESVIgIDo9ICQoUFJFRklYKS9iaW4KKyBNQU5ESVIgIDo9ICQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMQorLUxJQkRJUiAgOj0gLi4vbGliCisrTFo0RElSICA6PSAuLi9saWIKKyBQUkdESVIgIDo9IC4uL3Byb2dyYW1zCisgVk9JRCAgICA6PSAvZGV2L251bGwKKyBURVNURElSIDo9IHZlcnNpb25zVGVzdAorQEAgLTQzLDcgKzQzLDcgQEAgQ0ZMQUdTICArPSAtZyAtV2FsbCAtV2V4dHJhIC1XdW5kZWYgLVdjYXN0LXF1YWwgLVdjYXN0LWFsaWduIC1Xc2hhZG93IC1Xc3dpdGNoLWUKKyAgICAgICAgICAgIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1Xc3RyaWN0LXByb3RvdHlwZXMgXAorICAgICAgICAgICAgLVdwb2ludGVyLWFyaXRoIC1Xc3RyaWN0LWFsaWFzaW5nPTEKKyBDRkxBR1MgICs9ICQoTU9SRUZMQUdTKQorLUNQUEZMQUdTOj0gLUkkKExJQkRJUikgLUkkKFBSR0RJUikgLURYWEhfTkFNRVNQQUNFPUxaNF8KKytDUFBGTEFHUzo9IC1JJChMWjRESVIpIC1JJChQUkdESVIpIC1EWFhIX05BTUVTUEFDRT1MWjRfCisgRkxBR1MgICAgPSAkKENGTEFHUykgJChDUFBGTEFHUykgJChMREZMQUdTKQorIAorIAorQEAgLTc5LDMxICs3OSwzMSBAQCBsejRjMzI6ICAgIyBjcmVhdGUgYSAzMi1iaXRzIHZlcnNpb24gZm9yIDMyLzY0IGludGVyb3AgdGVzdHMKKyAJJChNQUtFKSAtQyAkKFBSR0RJUikgY2xlYW4gJEAgQ0ZMQUdTPSItbTMyICQoQ0ZMQUdTKSIKKyAJY3AgJChMWjQpICQoTFo0KWMzMgorIAorLWZ1bGxiZW5jaCAgOiAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL2x6NGZyYW1lLm8gJChMSUJESVIpL3h4aGFzaC5vIGZ1bGxiZW5jaC5jCisrZnVsbGJlbmNoICA6ICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikvbHo0ZnJhbWUubyAkKExaNERJUikveHhoYXNoLm8gZnVsbGJlbmNoLmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mdWxsYmVuY2gtbGliOiBmdWxsYmVuY2guYyAkKExJQkRJUikveHhoYXNoLmMKKy0JJChNQUtFKSAtQyAkKExJQkRJUikgbGlibHo0LmEKKy0JJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgJChMSUJESVIpL2xpYmx6NC5hCisrZnVsbGJlbmNoLWxpYjogZnVsbGJlbmNoLmMgJChMWjRESVIpL3h4aGFzaC5jCisrCSQoTUFLRSkgLUMgJChMWjRESVIpIGxpYmx6NC5hCisrCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpICQoTFo0RElSKS9saWJsejQuYQorIAorLWZ1bGxiZW5jaC1kbGw6IGZ1bGxiZW5jaC5jICQoTElCRElSKS94eGhhc2guYworLQkkKE1BS0UpIC1DICQoTElCRElSKSBsaWJsejQKKy0JJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgLURMWjRfRExMX0lNUE9SVD0xICQoTElCRElSKS9kbGwvbGlibHo0LmRsbAorK2Z1bGxiZW5jaC1kbGw6IGZ1bGxiZW5jaC5jICQoTFo0RElSKS94eGhhc2guYworKwkkKE1BS0UpIC1DICQoTFo0RElSKSBsaWJsejQKKysJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgLURMWjRfRExMX0lNUE9SVD0xICQoTFo0RElSKS9kbGwvbGlibHo0LmRsbAorIAorLWZ1enplciAgOiAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL3h4aGFzaC5vIGZ1enplci5jCisrZnV6emVyICA6ICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikveHhoYXNoLm8gZnV6emVyLmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mcmFtZXRlc3Q6ICQoTElCRElSKS9sejRmcmFtZS5vICQoTElCRElSKS9sejQubyAkKExJQkRJUikvbHo0aGMubyAkKExJQkRJUikveHhoYXNoLm8gZnJhbWV0ZXN0LmMKKytmcmFtZXRlc3Q6ICQoTFo0RElSKS9sejRmcmFtZS5vICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikveHhoYXNoLm8gZnJhbWV0ZXN0LmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mYXN0dGVzdDogJChMSUJESVIpL2x6NC5vIGZhc3R0ZXN0LmMKKytmYXN0dGVzdDogJChMWjRESVIpL2x6NC5vIGZhc3R0ZXN0LmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKyBkYXRhZ2VuIDogJChQUkdESVIpL2RhdGFnZW4uYyBkYXRhZ2VuY2xpLmMKKyAJJChDQykgJChGTEFHUykgLUkkKFBSR0RJUikgJF4gLW8gJEAkKEVYVCkKKyAKKyBjbGVhbjoKKy0JQCQoTUFLRSkgLUMgJChMSUJESVIpICRAID4gJChWT0lEKQorKwlAJChNQUtFKSAtQyAkKExaNERJUikgJEAgPiAkKFZPSUQpCisgCUAkKE1BS0UpIC1DICQoUFJHRElSKSAkQCA+ICQoVk9JRCkKKyAJQCQoUk0pIGNvcmUgKi5vICoudGVzdCB0bXAqIFwKKyAgICAgICAgIGZ1bGxiZW5jaC1kbGwkKEVYVCkgZnVsbGJlbmNoLWxpYiQoRVhUKSBcCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiZmM0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNDMgQEAKKyMhL2Jpbi9zaAorY2QgdGVzdHN1aXRlCisKK2VjaG8gLW4gIi0tLS0gdGVzdC1sejQgLS0tLSIKK21ha2UgLUMgdGVzdHMgdGVzdC1sejQgID4gL2Rldi9udWxsIDI+JjEKKworaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZmFzdHRlc3QgLS0tLSIKK21ha2UgLUMgdGVzdHMgdGVzdC1mYXN0dGVzdCAgPiAvZGV2L251bGwgMj4mMQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZnJhbWV0ZXN0IC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtZnJhbWV0ZXN0ID4gL2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICJQQVNTIgorZWxzZQorICBlY2hvICJGQUlMIgorZmkKKworZWNobyAtbiAiLS0tLSB0ZXN0LWZ1bGxiZW5jaCAtLS0tIgorbWFrZSAtQyB0ZXN0cyB0ZXN0LWZ1bGxiZW5jaCA+ICAvZGV2L251bGwgMj4mMQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZnV6emVyIC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtZnV6emVyID4gIC9kZXYvbnVsbCAyPiYxCitpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgZWNobyAiUEFTUyIKK2Vsc2UKKyAgZWNobyAiRkFJTCIKK2ZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2M1YTdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCi1ERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWIvTElDRU5TRTttZDU9MGIwZDA2M2YzN2E0NDc3YjU0YWYyNDU5NDc3ZGNhZmQiCi0KLVNSQ1JFViA9ICJkODZkYzkxNjc3MWMxMjZhZmI3OTc2MzdkZGE5ZjY0MjFjMGNiOTk4IgotCi1QViA9ICIxMzErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9DeWFuNDk3My9sejQuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NF8xLjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmExYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCitERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKKworTElDRU5TRSA9ICJCU0QgfCBCU0QtMi1DbGF1c2UgfCBHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL0xJQ0VOU0U7bWQ1PWViYzJlYTQ4MTRhNjRkZTc3MDhmMTU3MTkwNGIzMmNjXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHJvZ3JhbXMvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9N2YyODU3ZDU4YmVmZjZkMDQxMzdiZjliMDllNWZmYjYiCisKK1BFID0gIjEiCisKK1NSQ1JFViA9ICI3YmI2NGZmMmI2OWE5ZjgzNjdkZTlhYjQ4M2NkYWRmNDJiNGMxYjY1IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHo0L2x6NC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvLzAwMDEtQWRkLXBrZ2NvbmZpZ2Rpci10by1zb2x2ZS10aGUtdW5kZWZpbmUtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzNWExNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvLzAwMDEtQWRkLXBrZ2NvbmZpZ2Rpci10by1zb2x2ZS10aGUtdW5kZWZpbmUtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBlNzMwYmZkN2MyZDNhNGI1ZjM2MDU4Nzg1OTljYjliMjBkMzFiMWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IEZyaSwgMiBKdW4gMjAxNyAxMTo1MjoyNSArMDkwMAorU3ViamVjdDogW1BBVENIXSBBZGQgcGtnY29uZmlnZGlyIHRvIHNvbHZlIHRoZSB1bmRlZmluZSBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTRkMzgzYi4uYzc1MDIzZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDcgQEAgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikKKyBMREFERCA9IHNyYy9saWJsem8yLmxhCisgbGliX0xUTElCUkFSSUVTID0KKyBub2luc3RfUFJPR1JBTVMgPQorK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKKyBwa2djb25maWdfREFUQSA9IGx6bzIucGMKKyAKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMDkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5Nzg2MTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4wOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x6b19pbml0LmM7YmVnaW5saW5lPTU7ZW5kbGluZT0yNTttZDU9MzU1MDIzODM1YTliOWVlYjcwYWI4OTUzOTVlOTUxZmYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbWVtY3B5LWluc3RlYWQtb2YtcmVpbnZlbnRpbmctaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLm00IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM3ZmZjOWExMDNhZmUyZDFiYmEwYjAxNWU3YWE4ODdmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyOTRhN2NlZDMxMzA2M2MwNTdjNTA0MjU3ZjQzN2M4MzM1YzQxYmZlZWQyMzUzMWVlNGU2YTJiODdiY2IzNGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQljcCAke1N9L3V0aWwvY2hlY2suc2ggJHQKLQljcCAke0J9L21pbmlsem8vdGVzdG1pbmkgJHQKLQlmb3IgaSBpbiB0ZXN0cy9hbGlnbiB0ZXN0cy9jaGtzdW0gbHpvdGVzdC9sem90ZXN0IGV4YW1wbGVzL3NpbXBsZQotCQlkbyBjcCAke0J9L2BkaXJuYW1lICRpYC8ubGlicy9gYmFzZW5hbWUgJGlgICR0OyBcCi0JZG9uZQotfQotCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MGQyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x6b19pbml0LmM7YmVnaW5saW5lPTU7ZW5kbGluZT0yNTttZDU9OWFlNjk3Y2EwMTgyOWIwYTM4M2M1ZDJkMTYzZTAxMDgiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbWVtY3B5LWluc3RlYWQtb2YtcmVpbnZlbnRpbmctaXQucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLUFkZC1wa2djb25maWdkaXItdG8tc29sdmUtdGhlLXVuZGVmaW5lLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOWQzZjNmOWM1NWM4N2IxZTVkNjg4OGUxNDIwZjRiNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGY4OTI5NDMyMDgyNjZmOWI2NTQzYjNhZTMwOGZhYjYyODRjNWM5MGU2Mjc5MzE0NDZmYjQ5YjQyMjFhMDcyIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0CisJY3AgJHtCfS9taW5pbHpvL3Rlc3RtaW5pICR0CisJZm9yIGkgaW4gdGVzdHMvYWxpZ24gdGVzdHMvY2hrc3VtIGx6b3Rlc3QvbHpvdGVzdCBleGFtcGxlcy9zaW1wbGUKKwkJZG8gY3AgJHtCfS9gZGlybmFtZSAkaWAvLmxpYnMvYGJhc2VuYW1lICRpYCAkdDsgXAorCWRvbmUKK30KKworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRmMGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9kbG9wZW4tdGVzdC5wYXRjaApAQCAtMCwwICsxLDIwIEBACitSZXBsYWNlIHJlbGF0aXZlIHBhdGggb2YgbGlibmV0dGxlLnNvIHdpdGggYWJzb2x1dGUgcGF0aCBzbyB0aGUgdGVzdAorcHJvZ3JhbSBjYW4gZmluZCBpdC4KK1JlbGF0aXZlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUsIGFzIHRoZSBmb2xkZXIgc3RydWN1cmUgZm9yIHB0ZXN0CitpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGV4cGVjdGVkIGJ5IHRoZSBuZXR0bGUgdGVzdHN1aXRlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCistLS0gYS90ZXN0c3VpdGUvZGxvcGVuLXRlc3QuYwkyMDE2LTEwLTAxIDAwOjI4OjM4LjAwMDAwMDAwMCAtMDcwMAorKysrIGIvdGVzdHN1aXRlL2Rsb3Blbi10ZXN0LmMJMjAxNy0xMC0xMyAxMTowODo1Ny4yMjc1NzI4NjAgLTA3MDAKK0BAIC05LDcgKzksNyBAQAorIG1haW4gKGludCBhcmdjIFVOVVNFRCwgY2hhciAqKmFyZ3YgVU5VU0VEKQorIHsKKyAjaWYgSEFWRV9MSUJETAorLSAgdm9pZCAqaGFuZGxlID0gZGxvcGVuICgiLi4vbGlibmV0dGxlLnNvIiwgUlRMRF9OT1cpOworKyAgdm9pZCAqaGFuZGxlID0gZGxvcGVuICgiL3Vzci9saWIvbGlibmV0dGxlLnNvIiwgUlRMRF9OT1cpOworICAgaW50ICgqZ2V0X3ZlcnNpb24pKHZvaWQpOworICAgaWYgKCFoYW5kbGUpCisgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgppbmRleCBiNzZiYWJmLi4zOTUxNjc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy4zLmJiCkBAIC0xMSw1ICsxMSw5IEBACiAgICAgICAgICAgICBmaWxlOi8vY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIFwKICAgICAgICAgICAgICIKIAorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly9kbG9wZW4tdGVzdC5wYXRjaCBcCisgICAgICAgICAgICAiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIxMGY5NjlmNzhhNDYzNzA0YWU3MzUyOTk3ODE0OGRiZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Njk0MjYyN2Q1ZDBjYTExNzIwZmVjMThkODFmYzM4ZjdlZjgzN2VhNDE5N2MxZjYzMGU3MWNlMGQ0NzBiMTFlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRmYzA2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV3IEdOVSBQb3J0YWJsZSBUaHJlYWRzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9zb2Z0d2FyZS9wdGgvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjMrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCi0gICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImVmZTE1MjRjNTM2NzBiNTc1NWRjMjc4OTNkMmQ2OGEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjYTgxOTQwNDM2YWVkMDczNGViOGQwZmY4YjE3OWUwNGNjOGMwODdmNTYyNTIwNDQxOWY1ZjQ1ZDczNmE4MmEiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZGU3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIk5ldyBHTlUgUG9ydGFibGUgVGhyZWFkcyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvc29mdHdhcmUvcHRoLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmNhY2VkMGIyNWRmZWZkNGM2MDFkOTJiZDE1MTE2ZGVcCisgICAgIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjliYTJkYzQzMDJkMmYzMmM2NjczN2M0M2VkMTkxYjFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGE2OTBjMWY1MzdiOTJlZDgyOWQ4NjdiZWU1MzdlNDZiZTkzZmJkNjBiMTZjMDQ2MzBmYmJmY2Q5ZGIzYzIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2Q2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDE0N2YzYzJhY2JkOTZkNDQwMjVjZWMxMTgwMGRlZDAyODIzMjc3NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxOCBTZXAgMjAxNyAxNzoyMjo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtZDogRml4IGJ1aWxkIHdpdGggbXVzbAorCitUaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgbm90IHByb3ZpZGVkIGJ5IG11c2wKK2xpbnV4IGtlcm5lbCBoZWFkZXJzIHByb3ZpZGUgPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIGhhcyBzYW1lIGRlZmluaXRpb25zCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitpbmRleCA2NDBiMTljLi4zMTI5NmE4IDEwMDY0NAorLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCisrKysgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKK0BAIC00OTksNyArNDk5LDcgQEAKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorIAorIC8qIEZvciBfQUJJNjQgKi8KKy0jaW5jbHVkZSA8c2dpZGVmcy5oPgorKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgorIAorICNpZmRlZiBfX01JUFNFQl9fCisgI2RlZmluZSBJU19CSUdfRU5ESUFOIDEKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjEzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZWJlY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRzY2FwZSBQb3J0YWJsZSBSdW50aW1lIExpYnJhcnkiCi1IT01FUEFHRSA9ICAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uc3ByLyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCB8IE1QTC0yLjAgfCBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvbmZpZ3VyZS5pbjtiZWdpbmxpbmU9MztlbmRsaW5lPTY7bWQ1PTkwYzJmZGVlMzhlNDVkNjMwMmFiY2ZlNDc1YzhiNWM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluO2JlZ2lubGluZT00O2VuZGxpbmU9Mzg7bWQ1PWJlZGExZGJiOThhNTE1ZjU1N2QzZTU4ZWYwNmJjYTk5IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy92JHtQVn0vc3JjL25zcHItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YzQ0Mjk4YTZmYzQ3OGIzYzBhNGU5OGY0Zjk5ODFlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZTRjMTc1MTMzOWE3NmU3Yzc3MmMwYzA0NzQ3NDg4ZDdmOGM5ODk4MGI0MzRkYzg0Njk3N2U0MzExNzgzM2FiIgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCIgTERGTEFHUz0iIiBDQz1nY2MgLUMgY29uZmlnIGV4cG9ydAotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLQlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLSAgICBzZWQgLWkgIFwKLSAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCi0gICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKLSAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAotICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAotICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCi0gICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotCi0gICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgY2QgJHtCfS9wci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLQotICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQotICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCi0gICAgIyB0aW1lCi0gICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAotICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGVmOTk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCkBAIC0wLDAgKzEsMTkxIEBACitTVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKK0hPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgorTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKKyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmZkODk2M2E0YjM5NGY2MmQ0M2JhNjA0ZjAzZmFiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMxMDJkOTc2NjU1MDRhZWVlNzMzNjNjMTFhMjFjMDYyYWQ2N2EyNTIyMjQyMzY4YjdmMDE5Zjk2YTUzY2QxIgorCitDVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgorCitTID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworVEVTVFMgPSAiIFwKKyAgICBhY2NlcHQgXAorICAgIGFjY2VwdHJlYWQgXAorICAgIGFjY2VwdHJlYWRlbXUgXAorICAgIGFmZmluaXR5IFwKKyAgICBhbGFybSBcCisgICAgYW5vbmZtIFwKKyAgICBhdG9taWMgXAorICAgIGF0dGFjaCBcCisgICAgYmlnZmlsZSBcCisgICAgY2xlYW51cCBcCisgICAgY2x0c3J2ICBcCisgICAgY29uY3VyIFwKKyAgICBjdmFyIFwKKyAgICBjdmFyMiBcCisgICAgZGxsdGVzdCBcCisgICAgZHRvYSBcCisgICAgZXJyY29kZXMgXAorICAgIGV4aXQgXAorICAgIGZkY2FjaCBcCisgICAgZmlsZWlvIFwKKyAgICBmb3JlaWduIFwKKyAgICBmb3JtYXR0bSBcCisgICAgZnN5bmMgXAorICAgIGdldGhvc3QgXAorICAgIGdldHByb3RvIFwKKyAgICBpMmwgXAorICAgIGluaXRjbGsgXAorICAgIGlucnZhbCBcCisgICAgaW5zdHJ1bXQgXAorICAgIGludHJpbyBcCisgICAgaW50cnVwdCBcCisgICAgaW9fdGltZW91dCBcCisgICAgaW9jb250aHIgXAorICAgIGpvaW4gXAorICAgIGpvaW5rayBcCisgICAgam9pbmt1IFwKKyAgICBqb2ludWsgXAorICAgIGpvaW51dSBcCisgICAgbGF5ZXIgXAorICAgIGxhenlpbml0IFwKKyAgICBsaWJmaWxlbmFtZSBcCisgICAgbGx0ZXN0IFwKKyAgICBsb2NrIFwKKyAgICBsb2NrZmlsZSBcCisgICAgbG9nZmlsZSBcCisgICAgbG9nZ2VyIFwKKyAgICBtYW55X2N2IFwKKyAgICBtdWx0aXdhaXQgXAorICAgIG5hbWVzaG0xIFwKKyAgICBuYmxheWVyIFwKKyAgICBub25ibG9jayBcCisgICAgbnRpb3RvIFwKKyAgICBudG9oIFwKKyAgICBvcF8ybG9uZyBcCisgICAgb3BfZXhjbCBcCisgICAgb3BfZmlsbmYgXAorICAgIG9wX2ZpbG9rIFwKKyAgICBvcF9ub2ZpbCBcCisgICAgcGFyZW50IFwKKyAgICBwYXJzZXRtIFwKKyAgICBwZWVrIFwKKyAgICBwZXJmIFwKKyAgICBwaXBlcGluZyBcCisgICAgcGlwZXBpbmcyIFwKKyAgICBwaXBlc2VsZiBcCisgICAgcG9sbF9ubSBcCisgICAgcG9sbF90byBcCisgICAgcG9sbGFibGUgXAorICAgIHByZnRlc3QgXAorICAgIHByaW1ibG9rIFwKKyAgICBwcm92aWRlciBcCisgICAgcHJwb2xsbWwgXAorICAgIHJhbmZpbGUgXAorICAgIHJhbmRzZWVkIFwKKyAgICByZWluaXQgXAorICAgIHJ3bG9ja3Rlc3QgXAorICAgIHNlbF9zcGQgXAorICAgIHNlbGN0X2VyIFwKKyAgICBzZWxjdF9ubSBcCisgICAgc2VsY3RfdG8gXAorICAgIHNlbGludHIgXAorICAgIHNlbWEgXAorICAgIHNlbWFlcnIgXAorICAgIHNlbWFwaW5nIFwKKyAgICBzZW5kemxmIFwKKyAgICBzZXJ2ZXJfdGVzdCBcCisgICAgc2VydnJfa2sgXAorICAgIHNlcnZyX3VrIFwKKyAgICBzZXJ2cl9rdSBcCisgICAgc2VydnJfdXUgXAorICAgIHNob3J0X3RocmVhZCBcCisgICAgc2lncGlwZSBcCisgICAgc29ja2V0IFwKKyAgICBzb2Nrb3B0IFwKKyAgICBzb2NrcGluZyBcCisgICAgc3ByaW50ZiBcCisgICAgc3RhY2sgXAorICAgIHN0ZGlvIFwKKyAgICBzdHIyYWRkciBcCisgICAgc3Ryb2QgXAorICAgIHN3aXRjaCBcCisgICAgc3lzdGVtIFwKKyAgICB0ZXN0Yml0IFwKKyAgICB0ZXN0ZmlsZSBcCisgICAgdGhyZWFkcyBcCisgICAgdGltZW1hYyBcCisgICAgdGltZXRlc3QgXAorICAgIHRwZCBcCisgICAgdWRwc3J2IFwKKyAgICB2ZXJjaGVjayBcCisgICAgdmVyc2lvbiBcCisgICAgd3JpdGV2IFwKKyAgICB4bm90aWZ5IFwKKyAgICB6ZXJvbGVuIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Cit9CisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworICAgIHNlZCAtaSAgXAorICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKKyAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAorICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKKyAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCisKKyAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBjZCAke0J9L3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cworCisgICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCisgICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKKyAgICAjIHRpbWUKKyAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCisgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaAppbmRleCBmN2YyYzIxLi44MGI4NjkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaApAQCAtNiw2ICs2LDggQEAKIFgzMiB1c2VzIDMyLWJpdCBwb2ludGVycywgbm90IDY0LWJpdC4KIAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBuc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkODZmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjI4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgotCi1TUkNfVVJJID0gIlwKLSAgICBodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvTlNTXzNfMjhfMV9SVE0vc3JjLyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKLSAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTk4ZDQ4NDM1Y2VlNTc5MmY5N2VmN2ZjMzVhNjAyYzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThjYzBjMDVjMGVkOTUyM2U2ZDgyMGJlYTc0ZjUxMzUzOGY0OGM4N2FhYzkzMTg3NmUzZDM3NzVkZTFhODJhZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MvTlNTX1JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTlNTXyg/UDxwdmVyPi4rKV9yZWxlYXNlX25vdGVzIgotCi1pbmhlcml0IHNpdGVpbmZvCi0KLURFUEVORFMgPSAic3FsaXRlMyBuc3ByIHpsaWIgbnNzLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInNxbGl0ZTMtbmF0aXZlIG5zcHItbmF0aXZlIHpsaWItbmF0aXZlIgotUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKLQotVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKLVREUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgewotICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNQUl9MSUJfRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX1dFUlJPUj0wCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5Ci0gICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9ImdjYyIKLSAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0hPU1RfQ0ZMQUdTfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLSAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gLWciCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9ImdjYyIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgIG1ha2UgLUMgLi9uc3MgXAotICAgICAgICBDQ0M9IiR7Q1hYfSIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBTT1VSQ0VfTElCX0RJUj0iJHtURH0vJHtsaWJkaXJ9IiBcCi0gICAgICAgIFNPVVJDRV9CSU5fRElSPSIke1REfS8ke2JpbmRpcn0iIFwKLSAgICAgICAgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS8KLSAgICBmb3IgZmlsZSBpbiAke1N9L2Rpc3QvKi5PQkovbGliLyouc287IGRvCi0gICAgICAgIGVjaG8gIkluc3RhbGxpbmcgYGJhc2VuYW1lICRmaWxlYC4uLiIKLSAgICAgICAgY3AgJGZpbGUgICR7RH0vJHtsaWJkaXJ9LwotICAgIGRvbmUKLQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvLio7IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgICAgIGxuIC1zZiAkKGJhc2VuYW1lICRzaGFyZWRfbGliKSAke0R9LyR7bGliZGlyfS8kKGJhc2VuYW1lICRzaGFyZWRfbGliIC4xb2UpCi0gICAgICAgIGZpCi0gICAgZG9uZQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIC1hICEgLWUgJHtEfS8ke2xpYmRpcn0vJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgZmkKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzCi0gICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMgZGlzdC9wdWJsaWMvbnNzLyoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBmb3IgYmluYXJ5IGluICR7VER9LyR7YmluZGlyfS8qOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtdCAke0R9LyR7YmluZGlyfSAkYmluYXJ5Ci0gICAgZG9uZQotfQotZG9faW5zdGFsbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQ3JlYXRlIGVtcHR5IC5jaGsgZmlsZXMgZm9yIHRoZSBOU1MgbGlicmFyaWVzIGF0IGJ1aWxkIHRpbWUuIFRoZXkgY291bGQKLSAgICAjIGJlIHJlZ2VuZXJhdGVkIGF0IHRhcmdldCdzIGJvb3QgdGltZS4KLSAgICBmb3IgZmlsZSBpbiBsaWJzb2Z0b2tuMy5jaGsgbGliZnJlZWJsMy5jaGsgbGlibnNzZGJtMy5jaGs7IGRvCi0gICAgICAgIHRvdWNoICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgICAgIGNobW9kIDc1NSAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgIGRvbmUKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1dPUktESVJ9L3NpZ25saWJzLnNoICR7RH0vJHtiaW5kaXJ9L3NpZ25saWJzLnNoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotICAgIHNlZCAncy8lTlNTX1ZFUlNJT04lLyR7UFZ9LycgJHtXT1JLRElSfS9uc3MucGMuaW4gfCBzZWQgJ3MvJU5TUFJfVkVSU0lPTiUvNC45LjIvJyA+ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FUFJFRklYOiR7cHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FTElCRElSOiR7bGliZGlyfTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn0vbnNzMzpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgIyBDcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZQotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8KLSAgICB0b3VjaCAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2VydHV0aWwgLU4gLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyAtZiAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2htb2QgNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8qLmRiCi0gICAgcm0gLi9lbXB0eV9wYXNzd29yZAotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLSAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsc2UKLSAgICAgICAgc2lnbmxpYnMuc2gKLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCi1GSUxFU18ke1BOfS1zbWltZSA9ICJcCi0gICAgJHtiaW5kaXJ9L3NtaW1lIFwKLSIKLUZJTEVTXyR7UE59ID0gIlwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9saWIqLmNoayBcCi0gICAgJHtsaWJkaXJ9L2xpYiouc28gXAotICAgICIKLUZJTEVTXyR7UE59LWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L25zcyBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKLSAgICAke2luY2x1ZGVkaXJ9LyogXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJiOWJkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzEuMS5iYgpAQCAtMCwwICsxLDI1MyBAQAorU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCitkZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKK3NlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCitBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAorVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCit2MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgorCitWRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAorICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImViYjQ0ZjEzOTQyNTBkMmNmNmVjM2MyZTNkNzFmYTIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzMzQzOTIxNGRjMDNlZTYwZTg2ZDE0MTljMTllMTU2ODk5OGIwNzc2ZGRlOTg3ZjQxZmE3MGNlZDZjZDA4ZGMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKKworaW5oZXJpdCBzaXRlaW5mbworCitERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCisKK1REID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCitURFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKKyAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQorICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgorfQorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKKyAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKKyAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisgICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKKworICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9CisgICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKKyAgICBleHBvcnQgTlNfVVNFX0dDQz0xCisgICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCisgICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbHNlCisgICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgorICAgIGZpCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KKyAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQorICAgICMKKyAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCisgICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgorICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCisgICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgorICAgICMKKyAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKKyAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFJQQVRIPSIke1JQQVRIfSIKK30KK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfNjQ9MQorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKKyAgICBmaQorCisgICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCisKKyAgICBtYWtlIC1DIC4vbnNzIFwKKyAgICAgICAgQ0NDPSIke0NYWH0iIFwKKyAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKKyAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAorICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCisgICAgICAgIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCisgICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbworICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCisgICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KKyAgICBkb25lCisKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbworICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMworICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQorICAgIGRvbmUKK30KK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAorICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAorICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgorICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgorcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgorICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KKyAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAorICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCisgICAgICAgICAgICBGTj0kRE4vJEJOLnNvCisgICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCisgICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICBlbHNlCisgICAgICAgIHNpZ25saWJzLnNoCisgICAgZmkKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgorRklMRVNfJHtQTn0tc21pbWUgPSAiXAorICAgICR7YmluZGlyfS9zbWltZSBcCisiCitGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2xpYmRpcn0vbGliKi5jaGsgXAorICAgICR7bGliZGlyfS9saWIqLnNvIFwKKyAgICAiCitGSUxFU18ke1BOfS1kZXYgPSAiXAorICAgICR7bGliZGlyfS9uc3MgXAorICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCisgICAgJHtpbmNsdWRlZGlyfS8qIFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzFlZGIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0NvbnZlcnQgdG8gcGtnLWNvbmZpZyBzdXBwb3J0IHRvIG1hdGNoIGNoYW5nZXMgZG9uZSB0byAKK3RoZSBncGctZXJyb3IgcmVjaXBlIGZvciBncGctZXJyb3IucGMgIGdlbmVyYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogcGluZW50cnktMS4wLjAvbTQvZ3BnLWVycm9yLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGluZW50cnktMS4wLjAub3JpZy9tNC9ncGctZXJyb3IubTQKKysrKyBwaW5lbnRyeS0xLjAuMC9tNC9ncGctZXJyb3IubTQKK0BAIC0yNSw3NCArMjUsMTIgQEAgZG5sIGNvbmZpZyBzY3JpcHQgZG9lcyBub3QgbWF0Y2ggdGhlIGhvcworIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9HUEdfRVJST1JdLAorLVsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorLSAgZ3BnX2Vycm9yX2NvbmZpZ19wcmVmaXg9IiIKKy0gIGRubCAtLXdpdGgtbGliZ3BnLWVycm9yLXByZWZpeD1QRlggaXMgdGhlIHByZWZlcnJlZCBuYW1lIGZvciB0aGlzIG9wdGlvbiwKKy0gIGRubCBzaW5jZSB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgb3VyIHRocmVlIHNpYmxpbmdzIHVzZSB0aGUgZGlyZWN0b3J5LworLSAgZG5sIHBhY2thZ2UgbmFtZSBpbiAtLXdpdGgtJGRpcl9uYW1lLXByZWZpeD1QRlguCistICBBQ19BUkdfV0lUSChsaWJncGctZXJyb3ItcHJlZml4LAorLSAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJncGctZXJyb3ItcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIEdQRyBFcnJvciBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgICAgICAgICAgW2dwZ19lcnJvcl9jb25maWdfcHJlZml4PSIkd2l0aHZhbCJdKQorLQorLSAgZG5sIEFjY2VwdCAtLXdpdGgtZ3BnLWVycm9yLXByZWZpeCBhbmQgbWFrZSBpdCB3b3JrIHRoZSBzYW1lIGFzCistICBkbmwgLS13aXRoLWxpYmdwZy1lcnJvci1wcmVmaXggYWJvdmUsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKKy0gIGRubCBidXQgZG8gbm90IGRvY3VtZW50IHRoaXMgb2xkLCBpbmNvbnNpc3RlbnRseS1uYW1lZCBvcHRpb24uCistICBBQ19BUkdfV0lUSChncGctZXJyb3ItcHJlZml4LCwKKy0gICAgICAgICAgICAgIFtncGdfZXJyb3JfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiXSkKKy0KKy0gIGlmIHRlc3QgeCIke0dQR19FUlJPUl9DT05GSUd9IiA9IHggOyB0aGVuCistICAgICBpZiB0ZXN0IHgiJHtncGdfZXJyb3JfY29uZmlnX3ByZWZpeH0iICE9IHggOyB0aGVuCistICAgICAgICBHUEdfRVJST1JfQ09ORklHPSIke2dwZ19lcnJvcl9jb25maWdfcHJlZml4fS9iaW4vZ3BnLWVycm9yLWNvbmZpZyIKKy0gICAgIGVsc2UKKy0gICAgICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgICAvKikKKy0gICAgICAgICAgIGlmIHRlc3QgLXggIiR7U1lTUk9PVH0vYmluL2dwZy1lcnJvci1jb25maWciIDsgdGhlbgorLSAgICAgICAgICAgICBHUEdfRVJST1JfQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9ncGctZXJyb3ItY29uZmlnIgorLSAgICAgICAgICAgZmkKKy0gICAgICAgICAgIDs7CistICAgICAgICAgJycpCistICAgICAgICAgICA7OworLSAgICAgICAgICAqKQorLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgZXNhYworLSAgICAgZmkKKy0gIGZpCistCistICBBQ19QQVRIX1BST0coR1BHX0VSUk9SX0NPTkZJRywgZ3BnLWVycm9yLWNvbmZpZywgbm8pCisrWworICAgbWluX2dwZ19lcnJvcl92ZXJzaW9uPWlmZWxzZShbJDFdLCAsMC4wLCQxKQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEcgRXJyb3IgLSB2ZXJzaW9uID49ICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJEdQR19FUlJPUl9DT05GSUciICE9ICJubyIgXAorLSAgICAgJiYgdGVzdCAtZiAiJEdQR19FUlJPUl9DT05GSUciIDsgdGhlbgorLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdfZXJyb3JfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIGdwZ19lcnJvcl9jb25maWdfdmVyc2lvbj1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLXZlcnNpb25gCistICAgIG1ham9yPWBlY2hvICRncGdfZXJyb3JfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKy0gICAgbWlub3I9YGVjaG8gJGdwZ19lcnJvcl9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMi8nYAorLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1nZSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdfRVJST1IsIFtncGctZXJyb3IgPj0gJG1pbl9ncGdfZXJyb3JfdmVyc2lvbiBncGctZXJyb3JdLCBbb2s9eWVzXSwgW29rPW5vXSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEdQR19FUlJPUl9DRkxBR1M9YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCistICAgIEdQR19FUlJPUl9MSUJTPWAkR1BHX0VSUk9SX0NPTkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0tbGlic2AKKy0gICAgR1BHX0VSUk9SX01UX0NGTEFHUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLW10IC0tY2ZsYWdzIDI+L2Rldi9udWxsYAorLSAgICBHUEdfRVJST1JfTVRfTElCUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLW10IC0tbGlicyAyPi9kZXYvbnVsbGAKKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzICgkZ3BnX2Vycm9yX2NvbmZpZ192ZXJzaW9uKV0pCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCistICAgIGdwZ19lcnJvcl9jb25maWdfaG9zdD1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorKyAgICBncGdfZXJyb3JfY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0taG9zdCBncGctZXJyb3IgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorICAgICBpZiB0ZXN0IHgiJGdwZ19lcnJvcl9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCisgICAgICAgaWYgdGVzdCB4IiRncGdfZXJyb3JfY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgorICAgQUNfTVNHX1dBUk4oW1sKK0BAIC0xMDcsMTAgKzQ1LDYgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHX0VSUk9SXSwKKyAgICAgICBmaQorICAgICBmaQorICAgZWxzZQorLSAgICBHUEdfRVJST1JfQ0ZMQUdTPSIiCistICAgIEdQR19FUlJPUl9MSUJTPSIiCistICAgIEdQR19FUlJPUl9NVF9DRkxBR1M9IiIKKy0gICAgR1BHX0VSUk9SX01UX0xJQlM9IiIKKyAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkNTY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApAQCAtMCwwICsxLDE1MyBAQAorQ29udmVydCB0byBwa2ctY29uZmlnIHN1cHBvcnQgdG8gbWF0Y2ggY2hhbmdlcyBkb25lIHRvCit0aGUgbGliYXNzdWFuIHJlY2lwZSBmb3IgbGliYXNzdWFuLnBjIGdlbmVyYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogcGluZW50cnktMS4wLjAvbTQvbGliYXNzdWFuLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGluZW50cnktMS4wLjAub3JpZy9tNC9saWJhc3N1YW4ubTQKKysrKyBwaW5lbnRyeS0xLjAuMC9tNC9saWJhc3N1YW4ubTQKK0BAIC0xMywzNCArMTMsOCBAQCBkbmwKKyBkbmwgQ29tbW9uIGNvZGUgdXNlZCBmb3IgbGliYXNzdWFuIGRldGVjdGlvbiBbaW50ZXJuYWxdCisgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KKyBkbmwKKy1BQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCistWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCistICBBQ19BUkdfV0lUSChsaWJhc3N1YW4tcHJlZml4LAorLSAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJhc3N1YW4tcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIExJQkFTU1VBTiBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgbGliYXNzdWFuX2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliYXNzdWFuX2NvbmZpZ19wcmVmaXg9IiIpCistICBpZiB0ZXN0IHgkbGliYXNzdWFuX2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKy0gICAgbGliYXNzdWFuX2NvbmZpZ19hcmdzPSIkbGliYXNzdWFuX2NvbmZpZ19hcmdzIC0tcHJlZml4PSRsaWJhc3N1YW5fY29uZmlnX3ByZWZpeCIKKy0gICAgaWYgdGVzdCB4JHtMSUJBU1NVQU5fQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KKy0gICAgICBMSUJBU1NVQU5fQ09ORklHPSRsaWJhc3N1YW5fY29uZmlnX3ByZWZpeC9iaW4vbGliYXNzdWFuLWNvbmZpZworLSAgICBmaQorLSAgZWxzZQorLSAgICBjYXNlICIke1NZU1JPT1R9IiBpbgorLSAgICAgICAvKikKKy0gICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9saWJhc3N1YW4tY29uZmlnIiA7IHRoZW4KKy0gICAgICAgICAgIExJQkFTU1VBTl9DT05GSUc9IiR7U1lTUk9PVH0vYmluL2xpYmFzc3Vhbi1jb25maWciCistICAgICAgICAgZmkKKy0gICAgICAgICA7OworLSAgICAgICAnJykKKy0gICAgICAgICA7OworLSAgICAgICAgKikKKy0gICAgICAgICBBQ19NU0dfV0FSTihbSWdub3JpbmcgXCRTWVNST09UIGFzIGl0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoLl0pCistICAgICAgICAgOzsKKy0gICAgIGVzYWMKKy0gIGZpCistCistICBBQ19QQVRIX1RPT0woTElCQVNTVUFOX0NPTkZJRywgbGliYXNzdWFuLWNvbmZpZywgbm8pCistCisrQUNfREVGVU4oW0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjkuMiwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgcmVxX2xpYmFzc3Vhbl9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtNTAsNTEgKzI0LDExIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKKyAgICAgbWluX2xpYmFzc3Vhbl92ZXJzaW9uPSIkdG1wIgorICAgZmkKKyAKKy0gIEFDX01TR19DSEVDS0lORyhmb3IgTElCQVNTVUFOIC0gdmVyc2lvbiA+PSAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRMSUJBU1NVQU5fQ09ORklHIiAhPSAibm8iIFwKKy0gICAgICYmIHRlc3QgLWYgIiRMSUJBU1NVQU5fQ09ORklHIiA7IHRoZW4KKy0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKKy0KKy0gICAgbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uPWAkTElCQVNTVUFOX0NPTkZJRyAtLXZlcnNpb25gCistICAgIG1ham9yPWBlY2hvICRsaWJhc3N1YW5fY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMS8nYAorLSAgICBtaW5vcj1gZWNobyAkbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDIvJ2AKKy0gICAgbWljcm89YGVjaG8gJGxpYmFzc3Vhbl9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wzLydgCistCistICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgb2s9eWVzCistICAgIGVsc2UKKy0gICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCistCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRsaWJhc3N1YW5fY29uZmlnX3ZlcnNpb24pXSkKKy0gIGVsc2UKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJBU1NVQU5fQ09NTU9OLCBbbGliYXNzdWFuID49ICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gbGliYXNzdWFuXSwgW29rPXllc10sIFtvaz1ub10pCisgCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICBpZiB0ZXN0ICIkcmVxX2xpYmFzc3Vhbl9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgIHRtcD1gJExJQkFTU1VBTl9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGxpYmFzc3VhbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0xJQkFTU1VBTiBBUEkgdmVyc2lvbl0pCisgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmFzc3Vhbl9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCitAQCAtMTA5LDcgKzQzLDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorIAorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCB4IiRob3N0IiAhPSB4IDsgdGhlbgorLSAgICAgIGxpYmFzc3Vhbl9jb25maWdfaG9zdD1gJExJQkFTU1VBTl9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKysgICAgICBsaWJhc3N1YW5fY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0taG9zdCBsaWJhc3N1YW4gMj4vZGV2L251bGwgfHwgZWNobyAwYAorICAgICAgIGlmIHRlc3QgeCIkbGliYXNzdWFuX2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KKyAgICAgICAgIGlmIHRlc3QgeCIkbGliYXNzdWFuX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KKyAgIEFDX01TR19XQVJOKFtbCitAQCAtMTMyLDcgKzY2LDcgQEAgZG5sIFRlc3Qgd2hldGhlciBsaWJhc3N1YW4gaGFzIGF0IGxlYXN0CisgZG5sIHVzZWQgdG8gdGVzdCBmb3IgZmVhdHVyZXMgb25seSBhdmFpbGFibGUgaW4gbmV3ZXIgdmVyc2lvbnMuCisgZG5sCisgQUNfREVGVU4oW0FNX0NIRUNLX0xJQkFTU1VBTl0sCistWyBfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQorK1sgQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgIGVsc2UKK0BAIC0xNDgsMTYgKzgyLDEwIEBAIGRubCAgICAgICAgICAgICAgICAgICBbQUNUSU9OLUlGLUZPVU5EIFsKKyBkbmwgVGVzdCBmb3IgbGliYXNzdWFuIGFuZCBkZWZpbmUgTElCQVNTVUFOX0NGTEFHUyBhbmQgTElCQVNTVUFOX0xJQlMKKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9MSUJBU1NVQU5dLAorLVsgX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKytbIEFNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIExJQkFTU1VBTl9DRkxBR1M9YCRMSUJBU1NVQU5fQ09ORklHICRsaWJhc3N1YW5fY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCistICAgIExJQkFTU1VBTl9MSUJTPWAkTElCQVNTVUFOX0NPTkZJRyAkbGliYXNzdWFuX2NvbmZpZ19hcmdzIC0tbGlic2AKKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgIGVsc2UKKy0gICAgTElCQVNTVUFOX0NGTEFHUz0iIgorLSAgICBMSUJBU1NVQU5fTElCUz0iIgorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKExJQkFTU1VBTl9DRkxBR1MpCistICBBQ19TVUJTVChMSUJBU1NVQU5fTElCUykKKyBdKQorSW5kZXg6IHBpbmVudHJ5LTEuMC4wL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBpbmVudHJ5LTEuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGluZW50cnktMS4wLjAvY29uZmlndXJlLmFjCitAQCAtMjY2LDggKzI2Niw4IEBAIGlmIHRlc3QgIiRoYXZlX2xpYmFzc3VhbiIgPSAieWVzIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIFt2ZXJzaW9uIG9mIHRoZSBsaWJhc3N1YW4gbGlicmFyeV0pCisgZmkKKyAKKy1DT01NT05fQ0ZMQUdTPSIkTElCQVNTVUFOX0NGTEFHUyAkQ09NTU9OX0NGTEFHUyIKKy1DT01NT05fTElCUz0iJExJQkFTU1VBTl9MSUJTICRDT01NT05fTElCUyIKKytDT01NT05fQ0ZMQUdTPSIkTElCQVNTVUFOX0NPTU1PTl9DRkxBR1MgJENPTU1PTl9DRkxBR1MiCisrQ09NTU9OX0xJQlM9IiRMSUJBU1NVQU5fQ09NTU9OX0xJQlMgJENPTU1PTl9MSUJTIgorIAorIAorIGRubCBDaGVja3MgZm9yIGxpYnNlY21lbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxNWE5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMC45LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCi1ERVNDUklQVElPTiA9ICJcCi0JUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKLQl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAotCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTFkNDU0ZjkyMTExMWI1MTU2YTIyOTFjYmY3MDI3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDhiYzE1OTJjZWIyMmJiNDkyYjA3Y2IyOWIxYjE0MGJiODgyYzg1OWU2NTAzYjk3NDI1NGMwYTRiNDEzNGQxIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIFwKLQkJICAgICAgICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCi0gICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKLQotUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgotUEFDS0FHRUNPTkZJR1txdDRdID0gIi0tZW5hYmxlLXBpbmVudHJ5LXF0NCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0NCwgcXQ0LXgxMSIKLVBBQ0tBR0VDT05GSUdbcXQ0X2NsaXBib2FyZF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQ0LWNsaXBib2FyZCAtLWVuYWJsZS1waW5lbnRyeS1xdDQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdDQtY2xpcGJvYXJkLCBxdDQteDExIgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKLQotI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCi1QQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5YWNkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjAuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCitERVNDUklQVElPTiA9ICJcCisJUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKKwl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAorCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgbGliYXNzdWFuIGxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3BnLWVycm9yX3BrY29uZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YTNmYWQ4YjMxZjliNGM1NTI2Yzg4Mzc0OTUwMTVkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNjcyYzJlZGMxZmViMDM2MDc1YjE4N2MwNzczNzg3YjJhZmQwNTQ0ZjU1MDI1YzY0NWE3MWI0YzJmNzkyNzVhIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKKworUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdCwgcXQ0LXgxMSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCisKKyNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQorUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlOWE3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCi1wcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAotcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ1JFViA9ICI2ZDI4NzIxMTZjZDlkNmUxNjE3YTc2OGY5ZDcyYmJmMDkxNDg5YjJkIgotUFYgPSAiMi4wLjIrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIEMgcHJvZ3JhbSB0byBydW4gYWxsIGluc3RhbGxlZCBwdGVzdHMiCitERVNDUklQVElPTiA9ICJUaGUgcHRlc3QtcnVubmVyMiBwYWNrYWdlIGluc3RhbGxzIGEgcHRlc3QtcnVubmVyIFwKK3Byb2dyYW0gd2hpY2ggbG9vcHMgdGhyb3VnaCBhbGwgaW5zdGFsbGVkIHB0ZXN0IHRlc3Qgc3VpdGVzIGFuZCBcCitydW5zIHRoZW0gaW4gc2VxdWVuY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHRlc3QtcnVubmVyMi9hYm91dC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDUkVWID0gIjhhOTM4MzJkYWQ2MjE1MzVlOTBhYThlMWZiNzRhZTViYTc0M2ZjM2UiCitQViA9ICIyLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9ta2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5ZjAxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9za3ZhZHJpay9yZTJjL3B1bGwvMTkxKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBiY2NjMTBjNjA1MjNmODhjOGY4MTQxMzE1MWNkY2Q2MTJlYjE2MTk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMzEgSnVsIDIwMTcgMTU6NDM6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQKKworSW4gc29tZSBzaXR1YXRpb25zIHNyYy9wYXJzZS8gbWF5IG5vdCBleGlzdCBiZWZvcmUgYSBmaWxlIGlzIGNvcGllZCBpbnRvIHRoZQorZGlyZWN0b3J5LiBFbnN1cmUgdGhhdCB0aGlzIGRvZXNuJ3QgaGFwcGVuIGJ5IGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgZmlyc3QuCistLS0KKyByZTJjL01ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZTJjL01ha2VmaWxlLmFtIGIvcmUyYy9NYWtlZmlsZS5hbQoraW5kZXggM2IzYjJjNWUuLjA3MDdmYzVhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTg3LDYgKzE4Nyw3IEBAIENMRUFORklMRVMgPSBcCisgCSQoRE9DKQorIAorICQoQVVUT0dFTl9QQVJTRVIpOiAkKENVU1RPTV9QQVJTRVIpCisrCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQorIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0ICQoQklTT04pID0gIm5vIjsgXAorIAl0aGVuIFwKKyAJCWNwICQodG9wX3NyY2RpcikvJChCT09UU1RSQVBfUEFSU0VSKSAkQCAmJiBcCitAQCAtMjExLDYgKzIxMiw3IEBAICQoQk9PVFNUUkFQX1BBUlNFUik6ICQoQ1VTVE9NX1BBUlNFUikKKyAJCSQodG9wX3NyY2RpcikvJChDVVNUT01fUEFSU0VSKTsKKyAKKyAucmUuY2M6CisrCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQorIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0IC14ICQoUkUyQyk7IFwKKyAJdGhlbiBcCisgCQkkKHRvcF9idWlsZGRpcikvJChSRTJDKSAkKFJFMkNGTEFHUykgLW8gJEAgJDwgJiYgXAorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGRkN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjE2LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiVG9vbCBmb3Igd3JpdGluZyB2ZXJ5IGZhc3QgYW5kIHZlcnkgZmxleGlibGUgc2Nhbm5lcnMiCitIT01FUEFHRSA9ICJodHRwOi8vcmUyYy5zb3VyY2Vmb3JnZS5uZXQvIgorQVVUSE9SID0gIk1hcmN1cyBCw7ZyZ2VyIDxoZWxseUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE0NjttZDU9ODgxMDU2YzlhZGQxN2Y4MDE5Y2NkOGMzODJiYTk2M2EiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjNiZjUwOGZhYmQ1MmVkNzMzNDY0N2QwY2NiOTU2ZThkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4YzEyNTY0Mjk3NjQxY2NlYjVmZjA1YWVhZDU3ZjI4MTE4ZGI2Mjc3ZjMxZTIyNjI0MzdmZWJhODkwNjllODQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvZGVmYXVsdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL2RlZmF1bHQKaW5kZXggN2FlZGU5Yi4uYWI3Y2Q5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvZGVmYXVsdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9kZWZhdWx0CkBAIC0xLDMgKzEsMiBAQAogIyBTcGVjaWZ5IHJuZyBkZXZpY2UKLSNSTkdfREVWSUNFPS9kZXYvaHdybmcKLVJOR19ERVZJQ0U9L2Rldi91cmFuZG9tCitSTkdfREVWSUNFPS9kZXYvaHdybmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nLXRvb2xzLTUtZml4LXRleHRyZWxzLW9uLVBJQy14ODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNhNTg2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitGcm9tOiBGcmFuY2lzY28gQmxhcyBJenF1aWVyZG8gUmllcmEgKGtsb25kaWtlKSA8a2xvbmRpa2VAZ2VudG9vLm9yZz4KK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFzc2VtYnkgdGV4dHJlbHMgb24gcmRyYW5kX2FzbS5TIG9uIFBJQyB4ODYKKworVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBmaXhlcyBpbiB0aGUgYXNzZW1ibHkgaW4gcmRyYW5kX2FzbS5TIGluCitzeXMtYXBwcy9ybmctdG9vbHMtNSBzbyBpdCB3b24ndCBnZW5lcmF0ZSB0ZXh0cmVscyBvbiBQSUMgc3lzdGVtcy4KK1RoZSBtYWluIGZpeGVzIGFyZSBpbiB0aGUgdXNlIG9mIGxlYWwgaW4gU0VUUFRSIGZvciBzdWNoIHN5c3RlbXMsIHRoZSByZXN0IGlzCit0aGUgdXN1YWwgUElDIHN1cHBvcnQgc3R1ZmYuCisKK1RoaXMgc2hvdWxkIGZpeCBHZW50b28gYnVnICM0Njk5NjIgYW5kIGhlbHAgZml4ICM1MTgyMTAKKworVGhpcyBwYXRjaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMdjIgb3IgYSBoaWdoZXIgdmVyc2lvbiBsaWNlbnNlIGFzIGlzIHRoZQorb3JpZ2luYWwgZmlsZSBhcyBsb25nIGFzIHRoZSBhdXRob3IgYW5kIHRoZSB0ZXN0ZXIgYXJlIGNyZWRpdGVkLgorCitHZW50b28tYnVnLXVybDogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTk2MgorR2VudG9vLWJ1Zy11cmw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTgyMTAKK1NpZ25lZC1vZmYtYnk6IEZyYW5jaXNjbyBCbGFzIEl6cXVpZXJkbyBSaWVyYSAoa2xvbmRpa2UpIDxrbG9uZGlrZUBnZW50b28ub3JnPgorUmVwb3J0ZWQtYnk6IGNpbGx5IDxjaWxseUBjaWxseS5taW5lLm51PgorUmVwb3J0ZWQtYnk6IE1hbnVlbCBSw7xnZXIgPG1ydWVnQGdlbnRvby5vcmc+CitUZXN0ZWQtYnk6IEFudGhvbnkgQmFzaWxlIDxibHVlbmVzc0BnZW50b28ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IHJuZy10b29scy01L3JkcmFuZF9hc20uUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHJuZy10b29scy01Lm9yaWcvcmRyYW5kX2FzbS5TCisrKysgcm5nLXRvb2xzLTUvcmRyYW5kX2FzbS5TCitAQCAtMiw2ICsyLDcgQEAKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNCwgSW50ZWwgQ29ycG9yYXRpb24KKyAgKiBBdXRob3JzOiBGZW5naHVhIFl1IDxmZW5naHVhLnl1QGludGVsLmNvbT4sCisgICogICAgICAgICAgSC4gUGV0ZXIgQW52aW4gPGhwYUBsaW51eC5pbnRlbC5jb20+CisrICogUElDIGNvZGUgYnk6IEZyYW5jaXNjbyBCbGFzIEl6cXVpZXJkbyBSaWVyYSAoa2xvbmRpa2UpIDxrbG9uZGlrZUBnZW50b28ub3JnPgorICAqCisgICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorQEAgLTE3NCw3ICsxNzUsMTkgQEAgRU5UUlkoeDg2X3Jkc2VlZF9vcl9yZHJhbmRfYnl0ZXMpCisgCWptcAk0YgorIEVORFBST0MoeDg2X3Jkc2VlZF9vcl9yZHJhbmRfYnl0ZXMpCisgCisrI2lmIGRlZmluZWQoX19QSUNfXykKKysjZGVmaW5lIElOSVRfUElDKCkgXAorKwlwdXNobAklZWJ4IDsgXAorKwljYWxsICAgIF9feDg2LmdldF9wY190aHVuay5ieCA7IFwKKysJYWRkbCAgICAkX0dMT0JBTF9PRkZTRVRfVEFCTEVfLCAlZWJ4CisrI2RlZmluZSBFTkRfUElDKCkgXAorKwlwb3BsCSVlYngKKysjZGVmaW5lIFNFVFBUUih2YXIscHRyKSBsZWFsICh2YXIpQEdPVE9GRiglZWJ4KSxwdHIKKysjZWxzZQorKyNkZWZpbmUgSU5JVF9QSUMoKQorKyNkZWZpbmUgRU5EX1BJQygpCisgI2RlZmluZSBTRVRQVFIodmFyLHB0cikJbW92bCAkKHZhcikscHRyCisrI2VuZGlmCisgI2RlZmluZSBQVFIwCSVlYXgKKyAjZGVmaW5lIFBUUjEJJWVkeAorICNkZWZpbmUgUFRSMgklZWN4CitAQCAtMTkwLDYgKzIwMyw3IEBAIEVOVFJZKHg4Nl9hZXNfbWFuZ2xlKQorIAltb3ZsCTgoJWVicCksICVlYXgKKyAJbW92bAkxMiglZWJwKSwgJWVkeAorIAlwdXNoCSVlc2kKKysJSU5JVF9QSUMoKQorICNlbmRpZgorIAltb3ZsCSQ1MTIsIENUUjMJLyogTnVtYmVyIG9mIHJvdW5kcyAqLworIAkKK0BAIC0yODAsNiArMjk0LDcgQEAgb2Zmc2V0ID0gb2Zmc2V0ICsgMTYKKyAJbW92ZHFhCSV4bW03LCAoNyoxNikoUFRSMSkKKyAKKyAjaWZkZWYgX19pMzg2X18KKysJRU5EX1BJQygpCisgCXBvcAklZXNpCisgCXBvcAklZWJwCisgI2VuZGlmCitAQCAtMjk0LDYgKzMwOSw3IEBAIEVOVFJZKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAJcHVzaAklZWJwCisgCW1vdgklZXNwLCAlZWJwCisgCW1vdmwJOCglZWJwKSwgJWVheAorKwlJTklUX1BJQygpCisgI2VuZGlmCisgCisgCVNFVFBUUihhZXNfcm91bmRfa2V5cywgUFRSMSkKK0BAIC0zMjMsNiArMzM5LDcgQEAgRU5UUlkoeDg2X2Flc19leHBhbmRfa2V5KQorIAljYWxsCTFmCisgCisgI2lmZGVmIF9faTM4Nl9fCisrCUVORF9QSUMoKQorIAlwb3AJJWVicAorICNlbmRpZgorIAlyZXQKK0BAIC0zNDMsNiArMzYwLDE2IEBAIEVOVFJZKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAKKyBFTkRQUk9DKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAKKysjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX1BJQ19fKQorKwkuc2VjdGlvbgkudGV4dC5fX3g4Ni5nZXRfcGNfdGh1bmsuYngsImF4RyIsQHByb2diaXRzLF9feDg2LmdldF9wY190aHVuay5ieCxjb21kYXQKKysJLmdsb2JsCV9feDg2LmdldF9wY190aHVuay5ieAorKwkuaGlkZGVuCV9feDg2LmdldF9wY190aHVuay5ieAorKwkudHlwZQlfX3g4Ni5nZXRfcGNfdGh1bmsuYngsIEBmdW5jdGlvbgorK19feDg2LmdldF9wY190aHVuay5ieDoKKysJbW92bAkoJWVzcCksICVlYngKKysJcmV0CisrI2VuZGlmCisrCisgCS5ic3MKKyAJLmJhbGlnbiA2NAorIGFlc19yb3VuZF9rZXlzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NGFkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKQEAgLTAsMCArMSw5IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUhhcmR3YXJlIFJORyBFbnRyb3B5IEdhdGhlcmVyIERhZW1vbgorCitbU2VydmljZV0KK0V4ZWNTdGFydD1AU0JJTkRJUkAvcm5nZCAtZiAtciAvZGV2L3VyYW5kb20KK1N1Y2Nlc3NFeGl0U3RhdHVzPTY2CisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VjbGliYy1saWJ1YXJncC1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjkxMzE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VjbGliYy1saWJ1YXJncC1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1JbiBjYXNlIG9mIHVjbGliYywgdXNlIGxpYnVhcmdwCi0KLUlmIHdlIHVzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXMsIHNlbGVjdCBsaWJ1YXJncAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgcm5nLXRvb2xzLTUtb3JpZy9jb25maWd1cmUuYWMgcm5nLXRvb2xzLTUvY29uZmlndXJlLmFjCi0tLS0gcm5nLXRvb2xzLTUtb3JpZy9jb25maWd1cmUuYWMJMjAxNi0wMi0yNCAxODoxMToyNC4wMjM2OTAyMzUgKzAyMDAKLSsrKyBybmctdG9vbHMtNS9jb25maWd1cmUuYWMJMjAxNi0wMi0yNCAxODoxNDo0OS43NjMxMTgxMzggKzAyMDAKLUBAIC0zOSw2ICszOSwxMyBAQAotIAlbd2l0aF9saWJhcmdwPWNoZWNrXQotICkKLSAKLStBQ19BUkdfRU5BQkxFKFt1Y2xpYmNdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdWNsaWJjXSwgW1VzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXNdKSwKLSsgICAgICAgIHVzZV91Y2xpYmM9eWVzLCB1c2VfdWNsaWJjPW5vKQotK0FNX0NPTkRJVElPTkFMKFVTRV9VQ0xJQkMsIHRlc3QgIngkdXNlX3VjbGliYyIgPSAieHllcyIpCi0rQVNfSUYoW3Rlc3QgIngkdXNlX3VjbGliYyIgPSAieHllcyJdLCBbQUNfREVGSU5FKFVTRV9VQ0xJQkMpXSkKLStBSF9URU1QTEFURShbVVNFX1VDTElCQ10sIFtEZWZpbmVkIGlmIHVjbGliYyBsaWJyYXJpZXMgYXJlIHVzZWQuXSkKLSsKLSBkbmwgTWFrZSBzdXJlIGFueW9uZSBjaGFuZ2luZyBjb25maWd1cmUuYWMvTWFrZWZpbGUuYW0gaGFzIGEgY2x1ZQotIEFNX01BSU5UQUlORVJfTU9ERQotIAotQEAgLTEwMSw3ICsxMDgsNyBAQAotIAkJCVtuZWVkX2xpYmFyZ3A9bm9dLAotIAkJCVtuZWVkX2xpYmFyZ3A9eWVzCi0gCQkJIGlmIHRlc3QgIngkd2l0aF9saWJhcmdwIiA9ICJ4bm8iOyB0aGVuCi0tCQkJCUFDX01TR19GQUlMVVJFKFtsaWJhcmdwIGRpc2FibGVkIGFuZCBsaWJjIGRvZXMgbm90IGhhdmUgYXJncF0pCi0rCQkJCUFDX01TR19XQVJOKFtsaWJhcmdwIGRpc2FibGVkIGFuZCBsaWJjIGRvZXMgbm90IGhhdmUgYXJncF0pCi0gCQkJIGZpXQotIAkJKQotIAldLAotQEAgLTExMCw3ICsxMTcsNyBAQAotIAotIGRubCBDaGVjayBmb3IgbGliYXJncAotIEFTX0lGKAotLQlbdGVzdCAieCRuZWVkX2xpYmFyZ3AiID0gInh5ZXMiXSwKLSsJW3Rlc3QgIngkbmVlZF9saWJhcmdwIiA9ICJ4eWVzIiAtYSAieCR1c2VfdWNsaWJjIiA9ICJ4bm8iXSwKLSAJWwotIAkJQUNfQ0hFQ0tfTElCKAotIAkJCVthcmdwXSwKLUBAIC0xMjAsNiArMTI3LDE5IEBACi0gCQkpCi0gCV0KLSApCi0rCi0rZG5sIENoZWNrIGZvciBsaWJ1YXJncAotK0FTX0lGKAotKwlbdGVzdCAieCR1c2VfdWNsaWJjIiA9ICJ4eWVzIl0sCi0rCVsKLSsJCUFDX0NIRUNLX0xJQigKLSsJCQlbdWFyZ3BdLAotKwkJCVthcmdwX3BhcnNlXSwKLSsJCQlbTElCUz0iJExJQlMgLWx1YXJncCJdLAotKwkJCVtBQ19NU0dfRkFJTFVSRShbbGlidWFyZ3Agbm90IGZvdW5kXSldCi0rCQkpCi0rCV0KLSspCi0gCi0gZG5sIC0tLS0tLS0tLS0tLS0tLS0tCi0gZG5sIENvbmZpZ3VyZSBvcHRpb25zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91bmRlcnF1b3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvdW5kZXJxdW90ZS5wYXRjaAppbmRleCAxNDIyNTcxLi5hZmQwOGQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91bmRlcnF1b3RlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VuZGVycXVvdGUucGF0Y2gKQEAgLTcsNiArNyw4IEBACiBSUAogMjAxNi8yLzE2CiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiBJbmRleDogcm5nLXRvb2xzLTUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gcm5nLXRvb2xzLTUub3JpZy9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IDkzMjllOGEuLjRhNjZiZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtNiw5ICs2LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlmLXRoZS1saWJjLWlzLWxhY2tpbmctYXJncC11c2UtbGliYXJncC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1hcmd1bWVudC10by1jb250cm9sLXRoZS1saWJhcmdwLWRlcGVuZGVuY3kucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdW5kZXJxdW90ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCIKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKKyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjY3MjZjZGM2ZmFlMWY1MTIyNDYzZjI0YWU5ODBkZDY4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwYTEwMmI2NjAzYmJjY2UyZGEzNDE0NzBjYWQ0MmVlYWE5NTY0YTE2YjQ0OTBlNzg2NzAyNmNhMTFhMzA3OGUiCkBAIC0yMCwxMyArMjIsMTEgQEAKICAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCiB9CiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFBBQ0tBR0VDT05GSUcgPSAibGliZ2NyeXB0IgogUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAibGliYXJncCIKLVBBQ0tBR0VDT05GSUdfbGliYy11Y2xpYmMgPSAibGlidWFyZ3AiCiBQQUNLQUdFQ09ORklHW2xpYmFyZ3BdID0gIi0td2l0aC1saWJhcmdwLC0td2l0aG91dC1saWJhcmdwLGFyZ3Atc3RhbmRhbG9uZSwiCi1QQUNLQUdFQ09ORklHW2xpYnVhcmdwXSA9ICItLWVuYWJsZS11Y2xpYmMsLCwiCiBQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCwtLXdpdGhvdXQtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtNDAsNyArNDAsMTUgQEAKICAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCIKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JuZy10b29scwogICAgIGZpCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcm5nZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ybmdkLnNlcnZpY2UKKyAgICBmaQogfQogCiBJTklUU0NSSVBUX05BTUUgPSAicm5nLXRvb2xzIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJuZ2Quc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKaW5kZXggNmVlZGI2ZC4uMWY1MTIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKQEAgLTYsNyArNiw2IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogREVQRU5EUyA9ICJsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMCBzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbDItbmF0aXZlIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9+aGFkZXNzL3NoYXJlZC1taW1lLWluZm8tJHtQVn0udGFyLnh6IgogCkBAIC0zMyw0ICszMiw0IEBACiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKIH0KIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWM0MjhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGaXggQ1ZFLTIwMTctMTM2ODUKKworVGhlIGR1bXBfY2FsbGJhY2sgZnVuY3Rpb24gaW4gU1FMaXRlIDMuMjAuMCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0bworY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAoRVhDX0JBRF9BQ0NFU1MgYW5kIGFwcGxpY2F0aW9uIGNyYXNoKSB2aWEgYQorY3JhZnRlZCBmaWxlLgorCitSZWZlcmVuY2VzOgoraHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvLzAyZjBmNGM1NGYyODE5YjMKK2h0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9zcWxpdGUtdXNlcnMlNDBtYWlsaW5nbGlzdHMuc3FsaXRlLm9yZy9tc2cxMDUzMTQuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vY2YwZDM3MTVjYWFjOTE0OV0KKworQ1ZFOiBDVkUtMjAxNy0xMzY4NQorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworSW5kZXg6IHNyYy9zaGVsbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzcmMvc2hlbGwuYworKysrIHNyYy9zaGVsbC5jCitAQCAtMjY1NywxMCArMjY1NywxMSBAQAorICAgaW50ICphaVR5cGUgICAgICAvKiBDb2x1bW4gdHlwZXMgKi8KKyApeworICAgaW50IGk7CisgICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUqKXBBcmc7CisgCisrICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKKyAgIHN3aXRjaCggcC0+Y01vZGUgKXsKKyAgICAgY2FzZSBNT0RFX0xpbmU6IHsKKyAgICAgICBpbnQgdyA9IDU7CisgICAgICAgaWYoIGF6QXJnPT0wICkgYnJlYWs7CisgICAgICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspeworQEAgLTMwMDcsMTAgKzMwMDgsMTEgQEAKKyAqLworIHN0YXRpYyBpbnQgY2FwdHVyZU91dHB1dENhbGxiYWNrKHZvaWQgKnBBcmcsIGludCBuQXJnLCBjaGFyICoqYXpBcmcsIGNoYXIgKipheil7CisgICBTaGVsbFRleHQgKnAgPSAoU2hlbGxUZXh0KilwQXJnOworICAgaW50IGk7CisgICBVTlVTRURfUEFSQU1FVEVSKGF6KTsKKysgIGlmKCBhekFyZz09MCApIHJldHVybiAwOworICAgaWYoIHAtPm4gKSBhcHBlbmRUZXh0KHAsICJ8IiwgMCk7CisgICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7CisgICAgIGlmKCBpICkgYXBwZW5kVGV4dChwLCAiLCIsIDApOworICAgICBpZiggYXpBcmdbaV0gKSBhcHBlbmRUZXh0KHAsIGF6QXJnW2ldLCAwKTsKKyAgIH0KK0BAIC0zODg4LDExICszODkwLDExIEBACisgICBjb25zdCBjaGFyICp6VHlwZTsKKyAgIGNvbnN0IGNoYXIgKnpTcWw7CisgICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUgKilwQXJnOworIAorICAgVU5VU0VEX1BBUkFNRVRFUihhek5vdFVzZWQpOworLSAgaWYoIG5BcmchPTMgKSByZXR1cm4gMTsKKysgIGlmKCBuQXJnIT0zIHx8IGF6QXJnPT0wICkgcmV0dXJuIDA7CisgICB6VGFibGUgPSBhekFyZ1swXTsKKyAgIHpUeXBlID0gYXpBcmdbMV07CisgICB6U3FsID0gYXpBcmdbMl07CisgCisgICBpZiggc3RyY21wKHpUYWJsZSwgInNxbGl0ZV9zZXF1ZW5jZSIpPT0wICl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xNy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkzY2IzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTY1ZjBhNTdjYTY5Mjg3MTBiNDE4YzA5NGIzNTcwYmIwIgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTcvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDUwYTk1YTdiZGU2OTdjOWZlNGRlOWFlMmZmZmRjY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTRlNDg1YWQzYTE2ZTA1NDc2NWJhZjYzNzE4MjZiNTAwMGJlZWQwN2U2MjY1MTA4OTYwNjljMGJmMDEzODc0YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MDgyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE3L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgZmlsZTovL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoIFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gImUyNjJhMjhiNzNjYzMzMGU3ZTgzNTIwYzhjZTE0ZTRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4MTRjNmY2MjlmZjkzOTY4YjJiMzdhNzA0OTdjZmU5OGIzNjZiZjU4N2EyMjYxYTU2YTVmNzUwYWY2YWU2YTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZmU2MjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40Ni4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxhJywgJycsICdmaWxlOi8vMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaCcsIGQpIH0gXAotICAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZThmNDM5M2I5ZjFlYzJlMmYzY2RiM2ZkNGY1YTE2ZGUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4ODAwY2Y4YmMyNTk3MDRhMTJhZDE4NTNmYjBlYjQzYmZlMzg1N2FmMTUyNDJlNmZiOWYyYzNmZDk1YjNmNWM2IgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzIwODQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40OC4zLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMzAwNjc1YWM1ZjI2OWFhNmViNDhmZTg5YTBkNzI2ZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEzYTlmYjE4Mjc0MGIzOTJhNDVjZDNmNDZmYTYxYTk4NWY2OGJiNmIxODE3YjUyZGFlYzIyMDM0YzQ2MTU4YzMiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eC11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZTdjNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgtdWNsaWJjCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwotYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPSR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPTh9Ci0KLWFjX2N2X3VjaGFyPSR7YWNfY3ZfdWNoYXI9bm99Ci1hY19jdl91aW50PSR7YWNfY3ZfdWludD15ZXN9Ci1hY19jdl91bG9uZz0ke2FjX2N2X3Vsb25nPXllc30KLWFjX2N2X3VzaG9ydD0ke2FjX2N2X3VzaG9ydD15ZXN9Ci0KLWFjX2N2X3RpbWVfcl90eXBlPSR7YWNfY3ZfdGltZV9yX3R5cGU9UE9TSVh9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0JST0tFTl9OSVNQTFVTX0lOQ0xVREVfRklMRVM9JHtzYW1iYV9jdl9CUk9LRU5fTklTUExVU19JTkNMVURFX0ZJTEVTPXllc30KLXNhbWJhX2N2X0JST0tFTl9SRURIQVRfN19TWVNURU1fSEVBREVSUz0ke3NhbWJhX2N2X0JST0tFTl9SRURIQVRfN19TWVNURU1fSEVBREVSUz1ub30KLXNhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPSR7c2FtYmFfY3ZfRlRSVU5DQVRFX05FRURTX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9GQ05UTDY0X0xPQ0tTPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0dFVEdST1VQUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0dFVEdST1VQUz1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0xJTlVYX1NFTkRGSUxFPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fTElOVVhfU0VOREZJTEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX1JFQURESVI9bm99Ci1zYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9JHtzYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9eWVzfQotc2FtYmFfY3ZfSEFWRV9ERVY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9ERVY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUFKT1JfRk49JHtzYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NSU5PUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfRFFCX0ZTT0ZUTElNSVQ9JHtzYW1iYV9jdl9IQVZFX0RRQl9GU09GVExJTUlUPW5vfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0ZVTkNUSU9OX01BQ1JPPSR7c2FtYmFfY3ZfSEFWRV9GVU5DVElPTl9NQUNSTz15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfSU5UMTZfRlJPTV9SUENfUlBDX0g9JHtzYW1iYV9jdl9IQVZFX0lOVDE2X0ZST01fUlBDX1JQQ19IPW5vfQotc2FtYmFfY3ZfSEFWRV9JTlQzMl9GUk9NX1JQQ19SUENfSD0ke3NhbWJhX2N2X0hBVkVfSU5UMzJfRlJPTV9SUENfUlBDX0g9bm99Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX05BVElWRV9JQ09OVj0ke3NhbWJhX2N2X0hBVkVfTkFUSVZFX0lDT05WPXllc30KLXNhbWJhX2N2X0hBVkVfT0ZGNjRfVD0ke3NhbWJhX2N2X0hBVkVfT0ZGNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfUVVPVEFDVExfNEE9JHtzYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPXllc30KLXNhbWJhX2N2X0hBVkVfUk9PVD0ke3NhbWJhX2N2X0hBVkVfUk9PVD1ub30KLXNhbWJhX2N2X0hBVkVfUlBDX0FVVEhfRVJST1JfQ09ORkxJQ1Q9JHtzYW1iYV9jdl9IQVZFX1JQQ19BVVRIX0VSUk9SX0NPTkZMSUNUPW5vfQotc2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD0ke3NhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRT0ke3NhbWJhX2N2X0hBVkVfU0VOREZJTEU9bm99Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9bm99Ci1zYW1iYV9jdl9IQVZFX1NPQ0tfU0lOX0xFTj0ke3NhbWJhX2N2X0hBVkVfU09DS19TSU5fTEVOPW5vfQotc2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMS1NJWkU9JHtzYW1iYV9jdl9IQVZFX1NUQVRfU1RfQkxLU0laRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUQVRfU1RfQkxPQ0tTPSR7c2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMT0NLUz15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0RJUkVOVDY0PW5vfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0ZMT0NLNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfSUZfRFFCTEs9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9JRl9EUUJMSz1ub30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX01FTV9EUUJMSz0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX01FTV9EUUJMSz1ub30KLXNhbWJhX2N2X0hBVkVfVFJVTkNBVEVEX1NBTFQ9JHtzYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPW5vfQotc2FtYmFfY3ZfSEFWRV9VSU5UMTZfRlJPTV9SUENfUlBDX0g9JHtzYW1iYV9jdl9IQVZFX1VJTlQxNl9GUk9NX1JQQ19SUENfSD1ub30KLXNhbWJhX2N2X0hBVkVfVUlOVDMyX0ZST01fUlBDX1JQQ19IPSR7c2FtYmFfY3ZfSEFWRV9VSU5UMzJfRlJPTV9SUENfUlBDX0g9bm99Ci1zYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtzYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVElNQlVGPSR7c2FtYmFfY3ZfSEFWRV9VVElNQlVGPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfQUREUj0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfQUREUj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX0VYSVQ9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX0VYSVQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9IT1NUPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9IT1NUPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfSUQ9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX0lEPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfTkFNRT0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfTkFNRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1BJRD0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfUElEPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfVElNRT0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfVElNRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1RWPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9UVj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1RZUEU9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX1RZUEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9VU0VSPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9VU0VSPXllc30KLXNhbWJhX2N2X0hBVkVfVVhfVVRfU1lTTEVOPSR7c2FtYmFfY3ZfSEFWRV9VWF9VVF9TWVNMRU49bm99Ci1zYW1iYV9jdl9IQVZFX1ZBX0NPUFk9JHtzYW1iYV9jdl9IQVZFX1ZBX0NPUFk9eWVzfQotc2FtYmFfY3ZfSEFWRV9XT1JLSU5HX0FGX0xPQ0FMPSR7c2FtYmFfY3ZfSEFWRV9XT1JLSU5HX0FGX0xPQ0FMPW5vfQotc2FtYmFfY3ZfSEFWRV9XZXJyb3I9JHtzYW1iYV9jdl9IQVZFX1dlcnJvcj15ZXN9Ci1zYW1iYV9jdl9QVVRVVExJTkVfUkVUVVJOU19VVE1QPSR7c2FtYmFfY3ZfUFVUVVRMSU5FX1JFVFVSTlNfVVRNUD15ZXN9Ci1zYW1iYV9jdl9RVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1JFUExBQ0VfR0VUUEFTUz0ke3NhbWJhX2N2X1JFUExBQ0VfR0VUUEFTUz15ZXN9Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfUlVOX1FVT1RBX1RFU1RTPSR7c2FtYmFfY3ZfUlVOX1FVT1RBX1RFU1RTPWF1dG99Ci1zYW1iYV9jdl9TRUVLRElSX1JFVFVSTlNfVk9JRD0ke3NhbWJhX2N2X1NFRUtESVJfUkVUVVJOU19WT0lEPXllc30KLXNhbWJhX2N2X1NJWkVPRl9JTk9fVD0ke3NhbWJhX2N2X1NJWkVPRl9JTk9fVD15ZXN9Ci1zYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9JHtzYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD0ke3NhbWJhX2N2X1NZU0NPTkZfU0NfTkdST1VQU19NQVg9eWVzfQotc2FtYmFfY3ZfU1lTUVVPVEFfRk9VTkQ9JHtzYW1iYV9jdl9TWVNRVU9UQV9GT1VORD15ZXN9Ci1zYW1iYV9jdl9TWVNRVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1NZU1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1RSWV9RVU9UQVM9JHtzYW1iYV9jdl9UUllfUVVPVEFTPW5vfQotc2FtYmFfY3ZfVFJZX1NZU19RVU9UQVM9JHtzYW1iYV9jdl9UUllfU1lTX1FVT1RBUz1ub30KLXNhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVTVUlEPXllc30KLXNhbWJhX2N2X1dJVEhfUVVPVEFTPSR7c2FtYmFfY3ZfV0lUSF9RVU9UQVM9YXV0b30KLXNhbWJhX2N2X1dJVEhfU1lTX1FVT1RBUz0ke3NhbWJhX2N2X1dJVEhfU1lTX1FVT1RBUz1hdXRvfQotc2FtYmFfY3ZfY29tcGlsZXJfc3VwcG9ydHNfbGw9JHtzYW1iYV9jdl9jb21waWxlcl9zdXBwb3J0c19sbD15ZXN9Ci1zYW1iYV9jdl9oYXZlX2xvbmdsb25nPSR7c2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc2dpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9eWVzfQotc2FtYmFfY3ZfaW1tZWRpYXRlX3N0cnVjdHVyZXM9JHtzYW1iYV9jdl9pbW1lZGlhdGVfc3RydWN0dXJlcz15ZXN9Ci1zYW1iYV9jdl9vcHRpbWl6ZV9vdXRfZnVuY2F0aW9uX2NhbGxzPSR7c2FtYmFfY3Zfb3B0aW1pemVfb3V0X2Z1bmNhdGlvbl9jYWxscz15ZXN9Ci1zYW1iYV9jdl9zaWdfYXRvbWljX3Q9JHtzYW1iYV9jdl9zaWdfYXRvbWljX3Q9eWVzfQotc2FtYmFfY3Zfc29ja2xlbl90PSR7c2FtYmFfY3Zfc29ja2xlbl90PXllc30KLXNhbWJhX2N2X3VuaXhzb2NrZXQ9JHtzYW1iYV9jdl91bml4c29ja2V0PXllc30KLXNhbWJhX2N2X3ZvbGF0aWxlPSR7c2FtYmFfY3Zfdm9sYXRpbGU9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm1lYi1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybWViLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMxZTg1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybWViLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwotYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPSR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPTh9Ci1hY19jdl9zaXplb2ZfY2hhcl9wPSR7YWNfY3Zfc2l6ZW9mX2NoYXJfcD00fQotYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPTR9Ci1hY19jdl9zaXplb2ZfcHRyZGlmZl90PSR7Z2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PTR9Ci0KLWFjX2N2X3VjaGFyPSR7YWNfY3ZfdWNoYXI9bm99Ci1hY19jdl91aW50PSR7YWNfY3ZfdWludD15ZXN9Ci1hY19jdl91bG9uZz0ke2FjX2N2X3Vsb25nPXllc30KLWFjX2N2X3VzaG9ydD0ke2FjX2N2X3VzaG9ydD15ZXN9Ci0KLWFjX2N2X3RpbWVfcl90eXBlPSR7YWNfY3ZfdGltZV9yX3R5cGU9UE9TSVh9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVEVVSUQ9JHtzYW1iYV9jdl9VU0VfU0VURVVJRD15ZXN9Ci1zYW1iYV9jdl9VU0VfU0VUUkVTVUlEPSR7c2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD15ZXN9Ci1zYW1iYV9jdl9VU0VfU0VUUkVVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVVSUQ9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFVJRFg9JHtzYW1iYV9jdl9VU0VfU0VUVUlEWD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc2dpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRT0ke3NhbWJhX2N2X0hBVkVfU0VOREZJTEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PSR7c2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PXllc30KLXNhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtzYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmYzEwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD1ub30KLWFjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz15ZXN9Ci1hY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15ZXN9Ci1hY19jdl9mdW5jX21hbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPXllc30KLWFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD15ZXN9Ci1hY19jdl9mdW5jX2dldHBncnBfdm9pZD15ZXMKLWFjX2N2X2Z1bmNfc2V0cGdycF92b2lkPXllcwotYWNfY3ZfZnVuY19zZXRncmVudF92b2lkPXllcwotYWNfY3ZfZnVuY19nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfZ2V0cHd1aWRfcj0ke2FjX2N2X2Z1bmNfZ2V0cHd1aWRfcj15ZXN9Ci1hY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89JHthY19jdl9mdW5jX2dldGFkZHJpbmZvPXllc30KLQotIyBnbGliCi1nbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99Ci1hY19jdl9mdW5jX3ByaW50Zl91bml4OTg9JHthY19jdl9mdW5jX3ByaW50Zl91bml4OTg9eWVzfQotYWNfY3ZfZnVuY19zbnByaW50Zl9jOTk9JHthY19jdl9mdW5jX3NucHJpbnRmX2M5OT15ZXN9Ci1hY19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9JHthY19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9eWVzfQotZ2xpYl9jdl9jb21wbGlhbnRfcG9zaXhfbWVtYWxpZ249JHtnbGliX2N2X2NvbXBsaWFudF9wb3NpeF9tZW1hbGlnbj0xfQotZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotZ2xpYl9jdl9oYXZlX3Fzb3J0X3I9JHtnbGliX2N2X2hhdmVfcXNvcnRfcj1ub30KLQotI2RidXMtZ2xpYgotYWNfY3ZfaGF2ZV9hYnN0cmFjdF9zb2NrZXRzPSR7YWNfY3ZfaGF2ZV9hYnN0cmFjdF9zb2NrZXRzPXllc30KLQotIyBiYXNoCi1iYXNoX2N2X3VuZGVyX3N5c19zaWdsaXN0PSR7YmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD1ub30KLWJhc2hfY3Zfc3lzX3NpZ2xpc3Q9JHtiYXNoX2N2X3N5c19zaWdsaXN0PW5vfQotCi0jIGNvcmV1dGlscwotZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT0ke2Z1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9eWVzfQotZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlcj0ke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9bm99Ci1nbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9bm99Ci1nbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9zcGF3bj0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd249eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9zcGF3bl93b3Jrcz0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9eWVzfQotCi0jIHZhX2NvcHkgYW5kIF92YV9jb3B5Ci1hY19jdl92YV9jb3B5PSR7YWNfY3ZfdmFfY29weT15ZXN9Ci1hY19jdl9fX3ZhX2NvcHk9JHthY19jdl9fX3ZhX2NvcHk9eWVzfQotYWNfY3ZfZnVuY192YV9jb3B5PSR7YWNfY3ZfZnVuY192YV9jb3B5PXllc30KLWFjX2N2X2Z1bmNfX192YV9jb3B5PSR7YWNfY3ZfZnVuY19fX3ZhX2NvcHk9eWVzfQotCi0jIHBvc2l4X2dldHB3dWlkX3IgcG9zaXhfZ2V0Z3JnaWRfciBwb3NpeF9nZXRwd25hbV9yCi1hY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgWG9yZwoteG9yZ19jdl9tYWxsb2MwX3JldHVybnNfbnVsbD0ke3hvcmdfY3ZfbWFsbG9jMF9yZXR1cm5zX251bGw9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggZjRjZjBiOC4uNGZiZjU4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC0xOSw3ICsxOSw2IEBACiBhY19jdl9zaXplb2ZfZmxvYXQ9JHthY19jdl9zaXplb2ZfZmxvYXQ9NH0KIGFjX2N2X3NpemVvZl91aWRfdD0ke2FjX2N2X3NpemVvZl91aWRfdD00fQogYWNfY3Zfc2l6ZW9mX2dpZF90PSR7YWNfY3Zfc2l6ZW9mX2dpZF90PTR9Ci1hY19jdl9zaXplb2ZfaW5vX3Q9JHthY19jdl9zaXplb2ZfaW5vX3Q9NH0KIGFjX2N2X3NpemVvZl9kZXZfdD0ke2FjX2N2X3NpemVvZl9kZXZfdD04fQogYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPSR7YWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXllc30KIGFjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwcy1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHMtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjMzNjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwcy1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZGIKLWRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci0KLSMgcnJkdG9vbAotcmRfY3ZfaWVlZV93b3Jrcz0ke3JkX2N2X2llZWVfd29ya3M9eWVzfQotIyBhY19jdl9wYXRoX1BFUkw9JHthY19jdl9wYXRoX1BFUkw9bm99Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotCi0jIHZpbQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLQotIyBpbnRlcmNvbQotYWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPSR7YWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPXllc30KLQotIyBsbWJlbmNoCi1hY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9Ci0KLSMgRC1CVVMKLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgZXZvbHV0aW9uLWRhdGEtc2VydmVyCi1hY19jdl9saWJpY29udl91dGY4PSR7YWNfY3ZfbGliaWNvbnZfdXRmOD15ZXN9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0LWxpbnV4LXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0LWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiYTU1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NC1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZGIKLWRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci0KLSMgcnJkdG9vbAotcmRfY3ZfaWVlZV93b3Jrcz0ke3JkX2N2X2llZWVfd29ya3M9eWVzfQotIyBhY19jdl9wYXRoX1BFUkw9JHthY19jdl9wYXRoX1BFUkw9bm99Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotCi0jIHZpbQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLQotIyBpbnRlcmNvbQotYWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPSR7YWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPXllc30KLQotIyBsbWJlbmNoCi1hY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9Ci0KLSMgRC1CVVMKLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgZWRzLWRidXMKLWFjX2N2X2xpYmljb252X3V0Zjg9JHthY19jdl9saWJpY29udl91dGY4PXllc30KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NGVsLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwNDk5ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NGVsLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLSMgZnJvbSBzYW1iYSAzLjAuMTRhIG9uIDUvMjkvMjAwNQotYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQotYWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzZ2lkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzdWlkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfdmFzcHJpbnRmX2RlY2w9JHthY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPXllc30KLWZ1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND0ke2Z1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND15ZXN9Ci1zYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD0ke3NhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KLXNhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj0ke3NhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVjY0X1Q9JHtzYW1iYV9jdl9IQVZFX0RFVjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01BSk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPSR7c2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUlOT1JfRk49eWVzfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9eWVzfQotc2FtYmFfY3ZfSEFWRV9NQUtFREVWPSR7c2FtYmFfY3ZfSEFWRV9NQUtFREVWPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX09GRjY0X1Q9JHtzYW1iYV9jdl9IQVZFX09GRjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPSR7c2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1JPT1Q9JHtzYW1iYV9jdl9IQVZFX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPSR7c2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9GTE9DSzY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPSR7c2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD1ub30KLXNhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj0ke3NhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj1ub30KLXNhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD0ke3NhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD1ub30KLXNhbWJhX2N2X0hBVkVfV2Vycm9yPSR7c2FtYmFfY3ZfSEFWRV9XZXJyb3I9eWVzfQotc2FtYmFfY3ZfUkVBTFBBVEhfVEFLRVNfTlVMTD0ke3NhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9bm99Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfU0laRU9GX0lOT19UPSR7c2FtYmFfY3ZfU0laRU9GX0lOT19UPXllc30KLXNhbWJhX2N2X1NJWkVPRl9PRkZfVD0ke3NhbWJhX2N2X1NJWkVPRl9PRkZfVD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05HUk9VUFNfTUFYPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49JHtzYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49bm99Ci1zYW1iYV9jdl9TWVNRVU9UQV9GT1VORD0ke3NhbWJhX2N2X1NZU1FVT1RBX0ZPVU5EPXllc30KLXNhbWJhX2N2X1NZU1FVT1RBX1dPUktTPSR7c2FtYmFfY3ZfU1lTUVVPVEFfV09SS1M9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD0ke3NhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz0ke3NhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X3N5c3F1b3Rhc19maWxlPSR7c2FtYmFfY3Zfc3lzcXVvdGFzX2ZpbGU9bGliL3N5c3F1b3Rhc180QS5jfQotIyBUaGlzIGNhY2hlZCB2YWx1ZSBuZWVkcyBhIGxvY2FsIHBhdGNoIHRvIHBpY2sgaXQgdXAsIHVwc3RyZWFtIDMuMC4xNGEKLSMgZG9lc24ndCBjYWNoZSBpdC4KLXNhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPSR7c2FtYmFfY3ZfTElOVVhfTEZTX1NVUFBPUlQ9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzZWwtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzZWwtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTIxY2RhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwc2VsLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLSMgZnJvbSBzYW1iYSAzLjAuMTRhIG9uIDUvMjkvMjAwNQotYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQotYWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzZ2lkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzdWlkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfdmFzcHJpbnRmX2RlY2w9JHthY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPXllc30KLWZ1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND0ke2Z1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND15ZXN9Ci1zYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD0ke3NhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KLXNhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj0ke3NhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVjY0X1Q9JHtzYW1iYV9jdl9IQVZFX0RFVjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01BSk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPSR7c2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUlOT1JfRk49eWVzfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9eWVzfQotc2FtYmFfY3ZfSEFWRV9NQUtFREVWPSR7c2FtYmFfY3ZfSEFWRV9NQUtFREVWPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX09GRjY0X1Q9JHtzYW1iYV9jdl9IQVZFX09GRjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPSR7c2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1JPT1Q9JHtzYW1iYV9jdl9IQVZFX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPSR7c2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9GTE9DSzY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPSR7c2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD1ub30KLXNhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj0ke3NhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj1ub30KLXNhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD0ke3NhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD1ub30KLXNhbWJhX2N2X0hBVkVfV2Vycm9yPSR7c2FtYmFfY3ZfSEFWRV9XZXJyb3I9eWVzfQotc2FtYmFfY3ZfUkVBTFBBVEhfVEFLRVNfTlVMTD0ke3NhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9bm99Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfU0laRU9GX0lOT19UPSR7c2FtYmFfY3ZfU0laRU9GX0lOT19UPXllc30KLXNhbWJhX2N2X1NJWkVPRl9PRkZfVD0ke3NhbWJhX2N2X1NJWkVPRl9PRkZfVD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05HUk9VUFNfTUFYPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49JHtzYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49bm99Ci1zYW1iYV9jdl9TWVNRVU9UQV9GT1VORD0ke3NhbWJhX2N2X1NZU1FVT1RBX0ZPVU5EPXllc30KLXNhbWJhX2N2X1NZU1FVT1RBX1dPUktTPSR7c2FtYmFfY3ZfU1lTUVVPVEFfV09SS1M9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD0ke3NhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz0ke3NhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X3N5c3F1b3Rhc19maWxlPSR7c2FtYmFfY3Zfc3lzcXVvdGFzX2ZpbGU9bGliL3N5c3F1b3Rhc180QS5jfQotIyBUaGlzIGNhY2hlZCB2YWx1ZSBuZWVkcyBhIGxvY2FsIHBhdGNoIHRvIHBpY2sgaXQgdXAsIHVwc3RyZWFtIDMuMC4xNGEKLSMgZG9lc24ndCBjYWNoZSBpdC4KLXNhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPSR7c2FtYmFfY3ZfTElOVVhfTEZTX1NVUFBPUlQ9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKaW5kZXggMmY0ZTU3MC4uNWJhZTc0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CkBAIC0zMyw3ICszMyw2IEBACiBkYl9jdl9wYXRoX3N0cmlwPSR7ZGJfY3ZfcGF0aF9zdHJpcD0vdXNyL2Jpbi9zdHJpcH0KIGRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQogZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9tdXRleD0ke2RiX2N2X211dGV4PUFSTS9nY2MtYXNzZW1ibHl9CiBkYl9jdl9wb3NpeG11dGV4ZXM9JHtkYl9jdl9wb3NpeG11dGV4ZXM9bm99CiBkYl9jdl91aW11dGV4ZXM9JHtkYl9jdl91aW11dGV4ZXM9bm99CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDMyLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKaW5kZXggMzA4ZDZlMi4uNGI3MDQyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKQEAgLTEsNiArMSw1IEBACiAjIGdlbmVyYWwKIGFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0xNn0KLWFjX2N2X3NpemVvZl9pbm9fdD0ke2FjX2N2X3NpemVvZl9pbm9fdD04fQogYWNfY3Zfc2l6ZW9mX2Rldl90PSR7YWNfY3Zfc2l6ZW9mX2Rldl90PTh9CiBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz0ke2FjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0fQogYWNfY3ZfYWxpZ25vZl9kb3VibGU9OApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eAppbmRleCBlYmRjZjY5Li43NzhlMmM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eApAQCAtMjQsNyArMjQsNiBAQAogYWNfY3Zfc2l6ZW9mX3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9OH0KIGFjX2N2X3NpemVvZl91aWRfdD0ke2FjX2N2X3NpemVvZl91aWRfdD00fQogYWNfY3Zfc2l6ZW9mX2dpZF90PSR7YWNfY3Zfc2l6ZW9mX2dpZF90PTR9Ci1hY19jdl9zaXplb2ZfaW5vX3Q9JHthY19jdl9zaXplb2ZfaW5vX3Q9OH0KIGFjX2N2X3NpemVvZl9kZXZfdD0ke2FjX2N2X3NpemVvZl9kZXZfdD04fQogYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9OH0KIGFjX2N2X3N0cmVycm9yX3JfU1VTdjM9JHthY19jdl9zdHJlcnJvcl9yX1NVU3YzPW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDI2OWY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDg2XzY0LWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSMgZ2VuZXJhbAotYWNfY3ZfdmFfdmFsX2NvcHk9JHthY19jdl92YV92YWxfY29weT1ub30KLWFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz0ke2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXN9Ci1hY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99Ci1hY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9eWVzfQotYWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPSR7YWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPW5vfQotYWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KLWFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99Ci1hY19saWJuZXRfaGF2ZV9wYWNrZXRfc29ja2V0PSR7YWNfbGlibmV0X2hhdmVfcGFja2V0X3NvY2tldD15ZXN9Ci1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotYWNfY3ZfbmVlZF90cmlvPSR7YWNfY3ZfbmVlZF90cmlvPW5vfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9fX2ludDY0PSR7YWNfY3Zfc2l6ZW9mX19faW50NjQ9MH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0xNn0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD04fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTh9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD04fQotYWNfY3Zfc3RyZXJyb3Jfcl9TVVN2Mz0ke2FjX2N2X3N0cmVycm9yX3JfU1VTdjM9bm99Ci1kYl9jdl9hbGlnbnBfdD0ke2RiX2N2X2FsaWducF90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25fdD0ke2RiX2N2X2FsaWduX3Q9J3Vuc2lnbmVkIGxvbmcgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj15ZXN9Ci1nbGliX2N2X3NhbmVfcmVhbGxvYz0ke2dsaWJfY3Zfc2FuZV9yZWFsbG9jPXllc30KLWdsaWJfY3Zfc2l6ZW9mX2dtdXRleD0ke2dsaWJfY3Zfc2l6ZW9mX2dtdXRleD00MH0KLWdsaWJfY3Zfc2l6ZW9mX2ludG1heF90PSR7Z2xpYl9jdl9zaXplb2ZfaW50bWF4X3Q9OH0KLWdsaWJfY3Zfc2l6ZW9mX3B0cmRpZmZfdD0ke2dsaWJfY3Zfc2l6ZW9mX3B0cmRpZmZfdD04fQotZ2xpYl9jdl9zaXplb2Zfc2l6ZV90PSR7Z2xpYl9jdl9zaXplb2Zfc2l6ZV90PTh9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD04fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3N5c19wdGhyZWFkX2NvbmRfdGltZWR3YWl0X3Bvc2l4PSR7Z2xpYl9jdl9zeXNfcHRocmVhZF9jb25kX3RpbWVkd2FpdF9wb3NpeD15ZXN9Ci1nbGliX2N2X3N5c19wdGhyZWFkX2dldHNwZWNpZmljX3Bvc2l4PSR7Z2xpYl9jdl9zeXNfcHRocmVhZF9nZXRzcGVjaWZpY19wb3NpeD15ZXN9Ci1nbGliX2N2X3N5c19wdGhyZWFkX211dGV4X3RyeWxvY2tfcG9zaXg9JHtnbGliX2N2X3N5c19wdGhyZWFkX211dGV4X3RyeWxvY2tfcG9zaXg9eWVzfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLWdsaWJfY3ZfdmFfdmFsX2NvcHk9JHtnbGliX2N2X3ZhX3ZhbF9jb3B5PW5vfQotbmFub19jdl9mdW5jX3JlZ2V4ZWNfc2Vndl9lbXB0eXN0cj0ke25hbm9fY3ZfZnVuY19yZWdleGVjX3NlZ3ZfZW1wdHlzdHI9bm99Ci1zYW1iYV9jdl9IQVZFX1ZBX0NPUFk9JHtzYW1iYV9jdl9IQVZFX1ZBX0NPUFk9eWVzfQotc2NyZWVuX2N2X3N5c19iY29weV9vdmVybGFwPSR7c2NyZWVuX2N2X3N5c19iY29weV9vdmVybGFwPW5vfQotc2NyZWVuX2N2X3N5c19maWZvX2Jyb2tlbl9pbXBsPSR7c2NyZWVuX2N2X3N5c19maWZvX2Jyb2tlbl9pbXBsPXllc30KLXNjcmVlbl9jdl9zeXNfZmlmb191c2FibGU9JHtzY3JlZW5fY3Zfc3lzX2ZpZm9fdXNhYmxlPXllc30KLXNjcmVlbl9jdl9zeXNfbWVtY3B5X292ZXJsYXA9JHtzY3JlZW5fY3Zfc3lzX21lbWNweV9vdmVybGFwPW5vfQotc2NyZWVuX2N2X3N5c19tZW1tb3ZlX292ZXJsYXA9JHtzY3JlZW5fY3Zfc3lzX21lbW1vdmVfb3ZlcmxhcD1ub30KLXNjcmVlbl9jdl9zeXNfc2VsZWN0X2Jyb2tlbl9yZXR2YWw9JHtzY3JlZW5fY3Zfc3lzX3NlbGVjdF9icm9rZW5fcmV0dmFsPW5vfQotc2NyZWVuX2N2X3N5c19zb2NrZXRzX25vZnM9JHtzY3JlZW5fY3Zfc3lzX3NvY2tldHNfbm9mcz1ub30KLXNjcmVlbl9jdl9zeXNfc29ja2V0c191c2FibGU9JHtzY3JlZW5fY3Zfc3lzX3NvY2tldHNfdXNhYmxlPXllc30KLXNjcmVlbl9jdl9zeXNfdGVybWluZm9fdXNlZD0ke3NjcmVlbl9jdl9zeXNfdGVybWluZm9fdXNlZD15ZXN9Ci11dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KLQotIyBnZXR0ZXh0Ci1hbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT0ke2FtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPXllc30KLQotIyBnbGliLTIuMAotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBPUkJpdDIKLWFjX2N2X2FsaWdub2ZfQ09SQkFfYm9vbGVhbj0xCi1hY19jdl9hbGlnbm9mX0NPUkJBX2NoYXI9MQotYWNfY3ZfYWxpZ25vZl9DT1JCQV9kb3VibGU9NAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9mbG9hdD00Ci1hY19jdl9hbGlnbm9mX0NPUkJBX2xvbmc9NAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nX2RvdWJsZT04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX2xvbmdfbG9uZz04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX29jdGV0PTEKLWFjX2N2X2FsaWdub2ZfQ09SQkFfcG9pbnRlcj04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX3Nob3J0PTIKLWFjX2N2X2FsaWdub2ZfQ09SQkFfc3RydWN0PTEKLWFjX2N2X2FsaWdub2ZfQ09SQkFfd2NoYXI9MgotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxmdHAKLWxmdHBfY3ZfdmFfdmFsX2NvcHk9JHtsZnRwX2N2X3ZhX3ZhbF9jb3B5PW5vfQotCi0jIHNscm4KLXNscm5fY3ZfdmFfdmFsX2NvcHk9JHtzbHJuX2N2X3ZhX3ZhbF9jb3B5PW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52CmluZGV4IDVmZTY4ZDEuLmU4MTMyMzAgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9vZS1pbml0LWJ1aWxkLWVudgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYKQEAgLTU3LDExICs1NywzIEBACiAKIFsgLXogIiRCVUlMRERJUiIgXSB8fCBjZCAiJEJVSUxERElSIgogCi0jIFNodXRkb3duIGFueSBiaXRiYWtlIHNlcnZlciBpZiB0aGUgQkJTRVJWRVIgdmFyaWFibGUgaXMgbm90IHNldAotaWYgWyAteiAiJEJCU0VSVkVSIiBdICYmIFsgLWYgYml0YmFrZS5sb2NrIF07IHRoZW4KLSAgICBncmVwICI6IiBiaXRiYWtlLmxvY2sgPiAvZGV2L251bGwgJiYgQkJTRVJWRVI9JChjYXQgYml0YmFrZS5sb2NrKSBiaXRiYWtlIC0tc3RhdHVzLW9ubHkKLSAgICBpZiBbICQ/ID0gMCBdOyB0aGVuCi0gICAgICAgIGVjaG8gIlNodXR0aW5nIGRvd24gYml0YmFrZSBtZW1vcnkgcmVzaWRlbnQgc2VydmVyIHdpdGggYml0YmFrZSAtbSIKLSAgICAgICAgQkJTRVJWRVI9JChjYXQgYml0YmFrZS5sb2NrKSBiaXRiYWtlIC1tCi0gICAgZmkKLWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52LW1lbXJlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWUxNDI1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgT0UgQnVpbGQgRW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwNi0yMDExIExpbnV4IEZvdW5kYXRpb24KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotCi0jCi0jIE5vcm1hbGx5IHRoaXMgaXMgY2FsbGVkIGFzICcuIC4vb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIDxwb3J0bnVtYmVyPiA8YnVpbGRkaXI+JwotIwotIyBUaGlzIHdvcmtzIGluIG1vc3Qgc2hlbGxzIChub3QgZGFzaCksIGJ1dCBub3QgYWxsIG9mIHRoZW0gcGFzcyB0aGUgYXJndW1lbnRzCi0jIHdoZW4gYmVpbmcgc291cmNlZC4gIFRvIHdvcmthcm91bmQgdGhlIHNoZWxsIGxpbWl0YXRpb24gdXNlICJzZXQgPHBvcnRudW1iZXI+Ci0jIDxidWlsZGRpcj4iIHByaW9yIHRvIHNvdXJjaW5nIHRoaXMgc2NyaXB0LgotIwotaWYgWyAteiAiJDEiIF07IHRoZW4KLSAgICBlY2hvICJObyBwb3J0IHNwZWNpZmllZCwgdXNpbmcgZHluYW1pY2FsbHkgc2VsZWN0ZWQgcG9ydCIKLSAgICBwb3J0PS0xCi1lbHNlCi0gICAgcG9ydD0kMQotICAgIHNoaWZ0Ci1maQotCi1pZiBbIC1uICIkQkFTSF9TT1VSQ0UiIF07IHRoZW4KLSAgICBUSElTX1NDUklQVD0kQkFTSF9TT1VSQ0UKLWVsaWYgWyAtbiAiJFpTSF9OQU1FIiBdOyB0aGVuCi0gICAgVEhJU19TQ1JJUFQ9JDAKLWVsc2UKLSAgICBUSElTX1NDUklQVD0iJChwd2QpL29lLWluaXQtYnVpbGQtZW52IgotZmkKLWlmIFsgLW4gIiRCQlNFUlZFUiIgXTsgdGhlbgotICAgIHVuc2V0IEJCU0VSVkVSCi1maQotCi1pZiBbIC16ICIkWlNIX05BTUUiIF0gJiYgWyAiJDAiID0gIiRUSElTX1NDUklQVCIgXTsgdGhlbgotICAgIGVjaG8gIkVycm9yOiBUaGlzIHNjcmlwdCBuZWVkcyB0byBiZSBzb3VyY2VkLiBQbGVhc2UgcnVuIGFzICcuICRUSElTX1NDUklQVCciCi0gICAgZXhpdCAxCi1maQotCi1pZiBbIC16ICIkT0VST09UIiBdOyB0aGVuCi0gICAgT0VST09UPSQoZGlybmFtZSAiJFRISVNfU0NSSVBUIikKLSAgICBPRVJPT1Q9JChyZWFkbGluayAtZiAiJE9FUk9PVCIpCi1maQotdW5zZXQgVEhJU19TQ1JJUFQKLQotZXhwb3J0IE9FUk9PVAotLiAkT0VST09UL3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgJiYKLSAgICBURU1QTEFURUNPTkY9IiRURU1QTEFURUNPTkYiICRPRVJPT1Qvc2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpciB8fCB7Ci0gICAgdW5zZXQgT0VST09UCi0gICAgcmV0dXJuIDEKLX0KLXVuc2V0IE9FUk9PVAotCi1bIC16ICIkQlVJTERESVIiIF0gfHwgY2QgIiRCVUlMRERJUiIKLQotcmVzPTEKLWlmIFsgLWUgYml0YmFrZS5sb2NrIF0gJiYgZ3JlcCA6IGJpdGJha2UubG9jayA+IC9kZXYvbnVsbDsgdGhlbgotICAgIEJCU0VSVkVSPSQoY2F0IGJpdGJha2UubG9jaykgYml0YmFrZSAtLXN0YXR1cy1vbmx5Ci0gICAgcmVzPSQ/Ci1maQotCi1pZiBbICRyZXMgIT0gMCBdOyB0aGVuCi0gICAgYml0YmFrZSAtLXNlcnZlci1vbmx5IC10IHhtbHJwYyAtQiBsb2NhbGhvc3Q6JHBvcnQKLWZpCi0KLWlmIFsgJHBvcnQgPSAtMSBdOyB0aGVuCi0gICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDotMQotICAgIGVjaG8gIkJpdGJha2Ugc2VydmVyIHN0YXJ0ZWQgb24gZGVtYW5kIGFzIG5lZWRlZCwgdXNlIGJpdGJha2UgLW0gdG8gc2h1dCBpdCBkb3duIgotZWxzZQotICAgIGV4cG9ydCBCQlNFUlZFUj0kKGNhdCBiaXRiYWtlLmxvY2spCi0KLSAgICBpZiBbICRyZXMgPSAwIF07IHRoZW4KLSAgICAgICAgZWNobyAiVXNpbmcgZXhpc3RpbmcgYml0YmFrZSBzZXJ2ZXIgYXQ6ICRCQlNFUlZFUiwgdXNlIGJpdGJha2UgLW0gdG8gc2h1dCBpdCBkb3duIgotICAgIGVsc2UKLSAgICAgICAgZWNobyAiQml0YmFrZSBzZXJ2ZXIgc3RhcnRlZCBhdDogJEJCU0VSVkVSLCB1c2UgYml0YmFrZSAtbSB0byBzaHV0IGl0IGRvd24iCi0gICAgZmkKLWZpCi11bnNldCBwb3J0IHJlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgppbmRleCBkZDk3NDVlLi5lNzljYjdhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgpAQCAtNyw3ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBhcmdwYXJzZQogZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCiAKICMgRW5zdXJlIFB5dGhvbkdpdCBpcyBpbnN0YWxsZWQgKGJ1aWxkaGlzdG9yeV9hbmFseXNpcyBuZWVkcyBpdCkKQEAgLTE3LDQ3ICsxNyw3MCBAQAogICAgIHByaW50KCJQbGVhc2UgaW5zdGFsbCBHaXRQeXRob24gKHB5dGhvbjMtZ2l0KSAwLjMuNCBvciBsYXRlciBpbiBvcmRlciB0byB1c2UgdGhpcyBzY3JpcHQiKQogICAgIHN5cy5leGl0KDEpCiAKK2RlZiBnZXRfYXJnc19wYXJzZXIoKToKKyAgICBkZXNjcmlwdGlvbiA9ICJSZXBvcnRzIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGluIHRoZSBidWlsZGhpc3RvcnkgcmVwb3NpdG9yeS4iCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT0iIiIKKyAgICAlKHByb2cpcyBbb3B0aW9uc10gW2Zyb20tcmV2aXNpb24gW3RvLXJldmlzaW9uXV0KKyAgICAoaWYgbm90IHNwZWNpZmllZCwgZnJvbS1yZXZpc2lvbiBkZWZhdWx0cyB0byBidWlsZC1taW51cy0xLCBhbmQgdG8tcmV2aXNpb24gZGVmYXVsdHMgdG8gSEVBRCkiIiIpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsICctLWJ1aWxkaGlzdG9yeS1kaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdidWlsZGhpc3RvcnlfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J2J1aWxkaGlzdG9yeS8nLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBwYXRoIHRvIGJ1aWxkaGlzdG9yeSBkaXJlY3RvcnkgKGRlZmF1bHRzIHRvIGJ1aWxkaGlzdG9yeS8gdW5kZXIgY3dkKSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS1yZXBvcnQtdmVyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVwb3J0X3ZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmVwb3J0IGNoYW5nZXMgaW4gUEtHRS9QS0dWL1BLR1IgZXZlbiB3aGVuIHRoZSB2YWx1ZXMgYXJlIHN0aWxsIHRoZSBkZWZhdWx0IChQRS9QVi9QUikiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tcmVwb3J0LWFsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVwb3J0X2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdGYWxzZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZXBvcnQgYWxsIGNoYW5nZXMsIG5vdCBqdXN0IHRoZSBkZWZhdWx0IHNpZ25pZmljYW50IG9uZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tLXNpZ25hdHVyZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NpZ3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJlcG9ydCBsaXN0IG9mIHNpZ25hdHVyZXMgZGlmZmVyaW5nIGluc3RlYWQgb2Ygb3V0cHV0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctUycsICctLXNpZ25hdHVyZXMtd2l0aC1kaWZmJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzaWdzZGlmZicsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmVwb3J0IG9uIGFjdHVhbCBzaWduYXR1cmUgZGlmZmVyZW5jZXMgaW5zdGVhZCBvZiBvdXRwdXQgKHJlcXVpcmVzIHNpZ25hdHVyZSBkYXRhIHRvIGhhdmUgYmVlbiBnZW5lcmF0ZWQsIGVpdGhlciBieSBydW5uaW5nIHRoZSBhY3R1YWwgdGFza3Mgb3IgdXNpbmcgYml0YmFrZSAtUykiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZXhjbHVkZS1wYXRoJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkV4Y2x1ZGUgcGF0aCBmcm9tIHRoZSBvdXRwdXQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JldmlzaW9ucycsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gWydidWlsZC1taW51cy0xJywgJ0hFQUQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcmV0dXJuIHBhcnNlcgorCiBkZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigKLSAgICAgICAgZGVzY3JpcHRpb24gPSAiUmVwb3J0cyBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpbiB0aGUgYnVpbGRoaXN0b3J5IHJlcG9zaXRvcnkuIiwKLSAgICAgICAgdXNhZ2UgPSAiIiIKLSAgICAlcHJvZyBbb3B0aW9uc10gW2Zyb20tcmV2aXNpb24gW3RvLXJldmlzaW9uXV0KLShpZiBub3Qgc3BlY2lmaWVkLCBmcm9tLXJldmlzaW9uIGRlZmF1bHRzIHRvIGJ1aWxkLW1pbnVzLTEsIGFuZCB0by1yZXZpc2lvbiBkZWZhdWx0cyB0byBIRUFEKSIiIikKIAotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcCIsICItLWJ1aWxkaGlzdG9yeS1kaXIiLAotICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHBhdGggdG8gYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAoZGVmYXVsdHMgdG8gYnVpbGRoaXN0b3J5LyB1bmRlciBjd2QpIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJidWlsZGhpc3RvcnlfZGlyIiwgZGVmYXVsdD0nYnVpbGRoaXN0b3J5LycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tcmVwb3J0LXZlcnNpb24iLAotICAgICAgICAgICAgaGVscCA9ICJSZXBvcnQgY2hhbmdlcyBpbiBQS0dFL1BLR1YvUEtHUiBldmVuIHdoZW4gdGhlIHZhbHVlcyBhcmUgc3RpbGwgdGhlIGRlZmF1bHQgKFBFL1BWL1BSKSIsCi0gICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJyZXBvcnRfdmVyIiwgZGVmYXVsdD1GYWxzZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWEiLCAiLS1yZXBvcnQtYWxsIiwKLSAgICAgICAgICAgIGhlbHAgPSAiUmVwb3J0IGFsbCBjaGFuZ2VzLCBub3QganVzdCB0aGUgZGVmYXVsdCBzaWduaWZpY2FudCBvbmVzIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcG9ydF9hbGwiLCBkZWZhdWx0PUZhbHNlKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIsICItLXNpZ25hdHVyZXMiLAotICAgICAgICAgICAgaGVscCA9ICJSZXBvcnQgbGlzdCBvZiBzaWduYXR1cmVzIGRpZmZlcmluZyBpbnN0ZWFkIG9mIG91dHB1dCIsCi0gICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzaWdzIiwgZGVmYXVsdD1GYWxzZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLVMiLCAiLS1zaWduYXR1cmVzLXdpdGgtZGlmZiIsCi0gICAgICAgICAgICBoZWxwID0gIlJlcG9ydCBvbiBhY3R1YWwgc2lnbmF0dXJlIGRpZmZlcmVuY2VzIGluc3RlYWQgb2Ygb3V0cHV0IChyZXF1aXJlcyBzaWduYXR1cmUgZGF0YSB0byBoYXZlIGJlZW4gZ2VuZXJhdGVkLCBlaXRoZXIgYnkgcnVubmluZyB0aGUgYWN0dWFsIHRhc2tzIG9yIHVzaW5nIGJpdGJha2UgLVMpIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNpZ3NkaWZmIiwgZGVmYXVsdD1GYWxzZSkKLQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhzeXMuYXJndikKLQotICAgIGlmIGxlbihhcmdzKSA+IDM6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0ludmFsaWQgYXJndW1lbnQocykgc3BlY2lmaWVkOiAlc1xuXG4nICUgJyAnLmpvaW4oYXJnc1szOl0pKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgcGFyc2VyID0gZ2V0X2FyZ3NfcGFyc2VyKCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgaWYgTG9vc2VWZXJzaW9uKGdpdC5fX3ZlcnNpb25fXykgPCAnMC4zLjEnOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJWZXJzaW9uIG9mIEdpdFB5dGhvbiBpcyB0b28gb2xkLCBwbGVhc2UgaW5zdGFsbCBHaXRQeXRob24gKHB5dGhvbi1naXQpIDAuMy4xIG9yIGxhdGVyIGluIG9yZGVyIHRvIHVzZSB0aGlzIHNjcmlwdFxuIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIpOgotICAgICAgICBpZiBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIgPT0gJ2J1aWxkaGlzdG9yeS8nOgorICAgIGlmIGxlbihhcmdzLnJldmlzaW9ucykgPiAyOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJbnZhbGlkIGFyZ3VtZW50KHMpIHNwZWNpZmllZDogJXNcblxuJyAlICcgJy5qb2luKGFyZ3MucmV2aXNpb25zWzI6XSkpCisgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKKworICAgICAgICBzeXMuZXhpdCgxKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIpOgorICAgICAgICBpZiBhcmdzLmJ1aWxkaGlzdG9yeV9kaXIgPT0gJ2J1aWxkaGlzdG9yeS8nOgogICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoY3dkKSA9PSAnYnVpbGRoaXN0b3J5JzoKLSAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIgPSBjd2QKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3B0aW9ucy5idWlsZGhpc3RvcnlfZGlyKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAiJXMiIGRvZXMgbm90IGV4aXN0XG5cbicgJSBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIpCisgICAgICAgICAgICAgICAgYXJncy5idWlsZGhpc3RvcnlfZGlyID0gY3dkCisKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYXJncy5idWlsZGhpc3RvcnlfZGlyKToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAiJXMiIGRvZXMgbm90IGV4aXN0XG5cbicgJSBhcmdzLmJ1aWxkaGlzdG9yeV9kaXIpCiAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgc3lzLmV4aXQoMSkKIApAQCAtNzEsMzAgKzk0LDI5IEBACiAgICAgc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQogICAgICMgU2V0IHBhdGggdG8gYml0YmFrZSBsaWIgZGlyIHNvIHRoZSBidWlsZGhpc3RvcnlfYW5hbHlzaXMgbW9kdWxlIGNhbiBsb2FkIGJiLnV0aWxzCiAgICAgYml0YmFrZXBhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKKwogICAgIGlmIG5vdCBiaXRiYWtlcGF0aDoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVW5hYmxlIHRvIGZpbmQgYml0YmFrZSBieSBzZWFyY2hpbmcgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGlzIHNjcmlwdCBvciBQQVRIXG4iKQogICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgaW1wb3J0IG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcwotCi0gICAgZnJvbXJldiA9ICdidWlsZC1taW51cy0xJwotICAgIHRvcmV2ID0gJ0hFQUQnCi0gICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDIgYW5kICcuLicgaW4gYXJnc1sxXToKLSAgICAgICAgICAgIHJldnMgPSBhcmdzWzFdLnNwbGl0KCcuLicpCi0gICAgICAgICAgICBmcm9tcmV2ID0gcmV2c1swXQotICAgICAgICAgICAgaWYgcmV2c1sxXToKLSAgICAgICAgICAgICAgICB0b3JldiA9IHJldnNbMV0KKyAgICBpZiBsZW4oYXJncy5yZXZpc2lvbnMpID09IDE6CisgICAgICAgIGlmICcuLicgIGluIGFyZ3MucmV2aXNpb25zWzBdOgorICAgICAgICAgICAgZnJvbXJldiwgdG9yZXYgPSBhcmdzLnJldmlzaW9uc1swXS5zcGxpdCgnLi4nKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbXJldiA9IGFyZ3NbMV0KLSAgICBpZiBsZW4oYXJncykgPiAyOgotICAgICAgICB0b3JldiA9IGFyZ3NbMl0KKyAgICAgICAgICAgIGZyb21yZXYsIHRvcmV2ID0gYXJncy5yZXZpc2lvbnNbMF0sICdIRUFEJworICAgIGVsaWYgbGVuKGFyZ3MucmV2aXNpb25zKSA9PSAyOgorICAgICAgICBmcm9tcmV2LCB0b3JldiA9IGFyZ3MucmV2aXNpb25zCisKKyAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgcHJvY2Vzc19jaGFuZ2VzCiAKICAgICBpbXBvcnQgZ2l0ZGIKKwogICAgIHRyeToKLSAgICAgICAgY2hhbmdlcyA9IG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcy5wcm9jZXNzX2NoYW5nZXMob3B0aW9ucy5idWlsZGhpc3RvcnlfZGlyLCBmcm9tcmV2LCB0b3Jldiwgb3B0aW9ucy5yZXBvcnRfYWxsLCBvcHRpb25zLnJlcG9ydF92ZXIsIG9wdGlvbnMuc2lncywgb3B0aW9ucy5zaWdzZGlmZikKKyAgICAgICAgY2hhbmdlcyA9IHByb2Nlc3NfY2hhbmdlcyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIsIGZyb21yZXYsIHRvcmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVwb3J0X2FsbCwgYXJncy5yZXBvcnRfdmVyLCBhcmdzLnNpZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zaWdzZGlmZiwgYXJncy5leGNsdWRlX3BhdGgpCiAgICAgZXhjZXB0IGdpdGRiLmV4Yy5CYWRPYmplY3QgYXMgZToKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG5vdCBhcmdzLnJldmlzaW9uczoKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlVuYWJsZSB0byBmaW5kIHByZXZpb3VzIGJ1aWxkIHJldmlzaW9uIGluIGJ1aWxkaGlzdG9yeSByZXBvc2l0b3J5XG5cbiIpCiAgICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgIGVsc2U6CkBAIC0xMDIsMTAgKzEyNCwxMSBAQAogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZm9yIGNoZyBpbiBjaGFuZ2VzOgotICAgICAgICBwcmludCgnJXMnICUgY2hnKQorICAgICAgICBvdXQgPSBzdHIoY2hnKQorICAgICAgICBpZiBvdXQ6CisgICAgICAgICAgICBwcmludChvdXQpCiAKICAgICBzeXMuZXhpdCgwKQogCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZHN0YXRzLWRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZHN0YXRzLWRpZmYKaW5kZXggYWRlYmE0NC4uYTEyOGRkMyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRzdGF0cy1kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2J1aWxkc3RhdHMtZGlmZgpAQCAtMTUsMTUgKzE1LDE4IEBACiAjCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBnbG9iCi1pbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgb3MKLWltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgYXR0cmdldHRlcgogCisjIEltcG9ydCBvZSBsaWJzCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNjcmlwdHNfcGF0aCwgJ2xpYicpKQorZnJvbSBidWlsZHN0YXRzIGltcG9ydCBCdWlsZFN0YXRzLCBkaWZmX2J1aWxkc3RhdHMsIHRhc2tkaWZmX2ZpZWxkcywgQlNWZXJEaWZmCisKKwogIyBTZXR1cCBsb2dnaW5nCiBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigpCkBAIC0zNCwxODAgKzM3LDE2IEBACiAgICAgcGFzcwogCiAKLXRhc2tkaWZmX2ZpZWxkcyA9ICgncGtnJywgJ3BrZ19vcCcsICd0YXNrJywgJ3Rhc2tfb3AnLCAndmFsdWUxJywgJ3ZhbHVlMicsCi0gICAgICAgICAgICAgICAgICAgJ2Fic2RpZmYnLCAncmVsZGlmZicpCi1UYXNrRGlmZiA9IG5hbWVkdHVwbGUoJ1Rhc2tEaWZmJywgJyAnLmpvaW4odGFza2RpZmZfZmllbGRzKSkKLQotCi1jbGFzcyBCU1Rhc2soZGljdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGZbJ3N0YXJ0X3RpbWUnXSA9IE5vbmUKLSAgICAgICAgc2VsZlsnZWxhcHNlZF90aW1lJ10gPSBOb25lCi0gICAgICAgIHNlbGZbJ3N0YXR1cyddID0gTm9uZQotICAgICAgICBzZWxmWydpb3N0YXQnXSA9IHt9Ci0gICAgICAgIHNlbGZbJ3J1c2FnZSddID0ge30KLSAgICAgICAgc2VsZlsnY2hpbGRfcnVzYWdlJ10gPSB7fQotICAgICAgICBzdXBlcihCU1Rhc2ssIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjcHV0aW1lKHNlbGYpOgotICAgICAgICAiIiJTdW0gb2YgdXNlciBhbmQgc3lzdGVtIHRpbWUgdGFrZW4gYnkgdGhlIHRhc2siIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ3J1c2FnZSddWydydV9zdGltZSddICsgc2VsZlsncnVzYWdlJ11bJ3J1X3V0aW1lJ10gKyBcCi0gICAgICAgICAgICAgICBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfc3RpbWUnXSArIHNlbGZbJ2NoaWxkX3J1c2FnZSddWydydV91dGltZSddCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgd2FsbHRpbWUoc2VsZik6Ci0gICAgICAgICIiIkVsYXBzZWQgd2FsbCBjbG9jayB0aW1lIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydlbGFwc2VkX3RpbWUnXQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlYWRfYnl0ZXMoc2VsZik6Ci0gICAgICAgICIiIkJ5dGVzIHJlYWQgZnJvbSB0aGUgYmxvY2sgbGF5ZXIiIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ2lvc3RhdCddWydyZWFkX2J5dGVzJ10KLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmKToKLSAgICAgICAgIiIiQnl0ZXMgd3JpdHRlbiB0byB0aGUgYmxvY2sgbGF5ZXIiIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ2lvc3RhdCddWyd3cml0ZV9ieXRlcyddCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVhZF9vcHMoc2VsZik6Ci0gICAgICAgICIiIk51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfaW5ibG9jayddICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X2luYmxvY2snXQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHdyaXRlX29wcyhzZWxmKToKLSAgICAgICAgIiIiTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfb3VibG9jayddICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X291YmxvY2snXQotCi0KLWRlZiByZWFkX2J1aWxkc3RhdHNfZmlsZShidWlsZHN0YXRfZmlsZSk6Ci0gICAgIiIiQ29udmVydCBidWlsZHN0YXQgdGV4dCBmaWxlIGludG8gZGljdC9qc29uIiIiCi0gICAgYnNfdGFzayA9IEJTVGFzaygpCi0gICAgbG9nLmRlYnVnKCJSZWFkaW5nIHRhc2sgYnVpbGRzdGF0cyBmcm9tICVzIiwgYnVpbGRzdGF0X2ZpbGUpCi0gICAgd2l0aCBvcGVuKGJ1aWxkc3RhdF9maWxlKSBhcyBmb2JqOgotICAgICAgICBmb3IgbGluZSBpbiBmb2JqLnJlYWRsaW5lcygpOgotICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgpCi0gICAgICAgICAgICBpZiBrZXkgPT0gJ1N0YXJ0ZWQnOgotICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBmbG9hdCh2YWwpCi0gICAgICAgICAgICAgICAgYnNfdGFza1snc3RhcnRfdGltZSddID0gc3RhcnRfdGltZQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ0VuZGVkJzoKLSAgICAgICAgICAgICAgICBlbmRfdGltZSA9IGZsb2F0KHZhbCkKLSAgICAgICAgICAgIGVsaWYga2V5LnN0YXJ0c3dpdGgoJ0lPICcpOgotICAgICAgICAgICAgICAgIHNwbGl0ID0ga2V5LnNwbGl0KCkKLSAgICAgICAgICAgICAgICBic190YXNrWydpb3N0YXQnXVtzcGxpdFsxXV0gPSBpbnQodmFsKQotICAgICAgICAgICAgZWxpZiBrZXkuZmluZCgncnVzYWdlJykgPj0gMDoKLSAgICAgICAgICAgICAgICBzcGxpdCA9IGtleS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgcnVfa2V5ID0gc3BsaXRbLTFdCi0gICAgICAgICAgICAgICAgaWYgcnVfa2V5IGluICgncnVfc3RpbWUnLCAncnVfdXRpbWUnKToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZmxvYXQodmFsKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHZhbCA9IGludCh2YWwpCi0gICAgICAgICAgICAgICAgcnVfdHlwZSA9ICdydXNhZ2UnIGlmIHNwbGl0WzBdID09ICdydXNhZ2UnIGVsc2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRfcnVzYWdlJwotICAgICAgICAgICAgICAgIGJzX3Rhc2tbcnVfdHlwZV1bcnVfa2V5XSA9IHZhbAotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ1N0YXR1cyc6Ci0gICAgICAgICAgICAgICAgYnNfdGFza1snc3RhdHVzJ10gPSB2YWwKLSAgICBic190YXNrWydlbGFwc2VkX3RpbWUnXSA9IGVuZF90aW1lIC0gc3RhcnRfdGltZQotICAgIHJldHVybiBic190YXNrCi0KLQotZGVmIHJlYWRfYnVpbGRzdGF0c19kaXIoYnNfZGlyKToKLSAgICAiIiJSZWFkIGJ1aWxkc3RhdHMgZGlyZWN0b3J5IiIiCi0gICAgZGVmIHNwbGl0X25ldnIobmV2cik6Ci0gICAgICAgICIiIlNwbGl0IG5hbWUgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSByZWNpcGUgIm5ldnIiIHN0cmluZyIiIgotICAgICAgICBuX2VfdiwgcmV2aXNpb24gPSBuZXZyLnJzcGxpdCgnLScsIDEpCi0gICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKD9QPG5hbWU+XFMrKS0oKD9QPGVwb2NoPlswLTldezEsNX0pXyk/KD9QPHZlcnNpb24+WzAtOV1cUyopJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbl9lX3YpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgICMgSWYgd2UncmUgbm90IGFibGUgdG8gcGFyc2UgYSB2ZXJzaW9uIHN0YXJ0aW5nIHdpdGggYSBudW1iZXIsIGp1c3QKLSAgICAgICAgICAgICMgdGFrZSB0aGUgcGFydCBhZnRlciBsYXN0IGRhc2gKLSAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKD9QPG5hbWU+XFMrKS0oKD9QPGVwb2NoPlswLTldezEsNX0pXyk/KD9QPHZlcnNpb24+W14tXSspJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fZV92KQotICAgICAgICBuYW1lID0gbWF0Y2guZ3JvdXAoJ25hbWUnKQotICAgICAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKQotICAgICAgICBlcG9jaCA9IG1hdGNoLmdyb3VwKCdlcG9jaCcpCi0gICAgICAgIHJldHVybiBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24KLQotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oYnNfZGlyLCAnYnVpbGRfc3RhdHMnKSk6Ci0gICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJ7fSBkb2VzIG5vdCBsb29rIGxpa2UgYSBidWlsZHN0YXRzIGRpcmVjdG9yeSIuZm9ybWF0KGJzX2RpcikpCi0KLSAgICBsb2cuZGVidWcoIlJlYWRpbmcgYnVpbGRzdGF0cyBkaXJlY3RvcnkgJXMiLCBic19kaXIpCi0KLSAgICBidWlsZHN0YXRzID0ge30KLSAgICBzdWJkaXJzID0gb3MubGlzdGRpcihic19kaXIpCi0gICAgZm9yIGRpcm5hbWUgaW4gc3ViZGlyczoKLSAgICAgICAgcmVjaXBlX2RpciA9IG9zLnBhdGguam9pbihic19kaXIsIGRpcm5hbWUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHJlY2lwZV9kaXIpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgbmFtZSwgZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uID0gc3BsaXRfbmV2cihkaXJuYW1lKQotICAgICAgICByZWNpcGVfYnMgPSB7J25ldnInOiBkaXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgJ2Vwb2NoJzogZXBvY2gsCi0gICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6IHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAncmV2aXNpb24nOiByZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICd0YXNrcyc6IHt9fQotICAgICAgICBmb3IgdGFzayBpbiBvcy5saXN0ZGlyKHJlY2lwZV9kaXIpOgotICAgICAgICAgICAgcmVjaXBlX2JzWyd0YXNrcyddW3Rhc2tdID0gW3JlYWRfYnVpbGRzdGF0c19maWxlKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVjaXBlX2RpciwgdGFzaykpXQotICAgICAgICBpZiBuYW1lIGluIGJ1aWxkc3RhdHM6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiQ2Fubm90IGhhbmRsZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSAoe30pIi5mb3JtYXQobmFtZSkpCi0gICAgICAgIGJ1aWxkc3RhdHNbbmFtZV0gPSByZWNpcGVfYnMKLQotICAgIHJldHVybiBidWlsZHN0YXRzCi0KLQotZGVmIGJzX2FwcGVuZChkc3QsIHNyYyk6Ci0gICAgIiIiQXBwZW5kIGRhdGEgZnJvbSBhbm90aGVyIGJ1aWxkc3RhdHMiIiIKLSAgICBpZiBzZXQoZHN0LmtleXMoKSkgIT0gc2V0KHNyYy5rZXlzKCkpOgotICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiUmVmdXNpbmcgdG8gam9pbiBidWlsZHN0YXRzLCBzZXQgb2YgcGFja2FnZXMgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IikKLSAgICBmb3IgcGtnLCBkYXRhIGluIGRzdC5pdGVtcygpOgotICAgICAgICBpZiBkYXRhWyduZXZyJ10gIT0gc3JjW3BrZ11bJ25ldnInXToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJSZWZ1c2luZyB0byBqb2luIGJ1aWxkc3RhdHMsIHBhY2thZ2UgdmVyc2lvbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyczoge30gdnMuIHt9Ii5mb3JtYXQoZGF0YVsnbmV2ciddLCBzcmNbcGtnXVsnbmV2ciddKSkKLSAgICAgICAgaWYgc2V0KGRhdGFbJ3Rhc2tzJ10ua2V5cygpKSAhPSBzZXQoc3JjW3BrZ11bJ3Rhc2tzJ10ua2V5cygpKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJSZWZ1c2luZyB0byBqb2luIGJ1aWxkc3RhdHMsIHNldCBvZiB0YXNrcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4ge30gZGlmZmVyIi5mb3JtYXQocGtnKSkKLSAgICAgICAgZm9yIHRhc2tuYW1lLCB0YXNrZGF0YSBpbiBkYXRhWyd0YXNrcyddLml0ZW1zKCk6Ci0gICAgICAgICAgICB0YXNrZGF0YS5leHRlbmQoc3JjW3BrZ11bJ3Rhc2tzJ11bdGFza25hbWVdKQotCi0KLWRlZiByZWFkX2J1aWxkc3RhdHNfanNvbihwYXRoKToKLSAgICAiIiJSZWFkIGJ1aWxkc3RhdHMgZnJvbSBKU09OIGZpbGUiIiIKLSAgICBidWlsZHN0YXRzID0ge30KLSAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZm9iajoKLSAgICAgICAgYnNfanNvbiA9IGpzb24ubG9hZChmb2JqKQotICAgIGZvciByZWNpcGVfYnMgaW4gYnNfanNvbjoKLSAgICAgICAgaWYgcmVjaXBlX2JzWyduYW1lJ10gaW4gYnVpbGRzdGF0czoKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlICh7fSkiLmZvcm1hdChyZWNpcGVfYnNbJ25hbWUnXSkpCi0KLSAgICAgICAgaWYgcmVjaXBlX2JzWydlcG9jaCddIGlzIE5vbmU6Ci0gICAgICAgICAgICByZWNpcGVfYnNbJ25ldnInXSA9ICJ7fS17fS17fSIuZm9ybWF0KHJlY2lwZV9ic1snbmFtZSddLCByZWNpcGVfYnNbJ3ZlcnNpb24nXSwgcmVjaXBlX2JzWydyZXZpc2lvbiddKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVjaXBlX2JzWyduZXZyJ10gPSAie30te31fe30te30iLmZvcm1hdChyZWNpcGVfYnNbJ25hbWUnXSwgcmVjaXBlX2JzWydlcG9jaCddLCByZWNpcGVfYnNbJ3ZlcnNpb24nXSwgcmVjaXBlX2JzWydyZXZpc2lvbiddKQotCi0gICAgICAgIGZvciB0YXNrLCBkYXRhIGluIHJlY2lwZV9ic1sndGFza3MnXS5jb3B5KCkuaXRlbXMoKToKLSAgICAgICAgICAgIHJlY2lwZV9ic1sndGFza3MnXVt0YXNrXSA9IFtCU1Rhc2soZGF0YSldCi0KLSAgICAgICAgYnVpbGRzdGF0c1tyZWNpcGVfYnNbJ25hbWUnXV0gPSByZWNpcGVfYnMKLQotICAgIHJldHVybiBidWlsZHN0YXRzCi0KLQogZGVmIHJlYWRfYnVpbGRzdGF0cyhwYXRoLCBtdWx0aSk6CiAgICAgIiIiUmVhZCBidWlsZHN0YXRzIiIiCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeToge30iLmZvcm1hdChwYXRoKSkKIAogICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgotICAgICAgICByZXR1cm4gcmVhZF9idWlsZHN0YXRzX2pzb24ocGF0aCkKKyAgICAgICAgcmV0dXJuIEJ1aWxkU3RhdHMuZnJvbV9maWxlX2pzb24ocGF0aCkKIAogICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwYXRoLCAnYnVpbGRfc3RhdHMnKSk6Ci0gICAgICAgIHJldHVybiByZWFkX2J1aWxkc3RhdHNfZGlyKHBhdGgpCisgICAgICAgIHJldHVybiBCdWlsZFN0YXRzLmZyb21fZGlyKHBhdGgpCiAKICAgICAjIEhhbmRsZSBhIG5vbi1idWlsZHN0YXQgZGlyZWN0b3J5CiAgICAgc3VicGF0aHMgPSBzb3J0ZWQoZ2xvYi5nbG9iKHBhdGggKyAnLyonKSkKQEAgLTIyMiw4OCArNjEsNjMgQEAKICAgICBicyA9IE5vbmUKICAgICBmb3Igc3VicGF0aCBpbiBzdWJwYXRoczoKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc3VicGF0aCk6Ci0gICAgICAgICAgICB0bXBicyA9IHJlYWRfYnVpbGRzdGF0c19qc29uKHN1YnBhdGgpCisgICAgICAgICAgICBfYnMgPSBCdWlsZFN0YXRzLmZyb21fZmlsZV9qc29uKHN1YnBhdGgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0bXBicyA9IHJlYWRfYnVpbGRzdGF0c19kaXIoc3VicGF0aCkKLSAgICAgICAgaWYgbm90IGJzOgotICAgICAgICAgICAgYnMgPSB0bXBicworICAgICAgICAgICAgX2JzID0gQnVpbGRTdGF0cy5mcm9tX2RpcihzdWJwYXRoKQorICAgICAgICBpZiBicyBpcyBOb25lOgorICAgICAgICAgICAgYnMgPSBfYnMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiSm9pbmluZyBidWlsZHN0YXRzIikKLSAgICAgICAgICAgIGJzX2FwcGVuZChicywgdG1wYnMpCi0KKyAgICAgICAgICAgIGJzLmFnZ3JlZ2F0ZShfYnMpCiAgICAgaWYgbm90IGJzOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTm8gYnVpbGRzdGF0cyBmb3VuZCB1bmRlciB7fSIuZm9ybWF0KHBhdGgpKQorCiAgICAgcmV0dXJuIGJzCiAKIAogZGVmIHByaW50X3Zlcl9kaWZmKGJzMSwgYnMyKToKICAgICAiIiJQcmludCBwYWNrYWdlIHZlcnNpb24gZGlmZmVyZW5jZXMiIiIKLSAgICBwa2dzMSA9IHNldChiczEua2V5cygpKQotICAgIHBrZ3MyID0gc2V0KGJzMi5rZXlzKCkpCi0gICAgbmV3X3BrZ3MgPSBwa2dzMiAtIHBrZ3MxCi0gICAgZGVsZXRlZF9wa2dzID0gcGtnczEgLSBwa2dzMgogCi0gICAgZWNoYW5nZWQgPSBbXQotICAgIHZjaGFuZ2VkID0gW10KLSAgICByY2hhbmdlZCA9IFtdCi0gICAgdW5jaGFuZ2VkID0gW10KLSAgICBjb21tb25fcGtncyA9IHBrZ3MyLmludGVyc2VjdGlvbihwa2dzMSkKLSAgICBpZiBjb21tb25fcGtnczoKLSAgICAgICAgZm9yIHBrZyBpbiBjb21tb25fcGtnczoKLSAgICAgICAgICAgIGlmIGJzMVtwa2ddWydlcG9jaCddICE9IGJzMltwa2ddWydlcG9jaCddOgotICAgICAgICAgICAgICAgIGVjaGFuZ2VkLmFwcGVuZChwa2cpCi0gICAgICAgICAgICBlbGlmIGJzMVtwa2ddWyd2ZXJzaW9uJ10gIT0gYnMyW3BrZ11bJ3ZlcnNpb24nXToKLSAgICAgICAgICAgICAgICB2Y2hhbmdlZC5hcHBlbmQocGtnKQotICAgICAgICAgICAgZWxpZiBiczFbcGtnXVsncmV2aXNpb24nXSAhPSBiczJbcGtnXVsncmV2aXNpb24nXToKLSAgICAgICAgICAgICAgICByY2hhbmdlZC5hcHBlbmQocGtnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB1bmNoYW5nZWQuYXBwZW5kKHBrZykKKyAgICBkaWZmID0gQlNWZXJEaWZmKGJzMSwgYnMyKQogCi0gICAgbWF4bGVuID0gbWF4KFtsZW4ocGtnKSBmb3IgcGtnIGluIHBrZ3MxLnVuaW9uKHBrZ3MyKV0pCisgICAgbWF4bGVuID0gbWF4KFtsZW4ocikgZm9yIHIgaW4gc2V0KGJzMS5rZXlzKCkpLnVuaW9uKHNldChiczIua2V5cygpKSldKQogICAgIGZtdF9zdHIgPSAiICB7OnttYXhsZW59fSAoe30pIgotIyAgICBpZiB1bmNoYW5nZWQ6Ci0jICAgICAgICBwcmludCgiXG5VTkNIQU5HRUQgUEFDS0FHRVM6IikKLSMgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tIikKLSMgICAgICAgIG1heGxlbiA9IG1heChbbGVuKHBrZykgZm9yIHBrZyBpbiB1bmNoYW5nZWRdKQotIyAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQodW5jaGFuZ2VkKToKLSMgICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGJzMltwa2ddWyduZXZyJ10sIG1heGxlbj1tYXhsZW4pKQogCi0gICAgaWYgbmV3X3BrZ3M6Ci0gICAgICAgIHByaW50KCJcbk5FVyBQQUNLQUdFUzoiKQotICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKG5ld19wa2dzKToKLSAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KHBrZywgYnMyW3BrZ11bJ25ldnInXSwgbWF4bGVuPW1heGxlbikpCisgICAgaWYgZGlmZi5uZXc6CisgICAgICAgIHByaW50KCJcbk5FVyBSRUNJUEVTOiIpCisgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0iKQorICAgICAgICBmb3IgbmFtZSwgdmFsIGluIHNvcnRlZChkaWZmLm5ldy5pdGVtcygpKToKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIHZhbC5uZXZyLCBtYXhsZW49bWF4bGVuKSkKIAotICAgIGlmIGRlbGV0ZWRfcGtnczoKLSAgICAgICAgcHJpbnQoIlxuREVMRVRFRCBQQUNLQUdFUzoiKQotICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0iKQotICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChkZWxldGVkX3BrZ3MpOgotICAgICAgICAgICAgcHJpbnQoZm10X3N0ci5mb3JtYXQocGtnLCBiczFbcGtnXVsnbmV2ciddLCBtYXhsZW49bWF4bGVuKSkKKyAgICBpZiBkaWZmLmRyb3BwZWQ6CisgICAgICAgIHByaW50KCJcbkRST1BQRUQgUkVDSVBFUzoiKQorICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIGZvciBuYW1lLCB2YWwgaW4gc29ydGVkKGRpZmYuZHJvcHBlZC5pdGVtcygpKToKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIHZhbC5uZXZyLCBtYXhsZW49bWF4bGVuKSkKIAogICAgIGZtdF9zdHIgPSAiICB7MDp7bWF4bGVufX0gezE6PDIwfSAgICAoezJ9KSIKLSAgICBpZiByY2hhbmdlZDoKKyAgICBpZiBkaWZmLnJjaGFuZ2VkOgogICAgICAgICBwcmludCgiXG5SRVZJU0lPTiBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHJjaGFuZ2VkKToKLSAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHBrZywgYnMxW3BrZ11bJ3JldmlzaW9uJ10sIGJzMltwa2ddWydyZXZpc2lvbiddKQotICAgICAgICAgICAgZmllbGQyID0gInt9IC0+IHt9Ii5mb3JtYXQoYnMxW3BrZ11bJ25ldnInXSwgYnMyW3BrZ11bJ25ldnInXSkKLSAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KHBrZywgZmllbGQxLCBmaWVsZDIsIG1heGxlbj1tYXhsZW4pKQorICAgICAgICBmb3IgbmFtZSwgdmFsIGluIHNvcnRlZChkaWZmLnJjaGFuZ2VkLml0ZW1zKCkpOgorICAgICAgICAgICAgZmllbGQxID0gInt9IC0+IHt9Ii5mb3JtYXQodmFsLmxlZnQucmV2aXNpb24sIHZhbC5yaWdodC5yZXZpc2lvbikKKyAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0Lm5ldnIsIHZhbC5yaWdodC5uZXZyKQorICAgICAgICAgICAgcHJpbnQoZm10X3N0ci5mb3JtYXQobmFtZSwgZmllbGQxLCBmaWVsZDIsIG1heGxlbj1tYXhsZW4pKQogCi0gICAgaWYgdmNoYW5nZWQ6CisgICAgaWYgZGlmZi52Y2hhbmdlZDoKICAgICAgICAgcHJpbnQoIlxuVkVSU0lPTiBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tIikKLSAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQodmNoYW5nZWQpOgotICAgICAgICAgICAgZmllbGQxID0gInt9IC0+IHt9Ii5mb3JtYXQoYnMxW3BrZ11bJ3ZlcnNpb24nXSwgYnMyW3BrZ11bJ3ZlcnNpb24nXSkKLSAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWyduZXZyJ10sIGJzMltwa2ddWyduZXZyJ10pCi0gICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKKyAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzb3J0ZWQoZGlmZi52Y2hhbmdlZC5pdGVtcygpKToKKyAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0LnZlcnNpb24sIHZhbC5yaWdodC52ZXJzaW9uKQorICAgICAgICAgICAgZmllbGQyID0gInt9IC0+IHt9Ii5mb3JtYXQodmFsLmxlZnQubmV2ciwgdmFsLnJpZ2h0Lm5ldnIpCisgICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChuYW1lLCBmaWVsZDEsIGZpZWxkMiwgbWF4bGVuPW1heGxlbikpCiAKLSAgICBpZiBlY2hhbmdlZDoKKyAgICBpZiBkaWZmLmVjaGFuZ2VkOgogICAgICAgICBwcmludCgiXG5FUE9DSCBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKGVjaGFuZ2VkKToKLSAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWydlcG9jaCddLCBiczJbcGtnXVsnZXBvY2gnXSkKLSAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWyduZXZyJ10sIGJzMltwa2ddWyduZXZyJ10pCi0gICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKKyAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzb3J0ZWQoZGlmZi5lY2hhbmdlZC5pdGVtcygpKToKKyAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0LmVwb2NoLCB2YWwucmlnaHQuZXBvY2gpCisgICAgICAgICAgICBmaWVsZDIgPSAie30gLT4ge30iLmZvcm1hdCh2YWwubGVmdC5uZXZyLCB2YWwucmlnaHQubmV2cikKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKIAogCiBkZWYgcHJpbnRfdGFza19kaWZmKGJzMSwgYnMyLCB2YWxfdHlwZSwgbWluX3ZhbD0wLCBtaW5fYWJzZGlmZj0wLCBzb3J0X2J5PSgnYWJzZGlmZicsKSk6CkBAIC0zNDMsMTIgKzE1NywxMCBAQAogICAgICAgICAiIiJHZXQgY3VtdWxhdGl2ZSBzdW0gb2YgYWxsIHRhc2tzIiIiCiAgICAgICAgIHRvdGFsID0gMC4wCiAgICAgICAgIGZvciByZWNpcGVfZGF0YSBpbiBidWlsZHN0YXRzLnZhbHVlcygpOgotICAgICAgICAgICAgZm9yIGJzX3Rhc2sgaW4gcmVjaXBlX2RhdGFbJ3Rhc2tzJ10udmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgdG90YWwgKz0gc3VtKFtnZXRhdHRyKGIsIHZhbF90eXBlKSBmb3IgYiBpbiBic190YXNrXSkgLyBsZW4oYnNfdGFzaykKKyAgICAgICAgICAgIGZvciBic190YXNrIGluIHJlY2lwZV9kYXRhLnRhc2tzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHRvdGFsICs9IGdldGF0dHIoYnNfdGFzaywgdmFsX3R5cGUpCiAgICAgICAgIHJldHVybiB0b3RhbAogCi0gICAgdGFza3NfZGlmZiA9IFtdCi0KICAgICBpZiBtaW5fdmFsOgogICAgICAgICBwcmludCgiSWdub3JpbmcgdGFza3MgbGVzcyB0aGFuIHt9ICh7fSkiLmZvcm1hdCgKICAgICAgICAgICAgICAgICB2YWxfdG9fc3RyKG1pbl92YWwsIFRydWUpLCB2YWxfdG9fc3RyKG1pbl92YWwpKSkKQEAgLTM1Nyw0OSArMTY5LDcgQEAKICAgICAgICAgICAgICAgICB2YWxfdG9fc3RyKG1pbl9hYnNkaWZmLCBUcnVlKSwgdmFsX3RvX3N0cihtaW5fYWJzZGlmZikpKQogCiAgICAgIyBQcmVwYXJlIHRoZSBkYXRhCi0gICAgcGtncyA9IHNldChiczEua2V5cygpKS51bmlvbihzZXQoYnMyLmtleXMoKSkpCi0gICAgZm9yIHBrZyBpbiBwa2dzOgotICAgICAgICB0YXNrczEgPSBiczFbcGtnXVsndGFza3MnXSBpZiBwa2cgaW4gYnMxIGVsc2Uge30KLSAgICAgICAgdGFza3MyID0gYnMyW3BrZ11bJ3Rhc2tzJ10gaWYgcGtnIGluIGJzMiBlbHNlIHt9Ci0gICAgICAgIGlmIG5vdCB0YXNrczE6Ci0gICAgICAgICAgICBwa2dfb3AgPSAnKyAnCi0gICAgICAgIGVsaWYgbm90IHRhc2tzMjoKLSAgICAgICAgICAgIHBrZ19vcCA9ICctICcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBrZ19vcCA9ICcgICcKLQotICAgICAgICBmb3IgdGFzayBpbiBzZXQodGFza3MxLmtleXMoKSkudW5pb24oc2V0KHRhc2tzMi5rZXlzKCkpKToKLSAgICAgICAgICAgIHRhc2tfb3AgPSAnICAnCi0gICAgICAgICAgICBpZiB0YXNrIGluIHRhc2tzMToKLSAgICAgICAgICAgICAgICAjIEF2ZXJhZ2Ugb3ZlciBhbGwgdmFsdWVzCi0gICAgICAgICAgICAgICAgdmFsMSA9IFtnZXRhdHRyKGIsIHZhbF90eXBlKSBmb3IgYiBpbiBiczFbcGtnXVsndGFza3MnXVt0YXNrXV0KLSAgICAgICAgICAgICAgICB2YWwxID0gc3VtKHZhbDEpIC8gbGVuKHZhbDEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRhc2tfb3AgPSAnKyAnCi0gICAgICAgICAgICAgICAgdmFsMSA9IDAKLSAgICAgICAgICAgIGlmIHRhc2sgaW4gdGFza3MyOgotICAgICAgICAgICAgICAgICMgQXZlcmFnZSBvdmVyIGFsbCB2YWx1ZXMKLSAgICAgICAgICAgICAgICB2YWwyID0gW2dldGF0dHIoYiwgdmFsX3R5cGUpIGZvciBiIGluIGJzMltwa2ddWyd0YXNrcyddW3Rhc2tdXQotICAgICAgICAgICAgICAgIHZhbDIgPSBzdW0odmFsMikgLyBsZW4odmFsMikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsMiA9IDAKLSAgICAgICAgICAgICAgICB0YXNrX29wID0gJy0gJwotCi0gICAgICAgICAgICBpZiB2YWwxID09IDA6Ci0gICAgICAgICAgICAgICAgcmVsZGlmZiA9IGZsb2F0KCdpbmYnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWxkaWZmID0gMTAwICogKHZhbDIgLSB2YWwxKSAvIHZhbDEKLQotICAgICAgICAgICAgaWYgbWF4KHZhbDEsIHZhbDIpIDwgbWluX3ZhbDoKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkZpbHRlcmluZyBvdXQgJXM6JXMgKCVzKSIsIHBrZywgdGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsX3RvX3N0cihtYXgodmFsMSwgdmFsMikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBhYnModmFsMiAtIHZhbDEpIDwgbWluX2Fic2RpZmY6Ci0gICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJGaWx0ZXJpbmcgb3V0ICVzOiVzIChkaWZmZXJlbmNlIG9mICVzKSIsIHBrZywgdGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsX3RvX3N0cih2YWwyLXZhbDEpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0YXNrc19kaWZmLmFwcGVuZChUYXNrRGlmZihwa2csIHBrZ19vcCwgdGFzaywgdGFza19vcCwgdmFsMSwgdmFsMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDItdmFsMSwgcmVsZGlmZikpCisgICAgdGFza3NfZGlmZiA9IGRpZmZfYnVpbGRzdGF0cyhiczEsIGJzMiwgdmFsX3R5cGUsIG1pbl92YWwsIG1pbl9hYnNkaWZmKQogCiAgICAgIyBTb3J0IG91ciBsaXN0CiAgICAgZm9yIGZpZWxkIGluIHJldmVyc2VkKHNvcnRfYnkpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9idWlsZC1wZXJmLXRlc3Qtd3JhcHBlci5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LXdyYXBwZXIuc2gKaW5kZXggM2RhMzI1My4uMTliZWUxZCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9idWlsZC1wZXJmLXRlc3Qtd3JhcHBlci5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2J1aWxkLXBlcmYtdGVzdC13cmFwcGVyLnNoCkBAIC0zNSw2ICszNSw3IEBACiAgIC1DIEdJVF9SRVBPICAgICAgIGNvbW1pdCByZXN1bHRzIGludG8gR2l0CiAgIC1FIEVNQUlMX0FERFIgICAgIHNlbmQgZW1haWwgcmVwb3J0CiAgIC1QIEdJVF9SRU1PVEUgICAgIHB1c2ggcmVzdWx0cyB0byBhIHJlbW90ZSBHaXQgcmVwb3NpdG9yeQorICAtUiBERVNUICAgICAgICAgICByc3luYyByZXBvcnRzIHRvIGEgcmVtb3RlIGRlc3RpbmF0aW9uCiAgIC13IFdPUktfRElSICAgICAgIHdvcmsgZGlyIGZvciB0aGlzIHNjcmlwdAogICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogR0lUX1RPUF9ESVIvYnVpbGQtcGVyZi10ZXN0KQogICAteCAgICAgICAgICAgICAgICBjcmVhdGUgeG1sIHJlcG9ydCAoaW5zdGVhZCBvZiBqc29uKQpAQCAtNTAsNyArNTEsNyBAQAogY29tbWl0aXNoPSIiCiBvZV9idWlsZF9wZXJmX3Rlc3RfZXh0cmFfb3B0cz0oKQogb2VfZ2l0X2FyY2hpdmVfZXh0cmFfb3B0cz0oKQotd2hpbGUgZ2V0b3B0cyAiaGE6YzpDOkU6UDp3OngiIG9wdDsgZG8KK3doaWxlIGdldG9wdHMgImhhOmM6QzpFOlA6Ujp3OngiIG9wdDsgZG8KICAgICBjYXNlICRvcHQgaW4KICAgICAgICAgaCkgIHVzYWdlCiAgICAgICAgICAgICBleGl0IDAKQEAgLTY1LDYgKzY2LDggQEAKICAgICAgICAgICAgIDs7CiAgICAgICAgIFApICBvZV9naXRfYXJjaGl2ZV9leHRyYV9vcHRzKz0oIi0tcHVzaCIgIiRPUFRBUkciKQogICAgICAgICAgICAgOzsKKyAgICAgICAgUikgIHJzeW5jX2RzdD0iJE9QVEFSRyIKKyAgICAgICAgICAgIDs7CiAgICAgICAgIHcpICBiYXNlX2Rpcj1gcmVhbHBhdGggLXMgIiRPUFRBUkciYAogICAgICAgICAgICAgOzsKICAgICAgICAgeCkgIG9lX2J1aWxkX3BlcmZfdGVzdF9leHRyYV9vcHRzKz0oIi0teG1sIikKQEAgLTEzMiw2ICsxMzUsMTEgQEAKICAgICBnaXQgcmVzZXQgLS1oYXJkICRjb21taXQgPiAvZGV2L251bGwKIGZpCiAKKyMgRGV0ZXJtaW5lIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoCiticmFuY2g9YGdpdCBzeW1ib2xpYy1yZWYgSEVBRCAyPiAvZGV2L251bGxgCisjIFN0cmlwIHJlZnMvaGVhZHMvCiticmFuY2g9JHticmFuY2g6MTF9CisKICMgU2V0dXAgYnVpbGQgZW52aXJvbm1lbnQKIGlmIFsgLXogIiRiYXNlX2RpciIgXTsgdGhlbgogICAgIGJhc2VfZGlyPSIkZ2l0X3RvcGRpci9idWlsZC1wZXJmLXRlc3QiCkBAIC0xODcsMTMgKzE5NSwyNSBAQAogICAgICAgICAiJHtvZV9naXRfYXJjaGl2ZV9leHRyYV9vcHRzW0BdfSIgXAogICAgICAgICAiJHJlc3VsdHNfZGlyIgogCisgICAgIyBHZW5lcmF0ZSB0ZXN0IHJlcG9ydHMKKyAgICBzYW5pdGl6ZWRfYnJhbmNoPWBlY2hvICRicmFuY2ggfCB0ciAvIF9gCisgICAgcmVwb3J0X3R4dD1gaG9zdG5hbWVgXyR7c2FuaXRpemVkX2JyYW5jaH1fJHttYWNoaW5lfS50eHQKKyAgICByZXBvcnRfaHRtbD1gaG9zdG5hbWVgXyR7c2FuaXRpemVkX2JyYW5jaH1fJHttYWNoaW5lfS5odG1sCisgICAgZWNobyAtZSAiXG5HZW5lcmF0aW5nIHRlc3QgcmVwb3J0IgorICAgIG9lLWJ1aWxkLXBlcmYtcmVwb3J0IC1yICIkcmVzdWx0c19yZXBvIiA+ICRyZXBvcnRfdHh0CisgICAgb2UtYnVpbGQtcGVyZi1yZXBvcnQgLXIgIiRyZXN1bHRzX3JlcG8iIC0taHRtbCA+ICRyZXBvcnRfaHRtbAorCiAgICAgIyBTZW5kIGVtYWlsIHJlcG9ydAogICAgIGlmIFsgLW4gIiRlbWFpbF90byIgXTsgdGhlbgotICAgICAgICBlY2hvIC1lICJcbkVtYWlsaW5nIHRlc3QgcmVwb3J0IgorICAgICAgICBlY2hvICJFbWFpbGluZyB0ZXN0IHJlcG9ydCIKICAgICAgICAgb3NfbmFtZT1gZ2V0X29zX3JlbGVhc2VfdmFyIFBSRVRUWV9OQU1FYAotICAgICAgICBvZS1idWlsZC1wZXJmLXJlcG9ydCAtciAiJHJlc3VsdHNfcmVwbyIgPiByZXBvcnQudHh0Ci0gICAgICAgIG9lLWJ1aWxkLXBlcmYtcmVwb3J0IC1yICIkcmVzdWx0c19yZXBvIiAtLWh0bWwgPiByZXBvcnQuaHRtbAotICAgICAgICAiJHNjcmlwdF9kaXIiL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5IC0tdG8gIiRlbWFpbF90byIgLS1zdWJqZWN0ICJCdWlsZCBQZXJmIFRlc3QgUmVwb3J0IGZvciAkb3NfbmFtZSIgLS10ZXh0IHJlcG9ydC50eHQgLS1odG1sIHJlcG9ydC5odG1sICIke09FX0JVSUxEX1BFUkZfUkVQT1JUX0VNQUlMX0VYVFJBX0FSR1NbQF19IgorICAgICAgICAiJHNjcmlwdF9kaXIiL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5IC0tdG8gIiRlbWFpbF90byIgLS1zdWJqZWN0ICJCdWlsZCBQZXJmIFRlc3QgUmVwb3J0IGZvciAkb3NfbmFtZSIgLS10ZXh0ICRyZXBvcnRfdHh0IC0taHRtbCAkcmVwb3J0X2h0bWwgIiR7T0VfQlVJTERfUEVSRl9SRVBPUlRfRU1BSUxfRVhUUkFfQVJHU1tAXX0iCisgICAgZmkKKworICAgICMgVXBsb2FkIHJlcG9ydCBmaWxlcywgdW5sZXNzIHdlJ3JlIG9uIGRldGFjaGVkIGhlYWQKKyAgICBpZiBbIC1uICIkcnN5bmNfZHN0IiAtYSAtbiAiJGJyYW5jaCIgXTsgdGhlbgorICAgICAgICBlY2hvICJVcGxvYWRpbmcgdGVzdCByZXBvcnQiCisgICAgICAgIHJzeW5jICRyZXBvcnRfdHh0ICRyZXBvcnRfaHRtbCAkcnN5bmNfZHN0CiAgICAgZmkKIGZpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvb2UtYnVpbGQtcGVyZi1yZXBvcnQtZW1haWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5CmluZGV4IDI2MWNhNTEuLjkxMzg0N2IgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvb2UtYnVpbGQtcGVyZi1yZXBvcnQtZW1haWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9vZS1idWlsZC1wZXJmLXJlcG9ydC1lbWFpbC5weQpAQCAtMjUsNiArMjUsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQorZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKIGZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAogCkBAIC03MSw2ICs3MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT25seSBwcmludCBlcnJvcnMiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdG8nLCBhY3Rpb249J2FwcGVuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZWNpcGllbnRzIG9mIHRoZSBlbWFpbCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jYycsIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNhcmJvbiBjb3B5IHJlY2lwaWVudHMgb2YgdGhlIGVtYWlsIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJjYycsIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkJsaW5kIGNhcmJvbiBjb3B5IHJlY2lwaWVudHMgb2YgdGhlIGVtYWlsIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN1YmplY3QnLCBkZWZhdWx0PSJZb2N0byBidWlsZCBwZXJmIHRlc3QgcmVwb3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVtYWlsIHN1YmplY3QiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0ZGlyJywgJy1vJywKQEAgLTEwNywxNSArMTEyLDYgQEAKICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ29wdGlwbmcnLCBvdXRmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAKLWRlZiBlbmNvZGVfcG5nKHBuZ2ZpbGUpOgotICAgICIiIkVuY29kZSBwbmcgaW50byBhIDxpbWc+IGh0bWwgZWxlbWVudCIiIgotICAgIHdpdGggb3BlbihwbmdmaWxlLCAncmInKSBhcyBmOgotICAgICAgICBkYXRhID0gZi5yZWFkKCkKLQotICAgIGI2NF9kYXRhID0gYmFzZTY0LmI2NGVuY29kZShkYXRhKQotICAgIHJldHVybiAnPGltZyBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgYjY0X2RhdGEuZGVjb2RlKCd1dGYtOCcpICsgJyI+XG4nCi0KLQogZGVmIG1hbmdsZV9odG1sX3JlcG9ydChpbmZpbGUsIG91dGZpbGUsIHBuZ3MpOgogICAgICIiIk1hbmdsZSBodG1sIGZpbGUgaW50byBhIGVtYWlsIGNvbXBhdGlibGUgZm9ybWF0IiIiCiAgICAgcGFzdGUgPSBUcnVlCkBAIC0xNDAsOSArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBSZXBsYWNlIGNoYXJ0cyB3aXRoIDxpbWc+IGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJzxkaXYgaWQ9Iig/UDxpZD5cdyspIicsIHN0cmlwcGVkKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbWF0Y2guZ3JvdXAoJ2lkJykgaW4gcG5nczoKLSAgICAgICAgICAgICAgICAgICAgICAgICNmX291dC53cml0ZSgnPGltZyBzcmM9Int9Ij5cbicuZm9ybWF0KG1hdGNoLmdyb3VwKCdpZCcpICsgJy5wbmcnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19maWxlID0gb3MucGF0aC5qb2luKHBuZ19kaXIsIG1hdGNoLmdyb3VwKCdpZCcpICsgJy5wbmcnKQotICAgICAgICAgICAgICAgICAgICAgICAgZl9vdXQud3JpdGUoZW5jb2RlX3BuZyhwbmdfZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmX291dC53cml0ZSgnPGltZyBzcmM9ImNpZDp7fSJcbicuZm9ybWF0KG1hdGNoLmdyb3VwKCdpZCcpKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGZfb3V0LndyaXRlKGxpbmUpCiAKQEAgLTE2Niw3ICsxNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAgICAgcG5ncyA9IFtdCi0gICAgICAgIGF0dGFjaG1lbnRzID0gW10KKyAgICAgICAgaW1hZ2VzID0gW10KICAgICAgICAgZm9yIGZuYW1lIGluIG9zLmxpc3RkaXIodG1wZGlyKToKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZm5hbWUpCiAgICAgICAgICAgICBpZiBleHQgPT0gJy5wbmcnOgpAQCAtMTc0LDcgKzE2OCw3IEBACiAgICAgICAgICAgICAgICAgZGVjb2RlX3BuZyhvcy5wYXRoLmpvaW4odG1wZGlyLCBmbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBmbmFtZSkpCiAgICAgICAgICAgICAgICAgcG5ncy5hcHBlbmQoYmFzZSkKLSAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoZm5hbWUpCisgICAgICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChmbmFtZSkKICAgICAgICAgICAgIGVsaWYgZXh0IGluICgnLmh0bWwnLCAnLmh0bScpOgogICAgICAgICAgICAgICAgIHJlcG9ydF9maWxlID0gZm5hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0xODQsMTEgKzE3OCwxMyBAQAogICAgICAgICBsb2cuZGVidWcoIk1hbmdsaW5nIGh0bWwgcmVwb3J0IGZpbGUgJXMiLCByZXBvcnRfZmlsZSkKICAgICAgICAgbWFuZ2xlX2h0bWxfcmVwb3J0KG9zLnBhdGguam9pbih0bXBkaXIsIHJlcG9ydF9maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvdXRkaXIsIHJlcG9ydF9maWxlKSwgcG5ncykKLSAgICAgICAgcmV0dXJuIHJlcG9ydF9maWxlLCBhdHRhY2htZW50cworICAgICAgICByZXR1cm4gKG9zLnBhdGguam9pbihvdXRkaXIsIHJlcG9ydF9maWxlKSwKKyAgICAgICAgICAgICAgICBbb3MucGF0aC5qb2luKG91dGRpciwgaSkgZm9yIGkgaW4gaW1hZ2VzXSkKICAgICBmaW5hbGx5OgogICAgICAgICBzaHV0aWwucm10cmVlKHRtcGRpcikKIAotZGVmIHNlbmRfZW1haWwodGV4dF9mbiwgaHRtbF9mbiwgc3ViamVjdCwgcmVjaXBpZW50cyk6CitkZWYgc2VuZF9lbWFpbCh0ZXh0X2ZuLCBodG1sX2ZuLCBpbWFnZV9mbnMsIHN1YmplY3QsIHJlY2lwaWVudHMsIGNvcHk9W10sCisgICAgICAgICAgICAgICBibGluZF9jb3B5PVtdKToKICAgICAiIiJTZW5kIGVtYWlsIiIiCiAgICAgIyBHZW5lcmF0ZSBlbWFpbCBtZXNzYWdlCiAgICAgdGV4dF9tc2cgPSBodG1sX21zZyA9IE5vbmUKQEAgLTE5Nyw4ICsxOTMsMTYgQEAKICAgICAgICAgICAgIHRleHRfbXNnID0gTUlNRVRleHQoIllvY3RvIGJ1aWxkIHBlcmZvcm1hbmNlIHRlc3QgcmVwb3J0LlxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYucmVhZCgpLCAncGxhaW4nKQogICAgIGlmIGh0bWxfZm46CisgICAgICAgIGh0bWxfbXNnID0gbXNnID0gTUlNRU11bHRpcGFydCgncmVsYXRlZCcpCiAgICAgICAgIHdpdGggb3BlbihodG1sX2ZuKSBhcyBmOgotICAgICAgICAgICAgaHRtbF9tc2cgPSBNSU1FVGV4dChmLnJlYWQoKSwgJ2h0bWwnKQorICAgICAgICAgICAgaHRtbF9tc2cuYXR0YWNoKE1JTUVUZXh0KGYucmVhZCgpLCAnaHRtbCcpKQorICAgICAgICBmb3IgaW1nX2ZuIGluIGltYWdlX2ZuczoKKyAgICAgICAgICAgICMgRXhwZWN0IHRoYXQgY29udGVudCBpZCBpcyBzYW1lIGFzIHRoZSBmaWxlbmFtZQorICAgICAgICAgICAgY2lkID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGltZ19mbikpWzBdCisgICAgICAgICAgICB3aXRoIG9wZW4oaW1nX2ZuLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIGltYWdlX21zZyA9IE1JTUVJbWFnZShmLnJlYWQoKSkKKyAgICAgICAgICAgIGltYWdlX21zZ1snQ29udGVudC1JRCddID0gJzx7fT4nLmZvcm1hdChjaWQpCisgICAgICAgICAgICBodG1sX21zZy5hdHRhY2goaW1hZ2VfbXNnKQogCiAgICAgaWYgdGV4dF9tc2cgYW5kIGh0bWxfbXNnOgogICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCkBAIC0yMTcsNiArMjIxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAne31Ae30nLmZvcm1hdChwd19kYXRhLnB3X25hbWUsIHNvY2tldC5nZXRmcWRuKCkpKQogICAgIG1zZ1snRnJvbSddID0gInt9IDx7fT4iLmZvcm1hdChmdWxsX25hbWUsIGVtYWlsKQogICAgIG1zZ1snVG8nXSA9ICcsICcuam9pbihyZWNpcGllbnRzKQorICAgIGlmIGNvcHk6CisgICAgICAgIG1zZ1snQ2MnXSA9ICcsICcuam9pbihjb3B5KQorICAgIGlmIGJsaW5kX2NvcHk6CisgICAgICAgIG1zZ1snQmNjJ10gPSAnLCAnLmpvaW4oYmxpbmRfY29weSkKICAgICBtc2dbJ1N1YmplY3QnXSA9IHN1YmplY3QKIAogICAgICMgU2VuZCBlbWFpbApAQCAtMjQzLDE0ICsyNTEsMTkgQEAKIAogICAgIHRyeToKICAgICAgICAgbG9nLmRlYnVnKCJTdG9yaW5nIGVtYWlsIHBhcnRzIGluICVzIiwgb3V0ZGlyKQotICAgICAgICBodG1sX3JlcG9ydCA9IE5vbmUKKyAgICAgICAgaHRtbF9yZXBvcnQgPSBpbWFnZXMgPSBOb25lCiAgICAgICAgIGlmIGFyZ3MuaHRtbDoKLSAgICAgICAgICAgIHNjcmFwZV9odG1sX3JlcG9ydChhcmdzLmh0bWwsIG91dGRpciwgYXJncy5waGFudG9tanNfYXJncykKLSAgICAgICAgICAgIGh0bWxfcmVwb3J0ID0gb3MucGF0aC5qb2luKG91dGRpciwgb3MucGF0aC5iYXNlbmFtZShhcmdzLmh0bWwpKQorICAgICAgICAgICAgaHRtbF9yZXBvcnQsIGltYWdlcyA9IHNjcmFwZV9odG1sX3JlcG9ydChhcmdzLmh0bWwsIG91dGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5waGFudG9tanNfYXJncykKIAogICAgICAgICBpZiBhcmdzLnRvOgogICAgICAgICAgICAgbG9nLmluZm8oIlNlbmRpbmcgZW1haWwgdG8gJXMiLCAnLCAnLmpvaW4oYXJncy50bykpCi0gICAgICAgICAgICBzZW5kX2VtYWlsKGFyZ3MudGV4dCwgaHRtbF9yZXBvcnQsIGFyZ3Muc3ViamVjdCwgYXJncy50bykKKyAgICAgICAgICAgIGlmIGFyZ3MuY2M6CisgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvcHlpbmcgdG8gJXMiLCAnLCAnLmpvaW4oYXJncy5jYykpCisgICAgICAgICAgICBpZiBhcmdzLmJjYzoKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiQmxpbmQgY29weWluZyB0byAlcyIsICcsICcuam9pbihhcmdzLmJjYykpCisgICAgICAgICAgICBzZW5kX2VtYWlsKGFyZ3MudGV4dCwgaHRtbF9yZXBvcnQsIGltYWdlcywgYXJncy5zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnRvLCBhcmdzLmNjLCBhcmdzLmJjYykKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgogICAgICAgICBsb2cuZXJyb3IoIiVzLCB3aXRoIG91dHB1dDpcbiVzIiwgc3RyKGVyciksIGVyci5vdXRwdXQuZGVjb2RlKCkpCiAgICAgICAgIHJldHVybiAxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHJldmlldy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZTNlNzNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHJldmlldy5weQpAQCAtMCwwICsxLDIxMSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBUT0RPCisjIC0gb3B0aW9uIHRvIGp1c3QgbGlzdCBhbGwgYnJva2VuIGZpbGVzCisjIC0gdGVzdCBzdWl0ZQorIyAtIHZhbGlkYXRlIHNpZ25lZC1vZmYtYnkKKworCitjbGFzcyBSZXN1bHQ6CisgICAgIyBXaGV0aGVyIHRoZSBwYXRjaCBoYXMgYW4gVXBzdHJlYW0tU3RhdHVzIG9yIG5vdAorICAgIG1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzID0gRmFsc2UKKyAgICAjIElmIHRoZSBVcHN0cmVhbS1TdGF0dXMgdGFnIGlzIG1hbGZvcm1lZCBpbiBzb21lIHdheSAoc3RyaW5nIGZvciBiYWQgYml0KQorICAgIG1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMgPSBOb25lCisgICAgIyBJZiB0aGUgVXBzdHJlYW0tU3RhdHVzIHZhbHVlIGlzIHVua25vd24gKGJvb2xlYW4pCisgICAgdW5rbm93bl91cHN0cmVhbV9zdGF0dXMgPSBGYWxzZQorICAgICMgVGhlIHVwc3RyZWFtIHN0YXR1cyB2YWx1ZSAoUGVuZGluZywgZXRjKQorICAgIHVwc3RyZWFtX3N0YXR1cyA9IE5vbmUKKyAgICAjIFdoZXRoZXIgdGhlIHBhdGNoIGhhcyBhIFNpZ25lZC1vZmYtYnkgb3Igbm90CisgICAgbWlzc2luZ19zb2IgPSBGYWxzZQorICAgICMgV2hldGhlciB0aGUgU2lnbmVkLW9mZi1ieSB0YWcgaXMgbWFsZm9ybWVkIGluIHNvbWUgd2F5CisgICAgbWFsZm9ybWVkX3NvYiA9IEZhbHNlCisgICAgIyBUaGUgU2lnbmVkLW9mZi1ieSB0YWcgdmFsdWUKKyAgICBzb2IgPSBOb25lCisgICAgIyBXaGV0aGVyIGEgcGF0Y2ggbG9va3MgbGlrZSBhIENWRSBidXQgZG9lc24ndCBoYXZlIGEgQ1ZFIHRhZworICAgIG1pc3NpbmdfY3ZlID0gRmFsc2UKKworZGVmIGJsYW1lX3BhdGNoKHBhdGNoKToKKyAgICAiIiIKKyAgICBGcm9tIGEgcGF0Y2ggZmlsZW5hbWUsIHJldHVybiBhIGxpc3Qgb2YgImNvbW1pdCBzdW1tYXJ5IChhdXRob3IgbmFtZSA8YXV0aG9yCisgICAgZW1haWw+KSIgc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGhpc3RvcnkuCisgICAgIiIiCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJnaXQiLCAibG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWZvbGxvdyIsICItLWZpbmQtcmVuYW1lcyIsICItLWRpZmYtZmlsdGVyPUEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9ybWF0PSVzICglYU4gPCVhRT4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLSIsIHBhdGNoKSkuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKQorCitkZWYgcGF0Y2hyZXZpZXcocGF0Y2hlcyk6CisgICAgaW1wb3J0IHJlCisKKyAgICAjIEdlbmVyYWwgcGF0dGVybjogc3RhcnQgb2YgbGluZSwgb3B0aW9uYWwgd2hpdGVzcGFjZSwgdGFnIHdpdGggb3B0aW9uYWwKKyAgICAjIGh5cGhlbiBvciBzcGFjZXMsIG1heWJlIGEgY29sb24sIHNvbWUgd2hpdGVzcGFjZSwgdGhlbiB0aGUgdmFsdWUsIGFsbCBjYXNlCisgICAgIyBpbnNlbnNpdGl2ZS4KKyAgICBzb2JfcmUgPSByZS5jb21waWxlKHIiXltcdCBdKihTaWduZWRbLV8gXW9mZlstXyBdYnk6PylbXHQgXSooLispIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLk1VTFRJTElORSkKKyAgICBzdGF0dXNfcmUgPSByZS5jb21waWxlKHIiXltcdCBdKihVcHN0cmVhbVstXyBdU3RhdHVzOj8pW1x0IF0qKFx3KikiLCByZS5JR05PUkVDQVNFIHwgcmUuTVVMVElMSU5FKQorICAgIHN0YXR1c192YWx1ZXMgPSAoImFjY2VwdGVkIiwgInBlbmRpbmciLCAiaW5hcHByb3ByaWF0ZSIsICJiYWNrcG9ydCIsICJzdWJtaXR0ZWQiLCAiZGVuaWVkIikKKyAgICBjdmVfdGFnX3JlID0gcmUuY29tcGlsZShyIl5bXHQgXSooQ1ZFOilbXHQgXSooLiopIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLk1VTFRJTElORSkKKyAgICBjdmVfcmUgPSByZS5jb21waWxlKHIiY3ZlLVswLTldezR9LVswLTldezQsNn0iLCByZS5JR05PUkVDQVNFKQorCisgICAgcmVzdWx0cyA9IHt9CisKKyAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKKyAgICAgICAgcmVzdWx0ID0gUmVzdWx0KCkKKyAgICAgICAgcmVzdWx0c1twYXRjaF0gPSByZXN1bHQKKworICAgICAgICBjb250ZW50ID0gb3BlbihwYXRjaCwgZW5jb2Rpbmc9J2FzY2lpJywgZXJyb3JzPSdpZ25vcmUnKS5yZWFkKCkKKworICAgICAgICAjIEZpbmQgdGhlIFNpZ25lZC1vZmYtYnkgdGFnCisgICAgICAgIG1hdGNoID0gc29iX3JlLnNlYXJjaChjb250ZW50KQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIHZhbHVlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAgIGlmIHZhbHVlICE9ICJTaWduZWQtb2ZmLWJ5OiI6CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1hbGZvcm1lZF9zb2IgPSB2YWx1ZQorICAgICAgICAgICAgcmVzdWx0LnNvYiA9IG1hdGNoLmdyb3VwKDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ19zb2IgPSBUcnVlCisKKworICAgICAgICAjIEZpbmQgdGhlIFVwc3RyZWFtLVN0YXR1cyB0YWcKKyAgICAgICAgbWF0Y2ggPSBzdGF0dXNfcmUuc2VhcmNoKGNvbnRlbnQpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgdmFsdWUgPSBtYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgaWYgdmFsdWUgIT0gIlVwc3RyZWFtLVN0YXR1czoiOgorICAgICAgICAgICAgICAgIHJlc3VsdC5tYWxmb3JtZWRfdXBzdHJlYW1fc3RhdHVzID0gdmFsdWUKKworICAgICAgICAgICAgdmFsdWUgPSBtYXRjaC5ncm91cCgyKS5sb3dlcigpCisgICAgICAgICAgICAjIFRPRE86IGNoZWNrIGNhc2UKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBzdGF0dXNfdmFsdWVzOgorICAgICAgICAgICAgICAgIHJlc3VsdC51bmtub3duX3Vwc3RyZWFtX3N0YXR1cyA9IFRydWUKKyAgICAgICAgICAgIHJlc3VsdC51cHN0cmVhbV9zdGF0dXMgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzID0gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBwYXRjaGVzIHdoaWNoIGxvb2tzIGxpa2UgQ1ZFcyBoYXZlIENWRSB0YWdzCisgICAgICAgIGlmIGN2ZV9yZS5zZWFyY2gocGF0Y2gpIG9yIGN2ZV9yZS5zZWFyY2goY29udGVudCk6CisgICAgICAgICAgICBpZiBub3QgY3ZlX3RhZ19yZS5zZWFyY2goY29udGVudCk6CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdfY3ZlID0gVHJ1ZQorICAgICAgICAjIFRPRE86IGV4dHJhY3QgQ1ZFIGxpc3QKKworICAgIHJldHVybiByZXN1bHRzCisKKworZGVmIGFuYWx5c2UocmVzdWx0cywgd2FudF9ibGFtZT1GYWxzZSwgdmVyYm9zZT1UcnVlKToKKyAgICAiIiIKKyAgICB3YW50X2JsYW1lOiBkaXNwbGF5IGJsYW1lIGRhdGEgZm9yIGVhY2ggbWFsZm9ybWVkIHBhdGNoCisgICAgdmVyYm9zZTogZGlzcGxheSBwZXItZmlsZSByZXN1bHRzIGluc3RlYWQgb2YganVzdCBzdW1tYXJ5CisgICAgIiIiCisKKyAgICAjIHdhbnRfYmxhbWUgcmVxdWlyZXMgdmVyYm9zZSwgc28gZGlzYWJsZSBibGFtZSBpZiB3ZSdyZSBub3QgdmVyYm9zZQorICAgIGlmIHdhbnRfYmxhbWUgYW5kIG5vdCB2ZXJib3NlOgorICAgICAgICB3YW50X2JsYW1lID0gRmFsc2UKKworICAgIHRvdGFsX3BhdGNoZXMgPSAwCisgICAgbWlzc2luZ19zb2IgPSAwCisgICAgbWFsZm9ybWVkX3NvYiA9IDAKKyAgICBtaXNzaW5nX3N0YXR1cyA9IDAKKyAgICBtYWxmb3JtZWRfc3RhdHVzID0gMAorICAgIG1pc3NpbmdfY3ZlID0gMAorICAgIHBlbmRpbmdfcGF0Y2hlcyA9IDAKKworICAgIGZvciBwYXRjaCBpbiBzb3J0ZWQocmVzdWx0cyk6CisgICAgICAgIHIgPSByZXN1bHRzW3BhdGNoXQorICAgICAgICB0b3RhbF9wYXRjaGVzICs9IDEKKyAgICAgICAgbmVlZF9ibGFtZSA9IEZhbHNlCisKKyAgICAgICAgIyBCdWlsZCBzdGF0aXN0aWNzCisgICAgICAgIGlmIHIubWlzc2luZ19zb2I6CisgICAgICAgICAgICBtaXNzaW5nX3NvYiArPSAxCisgICAgICAgIGlmIHIubWFsZm9ybWVkX3NvYjoKKyAgICAgICAgICAgIG1hbGZvcm1lZF9zb2IgKz0gMQorICAgICAgICBpZiByLm1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzOgorICAgICAgICAgICAgbWlzc2luZ19zdGF0dXMgKz0gMQorICAgICAgICBpZiByLm1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMgb3Igci51bmtub3duX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG1hbGZvcm1lZF9zdGF0dXMgKz0gMQorICAgICAgICBpZiByLm1pc3NpbmdfY3ZlOgorICAgICAgICAgICAgbWlzc2luZ19jdmUgKz0gMQorICAgICAgICBpZiByLnVwc3RyZWFtX3N0YXR1cyA9PSAicGVuZGluZyI6CisgICAgICAgICAgICBwZW5kaW5nX3BhdGNoZXMgKz0gMQorCisgICAgICAgICMgT3V0cHV0IHdhcm5pbmdzCisgICAgICAgIGlmIHIubWlzc2luZ19zb2I6CisgICAgICAgICAgICBuZWVkX2JsYW1lID0gVHJ1ZQorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiTWlzc2luZyBTaWduZWQtb2ZmLWJ5IHRhZyAoJXMpIiAlIHBhdGNoKQorICAgICAgICAjIFRPRE86IGRpc2FibGUgdGhpcyBmb3Igbm93IGFzIHRvbyBtdWNoIGZhaWxzCisgICAgICAgIGlmIEZhbHNlIGFuZCByLm1hbGZvcm1lZF9zb2I6CisgICAgICAgICAgICBuZWVkX2JsYW1lID0gVHJ1ZQorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiTWFsZm9ybWVkIFNpZ25lZC1vZmYtYnkgJyVzJyAoJXMpIiAlIChyLm1hbGZvcm1lZF9zb2IsIHBhdGNoKSkKKyAgICAgICAgaWYgci5taXNzaW5nX2N2ZToKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIENWRSB0YWcgKCVzKSIgJSBwYXRjaCkKKyAgICAgICAgaWYgci5taXNzaW5nX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIFVwc3RyZWFtLVN0YXR1cyB0YWcgKCVzKSIgJSBwYXRjaCkKKyAgICAgICAgaWYgci5tYWxmb3JtZWRfdXBzdHJlYW1fc3RhdHVzOgorICAgICAgICAgICAgbmVlZF9ibGFtZSA9IFRydWUKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIk1hbGZvcm1lZCBVcHN0cmVhbS1TdGF0dXMgJyVzJyAoJXMpIiAlIChyLm1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMsIHBhdGNoKSkKKyAgICAgICAgaWYgci51bmtub3duX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJVbmtub3duIFVwc3RyZWFtLVN0YXR1cyB2YWx1ZSAnJXMnICglcykiICUgKHIudXBzdHJlYW1fc3RhdHVzLCBwYXRjaCkpCisKKyAgICAgICAgaWYgd2FudF9ibGFtZSBhbmQgbmVlZF9ibGFtZToKKyAgICAgICAgICAgIHByaW50KCJcbiIuam9pbihibGFtZV9wYXRjaChwYXRjaCkpICsgIlxuIikKKworICAgIGRlZiBwZXJjZW50KG51bSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiAiJWQgKCVkJSUpIiAlIChudW0sIHJvdW5kKG51bSAqIDEwMC4wIC8gdG90YWxfcGF0Y2hlcykpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHJldHVybiAiTi9BIgorCisgICAgaWYgdmVyYm9zZToKKyAgICAgICAgcHJpbnQoKQorCisgICAgcHJpbnQoIiIiVG90YWwgcGF0Y2hlcyBmb3VuZDogJWQKK1BhdGNoZXMgbWlzc2luZyBTaWduZWQtb2ZmLWJ5OiAlcworUGF0Y2hlcyB3aXRoIG1hbGZvcm1lZCBTaWduZWQtb2ZmLWJ5OiAlcworUGF0Y2hlcyBtaXNzaW5nIENWRTogJXMKK1BhdGNoZXMgbWlzc2luZyBVcHN0cmVhbS1TdGF0dXM6ICVzCitQYXRjaGVzIHdpdGggbWFsZm9ybWVkIFVwc3RyZWFtLVN0YXR1czogJXMKK1BhdGNoZXMgaW4gUGVuZGluZyBzdGF0ZTogJXMiIiIgJSAodG90YWxfcGF0Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChtaXNzaW5nX3NvYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQobWFsZm9ybWVkX3NvYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQobWlzc2luZ19jdmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50KG1pc3Npbmdfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChtYWxmb3JtZWRfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChwZW5kaW5nX3BhdGNoZXMpKSkKKworCisKK2RlZiBoaXN0b2dyYW0ocmVzdWx0cyk6CisgICAgZnJvbSB0b29seiBpbXBvcnQgcmVjaXBlcywgZGljdHRvb2x6CisgICAgaW1wb3J0IG1hdGgKKyAgICBjb3VudHMgPSByZWNpcGVzLmNvdW50YnkobGFtYmRhIHI6IHIudXBzdHJlYW1fc3RhdHVzLCByZXN1bHRzLnZhbHVlcygpKQorICAgIGJhcnMgPSBkaWN0dG9vbHoudmFsbWFwKGxhbWJkYSB2OiAiIyIgKiBpbnQobWF0aC5jZWlsKGZsb2F0KHYpIC8gbGVuKHJlc3VsdHMpICogMTAwKSksIGNvdW50cykKKyAgICBmb3IgayBpbiBiYXJzOgorICAgICAgICBwcmludCgiJS0yMHMgJXMgKCVkKSIgJSAoay5jYXBpdGFsaXplKCkgaWYgayBlbHNlICJObyBzdGF0dXMiLCBiYXJzW2tdLCBjb3VudHNba10pKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IGFyZ3BhcnNlLCBzdWJwcm9jZXNzLCBvcworCisgICAgYXJncyA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJQYXRjaCBSZXZpZXcgVG9vbCIpCisgICAgYXJncy5hZGRfYXJndW1lbnQoIi1iIiwgIi0tYmxhbWUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJzaG93IGJsYW1lIGZvciBtYWxmb3JtZWQgcGF0Y2hlcyIpCisgICAgYXJncy5hZGRfYXJndW1lbnQoIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InNob3cgcGVyLXBhdGNoIHJlc3VsdHMiKQorICAgIGFyZ3MuYWRkX2FyZ3VtZW50KCItZyIsICItLWhpc3RvZ3JhbSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InNob3cgcGF0Y2ggaGlzdG9ncmFtIikKKyAgICBhcmdzLmFkZF9hcmd1bWVudCgiZGlyZWN0b3J5IiwgbmFyZ3M9Ij8iLCBoZWxwPSJkaXJlY3RvcnkgdG8gc2NhbiIpCisgICAgYXJncyA9IGFyZ3MucGFyc2VfYXJncygpCisKKyAgICBpZiBhcmdzLmRpcmVjdG9yeToKKyAgICAgICAgb3MuY2hkaXIoYXJncy5kaXJlY3RvcnkpCisgICAgcGF0Y2hlcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiZ2l0IiwgImxzLWZpbGVzIiwgIioucGF0Y2giLCAiKi5kaWZmIikpLmRlY29kZSgidXRmLTgiKS5zcGxpdCgpCisgICAgcmVzdWx0cyA9IHBhdGNocmV2aWV3KHBhdGNoZXMpCisgICAgYW5hbHlzZShyZXN1bHRzLCB3YW50X2JsYW1lPWFyZ3MuYmxhbWUsIHZlcmJvc2U9YXJncy52ZXJib3NlKQorICAgIGlmIGFyZ3MuaGlzdG9ncmFtOgorICAgICAgICBwcmludCgpCisgICAgICAgIGhpc3RvZ3JhbShyZXN1bHRzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHRlc3Quc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3BhdGNodGVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZmU1NjY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHRlc3Quc2gKQEAgLTAsMCArMSwxMTggQEAKKyMhL2Jpbi9iYXNoCisjIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAorIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQorIworIyBwYXRjaHRlc3Q6IFJ1biBwYXRjaHRlc3Qgb24gY29tbWl0cyBzdGFydGluZyBhdCBtYXN0ZXIKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKK3NldCAtbyBlcnJleGl0CisKKyMgRGVmYXVsdCB2YWx1ZXMKK3Bva3lkaXI9JycKKwordXNhZ2UoKSB7CitDTUQ9JChiYXNlbmFtZSAkMCkKK2NhdCA8PEVPTQorVXNhZ2U6ICRDTUQgWy1oXSBbLXAgcG9reWRpcl0KKyAgLXAgcG9reWRpciAgRGVmYXVsdHMgdG8gY3VycmVudCBkaXJlY3RvcnkKK0VPTQorPiYyCisgICAgZXhpdCAxCit9CisKK2Z1bmN0aW9uIGNsb25lKCkgeworICAgIGxvY2FsIFJFUE9SRU1PVEU9JDEKKyAgICBsb2NhbCBSRVBPRElSPSQyCisgICAgaWYgWyAhIC1kICRSRVBPRElSIF07IHRoZW4KKwlnaXQgY2xvbmUgJFJFUE9SRU1PVEUgJFJFUE9ESVIgLS1xdWlldAorICAgIGVsc2UKKwkoIGNkICRSRVBPRElSOyBnaXQgcHVsbCAtLXF1aWV0ICkKKyAgICBmaQorfQorCit3aGlsZSBnZXRvcHRzICI6cDpoIiBvcHQ7IGRvCisgICAgY2FzZSAkb3B0IGluCisJcCkKKwkgICAgcG9reWRpcj0kT1BUQVJHCisJICAgIDs7CisJaCkKKwkgICAgdXNhZ2UKKwkgICAgOzsKKwlcPykKKwkgICAgZWNobyAiSW52YWxpZCBvcHRpb246IC0kT1BUQVJHIiA+JjIKKwkgICAgdXNhZ2UKKwkgICAgOzsKKwk6KQorCSAgICBlY2hvICJPcHRpb24gLSRPUFRBUkcgcmVxdWlyZXMgYW4gYXJndW1lbnQuIiA+JjIKKwkgICAgdXNhZ2UKKwkgICAgOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCAkKChPUFRJTkQtMSkpCisKK0NESVI9IiRQV0QiCisKKyMgZGVmYXVsdCBwb2t5ZGlyIHRvIGN1cnJlbnQgZGlyZWN0b3J5IGlmIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IG9uZQoraWYgWyAteiAiJHBva3lkaXIiIF07IHRoZW4KKyAgICBwb2t5ZGlyPSIkQ0RJUiIKK2ZpCisKK1BURU5WPSIkUFdEL3BhdGNodGVzdCIKK1BUPSIkUFRFTlYvcGF0Y2h0ZXN0IgorUFRPRT0iJFBURU5WL3BhdGNodGVzdC1vZSIKKworaWYgISB3aGljaCB2aXJ0dWFsZW52ID4gL2Rldi9udWxsOyB0aGVuCisgICAgZWNobyAiSW5zdGFsbCB2aXJ0dWFsZW52IGJlZm9yZSBwcm9jZWVkaW5nIgorICAgIGV4aXQgMTsKK2ZpCisKKyMgYWN0aXZhdGUgdGhlIHZpcnR1YWwgZW52Cit2aXJ0dWFsZW52ICRQVEVOViAtLXF1aWV0Citzb3VyY2UgJFBURU5WL2Jpbi9hY3RpdmF0ZQorCitjZCAkUFRFTlYKKworIyBjbG9uZSBvciBwdWxsCitjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wYXRjaHRlc3QgJFBUCitjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wYXRjaHRlc3Qtb2UgJFBUT0UKKworIyBpbnN0YWxsIHJlcXVpcmVtZW50cworcGlwIGluc3RhbGwgLXIgJFBUL3JlcXVpcmVtZW50cy50eHQgLS1xdWlldAorcGlwIGluc3RhbGwgLXIgJFBUT0UvcmVxdWlyZW1lbnRzLnR4dCAtLXF1aWV0CisKK1BBVEg9IiRQVDokUFQvc2NyaXB0czokUEFUSCIKKworIyBsb29wIHRocm91Z2ggcGFyZW50IHRvIEhFQUQgYW5kIGV4ZWN1dGUgcGF0Y2h0ZXN0IG9uIGVhY2ggY29tbWl0Citmb3IgY29tbWl0IGluICQoZ2l0IHJldi1saXN0IG1hc3Rlci4uSEVBRCAtLXJldmVyc2UpCitkbworICAgIHNob3J0bG9nPSIkKGdpdCBsb2cgIiRjb21taXReMS4uJGNvbW1pdCIgLS1wcmV0dHk9JyVoOiAlYU46ICVjZDogJXMnKSIKKyAgICBsb2c9IiQoZ2l0IGZvcm1hdC1wYXRjaCAiJGNvbW1pdF4xLi4kY29tbWl0IiAtLXN0ZG91dCB8IHBhdGNodGVzdCAtIC1yICRwb2t5ZGlyIC1zICRQVE9FL3Rlc3RzIC0tYmFzZS1jb21taXQgJGNvbW1pdF4xIC0tanNvbiAyPi9kZXYvbnVsbCB8IGNyZWF0ZS1zdW1tYXJ5IC0tZmFpbCAtLW9ubHktcmVzdWx0cykiCisgICAgaWYgWyAteiAiJGxvZyIgXTsgdGhlbgorCXNob3J0bG9nPSIkc2hvcnRsb2c6IE9LIgorICAgIGVsc2UKKwlzaG9ydGxvZz0iJHNob3J0bG9nOiBGQUlMIgorICAgIGZpCisgICAgZWNobyAiJHNob3J0bG9nIgorICAgIGVjaG8gIiRsb2ciIHwgc2VkIC1uIC1lICcvSXNzdWUvcCcgLWUgJy9TdWdnZXN0ZWQgZml4L3AnCisgICAgZWNobyAiIgorZG9uZQorCitkZWFjdGl2YXRlCisKK2NkICRDRElSCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKaW5kZXggOGMzNjU1ZC4uNTg2YjMyOSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weQpAQCAtMjgsNiArMjgsNyBAQAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgb3V0ZmlsZSwgaXNOYXRpdmUgKToKICAgICAgICAgIiIiaW5pdGlhbGl6ZSIiIgogICAgICAgICBzZWxmLnBhY2thZ2VzID0ge30KKyAgICAgICAgc2VsZi5leGNsdWRlZF9wa2dzID0gW10KICAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSAiJHtsaWJkaXJ9L3B5dGhvbiVzLyIgJSBWRVJTSU9OWzozXQogICAgICAgICBzZWxmLmlzTmF0aXZlID0gaXNOYXRpdmUKICAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRmaWxlCkBAIC01Miw3ICs1Myw3IEBACiAgICAgICAgIHNlbGYub3V0KCAiIiIgIiIiICkKICAgICAgICAgc2VsZi5vdXQoICIiICkKIAotICAgIGRlZiBhZGRQYWNrYWdlKCBzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMgKToKKyAgICBkZWYgYWRkUGFja2FnZSggc2VsZiwgbmFtZSwgZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZmlsZW5hbWVzLCBtb2RfZXhjbHVkZSA9IEZhbHNlICk6CiAgICAgICAgICIiImFkZCBhIHBhY2thZ2UgdG8gdGhlIE1ha2VmaWxlIiIiCiAgICAgICAgIGlmIHR5cGUoIGZpbGVuYW1lcyApID09IHR5cGUoICIiICk6CiAgICAgICAgICAgICBmaWxlbmFtZXMgPSBmaWxlbmFtZXMuc3BsaXQoKQpAQCAtNjIsNiArNjMsOCBAQAogICAgICAgICAgICAgICAgIGZ1bGxGaWxlbmFtZXMuYXBwZW5kKCAiJXMlcyIgJSAoIHNlbGYudGFyZ2V0UHJlZml4LCBmaWxlbmFtZSApICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKKyAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6CisgICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKICAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKIAogICAgIGRlZiBkb0JvZHkoIHNlbGYgKToKQEAgLTc0LDEzICs3NywxMSBAQAogICAgICAgICAjCiAKICAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSA9ICdSUFJPVklERVMrPSInCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICIlcy1uYXRpdmUgIiAlIG5hbWUucmVwbGFjZSggJyR7UE59JywgJ3B5dGhvbicgKQotICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICciJworICAgICAgICAgICAgcGtnbGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBbJyR7UE59LW1vZHVsZXMnXSArIHNvcnRlZChzZWxmLnBhY2thZ2VzKToKKyAgICAgICAgICAgICAgICBwa2dsaXN0LmFwcGVuZCgnJXMtbmF0aXZlJyAlIG5hbWUucmVwbGFjZSgnJHtQTn0nLCAncHl0aG9uJykpCiAKLSAgICAgICAgICAgIHNlbGYub3V0KCBycHJvdmlkZUxpbmUgKQotICAgICAgICAgICAgc2VsZi5vdXQoICIiICkKKyAgICAgICAgICAgIHNlbGYub3V0KCdSUFJPVklERVMgKz0gIiVzIicgJSAiICIuam9pbihwa2dsaXN0KSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMKQEAgLTE0OSw3ICsxNTAsNyBAQAogICAgICAgICBsaW5lID0gJ1JERVBFTkRTXyR7UE59LW1vZHVsZXM9IicKIAogICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXToKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXSBhbmQgbmFtZSBub3QgaW4gc2VsZi5leGNsdWRlZF9wa2dzOgogICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSBuYW1lCiAKICAgICAgICAgc2VsZi5vdXQoICIlcyBcIiIgJSBsaW5lICkKQEAgLTM4NCw3ICszODUsNyBAQAogICAgICJwdHkuKiB0dHkuKiIgKQogCiAgICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGVzdHMiLCAiUHl0aG9uIHRlc3RzIiwgIiR7UE59LWNvcmUgJHtQTn0tbW9kdWxlcyIsCi0gICAgInRlc3QiICkgIyBwYWNrYWdlCisgICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCiAgICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIFF1ZXVlLioiICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weQppbmRleCAwNzU4NjBjLi42MzUyZjhmIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5CkBAIC0zMSw2ICszMSw3IEBACiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBvdXRmaWxlLCBpc05hdGl2ZSApOgogICAgICAgICAiIiJpbml0aWFsaXplIiIiCiAgICAgICAgIHNlbGYucGFja2FnZXMgPSB7fQorICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MgPSBbXQogICAgICAgICBzZWxmLnRhcmdldFByZWZpeCA9ICIke2xpYmRpcn0vcHl0aG9uJXMvIiAlIFZFUlNJT05bOjNdCiAgICAgICAgIHNlbGYuaXNOYXRpdmUgPSBpc05hdGl2ZQogICAgICAgICBzZWxmLm91dHB1dCA9IG91dGZpbGUKQEAgLTU1LDcgKzU2LDcgQEAKICAgICAgICAgc2VsZi5vdXQoICIiIiAiIiIgKQogICAgICAgICBzZWxmLm91dCggIiIgKQogCi0gICAgZGVmIGFkZFBhY2thZ2UoIHNlbGYsIG5hbWUsIGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZpbGVuYW1lcyApOgorICAgIGRlZiBhZGRQYWNrYWdlKCBzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMsIG1vZF9leGNsdWRlID0gRmFsc2UgKToKICAgICAgICAgIiIiYWRkIGEgcGFja2FnZSB0byB0aGUgTWFrZWZpbGUiIiIKICAgICAgICAgaWYgdHlwZSggZmlsZW5hbWVzICkgPT0gdHlwZSggIiIgKToKICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGZpbGVuYW1lcy5zcGxpdCgpCkBAIC02Nyw2ICs2OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5weWNhY2hlUGF0aCggZmlsZW5hbWUgKSApICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKKyAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6CisgICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKICAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKIAogICAgIGRlZiBweWNhY2hlUGF0aCggc2VsZiwgZmlsZW5hbWUgKToKQEAgLTg3LDEzICs5MCwxMSBAQAogICAgICAgICAjCiAKICAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSA9ICdSUFJPVklERVMrPSInCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICIlcy1uYXRpdmUgIiAlIG5hbWUucmVwbGFjZSggJyR7UE59JywgJ3B5dGhvbjMnICkKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSArPSAnIicKKyAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6CisgICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbjMnKSkKIAotICAgICAgICAgICAgc2VsZi5vdXQoIHJwcm92aWRlTGluZSApCi0gICAgICAgICAgICBzZWxmLm91dCggIiIgKQorICAgICAgICAgICAgc2VsZi5vdXQoJ1JQUk9WSURFUyArPSAiJXMiJyAlICIgIi5qb2luKHBrZ2xpc3QpKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIwpAQCAtMTYyLDcgKzE2Myw3IEBACiAgICAgICAgIGxpbmUgPSAnUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJwogCiAgICAgICAgIGZvciBuYW1lLCBkYXRhIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gWycke1BOfS1kZXYnLCAnJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiddOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gWycke1BOfS1kZXYnLCAnJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiddIGFuZCBuYW1lIG5vdCBpbiBzZWxmLmV4Y2x1ZGVkX3BrZ3M6CiAgICAgICAgICAgICAgICAgbGluZSArPSAiJXMgIiAlIG5hbWUKIAogICAgICAgICBzZWxmLm91dCggIiVzIFwiIiAlIGxpbmUgKQpAQCAtMjI0LDcgKzIyNSw3IEBACiAgICAgIiR7YmFzZV9saWJkaXJ9LyoubyAiICsKICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsICIgKwogICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyAiICsKLSAgICAiY29uZmlnL01ha2VmaWxlICIpCisgICAgImNvbmZpZyovTWFrZWZpbGUgIikKIAogICAgIG0uYWRkUGFja2FnZSggIiR7UE59LTJ0bzMiLCAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsICIke1BOfS1jb3JlIiwKICAgICAibGliMnRvMyIgKSAjIHBhY2thZ2UKQEAgLTI1NCw3ICsyNTUsNyBAQAogICAgICJweV9jb21waWxlLiogY29tcGlsZWFsbC4qIiApCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21wcmVzc2lvbiIsICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWltcG9ydGxpYiAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2hlbGwiLAotICAgICJnemlwLiogemlwZmlsZS4qIHRhcmZpbGUuKiBsaWItZHlubG9hZC9iejIuKi5zbyBsaWItZHlubG9hZC96bGliLiouc28iICkKKyAgICAiZ3ppcC4qIHppcGZpbGUuKiB0YXJmaWxlLiogbGliLWR5bmxvYWQvYnoyLiouc28gbGliLWR5bmxvYWQvemxpYi4qLnNvIGJ6Mi5weSBsem1hLnB5IF9jb21wcmVzc2lvbi5weSIgKQogCiAgICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3J5cHQiLCAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKICAgICAiaGFzaGxpYi4qIG1kNS4qIHNoYS4qIGxpYi1keW5sb2FkL2NyeXB0Liouc28gbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyBsaWItZHlubG9hZC9fc2hhMjU2Liouc28gbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIiApCkBAIC00MDIsOCArNDAzLDggQEAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXJtaW5hbCIsICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKICAgICAicHR5LiogdHR5LioiICkKIAotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRlc3RzIiwgIlB5dGhvbiB0ZXN0cyIsICIke1BOfS1jb3JlIiwKLSAgICAidGVzdCIgKSAjIHBhY2thZ2UKKyAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXN0cyIsICJQeXRob24gdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIsCisgICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCiAgICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIHF1ZXVlLioiICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcmVhdGUtcHVsbC1yZXF1ZXN0CmluZGV4IGU4Mjg1OGIuLjI4MDg4MGIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdApAQCAtMzQsNyArMzQsNyBAQAogdXNhZ2UoKSB7CiBDTUQ9JChiYXNlbmFtZSAkMCkKIGNhdCA8PEVPTQotVXNhZ2U6ICRDTUQgWy1oXSBbLW8gb3V0cHV0X2Rpcl0gWy1tIG1zZ19ib2R5X2ZpbGVdIFstcyBzdWJqZWN0XSBbLXIgcmVsYXRpdmVfdG9dIFstaSBjb21taXRfaWRdIFstZCByZWxhdGl2ZV9kaXJdIC11IHJlbW90ZSBbLWIgYnJhbmNoXQorVXNhZ2U6ICRDTUQgWy1oXSBbLW8gb3V0cHV0X2Rpcl0gWy1tIG1zZ19ib2R5X2ZpbGVdIFstcyBzdWJqZWN0XSBbLXIgcmVsYXRpdmVfdG9dIFstaSBjb21taXRfaWRdIFstZCByZWxhdGl2ZV9kaXJdIC11IHJlbW90ZSBbLWIgYnJhbmNoXSBbLS0gPGZvcm1hdC1wYXRjaCBvcHRpb25zPl0KICAgLWIgYnJhbmNoICAgICAgICAgICBCcmFuY2ggbmFtZSBpbiB0aGUgc3BlY2lmaWVkIHJlbW90ZSAoZGVmYXVsdDogY3VycmVudCBicmFuY2gpCiAgIC1sIGxvY2FsIGJyYW5jaCAgICAgTG9jYWwgYnJhbmNoIG5hbWUgKGRlZmF1bHQ6IEhFQUQpCiAgIC1jICAgICAgICAgICAgICAgICAgQ3JlYXRlIGFuIFJGQyAoUmVxdWVzdCBmb3IgQ29tbWVudCkgcGF0Y2ggc2VyaWVzCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAkQ01EIC11IGNvbnRyaWIgLXIgbWFzdGVyIC1pIG1pc2MgLWIgbml0aW4vbWlzYyAtbyBwdWxsLW1pc2MKICAgICRDTUQgLXUgY29udHJpYiAtcCAiUkZDIFBBVENIIiAtYiBuaXRpbi9leHBlcmltZW50YWwKICAgICRDTUQgLXUgY29udHJpYiAtaSBtaXNjIC1iIG5pdGluL21pc2MgLWQgLi9iaXRiYWtlCisgICAkQ01EIC11IGNvbnRyaWIgLXIgb3JpZ2luL21hc3RlciAtbyAvdG1wL291dC52MyAtLSAtdjMgLS1pbi1yZXBseS10bz0yMDE3MDUxMTEyMDEzNC5YWDc3OTlAc2l0ZS5jb20KIEVPTQogfQogCkBAIC0xMDgsOSArMTA5LDE2IEBACiAJYSkKIAkJQ1BSX0NPTlRSSUJfQVVUT19QVVNIPSIxIgogCQk7OworCS0tKQorCQlzaGlmdAorCQlicmVhaworCQk7OwogCWVzYWMKIGRvbmUKIAorc2hpZnQgIiQoKE9QVElORCAtIDEpKSIKK2V4dHJhb3B0cz0iJEAiCisKIGlmIFsgLXogIiRSRU1PVEUiIF07IHRoZW4KIAllY2hvICJFUlJPUjogTWlzc2luZyBwYXJhbWV0ZXIgLXUgb3IgQ1BSX0NPTlRSSUJfUkVNT1RFIGluIGVudiwgbm8gZ2l0IHJlbW90ZSEiCiAJdXNhZ2UKQEAgLTIwMSw3ICsyMDksNyBAQAogCU9ESVI9JChyZWFscGF0aCAkT0RJUikKIAlwZGlyPSQocHdkKQogCWNkICRSRUxESVIKLQlleHRyYW9wdHM9Ii0tcmVsYXRpdmUiCisJZXh0cmFvcHRzPSIkZXh0cmFvcHRzIC0tcmVsYXRpdmUiCiBmaQogCiAjIEdlbmVyYXRlIHRoZSBwYXRjaGVzIGFuZCBjb3ZlciBsZXR0ZXIKQEAgLTIxOCw3ICsyMjYsNyBAQAogWyAtbiAiJFJFTERJUiIgXSAmJiBjZCAkcGRpcgogCiAjIEN1c3RvbWl6ZSB0aGUgY292ZXIgbGV0dGVyCi1DTD0iJE9ESVIvMDAwMC1jb3Zlci1sZXR0ZXIucGF0Y2giCitDTD0iJChlY2hvICRPRElSLyowMDAwLWNvdmVyLWxldHRlci5wYXRjaCkiCiBQTT0iJE9ESVIvcHVsbC1tc2ciCiBHSVRfVkVSU0lPTj0kKGBnaXQgLS12ZXJzaW9uYCB8IHRyIC1kICdbOmFscGhhOl1bOnNwYWNlOl0uJyB8IHNlZCAncy9cKC4uLlwpLiovXDEvJykKIE5FV0VSX0dJVF9WRVJTSU9OPTIxMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wKaW5kZXggYzlhZDlkZC4uNTI5MmYxOCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kZXZ0b29sCkBAIC0xMzAsMjUgKzEzMCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZWZpbGUnOiByZWNpcGVmaWxlfQogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHJlY2lwZSAlcycgJSB3b3Jrc3BhY2VbcG5dKQogCi1kZWYgY3JlYXRlX3VubG9ja2Vkc2lncygpOgotICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgbWFrZSB1bmxvY2tlZC1zaWdzLmluYyBtYXRjaCB0aGUgcmVjaXBlcyBpbiB0aGUKLSAgICB3b3Jrc3BhY2UuIFRoaXMgcnVucyBvbiBldmVyeSBydW4gb2YgZGV2dG9vbCwgYnV0IGl0IGxldHMgdXMgZW5zdXJlCi0gICAgdGhlIHVubG9ja2VkIGl0ZW1zIGFyZSBpbiBzeW5jIHdpdGggdGhlIHdvcmtzcGFjZS4gIiIiCi0KLSAgICBjb25mZGlyID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAnY29uZicpCi0gICAgdW5sb2NrZWRzaWdzID0gb3MucGF0aC5qb2luKGNvbmZkaXIsICd1bmxvY2tlZC1zaWdzLmluYycpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmZkaXIpCi0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb25mZGlyLCAndW5sb2NrZWQtc2lncy5pbmMnKSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRlKCIjIERPIE5PVCBNT0RJRlkhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1QuXG4iICsKLSAgICAgICAgICAgICAgICAiIyBUaGlzIGxheWVyIHdhcyBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgZGV2dG9vbCIgKwotICAgICAgICAgICAgICAgICIgdXRpbGl0eSBpbiBvcmRlciB0b1xuIiArCi0gICAgICAgICAgICAgICAgIiMgY29udGFpbiByZWNpcGVzIHRoYXQgYXJlIHVubG9ja2VkLlxuIikKLQotICAgICAgICBmLndyaXRlKCdTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyArPSAiXFxcbicpCi0gICAgICAgIGZvciBwbiBpbiB3b3Jrc3BhY2U6Ci0gICAgICAgICAgICBmLndyaXRlKCcgICAgJyArIHBuKQotICAgICAgICBmLndyaXRlKCciJykKLQogZGVmIGNyZWF0ZV93b3Jrc3BhY2UoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmxheWVycGF0aDoKICAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5hYnNwYXRoKGFyZ3MubGF5ZXJwYXRoKQpAQCAtMzMyLDcgKzMxMyw2IEBACiAKICAgICBpZiBub3QgZ2V0YXR0cihhcmdzLCAnbm9fd29ya3NwYWNlJywgRmFsc2UpOgogICAgICAgICByZWFkX3dvcmtzcGFjZSgpCi0gICAgICAgIGNyZWF0ZV91bmxvY2tlZHNpZ3MoKQogCiAgICAgdHJ5OgogICAgICAgICByZXQgPSBhcmdzLmZ1bmMoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2FyZ3BhcnNlX29lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2FyZ3BhcnNlX29lLnB5CmluZGV4IGJmNmViMTcuLjliZGZjMWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9hcmdwYXJzZV9vZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYXJncGFyc2Vfb2UucHkKQEAgLTE2NywzICsxNjcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc3VwZXIoT2VIZWxwRm9ybWF0dGVyLCBzZWxmKS5fZm9ybWF0X2FjdGlvbihhY3Rpb24pCisKK2RlZiBpbnRfcG9zaXRpdmUodmFsdWUpOgorICAgIGl2YWx1ZSA9IGludCh2YWx1ZSkKKyAgICBpZiBpdmFsdWUgPD0gMDoKKyAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgIiVzIGlzIG5vdCBhIHBvc2l0aXZlIGludCB2YWx1ZSIgJSB2YWx1ZSkKKyAgICByZXR1cm4gaXZhbHVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkKaW5kZXggNGYwZDc3Mi4uODVkNDQ2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9oZWxwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvaGVscC5weQpAQCAtODE4LDYgKzgxOCwxMCBAQAogCiB5b2N0b19sYXllcl9jcmVhdGVfdXNhZ2UgPSAiIiIKIAorIFdBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCisgb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKKyBzY3JpcHQgdG8gbWFuYWdlIGxheWVycy4KKwogIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCiAKICB1c2FnZTogeW9jdG8tbGF5ZXIgY3JlYXRlIDxsYXllci1uYW1lPiBbbGF5ZXJfcHJpb3JpdHldCkBAIC04NDUsNiArODQ5LDEwIEBACiAKIHlvY3RvX2xheWVyX2NyZWF0ZV9oZWxwID0gIiIiCiAKK1dBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCitvZiB1c2luZyAnYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyJyBzY3JpcHQvcGx1Z2luLCBvZmZlcmluZyBhIHNpbmdsZQorc2NyaXB0IHRvIG1hbmFnZSBsYXllcnMuCisKIE5BTUUKICAgICB5b2N0by1sYXllciBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgZ2VuZXJpYyBZb2N0byBsYXllcgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKaW5kZXggODI4NDAwZC4uZmIzODY2ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpAQCAtNCw1ICs0LDMgQEAKIAogaW5jbHVkZSBmZWF0dXJlcy91c2ItbmV0L3VzYi1uZXQuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmluZGV4IDIwZjIwNTkuLjkxN2YwZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTE5LDcgKzE5LDEwIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmM2UxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmluZGV4IDA3MGJkODcuLjYyZDE4MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTdkN2NiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCBlYWY0MzY3Li5kZmJlY2I1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaWYgc21wID09ICJ5IjogfX0KK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKKyNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgorS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NzUyYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYgppbmRleCBmZGE5NTViLi4zYmE0MjI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20uYmIKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKICAgICAgICAgICAgIgogCiB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSIgYW5kIGN1c3RvbV9rZXJuZWxfa2JyYW5jaCBhbmQgY3VzdG9tX2tlcm5lbF9rYnJhbmNoICE9ICJtYXN0ZXIiOiB9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Mjc1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKQEAgLTAsMCArMSBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYwppbmRleCAwYjZiNDEzLi42NGQzZWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5zY2MKQEAgLTE0LDUgKzE0LDMgQEAKICMgVGhlc2UgYXJlIHVzZWQgYnkgeW9jdG8ta2VybmVsIHRvIGFkZCBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcy4KICMgRG9uJ3QgcmVtb3ZlIGlmIHlvdSBwbGFuIG9uIHVzaW5nIHlvY3RvLWtlcm5lbCB3aXRoIHRoaXMgQlNQLgogCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCAzZDMyZjExLi4zZTRjNTRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTE3LDUgKzE3LDMgQEAKIGluY2x1ZGUgY2ZnL2Jvb3QtbGl2ZS5zY2MKIGluY2x1ZGUgZmVhdHVyZXMvcG93ZXIvaW50ZWwuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKaW5kZXggMjBmMjA1OS4uOTE3ZjBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKQEAgLTEsNSArMSw1IEBACiB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTApIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19CiAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTAifX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMTksNyArMTksMTAgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTVhMTc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmluZGV4IDVjYzgyZTguLmJhZTk0M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzZTEwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggMDcwYmQ4Ny4uNjJkMTgxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWQxNDRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCAwMjA1OTIwLi5mODYxNmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkNTdmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDM3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAiCisKKyMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKKyMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCitTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAppbmRleCBhYjY0NGJkLi4wYTlkNDc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNWFlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCBmMzlkYzNlLi43OTJmZGM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTQsNSArNCwzIEBACiBpbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwogaW5jbHVkZSBjZmcvZnMvdmZhdC5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0xOSw3ICsxOSwxMCBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNlMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAppbmRleCAwNzBiZDg3Li42MmQxODE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKQEAgLTIwLDkgKzIwLDEyIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCiAKICMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisKK1BSIDo9ICIke1BSfS4xIgorCitDT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTc1MmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCBmMzlkYzNlLi43OTJmZGM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCkBAIC00LDUgKzQsMyBAQAogaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKIGluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmluZGV4IDIwZjIwNTkuLjkxN2YwZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTE5LDcgKzE5LDEwIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmM2UxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmluZGV4IDA3MGJkODcuLjYyZDE4MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDJlNWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCA1MTJiNTk3Li4zMzZhOTU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzMzYzMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaWYgc21wID09ICJ5IjogfX0KK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKKyNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgorS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IGRiYjBmZDUuLjdkMTg1NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZWI0MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCA3YWFjOGIwLi44OWJiOTdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTYsNSArNiwzIEBACiAKIGluY2x1ZGUgY2ZnL2RtYWVuZ2luZS5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0xOSw3ICsxOSwxMCBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNlMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAppbmRleCAwNzBiZDg3Li42MmQxODE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKQEAgLTIwLDkgKzIwLDEyIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCiAKICMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisKK1BSIDo9ICIke1BSfS4xIgorCitDT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTc1MmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmluZGV4IDgzMDFlMDUuLmQyNWQwYTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpAQCAtMSw1ICsxLDMgQEAKICMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKIGtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IDdlM2NlNWIuLmQ3YjljZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC00NSwxMSArNDUsMTUgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMzkyY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAppbmRleCAyOWFkMTdiLi44YzBmZDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZApAQCAtNDUsMTEgKzQ1LDE0IEBACiB7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KIEtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCiAKK3t7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQoge3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ViMjE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSw2NyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggYTczYjFhYS4uMjJhYmMyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCkBAIC00NSwxMSArNDUsMTQgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0MDY3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjgiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImFybSIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImFybSIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9jb21tb24tcGMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWZkOWVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCA1ODczZGE0Li44NTFkOTZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC00NSwxMyArNDUsMTcgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjZTM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDY3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IGNkZWU3NzMuLjcxYmU5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC00NSwxMyArNDUsMTcgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGMyODgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCA5YjdjMjkxLi45ZDIwZDE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCkBAIC0xMCw1ICsxMCwzIEBACiBpbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwogaW5jbHVkZSBmZWF0dXJlcy9wb3dlci9pbnRlbC5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKaW5kZXggMjBmMjA1OS4uOTE3ZjBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCkBAIC0xLDUgKzEsNSBAQAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEwKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQogCiB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEwIn19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMTksNyArMTksMTAgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1YTE3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAppbmRleCA1Y2M4MmU4Li5iYWU5NDNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzZTEwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggMDcwYmQ4Ny4uNjJkMTgxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApAQCAtMjAsNyArMjAsOSBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjgiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC44IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NzRjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDM3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAiCisKKyMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKKyMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCitTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKaW5kZXggNTZlOGFkMy4uYTgwOWM3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3NTJhOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRfcGVyZi9odG1sL3JlcG9ydC5odG1sCmluZGV4IDE2NWNiYjguLjI5MWFkOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvaHRtbC9yZXBvcnQuaHRtbApAQCAtNTMsOSArNTMsMTEgQEAKICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKIH0KIC5kZXRhaWxzIHRoIHsKLSAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgcGFkZGluZy1yaWdodDogOHB4OwogfQorLmRldGFpbHMucGxhaW4gdGggeworICBmb250LXdlaWdodDogbm9ybWFsOworfQogLnByZWZvcm1hdHRlZCB7CiAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKQEAgLTExOCwyOSArMTIwLDMyIEBACiAgICAgICB7JSBlbHNlICV9CiAgICAgICAgIHslIHNldCByb3dfc3R5bGUgPSAnc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiJyAlfQogICAgICAgeyUgZW5kaWYgJX0KLSAgICAgIDx0ciB7eyByb3dfc3R5bGUgfX0+PHRkPnt7IHRlc3QubmFtZSB9fToge3sgdGVzdC5kZXNjcmlwdGlvbiB9fTwvdGQ+CiAgICAgICB7JSBpZiB0ZXN0LnN0YXR1cyA9PSAnU1VDQ0VTUycgJX0KICAgICAgICAgeyUgZm9yIG1lYXN1cmVtZW50IGluIHRlc3QubWVhc3VyZW1lbnRzICV9Ci0gICAgICAgICAgeyMgYWRkIGVtcHR5IGNlbGwgaW4gcGxhY2Ugb2YgdGhlIHRlc3QgbmFtZSN9Ci0gICAgICAgICAgeyUgaWYgbG9vcC5pbmRleCA+IDEgJX08dGQ+PC90ZD57JSBlbmRpZiAlfQotICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmFic2RpZmYgPiAwICV9Ci0gICAgICAgICAgICB7JSBzZXQgcmVzdWx0X3N0eWxlID0gImNvbG9yOiByZWQiICV9Ci0gICAgICAgICAgeyUgZWxpZiBtZWFzdXJlbWVudC5hYnNkaWZmID09IG1lYXN1cmVtZW50LmFic2RpZmYgJX0KLSAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IGdyZWVuIiAlfQotICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IG9yYW5nZSIgJX0KLSAgICAgICAgICB7JWVuZGlmICV9Ci0gICAgICAgICAgPHRkPnt7IG1lYXN1cmVtZW50LmRlc2NyaXB0aW9uIH19PC90ZD4KLSAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIj57eyBtZWFzdXJlbWVudC52YWx1ZS5tZWFuIH19PC90ZD4KLSAgICAgICAgICA8dGQgc3R5bGU9Int7IHJlc3VsdF9zdHlsZSB9fSI+e3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX08L3RkPgotICAgICAgICAgIDx0ZCBzdHlsZT0ie3sgcmVzdWx0X3N0eWxlIH19Ij57eyBtZWFzdXJlbWVudC5yZWxkaWZmIH19PC90ZD4KLSAgICAgICAgICA8L3RyPjx0ciB7eyByb3dfc3R5bGUgfX0+CisgICAgICAgICAgPHRyIHt7IHJvd19zdHlsZSB9fT4KKyAgICAgICAgICAgIHslIGlmIGxvb3AuaW5kZXggPT0gMSAlfQorICAgICAgICAgICAgICA8dGQ+e3sgdGVzdC5uYW1lIH19OiB7eyB0ZXN0LmRlc2NyaXB0aW9uIH19PC90ZD4KKyAgICAgICAgICAgIHslIGVsc2UgJX0KKyAgICAgICAgICAgICAgeyMgYWRkIGVtcHR5IGNlbGwgaW4gcGxhY2Ugb2YgdGhlIHRlc3QgbmFtZSN9CisgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmFic2RpZmYgPiAwICV9CisgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IHJlZCIgJX0KKyAgICAgICAgICAgIHslIGVsaWYgbWVhc3VyZW1lbnQuYWJzZGlmZiA9PSBtZWFzdXJlbWVudC5hYnNkaWZmICV9CisgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IGdyZWVuIiAlfQorICAgICAgICAgICAgeyUgZWxzZSAlfQorICAgICAgICAgICAgICB7JSBzZXQgcmVzdWx0X3N0eWxlID0gImNvbG9yOiBvcmFuZ2UiICV9CisgICAgICAgICAgICB7JWVuZGlmICV9CisgICAgICAgICAgICA8dGQ+e3sgbWVhc3VyZW1lbnQuZGVzY3JpcHRpb24gfX08L3RkPgorICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCI+e3sgbWVhc3VyZW1lbnQudmFsdWUubWVhbiB9fTwvdGQ+CisgICAgICAgICAgICA8dGQgc3R5bGU9Int7IHJlc3VsdF9zdHlsZSB9fSI+e3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX08L3RkPgorICAgICAgICAgICAgPHRkIHN0eWxlPSJ7eyByZXN1bHRfc3R5bGUgfX0iPnt7IG1lYXN1cmVtZW50LnJlbGRpZmYgfX08L3RkPgorICAgICAgICAgIDwvdHI+CiAgICAgICAgIHslIGVuZGZvciAlfQogICAgICAgeyUgZWxzZSAlfQogICAgICAgICA8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogcmVkOyI+e3t0ZXN0LnN0YXR1cyB9fTwvdGQ+CiAgICAgICAgIDx0ZD48L3RkPiA8dGQ+PC90ZD4gPHRkPjwvdGQ+IDx0ZD48L3RkPgogICAgICAgeyUgZW5kaWYgJX0KLSAgICAgIDwvdHI+CiAgICAgeyUgZW5kZm9yICV9CiAgIDwvdGFibGU+CiAKQEAgLTE2NSw2ICsxNzAsNyBAQAogICAgICAgICAgICAge3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX0gKHt7bWVhc3VyZW1lbnQucmVsZGlmZn19KQogICAgICAgICAgICAgPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICB7IyBUYWJsZSBmb3IgdHJlbmRjaGFydCBhbmQgdGhlIHN0YXRpc3RpY3MgI30KICAgICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlIj4KICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNzUlIj4KQEAgLTE3Myw3ICsxNzksNyBAQAogICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgeyMgTWVhc3VyZW1lbnQgc3RhdGlzdGljcyAjfQotICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyI+CisgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJkZXRhaWxzIHBsYWluIj4KICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgPHRoPlRlc3QgcnVuczwvdGg+PHRkPnt7IG1lYXN1cmVtZW50LnZhbHVlLnNhbXBsZV9jbnQgfX08L3RkPgogICAgICAgICAgICAgICAgICAgPC90cj48dHI+CkBAIC0xODYsMTEgKzE5Miw4NSBAQAogICAgICAgICAgICAgICAgICAgICA8dGg+U3RkZXY8L3RoPjx0ZD57eyBtZWFzdXJlbWVudC52YWx1ZS5zdGRldiB9fTwvdGQ+CiAgICAgICAgICAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgaWQ9Int7IHRlc3QubmFtZSB9fV97eyBtZWFzdXJlbWVudC5uYW1lIH19X2NoYXJ0X3BuZyI+PC9kaXY+PC90aD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICB7IyBUYXNrIGFuZCByZWNpcGUgc3VtbWFyeSBmcm9tIGJ1aWxkc3RhdHMgI30KKyAgICAgICAgICB7JSBpZiAnYnVpbGRzdGF0cycgaW4gbWVhc3VyZW1lbnQgJX0KKyAgICAgICAgICAgIFRhc2sgcmVzb3VyY2UgdXNhZ2UKKyAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyIgc3R5bGU9IndpZHRoOjEwMCUiPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoPk51bWJlciBvZiB0YXNrczwvdGg+CisgICAgICAgICAgICAgICAgPHRoPlRvcCBjb25zdW1lcnMgb2YgY3B1dGltZTwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3AiPnt7IG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudGFza3MuY291bnQgfX0gKHt7IG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudGFza3MuY2hhbmdlIH19KTwvdGQ+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgb2YgbW9zdCByZXNvdXJjZS1odW5ncnkgdGFza3MgI30KKyAgICAgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImRldGFpbHMgcGxhaW4iPgorICAgICAgICAgICAgICAgICAgICB7JSBmb3IgZGlmZiBpbiBtZWFzdXJlbWVudC5idWlsZHN0YXRzLnRvcF9jb25zdW1lcnxyZXZlcnNlICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgZGlmZi5wa2cgfX0ue3sgZGlmZi50YXNrIH19PC90aD4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJyUwLjBmJyAlIGRpZmYudmFsdWUyIH19IHM8L3RkPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aD5CaWdnZXN0IGluY3JlYXNlIGluIGNwdXRpbWU8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5CaWdnZXN0IGRlY3JlYXNlIGluIGNwdXRpbWU8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgYmlnZ2VzdCBpbmNyZWFzZSBpbiByZXNvdXJjZSB1c2FnZSAjfQorICAgICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyBwbGFpbiI+CisgICAgICAgICAgICAgICAgICAgIHslIGZvciBkaWZmIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudG9wX2luY3JlYXNlfHJldmVyc2UgJX0KKyAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyBkaWZmLnBrZyB9fS57eyBkaWZmLnRhc2sgfX08L3RoPgorICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnJSswLjBmJyAlIGRpZmYuYWJzZGlmZiB9fSBzPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgYmlnZ2VzdCBkZWNyZWFzZSBpbiByZXNvdXJjZSB1c2FnZSAjfQorICAgICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyBwbGFpbiI+CisgICAgICAgICAgICAgICAgICAgIHslIGZvciBkaWZmIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudG9wX2RlY3JlYXNlICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgZGlmZi5wa2cgfX0ue3sgZGlmZi50YXNrIH19PC90aD4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJyUrMC4wZicgJSBkaWZmLmFic2RpZmYgfX0gczwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAgICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgeyMgUmVjaXBlIHZlcnNpb24gZGlmZmVyZW5jZXMgI30KKyAgICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudmVyX2RpZmYgJX0KKyAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTZweCI+UmVjaXBlIHZlcnNpb24gY2hhbmdlczwvZGl2PgorICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImRldGFpbHMiPgorICAgICAgICAgICAgICAgIHslIGZvciBoZWFkLCByZWNpcGVzIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudmVyX2RpZmYuaXRlbXMoKSAlfQorICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iMiI+e3sgaGVhZCB9fTwvdGg+CisgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgeyUgZm9yIG5hbWUsIGluZm8gaW4gcmVjaXBlc3xzb3J0ICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgbmFtZSB9fTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZm8gfX08L3RkPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICB7JSBlbHNlICV9CisgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHgiPk5vIHJlY2lwZSB2ZXJzaW9uIGNoYW5nZXMgZGV0ZWN0ZWQ8L2Rpdj4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgPC9kaXY+CiAgICAgICB7JSBlbmRmb3IgJX0KICAgICB7IyBVbnN1Y2Nlc3NmdWwgdGVzdCAjfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvcmVwb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvcmVwb3J0LnB5CmluZGV4IGViMDBjY2MuLmQ5OWEzNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL3JlcG9ydC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRfcGVyZi9yZXBvcnQucHkKQEAgLTExLDEyICsxMSwxNSBAQAogIyBtb3JlIGRldGFpbHMuCiAjCiAiIiJIYW5kbGluZyBvZiBidWlsZCBwZXJmIHRlc3QgcmVwb3J0cyIiIgotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIE1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBNYXBwaW5nLCBuYW1lZHR1cGxlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKIGZyb20gbnVtYmVycyBpbXBvcnQgTnVtYmVyCiBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4sIHN0ZGV2LCB2YXJpYW5jZQogCiAKK0FnZ3JlZ2F0ZVRlc3REYXRhID0gbmFtZWR0dXBsZSgnQWdncmVnYXRlVGVzdERhdGEnLCBbJ21ldGFkYXRhJywgJ3Jlc3VsdHMnXSkKKworCiBkZWYgaXNvZm10X3RvX3RpbWVzdGFtcChzdHJpbmcpOgogICAgICIiIkNvbnZlcnQgdGltZXN0YW1wIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQgaW50byB1bml4IHRpbWVzdGFtcCIiIgogICAgIGlmICcuJyBpbiBzdHJpbmc6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRzdGF0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZHN0YXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YWFkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRzdGF0cy5weQpAQCAtMCwwICsxLDM0OSBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisjIG1vcmUgZGV0YWlscy4KKyMKKyIiIkZ1bmN0aW9uYWxpdHkgZm9yIGFuYWx5emluZyBidWlsZHN0YXRzIiIiCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLE9yZGVyZWREaWN0Citmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigpCisKKwordGFza2RpZmZfZmllbGRzID0gKCdwa2cnLCAncGtnX29wJywgJ3Rhc2snLCAndGFza19vcCcsICd2YWx1ZTEnLCAndmFsdWUyJywKKyAgICAgICAgICAgICAgICAgICAnYWJzZGlmZicsICdyZWxkaWZmJykKK1Rhc2tEaWZmID0gbmFtZWR0dXBsZSgnVGFza0RpZmYnLCAnICcuam9pbih0YXNrZGlmZl9maWVsZHMpKQorCisKK2NsYXNzIEJTRXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiJFcnJvciBoYW5kbGluZyBvZiBidWlsZHN0YXRzIiIiCisgICAgcGFzcworCisKK2NsYXNzIEJTVGFzayhkaWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZlsnc3RhcnRfdGltZSddID0gTm9uZQorICAgICAgICBzZWxmWydlbGFwc2VkX3RpbWUnXSA9IE5vbmUKKyAgICAgICAgc2VsZlsnc3RhdHVzJ10gPSBOb25lCisgICAgICAgIHNlbGZbJ2lvc3RhdCddID0ge30KKyAgICAgICAgc2VsZlsncnVzYWdlJ10gPSB7fQorICAgICAgICBzZWxmWydjaGlsZF9ydXNhZ2UnXSA9IHt9CisgICAgICAgIHN1cGVyKEJTVGFzaywgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNwdXRpbWUoc2VsZik6CisgICAgICAgICIiIlN1bSBvZiB1c2VyIGFuZCBzeXN0ZW0gdGltZSB0YWtlbiBieSB0aGUgdGFzayIiIgorICAgICAgICBydXNhZ2UgPSBzZWxmWydydXNhZ2UnXVsncnVfc3RpbWUnXSArIHNlbGZbJ3J1c2FnZSddWydydV91dGltZSddCisgICAgICAgIGlmIHNlbGZbJ2NoaWxkX3J1c2FnZSddOgorICAgICAgICAgICAgIyBDaGlsZCBydXNhZ2UgbWF5IGhhdmUgYmVlbiBvcHRpbWl6ZWQgb3V0CisgICAgICAgICAgICByZXR1cm4gcnVzYWdlICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X3N0aW1lJ10gKyBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfdXRpbWUnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJ1c2FnZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdhbGx0aW1lKHNlbGYpOgorICAgICAgICAiIiJFbGFwc2VkIHdhbGwgY2xvY2sgdGltZSIiIgorICAgICAgICByZXR1cm4gc2VsZlsnZWxhcHNlZF90aW1lJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgorICAgICAgICAiIiJCeXRlcyByZWFkIGZyb20gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIHJldHVybiBzZWxmWydpb3N0YXQnXVsncmVhZF9ieXRlcyddCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd3JpdGVfYnl0ZXMoc2VsZik6CisgICAgICAgICIiIkJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIHJldHVybiBzZWxmWydpb3N0YXQnXVsnd3JpdGVfYnl0ZXMnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlYWRfb3BzKHNlbGYpOgorICAgICAgICAiIiJOdW1iZXIgb2YgcmVhZCBvcGVyYXRpb25zIG9uIHRoZSBibG9jayBsYXllciIiIgorICAgICAgICBpZiBzZWxmWydjaGlsZF9ydXNhZ2UnXToKKyAgICAgICAgICAgICMgQ2hpbGQgcnVzYWdlIG1heSBoYXZlIGJlZW4gb3B0aW1pemVkIG91dAorICAgICAgICAgICAgcmV0dXJuIHNlbGZbJ3J1c2FnZSddWydydV9pbmJsb2NrJ10gKyBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfaW5ibG9jayddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZlsncnVzYWdlJ11bJ3J1X2luYmxvY2snXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdyaXRlX29wcyhzZWxmKToKKyAgICAgICAgIiIiTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIGlmIHNlbGZbJ2NoaWxkX3J1c2FnZSddOgorICAgICAgICAgICAgIyBDaGlsZCBydXNhZ2UgbWF5IGhhdmUgYmVlbiBvcHRpbWl6ZWQgb3V0CisgICAgICAgICAgICByZXR1cm4gc2VsZlsncnVzYWdlJ11bJ3J1X291YmxvY2snXSArIHNlbGZbJ2NoaWxkX3J1c2FnZSddWydydV9vdWJsb2NrJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfb3VibG9jayddCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlKGNscywgYnVpbGRzdGF0X2ZpbGUpOgorICAgICAgICAiIiJSZWFkIGJ1aWxkc3RhdCB0ZXh0IGZpbGUiIiIKKyAgICAgICAgYnNfdGFzayA9IGNscygpCisgICAgICAgIGxvZy5kZWJ1ZygiUmVhZGluZyB0YXNrIGJ1aWxkc3RhdHMgZnJvbSAlcyIsIGJ1aWxkc3RhdF9maWxlKQorICAgICAgICBlbmRfdGltZSA9IE5vbmUKKyAgICAgICAgd2l0aCBvcGVuKGJ1aWxkc3RhdF9maWxlKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZm9iai5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmUuc3BsaXQoJzonLCAxKQorICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdTdGFydGVkJzoKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGZsb2F0KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgYnNfdGFza1snc3RhcnRfdGltZSddID0gc3RhcnRfdGltZQorICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdFbmRlZCc6CisgICAgICAgICAgICAgICAgICAgIGVuZF90aW1lID0gZmxvYXQodmFsKQorICAgICAgICAgICAgICAgIGVsaWYga2V5LnN0YXJ0c3dpdGgoJ0lPICcpOgorICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IGtleS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgIGJzX3Rhc2tbJ2lvc3RhdCddW3NwbGl0WzFdXSA9IGludCh2YWwpCisgICAgICAgICAgICAgICAgZWxpZiBrZXkuZmluZCgncnVzYWdlJykgPj0gMDoKKyAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBrZXkuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBydV9rZXkgPSBzcGxpdFstMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgcnVfa2V5IGluICgncnVfc3RpbWUnLCAncnVfdXRpbWUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGZsb2F0KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGludCh2YWwpCisgICAgICAgICAgICAgICAgICAgIHJ1X3R5cGUgPSAncnVzYWdlJyBpZiBzcGxpdFswXSA9PSAncnVzYWdlJyBlbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZF9ydXNhZ2UnCisgICAgICAgICAgICAgICAgICAgIGJzX3Rhc2tbcnVfdHlwZV1bcnVfa2V5XSA9IHZhbAorICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdTdGF0dXMnOgorICAgICAgICAgICAgICAgICAgICBic190YXNrWydzdGF0dXMnXSA9IHZhbAorICAgICAgICBpZiBlbmRfdGltZSBpcyBub3QgTm9uZSBhbmQgc3RhcnRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJzX3Rhc2tbJ2VsYXBzZWRfdGltZSddID0gZW5kX3RpbWUgLSBzdGFydF90aW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBCU0Vycm9yKCJ7fSBsb29rcyBsaWtlIGEgaW52YWxpZCBidWlsZHN0YXRzIGZpbGUiLmZvcm1hdChidWlsZHN0YXRfZmlsZSkpCisgICAgICAgIHJldHVybiBic190YXNrCisKKworY2xhc3MgQlNUYXNrQWdncmVnYXRlKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG11bHRpcGxlIHJ1bnMgb2YgdGhlIHNhbWUgdGFzayIiIgorICAgIHByb3BlcnRpZXMgPSAoJ2NwdXRpbWUnLCAnd2FsbHRpbWUnLCAncmVhZF9ieXRlcycsICd3cml0ZV9ieXRlcycsCisgICAgICAgICAgICAgICAgICAncmVhZF9vcHMnLCAnd3JpdGVfb3BzJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrcz1Ob25lKToKKyAgICAgICAgc2VsZi5fdGFza3MgPSB0YXNrcyBvciBbXQorICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzID0ge30KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLnByb3BlcnRpZXM6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIHByb3BlcnRpZXMgb24gZGVtYW5kIG9ubHkuIFdlIG9ubHkgcHJvdmlkZSBtZWFuCisgICAgICAgICAgICAgICAgIyB2YWx1ZSwgc28gZmFyCisgICAgICAgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1tuYW1lXSA9IG1lYW4oW2dldGF0dHIodCwgbmFtZSkgZm9yIHQgaW4gc2VsZi5fdGFza3NdKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb3BlcnRpZXNbbmFtZV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCInQlNUYXNrQWdncmVnYXRlJyBoYXMgbm8gYXR0cmlidXRlICd7fSciLmZvcm1hdChuYW1lKSkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgdGFzayk6CisgICAgICAgICIiIkFwcGVuZCBuZXcgdGFzayIiIgorICAgICAgICAjIFJlc2V0IHByZS1jYWxjdWxhdGVkIHByb3BlcnRpZXMKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFzaywgQlNUYXNrKSwgIlR5cGUgaXMgJ3t9JyBpbnN0ZWFkIG9mICdCU1Rhc2snIi5mb3JtYXQodHlwZSh0YXNrKSkKKyAgICAgICAgc2VsZi5fcHJvcGVydGllcyA9IHt9CisgICAgICAgIHNlbGYuX3Rhc2tzLmFwcGVuZCh0YXNrKQorCisKK2NsYXNzIEJTUmVjaXBlKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGJ1aWxkc3RhdHMgb2Ygb25lIHJlY2lwZSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24pOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuZXBvY2ggPSBlcG9jaAorICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCisgICAgICAgIHNlbGYucmV2aXNpb24gPSByZXZpc2lvbgorICAgICAgICBpZiBlcG9jaCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5ldnIgPSAie30te30iLmZvcm1hdCh2ZXJzaW9uLCByZXZpc2lvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZXZyID0gInt9X3t9LXt9Ii5mb3JtYXQoZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uKQorICAgICAgICBzZWxmLnRhc2tzID0ge30KKworICAgIGRlZiBhZ2dyZWdhdGUoc2VsZiwgYnNyZWNpcGUpOgorICAgICAgICAiIiJBZ2dyZWdhdGUgZGF0YSBvZiBhbm90aGVyIHJlY2lwZSBidWlsZHN0YXRzIiIiCisgICAgICAgIGlmIHNlbGYubmV2ciAhPSBic3JlY2lwZS5uZXZyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUmVmdXNpbmcgdG8gYWdncmVnYXRlIGJ1aWxkc3RhdHMsIHJlY2lwZSB2ZXJzaW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcnM6IHt9IHZzLiB7fSIuZm9ybWF0KHNlbGYubmV2ciwgYnNyZWNpcGUubmV2cikpCisgICAgICAgIGlmIHNldChzZWxmLnRhc2tzLmtleXMoKSkgIT0gc2V0KGJzcmVjaXBlLnRhc2tzLmtleXMoKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWZ1c2luZyB0byBhZ2dyZWdhdGUgYnVpbGRzdGF0cywgc2V0IG9mIHRhc2tzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHt9IGRpZmZlciIuZm9ybWF0KHNlbGYubmFtZSkpCisKKyAgICAgICAgZm9yIHRhc2tuYW1lLCB0YXNrZGF0YSBpbiBic3JlY2lwZS50YXNrcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi50YXNrc1t0YXNrbmFtZV0sIEJTVGFza0FnZ3JlZ2F0ZSk6CisgICAgICAgICAgICAgICAgc2VsZi50YXNrc1t0YXNrbmFtZV0gPSBCU1Rhc2tBZ2dyZWdhdGUoW3NlbGYudGFza3NbdGFza25hbWVdXSkKKyAgICAgICAgICAgIHNlbGYudGFza3NbdGFza25hbWVdLmFwcGVuZCh0YXNrZGF0YSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuZXZyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lICsgJy0nICsgc2VsZi5ldnIKKworCitjbGFzcyBCdWlsZFN0YXRzKGRpY3QpOgorICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBidWlsZHN0YXRzIG9mIG9uZSBidWlsZCIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bV90YXNrcyhzZWxmKToKKyAgICAgICAgIiIiR2V0IG51bWJlciBvZiB0YXNrcyIiIgorICAgICAgICBudW0gPSAwCisgICAgICAgIGZvciByZWNpcGUgaW4gc2VsZi52YWx1ZXMoKToKKyAgICAgICAgICAgIG51bSArPSBsZW4ocmVjaXBlLnRhc2tzKQorICAgICAgICByZXR1cm4gbnVtCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9qc29uKGNscywgYnNfanNvbik6CisgICAgICAgICIiIkNyZWF0ZSBuZXcgQnVpbGRTdGF0cyBvYmplY3QgZnJvbSBKU09OIG9iamVjdCIiIgorICAgICAgICBidWlsZHN0YXRzID0gY2xzKCkKKyAgICAgICAgZm9yIHJlY2lwZSBpbiBic19qc29uOgorICAgICAgICAgICAgaWYgcmVjaXBlWyduYW1lJ10gaW4gYnVpbGRzdGF0czoKKyAgICAgICAgICAgICAgICByYWlzZSBCU0Vycm9yKCJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlICh7fSkiLmZvcm1hdChyZWNpcGVbJ25hbWUnXSkpCisgICAgICAgICAgICBic3JlY2lwZSA9IEJTUmVjaXBlKHJlY2lwZVsnbmFtZSddLCByZWNpcGVbJ2Vwb2NoJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZVsndmVyc2lvbiddLCByZWNpcGVbJ3JldmlzaW9uJ10pCisgICAgICAgICAgICBmb3IgdGFzaywgZGF0YSBpbiByZWNpcGVbJ3Rhc2tzJ10uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBic3JlY2lwZS50YXNrc1t0YXNrXSA9IEJTVGFzayhkYXRhKQorCisgICAgICAgICAgICBidWlsZHN0YXRzW3JlY2lwZVsnbmFtZSddXSA9IGJzcmVjaXBlCisKKyAgICAgICAgcmV0dXJuIGJ1aWxkc3RhdHMKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlX2pzb24ocGF0aCk6CisgICAgICAgICIiIkxvYWQgYnVpbGRzdGF0cyBmcm9tIGEgSlNPTiBmaWxlIiIiCisgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmb2JqOgorICAgICAgICAgICAgYnNfanNvbiA9IGpzb24ubG9hZChmb2JqKQorICAgICAgICByZXR1cm4gQnVpbGRTdGF0cy5mcm9tX2pzb24oYnNfanNvbikKKworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzcGxpdF9uZXZyKG5ldnIpOgorICAgICAgICAiIiJTcGxpdCBuYW1lIGFuZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gcmVjaXBlICJuZXZyIiBzdHJpbmciIiIKKyAgICAgICAgbl9lX3YsIHJldmlzaW9uID0gbmV2ci5yc3BsaXQoJy0nLCAxKQorICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInXig/UDxuYW1lPlxTKyktKCg/UDxlcG9jaD5bMC05XXsxLDV9KV8pPyg/UDx2ZXJzaW9uPlswLTldXFMqKSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5fZV92KQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAjIElmIHdlJ3JlIG5vdCBhYmxlIHRvIHBhcnNlIGEgdmVyc2lvbiBzdGFydGluZyB3aXRoIGEgbnVtYmVyLCBqdXN0CisgICAgICAgICAgICAjIHRha2UgdGhlIHBhcnQgYWZ0ZXIgbGFzdCBkYXNoCisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInXig/UDxuYW1lPlxTKyktKCg/UDxlcG9jaD5bMC05XXsxLDV9KV8pPyg/UDx2ZXJzaW9uPlteLV0rKSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2VfdikKKyAgICAgICAgbmFtZSA9IG1hdGNoLmdyb3VwKCduYW1lJykKKyAgICAgICAgdmVyc2lvbiA9IG1hdGNoLmdyb3VwKCd2ZXJzaW9uJykKKyAgICAgICAgZXBvY2ggPSBtYXRjaC5ncm91cCgnZXBvY2gnKQorICAgICAgICByZXR1cm4gbmFtZSwgZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9kaXIoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiTG9hZCBidWlsZHN0YXRzIGZyb20gYSBidWlsZHN0YXRzIGRpcmVjdG9yeSIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBhdGgsICdidWlsZF9zdGF0cycpKToKKyAgICAgICAgICAgIHJhaXNlIEJTRXJyb3IoInt9IGRvZXMgbm90IGxvb2sgbGlrZSBhIGJ1aWxkc3RhdHMgZGlyZWN0b3J5Ii5mb3JtYXQocGF0aCkpCisKKyAgICAgICAgbG9nLmRlYnVnKCJSZWFkaW5nIGJ1aWxkc3RhdHMgZGlyZWN0b3J5ICVzIiwgcGF0aCkKKworICAgICAgICBidWlsZHN0YXRzID0gY2xzKCkKKyAgICAgICAgc3ViZGlycyA9IG9zLmxpc3RkaXIocGF0aCkKKyAgICAgICAgZm9yIGRpcm5hbWUgaW4gc3ViZGlyczoKKyAgICAgICAgICAgIHJlY2lwZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGF0aCwgZGlybmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHJlY2lwZV9kaXIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24gPSBjbHMuc3BsaXRfbmV2cihkaXJuYW1lKQorICAgICAgICAgICAgYnNyZWNpcGUgPSBCU1JlY2lwZShuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24pCisgICAgICAgICAgICBmb3IgdGFzayBpbiBvcy5saXN0ZGlyKHJlY2lwZV9kaXIpOgorICAgICAgICAgICAgICAgIGJzcmVjaXBlLnRhc2tzW3Rhc2tdID0gQlNUYXNrLmZyb21fZmlsZSgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlY2lwZV9kaXIsIHRhc2spKQorICAgICAgICAgICAgaWYgbmFtZSBpbiBidWlsZHN0YXRzOgorICAgICAgICAgICAgICAgIHJhaXNlIEJTRXJyb3IoIkNhbm5vdCBoYW5kbGUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UgKHt9KSIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgYnVpbGRzdGF0c1tuYW1lXSA9IGJzcmVjaXBlCisKKyAgICAgICAgcmV0dXJuIGJ1aWxkc3RhdHMKKworICAgIGRlZiBhZ2dyZWdhdGUoc2VsZiwgYnVpbGRzdGF0cyk6CisgICAgICAgICIiIkFnZ3JlZ2F0ZSBvdGhlciBidWlsZHN0YXRzIGludG8gdGhpcyIiIgorICAgICAgICBpZiBzZXQoc2VsZi5rZXlzKCkpICE9IHNldChidWlsZHN0YXRzLmtleXMoKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWZ1c2luZyB0byBhZ2dyZWdhdGUgYnVpbGRzdGF0cywgc2V0IG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY2lwZXMgaXMgZGlmZmVyZW50IikKKyAgICAgICAgZm9yIHBrZywgZGF0YSBpbiBidWlsZHN0YXRzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW3BrZ10uYWdncmVnYXRlKGRhdGEpCisKKworZGVmIGRpZmZfYnVpbGRzdGF0cyhiczEsIGJzMiwgc3RhdF9hdHRyLCBtaW5fdmFsPU5vbmUsIG1pbl9hYnNkaWZmPU5vbmUpOgorICAgICIiIkNvbXBhcmUgdGhlIHRhc2tzIG9mIHR3byBidWlsZHN0YXRzIiIiCisgICAgdGFza3NfZGlmZiA9IFtdCisgICAgcGtncyA9IHNldChiczEua2V5cygpKS51bmlvbihzZXQoYnMyLmtleXMoKSkpCisgICAgZm9yIHBrZyBpbiBwa2dzOgorICAgICAgICB0YXNrczEgPSBiczFbcGtnXS50YXNrcyBpZiBwa2cgaW4gYnMxIGVsc2Uge30KKyAgICAgICAgdGFza3MyID0gYnMyW3BrZ10udGFza3MgaWYgcGtnIGluIGJzMiBlbHNlIHt9CisgICAgICAgIGlmIG5vdCB0YXNrczE6CisgICAgICAgICAgICBwa2dfb3AgPSAnKycKKyAgICAgICAgZWxpZiBub3QgdGFza3MyOgorICAgICAgICAgICAgcGtnX29wID0gJy0nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwa2dfb3AgPSAnICcKKworICAgICAgICBmb3IgdGFzayBpbiBzZXQodGFza3MxLmtleXMoKSkudW5pb24oc2V0KHRhc2tzMi5rZXlzKCkpKToKKyAgICAgICAgICAgIHRhc2tfb3AgPSAnICcKKyAgICAgICAgICAgIGlmIHRhc2sgaW4gdGFza3MxOgorICAgICAgICAgICAgICAgIHZhbDEgPSBnZXRhdHRyKGJzMVtwa2ddLnRhc2tzW3Rhc2tdLCBzdGF0X2F0dHIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRhc2tfb3AgPSAnKycKKyAgICAgICAgICAgICAgICB2YWwxID0gMAorICAgICAgICAgICAgaWYgdGFzayBpbiB0YXNrczI6CisgICAgICAgICAgICAgICAgdmFsMiA9IGdldGF0dHIoYnMyW3BrZ10udGFza3NbdGFza10sIHN0YXRfYXR0cikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsMiA9IDAKKyAgICAgICAgICAgICAgICB0YXNrX29wID0gJy0nCisKKyAgICAgICAgICAgIGlmIHZhbDEgPT0gMDoKKyAgICAgICAgICAgICAgICByZWxkaWZmID0gZmxvYXQoJ2luZicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlbGRpZmYgPSAxMDAgKiAodmFsMiAtIHZhbDEpIC8gdmFsMQorCisgICAgICAgICAgICBpZiBtaW5fdmFsIGFuZCBtYXgodmFsMSwgdmFsMikgPCBtaW5fdmFsOgorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiRmlsdGVyaW5nIG91dCAlczolcyAoJXMpIiwgcGtnLCB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgodmFsMSwgdmFsMikpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG1pbl9hYnNkaWZmIGFuZCBhYnModmFsMiAtIHZhbDEpIDwgbWluX2Fic2RpZmY6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJGaWx0ZXJpbmcgb3V0ICVzOiVzIChkaWZmZXJlbmNlIG9mICVzKSIsIHBrZywgdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsMi12YWwxKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0YXNrc19kaWZmLmFwcGVuZChUYXNrRGlmZihwa2csIHBrZ19vcCwgdGFzaywgdGFza19vcCwgdmFsMSwgdmFsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDItdmFsMSwgcmVsZGlmZikpCisgICAgcmV0dXJuIHRhc2tzX2RpZmYKKworCitjbGFzcyBCU1ZlckRpZmYob2JqZWN0KToKKyAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgcmVjaXBlIHZlcnNpb24gZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gYnVpbGRzdGF0cyIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiczEsIGJzMik6CisgICAgICAgIFJlY2lwZVZlckRpZmYgPSBuYW1lZHR1cGxlKCdSZWNpcGVWZXJEaWZmJywgJ2xlZnQgcmlnaHQnKQorCisgICAgICAgIHJlY2lwZXMxID0gc2V0KGJzMS5rZXlzKCkpCisgICAgICAgIHJlY2lwZXMyID0gc2V0KGJzMi5rZXlzKCkpCisKKyAgICAgICAgc2VsZi5uZXcgPSBkaWN0KFsociwgYnMyW3JdKSBmb3IgciBpbiBzb3J0ZWQocmVjaXBlczIgLSByZWNpcGVzMSldKQorICAgICAgICBzZWxmLmRyb3BwZWQgPSBkaWN0KFsociwgYnMxW3JdKSBmb3IgciBpbiBzb3J0ZWQocmVjaXBlczEgLSByZWNpcGVzMildKQorICAgICAgICBzZWxmLmVjaGFuZ2VkID0ge30KKyAgICAgICAgc2VsZi52Y2hhbmdlZCA9IHt9CisgICAgICAgIHNlbGYucmNoYW5nZWQgPSB7fQorICAgICAgICBzZWxmLnVuY2hhbmdlZCA9IHt9CisgICAgICAgIHNlbGYuZW1wdHlfZGlmZiA9IEZhbHNlCisKKyAgICAgICAgY29tbW9uID0gcmVjaXBlczIuaW50ZXJzZWN0aW9uKHJlY2lwZXMxKQorICAgICAgICBpZiBjb21tb246CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIGNvbW1vbjoKKyAgICAgICAgICAgICAgICByZGlmZiA9IFJlY2lwZVZlckRpZmYoYnMxW3JlY2lwZV0sIGJzMltyZWNpcGVdKQorICAgICAgICAgICAgICAgIGlmIGJzMVtyZWNpcGVdLmVwb2NoICE9IGJzMltyZWNpcGVdLmVwb2NoOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVjaGFuZ2VkW3JlY2lwZV0gPSByZGlmZgorICAgICAgICAgICAgICAgIGVsaWYgYnMxW3JlY2lwZV0udmVyc2lvbiAhPSBiczJbcmVjaXBlXS52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnZjaGFuZ2VkW3JlY2lwZV0gPSByZGlmZgorICAgICAgICAgICAgICAgIGVsaWYgYnMxW3JlY2lwZV0ucmV2aXNpb24gIT0gYnMyW3JlY2lwZV0ucmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgIHNlbGYucmNoYW5nZWRbcmVjaXBlXSA9IHJkaWZmCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi51bmNoYW5nZWRbcmVjaXBlXSA9IHJkaWZmCisKKyAgICAgICAgaWYgbGVuKHJlY2lwZXMxKSA9PSBsZW4ocmVjaXBlczIpID09IGxlbihzZWxmLnVuY2hhbmdlZCk6CisgICAgICAgICAgICBzZWxmLmVtcHR5X2RpZmYgPSBUcnVlCisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5lbXB0eV9kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOTUyNjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weQpAQCAtMCwwICsxLDM5MiBAQAorIyBZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNrIHRvb2wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorCitpbXBvcnQgYmIudGluZm9pbAorCitjbGFzcyBMYXllclR5cGUoRW51bSk6CisgICAgQlNQID0gMAorICAgIERJU1RSTyA9IDEKKyAgICBTT0ZUV0FSRSA9IDIKKyAgICBFUlJPUl9OT19MQVlFUl9DT05GID0gOTgKKyAgICBFUlJPUl9CU1BfRElTVFJPID0gOTkKKworZGVmIF9nZXRfY29uZmlndXJhdGlvbnMocGF0aCk6CisgICAgY29uZmlncyA9IFtdCisKKyAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKHBhdGgpOgorICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgZikKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKSBhbmQgZi5lbmRzd2l0aCgnLmNvbmYnKToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKGZbOi01XSkgIyBzdHJpcCAuY29uZgorICAgIHJldHVybiBjb25maWdzCisKK2RlZiBfZ2V0X2xheWVyX2NvbGxlY3Rpb25zKGxheWVyX3BhdGgsIGxjb25mPU5vbmUsIGRhdGE9Tm9uZSk6CisgICAgaW1wb3J0IGJiLnBhcnNlCisgICAgaW1wb3J0IGJiLmRhdGEKKworICAgIGlmIGxjb25mIGlzIE5vbmU6CisgICAgICAgIGxjb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ2xheWVyLmNvbmYnKQorCisgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAgICBsZGF0YSA9IGJiLmRhdGEuaW5pdCgpCisgICAgICAgIGJiLnBhcnNlLmluaXRfcGFyc2VyKGxkYXRhKQorICAgIGVsc2U6CisgICAgICAgIGxkYXRhID0gZGF0YS5jcmVhdGVDb3B5KCkKKworICAgIGxkYXRhLnNldFZhcignTEFZRVJESVInLCBsYXllcl9wYXRoKQorICAgIHRyeToKKyAgICAgICAgbGRhdGEgPSBiYi5wYXJzZS5oYW5kbGUobGNvbmYsIGxkYXRhLCBpbmNsdWRlPVRydWUpCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICByYWlzZSBMYXllckVycm9yKGV4YykKKyAgICBsZGF0YS5leHBhbmRWYXJyZWYoJ0xBWUVSRElSJykKKworICAgIGNvbGxlY3Rpb25zID0gKGxkYXRhLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykgb3IgJycpLnNwbGl0KCkKKyAgICBpZiBub3QgY29sbGVjdGlvbnM6CisgICAgICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGxheWVyX3BhdGgpCisgICAgICAgIGNvbGxlY3Rpb25zID0gW25hbWVdCisKKyAgICBjb2xsZWN0aW9ucyA9IHtjOiB7fSBmb3IgYyBpbiBjb2xsZWN0aW9uc30KKyAgICBmb3IgbmFtZSBpbiBjb2xsZWN0aW9uczoKKyAgICAgICAgcHJpb3JpdHkgPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QUklPUklUWV8lcycgJSBuYW1lKQorICAgICAgICBwYXR0ZXJuID0gbGRhdGEuZ2V0VmFyKCdCQkZJTEVfUEFUVEVSTl8lcycgJSBuYW1lKQorICAgICAgICBkZXBlbmRzID0gbGRhdGEuZ2V0VmFyKCdMQVlFUkRFUEVORFNfJXMnICUgbmFtZSkKKyAgICAgICAgY29sbGVjdGlvbnNbbmFtZV1bJ3ByaW9yaXR5J10gPSBwcmlvcml0eQorICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncGF0dGVybiddID0gcGF0dGVybgorICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsnZGVwZW5kcyddID0gZGVwZW5kcworCisgICAgcmV0dXJuIGNvbGxlY3Rpb25zCisKK2RlZiBfZGV0ZWN0X2xheWVyKGxheWVyX3BhdGgpOgorICAgICIiIgorICAgICAgICBTY2FucyBsYXllciBkaXJlY3RvcnkgdG8gZGV0ZWN0IHdoYXQgdHlwZSBvZiBsYXllcgorICAgICAgICBpcyBCU1AsIERpc3RybyBvciBTb2Z0d2FyZS4KKworICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIGxheWVyIG5hbWUsIHR5cGUgYW5kIHBhdGguCisgICAgIiIiCisKKyAgICBsYXllciA9IHt9CisgICAgbGF5ZXJfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobGF5ZXJfcGF0aCkKKworICAgIGxheWVyWyduYW1lJ10gPSBsYXllcl9uYW1lCisgICAgbGF5ZXJbJ3BhdGgnXSA9IGxheWVyX3BhdGgKKyAgICBsYXllclsnY29uZiddID0ge30KKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKToKKyAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GCisgICAgICAgIHJldHVybiBsYXllcgorCisgICAgbWFjaGluZV9jb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ21hY2hpbmUnKQorICAgIGRpc3Ryb19jb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ2Rpc3RybycpCisKKyAgICBpc19ic3AgPSBGYWxzZQorICAgIGlzX2Rpc3RybyA9IEZhbHNlCisKKyAgICBpZiBvcy5wYXRoLmlzZGlyKG1hY2hpbmVfY29uZik6CisgICAgICAgIG1hY2hpbmVzID0gX2dldF9jb25maWd1cmF0aW9ucyhtYWNoaW5lX2NvbmYpCisgICAgICAgIGlmIG1hY2hpbmVzOgorICAgICAgICAgICAgaXNfYnNwID0gVHJ1ZQorCisgICAgaWYgb3MucGF0aC5pc2RpcihkaXN0cm9fY29uZik6CisgICAgICAgIGRpc3Ryb3MgPSBfZ2V0X2NvbmZpZ3VyYXRpb25zKGRpc3Ryb19jb25mKQorICAgICAgICBpZiBkaXN0cm9zOgorICAgICAgICAgICAgaXNfZGlzdHJvID0gVHJ1ZQorCisgICAgaWYgaXNfYnNwIGFuZCBpc19kaXN0cm86CisgICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTworICAgIGVsaWYgaXNfYnNwOgorICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkJTUAorICAgICAgICBsYXllclsnY29uZiddWydtYWNoaW5lcyddID0gbWFjaGluZXMKKyAgICBlbGlmIGlzX2Rpc3RybzoKKyAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5ESVNUUk8KKyAgICAgICAgbGF5ZXJbJ2NvbmYnXVsnZGlzdHJvcyddID0gZGlzdHJvcworICAgIGVsc2U6CisgICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuU09GVFdBUkUKKworICAgIGxheWVyWydjb2xsZWN0aW9ucyddID0gX2dldF9sYXllcl9jb2xsZWN0aW9ucyhsYXllclsncGF0aCddKQorCisgICAgcmV0dXJuIGxheWVyCisKK2RlZiBkZXRlY3RfbGF5ZXJzKGxheWVyX2RpcmVjdG9yaWVzLCBub19hdXRvKToKKyAgICBsYXllcnMgPSBbXQorCisgICAgZm9yIGRpcmVjdG9yeSBpbiBsYXllcl9kaXJlY3RvcmllczoKKyAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5yZWFscGF0aChkaXJlY3RvcnkpCisgICAgICAgIGlmIGRpcmVjdG9yeVstMV0gPT0gJy8nOgorICAgICAgICAgICAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5WzA6LTFdCisKKyAgICAgICAgaWYgbm9fYXV0bzoKKyAgICAgICAgICAgIGNvbmZfZGlyID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgJ2NvbmYnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihjb25mX2Rpcik6CisgICAgICAgICAgICAgICAgbGF5ZXIgPSBfZGV0ZWN0X2xheWVyKGRpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBpZiBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLmFwcGVuZChsYXllcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpCisgICAgICAgICAgICAgICAgY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ2NvbmYnKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY29uZl9kaXIpOgorICAgICAgICAgICAgICAgICAgICBsYXllciA9IF9kZXRlY3RfbGF5ZXIocm9vdCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQorCisgICAgcmV0dXJuIGxheWVycworCitkZWYgX2ZpbmRfbGF5ZXJfZGVwZW5kcyhkZXBlbmQsIGxheWVycyk6CisgICAgZm9yIGxheWVyIGluIGxheWVyczoKKyAgICAgICAgZm9yIGNvbGxlY3Rpb24gaW4gbGF5ZXJbJ2NvbGxlY3Rpb25zJ106CisgICAgICAgICAgICBpZiBkZXBlbmQgPT0gY29sbGVjdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXIKKyAgICByZXR1cm4gTm9uZQorCitkZWYgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBsYXllcnMsIGxvZ2dlcik6CisgICAgZGVmIHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGRlcGVuZHMsIGxheWVyLCBsYXllcnMsIGxvZ2dlciwgcmV0ID0gW10pOgorICAgICAgICBsb2dnZXIuZGVidWcoJ1Byb2Nlc3NpbmcgZGVwZW5kZW5jaWVzICVzIGZvciBsYXllciAlcy4nICUgXAorICAgICAgICAgICAgICAgICAgICAoZGVwZW5kcywgbGF5ZXJbJ25hbWUnXSkpCisKKyAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzLnNwbGl0KCk6CisgICAgICAgICAgICAjIGNvcmUgKG9lLWNvcmUpIGlzIHN1cHBvc2UgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAgICAgIGlmIGRlcGVuZCA9PSAnY29yZSc6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbGF5ZXJfZGVwZW5kID0gX2ZpbmRfbGF5ZXJfZGVwZW5kcyhkZXBlbmQsIGxheWVycykKKyAgICAgICAgICAgIGlmIG5vdCBsYXllcl9kZXBlbmQ6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdMYXllciAlcyBkZXBlbmRzIG9uICVzIGFuZCBpc25cJ3QgZm91bmQuJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYXllclsnbmFtZSddLCBkZXBlbmQpKQorICAgICAgICAgICAgICAgIHJldCA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFdlIGtlZXAgcHJvY2Vzc2luZywgZXZlbiBpZiByZXQgaXMgTm9uZSwgdGhpcyBhbGxvd3MgdXMgdG8gcmVwb3J0CisgICAgICAgICAgICAjIG11bHRpcGxlIGVycm9ycyBhdCBvbmNlCisgICAgICAgICAgICBpZiByZXQgaXMgbm90IE5vbmUgYW5kIGxheWVyX2RlcGVuZCBub3QgaW4gcmV0OgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQobGF5ZXJfZGVwZW5kKQorCisgICAgICAgICAgICAjIFJlY3Vyc2l2ZWx5IHByb2Nlc3MuLi4KKyAgICAgICAgICAgIGlmICdjb2xsZWN0aW9ucycgbm90IGluIGxheWVyX2RlcGVuZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgY29sbGVjdGlvbiBpbiBsYXllcl9kZXBlbmRbJ2NvbGxlY3Rpb25zJ106CisgICAgICAgICAgICAgICAgY29sbGVjdF9kZXBzID0gbGF5ZXJfZGVwZW5kWydjb2xsZWN0aW9ucyddW2NvbGxlY3Rpb25dWydkZXBlbmRzJ10KKyAgICAgICAgICAgICAgICBpZiBub3QgY29sbGVjdF9kZXBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJldCA9IHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGNvbGxlY3RfZGVwcywgbGF5ZXJfZGVwZW5kLCBsYXllcnMsIGxvZ2dlciwgcmV0KQorCisgICAgICAgIHJldHVybiByZXQKKworICAgIGxheWVyX2RlcGVuZHMgPSBbXQorICAgIGZvciBjb2xsZWN0aW9uIGluIGxheWVyWydjb2xsZWN0aW9ucyddOgorICAgICAgICBkZXBlbmRzID0gbGF5ZXJbJ2NvbGxlY3Rpb25zJ11bY29sbGVjdGlvbl1bJ2RlcGVuZHMnXQorICAgICAgICBpZiBub3QgZGVwZW5kczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbGF5ZXJfZGVwZW5kcyA9IHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGRlcGVuZHMsIGxheWVyLCBsYXllcnMsIGxvZ2dlciwgbGF5ZXJfZGVwZW5kcykKKworICAgICMgTm90ZTogW10gKGVtcHR5KSBpcyBhbGxvd2VkLCBOb25lIGlzIG5vdCEKKyAgICBpZiBsYXllcl9kZXBlbmRzIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgICMgRG9uJ3QgYWRkIGEgbGF5ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQuCisgICAgICAgIGFkZGVkID0gc2V0KCkKKyAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnR2V0dGluZyBleGlzdGluZyBsYXllcnMgZmFpbGVkLicsICdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpLmRlY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgbGF5ZXIsIHBhdGgsIHByaSBpbiByZS5maW5kYWxsKHInXihcUyspICsoW15cbl0qPykgKyhcZCspJCcsIG91dHB1dCwgcmUuTVVMVElMSU5FKToKKyAgICAgICAgICAgIGFkZGVkLmFkZChwYXRoKQorCisgICAgICAgIGZvciBsYXllcl9kZXBlbmQgaW4gbGF5ZXJfZGVwZW5kczoKKyAgICAgICAgICAgIG5hbWUgPSBsYXllcl9kZXBlbmRbJ25hbWUnXQorICAgICAgICAgICAgcGF0aCA9IGxheWVyX2RlcGVuZFsncGF0aCddCisgICAgICAgICAgICBpZiBwYXRoIGluIGFkZGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFkZGVkLmFkZChwYXRoKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0FkZGluZyBsYXllciBkZXBlbmRlbmN5ICVzJyAlIG5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oYmJsYXllcnNjb25mLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIlxuQkJMQVlFUlMgKz0gXCIlc1wiXG4iICUgcGF0aCkKKyAgICByZXR1cm4gVHJ1ZQorCitkZWYgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGxheWVycywgbG9nZ2VyKToKKyAgICBsb2dnZXIuaW5mbygnQWRkaW5nIGxheWVyICVzJyAlIGxheWVyWyduYW1lJ10pCisgICAgd2l0aCBvcGVuKGJibGF5ZXJzY29uZiwgJ2ErJykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgiXG5CQkxBWUVSUyArPSBcIiVzXCJcbiIgJSBsYXllclsncGF0aCddKQorCisgICAgcmV0dXJuIFRydWUKKworZGVmIGNoZWNrX2NvbW1hbmQoZXJyb3JfbXNnLCBjbWQpOgorICAgICcnJworICAgIFJ1biBhIGNvbW1hbmQgdW5kZXIgYSBzaGVsbCwgY2FwdHVyZSBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNpbmdsZSBzdHJlYW0sCisgICAgdGhyb3cgYW4gZXJyb3Igd2hlbiBjb21tYW5kIHJldHVybnMgbm9uLXplcm8gZXhpdCBjb2RlLiBSZXR1cm5zIHRoZSBvdXRwdXQuCisgICAgJycnCisKKyAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICBvdXRwdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICBpZiBwLnJldHVybmNvZGU6CisgICAgICAgIG1zZyA9ICIlc1xuQ29tbWFuZDogJXNcbk91dHB1dDpcbiVzIiAlIChlcnJvcl9tc2csIGNtZCwgb3V0cHV0LmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZykKKyAgICByZXR1cm4gb3V0cHV0CisKK2RlZiBnZXRfc2lnbmF0dXJlcyhidWlsZGRpciwgZmFpbHNhZmU9RmFsc2UsIG1hY2hpbmU9Tm9uZSk6CisgICAgaW1wb3J0IHJlCisKKyAgICAjIHNvbWUgcmVjaXBlcyBuZWVkcyB0byBiZSBleGNsdWRlZCBsaWtlIG1ldGEtd29ybGQtcGtnZGF0YQorICAgICMgYmVjYXVzZSBhIGxheWVyIGNhbiBhZGQgcmVjaXBlcyB0byBhIHdvcmxkIGJ1aWxkIHNvIHNpZ25hdHVyZQorICAgICMgd2lsbCBiZSBjaGFuZ2UKKyAgICBleGNsdWRlX3JlY2lwZXMgPSAoJ21ldGEtd29ybGQtcGtnZGF0YScsKQorCisgICAgc2lncyA9IHt9CisgICAgdHVuZTJ0YXNrcyA9IHt9CisKKyAgICBjbWQgPSAnJworICAgIGlmIG1hY2hpbmU6CisgICAgICAgIGNtZCArPSAnTUFDSElORT0lcyAnICUgbWFjaGluZQorICAgIGNtZCArPSAnYml0YmFrZSAnCisgICAgaWYgZmFpbHNhZmU6CisgICAgICAgIGNtZCArPSAnLWsgJworICAgIGNtZCArPSAnLVMgbm9uZSB3b3JsZCcKKyAgICBzaWdzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdsb2NrZWQtc2lncy5pbmMnKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKHNpZ3NfZmlsZSk6CisgICAgICAgIG9zLnVubGluayhzaWdzX2ZpbGUpCisgICAgdHJ5OgorICAgICAgICBjaGVja19jb21tYW5kKCdHZW5lcmF0aW5nIHNpZ25hdHVyZXMgZmFpbGVkLiBUaGlzIG1pZ2h0IGJlIGR1ZSB0byBzb21lIHBhcnNlIGVycm9yIGFuZC9vciBnZW5lcmFsIGxheWVyIGluY29tcGF0aWJpbGl0aWVzLicsCisgICAgICAgICAgICAgICAgICAgICAgY21kKQorICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXg6CisgICAgICAgIGlmIGZhaWxzYWZlIGFuZCBvcy5wYXRoLmV4aXN0cyhzaWdzX2ZpbGUpOgorICAgICAgICAgICAgIyBJZ25vcmUgdGhlIGVycm9yIGhlcmUuIE1vc3QgbGlrZWx5IHNvbWUgcmVjaXBlcyBhY3RpdmUKKyAgICAgICAgICAgICMgaW4gYSB3b3JsZCBidWlsZCBsYWNrIHNvbWUgZGVwZW5kZW5jaWVzLiBUaGVyZSBpcyBhCisgICAgICAgICAgICAjIHNlcGFyYXRlIHRlc3RfbWFjaGluZV93b3JsZF9idWlsZCB3aGljaCBleHBvc2VzIHRoZQorICAgICAgICAgICAgIyBmYWlsdXJlLgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UKKworICAgIHNpZ19yZWdleCA9IHJlLmNvbXBpbGUoIl4oP1A8dGFzaz4uKjouKik6KD9QPGhhc2g+LiopIC4kIikKKyAgICB0dW5lX3JlZ2V4ID0gcmUuY29tcGlsZSgiKF58XHMpU0lHR0VOX0xPQ0tFRFNJR1NfdC0oP1A8dHVuZT5cUyopXHMqPVxzKiIpCisgICAgY3VycmVudF90dW5lID0gTm9uZQorICAgIHdpdGggb3BlbihzaWdzX2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIHQgPSB0dW5lX3JlZ2V4LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgaWYgdDoKKyAgICAgICAgICAgICAgICBjdXJyZW50X3R1bmUgPSB0Lmdyb3VwKCd0dW5lJykKKyAgICAgICAgICAgIHMgPSBzaWdfcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIHM6CisgICAgICAgICAgICAgICAgZXhjbHVkZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGVyIGluIGV4Y2x1ZGVfcmVjaXBlczoKKyAgICAgICAgICAgICAgICAgICAgKHJlY2lwZSwgdGFzaykgPSBzLmdyb3VwKCd0YXNrJykuc3BsaXQoJzonKQorICAgICAgICAgICAgICAgICAgICBpZiBlciA9PSByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBleGNsdWRlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2lnc1tzLmdyb3VwKCd0YXNrJyldID0gcy5ncm91cCgnaGFzaCcpCisgICAgICAgICAgICAgICAgdHVuZTJ0YXNrcy5zZXRkZWZhdWx0KGN1cnJlbnRfdHVuZSwgW10pLmFwcGVuZChzLmdyb3VwKCd0YXNrJykpCisKKyAgICBpZiBub3Qgc2lnczoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5cJ3QgbG9hZCBzaWduYXR1cmVzIGZyb20gJXMnICUgc2lnc19maWxlKQorCisgICAgcmV0dXJuIChzaWdzLCB0dW5lMnRhc2tzKQorCitkZWYgZ2V0X2RlcGdyYXBoKHRhcmdldHM9Wyd3b3JsZCddLCBmYWlsc2FmZT1GYWxzZSk6CisgICAgJycnCisgICAgUmV0dXJucyB0aGUgZGVwZW5kZW5jeSBncmFwaCBmb3IgdGhlIGdpdmVuIHRhcmdldChzKS4KKyAgICBUaGUgZGVwZW5kZW5jeSBncmFwaCBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIERlcFRyZWVFdmVudC4KKyAgICAnJycKKyAgICBkZXBncmFwaCA9IE5vbmUKKyAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSkKKyAgICAgICAgdGluZm9pbC5zZXRfZXZlbnRfbWFzayhbJ2JiLmV2ZW50Lk5vUHJvdmlkZXInLCAnYmIuZXZlbnQuRGVwVHJlZUdlbmVyYXRlZCcsICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnXSkKKyAgICAgICAgaWYgbm90IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2dlbmVyYXRlRGVwVHJlZUV2ZW50JywgdGFyZ2V0cywgJ2RvX2J1aWxkJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3N0YXJ0aW5nIGdlbmVyYXRlRGVwVHJlZUV2ZW50IGZhaWxlZCcpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBldmVudCA9IHRpbmZvaWwud2FpdF9ldmVudCh0aW1lb3V0PTEwMDApCisgICAgICAgICAgICBpZiBldmVudDoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0dlbmVyYXRpbmcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBmYWlsZWQ6ICVzJyAlIGV2ZW50LmVycm9yKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBmYWlsc2FmZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIGV2ZW50IGlzIGluZm9ybWF0aW9uYWwsIHdlIHdpbGwgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1haW5pbmcgZGVwZW5kZW5jaWVzIGV2ZW50dWFsbHkgYW5kIHRodXMgY2FuIGlnbm9yZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGhlcmUgbGlrZSB3ZSBkbyBpbiBnZXRfc2lnbmF0dXJlcygpLCBpZiBkZXNpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQuX3JlYXNvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vdGhpbmcgcHJvdmlkZXMgJXM6ICVzJyAlIChldmVudC5faXRlbSwgZXZlbnQuX3JlYXNvbnMpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdOb3RoaW5nIHByb3ZpZGVzICVzLicgJSAoZXZlbnQuX2l0ZW0pKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuRGVwVHJlZUdlbmVyYXRlZCk6CisgICAgICAgICAgICAgICAgICAgIGRlcGdyYXBoID0gZXZlbnQuX2RlcGdyYXBoCisKKyAgICBpZiBkZXBncmFwaCBpcyBOb25lOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvdWxkIG5vdCByZXRyaWV2ZSB0aGUgZGVwZ3JhcGguJykKKyAgICByZXR1cm4gZGVwZ3JhcGgKKworZGVmIGNvbXBhcmVfc2lnbmF0dXJlcyhvbGRfc2lncywgY3Vycl9zaWdzKToKKyAgICAnJycKKyAgICBDb21wYXJlcyB0aGUgcmVzdWx0IG9mIHR3byBnZXRfc2lnbmF0dXJlcygpIGNhbGxzLiBSZXR1cm5zIE5vbmUgaWYgbm8KKyAgICBwcm9ibGVtcyBmb3VuZCwgb3RoZXJ3aXNlIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgYXMgYWRkaXRpb25hbAorICAgIGV4cGxhbmF0aW9uIGluIHNlbGYuZmFpbCgpLgorICAgICcnJworICAgICMgdGFzayAtPiAob2xkIHNpZ25hdHVyZSwgbmV3IHNpZ25hdHVyZSkKKyAgICBzaWdfZGlmZiA9IHt9CisgICAgZm9yIHRhc2sgaW4gb2xkX3NpZ3M6CisgICAgICAgIGlmIHRhc2sgaW4gY3Vycl9zaWdzIGFuZCBcCisgICAgICAgICAgIG9sZF9zaWdzW3Rhc2tdICE9IGN1cnJfc2lnc1t0YXNrXToKKyAgICAgICAgICAgIHNpZ19kaWZmW3Rhc2tdID0gKG9sZF9zaWdzW3Rhc2tdLCBjdXJyX3NpZ3NbdGFza10pCisKKyAgICBpZiBub3Qgc2lnX2RpZmY6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIEJld2FyZSwgZGVwZ3JhcGggdXNlcyB0YXNrPTxwbj4uPHRhc2tuYW1lPiB3aGVyZWFzIGdldF9zaWduYXR1cmVzKCkKKyAgICAjIHVzZXMgPHBuPjo8dGFza25hbWU+LiBOZWVkIHRvIGNvbnZlcnQgc29tZXRpbWVzLiBUaGUgb3V0cHV0IGZvbGxvd3MKKyAgICAjIHRoZSBjb252ZW50aW9uIGZyb20gZ2V0X3NpZ25hdHVyZXMoKSBiZWNhdXNlIHRoYXQgc2VlbXMgY2xvc2VyIHRvCisgICAgIyBub3JtYWwgYml0YmFrZSBvdXRwdXQuCisgICAgZGVmIHNpZzJncmFwaCh0YXNrKToKKyAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJzonLCAxKQorICAgICAgICByZXR1cm4gcG4gKyAnLicgKyB0YXNrbmFtZQorICAgIGRlZiBncmFwaDJzaWcodGFzayk6CisgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCcuJywgMSkKKyAgICAgICAgcmV0dXJuIHBuICsgJzonICsgdGFza25hbWUKKyAgICBkZXBncmFwaCA9IGdldF9kZXBncmFwaChmYWlsc2FmZT1UcnVlKQorICAgIGRlcGVuZHMgPSBkZXBncmFwaFsndGRlcGVuZHMnXQorCisgICAgIyBJZiBhIHRhc2sgQSBoYXMgYSBjaGFuZ2VkIHNpZ25hdHVyZSwgYnV0IG5vbmUgb2YgaXRzCisgICAgIyBkZXBlbmRlbmNpZXMsIHRoZW4gd2UgbmVlZCB0byByZXBvcnQgaXQgYmVjYXVzZSBpdCBpcworICAgICMgdGhlIG9uZSB3aGljaCBpbnRyb2R1Y2VzIGEgY2hhbmdlLiBBbnkgdGFzayBkZXBlbmRpbmcgb24KKyAgICAjIEEgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHdpbGwgYWxzbyBoYXZlIGEgY2hhbmdlZAorICAgICMgc2lnbmF0dXJlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byByZXBvcnQgaXQuIEl0IG1pZ2h0IGhhdmUKKyAgICAjIGl0cyBvd24gY2hhbmdlcywgd2hpY2ggd2lsbCBiZWNvbWUgYXBwYXJlbnQgb25jZSB0aGUKKyAgICAjIGlzc3VlcyB0aGF0IHdlIGRvIHJlcG9ydCBhcmUgZml4ZWQgYW5kIHRoZSB0ZXN0IGdldHMgcnVuCisgICAgIyBhZ2Fpbi4KKyAgICBzaWdfZGlmZl9maWx0ZXJlZCA9IFtdCisgICAgZm9yIHRhc2ssIChvbGRfc2lnLCBuZXdfc2lnKSBpbiBzaWdfZGlmZi5pdGVtcygpOgorICAgICAgICBkZXBzX3RhaW50ZWQgPSBGYWxzZQorICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHMuZ2V0KHNpZzJncmFwaCh0YXNrKSwgKCkpOgorICAgICAgICAgICAgaWYgZ3JhcGgyc2lnKGRlcCkgaW4gc2lnX2RpZmY6CisgICAgICAgICAgICAgICAgZGVwc190YWludGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBkZXBzX3RhaW50ZWQ6CisgICAgICAgICAgICBzaWdfZGlmZl9maWx0ZXJlZC5hcHBlbmQoKHRhc2ssIG9sZF9zaWcsIG5ld19zaWcpKQorCisgICAgbXNnID0gW10KKyAgICBtc2cuYXBwZW5kKCclZCBzaWduYXR1cmVzIGNoYW5nZWQsIGluaXRpYWwgZGlmZmVyZW5jZXMgKGZpcnN0IGhhc2ggYmVmb3JlLCBzZWNvbmQgYWZ0ZXIpOicgJQorICAgICAgICAgICAgICAgbGVuKHNpZ19kaWZmKSkKKyAgICBmb3IgZGlmZiBpbiBzb3J0ZWQoc2lnX2RpZmZfZmlsdGVyZWQpOgorICAgICAgICByZWNpcGUsIHRhc2tuYW1lID0gZGlmZlswXS5yc3BsaXQoJzonLCAxKQorICAgICAgICBjbWQgPSAnYml0YmFrZS1kaWZmc2lncyAtLXRhc2sgJXMgJXMgLS1zaWduYXR1cmUgJXMgJXMnICUgXAorICAgICAgICAgICAgICAocmVjaXBlLCB0YXNrbmFtZSwgZGlmZlsxXSwgZGlmZlsyXSkKKyAgICAgICAgbXNnLmFwcGVuZCgnICAgJXM6ICVzIC0+ICVzJyAlIGRpZmYpCisgICAgICAgIG1zZy5hcHBlbmQoJyAgICAgICVzJyAlIGNtZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnRGV0ZXJtaW5pbmcgc2lnbmF0dXJlIGRpZmZlcmVuY2UgZmFpbGVkLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZXJyb3IpCisgICAgICAgIGlmIG91dHB1dDoKKyAgICAgICAgICAgIG1zZy5leHRlbmQoWycgICAgICAnICsgbGluZSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXSkKKyAgICAgICAgICAgIG1zZy5hcHBlbmQoJycpCisgICAgcmV0dXJuICdcbicuam9pbihtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGQwMDQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZS5weQpAQCAtMCwwICsxLDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIE9FQ2hlY2tMYXllclRlc3RDYXNlKE9FVGVzdENhc2UpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvX19pbml0X18ucHkKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9ic3AucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9ic3AucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZiNjExYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2JzcC5weQpAQCAtMCwwICsxLDIwNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IExheWVyVHlwZSwgZ2V0X3NpZ25hdHVyZXMsIGNoZWNrX2NvbW1hbmQsIGdldF9kZXBncmFwaAorZnJvbSBjaGVja2xheWVyLmNhc2UgaW1wb3J0IE9FQ2hlY2tMYXllclRlc3RDYXNlCisKK2NsYXNzIEJTUENoZWNrTGF5ZXIoT0VDaGVja0xheWVyVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkJTUDoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJCU1BDaGVja0xheWVyOiBMYXllciAlcyBpc24ndCBCU1Agb25lLiIgJVwKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICBkZWYgdGVzdF9ic3BfZGVmaW5lc19tYWNoaW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGMubGF5ZXJbJ2NvbmYnXVsnbWFjaGluZXMnXSwgCisgICAgICAgICAgICAgICAgIkxheWVyIGlzIEJTUCBidXQgZG9lc24ndCBkZWZpbmVzIG1hY2hpbmVzLiIpCisKKyAgICBkZWYgdGVzdF9ic3Bfbm9fc2V0X21hY2hpbmUoc2VsZik6CisgICAgICAgIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcgorCisgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRkWydiYnZhcnMnXVsnTUFDSElORSddLCBtYWNoaW5lLAorICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgbWFjaGluZSAlcyAtPiAlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgIChzZWxmLnRjLmxheWVyWyduYW1lJ10sIHNlbGYudGRbJ2JidmFycyddWydNQUNISU5FJ10sIG1hY2hpbmUpKQorCisKKyAgICBkZWYgdGVzdF9tYWNoaW5lX3dvcmxkKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgImJpdGJha2Ugd29ybGQiIGlzIGV4cGVjdGVkIHRvIHdvcmsgcmVnYXJkbGVzcyB3aGljaCBtYWNoaW5lIGlzIHNlbGVjdGVkLgorICAgICAgICBCU1AgbGF5ZXJzIHNvbWV0aW1lcyBicmVhayB0aGF0IGJ5IGVuYWJsaW5nIGEgcmVjaXBlIGZvciBhIGNlcnRhaW4gbWFjaGluZQorICAgICAgICB3aXRob3V0IGNoZWNraW5nIHdoZXRoZXIgdGhhdCByZWNpcGUgYWN0dWFsbHkgY2FuIGJlIGJ1aWx0IGluIHRoZSBjdXJyZW50CisgICAgICAgIGRpc3RybyBjb25maWd1cmF0aW9uIChmb3IgZXhhbXBsZSwgT3BlbkdMIG1pZ2h0IG5vdCBlbmFibGVkKS4KKworICAgICAgICBUaGlzIHRlc3QgaXRlcmF0ZXMgb3ZlciBhbGwgbWFjaGluZXMuIEl0IHdvdWxkIGJlIG5pY2VyIHRvIGluc3RhbnRpYXRlCisgICAgICAgIGl0IG9uY2UgcGVyIG1hY2hpbmUuIEl0IG1lcmVseSBjaGVja3MgZm9yIGVycm9ycyBkdXJpbmcgcGFyc2UKKyAgICAgICAgdGltZS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgYXR0ZW1wdCB0byBidWlsZCBhbnl0aGluZy4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgbm90IHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyBtYWNoaW5lcyBzZXQgd2l0aCAtLW1hY2hpbmVzLicpCisgICAgICAgIG1zZyA9IFtdCisgICAgICAgIGZvciBtYWNoaW5lIGluIHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICAjIEluIGNvbnRyYXN0IHRvIHRlc3RfbWFjaGluZV9zaWduYXR1cmVzKCkgYmVsb3csIGVycm9ycyBhcmUgZmF0YWwgaGVyZS4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1GYWxzZSwgbWFjaGluZT1tYWNoaW5lKQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKHN0cihleCkpCisgICAgICAgIGlmIG1zZzoKKyAgICAgICAgICAgIG1zZy5pbnNlcnQoMCwgJ1RoZSBmb2xsb3dpbmcgbWFjaGluZXMgYnJva2UgYSB3b3JsZCBidWlsZDonKQorICAgICAgICAgICAgc2VsZi5mYWlsKCdcbicuam9pbihtc2cpKQorCisgICAgZGVmIHRlc3RfbWFjaGluZV9zaWduYXR1cmVzKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgU2VsZWN0aW5nIGEgbWFjaGluZSBtYXkgb25seSBhZmZlY3QgdGhlIHNpZ25hdHVyZSBvZiB0YXNrcyB0aGF0IGFyZSBzcGVjaWZpYworICAgICAgICB0byB0aGF0IG1hY2hpbmUuIEluIG90aGVyIHdvcmRzLCB3aGVuIE1BQ0hJTkU9QSBhbmQgTUFDSElORT1CIHNoYXJlIGEgcmVjaXBlCisgICAgICAgIGZvbyBhbmQgdGhlIG91dHB1dCBvZiBmb28sIHRoZW4gYm90aCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIG11c3QgYnVpbGQgZm9vCisgICAgICAgIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5LiBPdGhlcndpc2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBib3RoIG1hY2hpbmVzCisgICAgICAgIGluIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbi4KKworICAgICAgICBUaGlzIGNyaXRlcmlhIGNhbiBvbmx5IGJlIHRlc3RlZCBieSB0ZXN0aW5nIGRpZmZlcmVudCBtYWNoaW5lcyBpbiBjb21iaW5hdGlvbiwKKyAgICAgICAgaS5lLiBvbmUgbWFpbiBsYXllciwgcG90ZW50aWFsbHkgc2V2ZXJhbCBhZGRpdGlvbmFsIEJTUCBsYXllcnMgYW5kIGFuIGV4cGxpY2l0CisgICAgICAgIGNob2ljZSBvZiBtYWNoaW5lczoKKyAgICAgICAgeW9jdG8tY2hlY2stbGF5ZXIgLS1hZGRpdGlvbmFsLWxheWVycyAuLi4vbWV0YS1pbnRlbCAtLW1hY2hpbmVzIGludGVsLWNvcmVpNy02NCBpbXg2c2xldmsgLS0gLi4uL21ldGEtZnJlZXNjYWxlCisgICAgICAgICcnJworCisgICAgICAgIGlmIG5vdCBzZWxmLnRkWydtYWNoaW5lcyddOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gbWFjaGluZXMgc2V0IHdpdGggLS1tYWNoaW5lcy4nKQorCisgICAgICAgICMgQ29sbGVjdCBzaWduYXR1cmVzIGZvciBhbGwgbWFjaGluZXMgdGhhdCB3ZSBhcmUgdGVzdGluZworICAgICAgICAjIGFuZCBtZXJnZSB0aGF0IGludG8gYSBoYXNoOgorICAgICAgICAjIHR1bmUgLT4gdGFzayAtPiBzaWduYXR1cmUgLT4gbGlzdCBvZiBtYWNoaW5lcyB3aXRoIHRoYXQgY29tYmluYXRpb24KKyAgICAgICAgIworICAgICAgICAjIEl0IGlzIGFuIGVycm9yIGlmIGFueSB0dW5lL3Rhc2sgcGFpciBoYXMgbW9yZSB0aGFuIG9uZSBzaWduYXR1cmUsCisgICAgICAgICMgYmVjYXVzZSB0aGF0IGltcGxpZXMgdGhhdCB0aGUgbWFjaGluZXMgdGhhdCBjYXVzZWQgdGhvc2UgZGlmZmVyZW50CisgICAgICAgICMgc2lnbmF0dXJlcyBkbyBub3QgYWdyZWUgb24gaG93IHRvIGV4ZWN1dGUgdGhlIHRhc2suCisgICAgICAgIHR1bmVzID0ge30KKyAgICAgICAgIyBQcmVzZXJ2ZSBvcmRlcmluZyBvZiBtYWNoaW5lcyBhcyBjaG9zZW4gYnkgdGhlIHVzZXIuCisgICAgICAgIGZvciBtYWNoaW5lIGluIHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICBjdXJyX3NpZ3MsIHR1bmUydGFza3MgPSBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1UcnVlLCBtYWNoaW5lPW1hY2hpbmUpCisgICAgICAgICAgICAjIEludmVydCB0aGUgdHVuZSAtPiBbdGFza3NdIG1hcHBpbmcuCisgICAgICAgICAgICB0YXNrczJ0dW5lID0ge30KKyAgICAgICAgICAgIGZvciB0dW5lLCB0YXNrcyBpbiB0dW5lMnRhc2tzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIHRhc2sgaW4gdGFza3M6CisgICAgICAgICAgICAgICAgICAgIHRhc2tzMnR1bmVbdGFza10gPSB0dW5lCisgICAgICAgICAgICBmb3IgdGFzaywgc2lnaGFzaCBpbiBjdXJyX3NpZ3MuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB0dW5lcy5zZXRkZWZhdWx0KHRhc2tzMnR1bmVbdGFza10sIHt9KS5zZXRkZWZhdWx0KHRhc2ssIHt9KS5zZXRkZWZhdWx0KHNpZ2hhc2gsIFtdKS5hcHBlbmQobWFjaGluZSkKKworICAgICAgICBtc2cgPSBbXQorICAgICAgICBwcnVuZWQgPSAwCisgICAgICAgIGxhc3RfbGluZV9rZXkgPSBOb25lCisgICAgICAgICMgZG9fZmV0Y2gsIGRvX3VucGFjaywgLi4uLCBkb19idWlsZAorICAgICAgICB0YXNrbmFtZV9saXN0ID0gW10KKyAgICAgICAgaWYgdHVuZXM6CisgICAgICAgICAgICAjIFRoZSBvdXRwdXQgYmVsb3cgaXMgbW9zdCB1c2VmdWwgd2hlbiB3ZSBzdGFydCB3aXRoIHRhc2tzIHRoYXQgYXJlIGF0CisgICAgICAgICAgICAjIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY3kgY2hhaW4sIGkuZS4gdGhvc2UgdGhhdCBydW4gZmlyc3QuIElmCisgICAgICAgICAgICAjIHRob3NlIHRhc2tzIGRpZmZlciwgdGhlIHJlc3QgYWxzbyBkb2VzLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBUbyBnZXQgYW4gb3JkZXJpbmcgb2YgdGFza3MsIHdlIGRvIGEgdG9wb2xvZ2ljYWwgc29ydCBvZiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGRlcGdyYXBoIGZvciB0aGUgYmFzZSBjb25maWd1cmF0aW9uLCB0aGVuIG9uLXRoZS1mbHkgZmxhdHRlbiB0aGF0IGxpc3QgYnkgc3RyaXBwaW5nCisgICAgICAgICAgICAjIG91dCB0aGUgcmVjaXBlIG5hbWVzIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzLiBUaGUgYmFzZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAjIGlzIG5vdCBuZWNlc3NhcmlseSByZXByZXNlbnRhdGl2ZSwgYnV0IHNob3VsZCBiZSBjbG9zZSBlbm91Z2guIFRhc2tzCisgICAgICAgICAgICAjIHRoYXQgd2VyZSBub3QgZW5jb3VudGVyZWQgZ2V0IGEgZGVmYXVsdCBwcmlvcml0eS4KKyAgICAgICAgICAgIGRlcGdyYXBoID0gZ2V0X2RlcGdyYXBoKCkKKyAgICAgICAgICAgIGRlcGVuZHMgPSBkZXBncmFwaFsndGRlcGVuZHMnXQorICAgICAgICAgICAgV0hJVEUgPSAxCisgICAgICAgICAgICBHUkFZID0gMgorICAgICAgICAgICAgQkxBQ0sgPSAzCisgICAgICAgICAgICBjb2xvciA9IHt9CisgICAgICAgICAgICBmb3VuZCA9IHNldCgpCisgICAgICAgICAgICBkZWYgdmlzaXQodGFzayk6CisgICAgICAgICAgICAgICAgY29sb3JbdGFza10gPSBHUkFZCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRzLmdldCh0YXNrLCAoKSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbG9yLnNldGRlZmF1bHQoZGVwLCBXSElURSkgPT0gV0hJVEU6CisgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdChkZXApCisgICAgICAgICAgICAgICAgY29sb3JbdGFza10gPSBCTEFDSworICAgICAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCcuJywgMSkKKyAgICAgICAgICAgICAgICBpZiB0YXNrbmFtZSBub3QgaW4gZm91bmQ6CisgICAgICAgICAgICAgICAgICAgIHRhc2tuYW1lX2xpc3QuYXBwZW5kKHRhc2tuYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3VuZC5hZGQodGFza25hbWUpCisgICAgICAgICAgICBmb3IgdGFzayBpbiBkZXBlbmRzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBjb2xvci5zZXRkZWZhdWx0KHRhc2ssIFdISVRFKSA9PSBXSElURToKKyAgICAgICAgICAgICAgICAgICAgdmlzaXQodGFzaykKKworICAgICAgICB0YXNrbmFtZV9vcmRlciA9IGRpY3QoWyh0YXNrLCBpbmRleCkgZm9yIGluZGV4LCB0YXNrIGluIGVudW1lcmF0ZSh0YXNrbmFtZV9saXN0KSBdKQorICAgICAgICBkZWYgdGFza19rZXkodGFzayk6CisgICAgICAgICAgICBwbiwgdGFza25hbWUgPSB0YXNrLnJzcGxpdCgnOicsIDEpCisgICAgICAgICAgICByZXR1cm4gKHBuLCB0YXNrbmFtZV9vcmRlci5nZXQodGFza25hbWUsIGxlbih0YXNrbmFtZV9saXN0KSksIHRhc2tuYW1lKQorCisgICAgICAgIGZvciB0dW5lIGluIHNvcnRlZCh0dW5lcy5rZXlzKCkpOgorICAgICAgICAgICAgdGFza3MgPSB0dW5lc1t0dW5lXQorICAgICAgICAgICAgIyBBcyBmb3IgdGVzdF9zaWduYXR1cmVzIGl0IHdvdWxkIGJlIG5pY2VyIHRvIHNvcnQgdGFza3MKKyAgICAgICAgICAgICMgYnkgZGVwZW5kZW5jaWVzIGhlcmUsIGJ1dCB0aGF0IGlzIGhhcmRlciBiZWNhdXNlIHdlIGhhdmUKKyAgICAgICAgICAgICMgdG8gcmVwb3J0IG9uIHRhc2tzIGZyb20gZGlmZmVyZW50IG1hY2hpbmVzLCB3aGljaCBtaWdodAorICAgICAgICAgICAgIyBoYXZlIGRpZmZlcmVudCBkZXBlbmRlbmNpZXMuIFdlIHJlc29ydCB0byBwcnVuaW5nIHRoZQorICAgICAgICAgICAgIyBvdXRwdXQgYnkgcmVwb3J0aW5nIG9ubHkgb25lIHRhc2sgcGVyIHJlY2lwZSBpZiB0aGUgc2V0CisgICAgICAgICAgICAjIG9mIG1hY2hpbmVzIG1hdGNoZXMuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjICJiaXRiYWtlLWRpZmZzaWdzIC10IC1zIiBpcyBpbnRlbGxpZ2VudCBlbm91Z2ggdG8gcHJpbnQKKyAgICAgICAgICAgICMgZGlmZnMgcmVjdXJzaXZlbHksIHNvIG9mdGVuIGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IG11Y2gKKyAgICAgICAgICAgICMgaWYgd2UgZG9uJ3QgcGljayB0aGUgdW5kZXJseWluZyBkaWZmZXJlbmNlCisgICAgICAgICAgICAjIGhlcmUuIEhvd2V2ZXIsIHNvbWV0aW1lcyByZWN1cnNpb24gZmFpbHMKKyAgICAgICAgICAgICMgKGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyOCkuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFRvIG1pdGlnYXRlIHRoYXQgYSBiaXQsIHdlIHVzZSBhIGhhcmQtY29kZWQgb3JkZXJpbmcgb2YKKyAgICAgICAgICAgICMgdGFza3MgdGhhdCByZXByZXNlbnRzIGhvdyB0aGV5IG5vcm1hbGx5IHJ1biBhbmQgcHJlZmVyCisgICAgICAgICAgICAjIHRvIHByaW50IHRoZSBvbmVzIHRoYXQgcnVuIGZpcnN0LgorICAgICAgICAgICAgZm9yIHRhc2sgaW4gc29ydGVkKHRhc2tzLmtleXMoKSwga2V5PXRhc2tfa2V5KToKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVzID0gdGFza3NbdGFza10KKyAgICAgICAgICAgICAgICAjIGRvX2J1aWxkIGNhbiBiZSBpZ25vcmVkOiBpdCBpcyBrbm93IHRvIGhhdmUKKyAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBzaWduYXR1cmVzIGluIHNvbWUgY2FzZXMsIGZvciBleGFtcGxlIGluCisgICAgICAgICAgICAgICAgIyB0aGUgYWxsYXJjaCBjYS1jZXJ0aWZpY2F0ZXMgZHVlIHRvIFJERVBFTkRTPW9wZW5zc2wuCisgICAgICAgICAgICAgICAgIyBUaGF0IHBhcnRpY3VsYXIgZGVwZW5kZW5jeSBpcyB3aGl0ZWxpc3RlZCB2aWEKKyAgICAgICAgICAgICAgICAjIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMsIGJ1dCBzdGlsbCBzaG93cyB1cAorICAgICAgICAgICAgICAgICMgaW4gdGhlIHNzdGF0ZSBzaWduYXR1cmUgaGFzaCBiZWNhdXNlIGZpbHRlcmluZyBpdAorICAgICAgICAgICAgICAgICMgb3V0IHdvdWxkIGJlIGhhcmQgYW5kIHJ1bm5pbmcgZG9fYnVpbGQgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAjIHRpbWVzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAgICAgICAgICAgICBpZiBsZW4oc2lnbmF0dXJlcy5rZXlzKCkpID4gMSBhbmQgXAorICAgICAgICAgICAgICAgICAgIG5vdCB0YXNrLmVuZHN3aXRoKCc6ZG9fYnVpbGQnKToKKyAgICAgICAgICAgICAgICAgICAgIyBFcnJvciEKKyAgICAgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICAgICAjIFNvcnQgc2lnbmF0dXJlcyBieSBtYWNoaW5lcywgYmVjYXVzZSB0aGUgaGV4IHZhbHVlcyBkb24ndCBtZWFuIGFueXRoaW5nLgorICAgICAgICAgICAgICAgICAgICAjID0+IGFsbC1hcmNoIGFkd2FpdGEtaWNvbi10aGVtZTpkb19idWlsZDogMTIzNC4uLiAoYmVhZ2xlYm9uZSwgcWVtdXg4NikgIT0gYWJjZGYuLi4gKHFlbXV4ODYtNjQpCisgICAgICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAgICAgIyBTa2lwIHRoZSBsaW5lIGlmIGl0IGlzIGNvdmVyZWQgYWxyZWFkeSBieSB0aGUgcHJlZGVjZXNzb3IgKHNhbWUgcG4sIHNhbWUgc2V0cyBvZiBtYWNoaW5lcykuCisgICAgICAgICAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9saW5lX2tleSA9IChwbiwgc29ydGVkKHNpZ25hdHVyZXMudmFsdWVzKCkpKQorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0X2xpbmVfa2V5ICE9IGxhc3RfbGluZV9rZXk6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gJyAgICVzICVzOiAnICUgKHR1bmUsIHRhc2spCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICcgIT0gJy5qb2luKFsnJXMgKCVzKScgJSAoc2lnbmF0dXJlLCAnLCAnLmpvaW4oW20gZm9yIG0gaW4gc2lnbmF0dXJlc1tzaWduYXR1cmVdXSkpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGluIHNvcnRlZChzaWduYXR1cmVzLmtleXMoKSwga2V5PWxhbWJkYSBzOiBzaWduYXR1cmVzW3NdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmVfa2V5ID0gbmV4dF9saW5lX2tleQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBSYW5kb21seSBwaWNrIHR3byBtaXNtYXRjaGVkIHNpZ25hdHVyZXMgYW5kIHJlbWVtYmVyIGhvdyB0byBpbnZva2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYml0YmFrZS1kaWZmc2lncyBmb3IgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gaXRlcihzaWduYXR1cmVzLml0ZW1zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnNpZ19tYWNoaW5lcyA9ICcoJXMpICE9ICglcyknICUgKCcsICcuam9pbihhWzFdKSwgJywgJy5qb2luKGJbMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnNpZ19wYXJhbXMgPSAnLXQgJXMgJXMgLXMgJXMgJXMnICUgKHBuLCB0YXNrbmFtZSwgYVswXSwgYlswXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZCArPSAxCisKKyAgICAgICAgaWYgbXNnOgorICAgICAgICAgICAgbXNnLmluc2VydCgwLCAnVGhlIG1hY2hpbmVzIGhhdmUgY29uZmxpY3Rpbmcgc2lnbmF0dXJlcyBmb3Igc29tZSBzaGFyZWQgdGFza3M6JykKKyAgICAgICAgICAgIGlmIHBydW5lZCA+IDA6CisgICAgICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKKyAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCclZCB0YXNrcyB3aGVyZSBub3QgbGlzdGVkIGJlY2F1c2Ugc29tZSBvdGhlciB0YXNrIG9mIHRoZSByZWNpcGUgYWxyZWFkeSBkaWZmZXJlZC4nICUgcHJ1bmVkKQorICAgICAgICAgICAgICAgIG1zZy5hcHBlbmQoJ0l0IGlzIGxpa2VseSB0aGF0IGRpZmZlcmVuY2VzIGZyb20gZGlmZmVyZW50IHJlY2lwZXMgYWxzbyBoYXZlIHRoZSBzYW1lIHJvb3QgY2F1c2UuJykKKyAgICAgICAgICAgIG1zZy5hcHBlbmQoJycpCisgICAgICAgICAgICAjIEV4cGxhaW4gaG93IHRvIGludmVzdGlnYXRlLi4uCisgICAgICAgICAgICBtc2cuYXBwZW5kKCdUbyBpbnZlc3RpZ2F0ZSwgcnVuIGJpdGJha2UtZGlmZnNpZ3MgLXQgcmVjaXBlbmFtZSB0YXNrbmFtZSAtcyBmcm9tc2lnIHRvc2lnLicpCisgICAgICAgICAgICBjbWQgPSAnYml0YmFrZS1kaWZmc2lncyAlcycgJSBkaWZmc2lnX3BhcmFtcworICAgICAgICAgICAgbXNnLmFwcGVuZCgnRXhhbXBsZTogJXMgaW4gdGhlIGxhc3QgbGluZScgJSBkaWZmc2lnX21hY2hpbmVzKQorICAgICAgICAgICAgbXNnLmFwcGVuZCgnQ29tbWFuZDogJXMnICUgY21kKQorICAgICAgICAgICAgIyAuLi4gYW5kIGFjdHVhbGx5IGRvIGl0IGF1dG9tYXRpY2FsbHkgZm9yIHRoYXQgZXhhbXBsZSwgYnV0IHdpdGhvdXQgYWJvcnRpbmcKKyAgICAgICAgICAgICMgd2hlbiB0aGF0IGZhaWxzLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGNoZWNrX2NvbW1hbmQoJ0NvbXBhcmluZyBzaWduYXR1cmVzIGZhaWxlZC4nLCBjbWQpLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZXgpCisgICAgICAgICAgICBtc2cuZXh0ZW5kKFsnICAgJyArIGxpbmUgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKV0pCisgICAgICAgICAgICBzZWxmLmZhaWwoJ1xuJy5qb2luKG1zZykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzYzEwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IGdldF9zaWduYXR1cmVzLCBMYXllclR5cGUsIGNoZWNrX2NvbW1hbmQsIGdldF9kZXBncmFwaCwgY29tcGFyZV9zaWduYXR1cmVzCitmcm9tIGNoZWNrbGF5ZXIuY2FzZSBpbXBvcnQgT0VDaGVja0xheWVyVGVzdENhc2UKKworY2xhc3MgQ29tbW9uQ2hlY2tMYXllcihPRUNoZWNrTGF5ZXJUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmVhZG1lKHNlbGYpOgorICAgICAgICAjIFRoZSB0b3AtbGV2ZWwgUkVBRE1FIGZpbGUgbWF5IGhhdmUgYSBzdWZmaXggKGxpa2UgUkVBRE1FLnJzdCBvciBSRUFETUUudHh0KS4KKyAgICAgICAgcmVhZG1lX2ZpbGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLnRjLmxheWVyWydwYXRoJ10sICdSRUFETUUqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVhZG1lX2ZpbGVzKSA+IDAsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IkxheWVyIGRvZXNuJ3QgY29udGFpbnMgUkVBRE1FIGZpbGUuIikKKworICAgICAgICAjIFRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgZmlsZSBtYXRjaGluZyB0aGUgZmlsZSBwYXR0ZXJuIGFib3ZlCisgICAgICAgICMgKGZvciBleGFtcGxlLCBSRUFETUUucnN0IGFuZCBSRUFETUUtQ09QWUlORy5yc3QpLiBUaGUgb25lIHdpdGggdGhlIHNob3J0ZXN0CisgICAgICAgICMgbmFtZSBpcyBjb25zaWRlcmVkIHRoZSAibWFpbiIgb25lLgorICAgICAgICByZWFkbWVfZmlsZSA9IHNvcnRlZChyZWFkbWVfZmlsZXMpWzBdCisgICAgICAgIGRhdGEgPSAnJworICAgICAgICB3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YSwKKyAgICAgICAgICAgICAgICBtc2c9IkxheWVyIGNvbnRhaW5zIGEgUkVBRE1FIGZpbGUgYnV0IGl0IGlzIGVtcHR5LiIpCisKKyAgICBkZWYgdGVzdF9wYXJzZShzZWxmKToKKyAgICAgICAgY2hlY2tfY29tbWFuZCgnTGF5ZXIgJXMgZmFpbGVkIHRvIHBhcnNlLicgJSBzZWxmLnRjLmxheWVyWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAnKQorCisgICAgZGVmIHRlc3Rfc2hvd19lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgY2hlY2tfY29tbWFuZCgnTGF5ZXIgJXMgZmFpbGVkIHRvIHNob3cgZW52aXJvbm1lbnQuJyAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAnYml0YmFrZSAtZScpCisKKyAgICBkZWYgdGVzdF93b3JsZChzZWxmKToKKyAgICAgICAgJycnCisgICAgICAgICJiaXRiYWtlIHdvcmxkIiBpcyBleHBlY3RlZCB0byB3b3JrLiB0ZXN0X3NpZ25hdHVyZXMgZG9lcyBub3QgY292ZXIgdGhhdAorICAgICAgICBiZWNhdXNlIGl0IGlzIG1vcmUgbGVuaWVudCBhbmQgaWdub3JlcyByZWNpcGVzIGluIGEgd29ybGQgYnVpbGQgdGhhdAorICAgICAgICBhcmUgbm90IGFjdHVhbGx5IGJ1aWxkYWJsZSwgc28gaGVyZSB3ZSBmYWlsIHdoZW4gImJpdGJha2UgLVMgbm9uZSB3b3JsZCIKKyAgICAgICAgZmFpbHMuCisgICAgICAgICcnJworICAgICAgICBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYudGMubGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuU09GVFdBUkUgYW5kIFwKKyAgICAgICAgICAgbm90IHNlbGYudGMudGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vdCB0ZXN0aW5nIGZvciBzaWduYXR1cmUgY2hhbmdlcyBpbiBhIHNvZnR3YXJlIGxheWVyICVzLiIgXAorICAgICAgICAgICAgICAgICAgICAgJSBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICAgICAgY3Vycl9zaWdzLCBfID0gZ2V0X3NpZ25hdHVyZXMoc2VsZi50ZFsnYnVpbGRkaXInXSwgZmFpbHNhZmU9VHJ1ZSkKKyAgICAgICAgbXNnID0gY29tcGFyZV9zaWduYXR1cmVzKHNlbGYudGRbJ3NpZ3MnXSwgY3Vycl9zaWdzKQorICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0FkZGluZyBsYXllciAlcyBjaGFuZ2VkIHNpZ25hdHVyZXMuXG4lcycgJSAoc2VsZi50Yy5sYXllclsnbmFtZSddLCBtc2cpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvZGlzdHJvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvZGlzdHJvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWIzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9kaXN0cm8ucHkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IExheWVyVHlwZQorZnJvbSBjaGVja2xheWVyLmNhc2UgaW1wb3J0IE9FQ2hlY2tMYXllclRlc3RDYXNlCisKK2NsYXNzIERpc3Ryb0NoZWNrTGF5ZXIoT0VDaGVja0xheWVyVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkRJU1RSTzoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJEaXN0cm9DaGVja0xheWVyOiBMYXllciAlcyBpc24ndCBEaXN0cm8gb25lLiIgJVwKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICBkZWYgdGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50Yy5sYXllclsnY29uZiddWydkaXN0cm9zJ10sIAorICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQorCisgICAgZGVmIHRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zKHNlbGYpOgorICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKKworICAgICAgICBkaXN0cm8gPSBnZXRfYmJfdmFyKCdESVNUUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGRbJ2JidmFycyddWydESVNUUk8nXSwgZGlzdHJvLAorICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgZGlzdHJvICVzIC0+ICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgc2VsZi50ZFsnYmJ2YXJzJ11bJ0RJU1RSTyddLCBkaXN0cm8pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2NvbnRleHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlYzJjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2NvbnRleHQucHkKQEAgLTAsMCArMSwxNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IGdsb2IKK2ltcG9ydCByZQorCitmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0CisKK2NsYXNzIENoZWNrTGF5ZXJUZXN0Q29udGV4dChPRVRlc3RDb250ZXh0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGQ9Tm9uZSwgbG9nZ2VyPU5vbmUsIGxheWVyPU5vbmUsIHRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcz1UcnVlKToKKyAgICAgICAgc3VwZXIoQ2hlY2tMYXllclRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyh0ZCwgbG9nZ2VyKQorICAgICAgICBzZWxmLmxheWVyID0gbGF5ZXIKKyAgICAgICAgc2VsZi50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMgPSB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE5N2U4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOTIgKzAsMCBAQAotIyBZb2N0byBQcm9qZWN0IGNvbXBhdGliaWxpdHkgbGF5ZXIgdG9vbAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwotZnJvbSBlbnVtIGltcG9ydCBFbnVtCi0KLWltcG9ydCBiYi50aW5mb2lsCi0KLWNsYXNzIExheWVyVHlwZShFbnVtKToKLSAgICBCU1AgPSAwCi0gICAgRElTVFJPID0gMQotICAgIFNPRlRXQVJFID0gMgotICAgIEVSUk9SX05PX0xBWUVSX0NPTkYgPSA5OAotICAgIEVSUk9SX0JTUF9ESVNUUk8gPSA5OQotCi1kZWYgX2dldF9jb25maWd1cmF0aW9ucyhwYXRoKToKLSAgICBjb25maWdzID0gW10KLQotICAgIGZvciBmIGluIG9zLmxpc3RkaXIocGF0aCk6Ci0gICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCBmKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpIGFuZCBmLmVuZHN3aXRoKCcuY29uZicpOgotICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoZls6LTVdKSAjIHN0cmlwIC5jb25mCi0gICAgcmV0dXJuIGNvbmZpZ3MKLQotZGVmIF9nZXRfbGF5ZXJfY29sbGVjdGlvbnMobGF5ZXJfcGF0aCwgbGNvbmY9Tm9uZSwgZGF0YT1Ob25lKToKLSAgICBpbXBvcnQgYmIucGFyc2UKLSAgICBpbXBvcnQgYmIuZGF0YQotCi0gICAgaWYgbGNvbmYgaXMgTm9uZToKLSAgICAgICAgbGNvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpCi0KLSAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgIGxkYXRhID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgYmIucGFyc2UuaW5pdF9wYXJzZXIobGRhdGEpCi0gICAgZWxzZToKLSAgICAgICAgbGRhdGEgPSBkYXRhLmNyZWF0ZUNvcHkoKQotCi0gICAgbGRhdGEuc2V0VmFyKCdMQVlFUkRJUicsIGxheWVyX3BhdGgpCi0gICAgdHJ5OgotICAgICAgICBsZGF0YSA9IGJiLnBhcnNlLmhhbmRsZShsY29uZiwgbGRhdGEsIGluY2x1ZGU9VHJ1ZSkKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6Ci0gICAgICAgIHJhaXNlIExheWVyRXJyb3IoZXhjKQotICAgIGxkYXRhLmV4cGFuZFZhcnJlZignTEFZRVJESVInKQotCi0gICAgY29sbGVjdGlvbnMgPSAobGRhdGEuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBUcnVlKSBvciAnJykuc3BsaXQoKQotICAgIGlmIG5vdCBjb2xsZWN0aW9uczoKLSAgICAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobGF5ZXJfcGF0aCkKLSAgICAgICAgY29sbGVjdGlvbnMgPSBbbmFtZV0KLQotICAgIGNvbGxlY3Rpb25zID0ge2M6IHt9IGZvciBjIGluIGNvbGxlY3Rpb25zfQotICAgIGZvciBuYW1lIGluIGNvbGxlY3Rpb25zOgotICAgICAgICBwcmlvcml0eSA9IGxkYXRhLmdldFZhcignQkJGSUxFX1BSSU9SSVRZXyVzJyAlIG5hbWUsIFRydWUpCi0gICAgICAgIHBhdHRlcm4gPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QQVRURVJOXyVzJyAlIG5hbWUsIFRydWUpCi0gICAgICAgIGRlcGVuZHMgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSREVQRU5EU18lcycgJSBuYW1lLCBUcnVlKQotICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncHJpb3JpdHknXSA9IHByaW9yaXR5Ci0gICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydwYXR0ZXJuJ10gPSBwYXR0ZXJuCi0gICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydkZXBlbmRzJ10gPSBkZXBlbmRzCi0KLSAgICByZXR1cm4gY29sbGVjdGlvbnMKLQotZGVmIF9kZXRlY3RfbGF5ZXIobGF5ZXJfcGF0aCk6Ci0gICAgIiIiCi0gICAgICAgIFNjYW5zIGxheWVyIGRpcmVjdG9yeSB0byBkZXRlY3Qgd2hhdCB0eXBlIG9mIGxheWVyCi0gICAgICAgIGlzIEJTUCwgRGlzdHJvIG9yIFNvZnR3YXJlLgotCi0gICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggbGF5ZXIgbmFtZSwgdHlwZSBhbmQgcGF0aC4KLSAgICAiIiIKLQotICAgIGxheWVyID0ge30KLSAgICBsYXllcl9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShsYXllcl9wYXRoKQotCi0gICAgbGF5ZXJbJ25hbWUnXSA9IGxheWVyX25hbWUKLSAgICBsYXllclsncGF0aCddID0gbGF5ZXJfcGF0aAotICAgIGxheWVyWydjb25mJ10gPSB7fQotCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsYXllcl9wYXRoLCAnY29uZicsICdsYXllci5jb25mJykpOgotICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkVSUk9SX05PX0xBWUVSX0NPTkYKLSAgICAgICAgcmV0dXJuIGxheWVyCi0KLSAgICBtYWNoaW5lX2NvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbWFjaGluZScpCi0gICAgZGlzdHJvX2NvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnZGlzdHJvJykKLQotICAgIGlzX2JzcCA9IEZhbHNlCi0gICAgaXNfZGlzdHJvID0gRmFsc2UKLQotICAgIGlmIG9zLnBhdGguaXNkaXIobWFjaGluZV9jb25mKToKLSAgICAgICAgbWFjaGluZXMgPSBfZ2V0X2NvbmZpZ3VyYXRpb25zKG1hY2hpbmVfY29uZikKLSAgICAgICAgaWYgbWFjaGluZXM6Ci0gICAgICAgICAgICBpc19ic3AgPSBUcnVlCi0KLSAgICBpZiBvcy5wYXRoLmlzZGlyKGRpc3Ryb19jb25mKToKLSAgICAgICAgZGlzdHJvcyA9IF9nZXRfY29uZmlndXJhdGlvbnMoZGlzdHJvX2NvbmYpCi0gICAgICAgIGlmIGRpc3Ryb3M6Ci0gICAgICAgICAgICBpc19kaXN0cm8gPSBUcnVlCi0KLSAgICBpZiBpc19ic3AgYW5kIGlzX2Rpc3RybzoKLSAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPCi0gICAgZWxpZiBpc19ic3A6Ci0gICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuQlNQCi0gICAgICAgIGxheWVyWydjb25mJ11bJ21hY2hpbmVzJ10gPSBtYWNoaW5lcwotICAgIGVsaWYgaXNfZGlzdHJvOgotICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkRJU1RSTwotICAgICAgICBsYXllclsnY29uZiddWydkaXN0cm9zJ10gPSBkaXN0cm9zCi0gICAgZWxzZToKLSAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5TT0ZUV0FSRQotCi0gICAgbGF5ZXJbJ2NvbGxlY3Rpb25zJ10gPSBfZ2V0X2xheWVyX2NvbGxlY3Rpb25zKGxheWVyWydwYXRoJ10pCi0KLSAgICByZXR1cm4gbGF5ZXIKLQotZGVmIGRldGVjdF9sYXllcnMobGF5ZXJfZGlyZWN0b3JpZXMsIG5vX2F1dG8pOgotICAgIGxheWVycyA9IFtdCi0KLSAgICBmb3IgZGlyZWN0b3J5IGluIGxheWVyX2RpcmVjdG9yaWVzOgotICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLnJlYWxwYXRoKGRpcmVjdG9yeSkKLSAgICAgICAgaWYgZGlyZWN0b3J5Wy0xXSA9PSAnLyc6Ci0gICAgICAgICAgICBkaXJlY3RvcnkgPSBkaXJlY3RvcnlbMDotMV0KLQotICAgICAgICBpZiBub19hdXRvOgotICAgICAgICAgICAgY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCAnY29uZicpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGNvbmZfZGlyKToKLSAgICAgICAgICAgICAgICBsYXllciA9IF9kZXRlY3RfbGF5ZXIoZGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGlmIGxheWVyOgotICAgICAgICAgICAgICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAgICAgICAgICAgICAgICBkaXJfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocm9vdCkKLSAgICAgICAgICAgICAgICBjb25mX2RpciA9IG9zLnBhdGguam9pbihyb290LCAnY29uZicpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihjb25mX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGxheWVyID0gX2RldGVjdF9sYXllcihyb290KQotICAgICAgICAgICAgICAgICAgICBpZiBsYXllcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycy5hcHBlbmQobGF5ZXIpCi0KLSAgICByZXR1cm4gbGF5ZXJzCi0KLWRlZiBfZmluZF9sYXllcl9kZXBlbmRzKGRlcGVuZCwgbGF5ZXJzKToKLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBmb3IgY29sbGVjdGlvbiBpbiBsYXllclsnY29sbGVjdGlvbnMnXToKLSAgICAgICAgICAgIGlmIGRlcGVuZCA9PSBjb2xsZWN0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBsYXllcgotICAgIHJldHVybiBOb25lCi0KLWRlZiBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGxheWVycywgbG9nZ2VyKToKLSAgICBkZWYgcmVjdXJzZV9kZXBlbmRlbmNpZXMoZGVwZW5kcywgbGF5ZXIsIGxheWVycywgbG9nZ2VyLCByZXQgPSBbXSk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyBkZXBlbmRlbmNpZXMgJXMgZm9yIGxheWVyICVzLicgJSBcCi0gICAgICAgICAgICAgICAgICAgIChkZXBlbmRzLCBsYXllclsnbmFtZSddKSkKLQotICAgICAgICBmb3IgZGVwZW5kIGluIGRlcGVuZHMuc3BsaXQoKToKLSAgICAgICAgICAgICMgY29yZSAob2UtY29yZSkgaXMgc3VwcG9zZSB0byBiZSBwcm92aWRlZAotICAgICAgICAgICAgaWYgZGVwZW5kID09ICdjb3JlJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBsYXllcl9kZXBlbmQgPSBfZmluZF9sYXllcl9kZXBlbmRzKGRlcGVuZCwgbGF5ZXJzKQotICAgICAgICAgICAgaWYgbm90IGxheWVyX2RlcGVuZDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0xheWVyICVzIGRlcGVuZHMgb24gJXMgYW5kIGlzblwndCBmb3VuZC4nICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyWyduYW1lJ10sIGRlcGVuZCkpCi0gICAgICAgICAgICAgICAgcmV0ID0gTm9uZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICMgV2Uga2VlcCBwcm9jZXNzaW5nLCBldmVuIGlmIHJldCBpcyBOb25lLCB0aGlzIGFsbG93cyB1cyB0byByZXBvcnQKLSAgICAgICAgICAgICMgbXVsdGlwbGUgZXJyb3JzIGF0IG9uY2UKLSAgICAgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBhbmQgbGF5ZXJfZGVwZW5kIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICAgICAgcmV0LmFwcGVuZChsYXllcl9kZXBlbmQpCi0KLSAgICAgICAgICAgICMgUmVjdXJzaXZlbHkgcHJvY2Vzcy4uLgotICAgICAgICAgICAgaWYgJ2NvbGxlY3Rpb25zJyBub3QgaW4gbGF5ZXJfZGVwZW5kOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZvciBjb2xsZWN0aW9uIGluIGxheWVyX2RlcGVuZFsnY29sbGVjdGlvbnMnXToKLSAgICAgICAgICAgICAgICBjb2xsZWN0X2RlcHMgPSBsYXllcl9kZXBlbmRbJ2NvbGxlY3Rpb25zJ11bY29sbGVjdGlvbl1bJ2RlcGVuZHMnXQotICAgICAgICAgICAgICAgIGlmIG5vdCBjb2xsZWN0X2RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmV0ID0gcmVjdXJzZV9kZXBlbmRlbmNpZXMoY29sbGVjdF9kZXBzLCBsYXllcl9kZXBlbmQsIGxheWVycywgbG9nZ2VyLCByZXQpCi0KLSAgICAgICAgcmV0dXJuIHJldAotCi0gICAgbGF5ZXJfZGVwZW5kcyA9IFtdCi0gICAgZm9yIGNvbGxlY3Rpb24gaW4gbGF5ZXJbJ2NvbGxlY3Rpb25zJ106Ci0gICAgICAgIGRlcGVuZHMgPSBsYXllclsnY29sbGVjdGlvbnMnXVtjb2xsZWN0aW9uXVsnZGVwZW5kcyddCi0gICAgICAgIGlmIG5vdCBkZXBlbmRzOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBsYXllcl9kZXBlbmRzID0gcmVjdXJzZV9kZXBlbmRlbmNpZXMoZGVwZW5kcywgbGF5ZXIsIGxheWVycywgbG9nZ2VyLCBsYXllcl9kZXBlbmRzKQotCi0gICAgIyBOb3RlOiBbXSAoZW1wdHkpIGlzIGFsbG93ZWQsIE5vbmUgaXMgbm90IQotICAgIGlmIGxheWVyX2RlcGVuZHMgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgIyBEb24ndCBhZGQgYSBsYXllciB0aGF0IGlzIGFscmVhZHkgcHJlc2VudC4KLSAgICAgICAgYWRkZWQgPSBzZXQoKQotICAgICAgICBvdXRwdXQgPSBjaGVja19jb21tYW5kKCdHZXR0aW5nIGV4aXN0aW5nIGxheWVycyBmYWlsZWQuJywgJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIGZvciBsYXllciwgcGF0aCwgcHJpIGluIHJlLmZpbmRhbGwocideKFxTKykgKyhbXlxuXSo/KSArKFxkKykkJywgb3V0cHV0LCByZS5NVUxUSUxJTkUpOgotICAgICAgICAgICAgYWRkZWQuYWRkKHBhdGgpCi0KLSAgICAgICAgZm9yIGxheWVyX2RlcGVuZCBpbiBsYXllcl9kZXBlbmRzOgotICAgICAgICAgICAgbmFtZSA9IGxheWVyX2RlcGVuZFsnbmFtZSddCi0gICAgICAgICAgICBwYXRoID0gbGF5ZXJfZGVwZW5kWydwYXRoJ10KLSAgICAgICAgICAgIGlmIHBhdGggaW4gYWRkZWQ6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWRkZWQuYWRkKHBhdGgpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIGxheWVyIGRlcGVuZGVuY3kgJXMnICUgbmFtZSkKLSAgICAgICAgICAgIHdpdGggb3BlbihiYmxheWVyc2NvbmYsICdhKycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiXG5CQkxBWUVSUyArPSBcIiVzXCJcbiIgJSBwYXRoKQotICAgIHJldHVybiBUcnVlCi0KLWRlZiBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBsYXllciwgbGF5ZXJzLCBsb2dnZXIpOgotICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbGF5ZXIgJXMnICUgbGF5ZXJbJ25hbWUnXSkKLSAgICB3aXRoIG9wZW4oYmJsYXllcnNjb25mLCAnYSsnKSBhcyBmOgotICAgICAgICBmLndyaXRlKCJcbkJCTEFZRVJTICs9IFwiJXNcIlxuIiAlIGxheWVyWydwYXRoJ10pCi0KLSAgICByZXR1cm4gVHJ1ZQotCi1kZWYgY2hlY2tfY29tbWFuZChlcnJvcl9tc2csIGNtZCk6Ci0gICAgJycnCi0gICAgUnVuIGEgY29tbWFuZCB1bmRlciBhIHNoZWxsLCBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2luZ2xlIHN0cmVhbSwKLSAgICB0aHJvdyBhbiBlcnJvciB3aGVuIGNvbW1hbmQgcmV0dXJucyBub24temVybyBleGl0IGNvZGUuIFJldHVybnMgdGhlIG91dHB1dC4KLSAgICAnJycKLQotICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIG91dHB1dCwgXyA9IHAuY29tbXVuaWNhdGUoKQotICAgIGlmIHAucmV0dXJuY29kZToKLSAgICAgICAgbXNnID0gIiVzXG5Db21tYW5kOiAlc1xuT3V0cHV0OlxuJXMiICUgKGVycm9yX21zZywgY21kLCBvdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IobXNnKQotICAgIHJldHVybiBvdXRwdXQKLQotZGVmIGdldF9zaWduYXR1cmVzKGJ1aWxkZGlyLCBmYWlsc2FmZT1GYWxzZSwgbWFjaGluZT1Ob25lKToKLSAgICBpbXBvcnQgcmUKLQotICAgICMgc29tZSByZWNpcGVzIG5lZWRzIHRvIGJlIGV4Y2x1ZGVkIGxpa2UgbWV0YS13b3JsZC1wa2dkYXRhCi0gICAgIyBiZWNhdXNlIGEgbGF5ZXIgY2FuIGFkZCByZWNpcGVzIHRvIGEgd29ybGQgYnVpbGQgc28gc2lnbmF0dXJlCi0gICAgIyB3aWxsIGJlIGNoYW5nZQotICAgIGV4Y2x1ZGVfcmVjaXBlcyA9ICgnbWV0YS13b3JsZC1wa2dkYXRhJywpCi0KLSAgICBzaWdzID0ge30KLSAgICB0dW5lMnRhc2tzID0ge30KLQotICAgIGNtZCA9ICcnCi0gICAgaWYgbWFjaGluZToKLSAgICAgICAgY21kICs9ICdNQUNISU5FPSVzICcgJSBtYWNoaW5lCi0gICAgY21kICs9ICdiaXRiYWtlICcKLSAgICBpZiBmYWlsc2FmZToKLSAgICAgICAgY21kICs9ICctayAnCi0gICAgY21kICs9ICctUyBub25lIHdvcmxkJwotICAgIHNpZ3NfZmlsZSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ2xvY2tlZC1zaWdzLmluYycpCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc2lnc19maWxlKToKLSAgICAgICAgb3MudW5saW5rKHNpZ3NfZmlsZSkKLSAgICB0cnk6Ci0gICAgICAgIGNoZWNrX2NvbW1hbmQoJ0dlbmVyYXRpbmcgc2lnbmF0dXJlcyBmYWlsZWQuIFRoaXMgbWlnaHQgYmUgZHVlIHRvIHNvbWUgcGFyc2UgZXJyb3IgYW5kL29yIGdlbmVyYWwgbGF5ZXIgaW5jb21wYXRpYmlsaXRpZXMuJywKLSAgICAgICAgICAgICAgICAgICAgICBjbWQpCi0gICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKLSAgICAgICAgaWYgZmFpbHNhZmUgYW5kIG9zLnBhdGguZXhpc3RzKHNpZ3NfZmlsZSk6Ci0gICAgICAgICAgICAjIElnbm9yZSB0aGUgZXJyb3IgaGVyZS4gTW9zdCBsaWtlbHkgc29tZSByZWNpcGVzIGFjdGl2ZQotICAgICAgICAgICAgIyBpbiBhIHdvcmxkIGJ1aWxkIGxhY2sgc29tZSBkZXBlbmRlbmNpZXMuIFRoZXJlIGlzIGEKLSAgICAgICAgICAgICMgc2VwYXJhdGUgdGVzdF9tYWNoaW5lX3dvcmxkX2J1aWxkIHdoaWNoIGV4cG9zZXMgdGhlCi0gICAgICAgICAgICAjIGZhaWx1cmUuCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZQotCi0gICAgc2lnX3JlZ2V4ID0gcmUuY29tcGlsZSgiXig/UDx0YXNrPi4qOi4qKTooP1A8aGFzaD4uKikgLiQiKQotICAgIHR1bmVfcmVnZXggPSByZS5jb21waWxlKCIoXnxccylTSUdHRU5fTE9DS0VEU0lHU190LSg/UDx0dW5lPlxTKilccyo9XHMqIikKLSAgICBjdXJyZW50X3R1bmUgPSBOb25lCi0gICAgd2l0aCBvcGVuKHNpZ3NfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgdCA9IHR1bmVfcmVnZXguc2VhcmNoKGxpbmUpCi0gICAgICAgICAgICBpZiB0OgotICAgICAgICAgICAgICAgIGN1cnJlbnRfdHVuZSA9IHQuZ3JvdXAoJ3R1bmUnKQotICAgICAgICAgICAgcyA9IHNpZ19yZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgczoKLSAgICAgICAgICAgICAgICBleGNsdWRlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmb3IgZXIgaW4gZXhjbHVkZV9yZWNpcGVzOgotICAgICAgICAgICAgICAgICAgICAocmVjaXBlLCB0YXNrKSA9IHMuZ3JvdXAoJ3Rhc2snKS5zcGxpdCgnOicpCi0gICAgICAgICAgICAgICAgICAgIGlmIGVyID09IHJlY2lwZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIGV4Y2x1ZGU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBzaWdzW3MuZ3JvdXAoJ3Rhc2snKV0gPSBzLmdyb3VwKCdoYXNoJykKLSAgICAgICAgICAgICAgICB0dW5lMnRhc2tzLnNldGRlZmF1bHQoY3VycmVudF90dW5lLCBbXSkuYXBwZW5kKHMuZ3JvdXAoJ3Rhc2snKSkKLQotICAgIGlmIG5vdCBzaWdzOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NhblwndCBsb2FkIHNpZ25hdHVyZXMgZnJvbSAlcycgJSBzaWdzX2ZpbGUpCi0KLSAgICByZXR1cm4gKHNpZ3MsIHR1bmUydGFza3MpCi0KLWRlZiBnZXRfZGVwZ3JhcGgodGFyZ2V0cz1bJ3dvcmxkJ10sIGZhaWxzYWZlPUZhbHNlKToKLSAgICAnJycKLSAgICBSZXR1cm5zIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciB0aGUgZ2l2ZW4gdGFyZ2V0KHMpLgotICAgIFRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gRGVwVHJlZUV2ZW50LgotICAgICcnJwotICAgIGRlcGdyYXBoID0gTm9uZQotICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlKQotICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuTm9Qcm92aWRlcicsICdiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkJywgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCddKQotICAgICAgICBpZiBub3QgdGluZm9pbC5ydW5fY29tbWFuZCgnZ2VuZXJhdGVEZXBUcmVlRXZlbnQnLCB0YXJnZXRzLCAnZG9fYnVpbGQnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc3RhcnRpbmcgZ2VuZXJhdGVEZXBUcmVlRXZlbnQgZmFpbGVkJykKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGV2ZW50ID0gdGluZm9pbC53YWl0X2V2ZW50KHRpbWVvdXQ9MTAwMCkKLSAgICAgICAgICAgIGlmIGV2ZW50OgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignR2VuZXJhdGluZyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZhaWxlZDogJXMnICUgZXZlbnQuZXJyb3IpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTm9Qcm92aWRlcik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZhaWxzYWZlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZXZlbnQgaXMgaW5mb3JtYXRpb25hbCwgd2Ugd2lsbCBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHJlbWFpbmluZyBkZXBlbmRlbmNpZXMgZXZlbnR1YWxseSBhbmQgdGh1cyBjYW4gaWdub3JlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgaGVyZSBsaWtlIHdlIGRvIGluIGdldF9zaWduYXR1cmVzKCksIGlmIGRlc2lyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTm90aGluZyBwcm92aWRlcyAlczogJXMnICUgKGV2ZW50Ll9pdGVtLCBldmVudC5fcmVhc29ucykpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vdGhpbmcgcHJvdmlkZXMgJXMuJyAlIChldmVudC5faXRlbSkpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKToKLSAgICAgICAgICAgICAgICAgICAgZGVwZ3JhcGggPSBldmVudC5fZGVwZ3JhcGgKLQotICAgIGlmIGRlcGdyYXBoIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ291bGQgbm90IHJldHJpZXZlIHRoZSBkZXBncmFwaC4nKQotICAgIHJldHVybiBkZXBncmFwaAotCi1kZWYgY29tcGFyZV9zaWduYXR1cmVzKG9sZF9zaWdzLCBjdXJyX3NpZ3MpOgotICAgICcnJwotICAgIENvbXBhcmVzIHRoZSByZXN1bHQgb2YgdHdvIGdldF9zaWduYXR1cmVzKCkgY2FsbHMuIFJldHVybnMgTm9uZSBpZiBubwotICAgIHByb2JsZW1zIGZvdW5kLCBvdGhlcndpc2UgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyBhZGRpdGlvbmFsCi0gICAgZXhwbGFuYXRpb24gaW4gc2VsZi5mYWlsKCkuCi0gICAgJycnCi0gICAgIyB0YXNrIC0+IChvbGQgc2lnbmF0dXJlLCBuZXcgc2lnbmF0dXJlKQotICAgIHNpZ19kaWZmID0ge30KLSAgICBmb3IgdGFzayBpbiBvbGRfc2lnczoKLSAgICAgICAgaWYgdGFzayBpbiBjdXJyX3NpZ3MgYW5kIFwKLSAgICAgICAgICAgb2xkX3NpZ3NbdGFza10gIT0gY3Vycl9zaWdzW3Rhc2tdOgotICAgICAgICAgICAgc2lnX2RpZmZbdGFza10gPSAob2xkX3NpZ3NbdGFza10sIGN1cnJfc2lnc1t0YXNrXSkKLQotICAgIGlmIG5vdCBzaWdfZGlmZjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMgQmV3YXJlLCBkZXBncmFwaCB1c2VzIHRhc2s9PHBuPi48dGFza25hbWU+IHdoZXJlYXMgZ2V0X3NpZ25hdHVyZXMoKQotICAgICMgdXNlcyA8cG4+Ojx0YXNrbmFtZT4uIE5lZWQgdG8gY29udmVydCBzb21ldGltZXMuIFRoZSBvdXRwdXQgZm9sbG93cwotICAgICMgdGhlIGNvbnZlbnRpb24gZnJvbSBnZXRfc2lnbmF0dXJlcygpIGJlY2F1c2UgdGhhdCBzZWVtcyBjbG9zZXIgdG8KLSAgICAjIG5vcm1hbCBiaXRiYWtlIG91dHB1dC4KLSAgICBkZWYgc2lnMmdyYXBoKHRhc2spOgotICAgICAgICBwbiwgdGFza25hbWUgPSB0YXNrLnJzcGxpdCgnOicsIDEpCi0gICAgICAgIHJldHVybiBwbiArICcuJyArIHRhc2tuYW1lCi0gICAgZGVmIGdyYXBoMnNpZyh0YXNrKToKLSAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJy4nLCAxKQotICAgICAgICByZXR1cm4gcG4gKyAnOicgKyB0YXNrbmFtZQotICAgIGRlcGdyYXBoID0gZ2V0X2RlcGdyYXBoKGZhaWxzYWZlPVRydWUpCi0gICAgZGVwZW5kcyA9IGRlcGdyYXBoWyd0ZGVwZW5kcyddCi0KLSAgICAjIElmIGEgdGFzayBBIGhhcyBhIGNoYW5nZWQgc2lnbmF0dXJlLCBidXQgbm9uZSBvZiBpdHMKLSAgICAjIGRlcGVuZGVuY2llcywgdGhlbiB3ZSBuZWVkIHRvIHJlcG9ydCBpdCBiZWNhdXNlIGl0IGlzCi0gICAgIyB0aGUgb25lIHdoaWNoIGludHJvZHVjZXMgYSBjaGFuZ2UuIEFueSB0YXNrIGRlcGVuZGluZyBvbgotICAgICMgQSAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgd2lsbCBhbHNvIGhhdmUgYSBjaGFuZ2VkCi0gICAgIyBzaWduYXR1cmUsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdC4gSXQgbWlnaHQgaGF2ZQotICAgICMgaXRzIG93biBjaGFuZ2VzLCB3aGljaCB3aWxsIGJlY29tZSBhcHBhcmVudCBvbmNlIHRoZQotICAgICMgaXNzdWVzIHRoYXQgd2UgZG8gcmVwb3J0IGFyZSBmaXhlZCBhbmQgdGhlIHRlc3QgZ2V0cyBydW4KLSAgICAjIGFnYWluLgotICAgIHNpZ19kaWZmX2ZpbHRlcmVkID0gW10KLSAgICBmb3IgdGFzaywgKG9sZF9zaWcsIG5ld19zaWcpIGluIHNpZ19kaWZmLml0ZW1zKCk6Ci0gICAgICAgIGRlcHNfdGFpbnRlZCA9IEZhbHNlCi0gICAgICAgIGZvciBkZXAgaW4gZGVwZW5kcy5nZXQoc2lnMmdyYXBoKHRhc2spLCAoKSk6Ci0gICAgICAgICAgICBpZiBncmFwaDJzaWcoZGVwKSBpbiBzaWdfZGlmZjoKLSAgICAgICAgICAgICAgICBkZXBzX3RhaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGRlcHNfdGFpbnRlZDoKLSAgICAgICAgICAgIHNpZ19kaWZmX2ZpbHRlcmVkLmFwcGVuZCgodGFzaywgb2xkX3NpZywgbmV3X3NpZykpCi0KLSAgICBtc2cgPSBbXQotICAgIG1zZy5hcHBlbmQoJyVkIHNpZ25hdHVyZXMgY2hhbmdlZCwgaW5pdGlhbCBkaWZmZXJlbmNlcyAoZmlyc3QgaGFzaCBiZWZvcmUsIHNlY29uZCBhZnRlcik6JyAlCi0gICAgICAgICAgICAgICBsZW4oc2lnX2RpZmYpKQotICAgIGZvciBkaWZmIGluIHNvcnRlZChzaWdfZGlmZl9maWx0ZXJlZCk6Ci0gICAgICAgIHJlY2lwZSwgdGFza25hbWUgPSBkaWZmWzBdLnJzcGxpdCgnOicsIDEpCi0gICAgICAgIGNtZCA9ICdiaXRiYWtlLWRpZmZzaWdzIC0tdGFzayAlcyAlcyAtLXNpZ25hdHVyZSAlcyAlcycgJSBcCi0gICAgICAgICAgICAgIChyZWNpcGUsIHRhc2tuYW1lLCBkaWZmWzFdLCBkaWZmWzJdKQotICAgICAgICBtc2cuYXBwZW5kKCcgICAlczogJXMgLT4gJXMnICUgZGlmZikKLSAgICAgICAgbXNnLmFwcGVuZCgnICAgICAgJXMnICUgY21kKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQgPSBjaGVja19jb21tYW5kKCdEZXRlcm1pbmluZyBzaWduYXR1cmUgZGlmZmVyZW5jZSBmYWlsZWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kKS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgICAgIG91dHB1dCA9IHN0cihlcnJvcikKLSAgICAgICAgaWYgb3V0cHV0OgotICAgICAgICAgICAgbXNnLmV4dGVuZChbJyAgICAgICcgKyBsaW5lIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCldKQotICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKLSAgICByZXR1cm4gJ1xuJy5qb2luKG1zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0Y2U3OGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1mcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCi0KLWNsYXNzIE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZShPRVRlc3RDYXNlKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvYnNwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2VzL2JzcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNlZmFlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvYnNwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBjb21wYXRsYXllciBpbXBvcnQgTGF5ZXJUeXBlLCBnZXRfc2lnbmF0dXJlcywgY2hlY2tfY29tbWFuZCwgZ2V0X2RlcGdyYXBoCi1mcm9tIGNvbXBhdGxheWVyLmNhc2UgaW1wb3J0IE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZQotCi1jbGFzcyBCU1BDb21wYXRMYXllcihPRUNvbXBhdExheWVyVGVzdENhc2UpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkJTUDoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJCU1BDb21wYXRMYXllcjogTGF5ZXIgJXMgaXNuJ3QgQlNQIG9uZS4iICVcCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5sYXllclsnbmFtZSddKQotCi0gICAgZGVmIHRlc3RfYnNwX2RlZmluZXNfbWFjaGluZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRjLmxheWVyWydjb25mJ11bJ21hY2hpbmVzJ10sIAotICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQotCi0gICAgZGVmIHRlc3RfYnNwX25vX3NldF9tYWNoaW5lKHNlbGYpOgotICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKLQotICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZFsnYmJ2YXJzJ11bJ01BQ0hJTkUnXSwgbWFjaGluZSwKLSAgICAgICAgICAgICAgICBtc2c9IkxheWVyICVzIG1vZGlmaWVkIG1hY2hpbmUgJXMgLT4gJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAoc2VsZi50Yy5sYXllclsnbmFtZSddLCBzZWxmLnRkWydiYnZhcnMnXVsnTUFDSElORSddLCBtYWNoaW5lKSkKLQotCi0gICAgZGVmIHRlc3RfbWFjaGluZV93b3JsZChzZWxmKToKLSAgICAgICAgJycnCi0gICAgICAgICJiaXRiYWtlIHdvcmxkIiBpcyBleHBlY3RlZCB0byB3b3JrIHJlZ2FyZGxlc3Mgd2hpY2ggbWFjaGluZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgQlNQIGxheWVycyBzb21ldGltZXMgYnJlYWsgdGhhdCBieSBlbmFibGluZyBhIHJlY2lwZSBmb3IgYSBjZXJ0YWluIG1hY2hpbmUKLSAgICAgICAgd2l0aG91dCBjaGVja2luZyB3aGV0aGVyIHRoYXQgcmVjaXBlIGFjdHVhbGx5IGNhbiBiZSBidWlsdCBpbiB0aGUgY3VycmVudAotICAgICAgICBkaXN0cm8gY29uZmlndXJhdGlvbiAoZm9yIGV4YW1wbGUsIE9wZW5HTCBtaWdodCBub3QgZW5hYmxlZCkuCi0KLSAgICAgICAgVGhpcyB0ZXN0IGl0ZXJhdGVzIG92ZXIgYWxsIG1hY2hpbmVzLiBJdCB3b3VsZCBiZSBuaWNlciB0byBpbnN0YW50aWF0ZQotICAgICAgICBpdCBvbmNlIHBlciBtYWNoaW5lLiBJdCBtZXJlbHkgY2hlY2tzIGZvciBlcnJvcnMgZHVyaW5nIHBhcnNlCi0gICAgICAgIHRpbWUuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGF0dGVtcHQgdG8gYnVpbGQgYW55dGhpbmcuCi0gICAgICAgICcnJwotCi0gICAgICAgIGlmIG5vdCBzZWxmLnRkWydtYWNoaW5lcyddOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gbWFjaGluZXMgc2V0IHdpdGggLS1tYWNoaW5lcy4nKQotICAgICAgICBtc2cgPSBbXQotICAgICAgICBmb3IgbWFjaGluZSBpbiBzZWxmLnRkWydtYWNoaW5lcyddOgotICAgICAgICAgICAgIyBJbiBjb250cmFzdCB0byB0ZXN0X21hY2hpbmVfc2lnbmF0dXJlcygpIGJlbG93LCBlcnJvcnMgYXJlIGZhdGFsIGhlcmUuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2V0X3NpZ25hdHVyZXMoc2VsZi50ZFsnYnVpbGRkaXInXSwgZmFpbHNhZmU9RmFsc2UsIG1hY2hpbmU9bWFjaGluZSkKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAgICAgbXNnLmFwcGVuZChzdHIoZXgpKQotICAgICAgICBpZiBtc2c6Ci0gICAgICAgICAgICBtc2cuaW5zZXJ0KDAsICdUaGUgZm9sbG93aW5nIG1hY2hpbmVzIGJyb2tlIGEgd29ybGQgYnVpbGQ6JykKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnXG4nLmpvaW4obXNnKSkKLQotICAgIGRlZiB0ZXN0X21hY2hpbmVfc2lnbmF0dXJlcyhzZWxmKToKLSAgICAgICAgJycnCi0gICAgICAgIFNlbGVjdGluZyBhIG1hY2hpbmUgbWF5IG9ubHkgYWZmZWN0IHRoZSBzaWduYXR1cmUgb2YgdGFza3MgdGhhdCBhcmUgc3BlY2lmaWMKLSAgICAgICAgdG8gdGhhdCBtYWNoaW5lLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBNQUNISU5FPUEgYW5kIE1BQ0hJTkU9QiBzaGFyZSBhIHJlY2lwZQotICAgICAgICBmb28gYW5kIHRoZSBvdXRwdXQgb2YgZm9vLCB0aGVuIGJvdGggbWFjaGluZSBjb25maWd1cmF0aW9ucyBtdXN0IGJ1aWxkIGZvbwotICAgICAgICBpbiBleGFjdGx5IHRoZSBzYW1lIHdheS4gT3RoZXJ3aXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYm90aCBtYWNoaW5lcwotICAgICAgICBpbiB0aGUgc2FtZSBkaXN0cmlidXRpb24uCi0KLSAgICAgICAgVGhpcyBjcml0ZXJpYSBjYW4gb25seSBiZSB0ZXN0ZWQgYnkgdGVzdGluZyBkaWZmZXJlbnQgbWFjaGluZXMgaW4gY29tYmluYXRpb24sCi0gICAgICAgIGkuZS4gb25lIG1haW4gbGF5ZXIsIHBvdGVudGlhbGx5IHNldmVyYWwgYWRkaXRpb25hbCBCU1AgbGF5ZXJzIGFuZCBhbiBleHBsaWNpdAotICAgICAgICBjaG9pY2Ugb2YgbWFjaGluZXM6Ci0gICAgICAgIHlvY3RvLWNvbXBhdC1sYXllciAtLWFkZGl0aW9uYWwtbGF5ZXJzIC4uLi9tZXRhLWludGVsIC0tbWFjaGluZXMgaW50ZWwtY29yZWk3LTY0IGlteDZzbGV2ayAtLSAuLi4vbWV0YS1mcmVlc2NhbGUKLSAgICAgICAgJycnCi0KLSAgICAgICAgaWYgbm90IHNlbGYudGRbJ21hY2hpbmVzJ106Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyBtYWNoaW5lcyBzZXQgd2l0aCAtLW1hY2hpbmVzLicpCi0KLSAgICAgICAgIyBDb2xsZWN0IHNpZ25hdHVyZXMgZm9yIGFsbCBtYWNoaW5lcyB0aGF0IHdlIGFyZSB0ZXN0aW5nCi0gICAgICAgICMgYW5kIG1lcmdlIHRoYXQgaW50byBhIGhhc2g6Ci0gICAgICAgICMgdHVuZSAtPiB0YXNrIC0+IHNpZ25hdHVyZSAtPiBsaXN0IG9mIG1hY2hpbmVzIHdpdGggdGhhdCBjb21iaW5hdGlvbgotICAgICAgICAjCi0gICAgICAgICMgSXQgaXMgYW4gZXJyb3IgaWYgYW55IHR1bmUvdGFzayBwYWlyIGhhcyBtb3JlIHRoYW4gb25lIHNpZ25hdHVyZSwKLSAgICAgICAgIyBiZWNhdXNlIHRoYXQgaW1wbGllcyB0aGF0IHRoZSBtYWNoaW5lcyB0aGF0IGNhdXNlZCB0aG9zZSBkaWZmZXJlbnQKLSAgICAgICAgIyBzaWduYXR1cmVzIGRvIG5vdCBhZ3JlZSBvbiBob3cgdG8gZXhlY3V0ZSB0aGUgdGFzay4KLSAgICAgICAgdHVuZXMgPSB7fQotICAgICAgICAjIFByZXNlcnZlIG9yZGVyaW5nIG9mIG1hY2hpbmVzIGFzIGNob3NlbiBieSB0aGUgdXNlci4KLSAgICAgICAgZm9yIG1hY2hpbmUgaW4gc2VsZi50ZFsnbWFjaGluZXMnXToKLSAgICAgICAgICAgIGN1cnJfc2lncywgdHVuZTJ0YXNrcyA9IGdldF9zaWduYXR1cmVzKHNlbGYudGRbJ2J1aWxkZGlyJ10sIGZhaWxzYWZlPVRydWUsIG1hY2hpbmU9bWFjaGluZSkKLSAgICAgICAgICAgICMgSW52ZXJ0IHRoZSB0dW5lIC0+IFt0YXNrc10gbWFwcGluZy4KLSAgICAgICAgICAgIHRhc2tzMnR1bmUgPSB7fQotICAgICAgICAgICAgZm9yIHR1bmUsIHRhc2tzIGluIHR1bmUydGFza3MuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgdGFzayBpbiB0YXNrczoKLSAgICAgICAgICAgICAgICAgICAgdGFza3MydHVuZVt0YXNrXSA9IHR1bmUKLSAgICAgICAgICAgIGZvciB0YXNrLCBzaWdoYXNoIGluIGN1cnJfc2lncy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHR1bmVzLnNldGRlZmF1bHQodGFza3MydHVuZVt0YXNrXSwge30pLnNldGRlZmF1bHQodGFzaywge30pLnNldGRlZmF1bHQoc2lnaGFzaCwgW10pLmFwcGVuZChtYWNoaW5lKQotCi0gICAgICAgIG1zZyA9IFtdCi0gICAgICAgIHBydW5lZCA9IDAKLSAgICAgICAgbGFzdF9saW5lX2tleSA9IE5vbmUKLSAgICAgICAgIyBkb19mZXRjaCwgZG9fdW5wYWNrLCAuLi4sIGRvX2J1aWxkCi0gICAgICAgIHRhc2tuYW1lX2xpc3QgPSBbXQotICAgICAgICBpZiB0dW5lczoKLSAgICAgICAgICAgICMgVGhlIG91dHB1dCBiZWxvdyBpcyBtb3N0IHVzZWZ1bCB3aGVuIHdlIHN0YXJ0IHdpdGggdGFza3MgdGhhdCBhcmUgYXQKLSAgICAgICAgICAgICMgdGhlIGJvdHRvbSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgaS5lLiB0aG9zZSB0aGF0IHJ1biBmaXJzdC4gSWYKLSAgICAgICAgICAgICMgdGhvc2UgdGFza3MgZGlmZmVyLCB0aGUgcmVzdCBhbHNvIGRvZXMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFRvIGdldCBhbiBvcmRlcmluZyBvZiB0YXNrcywgd2UgZG8gYSB0b3BvbG9naWNhbCBzb3J0IG9mIHRoZSBlbnRpcmUKLSAgICAgICAgICAgICMgZGVwZ3JhcGggZm9yIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24sIHRoZW4gb24tdGhlLWZseSBmbGF0dGVuIHRoYXQgbGlzdCBieSBzdHJpcHBpbmcKLSAgICAgICAgICAgICMgb3V0IHRoZSByZWNpcGUgbmFtZXMgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMuIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICMgaXMgbm90IG5lY2Vzc2FyaWx5IHJlcHJlc2VudGF0aXZlLCBidXQgc2hvdWxkIGJlIGNsb3NlIGVub3VnaC4gVGFza3MKLSAgICAgICAgICAgICMgdGhhdCB3ZXJlIG5vdCBlbmNvdW50ZXJlZCBnZXQgYSBkZWZhdWx0IHByaW9yaXR5LgotICAgICAgICAgICAgZGVwZ3JhcGggPSBnZXRfZGVwZ3JhcGgoKQotICAgICAgICAgICAgZGVwZW5kcyA9IGRlcGdyYXBoWyd0ZGVwZW5kcyddCi0gICAgICAgICAgICBXSElURSA9IDEKLSAgICAgICAgICAgIEdSQVkgPSAyCi0gICAgICAgICAgICBCTEFDSyA9IDMKLSAgICAgICAgICAgIGNvbG9yID0ge30KLSAgICAgICAgICAgIGZvdW5kID0gc2V0KCkKLSAgICAgICAgICAgIGRlZiB2aXNpdCh0YXNrKToKLSAgICAgICAgICAgICAgICBjb2xvclt0YXNrXSA9IEdSQVkKLSAgICAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHMuZ2V0KHRhc2ssICgpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgY29sb3Iuc2V0ZGVmYXVsdChkZXAsIFdISVRFKSA9PSBXSElURToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0KGRlcCkKLSAgICAgICAgICAgICAgICBjb2xvclt0YXNrXSA9IEJMQUNLCi0gICAgICAgICAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJy4nLCAxKQotICAgICAgICAgICAgICAgIGlmIHRhc2tuYW1lIG5vdCBpbiBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgdGFza25hbWVfbGlzdC5hcHBlbmQodGFza25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kLmFkZCh0YXNrbmFtZSkKLSAgICAgICAgICAgIGZvciB0YXNrIGluIGRlcGVuZHMua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGNvbG9yLnNldGRlZmF1bHQodGFzaywgV0hJVEUpID09IFdISVRFOgotICAgICAgICAgICAgICAgICAgICB2aXNpdCh0YXNrKQotCi0gICAgICAgIHRhc2tuYW1lX29yZGVyID0gZGljdChbKHRhc2ssIGluZGV4KSBmb3IgaW5kZXgsIHRhc2sgaW4gZW51bWVyYXRlKHRhc2tuYW1lX2xpc3QpIF0pCi0gICAgICAgIGRlZiB0YXNrX2tleSh0YXNrKToKLSAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCc6JywgMSkKLSAgICAgICAgICAgIHJldHVybiAocG4sIHRhc2tuYW1lX29yZGVyLmdldCh0YXNrbmFtZSwgbGVuKHRhc2tuYW1lX2xpc3QpKSwgdGFza25hbWUpCi0KLSAgICAgICAgZm9yIHR1bmUgaW4gc29ydGVkKHR1bmVzLmtleXMoKSk6Ci0gICAgICAgICAgICB0YXNrcyA9IHR1bmVzW3R1bmVdCi0gICAgICAgICAgICAjIEFzIGZvciB0ZXN0X3NpZ25hdHVyZXMgaXQgd291bGQgYmUgbmljZXIgdG8gc29ydCB0YXNrcwotICAgICAgICAgICAgIyBieSBkZXBlbmRlbmNpZXMgaGVyZSwgYnV0IHRoYXQgaXMgaGFyZGVyIGJlY2F1c2Ugd2UgaGF2ZQotICAgICAgICAgICAgIyB0byByZXBvcnQgb24gdGFza3MgZnJvbSBkaWZmZXJlbnQgbWFjaGluZXMsIHdoaWNoIG1pZ2h0Ci0gICAgICAgICAgICAjIGhhdmUgZGlmZmVyZW50IGRlcGVuZGVuY2llcy4gV2UgcmVzb3J0IHRvIHBydW5pbmcgdGhlCi0gICAgICAgICAgICAjIG91dHB1dCBieSByZXBvcnRpbmcgb25seSBvbmUgdGFzayBwZXIgcmVjaXBlIGlmIHRoZSBzZXQKLSAgICAgICAgICAgICMgb2YgbWFjaGluZXMgbWF0Y2hlcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgImJpdGJha2UtZGlmZnNpZ3MgLXQgLXMiIGlzIGludGVsbGlnZW50IGVub3VnaCB0byBwcmludAotICAgICAgICAgICAgIyBkaWZmcyByZWN1cnNpdmVseSwgc28gb2Z0ZW4gaXQgZG9lcyBub3QgbWF0dGVyIHRoYXQgbXVjaAotICAgICAgICAgICAgIyBpZiB3ZSBkb24ndCBwaWNrIHRoZSB1bmRlcmx5aW5nIGRpZmZlcmVuY2UKLSAgICAgICAgICAgICMgaGVyZS4gSG93ZXZlciwgc29tZXRpbWVzIHJlY3Vyc2lvbiBmYWlscwotICAgICAgICAgICAgIyAoaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4KS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVG8gbWl0aWdhdGUgdGhhdCBhIGJpdCwgd2UgdXNlIGEgaGFyZC1jb2RlZCBvcmRlcmluZyBvZgotICAgICAgICAgICAgIyB0YXNrcyB0aGF0IHJlcHJlc2VudHMgaG93IHRoZXkgbm9ybWFsbHkgcnVuIGFuZCBwcmVmZXIKLSAgICAgICAgICAgICMgdG8gcHJpbnQgdGhlIG9uZXMgdGhhdCBydW4gZmlyc3QuCi0gICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQodGFza3Mua2V5cygpLCBrZXk9dGFza19rZXkpOgotICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMgPSB0YXNrc1t0YXNrXQotICAgICAgICAgICAgICAgICMgZG9fYnVpbGQgY2FuIGJlIGlnbm9yZWQ6IGl0IGlzIGtub3cgdG8gaGF2ZQotICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IHNpZ25hdHVyZXMgaW4gc29tZSBjYXNlcywgZm9yIGV4YW1wbGUgaW4KLSAgICAgICAgICAgICAgICAjIHRoZSBhbGxhcmNoIGNhLWNlcnRpZmljYXRlcyBkdWUgdG8gUkRFUEVORFM9b3BlbnNzbC4KLSAgICAgICAgICAgICAgICAjIFRoYXQgcGFydGljdWxhciBkZXBlbmRlbmN5IGlzIHdoaXRlbGlzdGVkIHZpYQotICAgICAgICAgICAgICAgICMgU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUywgYnV0IHN0aWxsIHNob3dzIHVwCi0gICAgICAgICAgICAgICAgIyBpbiB0aGUgc3N0YXRlIHNpZ25hdHVyZSBoYXNoIGJlY2F1c2UgZmlsdGVyaW5nIGl0Ci0gICAgICAgICAgICAgICAgIyBvdXQgd291bGQgYmUgaGFyZCBhbmQgcnVubmluZyBkb19idWlsZCBtdWx0aXBsZQotICAgICAgICAgICAgICAgICMgdGltZXMgZG9lc24ndCByZWFsbHkgbWF0dGVyLgotICAgICAgICAgICAgICAgIGlmIGxlbihzaWduYXR1cmVzLmtleXMoKSkgPiAxIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgbm90IHRhc2suZW5kc3dpdGgoJzpkb19idWlsZCcpOgotICAgICAgICAgICAgICAgICAgICAjIEVycm9yIQotICAgICAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgICAgICMgU29ydCBzaWduYXR1cmVzIGJ5IG1hY2hpbmVzLCBiZWNhdXNlIHRoZSBoZXggdmFsdWVzIGRvbid0IG1lYW4gYW55dGhpbmcuCi0gICAgICAgICAgICAgICAgICAgICMgPT4gYWxsLWFyY2ggYWR3YWl0YS1pY29uLXRoZW1lOmRvX2J1aWxkOiAxMjM0Li4uIChiZWFnbGVib25lLCBxZW11eDg2KSAhPSBhYmNkZi4uLiAocWVtdXg4Ni02NCkKLSAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAjIFNraXAgdGhlIGxpbmUgaWYgaXQgaXMgY292ZXJlZCBhbHJlYWR5IGJ5IHRoZSBwcmVkZWNlc3NvciAoc2FtZSBwbiwgc2FtZSBzZXRzIG9mIG1hY2hpbmVzKS4KLSAgICAgICAgICAgICAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJzonLCAxKQotICAgICAgICAgICAgICAgICAgICBuZXh0X2xpbmVfa2V5ID0gKHBuLCBzb3J0ZWQoc2lnbmF0dXJlcy52YWx1ZXMoKSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRfbGluZV9rZXkgIT0gbGFzdF9saW5lX2tleToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAnICAgJXMgJXM6ICcgJSAodHVuZSwgdGFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAhPSAnLmpvaW4oWyclcyAoJXMpJyAlIChzaWduYXR1cmUsICcsICcuam9pbihbbSBmb3IgbSBpbiBzaWduYXR1cmVzW3NpZ25hdHVyZV1dKSkgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgaW4gc29ydGVkKHNpZ25hdHVyZXMua2V5cygpLCBrZXk9bGFtYmRhIHM6IHNpZ25hdHVyZXNbc10pXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZV9rZXkgPSBuZXh0X2xpbmVfa2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJhbmRvbWx5IHBpY2sgdHdvIG1pc21hdGNoZWQgc2lnbmF0dXJlcyBhbmQgcmVtZW1iZXIgaG93IHRvIGludm9rZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBiaXRiYWtlLWRpZmZzaWdzIGZvciB0aGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBpdGVyKHNpZ25hdHVyZXMuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXh0KGl0ZXJhdG9yKQotICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG5leHQoaXRlcmF0b3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWZmc2lnX21hY2hpbmVzID0gJyglcykgIT0gKCVzKScgJSAoJywgJy5qb2luKGFbMV0pLCAnLCAnLmpvaW4oYlsxXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWZmc2lnX3BhcmFtcyA9ICctdCAlcyAlcyAtcyAlcyAlcycgJSAocG4sIHRhc2tuYW1lLCBhWzBdLCBiWzBdKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkICs9IDEKLQotICAgICAgICBpZiBtc2c6Ci0gICAgICAgICAgICBtc2cuaW5zZXJ0KDAsICdUaGUgbWFjaGluZXMgaGF2ZSBjb25mbGljdGluZyBzaWduYXR1cmVzIGZvciBzb21lIHNoYXJlZCB0YXNrczonKQotICAgICAgICAgICAgaWYgcHJ1bmVkID4gMDoKLSAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCcnKQotICAgICAgICAgICAgICAgIG1zZy5hcHBlbmQoJyVkIHRhc2tzIHdoZXJlIG5vdCBsaXN0ZWQgYmVjYXVzZSBzb21lIG90aGVyIHRhc2sgb2YgdGhlIHJlY2lwZSBhbHJlYWR5IGRpZmZlcmVkLicgJSBwcnVuZWQpCi0gICAgICAgICAgICAgICAgbXNnLmFwcGVuZCgnSXQgaXMgbGlrZWx5IHRoYXQgZGlmZmVyZW5jZXMgZnJvbSBkaWZmZXJlbnQgcmVjaXBlcyBhbHNvIGhhdmUgdGhlIHNhbWUgcm9vdCBjYXVzZS4nKQotICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKLSAgICAgICAgICAgICMgRXhwbGFpbiBob3cgdG8gaW52ZXN0aWdhdGUuLi4KLSAgICAgICAgICAgIG1zZy5hcHBlbmQoJ1RvIGludmVzdGlnYXRlLCBydW4gYml0YmFrZS1kaWZmc2lncyAtdCByZWNpcGVuYW1lIHRhc2tuYW1lIC1zIGZyb21zaWcgdG9zaWcuJykKLSAgICAgICAgICAgIGNtZCA9ICdiaXRiYWtlLWRpZmZzaWdzICVzJyAlIGRpZmZzaWdfcGFyYW1zCi0gICAgICAgICAgICBtc2cuYXBwZW5kKCdFeGFtcGxlOiAlcyBpbiB0aGUgbGFzdCBsaW5lJyAlIGRpZmZzaWdfbWFjaGluZXMpCi0gICAgICAgICAgICBtc2cuYXBwZW5kKCdDb21tYW5kOiAlcycgJSBjbWQpCi0gICAgICAgICAgICAjIC4uLiBhbmQgYWN0dWFsbHkgZG8gaXQgYXV0b21hdGljYWxseSBmb3IgdGhhdCBleGFtcGxlLCBidXQgd2l0aG91dCBhYm9ydGluZwotICAgICAgICAgICAgIyB3aGVuIHRoYXQgZmFpbHMuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnQ29tcGFyaW5nIHNpZ25hdHVyZXMgZmFpbGVkLicsIGNtZCkuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cihleCkKLSAgICAgICAgICAgIG1zZy5leHRlbmQoWycgICAnICsgbGluZSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXSkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnXG4nLmpvaW4obXNnKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9jb21tb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWU4YmE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGNvbXBhdGxheWVyIGltcG9ydCBnZXRfc2lnbmF0dXJlcywgTGF5ZXJUeXBlLCBjaGVja19jb21tYW5kLCBnZXRfZGVwZ3JhcGgsIGNvbXBhcmVfc2lnbmF0dXJlcwotZnJvbSBjb21wYXRsYXllci5jYXNlIGltcG9ydCBPRUNvbXBhdExheWVyVGVzdENhc2UKLQotY2xhc3MgQ29tbW9uQ29tcGF0TGF5ZXIoT0VDb21wYXRMYXllclRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZWFkbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIHRvcC1sZXZlbCBSRUFETUUgZmlsZSBtYXkgaGF2ZSBhIHN1ZmZpeCAobGlrZSBSRUFETUUucnN0IG9yIFJFQURNRS50eHQpLgotICAgICAgICByZWFkbWVfZmlsZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYudGMubGF5ZXJbJ3BhdGgnXSwgJ1JFQURNRSonKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWFkbWVfZmlsZXMpID4gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgZG9lc24ndCBjb250YWlucyBSRUFETUUgZmlsZS4iKQotCi0gICAgICAgICMgVGhlcmUgbWlnaHQgYmUgbW9yZSB0aGFuIG9uZSBmaWxlIG1hdGNoaW5nIHRoZSBmaWxlIHBhdHRlcm4gYWJvdmUKLSAgICAgICAgIyAoZm9yIGV4YW1wbGUsIFJFQURNRS5yc3QgYW5kIFJFQURNRS1DT1BZSU5HLnJzdCkuIFRoZSBvbmUgd2l0aCB0aGUgc2hvcnRlc3QKLSAgICAgICAgIyBuYW1lIGlzIGNvbnNpZGVyZWQgdGhlICJtYWluIiBvbmUuCi0gICAgICAgIHJlYWRtZV9maWxlID0gc29ydGVkKHJlYWRtZV9maWxlcylbMF0KLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHdpdGggb3BlbihyZWFkbWVfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkYXRhLAotICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgY29udGFpbnMgYSBSRUFETUUgZmlsZSBidXQgaXQgaXMgZW1wdHkuIikKLQotICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgotICAgICAgICBjaGVja19jb21tYW5kKCdMYXllciAlcyBmYWlsZWQgdG8gcGFyc2UuJyAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAnYml0YmFrZSAtcCcpCi0KLSAgICBkZWYgdGVzdF9zaG93X2Vudmlyb25tZW50KHNlbGYpOgotICAgICAgICBjaGVja19jb21tYW5kKCdMYXllciAlcyBmYWlsZWQgdG8gc2hvdyBlbnZpcm9ubWVudC4nICUgc2VsZi50Yy5sYXllclsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIC1lJykKLQotICAgIGRlZiB0ZXN0X3dvcmxkKHNlbGYpOgotICAgICAgICAnJycKLSAgICAgICAgImJpdGJha2Ugd29ybGQiIGlzIGV4cGVjdGVkIHRvIHdvcmsuIHRlc3Rfc2lnbmF0dXJlcyBkb2VzIG5vdCBjb3ZlciB0aGF0Ci0gICAgICAgIGJlY2F1c2UgaXQgaXMgbW9yZSBsZW5pZW50IGFuZCBpZ25vcmVzIHJlY2lwZXMgaW4gYSB3b3JsZCBidWlsZCB0aGF0Ci0gICAgICAgIGFyZSBub3QgYWN0dWFsbHkgYnVpbGRhYmxlLCBzbyBoZXJlIHdlIGZhaWwgd2hlbiAiYml0YmFrZSAtUyBub25lIHdvcmxkIgotICAgICAgICBmYWlscy4KLSAgICAgICAgJycnCi0gICAgICAgIGdldF9zaWduYXR1cmVzKHNlbGYudGRbJ2J1aWxkZGlyJ10sIGZhaWxzYWZlPUZhbHNlKQotCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi50Yy5sYXllclsndHlwZSddID09IExheWVyVHlwZS5TT0ZUV0FSRSBhbmQgXAotICAgICAgICAgICBub3Qgc2VsZi50Yy50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXM6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm90IHRlc3RpbmcgZm9yIHNpZ25hdHVyZSBjaGFuZ2VzIGluIGEgc29mdHdhcmUgbGF5ZXIgJXMuIiBcCi0gICAgICAgICAgICAgICAgICAgICAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSkKLQotICAgICAgICBjdXJyX3NpZ3MsIF8gPSBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1UcnVlKQotICAgICAgICBtc2cgPSBjb21wYXJlX3NpZ25hdHVyZXMoc2VsZi50ZFsnc2lncyddLCBjdXJyX3NpZ3MpCi0gICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnQWRkaW5nIGxheWVyICVzIGNoYW5nZWQgc2lnbmF0dXJlcy5cbiVzJyAlIChzZWxmLnRjLmxheWVyWyduYW1lJ10sIG1zZykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvZGlzdHJvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2VzL2Rpc3Ryby5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzYWNjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvZGlzdHJvLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGNvbXBhdGxheWVyIGltcG9ydCBMYXllclR5cGUKLWZyb20gY29tcGF0bGF5ZXIuY2FzZSBpbXBvcnQgT0VDb21wYXRMYXllclRlc3RDYXNlCi0KLWNsYXNzIERpc3Ryb0NvbXBhdExheWVyKE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudGMubGF5ZXJbJ3R5cGUnXSAhPSBMYXllclR5cGUuRElTVFJPOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkRpc3Ryb0NvbXBhdExheWVyOiBMYXllciAlcyBpc24ndCBEaXN0cm8gb25lLiIgJVwKLSAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCi0KLSAgICBkZWYgdGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50Yy5sYXllclsnY29uZiddWydkaXN0cm9zJ10sIAotICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQotCi0gICAgZGVmIHRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zKHNlbGYpOgotICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKLQotICAgICAgICBkaXN0cm8gPSBnZXRfYmJfdmFyKCdESVNUUk8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGRbJ2JidmFycyddWydESVNUUk8nXSwgZGlzdHJvLAotICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgZGlzdHJvICVzIC0+ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgc2VsZi50ZFsnYmJ2YXJzJ11bJ0RJU1RSTyddLCBkaXN0cm8pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY29udGV4dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgxMWQ0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY29udGV4dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBnbG9iCi1pbXBvcnQgcmUKLQotZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dAotCi1jbGFzcyBDb21wYXRMYXllclRlc3RDb250ZXh0KE9FVGVzdENvbnRleHQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZD1Ob25lLCBsb2dnZXI9Tm9uZSwgbGF5ZXI9Tm9uZSwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzPVRydWUpOgotICAgICAgICBzdXBlcihDb21wYXRMYXllclRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyh0ZCwgbG9nZ2VyKQotICAgICAgICBzZWxmLmxheWVyID0gbGF5ZXIKLSAgICAgICAgc2VsZi50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMgPSB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKaW5kZXggZDY0NmIwYy4uOTRlM2Q3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKQEAgLTExNSw4ICsxMTUsOCBAQAogICAgICAgICBpbXBvcnQgYmIudGluZm9pbAogICAgICAgICB0aW5mb2lsID0gYmIudGluZm9pbC5UaW5mb2lsKHRyYWNraW5nPXRyYWNraW5nKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHkpCiAgICAgICAgICAgICB0aW5mb2lsLmxvZ2dlci5zZXRMZXZlbChsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seSkKICAgICAgICAgZXhjZXB0IGJiLnRpbmZvaWwuVGluZm9pbFVJRXhjZXB0aW9uOgogICAgICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBiaXRiYWtlIGVudmlyb25tZW50JykKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgc291cmNlIHRyZWUgYXMgYnVpbGQgZGlyZWN0b3J5IHNpbmNlIC0tc2FtZS1kaXIgc3BlY2lmaWVkJykKICAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2F1dG90b29scy1icm9rZW5zZXAnLCBkKToKICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIHNvdXJjZSB0cmVlIGFzIGJ1aWxkIGRpcmVjdG9yeSBzaW5jZSByZWNpcGUgaW5oZXJpdHMgYXV0b3Rvb2xzLWJyb2tlbnNlcCcpCi0gICAgZWxpZiBkLmdldFZhcignQicpID09IG9zLnBhdGguYWJzcGF0aChkLmdldFZhcignUycpKToKKyAgICBlbGlmIG9zLnBhdGguYWJzcGF0aChkLmdldFZhcignQicpKSA9PSBvcy5wYXRoLmFic3BhdGgoZC5nZXRWYXIoJ1MnKSk6CiAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBzb3VyY2UgdHJlZSBhcyBidWlsZCBkaXJlY3Rvcnkgc2luY2UgdGhhdCB3b3VsZCBiZSB0aGUgZGVmYXVsdCBmb3IgdGhpcyByZWNpcGUnKQogICAgIGVsc2U6CiAgICAgICAgIGJfaXNfcyA9IEZhbHNlCkBAIC0yNjEsMzQgKzI2MSw3OSBAQAogICAgICAgICAgICAgICAgIHRhcmdldHMuYXBwZW5kKCclcy0lcycgJSAocG4sIHZhcmlhbnQpKQogICAgIHJldHVybiB0YXJnZXRzCiAKLWRlZiBlbnN1cmVfbnBtKGNvbmZpZywgYmFzZXBhdGgsIGZpeGVkX3NldHVwPUZhbHNlLCBjaGVja19leGlzdHM9VHJ1ZSk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIHRoYXQgbnBtIGlzIGF2YWlsYWJsZSBhbmQgZWl0aGVyIGJ1aWxkIGl0IG9yIHNob3cgYQotICAgIHJlYXNvbmFibGUgZXJyb3IgbWVzc2FnZQotICAgICIiIgotICAgIGlmIGNoZWNrX2V4aXN0czoKLSAgICAgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoY29uZmlnX29ubHk9RmFsc2UsIGJhc2VwYXRoPWJhc2VwYXRoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKCdub2RlanMtbmF0aXZlJykKLSAgICAgICAgICAgIG5hdGl2ZXBhdGggPSByZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKLSAgICAgICAgbnBtcGF0aCA9IG9zLnBhdGguam9pbihuYXRpdmVwYXRoLCAnbnBtJykKLSAgICAgICAgYnVpbGRfbnBtID0gbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpCi0gICAgZWxzZToKLSAgICAgICAgYnVpbGRfbnBtID0gVHJ1ZQorZGVmIHJlcGxhY2VfZnJvbV9maWxlKHBhdGgsIG9sZCwgbmV3KToKKyAgICAiIiJSZXBsYWNlIHN0cmluZ3Mgb24gYSBmaWxlIiIiCiAKLSAgICBpZiBidWlsZF9ucG06Ci0gICAgICAgIGxvZ2dlci5pbmZvKCdCdWlsZGluZyBub2RlanMtbmF0aXZlJykKKyAgICBkZWYgcmVhZF9maWxlKHBhdGgpOgorICAgICAgICBkYXRhID0gTm9uZQorICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHdyaXRlX2ZpbGUocGF0aCwgZGF0YSk6CisgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3ZGF0YSA9IGRhdGEucnN0cmlwKCkgKyAiXG4iCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHdkYXRhKQorCisgICAgIyBJbiBjYXNlIG9sZCBpcyBOb25lLCByZXR1cm4gaW1tZWRpYXRlbHkKKyAgICBpZiBvbGQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgdHJ5OgorICAgICAgICByZGF0YSA9IHJlYWRfZmlsZShwYXRoKQorICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICMgaWYgZmlsZSBkb2VzIG5vdCBleGl0LCBqdXN0IHF1aXQsIG90aGVyd2lzZSByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBvbGRfY29udGVudHMgPSByZGF0YS5zcGxpdGxpbmVzKCkKKyAgICBuZXdfY29udGVudHMgPSBbXQorICAgIGZvciBvbGRfY29udGVudCBpbiBvbGRfY29udGVudHM6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIC1xIG5vZGVqcy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QnLCB3YXRjaD1UcnVlKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgIk5vdGhpbmcgUFJPVklERVMgJ25vZGVqcy1uYXRpdmUnIiBpbiBlLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBpZiBmaXhlZF9zZXR1cDoKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBTREsnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSAtIHlvdSB3aWxsIGxpa2VseSBuZWVkIHRvIGFkZCBhIGxheWVyIHRoYXQgcHJvdmlkZXMgbm9kZWpzJwotICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcihtc2cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBuZXdfY29udGVudHMuYXBwZW5kKG9sZF9jb250ZW50LnJlcGxhY2Uob2xkLCBuZXcpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICB3cml0ZV9maWxlKHBhdGgsICJcbiIuam9pbihuZXdfY29udGVudHMpKQorCisKK2RlZiB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBleHRyYT1Ob25lKToKKyAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIG1ha2UgdW5sb2NrZWQtc2lncy5pbmMgbWF0Y2ggdGhlIHJlY2lwZXMgaW4gdGhlCisgICAgd29ya3NwYWNlIHBsdXMgYW55IGV4dHJhcyB3ZSB3YW50IHVubG9ja2VkLiAiIiIKKworICAgIGlmIG5vdCBmaXhlZF9zZXR1cDoKKyAgICAgICAgIyBPbmx5IG5lZWQgdG8gd3JpdGUgdGhpcyBvdXQgd2l0aGluIHRoZSBlU0RLCisgICAgICAgIHJldHVybgorCisgICAgaWYgbm90IGV4dHJhOgorICAgICAgICBleHRyYSA9IFtdCisKKyAgICBjb25mZGlyID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAnY29uZicpCisgICAgdW5sb2NrZWRzaWdzID0gb3MucGF0aC5qb2luKGNvbmZkaXIsICd1bmxvY2tlZC1zaWdzLmluYycpCisKKyAgICAjIEdldCBjdXJyZW50IHVubG9ja2VkIGxpc3QgaWYgYW55CisgICAgdmFsdWVzID0ge30KKyAgICBkZWYgZ2V0X3VubG9ja2Vkc2lnc192YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKKyAgICAgICAgdmFsdWVzW3Zhcm5hbWVdID0gb3JpZ3ZhbHVlCisgICAgICAgIHJldHVybiBvcmlndmFsdWUsIE5vbmUsIDAsIFRydWUKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyh1bmxvY2tlZHNpZ3MpOgorICAgICAgICB3aXRoIG9wZW4odW5sb2NrZWRzaWdzLCAncicpIGFzIGY6CisgICAgICAgICAgICBiYi51dGlscy5lZGl0X21ldGFkYXRhKGYsIFsnU0lHR0VOX1VOTE9DS0VEX1JFQ0lQRVMnXSwgZ2V0X3VubG9ja2Vkc2lnc192YXJmdW5jKQorICAgIHVubG9ja2VkID0gc29ydGVkKHZhbHVlcy5nZXQoJ1NJR0dFTl9VTkxPQ0tFRF9SRUNJUEVTJywgW10pKQorCisgICAgIyBJZiB0aGUgbmV3IGxpc3QgaXMgZGlmZmVyZW50IHRvIHRoZSBjdXJyZW50IGxpc3QsIHdyaXRlIGl0IG91dAorICAgIG5ld3VubG9ja2VkID0gc29ydGVkKGxpc3Qod29ya3NwYWNlLmtleXMoKSkgKyBleHRyYSkKKyAgICBpZiB1bmxvY2tlZCAhPSBuZXd1bmxvY2tlZDoKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmZkaXIpCisgICAgICAgIHdpdGggb3Blbih1bmxvY2tlZHNpZ3MsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMgRE8gTk9UIE1PRElGWSEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVC5cbiIgKworICAgICAgICAgICAgICAgICAgICAiIyBUaGlzIGxheWVyIHdhcyBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgZGV2dG9vbCIgKworICAgICAgICAgICAgICAgICAgICAiIHV0aWxpdHkgaW4gb3JkZXIgdG9cbiIgKworICAgICAgICAgICAgICAgICAgICAiIyBjb250YWluIHJlY2lwZXMgdGhhdCBhcmUgdW5sb2NrZWQuXG4iKQorCisgICAgICAgICAgICBmLndyaXRlKCdTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyArPSAiXFxcbicpCisgICAgICAgICAgICBmb3IgcG4gaW4gbmV3dW5sb2NrZWQ6CisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICcgKyBwbikKKyAgICAgICAgICAgIGYud3JpdGUoJyInKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5CmluZGV4IGIzNzMwYWUuLjljYzQ5MjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2RlcGxveS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9kZXBsb3kucHkKQEAgLTE2LDEyICsxNiwxNiBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogIiIiRGV2dG9vbCBwbHVnaW4gY29udGFpbmluZyB0aGUgZGVwbG95IHN1YmNvbW1hbmRzIiIiCiAKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQorCitpbXBvcnQgYmIudXRpbHMKIGltcG9ydCBhcmdwYXJzZV9vZQoraW1wb3J0IG9lLnR5cGVzCisKIGZyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19mYWtlcm9vdCwgc2V0dXBfdGluZm9pbCwgY2hlY2tfd29ya3NwYWNlX3JlY2lwZSwgRGV2dG9vbEVycm9yCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKQEAgLTY0LDcgKzY4LDcgQEAKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICAgICAgcm1kaXIgJGZpbGUgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBmaScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBlbHNlJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBybSAkZmlsZScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgcm0gLWYgJGZpbGUnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgZmknKQogICAgIGxpbmVzLmFwcGVuZCgnICAgIGRvbmUnKQogICAgIGlmIG5vdCBkcnlydW46CkBAIC0xMTksNyArMTIzLDExIEBACiAgICAgICAgICMgUHV0IGFueSBwcmVzZXJ2ZWQgZmlsZXMgYmFjawogICAgICAgICBsaW5lcy5hcHBlbmQoJ2lmIFsgLWQgJHByZXNlcnZlZGlyIF0gOyB0aGVuJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgY2QgJHByZXNlcnZlZGlyJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZmluZCAuIC10eXBlIGYgLWV4ZWMgbXYge30gL3t9IFw7JykKKyAgICAgICAgIyBmaW5kIGZyb20gYnVzeWJveCBtaWdodCBub3QgaGF2ZSAtZXhlYywgc28gd2UgZG9uJ3QgdXNlIHRoYXQKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZmluZCAuIC10eXBlIGYgfCB3aGlsZSByZWFkIGZpbGUnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBkbycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBtdiAkZmlsZSAvJGZpbGUnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBkb25lJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgY2QgLycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJtIC1yZiAkcHJlc2VydmVkaXInKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ2ZpJykKQEAgLTEzNiwxMSArMTQ0LDEyIEBACiAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKIAogCisKIGRlZiBkZXBsb3koYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2RlcGxveScgc3ViY29tbWFuZCIiIgotICAgIGltcG9ydCByZQogICAgIGltcG9ydCBtYXRoCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhY2thZ2UKIAogICAgIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUod29ya3NwYWNlLCBhcmdzLnJlY2lwZW5hbWUsIGNoZWNrc3JjPUZhbHNlKQogCkBAIC0xNjYsNiArMTc1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZT8gSWYgc28sIHRoZSBpbnN0YWxsIHN0ZXAgaGFzIG5vdCBpbnN0YWxsZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbnkgZmlsZXMuJyAlIGFyZ3MucmVjaXBlbmFtZSkKIAorICAgICAgICBpZiBhcmdzLnN0cmlwIGFuZCBub3QgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgIyBGYWtlcm9vdCBjb3B5IHRvIG5ldyBkZXN0aW5hdGlvbgorICAgICAgICAgICAgc3JjZGlyID0gcmVjaXBlX291dGRpcgorICAgICAgICAgICAgcmVjaXBlX291dGRpciA9IG9zLnBhdGguam9pbihyZC5nZXRWYXIoJ1dPUktESVInKSwgJ2RlcGxveS10YXJnZXQtc3RyaXBwZWQnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihyZWNpcGVfb3V0ZGlyKToKKyAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVjaXBlX291dGRpciwgVHJ1ZSkKKyAgICAgICAgICAgIGV4ZWNfZmFrZXJvb3QocmQsICJjcCAtYWYgJXMgJXMiICUgKG9zLnBhdGguam9pbihzcmNkaXIsICcuJyksIHJlY2lwZV9vdXRkaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gJzonLmpvaW4oW29zLmVudmlyb25bJ1BBVEgnXSwgcmQuZ2V0VmFyKCdQQVRIJykgb3IgJyddKQorICAgICAgICAgICAgb2UucGFja2FnZS5zdHJpcF9leGVjcyhhcmdzLnJlY2lwZW5hbWUsIHJlY2lwZV9vdXRkaXIsIHJkLmdldFZhcignU1RSSVAnKSwgcmQuZ2V0VmFyKCdsaWJkaXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLmdldFZhcignYmFzZV9saWJkaXInKSkKKwogICAgICAgICBmaWxlbGlzdCA9IFtdCiAgICAgICAgIGZ0b3RhbHNpemUgPSAwCiAgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHJlY2lwZV9vdXRkaXIpOgpAQCAtMTg1LDcgKzIwNSw2IEBACiAgICAgICAgICAgICAgICAgcHJpbnQoJyAgJXMnICUgaXRlbSkKICAgICAgICAgICAgIHJldHVybiAwCiAKLQogICAgICAgICBleHRyYW9wdGlvbnMgPSAnJwogICAgICAgICBpZiBhcmdzLm5vX2hvc3RfY2hlY2s6CiAgICAgICAgICAgICBleHRyYW9wdGlvbnMgKz0gJy1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJwpAQCAtMjk3LDYgKzMxNiw3IEBACiAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzLCBjb250ZXh0KToKICAgICAiIiJSZWdpc3RlciBkZXZ0b29sIHN1YmNvbW1hbmRzIGZyb20gdGhlIGRlcGxveSBwbHVnaW4iIiIKKwogICAgIHBhcnNlcl9kZXBsb3kgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2RlcGxveS10YXJnZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRGVwbG95IHJlY2lwZSBvdXRwdXQgZmlsZXMgdG8gbGl2ZSB0YXJnZXQgbWFjaGluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nRGVwbG95cyBhIHJlY2lwZVwncyBidWlsZCBvdXRwdXQgKGkuZS4gdGhlIG91dHB1dCBvZiB0aGUgZG9faW5zdGFsbCB0YXNrKSB0byBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUgb3ZlciBzc2guIEJ5IGRlZmF1bHQsIGFueSBleGlzdGluZyBmaWxlcyB3aWxsIGJlIHByZXNlcnZlZCBpbnN0ZWFkIG9mIGJlaW5nIG92ZXJ3cml0dGVuIGFuZCB3aWxsIGJlIHJlc3RvcmVkIGlmIHlvdSBydW4gZGV2dG9vbCB1bmRlcGxveS10YXJnZXQuIE5vdGU6IHRoaXMgb25seSBkZXBsb3lzIHRoZSByZWNpcGUgaXRzZWxmIGFuZCBub3QgYW55IHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBzbyBpdCBpcyBhc3N1bWVkIHRoYXQgdGhvc2UgaGF2ZSBiZWVuIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0IGJlZm9yZWhhbmQuJywKQEAgLTMwOSw2ICszMjksMTUgQEAKICAgICBwYXJzZXJfZGVwbG95LmFkZF9hcmd1bWVudCgnLXAnLCAnLS1uby1wcmVzZXJ2ZScsIGhlbHA9J0RvIG5vdCBwcmVzZXJ2ZSBleGlzdGluZyBmaWxlcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy0tbm8tY2hlY2stc3BhY2UnLCBoZWxwPSdEbyBub3QgY2hlY2sgZm9yIGF2YWlsYWJsZSBzcGFjZSBiZWZvcmUgZGVwbG95aW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfZGVwbG95LmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wb3J0JywgZGVmYXVsdD0nMjInLCBoZWxwPSdQb3J0IHRvIHVzZSBmb3IgY29ubmVjdGlvbiB0byB0aGUgdGFyZ2V0JykKKworICAgIHN0cmlwX29wdHMgPSBwYXJzZXJfZGVwbG95LmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9RmFsc2UpCisgICAgc3RyaXBfb3B0cy5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RyaXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1N0cmlwIGV4ZWN1dGFibGVzIHByaW9yIHRvIGRlcGxveWluZyAoZGVmYXVsdDogJShkZWZhdWx0KXMpLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBvcHRpb24gY2FuIGJlIGNvbnRyb2xsZWQgYnkgc2V0dGluZyB0aGUgc3RyaXAgb3B0aW9uIGluIHRoZSBbRGVwbG95XSBzZWN0aW9uIHRvIFRydWUgb3IgRmFsc2UuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PW9lLnR5cGVzLmJvb2xlYW4oY29udGV4dC5jb25maWcuZ2V0KCdEZXBsb3knLCAnc3RyaXAnLCBkZWZhdWx0PScwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgc3RyaXBfb3B0cy5hZGRfYXJndW1lbnQoJy0tbm8tc3RyaXAnLCBoZWxwPSdEbyBub3Qgc3RyaXAgZXhlY3V0YWJsZXMgcHJpb3IgdG8gZGVwbG95JywgZGVzdD0nc3RyaXAnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKKwogICAgIHBhcnNlcl9kZXBsb3kuc2V0X2RlZmF1bHRzKGZ1bmM9ZGVwbG95KQogCiAgICAgcGFyc2VyX3VuZGVwbG95ID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCd1bmRlcGxveS10YXJnZXQnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZWUyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9leHBvcnQucHkKQEAgLTAsMCArMSwxMTkgQEAKKyMgRGV2ZWxvcG1lbnQgdG9vbCAtIGV4cG9ydCBjb21tYW5kIHBsdWdpbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyIiIkRldnRvb2wgZXhwb3J0IHBsdWdpbiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHRhcmZpbGUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKKworIyBvdXRwdXQgZmlsZXMKK2RlZmF1bHRfYXJjbmFtZV9wcmVmaXggPSAid29ya3NwYWNlLWV4cG9ydCIKK21ldGFkYXRhID0gJy5leHBvcnRfbWV0YWRhdGEnCisKK2RlZiBleHBvcnQoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKKyAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2V4cG9ydCcgc3ViY29tbWFuZCIiIgorCisgICAgZGVmIGFkZF9tZXRhZGF0YSh0YXIpOgorICAgICAgICAiIiJBcmNoaXZlIHRoZSB3b3Jrc3BhY2Ugb2JqZWN0IiIiCisgICAgICAgICMgZmluYWxseSBzdG9yZSB0aGUgd29ya3NwYWNlIG1ldGFkYXRhCisgICAgICAgIHdpdGggb3BlbihtZXRhZGF0YSwgJ3cnKSBhcyBmZDoKKyAgICAgICAgICAgIGZkLndyaXRlKGpzb24uZHVtcHMoKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgd29ya3NwYWNlKSkpCisgICAgICAgIHRhci5hZGQobWV0YWRhdGEpCisgICAgICAgIG9zLnVubGluayhtZXRhZGF0YSkKKworICAgIGRlZiBhZGRfcmVjaXBlKHRhciwgcmVjaXBlLCBkYXRhKToKKyAgICAgICAgIiIiQXJjaGl2ZSByZWNpcGUgd2l0aCBwcm9wZXIgYXJjbmFtZSIiIgorICAgICAgICAjIENyZWF0ZSBhIG1hcCBvZiBuYW1lL2FyY25hbWVzCisgICAgICAgIGFyY25hbWVzID0gW10KKyAgICAgICAgZm9yIGtleSwgbmFtZSBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnc3JjdHJlZSc6CisgICAgICAgICAgICAgICAgICAgICMgYWxsIHNvdXJjZXMsIG5vIG1hdHRlciB3aGVyZSBhcmUgbG9jYXRlZCwgZ29lcyBpbnRvIHRoZSBzb3VyY2VzIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gJ3NvdXJjZXMvJXMnICUgcmVjaXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IG5hbWUucmVwbGFjZShjb25maWcud29ya3NwYWNlX3BhdGgsICcnKQorICAgICAgICAgICAgICAgIGFyY25hbWVzLmFwcGVuZCgobmFtZSwgYXJjbmFtZSkpCisKKyAgICAgICAgZm9yIG5hbWUsIGFyY25hbWUgaW4gYXJjbmFtZXM6CisgICAgICAgICAgICB0YXIuYWRkKG5hbWUsIGFyY25hbWU9YXJjbmFtZSkKKworCisgICAgIyBNYWtlIHN1cmUgd29ya3NwYWNlIGlzIG5vbi1lbXB0eSBhbmQgcG9zc2libGUgbGlzdGVkIGluY2x1ZGUvZXhjbHVkZWQgcmVjaXBlcyBhcmUgaW4gd29ya3NwYWNlCisgICAgaWYgbm90IHdvcmtzcGFjZToKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1dvcmtzcGFjZSBjb250YWlucyBubyByZWNpcGVzLCBub3RoaW5nIHRvIGV4cG9ydCcpCisgICAgICAgIHJldHVybiAwCisgICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtLCByZWNpcGVzIGluIHsnaW5jbHVkZSc6YXJncy5pbmNsdWRlLCdleGNsdWRlJzphcmdzLmV4Y2x1ZGV9Lml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgaWYgcmVjaXBlIG5vdCBpbiB3b3Jrc3BhY2U6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignUmVjaXBlICglcykgb24gJXMgYXJndW1lbnQgbm90IGluIHRoZSBjdXJyZW50IHdvcmtzcGFjZScgJSAocmVjaXBlLCBwYXJhbSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICBuYW1lID0gYXJncy5maWxlCisKKyAgICBkZWZhdWx0X25hbWUgPSAiJXMtJXMudGFyLmd6IiAlIChkZWZhdWx0X2FyY25hbWVfcHJlZml4LCBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCisgICAgaWYgbm90IG5hbWU6CisgICAgICAgIG5hbWUgPSBkZWZhdWx0X25hbWUKKyAgICBlbHNlOgorICAgICAgICAjIGlmIG5hbWUgaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgZGVmYXVsdCBuYW1lCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6CisgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG5hbWUsIGRlZmF1bHRfbmFtZSkKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKG5hbWUpIGFuZCBub3QgYXJncy5vdmVyd3JpdGU6CisgICAgICAgIGxvZ2dlci5lcnJvcignVGFyIGFyY2hpdmUgJXMgZXhpc3RzLiBVc2UgLS1vdmVyd3JpdGUvLW8gdG8gb3ZlcndyaXRlIGl0JykKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgaWYgYWxsIHdvcmtzcGFjZSBpcyBleGNsdWRlZCwgcXVpdAorICAgIGlmIG5vdCBsZW4oc2V0KHdvcmtzcGFjZS5rZXlzKCkpLmRpZmZlcmVuY2Uoc2V0KGFyZ3MuZXhjbHVkZSkpKToKKyAgICAgICAgbG9nZ2VyLndhcm4oJ0FsbCByZWNpcGVzIGluIHdvcmtzcGFjZSBleGNsdWRlZCwgbm90aGluZyB0byBleHBvcnQnKQorICAgICAgICByZXR1cm4gMAorCisgICAgZXhwb3J0ZWQgPSBbXQorICAgIHdpdGggdGFyZmlsZS5vcGVuKG5hbWUsICd3Omd6JykgYXMgdGFyOgorICAgICAgICBpZiBhcmdzLmluY2x1ZGU6CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIGFyZ3MuaW5jbHVkZToKKyAgICAgICAgICAgICAgICBhZGRfcmVjaXBlKHRhciwgcmVjaXBlLCB3b3Jrc3BhY2VbcmVjaXBlXSkKKyAgICAgICAgICAgICAgICBleHBvcnRlZC5hcHBlbmQocmVjaXBlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHJlY2lwZSwgZGF0YSBpbiB3b3Jrc3BhY2UuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiByZWNpcGUgbm90IGluIGFyZ3MuZXhjbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYWRkX3JlY2lwZSh0YXIsIHJlY2lwZSwgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWQuYXBwZW5kKHJlY2lwZSkKKworICAgICAgICBhZGRfbWV0YWRhdGEodGFyKQorCisgICAgbG9nZ2VyLmluZm8oJ1RhciBhcmNoaXZlIGNyZWF0ZWQgYXQgJXMgd2l0aCB0aGUgZm9sbG93aW5nIHJlY2lwZXM6ICVzJyAlIChuYW1lLCAnLCAnLmpvaW4oZXhwb3J0ZWQpKSkKKyAgICByZXR1cm4gMAorCitkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CisgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBleHBvcnQgc3ViY29tbWFuZHMiIiIKKyAgICBwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2V4cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0V4cG9ydCB3b3Jrc3BhY2UgaW50byBhIHRhciBhcmNoaXZlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0V4cG9ydCBvbmUgb3IgbW9yZSByZWNpcGVzIGZyb20gY3VycmVudCB3b3Jrc3BhY2UgaW50byBhIHRhciBhcmNoaXZlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9J2FkdmFuY2VkJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZmlsZScsICctZicsIGhlbHA9J091dHB1dCBhcmNoaXZlIGZpbGUgbmFtZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdmVyd3JpdGUnLCAnLW8nLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdPdmVyd3JpdGUgcHJldmlvdXMgZXhwb3J0IHRhciBhcmNoaXZlJykKKyAgICBncm91cCA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taW5jbHVkZScsICctaScsIG5hcmdzPScrJywgZGVmYXVsdD1bXSwgaGVscD0nSW5jbHVkZSByZWNpcGVzIGludG8gdGhlIHRhciBhcmNoaXZlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tZXhjbHVkZScsICctZScsIG5hcmdzPScrJywgZGVmYXVsdD1bXSwgaGVscD0nRXhjbHVkZSByZWNpcGVzIGludG8gdGhlIHRhciBhcmNoaXZlJykKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZXhwb3J0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxM2ExODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9pbXBvcnQucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgRGV2ZWxvcG1lbnQgdG9vbCAtIGltcG9ydCBjb21tYW5kIHBsdWdpbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyIiIkRldnRvb2wgaW1wb3J0IHBsdWdpbiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCB0YXJmaWxlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQganNvbgoraW1wb3J0IGZubWF0Y2gKKworZnJvbSBkZXZ0b29sIGltcG9ydCBzdGFuZGFyZCwgc2V0dXBfdGluZm9pbCwgcmVwbGFjZV9mcm9tX2ZpbGUsIERldnRvb2xFcnJvcgorZnJvbSBkZXZ0b29sIGltcG9ydCBleHBvcnQKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2RldnRvb2wnKQorCitkZWYgZGV2aW1wb3J0KGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CisgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdpbXBvcnQnIHN1YmNvbW1hbmQiIiIKKworICAgIGRlZiBnZXRfcG4obmFtZSk6CisgICAgICAgICIiIiBSZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiBhIHdvcmtzcGFjZSByZWNpcGUvYXBwZW5kIiIiCisgICAgICAgIG1ldGFkYXRhID0gbmFtZS5zcGxpdCgnLycpWy0xXQorICAgICAgICBmbiwgXyA9IG9zLnBhdGguc3BsaXRleHQobWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmbgorCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFyZ3MuZmlsZSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVGFyIGFyY2hpdmUgJXMgZG9lcyBub3QgZXhpc3QuIEV4cG9ydCB5b3VyIHdvcmtzcGFjZSB1c2luZyAiZGV2dG9vbCBleHBvcnQiJyAlIGFyZ3MuZmlsZSkKKworICAgIHdpdGggdGFyZmlsZS5vcGVuKGFyZ3MuZmlsZSkgYXMgdGFyOgorICAgICAgICAjIEdldCBleHBvcnRlZCBtZXRhZGF0YQorICAgICAgICBleHBvcnRfd29ya3NwYWNlX3BhdGggPSBleHBvcnRfd29ya3NwYWNlID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtZXRhZGF0YSA9IHRhci5nZXRtZW1iZXIoZXhwb3J0Lm1ldGFkYXRhKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1RoZSBleHBvcnQgbWV0YWRhdGEgZmlsZSBjcmVhdGVkIGJ5ICJkZXZ0b29sIGV4cG9ydCIgd2FzIG5vdCBmb3VuZC4gImRldnRvb2wgaW1wb3J0IiBjYW4gb25seSBiZSB1c2VkIHRvIGltcG9ydCB0YXIgYXJjaGl2ZXMgY3JlYXRlZCBieSAiZGV2dG9vbCBleHBvcnQiLicpCisKKyAgICAgICAgdGFyLmV4dHJhY3QobWV0YWRhdGEpCisgICAgICAgIHdpdGggb3BlbihtZXRhZGF0YS5uYW1lKSBhcyBmZG06CisgICAgICAgICAgICBleHBvcnRfd29ya3NwYWNlX3BhdGgsIGV4cG9ydF93b3Jrc3BhY2UgPSBqc29uLmxvYWQoZmRtKQorICAgICAgICBvcy51bmxpbmsobWV0YWRhdGEubmFtZSkKKworICAgICAgICBtZW1iZXJzID0gdGFyLmdldG1lbWJlcnMoKQorCisgICAgICAgICMgR2V0IGFwcGVuZHMgYW5kIHJlY2lwZXMgZnJvbSB0aGUgZXhwb3J0ZWQgYXJjaGl2ZSwgdGhlc2UKKyAgICAgICAgIyB3aWxsIGJlIG5lZWRlZCB0byBmaW5kIG91dCB0aG9zZSBhcHBlbmRzIHdpdGhvdXQgY29ycmVzcG9uZGluZworICAgICAgICAjIHJlY2lwZSBwYWlyCisgICAgICAgIGFwcGVuZF9mbnMsIHJlY2lwZV9mbnMgPSBzZXQoKSwgc2V0KCkKKyAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgorICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnYXBwZW5kcycpOgorICAgICAgICAgICAgICAgIGFwcGVuZF9mbnMuYWRkKGdldF9wbihtZW1iZXIubmFtZSkpCisgICAgICAgICAgICBlbGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ3JlY2lwZXMnKToKKyAgICAgICAgICAgICAgICByZWNpcGVfZm5zLmFkZChnZXRfcG4obWVtYmVyLm5hbWUpKQorCisgICAgICAgICMgU2V0dXAgdGluZm9pbCwgZ2V0IHJlcXVpcmVkIGRhdGEgYW5kIHNodXRkb3duCisgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGNvbmZpZ19vbmx5PUZhbHNlLCBiYXNlcGF0aD1iYXNlcGF0aCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY3VycmVudF9mbnMgPSBbb3MucGF0aC5iYXNlbmFtZShyZWNpcGVbMF0pIGZvciByZWNpcGUgaW4gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm4uaXRlbXMoKV0KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQorCisgICAgICAgICMgRmluZCB0aG9zZSBhcHBlbmRzIHRoYXQgZG8gbm90IGhhdmUgcmVjaXBlcyBpbiBjdXJyZW50IG1ldGFkYXRhCisgICAgICAgIG5vbl9pbXBvcnRhYmxlcyA9IFtdCisgICAgICAgIGZvciBmbiBpbiBhcHBlbmRfZm5zIC0gcmVjaXBlX2ZuczoKKyAgICAgICAgICAgICMgQ2hlY2sgb24gY3VycmVudCBtZXRhZGF0YSAoY292ZXJpbmcgdGhvc2UgbGF5ZXJzIGluZGljYXRlZCBpbiBiYmxheWVycy5jb25mKQorICAgICAgICAgICAgZm9yIGN1cnJlbnRfZm4gaW4gY3VycmVudF9mbnM6CisgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGN1cnJlbnRfZm4sICcqJyArIGZuLnJlcGxhY2UoJyUnLCAnJykgKyAnKicpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub25faW1wb3J0YWJsZXMuYXBwZW5kKGZuKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyByZWNpcGUgdG8gYXBwZW5kICVzLmJiYXBwcGVuZCwgc2tpcHBpbmcnICUgZm4pCisKKyAgICAgICAgIyBFeHRyYWN0CisgICAgICAgIGltcG9ydGVkID0gW10KKyAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgorICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUgPT0gZXhwb3J0Lm1ldGFkYXRhOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGZvciBub25pbXAgaW4gbm9uX2ltcG9ydGFibGVzOgorICAgICAgICAgICAgICAgIHBuID0gbm9uaW1wLnNwbGl0KCdfJylbMF0KKyAgICAgICAgICAgICAgICAjIGRvIG5vdCBleHRyYWN0IGRhdGEgZnJvbSBub24taW1wb3J0YWJsZSByZWNpcGVzIG9yIG1ldGFkYXRhCisgICAgICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnYXBwZW5kcy8lcycgJSBub25pbXApIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ3JlY2lwZXMvJXMnICUgbm9uaW1wKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIubmFtZS5zdGFydHN3aXRoKCdzb3VyY2VzLyVzJyAlIHBuKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsIG1lbWJlci5uYW1lKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAjIGJ5IGRlZmF1bHQsIG5vIGZpbGUgb3ZlcndyaXRlIGlzIGRvbmUgdW5sZXNzIC1vIGlzIGdpdmVuIGJ5IHRoZSB1c2VyCisgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3Mub3ZlcndyaXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhci5leHRyYWN0KG1lbWJlciwgcGF0aD1jb25maWcud29ya3NwYWNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIHBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKHBlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0ZpbGUgYWxyZWFkeSBwcmVzZW50LiBVc2UgLS1vdmVyd3JpdGUvLW8gdG8gb3ZlcndyaXRlIGl0OiAlcycgJSBtZW1iZXIubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGFyLmV4dHJhY3QobWVtYmVyLCBwYXRoPWNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKKworICAgICAgICAgICAgICAgICMgVXBkYXRlIEVYVEVSTkFMU1JDIGFuZCB0aGUgZGV2dG9vbCBtZDUgZmlsZQorICAgICAgICAgICAgICAgIGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ2FwcGVuZHMnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZXhwb3J0X3dvcmtzcGFjZV9wYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBlbmRzIGNyZWF0ZWQgYnkgJ2RldnRvb2wgbW9kaWZ5JyBqdXN0IG5lZWQgdG8gdXBkYXRlIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VfZnJvbV9maWxlKHBhdGgsIGV4cG9ydF93b3Jrc3BhY2VfcGF0aCwgY29uZmlnLndvcmtzcGFjZV9wYXRoKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZHMgY3JlYXRlZCBieSAnZGV2dG9vbCBhZGQnIG5lZWQgcmVwbGFjZW1lbnQgb2YgZXhwb3J0ZWQgc291cmNlIHRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBuID0gZ2V0X3BuKG1lbWJlci5uYW1lKS5zcGxpdCgnXycpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRlZF9zcmN0cmVlID0gZXhwb3J0X3dvcmtzcGFjZVtwbl1bJ3NyY3RyZWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwb3J0ZWRfc3JjdHJlZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlX2Zyb21fZmlsZShwYXRoLCBleHBvcnRlZF9zcmN0cmVlLCBvcy5wYXRoLmpvaW4oY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnc291cmNlcycsIHBuKSkKKworICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZC5fYWRkX21kNShjb25maWcsIHBuLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZC5hcHBlbmQocG4pCisKKyAgICBpZiBpbXBvcnRlZDoKKyAgICAgICAgbG9nZ2VyLmluZm8oJ0ltcG9ydGVkIHJlY2lwZXMgaW50byB3b3Jrc3BhY2UgJXM6ICVzJyAlIChjb25maWcud29ya3NwYWNlX3BhdGgsICcsICcuam9pbihpbXBvcnRlZCkpKQorICAgIGVsc2U6CisgICAgICAgIGxvZ2dlci53YXJuKCdObyByZWNpcGVzIGltcG9ydGVkIGludG8gdGhlIHdvcmtzcGFjZScpCisKKyAgICByZXR1cm4gMAorCitkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CisgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBpbXBvcnQgc3ViY29tbWFuZHMiIiIKKyAgICBwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2ltcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ltcG9ydCBleHBvcnRlZCB0YXIgYXJjaGl2ZSBpbnRvIHdvcmtzcGFjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdJbXBvcnQgdGFyIGFyY2hpdmUgcHJldmlvdXNseSBjcmVhdGVkIGJ5ICJkZXZ0b29sIGV4cG9ydCIgaW50byB3b3Jrc3BhY2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nYWR2YW5jZWQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2ZpbGUnLCBtZXRhdmFyPSdGSUxFJywgaGVscD0nTmFtZSBvZiB0aGUgdGFyIGFyY2hpdmUgdG8gaW1wb3J0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW92ZXJ3cml0ZScsICctbycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J092ZXJ3cml0ZSBmaWxlcyB3aGVuIGV4dHJhY3RpbmcnKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZnVuYz1kZXZpbXBvcnQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZGsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZGsucHkKaW5kZXggZThiZjBhZC4uZjQ2NTc3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc2RrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3Nkay5weQpAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlcGF0aCwgJ2xheWVycy8uZ2l0JykpOgogICAgICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImdpdCBzdGF0dXMgLS1wb3JjZWxhaW4iLCBzaGVsbD1UcnVlLCBjd2Q9bGF5ZXJzX2RpcikKICAgICAgICAgICAgIGlmIG5vdCBvdXQ6Ci0gICAgICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCJnaXQgZmV0Y2ggLS1hbGw7IGdpdCByZXNldCAtLWhhcmQiLCBzaGVsbD1UcnVlLCBjd2Q9bGF5ZXJzX2RpcikKKyAgICAgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoImdpdCBmZXRjaCAtLWFsbDsgZ2l0IHJlc2V0IC0taGFyZCBAe3V9Iiwgc2hlbGw9VHJ1ZSwgY3dkPWxheWVyc19kaXIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIHVwZGF0ZSBtZXRhZGF0YSBhcyB0aGVyZSBoYXZlIGJlZW4gY2hhbmdlcyBtYWRlIHRvIGl0LiBBYm9ydGluZy4iKTsKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNoYW5nZWQgZmlsZXM6XG4lcyIgJSBvdXQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCA1ZmYxZTIzLi5iZWVhMGQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtMSw2ICsxLDYgQEAKICMgRGV2ZWxvcG1lbnQgdG9vbCAtIHN0YW5kYXJkIGNvbW1hbmRzIHBsdWdpbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtMzAsNyArMzAsNyBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBmaWxlY21wCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBkZXZ0b29sIGltcG9ydCBleGVjX2J1aWxkX2Vudl9jb21tYW5kLCBzZXR1cF90aW5mb2lsLCBjaGVja193b3Jrc3BhY2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHNldHVwX2dpdF9yZXBvLCByZWNpcGVfdG9fYXBwZW5kLCBnZXRfYmJjbGFzc2V4dGVuZF90YXJnZXRzLCBlbnN1cmVfbnBtLCBEZXZ0b29sRXJyb3IKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgY2hlY2tfd29ya3NwYWNlX3JlY2lwZSwgdXNlX2V4dGVybmFsX2J1aWxkLCBzZXR1cF9naXRfcmVwbywgcmVjaXBlX3RvX2FwcGVuZCwgZ2V0X2JiY2xhc3NleHRlbmRfdGFyZ2V0cywgdXBkYXRlX3VubG9ja2Vkc2lncywgRGV2dG9vbEVycm9yCiBmcm9tIGRldnRvb2wgaW1wb3J0IHBhcnNlX3JlY2lwZQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCkBAIC02Niw2ICs2NiwxMiBAQAogICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoYXJncy5yZWNpcGVuYW1lKToKICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdBbWJpZ3VvdXMgYXJndW1lbnQgIiVzIiAtIGFzc3VtaW5nIHlvdSBtZWFuIGl0IHRvIGJlIHRoZSByZWNpcGUgbmFtZScgJSBhcmdzLnJlY2lwZW5hbWUpCiAKKyAgICBpZiBub3QgYXJncy5mZXRjaHVyaToKKyAgICAgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1RoZSAtUy8tLXNyY3JldiBvcHRpb24gaXMgb25seSB2YWxpZCB3aGVuIGZldGNoaW5nIGZyb20gYW4gU0NNIHJlcG9zaXRvcnknKQorICAgICAgICBpZiBhcmdzLnNyY2JyYW5jaDoKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVGhlIC1CLy0tc3JjYnJhbmNoIG9wdGlvbiBpcyBvbmx5IHZhbGlkIHdoZW4gZmV0Y2hpbmcgZnJvbSBhbiBTQ00gcmVwb3NpdG9yeScpCisKICAgICBpZiBhcmdzLnNyY3RyZWUgYW5kIG9zLnBhdGguaXNmaWxlKGFyZ3Muc3JjdHJlZSk6CiAgICAgICAgIGFyZ3MuZmV0Y2h1cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmFic3BhdGgoYXJncy5zcmN0cmVlKQogICAgICAgICBhcmdzLnNyY3RyZWUgPSAnJwpAQCAtMTI4LDkgKzEzNCw2IEBACiAgICAgICAgIGNvbG9yID0gYXJncy5jb2xvcgogICAgIGV4dHJhY21kb3B0cyA9ICcnCiAgICAgaWYgYXJncy5mZXRjaHVyaToKLSAgICAgICAgaWYgYXJncy5mZXRjaHVyaS5zdGFydHN3aXRoKCducG06Ly8nKToKLSAgICAgICAgICAgIGVuc3VyZV9ucG0oY29uZmlnLCBiYXNlcGF0aCwgYXJncy5maXhlZF9zZXR1cCkKLQogICAgICAgICBzb3VyY2UgPSBhcmdzLmZldGNodXJpCiAgICAgICAgIGlmIHNyY3RyZWU6CiAgICAgICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAteCAlcycgJSBzcmN0cmVlCkBAIC0xNTIsMzEgKzE1NSwyNCBAQAogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtYScKICAgICBpZiBhcmdzLmZldGNoX2RldjoKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1mZXRjaC1kZXYnCisgICAgaWYgYXJncy5taXJyb3JzOgorICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW1pcnJvcnMnCisgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tc3JjcmV2ICVzJyAlIGFyZ3Muc3JjcmV2CisgICAgaWYgYXJncy5zcmNicmFuY2g6CisgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tc3JjYnJhbmNoICVzJyAlIGFyZ3Muc3JjYnJhbmNoCisgICAgaWYgYXJncy5wcm92aWRlczoKKyAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1wcm92aWRlcyAlcycgJSBhcmdzLnByb3ZpZGVzCiAKICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2wnKQogICAgIHRyeToKLSAgICAgICAgYnVpbHRucG0gPSBGYWxzZQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsICdyZWNpcGV0b29sIC0tY29sb3I9JXMgY3JlYXRlIC0tZGV2dG9vbCAtbyAlcyBcJyVzXCcgJXMnICUgKGNvbG9yLCB0ZW1wZGlyLCBzb3VyY2UsIGV4dHJhY21kb3B0cyksIHdhdGNoPVRydWUpCi0gICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXhpdGNvZGUgPT0gMTQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJ1aWx0bnBtOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdSZS1ydW5uaW5nIHJlY2lwZXRvb2wgc3RpbGwgZmFpbGVkIHRvIGZpbmQgbnBtJykKLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRSB0aGlzIGlzIGEgaG9ycmlibGUgaGFjayB0aGF0IGlzIHVuZm9ydHVuYXRlbHkKLSAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgY2FuJ3QgcnVuIGJpdGJha2UgZnJvbQotICAgICAgICAgICAgICAgICAgICAjIGluc2lkZSByZWNpcGV0b29sIHNpbmNlIHJlY2lwZXRvb2wga2VlcHMgdGluZm9pbCBhY3RpdmUKLSAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHJlZmVyZW5jZXMgdG8gaXQgdGhyb3VnaG91dCB0aGUgY29kZSwgc28gd2UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAjIHRvIGV4aXQgb3V0IGFuZCBjb21lIGJhY2sgaGVyZSB0byBkbyBpdC4KLSAgICAgICAgICAgICAgICAgICAgZW5zdXJlX25wbShjb25maWcsIGJhc2VwYXRoLCBhcmdzLmZpeGVkX3NldHVwLCBjaGVja19leGlzdHM9RmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSZS1ydW5uaW5nIHJlY2lwZSBjcmVhdGlvbiBwcm9jZXNzIGFmdGVyIGJ1aWxkaW5nIG5vZGVqcycpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWx0bnBtID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgZS5leGl0Y29kZSA9PSAxNToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdDb3VsZCBub3QgYXV0by1kZXRlcm1pbmUgcmVjaXBlIG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUnKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignQ29tbWFuZCBcJyVzXCcgZmFpbGVkJyAlIGUuY29tbWFuZCkKLSAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsICdyZWNpcGV0b29sIC0tY29sb3I9JXMgY3JlYXRlIC0tZGV2dG9vbCAtbyAlcyBcJyVzXCcgJXMnICUgKGNvbG9yLCB0ZW1wZGlyLCBzb3VyY2UsIGV4dHJhY21kb3B0cyksIHdhdGNoPVRydWUpCisgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmV4aXRjb2RlID09IDE1OgorICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignQ291bGQgbm90IGF1dG8tZGV0ZXJtaW5lIHJlY2lwZSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBpdCBvbiB0aGUgY29tbWFuZCBsaW5lJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdDb21tYW5kIFwnJXNcJyBmYWlsZWQnICUgZS5jb21tYW5kKQogCiAgICAgICAgIHJlY2lwZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHRlbXBkaXIsICcqLmJiJykpCiAgICAgICAgIGlmIHJlY2lwZXM6CkBAIC0yODIsNiArMjc4LDI0IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGRvbmVcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnfVxuJykKIAorICAgICAgICAjIENoZWNrIGlmIHRoZSBuZXcgbGF5ZXIgcHJvdmlkZXMgcmVjaXBlcyB3aG9zZSBwcmlvcml0aWVzIGhhdmUgYmVlbgorICAgICAgICAjIG92ZXJyaWRlbiBieSBQUkVGRVJSRURfUFJPVklERVIuCisgICAgICAgIHJlY2lwZV9uYW1lID0gcmQuZ2V0VmFyKCdQTicpCisgICAgICAgIHByb3ZpZGVzID0gcmQuZ2V0VmFyKCdQUk9WSURFUycpCisgICAgICAgICMgU2VhcmNoIGV2ZXJ5IGl0ZW0gZGVmaW5lZCBpbiBQUk9WSURFUworICAgICAgICBmb3IgcmVjaXBlX3Byb3ZpZGVkIGluIHByb3ZpZGVzLnNwbGl0KCk6CisgICAgICAgICAgICBwcmVmZXJyZWRfcHJvdmlkZXIgPSAnUFJFRkVSUkVEX1BST1ZJREVSXycgKyByZWNpcGVfcHJvdmlkZWQKKyAgICAgICAgICAgIGN1cnJlbnRfcHByb3ZpZGVyID0gcmQuZ2V0VmFyKHByZWZlcnJlZF9wcm92aWRlcikKKyAgICAgICAgICAgIGlmIGN1cnJlbnRfcHByb3ZpZGVyIGFuZCBjdXJyZW50X3Bwcm92aWRlciAhPSByZWNpcGVfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBhcmdzLmZpeGVkX3NldHVwOgorICAgICAgICAgICAgICAgICAgICAjaWYgd2UgYXJlIGluc2lkZSB0aGUgZVNESyBhZGQgdGhlIG5ldyBQUkVGRVJSRURfUFJPVklERVIgaW4gdGhlIHdvcmtzcGFjZSBsYXllci5jb25mCisgICAgICAgICAgICAgICAgICAgIGxheWVyY29uZl9maWxlID0gb3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgImNvbmYiLCAibGF5ZXIuY29uZiIpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllcmNvbmZfZmlsZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXMgPSAiJXMiXG4nICUgKHByZWZlcnJlZF9wcm92aWRlciwgcmVjaXBlX25hbWUpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdTZXQgXCclc1wnIGluIG9yZGVyIHRvIHVzZSB0aGUgcmVjaXBlJyAlIHByZWZlcnJlZF9wcm92aWRlcikKKyAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIF9hZGRfbWQ1KGNvbmZpZywgcmVjaXBlbmFtZSwgYXBwZW5kZmlsZSkKIAogICAgICAgICBsb2dnZXIuaW5mbygnUmVjaXBlICVzIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgY3JlYXRlZDsgZnVydGhlciBlZGl0aW5nIG1heSBiZSByZXF1aXJlZCB0byBtYWtlIGl0IGZ1bGx5IGZ1bmN0aW9uYWwnICUgcmVjaXBlZmlsZSkKQEAgLTM4Myw3ICszOTcsNyBAQAogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnZXh0cmFjdCcgc3ViY29tbWFuZCIiIgogICAgIGltcG9ydCBiYgogCi0gICAgdGluZm9pbCA9IF9wcmVwX2V4dHJhY3Rfb3BlcmF0aW9uKGNvbmZpZywgYmFzZXBhdGgsIGFyZ3MucmVjaXBlbmFtZSkKKyAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCkKICAgICBpZiBub3QgdGluZm9pbDoKICAgICAgICAgIyBFcnJvciBhbHJlYWR5IHNob3duCiAgICAgICAgIHJldHVybiAxCkBAIC0zOTMsNyArNDA3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAxCiAKICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguYWJzcGF0aChhcmdzLnNyY3RyZWUpCi0gICAgICAgIGluaXRpYWxfcmV2ID0gX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIGFyZ3Mua2VlcF90ZW1wLCBhcmdzLmJyYW5jaCwgRmFsc2UsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00MDcsNyArNDIxLDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3N5bmMnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCBhcmdzLnJlY2lwZW5hbWUpCisgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoYmFzZXBhdGg9YmFzZXBhdGgpCiAgICAgaWYgbm90IHRpbmZvaWw6CiAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgogICAgICAgICByZXR1cm4gMQpAQCAtNDE3LDcgKzQzMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmFic3BhdGgoYXJncy5zcmN0cmVlKQotICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwpCiAgICAgICAgIGxvZ2dlci5pbmZvKCdTb3VyY2UgdHJlZSAlcyBzeW5jaHJvbml6ZWQnICUgc3JjdHJlZSkKIAogICAgICAgICBpZiBpbml0aWFsX3JldjoKQEAgLTQyOCwzMSArNDQyLDEwIEBACiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogCiAKLWRlZiBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCByZWNpcGVuYW1lLCB0aW5mb2lsPU5vbmUpOgotICAgICIiIkhBQ0s6IFVnbHkgd29ya2Fyb3VuZCBmb3IgbWFraW5nIHN1cmUgdGhhdCByZXF1aXJlbWVudHMgYXJlIG1ldCB3aGVuCi0gICAgICAgdHJ5aW5nIHRvIGV4dHJhY3QgYSBwYWNrYWdlLiBSZXR1cm5zIHRoZSB0aW5mb2lsIGluc3RhbmNlIHRvIGJlIHVzZWQuIiIiCi0gICAgaWYgbm90IHRpbmZvaWw6Ci0gICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQotCi0gICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCByZWNpcGVuYW1lLCBUcnVlKQotICAgIGlmIG5vdCByZDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIHJkKToKLSAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIGtlcm4tdG9vbHMtbmF0aXZlJykKLSAgICAgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkZhaWxlZCB0byBidWlsZCBrZXJuLXRvb2xzLW5hdGl2ZTpcbiVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnN0ZG91dCkKLSAgICByZXR1cm4gdGluZm9pbAotCi0KLWRlZiBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwga2VlcF90ZW1wLCBkZXZicmFuY2gsIHN5bmMsIGQsIHRpbmZvaWwpOgorZGVmIF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBrZWVwX3RlbXAsIGRldmJyYW5jaCwgc3luYywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBmaXhlZF9zZXR1cCwgZCwgdGluZm9pbCk6CiAgICAgIiIiRXh0cmFjdCBzb3VyY2VzIG9mIGEgcmVjaXBlIiIiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhdGNoCiAKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKQEAgLTQ4MCw2ICs0NzMsMTIgQEAKICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKIAogICAgIGluaXRpYWxfcmV2ID0gTm9uZQorCisgICAgYXBwZW5kZXhpc3RlZCA9IEZhbHNlCisgICAgcmVjaXBlZmlsZSA9IGQuZ2V0VmFyKCdGSUxFJykKKyAgICBhcHBlbmRmaWxlID0gcmVjaXBlX3RvX2FwcGVuZChyZWNpcGVmaWxlLCBjb25maWcpCisgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKKwogICAgICMgV2UgbmVlZCB0byByZWRpcmVjdCBXT1JLRElSLCBTVEFNUFNfRElSIGV0Yy4gdW5kZXIgYSB0ZW1wb3JhcnkKICAgICAjIGRpcmVjdG9yeSBzbyB0aGF0OgogICAgICMgKGEpIHdlIHBpY2sgdXAgYWxsIGZpbGVzIHRoYXQgZ2V0IHVucGFja2VkIHRvIHRoZSBXT1JLRElSLCBhbmQKQEAgLTQ5OCwxMzcgKzQ5Nyw1NiBAQAogICAgIHRyeToKICAgICAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQogCi0gICAgICAgIGNyZCA9IGQuY3JlYXRlQ29weSgpCi0gICAgICAgICMgTWFrZSBhIHN1YmRpciBzbyB3ZSBndWFyZCBhZ2FpbnN0IFdPUktESVI9PVMKLSAgICAgICAgd29ya2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnd29ya2RpcicpCi0gICAgICAgIGNyZC5zZXRWYXIoJ1dPUktESVInLCB3b3JrZGlyKQotICAgICAgICBpZiBub3QgY3JkLmdldFZhcignUycpLnN0YXJ0c3dpdGgod29ya2Rpcik6Ci0gICAgICAgICAgICAjIFVzdWFsbHkgYSBzaGFyZWQgd29ya2RpciByZWNpcGUgKGtlcm5lbCwgZ2NjKQotICAgICAgICAgICAgIyBUcnkgdG8gc2V0IGEgcmVhc29uYWJsZSBkZWZhdWx0Ci0gICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKLSAgICAgICAgICAgICAgICBjcmQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vc291cmNlJykKKyAgICAgICAgIyBGSVhNRSB0aGlzIHJlc3VsdHMgaW4gYSBjYWNoZSByZWxvYWQgdW5kZXIgY29udHJvbCBvZiB0aW5mb2lsLCB3aGljaCBpcyBmaW5lCisgICAgICAgICMgZXhjZXB0IHdlIGRvbid0IGdldCB0aGUga25vdHR5IHByb2dyZXNzIGJhcgorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZGZpbGUpOgorICAgICAgICAgICAgYXBwZW5kYmFja3VwID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG9zLnBhdGguYmFzZW5hbWUoYXBwZW5kZmlsZSkgKyAnLmJhaycpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoYXBwZW5kZmlsZSwgYXBwZW5kYmFja3VwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXBwZW5kYmFja3VwID0gTm9uZQorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShhcHBlbmRmaWxlKSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCd3cml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZGZpbGUpCisgICAgICAgIHdpdGggb3BlbihhcHBlbmRmaWxlLCAnYScpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCcjIyMtLS0gX2V4dHJhY3Rfc291cmNlXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnREVWVE9PTF9URU1QRElSID0gIiVzIlxuJyAlIHRlbXBkaXIpCisgICAgICAgICAgICBmLndyaXRlKCdERVZUT09MX0RFVkJSQU5DSCA9ICIlcyJcbicgJSBkZXZicmFuY2gpCisgICAgICAgICAgICBpZiBub3QgaXNfa2VybmVsX3lvY3RvOgorICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BBVENIVE9PTCA9ICJnaXQiXG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BBVENIX0NPTU1JVF9GVU5DVElPTlMgPSAiMSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdpbmhlcml0IGRldnRvb2wtc291cmNlXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnIyMjLS0tIF9leHRyYWN0X3NvdXJjZVxuJykKKworICAgICAgICB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBbcG5dKQorCisgICAgICAgIHNzdGF0ZV9tYW5pZmVzdHMgPSBkLmdldFZhcignU1NUQVRFX01BTklGRVNUUycpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzc3RhdGVfbWFuaWZlc3RzKQorICAgICAgICBwcmVzZXJ2ZXN0YW1wZmlsZSA9IG9zLnBhdGguam9pbihzc3RhdGVfbWFuaWZlc3RzLCAncHJlc2VydmUtc3RhbXBzJykKKyAgICAgICAgd2l0aCBvcGVuKHByZXNlcnZlc3RhbXBmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGQuZ2V0VmFyKCdTVEFNUCcpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKToKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGtlcm5lbCBjb25maWcKKyAgICAgICAgICAgICAgICB0YXNrID0gJ2RvX2NvbmZpZ3VyZScKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY3JkLnNldFZhcignUycsICcke1dPUktESVJ9LyVzJyAlIG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ1MnKSkpCi0gICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgotICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIHNvdXJjZSB0byBTVEFHSU5HX0tFUk5FTF9ESVIgaGVyZQotICAgICAgICAgICAgY3JkLnNldFZhcignU1RBR0lOR19LRVJORUxfRElSJywgJyR7U30nKQorICAgICAgICAgICAgICAgIHRhc2sgPSAnZG9fcGF0Y2gnCiAKLSAgICAgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKLSAgICAgICAgaWYgbm90IGlzX2tlcm5lbF95b2N0bzoKLSAgICAgICAgICAgIGNyZC5zZXRWYXIoJ1BBVENIVE9PTCcsICdnaXQnKQotICAgICAgICAgICAgY3JkLnNldFZhcignUEFUQ0hfQ09NTUlUX0ZVTkNUSU9OUycsICcxJykKKyAgICAgICAgICAgICMgUnVuIHRoZSBmZXRjaCArIHVucGFjayB0YXNrcworICAgICAgICAgICAgcmVzID0gdGluZm9pbC5idWlsZF90YXJnZXRzKHBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2V2ZW50cz1UcnVlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocHJlc2VydmVzdGFtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwcmVzZXJ2ZXN0YW1wZmlsZSkKIAotICAgICAgICAjIEFwcGx5IG91ciBjaGFuZ2VzIHRvIHRoZSBkYXRhc3RvcmUgdG8gdGhlIHNlcnZlcidzIGRhdGFzdG9yZQotICAgICAgICBmb3Iga2V5IGluIGNyZC5sb2NhbGtleXMoKToKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCclc19wbi0lcycgJSAoa2V5LCBwbiksIGNyZC5nZXRWYXIoa2V5LCBGYWxzZSkpCisgICAgICAgIGlmIG5vdCByZXM6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0V4dHJhY3Rpbmcgc291cmNlIGZvciAlcyBmYWlsZWQnICUgcG4pCiAKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1NUQU1QU19ESVInLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3N0YW1wcycpKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVCcsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAndGVtcCcpKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignQlVJTERDRkdfRlVOQ1MnLCAnJykKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ0JVSUxEQ0ZHX0hFQURFUicsICcnKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignQkJfSEFTSF9JR05PUkVfTUlTTUFUQ0gnLCAnMScpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2luaXRpYWxfcmV2JyksICdyJykgYXMgZjoKKyAgICAgICAgICAgIGluaXRpYWxfcmV2ID0gZi5yZWFkKCkKIAotICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuQnVpbGRTdGFydGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50LkJ1aWxkQ29tcGxldGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuTG9nUmVjb3JkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N0YXJ0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5idWlsZC5UYXNrRmFpbGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQnXSkKLQotICAgICAgICBkZWYgcnVudGFzayh0YXJnZXQsIHRhc2spOgotICAgICAgICAgICAgaWYgdGluZm9pbC5idWlsZF9maWxlKHRhcmdldCwgdGFzayk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSB0aW5mb2lsLndhaXRfZXZlbnQoMC4yNSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdUYXNrIGRvXyVzIGZhaWxlZDogJXMnICUgKHRhc2ssIGV2ZW50LmVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdUYXNrIGRvXyVzIGZhaWxlZCcgJSB0YXNrKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4ZWN1dGluZyAlcy4uLicgJSBldmVudC5fdGFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPD0gbG9nZ2luZy5JTkZPOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCi0KLSAgICAgICAgIyB3ZSBuZWVkIHZpcnR1YWw6bmF0aXZlOi9wYXRoL3RvL3JlY2lwZSBpZiBpdCdzIGEgQkJDTEFTU0VYVEVORAotICAgICAgICBmbiA9IHRpbmZvaWwuZ2V0X3JlY2lwZV9maWxlKHBuKQotICAgICAgICBydW50YXNrKGZuLCAndW5wYWNrJykKLQotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKToKLSAgICAgICAgICAgICMgRXh0cmEgc3RlcCBmb3Iga2VybmVsIHRvIHBvcHVsYXRlIHRoZSBzb3VyY2UgZGlyZWN0b3J5Ci0gICAgICAgICAgICBydW50YXNrKGZuLCAna2VybmVsX2NoZWNrb3V0JykKLQotICAgICAgICBzcmNzdWJkaXIgPSBjcmQuZ2V0VmFyKCdTJykKLQotICAgICAgICAjIE1vdmUgbG9jYWwgc291cmNlIGZpbGVzIGludG8gc2VwYXJhdGUgc3ViZGlyCi0gICAgICAgIHJlY2lwZV9wYXRjaGVzID0gW29zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGZvciBwYXRjaCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3BhdGNoZXMoY3JkKV0KLSAgICAgICAgbG9jYWxfZmlsZXMgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX2xvY2FsX2ZpbGVzKGNyZCkKLQotICAgICAgICAjIElnbm9yZSBsb2NhbCBmaWxlcyB3aXRoIHN1YmRpcj17QlB9Ci0gICAgICAgIHNyY2Fic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc3Jjc3ViZGlyKQotICAgICAgICBsb2NhbF9maWxlcyA9IFtmbmFtZSBmb3IgZm5hbWUgaW4gbG9jYWxfZmlsZXMgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHdvcmtkaXIsIGZuYW1lKSkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgIChzcmNhYnNwYXRoID09IHdvcmtkaXIgb3Igbm90Ci0gICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSkuc3RhcnRzd2l0aChzcmNhYnNwYXRoICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcCkpXQotICAgICAgICBpZiBsb2NhbF9maWxlczoKLSAgICAgICAgICAgIGZvciBmbmFtZSBpbiBsb2NhbF9maWxlczoKLSAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJywgZm5hbWUpKQotICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnb2UtbG9jYWwtZmlsZXMnLCAnLmdpdGlnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcjIElnbm9yZSBsb2NhbCBmaWxlcywgYnkgZGVmYXVsdC4gUmVtb3ZlIHRoaXMgZmlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnaWYgeW91IHdhbnQgdG8gY29tbWl0IHRoZSBkaXJlY3RvcnkgdG8gR2l0XG4qXG4nKQotCi0gICAgICAgIGlmIHNyY3N1YmRpciA9PSB3b3JrZGlyOgotICAgICAgICAgICAgIyBGaW5kIG5vbi1wYXRjaCBub24tbG9jYWwgc291cmNlcyB0aGF0IHdlcmUgInVucGFja2VkIiB0byBzcmN0cmVlCi0gICAgICAgICAgICAjIGRpcmVjdG9yeQotICAgICAgICAgICAgc3JjX2ZpbGVzID0gW2ZuYW1lIGZvciBmbmFtZSBpbiBfbHNfdHJlZSh3b3JrZGlyKSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpIG5vdCBpbiByZWNpcGVfcGF0Y2hlc10KLSAgICAgICAgICAgICMgRm9yY2Ugc2VwYXJhdGUgUyBzbyB0aGF0IHBhdGNoIGZpbGVzIGNhbiBiZSBsZWZ0IG91dCBmcm9tIHNyY3RyZWUKLSAgICAgICAgICAgIHNyY3N1YmRpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPXdvcmtkaXIpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignU190YXNrLXBhdGNoJywgc3Jjc3ViZGlyKQotICAgICAgICAgICAgIyBNb3ZlIHNvdXJjZSBmaWxlcyB0byBTCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzcmNfZmlsZXM6Ci0gICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4od29ya2RpciwgcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCBwYXRoKSkKLSAgICAgICAgZWxpZiBvcy5wYXRoLmRpcm5hbWUoc3Jjc3ViZGlyKSAhPSB3b3JrZGlyOgotICAgICAgICAgICAgIyBIYW5kbGUgaWYgUyBpcyBzZXQgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgc3Jjc3ViZGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsIG9zLnBhdGgucmVscGF0aChzcmNzdWJkaXIsIHdvcmtkaXIpLnNwbGl0KG9zLnNlcClbMF0pCi0KLSAgICAgICAgc2NyaXB0dXRpbHMuZ2l0X2NvbnZlcnRfc3RhbmRhbG9uZV9jbG9uZShzcmNzdWJkaXIpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzcmNzdWJkaXIgZXhpc3RzCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmNzdWJkaXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmNzdWJkaXIpIG9yIG5vdCBvcy5saXN0ZGlyKHNyY3N1YmRpcik6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygibm8gc291cmNlIHVucGFja2VkIHRvIFMsIGVpdGhlciB0aGUgJXMgcmVjaXBlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IHVzZSBhbnkgc291cmNlIG9yIHRoZSBjb3JyZWN0IHNvdXJjZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIiAlIHBuKQotCi0gICAgICAgIHNldHVwX2dpdF9yZXBvKHNyY3N1YmRpciwgY3JkLmdldFZhcignUFYnKSwgZGV2YnJhbmNoLCBkPWQpCi0KLSAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXNyY3N1YmRpcikKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBzdGRvdXQucnN0cmlwKCkKLQotICAgICAgICBsb2dnZXIuaW5mbygnUGF0Y2hpbmcuLi4nKQotICAgICAgICBydW50YXNrKGZuLCAncGF0Y2gnKQotCi0gICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgdGFnIC1mIGRldnRvb2wtcGF0Y2hlZCcsIGN3ZD1zcmNzdWJkaXIpCi0KLSAgICAgICAga2NvbmZpZyA9IE5vbmUKLSAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCk6Ci0gICAgICAgICAgICAjIFN0b3JlIGdlbmVyYXRlIGFuZCBzdG9yZSBrZXJuZWwgY29uZmlnCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnR2VuZXJhdGluZyBrZXJuZWwgY29uZmlnJykKLSAgICAgICAgICAgIHJ1bnRhc2soZm4sICdjb25maWd1cmUnKQotICAgICAgICAgICAga2NvbmZpZyA9IG9zLnBhdGguam9pbihjcmQuZ2V0VmFyKCdCJyksICcuY29uZmlnJykKLQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc3Jjc3ViZGlyID0gZi5yZWFkKCkKIAogICAgICAgICB0ZW1wZGlyX2xvY2FsZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdvZS1sb2NhbC1maWxlcycpCiAgICAgICAgIHNyY3RyZWVfbG9jYWxkaXIgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ29lLWxvY2FsLWZpbGVzJykKQEAgLTY4MiwxMSArNjAwLDE1IEBACiAgICAgICAgICAgICAgICAgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmdpdENvbW1hbmRVc2VyT3B0aW9ucyh1c2Vyb3B0aW9ucywgZD1kKQogICAgICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgJXMgY29tbWl0IC1hIC1tICJDb21taXR0aW5nIGxvY2FsIGZpbGUgc3ltbGlua3NcblxuJXMiJyAlICgnICcuam9pbih1c2Vyb3B0aW9ucyksIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5pZ25vcmVfY29tbWl0X3ByZWZpeCksIGN3ZD1zcmN0cmVlKQogCi0gICAgICAgIGlmIGtjb25maWc6CisgICAgICAgIGlmIGlzX2tlcm5lbF95b2N0bzoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDb3B5aW5nIGtlcm5lbCBjb25maWcgdG8gc3JjdHJlZScpCi0gICAgICAgICAgICBzaHV0aWwuY29weTIoa2NvbmZpZywgc3JjdHJlZSkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4odGVtcGRpciwgJy5jb25maWcnKSwgc3JjdHJlZSkKIAogICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGFwcGVuZGJhY2t1cDoKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShhcHBlbmRiYWNrdXAsIGFwcGVuZGZpbGUpCisgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoYXBwZW5kZmlsZSkKICAgICAgICAgaWYga2VlcF90ZW1wOgogICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1ByZXNlcnZpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlcycgJSB0ZW1wZGlyKQogICAgICAgICBlbHNlOgpAQCAtNjk5LDggKzYyMSwxMSBAQAogCiAgICAgZGVmIGFkZGZpbGUoZm4pOgogICAgICAgICBtZDUgPSBiYi51dGlscy5tZDVfZmlsZShmbikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsICcuZGV2dG9vbF9tZDUnKSwgJ2EnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnJXN8JXN8JXNcbicgJSAocmVjaXBlbmFtZSwgb3MucGF0aC5yZWxwYXRoKGZuLCBjb25maWcud29ya3NwYWNlX3BhdGgpLCBtZDUpKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJy5kZXZ0b29sX21kNScpLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgbWQ1X3N0ciA9ICclc3wlc3wlc1xuJyAlIChyZWNpcGVuYW1lLCBvcy5wYXRoLnJlbHBhdGgoZm4sIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCksIG1kNSkKKyAgICAgICAgICAgIGYuc2VlaygwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGlmIG5vdCBtZDVfc3RyIGluIGYucmVhZCgpOgorICAgICAgICAgICAgICAgIGYud3JpdGUobWQ1X3N0cikKIAogICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZW5hbWUpOgogICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhmaWxlbmFtZSk6CkBAIC03NzIsMTMgKzY5Nyw2IEBACiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIi0tbm8tZXh0cmFjdCBzcGVjaWZpZWQgYW5kIHNvdXJjZSBwYXRoICVzIGRvZXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgZXhpc3Qgb3IgaXMgbm90IGEgZGlyZWN0b3J5IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjdHJlZSkKLSAgICAgICAgaWYgbm90IGFyZ3Mubm9fZXh0cmFjdDoKLSAgICAgICAgICAgIHRpbmZvaWwgPSBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCBwbiwgdGluZm9pbCkKLSAgICAgICAgICAgIGlmIG5vdCB0aW5mb2lsOgotICAgICAgICAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUtcGFyc2UgYmVjYXVzZSB0aW5mb2lsIG1heSBoYXZlIGJlZW4gcmUtaW5pdGlhbGlzZWQKLSAgICAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgYXJncy5yZWNpcGVuYW1lLCBUcnVlKQogCiAgICAgICAgIHJlY2lwZWZpbGUgPSByZC5nZXRWYXIoJ0ZJTEUnKQogICAgICAgICBhcHBlbmRmaWxlID0gcmVjaXBlX3RvX2FwcGVuZChyZWNpcGVmaWxlLCBjb25maWcsIGFyZ3Mud2lsZGNhcmQpCkBAIC03OTMsNyArNzExLDcgQEAKICAgICAgICAgaW5pdGlhbF9yZXYgPSBOb25lCiAgICAgICAgIGNvbW1pdHMgPSBbXQogICAgICAgICBpZiBub3QgYXJncy5ub19leHRyYWN0OgotICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgcmQsIHRpbmZvaWwpCisgICAgICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQogICAgICAgICAgICAgaWYgbm90IGluaXRpYWxfcmV2OgogICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCkBAIC04NDIsNyArNzYwLDEwIEBACiAKICAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIHJkKToKICAgICAgICAgICAgICAgICBmLndyaXRlKCdTUkNUUkVFQ09WRVJFRFRBU0tTID0gImRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX2tlcm5lbF9jaGVja291dCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9fZmV0Y2ggZG9fdW5wYWNrIGRvX3BhdGNoIGRvX2tlcm5lbF9jb25maWdtZSBkb19rZXJuZWxfY29uZmlnY2hlY2siXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2ZldGNoIGRvX3VucGFjayBkb19rZXJuZWxfY29uZmlnbWUgZG9fa2VybmVsX2NvbmZpZ2NoZWNrIlxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdcbmRvX3BhdGNoKCkge1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJykKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbmRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGNwICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcuYmFzZWxpbmVcbicKICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgbG4gLXNmVCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLm5ld1xuJwpAQCAtODUyLDYgKzc3Myw4IEBACiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIGNvbW1pdDogJXNcbicgJSBjb21taXQpCiAKKyAgICAgICAgdXBkYXRlX3VubG9ja2Vkc2lncyhiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCBbcG5dKQorCiAgICAgICAgIF9hZGRfbWQ1KGNvbmZpZywgcG4sIGFwcGVuZGZpbGUpCiAKICAgICAgICAgbG9nZ2VyLmluZm8oJ1JlY2lwZSAlcyBub3cgc2V0IHVwIHRvIGJ1aWxkIGZyb20gJXMnICUgKHBuLCBzcmN0cmVlKSkKQEAgLTEzNzUsMTIgKzEyOTgsMTMgQEAKICAgICAgICAgaWYgbm90IG5vX3JlbW92ZToKICAgICAgICAgICAgICMgRmluZCBsaXN0IG9mIGV4aXN0aW5nIHBhdGNoZXMgaW4gcmVjaXBlIGZpbGUKICAgICAgICAgICAgIHBhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgICAgIG9sZF9zcmNyZXYgPSAocmQuZ2V0VmFyKCdTUkNSRVYnLCBGYWxzZSkgb3IgJycpCisgICAgICAgICAgICBvbGRfc3JjcmV2ID0gcmQuZ2V0VmFyKCdTUkNSRVYnKSBvciAnJwogICAgICAgICAgICAgdXBkX3AsIG5ld19wLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgb2xkX3NyY3JldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hlc19kaXIpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1BhdGNoZXM6IHVwZGF0ZSAlcywgbmV3ICVzLCBkZWxldGUgJXMnICUgKGRpY3QodXBkX3ApLCBkaWN0KG5ld19wKSwgZGljdChkZWxfcCkpKQogCiAgICAgICAgICAgICAjIFJlbW92ZSBkZWxldGVkIGxvY2FsIGZpbGVzIGFuZCAib3ZlcmxhcHBpbmciIHBhdGNoZXMKLSAgICAgICAgICAgIHJlbW92ZV9maWxlcyA9IGxpc3QoZGVsX2YudmFsdWVzKCkpICsgbGlzdCh1cGRfcC52YWx1ZXMoKSkKKyAgICAgICAgICAgIHJlbW92ZV9maWxlcyA9IGxpc3QoZGVsX2YudmFsdWVzKCkpICsgbGlzdCh1cGRfcC52YWx1ZXMoKSkgKyBsaXN0KGRlbF9wLnZhbHVlcygpKQogICAgICAgICAgICAgaWYgcmVtb3ZlX2ZpbGVzOgogICAgICAgICAgICAgICAgIHJlbW92ZWRlbnRyaWVzID0gX3JlbW92ZV9maWxlX2VudHJpZXMoc3JjdXJpLCByZW1vdmVfZmlsZXMpWzBdCiAgICAgICAgICAgICAgICAgdXBkYXRlX3NyY3VyaSA9IFRydWUKQEAgLTE2MTIsNyArMTUzNiw3IEBACiBkZWYgc3RhdHVzKGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CiAgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdzdGF0dXMnIHN1YmNvbW1hbmQiIiIKICAgICBpZiB3b3Jrc3BhY2U6Ci0gICAgICAgIGZvciByZWNpcGUsIHZhbHVlIGluIHdvcmtzcGFjZS5pdGVtcygpOgorICAgICAgICBmb3IgcmVjaXBlLCB2YWx1ZSBpbiBzb3J0ZWQod29ya3NwYWNlLml0ZW1zKCkpOgogICAgICAgICAgICAgcmVjaXBlZmlsZSA9IHZhbHVlWydyZWNpcGVmaWxlJ10KICAgICAgICAgICAgIGlmIHJlY2lwZWZpbGU6CiAgICAgICAgICAgICAgICAgcmVjaXBlc3RyID0gJyAoJXMpJyAlIHJlY2lwZWZpbGUKQEAgLTE2MjcsNiArMTU1MSwyNiBAQAogZGVmIF9yZXNldChyZWNpcGVzLCBub19jbGVhbiwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJSZXNldCBvbmUgb3IgbW9yZSByZWNpcGVzIiIiCiAKKyAgICBkZWYgY2xlYW5fcHJlZmVycmVkX3Byb3ZpZGVyKHBuLCBsYXllcmNvbmZfcGF0aCk6CisgICAgICAgICIiIlJlbW92ZSBQUkVGRVJSRURfUFJPVklERVIgZnJvbSBsYXllci5jb25mJyIiIgorICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgbGF5ZXJjb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXJjb25mX3BhdGgsICdjb25mJywgJ2xheWVyLmNvbmYnKQorICAgICAgICBuZXdfbGF5ZXJjb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXJjb25mX3BhdGgsICdjb25mJywgJy5sYXllci5jb25mJykKKyAgICAgICAgcHByb3ZpZGVyX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgd2l0aCBvcGVuKGxheWVyY29uZl9maWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihuZXdfbGF5ZXJjb25mX2ZpbGUsICdhJykgYXMgbmY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHBwcm92aWRlcl9leHAgPSByJ15QUkVGRVJSRURfUFJPVklERVJfLio/ID0gIicgKyBwbiArIHInIiQnCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaChwcHJvdmlkZXJfZXhwLCBsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5mLndyaXRlKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcHJvdmlkZXJfZm91bmQgPSBUcnVlCisgICAgICAgIGlmIHBwcm92aWRlcl9mb3VuZDoKKyAgICAgICAgICAgIHNodXRpbC5tb3ZlKG5ld19sYXllcmNvbmZfZmlsZSwgbGF5ZXJjb25mX2ZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5yZW1vdmUobmV3X2xheWVyY29uZl9maWxlKQorCiAgICAgaWYgcmVjaXBlcyBhbmQgbm90IG5vX2NsZWFuOgogICAgICAgICBpZiBsZW4ocmVjaXBlcykgPT0gMToKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDbGVhbmluZyBzeXNyb290IGZvciByZWNpcGUgJXMuLi4nICUgcmVjaXBlc1swXSkKQEAgLTE2NzksNiArMTYyMyw3IEBACiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHVubGlrZWx5LCBidXQgaWYgaXQncyBlbXB0eSB3ZSBjYW4ganVzdCByZW1vdmUgaXQKICAgICAgICAgICAgICAgICBvcy5ybWRpcihzcmN0cmVlKQogCisgICAgICAgIGNsZWFuX3ByZWZlcnJlZF9wcm92aWRlcihwbiwgY29uZmlnLndvcmtzcGFjZV9wYXRoKQogCiBkZWYgcmVzZXQoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3Jlc2V0JyBzdWJjb21tYW5kIiIiCkBAIC0xODM0LDEwICsxNzc5LDE1IEBACiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCAnLVYnLCBoZWxwPSdWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQViknKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLW5vLWdpdCcsICctZycsIGhlbHA9J0lmIGZldGNoaW5nIHNvdXJjZSwgZG8gbm90IHNldCB1cCBzb3VyY2UgdHJlZSBhcyBhIGdpdCByZXBvc2l0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1hdXRvcmV2JywgJy1hJywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIGdyb3VwID0gcGFyc2VyX2FkZC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc3JjcmV2JywgJy1TJywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIGZldGNoIGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IGxhdGVzdCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1hdXRvcmV2JywgJy1hJywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXNyY2JyYW5jaCcsICctQicsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpJykKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1iaW5hcnknLCAnLWInLCBoZWxwPSdUcmVhdCB0aGUgc291cmNlIHRyZWUgYXMgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB2ZXJiYXRpbSAobm8gY29tcGlsYXRpb24sIHNhbWUgZGlyZWN0b3J5IHN0cnVjdHVyZSkuIFVzZWZ1bCB3aXRoIGJpbmFyeSBwYWNrYWdlcyBlLmcuIFJQTXMuJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1hbHNvLW5hdGl2ZScsIGhlbHA9J0Fsc28gYWRkIG5hdGl2ZSB2YXJpYW50IChpLmUuIHN1cHBvcnQgYnVpbGRpbmcgcmVjaXBlIGZvciB0aGUgYnVpbGQgaG9zdCBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgbWFjaGluZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXNyYy1zdWJkaXInLCBoZWxwPSdTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlJywgbWV0YXZhcj0nU1VCRElSJykKKyAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1taXJyb3JzJywgaGVscD0nRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nIChkaXNhYmxlIGJ5IGRlZmF1bHQpLicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tcHJvdmlkZXMnLCAnLXAnLCBoZWxwPSdTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUgcmVjaXBlLiBFLmcuIHZpcnR1YWwvbGliZ2wnKQogICAgIHBhcnNlcl9hZGQuc2V0X2RlZmF1bHRzKGZ1bmM9YWRkLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCiAgICAgcGFyc2VyX21vZGlmeSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignbW9kaWZ5JywgaGVscD0nTW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZScsCkBAIC0xODU0LDcgKzE4MDQsNyBAQAogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1uby1zYW1lLWRpcicsIGhlbHA9J0ZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfbW9kaWZ5LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0ICh3aGVuIG5vdCB1c2luZyAtbi8tLW5vLWV4dHJhY3QpIChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfbW9kaWZ5LmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJywgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICBwYXJzZXJfbW9kaWZ5LnNldF9kZWZhdWx0cyhmdW5jPW1vZGlmeSkKKyAgICBwYXJzZXJfbW9kaWZ5LnNldF9kZWZhdWx0cyhmdW5jPW1vZGlmeSwgZml4ZWRfc2V0dXA9Y29udGV4dC5maXhlZF9zZXR1cCkKIAogICAgIHBhcnNlcl9leHRyYWN0ID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdleHRyYWN0JywgaGVscD0nRXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0V4dHJhY3RzIHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZScsCkBAIC0xODYzLDcgKzE4MTMsNyBAQAogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnc3JjdHJlZScsIGhlbHA9J1BhdGggdG8gd2hlcmUgdG8gZXh0cmFjdCB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfZXh0cmFjdC5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX2V4dHJhY3Quc2V0X2RlZmF1bHRzKGZ1bmM9ZXh0cmFjdCwgbm9fd29ya3NwYWNlPVRydWUpCisgICAgcGFyc2VyX2V4dHJhY3Quc2V0X2RlZmF1bHRzKGZ1bmM9ZXh0cmFjdCwgZml4ZWRfc2V0dXA9Y29udGV4dC5maXhlZF9zZXR1cCkKIAogICAgIHBhcnNlcl9zeW5jID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzeW5jJywgaGVscD0nU3luY2hyb25pemUgdGhlIHNvdXJjZSB0cmVlIGZvciBhbiBleGlzdGluZyByZWNpcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1N5bmNocm9uaXplIHRoZSBwcmV2aW91c2x5IGV4dHJhY3RlZCBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlJywKQEAgLTE4NzMsNyArMTgyMyw3IEBACiAgICAgcGFyc2VyX3N5bmMuYWRkX2FyZ3VtZW50KCdzcmN0cmVlJywgaGVscD0nUGF0aCB0byB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9zeW5jLmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0JykKICAgICBwYXJzZXJfc3luYy5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX3N5bmMuc2V0X2RlZmF1bHRzKGZ1bmM9c3luYykKKyAgICBwYXJzZXJfc3luYy5zZXRfZGVmYXVsdHMoZnVuYz1zeW5jLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCiAgICAgcGFyc2VyX3JlbmFtZSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcigncmVuYW1lJywgaGVscD0nUmVuYW1lIGEgcmVjaXBlIGZpbGUgaW4gdGhlIHdvcmtzcGFjZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nUmVuYW1lcyB0aGUgcmVjaXBlIGZpbGUgZm9yIGEgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2UsIGNoYW5naW5nIHRoZSBuYW1lIG9yIHZlcnNpb24gcGFydCBvciBib3RoLCBlbnN1cmluZyB0aGF0IGFsbCByZWZlcmVuY2VzIHdpdGhpbiB0aGUgd29ya3NwYWNlIGFyZSB1cGRhdGVkIGF0IHRoZSBzYW1lIHRpbWUuIE9ubHkgd29ya3Mgd2hlbiB0aGUgcmVjaXBlIGZpbGUgaXRzZWxmIGlzIGluIHRoZSB3b3Jrc3BhY2UsIGUuZy4gYWZ0ZXIgZGV2dG9vbCBhZGQuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBkZXZ0b29sIGFkZCBkaWQgbm90IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG5hbWUuJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CmluZGV4IDA1ZmI5ZTUuLmYxYjNmZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQpAQCAtMSw2ICsxLDYgQEAKICMgRGV2ZWxvcG1lbnQgdG9vbCAtIHVwZ3JhZGUgY29tbWFuZCBwbHVnaW4KICMKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTMzLDcgKzMzLDcgQEAKIAogaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiBmcm9tIGRldnRvb2wgaW1wb3J0IHN0YW5kYXJkCi1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIERldnRvb2xFcnJvciwgcGFyc2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgRGV2dG9vbEVycm9yLCBwYXJzZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgdXBkYXRlX3VubG9ja2Vkc2lncwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCiAKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgc3JjdXJpID0gcmV2X3JlLnN1YignJywgc3JjdXJpKQogICAgIHJldHVybiBzcmN1cmksIHNyY3JldgogCi1kZWYgX2V4dHJhY3RfbmV3X3NvdXJjZShuZXdwdiwgc3JjdHJlZSwgbm9fcGF0Y2gsIHNyY3JldiwgYnJhbmNoLCBrZWVwX3RlbXAsIHRpbmZvaWwsIHJkKToKK2RlZiBfZXh0cmFjdF9uZXdfc291cmNlKG5ld3B2LCBzcmN0cmVlLCBub19wYXRjaCwgc3JjcmV2LCBzcmNicmFuY2gsIGJyYW5jaCwga2VlcF90ZW1wLCB0aW5mb2lsLCByZCk6CiAgICAgIiIiRXh0cmFjdCBzb3VyY2VzIG9mIGEgcmVjaXBlIHdpdGggYSBuZXcgdmVyc2lvbiIiIgogCiAgICAgZGVmIF9fcnVuKGNtZCk6CkBAIC0yMDIsMTUgKzIwMiwzOCBAQAogICAgICAgICBfX3J1bignZ2l0IHRhZyAtZiBkZXZ0b29sLWJhc2UtbmV3JykKICAgICAgICAgbWQ1ID0gTm9uZQogICAgICAgICBzaGEyNTYgPSBOb25lCisgICAgICAgIGlmIG5vdCBzcmNicmFuY2g6CisgICAgICAgICAgICBjaGVja19icmFuY2gsIGNoZWNrX2JyYW5jaF9lcnIgPSBfX3J1bignZ2l0IGJyYW5jaCAtciAtLWNvbnRhaW5zICVzJyAlIHNyY3JldikKKyAgICAgICAgICAgIGdldF9icmFuY2ggPSBbeC5zdHJpcCgpIGZvciB4IGluIGNoZWNrX2JyYW5jaC5zcGxpdGxpbmVzKCldCisgICAgICAgICAgICAjIFJlbW92ZSBIRUFEIHJlZmVyZW5jZSBwb2ludCBhbmQgZHJvcCByZW1vdGUgcHJlZml4CisgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3BsaXQoJy8nLCAxKVsxXSBmb3IgeCBpbiBnZXRfYnJhbmNoIGlmIG5vdCB4LnN0YXJ0c3dpdGgoJ29yaWdpbi9IRUFEJyldCisgICAgICAgICAgICBpZiAnbWFzdGVyJyBpbiBnZXRfYnJhbmNoOgorICAgICAgICAgICAgICAgICMgSWYgaXQgaXMgbWFzdGVyLCB3ZSBkbyBub3QgbmVlZCB0byBhcHBlbmQgJ2JyYW5jaD1tYXN0ZXInIGFzIHRoaXMgaXMgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAjIEV2ZW4gd2l0aCB0aGUgY2FzZSB3aGVyZSBnZXRfYnJhbmNoIGhhcyBtdWx0aXBsZSBvYmplY3RzLCBpZiAnbWFzdGVyJyBpcyBvbmUKKyAgICAgICAgICAgICAgICAjIG9mIHRoZW0sIHdlIHNob3VsZCBkZWZhdWx0IHRha2UgZnJvbSAnbWFzdGVyJworICAgICAgICAgICAgICAgIHNyY2JyYW5jaCA9ICcnCisgICAgICAgICAgICBlbGlmIGxlbihnZXRfYnJhbmNoKSA9PSAxOgorICAgICAgICAgICAgICAgICMgSWYgJ21hc3RlcicgaXNuJ3QgaW4gZ2V0X2JyYW5jaCBhbmQgZ2V0X2JyYW5jaCBjb250YWlucyBvbmx5IE9ORSBvYmplY3QsIHRoZW4gc3RvcmUgcmVzdWx0IGludG8gJ3NyY2JyYW5jaCcKKyAgICAgICAgICAgICAgICBzcmNicmFuY2ggPSBnZXRfYnJhbmNoWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgZ2V0X2JyYW5jaCBjb250YWlucyBtb3JlIHRoYW4gb25lIG9iamVjdHMsIHRoZW4gZGlzcGxheSBlcnJvciBhbmQgZXhpdC4KKyAgICAgICAgICAgICAgICBtYnJjaCA9ICdcbiAgJyArICdcbiAgJy5qb2luKGdldF9icmFuY2gpCisgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdSZXZpc2lvbiAlcyB3YXMgZm91bmQgb24gbXVsdGlwbGUgYnJhbmNoZXM6ICVzXG5QbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBicmFuY2ggaW4gdGhlIGRldnRvb2wgY29tbWFuZCB3aXRoICItLXNyY2JyYW5jaCIgb3IgIi1CIiBvcHRpb24uJyAlIChzcmNyZXYsIG1icmNoKSkKICAgICBlbHNlOgogICAgICAgICBfX3J1bignZ2l0IGNoZWNrb3V0IGRldnRvb2wtYmFzZSAtYiBkZXZ0b29sLSVzJyAlIG5ld3B2KQogCiAgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29sJykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWQ1LCBzaGEyNTYgPSBzY3JpcHR1dGlscy5mZXRjaF91cmkodGluZm9pbC5jb25maWdfZGF0YSwgdXJpLCB0bXBkaXIsIHJldikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yIGFzIGU6CisgICAgICAgICAgICBjaGVja3N1bXMsIGZ0bXBkaXIgPSBzY3JpcHR1dGlscy5mZXRjaF91cmwodGluZm9pbCwgdXJpLCByZXYsIHRtcGRpciwgbG9nZ2VyLCBwcmVzZXJ2ZV90bXA9a2VlcF90ZW1wKQorICAgICAgICBleGNlcHQgc2NyaXB0dXRpbHMuRmV0Y2hVcmxGYWlsdXJlIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoZSkKIAorICAgICAgICBpZiBmdG1wZGlyIGFuZCBrZWVwX3RlbXA6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2ggdGVtcCBkaXJlY3RvcnkgaXMgJXMnICUgZnRtcGRpcikKKworICAgICAgICBtZDUgPSBjaGVja3N1bXNbJ21kNXN1bSddCisgICAgICAgIHNoYTI1NiA9IGNoZWNrc3Vtc1snc2hhMjU2c3VtJ10KKwogICAgICAgICB0bXBzcmN0cmVlID0gX2dldF9zcmN0cmVlKHRtcGRpcikKICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguYWJzcGF0aChzcmN0cmVlKQogCkBAIC0yNjksNyArMjkyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wc3JjdHJlZSkKIAotICAgIHJldHVybiAocmV2LCBtZDUsIHNoYTI1NikKKyAgICByZXR1cm4gKHJldiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCkKIAogZGVmIF9jcmVhdGVfbmV3X3JlY2lwZShuZXdwdiwgbWQ1LCBzaGEyNTYsIHNyY3Jldiwgc3JjYnJhbmNoLCB3b3Jrc3BhY2UsIHRpbmZvaWwsIHJkKToKICAgICAiIiJDcmVhdGVzIHRoZSBuZXcgcmVjaXBlIHVuZGVyIHdvcmtzcGFjZSIiIgpAQCAtMjc3LDcgKzMwMCwxMCBAQAogICAgIGJwbiA9IHJkLmdldFZhcignQlBOJykKICAgICBwYXRoID0gb3MucGF0aC5qb2luKHdvcmtzcGFjZSwgJ3JlY2lwZXMnLCBicG4pCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBhdGgpCi0gICAgY29waWVkLCBfID0gb2UucmVjaXBldXRpbHMuY29weV9yZWNpcGVfZmlsZXMocmQsIHBhdGgpCisgICAgY29waWVkLCBfID0gb2UucmVjaXBldXRpbHMuY29weV9yZWNpcGVfZmlsZXMocmQsIHBhdGgsIGFsbF92YXJpYW50cz1UcnVlKQorICAgIGlmIG5vdCBjb3BpZWQ6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignSW50ZXJuYWwgZXJyb3IgLSBubyBmaWxlcyB3ZXJlIGNvcGllZCBmb3IgcmVjaXBlICVzJyAlIGJwbikKKyAgICBsb2dnZXIuZGVidWcoJ0NvcGllZCAlcyB0byAlcycgJSAoY29waWVkLCBwYXRoKSkKIAogICAgIG9sZHB2ID0gcmQuZ2V0VmFyKCdQVicpCiAgICAgaWYgbm90IG5ld3B2OgpAQCAtMzI5LDYgKzM1NSwyOSBAQAogCiAgICAgcmV0dXJuIGZ1bGxwYXRoLCBjb3BpZWQKIAorCitkZWYgX2NoZWNrX2dpdF9jb25maWcoKToKKyAgICBkZWYgZ2V0Y29uZmlnKG5hbWUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWx1ZSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgY29uZmlnIC0tZ2xvYmFsICVzJyAlIG5hbWUpWzBdLnN0cmlwKCkKKyAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXhpdGNvZGUgPT0gMToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICB1c2VybmFtZSA9IGdldGNvbmZpZygndXNlci5uYW1lJykKKyAgICB1c2VyZW1haWwgPSBnZXRjb25maWcoJ3VzZXIuZW1haWwnKQorICAgIGNvbmZpZ2VyciA9IFtdCisgICAgaWYgbm90IHVzZXJuYW1lOgorICAgICAgICBjb25maWdlcnIuYXBwZW5kKCdQbGVhc2Ugc2V0IHlvdXIgbmFtZSB1c2luZzpcbiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUnKQorICAgIGlmIG5vdCB1c2VyZW1haWw6CisgICAgICAgIGNvbmZpZ2Vyci5hcHBlbmQoJ1BsZWFzZSBzZXQgeW91ciBlbWFpbCB1c2luZzpcbiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsJykKKyAgICBpZiBjb25maWdlcnI6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignWW91ciBnaXQgY29uZmlndXJhdGlvbiBpcyBpbmNvbXBsZXRlIHdoaWNoIHdpbGwgcHJldmVudCByZWJhc2VzIGZyb20gd29ya2luZzpcbicgKyAnXG4nLmpvaW4oY29uZmlnZXJyKSkKKworCiBkZWYgdXBncmFkZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAndXBncmFkZScgc3ViY29tbWFuZCIiIgogCkBAIC0zMzksNiArMzg4LDggQEAKICAgICBpZiBhcmdzLnNyY2JyYW5jaCBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIklmIHlvdSBzcGVjaWZ5IC0tc3JjYnJhbmNoLy1CIHRoZW4geW91IG11c3QgdXNlIC0tc3JjcmV2Ly1TIHRvIHNwZWNpZnkgdGhlIHJldmlzaW9uIiAlIGFyZ3MucmVjaXBlbmFtZSkKIAorICAgIF9jaGVja19naXRfY29uZmlnKCkKKwogICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIHRyeToKICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCkBAIC0zNjcsMTEgKzQxOCwxMSBAQAogCiAgICAgICAgIHJmID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXYxID0gc3RhbmRhcmQuX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIEZhbHNlLCAnZGV2dG9vbC1vcmlnJywgRmFsc2UsIHJkLCB0aW5mb2lsKQotICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYgPSBfZXh0cmFjdF9uZXdfc291cmNlKGFyZ3MudmVyc2lvbiwgc3JjdHJlZSwgYXJncy5ub19wYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnNyY3JldiwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAorICAgICAgICAgICAgcmV2MSA9IHN0YW5kYXJkLl9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBGYWxzZSwgJ2RldnRvb2wtb3JpZycsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2LCBhcmdzLnNyY2JyYW5jaCwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmZvaWwsIHJkKQotICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3JldiwgYXJncy5zcmNicmFuY2gsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgdGluZm9pbCwgcmQpCisgICAgICAgICAgICByZiwgY29waWVkID0gX2NyZWF0ZV9uZXdfcmVjaXBlKGFyZ3MudmVyc2lvbiwgbWQ1LCBzaGEyNTYsIGFyZ3Muc3JjcmV2LCBzcmNicmFuY2gsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgdGluZm9pbCwgcmQpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkNtZEVycm9yIGFzIGU6CiAgICAgICAgICAgICBfdXBncmFkZV9lcnJvcihlLCByZiwgc3JjdHJlZSkKICAgICAgICAgZXhjZXB0IERldnRvb2xFcnJvciBhcyBlOgpAQCAtMzgxLDYgKzQzMiw5IEBACiAgICAgICAgIGFmID0gX3dyaXRlX2FwcGVuZChyZiwgc3JjdHJlZSwgYXJncy5zYW1lX2RpciwgYXJncy5ub19zYW1lX2RpciwgcmV2MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZCwgY29uZmlnLndvcmtzcGFjZV9wYXRoLCByZCkKICAgICAgICAgc3RhbmRhcmQuX2FkZF9tZDUoY29uZmlnLCBwbiwgYWYpCisKKyAgICAgICAgdXBkYXRlX3VubG9ja2Vkc2lncyhiYXNlcGF0aCwgd29ya3NwYWNlLCBbcG5dLCBhcmdzLmZpeGVkX3NldHVwKQorCiAgICAgICAgIGxvZ2dlci5pbmZvKCdVcGdyYWRlZCBzb3VyY2UgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAgICAgICAgIGxvZ2dlci5pbmZvKCdOZXcgcmVjaXBlIGlzICVzJyAlIHJmKQogICAgIGZpbmFsbHk6CkBAIC00MDYsNCArNDYwLDQgQEAKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2FtZS1kaXInLCAnLXMnLCBoZWxwPSdCdWlsZCBpbiBzYW1lIGRpcmVjdG9yeSBhcyBzb3VyY2UnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1uby1zYW1lLWRpcicsIGhlbHA9J0ZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX3VwZ3JhZGUuc2V0X2RlZmF1bHRzKGZ1bmM9dXBncmFkZSkKKyAgICBwYXJzZXJfdXBncmFkZS5zZXRfZGVmYXVsdHMoZnVuYz11cGdyYWRlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQppbmRleCAwNDM3ZTY0Li5iNzQ1MTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQpAQCAtMzAsMTUgKzMwLDEzIEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKIAotCi1kZWYgZWRpdF9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKLSAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2VkaXQtcmVjaXBlJyBzdWJjb21tYW5kIiIiCitkZWYgX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmFueV9yZWNpcGU6CiAgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGNvbmZpZ19vbmx5PUZhbHNlLCBiYXNlcGF0aD1iYXNlcGF0aCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCiAgICAgICAgICAgICBpZiBub3QgcmQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkZhaWxlZCB0byBmaW5kIHNwZWNpZmllZCByZWNpcGUiKQogICAgICAgICAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKQEAgLTQ4LDggKzQ2LDE5IEBACiAgICAgICAgIGlmIG5vdCByZWNpcGVmaWxlOgogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgZmlsZSBmb3IgJXMgaXMgbm90IHVuZGVyIHRoZSB3b3Jrc3BhY2UiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCisgICAgcmV0dXJuIHJlY2lwZWZpbGUKIAotICAgIHJldHVybiBzY3JpcHR1dGlscy5ydW5fZWRpdG9yKHJlY2lwZWZpbGUpCisKK2RlZiBmaW5kX3JlY2lwZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgorICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnZmluZC1yZWNpcGUnIHN1YmNvbW1hbmQiIiIKKyAgICByZWNpcGVmaWxlID0gX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKQorICAgIHByaW50KHJlY2lwZWZpbGUpCisgICAgcmV0dXJuIDAKKworCitkZWYgZWRpdF9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKKyAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2VkaXQtcmVjaXBlJyBzdWJjb21tYW5kIiIiCisgICAgcmV0dXJuIHNjcmlwdHV0aWxzLnJ1bl9lZGl0b3IoX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKSwgbG9nZ2VyKQogCiAKIGRlZiBjb25maWd1cmVfaGVscChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgpAQCAtMjIwLDYgKzIyOSwxNCBAQAogICAgIHBhcnNlcl9lZGl0X3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tYW55LXJlY2lwZScsICctYScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VkaXQgYW55IHJlY2lwZSwgbm90IGp1c3Qgd2hlcmUgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuc2V0X2RlZmF1bHRzKGZ1bmM9ZWRpdF9yZWNpcGUpCiAKKyAgICAjIEZpbmQtcmVjaXBlCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5kLXJlY2lwZScsIGhlbHA9J0ZpbmQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdCeSBkZWZhdWx0LCB0aGlzIHdpbGwgZmluZCBhIHJlY2lwZSBmaWxlIGluIHlvdXIgd29ya3NwYWNlOyB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB0aGUgLWEvLS1hbnktcmVjaXBlIG9wdGlvbi4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nd29ya2luZycpCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J1JlY2lwZSB0byBmaW5kJykKKyAgICBwYXJzZXJfZmluZF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGaW5kIGFueSByZWNpcGUsIG5vdCBqdXN0IHdoZXJlIHRoZSByZWNpcGUgZmlsZSBpdHNlbGYgaXMgaW4gdGhlIHdvcmtzcGFjZScpCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLnNldF9kZWZhdWx0cyhmdW5jPWZpbmRfcmVjaXBlKQorCiAgICAgIyBOT1RFOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIHVzYWdlIHN0cmluZyBoZXJlIHNpbmNlIHRoZSBkZWZhdWx0CiAgICAgIyBnZXRzIHRoZSBvcmRlciB3cm9uZyAtIHJlY2lwZW5hbWUgbXVzdCBjb21lIGJlZm9yZSAtLWFyZwogICAgIHBhcnNlcl9jb25maWd1cmVfaGVscCA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignY29uZmlndXJlLWhlbHAnLCBoZWxwPSdHZXQgaGVscCBvbiBjb25maWd1cmUgc2NyaXB0IG9wdGlvbnMnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CmluZGV4IDRkZTUyZmMuLjViZjkzOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKQEAgLTEsNiArMSw2IEBACiAjIFJlY2lwZSBjcmVhdGlvbiB0b29sIC0gY3JlYXRlIGNvbW1hbmQgcGx1Z2luCiAjCi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0xNTYsMTAgKzE1NiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUmVjaXBlSGFuZGxlci5yZWNpcGViaW5tYXBbcHJvZ10gPSBwbgogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjaGVja2ZpbGVzKHBhdGgsIHNwZWNsaXN0LCByZWN1cnNpdmU9RmFsc2UpOgorICAgIGRlZiBjaGVja2ZpbGVzKHBhdGgsIHNwZWNsaXN0LCByZWN1cnNpdmU9RmFsc2UsIGV4Y2x1ZGVkaXJzPU5vbmUpOgogICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgaWYgcmVjdXJzaXZlOgotICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoLCB0b3Bkb3duPVRydWUpOgorICAgICAgICAgICAgICAgIGlmIGV4Y2x1ZGVkaXJzOgorICAgICAgICAgICAgICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlZGlyc10KICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGZvciBzcGVjIGluIHNwZWNsaXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZuLCBzcGVjKToKQEAgLTMzOSw5ICszNDEsMTQgQEAKICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgxKS5zdHJpcCgpLnJlcGxhY2UoJ18nLCAnLScpCiAgICAgICAgICAgICAgICAgcHYgPSByZXMuZ3JvdXAoMikuc3RyaXAoKS5yZXBsYWNlKCdfJywgJy4nKQogCi0gICAgICAgIGlmIG5vdCBwbiBhbmQgbm90IHB2IGFuZCBwYXJzZXJlcy5zY2hlbWUgbm90IGluIFsnZ2l0JywgJ2dpdHNtJywgJ3N2bicsICdoZyddOgotICAgICAgICAgICAgc3JjZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUocGFyc2VyZXMucGF0aC5yc3RyaXAoJy8nKSkKLSAgICAgICAgICAgIHBuLCBwdiA9IGRldGVybWluZV9mcm9tX2ZpbGVuYW1lKHNyY2ZpbGUpCisgICAgICAgIGlmIG5vdCBwbiBhbmQgbm90IHB2OgorICAgICAgICAgICAgaWYgcGFyc2VyZXMuc2NoZW1lIG5vdCBpbiBbJ2dpdCcsICdnaXRzbScsICdzdm4nLCAnaGcnXToKKyAgICAgICAgICAgICAgICBzcmNmaWxlID0gb3MucGF0aC5iYXNlbmFtZShwYXJzZXJlcy5wYXRoLnJzdHJpcCgnLycpKQorICAgICAgICAgICAgICAgIHBuLCBwdiA9IGRldGVybWluZV9mcm9tX2ZpbGVuYW1lKHNyY2ZpbGUpCisgICAgICAgICAgICBlbGlmIHBhcnNlcmVzLnNjaGVtZSBpbiBbJ2dpdCcsICdnaXRzbSddOgorICAgICAgICAgICAgICAgIHBuID0gb3MucGF0aC5iYXNlbmFtZShwYXJzZXJlcy5wYXRoLnJzdHJpcCgnLycpKS5sb3dlcigpLnJlcGxhY2UoJ18nLCAnLScpCisgICAgICAgICAgICAgICAgaWYgcG4uZW5kc3dpdGgoJy5naXQnKToKKyAgICAgICAgICAgICAgICAgICAgcG4gPSBwbls6LTRdCiAKICAgICBsb2dnZXIuZGVidWcoJ0RldGVybWluZWQgZnJvbSBzb3VyY2UgVVJMOiBuYW1lID0gIiVzIiwgdmVyc2lvbiA9ICIlcyInICUgKHBuLCBwdikpCiAgICAgcmV0dXJuIChwbiwgcHYpCkBAIC00MTIsMTEgKzQxOSwxNSBAQAogICAgICAgICBwa2dhcmNoID0gIiR7TUFDSElORV9BUkNIfSIKIAogICAgIGV4dHJhdmFsdWVzID0ge30KLSAgICBjaGVja3N1bXMgPSAoTm9uZSwgTm9uZSkKKyAgICBjaGVja3N1bXMgPSB7fQogICAgIHRlbXBzcmMgPSAnJwogICAgIHNvdXJjZSA9IGFyZ3Muc291cmNlCiAgICAgc3Jjc3ViZGlyID0gJycKICAgICBzcmNyZXYgPSAnJHtBVVRPUkVWfScKKyAgICBzcmNicmFuY2ggPSAnJworICAgIHNjaGVtZSA9ICcnCisgICAgc3RvcmVUYWdOYW1lID0gJycKKyAgICBwdl9zcmNwdiA9IEZhbHNlCiAKICAgICBpZiBvcy5wYXRoLmlzZmlsZShzb3VyY2UpOgogICAgICAgICBzb3VyY2UgPSAnZmlsZTovLyVzJyAlIG9zLnBhdGguYWJzcGF0aChzb3VyY2UpCkBAIC00MzIsMjQgKzQ0Myw2NSBAQAogICAgICAgICByZXZfcmUgPSByZS5jb21waWxlKCc7cmV2PShbXjtdKyknKQogICAgICAgICByZXMgPSByZXZfcmUuc2VhcmNoKHNyY3VyaSkKICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdyZXY9IHBhcmFtZXRlciBhbmQgLVMvLS1zcmNyZXYgb3B0aW9uIGNhbm5vdCBib3RoIGJlIHNwZWNpZmllZCAtIHVzZSBvbmUgb3IgdGhlIG90aGVyJykKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgaWYgYXJncy5hdXRvcmV2OgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigncmV2PSBwYXJhbWV0ZXIgYW5kIC1hLy0tYXV0b3JldiBvcHRpb24gY2Fubm90IGJvdGggYmUgc3BlY2lmaWVkIC0gdXNlIG9uZSBvciB0aGUgb3RoZXInKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgICAgICBzcmNyZXYgPSByZXMuZ3JvdXAoMSkKICAgICAgICAgICAgIHNyY3VyaSA9IHJldl9yZS5zdWIoJycsIHNyY3VyaSkKLSAgICAgICAgdGVtcHNyYyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScpCi0gICAgICAgIHNyY3RyZWUgPSB0ZW1wc3JjCi0gICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgaWYgZmV0Y2h1cmkuc3RhcnRzd2l0aCgnbnBtOi8vJyk6Ci0gICAgICAgICAgICAjIENoZWNrIGlmIG5wbSBpcyBhdmFpbGFibGUKLSAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBjaGVja19ucG0odGluZm9pbCwgYXJncy5kZXZ0b29sKQotICAgICAgICAgICAgZC5wcmVwZW5kVmFyKCdQQVRIJywgJyVzOicgJSBucG1fYmluZGlyKQotICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgJXMuLi4nICUgc3JjdXJpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGVja3N1bXMgPSBzY3JpcHR1dGlscy5mZXRjaF91cmkoZCwgZmV0Y2h1cmksIHNyY3RyZWUsIHNyY3JldikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGUpLnJzdHJpcCgpKQorICAgICAgICBlbGlmIGFyZ3Muc3JjcmV2OgorICAgICAgICAgICAgc3JjcmV2ID0gYXJncy5zcmNyZXYKKworICAgICAgICAjIENoZWNrIHdoZXRoZXIgdXNlcnMgcHJvdmlkZXMgYW55IGJyYW5jaCBpbmZvIGluIGZldGNodXJpLgorICAgICAgICAjIElmIHRydWUsIHdlIHdpbGwgc2tpcCBhbGwgYnJhbmNoIGNoZWNraW5nIHByb2Nlc3MgdG8gaG9ub3IgYWxsIHVzZXIncyBpbnB1dC4KKyAgICAgICAgc2NoZW1lLCBuZXR3b3JrLCBwYXRoLCB1c2VyLCBwYXNzd2QsIHBhcmFtcyA9IGJiLmZldGNoMi5kZWNvZGV1cmwoZmV0Y2h1cmkpCisgICAgICAgIHNyY2JyYW5jaCA9IHBhcmFtcy5nZXQoJ2JyYW5jaCcpCisgICAgICAgIGlmIGFyZ3Muc3JjYnJhbmNoOgorICAgICAgICAgICAgaWYgc3JjYnJhbmNoOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignYnJhbmNoPSBwYXJhbWV0ZXIgYW5kIC1CLy0tc3JjYnJhbmNoIG9wdGlvbiBjYW5ub3QgYm90aCBiZSBzcGVjaWZpZWQgLSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIHNyY2JyYW5jaCA9IGFyZ3Muc3JjYnJhbmNoCisgICAgICAgIG5vYnJhbmNoID0gcGFyYW1zLmdldCgnbm9icmFuY2gnKQorICAgICAgICBpZiBub2JyYW5jaCBhbmQgc3JjYnJhbmNoOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdub2JyYW5jaD0gY2Fubm90IGJlIHVzZWQgaWYgeW91IHNwZWNpZnkgYSBicmFuY2gnKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgdGFnID0gcGFyYW1zLmdldCgndGFnJykKKyAgICAgICAgaWYgbm90IHNyY2JyYW5jaCBhbmQgbm90IG5vYnJhbmNoIGFuZCBzcmNyZXYgIT0gJyR7QVVUT1JFVn0nOgorICAgICAgICAgICAgIyBBcHBlbmQgbm9icmFuY2g9MSBpbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAjIDEuIFVzZXIgZGlkIG5vdCBzZXQgJ2JyYW5jaD0nIGluIHNyY3VyaSwgYW5kCisgICAgICAgICAgICAjIDIuIFVzZXIgZGlkIG5vdCBzZXQgJ25vYnJhbmNoPTEnIGluIHNyY3VyaSwgYW5kCisgICAgICAgICAgICAjIDMuIFNvdXJjZSByZXZpc2lvbiBpcyBub3QgJyR7QVVUT1JFVn0nCisgICAgICAgICAgICBwYXJhbXNbJ25vYnJhbmNoJ10gPSAnMScKKyAgICAgICAgaWYgdGFnOgorICAgICAgICAgICAgIyBLZWVwIGEgY29weSBvZiB0YWcgYW5kIGFwcGVuZCBub2JyYW5jaD0xIHRoZW4gcmVtb3ZlIHRhZyBmcm9tIFVSTC4KKyAgICAgICAgICAgICMgQml0YmFrZSBmZXRjaGVyIHVuYWJsZSB0byBmZXRjaCB3aGVuIHtBVVRPUkVWfSBhbmQgdGFnIGlzIHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgc3RvcmVUYWdOYW1lID0gcGFyYW1zWyd0YWcnXQorICAgICAgICAgICAgcGFyYW1zWydub2JyYW5jaCddID0gJzEnCisgICAgICAgICAgICBkZWwgcGFyYW1zWyd0YWcnXQorICAgICAgICBpZiBzY2hlbWUgPT0gJ25wbSc6CisgICAgICAgICAgICBwYXJhbXNbJ25vdmVyaWZ5J10gPSAnMScKKyAgICAgICAgZmV0Y2h1cmkgPSBiYi5mZXRjaDIuZW5jb2RldXJsKChzY2hlbWUsIG5ldHdvcmssIHBhdGgsIHVzZXIsIHBhc3N3ZCwgcGFyYW1zKSkKKworICAgICAgICB0bXBwYXJlbnQgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkFTRV9XT1JLRElSJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRtcHBhcmVudCkKKyAgICAgICAgdGVtcHNyYyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScsIGRpcj10bXBwYXJlbnQpCisgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmpvaW4odGVtcHNyYywgJ3NvdXJjZScpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2hlY2tzdW1zLCBmdG1wZGlyID0gc2NyaXB0dXRpbHMuZmV0Y2hfdXJsKHRpbmZvaWwsIGZldGNodXJpLCBzcmNyZXYsIHNyY3RyZWUsIGxvZ2dlciwgcHJlc2VydmVfdG1wPWFyZ3Mua2VlcF90ZW1wKQorICAgICAgICBleGNlcHQgc2NyaXB0dXRpbHMuRmV0Y2hVcmxGYWlsdXJlIGFzIGU6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGUpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBmdG1wZGlyIGFuZCBhcmdzLmtlZXBfdGVtcDoKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdGZXRjaCB0ZW1wIGRpcmVjdG9yeSBpcyAlcycgJSBmdG1wZGlyKQorCiAgICAgICAgIGRpcmxpc3QgPSBvcy5saXN0ZGlyKHNyY3RyZWUpCi0gICAgICAgIGlmICdnaXQuaW5kaXJlY3Rpb25zeW1saW5rJyBpbiBkaXJsaXN0OgotICAgICAgICAgICAgZGlybGlzdC5yZW1vdmUoJ2dpdC5pbmRpcmVjdGlvbnN5bWxpbmsnKQorICAgICAgICBmaWx0ZXJvdXQgPSBbJ2dpdC5pbmRpcmVjdGlvbnN5bWxpbmsnXQorICAgICAgICBkaXJsaXN0ID0gW3ggZm9yIHggaW4gZGlybGlzdCBpZiB4IG5vdCBpbiBmaWx0ZXJvdXRdCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnRGlyZWN0b3J5IGxpc3RpbmcgKGV4Y2x1ZGluZyBmaWx0ZXJlZCBvdXQpOlxuICAlcycgJSAnXG4gICcuam9pbihkaXJsaXN0KSkKICAgICAgICAgaWYgbGVuKGRpcmxpc3QpID09IDE6CiAgICAgICAgICAgICBzaW5nbGVpdGVtID0gb3MucGF0aC5qb2luKHNyY3RyZWUsIGRpcmxpc3RbMF0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpbmdsZWl0ZW0pOgpAQCAtNDU3LDMwICs1MDksNzQgQEAKICAgICAgICAgICAgICAgICBzcmNzdWJkaXIgPSBkaXJsaXN0WzBdCiAgICAgICAgICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBzcmNzdWJkaXIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzaW5nbGVpdGVtLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgaWYgJzxodG1sJyBpbiBmLnJlYWQoMTAwKS5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdGZXRjaGluZyAiJXMiIHJldHVybmVkIGEgc2luZ2xlIEhUTUwgcGFnZSAtIGNoZWNrIHRoZSBVUkwgaXMgY29ycmVjdCBhbmQgZnVuY3Rpb25hbCcgJSBmZXRjaHVyaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICAgICAgY2hlY2tfc2luZ2xlX2ZpbGUoZGlybGlzdFswXSwgZmV0Y2h1cmkpCisgICAgICAgIGVsaWYgbGVuKGRpcmxpc3QpID09IDA6CisgICAgICAgICAgICBpZiAnLycgaW4gZmV0Y2h1cmk6CisgICAgICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4odGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0RMX0RJUicpLCBmZXRjaHVyaS5zcGxpdCgnLycpWy0xXSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrX3NpbmdsZV9maWxlKGZuLCBmZXRjaHVyaSkKKyAgICAgICAgICAgICMgSWYgd2UndmUgZ290IHRvIGhlcmUgdGhlbiB0aGVyZSdzIG5vIHNvdXJjZSBzbyB3ZSBtaWdodCBhcyB3ZWxsIGdpdmUgdXAKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcignVVJMICVzIHJlc3VsdGVkIGluIGFuIGVtcHR5IHNvdXJjZSB0cmVlJyAlIGZldGNodXJpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICAjIFdlIG5lZWQgdGhpcyBjaGVja2luZyBtZWNoYW5pc20gdG8gaW1wcm92ZSB0aGUgcmVjaXBlIGNyZWF0ZWQgYnkgcmVjaXBldG9vbCBhbmQgZGV2dG9vbAorICAgICAgICAjIGlzIGFibGUgdG8gcGFyc2UgYW5kIGJ1aWxkIGJ5IGJpdGJha2UuCisgICAgICAgICMgSWYgdGhlcmUgaXMgbm8gaW5wdXQgZm9yIGJyYW5jaCBuYW1lLCB0aGVuIGNoZWNrIGZvciBicmFuY2ggbmFtZSB3aXRoIFNSQ1JFViBwcm92aWRlZC4KKyAgICAgICAgaWYgbm90IHNyY2JyYW5jaCBhbmQgbm90IG5vYnJhbmNoIGFuZCBzcmNyZXYgYW5kIChzcmNyZXYgIT0gJyR7QVVUT1JFVn0nKSBhbmQgc2NoZW1lIGluIFsnZ2l0JywgJ2dpdHNtJ106CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY21kID0gJ2dpdCBicmFuY2ggLXIgLS1jb250YWlucycKKyAgICAgICAgICAgICAgICBjaGVja19icmFuY2gsIGNoZWNrX2JyYW5jaF9lcnIgPSBiYi5wcm9jZXNzLnJ1bignJXMgJXMnICUgKGNtZCwgc3JjcmV2KSwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihlcnIpKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3RyaXAoKSBmb3IgeCBpbiBjaGVja19icmFuY2guc3BsaXRsaW5lcygpXQorICAgICAgICAgICAgIyBSZW1vdmUgSEVBRCByZWZlcmVuY2UgcG9pbnQgYW5kIGRyb3AgcmVtb3RlIHByZWZpeAorICAgICAgICAgICAgZ2V0X2JyYW5jaCA9IFt4LnNwbGl0KCcvJywgMSlbMV0gZm9yIHggaW4gZ2V0X2JyYW5jaCBpZiBub3QgeC5zdGFydHN3aXRoKCdvcmlnaW4vSEVBRCcpXQorICAgICAgICAgICAgaWYgJ21hc3RlcicgaW4gZ2V0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAjIElmIGl0IGlzIG1hc3Rlciwgd2UgZG8gbm90IG5lZWQgdG8gYXBwZW5kICdicmFuY2g9bWFzdGVyJyBhcyB0aGlzIGlzIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgIyBFdmVuIHdpdGggdGhlIGNhc2Ugd2hlcmUgZ2V0X2JyYW5jaCBoYXMgbXVsdGlwbGUgb2JqZWN0cywgaWYgJ21hc3RlcicgaXMgb25lCisgICAgICAgICAgICAgICAgIyBvZiB0aGVtLCB3ZSBzaG91bGQgZGVmYXVsdCB0YWtlIGZyb20gJ21hc3RlcicKKyAgICAgICAgICAgICAgICBzcmNicmFuY2ggPSAnJworICAgICAgICAgICAgZWxpZiBsZW4oZ2V0X2JyYW5jaCkgPT0gMToKKyAgICAgICAgICAgICAgICAjIElmICdtYXN0ZXInIGlzbid0IGluIGdldF9icmFuY2ggYW5kIGdldF9icmFuY2ggY29udGFpbnMgb25seSBPTkUgb2JqZWN0LCB0aGVuIHN0b3JlIHJlc3VsdCBpbnRvICdzcmNicmFuY2gnCisgICAgICAgICAgICAgICAgc3JjYnJhbmNoID0gZ2V0X2JyYW5jaFswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIElmIGdldF9icmFuY2ggY29udGFpbnMgbW9yZSB0aGFuIG9uZSBvYmplY3RzLCB0aGVuIGRpc3BsYXkgZXJyb3IgYW5kIGV4aXQuCisgICAgICAgICAgICAgICAgbWJyY2ggPSAnXG4gICcgKyAnXG4gICcuam9pbihnZXRfYnJhbmNoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignUmV2aXNpb24gJXMgd2FzIGZvdW5kIG9uIG11bHRpcGxlIGJyYW5jaGVzOiAlc1xuUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3QgYnJhbmNoIHdpdGggLUIvLS1zcmNicmFuY2gnICUgKHNyY3JldiwgbWJyY2gpKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBTaW5jZSB3ZSBtaWdodCBoYXZlIGEgdmFsdWUgaW4gc3JjYnJhbmNoLCB3ZSBuZWVkIHRvCisgICAgICAgICMgcmVjb250cnVjdCB0aGUgc3JjdXJpIHRvIGluY2x1ZGUgJ2JyYW5jaCcgaW4gcGFyYW1zLgorICAgICAgICBzY2hlbWUsIG5ldHdvcmssIHBhdGgsIHVzZXIsIHBhc3N3ZCwgcGFyYW1zID0gYmIuZmV0Y2gyLmRlY29kZXVybChzcmN1cmkpCisgICAgICAgIGlmIHNyY2JyYW5jaDoKKyAgICAgICAgICAgIHBhcmFtc1snYnJhbmNoJ10gPSBzcmNicmFuY2gKKworICAgICAgICBpZiBzdG9yZVRhZ05hbWUgYW5kIHNjaGVtZSBpbiBbJ2dpdCcsICdnaXRzbSddOgorICAgICAgICAgICAgIyBDaGVjayBzcmNyZXYgdXNpbmcgdGFnIGFuZCBjaGVjayB2YWxpZGl0eSBvZiB0aGUgdGFnCisgICAgICAgICAgICBjbWQgPSAoJ2dpdCByZXYtcGFyc2UgLS12ZXJpZnkgJXMnICUgKHN0b3JlVGFnTmFtZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2hlY2tfdGFnLCBjaGVja190YWdfZXJyID0gYmIucHJvY2Vzcy5ydW4oJyVzJyAlIGNtZCwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICAgICAgc3JjcmV2ID0gY2hlY2tfdGFnLnNwbGl0KClbMF0KKyAgICAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGVycikpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJQb3NzaWJseSB3cm9uZyB0YWcgbmFtZSBpcyBwcm92aWRlZCIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgICMgRHJvcCB0YWcgZnJvbSBzcmN1cmkgYXMgaXQgd2lsbCBoYXZlIGNvbmZsaWN0cyB3aXRoIFNSQ1JFViBkdXJpbmcgcmVjaXBlIHBhcnNlLgorICAgICAgICAgICAgZGVsIHBhcmFtc1sndGFnJ10KKyAgICAgICAgc3JjdXJpID0gYmIuZmV0Y2gyLmVuY29kZXVybCgoc2NoZW1lLCBuZXR3b3JrLCBwYXRoLCB1c2VyLCBwYXNzd2QsIHBhcmFtcykpCisKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNyY3RyZWUsICcuZ2l0bW9kdWxlcycpKSBhbmQgc3JjdXJpLnN0YXJ0c3dpdGgoJ2dpdDovLycpOgogICAgICAgICAgICAgc3JjdXJpID0gJ2dpdHNtOi8vJyArIHNyY3VyaVs2Ol0KICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdGZXRjaGluZyBzdWJtb2R1bGVzLi4uJykKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUnLCBjd2Q9c3JjdHJlZSkKIAogICAgICAgICBpZiBpc19wYWNrYWdlKGZldGNodXJpKToKLSAgICAgICAgICAgIHRtcGZkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbC0nKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBrZ2ZpbGUgPSBOb25lCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKKyAgICAgICAgICAgIHBrZ2ZpbGUgPSBiYi5mZXRjaDIubG9jYWxwYXRoKGZldGNodXJpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBpZiBwa2dmaWxlOgorICAgICAgICAgICAgICAgIHRtcGZkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbC0nKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZmlsZXVyaSA9IGZldGNodXJpICsgJzt1bnBhY2s9MCcKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0dXRpbHMuZmV0Y2hfdXJpKHRpbmZvaWwuY29uZmlnX2RhdGEsIGZpbGV1cmksIHRtcGZkaXIsIHNyY3JldikKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsodG1wZmRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NlY29uZCBmZXRjaCB0byBnZXQgbWV0YWRhdGEgZmFpbGVkOiAlcycgJSBzdHIoZSkucnN0cmlwKCkpCi0KLSAgICAgICAgICAgICAgICBpZiBwa2dmaWxlOgogICAgICAgICAgICAgICAgICAgICBpZiBwa2dmaWxlLmVuZHN3aXRoKCgnLmRlYicsICcuaXBrJykpOgogICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfID0gYmIucHJvY2Vzcy5ydW4oJ2FyIHggJXMnICUgcGtnZmlsZSwgY3dkPXRtcGZkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8gPSBiYi5wcm9jZXNzLnJ1bigndGFyIHhmIGNvbnRyb2wudGFyLmd6JywgY3dkPXRtcGZkaXIpCkBAIC00OTAsOCArNTg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdycG0gLXFwIC0teG1sICVzID4gcGtnaW5mby54bWwnICUgcGtnZmlsZSwgY3dkPXRtcGZkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjb252ZXJ0X3JwbV94bWwob3MucGF0aC5qb2luKHRtcGZkaXIsICdwa2dpbmZvLnhtbCcpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXMudXBkYXRlKHZhbHVlcykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBmZGlyKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZmRpcikKICAgICBlbHNlOgogICAgICAgICAjIEFzc3VtZSB3ZSdyZSBwb2ludGluZyB0byBhbiBleGlzdGluZyBzb3VyY2UgdHJlZQogICAgICAgICBpZiBhcmdzLmV4dHJhY3RfdG86CkBAIC01MTksOSArNjE1LDkgQEAKIAogICAgIGlmIGFyZ3Muc3JjX3N1YmRpcjoKICAgICAgICAgc3Jjc3ViZGlyID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgYXJncy5zcmNfc3ViZGlyKQotICAgICAgICBzcmN0cmVlX3VzZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBhcmdzLnNyY19zdWJkaXIpCisgICAgICAgIHNyY3RyZWVfdXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmN0cmVlLCBhcmdzLnNyY19zdWJkaXIpKQogICAgIGVsc2U6Ci0gICAgICAgIHNyY3RyZWVfdXNlID0gc3JjdHJlZQorICAgICAgICBzcmN0cmVlX3VzZSA9IG9zLnBhdGguYWJzcGF0aChzcmN0cmVlKQogCiAgICAgaWYgYXJncy5vdXRmaWxlIGFuZCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0ZmlsZSk6CiAgICAgICAgIG91dGZpbGUgPSBOb25lCkBAIC01NDMsOSArNjM5LDEwIEBACiAgICAgIyBXZSBuZWVkIGEgYmxhbmsgbGluZSBoZXJlIHNvIHRoYXQgcGF0Y2hfcmVjaXBlX2xpbmVzIGNhbiByZXdpbmQgYmVmb3JlIHRoZSBMSUNFTlNFIGNvbW1lbnRzCiAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnJykKIAotICAgIGhhbmRsZWQgPSBbXQotICAgIGxpY3ZhbHVlcyA9IGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZV91c2UsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIHRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgIyBXZSdsbCBjb21lIGJhY2sgYW5kIHJlcGxhY2UgdGhpcyBsYXRlciBpbiBoYW5kbGVfbGljZW5zZV92YXJzKCkKKyAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjI0xJQ0VOU0VfUExBQ0VIT0xERVIjIycpCiAKKyAgICBoYW5kbGVkID0gW10KICAgICBjbGFzc2VzID0gW10KIAogICAgICMgRklYTUUgVGhpcyBpcyBraW5kIG9mIGEgaGFjaywgd2UgcHJvYmFibHkgb3VnaHQgdG8gYmUgdXNpbmcgYml0YmFrZSB0byBkbyB0aGlzCkBAIC01ODEsMzAgKzY3OCwzMSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJlYWxwdiA9IE5vbmUKIAotICAgIGlmIHNyY3VyaSBhbmQgbm90IHJlYWxwdiBvciBub3QgcG46Ci0gICAgICAgIG5hbWVfcG4sIG5hbWVfcHYgPSBkZXRlcm1pbmVfZnJvbV91cmwoc3JjdXJpKQotICAgICAgICBpZiBuYW1lX3BuIGFuZCBub3QgcG46Ci0gICAgICAgICAgICBwbiA9IG5hbWVfcG4KLSAgICAgICAgaWYgbmFtZV9wdiBhbmQgbm90IHJlYWxwdjoKLSAgICAgICAgICAgIHJlYWxwdiA9IG5hbWVfcHYKLQogICAgIGlmIG5vdCBzcmN1cmk6CiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTm8gaW5mb3JtYXRpb24gZm9yIFNSQ19VUkkgeWV0IChvbmx5IGFuIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBzcGVjaWZpZWQpJykKICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNfVVJJID0gIiVzIicgJSBzcmN1cmkpCi0gICAgKG1kNXZhbHVlLCBzaGEyNTZ2YWx1ZSkgPSBjaGVja3N1bXMKLSAgICBpZiBtZDV2YWx1ZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnU1JDX1VSSVttZDVzdW1dID0gIiVzIicgJSBtZDV2YWx1ZSkKLSAgICBpZiBzaGEyNTZ2YWx1ZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnU1JDX1VSSVtzaGEyNTZzdW1dID0gIiVzIicgJSBzaGEyNTZ2YWx1ZSkKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzb3J0ZWQoY2hlY2tzdW1zLml0ZW1zKCkpOgorICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNfVVJJWyVzXSA9ICIlcyInICUgKGtleSwgdmFsdWUpKQogICAgIGlmIHNyY3VyaSBhbmQgc3VwcG9ydHNfc3JjcmV2KHNyY3VyaSk6CiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJycpCiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTW9kaWZ5IHRoZXNlIGFzIGRlc2lyZWQnKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdQViA9ICIlcytnaXQke1NSQ1BWfSInICUgKHJlYWxwdiBvciAnMS4wJykpCisgICAgICAgICMgTm90ZTogd2UgaGF2ZSBjb2RlIHRvIHJlcGxhY2UgcmVhbHB2IGZ1cnRoZXIgZG93biBpZiBpdCBnZXRzIHNldCB0byBzb21lIG90aGVyIHZhbHVlCisgICAgICAgIHNjaGVtZSwgXywgXywgXywgXywgXyA9IGJiLmZldGNoMi5kZWNvZGV1cmwoc3JjdXJpKQorICAgICAgICBpZiBzY2hlbWUgaW4gWydnaXQnLCAnZ2l0c20nXToKKyAgICAgICAgICAgIHNyY3B2cHJlZml4ID0gJ2dpdCcKKyAgICAgICAgZWxpZiBzY2hlbWUgPT0gJ3N2bic6CisgICAgICAgICAgICBzcmNwdnByZWZpeCA9ICdzdm5yJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjcHZwcmVmaXggPSBzY2hlbWUKKyAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnUFYgPSAiJXMrJXMke1NSQ1BWfSInICUgKHJlYWxwdiBvciAnMS4wJywgc3JjcHZwcmVmaXgpKQorICAgICAgICBwdl9zcmNwdiA9IFRydWUKICAgICAgICAgaWYgbm90IGFyZ3MuYXV0b3JldiBhbmQgc3JjcmV2ID09ICcke0FVVE9SRVZ9JzoKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzcmN0cmVlLCAnLmdpdCcpKToKICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgIHNyY3JldiA9IHN0ZG91dC5yc3RyaXAoKQogICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNSRVYgPSAiJXMiJyAlIHNyY3JldikKKyAgICBpZiBhcmdzLnByb3ZpZGVzOgorICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdQUk9WSURFUyA9ICIlcyInICUgYXJncy5wcm92aWRlcykKICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcnKQogCiAgICAgaWYgc3Jjc3ViZGlyIGFuZCBub3QgYXJncy5iaW5hcnk6CkBAIC02NzcsNiArNzc1LDE1IEBACiAgICAgICAgICAgICBpZiAnXycgaW4gcG46CiAgICAgICAgICAgICAgICAgcG4gPSBwbi5yZXBsYWNlKCdfJywgJy0nKQogCisgICAgaWYgc3JjdXJpIGFuZCBub3QgcmVhbHB2IG9yIG5vdCBwbjoKKyAgICAgICAgbmFtZV9wbiwgbmFtZV9wdiA9IGRldGVybWluZV9mcm9tX3VybChzcmN1cmkpCisgICAgICAgIGlmIG5hbWVfcG4gYW5kIG5vdCBwbjoKKyAgICAgICAgICAgIHBuID0gbmFtZV9wbgorICAgICAgICBpZiBuYW1lX3B2IGFuZCBub3QgcmVhbHB2OgorICAgICAgICAgICAgcmVhbHB2ID0gbmFtZV9wdgorCisgICAgbGljdmFsdWVzID0gaGFuZGxlX2xpY2Vuc2VfdmFycyhzcmN0cmVlX3VzZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgdGluZm9pbC5jb25maWdfZGF0YSkKKwogICAgIGlmIG5vdCBvdXRmaWxlOgogICAgICAgICBpZiBub3QgcG46CiAgICAgICAgICAgICBsb2dfZXJyb3JfY29uZCgnVW5hYmxlIHRvIGRldGVybWluZSBzaG9ydCBwcm9ncmFtIG5hbWUgZnJvbSBzb3VyY2UgdHJlZSAtIHBsZWFzZSBzcGVjaWZ5IG5hbWUgd2l0aCAtTi8tLW5hbWUgb3Igb3V0cHV0IGZpbGUgbmFtZSB3aXRoIC1vLy0tb3V0ZmlsZScsIGFyZ3MuZGV2dG9vbCkKQEAgLTcyNiwxMCArODMzLDExIEBACiAgICAgICAgICAgICAgICAgc2tpcGJsYW5rID0gVHJ1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdTUkNfVVJJID0gJyk6Ci0gICAgICAgICAgICBpZiByZWFscHY6CisgICAgICAgICAgICBpZiByZWFscHYgYW5kIG5vdCBwdl9zcmNwdjoKICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKHJlYWxwdiwgJyR7UFZ9JykKICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BWID0gJyk6CiAgICAgICAgICAgICBpZiByZWFscHY6CisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBQViB2YWx1ZQogICAgICAgICAgICAgICAgIGxpbmUgPSByZS5zdWIoJyJbXitdKlwrJywgJyIlcysnICUgcmVhbHB2LCBsaW5lKQogICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKGxpbmUpCiAKQEAgLTc2OCw5ICs4NzYsNiBAQAogICAgIG91dGxpbmVzLmV4dGVuZChsaW5lc19hZnRlcikKIAogICAgIGlmIGV4dHJhdmFsdWVzOgotICAgICAgICBpZiAnTElDRU5TRScgaW4gZXh0cmF2YWx1ZXMgYW5kIG5vdCBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAjIERvbid0IGJsb3cgYXdheSAnQ0xPU0VEJyB2YWx1ZSB0aGF0IGNvbW1lbnRzIHNheSB3ZSBzZXQKLSAgICAgICAgICAgIGRlbCBleHRyYXZhbHVlc1snTElDRU5TRSddCiAgICAgICAgIF8sIG91dGxpbmVzID0gb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlX2xpbmVzKG91dGxpbmVzLCBleHRyYXZhbHVlcywgdHJhaWxpbmdfbmV3bGluZT1GYWxzZSkKIAogICAgIGlmIGFyZ3MuZXh0cmFjdF90bzoKQEAgLTgwNyw1NCArOTEyLDEwMSBAQAogCiAgICAgcmV0dXJuIDAKIAorZGVmIGNoZWNrX3NpbmdsZV9maWxlKGZuLCBmZXRjaHVyaSk6CisgICAgIiIiRGV0ZXJtaW5lIGlmIGEgc2luZ2xlIGRvd25sb2FkZWQgZmlsZSBpcyBzb21ldGhpbmcgd2UgY2FuJ3QgaGFuZGxlIiIiCisgICAgd2l0aCBvcGVuKGZuLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKKyAgICAgICAgaWYgJzxodG1sJyBpbiBmLnJlYWQoMTAwKS5sb3dlcigpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdGZXRjaGluZyAiJXMiIHJldHVybmVkIGEgc2luZ2xlIEhUTUwgcGFnZSAtIGNoZWNrIHRoZSBVUkwgaXMgY29ycmVjdCBhbmQgZnVuY3Rpb25hbCcgJSBmZXRjaHVyaSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKK2RlZiBzcGxpdF92YWx1ZSh2YWx1ZSk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdmFsdWUKKwogZGVmIGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCk6CisgICAgbGljaGFuZGxlZCA9IFt4IGZvciB4IGluIGhhbmRsZWQgaWYgeFswXSA9PSAnbGljZW5zZSddCisgICAgaWYgbGljaGFuZGxlZDoKKyAgICAgICAgIyBTb21lb25lIGVsc2UgaGFzIGFscmVhZHkgaGFuZGxlZCB0aGUgbGljZW5zZSB2YXJzLCBqdXN0IHJldHVybiB0aGVpciB2YWx1ZQorICAgICAgICByZXR1cm4gbGljaGFuZGxlZFswXVsxXQorCiAgICAgbGljdmFsdWVzID0gZ3Vlc3NfbGljZW5zZShzcmN0cmVlLCBkKQorICAgIGxpY2Vuc2VzID0gW10KICAgICBsaWNfZmlsZXNfY2hrc3VtID0gW10KICAgICBsaWNfdW5rbm93biA9IFtdCisgICAgbGluZXMgPSBbXQogICAgIGlmIGxpY3ZhbHVlczoKLSAgICAgICAgbGljZW5zZXMgPSBbXQogICAgICAgICBmb3IgbGljdmFsdWUgaW4gbGljdmFsdWVzOgogICAgICAgICAgICAgaWYgbm90IGxpY3ZhbHVlWzBdIGluIGxpY2Vuc2VzOgogICAgICAgICAgICAgICAgIGxpY2Vuc2VzLmFwcGVuZChsaWN2YWx1ZVswXSkKICAgICAgICAgICAgIGxpY19maWxlc19jaGtzdW0uYXBwZW5kKCdmaWxlOi8vJXM7bWQ1PSVzJyAlIChsaWN2YWx1ZVsxXSwgbGljdmFsdWVbMl0pKQogICAgICAgICAgICAgaWYgbGljdmFsdWVbMF0gPT0gJ1Vua25vd24nOgogICAgICAgICAgICAgICAgIGxpY191bmtub3duLmFwcGVuZChsaWN2YWx1ZVsxXSkKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBXQVJOSU5HOiB0aGUgZm9sbG93aW5nIExJQ0VOU0UgYW5kIExJQ19GSUxFU19DSEtTVU0gdmFsdWVzIGFyZSBiZXN0IGd1ZXNzZXMgLSBpdCBpcycpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgeW91ciByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wbGV0ZSBhbmQgY29ycmVjdC4nKQotICAgICAgICBpZiBsZW4obGljdmFsdWVzKSA+IDE6Ci0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogbXVsdGlwbGUgbGljZW5zZXMgaGF2ZSBiZWVuIGRldGVjdGVkOyB0aGV5IGhhdmUgYmVlbiBzZXBhcmF0ZWQgd2l0aCAmJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgaW4gdGhlIExJQ0VOU0UgdmFsdWUgZm9yIG5vdyBzaW5jZSBpdCBpcyBhIHJlYXNvbmFibGUgYXNzdW1wdGlvbiB0aGF0IGFsbCcpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIG9mIHRoZSBsaWNlbnNlcyBhcHBseS4gSWYgaW5zdGVhZCB0aGVyZSBpcyBhIGNob2ljZSBiZXR3ZWVuIHRoZSBtdWx0aXBsZScpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIGxpY2Vuc2VzIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgdGhlIHZhbHVlIHRvIHNlcGFyYXRlIHRoZSBsaWNlbnNlcyB3aXRoIHwnKQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBpbnN0ZWFkIG9mICYuIElmIHRoZXJlIGlzIGFueSBkb3VidCwgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNpdHVhdGlvbiBpcyBhcHBsaWNhYmxlLicpCiAgICAgICAgIGlmIGxpY191bmtub3duOgotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIycpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIFRoZSBmb2xsb3dpbmcgbGljZW5zZSBmaWxlcyB3ZXJlIG5vdCBhYmxlIHRvIGJlIGlkZW50aWZpZWQgYW5kIGFyZScpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIHJlcHJlc2VudGVkIGFzICJVbmtub3duIiBiZWxvdywgeW91IHdpbGwgbmVlZCB0byBjaGVjayB0aGVtIHlvdXJzZWxmOicpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyMnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjIFRoZSBmb2xsb3dpbmcgbGljZW5zZSBmaWxlcyB3ZXJlIG5vdCBhYmxlIHRvIGJlIGlkZW50aWZpZWQgYW5kIGFyZScpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyMgcmVwcmVzZW50ZWQgYXMgIlVua25vd24iIGJlbG93LCB5b3Ugd2lsbCBuZWVkIHRvIGNoZWNrIHRoZW0geW91cnNlbGY6JykKICAgICAgICAgICAgIGZvciBsaWNmaWxlIGluIGxpY191bmtub3duOgotICAgICAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgICAlcycgJSBsaWNmaWxlKQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIycpCi0gICAgZWxzZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBVbmFibGUgdG8gZmluZCBhbnkgZmlsZXMgdGhhdCBsb29rZWQgbGlrZSBsaWNlbnNlIHN0YXRlbWVudHMuIENoZWNrIHRoZSBhY2NvbXBhbnlpbmcnKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBoZWFkZXJzIGFuZCBzZXQgTElDRU5TRSBhbmQgTElDX0ZJTEVTX0NIS1NVTSBhY2NvcmRpbmdseS4nKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjJykKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBOT1RFOiBMSUNFTlNFIGlzIGJlaW5nIHNldCB0byAiQ0xPU0VEIiB0byBhbGxvdyB5b3UgdG8gYXQgbGVhc3Qgc3RhcnQgYnVpbGRpbmcgLSBpZicpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgdGhpcyBpcyBub3QgYWNjdXJhdGUgd2l0aCByZXNwZWN0IHRvIHRoZSBsaWNlbnNpbmcgb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IChpdCcpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgd2lsbCBub3QgYmUgaW4gbW9zdCBjYXNlcykgeW91IG11c3Qgc3BlY2lmeSB0aGUgY29ycmVjdCB2YWx1ZSBiZWZvcmUgdXNpbmcgdGhpcycpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgcmVjaXBlIGZvciBhbnl0aGluZyBvdGhlciB0aGFuIGluaXRpYWwgdGVzdGluZy9kZXZlbG9wbWVudCEnKQotICAgICAgICBsaWNlbnNlcyA9IFsnQ0xPU0VEJ10KLSAgICBwa2dfbGljZW5zZSA9IGV4dHJhdmFsdWVzLnBvcCgnTElDRU5TRScsIE5vbmUpCi0gICAgaWYgcGtnX2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjICAgJXMnICUgbGljZmlsZSkKKworICAgIGV4dHJhX2xpY2Vuc2UgPSBzcGxpdF92YWx1ZShleHRyYXZhbHVlcy5wb3AoJ0xJQ0VOU0UnLCBbXSkpCisgICAgaWYgJyYnIGluIGV4dHJhX2xpY2Vuc2U6CisgICAgICAgIGV4dHJhX2xpY2Vuc2UucmVtb3ZlKCcmJykKKyAgICBpZiBleHRyYV9saWNlbnNlOgogICAgICAgICBpZiBsaWNlbnNlcyA9PSBbJ1Vua25vd24nXToKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogVGhlIGZvbGxvd2luZyBMSUNFTlNFIHZhbHVlIHdhcyBkZXRlcm1pbmVkIGZyb20gdGhlIG9yaWdpbmFsIHBhY2thZ2UgbWV0YWRhdGEnKQotICAgICAgICAgICAgbGljZW5zZXMgPSBbcGtnX2xpY2Vuc2VdCisgICAgICAgICAgICBsaWNlbnNlcyA9IGV4dHJhX2xpY2Vuc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogT3JpZ2luYWwgcGFja2FnZSBtZXRhZGF0YSBpbmRpY2F0ZXMgbGljZW5zZSBpczogJXMnICUgcGtnX2xpY2Vuc2UpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihsaWNlbnNlcykpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTElDX0ZJTEVTX0NIS1NVTSA9ICIlcyInICUgJyBcXFxuICAgICAgICAgICAgICAgICAgICAnLmpvaW4obGljX2ZpbGVzX2Noa3N1bSkpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnJykKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGV4dHJhX2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbGljZW5zZXM6CisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzLmFwcGVuZChpdGVtKQorICAgIGV4dHJhX2xpY19maWxlc19jaGtzdW0gPSBzcGxpdF92YWx1ZShleHRyYXZhbHVlcy5wb3AoJ0xJQ19GSUxFU19DSEtTVU0nLCBbXSkpCisgICAgZm9yIGl0ZW0gaW4gZXh0cmFfbGljX2ZpbGVzX2Noa3N1bToKKyAgICAgICAgaWYgaXRlbSBub3QgaW4gbGljX2ZpbGVzX2Noa3N1bToKKyAgICAgICAgICAgIGxpY19maWxlc19jaGtzdW0uYXBwZW5kKGl0ZW0pCisKKyAgICBpZiBsaWNfZmlsZXNfY2hrc3VtOgorICAgICAgICAjIFdlIGFyZSBnb2luZyB0byBzZXQgdGhlIHZhcnMsIHNvIHByZXBlbmQgdGhlIHN0YW5kYXJkIGRpc2NsYWltZXIKKyAgICAgICAgbGluZXMuaW5zZXJ0KDAsICcjIFdBUk5JTkc6IHRoZSBmb2xsb3dpbmcgTElDRU5TRSBhbmQgTElDX0ZJTEVTX0NIS1NVTSB2YWx1ZXMgYXJlIGJlc3QgZ3Vlc3NlcyAtIGl0IGlzJykKKyAgICAgICAgbGluZXMuaW5zZXJ0KDEsICcjIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gdmVyaWZ5IHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgYW5kIGNvcnJlY3QuJykKKyAgICBlbHNlOgorICAgICAgICAjIFdpdGhvdXQgTElDX0ZJTEVTX0NIS1NVTSB3ZSBzZXQgTElDRU5TRSA9ICJDTE9TRUQiIHRvIGFsbG93IHRoZQorICAgICAgICAjIHVzZXIgdG8gZ2V0IHN0YXJ0ZWQgZWFzaWx5CisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyBVbmFibGUgdG8gZmluZCBhbnkgZmlsZXMgdGhhdCBsb29rZWQgbGlrZSBsaWNlbnNlIHN0YXRlbWVudHMuIENoZWNrIHRoZSBhY2NvbXBhbnlpbmcnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlIGhlYWRlcnMgYW5kIHNldCBMSUNFTlNFIGFuZCBMSUNfRklMRVNfQ0hLU1VNIGFjY29yZGluZ2x5LicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyBOT1RFOiBMSUNFTlNFIGlzIGJlaW5nIHNldCB0byAiQ0xPU0VEIiB0byBhbGxvdyB5b3UgdG8gYXQgbGVhc3Qgc3RhcnQgYnVpbGRpbmcgLSBpZicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyB0aGlzIGlzIG5vdCBhY2N1cmF0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGxpY2Vuc2luZyBvZiB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQgKGl0JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIHdpbGwgbm90IGJlIGluIG1vc3QgY2FzZXMpIHlvdSBtdXN0IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgYmVmb3JlIHVzaW5nIHRoaXMnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgcmVjaXBlIGZvciBhbnl0aGluZyBvdGhlciB0aGFuIGluaXRpYWwgdGVzdGluZy9kZXZlbG9wbWVudCEnKQorICAgICAgICBsaWNlbnNlcyA9IFsnQ0xPU0VEJ10KKworICAgIGlmIGV4dHJhX2xpY2Vuc2UgYW5kIHNvcnRlZChsaWNlbnNlcykgIT0gc29ydGVkKGV4dHJhX2xpY2Vuc2UpOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgTk9URTogT3JpZ2luYWwgcGFja2FnZSAvIHNvdXJjZSBtZXRhZGF0YSBpbmRpY2F0ZXMgbGljZW5zZSBpczogJXMnICUgJyAmICcuam9pbihleHRyYV9saWNlbnNlKSkKKworICAgIGlmIGxlbihsaWNlbnNlcykgPiAxOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyMnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgTk9URTogbXVsdGlwbGUgbGljZW5zZXMgaGF2ZSBiZWVuIGRldGVjdGVkOyB0aGV5IGhhdmUgYmVlbiBzZXBhcmF0ZWQgd2l0aCAmJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIGluIHRoZSBMSUNFTlNFIHZhbHVlIGZvciBub3cgc2luY2UgaXQgaXMgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gdGhhdCBhbGwnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgb2YgdGhlIGxpY2Vuc2VzIGFwcGx5LiBJZiBpbnN0ZWFkIHRoZXJlIGlzIGEgY2hvaWNlIGJldHdlZW4gdGhlIG11bHRpcGxlJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIGxpY2Vuc2VzIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgdGhlIHZhbHVlIHRvIHNlcGFyYXRlIHRoZSBsaWNlbnNlcyB3aXRoIHwnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgaW5zdGVhZCBvZiAmLiBJZiB0aGVyZSBpcyBhbnkgZG91YnQsIGNoZWNrIHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyB0byBkZXRlcm1pbmUgd2hpY2ggc2l0dWF0aW9uIGlzIGFwcGxpY2FibGUuJykKKworICAgIGxpbmVzLmFwcGVuZCgnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihsaWNlbnNlcykpCisgICAgbGluZXMuYXBwZW5kKCdMSUNfRklMRVNfQ0hLU1VNID0gIiVzIicgJSAnIFxcXG4gICAgICAgICAgICAgICAgICAgICcuam9pbihsaWNfZmlsZXNfY2hrc3VtKSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisKKyAgICAjIFJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHNvIHdlIGdldCB0aGUgdmFsdWVzIGluIHRoZSByaWdodCBwbGFjZSBpbiB0aGUgcmVjaXBlIGZpbGUKKyAgICB0cnk6CisgICAgICAgIHBvcyA9IGxpbmVzX2JlZm9yZS5pbmRleCgnIyNMSUNFTlNFX1BMQUNFSE9MREVSIyMnKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBwb3MgPSAtMQorICAgIGlmIHBvcyA9PSAtMToKKyAgICAgICAgbGluZXNfYmVmb3JlLmV4dGVuZChsaW5lcykKKyAgICBlbHNlOgorICAgICAgICBsaW5lc19iZWZvcmVbcG9zOnBvcysxXSA9IGxpbmVzCisKICAgICBoYW5kbGVkLmFwcGVuZCgoJ2xpY2Vuc2UnLCBsaWN2YWx1ZXMpKQogICAgIHJldHVybiBsaWN2YWx1ZXMKIApAQCAtOTUxLDYgKzExMDMsMTAgQEAKICAgICBjcnVuY2hlZF9tZDVzdW1zWycxZGFlYmQ5NDkxZDFlODQyNjkwMGI0ZmE1YTQyMjgxNCddID0gJ0xHUEx2Mi4xJwogICAgICMgaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi9tYXN0ZXIvQ09QWUlORy5MR1BMdjMKICAgICBjcnVuY2hlZF9tZDVzdW1zWycyZWJmYjNiYjQ5YjlhNDhhMDc1Y2MxNDI1ZTdmNDEyOSddID0gJ0xHUEx2MycKKyAgICAjIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lY2xpcHNlL21vc3F1aXR0by92MS40LjE0L2VwbC12MTAKKyAgICBjcnVuY2hlZF9tZDVzdW1zWydlZmUyY2I5YTM1ODI2OTkyYjlkZjY4MjI0ZTNjMjYyOCddID0gJ0VQTC0xLjAnCisgICAgIyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZWNsaXBzZS9tb3NxdWl0dG8vdjEuNC4xNC9lZGwtdjEwCisgICAgY3J1bmNoZWRfbWQ1c3Vtc1snMGE5Yzc4YzBhMzk4ZDFiYmNlNGExNjY3NTdkNjAzODcnXSA9ICdFREwtMS4wJwogICAgIGxpY3RleHQgPSBbXQogICAgIHdpdGggb3BlbihsaWNmaWxlLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKICAgICAgICAgZm9yIGxpbmUgaW4gZjoKQEAgLTk4Myw3ICsxMTM5LDcgQEAKICAgICBtZDVzdW1zID0gZ2V0X2xpY2Vuc2VfbWQ1c3VtcyhkKQogCiAgICAgbGljZW5zZXMgPSBbXQotICAgIGxpY3NwZWNzID0gWycqTElDRU5bQ1NdRSonLCAnQ09QWUlORyonLCAnKltMbF1pY2Vuc2UqJywgJ0xFR0FMKicsICdbTGxdZWdhbConLCAnKkdQTConLCAnUkVBRE1FLmxpYyonLCAnQ09QWVJJR0hUKicsICdbQ2Ndb3B5cmlnaHQqJ10KKyAgICBsaWNzcGVjcyA9IFsnKkxJQ0VOW0NTXUUqJywgJ0NPUFlJTkcqJywgJypbTGxdaWNlbnNlKicsICdMRUdBTConLCAnW0xsXWVnYWwqJywgJypHUEwqJywgJ1JFQURNRS5saWMqJywgJ0NPUFlSSUdIVConLCAnW0NjXW9weXJpZ2h0KicsICdlW2RwXWwtdjEwJ10KICAgICBsaWNmaWxlcyA9IFtdCiAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjdHJlZSk6CiAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKQEAgLTExNDIsMjggKzEyOTgsMTMgQEAKICAgICByZXR1cm4gdmFsdWVzCiAKIAotZGVmIGNoZWNrX25wbSh0aW5mb2lsLCBkZWJ1Z29ubHk9RmFsc2UpOgotICAgIHRyeToKLSAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZSgnbm9kZWpzLW5hdGl2ZScpCi0gICAgZXhjZXB0IGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyOgotICAgICAgICAjIFdlIHN0aWxsIGNvbmRpdGlvbmFsbHkgc2hvdyB0aGUgbWVzc2FnZSBhbmQgZXhpdCB3aXRoIHRoZSBzcGVjaWFsCi0gICAgICAgICMgcmV0dXJuIGNvZGUsIG90aGVyd2lzZSB3ZSBjYW4ndCBzaG93IHRoZSBwcm9wZXIgbWVzc2FnZSBmb3IgZVNESwotICAgICAgICAjIHVzZXJzCi0gICAgICAgIGxvZ19lcnJvcl9jb25kKCdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgLSB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcycsIGRlYnVnb25seSkKLSAgICAgICAgc3lzLmV4aXQoMTQpCi0gICAgYmluZGlyID0gcmQuZ2V0VmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKQotICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAnbnBtJykKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobnBtcGF0aCk6Ci0gICAgICAgIGxvZ19lcnJvcl9jb25kKCducG0gcmVxdWlyZWQgdG8gcHJvY2VzcyBzcGVjaWZpZWQgc291cmNlLCBidXQgbnBtIGlzIG5vdCBhdmFpbGFibGUgLSB5b3UgbmVlZCB0byBydW4gYml0YmFrZSAtYyBhZGR0b19yZWNpcGVfc3lzcm9vdCBub2RlanMtbmF0aXZlIGZpcnN0JywgZGVidWdvbmx5KQotICAgICAgICBzeXMuZXhpdCgxNCkKLSAgICByZXR1cm4gYmluZGlyCi0KIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzKToKICAgICBwYXJzZXJfY3JlYXRlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdjcmVhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQ3JlYXRlIGEgbmV3IHJlY2lwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nQ3JlYXRlcyBhIG5ldyByZWNpcGUgZnJvbSBhIHNvdXJjZSB0cmVlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnc291cmNlJywgaGVscD0nUGF0aCBvciBVUkwgdG8gc291cmNlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXRmaWxlJywgaGVscD0nU3BlY2lmeSBmaWxlbmFtZSBmb3IgcmVjaXBlIHRvIGNyZWF0ZScpCisgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1wJywgJy0tcHJvdmlkZXMnLCBoZWxwPSdTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUgcmVjaXBlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYWNoaW5lJywgaGVscD0nTWFrZSByZWNpcGUgbWFjaGluZS1zcGVjaWZpYyBhcyBvcHBvc2VkIHRvIGFyY2hpdGVjdHVyZS1zcGVjaWZpYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy14JywgJy0tZXh0cmFjdC10bycsIG1ldGF2YXI9J0VYVFJBQ1RQQVRIJywgaGVscD0nQXNzdW1pbmcgc291cmNlIGlzIGEgVVJMLCBmZXRjaCBpdCBhbmQgZXh0cmFjdCBpdCB0byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBhcyAlKG1ldGF2YXIpcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1OJywgJy0tbmFtZScsIGhlbHA9J05hbWUgdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBOKScpCkBAIC0xMTcxLDEyICsxMzEyLDEzIEBACiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1iJywgJy0tYmluYXJ5JywgaGVscD0nVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1hbHNvLW5hdGl2ZScsIGhlbHA9J0Fsc28gYWRkIG5hdGl2ZSB2YXJpYW50IChpLmUuIHN1cHBvcnQgYnVpbGRpbmcgcmVjaXBlIGZvciB0aGUgYnVpbGQgaG9zdCBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgbWFjaGluZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLXNyYy1zdWJkaXInLCBoZWxwPSdTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlJywgbWV0YXZhcj0nU1VCRElSJykKLSAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hdXRvcmV2JywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIGdyb3VwID0gcGFyc2VyX2NyZWF0ZS5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1hJywgJy0tYXV0b3JldicsIGhlbHA9J1doZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluIHRoZSByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkJywgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3JjcmV2JywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIGZldGNoIGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IGxhdGVzdCknKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctQicsICctLXNyY2JyYW5jaCcsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1mZXRjaC1kZXYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZGV2dG9vbCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCi0gICAgIyBGSVhNRSBJIHJlYWxseSBoYXRlIGhhdmluZyB0byBzZXQgcGFyc2VyZWNpcGVzIGZvciB0aGlzLCBidXQgZ2l2ZW4gd2UgbWF5IG5lZWQKLSAgICAjIHRvIGNhbGwgaW50byBucG0gKGFuZCB3ZSBkb24ndCBrbm93IGluIGFkdmFuY2UgaWYgd2Ugd2lsbCBvciBub3QpIGFuZCBpbiBvcmRlcgotICAgICMgdG8gZG8gc28gd2UgbmVlZCB0byBrbm93IG5wbSdzIHJlY2lwZSBzeXNyb290IHBhdGgsIHRoZXJlJ3Mgbm90IG11Y2ggYWx0ZXJuYXRpdmUKLSAgICBwYXJzZXJfY3JlYXRlLnNldF9kZWZhdWx0cyhmdW5jPWNyZWF0ZV9yZWNpcGUsIHBhcnNlcmVjaXBlcz1UcnVlKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLW1pcnJvcnMnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdFbmFibGUgUFJFTUlSUk9SUyBhbmQgTUlSUk9SUyBmb3Igc291cmNlIHRyZWUgZmV0Y2hpbmcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLicpCisgICAgcGFyc2VyX2NyZWF0ZS5zZXRfZGVmYXVsdHMoZnVuYz1jcmVhdGVfcmVjaXBlKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKaW5kZXggZTkxNGU1My4uNDc0M2M3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQpAQCAtODYzLDYgKzg2MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihmb3VuZHZhbHVlcykgPT0gbGVuKHZhbHVlbWFwKToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgRHJvcCB2YWx1ZXMgY29udGFpbmluZyB1bmV4cGFuZGVkIFJQTSBtYWNyb3MKKyAgICAgICAgZm9yIGsgaW4gbGlzdChmb3VuZHZhbHVlcy5rZXlzKCkpOgorICAgICAgICAgICAgaWYgJyUnIGluIGZvdW5kdmFsdWVzW2tdOgorICAgICAgICAgICAgICAgIGRlbCBmb3VuZHZhbHVlc1trXQogICAgICAgICBpZiAnUFYnIGluIGZvdW5kdmFsdWVzOgogICAgICAgICAgICAgaWYgbm90IHZhbGlkYXRlX3B2KGZvdW5kdmFsdWVzWydQViddKToKICAgICAgICAgICAgICAgICBkZWwgZm91bmR2YWx1ZXNbJ1BWJ10KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5c19weXRob24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXNfcHl0aG9uLnB5CmluZGV4IGVjNTQ0OWIuLjViZDJhYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5c19weXRob24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzX3B5dGhvbi5weQpAQCAtMzU2LDYgKzM1Niw4IEBACiAgICAgICAgICMgTmFpdmUgbWFwcGluZyBvZiBzZXR1cCgpIGFyZ3VtZW50cyB0byBQS0ctSU5GTyBmaWVsZCBuYW1lcwogICAgICAgICBmb3IgZCBpbiBbaW5mbywgbm9uX2xpdGVyYWxzXToKICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGxpc3QoZC5pdGVtcygpKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBuZXdfa2V5ID0gX21hcChrZXkpCiAgICAgICAgICAgICAgICAgaWYgbmV3X2tleSAhPSBrZXk6CiAgICAgICAgICAgICAgICAgICAgIGRlbCBkW2tleV0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9rbW9kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKaW5kZXggN2NmMTg4ZC4uNDU2OWI1MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKQEAgLTQwLDcgKzQwLDcgQEAKIAogICAgICAgICBtYWtlZmlsZXMgPSBbXQogCi0gICAgICAgIGZpbGVzID0gUmVjaXBlSGFuZGxlci5jaGVja2ZpbGVzKHNyY3RyZWUsIFsnKi5jJywgJyouaCddLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgZmlsZXMgPSBSZWNpcGVIYW5kbGVyLmNoZWNrZmlsZXMoc3JjdHJlZSwgWycqLmMnLCAnKi5oJ10sIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlZGlycz1bJ2NvbnRyaWInLCAndGVzdCcsICdleGFtcGxlcyddKQogICAgICAgICBpZiBmaWxlczoKICAgICAgICAgICAgIGZvciBjZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAjIExvb2sgaW4gc2FtZSBkaXIgb3IgcGFyZW50IGZvciBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKaW5kZXggY2I4ZjMzOC4uYWU1Mzk3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBqc29uCi1mcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyLCBzcGxpdF9wa2dfbGljZW5zZXMsIGhhbmRsZV9saWNlbnNlX3ZhcnMsIGNoZWNrX25wbQorZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgUmVjaXBlSGFuZGxlciwgc3BsaXRfcGtnX2xpY2Vuc2VzLCBoYW5kbGVfbGljZW5zZV92YXJzCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdyZWNpcGV0b29sJykKIApAQCAtMzYsNiArMzYsMjcgQEAKIGNsYXNzIE5wbVJlY2lwZUhhbmRsZXIoUmVjaXBlSGFuZGxlcik6CiAgICAgbG9ja2Rvd25wYXRoID0gTm9uZQogCisgICAgZGVmIF9lbnN1cmVfbnBtKHNlbGYsIGZpeGVkX3NldHVwPUZhbHNlKToKKyAgICAgICAgaWYgbm90IHRpbmZvaWwucmVjaXBlc19wYXJzZWQ6CisgICAgICAgICAgICB0aW5mb2lsLnBhcnNlX3JlY2lwZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKCdub2RlanMtbmF0aXZlJykKKyAgICAgICAgZXhjZXB0IGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyOgorICAgICAgICAgICAgaWYgZml4ZWRfc2V0dXA6CisgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBTREsnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9ICdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgLSB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcycKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBiaW5kaXIgPSByZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpCisgICAgICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAnbnBtJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpOgorICAgICAgICAgICAgdGluZm9pbC5idWlsZF90YXJnZXRzKCdub2RlanMtbmF0aXZlJywgJ2FkZHRvX3JlY2lwZV9zeXNyb290JykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhucG1wYXRoKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ25wbSByZXF1aXJlZCB0byBwcm9jZXNzIHNwZWNpZmllZCBzb3VyY2UsIGJ1dCBub2RlanMtbmF0aXZlIGRpZCBub3Qgc2VlbSB0byBwb3B1bGF0ZSBpdCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGJpbmRpcgorCiAgICAgZGVmIF9oYW5kbGVfbGljZW5zZShzZWxmLCBkYXRhKToKICAgICAgICAgJycnCiAgICAgICAgIEhhbmRsZSB0aGUgbGljZW5zZSB2YWx1ZSBmcm9tIGFuIG5wbSBwYWNrYWdlLmpzb24gZmlsZQpAQCAtMTA5LDcgKzEzMCw2IEBACiAgICAgICAgICAgICBpZiB2YXJuYW1lID09ICdTUkNfVVJJJzoKICAgICAgICAgICAgICAgICBpZiBub3Qgb3JpZ3ZhbHVlLnN0YXJ0c3dpdGgoJ25wbTovLycpOgogICAgICAgICAgICAgICAgICAgICBzcmNfdXJpID0gb3JpZ3ZhbHVlLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3QgPSB7fQogICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gb3B0ZGVwcy5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQpAQCAtMTIzLDE0ICsxNDMsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3RbZGVwXSA9IGRlcGRhdGEKIAorICAgICAgICAgICAgICAgICAgICBleHRyYV91cmxzID0gW10KICAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwZGF0YSBpbiBkZXBsaXN0Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZGF0YS5nZXQoJ3ZlcnNpb24nLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JXM7dmVyc2lvbj0lcztzdWJkaXI9bm9kZV9tb2R1bGVzLyVzJyAlIChkZXAsIHZlcnNpb24sIGRlcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHR1dGlscy5mZXRjaF91cmkoZCwgdXJsLCBzcmN0cmVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY191cmkuYXBwZW5kKHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBpZiBjaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3VybHMuYXBwZW5kKHVybCkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmFfdXJsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHV0aWxzLmZldGNoX3VybCh0aW5mb2lsLCAnICcuam9pbihleHRyYV91cmxzKSwgTm9uZSwgc3JjdHJlZSwgbG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3VyaS5leHRlbmQoZXh0cmFfdXJscykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmNfdXJpLCBOb25lLCAtMSwgVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQogICAgICAgICB1cGRhdGVkLCBuZXdsaW5lcyA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbJ1NSQ19VUkknXSwgdmFyZnVuYykKQEAgLTE0Myw0MCArMTY0LDkgQEAKICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKGxpbmUpCiAgICAgICAgIHJldHVybiB1cGRhdGVkCiAKLSAgICBkZWYgX3JlcGxhY2VfbGljZW5zZV92YXJzKHNlbGYsIHNyY3RyZWUsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIGQpOgotICAgICAgICBmb3IgaXRlbSBpbiBoYW5kbGVkOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgaWYgaXRlbVswXSA9PSAnbGljZW5zZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBpdGVtCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgY2FsbGVkdmFycyA9IFtdCi0gICAgICAgIGRlZiB2YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKLSAgICAgICAgICAgIGlmIHZhcm5hbWUgaW4gWydMSUNFTlNFJywgJ0xJQ19GSUxFU19DSEtTVU0nXToKLSAgICAgICAgICAgICAgICBmb3IgaSwgZSBpbiBlbnVtZXJhdGUocmV2ZXJzZWQobmV3bGluZXMpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGUuc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCA9IGkKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHN0b3AgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmVzLnBvcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCAtPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGNhbGxlZHZhcnMuYXBwZW5kKHZhcm5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNhbGxlZHZhcnMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgIyBUaGUgc2Vjb25kIHRpbWUgYXJvdW5kLCBwdXQgdGhlIG5ldyBsaWNlbnNlIHRleHQgaW4KLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cG9zID0gbGVuKG5ld2xpbmVzKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbGljZW5zZV92YXJzKHNyY3RyZWUsIG5ld2xpbmVzLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgMCwgVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQotICAgICAgICB1cGRhdGVkLCBuZXdsaW5lcyA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbJ0xJQ0VOU0UnLCAnTElDX0ZJTEVTX0NIS1NVTSddLCB2YXJmdW5jKQotICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgZGVsIGxpbmVzX2JlZm9yZVs6XQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmV4dGVuZChuZXdsaW5lcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkIG5vdCBmaW5kIGxpY2Vuc2UgdmFyaWFibGVzJykKLQogICAgIGRlZiBwcm9jZXNzKHNlbGYsIHNyY3RyZWUsIGNsYXNzZXMsIGxpbmVzX2JlZm9yZSwgbGluZXNfYWZ0ZXIsIGhhbmRsZWQsIGV4dHJhdmFsdWVzKToKICAgICAgICAgaW1wb3J0IGJiLnV0aWxzCi0gICAgICAgIGltcG9ydCBvZQorICAgICAgICBpbXBvcnQgb2UucGFja2FnZQogICAgICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogCiAgICAgICAgIGlmICdidWlsZHN5c3RlbScgaW4gaGFuZGxlZDoKQEAgLTE4OSw3ICsxNzksOSBAQAogICAgICAgICBmaWxlcyA9IFJlY2lwZUhhbmRsZXIuY2hlY2tmaWxlcyhzcmN0cmVlLCBbJ3BhY2thZ2UuanNvbiddKQogICAgICAgICBpZiBmaWxlczoKICAgICAgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBjaGVja19ucG0odGluZm9pbCwgc2VsZi5fZGV2dG9vbCkKKyAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBzZWxmLl9lbnN1cmVfbnBtKCkKKyAgICAgICAgICAgIGlmIG5vdCBucG1fYmluZGlyOgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDE0KQogICAgICAgICAgICAgZC5wcmVwZW5kVmFyKCdQQVRIJywgJyVzOicgJSBucG1fYmluZGlyKQogCiAgICAgICAgICAgICBkYXRhID0gcmVhZF9wYWNrYWdlX2pzb24oZmlsZXNbMF0pCkBAIC0yMDUsMTAgKzE5Nyw3IEBACiAKICAgICAgICAgICAgICAgICBmZXRjaGRldiA9IGV4dHJhdmFsdWVzWydmZXRjaGRldiddIG9yIE5vbmUKICAgICAgICAgICAgICAgICBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzID0gc2VsZi5nZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKGRhdGEsIGZldGNoZGV2KQotICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBzZWxmLl9oYW5kbGVfZGVwZW5kZW5jaWVzKGQsIGRlcHMsIG9wdGRlcHMsIGRldmRlcHMsIGxpbmVzX2JlZm9yZSwgc3JjdHJlZSkKLSAgICAgICAgICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmVkbyB0aGUgbGljZW5zZSBzdHVmZgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXBsYWNlX2xpY2Vuc2VfdmFycyhzcmN0cmVlLCBsaW5lc19iZWZvcmUsIGhhbmRsZWQsIGV4dHJhdmFsdWVzLCBkKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9kZXBlbmRlbmNpZXMoZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKQogCiAgICAgICAgICAgICAgICAgIyBTaHJpbmt3cmFwCiAgICAgICAgICAgICAgICAgbG9jYWxmaWxlc2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLW5wbScpCkBAIC0yMTksMTEgKzIwOCwxNCBAQAogCiAgICAgICAgICAgICAgICAgIyBTcGxpdCBlYWNoIG5wbSBtb2R1bGUgb3V0IHRvIGlzIG93biBwYWNrYWdlCiAgICAgICAgICAgICAgICAgbnBtcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoc3JjdHJlZSkKKyAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBOb25lCiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaGFuZGxlZDoKICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtWzBdID09ICdsaWNlbnNlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBpdGVtWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgbGljdmFsdWVzOgorICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBoYW5kbGVfbGljZW5zZV92YXJzKHNyY3RyZWUsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIGQpCiAgICAgICAgICAgICAgICAgaWYgbGljdmFsdWVzOgogICAgICAgICAgICAgICAgICAgICAjIEF1Z21lbnQgdGhlIGxpY2Vuc2UgbGlzdCB3aXRoIGluZm9ybWF0aW9uIHdlIGhhdmUgaW4gdGhlIHBhY2thZ2VzCiAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzID0ge30KQEAgLTI0NCwxMyArMjM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzID0gbGlzdChzZXQoW2l0ZW0ucmVwbGFjZSgnXycsICcgJykgZm9yIHBrZ2xpY2Vuc2UgaW4gcGtnbGljZW5zZXMudmFsdWVzKCkgZm9yIGl0ZW0gaW4gcGtnbGljZW5zZV0pKQogICAgICAgICAgICAgICAgICAgICBpZiAnJicgaW4gYWxsX2xpY2Vuc2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzLnJlbW92ZSgnJicpCi0gICAgICAgICAgICAgICAgICAgICMgR28gYmFjayBhbmQgdXBkYXRlIHRoZSBMSUNFTlNFIHZhbHVlIHNpbmNlIHdlIGhhdmUgYSBiaXQgbW9yZQotICAgICAgICAgICAgICAgICAgICAjIGluZm9ybWF0aW9uIHRoYW4gd2hlbiB0aGF0IHdhcyB3cml0dGVuIG91dCAoYW5kIHdlIGtub3cgYWxsIGFwcGx5Ci0gICAgICAgICAgICAgICAgICAgICMgdnMuIHRoZXJlIGJlaW5nIGEgY2hvaWNlLCBzbyB3ZSBjYW4gam9pbiB0aGVtIHdpdGggJikKLSAgICAgICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0xJQ0VOU0UgPSAnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmVbaV0gPSAnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihhbGxfbGljZW5zZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ0xJQ0VOU0UnXSA9ICcgJiAnLmpvaW4oYWxsX2xpY2Vuc2VzKQogCiAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIG1vdmUgUyBzZXR0aW5nIGFmdGVyIGluaGVyaXQgbnBtCiAgICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkKaW5kZXggMGI2Mzc1OS4uZGVjY2U4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvbmV3YXBwZW5kLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL25ld2FwcGVuZC5weQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgIGlmIGFyZ3MuZWRpdDoKLSAgICAgICAgcmV0dXJuIHNjcmlwdHV0aWxzLnJ1bl9lZGl0b3IoW2FwcGVuZF9wYXRoLCByZWNpcGVfcGF0aF0pCisgICAgICAgIHJldHVybiBzY3JpcHR1dGlscy5ydW5fZWRpdG9yKFthcHBlbmRfcGF0aCwgcmVjaXBlX3BhdGhdLCBsb2dnZXIpCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoYXBwZW5kX3BhdGgpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQppbmRleCA5MmI2MDFjLi44NWIxYzk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CkBAIC0yMyw2ICsyMyw4IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCiAKIGRlZiBsb2dnZXJfY3JlYXRlKG5hbWUsIHN0cmVhbT1Ob25lKToKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQpAQCAtNzgsNTIgKzgwLDEzOSBAQAogICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCByZXBhY2sgLWEnLCBjd2Q9cmVwb2RpcikKICAgICAgICAgICAgIG9zLnJlbW92ZShhbHRlcm5hdGVzZmlsZSkKIAotZGVmIGZldGNoX3VyaShkLCB1cmksIGRlc3RkaXIsIHNyY3Jldj1Ob25lKToKLSAgICAiIiJGZXRjaCBhIFVSSSB0byBhIGxvY2FsIGRpcmVjdG9yeSIiIgorZGVmIF9nZXRfdGVtcF9yZWNpcGVfZGlyKGQpOgorICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgaGFja3kgYnV0IHdlIG5lZWQgdG8gZmluZCBhIHBsYWNlIHdoZXJlIHdlIGNhbiBwdXQKKyAgICAjIHRoZSByZWNpcGUgc28gdGhhdCBiaXRiYWtlIGNhbiBmaW5kIGl0LiBXZSdyZSBnb2luZyB0byBkZWxldGUgaXQgYXQgdGhlCisgICAgIyBlbmQgc28gaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoZXJlIHdlIHB1dCBpdC4KKyAgICBiYmZpbGVzID0gZC5nZXRWYXIoJ0JCRklMRVMnKS5zcGxpdCgpCisgICAgZmV0Y2hyZWNpcGVkaXIgPSBOb25lCisgICAgZm9yIHB0aCBpbiBiYmZpbGVzOgorICAgICAgICBpZiBwdGguZW5kc3dpdGgoJy5iYicpOgorICAgICAgICAgICAgcHRoZGlyID0gb3MucGF0aC5kaXJuYW1lKHB0aCkKKyAgICAgICAgICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHB0aGRpcikpLCBvcy5XX09LKToKKyAgICAgICAgICAgICAgICBmZXRjaHJlY2lwZWRpciA9IHB0aGRpci5yZXBsYWNlKCcqJywgJ3JlY2lwZXRvb2wnKQorICAgICAgICAgICAgICAgIGlmIHB0aGRpci5lbmRzd2l0aCgnd29ya3NwYWNlL3JlY2lwZXMvKicpOgorICAgICAgICAgICAgICAgICAgICAjIFByZWZlciB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGZldGNocmVjaXBlZGlyCisKK2NsYXNzIEZldGNoVXJsRmFpbHVyZShFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwpOgorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBmZXRjaCBVUkwgJXMiICUgc2VsZi51cmwKKworZGVmIGZldGNoX3VybCh0aW5mb2lsLCBzcmN1cmksIHNyY3JldiwgZGVzdGRpciwgbG9nZ2VyLCBwcmVzZXJ2ZV90bXA9RmFsc2UsIG1pcnJvcnM9RmFsc2UpOgorICAgICIiIgorICAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJMIHVzaW5nIG5vcm1hbCBkb19mZXRjaCBhbmQgZG9fdW5wYWNrIHRhc2tzLCBpLmUuCisgICAgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgdG8gYmUgc2F0aXNmaWVkIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIGZldGNoCisgICAgb3BlcmF0aW9uIHdpbGwgYmUgdGFrZW4gY2FyZSBvZgorICAgICIiIgorCiAgICAgaW1wb3J0IGJiCi0gICAgdG1wcGFyZW50ID0gZC5nZXRWYXIoJ0JBU0VfV09SS0RJUicpCisKKyAgICBjaGVja3N1bXMgPSB7fQorICAgIGZldGNocmVjaXBlcG4gPSBOb25lCisKKyAgICAjIFdlIG5lZWQgdG8gcHV0IG91ciB0ZW1wIGRpcmVjdG9yeSB1bmRlciAke0JBU0VfV09SS0RJUn0gb3RoZXJ3aXNlCisgICAgIyB3ZSBtYXkgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSByZWNpcGUtc3BlY2lmaWMgc3lzcm9vdCBwb3B1bGF0aW9uCisgICAgdG1wcGFyZW50ID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JBU0VfV09SS0RJUicpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRtcHBhcmVudCkKLSAgICB0bXB3b3JrZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dG1wcGFyZW50KQorICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScsIGRpcj10bXBwYXJlbnQpCiAgICAgdHJ5OgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKLSAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgIHRtcHdvcmtkaXIgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnd29yaycpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnZmV0Y2hfdXJsOiB0ZW1wIGRpciBpcyAlcycgJSB0bXBkaXIpCiAKLSAgICAgICAgIyBTZXQgc29tZSB2YWx1ZXMgdG8gYWxsb3cgZXh0ZW5kX3JlY2lwZV9zeXNyb290IHRvIHdvcmsgaGVyZSB3ZSdyZSB3ZSBhcmUgbm90IHJ1bm5pbmcgZnJvbSBhIHRhc2sKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignV09SS0RJUicsIHRtcHdvcmtkaXIpCi0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0JCX1JVTlRBU0snLCAnZG9fZmV0Y2gnKQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdkdW1teScpCi0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0JCX0xJTUlURURERVBTJywgJzEnKQotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGxvY2FsZGF0YSkKLQotICAgICAgICAjIFNldCBzb21lIHZhbHVlcyBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGZldGNoZXIgY29kZQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdCQl9TVFJJQ1RfQ0hFQ0tTVU0nLCAnJykKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignU1JDUkVWJywgc3JjcmV2KQotICAgICAgICByZXQgPSAoTm9uZSwgTm9uZSkKLSAgICAgICAgb2xkZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmV0Y2hyZWNpcGVkaXIgPSBfZ2V0X3RlbXBfcmVjaXBlX2Rpcih0aW5mb2lsLmNvbmZpZ19kYXRhKQorICAgICAgICBpZiBub3QgZmV0Y2hyZWNpcGVkaXI6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ1NlYXJjaGVkIEJCRklMRVMgYnV0IHVuYWJsZSB0byBmaW5kIGEgd3JpdGVhYmxlIHBsYWNlIHRvIHB1dCB0ZW1wb3JhcnkgcmVjaXBlJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGZldGNocmVjaXBlID0gTm9uZQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZmV0Y2hyZWNpcGVkaXIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VyaV0sIGxvY2FsZGF0YSkKLSAgICAgICAgICAgIGZvciB1IGluIGZldGNoZXIudWQ6Ci0gICAgICAgICAgICAgICAgdWQgPSBmZXRjaGVyLnVkW3VdCi0gICAgICAgICAgICAgICAgdWQuaWdub3JlX2NoZWNrc3VtcyA9IFRydWUKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgZm9yIHUgaW4gZmV0Y2hlci51ZDoKLSAgICAgICAgICAgICAgICB1ZCA9IGZldGNoZXIudWRbdV0KLSAgICAgICAgICAgICAgICBpZiB1ZC5sb2NhbHBhdGgucnN0cmlwKG9zLnNlcCkgPT0gbG9jYWxkYXRhLmdldFZhcignRExfRElSJykucnN0cmlwKG9zLnNlcCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTG9jYWwgcGF0aCBpcyBkb3dubG9hZCBkaXJlY3RvcnkgLSBwbGVhc2UgY2hlY2sgdGhhdCB0aGUgVVJJICIlcyIgaXMgY29ycmVjdCcgJSB1cmkpCi0gICAgICAgICAgICBmZXRjaGVyLnVucGFjayhkZXN0ZGlyKQotICAgICAgICAgICAgZm9yIHUgaW4gZmV0Y2hlci51ZDoKLSAgICAgICAgICAgICAgICB1ZCA9IGZldGNoZXIudWRbdV0KLSAgICAgICAgICAgICAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCk6Ci0gICAgICAgICAgICAgICAgICAgIG1kNXZhbHVlID0gYmIudXRpbHMubWQ1X2ZpbGUodWQubG9jYWxwYXRoKQotICAgICAgICAgICAgICAgICAgICBzaGEyNTZ2YWx1ZSA9IGJiLnV0aWxzLnNoYTI1Nl9maWxlKHVkLmxvY2FscGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gKG1kNXZhbHVlLCBzaGEyNTZ2YWx1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZGlyKG9sZGRpcikKLSAgICBmaW5hbGx5OgotICAgICAgICBzaHV0aWwucm10cmVlKHRtcHdvcmtkaXIpCi0gICAgcmV0dXJuIHJldAorICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGR1bW15IHJlY2lwZSBzbyB3ZSBjYW4gZm9sbG93IG1vcmUgb3IgbGVzcyBub3JtYWwgcGF0aHMKKyAgICAgICAgICAgICMgZm9yIGRvX2ZldGNoIGFuZCBkb191bnBhY2sKKyAgICAgICAgICAgICMgSSdkIHVzZSB0ZW1wZmlsZSBmdW5jdGlvbnMgaGVyZSBidXQgdW5kZXJzY29yZXMgY2FuIGJlIHByb2R1Y2VkIGJ5IHRoYXQgYW5kIHRob3NlCisgICAgICAgICAgICAjIGFyZW4ndCBhbGxvd2VkIGluIHJlY2lwZSBmaWxlIG5hbWVzIGV4Y2VwdCB0byBzZXBhcmF0ZSB0aGUgdmVyc2lvbgorICAgICAgICAgICAgcm5kc3RyaW5nID0gJycuam9pbihyYW5kb20uY2hvaWNlKHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuZGlnaXRzKSBmb3IgXyBpbiByYW5nZSg4KSkKKyAgICAgICAgICAgIGZldGNocmVjaXBlID0gb3MucGF0aC5qb2luKGZldGNocmVjaXBlZGlyLCAndG1wLXJlY2lwZXRvb2wtJXMuYmInICUgcm5kc3RyaW5nKQorICAgICAgICAgICAgZmV0Y2hyZWNpcGVwbiA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmZXRjaHJlY2lwZSkpWzBdCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0dlbmVyYXRpbmcgaW5pdGlhbCByZWNpcGUgJXMgZm9yIGZldGNoaW5nJyAlIGZldGNocmVjaXBlKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZldGNocmVjaXBlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gc3BlY2lmeSBMSUNfRklMRVNfQ0hLU1VNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnTElDRU5TRSA9ICJDTE9TRUQiXG4nKQorICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0aGUgY3Jvc3MtY29tcGlsZXIKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIlxuJykKKyAgICAgICAgICAgICAgICAjIFdlIGRvbid0IGhhdmUgdGhlIGNoZWNrc3VtcyB5ZXQgc28gd2UgY2FuJ3QgcmVxdWlyZSB0aGVtCisgICAgICAgICAgICAgICAgZi53cml0ZSgnQkJfU1RSSUNUX0NIRUNLU1VNID0gImlnbm9yZSJcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnU1JDX1VSSSA9ICIlcyJcbicgJSBzcmN1cmkpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnU1JDUkVWID0gIiVzIlxuJyAlIHNyY3JldikKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdXT1JLRElSID0gIiVzIlxuJyAlIHRtcHdvcmtkaXIpCisgICAgICAgICAgICAgICAgIyBTZXQgUyBvdXQgb2YgdGhlIHdheSBzbyBpdCBkb2Vzbid0IGdldCBjcmVhdGVkIHVuZGVyIHRoZSB3b3JrZGlyCisgICAgICAgICAgICAgICAgZi53cml0ZSgnUyA9ICIlcyJcbicgJSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZW1wdHlzcmMnKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWlycm9yczoKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBkbyBub3QgbmVlZCBQUkVNSVJST1JTIHNpbmNlIHdlIGFyZSBhbG1vc3QgY2VydGFpbmx5CisgICAgICAgICAgICAgICAgICAgICMgZmV0Y2hpbmcgbmV3IHNvdXJjZSByYXRoZXIgdGhhbiBzb21ldGhpbmcgdGhhdCBoYXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAjIGJlZW4gZmV0Y2hlZC4gSGVuY2UsIHdlIGRpc2FibGUgdGhlbSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICAjIEhvd2V2ZXIsIHdlIHByb3ZpZGUgYW4gb3B0aW9uIGZvciB1c2VycyB0byBlbmFibGUgaXQuCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BSRU1JUlJPUlMgPSAiIlxuJykKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnTUlSUk9SUyA9ICIiXG4nKQogCi1kZWYgcnVuX2VkaXRvcihmbik6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgJXMuLi4nICUgc3JjdXJpKQorCisgICAgICAgICAgICAjIEZJWE1FIHRoaXMgaXMgdG9vIG5vaXN5IGF0IHRoZSBtb21lbnQKKworICAgICAgICAgICAgIyBQYXJzZSByZWNpcGVzIHNvIG91ciBuZXcgcmVjaXBlIGdldHMgcGlja2VkIHVwCisgICAgICAgICAgICB0aW5mb2lsLnBhcnNlX3JlY2lwZXMoKQorCisgICAgICAgICAgICBkZWYgZXZlbnRoYW5kbGVyKGV2ZW50KToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5mZXRjaDIuTWlzc2luZ0NoZWNrc3VtRXZlbnQpOgorICAgICAgICAgICAgICAgICAgICBjaGVja3N1bXMudXBkYXRlKGV2ZW50LmNoZWNrc3VtcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgIyBSdW4gdGhlIGZldGNoICsgdW5wYWNrIHRhc2tzCisgICAgICAgICAgICByZXMgPSB0aW5mb2lsLmJ1aWxkX3RhcmdldHMoZmV0Y2hyZWNpcGVwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9fdW5wYWNrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZXZlbnRzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZXZlbnRzPVsnYmIuZmV0Y2gyLk1pc3NpbmdDaGVja3N1bUV2ZW50J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FsbGJhY2s9ZXZlbnRoYW5kbGVyKQorICAgICAgICAgICAgaWYgbm90IHJlczoKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaFVybEZhaWx1cmUoc3JjdXJpKQorCisgICAgICAgICAgICAjIFJlbW92ZSB1bm5lZWRlZCBkaXJlY3RvcmllcworICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZShmZXRjaHJlY2lwZXBuKQorICAgICAgICAgICAgaWYgcmQ6CisgICAgICAgICAgICAgICAgcGF0aHZhcnMgPSBbJ1QnLCAnUkVDSVBFX1NZU1JPT1QnLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10KKyAgICAgICAgICAgICAgICBmb3IgcGF0aHZhciBpbiBwYXRodmFyczoKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHJkLmdldFZhcihwYXRodmFyKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBmZXRjaHJlY2lwZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmZXRjaHJlY2lwZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihmZXRjaHJlY2lwZWRpcikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9URU1QVFk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKHRtcHdvcmtkaXIpOgorICAgICAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHRtcHdvcmtkaXIsIGZuKSwgZGVzdGRpcikKKworICAgIGZpbmFsbHk6CisgICAgICAgIGlmIG5vdCBwcmVzZXJ2ZV90bXA6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHRtcGRpcikKKyAgICAgICAgICAgIHRtcGRpciA9IE5vbmUKKworICAgIHJldHVybiBjaGVja3N1bXMsIHRtcGRpcgorCisKK2RlZiBydW5fZWRpdG9yKGZuLCBsb2dnZXI9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShmbiwgc3RyKToKICAgICAgICAgcGFyYW1zID0gJyIlcyInICUgZm4KICAgICBlbHNlOgpAQCAtMTM0LDggKzIyMyw4IEBACiAgICAgZWRpdG9yID0gb3MuZ2V0ZW52KCdWSVNVQUwnLCBvcy5nZXRlbnYoJ0VESVRPUicsICd2aScpKQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgnJXMgJXMnICUgKGVkaXRvciwgcGFyYW1zKSwgc2hlbGw9VHJ1ZSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiRXhlY3V0aW9uIG9mIGVkaXRvciAnJXMnIGZhaWxlZDogJXMiLCBlZGl0b3IsIGV4YykKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhjOgorICAgICAgICBsb2dnZXIuZXJyb3IoIkV4ZWN1dGlvbiBvZiAnJXMnIGZhaWxlZDogJXMiICUgKGVkaXRvciwgZXhjKSkKICAgICAgICAgcmV0dXJuIDEKIAogZGVmIGlzX3NyY191cmwocGFyYW0pOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2NvbW1vbi53a3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2NvbW1vbi53a3MuaW5jCmluZGV4IDVjZjJmZDEuLjg5ODgwYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9jb21tb24ud2tzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvY29tbW9uLndrcy5pbmMKQEAgLTEsMyArMSwzIEBACiAjIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbnRvIDMgY2FubmVkIHdrcyBmaWxlcyBmcm9tIHRoaXMgZGlyZWN0b3J5CiBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYSAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0Ci1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0CitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tdXNlLXV1aWQgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcuY2ZnCmluZGV4IGQ1YTA3ZDIuLmM1OGU3NGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnLmNmZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZy5jZmcKQEAgLTEyLDE2ICsxMiwxNiBAQAogCiBMQUJFTCBHcmFwaGljcyBjb25zb2xlIGJvb3QKIEtFUk5FTCAvdm1saW51egotQVBQRU5EIGxhYmVsPWJvb3Qgcm9vdD0vZGV2L3NkYTIgcm9vdHdhaXQKK0FQUEVORCBsYWJlbD1ib290IHJvb3R3YWl0CiAKIExBQkVMIFNlcmlhbCBjb25zb2xlIGJvb3QKIEtFUk5FTCAvdm1saW51egotQVBQRU5EIGxhYmVsPWJvb3Qgcm9vdD0vZGV2L3NkYTIgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKK0FQUEVORCBsYWJlbD1ib290IHJvb3R3YWl0IGNvbnNvbGU9dHR5UzAsMTE1MjAwCiAKIExBQkVMIEdyYXBoaWNzIGNvbnNvbGUgaW5zdGFsbAogS0VSTkVMIC92bWxpbnV6Ci1BUFBFTkQgbGFiZWw9aW5zdGFsbCByb290PS9kZXYvc2RhMiByb290d2FpdAorQVBQRU5EIGxhYmVsPWluc3RhbGwgcm9vdHdhaXQKIAogTEFCRUwgU2VyaWFsIGNvbnNvbGUgaW5zdGFsbAogS0VSTkVMIC92bWxpbnV6Ci1BUFBFTkQgbGFiZWw9aW5zdGFsbCByb290PS9kZXYvc2RhMiByb290d2FpdCBjb25zb2xlPXR0eVMwLDExNTIwMAorQVBQRU5EIGxhYmVsPWluc3RhbGwgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKaW5kZXggZGIzMGJiYy4uMWY4NDY2YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKQEAgLTQsNSArNCw1IEBACiAKIGluY2x1ZGUgY29tbW9uLndrcy5pbmMKIAotYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPTY0MHg0ODAtMzIgcm9vdD0vZGV2L3NkYTIgcncgbWVtPTI1Nk0gaXA9MTkyLjE2OC43LjI6OjE5Mi4xNjguNy4xOjI1NS4yNTUuMjU1LjAgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgorYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPTY0MHg0ODAtMzIgcncgbWVtPTI1Nk0gaXA9MTkyLjE2OC43LjI6OjE5Mi4xNjguNy4xOjI1NS4yNTUuMjU1LjAgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3Mvc3lzdGVtZC1ib290ZGlzay53a3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3Mvc3lzdGVtZC1ib290ZGlzay53a3MKaW5kZXggNGJkOWQ2YS4uOTVkN2I5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3N5c3RlbWQtYm9vdGRpc2sud2tzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9zeXN0ZW1kLWJvb3RkaXNrLndrcwpAQCAtMiwxMCArMiwxMCBAQAogIyBsb25nLWRlc2NyaXB0aW9uOiBDcmVhdGVzIGEgcGFydGl0aW9uZWQgRUZJIGRpc2sgaW1hZ2UgdGhhdCB0aGUgdXNlcgogIyBjYW4gZGlyZWN0bHkgZGQgdG8gYm9vdCBtZWRpYS4gVGhlIHNlbGVjdGVkIGJvb3Rsb2FkZXIgaXMgc3lzdGVtZC1ib290LgogCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9c3lzdGVtZC1ib290IiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1lZmkgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj1zeXN0ZW1kLWJvb3QiIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCiAKIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAogCi1wYXJ0IHN3YXAgLS1vbmRpc2sgc2RhIC0tc2l6ZSA0NCAtLWxhYmVsIHN3YXAxIC0tZnN0eXBlPXN3YXAKK3BhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcCAtLXVzZS11dWlkCiAKIGJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290d2FpdCByb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQppbmRleCBmNTk4MjFmLi5lZGNmYWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQpAQCAtMzAsMTAgKzMwLDE3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGpzb24KK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0Citmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgorZnJvbSB3aWMuZmlsZW1hcCBpbXBvcnQgc3BhcnNlX2NvcHkKIGZyb20gd2ljLnBsdWdpbmJhc2UgaW1wb3J0IFBsdWdpbk1ncgotZnJvbSB3aWMudXRpbHMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIsIGV4ZWNfY21kCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC0yMDEsMTcgKzIwOCwxOCBAQAogICAgICIiIgogICAgIFByaW50IHRoZSBsaXN0IG9mIGltYWdlcyBvciBzb3VyY2UgcGx1Z2lucy4KICAgICAiIiIKLSAgICBpZiBsZW4oYXJncykgPCAxOgorICAgIGlmIGFyZ3MubGlzdF90eXBlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgaWYgYXJncyA9PSBbImltYWdlcyJdOgorICAgIGlmIGFyZ3MubGlzdF90eXBlID09ICJpbWFnZXMiOgorCiAgICAgICAgIGxpc3RfY2FubmVkX2ltYWdlcyhzY3JpcHRzX3BhdGgpCiAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZWxpZiBhcmdzID09IFsic291cmNlLXBsdWdpbnMiXToKKyAgICBlbGlmIGFyZ3MubGlzdF90eXBlID09ICJzb3VyY2UtcGx1Z2lucyI6CiAgICAgICAgIGxpc3Rfc291cmNlX3BsdWdpbnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgbGVuKGFyZ3MpID09IDIgYW5kIGFyZ3NbMV0gPT0gImhlbHAiOgotICAgICAgICB3a3NfZmlsZSA9IGFyZ3NbMF0KKyAgICBlbGlmIGxlbihhcmdzLmhlbHBfZm9yKSA9PSAxIGFuZCBhcmdzLmhlbHBfZm9yWzBdID09ICdoZWxwJzoKKyAgICAgICAgd2tzX2ZpbGUgPSBhcmdzLmxpc3RfdHlwZQogICAgICAgICBmdWxscGF0aCA9IGZpbmRfY2FubmVkX2ltYWdlKHNjcmlwdHNfcGF0aCwgd2tzX2ZpbGUpCiAgICAgICAgIGlmIG5vdCBmdWxscGF0aDoKICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJObyBpbWFnZSBuYW1lZCAlcyBmb3VuZCwgZXhpdGluZy4gIgpAQCAtMjI0LDYgKzIzMiwzMDYgQEAKIAogICAgIHJldHVybiBGYWxzZQogCisKK2NsYXNzIERpc2s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGltYWdlcGF0aCwgbmF0aXZlX3N5c3Jvb3QsIGZzdHlwZXM9KCdmYXQnLCAnZXh0JykpOgorICAgICAgICBzZWxmLmltYWdlcGF0aCA9IGltYWdlcGF0aAorICAgICAgICBzZWxmLm5hdGl2ZV9zeXNyb290ID0gbmF0aXZlX3N5c3Jvb3QKKyAgICAgICAgc2VsZi5mc3R5cGVzID0gZnN0eXBlcworICAgICAgICBzZWxmLl9wYXJ0aXRpb25zID0gTm9uZQorICAgICAgICBzZWxmLl9wYXJ0aW1hZ2VzID0ge30KKyAgICAgICAgc2VsZi5fbHNlY3Rvcl9zaXplID0gTm9uZQorICAgICAgICBzZWxmLl9wc2VjdG9yX3NpemUgPSBOb25lCisgICAgICAgIHNlbGYuX3B0YWJsZV9mb3JtYXQgPSBOb25lCisKKyAgICAgICAgIyBmaW5kIHBhcnRlZAorICAgICAgICBzZWxmLnBhdGhzID0gIi9iaW46L3Vzci9iaW46L3Vzci9zYmluOi9zYmluLyIKKyAgICAgICAgaWYgbmF0aXZlX3N5c3Jvb3Q6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRocyA9ICIlcyVzOiVzIiAlIChuYXRpdmVfc3lzcm9vdCwgcGF0aCwgc2VsZi5wYXRocykKKworICAgICAgICBzZWxmLnBhcnRlZCA9IGZpbmRfZXhlY3V0YWJsZSgicGFydGVkIiwgc2VsZi5wYXRocykKKyAgICAgICAgaWYgbm90IHNlbGYucGFydGVkOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbid0IGZpbmQgZXhlY3V0YWJsZSBwYXJ0ZWQiKQorCisgICAgICAgIHNlbGYucGFydGl0aW9ucyA9IHNlbGYuZ2V0X3BhcnRpdGlvbnMoKQorCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX3BhcnRpbWFnZXMudmFsdWVzKCk6CisgICAgICAgICAgICBvcy51bmxpbmsocGF0aCkKKworICAgIGRlZiBnZXRfcGFydGl0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcGFydGl0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFydGl0aW9ucyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCIlcyAtc20gJXMgdW5pdCBCIHByaW50IiAlIChzZWxmLnBhcnRlZCwgc2VsZi5pbWFnZXBhdGgpKQorICAgICAgICAgICAgcGFydHR5cGUgPSBuYW1lZHR1cGxlKCJQYXJ0IiwgInBudW0gc3RhcnQgZW5kIHNpemUgZnN0eXBlIikKKyAgICAgICAgICAgIHNwbGl0dGVkID0gb3V0LnNwbGl0bGluZXMoKQorICAgICAgICAgICAgbHNlY3Rvcl9zaXplLCBwc2VjdG9yX3NpemUsIHNlbGYuX3B0YWJsZV9mb3JtYXQgPSBzcGxpdHRlZFsxXS5zcGxpdCgiOiIpWzM6Nl0KKyAgICAgICAgICAgIHNlbGYuX2xzZWN0b3Jfc2l6ZSA9IGludChsc2VjdG9yX3NpemUpCisgICAgICAgICAgICBzZWxmLl9wc2VjdG9yX3NpemUgPSBpbnQocHNlY3Rvcl9zaXplKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3BsaXR0ZWRbMjpdOgorICAgICAgICAgICAgICAgIHBudW0sIHN0YXJ0LCBlbmQsIHNpemUsIGZzdHlwZSA9IGxpbmUuc3BsaXQoJzonKVs6NV0KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBwYXJ0dHlwZShpbnQocG51bSksIGludChzdGFydFs6LTFdKSwgaW50KGVuZFs6LTFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2l6ZVs6LTFdKSwgZnN0eXBlKQorICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRpdGlvbnNbcG51bV0gPSBwYXJ0aXRpb24KKworICAgICAgICByZXR1cm4gc2VsZi5fcGFydGl0aW9ucworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSBpbiBhIGxhenkgd2F5LiIiIgorICAgICAgICBpZiBuYW1lIGluICgibWRpciIsICJtY29weSIsICJtZGVsIiwgIm1kZWx0cmVlIiwgInNmZGlzayIsICJlMmZzY2siLAorICAgICAgICAgICAgICAgICAgICAicmVzaXplMmZzIiwgIm1rc3dhcCIsICJta2Rvc2ZzIiwgImRlYnVnZnMiKToKKyAgICAgICAgICAgIGFuYW1lID0gIl8lcyIgJSBuYW1lCisgICAgICAgICAgICBpZiBhbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGFuYW1lLCBmaW5kX2V4ZWN1dGFibGUobmFtZSwgc2VsZi5wYXRocykpCisgICAgICAgICAgICAgICAgaWYgYW5hbWUgbm90IGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDYW4ndCBmaW5kIGV4ZWN1dGFibGUge30iLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fW2FuYW1lXQorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1tuYW1lXQorCisgICAgZGVmIF9nZXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKKyAgICAgICAgaWYgcG51bSBub3QgaW4gc2VsZi5wYXJ0aXRpb25zOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIikKKyAgICAgICAgcGFydCA9IHNlbGYucGFydGl0aW9uc1twbnVtXQorICAgICAgICAjIGNoZWNrIGlmIGZzdHlwZSBpcyBzdXBwb3J0ZWQKKyAgICAgICAgZm9yIGZzdHlwZSBpbiBzZWxmLmZzdHlwZXM6CisgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZS5zdGFydHN3aXRoKGZzdHlwZSk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJOb3Qgc3VwcG9ydGVkIGZzdHlwZToge30iLmZvcm1hdChwYXJ0LmZzdHlwZSkpCisgICAgICAgIGlmIHBudW0gbm90IGluIHNlbGYuX3BhcnRpbWFnZXM6CisgICAgICAgICAgICB0bXBmID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHByZWZpeD0id2ljLXBhcnQiKQorICAgICAgICAgICAgZHN0X2ZuYW1lID0gdG1wZi5uYW1lCisgICAgICAgICAgICB0bXBmLmNsb3NlKCkKKyAgICAgICAgICAgIHNwYXJzZV9jb3B5KHNlbGYuaW1hZ2VwYXRoLCBkc3RfZm5hbWUsIHNraXA9cGFydC5zdGFydCwgbGVuZ3RoPXBhcnQuc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuX3BhcnRpbWFnZXNbcG51bV0gPSBkc3RfZm5hbWUKKworICAgICAgICByZXR1cm4gc2VsZi5fcGFydGltYWdlc1twbnVtXQorCisgICAgZGVmIF9wdXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKKyAgICAgICAgIiIiUHV0IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHBhcnRpdGlvbmVkIGltYWdlLiIiIgorICAgICAgICBzcGFyc2VfY29weShzZWxmLl9wYXJ0aW1hZ2VzW3BudW1dLCBzZWxmLmltYWdlcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc2Vlaz1zZWxmLnBhcnRpdGlvbnNbcG51bV0uc3RhcnQpCisKKyAgICBkZWYgZGlyKHNlbGYsIHBudW0sIHBhdGgpOgorICAgICAgICBpZiBzZWxmLnBhcnRpdGlvbnNbcG51bV0uZnN0eXBlLnN0YXJ0c3dpdGgoJ2V4dCcpOgorICAgICAgICAgICAgcmV0dXJuIGV4ZWNfY21kKCJ7fSB7fSAtUiAnbHMgLWwge30nIi5mb3JtYXQoc2VsZi5kZWJ1Z2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKSwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgZWxzZTogIyBmYXQKKyAgICAgICAgICAgIHJldHVybiBleGVjX2NtZCgie30gLWkge30gOjp7fSIuZm9ybWF0KHNlbGYubWRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCkpCisKKyAgICBkZWYgY29weShzZWxmLCBzcmMsIHBudW0sIHBhdGgpOgorICAgICAgICAiIiJDb3B5IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgaWYgc2VsZi5wYXJ0aXRpb25zW3BudW1dLmZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgIGNtZCA9ICJlY2hvIC1lICdjZCB7fVxud3JpdGUge30ge30nIHwge30gLXcge30iLlwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQocGF0aCwgc3JjLCBvcy5wYXRoLmJhc2VuYW1lKHNyYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdmcywgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpCisgICAgICAgIGVsc2U6ICMgZmF0CisgICAgICAgICAgICBjbWQgPSAie30gLWkge30gLXNub3Age30gOjp7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIHBhdGgpCisgICAgICAgIGV4ZWNfY21kKGNtZCwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcHV0X3BhcnRfaW1hZ2UocG51bSkKKworICAgIGRlZiByZW1vdmUoc2VsZiwgcG51bSwgcGF0aCk6CisgICAgICAgICIiIlJlbW92ZSBmaWxlcy9kaXJzIGZyb20gdGhlIHBhcnRpdGlvbi4iIiIKKyAgICAgICAgcGFydGltZyA9IHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pCisgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6CisgICAgICAgICAgICBleGVjX2NtZCgie30ge30gLXdSICdybSB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpLCBhc19zaGVsbD1UcnVlKQorICAgICAgICBlbHNlOiAjIGZhdAorICAgICAgICAgICAgY21kID0gInt9IC1pIHt9IDo6e30iLmZvcm1hdChzZWxmLm1kZWwsIHBhcnRpbWcsIHBhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZXhlY19jbWQoY21kKQorICAgICAgICAgICAgZXhjZXB0IFdpY0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiAibm90IGZvdW5kIiBpbiBzdHIoZXJyKSBvciAibm9uIGVtcHR5IiBpbiBzdHIoZXJyKToKKyAgICAgICAgICAgICAgICAgICAgIyBtZGVsIG91dHB1dHMgJ0ZpbGUgLi4uIG5vdCBmb3VuZCcgb3IgJ2RpcmVjdG9yeSAuLiBub24gZW1wdHkiCisgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIHVzZSBtZGVsdHJlZSBhcyBwYXRoIGNvdWxkIGJlIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tZGVsdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aW1nLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyCisgICAgICAgIHNlbGYuX3B1dF9wYXJ0X2ltYWdlKHBudW0pCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgdGFyZ2V0LCBleHBhbmQpOgorICAgICAgICAiIiJXcml0ZSBkaXNrIGltYWdlIHRvIHRoZSBtZWRpYSBvciBmaWxlLiIiIgorICAgICAgICBkZWYgd3JpdGVfc2ZkaXNrX3NjcmlwdChvdXRmLCBwYXJ0cyk6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gcGFydHNbJ3BhcnRpdGlvbnRhYmxlJ10uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gKCJwYXJ0aXRpb25zIiwgImRldmljZSIsICJmaXJzdGxiYSIsICJsYXN0bGJhIik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJpZCI6CisgICAgICAgICAgICAgICAgICAgIGtleSA9ICJsYWJlbC1pZCIKKyAgICAgICAgICAgICAgICBvdXRmLndyaXRlKCJ7fToge31cbiIuZm9ybWF0KGtleSwgdmFsKSkKKyAgICAgICAgICAgIG91dGYud3JpdGUoIlxuIikKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ106CisgICAgICAgICAgICAgICAgbGluZSA9ICcnCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhdHRycycsICduYW1lJywgJ3NpemUnLCAndHlwZScsICd1dWlkJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ3NpemUnIGFuZCBwYXJ0Wyd0eXBlJ10gPT0gJ2YnOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCB3cml0ZSBzaXplIGZvciBleHRlbmRlZCBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnQuZ2V0KG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHZhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJ3t9PXt9LCAnLmZvcm1hdChuYW1lLCB2YWwpCisgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXSAjIHN0cmlwICcsICcKKyAgICAgICAgICAgICAgICBpZiBwYXJ0LmdldCgnYm9vdGFibGUnKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnICxib290YWJsZScKKyAgICAgICAgICAgICAgICBvdXRmLndyaXRlKCJ7fVxuIi5mb3JtYXQobGluZSkpCisgICAgICAgICAgICBvdXRmLmZsdXNoKCkKKworICAgICAgICBkZWYgcmVhZF9wdGFibGUocGF0aCk6CisgICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLWRKIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMob3V0KQorCisgICAgICAgIGRlZiB3cml0ZV9wdGFibGUocGFydHMsIHRhcmdldCk6CisgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9IndpYy1zZmRpc2stIiwgbW9kZT0ndycpIGFzIG91dGY6CisgICAgICAgICAgICAgICAgd3JpdGVfc2ZkaXNrX3NjcmlwdChvdXRmLCBwYXJ0cykKKyAgICAgICAgICAgICAgICBjbWQgPSAie30gLS1uby1yZXJlYWQge30gPCB7fSAyPi9kZXYvbnVsbCIuZm9ybWF0KHNlbGYuc2ZkaXNrLCB0YXJnZXQsIG91dGYubmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ2FuJ3QgcnVuICd7fScgY29tbWFuZDoge30iLmZvcm1hdChjbWQsIGVycikpCisKKyAgICAgICAgaWYgZXhwYW5kIGlzIE5vbmU6CisgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLmltYWdlcGF0aCwgdGFyZ2V0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBjb3B5IGZpcnN0IHNlY3RvcnMgdGhhdCBtYXkgY29udGFpbiBib290bG9hZGVyCisgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLmltYWdlcGF0aCwgdGFyZ2V0LCBsZW5ndGg9MjA0OCAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKKworICAgICAgICAgICAgIyBjb3B5IHNvdXJjZSBwYXJ0aXRpb24gdGFibGUgdG8gdGhlIHRhcmdldAorICAgICAgICAgICAgcGFydHMgPSByZWFkX3B0YWJsZShzZWxmLmltYWdlcGF0aCkKKyAgICAgICAgICAgIHdyaXRlX3B0YWJsZShwYXJ0cywgdGFyZ2V0KQorCisgICAgICAgICAgICAjIGdldCBzaXplIG9mIHVucGFydGl0aW9uZWQgc3BhY2UKKyAgICAgICAgICAgIGZyZWUgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBleGVjX2NtZCgie30gLUYge30iLmZvcm1hdChzZWxmLnNmZGlzaywgdGFyZ2V0KSkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiVW5wYXJ0aXRpb25lZCBzcGFjZSAiKSBhbmQgbGluZS5lbmRzd2l0aCgic2VjdG9ycyIpOgorICAgICAgICAgICAgICAgICAgICBmcmVlID0gaW50KGxpbmUuc3BsaXQoKVstMl0pCisgICAgICAgICAgICBpZiBmcmVlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbid0IGdldCBzaXplIG9mIHVucGFydGl0aW9uZWQgc3BhY2UiKQorCisgICAgICAgICAgICAjIGNhbGN1bGF0ZSBleHBhbmRlZCBwYXJ0aXRpb25zIHNpemVzCisgICAgICAgICAgICBzaXplcyA9IHt9CisgICAgICAgICAgICBmb3IgbnVtLCBwYXJ0IGluIGVudW1lcmF0ZShwYXJ0c1sncGFydGl0aW9udGFibGUnXVsncGFydGl0aW9ucyddLCAxKToKKyAgICAgICAgICAgICAgICBpZiBudW0gaW4gZXhwYW5kOgorICAgICAgICAgICAgICAgICAgICBpZiBleHBhbmRbbnVtXSAhPSAwOiAjIGRvbid0IHJlc2l6ZSBwYXJ0aXRpb24gaWYgc2l6ZSBpcyBzZXQgdG8gMAorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdG9ycyA9IGV4cGFuZFtudW1dIC8vIHNlbGYuX2xzZWN0b3Jfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSAtPSBzZWN0b3JzIC0gcGFydFsnc2l6ZSddCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0WydzaXplJ10gPSBzZWN0b3JzCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplc1tudW1dID0gc2VjdG9ycworICAgICAgICAgICAgICAgIGVsaWYgcGFydFsndHlwZSddICE9ICdmJzoKKyAgICAgICAgICAgICAgICAgICAgc2l6ZXNbbnVtXSA9IC0xCisKKyAgICAgICAgICAgIGZvciBudW0sIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ10sIDEpOgorICAgICAgICAgICAgICAgIGlmIHNpemVzLmdldChudW0pID09IC0xOgorICAgICAgICAgICAgICAgICAgICBwYXJ0WydzaXplJ10gKz0gZnJlZSAvLyBsZW4oc2l6ZXMpCisKKyAgICAgICAgICAgICMgd3JpdGUgcmVzaXplZCBwYXJ0aXRpb24gdGFibGUgdG8gdGhlIHRhcmdldAorICAgICAgICAgICAgd3JpdGVfcHRhYmxlKHBhcnRzLCB0YXJnZXQpCisKKyAgICAgICAgICAgICMgcmVhZCByZXNpemVkIHBhcnRpdGlvbiB0YWJsZQorICAgICAgICAgICAgcGFydHMgPSByZWFkX3B0YWJsZSh0YXJnZXQpCisKKyAgICAgICAgICAgICMgY29weSBwYXJ0aXRpb25zIGNvbnRlbnQKKyAgICAgICAgICAgIGZvciBudW0sIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ10sIDEpOgorICAgICAgICAgICAgICAgIHBudW0gPSBzdHIobnVtKQorICAgICAgICAgICAgICAgIGZzdHlwZSA9IHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUKKworICAgICAgICAgICAgICAgICMgY29weSB1bmNoYW5nZWQgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgaWYgcGFydFsnc2l6ZSddID09IHNlbGYucGFydGl0aW9uc1twbnVtXS5zaXplIC8vIHNlbGYuX2xzZWN0b3Jfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNvcHlpbmcgdW5jaGFuZ2VkIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQorICAgICAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwgdGFyZ2V0LCBzZWVrPXBhcnRbJ3N0YXJ0J10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIHJlc2l6ZSBvciByZS1jcmVhdGUgcGFydGl0aW9ucworICAgICAgICAgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKSBvciBmc3R5cGUuc3RhcnRzd2l0aCgnZmF0Jykgb3IgXAorICAgICAgICAgICAgICAgICAgIGZzdHlwZS5zdGFydHN3aXRoKCdsaW51eC1zd2FwJyk6CisKKyAgICAgICAgICAgICAgICAgICAgcGFydGZuYW1lID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9IndpYy1wYXJ0e30tIi5mb3JtYXQocG51bSkpIGFzIHBhcnRmOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGZuYW1lID0gcGFydGYubmFtZQorCisgICAgICAgICAgICAgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJyZXNpemluZyBleHQgcGFydGl0aW9uIHt9Ii5mb3JtYXQocG51bSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aW1nID0gc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV9jb3B5KHBhcnRpbWcsIHBhcnRmbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKCJ7fSAtcGYge30iLmZvcm1hdChzZWxmLmUyZnNjaywgcGFydGZuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKCJ7fSB7fSB7fXMiLmZvcm1hdChcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc2l6ZTJmcywgcGFydGZuYW1lLCBwYXJ0WydzaXplJ10pKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGZzdHlwZS5zdGFydHN3aXRoKCdmYXQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjb3B5aW5nIGNvbnRlbnQgb2YgdGhlIGZhdCBwYXJ0aXRpb24ge30iLmZvcm1hdChwbnVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0nd2ljLWZhdGRpci0nKSBhcyB0bXBkaXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3B5IGNvbnRlbnQgdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSAie30gLXNub21waSB7fSA6OiB7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgbmV3IG1zZG9zIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gcGFydC5nZXQoIm5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItbiB7fSIuZm9ybWF0KGxhYmVsKSBpZiBsYWJlbCBlbHNlICcnCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSAie30ge30gLUMge30ge30iLmZvcm1hdChzZWxmLm1rZG9zZnMsIGxhYmVsX3N0ciwgcGFydGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbJ3NpemUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3B5IGNvbnRlbnQgZnJvbSB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byB0aGUgbmV3IHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtc25vbXBpIHt9IHt9LyogOjoiLmZvcm1hdChzZWxmLm1jb3B5LCBwYXJ0Zm5hbWUsIHRtcGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQsIGFzX3NoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZnN0eXBlLnN0YXJ0c3dpdGgoJ2xpbnV4LXN3YXAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyBzd2FwIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXJ0LmdldCgibmFtZSIpCisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwge30iLmZvcm1hdChsYWJlbCkgaWYgbGFiZWwgZWxzZSAnJworICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHBhcnQuZ2V0KCJ1dWlkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHV1aWRfc3RyID0gIi1VIHt9Ii5mb3JtYXQodXVpZCkgaWYgdXVpZCBlbHNlICcnCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGFydGZuYW1lLCAndycpIGFzIHNwYXJzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc3BhcnNlLmZpbGVubygpLCBwYXJ0WydzaXplJ10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZCgie30ge30ge30ge30iLmZvcm1hdChzZWxmLm1rc3dhcCwgbGFiZWxfc3RyLCB1dWlkX3N0ciwgcGFydGZuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkocGFydGZuYW1lLCB0YXJnZXQsIHNlZWs9cGFydFsnc3RhcnQnXSAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHBhcnRmbmFtZSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcnRbJ3R5cGUnXSAhPSAnZic6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJza2lwcGluZyBwYXJ0aXRpb24ge306IHVuc3VwcG9ydGVkIGZzdHlwZSB7fSIuZm9ybWF0KHBudW0sIGZzdHlwZSkpCisKK2RlZiB3aWNfbHMoYXJncywgbmF0aXZlX3N5c3Jvb3QpOgorICAgICIiIkxpc3QgY29udGVudHMgb2YgcGFydGl0aW9uZWQgaW1hZ2Ugb3IgdmZhdCBwYXJ0aXRpb24uIiIiCisgICAgZGlzayA9IERpc2soYXJncy5wYXRoLmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKKyAgICBpZiBub3QgYXJncy5wYXRoLnBhcnQ6CisgICAgICAgIGlmIGRpc2sucGFydGl0aW9uczoKKyAgICAgICAgICAgIHByaW50KCdOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZScpCisgICAgICAgICAgICBmb3IgcGFydCBpbiBkaXNrLnBhcnRpdGlvbnMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoIns6MmR9ICB7OjEyZH0gezoxMmR9IHs6MTJkfSAge30iLmZvcm1hdChcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQucG51bSwgcGFydC5zdGFydCwgcGFydC5lbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQuc2l6ZSwgcGFydC5mc3R5cGUpKQorICAgIGVsc2U6CisgICAgICAgIHBhdGggPSBhcmdzLnBhdGgucGF0aCBvciAnLycKKyAgICAgICAgcHJpbnQoZGlzay5kaXIoYXJncy5wYXRoLnBhcnQsIHBhdGgpKQorCitkZWYgd2ljX2NwKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKKyAgICAiIiIKKyAgICBDb3B5IGxvY2FsIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSB2ZmF0IHBhcnRpdGlvbiBvZgorICAgIHBhcnRpdGlvbmVkIGltYWdlLgorICAgICIiIgorICAgIGRpc2sgPSBEaXNrKGFyZ3MuZGVzdC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZGlzay5jb3B5KGFyZ3Muc3JjLCBhcmdzLmRlc3QucGFydCwgYXJncy5kZXN0LnBhdGgpCisKK2RlZiB3aWNfcm0oYXJncywgbmF0aXZlX3N5c3Jvb3QpOgorICAgICIiIgorICAgIFJlbW92ZSBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IHBhcnRpdGlvbiBvZgorICAgIHBhcnRpdGlvbmVkIGltYWdlLgorICAgICIiIgorICAgIGRpc2sgPSBEaXNrKGFyZ3MucGF0aC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZGlzay5yZW1vdmUoYXJncy5wYXRoLnBhcnQsIGFyZ3MucGF0aC5wYXRoKQorCitkZWYgd2ljX3dyaXRlKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKKyAgICAiIiIKKyAgICBXcml0ZSBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UuCisgICAgIiIiCisgICAgZGlzayA9IERpc2soYXJncy5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QsICgnZmF0JywgJ2V4dCcsICdzd2FwJykpCisgICAgZGlzay53cml0ZShhcmdzLnRhcmdldCwgYXJncy5leHBhbmQpCisKIGRlZiBmaW5kX2Nhbm5lZChzY3JpcHRzX3BhdGgsIGZpbGVfbmFtZSk6CiAgICAgIiIiCiAgICAgRmluZCBhIGZpbGUgZWl0aGVyIGJ5IGl0cyBwYXRoIG9yIGJ5IG5hbWUgaW4gdGhlIGNhbm5lZCBmaWxlcyBkaXIuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKaW5kZXggMWYxYWFjYy4uNzdlMzJiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQpAQCAtMzQsMTMgKzM0LDkgQEAKICAgICBSZXR1cm5zIGJsb2NrIHNpemUgZm9yIGZpbGUgb2JqZWN0ICdmaWxlX29iaicuIEVycm9ycyBhcmUgaW5kaWNhdGVkIGJ5IHRoZQogICAgICdJT0Vycm9yJyBleGNlcHRpb24uCiAgICAgIiIiCi0KLSAgICBmcm9tIGZjbnRsIGltcG9ydCBpb2N0bAotICAgIGltcG9ydCBzdHJ1Y3QKLQogICAgICMgR2V0IHRoZSBibG9jayBzaXplIG9mIHRoZSBob3N0IGZpbGUtc3lzdGVtIGZvciB0aGUgaW1hZ2UgZmlsZSBieSBjYWxsaW5nCiAgICAgIyB0aGUgRklHRVRCU1ogaW9jdGwgKG51bWJlciAyKS4KLSAgICBiaW5hcnlfZGF0YSA9IGlvY3RsKGZpbGVfb2JqLCAyLCBzdHJ1Y3QucGFjaygnSScsIDApKQorICAgIGJpbmFyeV9kYXRhID0gZmNudGwuaW9jdGwoZmlsZV9vYmosIDIsIHN0cnVjdC5wYWNrKCdJJywgMCkpCiAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJ0knLCBiaW5hcnlfZGF0YSlbMF0KIAogY2xhc3MgRXJyb3JOb3RTdXBwKEV4Y2VwdGlvbik6CkBAIC0yMjgsNyArMjI0LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdG1wX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoIncrIiwgZGlyPWRpcmVjdG9yeSkKICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgRXJyb3JOb3RTdXBwKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGluIFwiJXNcIjogJXMiCisgICAgICAgICAgICByYWlzZSBFcnJvck5vdFN1cHAoImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgaW4gXCIlc1wiOiAlcyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZGlyZWN0b3J5LCBlcnIpKQogCiAgICAgICAgIHRyeToKQEAgLTUzMCw4ICs1MjYsMTggQEAKICAgICBleGNlcHQgRXJyb3JOb3RTdXBwOgogICAgICAgICByZXR1cm4gRmlsZW1hcFNlZWsoaW1hZ2UsIGxvZykKIAotZGVmIHNwYXJzZV9jb3B5KHNyY19mbmFtZSwgZHN0X2ZuYW1lLCBvZmZzZXQ9MCwgc2tpcD0wLCBhcGk9Tm9uZSk6Ci0gICAgIiIiRWZmaWNpZW50bHkgY29weSBzcGFyc2UgZmlsZSB0byBvciBpbnRvIGFub3RoZXIgZmlsZS4iIiIKK2RlZiBzcGFyc2VfY29weShzcmNfZm5hbWUsIGRzdF9mbmFtZSwgc2tpcD0wLCBzZWVrPTAsCisgICAgICAgICAgICAgICAgbGVuZ3RoPTAsIGFwaT1Ob25lKToKKyAgICAiIiIKKyAgICBFZmZpY2llbnRseSBjb3B5IHNwYXJzZSBmaWxlIHRvIG9yIGludG8gYW5vdGhlciBmaWxlLgorCisgICAgc3JjX2ZuYW1lOiBwYXRoIHRvIHNvdXJjZSBmaWxlCisgICAgZHN0X2ZuYW1lOiBwYXRoIHRvIGRlc3RpbmF0aW9uIGZpbGUKKyAgICBza2lwOiBza2lwIE4gYnl0ZXMgYXQgdGhlc3RhcnQgb2Ygc3JjCisgICAgc2Vlazogc2VlayBOIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIGRzdAorICAgIGxlbmd0aDogcmVhZCBOIGJ5dGVzIGZyb20gc3JjIGFuZCB3cml0ZSB0aGVtIHRvIGRzdAorICAgIGFwaTogRmlsZW1hcEZpZW1hcCBvciBGaWxlbWFwU2VlayBvYmplY3QKKyAgICAiIiIKICAgICBpZiBub3QgYXBpOgogICAgICAgICBhcGkgPSBmaWxlbWFwCiAgICAgZm1hcCA9IGFwaShzcmNfZm5hbWUpCkBAIC01MzksMTcgKzU0NSwzMiBAQAogICAgICAgICBkc3RfZmlsZSA9IG9wZW4oZHN0X2ZuYW1lLCAncitiJykKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgZHN0X2ZpbGUgPSBvcGVuKGRzdF9mbmFtZSwgJ3diJykKLSAgICAgICAgZHN0X2ZpbGUudHJ1bmNhdGUob3MucGF0aC5nZXRzaXplKHNyY19mbmFtZSkpCisgICAgICAgIGlmIGxlbmd0aDoKKyAgICAgICAgICAgIGRzdF9zaXplID0gbGVuZ3RoICsgc2VlaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZHN0X3NpemUgPSBvcy5wYXRoLmdldHNpemUoc3JjX2ZuYW1lKSArIHNlZWsgLSBza2lwCisgICAgICAgIGRzdF9maWxlLnRydW5jYXRlKGRzdF9zaXplKQogCisgICAgd3JpdHRlbiA9IDAKICAgICBmb3IgZmlyc3QsIGxhc3QgaW4gZm1hcC5nZXRfbWFwcGVkX3JhbmdlcygwLCBmbWFwLmJsb2Nrc19jbnQpOgogICAgICAgICBzdGFydCA9IGZpcnN0ICogZm1hcC5ibG9ja19zaXplCiAgICAgICAgIGVuZCA9IChsYXN0ICsgMSkgKiBmbWFwLmJsb2NrX3NpemUKIAorICAgICAgICBpZiBza2lwID49IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgaWYgc3RhcnQgPCBza2lwIDwgZW5kOgotICAgICAgICAgICAgZm1hcC5fZl9pbWFnZS5zZWVrKHNraXAsIG9zLlNFRUtfU0VUKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm1hcC5fZl9pbWFnZS5zZWVrKHN0YXJ0LCBvcy5TRUVLX1NFVCkKLSAgICAgICAgZHN0X2ZpbGUuc2VlayhvZmZzZXQgKyBzdGFydCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzdGFydCA9IHNraXAKKworICAgICAgICBmbWFwLl9mX2ltYWdlLnNlZWsoc3RhcnQsIG9zLlNFRUtfU0VUKQorCisgICAgICAgIHdyaXR0ZW4gKz0gc3RhcnQgLSBza2lwIC0gd3JpdHRlbgorICAgICAgICBpZiBsZW5ndGggYW5kIHdyaXR0ZW4gPj0gbGVuZ3RoOgorICAgICAgICAgICAgZHN0X2ZpbGUuc2VlayhzZWVrICsgbGVuZ3RoLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGRzdF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGRzdF9maWxlLnNlZWsoc2VlayArIHN0YXJ0IC0gc2tpcCwgb3MuU0VFS19TRVQpCiAKICAgICAgICAgY2h1bmtfc2l6ZSA9IDEwMjQgKiAxMDI0CiAgICAgICAgIHRvX3JlYWQgPSBlbmQgLSBzdGFydApAQCAtNTU4LDcgKzU3OSwxNCBAQAogICAgICAgICB3aGlsZSByZWFkIDwgdG9fcmVhZDoKICAgICAgICAgICAgIGlmIHJlYWQgKyBjaHVua19zaXplID4gdG9fcmVhZDoKICAgICAgICAgICAgICAgICBjaHVua19zaXplID0gdG9fcmVhZCAtIHJlYWQKLSAgICAgICAgICAgIGNodW5rID0gZm1hcC5fZl9pbWFnZS5yZWFkKGNodW5rX3NpemUpCisgICAgICAgICAgICBzaXplID0gY2h1bmtfc2l6ZQorICAgICAgICAgICAgaWYgbGVuZ3RoIGFuZCB3cml0dGVuICsgc2l6ZSA+IGxlbmd0aDoKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuZ3RoIC0gd3JpdHRlbgorICAgICAgICAgICAgY2h1bmsgPSBmbWFwLl9mX2ltYWdlLnJlYWQoc2l6ZSkKICAgICAgICAgICAgIGRzdF9maWxlLndyaXRlKGNodW5rKQotICAgICAgICAgICAgcmVhZCArPSBjaHVua19zaXplCisgICAgICAgICAgICByZWFkICs9IHNpemUKKyAgICAgICAgICAgIHdyaXR0ZW4gKz0gc2l6ZQorICAgICAgICAgICAgaWYgd3JpdHRlbiA9PSBsZW5ndGg6CisgICAgICAgICAgICAgICAgZHN0X2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgIGRzdF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQppbmRleCBkNmUwMjdkLi4yYWM0NWUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CkBAIC01Niw3ICs1Niw3IEBACiAgICAgIiIiCiAgICAgU3ViY29tbWFuZCBoZWxwIGRpc3BhdGNoZXIuCiAgICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpID09IDEgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzWzFdLCBzdWJjb21tYW5kcyk6CisgICAgaWYgYXJncy5oZWxwX3RvcGljID09IE5vbmUgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzLmhlbHBfdG9waWMsIHN1YmNvbW1hbmRzKToKICAgICAgICAgcHJpbnQodXNhZ2Vfc3RyKQogCiAKQEAgLTgyLDE5ICs4MiwyMCBAQAogICAgIERpc3BhdGNoIHRvIHN1YmNvbW1hbmQgaGFuZGxlciBib3Jyb3dlZCBmcm9tIGNvbWJvLWxheWVyLgogICAgIFNob3VsZCB1c2UgYXJncGFyc2UsIGJ1dCBoYXMgdG8gd29yayBpbiAyLjYuCiAgICAgIiIiCi0gICAgaWYgbm90IGFyZ3M6CisgICAgaWYgbm90IGFyZ3MuY29tbWFuZDoKICAgICAgICAgbG9nZ2VyLmVycm9yKCJObyBzdWJjb21tYW5kIHNwZWNpZmllZCwgZXhpdGluZyIpCiAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgcmV0dXJuIDEKLSAgICBlbGlmIGFyZ3NbMF0gPT0gImhlbHAiOgorICAgIGVsaWYgYXJncy5jb21tYW5kID09ICJoZWxwIjoKICAgICAgICAgd2ljX2hlbHAoYXJncywgbWFpbl9jb21tYW5kX3VzYWdlLCBzdWJjb21tYW5kcykKLSAgICBlbGlmIGFyZ3NbMF0gbm90IGluIHN1YmNvbW1hbmRzOgotICAgICAgICBsb2dnZXIuZXJyb3IoIlVuc3VwcG9ydGVkIHN1YmNvbW1hbmQgJXMsIGV4aXRpbmdcbiIsIGFyZ3NbMF0pCisgICAgZWxpZiBhcmdzLmNvbW1hbmQgbm90IGluIHN1YmNvbW1hbmRzOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuc3VwcG9ydGVkIHN1YmNvbW1hbmQgJXMsIGV4aXRpbmdcbiIsIGFyZ3MuY29tbWFuZCkKICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQogICAgICAgICByZXR1cm4gMQogICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlID0gc3ViY29tbWFuZHMuZ2V0KGFyZ3NbMF0sIHN1YmNvbW1hbmRfZXJyb3IpWzFdCi0gICAgICAgIHN1YmNvbW1hbmRzLmdldChhcmdzWzBdLCBzdWJjb21tYW5kX2Vycm9yKVswXShhcmdzWzE6XSwgdXNhZ2UpCisgICAgICAgIHN1YmNtZCA9IHN1YmNvbW1hbmRzLmdldChhcmdzLmNvbW1hbmQsIHN1YmNvbW1hbmRfZXJyb3IpCisgICAgICAgIHVzYWdlID0gc3ViY21kWzFdCisgICAgICAgIHN1YmNtZFswXShhcmdzLCB1c2FnZSkKIAogCiAjIwpAQCAtMTMwLDEwICsxMzEsMTAgQEAKICBDcmVhdGUgYSBuZXcgT3BlbkVtYmVkZGVkIGltYWdlCiAKICB1c2FnZTogd2ljIGNyZWF0ZSA8d2tzIGZpbGUgb3IgaW1hZ2UgbmFtZT4gWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgICAgIFstaSA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC0taW5maWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQogICAgICAgICAgICAgWy1lIHwgLS1pbWFnZS1uYW1lXSBbLXMsIC0tc2tpcC1idWlsZC1jaGVja10gWy1ELCAtLWRlYnVnXQogICAgICAgICAgICAgWy1yLCAtLXJvb3Rmcy1kaXJdIFstYiwgLS1ib290aW1nLWRpcl0KICAgICAgICAgICAgIFstaywgLS1rZXJuZWwtZGlyXSBbLW4sIC0tbmF0aXZlLXN5c3Jvb3RdIFstZiwgLS1idWlsZC1yb290ZnNdCisgICAgICAgICAgICBbLWMsIC0tY29tcHJlc3Mtd2l0aF0gWy1tLCAtLWJtYXBdCiAKICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhbiBPcGVuRW1iZWRkZWQgaW1hZ2UgYmFzZWQgb24gdGhlICdPRSBraWNrc3RhcnQKICBjb21tYW5kcycgZm91bmQgaW4gdGhlIDx3a3MgZmlsZT4uCkBAIC0xNTQsNyArMTU1LDcgQEAKICAgICAgICAgWy1lIHwgLS1pbWFnZS1uYW1lXSBbLXMsIC0tc2tpcC1idWlsZC1jaGVja10gWy1ELCAtLWRlYnVnXQogICAgICAgICBbLXIsIC0tcm9vdGZzLWRpcl0gWy1iLCAtLWJvb3RpbWctZGlyXQogICAgICAgICBbLWssIC0ta2VybmVsLWRpcl0gWy1uLCAtLW5hdGl2ZS1zeXNyb290XSBbLWYsIC0tYnVpbGQtcm9vdGZzXQotICAgICAgICBbLWMsIC0tY29tcHJlc3Mtd2l0aF0gWy1tLCAtLWJtYXBdCisgICAgICAgIFstYywgLS1jb21wcmVzcy13aXRoXSBbLW0sIC0tYm1hcF0gWy0tbm8tZnN0YWItdXBkYXRlXQogCiBERVNDUklQVElPTgogICAgIFRoaXMgY29tbWFuZCBjcmVhdGVzIGFuIE9wZW5FbWJlZGRlZCBpbWFnZSBiYXNlZCBvbiB0aGUgJ09FCkBAIC0yMjYsNiArMjI3LDExIEBACiAKICAgICBUaGUgLW0gb3B0aW9uIGlzIHVzZWQgdG8gcHJvZHVjZSAuYm1hcCBmaWxlIGZvciB0aGUgaW1hZ2UuIFRoaXMgZmlsZQogICAgIGNhbiBiZSB1c2VkIHRvIGZsYXNoIGltYWdlIHVzaW5nIGJtYXB0b29sIHV0aWxpdHkuCisKKyAgICBUaGUgLS1uby1mc3RhYi11cGRhdGUgb3B0aW9uIGlzIHVzZWQgdG8gZG9lc24ndCBjaGFuZ2UgZnN0YWIgZmlsZS4gV2hlbgorICAgIHVzaW5nIHRoaXMgb3B0aW9uIHRoZSBmaW5hbCBmc3RhYiBmaWxlIHdpbGwgYmUgc2FtZSB0aGF0IGluIHJvb3RmcyBhbmQKKyAgICB3aWMgZG9lc24ndCB1cGRhdGUgZmlsZSwgZS5nIGFkZGluZyBhIG5ldyBtb3VudCBwb2ludC4gVXNlciBjYW4gY29udHJvbAorICAgIHRoZSBmc3RhYiBmaWxlIGNvbnRlbnQgaW4gYmFzZS1maWxlcyByZWNpcGUuCiAiIiIKIAogd2ljX2xpc3RfdXNhZ2UgPSAiIiIKQEAgLTI4Myw2ICsyODksMjMwIEBACiAgICAgZGV0YWlscy4KICIiIgogCit3aWNfbHNfdXNhZ2UgPSAiIiIKKworIExpc3QgY29udGVudCBvZiBhIHBhcnRpdGlvbmVkIGltYWdlCisKKyB1c2FnZTogd2ljIGxzIDxpbWFnZT5bOjxwYXJ0aXRpb24+WzxwYXRoPl1dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKworIFRoaXMgY29tbWFuZCAgb3V0cHV0cyBlaXRoZXIgbGlzdCBvZiBpbWFnZSBwYXJ0aXRpb25zIG9yIGRpcmVjdG9yeSBjb250ZW50cworIG9mIHZmYXQgYW5kIGV4dCogcGFydGl0aW9ucy4KKworIFNlZSAnd2ljIGhlbHAgbHMnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KKworIiIiCisKK3dpY19sc19oZWxwID0gIiIiCisKK05BTUUKKyAgICB3aWMgbHMgLSBMaXN0IGNvbnRlbnRzIG9mIHBhcnRpdGlvbmVkIGltYWdlIG9yIHBhcnRpdGlvbgorCitTWU5PUFNJUworICAgIHdpYyBscyA8aW1hZ2U+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+PHBhdGg+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisKK0RFU0NSSVBUSU9OCisgICAgVGhpcyBjb21tYW5kIGxpc3RzIGVpdGhlciBwYXJ0aXRpb25zIG9mIHRoZSBpbWFnZSBvciBkaXJlY3RvcnkgY29udGVudHMKKyAgICBvZiB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucy4KKworICAgIFRoZSBmaXJzdCBmb3JtIGl0IGxpc3RzIHBhcnRpdGlvbnMgb2YgdGhlIGltYWdlLgorICAgIEZvciBleGFtcGxlOgorICAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYworICAgICAgICBOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZQorICAgICAgICAxICAgICAgICAxMDQ4NTc2ICAgICAyNDQzODc4MyAgICAgMjMzOTAyMDggIGZhdDE2CisgICAgICAgIDIgICAgICAgMjUxNjU4MjQgICAgIDUwMzE1MjYzICAgICAyNTE0OTQ0MCAgZXh0NAorCisgICAgU2Vjb25kIGFuZCB0aGlyZCBmb3JtIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbjoKKyAgICAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAyREYyLTVGMDIKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBlZmkgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMTEgIDEwOjU0CisgICAgICAgIHN0YXJ0dXAgIG5zaCAgICAgICAgMjYgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgdm1saW51eiAgICAgICAgNjkyMjI4OCAyMDE3LTA1LTExICAxMDo1NAorICAgICAgICAgICAgICAgIDMgZmlsZXMgICAgICAgICAgIDYgOTIyIDMxNCBieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgODE4IDc1MiBieXRlcyBmcmVlCisKKworICAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL0VGSS9ib290LworICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAyREYyLTVGMDIKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi9FRkkvYm9vdAorCisgICAgICAgIC4gICAgICAgICAgICA8RElSPiAgICAgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgLi4gICAgICAgICAgIDxESVI+ICAgICAyMDE3LTA1LTExICAxMDo1NAorICAgICAgICBncnViICAgICBjZmcgICAgICAgNjc5IDIwMTctMDUtMTEgIDEwOjU0CisgICAgICAgIGJvb3R4NjQgIGVmaSAgICA1NzEzOTIgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgIDU3MiAwNzEgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDgxOCA3NTIgYnl0ZXMgZnJlZQorCisgICAgVGhlIC1uIG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290CisgICAgY29udGFpbmluZyB0aGUgdG9vbHMocGFydGVkIGFuZCBtdG9vbHMpIHRvIHVzZS4KKworIiIiCisKK3dpY19jcF91c2FnZSA9ICIiIgorCisgQ29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24KKworIHVzYWdlOiB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPls8cGF0aD5dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKworIFRoaXMgY29tbWFuZCAgY29waWVzIGxvY2FsIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworb2YgcGFydGl0aW9uZWQgIGltYWdlLgorCisgU2VlICd3aWMgaGVscCBjcCcgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX2NwX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworCitTWU5PUFNJUworICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+CisgICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4KKyAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPjxwYXRoPiAtLW5hdGl2ZS1zeXNyb290IDxwYXRoPgorCitERVNDUklQVElPTgorICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mCisgICAgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorCisgICAgVGhlIGZpcnN0IGZvcm0gb2YgaXQgY29waWVzIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZgorICAgIHRoZSBwYXJ0aXRpb246CisgICAgICAgICQgd2ljIGNwIHRlc3Qud2tzIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljOjEKKyAgICAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyBEQjRDLUZENEMKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBlZmkgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgIGxvYWRlciAgICAgICA8RElSPiAgICAgMjAxNy0wNS0yNCAgMTg6MTUKKyAgICAgICAgc3RhcnR1cCAgbnNoICAgICAgICAyNiAyMDE3LTA1LTI0ICAxODoxNQorICAgICAgICB2bWxpbnV6ICAgICAgICA2OTI2Mzg0IDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgIHRlc3QgICAgIHdrcyAgICAgICA2MjggMjAxNy0wNS0yNCAgMjE6MjIKKyAgICAgICAgICAgICAgICA1IGZpbGVzICAgICAgICAgICA2IDkyNyAwMzggYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDY3NyA0NDAgYnl0ZXMgZnJlZQorCisgICAgVGhlIHNlY29uZCBmb3JtIG9mIHRoZSBjb21tYW5kIGNvcGllcyBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeQorICAgIG9uIHRoZSBwYXJ0aXRpb246CisgICAgICAgJCB3aWMgY3AgdGVzdCB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL2VmaS8KKyAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL2VmaS8KKyAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgIFZvbHVtZSBTZXJpYWwgTnVtYmVyIGlzIERCNEMtRkQ0QworICAgICAgIERpcmVjdG9yeSBmb3IgOjovZWZpCisKKyAgICAgICAuICAgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgLi4gICAgICAgICAgIDxESVI+ICAgICAyMDE3LTA1LTI0ICAxODoxNQorICAgICAgIGJvb3QgICAgICAgICA8RElSPiAgICAgMjAxNy0wNS0yNCAgMTg6MTUKKyAgICAgICB0ZXN0ICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDIxOjI3CisgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgICAgICAgIDAgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgNjc1IDM5MiBieXRlcyBmcmVlCisKKyAgICBUaGUgLW4gb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QKKyAgICBjb250YWluaW5nIHRoZSB0b29scyhwYXJ0ZWQgYW5kIG10b29scykgdG8gdXNlLgorIiIiCisKK3dpY19ybV91c2FnZSA9ICIiIgorCisgUmVtb3ZlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGZyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCisKKyB1c2FnZTogd2ljIHJtIDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQorCisgVGhpcyBjb21tYW5kICByZW1vdmVzIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGZyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mCisgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorCisgU2VlICd3aWMgaGVscCBybScgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX3JtX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyBybSAtIHJlbW92ZSBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworCitTWU5PUFNJUworICAgIHdpYyBybSA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIHJtIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD4KKworREVTQ1JJUFRJT04KKyAgICBUaGlzIGNvbW1hbmQgcmVtb3ZlcyBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mIHRoZQorICAgIHBhcnRpdGlvbmVkIGltYWdlOgorCisgICAgICAgICQgd2ljIGxzIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAxMUQwLURFMjEKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBsaWJjb20zMiBjMzIgICAgMTg2NTAwIDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIGxpYnV0aWwgIGMzMiAgICAgMjQxNDggMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgc3lzbGludXggY2ZnICAgICAgIDIwOSAyMDE3LTA2LTAyICAxNToxNQorICAgICAgICB2ZXNhbWVudSBjMzIgICAgIDI3MTA0IDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIHZtbGludXogICAgICAgIDY5MjYzODQgMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgICAgICAgICA1IGZpbGVzICAgICAgICAgICA3IDE2NCAzNDUgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IDU4MiA2NTYgYnl0ZXMgZnJlZQorCisgICAgICAgICQgd2ljIHJtIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MS9saWJ1dGlsLmMzMgorCisgICAgICAgICQgd2ljIGxzIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAxMUQwLURFMjEKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBsaWJjb20zMiBjMzIgICAgMTg2NTAwIDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIHN5c2xpbnV4IGNmZyAgICAgICAyMDkgMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgdmVzYW1lbnUgYzMyICAgICAyNzEwNCAyMDE3LTA2LTAyICAxNToxNQorICAgICAgICB2bWxpbnV6ICAgICAgICA2OTI2Mzg0IDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgICAgICAgICAgNCBmaWxlcyAgICAgICAgICAgNyAxNDAgMTk3IGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiA2MDcgMjMyIGJ5dGVzIGZyZWUKKworICAgIFRoZSAtbiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdAorICAgIGNvbnRhaW5pbmcgdGhlIHRvb2xzKHBhcnRlZCBhbmQgbXRvb2xzKSB0byB1c2UuCisiIiIKKword2ljX3dyaXRlX3VzYWdlID0gIiIiCisKKyBXcml0ZSBpbWFnZSB0byBhIGRldmljZQorCisgdXNhZ2U6IHdpYyB3cml0ZSA8aW1hZ2U+IDx0YXJnZXQgZGV2aWNlPiBbLS1leHBhbmQgW3J1bGVzXV0gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQorCisgVGhpcyBjb21tYW5kIHdyaXRlcyBwYXJ0aXRpb25lZCBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UgKFVTQiBzdGljaywgU0QgY2FyZCBldGMpLgorCisgU2VlICd3aWMgaGVscCB3cml0ZScgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX3dyaXRlX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyB3cml0ZSAtIHdyaXRlIGFuIGltYWdlIHRvIGEgZGV2aWNlCisKK1NZTk9QU0lTCisgICAgd2ljIHdyaXRlIDxpbWFnZT4gPHRhcmdldD4KKyAgICB3aWMgd3JpdGUgPGltYWdlPiA8dGFyZ2V0PiAtLWV4cGFuZCBhdXRvCisgICAgd2ljIHdyaXRlIDxpbWFnZT4gPHRhcmdldD4gLS1leHBhbmQgMToxMDBNLTI6MzAwTQorICAgIHdpYyB3cml0ZSA8aW1hZ2U+IDx0YXJnZXQ+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisKK0RFU0NSSVBUSU9OCisgICAgVGhpcyBjb21tYW5kIHdyaXRlcyBhbiBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UgKFVTQiBzdGljaywgU0QgY2FyZCBldGMpCisKKyAgICAgICAgJCB3aWMgd3JpdGUgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYyAvZGV2L3NkYgorCisgICAgVGhlIC0tZXhwYW5kIG9wdGlvbiBpcyB1c2VkIHRvIHJlc2l6ZSBpbWFnZSBwYXJ0aXRpb25zLgorICAgIC0tZXhwYW5kIGF1dG8gZXhwYW5kcyBwYXJ0aXRpb25zIHRvIG9jY3VweSBhbGwgZnJlZSBzcGFjZSBhdmFpbGFibGUgb24gdGhlIHRhcmdldCBkZXZpY2UuCisgICAgSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgZXhwYW5zaW9uIHJ1bGVzIGluIGEgZm9ybWF0CisgICAgPHBhcnRpdGlvbj46PHNpemU+Wy08cGFydGl0aW9uPjo8c2l6ZT4uLi5dIGZvciBvbmUgb3IgbW9yZSBwYXJ0aXRpb25zLgorICAgIFNwZWNpZnlpbmcgc2l6ZSAwIHdpbGwga2VlcCBwYXJ0aXRpb24gdW5tb2RpZmllZC4KKyAgICBOb3RlOiBSZXNpemluZyBib290IHBhcnRpdGlvbiBjYW4gcmVzdWx0IGluIG5vbi1ib290YWJsZSBpbWFnZSBmb3Igbm9uLUVGSSBpbWFnZXMuIEl0IGlzCisgICAgcmVjb21tZW5kZWQgdG8gdXNlIHNpemUgMCBmb3IgYm9vdCBwYXJ0aXRpb24gdG8ga2VlcCBpbWFnZSBib290YWJsZS4KKworICAgIFRoZSAtLW5hdGl2ZS1zeXNyb290IG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290CisgICAgY29udGFpbmluZyB0aGUgdG9vbHMocGFydGVkLCByZXNpemUyZnMpIHRvIHVzZS4KKyIiIgorCiB3aWNfcGx1Z2luc19oZWxwID0gIiIiCiAKIE5BTUUKQEAgLTc0MCw2ICs5NzAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1maXhlZC1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLgogCisgICAgICAgICAtLXBhcnQtbmFtZTogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBzcGVjaWZpZXMgbmFtZSBmb3IgR1BUIHBhcnRpdGlvbnMuCisKICAgICAgICAgIC0tcGFydC10eXBlOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IHNwZWNpZmllcyBwYXJ0aXRpb24KICAgICAgICAgICAgICAgICAgICAgICB0eXBlIEdVSUQgZm9yIEdQVCBwYXJ0aXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcGFydGl0aW9uIHR5cGUgR1VJRFMgY2FuIGJlIGZvdW5kIGhlcmU6CkBAIC03NTgsNiArOTkwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBoYXJ3YXJlIHRoYXQgcmVxdWlyZXMgbm9uLWRlZmF1bHQgcGFydGl0aW9uIHN5c3RlbSBpZHMuIFRoZSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICAgICAgICBpbiBvbmUgYnl0ZSBsb25nIGhleCBudW1iZXIgZWl0aGVyIHdpdGggMHggcHJlZml4IG9yIHdpdGhvdXQgaXQuCiAKKyAgICAgICAgIC0tbWtmcy1leHRyYW9wdHM6IFRoaXMgb3B0aW9uIHNwZWNpZmllcyBleHRyYSBvcHRpb25zIHRvIHBhc3MgdG8gbWtmcyB1dGlsaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9URSwgdGhhdCB3aWMgdXNlcyBkZWZhdWx0IG9wdGlvbnMgZm9yIHNvbWUgZmlsZXN5c3RlbXMsIGZvciBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVMgNTEyJyBmb3IgbWtmcy5mYXQgb3IgJy1GIC1pIDgxOTInIGZvciBta2ZzLmV4dC4gVGhvc2Ugb3B0aW9ucyB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgdGFrZSBlZmZlY3Qgd2hlbiAtLW1rZnMtZXh0cmFvcHRzIGlzIHVzZWQuIFRoaXMgc2hvdWxkIGJlIHRha2VuIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQgd2hlbiB1c2luZyAtLW1rZnMtZXh0cmFvcHRzLgorCiAgICAgKiBib290bG9hZGVyCiAKICAgICAgIFRoaXMgY29tbWFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB2YXJpb3VzIGJvb3Rsb2FkZXIKQEAgLTc5NSwzICsxMDMzLDExIEBACiAgICAgICAud2tzIGZpbGVzLgogCiAiIiIKKword2ljX2hlbHBfaGVscCA9ICIiIgorTkFNRQorICAgIHdpYyBoZWxwIC0gZGlzcGxheSBhIGhlbHAgdG9waWMKKworREVTQ1JJUFRJT04KKyAgICBTcGVjaWZ5IGEgaGVscCB0b3BpYyB0byBkaXNwbGF5IGl0LiBUb3BpY3MgYXJlIHNob3duIGFib3ZlLgorIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQppbmRleCBkMDI2Y2FhLi43ODUwZTgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgIHJldHVybiBhcmcKIAogY2xhc3MgS2lja1N0YXJ0KCk6Ci0gICAgIiIiIktpY2tzdGFydCBwYXJzZXIgaW1wbGVtZW50YXRpb24uIiIiCisgICAgIiIiS2lja3N0YXJ0IHBhcnNlciBpbXBsZW1lbnRhdGlvbi4iIiIKIAogICAgIERFRkFVTFRfRVhUUkFfU1BBQ0UgPSAxMCoxMDI0CiAgICAgREVGQVVMVF9PVkVSSEVBRF9GQUNUT1IgPSAxLjMKQEAgLTEzOSwxMCArMTM5LDEyIEBACiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzdHlwZScsIGRlZmF1bHQ9J3ZmYXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPSgnZXh0MicsICdleHQzJywgJ2V4dDQnLCAnYnRyZnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3F1YXNoZnMnLCAndmZhdCcsICdtc2RvcycsICdzd2FwJykpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW1rZnMtZXh0cmFvcHRzJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tbGFiZWwnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1uby10YWJsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW9uZGlzaycsICctLW9uZHJpdmUnLCBkZXN0PSdkaXNrJywgZGVmYXVsdD0nc2RhJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoIi0tb3ZlcmhlYWQtZmFjdG9yIiwgdHlwZT1vdmVyaGVhZHR5cGUpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXBhcnQtbmFtZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXBhcnQtdHlwZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXJvb3Rmcy1kaXInKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ODhiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQpAQCAtMCwwICsxLDI2MyBAQAorIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKKyMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEzLCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisjCisjIERFU0NSSVBUSU9OCisjIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgcGxhY2UgdG8gY29sbGVjdCB2YXJpb3VzIHdpYy1yZWxhdGVkIHV0aWxzCisjIGZvciB0aGUgT3BlbkVtYmVkZGVkIEltYWdlIFRvb2xzLgorIworIyBBVVRIT1JTCisjIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGxpbnV4LmludGVsLmNvbT4KKyMKKyIiIk1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zLiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KKworZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQorCisjIGV4ZWN1dGFibGUgLT4gcmVjaXBlIHBhaXJzIGZvciBleGVjX25hdGl2ZV9jbWQKK05BVElWRV9SRUNJUEVTID0geyJibWFwdG9vbCI6ICJibWFwLXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJncnViLW1raW1hZ2UiOiAiZ3J1Yi1lZmkiLAorICAgICAgICAgICAgICAgICAgImlzb2h5YnJpZCI6ICJzeXNsaW51eCIsCisgICAgICAgICAgICAgICAgICAibWNvcHkiOiAibXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJtZGVsIiA6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgIm1kZWx0cmVlIiA6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgIm1kaXIiIDogIm10b29scyIsCisgICAgICAgICAgICAgICAgICAibWtkb3NmcyI6ICJkb3Nmc3Rvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2lzb2ZzIjogImNkcnRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmJ0cmZzIjogImJ0cmZzLXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDIiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDMiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDQiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLnZmYXQiOiAiZG9zZnN0b29scyIsCisgICAgICAgICAgICAgICAgICAibWtzcXVhc2hmcyI6ICJzcXVhc2hmcy10b29scyIsCisgICAgICAgICAgICAgICAgICAibWtzd2FwIjogInV0aWwtbGludXgiLAorICAgICAgICAgICAgICAgICAgIm1tZCI6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgInBhcnRlZCI6ICJwYXJ0ZWQiLAorICAgICAgICAgICAgICAgICAgInNmZGlzayI6ICJ1dGlsLWxpbnV4IiwKKyAgICAgICAgICAgICAgICAgICJzZ2Rpc2siOiAiZ3B0ZmRpc2siLAorICAgICAgICAgICAgICAgICAgInN5c2xpbnV4IjogInN5c2xpbnV4IgorICAgICAgICAgICAgICAgICB9CisKK2RlZiBydW50b29sKGNtZGxuX29yX2FyZ3MpOgorICAgICIiIiB3cmFwcGVyIGZvciBtb3N0IG9mIHRoZSBzdWJwcm9jZXNzIGNhbGxzCisgICAgaW5wdXQ6CisgICAgICAgIGNtZGxuX29yX2FyZ3M6IGNhbiBiZSBib3RoIGFyZ3MgYW5kIGNtZGxuIHN0ciAoc2hlbGw9VHJ1ZSkKKyAgICByZXR1cm46CisgICAgICAgIHJjLCBvdXRwdXQKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKGNtZGxuX29yX2FyZ3MsIGxpc3QpOgorICAgICAgICBjbWQgPSBjbWRsbl9vcl9hcmdzWzBdCisgICAgICAgIHNoZWxsID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBpbXBvcnQgc2hsZXgKKyAgICAgICAgY21kID0gc2hsZXguc3BsaXQoY21kbG5fb3JfYXJncylbMF0KKyAgICAgICAgc2hlbGwgPSBUcnVlCisKKyAgICBzb3V0ID0gc3VicHJvY2Vzcy5QSVBFCisgICAgc2VyciA9IHN1YnByb2Nlc3MuU1RET1VUCisKKyAgICB0cnk6CisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZGxuX29yX2FyZ3MsIHN0ZG91dD1zb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c2Vyciwgc2hlbGw9c2hlbGwpCisgICAgICAgIHNvdXQsIHNlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgIyBjb21iaW5lIHN0ZG91dCBhbmQgc3RkZXJyLCBmaWx0ZXIgTm9uZSBvdXQgYW5kIGRlY29kZQorICAgICAgICBvdXQgPSAnJy5qb2luKFtvdXQuZGVjb2RlKCd1dGYtOCcpIGZvciBvdXQgaW4gW3NvdXQsIHNlcnJdIGlmIG91dF0pCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICBpZiBlcnIuZXJybm8gPT0gMjoKKyAgICAgICAgICAgICMgW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCdDYW5ub3QgcnVuIGNvbW1hbmQ6ICVzLCBsb3N0IGRlcGVuZGVuY3k/JyAlIGNtZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICMgcmVsYXkKKworICAgIHJldHVybiBwcm9jZXNzLnJldHVybmNvZGUsIG91dAorCitkZWYgX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGw9RmFsc2UpOgorICAgICIiIgorICAgIEV4ZWN1dGUgY29tbWFuZCwgY2F0Y2hpbmcgc3RkZXJyLCBzdGRvdXQKKworICAgIE5lZWQgdG8gZXhlY3V0ZSBhc19zaGVsbCBpZiB0aGUgY29tbWFuZCB1c2VzIHdpbGRjYXJkcworICAgICIiIgorICAgIGxvZ2dlci5kZWJ1ZygiX2V4ZWNfY21kOiAlcyIsIGNtZF9hbmRfYXJncykKKyAgICBhcmdzID0gY21kX2FuZF9hcmdzLnNwbGl0KCkKKyAgICBsb2dnZXIuZGVidWcoYXJncykKKworICAgIGlmIGFzX3NoZWxsOgorICAgICAgICByZXQsIG91dCA9IHJ1bnRvb2woY21kX2FuZF9hcmdzKQorICAgIGVsc2U6CisgICAgICAgIHJldCwgb3V0ID0gcnVudG9vbChhcmdzKQorICAgIG91dCA9IG91dC5zdHJpcCgpCisgICAgaWYgcmV0ICE9IDA6CisgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJfZXhlY19jbWQ6ICVzIHJldHVybmVkICclcycgaW5zdGVhZCBvZiAwXG5vdXRwdXQ6ICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNtZF9hbmRfYXJncywgcmV0LCBvdXQpKQorCisgICAgbG9nZ2VyLmRlYnVnKCJfZXhlY19jbWQ6IG91dHB1dCBmb3IgJXMgKHJjID0gJWQpOiAlcyIsCisgICAgICAgICAgICAgICAgIGNtZF9hbmRfYXJncywgcmV0LCBvdXQpCisKKyAgICByZXR1cm4gcmV0LCBvdXQKKworCitkZWYgZXhlY19jbWQoY21kX2FuZF9hcmdzLCBhc19zaGVsbD1GYWxzZSk6CisgICAgIiIiCisgICAgRXhlY3V0ZSBjb21tYW5kLCByZXR1cm4gb3V0cHV0CisgICAgIiIiCisgICAgcmV0dXJuIF9leGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsKVsxXQorCisKK2RlZiBleGVjX25hdGl2ZV9jbWQoY21kX2FuZF9hcmdzLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPSIiKToKKyAgICAiIiIKKyAgICBFeGVjdXRlIG5hdGl2ZSBjb21tYW5kLCBjYXRjaGluZyBzdGRlcnIsIHN0ZG91dAorCisgICAgTmVlZCB0byBleGVjdXRlIGFzX3NoZWxsIGlmIHRoZSBjb21tYW5kIHVzZXMgd2lsZGNhcmRzCisKKyAgICBBbHdheXMgbmVlZCB0byBleGVjdXRlIG5hdGl2ZSBjb21tYW5kcyBhc19zaGVsbAorICAgICIiIgorICAgICMgVGhlIHJlYXNvbiAtMSBpcyB1c2VkIGlzIGJlY2F1c2UgdGhlcmUgbWF5IGJlICJleHBvcnQiIGNvbW1hbmRzLgorICAgIGFyZ3MgPSBjbWRfYW5kX2FyZ3Muc3BsaXQoJzsnKVstMV0uc3BsaXQoKQorICAgIGxvZ2dlci5kZWJ1ZyhhcmdzKQorCisgICAgaWYgcHNldWRvOgorICAgICAgICBjbWRfYW5kX2FyZ3MgPSBwc2V1ZG8gKyBjbWRfYW5kX2FyZ3MKKworICAgIG5hdGl2ZV9wYXRocyA9ICIlcy9zYmluOiVzL3Vzci9zYmluOiVzL3Vzci9iaW4iICUgXAorICAgICAgICAgICAgICAgICAgIChuYXRpdmVfc3lzcm9vdCwgbmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290KQorCisgICAgbmF0aXZlX2NtZF9hbmRfYXJncyA9ICJleHBvcnQgUEFUSD0lczokUEFUSDslcyIgJSBcCisgICAgICAgICAgICAgICAgICAgKG5hdGl2ZV9wYXRocywgY21kX2FuZF9hcmdzKQorICAgIGxvZ2dlci5kZWJ1ZygiZXhlY19uYXRpdmVfY21kOiAlcyIsIG5hdGl2ZV9jbWRfYW5kX2FyZ3MpCisKKyAgICAjIElmIHRoZSBjb21tYW5kIGlzbid0IGluIHRoZSBuYXRpdmUgc3lzcm9vdCBzYXkgd2UgZmFpbGVkLgorICAgIGlmIHNwYXduLmZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgorICAgICAgICByZXQsIG91dCA9IF9leGVjX2NtZChuYXRpdmVfY21kX2FuZF9hcmdzLCBUcnVlKQorICAgIGVsc2U6CisgICAgICAgIHJldCA9IDEyNworICAgICAgICBvdXQgPSAiY2FuJ3QgZmluZCBuYXRpdmUgZXhlY3V0YWJsZSAlcyBpbiAlcyIgJSAoYXJnc1swXSwgbmF0aXZlX3BhdGhzKQorCisgICAgcHJvZyA9IGFyZ3NbMF0KKyAgICAjIHNoZWxsIGNvbW1hbmQtbm90LWZvdW5kCisgICAgaWYgcmV0ID09IDEyNyBcCisgICAgICAgb3IgKHBzZXVkbyBhbmQgcmV0ID09IDEgYW5kIG91dCA9PSAiQ2FuJ3QgZmluZCAnJXMnIGluICRQQVRILiIgJSBwcm9nKToKKyAgICAgICAgbXNnID0gIkEgbmF0aXZlIHByb2dyYW0gJXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGltYWdlICJcCisgICAgICAgICAgICAgICJ3YXMgbm90IGZvdW5kIChzZWUgZGV0YWlscyBhYm92ZSkuXG5cbiIgJSBwcm9nCisgICAgICAgIHJlY2lwZSA9IE5BVElWRV9SRUNJUEVTLmdldChwcm9nKQorICAgICAgICBpZiByZWNpcGU6CisgICAgICAgICAgICBtc2cgKz0gIlBsZWFzZSBtYWtlIHN1cmUgd2ljLXRvb2xzIGhhdmUgJXMtbmF0aXZlIGluIGl0cyBERVBFTkRTLCAiXAorICAgICAgICAgICAgICAgICAgICJidWlsZCBpdCB3aXRoICdiaXRiYWtlIHdpYy10b29scycgYW5kIHRyeSBhZ2Fpbi5cbiIgJSByZWNpcGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyArPSAiV2ljIGZhaWxlZCB0byBmaW5kIGEgcmVjaXBlIHRvIGJ1aWxkIG5hdGl2ZSAlcy4gUGxlYXNlICJcCisgICAgICAgICAgICAgICAgICAgImZpbGUgYSBidWcgYWdhaW5zdCB3aWMuXG4iICUgcHJvZworICAgICAgICByYWlzZSBXaWNFcnJvcihtc2cpCisKKyAgICByZXR1cm4gcmV0LCBvdXQKKworQk9PVEREX0VYVFJBX1NQQUNFID0gMTYzODQKKworY2xhc3MgQml0YmFrZVZhcnMoZGVmYXVsdGRpY3QpOgorICAgICIiIgorICAgIENvbnRhaW5lciBmb3IgQml0YmFrZSB2YXJpYWJsZXMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBkZWZhdWx0ZGljdC5fX2luaXRfXyhzZWxmLCBkaWN0KQorCisgICAgICAgICMgZGVmYXVsdF9pbWFnZSBhbmQgdmFyc19kaXIgYXR0cmlidXRlcyBzaG91bGQgYmUgc2V0IGZyb20gb3V0c2lkZQorICAgICAgICBzZWxmLmRlZmF1bHRfaW1hZ2UgPSBOb25lCisgICAgICAgIHNlbGYudmFyc19kaXIgPSBOb25lCisKKyAgICBkZWYgX3BhcnNlX2xpbmUoc2VsZiwgbGluZSwgaW1hZ2UsIG1hdGNoZXI9cmUuY29tcGlsZShyIl4oW2EtekEtWjAtOVwtXysuL35dKyk9KC4qKSIpKToKKyAgICAgICAgIiIiCisgICAgICAgIFBhcnNlIG9uZSBsaW5lIGZyb20gYml0YmFrZSAtZSBvdXRwdXQgb3IgZnJvbSAuZW52IGZpbGUuCisgICAgICAgIFB1dCByZXN1bHQga2V5LXZhbHVlIHBhaXIgaW50byB0aGUgc3RvcmFnZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICI9IiBub3QgaW4gbGluZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBtYXRjaCA9IG1hdGNoZXIubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGtleSwgdmFsID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgc2VsZltpbWFnZV1ba2V5XSA9IHZhbC5zdHJpcCgnIicpCisKKyAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXIsIGltYWdlPU5vbmUsIGNhY2hlPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IGJpdGJha2UgdmFyaWFibGUgZnJvbSAnYml0YmFrZSAtZScgb3V0cHV0IG9yIGZyb20gLmVudiBmaWxlLgorICAgICAgICBUaGlzIGlzIGEgbGF6eSBtZXRob2QsIGkuZS4gaXQgcnVucyBiaXRiYWtlIG9yIHBhcnNlcyBmaWxlIG9ubHkgd2hlbgorICAgICAgICBvbmx5IHdoZW4gdmFyaWFibGUgaXMgcmVxdWVzdGVkLiBJdCBhbHNvIGNhY2hlcyByZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGltYWdlOgorICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLmRlZmF1bHRfaW1hZ2UKKworICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLnZhcnNfZGlyOgorICAgICAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHNlbGYudmFyc19kaXIsIGltYWdlICsgJy5lbnYnKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSAuZW52IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lKSBhcyB2YXJzZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHZhcnNmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX2xpbmUobGluZSwgaW1hZ2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCBiaXRiYWtlIHZhcmlhYmxlIGZyb20gJXMuIiAlIGZuYW1lKQorICAgICAgICAgICAgICAgICAgICBwcmludCgiRmlsZSAlcyBkb2Vzbid0IGV4aXN0LiIgJSBmbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgR2V0IGJpdGJha2UgLWUgb3V0cHV0CisgICAgICAgICAgICAgICAgY21kID0gImJpdGJha2UgLWUiCisgICAgICAgICAgICAgICAgaWYgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIGNtZCArPSAiICVzIiAlIGltYWdlCisKKyAgICAgICAgICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgICAgICAgICAgICAgcmV0LCBsaW5lcyA9IF9leGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKKworICAgICAgICAgICAgICAgIGlmIHJldDoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgJyVzJyBvdXRwdXQuIiwgY21kKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkJpdGJha2UgZmFpbGVkIHdpdGggZXJyb3I6XG4lc1xuIiwgbGluZXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAgICAgIyBQYXJzZSBiaXRiYWtlIC1lIG91dHB1dAorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9saW5lKGxpbmUsIGltYWdlKQorCisgICAgICAgICAgICAjIE1ha2UgZmlyc3QgaW1hZ2UgYSBkZWZhdWx0IHNldCBvZiB2YXJpYWJsZXMKKyAgICAgICAgICAgIGlmIGNhY2hlOgorICAgICAgICAgICAgICAgIGltYWdlcyA9IFtrZXkgZm9yIGtleSBpbiBzZWxmIGlmIGtleV0KKyAgICAgICAgICAgICAgICBpZiBsZW4oaW1hZ2VzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmW05vbmVdID0gc2VsZltpbWFnZV0KKworICAgICAgICByZXN1bHQgPSBzZWxmW2ltYWdlXS5nZXQodmFyKQorICAgICAgICBpZiBub3QgY2FjaGU6CisgICAgICAgICAgICBzZWxmLnBvcChpbWFnZSwgTm9uZSkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyMgQ3JlYXRlIEJCX1ZBUlMgc2luZ2xldG9uCitCQl9WQVJTID0gQml0YmFrZVZhcnMoKQorCitkZWYgZ2V0X2JpdGJha2VfdmFyKHZhciwgaW1hZ2U9Tm9uZSwgY2FjaGU9VHJ1ZSk6CisgICAgIiIiCisgICAgUHJvdmlkZSBvbGQgZ2V0X2JpdGJha2VfdmFyIEFQSSBieSB3cmFwcGluZworICAgIGdldF92YXIgbWV0aG9kIG9mIEJCX1ZBUlMgc2luZ2xldG9uLgorICAgICIiIgorICAgIHJldHVybiBCQl9WQVJTLmdldF92YXIodmFyLCBpbWFnZSwgY2FjaGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IDkzOWU2NjcuLjg0ZmU4NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0yNiwxMCArMjYsOSBAQAogCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgdGVtcGZpbGUKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kLCBnZXRfYml0YmFrZV92YXIKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsIGdldF9iaXRiYWtlX3ZhcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgUGx1Z2luTWdyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQpAQCAtNDcsMTAgKzQ2LDEyIEBACiAgICAgICAgIHNlbGYuZnNvcHRzID0gYXJncy5mc29wdHMKICAgICAgICAgc2VsZi5mc3R5cGUgPSBhcmdzLmZzdHlwZQogICAgICAgICBzZWxmLmxhYmVsID0gYXJncy5sYWJlbAorICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzID0gYXJncy5ta2ZzX2V4dHJhb3B0cwogICAgICAgICBzZWxmLm1vdW50cG9pbnQgPSBhcmdzLm1vdW50cG9pbnQKICAgICAgICAgc2VsZi5ub190YWJsZSA9IGFyZ3Mubm9fdGFibGUKICAgICAgICAgc2VsZi5udW0gPSBOb25lCiAgICAgICAgIHNlbGYub3ZlcmhlYWRfZmFjdG9yID0gYXJncy5vdmVyaGVhZF9mYWN0b3IKKyAgICAgICAgc2VsZi5wYXJ0X25hbWUgPSBhcmdzLnBhcnRfbmFtZQogICAgICAgICBzZWxmLnBhcnRfdHlwZSA9IGFyZ3MucGFydF90eXBlCiAgICAgICAgIHNlbGYucm9vdGZzX2RpciA9IGFyZ3Mucm9vdGZzX2RpcgogICAgICAgICBzZWxmLnNpemUgPSBhcmdzLnNpemUKQEAgLTIwNSw3ICsyMDYsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy8uLi9wc2V1ZG8iICUgcm9vdGZzX2RpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLy4uL3BzZXVkbyIgJSAgZ2V0X2JpdGJha2VfdmFyKCJJTUFHRV9ST09URlMiKSkKICAgICAgICAgcF9wYXNzd2QgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BBU1NXRCIsIHJvb3Rmc19kaXIpCiAgICAgICAgIHBfbm9zeW1saW5rZXhwID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19OT1NZTUxJTktFWFAiLCAiMSIpCiAgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKQEAgLTI1NywxNCArMjU4LDE0IEBACiAgICAgICAgIHdpdGggb3Blbihyb290ZnMsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgb3MuZnRydW5jYXRlKHNwYXJzZS5maWxlbm8oKSwgcm9vdGZzX3NpemUgKiAxMDI0KQogCi0gICAgICAgIGV4dHJhX2ltYWdlY21kID0gIi1pIDgxOTIiCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgIi1GIC1pIDgxOTIiCiAKICAgICAgICAgbGFiZWxfc3RyID0gIiIKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtRiAlcyAlcyAlcyAtZCAlcyIgJSBcCi0gICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhX2ltYWdlY21kLCByb290ZnMsIGxhYmVsX3N0ciwgcm9vdGZzX2RpcikKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAlcyAlcyAlcyAtZCAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgcm9vdGZzLCBsYWJlbF9zdHIsIHJvb3Rmc19kaXIpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbz1wc2V1ZG8pCiAKICAgICAgICAgbWtmc19jbWQgPSAiZnNjay4lcyAtcHZmRCAlcyIgJSAoc2VsZi5mc3R5cGUsIHJvb3RmcykKQEAgLTI5MCw4ICsyOTEsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkIC1yICVzICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgcm9vdGZzX3NpemUgKiAxMDI0LCByb290ZnNfZGlyLCBsYWJlbF9zdHIsIHJvb3RmcykKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAtciAlcyAlcyAlcyAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIHJvb3Rmc19zaXplICogMTAyNCwgcm9vdGZzX2RpciwgbGFiZWxfc3RyLAorICAgICAgICAgICAgIHNlbGYubWtmc19leHRyYW9wdHMsIHJvb3RmcykKICAgICAgICAgZXhlY19uYXRpdmVfY21kKG1rZnNfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPXBzZXVkbykKIAogICAgIGRlZiBwcmVwYXJlX3Jvb3Rmc19tc2RvcyhzZWxmLCByb290ZnMsIG9lX2J1aWxkZGlyLCByb290ZnNfZGlyLApAQCAtMzEzLDggKzMxNSwxMCBAQAogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbXNkb3MnOgogICAgICAgICAgICAgc2l6ZV9zdHIgPSAiLUYgMTYiICMgRkFUIDE2CiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgLVMgNTEyICVzIC1DICVzICVkIiAlIChsYWJlbF9zdHIsIHNpemVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rmcywgcm9vdGZzX3NpemUpCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgJy1TIDUxMicKKworICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAlcyAlcyAlcyAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChsYWJlbF9zdHIsIHNpemVfc3RyLCBleHRyYW9wdHMsIHJvb3Rmcywgcm9vdGZzX3NpemUpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCiAgICAgICAgIG1jb3B5X2NtZCA9ICJtY29weSAtaSAlcyAtcyAlcy8qIDo6LyIgJSAocm9vdGZzLCByb290ZnNfZGlyKQpAQCAtMzMwLDggKzMzNCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGNvbnRlbnQgZm9yIGEgc3F1YXNoZnMgcm9vdGZzIHBhcnRpdGlvbi4KICAgICAgICAgIiIiCi0gICAgICAgIHNxdWFzaGZzX2NtZCA9ICJta3NxdWFzaGZzICVzICVzIC1ub2FwcGVuZCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgIChyb290ZnNfZGlyLCByb290ZnMpCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgJy1ub2FwcGVuZCcKKyAgICAgICAgc3F1YXNoZnNfY21kID0gIm1rc3F1YXNoZnMgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAocm9vdGZzX2Rpciwgcm9vdGZzLCBleHRyYW9wdHMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChzcXVhc2hmc19jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89cHNldWRvKQogCiAgICAgZGVmIHByZXBhcmVfZW1wdHlfcGFydGl0aW9uX2V4dChzZWxmLCByb290ZnMsIG9lX2J1aWxkZGlyLApAQCAtMzQzLDE0ICszNDgsMTQgQEAKICAgICAgICAgd2l0aCBvcGVuKHJvb3RmcywgJ3cnKSBhcyBzcGFyc2U6CiAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc3BhcnNlLmZpbGVubygpLCBzaXplICogMTAyNCkKIAotICAgICAgICBleHRyYV9pbWFnZWNtZCA9ICItaSA4MTkyIgorICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICItaSA4MTkyIgogCiAgICAgICAgIGxhYmVsX3N0ciA9ICIiCiAgICAgICAgIGlmIHNlbGYubGFiZWw6CiAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwgJXMiICUgc2VsZi5sYWJlbAogCiAgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLUYgJXMgJXMgJXMiICUgXAotICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBleHRyYV9pbWFnZWNtZCwgbGFiZWxfc3RyLCByb290ZnMpCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgbGFiZWxfc3RyLCByb290ZnMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICBkZWYgcHJlcGFyZV9lbXB0eV9wYXJ0aXRpb25fYnRyZnMoc2VsZiwgcm9vdGZzLCBvZV9idWlsZGRpciwKQEAgLTM2Niw4ICszNzEsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLCByb290ZnMpCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLWIgJWQgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzLCByb290ZnMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICBkZWYgcHJlcGFyZV9lbXB0eV9wYXJ0aXRpb25fbXNkb3Moc2VsZiwgcm9vdGZzLCBvZV9idWlsZGRpciwKQEAgLTM4NSw4ICszOTEsMTEgQEAKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ21zZG9zJzoKICAgICAgICAgICAgIHNpemVfc3RyID0gIi1GIDE2IiAjIEZBVCAxNgogCi0gICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzICVzIC1TIDUxMiAlcyAtQyAlcyAlZCIgJSAobGFiZWxfc3RyLCBzaXplX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnMsIGJsb2NrcykKKyAgICAgICAgZXh0cmFvcHRzID0gc2VsZi5ta2ZzX2V4dHJhb3B0cyBvciAnLVMgNTEyJworCisgICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzICVzICVzICVzIC1DICVzICVkIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3N0ciwgZXh0cmFvcHRzLCBzaXplX3N0ciwgcm9vdGZzLCBibG9ja3MpCisKICAgICAgICAgZXhlY19uYXRpdmVfY21kKGRvc2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgY2htb2RfY21kID0gImNobW9kIDY0NCAlcyIgJSByb290ZnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBmYjNkMTc5Li5jMDA5ODIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CkBAIC0yNCw3ICsyNCw3IEBACiBmcm9tIGltcG9ydGxpYi5tYWNoaW5lcnkgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgogCiBQTFVHSU5fVFlQRVMgPSBbImltYWdlciIsICJzb3VyY2UiXQogCkBAIC0xMzcsNCArMTM3LDMgQEAKICAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiU291cmNlUGx1Z2luOiBkb19wcmVwYXJlX3BhcnRpdGlvbjogcGFydDogJXMiLCBwYXJ0KQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CmluZGV4IGYyZTYxMjcuLmRhMWMwNjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CkBAIC0yNiwxNyArMjYsMjAgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdXVpZAogCiBmcm9tIHRpbWUgaW1wb3J0IHN0cmZ0aW1lCiAKK2Zyb20gb2UucGF0aCBpbXBvcnQgY29weWhhcmRsaW5rdHJlZQorCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLmZpbGVtYXAgaW1wb3J0IHNwYXJzZV9jb3B5CiBmcm9tIHdpYy5rc3BhcnNlciBpbXBvcnQgS2lja1N0YXJ0LCBLaWNrU3RhcnRFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgUGx1Z2luTWdyLCBJbWFnZXJQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZAorZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC02OCw2ICs3MSw3IEBACiAgICAgICAgIHNlbGYub3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIKICAgICAgICAgc2VsZi5jb21wcmVzc29yID0gb3B0aW9ucy5jb21wcmVzc29yCiAgICAgICAgIHNlbGYuYm1hcCA9IG9wdGlvbnMuYm1hcAorICAgICAgICBzZWxmLm5vX2ZzdGFiX3VwZGF0ZSA9IG9wdGlvbnMubm9fZnN0YWJfdXBkYXRlCiAKICAgICAgICAgc2VsZi5uYW1lID0gIiVzLSVzIiAlIChvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzX2ZpbGUpKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJmdGltZSgiJVklbSVkJUglTSIpKQpAQCAtMTE1LDI0ICsxMTksMzMgQEAKICAgICAgICAgICAgIGZzdGFiX2xpbmVzID0gZnN0YWIucmVhZGxpbmVzKCkKIAogICAgICAgICBpZiBzZWxmLl91cGRhdGVfZnN0YWIoZnN0YWJfbGluZXMsIHNlbGYucGFydHMpOgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGZzdGFiX3BhdGgsIGZzdGFiX3BhdGggKyAiLm9yaWciKQorICAgICAgICAgICAgIyBjb3B5IHJvb3RmcyBkaXIgdG8gd29ya2RpciB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgICMgYXMgcm9vdGZzIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHRhc2tzIGFuZCBjYW4ndCBiZSBtb2RpZmllZAorICAgICAgICAgICAgbmV3X3Jvb3RmcyA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNlbGYud29ya2RpciwgInJvb3Rmc19jb3B5IikpCisgICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKGltYWdlX3Jvb3RmcywgbmV3X3Jvb3RmcykKKyAgICAgICAgICAgIGZzdGFiX3BhdGggPSBvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgJ2V0Yy9mc3RhYicpCisKKyAgICAgICAgICAgIG9zLnVubGluayhmc3RhYl9wYXRoKQogCiAgICAgICAgICAgICB3aXRoIG9wZW4oZnN0YWJfcGF0aCwgInciKSBhcyBmc3RhYjoKICAgICAgICAgICAgICAgICBmc3RhYi53cml0ZWxpbmVzKGZzdGFiX2xpbmVzKQogCi0gICAgICAgICAgICByZXR1cm4gZnN0YWJfcGF0aAorICAgICAgICAgICAgcmV0dXJuIG5ld19yb290ZnMKIAogICAgIGRlZiBfdXBkYXRlX2ZzdGFiKHNlbGYsIGZzdGFiX2xpbmVzLCBwYXJ0cyk6CiAgICAgICAgICIiIkFzc3VtZSBwYXJ0aXRpb24gb3JkZXIgc2FtZSBhcyBpbiB3a3MiIiIKICAgICAgICAgdXBkYXRlZCA9IEZhbHNlCiAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgogICAgICAgICAgICAgaWYgbm90IHBhcnQucmVhbG51bSBvciBub3QgcGFydC5tb3VudHBvaW50IFwKLSAgICAgICAgICAgICAgIG9yIHBhcnQubW91bnRwb2ludCBpbiAoIi8iLCAiL2Jvb3QiKToKKyAgICAgICAgICAgICAgIG9yIHBhcnQubW91bnRwb2ludCA9PSAiLyI6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgIyBtbWMgZGV2aWNlIHBhcnRpdGlvbnMgYXJlIG5hbWVkIG1tY2JsazBwMSwgbW1jYmxrMHAyLi4KLSAgICAgICAgICAgIHByZWZpeCA9ICdwJyBpZiAgcGFydC5kaXNrLnN0YXJ0c3dpdGgoJ21tY2JsaycpIGVsc2UgJycKLSAgICAgICAgICAgIGRldmljZV9uYW1lID0gIi9kZXYvJXMlcyVkIiAlIChwYXJ0LmRpc2ssIHByZWZpeCwgcGFydC5yZWFsbnVtKQorICAgICAgICAgICAgaWYgcGFydC51c2VfdXVpZDoKKyAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJQQVJUVVVJRD0lcyIgJSBwYXJ0LnV1aWQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBtbWMgZGV2aWNlIHBhcnRpdGlvbnMgYXJlIG5hbWVkIG1tY2JsazBwMSwgbW1jYmxrMHAyLi4KKyAgICAgICAgICAgICAgICBwcmVmaXggPSAncCcgaWYgIHBhcnQuZGlzay5zdGFydHN3aXRoKCdtbWNibGsnKSBlbHNlICcnCisgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiL2Rldi8lcyVzJWQiICUgKHBhcnQuZGlzaywgcHJlZml4LCBwYXJ0LnJlYWxudW0pCiAKICAgICAgICAgICAgIG9wdHMgPSBwYXJ0LmZzb3B0cyBpZiBwYXJ0LmZzb3B0cyBlbHNlICJkZWZhdWx0cyIKICAgICAgICAgICAgIGxpbmUgPSAiXHQiLmpvaW4oW2RldmljZV9uYW1lLCBwYXJ0Lm1vdW50cG9pbnQsIHBhcnQuZnN0eXBlLApAQCAtMTU2LDcgKzE2OSwxMyBAQAogICAgICAgICBmaWxlc3lzdGVtcyBmcm9tIHRoZSBhcnRpZmFjdHMgZGlyZWN0bHkgYW5kIGNvbWJpbmUgdGhlbSBpbnRvCiAgICAgICAgIGEgcGFydGl0aW9uZWQgaW1hZ2UuCiAgICAgICAgICIiIgotICAgICAgICBmc3RhYl9wYXRoID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQorICAgICAgICBpZiBzZWxmLm5vX2ZzdGFiX3VwZGF0ZToKKyAgICAgICAgICAgIG5ld19yb290ZnMgPSBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuZXdfcm9vdGZzID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQorICAgICAgICBpZiBuZXdfcm9vdGZzOgorICAgICAgICAgICAgIyByb290ZnMgd2FzIGNvcGllZCB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgIHNlbGYucm9vdGZzX2RpclsnUk9PVEZTX0RJUiddID0gbmV3X3Jvb3RmcwogCiAgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CiAgICAgICAgICAgICAjIGdldCByb290ZnMgc2l6ZSBmcm9tIGJpdGJha2UgdmFyaWFibGUgaWYgaXQncyBub3Qgc2V0IGluIC5rcyBmaWxlCkBAIC0xNzMsMTAgKzE5Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LnNpemUgPSBpbnQocm91bmQoZmxvYXQocnNpemVfYmIpKSkKIAogICAgICAgICBzZWxmLl9pbWFnZS5wcmVwYXJlKHNlbGYpCi0KLSAgICAgICAgaWYgZnN0YWJfcGF0aDoKLSAgICAgICAgICAgIHNodXRpbC5tb3ZlKGZzdGFiX3BhdGggKyAiLm9yaWciLCBmc3RhYl9wYXRoKQotCiAgICAgICAgIHNlbGYuX2ltYWdlLmxheW91dF9wYXJ0aXRpb25zKCkKICAgICAgICAgc2VsZi5faW1hZ2UuY3JlYXRlKCkKIApAQCAtMjA1LDggKzIyMCwxMCBAQAogICAgICAgICAjIEdlbmVyYXRlIC5ibWFwCiAgICAgICAgIGlmIHNlbGYuYm1hcDoKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiR2VuZXJhdGluZyBibWFwIGZpbGUgZm9yICVzIiwgZGlza19uYW1lKQotICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKCJibWFwdG9vbCBjcmVhdGUgJXMgLW8gJXMuYm1hcCIgJSAoZnVsbF9wYXRoLCBmdWxsX3BhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICBweXRob24gPSBvcy5wYXRoLmpvaW4oc2VsZi5uYXRpdmVfc3lzcm9vdCwgJ3Vzci9iaW4vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMycpCisgICAgICAgICAgICBibWFwdG9vbCA9IG9zLnBhdGguam9pbihzZWxmLm5hdGl2ZV9zeXNyb290LCAndXNyL2Jpbi9ibWFwdG9vbCcpCisgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQoIiVzICVzIGNyZWF0ZSAlcyAtbyAlcy5ibWFwIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLCBibWFwdG9vbCwgZnVsbF9wYXRoLCBmdWxsX3BhdGgpLCBzZWxmLm5hdGl2ZV9zeXNyb290KQogICAgICAgICAjIENvbXByZXNzIHRoZSBpbWFnZQogICAgICAgICBpZiBzZWxmLmNvbXByZXNzb3I6CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNvbXByZXNzaW5nIGRpc2sgJXMgd2l0aCAlcyIsIGRpc2tfbmFtZSwgc2VsZi5jb21wcmVzc29yKQpAQCAtMjk2LDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIHBhcnRpdGlvbnMgKGluIGJ5dGVzKQogICAgICAgICBzZWxmLnB0YWJsZV9mb3JtYXQgPSBwdGFibGVfZm9ybWF0ICAjIFBhcnRpdGlvbiB0YWJsZSBmb3JtYXQKICAgICAgICAgIyBEaXNrIHN5c3RlbSBpZGVudGlmaWVyCi0gICAgICAgIHNlbGYuaWRlbnRpZmllciA9IGludC5mcm9tX2J5dGVzKG9zLnVyYW5kb20oNCksICdsaXR0bGUnKQorICAgICAgICBzZWxmLmlkZW50aWZpZXIgPSByYW5kb20uU3lzdGVtUmFuZG9tKCkucmFuZGludCgxLCAweGZmZmZmZmZmKQogCiAgICAgICAgIHNlbGYucGFydGl0aW9ucyA9IHBhcnRpdGlvbnMKICAgICAgICAgc2VsZi5wYXJ0aW1hZ2VzID0gW10KQEAgLTMxMiw3ICszMjksNyBAQAogICAgICAgICAgICAgICAgIHBhcnQucmVhbG51bSA9IDAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVhbG51bSArPSAxCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5wdGFibGVfZm9ybWF0ID09ICdtc2RvcycgYW5kIHJlYWxudW0gPiAzOgorICAgICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCByZWFsbnVtID4gMyBhbmQgbGVuKHBhcnRpdGlvbnMpID4gNDoKICAgICAgICAgICAgICAgICAgICAgcGFydC5yZWFsbnVtID0gcmVhbG51bSArIDEKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBwYXJ0LnJlYWxudW0gPSByZWFsbnVtCkBAIC0zNTIsNiArMzY5LDEwIEBACiAgICAgICAgIGZvciBudW0gaW4gcmFuZ2UobGVuKHNlbGYucGFydGl0aW9ucykpOgogICAgICAgICAgICAgcGFydCA9IHNlbGYucGFydGl0aW9uc1tudW1dCiAKKyAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCBwYXJ0LnBhcnRfbmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigic2V0dGluZyBjdXN0b20gcGFydGl0aW9uIG5hbWUgaXMgbm90ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBsZW1lbnRlZCBmb3IgbXNkb3MgcGFydGl0aW9ucyIpCisKICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCBwYXJ0LnBhcnRfdHlwZToKICAgICAgICAgICAgICAgICAjIFRoZSAtLXBhcnQtdHlwZSBjYW4gYWxzbyBiZSBpbXBsZW1lbnRlZCBmb3IgTUJSIHBhcnRpdGlvbnMsCiAgICAgICAgICAgICAgICAgIyBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIG1hcCB0byB0aGUgMS1ieXRlICJwYXJ0aXRpb24gdHlwZSIKQEAgLTUwNSw2ICs1MjYsMTMgQEAKICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9wYXJ0aXRpb24oc2VsZi5wYXRoLCBwYXJ0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRlZF9mc190eXBlLCBwYXJ0LnN0YXJ0LCBwYXJ0LnNpemVfc2VjKQogCisgICAgICAgICAgICBpZiBwYXJ0LnBhcnRfbmFtZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhcnRpdGlvbiAlZDogc2V0IG5hbWUgdG8gJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0Lm51bSwgcGFydC5wYXJ0X25hbWUpCisgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKCJzZ2Rpc2sgLS1jaGFuZ2UtbmFtZT0lZDolcyAlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJ0Lm51bSwgcGFydC5wYXJ0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGgpLCBzZWxmLm5hdGl2ZV9zeXNyb290KQorCiAgICAgICAgICAgICBpZiBwYXJ0LnBhcnRfdHlwZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhcnRpdGlvbiAlZDogc2V0IHR5cGUgVUlEIHRvICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5udW0sIHBhcnQucGFydF90eXBlKQpAQCAtNTUwLDcgKzU3OCw3IEBACiAgICAgICAgICAgICBzb3VyY2UgPSBwYXJ0LnNvdXJjZV9maWxlCiAgICAgICAgICAgICBpZiBzb3VyY2U6CiAgICAgICAgICAgICAgICAgIyBpbnN0YWxsIHNvdXJjZV9maWxlIGNvbnRlbnRzIGludG8gYSBwYXJ0aXRpb24KLSAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzb3VyY2UsIHNlbGYucGF0aCwgcGFydC5zdGFydCAqIHNlbGYuc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkoc291cmNlLCBzZWxmLnBhdGgsIHNlZWs9cGFydC5zdGFydCAqIHNlbGYuc2VjdG9yX3NpemUpCiAKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkluc3RhbGxlZCAlcyBpbiBwYXJ0aXRpb24gJWQsIHNlY3RvcnMgJWQtJWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemUgJWQgc2VjdG9ycyIsIHNvdXJjZSwgcGFydC5udW0sIHBhcnQuc3RhcnQsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weQppbmRleCA5ODc5Y2I5Li40YzRmMzZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1lZmkucHkKQEAgLTMxLDggKzMxLDggQEAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMuZW5naW5lIGltcG9ydCBnZXRfY3VzdG9tX2NvbmZpZwogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCAoZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT1RERF9FWFRSQV9TUEFDRSkKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IChleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kLAorICAgICAgICAgICAgICAgICAgICAgIGdldF9iaXRiYWtlX3ZhciwgQk9PVEREX0VYVFJBX1NQQUNFKQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wYXJ0aXRpb24ucHkKaW5kZXggMTNmZGRiZC4uNjdlNTQ5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CkBAIC0zMSw3ICszMSw3IEBACiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgIC0gc2V0cyB1cCBhIHZmYXQgcGFydGl0aW9uCiAgICAgICAgIC0gY29waWVzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gSU1BR0VfQk9PVF9GSUxFUyB2YXJpYWJsZQogICAgICAgICAiIiIKLSAgICAgICAgaGRkZGlyID0gIiVzL2Jvb3QiICUgY3Jfd29ya2RpcgorICAgICAgICBoZGRkaXIgPSAiJXMvYm9vdC4lZCIgJSAoY3Jfd29ya2RpciwgcGFydC5saW5lbm8pCiAgICAgICAgIGluc3RhbGxfY21kID0gImluc3RhbGwgLWQgJXMiICUgaGRkZGlyCiAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQogCkBAIC02NSwxMCArNjUsMTkgQEAKIAogICAgICAgICBsb2dnZXIuZGVidWcoJ0tlcm5lbCBkaXI6ICVzJywgYm9vdGltZ19kaXIpCiAKLSAgICAgICAgYm9vdF9maWxlcyA9IGdldF9iaXRiYWtlX3ZhcigiSU1BR0VfQk9PVF9GSUxFUyIpCisgICAgICAgIGJvb3RfZmlsZXMgPSBOb25lCisgICAgICAgIGZvciAoZm10LCBpZCkgaW4gKCgiX3V1aWQtJXMiLCBwYXJ0LnV1aWQpLCAoIl9sYWJlbC0lcyIsIHBhcnQubGFiZWwpLCAoTm9uZSwgTm9uZSkpOgorICAgICAgICAgICAgaWYgZm10OgorICAgICAgICAgICAgICAgIHZhciA9IGZtdCAlIGlkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHZhciA9ICIiCiAKLSAgICAgICAgaWYgbm90IGJvb3RfZmlsZXM6Ci0gICAgICAgICAgICByYWlzZSBXaWNFcnJvcignTm8gYm9vdCBmaWxlcyBkZWZpbmVkLCBJTUFHRV9CT09UX0ZJTEVTIHVuc2V0JykKKyAgICAgICAgICAgIGJvb3RfZmlsZXMgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX0JPT1RfRklMRVMiICsgdmFyKQorICAgICAgICAgICAgaWYgYm9vdF9maWxlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGJvb3RfZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCdObyBib290IGZpbGVzIGRlZmluZWQsIElNQUdFX0JPT1RfRklMRVMgdW5zZXQgZm9yIGVudHJ5ICMlZCcgJSBwYXJ0LmxpbmVubykKIAogICAgICAgICBsb2dnZXIuZGVidWcoJ0Jvb3QgZmlsZXM6ICVzJywgYm9vdF9maWxlcykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKaW5kZXggNTg5MGMxMi4uNTZkYTQ2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CkBAIC0yOSwxMCArMjksOSBAQAogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLmVuZ2luZSBpbXBvcnQgZ2V0X2N1c3RvbV9jb25maWcKLWZyb20gd2ljLnV0aWxzIGltcG9ydCBydW5uZXIKIGZyb20gd2ljLnBsdWdpbmJhc2UgaW1wb3J0IFNvdXJjZVBsdWdpbgotZnJvbSB3aWMudXRpbHMubWlzYyBpbXBvcnQgKGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2JpdGJha2VfdmFyLCBCT09URERfRVhUUkFfU1BBQ0UpCitmcm9tIHdpYy5taXNjIGltcG9ydCAoZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwKKyAgICAgICAgICAgICAgICAgICAgICBnZXRfYml0YmFrZV92YXIsIEJPT1RERF9FWFRSQV9TUEFDRSkKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dpYycpCiAKQEAgLTQ2LDEwICs0NSw5IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9nZXRfYm9vdGltZ19kaXIoY2xzLCBib290aW1nX2RpciwgZGlybmFtZSk6CiAgICAgICAgICIiIgotICAgICAgICBDaGVjayBpZiBkaXJuYW1lIGV4aXN0cyBpbiBkZWZhdWx0IGJvb3RpbWdfZGlyIG9yCi0gICAgICAgIGluIHdpYy10b29scyBTVEFHSU5HX0RJUi4KKyAgICAgICAgQ2hlY2sgaWYgZGlybmFtZSBleGlzdHMgaW4gZGVmYXVsdCBib290aW1nX2RpciBvciBpbiBTVEFHSU5HX0RJUi4KICAgICAgICAgIiIiCi0gICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIsICJ3aWMtdG9vbHMiKSk6CisgICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIpKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy8lcyIgJSAocmVzdWx0LCBkaXJuYW1lKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC0xODYsNyArMTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Jsb2NrcywgcGFydC5tb3VudHBvaW50LCBibG9ja3MpCiAKICAgICAgICAgIyBkb3NmcyBpbWFnZSwgY3JlYXRlZCBieSBta2Rvc2ZzCi0gICAgICAgIGJvb3RpbWcgPSAiJXMvYm9vdC5pbWciICUgY3Jfd29ya2RpcgorICAgICAgICBib290aW1nID0gIiVzL2Jvb3Qlcy5pbWciICUgKGNyX3dvcmtkaXIsIHBhcnQubGluZW5vKQogCiAgICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzIC1uIGJvb3QgLVMgNTEyIC1DICVzICVkIiAlIChib290aW1nLCBibG9ja3MpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9pc29pbWFnZS1pc29oeWJyaWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQppbmRleCAxY2ViYTYyLi5kNmJkM2JmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQpAQCAtMjksNyArMjksNyBAQAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5lbmdpbmUgaW1wb3J0IGdldF9jdXN0b21fY29uZmlnCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsIGdldF9iaXRiYWtlX3ZhcgorZnJvbSB3aWMubWlzYyBpbXBvcnQgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICBjZmcud3JpdGUoc3lzbGludXhfY29uZikKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBkb19jb25maWd1cmVfZ3J1YmVmaShjbHMsIHBhcnQsIGNyZWF0b3IsIGNyX3dvcmtkaXIpOgorICAgIGRlZiBkb19jb25maWd1cmVfZ3J1YmVmaShjbHMsIHBhcnQsIGNyZWF0b3IsIHRhcmdldF9kaXIpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGxvYWRlci1zcGVjaWZpYyAoZ3J1Yi1lZmkpIGNvbmZpZwogICAgICAgICAiIiIKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJjb25maWdmaWxlIGlzIHNwZWNpZmllZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBmYWlsZWQgdG8gZ2V0IGl0IGZyb20gJXMiLCBjb25maWdmaWxlKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3BsYXNoID0gb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJFRkkvYm9vdC9zcGxhc2guanBnIikKKyAgICAgICAgICAgIHNwbGFzaCA9IG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAic3BsYXNoLmpwZyIpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzcGxhc2gpOgogICAgICAgICAgICAgICAgIHNwbGFzaGxpbmUgPSAibWVudSBiYWNrZ3JvdW5kIHNwbGFzaC5qcGciCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTM3LDkgKzEzNywxMCBAQAogICAgICAgICAgICAgaWYgc3BsYXNobGluZToKICAgICAgICAgICAgICAgICBncnViZWZpX2NvbmYgKz0gIiVzXG4iICUgc3BsYXNobGluZQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygiV3JpdGluZyBncnViZWZpIGNvbmZpZyAlcy9FRkkvQk9PVC9ncnViLmNmZyIsIGNyX3dvcmtkaXIpCisgICAgICAgIGNmZ19wYXRoID0gb3MucGF0aC5qb2luKHRhcmdldF9kaXIsICJncnViLmNmZyIpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiV3JpdGluZyBncnViZWZpIGNvbmZpZyAlcyIsIGNmZ19wYXRoKQogCi0gICAgICAgIHdpdGggb3BlbigiJXMvRUZJL0JPT1QvZ3J1Yi5jZmciICUgY3Jfd29ya2RpciwgInciKSBhcyBjZmc6CisgICAgICAgIHdpdGggb3BlbihjZmdfcGF0aCwgInciKSBhcyBjZmc6CiAgICAgICAgICAgICBjZmcud3JpdGUoZ3J1YmVmaV9jb25mKQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMTYyLDEzICsxNjMsMTQgQEAKICAgICAgICAgICAgIGlmIG5vdCBpbWFnZV90eXBlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIElOSVRSQU1GU19GU1RZUEVTLCBleGl0aW5nLiIpCiAKLSAgICAgICAgICAgIHRhcmdldF9hcmNoID0gZ2V0X2JpdGJha2VfdmFyKCJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIikKLSAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfYXJjaDoKLSAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBUUkFOU0xBVEVEX1RBUkdFVF9BUkNILCBleGl0aW5nLiIpCisgICAgICAgICAgICBtYWNoaW5lID0gb3MucGF0aC5iYXNlbmFtZShpbml0cmRfZGlyKQogCi0gICAgICAgICAgICBpbml0cmQgPSBnbG9iLmdsb2IoJyVzLyVzKiVzLiVzJyAlIChpbml0cmRfZGlyLCBpbWFnZV9uYW1lLCB0YXJnZXRfYXJjaCwgaW1hZ2VfdHlwZSkpWzBdCisgICAgICAgICAgICBwYXR0ZXJuID0gJyVzLyVzKiVzLiVzJyAlIChpbml0cmRfZGlyLCBpbWFnZV9uYW1lLCBtYWNoaW5lLCBpbWFnZV90eXBlKQorICAgICAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IocGF0dGVybikKKyAgICAgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgICAgIGluaXRyZCA9IGZpbGVzWzBdCiAKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGluaXRyZCk6CisgICAgICAgIGlmIG5vdCBpbml0cmQgb3Igbm90IG9zLnBhdGguZXhpc3RzKGluaXRyZCk6CiAgICAgICAgICAgICAjIENyZWF0ZSBpbml0cmQgZnJvbSByb290ZnMgZGlyZWN0b3J5CiAgICAgICAgICAgICBpbml0cmQgPSAiJXMvaW5pdHJkLmNwaW8uZ3oiICUgY3Jfd29ya2RpcgogICAgICAgICAgICAgaW5pdHJkX2RpciA9ICIlcy9JTklUUkQiICUgY3Jfd29ya2RpcgpAQCAtMjA2LDggKzIwOCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBpc29kaXIgPSAiJXMvSVNPLyIgJSBjcl93b3JrZGlyCiAKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY3Jfd29ya2Rpcik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGNyX3dvcmtkaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGlzb2Rpcik6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGlzb2RpcikKIAogICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1kICVzICIgJSBpc29kaXIKICAgICAgICAgZXhlY19jbWQoaW5zdGFsbF9jbWQpCkBAIC0zMTIsMjAgKzMxNCwxMyBAQAogCiAgICAgICAgICNDcmVhdGUgYm9vdGxvYWRlciBmb3IgZWZpIGJvb3QKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGFyZ2V0X2RpciA9ICIlcy9FRkkvQk9PVCIgJSBpc29kaXIKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRhcmdldF9kaXIpOgorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGFyZ2V0X2RpcikKKworICAgICAgICAgICAgb3MubWFrZWRpcnModGFyZ2V0X2RpcikKKwogICAgICAgICAgICAgaWYgc291cmNlX3BhcmFtc1snbG9hZGVyJ10gPT0gJ2dydWItZWZpJzoKLSAgICAgICAgICAgICAgICAjIEJ1aWxkcyBncnViLmNmZyBpZiBJU09ESVIgZGlkbid0IGV4aXN0IG9yCi0gICAgICAgICAgICAgICAgIyBkaWRuJ3QgY29udGFpbnMgZ3J1Yi5jZmcKLSAgICAgICAgICAgICAgICBib290aW1nX2RpciA9IGltZ19pc29fZGlyCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCIlcy9FRkkvQk9PVCIgJSBib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGJvb3RpbWdfZGlyID0gIiVzL2Jvb3RpbWciICUgY3Jfd29ya2RpcgotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGJvb3RpbWdfZGlyKQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1kICVzL0VGSS9CT09UIiAlIGJvb3RpbWdfZGlyCi0gICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIlcy9FRkkvQk9PVC9ib290LmNmZyIgJSBib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGNscy5kb19jb25maWd1cmVfZ3J1YmVmaShwYXJ0LCBjcmVhdG9yLCBib290aW1nX2RpcikKLQogICAgICAgICAgICAgICAgICMgQnVpbGRzIGJvb3R4NjQuZWZpL2Jvb3RpYTMyLmVmaSBpZiBJU09ESVIgZGlkbid0IGV4aXN0IG9yCiAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgY29udGFpbnMgaXQKICAgICAgICAgICAgICAgICB0YXJnZXRfYXJjaCA9IGdldF9iaXRiYWtlX3ZhcigiVEFSR0VUX1NZUyIpCkBAIC0zMzMsMzcgKzMyOCwyMyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ29sdWRuJ3QgZmluZCB0YXJnZXQgYXJjaGl0ZWN0dXJlIikKIAogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCJ4ODZfNjQiLCB0YXJnZXRfYXJjaCk6Ci0gICAgICAgICAgICAgICAgICAgIGdydWJfdGFyZ2V0ID0gJ3g4Nl82NC1lZmknCi0gICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiYm9vdHg2NC5lZmkiCisgICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCiAgICAgICAgICAgICAgICAgZWxpZiByZS5tYXRjaCgnaS44NicsIHRhcmdldF9hcmNoKToKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl90YXJnZXQgPSAnaTM4Ni1lZmknCi0gICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiYm9vdGlhMzIuZWZpIgorICAgICAgICAgICAgICAgICAgICBncnViX2ltYWdlID0gImdydWItZWZpLWJvb3RpYTMyLmVmaSIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiZ3J1Yi1lZmkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGFyZ2V0ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9hcmNoKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIlcy9FRkkvQk9PVC8lcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChib290aW1nX2RpciwgZ3J1Yl9pbWFnZSkpOgotICAgICAgICAgICAgICAgICAgICBncnViX3BhdGggPSBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfTElCRElSIiwgIndpYy10b29scyIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBncnViX3BhdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBTVEFHSU5HX0xJQkRJUiwgZXhpdGluZy4iKQorICAgICAgICAgICAgICAgIGdydWJfdGFyZ2V0ID0gb3MucGF0aC5qb2luKHRhcmdldF9kaXIsIGdydWJfaW1hZ2UpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGdydWJfdGFyZ2V0KToKKyAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zcmMgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgZ3J1Yl9pbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGdydWJfc3JjKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJHcnViIGxvYWRlciAlcyBpcyBub3QgZm91bmQgaW4gJXMuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgYnVpbGQgZ3J1Yi1lZmkgZmlyc3QiICUgKGdydWJfaW1hZ2UsIGRlcGxveV9kaXIpKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weShncnViX3NyYywgZ3J1Yl90YXJnZXQpCiAKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jb3JlID0gIiVzL2dydWIvJXMiICUgKGdydWJfcGF0aCwgZ3J1Yl90YXJnZXQpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhncnViX2NvcmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBsZWFzZSBidWlsZCBncnViLWVmaSBmaXJzdCIpCi0KLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgPSAiZ3J1Yi1ta2ltYWdlIC1wICcvRUZJL0JPT1QnICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gIi1kICVzICIgICUgZ3J1Yl9jb3JlCi0gICAgICAgICAgICAgICAgICAgIGdydWJfY21kICs9ICItTyAlcyAtbyAlcy9FRkkvQk9PVC8lcyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZ3J1Yl90YXJnZXQsIGJvb3RpbWdfZGlyLCBncnViX2ltYWdlKQotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAicGFydF9ncHQgcGFydF9tc2RvcyBudGZzIG50ZnNjb21wIGZhdCBleHQyICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gIm5vcm1hbCBjaGFpbiBib290IGNvbmZpZ2ZpbGUgbGludXggbXVsdGlib290ICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gInNlYXJjaCBlZmlfZ29wIGVmaV91Z2EgZm9udCBnZnh0ZXJtIGdmeG1lbnUgIgotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAidGVybWluYWwgbWluaWNtZCB0ZXN0IGlvcncgbG9hZGVudiBlY2hvIGhlbHAgIgotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAicmVib290IHNlcmlhbCB0ZXJtaW5mbyBpc285NjYwIGxvb3BiYWNrIHRhciAiCi0gICAgICAgICAgICAgICAgICAgIGdydWJfY21kICs9ICJtZW1kaXNrIGxzIHNlYXJjaF9mc191dWlkIHVkZiBidHJmcyB4ZnMgbHZtICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gInJlaXNlcmZzIGF0YSAiCi0gICAgICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChncnViX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAiYm9vdC5jZmciKSk6CisgICAgICAgICAgICAgICAgICAgIGNscy5kb19jb25maWd1cmVfZ3J1YmVmaShwYXJ0LCBjcmVhdG9yLCB0YXJnZXRfZGlyKQogCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJ1bnJlY29nbml6ZWQgYm9vdGltZy1lZmkgbG9hZGVyOiAlcyIgJQpAQCAtMzcxLDE1ICszNTIsNiBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiYm9vdGltZy1lZmkgcmVxdWlyZXMgYSBsb2FkZXIsIG5vbmUgc3BlY2lmaWVkIikKIAotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiJXMvRUZJL0JPT1QiICUgaXNvZGlyKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoIiVzL0VGSS9CT09UIiAlIGlzb2RpcikKLQotICAgICAgICBzaHV0aWwuY29weXRyZWUoYm9vdGltZ19kaXIrIi9FRkkvQk9PVCIsIGlzb2RpcisiL0VGSS9CT09UIikKLQotICAgICAgICAjIElmIGV4aXN0cywgcmVtb3ZlIGNyX3dvcmtkaXIvYm9vdGltZyB0ZW1wb3JhcnkgZm9sZGVyCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy9ib290aW1nIiAlIGNyX3dvcmtkaXIpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgiJXMvYm9vdGltZyIgJSBjcl93b3JrZGlyKQotCiAgICAgICAgICMgQ3JlYXRlIGVmaS5pbWcgdGhhdCBjb250YWlucyBib290bG9hZGVyIGZpbGVzIGZvciBFRkkgYm9vdGluZwogICAgICAgICAjIGlmIElTT0RJUiBkaWRuJ3QgZXhpc3Qgb3IgZGlkbid0IGNvbnRhaW5zIGl0CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCIlcy9lZmkuaW1nIiAlIGltZ19pc29fZGlyKToKQEAgLTQxMyw3ICszODUsNyBAQAogICAgICAgICAgICAgZXhlY19jbWQoY2htb2RfY21kKQogCiAgICAgICAgICMgUHJlcGFyZSBmaWxlcyBmb3IgbGVnYWN5IGJvb3QKLSAgICAgICAgc3lzbGludXhfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJTVEFHSU5HX0RBVEFESVIiLCAid2ljLXRvb2xzIikKKyAgICAgICAgc3lzbGludXhfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJTVEFHSU5HX0RBVEFESVIiKQogICAgICAgICBpZiBub3Qgc3lzbGludXhfZGlyOgogICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNvdWxkbid0IGZpbmQgU1RBR0lOR19EQVRBRElSLCBleGl0aW5nLiIpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQppbmRleCBlMWM0ZjVlLi5lODYzOThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CkBAIC0yMCw3ICsyMCw3IEBACiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiBmcm9tIHdpYy5maWxlbWFwIGltcG9ydCBzcGFyc2VfY29weQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKQEAgLTMyLDYgKzMyLDI1IEBACiAKICAgICBuYW1lID0gJ3Jhd2NvcHknCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGRvX2ltYWdlX2xhYmVsKGZzdHlwZSwgZHN0LCBsYWJlbCk6CisgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgIGNtZCA9ICd0dW5lMmZzIC1MICVzICVzJyAlIChsYWJlbCwgZHN0KQorICAgICAgICBlbGlmIGZzdHlwZSBpbiAoJ21zZG9zJywgJ3ZmYXQnKToKKyAgICAgICAgICAgIGNtZCA9ICdkb3Nmc2xhYmVsICVzICVzJyAlIChkc3QsIGxhYmVsKQorICAgICAgICBlbGlmIGZzdHlwZSA9PSAnYnRyZnMnOgorICAgICAgICAgICAgY21kID0gJ2J0cmZzIGZpbGVzeXN0ZW0gbGFiZWwgJXMgJXMnICUgKGRzdCwgbGFiZWwpCisgICAgICAgIGVsaWYgZnN0eXBlID09ICdzd2FwJzoKKyAgICAgICAgICAgIGNtZCA9ICdta3N3YXAgLUwgJXMgJXMnICUgKGxhYmVsLCBkc3QpCisgICAgICAgIGVsaWYgZnN0eXBlID09ICdzcXVhc2hmcyc6CisgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiSXQncyBub3QgcG9zc2libGUgdG8gdXBkYXRlIGEgc3F1YXNoZnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW0gbGFiZWwgJyVzJyIgJSAobGFiZWwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbm5vdCB1cGRhdGUgZmlsZXN5c3RlbSBsYWJlbDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZnN0eXBlOiAnJXMnIiAlIChmc3R5cGUpKQorCisgICAgICAgIGV4ZWNfY21kKGNtZCkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyLCBjcl93b3JrZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCkBAIC02Niw0ICs4NSw3IEBACiAgICAgICAgIGlmIGZpbGVzaXplID4gcGFydC5zaXplOgogICAgICAgICAgICAgcGFydC5zaXplID0gZmlsZXNpemUKIAorICAgICAgICBpZiBwYXJ0LmxhYmVsOgorICAgICAgICAgICAgUmF3Q29weVBsdWdpbi5kb19pbWFnZV9sYWJlbChwYXJ0LmZzdHlwZSwgZHN0LCBwYXJ0LmxhYmVsKQorCiAgICAgICAgIHBhcnQuc291cmNlX2ZpbGUgPSBkc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKaW5kZXggZjJlMmNhOC4uYWVjNzIwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKQEAgLTI4LDEyICsyOCwxMyBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cwogCiBmcm9tIG9lLnBhdGggaW1wb3J0IGNvcHloYXJkbGlua3RyZWUKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgZXhlY19jbWQKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApAQCAtNDcsNyArNDgsNyBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX19nZXRfcm9vdGZzX2Rpcihyb290ZnNfZGlyKToKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihyb290ZnNfZGlyKToKLSAgICAgICAgICAgIHJldHVybiByb290ZnNfZGlyCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChyb290ZnNfZGlyKQogCiAgICAgICAgIGltYWdlX3Jvb3Rmc19kaXIgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX1JPT1RGUyIsIHJvb3Rmc19kaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGltYWdlX3Jvb3Rmc19kaXIpOgpAQCAtNTUsNyArNTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkICVzIGhhcyBiZWVuIGZvdW5kIGF0ICVzLCBleGl0aW5nLiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvb3Rmc19kaXIsIGltYWdlX3Jvb3Rmc19kaXIpKQogCi0gICAgICAgIHJldHVybiBpbWFnZV9yb290ZnNfZGlyCisgICAgICAgIHJldHVybiBvcy5wYXRoLnJlYWxwYXRoKGltYWdlX3Jvb3Rmc19kaXIpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjciwgY3Jfd29ya2RpciwKQEAgLTgwLDI1ICs4MSwyNSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIC0tcm9vdGZzLWRpcj0lcyBjb25uZWN0aW9uIG9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbm90IGEgdmFsaWQgcGF0aCwgZXhpdGluZyIgJSBwYXJ0LnJvb3Rmc19kaXIpCiAKLSAgICAgICAgcmVhbF9yb290ZnNfZGlyID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2RpcikKKyAgICAgICAgcGFydC5yb290ZnNfZGlyID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2RpcikKIAorICAgICAgICBuZXdfcm9vdGZzID0gTm9uZQogICAgICAgICAjIEhhbmRsZSBleGNsdWRlZCBwYXRocy4KICAgICAgICAgaWYgcGFydC5leGNsdWRlX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAjIFdlIG5lZWQgYSBuZXcgcm9vdGZzIGRpcmVjdG9yeSB3ZSBjYW4gZGVsZXRlIGZpbGVzIGZyb20uIENvcHkgdG8KICAgICAgICAgICAgICMgd29ya2Rpci4KLSAgICAgICAgICAgIG5ld19yb290ZnMgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAicm9vdGZzIikpCisgICAgICAgICAgICBuZXdfcm9vdGZzID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgInJvb3RmcyVkIiAlIHBhcnQubGluZW5vKSkKIAogICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG5ld19yb290ZnMpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG5ld19yb290ZnMpKQogCi0gICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKHJlYWxfcm9vdGZzX2RpciwgbmV3X3Jvb3RmcykKLQotICAgICAgICAgICAgcmVhbF9yb290ZnNfZGlyID0gbmV3X3Jvb3RmcworICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShwYXJ0LnJvb3Rmc19kaXIsIG5ld19yb290ZnMpCiAKICAgICAgICAgICAgIGZvciBvcmlnX3BhdGggaW4gcGFydC5leGNsdWRlX3BhdGg6CiAgICAgICAgICAgICAgICAgcGF0aCA9IG9yaWdfcGF0aAogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG1zZ2VyLmVycm9yKCJNdXN0IGJlIHJlbGF0aXZlOiAtLWV4Y2x1ZGUtcGF0aD0lcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiTXVzdCBiZSByZWxhdGl2ZTogLS1leGNsdWRlLXBhdGg9JXMiICUgb3JpZ19wYXRoKQorICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgcGF0aCkpCiAKQEAgLTEwNiw3ICsxMDcsOCBAQAogICAgICAgICAgICAgICAgICMgYmVjYXVzZSBkb2luZyBzbyBjb3VsZCBiZSBxdWl0ZSBkaXNhc3Ryb3VzICh3ZSB3aWxsIGRlbGV0ZSB0aGUKICAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSkuCiAgICAgICAgICAgICAgICAgaWYgbm90IGZ1bGxfcGF0aC5zdGFydHN3aXRoKG5ld19yb290ZnMpOgotICAgICAgICAgICAgICAgICAgICBtc2dlci5lcnJvcigiJyVzJyBwb2ludHMgdG8gYSBwYXRoIG91dHNpZGUgdGhlIHJvb3RmcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJyVzJyBwb2ludHMgdG8gYSBwYXRoIG91dHNpZGUgdGhlIHJvb3RmcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICAgICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKG9zLnNlcCk6CiAgICAgICAgICAgICAgICAgICAgICMgRGVsZXRlIGNvbnRlbnQgb25seS4KQEAgLTEyMCw2ICsxMjIsNSBAQAogICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB3aG9sZSBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZnVsbF9wYXRoKQogCi0gICAgICAgIHBhcnQucm9vdGZzX2RpciA9IHJlYWxfcm9vdGZzX2RpcgogICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxfcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvb3RmcyBvciBwYXJ0LnJvb3Rmc19kaXIsIG5hdGl2ZV9zeXNyb290KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL21pc2MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL21pc2MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTBhZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9taXNjLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMywgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHBsYWNlIHRvIGNvbGxlY3QgdmFyaW91cyB3aWMtcmVsYXRlZCB1dGlscwotIyBmb3IgdGhlIE9wZW5FbWJlZGRlZCBJbWFnZSBUb29scy4KLSMKLSMgQVVUSE9SUwotIyBUb20gWmFudXNzaSA8dG9tLnphbnVzc2kgKGF0XSBsaW51eC5pbnRlbC5jb20+Ci0jCi0iIiJNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucy4iIiIKLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KLQotZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscyBpbXBvcnQgcnVubmVyCi0KLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQotCi0jIGV4ZWN1dGFibGUgLT4gcmVjaXBlIHBhaXJzIGZvciBleGVjX25hdGl2ZV9jbWQKLU5BVElWRV9SRUNJUEVTID0geyJibWFwdG9vbCI6ICJibWFwLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJncnViLW1raW1hZ2UiOiAiZ3J1Yi1lZmkiLAotICAgICAgICAgICAgICAgICAgImlzb2h5YnJpZCI6ICJzeXNsaW51eCIsCi0gICAgICAgICAgICAgICAgICAibWNvcHkiOiAibXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta2Rvc2ZzIjogImRvc2ZzdG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1raXNvZnMiOiAiY2RydG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuYnRyZnMiOiAiYnRyZnMtdG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0MiI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0MyI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0NCI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMudmZhdCI6ICJkb3Nmc3Rvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta3NxdWFzaGZzIjogInNxdWFzaGZzLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta3N3YXAiOiAidXRpbC1saW51eCIsCi0gICAgICAgICAgICAgICAgICAibW1kIjogInN5c2xpbnV4IiwKLSAgICAgICAgICAgICAgICAgICJwYXJ0ZWQiOiAicGFydGVkIiwKLSAgICAgICAgICAgICAgICAgICJzZmRpc2siOiAidXRpbC1saW51eCIsCi0gICAgICAgICAgICAgICAgICAic2dkaXNrIjogImdwdGZkaXNrIiwKLSAgICAgICAgICAgICAgICAgICJzeXNsaW51eCI6ICJzeXNsaW51eCIKLSAgICAgICAgICAgICAgICAgfQotCi1kZWYgX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGw9RmFsc2UpOgotICAgICIiIgotICAgIEV4ZWN1dGUgY29tbWFuZCwgY2F0Y2hpbmcgc3RkZXJyLCBzdGRvdXQKLQotICAgIE5lZWQgdG8gZXhlY3V0ZSBhc19zaGVsbCBpZiB0aGUgY29tbWFuZCB1c2VzIHdpbGRjYXJkcwotICAgICIiIgotICAgIGxvZ2dlci5kZWJ1ZygiX2V4ZWNfY21kOiAlcyIsIGNtZF9hbmRfYXJncykKLSAgICBhcmdzID0gY21kX2FuZF9hcmdzLnNwbGl0KCkKLSAgICBsb2dnZXIuZGVidWcoYXJncykKLQotICAgIGlmIGFzX3NoZWxsOgotICAgICAgICByZXQsIG91dCA9IHJ1bm5lci5ydW50b29sKGNtZF9hbmRfYXJncykKLSAgICBlbHNlOgotICAgICAgICByZXQsIG91dCA9IHJ1bm5lci5ydW50b29sKGFyZ3MpCi0gICAgb3V0ID0gb3V0LnN0cmlwKCkKLSAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgcmFpc2UgV2ljRXJyb3IoIl9leGVjX2NtZDogJXMgcmV0dXJuZWQgJyVzJyBpbnN0ZWFkIG9mIDBcbm91dHB1dDogJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAoY21kX2FuZF9hcmdzLCByZXQsIG91dCkpCi0KLSAgICBsb2dnZXIuZGVidWcoIl9leGVjX2NtZDogb3V0cHV0IGZvciAlcyAocmMgPSAlZCk6ICVzIiwKLSAgICAgICAgICAgICAgICAgY21kX2FuZF9hcmdzLCByZXQsIG91dCkKLQotICAgIHJldHVybiByZXQsIG91dAotCi0KLWRlZiBleGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsPUZhbHNlKToKLSAgICAiIiIKLSAgICBFeGVjdXRlIGNvbW1hbmQsIHJldHVybiBvdXRwdXQKLSAgICAiIiIKLSAgICByZXR1cm4gX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGwpWzFdCi0KLQotZGVmIGV4ZWNfbmF0aXZlX2NtZChjbWRfYW5kX2FyZ3MsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89IiIpOgotICAgICIiIgotICAgIEV4ZWN1dGUgbmF0aXZlIGNvbW1hbmQsIGNhdGNoaW5nIHN0ZGVyciwgc3Rkb3V0Ci0KLSAgICBOZWVkIHRvIGV4ZWN1dGUgYXNfc2hlbGwgaWYgdGhlIGNvbW1hbmQgdXNlcyB3aWxkY2FyZHMKLQotICAgIEFsd2F5cyBuZWVkIHRvIGV4ZWN1dGUgbmF0aXZlIGNvbW1hbmRzIGFzX3NoZWxsCi0gICAgIiIiCi0gICAgIyBUaGUgcmVhc29uIC0xIGlzIHVzZWQgaXMgYmVjYXVzZSB0aGVyZSBtYXkgYmUgImV4cG9ydCIgY29tbWFuZHMuCi0gICAgYXJncyA9IGNtZF9hbmRfYXJncy5zcGxpdCgnOycpWy0xXS5zcGxpdCgpCi0gICAgbG9nZ2VyLmRlYnVnKGFyZ3MpCi0KLSAgICBpZiBwc2V1ZG86Ci0gICAgICAgIGNtZF9hbmRfYXJncyA9IHBzZXVkbyArIGNtZF9hbmRfYXJncwotCi0gICAgd3Rvb2xzX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQotCi0gICAgbmF0aXZlX3BhdGhzID0gXAotICAgICAgICAgICAgIiVzL3NiaW46JXMvdXNyL3NiaW46JXMvdXNyL2Jpbjolcy9zYmluOiVzL3Vzci9zYmluOiVzL3Vzci9iaW4iICUgXAotICAgICAgICAgICAgKHd0b29sc19zeXNyb290LCB3dG9vbHNfc3lzcm9vdCwgd3Rvb2xzX3N5c3Jvb3QsCi0gICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290LCBuYXRpdmVfc3lzcm9vdCkKLSAgICBuYXRpdmVfY21kX2FuZF9hcmdzID0gImV4cG9ydCBQQVRIPSVzOiRQQVRIOyVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYXRpdmVfcGF0aHMsIGNtZF9hbmRfYXJncykKLSAgICBsb2dnZXIuZGVidWcoImV4ZWNfbmF0aXZlX2NtZDogJXMiLCBuYXRpdmVfY21kX2FuZF9hcmdzKQotCi0gICAgIyBJZiB0aGUgY29tbWFuZCBpc24ndCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3Qgc2F5IHdlIGZhaWxlZC4KLSAgICBpZiBzcGF3bi5maW5kX2V4ZWN1dGFibGUoYXJnc1swXSwgbmF0aXZlX3BhdGhzKToKLSAgICAgICAgcmV0LCBvdXQgPSBfZXhlY19jbWQobmF0aXZlX2NtZF9hbmRfYXJncywgVHJ1ZSkKLSAgICBlbHNlOgotICAgICAgICByZXQgPSAxMjcKLSAgICAgICAgb3V0ID0gImNhbid0IGZpbmQgbmF0aXZlIGV4ZWN1dGFibGUgJXMgaW4gJXMiICUgKGFyZ3NbMF0sIG5hdGl2ZV9wYXRocykKLQotICAgIHByb2cgPSBhcmdzWzBdCi0gICAgIyBzaGVsbCBjb21tYW5kLW5vdC1mb3VuZAotICAgIGlmIHJldCA9PSAxMjcgXAotICAgICAgIG9yIChwc2V1ZG8gYW5kIHJldCA9PSAxIGFuZCBvdXQgPT0gIkNhbid0IGZpbmQgJyVzJyBpbiAkUEFUSC4iICUgcHJvZyk6Ci0gICAgICAgIG1zZyA9ICJBIG5hdGl2ZSBwcm9ncmFtICVzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBpbWFnZSAiXAotICAgICAgICAgICAgICAid2FzIG5vdCBmb3VuZCAoc2VlIGRldGFpbHMgYWJvdmUpLlxuXG4iICUgcHJvZwotICAgICAgICByZWNpcGUgPSBOQVRJVkVfUkVDSVBFUy5nZXQocHJvZykKLSAgICAgICAgaWYgcmVjaXBlOgotICAgICAgICAgICAgbXNnICs9ICJQbGVhc2UgbWFrZSBzdXJlIHdpYy10b29scyBoYXZlICVzLW5hdGl2ZSBpbiBpdHMgREVQRU5EUywgYmFrZSBpdCB3aXRoICdiaXRiYWtlIHdpYy10b29scycgIlwKLSAgICAgICAgICAgICAgICAgICAiYW5kIHRyeSBhZ2Fpbi5cbiIgJSByZWNpcGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZyArPSAiV2ljIGZhaWxlZCB0byBmaW5kIGEgcmVjaXBlIHRvIGJ1aWxkIG5hdGl2ZSAlcy4gUGxlYXNlICJcCi0gICAgICAgICAgICAgICAgICAgImZpbGUgYSBidWcgYWdhaW5zdCB3aWMuXG4iICUgcHJvZwotICAgICAgICByYWlzZSBXaWNFcnJvcihtc2cpCi0KLSAgICByZXR1cm4gcmV0LCBvdXQKLQotQk9PVEREX0VYVFJBX1NQQUNFID0gMTYzODQKLQotY2xhc3MgQml0YmFrZVZhcnMoZGVmYXVsdGRpY3QpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgQml0YmFrZSB2YXJpYWJsZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBkZWZhdWx0ZGljdC5fX2luaXRfXyhzZWxmLCBkaWN0KQotCi0gICAgICAgICMgZGVmYXVsdF9pbWFnZSBhbmQgdmFyc19kaXIgYXR0cmlidXRlcyBzaG91bGQgYmUgc2V0IGZyb20gb3V0c2lkZQotICAgICAgICBzZWxmLmRlZmF1bHRfaW1hZ2UgPSBOb25lCi0gICAgICAgIHNlbGYudmFyc19kaXIgPSBOb25lCi0KLSAgICBkZWYgX3BhcnNlX2xpbmUoc2VsZiwgbGluZSwgaW1hZ2UsIG1hdGNoZXI9cmUuY29tcGlsZShyIl4oW2EtekEtWjAtOVwtXysuL35dKyk9KC4qKSIpKToKLSAgICAgICAgIiIiCi0gICAgICAgIFBhcnNlIG9uZSBsaW5lIGZyb20gYml0YmFrZSAtZSBvdXRwdXQgb3IgZnJvbSAuZW52IGZpbGUuCi0gICAgICAgIFB1dCByZXN1bHQga2V5LXZhbHVlIHBhaXIgaW50byB0aGUgc3RvcmFnZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmICI9IiBub3QgaW4gbGluZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBtYXRjaCA9IG1hdGNoZXIubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGtleSwgdmFsID0gbWF0Y2guZ3JvdXBzKCkKLSAgICAgICAgc2VsZltpbWFnZV1ba2V5XSA9IHZhbC5zdHJpcCgnIicpCi0KLSAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXIsIGltYWdlPU5vbmUsIGNhY2hlPVRydWUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0IGJpdGJha2UgdmFyaWFibGUgZnJvbSAnYml0YmFrZSAtZScgb3V0cHV0IG9yIGZyb20gLmVudiBmaWxlLgotICAgICAgICBUaGlzIGlzIGEgbGF6eSBtZXRob2QsIGkuZS4gaXQgcnVucyBiaXRiYWtlIG9yIHBhcnNlcyBmaWxlIG9ubHkgd2hlbgotICAgICAgICBvbmx5IHdoZW4gdmFyaWFibGUgaXMgcmVxdWVzdGVkLiBJdCBhbHNvIGNhY2hlcyByZXN1bHRzLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGltYWdlOgotICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLmRlZmF1bHRfaW1hZ2UKLQotICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZjoKLSAgICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLnZhcnNfZGlyOgotICAgICAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHNlbGYudmFyc19kaXIsIGltYWdlICsgJy5lbnYnKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSAuZW52IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lKSBhcyB2YXJzZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHZhcnNmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX2xpbmUobGluZSwgaW1hZ2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCBiaXRiYWtlIHZhcmlhYmxlIGZyb20gJXMuIiAlIGZuYW1lKQotICAgICAgICAgICAgICAgICAgICBwcmludCgiRmlsZSAlcyBkb2Vzbid0IGV4aXN0LiIgJSBmbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgR2V0IGJpdGJha2UgLWUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgY21kID0gImJpdGJha2UgLWUiCi0gICAgICAgICAgICAgICAgaWYgaW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIGNtZCArPSAiICVzIiAlIGltYWdlCi0KLSAgICAgICAgICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQotICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCi0gICAgICAgICAgICAgICAgcmV0LCBsaW5lcyA9IF9leGVjX2NtZChjbWQpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKLQotICAgICAgICAgICAgICAgIGlmIHJldDoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgJyVzJyBvdXRwdXQuIiwgY21kKQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkJpdGJha2UgZmFpbGVkIHdpdGggZXJyb3I6XG4lc1xuIiwgbGluZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAgICAgIyBQYXJzZSBiaXRiYWtlIC1lIG91dHB1dAotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzLnNwbGl0KCdcbicpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9saW5lKGxpbmUsIGltYWdlKQotCi0gICAgICAgICAgICAjIE1ha2UgZmlyc3QgaW1hZ2UgYSBkZWZhdWx0IHNldCBvZiB2YXJpYWJsZXMKLSAgICAgICAgICAgIGlmIGNhY2hlOgotICAgICAgICAgICAgICAgIGltYWdlcyA9IFtrZXkgZm9yIGtleSBpbiBzZWxmIGlmIGtleV0KLSAgICAgICAgICAgICAgICBpZiBsZW4oaW1hZ2VzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBzZWxmW05vbmVdID0gc2VsZltpbWFnZV0KLQotICAgICAgICByZXN1bHQgPSBzZWxmW2ltYWdlXS5nZXQodmFyKQotICAgICAgICBpZiBub3QgY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLnBvcChpbWFnZSwgTm9uZSkKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSMgQ3JlYXRlIEJCX1ZBUlMgc2luZ2xldG9uCi1CQl9WQVJTID0gQml0YmFrZVZhcnMoKQotCi1kZWYgZ2V0X2JpdGJha2VfdmFyKHZhciwgaW1hZ2U9Tm9uZSwgY2FjaGU9VHJ1ZSk6Ci0gICAgIiIiCi0gICAgUHJvdmlkZSBvbGQgZ2V0X2JpdGJha2VfdmFyIEFQSSBieSB3cmFwcGluZwotICAgIGdldF92YXIgbWV0aG9kIG9mIEJCX1ZBUlMgc2luZ2xldG9uLgotICAgICIiIgotICAgIHJldHVybiBCQl9WQVJTLmdldF92YXIodmFyLCBpbWFnZSwgY2FjaGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL3J1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvcnVubmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWEwMGZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvcnVubmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uIC10dAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTEgSW50ZWwsIEluYy4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLSMgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5Ci0jIFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKLQotZGVmIHJ1bnRvb2woY21kbG5fb3JfYXJncyk6Ci0gICAgIiIiIHdyYXBwZXIgZm9yIG1vc3Qgb2YgdGhlIHN1YnByb2Nlc3MgY2FsbHMKLSAgICBpbnB1dDoKLSAgICAgICAgY21kbG5fb3JfYXJnczogY2FuIGJlIGJvdGggYXJncyBhbmQgY21kbG4gc3RyIChzaGVsbD1UcnVlKQotICAgIHJldHVybjoKLSAgICAgICAgcmMsIG91dHB1dAotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2UoY21kbG5fb3JfYXJncywgbGlzdCk6Ci0gICAgICAgIGNtZCA9IGNtZGxuX29yX2FyZ3NbMF0KLSAgICAgICAgc2hlbGwgPSBGYWxzZQotICAgIGVsc2U6Ci0gICAgICAgIGltcG9ydCBzaGxleAotICAgICAgICBjbWQgPSBzaGxleC5zcGxpdChjbWRsbl9vcl9hcmdzKVswXQotICAgICAgICBzaGVsbCA9IFRydWUKLQotICAgIHNvdXQgPSBzdWJwcm9jZXNzLlBJUEUKLSAgICBzZXJyID0gc3VicHJvY2Vzcy5TVERPVVQKLQotICAgIHRyeToKLSAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kbG5fb3JfYXJncywgc3Rkb3V0PXNvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zZXJyLCBzaGVsbD1zaGVsbCkKLSAgICAgICAgc291dCwgc2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICAjIGNvbWJpbmUgc3Rkb3V0IGFuZCBzdGRlcnIsIGZpbHRlciBOb25lIG91dCBhbmQgZGVjb2RlCi0gICAgICAgIG91dCA9ICcnLmpvaW4oW291dC5kZWNvZGUoJ3V0Zi04JykgZm9yIG91dCBpbiBbc291dCwgc2Vycl0gaWYgb3V0XSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgIGlmIGVyci5lcnJubyA9PSAyOgotICAgICAgICAgICAgIyBbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoJ0Nhbm5vdCBydW4gY29tbWFuZDogJXMsIGxvc3QgZGVwZW5kZW5jeT8nICUgY21kKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgIyByZWxheQotCi0gICAgcmV0dXJuIHByb2Nlc3MucmV0dXJuY29kZSwgb3V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CmluZGV4IDZmMGI4NGYuLmFjODhmMGYgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CkBAIC0yOSwxMiArMjksMTQgQEAKIGltcG9ydCBzY3JpcHRwYXRoCiBmcm9tIGJ1aWxkX3BlcmYgaW1wb3J0IHByaW50X3RhYmxlCiBmcm9tIGJ1aWxkX3BlcmYucmVwb3J0IGltcG9ydCAobWV0YWRhdGFfeG1sX3RvX2pzb24sIHJlc3VsdHNfeG1sX3RvX2pzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlX2RhdGEsIGFnZ3JlZ2F0ZV9tZXRhZGF0YSwgbWVhc3VyZW1lbnRfc3RhdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlX2RhdGEsIGFnZ3JlZ2F0ZV9tZXRhZGF0YSwgbWVhc3VyZW1lbnRfc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRlVGVzdERhdGEpCiBmcm9tIGJ1aWxkX3BlcmYgaW1wb3J0IGh0bWwKK2Zyb20gYnVpbGRzdGF0cyBpbXBvcnQgQnVpbGRTdGF0cywgZGlmZl9idWlsZHN0YXRzLCBCU1ZlckRpZmYKIAogc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQogCi1mcm9tIG9lcWEudXRpbHMuZ2l0IGltcG9ydCBHaXRSZXBvCitmcm9tIG9lcWEudXRpbHMuZ2l0IGltcG9ydCBHaXRSZXBvLCBHaXRFcnJvcgogCiAKICMgU2V0dXAgbG9nZ2luZwpAQCAtODIsMjkgKzg0LDUyIEBACiAgICAgIyBSZXR1cm4gZmllbGQgbmFtZXMgYW5kIGEgc29ydGVkIGxpc3Qgb2YgcmV2cwogICAgIHJldHVybiB1bmRlZl9maWVsZHMsIHNvcnRlZChyZXZzKQogCi1kZWYgbGlzdF90ZXN0X3JldnMocmVwbywgdGFnX25hbWUsICoqa3dhcmdzKToKK2RlZiBsaXN0X3Rlc3RfcmV2cyhyZXBvLCB0YWdfbmFtZSwgdmVyYm9zaXR5LCAqKmt3YXJncyk6CiAgICAgIiIiR2V0IGxpc3Qgb2YgYWxsIHRlc3RlZCByZXZpc2lvbnMiIiIKLSAgICBmaWVsZHMsIHJldnMgPSBnZXRfdGVzdF9ydW5zKHJlcG8sIHRhZ19uYW1lLCAqKmt3YXJncykKKyAgICB2YWxpZF9rd2FyZ3MgPSBkaWN0KFsoaywgdikgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCkgaWYgdiBpcyBub3QgTm9uZV0pCisKKyAgICBmaWVsZHMsIHJldnMgPSBnZXRfdGVzdF9ydW5zKHJlcG8sIHRhZ19uYW1lLCAqKnZhbGlkX2t3YXJncykKICAgICBpZ25vcmVfZmllbGRzID0gWyd0YWdfbnVtYmVyJ10KKyAgICBpZiB2ZXJib3NpdHkgPCAyOgorICAgICAgICBleHRyYV9maWVsZHMgPSBbJ0NPTU1JVFMnLCAnVEVTVCBSVU5TJ10KKyAgICAgICAgaWdub3JlX2ZpZWxkcy5leHRlbmQoWydjb21taXRfbnVtYmVyJywgJ2NvbW1pdCddKQorICAgIGVsc2U6CisgICAgICAgIGV4dHJhX2ZpZWxkcyA9IFsnVEVTVCBSVU5TJ10KKwogICAgIHByaW50X2ZpZWxkcyA9IFtpIGZvciBpLCBmIGluIGVudW1lcmF0ZShmaWVsZHMpIGlmIGYgbm90IGluIGlnbm9yZV9maWVsZHNdCiAKICAgICAjIFNvcnQgcmV2cwotICAgIHJvd3MgPSBbW2ZpZWxkc1tpXS51cHBlcigpIGZvciBpIGluIHByaW50X2ZpZWxkc10gKyBbJ1RFU1QgUlVOUyddXQotICAgIHByZXYgPSBbJyddICogbGVuKHJldnMpCisgICAgcm93cyA9IFtbZmllbGRzW2ldLnVwcGVyKCkgZm9yIGkgaW4gcHJpbnRfZmllbGRzXSArIGV4dHJhX2ZpZWxkc10KKworICAgIHByZXYgPSBbJyddICogbGVuKHByaW50X2ZpZWxkcykKKyAgICBwcmV2X2NvbW1pdCA9IE5vbmUKKyAgICBjb21taXRfY250ID0gMAorICAgIGNvbW1pdF9maWVsZCA9IGZpZWxkcy5pbmRleCgnY29tbWl0JykKICAgICBmb3IgcmV2IGluIHJldnM6CiAgICAgICAgICMgT25seSB1c2UgZmllbGRzIHRoYXQgd2Ugd2FudCB0byBwcmludAotICAgICAgICByZXYgPSBbcmV2W2ldIGZvciBpIGluIHByaW50X2ZpZWxkc10KKyAgICAgICAgY29scyA9IFtyZXZbaV0gZm9yIGkgaW4gcHJpbnRfZmllbGRzXQogCi0gICAgICAgIGlmIHJldiAhPSBwcmV2OgotICAgICAgICAgICAgbmV3X3JvdyA9IFsnJ10gKiBsZW4ocHJpbnRfZmllbGRzKSArIFsxXQorCisgICAgICAgIGlmIGNvbHMgIT0gcHJldjoKKyAgICAgICAgICAgIGNvbW1pdF9jbnQgPSAxCisgICAgICAgICAgICB0ZXN0X3J1bl9jbnQgPSAxCisgICAgICAgICAgICBuZXdfcm93ID0gWycnXSAqIChsZW4ocHJpbnRfZmllbGRzKSArIGxlbihleHRyYV9maWVsZHMpKQorCiAgICAgICAgICAgICBmb3IgaSBpbiBwcmludF9maWVsZHM6Ci0gICAgICAgICAgICAgICAgaWYgcmV2W2ldICE9IHByZXZbaV06CisgICAgICAgICAgICAgICAgaWYgY29sc1tpXSAhPSBwcmV2W2ldOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgbmV3X3Jvd1tpOi0xXSA9IHJldltpOl0KKyAgICAgICAgICAgIG5ld19yb3dbaTotbGVuKGV4dHJhX2ZpZWxkcyldID0gY29sc1tpOl0KICAgICAgICAgICAgIHJvd3MuYXBwZW5kKG5ld19yb3cpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByb3dzWy0xXVstMV0gKz0gMQotICAgICAgICBwcmV2ID0gcmV2CisgICAgICAgICAgICBpZiByZXZbY29tbWl0X2ZpZWxkXSAhPSBwcmV2X2NvbW1pdDoKKyAgICAgICAgICAgICAgICBjb21taXRfY250ICs9IDEKKyAgICAgICAgICAgIHRlc3RfcnVuX2NudCArPSAxCisKKyAgICAgICAgaWYgdmVyYm9zaXR5IDwgMjoKKyAgICAgICAgICAgIG5ld19yb3dbLTJdID0gY29tbWl0X2NudAorICAgICAgICBuZXdfcm93Wy0xXSA9IHRlc3RfcnVuX2NudAorICAgICAgICBwcmV2ID0gY29scworICAgICAgICBwcmV2X2NvbW1pdCA9IHJldltjb21taXRfZmllbGRdCiAKICAgICBwcmludF90YWJsZShyb3dzKQogCkBAIC0zMDksMjAgKzMzNCw1MCBAQAogICAgIHByaW50KCkKIAogCi1kZWYgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaWRfY29tcCk6CitjbGFzcyBCU1N1bW1hcnkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnMxLCBiczIpOgorICAgICAgICBzZWxmLnRhc2tzID0geydjb3VudCc6IGJzMi5udW1fdGFza3MsCisgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZSc6ICd7OitkfScuZm9ybWF0KGJzMi5udW1fdGFza3MgLSBiczEubnVtX3Rhc2tzKX0KKyAgICAgICAgc2VsZi50b3BfY29uc3VtZXIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RlY3JlYXNlID0gTm9uZQorICAgICAgICBzZWxmLnRvcF9pbmNyZWFzZSA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJfZGlmZiA9IE9yZGVyZWREaWN0KCkKKworICAgICAgICB0YXNrc19kaWZmID0gZGlmZl9idWlsZHN0YXRzKGJzMSwgYnMyLCAnY3B1dGltZScpCisKKyAgICAgICAgIyBHZXQgdG9wIGNvbnN1bWVycyBvZiByZXNvdXJjZXMKKyAgICAgICAgdGFza3NfZGlmZiA9IHNvcnRlZCh0YXNrc19kaWZmLCBrZXk9YXR0cmdldHRlcigndmFsdWUyJykpCisgICAgICAgIHNlbGYudG9wX2NvbnN1bWVyID0gdGFza3NfZGlmZlstNTpdCisKKyAgICAgICAgIyBHZXQgYmlnZ2VzdCBpbmNyZWFzZSBhbmQgZGVjcmVhc2UgaW4gcmVzb3VyY2UgdXNhZ2UKKyAgICAgICAgdGFza3NfZGlmZiA9IHNvcnRlZCh0YXNrc19kaWZmLCBrZXk9YXR0cmdldHRlcignYWJzZGlmZicpKQorICAgICAgICBzZWxmLnRvcF9kZWNyZWFzZSA9IHRhc2tzX2RpZmZbMDo1XQorICAgICAgICBzZWxmLnRvcF9pbmNyZWFzZSA9IHRhc2tzX2RpZmZbLTU6XQorCisgICAgICAgICMgQ29tcGFyZSByZWNpcGUgdmVyc2lvbnMgYW5kIHByZXBhcmUgZGF0YSBmb3IgZGlzcGxheQorICAgICAgICB2ZXJfZGlmZiA9IEJTVmVyRGlmZihiczEsIGJzMikKKyAgICAgICAgaWYgdmVyX2RpZmY6CisgICAgICAgICAgICBpZiB2ZXJfZGlmZi5uZXc6CisgICAgICAgICAgICAgICAgc2VsZi52ZXJfZGlmZlsnTmV3IHJlY2lwZXMnXSA9IFsobiwgci5ldnIpIGZvciBuLCByIGluIHZlcl9kaWZmLm5ldy5pdGVtcygpXQorICAgICAgICAgICAgaWYgdmVyX2RpZmYuZHJvcHBlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnZlcl9kaWZmWydEcm9wcGVkIHJlY2lwZXMnXSA9IFsobiwgci5ldnIpIGZvciBuLCByIGluIHZlcl9kaWZmLmRyb3BwZWQuaXRlbXMoKV0KKyAgICAgICAgICAgIGlmIHZlcl9kaWZmLmVjaGFuZ2VkOgorICAgICAgICAgICAgICAgIHNlbGYudmVyX2RpZmZbJ0Vwb2NoIGNoYW5nZWQnXSA9IFsobiwgInt9ICZyYXJyOyB7fSIuZm9ybWF0KHIubGVmdC5ldnIsIHIucmlnaHQuZXZyKSkgZm9yIG4sIHIgaW4gdmVyX2RpZmYuZWNoYW5nZWQuaXRlbXMoKV0KKyAgICAgICAgICAgIGlmIHZlcl9kaWZmLnZjaGFuZ2VkOgorICAgICAgICAgICAgICAgIHNlbGYudmVyX2RpZmZbJ1ZlcnNpb24gY2hhbmdlZCddID0gWyhuLCAie30gJnJhcnI7IHt9Ii5mb3JtYXQoci5sZWZ0LnZlcnNpb24sIHIucmlnaHQudmVyc2lvbikpIGZvciBuLCByIGluIHZlcl9kaWZmLnZjaGFuZ2VkLml0ZW1zKCldCisgICAgICAgICAgICBpZiB2ZXJfZGlmZi5yY2hhbmdlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnZlcl9kaWZmWydSZXZpc2lvbiBjaGFuZ2VkJ10gPSBbKG4sICJ7fSAmcmFycjsge30iLmZvcm1hdChyLmxlZnQuZXZyLCByLnJpZ2h0LmV2cikpIGZvciBuLCByIGluIHZlcl9kaWZmLnJjaGFuZ2VkLml0ZW1zKCldCisKKworZGVmIHByaW50X2h0bWxfcmVwb3J0KGRhdGEsIGlkX2NvbXAsIGJ1aWxkc3RhdHMpOgogICAgICIiIlByaW50IHJlcG9ydCBpbiBodG1sIGZvcm1hdCIiIgogICAgICMgSGFuZGxlIG1ldGFkYXRhCi0gICAgbWV0YWRhdGEgPSB7J2JyYW5jaCc6IHsndGl0bGUnOiAnQnJhbmNoJywgJ3ZhbHVlJzogJ21hc3Rlcid9LAotICAgICAgICAgICAgICAgICdob3N0bmFtZSc6IHsndGl0bGUnOiAnSG9zdG5hbWUnLCAndmFsdWUnOiAnZm9vYmFyJ30sCi0gICAgICAgICAgICAgICAgJ2NvbW1pdCc6IHsndGl0bGUnOiAnQ29tbWl0JywgJ3ZhbHVlJzogJzEyMzQnfQotICAgICAgICAgICAgICAgfQotICAgIG1ldGFkYXRhID0gbWV0YWRhdGFfZGlmZihkYXRhW2lkX2NvbXBdWzBdLCBkYXRhWy0xXVswXSkKLQorICAgIG1ldGFkYXRhID0gbWV0YWRhdGFfZGlmZihkYXRhW2lkX2NvbXBdLm1ldGFkYXRhLCBkYXRhWy0xXS5tZXRhZGF0YSkKIAogICAgICMgR2VuZXJhdGUgbGlzdCBvZiB0ZXN0cwogICAgIHRlc3RzID0gW10KLSAgICBmb3IgdGVzdCBpbiBkYXRhWy0xXVsxXVsndGVzdHMnXS5rZXlzKCk6Ci0gICAgICAgIHRlc3RfciA9IGRhdGFbLTFdWzFdWyd0ZXN0cyddW3Rlc3RdCisgICAgZm9yIHRlc3QgaW4gZGF0YVstMV0ucmVzdWx0c1sndGVzdHMnXS5rZXlzKCk6CisgICAgICAgIHRlc3RfciA9IGRhdGFbLTFdLnJlc3VsdHNbJ3Rlc3RzJ11bdGVzdF0KICAgICAgICAgbmV3X3Rlc3QgPSB7J25hbWUnOiB0ZXN0X3JbJ25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogdGVzdF9yWydkZXNjcmlwdGlvbiddLAogICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogdGVzdF9yWydzdGF0dXMnXSwKQEAgLTM2OCw2ICs0MjMsMTYgQEAKICAgICAgICAgICAgIG5ld19tZWFzWyd2YWx1ZSddID0gc2FtcGxlc1stMV0KICAgICAgICAgICAgIG5ld19tZWFzWyd2YWx1ZV90eXBlJ10gPSBzYW1wbGVzWy0xXVsndmFsX2NscyddCiAKKyAgICAgICAgICAgICMgQ29tcGFyZSBidWlsZHN0YXRzCisgICAgICAgICAgICBic19rZXkgPSB0ZXN0ICsgJy4nICsgbWVhcworICAgICAgICAgICAgcmV2ID0gbWV0YWRhdGFbJ2NvbW1pdF9udW0nXVsndmFsdWUnXQorICAgICAgICAgICAgY29tcF9yZXYgPSBtZXRhZGF0YVsnY29tbWl0X251bSddWyd2YWx1ZV9vbGQnXQorICAgICAgICAgICAgaWYgKHJldiBpbiBidWlsZHN0YXRzIGFuZCBic19rZXkgaW4gYnVpbGRzdGF0c1tyZXZdIGFuZAorICAgICAgICAgICAgICAgICAgICBjb21wX3JldiBpbiBidWlsZHN0YXRzIGFuZCBic19rZXkgaW4gYnVpbGRzdGF0c1tjb21wX3Jldl0pOgorICAgICAgICAgICAgICAgIG5ld19tZWFzWydidWlsZHN0YXRzJ10gPSBCU1N1bW1hcnkoYnVpbGRzdGF0c1tjb21wX3Jldl1bYnNfa2V5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkc3RhdHNbcmV2XVtic19rZXldKQorCisKICAgICAgICAgICAgIG5ld190ZXN0WydtZWFzdXJlbWVudHMnXS5hcHBlbmQobmV3X21lYXMpCiAgICAgICAgIHRlc3RzLmFwcGVuZChuZXdfdGVzdCkKIApAQCAtMzc2LDcgKzQ0MSw2MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnOiBnZXRfZGF0YV9pdGVtKGRhdGFbLTFdWzBdLCAnbGF5ZXJzLm1ldGEuY29tbWl0X2NvdW50Jyl9CiAgICAgICAgICAgICAgICAgIH0KIAotICAgIHByaW50KGh0bWwudGVtcGxhdGUucmVuZGVyKG1ldGFkYXRhPW1ldGFkYXRhLCB0ZXN0X2RhdGE9dGVzdHMsIGNoYXJ0X29wdHM9Y2hhcnRfb3B0cykpCisgICAgcHJpbnQoaHRtbC50ZW1wbGF0ZS5yZW5kZXIodGl0bGU9IkJ1aWxkIFBlcmYgVGVzdCBSZXBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhPW1ldGFkYXRhLCB0ZXN0X2RhdGE9dGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRfb3B0cz1jaGFydF9vcHRzKSkKKworCitkZWYgZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCByZXZzLCBvdXRkaXI9Tm9uZSk6CisgICAgIiIiR2V0IHRoZSBidWlsZHN0YXRzIGZyb20gZ2l0IG5vdGVzIiIiCisgICAgZnVsbF9yZWYgPSAncmVmcy9ub3Rlcy8nICsgbm90ZXNfcmVmCisgICAgaWYgbm90IHJlcG8ucmV2X3BhcnNlKGZ1bGxfcmVmKToKKyAgICAgICAgbG9nLmVycm9yKCJObyBidWlsZHN0YXRzIGZvdW5kLCBwbGVhc2UgdHJ5IHJ1bm5pbmcgIgorICAgICAgICAgICAgICAgICAgIidnaXQgZmV0Y2ggb3JpZ2luICVzOiVzJyB0byBmZXRjaCB0aGVtIGZyb20gdGhlIHJlbW90ZSIsCisgICAgICAgICAgICAgICAgICBmdWxsX3JlZiwgZnVsbF9yZWYpCisgICAgICAgIHJldHVybgorCisgICAgbWlzc2luZyA9IEZhbHNlCisgICAgYnVpbGRzdGF0cyA9IHt9CisgICAgbG9nLmluZm8oIlBhcnNpbmcgYnVpbGRzdGF0cyBmcm9tICdyZWZzL25vdGVzLyVzJyIsIG5vdGVzX3JlZikKKyAgICBmb3IgcmV2IGluIHJldnM6CisgICAgICAgIGJ1aWxkc3RhdHNbcmV2LmNvbW1pdF9udW1iZXJdID0ge30KKyAgICAgICAgbG9nLmRlYnVnKCdEdW1waW5nIGJ1aWxkc3RhdHMgZm9yICVzICglcyknLCByZXYuY29tbWl0X251bWJlciwKKyAgICAgICAgICAgICAgICAgIHJldi5jb21taXQpCisgICAgICAgIGZvciB0YWcgaW4gcmV2LnRhZ3M6CisgICAgICAgICAgICBsb2cuZGVidWcoJyAgICAlcycsIHRhZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygiQnVpbGRzdGF0cyBub3QgZm91bmQgZm9yICVzIiwgdGFnKQorICAgICAgICAgICAgICAgIGJzX2FsbCA9IHt9CisgICAgICAgICAgICAgICAgbWlzc2luZyA9IFRydWUKKworICAgICAgICAgICAgZm9yIG1lYXN1cmVtZW50LCBicyBpbiBic19hbGwuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAjIFdyaXRlIG91dCBvbnRvIGRpc2sKKyAgICAgICAgICAgICAgICBpZiBvdXRkaXI6CisgICAgICAgICAgICAgICAgICAgIHRhZ19iYXNlLCBydW5faWQgPSB0YWcucnNwbGl0KCcvJywgMSkKKyAgICAgICAgICAgICAgICAgICAgdGFnX2Jhc2UgPSB0YWdfYmFzZS5yZXBsYWNlKCcvJywgJ18nKQorICAgICAgICAgICAgICAgICAgICBic19kaXIgPSBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBtZWFzdXJlbWVudCwgdGFnX2Jhc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhic19kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoYnNfZGlyKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGJzX2RpciwgcnVuX2lkICsgJy5qc29uJyksICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZHVtcChicywgZiwgaW5kZW50PTIpCisKKyAgICAgICAgICAgICAgICAjIFJlYWQgYnVpbGRzdGF0cyBpbnRvIGEgZGljdAorICAgICAgICAgICAgICAgIF9icyA9IEJ1aWxkU3RhdHMuZnJvbV9qc29uKGJzKQorICAgICAgICAgICAgICAgIGlmIG1lYXN1cmVtZW50IG5vdCBpbiBidWlsZHN0YXRzW3Jldi5jb21taXRfbnVtYmVyXToKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzdGF0c1tyZXYuY29tbWl0X251bWJlcl1bbWVhc3VyZW1lbnRdID0gX2JzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzdGF0c1tyZXYuY29tbWl0X251bWJlcl1bbWVhc3VyZW1lbnRdLmFnZ3JlZ2F0ZShfYnMpCisKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBsb2cuaW5mbygiQnVpbGRzdGF0cyB3ZXJlIG1pc3NpbmcgZm9yIHNvbWUgdGVzdCBydW5zLCBwbGVhc2UgIgorICAgICAgICAgICAgICAgICAicnVuICdnaXQgZmV0Y2ggb3JpZ2luICVzOiVzJyBhbmQgdHJ5IGFnYWluIiwKKyAgICAgICAgICAgICAgICAgZnVsbF9yZWYsIGZ1bGxfcmVmKQorCisgICAgcmV0dXJuIGJ1aWxkc3RhdHMKIAogCiBkZWYgYXV0b19hcmdzKHJlcG8sIGFyZ3MpOgpAQCAtNDExLDcgKzUzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJWZXJib3NlIGxvZ2dpbmciKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVwbycsICctcicsIHJlcXVpcmVkPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZXN1bHRzIHJlcG9zaXRvcnkgKGxvY2FsIGdpdCBjbG9uZSkiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGlzdCcsICctbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1saXN0JywgJy1sJywgYWN0aW9uPSdjb3VudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJMaXN0IGF2YWlsYWJsZSB0ZXN0IHJ1bnMiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taHRtbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJHZW5lcmF0ZSByZXBvcnQgaW4gaHRtbCBmb3JtYXQiKQpAQCAtNDM0LDYgKzU1Myw4IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWNvbW1pdC1udW1iZXIyJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmV2aXNpb24gbnVtYmVyIHRvIGNvbXBhcmUgd2l0aCwgcmVkdW5kYW50IGlmICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jb21taXQyIGlzIHNwZWNpZmllZCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kdW1wLWJ1aWxkc3RhdHMnLCBuYXJncz0nPycsIGNvbnN0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkR1bXAgYnVpbGRzdGF0cyBvZiB0aGUgdGVzdHMiKQogCiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKQEAgLTQ0Nyw3ICs1NjgsNyBAQAogICAgIHJlcG8gPSBHaXRSZXBvKGFyZ3MucmVwbykKIAogICAgIGlmIGFyZ3MubGlzdDoKLSAgICAgICAgbGlzdF90ZXN0X3JldnMocmVwbywgYXJncy50YWdfbmFtZSkKKyAgICAgICAgbGlzdF90ZXN0X3JldnMocmVwbywgYXJncy50YWdfbmFtZSwgYXJncy5saXN0LCBob3N0bmFtZT1hcmdzLmhvc3RuYW1lKQogICAgICAgICByZXR1cm4gMAogCiAgICAgIyBEZXRlcm1pbmUgaG9zdG5hbWUgd2hpY2ggdG8gdXNlCkBAIC01MDEsNyArNjIyLDcgQEAKICAgICB4bWwgPSBpc194bWxfZm9ybWF0KHJlcG8sIHJldnNbaW5kZXhfcl0udGFnc1stMV0pCiAKICAgICBpZiBhcmdzLmh0bWw6Ci0gICAgICAgIGluZGV4XzAgPSBtYXgoMCwgaW5kZXhfciAtIGFyZ3MuaGlzdG9yeV9sZW5ndGgpCisgICAgICAgIGluZGV4XzAgPSBtYXgoMCwgbWluKGluZGV4X2wsIGluZGV4X3IgLSBhcmdzLmhpc3RvcnlfbGVuZ3RoKSkKICAgICAgICAgcmV2X3JhbmdlID0gcmFuZ2UoaW5kZXhfMCwgaW5kZXhfciArIDEpCiAgICAgZWxzZToKICAgICAgICAgIyBXZSBkbyBub3QgbmVlZCByYW5nZSBvZiBjb21taXRzIGZvciB0ZXh0IHJlcG9ydCAobm8gZ3JhcGhzKQpAQCAtNTE1LDE4ICs2MzYsMjcgQEAKIAogICAgIGRhdGEgPSBbXQogICAgIGZvciByYXdfbSwgcmF3X2QgaW4gcmF3X2RhdGE6Ci0gICAgICAgIGRhdGEuYXBwZW5kKChhZ2dyZWdhdGVfbWV0YWRhdGEocmF3X20pLCBhZ2dyZWdhdGVfZGF0YShyYXdfZCkpKQorICAgICAgICBkYXRhLmFwcGVuZChBZ2dyZWdhdGVUZXN0RGF0YShhZ2dyZWdhdGVfbWV0YWRhdGEocmF3X20pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVfZGF0YShyYXdfZCkpKQogCiAgICAgIyBSZS1tYXAgbGlzdCBpbmRleGVzIHRvIHRoZSBuZXcgdGFibGUgc3RhcnRpbmcgZnJvbSBpbmRleCAwCiAgICAgaW5kZXhfciA9IGluZGV4X3IgLSBpbmRleF8wCiAgICAgaW5kZXhfbCA9IGluZGV4X2wgLSBpbmRleF8wCiAKKyAgICAjIFJlYWQgYnVpbGRzdGF0cyBvbmx5IHdoZW4gbmVlZGVkCisgICAgYnVpbGRzdGF0cyA9IE5vbmUKKyAgICBpZiBhcmdzLmR1bXBfYnVpbGRzdGF0cyBvciBhcmdzLmh0bWw6CisgICAgICAgIG91dGRpciA9ICdvZS1idWlsZC1wZXJmLWJ1aWxkc3RhdHMnIGlmIGFyZ3MuZHVtcF9idWlsZHN0YXRzIGVsc2UgTm9uZQorICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubWFjaGluZSkKKyAgICAgICAgYnVpbGRzdGF0cyA9IGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgW3Jldl9sLCByZXZfcl0sIG91dGRpcikKKwogICAgICMgUHJpbnQgcmVwb3J0CiAgICAgaWYgbm90IGFyZ3MuaHRtbDoKLSAgICAgICAgcHJpbnRfZGlmZl9yZXBvcnQoZGF0YVtpbmRleF9sXVswXSwgZGF0YVtpbmRleF9sXVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpbmRleF9yXVswXSwgZGF0YVtpbmRleF9yXVsxXSkKKyAgICAgICAgcHJpbnRfZGlmZl9yZXBvcnQoZGF0YVtpbmRleF9sXS5tZXRhZGF0YSwgZGF0YVtpbmRleF9sXS5yZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2luZGV4X3JdLm1ldGFkYXRhLCBkYXRhW2luZGV4X3JdLnJlc3VsdHMpCiAgICAgZWxzZToKLSAgICAgICAgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaW5kZXhfbCkKKyAgICAgICAgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaW5kZXhfbCwgYnVpbGRzdGF0cykKIAogICAgIHJldHVybiAwCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggYzg5MDU1Mi4uNzdmOThhMyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTI0LDggKzI0LDcgQEAKICAgICBlY2hvICdVc2FnZTogLiAkT0VST09UL3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgJiYnCiAgICAgZWNobyAnJwogICAgIGVjaG8gJ09wZW5FbWJlZGRlZCBvZS1idWlsZGVudi1pbnRlcm5hbCAtIGFuIGludGVybmFsIHNjcmlwdCB0aGF0IGlzJwotICAgIGVjaG8gJ3VzZWQgaW4gb2UtaW5pdC1idWlsZC1lbnYgYW5kIG9lLWluaXQtYnVpbGQtZW52LW1lbXJlcyB0bycKLSAgICBlY2hvICdpbml0aWFsaXplIG9lIGJ1aWxkIGVudmlyb25tZW50JworICAgIGVjaG8gJ3VzZWQgaW4gb2UtaW5pdC1idWlsZC1lbnYgdG8gaW5pdGlhbGl6ZSBvZSBidWlsZCBlbnZpcm9ubWVudCcKICAgICBlY2hvICcnCiAgICAgZXhpdCAyCiBmaQpAQCAtMTA2LDYgKzEwNSw5IEBACiAKIEJJVEJBS0VESVI9JChyZWFkbGluayAtZiAiJEJJVEJBS0VESVIiKQogQlVJTERESVI9JChyZWFkbGluayAtZiAiJEJVSUxERElSIikKK0JCUEFUSD0kQlVJTERESVIKKworZXhwb3J0IEJCUEFUSAogCiBpZiBbICEgLWQgIiRCSVRCQUtFRElSIiBdOyB0aGVuCiAgICAgZWNobyA+JjIgIkVycm9yOiBUaGUgYml0YmFrZSBkaXJlY3RvcnkgKCRCSVRCQUtFRElSKSBkb2VzIG5vdCBleGlzdCEgIFBsZWFzZSBlbnN1cmUgYSBjb3B5IG9mIGJpdGJha2UgZXhpc3RzIGF0IHRoaXMgbG9jYXRpb24gb3Igc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwYXRoIG9uIHRoZSBjb21tYW5kIGxpbmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZmluZC1uYXRpdmUtc3lzcm9vdAppbmRleCAyMzVhNjdjLi4zNTBlYTIxIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWZpbmQtbmF0aXZlLXN5c3Jvb3QKQEAgLTUwLDcgKzUwLDcgQEAKIHNldF9vZV9uYXRpdmVfc3lzcm9vdCgpewogICAgIGVjaG8gIlJ1bm5pbmcgYml0YmFrZSAtZSAkMSIKICAgICBCSVRCQUtFX0U9ImBiaXRiYWtlIC1lICQxYCIKLSAgICBPRUNPUkVfTkFUSVZFX1NZU1JPT1Q9YGVjaG8gIiRCSVRCQUtFX0UiIHwgZ3JlcCBeU1RBR0lOR19ESVJfTkFUSVZFIHwgY3V0IC1kICciJyAtZjJgCisgICAgT0VDT1JFX05BVElWRV9TWVNST09UPWBlY2hvICIkQklUQkFLRV9FIiB8IGdyZXAgXlNUQUdJTkdfRElSX05BVElWRT0gfCBjdXQgLWQgJyInIC1mMmAKIAogICAgIGlmIFsgIngkT0VDT1JFX05BVElWRV9TWVNST09UIiA9ICJ4IiBdOyB0aGVuCiAgICAgICAgICMgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSB3YXMgYW4gZXJyb3IgcnVubmluZyBiaXRiYWtlIC1lIHRoYXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbAppbmRleCA2NzdlZmZlLi5jNmZiYTU2IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCkBAIC00MCw5ICs0MCw4IEBACiAgICAgaW1wb3J0IGJiLnRpbmZvaWwKICAgICBpbXBvcnQgbG9nZ2luZwogICAgIHRpbmZvaWwgPSBiYi50aW5mb2lsLlRpbmZvaWwoKQotICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQotCiAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQorICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQogICAgIHJldHVybiB0aW5mb2lsCiAKIApAQCAtMTk4LDYgKzE5NywxMCBAQAogICAgICAgICAgICAgICAgICMgUEtHU0laRSBpcyBub3cgaW4gYnl0ZXMsIGJ1dCB3ZSB3ZSB3YW50IGl0IGluIEtCCiAgICAgICAgICAgICAgICAgcGtnc2l6ZSA9IChpbnQodmFsdWUpICsgMTAyNCAvLyAyKSAvLyAxMDI0CiAgICAgICAgICAgICAgICAgdmFsdWUgPSAiJWQiICUgcGtnc2l6ZQorICAgICAgICAgICAgaWYgYXJncy51bmVzY2FwZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgY29kZWNzCisgICAgICAgICAgICAgICAgIyBlc2NhcGVfZGVjb2RlKCkgdW5lc2NhcGVzIGJhY2tzbGFzaCBlbmNvZGluZ3MgaW4gYnl0ZSBzdHJlYW1zCisgICAgICAgICAgICAgICAgdmFsdWUgPSBjb2RlY3MuZXNjYXBlX2RlY29kZShieXRlcyh2YWx1ZSwgInV0Zi04IikpWzBdLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgaWYgYXJncy5wcmVmaXhfbmFtZToKICAgICAgICAgICAgICAgICBwcmludCgnJXMgJXMnICUgKHBrZ19uYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTUzLDYgKzU1Niw3IEBACiAgICAgcGFyc2VyX3JlYWRfdmFsdWUuYWRkX2FyZ3VtZW50KCdwa2cnLCBuYXJncz0nKicsIGhlbHA9J1J1bnRpbWUgcGFja2FnZSBuYW1lIHRvIGxvb2sgdXAnKQogICAgIHBhcnNlcl9yZWFkX3ZhbHVlLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlJywgaGVscD0nUmVhZCBwYWNrYWdlIG5hbWVzIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIChvbmUgcGVyIGxpbmUsIGZpcnN0IGZpZWxkIG9ubHkpJykKICAgICBwYXJzZXJfcmVhZF92YWx1ZS5hZGRfYXJndW1lbnQoJy1uJywgJy0tcHJlZml4LW5hbWUnLCBoZWxwPSdQcmVmaXggb3V0cHV0IHdpdGggcGFja2FnZSBuYW1lJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICBwYXJzZXJfcmVhZF92YWx1ZS5hZGRfYXJndW1lbnQoJy11JywgJy0tdW5lc2NhcGUnLCBoZWxwPSdFeHBhbmQgZXNjYXBlcyBzdWNoIGFzIFxcbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX3JlYWRfdmFsdWUuc2V0X2RlZmF1bHRzKGZ1bmM9cmVhZF92YWx1ZSkKIAogICAgIHBhcnNlcl9nbG9iID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdnbG9iJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXB1Ymxpc2gtc2RrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKaW5kZXggOWY3OTYzYy4uZWUzM2FjZiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKQEAgLTExNCw5ICsxMTQsOSBAQAogCiAgICAgIyBTZXR0aW5nIHVwIHRoZSBnaXQgcmVwbwogICAgIGlmIG5vdCBpc19yZW1vdGU6Ci0gICAgICAgIGNtZCA9ICdzZXQgLWU7IG1rZGlyIC1wICVzL2xheWVyczsgY2QgJXMvbGF5ZXJzOyBpZiBbICEgLWUgLmdpdCBdOyB0aGVuIGdpdCBpbml0IC47IG12IC5naXQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlIC5naXQvaG9va3MvcG9zdC11cGRhdGU7IGVjaG8gIioucHljXG4qLnB5b1xucHlzaHRhYmxlcy5weSIgPiAuZ2l0aWdub3JlOyBmaTsgZ2l0IGFkZCAtQSAuOyBnaXQgY29uZmlnIHVzZXIuZW1haWwgIm9lQG9lLm9lIiAmJiBnaXQgY29uZmlnIHVzZXIubmFtZSAiT0UiICYmIGdpdCBjb21taXQgLXEgLW0gImluaXQgcmVwbyIgfHwgdHJ1ZTsgZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbycgJSAoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uKQorICAgICAgICBjbWQgPSAnc2V0IC1lOyBta2RpciAtcCAlcy9sYXllcnM7IGNkICVzL2xheWVyczsgaWYgWyAhIC1lIC5naXQgXTsgdGhlbiBnaXQgaW5pdCAuOyBjcCAuZ2l0L2hvb2tzL3Bvc3QtdXBkYXRlLnNhbXBsZSAuZ2l0L2hvb2tzL3Bvc3QtY29tbWl0OyBlY2hvICIqLnB5Y1xuKi5weW9cbnB5c2h0YWJsZXMucHkiID4gLmdpdGlnbm9yZTsgZmk7IGdpdCBhZGQgLUEgLjsgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICJvZUBvZS5vZSIgJiYgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgIk9FIiAmJiBnaXQgY29tbWl0IC1xIC1tICJpbml0IHJlcG8iIHx8IHRydWUnICUgKGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbikKICAgICBlbHNlOgotICAgICAgICBjbWQgPSAic3NoICVzICdzZXQgLWU7IG1rZGlyIC1wICVzL2xheWVyczsgY2QgJXMvbGF5ZXJzOyBpZiBbICEgLWUgLmdpdCBdOyB0aGVuIGdpdCBpbml0IC47IG12IC5naXQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlIC5naXQvaG9va3MvcG9zdC11cGRhdGU7IGVjaG8gJyoucHljXG4qLnB5b1xucHlzaHRhYmxlcy5weScgPiAuZ2l0aWdub3JlOyBmaTsgZ2l0IGFkZCAtQSAuOyBnaXQgY29uZmlnIHVzZXIuZW1haWwgJ29lQG9lLm9lJyAmJiBnaXQgY29uZmlnIHVzZXIubmFtZSAnT0UnICYmIGdpdCBjb21taXQgLXEgLW0gXCJpbml0IHJlcG9cIiB8fCB0cnVlOyBnaXQgdXBkYXRlLXNlcnZlci1pbmZvJyIgJSAoaG9zdCwgZGVzdGRpciwgZGVzdGRpcikKKyAgICAgICAgY21kID0gInNzaCAlcyAnc2V0IC1lOyBta2RpciAtcCAlcy9sYXllcnM7IGNkICVzL2xheWVyczsgaWYgWyAhIC1lIC5naXQgXTsgdGhlbiBnaXQgaW5pdCAuOyBjcCAuZ2l0L2hvb2tzL3Bvc3QtdXBkYXRlLnNhbXBsZSAuZ2l0L2hvb2tzL3Bvc3QtY29tbWl0OyBlY2hvICcqLnB5Y1xuKi5weW9cbnB5c2h0YWJsZXMucHknID4gLmdpdGlnbm9yZTsgZmk7IGdpdCBhZGQgLUEgLjsgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICdvZUBvZS5vZScgJiYgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgJ09FJyAmJiBnaXQgY29tbWl0IC1xIC1tIFwiaW5pdCByZXBvXCIgfHwgdHJ1ZSciICUgKGhvc3QsIGRlc3RkaXIsIGRlc3RkaXIpCiAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKICAgICBpZiByZXQgPT0gMDoKICAgICAgICAgbG9nZ2VyLmluZm8oJ1NESyBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNlbGZ0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKaW5kZXggNTIzNjZiMS4uMWJmODYwYSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoYykgMjAxMy0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0yNSw3OTAgKzI1LDUxIEBACiAjIEUuZzogIm9lLXNlbGZ0ZXN0IC1yIGJibGF5ZXJzLkJpdGJha2VMYXllcnMiIHdpbGwgcnVuIGp1c3QgdGhlIEJpdGJha2VMYXllcnMgY2xhc3MgZnJvbSBtZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JibGF5ZXJzLnB5CiAKIAorCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBhcmdwYXJzZQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0aW1lIGFzIHQKLWltcG9ydCByZQotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGltcAoraW1wb3J0IGxvZ2dpbmcKIAotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkgKyAnL2xpYicpCi1pbXBvcnQgc2NyaXB0cGF0aAotc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCi1zY3JpcHRwYXRoLmFkZF9vZV9saWJfcGF0aCgpCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJworc3lzLnBhdGggPSBzeXMucGF0aCArIFtsaWJfcGF0aF0KIGltcG9ydCBhcmdwYXJzZV9vZQoraW1wb3J0IHNjcmlwdHV0aWxzCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCiAKLWltcG9ydCBvZXFhLnNlbGZ0ZXN0Ci1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5tZXRhZGF0YSBpbXBvcnQgbWV0YWRhdGFfZnJvbV9iYiwgd3JpdGVfbWV0YWRhdGFfZmlsZQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QsIGdldF9hdmFpbGFibGVfbWFjaGluZXMKK2Zyb20gb2VxYS51dGlscyBpbXBvcnQgbG9hZF90ZXN0X2NvbXBvbmVudHMKK2Zyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVByZVJ1bgogCi10cnk6Ci0gICAgaW1wb3J0IHhtbHJ1bm5lcgotICAgIGZyb20geG1scnVubmVyLnJlc3VsdCBpbXBvcnQgX1hNTFRlc3RSZXN1bHQgYXMgVGVzdFJlc3VsdAotICAgIGZyb20geG1scnVubmVyIGltcG9ydCBYTUxUZXN0UnVubmVyIGFzIF9UZXN0UnVubmVyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyB1c2UgdGhlIGJhc2UgcnVubmVyIGluc3RlYWQKLSAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXh0VGVzdFJlc3VsdCBhcyBUZXN0UmVzdWx0Ci0gICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGV4dFRlc3RSdW5uZXIgYXMgX1Rlc3RSdW5uZXIKLQotbG9nX3ByZWZpeCA9ICJvZS1zZWxmdGVzdC0iICsgdC5zdHJmdGltZSgiJVklbSVkLSVIJU0lUyIpCi0KLWRlZiBsb2dnZXJfY3JlYXRlKCk6Ci0gICAgbG9nX2ZpbGUgPSBsb2dfcHJlZml4ICsgIi5sb2ciCi0gICAgaWYgb3MucGF0aC5sZXhpc3RzKCJvZS1zZWxmdGVzdC5sb2ciKToKLSAgICAgICAgb3MucmVtb3ZlKCJvZS1zZWxmdGVzdC5sb2ciKQotICAgIG9zLnN5bWxpbmsobG9nX2ZpbGUsICJvZS1zZWxmdGVzdC5sb2ciKQotCi0gICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInNlbGZ0ZXN0IikKLSAgICBsb2cuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLQotICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihmaWxlbmFtZT1sb2dfZmlsZSwgbW9kZT0ndycpCi0gICAgZmguc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLQotICAgIGNoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpCi0gICAgY2guc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQotCi0gICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzIC0gJShuYW1lKXMgLSAlKGxldmVsbmFtZSlzIC0gJShtZXNzYWdlKXMnKQotICAgIGZoLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgY2guc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLQotICAgIGxvZy5hZGRIYW5kbGVyKGZoKQotICAgIGxvZy5hZGRIYW5kbGVyKGNoKQotCi0gICAgcmV0dXJuIGxvZwotCi1sb2cgPSBsb2dnZXJfY3JlYXRlKCkKLQotZGVmIGdldF9hcmdzX3BhcnNlcigpOgotICAgIGRlc2NyaXB0aW9uID0gIlNjcmlwdCB0aGF0IHJ1bnMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGJpdGJha2UgYW5kIG90aGVyIFlvY3RvIHJlbGF0ZWQgdG9vbHMuIFRoZSBnb2FsIGlzIHRvIHZhbGlkYXRlIHRvb2xzIGZ1bmN0aW9uYWxpdHkgYW5kIG1ldGFkYXRhIGludGVncml0eS4gUmVmZXIgdG8gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9PZS1zZWxmdGVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0gICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1ydW4tdGVzdHMnLCByZXF1aXJlZD1GYWxzZSwgYWN0aW9uPSdzdG9yZScsIG5hcmdzPScqJywgZGVzdD0icnVuX3Rlc3RzIiwgZGVmYXVsdD1Ob25lLCBoZWxwPSdTZWxlY3Qgd2hhdCB0ZXN0cyB0byBydW4gKG1vZHVsZXMsIGNsYXNzZXMgb3IgdGVzdCBtZXRob2RzKS4gRm9ybWF0IHNob3VsZCBiZTogPG1vZHVsZT4uPGNsYXNzPi48dGVzdF9tZXRob2Q+JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1hJywgJy0tcnVuLWFsbC10ZXN0cycsIHJlcXVpcmVkPUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJydW5fYWxsX3Rlc3RzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUnVuIGFsbCAodW5oaWRkZW4pIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbGlzdC1tb2R1bGVzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Imxpc3RfbW9kdWxlcyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXMuJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC1jbGFzc2VzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Imxpc3RfYWxsY2xhc3NlcyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IGNsYXNzZXMuJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUnVuIGNvZGUgY292ZXJhZ2Ugd2hlbiB0ZXN0aW5nIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlLXNvdXJjZScsIGRlc3Q9ImNvdmVyYWdlX3NvdXJjZSIsIG5hcmdzPSIrIiwgaGVscD0iU3BlY2lmaXkgdGhlIGRpcmVjdG9yaWVzIHRvIHRha2UgY292ZXJhZ2UgZnJvbSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb3ZlcmFnZS1pbmNsdWRlJywgZGVzdD0iY292ZXJhZ2VfaW5jbHVkZSIsIG5hcmdzPSIrIiwgaGVscD0iU3BlY2lmeSBleHRyYSBwYXR0ZXJucyB0byBpbmNsdWRlIGludG8gdGhlIGNvdmVyYWdlIG1lYXN1cmVtZW50IikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlLW9taXQnLCBkZXN0PSJjb3ZlcmFnZV9vbWl0IiwgbmFyZ3M9IisiLCBoZWxwPSJTcGVjaWZ5IHdpdGggZXh0cmEgcGF0dGVybnMgdG8gZXhjbHVkZSBmcm9tIHRoZSBjb3ZlcmFnZSBtZWFzdXJlbWVudCIpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJ1bi10ZXN0cy1ieScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdydW5fdGVzdHNfYnknLCBkZWZhdWx0PUZhbHNlLCBuYXJncz0nKicsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1bi10ZXN0cy1ieSA8bmFtZXxjbGFzc3xtb2R1bGV8aWR8dGFnPiA8bGlzdCBvZiB0ZXN0c3xjbGFzc2VzfG1vZHVsZXN8aWRzfHRhZ3M+JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC10ZXN0cy1ieScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdsaXN0X3Rlc3RzX2J5JywgZGVmYXVsdD1GYWxzZSwgbmFyZ3M9JyonLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdsaXN0LXRlc3RzLWJ5IDxuYW1lfGNsYXNzfG1vZHVsZXxpZHx0YWc+IDxsaXN0IG9mIHRlc3RzfGNsYXNzZXN8bW9kdWxlc3xpZHN8dGFncz4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0LXRlc3RzJywgcmVxdWlyZWQ9RmFsc2UsICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsaXN0X3Rlc3RzIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3RzLicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtdGFncycsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdsaXN0X3RhZ3MnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCB0YWdzIHRoYXQgaGF2ZSBiZWVuIHNldCB0byB0ZXN0IGNhc2VzLicpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWNoaW5lJywgcmVxdWlyZWQ9RmFsc2UsIGRlc3Q9J21hY2hpbmUnLCBjaG9pY2VzPVsncmFuZG9tJywgJ2FsbCddLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSdW4gdGVzdHMgb24gZGlmZmVyZW50IG1hY2hpbmVzIChyYW5kb20vYWxsKS4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVwb3NpdG9yeScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdyZXBvc2l0b3J5JywgZGVmYXVsdD0nJywgYWN0aW9uPSdzdG9yZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdWJtaXQgdGVzdCByZXN1bHRzIHRvIGEgcmVwb3NpdG9yeScpCi0gICAgcmV0dXJuIHBhcnNlcgotCi1idWlsZGRpciA9IE5vbmUKLQotCi1kZWYgcHJlZmxpZ2h0X2NoZWNrKCk6Ci0KLSAgICBnbG9iYWwgYnVpbGRkaXIKLQotICAgIGxvZy5pbmZvKCJDaGVja2luZyB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3RzIikKLQotICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKToKLSAgICAgICAgbG9nLmVycm9yKCJCVUlMRERJUiBpc24ndCBzZXQuIERpZCB5b3UgZm9yZ2V0IHRvIHNvdXJjZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdD8iKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKLSAgICBpZiBvcy5nZXRjd2QoKSAhPSBidWlsZGRpcjoKLSAgICAgICAgbG9nLmluZm8oIkNoYW5naW5nIGN3ZCB0byAlcyIgJSBidWlsZGRpcikKLSAgICAgICAgb3MuY2hkaXIoYnVpbGRkaXIpCi0KLSAgICBpZiBub3QgIm1ldGEtc2VsZnRlc3QiIGluIGdldF9iYl92YXIoIkJCTEFZRVJTIik6Ci0gICAgICAgIGxvZy53YXJuKCJtZXRhLXNlbGZ0ZXN0IGxheWVyIG5vdCBmb3VuZCBpbiBCQkxBWUVSUywgYWRkaW5nIGl0IikKLSAgICAgICAgbWV0YV9zZWxmdGVzdGRpciA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBnZXRfYmJfdmFyKCJCQkxBWUVSU19GRVRDSF9ESVIiKSwKLSAgICAgICAgICAgICAgICAnbWV0YS1zZWxmdGVzdCcpCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWV0YV9zZWxmdGVzdGRpcik6Ci0gICAgICAgICAgICBydW5DbWQoImJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcyIgJW1ldGFfc2VsZnRlc3RkaXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2cuZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgbWV0YS1zZWxmdGVzdCBpbjpcbiVzIgotICAgICAgICAgICAgICAgICAgICAlbWV0YV9zZWxmdGVzdGRpcikKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgImJ1aWxkaGlzdG9yeS5iYmNsYXNzIiBpbiBnZXRfYmJfdmFyKCJCQklOQ0xVREVEIik6Ci0gICAgICAgIGxvZy5lcnJvcigiWW91IGhhdmUgYnVpbGRoaXN0b3J5IGVuYWJsZWQgYWxyZWFkeSBhbmQgdGhpcyBpc24ndCByZWNvbW1lbmRlZCBmb3Igc2VsZnRlc3QsIHBsZWFzZSBkaXNhYmxlIGl0IGZpcnN0LiIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgZ2V0X2JiX3ZhcigiUFJTRVJWX0hPU1QiKToKLSAgICAgICAgbG9nLmVycm9yKCJQbGVhc2UgdW5zZXQgUFJTRVJWX0hPU1QgaW4gb3JkZXIgdG8gcnVuIG9lLXNlbGZ0ZXN0IikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBnZXRfYmJfdmFyKCJTQU5JVFlfVEVTVEVEX0RJU1RST1MiKToKLSAgICAgICAgbG9nLmVycm9yKCJQbGVhc2UgdW5zZXQgU0FOSVRZX1RFU1RFRF9ESVNUUk9TIGluIG9yZGVyIHRvIHJ1biBvZS1zZWxmdGVzdCIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbG9nLmluZm8oIlJ1bm5pbmcgYml0YmFrZSAtcCIpCi0gICAgcnVuQ21kKCJiaXRiYWtlIC1wIikKLQotICAgIHJldHVybiBUcnVlCi0KLWRlZiBhZGRfaW5jbHVkZSgpOgotICAgIGdsb2JhbCBidWlsZGRpcgotICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAotICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSk6Ci0gICAgICAgICAgICBsb2cuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgc2VsZnRlc3QuaW5jXCIgaW4gbG9jYWwuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIiksIFwKLSAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgbWFjaGluZS5pbmNcbmluY2x1ZGUgc2VsZnRlc3QuaW5jIikKLQotICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAotICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSk6Ci0gICAgICAgICAgICBsb2cuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgYmJsYXllcnMuaW5jXCIgaW4gYmJsYXllcnMuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIiksIFwKLSAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgYmJsYXllcnMuaW5jIikKLQotZGVmIHJlbW92ZV9pbmNsdWRlKCk6Ci0gICAgZ2xvYmFsIGJ1aWxkZGlyCi0gICAgaWYgYnVpbGRkaXIgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCi0gICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikpOgotICAgICAgICAgICAgbG9nLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gbG9jYWwuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSwgXAotICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBtYWNoaW5lLmluY1xuaW5jbHVkZSBzZWxmdGVzdC5pbmMiKQotCi0gICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCi0gICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikpOgotICAgICAgICAgICAgbG9nLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gYmJsYXllcnMuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSwgXAotICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBiYmxheWVycy5pbmMiKQotCi1kZWYgcmVtb3ZlX2luY19maWxlcygpOgotICAgIGdsb2JhbCBidWlsZGRpcgotICAgIGlmIGJ1aWxkZGlyIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvc2VsZnRlc3QuaW5jIikpCi0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGdldF90ZXN0X2xheWVyKCkpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgZiA9PSAndGVzdF9yZWNpcGUuaW5jJzoKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBmKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBwYXNzCi0KLSAgICBmb3IgaW5jbF9maWxlIGluIFsnY29uZi9iYmxheWVycy5pbmMnLCAnY29uZi9tYWNoaW5lLmluYyddOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCBpbmNsX2ZpbGUpKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZGVmIGdldF90ZXN0c19tb2R1bGVzKGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKLSAgICBtb2R1bGVzX2xpc3QgPSBsaXN0KCkKLSAgICBmb3IgbW9kdWxlc19wYXRoIGluIG9lcWEuc2VsZnRlc3QuX19wYXRoX186Ci0gICAgICAgIGZvciAocCwgZCwgZikgaW4gb3Mud2Fsayhtb2R1bGVzX3BhdGgpOgotICAgICAgICAgICAgZmlsZXMgPSBzb3J0ZWQoW2YgZm9yIGYgaW4gb3MubGlzdGRpcihwKSBpZiBmLmVuZHN3aXRoKCcucHknKSBhbmQgbm90IChmLnN0YXJ0c3dpdGgoJ18nKSBhbmQgbm90IGluY2x1ZGVfaGlkZGVuKSBhbmQgbm90IGYuc3RhcnRzd2l0aCgnX18nKSBhbmQgZiAhPSAnYmFzZS5weSddKQotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgc3VibW9kdWxlcyA9IHAuc3BsaXQoInNlbGZ0ZXN0IilbLTFdCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gIiIKLSAgICAgICAgICAgICAgICBpZiBzdWJtb2R1bGVzOgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSAnb2VxYS5zZWxmdGVzdCcgKyBzdWJtb2R1bGVzLnJlcGxhY2UoIi8iLCIuIikgKyAiLiIgKyBmLnNwbGl0KCcucHknKVswXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9ICdvZXFhLnNlbGZ0ZXN0LicgKyBmLnNwbGl0KCcucHknKVswXQotICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gbW9kdWxlc19saXN0OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGVzX2xpc3QuYXBwZW5kKG1vZHVsZSkKLSAgICByZXR1cm4gbW9kdWxlc19saXN0Ci0KLQotZGVmIGdldF90ZXN0cyhleGNsdXNpdmVfbW9kdWxlcz1bXSwgaW5jbHVkZV9oaWRkZW49RmFsc2UpOgotICAgIHRlc3RfbW9kdWxlcyA9IGxpc3QoKQotICAgIGZvciB4IGluIGV4Y2x1c2l2ZV9tb2R1bGVzOgotICAgICAgICB0ZXN0X21vZHVsZXMuYXBwZW5kKCdvZXFhLnNlbGZ0ZXN0LicgKyB4KQotICAgIGlmIG5vdCB0ZXN0X21vZHVsZXM6Ci0gICAgICAgIGluY19oaWRkZW4gPSBpbmNsdWRlX2hpZGRlbgotICAgICAgICB0ZXN0X21vZHVsZXMgPSBnZXRfdGVzdHNfbW9kdWxlcyhpbmNfaGlkZGVuKQotCi0gICAgcmV0dXJuIHRlc3RfbW9kdWxlcwotCi0KLWNsYXNzIFRjOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Y25hbWUsIHRjY2xhc3MsIHRjbW9kdWxlLCB0Y2lkPU5vbmUsIHRjdGFnPU5vbmUpOgotICAgICAgICBzZWxmLnRjbmFtZSA9IHRjbmFtZQotICAgICAgICBzZWxmLnRjY2xhc3MgPSB0Y2NsYXNzCi0gICAgICAgIHNlbGYudGNtb2R1bGUgPSB0Y21vZHVsZQotICAgICAgICBzZWxmLnRjaWQgPSB0Y2lkCi0gICAgICAgICMgQSB0ZXN0IGNhc2UgY2FuIGhhdmUgbXVsdGlwbGUgdGFncyAoYXMgdHVwbGVzKSBvdGhlcndpc2Ugc3RyIHdpbGwgc3VmZmljZQotICAgICAgICBzZWxmLnRjdGFnID0gdGN0YWcKLSAgICAgICAgc2VsZi5mdWxscGF0aCA9ICcuJy5qb2luKFsnb2VxYScsICdzZWxmdGVzdCcsIHRjbW9kdWxlLCB0Y2NsYXNzLCB0Y25hbWVdKQotCi0KLWRlZiBnZXRfdGVzdHNfZnJvbV9tb2R1bGUodG1vZCk6Ci0gICAgdGxpc3QgPSBbXQotICAgIHByZWZpeCA9ICdvZXFhLnNlbGZ0ZXN0LicKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IGltcG9ydGxpYgotICAgICAgICBtb2RsaWIgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSh0bW9kKQotICAgICAgICBmb3IgbW9kIGluIGxpc3QodmFycyhtb2RsaWIpLnZhbHVlcygpKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobW9kLCB0eXBlKG9lU2VsZlRlc3QpKSBhbmQgaXNzdWJjbGFzcyhtb2QsIG9lU2VsZlRlc3QpIGFuZCBtb2QgaXMgbm90IG9lU2VsZlRlc3Q6Ci0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gZGlyKG1vZCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQgaGFzYXR0cih2YXJzKG1vZClbdGVzdF0sICdfX2NhbGxfXycpOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGVzdCBjYXNlIGlkIGFuZCBmZWF0dXJlIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFOiBpZiB0ZXN0Y2FzZSBkZWNvcmF0b3Igb3IgZmVhdHVyZSB0YWcgbm90IHNldCB3aWxsIHRocm93IGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkID0gdmFycyhtb2QpW3Rlc3RdLnRlc3RfY2FzZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdERUJVRzogdGMgaWQgbWlzc2luZyBmb3IgJyArIHN0cih0ZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRhZyA9IHZhcnMobW9kKVt0ZXN0XS50YWdfX2ZlYXR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50KCdERUJVRzogZmVhdHVyZSB0YWcgbWlzc2luZyBmb3IgJyArIHN0cih0ZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dGFnID0gTm9uZQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiBsc3RyaXAoKSBkb2Vzbid0IHdvcmsgZm9yIG1vZC5fX21vZHVsZV9fCi0gICAgICAgICAgICAgICAgICAgICAgICB0bGlzdC5hcHBlbmQoVGModGVzdCwgbW9kLl9fbmFtZV9fLCBtb2QuX19tb2R1bGVfXy5yZXBsYWNlKHByZWZpeCwgJycpLCB0aWQsIHR0YWcpKQotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotCi0gICAgcmV0dXJuIHRsaXN0Ci0KLQotZGVmIGdldF9hbGxfdGVzdHMoKToKLSAgICAjIEdldCBhbGwgdGhlIHRlc3QgbW9kdWxlcyAoZXhjZXB0IHRoZSBoaWRkZW4gb25lcykKLSAgICB0ZXN0bGlzdCA9IFtdCi0gICAgdGVzdHNfbW9kdWxlcyA9IGdldF90ZXN0c19tb2R1bGVzKCkKLSAgICAjIEdldCBhbGwgdGhlIHRlc3RzIGZyb20gbW9kdWxlcwotICAgIGZvciB0bW9kIGluIHNvcnRlZCh0ZXN0c19tb2R1bGVzKToKLSAgICAgICAgdGVzdGxpc3QgKz0gZ2V0X3Rlc3RzX2Zyb21fbW9kdWxlKHRtb2QpCi0gICAgcmV0dXJuIHRlc3RsaXN0Ci0KLQotZGVmIGdldF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpOgotICAgICMgR2V0IGEgdGVzdHN1aXRlIGJhc2VkIG9uICdrZXl3b3JkJwotICAgICMgY3JpdGVyaWE6IG5hbWUsIGNsYXNzLCBtb2R1bGUsIGlkLCB0YWcKLSAgICAjIGtleXdvcmQ6IGEgbGlzdCBvZiB0ZXN0cywgY2xhc3NlcywgbW9kdWxlcywgaWRzLCB0YWdzCi0KLSAgICB0cyA9IFtdCi0gICAgYWxsX3Rlc3RzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBkZWYgZ2V0X21hdGNoZXModmFsdWVzKToKLSAgICAgICAgIyBHZXQgYW4gaXRlbSBhbmQgcmV0dXJuIHRoZSBvbmVzIHRoYXQgbWF0Y2ggd2l0aCBrZXl3b3JkKHMpCi0gICAgICAgICMgdmFsdWVzOiB0aGUgbGlzdCBvZiBpdGVtcyAobmFtZXMsIG1vZHVsZXMsIGNsYXNzZXMuLi4pCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIHJlbWFpbmluZyA9IHZhbHVlc1s6XQotICAgICAgICBmb3Iga2V5IGluIGtleXdvcmQ6Ci0gICAgICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgICAgICBpZiBrZXkgaW4gcmVtYWluaW5nOgotICAgICAgICAgICAgICAgICMgUmVndWxhciBtYXRjaGluZyBvZiBleGFjdCBpdGVtCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nLnJlbW92ZShrZXkpCi0gICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2lsZGNhcmQgbWF0Y2hpbmcKLSAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShmbm1hdGNoLnRyYW5zbGF0ZShyIiVzIiAlIGtleSkpCi0gICAgICAgICAgICAgICAgYWRkZWQgPSBbeCBmb3IgeCBpbiByZW1haW5pbmcgaWYgcGF0dGVybi5tYXRjaCh4KV0KLSAgICAgICAgICAgICAgICBpZiBhZGRlZDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChhZGRlZCkKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gW3ggZm9yIHggaW4gcmVtYWluaW5nIGlmIHggbm90IGluIGFkZGVkXQotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKLSAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIkZhaWxlZCB0byBmaW5kIHRlc3Q6ICVzIiAlIGtleSkKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBpZiBjcml0ZXJpYSA9PSAnbmFtZSc6Ci0gICAgICAgIG5hbWVzID0gZ2V0X21hdGNoZXMoWyB0Yy50Y25hbWUgZm9yIHRjIGluIGFsbF90ZXN0cyBdKQotICAgICAgICB0cyA9IFsgdGMgZm9yIHRjIGluIGFsbF90ZXN0cyBpZiB0Yy50Y25hbWUgaW4gbmFtZXMgXQotCi0gICAgZWxpZiBjcml0ZXJpYSA9PSAnY2xhc3MnOgotICAgICAgICBjbGFzc2VzID0gZ2V0X21hdGNoZXMoWyB0Yy50Y2NsYXNzIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgdGMudGNjbGFzcyBpbiBjbGFzc2VzIF0KLQotICAgIGVsaWYgY3JpdGVyaWEgPT0gJ21vZHVsZSc6Ci0gICAgICAgIG1vZHVsZXMgPSBnZXRfbWF0Y2hlcyhbIHRjLnRjbW9kdWxlIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgdGMudGNtb2R1bGUgaW4gbW9kdWxlcyBdCi0KLSAgICBlbGlmIGNyaXRlcmlhID09ICdpZCc6Ci0gICAgICAgIGlkcyA9IGdldF9tYXRjaGVzKFsgc3RyKHRjLnRjaWQpIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgc3RyKHRjLnRjaWQpIGluIGlkcyBdCi0KLSAgICBlbGlmIGNyaXRlcmlhID09ICd0YWcnOgotICAgICAgICB2YWx1ZXMgPSBzZXQoKQotICAgICAgICBmb3IgdGMgaW4gYWxsX3Rlc3RzOgotICAgICAgICAgICAgIyB0YyBjYW4gaGF2ZSBtdWx0aXBsZSB0YWdzIChhcyB0dXBsZSkgb3RoZXJ3aXNlIHN0ciB3aWxsIHN1ZmZpY2UKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGMudGN0YWcsIHR1cGxlKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMgfD0geyBzdHIodGFnKSBmb3IgdGFnIGluIHRjLnRjdGFnIH0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFkZChzdHIodGMudGN0YWcpKQotCi0gICAgICAgIHRhZ3MgPSBnZXRfbWF0Y2hlcyhsaXN0KHZhbHVlcykpCi0KLSAgICAgICAgZm9yIHRjIGluIGFsbF90ZXN0czoKLSAgICAgICAgICAgIGZvciB0YWcgaW4gdGFnczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHRjLnRjdGFnLCB0dXBsZSkgYW5kIHRhZyBpbiB0Yy50Y3RhZzoKLSAgICAgICAgICAgICAgICAgICAgdHMuYXBwZW5kKHRjKQotICAgICAgICAgICAgICAgIGVsaWYgdGFnID09IHRjLnRjdGFnOgotICAgICAgICAgICAgICAgICAgICB0cy5hcHBlbmQodGMpCi0KLSAgICAgICAgIyBSZW1vdmUgZHVwbGljYXRlcyBmcm9tIHRoZSBsaXN0Ci0gICAgICAgIHRzID0gbGlzdChzZXQodHMpKQotCi0gICAgcmV0dXJuIHRzCi0KLQotZGVmIGxpc3RfdGVzdHN1aXRlX2J5KGNyaXRlcmlhLCBrZXl3b3JkKToKLSAgICAjIEdldCBhIHRlc3RzdWl0ZSBiYXNlZCBvbiAna2V5d29yZCcKLSAgICAjIGNyaXRlcmlhOiBuYW1lLCBjbGFzcywgbW9kdWxlLCBpZCwgdGFnCi0gICAgIyBrZXl3b3JkOiBhIGxpc3Qgb2YgdGVzdHMsIGNsYXNzZXMsIG1vZHVsZXMsIGlkcywgdGFncwotICAgIGRlZiB0Y19rZXkodCk6Ci0gICAgICAgIGlmIHRbMF0gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAgKDAsKSArIHRbMTpdCi0gICAgICAgIHJldHVybiB0Ci0gICAgIyB0Y2lkIG1heSBiZSBOb25lIGlmIG5vIElEIHdhcyBhc3NpZ25lZCwgaW4gd2hpY2ggY2FzZSBzb3J0ZWQoKSB3aWxsIHRocm93Ci0gICAgIyBhIFR5cGVFcnJvciBhcyBQeXRob24gMyBkb2VzIG5vdCBhbGxvdyBjb21wYXJpc29uICg8LDw9LD49LD4pIG9mCi0gICAgIyBoZXRlcm9nZW5lb3VzIHR5cGVzLCBoYW5kbGUgdGhpcyBieSB1c2luZyBhIGN1c3RvbSBrZXkgZ2VuZXJhdG9yCi0gICAgdHMgPSBzb3J0ZWQoWyAodGMudGNpZCwgdGMudGN0YWcsIHRjLnRjbmFtZSwgdGMudGNjbGFzcywgdGMudGNtb2R1bGUpIFwKLSAgICAgICAgICAgICAgICAgIGZvciB0YyBpbiBnZXRfdGVzdHN1aXRlX2J5KGNyaXRlcmlhLCBrZXl3b3JkKSBdLCBrZXk9dGNfa2V5KQotICAgIHByaW50KCdfJyAqIDE1MCkKLSAgICBmb3IgdCBpbiB0czoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0WzFdLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTIwc1x0JS02MHNcdCUtMjVzXHQlLTIwcycgJSAodFswXSwgJywgJy5qb2luKHRbMV0pLCB0WzJdLCB0WzNdLCB0WzRdKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTIwc1x0JS02MHNcdCUtMjVzXHQlLTIwcycgJSB0KQotICAgIHByaW50KCdfJyAqIDE1MCkKLSAgICBwcmludCgnRmlsdGVyaW5nIGJ5Olx0ICVzJyAlIGNyaXRlcmlhKQotICAgIHByaW50KCdMb29raW5nIGZvcjpcdCAlcycgJSAnLCAnLmpvaW4oc3RyKHgpIGZvciB4IGluIGtleXdvcmQpKQotICAgIHByaW50KCdUb3RhbCBmb3VuZDpcdCAlcycgJSBsZW4odHMpKQotCi0KLWRlZiBsaXN0X3Rlc3RzKCk6Ci0gICAgIyBMaXN0IGFsbCBhdmFpbGFibGUgb2Utc2VsZnRlc3QgdGVzdHMKLQotICAgIHRzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBwcmludCgnJS00c1x0JS0xMHNcdCUtNTBzJyAlICgnaWQnLCAndGFnJywgJ3Rlc3QnKSkKLSAgICBwcmludCgnXycgKiA4MCkKLSAgICBmb3IgdCBpbiB0czoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0LnRjdGFnLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTEwc1x0JS01MHMnICUgKHQudGNpZCwgJywgJy5qb2luKHQudGN0YWcpLCAnLicuam9pbihbdC50Y21vZHVsZSwgdC50Y2NsYXNzLCB0LnRjbmFtZV0pKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTEwc1x0JS01MHMnICUgKHQudGNpZCwgdC50Y3RhZywgJy4nLmpvaW4oW3QudGNtb2R1bGUsIHQudGNjbGFzcywgdC50Y25hbWVdKSkpCi0gICAgcHJpbnQoJ18nICogODApCi0gICAgcHJpbnQoJ1RvdGFsIGZvdW5kOlx0ICVzJyAlIGxlbih0cykpCi0KLWRlZiBsaXN0X3RhZ3MoKToKLSAgICAjIEdldCBhbGwgdGFncyBzZXQgdG8gdGVzdCBjYXNlcwotICAgICMgVGhpcyBpcyB1c2VmdWwgd2hlbiBzZXR0aW5nIHRhZ3MgdG8gdGVzdCBjYXNlcwotICAgICMgVGhlIGxpc3Qgb2YgdGFncyBzaG91bGQgYmUga2VwdCBhcyBtaW5pbWFsIGFzIHBvc3NpYmxlCi0gICAgdGFncyA9IHNldCgpCi0gICAgYWxsX3Rlc3RzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBmb3IgdGMgaW4gYWxsX3Rlc3RzOgotICAgICAgICBpZiBpc2luc3RhbmNlKHRjLnRjdGFnLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHRhZ3MudXBkYXRlKHNldCh0Yy50Y3RhZykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0YWdzLmFkZCh0Yy50Y3RhZykKLQotICAgIHByaW50KCdUYWdzOlx0JXMnICUgJywgJy5qb2luKHN0cih4KSBmb3IgeCBpbiB0YWdzKSkKLQotZGVmIGNvdmVyYWdlX3NldHVwKGNvdmVyYWdlX3NvdXJjZSwgY292ZXJhZ2VfaW5jbHVkZSwgY292ZXJhZ2Vfb21pdCk6Ci0gICAgIiIiIFNldCB1cCB0aGUgY292ZXJhZ2UgbWVhc3VyZW1lbnQgZm9yIHRoZSB0ZXN0Y2FzZXMgdG8gYmUgcnVuICIiIgotICAgIGltcG9ydCBkYXRldGltZQotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgZ2xvYmFsIGJ1aWxkZGlyCi0gICAgcG9reWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpKQotICAgIGN1cmNvbW1pdD0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJnaXQiLCAiLS1naXQtZGlyIiwgb3MucGF0aC5qb2luKHBva3lkaXIsICIuZ2l0IiksICJyZXYtcGFyc2UiLCAiSEVBRCJdKS5kZWNvZGUoJ3V0Zi04JykKLSAgICBjb3ZlcmFnZXJjID0gIiVzLy5jb3ZlcmFnZXJjIiAlIGJ1aWxkZGlyCi0gICAgZGF0YV9maWxlID0gIiVzLy5jb3ZlcmFnZS4iICUgYnVpbGRkaXIKLSAgICBkYXRhX2ZpbGUgKz0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZFQlSCVNJVMnKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGRhdGFfZmlsZSk6Ci0gICAgICAgIG9zLnJlbW92ZShkYXRhX2ZpbGUpCi0gICAgd2l0aCBvcGVuKGNvdmVyYWdlcmMsICd3JykgYXMgY3BzOgotICAgICAgICBjcHMud3JpdGUoIiMgR2VuZXJhdGVkIHdpdGggY29tbWFuZCAnJXMnXG4iICUgIiAiLmpvaW4oc3lzLmFyZ3YpKQotICAgICAgICBjcHMud3JpdGUoIiMgSEVBRCBjb21taXQgJXNcbiIgJSBjdXJjb21taXQuc3RyaXAoKSkKLSAgICAgICAgY3BzLndyaXRlKCJbcnVuXVxuIikKLSAgICAgICAgY3BzLndyaXRlKCJkYXRhX2ZpbGUgPSAlc1xuIiAlIGRhdGFfZmlsZSkKLSAgICAgICAgY3BzLndyaXRlKCJicmFuY2ggPSBUcnVlXG4iKQotICAgICAgICAjIE1lYXN1cmUganVzdCBCQkxBWUVSUywgc2NyaXB0cyBhbmQgYml0YmFrZSBmb2xkZXJzCi0gICAgICAgIGNwcy53cml0ZSgic291cmNlID0gXG4iKQotICAgICAgICBpZiBjb3ZlcmFnZV9zb3VyY2U6Ci0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGNvdmVyYWdlX3NvdXJjZToKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpOgotICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiRGlyZWN0b3J5ICVzIGlzIG5vdCB2YWxpZC4iLCBkaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgY3BzLndyaXRlKCIgICAgJXNcbiIgJSBkaXJlY3RvcnkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbGF5ZXIgaW4gZ2V0X2JiX3ZhcignQkJMQVlFUlMnKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGNwcy53cml0ZSgiICAgICVzXG4iICUgbGF5ZXIpCi0gICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkpCi0gICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSksJ2JpdGJha2UnKSkKLQotICAgICAgICBpZiBjb3ZlcmFnZV9pbmNsdWRlOgotICAgICAgICAgICAgY3BzLndyaXRlKCJpbmNsdWRlID0gXG4iKQotICAgICAgICAgICAgZm9yIHBhdHRlcm4gaW4gY292ZXJhZ2VfaW5jbHVkZToKLSAgICAgICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIHBhdHRlcm4pCi0gICAgICAgIGlmIGNvdmVyYWdlX29taXQ6Ci0gICAgICAgICAgICBjcHMud3JpdGUoIm9taXQgPSBcbiIpCi0gICAgICAgICAgICBmb3IgcGF0dGVybiBpbiBjb3ZlcmFnZV9vbWl0OgotICAgICAgICAgICAgICAgIGNwcy53cml0ZSgiICAgICVzXG4iICUgcGF0dGVybikKLQotICAgICAgICByZXR1cm4gY292ZXJhZ2VyYwotCi1kZWYgY292ZXJhZ2VfcmVwb3J0KCk6Ci0gICAgIiIiIExvYWRzIHRoZSBjb3ZlcmFnZSBkYXRhIGdhdGhlcmVkIGFuZCByZXBvcnRzIGl0IGJhY2sgIiIiCi0gICAgdHJ5OgotICAgICAgICAjIENvdmVyYWdlNCB1c2VzIGNvdmVyYWdlLkNvdmVyYWdlCi0gICAgICAgIGZyb20gY292ZXJhZ2UgaW1wb3J0IENvdmVyYWdlCi0gICAgZXhjZXB0OgotICAgICAgICAjIENvdmVyYWdlIHVuZGVyIHZlcnNpb24gNCB1c2VzIGNvdmVyYWdlLmNvdmVyYWdlCi0gICAgICAgIGZyb20gY292ZXJhZ2UgaW1wb3J0IGNvdmVyYWdlIGFzIENvdmVyYWdlCi0KLSAgICBpbXBvcnQgaW8gYXMgU3RyaW5nSU8KLSAgICBmcm9tIGNvdmVyYWdlLm1pc2MgaW1wb3J0IENvdmVyYWdlRXhjZXB0aW9uCi0KLSAgICBjb3Zfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICMgQ3JlYXRpbmcgdGhlIGNvdmVyYWdlIGRhdGEgd2l0aCB0aGUgc2V0dGluZyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICBjb3YgPSBDb3ZlcmFnZShjb25maWdfZmlsZSA9IG9zLmVudmlyb24uZ2V0KCdDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJykpCi0gICAgdHJ5OgotICAgICAgICAjIExvYWQgZGF0YSBmcm9tIHRoZSBkYXRhIGZpbGUgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uCi0gICAgICAgIGNvdi5sb2FkKCkKLSAgICAgICAgIyBTdG9yZSByZXBvcnQgZGF0YSBpbiBhIFN0cmluZ0lPIHZhcmlhYmxlCi0gICAgICAgIGNvdi5yZXBvcnQoZmlsZSA9IGNvdl9vdXRwdXQsIHNob3dfbWlzc2luZz1GYWxzZSkKLSAgICAgICAgbG9nLmluZm8oIlxuJXMiICUgY292X291dHB1dC5nZXR2YWx1ZSgpKQotICAgIGV4Y2VwdCBDb3ZlcmFnZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAjIFNob3cgcHJvYmxlbXMgd2l0aCB0aGUgcmVwb3J0aW5nLiBTaW5jZSBDb3ZlcmFnZTQgbm90IGZpbmRpbmcgIGFueSBkYXRhIHRvIHJlcG9ydCByYWlzZXMgYW4gZXhjZXB0aW9uCi0gICAgICAgIGxvZy53YXJuKCIlcyIgJSBzdHIoZSkpCi0gICAgZmluYWxseToKLSAgICAgICAgY292X291dHB1dC5jbG9zZSgpCi0KK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXNlbGZ0ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQpCiAKIGRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0gZ2V0X2FyZ3NfcGFyc2VyKCkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGRlc2NyaXB0aW9uID0gIlNjcmlwdCB0aGF0IHJ1bnMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGJpdGJha2UgYW5kIG90aGVyIFlvY3RvIHJlbGF0ZWQgdG9vbHMuIFRoZSBnb2FsIGlzIHRvIHZhbGlkYXRlIHRvb2xzIGZ1bmN0aW9uYWxpdHkgYW5kIG1ldGFkYXRhIGludGVncml0eS4gUmVmZXIgdG8gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9PZS1zZWxmdGVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCiAKLSAgICAjIEFkZCA8bGF5ZXI+L2xpYiB0byBzeXMucGF0aCwgc28gbGF5ZXJzIGNhbiBhZGQgc2VsZnRlc3RzCi0gICAgbG9nLmluZm8oIlJ1bm5pbmcgYml0YmFrZSAtZSB0byBnZXQgQkJQQVRIIikKLSAgICBiYnBhdGggPSBnZXRfYmJfdmFyKCdCQlBBVEgnKS5zcGxpdCgnOicpCi0gICAgbGF5ZXJfbGliZGlycyA9IFtwIGZvciBwIGluIChvcy5wYXRoLmpvaW4obCwgJ2xpYicpIGZvciBsIGluIGJicGF0aCkgaWYgb3MucGF0aC5leGlzdHMocCldCi0gICAgc3lzLnBhdGguZXh0ZW5kKGxheWVyX2xpYmRpcnMpCi0gICAgaW1wLnJlbG9hZChvZXFhLnNlbGZ0ZXN0KQorICAgIGNvbXBfbmFtZSwgY29tcCA9IGxvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlciwgJ29lLXNlbGZ0ZXN0JykucG9waXRlbSgpCisgICAgY29tcC5yZWdpc3Rlcl9jb21tYW5kcyhsb2dnZXIsIHBhcnNlcikKIAotICAgICMgYWN0IGxpa2UgYml0YmFrZSBhbmQgZW5mb3JjZSBlbl9VUy5VVEYtOCBsb2NhbGUKLSAgICBvcy5lbnZpcm9uWyJMQ19BTEwiXSA9ICJlbl9VUy5VVEYtOCIKKyAgICB0cnk6CisgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgICAgIHJlc3VsdHMgPSBhcmdzLmZ1bmMobG9nZ2VyLCBhcmdzKQorICAgICAgICByZXQgPSAwIGlmIHJlc3VsdHMud2FzU3VjY2Vzc2Z1bCgpIGVsc2UgMQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0IGFzIGVycjoKKyAgICAgICAgaWYgZXJyLmNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIGVycgorICAgICAgICByZXQgPSBlcnIuY29kZQorICAgIGV4Y2VwdCBPRVFBUHJlUnVuIGFzIHByOgorICAgICAgICByZXQgPSAxCiAKLSAgICBpZiBhcmdzLnJ1bl90ZXN0c19ieSBhbmQgbGVuKGFyZ3MucnVuX3Rlc3RzX2J5KSA+PSAyOgotICAgICAgICB2YWxpZF9vcHRpb25zID0gWyduYW1lJywgJ2NsYXNzJywgJ21vZHVsZScsICdpZCcsICd0YWcnXQotICAgICAgICBpZiBhcmdzLnJ1bl90ZXN0c19ieVswXSBub3QgaW4gdmFsaWRfb3B0aW9uczoKLSAgICAgICAgICAgIHByaW50KCctLXJ1bi10ZXN0cy1ieSAlcyBub3QgYSB2YWxpZCBvcHRpb24uIENob29zZSBvbmUgb2YgPG5hbWV8Y2xhc3N8bW9kdWxlfGlkfHRhZz4uJyAlIGFyZ3MucnVuX3Rlc3RzX2J5WzBdKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNyaXRlcmlhID0gYXJncy5ydW5fdGVzdHNfYnlbMF0KLSAgICAgICAgICAgIGtleXdvcmQgPSBhcmdzLnJ1bl90ZXN0c19ieVsxOl0KLSAgICAgICAgICAgIHRzID0gc29ydGVkKFsgdGMuZnVsbHBhdGggZm9yIHRjIGluIGdldF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpIF0pCi0gICAgICAgIGlmIG5vdCB0czoKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgcmV0dXJuIHJldAogCi0gICAgaWYgYXJncy5saXN0X3Rlc3RzX2J5IGFuZCBsZW4oYXJncy5saXN0X3Rlc3RzX2J5KSA+PSAyOgotICAgICAgICB2YWxpZF9vcHRpb25zID0gWyduYW1lJywgJ2NsYXNzJywgJ21vZHVsZScsICdpZCcsICd0YWcnXQotICAgICAgICBpZiBhcmdzLmxpc3RfdGVzdHNfYnlbMF0gbm90IGluIHZhbGlkX29wdGlvbnM6Ci0gICAgICAgICAgICBwcmludCgnLS1saXN0LXRlc3RzLWJ5ICVzIG5vdCBhIHZhbGlkIG9wdGlvbi4gQ2hvb3NlIG9uZSBvZiA8bmFtZXxjbGFzc3xtb2R1bGV8aWR8dGFnPi4nICUgYXJncy5saXN0X3Rlc3RzX2J5WzBdKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNyaXRlcmlhID0gYXJncy5saXN0X3Rlc3RzX2J5WzBdCi0gICAgICAgICAgICBrZXl3b3JkID0gYXJncy5saXN0X3Rlc3RzX2J5WzE6XQotICAgICAgICAgICAgbGlzdF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpCi0KLSAgICBpZiBhcmdzLmxpc3RfdGVzdHM6Ci0gICAgICAgIGxpc3RfdGVzdHMoKQotCi0gICAgaWYgYXJncy5saXN0X3RhZ3M6Ci0gICAgICAgIGxpc3RfdGFncygpCi0KLSAgICBpZiBhcmdzLmxpc3RfYWxsY2xhc3NlczoKLSAgICAgICAgYXJncy5saXN0X21vZHVsZXMgPSBUcnVlCi0KLSAgICBpZiBhcmdzLmxpc3RfbW9kdWxlczoKLSAgICAgICAgbG9nLmluZm8oJ0xpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXM6JykKLSAgICAgICAgdGVzdHNsaXN0ID0gZ2V0X3Rlc3RzKGluY2x1ZGVfaGlkZGVuPVRydWUpCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RzbGlzdDoKLSAgICAgICAgICAgIG1vZHVsZSA9IHRlc3Quc3BsaXQoJ29lcWEuc2VsZnRlc3QuJylbLTFdCi0gICAgICAgICAgICBpbmZvID0gJycKLSAgICAgICAgICAgIGlmIG1vZHVsZS5zdGFydHN3aXRoKCdfJyk6Ci0gICAgICAgICAgICAgICAgaW5mbyA9ICcgKGhpZGRlbiknCi0gICAgICAgICAgICBwcmludChtb2R1bGUgKyBpbmZvKQotICAgICAgICAgICAgaWYgYXJncy5saXN0X2FsbGNsYXNzZXM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgaW1wb3J0bGliCi0gICAgICAgICAgICAgICAgICAgIG1vZGxpYiA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHRlc3QpCi0gICAgICAgICAgICAgICAgICAgIGZvciB2IGluIHZhcnMobW9kbGliKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB2YXJzKG1vZGxpYilbdl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodCwgdHlwZShvZVNlbGZUZXN0KSkgYW5kIGlzc3ViY2xhc3ModCwgb2VTZWxmVGVzdCkgYW5kIHQhPW9lU2VsZlRlc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAtLSIsIHYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIodCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCJ0ZXN0XyIpIGFuZCBpc2luc3RhbmNlKHZhcnModClbbWV0aG9kXSwgY29sbGVjdGlvbnMuQ2FsbGFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAtLSAgLS0iLCBtZXRob2QpCi0KLSAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoZSkKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgaWYgYXJncy5ydW5fdGVzdHMgb3IgYXJncy5ydW5fYWxsX3Rlc3RzIG9yIGFyZ3MucnVuX3Rlc3RzX2J5OgotICAgICAgICBpZiBub3QgcHJlZmxpZ2h0X2NoZWNrKCk6Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgIGlmIGFyZ3MucnVuX3Rlc3RzX2J5OgotICAgICAgICAgICAgdGVzdHNsaXN0ID0gdHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzbGlzdCA9IGdldF90ZXN0cyhleGNsdXNpdmVfbW9kdWxlcz0oYXJncy5ydW5fdGVzdHMgb3IgW10pLCBpbmNsdWRlX2hpZGRlbj1GYWxzZSkKLQotICAgICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgICAgICBsb2FkZXIuc29ydFRlc3RNZXRob2RzVXNpbmcgPSBOb25lCi0gICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXIodmVyYm9zaXR5PTIsCi0gICAgICAgICAgICAgICAgcmVzdWx0Y2xhc3M9YnVpbGRSZXN1bHRDbGFzcyhhcmdzKSkKLSAgICAgICAgIyB3ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwgb3RoZXJ3aXNlIGp1c3QgbG9hZGluZyB0aGUgdGVzdHMKLSAgICAgICAgIyB3aWxsIHRha2UgMiBtaW51dGVzIChiaXRiYWtlIC1lIGNhbGxzKQotICAgICAgICBvZVNlbGZUZXN0LnRlc3RsYXllcl9wYXRoID0gZ2V0X3Rlc3RfbGF5ZXIoKQotICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0c2xpc3Q6Ci0gICAgICAgICAgICBsb2cuaW5mbygiTG9hZGluZyB0ZXN0cyBmcm9tOiAlcyIgJSB0ZXN0KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3RzKGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSh0ZXN0KSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGxvZy5lcnJvcigiRmFpbGVkIHRvIGltcG9ydCAlcyIgJSB0ZXN0KQotICAgICAgICAgICAgICAgIGxvZy5lcnJvcihlKQotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGFkZF9pbmNsdWRlKCkKLQotICAgICAgICBpZiBhcmdzLm1hY2hpbmU6Ci0gICAgICAgICAgICAjIEN1c3RvbSBtYWNoaW5lIHNldHMgb25seSB3ZWFrIGRlZmF1bHQgdmFsdWVzICg/Pz0pIGZvciBNQUNISU5FIGluIG1hY2hpbmUuaW5jCi0gICAgICAgICAgICAjIFRoaXMgbGV0IHRlc3QgY2FzZXMgdGhhdCByZXF1aXJlIGEgc3BlY2lmaWMgTUFDSElORSB0byBiZSBhYmxlIHRvIG92ZXJyaWRlIGl0LCB1c2luZyAoPz0gb3IgPSkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdDdXN0b20gbWFjaGluZSBtb2RlIGVuYWJsZWQuIE1BQ0hJTkUgc2V0IHRvICVzJyAlIGFyZ3MubWFjaGluZSkKLSAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZSA9PSAncmFuZG9tJzoKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDVVNUT01NQUNISU5FJ10gPSAncmFuZG9tJwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4oc3VpdGUpCi0gICAgICAgICAgICBlbHNlOiAgIyBhbGwKLSAgICAgICAgICAgICAgICBtYWNoaW5lcyA9IGdldF9hdmFpbGFibGVfbWFjaGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBtIGluIG1hY2hpbmVzOgotICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygnUnVuIHRlc3RzIHdpdGggY3VzdG9tIE1BQ0hJTkUgc2V0IHRvOiAlcycgJSBtKQotICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDVVNUT01NQUNISU5FJ10gPSBtCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4oc3VpdGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5uZXIucnVuKHN1aXRlKQotCi0gICAgICAgIGxvZy5pbmZvKCJGaW5pc2hlZCIpCi0KLSAgICAgICAgaWYgYXJncy5yZXBvc2l0b3J5OgotICAgICAgICAgICAgaW1wb3J0IGdpdAotICAgICAgICAgICAgIyBDb21taXQgdGVzdHMgcmVzdWx0cyB0byByZXBvc2l0b3J5Ci0gICAgICAgICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhX2Zyb21fYmIoKQotICAgICAgICAgICAgZ2l0X2RpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgJ3NlbGZ0ZXN0JykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGdpdF9kaXIpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGdpdF9kaXIpCi0KLSAgICAgICAgICAgIGxvZy5kZWJ1ZygnQ2hlY2tpbmcgZm9yIGdpdCByZXBvc2l0b3J5IGluICVzJyAlIGdpdF9kaXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVwbyA9IGdpdC5SZXBvKGdpdF9kaXIpCi0gICAgICAgICAgICBleGNlcHQgZ2l0LmV4Yy5JbnZhbGlkR2l0UmVwb3NpdG9yeUVycm9yOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQ291bGRuJ3QgZmluZCBnaXQgcmVwb3NpdG9yeSAlczsgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9uaW5nIGZyb20gJXMiICUgKGdpdF9kaXIsIGFyZ3MucmVwb3NpdG9yeSkpCi0gICAgICAgICAgICAgICAgcmVwbyA9IGdpdC5SZXBvLmNsb25lX2Zyb20oYXJncy5yZXBvc2l0b3J5LCBnaXRfZGlyKQotCi0gICAgICAgICAgICByX2JyYW5jaGVzID0gcmVwby5naXQuYnJhbmNoKHI9VHJ1ZSkKLSAgICAgICAgICAgIHJfYnJhbmNoZXMgPSBzZXQocl9icmFuY2hlcy5yZXBsYWNlKCdvcmlnaW4vJywgJycpLnNwbGl0KCkpCi0gICAgICAgICAgICBsX2JyYW5jaGVzID0ge3N0cihicmFuY2gpIGZvciBicmFuY2ggaW4gcmVwby5icmFuY2hlc30KLSAgICAgICAgICAgIGJyYW5jaCA9ICclcy8lcy8lcycgJSAobWV0YWRhdGFbJ2hvc3RuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhWydsYXllcnMnXVsnbWV0YSddLmdldCgnYnJhbmNoJywgJyhub2dpdCknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbJ2NvbmZpZyddWydNQUNISU5FJ10pCi0KLSAgICAgICAgICAgIGlmIGJyYW5jaCBpbiBsX2JyYW5jaGVzOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnRm91bmQgYnJhbmNoIGluIGxvY2FsIHJlcG9zaXRvcnksIGNoZWNraW5nIG91dCcpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoYnJhbmNoKQotICAgICAgICAgICAgZWxpZiBicmFuY2ggaW4gcl9icmFuY2hlczoKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoJ0ZvdW5kIGJyYW5jaCBpbiByZW1vdGUgcmVwb3NpdG9yeSwgY2hlY2tpbmcnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgb3V0IGFuZCBwdWxsaW5nJykKLSAgICAgICAgICAgICAgICByZXBvLmdpdC5jaGVja291dChicmFuY2gpCi0gICAgICAgICAgICAgICAgcmVwby5naXQucHVsbCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnTmV3IGJyYW5jaCAlcycgJSBicmFuY2gpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoJ21hc3RlcicpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoYj1icmFuY2gpCi0KLSAgICAgICAgICAgIGNsZWFuUmVzdWx0c0RpcihyZXBvKQotICAgICAgICAgICAgeG1sX2RpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgbG9nX3ByZWZpeCkKLSAgICAgICAgICAgIGNvcHlSZXN1bHRGaWxlcyh4bWxfZGlyLCBnaXRfZGlyLCByZXBvKQotICAgICAgICAgICAgbWV0YWRhdGFfZmlsZSA9IG9zLnBhdGguam9pbihnaXRfZGlyLCAnbWV0YWRhdGEueG1sJykKLSAgICAgICAgICAgIHdyaXRlX21ldGFkYXRhX2ZpbGUobWV0YWRhdGFfZmlsZSwgbWV0YWRhdGEpCi0gICAgICAgICAgICByZXBvLmluZGV4LmFkZChbbWV0YWRhdGFfZmlsZV0pCi0gICAgICAgICAgICByZXBvLmluZGV4LndyaXRlKCkKLQotICAgICAgICAgICAgIyBHZXQgaW5mb3JtYXRpb24gZm9yIGNvbW1pdCBtZXNzYWdlCi0gICAgICAgICAgICBsYXllcl9pbmZvID0gJycKLSAgICAgICAgICAgIGZvciBsYXllciwgdmFsdWVzIGluIG1ldGFkYXRhWydsYXllcnMnXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGxheWVyX2luZm8gPSAnJXMlLTE3cyA9ICVzOiVzXG4nICUgKGxheWVyX2luZm8sIGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmdldCgnYnJhbmNoJywgJyhub2dpdCknKSwgdmFsdWVzLmdldCgnY29tbWl0JywgJzAnKjQwKSkKLSAgICAgICAgICAgIG1zZyA9ICdTZWxmdGVzdCBmb3IgYnVpbGQgJXMgb2YgJXMgZm9yIG1hY2hpbmUgJXMgb24gJXNcblxuJXMnICUgKAotICAgICAgICAgICAgICAgICAgIGxvZ19wcmVmaXhbMTI6XSwgbWV0YWRhdGFbJ2Rpc3RybyddWydwcmV0dHlfbmFtZSddLAotICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhWydjb25maWcnXVsnTUFDSElORSddLCBtZXRhZGF0YVsnaG9zdG5hbWUnXSwgbGF5ZXJfaW5mbykKLQotICAgICAgICAgICAgbG9nLmRlYnVnKCdDb21taXRpbmcgcmVzdWx0cyB0byBsb2NhbCByZXBvc2l0b3J5JykKLSAgICAgICAgICAgIHJlcG8uaW5kZXguY29tbWl0KG1zZykKLSAgICAgICAgICAgIGlmIG5vdCByZXBvLmlzX2RpcnR5KCk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggaW4gcl9icmFuY2hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnUHVzaGluZyBjaGFuZ2VzIHRvIHJlbW90ZSByZXBvc2l0b3J5JykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG8uZ2l0LnB1c2goKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCdQdXNoaW5nIGNoYW5nZXMgdG8gcmVtb3RlIHJlcG9zaXRvcnkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBuZXcgYnJhbmNoJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG8uZ2l0LnB1c2goJy11JywgJ29yaWdpbicsIGJyYW5jaCkKLSAgICAgICAgICAgICAgICBleGNlcHQgR2l0Q29tbWFuZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0ZhbGllZCB0byBwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5JykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLmVycm9yKCdMb2NhbCByZXBvc2l0b3J5IGlzIGRpcnR5LCBub3QgcHVzaGluZyBjb21taXRzJykKLQotICAgICAgICBpZiByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpOgotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLWRlZiBidWlsZFJlc3VsdENsYXNzKGFyZ3MpOgotICAgICIiIkJ1aWxkIGEgUmVzdWx0IENsYXNzIHRvIHVzZSBpbiB0aGUgdGVzdGNhc2UgZXhlY3V0aW9uIiIiCi0gICAgaW1wb3J0IHNpdGUKLQotICAgIGNsYXNzIFN0YW1wZWRSZXN1bHQoVGVzdFJlc3VsdCk6Ci0gICAgICAgICIiIgotICAgICAgICBDdXN0b20gVGVzdFJlc3VsdCB0aGF0IHByaW50cyB0aGUgdGltZSB3aGVuIGEgdGVzdCBzdGFydHMuICBBcyBvZS1zZWxmdGVzdAotICAgICAgICBjYW4gdGFrZSBhIGxvbmcgdGltZSAoaWUgYSBmZXcgaG91cnMpIHRvIHJ1biwgdGltZXN0YW1wcyBoZWxwIHVzIHVuZGVyc3RhbmQKLSAgICAgICAgd2hhdCB0ZXN0cyBhcmUgdGFraW5nIGEgbG9uZyB0aW1lIHRvIGV4ZWN1dGUuCi0gICAgICAgIElmIGNvdmVyYWdlIGlzIHJlcXVpcmVkLCB0aGlzIGNsYXNzIGV4ZWN1dGVzIHRoZSBjb3ZlcmFnZSBzZXR1cCBhbmQgcmVwb3J0aW5nLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSh0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIHRpbWUubG9jYWx0aW1lKCkpICsgIiAtICIpCi0gICAgICAgICAgICBzdXBlcihTdGFtcGVkUmVzdWx0LCBzZWxmKS5zdGFydFRlc3QodGVzdCkKLQotICAgICAgICBkZWYgc3RhcnRUZXN0UnVuKHNlbGYpOgotICAgICAgICAgICAgIiIiIFNldHVwIGNvdmVyYWdlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0Y2FzZSAiIiIKLQotICAgICAgICAgICAgIyB2YXJpYWJsZSBob2xkaW5nIHRoZSBjb3ZlcmFnZSBjb25maWd1cmF0aW9uIGZpbGUgYWxsb3dpbmcgc3VicHJvY2VzcyB0byBiZSBtZWFzdXJlZAotICAgICAgICAgICAgc2VsZi5jb3ZlcmFnZXB0aCA9IE5vbmUKLQotICAgICAgICAgICAgIyBpbmRpY2F0ZXMgdGhlIHN5c3RlbSBpZiBjb3ZlcmFnZSBpcyBjdXJyZW50bHkgaW5zdGFsbGVkCi0gICAgICAgICAgICBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZCA9IFRydWUKLQotICAgICAgICAgICAgaWYgYXJncy5jb3ZlcmFnZSBvciBhcmdzLmNvdmVyYWdlX3NvdXJjZSBvciBhcmdzLmNvdmVyYWdlX2luY2x1ZGUgb3IgYXJncy5jb3ZlcmFnZV9vbWl0OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiB1c2VyIGNhbiBkbyBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgY292ZXJhZ2UKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJweXRob24gY292ZXJhZ2UgaXMgbm90IGluc3RhbGxlZC4gTW9yZSBpbmZvIG9uIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY292ZXJhZ2UiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZDoKLSAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvdmVyYWdlIGlzIGVuYWJsZWQiKQotCi0gICAgICAgICAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoY292ZXJhZ2UudmVyc2lvbi5fX3ZlcnNpb25fX1swXSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoInB5dGhvbiBjb3ZlcmFnZSAlcyBpbnN0YWxsZWQuIFJlcXVpcmUgdmVyc2lvbiA0IG9yIGdyZWF0ZXIuIiAlIGNvdmVyYWdlLnZlcnNpb24uX192ZXJzaW9uX18pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2UgdGhlIHVzZXIgaGFzIG5vdCBzZXQgdGhlIHZhcmlhYmxlIENPVkVSQUdFX1BST0NFU1NfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgZGVmYXVsdCBvbmUgYW5kIGV4cG9ydCBpdC4gVGhlIENPVkVSQUdFX1BST0NFU1NfU1RBUlQKLSAgICAgICAgICAgICAgICAgICAgIyB2YWx1ZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24gZmlsZSByZXNpZGVzCi0gICAgICAgICAgICAgICAgICAgICMgTW9yZSBpbmZvIG9uIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY292ZXJhZ2UKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCdDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJ10gPSBjb3ZlcmFnZV9zZXR1cChhcmdzLmNvdmVyYWdlX3NvdXJjZSwgYXJncy5jb3ZlcmFnZV9pbmNsdWRlLCBhcmdzLmNvdmVyYWdlX29taXQpCi0KLSAgICAgICAgICAgICAgICAgICAgIyBVc2UgZGVmYXVsdCBzaXRlLlVTRVJfU0lURSBhbmQgd3JpdGUgY29ycmVzcG9uZGluZyBjb25maWcgZmlsZQotICAgICAgICAgICAgICAgICAgICBzaXRlLkVOQUJMRV9VU0VSX1NJVEUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaXRlLlVTRVJfU0lURSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhzaXRlLlVTRVJfU0lURSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3ZlcmFnZXB0aCA9IG9zLnBhdGguam9pbihzaXRlLlVTRVJfU0lURSwgImNvdmVyYWdlLnB0aCIpCi0gICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmNvdmVyYWdlcHRoLCAndycpIGFzIGNwczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNwcy53cml0ZSgnaW1wb3J0IHN5cyxzaXRlOyBzeXMucGF0aC5leHRlbmQoc2l0ZS5nZXRzaXRlcGFja2FnZXMoKSk7IGltcG9ydCBjb3ZlcmFnZTsgY292ZXJhZ2UucHJvY2Vzc19zdGFydHVwKCk7JykKLQotICAgICAgICBkZWYgc3RvcFRlc3RSdW4oc2VsZik6Ci0gICAgICAgICAgICAiIiIgUmVwb3J0IGNvdmVyYWdlIGRhdGEgYWZ0ZXIgdGhlIHRlc3RjYXNlcyBhcmUgcnVuICIiIgotCi0gICAgICAgICAgICBpZiBhcmdzLmNvdmVyYWdlIG9yIGFyZ3MuY292ZXJhZ2Vfc291cmNlIG9yIGFyZ3MuY292ZXJhZ2VfaW5jbHVkZSBvciBhcmdzLmNvdmVyYWdlX29taXQ6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb3ZlcmFnZV9pbnN0YWxsZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWydDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJ10pIGFzIGNjZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJDb3ZlcmFnZSBjb25maWd1cmF0aW9uIGZpbGUgKCVzKSIgJSBvcy5lbnZpcm9uLmdldCgnQ09WRVJBR0VfUFJPQ0VTU19TVEFSVCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIj09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiXG4lcyIgJSAiIi5qb2luKGNjZi5yZWFkbGluZXMoKSkpCi0KLSAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvdmVyYWdlIFJlcG9ydCIpCi0gICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCI9PT09PT09PT09PT09PT0iKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZV9yZXBvcnQoKQotICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgdGhlIHB0aCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYuY292ZXJhZ2VwdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiRXhwZWN0ZWQgdGVtcG9yYWwgZmlsZSBmcm9tIGNvdmVyYWdlIGlzIG1pc3NpbmcsIGlnbm9yaW5nIHJlbW92YWwuIikKLQotICAgIHJldHVybiBTdGFtcGVkUmVzdWx0Ci0KLWRlZiBjbGVhblJlc3VsdHNEaXIocmVwbyk6Ci0gICAgIiIiIFJlbW92ZSByZXN1bHQgZmlsZXMgZnJvbSBkaXJlY3RvcnkgIiIiCi0KLSAgICB4bWxfZmlsZXMgPSBbXQotICAgIGRpcmVjdG9yeSA9IHJlcG8ud29ya2luZ190cmVlX2RpcgotICAgIGZvciBmIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIGYpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBwYXRoLmVuZHN3aXRoKCcueG1sJyk6Ci0gICAgICAgICAgICB4bWxfZmlsZXMuYXBwZW5kKGYpCi0gICAgcmVwby5pbmRleC5yZW1vdmUoeG1sX2ZpbGVzLCB3b3JraW5nX3RyZWU9VHJ1ZSkKLQotZGVmIGNvcHlSZXN1bHRGaWxlcyhzcmMsIGRzdCwgcmVwbyk6Ci0gICAgIiIiIENvcHkgcmVzdWx0IGZpbGVzIGZyb20gc3JjIHRvIGRzdCByZW1vdmluZyB0aGUgdGltZSBzdGFtcC4gIiIiCi0KLSAgICBpbXBvcnQgc2h1dGlsCi0KLSAgICByZV90aW1lID0gcmUuY29tcGlsZSgiLVswLTldKyIpCi0gICAgZmlsZV9saXN0ID0gW10KLQotICAgIGZvciByb290LCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6Ci0gICAgICAgIHRtcF9kaXIgPSByb290LnJlcGxhY2Uoc3JjLCAnJykubHN0cmlwKCcvJykKLSAgICAgICAgZm9yIHMgaW4gc3ViZGlyczoKLSAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkc3QsIHRtcF9kaXIsIHMpKQotICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9zLnBhdGguam9pbihkc3QsIHRtcF9kaXIsIHJlX3RpbWUuc3ViKCIiLCBmKSkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZpbGVfbGlzdC5hcHBlbmQoZmlsZV9uYW1lKQotICAgIHJlcG8uaW5kZXguYWRkKGZpbGVfbGlzdCkKLQotY2xhc3MgVGVzdFJ1bm5lcihfVGVzdFJ1bm5lcik6Ci0gICAgIiIiVGVzdCBydW5uZXIgY2xhc3MgYXdhcmUgb2YgZXhwb3J0aW5nIHRlc3RzLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleHBvcnRkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIGxvZ19wcmVmaXgpCi0gICAgICAgICAgICBrd2FyZ3N4ID0gZGljdCgqKmt3YXJncykKLSAgICAgICAgICAgICMgYXJndW1lbnQgc3BlY2lmaWMgdG8gWE1MVGVzdFJ1bm5lciwgaWYgYWRkaW5nIGEgbmV3IHJ1bm5lciB0aGVuCi0gICAgICAgICAgICAjIGFsc28gYWRkIGxvZ2ljIHRvIHVzZSBvdGhlciBydW5uZXIncyBhcmdzLgotICAgICAgICAgICAga3dhcmdzeFsnb3V0cHV0J10gPSBleHBvcnRkaXIKLSAgICAgICAgICAgIGt3YXJnc3hbJ2Rlc2NyaXB0aW9ucyddID0gRmFsc2UKLSAgICAgICAgICAgICMgZG9uZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGVsbGluZyB0aGUgcnVubmVyIHdoZXJlIHRvIGV4cG9ydAotICAgICAgICAgICAgc3VwZXIoVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzeCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIGxvZy5pbmZvKCJ0ZXN0IHJ1bm5lciBpbml0J2VkIGxpa2UgdW5pdHRlc3QiKQotICAgICAgICAgICAgc3VwZXIoVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0cnk6CiAgICAgICAgIHJldCA9IG1haW4oKQogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHJldCA9IDEKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBmaW5hbGx5OgotICAgICAgICByZW1vdmVfaW5jbHVkZSgpCi0gICAgICAgIHJlbW92ZV9pbmNfZmlsZXMoKQogICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKaW5kZXggZWY0OTU1MS4uNTVkNzNjYSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKQEAgLTEzMywxMyArMTMzLDYgQEAKICMgICAgdW5zZXQgU0hPV1lQRE9DCiBmaQogCi1jYXQgPDxFT00KLQotIyMjIFNoZWxsIGVudmlyb25tZW50IHNldCB1cCBmb3IgYnVpbGRzLiAjIyMKLQotWW91IGNhbiBub3cgcnVuICdiaXRiYWtlIDx0YXJnZXQ+JwotCi1FT00KIGlmIFsgLXogIiRPRUNPUkVOT1RFU0NPTkYiIF07IHRoZW4KICAgICBPRUNPUkVOT1RFU0NPTkY9IiRPRVJPT1QvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0IgogZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS10ZXN0CmluZGV4IGExZDI4MmQuLjM0ZDkwMTIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtdGVzdApAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgbG9nZ2luZwogCiBzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCkBAIC0yNSwzNSArMjQsMTAgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBwYXNzCiAKLWZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHRFeGVjdXRvcgorZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBsb2FkX3Rlc3RfY29tcG9uZW50cworZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuCiAKLWxvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXRlc3QnKQotCi1kZWYgX2xvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlcik6Ci0gICAgY29tcG9uZW50cyA9IHt9Ci0KLSAgICBmb3IgcGF0aCBpbiBzeXMucGF0aDoKLSAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ29lcWEnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhiYXNlX2RpcikgYW5kIG9zLnBhdGguaXNkaXIoYmFzZV9kaXIpOgotICAgICAgICAgICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihiYXNlX2Rpcik6Ci0gICAgICAgICAgICAgICAgY29tcF9uYW1lID0gZmlsZQotICAgICAgICAgICAgICAgIGNvbXBfY29udGV4dCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSwgJ2NvbnRleHQucHknKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbXBfY29udGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBfcGx1Z2luID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ29lcWEuJXMuJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wX25hbWUsICdjb250ZXh0JykpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNvbXBfcGx1Z2luLl9leGVjdXRvcl9jbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0VUZXN0Q29udGV4dEV4ZWN1dG9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcywgX2V4ZWN1dG9yX2NsYXNzICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc24ndCBkZXJpdmVkIGZyb20gT0VUZXN0Q29udGV4dEV4ZWN1dG9yLiJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tjb21wX25hbWVdID0gY29tcF9wbHVnaW4uX2V4ZWN1dG9yX2NsYXNzKCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcyBkb24ndCBoYXZlICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfZXhlY3V0b3JfY2xhc3MgZGVmaW5lZC4iICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKLQotICAgIHJldHVybiBjb21wb25lbnRzCitsb2dnZXIgPSBzY3JpcHR1dGlscy5sb2dnZXJfY3JlYXRlKCdvZS10ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQpCiAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249Ik9wZW5FbWJlZGRlZCB0ZXN0IHRvb2wiLApAQCAtNzMsNyArNDcsNyBAQAogICAgIGVsaWYgZ2xvYmFsX2FyZ3MucXVpZXQ6CiAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQogCi0gICAgY29tcG9uZW50cyA9IF9sb2FkX3Rlc3RfY29tcG9uZW50cyhsb2dnZXIpCisgICAgY29tcG9uZW50cyA9IGxvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlciwgJ29lLXRlc3QnKQogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhkZXN0PSJzdWJwYXJzZXJfbmFtZSIsIHRpdGxlPSdzdWJjb21tYW5kcycsIG1ldGF2YXI9JzxzdWJjb21tYW5kPicpCiAgICAgc3VicGFyc2Vycy5hZGRfc3VicGFyc2VyX2dyb3VwKCdjb21wb25lbnRzJywgJ1Rlc3QgY29tcG9uZW50cycpCkBAIC05Miw2ICs2Niw4IEBACiAgICAgICAgIHJldCA9IGVyci5jb2RlCiAgICAgZXhjZXB0IGFyZ3BhcnNlX29lLkFyZ3VtZW50VXNhZ2VFcnJvciBhcyBhZToKICAgICAgICAgcGFyc2VyLmVycm9yX3N1YmNvbW1hbmQoYWUubWVzc2FnZSwgYWUuc3ViY29tbWFuZCkKKyAgICBleGNlcHQgT0VRQVByZVJ1biBhcyBwcjoKKyAgICAgICAgcmV0ID0gMQogCiAgICAgcmV0dXJuIHJldAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9yZWNpcGV0b29sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcmVjaXBldG9vbAppbmRleCAzNzY1ZWM3Li4zYTNjOWI3IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9yZWNpcGV0b29sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3JlY2lwZXRvb2wKQEAgLTM2LDggKzM2LDggQEAKICAgICBpbXBvcnQgYmIudGluZm9pbAogICAgIGltcG9ydCBsb2dnaW5nCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKQotICAgIHRpbmZvaWwucHJlcGFyZShub3QgcGFyc2VyZWNpcGVzKQogICAgIHRpbmZvaWwubG9nZ2VyLnNldExldmVsKGxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgIHRpbmZvaWwucHJlcGFyZShub3QgcGFyc2VyZWNpcGVzKQogICAgIHJldHVybiB0aW5mb2lsCiAKIGRlZiBtYWluKCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCA5YjZkMzMwLi4wZWQxZWVjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTI4LDE0ICsyOCwxOCBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBjb25maWdwYXJzZXIKIAotY2xhc3MgT0VQYXRoRXJyb3IoRXhjZXB0aW9uKToKK2NsYXNzIFJ1blFlbXVFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkN1c3RvbSBleGNlcHRpb24gdG8gcmFpc2Ugb24ga25vd24gZXJyb3JzLiIiIgorICAgIHBhc3MKKworY2xhc3MgT0VQYXRoRXJyb3IoUnVuUWVtdUVycm9yKToKICAgICAiIiJDdXN0b20gRXhjZXB0aW9uIHRvIGdpdmUgYmV0dGVyIGd1aWRhbmNlIG9uIG1pc3NpbmcgYmluYXJpZXMiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYubWVzc2FnZSA9ICJJbiBvcmRlciBmb3IgdGhpcyBzY3JpcHQgdG8gZHluYW1pY2FsbHkgaW5mZXIgcGF0aHNcbiBcCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oIkluIG9yZGVyIGZvciB0aGlzIHNjcmlwdCB0byBkeW5hbWljYWxseSBpbmZlciBwYXRoc1xuIFwKIGtlcm5lbHMgb3IgZmlsZXN5c3RlbSBpbWFnZXMsIHlvdSBlaXRoZXIgbmVlZCBiaXRiYWtlIGluIHlvdXIgUEFUSFxuIFwKIG9yIHRvIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiBiZWZvcmUgcnVubmluZyB0aGlzIHNjcmlwdC5cblxuIFwKIER5bmFtaWMgcGF0aCBpbmZlcmVuY2UgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyBhICoucWVtdWJvb3QuY29uZiB0b1xuIFwKLXJ1bnFlbXUsIGkuZS4gYHJ1bnFlbXUgL3BhdGgvdG8vbXktaW1hZ2UtbmFtZS5xZW11Ym9vdC5jb25mYFxuXG4gJXMiICUgbWVzc2FnZQorcnVucWVtdSwgaS5lLiBgcnVucWVtdSAvcGF0aC90by9teS1pbWFnZS1uYW1lLnFlbXVib290LmNvbmZgXG5cbiAlcyIgJSBtZXNzYWdlKQogCiAKIGRlZiBjcmVhdGVfbG9nZ2VyKCk6CkBAIC00NCw3ICs0OCw3IEBACiAKICAgICAjIGNyZWF0ZSBjb25zb2xlIGhhbmRsZXIgYW5kIHNldCBsZXZlbCB0byBkZWJ1ZwogICAgIGNoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBjaC5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgY2guc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKIAogICAgICMgY3JlYXRlIGZvcm1hdHRlcgogICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKG5hbWUpcyAtICUobGV2ZWxuYW1lKXMgLSAlKG1lc3NhZ2UpcycpCkBAIC04MSw2ICs4NSw4IEBACiAgIHFlbXVwYXJhbXM9PHh5ej4gLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKICAgYm9vdHBhcmFtcz08eHl6PiAtIHNwZWNpZnkgY3VzdG9tIGtlcm5lbCBwYXJhbWV0ZXJzIGR1cmluZyBib290CiAgIGhlbHAsIC1oLCAtLWhlbHA6IHByaW50IHRoaXMgdGV4dAorICAtZCwgLS1kZWJ1ZzogRW5hYmxlIGRlYnVnIG91dHB1dAorICAtcSwgLS1xdWl0ZTogSGlkZSBtb3N0IG91dHB1dCBleGNlcHQgZXJyb3IgbWVzc2FnZXMKIAogRXhhbXBsZXM6CiAgIHJ1bnFlbXUKQEAgLTkwLDI1ICs5NiwyNSBAQAogICBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1zYXRvIGV4dDQKICAgcnVucWVtdSBxZW11eDg2LTY0IHdpYy1pbWFnZS1taW5pbWFsIHdpYwogICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAotICBydW5xZW11IHFlbXV4ODYgaXNvL2hkZGltZy92bWRrL3Fjb3cyL3ZkaS9yYW1mcy9jcGlvLmd6Li4uCisgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KICAgcnVucWVtdSBxZW11eDg2IHFlbXVwYXJhbXM9Ii1tIDI1NiIKICAgcnVucWVtdSBxZW11eDg2IGJvb3RwYXJhbXM9InBzcGxhc2g9ZmFsc2UiCi0gIHJ1bnFlbXUgcGF0aC90by88aW1hZ2U+LTxtYWNoaW5lPi52bWRrCiAgIHJ1bnFlbXUgcGF0aC90by88aW1hZ2U+LTxtYWNoaW5lPi53aWMKKyAgcnVucWVtdSBwYXRoL3RvLzxpbWFnZT4tPG1hY2hpbmU+LndpYy52bWRrCiAiIiIpCiAKIGRlZiBjaGVja190dW4oKToKICAgICAiIiJDaGVjayAvZGV2L25ldC90dW4iIiIKICAgICBkZXZfdHVuID0gJy9kZXYvbmV0L3R1bicKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGV2X3R1bik6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVFVOIGNvbnRyb2wgZGV2aWNlICVzIGlzIHVuYXZhaWxhYmxlOyB5b3UgbWF5IG5lZWQgdG8gZW5hYmxlIFRVTiAoZS5nLiBzdWRvIG1vZHByb2JlIHR1bikiICUgZGV2X3R1bikKKyAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJUVU4gY29udHJvbCBkZXZpY2UgJXMgaXMgdW5hdmFpbGFibGU7IHlvdSBtYXkgbmVlZCB0byBlbmFibGUgVFVOIChlLmcuIHN1ZG8gbW9kcHJvYmUgdHVuKSIgJSBkZXZfdHVuKQogCiAgICAgaWYgbm90IG9zLmFjY2VzcyhkZXZfdHVuLCBvcy5XX09LKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUVU4gY29udHJvbCBkZXZpY2UgJXMgaXMgbm90IHdyaXRhYmxlLCBwbGVhc2UgZml4IChlLmcuIHN1ZG8gY2htb2QgNjY2ICVzKSIgJSAoZGV2X3R1biwgZGV2X3R1bikpCisgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVFVOIGNvbnRyb2wgZGV2aWNlICVzIGlzIG5vdCB3cml0YWJsZSwgcGxlYXNlIGZpeCAoZS5nLiBzdWRvIGNobW9kIDY2NiAlcykiICUgKGRldl90dW4sIGRldl90dW4pKQogCiBkZWYgY2hlY2tfbGliZ2wocWVtdV9iaW4pOgogICAgIGNtZCA9ICdsZGQgJXMnICUgcWVtdV9iaW4KLSAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCisgICAgbG9nZ2VyLmRlYnVnKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKICAgICBuZWVkX2dsID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCiAgICAgaWYgcmUuc2VhcmNoKCdsaWJHTFUnLCBuZWVkX2dsKToKICAgICAgICAgIyBXZSBjYW4ndCBydW4gd2l0aG91dCBhIGxpYkdMLnNvCkBAIC0xMzcsNyArMTQzLDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IG5lZWQgbGliR0wuc28gYW5kIGxpYkdMVS5zbyB0byBleGlzdCBpbiB5b3VyIGxpYnJhcnkgcGF0aCB0byBydW4gdGhlIFFFTVUgZW11bGF0b3IuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVWJ1bnR1IHBhY2thZ2UgbmFtZXMgYXJlOiBsaWJnbDEtbWVzYS1kZXYgYW5kIGxpYmdsdTEtbWVzYS1kZXYuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmVkb3JhIHBhY2thZ2UgbmFtZXMgYXJlOiBtZXNhLWxpYkdMLWRldmVsIG1lc2EtbGliR0xVLWRldmVsLiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIHJlcXVpcmVzIGxpYkdMVSwgYnV0IG5vdCBmb3VuZCcgJSBxZW11X2JpbikKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcignJXMgcmVxdWlyZXMgbGliR0xVLCBidXQgbm90IGZvdW5kJyAlIHFlbXVfYmluKQogCiBkZWYgZ2V0X2ZpcnN0X2ZpbGUoY21kcyk6CiAgICAgIiIiUmV0dXJuIGZpcnN0IGZpbGUgZm91bmQgaW4gd2lsZGNhcmQgY21kcyIiIgpAQCAtMjEyLDggKzIxOCwxMCBAQAogICAgICAgICBzZWxmLmxvY2tfZGVzY3JpcHRvciA9ICcnCiAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gJycKICAgICAgICAgc2VsZi5zbmFwc2hvdCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZnN0eXBlcyA9ICgnZXh0MicsICdleHQzJywgJ2V4dDQnLCAnamZmczInLCAnbmZzJywgJ2J0cmZzJywgJ2NwaW8uZ3onLCAnY3BpbycsICdyYW1mcycpCi0gICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2hkZGRpcmVjdCcsICd3aWMnLCAndm1kaycsICdxY293MicsICd2ZGknLCAnaXNvJykKKyAgICAgICAgc2VsZi5mc3R5cGVzID0gKCdleHQyJywgJ2V4dDMnLCAnZXh0NCcsICdqZmZzMicsICduZnMnLCAnYnRyZnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NwaW8uZ3onLCAnY3BpbycsICdyYW1mcycsICd0YXIuYnoyJywgJ3Rhci5neicpCisgICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2hkZGRpcmVjdCcsICd3aWMnLCAnd2ljLnZtZGsnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy5xY293MicsICd3aWMudmRpJywgJ2lzbycpCiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSAiLWRldmljZSBlMTAwMCxuZXRkZXY9bmV0MCxtYWM9QE1BQ0AiCiAgICAgICAgICMgVXNlIGRpZmZlcmVudCBtYWMgc2VjdGlvbiBmb3IgdGFwIGFuZCBzbGlycCB0byBhdm9pZAogICAgICAgICAjIGNvbmZsaWN0cywgZS5nLiwgd2hlbiBvbmUgaXMgcnVubmluZyB3aXRoIHRhcCwgdGhlIG90aGVyIGlzCkBAIC0yMjQsMTMgKzIzMiwxNyBAQAogICAgICAgICBzZWxmLm1hY190YXAgPSAiNTI6NTQ6MDA6MTI6MzQ6IgogICAgICAgICBzZWxmLm1hY19zbGlycCA9ICI1Mjo1NDowMDoxMjozNToiCiAKLSAgICBkZWYgYWNxdWlyZV9sb2NrKHNlbGYpOgotICAgICAgICBsb2dnZXIuaW5mbygiQWNxdWlyaW5nIGxvY2tmaWxlICVzLi4uIiAlIHNlbGYubG9jaykKKyAgICBkZWYgYWNxdWlyZV9sb2NrKHNlbGYsIGVycm9yPVRydWUpOgorICAgICAgICBsb2dnZXIuZGVidWcoIkFjcXVpcmluZyBsb2NrZmlsZSAlcy4uLiIgJSBzZWxmLmxvY2spCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubG9ja19kZXNjcmlwdG9yID0gb3BlbihzZWxmLmxvY2ssICd3JykKICAgICAgICAgICAgIGZjbnRsLmZsb2NrKHNlbGYubG9ja19kZXNjcmlwdG9yLCBmY250bC5MT0NLX0VYfGZjbnRsLkxPQ0tfTkIpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJBY3F1aXJpbmcgbG9ja2ZpbGUgJXMgZmFpbGVkOiAlcyIgJSAoc2VsZi5sb2NrLCBlKSkKKyAgICAgICAgICAgIG1zZyA9ICJBY3F1aXJpbmcgbG9ja2ZpbGUgJXMgZmFpbGVkOiAlcyIgJSAoc2VsZi5sb2NrLCBlKQorICAgICAgICAgICAgaWYgZXJyb3I6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKG1zZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8obXNnKQogICAgICAgICAgICAgaWYgc2VsZi5sb2NrX2Rlc2NyaXB0b3I6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2NrX2Rlc2NyaXB0b3IuY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNTUsMTAgKzI2NywxMCBAQAogICAgIGRlZiBpc19kZXBsb3lfZGlyX2ltYWdlKHNlbGYsIHApOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHApOgogICAgICAgICAgICAgaWYgbm90IHJlLnNlYXJjaCgnLnFlbXVib290LmNvbmYkJywgJ1xuJy5qb2luKG9zLmxpc3RkaXIocCkpLCByZS5NKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2FuJ3QgZmluZCByZXF1aXJlZCAqLnFlbXVib290LmNvbmYgaW4gJXMiICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNhbid0IGZpbmQgcmVxdWlyZWQgKi5xZW11Ym9vdC5jb25mIGluICVzIiAlIHApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiBub3QgYW55KG1hcChsYW1iZGEgbmFtZTogJy1pbWFnZS0nIGluIG5hbWUsIG9zLmxpc3RkaXIocCkpKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2FuJ3QgZmluZCAqLWltYWdlLSogaW4gJXMiICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNhbid0IGZpbmQgKi1pbWFnZS0qIGluICVzIiAlIHApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbHNlOgpAQCAtMjcxLDE1ICsyODMsMTcgQEAKICAgICAgICAgaWYgbm90IHNlbGYuZnN0eXBlIG9yIHNlbGYuZnN0eXBlID09IGZzdDoKICAgICAgICAgICAgIGlmIGZzdCA9PSAncmFtZnMnOgogICAgICAgICAgICAgICAgIGZzdCA9ICdjcGlvLmd6JworICAgICAgICAgICAgaWYgZnN0IGluICgndGFyLmJ6MicsICd0YXIuZ3onKToKKyAgICAgICAgICAgICAgICBmc3QgPSAnbmZzJwogICAgICAgICAgICAgc2VsZi5mc3R5cGUgPSBmc3QKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ29uZmxpY3Rpbmc6IEZTVFlQRSAlcyBhbmQgJXMiICUgKHNlbGYuZnN0eXBlLCBmc3QpKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJDb25mbGljdGluZzogRlNUWVBFICVzIGFuZCAlcyIgJSAoc2VsZi5mc3R5cGUsIGZzdCkpCiAKICAgICBkZWYgc2V0X21hY2hpbmVfZGVwbG95X2RpcihzZWxmLCBtYWNoaW5lLCBkZXBsb3lfZGlyX2ltYWdlKToKICAgICAgICAgIiIiU2V0IE1BQ0hJTkUgYW5kIERFUExPWV9ESVJfSU1BR0UiIiIKLSAgICAgICAgbG9nZ2VyLmluZm8oJ01BQ0hJTkU6ICVzJyAlIG1hY2hpbmUpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnTUFDSElORTogJXMnICUgbWFjaGluZSkKICAgICAgICAgc2VsZi5zZXQoIk1BQ0hJTkUiLCBtYWNoaW5lKQotICAgICAgICBsb2dnZXIuaW5mbygnREVQTE9ZX0RJUl9JTUFHRTogJXMnICUgZGVwbG95X2Rpcl9pbWFnZSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCdERVBMT1lfRElSX0lNQUdFOiAlcycgJSBkZXBsb3lfZGlyX2ltYWdlKQogICAgICAgICBzZWxmLnNldCgiREVQTE9ZX0RJUl9JTUFHRSIsIGRlcGxveV9kaXJfaW1hZ2UpCiAKICAgICBkZWYgY2hlY2tfYXJnX25mcyhzZWxmLCBwKToKQEAgLTMyOSwzMCArMzQzLDMwIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIGRvZXNuJ3QgZXhpc3QiICUgcWIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2FuJ3QgZmluZCBGU1RZUEUgZnJvbTogJXMiICUgcCkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIkNhbid0IGZpbmQgRlNUWVBFIGZyb206ICVzIiAlIHApCiAKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHApIG9yIHJlLnNlYXJjaCgnOicsIHApIGFuZCByZS5zZWFyY2goJy8nLCBwKToKICAgICAgICAgICAgIGlmIHNlbGYuaXNfZGVwbG95X2Rpcl9pbWFnZShwKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnREVQTE9ZX0RJUl9JTUFHRTogJXMnICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0RFUExPWV9ESVJfSU1BR0U6ICVzJyAlIHApCiAgICAgICAgICAgICAgICAgc2VsZi5zZXQoIkRFUExPWV9ESVJfSU1BR0UiLCBwKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQXNzdW1pbmcgJXMgaXMgYW4gbmZzIHJvb3RmcyIgJSBwKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiQXNzdW1pbmcgJXMgaXMgYW4gbmZzIHJvb3RmcyIgJSBwKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfYXJnX25mcyhwKQogICAgICAgICBlbGlmIG9zLnBhdGguYmFzZW5hbWUocCkuc3RhcnRzd2l0aCgnb3ZtZicpOgogICAgICAgICAgICAgc2VsZi5vdm1mX2Jpb3MuYXBwZW5kKHApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlVua25vd24gcGF0aCBhcmcgJXMiICUgcCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVW5rbm93biBwYXRoIGFyZyAlcyIgJSBwKQogCiAgICAgZGVmIGNoZWNrX2FyZ19tYWNoaW5lKHNlbGYsIGFyZyk6CiAgICAgICAgICIiIkNoZWNrIHdoZXRoZXIgaXQgaXMgYSBtYWNoaW5lIiIiCiAgICAgICAgIGlmIHNlbGYuZ2V0KCdNQUNISU5FJykgPT0gYXJnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgc2VsZi5nZXQoJ01BQ0hJTkUnKSBhbmQgc2VsZi5nZXQoJ01BQ0hJTkUnKSAhPSBhcmc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1heWJlIGNvbmZsaWN0ZWQgTUFDSElORTogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdNQUNISU5FJyksIGFyZykpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIk1heWJlIGNvbmZsaWN0ZWQgTUFDSElORTogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdNQUNISU5FJyksIGFyZykpCiAgICAgICAgIGVsaWYgcmUuc2VhcmNoKCcvJywgYXJnKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5rbm93biBhcmc6ICVzIiAlIGFyZykKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVW5rbm93biBhcmc6ICVzIiAlIGFyZykKIAotICAgICAgICBsb2dnZXIuaW5mbygnQXNzdW1pbmcgTUFDSElORSA9ICVzJyAlIGFyZykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCdBc3N1bWluZyBNQUNISU5FID0gJXMnICUgYXJnKQogCiAgICAgICAgICMgaWYgd2UncmUgcnVubmluZyB1bmRlciB0ZXN0aW1hZ2UsIG9yIHNpbWlsYXJseSBhcyBhIGNoaWxkCiAgICAgICAgICMgb2YgYW4gZXhpc3RpbmcgYml0YmFrZSBpbnZvY2F0aW9uLCB3ZSBjYW4ndCBpbnZva2UgYml0YmFrZQpAQCAtMzgxLDcgKzM5NSw3IEBACiAgICAgICAgIGlmIHM6CiAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gcy5ncm91cCgxKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJiaXRiYWtlIC1lICVzIiAlIHNlbGYuYml0YmFrZV9lKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJiaXRiYWtlIC1lICVzIiAlIHNlbGYuYml0YmFrZV9lKQogICAgICAgICBpZiBzZWxmLmlzX2RlcGxveV9kaXJfaW1hZ2UoZGVwbG95X2Rpcl9pbWFnZSk6CiAgICAgICAgICAgICBzZWxmLnNldF9tYWNoaW5lX2RlcGxveV9kaXIoYXJnLCBkZXBsb3lfZGlyX2ltYWdlKQogICAgICAgICBlbHNlOgpAQCAtMzg5LDYgKzQwMywxNiBAQAogICAgICAgICAgICAgc2VsZi5zZXQoIk1BQ0hJTkUiLCBhcmcpCiAKICAgICBkZWYgY2hlY2tfYXJncyhzZWxmKToKKyAgICAgICAgZm9yIGRlYnVnIGluICgiLWQiLCAiLS1kZWJ1ZyIpOgorICAgICAgICAgICAgaWYgZGVidWcgaW4gc3lzLmFyZ3Y6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgICAgICAgICAgICAgc3lzLmFyZ3YucmVtb3ZlKGRlYnVnKQorCisgICAgICAgIGZvciBxdWlldCBpbiAoIi1xIiwgIi0tcXVpZXQiKToKKyAgICAgICAgICAgIGlmIHF1aWV0IGluIHN5cy5hcmd2OgorICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQorICAgICAgICAgICAgICAgIHN5cy5hcmd2LnJlbW92ZShxdWlldCkKKwogICAgICAgICB1bmtub3duX2FyZyA9ICIiCiAgICAgICAgIGZvciBhcmcgaW4gc3lzLmFyZ3ZbMTpdOgogICAgICAgICAgICAgaWYgYXJnIGluIHNlbGYuZnN0eXBlcyArIHNlbGYudm10eXBlczoKQEAgLTQzNSw3ICs0NTksOSBAQAogICAgICAgICAgICAgICAgIGlmIChub3QgdW5rbm93bl9hcmcpIG9yIHVua25vd25fYXJnID09IGFyZzoKICAgICAgICAgICAgICAgICAgICAgdW5rbm93bl9hcmcgPSBhcmcKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGhhbmRsZSB0d28gdW5rbm93biBhcmdzOiAlcyAlcyIgJSAodW5rbm93bl9hcmcsIGFyZykpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgaGFuZGxlIHR3byB1bmtub3duIGFyZ3M6ICVzICVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJ5ICdydW5xZW11IGhlbHAnIG9uIGhvdyB0byB1c2UgaXQiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmtub3duX2FyZywgYXJnKSkKICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgaXQgaXMgYSB2YWxpZCBtYWNoaW5lCiAgICAgICAgIGlmIHVua25vd25fYXJnOgogICAgICAgICAgICAgaWYgc2VsZi5nZXQoJ01BQ0hJTkUnKSA9PSB1bmtub3duX2FyZzoKQEAgLTQ0OCw3ICs0NzQsNyBAQAogCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2FyZ19tYWNoaW5lKHVua25vd25fYXJnKQogCi0gICAgICAgIGlmIG5vdCBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpOgorICAgICAgICBpZiBub3QgKHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykgb3Igc2VsZi5xYmNvbmZsb2FkKToKICAgICAgICAgICAgIHNlbGYubG9hZF9iaXRiYWtlX2VudigpCiAgICAgICAgICAgICBzID0gcmUuc2VhcmNoKCdeREVQTE9ZX0RJUl9JTUFHRT0iKC4qKSInLCBzZWxmLmJpdGJha2VfZSwgcmUuTSkKICAgICAgICAgICAgIGlmIHM6CkBAIC00NjEsNyArNDg3LDcgQEAKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQ1BVX0tWTScpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJRQl9DUFVfS1ZNIGlzIE5VTEwsIHRoaXMgYm9hcmQgZG9lc24ndCBzdXBwb3J0IGt2bSIpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIlFCX0NQVV9LVk0gaXMgTlVMTCwgdGhpcyBib2FyZCBkb2Vzbid0IHN1cHBvcnQga3ZtIikKIAogICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnICVzICVzJyAlIChzZWxmLmdldCgnUUJfTUFDSElORScpLCBzZWxmLmdldCgnUUJfQ1BVX0tWTScpKQogICAgICAgICB5b2N0b19rdm1fd2lraSA9ICJodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0hvd190b19lbmFibGVfS1ZNX2Zvcl9Qb2t5X3FlbXUiCkBAIC00NzMsMTIgKzQ5OSwxMiBAQAogICAgICAgICBpZiBub3Qga3ZtX2NhcDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGFyZSB0cnlpbmcgdG8gZW5hYmxlIEtWTSBvbiBhIGNwdSB3aXRob3V0IFZUIHN1cHBvcnQuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiUmVtb3ZlIGt2bSBmcm9tIHRoZSBjb21tYW5kLWxpbmUsIG9yIHJlZmVyOiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRldl9rdm0pOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNaXNzaW5nIEtWTSBkZXZpY2UuIEhhdmUgeW91IGluc2VydGVkIGt2bSBtb2R1bGVzPyIpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZvciBmdXJ0aGVyIGhlbHAgc2VlOiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgb3MuYWNjZXNzKGRldl9rdm0sIG9zLldfT0t8b3MuUl9PSyk6CiAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnIC1lbmFibGUta3ZtJwpAQCAtNDkwLDE4ICs1MTYsMTggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGhhdmUgbm8gcmVhZCBvciB3cml0ZSBwZXJtaXNzaW9uIG9uIC9kZXYva3ZtLiIpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlBsZWFzZSBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiB0aGlzIGZpbGUgYXMgZGVzY3JpYmVkIGF0OiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgc2VsZi52aG9zdF9lbmFibGVkOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRldl92aG9zdCk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNaXNzaW5nIHZpcnRpbyBuZXQgZGV2aWNlLiBIYXZlIHlvdSBpbnNlcnRlZCB2aG9zdC1uZXQgbW9kdWxlPyIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGb3IgZnVydGhlciBoZWxwIHNlZToiKQotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbih5b2N0b19wYXJhdmlydF9rdm1fd2lraSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fcGFyYXZpcnRfa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhkZXZfa3ZtLCBvcy5XX09LfG9zLlJfT0spOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGhhdmUgbm8gcmVhZCBvciB3cml0ZSBwZXJtaXNzaW9uIG9uIC9kZXYvdmhvc3QtbmV0LiIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJQbGVhc2UgY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgdGhpcyBmaWxlIGFzIGRlc2NyaWJlZCBhdDoiKQotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbih5b2N0b19rdm1fd2lraSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICBkZWYgY2hlY2tfZnN0eXBlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayBhbmQgc2V0dXAgRlNUWVBFIiIiCkBAIC01MTAsNyArNTM2LDcgQEAKICAgICAgICAgICAgIGlmIGZzdHlwZToKICAgICAgICAgICAgICAgICBzZWxmLmZzdHlwZSA9IGZzdHlwZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZTVFlQRSBpcyBOVUxMISIpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGU1RZUEUgaXMgTlVMTCEiKQogCiAgICAgZGVmIGNoZWNrX3Jvb3RmcyhzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCByb290ZnMiIiIKQEAgLTUyMiw3ICs1NDgsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYucm9vdGZzOgogICAgICAgICAgICAgICAgIHNlbGYucm9vdGZzID0gc2VsZi5nZXQoJ1JPT1RGUycpCiAgICAgICAgICAgICBlbGlmIHNlbGYuZ2V0KCdST09URlMnKSAhPSBzZWxmLnJvb3RmczoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1heWJlIGNvbmZsaWN0ZWQgUk9PVEZTOiAlcyB2cyAlcyIgJSAoc2VsZi5nZXQoJ1JPT1RGUycpLCBzZWxmLnJvb3RmcykpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJNYXliZSBjb25mbGljdGVkIFJPT1RGUzogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdST09URlMnKSwgc2VsZi5yb290ZnMpKQogCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MzgsMTAgKzU2NCwxMCBAQAogICAgICAgICAgICAgY21kcyA9IChjbWRfbmFtZSwgY21kX2xpbmspCiAgICAgICAgICAgICBzZWxmLnJvb3RmcyA9IGdldF9maXJzdF9maWxlKGNtZHMpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5yb290ZnM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCByb290ZnM6ICVzIG9yICVzIiAlIGNtZHMpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGYWlsZWQgdG8gZmluZCByb290ZnM6ICVzIG9yICVzIiAlIGNtZHMpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdGZzKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2FuJ3QgZmluZCByb290ZnM6ICVzIiAlIHNlbGYucm9vdGZzKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJDYW4ndCBmaW5kIHJvb3RmczogJXMiICUgc2VsZi5yb290ZnMpCiAKICAgICBkZWYgY2hlY2tfb3ZtZihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCBmdWxsIHBhdGggZm9yIE9WTUYgZmlybXdhcmUgYW5kIHZhcmlhYmxlIGZpbGUocykuIiIiCkBAIC01NTUsNyArNTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdm1mX2Jpb3NbaW5kZXhdID0gcGF0aAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgT1ZNRiBmaXJtd2FyZTogJXMiICUgb3ZtZikKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIkNhbid0IGZpbmQgT1ZNRiBmaXJtd2FyZTogJXMiICUgb3ZtZikKIAogICAgIGRlZiBjaGVja19rZXJuZWwoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGFuZCBzZXQga2VybmVsLCBkdGIiIiIKQEAgLTU3OCwxMCArNjA0LDEwIEBACiAgICAgICAgICAgICBjbWRzID0gKGtlcm5lbF9tYXRjaF9uYW1lLCBrZXJuZWxfbWF0Y2hfbGluaywga2VybmVsX3N0YXJ0c3dpdGgpCiAgICAgICAgICAgICBzZWxmLmtlcm5lbCA9IGdldF9maXJzdF9maWxlKGNtZHMpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5rZXJuZWw6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdLRVJORUwgbm90IGZvdW5kOiAlcywgJXMgb3IgJXMnICUgY21kcykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0tFUk5FTCBub3QgZm91bmQ6ICVzLCAlcyBvciAlcycgJSBjbWRzKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmtlcm5lbCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCiAKICAgICAgICAgZHRiID0gc2VsZi5nZXQoJ1FCX0RUQicpCiAgICAgICAgIGlmIGR0YjoKQEAgLTU5MSw3ICs2MTcsNyBAQAogICAgICAgICAgICAgY21kcyA9IChjbWRfbWF0Y2gsIGNtZF9zdGFydHN3aXRoLCBjbWRfd2lsZCkKICAgICAgICAgICAgIHNlbGYuZHRiID0gZ2V0X2ZpcnN0X2ZpbGUoY21kcykKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmR0Yik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdEVEIgbm90IGZvdW5kOiAlcywgJXMgb3IgJXMnICUgY21kcykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0RUQiBub3QgZm91bmQ6ICVzLCAlcyBvciAlcycgJSBjbWRzKQogCiAgICAgZGVmIGNoZWNrX2Jpb3NkaXIoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGN1c3RvbWJpb3NkaXIiIiIKQEAgLTYwNywxMSArNjMzLDExIEBACiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBpZiBiaW9zZGlyOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkFzc3VtaW5nIGJpb3NkaXIgaXM6ICVzIiAlIGJpb3NkaXIpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkFzc3VtaW5nIGJpb3NkaXIgaXM6ICVzIiAlIGJpb3NkaXIpCiAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnIC1MICVzJyAlIGJpb3NkaXIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ3VzdG9tIEJJT1MgZGlyZWN0b3J5IG5vdCBmb3VuZC4gVHJpZWQ6ICVzLCAlcywgYW5kICVzIiAlIChzZWxmLmN1c3RvbWJpb3NkaXIsIGJpb3NkaXJfbmF0aXZlLCBiaW9zZGlyX2hvc3QpKQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIGN1c3RvbWJpb3NkaXI6ICVzIiAlIHNlbGYuY3VzdG9tYmlvc2RpcikKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiSW52YWxpZCBjdXN0b21iaW9zZGlyOiAlcyIgJSBzZWxmLmN1c3RvbWJpb3NkaXIpCiAKICAgICBkZWYgY2hlY2tfbWVtKHNlbGYpOgogICAgICAgICBzID0gcmUuc2VhcmNoKCctbSArKFswLTldKyknLCBzZWxmLnFlbXVfb3B0X3NjcmlwdCkKQEAgLTYzOSw3ICs2NjUsNyBAQAogICAgICAgICAjIENoZWNrIGF1ZGlvCiAgICAgICAgIGlmIHNlbGYuYXVkaW9fZW5hYmxlZDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQVVESU9fRFJWJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJRQl9BVURJT19EUlYgaXMgTlVMTCwgdGhpcyBib2FyZCBkb2Vzbid0IHN1cHBvcnQgYXVkaW8iKQorICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiUUJfQVVESU9fRFJWIGlzIE5VTEwsIHRoaXMgYm9hcmQgZG9lc24ndCBzdXBwb3J0IGF1ZGlvIikKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQVVESU9fT1BUJyk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1FCX0FVRElPX09QVCBpcyBOVUxMLCB5b3UgbWF5IG5lZWQgZGVmaW5lIGl0IHRvIG1ha2UgYXVkaW8gd29yaycpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNjYyLDcgKzY4OCw3IEBACiAgICAgICAgICAgICBpZiBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpOgogICAgICAgICAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDYW4ndCBmaW5kIHFlbXVib290IGNvbmYgZmlsZSwgREVQTE9ZX0RJUl9JTUFHRSBpcyBOVUxMISIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkNhbid0IGZpbmQgcWVtdWJvb3QgY29uZiBmaWxlLCBERVBMT1lfRElSX0lNQUdFIGlzIE5VTEwhIikKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgaWYgc2VsZi5yb290ZnMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnJvb3Rmcyk6CkBAIC02NzQsOCArNzAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RmcywgbWFjaGluZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY21kID0gJ2xzIC10ICVzLyoucWVtdWJvb3QuY29uZicgJSAgZGVwbG95X2Rpcl9pbWFnZQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKLSAgICAgICAgICAgICAgICBxYnMgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMuLi4nICUgY21kKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcWJzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoZXJyKQogICAgICAgICAgICAgICAgIGlmIHFiczoKICAgICAgICAgICAgICAgICAgICAgZm9yIHFiIGluIHFicy5zcGxpdCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEb24ndCB1c2UgaW5pdHJhbWZzIHdoZW4gb3RoZXIgY2hvaWNlcyB1bmxlc3MgZnN0eXBlIGlzIHJhbWZzCkBAIC02OTQsMTQgKzcyMywxOCBAQAogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucWVtdWJvb3QpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCAlcyAod3JvbmcgaW1hZ2UgbmFtZSBvciBCU1AgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHVuZGVyIHFlbXU/KS4iICUgc2VsZi5xZW11Ym9vdCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiRmFpbGVkIHRvIGZpbmQgJXMgKHdyb25nIGltYWdlIG5hbWUgb3IgQlNQIGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB1bmRlciBxZW11PykuIiAlIHNlbGYucWVtdWJvb3QpCiAKLSAgICAgICAgbG9nZ2VyLmluZm8oJ0NPTkZGSUxFOiAlcycgJSBzZWxmLnFlbXVib290KQorICAgICAgICBsb2dnZXIuZGVidWcoJ0NPTkZGSUxFOiAlcycgJSBzZWxmLnFlbXVib290KQogCiAgICAgICAgIGNmID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgICAgIGNmLnJlYWQoc2VsZi5xZW11Ym9vdCkKICAgICAgICAgZm9yIGssIHYgaW4gY2YuaXRlbXMoJ2NvbmZpZ19ic3AnKToKICAgICAgICAgICAgIGtfdXBwZXIgPSBrLnVwcGVyKCkKKyAgICAgICAgICAgIGlmIHYuc3RhcnRzd2l0aCgiLi4vIik6CisgICAgICAgICAgICAgICAgdiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoc2VsZi5xZW11Ym9vdCkgKyAiLyIgKyB2KQorICAgICAgICAgICAgZWxpZiB2ID09ICIuIjoKKyAgICAgICAgICAgICAgICB2ID0gb3MucGF0aC5kaXJuYW1lKHNlbGYucWVtdWJvb3QpCiAgICAgICAgICAgICBzZWxmLnNldChrX3VwcGVyLCB2KQogCiAgICAgZGVmIHZhbGlkYXRlX3BhdGhzKHNlbGYpOgpAQCAtNzg5LDE2ICs4MjIsMTIgQEAKICAgICAgICAgICAgIGFsbF9pbnN0YW5jZXMuc29ydChrZXk9aW50KQogICAgICAgICAgICAgc2VsZi5uZnNfaW5zdGFuY2UgPSBpbnQoYWxsX2luc3RhbmNlcy5wb3AoKSkgKyAxCiAKLSAgICAgICAgbW91bnRkX3JwY3BvcnQgPSAyMTExMSArIHNlbGYubmZzX2luc3RhbmNlCi0gICAgICAgIG5mc2RfcnBjcG9ydCA9IDExMTExICsgc2VsZi5uZnNfaW5zdGFuY2UKICAgICAgICAgbmZzZF9wb3J0ID0gMzA0OSArIDIgKiBzZWxmLm5mc19pbnN0YW5jZQogICAgICAgICBtb3VudGRfcG9ydCA9IDMwNDggKyAyICogc2VsZi5uZnNfaW5zdGFuY2UKIAogICAgICAgICAjIEV4cG9ydCB2YXJzIGZvciBydW5xZW11LWV4cG9ydC1yb290ZnMKICAgICAgICAgZXhwb3J0X2RpY3QgPSB7CiAgICAgICAgICAgICAnTkZTX0lOU1RBTkNFJzogc2VsZi5uZnNfaW5zdGFuY2UsCi0gICAgICAgICAgICAnTU9VTlREX1JQQ1BPUlQnOiBtb3VudGRfcnBjcG9ydCwKLSAgICAgICAgICAgICdORlNEX1JQQ1BPUlQnOiBuZnNkX3JwY3BvcnQsCiAgICAgICAgICAgICAnTkZTRF9QT1JUJzogbmZzZF9wb3J0LAogICAgICAgICAgICAgJ01PVU5URF9QT1JUJzogbW91bnRkX3BvcnQsCiAgICAgICAgIH0KQEAgLTgwNiw3ICs4MzUsNyBAQAogICAgICAgICAgICAgIyBVc2UgJyVzJyBzaW5jZSB0aGV5IGFyZSBpbnRlZ2VycwogICAgICAgICAgICAgb3MucHV0ZW52KGssICclcycgJSB2KQogCi0gICAgICAgIHNlbGYudW5mc19vcHRzPSJuZnN2ZXJzPTMscG9ydD0lcyxtb3VudHByb2c9JXMsbmZzcHJvZz0lcyx1ZHAsbW91bnRwb3J0PSVzIiAlIChuZnNkX3BvcnQsIG1vdW50ZF9ycGNwb3J0LCBuZnNkX3JwY3BvcnQsIG1vdW50ZF9wb3J0KQorICAgICAgICBzZWxmLnVuZnNfb3B0cz0ibmZzdmVycz0zLHBvcnQ9JXMsdWRwLG1vdW50cG9ydD0lcyIgJSAobmZzZF9wb3J0LCBtb3VudGRfcG9ydCkKIAogICAgICAgICAjIEV4dHJhY3QgLnRhci5iejIgb3IgLnRhci5ieiBpZiBubyBuZnMgZGlyCiAgICAgICAgIGlmIG5vdCAoc2VsZi5yb290ZnMgYW5kIG9zLnBhdGguaXNkaXIoc2VsZi5yb290ZnMpKToKQEAgLTgyNCwxMiArODUzLDEyIEBACiAgICAgICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhzcmMyKToKICAgICAgICAgICAgICAgICAgICAgc3JjID0gc3JjMgogICAgICAgICAgICAgICAgIGlmIG5vdCBzcmM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gTkZTX0RJUiBpcyBzZXQsIGFuZCBjYW4ndCBmaW5kICVzIG9yICVzIHRvIGV4dHJhY3QiICUgKHNyYzEsIHNyYzIpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIk5vIE5GU19ESVIgaXMgc2V0LCBhbmQgY2FuJ3QgZmluZCAlcyBvciAlcyB0byBleHRyYWN0IiAlIChzcmMxLCBzcmMyKSkKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnTkZTX0RJUiBub3QgZm91bmQsIGV4dHJhY3RpbmcgJXMgdG8gJXMnICUgKHNyYywgZGVzdCkpCiAgICAgICAgICAgICAgICAgY21kID0gJ3J1bnFlbXUtZXh0cmFjdC1zZGsgJXMgJXMnICUgKHNyYywgZGVzdCkKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCiAgICAgICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gcnVuICVzJyAlIGNtZCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCdGYWlsZWQgdG8gcnVuICVzJyAlIGNtZCkKICAgICAgICAgICAgICAgICBzZWxmLmNsZWFuX25mc19kaXIgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5yb290ZnMgPSBkZXN0CiAKQEAgLTgzNyw3ICs4NjYsNyBAQAogICAgICAgICBjbWQgPSAncnVucWVtdS1leHBvcnQtcm9vdGZzIHN0YXJ0ICVzJyAlIHNlbGYucm9vdGZzCiAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJ1biAlcycgJSBjbWQpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0ZhaWxlZCB0byBydW4gJXMnICUgY21kKQogCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBUcnVlCiAKQEAgLTg0OSw3ICs4NzgsNyBAQAogICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSAnIGlwPWRoY3AnCiAgICAgICAgICMgUG9ydCBtYXBwaW5nCiAgICAgICAgIGhvc3Rmd2QgPSAiLGhvc3Rmd2Q9dGNwOjoyMjIyLToyMixob3N0ZndkPXRjcDo6MjMyMy06MjMiCi0gICAgICAgIHFiX3NsaXJwX29wdF9kZWZhdWx0ID0gIi1uZXRkZXYgdXNlcixpZD1uZXQwJXMiICUgaG9zdGZ3ZAorICAgICAgICBxYl9zbGlycF9vcHRfZGVmYXVsdCA9ICItbmV0ZGV2IHVzZXIsaWQ9bmV0MCVzLHRmdHA9JXMiICUgKGhvc3Rmd2QsIHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykpCiAgICAgICAgIHFiX3NsaXJwX29wdCA9IHNlbGYuZ2V0KCdRQl9TTElSUF9PUFQnKSBvciBxYl9zbGlycF9vcHRfZGVmYXVsdAogICAgICAgICAjIEZpZ3VyZSBvdXQgdGhlIHBvcnQKICAgICAgICAgcG9ydHMgPSByZS5maW5kYWxsKCdob3N0ZndkPVteLV0qOihbMC05XSspLVteLC1dKicsIHFiX3NsaXJwX29wdCkKQEAgLTg4OCw2ICs5MTcsOSBAQAogICAgICAgICBsb2NrZGlyID0gIi90bXAvcWVtdS10YXAtbG9ja3MiCiAKICAgICAgICAgaWYgbm90IChzZWxmLnFlbXVpZnVwIGFuZCBzZWxmLnFlbXVpZmRvd24gYW5kIGlwKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigicnVucWVtdS1pZnVwOiAlcyIgJSBzZWxmLnFlbXVpZnVwKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJydW5xZW11LWlmZG93bjogJXMiICUgc2VsZi5xZW11aWZkb3duKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJpcDogJXMiICUgaXApCiAgICAgICAgICAgICByYWlzZSBPRVBhdGhFcnJvcigicnVucWVtdS1pZnVwLCBydW5xZW11LWlmZG93biBvciBpcCBub3QgZm91bmQiKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NrZGlyKToKQEAgLTg5NSwxNCArOTI3LDE1IEBACiAgICAgICAgICAgICAjIHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZS4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5ta2Rpcihsb2NrZGlyKQorICAgICAgICAgICAgICAgIG9zLmNobW9kKGxvY2tkaXIsIDBvNzc3KQogICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgY21kID0gJyVzIGxpbmsnICUgaXAKLSAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgY21kKQorICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMuLi4nICUgY21kKQogICAgICAgICBpcF9saW5rID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICMgTWF0Y2hlcyBsaW5lIGxpa2U6IDY6IHRhcDA6IDxmb28+Ci0gICAgICAgIHBvc3NpYmxlcyA9IHJlLmZpbmRhbGwoJ15bMS05XSs6ICsodGFwWzAtOV0rKTogPC4qJywgaXBfbGluaywgcmUuTSkKKyAgICAgICAgcG9zc2libGVzID0gcmUuZmluZGFsbCgnXlswLTldKzogKyh0YXBbMC05XSspOiA8LionLCBpcF9saW5rLCByZS5NKQogICAgICAgICB0YXAgPSAiIgogICAgICAgICBmb3IgcCBpbiBwb3NzaWJsZXM6CiAgICAgICAgICAgICBsb2NrZmlsZSA9IG9zLnBhdGguam9pbihsb2NrZGlyLCBwKQpAQCAtOTEwLDcgKzk0Myw3IEBACiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0ZvdW5kICVzLnNraXAsIHNraXBwaW5nICVzJyAlIChsb2NrZmlsZSwgcCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNlbGYubG9jayA9IGxvY2tmaWxlICsgJy5sb2NrJwotICAgICAgICAgICAgaWYgc2VsZi5hY3F1aXJlX2xvY2soKToKKyAgICAgICAgICAgIGlmIHNlbGYuYWNxdWlyZV9sb2NrKGVycm9yPUZhbHNlKToKICAgICAgICAgICAgICAgICB0YXAgPSBwCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZSAlcyIgJSB0YXApCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIklmIHRoaXMgaXMgbm90IGludGVuZGVkLCB0b3VjaCAlcy5za2lwIHRvIG1ha2UgcnVucWVtdSBza2lwICVzLiIgJShsb2NrZmlsZSwgdGFwKSkKQEAgLTkyMCw3ICs5NTMsNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobm9zdWRvX2ZsYWcpOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3I6IFRoZXJlIGFyZSBubyBhdmFpbGFibGUgdGFwIGRldmljZXMgdG8gdXNlIGZvciBuZXR3b3JraW5nLCIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJhbmQgSSBzZWUgJXMgZXhpc3RzLCBzbyBJIGFtIG5vdCBnb2luZyB0byB0cnkgY3JlYXRpbmciICUgbm9zdWRvX2ZsYWcpCi0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJhIG5ldyBvbmUgd2l0aCBzdWRvLiIpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJhIG5ldyBvbmUgd2l0aCBzdWRvLiIpCiAKICAgICAgICAgICAgIGdpZCA9IG9zLmdldGdpZCgpCiAgICAgICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQpAQCAtOTMxLDcgKzk2NCw3IEBACiAgICAgICAgICAgICBzZWxmLmxvY2sgPSBsb2NrZmlsZSArICcubG9jaycKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9sb2NrKCkKICAgICAgICAgICAgIHNlbGYuY2xlYW50YXAgPSBUcnVlCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnQ3JlYXRlZCB0YXA6ICVzJyAlIHRhcCkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCB0YXA6ICVzJyAlIHRhcCkKIAogICAgICAgICBpZiBub3QgdGFwOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gc2V0dXAgdGFwIGRldmljZS4gUnVuIHJ1bnFlbXUtZ2VuLXRhcGRldnMgdG8gbWFudWFsbHkgY3JlYXRlLiIpCkBAIC05NjAsOCArOTkzLDggQEAKICAgICBkZWYgc2V0dXBfbmV0d29yayhzZWxmKToKICAgICAgICAgaWYgc2VsZi5nZXQoJ1FCX05FVCcpID09ICdub25lJzoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBjbWQgPSAic3R0eSAtZyIKLSAgICAgICAgc2VsZi5zYXZlZF9zdHR5ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKKyAgICAgICAgICAgIHNlbGYuc2F2ZWRfc3R0eSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzdHR5IC1nIiwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSBzZWxmLmdldCgnUUJfTkVUV09SS19ERVZJQ0UnKSBvciBzZWxmLm5ldHdvcmtfZGV2aWNlCiAgICAgICAgIGlmIHNlbGYuc2xpcnBfZW5hYmxlZDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2xpcnAoKQpAQCAtOTcxLDYgKzEwMDQsOCBAQAogICAgIGRlZiBzZXR1cF9yb290ZnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZ2V0KCdRQl9ST09URlMnKSA9PSAnbm9uZSc6CiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgJ3dpYy4nIGluIHNlbGYuZnN0eXBlOgorICAgICAgICAgICAgc2VsZi5mc3R5cGUgPSBzZWxmLmZzdHlwZVs0Ol0KICAgICAgICAgcm9vdGZzX2Zvcm1hdCA9IHNlbGYuZnN0eXBlIGlmIHNlbGYuZnN0eXBlIGluICgndm1kaycsICdxY293MicsICd2ZGknKSBlbHNlICdyYXcnCiAKICAgICAgICAgcWJfcm9vdGZzX29wdCA9IHNlbGYuZ2V0KCdRQl9ST09URlNfT1BUJykKQEAgLTk4Niw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgIHZtX2RyaXZlID0gJycKICAgICAgICAgICAgIGlmIHNlbGYuZnN0eXBlIGluIHNlbGYudm10eXBlczoKICAgICAgICAgICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnaXNvJzoKLSAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWNkcm9tICVzJyAlIHNlbGYucm9vdGZzCisgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gJy1kcml2ZSBmaWxlPSVzLGlmPXZpcnRpbyxtZWRpYT1jZHJvbScgJSBzZWxmLnJvb3RmcwogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5nZXQoJ1FCX0RSSVZFX1RZUEUnKToKICAgICAgICAgICAgICAgICAgICAgZHJpdmVfdHlwZSA9IHNlbGYuZ2V0KCdRQl9EUklWRV9UWVBFJykKICAgICAgICAgICAgICAgICAgICAgaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L3NkIik6CkBAIC05OTUsNyArMTAzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvaGQiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBpZGUgZHJpdmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAiJXMsZm9ybWF0PSVzIiAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gIi1kcml2ZSBmaWxlPSVzLGZvcm1hdD0lcyIgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHZpcnRpbyBtaWdodCBoYXZlIGJlZW4gc2VsZWN0ZWQgZXhwbGljaXRseSAoanVzdCB1c2UgaXQpLCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB1c2VkIGFzIGZhbGxiYWNrICh0aGVuIHdhcm4gYWJvdXQgdGhhdCkuCkBAIC0xMDExLDcgKzEwNDYsNyBAQAogCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgc2VsZi5yb290ZnNfb3B0aW9ucyA9ICcnCi0gICAgICAgICAgICBrX3Jvb3QgPSAnL2Rldi9uZnMgbmZzcm9vdD0lczolcywlcycgJSAoc2VsZi5uZnNfc2VydmVyLCBzZWxmLnJvb3Rmcywgc2VsZi51bmZzX29wdHMpCisgICAgICAgICAgICBrX3Jvb3QgPSAnL2Rldi9uZnMgbmZzcm9vdD0lczolcywlcycgJSAoc2VsZi5uZnNfc2VydmVyLCBvcy5wYXRoLmFic3BhdGgoc2VsZi5yb290ZnMpLCBzZWxmLnVuZnNfb3B0cykKICAgICAgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmUgPSAncm9vdD0lcyBydyBoaWdocmVzPW9mZicgJSBrX3Jvb3QKIAogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbm9uZSc6CkBAIC0xMDYyLDcgKzEwOTcsNyBAQAogICAgICAgICBpZiBub3QgcWVtdV9zeXN0ZW06CiAgICAgICAgICAgICBxZW11X3N5c3RlbSA9IHNlbGYuZ3Vlc3NfcWJfc3lzdGVtKCkKICAgICAgICAgaWYgbm90IHFlbXVfc3lzdGVtOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gYm9vdCwgUUJfU1lTVEVNX05BTUUgaXMgTlVMTCEiKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGYWlsZWQgdG8gYm9vdCwgUUJfU1lTVEVNX05BTUUgaXMgTlVMTCEiKQogCiAgICAgICAgIHFlbXVfYmluID0gJyVzLyVzJyAlIChzZWxmLmJpbmRpcl9uYXRpdmUsIHFlbXVfc3lzdGVtKQogCkBAIC0xMTAxLDkgKzExMzYsOSBAQAogICAgICAgICAgICAgc2VsZi5xZW11X29wdCArPSAiIC1zbmFwc2hvdCIKIAogICAgICAgICBpZiBzZWxmLnNlcmlhbHN0ZGlvOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkludGVycnVwdCBjaGFyYWN0ZXIgaXMgJ15dJyIpCi0gICAgICAgICAgICBjbWQgPSAic3R0eSBpbnRyIF5dIgotICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKKyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoInN0dHkgaW50ciBeXSIsIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkludGVycnVwdCBjaGFyYWN0ZXIgaXMgJ15dJyIpCiAKICAgICAgICAgICAgIGZpcnN0X3NlcmlhbCA9ICIiCiAgICAgICAgICAgICBpZiBub3QgcmUuc2VhcmNoKCItbm9ncmFwaGljIiwgc2VsZi5xZW11X29wdCk6CkBAIC0xMTQyLDE1ICsxMTc3LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBrZXJuZWxfb3B0cyA9ICIiCiAgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5xZW11X29wdCwga2VybmVsX29wdHMpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzJyAlIGNtZCkKLSAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJ1biAlcycgJSBjbWQpCisgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzXG4nICUgY21kKQorICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIGlmIHByb2Nlc3Mud2FpdCgpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gcnVuIHFlbXU6ICVzIiwgcHJvY2Vzcy5zdGRlcnIucmVhZCgpLmRlY29kZSgpKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuY2xlYW50YXA6CiAgICAgICAgICAgICBjbWQgPSAnc3VkbyAlcyAlcyAlcycgJSAoc2VsZi5xZW11aWZkb3duLCBzZWxmLnRhcCwgc2VsZi5iaW5kaXJfbmF0aXZlKQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMnICUgY21kKQotICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUnVubmluZyAlcycgJSBjbWQpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogICAgICAgICBpZiBzZWxmLmxvY2tfZGVzY3JpcHRvcjoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSZWxlYXNpbmcgbG9ja2ZpbGUgZm9yIHRhcCBkZXZpY2UgJyVzJyIgJSBzZWxmLnRhcCkKICAgICAgICAgICAgIHNlbGYucmVsZWFzZV9sb2NrKCkKQEAgLTExNTgsMTIgKzExOTQsMTIgQEAKICAgICAgICAgaWYgc2VsZi5uZnNfcnVubmluZzoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTaHV0dGluZyBkb3duIHRoZSB1c2Vyc3BhY2UgTkZTIHNlcnZlci4uLiIpCiAgICAgICAgICAgICBjbWQgPSAicnVucWVtdS1leHBvcnQtcm9vdGZzIHN0b3AgJXMiICUgc2VsZi5yb290ZnMKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzJyAlIGNtZCkKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMnICUgY21kKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKIAogICAgICAgICBpZiBzZWxmLnNhdmVkX3N0dHk6CiAgICAgICAgICAgICBjbWQgPSAic3R0eSAlcyIgJSBzZWxmLnNhdmVkX3N0dHkKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogCiAgICAgICAgIGlmIHNlbGYuY2xlYW5fbmZzX2RpcjoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSZW1vdmluZyAlcycgJSBzZWxmLnJvb3RmcykKQEAgLTExOTMsNiArMTIyOSwxMCBAQAogICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSAnJwogICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkNvdWxkbid0IHJ1biAnYml0YmFrZSAtZScgdG8gZ2F0aGVyIGVudmlyb25tZW50IGluZm9ybWF0aW9uOlxuJXMiICUgZXJyLm91dHB1dC5kZWNvZGUoJ3V0Zi04JykpCiAKKyAgICBkZWYgdmFsaWRhdGVfY29tYm9zKHNlbGYpOgorICAgICAgICBpZiAoc2VsZi5mc3R5cGUgaW4gc2VsZi52bXR5cGVzKSBhbmQgc2VsZi5rZXJuZWw6CisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIiVzIGRvZXNuJ3QgbmVlZCBrZXJuZWwgJXMhIiAlIChzZWxmLmZzdHlwZSwgc2VsZi5rZXJuZWwpKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGJpbmRpcl9uYXRpdmUoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZ2V0KCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKQpAQCAtMTIxMCw0MiArMTI1MCwzNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVzdWx0KToKICAgICAgICAgICAgICAgICBzZWxmLnNldCgnU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTmF0aXZlIHN5c3Jvb3QgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgZXhpc3QiICUgcmVzdWx0KQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJOYXRpdmUgc3lzcm9vdCBkaXJlY3RvcnkgJXMgZG9lc24ndCBleGlzdCIgJSByZXN1bHQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgU1RBR0lOR19CSU5ESVJfTkFUSVZFIGluICclcycgb3V0cHV0IiAlIGNtZCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgZmluZCBTVEFHSU5HX0JJTkRJUl9OQVRJVkUgaW4gJyVzJyBvdXRwdXQiICUgY21kKQogCiAKIGRlZiBtYWluKCk6CiAgICAgaWYgImhlbHAiIGluIHN5cy5hcmd2IG9yICctaCcgaW4gc3lzLmFyZ3Ygb3IgJy0taGVscCcgaW4gc3lzLmFyZ3Y6CiAgICAgICAgIHByaW50X3VzYWdlKCkKICAgICAgICAgcmV0dXJuIDAKLSAgICBjb25maWcgPSBCYXNlQ29uZmlnKCkKICAgICB0cnk6CisgICAgICAgIGNvbmZpZyA9IEJhc2VDb25maWcoKQogICAgICAgICBjb25maWcuY2hlY2tfYXJncygpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6Ci0gICAgICAgIGxvZ2dlci5lcnJvcihlc2MpCi0gICAgICAgIGxvZ2dlci5lcnJvcigiVHJ5ICdydW5xZW11IGhlbHAnIG9uIGhvdyB0byB1c2UgaXQiKQotICAgICAgICByZXR1cm4gMQotICAgIGNvbmZpZy5yZWFkX3FlbXVib290KCkKLSAgICBjb25maWcuY2hlY2tfYW5kX3NldCgpCi0gICAgY29uZmlnLnByaW50X2NvbmZpZygpCi0gICAgdHJ5OgorICAgICAgICBjb25maWcucmVhZF9xZW11Ym9vdCgpCisgICAgICAgIGNvbmZpZy5jaGVja19hbmRfc2V0KCkKKyAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBjb21ib3MgaXMgdmFsaWQgb3Igbm90CisgICAgICAgIGNvbmZpZy52YWxpZGF0ZV9jb21ib3MoKQorICAgICAgICBjb25maWcucHJpbnRfY29uZmlnKCkKICAgICAgICAgY29uZmlnLnNldHVwX25ldHdvcmsoKQogICAgICAgICBjb25maWcuc2V0dXBfcm9vdGZzKCkKICAgICAgICAgY29uZmlnLnNldHVwX2ZpbmFsKCkKICAgICAgICAgY29uZmlnLnN0YXJ0X3FlbXUoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGNvbmZpZy5jbGVhbnVwKCkKLSAgICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRyeToKLSAgICAgICAgcmV0ID0gbWFpbigpCi0gICAgZXhjZXB0IE9FUGF0aEVycm9yIGFzIGVycjoKLSAgICAgICAgcmV0ID0gMQotICAgICAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6Ci0gICAgICAgIHJldCA9IDEKKyAgICBleGNlcHQgUnVuUWVtdUVycm9yIGFzIGVycjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKGVycikKKyAgICAgICAgcmV0dXJuIDEKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCisgICAgICAgIHJldHVybiAxCisgICAgZmluYWxseToKKyAgICAgICAgcHJpbnQoIkNsZWFudXAiKQorICAgICAgICBjb25maWcuY2xlYW51cCgpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS1leHBvcnQtcm9vdGZzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS1leHBvcnQtcm9vdGZzCmluZGV4IGM3OTkyZDguLjcwY2RjZGIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUtZXhwb3J0LXJvb3RmcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11LWV4cG9ydC1yb290ZnMKQEAgLTc3LDEwICs3Nyw2IEBACiAJZXhpdCAxCQogZmkKIAotIyBycGMubW91bnRkIFJQQyBwb3J0Ci1NT1VOVERfUlBDUE9SVD0ke01PVU5URF9SUENQT1JUOj0kWyAyMTExMSArICRORlNfSU5TVEFOQ0UgXX0KLSMgcnBjLm5mc2QgUlBDIHBvcnQKLU5GU0RfUlBDUE9SVD0ke05GU0RfUlBDUE9SVDo9JFsgMTExMTEgKyAkTkZTX0lOU1RBTkNFIF19CiAjIE5GUyBzZXJ2ZXIgcG9ydCBudW1iZXIKIE5GU0RfUE9SVD0ke05GU0RfUE9SVDo9JFsgMzA0OSArIDIgKiAkTkZTX0lOU1RBTkNFIF19CiAjIG1vdW50ZCBwb3J0IG51bWJlcgpAQCAtODgsNyArODQsNyBAQAogCiAjIyBGb3IgZGVidWdnaW5nIHlvdSB3b3VsZCBhZGRpdGlvbmFsbHkgYWRkCiAjIyAtLWRlYnVnIGFsbAotVU5GU0RfT1BUUz0iLXAgLU4gLWkgJE5GU1BJRCAtZSAkRVhQT1JUUyAteCAkTkZTRF9SUENQT1JUIC1uICRORlNEX1BPUlQgLXkgJE1PVU5URF9SUENQT1JUIC1tICRNT1VOVERfUE9SVCIKK1VORlNEX09QVFM9Ii1wIC1OIC1pICRORlNQSUQgLWUgJEVYUE9SVFMgLW4gJE5GU0RfUE9SVCAtbSAkTU9VTlREX1BPUlQiCiAKICMgU2VlIGhvdyB3ZSB3ZXJlIGNhbGxlZC4KIGNhc2UgIiQxIiBpbgpAQCAtMTMwLDcgKzEyNiw3IEBACiAJZmkKIAllY2hvICIgIgogCWVjaG8gIk9uIHlvdXIgdGFyZ2V0IHBsZWFzZSByZW1lbWJlciB0byBhZGQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBORlMiCi0JZWNobyAibmZzcm9vdD1JUF9BRERSRVNTOiRORlNfRVhQT1JUX0RJUixuZnN2ZXJzPTMscG9ydD0kTkZTRF9QT1JULG1vdW50cHJvZz0kTU9VTlREX1JQQ1BPUlQsbmZzcHJvZz0kTkZTRF9SUENQT1JULHVkcCxtb3VudHBvcnQ9JE1PVU5URF9QT1JUIgorCWVjaG8gIm5mc3Jvb3Q9SVBfQUREUkVTUzokTkZTX0VYUE9SVF9ESVIsbmZzdmVycz0zLHBvcnQ9JE5GU0RfUE9SVCx1ZHAsbW91bnRwb3J0PSRNT1VOVERfUE9SVCIKIAk7OwogICBzdG9wKQogCWlmIFsgLWYgIiRORlNQSUQiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUuUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKaW5kZXggNTkwOGQ4My4uZGE5YWJkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKQEAgLTM1LDcgKzM1LDcgQEAKICAgIHJ1biBhcyBub24gcm9vdC4gVGhlIHJ1bnFlbXUtZ2VuLXRhcGRldnMgc2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYnkKICAgIHJvb3QgdG8gcHJlcG9wdWxhdGUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZGV2aWNlcy4KICAtIFlvdSBjYW4gYWNjZXNzIHRoZSBob3N0IGNvbXB1dGVyIGF0IDE5Mi4xNjguNy4xIHdpdGhpbiB0aGUgaW1hZ2UuCi0gLSBZb3VyIHFlbXUgc3lzdGVtIHdpbGwgYmUgYWNjZXNzaWJsZSBhcyAxOTIuMTYuNy4yLgorIC0gWW91ciBxZW11IHN5c3RlbSB3aWxsIGJlIGFjY2Vzc2libGUgYXMgMTkyLjE2OC43LjIuCiAgLSBUaGUgc2NyaXB0IGV4dHJhY3RzIHRoZSByb290IGZpbGVzeXN0ZW0gc3BlY2lmaWVkIHVuZGVyIHBzZXVkbyBhbmQgc2V0cyB1cCBhIHVzZXJzcGFjZQogICAgTkZTIHNlcnZlciB0byBzaGFyZSB0aGUgaW1hZ2Ugb3ZlciBieSBkZWZhdWx0IG1lYW5pbmcgdGhlIGZpbGVzeXN0ZW0gY2FuIGJlIGFjY2Vzc2VkIGJ5CiAgICBib3RoIHRoZSBob3N0IGFuZCBndWVzdCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvc3N0YXRlLWRpZmYtbWFjaGluZXMuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaAppbmRleCAwNTZhYTBhLi4yN2M2YTMzIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaApAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgY3AgLXJhICR7dG1wZGlyfS9zdGFtcHMvKiAke09VVFBVVH0vJHtNfQogICAgIGZpbmQgJHtPVVRQVVR9LyR7TX0gLW5hbWUgXCpzaWdkYXRhXCogfCBzZWQgInMjJHtPVVRQVVR9LyR7TX0vIyNnIiB8IHNvcnQgPiAke09VVFBVVH0vJHtNfS9saXN0CiAgICAgTV9VTkRFUlNDT1JFPWBlY2hvICR7TX0gfCBzZWQgJ3MvLS9fL2cnYAotICAgIHNlZCAicy8ke01fVU5ERVJTQ09SRX0vTUFDSElORS9nOyBzLyR7TX0vTUFDSElORS9nIiAke09VVFBVVH0vJHtNfS9saXN0IHwgc29ydCA+ICR7T1VUUFVUfS8ke019L2xpc3QuTQorICAgIHNlZCAicy9eJHtNX1VOREVSU0NPUkV9LS9NQUNISU5FL2ciICR7T1VUUFVUfS8ke019L2xpc3QgfCBzb3J0ID4gJHtPVVRQVVR9LyR7TX0vbGlzdC5NCiAgICAgZmluZCAke3RtcGRpcn0vc3RhbXBzLyAtbmFtZSBcKnNpZ2RhdGFcKiB8IHhhcmdzIHJtIC1mCiAgIGVsc2UKICAgICBwcmludGYgIkVSUk9SOiBubyBzaWdkYXRhIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIGZvciBNQUNISU5FICRNIGluICR7dG1wZGlyfS9zdGFtcHNcbiI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtc3lzcm9vdC1jcnVmdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCmluZGV4IGI2MTY2YWEuLmQ5OTE3ZjUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCkBAIC0xMDUsNyArMTA1LDkgQEAKIAogIyBnZW5lcmF0ZWQgYnkgcGhwCiBXSElURUxJU1Q9IiR7V0hJVEVMSVNUfSBcCisgIC4qL3Vzci9saWIvcGhwNS9waHAvLmNoYW5uZWxzIFwKICAgLiovdXNyL2xpYi9waHA1L3BocC8uY2hhbm5lbHMvLiogXAorICAuKi91c3IvbGliL3BocDUvcGhwLy5yZWdpc3RyeSBcCiAgIC4qL3Vzci9saWIvcGhwNS9waHAvLnJlZ2lzdHJ5Ly4qIFwKICAgLiovdXNyL2xpYi9waHA1L3BocC8uZGVwZGIgXAogICAuKi91c3IvbGliL3BocDUvcGhwLy5kZXBkYmxvY2sgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvdGVzdC1yZWV4ZWMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYwppbmRleCA5ZWFhOTZlLi4zMGU3OTJjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYwpAQCAtMzgsOSArMzgsOSBAQAogZnVuY3Rpb24gY2xlYXJzc3RhdGUgewogCXRhcmdldD0kMQogCi0Jc3N0YXRlX2Rpcj1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9ESVIiIHwgY3V0IC1kICJcIiIgLWYgMmAKLQlzc3RhdGVfcGtnc3BlYz1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9QS0dTUEVDIiB8IGN1dCAtZCAiXCIiIC1mIDJgCi0Jc3N0YXNrcz1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURVRBU0tTIiB8IGN1dCAtZCAiXCIiIC1mIDJgCisJc3N0YXRlX2Rpcj1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9ESVI9IiB8IGN1dCAtZCAiXCIiIC1mIDJgCisJc3N0YXRlX3BrZ3NwZWM9YGJpdGJha2UgJHRhcmdldCAtZSB8IGdyZXAgIl5TU1RBVEVfUEtHU1BFQz0iIHwgY3V0IC1kICJcIiIgLWYgMmAKKwlzc3Rhc2tzPWBiaXRiYWtlICR0YXJnZXQgLWUgfCBncmVwICJeU1NUQVRFVEFTS1M9IiB8IGN1dCAtZCAiXCIiIC1mIDJgCiAKIAlmb3Igc3N0YXNrIGluICRzc3Rhc2tzCiAJZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYwppbmRleCBhNWYyZGJmLi4wOTcwODRhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy93aWMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvd2ljCkBAIC0zMyw4ICszMywxMCBAQAogIyBQeXRob24gU3RhbmRhcmQgTGlicmFyeSBtb2R1bGVzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBvcHRwYXJzZQoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZworCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KIAogIyBFeHRlcm5hbCBtb2R1bGVzCkBAIC01NCw3ICs1Niw3IEBACiAgICAgYml0YmFrZV9tYWluID0gTm9uZQogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgQkJfVkFSUworZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBCQl9WQVJTCiBmcm9tIHdpYyBpbXBvcnQgZW5naW5lCiBmcm9tIHdpYyBpbXBvcnQgaGVscCBhcyBobHAKIApAQCAtODUsNjYgKzg3LDMwIEBACiAgICAgICAgIHJvb3Rmc19kaXIgKz0gJz0nLmpvaW4oW2tleSwgdmFsXSkKICAgICByZXR1cm4gcm9vdGZzX2Rpci5zdHJpcCgpCiAKLWRlZiBjYWxsYmFja19yb290ZnNfZGlyKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAiIiIKLSAgICBCdWlsZCBhIGRpY3QgdXNpbmcgLS1yb290ZnNfZGlyIGNvbm5lY3Rpb249ZGlyCi0gICAgIiIiCi0gICAgaWYgbm90IHR5cGUocGFyc2VyLnZhbHVlcy5yb290ZnNfZGlyKSBpcyBkaWN0OgotICAgICAgICBwYXJzZXIudmFsdWVzLnJvb3Rmc19kaXIgPSBkaWN0KCkKIAotICAgIGlmICc9JyBpbiB2YWx1ZToKLSAgICAgICAgKGtleSwgcm9vdGZzX2RpcikgPSB2YWx1ZS5zcGxpdCgnPScpCi0gICAgZWxzZToKLSAgICAgICAga2V5ID0gJ1JPT1RGU19ESVInCi0gICAgICAgIHJvb3Rmc19kaXIgPSB2YWx1ZQorY2xhc3MgUm9vdGZzQXJnQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKIAotICAgIHBhcnNlci52YWx1ZXMucm9vdGZzX2RpcltrZXldID0gcm9vdGZzX2RpcgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWUsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CisgICAgICAgIGlmIG5vdCAicm9vdGZzX2RpciIgaW4gdmFycyhuYW1lc3BhY2UpIG9yIFwKKyAgICAgICAgICAgbm90IHR5cGUobmFtZXNwYWNlLl9fZGljdF9fWydyb290ZnNfZGlyJ10pIGlzIGRpY3Q6CisgICAgICAgICAgICBuYW1lc3BhY2UuX19kaWN0X19bJ3Jvb3Rmc19kaXInXSA9IHt9CiAKLWRlZiB3aWNfY3JlYXRlX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAgICAgaWYgJz0nIGluIHZhbHVlOgorICAgICAgICAgICAgKGtleSwgcm9vdGZzX2RpcikgPSB2YWx1ZS5zcGxpdCgnPScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrZXkgPSAnUk9PVEZTX0RJUicKKyAgICAgICAgICAgIHJvb3Rmc19kaXIgPSB2YWx1ZQorCisgICAgICAgIG5hbWVzcGFjZS5fX2RpY3RfX1sncm9vdGZzX2RpciddW2tleV0gPSByb290ZnNfZGlyCisKKworZGVmIHdpY19jcmVhdGVfc3ViY29tbWFuZChvcHRpb25zLCB1c2FnZV9zdHIpOgogICAgICIiIgogICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgaW1hZ2UgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUKICAgICBieSBpbWFnZS5lbmdpbmUud2ljX2NyZWF0ZSgpCiAgICAgIiIiCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPXVzYWdlX3N0cikKLQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dGRpciIsIGRlc3Q9Im91dGRpciIsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgZGlyZWN0b3J5IHRvIGNyZWF0ZSBpbWFnZSBpbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1lIiwgIi0taW1hZ2UtbmFtZSIsIGRlc3Q9ImltYWdlX25hbWUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImUuZy4gY29yZS1pbWFnZS1zYXRvIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXIiLCAiLS1yb290ZnMtZGlyIiwgZGVzdD0icm9vdGZzX2RpciIsIHR5cGU9InN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJjYWxsYmFjayIsIGNhbGxiYWNrPWNhbGxiYWNrX3Jvb3Rmc19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0icGF0aCB0byB0aGUgL3Jvb3RmcyBkaXIgdG8gdXNlIGFzIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiLndrcyByb290ZnMgc291cmNlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWIiLCAiLS1ib290aW1nLWRpciIsIGRlc3Q9ImJvb3RpbWdfZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUgYm9vdCBhcnRpZmFjdHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihlLmcuIC9FRkkgb3IgL3N5c2xpbnV4IGRpcnMpIHRvIHVzZSBhcyB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3MgYm9vdGltZyBzb3VyY2UiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItayIsICItLWtlcm5lbC1kaXIiLCBkZXN0PSJrZXJuZWxfZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUga2VybmVsIHRvIHVzZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIC53a3MgYm9vdGltZyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1uIiwgIi0tbmF0aXZlLXN5c3Jvb3QiLCBkZXN0PSJuYXRpdmVfc3lzcm9vdCIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0icGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QgY29udGFpbmluZyB0aGUgdG9vbHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHVzZSB0byBidWlsZCB0aGUgaW1hZ2UiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIsICItLXNraXAtYnVpbGQtY2hlY2siLCBkZXN0PSJidWlsZF9jaGVjayIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0ic2tpcCB0aGUgYnVpbGQgY2hlY2siKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWJ1aWxkLXJvb3RmcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImJ1aWxkIHJvb3RmcyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgIi0tY29tcHJlc3Mtd2l0aCIsIGNob2ljZXM9KCJnemlwIiwgImJ6aXAyIiwgInh6IiksCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29tcHJlc3NvcicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0iY29tcHJlc3MgaW1hZ2Ugd2l0aCBzcGVjaWZpZWQgY29tcHJlc3NvciIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgIi0tYm1hcCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImdlbmVyYXRlIC5ibWFwIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS12YXJzIiwgZGVzdD0ndmFyc19kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImRpcmVjdG9yeSB3aXRoIDxpbWFnZT4uZW52IGZpbGVzIHRoYXQgc3RvcmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImJpdGJha2UgdmFyaWFibGVzIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLUQiLCAiLS1kZWJ1ZyIsIGRlc3Q9ImRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHJhaXNlIFdpY0Vycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nIikKLQogICAgIGlmIG9wdGlvbnMuYnVpbGRfcm9vdGZzIGFuZCBub3QgYml0YmFrZV9tYWluOgogICAgICAgICByYWlzZSBXaWNFcnJvcigiQ2FuJ3QgYnVpbGQgcm9vdGZzIGFzIGJpdGJha2UgaXMgbm90IGluIHRoZSAkUEFUSCIpCiAKQEAgLTE4OCwzMiArMTU0LDM0IEBACiAgICAgICAgIHJvb3Rmc19kaXIgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX1JPT1RGUyIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKICAgICAgICAga2VybmVsX2RpciA9IGdldF9iaXRiYWtlX3ZhcigiREVQTE9ZX0RJUl9JTUFHRSIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKICAgICAgICAgYm9vdGltZ19kaXIgPSBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKLSAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaW1hZ2VfbmFtZSkgIywgY2FjaGU9RmFsc2UpCisKKyAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBvcHRpb25zLm5hdGl2ZV9zeXNyb290CisgICAgICAgIGlmIG9wdGlvbnMudmFyc19kaXIgYW5kIG5vdCBuYXRpdmVfc3lzcm9vdDoKKyAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JpdGJha2VfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCBvcHRpb25zLmltYWdlX25hbWUpCiAgICAgZWxzZToKICAgICAgICAgaWYgb3B0aW9ucy5idWlsZF9yb290ZnM6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiSW1hZ2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBleGl0aW5nLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFVzZSAtZS8tLWltYWdlLW5hbWUgdG8gc3BlY2lmeSBpdCkiKQogICAgICAgICBuYXRpdmVfc3lzcm9vdCA9IG9wdGlvbnMubmF0aXZlX3N5c3Jvb3QKIAotICAgIGlmIG5vdCBuYXRpdmVfc3lzcm9vdCBvciBub3Qgb3MucGF0aC5pc2RpcihuYXRpdmVfc3lzcm9vdCk6CisgICAgaWYgbm90IG9wdGlvbnMudmFyc19kaXIgYW5kIChub3QgbmF0aXZlX3N5c3Jvb3Qgb3Igbm90IG9zLnBhdGguaXNkaXIobmF0aXZlX3N5c3Jvb3QpKToKICAgICAgICAgbG9nZ2VyLmluZm8oIkJ1aWxkaW5nIHdpYy10b29scy4uLlxuIikKICAgICAgICAgaWYgYml0YmFrZV9tYWluKEJpdEJha2VDb25maWdQYXJhbWV0ZXJzKCJiaXRiYWtlIHdpYy10b29scyIuc3BsaXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZXJkYXRhLkNvb2tlckNvbmZpZ3VyYXRpb24oKSk6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiYml0YmFrZSB3aWMtdG9vbHMgZmFpbGVkIikKICAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQotICAgICAgICBpZiBub3QgbmF0aXZlX3N5c3Jvb3Q6Ci0gICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiVW5hYmxlIHRvIGZpbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBuYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzIHN5c3Jvb3QgdG8gdXNlIikKIAotICAgIHdrc19maWxlID0gYXJnc1swXQorICAgIGlmIG5vdCBuYXRpdmVfc3lzcm9vdDoKKyAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlVuYWJsZSB0byBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmF0aXZlIHRvb2xzIHN5c3Jvb3QiKQorCisgICAgd2tzX2ZpbGUgPSBvcHRpb25zLndrc19maWxlCiAKICAgICBpZiBub3Qgd2tzX2ZpbGUuZW5kc3dpdGgoIi53a3MiKToKICAgICAgICAgd2tzX2ZpbGUgPSBlbmdpbmUuZmluZF9jYW5uZWRfaW1hZ2Uoc2NyaXB0c19wYXRoLCB3a3NfZmlsZSkKICAgICAgICAgaWYgbm90IHdrc19maWxlOgogICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIk5vIGltYWdlIG5hbWVkICVzIGZvdW5kLCBleGl0aW5nLiAgKFVzZSAnd2ljIGxpc3QgaW1hZ2VzJyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gbGlzdCBhdmFpbGFibGUgaW1hZ2VzLCBvciBzcGVjaWZ5IGEgZnVsbHktcXVhbGlmaWVkIE9FICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJraWNrc3RhcnQgKC53a3MpIGZpbGVuYW1lKSIgJSBhcmdzWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgImtpY2tzdGFydCAoLndrcykgZmlsZW5hbWUpIiAlIG9wdGlvbnMud2tzX2ZpbGUpCiAKICAgICBpZiBub3Qgb3B0aW9ucy5pbWFnZV9uYW1lOgogICAgICAgICByb290ZnNfZGlyID0gJycKQEAgLTI2NCw1OSArMjMyLDI5MCBAQAogICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhdmFpbGFibGUgaW1hZ2VzLgogICAgIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSBpbWFnZS5lbmdpbmUud2ljX2xpc3QoKQogICAgICIiIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZV9zdHIpCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpWzFdCi0KICAgICBpZiBub3QgZW5naW5lLndpY19saXN0KGFyZ3MsIHNjcmlwdHNfcGF0aCk6Ci0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkJhZCBsaXN0IGFyZ3VtZW50cywgZXhpdGluZyIpCiAKIAotZGVmIHdpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKK2RlZiB3aWNfbHNfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgogICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgaGVscC1vbmx5ICdzdWJjb21tYW5kcycuICBUaGlzIGlzCi0gICAgZXNzZW50aWFsbHkgYSBkdW1teSBjb21tYW5kIHRoYXQgZG9lc24gbm90aGluZyBidXQgYWxsb3cgdXNlcnMgdG8KLSAgICB1c2UgdGhlIGV4aXN0aW5nIHN1YmNvbW1hbmQgaW5mcmFzdHJ1Y3R1cmUgdG8gZGlzcGxheSBoZWxwIG9uIGEKLSAgICBwYXJ0aWN1bGFyIHRvcGljIG5vdCBhdHRhY2hlZCB0byBhbnkgcGFydGljdWxhciBzdWJjb21tYW5kLgorICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdCBjb250ZW50IG9mIGltYWdlcy4KKyAgICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgZW5naW5lLndpY19scygpCisgICAgIiIiCisgICAgZW5naW5lLndpY19scyhhcmdzLCBhcmdzLm5hdGl2ZV9zeXNyb290KQorCitkZWYgd2ljX2NwX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAiIiIKKyAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGNvcHlpbmcgZmlsZXMvZGlycyB0byBpbWFnZXMuCisgICAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGVuZ2luZS53aWNfY3AoKQorICAgICIiIgorICAgIGVuZ2luZS53aWNfY3AoYXJncywgYXJncy5uYXRpdmVfc3lzcm9vdCkKKworZGVmIHdpY19ybV9zdWJjb21tYW5kKGFyZ3MsIHVzYWdlX3N0cik6CisgICAgIiIiCisgICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciByZW1vdmluZyBmaWxlcy9kaXJzIGZyb20gaW1hZ2VzLgorICAgIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSBlbmdpbmUud2ljX3JtKCkKKyAgICAiIiIKKyAgICBlbmdpbmUud2ljX3JtKGFyZ3MsIGFyZ3MubmF0aXZlX3N5c3Jvb3QpCisKK2RlZiB3aWNfd3JpdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgorICAgICIiIgorICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3Igd3JpdGluZyBpbWFnZXMuCisgICAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGVuZ2luZS53aWNfd3JpdGUoKQorICAgICIiIgorICAgIGVuZ2luZS53aWNfd3JpdGUoYXJncywgYXJncy5uYXRpdmVfc3lzcm9vdCkKKworZGVmIHdpY19oZWxwX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAiIiIKKyAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGhlbHAgc3ViY29tbWFuZCB0byBrZWVwIHRoZSBjdXJyZW50CisgICAgc3RydWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KICAgICAiIiIKICAgICBwYXNzCiAKIAorZGVmIHdpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQodXNhZ2Vfc3RyLCBoZWxwX3N0cik6CisgICAgIiIiCisgICAgRGlzcGxheSBmdW5jdGlvbiBmb3IgaGVscCAnc3ViLXN1YmNvbW1hbmRzJy4KKyAgICAiIiIKKyAgICBwcmludChoZWxwX3N0cikKKyAgICByZXR1cm4KKworCiB3aWNfaGVscF90b3BpY191c2FnZSA9ICIiIgogIiIiCiAKLXN1YmNvbW1hbmRzID0gewotICAgICJjcmVhdGUiOiAgICBbd2ljX2NyZWF0ZV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgaGxwLndpY19jcmVhdGVfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2NyZWF0ZV9oZWxwXSwKLSAgICAibGlzdCI6ICAgICAgW3dpY19saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfaGVscF0sCitoZWxwdG9waWNzID0gewogICAgICJwbHVnaW5zIjogICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKICAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAotICAgICAgICAgICAgICAgICAgaGxwLmdldF93aWNfcGx1Z2luc19oZWxwXSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfcGx1Z2luc19oZWxwXSwKICAgICAib3ZlcnZpZXciOiAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKICAgICAgICAgICAgICAgICAgIGhscC53aWNfb3ZlcnZpZXdfaGVscF0sCiAgICAgImtpY2tzdGFydCI6IFt3aWNfaGVscF90b3BpY19zdWJjb21tYW5kLAogICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCiAgICAgICAgICAgICAgICAgICBobHAud2ljX2tpY2tzdGFydF9oZWxwXSwKKyAgICAiY3JlYXRlIjogICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3JlYXRlX2hlbHBdLAorICAgICJscyI6ICAgICAgICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19sc19oZWxwXSwKKyAgICAiY3AiOiAgICAgICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3BfaGVscF0sCisgICAgInJtIjogICAgICAgIFt3aWNfaGVscF90b3BpY19zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX3JtX2hlbHBdLAorICAgICJ3cml0ZSI6ICAgICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY193cml0ZV9oZWxwXSwKKyAgICAibGlzdCI6ICAgICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfbGlzdF9oZWxwXQogfQogCiAKK2RlZiB3aWNfaW5pdF9wYXJzZXJfY3JlYXRlKHN1YnBhcnNlcik6CisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgid2tzX2ZpbGUiKQorCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1vdXRkaXIiLCBkZXN0PSJvdXRkaXIiLCBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJuYW1lIG9mIGRpcmVjdG9yeSB0byBjcmVhdGUgaW1hZ2UgaW4iKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0taW1hZ2UtbmFtZSIsIGRlc3Q9ImltYWdlX25hbWUiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImUuZy4gY29yZS1pbWFnZS1zYXRvIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXJvb3Rmcy1kaXIiLCBhY3Rpb249Um9vdGZzQXJnQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIC9yb290ZnMgZGlyIHRvIHVzZSBhcyB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3Mgcm9vdGZzIHNvdXJjZSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLWIiLCAiLS1ib290aW1nLWRpciIsIGRlc3Q9ImJvb3RpbWdfZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUgYm9vdCBhcnRpZmFjdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIihlLmcuIC9FRkkgb3IgL3N5c2xpbnV4IGRpcnMpIHRvIHVzZSBhcyB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3MgYm9vdGltZyBzb3VyY2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1rIiwgIi0ta2VybmVsLWRpciIsIGRlc3Q9Imtlcm5lbF9kaXIiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIGRpciBjb250YWluaW5nIHRoZSBrZXJuZWwgdG8gdXNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgLndrcyBib290aW1nIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hdGl2ZS1zeXNyb290IiwgZGVzdD0ibmF0aXZlX3N5c3Jvb3QiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byB1c2UgdG8gYnVpbGQgdGhlIGltYWdlIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNraXAtYnVpbGQtY2hlY2siLCBkZXN0PSJidWlsZF9jaGVjayIsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0ic2tpcCB0aGUgYnVpbGQgY2hlY2siKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0tYnVpbGQtcm9vdGZzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iYnVpbGQgcm9vdGZzIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvbXByZXNzLXdpdGgiLCBjaG9pY2VzPSgiZ3ppcCIsICJiemlwMiIsICJ4eiIpLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NvbXByZXNzb3InLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNvbXByZXNzIGltYWdlIHdpdGggc3BlY2lmaWVkIGNvbXByZXNzb3IiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1tIiwgIi0tYm1hcCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImdlbmVyYXRlIC5ibWFwIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW5vLWZzdGFiLXVwZGF0ZSIgLGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG8gbm90IGNoYW5nZSBmc3RhYiBmaWxlLiIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLXYiLCAiLS12YXJzIiwgZGVzdD0ndmFyc19kaXInLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImRpcmVjdG9yeSB3aXRoIDxpbWFnZT4uZW52IGZpbGVzIHRoYXQgc3RvcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJpdGJha2UgdmFyaWFibGVzIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItRCIsICItLWRlYnVnIiwgZGVzdD0iZGVidWciLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Im91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiIpCisgICAgcmV0dXJuCisKKworZGVmIHdpY19pbml0X3BhcnNlcl9saXN0KHN1YnBhcnNlcik6CisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgibGlzdF90eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNhbiBiZSAnaW1hZ2VzJyBvciAnc291cmNlLXBsdWdpbnMnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIG9idGFpbiBhIGxpc3QuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIHZhbHVlIGlzIGEgdmFsaWQgLndrcyBpbWFnZSBmaWxlIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJoZWxwX2ZvciIsIGRlZmF1bHQ9W10sIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IklmICdsaXN0X3R5cGUnIGlzIGEgdmFsaWQgLndrcyBpbWFnZSBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgdmFsdWUgY2FuIGJlICdoZWxwJyB0byBzaG93IHRoZSBoZWxwIGluZm9ybWF0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZWQgaW5zaWRlIHRoZSAud2tzIGZpbGUiKQorICAgIHJldHVybgorCitkZWYgaW1ndHlwZShhcmcpOgorICAgICIiIgorICAgIEN1c3RvbSB0eXBlIGZvciBBcmd1bWVudFBhcnNlcgorICAgIENvbnZlcnRzIHBhdGggc3BlYyB0byBuYW1lZCB0dXBsZTogKGltYWdlLCBwYXJ0aXRpb24sIHBhdGgpCisgICAgIiIiCisgICAgaW1hZ2UgPSBhcmcKKyAgICBwYXJ0ID0gcGF0aCA9IE5vbmUKKyAgICBpZiAnOicgaW4gaW1hZ2U6CisgICAgICAgIGltYWdlLCBwYXJ0ID0gaW1hZ2Uuc3BsaXQoJzonKQorICAgICAgICBpZiAnLycgaW4gcGFydDoKKyAgICAgICAgICAgIHBhcnQsIHBhdGggPSBwYXJ0LnNwbGl0KCcvJywgMSkKKyAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgICAgICBwYXRoID0gJy8nCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoaW1hZ2UpOgorICAgICAgICBlcnIgPSAiJXMgaXMgbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiICUgaW1hZ2UKKyAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoZXJyKQorCisgICAgcmV0dXJuIG5hbWVkdHVwbGUoJ0ltZ1R5cGUnLCAnaW1hZ2UgcGFydCBwYXRoJykoaW1hZ2UsIHBhcnQsIHBhdGgpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfbHMoc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJwYXRoIiwgdHlwZT1pbWd0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPls6PHZmYXQgcGFydGl0aW9uPls8cGF0aD5dXSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiBpbWdwYXRodHlwZShhcmcpOgorICAgIGltZyA9IGltZ3R5cGUoYXJnKQorICAgIGlmIGltZy5wYXJ0IGlzIE5vbmU6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCJwYXJ0aXRpb24gbnVtYmVyIGlzIG5vdCBzcGVjaWZpZWQiKQorICAgIHJldHVybiBpbWcKKworZGVmIHdpY19pbml0X3BhcnNlcl9jcChzdWJwYXJzZXIpOgorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzb3VyY2Ugc3BlYyIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiZGVzdCIsIHR5cGU9aW1ncGF0aHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfcm0oc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJwYXRoIiwgdHlwZT1pbWdwYXRodHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGg6IDxpbWFnZT46PHZmYXQgcGFydGl0aW9uPjxwYXRoPiIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiBleHBhbmR0eXBlKHJ1bGVzKToKKyAgICAiIiIKKyAgICBDdXN0b20gdHlwZSBmb3IgQXJndW1lbnRQYXJzZXIKKyAgICBDb252ZXJ0cyBleHBhbmQgcnVsZXMgdG8gdGhlIGRpY3Rpb25hcnkgezxwYXJ0aXRpb24+OiBzaXplfQorICAgICIiIgorICAgIGlmIHJ1bGVzID09ICdhdXRvJzoKKyAgICAgICAgcmV0dXJuIHt9CisgICAgcmVzdWx0ID0ge30KKyAgICBmb3IgcnVsZSBpbiBydWxlcy5zcGxpdCgnLScpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJ0LCBzaXplID0gcnVsZS5zcGxpdCgnOicpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoIkluY29ycmVjdCBydWxlIGZvcm1hdDogJXMiICUgcnVsZSkKKworICAgICAgICBpZiBub3QgcGFydC5pc2RpZ2l0KCk6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigiUnVsZSAnJXMnOiBwYXJ0aXRpb24gbnVtYmVyIG11c3QgYmUgaW50ZWdlciIgJSBydWxlKQorCisgICAgICAgICMgdmFsaWRhdGUgc2l6ZQorICAgICAgICBtdWx0aXBsaWVyID0gMQorICAgICAgICBmb3Igc3VmZml4LCBtdWx0IGluIFsoJ0snLCAxMDI0KSwgKCdNJywgMTAyNCAqIDEwMjQpLCAoJ0cnLCAxMDI0ICogMTAyNCAqIDEwMjQpXToKKyAgICAgICAgICAgIGlmIHNpemUudXBwZXIoKS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBtdWx0CisgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVbOi0xXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKKyAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCJSdWxlICclcyc6IHNpemUgbXVzdCBiZSBpbnRlZ2VyIiAlIHJ1bGUpCisKKyAgICAgICAgcmVzdWx0W2ludChwYXJ0KV0gPSBpbnQoc2l6ZSkgKiBtdWx0aXBsaWVyCisKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfd3JpdGUoc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSB3aWMgaW1hZ2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInRhcmdldCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ0YXJnZXQgZmlsZSBvciBkZXZpY2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0tZXhwYW5kIiwgdHlwZT1leHBhbmR0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhwYW5kIHJ1bGVzOiBhdXRvIG9yIDxwYXJ0aXRpb24+OjxzaXplPlssPHBhcnRpdGlvbj46PHNpemU+XSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfaGVscChzdWJwYXJzZXIpOgorICAgIGhlbHBwYXJzZXJzID0gc3VicGFyc2VyLmFkZF9zdWJwYXJzZXJzKGRlc3Q9J2hlbHBfdG9waWMnLCBoZWxwPWhscC53aWNfdXNhZ2UpCisgICAgZm9yIGhlbHB0b3BpYyBpbiBoZWxwdG9waWNzOgorICAgICAgICBoZWxwcGFyc2Vycy5hZGRfcGFyc2VyKGhlbHB0b3BpYywgaGVscD1oZWxwdG9waWNzW2hlbHB0b3BpY11bMl0pCisgICAgcmV0dXJuCisKKworc3ViY29tbWFuZHMgPSB7CisgICAgImNyZWF0ZSI6ICAgIFt3aWNfY3JlYXRlX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2NyZWF0ZV91c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3JlYXRlX2hlbHAsCisgICAgICAgICAgICAgICAgICB3aWNfaW5pdF9wYXJzZXJfY3JlYXRlXSwKKyAgICAibGlzdCI6ICAgICAgW3dpY19saXN0X3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9saXN0XSwKKyAgICAibHMiOiAgICAgICAgW3dpY19sc19zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19sc191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfbHNfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9sc10sCisgICAgImNwIjogICAgICAgIFt3aWNfY3Bfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3BfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2NwX2hlbHAsCisgICAgICAgICAgICAgICAgICB3aWNfaW5pdF9wYXJzZXJfY3BdLAorICAgICJybSI6ICAgICAgICBbd2ljX3JtX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX3JtX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19ybV9oZWxwLAorICAgICAgICAgICAgICAgICAgd2ljX2luaXRfcGFyc2VyX3JtXSwKKyAgICAid3JpdGUiOiAgICAgW3dpY193cml0ZV9zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgaGxwLndpY193cml0ZV91c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfd3JpdGVfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl93cml0ZV0sCisgICAgImhlbHAiOiAgICAgIFt3aWNfaGVscF9zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2hlbHBfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9oZWxwXQorfQorCisKK2RlZiBpbml0X3BhcnNlcihwYXJzZXIpOgorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyc2lvbiIsIGFjdGlvbj0idmVyc2lvbiIsCisgICAgICAgIHZlcnNpb249IiUocHJvZylzIHt2ZXJzaW9ufSIuZm9ybWF0KHZlcnNpb249X192ZXJzaW9uX18pKQorICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoZGVzdD0nY29tbWFuZCcsIGhlbHA9aGxwLndpY191c2FnZSkKKyAgICBmb3Igc3ViY21kIGluIHN1YmNvbW1hbmRzOgorICAgICAgICBzdWJwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoc3ViY21kLCBoZWxwPXN1YmNvbW1hbmRzW3N1YmNtZF1bMl0pCisgICAgICAgIHN1YmNvbW1hbmRzW3N1YmNtZF1bM10oc3VicGFyc2VyKQorCisKIGRlZiBtYWluKGFyZ3YpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih2ZXJzaW9uPSJ3aWMgdmVyc2lvbiAlcyIgJSBfX3ZlcnNpb25fXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9aGxwLndpY191c2FnZSkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgZGVzY3JpcHRpb249IndpYyB2ZXJzaW9uICVzIiAlIF9fdmVyc2lvbl9fKQogCi0gICAgcGFyc2VyLmRpc2FibGVfaW50ZXJzcGVyc2VkX2FyZ3MoKQorICAgIGluaXRfcGFyc2VyKHBhcnNlcikKIAotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KVsxXQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgIGlmICJjb21tYW5kIiBpbiB2YXJzKGFyZ3MpOgorICAgICAgICBpZiBhcmdzLmNvbW1hbmQgPT0gImhlbHAiOgorICAgICAgICAgICAgaWYgYXJncy5oZWxwX3RvcGljIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJoZWxwIGNvbW1hbmQgcmVxdWlyZXMgcGFyYW1ldGVyIikKKyAgICAgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAgcHJpbnQoIlBsZWFzZSBzcGVjaWZ5IGEgaGVscCB0b3BpYyIpCisgICAgICAgICAgICBlbGlmIGFyZ3MuaGVscF90b3BpYyBpbiBoZWxwdG9waWNzOgorICAgICAgICAgICAgICAgIGhscHQgPSBoZWxwdG9waWNzW2FyZ3MuaGVscF90b3BpY10KKyAgICAgICAgICAgICAgICBobHB0WzBdKGhscHRbMV0sIGhscHRbMl0pCisgICAgICAgICAgICByZXR1cm4gMAogCiAgICAgcmV0dXJuIGhscC5pbnZva2Vfc3ViY29tbWFuZChhcmdzLCBwYXJzZXIsIGhscC53aWNfaGVscF91c2FnZSwgc3ViY29tbWFuZHMpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWE0ZmQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCkBAIC0wLDAgKzEsMjA4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgWW9jdG8gUHJvamVjdCBsYXllciBjaGVja2luZyB0b29sCisjCisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHNodXRpbAoraW1wb3J0IGNvbGxlY3Rpb25zCisKK3NjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQoraW1wb3J0IHNjcmlwdHV0aWxzCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCisKK2Zyb20gY2hlY2tsYXllciBpbXBvcnQgTGF5ZXJUeXBlLCBkZXRlY3RfbGF5ZXJzLCBhZGRfbGF5ZXIsIGFkZF9sYXllcl9kZXBlbmRlbmNpZXMsIGdldF9zaWduYXR1cmVzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzCisKK1BST0dOQU1FID0gJ3lvY3RvLWNoZWNrLWxheWVyJworQ0FTRVNfUEFUSFMgPSBbb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwKKyAgICAgICAgICAgICAgICAnbGliJywgJ2NoZWNrbGF5ZXInLCAnY2FzZXMnKV0KK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoUFJPR05BTUUsIHN0cmVhbT1zeXMuc3Rkb3V0KQorCitkZWYgdGVzdF9sYXllcih0ZCwgbGF5ZXIsIHRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcyk6CisgICAgZnJvbSBjaGVja2xheWVyLmNvbnRleHQgaW1wb3J0IENoZWNrTGF5ZXJUZXN0Q29udGV4dAorICAgIGxvZ2dlci5pbmZvKCJTdGFydGluZyB0byBhbmFseXplOiAlcyIgJSBsYXllclsnbmFtZSddKQorICAgIGxvZ2dlci5pbmZvKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKworICAgIHRjID0gQ2hlY2tMYXllclRlc3RDb250ZXh0KHRkPXRkLCBsb2dnZXI9bG9nZ2VyLCBsYXllcj1sYXllciwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzPXRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcykKKyAgICB0Yy5sb2FkVGVzdHMoQ0FTRVNfUEFUSFMpCisgICAgcmV0dXJuIHRjLnJ1blRlc3RzKCkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNraW5nIHRvb2wiLAorICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbGF5ZXJzJywgbWV0YXZhcj0nTEFZRVJfRElSJywgbmFyZ3M9JysnLAorICAgICAgICAgICAgaGVscD0nTGF5ZXIgdG8gY2hlY2snKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0cHV0LWxvZycsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIG91dHB1dCBsb2cgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGVwZW5kZW5jeScsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgIGhlbHA9J0xheWVycyB0byBwcm9jZXNzIGZvciBkZXBlbmRlbmNpZXMnLCBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmVzJywgbmFyZ3M9IisiLAorICAgICAgICAgICAgaGVscD0nTGlzdCBvZiBNQUNISU5FcyB0byBiZSB1c2VkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hZGRpdGlvbmFsLWxheWVycycsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgIGhlbHA9J0xpc3Qgb2YgYWRkaXRpb25hbCBsYXllcnMgdG8gYWRkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtc29mdHdhcmUtbGF5ZXItc2lnbmF0dXJlLWNoZWNrJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjaGVjayB0aGF0IHNvZnR3YXJlIGxheWVycyBkbyBub3QgY2hhbmdlIHNpZ25hdHVyZXMgKG9uIGJ5IGRlZmF1bHQpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aG91dC1zb2Z0d2FyZS1sYXllci1zaWduYXR1cmUtY2hlY2snLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBzaWduYXR1cmUgY2hlY2tpbmcgZm9yIHNvZnR3YXJlIGxheWVycycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1uby1hdXRvJywgaGVscD0nRGlzYWJsZSBhdXRvIGxheWVyIGRpc2NvdmVyeScsCisgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBoZWxwPSdFbmFibGUgZGVidWcgb3V0cHV0JywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J1ByaW50IG9ubHkgZXJyb3JzJywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKKyAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3Mub3V0cHV0X2xvZzoKKyAgICAgICAgZmggPSBsb2dnaW5nLkZpbGVIYW5kbGVyKGFyZ3Mub3V0cHV0X2xvZykKKyAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihmaCkKKyAgICBpZiBhcmdzLmRlYnVnOgorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICBlbGlmIGFyZ3MucXVpZXQ6CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQorCisgICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCIkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIpCisgICAgICAgIHJldHVybiAxCisgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCisgICAgYmJsYXllcnNjb25mID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicsICdiYmxheWVycy5jb25mJykKKworICAgIGxheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5sYXllcnMsIGFyZ3Mubm9fYXV0bykKKyAgICBpZiBub3QgbGF5ZXJzOgorICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWwgdG8gZGV0ZWN0IGxheWVycyIpCisgICAgICAgIHJldHVybiAxCisgICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKKyAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKKyAgICBlbHNlOgorICAgICAgICBhZGRpdGlvbmFsX2xheWVycyA9IFtdCisgICAgaWYgYXJncy5kZXBlbmRlbmN5OgorICAgICAgICBkZXBfbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmRlcGVuZGVuY3ksIGFyZ3Mubm9fYXV0bykKKyAgICAgICAgZGVwX2xheWVycyA9IGRlcF9sYXllcnMgKyBsYXllcnMKKyAgICBlbHNlOgorICAgICAgICBkZXBfbGF5ZXJzID0gbGF5ZXJzCisKKyAgICBsb2dnZXIuaW5mbygiRGV0ZWN0ZWQgbGF5ZXJzOiIpCisgICAgZm9yIGxheWVyIGluIGxheWVyczoKKyAgICAgICAgaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTzoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IENhbid0IGJlIERJU1RSTyBhbmQgQlNQIHR5cGUgYXQgdGhlIHNhbWUgdGltZS4iXAorICAgICAgICAgICAgICAgICAgICAgIiBUaGUgY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdhcyBmb3VuZC4iXAorICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKKyAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogRG9uJ3QgaGF2ZSBjb25mL2xheWVyLmNvbmYgZmlsZS4iXAorICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlczogJXMsICVzIiAlIChsYXllclsnbmFtZSddLCBsYXllclsndHlwZSddLAorICAgICAgICAgICAgICAgIGxheWVyWydwYXRoJ10pKQorICAgIGlmIG5vdCBsYXllcnM6CisgICAgICAgIHJldHVybiAxCisKKyAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mLCBiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcpCisgICAgZGVmIGNsZWFudXBfYmJsYXllcnMoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcsIGJibGF5ZXJzY29uZikKKyAgICAgICAgb3MudW5saW5rKGJibGF5ZXJzY29uZiArICcuYmFja3VwJykKKyAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBjbGVhbnVwX2JibGF5ZXJzKQorICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgY2xlYW51cF9iYmxheWVycykKKworICAgIHRkID0ge30KKyAgICByZXN1bHRzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorICAgIHJlc3VsdHNfc3RhdHVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorCisgICAgbGF5ZXJzX3Rlc3RlZCA9IDAKKyAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgorICAgICAgICBpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GIG9yIFwKKyAgICAgICAgICAgICAgICBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgZm9yICVzKCVzKSwgJXMiICUgKGxheWVyWyduYW1lJ10sIGxheWVyWyd0eXBlJ10sCisgICAgICAgICAgICBsYXllclsncGF0aCddKSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mICsgJy5iYWNrdXAnLCBiYmxheWVyc2NvbmYpCisKKyAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpCisgICAgICAgIGlmIG5vdCBtaXNzaW5nX2RlcGVuZGVuY2llczoKKyAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsX2xheWVyIGluIGFkZGl0aW9uYWxfbGF5ZXJzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgYWRkaXRpb25hbF9sYXllciwgZGVwX2xheWVycywgbG9nZ2VyKToKKyAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcikgb3IgXAorICAgICAgICAgICBhbnkobWFwKGxhbWJkYSBhZGRpdGlvbmFsX2xheWVyOiBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGFkZGl0aW9uYWxfbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlciksCisgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMpKToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTa2lwcGluZyAlcyBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMuJyAlIGxheWVyWyduYW1lJ10pCisgICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBkZXBlbmRlbmNpZXMpJworICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIGFueShtYXAobGFtYmRhIGFkZGl0aW9uYWxfbGF5ZXI6IG5vdCBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBhZGRpdGlvbmFsX2xheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpLAorICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGF5ZXJzKSk6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgZHVlIHRvIG1pc3NpbmcgYWRkaXRpb25hbCBsYXllcnMuJyAlIGxheWVyWyduYW1lJ10pCisgICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBhZGRpdGlvbmFsIGxheWVycyknCisgICAgICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbG9nZ2VyLmluZm8oJ0dldHRpbmcgaW5pdGlhbCBiaXRiYWtlIHZhcmlhYmxlcyAuLi4nKQorICAgICAgICB0ZFsnYmJ2YXJzJ10gPSBnZXRfYmJfdmFycygpCisgICAgICAgIGxvZ2dlci5pbmZvKCdHZXR0aW5nIGluaXRpYWwgc2lnbmF0dXJlcyAuLi4nKQorICAgICAgICB0ZFsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCisgICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQorICAgICAgICB0ZFsnbWFjaGluZXMnXSA9IGFyZ3MubWFjaGluZXMKKworICAgICAgICBpZiBub3QgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcik6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgPz8/LicgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1NLSVBQRUQgKFVua25vd24pJworICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJlc3VsdCA9IHRlc3RfbGF5ZXIodGQsIGxheWVyLCBhcmdzLnRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcykKKyAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IHJlc3VsdAorICAgICAgICByZXN1bHRzX3N0YXR1c1tsYXllclsnbmFtZSddXSA9ICdQQVNTJyBpZiByZXN1bHRzW2xheWVyWyduYW1lJ11dLndhc1N1Y2Nlc3NmdWwoKSBlbHNlICdGQUlMJworICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKKworICAgIHJldCA9IDAKKyAgICBpZiBsYXllcnNfdGVzdGVkOgorICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1N1bW1hcnkgb2YgcmVzdWx0czonKQorICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgZm9yIGxheWVyX25hbWUgaW4gcmVzdWx0c19zdGF0dXM6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnJXMgLi4uICVzJyAlIChsYXllcl9uYW1lLCByZXN1bHRzX3N0YXR1c1tsYXllcl9uYW1lXSkpCisgICAgICAgICAgICBpZiBub3QgcmVzdWx0c1tsYXllcl9uYW1lXSBvciBub3QgcmVzdWx0c1tsYXllcl9uYW1lXS53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICAgICAgcmV0ID0gMiAjIHJldCA9IDEgdXNlZCBmb3IgaW5pdGlhbGl6YXRpb24gZXJyb3JzCisKKyAgICBjbGVhbnVwX2JibGF5ZXJzKE5vbmUsIE5vbmUpCisKKyAgICByZXR1cm4gcmV0CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdHJ5OgorICAgICAgICByZXQgPSAgbWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmV0ID0gMQorICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyLXdyYXBwZXIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllci13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiZjZlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllci13cmFwcGVyCkBAIC0wLDAgKzEsNDMgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNrIHRvb2wgd3JhcHBlcgorIworIyBDcmVhdGVzIGEgdGVtcG9yYXJ5IGJ1aWxkIGRpcmVjdG9yeSB0byBydW4gdGhlIHlvY3RvLWNoZWNrLWxheWVyCisjIHNjcmlwdCB0byBhdm9pZCBhIGNvbnRhbWluYXRlZCBlbnZpcm9ubWVudC4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KKwllY2hvICJQbGVhc2Ugc291cmNlIG9lLWluaXQtYnVpbGQtZW52IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIgorCWV4aXQgMgorZmkKKworIyBzaW5jZSB3ZSBhcmUgdXNpbmcgYSB0ZW1wIGRpcmVjdG9yeSwgdXNlIHRoZSByZWFscGF0aCBmb3Igb3V0cHV0CisjIGxvZyBvcHRpb24KK291dHB1dF9sb2c9JycKK3doaWxlIGdldG9wdHMgbzogbmFtZQorZG8KKwljYXNlICRuYW1lIGluCisJbykgb3V0cHV0X2xvZz0kKHJlYWxwYXRoICIkT1BUQVJHIikKKwllc2FjCitkb25lCitzaGlmdCAkKCgkT1BUSU5EIC0gMSkpCisKKyMgZ2VuZXJhdGUgYSB0ZW1wIGRpcmVjdG9yeSB0byBydW4gY2hlY2sgbGF5ZXIgc2NyaXB0CitiYXNlX2Rpcj0kKHJlYWxwYXRoICRCVUlMRERJUi8uLi8pCitjZCAkYmFzZV9kaXIKKworYnVpbGRfZGlyPSQobWt0ZW1wIC1wICRiYXNlX2RpciAtZCAtdCBidWlsZC1YWFhYKQorCitzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYgJGJ1aWxkX2RpcgoraWYgW1sgJG91dHB1dF9sb2cgIT0gJycgXV07IHRoZW4KKwl5b2N0by1jaGVjay1sYXllciAtbyAiJG91dHB1dF9sb2ciICIkKiIKK2Vsc2UKKwl5b2N0by1jaGVjay1sYXllciAiJEAiCitmaQorcmV0Y29kZT0kPworCitybSAtcmYgJGJ1aWxkX2RpcgorCitleGl0ICRyZXRjb2RlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jb21wYXQtbGF5ZXItd3JhcHBlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci13cmFwcGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYjRiNjg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci13cmFwcGVyCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgYmFzaAotCi0jIFlvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sIHdyYXBwZXIKLSMKLSMgQ3JlYXRlcyBhIHRlbXByYXJ5IGJ1aWxkIGRpcmVjdG9yeSB0byBydW4gWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlCi0jIHNjcmlwdCB0byBhdm9pZCBhIGNvbnRhbWluYXRlZCBlbnZpcm9ubWVudC4KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KLQllY2hvICJQbGVhc2Ugc291cmNlIG9lLWluaXQtYnVpbGQtZW52IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIgotCWV4aXQgMgotZmkKLQotYmFzZV9kaXI9JChyZWFscGF0aCAkQlVJTERESVIvLi4vKQotY2QgJGJhc2VfZGlyCi0KLWJ1aWxkX2Rpcj0kKG1rdGVtcCAtcCAkYmFzZV9kaXIgLWQgLXQgYnVpbGQtWFhYWCkKLQotc291cmNlIG9lLWluaXQtYnVpbGQtZW52ICRidWlsZF9kaXIKLXlvY3RvLWNvbXBhdC1sYXllci5weSAiJEAiCi1yZXRjb2RlPSQ/Ci0KLXJtIC1yZiAkYnVpbGRfZGlyCi0KLWV4aXQgJHJldGNvZGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmE2NGI0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jb21wYXQtbGF5ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIFlvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sCi0jCi0jIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdGltZQotaW1wb3J0IHNpZ25hbAotaW1wb3J0IHNodXRpbAotaW1wb3J0IGNvbGxlY3Rpb25zCi0KLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKLWxpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCi1zeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQotaW1wb3J0IHNjcmlwdHV0aWxzCi1pbXBvcnQgc2NyaXB0cGF0aAotc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQotc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCi0KLWZyb20gY29tcGF0bGF5ZXIgaW1wb3J0IExheWVyVHlwZSwgZGV0ZWN0X2xheWVycywgYWRkX2xheWVyLCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzLCBnZXRfc2lnbmF0dXJlcwotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycwotCi1QUk9HTkFNRSA9ICd5b2N0by1jb21wYXQtbGF5ZXInCi1DQVNFU19QQVRIUyA9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLAotICAgICAgICAgICAgICAgICdsaWInLCAnY29tcGF0bGF5ZXInLCAnY2FzZXMnKV0KLWxvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoUFJPR05BTUUsIHN0cmVhbT1zeXMuc3Rkb3V0KQotCi1kZWYgdGVzdF9sYXllcl9jb21wYXRpYmlsaXR5KHRkLCBsYXllciwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKToKLSAgICBmcm9tIGNvbXBhdGxheWVyLmNvbnRleHQgaW1wb3J0IENvbXBhdExheWVyVGVzdENvbnRleHQKLSAgICBsb2dnZXIuaW5mbygiU3RhcnRpbmcgdG8gYW5hbHl6ZTogJXMiICUgbGF5ZXJbJ25hbWUnXSkKLSAgICBsb2dnZXIuaW5mbygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCi0KLSAgICB0YyA9IENvbXBhdExheWVyVGVzdENvbnRleHQodGQ9dGQsIGxvZ2dlcj1sb2dnZXIsIGxheWVyPWxheWVyLCB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXM9dGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKQotICAgIHRjLmxvYWRUZXN0cyhDQVNFU19QQVRIUykKLSAgICByZXR1cm4gdGMucnVuVGVzdHMoKQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAotICAgICAgICAgICAgZGVzY3JpcHRpb249IllvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sIiwKLSAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2xheWVycycsIG1ldGF2YXI9J0xBWUVSX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgIGhlbHA9J0xheWVyIHRvIHRlc3QgY29tcGF0aWJpbGl0eSB3aXRoIFlvY3RvIFByb2plY3QnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0cHV0LWxvZycsCi0gICAgICAgICAgICBoZWxwPSdGaWxlIHRvIG91dHB1dCBsb2cgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGVwZW5kZW5jeScsIG5hcmdzPSIrIiwKLSAgICAgICAgICAgIGhlbHA9J0xheWVycyB0byBwcm9jZXNzIGZvciBkZXBlbmRlbmNpZXMnLCBhY3Rpb249J3N0b3JlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmVzJywgbmFyZ3M9IisiLAotICAgICAgICAgICAgaGVscD0nTGlzdCBvZiBNQUNISU5FcyB0byBiZSB1c2VkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hZGRpdGlvbmFsLWxheWVycycsIG5hcmdzPSIrIiwKLSAgICAgICAgICAgIGhlbHA9J0xpc3Qgb2YgYWRkaXRpb25hbCBsYXllcnMgdG8gYWRkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtc29mdHdhcmUtbGF5ZXItc2lnbmF0dXJlLWNoZWNrJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjaGVjayB0aGF0IHNvZnR3YXJlIGxheWVycyBkbyBub3QgY2hhbmdlIHNpZ25hdHVyZXMgKG9uIGJ5IGRlZmF1bHQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aG91dC1zb2Z0d2FyZS1sYXllci1zaWduYXR1cmUtY2hlY2snLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBzaWduYXR1cmUgY2hlY2tpbmcgZm9yIHNvZnR3YXJlIGxheWVycycpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1uby1hdXRvJywgaGVscD0nRGlzYWJsZSBhdXRvIGxheWVyIGRpc2NvdmVyeScsCi0gICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBoZWxwPSdFbmFibGUgZGVidWcgb3V0cHV0JywKLSAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J1ByaW50IG9ubHkgZXJyb3JzJywKLSAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAotICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKLSAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGlmIGFyZ3Mub3V0cHV0X2xvZzoKLSAgICAgICAgZmggPSBsb2dnaW5nLkZpbGVIYW5kbGVyKGFyZ3Mub3V0cHV0X2xvZykKLSAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihmaCkKLSAgICBpZiBhcmdzLmRlYnVnOgotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLSAgICBlbGlmIGFyZ3MucXVpZXQ6Ci0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQotCi0gICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKLSAgICAgICAgbG9nZ2VyLmVycm9yKCIkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIpCi0gICAgICAgIHJldHVybiAxCi0gICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCi0gICAgYmJsYXllcnNjb25mID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicsICdiYmxheWVycy5jb25mJykKLQotICAgIGxheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5sYXllcnMsIGFyZ3Mubm9fYXV0bykKLSAgICBpZiBub3QgbGF5ZXJzOgotICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWwgdG8gZGV0ZWN0IGxheWVycyIpCi0gICAgICAgIHJldHVybiAxCi0gICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKLSAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKLSAgICBlbHNlOgotICAgICAgICBhZGRpdGlvbmFsX2xheWVycyA9IFtdCi0gICAgaWYgYXJncy5kZXBlbmRlbmN5OgotICAgICAgICBkZXBfbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmRlcGVuZGVuY3ksIGFyZ3Mubm9fYXV0bykKLSAgICAgICAgZGVwX2xheWVycyA9IGRlcF9sYXllcnMgKyBsYXllcnMKLSAgICBlbHNlOgotICAgICAgICBkZXBfbGF5ZXJzID0gbGF5ZXJzCi0KLSAgICBsb2dnZXIuaW5mbygiRGV0ZWN0ZWQgbGF5ZXJzOiIpCi0gICAgZm9yIGxheWVyIGluIGxheWVyczoKLSAgICAgICAgaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTzoKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IENhbid0IGJlIERJU1RSTyBhbmQgQlNQIHR5cGUgYXQgdGhlIHNhbWUgdGltZS4iXAotICAgICAgICAgICAgICAgICAgICAgIiBUaGUgY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdhcyBmb3VuZC4iXAotICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKLSAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogRG9uJ3QgaGF2ZSBjb25mL2xheWVyLmNvbmYgZmlsZS4iXAotICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlczogJXMsICVzIiAlIChsYXllclsnbmFtZSddLCBsYXllclsndHlwZSddLAotICAgICAgICAgICAgICAgIGxheWVyWydwYXRoJ10pKQotICAgIGlmIG5vdCBsYXllcnM6Ci0gICAgICAgIHJldHVybiAxCi0KLSAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mLCBiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcpCi0gICAgZGVmIGNsZWFudXBfYmJsYXllcnMoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcsIGJibGF5ZXJzY29uZikKLSAgICAgICAgb3MudW5saW5rKGJibGF5ZXJzY29uZiArICcuYmFja3VwJykKLSAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBjbGVhbnVwX2JibGF5ZXJzKQotICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgY2xlYW51cF9iYmxheWVycykKLQotICAgIHRkID0ge30KLSAgICByZXN1bHRzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotICAgIHJlc3VsdHNfc3RhdHVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotCi0gICAgbGF5ZXJzX3Rlc3RlZCA9IDAKLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GIG9yIFwKLSAgICAgICAgICAgICAgICBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBsb2dnZXIuaW5mbygnJykKLSAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgZm9yICVzKCVzKSwgJXMiICUgKGxheWVyWyduYW1lJ10sIGxheWVyWyd0eXBlJ10sCi0gICAgICAgICAgICBsYXllclsncGF0aCddKSkKLQotICAgICAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mICsgJy5iYWNrdXAnLCBiYmxheWVyc2NvbmYpCi0KLSAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpCi0gICAgICAgIGlmIG5vdCBtaXNzaW5nX2RlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsX2xheWVyIGluIGFkZGl0aW9uYWxfbGF5ZXJzOgotICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgYWRkaXRpb25hbF9sYXllciwgZGVwX2xheWVycywgbG9nZ2VyKToKLSAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcikgb3IgXAotICAgICAgICAgICBhbnkobWFwKGxhbWJkYSBhZGRpdGlvbmFsX2xheWVyOiBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGFkZGl0aW9uYWxfbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlciksCi0gICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMpKToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTa2lwcGluZyAlcyBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMuJyAlIGxheWVyWyduYW1lJ10pCi0gICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBkZXBlbmRlbmNpZXMpJwotICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGFueShtYXAobGFtYmRhIGFkZGl0aW9uYWxfbGF5ZXI6IG5vdCBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBhZGRpdGlvbmFsX2xheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpLAotICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGF5ZXJzKSk6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgZHVlIHRvIG1pc3NpbmcgYWRkaXRpb25hbCBsYXllcnMuJyAlIGxheWVyWyduYW1lJ10pCi0gICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBhZGRpdGlvbmFsIGxheWVycyknCi0gICAgICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgbG9nZ2VyLmluZm8oJ0dldHRpbmcgaW5pdGlhbCBiaXRiYWtlIHZhcmlhYmxlcyAuLi4nKQotICAgICAgICB0ZFsnYmJ2YXJzJ10gPSBnZXRfYmJfdmFycygpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdHZXR0aW5nIGluaXRpYWwgc2lnbmF0dXJlcyAuLi4nKQotICAgICAgICB0ZFsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCi0gICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQotICAgICAgICB0ZFsnbWFjaGluZXMnXSA9IGFyZ3MubWFjaGluZXMKLQotICAgICAgICBpZiBub3QgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcik6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgPz8/LicgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IE5vbmUKLSAgICAgICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1NLSVBQRUQgKFVua25vd24pJwotICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIHJlc3VsdCA9IHRlc3RfbGF5ZXJfY29tcGF0aWJpbGl0eSh0ZCwgbGF5ZXIsIGFyZ3MudGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKQotICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gcmVzdWx0Ci0gICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1BBU1MnIGlmIHJlc3VsdHNbbGF5ZXJbJ25hbWUnXV0ud2FzU3VjY2Vzc2Z1bCgpIGVsc2UgJ0ZBSUwnCi0gICAgICAgIGxheWVyc190ZXN0ZWQgPSBsYXllcnNfdGVzdGVkICsgMQotCi0gICAgaWYgbGF5ZXJzX3Rlc3RlZDoKLSAgICAgICAgbG9nZ2VyLmluZm8oJycpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdTdW1tYXJ5IG9mIHJlc3VsdHM6JykKLSAgICAgICAgbG9nZ2VyLmluZm8oJycpCi0gICAgICAgIGZvciBsYXllcl9uYW1lIGluIHJlc3VsdHNfc3RhdHVzOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJyVzIC4uLiAlcycgJSAobGF5ZXJfbmFtZSwgcmVzdWx0c19zdGF0dXNbbGF5ZXJfbmFtZV0pKQotCi0gICAgY2xlYW51cF9iYmxheWVycyhOb25lLCBOb25lKQotCi0gICAgcmV0dXJuIDAKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9ICBtYWluKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICByZXQgPSAxCi0gICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgc3lzLmV4aXQocmV0KQo=